<?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>202726</bug_id>
          
          <creation_ts>2019-10-09 01:13:43 -0700</creation_ts>
          <short_desc>Update libwebrtc third-party abseilcpp to M78</short_desc>
          <delta_ts>2019-10-18 01:35:18 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alex</cc>
    
    <cc>annulen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>iamluispureevil</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tsaunier</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1578120</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-09 01:13:43 -0700</bug_when>
    <thetext>Update libwebrtc third-party abseilcpp to M78 branch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578123</commentid>
    <comment_count>1</comment_count>
      <attachid>380510</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-09 01:19:00 -0700</bug_when>
    <thetext>Created attachment 380510
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578148</commentid>
    <comment_count>2</comment_count>
      <attachid>380519</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-09 01:59:05 -0700</bug_when>
    <thetext>Created attachment 380519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578163</commentid>
    <comment_count>3</comment_count>
      <attachid>380523</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-09 02:31:08 -0700</bug_when>
    <thetext>Created attachment 380523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578565</commentid>
    <comment_count>4</comment_count>
      <attachid>380523</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-10 02:19:12 -0700</bug_when>
    <thetext>Comment on attachment 380523
Patch

Clearing flags on attachment: 380523

Committed r250962: &lt;https://trac.webkit.org/changeset/250962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578566</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-10 02:19:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578567</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-10 02:20:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/56147823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581342</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-18 00:25:30 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581343</commentid>
    <comment_count>8</comment_count>
      <attachid>381283</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-18 00:25:33 -0700</bug_when>
    <thetext>Created attachment 381283
Build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581349</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 01:34:25 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 381283:

inspector/console/webcore-logging.html bug 203118 (authors: drousso@apple.com and eric.carlson@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581350</commentid>
    <comment_count>10</comment_count>
      <attachid>381283</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 01:35:16 -0700</bug_when>
    <thetext>Comment on attachment 381283
Build fix

Clearing flags on attachment: 381283

Committed r251277: &lt;https://trac.webkit.org/changeset/251277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581351</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 01:35:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380510</attachid>
            <date>2019-10-09 01:19:00 -0700</date>
            <delta_ts>2019-10-09 01:57:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-abseilcpp.patch</filename>
            <type>text/plain</type>
            <size>3859817</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">RnJvbSA3NWQ5MjBlYjMzZDk5ODc2NTk2ZmQ5ZjhhY2VhMGM0OTFmMWUwODJjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBZb3Vlbm4gRmFibGV0IDx5b3Vlbm5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDcgT2N0IDIwMTkgMTY6MTk6MDMgKzAyMDAKU3ViamVjdDogW1BBVENIXSBhYnNlaWxj
cHAKCi0tLQogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxvZyAgICAgICAgIHwg
ICAxMCArCiAuLi4vYWJzZWlsLWNwcC9DTWFrZS9BYnNlaWxIZWxwZXJzLmNtYWtlICAgICAgfCAg
MzMxICsrLQogLi4uL2Fic2VpbC1jcHAvQ01ha2UvQWJzZWlsSW5zdGFsbERpcnMuY21ha2UgIHwg
ICAyMCArCiAuLi4vQ01ha2UveyA9PiBHb29nbGV0ZXN0fS9DTWFrZUxpc3RzLnR4dC5pbiAgfCAg
ICAwCiAuLi4veyA9PiBHb29nbGV0ZXN0fS9Eb3dubG9hZEdUZXN0LmNtYWtlICAgICAgfCAgICAy
ICstCiAuLi4vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9SRUFETUUubWQgICAgfCAgIDIw
ICstCiAuLi4vYWJzZWlsLWNwcC9DTWFrZS9hYnNsQ29uZmlnLmNtYWtlLmluICAgICAgfCAgICA3
ICsKIC4uLi9DTWFrZS9pbnN0YWxsX3Rlc3RfcHJvamVjdC9DTWFrZUxpc3RzLnR4dCB8ICAgMjcg
KwogLi4uL0NNYWtlL2luc3RhbGxfdGVzdF9wcm9qZWN0L3NpbXBsZS5jYyAgICAgIHwgICAyMyAr
CiAuLi4vQ01ha2UvaW5zdGFsbF90ZXN0X3Byb2plY3QvdGVzdC5zaCAgICAgICAgfCAgMTQ0ICsK
IC4uLi90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlTGlzdHMudHh0ICAgICB8ICAxMTAgKy0K
IC4uLi90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NPTlRSSUJVVElORy5tZCAgICB8ICAgNDcgKwog
Li4uL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0xJQ0VOU0UgICAgIHwgICAgNyArLQog
Li4uL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0xUUy5tZCAgICAgIHwgICAgMSArCiAu
Li4vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9SRUFETUUuY2hyb21pdW0gICAgfCAgIDE0ICstCiAu
Li4vU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvUkVBRE1FLm1kICAgfCAgIDIwICstCiAu
Li4vU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvVVBHUkFERVMubWQgfCAgIDE3ICsKIC4u
Li9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9XT1JLU1BBQ0UgICB8ICAgIDYgKy0KIC4u
Li90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvQlVJTEQuYmF6ZWwgICB8ICAgMTcgKy0KIC4u
Li9hYnNlaWwtY3BwL2Fic2wvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICB8ICAgIDQgKy0KIC4u
Li9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0JVSUxELmJhemVsICAgICB8ICAgMTAgKy0KIC4u
Li9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0JVSUxELmduICAgICAgICB8ICAgIDcgKwogLi4u
L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vQ01ha2VMaXN0cy50eHQgIHwgICA4MCArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vYWxnb3JpdGhtLmggICAgIHwgICAgNCArLQogLi4u
L2Fic2wvYWxnb3JpdGhtL2FsZ29yaXRobV90ZXN0LmNjICAgICAgICAgIHwgICAgMiArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyLmggICAgIHwgICA5MiArLQogLi4u
L2Fic2wvYWxnb3JpdGhtL2NvbnRhaW5lcl90ZXN0LmNjICAgICAgICAgIHwgICAxNSArLQogLi4u
L2Fic2wvYWxnb3JpdGhtL2VxdWFsX2JlbmNobWFyay5jYyAgICAgICAgIHwgICAgMiArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmJhemVsICAgICAgICAgIHwgIDE4MSArLQogLi4u
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmduIHwgICA4MiArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0NNYWtlTGlzdHMudHh0ICAgICAgIHwgIDc1NyArKystLQog
Li4uL2Fic2VpbC1jcHAvYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCAgICAgICAgIHwgICA2MSArLQog
Li4uL2Fic2VpbC1jcHAvYWJzbC9iYXNlL2JpdF9jYXN0X3Rlc3QuY2MgICAgIHwgICAgMiArLQog
Li4uL2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NhbGxfb25jZS5oICAgICAgICAgIHwgICAxMiArLQog
Li4uL2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NhbGxfb25jZV90ZXN0LmNjICAgIHwgICAxOSArLQog
Li4uL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2Nhc3RzLmggIHwgICAyNyArLQog
Li4uL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbmZpZy5oIHwgICA3OCArLQog
Li4uL2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbmZpZ190ZXN0LmNjICAgICAgIHwgICAgMiArLQog
Li4uL2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbnN0X2luaXQuaCAgICAgICAgIHwgICA3MiArCiAu
Li4vYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3RhdGlvbnMuY2MgICAgICAgICAgfCAgICAyICstCiAu
Li4vYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3RhdGlvbnMuaCAgICAgICAgICAgfCAgICA1ICstCiAu
Li4vYmFzZS9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdC5jYyAgICAgfCAgIDE0ICstCiAu
Li4vYWJzbC9iYXNlL2lubGluZV92YXJpYWJsZV90ZXN0LmNjICAgICAgICAgfCAgICAyICstCiAu
Li4vYWJzbC9iYXNlL2lubGluZV92YXJpYWJsZV90ZXN0X2EuY2MgICAgICAgfCAgICAyICstCiAu
Li4vYWJzbC9iYXNlL2lubGluZV92YXJpYWJsZV90ZXN0X2IuY2MgICAgICAgfCAgICAyICstCiAu
Li4vYWJzbC9iYXNlL2ludGVybmFsL2F0b21pY19ob29rLmggICAgICAgICAgfCAgICAyICstCiAu
Li4vYWJzbC9iYXNlL2ludGVybmFsL2F0b21pY19ob29rX3Rlc3QuY2MgICAgfCAgICAyICstCiAu
Li4vYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvYml0cy5oICAgICAgfCAgICAyICstCiAu
Li4vYWJzbC9iYXNlL2ludGVybmFsL2JpdHNfdGVzdC5jYyAgICAgICAgICAgfCAgICAyICstCiAu
Li4vYWJzbC9iYXNlL2ludGVybmFsL2NtYWtlX3RocmVhZF90ZXN0LmNjICAgfCAgIDIyICsKIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvY3ljbGVjbG9jay5jYyAgICAgICAgICB8ICAgMjggKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvY3ljbGVjbG9jay5oICAgICAgICAgICB8ICAgMTcgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvZGlyZWN0X21tYXAuaCAgICAgICAgICB8ICAgIDYgKy0KIC4u
Li9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9lbmRpYW4uaCAgICB8ICAgMzEgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuX3Rlc3QuY2MgICAgICAgICB8ICAgIDIgKy0KIC4u
Li9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5jYyB8ICAgIDYgKy0KIC4u
Li9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oICB8ICAyODcgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3Rlc3RpbmcuaCAgICB8ICAgIDIgKy0KIC4u
Li9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9oaWRlX3B0ci5oICB8ICAgIDIgKy0KIC4u
Li9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9pZGVudGl0eS5oICB8ICAgIDIgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxlLmggICAgICB8ICAgIDIgKy0KIC4u
Li9iYXNlL2ludGVybmFsL2lubGluZV92YXJpYWJsZV90ZXN0aW5nLmggICB8ICAgIDIgKy0KIC4u
Li9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9pbnZva2UuaCAgICB8ICAgMzkgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmNjICAgICB8ICAgMjUgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmggICAgICB8ICAgIDQgKy0KIC4u
Li9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvY190ZXN0LmNjICAgICB8ICAgIDMgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX3NjaGVkdWxpbmcuaCB8ICAgIDUgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvcGVyX3RocmVhZF90bHMuaCAgICAgICB8ICAgMTQgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvcHJldHR5X2Z1bmN0aW9uLmggICAgICB8ICAgIDIgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuY2MgICAgICAgICB8ICAgIDUgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCAgICAgICAgICB8ICAgMTMgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NoZWR1bGluZ19tb2RlLmggICAgICB8ICAgIDIgKy0KIC4u
Li9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVkX3NldF9lbnYuY2MgICAgICB8ICAgNzkgKwogLi4u
L2Fic2wvYmFzZS9pbnRlcm5hbC9zY29wZWRfc2V0X2Vudi5oICAgICAgIHwgICA0MSArCiAuLi4v
YWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9zZXRfZW52X3Rlc3QuY2MgfCAgIDk5ICsKIC4uLi9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9jay5jYyB8ICAgNTEgKy0KIC4uLi9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9jay5oICB8ICAgMjkgKy0KIC4uLi9h
YnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfYWthcm9zLmluYyAgICB8ICAgIDIgKy0KIC4uLi9h
YnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfYmVuY2htYXJrLmNjICB8ICAgNTIgKwogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19saW51eC5pbmMgICAgIHwgICAxOSArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19wb3NpeC5pbmMgICAgIHwgICAgMiArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193YWl0LmNjICAgICAgIHwgICAyMiArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193YWl0LmggICAgICAgIHwgICAgMiArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193aW4zMi5pbmMgICAgIHwgICAgMiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3N5c2luZm8uY2MgIHwgICAgNCArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3N5c2luZm8uaCAgIHwgICAgMiArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvX3Rlc3QuY2MgICAgICAgIHwgICAgOCArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuY2MgICAgIHwgICAgMiArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuaCAgICAgIHwgICAgNyArLQogLi4uL2lu
dGVybmFsL3RocmVhZF9pZGVudGl0eV9iZW5jaG1hcmsuY2MgICAgIHwgICAgMiArLQogLi4uL2Jh
c2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5X3Rlc3QuY2MgICAgIHwgICAgMiArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5jYyAgICAgIHwgICAgNiArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5oICAgICAgIHwgICAgMiArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC90c2FuX211dGV4X2ludGVyZmFjZS5oIHwgICAgMiArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC91bmFsaWduZWRfYWNjZXNzLmggICAgIHwgIDE2NyArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suY2MgIHwgICAgMiArLQogLi4uL2Fi
c2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaCAgIHwgICAgNyArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludm9rZV90ZXN0LmNjICAgICAgIHwgICAyMyArLQogLi4uL29w
dGlvbmFsLmNjID0+IGJhc2UvbG9nX3NldmVyaXR5LmNjfSAgICAgIHwgICAxNSArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oICAgICAgIHwgICAgOCArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eV90ZXN0LmNjIHwgICA0MyArCiAuLi4vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbWFjcm9zLmggfCAgIDIxICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmggICAgICAgfCAgIDI4ICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvcG9saWN5X2NoZWNrcy5oICAgICAgfCAgICAyICstCiAuLi4vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvcG9ydC5oICAgfCAgICAyICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvcmF3X2xvZ2dpbmdfdGVzdC5jYyAgfCAgICAyICstCiAuLi4vYWJz
bC9iYXNlL3NwaW5sb2NrX3Rlc3RfY29tbW9uLmNjICAgICAgICAgfCAgICA5ICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmggfCAgMTg3ICstCiAuLi4vYWJz
bC9iYXNlL3Rocm93X2RlbGVnYXRlX3Rlc3QuY2MgICAgICAgICAgfCAgICAyICstCiAuLi4vYWJz
bC9jb21waWxlcl9jb25maWdfc2V0dGluZy5iemwgICAgICAgICAgfCAgIDQzICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5iYXplbCAgICAgfCAgMjcxICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5nbiAgICAgICAgfCAgMTY4ICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9DTWFrZUxpc3RzLnR4dCAgfCAgOTc5ICsrKysrKy0KIC4u
Li9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX21hcC5oICAgICB8ICA3MDUgKysrKysK
IC4uLi9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3NldC5oICAgICB8ICA2NTMgKysr
KysKIC4uLi9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3Rlc3QuY2MgICB8IDIyNDMg
KysrKysrKysrKysrKysKIC4uLi9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3Rlc3Qu
aCAgICB8ICAxNTMgKwogLi4uL2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXku
aCAgIHwgICAgNSArLQogLi4uL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X2JlbmNobWFyay5j
YyAgIHwgICAxMSArLQogLi4uL2ZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyAg
ICAgIHwgICAgNyArLQogLi4uL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X3Rlc3QuY2MgICAg
ICAgIHwgICA3NyArLQogLi4uL2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21h
cC5oIHwgICA3NSArLQogLi4uL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXBfdGVzdC5jYyAg
ICAgIHwgICAzMCArLQogLi4uL2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3Nl
dC5oIHwgICA3OCArLQogLi4uL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXRfdGVzdC5jYyAg
ICAgIHwgICAxMCArLQogLi4uL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yLmggICAgICAg
ICAgIHwgMTY4MiArKysrLS0tLS0tLQogLi4uL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl9iZW5j
aG1hcmsuY2MgICAgIHwgIDU2MSArKystCiAuLi4vaW5saW5lZF92ZWN0b3JfZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0LmNjICAgfCAgNDg5ICsrKwogLi4uL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVj
dG9yX3Rlc3QuY2MgICAgIHwgIDIxMSArLQogLi4uL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2J0
cmVlLmggICAgICAgICAgIHwgMjYxMCArKysrKysrKysrKysrKysrKwogLi4uL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL2J0cmVlX2NvbnRhaW5lci5oIHwgIDYwOSArKysrCiAuLi4vYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvY29tbW9uLmggICAgICAgICAgfCAgMTk2ICsrCiAuLi4vY29udGFpbmVy
L2ludGVybmFsL2NvbXByZXNzZWRfdHVwbGUuaCAgICAgfCAgMTU4ICstCiAuLi4vaW50ZXJuYWwv
Y29tcHJlc3NlZF90dXBsZV90ZXN0LmNjICAgICAgICAgfCAgMjY1ICstCiAuLi4vY29udGFpbmVy
L2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCAgICAgfCAgIDY1ICstCiAuLi4vaW50ZXJuYWwv
Y29udGFpbmVyX21lbW9yeV90ZXN0LmNjICAgICAgICAgfCAgICAyICstCiAuLi4vY29udGFpbmVy
L2ludGVybmFsL2NvdW50aW5nX2FsbG9jYXRvci5oICAgfCAgIDc5ICsKIC4uLi9pbnRlcm5hbC9o
YXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmggICAgICAgICB8ICAgIDcgKy0KIC4uLi9pbnRlcm5hbC9o
YXNoX2Z1bmN0aW9uX2RlZmF1bHRzX3Rlc3QuY2MgICB8ICAgMjAgKy0KIC4uLi9pbnRlcm5hbC9o
YXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjICAgICAgICB8ICAgMTAgKy0KIC4uLi9pbnRlcm5hbC9o
YXNoX2dlbmVyYXRvcl90ZXN0aW5nLmggICAgICAgICB8ICAgMTAgKy0KIC4uLi9jb250YWluZXIv
aW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oICB8ICAgMTAgKy0KIC4uLi9pbnRlcm5hbC9o
YXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MgICAgICB8ICAgIDIgKy0KIC4uLi9jb250YWluZXIv
aW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzLmggICB8ICAgIDQgKy0KIC4uLi9pbnRlcm5hbC9o
YXNoX3BvbGljeV90cmFpdHNfdGVzdC5jYyAgICAgICB8ICAgIDIgKy0KIC4uLi9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWcuaCB8ICAgIDQgKy0KIC4uLi9pbnRlcm5hbC9o
YXNodGFibGVfZGVidWdfaG9va3MuaCAgICAgICAgICB8ICAgIDIgKy0KIC4uLi9jb250YWluZXIv
aW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyLmNjICB8ICAzMDggKysKIC4uLi9jb250YWluZXIv
aW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyLmggICB8ICAyODggKysKIC4uLmFzaHRhYmxlel9z
YW1wbGVyX2ZvcmNlX3dlYWtfZGVmaW5pdGlvbi5jYyB8ICAgMjcgKwogLi4uL2ludGVybmFsL2hh
c2h0YWJsZXpfc2FtcGxlcl90ZXN0LmNjICAgICAgIHwgIDM1NSArKysKIC4uLi9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9oYXZlX3NzZS5oICAgICAgICB8ICAgNDkgKwogLi4uL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL2lubGluZWRfdmVjdG9yLmggIHwgIDg5MyArKysrKysKIC4uLi9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9sYXlvdXQuaCAgICAgICAgICB8ICAgMjcgKy0KIC4uLi9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9sYXlvdXRfdGVzdC5jYyAgICB8ICAgNjEgKy0KIC4uLi9jb250YWlu
ZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oICAgICB8ICAgIDIgKy0KIC4uLi9pbnRlcm5h
bC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2MgICAgICAgICB8ICAgIDIgKy0KIC4uLi9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9tYXAuaCAgICB8ICAgMjAgKy0KIC4uLi9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MgICB8ICAgIDUgKy0KIC4uLi9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCAgICB8ICA0NDMgKystCiAuLi4vaW50ZXJu
YWwvcmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0LmNjICAgfCAgICAyICstCiAuLi4vY29udGFp
bmVyL2ludGVybmFsL3Jhd19oYXNoX3NldF90ZXN0LmNjICAgfCAgNTA1ICsrLS0KIC4uLi9pbnRl
cm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuY2MgICAgICAgICB8ICAgIDIgKy0KIC4uLi9pbnRl
cm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuaCAgICAgICAgICB8ICAgMTQgKy0KIC4uLi9pbnRl
cm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXJfdGVzdC5jYyAgICB8ICAgIDQgKy0KIC4uLi9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC90cmFja2VkLmggICAgICAgICB8ICAgIDIgKy0KIC4uLi9pbnRl
cm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QuaCB8ICAxNDUgKy0KIC4uLi9pbnRl
cm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmggICAgICB8ICAgIDUgKy0KIC4uLi9pbnRl
cm5hbC91bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdC5oICAgICB8ICAgODUgKwogLi4uL2ludGVy
bmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCAgIHwgICAgNSArLQogLi4uL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX3Rlc3QuY2MgIHwgICAxMCArLQogLi4uL2ludGVy
bmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIHwgIDE1MiArLQogLi4uL2ludGVy
bmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCAgICAgIHwgICAgNSArLQogLi4uL2ludGVy
bmFsL3Vub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0LmggICAgIHwgICA4NCArCiAuLi4vaW50ZXJu
YWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oICAgfCAgICA1ICstCiAuLi4vY29udGFp
bmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVzdC5jYyAgfCAgIDIwICstCiAuLi4vYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFwLmggfCAgIDU4ICstCiAuLi4vYWJzbC9j
b250YWluZXIvbm9kZV9oYXNoX21hcF90ZXN0LmNjICAgICAgfCAgIDEwICstCiAuLi4vYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0LmggfCAgIDYxICstCiAuLi4vYWJzbC9j
b250YWluZXIvbm9kZV9oYXNoX3NldF90ZXN0LmNjICAgICAgfCAgIDEyICstCiAuLi4vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzLmJ6bCAgICAgfCAgMTY0IC0tCiAuLi4vYWJzbC9j
b3B0cy9BYnNlaWxDb25maWd1cmVDb3B0cy5jbWFrZSAgICAgfCAgIDYwICsKIC4uLi9hYnNsL2Nv
cHRzL0dFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFrZSAgICB8ICAyMzYgKysKIC4uLi9hYnNlaWwt
Y3BwL2Fic2wvY29wdHMvR0VORVJBVEVEX2NvcHRzLmJ6bCB8ICAyMzcgKysKIC4uLi9hYnNlaWwt
Y3BwL2Fic2wvY29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bCB8ICAgODkgKwogLi4uL2Fic2VpbC1j
cHAvYWJzbC9jb3B0cy9jb3B0cy5weSAgICAgICAgICAgIHwgIDIxNCArKwogLi4uL2Fic2VpbC1j
cHAvYWJzbC9jb3B0cy9nZW5lcmF0ZV9jb3B0cy5weSAgIHwgIDEwOSArCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9CVUlMRC5iYXplbCAgICAgfCAgIDQ4ICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9CVUlMRC5nbiAgICAgICAgfCAgIDEwICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9DTWFrZUxpc3RzLnR4dCAgfCAgNDI1ICsrLQogLi4uL2Fic2wvZGVi
dWdnaW5nL2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuY2MgIHwgICAgNiArLQogLi4uL2Fic2wvZGVi
dWdnaW5nL2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuaCAgIHwgICAgMiArLQogLi4uL2RlYnVnZ2lu
Zy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyX3Rlc3QuY2MgIHwgICAxMSArLQogLi4uL2RlYnVnZ2lu
Zy9pbnRlcm5hbC9hZGRyZXNzX2lzX3JlYWRhYmxlLmNjIHwgICAgMiArLQogLi4uL2RlYnVnZ2lu
Zy9pbnRlcm5hbC9hZGRyZXNzX2lzX3JlYWRhYmxlLmggIHwgICAgMyArLQogLi4uL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmNjICAgICAgIHwgICAyMSArLQogLi4uL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmggICAgICAgIHwgICAgMiArLQogLi4uL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlX3Rlc3QuY2MgIHwgICAgOCArLQogLi4uL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL2VsZl9tZW1faW1hZ2UuY2MgIHwgICAgMiArLQogLi4uL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL2VsZl9tZW1faW1hZ2UuaCAgIHwgICAgNCArLQogLi4uL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL2V4YW1pbmVfc3RhY2suY2MgIHwgICAgMiArLQogLi4uL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL2V4YW1pbmVfc3RhY2suaCAgIHwgICAgMiArLQogLi4uL2RlYnVnZ2lu
Zy9pbnRlcm5hbC9zdGFja19jb25zdW1wdGlvbi5jYyAgIHwgICAgMiArLQogLi4uL2RlYnVnZ2lu
Zy9pbnRlcm5hbC9zdGFja19jb25zdW1wdGlvbi5oICAgIHwgICAgMiArLQogLi4uL2ludGVybmFs
L3N0YWNrX2NvbnN1bXB0aW9uX3Rlc3QuY2MgICAgICAgIHwgICAgMiArLQogLi4uL2RlYnVnZ2lu
Zy9pbnRlcm5hbC9zdGFja3RyYWNlX2NvbmZpZy5oICAgIHwgICAgNSArLQogLi4uL2ludGVybmFs
L3N0YWNrdHJhY2VfZ2VuZXJpYy1pbmwuaW5jICAgICAgIHwgICAzNyArCiAuLi4vaW50ZXJuYWwv
c3RhY2t0cmFjZV9wb3dlcnBjLWlubC5pbmMgICAgICAgfCAgICA4ICstCiAuLi4vaW50ZXJuYWwv
c3RhY2t0cmFjZV93aW4zMi1pbmwuaW5jICAgICAgICAgfCAgICA0ICstCiAuLi4vZGVidWdnaW5n
L2ludGVybmFsL3N0YWNrdHJhY2VfeDg2LWlubC5pbmMgfCAgICAzICstCiAuLi4vYWJzbC9kZWJ1
Z2dpbmcvaW50ZXJuYWwvc3ltYm9saXplLmggICAgICAgfCAgICA5ICstCiAuLi4vYWJzbC9kZWJ1
Z2dpbmcvaW50ZXJuYWwvdmRzb19zdXBwb3J0LmNjICAgfCAgICAyICstCiAuLi4vYWJzbC9kZWJ1
Z2dpbmcvaW50ZXJuYWwvdmRzb19zdXBwb3J0LmggICAgfCAgICAyICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrLmNjICAgfCAgICAzICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrLmggICAgfCAgICAyICstCiAuLi4vYWJzbC9kZWJ1
Z2dpbmcvbGVha19jaGVja19kaXNhYmxlLmNjICAgICAgfCAgICAyICstCiAuLi4vYWJzbC9kZWJ1
Z2dpbmcvbGVha19jaGVja19mYWlsX3Rlc3QuY2MgICAgfCAgICAyICstCiAuLi4vYWJzbC9kZWJ1
Z2dpbmcvbGVha19jaGVja190ZXN0LmNjICAgICAgICAgfCAgICAyICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNlLmNjICAgfCAgIDI1ICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNlLmggICAgfCAgICAyICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemUuY2MgICAgfCAgICAyICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemUuaCAgICAgfCAgICAyICstCiAuLi4vYWJzbC9kZWJ1
Z2dpbmcvc3ltYm9saXplX2VsZi5pbmMgICAgICAgICAgfCAgIDcyICstCiAuLi4vYWJzbC9kZWJ1
Z2dpbmcvc3ltYm9saXplX3Rlc3QuY2MgICAgICAgICAgfCAgIDE3ICstCiAuLi4vZGVidWdnaW5n
L3N5bWJvbGl6ZV91bmltcGxlbWVudGVkLmluYyAgICAgfCAgICA1ICstCiAuLi4vYWJzbC9kZWJ1
Z2dpbmcvc3ltYm9saXplX3dpbjMyLmluYyAgICAgICAgfCAgIDEwICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2ZsYWdzL0JVSUxELmJhemVsICAgICAgICAgfCAgMzg0ICsrKwogLi4uL2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9CVUlMRC5nbiAgICAgICAgICAgIHwgIDI1MiArKwogLi4uL2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9DTWFrZUxpc3RzLnR4dCAgICAgIHwgIDM0NiArKysKIC4uLi9hYnNlaWwt
Y3BwL2Fic2wvZmxhZ3MvY29uZmlnLmggICAgICAgICAgICB8ICAgNDggKwogLi4uL2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9jb25maWdfdGVzdC5jYyAgICAgIHwgICA2MSArCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2ZsYWdzL2RlY2xhcmUuaCAgICAgICAgICAgfCAgIDU4ICsKIC4uLi90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvZmxhZy5jYyB8ICAgNDQgKwogLi4uL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9mbGFnLmggIHwgIDI1NyArKwogLi4uL2Fic2VpbC1jcHAv
YWJzbC9mbGFncy9mbGFnX3Rlc3QuY2MgICAgICAgIHwgIDQ4MiArKysKIC4uLi9hYnNlaWwtY3Bw
L2Fic2wvZmxhZ3MvZmxhZ190ZXN0X2RlZnMuY2MgICB8ICAgMjIgKwogLi4uL2Fic2wvZmxhZ3Mv
aW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmNjICAgIHwgIDQ5NCArKysrCiAuLi4vYWJzbC9mbGFn
cy9pbnRlcm5hbC9jb21tYW5kbGluZWZsYWcuaCAgICAgfCAgMzgzICsrKwogLi4uL2ZsYWdzL2lu
dGVybmFsL2NvbW1hbmRsaW5lZmxhZ190ZXN0LmNjICAgIHwgIDE5NiArKwogLi4uL2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9pbnRlcm5hbC9mbGFnLmggICAgIHwgIDEyMSArCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2ZsYWdzL2ludGVybmFsL3BhcnNlLmggICAgfCAgIDQ4ICsKIC4uLi9hYnNsL2ZsYWdz
L2ludGVybmFsL3BhdGhfdXRpbC5oICAgICAgICAgICB8ICAgNjAgKwogLi4uL2Fic2wvZmxhZ3Mv
aW50ZXJuYWwvcGF0aF91dGlsX3Rlc3QuY2MgICAgIHwgICA0NiArCiAuLi4vYWJzbC9mbGFncy9p
bnRlcm5hbC9wcm9ncmFtX25hbWUuY2MgICAgICAgfCAgIDUzICsKIC4uLi9hYnNsL2ZsYWdzL2lu
dGVybmFsL3Byb2dyYW1fbmFtZS5oICAgICAgICB8ICAgNDcgKwogLi4uL2Fic2wvZmxhZ3MvaW50
ZXJuYWwvcHJvZ3JhbV9uYW1lX3Rlc3QuY2MgIHwgICA2MCArCiAuLi4vYWJzbC9mbGFncy9pbnRl
cm5hbC9yZWdpc3RyeS5jYyAgICAgICAgICAgfCAgNDQzICsrKwogLi4uL2Fic2VpbC1jcHAvYWJz
bC9mbGFncy9pbnRlcm5hbC9yZWdpc3RyeS5oIHwgIDE2NyArKwogLi4uL2Fic2wvZmxhZ3MvaW50
ZXJuYWwvdHlwZV9lcmFzZWQuY2MgICAgICAgIHwgIDEwNiArCiAuLi4vYWJzbC9mbGFncy9pbnRl
cm5hbC90eXBlX2VyYXNlZC5oICAgICAgICAgfCAgIDk3ICsKIC4uLi9hYnNsL2ZsYWdzL2ludGVy
bmFsL3R5cGVfZXJhc2VkX3Rlc3QuY2MgICB8ICAxNDcgKwogLi4uL2Fic2VpbC1jcHAvYWJzbC9m
bGFncy9pbnRlcm5hbC91c2FnZS5jYyAgIHwgIDM4MyArKysKIC4uLi9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuaCAgICB8ICAgNzggKwogLi4uL2Fic2wvZmxhZ3MvaW50ZXJu
YWwvdXNhZ2VfdGVzdC5jYyAgICAgICAgIHwgIDQwNCArKysKIC4uLi9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvbWFyc2hhbGxpbmcuY2MgICAgICB8ICAxODkgKysKIC4uLi9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvbWFyc2hhbGxpbmcuaCAgICAgICB8ICAyNTMgKysKIC4uLi9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvbWFyc2hhbGxpbmdfdGVzdC5jYyB8ICA4OTkgKysrKysrCiAuLi4vYWJzZWlsLWNwcC9h
YnNsL2ZsYWdzL3BhcnNlLmNjICAgICAgICAgICAgfCAgNzUxICsrKysrCiAuLi4vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3BhcnNlLmggfCAgIDU4ICsKIC4uLi9hYnNlaWwtY3Bw
L2Fic2wvZmxhZ3MvcGFyc2VfdGVzdC5jYyAgICAgICB8ICA4NTggKysrKysrCiAuLi4vYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL3VzYWdlLmNjICAgICAgICAgICAgfCAgIDU2ICsKIC4uLi90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2UuaCB8ICAgNDAgKwogLi4uL2Fic2VpbC1j
cHAvYWJzbC9mbGFncy91c2FnZV9jb25maWcuY2MgICAgIHwgIDE1MiArCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2ZsYWdzL3VzYWdlX2NvbmZpZy5oICAgICAgfCAgMTMxICsKIC4uLi9hYnNsL2ZsYWdz
L3VzYWdlX2NvbmZpZ190ZXN0LmNjICAgICAgICAgICB8ICAxOTggKysKIC4uLi9hYnNlaWwtY3Bw
L2Fic2wvaGFzaC9CVUlMRC5iYXplbCAgICAgICAgICB8ICAgMTIgKy0KIC4uLi90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5nbiB8ICAgIDggKy0KIC4uLi9hYnNlaWwtY3Bw
L2Fic2wvaGFzaC9DTWFrZUxpc3RzLnR4dCAgICAgICB8ICAxMzkgKy0KIC4uLi90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoLmggICB8ICAgNTAgKy0KIC4uLi9hYnNlaWwtY3Bw
L2Fic2wvaGFzaC9oYXNoX3Rlc3QuY2MgICAgICAgICB8ICA0MDAgKystCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmggICAgICAgfCAgIDMyICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5jYyAgICAgfCAgMjQ4ICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oICAgICAgfCAgIDIxICstCiAuLi4vYWJzZWlsLWNw
cC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV9jcmMuaCAgfCAgIDQxIC0KIC4uLi9hYnNsL2hhc2gv
aW50ZXJuYWwvY2l0eV90ZXN0LmNjICAgICAgICAgICB8IDE0NjMgKy0tLS0tLS0tCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5jYyAgICAgfCAgICAyICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5oICAgICAgfCAgMjEwICstCiAuLi4vYWJz
bC9oYXNoL2ludGVybmFsL3ByaW50X2hhc2hfb2YuY2MgICAgICAgfCAgICAyICstCiAuLi4vYWJz
bC9oYXNoL2ludGVybmFsL3NweV9oYXNoX3N0YXRlLmggICAgICAgfCAgICA4ICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeS9CVUlMRC5iYXplbCAgICAgICAgfCAgICA5ICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeS9CVUlMRC5nbiAgICAgICAgICAgfCAgICA3ICsKIC4uLi9hYnNl
aWwtY3BwL2Fic2wvbWVtb3J5L0NNYWtlTGlzdHMudHh0ICAgICB8ICAgODEgKy0KIC4uLi9hYnNl
aWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeS5oICAgICAgICAgICB8ICAgNjggKy0KIC4uLi9tZW1v
cnkvbWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyAgICB8ICAgIDIgKy0KIC4uLi9hYnNl
aWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV90ZXN0LmNjICAgICB8ICAgNDcgKy0KIC4uLi9hYnNl
aWwtY3BwL2Fic2wvbWV0YS9CVUlMRC5iYXplbCAgICAgICAgICB8ICAgIDYgKy0KIC4uLi90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS9CVUlMRC5nbiB8ICAgIDcgKwogLi4uL2Fic2Vp
bC1jcHAvYWJzbC9tZXRhL0NNYWtlTGlzdHMudHh0ICAgICAgIHwgICA2MCArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmggICAgICAgIHwgIDMxMCArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzX3Rlc3QuY2MgIHwgIDQyNSArKy0KIC4uLi9hYnNl
aWwtY3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5iYXplbCAgICAgICB8ICAgIDggKy0KIC4uLi9hYnNl
aWwtY3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5nbiAgICAgICAgICB8ICAgIDEgKwogLi4uL2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL0NNYWtlTGlzdHMudHh0ICAgIHwgICA3OCArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL2ludDEyOC5jYyAgICAgICAgIHwgICAyOCArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL2ludDEyOC5oICAgICAgICAgIHwgICA1NSArLQogLi4uL2Fic2wv
bnVtZXJpYy9pbnQxMjhfYmVuY2htYXJrLmNjICAgICAgICAgIHwgICAgMiArLQogLi4uL2Fic2wv
bnVtZXJpYy9pbnQxMjhfaGF2ZV9pbnRyaW5zaWMuaW5jICAgIHwgICAgNCArLQogLi4uL2Fic2wv
bnVtZXJpYy9pbnQxMjhfbm9faW50cmluc2ljLmluYyAgICAgIHwgICAgNCArLQogLi4uL2Fic2wv
bnVtZXJpYy9pbnQxMjhfc3RyZWFtX3Rlc3QuY2MgICAgICAgIHwgICAgMiArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF90ZXN0LmNjICAgIHwgICA0NSArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vQlVJTEQuYmF6ZWwgICAgICAgIHwgIDM5MCArKysKIC4uLi9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL0JVSUxELmduICAgICAgICAgICB8ICAxMjYgKwogLi4uL2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vQ01ha2VMaXN0cy50eHQgICAgIHwgMTAzNCArKysrKysrCiAuLi4v
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9iZW5jaG1hcmtzLmNjICAgICAgfCAgMzgzICsrKwogLi4u
L2Fic2wvcmFuZG9tL2Jlcm5vdWxsaV9kaXN0cmlidXRpb24uaCAgICAgIHwgIDE5OCArKwogLi4u
L3JhbmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uX3Rlc3QuY2MgICAgIHwgIDIxMyArKwogLi4u
L2Fic2wvcmFuZG9tL2JldGFfZGlzdHJpYnV0aW9uLmggICAgICAgICAgIHwgIDQxNCArKysKIC4u
Li9hYnNsL3JhbmRvbS9iZXRhX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjICAgICB8ICA2MTQgKysrKwog
Li4uL2Fic2wvcmFuZG9tL2Rpc2NyZXRlX2Rpc3RyaWJ1dGlvbi5jYyAgICAgIHwgICA5NiArCiAu
Li4vYWJzbC9yYW5kb20vZGlzY3JldGVfZGlzdHJpYnV0aW9uLmggICAgICAgfCAgMjQ1ICsrCiAu
Li4vYWJzbC9yYW5kb20vZGlzY3JldGVfZGlzdHJpYnV0aW9uX3Rlc3QuY2MgfCAgMjQ2ICsrCiAu
Li4vYWJzbC9yYW5kb20vZGlzdHJpYnV0aW9uX2Zvcm1hdF90cmFpdHMuaCAgfCAgMjQ5ICsrCiAu
Li4vYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXN0cmlidXRpb25zLmggICAgfCAgNDQyICsrKwog
Li4uL2Fic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbnNfdGVzdC5jYyAgICAgICAgIHwgIDQ5NCArKysr
CiAuLi4vYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9leGFtcGxlc190ZXN0LmNjICAgfCAgIDk5ICsK
IC4uLi9hYnNsL3JhbmRvbS9leHBvbmVudGlhbF9kaXN0cmlidXRpb24uaCAgICB8ICAxNTcgKwog
Li4uL3JhbmRvbS9leHBvbmVudGlhbF9kaXN0cmlidXRpb25fdGVzdC5jYyAgIHwgIDQyMiArKysK
IC4uLi9hYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb24uY2MgICAgICB8ICAxMDIgKwog
Li4uL2Fic2wvcmFuZG9tL2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5oICAgICAgIHwgIDI2MCArKwog
Li4uL2Fic2wvcmFuZG9tL2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIHwgIDU3MyArKysr
CiAuLi4vYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nZW5lcmF0b3JzX3Rlc3QuY2MgfCAgMTc5ICsr
CiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvQlVJTEQuYmF6ZWwgICAgICAgICAgfCAgNjU4ICsr
KysrCiAuLi4vYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9CVUlMRC5nbiAgfCAgNDU5
ICsrKwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuY2MgICAgICAgIHwgIDIz
MCArKwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuaCAgICAgICAgIHwgICA4
NSArCiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZV90ZXN0LmNjICAgfCAgMzY1
ICsrKwogLi4uL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fY2FsbGVyLmggICAgIHwgICA1
NiArCiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGwuaCAgfCAgMjYw
ICsrCiAuLi4vcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsX3Rlc3QuY2MgfCAgNTA2
ICsrKysKIC4uLi9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5jYyB8ICA0
MTYgKysrCiAuLi4vcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaCAgfCAg
MTExICsKIC4uLi9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsX3Rlc3QuY2MgICB8ICAx
OTMgKysKIC4uLi9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25zLmggICAgICB8ICAg
ODIgKwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL2V4cGxpY2l0X3NlZWRfc2VxLmggIHwgICA4
NyArCiAuLi4vcmFuZG9tL2ludGVybmFsL2V4cGxpY2l0X3NlZWRfc2VxX3Rlc3QuY2MgfCAgMjA0
ICsrCiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdF91bmlmb3JtX2JpdHMuaCAgfCAgMjYw
ICsrCiAuLi4vcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzX3Rlc3QuY2MgfCAgMjcy
ICsrCiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1hdGguaCAgICAgICAgICAgfCAgIDcy
ICsKIC4uLi9hYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0bWF0aF90ZXN0LmNjICAgICB8ICAxMTAg
KwogLi4uL2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9nZW50YWJsZXMuY2MgICAgICAgIHwgIDE0NSAr
CiAuLi4vcmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyLmggICAgfCAgMjQzICsr
CiAuLi4vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXJfdGVzdC5jYyAgICAgfCAgMzY5ICsr
KwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL25hbWVkX2dlbmVyYXRvci5jYyAgIHwgICAzMCAr
CiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvbmFub2JlbmNobWFyay5jYyAgICAgfCAgODEwICsr
KysrCiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvbmFub2JlbmNobWFyay5oICAgICAgfCAgMTY4
ICsrCiAuLi4vcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmtfdGVzdC5jYyAgICAgfCAgIDc1
ICsKIC4uLi9hYnNsL3JhbmRvbS9pbnRlcm5hbC9ub25zZWN1cmVfYmFzZS5oICAgICB8ICAxNDgg
KwogLi4uL3JhbmRvbS9pbnRlcm5hbC9ub25zZWN1cmVfYmFzZV90ZXN0LmNjICAgIHwgIDI0NCAr
KwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL3BjZ19lbmdpbmUuaCAgICAgICAgIHwgIDMwNSAr
KwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL3BjZ19lbmdpbmVfdGVzdC5jYyAgIHwgIDYzOCAr
KysrCiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvcGxhdGZvcm0uaCAgICAgICAgICAgfCAgMTcw
ICsrCiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJnLmNjICAgICAgICAgfCAgMjUy
ICsrCiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJnLmggICAgICAgICAgfCAgMTI5
ICsKIC4uLi9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmdfdGVzdC5jYyAgICB8ICAxODIg
KysKIC4uLi9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4ta2V5cy5pbmMgICAgICB8ICAyMDcg
KysKIC4uLi9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbi5jYyB8ICAgODkg
KwogLi4uL2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuLmggIHwgIDEwMCAr
CiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2JlbmNobWFya3MuY2MgfCAgMTc0ICsr
CiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2RldGVjdC5jYyAgICAgfCAgMjE5ICsr
CiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2RldGVjdC5oICAgICAgfCAgIDI5ICsK
IC4uLi9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZW5naW5lLmggICAgICB8ICAyMjggKysK
IC4uLi9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2VuZ2luZV90ZXN0LmNjICAgICB8ICA2NTYgKysr
KysKIC4uLi9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMuY2MgICAgICB8ICA3MDAg
KysrKysKIC4uLi9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMuaCAgICAgICB8ICAg
NDYgKwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9od2Flc190ZXN0LmNjIHwgIDEw
MiArCiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Nsb3cuY2MgICAgICAgfCAgNTEy
ICsrKysKIC4uLi9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fc2xvdy5oICAgICAgICB8ICAg
NDMgKwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9zbG93X3Rlc3QuY2MgIHwgICA2
MSArCiAuLi4vYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Rlc3QuY2MgICAgICAgfCAgIDcw
ICsKIC4uLi9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fdHJhaXRzLmggICAgICB8ICAgNTkg
KwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL3NhbHRlZF9zZWVkX3NlcS5oICAgIHwgIDE2NSAr
KwogLi4uL3JhbmRvbS9pbnRlcm5hbC9zYWx0ZWRfc2VlZF9zZXFfdGVzdC5jYyAgIHwgIDE2OCAr
KwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWwuY2MgICAgIHwgIDIwNSAr
KwogLi4uL2Fic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWwuaCAgICAgIHwgIDEwMiAr
CiAuLi4vcmFuZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWxfdGVzdC5jYyAgICAgfCAgMjAyICsr
CiAuLi4vc2VlZF9zYWx0aW5nX3NlcXVlbmNlX2dlbmVyYXRvci5jYyAgICAgICAgfCAgIDMwICsK
IC4uLmx0aW5nX3NlcXVlbmNlX2dlbmVyYXRvcl9lbXB0eV9zZXF1ZW5jZS5jYyB8ICAgMzAgKwog
Li4uL2Fic2wvcmFuZG9tL2ludGVybmFsL3NlcXVlbmNlX3VyYmcuaCAgICAgIHwgICA1NiArCiAu
Li4vYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC90cmFpdHMuaCAgfCAgIDk5ICsKIC4u
Li9hYnNsL3JhbmRvbS9pbnRlcm5hbC90cmFpdHNfdGVzdC5jYyAgICAgICB8ICAxMjYgKwogLi4u
L2Fic2wvcmFuZG9tL2ludGVybmFsL3VuaWZvcm1faGVscGVyLmggICAgIHwgIDE1MCArCiAuLi4v
cmFuZG9tL2xvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCAgICAgfCAgMjUwICsrCiAuLi4v
bG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjICAgICAgfCAgMjc3ICsrCiAuLi4v
YWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRpb24uaCAgICAgICAgfCAgMjU0ICsrCiAuLi4v
YWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRpb25fdGVzdC5jYyAgfCAgNTY1ICsrKysKIC4u
Li9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3JhbmRvbS5oICAgICAgICAgICB8ICAxODcgKysKIC4u
Li9hYnNsL3JhbmRvbS9zZWVkX2dlbl9leGNlcHRpb24uY2MgICAgICAgICB8ICAgNDQgKwogLi4u
L2Fic2wvcmFuZG9tL3NlZWRfZ2VuX2V4Y2VwdGlvbi5oICAgICAgICAgIHwgICA1MSArCiAuLi4v
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9zZWVkX3NlcXVlbmNlcy5jYyAgfCAgIDI3ICsKIC4uLi9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL3NlZWRfc2VxdWVuY2VzLmggICB8ICAxMDggKwogLi4uL2Fi
c2wvcmFuZG9tL3NlZWRfc2VxdWVuY2VzX3Rlc3QuY2MgICAgICAgIHwgIDEyNyArCiAuLi4vYWJz
bC9yYW5kb20vdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmggICAgfCAgMjczICsrCiAuLi4vcmFu
ZG9tL3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjICAgfCAgMjUwICsrCiAuLi4vYWJz
bC9yYW5kb20vdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oICAgfCAgMTkzICsrCiAuLi4vcmFu
ZG9tL3VuaWZvcm1fcmVhbF9kaXN0cmlidXRpb25fdGVzdC5jYyAgfCAgMzIyICsrCiAuLi4vYWJz
bC9yYW5kb20vemlwZl9kaXN0cmlidXRpb24uaCAgICAgICAgICAgfCAgMjY5ICsrCiAuLi4vYWJz
bC9yYW5kb20vemlwZl9kaXN0cmlidXRpb25fdGVzdC5jYyAgICAgfCAgNDIzICsrKwogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmJhemVsICAgICAgIHwgICAzNiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmduICAgICAgICAgIHwgICAyOCArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL0NNYWtlTGlzdHMudHh0ICAgIHwgIDc4NSArKy0tLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpLmNjICAgICAgICAgIHwgICAgMiArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpLmggICAgICAgICAgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9hc2NpaV9iZW5jaG1hcmsuY2MgICAgICAgICAgIHwgICAgMiArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpX3Rlc3QuY2MgICAgIHwgICAgMiArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmNjICAgICAgIHwgICAgOSArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmggICAgICAgIHwgICAgNiArLQogLi4u
L2Fic2wvc3RyaW5ncy9jaGFyY29udl9iZW5jaG1hcmsuY2MgICAgICAgIHwgICAgMiArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252X3Rlc3QuY2MgIHwgICAxOSArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmNjICAgICAgIHwgICA1MCArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmggICAgICAgIHwgICAyMCArLQogLi4u
L2Fic2wvc3RyaW5ncy9lc2NhcGluZ19iZW5jaG1hcmsuY2MgICAgICAgIHwgICAgMiArLQogLi4u
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nX3Rlc3QuY2MgIHwgICA4MCArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyX21hcC5oICAgICAgICAgIHwgICAgMiArLQogLi4u
L3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXBfYmVuY2htYXJrLmNjICAgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyX21hcF90ZXN0LmNjICAgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9iaWdpbnQuY2MgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9iaWdpbnQuaCAgIHwgICAzMSArLQogLi4u
L3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50X3Rlc3QuY2MgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZS5jYyAgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZS5oICAgIHwgICAgMiArLQogLi4u
L3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2VfdGVzdC5jYyAgIHwgICAgMiArLQogLi4u
L3N0cmluZ3MvaW50ZXJuYWwvZXNjYXBpbmdfdGVzdF9jb21tb24uaCAgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmNjICAgICAgICAgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmggICAgICAgICAgIHwgICAgMiArLQogLi4u
L3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbF9iZW5jaG1hcmsuY2MgICAgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsX3Rlc3QuY2MgICAgIHwgICAgMiArLQogLi4u
L3N0cmluZ3MvaW50ZXJuYWwvbnVtYmVyc190ZXN0X2NvbW1vbi5oICAgIHwgICAyNSArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmNjICAgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmggICAgIHwgICAxOCArLQogLi4u
L2ludGVybmFsL29zdHJpbmdzdHJlYW1fYmVuY2htYXJrLmNjICAgICAgIHwgICAgMiArLQogLi4u
L3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbV90ZXN0LmNjICAgIHwgICAgMiArLQogLi4u
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9wb3cxMF9oZWxwZXIuY2MgICAgIHwgIDEyMCArCiAuLi4v
YWJzbC9zdHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBlci5oICAgICAgfCAgIDM2ICsKIC4uLi9z
dHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBlcl90ZXN0LmNjICAgICB8ICAxMjAgKwogLi4uL3N0
cmluZ3MvaW50ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6ZWQuaCAgIHwgICA0MyArLQogLi4uL2lu
dGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkX3Rlc3QuY2MgICAgIHwgICAyNiArLQogLi4uL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdGxfdHlwZV90cmFpdHMuaCAgIHwgICAgMiArLQogLi4uL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oICAgIHwgICAyMCArLQogLi4uL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmdfdGVzdC5jYyAgIHwgICAgMiArLQogLi4uL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuY2MgIHwgICAxMSArLQogLi4uL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuaCAgIHwgICAyOCArLQogLi4uL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kX3Rlc3QuY2MgIHwgICAyNCArLQogLi4uL2lu
dGVybmFsL3N0cl9mb3JtYXQvY2hlY2tlcl90ZXN0LmNjICAgICAgIHwgICA2NiArLQogLi4uL2lu
dGVybmFsL3N0cl9mb3JtYXQvY29udmVydF90ZXN0LmNjICAgICAgIHwgICAyMyArLQogLi4uL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uY2MgIHwgICAgMiArLQogLi4uL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uaCAgIHwgICAgNyArLQogLi4uL2lu
dGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uX3Rlc3QuY2MgICAgIHwgICAgMyArLQogLi4uL2lu
dGVybmFsL3N0cl9mb3JtYXQvZmxvYXRfY29udmVyc2lvbi5jYyAgIHwgICAgNCArLQogLi4uL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuY2MgICAgIHwgICAyOSArLQogLi4uL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1dC5oIHwgICAgMiArLQogLi4uL2lu
dGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0X3Rlc3QuY2MgICAgICAgIHwgICAgOSArLQogLi4uL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuY2MgICAgIHwgIDE0NiArLQogLi4uL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5oIHwgIDEyOCArLQogLi4uL2lu
dGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyX3Rlc3QuY2MgICAgICAgIHwgICAyNyArLQogLi4uL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfam9pbl9pbnRlcm5hbC5oIHwgICAxNSArLQogLi4uL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX3NwbGl0X2ludGVybmFsLmggICAgIHwgICAxNCArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3V0ZjguY2MgIHwgICAgMiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3V0ZjguaCAgIHwgICAgMyArLQogLi4uL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4X3Rlc3QuY2MgICAgICAgIHwgICAxOSArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmNjICAgICAgICAgIHwgICAxNSArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmggICAgICAgICAgIHwgICAgOSArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoX3Rlc3QuY2MgICAgIHwgICAgNiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuY2MgICAgICAgIHwgICA2MyArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuaCAgICAgICAgIHwgICAzMSArLQogLi4uL2Fi
c2wvc3RyaW5ncy9udW1iZXJzX2JlbmNobWFyay5jYyAgICAgICAgIHwgICAgMiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfdGVzdC5jYyAgIHwgICAxOCArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQuY2MgICAgICAgIHwgICAyNCArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCAgICAgICAgIHwgICA0OCArLQogLi4uL2Fi
c2wvc3RyaW5ncy9zdHJfY2F0X2JlbmNobWFyay5jYyAgICAgICAgIHwgICAgMiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXRfdGVzdC5jYyAgIHwgICA2MyArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaCAgICAgIHwgICA2MyArLQogLi4uL2Fi
c2wvc3RyaW5ncy9zdHJfZm9ybWF0X3Rlc3QuY2MgICAgICAgICAgIHwgICA3NCArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luLmggICAgICAgIHwgICA4MCArLQogLi4uL2Fi
c2wvc3RyaW5ncy9zdHJfam9pbl9iZW5jaG1hcmsuY2MgICAgICAgIHwgICAgNSArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luX3Rlc3QuY2MgIHwgICAxNCArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmNjICAgIHwgICAgNyArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmggICAgIHwgICA0MiArLQogLi4uL2Fi
c2wvc3RyaW5ncy9zdHJfcmVwbGFjZV9iZW5jaG1hcmsuY2MgICAgIHwgICAxNCArLQogLi4uL2Fi
c2wvc3RyaW5ncy9zdHJfcmVwbGFjZV90ZXN0LmNjICAgICAgICAgIHwgICAgNCArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5jYyAgICAgIHwgICAgMiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5oICAgICAgIHwgICA0NyArLQogLi4uL2Fi
c2wvc3RyaW5ncy9zdHJfc3BsaXRfYmVuY2htYXJrLmNjICAgICAgIHwgICAzNiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdF90ZXN0LmNjIHwgICA2MiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmNjICAgIHwgICAxNiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmggICAgIHwgICA2MyArLQogLi4uL2Fi
c2wvc3RyaW5ncy9zdHJpbmdfdmlld19iZW5jaG1hcmsuY2MgICAgIHwgICAxMiArLQogLi4uL2Fi
c2wvc3RyaW5ncy9zdHJpbmdfdmlld190ZXN0LmNjICAgICAgICAgIHwgICAzNiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwLmggICAgICAgICAgIHwgICAgMiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwX3Rlc3QuY2MgICAgIHwgICAgNSArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuY2MgICAgIHwgICAgMiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuaCAgICAgIHwgICA4NyArLQogLi4uL2Fi
c2wvc3RyaW5ncy9zdWJzdGl0dXRlX3Rlc3QuY2MgICAgICAgICAgIHwgICAxNCArLQogLi4uL2Fi
c2wvc3luY2hyb25pemF0aW9uL0JVSUxELmJhemVsICAgICAgICAgIHwgICA1NSArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuZ24gIHwgICAgOCArCiAuLi4vYWJz
bC9zeW5jaHJvbml6YXRpb24vQ01ha2VMaXN0cy50eHQgICAgICAgfCAgMjczICstCiAuLi4vYWJz
bC9zeW5jaHJvbml6YXRpb24vYmFycmllci5jYyAgICAgICAgICAgfCAgICAyICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9iYXJyaWVyLmggfCAgICA2ICstCiAuLi4vYWJz
bC9zeW5jaHJvbml6YXRpb24vYmFycmllcl90ZXN0LmNjICAgICAgfCAgICAyICstCiAuLi4vYWJz
bC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5jYyAgfCAgICAyICstCiAuLi4vYWJz
bC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5oICAgfCAgICA2ICstCiAuLi4vc3lu
Y2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXJfdGVzdC5jYyAgfCAgICAyICstCiAuLi4vaW50
ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5jYyAgICAgICAgfCAgIDMxICstCiAuLi4vaW50
ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5oICAgICAgICAgfCAgICAzICstCiAuLi4vc3lu
Y2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmNjICAgfCAgICAyICstCiAuLi4vc3lu
Y2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmggICAgfCAgICAyICstCiAuLi4vaW50
ZXJuYWwvZ3JhcGhjeWNsZXNfYmVuY2htYXJrLmNjICAgICAgICAgfCAgICAyICstCiAuLi4vaW50
ZXJuYWwvZ3JhcGhjeWNsZXNfdGVzdC5jYyAgICAgICAgICAgICAgfCAgICAyICstCiAuLi4vc3lu
Y2hyb25pemF0aW9uL2ludGVybmFsL2tlcm5lbF90aW1lb3V0LmggfCAgIDE2ICstCiAuLi4vc3lu
Y2hyb25pemF0aW9uL2ludGVybmFsL211dGV4X25vbnByb2QuY2MgfCAgICAyICstCiAuLi4vaW50
ZXJuYWwvbXV0ZXhfbm9ucHJvZC5pbmMgICAgICAgICAgICAgICAgfCAgICAzICsKIC4uLi9pbnRl
cm5hbC9wZXJfdGhyZWFkX3NlbS5jYyAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIC4uLi9zeW5j
aHJvbml6YXRpb24vaW50ZXJuYWwvcGVyX3RocmVhZF9zZW0uaCB8ICAgIDMgKy0KIC4uLi9pbnRl
cm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNjICAgICAgICAgICB8ICAgMTkgKy0KIC4uLi9zeW5j
aHJvbml6YXRpb24vaW50ZXJuYWwvdGhyZWFkX3Bvb2wuaCAgICB8ICAgIDkgKy0KIC4uLi9hYnNs
L3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC93YWl0ZXIuY2MgICB8ICAgNjEgKy0KIC4uLi9hYnNs
L3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC93YWl0ZXIuaCAgICB8ICAgMjIgKy0KIC4uLi9hYnNs
L3N5bmNocm9uaXphdGlvbi9saWZldGltZV90ZXN0LmNjICAgICB8ICAgNjUgKy0KIC4uLi9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmNjICB8ICAxNTggKy0KIC4uLi9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmggICB8ICAxMDYgKy0KIC4uLi9hYnNs
L3N5bmNocm9uaXphdGlvbi9tdXRleF9iZW5jaG1hcmsuY2MgICB8ICAxNTMgKy0KIC4uLi9hYnNs
L3N5bmNocm9uaXphdGlvbi9tdXRleF90ZXN0LmNjICAgICAgICB8ICAgNjMgKy0KIC4uLi9hYnNs
L3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb24uY2MgICAgICB8ICAgIDMgKy0KIC4uLi9hYnNs
L3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb24uaCAgICAgICB8ICAgIDQgKy0KIC4uLi9hYnNs
L3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb25fdGVzdC5jYyB8ICAgMTIgKy0KIC4uLi9hYnNl
aWwtY3BwL2Fic2wvdGltZS9CVUlMRC5iYXplbCAgICAgICAgICB8ICAgMTYgKy0KIC4uLi90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9CVUlMRC5nbiB8ICAgIDkgKwogLi4uL2Fic2Vp
bC1jcHAvYWJzbC90aW1lL0NNYWtlTGlzdHMudHh0ICAgICAgIHwgIDE2NyArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2NpdmlsX3RpbWUuY2MgICAgICAgIHwgICA4MyArCiAuLi4vYWJzZWls
LWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZS5oICAgICAgICAgfCAgNDg1ICsrKwogLi4uL2Fic2wv
dGltZS9jaXZpbF90aW1lX2JlbmNobWFyay5jYyAgICAgICAgIHwgIDEwNyArCiAuLi4vYWJzZWls
LWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZV90ZXN0LmNjICAgfCAxMDg1ICsrKysrKysKIC4uLi90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jbG9jay5jYyB8ICAgIDggKy0KIC4uLi90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jbG9jay5oICB8ICAgIDIgKy0KIC4uLi9h
YnNlaWwtY3BwL2Fic2wvdGltZS9jbG9ja19iZW5jaG1hcmsuY2MgICB8ICAgIDQgKy0KIC4uLi9h
YnNlaWwtY3BwL2Fic2wvdGltZS9jbG9ja190ZXN0LmNjICAgICAgICB8ICAgIDIgKy0KIC4uLi9h
YnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbi5jYyAgICAgICAgICB8ICAgMjMgKy0KIC4uLi9h
YnNsL3RpbWUvZHVyYXRpb25fYmVuY2htYXJrLmNjICAgICAgICAgICB8ICAgIDMgKy0KIC4uLi9h
YnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbl90ZXN0LmNjICAgICB8ICAgNTMgKy0KIC4uLi9h
YnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXQuY2MgICAgICAgICAgICB8ICAgMTMgKy0KIC4uLi9h
YnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXRfYmVuY2htYXJrLmNjICB8ICAgIDkgKy0KIC4uLi9h
YnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXRfdGVzdC5jYyAgICAgICB8ICAgNTUgKy0KIC4uLi9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9CVUlMRC5iYXplbCAgICAgICB8ICAgMjggKy0KIC4uLi9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9CVUlMRC5nbiAgICAgICAgICB8ICAgMTAgKwogLi4uL2lu
dGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWUuaCAgIHwgICAxMCArLQogLi4uL2Nj
dHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWVfZGV0YWlsLmggICAgIHwgIDEwOCArLQogLi4uL2lu
dGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5oICAgIHwgICAgNCArLQogLi4uL2Nj
dHovaW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3VyY2UuaCAgICAgIHwgICAgMiArLQogLi4uL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvY2N0el9iZW5jaG1hcmsuY2MgIHwgICA1MyArLQogLi4uL2lu
dGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVfZGV0YWlsLmNjICAgIHwgICAgMiArLQogLi4uL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvY2l2aWxfdGltZV90ZXN0LmNjIHwgICAxOCArLQogLi4uL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmNjIHwgICAxOCArLQogLi4uL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmggIHwgICAgMiArLQogLi4uL2lu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXQuY2MgICAgIHwgIDEwMCArLQogLi4uL2Nj
dHovc3JjL3RpbWVfem9uZV9mb3JtYXRfdGVzdC5jYyAgICAgICAgIHwgIDM2MyArKy0KIC4uLi90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pZi5jYyAgICB8ICAgIDIgKy0KIC4uLi90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pZi5oICAgICB8ICAgIDIgKy0KIC4uLi90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbXBsLmNjICB8ICAgIDIgKy0KIC4uLi90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbXBsLmggICB8ICAgIDIgKy0KIC4uLi90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmNjICB8ICAgMjUgKy0KIC4uLi90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmggICB8ICAgIDQgKy0KIC4uLi90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmNjICB8ICAyOTUgKy0KIC4uLi90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmggICB8ICAgIDIgKy0KIC4uLi9p
bnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbG9va3VwLmNjICAgICB8ICAgMzcgKy0KIC4uLi9j
Y3R6L3NyYy90aW1lX3pvbmVfbG9va3VwX3Rlc3QuY2MgICAgICAgICB8ICAxMzEgKy0KIC4uLi90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5jYyB8ICAgMTIgKy0KIC4uLi90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5oICB8ICAgNDIgKy0KIC4uLi9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdHpmaWxlLmggICAgICB8ICAgMjIgKy0KIC4uLi9p
bnRlcm5hbC9jY3R6L3NyYy96b25lX2luZm9fc291cmNlLmNjICAgICB8ICAgMjIgKy0KIC4uLi9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS92ZXJzaW9uICB8ICAgIDIgKy0KIC4uLi9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9BYmlkamFuICAgICB8ICBCaW4gMTcwIC0+IDE0
OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0FjY3JhICAgICAgIHwg
IEJpbiA4NDIgLT4gODE2IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2Ev
QWRkaXNfQWJhYmEgfCAgQmluIDI4NSAtPiAyNTEgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FmcmljYS9BbGdpZXJzICAgICB8ICBCaW4gNzYwIC0+IDczNSBieXRlcwogLi4uL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0FzbWFyYSAgICAgIHwgIEJpbiAyODUgLT4gMjUx
IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvQXNtZXJhICAgICAgfCAg
QmluIDI4NSAtPiAyNTEgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9C
YW1ha28gICAgICB8ICBCaW4gMTcwIC0+IDE0OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQWZyaWNhL0Jhbmd1aSAgICAgIHwgIEJpbiAxNzEgLT4gMTQ5IGJ5dGVzCiAuLi4vY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvQmFuanVsICAgICAgfCAgQmluIDE3MCAtPiAxNDgg
Ynl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9CaXNzYXUgICAgICB8ICBC
aW4gMjA4IC0+IDE5NCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0Js
YW50eXJlICAgIHwgIEJpbiAxNzEgLT4gMTQ5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BZnJpY2EvQnJhenphdmlsbGUgfCAgQmluIDE3MSAtPiAxNDkgYnl0ZXMKIC4uLi9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9CdWp1bWJ1cmEgICB8ICBCaW4gMTcxIC0+IDE0OSBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0NhaXJvICAgICAgIHwgIEJp
biAxOTcyIC0+IDE5NTUgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9D
YXNhYmxhbmNhICB8ICBCaW4gMTY0MyAtPiAyNDI5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BZnJpY2EvQ2V1dGEgICAgICAgfCAgQmluIDIwNTkgLT4gMjAzNiBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0NvbmFrcnkgICAgIHwgIEJpbiAxNzAgLT4g
MTQ4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvRGFrYXIgICAgICAg
fCAgQmluIDE3MCAtPiAxNDggYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvRGFy
X2VzX1NhbGFhbSAgICB8ICBCaW4gMjg1IC0+IDI1MSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQWZyaWNhL0RqaWJvdXRpICAgIHwgIEJpbiAyODUgLT4gMjUxIGJ5dGVzCiAuLi4v
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvRG91YWxhICAgICAgfCAgQmluIDE3MSAtPiAx
NDkgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9FbF9BYWl1biAgICB8
ICBCaW4gMTQ3MyAtPiAyMjk1IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJp
Y2EvRnJlZXRvd24gICAgfCAgQmluIDE3MCAtPiAxNDggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FmcmljYS9HYWJvcm9uZSAgICB8ICBCaW4gMTcxIC0+IDE0OSBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0hhcmFyZSAgICAgIHwgIEJpbiAxNzEgLT4g
MTQ5IGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0pvaGFubmVzYnVyZyAgICAg
fCAgQmluIDI3MSAtPiAyNDYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Fmcmlj
YS9KdWJhICAgICAgICB8ICBCaW4gNjgzIC0+IDY1MyBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQWZyaWNhL0thbXBhbGEgICAgIHwgIEJpbiAyODUgLT4gMjUxIGJ5dGVzCiAuLi4v
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvS2hhcnRvdW0gICAgfCAgQmluIDcxMyAtPiA2
NzkgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9LaWdhbGkgICAgICB8
ICBCaW4gMTcxIC0+IDE0OSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNh
L0tpbnNoYXNhICAgIHwgIEJpbiAxNzEgLT4gMTQ5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BZnJpY2EvTGFnb3MgICAgICAgfCAgQmluIDE3MSAtPiAxNDkgYnl0ZXMKIC4uLi9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9MaWJyZXZpbGxlICB8ICBCaW4gMTcxIC0+IDE0
OSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0xvbWUgICAgICAgIHwg
IEJpbiAxNzAgLT4gMTQ4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2Ev
THVhbmRhICAgICAgfCAgQmluIDE3MSAtPiAxNDkgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FmcmljYS9MdWJ1bWJhc2hpICB8ICBCaW4gMTcxIC0+IDE0OSBieXRlcwogLi4uL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0x1c2FrYSAgICAgIHwgIEJpbiAxNzEgLT4gMTQ5
IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTWFsYWJvICAgICAgfCAg
QmluIDE3MSAtPiAxNDkgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9N
YXB1dG8gICAgICB8ICBCaW4gMTcxIC0+IDE0OSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQWZyaWNhL01hc2VydSAgICAgIHwgIEJpbiAyNzEgLT4gMjQ2IGJ5dGVzCiAuLi4vY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTWJhYmFuZSAgICAgfCAgQmluIDI3MSAtPiAyNDYg
Ynl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9Nb2dhZGlzaHUgICB8ICBC
aW4gMjg1IC0+IDI1MSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL01v
bnJvdmlhICAgIHwgIEJpbiAyMzMgLT4gMjA4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BZnJpY2EvTmFpcm9iaSAgICAgfCAgQmluIDI4NSAtPiAyNTEgYnl0ZXMKIC4uLi9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9OZGphbWVuYSAgICB8ICBCaW4gMjI1IC0+IDE5OSBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL05pYW1leSAgICAgIHwgIEJp
biAxNzEgLT4gMTQ5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTm91
YWtjaG90dCAgfCAgQmluIDE3MCAtPiAxNDggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FmcmljYS9PdWFnYWRvdWdvdSB8ICBCaW4gMTcwIC0+IDE0OCBieXRlcwogLi4uL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL1BvcnRvLU5vdm8gIHwgIEJpbiAxNzEgLT4gMTQ5IGJ5
dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvU2FvX1RvbWUgICAgfCAgQmlu
IDIzNCAtPiAyNTQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9UaW1i
dWt0dSAgICB8ICBCaW4gMTcwIC0+IDE0OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQWZyaWNhL1RyaXBvbGkgICAgIHwgIEJpbiA2NTUgLT4gNjI1IGJ5dGVzCiAuLi4vY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvVHVuaXMgICAgICAgfCAgQmluIDcxMCAtPiA2ODkgYnl0
ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9XaW5kaG9layAgICB8ICBCaW4g
OTg4IC0+IDk1NSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9BZGFr
ICAgICAgIHwgIEJpbiAyMzY1IC0+IDIzNTYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FtZXJpY2EvQW5jaG9yYWdlICB8ICBCaW4gMjM4MCAtPiAyMzcxIGJ5dGVzCiAuLi4vY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0FuZ3VpbGxhICAgfCAgQmluIDE3MCAtPiAxNDgg
Ynl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQW50aWd1YSAgICB8ICBC
aW4gMTcwIC0+IDE0OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9B
cmFndWFpbmEgIHwgIEJpbiA5MTAgLT4gODg0IGJ5dGVzCiAuLi4vem9uZWluZm8vQW1lcmljYS9B
cmdlbnRpbmEvQnVlbm9zX0FpcmVzICAgfCAgQmluIDExMDkgLT4gMTA3NiBieXRlcwogLi4uL3pv
bmVpbmZvL0FtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYSAgICAgIHwgIEJpbiAxMTA5IC0+IDEw
NzYgYnl0ZXMKIC4uLi96b25laW5mby9BbWVyaWNhL0FyZ2VudGluYS9Db21vZFJpdmFkYXZpYSB8
ICBCaW4gMTEwOSAtPiAxMDc2IGJ5dGVzCiAuLi4vem9uZWluZm8vQW1lcmljYS9BcmdlbnRpbmEv
Q29yZG9iYSAgICAgICAgfCAgQmluIDExMDkgLT4gMTA3NiBieXRlcwogLi4uL3Rlc3RkYXRhL3pv
bmVpbmZvL0FtZXJpY2EvQXJnZW50aW5hL0p1anV5IHwgIEJpbiAxMDgxIC0+IDEwNDggYnl0ZXMK
IC4uLi96b25laW5mby9BbWVyaWNhL0FyZ2VudGluYS9MYV9SaW9qYSAgICAgICB8ICBCaW4gMTEy
MyAtPiAxMDkwIGJ5dGVzCiAuLi4vem9uZWluZm8vQW1lcmljYS9BcmdlbnRpbmEvTWVuZG96YSAg
ICAgICAgfCAgQmluIDExMDkgLT4gMTA3NiBieXRlcwogLi4uL3pvbmVpbmZvL0FtZXJpY2EvQXJn
ZW50aW5hL1Jpb19HYWxsZWdvcyAgIHwgIEJpbiAxMTA5IC0+IDEwNzYgYnl0ZXMKIC4uLi90ZXN0
ZGF0YS96b25laW5mby9BbWVyaWNhL0FyZ2VudGluYS9TYWx0YSB8ICBCaW4gMTA4MSAtPiAxMDQ4
IGJ5dGVzCiAuLi4vem9uZWluZm8vQW1lcmljYS9BcmdlbnRpbmEvU2FuX0p1YW4gICAgICAgfCAg
QmluIDExMjMgLT4gMTA5MCBieXRlcwogLi4uL3pvbmVpbmZvL0FtZXJpY2EvQXJnZW50aW5hL1Nh
bl9MdWlzICAgICAgIHwgIEJpbiAxMTM5IC0+IDExMDIgYnl0ZXMKIC4uLi96b25laW5mby9BbWVy
aWNhL0FyZ2VudGluYS9UdWN1bWFuICAgICAgICB8ICBCaW4gMTEzNyAtPiAxMTA0IGJ5dGVzCiAu
Li4vem9uZWluZm8vQW1lcmljYS9BcmdlbnRpbmEvVXNodWFpYSAgICAgICAgfCAgQmluIDExMDkg
LT4gMTA3NiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9BcnViYSAg
ICAgIHwgIEJpbiAyMTIgLT4gMTg2IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
bWVyaWNhL0FzdW5jaW9uICAgfCAgQmluIDIwNzcgLT4gMjA0NCBieXRlcwogLi4uL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9BdGlrb2thbiAgIHwgIEJpbiAzNDUgLT4gMzM2IGJ5dGVz
CiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0F0a2EgICAgICAgfCAgQmluIDIz
NjUgLT4gMjM1NiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9CYWhp
YSAgICAgIHwgIEJpbiAxMDUwIC0+IDEwMjQgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9B
bWVyaWNhL0JhaGlhX0JhbmRlcmFzICB8ICBCaW4gMTU4OCAtPiAxNTQ2IGJ5dGVzCiAuLi4vY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0JhcmJhZG9zICAgfCAgQmluIDM0NCAtPiAzMTQg
Ynl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQmVsZW0gICAgICB8ICBC
aW4gNjAyIC0+IDU3NiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9C
ZWxpemUgICAgIHwgIEJpbiA5NzggLT4gOTQ4IGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9uZWluZm8v
QW1lcmljYS9CbGFuYy1TYWJsb24gICAgfCAgQmluIDMwNyAtPiAyOTggYnl0ZXMKIC4uLi9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQm9hX1Zpc3RhICB8ICBCaW4gNjU4IC0+IDYzMiBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Cb2dvdGEgICAgIHwgIEJp
biAyNzEgLT4gMjQ2IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0Jv
aXNlICAgICAgfCAgQmluIDI0MDMgLT4gMjM5NCBieXRlcwogLi4uL3Rlc3RkYXRhL3pvbmVpbmZv
L0FtZXJpY2EvQnVlbm9zX0FpcmVzICAgIHwgIEJpbiAxMTA5IC0+IDEwNzYgYnl0ZXMKIC4uLi90
ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0NhbWJyaWRnZV9CYXkgICB8ICBCaW4gMjA5OCAtPiAy
MDg0IGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9DYW1wb19HcmFuZGUgICAg
fCAgQmluIDIwMTYgLT4gMTQ0NCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1l
cmljYS9DYW5jdW4gICAgIHwgIEJpbiA4MTYgLT4gNzgyIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BbWVyaWNhL0NhcmFjYXMgICAgfCAgQmluIDI4OSAtPiAyNjQgYnl0ZXMKIC4u
Li9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQ2F0YW1hcmNhICB8ICBCaW4gMTEwOSAt
PiAxMDc2IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0NheWVubmUg
ICAgfCAgQmluIDIyNCAtPiAxOTggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Ft
ZXJpY2EvQ2F5bWFuICAgICB8ICBCaW4gMjAzIC0+IDE4MiBieXRlcwogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW1lcmljYS9DaGljYWdvICAgIHwgIEJpbiAzNTg1IC0+IDM1NzYgYnl0ZXMK
IC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQ2hpaHVhaHVhICB8ICBCaW4gMTUy
MiAtPiAxNDg0IGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Db3JhbF9IYXJi
b3VyICAgfCAgQmluIDM0NSAtPiAzMzYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FtZXJpY2EvQ29yZG9iYSAgICB8ICBCaW4gMTEwOSAtPiAxMDc2IGJ5dGVzCiAuLi4vY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0Nvc3RhX1JpY2EgfCAgQmluIDM0MSAtPiAzMTYgYnl0
ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQ3Jlc3RvbiAgICB8ICBCaW4g
MjMzIC0+IDIwOCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9DdWlh
YmEgICAgIHwgIEJpbiAxOTg4IC0+IDE0MTYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FtZXJpY2EvQ3VyYWNhbyAgICB8ICBCaW4gMjEyIC0+IDE4NiBieXRlcwogLi4uL3Rlc3Rk
YXRhL3pvbmVpbmZvL0FtZXJpY2EvRGFubWFya3NoYXZuICAgIHwgIEJpbiA3MTIgLT4gNjk4IGJ5
dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0Rhd3NvbiAgICAgfCAgQmlu
IDIwOTMgLT4gMjA4NCBieXRlcwogLi4uL3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvRGF3c29u
X0NyZWVrICAgIHwgIEJpbiAxMDU5IC0+IDEwNTAgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FtZXJpY2EvRGVudmVyICAgICB8ICBCaW4gMjQ1MyAtPiAyNDQ0IGJ5dGVzCiAuLi4v
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0RldHJvaXQgICAgfCAgQmluIDIxODggLT4g
MjE3NCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Eb21pbmljYSAg
IHwgIEJpbiAxNzAgLT4gMTQ4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVy
aWNhL0VkbW9udG9uICAgfCAgQmluIDI0MDIgLT4gMjM4OCBieXRlcwogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW1lcmljYS9FaXJ1bmVwZSAgIHwgIEJpbiA2OTAgLT4gNjU2IGJ5dGVzCiAu
Li4vdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9FbF9TYWx2YWRvciAgICAgfCAgQmluIDI1MCAt
PiAyMjQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvRW5zZW5hZGEg
ICB8ICBCaW4gMjM1NiAtPiAyMzQyIGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9Gb3J0X05lbHNvbiAgICAgfCAgQmluIDIyNDkgLT4gMjI0MCBieXRlcwogLi4uL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9Gb3J0X1dheW5lIHwgIEJpbiAxNjc1IC0+IDE2NjYgYnl0
ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvRm9ydGFsZXphICB8ICBCaW4g
NzQyIC0+IDcxNiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9HbGFj
ZV9CYXkgIHwgIEJpbiAyMjA2IC0+IDIxOTIgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FtZXJpY2EvR29kdGhhYiAgICB8ICBCaW4gMTg5MiAtPiAxODc4IGJ5dGVzCiAuLi4vY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0dvb3NlX0JheSAgfCAgQmluIDMyMTkgLT4gMzIx
MCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9HcmFuZF9UdXJrIHwg
IEJpbiAxODgxIC0+IDE4NDggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJp
Y2EvR3JlbmFkYSAgICB8ICBCaW4gMTcwIC0+IDE0OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQW1lcmljYS9HdWFkZWxvdXBlIHwgIEJpbiAxNzAgLT4gMTQ4IGJ5dGVzCiAuLi4v
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0d1YXRlbWFsYSAgfCAgQmluIDMwNiAtPiAy
ODAgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvR3VheWFxdWlsICB8
ICBCaW4gMjcxIC0+IDI0NiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9HdXlhbmEgICAgIHwgIEJpbiAyNjYgLT4gMjM2IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL0hhbGlmYXggICAgfCAgQmluIDM0MzggLT4gMzQyNCBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9IYXZhbmEgICAgIHwgIEJpbiAyNDM3IC0+
IDI0MTYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvSGVybW9zaWxs
byB8ICBCaW4gNDU0IC0+IDQxNiBieXRlcwogLi4uL3pvbmVpbmZvL0FtZXJpY2EvSW5kaWFuYS9J
bmRpYW5hcG9saXMgICAgIHwgIEJpbiAxNjc1IC0+IDE2NjYgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL0luZGlhbmEvS25veCAgICB8ICBCaW4gMjQzNyAtPiAyNDI4IGJ5dGVz
CiAuLi4vdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9JbmRpYW5hL01hcmVuZ28gfCAgQmluIDE3
MzEgLT4gMTcyMiBieXRlcwogLi4uL3pvbmVpbmZvL0FtZXJpY2EvSW5kaWFuYS9QZXRlcnNidXJn
ICAgICAgIHwgIEJpbiAxOTEzIC0+IDE5MDQgYnl0ZXMKIC4uLi96b25laW5mby9BbWVyaWNhL0lu
ZGlhbmEvVGVsbF9DaXR5ICAgICAgICB8ICBCaW4gMTczNSAtPiAxNzI2IGJ5dGVzCiAuLi4vdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9JbmRpYW5hL1ZldmF5ICAgfCAgQmluIDE0MjMgLT4gMTQx
NCBieXRlcwogLi4uL3pvbmVpbmZvL0FtZXJpY2EvSW5kaWFuYS9WaW5jZW5uZXMgICAgICAgIHwg
IEJpbiAxNzAzIC0+IDE2OTQgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0lu
ZGlhbmEvV2luYW1hYyB8ICBCaW4gMTc4NyAtPiAxNzc4IGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9u
ZWluZm8vQW1lcmljYS9JbmRpYW5hcG9saXMgICAgfCAgQmluIDE2NzUgLT4gMTY2NiBieXRlcwog
Li4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9JbnV2aWsgICAgIHwgIEJpbiAxOTI4
IC0+IDE4OTQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvSXFhbHVp
dCAgICB8ICBCaW4gMjA0NiAtPiAyMDMyIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5m
by9BbWVyaWNhL0phbWFpY2EgICAgfCAgQmluIDUwNyAtPiA0ODIgYnl0ZXMKIC4uLi9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvSnVqdXkgICAgICB8ICBCaW4gMTA4MSAtPiAxMDQ4IGJ5
dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0p1bmVhdSAgICAgfCAgQmlu
IDIzNjIgLT4gMjM1MyBieXRlcwogLi4uL3pvbmVpbmZvL0FtZXJpY2EvS2VudHVja3kvTG91aXN2
aWxsZSAgICAgIHwgIEJpbiAyNzgxIC0+IDI3NzIgYnl0ZXMKIC4uLi96b25laW5mby9BbWVyaWNh
L0tlbnR1Y2t5L01vbnRpY2VsbG8gICAgICB8ICBCaW4gMjM2MSAtPiAyMzUyIGJ5dGVzCiAuLi4v
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0tub3hfSU4gICAgfCAgQmluIDI0MzcgLT4g
MjQyOCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9LcmFsZW5kaWpr
IHwgIEJpbiAyMTIgLT4gMTg2IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVy
aWNhL0xhX1BheiAgICAgfCAgQmluIDI1NyAtPiAyMzIgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FtZXJpY2EvTGltYSAgICAgICB8ICBCaW4gNDMxIC0+IDQwNiBieXRlcwogLi4u
L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTG9zX0FuZ2VsZXMgICAgIHwgIEJpbiAyODQ1IC0+
IDI4MzYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTG91aXN2aWxs
ZSB8ICBCaW4gMjc4MSAtPiAyNzcyIGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9Mb3dlcl9QcmluY2VzICAgfCAgQmluIDIxMiAtPiAxODYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0FtZXJpY2EvTWFjZWlvICAgICB8ICBCaW4gNzcwIC0+IDc0NCBieXRlcwog
Li4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9NYW5hZ3VhICAgIHwgIEJpbiA0NjMg
LT4gNDMwIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01hbmF1cyAg
ICAgfCAgQmluIDYzMCAtPiA2MDQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Ft
ZXJpY2EvTWFyaWdvdCAgICB8ICBCaW4gMTcwIC0+IDE0OCBieXRlcwogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW1lcmljYS9NYXJ0aW5pcXVlIHwgIEJpbiAyNTcgLT4gMjMyIGJ5dGVzCiAu
Li4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01hdGFtb3JvcyAgfCAgQmluIDE0MTYg
LT4gMTM5MCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9NYXphdGxh
biAgIHwgIEJpbiAxNTY0IC0+IDE1MjYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FtZXJpY2EvTWVuZG96YSAgICB8ICBCaW4gMTEwOSAtPiAxMDc2IGJ5dGVzCiAuLi4vY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01lbm9taW5lZSAgfCAgQmluIDIyODMgLT4gMjI3NCBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9NZXJpZGEgICAgIHwgIEJp
biAxNDU2IC0+IDE0MjIgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2Ev
TWV0bGFrYXRsYSB8ICBCaW4gMTQxOCAtPiAxNDIzIGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9uZWlu
Zm8vQW1lcmljYS9NZXhpY29fQ2l0eSAgICAgfCAgQmluIDE2MTggLT4gMTU4NCBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9NaXF1ZWxvbiAgIHwgIEJpbiAxNjk2IC0+
IDE2NjYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTW9uY3RvbiAg
ICB8ICBCaW4gMzE2MyAtPiAzMTU0IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
bWVyaWNhL01vbnRlcnJleSAgfCAgQmluIDE0MTYgLT4gMTM5MCBieXRlcwogLi4uL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9Nb250ZXZpZGVvIHwgIEJpbiAxNTY0IC0+IDE1MTAgYnl0
ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTW9udHJlYWwgICB8ICBCaW4g
MzUwMyAtPiAzNDk0IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01v
bnRzZXJyYXQgfCAgQmluIDE3MCAtPiAxNDggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FtZXJpY2EvTmFzc2F1ICAgICB8ICBCaW4gMjI4NCAtPiAyMjU4IGJ5dGVzCiAuLi4vY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL05ld19Zb3JrICAgfCAgQmluIDM1NDUgLT4gMzUz
NiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9OaXBpZ29uICAgIHwg
IEJpbiAyMTMxIC0+IDIxMjIgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJp
Y2EvTm9tZSAgICAgICB8ICBCaW4gMjM3NiAtPiAyMzY3IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BbWVyaWNhL05vcm9uaGEgICAgfCAgQmluIDc0MiAtPiA3MTYgYnl0ZXMKIC4u
Li96b25laW5mby9BbWVyaWNhL05vcnRoX0Rha290YS9CZXVsYWggICAgICB8ICBCaW4gMjM4OSAt
PiAyMzgwIGJ5dGVzCiAuLi4vem9uZWluZm8vQW1lcmljYS9Ob3J0aF9EYWtvdGEvQ2VudGVyICAg
ICAgfCAgQmluIDIzODkgLT4gMjM4MCBieXRlcwogLi4uL3pvbmVpbmZvL0FtZXJpY2EvTm9ydGhf
RGFrb3RhL05ld19TYWxlbSAgIHwgIEJpbiAyMzg5IC0+IDIzODAgYnl0ZXMKIC4uLi9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvT2ppbmFnYSAgICB8ICBCaW4gMTUyMiAtPiAxNDg0IGJ5
dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1BhbmFtYSAgICAgfCAgQmlu
IDIwMyAtPiAxODIgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1BhbmduaXJ0
dW5nICAgICB8ICBCaW4gMjEwOCAtPiAyMDk0IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BbWVyaWNhL1BhcmFtYXJpYm8gfCAgQmluIDI5NiAtPiAyNjIgYnl0ZXMKIC4uLi9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvUGhvZW5peCAgICB8ICBCaW4gMzUzIC0+IDMyOCBi
eXRlcwogLi4uL3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvUG9ydC1hdS1QcmluY2UgIHwgIEJp
biAxNDU1IC0+IDE0MzQgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1BvcnRf
b2ZfU3BhaW4gICB8ICBCaW4gMTcwIC0+IDE0OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQW1lcmljYS9Qb3J0b19BY3JlIHwgIEJpbiA2NjIgLT4gNjI4IGJ5dGVzCiAuLi4vdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9Qb3J0b19WZWxobyAgICAgfCAgQmluIDYwMiAtPiA1NzYg
Ynl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1B1ZXJ0b19SaWNvICAgICB8ICBC
aW4gMjU1IC0+IDI0NiBieXRlcwogLi4uL3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvUHVudGFf
QXJlbmFzICAgIHwgIEJpbiAxOTExIC0+IDE5MDIgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5m
by9BbWVyaWNhL1JhaW55X1JpdmVyICAgICB8ICBCaW4gMjEzMSAtPiAyMTIyIGJ5dGVzCiAuLi4v
dGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9SYW5raW5fSW5sZXQgICAgfCAgQmluIDE5MzAgLT4g
MTg5MiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9SZWNpZmUgICAg
IHwgIEJpbiA3NDIgLT4gNzE2IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVy
aWNhL1JlZ2luYSAgICAgfCAgQmluIDk5NCAtPiA5ODAgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FtZXJpY2EvUmVzb2x1dGUgICB8ICBCaW4gMTkzMCAtPiAxODkyIGJ5dGVzCiAu
Li4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1Jpb19CcmFuY28gfCAgQmluIDY2MiAt
PiA2MjggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvUm9zYXJpbyAg
ICB8ICBCaW4gMTEwOSAtPiAxMDc2IGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9TYW50YV9Jc2FiZWwgICAgfCAgQmluIDIzNTYgLT4gMjM0MiBieXRlcwogLi4uL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9TYW50YXJlbSAgIHwgIEJpbiA2MzIgLT4gNjAyIGJ5dGVz
CiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1NhbnRpYWdvICAgfCAgQmluIDI1
MzggLT4gMjUyOSBieXRlcwogLi4uL3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU2FudG9fRG9t
aW5nbyAgIHwgIEJpbiA0OTEgLT4gNDU4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5m
by9BbWVyaWNhL1Nhb19QYXVsbyAgfCAgQmluIDIwMTYgLT4gMTQ0NCBieXRlcwogLi4uL3Rlc3Rk
YXRhL3pvbmVpbmZvL0FtZXJpY2EvU2NvcmVzYnlzdW5kICAgIHwgIEJpbiAxOTMwIC0+IDE5MTYg
Ynl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU2hpcHJvY2sgICB8ICBC
aW4gMjQ1MyAtPiAyNDQ0IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNh
L1NpdGthICAgICAgfCAgQmluIDIzNTAgLT4gMjMyOSBieXRlcwogLi4uL3Rlc3RkYXRhL3pvbmVp
bmZvL0FtZXJpY2EvU3RfQmFydGhlbGVteSAgIHwgIEJpbiAxNzAgLT4gMTQ4IGJ5dGVzCiAuLi4v
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1N0X0pvaG5zICAgfCAgQmluIDM2NjQgLT4g
MzY1NSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TdF9LaXR0cyAg
IHwgIEJpbiAxNzAgLT4gMTQ4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVy
aWNhL1N0X0x1Y2lhICAgfCAgQmluIDE3MCAtPiAxNDggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FtZXJpY2EvU3RfVGhvbWFzICB8ICBCaW4gMTcwIC0+IDE0OCBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TdF9WaW5jZW50IHwgIEJpbiAxNzAgLT4g
MTQ4IGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Td2lmdF9DdXJyZW50ICAg
fCAgQmluIDU3NCAtPiA1NjAgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1Rl
Z3VjaWdhbHBhICAgICB8ICBCaW4gMjc4IC0+IDI1MiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQW1lcmljYS9UaHVsZSAgICAgIHwgIEJpbiAxNTI4IC0+IDE1MDIgYnl0ZXMKIC4u
Li90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1RodW5kZXJfQmF5ICAgICB8ICBCaW4gMjIxMSAt
PiAyMjAyIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1RpanVhbmEg
ICAgfCAgQmluIDIzNTYgLT4gMjM0MiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QW1lcmljYS9Ub3JvbnRvICAgIHwgIEJpbiAzNTAzIC0+IDM0OTQgYnl0ZXMKIC4uLi9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvVG9ydG9sYSAgICB8ICBCaW4gMTcwIC0+IDE0OCBieXRl
cwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9WYW5jb3V2ZXIgIHwgIEJpbiAy
OTAxIC0+IDI4OTIgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvVmly
Z2luICAgICB8ICBCaW4gMTcwIC0+IDE0OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW1lcmljYS9XaGl0ZWhvcnNlIHwgIEJpbiAyMDkzIC0+IDIwODQgYnl0ZXMKIC4uLi9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvV2lubmlwZWcgICB8ICBCaW4gMjg5MSAtPiAyODY4
IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1lha3V0YXQgICAgfCAg
QmluIDIzMTQgLT4gMjMwNSBieXRlcwogLi4uL3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvWWVs
bG93a25pZmUgICAgIHwgIEJpbiAxOTgwIC0+IDE5NjYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FudGFyY3RpY2EvQ2FzZXkgICB8ICBCaW4gMzExIC0+IDI5NyBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW50YXJjdGljYS9EYXZpcyAgIHwgIEJpbiAzMTEgLT4g
Mjk3IGJ5dGVzCiAuLi4vem9uZWluZm8vQW50YXJjdGljYS9EdW1vbnREVXJ2aWxsZSAgICAgICAg
fCAgQmluIDIxNiAtPiAxOTQgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9BbnRhcmN0aWNh
L01hY3F1YXJpZSAgICB8ICBCaW4gMTU0MyAtPiAxNTIwIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BbnRhcmN0aWNhL01hd3NvbiAgfCAgQmluIDIyNSAtPiAxOTkgYnl0ZXMKIC4u
Li9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FudGFyY3RpY2EvTWNNdXJkbyB8ICBCaW4gMjQ2MCAt
PiAyNDM3IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbnRhcmN0aWNhL1BhbG1l
ciAgfCAgQmluIDE0MzIgLT4gMTQxOCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QW50YXJjdGljYS9Sb3RoZXJhIHwgIEJpbiAxODYgLT4gMTY0IGJ5dGVzCiAuLi4vdGVzdGRhdGEv
em9uZWluZm8vQW50YXJjdGljYS9Tb3V0aF9Qb2xlICAgfCAgQmluIDI0NjAgLT4gMjQzNyBieXRl
cwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW50YXJjdGljYS9TeW93YSAgIHwgIEJpbiAx
ODcgLT4gMTY1IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbnRhcmN0aWNhL1Ry
b2xsICAgfCAgQmluIDExNzYgLT4gMTE2MiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW50YXJjdGljYS9Wb3N0b2sgIHwgIEJpbiAxODcgLT4gMTY1IGJ5dGVzCiAuLi4vdGVzdGRh
dGEvem9uZWluZm8vQXJjdGljL0xvbmd5ZWFyYnllbiAgICAgfCAgQmluIDIyNTEgLT4gMjIyOCBi
eXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9BZGVuIHwgIEJp
biAxODcgLT4gMTY1IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0FsbWF0
eSAgICAgICAgfCAgQmluIDEwMzEgLT4gOTk3IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9Bc2lhL0FtbWFuICAgICAgICAgfCAgQmluIDE4NzcgLT4gMTg1MyBieXRlcwogLi4uL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9BbmFkeXIgICAgICAgIHwgIEJpbiAxMjIyIC0+IDEx
ODggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQXF0YXUgICAgICAgICB8
ICBCaW4gMTAxNyAtPiA5ODMgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEv
QXF0b2JlICAgICAgICB8ICBCaW4gMTA0NyAtPiAxMDExIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0
YS96b25laW5mby9Bc2lhL0FzaGdhYmF0ICAgICAgfCAgQmluIDY1MSAtPiA2MTkgYnl0ZXMKIC4u
Li9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQXNoa2hhYmFkICAgICB8ICBCaW4gNjUxIC0+
IDYxOSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9BdHlyYXUgICAgICAg
IHwgIEJpbiAxMDI1IC0+IDk5MSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNp
YS9CYWdoZGFkICAgICAgIHwgIEJpbiAxMDA0IC0+IDk4MyBieXRlcwogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQXNpYS9CYWhyYWluICAgICAgIHwgIEJpbiAyMjUgLT4gMTk5IGJ5dGVzCiAu
Li4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0Jha3UgfCAgQmluIDEyNjkg
LT4gMTIyNyBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9CYW5na29rICAg
ICAgIHwgIEJpbiAyMjAgLT4gMTk5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
c2lhL0Jhcm5hdWwgICAgICAgfCAgQmluIDEyNTUgLT4gMTIyMSBieXRlcwogLi4uL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9CZWlydXQgICAgICAgIHwgIEJpbiAyMTc1IC0+IDIxNTQgYnl0
ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQmlzaGtlayAgICAgICB8ICBCaW4g
MTA0NSAtPiA5ODMgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQnJ1bmVp
ICAgICAgICB8ICBCaW4gMjI5IC0+IDIwMyBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQXNpYS9DYWxjdXR0YSAgICAgIHwgIEJpbiAzMTIgLT4gMjg1IGJ5dGVzCiAuLi4vY2N0ei90
ZXN0ZGF0YS96b25laW5mby9Bc2lhL0NoaXRhICAgICAgICAgfCAgQmluIDEyNTcgLT4gMTIyMSBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9DaG9pYmFsc2FuICAgIHwgIEJp
biA5OTEgLT4gOTQ5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0Nob25n
cWluZyAgICAgfCAgQmluIDQxNCAtPiA1MzMgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FzaWEvQ2h1bmdraW5nICAgICB8ICBCaW4gNDE0IC0+IDUzMyBieXRlcwogLi4uL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQXNpYS9Db2xvbWJvICAgICAgIHwgIEJpbiA0MTMgLT4gMzcyIGJ5
dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0RhY2NhICAgICAgICAgfCAgQmlu
IDM3MCAtPiAzMzcgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvRGFtYXNj
dXMgICAgICB8ICBCaW4gMjMyMCAtPiAyMjk0IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9Bc2lhL0RoYWthICAgICAgICAgfCAgQmluIDM3MCAtPiAzMzcgYnl0ZXMKIC4uLi9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvRGlsaSB8ICBCaW4gMjUzIC0+IDIyNyBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9EdWJhaSAgICAgICAgIHwgIEJp
biAxODcgLT4gMTY1IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0R1c2hh
bmJlICAgICAgfCAgQmluIDYyMSAtPiA1OTEgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FzaWEvRmFtYWd1c3RhICAgICB8ICBCaW4gMjA0MiAtPiAyMDI4IGJ5dGVzCiAuLi4vaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0dhemEgfCAgQmluIDIyOTUgLT4gMjMx
NiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9IYXJiaW4gICAgICAgIHwg
IEJpbiA0MTQgLT4gNTMzIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0hl
YnJvbiAgICAgICAgfCAgQmluIDIzMjMgLT4gMjM0NCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQXNpYS9Ib19DaGlfTWluaCAgIHwgIEJpbiAzODkgLT4gMzUxIGJ5dGVzCiAuLi4v
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0hvbmdfS29uZyAgICAgfCAgQmluIDExODkgLT4g
MTE5MyBieXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9Ib3Zk
IHwgIEJpbiA5MjEgLT4gODkxIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lh
L0lya3V0c2sgICAgICAgfCAgQmluIDEyNzYgLT4gMTI0MyBieXRlcwogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQXNpYS9Jc3RhbmJ1bCAgICAgIHwgIEJpbiAyMTY2IC0+IDIxNDMgYnl0ZXMK
IC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvSmFrYXJ0YSAgICAgICB8ICBCaW4gMzky
IC0+IDM1NSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9KYXlhcHVyYSAg
ICAgIHwgIEJpbiAyNTEgLT4gMjIxIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
c2lhL0plcnVzYWxlbSAgICAgfCAgQmluIDIyNjUgLT4gMjI4OCBieXRlcwogLi4uL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9LYWJ1bCAgICAgICAgIHwgIEJpbiAyMjkgLT4gMjA4IGJ5dGVz
CiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0thbWNoYXRrYSAgICAgfCAgQmluIDEx
OTggLT4gMTE2NiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9LYXJhY2hp
ICAgICAgIHwgIEJpbiA0MTcgLT4gMzc5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5m
by9Bc2lhL0thc2hnYXIgICAgICAgfCAgQmluIDE4NyAtPiAxNjUgYnl0ZXMKIC4uLi9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0FzaWEvS2F0aG1hbmR1ICAgICB8ICBCaW4gMjM4IC0+IDIxMiBieXRl
cwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9LYXRtYW5kdSAgICAgIHwgIEJpbiAy
MzggLT4gMjEyIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0toYW5keWdh
ICAgICAgfCAgQmluIDEzMTEgLT4gMTI3MSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQXNpYS9Lb2xrYXRhICAgICAgIHwgIEJpbiAzMTIgLT4gMjg1IGJ5dGVzCiAuLi4vY2N0ei90
ZXN0ZGF0YS96b25laW5mby9Bc2lhL0tyYXNub3lhcnNrICAgfCAgQmluIDEyNDMgLT4gMTIwNyBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9LdWFsYV9MdW1wdXIgIHwgIEJp
biA0MjQgLT4gMzgzIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0t1Y2hp
bmcgICAgICAgfCAgQmluIDUyMSAtPiA0ODMgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FzaWEvS3V3YWl0ICAgICAgICB8ICBCaW4gMTg3IC0+IDE2NSBieXRlcwogLi4uL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQXNpYS9NYWNhbyAgICAgICAgIHwgIEJpbiA3NzEgLT4gMTIyNyBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9NYWNhdSAgICAgICAgIHwgIEJp
biA3NzEgLT4gMTIyNyBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9NYWdh
ZGFuICAgICAgIHwgIEJpbiAxMjU4IC0+IDEyMjIgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FzaWEvTWFrYXNzYXIgICAgICB8ICBCaW4gMjg4IC0+IDI1NCBieXRlcwogLi4uL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9NYW5pbGEgICAgICAgIHwgIEJpbiAzNjcgLT4gMzI4
IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL011c2NhdCAgICAgICAgfCAg
QmluIDE4NyAtPiAxNjUgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvTmlj
b3NpYSAgICAgICB8ICBCaW4gMjAxNiAtPiAyMDAyIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96
b25laW5mby9Bc2lhL05vdm9rdXpuZXRzayAgfCAgQmluIDExOTcgLT4gMTE2NSBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9Ob3Zvc2liaXJzayAgIHwgIEJpbiAxMjU1IC0+
IDEyMjEgYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvT21z
ayB8ICBCaW4gMTI0MyAtPiAxMjA3IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9Bc2lhL09yYWwgfCAgQmluIDEwMzkgLT4gMTAwNSBieXRlcwogLi4uL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9QaG5vbV9QZW5oICAgIHwgIEJpbiAyMjAgLT4gMTk5IGJ5dGVz
CiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1BvbnRpYW5hayAgICAgfCAgQmluIDM5
NSAtPiAzNTMgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvUHlvbmd5YW5n
ICAgICB8ICBCaW4gMjY3IC0+IDIzNyBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QXNpYS9RYXRhciAgICAgICAgIHwgIEJpbiAyMjUgLT4gMTk5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0
ZGF0YS96b25laW5mby9Bc2lhL1Fvc3RhbmF5ICAgICAgfCAgQmluIDAgLT4gMTAxMSBieXRlcwog
Li4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9ReXp5bG9yZGEgICAgIHwgIEJpbiAxMDQ3
IC0+IDEwMjUgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvUmFuZ29vbiAg
ICAgICB8ICBCaW4gMjk3IC0+IDI2OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QXNpYS9SaXlhZGggICAgICAgIHwgIEJpbiAxODcgLT4gMTY1IGJ5dGVzCiAuLi4vY2N0ei90ZXN0
ZGF0YS96b25laW5mby9Bc2lhL1NhaWdvbiAgICAgICAgfCAgQmluIDM4OSAtPiAzNTEgYnl0ZXMK
IC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvU2FraGFsaW4gICAgICB8ICBCaW4gMTIz
NCAtPiAxMjAyIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1NhbWFya2Fu
ZCAgICAgfCAgQmluIDYxOSAtPiA1NzcgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FzaWEvU2VvdWwgICAgICAgICB8ICBCaW4gNTMxIC0+IDQ5MyBieXRlcwogLi4uL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9TaGFuZ2hhaSAgICAgIHwgIEJpbiA0MTQgLT4gNTMzIGJ5dGVz
CiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1NpbmdhcG9yZSAgICAgfCAgQmluIDQy
NCAtPiAzODMgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvU3JlZG5la29s
eW1zayB8ICBCaW4gMTI0NCAtPiAxMjA4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5m
by9Bc2lhL1RhaXBlaSAgICAgICAgfCAgQmluIDc5MCAtPiA3NjEgYnl0ZXMKIC4uLi9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0FzaWEvVGFzaGtlbnQgICAgICB8ICBCaW4gNjM1IC0+IDU5MSBieXRl
cwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9UYmlsaXNpICAgICAgIHwgIEJpbiAx
MDgwIC0+IDEwMzUgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvVGVocmFu
ICAgICAgICB8ICBCaW4gMTcxOCAtPiAyNTgyIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9Bc2lhL1RlbF9Bdml2ICAgICAgfCAgQmluIDIyNjUgLT4gMjI4OCBieXRlcwogLi4uL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9UaGltYnUgICAgICAgIHwgIEJpbiAyMjkgLT4gMjAz
IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1RoaW1waHUgICAgICAgfCAg
QmluIDIyOSAtPiAyMDMgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvVG9r
eW8gICAgICAgICB8ICBCaW4gMzE4IC0+IDMwOSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQXNpYS9Ub21zayAgICAgICAgIHwgIEJpbiAxMjU1IC0+IDEyMjEgYnl0ZXMKIC4uLi9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvVWp1bmdfUGFuZGFuZyB8ICBCaW4gMjg4IC0+IDI1
NCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9VbGFhbmJhYXRhciAgIHwg
IEJpbiA5MjEgLT4gODkxIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1Vs
YW5fQmF0b3IgICAgfCAgQmluIDkyMSAtPiA4OTEgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FzaWEvVXJ1bXFpICAgICAgICB8ICBCaW4gMTg3IC0+IDE2NSBieXRlcwogLi4uL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9Vc3QtTmVyYSAgICAgIHwgIEJpbiAxMjkwIC0+IDEy
NTIgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvVmllbnRpYW5lICAgICB8
ICBCaW4gMjIwIC0+IDE5OSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9W
bGFkaXZvc3RvayAgIHwgIEJpbiAxMjQ0IC0+IDEyMDggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FzaWEvWWFrdXRzayAgICAgICB8ICBCaW4gMTI0MyAtPiAxMjA3IGJ5dGVzCiAu
Li4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1lhbmdvbiAgICAgICAgfCAgQmluIDI5NyAt
PiAyNjggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvWWVrYXRlcmluYnVy
ZyB8ICBCaW4gMTI4MSAtPiAxMjQzIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
c2lhL1llcmV2YW4gICAgICAgfCAgQmluIDEyMTMgLT4gMTE1MSBieXRlcwogLi4uL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXRsYW50aWMvQXpvcmVzICAgIHwgIEJpbiAzNDkzIC0+IDM0ODQgYnl0
ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F0bGFudGljL0Jlcm11ZGEgICB8ICBCaW4g
MjAwNCAtPiAxOTc4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdGxhbnRpYy9D
YW5hcnkgICAgfCAgQmluIDE5MTEgLT4gMTg5NyBieXRlcwogLi4uL3Rlc3RkYXRhL3pvbmVpbmZv
L0F0bGFudGljL0NhcGVfVmVyZGUgICAgIHwgIEJpbiAyODQgLT4gMjcwIGJ5dGVzCiAuLi4vY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BdGxhbnRpYy9GYWVyb2UgICAgfCAgQmluIDE4MjkgLT4gMTgx
NSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXRsYW50aWMvRmFyb2UgICAgIHwg
IEJpbiAxODI5IC0+IDE4MTUgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F0bGFu
dGljL0phbl9NYXllbiB8ICBCaW4gMjI1MSAtPiAyMjI4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BdGxhbnRpYy9NYWRlaXJhICAgfCAgQmluIDM0ODQgLT4gMzQ3NSBieXRlcwog
Li4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXRsYW50aWMvUmV5a2phdmlrIHwgIEJpbiAxMTg4
IC0+IDExNjIgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9BdGxhbnRpYy9Tb3V0aF9HZW9y
Z2lhICB8ICBCaW4gMTgxIC0+IDE2NCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QXRsYW50aWMvU3RfSGVsZW5hIHwgIEJpbiAxNzAgLT4gMTQ4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BdGxhbnRpYy9TdGFubGV5ICAgfCAgQmluIDEyNTEgLT4gMTIxNCBieXRl
cwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL0FDVCAgICAgIHwgIEJpbiAy
MjIzIC0+IDIyMDQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9B
ZGVsYWlkZSB8ICBCaW4gMjIzOCAtPiAyMjIyIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BdXN0cmFsaWEvQnJpc2JhbmUgfCAgQmluIDQ1MiAtPiA0MzMgYnl0ZXMKIC4uLi90ZXN0
ZGF0YS96b25laW5mby9BdXN0cmFsaWEvQnJva2VuX0hpbGwgICB8ICBCaW4gMjI3NCAtPiAyMjQz
IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvQ2FuYmVycmEgfCAg
QmluIDIyMjMgLT4gMjIwNCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJh
bGlhL0N1cnJpZSAgIHwgIEJpbiAyMjIzIC0+IDIyMDQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0F1c3RyYWxpYS9EYXJ3aW4gICB8ICBCaW4gMzIzIC0+IDMwNCBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL0V1Y2xhICAgIHwgIEJpbiA1MDMgLT4g
NDg0IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvSG9iYXJ0ICAg
fCAgQmluIDIzMzUgLT4gMjMxNiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVz
dHJhbGlhL0xISSAgICAgIHwgIEJpbiAxODg5IC0+IDE4NjAgYnl0ZXMKIC4uLi9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9MaW5kZW1hbiB8ICBCaW4gNTIyIC0+IDQ4OSBieXRlcwog
Li4uL3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9Mb3JkX0hvd2UgICAgIHwgIEJpbiAxODg5
IC0+IDE4NjAgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvTWVsYm91cm5l
ICAgICB8ICBCaW4gMjIyMyAtPiAyMjA0IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5m
by9BdXN0cmFsaWEvTlNXICAgICAgfCAgQmluIDIyMjMgLT4gMjIwNCBieXRlcwogLi4uL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL05vcnRoICAgIHwgIEJpbiAzMjMgLT4gMzA0IGJ5
dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvUGVydGggICAgfCAgQmlu
IDQ3OSAtPiA0NjAgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvUXVlZW5z
bGFuZCAgICB8ICBCaW4gNDUyIC0+IDQzMyBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQXVzdHJhbGlhL1NvdXRoICAgIHwgIEJpbiAyMjM4IC0+IDIyMjIgYnl0ZXMKIC4uLi9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgICB8ICBCaW4gMjIyMyAtPiAyMjA0
IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvVGFzbWFuaWEgfCAg
QmluIDIzMzUgLT4gMjMxNiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJh
bGlhL1ZpY3RvcmlhIHwgIEJpbiAyMjIzIC0+IDIyMDQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0F1c3RyYWxpYS9XZXN0ICAgICB8ICBCaW4gNDc5IC0+IDQ2MCBieXRlcwogLi4u
L3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9ZYW5jb3dpbm5hICAgIHwgIEJpbiAyMjc0IC0+
IDIyNDMgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0JyYXppbC9BY3JlICAgICAg
ICB8ICBCaW4gNjYyIC0+IDYyOCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQnJh
emlsL0RlTm9yb25oYSAgIHwgIEJpbiA3NDIgLT4gNzE2IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0
YS96b25laW5mby9CcmF6aWwvRWFzdCAgICAgICAgfCAgQmluIDIwMTYgLT4gMTQ0NCBieXRlcwog
Li4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQnJhemlsL1dlc3QgICAgICAgIHwgIEJpbiA2MzAg
LT4gNjA0IGJ5dGVzCiAuLi4vdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0NF
VCAgfCAgQmluIDIxMDIgLT4gMjA5NCBieXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQ1NUNkNEVCAgIHwgIEJpbiAyMjk0IC0+IDIzMTAgYnl0ZXMKIC4uLi9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0NhbmFkYS9BdGxhbnRpYyAgICB8ICBCaW4gMzQzOCAtPiAzNDI0IGJ5
dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9DYW5hZGEvQ2VudHJhbCAgICAgfCAgQmlu
IDI4OTEgLT4gMjg2OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQ2FuYWRhL0Vh
c3Rlcm4gICAgIHwgIEJpbiAzNTAzIC0+IDM0OTQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0NhbmFkYS9Nb3VudGFpbiAgICB8ICBCaW4gMjQwMiAtPiAyMzg4IGJ5dGVzCiAuLi4v
dGVzdGRhdGEvem9uZWluZm8vQ2FuYWRhL05ld2ZvdW5kbGFuZCAgICAgfCAgQmluIDM2NjQgLT4g
MzY1NSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQ2FuYWRhL1BhY2lmaWMgICAg
IHwgIEJpbiAyOTAxIC0+IDI4OTIgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9DYW5hZGEv
U2Fza2F0Y2hld2FuICAgICB8ICBCaW4gOTk0IC0+IDk4MCBieXRlcwogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQ2FuYWRhL1l1a29uICAgICAgIHwgIEJpbiAyMDkzIC0+IDIwODQgYnl0ZXMK
IC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0NoaWxlL0NvbnRpbmVudGFsICB8ICBCaW4gMjUz
OCAtPiAyNTI5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9DaGlsZS9FYXN0ZXJJ
c2xhbmQgfCAgQmluIDIyNDIgLT4gMjIzMyBieXRlcwogLi4uL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9DdWJhIHwgIEJpbiAyNDM3IC0+IDI0MTYgYnl0ZXMKIC4uLi90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRUVUICB8ICBCaW4gMTg3NiAtPiAxOTA4
IGJ5dGVzCiAuLi4vdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0VTVCAgfCAg
QmluIDEyNyAtPiAxMTQgYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0VTVDVFRFQgICB8ICBCaW4gMjI5NCAtPiAyMzEwIGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9FZ3lwdCAgICAgfCAgQmluIDE5NzIgLT4gMTk1NSBieXRlcwogLi4u
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FaXJlIHwgIEJpbiAzNTMxIC0+
IDM0OTIgYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQg
ICB8ICBCaW4gMTI3IC0+IDExNCBieXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vRXRjL0dNVCswIHwgIEJpbiAxMjcgLT4gMTE0IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01UKzEgfCAgQmluIDE0OCAtPiAxMTYgYnl0ZXMKIC4u
Li9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQrMTAgICAgICAgICB8ICBCaW4gMTQ5IC0+
IDExNyBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVCsxMSAgICAgICAg
IHwgIEJpbiAxNDkgLT4gMTE3IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMv
R01UKzEyICAgICAgICAgfCAgQmluIDE0OSAtPiAxMTcgYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQrMiB8ICBCaW4gMTQ4IC0+IDExNiBieXRlcwogLi4u
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVCszIHwgIEJpbiAxNDggLT4g
MTE2IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01UKzQg
fCAgQmluIDE0OCAtPiAxMTYgYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0V0Yy9HTVQrNSB8ICBCaW4gMTQ4IC0+IDExNiBieXRlcwogLi4uL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVCs2IHwgIEJpbiAxNDggLT4gMTE2IGJ5dGVzCiAuLi4v
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01UKzcgfCAgQmluIDE0OCAtPiAx
MTYgYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQrOCB8
ICBCaW4gMTQ4IC0+IDExNiBieXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vRXRjL0dNVCs5IHwgIEJpbiAxNDggLT4gMTE2IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9FdGMvR01ULTAgfCAgQmluIDEyNyAtPiAxMTQgYnl0ZXMKIC4uLi9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQtMSB8ICBCaW4gMTQ5IC0+IDEx
NyBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVC0xMCAgICAgICAgIHwg
IEJpbiAxNTAgLT4gMTE4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01U
LTExICAgICAgICAgfCAgQmluIDE1MCAtPiAxMTggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0V0Yy9HTVQtMTIgICAgICAgICB8ICBCaW4gMTUwIC0+IDExOCBieXRlcwogLi4uL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVC0xMyAgICAgICAgIHwgIEJpbiAxNTAgLT4gMTE4
IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01ULTE0ICAgICAgICAgfCAg
QmluIDE1MCAtPiAxMTggYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0V0Yy9HTVQtMiB8ICBCaW4gMTQ5IC0+IDExNyBieXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vRXRjL0dNVC0zIHwgIEJpbiAxNDkgLT4gMTE3IGJ5dGVzCiAuLi4vaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01ULTQgfCAgQmluIDE0OSAtPiAxMTcg
Ynl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQtNSB8ICBC
aW4gMTQ5IC0+IDExNyBieXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
RXRjL0dNVC02IHwgIEJpbiAxNDkgLT4gMTE3IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9FdGMvR01ULTcgfCAgQmluIDE0OSAtPiAxMTcgYnl0ZXMKIC4uLi9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQtOCB8ICBCaW4gMTQ5IC0+IDExNyBi
eXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVC05IHwgIEJp
biAxNDkgLT4gMTE3IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9F
dGMvR01UMCAgfCAgQmluIDEyNyAtPiAxMTQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0V0Yy9HcmVlbndpY2ggICAgICB8ICBCaW4gMTI3IC0+IDExNCBieXRlcwogLi4uL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL1VDVCAgIHwgIEJpbiAxMjcgLT4gMTE0IGJ5
dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvVVRDICAgfCAgQmlu
IDEyNyAtPiAxMTQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9Vbml2ZXJz
YWwgICAgICB8ICBCaW4gMTI3IC0+IDExNCBieXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vRXRjL1p1bHUgIHwgIEJpbiAxMjcgLT4gMTE0IGJ5dGVzCiAuLi4vY2N0ei90
ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQW1zdGVyZGFtICAgfCAgQmluIDI5NDkgLT4gMjkxMCBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0FuZG9ycmEgICAgIHwgIEJp
biAxNzUxIC0+IDE3NDIgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9B
c3RyYWtoYW4gICB8ICBCaW4gMTE5NyAtPiAxMTY1IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96
b25laW5mby9FdXJvcGUvQXRoZW5zICAgICAgfCAgQmluIDIyNzEgLT4gMjI2MiBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0JlbGZhc3QgICAgIHwgIEJpbiAzNjg3IC0+
IDM2NDggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9CZWxncmFkZSAg
ICB8ICBCaW4gMTk1NyAtPiAxOTIwIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9F
dXJvcGUvQmVybGluICAgICAgfCAgQmluIDIzMzUgLT4gMjI5OCBieXRlcwogLi4uL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vRXVyb3BlL0JyYXRpc2xhdmEgIHwgIEJpbiAyMzM4IC0+IDIzMDEgYnl0
ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9CcnVzc2VscyAgICB8ICBCaW4g
Mjk3MCAtPiAyOTMzIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQnVj
aGFyZXN0ICAgfCAgQmluIDIyMjEgLT4gMjE4NCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vRXVyb3BlL0J1ZGFwZXN0ICAgIHwgIEJpbiAyNDA1IC0+IDIzNjggYnl0ZXMKIC4uLi9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9CdXNpbmdlbiAgICB8ICBCaW4gMTkxOCAtPiAx
OTA5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQ2hpc2luYXUgICAg
fCAgQmluIDI0NDUgLT4gMjM5MCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVy
b3BlL0NvcGVuaGFnZW4gIHwgIEJpbiAyMTYwIC0+IDIxMzcgYnl0ZXMKIC4uLi9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0V1cm9wZS9EdWJsaW4gICAgICB8ICBCaW4gMzUzMSAtPiAzNDkyIGJ5dGVz
CiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvR2licmFsdGFyICAgfCAgQmluIDMw
NjEgLT4gMzA1MiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0d1ZXJu
c2V5ICAgIHwgIEJpbiAzNjg3IC0+IDM2NDggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0V1cm9wZS9IZWxzaW5raSAgICB8ICBCaW4gMTkwOSAtPiAxOTAwIGJ5dGVzCiAuLi4vY2N0
ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvSXNsZV9vZl9NYW4gfCAgQmluIDM2ODcgLT4gMzY0
OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0lzdGFuYnVsICAgIHwg
IEJpbiAyMTY2IC0+IDIxNDMgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9w
ZS9KZXJzZXkgICAgICB8ICBCaW4gMzY4NyAtPiAzNjQ4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0
YS96b25laW5mby9FdXJvcGUvS2FsaW5pbmdyYWQgfCAgQmluIDE1MTggLT4gMTQ3OSBieXRlcwog
Li4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0tpZXYgICAgICAgIHwgIEJpbiAyMDk3
IC0+IDIwODggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9LaXJvdiAg
ICAgICB8ICBCaW4gMTE2NyAtPiAxMTUzIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5m
by9FdXJvcGUvTGlzYm9uICAgICAgfCAgQmluIDM0NjkgLT4gMzQ2OSBieXRlcwogLi4uL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0xqdWJsamFuYSAgIHwgIEJpbiAxOTU3IC0+IDE5MjAg
Ynl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Mb25kb24gICAgICB8ICBC
aW4gMzY4NyAtPiAzNjQ4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUv
THV4ZW1ib3VyZyAgfCAgQmluIDI5NzQgLT4gMjk0NiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vRXVyb3BlL01hZHJpZCAgICAgIHwgIEJpbiAyNjM3IC0+IDI2MTQgYnl0ZXMKIC4u
Li9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9NYWx0YSAgICAgICB8ICBCaW4gMjYyOSAt
PiAyNjIwIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvTWFyaWVoYW1u
ICAgfCAgQmluIDE5MDkgLT4gMTkwMCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
RXVyb3BlL01pbnNrICAgICAgIHwgIEJpbiAxMzcwIC0+IDEzMjEgYnl0ZXMKIC4uLi9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Nb25hY28gICAgICB8ICBCaW4gMjk1MyAtPiAyOTQ0IGJ5
dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvTW9zY293ICAgICAgfCAgQmlu
IDE1NDQgLT4gMTUzNSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL05p
Y29zaWEgICAgIHwgIEJpbiAyMDE2IC0+IDIwMDIgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0V1cm9wZS9Pc2xvICAgICAgICB8ICBCaW4gMjI1MSAtPiAyMjI4IGJ5dGVzCiAuLi4v
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvUGFyaXMgICAgICAgfCAgQmluIDI5NzEgLT4g
Mjk2MiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1BvZGdvcmljYSAg
IHwgIEJpbiAxOTU3IC0+IDE5MjAgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1
cm9wZS9QcmFndWUgICAgICB8ICBCaW4gMjMzOCAtPiAyMzAxIGJ5dGVzCiAuLi4vY2N0ei90ZXN0
ZGF0YS96b25laW5mby9FdXJvcGUvUmlnYSAgICAgICAgfCAgQmluIDIyMzUgLT4gMjE5OCBieXRl
cwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1JvbWUgICAgICAgIHwgIEJpbiAy
NjkyIC0+IDI2NDEgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9TYW1h
cmEgICAgICB8ICBCaW4gMTI1MyAtPiAxMjE1IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9FdXJvcGUvU2FuX01hcmlubyAgfCAgQmluIDI2OTIgLT4gMjY0MSBieXRlcwogLi4uL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1NhcmFqZXZvICAgIHwgIEJpbiAxOTU3IC0+IDE5
MjAgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9TYXJhdG92ICAgICB8
ICBCaW4gMTE5NyAtPiAxMTgzIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJv
cGUvU2ltZmVyb3BvbCAgfCAgQmluIDE0OTAgLT4gMTQ1MyBieXRlcwogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vRXVyb3BlL1Nrb3BqZSAgICAgIHwgIEJpbiAxOTU3IC0+IDE5MjAgYnl0ZXMK
IC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Tb2ZpYSAgICAgICB8ICBCaW4gMjEz
MCAtPiAyMDc3IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvU3RvY2to
b2xtICAgfCAgQmluIDE5MTggLT4gMTkwOSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vRXVyb3BlL1RhbGxpbm4gICAgIHwgIEJpbiAyMTg3IC0+IDIxNDggYnl0ZXMKIC4uLi9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9UaXJhbmUgICAgICB8ICBCaW4gMjA5OCAtPiAyMDg0
IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvVGlyYXNwb2wgICAgfCAg
QmluIDI0NDUgLT4gMjM5MCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3Bl
L1VseWFub3ZzayAgIHwgIEJpbiAxMjgxIC0+IDEyNjcgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0V1cm9wZS9Vemhnb3JvZCAgICB8ICBCaW4gMjEwMyAtPiAyMDUwIGJ5dGVzCiAu
Li4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvVmFkdXogICAgICAgfCAgQmluIDE5MTgg
LT4gMTkwOSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1ZhdGljYW4g
ICAgIHwgIEJpbiAyNjkyIC0+IDI2NDEgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0V1cm9wZS9WaWVubmEgICAgICB8ICBCaW4gMjIzNyAtPiAyMjAwIGJ5dGVzCiAuLi4vY2N0ei90
ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvVmlsbml1cyAgICAgfCAgQmluIDIxOTkgLT4gMjE2MiBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1ZvbGdvZ3JhZCAgIHwgIEJp
biAxMTY3IC0+IDExNjUgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9X
YXJzYXcgICAgICB8ICBCaW4gMjcwNSAtPiAyNjU0IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96
b25laW5mby9FdXJvcGUvWmFncmViICAgICAgfCAgQmluIDE5NTcgLT4gMTkyMCBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1phcG9yb3poeWUgIHwgIEJpbiAyMTE1IC0+
IDIxMDYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9adXJpY2ggICAg
ICB8ICBCaW4gMTkxOCAtPiAxOTA5IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9GYWN0b3J5ICAgfCAgQmluIDE0OCAtPiAxMTYgYnl0ZXMKIC4uLi90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vR0IgICB8ICBCaW4gMzY4NyAtPiAzNjQ4IGJ5dGVz
CiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9HQi1FaXJlICAgfCAgQmluIDM2
ODcgLT4gMzY0OCBieXRlcwogLi4uL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9HTVQgIHwgIEJpbiAxMjcgLT4gMTE0IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9HTVQrMCAgICAgfCAgQmluIDEyNyAtPiAxMTQgYnl0ZXMKIC4uLi9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0dNVC0wICAgICB8ICBCaW4gMTI3IC0+IDExNCBieXRl
cwogLi4uL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9HTVQwIHwgIEJpbiAx
MjcgLT4gMTE0IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9HcmVl
bndpY2ggfCAgQmluIDEyNyAtPiAxMTQgYnl0ZXMKIC4uLi90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vSFNUICB8ICBCaW4gMTI4IC0+IDExNSBieXRlcwogLi4uL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vSG9uZ2tvbmcgIHwgIEJpbiAxMTg5IC0+IDExOTMgYnl0
ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0ljZWxhbmQgICB8ICBCaW4g
MTE4OCAtPiAxMTYyIGJ5dGVzCiAuLi4vdGVzdGRhdGEvem9uZWluZm8vSW5kaWFuL0FudGFuYW5h
cml2byAgICAgfCAgQmluIDI4NSAtPiAyNTEgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0luZGlhbi9DaGFnb3MgICAgICB8ICBCaW4gMjI1IC0+IDE5OSBieXRlcwogLi4uL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vSW5kaWFuL0NocmlzdG1hcyAgIHwgIEJpbiAxODIgLT4gMTY1IGJ5
dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9JbmRpYW4vQ29jb3MgICAgICAgfCAgQmlu
IDE5MSAtPiAxNzQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0luZGlhbi9Db21v
cm8gICAgICB8ICBCaW4gMjg1IC0+IDI1MSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vSW5kaWFuL0tlcmd1ZWxlbiAgIHwgIEJpbiAxODcgLT4gMTY1IGJ5dGVzCiAuLi4vY2N0ei90
ZXN0ZGF0YS96b25laW5mby9JbmRpYW4vTWFoZSAgICAgICAgfCAgQmluIDE4NyAtPiAxNjUgYnl0
ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0luZGlhbi9NYWxkaXZlcyAgICB8ICBCaW4g
MjIwIC0+IDE5OSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vSW5kaWFuL01hdXJp
dGl1cyAgIHwgIEJpbiAyNjcgLT4gMjQxIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5m
by9JbmRpYW4vTWF5b3R0ZSAgICAgfCAgQmluIDI4NSAtPiAyNTEgYnl0ZXMKIC4uLi9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0luZGlhbi9SZXVuaW9uICAgICB8ICBCaW4gMTg3IC0+IDE2NSBieXRl
cwogLi4uL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9JcmFuIHwgIEJpbiAx
NzE4IC0+IDI1ODIgYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0lz
cmFlbCAgICB8ICBCaW4gMjI2NSAtPiAyMjg4IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9KYW1haWNhICAgfCAgQmluIDUwNyAtPiA0ODIgYnl0ZXMKIC4uLi9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0phcGFuICAgICB8ICBCaW4gMzE4IC0+IDMwOSBi
eXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vS3dhamFsZWluIHwgIEJp
biAyNTkgLT4gMzE2IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9M
aWJ5YSAgICAgfCAgQmluIDY1NSAtPiA2MjUgYnl0ZXMKIC4uLi90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vTUVUICB8ICBCaW4gMjEwMiAtPiAyMDk0IGJ5dGVzCiAuLi4vdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL01TVCAgfCAgQmluIDEyNyAtPiAxMTQg
Ynl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL01TVDdNRFQgICB8ICBC
aW4gMjI5NCAtPiAyMzEwIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9NZXhpY28v
QmFqYU5vcnRlICAgfCAgQmluIDIzNTYgLT4gMjM0MiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vTWV4aWNvL0JhamFTdXIgICAgIHwgIEJpbiAxNTY0IC0+IDE1MjYgYnl0ZXMKIC4u
Li9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL01leGljby9HZW5lcmFsICAgICB8ICBCaW4gMTYxOCAt
PiAxNTg0IGJ5dGVzCiAuLi4vdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL05a
ICAgfCAgQmluIDI0NjAgLT4gMjQzNyBieXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vTlotQ0hBVCAgIHwgIEJpbiAyMDg3IC0+IDIwNjggYnl0ZXMKIC4uLi9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL05hdmFqbyAgICB8ICBCaW4gMjQ1MyAtPiAyNDQ0IGJ5
dGVzCiAuLi4vdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BSQyAgfCAgQmlu
IDQxNCAtPiA1MzMgYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BT
VDhQRFQgICB8ICBCaW4gMjI5NCAtPiAyMzEwIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9QYWNpZmljL0FwaWEgICAgICAgfCAgQmluIDExMzQgLT4gMTA5NyBieXRlcwogLi4uL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9BdWNrbGFuZCAgIHwgIEJpbiAyNDYwIC0+IDI0
MzcgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL0JvdWdhaW52aWxsZSAgICB8
ICBCaW4gMjk2IC0+IDI2OCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZp
Yy9DaGF0aGFtICAgIHwgIEJpbiAyMDg3IC0+IDIwNjggYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL1BhY2lmaWMvQ2h1dWsgICAgICB8ICBCaW4gMTgzIC0+IDI2OSBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9FYXN0ZXIgICAgIHwgIEJpbiAyMjQyIC0+
IDIyMzMgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvRWZhdGUgICAg
ICB8ICBCaW4gNDkyIC0+IDQ2NiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFj
aWZpYy9FbmRlcmJ1cnkgIHwgIEJpbiAyNTkgLT4gMjM0IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0
YS96b25laW5mby9QYWNpZmljL0Zha2FvZm8gICAgfCAgQmluIDIyMSAtPiAyMDAgYnl0ZXMKIC4u
Li9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvRmlqaSAgICAgICB8ICBCaW4gMTEwNCAt
PiAxMDc4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL0Z1bmFmdXRp
ICAgfCAgQmluIDE4MyAtPiAxNjYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1Bh
Y2lmaWMvR2FsYXBhZ29zICB8ICBCaW4gMjY4IC0+IDIzOCBieXRlcwogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vUGFjaWZpYy9HYW1iaWVyICAgIHwgIEJpbiAxODYgLT4gMTY0IGJ5dGVzCiAu
Li4vdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9HdWFkYWxjYW5hbCAgICAgfCAgQmluIDE4OCAt
PiAxNjYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvR3VhbSAgICAg
ICB8ICBCaW4gMjI1IC0+IDQ5NCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFj
aWZpYy9Ib25vbHVsdSAgIHwgIEJpbiAyNzYgLT4gMzI5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0
YS96b25laW5mby9QYWNpZmljL0pvaG5zdG9uICAgfCAgQmluIDI3NiAtPiAzMjkgYnl0ZXMKIC4u
Li9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvS2lyaXRpbWF0aSB8ICBCaW4gMjYzIC0+
IDIzOCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9Lb3NyYWUgICAg
IHwgIEJpbiAyNTEgLT4gMzUxIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNp
ZmljL0t3YWphbGVpbiAgfCAgQmluIDI1OSAtPiAzMTYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL1BhY2lmaWMvTWFqdXJvICAgICB8ICBCaW4gMjIxIC0+IDMxMCBieXRlcwogLi4u
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9NYXJxdWVzYXMgIHwgIEJpbiAxOTUgLT4g
MTczIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL01pZHdheSAgICAg
fCAgQmluIDE5NiAtPiAxNzUgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lm
aWMvTmF1cnUgICAgICB8ICBCaW4gMjgyIC0+IDI1MiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vUGFjaWZpYy9OaXVlICAgICAgIHwgIEJpbiAyNjYgLT4gMjQxIGJ5dGVzCiAuLi4v
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL05vcmZvbGsgICAgfCAgQmluIDMyMyAtPiAy
OTQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvTm91bWVhICAgICB8
ICBCaW4gMzI4IC0+IDMwNCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZp
Yy9QYWdvX1BhZ28gIHwgIEJpbiAxOTYgLT4gMTc1IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96
b25laW5mby9QYWNpZmljL1BhbGF1ICAgICAgfCAgQmluIDE4MiAtPiAxODAgYnl0ZXMKIC4uLi9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvUGl0Y2Fpcm4gICB8ICBCaW4gMjIzIC0+IDIw
MiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9Qb2hucGVpICAgIHwg
IEJpbiAxODMgLT4gMzAzIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmlj
L1BvbmFwZSAgICAgfCAgQmluIDE4MyAtPiAzMDMgYnl0ZXMKIC4uLi90ZXN0ZGF0YS96b25laW5m
by9QYWNpZmljL1BvcnRfTW9yZXNieSAgICB8ICBCaW4gMjA2IC0+IDE4NiBieXRlcwogLi4uL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9SYXJvdG9uZ2EgIHwgIEJpbiA2MDIgLT4gNTc3
IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL1NhaXBhbiAgICAgfCAg
QmluIDIyNSAtPiA0OTQgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMv
U2Ftb2EgICAgICB8ICBCaW4gMTk2IC0+IDE3NSBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vUGFjaWZpYy9UYWhpdGkgICAgIHwgIEJpbiAxODcgLT4gMTY1IGJ5dGVzCiAuLi4vY2N0
ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL1RhcmF3YSAgICAgfCAgQmluIDE4MyAtPiAxNjYg
Ynl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvVG9uZ2F0YXB1ICB8ICBC
aW4gMzkzIC0+IDM3MiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9U
cnVrICAgICAgIHwgIEJpbiAxODMgLT4gMjY5IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9QYWNpZmljL1dha2UgICAgICAgfCAgQmluIDE4MyAtPiAxNjYgYnl0ZXMKIC4uLi9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvV2FsbGlzICAgICB8ICBCaW4gMTgzIC0+IDE2NiBi
eXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9ZYXAgICAgICAgIHwgIEJp
biAxODMgLT4gMjY5IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Q
b2xhbmQgICAgfCAgQmluIDI3MDUgLT4gMjY1NCBieXRlcwogLi4uL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vUG9ydHVnYWwgIHwgIEJpbiAzNDY5IC0+IDM0NjkgYnl0ZXMKIC4uLi90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUk9DICB8ICBCaW4gNzkwIC0+IDc2
MSBieXRlcwogLi4uL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9ST0sgIHwg
IEJpbiA1MzEgLT4gNDkzIGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9TaW5nYXBvcmUgfCAgQmluIDQyNCAtPiAzODMgYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL1R1cmtleSAgICB8ICBCaW4gMjE2NiAtPiAyMTQzIGJ5dGVzCiAuLi4v
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1VDVCAgfCAgQmluIDEyNyAtPiAx
MTQgYnl0ZXMKIC4uLi9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1VTL0FsYXNrYSB8
ICBCaW4gMjM4MCAtPiAyMzcxIGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9VUy9B
bGV1dGlhbiAgICAgICAgfCAgQmluIDIzNjUgLT4gMjM1NiBieXRlcwogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vVVMvQXJpem9uYSAgICAgICAgIHwgIEJpbiAzNTMgLT4gMzI4IGJ5dGVzCiAu
Li4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9VUy9DZW50cmFsICAgICAgICAgfCAgQmluIDM1ODUg
LT4gMzU3NiBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9uZWluZm8vVVMvRWFzdC1JbmRpYW5h
ICAgIHwgIEJpbiAxNjc1IC0+IDE2NjYgYnl0ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L1VTL0Vhc3Rlcm4gICAgICAgICB8ICBCaW4gMzU0NSAtPiAzNTM2IGJ5dGVzCiAuLi4vaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9VUy9IYXdhaWkgfCAgQmluIDI3NiAtPiAzMjkgYnl0
ZXMKIC4uLi9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1VTL0luZGlhbmEtU3RhcmtlICB8ICBCaW4g
MjQzNyAtPiAyNDI4IGJ5dGVzCiAuLi4vY2N0ei90ZXN0ZGF0YS96b25laW5mby9VUy9NaWNoaWdh
biAgICAgICAgfCAgQmluIDIxODggLT4gMjE3NCBieXRlcwogLi4uL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vVVMvTW91bnRhaW4gICAgICAgIHwgIEJpbiAyNDUzIC0+IDI0NDQgYnl0ZXMKIC4uLi9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1VTL1BhY2lmaWMgICAgICAgICB8ICBCaW4gMjg0NSAtPiAy
ODM2IGJ5dGVzCiAuLi4vaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9VUy9TYW1vYSAg
fCAgQmluIDE5NiAtPiAxNzUgYnl0ZXMKIC4uLi90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vVVRDICB8ICBCaW4gMTI3IC0+IDExNCBieXRlcwogLi4uL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vVW5pdmVyc2FsIHwgIEJpbiAxMjcgLT4gMTE0IGJ5dGVzCiAuLi4v
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1ctU1UgfCAgQmluIDE1NDQgLT4g
MTUzNSBieXRlcwogLi4uL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9XRVQg
IHwgIEJpbiAxODczIC0+IDE5MDUgYnl0ZXMKIC4uLi90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vWnVsdSB8ICBCaW4gMTI3IC0+IDExNCBieXRlcwogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vaXNvMzE2Ni50YWIgICAgICAgIHwgICAgOCArLQogLi4uL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vem9uZTE5NzAudGFiICAgICAgIHwgICAzOCArLQogLi4uL3RpbWUvaW50ZXJu
YWwvZ2V0X2N1cnJlbnRfdGltZV9jaHJvbm8uaW5jIHwgICAgMiArLQogLi4uL2Fic2wvdGltZS9p
bnRlcm5hbC90ZXN0X3V0aWwuY2MgICAgICAgICAgIHwgICAgOCArLQogLi4uL2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL3Rlc3RfdXRpbC5oIHwgICAyNiArLQogLi4uL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWUuY2MgIHwgIDMyNyArKy0KIC4uLi90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lLmggICB8ICA3MzcgKysrLS0KIC4uLi9hYnNlaWwt
Y3BwL2Fic2wvdGltZS90aW1lX2JlbmNobWFyay5jYyAgICB8ICAgNDAgKy0KIC4uLi9hYnNlaWwt
Y3BwL2Fic2wvdGltZS90aW1lX25vcm1fdGVzdC5jYyAgICB8ICAzMDYgLS0KIC4uLi9hYnNlaWwt
Y3BwL2Fic2wvdGltZS90aW1lX3Rlc3QuY2MgICAgICAgICB8ICAzOTkgKystCiAuLi4vYWJzZWls
LWNwcC9hYnNsL3RpbWUvdGltZV96b25lX3Rlc3QuY2MgICAgfCAgICAyICstCiAuLi4vYWJzZWls
LWNwcC9hYnNsL3R5cGVzL0JVSUxELmJhemVsICAgICAgICAgfCAgIDcxICstCiAuLi4vYWJzZWls
LWNwcC9hYnNsL3R5cGVzL0JVSUxELmduICAgICAgICAgICAgfCAgIDMwICstCiAuLi4vYWJzZWls
LWNwcC9hYnNsL3R5cGVzL0NNYWtlTGlzdHMudHh0ICAgICAgfCAgNDYyICstLQogLi4uL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnkuaCAgIHwgICAgNCArLQogLi4uL2Fic2wv
dHlwZXMvYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyAgIHwgICAgMyArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9hbnlfdGVzdC5jYyAgICAgICAgIHwgICA3MCArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9iYWRfYW55X2Nhc3QuY2MgICAgIHwgICAgMiArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9iYWRfYW55X2Nhc3QuaCAgICAgIHwgICAgMiArLQogLi4uL2Fic2wv
dHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5jYyAgICAgICAgIHwgICAgMiArLQogLi4uL2Fic2wv
dHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5oICAgICAgICAgIHwgICAgMiArLQogLi4uL2Fic2wv
dHlwZXMvYmFkX3ZhcmlhbnRfYWNjZXNzLmNjICAgICAgICAgIHwgICAgMiArLQogLi4uL2Fic2wv
dHlwZXMvYmFkX3ZhcmlhbnRfYWNjZXNzLmggICAgICAgICAgIHwgICAgMiArLQogLi4uL2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9jb21wYXJlLmggICAgICAgICAgIHwgIDUwOCArKysrCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL2NvbXBhcmVfdGVzdC5jYyAgICAgfCAgMzExICsrCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL29wdGlvbmFsLmggfCAgMzk0ICsrKwogLi4uL2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy9pbnRlcm5hbC9zcGFuLmggICAgIHwgIDEyNiArCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3ZhcmlhbnQuaCAgfCAgIDk5ICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmggICAgICAgICAgfCAgNDQ2ICstLQogLi4uL3R5
cGVzL29wdGlvbmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyAgIHwgICAgMiArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF90ZXN0LmNjICAgIHwgICA5NCArLQogLi4uL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuLmggIHwgIDIxNyArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuX3Rlc3QuY2MgICAgICAgIHwgICA1NyArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50LmggICAgICAgICAgIHwgICAzNiArLQogLi4uL2Fi
c2wvdHlwZXMvdmFyaWFudF9iZW5jaG1hcmsuY2MgICAgICAgICAgIHwgICAgMiArLQogLi4uL3R5
cGVzL3ZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjICAgIHwgICAxNyArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X3Rlc3QuY2MgICAgIHwgIDI0NyArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC91dGlsaXR5L0JVSUxELmJhemVsICAgICAgIHwgICAgNSArLQogLi4uL2Fi
c2VpbC1jcHAvYWJzbC91dGlsaXR5L0JVSUxELmduICAgICAgICAgIHwgICAgMSArCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL3V0aWxpdHkvQ01ha2VMaXN0cy50eHQgICAgfCAgIDU2ICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL3V0aWxpdHkvdXRpbGl0eS5oICAgICAgICAgfCAgIDk1ICstCiAuLi4vYWJz
ZWlsLWNwcC9hYnNsL3V0aWxpdHkvdXRpbGl0eV90ZXN0LmNjICAgfCAgIDM1ICstCiAuLi5jX2Fu
bm90YXRpb25zLnNoID0+IHJlbmFtZV9hbm5vdGF0aW9ucy5zaH0gfCAgIDQ2ICstCiAuLi4vbGli
d2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAgICAgfCAgICAyIC0KIDEyMDYgZmls
ZXMgY2hhbmdlZCwgNjEwNTggaW5zZXJ0aW9ucygrKSwgMTAwNDYgZGVsZXRpb25zKC0pCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0Fic2VpbEluc3RhbGxEaXJzLmNtYWtlCiByZW5hbWUgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NN
YWtlL3sgPT4gR29vZ2xldGVzdH0vQ01ha2VMaXN0cy50eHQuaW4gKDEwMCUpCiByZW5hbWUgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NN
YWtlL3sgPT4gR29vZ2xldGVzdH0vRG93bmxvYWRHVGVzdC5jbWFrZSAoOTUlKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9DTWFrZS9hYnNsQ29uZmlnLmNtYWtlLmluCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L0NNYWtlL2luc3RhbGxfdGVzdF9wcm9qZWN0L0NNYWtlTGlzdHMudHh0CiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL0NNYWtlL2luc3RhbGxfdGVzdF9wcm9qZWN0L3NpbXBsZS5jYwogY3JlYXRlIG1vZGUg
MTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9DTWFrZS9pbnN0YWxsX3Rlc3RfcHJvamVjdC90ZXN0LnNoCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL1VQR1JBREVTLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jb25zdF9p
bml0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2NtYWtlX3RocmVh
ZF90ZXN0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zY29wZWRf
c2V0X2Vudi5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVk
X3NldF9lbnYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVk
X3NldF9lbnZfdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
c3BpbmxvY2tfYmVuY2htYXJrLmNjCiByZW5hbWUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wve3R5cGVzL29wdGlvbmFsLmNjID0+
IGJhc2UvbG9nX3NldmVyaXR5LmNjfSAoNjQlKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvbG9nX3NldmVyaXR5X3Rlc3QuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvYnRyZWVfbWFwLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvYnRyZWVf
c2V0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvYnRyZWVfdGVzdC5jYwog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9idHJlZV90ZXN0LmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2J0
cmVlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvYnRyZWVf
Y29udGFpbmVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
Y29tbW9uLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY291
bnRpbmdfYWxsb2NhdG9yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlcl9mb3JjZV93ZWFrX2Rl
ZmluaXRpb24uY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaHRhYmxlel9zYW1wbGVyX3Rlc3QuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGF2ZV9zc2UuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9pbmxpbmVkX3ZlY3Rvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0LmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tZW1iZXJz
X3Rlc3QuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzLmJ6bAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvcHRzL0Fic2VpbENvbmZpZ3VyZUNvcHRzLmNtYWtlCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29wdHMvR0VORVJBVEVEX0Fic2VpbENvcHRzLmNtYWtlCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMvR0VORVJBVEVEX2NvcHRzLmJ6bAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvcHRzL2NvbmZpZ3VyZV9jb3B0cy5iemwKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb3B0cy9jb3B0cy5weQogY3JlYXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL2dl
bmVyYXRlX2NvcHRzLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvQlVJTEQuYmF6
ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9CVUlMRC5nbgogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2ZsYWdzL0NNYWtlTGlzdHMudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZmxhZ3MvY29uZmlnLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9jb25maWdf
dGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2RlY2xhcmUuaAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWcuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9mbGFncy9mbGFnLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9mbGFnX3Rlc3Qu
Y2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9mbGFnX3Rlc3RfZGVmcy5jYwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5jYwog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFn
X3Rlc3QuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9mbGFnLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9wYXJzZS5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcGF0aF91dGlsLmgKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0aWxfdGVzdC5jYwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5jYwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcHJvZ3JhbV9uYW1lX3Rlc3QuY2MKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9yZWdpc3RyeS5jYwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3JlZ2lzdHJ5LmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2VyYXNlZC5jYwogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3R5cGVfZXJhc2VkLmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2VyYXNlZF90ZXN0LmNjCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxh
Z3MvaW50ZXJuYWwvdXNhZ2VfdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdz
L21hcnNoYWxsaW5nLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvbWFyc2hhbGxp
bmcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL21hcnNoYWxsaW5nX3Rlc3QuY2MK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9wYXJzZS5jYwogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL3BhcnNlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9w
YXJzZV90ZXN0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2UuY2MKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy91c2FnZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZmxhZ3MvdXNhZ2VfY29uZmlnLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxh
Z3MvdXNhZ2VfY29uZmlnLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy91c2FnZV9j
b25maWdfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0
eV9jcmMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9CVUlMRC5iYXplbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9CVUlMRC5nbgogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9DTWFrZUxpc3RzLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9iZW5jaG1hcmtzLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Jlcm5v
dWxsaV9kaXN0cmlidXRpb24uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9iZXJu
b3VsbGlfZGlzdHJpYnV0aW9uX3Rlc3QuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vYmV0YV9kaXN0cmlidXRpb24uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9i
ZXRhX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2Rpc2NyZXRlX2Rpc3RyaWJ1dGlvbi5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9kaXNjcmV0ZV9kaXN0cmlidXRpb24uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9kaXNjcmV0ZV9kaXN0cmlidXRpb25fdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9kaXN0cmlidXRpb25fZm9ybWF0X3RyYWl0cy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbnMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9kaXN0cmlidXRpb25zX3Rlc3QuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vZXhhbXBsZXNfdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9leHBv
bmVudGlhbF9kaXN0cmlidXRpb24uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9l
eHBvbmVudGlhbF9kaXN0cmlidXRpb25fdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb24uY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX3Rlc3QuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vZ2VuZXJhdG9yc190ZXN0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL0JVSUxELmJhemVsCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL0JVSUxELmduCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2ludGVybmFsL2NoaV9zcXVhcmUuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
aW50ZXJuYWwvY2hpX3NxdWFyZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL2NoaV9zcXVhcmVfdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9kaXN0cmlidXRpb25fY2FsbGVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25faW1wbF90ZXN0LmNjCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwu
Y2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9u
X3Rlc3RfdXRpbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rp
c3RyaWJ1dGlvbl90ZXN0X3V0aWxfdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25zLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvZXhwbGljaXRfc2VlZF9zZXEuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcV90ZXN0LmNjCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzLmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdF91bmlmb3JtX2JpdHNfdGVz
dC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0bWF0aC5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RtYXRoX3Rlc3Qu
Y2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZ2F1c3NpYW5fZGlz
dHJpYnV0aW9uX2dlbnRhYmxlcy5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9p
bnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyX3Rlc3QuY2MKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvbmFtZWRfZ2VuZXJhdG9yLmNjCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmsuY2MKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvbmFub2JlbmNobWFyay5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmtfdGVzdC5j
YwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9ub25zZWN1cmVfYmFz
ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25vbnNlY3VyZV9i
YXNlX3Rlc3QuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcGNn
X2VuZ2luZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3BjZ19l
bmdpbmVfdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9w
bGF0Zm9ybS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3Bvb2xf
dXJiZy5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3Vy
YmcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmdf
dGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4t
a2V5cy5pbmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVu
LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbi5oCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9iZW5jaG1hcmtz
LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9kZXRl
Y3QuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2Rl
dGVjdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9l
bmdpbmUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5f
ZW5naW5lX3Rlc3QuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwv
cmFuZGVuX2h3YWVzLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFs
L3JhbmRlbl9od2Flcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFs
L3JhbmRlbl9od2Flc190ZXN0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3JhbmRlbl9zbG93LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3JhbmRlbl9zbG93LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50
ZXJuYWwvcmFuZGVuX3Nsb3dfdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9yYW5kZW5fdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9yYW5kZW5fdHJhaXRzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vaW50ZXJuYWwvc2FsdGVkX3NlZWRfc2VxLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvc2FsdGVkX3NlZWRfc2VxX3Rlc3QuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRlcmlhbC5jYwogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX21hdGVyaWFsLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRlcmlhbF90ZXN0LmNjCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfc2FsdGluZ19zZXF1ZW5jZV9n
ZW5lcmF0b3IuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2Vl
ZF9zYWx0aW5nX3NlcXVlbmNlX2dlbmVyYXRvcl9lbXB0eV9zZXF1ZW5jZS5jYwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvdHJhaXRzLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvdHJhaXRzX3Rlc3QuY2MKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvdW5pZm9ybV9oZWxwZXIuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9sb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90
ZXN0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3BvaXNzb25fZGlzdHJpYnV0
aW9uLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRp
b25fdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9yYW5kb20uaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9zZWVkX2dlbl9leGNlcHRpb24uY2MKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9nZW5fZXhjZXB0aW9uLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXMuY2MKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9zZWVkX3NlcXVlbmNlc190ZXN0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL3VuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24uaAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uX3Rlc3Qu
Y2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vemlwZl9kaXN0cmlidXRpb24uaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS96aXBmX2Rpc3RyaWJ1dGlvbl90ZXN0LmNj
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9wb3cxMF9oZWxwZXIu
Y2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBl
ci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9wb3cxMF9oZWxw
ZXJfdGVzdC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZS5jYwog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZS5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9jaXZpbF90aW1lX2JlbmNobWFyay5jYwogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZV90ZXN0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvUW9zdGFuYXkKIGRl
bGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWVfbm9ybV90ZXN0LmNjCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvY29tcGFyZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvY29tcGFyZV90ZXN0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvaW50
ZXJuYWwvb3B0aW9uYWwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFs
L3NwYW4uaAogcmVuYW1lIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC97cmVuYW1lX2R5bmFtaWNfYW5ub3RhdGlvbnMuc2ggPT4gcmVuYW1l
X2Fubm90YXRpb25zLnNofSAoNzUlKQogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCmluZGV4IGYyZjcxZmMxZDMyLi42ODkxMDRi
ZDIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTktMTAtMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIFVwZGF0ZSBsaWJ3ZWJydGMgdGhpcmQtcGFydHkgYWJzZWlsY3BwCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI3MjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOiBVcGRhdGVkLgorICAgICAgICAqIGxpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDE5LTA5LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXNhYmxlIERUTFMxLjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9BYnNlaWxI
ZWxwZXJzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0Fic2VpbEhlbHBlcnMuY21ha2UKaW5kZXggMGM5MzQxNzQ3
NTEuLjU4Zjk4YzhjMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJzZWlsSGVscGVycy5jbWFrZQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvQ01ha2UvQWJzZWlsSGVscGVycy5jbWFrZQpAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTUsNiArMTUsOCBAQAogIwogCiBpbmNsdWRlKENNYWtlUGFyc2VBcmd1bWVudHMp
CitpbmNsdWRlKEFic2VpbENvbmZpZ3VyZUNvcHRzKQoraW5jbHVkZShBYnNlaWxJbnN0YWxsRGly
cykKIAogIyBUaGUgSURFIGZvbGRlciBmb3IgQWJzZWlsIHRoYXQgd2lsbCBiZSB1c2VkIGlmIEFi
c2VpbCBpcyBpbmNsdWRlZCBpbiBhIENNYWtlCiAjIHByb2plY3QgdGhhdCBzZXRzCkBAIC0yMiwx
NDkgKzI0LDIzMiBAQCBpbmNsdWRlKENNYWtlUGFyc2VBcmd1bWVudHMpCiAjIEZvciBleGFtcGxl
LCBWaXN1YWwgU3R1ZGlvIHN1cHBvcnRzIGZvbGRlcnMuCiBzZXQoQUJTTF9JREVfRk9MREVSIEFi
c2VpbCkKIAotIwotIyBjcmVhdGUgYSBsaWJyYXJ5IGluIHRoZSBhYnNsIG5hbWVzcGFjZQotIwot
IyBwYXJhbWV0ZXJzCi0jIFNPVVJDRVMgOiBzb3VyY2VzIGZpbGVzIGZvciB0aGUgbGlicmFyeQot
IyBQVUJMSUNfTElCUkFSSUVTOiB0YXJnZXRzIGFuZCBmbGFncyBmb3IgbGlua2luZyBwaGFzZQot
IyBQUklWQVRFX0NPTVBJTEVfRkxBR1M6IGNvbXBpbGUgZmxhZ3MgZm9yIHRoZSBsaWJyYXJ5LiBX
aWxsIG5vdCBiZSBleHBvcnRlZC4KLSMgRVhQT1JUX05BTUU6IGV4cG9ydCBuYW1lIGZvciB0aGUg
YWJzbDo6IHRhcmdldCBleHBvcnQKLSMgVEFSR0VUOiB0YXJnZXQgbmFtZQotIwotIyBjcmVhdGUg
YSB0YXJnZXQgYXNzb2NpYXRlZCB0byA8TkFNRT4KLSMgbGlicmFyaWVzIGFyZSBpbnN0YWxsZWQg
dW5kZXIgQ01BS0VfSU5TVEFMTF9GVUxMX0xJQkRJUiBieSBkZWZhdWx0Ci0jCi1mdW5jdGlvbihh
YnNsX2xpYnJhcnkpCi0gIGNtYWtlX3BhcnNlX2FyZ3VtZW50cyhBQlNMX0xJQgotICAgICJESVNB
QkxFX0lOU1RBTEwiICMga2VlcCB0aGF0IGluIGNhc2Ugd2Ugd2FudCB0byBzdXBwb3J0IGluc3Rh
bGxhdGlvbiBvbmUgZGF5Ci0gICAgIlRBUkdFVDtFWFBPUlRfTkFNRSIKLSAgICAiU09VUkNFUztQ
VUJMSUNfTElCUkFSSUVTO1BSSVZBVEVfQ09NUElMRV9GTEFHUyIKKyMgYWJzbF9jY19saWJyYXJ5
KCkKKyMKKyMgQ01ha2UgZnVuY3Rpb24gdG8gaW1pdGF0ZSBCYXplbCdzIGNjX2xpYnJhcnkgcnVs
ZS4KKyMKKyMgUGFyYW1ldGVyczoKKyMgTkFNRTogbmFtZSBvZiB0YXJnZXQgKHNlZSBOb3RlKQor
IyBIRFJTOiBMaXN0IG9mIHB1YmxpYyBoZWFkZXIgZmlsZXMgZm9yIHRoZSBsaWJyYXJ5CisjIFNS
Q1M6IExpc3Qgb2Ygc291cmNlIGZpbGVzIGZvciB0aGUgbGlicmFyeQorIyBERVBTOiBMaXN0IG9m
IG90aGVyIGxpYnJhcmllcyB0byBiZSBsaW5rZWQgaW4gdG8gdGhlIGJpbmFyeSB0YXJnZXRzCisj
IENPUFRTOiBMaXN0IG9mIHByaXZhdGUgY29tcGlsZSBvcHRpb25zCisjIERFRklORVM6IExpc3Qg
b2YgcHVibGljIGRlZmluZXMKKyMgTElOS09QVFM6IExpc3Qgb2YgbGluayBvcHRpb25zCisjIFBV
QkxJQzogQWRkIHRoaXMgc28gdGhhdCB0aGlzIGxpYnJhcnkgd2lsbCBiZSBleHBvcnRlZCB1bmRl
ciBhYnNsOjoKKyMgQWxzbyBpbiBJREUsIHRhcmdldCB3aWxsIGFwcGVhciBpbiBBYnNlaWwgZm9s
ZGVyIHdoaWxlIG5vbiBQVUJMSUMgd2lsbCBiZSBpbiBBYnNlaWwvaW50ZXJuYWwuCisjIFRFU1RP
TkxZOiBXaGVuIGFkZGVkLCB0aGlzIHRhcmdldCB3aWxsIG9ubHkgYmUgYnVpbHQgaWYgdXNlciBw
YXNzZXMgLURBQlNMX1JVTl9URVNUUz1PTiB0byBDTWFrZS4KKyMKKyMgTm90ZToKKyMgQnkgZGVm
YXVsdCwgYWJzbF9jY19saWJyYXJ5IHdpbGwgYWx3YXlzIGNyZWF0ZSBhIGxpYnJhcnkgbmFtZWQg
YWJzbF8ke05BTUV9LAorIyBhbmQgYWxpYXMgdGFyZ2V0IGFic2w6OiR7TkFNRX0uICBUaGUgYWJz
bDo6IGZvcm0gc2hvdWxkIGFsd2F5cyBiZSB1c2VkLgorIyBUaGlzIGlzIHRvIHJlZHVjZSBuYW1l
c3BhY2UgcG9sbHV0aW9uLgorIworIyBhYnNsX2NjX2xpYnJhcnkoCisjICAgTkFNRQorIyAgICAg
YXdlc29tZQorIyAgIEhEUlMKKyMgICAgICJhLmgiCisjICAgU1JDUworIyAgICAgImEuY2MiCisj
ICkKKyMgYWJzbF9jY19saWJyYXJ5KAorIyAgIE5BTUUKKyMgICAgIGZhbnRhc3RpY19saWIKKyMg
ICBTUkNTCisjICAgICAiYi5jYyIKKyMgICBERVBTCisjICAgICBhYnNsOjphd2Vzb21lICMgbm90
ICJhd2Vzb21lIiAhCisjICAgUFVCTElDCisjICkKKyMKKyMgYWJzbF9jY19saWJyYXJ5KAorIyAg
IE5BTUUKKyMgICAgIG1haW5fbGliCisjICAgLi4uCisjICAgREVQUworIyAgICAgYWJzbDo6ZmFu
dGFzdGljX2xpYgorIyApCisjCisjIFRPRE86IEltcGxlbWVudCAiQUxXQVlTTElOSyIKK2Z1bmN0
aW9uKGFic2xfY2NfbGlicmFyeSkKKyAgY21ha2VfcGFyc2VfYXJndW1lbnRzKEFCU0xfQ0NfTElC
CisgICAgIkRJU0FCTEVfSU5TVEFMTDtQVUJMSUM7VEVTVE9OTFkiCisgICAgIk5BTUUiCisgICAg
IkhEUlM7U1JDUztDT1BUUztERUZJTkVTO0xJTktPUFRTO0RFUFMiCiAgICAgJHtBUkdOfQogICAp
CiAKLSAgc2V0KF9OQU1FICR7QUJTTF9MSUJfVEFSR0VUfSkKLSAgc3RyaW5nKFRPVVBQRVIgJHtf
TkFNRX0gX1VQUEVSX05BTUUpCi0KLSAgYWRkX2xpYnJhcnkoJHtfTkFNRX0gU1RBVElDICR7QUJT
TF9MSUJfU09VUkNFU30pCi0KLSAgdGFyZ2V0X2NvbXBpbGVfb3B0aW9ucygke19OQU1FfSBQUklW
QVRFICR7QUJTTF9DT01QSUxFX0NYWEZMQUdTfSAke0FCU0xfTElCX1BSSVZBVEVfQ09NUElMRV9G
TEFHU30pCi0gIHRhcmdldF9saW5rX2xpYnJhcmllcygke19OQU1FfSBQVUJMSUMgJHtBQlNMX0xJ
Ql9QVUJMSUNfTElCUkFSSUVTfSkKLSAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtfTkFN
RX0KLSAgICBQVUJMSUMgJHtBQlNMX0NPTU1PTl9JTkNMVURFX0RJUlN9ICR7QUJTTF9MSUJfUFVC
TElDX0lOQ0xVREVfRElSU30KLSAgICBQUklWQVRFICR7QUJTTF9MSUJfUFJJVkFURV9JTkNMVURF
X0RJUlN9Ci0gICkKLSAgIyBBZGQgYWxsIEFic2VpbCB0YXJnZXRzIHRvIGEgYSBmb2xkZXIgaW4g
dGhlIElERSBmb3Igb3JnYW5pemF0aW9uLgotICBzZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9
IFBST1BFUlRZIEZPTERFUiAke0FCU0xfSURFX0ZPTERFUn0pCi0KLSAgaWYoQUJTTF9MSUJfRVhQ
T1JUX05BTUUpCi0gICAgYWRkX2xpYnJhcnkoYWJzbDo6JHtBQlNMX0xJQl9FWFBPUlRfTkFNRX0g
QUxJQVMgJHtfTkFNRX0pCisgIGlmKE5PVCBBQlNMX0NDX0xJQl9URVNUT05MWSBPUiBBQlNMX1JV
Tl9URVNUUykKKyAgICBpZihBQlNMX0VOQUJMRV9JTlNUQUxMKQorICAgICAgc2V0KF9OQU1FICIk
e0FCU0xfQ0NfTElCX05BTUV9IikKKyAgICBlbHNlKCkKKyAgICAgIHNldChfTkFNRSAiYWJzbF8k
e0FCU0xfQ0NfTElCX05BTUV9IikKKyAgICBlbmRpZigpCisKKyAgICAjIENoZWNrIGlmIHRoaXMg
aXMgYSBoZWFkZXItb25seSBsaWJyYXJ5CisgICAgIyBOb3RlIHRoYXQgYXMgb2YgRmVicnVhcnkg
MjAxOSwgbWFueSBwb3B1bGFyIE9TJ3MgKGZvciBleGFtcGxlLCBVYnVudHUKKyAgICAjIDE2LjA0
IExUUykgb25seSBjb21lIHdpdGggY21ha2UgMy41IGJ5IGRlZmF1bHQuICBGb3IgdGhpcyByZWFz
b24sIHdlIGNhbid0CisgICAgIyB1c2UgbGlzdChGSUxURVIuLi4pCisgICAgc2V0KEFCU0xfQ0Nf
U1JDUyAiJHtBQlNMX0NDX0xJQl9TUkNTfSIpCisgICAgZm9yZWFjaChzcmNfZmlsZSBJTiBMSVNU
UyBBQlNMX0NDX1NSQ1MpCisgICAgICBpZigke3NyY19maWxlfSBNQVRDSEVTICIuKlxcLihofGlu
YykiKQorICAgICAgICBsaXN0KFJFTU9WRV9JVEVNIEFCU0xfQ0NfU1JDUyAiJHtzcmNfZmlsZX0i
KQorICAgICAgZW5kaWYoKQorICAgIGVuZGZvcmVhY2goKQorICAgIGlmKCIke0FCU0xfQ0NfU1JD
U30iIFNUUkVRVUFMICIiKQorICAgICAgc2V0KEFCU0xfQ0NfTElCX0lTX0lOVEVSRkFDRSAxKQor
ICAgIGVsc2UoKQorICAgICAgc2V0KEFCU0xfQ0NfTElCX0lTX0lOVEVSRkFDRSAwKQorICAgIGVu
ZGlmKCkKKworICAgIGlmKE5PVCBBQlNMX0NDX0xJQl9JU19JTlRFUkZBQ0UpCisgICAgICBhZGRf
bGlicmFyeSgke19OQU1FfSBTVEFUSUMgIiIpCisgICAgICB0YXJnZXRfc291cmNlcygke19OQU1F
fSBQUklWQVRFICR7QUJTTF9DQ19MSUJfU1JDU30gJHtBQlNMX0NDX0xJQl9IRFJTfSkKKyAgICAg
IHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7X05BTUV9CisgICAgICAgIFBVQkxJQworICAg
ICAgICAgICQ8QlVJTERfSU5URVJGQUNFOiR7QUJTTF9DT01NT05fSU5DTFVERV9ESVJTfT4KKyAg
ICAgICAgICAkPElOU1RBTExfSU5URVJGQUNFOiR7QUJTTF9JTlNUQUxMX0lOQ0xVREVESVJ9Pgor
ICAgICAgKQorICAgICAgdGFyZ2V0X2NvbXBpbGVfb3B0aW9ucygke19OQU1FfQorICAgICAgICBQ
UklWQVRFICR7QUJTTF9DQ19MSUJfQ09QVFN9KQorICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVz
KCR7X05BTUV9CisgICAgICAgIFBVQkxJQyAke0FCU0xfQ0NfTElCX0RFUFN9CisgICAgICAgIFBS
SVZBVEUKKyAgICAgICAgICAke0FCU0xfQ0NfTElCX0xJTktPUFRTfQorICAgICAgICAgICR7QUJT
TF9ERUZBVUxUX0xJTktPUFRTfQorICAgICAgKQorICAgICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5p
dGlvbnMoJHtfTkFNRX0gUFVCTElDICR7QUJTTF9DQ19MSUJfREVGSU5FU30pCisKKyAgICAgICMg
QWRkIGFsbCBBYnNlaWwgdGFyZ2V0cyB0byBhIGEgZm9sZGVyIGluIHRoZSBJREUgZm9yIG9yZ2Fu
aXphdGlvbi4KKyAgICAgIGlmKEFCU0xfQ0NfTElCX1BVQkxJQykKKyAgICAgICAgc2V0X3Byb3Bl
cnR5KFRBUkdFVCAke19OQU1FfSBQUk9QRVJUWSBGT0xERVIgJHtBQlNMX0lERV9GT0xERVJ9KQor
ICAgICAgZWxzZWlmKEFCU0xfQ0NfTElCX1RFU1RPTkxZKQorICAgICAgICBzZXRfcHJvcGVydHko
VEFSR0VUICR7X05BTUV9IFBST1BFUlRZIEZPTERFUiAke0FCU0xfSURFX0ZPTERFUn0vdGVzdCkK
KyAgICAgIGVsc2UoKQorICAgICAgICBzZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9IFBST1BF
UlRZIEZPTERFUiAke0FCU0xfSURFX0ZPTERFUn0vaW50ZXJuYWwpCisgICAgICBlbmRpZigpCisK
KyAgICAgICMgSU5URVJGQUNFIGxpYnJhcmllcyBjYW4ndCBoYXZlIHRoZSBDWFhfU1RBTkRBUkQg
cHJvcGVydHkgc2V0CisgICAgICBzZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9IFBST1BFUlRZ
IENYWF9TVEFOREFSRCAke0FCU0xfQ1hYX1NUQU5EQVJEfSkKKyAgICAgIHNldF9wcm9wZXJ0eShU
QVJHRVQgJHtfTkFNRX0gUFJPUEVSVFkgQ1hYX1NUQU5EQVJEX1JFUVVJUkVEIE9OKQorCisgICAg
ICAjIFdoZW4gYmVpbmcgaW5zdGFsbGVkLCB3ZSBsb3NlIHRoZSBhYnNsXyBwcmVmaXguICBXZSB3
YW50IHRvIHB1dCBpdCBiYWNrCisgICAgICAjIHRvIGhhdmUgcHJvcGVybHkgbmFtZWQgbGliIGZp
bGVzLiAgVGhpcyBpcyBhIG5vLW9wIHdoZW4gd2UgYXJlIG5vdCBiZWluZworICAgICAgIyBpbnN0
YWxsZWQuCisgICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtfTkFNRX0gUFJPUEVSVElFUwor
ICAgICAgICBPVVRQVVRfTkFNRSAiYWJzbF8ke19OQU1FfSIKKyAgICAgICkKKyAgICBlbHNlKCkK
KyAgICAgICMgR2VuZXJhdGluZyBoZWFkZXItb25seSBsaWJyYXJ5CisgICAgICBhZGRfbGlicmFy
eSgke19OQU1FfSBJTlRFUkZBQ0UpCisgICAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcygk
e19OQU1FfQorICAgICAgICBJTlRFUkZBQ0UKKyAgICAgICAgICAkPEJVSUxEX0lOVEVSRkFDRTok
e0FCU0xfQ09NTU9OX0lOQ0xVREVfRElSU30+CisgICAgICAgICAgJDxJTlNUQUxMX0lOVEVSRkFD
RToke0FCU0xfSU5TVEFMTF9JTkNMVURFRElSfT4KKyAgICAgICAgKQorICAgICAgdGFyZ2V0X2xp
bmtfbGlicmFyaWVzKCR7X05BTUV9CisgICAgICAgIElOVEVSRkFDRQorICAgICAgICAgICR7QUJT
TF9DQ19MSUJfREVQU30KKyAgICAgICAgICAke0FCU0xfQ0NfTElCX0xJTktPUFRTfQorICAgICAg
ICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICAgICAgKQorICAgICAgdGFyZ2V0X2NvbXBp
bGVfZGVmaW5pdGlvbnMoJHtfTkFNRX0gSU5URVJGQUNFICR7QUJTTF9DQ19MSUJfREVGSU5FU30p
CisgICAgZW5kaWYoKQorCisgICAgIyBUT0RPIGN1cnJlbnRseSB3ZSBkb24ndCBpbnN0YWxsIGdv
b2dsZXRlc3QgYWxvbmdzaWRlIGFic2VpbCBzb3VyY2VzLCBzbworICAgICMgaW5zdGFsbGVkIGFi
c2VpbCBjYW4ndCBiZSB0ZXN0ZWQuCisgICAgaWYoTk9UIEFCU0xfQ0NfTElCX1RFU1RPTkxZIEFO
RCBBQlNMX0VOQUJMRV9JTlNUQUxMKQorICAgICAgaW5zdGFsbChUQVJHRVRTICR7X05BTUV9IEVY
UE9SVCAke1BST0pFQ1RfTkFNRX1UYXJnZXRzCisgICAgICAgICAgICBSVU5USU1FIERFU1RJTkFU
SU9OICR7QUJTTF9JTlNUQUxMX0JJTkRJUn0KKyAgICAgICAgICAgIExJQlJBUlkgREVTVElOQVRJ
T04gJHtBQlNMX0lOU1RBTExfTElCRElSfQorICAgICAgICAgICAgQVJDSElWRSBERVNUSU5BVElP
TiAke0FCU0xfSU5TVEFMTF9MSUJESVJ9CisgICAgICApCisgICAgZW5kaWYoKQorCisgICAgYWRk
X2xpYnJhcnkoYWJzbDo6JHtBQlNMX0NDX0xJQl9OQU1FfSBBTElBUyAke19OQU1FfSkKICAgZW5k
aWYoKQogZW5kZnVuY3Rpb24oKQogCisjIGFic2xfY2NfdGVzdCgpCisjCisjIENNYWtlIGZ1bmN0
aW9uIHRvIGltaXRhdGUgQmF6ZWwncyBjY190ZXN0IHJ1bGUuCisjCisjIFBhcmFtZXRlcnM6Cisj
IE5BTUU6IG5hbWUgb2YgdGFyZ2V0IChzZWUgVXNhZ2UgYmVsb3cpCisjIFNSQ1M6IExpc3Qgb2Yg
c291cmNlIGZpbGVzIGZvciB0aGUgYmluYXJ5CisjIERFUFM6IExpc3Qgb2Ygb3RoZXIgbGlicmFy
aWVzIHRvIGJlIGxpbmtlZCBpbiB0byB0aGUgYmluYXJ5IHRhcmdldHMKKyMgQ09QVFM6IExpc3Qg
b2YgcHJpdmF0ZSBjb21waWxlIG9wdGlvbnMKKyMgREVGSU5FUzogTGlzdCBvZiBwdWJsaWMgZGVm
aW5lcworIyBMSU5LT1BUUzogTGlzdCBvZiBsaW5rIG9wdGlvbnMKKyMKKyMgTm90ZToKKyMgQnkg
ZGVmYXVsdCwgYWJzbF9jY190ZXN0IHdpbGwgYWx3YXlzIGNyZWF0ZSBhIGJpbmFyeSBuYW1lZCBh
YnNsXyR7TkFNRX0uCisjIFRoaXMgd2lsbCBhbHNvIGFkZCBpdCB0byBjdGVzdCBsaXN0IGFzIGFi
c2xfJHtOQU1FfS4KKyMKKyMgVXNhZ2U6CisjIGFic2xfY2NfbGlicmFyeSgKKyMgICBOQU1FCisj
ICAgICBhd2Vzb21lCisjICAgSERSUworIyAgICAgImEuaCIKKyMgICBTUkNTCisjICAgICAiYS5j
YyIKKyMgICBQVUJMSUMKKyMgKQorIworIyBhYnNsX2NjX3Rlc3QoCisjICAgTkFNRQorIyAgICAg
YXdlc29tZV90ZXN0CisjICAgU1JDUworIyAgICAgImF3ZXNvbWVfdGVzdC5jYyIKKyMgICBERVBT
CisjICAgICBhYnNsOjphd2Vzb21lCisjICAgICBnbW9jaworIyAgICAgZ3Rlc3RfbWFpbgorIyAp
CitmdW5jdGlvbihhYnNsX2NjX3Rlc3QpCisgIGlmKE5PVCBBQlNMX1JVTl9URVNUUykKKyAgICBy
ZXR1cm4oKQorICBlbmRpZigpCiAKLQotIwotIyBoZWFkZXIgb25seSB2aXJ0dWFsIHRhcmdldCBj
cmVhdGlvbgotIwotZnVuY3Rpb24oYWJzbF9oZWFkZXJfbGlicmFyeSkKLSAgY21ha2VfcGFyc2Vf
YXJndW1lbnRzKEFCU0xfSE9fTElCCi0gICAgIkRJU0FCTEVfSU5TVEFMTCIKLSAgICAiRVhQT1JU
X05BTUU7VEFSR0VUIgotICAgICJQVUJMSUNfTElCUkFSSUVTO1BSSVZBVEVfQ09NUElMRV9GTEFH
UztQVUJMSUNfSU5DTFVERV9ESVJTO1BSSVZBVEVfSU5DTFVERV9ESVJTIgorICBjbWFrZV9wYXJz
ZV9hcmd1bWVudHMoQUJTTF9DQ19URVNUCisgICAgIiIKKyAgICAiTkFNRSIKKyAgICAiU1JDUztD
T1BUUztERUZJTkVTO0xJTktPUFRTO0RFUFMiCiAgICAgJHtBUkdOfQogICApCiAKLSAgc2V0KF9O
QU1FICR7QUJTTF9IT19MSUJfVEFSR0VUfSkKLQotICBzZXQoX19kdW1teV9oZWFkZXJfb25seV9s
aWJfZmlsZSAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyR7X05BTUV9X2hlYWRlcl9vbmx5
X2R1bW15LmNjIikKLQotICBpZihOT1QgRVhJU1RTICR7X19kdW1teV9oZWFkZXJfb25seV9saWJf
ZmlsZX0pCi0gICAgZmlsZShXUklURSAke19fZHVtbXlfaGVhZGVyX29ubHlfbGliX2ZpbGV9Ci0g
ICAgICAiLyogZ2VuZXJhdGVkIGZpbGUgZm9yIGhlYWRlci1vbmx5IGNtYWtlIHRhcmdldCAqLwot
Ci0gICAgICBuYW1lc3BhY2UgYWJzbCB7Ci0KLSAgICAgICAvLyBzaW5nbGUgbWVhbmluZ2xlc3Mg
c3ltYm9sCi0gICAgICAgdm9pZCAke19OQU1FfV9faGVhZGVyX2Zha2VzeW0oKSB7fQotICAgICAg
fSAgLy8gbmFtZXNwYWNlIGFic2wKLSAgICAgICIKLSAgICApCi0gIGVuZGlmKCkKLQotCi0gIGFk
ZF9saWJyYXJ5KCR7X05BTUV9ICR7X19kdW1teV9oZWFkZXJfb25seV9saWJfZmlsZX0pCi0gIHRh
cmdldF9saW5rX2xpYnJhcmllcygke19OQU1FfSBQVUJMSUMgJHtBQlNMX0hPX0xJQl9QVUJMSUNf
TElCUkFSSUVTfSkKKyAgc2V0KF9OQU1FICJhYnNsXyR7QUJTTF9DQ19URVNUX05BTUV9IikKKyAg
YWRkX2V4ZWN1dGFibGUoJHtfTkFNRX0gIiIpCisgIHRhcmdldF9zb3VyY2VzKCR7X05BTUV9IFBS
SVZBVEUgJHtBQlNMX0NDX1RFU1RfU1JDU30pCiAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVz
KCR7X05BTUV9Ci0gICAgUFVCTElDICR7QUJTTF9DT01NT05fSU5DTFVERV9ESVJTfSAke0FCU0xf
SE9fTElCX1BVQkxJQ19JTkNMVURFX0RJUlN9Ci0gICAgUFJJVkFURSAke0FCU0xfSE9fTElCX1BS
SVZBVEVfSU5DTFVERV9ESVJTfQorICAgIFBVQkxJQyAke0FCU0xfQ09NTU9OX0lOQ0xVREVfRElS
U30KKyAgICBQUklWQVRFICR7R01PQ0tfSU5DTFVERV9ESVJTfSAke0dURVNUX0lOQ0xVREVfRElS
U30KICAgKQotCi0gICMgQWRkIGFsbCBBYnNlaWwgdGFyZ2V0cyB0byBhIGEgZm9sZGVyIGluIHRo
ZSBJREUgZm9yIG9yZ2FuaXphdGlvbi4KLSAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke19OQU1FfSBQ
Uk9QRVJUWSBGT0xERVIgJHtBQlNMX0lERV9GT0xERVJ9KQotCi0gIGlmKEFCU0xfSE9fTElCX0VY
UE9SVF9OQU1FKQotICAgIGFkZF9saWJyYXJ5KGFic2w6OiR7QUJTTF9IT19MSUJfRVhQT1JUX05B
TUV9IEFMSUFTICR7X05BTUV9KQotICBlbmRpZigpCi0KLWVuZGZ1bmN0aW9uKCkKLQotCi0jCi0j
IGNyZWF0ZSBhbiBhYnNlaWwgdW5pdF90ZXN0IGFuZCBhZGQgaXQgdG8gdGhlIGV4ZWN1dGVkIHRl
c3QgbGlzdAotIwotIyBwYXJhbWV0ZXJzCi0jIFRBUkdFVDogdGFyZ2V0IG5hbWUgcHJlZml4Ci0j
IFNPVVJDRVM6IHNvdXJjZXMgZmlsZXMgZm9yIHRoZSB0ZXN0cwotIyBQVUJMSUNfTElCUkFSSUVT
OiB0YXJnZXRzIGFuZCBmbGFncyBmb3IgbGlua2luZyBwaGFzZS4KLSMgUFJJVkFURV9DT01QSUxF
X0ZMQUdTOiBjb21waWxlIGZsYWdzIGZvciB0aGUgdGVzdC4gV2lsbCBub3QgYmUgZXhwb3J0ZWQu
Ci0jCi0jIGNyZWF0ZSBhIHRhcmdldCBhc3NvY2lhdGVkIHRvIDxOQU1FPl9iaW4KLSMKLSMgYWxs
IHRlc3RzIHdpbGwgYmUgcmVnaXN0ZXIgZm9yIGV4ZWN1dGlvbiB3aXRoIGFkZF90ZXN0KCkKLSMK
LSMgdGVzdCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uIGlzIGRpc2FibGUgd2hlbiBBQlNMX1JV
Tl9URVNUUz1PRkYKLSMKLWZ1bmN0aW9uKGFic2xfdGVzdCkKLQotICBjbWFrZV9wYXJzZV9hcmd1
bWVudHMoQUJTTF9URVNUCi0gICAgIiIKLSAgICAiVEFSR0VUIgotICAgICJTT1VSQ0VTO1BVQkxJ
Q19MSUJSQVJJRVM7UFJJVkFURV9DT01QSUxFX0ZMQUdTO1BVQkxJQ19JTkNMVURFX0RJUlMiCi0g
ICAgJHtBUkdOfQorICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucygke19OQU1FfQorICAgIFBV
QkxJQyAke0FCU0xfQ0NfVEVTVF9ERUZJTkVTfQogICApCisgIHRhcmdldF9jb21waWxlX29wdGlv
bnMoJHtfTkFNRX0KKyAgICBQUklWQVRFICR7QUJTTF9DQ19URVNUX0NPUFRTfQorICApCisgIHRh
cmdldF9saW5rX2xpYnJhcmllcygke19OQU1FfQorICAgIFBVQkxJQyAke0FCU0xfQ0NfVEVTVF9E
RVBTfQorICAgIFBSSVZBVEUgJHtBQlNMX0NDX1RFU1RfTElOS09QVFN9CisgICkKKyAgIyBBZGQg
YWxsIEFic2VpbCB0YXJnZXRzIHRvIGEgYSBmb2xkZXIgaW4gdGhlIElERSBmb3Igb3JnYW5pemF0
aW9uLgorICBzZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9IFBST1BFUlRZIEZPTERFUiAke0FC
U0xfSURFX0ZPTERFUn0vdGVzdCkKIAorICBzZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9IFBS
T1BFUlRZIENYWF9TVEFOREFSRCAke0FCU0xfQ1hYX1NUQU5EQVJEfSkKKyAgc2V0X3Byb3BlcnR5
KFRBUkdFVCAke19OQU1FfSBQUk9QRVJUWSBDWFhfU1RBTkRBUkRfUkVRVUlSRUQgT04pCiAKLSAg
aWYoQUJTTF9SVU5fVEVTVFMpCi0KLSAgICBzZXQoX05BTUUgJHtBQlNMX1RFU1RfVEFSR0VUfSkK
LSAgICBzdHJpbmcoVE9VUFBFUiAke19OQU1FfSBfVVBQRVJfTkFNRSkKLQotICAgIGFkZF9leGVj
dXRhYmxlKCR7X05BTUV9X2JpbiAke0FCU0xfVEVTVF9TT1VSQ0VTfSkKLQotICAgIHRhcmdldF9j
b21waWxlX29wdGlvbnMoJHtfTkFNRX1fYmluIFBSSVZBVEUgJHtBQlNMX0NPTVBJTEVfQ1hYRkxB
R1N9ICR7QUJTTF9URVNUX1BSSVZBVEVfQ09NUElMRV9GTEFHU30pCi0gICAgdGFyZ2V0X2xpbmtf
bGlicmFyaWVzKCR7X05BTUV9X2JpbiBQVUJMSUMgJHtBQlNMX1RFU1RfUFVCTElDX0xJQlJBUklF
U30gJHtBQlNMX1RFU1RfQ09NTU9OX0xJQlJBUklFU30pCi0gICAgdGFyZ2V0X2luY2x1ZGVfZGly
ZWN0b3JpZXMoJHtfTkFNRX1fYmluCi0gICAgICBQVUJMSUMgJHtBQlNMX0NPTU1PTl9JTkNMVURF
X0RJUlN9ICR7QUJTTF9URVNUX1BVQkxJQ19JTkNMVURFX0RJUlN9Ci0gICAgICBQUklWQVRFICR7
R01PQ0tfSU5DTFVERV9ESVJTfSAke0dURVNUX0lOQ0xVREVfRElSU30KLSAgICApCi0KLSAgICAj
IEFkZCBhbGwgQWJzZWlsIHRhcmdldHMgdG8gYSBhIGZvbGRlciBpbiB0aGUgSURFIGZvciBvcmdh
bml6YXRpb24uCi0gICAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke19OQU1FfV9iaW4gUFJPUEVSVFkg
Rk9MREVSICR7QUJTTF9JREVfRk9MREVSfSkKLQotICAgIGFkZF90ZXN0KCR7X05BTUV9ICR7X05B
TUV9X2JpbikKLSAgZW5kaWYoQUJTTF9SVU5fVEVTVFMpCi0KKyAgYWRkX3Rlc3QoTkFNRSAke19O
QU1FfSBDT01NQU5EICR7X05BTUV9KQogZW5kZnVuY3Rpb24oKQogCiAKLQotCiBmdW5jdGlvbihj
aGVja190YXJnZXQgbXlfdGFyZ2V0KQotCiAgIGlmKE5PVCBUQVJHRVQgJHtteV90YXJnZXR9KQog
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIiBBQlNMOiBjb21waWxpbmcgYWJzbCByZXF1aXJlcyBh
ICR7bXlfdGFyZ2V0fSBDTWFrZSB0YXJnZXQgaW4geW91ciBwcm9qZWN0LAogICAgICAgICAgICAg
ICAgICAgIHNlZSBDTWFrZS9SRUFETUUubWQgZm9yIG1vcmUgZGV0YWlscyIpCiAgIGVuZGlmKE5P
VCBUQVJHRVQgJHtteV90YXJnZXR9KQotCiBlbmRmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01h
a2UvQWJzZWlsSW5zdGFsbERpcnMuY21ha2UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJzZWlsSW5zdGFsbERpcnMuY21h
a2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI2NzI3MmY4MzBjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0Fic2VpbEluc3RhbGxEaXJzLmNtYWtlCkBAIC0wLDAg
KzEsMjAgQEAKK2luY2x1ZGUoR05VSW5zdGFsbERpcnMpCisKKyMgYWJzbF9WRVJTSU9OIGlzIG9u
bHkgc2V0IGlmIHdlIGFyZSBhbiBMVFMgcmVsZWFzZSBiZWluZyBpbnN0YWxsZWQsIGluIHdoaWNo
CisjIGNhc2UgaXQgbWF5IGJlIGludG8gYSBzeXN0ZW0gZGlyZWN0b3J5IGFuZCBzbyB3ZSBuZWVk
IHRvIG1ha2Ugc3ViZGlyZWN0b3JpZXMKKyMgZm9yIGVhY2ggaW5zdGFsbGVkIHZlcnNpb24gb2Yg
QWJzZWlsLiAgVGhpcyBtZWNoYW5pc20gaXMgaW1wbGVtZW50ZWQgaW4KKyMgQWJzZWlsJ3MgaW50
ZXJuYWwgQ29weWJhcmEgKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY29weWJhcmEpIHdvcmtm
bG93cyBhbmQKKyMgaXNuJ3QgdmlzaWJsZSBpbiB0aGUgQ01ha2UgYnVpbGRzeXN0ZW0gaXRzZWxm
LgorCitpZihhYnNsX1ZFUlNJT04pCisgIHNldChBQlNMX1NVQkRJUiAiJHtQUk9KRUNUX05BTUV9
XyR7UFJPSkVDVF9WRVJTSU9OfSIpCisgIHNldChBQlNMX0lOU1RBTExfQklORElSICIke0NNQUtF
X0lOU1RBTExfQklORElSfS8ke0FCU0xfU1VCRElSfSIpCisgIHNldChBQlNMX0lOU1RBTExfQ09O
RklHRElSICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS8ke0FCU0xfU1VCRElSfSIpCisg
IHNldChBQlNMX0lOU1RBTExfSU5DTFVERURJUiAiJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9
L3tBQlNMX1NVQkRJUn0iKQorICBzZXQoQUJTTF9JTlNUQUxMX0xJQkRJUiAiJHtDTUFLRV9JTlNU
QUxMX0xJQkRJUn0vJHtBQlNMX1NVQkRJUn0iKQorZWxzZSgpCisgIHNldChBQlNMX0lOU1RBTExf
QklORElSICIke0NNQUtFX0lOU1RBTExfQklORElSfSIpCisgIHNldChBQlNMX0lOU1RBTExfQ09O
RklHRElSICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS8ke1BST0pFQ1RfTkFNRX0iKQor
ICBzZXQoQUJTTF9JTlNUQUxMX0lOQ0xVREVESVIgIiR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElS
fSIpCisgIHNldChBQlNMX0lOU1RBTExfTElCRElSICIke0NNQUtFX0lOU1RBTExfTElCRElSfSIp
CitlbmRpZigpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtl
L0NNYWtlTGlzdHMudHh0LmluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0dvb2dsZXRlc3QvQ01ha2VMaXN0cy50eHQuaW4K
c2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9DTWFrZUxpc3RzLnR4dC5p
bgpyZW5hbWUgdG8gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL0NNYWtlL0dvb2dsZXRlc3QvQ01ha2VMaXN0cy50eHQuaW4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9DTWFrZS9Eb3dubG9hZEdUZXN0LmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0dvb2dsZXRlc3QvRG93bmxv
YWRHVGVzdC5jbWFrZQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvRG93
bmxvYWRHVGVzdC5jbWFrZQpyZW5hbWUgdG8gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0dvb2dsZXRlc3QvRG93bmxvYWRHVGVz
dC5jbWFrZQppbmRleCA5ZDQxMzIxNThiOC4uM2M2ODJhZWYwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFr
ZS9Eb3dubG9hZEdUZXN0LmNtYWtlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9Hb29nbGV0ZXN0L0Rvd25sb2FkR1Rl
c3QuY21ha2UKQEAgLTQsNyArNCw3IEBACiAjIERvd25sb2FkIHRoZSBsYXRlc3QgZ29vZ2xldGVz
dCBmcm9tIEdpdGh1YiBtYXN0ZXIKIGNvbmZpZ3VyZV9maWxlKAogICAke0NNQUtFX0NVUlJFTlRf
TElTVF9ESVJ9L0NNYWtlTGlzdHMudHh0LmluCi0gIGdvb2dsZXRlc3QtZG93bmxvYWQvQ01ha2VM
aXN0cy50eHQKKyAgJHtDTUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWRvd25sb2FkL0NNYWtl
TGlzdHMudHh0CiApCiAKICMgQ29uZmlndXJlIGFuZCBidWlsZCB0aGUgZG93bmxvYWRlZCBnb29n
bGV0ZXN0IHNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL1JFQURNRS5tZCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9SRUFE
TUUubWQKaW5kZXggNzliYmUyNGQ1YWQuLjQ2OWRmZWY1ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2Uv
UkVBRE1FLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9DTWFrZS9SRUFETUUubWQKQEAgLTMsNyArMyw3IEBACiBBYnNlaWwg
Y29tZXMgd2l0aCBhIENNYWtlIGJ1aWxkIHNjcmlwdCAoW0NNYWtlTGlzdHMudHh0XSguLi9DTWFr
ZUxpc3RzLnR4dCkpCiB0aGF0IGNhbiBiZSB1c2VkIG9uIGEgd2lkZSByYW5nZSBvZiBwbGF0Zm9y
bXMgKCJDIiBzdGFuZHMgZm9yIGNyb3NzLXBsYXRmb3JtLikuCiBJZiB5b3UgZG9uJ3QgaGF2ZSBD
TWFrZSBpbnN0YWxsZWQgYWxyZWFkeSwgeW91IGNhbiBkb3dubG9hZCBpdCBmb3IgZnJlZSBmcm9t
Ci08aHR0cDovL3d3dy5jbWFrZS5vcmcvPi4KKzxodHRwczovL3d3dy5jbWFrZS5vcmcvPi4KIAog
Q01ha2Ugd29ya3MgYnkgZ2VuZXJhdGluZyBuYXRpdmUgbWFrZWZpbGVzIG9yIGJ1aWxkIHByb2pl
Y3RzIHRoYXQgY2FuCiBiZSB1c2VkIGluIHRoZSBjb21waWxlciBlbnZpcm9ubWVudCBvZiB5b3Vy
IGNob2ljZS4KQEAgLTM3LDIwICszNywxMiBAQCBzZWN0aW9uIG9mIHlvdXIgZXhlY3V0YWJsZSBv
ciBvZiB5b3VyIGxpYnJhcnkuPGJyPgogSGVyZSBpcyBhIHNob3J0IENNYWtlTGlzdHMudHh0IGV4
YW1wbGUgb2YgYSBwcm9qZWN0IGZpbGUgdXNpbmcgQWJzZWlsLgogCiBgYGBjbWFrZQotY21ha2Vf
bWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOC4xMikKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQo
VkVSU0lPTiAzLjUpCiBwcm9qZWN0KG15X3Byb2plY3QpCiAKLXNldChDTUFLRV9DWFhfRkxBR1Mg
Ii1zdGQ9YysrMTEgLXN0ZGxpYj1saWJjKysgJHtDTUFLRV9DWFhfRkxBR1N9IikKLQotaWYoTVNW
QykKLSAgIyAvd2Q0MDA1ICBtYWNyby1yZWRlZmluaXRpb24KLSAgIyAvd2Q0MDY4ICB1bmtub3du
IHByYWdtYQotICAjIC93ZDQyNDQgIGNvbnZlcnNpb24gZnJvbSAndHlwZTEnIHRvICd0eXBlMicK
LSAgIyAvd2Q0MjY3ICBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUyJwotICAjIC93
ZDQ4MDAgIGZvcmNlIHZhbHVlIHRvIGJvb2wgJ3RydWUnIG9yICdmYWxzZScgKHBlcmZvcm1hbmNl
IHdhcm5pbmcpCi0gIGFkZF9jb21waWxlX29wdGlvbnMoL3dkNDAwNSAvd2Q0MDY4IC93ZDQyNDQg
L3dkNDI2NyAvd2Q0ODAwKQotICBhZGRfZGVmaW5pdGlvbnMoL0ROT01JTk1BWCAvRFdJTjMyX0xF
QU5fQU5EX01FQU49MSAvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTKQotZW5kaWYoKQorIyBQaWNr
IHRoZSBDKysgc3RhbmRhcmQgdG8gY29tcGlsZSB3aXRoLgorIyBBYnNlaWwgY3VycmVudGx5IHN1
cHBvcnRzIEMrKzExLCBDKysxNCwgYW5kIEMrKzE3Lgorc2V0KENNQUtFX0NYWF9TVEFOREFSRCAx
MSkKIAogYWRkX3N1YmRpcmVjdG9yeShhYnNlaWwtY3BwKQogCkBAIC05NSw4ICs4Nyw4IEBAIEhl
cmUncyBhIG5vbi1leGhhdXN0aXZlIGxpc3Qgb2YgQWJzZWlsIENNYWtlIHB1YmxpYyB0YXJnZXRz
OgogYGBgY21ha2UKIGFic2w6OmJhc2UKIGFic2w6OmFsZ29yaXRobQotYWJzbDo6Y29udGFpbmVy
CiBhYnNsOjpkZWJ1Z2dpbmcKK2Fic2w6OmZsYXRfaGFzaF9tYXAKIGFic2w6Om1lbW9yeQogYWJz
bDo6bWV0YQogYWJzbDo6bnVtZXJpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL2Fic2xDb25maWcuY21h
a2UuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvQ01ha2UvYWJzbENvbmZpZy5jbWFrZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uNjA4NDdmYTc3MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2Uv
YWJzbENvbmZpZy5jbWFrZS5pbgpAQCAtMCwwICsxLDcgQEAKKyMgYWJzbCBDTWFrZSBjb25maWd1
cmF0aW9uIGZpbGUuCisKK2luY2x1ZGUoRmluZFRocmVhZHMpCisKK0BQQUNLQUdFX0lOSVRACisK
K2luY2x1ZGUgKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L0BQUk9KRUNUX05BTUVAVGFyZ2V0
cy5jbWFrZSIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtl
L2luc3RhbGxfdGVzdF9wcm9qZWN0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL2luc3RhbGxfdGVz
dF9wcm9qZWN0L0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi4wNmI3OTdlOWVkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9pbnN0YWxsX3Rl
c3RfcHJvamVjdC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDI3IEBACisjCisjIENvcHlyaWdo
dCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKworIyBBIHNpbXBsZSBDTWFrZUxpc3RzLnR4dCBmb3IgdGVzdGluZyBj
bWFrZSBpbnN0YWxsYXRpb24KKworY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuNSkK
K3Byb2plY3QoYWJzbF9jbWFrZV90ZXN0aW5nIENYWCkKKworc2V0KENNQUtFX0NYWF9TVEFOREFS
RCAxMSkKKworYWRkX2V4ZWN1dGFibGUoc2ltcGxlIHNpbXBsZS5jYykKKworZmluZF9wYWNrYWdl
KGFic2wgUkVRVUlSRUQpCisKK3RhcmdldF9saW5rX2xpYnJhcmllcyhzaW1wbGUgYWJzbDo6c3Ry
aW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9pbnN0YWxsX3Rlc3RfcHJvamVjdC9zaW1wbGUuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvQ01ha2UvaW5zdGFsbF90ZXN0X3Byb2plY3Qvc2ltcGxlLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lOWUzNTI5MTJiYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9D
TWFrZS9pbnN0YWxsX3Rlc3RfcHJvamVjdC9zaW1wbGUuY2MKQEAgLTAsMCArMSwyMyBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgPGlvc3Ry
ZWFtPgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmgiCisKK2ludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikgeworICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ2M7ICsraSkg
eworICAgIHN0ZDo6Y291dCA8PCBhYnNsOjpTdWJzdGl0dXRlKCJBcmcgJDA6ICQxXG4iLCBpLCBh
cmd2W2ldKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL2luc3RhbGxfdGVzdF9wcm9qZWN0
L3Rlc3Quc2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvQ01ha2UvaW5zdGFsbF90ZXN0X3Byb2plY3QvdGVzdC5zaApuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMC4uOTk5ODliMDMxZDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvQ01ha2UvaW5zdGFsbF90ZXN0X3Byb2plY3QvdGVzdC5zaApAQCAtMCwwICsxLDE0NCBA
QAorIyEvYmluL2Jhc2gKKyMKKyMgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgor
IworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKyMKKyMgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjICJVbml0IiBh
bmQgaW50ZWdyYXRpb24gdGVzdHMgZm9yIEFic2wgQ01ha2UgaW5zdGFsbGF0aW9uCisKKyMgVE9E
TyhhYnNsLXRlYW0pOiBUaGlzIHNjcmlwdCBpc24ndCBmdWxseSBoZXJtZXRpYyBiZWNhdXNlCisj
IC1EQUJTTF9VU0VfR09PR0xFVEVTVF9IRUFEPU9OIG1lYW5zIHRoYXQgdGhpcyBzY3JpcHQgaXNu
J3QgcGlubmVkIHRvIGEgZml4ZWQKKyMgdmVyc2lvbiBvZiBHb29nbGVUZXN0LiBUaGlzIG1lYW5z
IHRoYXQgYW4gdXBzdHJlYW0gY2hhbmdlIHRvIEdvb2dsZVRlc3QgY291bGQKKyMgYnJlYWsgdGhp
cyB0ZXN0LiBGaXggdGhpcyBieSBhbGxvd2luZyB0aGlzIHNjcmlwdCB0byBwaW4gdG8gYSBrbm93
bi1nb29kCisjIHZlcnNpb24gb2YgR29vZ2xlVGVzdC4KKworIyBGYWlsIG9uIGFueSBlcnJvci4g
VHJlYXQgdW5zZXQgdmFyaWFibGVzIGFuIGVycm9yLiBQcmludCBjb21tYW5kcyBhcyBleGVjdXRl
ZC4KK3NldCAtZXVveCBwaXBlZmFpbAorCitpbnN0YWxsX2Fic2woKSB7CisgIHB1c2hkICIke2Fi
c2xfYnVpbGRfZGlyfSIKKyAgaWYgW1sgIiR7I30iIC1lcSAxIF1dOyB0aGVuCisgICAgY21ha2Ug
LURDTUFLRV9JTlNUQUxMX1BSRUZJWD0iJHsxfSIgIiR7YWJzbF9kaXJ9IgorICBlbHNlCisgICAg
Y21ha2UgIiR7YWJzbF9kaXJ9IgorICBmaQorICBjbWFrZSAtLWJ1aWxkIC4gLS10YXJnZXQgaW5z
dGFsbCAtLSAtagorICBwb3BkCit9CisKK3VuaW5zdGFsbF9hYnNsKCkgeworICB4YXJncyBybSA8
ICIke2Fic2xfYnVpbGRfZGlyfSIvaW5zdGFsbF9tYW5pZmVzdC50eHQKKyAgcm0gLXJmICIke2Fi
c2xfYnVpbGRfZGlyfSIKKyAgbWtkaXIgLXAgIiR7YWJzbF9idWlsZF9kaXJ9IgorfQorCitsdHNf
aW5zdGFsbD0iIgorCit3aGlsZSBnZXRvcHRzICI6bCIgbHRzOyBkbworICBjYXNlICIke2x0c30i
IGluCisgICAgbCApCisgICAgICBsdHNfaW5zdGFsbD0idHJ1ZSIKKyAgICAgIDs7CisgIGVzYWMK
K2RvbmUKKworYWJzbF9kaXI9L2Fic2VpbC1jcHAKK2Fic2xfYnVpbGRfZGlyPS9idWlsZGZzL2Fi
c2wtYnVpbGQKK3Byb2plY3RfZGlyPSIke2Fic2xfZGlyfSIvQ01ha2UvaW5zdGFsbF90ZXN0X3By
b2plY3QKK3Byb2plY3RfYnVpbGRfZGlyPS9idWlsZGZzL3Byb2plY3QtYnVpbGQKKworbWtkaXIg
LXAgIiR7YWJzbF9idWlsZF9kaXJ9IgorbWtkaXIgLXAgIiR7cHJvamVjdF9idWlsZF9kaXJ9Igor
CitpZiBbWyAiJHtsdHNfaW5zdGFsbH0iIF1dOyB0aGVuCisgIGluc3RhbGxfZGlyPSIvdXNyL2xv
Y2FsIgorZWxzZQorICBpbnN0YWxsX2Rpcj0iJHtwcm9qZWN0X2J1aWxkX2Rpcn0iL2luc3RhbGwK
K2ZpCitta2RpciAtcCAiJHtpbnN0YWxsX2Rpcn0iCisKKyMgVGVzdCBidWlsZCwgaW5zdGFsbCwg
YW5kIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgYWJzZWlsCitwdXNoZCAiJHtwcm9qZWN0X2J1aWxk
X2Rpcn0iCitpZiBbWyAiJHtsdHNfaW5zdGFsbH0iIF1dOyB0aGVuCisgIGluc3RhbGxfYWJzbAor
ICBjbWFrZSAiJHtwcm9qZWN0X2Rpcn0iCitlbHNlCisgIGluc3RhbGxfYWJzbCAiJHtpbnN0YWxs
X2Rpcn0iCisgIGNtYWtlICIke3Byb2plY3RfZGlyfSIgLURDTUFLRV9QUkVGSVhfUEFUSD0iJHtp
bnN0YWxsX2Rpcn0iCitmaQorCitjbWFrZSAtLWJ1aWxkIC4gLS10YXJnZXQgc2ltcGxlCisKK291
dHB1dD0iJCgke3Byb2plY3RfYnVpbGRfZGlyfS9zaW1wbGUgInByaW50bWUiIDI+JjEpIgoraWYg
W1sgIiR7b3V0cHV0fSIgIT0gKiJBcmcgMTogcHJpbnRtZSIqIF1dOyB0aGVuCisgIGVjaG8gIkZh
dWx0eSBvdXRwdXQgb24gc2ltcGxlIHByb2plY3Q6IgorICBlY2hvICIke291dHB1dH0iCisgIGV4
aXQgMQorZmkKKworcG9wZAorCisjIFRlc3QgdGhhdCB3ZSBoYXZlbid0IGFjY2lkZW50YWxseSBt
YWRlIGFic2w6OmFic2xibGFoCitwdXNoZCAiJHtpbnN0YWxsX2Rpcn0iCisKKyMgU3RhcnRpbmcg
aW4gQ01ha2UgMy4xMiB0aGUgZGVmYXVsdCBpbnN0YWxsIGRpciBpcyBsaWIkYml0X3dpZHRoCitp
ZiBbWyAtZCBsaWI2NCBdXTsgdGhlbgorICBsaWJkaXI9ImxpYjY0IgorZWxpZiBbWyAtZCBsaWIg
XV07IHRoZW4KKyAgbGliZGlyPSJsaWIiCitlbHNlCisgIGVjaG8gImxzICosICovKiwgKi8qLyo6
IgorICBscyAqCisgIGxzICovKgorICBscyAqLyovKgorICBlY2hvICJ1bmtub3duIGxpYiBkaXIi
CitmaQorCitpZiBbWyAiJHtsdHNfaW5zdGFsbH0iIF1dOyB0aGVuCisgICMgTFRTIHZlcnNpb25z
IGFwcGVuZCB0aGUgZGF0ZSBvZiB0aGUgcmVsZWFzZSB0byB0aGUgc3ViZGlyLgorICAjIDk5OTkv
OTkvOTkgaXMgdGhlIGR1bW15IGRhdGUgdXNlZCBpbiB0aGUgbG9jYWxfbHRzIHdvcmtmbG93Lgor
ICBhYnNsX3N1YmRpcj0iYWJzbF85OTk5OTk5OSIKK2Vsc2UKKyAgYWJzbF9zdWJkaXI9ImFic2wi
CitmaQorCitpZiAhIGdyZXAgYWJzbDo6c3RyaW5ncyAiJHtsaWJkaXJ9L2NtYWtlLyR7YWJzbF9z
dWJkaXJ9L2Fic2xUYXJnZXRzLmNtYWtlIjsgdGhlbgorICBjYXQgIiR7bGliZGlyfSIvY21ha2Uv
YWJzbC9hYnNsVGFyZ2V0cy5jbWFrZQorICBlY2hvICJDTWFrZSB0YXJnZXRzIG5hbWVkIGluY29y
cmVjdGx5IgorICBleGl0IDEKK2ZpCisKK3VuaW5zdGFsbF9hYnNsCitwb3BkCisKK2lmIFtbICEg
IiR7bHRzX2luc3RhbGx9IiBdXTsgdGhlbgorICAjIFRlc3QgdGhhdCB3ZSB3YXJuIGlmIGluc3Rh
bGxlZCB3aXRob3V0IGEgcHJlZml4IG9yIGEgc3lzdGVtIHByZWZpeAorICBvdXRwdXQ9IiQoaW5z
dGFsbF9hYnNsIDI+JjEpIgorICBpZiBbWyAiJHtvdXRwdXR9IiAhPSAqIlBsZWFzZSBzZXQgQ01B
S0VfSU5TVEFMTF9QUkVGSVgiKiBdXTsgdGhlbgorICAgIGVjaG8gIkluc3RhbGwgd2l0aG91dCBw
cmVmaXggZGlkbid0IHdhcm4gYXMgZXhwZWN0ZWQuIE91dHB1dDoiCisgICAgZWNobyAiJHtvdXRw
dXR9IgorICAgIGV4aXQgMQorICBmaQorICB1bmluc3RhbGxfYWJzbAorCisgIG91dHB1dD0iJChp
bnN0YWxsX2Fic2wgL3VzciAyPiYxKSIKKyAgaWYgW1sgIiR7b3V0cHV0fSIgIT0gKiJQbGVhc2Ug
c2V0IENNQUtFX0lOU1RBTExfUFJFRklYIiogXV07IHRoZW4KKyAgICBlY2hvICJJbnN0YWxsIHdp
dGggL3VzciBkaWRuJ3Qgd2FybiBhcyBleHBlY3RlZC4gT3V0cHV0OiIKKyAgICBlY2hvICIke291
dHB1dH0iCisgICAgZXhpdCAxCisgIGZpCisgIHVuaW5zdGFsbF9hYnNsCitmaQorCitlY2hvICJJ
bnN0YWxsIHRlc3QgY29tcGxldGUhIgorZXhpdCAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvQ01ha2VMaXN0cy50eHQKaW5kZXggOWE3ZTEwMzFiMjMuLjg2ZjU2MzQ0ZTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUs
NyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
IyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQsMzAgKzE0LDQwIEBACiAjIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgogIwogCi0jIFdlIHJlcXVpcmUgMy4wIGZvciBtb2Rlcm4sIHRh
cmdldC1iYXNlZCBDTWFrZS4gIFdlIHJlcXVpcmUgMy4xIGZvciB0aGUgdXNlIG9mCi0jIENYWF9T
VEFOREFSRCBpbiBvdXIgdGFyZ2V0cy4KLWNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAz
LjEpCi1wcm9qZWN0KGFic2wpCisjIE1vc3Qgd2lkZWx5IHVzZWQgZGlzdHJpYnV0aW9ucyBoYXZl
IGNtYWtlIDMuNSBvciBncmVhdGVyIGF2YWlsYWJsZSBhcyBvZiBNYXJjaAorIyAyMDE5LiAgQSBu
b3RhYmxlIGV4Y2VwdGlvbiBpcyBSSEVMLTcgKENlbnRPUzcpLiAgWW91IGNhbiBpbnN0YWxsIGEg
Y3VycmVudAorIyB2ZXJzaW9uIG9mIENNYWtlIGJ5IGZpcnN0IGluc3RhbGxpbmcgRXh0cmEgUGFj
a2FnZXMgZm9yIEVudGVycHJpc2UgTGludXgKKyMgKGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcv
d2lraS9FUEVMI0V4dHJhX1BhY2thZ2VzX2Zvcl9FbnRlcnByaXNlX0xpbnV4Xy4yOEVQRUwuMjkp
CisjIGFuZCB0aGVuIGlzc3VpbmcgYHl1bSBpbnN0YWxsIGNtYWtlM2Agb24gdGhlIGNvbW1hbmQg
bGluZS4KK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjUpCiAKLWxpc3QoQVBQRU5E
IENNQUtFX01PRFVMRV9QQVRIICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9DTWFrZSkKKyMgQ29tcGls
ZXIgaWQgZm9yIEFwcGxlIENsYW5nIGlzIG5vdyBBcHBsZUNsYW5nLgorY21ha2VfcG9saWN5KFNF
VCBDTVAwMDI1IE5FVykKIAotaW5jbHVkZShHTlVJbnN0YWxsRGlycykKLWluY2x1ZGUoQWJzZWls
SGVscGVycykKKyMgaWYgY29tbWFuZCBjYW4gdXNlIElOX0xJU1QKK2NtYWtlX3BvbGljeShTRVQg
Q01QMDA1NyBORVcpCisKKyMgUHJvamVjdCB2ZXJzaW9uIHZhcmlhYmxlcyBhcmUgdGhlIGVtcHR5
IHN0ZDo6c3RyaW5nIGlmIHZlcnNpb24gaXMgdW5zcGVjaWZpZWQKK2NtYWtlX3BvbGljeShTRVQg
Q01QMDA0OCBORVcpCiAKK3Byb2plY3QoYWJzbCBDWFgpCiAKLSMgY29uZmlnIG9wdGlvbnMKLWlm
IChNU1ZDKQotICAjIC93ZDQwMDUgIG1hY3JvLXJlZGVmaW5pdGlvbgotICAjIC93ZDQwNjggIHVu
a25vd24gcHJhZ21hCi0gICMgL3dkNDI0NCAgY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5
cGUyJwotICAjIC93ZDQyNjcgIGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAndHlwZTInCi0g
ICMgL3dkNDgwMCAgZm9yY2UgdmFsdWUgdG8gYm9vbCAndHJ1ZScgb3IgJ2ZhbHNlJyAocGVyZm9y
bWFuY2Ugd2FybmluZykKLSAgYWRkX2NvbXBpbGVfb3B0aW9ucygvVzMgL3dkNDAwNSAvd2Q0MDY4
IC93ZDQyNDQgL3dkNDI2NyAvd2Q0ODAwKQotICBhZGRfZGVmaW5pdGlvbnMoL0ROT01JTk1BWCAv
RFdJTjMyX0xFQU5fQU5EX01FQU49MSAvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EX1NDTF9T
RUNVUkVfTk9fV0FSTklOR1MpCisjIHdoZW4gYWJzbCBpcyBpbmNsdWRlZCBhcyBzdWJwcm9qZWN0
IChpLmUuIHVzaW5nIGFkZF9zdWJkaXJlY3RvcnkoYWJzZWlsLWNwcCkpCisjIGluIHRoZSBzb3Vy
Y2UgdHJlZSBvZiBhIHByb2plY3QgdGhhdCB1c2VzIGl0LCBpbnN0YWxsIHJ1bGVzIGFyZSBkaXNh
YmxlZC4KK2lmKE5PVCAiXiR7Q01BS0VfU09VUkNFX0RJUn0kIiBTVFJFUVVBTCAiXiR7UFJPSkVD
VF9TT1VSQ0VfRElSfSQiKQorICBzZXQoQUJTTF9FTkFCTEVfSU5TVEFMTCBGQUxTRSkKIGVsc2Uo
KQotICBzZXQoQUJTTF9TVERfQ1hYX0ZMQUcgIi1zdGQ9YysrMTEiIENBQ0hFIFNUUklORyAiYysr
IHN0ZCBmbGFnIChkZWZhdWx0OiBjKysxMSkiKQorICBzZXQoQUJTTF9FTkFCTEVfSU5TVEFMTCBU
UlVFKQogZW5kaWYoKQogCitsaXN0KEFQUEVORCBDTUFLRV9NT0RVTEVfUEFUSAorICAke0NNQUtF
X0NVUlJFTlRfTElTVF9ESVJ9L0NNYWtlCisgICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vYWJz
bC9jb3B0cworKQorCitpbmNsdWRlKEFic2VpbEluc3RhbGxEaXJzKQoraW5jbHVkZShDTWFrZVBh
Y2thZ2VDb25maWdIZWxwZXJzKQoraW5jbHVkZShBYnNlaWxIZWxwZXJzKQogCiAKICMjCkBAIC01
NCwxMSArNjQsMTEgQEAgZW5kaWYoKQogIyBpbmNsdWRlIGN1cnJlbnQgcGF0aAogbGlzdChBUFBF
TkQgQUJTTF9DT01NT05fSU5DTFVERV9ESVJTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfSkK
IAotIyAtc3RkPVgKLXNldChDTUFLRV9DWFhfRkxBR1MgIiR7QUJTTF9TVERfQ1hYX0ZMQUd9ICR7
Q01BS0VfQ1hYX0ZMQUdTfSIpCi0KLSMgLWZleGNlcHRpb25zCi1zZXQoQUJTTF9FWENFUFRJT05T
X0ZMQUcgIiR7Q01BS0VfQ1hYX0VYQ0VQVElPTlN9IikKK2lmKCIke0NNQUtFX0NYWF9DT01QSUxF
Ul9JRH0iIE1BVENIRVMgIkNsYW5nIikKKyAgc2V0KEFCU0xfVVNJTkdfQ0xBTkcgT04pCitlbHNl
KCkKKyAgc2V0KEFCU0xfVVNJTkdfQ0xBTkcgT0ZGKQorZW5kaWYoKQogCiAjIGZpbmQgZGVwZW5k
ZW5jaWVzCiAjIyBwdGhyZWFkCkBAIC04MCw3ICs5MCw5IEBAIGVuZGlmKCkKIGlmKEJVSUxEX1RF
U1RJTkcpCiAKICAgaWYoJHtBQlNMX1VTRV9HT09HTEVURVNUX0hFQUR9KQotICAgIGluY2x1ZGUo
Q01ha2UvRG93bmxvYWRHVGVzdC5jbWFrZSkKKyAgICBpbmNsdWRlKENNYWtlL0dvb2dsZXRlc3Qv
RG93bmxvYWRHVGVzdC5jbWFrZSkKKyAgICBzZXQoYWJzbF9ndGVzdF9zcmNfZGlyICR7Q01BS0Vf
QklOQVJZX0RJUn0vZ29vZ2xldGVzdC1zcmMpCisgICAgc2V0KGFic2xfZ3Rlc3RfYnVpbGRfZGly
ICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1idWlsZCkKICAgZW5kaWYoKQogCiAgIGNo
ZWNrX3RhcmdldChndGVzdCkKQEAgLTk2LDMgKzEwOCw1MyBAQCBpZihCVUlMRF9URVNUSU5HKQog
ZW5kaWYoKQogCiBhZGRfc3ViZGlyZWN0b3J5KGFic2wpCisKK2lmKEFCU0xfRU5BQkxFX0lOU1RB
TEwpCisgICMgYWJzbDpsdHMtcmVtb3ZlLWJlZ2luKHN5c3RlbSBpbnN0YWxsYXRpb24gaXMgc3Vw
cG9ydGVkIGZvciBMVFMgcmVsZWFzZXMpCisgICMgV2UgZG9uJ3Qgc3VwcG9ydCBzeXN0ZW0td2lk
ZSBpbnN0YWxsYXRpb24KKyAgbGlzdChBUFBFTkQgU1lTVEVNX0lOU1RBTExfRElSUyAiL3Vzci9s
b2NhbCIgIi91c3IiICIvb3B0LyIgIi9vcHQvbG9jYWwiICJjOi9Qcm9ncmFtIEZpbGVzLyR7UFJP
SkVDVF9OQU1FfSIpCisgIGlmKE5PVCBERUZJTkVEIENNQUtFX0lOU1RBTExfUFJFRklYIE9SIENN
QUtFX0lOU1RBTExfUFJFRklYIElOX0xJU1QgU1lTVEVNX0lOU1RBTExfRElSUykKKyAgICBtZXNz
YWdlKFdBUk5JTkcgIlwKKyAgVGhlIGRlZmF1bHQgYW5kIHN5c3RlbS1sZXZlbCBpbnN0YWxsIGRp
cmVjdG9yaWVzIGFyZSB1bnN1cHBvcnRlZCBleGNlcHQgaW4gTFRTIFwKKyAgcmVsZWFzZXMgb2Yg
QWJzZWlsLiAgUGxlYXNlIHNldCBDTUFLRV9JTlNUQUxMX1BSRUZJWCB0byBpbnN0YWxsIEFic2Vp
bCBpbiB5b3VyIFwKKyAgc291cmNlIG9yIGJ1aWxkIHRyZWUgZGlyZWN0bHkuXAorICAgICIpCisg
IGVuZGlmKCkKKyAgIyBhYnNsOmx0cy1yZW1vdmUtZW5kCisKKyAgIyBpbnN0YWxsIGFzIGEgc3Vi
ZGlyZWN0b3J5IG9ubHkKKyAgaW5zdGFsbChFWFBPUlQgJHtQUk9KRUNUX05BTUV9VGFyZ2V0cwor
ICAgIE5BTUVTUEFDRSBhYnNsOjoKKyAgICBERVNUSU5BVElPTiAiJHtBQlNMX0lOU1RBTExfQ09O
RklHRElSfSIKKyAgKQorCisgIGNvbmZpZ3VyZV9wYWNrYWdlX2NvbmZpZ19maWxlKAorICAgIENN
YWtlL2Fic2xDb25maWcuY21ha2UuaW4KKyAgICAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9LyR7UFJP
SkVDVF9OQU1FfUNvbmZpZy5jbWFrZSIKKyAgICBJTlNUQUxMX0RFU1RJTkFUSU9OICIke0FCU0xf
SU5TVEFMTF9DT05GSUdESVJ9IgorICApCisgIGluc3RhbGwoRklMRVMgIiR7UFJPSkVDVF9CSU5B
UllfRElSfS8ke1BST0pFQ1RfTkFNRX1Db25maWcuY21ha2UiCisgICAgREVTVElOQVRJT04gIiR7
QUJTTF9JTlNUQUxMX0NPTkZJR0RJUn0iCisgICkKKworICAjIEFic2VpbCBvbmx5IGhhcyBhIHZl
cnNpb24gaW4gTFRTIHJlbGVhc2VzLiAgVGhpcyBtZWNoYW5pc20gaXMgYWNjb21wbGlzaGVkCisg
ICMgQWJzZWlsJ3MgaW50ZXJuYWwgQ29weWJhcmEgKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv
Y29weWJhcmEpIHdvcmtmbG93cyBhbmQKKyAgIyBpc24ndCB2aXNpYmxlIGluIHRoZSBDTWFrZSBi
dWlsZHN5c3RlbSBpdHNlbGYuCisgIGlmKGFic2xfVkVSU0lPTikKKyAgICB3cml0ZV9iYXNpY19w
YWNrYWdlX3ZlcnNpb25fZmlsZSgKKyAgICAgICIke1BST0pFQ1RfQklOQVJZX0RJUn0vJHtQUk9K
RUNUX05BTUV9Q29uZmlnVmVyc2lvbi5jbWFrZSIKKyAgICAgIENPTVBBVElCSUxJVFkgRXhhY3RW
ZXJzaW9uCisgICAgKQorCisgICAgaW5zdGFsbChGSUxFUyAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9
LyR7UFJPSkVDVF9OQU1FfUNvbmZpZ1ZlcnNpb24uY21ha2UiCisgICAgICBERVNUSU5BVElPTiAk
e0FCU0xfSU5TVEFMTF9DT05GSUdESVJ9CisgICAgKQorICBlbmRpZigpICAjIGFic2xfVkVSU0lP
TgorCisgIGluc3RhbGwoRElSRUNUT1JZIGFic2wKKyAgICBERVNUSU5BVElPTiAke0FCU0xfSU5T
VEFMTF9JTkNMVURFRElSfQorICAgIEZJTEVTX01BVENISU5HCisgICAgICBQQVRURVJOICIqLmlu
YyIKKyAgICAgIFBBVFRFUk4gIiouaCIKKyAgKQorZW5kaWYoKSAgIyBBQlNMX0VOQUJMRV9JTlNU
QUxMCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvQ09OVFJJQlVUSU5HLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NPTlRSSUJVVElORy5tZAppbmRl
eCA0MDM1MWRkY2ZhYS4uZjRjYjRhMjllZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DT05UUklCVVRJTkcubWQK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL0NPTlRSSUJVVElORy5tZApAQCAtMTgsNiArMTgsNTMgQEAgWW91IGdlbmVyYWxseSBv
bmx5IG5lZWQgdG8gc3VibWl0IGEgQ0xBIG9uY2UsIHNvIGlmIHlvdSd2ZSBhbHJlYWR5IHN1Ym1p
dHRlZCBvbmUKIChldmVuIGlmIGl0IHdhcyBmb3IgYSBkaWZmZXJlbnQgcHJvamVjdCksIHlvdSBw
cm9iYWJseSBkb24ndCBuZWVkIHRvIGRvIGl0CiBhZ2Fpbi4KIAorIyMgQ29udHJpYnV0aW9uIEd1
aWRlbGluZXMKKworUG90ZW50aWFsIGNvbnRyaWJ1dG9ycyBzb21ldGltZXMgYXNrIHVzIGlmIHRo
ZSBBYnNlaWwgcHJvamVjdCBpcyB0aGUgYXBwcm9wcmlhdGUKK2hvbWUgZm9yIHRoZWlyIHV0aWxp
dHkgbGlicmFyeSBjb2RlIG9yIGZvciBzcGVjaWZpYyBmdW5jdGlvbnMgaW1wbGVtZW50aW5nCitt
aXNzaW5nIHBvcnRpb25zIG9mIHRoZSBzdGFuZGFyZC4gT2Z0ZW4sIHRoZSBhbnN3ZXIgdG8gdGhp
cyBxdWVzdGlvbiBpcyAibm8iLgorV2XigJlkIGxpa2UgdG8gYXJ0aWN1bGF0ZSBvdXIgdGhpbmtp
bmcgb24gdGhpcyBpc3N1ZSBzbyB0aGF0IG91ciBjaG9pY2VzIGNhbiBiZQordW5kZXJzdG9vZCBi
eSBldmVyeW9uZSBhbmQgc28gdGhhdCBjb250cmlidXRvcnMgY2FuIGhhdmUgYSBiZXR0ZXIgaW50
dWl0aW9uCithYm91dCB3aGV0aGVyIEFic2VpbCBtaWdodCBiZSBpbnRlcmVzdGVkIGluIGFkb3B0
aW5nIGEgbmV3IGxpYnJhcnkuCisKKyMjIyBQcmlvcml0aWVzCisKK0FsdGhvdWdoIG91ciBtaXNz
aW9uIGlzIHRvIGF1Z21lbnQgdGhlIEMrKyBzdGFuZGFyZCBsaWJyYXJ5LCBvdXIgZ29hbCBpcyBu
b3QgdG8KK3Byb3ZpZGUgYSBmdWxsIGZvcndhcmQtY29tcGF0aWJsZSBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgbGF0ZXN0IHN0YW5kYXJkLiBGb3IgdXMKK3RvIGNvbnNpZGVyIGEgbGlicmFyeSBmb3Ig
aW5jbHVzaW9uIGluIEFic2VpbCwgaXQgaXMgbm90IGVub3VnaCB0aGF0IGEgbGlicmFyeQoraXMg
dXNlZnVsLiBXZSBnZW5lcmFsbHkgY2hvb3NlIHRvIHJlbGVhc2UgYSBsaWJyYXJ5IHdoZW4gaXQg
bWVldHMgYXQgbGVhc3Qgb25lCitvZiB0aGUgZm9sbG93aW5nIGNyaXRlcmlhOgorCisqICAgKipX
aWRlc3ByZWFkIHVzYWdlKiogLSBVc2luZyBvdXIgaW50ZXJuYWwgY29kZWJhc2UgdG8gaGVscCBn
YXVnZSB1c2FnZSwgbW9zdAorICAgIG9mIHRoZSBsaWJyYXJpZXMgd2UndmUgcmVsZWFzZWQgaGF2
ZSB0ZW5zIG9mIHRob3VzYW5kcyBvZiB1c2Vycy4KKyogICAqKkFudGljaXBhdGVkIHdpZGVzcHJl
YWQgdXNhZ2UqKiAtIFByZS1hZG9wdGlvbiBvZiBzb21lIHN0YW5kYXJkLWNvbXBsaWFudAorICAg
IEFQSXMgbWF5IG5vdCBoYXZlIGJyb2FkIGFkb3B0aW9uIGluaXRpYWxseSBidXQgY2FuIGJlIGV4
cGVjdGVkIHRvIHBpY2sgdXAKKyAgICB1c2FnZSB3aGVuIGl0IHJlcGxhY2VzIGxlZ2FjeSBBUElz
LiBgYWJzbDo6ZnJvbV9jaGFyc2AsIGZvciBleGFtcGxlLAorICAgIHJlcGxhY2VzIGV4aXN0aW5n
IGNvZGUgdGhhdCBjb252ZXJ0cyBzdHJpbmdzIHRvIG51bWJlcnMgYW5kIHdpbGwgdGhlcmVmb3Jl
CisgICAgbGlrZWx5IHNlZSB1c2FnZSBncm93dGguCisqICAgKipIaWdoIGltcGFjdCoqIC0gQVBJ
cyB0aGF0IHByb3ZpZGUgYSBrZXkgc29sdXRpb24gdG8gYSBzcGVjaWZpYyBwcm9ibGVtLAorICAg
IHN1Y2ggYXMgYGFic2w6OkZpeGVkQXJyYXlgLCBoYXZlIGhpZ2hlciBpbXBhY3QgdGhhbiB1c2Fn
ZSBudW1iZXJzIG1heSBzaWduYWwKKyAgICBhbmQgYXJlIHJlbGVhc2VkIGJlY2F1c2Ugb2YgdGhl
aXIgaW1wb3J0YW5jZS4KKyogICAqKkRpcmVjdCBzdXBwb3J0IGZvciBhIGxpYnJhcnkgdGhhdCBm
YWxscyB1bmRlciBvbmUgb2YgdGhlIGFib3ZlKiogLSBXaGVuIHdlCisgICAgd2FudCBhY2Nlc3Mg
dG8gYSBzbWFsbGVyIGxpYnJhcnkgYXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGZvciBhCisg
ICAgaGlnaGVyLXByaW9yaXR5IGxpYnJhcnkgd2UgcGxhbiB0byByZWxlYXNlLCB3ZSBtYXkgcmVs
ZWFzZSBpdCwgYXMgd2UgZGlkCisgICAgd2l0aCBwb3J0aW9ucyBvZiBgYWJzbC9tZXRhL3R5cGVf
dHJhaXRzLmhgLiBPbmUgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0CisgICAgdGhlIHByZXNl
bmNlIG9mIGEgbGlicmFyeSBpbiBBYnNlaWwgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0
IG90aGVyCisgICAgc2ltaWxhciBsaWJyYXJpZXMgd291bGQgYmUgYSBoaWdoIHByaW9yaXR5Lgor
CisjIyMgQVBJIEZyZWV6ZSBDb25zZXF1ZW5jZXMKKworVmlhIHRoZQorW0Fic2VpbCBDb21wYXRp
YmlsaXR5IEd1aWRlbGluZXNdKGh0dHBzOi8vYWJzZWlsLmlvL2Fib3V0L2NvbXBhdGliaWxpdHkp
LCB3ZQoraGF2ZSBwcm9taXNlZCBhIGxhcmdlIGRlZ3JlZSBvZiBBUEkgc3RhYmlsaXR5LiBJbiBw
YXJ0aWN1bGFyLCB3ZSB3aWxsIG5vdCBtYWtlCitiYWNrd2FyZC1pbmNvbXBhdGlibGUgY2hhbmdl
cyB0byByZWxlYXNlZCBBUElzIHdpdGhvdXQgYWxzbyBzaGlwcGluZyBhIHRvb2wgb3IKK3Byb2Nl
c3MgdGhhdCBjYW4gdXBncmFkZSBvdXIgdXNlcnMnIGNvZGUuIFdlIGFyZSBub3QgeWV0IGF0IHRo
ZSBwb2ludCBvZiBlYXNpbHkKK3JlbGVhc2luZyBzdWNoIHRvb2xzLiBUaGVyZWZvcmUsIGF0IHRo
aXMgdGltZSwgc2hpcHBpbmcgYSBsaWJyYXJ5IGVzdGFibGlzaGVzIGFuCitBUEkgY29udHJhY3Qg
d2hpY2ggaXMgYm9yZGVybGluZSB1bmNoYW5nZWFibGUuIChXZSBjYW4gYWRkIG5ldyBmdW5jdGlv
bmFsaXR5LAorYnV0IHdlIGNhbm5vdCBlYXNpbHkgY2hhbmdlIGV4aXN0aW5nIGJlaGF2aW9yLikg
VGhpcyBjb25zdHJhaW50IGZvcmNlcyB1cyB0bwordmVyeSBjYXJlZnVsbHkgcmV2aWV3IGFsbCBB
UElzIHRoYXQgd2Ugc2hpcC4KKworCiAjIyBDb2RpbmcgU3R5bGUKIAogVG8ga2VlcCB0aGUgc291
cmNlIGNvbnNpc3RlbnQsIHJlYWRhYmxlLCBkaWZmYWJsZSBhbmQgZWFzeSB0byBtZXJnZSwgd2Ug
dXNlIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9MSUNFTlNFIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0xJQ0VOU0UKaW5kZXggZmVmN2Q5Njc4MTUu
LmNjZDYxZGNmZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvTElDRU5TRQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvTElDRU5TRQpAQCAtMSw3
ICsxLDcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vu
c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQK
LSAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8K
KyAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
CiAKICAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBVU0UsIFJFUFJPRFVDVElPTiwgQU5EIERJ
U1RSSUJVVElPTgogCkBAIC0xOTMsMTIgKzE5MywxMSBAQAogICAgeW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAKLSAgICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAg
ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgotICAgCi0gICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9MVFMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvTFRTLm1kCmluZGV4IDM4NWI0ZjA2MmJmLi4wODYwNmYxNTdlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL0xUUy5tZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvTFRTLm1kCkBAIC0xMCw0ICsxMCw1IEBAIHR1cm4s
IHVzZSBBYnNlaWwuIChGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdXIgcmVsZWFzZXMsIHNl
ZSB0aGUKIAogVGhlIGZvbGxvd2luZyBsaXN0cyBMVFMgYnJhbmNoZXMgYW5kIHRoZSBkYXRlcyBv
biB3aGljaCB0aGV5IGhhdmUgYmVlbiByZWxlYXNlZDoKIAorKiBbTFRTIEJyYW5jaCBEZWNlbWJl
ciAxOCwgMjAxOF0oaHR0cHM6Ly9naXRodWIuY29tL2Fic2VpbC9hYnNlaWwtY3BwL3RyZWUvbHRz
XzIwMThfMTJfMTgvKQogKiBbTFRTIEJyYW5jaCBKdW5lIDIwLCAyMDE4XShodHRwczovL2dpdGh1
Yi5jb20vYWJzZWlsL2Fic2VpbC1jcHAvdHJlZS9sdHNfMjAxOF8wNl8yMC8pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvUkVBRE1FLmNocm9taXVtIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1JFQURNRS5jaHJvbWl1bQppbmRleCA2MDI2YTJmNGUyMC4u
NWQ3YWNiYTQ4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9SRUFETUUuY2hyb21pdW0KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1JFQURNRS5j
aHJvbWl1bQpAQCAtNCw3ICs0LDcgQEAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vYWJzZWlsL2Fi
c2VpbC1jcHAKIExpY2Vuc2U6IEFwYWNoZSAyLjAKIExpY2Vuc2UgRmlsZTogTElDRU5TRQogVmVy
c2lvbjogMAotUmV2aXNpb246IGZiNDYyMjI0YzA1ODQ4Nzc2M2YyNjNiNzk5NWQ3MGVmZDAyNDJj
MTcKK1JldmlzaW9uOiA0ZWY1NzQwNjRlNzViODZmMTE1NTQ5ZTllYjRjN2U4MDY3ODFiM2FiCiBT
ZWN1cml0eSBDcml0aWNhbDogeWVzCiAKIERlc2NyaXB0aW9uOgpAQCAtMTgsOSArMTgsMTAgQEAg
SG93IHRvIHVwZGF0ZSBBYnNlaWw6CiAKIDIuIENvcHkgdGhlIGNvbnRlbnQgb2YgdGhlIEFic2Vp
bCBnaXQgcmVwbyB0byAvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAuCiAKLTMuIEZyb20gLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwLyBsYXVuY2ggLi9yZW5hbWVfZHluYW1pY19hbm5vdGF0aW9ucy5z
aC4KLSAgIFRoaXMgc2NyaXB0IHdpbGwgcmV3cml0ZSBkeW5hbWljX2Fubm90YXRpb25zIG1hY3Jv
cyBhbmQgZnVuY3Rpb24gaW5zaWRlCi0gICBBYnNlaWwgaW4gb3JkZXIgdG8gYXZvaWQgT0RSIHZp
b2xhdGlvbnMgYW5kIG1hY3JvIGNsYXNoaW5nIHdpdGggQ2hyb21pdW0KKzMuIEZyb20gLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwLyBsYXVuY2ggLi9yZW5hbWVfYW5ub3RhdGlvbnMuc2guCisgICBU
aGlzIHNjcmlwdCB3aWxsIHJld3JpdGUgZHluYW1pY19hbm5vdGF0aW9ucyBhbmQgdGhyZWFkX2Fu
bm90YXRpb25zCisgICBtYWNyb3MgYW5kIGZ1bmN0aW9uIGluc2lkZSBBYnNlaWwgaW4gb3JkZXIg
dG8gYXZvaWQgT0RSIHZpb2xhdGlvbnMKKyAgIGFuZCBtYWNybyBjbGFzaGluZyB3aXRoIENocm9t
aXVtCiAgICAoc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYWJzZWlsL2Fic2VpbC1jcHAvaXNzdWVz
LzEyMikuCiAKIExvY2FsIE1vZGlmaWNhdGlvbnM6CkBAIC0zMCw1ICszMSw2IEBAIExvY2FsIE1v
ZGlmaWNhdGlvbnM6CiAKICogQWxsIHRoZSBCVUlMRC5iYXplbCBmaWxlcyBoYXMgYmVlbiB0cmFu
c2xhdGVkIHRvIEJVSUxELmduIGZpbGVzLgogCi0qIEZ1bmN0aW9ucyBhbmQgbWFjcm9zIGluIGFi
c2wvYmFzZS9keW5hbWljX2Fubm90YXRpb25zLntoLGNjfSBoYXZlIGJlZW4gcmVuYW1lZAotICB0
byBhdm9pZCBPRFIgdmlvbGF0aW9ucyAoc2VlIHN0ZXAgMykuCisqIEZ1bmN0aW9ucyBhbmQgbWFj
cm9zIGluIGFic2wvYmFzZS9keW5hbWljX2Fubm90YXRpb25zLntoLGNjfSBhbmQKKyAgYWJzbC9i
YXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIGhhdmUgYmVlbiByZW5hbWVkIHRvIGF2b2lkIE9EUgor
ICB2aW9sYXRpb25zIGFuZCBtYWNybyBjbGFzaGVzIHdpdGggQ2hyb21pdW0gKHNlZSBzdGVwIDMp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9SRUFETUUubWQKaW5kZXggOGVlZDU3NTFiZjUu
Ljg1ZGU1Njk2NThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvUkVBRE1FLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9SRUFETUUubWQKQEAg
LTQyLDggKzQyLDggQEAgdGhlIEFic2VpbCBjb2RlLCBydW5uaW5nIHRlc3RzLCBhbmQgZ2V0dGlu
ZyBhIHNpbXBsZSBiaW5hcnkgd29ya2luZy4KIDxhIG5hbWU9ImJ1aWxkIj48L2E+CiAjIyBCdWls
ZGluZyBBYnNlaWwKIAotW0JhemVsXShodHRwOi8vYmF6ZWwuYnVpbGQpIGlzIHRoZSBvZmZpY2lh
bCBidWlsZCBzeXN0ZW0gZm9yIEFic2VpbCwKLXdoaWNoIGlzIHN1cHBvcnRlZCBvbiBtb3N0IG1h
am9yIHBsYXRmb3JtcyAoTGludXgsIFdpbmRvd3MsIE1hY09TLCBmb3IgZXhhbXBsZSkKK1tCYXpl
bF0oaHR0cHM6Ly9iYXplbC5idWlsZCkgaXMgdGhlIG9mZmljaWFsIGJ1aWxkIHN5c3RlbSBmb3Ig
QWJzZWlsLAord2hpY2ggaXMgc3VwcG9ydGVkIG9uIG1vc3QgbWFqb3IgcGxhdGZvcm1zIChMaW51
eCwgV2luZG93cywgbWFjT1MsIGZvciBleGFtcGxlKQogYW5kIGNvbXBpbGVycy4gU2VlIHRoZSBb
cXVpY2tzdGFydF0oaHR0cHM6Ly9hYnNlaWwuaW8vZG9jcy9jcHAvcXVpY2tzdGFydCkgZm9yCiBt
b3JlIGluZm9ybWF0aW9uIG9uIGJ1aWxkaW5nIEFic2VpbCB1c2luZyB0aGUgQmF6ZWwgYnVpbGQg
c3lzdGVtLgogCkBAIC02MywxMCArNjMsMTQgQEAgQWJzZWlsIGNvbnRhaW5zIHRoZSBmb2xsb3dp
bmcgQysrIGxpYnJhcnkgY29tcG9uZW50czoKICAgPGJyIC8+IFRoZSBgYWxnb3JpdGhtYCBsaWJy
YXJ5IGNvbnRhaW5zIGFkZGl0aW9ucyB0byB0aGUgQysrIGA8YWxnb3JpdGhtPmAKICAgbGlicmFy
eSBhbmQgY29udGFpbmVyLWJhc2VkIHZlcnNpb25zIG9mIHN1Y2ggYWxnb3JpdGhtcy4KICogW2Bj
b250YWluZXJgXShhYnNsL2NvbnRhaW5lci8pCi0gIDxiciAvPiBUaGUgYGNvbnRhaW5lcmAgbGli
cmFyeSBjb250YWlucyBhZGRpdGlvbmFsIFNUTC1zdHlsZSBjb250YWluZXJzLgorICA8YnIgLz4g
VGhlIGBjb250YWluZXJgIGxpYnJhcnkgY29udGFpbnMgYWRkaXRpb25hbCBTVEwtc3R5bGUgY29u
dGFpbmVycywKKyAgaW5jbHVkaW5nIEFic2VpbCdzIHVub3JkZXJlZCAiU3dpc3MgdGFibGUiIGNv
bnRhaW5lcnMuCiAqIFtgZGVidWdnaW5nYF0oYWJzbC9kZWJ1Z2dpbmcvKQogICA8YnIgLz4gVGhl
IGBkZWJ1Z2dpbmdgIGxpYnJhcnkgY29udGFpbnMgY29kZSB1c2VmdWwgZm9yIGVuYWJsaW5nIGxl
YWsKLSAgY2hlY2tzLiBGdXR1cmUgdXBkYXRlcyB3aWxsIGFkZCBzdGFja3RyYWNlIGFuZCBzeW1i
b2xpemF0aW9uIHV0aWxpdGllcy4KKyAgY2hlY2tzLCBhbmQgc3RhY2t0cmFjZSBhbmQgc3ltYm9s
aXphdGlvbiB1dGlsaXRpZXMuCisqIFtgaGFzaGBdKGFic2wvaGFzaC8pCisgIDxiciAvPiBUaGUg
YGhhc2hgIGxpYnJhcnkgY29udGFpbnMgdGhlIGhhc2hpbmcgZnJhbWV3b3JrIGFuZCBkZWZhdWx0
IGhhc2gKKyAgZnVuY3RvciBpbXBsZW1lbnRhdGlvbnMgZm9yIGhhc2hhYmxlIHR5cGVzIGluIEFi
c2VpbC4KICogW2BtZW1vcnlgXShhYnNsL21lbW9yeS8pCiAgIDxiciAvPiBUaGUgYG1lbW9yeWAg
bGlicmFyeSBjb250YWlucyBDKysxMS1jb21wYXRpYmxlIHZlcnNpb25zIG9mCiAgIGBzdGQ6Om1h
a2VfdW5pcXVlKClgIGFuZCByZWxhdGVkIG1lbW9yeSBtYW5hZ2VtZW50IGZhY2lsaXRpZXMuCkBA
IC05MCw2ICs5NCw4IEBAIEFic2VpbCBjb250YWlucyB0aGUgZm9sbG93aW5nIEMrKyBsaWJyYXJ5
IGNvbXBvbmVudHM6CiAqIFtgdHlwZXNgXShhYnNsL3R5cGVzLykKICAgPGJyIC8+IFRoZSBgdHlw
ZXNgIGxpYnJhcnkgY29udGFpbnMgbm9uLWNvbnRhaW5lciB1dGlsaXR5IHR5cGVzLCBsaWtlIGEK
ICAgQysrMTEtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIHRoZSBDKysxNyBgc3RkOjpvcHRpb25hbGAg
dHlwZS4KKyogW2B1dGlsaXR5YF0oYWJzbC91dGlsaXR5LykKKyAgPGJyIC8+IFRoZSBgdXRpbGl0
eWAgbGlicmFyeSBjb250YWlucyB1dGlsaXR5IGFuZCBoZWxwZXIgY29kZS4KIAogIyMgTGljZW5z
ZQogCkBAIC0xMDAsOSArMTA2LDkgQEAgbGljZW5zZS4gU2VlIFtMSUNFTlNFXShMSUNFTlNFKSBm
b3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQWJzZWls
OgogCi0qIENvbnN1bHQgb3VyIFtBYnNlaWwgSW50cm9kdWN0aW9uXShodHRwOi8vYWJzZWlsLmlv
L2Fib3V0L2ludHJvKQotKiBSZWFkIFtXaHkgQWRvcHQgQWJzZWlsXShodHRwOi8vYWJzZWlsLmlv
L2Fib3V0L3BoaWxvc29waHkpIHRvIHVuZGVyc3RhbmQgb3VyCisqIENvbnN1bHQgb3VyIFtBYnNl
aWwgSW50cm9kdWN0aW9uXShodHRwczovL2Fic2VpbC5pby9hYm91dC9pbnRybykKKyogUmVhZCBb
V2h5IEFkb3B0IEFic2VpbF0oaHR0cHM6Ly9hYnNlaWwuaW8vYWJvdXQvcGhpbG9zb3BoeSkgdG8g
dW5kZXJzdGFuZCBvdXIKICAgZGVzaWduIHBoaWxvc29waHkuCiAqIFBlcnVzZSBvdXIKLSAgW0Fi
c2VpbCBDb21wYXRpYmlsaXR5IEd1YXJhbnRlZXNdKGh0dHA6Ly9hYnNlaWwuaW8vYWJvdXQvY29t
cGF0aWJpbGl0eSkgdG8KKyAgW0Fic2VpbCBDb21wYXRpYmlsaXR5IEd1YXJhbnRlZXNdKGh0dHBz
Oi8vYWJzZWlsLmlvL2Fib3V0L2NvbXBhdGliaWxpdHkpIHRvCiAgIHVuZGVyc3RhbmQgYm90aCB3
aGF0IHdlIHByb21pc2UgdG8geW91LCBhbmQgd2hhdCB3ZSBleHBlY3Qgb2YgeW91IGluIHJldHVy
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9VUEdSQURFUy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9VUEdSQURFUy5tZApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzU1OTlkMDg3OGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvVVBHUkFERVMubWQKQEAgLTAsMCArMSwxNyBAQAorIyBDKysgVXBncmFkZSBUb29scworCitB
YnNlaWwgbWF5IG9jY2Fzc2lvbmFsbHkgcmVsZWFzZSBBUEktYnJlYWtpbmcgY2hhbmdlcy4gQXMg
bm90ZWQgaW4gb3VyCitbQ29tcGF0aWJpbGl0eSBHdWlkZWxpbmVzXVtjb21wYXRpYmlsaXR5LWd1
aWRlXSwgd2Ugd2lsbCBhaW0gdG8gcHJvdmlkZSBhIHRvb2wKK3RvIGRvIHRoZSB3b3JrIG9mIGVm
ZmVjdGluZyBzdWNoIEFQSS1icmVha2luZyBjaGFuZ2VzLCB3aGVuIGFic29sdXRlbHkKK25lY2Vz
c2FyeS4KKworVGhlc2UgdG9vbHMgd2lsbCBiZSBsaXN0ZWQgb24gdGhlIFtDKysgVXBncmFkZSBU
b29sc11bdXBncmFkZS10b29sc10gZ3VpZGUgb24KK2h0dHBzOi8vYWJzZWlsLmlvLgorCitGb3Ig
bW9yZSBpbmZvcm1hdGlvbiwgdGhlIFtDKysgQXV0b21hdGVkIFVwZ3JhZGUgR3VpZGVdW2FwaS11
cGdyYWRlcy1ndWlkZV0KK291dGxpbmVzIHRoaXMgcHJvY2Vzcy4KKworW2NvbXBhdGliaWxpdHkt
Z3VpZGVdOiBodHRwczovL2Fic2VpbC5pby9hYm91dC9jb21wYXRpYmlsaXR5CitbYXBpLXVwZ3Jh
ZGVzLWd1aWRlXTogaHR0cHM6Ly9hYnNlaWwuaW8vZG9jcy9jcHAvdG9vbHMvYXBpLXVwZ3JhZGVz
CitbdXBncmFkZS10b29sc106IGh0dHBzOi8vYWJzZWlsLmlvL2RvY3MvY3BwL3Rvb2xzL3VwZ3Jh
ZGVzLworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvV09SS1NQQUNFIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1dPUktTUEFDRQppbmRleCA3MmVmMTM5
ODBjMi4uNDllMmQzY2I2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9XT1JLU1BBQ0UKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1dPUktTUEFD
RQpAQCAtMTUsOSArMTUsOSBAQCBodHRwX2FyY2hpdmUoCiAjIEdvb2dsZVRlc3QvR29vZ2xlTW9j
ayBmcmFtZXdvcmsuIFVzZWQgYnkgbW9zdCB1bml0LXRlc3RzLgogaHR0cF9hcmNoaXZlKAogICAg
ICBuYW1lID0gImNvbV9nb29nbGVfZ29vZ2xldGVzdCIsCi0gICAgIHVybHMgPSBbImh0dHBzOi8v
Z2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9hcmNoaXZlL2I0ZDQ0MzhkZjk0Nzk2NzVhNjMy
YjJmMTExMjVlNTcxMzM4MjJlY2UuemlwIl0sICAjIDIwMTgtMDctMTYKLSAgICAgc3RyaXBfcHJl
Zml4ID0gImdvb2dsZXRlc3QtYjRkNDQzOGRmOTQ3OTY3NWE2MzJiMmYxMTEyNWU1NzEzMzgyMmVj
ZSIsCi0gICAgIHNoYTI1NiA9ICI1YWFhNWQ1NjY1MTdjYWU3MTFlMmEzNTA1ZWE5YTY0MzhiZTFi
MzdmY2FhZTBlYmNiOTZjY2JhOWFhNTZmMjNhIiwKKyAgICAgdXJscyA9IFsiaHR0cHM6Ly9naXRo
dWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2FyY2hpdmUvYjZjZDQwNTI4NmVkODYzNWVjZTcxYzcy
ZjExOGU2NTlmNGFkZTNmYi56aXAiXSwgICMgMjAxOS0wMS0wNworICAgICBzdHJpcF9wcmVmaXgg
PSAiZ29vZ2xldGVzdC1iNmNkNDA1Mjg2ZWQ4NjM1ZWNlNzFjNzJmMTE4ZTY1OWY0YWRlM2ZiIiwK
KyAgICAgc2hhMjU2ID0gImZmN2E4MjczNmUxNThjMDc3ZTc2MTg4MjMyZWFjNzc5MTNhMTVkYWMw
YjIyNTA4YzM5MGFiM2Y4OGU2ZDZkODYiLAogKQogCiAjIEdvb2dsZSBiZW5jaG1hcmsuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL0JVSUxELmJhemVsCmluZGV4IGVkZDAy
NzRjNWQ4Li44NTMzMzBkNDQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvQlVJTEQuYmF6ZWwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvQlVJTEQuYmF6ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0y
NSwxMyArMjUsMTggQEAgY3JlYXRlX2xsdm1fY29uZmlnKAogICAgIHZpc2liaWxpdHkgPSBbIjpf
X3N1YnBhY2thZ2VzX18iXSwKICkKIAotIyBmb2xsb3dpbmcgY29uZmlncyBhcmUgYmFzZWQgb24g
bWFwcGluZyBkZWZpbmVkIGluOiBodHRwczovL2dpdC5pby92NUlqegorY29uZmlnX3NldHRpbmco
CisgICAgbmFtZSA9ICJvc3giLAorICAgIGNvbnN0cmFpbnRfdmFsdWVzID0gWworICAgICAgICAi
QGJhemVsX3Rvb2xzLy9wbGF0Zm9ybXM6b3N4IiwKKyAgICBdLAorKQorCiBjb25maWdfc2V0dGlu
ZygKICAgICBuYW1lID0gImlvcyIsCi0gICAgdmFsdWVzID0gewotICAgICAgICAiY3B1IjogImRh
cndpbiIsCi0gICAgfSwKLSAgICB2aXNpYmlsaXR5ID0gWyI6X19zdWJwYWNrYWdlc19fIl0sCisg
ICAgY29uc3RyYWludF92YWx1ZXMgPSBbCisgICAgICAgICJAYmF6ZWxfdG9vbHMvL3BsYXRmb3Jt
czppb3MiLAorICAgIF0sCiApCiAKIGNvbmZpZ19zZXR0aW5nKApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9DTWFrZUxpc3RzLnR4dAppbmRleCAxZDA5YjE5MzVkOC4u
M2U3ODM5N2M5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjAs
MTAgKzIwLDEyIEBAIGFkZF9zdWJkaXJlY3RvcnkoYmFzZSkKIGFkZF9zdWJkaXJlY3RvcnkoYWxn
b3JpdGhtKQogYWRkX3N1YmRpcmVjdG9yeShjb250YWluZXIpCiBhZGRfc3ViZGlyZWN0b3J5KGRl
YnVnZ2luZykKK2FkZF9zdWJkaXJlY3RvcnkoZmxhZ3MpCiBhZGRfc3ViZGlyZWN0b3J5KGhhc2gp
CiBhZGRfc3ViZGlyZWN0b3J5KG1lbW9yeSkKIGFkZF9zdWJkaXJlY3RvcnkobWV0YSkKIGFkZF9z
dWJkaXJlY3RvcnkobnVtZXJpYykKK2FkZF9zdWJkaXJlY3RvcnkocmFuZG9tKQogYWRkX3N1YmRp
cmVjdG9yeShzdHJpbmdzKQogYWRkX3N1YmRpcmVjdG9yeShzeW5jaHJvbml6YXRpb24pCiBhZGRf
c3ViZGlyZWN0b3J5KHRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vQlVJTEQuYmF6
ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9hbGdvcml0aG0vQlVJTEQuYmF6ZWwKaW5kZXggZDA0ZGM3MTIwNmUuLmM1MDZm
M2I5ZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vQlVJTEQuYmF6ZWwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYWxnb3JpdGhtL0JVSUxELmJhemVsCkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMTUsOCArMTUsOSBAQAogIwogCiBsb2FkKAotICAgICIvL2Fic2w6Y29wdHMuYnpsIiwK
KyAgICAiLy9hYnNsOmNvcHRzL2NvbmZpZ3VyZV9jb3B0cy5iemwiLAogICAgICJBQlNMX0RFRkFV
TFRfQ09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElOS09QVFMiLAogICAgICJBQlNMX1RFU1Rf
Q09QVFMiLAogKQogCkBAIC0yOCw2ICsyOSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJh
bGdvcml0aG0iLAogICAgIGhkcnMgPSBbImFsZ29yaXRobS5oIl0sCiAgICAgY29wdHMgPSBBQlNM
X0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAp
CiAKIGNjX3Rlc3QoCkBAIC0zNSw2ICszNyw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFs
bCIsCiAgICAgc3JjcyA9IFsiYWxnb3JpdGhtX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xf
VEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBk
ZXBzID0gWwogICAgICAgICAiOmFsZ29yaXRobSIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29n
bGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBAIC00NSw2ICs0OCw3IEBAIGNjX3Rlc3QoCiAgICAgbmFt
ZSA9ICJhbGdvcml0aG1fYmVuY2htYXJrIiwKICAgICBzcmNzID0gWyJlcXVhbF9iZW5jaG1hcmsu
Y2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
REVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0gWyJiZW5jaG1hcmsiXSwKICAgICBkZXBzID0g
WwogICAgICAgICAiOmFsZ29yaXRobSIsCkBAIC01OSw2ICs2Myw3IEBAIGNjX2xpYnJhcnkoCiAg
ICAgICAgICJjb250YWluZXIuaCIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiOmFsZ29yaXRobSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRl
cnMiLApAQCAtNzAsNiArNzUsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiY29udGFpbmVyX3Rl
c3QiLAogICAgIHNyY3MgPSBbImNvbnRhaW5lcl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNM
X1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAg
ZGVwcyA9IFsKICAgICAgICAgIjpjb250YWluZXIiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0JV
SUxELmduCmluZGV4IDM3ZWM2NjU3NjRkLi42NjViZTRhOTdjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YWxnb3JpdGhtL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9CVUlMRC5nbgpAQCAtNCw4
ICs0LDE1IEBACiAKIGltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIikKIAorIyBV
c2FnZSBvZiBBYnNlaWwgaW4gQ2hyb21pdW0gaXMgZ3VhcmRlZCBieSBhbiBleHBsaWNpdCBvcHQt
aW4gbGlzdCwgYmVmb3JlCisjIGFkZGluZyBwcm9qZWN0cyB0byB0aGlzIGxpc3QgcGxlYXNlIHJl
YWNoIG91dCB0byBjeHhAY2hyb21pdW0ub3JnIGFuZCBDQzoKKyMgLSBodHRwczovL2NzLmNocm9t
aXVtLm9yZy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9PV05FUlMKKyMKKyMg
TW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgYXQ6CisjIGh0dHBzOi8vZG9jcy5nb29nbGUu
Y29tL2RvY3VtZW50L2QvMURnUzEtQTNyemJvVExqcGY0bTFzcWtKZ1dqbllfUnUyZG9razFYMXZC
RFUKIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CiAgIHZpc2liaWxpdHkgPSBbCisgICAgIi8v
bGliYXNzaXN0YW50LyoiLAogICAgICIvL3RoaXJkX3BhcnR5L3dlYnJ0Yy8qIiwKICAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Q6
Z3Rlc3QiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYWxnb3JpdGhtL0NNYWtlTGlzdHMudHh0CmluZGV4IGZkZjQ1YzU1ZWQ2Li45ZmJlMzZmNjk4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2FsZ29yaXRobS9DTWFrZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTE0LDUwICsxNCw1NCBAQAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
ICMKIAotbGlzdChBUFBFTkQgQUxHT1JJVEhNX1BVQkxJQ19IRUFERVJTCi0gICJhbGdvcml0aG0u
aCIKLSAgImNvbnRhaW5lci5oIgotKQotCi0KLSMKLSMjIFRFU1RTCi0jCi0KLSMgdGVzdCBhbGdv
cml0aG1fdGVzdAotbGlzdChBUFBFTkQgQUxHT1JJVEhNX1RFU1RfU1JDCi0gICJhbGdvcml0aG1f
dGVzdC5jYyIKLSAgJHtBTEdPUklUSE1fUFVCTElDX0hFQURFUlN9Ci0gICR7QUxHT1JJVEhNX0lO
VEVSTkFMX0hFQURFUlN9Ci0pCi0KLWFic2xfaGVhZGVyX2xpYnJhcnkoCi0gIFRBUkdFVAotICAg
IGFic2xfYWxnb3JpdGhtCi0gIEVYUE9SVF9OQU1FCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUK
ICAgICBhbGdvcml0aG0KKyAgSERSUworICAgICJhbGdvcml0aG0uaCIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfREVGQVVMVF9DT1BUU30KKyAgUFVCTElDCiApCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VU
CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBhbGdvcml0aG1fdGVzdAotICBTT1VSQ0VTCi0g
ICAgJHtBTEdPUklUSE1fVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKKyAgU1JDUworICAg
ICJhbGdvcml0aG1fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAg
REVQUwogICAgIGFic2w6OmFsZ29yaXRobQorICAgIGdtb2NrX21haW4KICkKIAorYWJzbF9jY19s
aWJyYXJ5KAorICBOQU1FCisgICAgYWxnb3JpdGhtX2NvbnRhaW5lcgorICBIRFJTCisgICAgImNv
bnRhaW5lci5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6YWxnb3JpdGhtCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6bWV0
YQorICBQVUJMSUMKKykKIAotCi0KLSMgdGVzdCBjb250YWluZXJfdGVzdAotc2V0KENPTlRBSU5F
Ul9URVNUX1NSQyAiY29udGFpbmVyX3Rlc3QuY2MiKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAor
YWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgY29udGFpbmVyX3Rlc3QKLSAgU09VUkNFUwotICAg
ICR7Q09OVEFJTkVSX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbDo6YWxn
b3JpdGhtCisgIFNSQ1MKKyAgICAiY29udGFpbmVyX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjphbGdvcml0aG1fY29udGFpbmVyCisg
ICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6Om1lbW9yeQor
ICAgIGFic2w6OnNwYW4KKyAgICBnbW9ja19tYWluCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdv
cml0aG0vYWxnb3JpdGhtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vYWxnb3JpdGhtLmgKaW5kZXggM2Q2
NTg2NDM5ZmUuLmJiOTAyMTVkODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vYWxnb3Jp
dGhtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2FsZ29yaXRobS5oCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC05NCw3ICs5NCw3IEBAIEl0IFJvdGF0ZUltcGwo
SXQgZmlyc3QsIEl0IG1pZGRsZSwgSXQgbGFzdCwgc3RkOjpmYWxzZV90eXBlKSB7CiAvLyB0aGVu
IHRoZSBwcmVkaWNhdGUgaXMgbmV2ZXIgaW52b2tlZCBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMg
ZmFsc2UuCiAvLwogLy8gVGhpcyBpcyBhIEMrKzExLWNvbXBhdGlibGUgaW1wbGVtZW50YXRpb24g
b2YgQysrMTQgYHN0ZDo6ZXF1YWxgLiAgU2VlCi0vLyBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNv
bS93L2NwcC9hbGdvcml0aG0vZXF1YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisvLyBodHRwczov
L2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvYWxnb3JpdGhtL2VxdWFsIGZvciBtb3JlIGluZm9y
bWF0aW9uLgogdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcjEsIHR5cGVuYW1lIElucHV0SXRl
cjIsIHR5cGVuYW1lIFByZWQ+CiBib29sIGVxdWFsKElucHV0SXRlcjEgZmlyc3QxLCBJbnB1dEl0
ZXIxIGxhc3QxLCBJbnB1dEl0ZXIyIGZpcnN0MiwKICAgICAgICAgICAgSW5wdXRJdGVyMiBsYXN0
MiwgUHJlZCYmIHByZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9hbGdvcml0aG1f
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9hbGdvcml0aG1fdGVzdC5jYwppbmRleCBlNDMyMmJj
NGYyMC4uODFmY2NiNjEzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9hbGdvcml0aG1f
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vYWxnb3JpdGhtX3Rlc3QuY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29y
aXRobS9jb250YWluZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXIuaAppbmRleCA1M2Fi
MTU2ODZjNi4uYzg0ZGU0NjFhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWlu
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyLmgKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM2LDcgKzM2LDYgQEAKIC8vIEZvciB0ZW1wbGF0
ZSBwYXJhbWV0ZXIgYW5kIHZhcmlhYmxlIG5hbWluZywgYENgIGluZGljYXRlcyB0aGUgY29udGFp
bmVyIHR5cGUKIC8vIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBhcHBsaWVkLCBgUHJlZGAgaW5k
aWNhdGVzIHRoZSBwcmVkaWNhdGUgb2JqZWN0IHR5cGUKIC8vIHRvIGJlIHVzZWQgYnkgdGhlIGZ1
bmN0aW9uIGFuZCBgVGAgaW5kaWNhdGVzIHRoZSBhcHBsaWNhYmxlIGVsZW1lbnQgdHlwZS4KLS8v
CiAKICNpZm5kZWYgQUJTTF9BTEdPUklUSE1fQ09OVEFJTkVSX0hfCiAjZGVmaW5lIEFCU0xfQUxH
T1JJVEhNX0NPTlRBSU5FUl9IXwpAQCAtNDYsNiArNDUsOCBAQAogI2luY2x1ZGUgPGl0ZXJhdG9y
PgogI2luY2x1ZGUgPG51bWVyaWM+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8
dW5vcmRlcmVkX21hcD4KKyNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgogI2luY2x1ZGUgPHV0aWxp
dHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCkBAIC01NCw3ICs1NSw2IEBACiAjaW5jbHVkZSAiYWJz
bC9tZXRhL3R5cGVfdHJhaXRzLmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKLQogbmFtZXNwYWNlIGNv
bnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWwgewogCiAvLyBOT1RFOiBpdCBpcyBpbXBvcnRhbnQg
dG8gZGVmZXIgdG8gQURMIGxvb2t1cCBmb3IgYnVpbGRpbmcgd2l0aCBDKysgbW9kdWxlcywKQEAg
LTEwMSw2ICsxMDEsMTcgQEAgQ29udGFpbmVySXRlcjxDPiBjX2JlZ2luKEMmIGMpIHsgcmV0dXJu
IGJlZ2luKGMpOyB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KIENvbnRhaW5lckl0ZXI8Qz4gY19l
bmQoQyYgYykgeyByZXR1cm4gZW5kKGMpOyB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Ry
dWN0IElzVW5vcmRlcmVkQ29udGFpbmVyIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0
ZSA8Y2xhc3MgS2V5LCBjbGFzcyBULCBjbGFzcyBIYXNoLCBjbGFzcyBLZXlFcXVhbCwgY2xhc3Mg
QWxsb2NhdG9yPgorc3RydWN0IElzVW5vcmRlcmVkQ29udGFpbmVyPAorICAgIHN0ZDo6dW5vcmRl
cmVkX21hcDxLZXksIFQsIEhhc2gsIEtleUVxdWFsLCBBbGxvY2F0b3I+PiA6IHN0ZDo6dHJ1ZV90
eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBIYXNoLCBjbGFzcyBLZXlFcXVh
bCwgY2xhc3MgQWxsb2NhdG9yPgorc3RydWN0IElzVW5vcmRlcmVkQ29udGFpbmVyPHN0ZDo6dW5v
cmRlcmVkX3NldDxLZXksIEhhc2gsIEtleUVxdWFsLCBBbGxvY2F0b3I+PgorICAgIDogc3RkOjp0
cnVlX3R5cGUge307CisKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfYWxnb3JpdGhtX2ludGVy
bmFsCiAKIC8vIFBVQkxJQyBBUEkKQEAgLTQ5OSw2ICs1MTAsMTYgQEAgT3V0cHV0SXRlcmF0b3Ig
Y19tb3ZlKEMmJiBzcmMsIE91dHB1dEl0ZXJhdG9yIGRlc3QpIHsKICAgICAgICAgICAgICAgICAg
ICBjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpjX2VuZChzcmMpLCBkZXN0KTsKIH0KIAor
Ly8gY19tb3ZlX2JhY2t3YXJkKCkKKy8vCisvLyBDb250YWluZXItYmFzZWQgdmVyc2lvbiBvZiB0
aGUgPGFsZ29yaXRobT4gYHN0ZDo6bW92ZV9iYWNrd2FyZCgpYCBmdW5jdGlvbiB0bworLy8gbW92
ZSBhIGNvbnRhaW5lcidzIGVsZW1lbnRzIGludG8gYW4gaXRlcmF0b3IgaW4gcmV2ZXJzZSBvcmRl
ci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBlbmFtZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+
CitCaWRpcmVjdGlvbmFsSXRlcmF0b3IgY19tb3ZlX2JhY2t3YXJkKEMmJiBzcmMsIEJpZGlyZWN0
aW9uYWxJdGVyYXRvciBkZXN0KSB7CisgIHJldHVybiBzdGQ6Om1vdmVfYmFja3dhcmQoY29udGFp
bmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6Y19iZWdpbihzcmMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OmNfZW5kKHNyYyksIGRlc3Qp
OworfQorCiAvLyBjX3N3YXBfcmFuZ2VzKCkKIC8vCiAvLyBDb250YWluZXItYmFzZWQgdmVyc2lv
biBvZiB0aGUgPGFsZ29yaXRobT4gYHN0ZDo6c3dhcF9yYW5nZXMoKWAgZnVuY3Rpb24gdG8KQEAg
LTYzNiw3ICs2NTcsNiBAQCBjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpDb250YWluZXJJ
dGVyPEM+IGNfZ2VuZXJhdGVfbihDJiBjLCBTaXplIG4sCiAvLyBhbmQgYHVuaXF1ZSgpYCBhcmUg
b21pdHRlZCwgYmVjYXVzZSBpdCdzIG5vdCBjbGVhciB3aGV0aGVyIG9yIG5vdCBzdWNoCiAvLyBm
dW5jdGlvbnMgc2hvdWxkIGNhbGwgZXJhc2Ugb24gdGhlaXIgc3VwcGxpZWQgc2VxdWVuY2VzIGFm
dGVyd2FyZHMuIEVpdGhlcgogLy8gYmVoYXZpb3Igd291bGQgYmUgc3VycHJpc2luZyBmb3IgYSBk
aWZmZXJlbnQgc2V0IG9mIHVzZXJzLgotLy8KIAogLy8gY19yZW1vdmVfY29weSgpCiAvLwpAQCAt
MTE1NCw3ICsxMTc0LDEzIEBAIGJvb2wgY19pbmNsdWRlcyhjb25zdCBDMSYgYzEsIGNvbnN0IEMy
JiBjMiwgQ29tcGFyZSYmIGNvbXApIHsKIC8vIENvbnRhaW5lci1iYXNlZCB2ZXJzaW9uIG9mIHRo
ZSA8YWxnb3JpdGhtPiBgc3RkOjpzZXRfdW5pb24oKWAgZnVuY3Rpb24KIC8vIHRvIHJldHVybiBh
biBpdGVyYXRvciBjb250YWluaW5nIHRoZSB1bmlvbiBvZiB0d28gY29udGFpbmVyczsgZHVwbGlj
YXRlCiAvLyB2YWx1ZXMgYXJlIG5vdCBjb3BpZWQgaW50byB0aGUgb3V0cHV0LgotdGVtcGxhdGUg
PHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwK
KyAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAg
ICAgICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWluZXI8
QzE+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGUsCisgICAgICAgICAgdHlwZW5h
bWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5lcl9h
bGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFpbmVyPEMyPjo6dmFsdWUsCisgICAg
ICAgICAgICAgIHZvaWQ+Ojp0eXBlPgogT3V0cHV0SXRlcmF0b3IgY19zZXRfdW5pb24oY29uc3Qg
QzEmIGMxLCBjb25zdCBDMiYgYzIsIE91dHB1dEl0ZXJhdG9yIG91dHB1dCkgewogICByZXR1cm4g
c3RkOjpzZXRfdW5pb24oY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6Y19iZWdpbihjMSks
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpj
X2VuZChjMSksCkBAIC0xMTY0LDcgKzExOTAsMTMgQEAgT3V0cHV0SXRlcmF0b3IgY19zZXRfdW5p
b24oY29uc3QgQzEmIGMxLCBjb25zdCBDMiYgYzIsIE91dHB1dEl0ZXJhdG9yIG91dHB1dCkgewog
CiAvLyBPdmVybG9hZCBvZiBjX3NldF91bmlvbigpIGZvciBwZXJmb3JtaW5nIGEgbWVyZ2UgdXNp
bmcgYSBgY29tcGAgb3RoZXIgdGhhbgogLy8gYG9wZXJhdG9yPGAuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQ29t
cGFyZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5cGVuYW1lIE91dHB1
dEl0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlLAorICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICFjb250YWluZXJfYWxnb3JpdGhtX2lu
dGVybmFsOjpJc1Vub3JkZXJlZENvbnRhaW5lcjxDMT46OnZhbHVlLAorICAgICAgICAgICAgICB2
b2lkPjo6dHlwZSwKKyAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PAorICAgICAgICAgICAgICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVy
ZWRDb250YWluZXI8QzI+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGU+CiBPdXRw
dXRJdGVyYXRvciBjX3NldF91bmlvbihjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwgT3V0cHV0
SXRlcmF0b3Igb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyZSYmIGNv
bXApIHsKICAgcmV0dXJuIHN0ZDo6c2V0X3VuaW9uKGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJu
YWw6OmNfYmVnaW4oYzEpLApAQCAtMTE3OCw3ICsxMjEwLDEzIEBAIE91dHB1dEl0ZXJhdG9yIGNf
c2V0X3VuaW9uKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLCBPdXRwdXRJdGVyYXRvciBvdXRw
dXQsCiAvLwogLy8gQ29udGFpbmVyLWJhc2VkIHZlcnNpb24gb2YgdGhlIDxhbGdvcml0aG0+IGBz
dGQ6OnNldF9pbnRlcnNlY3Rpb24oKWAgZnVuY3Rpb24KIC8vIHRvIHJldHVybiBhbiBpdGVyYXRv
ciBjb250YWluaW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdHdvIGNvbnRhaW5lcnMuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9y
LAorICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAg
ICAgICAgICFjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJc1Vub3JkZXJlZENvbnRhaW5l
cjxDMT46OnZhbHVlLAorICAgICAgICAgICAgICB2b2lkPjo6dHlwZSwKKyAgICAgICAgICB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAhY29udGFpbmVy
X2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWluZXI8QzI+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgdm9pZD46OnR5cGU+CiBPdXRwdXRJdGVyYXRvciBjX3NldF9pbnRlcnNlY3Rp
b24oY29uc3QgQzEmIGMxLCBjb25zdCBDMiYgYzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0cHV0KSB7CiAgIHJldHVybiBzdGQ6OnNldF9pbnRl
cnNlY3Rpb24oY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6Y19iZWdpbihjMSksCkBAIC0x
MTg5LDcgKzEyMjcsMTMgQEAgT3V0cHV0SXRlcmF0b3IgY19zZXRfaW50ZXJzZWN0aW9uKGNvbnN0
IEMxJiBjMSwgY29uc3QgQzImIGMyLAogCiAvLyBPdmVybG9hZCBvZiBjX3NldF9pbnRlcnNlY3Rp
b24oKSBmb3IgcGVyZm9ybWluZyBhIG1lcmdlIHVzaW5nIGEgYGNvbXBgIG90aGVyCiAvLyB0aGFu
IGBvcGVyYXRvcjxgLgotdGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5h
bWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
QzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFy
ZSwKKyAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAg
ICAgICAgICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWlu
ZXI8QzE+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGUsCisgICAgICAgICAgdHlw
ZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5l
cl9hbGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFpbmVyPEMyPjo6dmFsdWUsCisg
ICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlPgogT3V0cHV0SXRlcmF0b3IgY19zZXRfaW50ZXJzZWN0
aW9uKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dHB1dCwgQ29tcGFyZSYmIGNvbXApIHsKICAgcmV0
dXJuIHN0ZDo6c2V0X2ludGVyc2VjdGlvbihjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpj
X2JlZ2luKGMxKSwKQEAgLTEyMDQsNyArMTI0OCwxMyBAQCBPdXRwdXRJdGVyYXRvciBjX3NldF9p
bnRlcnNlY3Rpb24oY29uc3QgQzEmIGMxLCBjb25zdCBDMiYgYzIsCiAvLyBDb250YWluZXItYmFz
ZWQgdmVyc2lvbiBvZiB0aGUgPGFsZ29yaXRobT4gYHN0ZDo6c2V0X2RpZmZlcmVuY2UoKWAgZnVu
Y3Rpb24KIC8vIHRvIHJldHVybiBhbiBpdGVyYXRvciBjb250YWluaW5nIGVsZW1lbnRzIHByZXNl
bnQgaW4gdGhlIGZpcnN0IGNvbnRhaW5lciBidXQKIC8vIG5vdCBpbiB0aGUgc2Vjb25kLgotdGVt
cGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVy
YXRvciwKKyAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAg
ICAgICAgICAgICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250
YWluZXI8QzE+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGUsCisgICAgICAgICAg
dHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRh
aW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFpbmVyPEMyPjo6dmFsdWUs
CisgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlPgogT3V0cHV0SXRlcmF0b3IgY19zZXRfZGlmZmVy
ZW5jZShjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0cHV0KSB7CiAgIHJldHVybiBzdGQ6OnNldF9kaWZm
ZXJlbmNlKGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OmNfYmVnaW4oYzEpLApAQCAtMTIx
NSw3ICsxMjY1LDEzIEBAIE91dHB1dEl0ZXJhdG9yIGNfc2V0X2RpZmZlcmVuY2UoY29uc3QgQzEm
IGMxLCBjb25zdCBDMiYgYzIsCiAKIC8vIE92ZXJsb2FkIG9mIGNfc2V0X2RpZmZlcmVuY2UoKSBm
b3IgcGVyZm9ybWluZyBhIG1lcmdlIHVzaW5nIGEgYGNvbXBgIG90aGVyCiAvLyB0aGFuIGBvcGVy
YXRvcjxgLgotdGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0
cHV0SXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5
cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZSwKKyAg
ICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAg
ICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWluZXI8QzE+
Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGUsCisgICAgICAgICAgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5lcl9hbGdv
cml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFpbmVyPEMyPjo6dmFsdWUsCisgICAgICAg
ICAgICAgIHZvaWQ+Ojp0eXBlPgogT3V0cHV0SXRlcmF0b3IgY19zZXRfZGlmZmVyZW5jZShjb25z
dCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
T3V0cHV0SXRlcmF0b3Igb3V0cHV0LCBDb21wYXJlJiYgY29tcCkgewogICByZXR1cm4gc3RkOjpz
ZXRfZGlmZmVyZW5jZShjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpjX2JlZ2luKGMxKSwK
QEAgLTEyMzAsNyArMTI4NiwxMyBAQCBPdXRwdXRJdGVyYXRvciBjX3NldF9kaWZmZXJlbmNlKGNv
bnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLAogLy8gQ29udGFpbmVyLWJhc2VkIHZlcnNpb24gb2Yg
dGhlIDxhbGdvcml0aG0+IGBzdGQ6OnNldF9zeW1tZXRyaWNfZGlmZmVyZW5jZSgpYAogLy8gZnVu
Y3Rpb24gdG8gcmV0dXJuIGFuIGl0ZXJhdG9yIGNvbnRhaW5pbmcgZWxlbWVudHMgcHJlc2VudCBp
biBlaXRoZXIgb25lCiAvLyBjb250YWluZXIgb3IgdGhlIG90aGVyLCBidXQgbm90IGJvdGguCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRv
cj4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5cGVuYW1lIE91dHB1dEl0
ZXJhdG9yLAorICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8Cisg
ICAgICAgICAgICAgICFjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJc1Vub3JkZXJlZENv
bnRhaW5lcjxDMT46OnZhbHVlLAorICAgICAgICAgICAgICB2b2lkPjo6dHlwZSwKKyAgICAgICAg
ICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAhY29u
dGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWluZXI8QzI+Ojp2YWx1
ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGU+CiBPdXRwdXRJdGVyYXRvciBjX3NldF9zeW1t
ZXRyaWNfZGlmZmVyZW5jZShjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dHB1dCkgewog
ICByZXR1cm4gc3RkOjpzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoCkBAIC0xMjQyLDcgKzEzMDQs
MTMgQEAgT3V0cHV0SXRlcmF0b3IgY19zZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoY29uc3QgQzEm
IGMxLCBjb25zdCBDMiYgYzIsCiAKIC8vIE92ZXJsb2FkIG9mIGNfc2V0X3N5bW1ldHJpY19kaWZm
ZXJlbmNlKCkgZm9yIHBlcmZvcm1pbmcgYSBtZXJnZSB1c2luZyBhCiAvLyBgY29tcGAgb3RoZXIg
dGhhbiBgb3BlcmF0b3I8YC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5
cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlPgordGVtcGxhdGUgPHR5cGVu
YW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIENv
bXBhcmUsCisgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAg
ICAgICAgICAgICAgIWNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29u
dGFpbmVyPEMxPjo6dmFsdWUsCisgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlLAorICAgICAgICAg
IHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICFjb250
YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJc1Vub3JkZXJlZENvbnRhaW5lcjxDMj46OnZhbHVl
LAorICAgICAgICAgICAgICB2b2lkPjo6dHlwZT4KIE91dHB1dEl0ZXJhdG9yIGNfc2V0X3N5bW1l
dHJpY19kaWZmZXJlbmNlKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0cHV0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyZSYmIGNvbXApIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXJfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Fs
Z29yaXRobS9jb250YWluZXJfdGVzdC5jYwppbmRleCAxNTAyYjE3Zjg2My4uODZiZjlkM2VhMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXJfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9hbGdvcml0aG0vY29udGFpbmVyX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTYzNiw2ICs2MzYsMTkgQEAgVEVTVChNdXRhdGluZ1Rlc3QsIE1v
dmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRlZSg1KSkpOwogfQog
CitURVNUKE11dGF0aW5nVGVzdCwgTW92ZUJhY2t3YXJkKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxpbnQ+PiBhY3R1YWw7CisgIGFjdHVhbC5lbXBsYWNlX2JhY2soYWJzbDo6bWFr
ZV91bmlxdWU8aW50PigxKSk7CisgIGFjdHVhbC5lbXBsYWNlX2JhY2soYWJzbDo6bWFrZV91bmlx
dWU8aW50PigyKSk7CisgIGFjdHVhbC5lbXBsYWNlX2JhY2soYWJzbDo6bWFrZV91bmlxdWU8aW50
PigzKSk7CisgIGFjdHVhbC5lbXBsYWNlX2JhY2soYWJzbDo6bWFrZV91bmlxdWU8aW50Pig0KSk7
CisgIGFjdHVhbC5lbXBsYWNlX2JhY2soYWJzbDo6bWFrZV91bmlxdWU8aW50Pig1KSk7CisgIGF1
dG8gc3VicmFuZ2UgPSBhYnNsOjpNYWtlU3BhbihhY3R1YWwuZGF0YSgpLCAzKTsKKyAgYWJzbDo6
Y19tb3ZlX2JhY2t3YXJkKHN1YnJhbmdlLCBhY3R1YWwuZW5kKCkpOworICBFWFBFQ1RfVEhBVChh
Y3R1YWwsIEVsZW1lbnRzQXJlKElzTnVsbCgpLCBJc051bGwoKSwgUG9pbnRlZSgxKSwgUG9pbnRl
ZSgyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludGVlKDMpKSk7Cit9
CisKIFRFU1QoTXV0YXRpbmdUZXN0LCBNb3ZlV2l0aFJ2YWx1ZSkgewogICBhdXRvIE1ha2VSVmFs
dWVTcmMgPSBbXSB7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGludD4+IHNyYzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9lcXVhbF9iZW5jaG1hcmsuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9h
bGdvcml0aG0vZXF1YWxfYmVuY2htYXJrLmNjCmluZGV4IDE5YzA3ODBjY2QxLi43YmY2MmM5YTdm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2VxdWFsX2JlbmNobWFyay5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9hbGdvcml0aG0vZXF1YWxfYmVuY2htYXJrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmJhemVsIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9CVUlMRC5iYXplbAppbmRleCBmN2Q4MTAxMzViOC4uYTUxMjI3MmFkYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlMRC5i
YXplbApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1LDE3ICsxNSw0NiBA
QAogIwogCiBsb2FkKAotICAgICIvL2Fic2w6Y29wdHMuYnpsIiwKKyAgICAiLy9hYnNsOmNvcHRz
L2NvbmZpZ3VyZV9jb3B0cy5iemwiLAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAotICAgICJB
QlNMX1RFU1RfQ09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElOS09QVFMiLAogICAgICJBQlNM
X0VYQ0VQVElPTlNfRkxBRyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwK
KyAgICAiQUJTTF9URVNUX0NPUFRTIiwKICkKIAogcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkg
PSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKIAogbGljZW5zZXMoWyJub3RpY2UiXSkgICMgQXBh
Y2hlIDIuMAogCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiYXRvbWljX2hvb2siLAorICAgIGhk
cnMgPSBbImludGVybmFsL2F0b21pY19ob29rLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVM
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB2aXNp
YmlsaXR5ID0gWworICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIsCisgICAgXSwKKykK
KworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImxvZ19zZXZlcml0eSIsCisgICAgc3JjcyA9IFsi
bG9nX3NldmVyaXR5LmNjIl0sCisgICAgaGRycyA9IFsibG9nX3NldmVyaXR5LmgiXSwKKyAgICBj
b3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKKyAgICBkZXBzID0gWyI6Y29yZV9oZWFkZXJzIl0sCispCisKK2NjX2xpYnJhcnko
CisgICAgbmFtZSA9ICJyYXdfbG9nZ2luZ19pbnRlcm5hbCIsCisgICAgY29wdHMgPSBBQlNMX0RF
RkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAg
dmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAorICAgIF0s
CispCisKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJzcGlubG9ja193YWl0IiwKICAgICBzcmNz
ID0gWwpAQCAtNDAsNiArNjksNyBAQCBjY19saWJyYXJ5KAogICAgICAgICAiaW50ZXJuYWwvc3Bp
bmxvY2tfd2FpdC5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAor
ICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHZpc2liaWxpdHkgPSBb
CiAgICAgICAgICIvL2Fic2wvYmFzZTpfX3BrZ19fIiwKICAgICBdLApAQCAtNTMsNiArODMsNyBA
QCBjY19saWJyYXJ5KAogICAgICAgICAicG9saWN5X2NoZWNrcy5oIiwKICAgICBdLAogICAgIGNv
cHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogKQogCiBjY19saWJyYXJ5KApAQCAtNjEsMjEgKzkyLDI2IEBAIGNjX2xpYnJhcnko
CiAgICAgaGRycyA9IFsiZHluYW1pY19hbm5vdGF0aW9ucy5oIl0sCiAgICAgY29wdHMgPSBBQlNM
X0RFRkFVTFRfQ09QVFMsCiAgICAgZGVmaW5lcyA9IFsiX19DTEFOR19TVVBQT1JUX0RZTl9BTk5P
VEFUSU9OX18iXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICkKIAog
Y2NfbGlicmFyeSgKICAgICBuYW1lID0gImNvcmVfaGVhZGVycyIsCisgICAgc3JjcyA9IFsKKyAg
ICAgICAgImludGVybmFsL3RocmVhZF9hbm5vdGF0aW9ucy5oIiwKKyAgICBdLAogICAgIGhkcnMg
PSBbCiAgICAgICAgICJhdHRyaWJ1dGVzLmgiLAorICAgICAgICAiY29uc3RfaW5pdC5oIiwKICAg
ICAgICAgIm1hY3Jvcy5oIiwKICAgICAgICAgIm9wdGltaXphdGlvbi5oIiwKICAgICAgICAgInBv
cnQuaCIsCiAgICAgICAgICJ0aHJlYWRfYW5ub3RhdGlvbnMuaCIsCiAgICAgXSwKICAgICBjb3B0
cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmNvbmZpZyIsCi0gICAgICAgICI6ZHluYW1p
Y19hbm5vdGF0aW9ucyIsCiAgICAgXSwKICkKIApAQCAtODksNiArMTI1LDEwIEBAIGNjX2xpYnJh
cnkoCiAgICAgICAgICJpbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaCIsCiAgICAgXSwKICAgICBj
b3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IHNlbGVjdCh7CisgICAg
ICAgICIvL2Fic2w6d2luZG93cyI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQi
OiBbIi1wdGhyZWFkIl0sCisgICAgfSkgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlz
aWJpbGl0eSA9IFsKICAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAogICAgIF0sCkBA
IC0xMDgsMTEgKzE0OCwxNiBAQCBjY19saWJyYXJ5KAogICAgICAgICAiaW50ZXJuYWwvaWRlbnRp
dHkuaCIsCiAgICAgICAgICJpbnRlcm5hbC9pbmxpbmVfdmFyaWFibGUuaCIsCiAgICAgICAgICJp
bnRlcm5hbC9pbnZva2UuaCIsCisgICAgICAgICJpbnRlcm5hbC9zY2hlZHVsaW5nX21vZGUuaCIs
CiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9
IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWwogICAgICAgICAiLy9h
YnNsOl9fc3VicGFja2FnZXNfXyIsCiAgICAgXSwKKyAgICBkZXBzID0gWworICAgICAgICAiLy9h
YnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgIF0sCiApCiAKIGNjX2xpYnJhcnkoCkBAIC0xMjgs
NyArMTczLDYgQEAgY2NfbGlicmFyeSgKICAgICBoZHJzID0gWwogICAgICAgICAiY2FsbF9vbmNl
LmgiLAogICAgICAgICAiY2FzdHMuaCIsCi0gICAgICAgICJpbnRlcm5hbC9hdG9taWNfaG9vay5o
IiwKICAgICAgICAgImludGVybmFsL2N5Y2xlY2xvY2suaCIsCiAgICAgICAgICJpbnRlcm5hbC9s
b3dfbGV2ZWxfc2NoZWR1bGluZy5oIiwKICAgICAgICAgImludGVybmFsL3Blcl90aHJlYWRfdGxz
LmgiLApAQCAtMTM4LDE1ICsxODIsMjEgQEAgY2NfbGlicmFyeSgKICAgICAgICAgImludGVybmFs
L3RocmVhZF9pZGVudGl0eS5oIiwKICAgICAgICAgImludGVybmFsL3RzYW5fbXV0ZXhfaW50ZXJm
YWNlLmgiLAogICAgICAgICAiaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgiLAotICAgICAg
ICAibG9nX3NldmVyaXR5LmgiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBzZWxlY3QoeworICAgICAgICAiLy9hYnNsOndpbmRvd3MiOiBb
XSwKKyAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItcHRocmVhZCJdLAorICAgIH0p
ICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCisgICAgICAgICI6YXRvbWlj
X2hvb2siLAogICAgICAgICAiOmJhc2VfaW50ZXJuYWwiLAogICAgICAgICAiOmNvbmZpZyIsCiAg
ICAgICAgICI6Y29yZV9oZWFkZXJzIiwKICAgICAgICAgIjpkeW5hbWljX2Fubm90YXRpb25zIiwK
KyAgICAgICAgIjpsb2dfc2V2ZXJpdHkiLAogICAgICAgICAiOnNwaW5sb2NrX3dhaXQiLAorICAg
ICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAogICAgIF0sCiApCiAKQEAgLTE1NSw4ICsy
MDUsOSBAQCBjY190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbImludGVy
bmFsL2F0b21pY19ob29rX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwotICAg
ICAgICAiOmJhc2UiLAorICAgICAgICAiOmF0b21pY19ob29rIiwKICAgICAgICAgIjpjb3JlX2hl
YWRlcnMiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAog
ICAgIF0sCkBAIC0xNjksNiArMjIwLDcgQEAgY2NfdGVzdCgKICAgICAgICAgImJpdF9jYXN0X3Rl
c3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpiYXNl
IiwKICAgICAgICAgIjpjb3JlX2hlYWRlcnMiLApAQCAtMTgxLDE0ICsyMzMsMTMgQEAgY2NfbGli
cmFyeSgKICAgICBzcmNzID0gWyJpbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5jYyJdLAogICAgIGhk
cnMgPSBbImludGVybmFsL3Rocm93X2RlbGVnYXRlLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVG
QVVMVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAotICAgIGxpbmtvcHRzID0gQUJTTF9F
WENFUFRJT05TX0ZMQUdfTElOS09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNf
RkxBR19MSU5LT1BUUyArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0g
WwogICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIsCiAgICAgXSwKICAgICBkZXBzID0g
WwogICAgICAgICAiOmJhc2UiLAogICAgICAgICAiOmNvbmZpZyIsCi0gICAgICAgICI6Y29yZV9o
ZWFkZXJzIiwKICAgICBdLAogKQogCkBAIC0xOTYsNyArMjQ3LDcgQEAgY2NfdGVzdCgKICAgICBu
YW1lID0gInRocm93X2RlbGVnYXRlX3Rlc3QiLAogICAgIHNyY3MgPSBbInRocm93X2RlbGVnYXRl
X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9O
U19GTEFHLAotICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCisg
ICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyArIEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnRocm93X2RlbGVnYXRlIiwKICAg
ICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKQEAgLTIwOCw2ICsy
NTksNyBAQCBjY19saWJyYXJ5KAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBoZHJzID0gWyJpbnRl
cm5hbC9leGNlcHRpb25fdGVzdGluZy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9
IFsKICAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAogICAgIF0sCkBAIC0yMjAsNiAr
MjcyLDcgQEAgY2NfbGlicmFyeSgKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJwcmV0dHlfZnVu
Y3Rpb24iLAogICAgIGhkcnMgPSBbImludGVybmFsL3ByZXR0eV9mdW5jdGlvbi5oIl0sCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9IFsiLy9h
YnNsOl9fc3VicGFja2FnZXNfXyJdLAogKQogCkBAIC0yMjksMTUgKzI4MiwxNCBAQCBjY19saWJy
YXJ5KAogICAgIHNyY3MgPSBbImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5jYyJd
LAogICAgIGhkcnMgPSBbImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oIl0sCiAg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBs
aW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgZGVwcyA9IFsKLSAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpjb25maWciLAogICAgICAg
ICAiOnByZXR0eV9mdW5jdGlvbiIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICAgICAg
Ii8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKICAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKLSAg
ICAgICAgIi8vYWJzbC90eXBlczpvcHRpb25hbCIsCisgICAgICAgICIvL2Fic2wvdXRpbGl0eSIs
CiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAogICAgIF0sCiApCkBA
IC0yNDYsNyArMjk4LDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImV4Y2VwdGlvbl9zYWZldHlf
dGVzdGluZ190ZXN0IiwKICAgICBzcmNzID0gWyJleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVz
dC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZM
QUcsCi0gICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBs
aW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5n
IiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLApAQCAtMjY0LDYgKzMxNiw3IEBAIGNjX3Rlc3Qo
CiAgICAgICAgICJpbnRlcm5hbC9pbmxpbmVfdmFyaWFibGVfdGVzdGluZy5oIiwKICAgICBdLAog
ICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZV9pbnRlcm5hbCIsCiAgICAg
ICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBAIC0yNzUsNiArMzI4
LDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJpbnZva2Vf
dGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZV9pbnRl
cm5hbCIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKQEAgLTI5MCw2ICszNDQsNyBAQCBjY19s
aWJyYXJ5KAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBzcmNzID0gWyJzcGlubG9ja190ZXN0X2Nv
bW1vbi5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZSIsCiAg
ICAgICAgICI6Y29yZV9oZWFkZXJzIiwKQEAgLTMwNSw3ICszNjAsNyBAQCBjY190ZXN0KAogICAg
IHNpemUgPSAibWVkaXVtIiwKICAgICBzcmNzID0gWyJzcGlubG9ja190ZXN0X2NvbW1vbi5jYyJd
LAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAotICAgIHRhZ3MgPSBbIm5vX3Rlc3Rfd2Fz
bSJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6Y29yZV9oZWFkZXJzIiwKQEAgLTMxNSw2ICsz
NzAsMzUgQEAgY2NfdGVzdCgKICAgICBdLAogKQogCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAi
c3BpbmxvY2tfYmVuY2htYXJrX2NvbW1vbiIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3Mg
PSBbImludGVybmFsL3NwaW5sb2NrX2JlbmNobWFyay5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZp
c2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2wvYmFzZTpfX3BrZ19fIiwKKyAgICBdLAorICAg
IGRlcHMgPSBbCisgICAgICAgICI6YmFzZSIsCisgICAgICAgICI6YmFzZV9pbnRlcm5hbCIsCisg
ICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0aW9uIiwKKyAgICAgICAgIkBjb21fZ2l0aHViX2dv
b2dsZV9iZW5jaG1hcmsvLzpiZW5jaG1hcmtfbWFpbiIsCisgICAgXSwKKyAgICBhbHdheXNsaW5r
ID0gMSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAic3BpbmxvY2tfYmVuY2htYXJrIiwK
KyAgICB0ZXN0b25seSA9IDEsCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgdmlzaWJpbGl0eSA9IFsiLy92
aXNpYmlsaXR5OnByaXZhdGUiXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOnNwaW5sb2NrX2Jl
bmNobWFya19jb21tb24iLAorICAgIF0sCispCisKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJl
bmRpYW4iLAogICAgIGhkcnMgPSBbCkBAIC0zMjIsNiArNDA2LDcgQEAgY2NfbGlicmFyeSgKICAg
ICAgICAgImludGVybmFsL3VuYWxpZ25lZF9hY2Nlc3MuaCIsCiAgICAgXSwKICAgICBjb3B0cyA9
IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICBkZXBzID0gWwogICAgICAgICAiOmNvbmZpZyIsCiAgICAgICAgICI6Y29yZV9oZWFk
ZXJzIiwKQEAgLTMzMyw3ICs0MTgsNiBAQCBjY190ZXN0KAogICAgIHNyY3MgPSBbImludGVybmFs
L2VuZGlhbl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCiAgICAgZGVw
cyA9IFsKLSAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpjb25maWciLAogICAgICAgICAiOmVu
ZGlhbiIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBA
IC0zNDQsOSArNDI4LDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNvbmZpZ190ZXN0IiwKICAg
ICBzcmNzID0gWyJjb25maWdfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRT
LAotICAgIHRhZ3MgPSBbCi0gICAgICAgICJub190ZXN0X3dhc20iLAotICAgIF0sCisgICAgbGlu
a29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpj
b25maWciLAogICAgICAgICAiLy9hYnNsL3N5bmNocm9uaXphdGlvbjp0aHJlYWRfcG9vbCIsCkBA
IC0zNTgsOSArNDQwLDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNhbGxfb25jZV90ZXN0IiwK
ICAgICBzcmNzID0gWyJjYWxsX29uY2VfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAotICAgIHRhZ3MgPSBbCi0gICAgICAgICJub190ZXN0X3dhc20iLAotICAgIF0sCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjpiYXNlIiwKICAgICAgICAgIjpjb3JlX2hlYWRlcnMiLApAQCAtMzczLDYgKzQ1Myw3IEBA
IGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJyYXdfbG9nZ2luZ190ZXN0IiwKICAgICBzcmNzID0gWyJy
YXdfbG9nZ2luZ190ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAg
IjpiYXNlIiwKICAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKQEAgLTM4NSw2ICs0NjYsNyBAQCBj
Y190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbImludGVybmFsL3N5c2lu
Zm9fdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZSIs
CiAgICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0aW9uIiwKQEAgLTM5NCwxMyArNDc2LDEwIEBA
IGNjX3Rlc3QoCiAKIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJsb3dfbGV2ZWxfYWxsb2NfdGVzdCIs
Ci0gICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAogICAgIHNyY3MgPSBb
ImludGVybmFsL2xvd19sZXZlbF9hbGxvY190ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMsCi0gICAgbGlua29wdHMgPSBzZWxlY3QoewotICAgICAgICAiLy9hYnNsOndpbmRv
d3MiOiBbXSwKLSAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItcHRocmVhZCJdLAot
ICAgIH0pLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3Mg
PSBbIm5vX3Rlc3RfaW9zX3g4Nl82NCJdLAogICAgIGRlcHMgPSBbIjptYWxsb2NfaW50ZXJuYWwi
XSwKICkKQEAgLTQxMCwxMyArNDg5LDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwK
ICAgICBzcmNzID0gWyJpbnRlcm5hbC90aHJlYWRfaWRlbnRpdHlfdGVzdC5jYyJdLAogICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAotICAgIGxpbmtvcHRzID0gc2VsZWN0KHsKLSAgICAgICAg
Ii8vYWJzbDp3aW5kb3dzIjogW10sCi0gICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsi
LXB0aHJlYWQiXSwKLSAgICB9KSwKLSAgICB0YWdzID0gWwotICAgICAgICAibm9fdGVzdF93YXNt
IiwKLSAgICBdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRl
cHMgPSBbCiAgICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6Y29yZV9oZWFkZXJzIiwKQEAgLTQy
OSw2ICs1MDIsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAidGhyZWFkX2lkZW50aXR5X2JlbmNo
bWFyayIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5X2JlbmNobWFyay5j
YyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9E
RUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3MgPSBbImJlbmNobWFyayJdLAogICAgIHZpc2liaWxp
dHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCiAgICAgZGVwcyA9IFsKQEAgLTQ0MSw2ICs1
MTUsNyBAQCBjY190ZXN0KAogY2NfbGlicmFyeSgKICAgICBuYW1lID0gImJpdHMiLAogICAgIGhk
cnMgPSBbImludGVybmFsL2JpdHMuaCJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIHZpc2liaWxpdHkgPSBbCiAgICAgICAgICIvL2Fic2w6X19zdWJwYWNrYWdl
c19fIiwKICAgICBdLApAQCAtNDUyLDggKzUyNyw0NiBAQCBjY190ZXN0KAogICAgIHNpemUgPSAi
c21hbGwiLAogICAgIHNyY3MgPSBbImludGVybmFsL2JpdHNfdGVzdC5jYyJdLAogICAgIGNvcHRz
ID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Yml0cyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9n
b29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAgICAgXSwKICkKKworY2NfbGlicmFyeSgKKyAgICBu
YW1lID0gInNjb3BlZF9zZXRfZW52IiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsi
aW50ZXJuYWwvc2NvcGVkX3NldF9lbnYuY2MiXSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9zY29w
ZWRfc2V0X2Vudi5oIl0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisg
ICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAorICAg
IF0sCisgICAgZGVwcyA9IFsiOmJhc2UiXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInNj
b3BlZF9zZXRfZW52X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImlu
dGVybmFsL3Njb3BlZF9zZXRfZW52X3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0g
WworICAgICAgICAiOnNjb3BlZF9zZXRfZW52IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2ds
ZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
bG9nX3NldmVyaXR5X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImxv
Z19zZXZlcml0eV90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAg
IjpiYXNlIiwKKyAgICAgICAgIjpsb2dfc2V2ZXJpdHkiLAorICAgICAgICAiQGNvbV9nb29nbGVf
Z29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlMRC5nbgppbmRleCA2YzU0MGYzYjJiYi4uMGM5
ODFiNDliZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuZ24KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9CVUlMRC5nbgpAQCAtNiw2ICs2LDcgQEAgaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWls
ZC5nbmkiKQogCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICB2aXNpYmlsaXR5ID0gWwor
ICAgICIvL2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS93ZWJydGMvKiIsCiAg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0Omd0ZXN0IiwKQEAgLTE0LDYgKzE1LDUyIEBAIGlmIChidWlsZF93aXRoX2Nocm9taXVt
KSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiB9CiAKK3NvdXJjZV9zZXQoImF0b21pY19ob29r
IikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2Nv
ZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2No
cm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0
X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVy
bmFsL2F0b21pY19ob29rLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb3JlX2hlYWRlcnMi
LAorICBdCisgIHZpc2liaWxpdHkgPSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIi4uLyoiIF0KK30K
Kworc291cmNlX3NldCgibG9nX3NldmVyaXR5IikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQv
Y29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2Nv
bmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIg
XQorICBzb3VyY2VzID0gWworICAgICJsb2dfc2V2ZXJpdHkuY2MiLAorICBdCisgIHB1YmxpYyA9
IFsKKyAgICAibG9nX3NldmVyaXR5LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb3JlX2hl
YWRlcnMiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInJhd19sb2dnaW5nX2ludGVybmFsIikgewor
ICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0K
KyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVt
X2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFn
c19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0
eSArPSBbICIuLi8qIiBdCit9CisKIHNvdXJjZV9zZXQoInNwaW5sb2NrX3dhaXQiKSB7CiAgIGNv
bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQogICBj
b25maWdzICs9IFsKQEAgLTg4LDYgKzEzNSw3IEBAIHNvdXJjZV9zZXQoImNvcmVfaGVhZGVycyIp
IHsKICAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9p
bmNsdWRlX2NvbmZpZyIgXQogICBwdWJsaWMgPSBbCiAgICAgImF0dHJpYnV0ZXMuaCIsCisgICAg
ImNvbnN0X2luaXQuaCIsCiAgICAgIm1hY3Jvcy5oIiwKICAgICAib3B0aW1pemF0aW9uLmgiLAog
ICAgICJwb3J0LmgiLApAQCAtOTUsNyArMTQzLDYgQEAgc291cmNlX3NldCgiY29yZV9oZWFkZXJz
IikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIjpjb25maWciLAotICAgICI6ZHluYW1pY19hbm5v
dGF0aW9ucyIsCiAgIF0KIH0KIApAQCAtMTM2LDYgKzE4MywxMCBAQCBzb3VyY2Vfc2V0KCJiYXNl
X2ludGVybmFsIikgewogICAgICJpbnRlcm5hbC9pZGVudGl0eS5oIiwKICAgICAiaW50ZXJuYWwv
aW5saW5lX3ZhcmlhYmxlLmgiLAogICAgICJpbnRlcm5hbC9pbnZva2UuaCIsCisgICAgImludGVy
bmFsL3NjaGVkdWxpbmdfbW9kZS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9tZXRhOnR5
cGVfdHJhaXRzIiwKICAgXQogICB2aXNpYmlsaXR5ID0gW10KICAgdmlzaWJpbGl0eSArPSBbICIu
Li8qIiBdCkBAIC0xNTksNyArMjEwLDYgQEAgc291cmNlX3NldCgiYmFzZSIpIHsKICAgcHVibGlj
ID0gWwogICAgICJjYWxsX29uY2UuaCIsCiAgICAgImNhc3RzLmgiLAotICAgICJpbnRlcm5hbC9h
dG9taWNfaG9vay5oIiwKICAgICAiaW50ZXJuYWwvY3ljbGVjbG9jay5oIiwKICAgICAiaW50ZXJu
YWwvbG93X2xldmVsX3NjaGVkdWxpbmcuaCIsCiAgICAgImludGVybmFsL3Blcl90aHJlYWRfdGxz
LmgiLApAQCAtMTY5LDE0ICsyMTksMTYgQEAgc291cmNlX3NldCgiYmFzZSIpIHsKICAgICAiaW50
ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmgiLAogICAgICJpbnRlcm5hbC90c2FuX211dGV4X2ludGVy
ZmFjZS5oIiwKICAgICAiaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgiLAotICAgICJsb2df
c2V2ZXJpdHkuaCIsCiAgIF0KICAgZGVwcyA9IFsKKyAgICAiOmF0b21pY19ob29rIiwKICAgICAi
OmJhc2VfaW50ZXJuYWwiLAogICAgICI6Y29uZmlnIiwKICAgICAiOmNvcmVfaGVhZGVycyIsCiAg
ICAgIjpkeW5hbWljX2Fubm90YXRpb25zIiwKKyAgICAiOmxvZ19zZXZlcml0eSIsCiAgICAgIjpz
cGlubG9ja193YWl0IiwKKyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCiAgIF0KIH0KIApAQCAt
MTk2LDcgKzI0OCw2IEBAIHNvdXJjZV9zZXQoInRocm93X2RlbGVnYXRlIikgewogICBkZXBzID0g
WwogICAgICI6YmFzZSIsCiAgICAgIjpjb25maWciLAotICAgICI6Y29yZV9oZWFkZXJzIiwKICAg
XQogICB2aXNpYmlsaXR5ID0gW10KICAgdmlzaWJpbGl0eSArPSBbICIuLi8qIiBdCkBAIC0yNTEs
MTMgKzMwMiwxMiBAQCBzb3VyY2Vfc2V0KCJwcmV0dHlfZnVuY3Rpb24iKSB7CiAjICAgICAiaW50
ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgiLAogIyAgIF0KICMgICBkZXBzID0gWwot
IyAgICAgIjpiYXNlIiwKICMgICAgICI6Y29uZmlnIiwKICMgICAgICI6cHJldHR5X2Z1bmN0aW9u
IiwKICMgICAgICIuLi9tZW1vcnkiLAogIyAgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAogIyAg
ICAgIi4uL3N0cmluZ3MiLAotIyAgICAgIi4uL3R5cGVzOm9wdGlvbmFsIiwKKyMgICAgICIuLi91
dGlsaXR5IiwKICMgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogIyAgIF0KICMgfQpAQCAtMzE0LDMg
KzM2NCwyMyBAQCBzb3VyY2Vfc2V0KCJiaXRzIikgewogICB2aXNpYmlsaXR5ID0gW10KICAgdmlz
aWJpbGl0eSArPSBbICIuLi8qIiBdCiB9CisKK3NvdXJjZV9zZXQoInNjb3BlZF9zZXRfZW52Iikg
eworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21w
aWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50
ZXJuYWwvc2NvcGVkX3NldF9lbnYuaCIsCisgIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50ZXJu
YWwvc2NvcGVkX3NldF9lbnYuY2MiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpiYXNlIiwKKyAg
XQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICIuLi8qIiBdCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAwNGE2ZWIzMTk1NS4uY2M3OTYwZTNhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9DTWFrZUxpc3RzLnR4dApAQCAtNSw3
ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKICMKLSMgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisjICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQsMzc0ICsxNCw1MTkgQEAKICMgbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAjCiAKLWxpc3QoQVBQRU5EIEJBU0VfUFVCTElDX0hFQURF
UlMKLSAgImF0dHJpYnV0ZXMuaCIKLSAgImNhbGxfb25jZS5oIgotICAiY2FzdHMuaCIKLSAgImNv
bmZpZy5oIgotICAiZHluYW1pY19hbm5vdGF0aW9ucy5oIgotICAibG9nX3NldmVyaXR5LmgiCi0g
ICJtYWNyb3MuaCIKLSAgIm9wdGltaXphdGlvbi5oIgotICAicG9saWN5X2NoZWNrcy5oIgotICAi
cG9ydC5oIgotICAidGhyZWFkX2Fubm90YXRpb25zLmgiCi0pCi0KLQotbGlzdChBUFBFTkQgQkFT
RV9JTlRFUk5BTF9IRUFERVJTCi0gICJpbnRlcm5hbC9hdG9taWNfaG9vay5oIgotICAiaW50ZXJu
YWwvYml0cy5oIgotICAiaW50ZXJuYWwvY3ljbGVjbG9jay5oIgotICAiaW50ZXJuYWwvZGlyZWN0
X21tYXAuaCIKLSAgImludGVybmFsL2VuZGlhbi5oIgotICAiaW50ZXJuYWwvZXhjZXB0aW9uX3Rl
c3RpbmcuaCIKLSAgImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oIgotICAiaW50
ZXJuYWwvaGlkZV9wdHIuaCIKLSAgImludGVybmFsL2lkZW50aXR5LmgiCi0gICJpbnRlcm5hbC9p
bnZva2UuaCIKLSAgImludGVybmFsL2lubGluZV92YXJpYWJsZS5oIgotICAiaW50ZXJuYWwvbG93
X2xldmVsX2FsbG9jLmgiCi0gICJpbnRlcm5hbC9sb3dfbGV2ZWxfc2NoZWR1bGluZy5oIgotICAi
aW50ZXJuYWwvcGVyX3RocmVhZF90bHMuaCIKLSAgImludGVybmFsL3ByZXR0eV9mdW5jdGlvbi5o
IgotICAiaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKLSAgImludGVybmFsL3NjaGVkdWxpbmdfbW9k
ZS5oIgotICAiaW50ZXJuYWwvc3BpbmxvY2suaCIKLSAgImludGVybmFsL3NwaW5sb2NrX3dhaXQu
aCIKLSAgImludGVybmFsL3N5c2luZm8uaCIKLSAgImludGVybmFsL3RocmVhZF9pZGVudGl0eS5o
IgotICAiaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaCIKLSAgImludGVybmFsL3RzYW5fbXV0ZXhf
aW50ZXJmYWNlLmgiCi0gICJpbnRlcm5hbC91bmFsaWduZWRfYWNjZXNzLmgiCi0gICJpbnRlcm5h
bC91bnNjYWxlZGN5Y2xlY2xvY2suaCIKLSkKLQotCi0jIGFic2xfYmFzZSBtYWluIGxpYnJhcnkK
LWxpc3QoQVBQRU5EIEJBU0VfU1JDCi0gICJpbnRlcm5hbC9jeWNsZWNsb2NrLmNjIgotICAiaW50
ZXJuYWwvcmF3X2xvZ2dpbmcuY2MiCi0gICJpbnRlcm5hbC9zcGlubG9jay5jYyIKLSAgImludGVy
bmFsL3N5c2luZm8uY2MiCi0gICJpbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuY2MiCi0gICJpbnRl
cm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suY2MiCi0gICJpbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2Mu
Y2MiCi0gICR7QkFTRV9QVUJMSUNfSEVBREVSU30KLSAgJHtCQVNFX0lOVEVSTkFMX0hFQURFUlN9
Ci0pCi0KLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9iYXNlCi0gIFNPVVJDRVMK
LSAgICAke0JBU0VfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbF9keW5hbWljX2Fu
bm90YXRpb25zCi0gICAgYWJzbF9zcGlubG9ja193YWl0Ci0gIEVYUE9SVF9OQU1FCi0gICAgYmFz
ZQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgYXRvbWljX2hvb2sKKyAgSERSUworICAg
ICJpbnRlcm5hbC9hdG9taWNfaG9vay5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NP
UFRTfQogKQogCi0jIHRocm93IGRlbGVnYXRlIGxpYnJhcnkKLXNldChUSFJPV19ERUxFR0FURV9T
UkMgImludGVybmFsL3Rocm93X2RlbGVnYXRlLmNjIikKLQotYWJzbF9saWJyYXJ5KAotICBUQVJH
RVQKLSAgICBhYnNsX3Rocm93X2RlbGVnYXRlCi0gIFNPVVJDRVMKLSAgICAke1RIUk9XX0RFTEVH
QVRFX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7VEhST1dfREVMRUdBVEVfUFVCTElD
X0xJQlJBUklFU30KLSAgUFJJVkFURV9DT01QSUxFX0ZMQUdTCi0gICAgJHtBQlNMX0VYQ0VQVElP
TlNfRkxBR30KLSAgRVhQT1JUX05BTUUKLSAgICB0aHJvd19kZWxlZ2F0ZQorYWJzbF9jY19saWJy
YXJ5KAorICBOQU1FCisgICAgbG9nX3NldmVyaXR5CisgIEhEUlMKKyAgICAibG9nX3NldmVyaXR5
LmgiCisgIFNSQ1MKKyAgICAibG9nX3NldmVyaXR5LmNjIgorICBERVBTCisgICAgYWJzbDo6Y29y
ZV9oZWFkZXJzCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CiApCiAKLWlmKEJV
SUxEX1RFU1RJTkcpCi0gICMgZXhjZXB0aW9uLXNhZmV0eSB0ZXN0aW5nIGxpYnJhcnkKLSAgc2V0
KEVYQ0VQVElPTl9TQUZFVFlfVEVTVElOR19TUkMKLSAgICAiaW50ZXJuYWwvZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0aW5nLmgiCi0gICAgImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5j
YyIKLSAgKQotICBzZXQoRVhDRVBUSU9OX1NBRkVUWV9URVNUSU5HX1BVQkxJQ19MSUJSQVJJRVMK
LSAgICAke0FCU0xfVEVTVF9DT01NT05fTElCUkFSSUVTfQotICAgIGFic2w6OmJhc2UKLSAgICBh
YnNsOjptZW1vcnkKLSAgICBhYnNsOjptZXRhCi0gICAgYWJzbDo6c3RyaW5ncwotICAgIGFic2w6
Om9wdGlvbmFsCi0gICAgZ3Rlc3QKLSAgKQotCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAg
IGFic2xfYmFzZV9pbnRlcm5hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcKLSAgU09VUkNFUwot
ICAgICR7RVhDRVBUSU9OX1NBRkVUWV9URVNUSU5HX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwot
ICAgICR7RVhDRVBUSU9OX1NBRkVUWV9URVNUSU5HX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIFBSSVZB
VEVfQ09NUElMRV9GTEFHUwotICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9CithYnNsX2NjX2xp
YnJhcnkoCisgIE5BTUUKKyAgICByYXdfbG9nZ2luZ19pbnRlcm5hbAorICBDT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0NPUFRTfQogKQotZW5kaWYoKQogCi0KLSMgZHluYW1pY19hbm5vdGF0aW9u
cyBsaWJyYXJ5Ci1zZXQoRFlOQU1JQ19BTk5PVEFUSU9OU19TUkMgImR5bmFtaWNfYW5ub3RhdGlv
bnMuY2MiKQotCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfZHluYW1pY19hbm5v
dGF0aW9ucwotICBTT1VSQ0VTCi0gICAgJHtEWU5BTUlDX0FOTk9UQVRJT05TX1NSQ30KK2Fic2xf
Y2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHNwaW5sb2NrX3dhaXQKKyAgSERSUworICAgICJpbnRl
cm5hbC9zY2hlZHVsaW5nX21vZGUuaCIKKyAgICAiaW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5oIgor
ICBTUkNTCisgICAgImludGVybmFsL3NwaW5sb2NrX2FrYXJvcy5pbmMiCisgICAgImludGVybmFs
L3NwaW5sb2NrX2xpbnV4LmluYyIKKyAgICAiaW50ZXJuYWwvc3BpbmxvY2tfcG9zaXguaW5jIgor
ICAgICJpbnRlcm5hbC9zcGlubG9ja193YWl0LmNjIgorICAgICJpbnRlcm5hbC9zcGlubG9ja193
aW4zMi5pbmMiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAg
ICBhYnNsOjpjb3JlX2hlYWRlcnMKICkKIAotCi0jIHNwaW5sb2NrX3dhaXQgbGlicmFyeQotc2V0
KFNQSU5MT0NLX1dBSVRfU1JDICJpbnRlcm5hbC9zcGlubG9ja193YWl0LmNjIikKLQotYWJzbF9s
aWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX3NwaW5sb2NrX3dhaXQKLSAgU09VUkNFUwotICAg
ICR7U1BJTkxPQ0tfV0FJVF9TUkN9CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBjb25m
aWcKKyAgSERSUworICAgICJjb25maWcuaCIKKyAgICAicG9saWN5X2NoZWNrcy5oIgorICBDT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBQVUJMSUMKICkKIAotCi0jIG1hbGxvY19p
bnRlcm5hbCBsaWJyYXJ5Ci1saXN0KEFQUEVORCBNQUxMT0NfSU5URVJOQUxfU1JDCi0gICJpbnRl
cm5hbC9sb3dfbGV2ZWxfYWxsb2MuY2MiCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBk
eW5hbWljX2Fubm90YXRpb25zCisgIEhEUlMKKyAgICAiZHluYW1pY19hbm5vdGF0aW9ucy5oIgor
ICBTUkNTCisgICAgImR5bmFtaWNfYW5ub3RhdGlvbnMuY2MiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgIERFRklORVMKKyAgICAiX19DTEFOR19TVVBQT1JUX0RZTl9BTk5P
VEFUSU9OX18iCisgIFBVQkxJQwogKQogCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFi
c2xfbWFsbG9jX2ludGVybmFsCi0gIFNPVVJDRVMKLSAgICAke01BTExPQ19JTlRFUk5BTF9TUkN9
Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsX2R5bmFtaWNfYW5ub3RhdGlvbnMKK2Fic2xf
Y2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGNvcmVfaGVhZGVycworICBIRFJTCisgICAgImF0dHJp
YnV0ZXMuaCIKKyAgICAiY29uc3RfaW5pdC5oIgorICAgICJtYWNyb3MuaCIKKyAgICAib3B0aW1p
emF0aW9uLmgiCisgICAgInBvcnQuaCIKKyAgICAidGhyZWFkX2Fubm90YXRpb25zLmgiCisgICAg
ImludGVybmFsL3RocmVhZF9hbm5vdGF0aW9ucy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29uZmlnCisgIFBVQkxJQwogKQogCi0KLQot
IwotIyMgVEVTVFMKLSMKLQotIyBjYWxsIG9uY2UgdGVzdAotc2V0KEFUT01JQ19IT09LX1RFU1Rf
U1JDICJpbnRlcm5hbC9hdG9taWNfaG9va190ZXN0LmNjIikKLXNldChBVE9NSUNfSE9PS19URVNU
X1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSkKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAg
ICBhdG9taWNfaG9va190ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0FUT01JQ19IT09LX1RFU1RfU1JD
fQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtBVE9NSUNfSE9PS19URVNUX1BVQkxJQ19MSUJS
QVJJRVN9CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBtYWxsb2NfaW50ZXJuYWwKKyAg
SERSUworICAgICJpbnRlcm5hbC9kaXJlY3RfbW1hcC5oIgorICAgICJpbnRlcm5hbC9sb3dfbGV2
ZWxfYWxsb2MuaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNl
CisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZHlu
YW1pY19hbm5vdGF0aW9ucworICAgIGFic2w6OnNwaW5sb2NrX3dhaXQKKyAgICBUaHJlYWRzOjpU
aHJlYWRzCiApCiAKLQotIyBjYWxsIG9uY2UgdGVzdAotc2V0KENBTExfT05DRV9URVNUX1NSQyAi
Y2FsbF9vbmNlX3Rlc3QuY2MiKQotc2V0KENBTExfT05DRV9URVNUX1BVQkxJQ19MSUJSQVJJRVMg
YWJzbDo6YmFzZSBhYnNsOjpzeW5jaHJvbml6YXRpb24pCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VU
Ci0gICAgY2FsbF9vbmNlX3Rlc3QKLSAgU09VUkNFUwotICAgICR7Q0FMTF9PTkNFX1RFU1RfU1JD
fQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtDQUxMX09OQ0VfVEVTVF9QVUJMSUNfTElCUkFS
SUVTfQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgYmFzZV9pbnRlcm5hbAorICBIRFJT
CisgICAgImludGVybmFsL2hpZGVfcHRyLmgiCisgICAgImludGVybmFsL2lkZW50aXR5LmgiCisg
ICAgImludGVybmFsL2lubGluZV92YXJpYWJsZS5oIgorICAgICJpbnRlcm5hbC9pbnZva2UuaCIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnR5
cGVfdHJhaXRzCiApCiAKLQotIyB0ZXN0IGJpdF9jYXN0X3Rlc3QKLXNldChCSVRfQ0FTVF9URVNU
X1NSQyAiYml0X2Nhc3RfdGVzdC5jYyIpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgYml0
X2Nhc3RfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtCSVRfQ0FTVF9URVNUX1NSQ30KK2Fic2xfY2Nf
bGlicmFyeSgKKyAgTkFNRQorICAgIGJhc2UKKyAgSERSUworICAgICJjYWxsX29uY2UuaCIKKyAg
ICAiY2FzdHMuaCIKKyAgICAiaW50ZXJuYWwvY3ljbGVjbG9jay5oIgorICAgICJpbnRlcm5hbC9s
b3dfbGV2ZWxfc2NoZWR1bGluZy5oIgorICAgICJpbnRlcm5hbC9wZXJfdGhyZWFkX3Rscy5oIgor
ICAgICJpbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorICAgICJpbnRlcm5hbC9zcGlubG9jay5oIgor
ICAgICJpbnRlcm5hbC9zeXNpbmZvLmgiCisgICAgImludGVybmFsL3RocmVhZF9pZGVudGl0eS5o
IgorICAgICJpbnRlcm5hbC90c2FuX211dGV4X2ludGVyZmFjZS5oIgorICAgICJpbnRlcm5hbC91
bnNjYWxlZGN5Y2xlY2xvY2suaCIKKyAgICAibG9nX3NldmVyaXR5LmgiCisgIFNSQ1MKKyAgICAi
aW50ZXJuYWwvY3ljbGVjbG9jay5jYyIKKyAgICAiaW50ZXJuYWwvcmF3X2xvZ2dpbmcuY2MiCisg
ICAgImludGVybmFsL3NwaW5sb2NrLmNjIgorICAgICJpbnRlcm5hbC9zeXNpbmZvLmNjIgorICAg
ICJpbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuY2MiCisgICAgImludGVybmFsL3Vuc2NhbGVkY3lj
bGVjbG9jay5jYyIKKyAgICAibG9nX3NldmVyaXR5LmNjIgorICBDT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YXRvbWljX2hvb2sKKyAgICBhYnNsOjpi
YXNlX2ludGVybmFsCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisg
ICAgYWJzbDo6ZHluYW1pY19hbm5vdGF0aW9ucworICAgIGFic2w6OmxvZ19zZXZlcml0eQorICAg
IGFic2w6OnNwaW5sb2NrX3dhaXQKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAgIFRocmVhZHM6
OlRocmVhZHMKKyAgUFVCTElDCiApCiAKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHRo
cm93X2RlbGVnYXRlCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaCIKKyAg
U1JDUworICAgICJpbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9DT1BUU30KKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBERVBTCisg
ICAgYWJzbDo6YmFzZQorKQogCi0jIHRlc3QgYWJzbF90aHJvd19kZWxlZ2F0ZV90ZXN0Ci1zZXQo
VEhST1dfREVMRUdBVEVfVEVTVF9TUkMgInRocm93X2RlbGVnYXRlX3Rlc3QuY2MiKQotc2V0KFRI
Uk9XX0RFTEVHQVRFX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2xfdGhyb3df
ZGVsZWdhdGUpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgdGhyb3dfZGVsZWdhdGVfdGVz
dAotICBTT1VSQ0VTCi0gICAgJHtUSFJPV19ERUxFR0FURV9URVNUX1NSQ30KLSAgUFVCTElDX0xJ
QlJBUklFUwotICAgICR7VEhST1dfREVMRUdBVEVfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorYWJz
bF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZXhjZXB0aW9uX3Rlc3RpbmcKKyAgSERSUworICAg
ICJpbnRlcm5hbC9leGNlcHRpb25fdGVzdGluZy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29uZmlnCisgICAgZ3Rlc3QKKyAgVEVTVE9O
TFkKICkKIAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcHJldHR5X2Z1bmN0aW9uCisg
IEhEUlMKKyAgICAiaW50ZXJuYWwvcHJldHR5X2Z1bmN0aW9uLmgiCisgIENPUFRTCisgICAgJHtB
QlNMX0RFRkFVTFRfQ09QVFN9CispCiAKLSMgdGVzdCBpbnZva2VfdGVzdAotc2V0KElOVk9LRV9U
RVNUX1NSQyAiaW52b2tlX3Rlc3QuY2MiKQotc2V0KElOVk9LRV9URVNUX1BVQkxJQ19MSUJSQVJJ
RVMgYWJzbDo6c3RyaW5ncykKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGV4Y2VwdGlv
bl9zYWZldHlfdGVzdGluZworICBIRFJTCisgICAgImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlf
dGVzdGluZy5oIgorICBTUkNTCisgICAgImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGlu
Zy5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgICAke0FCU0xfRVhDRVBU
SU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpwcmV0dHlfZnVuY3Rpb24K
KyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjptZXRhCisgICAgYWJzbDo6c3RyaW5ncworICAg
IGFic2w6OnV0aWxpdHkKKyAgICBndGVzdAorICBURVNUT05MWQorKQogCi1hYnNsX3Rlc3QoCi0g
IFRBUkdFVAotICAgIGludm9rZV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0lOVk9LRV9URVNUX1NS
Q30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7SU5WT0tFX1RFU1RfUFVCTElDX0xJQlJBUklF
U30KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGFic2xfZXhjZXB0aW9uX3NhZmV0eV90ZXN0
aW5nX3Rlc3QKKyAgU1JDUworICAgICJleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdC5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgICAke0FCU0xfRVhDRVBUSU9OU19G
TEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcKKyAgICBhYnNsOjptZW1v
cnkKKyAgICBndGVzdF9tYWluCiApCiAKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGF0b21p
Y19ob29rX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9hdG9taWNfaG9va190ZXN0LmNjIgor
ICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YXRvbWlj
X2hvb2sKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBndGVzdF9tYWluCispCiAKLSMgdGVz
dCBpbmxpbmVfdmFyaWFibGVfdGVzdAotbGlzdChBUFBFTkQgSU5MSU5FX1ZBUklBQkxFX1RFU1Rf
U1JDCi0gICJpbnRlcm5hbC9pbmxpbmVfdmFyaWFibGVfdGVzdGluZy5oIgotICAiaW5saW5lX3Zh
cmlhYmxlX3Rlc3QuY2MiCi0gICJpbmxpbmVfdmFyaWFibGVfdGVzdF9hLmNjIgotICAiaW5saW5l
X3ZhcmlhYmxlX3Rlc3RfYi5jYyIKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGJpdF9jYXN0
X3Rlc3QKKyAgU1JDUworICAgICJiaXRfY2FzdF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJT
TF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVh
ZGVycworICAgIGd0ZXN0X21haW4KICkKIAotc2V0KElOTElORV9WQVJJQUJMRV9URVNUX1BVQkxJ
Q19MSUJSQVJJRVMgYWJzbDo6YmFzZSkKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHRocm93
X2RlbGVnYXRlX3Rlc3QKKyAgU1JDUworICAgICJ0aHJvd19kZWxlZ2F0ZV90ZXN0LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAg
IGFic2w6OnRocm93X2RlbGVnYXRlCisgICAgZ3Rlc3RfbWFpbgorKQogCi1hYnNsX3Rlc3QoCi0g
IFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgaW5saW5lX3ZhcmlhYmxlX3Rlc3QK
LSAgU09VUkNFUwotICAgICR7SU5MSU5FX1ZBUklBQkxFX1RFU1RfU1JDfQotICBQVUJMSUNfTElC
UkFSSUVTCi0gICAgJHtJTkxJTkVfVkFSSUFCTEVfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBT
UkNTCisgICAgImludGVybmFsL2lubGluZV92YXJpYWJsZV90ZXN0aW5nLmgiCisgICAgImlubGlu
ZV92YXJpYWJsZV90ZXN0LmNjIgorICAgICJpbmxpbmVfdmFyaWFibGVfdGVzdF9hLmNjIgorICAg
ICJpbmxpbmVfdmFyaWFibGVfdGVzdF9iLmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZV9pbnRlcm5hbAorICAgIGd0ZXN0X21haW4KICkK
IAorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgaW52b2tlX3Rlc3QKKyAgU1JDUworICAgICJp
bnZva2VfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUwor
ICAgIGFic2w6OmJhc2VfaW50ZXJuYWwKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjpzdHJp
bmdzCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCiAKLSMgdGVzdCBzcGlubG9ja190ZXN0
X2NvbW1vbgotc2V0KFNQSU5MT0NLX1RFU1RfQ09NTU9OX1NSQyAic3BpbmxvY2tfdGVzdF9jb21t
b24uY2MiKQotc2V0KFNQSU5MT0NLX1RFU1RfQ09NTU9OX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6
YmFzZSBhYnNsOjpzeW5jaHJvbml6YXRpb24pCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNs
X2NjX2xpYnJhcnkoCisgIE5BTUUKICAgICBzcGlubG9ja190ZXN0X2NvbW1vbgotICBTT1VSQ0VT
Ci0gICAgJHtTUElOTE9DS19URVNUX0NPTU1PTl9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAg
ICAke1NQSU5MT0NLX1RFU1RfQ09NTU9OX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAi
c3BpbmxvY2tfdGVzdF9jb21tb24uY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJz
bDo6c3BpbmxvY2tfd2FpdAorICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorICAgIGd0ZXN0Cisg
IFRFU1RPTkxZCiApCiAKLQotIyB0ZXN0IHNwaW5sb2NrX3Rlc3QKLXNldChTUElOTE9DS19URVNU
X1NSQyAic3BpbmxvY2tfdGVzdF9jb21tb24uY2MiKQotc2V0KFNQSU5MT0NLX1RFU1RfUFVCTElD
X0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2w6OnN5bmNocm9uaXphdGlvbikKLQotYWJzbF90ZXN0
KAotICBUQVJHRVQKKyMgT24gYmF6ZWwgQlVJTEQgdGhpcyB0YXJnZXQgdXNlICJhbHdheXNsaW5r
ID0gMSIgd2hpY2ggaXMgbm90IGltcGxlbWVudGVkIGhlcmUKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQogICAgIHNwaW5sb2NrX3Rlc3QKLSAgU09VUkNFUwotICAgICR7U1BJTkxPQ0tfVEVTVF9TUkN9
Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1NQSU5MT0NLX1RFU1RfUFVCTElDX0xJQlJBUklF
U30KKyAgU1JDUworICAgICJzcGlubG9ja190ZXN0X2NvbW1vbi5jYyIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3Jl
X2hlYWRlcnMKKyAgICBhYnNsOjpzcGlubG9ja193YWl0CisgICAgYWJzbDo6c3luY2hyb25pemF0
aW9uCisgICAgZ3Rlc3RfbWFpbgogKQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBl
bmRpYW4KKyAgSERSUworICAgICJpbnRlcm5hbC9lbmRpYW4uaCIKKyAgICAiaW50ZXJuYWwvdW5h
bGlnbmVkX2FjY2Vzcy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgIFBVQkxJQwor
KQogCi0jIHRlc3QgZW5kaWFuX3Rlc3QKLXNldChFTkRJQU5fVEVTVF9TUkMgImludGVybmFsL2Vu
ZGlhbl90ZXN0LmNjIikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAg
TkFNRQogICAgIGVuZGlhbl90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0VORElBTl9URVNUX1NSQ30K
KyAgU1JDUworICAgICJpbnRlcm5hbC9lbmRpYW5fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcK
KyAgICBhYnNsOjplbmRpYW4KKyAgICBndGVzdF9tYWluCiApCiAKLQotIyB0ZXN0IGNvbmZpZ190
ZXN0Ci1zZXQoQ09ORklHX1RFU1RfU1JDICJjb25maWdfdGVzdC5jYyIpCi1zZXQoQ09ORklHX1RF
U1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2w6OnN5bmNocm9uaXphdGlvbikKLWFi
c2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBjb25maWdfdGVz
dAotICBTT1VSQ0VTCi0gICAgJHtDT05GSUdfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMK
LSAgICAke0NPTkZJR19URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAiY29uZmln
X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjpjb25maWcKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKyAgICBndGVzdF9tYWluCiAp
CiAKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGNhbGxfb25jZV90ZXN0CisgIFNSQ1MKKyAg
ICAiY2FsbF9vbmNlX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6
c3luY2hyb25pemF0aW9uCisgICAgZ3Rlc3RfbWFpbgorKQogCi0jIHRlc3QgcmF3X2xvZ2dpbmdf
dGVzdAotc2V0KFJBV19MT0dHSU5HX1RFU1RfU1JDICJyYXdfbG9nZ2luZ190ZXN0LmNjIikKLXNl
dChSQVdfTE9HR0lOR19URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSBhYnNsOjpzdHJp
bmdzKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAg
cmF3X2xvZ2dpbmdfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtSQVdfTE9HR0lOR19URVNUX1NSQ30K
LSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7UkFXX0xPR0dJTkdfVEVTVF9QVUJMSUNfTElCUkFS
SUVTfQorICBTUkNTCisgICAgInJhd19sb2dnaW5nX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6c3RyaW5n
cworICAgIGd0ZXN0X21haW4KICkKIAotCi0jIHRlc3Qgc3lzaW5mb190ZXN0Ci1zZXQoU1lTSU5G
T19URVNUX1NSQyAiaW50ZXJuYWwvc3lzaW5mb190ZXN0LmNjIikKLXNldChTWVNJTkZPX1RFU1Rf
UFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2w6OnN5bmNocm9uaXphdGlvbikKLQotYWJz
bF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHN5c2luZm9fdGVz
dAotICBTT1VSQ0VTCi0gICAgJHtTWVNJTkZPX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVT
Ci0gICAgJHtTWVNJTkZPX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJpbnRl
cm5hbC9zeXNpbmZvX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgZ3Rl
c3RfbWFpbgogKQogCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBsb3dfbGV2ZWxfYWxsb2Nf
dGVzdAorICBTUkNTCisgICAgImludGVybmFsL2xvd19sZXZlbF9hbGxvY190ZXN0LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6bWFsbG9jX2lu
dGVybmFsCisgICAgVGhyZWFkczo6VGhyZWFkcworKQogCi0jIHRlc3QgbG93X2xldmVsX2FsbG9j
X3Rlc3QKLXNldChMT1dfTEVWRUxfQUxMT0NfVEVTVF9TUkMgImludGVybmFsL2xvd19sZXZlbF9h
bGxvY190ZXN0LmNjIikKLXNldChMT1dfTEVWRUxfQUxMT0NfVEVTVF9QVUJMSUNfTElCUkFSSUVT
IGFic2w6OmJhc2UpCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICB0aHJlYWRfaWRlbnRpdHlf
dGVzdAorICBTUkNTCisgICAgImludGVybmFsL3RocmVhZF9pZGVudGl0eV90ZXN0LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAg
IGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorICAgIFRocmVh
ZHM6OlRocmVhZHMKKyAgICBndGVzdF9tYWluCispCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0g
ICAgbG93X2xldmVsX2FsbG9jX3Rlc3QKLSAgU09VUkNFUwotICAgICR7TE9XX0xFVkVMX0FMTE9D
X1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtMT1dfTEVWRUxfQUxMT0NfVEVT
VF9QVUJMSUNfTElCUkFSSUVTfQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgYml0cwor
ICBIRFJTCisgICAgImludGVybmFsL2JpdHMuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVM
VF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvcmVfaGVhZGVycwogKQogCithYnNsX2NjX3Rl
c3QoCisgIE5BTUUKKyAgICBiaXRzX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9iaXRzX3Rl
c3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNs
OjpiaXRzCisgICAgZ3Rlc3RfbWFpbgorKQogCi0jIHRlc3QgdGhyZWFkX2lkZW50aXR5X3Rlc3QK
LXNldChUSFJFQURfSURFTlRJVFlfVEVTVF9TUkMgImludGVybmFsL3RocmVhZF9pZGVudGl0eV90
ZXN0LmNjIikKLXNldChUSFJFQURfSURFTlRJVFlfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6
OmJhc2UgYWJzbDo6c3luY2hyb25pemF0aW9uKQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisg
ICAgc2NvcGVkX3NldF9lbnYKKyAgU1JDUworICAgICJpbnRlcm5hbC9zY29wZWRfc2V0X2Vudi5j
YyIKKyAgSERSUworICAgICJpbnRlcm5hbC9zY29wZWRfc2V0X2Vudi5oIgorICBDT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorKQogCi1hYnNs
X3Rlc3QoCi0gIFRBUkdFVAotICAgIHRocmVhZF9pZGVudGl0eV90ZXN0Ci0gIFNPVVJDRVMKLSAg
ICAke1RIUkVBRF9JREVOVElUWV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7
VEhSRUFEX0lERU5USVRZX1RFU1RfUFVCTElDX0xJQlJBUklFU30KK2Fic2xfY2NfdGVzdCgKKyAg
TkFNRQorICAgIHNjb3BlZF9zZXRfZW52X3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9zY29w
ZWRfc2V0X2Vudl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6c2NvcGVkX3NldF9lbnYKKyAgICBndGVzdF9tYWluCiApCiAKLSN0ZXN0
IGV4Y2VwdGlvbnNfc2FmZXR5X3Rlc3RpbmdfdGVzdAotc2V0KEVYQ0VQVElPTl9TQUZFVFlfVEVT
VElOR19URVNUX1NSQyAiZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nX3Rlc3QuY2MiKQotc2V0KEVY
Q0VQVElPTl9TQUZFVFlfVEVTVElOR19URVNUX1BVQkxJQ19MSUJSQVJJRVMKLSAgYWJzbDo6YmFz
ZQotICBhYnNsX2Jhc2VfaW50ZXJuYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nCi0gIGFic2w6
Om1lbW9yeQotICBhYnNsOjptZXRhCi0gIGFic2w6OnN0cmluZ3MKLSAgYWJzbDo6b3B0aW9uYWwK
K2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGNtYWtlX3RocmVhZF90ZXN0CisgIFNSQ1MKKyAg
ICAiaW50ZXJuYWwvY21ha2VfdGhyZWFkX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RF
U1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCiApCiAKLWFic2xfdGVzdCgKLSAgVEFS
R0VUCi0gICAgYWJzbF9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdAotICBTT1VSQ0VTCi0g
ICAgJHtFWENFUFRJT05fU0FGRVRZX1RFU1RJTkdfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICAke0VYQ0VQVElPTl9TQUZFVFlfVEVTVElOR19URVNUX1BVQkxJQ19MSUJSQVJJRVN9
Ci0gIFBSSVZBVEVfQ09NUElMRV9GTEFHUwotICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9Cith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBsb2dfc2V2ZXJpdHlfdGVzdAorICBTUkNTCisgICAg
ImxvZ19zZXZlcml0eV90ZXN0LmNjIgorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6
OmxvZ19zZXZlcml0eQorICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgogKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9hdHRyaWJ1dGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaAppbmRleCBl
ODUwMDIyNDQ0My4uYTdkYTYyYWY3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvYXR0cmlidXRl
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvYXR0cmlidXRlcy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC04MCw3ICs4MCw3IEBACiAvLwogLy8gQSBmdW5jdGlvbi1s
aWtlIGZlYXR1cmUgY2hlY2tpbmcgbWFjcm8gdGhhdCBhY2NlcHRzIEMrKzExIHN0eWxlIGF0dHJp
YnV0ZXMuCiAvLyBJdCdzIGEgd3JhcHBlciBhcm91bmQgYF9faGFzX2NwcF9hdHRyaWJ1dGVgLCBk
ZWZpbmVkIGJ5IElTTyBDKysgU0QtNgotLy8gKGh0dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cv
Y3BwL2V4cGVyaW1lbnRhbC9mZWF0dXJlX3Rlc3QpLiBJZiB3ZSBkb24ndAorLy8gKGh0dHBzOi8v
ZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9leHBlcmltZW50YWwvZmVhdHVyZV90ZXN0KS4gSWYg
d2UgZG9uJ3QKIC8vIGZpbmQgYF9faGFzX2NwcF9hdHRyaWJ1dGVgLCB3aWxsIGV2YWx1YXRlIHRv
IDAuCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykgJiYgZGVmaW5lZChfX2hhc19jcHBfYXR0cmli
dXRlKQogLy8gTk9URTogcmVxdWlyaW5nIF9fY3BsdXNwbHVzIGFib3ZlIHNob3VsZCBub3QgYmUg
bmVjZXNzYXJ5LCBidXQKQEAgLTEwMiw3ICsxMDIsNyBAQAogLy8KIC8vIFRlbGxzIHRoZSBjb21w
aWxlciB0byBwZXJmb3JtIGBwcmludGZgIGZvcm1hdCBzdHJpbmcgY2hlY2tpbmcgaWYgdGhlCiAv
LyBjb21waWxlciBzdXBwb3J0cyBpdDsgc2VlIHRoZSAnZm9ybWF0JyBhdHRyaWJ1dGUgaW4KLS8v
IDxodHRwOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC43LjAvZ2NjL0Z1bmN0aW9uLUF0
dHJpYnV0ZXMuaHRtbD4uCisvLyA8aHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy00
LjcuMC9nY2MvRnVuY3Rpb24tQXR0cmlidXRlcy5odG1sPi4KIC8vCiAvLyBOb3RlOiBBcyB0aGUg
R0NDIG1hbnVhbCBzdGF0ZXMsICJbc11pbmNlIG5vbi1zdGF0aWMgQysrIG1ldGhvZHMKIC8vIGhh
dmUgYW4gaW1wbGljaXQgJ3RoaXMnIGFyZ3VtZW50LCB0aGUgYXJndW1lbnRzIG9mIHN1Y2ggbWV0
aG9kcwpAQCAtMTU1LDcgKzE1NSwxMiBAQAogLy8gQUJTTF9BVFRSSUJVVEVfV0VBSwogLy8KIC8v
IFRhZ3MgYSBmdW5jdGlvbiBhcyB3ZWFrIGZvciB0aGUgcHVycG9zZXMgb2YgY29tcGlsYXRpb24g
YW5kIGxpbmtpbmcuCi0jaWYgQUJTTF9IQVZFX0FUVFJJQlVURSh3ZWFrKSB8fCAoZGVmaW5lZChf
X0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKSkKKy8vIFdlYWsgYXR0cmlidXRlcyBjdXJy
ZW50bHkgZG8gbm90IHdvcmsgcHJvcGVybHkgaW4gTExWTSdzIFdpbmRvd3MgYmFja2VuZCwKKy8v
IHNvIGRpc2FibGUgdGhlbSB0aGVyZS4gU2VlIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzc1OTgKKy8vIGZvciBmdXRoZXIgaW5mb3JtYXRpb24uCisjaWYgKEFCU0xfSEFW
RV9BVFRSSUJVVEUod2VhaykgfHwgXAorICAgICAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmlu
ZWQoX19jbGFuZ19fKSkpICYmIFwKKyAgICAhKGRlZmluZWQoX19sbHZtX18pICYmIGRlZmluZWQo
X1dJTjMyKSkKICN1bmRlZiBBQlNMX0FUVFJJQlVURV9XRUFLCiAjZGVmaW5lIEFCU0xfQVRUUklC
VVRFX1dFQUsgX19hdHRyaWJ1dGVfXygod2VhaykpCiAjZGVmaW5lIEFCU0xfSEFWRV9BVFRSSUJV
VEVfV0VBSyAxCkBAIC0yMjcsNyArMjMyLDcgQEAKIC8vIG91dCBvZiBib3VuZHMgb3IgZG9lcyBv
dGhlciBzY2FyeSB0aGluZ3Mgd2l0aCBtZW1vcnkuCiAvLyBOT1RFOiBHQ0Mgc3VwcG9ydHMgQWRk
cmVzc1Nhbml0aXplcihhc2FuKSBzaW5jZSA0LjguCiAvLyBodHRwczovL2djYy5nbnUub3JnL2dj
Yy00LjgvY2hhbmdlcy5odG1sCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChBRERS
RVNTX1NBTklUSVpFUikKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQogI2RlZmluZSBBQlNMX0FUVFJJ
QlVURV9OT19TQU5JVElaRV9BRERSRVNTIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX2FkZHJl
c3MpKQogI2Vsc2UKICNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTUwpA
QCAtMjQxLDcgKzI0Niw3IEBACiAvLyBUaGlzIGF0dHJpYnV0ZSBpcyBzaW1pbGFyIHRvIHRoZSBB
RERSRVNTX1NBTklUSVpFUiBhdHRyaWJ1dGUgYWJvdmUsIGJ1dCBkZWFscwogLy8gd2l0aCBpbml0
aWFsaXplZC1uZXNzIHJhdGhlciB0aGFuIGFkZHJlc3NhYmlsaXR5IGlzc3Vlcy4KIC8vIE5PVEU6
IE1lbW9yeVNhbml0aXplcihtc2FuKSBpcyBzdXBwb3J0ZWQgYnkgQ2xhbmcgYnV0IG5vdCBHQ0Mu
Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChNRU1PUllfU0FOSVRJWkVSKQorI2lm
IGRlZmluZWQoX19jbGFuZ19fKQogI2RlZmluZSBBQlNMX0FUVFJJQlVURV9OT19TQU5JVElaRV9N
RU1PUlkgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKICNlbHNlCiAjZGVmaW5l
IEFCU0xfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWQpAQCAtMjUyLDcgKzI1Nyw3IEBACiAv
LyBUZWxscyB0aGUgVGhyZWFkU2FuaXRpemVyIHRvIG5vdCBpbnN0cnVtZW50IGEgZ2l2ZW4gZnVu
Y3Rpb24uCiAvLyBOT1RFOiBHQ0Mgc3VwcG9ydHMgVGhyZWFkU2FuaXRpemVyKHRzYW4pIHNpbmNl
IDQuOC4KIC8vIGh0dHBzOi8vZ2NjLmdudS5vcmcvZ2NjLTQuOC9jaGFuZ2VzLmh0bWwKLSNpZiBk
ZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpCisjaWYgZGVmaW5l
ZChfX0dOVUNfXykKICNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEIF9f
YXR0cmlidXRlX18oKG5vX3Nhbml0aXplX3RocmVhZCkpCiAjZWxzZQogI2RlZmluZSBBQlNMX0FU
VFJJQlVURV9OT19TQU5JVElaRV9USFJFQUQKQEAgLTI4Miw2ICsyODcsMTcgQEAKICNkZWZpbmUg
QUJTTF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQ0ZJCiAjZW5kaWYKIAorLy8gQUJTTF9BVFRSSUJV
VEVfTk9fU0FOSVRJWkVfU0FGRVNUQUNLCisvLworLy8gVGVsbHMgdGhlIFNhZmVTdGFjayB0byBu
b3QgaW5zdHJ1bWVudCBhIGdpdmVuIGZ1bmN0aW9uLgorLy8gU2VlIGh0dHBzOi8vY2xhbmcubGx2
bS5vcmcvZG9jcy9TYWZlU3RhY2suaHRtbCBmb3IgZGV0YWlscy4KKyNpZiBkZWZpbmVkKF9fR05V
Q19fKSAmJiBkZWZpbmVkKFNBRkVTVEFDS19TQU5JVElaRVIpCisjZGVmaW5lIEFCU0xfQVRUUklC
VVRFX05PX1NBTklUSVpFX1NBRkVTVEFDSyBcCisgIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXpl
KCJzYWZlLXN0YWNrIikpKQorI2Vsc2UKKyNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfTk9fU0FOSVRJ
WkVfU0FGRVNUQUNLCisjZW5kaWYKKwogLy8gQUJTTF9BVFRSSUJVVEVfUkVUVVJOU19OT05OVUxM
CiAvLwogLy8gVGVsbHMgdGhlIGNvbXBpbGVyIHRoYXQgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIG5l
dmVyIHJldHVybnMgYSBudWxsIHBvaW50ZXIuCkBAIC0yOTYsMTMgKzMxMiwxMyBAQAogCiAvLyBB
QlNMX0hBVkVfQVRUUklCVVRFX1NFQ1RJT04KIC8vCi0vLyBJbmRpY2F0ZXMgd2hldGhlciBsYWJl
bGVkIHNlY3Rpb25zIGFyZSBzdXBwb3J0ZWQuIExhYmVsZWQgc2VjdGlvbnMgYXJlIG5vdAotLy8g
c3VwcG9ydGVkIG9uIERhcndpbi9pT1MuCisvLyBJbmRpY2F0ZXMgd2hldGhlciBsYWJlbGVkIHNl
Y3Rpb25zIGFyZSBzdXBwb3J0ZWQuIFdlYWsgc3ltYm9sIHN1cHBvcnQgaXMKKy8vIGEgcHJlcmVx
dWlzaXRlLiBMYWJlbGVkIHNlY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIG9uIERhcndpbi9pT1Mu
CiAjaWZkZWYgQUJTTF9IQVZFX0FUVFJJQlVURV9TRUNUSU9OCiAjZXJyb3IgQUJTTF9IQVZFX0FU
VFJJQlVURV9TRUNUSU9OIGNhbm5vdCBiZSBkaXJlY3RseSBzZXQKICNlbGlmIChBQlNMX0hBVkVf
QVRUUklCVVRFKHNlY3Rpb24pIHx8ICAgICAgICAgICAgICAgIFwKICAgICAgICAoZGVmaW5lZChf
X0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKSkpICYmIFwKLSAgICAhZGVmaW5lZChfX0FQ
UExFX18pCisgICAgIWRlZmluZWQoX19BUFBMRV9fKSAmJiBBQlNMX0hBVkVfQVRUUklCVVRFX1dF
QUsKICNkZWZpbmUgQUJTTF9IQVZFX0FUVFJJQlVURV9TRUNUSU9OIDEKIAogLy8gQUJTTF9BVFRS
SUJVVEVfU0VDVElPTgpAQCAtMzk3LDE3ICs0MTMsMjggQEAKIAogLy8gQUJTTF9NVVNUX1VTRV9S
RVNVTFQKIC8vCi0vLyBUZWxscyB0aGUgY29tcGlsZXIgdG8gd2FybiBhYm91dCB1bnVzZWQgcmV0
dXJuIHZhbHVlcyBmb3IgZnVuY3Rpb25zIGRlY2xhcmVkCi0vLyB3aXRoIHRoaXMgbWFjcm8uIFRo
ZSBtYWNybyBtdXN0IGFwcGVhciBhcyB0aGUgdmVyeSBmaXJzdCBwYXJ0IG9mIGEgZnVuY3Rpb24K
LS8vIGRlY2xhcmF0aW9uIG9yIGRlZmluaXRpb246CisvLyBUZWxscyB0aGUgY29tcGlsZXIgdG8g
d2FybiBhYm91dCB1bnVzZWQgcmVzdWx0cy4KIC8vCi0vLyBFeGFtcGxlOgorLy8gV2hlbiBhbm5v
dGF0aW5nIGEgZnVuY3Rpb24sIGl0IG11c3QgYXBwZWFyIGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRo
ZQorLy8gZGVjbGFyYXRpb24gb3IgZGVmaW5pdGlvbi4gVGhlIGNvbXBpbGVyIHdpbGwgd2FybiBp
ZiB0aGUgcmV0dXJuIHZhbHVlIGZyb20KKy8vIHN1Y2ggYSBmdW5jdGlvbiBpcyB1bnVzZWQ6CiAv
LwogLy8gICBBQlNMX01VU1RfVVNFX1JFU1VMVCBTcHJvY2tldCogQWxsb2NhdGVTcHJvY2tldCgp
OworLy8gICBBbGxvY2F0ZVNwcm9ja2V0KCk7ICAvLyBUcmlnZ2VycyBhIHdhcm5pbmcuCisvLwor
Ly8gV2hlbiBhbm5vdGF0aW5nIGEgY2xhc3MsIGl0IGlzIGVxdWl2YWxlbnQgdG8gYW5ub3RhdGlu
ZyBldmVyeSBmdW5jdGlvbiB3aGljaAorLy8gcmV0dXJucyBhbiBpbnN0YW5jZS4KKy8vCisvLyAg
IGNsYXNzIEFCU0xfTVVTVF9VU0VfUkVTVUxUIFNwcm9ja2V0IHt9OworLy8gICBTcHJvY2tldCgp
OyAgLy8gVHJpZ2dlcnMgYSB3YXJuaW5nLgorLy8KKy8vICAgU3Byb2NrZXQgTWFrZVNwcm9ja2V0
KCk7CisvLyAgIE1ha2VTcHJvY2tldCgpOyAgLy8gVHJpZ2dlcnMgYSB3YXJuaW5nLgorLy8KKy8v
IE5vdGUgdGhhdCByZWZlcmVuY2VzIGFuZCBwb2ludGVycyBhcmUgbm90IGluc3RhbmNlczoKIC8v
Ci0vLyBUaGlzIHBsYWNlbWVudCBoYXMgdGhlIGJyb2FkZXN0IGNvbXBhdGliaWxpdHkgd2l0aCBH
Q0MsIENsYW5nLCBhbmQgTVNWQywgd2l0aAotLy8gYm90aCBkZWZzIGFuZCBkZWNscywgYW5kIHdp
dGggR0NDLXN0eWxlIGF0dHJpYnV0ZXMsIE1TVkMgZGVjbHNwZWMsIEMrKzExCi0vLyBhbmQgQysr
MTcgYXR0cmlidXRlcy4KKy8vICAgU3Byb2NrZXQqIFNwcm9ja2V0UG9pbnRlcigpOworLy8gICBT
cHJvY2tldFBvaW50ZXIoKTsgIC8vIERvZXMgKm5vdCogdHJpZ2dlciBhIHdhcm5pbmcuCiAvLwog
Ly8gQUJTTF9NVVNUX1VTRV9SRVNVTFQgYWxsb3dzIHVzaW5nIGNhc3QtdG8tdm9pZCB0byBzdXBw
cmVzcyB0aGUgdW51c2VkIHJlc3VsdAogLy8gd2FybmluZy4gRm9yIHRoYXQsIHdhcm5fdW51c2Vk
X3Jlc3VsdCBpcyB1c2VkIG9ubHkgZm9yIGNsYW5nIGJ1dCBub3QgZm9yIGdjYy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvYml0X2Nhc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvYml0X2Nhc3RfdGVz
dC5jYwppbmRleCA4Y2Q4NzhkNzU2ZS4uNDg0NmFkZDQzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvYml0X2Nhc3RfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2JpdF9jYXN0X3Rlc3QuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvY2FsbF9vbmNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NhbGxfb25jZS5oCmluZGV4IDUzMmVlMmUz
OGJiLi5lN2ZjMjMwMGUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jYWxsX29uY2UuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2NhbGxfb25jZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUg
PGNzdGRpbnQ+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAog
I2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9pbnZva2UuaCIKICNpbmNsdWRlICJhYnNsL2Jh
c2UvaW50ZXJuYWwvbG93X2xldmVsX3NjaGVkdWxpbmcuaCIKQEAgLTM2LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvc2NoZWR1bGluZ19tb2RlLmgiCiAjaW5jbHVkZSAi
YWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dhaXQuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2Uv
bWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL29wdGltaXphdGlvbi5oIgogI2luY2x1ZGUg
ImFic2wvYmFzZS9wb3J0LmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKQEAgLTE1MCwxMiArMTUyLDgg
QEAgdm9pZCBDYWxsT25jZUltcGwoc3RkOjphdG9taWM8dWludDMyX3Q+KiBjb250cm9sLAogICAg
ICAgICBvbGRfY29udHJvbCAhPSBrT25jZVJ1bm5pbmcgJiYKICAgICAgICAgb2xkX2NvbnRyb2wg
IT0ga09uY2VXYWl0ZXIgJiYKICAgICAgICAgb2xkX2NvbnRyb2wgIT0ga09uY2VEb25lKSB7Ci0g
ICAgICBBQlNMX1JBV19MT0coCi0gICAgICAgICAgRkFUQUwsCi0gICAgICAgICAgIlVuZXhwZWN0
ZWQgdmFsdWUgZm9yIGNvbnRyb2wgd29yZDogJWx4LiBFaXRoZXIgdGhlIGNvbnRyb2wgd29yZCAi
Ci0gICAgICAgICAgImhhcyBub24tc3RhdGljIHN0b3JhZ2UgZHVyYXRpb24gKHdoZXJlIEdvb2ds
ZU9uY2VEeW5hbWljIG1pZ2h0ICIKLSAgICAgICAgICAiYmUgYXBwcm9wcmlhdGUpLCBvciB0aGVy
ZSdzIGJlZW4gYSBtZW1vcnkgY29ycnVwdGlvbi4iLAotICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmc+KG9sZF9jb250cm9sKSk7IC8vIE5PTElOVAorICAgICAgQUJTTF9SQVdfTE9H
KEZBVEFMLCAiVW5leHBlY3RlZCB2YWx1ZSBmb3IgY29udHJvbCB3b3JkOiAweCVseCIsCisgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ob2xkX2NvbnRyb2wpKTsg
IC8vIE5PTElOVAogICAgIH0KICAgfQogI2VuZGlmICAvLyBOREVCVUcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvY2FsbF9vbmNlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NhbGxfb25jZV90ZXN0LmNj
CmluZGV4IGNkNThlZTE5ZjA4Li45YTVhNWMxM2JlNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9j
YWxsX29uY2VfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NhbGxfb25jZV90ZXN0LmNjCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOCw2ICsxOCw4IEBACiAj
aW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9jb25zdF9pbml0Lmgi
CiAjaW5jbHVkZSAiYWJzbC9iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogI2luY2x1ZGUgImFi
c2wvc3luY2hyb25pemF0aW9uL211dGV4LmgiCiAKQEAgLTI1LDEzICsyNywxNCBAQCBuYW1lc3Bh
Y2UgYWJzbCB7CiBuYW1lc3BhY2UgewogCiBhYnNsOjpvbmNlX2ZsYWcgb25jZTsKLU11dGV4IGNv
dW50ZXJzX211OwogCi1pbnQgcnVubmluZ190aHJlYWRfY291bnQgR1VBUkRFRF9CWShjb3VudGVy
c19tdSkgPSAwOwotaW50IGNhbGxfb25jZV9pbnZva2VfY291bnQgR1VBUkRFRF9CWShjb3VudGVy
c19tdSkgPSAwOwotaW50IGNhbGxfb25jZV9maW5pc2hlZF9jb3VudCBHVUFSREVEX0JZKGNvdW50
ZXJzX211KSA9IDA7Ci1pbnQgY2FsbF9vbmNlX3JldHVybl9jb3VudCBHVUFSREVEX0JZKGNvdW50
ZXJzX211KSA9IDA7Ci1ib29sIGRvbmVfYmxvY2tpbmcgR1VBUkRFRF9CWShjb3VudGVyc19tdSkg
PSBmYWxzZTsKK0FCU0xfQ09OU1RfSU5JVCBNdXRleCBjb3VudGVyc19tdShhYnNsOjprQ29uc3RJ
bml0KTsKKworaW50IHJ1bm5pbmdfdGhyZWFkX2NvdW50IEFCU0xfR1VBUkRFRF9CWShjb3VudGVy
c19tdSkgPSAwOworaW50IGNhbGxfb25jZV9pbnZva2VfY291bnQgQUJTTF9HVUFSREVEX0JZKGNv
dW50ZXJzX211KSA9IDA7CitpbnQgY2FsbF9vbmNlX2ZpbmlzaGVkX2NvdW50IEFCU0xfR1VBUkRF
RF9CWShjb3VudGVyc19tdSkgPSAwOworaW50IGNhbGxfb25jZV9yZXR1cm5fY291bnQgQUJTTF9H
VUFSREVEX0JZKGNvdW50ZXJzX211KSA9IDA7Citib29sIGRvbmVfYmxvY2tpbmcgQUJTTF9HVUFS
REVEX0JZKGNvdW50ZXJzX211KSA9IGZhbHNlOwogCiAvLyBGdW5jdGlvbiB0byBiZSBjYWxsZWQg
ZnJvbSBhYnNsOjpjYWxsX29uY2UuICBXYWl0cyBmb3IgYSBub3RpZmljYXRpb24uCiB2b2lkIFdh
aXRBbmRJbmNyZW1lbnQoKSB7CkBAIC01Nyw3ICs2MCw3IEBAIHZvaWQgVGhyZWFkQm9keSgpIHsK
IH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIGFsbCB0aHJlYWRzIGFyZSBzZXQgdXAgZm9yIHRoZSB0
ZXN0LgotYm9vbCBUaHJlYWRzQXJlU2V0dXAodm9pZCopIEVYQ0xVU0lWRV9MT0NLU19SRVFVSVJF
RChjb3VudGVyc19tdSkgeworYm9vbCBUaHJlYWRzQXJlU2V0dXAodm9pZCopIEFCU0xfRVhDTFVT
SVZFX0xPQ0tTX1JFUVVJUkVEKGNvdW50ZXJzX211KSB7CiAgIC8vIEFsbCB0ZW4gdGhyZWFkcyBt
dXN0IGJlIHJ1bm5pbmcsIGFuZCBXYWl0QW5kSW5jcmVtZW50IHNob3VsZCBiZSBibG9ja2VkLgog
ICByZXR1cm4gcnVubmluZ190aHJlYWRfY291bnQgPT0gMTAgJiYgY2FsbF9vbmNlX2ludm9rZV9j
b3VudCA9PSAxOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jYXN0cy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9jYXN0cy5oCmluZGV4IDIwZmQzNGRhNzAxLi5hYmEwMTc4MjE5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9jYXN0cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY2FzdHMuaApAQCAtNSw3ICs1LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjcsMzEgKzI3LDI0IEBACiAjaW5jbHVkZSA8
Y3N0cmluZz4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5j
bHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9pZGVudGl0eS5o
IgogI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlw
ZV90cmFpdHMuaCIKIAogbmFtZXNwYWNlIGFic2wgewogCiBuYW1lc3BhY2UgaW50ZXJuYWxfY2Fz
dHMgewogCi0vLyBOT1RFOiBOb3QgYSBmdWxseSBjb21wbGlhbnQgaW1wbGVtZW50YXRpb24gb2Yg
YHN0ZDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlYC4KLS8vIFRPRE8oY2FsYWJyZXNlKSBCcmFuY2gg
b24gaW1wbGVtZW50YXRpb25zIHRoYXQgZGlyZWN0bHkgcHJvdmlkZQotLy8gYHN0ZDo6aXNfdHJp
dmlhbGx5X2NvcHlhYmxlYCwgY3JlYXRlIGEgbW9yZSByaWdvcm91cyB3b3JrYXJvdW5kLCBhbmQg
cHVibGljbHkKLS8vIGV4cG9zZSBpbiBtZXRhL3R5cGVfdHJhaXRzLgotdGVtcGxhdGUgPGNsYXNz
IFQ+Ci1zdHJ1Y3QgaXNfdHJpdmlhbGx5X2NvcHlhYmxlCi0gICAgOiBzdGQ6OmludGVncmFsX2Nv
bnN0YW50PAotICAgICAgICAgIGJvb2wsIHN0ZDo6aXNfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSYm
IF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihUKSAmJgotICAgICAgICAgICAgICAgICAgICBfX2hh
c190cml2aWFsX2NvcHkoVCkgJiYgX19oYXNfdHJpdmlhbF9hc3NpZ24oVCk+IHt9OwotCiB0ZW1w
bGF0ZSA8Y2xhc3MgRGVzdCwgY2xhc3MgU291cmNlPgogc3RydWN0IGlzX2JpdGNhc3RhYmxlCi0g
ICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVvZihEZXN0KSA9PSBzaXplb2YoU291cmNlKSAmJgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXNfdHJpdmlhbGx5X2NvcHlhYmxlPFNvdXJjZT46OnZhbHVlICYm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc190cml2aWFsbHlfY29weWFibGU8
RGVzdD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Omlz
X2RlZmF1bHRfY29uc3RydWN0aWJsZTxEZXN0Pjo6dmFsdWU+IHt9OworICAgIDogc3RkOjppbnRl
Z3JhbF9jb25zdGFudDwKKyAgICAgICAgICBib29sLAorICAgICAgICAgIHNpemVvZihEZXN0KSA9
PSBzaXplb2YoU291cmNlKSAmJgorICAgICAgICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6
aXNfdHJpdmlhbGx5X2NvcHlhYmxlPFNvdXJjZT46OnZhbHVlICYmCisgICAgICAgICAgICAgIHR5
cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8RGVzdD46OnZhbHVlICYm
CisgICAgICAgICAgICAgIHN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPERlc3Q+Ojp2YWx1
ZT4ge307CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbF9jYXN0cwogCkBAIC0xMDUsNyArOTgs
NyBAQCBzdHJ1Y3QgaXNfYml0Y2FzdGFibGUKIC8vCiAvLyBTdWNoIGltcGxpY2l0IGNhc3QgY2hh
aW5pbmcgbWF5IGJlIHVzZWZ1bCB3aXRoaW4gdGVtcGxhdGUgbG9naWMuCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVG8+Ci1pbmxpbmUgVG8gaW1wbGljaXRfY2FzdCh0eXBlbmFtZSBhYnNsOjppbnRlcm5h
bDo6aWRlbnRpdHlfdDxUbz4gdG8pIHsKK2NvbnN0ZXhwciBUbyBpbXBsaWNpdF9jYXN0KHR5cGVu
YW1lIGFic2w6OmludGVybmFsOjppZGVudGl0eV90PFRvPiB0bykgewogICByZXR1cm4gdG87CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbmZpZy5o
CmluZGV4IGQ0ZWI3ZDBjYmQ3Li4xYzNjYjA4ZTc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9j
b25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbmZpZy5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMTgsNyArMTE4LDcgQEAKIC8vIENoZWNrcyB3aGV0aGVy
IGBzdGQ6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGU8VD5gIGlzIHN1cHBvcnRlZC4KIAog
Ly8gTm90ZXM6IENsYW5nIHdpdGggbGliYysrIHN1cHBvcnRzIHRoZXNlIGZlYXR1cmVzLCBhcyBk
b2VzIGdjYyA+PSA1LjEgd2l0aAotLy8gZWl0aGVyIGxpYmMrKyBvciBsaWJzdGRjKyssIGFuZCBW
aXN1YWwgU3R1ZGlvLgorLy8gZWl0aGVyIGxpYmMrKyBvciBsaWJzdGRjKyssIGFuZCBWaXN1YWwg
U3R1ZGlvIChidXQgbm90IE5WQ0MpLgogI2lmIGRlZmluZWQoQUJTTF9IQVZFX1NURF9JU19UUklW
SUFMTFlfQ09OU1RSVUNUSUJMRSkKICNlcnJvciBBQlNMX0hBVkVfU1REX0lTX1RSSVZJQUxMWV9D
T05TVFJVQ1RJQkxFIGNhbm5vdCBiZSBkaXJlY3RseSBzZXQKICNlbGlmIGRlZmluZWQoQUJTTF9I
QVZFX1NURF9JU19UUklWSUFMTFlfQVNTSUdOQUJMRSkKQEAgLTEyNyw3ICsxMjcsNyBAQAogICAg
ICghZGVmaW5lZChfX2NsYW5nX18pICYmIGRlZmluZWQoX19HTlVDX18pICYmICAgICAgICAgICAg
ICAgICBcCiAgICAgIChfX0dOVUNfXyA+IDUgfHwgKF9fR05VQ19fID09IDUgJiYgX19HTlVDX01J
Tk9SX18gPj0gMSkpICYmIFwKICAgICAgKGRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSB8fCBkZWZp
bmVkKF9fR0xJQkNYWF9fKSkpIHx8ICAgICAgXAotICAgIGRlZmluZWQoX01TQ19WRVIpCisgICAg
KGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fTlZDQ19fKSkKICNkZWZpbmUgQUJTTF9I
QVZFX1NURF9JU19UUklWSUFMTFlfQ09OU1RSVUNUSUJMRSAxCiAjZGVmaW5lIEFCU0xfSEFWRV9T
VERfSVNfVFJJVklBTExZX0FTU0lHTkFCTEUgMQogI2VuZGlmCkBAIC0xMzksMTIgKzEzOSwxOCBA
QAogI2lmZGVmIEFCU0xfSEFWRV9USFJFQURfTE9DQUwKICNlcnJvciBBQlNMX0hBVkVfVEhSRUFE
X0xPQ0FMIGNhbm5vdCBiZSBkaXJlY3RseSBzZXQKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQot
Ly8gTm90ZXM6IFhjb2RlJ3MgY2xhbmcgZGlkIG5vdCBzdXBwb3J0IGB0aHJlYWRfbG9jYWxgIHVu
dGlsIHZlcnNpb24KLS8vIDgsIGFuZCBldmVuIHRoZW4gbm90IGZvciBhbGwgaU9TIDwgOS4wLiBB
bHNvLCBYY29kZSA5LjMgc3RhcnRlZCBkaXNhbGxvd2luZwotLy8gYHRocmVhZF9sb2NhbGAgZm9y
IDMyLWJpdCBpT1Mgc2ltdWxhdG9yIHRhcmdldGluZyBpT1MgOS54LgotLy8gYF9faGFzX2ZlYXR1
cmVgIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IENsYW5nIHNvIGl0IGhhcyBiZSBpbnNpZGUKKy8vIE5v
dGVzOgorLy8gKiBYY29kZSdzIGNsYW5nIGRpZCBub3Qgc3VwcG9ydCBgdGhyZWFkX2xvY2FsYCB1
bnRpbCB2ZXJzaW9uIDgsIGFuZAorLy8gICBldmVuIHRoZW4gbm90IGZvciBhbGwgaU9TIDwgOS4w
LgorLy8gKiBYY29kZSA5LjMgc3RhcnRlZCBkaXNhbGxvd2luZyBgdGhyZWFkX2xvY2FsYCBmb3Ig
MzItYml0IGlPUyBzaW11bGF0b3IKKy8vICAgdGFyZ2V0aW5nIGlPUyA5LnguCisvLyAqIFhjb2Rl
IDEwIG1vdmVzIHRoZSBkZXBsb3ltZW50IHRhcmdldCBjaGVjayBmb3IgaU9TIDwgOS4wIHRvIGxp
bmsgdGltZQorLy8gICBtYWtpbmcgX19oYXNfZmVhdHVyZSB1bnJlbGlhYmxlIHRoZXJlLgorLy8K
Ky8vIE90aGVyd2lzZSwgYF9faGFzX2ZlYXR1cmVgIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IENsYW5n
IHNvIGl0IGhhcyBiZSBpbnNpZGUKIC8vIGBkZWZpbmVkKF9fQVBQTEVfXylgIGNoZWNrLgotI2lm
IF9faGFzX2ZlYXR1cmUoY3h4X3RocmVhZF9sb2NhbCkKKyNpZiBfX2hhc19mZWF0dXJlKGN4eF90
aHJlYWRfbG9jYWwpICYmIFwKKyAgICAhKFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBfX0lQSE9ORV85XzApCiAjZGVmaW5lIEFCU0xfSEFWRV9U
SFJFQURfTE9DQUwgMQogI2VuZGlmCiAjZWxzZSAgLy8gIWRlZmluZWQoX19BUFBMRV9fKQpAQCAt
MTc1LDYgKzE4MSwxMyBAQAogI2VuZGlmCiAjZW5kaWYgIC8vIGRlZmluZWQoX19BTkRST0lEX18p
ICYmIGRlZmluZWQoX19jbGFuZ19fKQogCisvLyBFbXNjcmlwdGVuIGRvZXNuJ3QgeWV0IHN1cHBv
cnQgYHRocmVhZF9sb2NhbGAgb3IgYF9fdGhyZWFkYC4KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9l
bXNjcmlwdGVuLWNvcmUvZW1zY3JpcHRlbi9pc3N1ZXMvMzUwMgorI2lmIGRlZmluZWQoX19FTVND
UklQVEVOX18pCisjdW5kZWYgQUJTTF9IQVZFX1RMUworI3VuZGVmIEFCU0xfSEFWRV9USFJFQURf
TE9DQUwKKyNlbmRpZiAgLy8gZGVmaW5lZChfX0VNU0NSSVBURU5fXykKKwogLy8gQUJTTF9IQVZF
X0lOVFJJTlNJQ19JTlQxMjgKIC8vCiAvLyBDaGVja3Mgd2hldGhlciB0aGUgX19pbnQxMjggY29t
cGlsZXIgZXh0ZW5zaW9uIGZvciBhIDEyOC1iaXQgaW50ZWdyYWwgdHlwZSBpcwpAQCAtMTg1LDE1
ICsxOTgsMTMgQEAKIC8vICogT24gQ2xhbmc6CiAvLyAgICogQnVpbGRpbmcgdXNpbmcgQ2xhbmcg
Zm9yIFdpbmRvd3MsIHdoZXJlIHRoZSBDbGFuZyBydW50aW1lIGxpYnJhcnkgaGFzCiAvLyAgICAg
MTI4LWJpdCBzdXBwb3J0IG9ubHkgb24gTFA2NCBhcmNoaXRlY3R1cmVzLCBidXQgV2luZG93cyBp
cyBMTFA2NC4KLS8vICAgKiBCdWlsZGluZyBmb3IgYWFyY2g2NCwgd2hlcmUgX19pbnQxMjggZXhp
c3RzIGJ1dCBoYXMgZXhoaWJpdHMgYSBzcG9yYWRpYwotLy8gICAgIGNvbXBpbGVyIGNyYXNoaW5n
IGJ1Zy4KIC8vICogT24gTnZpZGlhJ3MgbnZjYzoKIC8vICAgKiBudmNjIGFsc28gZGVmaW5lcyBf
X0dOVUNfXyBhbmQgX19TSVpFT0ZfSU5UMTI4X18sIGJ1dCBub3QgYWxsIHZlcnNpb25zCiAvLyAg
ICAgYWN0dWFsbHkgc3VwcG9ydCBfX2ludDEyOC4KICNpZmRlZiBBQlNMX0hBVkVfSU5UUklOU0lD
X0lOVDEyOAogI2Vycm9yIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4IGNhbm5vdCBiZSBkaXJl
Y3RseSBzZXQKICNlbGlmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCi0jaWYgKGRlZmluZWQo
X19jbGFuZ19fKSAmJiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSkg
fHwgXAorI2lmIChkZWZpbmVkKF9fY2xhbmdfXykgJiYgIWRlZmluZWQoX1dJTjMyKSkgfHwgXAog
ICAgIChkZWZpbmVkKF9fQ1VEQUNDX18pICYmIF9fQ1VEQUNDX1ZFUl9NQUpPUl9fID49IDkpIHx8
ICAgICAgICAgICAgICAgIFwKICAgICAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19j
bGFuZ19fKSAmJiAhZGVmaW5lZChfX0NVREFDQ19fKSkKICNkZWZpbmUgQUJTTF9IQVZFX0lOVFJJ
TlNJQ19JTlQxMjggMQpAQCAtMjQ5LDcgKzI2MCw3IEBACiAvLyAgIExpbnV4IGFuZCBMaW51eC1k
ZXJpdmVkICAgICAgICAgICBfX2xpbnV4X18KIC8vICAgQW5kcm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fQU5EUk9JRF9fIChpbXBsaWVzIF9fbGludXhfXykKIC8vICAgTGludXggKG5v
bi1BbmRyb2lkKSAgICAgICAgICAgICAgIF9fbGludXhfXyAmJiAhX19BTkRST0lEX18KLS8vICAg
RGFyd2luIChNYWMgT1MgWCBhbmQgaU9TKSAgICAgICAgIF9fQVBQTEVfXworLy8gICBEYXJ3aW4g
KG1hY09TIGFuZCBpT1MpICAgICAgICAgICAgX19BUFBMRV9fCiAvLyAgIEFrYXJvcyAoaHR0cDov
L2FrYXJvcy5vcmcpICAgICAgICBfX3Jvc19fCiAvLyAgIFdpbmRvd3MgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfV0lOMzIKIC8vICAgTmFDTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fbmF0aXZlX2NsaWVudF9fCkBAIC0yNjgsNyArMjc5LDggQEAKICNlcnJvciBBQlNMX0hBVkVf
TU1BUCBjYW5ub3QgYmUgZGlyZWN0bHkgc2V0CiAjZWxpZiBkZWZpbmVkKF9fbGludXhfXykgfHwg
ZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8ICAgXAogICAgIGRl
ZmluZWQoX19yb3NfXykgfHwgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgZGVmaW5lZChf
X2FzbWpzX18pIHx8IFwKLSAgICBkZWZpbmVkKF9fd2FzbV9fKSB8fCBkZWZpbmVkKF9fRnVjaHNp
YV9fKSB8fCBkZWZpbmVkKF9fc3VuKQorICAgIGRlZmluZWQoX193YXNtX18pIHx8IGRlZmluZWQo
X19GdWNoc2lhX18pIHx8IGRlZmluZWQoX19zdW4pIHx8IFwKKyAgICBkZWZpbmVkKF9fQVNZTE9f
XykKICNkZWZpbmUgQUJTTF9IQVZFX01NQVAgMQogI2VuZGlmCiAKQEAgLTMyMiw2ICszMzQsOCBA
QAogI2RlZmluZSBBQlNMX0hBVkVfQUxBUk0gMQogI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKIC8v
IGZlYXR1cmUgdGVzdHMgZm9yIE1pY3Jvc29mdCdzIGxpYnJhcnkKKyNlbGlmIGRlZmluZWQoX19F
TVNDUklQVEVOX18pCisvLyBlbXNjcmlwdGVuIGRvZXNuJ3Qgc3VwcG9ydCBzaWduYWxzCiAjZWxp
ZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQogI2Vsc2UKIC8vIG90aGVyIHN0YW5kYXJkIGxp
YnJhcmllcwpAQCAtMzU2LDYgKzM3MCwyNyBAQAogI2Vycm9yICJhYnNsIGVuZGlhbiBkZXRlY3Rp
b24gbmVlZHMgdG8gYmUgc2V0IHVwIGZvciB5b3VyIGNvbXBpbGVyIgogI2VuZGlmCiAKKy8vIG1h
Y09TIDEwLjEzIGFuZCBpT1MgMTAuMTEgZG9uJ3QgbGV0IHlvdSB1c2UgPGFueT4sIDxvcHRpb25h
bD4sIG9yIDx2YXJpYW50PgorLy8gZXZlbiB0aG91Z2ggdGhlIGhlYWRlcnMgZXhpc3QgYW5kIGFy
ZSBwdWJsaWNseSBub3RlZCB0byB3b3JrLiAgU2VlCisvLyBodHRwczovL2dpdGh1Yi5jb20vYWJz
ZWlsL2Fic2VpbC1jcHAvaXNzdWVzLzIwNyBhbmQKKy8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxl
LmNvbS9kb2N1bWVudGF0aW9uL3hjb2RlX3JlbGVhc2Vfbm90ZXMveGNvZGVfMTBfcmVsZWFzZV9u
b3RlcworLy8gbGliYysrIHNwZWxscyBvdXQgdGhlIGF2YWlsYWJpbGl0eSByZXF1aXJlbWVudHMg
aW4gdGhlIGZpbGUKKy8vIGxsdm0tcHJvamVjdC9saWJjeHgvaW5jbHVkZS9fX2NvbmZpZyB2aWEg
dGhlICNkZWZpbmUKKy8vIF9MSUJDUFBfQVZBSUxBQklMSVRZX0JBRF9PUFRJT05BTF9BQ0NFU1Mu
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSAmJiBc
CisgICgoZGVmaW5lZChfX0VOVklST05NRU5UX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
X18pICYmIFwKKyAgIF9fRU5WSVJPTk1FTlRfTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRURf
XyA8IDEwMTQwMCkgfHwgXAorICAoZGVmaW5lZChfX0VOVklST05NRU5UX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRF9fKSAmJiBcCisgICBfX0VOVklST05NRU5UX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRF9fIDwgMTIwMDAwKSB8fCBcCisgIChkZWZpbmVkKF9fRU5WSVJPTk1F
TlRfV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRURfXykgJiYgXAorICAgX19FTlZJUk9OTUVO
VF9XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRF9fIDwgMTIwMDAwKSB8fCBcCisgIChkZWZp
bmVkKF9fRU5WSVJPTk1FTlRfVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRURfXykgJiYgXAorICAg
X19FTlZJUk9OTUVOVF9UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRF9fIDwgNTAwMDApKQorI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX0FQUExFX0NYWDE3X1RZUEVTX1VOQVZBSUxBQkxFIDEKKyNlbHNl
CisjZGVmaW5lIEFCU0xfSU5URVJOQUxfQVBQTEVfQ1hYMTdfVFlQRVNfVU5BVkFJTEFCTEUgMAor
I2VuZGlmCisKIC8vIEFCU0xfSEFWRV9TVERfQU5ZCiAvLwogLy8gQ2hlY2tzIHdoZXRoZXIgQysr
MTcgc3RkOjphbnkgaXMgYXZhaWxhYmxlIGJ5IGNoZWNraW5nIHdoZXRoZXIgPGFueT4gZXhpc3Rz
LgpAQCAtMzY0LDcgKzM5OSw4IEBACiAjZW5kaWYKIAogI2lmZGVmIF9faGFzX2luY2x1ZGUKLSNp
ZiBfX2hhc19pbmNsdWRlKDxhbnk+KSAmJiBfX2NwbHVzcGx1cyA+PSAyMDE3MDNMCisjaWYgX19o
YXNfaW5jbHVkZSg8YW55PikgJiYgX19jcGx1c3BsdXMgPj0gMjAxNzAzTCAmJiBcCisgICAgIUFC
U0xfSU5URVJOQUxfQVBQTEVfQ1hYMTdfVFlQRVNfVU5BVkFJTEFCTEUKICNkZWZpbmUgQUJTTF9I
QVZFX1NURF9BTlkgMQogI2VuZGlmCiAjZW5kaWYKQEAgLTM3Nyw3ICs0MTMsOCBAQAogI2VuZGlm
CiAKICNpZmRlZiBfX2hhc19pbmNsdWRlCi0jaWYgX19oYXNfaW5jbHVkZSg8b3B0aW9uYWw+KSAm
JiBfX2NwbHVzcGx1cyA+PSAyMDE3MDNMCisjaWYgX19oYXNfaW5jbHVkZSg8b3B0aW9uYWw+KSAm
JiBfX2NwbHVzcGx1cyA+PSAyMDE3MDNMICYmIFwKKyAgICAhQUJTTF9JTlRFUk5BTF9BUFBMRV9D
WFgxN19UWVBFU19VTkFWQUlMQUJMRQogI2RlZmluZSBBQlNMX0hBVkVfU1REX09QVElPTkFMIDEK
ICNlbmRpZgogI2VuZGlmCkBAIC0zOTAsNyArNDI3LDggQEAKICNlbmRpZgogCiAjaWZkZWYgX19o
YXNfaW5jbHVkZQotI2lmIF9faGFzX2luY2x1ZGUoPHZhcmlhbnQ+KSAmJiBfX2NwbHVzcGx1cyA+
PSAyMDE3MDNMCisjaWYgX19oYXNfaW5jbHVkZSg8dmFyaWFudD4pICYmIF9fY3BsdXNwbHVzID49
IDIwMTcwM0wgJiYgXAorICAgICFBQlNMX0lOVEVSTkFMX0FQUExFX0NYWDE3X1RZUEVTX1VOQVZB
SUxBQkxFCiAjZGVmaW5lIEFCU0xfSEFWRV9TVERfVkFSSUFOVCAxCiAjZW5kaWYKICNlbmRpZgpA
QCAtNDIzLDQgKzQ2MSwxMiBAQAogI2RlZmluZSBBQlNMX0hBVkVfU1REX1NUUklOR19WSUVXIDEK
ICNlbmRpZgogCisvLyBJbiBkZWJ1ZyBtb2RlLCBNU1ZDIDIwMTcncyBzdGQ6OnZhcmlhbnQgdGhy
b3dzIGEgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04KKy8vIFNFSCBleGNlcHRpb24gZnJvbSBl
bXBsYWNlIGZvciB2YXJpYW50PFNvbWVTdHJ1Y3Q+IHdoZW4gY29uc3RydWN0aW5nIHRoZQorLy8g
c3RydWN0IGNhbiB0aHJvdy4gVGhpcyBkZWZlYXRzIHNvbWUgb2YgdmFyaWFudF90ZXN0IGFuZAor
Ly8gdmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikg
JiYgX01TQ19WRVIgPj0gMTcwMCAmJiBkZWZpbmVkKF9ERUJVRykKKyNkZWZpbmUgQUJTTF9JTlRF
Uk5BTF9NU1ZDXzIwMTdfREJHX01PREUKKyNlbmRpZgorCiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9D
T05GSUdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uZmlnX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2NvbmZpZ190ZXN0LmNjCmluZGV4IGM4Mzk3MTJhNTM3Li43ZTBjMDMzZGU1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9jb25maWdfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbmZpZ190
ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2NvbnN0X2luaXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uc3RfaW5pdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNzg1OGE3Nzc4YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uc3RfaW5pdC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8v
IENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLyBrQ29uc3RJbml0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IEEgY29uc3RydWN0b3IgdGFnIHVzZWQgdG8gbWFyayBhbiBvYmplY3QgYXMgc2FmZSBmb3IgdXNl
IGFzIGEgZ2xvYmFsCisvLyB2YXJpYWJsZSwgYXZvaWRpbmcgdGhlIHVzdWFsIGxpZmV0aW1lIGlz
c3VlcyB0aGF0IGNhbiBhZmZlY3QgZ2xvYmFscy4KKworI2lmbmRlZiBBQlNMX0JBU0VfQ09OU1Rf
SU5JVF9IXworI2RlZmluZSBBQlNMX0JBU0VfQ09OU1RfSU5JVF9IXworCisvLyBJbiBnZW5lcmFs
LCBvYmplY3RzIHdpdGggc3RhdGljIHN0b3JhZ2UgZHVyYXRpb24gKHN1Y2ggYXMgZ2xvYmFsIHZh
cmlhYmxlcykKKy8vIGNhbiB0cmlnZ2VyIHRyaWNreSBvYmplY3QgbGlmZXRpbWUgc2l0dWF0aW9u
cy4gIEF0dGVtcHRpbmcgdG8gYWNjZXNzIHRoZW0KKy8vIGZyb20gdGhlIGNvbnN0cnVjdG9ycyBv
ciBkZXN0cnVjdG9ycyBvZiBvdGhlciBnbG9iYWwgb2JqZWN0cyBjYW4gcmVzdWx0IGluCisvLyB1
bmRlZmluZWQgYmVoYXZpb3IsIHVubGVzcyB0aGVpciBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0
b3JzIGFyZSBkZXNpZ25lZAorLy8gd2l0aCB0aGlzIGlzc3VlIGluIG1pbmQuCisvLworLy8gVGhl
IG5vcm1hbCB3YXkgdG8gZGVhbCB3aXRoIHRoaXMgaXNzdWUgaW4gQysrMTEgaXMgdG8gdXNlIGNv
bnN0YW50CisvLyBpbml0aWFsaXphdGlvbiBhbmQgdHJpdmlhbCBkZXN0cnVjdG9ycy4KKy8vCisv
LyBDb25zdGFudCBpbml0aWFsaXphdGlvbiBpcyBndWFyYW50ZWVkIHRvIG9jY3VyIGJlZm9yZSBh
bnkgb3RoZXIgY29kZQorLy8gZXhlY3V0ZXMuICBDb25zdHJ1Y3RvcnMgdGhhdCBhcmUgZGVjbGFy
ZWQgJ2NvbnN0ZXhwcicgYXJlIGVsaWdpYmxlIGZvcgorLy8gY29uc3RhbnQgaW5pdGlhbGl6YXRp
b24uICBZb3UgY2FuIGFubm90YXRlIGEgdmFyaWFibGUgZGVjbGFyYXRpb24gd2l0aCB0aGUKKy8v
IEFCU0xfQ09OU1RfSU5JVCBtYWNybyB0byBleHByZXNzIHRoaXMgaW50ZW50LiAgRm9yIGNvbXBp
bGVycyB0aGF0IHN1cHBvcnQKKy8vIGl0LCB0aGlzIGFubm90YXRpb24gd2lsbCBjYXVzZSBhIGNv
bXBpbGF0aW9uIGVycm9yIGZvciBkZWNsYXJhdGlvbnMgdGhhdAorLy8gYXJlbid0IHN1YmplY3Qg
dG8gY29uc3RhbnQgaW5pdGlhbGl6YXRpb24gKHBlcmhhcHMgYmVjYXVzZSBhIHJ1bnRpbWUgdmFs
dWUKKy8vIHdhcyBwYXNzZWQgYXMgYSBjb25zdHJ1Y3RvciBhcmd1bWVudCkuCisvLworLy8gT24g
cHJvZ3JhbSBzaHV0ZG93biwgbGlmZXRpbWUgaXNzdWVzIGNhbiBiZSBhdm9pZGVkIG9uIGdsb2Jh
bCBvYmplY3RzIGJ5CisvLyBlbnN1cmluZyB0aGF0IHRoZXkgY29udGFpbiAgdHJpdmlhbCBkZXN0
cnVjdG9ycy4gIEEgY2xhc3MgaGFzIGEgdHJpdmlhbAorLy8gZGVzdHJ1Y3RvciB1bmxlc3MgaXQg
aGFzIGEgdXNlci1kZWZpbmVkIGRlc3RydWN0b3IsIGEgdmlydHVhbCBtZXRob2Qgb3IgYmFzZQor
Ly8gY2xhc3MsIG9yIGEgZGF0YSBtZW1iZXIgb3IgYmFzZSBjbGFzcyB3aXRoIGEgbm9uLXRyaXZp
YWwgZGVzdHJ1Y3RvciBvZiBpdHMKKy8vIG93bi4gIE9iamVjdHMgd2l0aCBzdGF0aWMgc3RvcmFn
ZSBkdXJhdGlvbiBhbmQgYSB0cml2aWFsIGRlc3RydWN0b3IgYXJlIG5vdAorLy8gY2xlYW5lZCB1
cCBvbiBwcm9ncmFtIHNodXRkb3duLCBhbmQgYXJlIHRodXMgc2FmZSB0byBhY2Nlc3MgZnJvbSBv
dGhlciBjb2RlCisvLyBydW5uaW5nIGR1cmluZyBzaHV0ZG93bi4KKy8vCisvLyBGb3IgYSBmZXcg
Y29yZSBBYnNlaWwgY2xhc3Nlcywgd2UgbWFrZSBhIGJlc3QgZWZmb3J0IHRvIGFsbG93IGZvciBz
YWZlIGdsb2JhbAorLy8gaW5zdGFuY2VzLCBldmVuIHRob3VnaCB0aGVzZSBjbGFzc2VzIGhhdmUg
bm9uLXRyaXZpYWwgZGVzdHJ1Y3RvcnMuICBUaGVzZQorLy8gb2JqZWN0cyBjYW4gYmUgY3JlYXRl
ZCB3aXRoIHRoZSBhYnNsOjprQ29uc3RJbml0IHRhZy4gIEZvciBleGFtcGxlOgorLy8gICBBQlNM
X0NPTlNUX0lOSVQgYWJzbDo6TXV0ZXggZ2xvYmFsX211dGV4KGFic2w6OmtDb25zdEluaXQpOwor
Ly8KKy8vIFRoZSBsaW5lIGFib3ZlIGRlY2xhcmVzIGEgZ2xvYmFsIHZhcmlhYmxlIG9mIHR5cGUg
YWJzbDo6TXV0ZXggd2hpY2ggY2FuIGJlCisvLyBhY2Nlc3NlZCBhdCBhbnkgcG9pbnQgZHVyaW5n
IHN0YXJ0dXAgb3Igc2h1dGRvd24uICBnbG9iYWxfbXV0ZXgncyBkZXN0cnVjdG9yCisvLyB3aWxs
IHN0aWxsIHJ1biwgYnV0IHdpbGwgbm90IGludmFsaWRhdGUgdGhlIG9iamVjdC4gIE5vdGUgdGhh
dCBDKysgc3BlY2lmaWVzCisvLyB0aGF0IGFjY2Vzc2luZyBhbiBvYmplY3QgYWZ0ZXIgaXRzIGRl
c3RydWN0b3IgaGFzIHJ1biByZXN1bHRzIGluIHVuZGVmaW5lZAorLy8gYmVoYXZpb3IsIGJ1dCB0
aGlzIHBhdHRlcm4gd29ya3Mgb24gdGhlIHRvb2xjaGFpbnMgd2Ugc3VwcG9ydC4KKy8vCisvLyBU
aGUgYWJzbDo6a0NvbnN0SW5pdCB0YWcgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBkZWZpbmUgb2Jq
ZWN0cyB3aXRoIHN0YXRpYworLy8gb3IgdGhyZWFkX2xvY2FsIHN0b3JhZ2UgZHVyYXRpb24uCisK
K25hbWVzcGFjZSBhYnNsIHsKKworZW51bSBDb25zdEluaXRUeXBlIHsKKyAga0NvbnN0SW5pdCwK
K307CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9CQVNFX0NPTlNU
X0lOSVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvZHluYW1pY19hbm5vdGF0aW9ucy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvZHluYW1pY19hbm5vdGF0aW9ucy5jYwppbmRleCBiOTdmYTNhOGI0YS4uMTQx
MTA5Mzc1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvZHluYW1pY19hbm5vdGF0aW9ucy5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3RhdGlvbnMuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvZHluYW1pY19h
bm5vdGF0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9keW5hbWljX2Fubm90YXRpb25zLmgKaW5kZXggODgw
NDhiMGZiYjEuLmMxNTZlMDYzOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2R5bmFtaWNfYW5u
b3RhdGlvbnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3RhdGlvbnMuaApAQCAtNSw3
ICs1LDcgQEAKICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisgKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKICAqCiAgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTM5LDYgKzEzOSw3IEBACiAg
ICNkZWZpbmUgQUJTTF9BTk5PVEFURV9NRU1PUllfSVNfSU5JVElBTElaRUQoYWRkcmVzcywgc2l6
ZSkgLyogZW1wdHkgKi8KICAgI2RlZmluZSBBQlNMX0FOTk9UQVRFX01FTU9SWV9JU19VTklOSVRJ
QUxJWkVEKGFkZHJlc3MsIHNpemUpIC8qIGVtcHR5ICovCiAjZW5kaWYgIC8qIEFCU0xfRFlOQU1J
Q19BTk5PVEFUSU9OU19FTkFCTEVEIHx8IE1FTU9SWV9TQU5JVElaRVIgKi8KKwogLyogVE9ETyhk
ZWxlc2xleSkgLS0gUmVwbGFjZSBfX0NMQU5HX1NVUFBPUlRfRFlOX0FOTk9UQVRJT05fXyB3aXRo
IHRoZQogICAgYXBwcm9wcmlhdGUgZmVhdHVyZSBJRC4gKi8KICNpZiBkZWZpbmVkKF9fY2xhbmdf
XykgJiYgKCFkZWZpbmVkKFNXSUcpKSBcCkBAIC0zNzYsNyArMzc3LDcgQEAgaW5saW5lIFQgQUJT
TF9BTk5PVEFURV9VTlBST1RFQ1RFRF9SRUFEKGNvbnN0IHZvbGF0aWxlIFQgJngpIHsgLyogTk9M
SU5UICovCiAgIHN0cnVjdCB7IGNoYXIgeFs4XSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoOCkp
KTsgfSBuYW1lCiAjZWxzZQogI2RlZmluZSBBQlNMX0FOTk9UQVRFX0NPTlRJR1VPVVNfQ09OVEFJ
TkVSKGJlZywgZW5kLCBvbGRfbWlkLCBuZXdfbWlkKQotI2RlZmluZSBBQlNMX0FERFJFU1NfU0FO
SVRJWkVSX1JFRFpPTkUobmFtZSkKKyNkZWZpbmUgQUJTTF9BRERSRVNTX1NBTklUSVpFUl9SRURa
T05FKG5hbWUpIHN0YXRpY19hc3NlcnQodHJ1ZSwgIiIpCiAjZW5kaWYgIC8vIEFERFJFU1NfU0FO
SVRJWkVSCiAKIC8qIFVuZGVmaW5lIHRoZSBtYWNyb3MgaW50ZW5kZWQgb25seSBpbiB0aGlzIGZp
bGUuICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZ190
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdC5jYwppbmRl
eCAxMDZiYzM0YjAwZi4uMmVkMzg2MDY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvZXhjZXB0
aW9uX3NhZmV0eV90ZXN0aW5nX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9leGNlcHRpb25fc2Fm
ZXR5X3Rlc3RpbmdfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtNzcwLDYgKzc3MCwxOCBAQCBURVNUKEV4Y2VwdGlvbkNoZWNrVGVzdCwgTW9kaWZ5
aW5nQ2hlY2tlcikgewogICAgICAgICAgICAgICAgICAgLlRlc3QoaW52b2tlcikpOwogfQogCitU
RVNUKEV4Y2VwdGlvblNhZmV0eVRlc3RlclRlc3QsIFJlc2V0c0NvdW50ZG93bikgeworICBhdXRv
IHRlc3QgPQorICAgICAgdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCisgICAg
ICAgICAgLldpdGhJbml0aWFsVmFsdWUoVGhyb3dpbmdWYWx1ZTw+KCkpCisgICAgICAgICAgLldp
dGhDb250cmFjdHMoW10oVGhyb3dpbmdWYWx1ZTw+KikgeyByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOyB9KQorICAgICAgICAgIC5XaXRoT3BlcmF0aW9uKFtdKFRocm93aW5nVmFsdWU8PiopIHt9
KTsKKyAgQVNTRVJUX1RSVUUodGVzdC5UZXN0KCkpOworICAvLyBJZiB0aGUgY291bnRkb3duIGlz
bid0IHJlc2V0IGJlY2F1c2UgdGhlcmUgd2VyZSBubyBleGNlcHRpb25zIHRocm93biwgdGhlbgor
ICAvLyB0aGlzIHdpbGwgZmFpbCB3aXRoIGEgdGVybWluYXRpb24gZnJvbSBhbiB1bmhhbmRsZWQg
ZXhjZXB0aW9uCisgIEVYUEVDVF9UUlVFKHRlc3QuVGVzdCgpKTsKK30KKwogc3RydWN0IE5vbkNv
cHlhYmxlIDogcHVibGljIE5vbk5lZ2F0aXZlIHsKICAgTm9uQ29weWFibGUoY29uc3QgTm9uQ29w
eWFibGUmKSA9IGRlbGV0ZTsKICAgTm9uQ29weWFibGUoKSA6IE5vbk5lZ2F0aXZlezB9IHt9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lubGluZV92YXJpYWJsZV90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbmxpbmVfdmFyaWFibGVfdGVzdC5jYwppbmRleCA1NDk5MTg5YTNkYS4uNDcxZjcwNjMzY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW5saW5lX3ZhcmlhYmxlX3Rlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbmxpbmVfdmFyaWFibGVf
dGVzdF9hLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVzdF9hLmNjCmluZGV4IGEz
YmYzYjY4YjNjLi5kMGI4ZTdkMzk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbmxpbmVfdmFy
aWFibGVfdGVzdF9hLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW5saW5lX3ZhcmlhYmxlX3Rlc3RfYS5j
YwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVzdF9iLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbmxpbmVf
dmFyaWFibGVfdGVzdF9iLmNjCmluZGV4IGI0YjkzOTNhNTU4Li45MzFkNTZkMDU3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVzdF9iLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW5saW5lX3ZhcmlhYmxlX3Rlc3RfYi5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
IC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9hdG9taWNfaG9v
ay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9hdG9taWNfaG9vay5oCmluZGV4IGI0NTg1MTFiMGM3
Li44MDNlOTA1OTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9hdG9taWNfaG9v
ay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvYXRvbWljX2hvb2suaApAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC9hdG9taWNfaG9va190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9hdG9taWNfaG9v
a190ZXN0LmNjCmluZGV4IGNmNzQwNzU3M2E1Li5lY2M4MDQwNmIwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9hdG9taWNfaG9va190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvYXRvbWljX2hvb2tfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL2JpdHMuaAppbmRleCBiYzdmYWFlZTNiMi4uYjA3ODBmMmQxMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvYml0cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvYml0cy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHNfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvYml0c190ZXN0LmNjCmluZGV4IGU1ZDk5MWQ2NzI1Li43ODU1ZmE2Mjk3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzX3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9iaXRzX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvY21ha2VfdGhyZWFkX3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2NtYWtlX3RocmVhZF90ZXN0LmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mNzBiYjI0ZWI3YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvY21ha2VfdGhyZWFkX3Rlc3QuY2MKQEAgLTAsMCAr
MSwyMiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNs
dWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50
aXR5LmgiCisKK2ludCBtYWluKCkgeworICBhdXRvKiB0aWQgPSBhYnNsOjpiYXNlX2ludGVybmFs
OjpDdXJyZW50VGhyZWFkSWRlbnRpdHlJZlByZXNlbnQoKTsKKyAgLy8gTWFrZSBzdXJlIHRoZSBh
Ym92ZSBjYWxsIGNhbid0IGJlIG9wdGltaXplZCBvdXQKKyAgc3RkOjpjb3V0IDw8ICh2b2lkKil0
aWQgPDwgc3RkOjplbmRsOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9jeWNs
ZWNsb2NrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9jeWNsZWNsb2NrLmNjCmluZGV4IGE3NDJk
ZjAxZjk0Li5lOTg0NGI3MTc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9jeWNs
ZWNsb2NrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvY3ljbGVjbG9jay5jYwpAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjIsNiArMjIsNyBAQAogCiAj
aW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2N5Y2xlY2xvY2suaCIKIAorI2luY2x1ZGUgPGF0
b21pYz4KICNpbmNsdWRlIDxjaHJvbm8+ICAvLyBOT0xJTlQoYnVpbGQvYysrMTEpCiAKICNpbmNs
dWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgiCkBAIC01MiwxNyAr
NTMsNDAgQEAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IGtTaGlmdCA9IDI7CiAjZW5kaWYKIAog
c3RhdGljIGNvbnN0ZXhwciBkb3VibGUga0ZyZXF1ZW5jeVNjYWxlID0gMS4wIC8gKDEgPDwga1No
aWZ0KTsKK3N0YXRpYyBzdGQ6OmF0b21pYzxDeWNsZUNsb2NrU291cmNlRnVuYz4gY3ljbGVfY2xv
Y2tfc291cmNlOworCitDeWNsZUNsb2NrU291cmNlRnVuYyBMb2FkQ3ljbGVDbG9ja1NvdXJjZSgp
IHsKKyAgLy8gT3B0aW1pemUgZm9yIHRoZSBjb21tb24gY2FzZSAobm8gY2FsbGJhY2spIGJ5IGZp
cnN0IGRvaW5nIGEgcmVsYXhlZCBsb2FkOworICAvLyB0aGlzIGlzIHNpZ25pZmljYW50bHkgZmFz
dGVyIG9uIG5vbi14ODYgcGxhdGZvcm1zLgorICBpZiAoY3ljbGVfY2xvY2tfc291cmNlLmxvYWQo
c3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkgPT0gbnVsbHB0cikgeworICAgIHJldHVybiBudWxs
cHRyOworICB9CisgIC8vIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIHN0b3JlKHN0ZDo6bWVtb3J5
X29yZGVyX3JlbGVhc2UpIGluCisgIC8vIEN5Y2xlQ2xvY2tTb3VyY2U6OlJlZ2lzdGVyLCBhbmQg
bWFrZXMgc3VyZSB0aGF0IGFueSB1cGRhdGVzIG1hZGUgcHJpb3IgdG8KKyAgLy8gcmVnaXN0ZXJp
bmcgdGhlIGNhbGxiYWNrIGFyZSB2aXNpYmxlIHRvIHRoaXMgdGhyZWFkIGJlZm9yZSB0aGUgY2Fs
bGJhY2sgaXMKKyAgLy8gaW52b2tlZC4KKyAgcmV0dXJuIGN5Y2xlX2Nsb2NrX3NvdXJjZS5sb2Fk
KHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworfQogCiB9ICAvLyBuYW1lc3BhY2UKIAogaW50
NjRfdCBDeWNsZUNsb2NrOjpOb3coKSB7Ci0gIHJldHVybiBiYXNlX2ludGVybmFsOjpVbnNjYWxl
ZEN5Y2xlQ2xvY2s6Ok5vdygpID4+IGtTaGlmdDsKKyAgYXV0byBmbiA9IExvYWRDeWNsZUNsb2Nr
U291cmNlKCk7CisgIGlmIChmbiA9PSBudWxscHRyKSB7CisgICAgcmV0dXJuIGJhc2VfaW50ZXJu
YWw6OlVuc2NhbGVkQ3ljbGVDbG9jazo6Tm93KCkgPj4ga1NoaWZ0OworICB9CisgIHJldHVybiBm
bigpID4+IGtTaGlmdDsKIH0KIAogZG91YmxlIEN5Y2xlQ2xvY2s6OkZyZXF1ZW5jeSgpIHsKICAg
cmV0dXJuIGtGcmVxdWVuY3lTY2FsZSAqIGJhc2VfaW50ZXJuYWw6OlVuc2NhbGVkQ3ljbGVDbG9j
azo6RnJlcXVlbmN5KCk7CiB9CiAKK3ZvaWQgQ3ljbGVDbG9ja1NvdXJjZTo6UmVnaXN0ZXIoQ3lj
bGVDbG9ja1NvdXJjZUZ1bmMgc291cmNlKSB7CisgIC8vIENvcnJlc3BvbmRzIHRvIHRoZSBsb2Fk
KHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpIGluIExvYWRDeWNsZUNsb2NrU291cmNlLgorICBj
eWNsZV9jbG9ja19zb3VyY2Uuc3RvcmUoc291cmNlLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNl
KTsKK30KKwogI2Vsc2UKIAogaW50NjRfdCBDeWNsZUNsb2NrOjpOb3coKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL2N5Y2xlY2xvY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
Y3ljbGVjbG9jay5oCmluZGV4IDYwZTk3MTU4M2M1Li43OTQ1NjRlMTJmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9jeWNsZWNsb2NrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5h
bC9jeWNsZWNsb2NrLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTI4LDcgKzI4LDYgQEAKIC8vIG5vdCBuZWNlc3NhcmlseSAiQ1BVIGN5Y2xlcyIgYW5kIGNv
ZGUgc2hvdWxkIG5vdCByZWx5IG9uIHRoYXQgYmVoYXZpb3IsIGV2ZW4KIC8vIGlmIGV4cGVyaW1l
bnRhbGx5IG9ic2VydmVkLgogLy8KLS8vCiAvLyBBbiBhcmJpdHJhcnkgb2Zmc2V0IG1heSBoYXZl
IGJlZW4gYWRkZWQgdG8gdGhlIGNvdW50ZXIgYXQgcG93ZXIgb24uCiAvLwogLy8gT24gc29tZSBw
bGF0Zm9ybXMsIHRoZSByYXRlIGFuZCBvZmZzZXQgb2YgdGhlIGNvdW50ZXIgbWF5IGRpZmZlcgpA
QCAtNzEsNiArNzAsMjAgQEAgY2xhc3MgQ3ljbGVDbG9jayB7CiAgIEN5Y2xlQ2xvY2smIG9wZXJh
dG9yPShjb25zdCBDeWNsZUNsb2NrJikgPSBkZWxldGU7CiB9OwogCit1c2luZyBDeWNsZUNsb2Nr
U291cmNlRnVuYyA9IGludDY0X3QgKCopKCk7CisKK2NsYXNzIEN5Y2xlQ2xvY2tTb3VyY2Ugewor
IHByaXZhdGU6CisgIC8vIEN5Y2xlQ2xvY2tTb3VyY2U6OlJlZ2lzdGVyKCkKKyAgLy8KKyAgLy8g
UmVnaXN0ZXIgYSBmdW5jdGlvbiB0aGF0IHByb3ZpZGVzIGFuIGFsdGVybmF0ZSBzb3VyY2UgZm9y
IHRoZSB1bnNjYWxlZCBDUFUKKyAgLy8gY3ljbGUgY291bnQgdmFsdWUuIFRoZSBzb3VyY2UgZnVu
Y3Rpb24gbXVzdCBiZSBhc3luYyBzaWduYWwgc2FmZSwgbXVzdCBub3QKKyAgLy8gY2FsbCBDeWNs
ZUNsb2NrOjpOb3coKSwgYW5kIG11c3QgaGF2ZSBhIGZyZXF1ZW5jeSB0aGF0IG1hdGNoZXMgdGhh
dCBvZiB0aGUKKyAgLy8gdW5zY2FsZWQgY2xvY2sgdXNlZCBieSBDeWNsZUNsb2NrLiBBIG51bGxw
dHIgdmFsdWUgcmVzZXRzIEN5Y2xlQ2xvY2sgdG8gdXNlCisgIC8vIHRoZSBkZWZhdWx0IHNvdXJj
ZS4KKyAgc3RhdGljIHZvaWQgUmVnaXN0ZXIoQ3ljbGVDbG9ja1NvdXJjZUZ1bmMgc291cmNlKTsK
K307CisKIH0gIC8vIG5hbWVzcGFjZSBiYXNlX2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJz
bAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2RpcmVjdF9tbWFwLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL2RpcmVjdF9tbWFwLmgKaW5kZXggMDQyNmUxMTg5MGIuLjA0MDFkZGZh
N2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2RpcmVjdF9tbWFwLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9kaXJlY3RfbW1hcC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC03NSw3ICs3NSwxMSBAQCBpbmxpbmUgdm9pZCogRGlyZWN0
TW1hcCh2b2lkKiBzdGFydCwgc2l6ZV90IGxlbmd0aCwgaW50IHByb3QsIGludCBmbGFncywgaW50
IGZkLAogICAvLyBPbiB0aGVzZSBhcmNoaXRlY3R1cmVzLCBpbXBsZW1lbnQgbW1hcCB3aXRoIG1t
YXAyLgogICBzdGF0aWMgaW50IHBhZ2VzaXplID0gMDsKICAgaWYgKHBhZ2VzaXplID09IDApIHsK
KyNpZiBkZWZpbmVkKF9fd2FzbV9fKSB8fCBkZWZpbmVkKF9fYXNtanNfXykKICAgICBwYWdlc2l6
ZSA9IGdldHBhZ2VzaXplKCk7CisjZWxzZQorICAgIHBhZ2VzaXplID0gc3lzY29uZihfU0NfUEFH
RVNJWkUpOworI2VuZGlmCiAgIH0KICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICUgcGFnZXNp
emUgIT0gMCkgewogICAgIGVycm5vID0gRUlOVkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9lbmRpYW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuLmgKaW5kZXggZWRj
MTBmMTBhNWEuLjI5NmU5MmQ5ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2Vu
ZGlhbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuLmgKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIwLDcgKzIwLDcgQEAKICNpZmRlZiBfTVND
X1ZFUgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjZWxp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKLS8vIE1hYyBPUyBYIC8gRGFyd2luIGZlYXR1cmVzCisvLyBt
YWNPUyAvIERhcndpbiBmZWF0dXJlcwogI2luY2x1ZGUgPGxpYmtlcm4vT1NCeXRlT3JkZXIuaD4K
ICNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCiAjaW5jbHVkZSA8c3lzL2VuZGlhbi5oPgpAQCAt
NzUsMjEgKzc1LDIxIEBAIGlubGluZSB1aW50NjRfdCBnYnN3YXBfNjQodWludDY0X3QgaG9zdF9p
bnQpIHsKICAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKGhvc3RfaW50KSkgewogICAgIHJldHVy
biBfX2Jzd2FwX2NvbnN0YW50XzY0KGhvc3RfaW50KTsKICAgfSBlbHNlIHsKLSAgICByZWdpc3Rl
ciB1aW50NjRfdCByZXN1bHQ7CisgICAgdWludDY0X3QgcmVzdWx0OwogICAgIF9fYXNtX18oImJz
d2FwICUwIiA6ICI9ciIocmVzdWx0KSA6ICIwIihob3N0X2ludCkpOwogICAgIHJldHVybiByZXN1
bHQ7CiAgIH0KICNlbGlmIGRlZmluZWQoX19HTElCQ19fKQogICByZXR1cm4gYnN3YXBfNjQoaG9z
dF9pbnQpOwogI2Vsc2UKLSAgcmV0dXJuICgoKHggJiB1aW50NjRfdHsoMHhGRn0pIDw8IDU2KSB8
Ci0gICAgICAgICAgKCh4ICYgdWludDY0X3R7KDB4RkYwMH0pIDw8IDQwKSB8Ci0gICAgICAgICAg
KCh4ICYgdWludDY0X3R7KDB4RkYwMDAwfSkgPDwgMjQpIHwKLSAgICAgICAgICAoKHggJiB1aW50
NjRfdHsoMHhGRjAwMDAwMH0pIDw8IDgpIHwKLSAgICAgICAgICAoKHggJiB1aW50NjRfdHsoMHhG
RjAwMDAwMDAwfSkgPj4gOCkgfAotICAgICAgICAgICgoeCAmIHVpbnQ2NF90eygweEZGMDAwMDAw
MDAwMH0pID4+IDI0KSB8Ci0gICAgICAgICAgKCh4ICYgdWludDY0X3R7KDB4RkYwMDAwMDAwMDAw
MDB9KSA+PiA0MCkgfAotICAgICAgICAgICgoeCAmIHVpbnQ2NF90eygweEZGMDAwMDAwMDAwMDAw
MDB9KSA+PiA1NikpOworICByZXR1cm4gKCgoaG9zdF9pbnQgJiB1aW50NjRfdHsweEZGfSkgPDwg
NTYpIHwKKyAgICAgICAgICAoKGhvc3RfaW50ICYgdWludDY0X3R7MHhGRjAwfSkgPDwgNDApIHwK
KyAgICAgICAgICAoKGhvc3RfaW50ICYgdWludDY0X3R7MHhGRjAwMDB9KSA8PCAyNCkgfAorICAg
ICAgICAgICgoaG9zdF9pbnQgJiB1aW50NjRfdHsweEZGMDAwMDAwfSkgPDwgOCkgfAorICAgICAg
ICAgICgoaG9zdF9pbnQgJiB1aW50NjRfdHsweEZGMDAwMDAwMDB9KSA+PiA4KSB8CisgICAgICAg
ICAgKChob3N0X2ludCAmIHVpbnQ2NF90ezB4RkYwMDAwMDAwMDAwfSkgPj4gMjQpIHwKKyAgICAg
ICAgICAoKGhvc3RfaW50ICYgdWludDY0X3R7MHhGRjAwMDAwMDAwMDAwMH0pID4+IDQwKSB8Cisg
ICAgICAgICAgKChob3N0X2ludCAmIHVpbnQ2NF90ezB4RkYwMDAwMDAwMDAwMDAwMH0pID4+IDU2
KSk7CiAjZW5kaWYgIC8vIGJzd2FwXzY0CiB9CiAKQEAgLTk3LDggKzk3LDEwIEBAIGlubGluZSB1
aW50MzJfdCBnYnN3YXBfMzIodWludDMyX3QgaG9zdF9pbnQpIHsKICNpZiBkZWZpbmVkKF9fR0xJ
QkNfXykKICAgcmV0dXJuIGJzd2FwXzMyKGhvc3RfaW50KTsKICNlbHNlCi0gIHJldHVybiAoKCh4
ICYgMHhGRikgPDwgMjQpIHwgKCh4ICYgMHhGRjAwKSA8PCA4KSB8ICgoeCAmIDB4RkYwMDAwKSA+
PiA4KSB8Ci0gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4gMjQpKTsKKyAgcmV0dXJuICgo
KGhvc3RfaW50ICYgdWludDMyX3R7MHhGRn0pIDw8IDI0KSB8CisgICAgICAgICAgKChob3N0X2lu
dCAmIHVpbnQzMl90ezB4RkYwMH0pIDw8IDgpIHwKKyAgICAgICAgICAoKGhvc3RfaW50ICYgdWlu
dDMyX3R7MHhGRjAwMDB9KSA+PiA4KSB8CisgICAgICAgICAgKChob3N0X2ludCAmIHVpbnQzMl90
ezB4RkYwMDAwMDB9KSA+PiAyNCkpOwogI2VuZGlmCiB9CiAKQEAgLTEwNiw3ICsxMDgsOCBAQCBp
bmxpbmUgdWludDE2X3QgZ2Jzd2FwXzE2KHVpbnQxNl90IGhvc3RfaW50KSB7CiAjaWYgZGVmaW5l
ZChfX0dMSUJDX18pCiAgIHJldHVybiBic3dhcF8xNihob3N0X2ludCk7CiAjZWxzZQotICByZXR1
cm4gdWludDE2X3R7KCh4ICYgMHhGRikgPDwgOCkgfCAoKHggJiAweEZGMDApID4+IDgpfTsKKyAg
cmV0dXJuICgoKGhvc3RfaW50ICYgdWludDE2X3R7MHhGRn0pIDw8IDgpIHwKKyAgICAgICAgICAo
KGhvc3RfaW50ICYgdWludDE2X3R7MHhGRjAwfSkgPj4gOCkpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL2VuZGlhbl90ZXN0LmNjCmluZGV4IGUyNzY5MTU1M2JjLi45OGEwOTllNDNlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9lbmRpYW5fdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2ludGVybmFsL2VuZGlhbl90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9z
YWZldHlfdGVzdGluZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90
ZXN0aW5nLmNjCmluZGV4IGYxZDA4MWY3ZTUwLi42ZWY0MzI1Yzg2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcuY2MKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIzLDYgKzIzLDEwIEBAIGV4Y2VwdGlvbnNf
aW50ZXJuYWw6Ok5vVGhyb3dUYWcgbm90aHJvd19jdG9yOwogCiBleGNlcHRpb25zX2ludGVybmFs
OjpTdHJvbmdHdWFyYW50ZWVUYWdUeXBlIHN0cm9uZ19ndWFyYW50ZWU7CiAKK2V4Y2VwdGlvbnNf
aW50ZXJuYWw6OkV4Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyPD4gTWFrZUV4Y2VwdGlvblNhZmV0
eVRlc3RlcigpIHsKKyAgcmV0dXJuIHt9OworfQorCiBuYW1lc3BhY2UgZXhjZXB0aW9uc19pbnRl
cm5hbCB7CiAKIGludCBjb3VudGRvd24gPSAtMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2V4
Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oCmluZGV4IDU2NjVhMWI2N2RiLi5iZTM4YmE1NDllZiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fc2FmZXR5X3Rlc3Rpbmcu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zMyw3ICszMyw3IEBA
CiAjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL3N0cmluZ192aWV3LmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuaCIK
LSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC91dGlsaXR5
L3V0aWxpdHkuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC0xMjcsMTAgKzEyNyw4IEBA
IGNsYXNzIENvbnN0cnVjdG9yVHJhY2tlciB7CiAgICAgICB2b2lkKiBhZGRyZXNzID0gaXQuZmly
c3Q7CiAgICAgICBUcmFja2VkQWRkcmVzcyYgdHJhY2tlZF9hZGRyZXNzID0gaXQuc2Vjb25kOwog
ICAgICAgaWYgKHRyYWNrZWRfYWRkcmVzcy5pc19hbGl2ZSkgewotICAgICAgICBBRERfRkFJTFVS
RSgpIDw8ICJPYmplY3QgYXQgYWRkcmVzcyAiIDw8IGFkZHJlc3MKLSAgICAgICAgICAgICAgICAg
ICAgICA8PCAiIHdpdGggY291bnRkb3duIG9mICIgPDwgY291bnRkb3duXwotICAgICAgICAgICAg
ICAgICAgICAgIDw8ICIgd2FzIG5vdCBkZXN0cm95ZWQgWyIgPDwgdHJhY2tlZF9hZGRyZXNzLmRl
c2NyaXB0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgPDwgIl0iOworICAgICAgICBBRERfRkFJ
TFVSRSgpIDw8IEVycm9yTWVzc2FnZShhZGRyZXNzLCB0cmFja2VkX2FkZHJlc3MuZGVzY3JpcHRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZG93bl8sICJP
YmplY3Qgd2FzIG5vdCBkZXN0cm95ZWQuIik7CiAgICAgICB9CiAgICAgfQogICB9CkBAIC0xNDEs
MTEgKzEzOSwxMSBAQCBjbGFzcyBDb25zdHJ1Y3RvclRyYWNrZXIgewogICAgIFRyYWNrZWRBZGRy
ZXNzJiB0cmFja2VkX2FkZHJlc3MgPQogICAgICAgICBjdXJyZW50X3RyYWNrZXJfaW5zdGFuY2Vf
LT5hZGRyZXNzX21hcF9bYWRkcmVzc107CiAgICAgaWYgKHRyYWNrZWRfYWRkcmVzcy5pc19hbGl2
ZSkgewotICAgICAgQUREX0ZBSUxVUkUoKSA8PCAiT2JqZWN0IGF0IGFkZHJlc3MgIiA8PCBhZGRy
ZXNzIDw8ICIgd2l0aCBjb3VudGRvd24gb2YgIgotICAgICAgICAgICAgICAgICAgICA8PCBjdXJy
ZW50X3RyYWNrZXJfaW5zdGFuY2VfLT5jb3VudGRvd25fCi0gICAgICAgICAgICAgICAgICAgIDw8
ICIgd2FzIHJlLWNvbnN0cnVjdGVkLiBQcmV2aW91c2x5OiBbIgotICAgICAgICAgICAgICAgICAg
ICA8PCB0cmFja2VkX2FkZHJlc3MuZGVzY3JpcHRpb24gPDwgIl0gTm93OiBbIiA8PCBkZXNjcmlw
dGlvbgotICAgICAgICAgICAgICAgICAgICA8PCAiXSI7CisgICAgICBBRERfRkFJTFVSRSgpIDw8
IEVycm9yTWVzc2FnZSgKKyAgICAgICAgICBhZGRyZXNzLCB0cmFja2VkX2FkZHJlc3MuZGVzY3Jp
cHRpb24sCisgICAgICAgICAgY3VycmVudF90cmFja2VyX2luc3RhbmNlXy0+Y291bnRkb3duXywK
KyAgICAgICAgICAiT2JqZWN0IHdhcyByZS1jb25zdHJ1Y3RlZC4gQ3VycmVudCBvYmplY3Qgd2Fz
IGNvbnN0cnVjdGVkIGJ5ICIgKworICAgICAgICAgICAgICBkZXNjcmlwdGlvbik7CiAgICAgfQog
ICAgIHRyYWNrZWRfYWRkcmVzcyA9IHt0cnVlLCBzdGQ6Om1vdmUoZGVzY3JpcHRpb24pfTsKICAg
fQpAQCAtMTU5LDEwICsxNTcsOSBAQCBjbGFzcyBDb25zdHJ1Y3RvclRyYWNrZXIgewogCiAgICAg
VHJhY2tlZEFkZHJlc3MmIHRyYWNrZWRfYWRkcmVzcyA9IGl0LT5zZWNvbmQ7CiAgICAgaWYgKCF0
cmFja2VkX2FkZHJlc3MuaXNfYWxpdmUpIHsKLSAgICAgIEFERF9GQUlMVVJFKCkgPDwgIk9iamVj
dCBhdCBhZGRyZXNzICIgPDwgYWRkcmVzcyA8PCAiIHdpdGggY291bnRkb3duIG9mICIKLSAgICAg
ICAgICAgICAgICAgICAgPDwgY3VycmVudF90cmFja2VyX2luc3RhbmNlXy0+Y291bnRkb3duXwot
ICAgICAgICAgICAgICAgICAgICA8PCAiIHdhcyByZS1kZXN0cm95ZWQgb3IgY3JlYXRlZCBwcmlv
ciB0byBjb25zdHJ1Y3Rpb24gIgotICAgICAgICAgICAgICAgICAgICA8PCAidHJhY2tpbmcgWyIg
PDwgdHJhY2tlZF9hZGRyZXNzLmRlc2NyaXB0aW9uIDw8ICJdIjsKKyAgICAgIEFERF9GQUlMVVJF
KCkgPDwgRXJyb3JNZXNzYWdlKGFkZHJlc3MsIHRyYWNrZWRfYWRkcmVzcy5kZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfdHJhY2tlcl9pbnN0
YW5jZV8tPmNvdW50ZG93bl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
T2JqZWN0IHdhcyByZS1kZXN0cm95ZWQuIik7CiAgICAgfQogICAgIHRyYWNrZWRfYWRkcmVzcy5p
c19hbGl2ZSA9IGZhbHNlOwogICB9CkBAIC0xNzIsNiArMTY5LDE4IEBAIGNsYXNzIENvbnN0cnVj
dG9yVHJhY2tlciB7CiAgICAgcmV0dXJuIGN1cnJlbnRfdHJhY2tlcl9pbnN0YW5jZV8gIT0gbnVs
bHB0cjsKICAgfQogCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFcnJvck1lc3NhZ2Uodm9pZCogYWRk
cmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgYWRkcmVzc19kZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY291bnRkb3duLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBlcnJvcl9kZXNjcmlwdGlvbikgeworICAgIHJldHVybiBhYnNsOjpTdWJz
dGl0dXRlKAorICAgICAgICAiV2l0aCBjb3VuZHRvd24gYXQgJDA6XG4iCisgICAgICAgICIgICQx
XG4iCisgICAgICAgICIgIE9iamVjdCBvcmlnaW5hbGx5IGNvbnN0cnVjdGVkIGJ5ICQyXG4iCisg
ICAgICAgICIgIE9iamVjdCBhZGRyZXNzOiAkM1xuIiwKKyAgICAgICAgY291bnRkb3duLCBlcnJv
cl9kZXNjcmlwdGlvbiwgYWRkcmVzc19kZXNjcmlwdGlvbiwgYWRkcmVzcyk7CisgIH0KKwogICBz
dGQ6OnVub3JkZXJlZF9tYXA8dm9pZCosIFRyYWNrZWRBZGRyZXNzPiBhZGRyZXNzX21hcF87CiAg
IGludCBjb3VudGRvd25fOwogCkBAIC0xOTAsNzAgKzE5OSw2IEBAIGNsYXNzIFRyYWNrZWRPYmpl
Y3QgewogCiAgIH5UcmFja2VkT2JqZWN0KCkgbm9leGNlcHQgeyBDb25zdHJ1Y3RvclRyYWNrZXI6
Ok9iamVjdERlc3RydWN0ZWQodGhpcyk7IH0KIH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGYWN0
b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24sIHR5cGVuYW1lIENvbnRyYWN0PgotYWJzbDo6b3B0aW9u
YWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0PiBUZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93
bkltcGwoCi0gICAgY29uc3QgRmFjdG9yeSYgZmFjdG9yeSwgY29uc3QgT3BlcmF0aW9uJiBvcGVy
YXRpb24sIGludCBjb3VudCwKLSAgICBjb25zdCBDb250cmFjdCYgY29udHJhY3QpIHsKLSAgYXV0
byB0X3B0ciA9IGZhY3RvcnkoKTsKLSAgYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0PiBjdXJyZW50X3JlczsKLSAgU2V0Q291bnRkb3duKGNvdW50KTsKLSAgdHJ5IHsKLSAg
ICBvcGVyYXRpb24odF9wdHIuZ2V0KCkpOwotICB9IGNhdGNoIChjb25zdCBleGNlcHRpb25zX2lu
dGVybmFsOjpUZXN0RXhjZXB0aW9uJiBlKSB7Ci0gICAgY3VycmVudF9yZXMuZW1wbGFjZShjb250
cmFjdCh0X3B0ci5nZXQoKSkpOwotICAgIGlmICghY3VycmVudF9yZXMudmFsdWUoKSkgewotICAg
ICAgKmN1cnJlbnRfcmVzIDw8IGUud2hhdCgpIDw8ICIgZmFpbGVkIGNvbnRyYWN0IGNoZWNrIjsK
LSAgICB9Ci0gIH0KLSAgVW5zZXRDb3VudGRvd24oKTsKLSAgcmV0dXJuIGN1cnJlbnRfcmVzOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uPgotYWJz
bDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0PiBUZXN0U2luZ2xlQ29udHJhY3RB
dENvdW50ZG93bkltcGwoCi0gICAgY29uc3QgRmFjdG9yeSYgZmFjdG9yeSwgY29uc3QgT3BlcmF0
aW9uJiBvcGVyYXRpb24sIGludCBjb3VudCwKLSAgICBTdHJvbmdHdWFyYW50ZWVUYWdUeXBlKSB7
Ci0gIHVzaW5nIFRQdHIgPSB0eXBlbmFtZSBkZWNsdHlwZShmYWN0b3J5KCkpOjpwb2ludGVyOwot
ICBhdXRvIHRfaXNfc3Ryb25nID0gWyZdKFRQdHIgdCkgeyByZXR1cm4gKnQgPT0gKmZhY3Rvcnko
KTsgfTsKLSAgcmV0dXJuIFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duSW1wbChmYWN0b3J5
LCBvcGVyYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRfaXNfc3Ryb25nKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZhY3RvcnksIHR5
cGVuYW1lIE9wZXJhdGlvbiwgdHlwZW5hbWUgQ29udHJhY3Q+Ci1pbnQgVGVzdFNpbmdsZUNvbnRy
YWN0QXRDb3VudGRvd24oCi0gICAgY29uc3QgRmFjdG9yeSYgZmFjdG9yeSwgY29uc3QgT3BlcmF0
aW9uJiBvcGVyYXRpb24sIGludCBjb3VudCwKLSAgICBjb25zdCBDb250cmFjdCYgY29udHJhY3Qs
Ci0gICAgYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0PiogcmVkdWNlZF9y
ZXMpIHsKLSAgLy8gSWYgcmVkdWNlZF9yZXMgaXMgZW1wdHksIGl0IG1lYW5zIHRoZSBjdXJyZW50
IGNhbGwgdG8KLSAgLy8gVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd24oLi4uKSBpcyB0aGUg
Zmlyc3QgdGVzdCBiZWluZyBydW4gc28gd2UgZG8KLSAgLy8gd2FudCB0byBydW4gaXQuIEFsdGVy
bmF0aXZlbHksIGlmIGl0J3Mgbm90IGVtcHR5IChtZWFuaW5nIGEgcHJldmlvdXMgdGVzdAotICAv
LyBoYXMgcnVuKSB3ZSB3YW50IHRvIGNoZWNrIGlmIGl0IHBhc3NlZC4gSWYgdGhlIHByZXZpb3Vz
IHRlc3QgZGlkIHBhc3MsIHdlCi0gIC8vIHdhbnQgdG8gY29udGluZSBydW5uaW5nIHRlc3RzIHNv
IHdlIGRvIHdhbnQgdG8gcnVuIHRoZSBjdXJyZW50IG9uZS4gSWYgaXQKLSAgLy8gZmFpbGVkLCB3
ZSB3YW50IHRvIHNob3J0IGNpcmN1aXQgc28gYXMgbm90IHRvIG92ZXJ3cml0ZSB0aGUgQXNzZXJ0
aW9uUmVzdWx0Ci0gIC8vIG91dHB1dC4gSWYgdGhhdCdzIHRoZSBjYXNlLCB3ZSBkbyBub3QgcnVu
IHRoZSBjdXJyZW50IHRlc3QgYW5kIGluc3RlYWQgd2UKLSAgLy8gc2ltcGx5IHJldHVybi4KLSAg
aWYgKCFyZWR1Y2VkX3Jlcy0+aGFzX3ZhbHVlKCkgfHwgcmVkdWNlZF9yZXMtPnZhbHVlKCkpIHsK
LSAgICAqcmVkdWNlZF9yZXMgPQotICAgICAgICBUZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93
bkltcGwoZmFjdG9yeSwgb3BlcmF0aW9uLCBjb3VudCwgY29udHJhY3QpOwotICB9Ci0gIHJldHVy
biAwOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9u
LCB0eXBlbmFtZS4uLiBDb250cmFjdHM+Ci1pbmxpbmUgYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6
QXNzZXJ0aW9uUmVzdWx0PiBUZXN0QWxsQ29udHJhY3RzQXRDb3VudGRvd24oCi0gICAgY29uc3Qg
RmFjdG9yeSYgZmFjdG9yeSwgY29uc3QgT3BlcmF0aW9uJiBvcGVyYXRpb24sIGludCBjb3VudCwK
LSAgICBjb25zdCBDb250cmFjdHMmLi4uIGNvbnRyYWN0cykgewotICBhYnNsOjpvcHRpb25hbDx0
ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+IHJlZHVjZWRfcmVzOwotCi0gIC8vIFJ1biBlYWNoIGNo
ZWNrZXIsIHNob3J0IGNpcmN1aXRpbmcgYWZ0ZXIgdGhlIGZpcnN0IGZhaWx1cmUKLSAgaW50IGR1
bW15W10gPSB7Ci0gICAgICAwLCAoVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd24oZmFjdG9y
eSwgb3BlcmF0aW9uLCBjb3VudCwgY29udHJhY3RzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZyZWR1Y2VkX3JlcykpLi4ufTsKLSAgc3RhdGljX2Nhc3Q8dm9pZD4o
ZHVtbXkpOwotICByZXR1cm4gcmVkdWNlZF9yZXM7Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSBleGNl
cHRpb25zX2ludGVybmFsCiAKIGV4dGVybiBleGNlcHRpb25zX2ludGVybmFsOjpOb1Rocm93VGFn
IG5vdGhyb3dfY3RvcjsKQEAgLTYxMyw4ICs1NTgsOCBAQCBjbGFzcyBUaHJvd2luZ1ZhbHVlIDog
cHJpdmF0ZSBleGNlcHRpb25zX2ludGVybmFsOjpUcmFja2VkT2JqZWN0IHsKICAgLy8gV2UgcHJv
dmlkZSBib3RoIHJlZ3VsYXIgYW5kIHRlbXBsYXRlZCBvcGVyYXRvciBkZWxldGUgYmVjYXVzZSBp
ZiBvbmx5IHRoZQogICAvLyB0ZW1wbGF0ZWQgdmVyc2lvbiBpcyBwcm92aWRlZCBhcyB3ZSBkaWQg
d2l0aCBvcGVyYXRvciBuZXcsIHRoZSBjb21waWxlciBoYXMKICAgLy8gbm8gd2F5IG9mIGtub3dp
bmcgd2hpY2ggb3ZlcmxvYWQgb2Ygb3BlcmF0b3IgZGVsZXRlIHRvIGNhbGwuIFNlZQotICAvLyBo
dHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9tZW1vcnkvbmV3L29wZXJhdG9yX2RlbGV0
ZSBhbmQKLSAgLy8gaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZGVs
ZXRlIGZvciB0aGUgZ29yeSBkZXRhaWxzLgorICAvLyBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5j
b20vdy9jcHAvbWVtb3J5L25ldy9vcGVyYXRvcl9kZWxldGUgYW5kCisgIC8vIGh0dHBzOi8vZW4u
Y3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9kZWxldGUgZm9yIHRoZSBnb3J5IGRldGFp
bHMuCiAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIG5vZXhjZXB0IHsgOjpvcGVyYXRv
ciBkZWxldGUocCk7IH0KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KQEAgLTc3Myw3
ICs3MTgsNyBAQCBjbGFzcyBUaHJvd2luZ0FsbG9jYXRvciA6IHByaXZhdGUgZXhjZXB0aW9uc19p
bnRlcm5hbDo6VHJhY2tlZE9iamVjdCB7CiAgIH0KIAogICBzaXplX3R5cGUgbWF4X3NpemUoKSBj
b25zdCBub2V4Y2VwdCB7Ci0gICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZGlmZmVyZW5j
ZV90eXBlPjo6bWF4KCkgLyBzaXplb2YodmFsdWVfdHlwZSk7CisgICAgcmV0dXJuIChzdGQ6Om51
bWVyaWNfbGltaXRzPGRpZmZlcmVuY2VfdHlwZT46Om1heCkoKSAvIHNpemVvZih2YWx1ZV90eXBl
KTsKICAgfQogCiAgIFRocm93aW5nQWxsb2NhdG9yIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9j
b25zdHJ1Y3Rpb24oKSBub2V4Y2VwdCgKQEAgLTg3MSw3ICs4MTYsNyBAQCB0ZXN0aW5nOjpBc3Nl
cnRpb25SZXN1bHQgVGVzdE5vdGhyb3dPcChjb25zdCBPcGVyYXRpb24mIG9wZXJhdGlvbikgewog
CiBuYW1lc3BhY2UgZXhjZXB0aW9uc19pbnRlcm5hbCB7CiAKLS8vIER1bW15IHN0cnVjdCBmb3Ig
RXhjZXB0aW9uU2FmZXR5VGVzdGVyPD4gcGFydGlhbCBzdGF0ZS4KKy8vIER1bW15IHN0cnVjdCBm
b3IgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXI8PiBwYXJ0aWFsIHN0YXRlLgogc3RydWN0IFVu
aW5pdGlhbGl6ZWRUIHt9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTg5MywyMCArODM4
LDk3IEBAIHVzaW5nIEVuYWJsZUlmVGVzdGFibGUgPSB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZf
dDwKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZhY3RvcnkgPSBVbmluaXRpYWxpemVkVCwKICAgICAg
ICAgICB0eXBlbmFtZSBPcGVyYXRpb24gPSBVbmluaXRpYWxpemVkVCwgdHlwZW5hbWUuLi4gQ29u
dHJhY3RzPgotY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyOworY2xhc3MgRXhjZXB0aW9uU2Fm
ZXR5VGVzdEJ1aWxkZXI7CiAKIH0gIC8vIG5hbWVzcGFjZSBleGNlcHRpb25zX2ludGVybmFsCiAK
LWV4Y2VwdGlvbnNfaW50ZXJuYWw6OkV4Y2VwdGlvblNhZmV0eVRlc3Rlcjw+IE1ha2VFeGNlcHRp
b25TYWZldHlUZXN0ZXIoKTsKKy8qCisgKiBDb25zdHJ1Y3RzIGFuIGVtcHR5IEV4Y2VwdGlvblNh
ZmV0eVRlc3RCdWlsZGVyLiBBbGwKKyAqIEV4Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyIG9iamVj
dHMgYXJlIGltbXV0YWJsZSBhbmQgYWxsIFdpdGhbdGhpbmddIG11dGF0aW9uCisgKiBtZXRob2Rz
IHJldHVybiBuZXcgaW5zdGFuY2VzIG9mIEV4Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyLgorICoK
KyAqIEluIG9yZGVyIHRvIHRlc3QgYSBUIGZvciBleGNlcHRpb24gc2FmZXR5LCBhIGZhY3Rvcnkg
Zm9yIHRoYXQgVCwgYSB0ZXN0YWJsZQorICogb3BlcmF0aW9uLCBhbmQgYXQgbGVhc3Qgb25lIGNv
bnRyYWN0IGNhbGxiYWNrIHJldHVybmluZyBhbiBhc3NlcnRpb24KKyAqIHJlc3VsdCBtdXN0IGJl
IGFwcGxpZWQgdXNpbmcgdGhlIHJlc3BlY3RpdmUgbWV0aG9kcy4KKyAqLworZXhjZXB0aW9uc19p
bnRlcm5hbDo6RXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXI8PiBNYWtlRXhjZXB0aW9uU2FmZXR5
VGVzdGVyKCk7CiAKIG5hbWVzcGFjZSBleGNlcHRpb25zX2ludGVybmFsIHsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IElzVW5pcXVlUHRyIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRD4KK3N0cnVjdCBJc1VuaXF1ZVB0cjxzdGQ6
OnVuaXF1ZV9wdHI8VCwgRD4+IDogc3RkOjp0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBGYWN0b3J5Pgorc3RydWN0IEZhY3RvcnlQdHJUeXBlSGVscGVyIHsKKyAgdXNpbmcgdHlw
ZSA9IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxjb25zdCBGYWN0b3J5Jj4oKSgpKTsKKworICBzdGF0
aWNfYXNzZXJ0KElzVW5pcXVlUHRyPHR5cGU+Ojp2YWx1ZSwgIkZhY3RvcmllcyBtdXN0IHJldHVy
biBhIHVuaXF1ZV9wdHIiKTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5PgordXNp
bmcgRmFjdG9yeVB0clR5cGUgPSB0eXBlbmFtZSBGYWN0b3J5UHRyVHlwZUhlbHBlcjxGYWN0b3J5
Pjo6dHlwZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEZhY3Rvcnk+Cit1c2luZyBGYWN0b3J5RWxl
bWVudFR5cGUgPSB0eXBlbmFtZSBGYWN0b3J5UHRyVHlwZTxGYWN0b3J5Pjo6ZWxlbWVudF90eXBl
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEV4Y2VwdGlvblNhZmV0eVRlc3Qgewor
ICB1c2luZyBGYWN0b3J5ID0gc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VD4oKT47Cisg
IHVzaW5nIE9wZXJhdGlvbiA9IHN0ZDo6ZnVuY3Rpb248dm9pZChUKik+OworICB1c2luZyBDb250
cmFjdCA9IHN0ZDo6ZnVuY3Rpb248QXNzZXJ0aW9uUmVzdWx0KFQqKT47CisKKyBwdWJsaWM6Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBDb250cmFjdHM+CisgIGV4cGxpY2l0IEV4Y2VwdGlvblNh
ZmV0eVRlc3QoY29uc3QgRmFjdG9yeSYgZiwgY29uc3QgT3BlcmF0aW9uJiBvcCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb250cmFjdHMmLi4uIGNvbnRyYWN0cykKKyAg
ICAgIDogZmFjdG9yeV8oZiksIG9wZXJhdGlvbl8ob3ApLCBjb250cmFjdHNfe1dyYXBDb250cmFj
dChjb250cmFjdHMpLi4ufSB7fQorCisgIEFzc2VydGlvblJlc3VsdCBUZXN0KCkgY29uc3Qgewor
ICAgIGZvciAoaW50IGNvdW50ID0gMDs7ICsrY291bnQpIHsKKyAgICAgIGV4Y2VwdGlvbnNfaW50
ZXJuYWw6OkNvbnN0cnVjdG9yVHJhY2tlciBjdChjb3VudCk7CisKKyAgICAgIGZvciAoY29uc3Qg
YXV0byYgY29udHJhY3QgOiBjb250cmFjdHNfKSB7CisgICAgICAgIGF1dG8gdF9wdHIgPSBmYWN0
b3J5XygpOworICAgICAgICB0cnkgeworICAgICAgICAgIFNldENvdW50ZG93bihjb3VudCk7Cisg
ICAgICAgICAgb3BlcmF0aW9uXyh0X3B0ci5nZXQoKSk7CisgICAgICAgICAgLy8gVW5zZXQgZm9y
IHRoZSBjYXNlIHRoYXQgdGhlIG9wZXJhdGlvbiB0aHJvd3Mgbm8gZXhjZXB0aW9ucywgd2hpY2gK
KyAgICAgICAgICAvLyB3b3VsZCBsZWF2ZSB0aGUgY291bnRkb3duIHNldCBhbmQgYnJlYWsgdGhl
ICpuZXh0KiBleGNlcHRpb24gc2FmZXR5CisgICAgICAgICAgLy8gdGVzdCBhZnRlciB0aGlzIG9u
ZS4KKyAgICAgICAgICBVbnNldENvdW50ZG93bigpOworICAgICAgICAgIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7CisgICAgICAgIH0gY2F0Y2ggKGNvbnN0IGV4Y2VwdGlvbnNfaW50ZXJuYWw6
OlRlc3RFeGNlcHRpb24mIGUpIHsKKyAgICAgICAgICBpZiAoIWNvbnRyYWN0KHRfcHRyLmdldCgp
KSkgeworICAgICAgICAgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBlLndoYXQoKSA8
PCAiIGZhaWxlZCBjb250cmFjdCBjaGVjayI7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9CisgICAgfQorICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udHJh
Y3RGbj4KKyAgQ29udHJhY3QgV3JhcENvbnRyYWN0KGNvbnN0IENvbnRyYWN0Rm4mIGNvbnRyYWN0
KSB7CisgICAgcmV0dXJuIFtjb250cmFjdF0oVCogdF9wdHIpIHsgcmV0dXJuIEFzc2VydGlvblJl
c3VsdChjb250cmFjdCh0X3B0cikpOyB9OworICB9CisKKyAgQ29udHJhY3QgV3JhcENvbnRyYWN0
KFN0cm9uZ0d1YXJhbnRlZVRhZ1R5cGUpIHsKKyAgICByZXR1cm4gW3RoaXNdKFQqIHRfcHRyKSB7
IHJldHVybiBBc3NlcnRpb25SZXN1bHQoKmZhY3RvcnlfKCkgPT0gKnRfcHRyKTsgfTsKKyAgfQor
CisgIEZhY3RvcnkgZmFjdG9yeV87CisgIE9wZXJhdGlvbiBvcGVyYXRpb25fOworICBzdGQ6OnZl
Y3RvcjxDb250cmFjdD4gY29udHJhY3RzXzsKK307CiAKIC8qCiAgKiBCdWlsZHMgYSB0ZXN0ZXIg
b2JqZWN0IHRoYXQgdGVzdHMgaWYgcGVyZm9ybWluZyBhIG9wZXJhdGlvbiBvbiBhIFQgZm9sbG93
cwogICogZXhjZXB0aW9uIHNhZmV0eSBndWFyYW50ZWVzLiBWZXJpZmljYXRpb24gaXMgZG9uZSB2
aWEgY29udHJhY3QgYXNzZXJ0aW9uCiAgKiBjYWxsYmFja3MgYXBwbGllZCB0byBUIGluc3RhbmNl
cyBwb3N0LXRocm93LgogICoKLSAqIFRlbXBsYXRlIHBhcmFtZXRlcnMgZm9yIEV4Y2VwdGlvblNh
ZmV0eVRlc3RlcjoKKyAqIFRlbXBsYXRlIHBhcmFtZXRlcnMgZm9yIEV4Y2VwdGlvblNhZmV0eVRl
c3RCdWlsZGVyOgogICoKICAqIC0gRmFjdG9yeTogVGhlIGZhY3Rvcnkgb2JqZWN0IChwYXNzZWQg
aW4gdmlhIHRlc3Rlci5XaXRoRmFjdG9yeSguLi4pIG9yCiAgKiAgIHRlc3Rlci5XaXRoSW5pdGlh
bFZhbHVlKC4uLikpIG11c3QgYmUgaW52b2NhYmxlIHdpdGggdGhlIHNpZ25hdHVyZQpAQCAtOTMz
LDEzICs5NTUsMTMgQEAgbmFtZXNwYWNlIGV4Y2VwdGlvbnNfaW50ZXJuYWwgewogICogICBwbGVh
c2UuCiAgKi8KIHRlbXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24s
IHR5cGVuYW1lLi4uIENvbnRyYWN0cz4KLWNsYXNzIEV4Y2VwdGlvblNhZmV0eVRlc3RlciB7Citj
bGFzcyBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlciB7CiAgcHVibGljOgogICAvKgotICAgKiBS
ZXR1cm5zIGEgbmV3IEV4Y2VwdGlvblNhZmV0eVRlc3RlciB3aXRoIGFuIGluY2x1ZGVkIFQgZmFj
dG9yeSBiYXNlZCBvbiB0aGUKLSAgICogcHJvdmlkZWQgVCBpbnN0YW5jZS4gVGhlIGV4aXN0aW5n
IGZhY3Rvcnkgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIG5ld2x5Ci0gICAqIGNyZWF0ZWQg
dGVzdGVyIGluc3RhbmNlLiBUaGUgY3JlYXRlZCBmYWN0b3J5IHJldHVybnMgYSBuZXcgVCBpbnN0
YW5jZSBieQotICAgKiBjb3B5LWNvbnN0cnVjdGluZyB0aGUgcHJvdmlkZWQgY29uc3QgVCYgdC4K
KyAgICogUmV0dXJucyBhIG5ldyBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlciB3aXRoIGFuIGlu
Y2x1ZGVkIFQgZmFjdG9yeSBiYXNlZAorICAgKiBvbiB0aGUgcHJvdmlkZWQgVCBpbnN0YW5jZS4g
VGhlIGV4aXN0aW5nIGZhY3Rvcnkgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4KKyAgICogdGhlIG5l
d2x5IGNyZWF0ZWQgdGVzdGVyIGluc3RhbmNlLiBUaGUgY3JlYXRlZCBmYWN0b3J5IHJldHVybnMg
YSBuZXcgVAorICAgKiBpbnN0YW5jZSBieSBjb3B5LWNvbnN0cnVjdGluZyB0aGUgcHJvdmlkZWQg
Y29uc3QgVCYgdC4KICAgICoKICAgICogUHJlY29uZGl0aW9ucyBmb3IgdGVzdGVyLldpdGhJbml0
aWFsVmFsdWUoY29uc3QgVCYgdCk6CiAgICAqCkBAIC05NDgsNDEgKzk3MCw0MSBAQCBjbGFzcyBF
eGNlcHRpb25TYWZldHlUZXN0ZXIgewogICAgKiAgIHRlc3Rlci5XaXRoRmFjdG9yeSguLi4pLgog
ICAgKi8KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIEV4Y2VwdGlvblNhZmV0eVRlc3RlcjxE
ZWZhdWx0RmFjdG9yeTxUPiwgT3BlcmF0aW9uLCBDb250cmFjdHMuLi4+CisgIEV4Y2VwdGlvblNh
ZmV0eVRlc3RCdWlsZGVyPERlZmF1bHRGYWN0b3J5PFQ+LCBPcGVyYXRpb24sIENvbnRyYWN0cy4u
Lj4KICAgV2l0aEluaXRpYWxWYWx1ZShjb25zdCBUJiB0KSBjb25zdCB7CiAgICAgcmV0dXJuIFdp
dGhGYWN0b3J5KERlZmF1bHRGYWN0b3J5PFQ+KHQpKTsKICAgfQogCiAgIC8qCi0gICAqIFJldHVy
bnMgYSBuZXcgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHdpdGggdGhlIHByb3ZpZGVkIFQgZmFjdG9y
eSBpbmNsdWRlZC4KLSAgICogVGhlIGV4aXN0aW5nIGZhY3Rvcnkgd2lsbCBub3QgYmUgaW5jbHVk
ZWQgaW4gdGhlIG5ld2x5LWNyZWF0ZWQgdGVzdGVyCi0gICAqIGluc3RhbmNlLiBUaGlzIG1ldGhv
ZCBpcyBpbnRlbmRlZCBmb3IgdXNlIHdpdGggdHlwZXMgbGFja2luZyBhIGNvcHkKKyAgICogUmV0
dXJucyBhIG5ldyBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlciB3aXRoIHRoZSBwcm92aWRlZCBU
IGZhY3RvcnkKKyAgICogaW5jbHVkZWQuIFRoZSBleGlzdGluZyBmYWN0b3J5IHdpbGwgbm90IGJl
IGluY2x1ZGVkIGluIHRoZSBuZXdseS1jcmVhdGVkCisgICAqIHRlc3RlciBpbnN0YW5jZS4gVGhp
cyBtZXRob2QgaXMgaW50ZW5kZWQgZm9yIHVzZSB3aXRoIHR5cGVzIGxhY2tpbmcgYSBjb3B5CiAg
ICAqIGNvbnN0cnVjdG9yLiBUeXBlcyB0aGF0IGNhbiBiZSBjb3B5LWNvbnN0cnVjdGVkIHNob3Vs
ZCBpbnN0ZWFkIHVzZSB0aGUKICAgICogbWV0aG9kIHRlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKC4u
LikuCiAgICAqLwogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTmV3RmFjdG9yeT4KLSAgRXhjZXB0aW9u
U2FmZXR5VGVzdGVyPGFic2w6OmRlY2F5X3Q8TmV3RmFjdG9yeT4sIE9wZXJhdGlvbiwgQ29udHJh
Y3RzLi4uPgorICBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlcjxhYnNsOjpkZWNheV90PE5ld0Zh
Y3Rvcnk+LCBPcGVyYXRpb24sIENvbnRyYWN0cy4uLj4KICAgV2l0aEZhY3RvcnkoY29uc3QgTmV3
RmFjdG9yeSYgbmV3X2ZhY3RvcnkpIGNvbnN0IHsKICAgICByZXR1cm4ge25ld19mYWN0b3J5LCBv
cGVyYXRpb25fLCBjb250cmFjdHNffTsKICAgfQogCiAgIC8qCi0gICAqIFJldHVybnMgYSBuZXcg
RXhjZXB0aW9uU2FmZXR5VGVzdGVyIHdpdGggdGhlIHByb3ZpZGVkIHRlc3RhYmxlIG9wZXJhdGlv
bgotICAgKiBpbmNsdWRlZC4gVGhlIGV4aXN0aW5nIG9wZXJhdGlvbiB3aWxsIG5vdCBiZSBpbmNs
dWRlZCBpbiB0aGUgbmV3bHkgY3JlYXRlZAotICAgKiB0ZXN0ZXIuCisgICAqIFJldHVybnMgYSBu
ZXcgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXIgd2l0aCB0aGUgcHJvdmlkZWQgdGVzdGFibGUK
KyAgICogb3BlcmF0aW9uIGluY2x1ZGVkLiBUaGUgZXhpc3Rpbmcgb3BlcmF0aW9uIHdpbGwgbm90
IGJlIGluY2x1ZGVkIGluIHRoZQorICAgKiBuZXdseSBjcmVhdGVkIHRlc3Rlci4KICAgICovCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBOZXdPcGVyYXRpb24+Ci0gIEV4Y2VwdGlvblNhZmV0eVRlc3Rl
cjxGYWN0b3J5LCBhYnNsOjpkZWNheV90PE5ld09wZXJhdGlvbj4sIENvbnRyYWN0cy4uLj4KKyAg
RXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXI8RmFjdG9yeSwgYWJzbDo6ZGVjYXlfdDxOZXdPcGVy
YXRpb24+LCBDb250cmFjdHMuLi4+CiAgIFdpdGhPcGVyYXRpb24oY29uc3QgTmV3T3BlcmF0aW9u
JiBuZXdfb3BlcmF0aW9uKSBjb25zdCB7CiAgICAgcmV0dXJuIHtmYWN0b3J5XywgbmV3X29wZXJh
dGlvbiwgY29udHJhY3RzX307CiAgIH0KIAogICAvKgotICAgKiBSZXR1cm5zIGEgbmV3IEV4Y2Vw
dGlvblNhZmV0eVRlc3RlciB3aXRoIHRoZSBwcm92aWRlZCBNb3JlQ29udHJhY3RzLi4uCisgICAq
IFJldHVybnMgYSBuZXcgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXIgd2l0aCB0aGUgcHJvdmlk
ZWQgTW9yZUNvbnRyYWN0cy4uLgogICAgKiBjb21iaW5lZCB3aXRoIHRoZSBDb250cmFjdHMuLi4g
dGhhdCB3ZXJlIGFscmVhZHkgaW5jbHVkZWQgaW4gdGhlIGluc3RhbmNlCiAgICAqIG9uIHdoaWNo
IHRoZSBtZXRob2Qgd2FzIGNhbGxlZC4gQ29udHJhY3RzLi4uIGNhbm5vdCBiZSByZW1vdmVkIG9y
IHJlcGxhY2VkCi0gICAqIG9uY2UgYWRkZWQgdG8gYW4gRXhjZXB0aW9uU2FmZXR5VGVzdGVyIGlu
c3RhbmNlLiBBIGZyZXNoIG9iamVjdCBtdXN0IGJlCi0gICAqIGNyZWF0ZWQgaW4gb3JkZXIgdG8g
Z2V0IGFuIGVtcHR5IENvbnRyYWN0cy4uLiBsaXN0LgorICAgKiBvbmNlIGFkZGVkIHRvIGFuIEV4
Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyIGluc3RhbmNlLiBBIGZyZXNoIG9iamVjdCBtdXN0Cisg
ICAqIGJlIGNyZWF0ZWQgaW4gb3JkZXIgdG8gZ2V0IGFuIGVtcHR5IENvbnRyYWN0cy4uLiBsaXN0
LgogICAgKgogICAgKiBJbiBhZGRpdGlvbiB0byBwYXNzaW5nIGluIGN1c3RvbSBjb250cmFjdCBh
c3NlcnRpb24gY2FsbGJhY2tzLCB0aGlzIG1ldGhvZAogICAgKiBhY2NlcHRzIGB0ZXN0aW5nOjpz
dHJvbmdfZ3VhcmFudGVlYCBhcyBhbiBhcmd1bWVudCB3aGljaCBjaGVja3MgVCBpbnN0YW5jZXMK
QEAgLTk5MSw4ICsxMDEzLDggQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAgICog
cHJvcGVybHkgcm9sbGVkIGJhY2suCiAgICAqLwogICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gTW9y
ZUNvbnRyYWN0cz4KLSAgRXhjZXB0aW9uU2FmZXR5VGVzdGVyPEZhY3RvcnksIE9wZXJhdGlvbiwg
Q29udHJhY3RzLi4uLAotICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6ZGVjYXlfdDxNb3Jl
Q29udHJhY3RzPi4uLj4KKyAgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXI8RmFjdG9yeSwgT3Bl
cmF0aW9uLCBDb250cmFjdHMuLi4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
OmRlY2F5X3Q8TW9yZUNvbnRyYWN0cz4uLi4+CiAgIFdpdGhDb250cmFjdHMoY29uc3QgTW9yZUNv
bnRyYWN0cyYuLi4gbW9yZV9jb250cmFjdHMpIGNvbnN0IHsKICAgICByZXR1cm4gewogICAgICAg
ICBmYWN0b3J5Xywgb3BlcmF0aW9uXywKQEAgLTEwMzksNDggKzEwNjEsMjcgQEAgY2xhc3MgRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAgICAgIHR5cGVuYW1lIExhenlPcGVyYXRpb24gPSBPcGVy
YXRpb24sCiAgICAgICB0eXBlbmFtZSA9IEVuYWJsZUlmVGVzdGFibGU8c2l6ZW9mLi4uKENvbnRy
YWN0cyksIEZhY3RvcnksIExhenlPcGVyYXRpb24+PgogICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1
bHQgVGVzdCgpIGNvbnN0IHsKLSAgICByZXR1cm4gVGVzdEltcGwob3BlcmF0aW9uXywgYWJzbDo6
aW5kZXhfc2VxdWVuY2VfZm9yPENvbnRyYWN0cy4uLj4oKSk7CisgICAgcmV0dXJuIFRlc3Qob3Bl
cmF0aW9uXyk7CiAgIH0KIAogIHByaXZhdGU6CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5h
bWUsIHR5cGVuYW1lLi4uPgotICBmcmllbmQgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyOwor
ICBmcmllbmQgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXI7CiAKLSAgZnJpZW5kIEV4
Y2VwdGlvblNhZmV0eVRlc3Rlcjw+IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIo
KTsKKyAgZnJpZW5kIEV4Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyPD4gdGVzdGluZzo6TWFrZUV4
Y2VwdGlvblNhZmV0eVRlc3RlcigpOwogCi0gIEV4Y2VwdGlvblNhZmV0eVRlc3RlcigpIHt9Cisg
IEV4Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyKCkge30KIAotICBFeGNlcHRpb25TYWZldHlUZXN0
ZXIoY29uc3QgRmFjdG9yeSYgZiwgY29uc3QgT3BlcmF0aW9uJiBvLAotICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp0dXBsZTxDb250cmFjdHMuLi4+JiBpKQorICBFeGNlcHRpb25T
YWZldHlUZXN0QnVpbGRlcihjb25zdCBGYWN0b3J5JiBmLCBjb25zdCBPcGVyYXRpb24mIG8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dHVwbGU8Q29udHJhY3RzLi4u
PiYgaSkKICAgICAgIDogZmFjdG9yeV8oZiksIG9wZXJhdGlvbl8obyksIGNvbnRyYWN0c18oaSkg
e30KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0ZWRPcGVyYXRpb24sIHNpemVfdC4uLiBJ
bmRpY2VzPgotICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgVGVzdEltcGwoY29uc3QgU2VsZWN0
ZWRPcGVyYXRpb24mIHNlbGVjdGVkX29wZXJhdGlvbiwKKyAgdGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IFRlc3RJbXBsKFNlbGVjdGVkT3BlcmF0aW9uIHNlbGVjdGVkX29wZXJhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OmluZGV4X3NlcXVlbmNlPEluZGlj
ZXMuLi4+KSBjb25zdCB7Ci0gICAgLy8gU3RhcnRpbmcgZnJvbSAwIGFuZCBjb3VudGluZyB1cHdh
cmRzIHVudGlsIG9uZSBvZiB0aGUgZXhpdCBjb25kaXRpb25zIGlzCi0gICAgLy8gaGl0Li4uCi0g
ICAgZm9yIChpbnQgY291bnQgPSAwOzsgKytjb3VudCkgewotICAgICAgZXhjZXB0aW9uc19pbnRl
cm5hbDo6Q29uc3RydWN0b3JUcmFja2VyIGN0KGNvdW50KTsKLQotICAgICAgLy8gUnVuIHRoZSBm
dWxsIGV4Y2VwdGlvbiBzYWZldHkgdGVzdCBhbGdvcml0aG0gZm9yIHRoZSBjdXJyZW50IGNvdW50
ZG93bgotICAgICAgYXV0byByZWR1Y2VkX3JlcyA9Ci0gICAgICAgICAgVGVzdEFsbENvbnRyYWN0
c0F0Q291bnRkb3duKGZhY3RvcnlfLCBzZWxlY3RlZF9vcGVyYXRpb24sIGNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmdldDxJbmRpY2VzPihjb250cmFj
dHNfKS4uLik7Ci0gICAgICAvLyBJZiB0aGVyZSBpcyBubyB2YWx1ZSBpbiB0aGUgb3B0aW9uYWws
IG5vIGNvbnRyYWN0cyB3ZXJlIHJ1biBiZWNhdXNlIG5vCi0gICAgICAvLyBleGNlcHRpb24gd2Fz
IHRocm93bi4gVGhpcyBtZWFucyB0aGF0IHRoZSB0ZXN0IGlzIGNvbXBsZXRlIGFuZCB0aGUgbG9v
cAotICAgICAgLy8gY2FuIGV4aXQgc3VjY2Vzc2Z1bGx5LgotICAgICAgaWYgKCFyZWR1Y2VkX3Jl
cy5oYXNfdmFsdWUoKSkgewotICAgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vz
cygpOwotICAgICAgfQotICAgICAgLy8gSWYgdGhlIG9wdGlvbmFsIGlzIG5vdCBlbXB0eSBhbmQg
dGhlIHZhbHVlIGlzIGZhbHN5LCBhbiBjb250cmFjdCBjaGVjawotICAgICAgLy8gZmFpbGVkIHNv
IHRoZSB0ZXN0IG11c3QgZXhpdCB0byBwcm9wZWdhdGUgdGhlIGZhaWx1cmUuCi0gICAgICBpZiAo
IXJlZHVjZWRfcmVzLnZhbHVlKCkpIHsKLSAgICAgICAgcmV0dXJuIHJlZHVjZWRfcmVzLnZhbHVl
KCk7Ci0gICAgICB9Ci0gICAgICAvLyBJZiB0aGUgb3B0aW9uYWwgaXMgbm90IGVtcHR5IGFuZCB0
aGUgdmFsdWUgaXMgbm90IGZhbHN5LCBpdCBtZWFucwotICAgICAgLy8gZXhjZXB0aW9ucyB3ZXJl
IHRocm93biBidXQgdGhlIGNvbnRyYWN0cyBwYXNzZWQgc28gdGhlIHRlc3QgbXVzdAotICAgICAg
Ly8gY29udGludWUgdG8gcnVuLgotICAgIH0KKyAgICByZXR1cm4gRXhjZXB0aW9uU2FmZXR5VGVz
dDxGYWN0b3J5RWxlbWVudFR5cGU8RmFjdG9yeT4+KAorICAgICAgICAgICAgICAgZmFjdG9yeV8s
IHNlbGVjdGVkX29wZXJhdGlvbiwgc3RkOjpnZXQ8SW5kaWNlcz4oY29udHJhY3RzXykuLi4pCisg
ICAgICAgIC5UZXN0KCk7CiAgIH0KIAogICBGYWN0b3J5IGZhY3RvcnlfOwpAQCAtMTA5MCwyMCAr
MTA5MSw2IEBAIGNsYXNzIEV4Y2VwdGlvblNhZmV0eVRlc3RlciB7CiAKIH0gIC8vIG5hbWVzcGFj
ZSBleGNlcHRpb25zX2ludGVybmFsCiAKLS8qCi0gKiBDb25zdHJ1Y3RzIGFuIGVtcHR5IEV4Y2Vw
dGlvblNhZmV0eVRlc3Rlci4gQWxsIEV4Y2VwdGlvblNhZmV0eVRlc3RlcgotICogb2JqZWN0cyBh
cmUgaW1tdXRhYmxlIGFuZCBhbGwgV2l0aFt0aGluZ10gbXV0YXRpb24gbWV0aG9kcyByZXR1cm4g
bmV3Ci0gKiBpbnN0YW5jZXMgb2YgRXhjZXB0aW9uU2FmZXR5VGVzdGVyLgotICoKLSAqIEluIG9y
ZGVyIHRvIHRlc3QgYSBUIGZvciBleGNlcHRpb24gc2FmZXR5LCBhIGZhY3RvcnkgZm9yIHRoYXQg
VCwgYSB0ZXN0YWJsZQotICogb3BlcmF0aW9uLCBhbmQgYXQgbGVhc3Qgb25lIGNvbnRyYWN0IGNh
bGxiYWNrIHJldHVybmluZyBhbiBhc3NlcnRpb24KLSAqIHJlc3VsdCBtdXN0IGJlIGFwcGxpZWQg
dXNpbmcgdGhlIHJlc3BlY3RpdmUgbWV0aG9kcy4KLSAqLwotaW5saW5lIGV4Y2VwdGlvbnNfaW50
ZXJuYWw6OkV4Y2VwdGlvblNhZmV0eVRlc3Rlcjw+Ci1NYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVy
KCkgewotICByZXR1cm4ge307Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKICNlbmRp
ZiAgLy8gQUJTTF9CQVNFX0lOVEVSTkFMX0VYQ0VQVElPTl9TQUZFVFlfVEVTVElOR19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fdGVzdGluZy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9leGNlcHRpb25fdGVzdGluZy5oCmluZGV4IDBjZjc5MThlNGM2Li4wMWI1
NDY1NTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fdGVzdGlu
Zy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3Rlc3RpbmcuaApAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9oaWRlX3B0ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9oaWRlX3B0ci5oCmlu
ZGV4IDQ1Y2Y0Mzg5MTJjLi5jZjhmNDA4MDI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC9oaWRlX3B0ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaGlkZV9wdHIuaApAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9pZGVudGl0eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9pZGVudGl0eS5o
CmluZGV4IGExYTVkNzBhODRkLi4wODY0NDdjNjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9pZGVudGl0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaWRlbnRpdHkuaApA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9pbmxpbmVfdmFyaWFibGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
aW5saW5lX3ZhcmlhYmxlLmgKaW5kZXggZjdiYjhjNTY1MjUuLjEzMGQ4YzI0NzZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2lubGluZV92YXJpYWJsZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxlLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaW5saW5lX3Zh
cmlhYmxlX3Rlc3RpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxlX3Rl
c3RpbmcuaAppbmRleCBhMGRkMmJiMjhhNC4uMTVkYzQ4MWUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxlX3Rlc3RpbmcuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2ludGVybmFsL2lubGluZV92YXJpYWJsZV90ZXN0aW5nLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaW52
b2tlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2ludm9rZS5oCmluZGV4IDhjM2Y0ZjYwNjM3Li40
NGYxMzMwMmY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9pbnZva2UuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL2ludm9rZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5o
IgorCiAvLyBUaGUgZm9sbG93aW5nIGNvZGUgaXMgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0
YWlsLiAgU2VlIHRoZSBjb21tZW50IGF0IHRoZQogLy8gdG9wIG9mIHRoaXMgZmlsZSBmb3IgdGhl
IEFQSSBkb2N1bWVudGF0aW9uLgogCkBAIC02NywxNSArNjksMTEgQEAgc3RydWN0IE1lbUZ1bkFu
ZFJlZiA6IFN0cmlwcGVkQWNjZXB0PE1lbUZ1bkFuZFJlZj4gewogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUuLi4gQXJncz4KICAgc3RydWN0IEFjY2VwdEltcGwgOiBzdGQ6OmZhbHNlX3R5cGUge307CiAK
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEMsIHR5cGVuYW1lLi4uIFBhcmFtcywg
dHlwZW5hbWUgT2JqLAotICAgICAgICAgICAgdHlwZW5hbWUuLi4gQXJncz4KLSAgc3RydWN0IEFj
Y2VwdEltcGw8UiAoQzo6KikoUGFyYW1zLi4uKSwgT2JqLCBBcmdzLi4uPgotICAgICAgOiBzdGQ6
OmlzX2Jhc2Vfb2Y8QywgT2JqPiB7fTsKLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5h
bWUgQywgdHlwZW5hbWUuLi4gUGFyYW1zLCB0eXBlbmFtZSBPYmosCi0gICAgICAgICAgICB0eXBl
bmFtZS4uLiBBcmdzPgotICBzdHJ1Y3QgQWNjZXB0SW1wbDxSIChDOjoqKShQYXJhbXMuLi4pIGNv
bnN0LCBPYmosIEFyZ3MuLi4+Ci0gICAgICA6IHN0ZDo6aXNfYmFzZV9vZjxDLCBPYmo+IHt9Owor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWVtRnVuVHlwZSwgdHlwZW5hbWUgQywgdHlwZW5hbWUgT2Jq
LCB0eXBlbmFtZS4uLiBBcmdzPgorICBzdHJ1Y3QgQWNjZXB0SW1wbDxNZW1GdW5UeXBlIEM6Oios
IE9iaiwgQXJncy4uLj4KKyAgICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBzdGQ6
OmlzX2Jhc2Vfb2Y8QywgT2JqPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6aXNfZnVuY3Rpb248TWVtRnVuVHlwZT46OnZhbHVlPiB7Cisg
IH07CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1lbUZ1biwgdHlwZW5hbWUgT2JqLCB0eXBlbmFt
ZS4uLiBBcmdzPgogICBzdGF0aWMgZGVjbHR5cGUoKHN0ZDo6ZGVjbHZhbDxPYmo+KCkuKgpAQCAt
OTIsMTUgKzkwLDExIEBAIHN0cnVjdCBNZW1GdW5BbmRQdHIgOiBTdHJpcHBlZEFjY2VwdDxNZW1G
dW5BbmRQdHI+IHsKICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiAgIHN0cnVjdCBBY2Nl
cHRJbXBsIDogc3RkOjpmYWxzZV90eXBlIHt9OwogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0
eXBlbmFtZSBDLCB0eXBlbmFtZS4uLiBQYXJhbXMsIHR5cGVuYW1lIFB0ciwKLSAgICAgICAgICAg
IHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIHN0cnVjdCBBY2NlcHRJbXBsPFIgKEM6OiopKFBhcmFtcy4u
LiksIFB0ciwgQXJncy4uLj4KLSAgICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAh
c3RkOjppc19iYXNlX29mPEMsIFB0cj46OnZhbHVlPiB7fTsKLQotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgUiwgdHlwZW5hbWUgQywgdHlwZW5hbWUuLi4gUGFyYW1zLCB0eXBlbmFtZSBQdHIsCi0gICAg
ICAgICAgICB0eXBlbmFtZS4uLiBBcmdzPgotICBzdHJ1Y3QgQWNjZXB0SW1wbDxSIChDOjoqKShQ
YXJhbXMuLi4pIGNvbnN0LCBQdHIsIEFyZ3MuLi4+Ci0gICAgICA6IHN0ZDo6aW50ZWdyYWxfY29u
c3RhbnQ8Ym9vbCwgIXN0ZDo6aXNfYmFzZV9vZjxDLCBQdHI+Ojp2YWx1ZT4ge307CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBNZW1GdW5UeXBlLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQdHIsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgIHN0cnVjdCBBY2NlcHRJbXBsPE1lbUZ1blR5cGUgQzo6KiwgUHRyLCBB
cmdzLi4uPgorICAgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsICFzdGQ6OmlzX2Jh
c2Vfb2Y8QywgUHRyPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWJzbDo6aXNfZnVuY3Rpb248TWVtRnVuVHlwZT46OnZhbHVlPiB7CisgIH07CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1lbUZ1biwgdHlwZW5hbWUgUHRyLCB0eXBlbmFtZS4uLiBB
cmdzPgogICBzdGF0aWMgZGVjbHR5cGUoKCgqc3RkOjpkZWNsdmFsPFB0cj4oKSkuKgpAQCAtMTE5
LDcgKzExMyw5IEBAIHN0cnVjdCBEYXRhTWVtQW5kUmVmIDogU3RyaXBwZWRBY2NlcHQ8RGF0YU1l
bUFuZFJlZj4gewogICBzdHJ1Y3QgQWNjZXB0SW1wbCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQywgdHlwZW5hbWUgT2JqPgotICBzdHJ1
Y3QgQWNjZXB0SW1wbDxSIEM6OiosIE9iaj4gOiBzdGQ6OmlzX2Jhc2Vfb2Y8QywgT2JqPiB7fTsK
KyAgc3RydWN0IEFjY2VwdEltcGw8UiBDOjoqLCBPYmo+CisgICAgICA6IHN0ZDo6aW50ZWdyYWxf
Y29uc3RhbnQ8Ym9vbCwgc3RkOjppc19iYXNlX29mPEMsIE9iaj46OnZhbHVlICYmCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFhYnNsOjppc19mdW5jdGlvbjxSPjo6
dmFsdWU+IHt9OwogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBEYXRhTWVtLCB0eXBlbmFtZSBSZWY+
CiAgIHN0YXRpYyBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8UmVmPigpLipzdGQ6OmRlY2x2YWw8RGF0
YU1lbT4oKSkgSW52b2tlKApAQCAtMTM2LDcgKzEzMiw4IEBAIHN0cnVjdCBEYXRhTWVtQW5kUHRy
IDogU3RyaXBwZWRBY2NlcHQ8RGF0YU1lbUFuZFB0cj4gewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQdHI+CiAgIHN0cnVjdCBBY2NlcHRJbXBsPFIgQzo6
KiwgUHRyPgotICAgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsICFzdGQ6OmlzX2Jh
c2Vfb2Y8QywgUHRyPjo6dmFsdWU+IHt9OworICAgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50
PGJvb2wsICFzdGQ6OmlzX2Jhc2Vfb2Y8QywgUHRyPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIWFic2w6OmlzX2Z1bmN0aW9uPFI+Ojp2YWx1ZT4g
e307CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIERhdGFNZW0sIHR5cGVuYW1lIFB0cj4KICAgc3Rh
dGljIGRlY2x0eXBlKCgqc3RkOjpkZWNsdmFsPFB0cj4oKSkuKnN0ZDo6ZGVjbHZhbDxEYXRhTWVt
PigpKSBJbnZva2UoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9h
bGxvYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmNjCmluZGV4IDE1
OWY5NDVmNWVkLi5jZDUyNmIzNjkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9s
b3dfbGV2ZWxfYWxsb2MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxs
b2MuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIwMywx
OSArMjAzLDE5IEBAIHN0cnVjdCBMb3dMZXZlbEFsbG9jOjpBcmVuYSB7CiAKICAgYmFzZV9pbnRl
cm5hbDo6U3BpbkxvY2sgbXU7CiAgIC8vIEhlYWQgb2YgZnJlZSBsaXN0LCBzb3J0ZWQgYnkgYWRk
cmVzcwotICBBbGxvY0xpc3QgZnJlZWxpc3QgR1VBUkRFRF9CWShtdSk7CisgIEFsbG9jTGlzdCBm
cmVlbGlzdCBBQlNMX0dVQVJERURfQlkobXUpOwogICAvLyBDb3VudCBvZiBhbGxvY2F0ZWQgYmxv
Y2tzCi0gIGludDMyX3QgYWxsb2NhdGlvbl9jb3VudCBHVUFSREVEX0JZKG11KTsKKyAgaW50MzJf
dCBhbGxvY2F0aW9uX2NvdW50IEFCU0xfR1VBUkRFRF9CWShtdSk7CiAgIC8vIGZsYWdzIHBhc3Nl
ZCB0byBOZXdBcmVuYQogICBjb25zdCB1aW50MzJfdCBmbGFnczsKLSAgLy8gUmVzdWx0IG9mIGdl
dHBhZ2VzaXplKCkKKyAgLy8gUmVzdWx0IG9mIHN5c2NvbmYoX1NDX1BBR0VTSVpFKQogICBjb25z
dCBzaXplX3QgcGFnZXNpemU7CiAgIC8vIExvd2VzdCBwb3dlciBvZiB0d28gPj0gbWF4KDE2LCBz
aXplb2YoQWxsb2NMaXN0KSkKICAgY29uc3Qgc2l6ZV90IHJvdW5kdXA7CiAgIC8vIFNtYWxsZXN0
IGFsbG9jYXRpb24gYmxvY2sgc2l6ZQogICBjb25zdCBzaXplX3QgbWluX3NpemU7CiAgIC8vIFBS
Tkcgc3RhdGUKLSAgdWludDMyX3QgcmFuZG9tIEdVQVJERURfQlkobXUpOworICB1aW50MzJfdCBy
YW5kb20gQUJTTF9HVUFSREVEX0JZKG11KTsKIH07CiAKIG5hbWVzcGFjZSB7CkBAIC0yNzUsMTAg
KzI3NSwxMCBAQCBzdGF0aWMgY29uc3QgdWludHB0cl90IGtNYWdpY0FsbG9jYXRlZCA9IDB4NGM4
MzNlOTVVOwogc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBrTWFnaWNVbmFsbG9jYXRlZCA9IH5rTWFn
aWNBbGxvY2F0ZWQ7CiAKIG5hbWVzcGFjZSB7Ci1jbGFzcyBTQ09QRURfTE9DS0FCTEUgQXJlbmFM
b2NrIHsKK2NsYXNzIEFCU0xfU0NPUEVEX0xPQ0tBQkxFIEFyZW5hTG9jayB7CiAgcHVibGljOgog
ICBleHBsaWNpdCBBcmVuYUxvY2soTG93TGV2ZWxBbGxvYzo6QXJlbmEgKmFyZW5hKQotICAgICAg
RVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oYXJlbmEtPm11KQorICAgICAgQUJTTF9FWENMVVNJVkVf
TE9DS19GVU5DVElPTihhcmVuYS0+bXUpCiAgICAgICA6IGFyZW5hXyhhcmVuYSkgewogI2lmbmRl
ZiBBQlNMX0xPV19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HCiAgICAgaWYg
KChhcmVuYS0+ZmxhZ3MgJiBMb3dMZXZlbEFsbG9jOjprQXN5bmNTaWduYWxTYWZlKSAhPSAwKSB7
CkBAIC0yOTAsMTEgKzI5MCwxNCBAQCBjbGFzcyBTQ09QRURfTE9DS0FCTEUgQXJlbmFMb2NrIHsK
ICAgICBhcmVuYV8tPm11LkxvY2soKTsKICAgfQogICB+QXJlbmFMb2NrKCkgeyBBQlNMX1JBV19D
SEVDSyhsZWZ0XywgImhhdmVuJ3QgbGVmdCBBcmVuYSByZWdpb24iKTsgfQotICB2b2lkIExlYXZl
KCkgVU5MT0NLX0ZVTkNUSU9OKCkgeworICB2b2lkIExlYXZlKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJ
T04oKSB7CiAgICAgYXJlbmFfLT5tdS5VbmxvY2soKTsKICNpZm5kZWYgQUJTTF9MT1dfTEVWRUxf
QUxMT0NfQVNZTkNfU0lHTkFMX1NBRkVfTUlTU0lORwogICAgIGlmIChtYXNrX3ZhbGlkXykgewot
ICAgICAgcHRocmVhZF9zaWdtYXNrKFNJR19TRVRNQVNLLCAmbWFza18sIG51bGxwdHIpOworICAg
ICAgY29uc3QgaW50IGVyciA9IHB0aHJlYWRfc2lnbWFzayhTSUdfU0VUTUFTSywgJm1hc2tfLCBu
dWxscHRyKTsKKyAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBBQlNMX1JBV19MT0coRkFU
QUwsICJwdGhyZWFkX3NpZ21hc2sgZmFpbGVkOiAlZCIsIGVycik7CisgICAgICB9CiAgICAgfQog
I2VuZGlmCiAgICAgbGVmdF8gPSB0cnVlOwpAQCAtMzI0LDggKzMyNywxMCBAQCBzaXplX3QgR2V0
UGFnZVNpemUoKSB7CiAgIFNZU1RFTV9JTkZPIHN5c3RlbV9pbmZvOwogICBHZXRTeXN0ZW1JbmZv
KCZzeXN0ZW1faW5mbyk7CiAgIHJldHVybiBzdGQ6Om1heChzeXN0ZW1faW5mby5kd1BhZ2VTaXpl
LCBzeXN0ZW1faW5mby5kd0FsbG9jYXRpb25HcmFudWxhcml0eSk7Ci0jZWxzZQorI2VsaWYgZGVm
aW5lZChfX3dhc21fXykgfHwgZGVmaW5lZChfX2FzbWpzX18pCiAgIHJldHVybiBnZXRwYWdlc2l6
ZSgpOworI2Vsc2UKKyAgcmV0dXJuIHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaAppbmRleCBmYmE5NDY2YTc1Ny4uYzk4
Y2RiMzAyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9j
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaApAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjUsNiArMjUsNyBAQAogLy8gSVdZ
VSBwcmFnbWE6IHByaXZhdGUsIGluY2x1ZGUgImJhc2UvbG93X2xldmVsX2FsbG9jLmgiCiAKICNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KKwogI2luY2x1ZGUgPGNzdGRpbnQ+CiAKICNpbmNsdWRlICJh
YnNsL2Jhc2UvYXR0cmlidXRlcy5oIgpAQCAtMTE5LDQgKzEyMCw1IEBAIGNsYXNzIExvd0xldmVs
QWxsb2MgewogCiB9ICAvLyBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNl
IGFic2wKKwogI2VuZGlmICAvLyBBQlNMX0JBU0VfSU5URVJOQUxfTE9XX0xFVkVMX0FMTE9DX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvY190ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2NfdGVzdC5jYwppbmRleCBjZjJi
MzYzMjk5Zi4uMzRhMDgwY2IxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93
X2xldmVsX2FsbG9jX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxf
YWxsb2NfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtMTM3LDYgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIFRlc3QoYm9vbCB1c2VfbmV3X2FyZW5hLCBi
b29sIGNhbGxfbWFsbG9jX2hvb2ssIGludCBuKSB7CiAgICAgVEVTVF9BU1NFUlQoTG93TGV2ZWxB
bGxvYzo6RGVsZXRlQXJlbmEoYXJlbmEpKTsKICAgfQogfQorCiAvLyBMb3dMZXZlbEFsbG9jIGlz
IGRlc2lnbmVkIHRvIGJlIHNhZmUgdG8gY2FsbCBiZWZvcmUgbWFpbigpLgogc3RhdGljIHN0cnVj
dCBCZWZvcmVNYWluIHsKICAgQmVmb3JlTWFpbigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvbG93X2xldmVsX3NjaGVkdWxpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93
X2xldmVsX3NjaGVkdWxpbmcuaAppbmRleCBlNzE2ZjJiNDlmYS4uMGZjYzhkM2JlZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX3NjaGVkdWxpbmcuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9zY2hlZHVsaW5nLmgKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgU2NoZWR1
bGluZ0d1YXJkIHsKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBFbmQgb2YgcHVibGljIGlu
dGVyZmFjZXMuCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBpbmxpbmUgYm9vbCBTY2hlZHVs
aW5nR3VhcmQ6OlJlc2NoZWR1bGluZ0lzQWxsb3dlZCgpIHsKICAgcmV0dXJuIGZhbHNlOwogfQpA
QCAtOTgsNyArOTksNyBAQCBpbmxpbmUgdm9pZCBTY2hlZHVsaW5nR3VhcmQ6OkVuYWJsZVJlc2No
ZWR1bGluZyhib29sIC8qIGRpc2FibGVfcmVzdWx0ICovKSB7CiAgIHJldHVybjsKIH0KIAotCiB9
ICAvLyBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKKwogI2Vu
ZGlmICAvLyBBQlNMX0JBU0VfSU5URVJOQUxfTE9XX0xFVkVMX1NDSEVEVUxJTkdfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcGVyX3RocmVhZF90bHMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvcGVyX3RocmVhZF90bHMuaAppbmRleCAyNDI4YmRjMTIzOC4uY2Y1ZTk3YTA0NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcGVyX3RocmVhZF90bHMuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL3Blcl90aHJlYWRfdGxzLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE2LDEzICsxNiwxNyBAQAogI2RlZmluZSBBQlNMX0JB
U0VfSU5URVJOQUxfUEVSX1RIUkVBRF9UTFNfSF8KIAogLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyB0
d28gbWFjcm9zOgorLy8KIC8vIElmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aHJlYWQtbG9jYWwg
c3RvcmFnZToKLS8vICAgQUJTTF9QRVJfVEhSRUFEX1RMU19LRVlXT1JEIGlzIHRoZSBDIGtleXdv
cmQgbmVlZGVkIHRvIGRlY2xhcmUgYQotLy8gICB0aHJlYWQtbG9jYWwgdmFyaWFibGUgQUJTTF9Q
RVJfVEhSRUFEX1RMUyBpcyAxCisvLworLy8gKiBBQlNMX1BFUl9USFJFQURfVExTX0tFWVdPUkQg
aXMgdGhlIEMga2V5d29yZCBuZWVkZWQgdG8gZGVjbGFyZSBhCisvLyAgIHRocmVhZC1sb2NhbCB2
YXJpYWJsZQorLy8gKiBBQlNMX1BFUl9USFJFQURfVExTIGlzIDEKIC8vCiAvLyBPdGhlcndpc2U6
Ci0vLyAgIEFCU0xfUEVSX1RIUkVBRF9UTFNfS0VZV09SRCBpcyBlbXB0eQotLy8gICBBQlNMX1BF
Ul9USFJFQURfVExTIGlzIDAKKy8vCisvLyAqIEFCU0xfUEVSX1RIUkVBRF9UTFNfS0VZV09SRCBp
cyBlbXB0eQorLy8gKiBBQlNMX1BFUl9USFJFQURfVExTIGlzIDAKIC8vCiAvLyBNaWNyb3NvZnQg
QyBzdXBwb3J0cyB0aHJlYWQtbG9jYWwgc3RvcmFnZS4KIC8vIEdDQyBzdXBwb3J0cyBpdCBpZiB0
aGUgYXBwcm9wcmlhdGUgdmVyc2lvbiBvZiBnbGliYyBpcyBhdmFpbGFibGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3ByZXR0eV9mdW5jdGlvbi5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC9wcmV0dHlfZnVuY3Rpb24uaAppbmRleCAwMWIwNTQ3YmQwOC4uMzVkNTE2NzZkYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcHJldHR5X2Z1bmN0aW9uLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9wcmV0dHlfZnVuY3Rpb24uaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9yYXdf
bG9nZ2luZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuY2MKaW5kZXggZDk0
ODVhNjZjYzYuLjg3OGZlNmM2YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Jh
d19sb2dnaW5nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM2LDcgKzM2LDggQEAK
IC8vIFRoaXMgcHJlcHJvY2Vzc29yIHRva2VuIGlzIGFsc28gZGVmaW5lZCBpbiByYXdfaW8uY2Mu
ICBJZiB5b3UgbmVlZCB0byBjb3B5CiAvLyB0aGlzLCBjb25zaWRlciBtb3ZpbmcgYm90aCB0byBj
b25maWcuaCBpbnN0ZWFkLgogI2lmIGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgXAotICAgIGRlZmluZWQoX19GdWNoc2lh
X18pIHx8IGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCisgICAgZGVmaW5lZChfX0Z1Y2hzaWFf
XykgfHwgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgXAorICAgIGRlZmluZWQoX19FTVND
UklQVEVOX18pCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2lu
Zy5oCmluZGV4IDc5YTdiYjliMmY3Li42YTRjMDkzNjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xv
Z2dpbmcuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzgs
NiArMzgsNyBAQAogLy8gICBBQlNMX1JBV19MT0coRVJST1IsICJGYWlsZWQgZm9vIHdpdGggJWk6
ICVzIiwgc3RhdHVzLCBlcnJvcik7CiAvLyBUaGlzIHdpbGwgcHJpbnQgYW4gYWxtb3N0IHN0YW5k
YXJkIGxvZyBsaW5lIGxpa2UgdGhpcyB0byBzdGRlcnIgb25seToKIC8vICAgRTA4MjEgMjExMzE3
IGZpbGUuY2M6MTIzXSBSQVc6IEZhaWxlZCBmb28gd2l0aCAyMjogYmFkX2ZpbGUKKwogI2RlZmlu
ZSBBQlNMX1JBV19MT0coc2V2ZXJpdHksIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY29uc3RleHBy
IGNvbnN0IGNoYXIqIGFic2xfcmF3X2xvZ2dpbmdfaW50ZXJuYWxfYmFzZW5hbWUgPSAgICAgICAg
ICAgICAgICAgXApAQCAtNzksMTMgKzgwLDEzIEBACiAgICAgICAgIGFic2xfcmF3X2xvZ2dpbmdf
aW50ZXJuYWxfYmFzZW5hbWUsIF9fTElORV9fLCBtZXNzYWdlKTsgICAgICAgXAogICB9IHdoaWxl
ICgwKQogCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfQ0hFQ0soY29uZGl0aW9uLCBtZXNzYWdlKSAg
ICAgICAgICAgICAgIFwKLSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoIShjb25k
aXRpb24pKSkgeyAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfQ0hF
Q0soY29uZGl0aW9uLCBtZXNzYWdlKSAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCEoY29uZGl0aW9uKSkpIHsgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICBzdGQ6OnN0cmluZyBkZWF0aF9tZXNzYWdlID0gIkNoZWNrICIg
I2NvbmRpdGlvbiAiIGZhaWxlZDogIjsgXAogICAgICAgZGVhdGhfbWVzc2FnZSArPSBzdGQ6OnN0
cmluZyhtZXNzYWdlKTsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIEFCU0xfSU5URVJO
QUxfTE9HKEZBVEFMLCBkZWF0aF9tZXNzYWdlKTsgICAgICAgICAgICAgICAgXAotICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICBBQlNMX0lOVEVSTkFMX0xPRyhGQVRBTCwgZGVhdGhfbWVzc2FnZSk7ICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBBQlNMX1JB
V19MT0dHSU5HX0lOVEVSTkFMX0lORk8gOjphYnNsOjpMb2dTZXZlcml0eTo6a0luZm8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NoZWR1bGluZ19tb2RlLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2ludGVybmFsL3NjaGVkdWxpbmdfbW9kZS5oCmluZGV4IDFiNjQ5N2FkODc1Li5kNWI0YjdmZDU0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zY2hlZHVsaW5nX21vZGUuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3NjaGVkdWxpbmdfbW9kZS5oCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L3Njb3BlZF9zZXRfZW52LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zY29wZWRfc2V0X2Vudi5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2FjM2Y2OGRkZjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9zZXRfZW52LmNjCkBA
IC0wLDAgKzEsNzkgQEAKKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
CisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9zZXRfZW52LmgiCisKKyNpZmRl
ZiBfV0lOMzIKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGNzdGRs
aWI+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKworbmFt
ZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgeworCituYW1lc3BhY2Ugewor
CisjaWZkZWYgX1dJTjMyCitjb25zdCBpbnQga01heEVudlZhclZhbHVlU2l6ZSA9IDEwMjQ7Cisj
ZW5kaWYKKwordm9pZCBTZXRFbnZWYXIoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFs
dWUpIHsKKyNpZmRlZiBfV0lOMzIKKyAgU2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobmFtZSwgdmFs
dWUpOworI2Vsc2UKKyAgaWYgKHZhbHVlID09IG51bGxwdHIpIHsKKyAgICA6OnVuc2V0ZW52KG5h
bWUpOworICB9IGVsc2UgeworICAgIDo6c2V0ZW52KG5hbWUsIHZhbHVlLCAxKTsKKyAgfQorI2Vu
ZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZQorCitTY29wZWRTZXRFbnY6OlNjb3BlZFNldEVudihj
b25zdCBjaGFyKiB2YXJfbmFtZSwgY29uc3QgY2hhciogbmV3X3ZhbHVlKQorICAgIDogdmFyX25h
bWVfKHZhcl9uYW1lKSwgd2FzX3Vuc2V0XyhmYWxzZSkgeworI2lmZGVmIF9XSU4zMgorICBjaGFy
IGJ1ZltrTWF4RW52VmFyVmFsdWVTaXplXTsKKyAgYXV0byBnZXRfcmVzID0gR2V0RW52aXJvbm1l
bnRWYXJpYWJsZUEodmFyX25hbWVfLmNfc3RyKCksIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICBBQlNM
X0lOVEVSTkFMX0NIRUNLKGdldF9yZXMgPCBzaXplb2YoYnVmKSwgInZhbHVlIGV4Y2VlZHMgYnVm
ZmVyIHNpemUiKTsKKworICBpZiAoZ2V0X3JlcyA9PSAwKSB7CisgICAgd2FzX3Vuc2V0XyA9IChH
ZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5EKTsKKyAgfSBlbHNlIHsKKyAg
ICBvbGRfdmFsdWVfLmFzc2lnbihidWYsIGdldF9yZXMpOworICB9CisKKyAgU2V0RW52aXJvbm1l
bnRWYXJpYWJsZUEodmFyX25hbWVfLmNfc3RyKCksIG5ld192YWx1ZSk7CisjZWxzZQorICBjb25z
dCBjaGFyKiB2YWwgPSA6OmdldGVudih2YXJfbmFtZV8uY19zdHIoKSk7CisgIGlmICh2YWwgPT0g
bnVsbHB0cikgeworICAgIHdhc191bnNldF8gPSB0cnVlOworICB9IGVsc2UgeworICAgIG9sZF92
YWx1ZV8gPSB2YWw7CisgIH0KKyNlbmRpZgorCisgIFNldEVudlZhcih2YXJfbmFtZV8uY19zdHIo
KSwgbmV3X3ZhbHVlKTsKK30KKworU2NvcGVkU2V0RW52Ojp+U2NvcGVkU2V0RW52KCkgeworICBT
ZXRFbnZWYXIodmFyX25hbWVfLmNfc3RyKCksIHdhc191bnNldF8gPyBudWxscHRyIDogb2xkX3Zh
bHVlXy5jX3N0cigpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9z
ZXRfZW52LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9zZXRfZW52LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg1NWIyMmZkNDFmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zY29wZWRfc2V0X2Vudi5oCkBAIC0wLDAgKzEsNDEg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisKKyNp
Zm5kZWYgQUJTTF9CQVNFX0lOVEVSTkFMX1NDT1BFRF9TRVRfRU5WX0hfCisjZGVmaW5lIEFCU0xf
QkFTRV9JTlRFUk5BTF9TQ09QRURfU0VUX0VOVl9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorCitu
YW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7CisKK2NsYXNzIFNjb3Bl
ZFNldEVudiB7CisgcHVibGljOgorICBTY29wZWRTZXRFbnYoY29uc3QgY2hhciogdmFyX25hbWUs
IGNvbnN0IGNoYXIqIG5ld192YWx1ZSk7CisgIH5TY29wZWRTZXRFbnYoKTsKKworIHByaXZhdGU6
CisgIHN0ZDo6c3RyaW5nIHZhcl9uYW1lXzsKKyAgc3RkOjpzdHJpbmcgb2xkX3ZhbHVlXzsKKwor
ICAvLyBUcnVlIGlmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3YXMgaW5pdGlhbGx5IG5vdCBz
ZXQuCisgIGJvb2wgd2FzX3Vuc2V0XzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBiYXNlX2ludGVy
bmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQkFTRV9JTlRFUk5B
TF9TQ09QRURfU0VUX0VOVl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zY29w
ZWRfc2V0X2Vudl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zY29wZWRfc2V0X2Vudl90
ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41Y2JhZDI0NmM2
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVkX3NldF9lbnZf
dGVzdC5jYwpAQCAtMCwwICsxLDk5IEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2lmZGVmIF9XSU4zMgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgor
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwv
c2NvcGVkX3NldF9lbnYuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgYWJzbDo6YmFzZV9pbnRl
cm5hbDo6U2NvcGVkU2V0RW52OworCitzdGQ6OnN0cmluZyBHZXRFbnZWYXIoY29uc3QgY2hhciog
bmFtZSkgeworI2lmZGVmIF9XSU4zMgorICBjaGFyIGJ1ZlsxMDI0XTsKKyAgYXV0byBnZXRfcmVz
ID0gR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobmFtZSwgYnVmLCBzaXplb2YoYnVmKSk7CisgIGlm
IChnZXRfcmVzID49IHNpemVvZihidWYpKSB7CisgICAgcmV0dXJuICJUT09fQklHIjsKKyAgfQor
CisgIGlmIChnZXRfcmVzID09IDApIHsKKyAgICByZXR1cm4gIlVOU0VUIjsKKyAgfQorCisgIHJl
dHVybiBzdGQ6OnN0cmluZyhidWYsIGdldF9yZXMpOworI2Vsc2UKKyAgY29uc3QgY2hhciogdmFs
ID0gOjpnZXRlbnYobmFtZSk7CisgIGlmICh2YWwgPT0gbnVsbHB0cikgeworICAgIHJldHVybiAi
VU5TRVQiOworICB9CisKKyAgcmV0dXJuIHZhbDsKKyNlbmRpZgorfQorCitURVNUKFNjb3BlZFNl
dEVudlRlc3QsIFNldE5vbkV4aXN0aW5nVmFyVG9TdHJpbmcpIHsKKyAgRVhQRUNUX0VRKEdldEVu
dlZhcigiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiKSwgIlVOU0VUIik7CisKKyAgeworICAgIFNj
b3BlZFNldEVudiBzY29wZWRfc2V0KCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIsICJ2YWx1ZSIp
OworCisgICAgRVhQRUNUX0VRKEdldEVudlZhcigiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiKSwg
InZhbHVlIik7CisgIH0KKworICBFWFBFQ1RfRVEoR2V0RW52VmFyKCJTQ09QRURfU0VUX0VOVl9U
RVNUX1ZBUiIpLCAiVU5TRVQiKTsKK30KKworVEVTVChTY29wZWRTZXRFbnZUZXN0LCBTZXROb25F
eGlzdGluZ1ZhclRvTnVsbCkgeworICBFWFBFQ1RfRVEoR2V0RW52VmFyKCJTQ09QRURfU0VUX0VO
Vl9URVNUX1ZBUiIpLCAiVU5TRVQiKTsKKworICB7CisgICAgU2NvcGVkU2V0RW52IHNjb3BlZF9z
ZXQoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiwgbnVsbHB0cik7CisKKyAgICBFWFBFQ1RfRVEo
R2V0RW52VmFyKCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIpLCAiVU5TRVQiKTsKKyAgfQorCisg
IEVYUEVDVF9FUShHZXRFbnZWYXIoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiksICJVTlNFVCIp
OworfQorCitURVNUKFNjb3BlZFNldEVudlRlc3QsIFNldEV4aXN0aW5nVmFyVG9TdHJpbmcpIHsK
KyAgU2NvcGVkU2V0RW52IHNjb3BlZF9zZXQoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiwgInZh
bHVlIik7CisgIEVYUEVDVF9FUShHZXRFbnZWYXIoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiks
ICJ2YWx1ZSIpOworCisgIHsKKyAgICBTY29wZWRTZXRFbnYgc2NvcGVkX3NldCgiU0NPUEVEX1NF
VF9FTlZfVEVTVF9WQVIiLCAibmV3X3ZhbHVlIik7CisKKyAgICBFWFBFQ1RfRVEoR2V0RW52VmFy
KCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIpLCAibmV3X3ZhbHVlIik7CisgIH0KKworICBFWFBF
Q1RfRVEoR2V0RW52VmFyKCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIpLCAidmFsdWUiKTsKK30K
KworVEVTVChTY29wZWRTZXRFbnZUZXN0LCBTZXRFeGlzdGluZ1ZhclRvTnVsbCkgeworICBTY29w
ZWRTZXRFbnYgc2NvcGVkX3NldCgiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiLCAidmFsdWUiKTsK
KyAgRVhQRUNUX0VRKEdldEVudlZhcigiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiKSwgInZhbHVl
Iik7CisKKyAgeworICAgIFNjb3BlZFNldEVudiBzY29wZWRfc2V0KCJTQ09QRURfU0VUX0VOVl9U
RVNUX1ZBUiIsIG51bGxwdHIpOworCisgICAgRVhQRUNUX0VRKEdldEVudlZhcigiU0NPUEVEX1NF
VF9FTlZfVEVTVF9WQVIiKSwgIlVOU0VUIik7CisgIH0KKworICBFWFBFQ1RfRVEoR2V0RW52VmFy
KCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIpLCAidmFsdWUiKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9zcGlubG9jay5jYwppbmRleCAxYjk3ZWZiY2NjNS4uNzM1NDQzOGZiYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2suY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9zcGlubG9jay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtOTUsMTMgKzk1LDkgQEAgdm9pZCBTcGluTG9jazo6SW5pdExpbmtlcklu
aXRpYWxpemVkQW5kQ29vcGVyYXRpdmUoKSB7CiB9CiAKIC8vIE1vbml0b3IgdGhlIGxvY2sgdG8g
c2VlIGlmIGl0cyB2YWx1ZSBjaGFuZ2VzIHdpdGhpbiBzb21lIHRpbWUgcGVyaW9kCi0vLyAoYWRh
cHRpdmVfc3Bpbl9jb3VudCBsb29wIGl0ZXJhdGlvbnMpLiAgQSB0aW1lc3RhbXAgaW5kaWNhdGlu
ZwotLy8gd2hlbiB0aGUgdGhyZWFkIGluaXRpYWxseSBzdGFydGVkIHdhaXRpbmcgZm9yIHRoZSBs
b2NrIGlzIHBhc3NlZCBpbiB2aWEKLS8vIHRoZSBpbml0aWFsX3dhaXRfdGltZXN0YW1wIHZhbHVl
LiAgVGhlIHRvdGFsIHdhaXQgdGltZSBpbiBjeWNsZXMgZm9yIHRoZQotLy8gbG9jayBpcyByZXR1
cm5lZCBpbiB0aGUgd2FpdF9jeWNsZXMgcGFyYW1ldGVyLiAgVGhlIGxhc3QgdmFsdWUgcmVhZAot
Ly8gZnJvbSB0aGUgbG9jayBpcyByZXR1cm5lZCBmcm9tIHRoZSBtZXRob2QuCi11aW50MzJfdCBT
cGluTG9jazo6U3Bpbkxvb3AoaW50NjRfdCBpbml0aWFsX3dhaXRfdGltZXN0YW1wLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICp3YWl0X2N5Y2xlcykgeworLy8gKGFkYXB0
aXZlX3NwaW5fY291bnQgbG9vcCBpdGVyYXRpb25zKS4gVGhlIGxhc3QgdmFsdWUgcmVhZCBmcm9t
IHRoZSBsb2NrCisvLyBpcyByZXR1cm5lZCBmcm9tIHRoZSBtZXRob2QuCit1aW50MzJfdCBTcGlu
TG9jazo6U3Bpbkxvb3AoKSB7CiAgIC8vIFdlIGFyZSBhbHJlYWR5IGluIHRoZSBzbG93IHBhdGgg
b2YgU3BpbkxvY2ssIGluaXRpYWxpemUgdGhlCiAgIC8vIGFkYXB0aXZlX3NwaW5fY291bnQgaGVy
ZS4KICAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBhYnNsOjpvbmNlX2ZsYWcgaW5pdF9hZGFwdGl2
ZV9zcGluX2NvdW50OwpAQCAtMTE1LDIyICsxMTEsMjEgQEAgdWludDMyX3QgU3BpbkxvY2s6OlNw
aW5Mb29wKGludDY0X3QgaW5pdGlhbF93YWl0X3RpbWVzdGFtcCwKICAgZG8gewogICAgIGxvY2tf
dmFsdWUgPSBsb2Nrd29yZF8ubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKICAgfSB3
aGlsZSAoKGxvY2tfdmFsdWUgJiBrU3BpbkxvY2tIZWxkKSAhPSAwICYmIC0tYyA+IDApOwotICB1
aW50MzJfdCBzcGluX2xvb3Bfd2FpdF9jeWNsZXMgPQotICAgICAgRW5jb2RlV2FpdEN5Y2xlcyhp
bml0aWFsX3dhaXRfdGltZXN0YW1wLCBDeWNsZUNsb2NrOjpOb3coKSk7Ci0gICp3YWl0X2N5Y2xl
cyA9IHNwaW5fbG9vcF93YWl0X2N5Y2xlczsKLQotICByZXR1cm4gVHJ5TG9ja0ludGVybmFsKGxv
Y2tfdmFsdWUsIHNwaW5fbG9vcF93YWl0X2N5Y2xlcyk7CisgIHJldHVybiBsb2NrX3ZhbHVlOwog
fQogCiB2b2lkIFNwaW5Mb2NrOjpTbG93TG9jaygpIHsKKyAgdWludDMyX3QgbG9ja192YWx1ZSA9
IFNwaW5Mb29wKCk7CisgIGxvY2tfdmFsdWUgPSBUcnlMb2NrSW50ZXJuYWwobG9ja192YWx1ZSwg
MCk7CisgIGlmICgobG9ja192YWx1ZSAmIGtTcGluTG9ja0hlbGQpID09IDApIHsKKyAgICByZXR1
cm47CisgIH0KICAgLy8gVGhlIGxvY2sgd2FzIG5vdCBvYnRhaW5lZCBpbml0aWFsbHksIHNvIHRo
aXMgdGhyZWFkIG5lZWRzIHRvIHdhaXQgZm9yCiAgIC8vIGl0LiAgUmVjb3JkIHRoZSBjdXJyZW50
IHRpbWVzdGFtcCBpbiB0aGUgbG9jYWwgdmFyaWFibGUgd2FpdF9zdGFydF90aW1lCiAgIC8vIHNv
IHRoZSB0b3RhbCB3YWl0IHRpbWUgY2FuIGJlIHN0b3JlZCBpbiB0aGUgbG9ja3dvcmQgb25jZSB0
aGlzIHRocmVhZAogICAvLyBvYnRhaW5zIHRoZSBsb2NrLgogICBpbnQ2NF90IHdhaXRfc3RhcnRf
dGltZSA9IEN5Y2xlQ2xvY2s6Ok5vdygpOwotICB1aW50MzJfdCB3YWl0X2N5Y2xlczsKLSAgdWlu
dDMyX3QgbG9ja192YWx1ZSA9IFNwaW5Mb29wKHdhaXRfc3RhcnRfdGltZSwgJndhaXRfY3ljbGVz
KTsKLQorICB1aW50MzJfdCB3YWl0X2N5Y2xlcyA9IDA7CiAgIGludCBsb2NrX3dhaXRfY2FsbF9j
b3VudCA9IDA7CiAgIHdoaWxlICgobG9ja192YWx1ZSAmIGtTcGluTG9ja0hlbGQpICE9IDApIHsK
ICAgICAvLyBJZiB0aGUgbG9jayBpcyBjdXJyZW50bHkgaGVsZCwgYnV0IG5vdCBtYXJrZWQgYXMg
aGF2aW5nIGEgc2xlZXBlciwgbWFyawpAQCAtMTQxLDcgKzEzNiw3IEBAIHZvaWQgU3BpbkxvY2s6
OlNsb3dMb2NrKCkgewogICAgICAgLy8gb3duZXIgdG8gdGhpbmsgaXQgZXhwZXJpZW5jZWQgY29u
dGVudGlvbi4KICAgICAgIGlmIChsb2Nrd29yZF8uY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoCiAg
ICAgICAgICAgICAgIGxvY2tfdmFsdWUsIGxvY2tfdmFsdWUgfCBrU3BpbkxvY2tTbGVlcGVyLAot
ICAgICAgICAgICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKSkgeworICAgICAgICAgICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKSkgewogICAgICAgICAvLyBTdWNjZXNzZnVsbHkgdHJh
bnNpdGlvbmVkIHRvIGtTcGluTG9ja1NsZWVwZXIuICBQYXNzCiAgICAgICAgIC8vIGtTcGluTG9j
a1NsZWVwZXIgdG8gdGhlIFNwaW5Mb2NrV2FpdCByb3V0aW5lIHRvIHByb3Blcmx5IGluZGljYXRl
CiAgICAgICAgIC8vIHRoZSBsYXN0IGxvY2tfdmFsdWUgb2JzZXJ2ZWQuCkBAIC0xNzAsNyArMTY1
LDkgQEAgdm9pZCBTcGluTG9jazo6U2xvd0xvY2soKSB7CiAgICAgQUJTTF9UU0FOX01VVEVYX1BP
U1RfRElWRVJUKHRoaXMsIDApOwogICAgIC8vIFNwaW4gYWdhaW4gYWZ0ZXIgcmV0dXJuaW5nIGZy
b20gdGhlIHdhaXQgcm91dGluZSB0byBnaXZlIHRoaXMgdGhyZWFkCiAgICAgLy8gc29tZSBjaGFu
Y2Ugb2Ygb2J0YWluaW5nIHRoZSBsb2NrLgotICAgIGxvY2tfdmFsdWUgPSBTcGluTG9vcCh3YWl0
X3N0YXJ0X3RpbWUsICZ3YWl0X2N5Y2xlcyk7CisgICAgbG9ja192YWx1ZSA9IFNwaW5Mb29wKCk7
CisgICAgd2FpdF9jeWNsZXMgPSBFbmNvZGVXYWl0Q3ljbGVzKHdhaXRfc3RhcnRfdGltZSwgQ3lj
bGVDbG9jazo6Tm93KCkpOworICAgIGxvY2tfdmFsdWUgPSBUcnlMb2NrSW50ZXJuYWwobG9ja192
YWx1ZSwgd2FpdF9jeWNsZXMpOwogICB9CiB9CiAKQEAgLTIwNiwxNCArMjAzLDIwIEBAIHVpbnQz
Ml90IFNwaW5Mb2NrOjpFbmNvZGVXYWl0Q3ljbGVzKGludDY0X3Qgd2FpdF9zdGFydF90aW1lLAog
ICAgICAgKHdhaXRfZW5kX3RpbWUgLSB3YWl0X3N0YXJ0X3RpbWUpID4+IFBST0ZJTEVfVElNRVNU
QU1QX1NISUZUOwogCiAgIC8vIFJldHVybiBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0aW1lIHNw
ZW50IHdhaXRpbmcgdGhhdCBjYW4gYmUgc3RvcmVkIGluCi0gIC8vIHRoZSBsb2NrIHdvcmQncyB1
cHBlciBiaXRzLiAgYml0X2Nhc3QgaXMgcmVxdWlyZWQgYXMgQXRvbWljMzIgaXMgc2lnbmVkLgot
ICBjb25zdCB1aW50MzJfdCBjbGFtcGVkID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KAorICAvLyB0
aGUgbG9jayB3b3JkJ3MgdXBwZXIgYml0cy4KKyAgdWludDMyX3QgY2xhbXBlZCA9IHN0YXRpY19j
YXN0PHVpbnQzMl90PigKICAgICAgIHN0ZDo6bWluKHNjYWxlZF93YWl0X3RpbWUsIGtNYXhXYWl0
VGltZSkgPDwgTE9DS1dPUkRfUkVTRVJWRURfU0hJRlQpOwogCi0gIC8vIGJ1bXAgdXAgdmFsdWUg
aWYgbmVjZXNzYXJ5IHRvIGF2b2lkIHJldHVybmluZyBrU3BpbkxvY2tTbGVlcGVyLgotICBjb25z
dCB1aW50MzJfdCBhZnRlcl9zcGlubG9ja19zbGVlcGVyID0KLSAgICAga1NwaW5Mb2NrU2xlZXBl
ciArICgxIDw8IExPQ0tXT1JEX1JFU0VSVkVEX1NISUZUKTsKLSAgcmV0dXJuIGNsYW1wZWQgPT0g
a1NwaW5Mb2NrU2xlZXBlciA/IGFmdGVyX3NwaW5sb2NrX3NsZWVwZXIgOiBjbGFtcGVkOworICBp
ZiAoY2xhbXBlZCA9PSAwKSB7CisgICAgcmV0dXJuIGtTcGluTG9ja1NsZWVwZXI7ICAvLyBKdXN0
IHdha2Ugd2FpdGVycywgYnV0IGRvbid0IHJlY29yZCBjb250ZW50aW9uLgorICB9CisgIC8vIEJ1
bXAgdXAgdmFsdWUgaWYgbmVjZXNzYXJ5IHRvIGF2b2lkIHJldHVybmluZyBrU3BpbkxvY2tTbGVl
cGVyLgorICBjb25zdCB1aW50MzJfdCBrTWluV2FpdFRpbWUgPQorICAgICAga1NwaW5Mb2NrU2xl
ZXBlciArICgxIDw8IExPQ0tXT1JEX1JFU0VSVkVEX1NISUZUKTsKKyAgaWYgKGNsYW1wZWQgPT0g
a1NwaW5Mb2NrU2xlZXBlcikgeworICAgIHJldHVybiBrTWluV2FpdFRpbWU7CisgIH0KKyAgcmV0
dXJuIGNsYW1wZWQ7CiB9CiAKIHVpbnQ2NF90IFNwaW5Mb2NrOjpEZWNvZGVXYWl0Q3ljbGVzKHVp
bnQzMl90IGxvY2tfdmFsdWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3Bp
bmxvY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2suaAppbmRleCAyMTJhYmM2Njll
Ni4uZWNkYTc5MjQxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2su
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrLmgKQEAgLTUsNyArNSw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCiAjaW5jbHVkZSA8YXRvbWljPgogCiAj
aW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKQEAgLTQ3LDcgKzQ4LDcgQEAKIG5hbWVz
cGFjZSBhYnNsIHsKIG5hbWVzcGFjZSBiYXNlX2ludGVybmFsIHsKIAotY2xhc3MgTE9DS0FCTEUg
U3BpbkxvY2sgeworY2xhc3MgQUJTTF9MT0NLQUJMRSBTcGluTG9jayB7CiAgcHVibGljOgogICBT
cGluTG9jaygpIDogbG9ja3dvcmRfKGtTcGluTG9ja0Nvb3BlcmF0aXZlKSB7CiAgICAgQUJTTF9U
U0FOX01VVEVYX0NSRUFURSh0aGlzLCBfX3RzYW5fbXV0ZXhfbm90X3N0YXRpYyk7CkBAIC01Nyw4
ICs1OCwxMCBAQCBjbGFzcyBMT0NLQUJMRSBTcGluTG9jayB7CiAgIC8vCiAgIC8vICAgIHN0YXRp
YyBTcGluTG9jayBsb2NrKGJhc2VfaW50ZXJuYWw6OmtMaW5rZXJJbml0aWFsaXplZCk7CiAgIC8v
Ci0gIC8vIFdoZW4gaW50aWFsaXplZCB1c2luZyB0aGlzIGNvbnN0cnVjdG9yLCB3ZSBkZXBlbmQg
b24gdGhlIGZhY3QKLSAgLy8gdGhhdCB0aGUgbGlua2VyIGhhcyBhbHJlYWR5IGluaXRpYWxpemVk
IHRoZSBtZW1vcnkgYXBwcm9wcmlhdGVseS4KKyAgLy8gV2hlbiBpbml0aWFsaXplZCB1c2luZyB0
aGlzIGNvbnN0cnVjdG9yLCB3ZSBkZXBlbmQgb24gdGhlIGZhY3QKKyAgLy8gdGhhdCB0aGUgbGlu
a2VyIGhhcyBhbHJlYWR5IGluaXRpYWxpemVkIHRoZSBtZW1vcnkgYXBwcm9wcmlhdGVseS4gVGhl
IGxvY2sKKyAgLy8gaXMgaW5pdGlhbGl6ZWQgaW4gbm9uLWNvb3BlcmF0aXZlIG1vZGUuCisgIC8v
CiAgIC8vIEEgU3BpbkxvY2sgY29uc3RydWN0ZWQgbGlrZSB0aGlzIGNhbiBiZSBmcmVlbHkgdXNl
ZCBmcm9tIGdsb2JhbAogICAvLyBpbml0aWFsaXplcnMgd2l0aG91dCB3b3JyeWluZyBhYm91dCB0
aGUgb3JkZXIgaW4gd2hpY2ggZ2xvYmFsCiAgIC8vIGluaXRpYWxpemVycyBydW4uCkBAIC03Niw3
ICs3OSw3IEBAIGNsYXNzIExPQ0tBQkxFIFNwaW5Mb2NrIHsKICAgflNwaW5Mb2NrKCkgeyBBQlNM
X1RTQU5fTVVURVhfREVTVFJPWSh0aGlzLCBfX3RzYW5fbXV0ZXhfbm90X3N0YXRpYyk7IH0KIAog
ICAvLyBBY3F1aXJlIHRoaXMgU3BpbkxvY2suCi0gIGlubGluZSB2b2lkIExvY2soKSBFWENMVVNJ
VkVfTE9DS19GVU5DVElPTigpIHsKKyAgaW5saW5lIHZvaWQgTG9jaygpIEFCU0xfRVhDTFVTSVZF
X0xPQ0tfRlVOQ1RJT04oKSB7CiAgICAgQUJTTF9UU0FOX01VVEVYX1BSRV9MT0NLKHRoaXMsIDAp
OwogICAgIGlmICghVHJ5TG9ja0ltcGwoKSkgewogICAgICAgU2xvd0xvY2soKTsKQEAgLTg4LDcg
KzkxLDcgQEAgY2xhc3MgTE9DS0FCTEUgU3BpbkxvY2sgewogICAvLyBhY3F1aXNpdGlvbiB3YXMg
c3VjY2Vzc2Z1bC4gIElmIHRoZSBsb2NrIHdhcyBub3QgYWNxdWlyZWQsIGZhbHNlIGlzCiAgIC8v
IHJldHVybmVkLiAgSWYgdGhpcyBTcGluTG9jayBpcyBmcmVlIGF0IHRoZSB0aW1lIG9mIHRoZSBj
YWxsLCBUcnlMb2NrCiAgIC8vIHdpbGwgcmV0dXJuIHRydWUgd2l0aCBoaWdoIHByb2JhYmlsaXR5
LgotICBpbmxpbmUgYm9vbCBUcnlMb2NrKCkgRVhDTFVTSVZFX1RSWUxPQ0tfRlVOQ1RJT04odHJ1
ZSkgeworICBpbmxpbmUgYm9vbCBUcnlMb2NrKCkgQUJTTF9FWENMVVNJVkVfVFJZTE9DS19GVU5D
VElPTih0cnVlKSB7CiAgICAgQUJTTF9UU0FOX01VVEVYX1BSRV9MT0NLKHRoaXMsIF9fdHNhbl9t
dXRleF90cnlfbG9jayk7CiAgICAgYm9vbCByZXMgPSBUcnlMb2NrSW1wbCgpOwogICAgIEFCU0xf
VFNBTl9NVVRFWF9QT1NUX0xPQ0soCkBAIC05OCwxMSArMTAxLDExIEBAIGNsYXNzIExPQ0tBQkxF
IFNwaW5Mb2NrIHsKICAgfQogCiAgIC8vIFJlbGVhc2UgdGhpcyBTcGluTG9jaywgd2hpY2ggbXVz
dCBiZSBoZWxkIGJ5IHRoZSBjYWxsaW5nIHRocmVhZC4KLSAgaW5saW5lIHZvaWQgVW5sb2NrKCkg
VU5MT0NLX0ZVTkNUSU9OKCkgeworICBpbmxpbmUgdm9pZCBVbmxvY2soKSBBQlNMX1VOTE9DS19G
VU5DVElPTigpIHsKICAgICBBQlNMX1RTQU5fTVVURVhfUFJFX1VOTE9DSyh0aGlzLCAwKTsKICAg
ICB1aW50MzJfdCBsb2NrX3ZhbHVlID0gbG9ja3dvcmRfLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJf
cmVsYXhlZCk7Ci0gICAgbG9ja3dvcmRfLnN0b3JlKGxvY2tfdmFsdWUgJiBrU3BpbkxvY2tDb29w
ZXJhdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7
CisgICAgbG9ja192YWx1ZSA9IGxvY2t3b3JkXy5leGNoYW5nZShsb2NrX3ZhbHVlICYga1NwaW5M
b2NrQ29vcGVyYXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKIAogICAgIGlmICgobG9ja192YWx1ZSAmIGtTcGluTG9j
a0Rpc2FibGVkU2NoZWR1bGluZykgIT0gMCkgewogICAgICAgYmFzZV9pbnRlcm5hbDo6U2NoZWR1
bGluZ0d1YXJkOjpFbmFibGVSZXNjaGVkdWxpbmcodHJ1ZSk7CkBAIC0xNjEsNyArMTY0LDcgQEAg
Y2xhc3MgTE9DS0FCTEUgU3BpbkxvY2sgewogICB2b2lkIEluaXRMaW5rZXJJbml0aWFsaXplZEFu
ZENvb3BlcmF0aXZlKCk7CiAgIHZvaWQgU2xvd0xvY2soKSBBQlNMX0FUVFJJQlVURV9DT0xEOwog
ICB2b2lkIFNsb3dVbmxvY2sodWludDMyX3QgbG9ja192YWx1ZSkgQUJTTF9BVFRSSUJVVEVfQ09M
RDsKLSAgdWludDMyX3QgU3Bpbkxvb3AoaW50NjRfdCBpbml0aWFsX3dhaXRfdGltZXN0YW1wLCB1
aW50MzJfdCogd2FpdF9jeWNsZXMpOworICB1aW50MzJfdCBTcGluTG9vcCgpOwogCiAgIGlubGlu
ZSBib29sIFRyeUxvY2tJbXBsKCkgewogICAgIHVpbnQzMl90IGxvY2tfdmFsdWUgPSBsb2Nrd29y
ZF8ubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKQEAgLTE3NiwxMyArMTc5LDEzIEBA
IGNsYXNzIExPQ0tBQkxFIFNwaW5Mb2NrIHsKIAogLy8gQ29ycmVzcG9uZGluZyBsb2NrZXIgb2Jq
ZWN0IHRoYXQgYXJyYW5nZXMgdG8gYWNxdWlyZSBhIHNwaW5sb2NrIGZvcgogLy8gdGhlIGR1cmF0
aW9uIG9mIGEgQysrIHNjb3BlLgotY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIFNwaW5Mb2NrSG9sZGVy
IHsKK2NsYXNzIEFCU0xfU0NPUEVEX0xPQ0tBQkxFIFNwaW5Mb2NrSG9sZGVyIHsKICBwdWJsaWM6
Ci0gIGlubGluZSBleHBsaWNpdCBTcGluTG9ja0hvbGRlcihTcGluTG9jayogbCkgRVhDTFVTSVZF
X0xPQ0tfRlVOQ1RJT04obCkKKyAgaW5saW5lIGV4cGxpY2l0IFNwaW5Mb2NrSG9sZGVyKFNwaW5M
b2NrKiBsKSBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKGwpCiAgICAgICA6IGxvY2tfKGwp
IHsKICAgICBsLT5Mb2NrKCk7CiAgIH0KLSAgaW5saW5lIH5TcGluTG9ja0hvbGRlcigpIFVOTE9D
S19GVU5DVElPTigpIHsgbG9ja18tPlVubG9jaygpOyB9CisgIGlubGluZSB+U3BpbkxvY2tIb2xk
ZXIoKSBBQlNMX1VOTE9DS19GVU5DVElPTigpIHsgbG9ja18tPlVubG9jaygpOyB9CiAKICAgU3Bp
bkxvY2tIb2xkZXIoY29uc3QgU3BpbkxvY2tIb2xkZXImKSA9IGRlbGV0ZTsKICAgU3BpbkxvY2tI
b2xkZXImIG9wZXJhdG9yPShjb25zdCBTcGluTG9ja0hvbGRlciYpID0gZGVsZXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19ha2Fyb3MuaW5jIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9zcGlubG9ja19ha2Fyb3MuaW5jCmluZGV4IDA1MWM4Y2Y4N2ZiLi5iYzQ2ODk0
MGZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19ha2Fyb3MuaW5j
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfYWthcm9zLmluYwpAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9zcGlubG9ja19iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5s
b2NrX2JlbmNobWFyay5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
MDQ1MWM2NWY5NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5s
b2NrX2JlbmNobWFyay5jYwpAQCAtMCwwICsxLDUyIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworLy8gU2VlIGFsc28gLy9hYnNsL3N5bmNocm9uaXphdGlvbjpt
dXRleF9iZW5jaG1hcmsgZm9yIGEgY29tcGFyaXNvbiBvZiBTcGluTG9jaworLy8gYW5kIE11dGV4
IHBlcmZvcm1hbmNlIHVuZGVyIHZhcnlpbmcgbGV2ZWxzIG9mIGNvbnRlbnRpb24uCisKKyNpbmNs
dWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2Jh
c2UvaW50ZXJuYWwvc2NoZWR1bGluZ19tb2RlLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVy
bmFsL3NwaW5sb2NrLmgiCisjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwv
Y3JlYXRlX3RocmVhZF9pZGVudGl0eS5oIgorI2luY2x1ZGUgImJlbmNobWFyay9iZW5jaG1hcmsu
aCIKKworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPGFic2w6OmJhc2VfaW50ZXJuYWw6OlNjaGVk
dWxpbmdNb2RlIHNjaGVkdWxpbmdfbW9kZT4KK3N0YXRpYyB2b2lkIEJNX1NwaW5Mb2NrKGJlbmNo
bWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIC8vIEVuc3VyZSBhIFRocmVhZElkZW50aXR5IGlzIGlu
c3RhbGxlZC4KKyAgQUJTTF9JTlRFUk5BTF9DSEVDSygKKyAgICAgIGFic2w6OnN5bmNocm9uaXph
dGlvbl9pbnRlcm5hbDo6R2V0T3JDcmVhdGVDdXJyZW50VGhyZWFkSWRlbnRpdHkoKSAhPQorICAg
ICAgICAgIG51bGxwdHIsCisgICAgICAiR2V0T3JDcmVhdGVDdXJyZW50VGhyZWFkSWRlbnRpdHko
KSBmYWlsZWQiKTsKKworICBzdGF0aWMgYXV0byogc3BpbmxvY2sgPSBuZXcgYWJzbDo6YmFzZV9p
bnRlcm5hbDo6U3BpbkxvY2soc2NoZWR1bGluZ19tb2RlKTsKKyAgZm9yIChhdXRvIF8gOiBzdGF0
ZSkgeworICAgIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNwaW5Mb2NrSG9sZGVyIGhvbGRlcihzcGlu
bG9jayk7CisgIH0KK30KKworQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NwaW5Mb2NrLAorICAgICAg
ICAgICAgICAgICAgIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNDSEVEVUxFX0tFUk5FTF9PTkxZKQor
ICAgIC0+VXNlUmVhbFRpbWUoKQorICAgIC0+VGhyZWFkcygxKQorICAgIC0+VGhyZWFkUGVyQ3B1
KCk7CisKK0JFTkNITUFSS19URU1QTEFURShCTV9TcGluTG9jaywKKyAgICAgICAgICAgICAgICAg
ICBhYnNsOjpiYXNlX2ludGVybmFsOjpTQ0hFRFVMRV9DT09QRVJBVElWRV9BTkRfS0VSTkVMKQor
ICAgIC0+VXNlUmVhbFRpbWUoKQorICAgIC0+VGhyZWFkcygxKQorICAgIC0+VGhyZWFkUGVyQ3B1
KCk7CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9z
cGlubG9ja19saW51eC5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX2xpbnV4Lmlu
YwppbmRleCA5NGM4NjFkYzZjYS4uMjhlMjlkMTkxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvc3BpbmxvY2tfbGludXguaW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3Bp
bmxvY2tfbGludXguaW5jCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CkBAIC01MSwxNyArNTEsMTIgQEAgZXh0ZXJuICJDIiB7CiBBQlNMX0FUVFJJQlVURV9XRUFLIHZv
aWQgQWJzbEludGVybmFsU3BpbkxvY2tEZWxheSgKICAgICBzdGQ6OmF0b21pYzx1aW50MzJfdD4g
KncsIHVpbnQzMl90IHZhbHVlLCBpbnQgbG9vcCwKICAgICBhYnNsOjpiYXNlX2ludGVybmFsOjpT
Y2hlZHVsaW5nTW9kZSkgewotICBpZiAobG9vcCAhPSAwKSB7Ci0gICAgaW50IHNhdmVfZXJybm8g
PSBlcnJubzsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdG07Ci0gICAgdG0udHZfc2VjID0gMDsKLSAg
ICAvLyBJbmNyZWFzZSB0aGUgZGVsYXk7IHdlIGV4cGVjdCAoYnV0IGRvIG5vdCByZWx5IG9uKSBl
eHBsaWNpdCB3YWtldXBzLgotICAgIC8vIFdlIGRvbid0IHJlbHkgb24gZXhwbGljaXQgd2FrZXVw
cyBiZWNhdXNlIHdlIGludGVudGlvbmFsbHkgYWxsb3cgZm9yCi0gICAgLy8gYSByYWNlIG9uIHRo
ZSBrU3BpbkxvY2tTbGVlcGVyIGJpdC4KLSAgICB0bS50dl9uc2VjID0gMTYgKiBhYnNsOjpiYXNl
X2ludGVybmFsOjpTcGluTG9ja1N1Z2dlc3RlZERlbGF5TlMobG9vcCk7Ci0gICAgc3lzY2FsbChT
WVNfZnV0ZXgsIHcsIEZVVEVYX1dBSVQgfCBGVVRFWF9QUklWQVRFX0ZMQUcsIHZhbHVlLCAmdG0p
OwotICAgIGVycm5vID0gc2F2ZV9lcnJubzsKLSAgfQorICBpbnQgc2F2ZV9lcnJubyA9IGVycm5v
OworICBzdHJ1Y3QgdGltZXNwZWMgdG07CisgIHRtLnR2X3NlYyA9IDA7CisgIHRtLnR2X25zZWMg
PSBhYnNsOjpiYXNlX2ludGVybmFsOjpTcGluTG9ja1N1Z2dlc3RlZERlbGF5TlMobG9vcCk7Cisg
IHN5c2NhbGwoU1lTX2Z1dGV4LCB3LCBGVVRFWF9XQUlUIHwgRlVURVhfUFJJVkFURV9GTEFHLCB2
YWx1ZSwgJnRtKTsKKyAgZXJybm8gPSBzYXZlX2Vycm5vOwogfQogCiBBQlNMX0FUVFJJQlVURV9X
RUFLIHZvaWQgQWJzbEludGVybmFsU3BpbkxvY2tXYWtlKHN0ZDo6YXRvbWljPHVpbnQzMl90PiAq
dywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfcG9zaXguaW5jIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19wb3NpeC5pbmMKaW5kZXggMDA5OGMxYzc2MDEu
LmYwMjViNWY4YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3Bv
c2l4LmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3Bvc2l4LmluYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9zcGlubG9ja193YWl0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlu
bG9ja193YWl0LmNjCmluZGV4IDBmZGU5YzA0YjczLi5mYWM4YTIxZGI0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193YWl0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvc3BpbmxvY2tfd2FpdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtMzgsMTQgKzM4LDE1IEBAIG5hbWVzcGFjZSBiYXNlX2ludGVybmFsIHsKIHVp
bnQzMl90IFNwaW5Mb2NrV2FpdChzdGQ6OmF0b21pYzx1aW50MzJfdD4gKncsIGludCBuLAogICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFNwaW5Mb2NrV2FpdFRyYW5zaXRpb24gdHJhbnNbXSwK
ICAgICAgICAgICAgICAgICAgICAgICBiYXNlX2ludGVybmFsOjpTY2hlZHVsaW5nTW9kZSBzY2hl
ZHVsaW5nX21vZGUpIHsKLSAgZm9yIChpbnQgbG9vcCA9IDA7IDsgbG9vcCsrKSB7CisgIGludCBs
b29wID0gMDsKKyAgZm9yICg7OykgewogICAgIHVpbnQzMl90IHYgPSB3LT5sb2FkKHN0ZDo6bWVt
b3J5X29yZGVyX2FjcXVpcmUpOwogICAgIGludCBpOwogICAgIGZvciAoaSA9IDA7IGkgIT0gbiAm
JiB2ICE9IHRyYW5zW2ldLmZyb207IGkrKykgewogICAgIH0KICAgICBpZiAoaSA9PSBuKSB7Ci0g
ICAgICBTcGluTG9ja0RlbGF5KHcsIHYsIGxvb3AsIHNjaGVkdWxpbmdfbW9kZSk7ICAvLyBubyBt
YXRjaGluZyB0cmFuc2l0aW9uCi0gICAgfSBlbHNlIGlmICh0cmFuc1tpXS50byA9PSB2IHx8ICAg
ICAgICAgICAgICAgICAvLyBudWxsIHRyYW5zaXRpb24KKyAgICAgIFNwaW5Mb2NrRGVsYXkodywg
diwgKytsb29wLCBzY2hlZHVsaW5nX21vZGUpOyAgLy8gbm8gbWF0Y2hpbmcgdHJhbnNpdGlvbgor
ICAgIH0gZWxzZSBpZiAodHJhbnNbaV0udG8gPT0gdiB8fCAgICAgICAgICAgICAgICAgICAvLyBu
dWxsIHRyYW5zaXRpb24KICAgICAgICAgICAgICAgIHctPmNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25n
KHYsIHRyYW5zW2ldLnRvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpKSB7CkBAIC02NCwxNyAr
NjUsMTQgQEAgaW50IFNwaW5Mb2NrU3VnZ2VzdGVkRGVsYXlOUyhpbnQgbG9vcCkgewogICByID0g
MHg1ZGVlY2U2NmRMTCAqIHIgKyAweGI7ICAgLy8gbnVtYmVycyBmcm9tIG5yYW5kNDgoKQogICBk
ZWxheV9yYW5kLnN0b3JlKHIsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogCi0gIHIgPDw9
IDE2OyAgIC8vIDQ4LWJpdCByYW5kb20gbnVtYmVyIG5vdyBpbiB0b3AgNDgtYml0cy4KICAgaWYg
KGxvb3AgPCAwIHx8IGxvb3AgPiAzMikgeyAgIC8vIGxpbWl0IGxvb3AgdG8gMC4uMzIKICAgICBs
b29wID0gMzI7CiAgIH0KLSAgLy8gbG9vcD4+MyBjYW5ub3QgZXhjZWVkIDQgYmVjYXVzZSBsb29w
IGNhbm5vdCBleGNlZWQgMzIuCi0gIC8vIFNlbGVjdCB0b3AgMjAuLjI0IGJpdHMgb2YgbG93ZXIg
NDggYml0cywKLSAgLy8gZ2l2aW5nIGFwcHJveGltYXRlbHkgMG1zIHRvIDE2bXMuCi0gIC8vIE1l
YW4gaXMgZXhwb25lbnRpYWwgaW4gbG9vcCBmb3IgZmlyc3QgMzIgaXRlcmF0aW9ucywgdGhlbiA4
bXMuCi0gIC8vIFRoZSBmdXRleCBwYXRoIG11bHRpcGxpZXMgdGhpcyBieSAxNiwgc2luY2Ugd2Ug
ZXhwZWN0IGV4cGxpY2l0IHdha2V1cHMKLSAgLy8gYWxtb3N0IGFsd2F5cyBvbiB0aGF0IHBhdGgu
Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHIgPj4gKDQ0IC0gKGxvb3AgPj4gMykpKTsKKyAg
Y29uc3QgaW50IGtNaW5EZWxheSA9IDEyOCA8PCAxMDsgIC8vIDEyOHVzCisgIC8vIERvdWJsZSBk
ZWxheSBldmVyeSA4IGl0ZXJhdGlvbnMsIHVwIHRvIDE2eCAoMm1zKS4KKyAgaW50IGRlbGF5ID0g
a01pbkRlbGF5IDw8IChsb29wIC8gOCk7CisgIC8vIFJhbmRvbWl6ZSBpbiBkZWxheS4uMipkZWxh
eSByYW5nZSwgZm9yIHJlc3VsdGluZyAxMjh1cy4uNG1zIHJhbmdlLgorICByZXR1cm4gZGVsYXkg
fCAoKGRlbGF5IC0gMSkgJiBzdGF0aWNfY2FzdDxpbnQ+KHIpKTsKIH0KIAogfSAgLy8gbmFtZXNw
YWNlIGJhc2VfaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3Bpbmxv
Y2tfd2FpdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193YWl0LmgKaW5kZXggNWM2
Y2M3ZmRiYTQuLjY2NDJjZTFhYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Nw
aW5sb2NrX3dhaXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dhaXQuaApA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193aW4zMi5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L3NwaW5sb2NrX3dpbjMyLmluYwppbmRleCAzMmM4ZmMwYmI1MS4uNzg2NTRiNWI1OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfd2luMzIuaW5jCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfd2luMzIuaW5jCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3N5c2lu
Zm8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3N5c2luZm8uY2MKaW5kZXggZGI0MWJhY2M4NDQu
LmU1ZTEzMWY3MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3N5c2luZm8uY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvLmNjCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zMzMsNyArMzMzLDcgQEAgc3RhdGljIGFic2w6OmJh
c2VfaW50ZXJuYWw6OlNwaW5Mb2NrIHRpZF9sb2NrKAogLy8gV2Ugc2V0IGEgYml0IHBlciB0aHJl
YWQgaW4gdGhpcyBhcnJheSB0byBpbmRpY2F0ZSB0aGF0IGFuIElEIGlzIGluCiAvLyB1c2UuIElE
IDAgaXMgdW51c2VkIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQgdmFsdWUgcmV0dXJuZWQgYnkK
IC8vIHB0aHJlYWRfZ2V0c3BlY2lmaWMoKS4KLXN0YXRpYyBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4q
IHRpZF9hcnJheSBHVUFSREVEX0JZKHRpZF9sb2NrKSA9IG51bGxwdHI7CitzdGF0aWMgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+KiB0aWRfYXJyYXkgQUJTTF9HVUFSREVEX0JZKHRpZF9sb2NrKSA9IG51
bGxwdHI7CiBzdGF0aWMgY29uc3RleHByIGludCBrQml0c1BlcldvcmQgPSAzMjsgIC8vIHRpZF9h
cnJheSBpcyB1aW50MzJfdC4KIAogLy8gUmV0dXJucyB0aGUgVElEIHRvIHRpZF9hcnJheS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3lzaW5mby5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC9zeXNpbmZvLmgKaW5kZXggNWJkMWM1MDBiZDUuLmI4NjRhNTk3NDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3N5c2luZm8uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L3N5c2luZm8uaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2ludGVybmFsL3N5c2luZm9fdGVzdC5jYwppbmRleCBlMGQ5YWFiOWJjMi4uODJiYmNjMmIzYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3lzaW5mb190ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvc3lzaW5mb190ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zNywxMiArMzcsMTIgQEAgVEVTVChTeXNpbmZvVGVzdCwg
TnVtQ1BVcykgewogfQogCiBURVNUKFN5c2luZm9UZXN0LCBOb21pbmFsQ1BVRnJlcXVlbmN5KSB7
Ci0jaWYgIShkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykpCisjaWYg
IShkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykpICYmICFkZWZpbmVk
KF9fRU1TQ1JJUFRFTl9fKQogICBFWFBFQ1RfR0UoTm9taW5hbENQVUZyZXF1ZW5jeSgpLCAxMDAw
LjApCiAgICAgICA8PCAiTm9taW5hbENQVUZyZXF1ZW5jeSgpIGRpZCBub3QgcmV0dXJuIGEgcmVh
c29uYWJsZSB2YWx1ZSI7CiAjZWxzZQotICAvLyBUT0RPKGFic2wtdGVhbSk6IEFhcmNoNjQgY2Fu
bm90IHJlYWQgdGhlIENQVSBmcmVxdWVuY3kgZnJvbSBzeXNmcywgc28gd2UKLSAgLy8gZ2V0IGJh
Y2sgMS4wLiBGaXggb25jZSB0aGUgdmFsdWUgaXMgYXZhaWxhYmxlLgorICAvLyBBYXJjaDY0IGNh
bm5vdCByZWFkIHRoZSBDUFUgZnJlcXVlbmN5IGZyb20gc3lzZnMsIHNvIHdlIGdldCBiYWNrIDEu
MC4KKyAgLy8gRW1zY3JpcHRlbiBkb2VzIG5vdCBoYXZlIGEgc3lzZnMgdG8gcmVhZCBmcm9tIGF0
IGFsbC4KICAgRVhQRUNUX0VRKE5vbWluYWxDUFVGcmVxdWVuY3koKSwgMS4wKQogICAgICAgPDwg
IkNQVSBmcmVxdWVuY3kgZGV0ZWN0aW9uIHdhcyBmaXhlZCEgUGxlYXNlIHVwZGF0ZSB1bml0dGVz
dC4iOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVu
dGl0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmNjCmluZGV4IGNm
ZjljMWI0ZjRkLi45MTI3M2E2YjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90
aHJlYWRfaWRlbnRpdHkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRp
dHkuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL3RocmVhZF9pZGVudGl0eS5oCmluZGV4IGE1MTcyMmY5ZDgyLi5iMzQ2NzRhNjJkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eS5oCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC00Miw5ICs0Miw5IEBAIG5hbWVzcGFjZSBiYXNlX2lu
dGVybmFsIHsKIGNsYXNzIFNwaW5Mb2NrOwogc3RydWN0IFRocmVhZElkZW50aXR5OwogCi0vLyBV
c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBiYXNlOjpNdXRleCBhbmQgYmFzZTo6Q29uZFZh
ci4KKy8vIFVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIG9mIGFic2w6Ok11dGV4IGFuZCBhYnNs
OjpDb25kVmFyLgogc3RydWN0IFBlclRocmVhZFN5bmNoIHsKLSAgLy8gVGhlIGludGVybmFsIHJl
cHJlc2VudGF0aW9uIG9mIGJhc2U6Ok11dGV4IGFuZCBiYXNlOjpDb25kVmFyIHJlbHkKKyAgLy8g
VGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGFic2w6Ok11dGV4IGFuZCBhYnNsOjpDb25k
VmFyIHJlbHkKICAgLy8gb24gdGhlIGFsaWdubWVudCBvZiBQZXJUaHJlYWRTeW5jaC4gQm90aCBz
dG9yZSB0aGUgYWRkcmVzcyBvZiB0aGUKICAgLy8gUGVyVGhyZWFkU3luY2ggaW4gdGhlIGhpZ2gt
b3JkZXIgYml0cyBvZiB0aGVpciBpbnRlcm5hbCBzdGF0ZSwKICAgLy8gd2hpY2ggbWVhbnMgdGhl
IGxvdyBrTG93WmVyb0JpdHMgb2YgdGhlIGFkZHJlc3Mgb2YgUGVyVGhyZWFkU3luY2gKQEAgLTIz
Nyw0ICsyMzcsNSBAQCBpbmxpbmUgVGhyZWFkSWRlbnRpdHkqIEN1cnJlbnRUaHJlYWRJZGVudGl0
eUlmUHJlc2VudCgpIHsKIAogfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKIH0gIC8vIG5h
bWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9CQVNFX0lOVEVSTkFMX1RIUkVBRF9JREVO
VElUWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHlf
YmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHlfYmVuY2ht
YXJrLmNjCmluZGV4IDI0MjUyMmI0NDE4Li4wYWUxMGYyYjFlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHlfYmVuY2htYXJrLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5X2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5h
bC90aHJlYWRfaWRlbnRpdHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lk
ZW50aXR5X3Rlc3QuY2MKaW5kZXggZWNiOGFmNjg5ODIuLjEzYmZiZTNiZGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eV90ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
dGhyb3dfZGVsZWdhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Rocm93X2RlbGVnYXRlLmNj
CmluZGV4IDQ2ZGM1NzNjZmE4Li44ZTkyOGI4YTI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Rocm93
X2RlbGVnYXRlLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBA
IC0zMCw4ICszMCw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogI2lmZGVmIEFCU0xfSEFWRV9F
WENFUFRJT05TCiAgIHRocm93IGVycm9yOwogI2Vsc2UKLSAgQUJTTF9SQVdfTE9HKEVSUk9SLCAi
JXMiLCBlcnJvci53aGF0KCkpOwotICBhYm9ydCgpOworICBBQlNMX1JBV19MT0coRkFUQUwsICIl
cyIsIGVycm9yLndoYXQoKSk7CisgIHN0ZDo6YWJvcnQoKTsKICNlbmRpZgogfQogfSAgLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Rocm93X2RlbGVnYXRlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3Rocm93X2RlbGVnYXRlLmgKaW5kZXggNzBlMmQ3NzA5ZTUu
LjAzYzcwMGI1ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Rocm93X2RlbGVn
YXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5oCkBAIC01LDcg
KzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2ludGVybmFsL3RzYW5fbXV0ZXhfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Rz
YW5fbXV0ZXhfaW50ZXJmYWNlLmgKaW5kZXggNmJiNGZhZWRiODcuLjJhNTEwNjAzYmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RzYW5fbXV0ZXhfaW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC90c2FuX211dGV4X2ludGVyZmFjZS5oCkBAIC00LDcgKzQsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy
bmFsL3VuYWxpZ25lZF9hY2Nlc3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5hbGlnbmVkX2Fj
Y2Vzcy5oCmluZGV4IGY5ZGYzYjc4NDhjLi4yY2Y3YzFkNDViMyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC91bmFsaWduZWRfYWNjZXNzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5h
bC91bmFsaWduZWRfYWNjZXNzLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTI1LDE1ICsyNSw2IEBACiAvLyB1bmFsaWduZWQgQVBJcwogCiAvLyBQb3J0YWJs
ZSBoYW5kbGluZyBvZiB1bmFsaWduZWQgbG9hZHMsIHN0b3JlcywgYW5kIGNvcGllcy4KLS8vIE9u
IHNvbWUgcGxhdGZvcm1zLCBsaWtlIEFSTSwgdGhlIGNvcHkgZnVuY3Rpb25zIGNhbiBiZSBtb3Jl
IGVmZmljaWVudAotLy8gdGhlbiBhIGxvYWQgYW5kIGEgc3RvcmUuCi0vLwotLy8gSXQgaXMgcG9z
c2libGUgdG8gaW1wbGVtZW50IGFsbCBvZiB0aGVzZSB0aGVzZSB1c2luZyBjb25zdGFudC1sZW5n
dGggbWVtY3B5Ci0vLyBjYWxscywgd2hpY2ggaXMgcG9ydGFibGUgYW5kIHdpbGwgdXN1YWxseSBi
ZSBpbmxpbmVkIGludG8gc2ltcGxlIGxvYWRzIGFuZAotLy8gc3RvcmVzIGlmIHRoZSBhcmNoaXRl
Y3R1cmUgc3VwcG9ydHMgaXQuIEhvd2V2ZXIsIHN1Y2ggaW5saW5pbmcgdXN1YWxseQotLy8gaGFw
cGVucyBpbiBhIHBhc3MgdGhhdCdzIHF1aXRlIGxhdGUgaW4gY29tcGlsYXRpb24sIHdoaWNoIG1l
YW5zIHRoZSByZXN1bHRpbmcKLS8vIGxvYWRzIGFuZCBzdG9yZXMgY2Fubm90IHBhcnRpY2lwYXRl
IGluIG1hbnkgb3RoZXIgb3B0aW1pemF0aW9ucywgbGVhZGluZyB0bwotLy8gb3ZlcmFsbCB3b3Jz
ZSBjb2RlLgogCiAvLyBUaGUgdW5hbGlnbmVkIEFQSSBpcyBDKysgb25seS4gIFRoZSBkZWNsYXJh
dGlvbnMgdXNlIEMrKyBmZWF0dXJlcwogLy8gKG5hbWVzcGFjZXMsIGlubGluZSkgd2hpY2ggYXJl
IGFic2VudCBvciBpbmNvbXBhdGlibGUgaW4gQy4KQEAgLTEwOCwxNjQgKzk5LDggQEAgaW5saW5l
IHZvaWQgVW5hbGlnbmVkU3RvcmU2NCh2b2lkICpwLCB1aW50NjRfdCB2KSB7CiAjZGVmaW5lIEFC
U0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFNjQoX3AsIF92YWwpIFwKICAgKGFic2w6OmJhc2Vf
aW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQogCi0jZWxpZiBkZWZpbmVkKFVO
REVGSU5FRF9CRUhBVklPUl9TQU5JVElaRVIpCi0KLW5hbWVzcGFjZSBhYnNsIHsKLW5hbWVzcGFj
ZSBiYXNlX2ludGVybmFsIHsKLQotaW5saW5lIHVpbnQxNl90IFVuYWxpZ25lZExvYWQxNihjb25z
dCB2b2lkICpwKSB7Ci0gIHVpbnQxNl90IHQ7Ci0gIG1lbWNweSgmdCwgcCwgc2l6ZW9mIHQpOwot
ICByZXR1cm4gdDsKLX0KLQotaW5saW5lIHVpbnQzMl90IFVuYWxpZ25lZExvYWQzMihjb25zdCB2
b2lkICpwKSB7Ci0gIHVpbnQzMl90IHQ7Ci0gIG1lbWNweSgmdCwgcCwgc2l6ZW9mIHQpOwotICBy
ZXR1cm4gdDsKLX0KLQotaW5saW5lIHVpbnQ2NF90IFVuYWxpZ25lZExvYWQ2NChjb25zdCB2b2lk
ICpwKSB7Ci0gIHVpbnQ2NF90IHQ7Ci0gIG1lbWNweSgmdCwgcCwgc2l6ZW9mIHQpOwotICByZXR1
cm4gdDsKLX0KLQotaW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmUxNih2b2lkICpwLCB1aW50MTZf
dCB2KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYpOyB9Ci0KLWlubGluZSB2b2lkIFVuYWxpZ25l
ZFN0b3JlMzIodm9pZCAqcCwgdWludDMyX3QgdikgeyBtZW1jcHkocCwgJnYsIHNpemVvZiB2KTsg
fQotCi1pbmxpbmUgdm9pZCBVbmFsaWduZWRTdG9yZTY0KHZvaWQgKnAsIHVpbnQ2NF90IHYpIHsg
bWVtY3B5KHAsICZ2LCBzaXplb2Ygdik7IH0KLQotfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJu
YWwKLX0gIC8vIG5hbWVzcGFjZSBhYnNsCi0KLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdO
RURfTE9BRDE2KF9wKSBcCi0gIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRMb2FkMTYo
X3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIoX3ApIFwKLSAgKGFi
c2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQzMihfcCkpCi0jZGVmaW5lIEFCU0xfSU5U
RVJOQUxfVU5BTElHTkVEX0xPQUQ2NChfcCkgXAotICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5h
bGlnbmVkTG9hZDY0KF9wKSkKLQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9S
RTE2KF9wLCBfdmFsKSBcCi0gIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRTdG9yZTE2
KF9wLCBfdmFsKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkUzMihfcCwg
X3ZhbCkgXAotICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmUzMihfcCwgX3Zh
bCkpCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFNjQoX3AsIF92YWwpIFwK
LSAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQotCi0j
ZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9f
aTM4NikgfHwgXAotICAgIGRlZmluZWQoX01fSVg4NikgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBk
ZWZpbmVkKF9fUFBDX18pIHx8ICAgIFwKLSAgICBkZWZpbmVkKF9fcHBjNjRfXykgfHwgZGVmaW5l
ZChfX1BQQzY0X18pCi0KLS8vIHg4NiBhbmQgeDg2LTY0IGNhbiBwZXJmb3JtIHVuYWxpZ25lZCBs
b2Fkcy9zdG9yZXMgZGlyZWN0bHk7Ci0vLyBtb2Rlcm4gUG93ZXJQQyBoYXJkd2FyZSBjYW4gYWxz
byBkbyB1bmFsaWduZWQgaW50ZWdlciBsb2FkcyBhbmQgc3RvcmVzOwotLy8gYnV0IG5vdGU6IHRo
ZSBGUFUgc3RpbGwgc2VuZHMgdW5hbGlnbmVkIGxvYWRzIGFuZCBzdG9yZXMgdG8gYSB0cmFwIGhh
bmRsZXIhCi0KLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9wKSBcCi0g
ICgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCAqPihfcCkpCi0jZGVmaW5lIEFCU0xf
SU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihfcCkgXAotICAoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QgKj4oX3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FE
NjQoX3ApIFwKLSAgKCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90ICo+KF9wKSkKLQot
I2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTE2KF9wLCBfdmFsKSBcCi0gICgq
cmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCAqPihfcCkgPSAoX3ZhbCkpCi0jZGVmaW5lIEFCU0xf
SU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMzIoX3AsIF92YWwpIFwKLSAgKCpyZWludGVycHJldF9j
YXN0PHVpbnQzMl90ICo+KF9wKSA9IChfdmFsKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFM
SUdORURfU1RPUkU2NChfcCwgX3ZhbCkgXAotICAoKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Qg
Kj4oX3ApID0gKF92YWwpKQotCi0jZWxpZiBkZWZpbmVkKF9fYXJtX18pICYmIFwKLSAgICAgICFk
ZWZpbmVkKF9fQVJNX0FSQ0hfNV9fKSAmJiBcCi0gICAgICAhZGVmaW5lZChfX0FSTV9BUkNIXzVU
X18pICYmIFwKLSAgICAgICFkZWZpbmVkKF9fQVJNX0FSQ0hfNVRFX18pICYmIFwKLSAgICAgICFk
ZWZpbmVkKF9fQVJNX0FSQ0hfNVRFSl9fKSAmJiBcCi0gICAgICAhZGVmaW5lZChfX0FSTV9BUkNI
XzZfXykgJiYgXAotICAgICAgIWRlZmluZWQoX19BUk1fQVJDSF82Sl9fKSAmJiBcCi0gICAgICAh
ZGVmaW5lZChfX0FSTV9BUkNIXzZLX18pICYmIFwKLSAgICAgICFkZWZpbmVkKF9fQVJNX0FSQ0hf
NlpfXykgJiYgXAotICAgICAgIWRlZmluZWQoX19BUk1fQVJDSF82WktfXykgJiYgXAotICAgICAg
IWRlZmluZWQoX19BUk1fQVJDSF82VDJfXykKLQotCi0vLyBBUk12NyBhbmQgbmV3ZXIgc3VwcG9y
dCBuYXRpdmUgdW5hbGlnbmVkIGFjY2Vzc2VzLCBidXQgb25seSBvZiAxNi1iaXQKLS8vIGFuZCAz
Mi1iaXQgdmFsdWVzIChub3QgNjQtYml0KTsgb2xkZXIgdmVyc2lvbnMgZWl0aGVyIHJhaXNlIGEg
ZmF0YWwgc2lnbmFsLAotLy8gZG8gYW4gdW5hbGlnbmVkIHJlYWQgYW5kIHJvdGF0ZSB0aGUgd29y
ZHMgYXJvdW5kIGEgYml0LCBvciBkbyB0aGUgcmVhZHMgdmVyeQotLy8gc2xvd2x5ICh0cmlwIHRo
cm91Z2gga2VybmVsIG1vZGUpLiBUaGVyZSdzIG5vIHNpbXBsZSAjZGVmaW5lIHRoYXQgc2F5cyBq
dXN0Ci0vLyAiQVJNdjcgb3IgaGlnaGVyIiwgc28gd2UgaGF2ZSB0byBmaWx0ZXIgYXdheSBhbGwg
QVJNdjUgYW5kIEFSTXY2Ci0vLyBzdWItYXJjaGl0ZWN0dXJlcy4gTmV3ZXIgZ2NjICg+PSA0LjYp
IHNldCBhbiBfX0FSTV9GRUFUVVJFX0FMSUdORUQgI2RlZmluZSwKLS8vIHNvIGluIHRpbWUsIG1h
eWJlIHdlIGNhbiBtb3ZlIG9uIHRvIHRoYXQuCi0vLwotLy8gVGhpcyBpcyBhIG1lc3MsIGJ1dCB0
aGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91dCBpdC4KLS8vCi0vLyBUbyBmdXJ0aGVyIGNv
bXBsaWNhdGUgbWF0dGVycywgb25seSBMRFIgaW5zdHJ1Y3Rpb25zIChzaW5nbGUgcmVhZHMpIGFy
ZQotLy8gYWxsb3dlZCB0byBiZSB1bmFsaWduZWQsIG5vdCBMRFJEICh0d28gcmVhZHMpIG9yIExE
TSAobWFueSByZWFkcykuIFVubGVzcyB3ZQotLy8gZXhwbGljaXRseSB0ZWxsIHRoZSBjb21waWxl
ciB0aGF0IHRoZXNlIGFjY2Vzc2VzIGNhbiBiZSB1bmFsaWduZWQsIGl0IGNhbiBhbmQKLS8vIHdp
bGwgY29tYmluZSBhY2Nlc3Nlcy4gT24gYXJtY2MsIHRoZSB3YXkgdG8gc2lnbmFsIHRoaXMgaXMg
ZG9uZSBieSBhY2Nlc3NpbmcKLS8vIHRocm91Z2ggdGhlIHR5cGUgKHVpbnQzMl90IF9fcGFja2Vk
ICopLCBidXQgR0NDIGhhcyBubyBzdWNoIGF0dHJpYnV0ZQotLy8gKGl0IGlnbm9yZXMgX19hdHRy
aWJ1dGVfXygocGFja2VkKSkgb24gaW5kaXZpZHVhbCB2YXJpYWJsZXMpLiBIb3dldmVyLAotLy8g
d2UgY2FuIHRlbGwgaXQgdGhhdCBhIF9zdHJ1Y3RfIGlzIHVuYWxpZ25lZCwgd2hpY2ggaGFzIHRo
ZSBzYW1lIGVmZmVjdCwKLS8vIHNvIHdlIGRvIHRoYXQuCi0KLW5hbWVzcGFjZSBhYnNsIHsKLW5h
bWVzcGFjZSBiYXNlX2ludGVybmFsIHsKLQotc3RydWN0IFVuYWxpZ25lZDE2U3RydWN0IHsKLSAg
dWludDE2X3QgdmFsdWU7Ci0gIHVpbnQ4X3QgZHVtbXk7ICAvLyBUbyBtYWtlIHRoZSBzaXplIG5v
bi1wb3dlci1vZi10d28uCi19IEFCU0xfQVRUUklCVVRFX1BBQ0tFRDsKLQotc3RydWN0IFVuYWxp
Z25lZDMyU3RydWN0IHsKLSAgdWludDMyX3QgdmFsdWU7Ci0gIHVpbnQ4X3QgZHVtbXk7ICAvLyBU
byBtYWtlIHRoZSBzaXplIG5vbi1wb3dlci1vZi10d28uCi19IEFCU0xfQVRUUklCVVRFX1BBQ0tF
RDsKLQotfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSBhYnNs
Ci0KLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9wKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgocmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OmFi
c2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZDE2U3RydWN0ICo+KF9wKSkgXAotICAgICAgIC0+
dmFsdWUpCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihfcCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
OjphYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWQzMlN0cnVjdCAqPihfcCkpIFwKLSAgICAg
ICAtPnZhbHVlKQotCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMTYoX3As
IF92YWwpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChyZWludGVycHJldF9jYXN0PCA6OmFi
c2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZDE2U3RydWN0ICo+KF9wKSkgXAotICAgICAgIC0+
dmFsdWUgPSAoX3ZhbCkpCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMzIo
X3AsIF92YWwpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChyZWludGVycHJldF9jYXN0PCA6
OmFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZDMyU3RydWN0ICo+KF9wKSkgXAotICAgICAg
IC0+dmFsdWUgPSAoX3ZhbCkpCi0KLW5hbWVzcGFjZSBhYnNsIHsKLW5hbWVzcGFjZSBiYXNlX2lu
dGVybmFsIHsKLQotaW5saW5lIHVpbnQ2NF90IFVuYWxpZ25lZExvYWQ2NChjb25zdCB2b2lkICpw
KSB7Ci0gIHVpbnQ2NF90IHQ7Ci0gIG1lbWNweSgmdCwgcCwgc2l6ZW9mIHQpOwotICByZXR1cm4g
dDsKLX0KLQotaW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmU2NCh2b2lkICpwLCB1aW50NjRfdCB2
KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYpOyB9Ci0KLX0gIC8vIG5hbWVzcGFjZSBiYXNlX2lu
dGVybmFsCi19ICAvLyBuYW1lc3BhY2UgYWJzbAotCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5B
TElHTkVEX0xPQUQ2NChfcCkgXAotICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkTG9h
ZDY0KF9wKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkU2NChfcCwgX3Zh
bCkgXAotICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmU2NChfcCwgX3ZhbCkp
Ci0KICNlbHNlCiAKLS8vIEFCU0xfSU5URVJOQUxfTkVFRF9BTElHTkVEX0xPQURTIGlzIGRlZmlu
ZWQgd2hlbiB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybQotLy8gZG9lc24ndCBzdXBwb3J0IHVuYWxp
Z25lZCBhY2Nlc3MuCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfTkVFRF9BTElHTkVEX0xPQURTCi0K
LS8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBk
b24ndCBzdXBwb3J0Ci0vLyB1bmFsaWduZWQgbG9hZHMgYW5kIHN0b3Jlcy4KLQogbmFtZXNwYWNl
IGFic2wgewogbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
dW5zY2FsZWRjeWNsZWNsb2NrLmNjCmluZGV4IGExMmQ2OGJkMTBhLi41OTM3NjJiYzhiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suY2MKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvdW5zY2FsZWRjeWNsZWNsb2NrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3lj
bGVjbG9jay5oCmluZGV4IDA0OWYxY2FjZTk4Li4yZDM2MWU5NjI4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC01OSw3ICs1OSw4IEBACiAvLyBDeWNsZUNsb2NrIHRoYXQgcnVucyBh
dCBhdGxlYXN0IDEgTUh6LiBXZSd2ZSBmb3VuZCBzb21lIEFuZHJvaWQKIC8vIEFSTTY0IGRldmlj
ZXMgd2hlcmUgdGhpcyBpcyBub3QgdGhlIGNhc2UsIHNvIHdlIGRpc2FibGUgaXQgYnkKIC8vIGRl
ZmF1bHQgb24gQW5kcm9pZCBBUk02NC4KLSNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSB8
fCBUQVJHRVRfT1NfSVBIT05FIHx8IFwKKyNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSB8
fCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRlZmluZWQoVEFSR0VUX09TX0lQSE9ORSkg
JiYgVEFSR0VUX09TX0lQSE9ORSkgfHwgXAogICAgIChkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiBk
ZWZpbmVkKF9fYWFyY2g2NF9fKSkKICNkZWZpbmUgQUJTTF9VU0VfVU5TQ0FMRURfQ1lDTEVDTE9D
S19ERUZBVUxUIDAKICNlbHNlCkBAIC04Myw2ICs4NCw3IEBACiAgICAgICBkZWZpbmVkKF9NX0lY
ODYpIHx8IGRlZmluZWQoX01fWDY0KSkKICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTlNDQUxFRF9D
WUNMRUNMT0NLX0ZSRVFVRU5DWV9JU19DUFVfRlJFUVVFTkNZCiAjZW5kaWYKKwogbmFtZXNwYWNl
IGFic2wgewogbmFtZXNwYWNlIHRpbWVfaW50ZXJuYWwgewogY2xhc3MgVW5zY2FsZWRDeWNsZUNs
b2NrV3JhcHBlckZvckdldEN1cnJlbnRUaW1lOwpAQCAtMTE0LDYgKzExNiw3IEBAIGNsYXNzIFVu
c2NhbGVkQ3ljbGVDbG9jayB7CiAKIH0gIC8vIG5hbWVzcGFjZSBiYXNlX2ludGVybmFsCiB9ICAv
LyBuYW1lc3BhY2UgYWJzbAorCiAjZW5kaWYgIC8vIEFCU0xfVVNFX1VOU0NBTEVEX0NZQ0xFQ0xP
Q0sKIAogI2VuZGlmICAvLyBBQlNMX0JBU0VfSU5URVJOQUxfVU5TQ0FMRURDWUNMRUNMT0NLX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludm9rZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnZv
a2VfdGVzdC5jYwppbmRleCA0NjZiZjExNGE1OC4uOTA3NDQ0M2IzY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW52b2tlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnZva2VfdGVzdC5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNzAsNiArNzAsMTAg
QEAgc3RydWN0IE92ZXJsb2FkZWRGdW5jdG9yIHsKIHN0cnVjdCBDbGFzcyB7CiAgIGludCBNZXRo
b2QoaW50IGEsIGludCBiKSB7IHJldHVybiBhIC0gYjsgfQogICBpbnQgQ29uc3RNZXRob2QoaW50
IGEsIGludCBiKSBjb25zdCB7IHJldHVybiBhIC0gYjsgfQorICBpbnQgUmVmTWV0aG9kKGludCBh
LCBpbnQgYikgJiB7IHJldHVybiBhIC0gYjsgfQorICBpbnQgUmVmUmVmTWV0aG9kKGludCBhLCBp
bnQgYikgJiYgeyByZXR1cm4gYSAtIGI7IH0KKyAgaW50IE5vRXhjZXB0TWV0aG9kKGludCBhLCBp
bnQgYikgbm9leGNlcHQgeyByZXR1cm4gYSAtIGI7IH0KKyAgaW50IFZvbGF0aWxlTWV0aG9kKGlu
dCBhLCBpbnQgYikgdm9sYXRpbGUgeyByZXR1cm4gYSAtIGI7IH0KIAogICBpbnQgbWVtYmVyOwog
fTsKQEAgLTE1MSw4ICsxNTUsMTggQEAgVEVTVChJbnZva2VUZXN0LCBSZWZlcmVuY2VXcmFwcGVy
KSB7CiBURVNUKEludm9rZVRlc3QsIE1lbWJlckZ1bmN0aW9uKSB7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxDbGFzcz4gcChuZXcgQ2xhc3MpOwogICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgQ2xhc3M+IGNw
KG5ldyBDbGFzcyk7CisgIHN0ZDo6dW5pcXVlX3B0cjx2b2xhdGlsZSBDbGFzcz4gdnAobmV3IENs
YXNzKTsKKwogICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6TWV0aG9kLCBwLCAzLCAyKSk7
CiAgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNzOjpNZXRob2QsIHAuZ2V0KCksIDMsIDIpKTsK
KyAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6Ok1ldGhvZCwgKnAsIDMsIDIpKTsKKyAgRVhQ
RUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OlJlZk1ldGhvZCwgcCwgMywgMikpOworICBFWFBFQ1Rf
RVEoMSwgSW52b2tlKCZDbGFzczo6UmVmTWV0aG9kLCBwLmdldCgpLCAzLCAyKSk7CisgIEVYUEVD
VF9FUSgxLCBJbnZva2UoJkNsYXNzOjpSZWZNZXRob2QsICpwLCAzLCAyKSk7CisgIEVYUEVDVF9F
USgxLCBJbnZva2UoJkNsYXNzOjpSZWZSZWZNZXRob2QsIHN0ZDo6bW92ZSgqcCksIDMsIDIpKTsg
IC8vIE5PTElOVAorICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6Tm9FeGNlcHRNZXRob2Qs
IHAsIDMsIDIpKTsKKyAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6Ok5vRXhjZXB0TWV0aG9k
LCBwLmdldCgpLCAzLCAyKSk7CisgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNzOjpOb0V4Y2Vw
dE1ldGhvZCwgKnAsIDMsIDIpKTsKIAogICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6Q29u
c3RNZXRob2QsIHAsIDMsIDIpKTsKICAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OkNvbnN0
TWV0aG9kLCBwLmdldCgpLCAzLCAyKSk7CkBAIC0xNjIsNiArMTc2LDEzIEBAIFRFU1QoSW52b2tl
VGVzdCwgTWVtYmVyRnVuY3Rpb24pIHsKICAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OkNv
bnN0TWV0aG9kLCBjcC5nZXQoKSwgMywgMikpOwogICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFz
czo6Q29uc3RNZXRob2QsICpjcCwgMywgMikpOwogCisgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNs
YXNzOjpWb2xhdGlsZU1ldGhvZCwgcCwgMywgMikpOworICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZD
bGFzczo6Vm9sYXRpbGVNZXRob2QsIHAuZ2V0KCksIDMsIDIpKTsKKyAgRVhQRUNUX0VRKDEsIElu
dm9rZSgmQ2xhc3M6OlZvbGF0aWxlTWV0aG9kLCAqcCwgMywgMikpOworICBFWFBFQ1RfRVEoMSwg
SW52b2tlKCZDbGFzczo6Vm9sYXRpbGVNZXRob2QsIHZwLCAzLCAyKSk7CisgIEVYUEVDVF9FUSgx
LCBJbnZva2UoJkNsYXNzOjpWb2xhdGlsZU1ldGhvZCwgdnAuZ2V0KCksIDMsIDIpKTsKKyAgRVhQ
RUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OlZvbGF0aWxlTWV0aG9kLCAqdnAsIDMsIDIpKTsKKwog
ICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6TWV0aG9kLCBtYWtlX3VuaXF1ZTxDbGFzcz4o
KSwgMywgMikpOwogICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6Q29uc3RNZXRob2QsIG1h
a2VfdW5pcXVlPENsYXNzPigpLCAzLCAyKSk7CiAgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNz
OjpDb25zdE1ldGhvZCwgbWFrZV91bmlxdWU8Y29uc3QgQ2xhc3M+KCksIDMsIDIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9sb2dfc2V2ZXJpdHku
Y2MKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwu
Y2MKcmVuYW1lIHRvIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbG9nX3NldmVyaXR5LmNjCmluZGV4IGVmMjcyOTA0MTk5
Li4wMmEyYTQ4NTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9sb2dfc2V2ZXJpdHkuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTEyLDEzICsxMiwxNCBAQAogLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFs
LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oIgogCi0jaWZuZGVmIEFCU0xf
SEFWRV9TVERfT1BUSU9OQUwKLW5hbWVzcGFjZSBhYnNsIHsKKyNpbmNsdWRlIDxvc3RyZWFtPgog
Ci1udWxsb3B0X3Q6OmluaXRfdCBudWxsb3B0X3Q6OmluaXQ7Ci1leHRlcm4gY29uc3QgbnVsbG9w
dF90IG51bGxvcHR7bnVsbG9wdF90Ojppbml0fTsKK25hbWVzcGFjZSBhYnNsIHsKIAorc3RkOjpv
c3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGFic2w6OkxvZ1NldmVyaXR5IHMp
IHsKKyAgaWYgKHMgPT0gYWJzbDo6Tm9ybWFsaXplTG9nU2V2ZXJpdHkocykpIHJldHVybiBvcyA8
PCBhYnNsOjpMb2dTZXZlcml0eU5hbWUocyk7CisgIHJldHVybiBvcyA8PCAiYWJzbDo6TG9nU2V2
ZXJpdHkoIiA8PCBzdGF0aWNfY2FzdDxpbnQ+KHMpIDw8ICIpIjsKK30KIH0gIC8vIG5hbWVzcGFj
ZSBhYnNsCi0jZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfT1BUSU9OQUwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvbG9nX3NldmVyaXR5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oCmluZGV4
IDU3NzBkMzYyOWU3Li41YTFkNTU3NmNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9sb2dfc2V2
ZXJpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oCkBAIC00LDE5ICs0LDE5IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIC8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0vLwogCiAjaWZuZGVmIEFC
U0xfQkFTRV9JTlRFUk5BTF9MT0dfU0VWRVJJVFlfSF8KICNkZWZpbmUgQUJTTF9CQVNFX0lOVEVS
TkFMX0xPR19TRVZFUklUWV9IXwogCiAjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8b3N0cmVh
bT4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCiAKQEAgLTYyLDYgKzYyLDEw
IEBAIGNvbnN0ZXhwciBhYnNsOjpMb2dTZXZlcml0eSBOb3JtYWxpemVMb2dTZXZlcml0eShpbnQg
cykgewogICByZXR1cm4gTm9ybWFsaXplTG9nU2V2ZXJpdHkoc3RhdGljX2Nhc3Q8YWJzbDo6TG9n
U2V2ZXJpdHk+KHMpKTsKIH0KIAorLy8gVGhlIGV4YWN0IHJlcHJlc2VudGF0aW9uIG9mIGEgc3Ry
ZWFtZWQgYGFic2w6OkxvZ1NldmVyaXR5YCBpcyBkZWxpYmVyYXRlbHkKKy8vIHVuc3BlY2lmaWVk
OyBkbyBub3QgcmVseSBvbiBpdC4KK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJl
YW0mIG9zLCBhYnNsOjpMb2dTZXZlcml0eSBzKTsKKwogfSAgLy8gbmFtZXNwYWNlIGFic2wKIAog
I2VuZGlmICAvLyBBQlNMX0JBU0VfSU5URVJOQUxfTE9HX1NFVkVSSVRZX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9sb2dfc2V2ZXJp
dHlfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWRlMmQx
MDFiZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eV90ZXN0LmNj
CkBAIC0wLDAgKzEsNDMgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oIgorCisjaW5jbHVkZSA8c3N0
cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7Cit1c2luZyB0ZXN0aW5nOjpFcTsK
Kworc3RkOjpzdHJpbmcgU3RyZWFtSGVscGVyKGFic2w6OkxvZ1NldmVyaXR5IHZhbHVlKSB7Cisg
IHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07CisgIHN0cmVhbSA8PCB2YWx1ZTsKKyAgcmV0dXJu
IHN0cmVhbS5zdHIoKTsKK30KKworVEVTVChTdHJlYW1UZXN0LCBXb3JrcykgeworICBFWFBFQ1Rf
VEhBVChTdHJlYW1IZWxwZXIoc3RhdGljX2Nhc3Q8YWJzbDo6TG9nU2V2ZXJpdHk+KC0xMDApKSwK
KyAgICAgICAgICAgICAgRXEoImFic2w6OkxvZ1NldmVyaXR5KC0xMDApIikpOworICBFWFBFQ1Rf
VEhBVChTdHJlYW1IZWxwZXIoYWJzbDo6TG9nU2V2ZXJpdHk6OmtJbmZvKSwgRXEoIklORk8iKSk7
CisgIEVYUEVDVF9USEFUKFN0cmVhbUhlbHBlcihhYnNsOjpMb2dTZXZlcml0eTo6a1dhcm5pbmcp
LCBFcSgiV0FSTklORyIpKTsKKyAgRVhQRUNUX1RIQVQoU3RyZWFtSGVscGVyKGFic2w6OkxvZ1Nl
dmVyaXR5OjprRXJyb3IpLCBFcSgiRVJST1IiKSk7CisgIEVYUEVDVF9USEFUKFN0cmVhbUhlbHBl
cihhYnNsOjpMb2dTZXZlcml0eTo6a0ZhdGFsKSwgRXEoIkZBVEFMIikpOworICBFWFBFQ1RfVEhB
VChTdHJlYW1IZWxwZXIoc3RhdGljX2Nhc3Q8YWJzbDo6TG9nU2V2ZXJpdHk+KDQpKSwKKyAgICAg
ICAgICAgICAgRXEoImFic2w6OkxvZ1NldmVyaXR5KDQpIikpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbWFjcm9zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL21hY3Jvcy5o
CmluZGV4IGNhM2Q1ZWRiNjUzLi42MDZhOTBhYzBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9t
YWNyb3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL21hY3Jvcy5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yNCw3ICsyNCw2IEBACiAvLyBUaGlzIGNvZGUgaXMgY29t
cGlsZWQgZGlyZWN0bHkgb24gbWFueSBwbGF0Zm9ybXMsIGluY2x1ZGluZyBjbGllbnQKIC8vIHBs
YXRmb3JtcyBsaWtlIFdpbmRvd3MsIE1hYywgYW5kIGVtYmVkZGVkIHN5c3RlbXMuICBCZWZvcmUg
bWFraW5nCiAvLyBhbnkgY2hhbmdlcyBoZXJlLCBtYWtlIHN1cmUgdGhhdCB5b3UncmUgbm90IGJy
ZWFraW5nIGFueSBwbGF0Zm9ybXMuCi0vLwogCiAjaWZuZGVmIEFCU0xfQkFTRV9NQUNST1NfSF8K
ICNkZWZpbmUgQUJTTF9CQVNFX01BQ1JPU19IXwpAQCAtMzIsNiArMzEsNyBAQAogI2luY2x1ZGUg
PGNhc3NlcnQ+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KIAorI2luY2x1ZGUgImFic2wvYmFzZS9vcHRp
bWl6YXRpb24uaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIgogCiAvLyBBQlNMX0FSUkFZ
U0laRSgpCkBAIC0xOTIsMTEgKzE5MiwyMiBAQCBlbnVtIExpbmtlckluaXRpYWxpemVkIHsKIC8v
IFRoaXMgbWFjcm8gaXMgaW5zcGlyZWQgYnkKIC8vIGh0dHBzOi8vYWtyemVtaTEud29yZHByZXNz
LmNvbS8yMDE3LzA1LzE4L2Fzc2VydHMtaW4tY29uc3RleHByLWZ1bmN0aW9ucy8KICNpZiBkZWZp
bmVkKE5ERUJVRykKLSNkZWZpbmUgQUJTTF9BU1NFUlQoZXhwcikgKGZhbHNlID8gKHZvaWQpKGV4
cHIpIDogKHZvaWQpMCkKKyNkZWZpbmUgQUJTTF9BU1NFUlQoZXhwcikgXAorICAoZmFsc2UgPyBz
dGF0aWNfY2FzdDx2b2lkPihleHByKSA6IHN0YXRpY19jYXN0PHZvaWQ+KDApKQogI2Vsc2UKLSNk
ZWZpbmUgQUJTTF9BU1NFUlQoZXhwcikgICAgICAgICAgICAgIFwKLSAgKEFCU0xfUFJFRElDVF9U
UlVFKChleHByKSkgPyAodm9pZCkwIFwKKyNkZWZpbmUgQUJTTF9BU1NFUlQoZXhwcikgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgIChBQlNMX1BSRURJQ1RfVFJVRSgoZXhwcikpID8gc3Rh
dGljX2Nhc3Q8dm9pZD4oMCkgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdIHsg
YXNzZXJ0KGZhbHNlICYmICNleHByKTsgfSgpKSAgLy8gTk9MSU5UCiAjZW5kaWYKIAorI2lmZGVm
IEFCU0xfSEFWRV9FWENFUFRJT05TCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVFJZIHRyeQorI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX0NBVENIX0FOWSBjYXRjaCAoLi4uKQorI2RlZmluZSBBQlNMX0lO
VEVSTkFMX1JFVEhST1cgZG8geyB0aHJvdzsgfSB3aGlsZSAoZmFsc2UpCisjZWxzZSAgLy8gQUJT
TF9IQVZFX0VYQ0VQVElPTlMKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9UUlkgaWYgKHRydWUpCisj
ZGVmaW5lIEFCU0xfSU5URVJOQUxfQ0FUQ0hfQU5ZIGVsc2UgaWYgKGZhbHNlKQorI2RlZmluZSBB
QlNMX0lOVEVSTkFMX1JFVEhST1cgZG8ge30gd2hpbGUgKGZhbHNlKQorI2VuZGlmICAvLyBBQlNM
X0hBVkVfRVhDRVBUSU9OUworCiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9NQUNST1NfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL29wdGltaXphdGlv
bi5oCmluZGV4IDJmZGRmYzgwMGMxLi4wZGNiZWYzMmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9vcHRpbWl6YXRpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL29wdGltaXphdGlvbi5oCkBAIC01LDcg
KzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMTEsOSArMTExLDkgQEAKIC8v
IFNlZSBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvd2cyMS9kb2NzL3BhcGVycy8y
MDE2L3AwMTU0cjEuaHRtbAogLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAvLwotLy8gT24gc29t
ZSBjb21waWxlcnMsIGBBQlNMX0NBQ0hFTElORV9BTElHTkVEYCBleHBhbmRzIHRvCi0vLyBgX19h
dHRyaWJ1dGVfXygoYWxpZ25lZChBQlNMX0NBQ0hFTElORV9TSVpFKSkpYC4gRm9yIGNvbXBpbGVy
cyB3aGVyZSB0aGlzIGlzCi0vLyBub3Qga25vd24gdG8gd29yaywgdGhlIG1hY3JvIGV4cGFuZHMg
dG8gbm90aGluZy4KKy8vIE9uIHNvbWUgY29tcGlsZXJzLCBgQUJTTF9DQUNIRUxJTkVfQUxJR05F
RGAgZXhwYW5kcyB0byBhbiBgX19hdHRyaWJ1dGVfX2AKKy8vIG9yIGBfX2RlY2xzcGVjYCBhdHRy
aWJ1dGUuIEZvciBjb21waWxlcnMgd2hlcmUgdGhpcyBpcyBub3Qga25vd24gdG8gd29yaywKKy8v
IHRoZSBtYWNybyBleHBhbmRzIHRvIG5vdGhpbmcuCiAvLwogLy8gTm8gZnVydGhlciBndWFyYW50
ZWVzIGFyZSBtYWRlIGhlcmUuIFRoZSByZXN1bHQgb2YgYXBwbHlpbmcgdGhlIG1hY3JvCiAvLyB0
byB2YXJpYWJsZXMgYW5kIHR5cGVzIGlzIGFsd2F5cyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLgpA
QCAtMTIyLDYgKzEyMiwxNCBAQAogLy8gb2YgY2F1c2luZyBidWdzIHRoYXQgYXJlIGRpZmZpY3Vs
dCB0byBkaWFnbm9zZSwgY3Jhc2gsIGV0Yy4gSXQgZG9lcyBub3QKIC8vIG9mIGl0c2VsZiBndWFy
YW50ZWUgdGhhdCBvYmplY3RzIGFyZSBhbGlnbmVkIHRvIGEgY2FjaGUgbGluZS4KIC8vCisvLyBO
T1RFOiBTb21lIGNvbXBpbGVycyBhcmUgcGlja3kgYWJvdXQgdGhlIGxvY2F0aW9ucyBvZiBhbm5v
dGF0aW9ucyBzdWNoIGFzCisvLyB0aGlzIGF0dHJpYnV0ZSwgc28gcHJlZmVyIHRvIHB1dCBpdCBh
dCB0aGUgYmVnaW5uaW5nIG9mIHlvdXIgZGVjbGFyYXRpb24uCisvLyBGb3IgZXhhbXBsZSwKKy8v
CisvLyAgIEFCU0xfQ0FDSEVMSU5FX0FMSUdORUQgc3RhdGljIEZvbyogZm9vID0gLi4uCisvLwor
Ly8gICBjbGFzcyBBQlNMX0NBQ0hFTElORV9BTElHTkVEIEJhciB7IC4uLgorLy8KIC8vIFJlY29t
bWVuZGF0aW9uczoKIC8vCiAvLyAxKSBDb25zdWx0IGNvbXBpbGVyIGRvY3VtZW50YXRpb247IHRo
aXMgY29tbWVudCBpcyBub3Qga2VwdCBpbiBzeW5jIGFzCkBAIC0xMzEsOCArMTM5LDEwIEBACiAv
LyAzKSBQcmVmZXIgYXBwbHlpbmcgdGhpcyBhdHRyaWJ1dGUgdG8gaW5kaXZpZHVhbCB2YXJpYWJs
ZXMuIEF2b2lkCiAvLyAgICBhcHBseWluZyBpdCB0byB0eXBlcy4gVGhpcyB0ZW5kcyB0byBsb2Nh
bGl6ZSB0aGUgZWZmZWN0LgogI2RlZmluZSBBQlNMX0NBQ0hFTElORV9BTElHTkVEIF9fYXR0cmli
dXRlX18oKGFsaWduZWQoQUJTTF9DQUNIRUxJTkVfU0laRSkpKQotCi0jZWxzZSAgLy8gbm90IEdD
QworI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgQUJTTF9DQUNIRUxJTkVfU0laRSA2
NAorI2RlZmluZSBBQlNMX0NBQ0hFTElORV9BTElHTkVEIF9fZGVjbHNwZWMoYWxpZ24oQUJTTF9D
QUNIRUxJTkVfU0laRSkpCisjZWxzZQogI2RlZmluZSBBQlNMX0NBQ0hFTElORV9TSVpFIDY0CiAj
ZGVmaW5lIEFCU0xfQ0FDSEVMSU5FX0FMSUdORUQKICNlbmRpZgpAQCAtMTUzLDYgKzE2MywxMiBA
QAogLy8gQ29tcGlsZXJzIGNhbiB1c2UgdGhlIGluZm9ybWF0aW9uIHRoYXQgYSBjZXJ0YWluIGJy
YW5jaCBpcyBub3QgbGlrZWx5IHRvIGJlCiAvLyB0YWtlbiAoZm9yIGluc3RhbmNlLCBhIENIRUNL
IGZhaWx1cmUpIHRvIG9wdGltaXplIGZvciB0aGUgY29tbW9uIGNhc2UgaW4KIC8vIHRoZSBhYnNl
bmNlIG9mIGJldHRlciBpbmZvcm1hdGlvbiAoaWUuIGNvbXBpbGluZyBnY2Mgd2l0aCBgLWZwcm9m
aWxlLWFyY3NgKS4KKy8vCisvLyBSZWNvbW1lbmRhdGlvbjogTW9kZXJuIENQVXMgZHluYW1pY2Fs
bHkgcHJlZGljdCBicmFuY2ggZXhlY3V0aW9uIHBhdGhzLAorLy8gdHlwaWNhbGx5IHdpdGggYWNj
dXJhY3kgZ3JlYXRlciB0aGFuIDk3JS4gQXMgYSByZXN1bHQsIGFubm90YXRpbmcgZXZlcnkKKy8v
IGJyYW5jaCBpbiBhIGNvZGViYXNlIGlzIGxpa2VseSBjb3VudGVycHJvZHVjdGl2ZTsgaG93ZXZl
ciwgYW5ub3RhdGluZworLy8gc3BlY2lmaWMgYnJhbmNoZXMgdGhhdCBhcmUgYm90aCBob3QgYW5k
IGNvbnNpc3RlbnRseSBtaXNwcmVkaWN0ZWQgaXMgbGlrZWx5CisvLyB0byB5aWVsZCBwZXJmb3Jt
YW5jZSBpbXByb3ZlbWVudHMuCiAjaWYgQUJTTF9IQVZFX0JVSUxUSU4oX19idWlsdGluX2V4cGVj
dCkgfHwgXAogICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pKQog
I2RlZmluZSBBQlNMX1BSRURJQ1RfRkFMU0UoeCkgKF9fYnVpbHRpbl9leHBlY3QoeCwgMCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3BvbGljeV9jaGVja3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvcG9saWN5
X2NoZWNrcy5oCmluZGV4IDBhMDdmYzAzNWUxLi42OTlmYjFhMmUwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9wb2xpY3lfY2hlY2tzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9wb2xpY3lfY2hlY2tzLmgK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9wb3J0LmgKaW5kZXggMWM2NzI1N2ZkOGYuLjZj
MjgwNjhkNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3BvcnQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L3BvcnQuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9yYXdfbG9nZ2luZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9yYXdfbG9n
Z2luZ190ZXN0LmNjCmluZGV4IGIyMWNmNjUxNzU4Li4zZDMwYmQzODYxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9yYXdfbG9nZ2luZ190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvcmF3X2xvZ2dp
bmdfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9zcGlubG9ja190ZXN0X2NvbW1vbi5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
c3BpbmxvY2tfdGVzdF9jb21tb24uY2MKaW5kZXggMWI1MDg4NDg2MTEuLjg0ZmM0ZGFjMGJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3NwaW5sb2NrX3Rlc3RfY29tbW9uLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2Uvc3BpbmxvY2tfdGVzdF9jb21tb24uY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTU0LDYgKzU0LDcgQEAgbmFtZXNwYWNlIHsKIAogc3RhdGljIGNv
bnN0ZXhwciBpbnQga0FycmF5TGVuZ3RoID0gMTA7CiBzdGF0aWMgdWludDMyX3QgdmFsdWVzW2tB
cnJheUxlbmd0aF07CisKIHN0YXRpYyBTcGluTG9jayBzdGF0aWNfc3BpbmxvY2soYmFzZV9pbnRl
cm5hbDo6a0xpbmtlckluaXRpYWxpemVkKTsKIHN0YXRpYyBTcGluTG9jayBzdGF0aWNfY29vcGVy
YXRpdmVfc3BpbmxvY2soCiAgICAgYmFzZV9pbnRlcm5hbDo6a0xpbmtlckluaXRpYWxpemVkLApA
QCAtNjEsNyArNjIsNiBAQCBzdGF0aWMgU3BpbkxvY2sgc3RhdGljX2Nvb3BlcmF0aXZlX3NwaW5s
b2NrKAogc3RhdGljIFNwaW5Mb2NrIHN0YXRpY19ub25jb29wZXJhdGl2ZV9zcGlubG9jaygKICAg
ICBiYXNlX2ludGVybmFsOjprTGlua2VySW5pdGlhbGl6ZWQsIGJhc2VfaW50ZXJuYWw6OlNDSEVE
VUxFX0tFUk5FTF9PTkxZKTsKIAotCiAvLyBTaW1wbGUgaW50ZWdlciBoYXNoIGZ1bmN0aW9uIGJh
c2VkIG9uIHRoZSBwdWJsaWMgZG9tYWluIGxvb2t1cDIgaGFzaC4KIC8vIGh0dHA6Ly9idXJ0bGVi
dXJ0bGUubmV0L2JvYi9jL2xvb2t1cDIuYwogc3RhdGljIHVpbnQzMl90IEhhc2gzMih1aW50MzJf
dCBhLCB1aW50MzJfdCBjKSB7CkBAIC0xNTUsNyArMTU1LDggQEAgVEVTVChTcGluTG9jaywgV2Fp
dEN5Y2xlc0VuY29kaW5nKSB7CiAKICAgLy8gVGVzdCBjb3JuZXIgY2FzZXMKICAgaW50NjRfdCBz
dGFydF90aW1lID0gdGltZV9kaXN0cmlidXRpb24oZ2VuZXJhdG9yKTsKLSAgRVhQRUNUX0VRKDAs
IFNwaW5Mb2NrVGVzdDo6RW5jb2RlV2FpdEN5Y2xlcyhzdGFydF90aW1lLCBzdGFydF90aW1lKSk7
CisgIEVYUEVDVF9FUShrU3BpbkxvY2tTbGVlcGVyLAorICAgICAgICAgICAgU3BpbkxvY2tUZXN0
OjpFbmNvZGVXYWl0Q3ljbGVzKHN0YXJ0X3RpbWUsIHN0YXJ0X3RpbWUpKTsKICAgRVhQRUNUX0VR
KDAsIFNwaW5Mb2NrVGVzdDo6RGVjb2RlV2FpdEN5Y2xlcygwKSk7CiAgIEVYUEVDVF9FUSgwLCBT
cGluTG9ja1Rlc3Q6OkRlY29kZVdhaXRDeWNsZXMoa0xvY2t3b3JkUmVzZXJ2ZWRNYXNrKSk7CiAg
IEVYUEVDVF9FUShrTWF4Q3ljbGVzICYgfmtQcm9maWxlVGltZXN0YW1wTWFzaywKQEAgLTE4OCw5
ICsxODksMTEgQEAgVEVTVChTcGluTG9jaywgV2FpdEN5Y2xlc0VuY29kaW5nKSB7CiAgICAgU3Bp
bkxvY2tUZXN0OjpEZWNvZGVXYWl0Q3ljbGVzKGJlZm9yZV9tYXhfdmFsdWUpOwogICBFWFBFQ1Rf
R1QoZXhwZWN0ZWRfbWF4X3ZhbHVlX2RlY29kZWQsIGJlZm9yZV9tYXhfdmFsdWVfZGVjb2RlZCk7
CiB9CisKIFRFU1QoU3BpbkxvY2tXaXRoVGhyZWFkcywgU3RhdGljU3BpbkxvY2spIHsKICAgVGhy
ZWFkZWRUZXN0KCZzdGF0aWNfc3BpbmxvY2spOwogfQorCiBURVNUKFNwaW5Mb2NrV2l0aFRocmVh
ZHMsIFN0YWNrU3BpbkxvY2spIHsKICAgU3BpbkxvY2sgc3BpbmxvY2s7CiAgIFRocmVhZGVkVGVz
dCgmc3BpbmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgKaW5kZXggZmJiMjc5N2I4MjUuLjkz
MjFjM2Y4NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIxLDcgKzIxLDYgQEAKIC8vIGNvZGUuIFRoZSBhbm5v
dGF0aW9ucyBjYW4gYWxzbyBoZWxwIHByb2dyYW0gYW5hbHlzaXMgdG9vbHMgdG8gaWRlbnRpZnkK
IC8vIHBvdGVudGlhbCB0aHJlYWQgc2FmZXR5IGlzc3Vlcy4KIC8vCi0vLwogLy8gVGhlc2UgYW5u
b3RhdGlvbnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIGNvbXBpbGVyIGF0dHJpYnV0ZXMuIFVzaW5n
IHRoZSBtYWNyb3MKIC8vIGRlZmluZWQgaGVyZSBpbnN0ZWFkIG9mIHJhdyBhdHRyaWJ1dGVzIGFs
bG93IGZvciBwb3J0YWJpbGl0eSBhbmQgZnV0dXJlCiAvLyBjb21wYXRpYmlsaXR5LgpAQCAtMzQs
MTkgKzMzLDIwIEBACiAKICNpZm5kZWYgQUJTTF9CQVNFX1RIUkVBRF9BTk5PVEFUSU9OU19IXwog
I2RlZmluZSBBQlNMX0JBU0VfVEhSRUFEX0FOTk9UQVRJT05TX0hfCisKICNpZiBkZWZpbmVkKF9f
Y2xhbmdfXykKLSNkZWZpbmUgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18oeCkgICBfX2F0
dHJpYnV0ZV9fKCh4KSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9B
VFRSSUJVVEUoeCkgX19hdHRyaWJ1dGVfXygoeCkpCiAjZWxzZQotI2RlZmluZSBUSFJFQURfQU5O
T1RBVElPTl9BVFRSSUJVVEVfXyh4KSAgIC8vIG5vLW9wCisjZGVmaW5lIEFCU0xfSU5URVJOQUxf
VEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKHgpICAvLyBuby1vcAogI2VuZGlmCiAKLS8vIEdV
QVJERURfQlkoKQorLy8gQUJTTF9HVUFSREVEX0JZKCkKIC8vCiAvLyBEb2N1bWVudHMgaWYgYSBz
aGFyZWQgZmllbGQgb3IgZ2xvYmFsIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHByb3RlY3RlZCBieSBh
Ci0vLyBtdXRleC4gR1VBUkRFRF9CWSgpIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IGEgcGFy
dGljdWxhciBtdXRleCB0aGF0CisvLyBtdXRleC4gQUJTTF9HVUFSREVEX0JZKCkgYWxsb3dzIHRo
ZSB1c2VyIHRvIHNwZWNpZnkgYSBwYXJ0aWN1bGFyIG11dGV4IHRoYXQKIC8vIHNob3VsZCBiZSBo
ZWxkIHdoZW4gYWNjZXNzaW5nIHRoZSBhbm5vdGF0ZWQgdmFyaWFibGUuCiAvLwotLy8gQWx0aG91
Z2ggdGhpcyBhbm5vdGF0aW9uIChhbmQgUFRfR1VBUkRFRF9CWSwgYmVsb3cpIGNhbm5vdCBiZSBh
cHBsaWVkIHRvCisvLyBBbHRob3VnaCB0aGlzIGFubm90YXRpb24gKGFuZCBBQlNMX1BUX0dVQVJE
RURfQlksIGJlbG93KSBjYW5ub3QgYmUgYXBwbGllZCB0bwogLy8gbG9jYWwgdmFyaWFibGVzLCBh
IGxvY2FsIHZhcmlhYmxlIGFuZCBpdHMgYXNzb2NpYXRlZCBtdXRleCBjYW4gb2Z0ZW4gYmUKIC8v
IGNvbWJpbmVkIGludG8gYSBzbWFsbCBjbGFzcyBvciBzdHJ1Y3QsIHRoZXJlYnkgYWxsb3dpbmcg
dGhlIGFubm90YXRpb24uCiAvLwpAQCAtNTQsMTIgKzU0LDEzIEBACiAvLwogLy8gICBjbGFzcyBG
b28gewogLy8gICAgIE11dGV4IG11XzsKLS8vICAgICBpbnQgcDFfIEdVQVJERURfQlkobXVfKTsK
Ky8vICAgICBpbnQgcDFfIEFCU0xfR1VBUkRFRF9CWShtdV8pOwogLy8gICAgIC4uLgogLy8gICB9
OwotI2RlZmluZSBHVUFSREVEX0JZKHgpIFRIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURV9fKGd1
YXJkZWRfYnkoeCkpCisjZGVmaW5lIEFCU0xfR1VBUkRFRF9CWSh4KSBcCisgIEFCU0xfSU5URVJO
QUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKGd1YXJkZWRfYnkoeCkpCiAKLS8vIFBUX0dV
QVJERURfQlkoKQorLy8gQUJTTF9QVF9HVUFSREVEX0JZKCkKIC8vCiAvLyBEb2N1bWVudHMgaWYg
dGhlIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IGEgcG9pbnRlciBzaG91bGQgYmUgZ3Vh
cmRlZAogLy8gYnkgYSBtdXRleCB3aGVuIGRlcmVmZXJlbmNpbmcgdGhlIHBvaW50ZXIuCkBAIC02
Nyw3ICs2OCw3IEBACiAvLyBFeGFtcGxlOgogLy8gICBjbGFzcyBGb28gewogLy8gICAgIE11dGV4
IG11XzsKLS8vICAgICBpbnQgKnAxXyBQVF9HVUFSREVEX0JZKG11Xyk7CisvLyAgICAgaW50ICpw
MV8gQUJTTF9QVF9HVUFSREVEX0JZKG11Xyk7CiAvLyAgICAgLi4uCiAvLyAgIH07CiAvLwpAQCAt
NzgsMTAzICs3OSwxMTUgQEAKIC8vCiAvLyAgIC8vIGBxX2AsIGd1YXJkZWQgYnkgYG11MV9gLCBw
b2ludHMgdG8gYSBzaGFyZWQgbWVtb3J5IGxvY2F0aW9uIHRoYXQgaXMKIC8vICAgLy8gZ3VhcmRl
ZCBieSBgbXUyX2A6Ci0vLyAgIGludCAqcV8gR1VBUkRFRF9CWShtdTFfKSBQVF9HVUFSREVEX0JZ
KG11Ml8pOwotI2RlZmluZSBQVF9HVUFSREVEX0JZKHgpIFRIUkVBRF9BTk5PVEFUSU9OX0FUVFJJ
QlVURV9fKHB0X2d1YXJkZWRfYnkoeCkpCisvLyAgIGludCAqcV8gQUJTTF9HVUFSREVEX0JZKG11
MV8pIEFCU0xfUFRfR1VBUkRFRF9CWShtdTJfKTsKKyNkZWZpbmUgQUJTTF9QVF9HVUFSREVEX0JZ
KHgpIFwKKyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUocHRfZ3Vh
cmRlZF9ieSh4KSkKIAotLy8gQUNRVUlSRURfQUZURVIoKSAvIEFDUVVJUkVEX0JFRk9SRSgpCisv
LyBBQlNMX0FDUVVJUkVEX0FGVEVSKCkgLyBBQlNMX0FDUVVJUkVEX0JFRk9SRSgpCiAvLwogLy8g
RG9jdW1lbnRzIHRoZSBhY3F1aXNpdGlvbiBvcmRlciBiZXR3ZWVuIGxvY2tzIHRoYXQgY2FuIGJl
IGhlbGQKIC8vIHNpbXVsdGFuZW91c2x5IGJ5IGEgdGhyZWFkLiBGb3IgYW55IHR3byBsb2NrcyB0
aGF0IG5lZWQgdG8gYmUgYW5ub3RhdGVkCiAvLyB0byBlc3RhYmxpc2ggYW4gYWNxdWlzaXRpb24g
b3JkZXIsIG9ubHkgb25lIG9mIHRoZW0gbmVlZHMgdGhlIGFubm90YXRpb24uCi0vLyAoaS5lLiBZ
b3UgZG9uJ3QgaGF2ZSB0byBhbm5vdGF0ZSBib3RoIGxvY2tzIHdpdGggYm90aCBBQ1FVSVJFRF9B
RlRFUgotLy8gYW5kIEFDUVVJUkVEX0JFRk9SRS4pCisvLyAoaS5lLiBZb3UgZG9uJ3QgaGF2ZSB0
byBhbm5vdGF0ZSBib3RoIGxvY2tzIHdpdGggYm90aCBBQlNMX0FDUVVJUkVEX0FGVEVSCisvLyBh
bmQgQUJTTF9BQ1FVSVJFRF9CRUZPUkUuKQogLy8KLS8vIEFzIHdpdGggR1VBUkRFRF9CWSwgdGhp
cyBpcyBvbmx5IGFwcGxpY2FibGUgdG8gbXV0ZXhlcyB0aGF0IGFyZSBzaGFyZWQKKy8vIEFzIHdp
dGggQUJTTF9HVUFSREVEX0JZLCB0aGlzIGlzIG9ubHkgYXBwbGljYWJsZSB0byBtdXRleGVzIHRo
YXQgYXJlIHNoYXJlZAogLy8gZmllbGRzIG9yIGdsb2JhbCB2YXJpYWJsZXMuCiAvLwogLy8gRXhh
bXBsZToKIC8vCiAvLyAgIE11dGV4IG0xXzsKLS8vICAgTXV0ZXggbTJfIEFDUVVJUkVEX0FGVEVS
KG0xXyk7Ci0jZGVmaW5lIEFDUVVJUkVEX0FGVEVSKC4uLikgXAotICBUSFJFQURfQU5OT1RBVElP
Tl9BVFRSSUJVVEVfXyhhY3F1aXJlZF9hZnRlcihfX1ZBX0FSR1NfXykpCisvLyAgIE11dGV4IG0y
XyBBQlNMX0FDUVVJUkVEX0FGVEVSKG0xXyk7CisjZGVmaW5lIEFCU0xfQUNRVUlSRURfQUZURVIo
Li4uKSBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKGFjcXVp
cmVkX2FmdGVyKF9fVkFfQVJHU19fKSkKIAotI2RlZmluZSBBQ1FVSVJFRF9CRUZPUkUoLi4uKSBc
Ci0gIFRIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURV9fKGFjcXVpcmVkX2JlZm9yZShfX1ZBX0FS
R1NfXykpCisjZGVmaW5lIEFCU0xfQUNRVUlSRURfQkVGT1JFKC4uLikgXAorICBBQlNMX0lOVEVS
TkFMX1RIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURShhY3F1aXJlZF9iZWZvcmUoX19WQV9BUkdT
X18pKQogCi0vLyBFWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoKSAvIFNIQVJFRF9MT0NLU19SRVFV
SVJFRCgpCisvLyBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRCgpIC8gQUJTTF9TSEFSRURf
TE9DS1NfUkVRVUlSRUQoKQogLy8KIC8vIERvY3VtZW50cyBhIGZ1bmN0aW9uIHRoYXQgZXhwZWN0
cyBhIG11dGV4IHRvIGJlIGhlbGQgcHJpb3IgdG8gZW50cnkuCiAvLyBUaGUgbXV0ZXggaXMgZXhw
ZWN0ZWQgdG8gYmUgaGVsZCBib3RoIG9uIGVudHJ5IHRvLCBhbmQgZXhpdCBmcm9tLCB0aGUKIC8v
IGZ1bmN0aW9uLgogLy8KKy8vIEFuIGV4Y2x1c2l2ZSBsb2NrIGFsbG93cyByZWFkLXdyaXRlIGFj
Y2VzcyB0byB0aGUgZ3VhcmRlZCBkYXRhIG1lbWJlcihzKSwgYW5kCisvLyBvbmx5IG9uZSB0aHJl
YWQgY2FuIGFjcXVpcmUgYSBsb2NrIGV4Y2x1c2l2ZWx5IGF0IGFueSBvbmUgdGltZS4gQSBzaGFy
ZWQgbG9jaworLy8gYWxsb3dzIHJlYWQtb25seSBhY2Nlc3MsIGFuZCBhbnkgbnVtYmVyIG9mIHRo
cmVhZHMgY2FuIGFjcXVpcmUgYSBzaGFyZWQgbG9jaworLy8gY29uY3VycmVudGx5LgorLy8KKy8v
IEdlbmVyYWxseSwgbm9uLWNvbnN0IG1ldGhvZHMgc2hvdWxkIGJlIGFubm90YXRlZCB3aXRoCisv
LyBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRCwgd2hpbGUgY29uc3QgbWV0aG9kcyBzaG91
bGQgYmUgYW5ub3RhdGVkIHdpdGgKKy8vIEFCU0xfU0hBUkVEX0xPQ0tTX1JFUVVJUkVELgorLy8K
IC8vIEV4YW1wbGU6CiAvLwogLy8gICBNdXRleCBtdTEsIG11MjsKLS8vICAgaW50IGEgR1VBUkRF
RF9CWShtdTEpOwotLy8gICBpbnQgYiBHVUFSREVEX0JZKG11Mik7Ci0vLwotLy8gICB2b2lkIGZv
bygpIEVYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChtdTEsIG11MikgeyAuLi4gfTsKLSNkZWZpbmUg
RVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKC4uLikgXAotICBUSFJFQURfQU5OT1RBVElPTl9BVFRS
SUJVVEVfXyhleGNsdXNpdmVfbG9ja3NfcmVxdWlyZWQoX19WQV9BUkdTX18pKQorLy8gICBpbnQg
YSBBQlNMX0dVQVJERURfQlkobXUxKTsKKy8vICAgaW50IGIgQUJTTF9HVUFSREVEX0JZKG11Mik7
CisvLworLy8gICB2b2lkIGZvbygpIEFCU0xfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKG11MSwg
bXUyKSB7IC4uLiB9CisvLyAgIHZvaWQgYmFyKCkgY29uc3QgQUJTTF9TSEFSRURfTE9DS1NfUkVR
VUlSRUQobXUxLCBtdTIpIHsgLi4uIH0KKyNkZWZpbmUgQUJTTF9FWENMVVNJVkVfTE9DS1NfUkVR
VUlSRUQoLi4uKSAgIFwKKyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJV
VEUoIFwKKyAgICAgIGV4Y2x1c2l2ZV9sb2Nrc19yZXF1aXJlZChfX1ZBX0FSR1NfXykpCiAKLSNk
ZWZpbmUgU0hBUkVEX0xPQ0tTX1JFUVVJUkVEKC4uLikgXAotICBUSFJFQURfQU5OT1RBVElPTl9B
VFRSSUJVVEVfXyhzaGFyZWRfbG9ja3NfcmVxdWlyZWQoX19WQV9BUkdTX18pKQorI2RlZmluZSBB
QlNMX1NIQVJFRF9MT0NLU19SRVFVSVJFRCguLi4pIFwKKyAgQUJTTF9JTlRFUk5BTF9USFJFQURf
QU5OT1RBVElPTl9BVFRSSUJVVEUoc2hhcmVkX2xvY2tzX3JlcXVpcmVkKF9fVkFfQVJHU19fKSkK
IAotLy8gTE9DS1NfRVhDTFVERUQoKQorLy8gQUJTTF9MT0NLU19FWENMVURFRCgpCiAvLwogLy8g
RG9jdW1lbnRzIHRoZSBsb2NrcyBhY3F1aXJlZCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24u
IFRoZXNlIGxvY2tzCiAvLyBjYW5ub3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlv
biAoYXMgQWJzZWlsJ3MgYE11dGV4YCBsb2NrcyBhcmUKIC8vIG5vbi1yZWVudHJhbnQpLgotI2Rl
ZmluZSBMT0NLU19FWENMVURFRCguLi4pIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRF
X18obG9ja3NfZXhjbHVkZWQoX19WQV9BUkdTX18pKQorI2RlZmluZSBBQlNMX0xPQ0tTX0VYQ0xV
REVEKC4uLikgXAorICBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURShs
b2Nrc19leGNsdWRlZChfX1ZBX0FSR1NfXykpCiAKLS8vIExPQ0tfUkVUVVJORUQoKQorLy8gQUJT
TF9MT0NLX1JFVFVSTkVEKCkKIC8vCiAvLyBEb2N1bWVudHMgYSBmdW5jdGlvbiB0aGF0IHJldHVy
bnMgYSBtdXRleCB3aXRob3V0IGFjcXVpcmluZyBpdC4gIEZvciBleGFtcGxlLAogLy8gYSBwdWJs
aWMgZ2V0dGVyIG1ldGhvZCB0aGF0IHJldHVybnMgYSBwb2ludGVyIHRvIGEgcHJpdmF0ZSBtdXRl
eCBzaG91bGQKLS8vIGJlIGFubm90YXRlZCB3aXRoIExPQ0tfUkVUVVJORUQuCi0jZGVmaW5lIExP
Q0tfUkVUVVJORUQoeCkgXAotICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhsb2NrX3Jl
dHVybmVkKHgpKQorLy8gYmUgYW5ub3RhdGVkIHdpdGggQUJTTF9MT0NLX1JFVFVSTkVELgorI2Rl
ZmluZSBBQlNMX0xPQ0tfUkVUVVJORUQoeCkgXAorICBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5P
VEFUSU9OX0FUVFJJQlVURShsb2NrX3JldHVybmVkKHgpKQogCi0vLyBMT0NLQUJMRQorLy8gQUJT
TF9MT0NLQUJMRQogLy8KIC8vIERvY3VtZW50cyBpZiBhIGNsYXNzL3R5cGUgaXMgYSBsb2NrYWJs
ZSB0eXBlIChzdWNoIGFzIHRoZSBgTXV0ZXhgIGNsYXNzKS4KLSNkZWZpbmUgTE9DS0FCTEUgXAot
ICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhsb2NrYWJsZSkKKyNkZWZpbmUgQUJTTF9M
T0NLQUJMRSBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURShsb2NrYWJs
ZSkKIAotLy8gU0NPUEVEX0xPQ0tBQkxFCisvLyBBQlNMX1NDT1BFRF9MT0NLQUJMRQogLy8KIC8v
IERvY3VtZW50cyBpZiBhIGNsYXNzIGRvZXMgUkFJSSBsb2NraW5nIChzdWNoIGFzIHRoZSBgTXV0
ZXhMb2NrYCBjbGFzcykuCiAvLyBUaGUgY29uc3RydWN0b3Igc2hvdWxkIHVzZSBgTE9DS19GVU5D
VElPTigpYCB0byBzcGVjaWZ5IHRoZSBtdXRleCB0aGF0IGlzCi0vLyBhY3F1aXJlZCwgYW5kIHRo
ZSBkZXN0cnVjdG9yIHNob3VsZCB1c2UgYFVOTE9DS19GVU5DVElPTigpYCB3aXRoIG5vCisvLyBh
Y3F1aXJlZCwgYW5kIHRoZSBkZXN0cnVjdG9yIHNob3VsZCB1c2UgYEFCU0xfVU5MT0NLX0ZVTkNU
SU9OKClgIHdpdGggbm8KIC8vIGFyZ3VtZW50czsgdGhlIGFuYWx5c2lzIHdpbGwgYXNzdW1lIHRo
YXQgdGhlIGRlc3RydWN0b3IgdW5sb2NrcyB3aGF0ZXZlciB0aGUKIC8vIGNvbnN0cnVjdG9yIGxv
Y2tlZC4KLSNkZWZpbmUgU0NPUEVEX0xPQ0tBQkxFIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRU
UklCVVRFX18oc2NvcGVkX2xvY2thYmxlKQorI2RlZmluZSBBQlNMX1NDT1BFRF9MT0NLQUJMRSBc
CisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKHNjb3BlZF9sb2Nr
YWJsZSkKIAotLy8gRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKQorLy8gQUJTTF9FWENMVVNJVkVf
TE9DS19GVU5DVElPTigpCiAvLwogLy8gRG9jdW1lbnRzIGZ1bmN0aW9ucyB0aGF0IGFjcXVpcmUg
YSBsb2NrIGluIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24sIGFuZCBkbwogLy8gbm90IHJlbGVhc2Ug
aXQuCi0jZGVmaW5lIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKC4uLikgXAotICBUSFJFQURfQU5O
T1RBVElPTl9BVFRSSUJVVEVfXyhleGNsdXNpdmVfbG9ja19mdW5jdGlvbihfX1ZBX0FSR1NfXykp
CisjZGVmaW5lIEFCU0xfRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oLi4uKSAgICBcCisgIEFCU0xf
SU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKCBcCisgICAgICBleGNsdXNpdmVf
bG9ja19mdW5jdGlvbihfX1ZBX0FSR1NfXykpCiAKLS8vIFNIQVJFRF9MT0NLX0ZVTkNUSU9OKCkK
Ky8vIEFCU0xfU0hBUkVEX0xPQ0tfRlVOQ1RJT04oKQogLy8KIC8vIERvY3VtZW50cyBmdW5jdGlv
bnMgdGhhdCBhY3F1aXJlIGEgc2hhcmVkIChyZWFkZXIpIGxvY2sgaW4gdGhlIGJvZHkgb2YgYQog
Ly8gZnVuY3Rpb24sIGFuZCBkbyBub3QgcmVsZWFzZSBpdC4KLSNkZWZpbmUgU0hBUkVEX0xPQ0tf
RlVOQ1RJT04oLi4uKSBcCi0gIFRIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURV9fKHNoYXJlZF9s
b2NrX2Z1bmN0aW9uKF9fVkFfQVJHU19fKSkKKyNkZWZpbmUgQUJTTF9TSEFSRURfTE9DS19GVU5D
VElPTiguLi4pIFwKKyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUo
c2hhcmVkX2xvY2tfZnVuY3Rpb24oX19WQV9BUkdTX18pKQogCi0vLyBVTkxPQ0tfRlVOQ1RJT04o
KQorLy8gQUJTTF9VTkxPQ0tfRlVOQ1RJT04oKQogLy8KIC8vIERvY3VtZW50cyBmdW5jdGlvbnMg
dGhhdCBleHBlY3QgYSBsb2NrIHRvIGJlIGhlbGQgb24gZW50cnkgdG8gdGhlIGZ1bmN0aW9uLAog
Ly8gYW5kIHJlbGVhc2UgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLgotI2RlZmluZSBV
TkxPQ0tfRlVOQ1RJT04oLi4uKSBcCi0gIFRIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURV9fKHVu
bG9ja19mdW5jdGlvbihfX1ZBX0FSR1NfXykpCisjZGVmaW5lIEFCU0xfVU5MT0NLX0ZVTkNUSU9O
KC4uLikgXAorICBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURSh1bmxv
Y2tfZnVuY3Rpb24oX19WQV9BUkdTX18pKQogCi0vLyBFWENMVVNJVkVfVFJZTE9DS19GVU5DVElP
TigpIC8gU0hBUkVEX1RSWUxPQ0tfRlVOQ1RJT04oKQorLy8gQUJTTF9FWENMVVNJVkVfVFJZTE9D
S19GVU5DVElPTigpIC8gQUJTTF9TSEFSRURfVFJZTE9DS19GVU5DVElPTigpCiAvLwogLy8gRG9j
dW1lbnRzIGZ1bmN0aW9ucyB0aGF0IHRyeSB0byBhY3F1aXJlIGEgbG9jaywgYW5kIHJldHVybiBz
dWNjZXNzIG9yIGZhaWx1cmUKIC8vIChvciBhIG5vbi1ib29sZWFuIHZhbHVlIHRoYXQgY2FuIGJl
IGludGVycHJldGVkIGFzIGEgYm9vbGVhbikuCkBAIC0xODIsNzYgKzE5NSw4MCBAQAogLy8gc3Vj
Y2Vzcywgb3IgYGZhbHNlYCBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGBmYWxzZWAgb24gc3Vj
Y2Vzcy4gVGhlIHNlY29uZAogLy8gYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBtdXRleCB0aGF0IGlz
IGxvY2tlZCBvbiBzdWNjZXNzLiBJZiB1bnNwZWNpZmllZCwgdGhpcwogLy8gbXV0ZXggaXMgYXNz
dW1lZCB0byBiZSBgdGhpc2AuCi0jZGVmaW5lIEVYQ0xVU0lWRV9UUllMT0NLX0ZVTkNUSU9OKC4u
LikgXAotICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhleGNsdXNpdmVfdHJ5bG9ja19m
dW5jdGlvbihfX1ZBX0FSR1NfXykpCisjZGVmaW5lIEFCU0xfRVhDTFVTSVZFX1RSWUxPQ0tfRlVO
Q1RJT04oLi4uKSBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRF
KCBcCisgICAgICBleGNsdXNpdmVfdHJ5bG9ja19mdW5jdGlvbihfX1ZBX0FSR1NfXykpCiAKLSNk
ZWZpbmUgU0hBUkVEX1RSWUxPQ0tfRlVOQ1RJT04oLi4uKSBcCi0gIFRIUkVBRF9BTk5PVEFUSU9O
X0FUVFJJQlVURV9fKHNoYXJlZF90cnlsb2NrX2Z1bmN0aW9uKF9fVkFfQVJHU19fKSkKKyNkZWZp
bmUgQUJTTF9TSEFSRURfVFJZTE9DS19GVU5DVElPTiguLi4pICAgIFwKKyAgQUJTTF9JTlRFUk5B
TF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUoIFwKKyAgICAgIHNoYXJlZF90cnlsb2NrX2Z1
bmN0aW9uKF9fVkFfQVJHU19fKSkKIAotLy8gQVNTRVJUX0VYQ0xVU0lWRV9MT0NLKCkgLyBBU1NF
UlRfU0hBUkVEX0xPQ0soKQorLy8gQUJTTF9BU1NFUlRfRVhDTFVTSVZFX0xPQ0soKSAvIEFCU0xf
QVNTRVJUX1NIQVJFRF9MT0NLKCkKIC8vCiAvLyBEb2N1bWVudHMgZnVuY3Rpb25zIHRoYXQgZHlu
YW1pY2FsbHkgY2hlY2sgdG8gc2VlIGlmIGEgbG9jayBpcyBoZWxkLCBhbmQgZmFpbAogLy8gaWYg
aXQgaXMgbm90IGhlbGQuCi0jZGVmaW5lIEFTU0VSVF9FWENMVVNJVkVfTE9DSyguLi4pIFwKLSAg
VEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18oYXNzZXJ0X2V4Y2x1c2l2ZV9sb2NrKF9fVkFf
QVJHU19fKSkKKyNkZWZpbmUgQUJTTF9BU1NFUlRfRVhDTFVTSVZFX0xPQ0soLi4uKSBcCisgIEFC
U0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKGFzc2VydF9leGNsdXNpdmVf
bG9jayhfX1ZBX0FSR1NfXykpCiAKLSNkZWZpbmUgQVNTRVJUX1NIQVJFRF9MT0NLKC4uLikgXAot
ICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhhc3NlcnRfc2hhcmVkX2xvY2soX19WQV9B
UkdTX18pKQorI2RlZmluZSBBQlNMX0FTU0VSVF9TSEFSRURfTE9DSyguLi4pIFwKKyAgQUJTTF9J
TlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUoYXNzZXJ0X3NoYXJlZF9sb2NrKF9f
VkFfQVJHU19fKSkKIAotLy8gTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUworLy8gQUJTTF9OT19U
SFJFQURfU0FGRVRZX0FOQUxZU0lTCiAvLwogLy8gVHVybnMgb2ZmIHRocmVhZCBzYWZldHkgY2hl
Y2tpbmcgd2l0aGluIHRoZSBib2R5IG9mIGEgcGFydGljdWxhciBmdW5jdGlvbi4KIC8vIFRoaXMg
YW5ub3RhdGlvbiBpcyB1c2VkIHRvIG1hcmsgZnVuY3Rpb25zIHRoYXQgYXJlIGtub3duIHRvIGJl
IGNvcnJlY3QsIGJ1dAogLy8gdGhlIGxvY2tpbmcgYmVoYXZpb3IgaXMgbW9yZSBjb21wbGljYXRl
ZCB0aGFuIHRoZSBhbmFseXplciBjYW4gaGFuZGxlLgotI2RlZmluZSBOT19USFJFQURfU0FGRVRZ
X0FOQUxZU0lTIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18obm9fdGhyZWFkX3Nh
ZmV0eV9hbmFseXNpcykKKyNkZWZpbmUgQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIFwK
KyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUobm9fdGhyZWFkX3Nh
ZmV0eV9hbmFseXNpcykKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFRvb2wtU3VwcGxp
ZWQgQW5ub3RhdGlvbnMKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS8vIFRTX1VOQ0hFQ0tF
RCBzaG91bGQgYmUgcGxhY2VkIGFyb3VuZCBsb2NrIGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vdCB2
YWxpZAorLy8gQUJTTF9UU19VTkNIRUNLRUQgc2hvdWxkIGJlIHBsYWNlZCBhcm91bmQgbG9jayBl
eHByZXNzaW9ucyB0aGF0IGFyZSBub3QgdmFsaWQKIC8vIEMrKyBzeW50YXgsIGJ1dCB3aGljaCBh
cmUgcHJlc2VudCBmb3IgZG9jdW1lbnRhdGlvbiBwdXJwb3Nlcy4gIFRoZXNlCiAvLyBhbm5vdGF0
aW9ucyB3aWxsIGJlIGlnbm9yZWQgYnkgdGhlIGFuYWx5c2lzLgotI2RlZmluZSBUU19VTkNIRUNL
RUQoeCkgIiIKKyNkZWZpbmUgQUJTTF9UU19VTkNIRUNLRUQoeCkgIiIKIAotLy8gVFNfRklYTUUg
aXMgdXNlZCB0byBtYXJrIGxvY2sgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90IHZhbGlkIEMrKyBz
eW50YXguCisvLyBBQlNMX1RTX0ZJWE1FIGlzIHVzZWQgdG8gbWFyayBsb2NrIGV4cHJlc3Npb25z
IHRoYXQgYXJlIG5vdCB2YWxpZCBDKysgc3ludGF4LgogLy8gSXQgaXMgdXNlZCBieSBhdXRvbWF0
ZWQgdG9vbHMgdG8gbWFyayBhbmQgZGlzYWJsZSBpbnZhbGlkIGV4cHJlc3Npb25zLgotLy8gVGhl
IGFubm90YXRpb24gc2hvdWxkIGVpdGhlciBiZSBmaXhlZCwgb3IgY2hhbmdlZCB0byBUU19VTkNI
RUNLRUQuCi0jZGVmaW5lIFRTX0ZJWE1FKHgpICIiCisvLyBUaGUgYW5ub3RhdGlvbiBzaG91bGQg
ZWl0aGVyIGJlIGZpeGVkLCBvciBjaGFuZ2VkIHRvIEFCU0xfVFNfVU5DSEVDS0VELgorI2RlZmlu
ZSBBQlNMX1RTX0ZJWE1FKHgpICIiCiAKLS8vIExpa2UgTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UywgdGhpcyB0dXJucyBvZmYgY2hlY2tpbmcgd2l0aGluIHRoZSBib2R5IG9mCi0vLyBhIHBhcnRp
Y3VsYXIgZnVuY3Rpb24uICBIb3dldmVyLCB0aGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIG1hcmsg
ZnVuY3Rpb25zCisvLyBMaWtlIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUywgdGhpcyB0
dXJucyBvZmYgY2hlY2tpbmcgd2l0aGluIHRoZSBib2R5CisvLyBvZiBhIHBhcnRpY3VsYXIgZnVu
Y3Rpb24uICBIb3dldmVyLCB0aGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIG1hcmsgZnVuY3Rpb25z
CiAvLyB0aGF0IGFyZSBpbmNvcnJlY3QgYW5kIG5lZWQgdG8gYmUgZml4ZWQuICBJdCBpcyB1c2Vk
IGJ5IGF1dG9tYXRlZCB0b29scyB0bwogLy8gYXZvaWQgYnJlYWtpbmcgdGhlIGJ1aWxkIHdoZW4g
dGhlIGFuYWx5c2lzIGlzIHVwZGF0ZWQuCiAvLyBDb2RlIG93bmVycyBhcmUgZXhwZWN0ZWQgdG8g
ZXZlbnR1YWxseSBmaXggdGhlIHJvdXRpbmUuCi0jZGVmaW5lIE5PX1RIUkVBRF9TQUZFVFlfQU5B
TFlTSVNfRklYTUUgIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKKyNkZWZpbmUgQUJTTF9OT19U
SFJFQURfU0FGRVRZX0FOQUxZU0lTX0ZJWE1FIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UwogCi0vLyBTaW1pbGFyIHRvIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVNfRklYTUUsIHRoaXMg
bWFjcm8gbWFya3MgYSBHVUFSREVEX0JZCi0vLyBhbm5vdGF0aW9uIHRoYXQgbmVlZHMgdG8gYmUg
Zml4ZWQsIGJlY2F1c2UgaXQgaXMgcHJvZHVjaW5nIHRocmVhZCBzYWZldHkKLS8vIHdhcm5pbmcu
ICBJdCBkaXNhYmxlcyB0aGUgR1VBUkRFRF9CWS4KLSNkZWZpbmUgR1VBUkRFRF9CWV9GSVhNRSh4
KQorLy8gU2ltaWxhciB0byBBQlNMX05PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVNfRklYTUUsIHRo
aXMgbWFjcm8gbWFya3MgYQorLy8gQUJTTF9HVUFSREVEX0JZIGFubm90YXRpb24gdGhhdCBuZWVk
cyB0byBiZSBmaXhlZCwgYmVjYXVzZSBpdCBpcyBwcm9kdWNpbmcKKy8vIHRocmVhZCBzYWZldHkg
d2FybmluZy4gSXQgZGlzYWJsZXMgdGhlIEFCU0xfR1VBUkRFRF9CWS4KKyNkZWZpbmUgQUJTTF9H
VUFSREVEX0JZX0ZJWE1FKHgpCiAKIC8vIERpc2FibGVzIHdhcm5pbmdzIGZvciBhIHNpbmdsZSBy
ZWFkIG9wZXJhdGlvbi4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQKIC8vIHdhcm5pbmdzIHdo
ZW4gaXQgaXMga25vd24gdGhhdCB0aGUgcmVhZCBpcyBub3QgYWN0dWFsbHkgaW52b2x2ZWQgaW4g
YSByYWNlLAogLy8gYnV0IHRoZSBjb21waWxlciBjYW5ub3QgY29uZmlybSB0aGF0LgotI2RlZmlu
ZSBUU19VTkNIRUNLRURfUkVBRCh4KSB0aHJlYWRfc2FmZXR5X2FuYWx5c2lzOjp0c191bmNoZWNr
ZWRfcmVhZCh4KQotCisjZGVmaW5lIEFCU0xfVFNfVU5DSEVDS0VEX1JFQUQoeCkgYWJzbDo6YmFz
ZV9pbnRlcm5hbDo6YWJzbF90c191bmNoZWNrZWRfcmVhZCh4KQogCi1uYW1lc3BhY2UgdGhyZWFk
X3NhZmV0eV9hbmFseXNpcyB7CituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgYmFzZV9pbnRl
cm5hbCB7CiAKIC8vIFRha2VzIGEgcmVmZXJlbmNlIHRvIGEgZ3VhcmRlZCBkYXRhIG1lbWJlciwg
YW5kIHJldHVybnMgYW4gdW5ndWFyZGVkCiAvLyByZWZlcmVuY2UuCisvLyBEbyBub3QgdXNlZCB0
aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCB1c2UgQUJTTF9UU19VTkNIRUNLRURfUkVBRCBpbnN0ZWFk
LgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgY29uc3QgVCYgdHNfdW5jaGVja2VkX3Jl
YWQoY29uc3QgVCYgdikgTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7CitpbmxpbmUgY29uc3Qg
VCYgYWJzbF90c191bmNoZWNrZWRfcmVhZChjb25zdCBUJiB2KSBBQlNMX05PX1RIUkVBRF9TQUZF
VFlfQU5BTFlTSVMgewogICByZXR1cm4gdjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1p
bmxpbmUgVCYgdHNfdW5jaGVja2VkX3JlYWQoVCYgdikgTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UyB7CitpbmxpbmUgVCYgYWJzbF90c191bmNoZWNrZWRfcmVhZChUJiB2KSBBQlNMX05PX1RIUkVB
RF9TQUZFVFlfQU5BTFlTSVMgewogICByZXR1cm4gdjsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIHRo
cmVhZF9zYWZldHlfYW5hbHlzaXMKK30gIC8vIG5hbWVzcGFjZSBiYXNlX2ludGVybmFsCit9ICAv
LyBuYW1lc3BhY2UgYWJzbAogCiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9USFJFQURfQU5OT1RBVElP
TlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvdGhyb3dfZGVsZWdhdGVfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvdGhyb3dfZGVsZWdhdGVfdGVzdC5jYwppbmRleCAwZjE1ZGYwNDkyYi4uYTc0ZGQz
Y2RhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvdGhyb3dfZGVsZWdhdGVfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL3Rocm93X2RlbGVnYXRlX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbXBpbGVyX2NvbmZpZ19z
ZXR0aW5nLmJ6bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbXBpbGVyX2NvbmZpZ19zZXR0aW5nLmJ6bAppbmRleCBiNzdj
NGY1NjNiOS4uNjY5NjIyOTRkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbXBpbGVyX2NvbmZpZ19z
ZXR0aW5nLmJ6bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb21waWxlcl9jb25maWdfc2V0dGluZy5iemwKQEAgLTUs
MzUgKzUsMzQgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAjIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCiAKICIiIkNyZWF0ZXMg
Y29uZmlnX3NldHRpbmcgdGhhdCBhbGxvd3Mgc2VsZWN0aW5nIGJhc2VkIG9uICdjb21waWxlcicg
dmFsdWUuIiIiCiAKIGRlZiBjcmVhdGVfbGx2bV9jb25maWcobmFtZSwgdmlzaWJpbGl0eSk6Ci0g
ICMgVGhlICJkb19ub3RfdXNlX3Rvb2xzX2NwcF9jb21waWxlcl9wcmVzZW50IiBhdHRyaWJ1dGUg
ZXhpc3RzIHRvCi0gICMgZGlzdGluZ3Vpc2ggYmV0d2VlbiBvbGRlciB2ZXJzaW9ucyBvZiBCYXpl
bCB0aGF0IGRvIG5vdCBzdXBwb3J0Ci0gICMgIkBiYXplbF90b29scy8vdG9vbHMvY3BwOmNvbXBp
bGVyIiBmbGFnX3ZhbHVlLCBhbmQgbmV3ZXIgb25lcyB0aGF0IGRvLgotICAjIEluIHRoZSBmdXR1
cmUsIHRoZSBvbmx5IHdheSB0byBzZWxlY3Qgb24gdGhlIGNvbXBpbGVyIHdpbGwgYmUgdGhyb3Vn
aAotICAjIGZsYWdfdmFsdWVzeyJAYmF6ZWxfdG9vbHMvL3Rvb2xzL2NwcDpjb21waWxlciJ9IGFu
ZCB0aGUgZWxzZSBicmFuY2ggY2FuCi0gICMgYmUgcmVtb3ZlZC4KLSAgaWYgaGFzYXR0cihjY19j
b21tb24sICJkb19ub3RfdXNlX3Rvb2xzX2NwcF9jb21waWxlcl9wcmVzZW50Iik6Ci0gICAgbmF0
aXZlLmNvbmZpZ19zZXR0aW5nKAotICAgICAgbmFtZSA9IG5hbWUsCi0gICAgICBmbGFnX3ZhbHVl
cyA9IHsKLSAgICAgICAgICAiQGJhemVsX3Rvb2xzLy90b29scy9jcHA6Y29tcGlsZXIiOiAibGx2
bSIsCi0gICAgICB9LAotICAgICAgdmlzaWJpbGl0eSA9IHZpc2liaWxpdHksCi0gICAgKQotICBl
bHNlOgotICAgIG5hdGl2ZS5jb25maWdfc2V0dGluZygKLSAgICAgICAgbmFtZSA9IG5hbWUsCi0g
ICAgICAgIHZhbHVlcyA9IHsiY29tcGlsZXIiOiAibGx2bSJ9LAotICAgICAgICB2aXNpYmlsaXR5
ID0gdmlzaWJpbGl0eSwKLSAgICApCisgICAgIyBUaGUgImRvX25vdF91c2VfdG9vbHNfY3BwX2Nv
bXBpbGVyX3ByZXNlbnQiIGF0dHJpYnV0ZSBleGlzdHMgdG8KKyAgICAjIGRpc3Rpbmd1aXNoIGJl
dHdlZW4gb2xkZXIgdmVyc2lvbnMgb2YgQmF6ZWwgdGhhdCBkbyBub3Qgc3VwcG9ydAorICAgICMg
IkBiYXplbF90b29scy8vdG9vbHMvY3BwOmNvbXBpbGVyIiBmbGFnX3ZhbHVlLCBhbmQgbmV3ZXIg
b25lcyB0aGF0IGRvLgorICAgICMgSW4gdGhlIGZ1dHVyZSwgdGhlIG9ubHkgd2F5IHRvIHNlbGVj
dCBvbiB0aGUgY29tcGlsZXIgd2lsbCBiZSB0aHJvdWdoCisgICAgIyBmbGFnX3ZhbHVlc3siQGJh
emVsX3Rvb2xzLy90b29scy9jcHA6Y29tcGlsZXIifSBhbmQgdGhlIGVsc2UgYnJhbmNoIGNhbgor
ICAgICMgYmUgcmVtb3ZlZC4KKyAgICBpZiBoYXNhdHRyKGNjX2NvbW1vbiwgImRvX25vdF91c2Vf
dG9vbHNfY3BwX2NvbXBpbGVyX3ByZXNlbnQiKToKKyAgICAgICAgbmF0aXZlLmNvbmZpZ19zZXR0
aW5nKAorICAgICAgICAgICAgbmFtZSA9IG5hbWUsCisgICAgICAgICAgICBmbGFnX3ZhbHVlcyA9
IHsKKyAgICAgICAgICAgICAgICAiQGJhemVsX3Rvb2xzLy90b29scy9jcHA6Y29tcGlsZXIiOiAi
bGx2bSIsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdmlzaWJpbGl0eSA9IHZpc2liaWxp
dHksCisgICAgICAgICkKKyAgICBlbHNlOgorICAgICAgICBuYXRpdmUuY29uZmlnX3NldHRpbmco
CisgICAgICAgICAgICBuYW1lID0gbmFtZSwKKyAgICAgICAgICAgIHZhbHVlcyA9IHsiY29tcGls
ZXIiOiAibGx2bSJ9LAorICAgICAgICAgICAgdmlzaWJpbGl0eSA9IHZpc2liaWxpdHksCisgICAg
ICAgICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5iYXplbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9CVUlMRC5iYXplbAppbmRleCBmMjIxMGUzYzE5Ny4uMTg1OWQ5ZTljNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
QlVJTEQuYmF6ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNSwxMSAr
MTUsMTIgQEAKICMKIAogbG9hZCgKLSAgICAiLy9hYnNsOmNvcHRzLmJ6bCIsCisgICAgIi8vYWJz
bDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKICAgICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwK
LSAgICAiQUJTTF9URVNUX0NPUFRTIiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRTIiwKICAg
ICAiQUJTTF9FWENFUFRJT05TX0ZMQUciLAogICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5L
T1BUUyIsCisgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiApCiAKIHBhY2thZ2UoZGVmYXVsdF92aXNp
YmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0pCkBAIC0zMCw2ICszMSw3IEBAIGNjX2xp
YnJhcnkoCiAgICAgbmFtZSA9ICJjb21wcmVzc2VkX3R1cGxlIiwKICAgICBoZHJzID0gWyJpbnRl
cm5hbC9jb21wcmVzc2VkX3R1cGxlLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwog
ICAgICAgICAiLy9hYnNsL3V0aWxpdHkiLAogICAgIF0sCkBAIC0zOSw4ICs0MSwxNCBAQCBjY190
ZXN0KAogICAgIG5hbWUgPSAiY29tcHJlc3NlZF90dXBsZV90ZXN0IiwKICAgICBzcmNzID0gWyJp
bnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVT
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBz
ID0gWwogICAgICAgICAiOmNvbXByZXNzZWRfdHVwbGUiLAorICAgICAgICAiOnRlc3RfaW5zdGFu
Y2VfdHJhY2tlciIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vYWJzbC90
eXBlczphbnkiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgICAgICAgIi8v
YWJzbC91dGlsaXR5IiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9t
YWluIiwKICAgICBdLAogKQpAQCAtNDksNiArNTcsNyBAQCBjY19saWJyYXJ5KAogICAgIG5hbWUg
PSAiZml4ZWRfYXJyYXkiLAogICAgIGhkcnMgPSBbImZpeGVkX2FycmF5LmgiXSwKICAgICBjb3B0
cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmNvbXByZXNzZWRfdHVwbGUiLAogICAgICAg
ICAiLy9hYnNsL2FsZ29yaXRobSIsCkBAIC02Myw3ICs3Miw3IEBAIGNjX3Rlc3QoCiAgICAgbmFt
ZSA9ICJmaXhlZF9hcnJheV90ZXN0IiwKICAgICBzcmNzID0gWyJmaXhlZF9hcnJheV90ZXN0LmNj
Il0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywK
LSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtv
cHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpmaXhlZF9hcnJheSIsCiAgICAgICAgICIvL2Fi
c2wvYmFzZTpleGNlcHRpb25fdGVzdGluZyIsCkBAIC03Nyw2ICs4Niw3IEBAIGNjX3Rlc3QoCiAg
ICAgbmFtZSA9ICJmaXhlZF9hcnJheV90ZXN0X25vZXhjZXB0aW9ucyIsCiAgICAgc3JjcyA9IFsi
Zml4ZWRfYXJyYXlfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAg
IGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAg
ICI6Zml4ZWRfYXJyYXkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3Rlc3Rpbmci
LApAQCAtOTAsNyArMTAwLDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImZpeGVkX2FycmF5X2V4
Y2VwdGlvbl9zYWZldHlfdGVzdCIsCiAgICAgc3JjcyA9IFsiZml4ZWRfYXJyYXlfZXhjZXB0aW9u
X3NhZmV0eV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VY
Q0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpmaXhlZF9hcnJheSIs
CiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmciLApAQCAtMTAy
LDYgKzExMiw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJmaXhlZF9hcnJheV9iZW5jaG1hcmsi
LAogICAgIHNyY3MgPSBbImZpeGVkX2FycmF5X2JlbmNobWFyay5jYyJdLAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTICsgWyIkKFNUQUNLX0ZSQU1FX1VOTElNSVRFRCkiXSwKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0gWyJiZW5jaG1hcmsiXSwK
ICAgICBkZXBzID0gWwogICAgICAgICAiOmZpeGVkX2FycmF5IiwKQEAgLTEwOSwxMSArMTIwLDI3
IEBAIGNjX3Rlc3QoCiAgICAgXSwKICkKIAorY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImlubGlu
ZWRfdmVjdG9yX2ludGVybmFsIiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9pbmxpbmVkX3ZlY3Rv
ci5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBB
QlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb21wcmVzc2Vk
X3R1cGxlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIv
L2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAg
ICAgIi8vYWJzbC90eXBlczpzcGFuIiwKKyAgICBdLAorKQorCiBjY19saWJyYXJ5KAogICAgIG5h
bWUgPSAiaW5saW5lZF92ZWN0b3IiLAogICAgIGhkcnMgPSBbImlubGluZWRfdmVjdG9yLmgiXSwK
ICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWworICAgICAgICAiOmlubGluZWRfdmVjdG9yX2lu
dGVybmFsIiwKICAgICAgICAgIi8vYWJzbC9hbGdvcml0aG0iLAogICAgICAgICAiLy9hYnNsL2Jh
c2U6Y29yZV9oZWFkZXJzIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOnRocm93X2RlbGVnYXRlIiwK
QEAgLTEyMSwxMiArMTQ4LDIyIEBAIGNjX2xpYnJhcnkoCiAgICAgXSwKICkKIAorY2NfbGlicmFy
eSgKKyAgICBuYW1lID0gImNvdW50aW5nX2FsbG9jYXRvciIsCisgICAgdGVzdG9ubHkgPSAxLAor
ICAgIGhkcnMgPSBbImludGVybmFsL2NvdW50aW5nX2FsbG9jYXRvci5oIl0sCisgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKKykKKwogY2Nf
dGVzdCgKICAgICBuYW1lID0gImlubGluZWRfdmVjdG9yX3Rlc3QiLAogICAgIHNyY3MgPSBbImlu
bGluZWRfdmVjdG9yX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFC
U0xfRVhDRVBUSU9OU19GTEFHLAotICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdf
TElOS09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyAr
IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWworICAgICAgICAiOmNvdW50aW5n
X2FsbG9jYXRvciIsCiAgICAgICAgICI6aW5saW5lZF92ZWN0b3IiLAogICAgICAgICAiOnRlc3Rf
aW5zdGFuY2VfdHJhY2tlciIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCkBAIC0xNDMsNyArMTgw
LDkgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImlubGluZWRfdmVjdG9yX3Rlc3Rfbm9leGNlcHRp
b25zIiwKICAgICBzcmNzID0gWyJpbmxpbmVkX3ZlY3Rvcl90ZXN0LmNjIl0sCiAgICAgY29wdHMg
PSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMs
CiAgICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb3VudGluZ19hbGxvY2F0b3IiLAogICAgICAgICAi
OmlubGluZWRfdmVjdG9yIiwKICAgICAgICAgIjp0ZXN0X2luc3RhbmNlX3RyYWNrZXIiLAogICAg
ICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtMTYwLDMwICsxOTksNDYgQEAgY2NfdGVzdCgKICAgICBu
YW1lID0gImlubGluZWRfdmVjdG9yX2JlbmNobWFyayIsCiAgICAgc3JjcyA9IFsiaW5saW5lZF92
ZWN0b3JfYmVuY2htYXJrLmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFncyA9IFsiYmVuY2htYXJr
Il0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjppbmxpbmVkX3ZlY3RvciIsCiAgICAgICAgICIv
L2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICAg
ICAiLy9hYnNsL3N0cmluZ3MiLAogICAgICAgICAiQGNvbV9naXRodWJfZ29vZ2xlX2JlbmNobWFy
ay8vOmJlbmNobWFya19tYWluIiwKICAgICBdLAogKQogCitjY190ZXN0KAorICAgIG5hbWUgPSAi
aW5saW5lZF92ZWN0b3JfZXhjZXB0aW9uX3NhZmV0eV90ZXN0IiwKKyAgICBzcmNzID0gWyJpbmxp
bmVkX3ZlY3Rvcl9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xf
VEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGRlcHMgPSBbCisgICAgICAg
ICI6aW5saW5lZF92ZWN0b3IiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3NhZmV0
eV90ZXN0aW5nIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWlu
IiwKKyAgICBdLAorKQorCiBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAidGVzdF9pbnN0YW5jZV90
cmFja2VyIiwKICAgICB0ZXN0b25seSA9IDEsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvdGVzdF9p
bnN0YW5jZV90cmFja2VyLmNjIl0sCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdGVzdF9pbnN0YW5j
ZV90cmFja2VyLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWwogICAgICAg
ICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIsCiAgICAgXSwKKyAgICBkZXBzID0gWyIvL2Fic2wv
dHlwZXM6Y29tcGFyZSJdLAogKQogCiBjY190ZXN0KAogICAgIG5hbWUgPSAidGVzdF9pbnN0YW5j
ZV90cmFja2VyX3Rlc3QiLAogICAgIHNyY3MgPSBbImludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJh
Y2tlcl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjp0ZXN0
X2luc3RhbmNlX3RyYWNrZXIiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0
ZXN0X21haW4iLApAQCAtMjA4LDEwICsyNjMsMTIgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0g
ImZsYXRfaGFzaF9tYXAiLAogICAgIGhkcnMgPSBbImZsYXRfaGFzaF9tYXAuaCJdLAogICAgIGNv
cHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCiAgICAg
ICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCiAgICAgICAgICI6cmF3X2hhc2hfbWFwIiwK
KyAgICAgICAgIi8vYWJzbC9hbGdvcml0aG06Y29udGFpbmVyIiwKICAgICAgICAgIi8vYWJzbC9t
ZW1vcnkiLAogICAgIF0sCiApCkBAIC0yMTksMTMgKzI3NiwxNSBAQCBjY19saWJyYXJ5KAogY2Nf
dGVzdCgKICAgICBuYW1lID0gImZsYXRfaGFzaF9tYXBfdGVzdCIsCiAgICAgc3JjcyA9IFsiZmxh
dF9oYXNoX21hcF90ZXN0LmNjIl0sCi0gICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBbIi1E
VU5PUkRFUkVEX01BUF9DWFgxNyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAg
IGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3MgPSBOT1RFU1RfVEFH
U19OT05NT0JJTEUsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpmbGF0X2hhc2hfbWFwIiwKICAg
ICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKICAgICAgICAgIjp1bm9yZGVyZWRfbWFw
X2NvbnN0cnVjdG9yX3Rlc3QiLAogICAgICAgICAiOnVub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3Qi
LAorICAgICAgICAiOnVub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0IiwKICAgICAgICAgIjp1bm9y
ZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0IiwKICAgICAgICAgIi8vYWJzbC90eXBlczphbnkiLAog
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLApAQCAtMjM2LDEw
ICsyOTUsMTIgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gImZsYXRfaGFzaF9zZXQiLAogICAg
IGhkcnMgPSBbImZsYXRfaGFzaF9zZXQuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCiAgICAgICAgICI6aGFzaF9mdW5jdGlvbl9k
ZWZhdWx0cyIsCiAgICAgICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgICAgICAgIi8vYWJzbC9hbGdv
cml0aG06Y29udGFpbmVyIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAg
ICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICBdLApAQCAtMjQ5LDEyICszMTAsMTQgQEAgY2Nf
dGVzdCgKICAgICBuYW1lID0gImZsYXRfaGFzaF9zZXRfdGVzdCIsCiAgICAgc3JjcyA9IFsiZmxh
dF9oYXNoX3NldF90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBbIi1E
VU5PUkRFUkVEX1NFVF9DWFgxNyJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAogICAgIHRhZ3MgPSBOT1RFU1RfVEFHU19OT05NT0JJTEUsCiAgICAgZGVwcyA9IFsKICAg
ICAgICAgIjpmbGF0X2hhc2hfc2V0IiwKICAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5n
IiwKICAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QiLAogICAgICAgICAi
OnVub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QiLAorICAgICAgICAiOnVub3JkZXJlZF9zZXRfbWVt
YmVyc190ZXN0IiwKICAgICAgICAgIjp1bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0IiwKICAg
ICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLApAQCAtMjY2
LDExICszMjksMTMgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gIm5vZGVfaGFzaF9tYXAiLAog
ICAgIGhkcnMgPSBbIm5vZGVfaGFzaF9tYXAuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxU
X0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMg
PSBbCiAgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCiAgICAgICAgICI6aGFzaF9mdW5jdGlv
bl9kZWZhdWx0cyIsCiAgICAgICAgICI6bm9kZV9oYXNoX3BvbGljeSIsCiAgICAgICAgICI6cmF3
X2hhc2hfbWFwIiwKKyAgICAgICAgIi8vYWJzbC9hbGdvcml0aG06Y29udGFpbmVyIiwKICAgICAg
ICAgIi8vYWJzbC9tZW1vcnkiLAogICAgIF0sCiApCkBAIC0yNzgsNyArMzQzLDggQEAgY2NfbGli
cmFyeSgKIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJub2RlX2hhc2hfbWFwX3Rlc3QiLAogICAgIHNy
Y3MgPSBbIm5vZGVfaGFzaF9tYXBfdGVzdC5jYyJdLAotICAgIGNvcHRzID0gQUJTTF9URVNUX0NP
UFRTICsgWyItRFVOT1JERVJFRF9NQVBfQ1hYMTciXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0g
Tk9URVNUX1RBR1NfTk9OTU9CSUxFLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6aGFzaF9nZW5l
cmF0b3JfdGVzdGluZyIsCkBAIC0yODYsNiArMzUyLDcgQEAgY2NfdGVzdCgKICAgICAgICAgIjp0
cmFja2VkIiwKICAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QiLAogICAg
ICAgICAiOnVub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QiLAorICAgICAgICAiOnVub3JkZXJlZF9t
YXBfbWVtYmVyc190ZXN0IiwKICAgICAgICAgIjp1bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0
IiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBd
LApAQCAtMjk1LDExICszNjIsMTIgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gIm5vZGVfaGFz
aF9zZXQiLAogICAgIGhkcnMgPSBbIm5vZGVfaGFzaF9zZXQuaCJdLAogICAgIGNvcHRzID0gQUJT
TF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIGRlcHMgPSBbCi0gICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCiAgICAgICAgICI6aGFz
aF9mdW5jdGlvbl9kZWZhdWx0cyIsCiAgICAgICAgICI6bm9kZV9oYXNoX3BvbGljeSIsCiAgICAg
ICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgICAgICAgIi8vYWJzbC9hbGdvcml0aG06Y29udGFpbmVy
IiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAgIF0sCiApCkBAIC0zMDgsMTIgKzM3Niwx
MyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAibm9kZV9oYXNoX3NldF90ZXN0IiwKICAgICBzcmNz
ID0gWyJub2RlX2hhc2hfc2V0X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UyArIFsiLURVTk9SREVSRURfU0VUX0NYWDE3Il0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCiAgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwKICAgICBkZXBz
ID0gWwotICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAogICAgICAgICAiOm5vZGVf
aGFzaF9zZXQiLAogICAgICAgICAiOnVub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdCIsCiAg
ICAgICAgICI6dW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVk
X3NldF9tZW1iZXJzX3Rlc3QiLAogICAgICAgICAiOnVub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rl
c3QiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAogICAg
IF0sCkBAIC0zMjMsNiArMzkyLDcgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gImNvbnRhaW5l
cl9tZW1vcnkiLAogICAgIGhkcnMgPSBbImludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCJdLAog
ICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAg
ICAgICAgIi8vYWJzbC91dGlsaXR5IiwKQEAgLTMzMyw2ICs0MDMsNyBAQCBjY190ZXN0KAogICAg
IG5hbWUgPSAiY29udGFpbmVyX21lbW9yeV90ZXN0IiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC9j
b250YWluZXJfbWVtb3J5X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0gTk9URVNU
X1RBR1NfTk9OTU9CSUxFLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Y29udGFpbmVyX21lbW9y
eSIsCkBAIC0zNDUsNiArNDE2LDcgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gImhhc2hfZnVu
Y3Rpb25fZGVmYXVsdHMiLAogICAgIGhkcnMgPSBbImludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVm
YXVsdHMuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wv
YmFzZTpjb25maWciLAogICAgICAgICAiLy9hYnNsL2hhc2giLApAQCAtMzU2LDYgKzQyOCw3IEBA
IGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzX3Rlc3QiLAogICAg
IHNyY3MgPSBbImludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVzdC5jYyJdLAogICAg
IGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIHRhZ3MgPSBOT1RFU1RfVEFHUywKICAgICBkZXBzID0gWwogICAgICAgICAi
Omhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLApAQCAtMzcxLDYgKzQ0NCw3IEBAIGNjX2xpYnJhcnko
CiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYyJdLAogICAg
IGhkcnMgPSBbImludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCJdLAogICAgIGNvcHRz
ID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCiAgICAgICAg
ICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCkBAIC0zODMsNiArNDU3LDcgQEAgY2NfbGlicmFy
eSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvaGFzaF9wb2xpY3lf
dGVzdGluZy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8vYWJzbC9o
YXNoIiwKICAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKQEAgLTM5Myw2ICs0NjgsNyBAQCBjY190
ZXN0KAogICAgIG5hbWUgPSAiaGFzaF9wb2xpY3lfdGVzdGluZ190ZXN0IiwKICAgICBzcmNzID0g
WyJpbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFC
U0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAg
ICBkZXBzID0gWwogICAgICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAogICAgICAgICAiQGNv
bV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLApAQCAtNDAzLDYgKzQ3OSw3IEBAIGNj
X2xpYnJhcnkoCiAgICAgbmFtZSA9ICJoYXNoX3BvbGljeV90cmFpdHMiLAogICAgIGhkcnMgPSBb
ImludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFV
TFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVw
cyA9IFsiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiXSwKICkKIApAQCAtNDEwLDYgKzQ4Nyw3IEBA
IGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJoYXNoX3BvbGljeV90cmFpdHNfdGVzdCIsCiAgICAgc3Jj
cyA9IFsiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
ICAgICBkZXBzID0gWwogICAgICAgICAiOmhhc2hfcG9saWN5X3RyYWl0cyIsCiAgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBAIC00MjAsNiArNDk4LDcgQEAg
Y2NfbGlicmFyeSgKICAgICBuYW1lID0gImhhc2h0YWJsZV9kZWJ1ZyIsCiAgICAgaGRycyA9IFsi
aW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiOmhhc2h0YWJsZV9kZWJ1Z19ob29rcyIsCiAgICAgXSwKQEAgLTQyOSwxOCAr
NTA4LDU2IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJoYXNodGFibGVfZGVidWdfaG9va3Mi
LAogICAgIGhkcnMgPSBbImludGVybmFsL2hhc2h0YWJsZV9kZWJ1Z19ob29rcy5oIl0sCiAgICAg
Y29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJoYXNodGFibGV6X3NhbXBs
ZXIiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJpbnRlcm5hbC9oYXNodGFibGV6X3NhbXBsZXIu
Y2MiLAorICAgICAgICAiaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyX2ZvcmNlX3dlYWtfZGVm
aW5pdGlvbi5jYyIsCisgICAgXSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNodGFibGV6X3Nh
bXBsZXIuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGF2ZV9z
c2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9o
ZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9kZWJ1Z2dpbmc6c3RhY2t0cmFjZSIsCisgICAgICAg
ICIvL2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb24iLAorICAg
ICAgICAiLy9hYnNsL3V0aWxpdHkiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9
ICJoYXNodGFibGV6X3NhbXBsZXJfdGVzdCIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvaGFzaHRh
Ymxlel9zYW1wbGVyX3Rlc3QuY2MiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2h0YWJsZXpfc2FtcGxlciIsCisgICAg
ICAgICI6aGF2ZV9zc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAg
ICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb24iLAorICAgICAgICAiLy9hYnNsL3N5bmNocm9u
aXphdGlvbjp0aHJlYWRfcG9vbCIsCisgICAgICAgICIvL2Fic2wvdGltZSIsCisgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKICkKIAogY2NfbGli
cmFyeSgKICAgICBuYW1lID0gIm5vZGVfaGFzaF9wb2xpY3kiLAogICAgIGhkcnMgPSBbImludGVy
bmFsL25vZGVfaGFzaF9wb2xpY3kuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogKQogCiBjY190ZXN0KAog
ICAgIG5hbWUgPSAibm9kZV9oYXNoX3BvbGljeV90ZXN0IiwKICAgICBzcmNzID0gWyJpbnRlcm5h
bC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwog
ICAgICAgICAiOmhhc2hfcG9saWN5X3RyYWl0cyIsCiAgICAgICAgICI6bm9kZV9oYXNoX3BvbGlj
eSIsCkBAIC00NTIsOSArNTY5LDMwIEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJyYXdfaGFz
aF9tYXAiLAogICAgIGhkcnMgPSBbImludGVybmFsL3Jhd19oYXNoX21hcC5oIl0sCiAgICAgY29w
dHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpjb250YWluZXJfbWVtb3J5IiwKICAgICAg
ICAgIjpyYXdfaGFzaF9zZXQiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6dGhyb3dfZGVsZWdhdGUi
LAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJoYXZlX3NzZSIsCisgICAg
aGRycyA9IFsiaW50ZXJuYWwvaGF2ZV9zc2UuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxU
X0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZpc2li
aWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCispCisKK2NjX2xpYnJhcnkoCisgICAg
bmFtZSA9ICJjb21tb24iLAorICAgIGhkcnMgPSBbImludGVybmFsL2NvbW1vbi5oIl0sCisgICAg
Y29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRz
IiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAgXSwKICkKIApAQCAtNDYz
LDExICs2MDEsMTUgQEAgY2NfbGlicmFyeSgKICAgICBzcmNzID0gWyJpbnRlcm5hbC9yYXdfaGFz
aF9zZXQuY2MiXSwKICAgICBoZHJzID0gWyJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCJdLAogICAg
IGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAogICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29tbW9uIiwKICAgICAgICAgIjpj
b21wcmVzc2VkX3R1cGxlIiwKICAgICAgICAgIjpjb250YWluZXJfbWVtb3J5IiwKICAgICAgICAg
IjpoYXNoX3BvbGljeV90cmFpdHMiLAogICAgICAgICAiOmhhc2h0YWJsZV9kZWJ1Z19ob29rcyIs
CisgICAgICAgICI6aGFzaHRhYmxlel9zYW1wbGVyIiwKKyAgICAgICAgIjpoYXZlX3NzZSIsCiAg
ICAgICAgICI6bGF5b3V0IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmJpdHMiLAogICAgICAgICAi
Ly9hYnNsL2Jhc2U6Y29uZmlnIiwKQEAgLTQ3NSw3ICs2MTcsNiBAQCBjY19saWJyYXJ5KAogICAg
ICAgICAiLy9hYnNsL2Jhc2U6ZW5kaWFuIiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAg
ICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAotICAgICAgICAiLy9hYnNsL3R5cGVzOm9w
dGlvbmFsIiwKICAgICAgICAgIi8vYWJzbC91dGlsaXR5IiwKICAgICBdLAogKQpAQCAtNTA0LDYg
KzY0NSw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9IFsiaW50
ZXJuYWwvcmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNM
X1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAg
ZGVwcyA9IFsKICAgICAgICAgIjpyYXdfaGFzaF9zZXQiLAogICAgICAgICAiOnRyYWNrZWQiLApA
QCAtNTE2LDYgKzY1OCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJsYXlvdXQiLAogICAg
IGhkcnMgPSBbImludGVybmFsL2xheW91dC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9
IFsKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgICAgICIvL2Fic2wv
bWV0YTp0eXBlX3RyYWl0cyIsCkBAIC01MzAsNiArNjczLDcgQEAgY2NfdGVzdCgKICAgICBzaXpl
ID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC9sYXlvdXRfdGVzdC5jYyJdLAogICAg
IGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIHRhZ3MgPSBOT1RFU1RfVEFHUywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zp
c2liaWxpdHk6cHJpdmF0ZSJdLAogICAgIGRlcHMgPSBbCkBAIC01NDYsNiArNjkwLDcgQEAgY2Nf
bGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdHJhY2tl
ZC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiApCiAKIGNjX2xpYnJhcnkoCkBAIC01NTMsNiArNjk4LDcgQEAg
Y2NfbGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5v
cmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAogICAgICAgICAiOmhhc2hfcG9s
aWN5X3Rlc3RpbmciLApAQCAtNTY1LDYgKzcxMSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgdGVzdG9u
bHkgPSAxLAogICAgIGhkcnMgPSBbImludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3Qu
aCJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9E
RUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6aGFzaF9nZW5lcmF0b3Jf
dGVzdGluZyIsCiAgICAgICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCkBAIC01NzcsNiArNzI0
LDcgQEAgY2NfbGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJu
YWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKICAgICAgICAgIjpoYXNo
X3BvbGljeV90ZXN0aW5nIiwKQEAgLTU4OSw5ICs3MzcsMzUgQEAgY2NfbGlicmFyeSgKICAgICB0
ZXN0b25seSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9jb25zdHJ1
Y3Rvcl90ZXN0LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmhhc2hf
Z2VuZXJhdG9yX3Rlc3RpbmciLAogICAgICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAg
ICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29v
Z2xldGVzdC8vOmd0ZXN0IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAi
dW5vcmRlcmVkX3NldF9tZW1iZXJzX3Rlc3QiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJz
ID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdC5oIl0sCisgICAgY29wdHMg
PSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMs
CisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAg
ICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAgXSwKKykKKworY2NfbGli
cmFyeSgKKyAgICBuYW1lID0gInVub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0IiwKKyAgICB0ZXN0
b25seSA9IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tZW1iZXJzX3Rl
c3QuaCJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICIvL2Fic2wvbWV0YTp0
eXBlX3RyYWl0cyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAog
ICAgIF0sCiApCkBAIC02MDEsNiArNzc1LDcgQEAgY2NfbGlicmFyeSgKICAgICB0ZXN0b25seSA9
IDEsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdC5oIl0s
CiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0
aW5nIiwKICAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKQEAgLTYxMyw2ICs3ODgsNyBA
QCBjY19saWJyYXJ5KAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBoZHJzID0gWyJpbnRlcm5hbC91
bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAogICAgICAgICAiOmhhc2hfcG9s
aWN5X3Rlc3RpbmciLApAQCAtNjI0LDEwICs4MDAsMTIgQEAgY2NfdGVzdCgKICAgICBuYW1lID0g
InVub3JkZXJlZF9zZXRfdGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3Nl
dF90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklM
RSwKICAgICBkZXBzID0gWwogICAgICAgICAiOnVub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVz
dCIsCiAgICAgICAgICI6dW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdCIsCisgICAgICAgICI6dW5v
cmRlcmVkX3NldF9tZW1iZXJzX3Rlc3QiLAogICAgICAgICAiOnVub3JkZXJlZF9zZXRfbW9kaWZp
ZXJzX3Rlc3QiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4i
LAogICAgIF0sCkBAIC02MzcsMTEgKzgxNSw4MiBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAidW5v
cmRlcmVkX21hcF90ZXN0IiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX3Rl
c3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAog
ICAgIGRlcHMgPSBbCiAgICAgICAgICI6dW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0IiwK
ICAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVy
ZWRfbWFwX21lbWJlcnNfdGVzdCIsCiAgICAgICAgICI6dW5vcmRlcmVkX21hcF9tb2RpZmllcnNf
dGVzdCIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAg
ICAgXSwKICkKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImJ0cmVlIiwKKyAgICBzcmNzID0g
WworICAgICAgICAiaW50ZXJuYWwvYnRyZWUuaCIsCisgICAgICAgICJpbnRlcm5hbC9idHJlZV9j
b250YWluZXIuaCIsCisgICAgXSwKKyAgICBoZHJzID0gWworICAgICAgICAiYnRyZWVfbWFwLmgi
LAorICAgICAgICAiYnRyZWVfc2V0LmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFV
TFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgdmlz
aWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdLAorICAgIGRlcHMgPSBbCisgICAgICAg
ICI6Y29tbW9uIiwKKyAgICAgICAgIjpjb21wcmVzc2VkX3R1cGxlIiwKKyAgICAgICAgIjpjb250
YWluZXJfbWVtb3J5IiwKKyAgICAgICAgIjpsYXlvdXQiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6
Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOnRocm93X2RlbGVnYXRlIiwKKyAg
ICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMi
LAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOmNvbXBh
cmUiLAorICAgICAgICAiLy9hYnNsL3V0aWxpdHkiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnko
CisgICAgbmFtZSA9ICJidHJlZV90ZXN0X2NvbW1vbiIsCisgICAgdGVzdG9ubHkgPSAxLAorICAg
IGhkcnMgPSBbImJ0cmVlX3Rlc3QuaCJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAor
ICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBb
Ii8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpidHJlZSIs
CisgICAgICAgICI6ZmxhdF9oYXNoX3NldCIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisg
ICAgICAgICIvL2Fic2wvdGltZSIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0g
ImJ0cmVlX3Rlc3QiLAorICAgIHNpemUgPSAibGFyZ2UiLAorICAgIHNyY3MgPSBbCisgICAgICAg
ICJidHJlZV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsg
WyItZmV4Y2VwdGlvbnMiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
KyAgICBzaGFyZF9jb3VudCA9IDEwLAorICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpw
cml2YXRlIl0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpidHJlZSIsCisgICAgICAgICI6YnRy
ZWVfdGVzdF9jb21tb24iLAorICAgICAgICAiOmNvdW50aW5nX2FsbG9jYXRvciIsCisgICAgICAg
ICI6dGVzdF9pbnN0YW5jZV90cmFja2VyIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAg
ICAgIi8vYWJzbC9mbGFnczpmbGFnIiwKKyAgICAgICAgIi8vYWJzbC9oYXNoOmhhc2hfdGVzdGlu
ZyIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVf
dHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC90eXBl
czpjb21wYXJlIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWlu
IiwKKyAgICBdLAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmduIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL0JVSUxELmduCmluZGV4IGEyZmJkNTQzMzE2Li4xMmViZGZmZjcwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9C
VUlMRC5nbgpAQCAtNiw2ICs2LDcgQEAgaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5n
bmkiKQogCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICB2aXNpYmlsaXR5ID0gWworICAg
ICIvL2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS93ZWJydGMvKiIsCiAgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0Omd0ZXN0IiwKQEAgLTQ5LDYgKzUwLDI1IEBAIHNvdXJjZV9zZXQoImZpeGVkX2FycmF5Iikg
ewogICBdCiB9CiAKK3NvdXJjZV9zZXQoImlubGluZWRfdmVjdG9yX2ludGVybmFsIikgeworICBj
b25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAg
Y29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2Nv
ZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19j
YyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6
YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2lubGlu
ZWRfdmVjdG9yLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb21wcmVzc2VkX3R1cGxlIiwK
KyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi9tZW1vcnkiLAorICAgICIuLi9t
ZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAiLi4vdHlwZXM6c3BhbiIsCisgIF0KK30KKwogc291cmNl
X3NldCgiaW5saW5lZF92ZWN0b3IiKSB7CiAgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQogICBjb25maWdzICs9IFsKQEAgLTYwLDYgKzgwLDcg
QEAgc291cmNlX3NldCgiaW5saW5lZF92ZWN0b3IiKSB7CiAgICAgImlubGluZWRfdmVjdG9yLmgi
LAogICBdCiAgIGRlcHMgPSBbCisgICAgIjppbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbCIsCiAgICAg
Ii4uL2FsZ29yaXRobSIsCiAgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKICAgICAiLi4vYmFz
ZTp0aHJvd19kZWxlZ2F0ZSIsCkBAIC02Nyw2ICs4OCwyMSBAQCBzb3VyY2Vfc2V0KCJpbmxpbmVk
X3ZlY3RvciIpIHsKICAgXQogfQogCitzb3VyY2Vfc2V0KCJjb3VudGluZ19hbGxvY2F0b3IiKSB7
CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBp
bGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmln
L2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMg
PSBbCisgICAgImludGVybmFsL2NvdW50aW5nX2FsbG9jYXRvci5oIiwKKyAgXQorICB2aXNpYmls
aXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICI6KiIgXQorfQorCiBzb3VyY2Vfc2V0KCJ0ZXN0
X2luc3RhbmNlX3RyYWNrZXIiKSB7CiAgIHRlc3Rvbmx5ID0gdHJ1ZQogICBjb25maWdzIC09IFsg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KQEAgLTgxLDYgKzExNyw5
IEBAIHNvdXJjZV9zZXQoInRlc3RfaW5zdGFuY2VfdHJhY2tlciIpIHsKICAgcHVibGljID0gWwog
ICAgICJpbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuaCIsCiAgIF0KKyAgZGVwcyA9IFsK
KyAgICAiLi4vdHlwZXM6Y29tcGFyZSIsCisgIF0KICAgdmlzaWJpbGl0eSA9IFtdCiAgIHZpc2li
aWxpdHkgKz0gWyAiLi4vKiIgXQogfQpAQCAtOTksNiArMTM4LDcgQEAgc291cmNlX3NldCgiZmxh
dF9oYXNoX21hcCIpIHsKICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAogICAgICI6aGFzaF9mdW5j
dGlvbl9kZWZhdWx0cyIsCiAgICAgIjpyYXdfaGFzaF9tYXAiLAorICAgICIuLi9hbGdvcml0aG06
Y29udGFpbmVyIiwKICAgICAiLi4vbWVtb3J5IiwKICAgXQogfQpAQCAtMTE3LDYgKzE1Nyw3IEBA
IHNvdXJjZV9zZXQoImZsYXRfaGFzaF9zZXQiKSB7CiAgICAgIjpjb250YWluZXJfbWVtb3J5IiwK
ICAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAogICAgICI6cmF3X2hhc2hfc2V0IiwKKyAg
ICAiLi4vYWxnb3JpdGhtOmNvbnRhaW5lciIsCiAgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
ICAgICAiLi4vbWVtb3J5IiwKICAgXQpAQCAtMTM3LDYgKzE3OCw3IEBAIHNvdXJjZV9zZXQoIm5v
ZGVfaGFzaF9tYXAiKSB7CiAgICAgIjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzIiwKICAgICAiOm5v
ZGVfaGFzaF9wb2xpY3kiLAogICAgICI6cmF3X2hhc2hfbWFwIiwKKyAgICAiLi4vYWxnb3JpdGht
OmNvbnRhaW5lciIsCiAgICAgIi4uL21lbW9yeSIsCiAgIF0KIH0KQEAgLTE1Niw2ICsxOTgsNyBA
QCBzb3VyY2Vfc2V0KCJub2RlX2hhc2hfc2V0IikgewogICAgICI6aGFzaF9mdW5jdGlvbl9kZWZh
dWx0cyIsCiAgICAgIjpub2RlX2hhc2hfcG9saWN5IiwKICAgICAiOnJhd19oYXNoX3NldCIsCisg
ICAgIi4uL2FsZ29yaXRobTpjb250YWluZXIiLAogICAgICIuLi9tZW1vcnkiLAogICBdCiB9CkBA
IC0yNzMsNiArMzE2LDMxIEBAIHNvdXJjZV9zZXQoImhhc2h0YWJsZV9kZWJ1Z19ob29rcyIpIHsK
ICAgXQogfQogCitzb3VyY2Vfc2V0KCJoYXNodGFibGV6X3NhbXBsZXIiKSB7CisgIGNvbmZpZ3Mg
LT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdz
ICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAg
XQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2lu
Y2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaHRhYmxlel9z
YW1wbGVyLmgiLAorICBdCisgIHNvdXJjZXMgPSBbCisgICAgImludGVybmFsL2hhc2h0YWJsZXpf
c2FtcGxlci5jYyIsCisgICAgImludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlcl9mb3JjZV93ZWFr
X2RlZmluaXRpb24uY2MiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpoYXZlX3NzZSIsCisgICAg
Ii4uL2Jhc2UiLAorICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL2RlYnVnZ2lu
ZzpzdGFja3RyYWNlIiwKKyAgICAiLi4vbWVtb3J5IiwKKyAgICAiLi4vc3luY2hyb25pemF0aW9u
IiwKKyAgICAiLi4vdXRpbGl0eSIsCisgIF0KK30KKwogc291cmNlX3NldCgibm9kZV9oYXNoX3Bv
bGljeSIpIHsKICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1
bV9jb2RlIiBdCiAgIGNvbmZpZ3MgKz0gWwpAQCAtMjk4LDYgKzM2NiwzNyBAQCBzb3VyY2Vfc2V0
KCJyYXdfaGFzaF9tYXAiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjpjb250YWluZXJfbWVtb3J5IiwK
ICAgICAiOnJhd19oYXNoX3NldCIsCisgICAgIi4uL2Jhc2U6dGhyb3dfZGVsZWdhdGUiLAorICBd
Cit9CisKK3NvdXJjZV9zZXQoImhhdmVfc3NlIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQv
Y29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2Nv
bmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIg
XQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2hhdmVfc3NlLmgiLAorICBdCisgIHZpc2li
aWxpdHkgPSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIjoqIiBdCit9CisKK3NvdXJjZV9zZXQoImNv
bW1vbiIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1
bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpu
b19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVm
YXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJp
bnRlcm5hbC9jb21tb24uaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vbWV0YTp0eXBlX3Ry
YWl0cyIsCisgICAgIi4uL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQogCkBAIC0zMTUsMTAgKzQx
NCwxMyBAQCBzb3VyY2Vfc2V0KCJyYXdfaGFzaF9zZXQiKSB7CiAgICAgImludGVybmFsL3Jhd19o
YXNoX3NldC5oIiwKICAgXQogICBkZXBzID0gWworICAgICI6Y29tbW9uIiwKICAgICAiOmNvbXBy
ZXNzZWRfdHVwbGUiLAogICAgICI6Y29udGFpbmVyX21lbW9yeSIsCiAgICAgIjpoYXNoX3BvbGlj
eV90cmFpdHMiLAogICAgICI6aGFzaHRhYmxlX2RlYnVnX2hvb2tzIiwKKyAgICAiOmhhc2h0YWJs
ZXpfc2FtcGxlciIsCisgICAgIjpoYXZlX3NzZSIsCiAgICAgIjpsYXlvdXQiLAogICAgICIuLi9i
YXNlOmJpdHMiLAogICAgICIuLi9iYXNlOmNvbmZpZyIsCkBAIC0zMjYsNyArNDI4LDYgQEAgc291
cmNlX3NldCgicmF3X2hhc2hfc2V0IikgewogICAgICIuLi9iYXNlOmVuZGlhbiIsCiAgICAgIi4u
L21lbW9yeSIsCiAgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAotICAgICIuLi90eXBlczpvcHRp
b25hbCIsCiAgICAgIi4uL3V0aWxpdHkiLAogICBdCiB9CkBAIC00MzEsNiArNTMyLDQxIEBAIHNv
dXJjZV9zZXQoInVub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdCIpIHsKICAgZGVwcyA9IFsK
ICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAogICAgICI6aGFzaF9wb2xpY3lfdGVzdGlu
ZyIsCisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAor
ICBdCit9CisKK3NvdXJjZV9zZXQoInVub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0IikgeworICB0
ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpj
aHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21w
aWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFi
c2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWwor
ICAgICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdC5oIiwKKyAgXQorICBkZXBz
ID0gWworICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAiLy90ZXN0aW5nL2d0ZXN0IiwK
KyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdCIpIHsKKyAg
dGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6
Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsK
KyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tZW1iZXJzX3Rlc3QuaCIsCisgIF0KKyAgZGVw
cyA9IFsKKyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCiAgICAgIi8vdGVzdGluZy9ndGVzdCIs
CiAgIF0KIH0KQEAgLTQ3MCwzICs2MDYsMzMgQEAgc291cmNlX3NldCgidW5vcmRlcmVkX3NldF9t
b2RpZmllcnNfdGVzdCIpIHsKICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgXQogfQorCitzb3Vy
Y2Vfc2V0KCJidHJlZSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9
IFsKKyAgICAiaW50ZXJuYWwvYnRyZWUuaCIsCisgICAgImludGVybmFsL2J0cmVlX2NvbnRhaW5l
ci5oIiwKKyAgXQorICBwdWJsaWMgPSBbCisgICAgImJ0cmVlX21hcC5oIiwKKyAgICAiYnRyZWVf
c2V0LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb21tb24iLAorICAgICI6Y29tcHJlc3Nl
ZF90dXBsZSIsCisgICAgIjpjb250YWluZXJfbWVtb3J5IiwKKyAgICAiOmxheW91dCIsCisgICAg
Ii4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vYmFzZTp0aHJvd19kZWxlZ2F0ZSIsCisg
ICAgIi4uL21lbW9yeSIsCisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi9zdHJp
bmdzIiwKKyAgICAiLi4vdHlwZXM6Y29tcGFyZSIsCisgICAgIi4uL3V0aWxpdHkiLAorICBdCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvQ01ha2VMaXN0cy50eHQKaW5kZXggOWU0MDY5MDJiMDUuLjZjYWJlMGM5MzA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
MTQsMTYzICsxNCw5MDIgQEAKICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAjCiAK
LQotbGlzdChBUFBFTkQgQ09OVEFJTkVSX1BVQkxJQ19IRUFERVJTCi0gICJmaXhlZF9hcnJheS5o
IgotICAiZmxhdF9oYXNoX21hcC5oIgotICAiZmxhdF9oYXNoX3NldC5oIgotICAiaW5saW5lZF92
ZWN0b3IuaCIKLSAgIm5vZGVfaGFzaF9tYXAuaCIKLSAgIm5vZGVfaGFzaF9zZXQuaCIKLSkKLQot
Ci1saXN0KEFQUEVORCBDT05UQUlORVJfSU5URVJOQUxfSEVBREVSUwotICAiaW50ZXJuYWwvY29t
cHJlc3NlZF90dXBsZS5oIgotICAiaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIgotICAiaW50
ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIgotICAiaW50ZXJuYWwvaGFzaF9nZW5lcmF0
b3JfdGVzdGluZy5oIgotICAiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIgotICAiaW50
ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzLmgiCi0gICJpbnRlcm5hbC9oYXNodGFibGVfZGVidWcu
aCIKLSAgImludGVybmFsL2xheW91dC5oIgotICAiaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5o
IgotICAiaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiCi0gICJpbnRlcm5hbC9yYXdfaGFzaF9zZXQu
aCIKLSAgImludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5oIgotICAiaW50ZXJuYWwvdHJh
Y2tlZC5oIgotICAiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgiCi0g
ICJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgiCi0gICJpbnRlcm5hbC91bm9y
ZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgiCi0gICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X2Nv
bnN0cnVjdG9yX3Rlc3QuaCIKLSAgImludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3Qu
aCIKLSAgImludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaCIKLSkKLQotCi1h
YnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfY29udGFpbmVyCi0gIFNPVVJDRVMKLSAg
ICAiaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmNjIgotICBFWFBPUlRfTkFNRQorIyBUaGlzIGlzIGRl
cHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgSXQgYWxzbyBkb2Vz
bid0IGRvCisjIGFueXRoaW5nIGFueXdheXMuICBQcmVmZXIgdG8gdXNlIHRoZSBsaWJyYXJ5IGFz
c29jaWF0ZWQgd2l0aCB0aGUgQVBJIHlvdSBhcmUKKyMgdXNpbmcuCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKICAgICBjb250YWluZXIKKyAgUFVCTElDCiApCiAKK2Fic2xfY2NfbGlicmFyeSgK
KyAgTkFNRQorICAgIGJ0cmVlCisgIEhEUlMKKyAgICAiYnRyZWVfbWFwLmgiCisgICAgImJ0cmVl
X3NldC5oIgorICAgICJpbnRlcm5hbC9idHJlZS5oIgorICAgICJpbnRlcm5hbC9idHJlZV9jb250
YWluZXIuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbnRhaW5l
cl9jb21tb24KKyAgICBhYnNsOjpjb21wYXJlCisgICAgYWJzbDo6Y29tcHJlc3NlZF90dXBsZQor
ICAgIGFic2w6OmNvbnRhaW5lcl9tZW1vcnkKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBh
YnNsOjpsYXlvdXQKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJz
bDo6dGhyb3dfZGVsZWdhdGUKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAgIGFic2w6OnV0aWxp
dHkKKykKIAotIwotIyMgVEVTVFMKLSMKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGJ0
cmVlX3Rlc3RfY29tbW9uCisgIGhkcnMKKyAgICAiYnRyZWVfdGVzdC5oIgorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktP
UFRTfQorICBERVBTCisgICAgYWJzbDo6YnRyZWUKKyAgICBhYnNsOjpmbGF0X2hhc2hfc2V0Cisg
ICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnRpbWUKKyAgVEVTVE9OTFkKKykKIAotbGlzdChB
UFBFTkQgVEVTVF9JTlNUQU5DRV9UUkFDS0VSX0xJQl9TUkMKLSAgImludGVybmFsL3Rlc3RfaW5z
dGFuY2VfdHJhY2tlci5jYyIKLSAgJHtDT05UQUlORVJfUFVCTElDX0hFQURFUlN9Ci0gICR7Q09O
VEFJTkVSX0lOVEVSTkFMX0hFQURFUlN9CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBidHJl
ZV90ZXN0CisgIFNSQ1MKKyAgICAiYnRyZWVfdGVzdC5jYyIKKyAgREVQUworICAgIGFic2w6OmJh
c2UKKyAgICBhYnNsOjpidHJlZQorICAgIGFic2w6OmJ0cmVlX3Rlc3RfY29tbW9uCisgICAgYWJz
bDo6Y29tcGFyZQorICAgIGFic2w6OmNvdW50aW5nX2FsbG9jYXRvcgorICAgIGFic2w6OmZsYWdz
CisgICAgYWJzbDo6aGFzaF90ZXN0aW5nCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnRl
c3RfaW5zdGFuY2VfdHJhY2tlcgorICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAgZ21vY2tfbWFp
bgogKQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBjb21wcmVzc2VkX3R1cGxlCisg
IEhEUlMKKyAgICAiaW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZS5oIgorICBDT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6dXRpbGl0eQorICBQVUJMSUMK
KykKIAotYWJzbF9saWJyYXJ5KAotICBUQVJHRVQKLSAgICB0ZXN0X2luc3RhbmNlX3RyYWNrZXJf
bGliCi0gIFNPVVJDRVMKLSAgICAke1RFU1RfSU5TVEFOQ0VfVFJBQ0tFUl9MSUJfU1JDfQotICBQ
VUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbDo6Y29udGFpbmVyCithYnNsX2NjX3Rlc3QoCisgIE5B
TUUKKyAgICBjb21wcmVzc2VkX3R1cGxlX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9jb21w
cmVzc2VkX3R1cGxlX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjphbnkKKyAgICBhYnNsOjpjb21wcmVzc2VkX3R1cGxlCisgICAgYWJz
bDo6bWVtb3J5CisgICAgYWJzbDo6b3B0aW9uYWwKKyAgICBhYnNsOjp0ZXN0X2luc3RhbmNlX3Ry
YWNrZXIKKyAgICBhYnNsOjp1dGlsaXR5CisgICAgZ21vY2tfbWFpbgogKQogCithYnNsX2NjX2xp
YnJhcnkoCisgIE5BTUUKKyAgICBmaXhlZF9hcnJheQorICBIRFJTCisgICAiZml4ZWRfYXJyYXku
aCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6
OmNvbXByZXNzZWRfdHVwbGUKKyAgICBhYnNsOjphbGdvcml0aG0KKyAgICBhYnNsOjpjb3JlX2hl
YWRlcnMKKyAgICBhYnNsOjpkeW5hbWljX2Fubm90YXRpb25zCisgICAgYWJzbDo6dGhyb3dfZGVs
ZWdhdGUKKyAgICBhYnNsOjptZW1vcnkKKyAgUFVCTElDCispCiAKK2Fic2xfY2NfdGVzdCgKKyAg
TkFNRQorICAgIGZpeGVkX2FycmF5X3Rlc3QKKyAgU1JDUworICAgICJmaXhlZF9hcnJheV90ZXN0
LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICAgICR7QUJTTF9FWENFUFRJ
T05TX0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BU
U30KKyAgREVQUworICAgIGFic2w6OmZpeGVkX2FycmF5CisgICAgYWJzbDo6ZXhjZXB0aW9uX3Rl
c3RpbmcKKyAgICBhYnNsOjpoYXNoX3Rlc3RpbmcKKyAgICBhYnNsOjptZW1vcnkKKyAgICBnbW9j
a19tYWluCispCiAKLSMgdGVzdCBmaXhlZF9hcnJheV90ZXN0Ci1zZXQoRklYRURfQVJSQVlfVEVT
VF9TUkMgImZpeGVkX2FycmF5X3Rlc3QuY2MiKQotc2V0KEZJWEVEX0FSUkFZX1RFU1RfUFVCTElD
X0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2xfdGhyb3dfZGVsZWdhdGUgdGVzdF9pbnN0YW5jZV90
cmFja2VyX2xpYikKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGZpeGVkX2FycmF5X3Rlc3Rf
bm9leGNlcHRpb25zCisgIFNSQ1MKKyAgICAiZml4ZWRfYXJyYXlfdGVzdC5jYyIKKyAgQ09QVFMK
KyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmZpeGVkX2FycmF5Cisg
ICAgYWJzbDo6ZXhjZXB0aW9uX3Rlc3RpbmcKKyAgICBhYnNsOjpoYXNoX3Rlc3RpbmcKKyAgICBh
YnNsOjptZW1vcnkKKyAgICBnbW9ja19tYWluCispCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0g
ICAgZml4ZWRfYXJyYXlfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtGSVhFRF9BUlJBWV9URVNUX1NS
Q30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7RklYRURfQVJSQVlfVEVTVF9QVUJMSUNfTElC
UkFSSUVTfQotICBQUklWQVRFX0NPTVBJTEVfRkxBR1MKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQor
ICAgIGZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdAorICBTUkNTCisgICAgImZpeGVk
X2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVT
VF9DT1BUU30KICAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7
QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmaXhlZF9h
cnJheQorICAgIGFic2w6OmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZworICAgIGdtb2NrX21haW4K
ICkKIAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJu
YWwKKyAgSERSUworICAgImludGVybmFsL2lubGluZWRfdmVjdG9yLmgiCisgIENPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb21wcmVzc2VkX3R1cGxl
CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6bWVtb3J5CisgICAgYWJzbDo6c3Bh
bgorICAgIGFic2w6OnR5cGVfdHJhaXRzCisgIFBVQkxJQworKQogCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICBpbmxpbmVkX3ZlY3RvcgorICBIRFJTCisgICAiaW5saW5lZF92ZWN0b3Iu
aCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6
OmFsZ29yaXRobQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmlubGluZWRfdmVj
dG9yX2ludGVybmFsCisgICAgYWJzbDo6dGhyb3dfZGVsZWdhdGUKKyAgICBhYnNsOjptZW1vcnkK
KyAgUFVCTElDCispCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgZml4ZWRfYXJyYXlfdGVz
dF9ub2V4Y2VwdGlvbnMKLSAgU09VUkNFUwotICAgICR7RklYRURfQVJSQVlfVEVTVF9TUkN9Ci0g
IFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0ZJWEVEX0FSUkFZX1RFU1RfUFVCTElDX0xJQlJBUklF
U30KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGNvdW50aW5nX2FsbG9jYXRvcgorICBI
RFJTCisgICAgImludGVybmFsL2NvdW50aW5nX2FsbG9jYXRvci5oIgorICBDT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0NPUFRTfQogKQogCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBpbmxp
bmVkX3ZlY3Rvcl90ZXN0CisgIFNSQ1MKKyAgICAiaW5saW5lZF92ZWN0b3JfdGVzdC5jYyIKKyAg
Q09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFH
fQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjpjb3VudGluZ19hbGxvY2F0b3IKKyAgICBhYnNsOjppbmxpbmVkX3ZlY3Rv
cgorICAgIGFic2w6OnRlc3RfaW5zdGFuY2VfdHJhY2tlcgorICAgIGFic2w6OmJhc2UKKyAgICBh
YnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpleGNlcHRpb25fdGVzdGluZworICAgIGFic2w6
Omhhc2hfdGVzdGluZworICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBn
bW9ja19tYWluCispCiAKLSMgdGVzdCBmaXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QK
LXNldChGSVhFRF9BUlJBWV9FWENFUFRJT05fU0FGRVRZX1RFU1RfU1JDICJmaXhlZF9hcnJheV9l
eGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiKQotc2V0KEZJWEVEX0FSUkFZX0VYQ0VQVElPTl9TQUZF
VFlfVEVTVF9QVUJMSUNfTElCUkFSSUVTCi0gIGFic2w6OmNvbnRhaW5lcgotICBhYnNsX2Jhc2Vf
aW50ZXJuYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nCithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
KyAgICBpbmxpbmVkX3ZlY3Rvcl90ZXN0X25vZXhjZXB0aW9ucworICBTUkNTCisgICAgImlubGlu
ZWRfdmVjdG9yX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjppbmxpbmVkX3ZlY3RvcgorICAgIGFic2w6OnRlc3RfaW5zdGFuY2VfdHJh
Y2tlcgorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpl
eGNlcHRpb25fdGVzdGluZworICAgIGFic2w6Omhhc2hfdGVzdGluZworICAgIGFic2w6Om1lbW9y
eQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9ja19tYWluCiApCiAKLWFic2xfdGVzdCgKLSAg
VEFSR0VUCi0gICAgZml4ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0Ci0gIFNPVVJDRVMK
LSAgICAke0ZJWEVEX0FSUkFZX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9TUkN9Ci0gIFBVQkxJQ19M
SUJSQVJJRVMKLSAgICAke0ZJWEVEX0FSUkFZX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9QVUJMSUNf
TElCUkFSSUVTfQotICBQUklWQVRFX0NPTVBJTEVfRkxBR1MKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQorICAgIGlubGluZWRfdmVjdG9yX2V4Y2VwdGlvbl9zYWZldHlfdGVzdAorICBTUkNTCisgICAg
ImlubGluZWRfdmVjdG9yX2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfVEVTVF9DT1BUU30KICAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BU
UworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNs
OjppbmxpbmVkX3ZlY3RvcgorICAgIGFic2w6OmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZworICAg
IGdtb2NrX21haW4KICkKIAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgdGVzdF9pbnN0
YW5jZV90cmFja2VyCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2Vy
LmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmNjIgorICBD
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29tcGFy
ZQorICBURVNUT05MWQorKQogCi0jIHRlc3QgaW5saW5lZF92ZWN0b3JfdGVzdAotc2V0KElOTElO
RURfVkVDVE9SX1RFU1RfU1JDICJpbmxpbmVkX3ZlY3Rvcl90ZXN0LmNjIikKLXNldChJTkxJTkVE
X1ZFQ1RPUl9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSBhYnNsX3Rocm93X2RlbGVn
YXRlIHRlc3RfaW5zdGFuY2VfdHJhY2tlcl9saWIpCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAg
ICB0ZXN0X2luc3RhbmNlX3RyYWNrZXJfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3Rlc3Rf
aW5zdGFuY2VfdHJhY2tlcl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRT
fQorICBERVBTCisgICAgYWJzbDo6dGVzdF9pbnN0YW5jZV90cmFja2VyCisgICAgZ21vY2tfbWFp
bgorKQogCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIGlubGluZWRfdmVjdG9yX3Rlc3QKLSAg
U09VUkNFUwotICAgICR7SU5MSU5FRF9WRUNUT1JfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICAke0lOTElORURfVkVDVE9SX1RFU1RfUFVCTElDX0xJQlJBUklFU30KK2Fic2xfY2Nf
bGlicmFyeSgKKyAgTkFNRQorICAgIGZsYXRfaGFzaF9tYXAKKyAgSERSUworICAgICJmbGF0X2hh
c2hfbWFwLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAg
ICBhYnNsOjpjb250YWluZXJfbWVtb3J5CisgICAgYWJzbDo6aGFzaF9mdW5jdGlvbl9kZWZhdWx0
cworICAgIGFic2w6OnJhd19oYXNoX21hcAorICAgIGFic2w6OmFsZ29yaXRobV9jb250YWluZXIK
KyAgICBhYnNsOjptZW1vcnkKKyAgUFVCTElDCiApCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0g
ICAgaW5saW5lZF92ZWN0b3JfdGVzdF9ub2V4Y2VwdGlvbnMKLSAgU09VUkNFUwotICAgICR7SU5M
SU5FRF9WRUNUT1JfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0lOTElORURf
VkVDVE9SX1RFU1RfUFVCTElDX0xJQlJBUklFU30KLSAgUFJJVkFURV9DT01QSUxFX0ZMQUdTCi0g
ICAgJHtBQlNMX05PRVhDRVBUSU9OX0NYWEZMQUdTfQorYWJzbF9jY190ZXN0KAorICBOQU1FCisg
ICAgZmxhdF9oYXNoX21hcF90ZXN0CisgIFNSQ1MKKyAgICAiZmxhdF9oYXNoX21hcF90ZXN0LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Zmxh
dF9oYXNoX21hcAorICAgIGFic2w6Omhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcKKyAgICBhYnNsOjp1
bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFwX2xv
b2t1cF90ZXN0CisgICAgYWJzbDo6dW5vcmRlcmVkX21hcF9tZW1iZXJzX3Rlc3QKKyAgICBhYnNs
Ojp1bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0CisgICAgYWJzbDo6YW55CisgICAgZ21vY2tf
bWFpbgogKQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBmbGF0X2hhc2hfc2V0Cisg
IEhEUlMKKyAgICAiZmxhdF9oYXNoX3NldC5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxU
X0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29udGFpbmVyX21lbW9yeQorICAgIGFic2w6Omhh
c2hfZnVuY3Rpb25fZGVmYXVsdHMKKyAgICBhYnNsOjpyYXdfaGFzaF9zZXQKKyAgICBhYnNsOjph
bGdvcml0aG1fY29udGFpbmVyCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6bWVt
b3J5CisgIFBVQkxJQworKQogCi0jIHRlc3QgdGVzdF9pbnN0YW5jZV90cmFja2VyX3Rlc3QKLXNl
dChURVNUX0lOU1RBTkNFX1RSQUNLRVJfVEVTVF9TUkMgImludGVybmFsL3Rlc3RfaW5zdGFuY2Vf
dHJhY2tlcl90ZXN0LmNjIikKLXNldChURVNUX0lOU1RBTkNFX1RSQUNLRVJfVEVTVF9QVUJMSUNf
TElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbF90aHJvd19kZWxlZ2F0ZSB0ZXN0X2luc3RhbmNlX3Ry
YWNrZXJfbGliKQorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgZmxhdF9oYXNoX3NldF90ZXN0
CisgIFNSQ1MKKyAgICAiZmxhdF9oYXNoX3NldF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJT
TF9URVNUX0NPUFRTfQorICAgICItRFVOT1JERVJFRF9TRVRfQ1hYMTciCisgIERFUFMKKyAgICBh
YnNsOjpmbGF0X2hhc2hfc2V0CisgICAgYWJzbDo6aGFzaF9nZW5lcmF0b3JfdGVzdGluZworICAg
IGFic2w6OnVub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdAorICAgIGFic2w6OnVub3JkZXJl
ZF9zZXRfbG9va3VwX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdAor
ICAgIGFic2w6OnVub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QKKyAgICBhYnNsOjptZW1vcnkK
KyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ21vY2tfbWFpbgorKQogCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICBub2RlX2hhc2hfbWFwCisgIEhEUlMKKyAgICAibm9kZV9oYXNoX21hcC5o
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6
Y29udGFpbmVyX21lbW9yeQorICAgIGFic2w6Omhhc2hfZnVuY3Rpb25fZGVmYXVsdHMKKyAgICBh
YnNsOjpub2RlX2hhc2hfcG9saWN5CisgICAgYWJzbDo6cmF3X2hhc2hfbWFwCisgICAgYWJzbDo6
YWxnb3JpdGhtX2NvbnRhaW5lcgorICAgIGFic2w6Om1lbW9yeQorICBQVUJMSUMKKykKIAotYWJz
bF90ZXN0KAotICBUQVJHRVQKLSAgICB0ZXN0X2luc3RhbmNlX3RyYWNrZXJfdGVzdAotICBTT1VS
Q0VTCi0gICAgJHtURVNUX0lOU1RBTkNFX1RSQUNLRVJfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJS
QVJJRVMKLSAgICAke1RFU1RfSU5TVEFOQ0VfVFJBQ0tFUl9URVNUX1BVQkxJQ19MSUJSQVJJRVN9
CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBub2RlX2hhc2hfbWFwX3Rlc3QKKyAgU1JDUwor
ICAgICJub2RlX2hhc2hfbWFwX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nCisgICAgYWJzbDo6
bm9kZV9oYXNoX21hcAorICAgIGFic2w6OnRyYWNrZWQKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFw
X2NvbnN0cnVjdG9yX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0Cisg
ICAgYWJzbDo6dW5vcmRlcmVkX21hcF9tZW1iZXJzX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRf
bWFwX21vZGlmaWVyc190ZXN0CisgICAgZ21vY2tfbWFpbgorKQorCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICBub2RlX2hhc2hfc2V0CisgIEhEUlMKKyAgICAibm9kZV9oYXNoX3NldC5o
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6
aGFzaF9mdW5jdGlvbl9kZWZhdWx0cworICAgIGFic2w6Om5vZGVfaGFzaF9wb2xpY3kKKyAgICBh
YnNsOjpyYXdfaGFzaF9zZXQKKyAgICBhYnNsOjphbGdvcml0aG1fY29udGFpbmVyCisgICAgYWJz
bDo6bWVtb3J5CisgIFBVQkxJQworKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBub2Rl
X2hhc2hfc2V0X3Rlc3QKKyAgU1JDUworICAgICJub2RlX2hhc2hfc2V0X3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgICAgIi1EVU5PUkRFUkVEX1NFVF9DWFgxNyIK
KyAgREVQUworICAgIGFic2w6Omhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcKKyAgICBhYnNsOjpub2Rl
X2hhc2hfc2V0CisgICAgYWJzbDo6dW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0CisgICAg
YWJzbDo6dW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9zZXRf
bWVtYmVyc190ZXN0CisgICAgYWJzbDo6dW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdAorICAg
IGdtb2NrX21haW4KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgY29udGFpbmVy
X21lbW9yeQorICBIRFJTCisgICAgImludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKKyAgQ09Q
VFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6Om1lbW9yeQor
ICAgIGFic2w6OnV0aWxpdHkKKyAgUFVCTElDCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQor
ICAgIGNvbnRhaW5lcl9tZW1vcnlfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL2NvbnRhaW5l
cl9tZW1vcnlfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQ
UworICAgIGFic2w6OmNvbnRhaW5lcl9tZW1vcnkKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ21v
Y2tfbWFpbgorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBoYXNoX2Z1bmN0aW9u
X2RlZmF1bHRzCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5o
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6
Y29uZmlnCisgICAgYWJzbDo6aGFzaAorICAgIGFic2w6OnN0cmluZ3MKKyAgUFVCTElDCispCisK
K2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGhhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVzdAor
ICBTUkNTCisgICAgImludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVzdC5jYyIKKyAg
Q09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6Omhhc2hfZnVu
Y3Rpb25fZGVmYXVsdHMKKyAgICBhYnNsOjpoYXNoCisgICAgYWJzbDo6c3RyaW5ncworICAgIGdt
b2NrX21haW4KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgaGFzaF9nZW5lcmF0
b3JfdGVzdGluZworICBIRFJTCisgICAgImludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3Rpbmcu
aCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaF9wb2xp
Y3lfdGVzdGluZworICAgIGFic2w6Om1ldGEKKyAgICBhYnNsOjpzdHJpbmdzCisgIFRFU1RPTkxZ
CispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGhhc2hfcG9saWN5X3Rlc3RpbmcK
KyAgSERSUworICAgICJpbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmgiCisgIENPUFRTCisg
ICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoCisgICAgYWJzbDo6
c3RyaW5ncworICBURVNUT05MWQorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBoYXNo
X3BvbGljeV90ZXN0aW5nX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9oYXNoX3BvbGljeV90
ZXN0aW5nX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpoYXNoX3BvbGljeV90ZXN0aW5nCisgICAgZ21vY2tfbWFpbgorKQorCithYnNs
X2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBoYXNoX3BvbGljeV90cmFpdHMKKyAgSERSUworICAg
ICJpbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVG
QVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6Om1ldGEKKyAgUFVCTElDCispCisKK2Fic2xf
Y2NfdGVzdCgKKyAgTkFNRQorICAgIGhhc2hfcG9saWN5X3RyYWl0c190ZXN0CisgIFNSQ1MKKyAg
ICAiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoX3BvbGljeV90cmFpdHMKKyAg
ICBnbW9ja19tYWluCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGhhc2h0YWJs
ZXpfc2FtcGxlcgorICBIRFJTCisgICAgImludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5oIgor
ICBTUkNTCisgICAgImludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5jYyIKKyAgICAiaW50ZXJu
YWwvaGFzaHRhYmxlel9zYW1wbGVyX2ZvcmNlX3dlYWtfZGVmaW5pdGlvbi5jYyIKKyAgQ09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBh
YnNsOjpoYXZlX3NzZQorICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorKQorCithYnNsX2NjX3Rl
c3QoCisgIE5BTUUKKyAgICBoYXNodGFibGV6X3NhbXBsZXJfdGVzdAorICBTUkNTCisgICAgImlu
dGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlcl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaHRhYmxlel9zYW1wbGVyCisgICAgYWJz
bDo6aGF2ZV9zc2UKKyAgICBnbW9ja19tYWluCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFN
RQorICAgIGhhc2h0YWJsZV9kZWJ1ZworICBIRFJTCisgICAgImludGVybmFsL2hhc2h0YWJsZV9k
ZWJ1Zy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAg
YWJzbDo6aGFzaHRhYmxlX2RlYnVnX2hvb2tzCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFN
RQorICAgIGhhc2h0YWJsZV9kZWJ1Z19ob29rcworICBIRFJTCisgICAgImludGVybmFsL2hhc2h0
YWJsZV9kZWJ1Z19ob29rcy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQor
ICBQVUJMSUMKKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgaGF2ZV9zc2UKKyAg
SERSUworICAgICJpbnRlcm5hbC9oYXZlX3NzZS5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQogKQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBub2RlX2hhc2hf
cG9saWN5CisgIEhEUlMKKyAgICAiaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIgorICBDT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBQVUJMSUMKKykKKworYWJzbF9jY190ZXN0
KAorICBOQU1FCisgICAgbm9kZV9oYXNoX3BvbGljeV90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJu
YWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaF9wb2xpY3lfdHJhaXRzCisgICAgYWJzbDo6bm9k
ZV9oYXNoX3BvbGljeQorICAgIGdtb2NrX21haW4KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBO
QU1FCisgICAgcmF3X2hhc2hfbWFwCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvcmF3X2hhc2hfbWFw
LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNs
Ojpjb250YWluZXJfbWVtb3J5CisgICAgYWJzbDo6cmF3X2hhc2hfc2V0CisgICAgYWJzbDo6dGhy
b3dfZGVsZWdhdGUKKyAgUFVCTElDCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAg
IGNvbnRhaW5lcl9jb21tb24KKyAgSERSUworICAgICJpbnRlcm5hbC9jb21tb20uaCIKKyAgQ09Q
VFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnR5cGVfdHJh
aXRzCispCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUK
KyAgICByYXdfaGFzaF9zZXQKKyAgSERSUworICAgICJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIK
KyAgU1JDUworICAgICJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiaXRzCisgICAgYWJzbDo6Y29t
cHJlc3NlZF90dXBsZQorICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvbnRhaW5lcl9jb21t
b24KKyAgICBhYnNsOjpjb250YWluZXJfbWVtb3J5CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisg
ICAgYWJzbDo6ZW5kaWFuCisgICAgYWJzbDo6aGFzaF9wb2xpY3lfdHJhaXRzCisgICAgYWJzbDo6
aGFzaHRhYmxlX2RlYnVnX2hvb2tzCisgICAgYWJzbDo6aGF2ZV9zc2UKKyAgICBhYnNsOjpsYXlv
dXQKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjptZXRhCisgICAgYWJzbDo6b3B0aW9uYWwK
KyAgICBhYnNsOjp1dGlsaXR5CisgICAgYWJzbDo6aGFzaHRhYmxlel9zYW1wbGVyCisgIFBVQkxJ
QworKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICByYXdfaGFzaF9zZXRfdGVzdAotICBT
T1VSQ0VTCisgIFNSQ1MKICAgICAiaW50ZXJuYWwvcmF3X2hhc2hfc2V0X3Rlc3QuY2MiCi0gIFBV
QkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsOjpiYXNlIGFic2w6Omhhc2ggYWJzbF90aHJvd19kZWxl
Z2F0ZSB0ZXN0X2luc3RhbmNlX3RyYWNrZXJfbGliCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb250YWluZXJfbWVtb3J5CisgICAgYWJzbDo6aGFz
aF9mdW5jdGlvbl9kZWZhdWx0cworICAgIGFic2w6Omhhc2hfcG9saWN5X3Rlc3RpbmcKKyAgICBh
YnNsOjpoYXNodGFibGVfZGVidWcKKyAgICBhYnNsOjpyYXdfaGFzaF9zZXQKKyAgICBhYnNsOjpi
YXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6c3RyaW5ncworICAgIGdtb2Nr
X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmF3X2hhc2hfc2V0X2FsbG9j
YXRvcl90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6cmF3X2hhc2hfc2V0CisgICAgYWJzbDo6dHJhY2tlZAorICAgIGFic2w6OmNvcmVfaGVhZGVy
cworICAgIGdtb2NrX21haW4KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgbGF5
b3V0CisgIEhEUlMKKyAgICAiaW50ZXJuYWwvbGF5b3V0LmgiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNs
OjptZXRhCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnNwYW4KKyAgICBhYnNsOjp1dGls
aXR5CisgIFBVQkxJQworKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBsYXlvdXRfdGVz
dAorICBTUkNTCisgICAgImludGVybmFsL2xheW91dF90ZXN0LmNjIgorICBDT1BUUworICAgICR7
QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6bGF5b3V0CisgICAgYWJzbDo6YmFz
ZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnNwYW4KKyAgICBnbW9ja19tYWlu
CispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHRyYWNrZWQKKyAgSERSUworICAg
ICJpbnRlcm5hbC90cmFja2VkLmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
IFRFU1RPTkxZCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9t
YXBfY29uc3RydWN0b3JfdGVzdAorICBIRFJTCisgICAgImludGVybmFsL3Vub3JkZXJlZF9tYXBf
Y29uc3RydWN0b3JfdGVzdC5oIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6aGFzaF9nZW5lcmF0b3JfdGVzdGluZworICAgIGFic2w6Omhhc2hfcG9s
aWN5X3Rlc3RpbmcKKyAgICBnbW9jaworICBURVNUT05MWQorKQorCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICB1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0CisgIEhEUlMKKyAgICAiaW50
ZXJuYWwvdW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdC5oIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaF9nZW5lcmF0b3JfdGVzdGluZworICAg
IGFic2w6Omhhc2hfcG9saWN5X3Rlc3RpbmcKKyAgICBnbW9jaworICBURVNUT05MWQorKQorCith
YnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICB1bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdAor
ICBIRFJTCisgICAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0LmgiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjp0eXBlX3RyYWl0
cworICAgIGdtb2NrCisgIFRFU1RPTkxZCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQor
ICAgIHVub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QKKyAgSERSUworICAgICJpbnRlcm5hbC91
bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nCisgICAgYWJz
bDo6aGFzaF9wb2xpY3lfdGVzdGluZworICAgIGdtb2NrCisgIFRFU1RPTkxZCispCisKK2Fic2xf
Y2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdAor
ICBIRFJTCisgICAgImludGVybmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgor
ICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaF9n
ZW5lcmF0b3JfdGVzdGluZworICAgIGFic2w6Omhhc2hfcG9saWN5X3Rlc3RpbmcKKyAgICBnbW9j
aworICBURVNUT05MWQorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICB1bm9yZGVy
ZWRfc2V0X2xvb2t1cF90ZXN0CisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9s
b29rdXBfdGVzdC5oIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6aGFzaF9nZW5lcmF0b3JfdGVzdGluZworICAgIGFic2w6Omhhc2hfcG9saWN5X3Rl
c3RpbmcKKyAgICBnbW9jaworICBURVNUT05MWQorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5B
TUUKKyAgICB1bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdAorICBIRFJTCisgICAgImludGVybmFs
L3Vub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIERFUFMKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAgIGdtb2NrCisgIFRFU1RP
TkxZCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9zZXRfbW9k
aWZpZXJzX3Rlc3QKKyAgSERSUworICAgICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVy
c190ZXN0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nCisgICAgYWJzbDo6aGFzaF9wb2xpY3lfdGVzdGlu
ZworICAgIGdtb2NrCisgIFRFU1RPTkxZCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAg
IHVub3JkZXJlZF9zZXRfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3Vub3JkZXJlZF9zZXRf
dGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFi
c2w6OnVub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9z
ZXRfbG9va3VwX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdAorICAg
IGFic2w6OnVub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QKKyAgICBnbW9ja19tYWluCispCisK
K2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9tYXBfdGVzdAorICBTUkNTCisg
ICAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xf
VEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnVub3JkZXJlZF9tYXBfY29uc3RydWN0b3Jf
dGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QKKyAgICBhYnNsOjp1bm9y
ZGVyZWRfbWFwX21lbWJlcnNfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9tYXBfbW9kaWZpZXJz
X3Rlc3QKKyAgICBnbW9ja19tYWluCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvYnRy
ZWVfbWFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvYnRyZWVfbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjlmMzVmNjM5NDlkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2J0cmVlX21hcC5oCkBAIC0wLDAgKzEsNzA1IEBACisvLyBDb3B5cmlnaHQg
MjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gRmlsZTogYnRyZWVfbWFwLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhp
cyBoZWFkZXIgZmlsZSBkZWZpbmVzIEItdHJlZSBtYXBzOiBzb3J0ZWQgYXNzb2NpYXRpdmUgY29u
dGFpbmVycyBtYXBwaW5nCisvLyBrZXlzIHRvIHZhbHVlcy4KKy8vCisvLyAgICAgKiBgYWJzbDo6
YnRyZWVfbWFwPD5gCisvLyAgICAgKiBgYWJzbDo6YnRyZWVfbXVsdGltYXA8PmAKKy8vCisvLyBU
aGVzZSBCLXRyZWUgdHlwZXMgYXJlIHNpbWlsYXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdHlwZXMg
aW4gdGhlIFNUTAorLy8gKGBzdGQ6Om1hcGAgYW5kIGBzdGQ6Om11bHRpbWFwYCkgYW5kIGdlbmVy
YWxseSBjb25mb3JtIHRvIHRoZSBTVEwgaW50ZXJmYWNlcworLy8gb2YgdGhvc2UgdHlwZXMuIEhv
d2V2ZXIsIGJlY2F1c2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgQi10cmVlcywgdGhleQor
Ly8gYXJlIG1vcmUgZWZmaWNpZW50IGluIG1vc3Qgc2l0dWF0aW9ucy4KKy8vCisvLyBVbmxpa2Ug
YHN0ZDo6bWFwYCBhbmQgYHN0ZDo6bXVsdGltYXBgLCB3aGljaCBhcmUgY29tbW9ubHkgaW1wbGVt
ZW50ZWQgdXNpbmcKKy8vIHJlZC1ibGFjayB0cmVlIG5vZGVzLCBCLXRyZWUgbWFwcyB1c2UgbW9y
ZSBnZW5lcmljIEItdHJlZSBub2RlcyBhYmxlIHRvIGhvbGQKKy8vIG11bHRpcGxlIHZhbHVlcyBw
ZXIgbm9kZS4gSG9sZGluZyBtdWx0aXBsZSB2YWx1ZXMgcGVyIG5vZGUgb2Z0ZW4gbWFrZXMKKy8v
IEItdHJlZSBtYXBzIHBlcmZvcm0gYmV0dGVyIHRoYW4gdGhlaXIgYHN0ZDo6bWFwYCBjb3VudGVy
cGFydHMsIGJlY2F1c2UKKy8vIG11bHRpcGxlIGVudHJpZXMgY2FuIGJlIGNoZWNrZWQgd2l0aGlu
IHRoZSBzYW1lIGNhY2hlIGhpdC4KKy8vCisvLyBIb3dldmVyLCB0aGVzZSB0eXBlcyBzaG91bGQg
bm90IGJlIGNvbnNpZGVyZWQgZHJvcC1pbiByZXBsYWNlbWVudHMgZm9yCisvLyBgc3RkOjptYXBg
IGFuZCBgc3RkOjptdWx0aW1hcGAgYXMgdGhlcmUgYXJlIHNvbWUgQVBJIGRpZmZlcmVuY2VzLCB3
aGljaCBhcmUKKy8vIG5vdGVkIGluIHRoaXMgaGVhZGVyIGZpbGUuCisvLworLy8gSW1wb3J0YW50
bHksIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucyBtYXkgaW52YWxpZGF0ZSBvdXRzdGFuZGluZyBp
dGVyYXRvcnMsCisvLyBwb2ludGVycywgYW5kIHJlZmVyZW5jZXMgdG8gZWxlbWVudHMuIFN1Y2gg
aW52YWxpZGF0aW9ucyBhcmUgdHlwaWNhbGx5IG9ubHkKKy8vIGFuIGlzc3VlIGlmIGluc2VydGlv
biBhbmQgZGVsZXRpb24gb3BlcmF0aW9ucyBhcmUgaW50ZXJsZWF2ZWQgd2l0aCB0aGUgdXNlIG9m
CisvLyBtb3JlIHRoYW4gb25lIGl0ZXJhdG9yLCBwb2ludGVyLCBvciByZWZlcmVuY2Ugc2ltdWx0
YW5lb3VzbHkuIEZvciB0aGlzCisvLyByZWFzb24sIGBpbnNlcnQoKWAgYW5kIGBlcmFzZSgpYCBy
ZXR1cm4gYSB2YWxpZCBpdGVyYXRvciBhdCB0aGUgY3VycmVudAorLy8gcG9zaXRpb24uCisKKyNp
Zm5kZWYgQUJTTF9DT05UQUlORVJfQlRSRUVfTUFQX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVS
X0JUUkVFX01BUF9IXworCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvYnRyZWUu
aCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9idHJlZV9jb250YWluZXIuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKworbmFtZXNw
YWNlIGFic2wgeworCisvLyBhYnNsOjpidHJlZV9tYXA8PgorLy8KKy8vIEFuIGBhYnNsOjpidHJl
ZV9tYXA8SywgVj5gIGlzIGFuIG9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIG9mCisvLyB1
bmlxdWUga2V5cyBhbmQgYXNzb2NpYXRlZCB2YWx1ZXMgZGVzaWduZWQgdG8gYmUgYSBtb3JlIGVm
ZmljaWVudCByZXBsYWNlbWVudAorLy8gZm9yIGBzdGQ6Om1hcGAgKGluIG1vc3QgY2FzZXMpLgor
Ly8KKy8vIEtleXMgYXJlIHNvcnRlZCB1c2luZyBhbiAob3B0aW9uYWwpIGNvbXBhcmlzb24gZnVu
Y3Rpb24sIHdoaWNoIGRlZmF1bHRzIHRvCisvLyBgc3RkOjpsZXNzPEs+YC4KKy8vCisvLyBBbiBg
YWJzbDo6YnRyZWVfbWFwPEssIFY+YCB1c2VzIGEgZGVmYXVsdCBhbGxvY2F0b3Igb2YKKy8vIGBz
dGQ6OmFsbG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgSywgVj4+YCB0byBhbGxvY2F0ZSAoYW5kIGRl
YWxsb2NhdGUpCisvLyBub2RlcywgYW5kIGNvbnN0cnVjdCBhbmQgZGVzdHJ1Y3QgdmFsdWVzIHdp
dGhpbiB0aG9zZSBub2Rlcy4gWW91IG1heQorLy8gaW5zdGVhZCBzcGVjaWZ5IGEgY3VzdG9tIGFs
bG9jYXRvciBgQWAgKHdoaWNoIGluIHR1cm4gcmVxdWlyZXMgc3BlY2lmeWluZyBhCisvLyBjdXN0
b20gY29tcGFyYXRvciBgQ2ApIGFzIGluIGBhYnNsOjpidHJlZV9tYXA8SywgViwgQywgQT5gLgor
Ly8KK3RlbXBsYXRlIDx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBDb21w
YXJlID0gc3RkOjpsZXNzPEtleT4sCisgICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFs
bG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgS2V5LCBWYWx1ZT4+PgorY2xhc3MgYnRyZWVfbWFwCisg
ICAgOiBwdWJsaWMgY29udGFpbmVyX2ludGVybmFsOjpidHJlZV9tYXBfY29udGFpbmVyPAorICAg
ICAgICAgIGNvbnRhaW5lcl9pbnRlcm5hbDo6YnRyZWU8Y29udGFpbmVyX2ludGVybmFsOjptYXBf
cGFyYW1zPAorICAgICAgICAgICAgICBLZXksIFZhbHVlLCBDb21wYXJlLCBBbGxvYywgLypUYXJn
ZXROb2RlU2l6ZT0qLzI1NiwKKyAgICAgICAgICAgICAgLypNdWx0aT0qL2ZhbHNlPj4+IHsKKyAg
dXNpbmcgQmFzZSA9IHR5cGVuYW1lIGJ0cmVlX21hcDo6YnRyZWVfbWFwX2NvbnRhaW5lcjsKKwor
IHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0b3JzIGFuZCBBc3NpZ25tZW50IE9wZXJhdG9ycworICAv
LworICAvLyBBIGBidHJlZV9tYXBgIHN1cHBvcnRzIHRoZSBzYW1lIG92ZXJsb2FkIHNldCBhcyBg
c3RkOjptYXBgCisgIC8vIGZvciBjb25zdHJ1Y3Rpb24gYW5kIGFzc2lnbm1lbnQ6CisgIC8vCisg
IC8vICogRGVmYXVsdCBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIGFic2w6OmJ0cmVlX21hcDxp
bnQsIHN0ZDo6c3RyaW5nPiBtYXAxOworICAvLworICAvLyAqIEluaXRpYWxpemVyIExpc3QgY29u
c3RydWN0b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpidHJlZV9tYXA8aW50LCBzdGQ6OnN0cmluZz4g
bWFwMiA9CisgIC8vICAgICAgIHt7MSwgImh1ZXkifSwgezIsICJkZXdleSJ9LCB7MywgImxvdWll
In0sfTsKKyAgLy8KKyAgLy8gKiBDb3B5IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6
YnRyZWVfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDMobWFwMik7CisgIC8vCisgIC8vICogQ29w
eSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisgIC8vICBhYnNsOjpidHJlZV9tYXA8aW50LCBz
dGQ6OnN0cmluZz4gbWFwNDsKKyAgLy8gIG1hcDQgPSBtYXAzOworICAvLworICAvLyAqIE1vdmUg
Y29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICAvLyBNb3ZlIGlzIGd1YXJhbnRlZWQgZWZmaWNpZW50
CisgIC8vICAgYWJzbDo6YnRyZWVfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDUoc3RkOjptb3Zl
KG1hcDQpKTsKKyAgLy8KKyAgLy8gKiBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgLy8KKyAg
Ly8gICAvLyBNYXkgYmUgZWZmaWNpZW50IGlmIGFsbG9jYXRvcnMgYXJlIGNvbXBhdGlibGUKKyAg
Ly8gICBhYnNsOjpidHJlZV9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwNjsKKyAgLy8gICBtYXA2
ID0gc3RkOjptb3ZlKG1hcDUpOworICAvLworICAvLyAqIFJhbmdlIGNvbnN0cnVjdG9yCisgIC8v
CisgIC8vICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGludCwgc3RkOjpzdHJpbmc+PiB2ID0ge3sx
LCAiYSJ9LCB7MiwgImIifX07CisgIC8vICAgYWJzbDo6YnRyZWVfbWFwPGludCwgc3RkOjpzdHJp
bmc+IG1hcDcodi5iZWdpbigpLCB2LmVuZCgpKTsKKyAgYnRyZWVfbWFwKCkge30KKyAgdXNpbmcg
QmFzZTo6QmFzZTsKKworICAvLyBidHJlZV9tYXA6OmJlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJu
cyBhbiBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgYnRyZWVfbWFwYC4KKyAgdXNp
bmcgQmFzZTo6YmVnaW47CisKKyAgLy8gYnRyZWVfbWFwOjpjYmVnaW4oKQorICAvLworICAvLyBS
ZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYGJ0cmVlX21h
cGAuCisgIHVzaW5nIEJhc2U6OmNiZWdpbjsKKworICAvLyBidHJlZV9tYXA6OmVuZCgpCisgIC8v
CisgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgYGJ0cmVlX21hcGAu
CisgIHVzaW5nIEJhc2U6OmVuZDsKKworICAvLyBidHJlZV9tYXA6OmNlbmQoKQorICAvLworICAv
LyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgYGJ0cmVlX21hcGAu
CisgIHVzaW5nIEJhc2U6OmNlbmQ7CisKKyAgLy8gYnRyZWVfbWFwOjplbXB0eSgpCisgIC8vCisg
IC8vIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGBidHJlZV9tYXBgIGlzIGVtcHR5LgorICB1
c2luZyBCYXNlOjplbXB0eTsKKworICAvLyBidHJlZV9tYXA6Om1heF9zaXplKCkKKyAgLy8KKyAg
Ly8gUmV0dXJucyB0aGUgbGFyZ2VzdCB0aGVvcmV0aWNhbCBwb3NzaWJsZSBudW1iZXIgb2YgZWxl
bWVudHMgd2l0aGluIGEKKyAgLy8gYGJ0cmVlX21hcGAgdW5kZXIgY3VycmVudCBtZW1vcnkgY29u
c3RyYWludHMuIFRoaXMgdmFsdWUgY2FuIGJlIHRob3VnaHQKKyAgLy8gb2YgYXMgdGhlIGxhcmdl
c3QgdmFsdWUgb2YgYHN0ZDo6ZGlzdGFuY2UoYmVnaW4oKSwgZW5kKCkpYCBmb3IgYQorICAvLyBg
YnRyZWVfbWFwPEtleSwgVD5gLgorICB1c2luZyBCYXNlOjptYXhfc2l6ZTsKKworICAvLyBidHJl
ZV9tYXA6OnNpemUoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMg
Y3VycmVudGx5IHdpdGhpbiB0aGUgYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OnNpemU7CisK
KyAgLy8gYnRyZWVfbWFwOjpjbGVhcigpCisgIC8vCisgIC8vIFJlbW92ZXMgYWxsIGVsZW1lbnRz
IGZyb20gdGhlIGBidHJlZV9tYXBgLiBJbnZhbGlkYXRlcyBhbnkgcmVmZXJlbmNlcywKKyAgLy8g
cG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyByZWZlcnJpbmcgdG8gY29udGFpbmVkIGVsZW1lbnRzLgor
ICB1c2luZyBCYXNlOjpjbGVhcjsKKworICAvLyBidHJlZV9tYXA6OmVyYXNlKCkKKyAgLy8KKyAg
Ly8gRXJhc2VzIGVsZW1lbnRzIHdpdGhpbiB0aGUgYGJ0cmVlX21hcGAuIElmIGFuIGVyYXNlIG9j
Y3VycywgYW55IHJlZmVyZW5jZXMsCisgIC8vIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlIGlu
dmFsaWRhdGVkLgorICAvLyBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8g
aXRlcmF0b3IgZXJhc2UoaXRlcmF0b3IgcG9zaXRpb24pOgorICAvLyBpdGVyYXRvciBlcmFzZShj
b25zdF9pdGVyYXRvciBwb3NpdGlvbik6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50
IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGBidHJlZV9tYXBgLCByZXR1cm5pbmcKKyAgLy8gICB0aGUg
aXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIG9uZSB0aGF0IHdhcyBl
cmFzZWQKKyAgLy8gICAob3IgZW5kKCkgaWYgbm9uZSBleGlzdHMpLgorICAvLworICAvLyBpdGVy
YXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCk6Cisg
IC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50cyBpbiB0aGUgb3BlbiBpbnRlcnZhbCBbYGZp
cnN0YCwgYGxhc3RgKSwgcmV0dXJuaW5nCisgIC8vICAgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRv
IHRoZSBlbGVtZW50IGFmdGVyIHRoZSBpbnRlcnZhbCB0aGF0IHdhcyBlcmFzZWQKKyAgLy8gICAo
b3IgZW5kKCkgaWYgbm9uZSBleGlzdHMpLgorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Sz4gc2l6ZV90eXBlIGVyYXNlKGNvbnN0IEsmIGtleSk6CisgIC8vCisgIC8vICAgRXJhc2VzIHRo
ZSBlbGVtZW50IHdpdGggdGhlIG1hdGNoaW5nIGtleSwgaWYgaXQgZXhpc3RzLCByZXR1cm5pbmcg
dGhlCisgIC8vICAgbnVtYmVyIG9mIGVsZW1lbnRzIGVyYXNlZC4KKyAgdXNpbmcgQmFzZTo6ZXJh
c2U7CisKKyAgLy8gYnRyZWVfbWFwOjppbnNlcnQoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVs
ZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBpbnRvIHRoZSBgYnRyZWVfbWFwYCwKKyAgLy8g
cmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVt
ZW50LCBwcm92aWRlZCB0aGF0CisgIC8vIGFuIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGRv
ZXMgbm90IGFscmVhZHkgZXhpc3QuIElmIGFuIGluc2VydGlvbgorICAvLyBvY2N1cnMsIGFueSBy
ZWZlcmVuY2VzLCBwb2ludGVycywgb3IgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgLy8g
T3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRv
cixib29sPiBpbnNlcnQoY29uc3QgdmFsdWVfdHlwZSYgdmFsdWUpOgorICAvLworICAvLyAgIElu
c2VydHMgYSB2YWx1ZSBpbnRvIHRoZSBgYnRyZWVfbWFwYC4gUmV0dXJucyBhIHBhaXIgY29uc2lz
dGluZyBvZiBhbgorICAvLyAgIGl0ZXJhdG9yIHRvIHRoZSBpbnNlcnRlZCBlbGVtZW50IChvciB0
byB0aGUgZWxlbWVudCB0aGF0IHByZXZlbnRlZCB0aGUKKyAgLy8gICBpbnNlcnRpb24pIGFuZCBh
IGJvb2wgZGVub3Rpbmcgd2hldGhlciB0aGUgaW5zZXJ0aW9uIHRvb2sgcGxhY2UuCisgIC8vCisg
IC8vIHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQodmFsdWVfdHlwZSYmIHZhbHVlKToK
KyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgbW92ZWFibGUgdmFsdWUgaW50byB0aGUgYGJ0cmVlX21h
cGAuIFJldHVybnMgYSBwYWlyCisgIC8vICAgY29uc2lzdGluZyBvZiBhbiBpdGVyYXRvciB0byB0
aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhlIGVsZW1lbnQgdGhhdAorICAvLyAgIHByZXZl
bnRlZCB0aGUgaW5zZXJ0aW9uKSBhbmQgYSBib29sIGRlbm90aW5nIHdoZXRoZXIgdGhlIGluc2Vy
dGlvbiB0b29rCisgIC8vICAgcGxhY2UuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25z
dF9pdGVyYXRvciBoaW50LCBjb25zdCB2YWx1ZV90eXBlJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9y
IGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCB2YWx1ZV90eXBlJiYgdmFsdWUpOgorICAvLwor
ICAvLyAgIEluc2VydHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBh
IG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGlu
c2VydGlvbiBzZWFyY2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlCisgIC8vICAgaW5zZXJ0
ZWQgZWxlbWVudCwgb3IgdG8gdGhlIGV4aXN0aW5nIGVsZW1lbnQgdGhhdCBwcmV2ZW50ZWQgdGhl
CisgIC8vICAgaW5zZXJ0aW9uLgorICAvLworICAvLyB2b2lkIGluc2VydChJbnB1dEl0ZXJhdG9y
IGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEluc2VydHMgYSByYW5n
ZSBvZiB2YWx1ZXMgW2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGlsaXN0KToKKyAgLy8KKyAgLy8gICBJbnNl
cnRzIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIGluaXRpYWxpemVyIGxpc3QgYGlsaXN0YC4KKyAg
dXNpbmcgQmFzZTo6aW5zZXJ0OworCisgIC8vIGJ0cmVlX21hcDo6ZW1wbGFjZSgpCisgIC8vCisg
IC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVj
dGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBidHJlZV9tYXBgLCBwcm92aWRlZCB0
aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVhZHkgZXhpc3RzLgor
ICAvLworICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBh
bHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8ga2V5IGluIHRoZSBjb250YWluZXIs
IGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQorICAv
LyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlv
dXIga2V5IGlzIG5vdAorICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8KKyAgLy8gSWYg
YW4gaW5zZXJ0aW9uIG9jY3VycywgYW55IHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVyYXRv
cnMgYXJlCisgIC8vIGludmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlOworCisgIC8v
IGJ0cmVlX21hcDo6ZW1wbGFjZV9oaW50KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50
IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0aW5nIGl0IGluLXBsYWNlCisgIC8v
IHdpdGhpbiB0aGUgYGJ0cmVlX21hcGAsIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMg
YSBub24tYmluZGluZworICAvLyBzdWdnZXN0aW9uIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5z
ZXJ0aW9uIHNlYXJjaCwgYW5kIG9ubHkgaW5zZXJ0cworICAvLyBwcm92aWRlZCB0aGF0IG5vIGVs
ZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGFscmVhZHkgZXhpc3RzLgorICAvLworICAvLyBUaGUg
ZWxlbWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVs
ZW1lbnQgd2l0aCB0aGUKKyAgLy8ga2V5IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2Ug
dGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQorICAvLyBkZXN0cm95ZWQgaW1t
ZWRpYXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIga2V5IGlzIG5vdAor
ICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8KKyAgLy8gSWYgYW4gaW5zZXJ0aW9uIG9j
Y3VycywgYW55IHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlCisgIC8vIGlu
dmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlX2hpbnQ7CisKKyAgLy8gYnRyZWVfbWFw
Ojp0cnlfZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3Bl
Y2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhl
IGBidHJlZV9tYXBgLCBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5
CisgIC8vIGFscmVhZHkgZXhpc3RzLiBVbmxpa2UgYGVtcGxhY2UoKWAsIGlmIGFuIGVsZW1lbnQg
d2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVhZHkgZXhpc3RzLCB3ZSBndWFyYW50ZWUgdGhh
dCBubyBlbGVtZW50IGlzIGNvbnN0cnVjdGVkLgorICAvLworICAvLyBJZiBhbiBpbnNlcnRpb24g
b2NjdXJzLCBhbnkgcmVmZXJlbmNlcywgcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyBhcmUKKyAgLy8g
aW52YWxpZGF0ZWQuCisgIC8vCisgIC8vIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAv
LworICAvLyAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5X2VtcGxhY2UoY29uc3Qga2V5
X3R5cGUmIGssIEFyZ3MmJi4uLiBhcmdzKToKKyAgLy8gICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJv
b2w+IHRyeV9lbXBsYWNlKGtleV90eXBlJiYgaywgQXJncyYmLi4uIGFyZ3MpOgorICAvLworICAv
LyBJbnNlcnRzICh2aWEgY29weSBvciBtb3ZlKSB0aGUgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVk
IGtleSBpbnRvIHRoZQorICAvLyBgYnRyZWVfbWFwYC4KKyAgLy8KKyAgLy8gICBpdGVyYXRvciB0
cnlfZW1wbGFjZShjb25zdF9pdGVyYXRvciBoaW50LAorICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGtleV90eXBlJiBrLCBBcmdzJiYuLi4gYXJncyk6CisgIC8vICAgaXRlcmF0b3Ig
dHJ5X2VtcGxhY2UoY29uc3RfaXRlcmF0b3IgaGludCwga2V5X3R5cGUmJiBrLCBBcmdzJiYuLi4g
YXJncyk6CisgIC8vCisgIC8vIEluc2VydHMgKHZpYSBjb3B5IG9yIG1vdmUpIHRoZSBlbGVtZW50
IG9mIHRoZSBzcGVjaWZpZWQga2V5IGludG8gdGhlCisgIC8vIGBidHJlZV9tYXBgIHVzaW5nIHRo
ZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZyBzdWdnZXN0aW9uCisgIC8vIGZv
ciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4KKyAgdXNpbmcgQmFzZTo6dHJ5
X2VtcGxhY2U7CisKKyAgLy8gYnRyZWVfbWFwOjpleHRyYWN0KCkKKyAgLy8KKyAgLy8gRXh0cmFj
dHMgdGhlIGluZGljYXRlZCBlbGVtZW50LCBlcmFzaW5nIGl0IGluIHRoZSBwcm9jZXNzLCBhbmQg
cmV0dXJucyBpdAorICAvLyBhcyBhIEMrKzE3LWNvbXBhdGlibGUgbm9kZSBoYW5kbGUuIE92ZXJs
b2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyBub2RlX3R5cGUgZXh0cmFjdChjb25z
dF9pdGVyYXRvciBwb3NpdGlvbik6CisgIC8vCisgIC8vICAgRXh0cmFjdHMgdGhlIGVsZW1lbnQg
YXQgdGhlIGluZGljYXRlZCBwb3NpdGlvbiBhbmQgcmV0dXJucyBhIG5vZGUgaGFuZGxlCisgIC8v
ICAgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBl
bmFtZSBLPiBub2RlX3R5cGUgZXh0cmFjdChjb25zdCBLJiB4KToKKyAgLy8KKyAgLy8gICBFeHRy
YWN0cyB0aGUgZWxlbWVudCB3aXRoIHRoZSBrZXkgbWF0Y2hpbmcgdGhlIHBhc3NlZCBrZXkgdmFs
dWUgYW5kCisgIC8vICAgcmV0dXJucyBhIG5vZGUgaGFuZGxlIG93bmluZyB0aGF0IGV4dHJhY3Rl
ZCBkYXRhLiBJZiB0aGUgYGJ0cmVlX21hcGAKKyAgLy8gICBkb2VzIG5vdCBjb250YWluIGFuIGVs
ZW1lbnQgd2l0aCBhIG1hdGNoaW5nIGtleSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuCisgIC8v
ICAgZW1wdHkgbm9kZSBoYW5kbGUuCisgIC8vCisgIC8vIE5PVEU6IEluIHRoaXMgY29udGV4dCwg
YG5vZGVfdHlwZWAgcmVmZXJzIHRvIHRoZSBDKysxNyBjb25jZXB0IG9mIGEKKyAgLy8gbW92ZS1v
bmx5IHR5cGUgdGhhdCBvd25zIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGVsZW1lbnRzIGlu
IGFzc29jaWF0aXZlCisgIC8vIGNvbnRhaW5lcnMgKGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNv
bS93L2NwcC9jb250YWluZXIvbm9kZV9oYW5kbGUpLgorICAvLyBJdCBkb2VzIE5PVCByZWZlciB0
byB0aGUgZGF0YSBsYXlvdXQgb2YgdGhlIHVuZGVybHlpbmcgYnRyZWUuCisgIHVzaW5nIEJhc2U6
OmV4dHJhY3Q7CisKKyAgLy8gYnRyZWVfbWFwOjptZXJnZSgpCisgIC8vCisgIC8vIEV4dHJhY3Rz
IGVsZW1lbnRzIGZyb20gYSBnaXZlbiBgc291cmNlYCBidHJlZV9tYXAgaW50byB0aGlzCisgIC8v
IGBidHJlZV9tYXBgLiBJZiB0aGUgZGVzdGluYXRpb24gYGJ0cmVlX21hcGAgYWxyZWFkeSBjb250
YWlucyBhbgorICAvLyBlbGVtZW50IHdpdGggYW4gZXF1aXZhbGVudCBrZXksIHRoYXQgZWxlbWVu
dCBpcyBub3QgZXh0cmFjdGVkLgorICB1c2luZyBCYXNlOjptZXJnZTsKKworICAvLyBidHJlZV9t
YXA6OnN3YXAoYnRyZWVfbWFwJiBvdGhlcikKKyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRoZSBjb250
ZW50cyBvZiB0aGlzIGBidHJlZV9tYXBgIHdpdGggdGhvc2Ugb2YgdGhlIGBvdGhlcmAKKyAgLy8g
YnRyZWVfbWFwLCBhdm9pZGluZyBpbnZvY2F0aW9uIG9mIGFueSBtb3ZlLCBjb3B5LCBvciBzd2Fw
IG9wZXJhdGlvbnMgb24KKyAgLy8gaW5kaXZpZHVhbCBlbGVtZW50cy4KKyAgLy8KKyAgLy8gQWxs
IGl0ZXJhdG9ycyBhbmQgcmVmZXJlbmNlcyBvbiB0aGUgYGJ0cmVlX21hcGAgcmVtYWluIHZhbGlk
LCBleGNlcHRpbmcKKyAgLy8gZm9yIHRoZSBwYXN0LXRoZS1lbmQgaXRlcmF0b3IsIHdoaWNoIGlz
IGludmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjpzd2FwOworCisgIC8vIGJ0cmVlX21hcDo6YXQo
KQorICAvLworICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBtYXBwZWQgdmFsdWUgb2Yg
dGhlIGVsZW1lbnQgd2l0aCBrZXkgZXF1aXZhbGVudAorICAvLyB0byB0aGUgcGFzc2VkIGtleS4K
KyAgdXNpbmcgQmFzZTo6YXQ7CisKKyAgLy8gYnRyZWVfbWFwOjpjb250YWlucygpCisgIC8vCisg
IC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBib29sIGNvbnRhaW5zKGNvbnN0IEsmIGtleSkgY29u
c3Q6CisgIC8vCisgIC8vIERldGVybWluZXMgd2hldGhlciBhbiBlbGVtZW50IGNvbXBhcmluZyBl
cXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAgZXhpc3RzCisgIC8vIHdpdGhpbiB0aGUgYGJ0cmVlX21h
cGAsIHJldHVybmluZyBgdHJ1ZWAgaWYgc28gb3IgYGZhbHNlYCBvdGhlcndpc2UuCisgIC8vCisg
IC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92aWRlZCB0aGF0IHRoZSBtYXAg
aXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMgY29tcGFyYXRvci4K
KyAgdXNpbmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8gYnRyZWVfbWFwOjpjb3VudCgpCisgIC8v
CisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBzaXplX3R5cGUgY291bnQoY29uc3QgSyYga2V5
KSBjb25zdDoKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbXBh
cmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAgd2l0aGluCisgIC8vIHRoZSBgYnRyZWVfbWFw
YC4gTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZWl0aGVyIGAxYCBvciBgMGAK
KyAgLy8gc2luY2UgZHVwbGljYXRlIGVsZW1lbnRzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gYSBg
YnRyZWVfbWFwYC4KKyAgLy8KKyAgLy8gU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHBy
b3ZpZGVkIHRoYXQgdGhlIG1hcCBpcyBwcm92aWRlZCBhCisgIC8vIGNvbXBhdGlibGUgaGV0ZXJv
Z2VuZW91cyBjb21wYXJhdG9yLgorICB1c2luZyBCYXNlOjpjb3VudDsKKworICAvLyBidHJlZV9t
YXA6OmVxdWFsX3JhbmdlKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNsb3NlZCByYW5nZSBbZmly
c3QsIGxhc3RdLCBkZWZpbmVkIGJ5IGEgYHN0ZDo6cGFpcmAgb2YgdHdvCisgIC8vIGl0ZXJhdG9y
cywgY29udGFpbmluZyBhbGwgZWxlbWVudHMgd2l0aCB0aGUgcGFzc2VkIGtleSBpbiB0aGUKKyAg
Ly8gYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OmVxdWFsX3JhbmdlOworCisgIC8vIGJ0cmVl
X21hcDo6ZmluZCgpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBpdGVyYXRvciBm
aW5kKGNvbnN0IEsmIGtleSk6CisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBjb25zdF9pdGVy
YXRvciBmaW5kKGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIEZpbmRzIGFuIGVsZW1l
bnQgd2l0aCB0aGUgcGFzc2VkIGBrZXlgIHdpdGhpbiB0aGUgYGJ0cmVlX21hcGAuCisgIC8vCisg
IC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92aWRlZCB0aGF0IHRoZSBtYXAg
aXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMgY29tcGFyYXRvci4K
KyAgdXNpbmcgQmFzZTo6ZmluZDsKKworICAvLyBidHJlZV9tYXA6Om9wZXJhdG9yW10oKQorICAv
LworICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YWx1ZSBtYXBwZWQgdG8gdGhlIHBh
c3NlZCBrZXkgd2l0aGluIHRoZQorICAvLyBgYnRyZWVfbWFwYCwgcGVyZm9ybWluZyBhbiBgaW5z
ZXJ0KClgIGlmIHRoZSBrZXkgZG9lcyBub3QgYWxyZWFkeQorICAvLyBleGlzdC4KKyAgLy8KKyAg
Ly8gSWYgYW4gaW5zZXJ0aW9uIG9jY3VycywgYW55IHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBp
dGVyYXRvcnMgYXJlCisgIC8vIGludmFsaWRhdGVkLiBPdGhlcndpc2UgaXRlcmF0b3JzIGFyZSBu
b3QgYWZmZWN0ZWQgYW5kIHJlZmVyZW5jZXMgYXJlIG5vdAorICAvLyBpbnZhbGlkYXRlZC4gT3Zl
cmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIFQmIG9wZXJhdG9yW10oa2V5X3R5
cGUmJiBrZXkpOgorICAvLyBUJiBvcGVyYXRvcltdKGNvbnN0IGtleV90eXBlJiBrZXkpOgorICAv
LworICAvLyAgIEluc2VydHMgYSB2YWx1ZV90eXBlIG9iamVjdCBjb25zdHJ1Y3RlZCBpbi1wbGFj
ZSBpZiB0aGUgZWxlbWVudCB3aXRoIHRoZQorICAvLyAgIGdpdmVuIGtleSBkb2VzIG5vdCBleGlz
dC4KKyAgdXNpbmcgQmFzZTo6b3BlcmF0b3JbXTsKKworICAvLyBidHJlZV9tYXA6OmdldF9hbGxv
Y2F0b3IoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBhbGxvY2F0b3IgZnVuY3Rpb24gYXNzb2Np
YXRlZCB3aXRoIHRoaXMgYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OmdldF9hbGxvY2F0b3I7
CisKKyAgLy8gYnRyZWVfbWFwOjprZXlfY29tcCgpOworICAvLworICAvLyBSZXR1cm5zIHRoZSBr
ZXkgY29tcGFyYXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBgYnRyZWVfbWFwYC4KKyAgdXNpbmcg
QmFzZTo6a2V5X2NvbXA7CisKKyAgLy8gYnRyZWVfbWFwOjp2YWx1ZV9jb21wKCk7CisgIC8vCisg
IC8vIFJldHVybnMgdGhlIHZhbHVlIGNvbXBhcmF0b3IgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYGJ0
cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OnZhbHVlX2NvbXA7Cit9OworCisvLyBhYnNsOjpzd2Fw
KGFic2w6OmJ0cmVlX21hcDw+LCBhYnNsOjpidHJlZV9tYXA8PikKKy8vCisvLyBTd2FwcyB0aGUg
Y29udGVudHMgb2YgdHdvIGBhYnNsOjpidHJlZV9tYXBgIGNvbnRhaW5lcnMuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSywgdHlwZW5hbWUgViwgdHlwZW5hbWUgQywgdHlwZW5hbWUgQT4KK3ZvaWQgc3dh
cChidHJlZV9tYXA8SywgViwgQywgQT4gJngsIGJ0cmVlX21hcDxLLCBWLCBDLCBBPiAmeSkgewor
ICByZXR1cm4geC5zd2FwKHkpOworfQorCisvLyBhYnNsOjpidHJlZV9tdWx0aW1hcAorLy8KKy8v
IEFuIGBhYnNsOjpidHJlZV9tdWx0aW1hcDxLLCBWPmAgaXMgYW4gb3JkZXJlZCBhc3NvY2lhdGl2
ZSBjb250YWluZXIgb2YKKy8vIGtleXMgYW5kIGFzc29jaWF0ZWQgdmFsdWVzIGRlc2lnbmVkIHRv
IGJlIGEgbW9yZSBlZmZpY2llbnQgcmVwbGFjZW1lbnQgZm9yCisvLyBgc3RkOjptdWx0aW1hcGAg
KGluIG1vc3QgY2FzZXMpLiBVbmxpa2UgYGFic2w6OmJ0cmVlX21hcGAsIGEgQi10cmVlIG11bHRp
bWFwCisvLyBhbGxvd3MgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCBlcXVpdmFsZW50IGtleXMuCisv
LworLy8gS2V5cyBhcmUgc29ydGVkIHVzaW5nIGFuIChvcHRpb25hbCkgY29tcGFyaXNvbiBmdW5j
dGlvbiwgd2hpY2ggZGVmYXVsdHMgdG8KKy8vIGBzdGQ6Omxlc3M8Sz5gLgorLy8KKy8vIEFuIGBh
YnNsOjpidHJlZV9tdWx0aW1hcDxLLCBWPmAgdXNlcyBhIGRlZmF1bHQgYWxsb2NhdG9yIG9mCisv
LyBgc3RkOjphbGxvY2F0b3I8c3RkOjpwYWlyPGNvbnN0IEssIFY+PmAgdG8gYWxsb2NhdGUgKGFu
ZCBkZWFsbG9jYXRlKQorLy8gbm9kZXMsIGFuZCBjb25zdHJ1Y3QgYW5kIGRlc3RydWN0IHZhbHVl
cyB3aXRoaW4gdGhvc2Ugbm9kZXMuIFlvdSBtYXkKKy8vIGluc3RlYWQgc3BlY2lmeSBhIGN1c3Rv
bSBhbGxvY2F0b3IgYEFgICh3aGljaCBpbiB0dXJuIHJlcXVpcmVzIHNwZWNpZnlpbmcgYQorLy8g
Y3VzdG9tIGNvbXBhcmF0b3IgYENgKSBhcyBpbiBgYWJzbDo6YnRyZWVfbXVsdGltYXA8SywgViwg
QywgQT5gLgorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBDb21wYXJlID0gc3RkOjpsZXNzPEtleT4sCisgICAgICAgICAgdHlwZW5hbWUgQWxsb2Mg
PSBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgS2V5LCBWYWx1ZT4+PgorY2xhc3MgYnRy
ZWVfbXVsdGltYXAKKyAgICA6IHB1YmxpYyBjb250YWluZXJfaW50ZXJuYWw6OmJ0cmVlX211bHRp
bWFwX2NvbnRhaW5lcjwKKyAgICAgICAgICBjb250YWluZXJfaW50ZXJuYWw6OmJ0cmVlPGNvbnRh
aW5lcl9pbnRlcm5hbDo6bWFwX3BhcmFtczwKKyAgICAgICAgICAgICAgS2V5LCBWYWx1ZSwgQ29t
cGFyZSwgQWxsb2MsIC8qVGFyZ2V0Tm9kZVNpemU9Ki8yNTYsCisgICAgICAgICAgICAgIC8qTXVs
dGk9Ki90cnVlPj4+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIGJ0cmVlX211bHRpbWFwOjpi
dHJlZV9tdWx0aW1hcF9jb250YWluZXI7CisKKyBwdWJsaWM6CisgIC8vIENvbnN0cnVjdG9ycyBh
bmQgQXNzaWdubWVudCBPcGVyYXRvcnMKKyAgLy8KKyAgLy8gQSBgYnRyZWVfbXVsdGltYXBgIHN1
cHBvcnRzIHRoZSBzYW1lIG92ZXJsb2FkIHNldCBhcyBgc3RkOjptdWx0aW1hcGAKKyAgLy8gZm9y
IGNvbnN0cnVjdGlvbiBhbmQgYXNzaWdubWVudDoKKyAgLy8KKyAgLy8gKiBEZWZhdWx0IGNvbnN0
cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6YnRyZWVfbXVsdGltYXA8aW50LCBzdGQ6OnN0cmlu
Zz4gbWFwMTsKKyAgLy8KKyAgLy8gKiBJbml0aWFsaXplciBMaXN0IGNvbnN0cnVjdG9yCisgIC8v
CisgIC8vICAgYWJzbDo6YnRyZWVfbXVsdGltYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwMiA9Cisg
IC8vICAgICAgIHt7MSwgImh1ZXkifSwgezIsICJkZXdleSJ9LCB7MywgImxvdWllIn0sfTsKKyAg
Ly8KKyAgLy8gKiBDb3B5IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6YnRyZWVfbXVs
dGltYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwMyhtYXAyKTsKKyAgLy8KKyAgLy8gKiBDb3B5IGFz
c2lnbm1lbnQgb3BlcmF0b3IKKyAgLy8KKyAgLy8gIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwg
c3RkOjpzdHJpbmc+IG1hcDQ7CisgIC8vICBtYXA0ID0gbWFwMzsKKyAgLy8KKyAgLy8gKiBNb3Zl
IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgLy8gTW92ZSBpcyBndWFyYW50ZWVkIGVmZmljaWVu
dAorICAvLyAgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDUoc3Rk
Ojptb3ZlKG1hcDQpKTsKKyAgLy8KKyAgLy8gKiBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAg
Ly8KKyAgLy8gICAvLyBNYXkgYmUgZWZmaWNpZW50IGlmIGFsbG9jYXRvcnMgYXJlIGNvbXBhdGli
bGUKKyAgLy8gICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXA2Owor
ICAvLyAgIG1hcDYgPSBzdGQ6Om1vdmUobWFwNSk7CisgIC8vCisgIC8vICogUmFuZ2UgY29uc3Ry
dWN0b3IKKyAgLy8KKyAgLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBzdGQ6OnN0cmlu
Zz4+IHYgPSB7ezEsICJhIn0sIHsyLCAiYiJ9fTsKKyAgLy8gICBhYnNsOjpidHJlZV9tdWx0aW1h
cDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXA3KHYuYmVnaW4oKSwgdi5lbmQoKSk7CisgIGJ0cmVlX211
bHRpbWFwKCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6
YmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcg
b2YgdGhlIGBidHJlZV9tdWx0aW1hcGAuCisgIHVzaW5nIEJhc2U6OmJlZ2luOworCisgIC8vIGJ0
cmVlX211bHRpbWFwOjpjYmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0
b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYGJ0cmVlX211bHRpbWFwYC4KKyAgdXNpbmcgQmFz
ZTo6Y2JlZ2luOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjplbmQoKQorICAvLworICAvLyBSZXR1
cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBidHJlZV9tdWx0aW1hcGAuCisgIHVz
aW5nIEJhc2U6OmVuZDsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6Y2VuZCgpCisgIC8vCisgIC8v
IFJldHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBgYnRyZWVfbXVsdGlt
YXBgLgorICB1c2luZyBCYXNlOjpjZW5kOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjplbXB0eSgp
CisgIC8vCisgIC8vIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGBidHJlZV9tdWx0aW1hcGAg
aXMgZW1wdHkuCisgIHVzaW5nIEJhc2U6OmVtcHR5OworCisgIC8vIGJ0cmVlX211bHRpbWFwOjpt
YXhfc2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGxhcmdlc3QgdGhlb3JldGljYWwgcG9z
c2libGUgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGhpbiBhCisgIC8vIGBidHJlZV9tdWx0aW1hcGAg
dW5kZXIgY3VycmVudCBtZW1vcnkgY29uc3RyYWludHMuIFRoaXMgdmFsdWUgY2FuIGJlCisgIC8v
IHRob3VnaHQgb2YgYXMgdGhlIGxhcmdlc3QgdmFsdWUgb2YgYHN0ZDo6ZGlzdGFuY2UoYmVnaW4o
KSwgZW5kKCkpYCBmb3IgYQorICAvLyBgYnRyZWVfbXVsdGltYXA8S2V5LCBUPmAuCisgIHVzaW5n
IEJhc2U6Om1heF9zaXplOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjpzaXplKCkKKyAgLy8KKyAg
Ly8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1cnJlbnRseSB3aXRoaW4gdGhlIGBi
dHJlZV9tdWx0aW1hcGAuCisgIHVzaW5nIEJhc2U6OnNpemU7CisKKyAgLy8gYnRyZWVfbXVsdGlt
YXA6OmNsZWFyKCkKKyAgLy8KKyAgLy8gUmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSB0aGUgYGJ0
cmVlX211bHRpbWFwYC4gSW52YWxpZGF0ZXMgYW55IHJlZmVyZW5jZXMsCisgIC8vIHBvaW50ZXJz
LCBvciBpdGVyYXRvcnMgcmVmZXJyaW5nIHRvIGNvbnRhaW5lZCBlbGVtZW50cy4KKyAgdXNpbmcg
QmFzZTo6Y2xlYXI7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6OmVyYXNlKCkKKyAgLy8KKyAgLy8g
RXJhc2VzIGVsZW1lbnRzIHdpdGhpbiB0aGUgYGJ0cmVlX211bHRpbWFwYC4gSWYgYW4gZXJhc2Ug
b2NjdXJzLCBhbnkKKyAgLy8gcmVmZXJlbmNlcywgcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyBhcmUg
aW52YWxpZGF0ZWQuCisgIC8vIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAv
LyBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBwb3NpdGlvbik6CisgIC8vIGl0ZXJhdG9yIGVyYXNl
KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1l
bnQgYXQgYHBvc2l0aW9uYCBvZiB0aGUgYGJ0cmVlX211bHRpbWFwYCwgcmV0dXJuaW5nCisgIC8v
ICAgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBlbGVtZW50IGFmdGVyIHRoZSBvbmUgdGhh
dCB3YXMgZXJhc2VkCisgIC8vICAgKG9yIGVuZCgpIGlmIG5vbmUgZXhpc3RzKS4KKyAgLy8KKyAg
Ly8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxh
c3QpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudHMgaW4gdGhlIG9wZW4gaW50ZXJ2
YWwgW2BmaXJzdGAsIGBsYXN0YCksIHJldHVybmluZworICAvLyAgIHRoZSBpdGVyYXRvciBwb2lu
dGluZyB0byB0aGUgZWxlbWVudCBhZnRlciB0aGUgaW50ZXJ2YWwgdGhhdCB3YXMgZXJhc2VkCisg
IC8vICAgKG9yIGVuZCgpIGlmIG5vbmUgZXhpc3RzKS4KKyAgLy8KKyAgLy8gdGVtcGxhdGUgPHR5
cGVuYW1lIEs+IHNpemVfdHlwZSBlcmFzZShjb25zdCBLJiBrZXkpOgorICAvLworICAvLyAgIEVy
YXNlcyB0aGUgZWxlbWVudHMgbWF0Y2hpbmcgdGhlIGtleSwgaWYgYW55IGV4aXN0LCByZXR1cm5p
bmcgdGhlCisgIC8vICAgbnVtYmVyIG9mIGVsZW1lbnRzIGVyYXNlZC4KKyAgdXNpbmcgQmFzZTo6
ZXJhc2U7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6Omluc2VydCgpCisgIC8vCisgIC8vIEluc2Vy
dHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGludG8gdGhlIGBidHJlZV9tdWx0
aW1hcGAsCisgIC8vIHJldHVybmluZyBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgbmV3bHkg
aW5zZXJ0ZWQgZWxlbWVudC4KKyAgLy8gQW55IHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVy
YXRvcnMgYXJlIGludmFsaWRhdGVkLiAgT3ZlcmxvYWRzIGFyZQorICAvLyBsaXN0ZWQgYmVsb3cu
CisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdCB2YWx1ZV90eXBlJiB2YWx1ZSk6Cisg
IC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlIGludG8gdGhlIGBidHJlZV9tdWx0aW1hcGAsIHJl
dHVybmluZyBhbiBpdGVyYXRvciB0byB0aGUKKyAgLy8gICBpbnNlcnRlZCBlbGVtZW50LgorICAv
LworICAvLyBpdGVyYXRvciBpbnNlcnQodmFsdWVfdHlwZSYmIHZhbHVlKToKKyAgLy8KKyAgLy8g
ICBJbnNlcnRzIGEgbW92ZWFibGUgdmFsdWUgaW50byB0aGUgYGJ0cmVlX211bHRpbWFwYCwgcmV0
dXJuaW5nIGFuIGl0ZXJhdG9yCisgIC8vICAgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQuCisgIC8v
CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBjb25zdCB2YWx1ZV90
eXBlJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCB2
YWx1ZV90eXBlJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSwgdXNpbmcg
dGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8g
ICBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2guIFJldHVybnMgYW4gaXRl
cmF0b3IgdG8gdGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudC4KKyAgLy8KKyAgLy8gdm9pZCBp
bnNlcnQoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KToKKyAgLy8KKyAg
Ly8gICBJbnNlcnRzIGEgcmFuZ2Ugb2YgdmFsdWVzIFtgZmlyc3RgLCBgbGFzdGApLgorICAvLwor
ICAvLyB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW5pdF90eXBlPiBpbGlzdCk6
CisgIC8vCisgIC8vICAgSW5zZXJ0cyB0aGUgZWxlbWVudHMgd2l0aGluIHRoZSBpbml0aWFsaXpl
ciBsaXN0IGBpbGlzdGAuCisgIHVzaW5nIEJhc2U6Omluc2VydDsKKworICAvLyBidHJlZV9tdWx0
aW1hcDo6ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3Bl
Y2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhl
IGBidHJlZV9tdWx0aW1hcGAuIEFueSByZWZlcmVuY2VzLCBwb2ludGVycywgb3IgaXRlcmF0b3Jz
IGFyZQorICAvLyBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZTsKKworICAvLyBi
dHJlZV9tdWx0aW1hcDo6ZW1wbGFjZV9oaW50KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVt
ZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0aW5nIGl0IGluLXBsYWNlCisg
IC8vIHdpdGhpbiB0aGUgYGJ0cmVlX211bHRpbWFwYCwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBo
aW50YCBhcyBhIG5vbi1iaW5kaW5nCisgIC8vIHN1Z2dlc3Rpb24gZm9yIHdoZXJlIHRvIGJlZ2lu
IHRoZSBpbnNlcnRpb24gc2VhcmNoLgorICAvLworICAvLyBBbnkgcmVmZXJlbmNlcywgcG9pbnRl
cnMsIG9yIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIHVzaW5nIEJhc2U6OmVtcGxhY2Vf
aGludDsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6ZXh0cmFjdCgpCisgIC8vCisgIC8vIEV4dHJh
Y3RzIHRoZSBpbmRpY2F0ZWQgZWxlbWVudCwgZXJhc2luZyBpdCBpbiB0aGUgcHJvY2VzcywgYW5k
IHJldHVybnMgaXQKKyAgLy8gYXMgYSBDKysxNy1jb21wYXRpYmxlIG5vZGUgaGFuZGxlLiBPdmVy
bG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3QoY29u
c3RfaXRlcmF0b3IgcG9zaXRpb24pOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBlbGVtZW50
IGF0IHRoZSBpbmRpY2F0ZWQgcG9zaXRpb24gYW5kIHJldHVybnMgYSBub2RlIGhhbmRsZQorICAv
LyAgIG93bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLgorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSz4gbm9kZV90eXBlIGV4dHJhY3QoY29uc3QgSyYgeCk6CisgIC8vCisgIC8vICAgRXh0
cmFjdHMgdGhlIGVsZW1lbnQgd2l0aCB0aGUga2V5IG1hdGNoaW5nIHRoZSBwYXNzZWQga2V5IHZh
bHVlIGFuZAorICAvLyAgIHJldHVybnMgYSBub2RlIGhhbmRsZSBvd25pbmcgdGhhdCBleHRyYWN0
ZWQgZGF0YS4gSWYgdGhlIGBidHJlZV9tdWx0aW1hcGAKKyAgLy8gICBkb2VzIG5vdCBjb250YWlu
IGFuIGVsZW1lbnQgd2l0aCBhIG1hdGNoaW5nIGtleSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFu
CisgIC8vICAgZW1wdHkgbm9kZSBoYW5kbGUuCisgIC8vCisgIC8vIE5PVEU6IEluIHRoaXMgY29u
dGV4dCwgYG5vZGVfdHlwZWAgcmVmZXJzIHRvIHRoZSBDKysxNyBjb25jZXB0IG9mIGEKKyAgLy8g
bW92ZS1vbmx5IHR5cGUgdGhhdCBvd25zIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGVsZW1l
bnRzIGluIGFzc29jaWF0aXZlCisgIC8vIGNvbnRhaW5lcnMgKGh0dHBzOi8vZW4uY3BwcmVmZXJl
bmNlLmNvbS93L2NwcC9jb250YWluZXIvbm9kZV9oYW5kbGUpLgorICAvLyBJdCBkb2VzIE5PVCBy
ZWZlciB0byB0aGUgZGF0YSBsYXlvdXQgb2YgdGhlIHVuZGVybHlpbmcgYnRyZWUuCisgIHVzaW5n
IEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6Om1lcmdlKCkKKyAgLy8KKyAg
Ly8gRXh0cmFjdHMgZWxlbWVudHMgZnJvbSBhIGdpdmVuIGBzb3VyY2VgIGJ0cmVlX211bHRpbWFw
IGludG8gdGhpcworICAvLyBgYnRyZWVfbXVsdGltYXBgLiBJZiB0aGUgZGVzdGluYXRpb24gYGJ0
cmVlX211bHRpbWFwYCBhbHJlYWR5IGNvbnRhaW5zIGFuCisgIC8vIGVsZW1lbnQgd2l0aCBhbiBl
cXVpdmFsZW50IGtleSwgdGhhdCBlbGVtZW50IGlzIG5vdCBleHRyYWN0ZWQuCisgIHVzaW5nIEJh
c2U6Om1lcmdlOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjpzd2FwKGJ0cmVlX211bHRpbWFwJiBv
dGhlcikKKyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiB0aGlzIGBidHJlZV9t
dWx0aW1hcGAgd2l0aCB0aG9zZSBvZiB0aGUgYG90aGVyYAorICAvLyBidHJlZV9tdWx0aW1hcCwg
YXZvaWRpbmcgaW52b2NhdGlvbiBvZiBhbnkgbW92ZSwgY29weSwgb3Igc3dhcCBvcGVyYXRpb25z
CisgIC8vIG9uIGluZGl2aWR1YWwgZWxlbWVudHMuCisgIC8vCisgIC8vIEFsbCBpdGVyYXRvcnMg
YW5kIHJlZmVyZW5jZXMgb24gdGhlIGBidHJlZV9tdWx0aW1hcGAgcmVtYWluIHZhbGlkLAorICAv
LyBleGNlcHRpbmcgZm9yIHRoZSBwYXN0LXRoZS1lbmQgaXRlcmF0b3IsIHdoaWNoIGlzIGludmFs
aWRhdGVkLgorICB1c2luZyBCYXNlOjpzd2FwOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjpjb250
YWlucygpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBib29sIGNvbnRhaW5zKGNv
bnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIERldGVybWluZXMgd2hldGhlciBhbiBlbGVt
ZW50IGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAgZXhpc3RzCisgIC8vIHdpdGhp
biB0aGUgYGJ0cmVlX211bHRpbWFwYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBvciBgZmFsc2Vg
IG90aGVyd2lzZS4KKyAgLy8KKyAgLy8gU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHBy
b3ZpZGVkIHRoYXQgdGhlIG1hcCBpcyBwcm92aWRlZCBhCisgIC8vIGNvbXBhdGlibGUgaGV0ZXJv
Z2VuZW91cyBjb21wYXJhdG9yLgorICB1c2luZyBCYXNlOjpjb250YWluczsKKworICAvLyBidHJl
ZV9tdWx0aW1hcDo6Y291bnQoKQorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gc2l6
ZV90eXBlIGNvdW50KGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIFJldHVybnMgdGhl
IG51bWJlciBvZiBlbGVtZW50cyBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgIHdp
dGhpbgorICAvLyB0aGUgYGJ0cmVlX211bHRpbWFwYC4KKyAgLy8KKyAgLy8gU3VwcG9ydHMgaGV0
ZXJvZ2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRoYXQgdGhlIG1hcCBpcyBwcm92aWRlZCBhCisg
IC8vIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBjb21wYXJhdG9yLgorICB1c2luZyBCYXNlOjpj
b3VudDsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6ZXF1YWxfcmFuZ2UoKQorICAvLworICAvLyBS
ZXR1cm5zIGEgY2xvc2VkIHJhbmdlIFtmaXJzdCwgbGFzdF0sIGRlZmluZWQgYnkgYSBgc3RkOjpw
YWlyYCBvZiB0d28KKyAgLy8gaXRlcmF0b3JzLCBjb250YWluaW5nIGFsbCBlbGVtZW50cyB3aXRo
IHRoZSBwYXNzZWQga2V5IGluIHRoZQorICAvLyBgYnRyZWVfbXVsdGltYXBgLgorICB1c2luZyBC
YXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6ZmluZCgpCisgIC8vCisg
IC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBpdGVyYXRvciBmaW5kKGNvbnN0IEsmIGtleSk6Cisg
IC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IEsmIGtl
eSkgY29uc3Q6CisgIC8vCisgIC8vIEZpbmRzIGFuIGVsZW1lbnQgd2l0aCB0aGUgcGFzc2VkIGBr
ZXlgIHdpdGhpbiB0aGUgYGJ0cmVlX211bHRpbWFwYC4KKyAgLy8KKyAgLy8gU3VwcG9ydHMgaGV0
ZXJvZ2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRoYXQgdGhlIG1hcCBpcyBwcm92aWRlZCBhCisg
IC8vIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBjb21wYXJhdG9yLgorICB1c2luZyBCYXNlOjpm
aW5kOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjpnZXRfYWxsb2NhdG9yKCkKKyAgLy8KKyAgLy8g
UmV0dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJl
ZV9tdWx0aW1hcGAuCisgIHVzaW5nIEJhc2U6OmdldF9hbGxvY2F0b3I7CisKKyAgLy8gYnRyZWVf
bXVsdGltYXA6OmtleV9jb21wKCk7CisgIC8vCisgIC8vIFJldHVybnMgdGhlIGtleSBjb21wYXJh
dG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJlZV9tdWx0aW1hcGAuCisgIHVzaW5nIEJhc2U6
OmtleV9jb21wOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjp2YWx1ZV9jb21wKCk7CisgIC8vCisg
IC8vIFJldHVybnMgdGhlIHZhbHVlIGNvbXBhcmF0b3IgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYGJ0
cmVlX211bHRpbWFwYC4KKyAgdXNpbmcgQmFzZTo6dmFsdWVfY29tcDsKK307CisKKy8vIGFic2w6
OnN3YXAoYWJzbDo6YnRyZWVfbXVsdGltYXA8PiwgYWJzbDo6YnRyZWVfbXVsdGltYXA8PikKKy8v
CisvLyBTd2FwcyB0aGUgY29udGVudHMgb2YgdHdvIGBhYnNsOjpidHJlZV9tdWx0aW1hcGAgY29u
dGFpbmVycy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBDLCB0
eXBlbmFtZSBBPgordm9pZCBzd2FwKGJ0cmVlX211bHRpbWFwPEssIFYsIEMsIEE+ICZ4LCBidHJl
ZV9tdWx0aW1hcDxLLCBWLCBDLCBBPiAmeSkgeworICByZXR1cm4geC5zd2FwKHkpOworfQorCit9
ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0JUUkVFX01B
UF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3NldC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2J0cmVlX3NldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li42ZTQ3YjRhYWU2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9idHJlZV9z
ZXQuaApAQCAtMCwwICsxLDY1MyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IGJ0cmVlX3NldC5o
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5l
cyBCLXRyZWUgc2V0czogc29ydGVkIGFzc29jaWF0aXZlIGNvbnRhaW5lcnMgb2YKKy8vIHZhbHVl
cy4KKy8vCisvLyAgICAgKiBgYWJzbDo6YnRyZWVfc2V0PD5gCisvLyAgICAgKiBgYWJzbDo6YnRy
ZWVfbXVsdGlzZXQ8PmAKKy8vCisvLyBUaGVzZSBCLXRyZWUgdHlwZXMgYXJlIHNpbWlsYXIgdG8g
dGhlIGNvcnJlc3BvbmRpbmcgdHlwZXMgaW4gdGhlIFNUTAorLy8gKGBzdGQ6OnNldGAgYW5kIGBz
dGQ6Om11bHRpc2V0YCkgYW5kIGdlbmVyYWxseSBjb25mb3JtIHRvIHRoZSBTVEwgaW50ZXJmYWNl
cworLy8gb2YgdGhvc2UgdHlwZXMuIEhvd2V2ZXIsIGJlY2F1c2UgdGhleSBhcmUgaW1wbGVtZW50
ZWQgdXNpbmcgQi10cmVlcywgdGhleQorLy8gYXJlIG1vcmUgZWZmaWNpZW50IGluIG1vc3Qgc2l0
dWF0aW9ucy4KKy8vCisvLyBVbmxpa2UgYHN0ZDo6c2V0YCBhbmQgYHN0ZDo6bXVsdGlzZXRgLCB3
aGljaCBhcmUgY29tbW9ubHkgaW1wbGVtZW50ZWQgdXNpbmcKKy8vIHJlZC1ibGFjayB0cmVlIG5v
ZGVzLCBCLXRyZWUgc2V0cyB1c2UgbW9yZSBnZW5lcmljIEItdHJlZSBub2RlcyBhYmxlIHRvIGhv
bGQKKy8vIG11bHRpcGxlIHZhbHVlcyBwZXIgbm9kZS4gSG9sZGluZyBtdWx0aXBsZSB2YWx1ZXMg
cGVyIG5vZGUgb2Z0ZW4gbWFrZXMKKy8vIEItdHJlZSBzZXRzIHBlcmZvcm0gYmV0dGVyIHRoYW4g
dGhlaXIgYHN0ZDo6c2V0YCBjb3VudGVycGFydHMsIGJlY2F1c2UKKy8vIG11bHRpcGxlIGVudHJp
ZXMgY2FuIGJlIGNoZWNrZWQgd2l0aGluIHRoZSBzYW1lIGNhY2hlIGhpdC4KKy8vCisvLyBIb3dl
dmVyLCB0aGVzZSB0eXBlcyBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgZHJvcC1pbiByZXBsYWNl
bWVudHMgZm9yCisvLyBgc3RkOjpzZXRgIGFuZCBgc3RkOjptdWx0aXNldGAgYXMgdGhlcmUgYXJl
IHNvbWUgQVBJIGRpZmZlcmVuY2VzLCB3aGljaCBhcmUKKy8vIG5vdGVkIGluIHRoaXMgaGVhZGVy
IGZpbGUuCisvLworLy8gSW1wb3J0YW50bHksIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucyBtYXkg
aW52YWxpZGF0ZSBvdXRzdGFuZGluZyBpdGVyYXRvcnMsCisvLyBwb2ludGVycywgYW5kIHJlZmVy
ZW5jZXMgdG8gZWxlbWVudHMuIFN1Y2ggaW52YWxpZGF0aW9ucyBhcmUgdHlwaWNhbGx5IG9ubHkK
Ky8vIGFuIGlzc3VlIGlmIGluc2VydGlvbiBhbmQgZGVsZXRpb24gb3BlcmF0aW9ucyBhcmUgaW50
ZXJsZWF2ZWQgd2l0aCB0aGUgdXNlIG9mCisvLyBtb3JlIHRoYW4gb25lIGl0ZXJhdG9yLCBwb2lu
dGVyLCBvciByZWZlcmVuY2Ugc2ltdWx0YW5lb3VzbHkuIEZvciB0aGlzCisvLyByZWFzb24sIGBp
bnNlcnQoKWAgYW5kIGBlcmFzZSgpYCByZXR1cm4gYSB2YWxpZCBpdGVyYXRvciBhdCB0aGUgY3Vy
cmVudAorLy8gcG9zaXRpb24uCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfQlRSRUVfU0VUX0hf
CisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0JUUkVFX1NFVF9IXworCisjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvYnRyZWUuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNs
dWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9idHJlZV9jb250YWluZXIuaCIgIC8vIElXWVUg
cHJhZ21hOiBleHBvcnQKKworbmFtZXNwYWNlIGFic2wgeworCisvLyBhYnNsOjpidHJlZV9zZXQ8
PgorLy8KKy8vIEFuIGBhYnNsOjpidHJlZV9zZXQ8Sz5gIGlzIGFuIG9yZGVyZWQgYXNzb2NpYXRp
dmUgY29udGFpbmVyIG9mIHVuaXF1ZSBrZXkKKy8vIHZhbHVlcyBkZXNpZ25lZCB0byBiZSBhIG1v
cmUgZWZmaWNpZW50IHJlcGxhY2VtZW50IGZvciBgc3RkOjpzZXRgIChpbiBtb3N0CisvLyBjYXNl
cykuCisvLworLy8gS2V5cyBhcmUgc29ydGVkIHVzaW5nIGFuIChvcHRpb25hbCkgY29tcGFyaXNv
biBmdW5jdGlvbiwgd2hpY2ggZGVmYXVsdHMgdG8KKy8vIGBzdGQ6Omxlc3M8Sz5gLgorLy8KKy8v
IEFuIGBhYnNsOjpidHJlZV9zZXQ8Sz5gIHVzZXMgYSBkZWZhdWx0IGFsbG9jYXRvciBvZiBgc3Rk
OjphbGxvY2F0b3I8Sz5gIHRvCisvLyBhbGxvY2F0ZSAoYW5kIGRlYWxsb2NhdGUpIG5vZGVzLCBh
bmQgY29uc3RydWN0IGFuZCBkZXN0cnVjdCB2YWx1ZXMgd2l0aGluCisvLyB0aG9zZSBub2Rlcy4g
WW91IG1heSBpbnN0ZWFkIHNwZWNpZnkgYSBjdXN0b20gYWxsb2NhdG9yIGBBYCAod2hpY2ggaW4g
dHVybgorLy8gcmVxdWlyZXMgc3BlY2lmeWluZyBhIGN1c3RvbSBjb21wYXJhdG9yIGBDYCkgYXMg
aW4KKy8vIGBhYnNsOjpidHJlZV9zZXQ8SywgQywgQT5gLgorLy8KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIENvbXBhcmUgPSBzdGQ6Omxlc3M8S2V5PiwKKyAgICAgICAgICB0eXBl
bmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPEtleT4+CitjbGFzcyBidHJlZV9zZXQKKyAgICA6
IHB1YmxpYyBjb250YWluZXJfaW50ZXJuYWw6OmJ0cmVlX3NldF9jb250YWluZXI8CisgICAgICAg
ICAgY29udGFpbmVyX2ludGVybmFsOjpidHJlZTxjb250YWluZXJfaW50ZXJuYWw6OnNldF9wYXJh
bXM8CisgICAgICAgICAgICAgIEtleSwgQ29tcGFyZSwgQWxsb2MsIC8qVGFyZ2V0Tm9kZVNpemU9
Ki8yNTYsCisgICAgICAgICAgICAgIC8qTXVsdGk9Ki9mYWxzZT4+PiB7CisgIHVzaW5nIEJhc2Ug
PSB0eXBlbmFtZSBidHJlZV9zZXQ6OmJ0cmVlX3NldF9jb250YWluZXI7CisKKyBwdWJsaWM6Cisg
IC8vIENvbnN0cnVjdG9ycyBhbmQgQXNzaWdubWVudCBPcGVyYXRvcnMKKyAgLy8KKyAgLy8gQSBg
YnRyZWVfc2V0YCBzdXBwb3J0cyB0aGUgc2FtZSBvdmVybG9hZCBzZXQgYXMgYHN0ZDo6c2V0YAor
ICAvLyBmb3IgY29uc3RydWN0aW9uIGFuZCBhc3NpZ25tZW50OgorICAvLworICAvLyAqIERlZmF1
bHQgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmc+
IHNldDE7CisgIC8vCisgIC8vICogSW5pdGlhbGl6ZXIgTGlzdCBjb25zdHJ1Y3RvcgorICAvLwor
ICAvLyAgIGFic2w6OmJ0cmVlX3NldDxzdGQ6OnN0cmluZz4gc2V0MiA9CisgIC8vICAgICAgIHt7
Imh1ZXkifSwgeyJkZXdleSJ9LCB7ImxvdWllIn0sfTsKKyAgLy8KKyAgLy8gKiBDb3B5IGNvbnN0
cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6YnRyZWVfc2V0PHN0ZDo6c3RyaW5nPiBzZXQzKHNl
dDIpOworICAvLworICAvLyAqIENvcHkgYXNzaWdubWVudCBvcGVyYXRvcgorICAvLworICAvLyAg
YWJzbDo6YnRyZWVfc2V0PHN0ZDo6c3RyaW5nPiBzZXQ0OworICAvLyAgc2V0NCA9IHNldDM7Cisg
IC8vCisgIC8vICogTW92ZSBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIC8vIE1vdmUgaXMgZ3Vh
cmFudGVlZCBlZmZpY2llbnQKKyAgLy8gICBhYnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmc+IHNl
dDUoc3RkOjptb3ZlKHNldDQpKTsKKyAgLy8KKyAgLy8gKiBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0
b3IKKyAgLy8KKyAgLy8gICAvLyBNYXkgYmUgZWZmaWNpZW50IGlmIGFsbG9jYXRvcnMgYXJlIGNv
bXBhdGlibGUKKyAgLy8gICBhYnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmc+IHNldDY7CisgIC8v
ICAgc2V0NiA9IHN0ZDo6bW92ZShzZXQ1KTsKKyAgLy8KKyAgLy8gKiBSYW5nZSBjb25zdHJ1Y3Rv
cgorICAvLworICAvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ID0geyJhIiwgImIifTsK
KyAgLy8gICBhYnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmc+IHNldDcodi5iZWdpbigpLCB2LmVu
ZCgpKTsKKyAgYnRyZWVfc2V0KCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAvLyBidHJl
ZV9zZXQ6OmJlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBgYnRyZWVfc2V0YC4KKyAgdXNpbmcgQmFzZTo6YmVnaW47CisKKyAgLy8g
YnRyZWVfc2V0OjpjYmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3Ig
dG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYGJ0cmVlX3NldGAuCisgIHVzaW5nIEJhc2U6OmNiZWdp
bjsKKworICAvLyBidHJlZV9zZXQ6OmVuZCgpCisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0
b3IgdG8gdGhlIGVuZCBvZiB0aGUgYGJ0cmVlX3NldGAuCisgIHVzaW5nIEJhc2U6OmVuZDsKKwor
ICAvLyBidHJlZV9zZXQ6OmNlbmQoKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0
b3IgdG8gdGhlIGVuZCBvZiB0aGUgYGJ0cmVlX3NldGAuCisgIHVzaW5nIEJhc2U6OmNlbmQ7CisK
KyAgLy8gYnRyZWVfc2V0OjplbXB0eSgpCisgIC8vCisgIC8vIFJldHVybnMgd2hldGhlciBvciBu
b3QgdGhlIGBidHJlZV9zZXRgIGlzIGVtcHR5LgorICB1c2luZyBCYXNlOjplbXB0eTsKKworICAv
LyBidHJlZV9zZXQ6Om1heF9zaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbGFyZ2VzdCB0
aGVvcmV0aWNhbCBwb3NzaWJsZSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aGluIGEKKyAgLy8gYGJ0
cmVlX3NldGAgdW5kZXIgY3VycmVudCBtZW1vcnkgY29uc3RyYWludHMuIFRoaXMgdmFsdWUgY2Fu
IGJlIHRob3VnaHQKKyAgLy8gb2YgYXMgdGhlIGxhcmdlc3QgdmFsdWUgb2YgYHN0ZDo6ZGlzdGFu
Y2UoYmVnaW4oKSwgZW5kKCkpYCBmb3IgYQorICAvLyBgYnRyZWVfc2V0PEtleT5gLgorICB1c2lu
ZyBCYXNlOjptYXhfc2l6ZTsKKworICAvLyBidHJlZV9zZXQ6OnNpemUoKQorICAvLworICAvLyBS
ZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY3VycmVudGx5IHdpdGhpbiB0aGUgYGJ0cmVl
X3NldGAuCisgIHVzaW5nIEJhc2U6OnNpemU7CisKKyAgLy8gYnRyZWVfc2V0OjpjbGVhcigpCisg
IC8vCisgIC8vIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGBidHJlZV9zZXRgLiBJbnZh
bGlkYXRlcyBhbnkgcmVmZXJlbmNlcywKKyAgLy8gcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyByZWZl
cnJpbmcgdG8gY29udGFpbmVkIGVsZW1lbnRzLgorICB1c2luZyBCYXNlOjpjbGVhcjsKKworICAv
LyBidHJlZV9zZXQ6OmVyYXNlKCkKKyAgLy8KKyAgLy8gRXJhc2VzIGVsZW1lbnRzIHdpdGhpbiB0
aGUgYGJ0cmVlX3NldGAuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyBp
dGVyYXRvciBlcmFzZShpdGVyYXRvciBwb3NpdGlvbik6CisgIC8vIGl0ZXJhdG9yIGVyYXNlKGNv
bnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnQg
YXQgYHBvc2l0aW9uYCBvZiB0aGUgYGJ0cmVlX3NldGAsIHJldHVybmluZworICAvLyAgIHRoZSBp
dGVyYXRvciBwb2ludGluZyB0byB0aGUgZWxlbWVudCBhZnRlciB0aGUgb25lIHRoYXQgd2FzIGVy
YXNlZAorICAvLyAgIChvciBlbmQoKSBpZiBub25lIGV4aXN0cykuCisgIC8vCisgIC8vIGl0ZXJh
dG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KToKKyAg
Ly8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnRzIGluIHRoZSBvcGVuIGludGVydmFsIFtgZmly
c3RgLCBgbGFzdGApLCByZXR1cm5pbmcKKyAgLy8gICB0aGUgaXRlcmF0b3IgcG9pbnRpbmcgdG8g
dGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIGludGVydmFsIHRoYXQgd2FzIGVyYXNlZAorICAvLyAgIChv
ciBlbmQoKSBpZiBub25lIGV4aXN0cykuCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBL
PiBzaXplX3R5cGUgZXJhc2UoY29uc3QgSyYga2V5KToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhl
IGVsZW1lbnQgd2l0aCB0aGUgbWF0Y2hpbmcga2V5LCBpZiBpdCBleGlzdHMsIHJldHVybmluZyB0
aGUKKyAgLy8gICBudW1iZXIgb2YgZWxlbWVudHMgZXJhc2VkLgorICB1c2luZyBCYXNlOjplcmFz
ZTsKKworICAvLyBidHJlZV9zZXQ6Omluc2VydCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxl
bWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGludG8gdGhlIGBidHJlZV9zZXRgLAorICAvLyBy
ZXR1cm5pbmcgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1l
bnQsIHByb3ZpZGVkIHRoYXQKKyAgLy8gYW4gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkgZG9l
cyBub3QgYWxyZWFkeSBleGlzdC4gSWYgYW4gaW5zZXJ0aW9uCisgIC8vIG9jY3VycywgYW55IHJl
ZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLgorICAvLyBP
dmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9y
LGJvb2w+IGluc2VydChjb25zdCB2YWx1ZV90eXBlJiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5z
ZXJ0cyBhIHZhbHVlIGludG8gdGhlIGBidHJlZV9zZXRgLiBSZXR1cm5zIGEgcGFpciBjb25zaXN0
aW5nIG9mIGFuCisgIC8vICAgaXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9yIHRv
IHRoZSBlbGVtZW50IHRoYXQgcHJldmVudGVkIHRoZQorICAvLyAgIGluc2VydGlvbikgYW5kIGEg
Ym9vbCBkZW5vdGluZyB3aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9vayBwbGFjZS4KKyAgLy8KKyAg
Ly8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+IGluc2VydCh2YWx1ZV90eXBlJiYgdmFsdWUpOgor
ICAvLworICAvLyAgIEluc2VydHMgYSBtb3ZlYWJsZSB2YWx1ZSBpbnRvIHRoZSBgYnRyZWVfc2V0
YC4gUmV0dXJucyBhIHBhaXIKKyAgLy8gICBjb25zaXN0aW5nIG9mIGFuIGl0ZXJhdG9yIHRvIHRo
ZSBpbnNlcnRlZCBlbGVtZW50IChvciB0byB0aGUgZWxlbWVudCB0aGF0CisgIC8vICAgcHJldmVu
dGVkIHRoZSBpbnNlcnRpb24pIGFuZCBhIGJvb2wgZGVub3Rpbmcgd2hldGhlciB0aGUgaW5zZXJ0
aW9uIHRvb2sKKyAgLy8gICBwbGFjZS4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgaW5zZXJ0KGNvbnN0
X2l0ZXJhdG9yIGhpbnQsIGNvbnN0IHZhbHVlX3R5cGUmIHZhbHVlKToKKyAgLy8gaXRlcmF0b3Ig
aW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIHZhbHVlX3R5cGUmJiB2YWx1ZSk6CisgIC8vCisg
IC8vICAgSW5zZXJ0cyBhIHZhbHVlLCB1c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFzIGEg
bm9uLWJpbmRpbmcgc3VnZ2VzdGlvbgorICAvLyAgIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5z
ZXJ0aW9uIHNlYXJjaC4gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUKKyAgLy8gICBpbnNlcnRl
ZCBlbGVtZW50LCBvciB0byB0aGUgZXhpc3RpbmcgZWxlbWVudCB0aGF0IHByZXZlbnRlZCB0aGUK
KyAgLy8gICBpbnNlcnRpb24uCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KElucHV0SXRlcmF0b3Ig
Zmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHJhbmdl
IG9mIHZhbHVlcyBbYGZpcnN0YCwgYGxhc3RgKS4KKyAgLy8KKyAgLy8gdm9pZCBpbnNlcnQoc3Rk
Ojppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaWxpc3QpOgorICAvLworICAvLyAgIEluc2Vy
dHMgdGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBgaWxpc3RgLgorICB1
c2luZyBCYXNlOjppbnNlcnQ7CisKKyAgLy8gYnRyZWVfc2V0OjplbXBsYWNlKCkKKyAgLy8KKyAg
Ly8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0
aW5nIGl0IGluLXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYGJ0cmVlX3NldGAsIHByb3ZpZGVkIHRo
YXQgbm8gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkKKyAgLy8gYWxyZWFkeSBleGlzdHMuCisg
IC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFs
cmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQorICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwg
aW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8v
IGRlc3Ryb3llZCBpbW1lZGlhdGVseS4KKyAgLy8KKyAgLy8gSWYgYW4gaW5zZXJ0aW9uIG9jY3Vy
cywgYW55IHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlCisgIC8vIGludmFs
aWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlOworCisgIC8vIGJ0cmVlX3NldDo6ZW1wbGFj
ZV9oaW50KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQg
dmFsdWUgYnkgY29uc3RydWN0aW5nIGl0IGluLXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYGJ0cmVl
X3NldGAsIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZworICAv
LyBzdWdnZXN0aW9uIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaCwgYW5k
IG9ubHkgaW5zZXJ0cworICAvLyBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2
ZW4ga2V5IGFscmVhZHkgZXhpc3RzLgorICAvLworICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29u
c3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKKyAg
Ly8ga2V5IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVj
dGVkIGVsZW1lbnQgd2lsbCBiZQorICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuCisgIC8vCisg
IC8vIElmIGFuIGluc2VydGlvbiBvY2N1cnMsIGFueSByZWZlcmVuY2VzLCBwb2ludGVycywgb3Ig
aXRlcmF0b3JzIGFyZQorICAvLyBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZV9o
aW50OworCisgIC8vIGJ0cmVlX3NldDo6ZXh0cmFjdCgpCisgIC8vCisgIC8vIEV4dHJhY3RzIHRo
ZSBpbmRpY2F0ZWQgZWxlbWVudCwgZXJhc2luZyBpdCBpbiB0aGUgcHJvY2VzcywgYW5kIHJldHVy
bnMgaXQKKyAgLy8gYXMgYSBDKysxNy1jb21wYXRpYmxlIG5vZGUgaGFuZGxlLiBPdmVybG9hZHMg
YXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3QoY29uc3RfaXRl
cmF0b3IgcG9zaXRpb24pOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBlbGVtZW50IGF0IHRo
ZSBpbmRpY2F0ZWQgcG9zaXRpb24gYW5kIHJldHVybnMgYSBub2RlIGhhbmRsZQorICAvLyAgIG93
bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLgorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Sz4gbm9kZV90eXBlIGV4dHJhY3QoY29uc3QgSyYgeCk6CisgIC8vCisgIC8vICAgRXh0cmFjdHMg
dGhlIGVsZW1lbnQgd2l0aCB0aGUga2V5IG1hdGNoaW5nIHRoZSBwYXNzZWQga2V5IHZhbHVlIGFu
ZAorICAvLyAgIHJldHVybnMgYSBub2RlIGhhbmRsZSBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0
YS4gSWYgdGhlIGBidHJlZV9zZXRgCisgIC8vICAgZG9lcyBub3QgY29udGFpbiBhbiBlbGVtZW50
IHdpdGggYSBtYXRjaGluZyBrZXksIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbgorICAvLyAgIGVt
cHR5IG5vZGUgaGFuZGxlLgorICAvLworICAvLyBOT1RFOiBJbiB0aGlzIGNvbnRleHQsIGBub2Rl
X3R5cGVgIHJlZmVycyB0byB0aGUgQysrMTcgY29uY2VwdCBvZiBhCisgIC8vIG1vdmUtb25seSB0
eXBlIHRoYXQgb3ducyBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBlbGVtZW50cyBpbiBhc3Nv
Y2lhdGl2ZQorICAvLyBjb250YWluZXJzIChodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9j
cHAvY29udGFpbmVyL25vZGVfaGFuZGxlKS4KKyAgLy8gSXQgZG9lcyBOT1QgcmVmZXIgdG8gdGhl
IGRhdGEgbGF5b3V0IG9mIHRoZSB1bmRlcmx5aW5nIGJ0cmVlLgorICB1c2luZyBCYXNlOjpleHRy
YWN0OworCisgIC8vIGJ0cmVlX3NldDo6bWVyZ2UoKQorICAvLworICAvLyBFeHRyYWN0cyBlbGVt
ZW50cyBmcm9tIGEgZ2l2ZW4gYHNvdXJjZWAgYnRyZWVfc2V0IGludG8gdGhpcworICAvLyBgYnRy
ZWVfc2V0YC4gSWYgdGhlIGRlc3RpbmF0aW9uIGBidHJlZV9zZXRgIGFscmVhZHkgY29udGFpbnMg
YW4KKyAgLy8gZWxlbWVudCB3aXRoIGFuIGVxdWl2YWxlbnQga2V5LCB0aGF0IGVsZW1lbnQgaXMg
bm90IGV4dHJhY3RlZC4KKyAgdXNpbmcgQmFzZTo6bWVyZ2U7CisKKyAgLy8gYnRyZWVfc2V0Ojpz
d2FwKGJ0cmVlX3NldCYgb3RoZXIpCisgIC8vCisgIC8vIEV4Y2hhbmdlcyB0aGUgY29udGVudHMg
b2YgdGhpcyBgYnRyZWVfc2V0YCB3aXRoIHRob3NlIG9mIHRoZSBgb3RoZXJgCisgIC8vIGJ0cmVl
X3NldCwgYXZvaWRpbmcgaW52b2NhdGlvbiBvZiBhbnkgbW92ZSwgY29weSwgb3Igc3dhcCBvcGVy
YXRpb25zIG9uCisgIC8vIGluZGl2aWR1YWwgZWxlbWVudHMuCisgIC8vCisgIC8vIEFsbCBpdGVy
YXRvcnMgYW5kIHJlZmVyZW5jZXMgb24gdGhlIGBidHJlZV9zZXRgIHJlbWFpbiB2YWxpZCwgZXhj
ZXB0aW5nCisgIC8vIGZvciB0aGUgcGFzdC10aGUtZW5kIGl0ZXJhdG9yLCB3aGljaCBpcyBpbnZh
bGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6c3dhcDsKKworICAvLyBidHJlZV9zZXQ6OmNvbnRhaW5z
KCkKKyAgLy8KKyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+IGJvb2wgY29udGFpbnMoY29uc3Qg
SyYga2V5KSBjb25zdDoKKyAgLy8KKyAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQg
Y29tcGFyaW5nIGVxdWFsIHRvIHRoZSBnaXZlbiBga2V5YCBleGlzdHMKKyAgLy8gd2l0aGluIHRo
ZSBgYnRyZWVfc2V0YCwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBvciBgZmFsc2VgIG90aGVyd2lz
ZS4KKyAgLy8KKyAgLy8gU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRo
YXQgdGhlIHNldCBpcyBwcm92aWRlZCBhCisgIC8vIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBj
b21wYXJhdG9yLgorICB1c2luZyBCYXNlOjpjb250YWluczsKKworICAvLyBidHJlZV9zZXQ6OmNv
dW50KCkKKyAgLy8KKyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+IHNpemVfdHlwZSBjb3VudChj
b25zdCBLJiBrZXkpIGNvbnN0OgorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgY29tcGFyaW5nIGVxdWFsIHRvIHRoZSBnaXZlbiBga2V5YCB3aXRoaW4KKyAgLy8gdGhl
IGBidHJlZV9zZXRgLiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBlaXRoZXIg
YDFgIG9yIGAwYAorICAvLyBzaW5jZSBkdXBsaWNhdGUgZWxlbWVudHMgYXJlIG5vdCBhbGxvd2Vk
IHdpdGhpbiBhIGBidHJlZV9zZXRgLgorICAvLworICAvLyBTdXBwb3J0cyBoZXRlcm9nZW5lb3Vz
IGxvb2t1cCwgcHJvdmlkZWQgdGhhdCB0aGUgc2V0IGlzIHByb3ZpZGVkIGEKKyAgLy8gY29tcGF0
aWJsZSBoZXRlcm9nZW5lb3VzIGNvbXBhcmF0b3IuCisgIHVzaW5nIEJhc2U6OmNvdW50OworCisg
IC8vIGJ0cmVlX3NldDo6ZXF1YWxfcmFuZ2UoKQorICAvLworICAvLyBSZXR1cm5zIGEgY2xvc2Vk
IHJhbmdlIFtmaXJzdCwgbGFzdF0sIGRlZmluZWQgYnkgYSBgc3RkOjpwYWlyYCBvZiB0d28KKyAg
Ly8gaXRlcmF0b3JzLCBjb250YWluaW5nIGFsbCBlbGVtZW50cyB3aXRoIHRoZSBwYXNzZWQga2V5
IGluIHRoZQorICAvLyBgYnRyZWVfc2V0YC4KKyAgdXNpbmcgQmFzZTo6ZXF1YWxfcmFuZ2U7CisK
KyAgLy8gYnRyZWVfc2V0OjpmaW5kKCkKKyAgLy8KKyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+
IGl0ZXJhdG9yIGZpbmQoY29uc3QgSyYga2V5KToKKyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+
IGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgSyYga2V5KSBjb25zdDoKKyAgLy8KKyAgLy8gRmlu
ZHMgYW4gZWxlbWVudCB3aXRoIHRoZSBwYXNzZWQgYGtleWAgd2l0aGluIHRoZSBgYnRyZWVfc2V0
YC4KKyAgLy8KKyAgLy8gU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRo
YXQgdGhlIHNldCBpcyBwcm92aWRlZCBhCisgIC8vIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBj
b21wYXJhdG9yLgorICB1c2luZyBCYXNlOjpmaW5kOworCisgIC8vIGJ0cmVlX3NldDo6Z2V0X2Fs
bG9jYXRvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGFsbG9jYXRvciBmdW5jdGlvbiBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBgYnRyZWVfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Z2V0X2FsbG9jYXRv
cjsKKworICAvLyBidHJlZV9zZXQ6OmtleV9jb21wKCk7CisgIC8vCisgIC8vIFJldHVybnMgdGhl
IGtleSBjb21wYXJhdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJlZV9zZXRgLgorICB1c2lu
ZyBCYXNlOjprZXlfY29tcDsKKworICAvLyBidHJlZV9zZXQ6OnZhbHVlX2NvbXAoKTsKKyAgLy8K
KyAgLy8gUmV0dXJucyB0aGUgdmFsdWUgY29tcGFyYXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBg
YnRyZWVfc2V0YC4gVGhlIGtleXMgdG8KKyAgLy8gc29ydCB0aGUgZWxlbWVudHMgYXJlIHRoZSB2
YWx1ZXMgdGhlbXNlbHZlcywgdGhlcmVmb3JlIGB2YWx1ZV9jb21wYCBhbmQgaXRzCisgIC8vIHNp
YmxpbmcgbWVtYmVyIGZ1bmN0aW9uIGBrZXlfY29tcGAgYXJlIGVxdWl2YWxlbnQuCisgIHVzaW5n
IEJhc2U6OnZhbHVlX2NvbXA7Cit9OworCisvLyBhYnNsOjpzd2FwKGFic2w6OmJ0cmVlX3NldDw+
LCBhYnNsOjpidHJlZV9zZXQ8PikKKy8vCisvLyBTd2FwcyB0aGUgY29udGVudHMgb2YgdHdvIGBh
YnNsOjpidHJlZV9zZXRgIGNvbnRhaW5lcnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5h
bWUgQywgdHlwZW5hbWUgQT4KK3ZvaWQgc3dhcChidHJlZV9zZXQ8SywgQywgQT4gJngsIGJ0cmVl
X3NldDxLLCBDLCBBPiAmeSkgeworICByZXR1cm4geC5zd2FwKHkpOworfQorCisvLyBhYnNsOjpi
dHJlZV9tdWx0aXNldDw+CisvLworLy8gQW4gYGFic2w6OmJ0cmVlX211bHRpc2V0PEs+YCBpcyBh
biBvcmRlcmVkIGFzc29jaWF0aXZlIGNvbnRhaW5lciBvZgorLy8ga2V5cyBhbmQgYXNzb2NpYXRl
ZCB2YWx1ZXMgZGVzaWduZWQgdG8gYmUgYSBtb3JlIGVmZmljaWVudCByZXBsYWNlbWVudAorLy8g
Zm9yIGBzdGQ6Om11bHRpc2V0YCAoaW4gbW9zdCBjYXNlcykuIFVubGlrZSBgYWJzbDo6YnRyZWVf
c2V0YCwgYSBCLXRyZWUKKy8vIG11bHRpc2V0IGFsbG93cyBlcXVpdmFsZW50IGVsZW1lbnRzLgor
Ly8KKy8vIEtleXMgYXJlIHNvcnRlZCB1c2luZyBhbiAob3B0aW9uYWwpIGNvbXBhcmlzb24gZnVu
Y3Rpb24sIHdoaWNoIGRlZmF1bHRzIHRvCisvLyBgc3RkOjpsZXNzPEs+YC4KKy8vCisvLyBBbiBg
YWJzbDo6YnRyZWVfbXVsdGlzZXQ8Sz5gIHVzZXMgYSBkZWZhdWx0IGFsbG9jYXRvciBvZiBgc3Rk
OjphbGxvY2F0b3I8Sz5gCisvLyB0byBhbGxvY2F0ZSAoYW5kIGRlYWxsb2NhdGUpIG5vZGVzLCBh
bmQgY29uc3RydWN0IGFuZCBkZXN0cnVjdCB2YWx1ZXMgd2l0aGluCisvLyB0aG9zZSBub2Rlcy4g
WW91IG1heSBpbnN0ZWFkIHNwZWNpZnkgYSBjdXN0b20gYWxsb2NhdG9yIGBBYCAod2hpY2ggaW4g
dHVybgorLy8gcmVxdWlyZXMgc3BlY2lmeWluZyBhIGN1c3RvbSBjb21wYXJhdG9yIGBDYCkgYXMg
aW4KKy8vIGBhYnNsOjpidHJlZV9tdWx0aXNldDxLLCBDLCBBPmAuCisvLwordGVtcGxhdGUgPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgQ29tcGFyZSA9IHN0ZDo6bGVzczxLZXk+LAorICAgICAgICAg
IHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8S2V5Pj4KK2NsYXNzIGJ0cmVlX211bHRp
c2V0CisgICAgOiBwdWJsaWMgY29udGFpbmVyX2ludGVybmFsOjpidHJlZV9tdWx0aXNldF9jb250
YWluZXI8CisgICAgICAgICAgY29udGFpbmVyX2ludGVybmFsOjpidHJlZTxjb250YWluZXJfaW50
ZXJuYWw6OnNldF9wYXJhbXM8CisgICAgICAgICAgICAgIEtleSwgQ29tcGFyZSwgQWxsb2MsIC8q
VGFyZ2V0Tm9kZVNpemU9Ki8yNTYsCisgICAgICAgICAgICAgIC8qTXVsdGk9Ki90cnVlPj4+IHsK
KyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIGJ0cmVlX211bHRpc2V0OjpidHJlZV9tdWx0aXNldF9j
b250YWluZXI7CisKKyBwdWJsaWM6CisgIC8vIENvbnN0cnVjdG9ycyBhbmQgQXNzaWdubWVudCBP
cGVyYXRvcnMKKyAgLy8KKyAgLy8gQSBgYnRyZWVfbXVsdGlzZXRgIHN1cHBvcnRzIHRoZSBzYW1l
IG92ZXJsb2FkIHNldCBhcyBgc3RkOjpzZXRgCisgIC8vIGZvciBjb25zdHJ1Y3Rpb24gYW5kIGFz
c2lnbm1lbnQ6CisgIC8vCisgIC8vICogRGVmYXVsdCBjb25zdHJ1Y3RvcgorICAvLworICAvLyAg
IGFic2w6OmJ0cmVlX211bHRpc2V0PHN0ZDo6c3RyaW5nPiBzZXQxOworICAvLworICAvLyAqIElu
aXRpYWxpemVyIExpc3QgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpidHJlZV9tdWx0
aXNldDxzdGQ6OnN0cmluZz4gc2V0MiA9CisgIC8vICAgICAgIHt7Imh1ZXkifSwgeyJkZXdleSJ9
LCB7ImxvdWllIn0sfTsKKyAgLy8KKyAgLy8gKiBDb3B5IGNvbnN0cnVjdG9yCisgIC8vCisgIC8v
ICAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8c3RkOjpzdHJpbmc+IHNldDMoc2V0Mik7CisgIC8vCisg
IC8vICogQ29weSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisgIC8vICBhYnNsOjpidHJlZV9t
dWx0aXNldDxzdGQ6OnN0cmluZz4gc2V0NDsKKyAgLy8gIHNldDQgPSBzZXQzOworICAvLworICAv
LyAqIE1vdmUgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICAvLyBNb3ZlIGlzIGd1YXJhbnRlZWQg
ZWZmaWNpZW50CisgIC8vICAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8c3RkOjpzdHJpbmc+IHNldDUo
c3RkOjptb3ZlKHNldDQpKTsKKyAgLy8KKyAgLy8gKiBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IK
KyAgLy8KKyAgLy8gICAvLyBNYXkgYmUgZWZmaWNpZW50IGlmIGFsbG9jYXRvcnMgYXJlIGNvbXBh
dGlibGUKKyAgLy8gICBhYnNsOjpidHJlZV9tdWx0aXNldDxzdGQ6OnN0cmluZz4gc2V0NjsKKyAg
Ly8gICBzZXQ2ID0gc3RkOjptb3ZlKHNldDUpOworICAvLworICAvLyAqIFJhbmdlIGNvbnN0cnVj
dG9yCisgIC8vCisgIC8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSB7ImEiLCAiYiJ9
OworICAvLyAgIGFic2w6OmJ0cmVlX211bHRpc2V0PHN0ZDo6c3RyaW5nPiBzZXQ3KHYuYmVnaW4o
KSwgdi5lbmQoKSk7CisgIGJ0cmVlX211bHRpc2V0KCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsK
KworICAvLyBidHJlZV9tdWx0aXNldDo6YmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0
ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBidHJlZV9tdWx0aXNldGAuCisgIHVzaW5n
IEJhc2U6OmJlZ2luOworCisgIC8vIGJ0cmVlX211bHRpc2V0OjpjYmVnaW4oKQorICAvLworICAv
LyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYGJ0cmVl
X211bHRpc2V0YC4KKyAgdXNpbmcgQmFzZTo6Y2JlZ2luOworCisgIC8vIGJ0cmVlX211bHRpc2V0
OjplbmQoKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhl
IGBidHJlZV9tdWx0aXNldGAuCisgIHVzaW5nIEJhc2U6OmVuZDsKKworICAvLyBidHJlZV9tdWx0
aXNldDo6Y2VuZCgpCisgIC8vCisgIC8vIFJldHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUg
ZW5kIG9mIHRoZSBgYnRyZWVfbXVsdGlzZXRgLgorICB1c2luZyBCYXNlOjpjZW5kOworCisgIC8v
IGJ0cmVlX211bHRpc2V0OjplbXB0eSgpCisgIC8vCisgIC8vIFJldHVybnMgd2hldGhlciBvciBu
b3QgdGhlIGBidHJlZV9tdWx0aXNldGAgaXMgZW1wdHkuCisgIHVzaW5nIEJhc2U6OmVtcHR5Owor
CisgIC8vIGJ0cmVlX211bHRpc2V0OjptYXhfc2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhl
IGxhcmdlc3QgdGhlb3JldGljYWwgcG9zc2libGUgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGhpbiBh
CisgIC8vIGBidHJlZV9tdWx0aXNldGAgdW5kZXIgY3VycmVudCBtZW1vcnkgY29uc3RyYWludHMu
IFRoaXMgdmFsdWUgY2FuIGJlCisgIC8vIHRob3VnaHQgb2YgYXMgdGhlIGxhcmdlc3QgdmFsdWUg
b2YgYHN0ZDo6ZGlzdGFuY2UoYmVnaW4oKSwgZW5kKCkpYCBmb3IgYQorICAvLyBgYnRyZWVfbXVs
dGlzZXQ8S2V5PmAuCisgIHVzaW5nIEJhc2U6Om1heF9zaXplOworCisgIC8vIGJ0cmVlX211bHRp
c2V0OjpzaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1
cnJlbnRseSB3aXRoaW4gdGhlIGBidHJlZV9tdWx0aXNldGAuCisgIHVzaW5nIEJhc2U6OnNpemU7
CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmNsZWFyKCkKKyAgLy8KKyAgLy8gUmVtb3ZlcyBhbGwg
ZWxlbWVudHMgZnJvbSB0aGUgYGJ0cmVlX211bHRpc2V0YC4gSW52YWxpZGF0ZXMgYW55IHJlZmVy
ZW5jZXMsCisgIC8vIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgcmVmZXJyaW5nIHRvIGNvbnRhaW5l
ZCBlbGVtZW50cy4KKyAgdXNpbmcgQmFzZTo6Y2xlYXI7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6
OmVyYXNlKCkKKyAgLy8KKyAgLy8gRXJhc2VzIGVsZW1lbnRzIHdpdGhpbiB0aGUgYGJ0cmVlX211
bHRpc2V0YC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIGl0ZXJhdG9y
IGVyYXNlKGl0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRl
cmF0b3IgcG9zaXRpb24pOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCBhdCBgcG9z
aXRpb25gIG9mIHRoZSBgYnRyZWVfbXVsdGlzZXRgLCByZXR1cm5pbmcKKyAgLy8gICB0aGUgaXRl
cmF0b3IgcG9pbnRpbmcgdG8gdGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIG9uZSB0aGF0IHdhcyBlcmFz
ZWQKKyAgLy8gICAob3IgZW5kKCkgaWYgbm9uZSBleGlzdHMpLgorICAvLworICAvLyBpdGVyYXRv
ciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCk6CisgIC8v
CisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50cyBpbiB0aGUgb3BlbiBpbnRlcnZhbCBbYGZpcnN0
YCwgYGxhc3RgKSwgcmV0dXJuaW5nCisgIC8vICAgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRo
ZSBlbGVtZW50IGFmdGVyIHRoZSBpbnRlcnZhbCB0aGF0IHdhcyBlcmFzZWQKKyAgLy8gICAob3Ig
ZW5kKCkgaWYgbm9uZSBleGlzdHMpLgorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4g
c2l6ZV90eXBlIGVyYXNlKGNvbnN0IEsmIGtleSk6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBl
bGVtZW50cyBtYXRjaGluZyB0aGUga2V5LCBpZiBhbnkgZXhpc3QsIHJldHVybmluZyB0aGUKKyAg
Ly8gICBudW1iZXIgb2YgZWxlbWVudHMgZXJhc2VkLgorICB1c2luZyBCYXNlOjplcmFzZTsKKwor
ICAvLyBidHJlZV9tdWx0aXNldDo6aW5zZXJ0KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVt
ZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgaW50byB0aGUgYGJ0cmVlX211bHRpc2V0YCwKKyAg
Ly8gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBuZXdseSBpbnNlcnRlZCBl
bGVtZW50LgorICAvLyBBbnkgcmVmZXJlbmNlcywgcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyBhcmUg
aW52YWxpZGF0ZWQuICBPdmVybG9hZHMgYXJlCisgIC8vIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAg
Ly8gaXRlcmF0b3IgaW5zZXJ0KGNvbnN0IHZhbHVlX3R5cGUmIHZhbHVlKToKKyAgLy8KKyAgLy8g
ICBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUgYGJ0cmVlX211bHRpc2V0YCwgcmV0dXJuaW5nIGFu
IGl0ZXJhdG9yIHRvIHRoZQorICAvLyAgIGluc2VydGVkIGVsZW1lbnQuCisgIC8vCisgIC8vIGl0
ZXJhdG9yIGluc2VydCh2YWx1ZV90eXBlJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMg
YSBtb3ZlYWJsZSB2YWx1ZSBpbnRvIHRoZSBgYnRyZWVfbXVsdGlzZXRgLCByZXR1cm5pbmcgYW4g
aXRlcmF0b3IKKyAgLy8gICB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudC4KKyAgLy8KKyAgLy8gaXRl
cmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIGNvbnN0IHZhbHVlX3R5cGUmIHZhbHVl
KToKKyAgLy8gaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIHZhbHVlX3R5cGUm
JiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlLCB1c2luZyB0aGUgcG9zaXRp
b24gb2YgYGhpbnRgIGFzIGEgbm9uLWJpbmRpbmcgc3VnZ2VzdGlvbgorICAvLyAgIGZvciB3aGVy
ZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0
aGUKKyAgLy8gICBpbnNlcnRlZCBlbGVtZW50LgorICAvLworICAvLyB2b2lkIGluc2VydChJbnB1
dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEluc2Vy
dHMgYSByYW5nZSBvZiB2YWx1ZXMgW2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisgIC8vIHZvaWQg
aW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGlsaXN0KToKKyAgLy8KKyAg
Ly8gICBJbnNlcnRzIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIGluaXRpYWxpemVyIGxpc3QgYGls
aXN0YC4KKyAgdXNpbmcgQmFzZTo6aW5zZXJ0OworCisgIC8vIGJ0cmVlX211bHRpc2V0OjplbXBs
YWNlKCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFs
dWUgYnkgY29uc3RydWN0aW5nIGl0IGluLXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYGJ0cmVlX211
bHRpc2V0YC4gQW55IHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlCisgIC8v
IGludmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlOworCisgIC8vIGJ0cmVlX211bHRp
c2V0OjplbXBsYWNlX2hpbnQoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhl
IHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8gd2l0aGlu
IHRoZSBgYnRyZWVfbXVsdGlzZXRgLCB1c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFzIGEg
bm9uLWJpbmRpbmcKKyAgLy8gc3VnZ2VzdGlvbiBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2Vy
dGlvbiBzZWFyY2guCisgIC8vCisgIC8vIEFueSByZWZlcmVuY2VzLCBwb2ludGVycywgb3IgaXRl
cmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZV9oaW50OworCisg
IC8vIGJ0cmVlX211bHRpc2V0OjpleHRyYWN0KCkKKyAgLy8KKyAgLy8gRXh0cmFjdHMgdGhlIGlu
ZGljYXRlZCBlbGVtZW50LCBlcmFzaW5nIGl0IGluIHRoZSBwcm9jZXNzLCBhbmQgcmV0dXJucyBp
dAorICAvLyBhcyBhIEMrKzE3LWNvbXBhdGlibGUgbm9kZSBoYW5kbGUuIE92ZXJsb2FkcyBhcmUg
bGlzdGVkIGJlbG93LgorICAvLworICAvLyBub2RlX3R5cGUgZXh0cmFjdChjb25zdF9pdGVyYXRv
ciBwb3NpdGlvbik6CisgIC8vCisgIC8vICAgRXh0cmFjdHMgdGhlIGVsZW1lbnQgYXQgdGhlIGlu
ZGljYXRlZCBwb3NpdGlvbiBhbmQgcmV0dXJucyBhIG5vZGUgaGFuZGxlCisgIC8vICAgb3duaW5n
IHRoYXQgZXh0cmFjdGVkIGRhdGEuCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBu
b2RlX3R5cGUgZXh0cmFjdChjb25zdCBLJiB4KToKKyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUg
ZWxlbWVudCB3aXRoIHRoZSBrZXkgbWF0Y2hpbmcgdGhlIHBhc3NlZCBrZXkgdmFsdWUgYW5kCisg
IC8vICAgcmV0dXJucyBhIG5vZGUgaGFuZGxlIG93bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLiBJ
ZiB0aGUgYGJ0cmVlX211bHRpc2V0YAorICAvLyAgIGRvZXMgbm90IGNvbnRhaW4gYW4gZWxlbWVu
dCB3aXRoIGEgbWF0Y2hpbmcga2V5LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4KKyAgLy8gICBl
bXB0eSBub2RlIGhhbmRsZS4KKyAgLy8KKyAgLy8gTk9URTogSW4gdGhpcyBjb250ZXh0LCBgbm9k
ZV90eXBlYCByZWZlcnMgdG8gdGhlIEMrKzE3IGNvbmNlcHQgb2YgYQorICAvLyBtb3ZlLW9ubHkg
dHlwZSB0aGF0IG93bnMgYW5kIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgZWxlbWVudHMgaW4gYXNz
b2NpYXRpdmUKKyAgLy8gY29udGFpbmVycyAoaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cv
Y3BwL2NvbnRhaW5lci9ub2RlX2hhbmRsZSkuCisgIC8vIEl0IGRvZXMgTk9UIHJlZmVyIHRvIHRo
ZSBkYXRhIGxheW91dCBvZiB0aGUgdW5kZXJseWluZyBidHJlZS4KKyAgdXNpbmcgQmFzZTo6ZXh0
cmFjdDsKKworICAvLyBidHJlZV9tdWx0aXNldDo6bWVyZ2UoKQorICAvLworICAvLyBFeHRyYWN0
cyBlbGVtZW50cyBmcm9tIGEgZ2l2ZW4gYHNvdXJjZWAgYnRyZWVfbXVsdGlzZXQgaW50byB0aGlz
CisgIC8vIGBidHJlZV9tdWx0aXNldGAuIElmIHRoZSBkZXN0aW5hdGlvbiBgYnRyZWVfbXVsdGlz
ZXRgIGFscmVhZHkgY29udGFpbnMgYW4KKyAgLy8gZWxlbWVudCB3aXRoIGFuIGVxdWl2YWxlbnQg
a2V5LCB0aGF0IGVsZW1lbnQgaXMgbm90IGV4dHJhY3RlZC4KKyAgdXNpbmcgQmFzZTo6bWVyZ2U7
CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OnN3YXAoYnRyZWVfbXVsdGlzZXQmIG90aGVyKQorICAv
LworICAvLyBFeGNoYW5nZXMgdGhlIGNvbnRlbnRzIG9mIHRoaXMgYGJ0cmVlX211bHRpc2V0YCB3
aXRoIHRob3NlIG9mIHRoZSBgb3RoZXJgCisgIC8vIGJ0cmVlX211bHRpc2V0LCBhdm9pZGluZyBp
bnZvY2F0aW9uIG9mIGFueSBtb3ZlLCBjb3B5LCBvciBzd2FwIG9wZXJhdGlvbnMKKyAgLy8gb24g
aW5kaXZpZHVhbCBlbGVtZW50cy4KKyAgLy8KKyAgLy8gQWxsIGl0ZXJhdG9ycyBhbmQgcmVmZXJl
bmNlcyBvbiB0aGUgYGJ0cmVlX211bHRpc2V0YCByZW1haW4gdmFsaWQsCisgIC8vIGV4Y2VwdGlu
ZyBmb3IgdGhlIHBhc3QtdGhlLWVuZCBpdGVyYXRvciwgd2hpY2ggaXMgaW52YWxpZGF0ZWQuCisg
IHVzaW5nIEJhc2U6OnN3YXA7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmNvbnRhaW5zKCkKKyAg
Ly8KKyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+IGJvb2wgY29udGFpbnMoY29uc3QgSyYga2V5
KSBjb25zdDoKKyAgLy8KKyAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQgY29tcGFy
aW5nIGVxdWFsIHRvIHRoZSBnaXZlbiBga2V5YCBleGlzdHMKKyAgLy8gd2l0aGluIHRoZSBgYnRy
ZWVfbXVsdGlzZXRgLCByZXR1cm5pbmcgYHRydWVgIGlmIHNvIG9yIGBmYWxzZWAgb3RoZXJ3aXNl
LgorICAvLworICAvLyBTdXBwb3J0cyBoZXRlcm9nZW5lb3VzIGxvb2t1cCwgcHJvdmlkZWQgdGhh
dCB0aGUgc2V0IGlzIHByb3ZpZGVkIGEKKyAgLy8gY29tcGF0aWJsZSBoZXRlcm9nZW5lb3VzIGNv
bXBhcmF0b3IuCisgIHVzaW5nIEJhc2U6OmNvbnRhaW5zOworCisgIC8vIGJ0cmVlX211bHRpc2V0
Ojpjb3VudCgpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBzaXplX3R5cGUgY291
bnQoY29uc3QgSyYga2V5KSBjb25zdDoKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9m
IGVsZW1lbnRzIGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAgd2l0aGluCisgIC8v
IHRoZSBgYnRyZWVfbXVsdGlzZXRgLgorICAvLworICAvLyBTdXBwb3J0cyBoZXRlcm9nZW5lb3Vz
IGxvb2t1cCwgcHJvdmlkZWQgdGhhdCB0aGUgc2V0IGlzIHByb3ZpZGVkIGEKKyAgLy8gY29tcGF0
aWJsZSBoZXRlcm9nZW5lb3VzIGNvbXBhcmF0b3IuCisgIHVzaW5nIEJhc2U6OmNvdW50OworCisg
IC8vIGJ0cmVlX211bHRpc2V0OjplcXVhbF9yYW5nZSgpCisgIC8vCisgIC8vIFJldHVybnMgYSBj
bG9zZWQgcmFuZ2UgW2ZpcnN0LCBsYXN0XSwgZGVmaW5lZCBieSBhIGBzdGQ6OnBhaXJgIG9mIHR3
bworICAvLyBpdGVyYXRvcnMsIGNvbnRhaW5pbmcgYWxsIGVsZW1lbnRzIHdpdGggdGhlIHBhc3Nl
ZCBrZXkgaW4gdGhlCisgIC8vIGBidHJlZV9tdWx0aXNldGAuCisgIHVzaW5nIEJhc2U6OmVxdWFs
X3JhbmdlOworCisgIC8vIGJ0cmVlX211bHRpc2V0OjpmaW5kKCkKKyAgLy8KKyAgLy8gdGVtcGxh
dGUgPHR5cGVuYW1lIEs+IGl0ZXJhdG9yIGZpbmQoY29uc3QgSyYga2V5KToKKyAgLy8gdGVtcGxh
dGUgPHR5cGVuYW1lIEs+IGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgSyYga2V5KSBjb25zdDoK
KyAgLy8KKyAgLy8gRmluZHMgYW4gZWxlbWVudCB3aXRoIHRoZSBwYXNzZWQgYGtleWAgd2l0aGlu
IHRoZSBgYnRyZWVfbXVsdGlzZXRgLgorICAvLworICAvLyBTdXBwb3J0cyBoZXRlcm9nZW5lb3Vz
IGxvb2t1cCwgcHJvdmlkZWQgdGhhdCB0aGUgc2V0IGlzIHByb3ZpZGVkIGEKKyAgLy8gY29tcGF0
aWJsZSBoZXRlcm9nZW5lb3VzIGNvbXBhcmF0b3IuCisgIHVzaW5nIEJhc2U6OmZpbmQ7CisKKyAg
Ly8gYnRyZWVfbXVsdGlzZXQ6OmdldF9hbGxvY2F0b3IoKQorICAvLworICAvLyBSZXR1cm5zIHRo
ZSBhbGxvY2F0b3IgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgYGJ0cmVlX211bHRpc2V0
YC4KKyAgdXNpbmcgQmFzZTo6Z2V0X2FsbG9jYXRvcjsKKworICAvLyBidHJlZV9tdWx0aXNldDo6
a2V5X2NvbXAoKTsKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUga2V5IGNvbXBhcmF0b3IgYXNzb2Np
YXRlZCB3aXRoIHRoaXMgYGJ0cmVlX211bHRpc2V0YC4KKyAgdXNpbmcgQmFzZTo6a2V5X2NvbXA7
CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OnZhbHVlX2NvbXAoKTsKKyAgLy8KKyAgLy8gUmV0dXJu
cyB0aGUgdmFsdWUgY29tcGFyYXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBgYnRyZWVfbXVsdGlz
ZXRgLiBUaGUKKyAgLy8ga2V5cyB0byBzb3J0IHRoZSBlbGVtZW50cyBhcmUgdGhlIHZhbHVlcyB0
aGVtc2VsdmVzLCB0aGVyZWZvcmUgYHZhbHVlX2NvbXBgCisgIC8vIGFuZCBpdHMgc2libGluZyBt
ZW1iZXIgZnVuY3Rpb24gYGtleV9jb21wYCBhcmUgZXF1aXZhbGVudC4KKyAgdXNpbmcgQmFzZTo6
dmFsdWVfY29tcDsKK307CisKKy8vIGFic2w6OnN3YXAoYWJzbDo6YnRyZWVfbXVsdGlzZXQ8Piwg
YWJzbDo6YnRyZWVfbXVsdGlzZXQ8PikKKy8vCisvLyBTd2FwcyB0aGUgY29udGVudHMgb2YgdHdv
IGBhYnNsOjpidHJlZV9tdWx0aXNldGAgY29udGFpbmVycy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBL
LCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBBPgordm9pZCBzd2FwKGJ0cmVlX211bHRpc2V0PEssIEMs
IEE+ICZ4LCBidHJlZV9tdWx0aXNldDxLLCBDLCBBPiAmeSkgeworICByZXR1cm4geC5zd2FwKHkp
OworfQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVS
X0JUUkVFX1NFVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvYnRyZWVfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uYTMzMGNjYTMyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvYnRyZWVfdGVzdC5jYwpAQCAtMCwwICsxLDIyNDMgQEAKKy8vIENvcHlyaWdodCAyMDE4
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvYnRyZWVf
dGVzdC5oIgorCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8
bWVtb3J5PgorI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImdtb2NrL2dt
b2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50
ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9idHJlZV9tYXAu
aCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9idHJlZV9zZXQuaCIKKyNpbmNsdWRlICJhYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9jb3VudGluZ19hbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJhYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuaCIKKyNpbmNsdWRlICJh
YnNsL2ZsYWdzL2ZsYWcuaCIKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgiCisj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVf
dHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192
aWV3LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9jb21wYXJlLmgiCisKK0FCU0xfRkxBRyhpbnQs
IHRlc3RfdmFsdWVzLCAxMDAwMCwgIlRoZSBudW1iZXIgb2YgdmFsdWVzIHRvIHVzZSBmb3IgdGVz
dHMiKTsKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7
CituYW1lc3BhY2UgeworCit1c2luZyA6OmFic2w6OnRlc3RfaW50ZXJuYWw6Okluc3RhbmNlVHJh
Y2tlcjsKK3VzaW5nIDo6YWJzbDo6dGVzdF9pbnRlcm5hbDo6TW92YWJsZU9ubHlJbnN0YW5jZTsK
K3VzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmU7Cit1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRz
QXJlQXJyYXk7Cit1c2luZyA6OnRlc3Rpbmc6OklzRW1wdHk7Cit1c2luZyA6OnRlc3Rpbmc6OlBh
aXI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBDaGVja1BhaXJF
cXVhbHMoY29uc3QgVCAmeCwgY29uc3QgVSAmeSkgeworICBBQlNMX0lOVEVSTkFMX0NIRUNLKHgg
PT0geSwgIlZhbHVlcyBhcmUgdW5lcXVhbC4iKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFc+Cit2b2lkIENoZWNrUGFpckVxdWFs
cyhjb25zdCBzdGQ6OnBhaXI8VCwgVT4gJngsIGNvbnN0IHN0ZDo6cGFpcjxWLCBXPiAmeSkgewor
ICBDaGVja1BhaXJFcXVhbHMoeC5maXJzdCwgeS5maXJzdCk7CisgIENoZWNrUGFpckVxdWFscyh4
LnNlY29uZCwgeS5zZWNvbmQpOworfQorfSAgLy8gbmFtZXNwYWNlCisKKy8vIFRoZSBiYXNlIGNs
YXNzIGZvciBhIHNvcnRlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgY2hlY2tlci4gVHJlZVR5cGUg
aXMgdGhlCisvLyBjb250YWluZXIgdHlwZSB0byBjaGVjayBhbmQgQ2hlY2tlclR5cGUgaXMgdGhl
IGNvbnRhaW5lciB0eXBlIHRvIGNoZWNrCisvLyBhZ2FpbnN0LiBUcmVlVHlwZSBpcyBleHBlY3Rl
ZCB0byBiZSBidHJlZV97c2V0LG1hcCxtdWx0aXNldCxtdWx0aW1hcH0gYW5kCisvLyBDaGVja2Vy
VHlwZSBpcyBleHBlY3RlZCB0byBiZSB7c2V0LG1hcCxtdWx0aXNldCxtdWx0aW1hcH0uCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHJlZVR5cGUsIHR5cGVuYW1lIENoZWNrZXJUeXBlPgorY2xhc3MgYmFz
ZV9jaGVja2VyIHsKKyBwdWJsaWM6CisgIHVzaW5nIGtleV90eXBlID0gdHlwZW5hbWUgVHJlZVR5
cGU6OmtleV90eXBlOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgVHJlZVR5cGU6OnZh
bHVlX3R5cGU7CisgIHVzaW5nIGtleV9jb21wYXJlID0gdHlwZW5hbWUgVHJlZVR5cGU6OmtleV9j
b21wYXJlOworICB1c2luZyBwb2ludGVyID0gdHlwZW5hbWUgVHJlZVR5cGU6OnBvaW50ZXI7Cisg
IHVzaW5nIGNvbnN0X3BvaW50ZXIgPSB0eXBlbmFtZSBUcmVlVHlwZTo6Y29uc3RfcG9pbnRlcjsK
KyAgdXNpbmcgcmVmZXJlbmNlID0gdHlwZW5hbWUgVHJlZVR5cGU6OnJlZmVyZW5jZTsKKyAgdXNp
bmcgY29uc3RfcmVmZXJlbmNlID0gdHlwZW5hbWUgVHJlZVR5cGU6OmNvbnN0X3JlZmVyZW5jZTsK
KyAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgVHJlZVR5cGU6OnNpemVfdHlwZTsKKyAgdXNp
bmcgZGlmZmVyZW5jZV90eXBlID0gdHlwZW5hbWUgVHJlZVR5cGU6OmRpZmZlcmVuY2VfdHlwZTsK
KyAgdXNpbmcgaXRlcmF0b3IgPSB0eXBlbmFtZSBUcmVlVHlwZTo6aXRlcmF0b3I7CisgIHVzaW5n
IGNvbnN0X2l0ZXJhdG9yID0gdHlwZW5hbWUgVHJlZVR5cGU6OmNvbnN0X2l0ZXJhdG9yOworICB1
c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gdHlwZW5hbWUgVHJlZVR5cGU6OnJldmVyc2VfaXRlcmF0
b3I7CisgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSB0eXBlbmFtZSBUcmVlVHlwZTo6
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKKworIHB1YmxpYzoKKyAgYmFzZV9jaGVja2VyKCkgOiBj
b25zdF90cmVlXyh0cmVlXykge30KKyAgYmFzZV9jaGVja2VyKGNvbnN0IGJhc2VfY2hlY2tlciAm
eCkKKyAgICAgIDogdHJlZV8oeC50cmVlXyksIGNvbnN0X3RyZWVfKHRyZWVfKSwgY2hlY2tlcl8o
eC5jaGVja2VyXykge30KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+CisgIGJh
c2VfY2hlY2tlcihJbnB1dEl0ZXJhdG9yIGIsIElucHV0SXRlcmF0b3IgZSkKKyAgICAgIDogdHJl
ZV8oYiwgZSksIGNvbnN0X3RyZWVfKHRyZWVfKSwgY2hlY2tlcl8oYiwgZSkge30KKworICBpdGVy
YXRvciBiZWdpbigpIHsgcmV0dXJuIHRyZWVfLmJlZ2luKCk7IH0KKyAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiB0cmVlXy5iZWdpbigpOyB9CisgIGl0ZXJhdG9yIGVuZCgp
IHsgcmV0dXJuIHRyZWVfLmVuZCgpOyB9CisgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIHRyZWVfLmVuZCgpOyB9CisgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeyByZXR1
cm4gdHJlZV8ucmJlZ2luKCk7IH0KKyAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBj
b25zdCB7IHJldHVybiB0cmVlXy5yYmVnaW4oKTsgfQorICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQo
KSB7IHJldHVybiB0cmVlXy5yZW5kKCk7IH0KKyAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5k
KCkgY29uc3QgeyByZXR1cm4gdHJlZV8ucmVuZCgpOyB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IEl0ZXJUeXBlLCB0eXBlbmFtZSBDaGVja2VySXRlclR5cGU+CisgIEl0ZXJUeXBlIGl0ZXJfY2hl
Y2soSXRlclR5cGUgdHJlZV9pdGVyLCBDaGVja2VySXRlclR5cGUgY2hlY2tlcl9pdGVyKSBjb25z
dCB7CisgICAgaWYgKHRyZWVfaXRlciA9PSB0cmVlXy5lbmQoKSkgeworICAgICAgQUJTTF9JTlRF
Uk5BTF9DSEVDSyhjaGVja2VyX2l0ZXIgPT0gY2hlY2tlcl8uZW5kKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJDaGVja2VyIGl0ZXJhdG9yIG5vdCBhdCBlbmQuIik7CisgICAgfSBlbHNl
IHsKKyAgICAgIENoZWNrUGFpckVxdWFscygqdHJlZV9pdGVyLCAqY2hlY2tlcl9pdGVyKTsKKyAg
ICB9CisgICAgcmV0dXJuIHRyZWVfaXRlcjsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRl
clR5cGUsIHR5cGVuYW1lIENoZWNrZXJJdGVyVHlwZT4KKyAgSXRlclR5cGUgcml0ZXJfY2hlY2so
SXRlclR5cGUgdHJlZV9pdGVyLCBDaGVja2VySXRlclR5cGUgY2hlY2tlcl9pdGVyKSBjb25zdCB7
CisgICAgaWYgKHRyZWVfaXRlciA9PSB0cmVlXy5yZW5kKCkpIHsKKyAgICAgIEFCU0xfSU5URVJO
QUxfQ0hFQ0soY2hlY2tlcl9pdGVyID09IGNoZWNrZXJfLnJlbmQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkNoZWNrZXIgaXRlcmF0b3Igbm90IGF0IHJlbmQuIik7CisgICAgfSBlbHNl
IHsKKyAgICAgIENoZWNrUGFpckVxdWFscygqdHJlZV9pdGVyLCAqY2hlY2tlcl9pdGVyKTsKKyAg
ICB9CisgICAgcmV0dXJuIHRyZWVfaXRlcjsKKyAgfQorICB2b2lkIHZhbHVlX2NoZWNrKGNvbnN0
IHZhbHVlX3R5cGUgJngpIHsKKyAgICB0eXBlbmFtZSBLZXlPZlZhbHVlPHR5cGVuYW1lIFRyZWVU
eXBlOjprZXlfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFRyZWVUeXBl
Ojp2YWx1ZV90eXBlPjo6dHlwZSBrZXlfb2ZfdmFsdWU7CisgICAgY29uc3Qga2V5X3R5cGUgJmtl
eSA9IGtleV9vZl92YWx1ZSh4KTsKKyAgICBDaGVja1BhaXJFcXVhbHMoKmZpbmQoa2V5KSwgeCk7
CisgICAgbG93ZXJfYm91bmQoa2V5KTsKKyAgICB1cHBlcl9ib3VuZChrZXkpOworICAgIGVxdWFs
X3JhbmdlKGtleSk7CisgICAgY29udGFpbnMoa2V5KTsKKyAgICBjb3VudChrZXkpOworICB9Cisg
IHZvaWQgZXJhc2VfY2hlY2soY29uc3Qga2V5X3R5cGUgJmtleSkgeworICAgIEVYUEVDVF9GQUxT
RSh0cmVlXy5jb250YWlucyhrZXkpKTsKKyAgICBFWFBFQ1RfRVEodHJlZV8uZmluZChrZXkpLCBj
b25zdF90cmVlXy5lbmQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNvbnN0X3RyZWVfLmNvbnRhaW5z
KGtleSkpOworICAgIEVYUEVDVF9FUShjb25zdF90cmVlXy5maW5kKGtleSksIHRyZWVfLmVuZCgp
KTsKKyAgICBFWFBFQ1RfRVEodHJlZV8uZXF1YWxfcmFuZ2Uoa2V5KS5maXJzdCwKKyAgICAgICAg
ICAgICAgY29uc3RfdHJlZV8uZXF1YWxfcmFuZ2Uoa2V5KS5zZWNvbmQpOworICB9CisKKyAgaXRl
cmF0b3IgbG93ZXJfYm91bmQoY29uc3Qga2V5X3R5cGUgJmtleSkgeworICAgIHJldHVybiBpdGVy
X2NoZWNrKHRyZWVfLmxvd2VyX2JvdW5kKGtleSksIGNoZWNrZXJfLmxvd2VyX2JvdW5kKGtleSkp
OworICB9CisgIGNvbnN0X2l0ZXJhdG9yIGxvd2VyX2JvdW5kKGNvbnN0IGtleV90eXBlICZrZXkp
IGNvbnN0IHsKKyAgICByZXR1cm4gaXRlcl9jaGVjayh0cmVlXy5sb3dlcl9ib3VuZChrZXkpLCBj
aGVja2VyXy5sb3dlcl9ib3VuZChrZXkpKTsKKyAgfQorICBpdGVyYXRvciB1cHBlcl9ib3VuZChj
b25zdCBrZXlfdHlwZSAma2V5KSB7CisgICAgcmV0dXJuIGl0ZXJfY2hlY2sodHJlZV8udXBwZXJf
Ym91bmQoa2V5KSwgY2hlY2tlcl8udXBwZXJfYm91bmQoa2V5KSk7CisgIH0KKyAgY29uc3RfaXRl
cmF0b3IgdXBwZXJfYm91bmQoY29uc3Qga2V5X3R5cGUgJmtleSkgY29uc3QgeworICAgIHJldHVy
biBpdGVyX2NoZWNrKHRyZWVfLnVwcGVyX2JvdW5kKGtleSksIGNoZWNrZXJfLnVwcGVyX2JvdW5k
KGtleSkpOworICB9CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+IGVxdWFsX3Jhbmdl
KGNvbnN0IGtleV90eXBlICZrZXkpIHsKKyAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgQ2hlY2tlclR5
cGU6Oml0ZXJhdG9yLCB0eXBlbmFtZSBDaGVja2VyVHlwZTo6aXRlcmF0b3I+CisgICAgICAgIGNo
ZWNrZXJfcmVzID0gY2hlY2tlcl8uZXF1YWxfcmFuZ2Uoa2V5KTsKKyAgICBzdGQ6OnBhaXI8aXRl
cmF0b3IsIGl0ZXJhdG9yPiB0cmVlX3JlcyA9IHRyZWVfLmVxdWFsX3JhbmdlKGtleSk7CisgICAg
aXRlcl9jaGVjayh0cmVlX3Jlcy5maXJzdCwgY2hlY2tlcl9yZXMuZmlyc3QpOworICAgIGl0ZXJf
Y2hlY2sodHJlZV9yZXMuc2Vjb25kLCBjaGVja2VyX3Jlcy5zZWNvbmQpOworICAgIHJldHVybiB0
cmVlX3JlczsKKyAgfQorICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9y
PiBlcXVhbF9yYW5nZSgKKyAgICAgIGNvbnN0IGtleV90eXBlICZrZXkpIGNvbnN0IHsKKyAgICBz
dGQ6OnBhaXI8dHlwZW5hbWUgQ2hlY2tlclR5cGU6OmNvbnN0X2l0ZXJhdG9yLAorICAgICAgICAg
ICAgICB0eXBlbmFtZSBDaGVja2VyVHlwZTo6Y29uc3RfaXRlcmF0b3I+CisgICAgICAgIGNoZWNr
ZXJfcmVzID0gY2hlY2tlcl8uZXF1YWxfcmFuZ2Uoa2V5KTsKKyAgICBzdGQ6OnBhaXI8Y29uc3Rf
aXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPiB0cmVlX3JlcyA9IHRyZWVfLmVxdWFsX3JhbmdlKGtl
eSk7CisgICAgaXRlcl9jaGVjayh0cmVlX3Jlcy5maXJzdCwgY2hlY2tlcl9yZXMuZmlyc3QpOwor
ICAgIGl0ZXJfY2hlY2sodHJlZV9yZXMuc2Vjb25kLCBjaGVja2VyX3Jlcy5zZWNvbmQpOworICAg
IHJldHVybiB0cmVlX3JlczsKKyAgfQorICBpdGVyYXRvciBmaW5kKGNvbnN0IGtleV90eXBlICZr
ZXkpIHsKKyAgICByZXR1cm4gaXRlcl9jaGVjayh0cmVlXy5maW5kKGtleSksIGNoZWNrZXJfLmZp
bmQoa2V5KSk7CisgIH0KKyAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSAma2V5
KSBjb25zdCB7CisgICAgcmV0dXJuIGl0ZXJfY2hlY2sodHJlZV8uZmluZChrZXkpLCBjaGVja2Vy
Xy5maW5kKGtleSkpOworICB9CisgIGJvb2wgY29udGFpbnMoY29uc3Qga2V5X3R5cGUgJmtleSkg
Y29uc3QgeworICAgIHJldHVybiBmaW5kKGtleSkgIT0gZW5kKCk7CisgIH0KKyAgc2l6ZV90eXBl
IGNvdW50KGNvbnN0IGtleV90eXBlICZrZXkpIGNvbnN0IHsKKyAgICBzaXplX3R5cGUgcmVzID0g
Y2hlY2tlcl8uY291bnQoa2V5KTsKKyAgICBFWFBFQ1RfRVEocmVzLCB0cmVlXy5jb3VudChrZXkp
KTsKKyAgICByZXR1cm4gcmVzOworICB9CisKKyAgYmFzZV9jaGVja2VyICZvcGVyYXRvcj0oY29u
c3QgYmFzZV9jaGVja2VyICZ4KSB7CisgICAgdHJlZV8gPSB4LnRyZWVfOworICAgIGNoZWNrZXJf
ID0geC5jaGVja2VyXzsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBpbnQgZXJhc2UoY29u
c3Qga2V5X3R5cGUgJmtleSkgeworICAgIGludCBzaXplID0gdHJlZV8uc2l6ZSgpOworICAgIGlu
dCByZXMgPSBjaGVja2VyXy5lcmFzZShrZXkpOworICAgIEVYUEVDVF9FUShyZXMsIHRyZWVfLmNv
dW50KGtleSkpOworICAgIEVYUEVDVF9FUShyZXMsIHRyZWVfLmVyYXNlKGtleSkpOworICAgIEVY
UEVDVF9FUSh0cmVlXy5jb3VudChrZXkpLCAwKTsKKyAgICBFWFBFQ1RfRVEodHJlZV8uc2l6ZSgp
LCBzaXplIC0gcmVzKTsKKyAgICBlcmFzZV9jaGVjayhrZXkpOworICAgIHJldHVybiByZXM7Cisg
IH0KKyAgaXRlcmF0b3IgZXJhc2UoaXRlcmF0b3IgaXRlcikgeworICAgIGtleV90eXBlIGtleSA9
IGl0ZXIua2V5KCk7CisgICAgaW50IHNpemUgPSB0cmVlXy5zaXplKCk7CisgICAgaW50IGNvdW50
ID0gdHJlZV8uY291bnQoa2V5KTsKKyAgICBhdXRvIGNoZWNrZXJfaXRlciA9IGNoZWNrZXJfLmxv
d2VyX2JvdW5kKGtleSk7CisgICAgZm9yIChpdGVyYXRvciB0bXAodHJlZV8ubG93ZXJfYm91bmQo
a2V5KSk7IHRtcCAhPSBpdGVyOyArK3RtcCkgeworICAgICAgKytjaGVja2VyX2l0ZXI7CisgICAg
fQorICAgIGF1dG8gY2hlY2tlcl9uZXh0ID0gY2hlY2tlcl9pdGVyOworICAgICsrY2hlY2tlcl9u
ZXh0OworICAgIGNoZWNrZXJfLmVyYXNlKGNoZWNrZXJfaXRlcik7CisgICAgaXRlciA9IHRyZWVf
LmVyYXNlKGl0ZXIpOworICAgIEVYUEVDVF9FUSh0cmVlXy5zaXplKCksIGNoZWNrZXJfLnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKHRyZWVfLnNpemUoKSwgc2l6ZSAtIDEpOworICAgIEVYUEVDVF9F
USh0cmVlXy5jb3VudChrZXkpLCBjb3VudCAtIDEpOworICAgIGlmIChjb3VudCA9PSAxKSB7Cisg
ICAgICBlcmFzZV9jaGVjayhrZXkpOworICAgIH0KKyAgICByZXR1cm4gaXRlcl9jaGVjayhpdGVy
LCBjaGVja2VyX25leHQpOworICB9CisKKyAgdm9pZCBlcmFzZShpdGVyYXRvciBiZWdpbiwgaXRl
cmF0b3IgZW5kKSB7CisgICAgaW50IHNpemUgPSB0cmVlXy5zaXplKCk7CisgICAgaW50IGNvdW50
ID0gc3RkOjpkaXN0YW5jZShiZWdpbiwgZW5kKTsKKyAgICBhdXRvIGNoZWNrZXJfYmVnaW4gPSBj
aGVja2VyXy5sb3dlcl9ib3VuZChiZWdpbi5rZXkoKSk7CisgICAgZm9yIChpdGVyYXRvciB0bXAo
dHJlZV8ubG93ZXJfYm91bmQoYmVnaW4ua2V5KCkpKTsgdG1wICE9IGJlZ2luOyArK3RtcCkgewor
ICAgICAgKytjaGVja2VyX2JlZ2luOworICAgIH0KKyAgICBhdXRvIGNoZWNrZXJfZW5kID0KKyAg
ICAgICAgZW5kID09IHRyZWVfLmVuZCgpID8gY2hlY2tlcl8uZW5kKCkgOiBjaGVja2VyXy5sb3dl
cl9ib3VuZChlbmQua2V5KCkpOworICAgIGlmIChlbmQgIT0gdHJlZV8uZW5kKCkpIHsKKyAgICAg
IGZvciAoaXRlcmF0b3IgdG1wKHRyZWVfLmxvd2VyX2JvdW5kKGVuZC5rZXkoKSkpOyB0bXAgIT0g
ZW5kOyArK3RtcCkgeworICAgICAgICArK2NoZWNrZXJfZW5kOworICAgICAgfQorICAgIH0KKyAg
ICBjaGVja2VyXy5lcmFzZShjaGVja2VyX2JlZ2luLCBjaGVja2VyX2VuZCk7CisgICAgdHJlZV8u
ZXJhc2UoYmVnaW4sIGVuZCk7CisgICAgRVhQRUNUX0VRKHRyZWVfLnNpemUoKSwgY2hlY2tlcl8u
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEodHJlZV8uc2l6ZSgpLCBzaXplIC0gY291bnQpOworICB9
CisKKyAgdm9pZCBjbGVhcigpIHsKKyAgICB0cmVlXy5jbGVhcigpOworICAgIGNoZWNrZXJfLmNs
ZWFyKCk7CisgIH0KKyAgdm9pZCBzd2FwKGJhc2VfY2hlY2tlciAmeCkgeworICAgIHRyZWVfLnN3
YXAoeC50cmVlXyk7CisgICAgY2hlY2tlcl8uc3dhcCh4LmNoZWNrZXJfKTsKKyAgfQorCisgIHZv
aWQgdmVyaWZ5KCkgY29uc3QgeworICAgIHRyZWVfLnZlcmlmeSgpOworICAgIEVYUEVDVF9FUSh0
cmVlXy5zaXplKCksIGNoZWNrZXJfLnNpemUoKSk7CisKKyAgICAvLyBNb3ZlIHRocm91Z2ggdGhl
IGZvcndhcmQgaXRlcmF0b3JzIHVzaW5nIGluY3JlbWVudC4KKyAgICBhdXRvIGNoZWNrZXJfaXRl
ciA9IGNoZWNrZXJfLmJlZ2luKCk7CisgICAgY29uc3RfaXRlcmF0b3IgdHJlZV9pdGVyKHRyZWVf
LmJlZ2luKCkpOworICAgIGZvciAoOyB0cmVlX2l0ZXIgIT0gdHJlZV8uZW5kKCk7ICsrdHJlZV9p
dGVyLCArK2NoZWNrZXJfaXRlcikgeworICAgICAgQ2hlY2tQYWlyRXF1YWxzKCp0cmVlX2l0ZXIs
ICpjaGVja2VyX2l0ZXIpOworICAgIH0KKworICAgIC8vIE1vdmUgdGhyb3VnaCB0aGUgZm9yd2Fy
ZCBpdGVyYXRvcnMgdXNpbmcgZGVjcmVtZW50LgorICAgIGZvciAoaW50IG4gPSB0cmVlXy5zaXpl
KCkgLSAxOyBuID49IDA7IC0tbikgeworICAgICAgaXRlcl9jaGVjayh0cmVlX2l0ZXIsIGNoZWNr
ZXJfaXRlcik7CisgICAgICAtLXRyZWVfaXRlcjsKKyAgICAgIC0tY2hlY2tlcl9pdGVyOworICAg
IH0KKyAgICBFWFBFQ1RfRVEodHJlZV9pdGVyLCB0cmVlXy5iZWdpbigpKTsKKyAgICBFWFBFQ1Rf
RVEoY2hlY2tlcl9pdGVyLCBjaGVja2VyXy5iZWdpbigpKTsKKworICAgIC8vIE1vdmUgdGhyb3Vn
aCB0aGUgcmV2ZXJzZSBpdGVyYXRvcnMgdXNpbmcgaW5jcmVtZW50LgorICAgIGF1dG8gY2hlY2tl
cl9yaXRlciA9IGNoZWNrZXJfLnJiZWdpbigpOworICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3Ig
dHJlZV9yaXRlcih0cmVlXy5yYmVnaW4oKSk7CisgICAgZm9yICg7IHRyZWVfcml0ZXIgIT0gdHJl
ZV8ucmVuZCgpOyArK3RyZWVfcml0ZXIsICsrY2hlY2tlcl9yaXRlcikgeworICAgICAgQ2hlY2tQ
YWlyRXF1YWxzKCp0cmVlX3JpdGVyLCAqY2hlY2tlcl9yaXRlcik7CisgICAgfQorCisgICAgLy8g
TW92ZSB0aHJvdWdoIHRoZSByZXZlcnNlIGl0ZXJhdG9ycyB1c2luZyBkZWNyZW1lbnQuCisgICAg
Zm9yIChpbnQgbiA9IHRyZWVfLnNpemUoKSAtIDE7IG4gPj0gMDsgLS1uKSB7CisgICAgICByaXRl
cl9jaGVjayh0cmVlX3JpdGVyLCBjaGVja2VyX3JpdGVyKTsKKyAgICAgIC0tdHJlZV9yaXRlcjsK
KyAgICAgIC0tY2hlY2tlcl9yaXRlcjsKKyAgICB9CisgICAgRVhQRUNUX0VRKHRyZWVfcml0ZXIs
IHRyZWVfLnJiZWdpbigpKTsKKyAgICBFWFBFQ1RfRVEoY2hlY2tlcl9yaXRlciwgY2hlY2tlcl8u
cmJlZ2luKCkpOworICB9CisKKyAgY29uc3QgVHJlZVR5cGUgJnRyZWUoKSBjb25zdCB7IHJldHVy
biB0cmVlXzsgfQorCisgIHNpemVfdHlwZSBzaXplKCkgY29uc3QgeworICAgIEVYUEVDVF9FUSh0
cmVlXy5zaXplKCksIGNoZWNrZXJfLnNpemUoKSk7CisgICAgcmV0dXJuIHRyZWVfLnNpemUoKTsK
KyAgfQorICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7IHJldHVybiB0cmVlXy5tYXhfc2l6
ZSgpOyB9CisgIGJvb2wgZW1wdHkoKSBjb25zdCB7CisgICAgRVhQRUNUX0VRKHRyZWVfLmVtcHR5
KCksIGNoZWNrZXJfLmVtcHR5KCkpOworICAgIHJldHVybiB0cmVlXy5lbXB0eSgpOworICB9CisK
KyBwcm90ZWN0ZWQ6CisgIFRyZWVUeXBlIHRyZWVfOworICBjb25zdCBUcmVlVHlwZSAmY29uc3Rf
dHJlZV87CisgIENoZWNrZXJUeXBlIGNoZWNrZXJfOworfTsKKworbmFtZXNwYWNlIHsKKy8vIEEg
Y2hlY2tlciBmb3IgdW5pcXVlIHNvcnRlZCBhc3NvY2lhdGl2ZSBjb250YWluZXJzLiBUcmVlVHlw
ZSBpcyBleHBlY3RlZCB0bworLy8gYmUgYnRyZWVfe3NldCxtYXB9IGFuZCBDaGVja2VyVHlwZSBp
cyBleHBlY3RlZCB0byBiZSB7c2V0LG1hcH0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZVR5cGUs
IHR5cGVuYW1lIENoZWNrZXJUeXBlPgorY2xhc3MgdW5pcXVlX2NoZWNrZXIgOiBwdWJsaWMgYmFz
ZV9jaGVja2VyPFRyZWVUeXBlLCBDaGVja2VyVHlwZT4geworICB1c2luZyBzdXBlcl90eXBlID0g
YmFzZV9jaGVja2VyPFRyZWVUeXBlLCBDaGVja2VyVHlwZT47CisKKyBwdWJsaWM6CisgIHVzaW5n
IGl0ZXJhdG9yID0gdHlwZW5hbWUgc3VwZXJfdHlwZTo6aXRlcmF0b3I7CisgIHVzaW5nIHZhbHVl
X3R5cGUgPSB0eXBlbmFtZSBzdXBlcl90eXBlOjp2YWx1ZV90eXBlOworCisgcHVibGljOgorICB1
bmlxdWVfY2hlY2tlcigpIDogc3VwZXJfdHlwZSgpIHt9CisgIHVuaXF1ZV9jaGVja2VyKGNvbnN0
IHVuaXF1ZV9jaGVja2VyICZ4KSA6IHN1cGVyX3R5cGUoeCkge30KKyAgdGVtcGxhdGUgPGNsYXNz
IElucHV0SXRlcmF0b3I+CisgIHVuaXF1ZV9jaGVja2VyKElucHV0SXRlcmF0b3IgYiwgSW5wdXRJ
dGVyYXRvciBlKSA6IHN1cGVyX3R5cGUoYiwgZSkge30KKworICAvLyBJbnNlcnRpb24gcm91dGlu
ZXMuCisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0KGNvbnN0IHZhbHVlX3R5cGUg
JngpIHsKKyAgICBpbnQgc2l6ZSA9IHRoaXMtPnRyZWVfLnNpemUoKTsKKyAgICBzdGQ6OnBhaXI8
dHlwZW5hbWUgQ2hlY2tlclR5cGU6Oml0ZXJhdG9yLCBib29sPiBjaGVja2VyX3JlcyA9CisgICAg
ICAgIHRoaXMtPmNoZWNrZXJfLmluc2VydCh4KTsKKyAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJv
b2w+IHRyZWVfcmVzID0gdGhpcy0+dHJlZV8uaW5zZXJ0KHgpOworICAgIENoZWNrUGFpckVxdWFs
cygqdHJlZV9yZXMuZmlyc3QsICpjaGVja2VyX3Jlcy5maXJzdCk7CisgICAgRVhQRUNUX0VRKHRy
ZWVfcmVzLnNlY29uZCwgY2hlY2tlcl9yZXMuc2Vjb25kKTsKKyAgICBFWFBFQ1RfRVEodGhpcy0+
dHJlZV8uc2l6ZSgpLCB0aGlzLT5jaGVja2VyXy5zaXplKCkpOworICAgIEVYUEVDVF9FUSh0aGlz
LT50cmVlXy5zaXplKCksIHNpemUgKyB0cmVlX3Jlcy5zZWNvbmQpOworICAgIHJldHVybiB0cmVl
X3JlczsKKyAgfQorICBpdGVyYXRvciBpbnNlcnQoaXRlcmF0b3IgcG9zaXRpb24sIGNvbnN0IHZh
bHVlX3R5cGUgJngpIHsKKyAgICBpbnQgc2l6ZSA9IHRoaXMtPnRyZWVfLnNpemUoKTsKKyAgICBz
dGQ6OnBhaXI8dHlwZW5hbWUgQ2hlY2tlclR5cGU6Oml0ZXJhdG9yLCBib29sPiBjaGVja2VyX3Jl
cyA9CisgICAgICAgIHRoaXMtPmNoZWNrZXJfLmluc2VydCh4KTsKKyAgICBpdGVyYXRvciB0cmVl
X3JlcyA9IHRoaXMtPnRyZWVfLmluc2VydChwb3NpdGlvbiwgeCk7CisgICAgQ2hlY2tQYWlyRXF1
YWxzKCp0cmVlX3JlcywgKmNoZWNrZXJfcmVzLmZpcnN0KTsKKyAgICBFWFBFQ1RfRVEodGhpcy0+
dHJlZV8uc2l6ZSgpLCB0aGlzLT5jaGVja2VyXy5zaXplKCkpOworICAgIEVYUEVDVF9FUSh0aGlz
LT50cmVlXy5zaXplKCksIHNpemUgKyBjaGVja2VyX3Jlcy5zZWNvbmQpOworICAgIHJldHVybiB0
cmVlX3JlczsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgdm9p
ZCBpbnNlcnQoSW5wdXRJdGVyYXRvciBiLCBJbnB1dEl0ZXJhdG9yIGUpIHsKKyAgICBmb3IgKDsg
YiAhPSBlOyArK2IpIHsKKyAgICAgIGluc2VydCgqYik7CisgICAgfQorICB9Cit9OworCisvLyBB
IGNoZWNrZXIgZm9yIG11bHRpcGxlIHNvcnRlZCBhc3NvY2lhdGl2ZSBjb250YWluZXJzLiBUcmVl
VHlwZSBpcyBleHBlY3RlZAorLy8gdG8gYmUgYnRyZWVfe211bHRpc2V0LG11bHRpbWFwfSBhbmQg
Q2hlY2tlclR5cGUgaXMgZXhwZWN0ZWQgdG8gYmUKKy8vIHttdWx0aXNldCxtdWx0aW1hcH0uCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZVR5cGUsIHR5cGVuYW1lIENoZWNrZXJUeXBlPgorY2xhc3Mg
bXVsdGlfY2hlY2tlciA6IHB1YmxpYyBiYXNlX2NoZWNrZXI8VHJlZVR5cGUsIENoZWNrZXJUeXBl
PiB7CisgIHVzaW5nIHN1cGVyX3R5cGUgPSBiYXNlX2NoZWNrZXI8VHJlZVR5cGUsIENoZWNrZXJU
eXBlPjsKKworIHB1YmxpYzoKKyAgdXNpbmcgaXRlcmF0b3IgPSB0eXBlbmFtZSBzdXBlcl90eXBl
OjppdGVyYXRvcjsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIHN1cGVyX3R5cGU6OnZh
bHVlX3R5cGU7CisKKyBwdWJsaWM6CisgIG11bHRpX2NoZWNrZXIoKSA6IHN1cGVyX3R5cGUoKSB7
fQorICBtdWx0aV9jaGVja2VyKGNvbnN0IG11bHRpX2NoZWNrZXIgJngpIDogc3VwZXJfdHlwZSh4
KSB7fQorICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KKyAgbXVsdGlfY2hlY2tlcihJ
bnB1dEl0ZXJhdG9yIGIsIElucHV0SXRlcmF0b3IgZSkgOiBzdXBlcl90eXBlKGIsIGUpIHt9CisK
KyAgLy8gSW5zZXJ0aW9uIHJvdXRpbmVzLgorICBpdGVyYXRvciBpbnNlcnQoY29uc3QgdmFsdWVf
dHlwZSAmeCkgeworICAgIGludCBzaXplID0gdGhpcy0+dHJlZV8uc2l6ZSgpOworICAgIGF1dG8g
Y2hlY2tlcl9yZXMgPSB0aGlzLT5jaGVja2VyXy5pbnNlcnQoeCk7CisgICAgaXRlcmF0b3IgdHJl
ZV9yZXMgPSB0aGlzLT50cmVlXy5pbnNlcnQoeCk7CisgICAgQ2hlY2tQYWlyRXF1YWxzKCp0cmVl
X3JlcywgKmNoZWNrZXJfcmVzKTsKKyAgICBFWFBFQ1RfRVEodGhpcy0+dHJlZV8uc2l6ZSgpLCB0
aGlzLT5jaGVja2VyXy5zaXplKCkpOworICAgIEVYUEVDVF9FUSh0aGlzLT50cmVlXy5zaXplKCks
IHNpemUgKyAxKTsKKyAgICByZXR1cm4gdHJlZV9yZXM7CisgIH0KKyAgaXRlcmF0b3IgaW5zZXJ0
KGl0ZXJhdG9yIHBvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlICZ4KSB7CisgICAgaW50IHNpemUg
PSB0aGlzLT50cmVlXy5zaXplKCk7CisgICAgYXV0byBjaGVja2VyX3JlcyA9IHRoaXMtPmNoZWNr
ZXJfLmluc2VydCh4KTsKKyAgICBpdGVyYXRvciB0cmVlX3JlcyA9IHRoaXMtPnRyZWVfLmluc2Vy
dChwb3NpdGlvbiwgeCk7CisgICAgQ2hlY2tQYWlyRXF1YWxzKCp0cmVlX3JlcywgKmNoZWNrZXJf
cmVzKTsKKyAgICBFWFBFQ1RfRVEodGhpcy0+dHJlZV8uc2l6ZSgpLCB0aGlzLT5jaGVja2VyXy5z
aXplKCkpOworICAgIEVYUEVDVF9FUSh0aGlzLT50cmVlXy5zaXplKCksIHNpemUgKyAxKTsKKyAg
ICByZXR1cm4gdHJlZV9yZXM7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0
b3I+CisgIHZvaWQgaW5zZXJ0KElucHV0SXRlcmF0b3IgYiwgSW5wdXRJdGVyYXRvciBlKSB7Cisg
ICAgZm9yICg7IGIgIT0gZTsgKytiKSB7CisgICAgICBpbnNlcnQoKmIpOworICAgIH0KKyAgfQor
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Cit2b2lkIERvVGVzdChjb25z
dCBjaGFyICpuYW1lLCBUICpiLCBjb25zdCBzdGQ6OnZlY3RvcjxWPiAmdmFsdWVzKSB7CisgIHR5
cGVuYW1lIEtleU9mVmFsdWU8dHlwZW5hbWUgVDo6a2V5X3R5cGUsIFY+Ojp0eXBlIGtleV9vZl92
YWx1ZTsKKworICBUICZtdXRhYmxlX2IgPSAqYjsKKyAgY29uc3QgVCAmY29uc3RfYiA9ICpiOwor
CisgIC8vIFRlc3QgaW5zZXJ0LgorICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7
ICsraSkgeworICAgIG11dGFibGVfYi5pbnNlcnQodmFsdWVzW2ldKTsKKyAgICBtdXRhYmxlX2Iu
dmFsdWVfY2hlY2sodmFsdWVzW2ldKTsKKyAgfQorICBBU1NFUlRfRVEobXV0YWJsZV9iLnNpemUo
KSwgdmFsdWVzLnNpemUoKSk7CisKKyAgY29uc3RfYi52ZXJpZnkoKTsKKworICAvLyBUZXN0IGNv
cHkgY29uc3RydWN0b3IuCisgIFQgYl9jb3B5KGNvbnN0X2IpOworICBFWFBFQ1RfRVEoYl9jb3B5
LnNpemUoKSwgY29uc3RfYi5zaXplKCkpOworICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5z
aXplKCk7ICsraSkgeworICAgIENoZWNrUGFpckVxdWFscygqYl9jb3B5LmZpbmQoa2V5X29mX3Zh
bHVlKHZhbHVlc1tpXSkpLCB2YWx1ZXNbaV0pOworICB9CisKKyAgLy8gVGVzdCByYW5nZSBjb25z
dHJ1Y3Rvci4KKyAgVCBiX3JhbmdlKGNvbnN0X2IuYmVnaW4oKSwgY29uc3RfYi5lbmQoKSk7Cisg
IEVYUEVDVF9FUShiX3JhbmdlLnNpemUoKSwgY29uc3RfYi5zaXplKCkpOworICBmb3IgKGludCBp
ID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIENoZWNrUGFpckVxdWFscygqYl9y
YW5nZS5maW5kKGtleV9vZl92YWx1ZSh2YWx1ZXNbaV0pKSwgdmFsdWVzW2ldKTsKKyAgfQorCisg
IC8vIFRlc3QgcmFuZ2UgaW5zZXJ0aW9uIGZvciB2YWx1ZXMgdGhhdCBhbHJlYWR5IGV4aXN0Lgor
ICBiX3JhbmdlLmluc2VydChiX2NvcHkuYmVnaW4oKSwgYl9jb3B5LmVuZCgpKTsKKyAgYl9yYW5n
ZS52ZXJpZnkoKTsKKworICAvLyBUZXN0IHJhbmdlIGluc2VydGlvbiBmb3IgbmV3IHZhbHVlcy4K
KyAgYl9yYW5nZS5jbGVhcigpOworICBiX3JhbmdlLmluc2VydChiX2NvcHkuYmVnaW4oKSwgYl9j
b3B5LmVuZCgpKTsKKyAgRVhQRUNUX0VRKGJfcmFuZ2Uuc2l6ZSgpLCBiX2NvcHkuc2l6ZSgpKTsK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBDaGVja1Bh
aXJFcXVhbHMoKmJfcmFuZ2UuZmluZChrZXlfb2ZfdmFsdWUodmFsdWVzW2ldKSksIHZhbHVlc1tp
XSk7CisgIH0KKworICAvLyBUZXN0IGFzc2lnbm1lbnQgdG8gc2VsZi4gTm90aGluZyBzaG91bGQg
Y2hhbmdlLgorICBiX3JhbmdlLm9wZXJhdG9yPShiX3JhbmdlKTsKKyAgRVhQRUNUX0VRKGJfcmFu
Z2Uuc2l6ZSgpLCBiX2NvcHkuc2l6ZSgpKTsKKworICAvLyBUZXN0IGFzc2lnbm1lbnQgb2YgbmV3
IHZhbHVlcy4KKyAgYl9yYW5nZS5jbGVhcigpOworICBiX3JhbmdlID0gYl9jb3B5OworICBFWFBF
Q1RfRVEoYl9yYW5nZS5zaXplKCksIGJfY29weS5zaXplKCkpOworCisgIC8vIFRlc3Qgc3dhcC4K
KyAgYl9yYW5nZS5jbGVhcigpOworICBiX3JhbmdlLnN3YXAoYl9jb3B5KTsKKyAgRVhQRUNUX0VR
KGJfY29weS5zaXplKCksIDApOworICBFWFBFQ1RfRVEoYl9yYW5nZS5zaXplKCksIGNvbnN0X2Iu
c2l6ZSgpKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAg
ICBDaGVja1BhaXJFcXVhbHMoKmJfcmFuZ2UuZmluZChrZXlfb2ZfdmFsdWUodmFsdWVzW2ldKSks
IHZhbHVlc1tpXSk7CisgIH0KKyAgYl9yYW5nZS5zd2FwKGJfY29weSk7CisKKyAgLy8gVGVzdCBu
b24tbWVtYmVyIGZ1bmN0aW9uIHN3YXAuCisgIHN3YXAoYl9yYW5nZSwgYl9jb3B5KTsKKyAgRVhQ
RUNUX0VRKGJfY29weS5zaXplKCksIDApOworICBFWFBFQ1RfRVEoYl9yYW5nZS5zaXplKCksIGNv
bnN0X2Iuc2l6ZSgpKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICBDaGVja1BhaXJFcXVhbHMoKmJfcmFuZ2UuZmluZChrZXlfb2ZfdmFsdWUodmFsdWVz
W2ldKSksIHZhbHVlc1tpXSk7CisgIH0KKyAgc3dhcChiX3JhbmdlLCBiX2NvcHkpOworCisgIC8v
IFRlc3QgZXJhc2UgdmlhIHZhbHVlcy4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICBtdXRhYmxlX2IuZXJhc2Uoa2V5X29mX3ZhbHVlKHZhbHVlc1tpXSkp
OworICAgIC8vIEVyYXNpbmcgYSBub24tZXhpc3RlbnQga2V5IHNob3VsZCBoYXZlIG5vIGVmZmVj
dC4KKyAgICBBU1NFUlRfRVEobXV0YWJsZV9iLmVyYXNlKGtleV9vZl92YWx1ZSh2YWx1ZXNbaV0p
KSwgMCk7CisgIH0KKworICBjb25zdF9iLnZlcmlmeSgpOworICBFWFBFQ1RfRVEoY29uc3RfYi5z
aXplKCksIDApOworCisgIC8vIFRlc3QgZXJhc2UgdmlhIGl0ZXJhdG9ycy4KKyAgbXV0YWJsZV9i
ID0gYl9jb3B5OworICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgewor
ICAgIG11dGFibGVfYi5lcmFzZShtdXRhYmxlX2IuZmluZChrZXlfb2ZfdmFsdWUodmFsdWVzW2ld
KSkpOworICB9CisKKyAgY29uc3RfYi52ZXJpZnkoKTsKKyAgRVhQRUNUX0VRKGNvbnN0X2Iuc2l6
ZSgpLCAwKTsKKworICAvLyBUZXN0IGluc2VydCB3aXRoIGhpbnQuCisgIGZvciAoaW50IGkgPSAw
OyBpIDwgdmFsdWVzLnNpemUoKTsgaSsrKSB7CisgICAgbXV0YWJsZV9iLmluc2VydChtdXRhYmxl
X2IudXBwZXJfYm91bmQoa2V5X29mX3ZhbHVlKHZhbHVlc1tpXSkpLCB2YWx1ZXNbaV0pOworICB9
CisKKyAgY29uc3RfYi52ZXJpZnkoKTsKKworICAvLyBUZXN0IHJhbmdlIGVyYXNlLgorICBtdXRh
YmxlX2IuZXJhc2UobXV0YWJsZV9iLmJlZ2luKCksIG11dGFibGVfYi5lbmQoKSk7CisgIEVYUEVD
VF9FUShtdXRhYmxlX2Iuc2l6ZSgpLCAwKTsKKyAgY29uc3RfYi52ZXJpZnkoKTsKKworICAvLyBG
aXJzdCBoYWxmLgorICBtdXRhYmxlX2IgPSBiX2NvcHk7CisgIHR5cGVuYW1lIFQ6Oml0ZXJhdG9y
IG11dGFibGVfaXRlcl9lbmQgPSBtdXRhYmxlX2IuYmVnaW4oKTsKKyAgZm9yIChpbnQgaSA9IDA7
IGkgPCB2YWx1ZXMuc2l6ZSgpIC8gMjsgKytpKSArK211dGFibGVfaXRlcl9lbmQ7CisgIG11dGFi
bGVfYi5lcmFzZShtdXRhYmxlX2IuYmVnaW4oKSwgbXV0YWJsZV9pdGVyX2VuZCk7CisgIEVYUEVD
VF9FUShtdXRhYmxlX2Iuc2l6ZSgpLCB2YWx1ZXMuc2l6ZSgpIC0gdmFsdWVzLnNpemUoKSAvIDIp
OworICBjb25zdF9iLnZlcmlmeSgpOworCisgIC8vIFNlY29uZCBoYWxmLgorICBtdXRhYmxlX2Ig
PSBiX2NvcHk7CisgIHR5cGVuYW1lIFQ6Oml0ZXJhdG9yIG11dGFibGVfaXRlcl9iZWdpbiA9IG11
dGFibGVfYi5iZWdpbigpOworICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCkgLyAy
OyArK2kpICsrbXV0YWJsZV9pdGVyX2JlZ2luOworICBtdXRhYmxlX2IuZXJhc2UobXV0YWJsZV9p
dGVyX2JlZ2luLCBtdXRhYmxlX2IuZW5kKCkpOworICBFWFBFQ1RfRVEobXV0YWJsZV9iLnNpemUo
KSwgdmFsdWVzLnNpemUoKSAvIDIpOworICBjb25zdF9iLnZlcmlmeSgpOworCisgIC8vIFNlY29u
ZCBxdWFydGVyLgorICBtdXRhYmxlX2IgPSBiX2NvcHk7CisgIG11dGFibGVfaXRlcl9iZWdpbiA9
IG11dGFibGVfYi5iZWdpbigpOworICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCkg
LyA0OyArK2kpICsrbXV0YWJsZV9pdGVyX2JlZ2luOworICBtdXRhYmxlX2l0ZXJfZW5kID0gbXV0
YWJsZV9pdGVyX2JlZ2luOworICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCkgLyA0
OyArK2kpICsrbXV0YWJsZV9pdGVyX2VuZDsKKyAgbXV0YWJsZV9iLmVyYXNlKG11dGFibGVfaXRl
cl9iZWdpbiwgbXV0YWJsZV9pdGVyX2VuZCk7CisgIEVYUEVDVF9FUShtdXRhYmxlX2Iuc2l6ZSgp
LCB2YWx1ZXMuc2l6ZSgpIC0gdmFsdWVzLnNpemUoKSAvIDQpOworICBjb25zdF9iLnZlcmlmeSgp
OworCisgIG11dGFibGVfYi5jbGVhcigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3Zv
aWQgQ29uc3RUZXN0KCkgeworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgVDo6dmFsdWVf
dHlwZTsKKyAgdHlwZW5hbWUgS2V5T2ZWYWx1ZTx0eXBlbmFtZSBUOjprZXlfdHlwZSwgdmFsdWVf
dHlwZT46OnR5cGUga2V5X29mX3ZhbHVlOworCisgIFQgbXV0YWJsZV9iOworICBjb25zdCBUICZj
b25zdF9iID0gbXV0YWJsZV9iOworCisgIC8vIEluc2VydCBhIHNpbmdsZSB2YWx1ZSBpbnRvIHRo
ZSBjb250YWluZXIgYW5kIHRlc3QgbG9va2luZyBpdCB1cC4KKyAgdmFsdWVfdHlwZSB2YWx1ZSA9
IEdlbmVyYXRvcjx2YWx1ZV90eXBlPigyKSgyKTsKKyAgbXV0YWJsZV9iLmluc2VydCh2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKG11dGFibGVfYi5jb250YWlucyhrZXlfb2ZfdmFsdWUodmFsdWUpKSk7
CisgIEVYUEVDVF9ORShtdXRhYmxlX2IuZmluZChrZXlfb2ZfdmFsdWUodmFsdWUpKSwgY29uc3Rf
Yi5lbmQoKSk7CisgIEVYUEVDVF9UUlVFKGNvbnN0X2IuY29udGFpbnMoa2V5X29mX3ZhbHVlKHZh
bHVlKSkpOworICBFWFBFQ1RfTkUoY29uc3RfYi5maW5kKGtleV9vZl92YWx1ZSh2YWx1ZSkpLCBt
dXRhYmxlX2IuZW5kKCkpOworICBFWFBFQ1RfRVEoKmNvbnN0X2IubG93ZXJfYm91bmQoa2V5X29m
X3ZhbHVlKHZhbHVlKSksIHZhbHVlKTsKKyAgRVhQRUNUX0VRKGNvbnN0X2IudXBwZXJfYm91bmQo
a2V5X29mX3ZhbHVlKHZhbHVlKSksIGNvbnN0X2IuZW5kKCkpOworICBFWFBFQ1RfRVEoKmNvbnN0
X2IuZXF1YWxfcmFuZ2Uoa2V5X29mX3ZhbHVlKHZhbHVlKSkuZmlyc3QsIHZhbHVlKTsKKworICAv
LyBXZSBjYW4gb25seSBjcmVhdGUgYSBub24tY29uc3QgaXRlcmF0b3IgZnJvbSBhIG5vbi1jb25z
dCBjb250YWluZXIuCisgIHR5cGVuYW1lIFQ6Oml0ZXJhdG9yIG11dGFibGVfaXRlcihtdXRhYmxl
X2IuYmVnaW4oKSk7CisgIEVYUEVDVF9FUShtdXRhYmxlX2l0ZXIsIGNvbnN0X2IuYmVnaW4oKSk7
CisgIEVYUEVDVF9ORShtdXRhYmxlX2l0ZXIsIGNvbnN0X2IuZW5kKCkpOworICBFWFBFQ1RfRVEo
Y29uc3RfYi5iZWdpbigpLCBtdXRhYmxlX2l0ZXIpOworICBFWFBFQ1RfTkUoY29uc3RfYi5lbmQo
KSwgbXV0YWJsZV9pdGVyKTsKKyAgdHlwZW5hbWUgVDo6cmV2ZXJzZV9pdGVyYXRvciBtdXRhYmxl
X3JpdGVyKG11dGFibGVfYi5yYmVnaW4oKSk7CisgIEVYUEVDVF9FUShtdXRhYmxlX3JpdGVyLCBj
b25zdF9iLnJiZWdpbigpKTsKKyAgRVhQRUNUX05FKG11dGFibGVfcml0ZXIsIGNvbnN0X2IucmVu
ZCgpKTsKKyAgRVhQRUNUX0VRKGNvbnN0X2IucmJlZ2luKCksIG11dGFibGVfcml0ZXIpOworICBF
WFBFQ1RfTkUoY29uc3RfYi5yZW5kKCksIG11dGFibGVfcml0ZXIpOworCisgIC8vIFdlIGNhbiBj
cmVhdGUgYSBjb25zdCBpdGVyYXRvciBmcm9tIGEgbm9uLWNvbnN0IGl0ZXJhdG9yLgorICB0eXBl
bmFtZSBUOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyKG11dGFibGVfaXRlcik7CisgIEVYUEVD
VF9FUShjb25zdF9pdGVyLCBtdXRhYmxlX2IuYmVnaW4oKSk7CisgIEVYUEVDVF9ORShjb25zdF9p
dGVyLCBtdXRhYmxlX2IuZW5kKCkpOworICBFWFBFQ1RfRVEobXV0YWJsZV9iLmJlZ2luKCksIGNv
bnN0X2l0ZXIpOworICBFWFBFQ1RfTkUobXV0YWJsZV9iLmVuZCgpLCBjb25zdF9pdGVyKTsKKyAg
dHlwZW5hbWUgVDo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjb25zdF9yaXRlcihtdXRhYmxlX3Jp
dGVyKTsKKyAgRVhQRUNUX0VRKGNvbnN0X3JpdGVyLCBtdXRhYmxlX2IucmJlZ2luKCkpOworICBF
WFBFQ1RfTkUoY29uc3Rfcml0ZXIsIG11dGFibGVfYi5yZW5kKCkpOworICBFWFBFQ1RfRVEobXV0
YWJsZV9iLnJiZWdpbigpLCBjb25zdF9yaXRlcik7CisgIEVYUEVDVF9ORShtdXRhYmxlX2IucmVu
ZCgpLCBjb25zdF9yaXRlcik7CisKKyAgLy8gTWFrZSBzdXJlIHZhcmlvdXMgbWV0aG9kcyBjYW4g
YmUgaW52b2tlZCBvbiBhIGNvbnN0IGNvbnRhaW5lci4KKyAgY29uc3RfYi52ZXJpZnkoKTsKKyAg
QVNTRVJUX1RSVUUoIWNvbnN0X2IuZW1wdHkoKSk7CisgIEVYUEVDVF9FUShjb25zdF9iLnNpemUo
KSwgMSk7CisgIEVYUEVDVF9HVChjb25zdF9iLm1heF9zaXplKCksIDApOworICBFWFBFQ1RfVFJV
RShjb25zdF9iLmNvbnRhaW5zKGtleV9vZl92YWx1ZSh2YWx1ZSkpKTsKKyAgRVhQRUNUX0VRKGNv
bnN0X2IuY291bnQoa2V5X29mX3ZhbHVlKHZhbHVlKSksIDEpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQz4KK3ZvaWQgQnRyZWVUZXN0KCkgeworICBDb25zdFRlc3Q8VD4o
KTsKKworICB1c2luZyBWID0gdHlwZW5hbWUgcmVtb3ZlX3BhaXJfY29uc3Q8dHlwZW5hbWUgVDo6
dmFsdWVfdHlwZT46OnR5cGU7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPFY+IHJhbmRvbV92YWx1ZXMg
PSBHZW5lcmF0ZVZhbHVlc1dpdGhTZWVkPFY+KAorICAgICAgYWJzbDo6R2V0RmxhZyhGTEFHU190
ZXN0X3ZhbHVlcyksIDQgKiBhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfdmFsdWVzKSwKKyAgICAg
IHRlc3Rpbmc6OkdURVNUX0ZMQUcocmFuZG9tX3NlZWQpKTsKKworICB1bmlxdWVfY2hlY2tlcjxU
LCBDPiBjb250YWluZXI7CisKKyAgLy8gVGVzdCBrZXkgaW5zZXJ0aW9uL2RlbGV0aW9uIGluIHNv
cnRlZCBvcmRlci4KKyAgc3RkOjp2ZWN0b3I8Vj4gc29ydGVkX3ZhbHVlcyhyYW5kb21fdmFsdWVz
KTsKKyAgc3RkOjpzb3J0KHNvcnRlZF92YWx1ZXMuYmVnaW4oKSwgc29ydGVkX3ZhbHVlcy5lbmQo
KSk7CisgIERvVGVzdCgic29ydGVkOiAgICAiLCAmY29udGFpbmVyLCBzb3J0ZWRfdmFsdWVzKTsK
KworICAvLyBUZXN0IGtleSBpbnNlcnRpb24vZGVsZXRpb24gaW4gcmV2ZXJzZSBzb3J0ZWQgb3Jk
ZXIuCisgIHN0ZDo6cmV2ZXJzZShzb3J0ZWRfdmFsdWVzLmJlZ2luKCksIHNvcnRlZF92YWx1ZXMu
ZW5kKCkpOworICBEb1Rlc3QoInJzb3J0ZWQ6ICAgIiwgJmNvbnRhaW5lciwgc29ydGVkX3ZhbHVl
cyk7CisKKyAgLy8gVGVzdCBrZXkgaW5zZXJ0aW9uL2RlbGV0aW9uIGluIHJhbmRvbSBvcmRlci4K
KyAgRG9UZXN0KCJyYW5kb206ICAgICIsICZjb250YWluZXIsIHJhbmRvbV92YWx1ZXMpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4KK3ZvaWQgQnRyZWVNdWx0aVRlc3Qo
KSB7CisgIENvbnN0VGVzdDxUPigpOworCisgIHVzaW5nIFYgPSB0eXBlbmFtZSByZW1vdmVfcGFp
cl9jb25zdDx0eXBlbmFtZSBUOjp2YWx1ZV90eXBlPjo6dHlwZTsKKyAgY29uc3Qgc3RkOjp2ZWN0
b3I8Vj4gcmFuZG9tX3ZhbHVlcyA9IEdlbmVyYXRlVmFsdWVzV2l0aFNlZWQ8Vj4oCisgICAgICBh
YnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfdmFsdWVzKSwgNCAqIGFic2w6OkdldEZsYWcoRkxBR1Nf
dGVzdF92YWx1ZXMpLAorICAgICAgdGVzdGluZzo6R1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpOwor
CisgIG11bHRpX2NoZWNrZXI8VCwgQz4gY29udGFpbmVyOworCisgIC8vIFRlc3Qga2V5cyBpbiBz
b3J0ZWQgb3JkZXIuCisgIHN0ZDo6dmVjdG9yPFY+IHNvcnRlZF92YWx1ZXMocmFuZG9tX3ZhbHVl
cyk7CisgIHN0ZDo6c29ydChzb3J0ZWRfdmFsdWVzLmJlZ2luKCksIHNvcnRlZF92YWx1ZXMuZW5k
KCkpOworICBEb1Rlc3QoInNvcnRlZDogICAgIiwgJmNvbnRhaW5lciwgc29ydGVkX3ZhbHVlcyk7
CisKKyAgLy8gVGVzdCBrZXlzIGluIHJldmVyc2Ugc29ydGVkIG9yZGVyLgorICBzdGQ6OnJldmVy
c2Uoc29ydGVkX3ZhbHVlcy5iZWdpbigpLCBzb3J0ZWRfdmFsdWVzLmVuZCgpKTsKKyAgRG9UZXN0
KCJyc29ydGVkOiAgICIsICZjb250YWluZXIsIHNvcnRlZF92YWx1ZXMpOworCisgIC8vIFRlc3Qg
a2V5cyBpbiByYW5kb20gb3JkZXIuCisgIERvVGVzdCgicmFuZG9tOiAgICAiLCAmY29udGFpbmVy
LCByYW5kb21fdmFsdWVzKTsKKworICAvLyBUZXN0IGtleXMgaW4gcmFuZG9tIG9yZGVyIHcvIGR1
cGxpY2F0ZXMuCisgIHN0ZDo6dmVjdG9yPFY+IGR1cGxpY2F0ZV92YWx1ZXMocmFuZG9tX3ZhbHVl
cyk7CisgIGR1cGxpY2F0ZV92YWx1ZXMuaW5zZXJ0KGR1cGxpY2F0ZV92YWx1ZXMuZW5kKCksIHJh
bmRvbV92YWx1ZXMuYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX3Zh
bHVlcy5lbmQoKSk7CisgIERvVGVzdCgiZHVwbGljYXRlczoiLCAmY29udGFpbmVyLCBkdXBsaWNh
dGVfdmFsdWVzKTsKKworICAvLyBUZXN0IGFsbCBpZGVudGljYWwga2V5cy4KKyAgc3RkOjp2ZWN0
b3I8Vj4gaWRlbnRpY2FsX3ZhbHVlcygxMDApOworICBzdGQ6OmZpbGwoaWRlbnRpY2FsX3ZhbHVl
cy5iZWdpbigpLCBpZGVudGljYWxfdmFsdWVzLmVuZCgpLAorICAgICAgICAgICAgR2VuZXJhdG9y
PFY+KDIpKDIpKTsKKyAgRG9UZXN0KCJpZGVudGljYWw6ICIsICZjb250YWluZXIsIGlkZW50aWNh
bF92YWx1ZXMpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBQcm9wYWdhdGlu
Z0NvdW50aW5nQWxsb2MgOiBwdWJsaWMgQ291bnRpbmdBbGxvY2F0b3I8VD4geworICB1c2luZyBw
cm9wYWdhdGVfb25fY29udGFpbmVyX2NvcHlfYXNzaWdubWVudCA9IHN0ZDo6dHJ1ZV90eXBlOwor
ICB1c2luZyBwcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudCA9IHN0ZDo6dHJ1
ZV90eXBlOworICB1c2luZyBwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXAgPSBzdGQ6OnRydWVf
dHlwZTsKKworICB1c2luZyBCYXNlID0gQ291bnRpbmdBbGxvY2F0b3I8VD47CisgIHVzaW5nIEJh
c2U6OkJhc2U7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIGV4cGxpY2l0IFByb3BhZ2F0
aW5nQ291bnRpbmdBbGxvYyhjb25zdCBQcm9wYWdhdGluZ0NvdW50aW5nQWxsb2M8VT4gJm90aGVy
KQorICAgICAgOiBCYXNlKG90aGVyLmJ5dGVzX3VzZWRfKSB7fQorCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBVPgorICBzdHJ1Y3QgcmViaW5kIHsKKyAgICB1c2luZyBvdGhlciA9IFByb3BhZ2F0aW5n
Q291bnRpbmdBbGxvYzxVPjsKKyAgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBCdHJlZUFsbG9jYXRvclRlc3QoKSB7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBU
Ojp2YWx1ZV90eXBlOworCisgIGludDY0X3QgYnl0ZXMxID0gMCwgYnl0ZXMyID0gMDsKKyAgUHJv
cGFnYXRpbmdDb3VudGluZ0FsbG9jPFQ+IGFsbG9jYXRvcjEoJmJ5dGVzMSk7CisgIFByb3BhZ2F0
aW5nQ291bnRpbmdBbGxvYzxUPiBhbGxvY2F0b3IyKCZieXRlczIpOworICBHZW5lcmF0b3I8dmFs
dWVfdHlwZT4gZ2VuZXJhdG9yKDEwMDApOworCisgIC8vIFRlc3QgdGhhdCB3ZSBhbGxvY2F0ZSBw
cm9wZXJseSBhbGlnbmVkIG1lbW9yeS4gSWYgd2UgZG9uJ3QsIHRoZW4gTGF5b3V0CisgIC8vIHdp
bGwgYXNzZXJ0IGZhaWwuCisgIGF1dG8gdW51c2VkMSA9IGFsbG9jYXRvcjEuYWxsb2NhdGUoMSk7
CisgIGF1dG8gdW51c2VkMiA9IGFsbG9jYXRvcjIuYWxsb2NhdGUoMSk7CisKKyAgLy8gVGVzdCBj
b3B5IGFzc2lnbm1lbnQKKyAgeworICAgIFQgYjEodHlwZW5hbWUgVDo6a2V5X2NvbXBhcmUoKSwg
YWxsb2NhdG9yMSk7CisgICAgVCBiMih0eXBlbmFtZSBUOjprZXlfY29tcGFyZSgpLCBhbGxvY2F0
b3IyKTsKKworICAgIGludDY0X3Qgb3JpZ2luYWxfYnl0ZXMxID0gYnl0ZXMxOworICAgIGIxLmlu
c2VydChnZW5lcmF0b3IoMCkpOworICAgIEVYUEVDVF9HVChieXRlczEsIG9yaWdpbmFsX2J5dGVz
MSk7CisKKyAgICAvLyBUaGlzIHNob3VsZCBwcm9wYWdhdGUgdGhlIGFsbG9jYXRvci4KKyAgICBi
MSA9IGIyOworICAgIEVYUEVDVF9FUShiMS5zaXplKCksIDApOworICAgIEVYUEVDVF9FUShiMi5z
aXplKCksIDApOworICAgIEVYUEVDVF9FUShieXRlczEsIG9yaWdpbmFsX2J5dGVzMSk7CisKKyAg
ICBmb3IgKGludCBpID0gMTsgaSA8IDEwMDA7IGkrKykgeworICAgICAgYjEuaW5zZXJ0KGdlbmVy
YXRvcihpKSk7CisgICAgfQorCisgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYWxsb2NhdGVkIG91dCBv
ZiBhbGxvY2F0b3IyLgorICAgIEVYUEVDVF9HVChieXRlczIsIGJ5dGVzMSk7CisgIH0KKworICAv
LyBUZXN0IG1vdmUgYXNzaWdubWVudAorICB7CisgICAgVCBiMSh0eXBlbmFtZSBUOjprZXlfY29t
cGFyZSgpLCBhbGxvY2F0b3IxKTsKKyAgICBUIGIyKHR5cGVuYW1lIFQ6OmtleV9jb21wYXJlKCks
IGFsbG9jYXRvcjIpOworCisgICAgaW50NjRfdCBvcmlnaW5hbF9ieXRlczEgPSBieXRlczE7Cisg
ICAgYjEuaW5zZXJ0KGdlbmVyYXRvcigwKSk7CisgICAgRVhQRUNUX0dUKGJ5dGVzMSwgb3JpZ2lu
YWxfYnl0ZXMxKTsKKworICAgIC8vIFRoaXMgc2hvdWxkIHByb3BhZ2F0ZSB0aGUgYWxsb2NhdG9y
LgorICAgIGIxID0gc3RkOjptb3ZlKGIyKTsKKyAgICBFWFBFQ1RfRVEoYjEuc2l6ZSgpLCAwKTsK
KyAgICBFWFBFQ1RfRVEoYnl0ZXMxLCBvcmlnaW5hbF9ieXRlczEpOworCisgICAgZm9yIChpbnQg
aSA9IDE7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgIGIxLmluc2VydChnZW5lcmF0b3IoaSkpOwor
ICAgIH0KKworICAgIC8vIFdlIHNob3VsZCBoYXZlIGFsbG9jYXRlZCBvdXQgb2YgYWxsb2NhdG9y
Mi4KKyAgICBFWFBFQ1RfR1QoYnl0ZXMyLCBieXRlczEpOworICB9CisKKyAgLy8gVGVzdCBzd2Fw
CisgIHsKKyAgICBUIGIxKHR5cGVuYW1lIFQ6OmtleV9jb21wYXJlKCksIGFsbG9jYXRvcjEpOwor
ICAgIFQgYjIodHlwZW5hbWUgVDo6a2V5X2NvbXBhcmUoKSwgYWxsb2NhdG9yMik7CisKKyAgICBp
bnQ2NF90IG9yaWdpbmFsX2J5dGVzMSA9IGJ5dGVzMTsKKyAgICBiMS5pbnNlcnQoZ2VuZXJhdG9y
KDApKTsKKyAgICBFWFBFQ1RfR1QoYnl0ZXMxLCBvcmlnaW5hbF9ieXRlczEpOworCisgICAgLy8g
VGhpcyBzaG91bGQgc3dhcCB0aGUgYWxsb2NhdG9ycy4KKyAgICBzd2FwKGIxLCBiMik7CisgICAg
RVhQRUNUX0VRKGIxLnNpemUoKSwgMCk7CisgICAgRVhQRUNUX0VRKGIyLnNpemUoKSwgMSk7Cisg
ICAgRVhQRUNUX0dUKGJ5dGVzMSwgb3JpZ2luYWxfYnl0ZXMxKTsKKworICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICBiMS5pbnNlcnQoZ2VuZXJhdG9yKGkpKTsKKyAg
ICB9CisKKyAgICAvLyBXZSBzaG91bGQgaGF2ZSBhbGxvY2F0ZWQgb3V0IG9mIGFsbG9jYXRvcjIu
CisgICAgRVhQRUNUX0dUKGJ5dGVzMiwgYnl0ZXMxKTsKKyAgfQorCisgIGFsbG9jYXRvcjEuZGVh
bGxvY2F0ZSh1bnVzZWQxLCAxKTsKKyAgYWxsb2NhdG9yMi5kZWFsbG9jYXRlKHVudXNlZDIsIDEp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgQnRyZWVNYXBUZXN0KCkgeworICB1
c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgVDo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgbWFwcGVk
X3R5cGUgPSB0eXBlbmFtZSBUOjptYXBwZWRfdHlwZTsKKworICBtYXBwZWRfdHlwZSBtID0gR2Vu
ZXJhdG9yPG1hcHBlZF90eXBlPigwKSgwKTsKKyAgKHZvaWQpbTsKKworICBUIGI7CisKKyAgLy8g
VmVyaWZ5IHdlIGNhbiBpbnNlcnQgdXNpbmcgb3BlcmF0b3JbXS4KKyAgZm9yIChpbnQgaSA9IDA7
IGkgPCAxMDAwOyBpKyspIHsKKyAgICB2YWx1ZV90eXBlIHYgPSBHZW5lcmF0b3I8dmFsdWVfdHlw
ZT4oMTAwMCkoaSk7CisgICAgYlt2LmZpcnN0XSA9IHYuc2Vjb25kOworICB9CisgIEVYUEVDVF9F
UShiLnNpemUoKSwgMTAwMCk7CisKKyAgLy8gVGVzdCB3aGV0aGVyIHdlIGNhbiB1c2UgdGhlICIt
PiIgb3BlcmF0b3Igb24gaXRlcmF0b3JzIGFuZAorICAvLyByZXZlcnNlX2l0ZXJhdG9ycy4gVGhp
cyBzdHJlc3NlcyB0aGUgYnRyZWVfbWFwX3BhcmFtczo6cGFpcl9wb2ludGVyCisgIC8vIG1lY2hh
bmlzbS4KKyAgRVhQRUNUX0VRKGIuYmVnaW4oKS0+Zmlyc3QsIEdlbmVyYXRvcjx2YWx1ZV90eXBl
PigxMDAwKSgwKS5maXJzdCk7CisgIEVYUEVDVF9FUShiLmJlZ2luKCktPnNlY29uZCwgR2VuZXJh
dG9yPHZhbHVlX3R5cGU+KDEwMDApKDApLnNlY29uZCk7CisgIEVYUEVDVF9FUShiLnJiZWdpbigp
LT5maXJzdCwgR2VuZXJhdG9yPHZhbHVlX3R5cGU+KDEwMDApKDk5OSkuZmlyc3QpOworICBFWFBF
Q1RfRVEoYi5yYmVnaW4oKS0+c2Vjb25kLCBHZW5lcmF0b3I8dmFsdWVfdHlwZT4oMTAwMCkoOTk5
KS5zZWNvbmQpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgQnRyZWVNdWx0aU1h
cFRlc3QoKSB7CisgIHVzaW5nIG1hcHBlZF90eXBlID0gdHlwZW5hbWUgVDo6bWFwcGVkX3R5cGU7
CisgIG1hcHBlZF90eXBlIG0gPSBHZW5lcmF0b3I8bWFwcGVkX3R5cGU+KDApKDApOworICAodm9p
ZCltOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgaW50IE4gPSAyNTY+Cit2b2lkIFNldFRl
c3QoKSB7CisgIEVYUEVDVF9FUSgKKyAgICAgIHNpemVvZihhYnNsOjpidHJlZV9zZXQ8Sz4pLAor
ICAgICAgMiAqIHNpemVvZih2b2lkICopICsgc2l6ZW9mKHR5cGVuYW1lIGFic2w6OmJ0cmVlX3Nl
dDxLPjo6c2l6ZV90eXBlKSk7CisgIHVzaW5nIEJ0cmVlU2V0ID0gYWJzbDo6YnRyZWVfc2V0PEs+
OworICB1c2luZyBDb3VudGluZ0J0cmVlU2V0ID0KKyAgICAgIGFic2w6OmJ0cmVlX3NldDxLLCBz
dGQ6Omxlc3M8Sz4sIFByb3BhZ2F0aW5nQ291bnRpbmdBbGxvYzxLPj47CisgIEJ0cmVlVGVzdDxC
dHJlZVNldCwgc3RkOjpzZXQ8Sz4+KCk7CisgIEJ0cmVlQWxsb2NhdG9yVGVzdDxDb3VudGluZ0J0
cmVlU2V0PigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgaW50IE4gPSAyNTY+Cit2b2lk
IE1hcFRlc3QoKSB7CisgIEVYUEVDVF9FUSgKKyAgICAgIHNpemVvZihhYnNsOjpidHJlZV9tYXA8
SywgSz4pLAorICAgICAgMiAqIHNpemVvZih2b2lkICopICsgc2l6ZW9mKHR5cGVuYW1lIGFic2w6
OmJ0cmVlX21hcDxLLCBLPjo6c2l6ZV90eXBlKSk7CisgIHVzaW5nIEJ0cmVlTWFwID0gYWJzbDo6
YnRyZWVfbWFwPEssIEs+OworICB1c2luZyBDb3VudGluZ0J0cmVlTWFwID0KKyAgICAgIGFic2w6
OmJ0cmVlX21hcDxLLCBLLCBzdGQ6Omxlc3M8Sz4sCisgICAgICAgICAgICAgICAgICAgICAgUHJv
cGFnYXRpbmdDb3VudGluZ0FsbG9jPHN0ZDo6cGFpcjxjb25zdCBLLCBLPj4+OworICBCdHJlZVRl
c3Q8QnRyZWVNYXAsIHN0ZDo6bWFwPEssIEs+PigpOworICBCdHJlZUFsbG9jYXRvclRlc3Q8Q291
bnRpbmdCdHJlZU1hcD4oKTsKKyAgQnRyZWVNYXBUZXN0PEJ0cmVlTWFwPigpOworfQorCitURVNU
KEJ0cmVlLCBzZXRfaW50MzIpIHsgU2V0VGVzdDxpbnQzMl90PigpOyB9CitURVNUKEJ0cmVlLCBz
ZXRfaW50NjQpIHsgU2V0VGVzdDxpbnQ2NF90PigpOyB9CitURVNUKEJ0cmVlLCBzZXRfc3RyaW5n
KSB7IFNldFRlc3Q8c3RkOjpzdHJpbmc+KCk7IH0KK1RFU1QoQnRyZWUsIHNldF9wYWlyKSB7IFNl
dFRlc3Q8c3RkOjpwYWlyPGludCwgaW50Pj4oKTsgfQorVEVTVChCdHJlZSwgbWFwX2ludDMyKSB7
IE1hcFRlc3Q8aW50MzJfdD4oKTsgfQorVEVTVChCdHJlZSwgbWFwX2ludDY0KSB7IE1hcFRlc3Q8
aW50NjRfdD4oKTsgfQorVEVTVChCdHJlZSwgbWFwX3N0cmluZykgeyBNYXBUZXN0PHN0ZDo6c3Ry
aW5nPigpOyB9CitURVNUKEJ0cmVlLCBtYXBfcGFpcikgeyBNYXBUZXN0PHN0ZDo6cGFpcjxpbnQs
IGludD4+KCk7IH0KKwordGVtcGxhdGUgPHR5cGVuYW1lIEssIGludCBOID0gMjU2Pgordm9pZCBN
dWx0aVNldFRlc3QoKSB7CisgIEVYUEVDVF9FUSgKKyAgICAgIHNpemVvZihhYnNsOjpidHJlZV9t
dWx0aXNldDxLPiksCisgICAgICAyICogc2l6ZW9mKHZvaWQgKikgKyBzaXplb2YodHlwZW5hbWUg
YWJzbDo6YnRyZWVfbXVsdGlzZXQ8Sz46OnNpemVfdHlwZSkpOworICB1c2luZyBCdHJlZU1TZXQg
PSBhYnNsOjpidHJlZV9tdWx0aXNldDxLPjsKKyAgdXNpbmcgQ291bnRpbmdCdHJlZU1TZXQgPQor
ICAgICAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8Sywgc3RkOjpsZXNzPEs+LCBQcm9wYWdhdGluZ0Nv
dW50aW5nQWxsb2M8Sz4+OworICBCdHJlZU11bHRpVGVzdDxCdHJlZU1TZXQsIHN0ZDo6bXVsdGlz
ZXQ8Sz4+KCk7CisgIEJ0cmVlQWxsb2NhdG9yVGVzdDxDb3VudGluZ0J0cmVlTVNldD4oKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIEssIGludCBOID0gMjU2Pgordm9pZCBNdWx0aU1hcFRlc3Qo
KSB7CisgIEVYUEVDVF9FUShzaXplb2YoYWJzbDo6YnRyZWVfbXVsdGltYXA8SywgSz4pLAorICAg
ICAgICAgICAgMiAqIHNpemVvZih2b2lkICopICsKKyAgICAgICAgICAgICAgICBzaXplb2YodHlw
ZW5hbWUgYWJzbDo6YnRyZWVfbXVsdGltYXA8SywgSz46OnNpemVfdHlwZSkpOworICB1c2luZyBC
dHJlZU1NYXAgPSBhYnNsOjpidHJlZV9tdWx0aW1hcDxLLCBLPjsKKyAgdXNpbmcgQ291bnRpbmdC
dHJlZU1NYXAgPQorICAgICAgYWJzbDo6YnRyZWVfbXVsdGltYXA8SywgSywgc3RkOjpsZXNzPEs+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcGFnYXRpbmdDb3VudGluZ0FsbG9jPHN0
ZDo6cGFpcjxjb25zdCBLLCBLPj4+OworICBCdHJlZU11bHRpVGVzdDxCdHJlZU1NYXAsIHN0ZDo6
bXVsdGltYXA8SywgSz4+KCk7CisgIEJ0cmVlTXVsdGlNYXBUZXN0PEJ0cmVlTU1hcD4oKTsKKyAg
QnRyZWVBbGxvY2F0b3JUZXN0PENvdW50aW5nQnRyZWVNTWFwPigpOworfQorCitURVNUKEJ0cmVl
LCBtdWx0aXNldF9pbnQzMikgeyBNdWx0aVNldFRlc3Q8aW50MzJfdD4oKTsgfQorVEVTVChCdHJl
ZSwgbXVsdGlzZXRfaW50NjQpIHsgTXVsdGlTZXRUZXN0PGludDY0X3Q+KCk7IH0KK1RFU1QoQnRy
ZWUsIG11bHRpc2V0X3N0cmluZykgeyBNdWx0aVNldFRlc3Q8c3RkOjpzdHJpbmc+KCk7IH0KK1RF
U1QoQnRyZWUsIG11bHRpc2V0X3BhaXIpIHsgTXVsdGlTZXRUZXN0PHN0ZDo6cGFpcjxpbnQsIGlu
dD4+KCk7IH0KK1RFU1QoQnRyZWUsIG11bHRpbWFwX2ludDMyKSB7IE11bHRpTWFwVGVzdDxpbnQz
Ml90PigpOyB9CitURVNUKEJ0cmVlLCBtdWx0aW1hcF9pbnQ2NCkgeyBNdWx0aU1hcFRlc3Q8aW50
NjRfdD4oKTsgfQorVEVTVChCdHJlZSwgbXVsdGltYXBfc3RyaW5nKSB7IE11bHRpTWFwVGVzdDxz
dGQ6OnN0cmluZz4oKTsgfQorVEVTVChCdHJlZSwgbXVsdGltYXBfcGFpcikgeyBNdWx0aU1hcFRl
c3Q8c3RkOjpwYWlyPGludCwgaW50Pj4oKTsgfQorCitzdHJ1Y3QgQ29tcGFyZUludFRvU3RyaW5n
IHsKKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IHN0ZDo6c3RyaW5nICZhLCBjb25zdCBzdGQ6OnN0
cmluZyAmYikgY29uc3QgeworICAgIHJldHVybiBhIDwgYjsKKyAgfQorICBib29sIG9wZXJhdG9y
KCkoY29uc3Qgc3RkOjpzdHJpbmcgJmEsIGludCBiKSBjb25zdCB7CisgICAgcmV0dXJuIGEgPCBh
YnNsOjpTdHJDYXQoYik7CisgIH0KKyAgYm9vbCBvcGVyYXRvcigpKGludCBhLCBjb25zdCBzdGQ6
OnN0cmluZyAmYikgY29uc3QgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoYSkgPCBiOworICB9
CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKK307CisKK3N0cnVjdCBOb25UcmFuc3Bh
cmVudENvbXBhcmUgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgYm9v
bCBvcGVyYXRvcigpKGNvbnN0IFQmIHQsIGNvbnN0IFUmIHUpIGNvbnN0IHsKKyAgICAvLyBUcmVh
dGluZyBhbGwgY29tcGFyYXRvcnMgYXMgdHJhbnNwYXJlbnQgY2FuIGNhdXNlIGluZWZmaWNpZW5j
aWVzIChzZWUKKyAgICAvLyBOMzY1NyBDKysgcHJvcG9zYWwpLiBUZXN0IHRoYXQgZm9yIGNvbXBh
cmF0b3JzIHdpdGhvdXQgJ2lzX3RyYW5zcGFyZW50JworICAgIC8vIGFsaWFzIChsaWtlIHRoaXMg
b25lKSwgd2UgZG8gbm90IGF0dGVtcHQgaGV0ZXJvZ2VuZW91cyBsb29rdXAuCisgICAgRVhQRUNU
X1RSVUUoKHN0ZDo6aXNfc2FtZTxULCBVPigpKSk7CisgICAgcmV0dXJuIHQgPCB1OworICB9Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgQ2FuRXJhc2VXaXRoRW1wdHlCcmFjZShU
IHQsIGRlY2x0eXBlKHQuZXJhc2Uoe30pKSAqKSB7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgQ2FuRXJhc2VXaXRoRW1wdHlCcmFjZShULCAuLi4pIHsK
KyAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVGVzdEhl
dGVyb2dlbmVvdXMoVCB0YWJsZSkgeworICBhdXRvIGxiID0gdGFibGUubG93ZXJfYm91bmQoIjMi
KTsKKyAgRVhQRUNUX0VRKGxiLCB0YWJsZS5sb3dlcl9ib3VuZCgzKSk7CisgIEVYUEVDVF9ORShs
YiwgdGFibGUubG93ZXJfYm91bmQoNCkpOworICBFWFBFQ1RfRVEobGIsIHRhYmxlLmxvd2VyX2Jv
dW5kKHsiMyJ9KSk7CisgIEVYUEVDVF9ORShsYiwgdGFibGUubG93ZXJfYm91bmQoe30pKTsKKwor
ICBhdXRvIHViID0gdGFibGUudXBwZXJfYm91bmQoIjMiKTsKKyAgRVhQRUNUX0VRKHViLCB0YWJs
ZS51cHBlcl9ib3VuZCgzKSk7CisgIEVYUEVDVF9ORSh1YiwgdGFibGUudXBwZXJfYm91bmQoNSkp
OworICBFWFBFQ1RfRVEodWIsIHRhYmxlLnVwcGVyX2JvdW5kKHsiMyJ9KSk7CisgIEVYUEVDVF9O
RSh1YiwgdGFibGUudXBwZXJfYm91bmQoe30pKTsKKworICBhdXRvIGVyID0gdGFibGUuZXF1YWxf
cmFuZ2UoIjMiKTsKKyAgRVhQRUNUX0VRKGVyLCB0YWJsZS5lcXVhbF9yYW5nZSgzKSk7CisgIEVY
UEVDVF9ORShlciwgdGFibGUuZXF1YWxfcmFuZ2UoNCkpOworICBFWFBFQ1RfRVEoZXIsIHRhYmxl
LmVxdWFsX3JhbmdlKHsiMyJ9KSk7CisgIEVYUEVDVF9ORShlciwgdGFibGUuZXF1YWxfcmFuZ2Uo
e30pKTsKKworICBhdXRvIGl0ID0gdGFibGUuZmluZCgiMyIpOworICBFWFBFQ1RfRVEoaXQsIHRh
YmxlLmZpbmQoMykpOworICBFWFBFQ1RfTkUoaXQsIHRhYmxlLmZpbmQoNCkpOworICBFWFBFQ1Rf
RVEoaXQsIHRhYmxlLmZpbmQoeyIzIn0pKTsKKyAgRVhQRUNUX05FKGl0LCB0YWJsZS5maW5kKHt9
KSk7CisKKyAgRVhQRUNUX1RSVUUodGFibGUuY29udGFpbnMoMykpOworICBFWFBFQ1RfRkFMU0Uo
dGFibGUuY29udGFpbnMoNCkpOworICBFWFBFQ1RfVFJVRSh0YWJsZS5jb3VudCh7IjMifSkpOwor
ICBFWFBFQ1RfRkFMU0UodGFibGUuY29udGFpbnMoe30pKTsKKworICBFWFBFQ1RfRVEoMSwgdGFi
bGUuY291bnQoMykpOworICBFWFBFQ1RfRVEoMCwgdGFibGUuY291bnQoNCkpOworICBFWFBFQ1Rf
RVEoMSwgdGFibGUuY291bnQoeyIzIn0pKTsKKyAgRVhQRUNUX0VRKDAsIHRhYmxlLmNvdW50KHt9
KSk7CisKKyAgYXV0byBjb3B5ID0gdGFibGU7CisgIGNvcHkuZXJhc2UoMyk7CisgIEVYUEVDVF9F
USh0YWJsZS5zaXplKCkgLSAxLCBjb3B5LnNpemUoKSk7CisgIGNvcHkuZXJhc2UoNCk7CisgIEVY
UEVDVF9FUSh0YWJsZS5zaXplKCkgLSAxLCBjb3B5LnNpemUoKSk7CisgIGNvcHkuZXJhc2UoeyI1
In0pOworICBFWFBFQ1RfRVEodGFibGUuc2l6ZSgpIC0gMiwgY29weS5zaXplKCkpOworICBFWFBF
Q1RfRkFMU0UoQ2FuRXJhc2VXaXRoRW1wdHlCcmFjZSh0YWJsZSwgbnVsbHB0cikpOworCisgIC8v
IEFsc28gcnVuIGl0IHdpdGggY29uc3QgVCYuCisgIGlmIChzdGQ6OmlzX2NsYXNzPFQ+KCkpIFRl
c3RIZXRlcm9nZW5lb3VzPGNvbnN0IFQgJj4odGFibGUpOworfQorCitURVNUKEJ0cmVlLCBIZXRl
cm9nZW5lb3VzTG9va3VwKSB7CisgIFRlc3RIZXRlcm9nZW5lb3VzKGJ0cmVlX3NldDxzdGQ6OnN0
cmluZywgQ29tcGFyZUludFRvU3RyaW5nPnsiMSIsICIzIiwgIjUifSk7CisgIFRlc3RIZXRlcm9n
ZW5lb3VzKGJ0cmVlX21hcDxzdGQ6OnN0cmluZywgaW50LCBDb21wYXJlSW50VG9TdHJpbmc+ewor
ICAgICAgeyIxIiwgMX0sIHsiMyIsIDN9LCB7IjUiLCA1fX0pOworICBUZXN0SGV0ZXJvZ2VuZW91
cygKKyAgICAgIGJ0cmVlX211bHRpc2V0PHN0ZDo6c3RyaW5nLCBDb21wYXJlSW50VG9TdHJpbmc+
eyIxIiwgIjMiLCAiNSJ9KTsKKyAgVGVzdEhldGVyb2dlbmVvdXMoYnRyZWVfbXVsdGltYXA8c3Rk
OjpzdHJpbmcsIGludCwgQ29tcGFyZUludFRvU3RyaW5nPnsKKyAgICAgIHsiMSIsIDF9LCB7IjMi
LCAzfSwgeyI1IiwgNX19KTsKKworICAvLyBPbmx5IG1hcHMgaGF2ZSAuYXQoKQorICBidHJlZV9t
YXA8c3RkOjpzdHJpbmcsIGludCwgQ29tcGFyZUludFRvU3RyaW5nPiBtYXB7CisgICAgICB7IiIs
IC0xfSwgeyIxIiwgMX0sIHsiMyIsIDN9LCB7IjUiLCA1fX07CisgIEVYUEVDVF9FUSgxLCBtYXAu
YXQoMSkpOworICBFWFBFQ1RfRVEoMywgbWFwLmF0KHsiMyJ9KSk7CisgIEVYUEVDVF9FUSgtMSwg
bWFwLmF0KHt9KSk7CisgIGNvbnN0IGF1dG8gJmNtYXAgPSBtYXA7CisgIEVYUEVDVF9FUSgxLCBj
bWFwLmF0KDEpKTsKKyAgRVhQRUNUX0VRKDMsIGNtYXAuYXQoeyIzIn0pKTsKKyAgRVhQRUNUX0VR
KC0xLCBjbWFwLmF0KHt9KSk7Cit9CisKK1RFU1QoQnRyZWUsIE5vSGV0ZXJvZ2VuZW91c0xvb2t1
cFdpdGhvdXRBbGlhcykgeworICB1c2luZyBTdHJpbmdTZXQgPSBhYnNsOjpidHJlZV9zZXQ8c3Rk
OjpzdHJpbmcsIE5vblRyYW5zcGFyZW50Q29tcGFyZT47CisgIFN0cmluZ1NldCBzOworICBBU1NF
UlRfVFJVRShzLmluc2VydCgiaGVsbG8iKS5zZWNvbmQpOworICBBU1NFUlRfVFJVRShzLmluc2Vy
dCgid29ybGQiKS5zZWNvbmQpOworICBFWFBFQ1RfVFJVRShzLmVuZCgpID09IHMuZmluZCgiYmxh
aCIpKTsKKyAgRVhQRUNUX1RSVUUocy5iZWdpbigpID09IHMubG93ZXJfYm91bmQoImhlbGxvIikp
OworICBFWFBFQ1RfRVEoMSwgcy5jb3VudCgid29ybGQiKSk7CisgIEVYUEVDVF9UUlVFKHMuY29u
dGFpbnMoImhlbGxvIikpOworICBFWFBFQ1RfVFJVRShzLmNvbnRhaW5zKCJ3b3JsZCIpKTsKKyAg
RVhQRUNUX0ZBTFNFKHMuY29udGFpbnMoImJsYWgiKSk7CisKKyAgdXNpbmcgU3RyaW5nTXVsdGlT
ZXQgPQorICAgICAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8c3RkOjpzdHJpbmcsIE5vblRyYW5zcGFy
ZW50Q29tcGFyZT47CisgIFN0cmluZ011bHRpU2V0IG1zOworICBtcy5pbnNlcnQoImhlbGxvIik7
CisgIG1zLmluc2VydCgid29ybGQiKTsKKyAgbXMuaW5zZXJ0KCJ3b3JsZCIpOworICBFWFBFQ1Rf
VFJVRShtcy5lbmQoKSA9PSBtcy5maW5kKCJibGFoIikpOworICBFWFBFQ1RfVFJVRShtcy5iZWdp
bigpID09IG1zLmxvd2VyX2JvdW5kKCJoZWxsbyIpKTsKKyAgRVhQRUNUX0VRKDIsIG1zLmNvdW50
KCJ3b3JsZCIpKTsKKyAgRVhQRUNUX1RSVUUobXMuY29udGFpbnMoImhlbGxvIikpOworICBFWFBF
Q1RfVFJVRShtcy5jb250YWlucygid29ybGQiKSk7CisgIEVYUEVDVF9GQUxTRShtcy5jb250YWlu
cygiYmxhaCIpKTsKK30KKworVEVTVChCdHJlZSwgRGVmYXVsdFRyYW5zcGFyZW50KSB7CisgIHsK
KyAgICAvLyBgaW50YCBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB0cmFuc3BhcmVudCBjb21wYXJh
dG9yLgorICAgIC8vIFRoZSBpbnB1dCB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8ga2V5X3R5cGUuCisg
ICAgYnRyZWVfc2V0PGludD4gcyA9IHsxfTsKKyAgICBkb3VibGUgZCA9IDEuMTsKKyAgICBFWFBF
Q1RfRVEocy5iZWdpbigpLCBzLmZpbmQoZCkpOworICAgIEVYUEVDVF9UUlVFKHMuY29udGFpbnMo
ZCkpOworICB9CisKKyAgeworICAgIC8vIGBzdGQ6OnN0cmluZ2AgaGFzIGhldGVyb2dlbmVvdXMg
c3VwcG9ydC4KKyAgICBidHJlZV9zZXQ8c3RkOjpzdHJpbmc+IHMgPSB7IkEifTsKKyAgICBFWFBF
Q1RfRVEocy5iZWdpbigpLCBzLmZpbmQoYWJzbDo6c3RyaW5nX3ZpZXcoIkEiKSkpOworICAgIEVY
UEVDVF9UUlVFKHMuY29udGFpbnMoYWJzbDo6c3RyaW5nX3ZpZXcoIkEiKSkpOworICB9Cit9CisK
K2NsYXNzIFN0cmluZ0xpa2UgeworIHB1YmxpYzoKKyAgU3RyaW5nTGlrZSgpID0gZGVmYXVsdDsK
KworICBTdHJpbmdMaWtlKGNvbnN0IGNoYXIqIHMpIDogc18ocykgeyAgLy8gTk9MSU5UCisgICAg
Kytjb25zdHJ1Y3Rvcl9jYWxsc187CisgIH0KKworICBib29sIG9wZXJhdG9yPChjb25zdCBTdHJp
bmdMaWtlJiBhKSBjb25zdCB7CisgICAgcmV0dXJuIHNfIDwgYS5zXzsKKyAgfQorCisgIHN0YXRp
YyB2b2lkIGNsZWFyX2NvbnN0cnVjdG9yX2NhbGxfY291bnQoKSB7CisgICAgY29uc3RydWN0b3Jf
Y2FsbHNfID0gMDsKKyAgfQorCisgIHN0YXRpYyBpbnQgY29uc3RydWN0b3JfY2FsbHMoKSB7Cisg
ICAgcmV0dXJuIGNvbnN0cnVjdG9yX2NhbGxzXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RhdGlj
IGludCBjb25zdHJ1Y3Rvcl9jYWxsc187CisgIHN0ZDo6c3RyaW5nIHNfOworfTsKKworaW50IFN0
cmluZ0xpa2U6OmNvbnN0cnVjdG9yX2NhbGxzXyA9IDA7CisKK1RFU1QoQnRyZWUsIEhldGVyb2dl
bmVvdXNMb29rdXBEb2VzbnREZWdyYWRlUGVyZm9ybWFuY2UpIHsKKyAgdXNpbmcgU3RyaW5nU2V0
ID0gYWJzbDo6YnRyZWVfc2V0PFN0cmluZ0xpa2U+OworICBTdHJpbmdTZXQgczsKKyAgZm9yIChp
bnQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgIEFTU0VSVF9UUlVFKHMuaW5zZXJ0KGFic2w6
OlN0ckNhdChpKS5jX3N0cigpKS5zZWNvbmQpOworICB9CisgIFN0cmluZ0xpa2U6OmNsZWFyX2Nv
bnN0cnVjdG9yX2NhbGxfY291bnQoKTsKKyAgcy5maW5kKCI1MCIpOworICBBU1NFUlRfRVEoMSwg
U3RyaW5nTGlrZTo6Y29uc3RydWN0b3JfY2FsbHMoKSk7CisKKyAgU3RyaW5nTGlrZTo6Y2xlYXJf
Y29uc3RydWN0b3JfY2FsbF9jb3VudCgpOworICBzLmNvbnRhaW5zKCI1MCIpOworICBBU1NFUlRf
RVEoMSwgU3RyaW5nTGlrZTo6Y29uc3RydWN0b3JfY2FsbHMoKSk7CisKKyAgU3RyaW5nTGlrZTo6
Y2xlYXJfY29uc3RydWN0b3JfY2FsbF9jb3VudCgpOworICBzLmNvdW50KCI1MCIpOworICBBU1NF
UlRfRVEoMSwgU3RyaW5nTGlrZTo6Y29uc3RydWN0b3JfY2FsbHMoKSk7CisKKyAgU3RyaW5nTGlr
ZTo6Y2xlYXJfY29uc3RydWN0b3JfY2FsbF9jb3VudCgpOworICBzLmxvd2VyX2JvdW5kKCI1MCIp
OworICBBU1NFUlRfRVEoMSwgU3RyaW5nTGlrZTo6Y29uc3RydWN0b3JfY2FsbHMoKSk7CisKKyAg
U3RyaW5nTGlrZTo6Y2xlYXJfY29uc3RydWN0b3JfY2FsbF9jb3VudCgpOworICBzLnVwcGVyX2Jv
dW5kKCI1MCIpOworICBBU1NFUlRfRVEoMSwgU3RyaW5nTGlrZTo6Y29uc3RydWN0b3JfY2FsbHMo
KSk7CisKKyAgU3RyaW5nTGlrZTo6Y2xlYXJfY29uc3RydWN0b3JfY2FsbF9jb3VudCgpOworICBz
LmVxdWFsX3JhbmdlKCI1MCIpOworICBBU1NFUlRfRVEoMSwgU3RyaW5nTGlrZTo6Y29uc3RydWN0
b3JfY2FsbHMoKSk7CisKKyAgU3RyaW5nTGlrZTo6Y2xlYXJfY29uc3RydWN0b3JfY2FsbF9jb3Vu
dCgpOworICBzLmVyYXNlKCI1MCIpOworICBBU1NFUlRfRVEoMSwgU3RyaW5nTGlrZTo6Y29uc3Ry
dWN0b3JfY2FsbHMoKSk7Cit9CisKKy8vIFZlcmlmeSB0aGF0IHN3YXBwaW5nIGJ0cmVlcyBzd2Fw
cyB0aGUga2V5IGNvbXBhcmlzb24gZnVuY3RvcnMgYW5kIHRoYXQgd2UgY2FuCisvLyB1c2Ugbm9u
LWRlZmF1bHQgY29uc3RydWN0aWJsZSBjb21wYXJhdG9ycy4KK3N0cnVjdCBTdWJzdHJpbmdMZXNz
IHsKKyAgU3Vic3RyaW5nTGVzcygpID0gZGVsZXRlOworICBleHBsaWNpdCBTdWJzdHJpbmdMZXNz
KGludCBsZW5ndGgpIDogbihsZW5ndGgpIHt9CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBzdGQ6
OnN0cmluZyAmYSwgY29uc3Qgc3RkOjpzdHJpbmcgJmIpIGNvbnN0IHsKKyAgICByZXR1cm4gYWJz
bDo6c3RyaW5nX3ZpZXcoYSkuc3Vic3RyKDAsIG4pIDwKKyAgICAgICAgICAgYWJzbDo6c3RyaW5n
X3ZpZXcoYikuc3Vic3RyKDAsIG4pOworICB9CisgIGludCBuOworfTsKKworVEVTVChCdHJlZSwg
U3dhcEtleUNvbXBhcmUpIHsKKyAgdXNpbmcgU3Vic3RyaW5nU2V0ID0gYWJzbDo6YnRyZWVfc2V0
PHN0ZDo6c3RyaW5nLCBTdWJzdHJpbmdMZXNzPjsKKyAgU3Vic3RyaW5nU2V0IHMxKFN1YnN0cmlu
Z0xlc3MoMSksIFN1YnN0cmluZ1NldDo6YWxsb2NhdG9yX3R5cGUoKSk7CisgIFN1YnN0cmluZ1Nl
dCBzMihTdWJzdHJpbmdMZXNzKDIpLCBTdWJzdHJpbmdTZXQ6OmFsbG9jYXRvcl90eXBlKCkpOwor
CisgIEFTU0VSVF9UUlVFKHMxLmluc2VydCgiYSIpLnNlY29uZCk7CisgIEFTU0VSVF9GQUxTRShz
MS5pbnNlcnQoImFhIikuc2Vjb25kKTsKKworICBBU1NFUlRfVFJVRShzMi5pbnNlcnQoImEiKS5z
ZWNvbmQpOworICBBU1NFUlRfVFJVRShzMi5pbnNlcnQoImFhIikuc2Vjb25kKTsKKyAgQVNTRVJU
X0ZBTFNFKHMyLmluc2VydCgiYWFhIikuc2Vjb25kKTsKKworICBzd2FwKHMxLCBzMik7CisKKyAg
QVNTRVJUX1RSVUUoczEuaW5zZXJ0KCJiIikuc2Vjb25kKTsKKyAgQVNTRVJUX1RSVUUoczEuaW5z
ZXJ0KCJiYiIpLnNlY29uZCk7CisgIEFTU0VSVF9GQUxTRShzMS5pbnNlcnQoImJiYiIpLnNlY29u
ZCk7CisKKyAgQVNTRVJUX1RSVUUoczIuaW5zZXJ0KCJiIikuc2Vjb25kKTsKKyAgQVNTRVJUX0ZB
TFNFKHMyLmluc2VydCgiYmIiKS5zZWNvbmQpOworfQorCitURVNUKEJ0cmVlLCBVcHBlckJvdW5k
UmVncmVzc2lvbikgeworICAvLyBSZWdyZXNzIGEgYnVnIHdoZXJlIHVwcGVyX2JvdW5kIHdvdWxk
IGRlZmF1bHQtY29uc3RydWN0IGEgbmV3IGtleV9jb21wYXJlCisgIC8vIGluc3RlYWQgb2YgY29w
eWluZyB0aGUgZXhpc3Rpbmcgb25lLgorICB1c2luZyBTdWJzdHJpbmdTZXQgPSBhYnNsOjpidHJl
ZV9zZXQ8c3RkOjpzdHJpbmcsIFN1YnN0cmluZ0xlc3M+OworICBTdWJzdHJpbmdTZXQgbXlfc2V0
KFN1YnN0cmluZ0xlc3MoMykpOworICBteV9zZXQuaW5zZXJ0KCJhYWIiKTsKKyAgbXlfc2V0Lmlu
c2VydCgiYWJiIik7CisgIC8vIFdlIGNhbGwgdXBwZXJfYm91bmQoImFhYSIpLiAgSWYgdGhpcyBj
b3JyZWN0bHkgdXNlcyB0aGUgbGVuZ3RoIDMKKyAgLy8gY29tcGFyYXRvciwgYWFhIDwgYWFiIDwg
YWJiLCBzbyB3ZSBzaG91bGQgZ2V0IGFhYiBhcyB0aGUgcmVzdWx0LgorICAvLyBJZiBpdCBpbnN0
ZWFkIHVzZXMgdGhlIGRlZmF1bHQtY29uc3RydWN0ZWQgbGVuZ3RoIDIgY29tcGFyYXRvciwKKyAg
Ly8gYWEgPT0gYWEgPCBhYiwgc28gd2UnbGwgZ2V0IGFiYiBhcyBvdXIgcmVzdWx0LgorICBTdWJz
dHJpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbXlfc2V0LnVwcGVyX2JvdW5kKCJhYWEiKTsKKyAgQVNT
RVJUX1RSVUUoaXQgIT0gbXlfc2V0LmVuZCgpKTsKKyAgRVhQRUNUX0VRKCJhYWIiLCAqaXQpOwor
fQorCitURVNUKEJ0cmVlLCBDb21wYXJpc29uKSB7CisgIGNvbnN0IGludCBrU2V0U2l6ZSA9IDEy
MDE7CisgIGFic2w6OmJ0cmVlX3NldDxpbnQ2NF90PiBteV9zZXQ7CisgIGZvciAoaW50IGkgPSAw
OyBpIDwga1NldFNpemU7ICsraSkgeworICAgIG15X3NldC5pbnNlcnQoaSk7CisgIH0KKyAgYWJz
bDo6YnRyZWVfc2V0PGludDY0X3Q+IG15X3NldF9jb3B5KG15X3NldCk7CisgIEVYUEVDVF9UUlVF
KG15X3NldF9jb3B5ID09IG15X3NldCk7CisgIEVYUEVDVF9UUlVFKG15X3NldCA9PSBteV9zZXRf
Y29weSk7CisgIEVYUEVDVF9GQUxTRShteV9zZXRfY29weSAhPSBteV9zZXQpOworICBFWFBFQ1Rf
RkFMU0UobXlfc2V0ICE9IG15X3NldF9jb3B5KTsKKworICBteV9zZXQuaW5zZXJ0KGtTZXRTaXpl
KTsKKyAgRVhQRUNUX0ZBTFNFKG15X3NldF9jb3B5ID09IG15X3NldCk7CisgIEVYUEVDVF9GQUxT
RShteV9zZXQgPT0gbXlfc2V0X2NvcHkpOworICBFWFBFQ1RfVFJVRShteV9zZXRfY29weSAhPSBt
eV9zZXQpOworICBFWFBFQ1RfVFJVRShteV9zZXQgIT0gbXlfc2V0X2NvcHkpOworCisgIG15X3Nl
dC5lcmFzZShrU2V0U2l6ZSAtIDEpOworICBFWFBFQ1RfRkFMU0UobXlfc2V0X2NvcHkgPT0gbXlf
c2V0KTsKKyAgRVhQRUNUX0ZBTFNFKG15X3NldCA9PSBteV9zZXRfY29weSk7CisgIEVYUEVDVF9U
UlVFKG15X3NldF9jb3B5ICE9IG15X3NldCk7CisgIEVYUEVDVF9UUlVFKG15X3NldCAhPSBteV9z
ZXRfY29weSk7CisKKyAgYWJzbDo6YnRyZWVfbWFwPHN0ZDo6c3RyaW5nLCBpbnQ2NF90PiBteV9t
YXA7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1NldFNpemU7ICsraSkgeworICAgIG15X21hcFtz
dGQ6OnN0cmluZyhpLCAnYScpXSA9IGk7CisgIH0KKyAgYWJzbDo6YnRyZWVfbWFwPHN0ZDo6c3Ry
aW5nLCBpbnQ2NF90PiBteV9tYXBfY29weShteV9tYXApOworICBFWFBFQ1RfVFJVRShteV9tYXBf
Y29weSA9PSBteV9tYXApOworICBFWFBFQ1RfVFJVRShteV9tYXAgPT0gbXlfbWFwX2NvcHkpOwor
ICBFWFBFQ1RfRkFMU0UobXlfbWFwX2NvcHkgIT0gbXlfbWFwKTsKKyAgRVhQRUNUX0ZBTFNFKG15
X21hcCAhPSBteV9tYXBfY29weSk7CisKKyAgKytteV9tYXBfY29weVtzdGQ6OnN0cmluZyg3LCAn
YScpXTsKKyAgRVhQRUNUX0ZBTFNFKG15X21hcF9jb3B5ID09IG15X21hcCk7CisgIEVYUEVDVF9G
QUxTRShteV9tYXAgPT0gbXlfbWFwX2NvcHkpOworICBFWFBFQ1RfVFJVRShteV9tYXBfY29weSAh
PSBteV9tYXApOworICBFWFBFQ1RfVFJVRShteV9tYXAgIT0gbXlfbWFwX2NvcHkpOworCisgIG15
X21hcF9jb3B5ID0gbXlfbWFwOworICBteV9tYXBbImhlbGxvIl0gPSBrU2V0U2l6ZTsKKyAgRVhQ
RUNUX0ZBTFNFKG15X21hcF9jb3B5ID09IG15X21hcCk7CisgIEVYUEVDVF9GQUxTRShteV9tYXAg
PT0gbXlfbWFwX2NvcHkpOworICBFWFBFQ1RfVFJVRShteV9tYXBfY29weSAhPSBteV9tYXApOwor
ICBFWFBFQ1RfVFJVRShteV9tYXAgIT0gbXlfbWFwX2NvcHkpOworCisgIG15X21hcC5lcmFzZShz
dGQ6OnN0cmluZyhrU2V0U2l6ZSAtIDEsICdhJykpOworICBFWFBFQ1RfRkFMU0UobXlfbWFwX2Nv
cHkgPT0gbXlfbWFwKTsKKyAgRVhQRUNUX0ZBTFNFKG15X21hcCA9PSBteV9tYXBfY29weSk7Cisg
IEVYUEVDVF9UUlVFKG15X21hcF9jb3B5ICE9IG15X21hcCk7CisgIEVYUEVDVF9UUlVFKG15X21h
cCAhPSBteV9tYXBfY29weSk7Cit9CisKK1RFU1QoQnRyZWUsIFJhbmdlQ3RvclNhbml0eSkgewor
ICBzdGQ6OnZlY3RvcjxpbnQ+IGl2ZWM7CisgIGl2ZWMucHVzaF9iYWNrKDEpOworICBzdGQ6Om1h
cDxpbnQsIGludD4gaW1hcDsKKyAgaW1hcC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoMSwgMikpOwor
ICBhYnNsOjpidHJlZV9tdWx0aXNldDxpbnQ+IHRtc2V0KGl2ZWMuYmVnaW4oKSwgaXZlYy5lbmQo
KSk7CisgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgaW50PiB0bW1hcChpbWFwLmJlZ2luKCks
IGltYXAuZW5kKCkpOworICBhYnNsOjpidHJlZV9zZXQ8aW50PiB0c2V0KGl2ZWMuYmVnaW4oKSwg
aXZlYy5lbmQoKSk7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gdG1hcChpbWFwLmJlZ2lu
KCksIGltYXAuZW5kKCkpOworICBFWFBFQ1RfRVEoMSwgdG1zZXQuc2l6ZSgpKTsKKyAgRVhQRUNU
X0VRKDEsIHRtbWFwLnNpemUoKSk7CisgIEVYUEVDVF9FUSgxLCB0c2V0LnNpemUoKSk7CisgIEVY
UEVDVF9FUSgxLCB0bWFwLnNpemUoKSk7Cit9CisKK1RFU1QoQnRyZWUsIEJ0cmVlTWFwQ2FuSG9s
ZE1vdmVPbmx5VHlwZXMpIHsKKyAgYWJzbDo6YnRyZWVfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnVu
aXF1ZV9wdHI8c3RkOjpzdHJpbmc+PiBtOworCisgIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmlu
Zz4gJnYgPSBtWyJBIl07CisgIEVYUEVDVF9UUlVFKHYgPT0gbnVsbHB0cik7CisgIHYucmVzZXQo
bmV3IHN0ZDo6c3RyaW5nKCJYIikpOworCisgIGF1dG8gaXRlciA9IG0uZmluZCgiQSIpOworICBF
WFBFQ1RfRVEoIlgiLCAqaXRlci0+c2Vjb25kKTsKK30KKworVEVTVChCdHJlZSwgSW5pdGlhbGl6
ZXJMaXN0Q29uc3RydWN0b3IpIHsKKyAgYWJzbDo6YnRyZWVfc2V0PHN0ZDo6c3RyaW5nPiBzZXQo
eyJhIiwgImIifSk7CisgIEVYUEVDVF9FUShzZXQuY291bnQoImEiKSwgMSk7CisgIEVYUEVDVF9F
UShzZXQuY291bnQoImIiKSwgMSk7CisKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBtc2V0
KHsxLCAxLCA0fSk7CisgIEVYUEVDVF9FUShtc2V0LmNvdW50KDEpLCAyKTsKKyAgRVhQRUNUX0VR
KG1zZXQuY291bnQoNCksIDEpOworCisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gbWFwKHt7
MSwgNX0sIHsyLCAxMH19KTsKKyAgRVhQRUNUX0VRKG1hcFsxXSwgNSk7CisgIEVYUEVDVF9FUSht
YXBbMl0sIDEwKTsKKworICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIGludD4gbW1hcCh7ezEs
IDV9LCB7MSwgMTB9fSk7CisgIGF1dG8gcmFuZ2UgPSBtbWFwLmVxdWFsX3JhbmdlKDEpOworICBh
dXRvIGl0ID0gcmFuZ2UuZmlyc3Q7CisgIEFTU0VSVF9ORShpdCwgcmFuZ2Uuc2Vjb25kKTsKKyAg
RVhQRUNUX0VRKGl0LT5zZWNvbmQsIDUpOworICBBU1NFUlRfTkUoKytpdCwgcmFuZ2Uuc2Vjb25k
KTsKKyAgRVhQRUNUX0VRKGl0LT5zZWNvbmQsIDEwKTsKKyAgRVhQRUNUX0VRKCsraXQsIHJhbmdl
LnNlY29uZCk7Cit9CisKK1RFU1QoQnRyZWUsIEluaXRpYWxpemVyTGlzdEluc2VydCkgeworICBh
YnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmc+IHNldDsKKyAgc2V0Lmluc2VydCh7ImEiLCAiYiJ9
KTsKKyAgRVhQRUNUX0VRKHNldC5jb3VudCgiYSIpLCAxKTsKKyAgRVhQRUNUX0VRKHNldC5jb3Vu
dCgiYiIpLCAxKTsKKworICBhYnNsOjpidHJlZV9tdWx0aXNldDxpbnQ+IG1zZXQ7CisgIG1zZXQu
aW5zZXJ0KHsxLCAxLCA0fSk7CisgIEVYUEVDVF9FUShtc2V0LmNvdW50KDEpLCAyKTsKKyAgRVhQ
RUNUX0VRKG1zZXQuY291bnQoNCksIDEpOworCisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4g
bWFwOworICBtYXAuaW5zZXJ0KHt7MSwgNX0sIHsyLCAxMH19KTsKKyAgLy8gVGVzdCB0aGF0IGlu
c2VydGluZyBvbmUgZWxlbWVudCB1c2luZyBhbiBpbml0aWFsaXplciBsaXN0IGFsc28gd29ya3Mu
CisgIG1hcC5pbnNlcnQoezMsIDE1fSk7CisgIEVYUEVDVF9FUShtYXBbMV0sIDUpOworICBFWFBF
Q1RfRVEobWFwWzJdLCAxMCk7CisgIEVYUEVDVF9FUShtYXBbM10sIDE1KTsKKworICBhYnNsOjpi
dHJlZV9tdWx0aW1hcDxpbnQsIGludD4gbW1hcDsKKyAgbW1hcC5pbnNlcnQoe3sxLCA1fSwgezEs
IDEwfX0pOworICBhdXRvIHJhbmdlID0gbW1hcC5lcXVhbF9yYW5nZSgxKTsKKyAgYXV0byBpdCA9
IHJhbmdlLmZpcnN0OworICBBU1NFUlRfTkUoaXQsIHJhbmdlLnNlY29uZCk7CisgIEVYUEVDVF9F
UShpdC0+c2Vjb25kLCA1KTsKKyAgQVNTRVJUX05FKCsraXQsIHJhbmdlLnNlY29uZCk7CisgIEVY
UEVDVF9FUShpdC0+c2Vjb25kLCAxMCk7CisgIEVYUEVDVF9FUSgrK2l0LCByYW5nZS5zZWNvbmQp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgSz4KK3ZvaWQgQXNz
ZXJ0S2V5Q29tcGFyZVRvQWRhcHRlZCgpIHsKKyAgdXNpbmcgQWRhcHRlZCA9IHR5cGVuYW1lIGtl
eV9jb21wYXJlX3RvX2FkYXB0ZXI8Q29tcGFyZT46OnR5cGU7CisgIHN0YXRpY19hc3NlcnQoIXN0
ZDo6aXNfc2FtZTxBZGFwdGVkLCBDb21wYXJlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgImtl
eV9jb21wYXJlX3RvX2FkYXB0ZXIgc2hvdWxkIGhhdmUgYWRhcHRlZCB0aGlzIGNvbXBhcmF0b3Iu
Iik7CisgIHN0YXRpY19hc3NlcnQoCisgICAgICBzdGQ6OmlzX3NhbWU8YWJzbDo6d2Vha19vcmRl
cmluZywKKyAgICAgICAgICAgICAgICAgICBhYnNsOjpyZXN1bHRfb2ZfdDxBZGFwdGVkKGNvbnN0
IEsgJiwgY29uc3QgSyAmKT4+Ojp2YWx1ZSwKKyAgICAgICJBZGFwdGVkIGNvbXBhcmF0b3Igc2hv
dWxkIGJlIGEga2V5LWNvbXBhcmUtdG8gY29tcGFyYXRvci4iKTsKK30KK3RlbXBsYXRlIDx0eXBl
bmFtZSBDb21wYXJlLCB0eXBlbmFtZSBLPgordm9pZCBBc3NlcnRLZXlDb21wYXJlVG9Ob3RBZGFw
dGVkKCkgeworICB1c2luZyBVbmFkYXB0ZWQgPSB0eXBlbmFtZSBrZXlfY29tcGFyZV90b19hZGFw
dGVyPENvbXBhcmU+Ojp0eXBlOworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgc3RkOjppc19zYW1l
PFVuYWRhcHRlZCwgQ29tcGFyZT46OnZhbHVlLAorICAgICAgImtleV9jb21wYXJlX3RvX2FkYXB0
ZXIgc2hvdWxkbid0IGhhdmUgYWRhcHRlZCB0aGlzIGNvbXBhcmF0b3IuIik7CisgIHN0YXRpY19h
c3NlcnQoCisgICAgICBzdGQ6OmlzX3NhbWU8Ym9vbCwKKyAgICAgICAgICAgICAgICAgICBhYnNs
OjpyZXN1bHRfb2ZfdDxVbmFkYXB0ZWQoY29uc3QgSyAmLCBjb25zdCBLICYpPj46OnZhbHVlLAor
ICAgICAgIlVuLWFkYXB0ZWQgY29tcGFyYXRvciBzaG91bGQgcmV0dXJuIGJvb2wuIik7Cit9CisK
K1RFU1QoQnRyZWUsIEtleUNvbXBhcmVUb0FkYXB0ZXIpIHsKKyAgQXNzZXJ0S2V5Q29tcGFyZVRv
QWRhcHRlZDxzdGQ6Omxlc3M8c3RkOjpzdHJpbmc+LCBzdGQ6OnN0cmluZz4oKTsKKyAgQXNzZXJ0
S2V5Q29tcGFyZVRvQWRhcHRlZDxzdGQ6OmdyZWF0ZXI8c3RkOjpzdHJpbmc+LCBzdGQ6OnN0cmlu
Zz4oKTsKKyAgQXNzZXJ0S2V5Q29tcGFyZVRvQWRhcHRlZDxzdGQ6Omxlc3M8YWJzbDo6c3RyaW5n
X3ZpZXc+LCBhYnNsOjpzdHJpbmdfdmlldz4oKTsKKyAgQXNzZXJ0S2V5Q29tcGFyZVRvQWRhcHRl
ZDxzdGQ6OmdyZWF0ZXI8YWJzbDo6c3RyaW5nX3ZpZXc+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6OnN0cmluZ192aWV3PigpOworICBBc3NlcnRLZXlDb21wYXJlVG9Ob3RBZGFw
dGVkPHN0ZDo6bGVzczxpbnQ+LCBpbnQ+KCk7CisgIEFzc2VydEtleUNvbXBhcmVUb05vdEFkYXB0
ZWQ8c3RkOjpncmVhdGVyPGludD4sIGludD4oKTsKK30KKworVEVTVChCdHJlZSwgUlZhbHVlSW5z
ZXJ0KSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyOworCisgIGFic2w6OmJ0cmVlX3NldDxN
b3ZhYmxlT25seUluc3RhbmNlPiBzZXQ7CisgIHNldC5pbnNlcnQoTW92YWJsZU9ubHlJbnN0YW5j
ZSgxKSk7CisgIHNldC5pbnNlcnQoTW92YWJsZU9ubHlJbnN0YW5jZSgzKSk7CisgIE1vdmFibGVP
bmx5SW5zdGFuY2UgdHdvKDIpOworICBzZXQuaW5zZXJ0KHNldC5maW5kKE1vdmFibGVPbmx5SW5z
dGFuY2UoMykpLCBzdGQ6Om1vdmUodHdvKSk7CisgIGF1dG8gaXQgPSBzZXQuZmluZChNb3ZhYmxl
T25seUluc3RhbmNlKDIpKTsKKyAgQVNTRVJUX05FKGl0LCBzZXQuZW5kKCkpOworICBBU1NFUlRf
TkUoKytpdCwgc2V0LmVuZCgpKTsKKyAgRVhQRUNUX0VRKGl0LT52YWx1ZSgpLCAzKTsKKworICBh
YnNsOjpidHJlZV9tdWx0aXNldDxNb3ZhYmxlT25seUluc3RhbmNlPiBtc2V0OworICBNb3ZhYmxl
T25seUluc3RhbmNlIHplcm8oMCk7CisgIE1vdmFibGVPbmx5SW5zdGFuY2UgemVybzIoMCk7Cisg
IG1zZXQuaW5zZXJ0KHN0ZDo6bW92ZSh6ZXJvKSk7CisgIG1zZXQuaW5zZXJ0KG1zZXQuZmluZChN
b3ZhYmxlT25seUluc3RhbmNlKDApKSwgc3RkOjptb3ZlKHplcm8yKSk7CisgIEVYUEVDVF9FUSht
c2V0LmNvdW50KE1vdmFibGVPbmx5SW5zdGFuY2UoMCkpLCAyKTsKKworICBhYnNsOjpidHJlZV9t
YXA8aW50LCBNb3ZhYmxlT25seUluc3RhbmNlPiBtYXA7CisgIHN0ZDo6cGFpcjxjb25zdCBpbnQs
IE1vdmFibGVPbmx5SW5zdGFuY2U+IHAxID0gezEsIE1vdmFibGVPbmx5SW5zdGFuY2UoNSl9Owor
ICBzdGQ6OnBhaXI8Y29uc3QgaW50LCBNb3ZhYmxlT25seUluc3RhbmNlPiBwMiA9IHsyLCBNb3Zh
YmxlT25seUluc3RhbmNlKDEwKX07CisgIHN0ZDo6cGFpcjxjb25zdCBpbnQsIE1vdmFibGVPbmx5
SW5zdGFuY2U+IHAzID0gezMsIE1vdmFibGVPbmx5SW5zdGFuY2UoMTUpfTsKKyAgbWFwLmluc2Vy
dChzdGQ6Om1vdmUocDEpKTsKKyAgbWFwLmluc2VydChzdGQ6Om1vdmUocDMpKTsKKyAgbWFwLmlu
c2VydChtYXAuZmluZCgzKSwgc3RkOjptb3ZlKHAyKSk7CisgIEFTU0VSVF9ORShtYXAuZmluZCgy
KSwgbWFwLmVuZCgpKTsKKyAgRVhQRUNUX0VRKG1hcC5maW5kKDIpLT5zZWNvbmQudmFsdWUoKSwg
MTApOworCisgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgTW92YWJsZU9ubHlJbnN0YW5jZT4g
bW1hcDsKKyAgc3RkOjpwYWlyPGNvbnN0IGludCwgTW92YWJsZU9ubHlJbnN0YW5jZT4gcDQgPSB7
MSwgTW92YWJsZU9ubHlJbnN0YW5jZSg1KX07CisgIHN0ZDo6cGFpcjxjb25zdCBpbnQsIE1vdmFi
bGVPbmx5SW5zdGFuY2U+IHA1ID0gezEsIE1vdmFibGVPbmx5SW5zdGFuY2UoMTApfTsKKyAgbW1h
cC5pbnNlcnQoc3RkOjptb3ZlKHA0KSk7CisgIG1tYXAuaW5zZXJ0KG1tYXAuZmluZCgxKSwgc3Rk
Ojptb3ZlKHA1KSk7CisgIGF1dG8gcmFuZ2UgPSBtbWFwLmVxdWFsX3JhbmdlKDEpOworICBhdXRv
IGl0MSA9IHJhbmdlLmZpcnN0OworICBBU1NFUlRfTkUoaXQxLCByYW5nZS5zZWNvbmQpOworICBF
WFBFQ1RfRVEoaXQxLT5zZWNvbmQudmFsdWUoKSwgMTApOworICBBU1NFUlRfTkUoKytpdDEsIHJh
bmdlLnNlY29uZCk7CisgIEVYUEVDVF9FUShpdDEtPnNlY29uZC52YWx1ZSgpLCA1KTsKKyAgRVhQ
RUNUX0VRKCsraXQxLCByYW5nZS5zZWNvbmQpOworCisgIEVYUEVDVF9FUSh0cmFja2VyLmNvcGll
cygpLCAwKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuc3dhcHMoKSwgMCk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZQorCitjbGFzcyBCdHJlZU5vZGVQZWVyIHsKKyBwdWJsaWM6CisgIC8vIFlpZWxkcyB0
aGUgc2l6ZSBvZiBhIGxlYWYgbm9kZSB3aXRoIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHZhbHVlcy4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KKyAgY29uc3RleHByIHN0YXRpYyBzaXpl
X3QgR2V0VGFyZ2V0Tm9kZVNpemUoc2l6ZV90IHRhcmdldF92YWx1ZXNfcGVyX25vZGUpIHsKKyAg
ICByZXR1cm4gYnRyZWVfbm9kZTwKKyAgICAgICAgc2V0X3BhcmFtczxWYWx1ZVR5cGUsIHN0ZDo6
bGVzczxWYWx1ZVR5cGU+LCBzdGQ6OmFsbG9jYXRvcjxWYWx1ZVR5cGU+LAorICAgICAgICAgICAg
ICAgICAgIC8qVGFyZ2V0Tm9kZVNpemU9Ki8yNTYsICAvLyBUaGlzIHBhcmFtZXRlciBpc24ndCB1
c2VkIGhlcmUuCisgICAgICAgICAgICAgICAgICAgLypNdWx0aT0qL2ZhbHNlPj46OlNpemVXaXRo
TlZhbHVlcyh0YXJnZXRfdmFsdWVzX3Blcl9ub2RlKTsKKyAgfQorCisgIC8vIFlpZWxkcyB0aGUg
bnVtYmVyIG9mIHZhbHVlcyBpbiBhIChub24tcm9vdCkgbGVhZiBub2RlIGZvciB0aGlzIHNldC4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFNldD4KKyAgY29uc3RleHByIHN0YXRpYyBzaXplX3QgR2V0
TnVtVmFsdWVzUGVyTm9kZSgpIHsKKyAgICByZXR1cm4gYnRyZWVfbm9kZTx0eXBlbmFtZSBTZXQ6
OnBhcmFtc190eXBlPjo6a05vZGVWYWx1ZXM7CisgIH0KK307CisKK25hbWVzcGFjZSB7CisKKy8v
IEEgYnRyZWUgc2V0IHdpdGggYSBzcGVjaWZpYyBudW1iZXIgb2YgdmFsdWVzIHBlciBub2RlLgor
dGVtcGxhdGUgPHR5cGVuYW1lIEtleSwgaW50IFRhcmdldFZhbHVlc1Blck5vZGUsIHR5cGVuYW1l
IENtcCA9IHN0ZDo6bGVzczxLZXk+PgorY2xhc3MgU2l6ZWRCdHJlZVNldAorICAgIDogcHVibGlj
IGJ0cmVlX3NldF9jb250YWluZXI8YnRyZWU8CisgICAgICAgICAgc2V0X3BhcmFtczxLZXksIENt
cCwgc3RkOjphbGxvY2F0b3I8S2V5PiwKKyAgICAgICAgICAgICAgICAgICAgIEJ0cmVlTm9kZVBl
ZXI6OkdldFRhcmdldE5vZGVTaXplPEtleT4oVGFyZ2V0VmFsdWVzUGVyTm9kZSksCisgICAgICAg
ICAgICAgICAgICAgICAvKk11bHRpPSovZmFsc2U+Pj4geworICB1c2luZyBCYXNlID0gdHlwZW5h
bWUgU2l6ZWRCdHJlZVNldDo6YnRyZWVfc2V0X2NvbnRhaW5lcjsKKworIHB1YmxpYzoKKyAgU2l6
ZWRCdHJlZVNldCgpIHt9CisgIHVzaW5nIEJhc2U6OkJhc2U7Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU2V0Pgordm9pZCBFeHBlY3RPcGVyYXRpb25Db3VudHMoY29uc3QgaW50IGV4cGVjdGVk
X21vdmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGV4cGVjdGVkX2Nv
bXBhcmlzb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
aW50PiAmdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFuY2VUcmFja2Vy
ICp0cmFja2VyLCBTZXQgKnNldCkgeworICBmb3IgKGNvbnN0IGludCB2IDogdmFsdWVzKSBzZXQt
Pmluc2VydChNb3ZhYmxlT25seUluc3RhbmNlKHYpKTsKKyAgc2V0LT5jbGVhcigpOworICBFWFBF
Q1RfRVEodHJhY2tlci0+bW92ZXMoKSwgZXhwZWN0ZWRfbW92ZXMpOworICBFWFBFQ1RfRVEodHJh
Y2tlci0+Y29tcGFyaXNvbnMoKSwgZXhwZWN0ZWRfY29tcGFyaXNvbnMpOworICBFWFBFQ1RfRVEo
dHJhY2tlci0+Y29waWVzKCksIDApOworICBFWFBFQ1RfRVEodHJhY2tlci0+c3dhcHMoKSwgMCk7
CisgIHRyYWNrZXItPlJlc2V0Q29waWVzTW92ZXNTd2FwcygpOworfQorCisvLyBOb3RlOiB3aGVu
IHRoZSB2YWx1ZXMgaW4gdGhpcyB0ZXN0IGNoYW5nZSwgaXQgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBh
biBpbXBhY3QKKy8vIG9uIHBlcmZvcm1hbmNlLgorVEVTVChCdHJlZSwgTW92ZXNDb21wYXJpc29u
c0NvcGllc1N3YXBzVHJhY2tpbmcpIHsKKyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIC8v
IE5vdGU6IHRoaXMgaXMgbWluaW11bSBudW1iZXIgb2YgdmFsdWVzIHBlciBub2RlLgorICBTaXpl
ZEJ0cmVlU2V0PE1vdmFibGVPbmx5SW5zdGFuY2UsIC8qVGFyZ2V0VmFsdWVzUGVyTm9kZT0qLzM+
IHNldDM7CisgIC8vIE5vdGU6IHRoaXMgaXMgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIHZhbHVlcyBw
ZXIgbm9kZSBmb3IgYSBzZXQgb2YgaW50MzJzCisgIC8vICh3aXRoIDY0LWJpdCBwb2ludGVycyku
CisgIFNpemVkQnRyZWVTZXQ8TW92YWJsZU9ubHlJbnN0YW5jZSwgLypUYXJnZXRWYWx1ZXNQZXJO
b2RlPSovNjE+IHNldDYxOworICBTaXplZEJ0cmVlU2V0PE1vdmFibGVPbmx5SW5zdGFuY2UsIC8q
VGFyZ2V0VmFsdWVzUGVyTm9kZT0qLzEwMD4gc2V0MTAwOworCisgIC8vIERvbid0IGRlcGVuZCBv
biBmbGFncyBmb3IgcmFuZG9tIHZhbHVlcyBiZWNhdXNlIHRoZW4gdGhlIGV4cGVjdGF0aW9ucyB3
aWxsCisgIC8vIGZhaWwgaWYgdGhlIGZsYWdzIGNoYW5nZS4KKyAgc3RkOjp2ZWN0b3I8aW50PiB2
YWx1ZXMgPQorICAgICAgR2VuZXJhdGVWYWx1ZXNXaXRoU2VlZDxpbnQ+KDEwMDAwLCAxIDw8IDIy
LCAvKnNlZWQ9Ki8yMyk7CisKKyAgRVhQRUNUX0VRKEJ0cmVlTm9kZVBlZXI6OkdldE51bVZhbHVl
c1Blck5vZGU8ZGVjbHR5cGUoc2V0Myk+KCksIDMpOworICBFWFBFQ1RfRVEoQnRyZWVOb2RlUGVl
cjo6R2V0TnVtVmFsdWVzUGVyTm9kZTxkZWNsdHlwZShzZXQ2MSk+KCksIDYxKTsKKyAgRVhQRUNU
X0VRKEJ0cmVlTm9kZVBlZXI6OkdldE51bVZhbHVlc1Blck5vZGU8ZGVjbHR5cGUoc2V0MTAwKT4o
KSwgMTAwKTsKKyAgaWYgKHNpemVvZih2b2lkICopID09IDgpIHsKKyAgICBFWFBFQ1RfRVEoQnRy
ZWVOb2RlUGVlcjo6R2V0TnVtVmFsdWVzUGVyTm9kZTxhYnNsOjpidHJlZV9zZXQ8aW50MzJfdD4+
KCksCisgICAgICAgICAgICAgIEJ0cmVlTm9kZVBlZXI6OkdldE51bVZhbHVlc1Blck5vZGU8ZGVj
bHR5cGUoc2V0NjEpPigpKTsKKyAgfQorCisgIC8vIFRlc3Qga2V5IGluc2VydGlvbi9kZWxldGlv
biBpbiByYW5kb20gb3JkZXIuCisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cyg0NTI4MSwgMTMyNTUx
LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0Myk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cygzODY3
MTgsIDEyOTgwNywgdmFsdWVzLCAmdHJhY2tlciwgJnNldDYxKTsKKyAgRXhwZWN0T3BlcmF0aW9u
Q291bnRzKDU4Njc2MSwgMTMwMzEwLCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0MTAwKTsKKworICAv
LyBUZXN0IGtleSBpbnNlcnRpb24vZGVsZXRpb24gaW4gc29ydGVkIG9yZGVyLgorICBzdGQ6OnNv
cnQodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50
cygyNjYzOCwgOTIxMzQsIHZhbHVlcywgJnRyYWNrZXIsICZzZXQzKTsKKyAgRXhwZWN0T3BlcmF0
aW9uQ291bnRzKDIwMjA4LCA4Nzc1NywgdmFsdWVzLCAmdHJhY2tlciwgJnNldDYxKTsKKyAgRXhw
ZWN0T3BlcmF0aW9uQ291bnRzKDIwMTI0LCA5NjU4MywgdmFsdWVzLCAmdHJhY2tlciwgJnNldDEw
MCk7CisKKyAgLy8gVGVzdCBrZXkgaW5zZXJ0aW9uL2RlbGV0aW9uIGluIHJldmVyc2Ugc29ydGVk
IG9yZGVyLgorICBzdGQ6OnJldmVyc2UodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7Cisg
IEV4cGVjdE9wZXJhdGlvbkNvdW50cyg0OTk1MSwgMTE5MzI1LCB2YWx1ZXMsICZ0cmFja2VyLCAm
c2V0Myk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cygzMzg4MTMsIDExODI2NiwgdmFsdWVzLCAm
dHJhY2tlciwgJnNldDYxKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDUzNDUyOSwgMTI1Mjc5
LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0MTAwKTsKK30KKworc3RydWN0IE1vdmFibGVPbmx5SW5z
dGFuY2VUaHJlZVdheUNvbXBhcmUgeworICBhYnNsOjp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yKCko
Y29uc3QgTW92YWJsZU9ubHlJbnN0YW5jZSAmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IE1vdmFibGVPbmx5SW5zdGFuY2UgJmIpIGNvbnN0IHsKKyAgICByZXR1cm4g
YS5jb21wYXJlKGIpOworICB9Cit9OworCisvLyBOb3RlOiB3aGVuIHRoZSB2YWx1ZXMgaW4gdGhp
cyB0ZXN0IGNoYW5nZSwgaXQgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBhbiBpbXBhY3QKKy8vIG9uIHBl
cmZvcm1hbmNlLgorVEVTVChCdHJlZSwgTW92ZXNDb21wYXJpc29uc0NvcGllc1N3YXBzVHJhY2tp
bmdUaHJlZVdheUNvbXBhcmUpIHsKKyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIC8vIE5v
dGU6IHRoaXMgaXMgbWluaW11bSBudW1iZXIgb2YgdmFsdWVzIHBlciBub2RlLgorICBTaXplZEJ0
cmVlU2V0PE1vdmFibGVPbmx5SW5zdGFuY2UsIC8qVGFyZ2V0VmFsdWVzUGVyTm9kZT0qLzMsCisg
ICAgICAgICAgICAgICAgTW92YWJsZU9ubHlJbnN0YW5jZVRocmVlV2F5Q29tcGFyZT4KKyAgICAg
IHNldDM7CisgIC8vIE5vdGU6IHRoaXMgaXMgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIHZhbHVlcyBw
ZXIgbm9kZSBmb3IgYSBzZXQgb2YgaW50MzJzCisgIC8vICh3aXRoIDY0LWJpdCBwb2ludGVycyku
CisgIFNpemVkQnRyZWVTZXQ8TW92YWJsZU9ubHlJbnN0YW5jZSwgLypUYXJnZXRWYWx1ZXNQZXJO
b2RlPSovNjEsCisgICAgICAgICAgICAgICAgTW92YWJsZU9ubHlJbnN0YW5jZVRocmVlV2F5Q29t
cGFyZT4KKyAgICAgIHNldDYxOworICBTaXplZEJ0cmVlU2V0PE1vdmFibGVPbmx5SW5zdGFuY2Us
IC8qVGFyZ2V0VmFsdWVzUGVyTm9kZT0qLzEwMCwKKyAgICAgICAgICAgICAgICBNb3ZhYmxlT25s
eUluc3RhbmNlVGhyZWVXYXlDb21wYXJlPgorICAgICAgc2V0MTAwOworCisgIC8vIERvbid0IGRl
cGVuZCBvbiBmbGFncyBmb3IgcmFuZG9tIHZhbHVlcyBiZWNhdXNlIHRoZW4gdGhlIGV4cGVjdGF0
aW9ucyB3aWxsCisgIC8vIGZhaWwgaWYgdGhlIGZsYWdzIGNoYW5nZS4KKyAgc3RkOjp2ZWN0b3I8
aW50PiB2YWx1ZXMgPQorICAgICAgR2VuZXJhdGVWYWx1ZXNXaXRoU2VlZDxpbnQ+KDEwMDAwLCAx
IDw8IDIyLCAvKnNlZWQ9Ki8yMyk7CisKKyAgRVhQRUNUX0VRKEJ0cmVlTm9kZVBlZXI6OkdldE51
bVZhbHVlc1Blck5vZGU8ZGVjbHR5cGUoc2V0Myk+KCksIDMpOworICBFWFBFQ1RfRVEoQnRyZWVO
b2RlUGVlcjo6R2V0TnVtVmFsdWVzUGVyTm9kZTxkZWNsdHlwZShzZXQ2MSk+KCksIDYxKTsKKyAg
RVhQRUNUX0VRKEJ0cmVlTm9kZVBlZXI6OkdldE51bVZhbHVlc1Blck5vZGU8ZGVjbHR5cGUoc2V0
MTAwKT4oKSwgMTAwKTsKKyAgaWYgKHNpemVvZih2b2lkICopID09IDgpIHsKKyAgICBFWFBFQ1Rf
RVEoQnRyZWVOb2RlUGVlcjo6R2V0TnVtVmFsdWVzUGVyTm9kZTxhYnNsOjpidHJlZV9zZXQ8aW50
MzJfdD4+KCksCisgICAgICAgICAgICAgIEJ0cmVlTm9kZVBlZXI6OkdldE51bVZhbHVlc1Blck5v
ZGU8ZGVjbHR5cGUoc2V0NjEpPigpKTsKKyAgfQorCisgIC8vIFRlc3Qga2V5IGluc2VydGlvbi9k
ZWxldGlvbiBpbiByYW5kb20gb3JkZXIuCisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cyg0NTI4MSwg
MTIyNTYwLCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0Myk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50
cygzODY3MTgsIDExOTgxNiwgdmFsdWVzLCAmdHJhY2tlciwgJnNldDYxKTsKKyAgRXhwZWN0T3Bl
cmF0aW9uQ291bnRzKDU4Njc2MSwgMTIwMzE5LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0MTAwKTsK
KworICAvLyBUZXN0IGtleSBpbnNlcnRpb24vZGVsZXRpb24gaW4gc29ydGVkIG9yZGVyLgorICBz
dGQ6OnNvcnQodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIEV4cGVjdE9wZXJhdGlv
bkNvdW50cygyNjYzOCwgOTIxMzQsIHZhbHVlcywgJnRyYWNrZXIsICZzZXQzKTsKKyAgRXhwZWN0
T3BlcmF0aW9uQ291bnRzKDIwMjA4LCA4Nzc1NywgdmFsdWVzLCAmdHJhY2tlciwgJnNldDYxKTsK
KyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDIwMTI0LCA5NjU4MywgdmFsdWVzLCAmdHJhY2tlciwg
JnNldDEwMCk7CisKKyAgLy8gVGVzdCBrZXkgaW5zZXJ0aW9uL2RlbGV0aW9uIGluIHJldmVyc2Ug
c29ydGVkIG9yZGVyLgorICBzdGQ6OnJldmVyc2UodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQo
KSk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cyg0OTk1MSwgMTA5MzI2LCB2YWx1ZXMsICZ0cmFj
a2VyLCAmc2V0Myk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cygzMzg4MTMsIDEwODI2NywgdmFs
dWVzLCAmdHJhY2tlciwgJnNldDYxKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDUzNDUyOSwg
MTE1MjgwLCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0MTAwKTsKK30KKworc3RydWN0IE5vRGVmYXVs
dEN0b3IgeworICBpbnQgbnVtOworICBleHBsaWNpdCBOb0RlZmF1bHRDdG9yKGludCBpKSA6IG51
bShpKSB7fQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPChjb25zdCBOb0RlZmF1bHRDdG9yJiBh
LCBjb25zdCBOb0RlZmF1bHRDdG9yJiBiKSB7CisgICAgcmV0dXJuIGEubnVtIDwgYi5udW07Cisg
IH0KK307CisKK1RFU1QoQnRyZWUsIEJ0cmVlTWFwQ2FuSG9sZE5vRGVmYXVsdEN0b3JUeXBlcykg
eworICBhYnNsOjpidHJlZV9tYXA8Tm9EZWZhdWx0Q3RvciwgTm9EZWZhdWx0Q3Rvcj4gbTsKKwor
ICBmb3IgKGludCBpID0gMTsgaSA8PSA5OTsgKytpKSB7CisgICAgU0NPUEVEX1RSQUNFKGkpOwor
ICAgIEVYUEVDVF9UUlVFKG0uZW1wbGFjZShOb0RlZmF1bHRDdG9yKGkpLCBOb0RlZmF1bHRDdG9y
KDEwMCAtIGkpKS5zZWNvbmQpOworICB9CisgIEVYUEVDVF9GQUxTRShtLmVtcGxhY2UoTm9EZWZh
dWx0Q3Rvcig3OCksIE5vRGVmYXVsdEN0b3IoMCkpLnNlY29uZCk7CisKKyAgYXV0byBpdGVyOTkg
PSBtLmZpbmQoTm9EZWZhdWx0Q3Rvcig5OSkpOworICBBU1NFUlRfTkUoaXRlcjk5LCBtLmVuZCgp
KTsKKyAgRVhQRUNUX0VRKGl0ZXI5OS0+c2Vjb25kLm51bSwgMSk7CisKKyAgYXV0byBpdGVyMSA9
IG0uZmluZChOb0RlZmF1bHRDdG9yKDEpKTsKKyAgQVNTRVJUX05FKGl0ZXIxLCBtLmVuZCgpKTsK
KyAgRVhQRUNUX0VRKGl0ZXIxLT5zZWNvbmQubnVtLCA5OSk7CisKKyAgYXV0byBpdGVyNTAgPSBt
LmZpbmQoTm9EZWZhdWx0Q3Rvcig1MCkpOworICBBU1NFUlRfTkUoaXRlcjUwLCBtLmVuZCgpKTsK
KyAgRVhQRUNUX0VRKGl0ZXI1MC0+c2Vjb25kLm51bSwgNTApOworCisgIGF1dG8gaXRlcjI1ID0g
bS5maW5kKE5vRGVmYXVsdEN0b3IoMjUpKTsKKyAgQVNTRVJUX05FKGl0ZXIyNSwgbS5lbmQoKSk7
CisgIEVYUEVDVF9FUShpdGVyMjUtPnNlY29uZC5udW0sIDc1KTsKK30KKworVEVTVChCdHJlZSwg
QnRyZWVNdWx0aW1hcENhbkhvbGROb0RlZmF1bHRDdG9yVHlwZXMpIHsKKyAgYWJzbDo6YnRyZWVf
bXVsdGltYXA8Tm9EZWZhdWx0Q3RvciwgTm9EZWZhdWx0Q3Rvcj4gbTsKKworICBmb3IgKGludCBp
ID0gMTsgaSA8PSA5OTsgKytpKSB7CisgICAgU0NPUEVEX1RSQUNFKGkpOworICAgIG0uZW1wbGFj
ZShOb0RlZmF1bHRDdG9yKGkpLCBOb0RlZmF1bHRDdG9yKDEwMCAtIGkpKTsKKyAgfQorCisgIGF1
dG8gaXRlcjk5ID0gbS5maW5kKE5vRGVmYXVsdEN0b3IoOTkpKTsKKyAgQVNTRVJUX05FKGl0ZXI5
OSwgbS5lbmQoKSk7CisgIEVYUEVDVF9FUShpdGVyOTktPnNlY29uZC5udW0sIDEpOworCisgIGF1
dG8gaXRlcjEgPSBtLmZpbmQoTm9EZWZhdWx0Q3RvcigxKSk7CisgIEFTU0VSVF9ORShpdGVyMSwg
bS5lbmQoKSk7CisgIEVYUEVDVF9FUShpdGVyMS0+c2Vjb25kLm51bSwgOTkpOworCisgIGF1dG8g
aXRlcjUwID0gbS5maW5kKE5vRGVmYXVsdEN0b3IoNTApKTsKKyAgQVNTRVJUX05FKGl0ZXI1MCwg
bS5lbmQoKSk7CisgIEVYUEVDVF9FUShpdGVyNTAtPnNlY29uZC5udW0sIDUwKTsKKworICBhdXRv
IGl0ZXIyNSA9IG0uZmluZChOb0RlZmF1bHRDdG9yKDI1KSk7CisgIEFTU0VSVF9ORShpdGVyMjUs
IG0uZW5kKCkpOworICBFWFBFQ1RfRVEoaXRlcjI1LT5zZWNvbmQubnVtLCA3NSk7Cit9CisKK1RF
U1QoQnRyZWUsIE1hcEF0KSB7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gbWFwID0ge3sx
LCAyfSwgezIsIDR9fTsKKyAgRVhQRUNUX0VRKG1hcC5hdCgxKSwgMik7CisgIEVYUEVDVF9FUSht
YXAuYXQoMiksIDQpOworICBtYXAuYXQoMikgPSA4OworICBjb25zdCBhYnNsOjpidHJlZV9tYXA8
aW50LCBpbnQ+ICZjb25zdF9tYXAgPSBtYXA7CisgIEVYUEVDVF9FUShjb25zdF9tYXAuYXQoMSks
IDIpOworICBFWFBFQ1RfRVEoY29uc3RfbWFwLmF0KDIpLCA4KTsKKyAgdHJ5IHsKKyAgICBtYXAu
YXQoMyk7CisgICAgRkFJTCgpIDw8ICJFeGNlcHRpb24gbm90IHRocm93biI7CisgIH0gY2F0Y2gg
KGNvbnN0IHN0ZDo6b3V0X29mX3JhbmdlJiBlKSB7CisgICAgRVhQRUNUX1NUUkVRKGUud2hhdCgp
LCAiYWJzbDo6YnRyZWVfbWFwOjphdCIpOworICB9Cit9CisKK1RFU1QoQnRyZWUsIEJ0cmVlTXVs
dGlzZXRFbXBsYWNlKSB7CisgIGNvbnN0IGludCB2YWx1ZV90b19pbnNlcnQgPSAxMjM0NTY7Cisg
IGFic2w6OmJ0cmVlX211bHRpc2V0PGludD4gczsKKyAgYXV0byBpdGVyID0gcy5lbXBsYWNlKHZh
bHVlX3RvX2luc2VydCk7CisgIEFTU0VSVF9ORShpdGVyLCBzLmVuZCgpKTsKKyAgRVhQRUNUX0VR
KCppdGVyLCB2YWx1ZV90b19pbnNlcnQpOworICBhdXRvIGl0ZXIyID0gcy5lbXBsYWNlKHZhbHVl
X3RvX2luc2VydCk7CisgIEVYUEVDVF9ORShpdGVyMiwgaXRlcik7CisgIEFTU0VSVF9ORShpdGVy
Miwgcy5lbmQoKSk7CisgIEVYUEVDVF9FUSgqaXRlcjIsIHZhbHVlX3RvX2luc2VydCk7CisgIGF1
dG8gcmVzdWx0ID0gcy5lcXVhbF9yYW5nZSh2YWx1ZV90b19pbnNlcnQpOworICBFWFBFQ1RfRVEo
c3RkOjpkaXN0YW5jZShyZXN1bHQuZmlyc3QsIHJlc3VsdC5zZWNvbmQpLCAyKTsKK30KKworVEVT
VChCdHJlZSwgQnRyZWVNdWx0aXNldEVtcGxhY2VIaW50KSB7CisgIGNvbnN0IGludCB2YWx1ZV90
b19pbnNlcnQgPSAxMjM0NTY7CisgIGFic2w6OmJ0cmVlX211bHRpc2V0PGludD4gczsKKyAgYXV0
byBpdGVyID0gcy5lbXBsYWNlKHZhbHVlX3RvX2luc2VydCk7CisgIEFTU0VSVF9ORShpdGVyLCBz
LmVuZCgpKTsKKyAgRVhQRUNUX0VRKCppdGVyLCB2YWx1ZV90b19pbnNlcnQpOworICBhdXRvIGVt
cGxhY2VfaXRlciA9IHMuZW1wbGFjZV9oaW50KGl0ZXIsIHZhbHVlX3RvX2luc2VydCk7CisgIEVY
UEVDVF9ORShlbXBsYWNlX2l0ZXIsIGl0ZXIpOworICBBU1NFUlRfTkUoZW1wbGFjZV9pdGVyLCBz
LmVuZCgpKTsKKyAgRVhQRUNUX0VRKCplbXBsYWNlX2l0ZXIsIHZhbHVlX3RvX2luc2VydCk7Cit9
CisKK1RFU1QoQnRyZWUsIEJ0cmVlTXVsdGltYXBFbXBsYWNlKSB7CisgIGNvbnN0IGludCBrZXlf
dG9faW5zZXJ0ID0gMTIzNDU2OworICBjb25zdCBjaGFyIHZhbHVlMFtdID0gImEiOworICBhYnNs
OjpidHJlZV9tdWx0aW1hcDxpbnQsIHN0ZDo6c3RyaW5nPiBzOworICBhdXRvIGl0ZXIgPSBzLmVt
cGxhY2Uoa2V5X3RvX2luc2VydCwgdmFsdWUwKTsKKyAgQVNTRVJUX05FKGl0ZXIsIHMuZW5kKCkp
OworICBFWFBFQ1RfRVEoaXRlci0+Zmlyc3QsIGtleV90b19pbnNlcnQpOworICBFWFBFQ1RfRVEo
aXRlci0+c2Vjb25kLCB2YWx1ZTApOworICBjb25zdCBjaGFyIHZhbHVlMVtdID0gImIiOworICBh
dXRvIGl0ZXIyID0gcy5lbXBsYWNlKGtleV90b19pbnNlcnQsIHZhbHVlMSk7CisgIEVYUEVDVF9O
RShpdGVyMiwgaXRlcik7CisgIEFTU0VSVF9ORShpdGVyMiwgcy5lbmQoKSk7CisgIEVYUEVDVF9F
UShpdGVyMi0+Zmlyc3QsIGtleV90b19pbnNlcnQpOworICBFWFBFQ1RfRVEoaXRlcjItPnNlY29u
ZCwgdmFsdWUxKTsKKyAgYXV0byByZXN1bHQgPSBzLmVxdWFsX3JhbmdlKGtleV90b19pbnNlcnQp
OworICBFWFBFQ1RfRVEoc3RkOjpkaXN0YW5jZShyZXN1bHQuZmlyc3QsIHJlc3VsdC5zZWNvbmQp
LCAyKTsKK30KKworVEVTVChCdHJlZSwgQnRyZWVNdWx0aW1hcEVtcGxhY2VIaW50KSB7CisgIGNv
bnN0IGludCBrZXlfdG9faW5zZXJ0ID0gMTIzNDU2OworICBjb25zdCBjaGFyIHZhbHVlMFtdID0g
ImEiOworICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIHN0ZDo6c3RyaW5nPiBzOworICBhdXRv
IGl0ZXIgPSBzLmVtcGxhY2Uoa2V5X3RvX2luc2VydCwgdmFsdWUwKTsKKyAgQVNTRVJUX05FKGl0
ZXIsIHMuZW5kKCkpOworICBFWFBFQ1RfRVEoaXRlci0+Zmlyc3QsIGtleV90b19pbnNlcnQpOwor
ICBFWFBFQ1RfRVEoaXRlci0+c2Vjb25kLCB2YWx1ZTApOworICBjb25zdCBjaGFyIHZhbHVlMVtd
ID0gImIiOworICBhdXRvIGVtcGxhY2VfaXRlciA9IHMuZW1wbGFjZV9oaW50KGl0ZXIsIGtleV90
b19pbnNlcnQsIHZhbHVlMSk7CisgIEVYUEVDVF9ORShlbXBsYWNlX2l0ZXIsIGl0ZXIpOworICBB
U1NFUlRfTkUoZW1wbGFjZV9pdGVyLCBzLmVuZCgpKTsKKyAgRVhQRUNUX0VRKGVtcGxhY2VfaXRl
ci0+Zmlyc3QsIGtleV90b19pbnNlcnQpOworICBFWFBFQ1RfRVEoZW1wbGFjZV9pdGVyLT5zZWNv
bmQsIHZhbHVlMSk7Cit9CisKK1RFU1QoQnRyZWUsIENvbnN0SXRlcmF0b3JBY2Nlc3NvcnMpIHsK
KyAgYWJzbDo6YnRyZWVfc2V0PGludD4gc2V0OworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsg
KytpKSB7CisgICAgc2V0Lmluc2VydChpKTsKKyAgfQorCisgIGF1dG8gaXQgPSBzZXQuY2JlZ2lu
KCk7CisgIGF1dG8gcl9pdCA9IHNldC5jcmJlZ2luKCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwg
MTAwOyArK2ksICsraXQsICsrcl9pdCkgeworICAgIEFTU0VSVF9FUSgqaXQsIGkpOworICAgIEFT
U0VSVF9FUSgqcl9pdCwgOTkgLSBpKTsKKyAgfQorICBFWFBFQ1RfRVEoaXQsIHNldC5jZW5kKCkp
OworICBFWFBFQ1RfRVEocl9pdCwgc2V0LmNyZW5kKCkpOworfQorCitURVNUKEJ0cmVlLCBTdHJT
cGxpdENvbXBhdGlibGUpIHsKKyAgY29uc3QgYWJzbDo6YnRyZWVfc2V0PHN0ZDo6c3RyaW5nPiBz
cGxpdF9zZXQgPSBhYnNsOjpTdHJTcGxpdCgiYSxiLGMiLCAnLCcpOworICBjb25zdCBhYnNsOjpi
dHJlZV9zZXQ8c3RkOjpzdHJpbmc+IGV4cGVjdGVkX3NldCA9IHsiYSIsICJiIiwgImMifTsKKwor
ICBFWFBFQ1RfRVEoc3BsaXRfc2V0LCBleHBlY3RlZF9zZXQpOworfQorCisvLyBXZSBjYW4ndCB1
c2UgRVhQRUNUX0VRL2V0Yy4gdG8gY29tcGFyZSBhYnNsOjp3ZWFrX29yZGVyaW5nIGJlY2F1c2Ug
dGhleQorLy8gY29udmVydCBsaXRlcmFsIDAgdG8gaW50IGFuZCBhYnNsOjp3ZWFrX29yZGVyaW5n
IGNhbiBvbmx5IGJlIGNvbXBhcmVkIHdpdGgKKy8vIGxpdGVyYWwgMC4gRGVmaW5pbmcgdGhpcyBm
dW5jdGlvbiBhbGxvd3MgZm9yIGF2b2lkaW5nIENsYW5nVGlkeSB3YXJuaW5ncy4KK2Jvb2wgSWRl
bnRpdHkoY29uc3QgYm9vbCBiKSB7IHJldHVybiBiOyB9CisKK1RFU1QoQnRyZWUsIFZhbHVlQ29t
cCkgeworICBhYnNsOjpidHJlZV9zZXQ8aW50PiBzOworICBFWFBFQ1RfVFJVRShzLnZhbHVlX2Nv
bXAoKSgxLCAyKSk7CisgIEVYUEVDVF9GQUxTRShzLnZhbHVlX2NvbXAoKSgyLCAyKSk7CisgIEVY
UEVDVF9GQUxTRShzLnZhbHVlX2NvbXAoKSgyLCAxKSk7CisKKyAgYWJzbDo6YnRyZWVfbWFwPGlu
dCwgaW50PiBtMTsKKyAgRVhQRUNUX1RSVUUobTEudmFsdWVfY29tcCgpKHN0ZDo6bWFrZV9wYWly
KDEsIDApLCBzdGQ6Om1ha2VfcGFpcigyLCAwKSkpOworICBFWFBFQ1RfRkFMU0UobTEudmFsdWVf
Y29tcCgpKHN0ZDo6bWFrZV9wYWlyKDIsIDApLCBzdGQ6Om1ha2VfcGFpcigyLCAwKSkpOworICBF
WFBFQ1RfRkFMU0UobTEudmFsdWVfY29tcCgpKHN0ZDo6bWFrZV9wYWlyKDIsIDApLCBzdGQ6Om1h
a2VfcGFpcigxLCAwKSkpOworCisgIGFic2w6OmJ0cmVlX21hcDxzdGQ6OnN0cmluZywgaW50PiBt
MjsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBtMi52YWx1ZV9jb21wKCkoc3RkOjpt
YWtlX3BhaXIoImEiLCAwKSwgc3RkOjptYWtlX3BhaXIoImIiLCAwKSkgPCAwKSk7CisgIEVYUEVD
VF9UUlVFKElkZW50aXR5KAorICAgICAgbTIudmFsdWVfY29tcCgpKHN0ZDo6bWFrZV9wYWlyKCJi
IiwgMCksIHN0ZDo6bWFrZV9wYWlyKCJiIiwgMCkpID09IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRl
bnRpdHkoCisgICAgICBtMi52YWx1ZV9jb21wKCkoc3RkOjptYWtlX3BhaXIoImIiLCAwKSwgc3Rk
OjptYWtlX3BhaXIoImEiLCAwKSkgPiAwKSk7Cit9CisKK1RFU1QoQnRyZWUsIERlZmF1bHRDb25z
dHJ1Y3Rpb24pIHsKKyAgYWJzbDo6YnRyZWVfc2V0PGludD4gczsKKyAgYWJzbDo6YnRyZWVfbWFw
PGludCwgaW50PiBtOworICBhYnNsOjpidHJlZV9tdWx0aXNldDxpbnQ+IG1zOworICBhYnNsOjpi
dHJlZV9tdWx0aW1hcDxpbnQsIGludD4gbW07CisKKyAgRVhQRUNUX1RSVUUocy5lbXB0eSgpKTsK
KyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RSVUUobXMuZW1wdHkoKSk7Cisg
IEVYUEVDVF9UUlVFKG1tLmVtcHR5KCkpOworfQorCitURVNUKEJ0cmVlLCBTd2lzc1RhYmxlSGFz
aGFibGUpIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga1ZhbHVlcyA9IDEwMDAwOworICBzdGQ6
OnZlY3RvcjxpbnQ+IHZhbHVlcyhrVmFsdWVzKTsKKyAgc3RkOjppb3RhKHZhbHVlcy5iZWdpbigp
LCB2YWx1ZXMuZW5kKCksIDApOworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+PiBt
YXBfdmFsdWVzOworICBmb3IgKGludCB2IDogdmFsdWVzKSBtYXBfdmFsdWVzLmVtcGxhY2VfYmFj
ayh2LCAtdik7CisKKyAgdXNpbmcgc2V0ID0gYWJzbDo6YnRyZWVfc2V0PGludD47CisgIEVYUEVD
VF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoeworICAg
ICAgc2V0e30sCisgICAgICBzZXR7MX0sCisgICAgICBzZXR7Mn0sCisgICAgICBzZXR7MSwgMn0s
CisgICAgICBzZXR7MiwgMX0sCisgICAgICBzZXQodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQo
KSksCisgICAgICBzZXQodmFsdWVzLnJiZWdpbigpLCB2YWx1ZXMucmVuZCgpKSwKKyAgfSkpOwor
CisgIHVzaW5nIG1zZXQgPSBhYnNsOjpidHJlZV9tdWx0aXNldDxpbnQ+OworICBFWFBFQ1RfVFJV
RShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHsKKyAgICAgIG1z
ZXR7fSwKKyAgICAgIG1zZXR7MX0sCisgICAgICBtc2V0ezEsIDF9LAorICAgICAgbXNldHsyfSwK
KyAgICAgIG1zZXR7MiwgMn0sCisgICAgICBtc2V0ezEsIDJ9LAorICAgICAgbXNldHsxLCAxLCAy
fSwKKyAgICAgIG1zZXR7MSwgMiwgMn0sCisgICAgICBtc2V0ezEsIDEsIDIsIDJ9LAorICAgICAg
bXNldCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKSwKKyAgICAgIG1zZXQodmFsdWVzLnJi
ZWdpbigpLCB2YWx1ZXMucmVuZCgpKSwKKyAgfSkpOworCisgIHVzaW5nIG1hcCA9IGFic2w6OmJ0
cmVlX21hcDxpbnQsIGludD47CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1l
bnRzQWJzbEhhc2hDb3JyZWN0bHkoeworICAgICAgbWFwe30sCisgICAgICBtYXB7ezEsIDB9fSwK
KyAgICAgIG1hcHt7MSwgMX19LAorICAgICAgbWFwe3syLCAwfX0sCisgICAgICBtYXB7ezIsIDJ9
fSwKKyAgICAgIG1hcHt7MSwgMH0sIHsyLCAxfX0sCisgICAgICBtYXAobWFwX3ZhbHVlcy5iZWdp
bigpLCBtYXBfdmFsdWVzLmVuZCgpKSwKKyAgICAgIG1hcChtYXBfdmFsdWVzLnJiZWdpbigpLCBt
YXBfdmFsdWVzLnJlbmQoKSksCisgIH0pKTsKKworICB1c2luZyBtbWFwID0gYWJzbDo6YnRyZWVf
bXVsdGltYXA8aW50LCBpbnQ+OworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVt
ZW50c0Fic2xIYXNoQ29ycmVjdGx5KHsKKyAgICAgIG1tYXB7fSwKKyAgICAgIG1tYXB7ezEsIDB9
fSwKKyAgICAgIG1tYXB7ezEsIDF9fSwKKyAgICAgIG1tYXB7ezEsIDB9LCB7MSwgMX19LAorICAg
ICAgbW1hcHt7MSwgMX0sIHsxLCAwfX0sCisgICAgICBtbWFwe3syLCAwfX0sCisgICAgICBtbWFw
e3syLCAyfX0sCisgICAgICBtbWFwe3sxLCAwfSwgezIsIDF9fSwKKyAgICAgIG1tYXAobWFwX3Zh
bHVlcy5iZWdpbigpLCBtYXBfdmFsdWVzLmVuZCgpKSwKKyAgICAgIG1tYXAobWFwX3ZhbHVlcy5y
YmVnaW4oKSwgbWFwX3ZhbHVlcy5yZW5kKCkpLAorICB9KSk7Cit9CisKK1RFU1QoQnRyZWUsIENv
bXBhcmFibGVTZXQpIHsKKyAgYWJzbDo6YnRyZWVfc2V0PGludD4gczEgPSB7MSwgMn07CisgIGFi
c2w6OmJ0cmVlX3NldDxpbnQ+IHMyID0gezIsIDN9OworICBFWFBFQ1RfTFQoczEsIHMyKTsKKyAg
RVhQRUNUX0xFKHMxLCBzMik7CisgIEVYUEVDVF9MRShzMSwgczEpOworICBFWFBFQ1RfR1QoczIs
IHMxKTsKKyAgRVhQRUNUX0dFKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMSwgczEpOworfQorCitU
RVNUKEJ0cmVlLCBDb21wYXJhYmxlU2V0c0RpZmZlcmVudExlbmd0aCkgeworICBhYnNsOjpidHJl
ZV9zZXQ8aW50PiBzMSA9IHsxLCAyfTsKKyAgYWJzbDo6YnRyZWVfc2V0PGludD4gczIgPSB7MSwg
MiwgM307CisgIEVYUEVDVF9MVChzMSwgczIpOworICBFWFBFQ1RfTEUoczEsIHMyKTsKKyAgRVhQ
RUNUX0dUKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMiwgczEpOworfQorCitURVNUKEJ0cmVlLCBD
b21wYXJhYmxlTXVsdGlzZXQpIHsKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBzMSA9IHsx
LCAyfTsKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBzMiA9IHsyLCAzfTsKKyAgRVhQRUNU
X0xUKHMxLCBzMik7CisgIEVYUEVDVF9MRShzMSwgczIpOworICBFWFBFQ1RfTEUoczEsIHMxKTsK
KyAgRVhQRUNUX0dUKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMiwgczEpOworICBFWFBFQ1RfR0Uo
czEsIHMxKTsKK30KKworVEVTVChCdHJlZSwgQ29tcGFyYWJsZU1hcCkgeworICBhYnNsOjpidHJl
ZV9tYXA8aW50LCBpbnQ+IHMxID0ge3sxLCAyfX07CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGlu
dD4gczIgPSB7ezIsIDN9fTsKKyAgRVhQRUNUX0xUKHMxLCBzMik7CisgIEVYUEVDVF9MRShzMSwg
czIpOworICBFWFBFQ1RfTEUoczEsIHMxKTsKKyAgRVhQRUNUX0dUKHMyLCBzMSk7CisgIEVYUEVD
VF9HRShzMiwgczEpOworICBFWFBFQ1RfR0UoczEsIHMxKTsKK30KKworVEVTVChCdHJlZSwgQ29t
cGFyYWJsZU11bHRpbWFwKSB7CisgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgaW50PiBzMSA9
IHt7MSwgMn19OworICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIGludD4gczIgPSB7ezIsIDN9
fTsKKyAgRVhQRUNUX0xUKHMxLCBzMik7CisgIEVYUEVDVF9MRShzMSwgczIpOworICBFWFBFQ1Rf
TEUoczEsIHMxKTsKKyAgRVhQRUNUX0dUKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMiwgczEpOwor
ICBFWFBFQ1RfR0UoczEsIHMxKTsKK30KKworVEVTVChCdHJlZSwgQ29tcGFyYWJsZVNldFdpdGhD
dXN0b21Db21wYXJhdG9yKSB7CisgIC8vIEFzIHNwZWNpZmllZCBieQorICAvLyBodHRwOi8vd3d3
Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvd2cyMS9kb2NzL3BhcGVycy8yMDEyL24zMzM3LnBkZiBz
ZWN0aW9uCisgIC8vIFtjb250YWluZXIucmVxdWlyZW1lbnRzLmdlbmVyYWxdLjEyLCBvcmRlcmlu
ZyBhc3NvY2lhdGl2ZSBjb250YWluZXJzIGFsd2F5cworICAvLyB1c2VzIGRlZmF1bHQgJzwnIG9w
ZXJhdG9yCisgIC8vIC0gZXZlbiBpZiBvdGhlcndpc2UgdGhlIGNvbnRhaW5lciB1c2VzIGN1c3Rv
bSBmdW5jdG9yLgorICBhYnNsOjpidHJlZV9zZXQ8aW50LCBzdGQ6OmdyZWF0ZXI8aW50Pj4gczEg
PSB7MSwgMn07CisgIGFic2w6OmJ0cmVlX3NldDxpbnQsIHN0ZDo6Z3JlYXRlcjxpbnQ+PiBzMiA9
IHsyLCAzfTsKKyAgRVhQRUNUX0xUKHMxLCBzMik7CisgIEVYUEVDVF9MRShzMSwgczIpOworICBF
WFBFQ1RfTEUoczEsIHMxKTsKKyAgRVhQRUNUX0dUKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMiwg
czEpOworICBFWFBFQ1RfR0UoczEsIHMxKTsKK30KKworVEVTVChCdHJlZSwgRXJhc2VSZXR1cm5z
SXRlcmF0b3IpIHsKKyAgYWJzbDo6YnRyZWVfc2V0PGludD4gc2V0ID0gezEsIDIsIDMsIDQsIDV9
OworICBhdXRvIHJlc3VsdF9pdCA9IHNldC5lcmFzZShzZXQuYmVnaW4oKSwgc2V0LmZpbmQoMykp
OworICBFWFBFQ1RfRVEocmVzdWx0X2l0LCBzZXQuZmluZCgzKSk7CisgIHJlc3VsdF9pdCA9IHNl
dC5lcmFzZShzZXQuZmluZCg1KSk7CisgIEVYUEVDVF9FUShyZXN1bHRfaXQsIHNldC5lbmQoKSk7
Cit9CisKK1RFU1QoQnRyZWUsIEV4dHJhY3RBbmRJbnNlcnROb2RlSGFuZGxlU2V0KSB7CisgIGFi
c2w6OmJ0cmVlX3NldDxpbnQ+IHNyYzEgPSB7MSwgMiwgMywgNCwgNX07CisgIGF1dG8gbmggPSBz
cmMxLmV4dHJhY3Qoc3JjMS5maW5kKDMpKTsKKyAgRVhQRUNUX1RIQVQoc3JjMSwgRWxlbWVudHNB
cmUoMSwgMiwgNCwgNSkpOworICBhYnNsOjpidHJlZV9zZXQ8aW50PiBvdGhlcjsKKyAgYWJzbDo6
YnRyZWVfc2V0PGludD46Omluc2VydF9yZXR1cm5fdHlwZSByZXMgPSBvdGhlci5pbnNlcnQoc3Rk
Ojptb3ZlKG5oKSk7CisgIEVYUEVDVF9USEFUKG90aGVyLCBFbGVtZW50c0FyZSgzKSk7CisgIEVY
UEVDVF9FUShyZXMucG9zaXRpb24sIG90aGVyLmZpbmQoMykpOworICBFWFBFQ1RfVFJVRShyZXMu
aW5zZXJ0ZWQpOworICBFWFBFQ1RfVFJVRShyZXMubm9kZS5lbXB0eSgpKTsKKworICBhYnNsOjpi
dHJlZV9zZXQ8aW50PiBzcmMyID0gezMsIDR9OworICBuaCA9IHNyYzIuZXh0cmFjdChzcmMyLmZp
bmQoMykpOworICBFWFBFQ1RfVEhBVChzcmMyLCBFbGVtZW50c0FyZSg0KSk7CisgIHJlcyA9IG90
aGVyLmluc2VydChzdGQ6Om1vdmUobmgpKTsKKyAgRVhQRUNUX1RIQVQob3RoZXIsIEVsZW1lbnRz
QXJlKDMpKTsKKyAgRVhQRUNUX0VRKHJlcy5wb3NpdGlvbiwgb3RoZXIuZmluZCgzKSk7CisgIEVY
UEVDVF9GQUxTRShyZXMuaW5zZXJ0ZWQpOworICBBU1NFUlRfRkFMU0UocmVzLm5vZGUuZW1wdHko
KSk7CisgIEVYUEVDVF9FUShyZXMubm9kZS52YWx1ZSgpLCAzKTsKK30KKworc3RydWN0IERlcmVm
IHsKKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxpbnQ+ICZsaHMsCisg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8aW50PiAmcmhzKSBjb25zdCB7
CisgICAgcmV0dXJuICpsaHMgPCAqcmhzOworICB9Cit9OworCitURVNUKEJ0cmVlLCBFeHRyYWN0
V2l0aFVuaXF1ZVB0cikgeworICBhYnNsOjpidHJlZV9zZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4s
IERlcmVmPiBzOworICBzLmluc2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDEpKTsKKyAgcy5p
bnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8aW50PigyKSk7CisgIHMuaW5zZXJ0KGFic2w6Om1ha2Vf
dW5pcXVlPGludD4oMykpOworICBzLmluc2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDQpKTsK
KyAgcy5pbnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8aW50Pig1KSk7CisgIGF1dG8gbmggPSBzLmV4
dHJhY3Qocy5maW5kKGFic2w6Om1ha2VfdW5pcXVlPGludD4oMykpKTsKKyAgRVhQRUNUX0VRKHMu
c2l6ZSgpLCA0KTsKKyAgRVhQRUNUX0VRKCpuaC52YWx1ZSgpLCAzKTsKKyAgcy5pbnNlcnQoc3Rk
Ojptb3ZlKG5oKSk7CisgIEVYUEVDVF9FUShzLnNpemUoKSwgNSk7Cit9CisKK1RFU1QoQnRyZWUs
IEV4dHJhY3RBbmRJbnNlcnROb2RlSGFuZGxlTXVsdGlTZXQpIHsKKyAgYWJzbDo6YnRyZWVfbXVs
dGlzZXQ8aW50PiBzcmMxID0gezEsIDIsIDMsIDMsIDQsIDV9OworICBhdXRvIG5oID0gc3JjMS5l
eHRyYWN0KHNyYzEuZmluZCgzKSk7CisgIEVYUEVDVF9USEFUKHNyYzEsIEVsZW1lbnRzQXJlKDEs
IDIsIDMsIDQsIDUpKTsKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBvdGhlcjsKKyAgYXV0
byByZXMgPSBvdGhlci5pbnNlcnQoc3RkOjptb3ZlKG5oKSk7CisgIEVYUEVDVF9USEFUKG90aGVy
LCBFbGVtZW50c0FyZSgzKSk7CisgIEVYUEVDVF9FUShyZXMsIG90aGVyLmZpbmQoMykpOworCisg
IGFic2w6OmJ0cmVlX211bHRpc2V0PGludD4gc3JjMiA9IHszLCA0fTsKKyAgbmggPSBzcmMyLmV4
dHJhY3Qoc3JjMi5maW5kKDMpKTsKKyAgRVhQRUNUX1RIQVQoc3JjMiwgRWxlbWVudHNBcmUoNCkp
OworICByZXMgPSBvdGhlci5pbnNlcnQoc3RkOjptb3ZlKG5oKSk7CisgIEVYUEVDVF9USEFUKG90
aGVyLCBFbGVtZW50c0FyZSgzLCAzKSk7CisgIEVYUEVDVF9FUShyZXMsICsrb3RoZXIuZmluZCgz
KSk7Cit9CisKK1RFU1QoQnRyZWUsIEV4dHJhY3RBbmRJbnNlcnROb2RlSGFuZGxlTWFwKSB7Cisg
IGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gc3JjMSA9IHt7MSwgMn0sIHszLCA0fSwgezUsIDZ9
fTsKKyAgYXV0byBuaCA9IHNyYzEuZXh0cmFjdChzcmMxLmZpbmQoMykpOworICBFWFBFQ1RfVEhB
VChzcmMxLCBFbGVtZW50c0FyZShQYWlyKDEsIDIpLCBQYWlyKDUsIDYpKSk7CisgIGFic2w6OmJ0
cmVlX21hcDxpbnQsIGludD4gb3RoZXI7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD46Omlu
c2VydF9yZXR1cm5fdHlwZSByZXMgPQorICAgICAgb3RoZXIuaW5zZXJ0KHN0ZDo6bW92ZShuaCkp
OworICBFWFBFQ1RfVEhBVChvdGhlciwgRWxlbWVudHNBcmUoUGFpcigzLCA0KSkpOworICBFWFBF
Q1RfRVEocmVzLnBvc2l0aW9uLCBvdGhlci5maW5kKDMpKTsKKyAgRVhQRUNUX1RSVUUocmVzLmlu
c2VydGVkKTsKKyAgRVhQRUNUX1RSVUUocmVzLm5vZGUuZW1wdHkoKSk7CisKKyAgYWJzbDo6YnRy
ZWVfbWFwPGludCwgaW50PiBzcmMyID0ge3szLCA2fX07CisgIG5oID0gc3JjMi5leHRyYWN0KHNy
YzIuZmluZCgzKSk7CisgIEVYUEVDVF9UUlVFKHNyYzIuZW1wdHkoKSk7CisgIHJlcyA9IG90aGVy
Lmluc2VydChzdGQ6Om1vdmUobmgpKTsKKyAgRVhQRUNUX1RIQVQob3RoZXIsIEVsZW1lbnRzQXJl
KFBhaXIoMywgNCkpKTsKKyAgRVhQRUNUX0VRKHJlcy5wb3NpdGlvbiwgb3RoZXIuZmluZCgzKSk7
CisgIEVYUEVDVF9GQUxTRShyZXMuaW5zZXJ0ZWQpOworICBBU1NFUlRfRkFMU0UocmVzLm5vZGUu
ZW1wdHkoKSk7CisgIEVYUEVDVF9FUShyZXMubm9kZS5rZXkoKSwgMyk7CisgIEVYUEVDVF9FUShy
ZXMubm9kZS5tYXBwZWQoKSwgNik7Cit9CisKK1RFU1QoQnRyZWUsIEV4dHJhY3RBbmRJbnNlcnRO
b2RlSGFuZGxlTXVsdGlNYXApIHsKKyAgYWJzbDo6YnRyZWVfbXVsdGltYXA8aW50LCBpbnQ+IHNy
YzEgPSB7ezEsIDJ9LCB7MywgNH0sIHs1LCA2fX07CisgIGF1dG8gbmggPSBzcmMxLmV4dHJhY3Qo
c3JjMS5maW5kKDMpKTsKKyAgRVhQRUNUX1RIQVQoc3JjMSwgRWxlbWVudHNBcmUoUGFpcigxLCAy
KSwgUGFpcig1LCA2KSkpOworICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIGludD4gb3RoZXI7
CisgIGF1dG8gcmVzID0gb3RoZXIuaW5zZXJ0KHN0ZDo6bW92ZShuaCkpOworICBFWFBFQ1RfVEhB
VChvdGhlciwgRWxlbWVudHNBcmUoUGFpcigzLCA0KSkpOworICBFWFBFQ1RfRVEocmVzLCBvdGhl
ci5maW5kKDMpKTsKKworICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIGludD4gc3JjMiA9IHt7
MywgNn19OworICBuaCA9IHNyYzIuZXh0cmFjdChzcmMyLmZpbmQoMykpOworICBFWFBFQ1RfVFJV
RShzcmMyLmVtcHR5KCkpOworICByZXMgPSBvdGhlci5pbnNlcnQoc3RkOjptb3ZlKG5oKSk7Cisg
IEVYUEVDVF9USEFUKG90aGVyLCBFbGVtZW50c0FyZShQYWlyKDMsIDQpLCBQYWlyKDMsIDYpKSk7
CisgIEVYUEVDVF9FUShyZXMsICsrb3RoZXIuYmVnaW4oKSk7Cit9CisKKy8vIEZvciBtdWx0aXNl
dHMsIGluc2VydCB3aXRoIGhpbnQgYWxzbyBhZmZlY3RzIGNvcnJlY3RuZXNzIGJlY2F1c2Ugd2Ug
bmVlZCB0bworLy8gaW5zZXJ0IGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgaGludCBpZiBwb3NzaWJs
ZS4KK3N0cnVjdCBJbnNlcnRNdWx0aUhpbnREYXRhIHsKKyAgaW50IGtleTsKKyAgaW50IG5vdF9r
ZXk7CisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnNlcnRNdWx0aUhpbnREYXRhIG90aGVyKSBj
b25zdCB7CisgICAgcmV0dXJuIGtleSA9PSBvdGhlci5rZXkgJiYgbm90X2tleSA9PSBvdGhlci5u
b3Rfa2V5OworICB9Cit9OworCitzdHJ1Y3QgSW5zZXJ0TXVsdGlIaW50RGF0YUtleUNvbXBhcmUg
eworICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7CisgIGJvb2wgb3BlcmF0b3IoKShjb25z
dCBJbnNlcnRNdWx0aUhpbnREYXRhIGEsCisgICAgICAgICAgICAgICAgICBjb25zdCBJbnNlcnRN
dWx0aUhpbnREYXRhIGIpIGNvbnN0IHsKKyAgICByZXR1cm4gYS5rZXkgPCBiLmtleTsKKyAgfQor
ICBib29sIG9wZXJhdG9yKCkoY29uc3QgaW50IGEsIGNvbnN0IEluc2VydE11bHRpSGludERhdGEg
YikgY29uc3QgeworICAgIHJldHVybiBhIDwgYi5rZXk7CisgIH0KKyAgYm9vbCBvcGVyYXRvcigp
KGNvbnN0IEluc2VydE11bHRpSGludERhdGEgYSwgY29uc3QgaW50IGIpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gYS5rZXkgPCBiOworICB9Cit9OworCitURVNUKEJ0cmVlLCBJbnNlcnRIaW50Tm9kZUhh
bmRsZSkgeworICAvLyBGb3IgdW5pcXVlIHNldHMsIGluc2VydCB3aXRoIGhpbnQgaXMganVzdCBh
IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KKyAgLy8gVGVzdCB0aGF0IGluc2VydCB3b3JrcyBj
b3JyZWN0bHkgd2hlbiB0aGUgaGludCBpcyByaWdodCBvciB3cm9uZy4KKyAgeworICAgIGFic2w6
OmJ0cmVlX3NldDxpbnQ+IHNyYyA9IHsxLCAyLCAzLCA0LCA1fTsKKyAgICBhdXRvIG5oID0gc3Jj
LmV4dHJhY3Qoc3JjLmZpbmQoMykpOworICAgIEVYUEVDVF9USEFUKHNyYywgRWxlbWVudHNBcmUo
MSwgMiwgNCwgNSkpOworICAgIGFic2w6OmJ0cmVlX3NldDxpbnQ+IG90aGVyID0gezAsIDEwMH07
CisgICAgLy8gVGVzdCBhIGNvcnJlY3QgaGludC4KKyAgICBhdXRvIGl0ID0gb3RoZXIuaW5zZXJ0
KG90aGVyLmxvd2VyX2JvdW5kKDMpLCBzdGQ6Om1vdmUobmgpKTsKKyAgICBFWFBFQ1RfVEhBVChv
dGhlciwgRWxlbWVudHNBcmUoMCwgMywgMTAwKSk7CisgICAgRVhQRUNUX0VRKGl0LCBvdGhlci5m
aW5kKDMpKTsKKworICAgIG5oID0gc3JjLmV4dHJhY3Qoc3JjLmZpbmQoNSkpOworICAgIC8vIFRl
c3QgYW4gaW5jb3JyZWN0IGhpbnQuCisgICAgaXQgPSBvdGhlci5pbnNlcnQob3RoZXIuZW5kKCks
IHN0ZDo6bW92ZShuaCkpOworICAgIEVYUEVDVF9USEFUKG90aGVyLCBFbGVtZW50c0FyZSgwLCAz
LCA1LCAxMDApKTsKKyAgICBFWFBFQ1RfRVEoaXQsIG90aGVyLmZpbmQoNSkpOworICB9CisKKyAg
YWJzbDo6YnRyZWVfbXVsdGlzZXQ8SW5zZXJ0TXVsdGlIaW50RGF0YSwgSW5zZXJ0TXVsdGlIaW50
RGF0YUtleUNvbXBhcmU+IHNyYyA9CisgICAgICB7ezEsIDJ9LCB7MywgNH0sIHszLCA1fX07Cisg
IGF1dG8gbmggPSBzcmMuZXh0cmFjdChzcmMubG93ZXJfYm91bmQoMykpOworICBFWFBFQ1RfRVEo
bmgudmFsdWUoKSwgKEluc2VydE11bHRpSGludERhdGF7MywgNH0pKTsKKyAgYWJzbDo6YnRyZWVf
bXVsdGlzZXQ8SW5zZXJ0TXVsdGlIaW50RGF0YSwgSW5zZXJ0TXVsdGlIaW50RGF0YUtleUNvbXBh
cmU+CisgICAgICBvdGhlciA9IHt7MywgMX0sIHszLCAyfSwgezMsIDN9fTsKKyAgYXV0byBpdCA9
IG90aGVyLmluc2VydCgtLW90aGVyLmVuZCgpLCBzdGQ6Om1vdmUobmgpKTsKKyAgRVhQRUNUX1RI
QVQoCisgICAgICBvdGhlciwgRWxlbWVudHNBcmUoSW5zZXJ0TXVsdGlIaW50RGF0YXszLCAxfSwg
SW5zZXJ0TXVsdGlIaW50RGF0YXszLCAyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnNl
cnRNdWx0aUhpbnREYXRhezMsIDR9LCBJbnNlcnRNdWx0aUhpbnREYXRhezMsIDN9KSk7CisgIEVY
UEVDVF9FUShpdCwgLS0oLS1vdGhlci5lbmQoKSkpOworCisgIG5oID0gc3JjLmV4dHJhY3Qoc3Jj
LmZpbmQoMykpOworICBFWFBFQ1RfRVEobmgudmFsdWUoKSwgKEluc2VydE11bHRpSGludERhdGF7
MywgNX0pKTsKKyAgaXQgPSBvdGhlci5pbnNlcnQob3RoZXIuYmVnaW4oKSwgc3RkOjptb3ZlKG5o
KSk7CisgIEVYUEVDVF9USEFUKG90aGVyLAorICAgICAgICAgICAgICBFbGVtZW50c0FyZShJbnNl
cnRNdWx0aUhpbnREYXRhezMsIDV9LCBJbnNlcnRNdWx0aUhpbnREYXRhezMsIDF9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNlcnRNdWx0aUhpbnREYXRhezMsIDJ9LCBJbnNlcnRNdWx0
aUhpbnREYXRhezMsIDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRNdWx0aUhp
bnREYXRhezMsIDN9KSk7CisgIEVYUEVDVF9FUShpdCwgb3RoZXIuYmVnaW4oKSk7Cit9CisKK3N0
cnVjdCBJbnRDb21wYXJlVG9DbXAgeworICBhYnNsOjp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yKCko
aW50IGEsIGludCBiKSBjb25zdCB7CisgICAgaWYgKGEgPCBiKSByZXR1cm4gYWJzbDo6d2Vha19v
cmRlcmluZzo6bGVzczsKKyAgICBpZiAoYSA+IGIpIHJldHVybiBhYnNsOjp3ZWFrX29yZGVyaW5n
OjpncmVhdGVyOworICAgIHJldHVybiBhYnNsOjp3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50Owor
ICB9Cit9OworCitURVNUKEJ0cmVlLCBNZXJnZUludG9VbmlxdWVDb250YWluZXJzKSB7CisgIGFi
c2w6OmJ0cmVlX3NldDxpbnQsIEludENvbXBhcmVUb0NtcD4gc3JjMSA9IHsxLCAyLCAzfTsKKyAg
YWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBzcmMyID0gezMsIDQsIDQsIDV9OworICBhYnNsOjpi
dHJlZV9zZXQ8aW50PiBkc3Q7CisKKyAgZHN0Lm1lcmdlKHNyYzEpOworICBFWFBFQ1RfVFJVRShz
cmMxLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChkc3QsIEVsZW1lbnRzQXJlKDEsIDIsIDMpKTsK
KyAgZHN0Lm1lcmdlKHNyYzIpOworICBFWFBFQ1RfVEhBVChzcmMyLCBFbGVtZW50c0FyZSgzLCA0
KSk7CisgIEVYUEVDVF9USEFUKGRzdCwgRWxlbWVudHNBcmUoMSwgMiwgMywgNCwgNSkpOworfQor
CitURVNUKEJ0cmVlLCBNZXJnZUludG9VbmlxdWVDb250YWluZXJzV2l0aENvbXBhcmVUbykgewor
ICBhYnNsOjpidHJlZV9zZXQ8aW50LCBJbnRDb21wYXJlVG9DbXA+IHNyYzEgPSB7MSwgMiwgM307
CisgIGFic2w6OmJ0cmVlX211bHRpc2V0PGludD4gc3JjMiA9IHszLCA0LCA0LCA1fTsKKyAgYWJz
bDo6YnRyZWVfc2V0PGludCwgSW50Q29tcGFyZVRvQ21wPiBkc3Q7CisKKyAgZHN0Lm1lcmdlKHNy
YzEpOworICBFWFBFQ1RfVFJVRShzcmMxLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChkc3QsIEVs
ZW1lbnRzQXJlKDEsIDIsIDMpKTsKKyAgZHN0Lm1lcmdlKHNyYzIpOworICBFWFBFQ1RfVEhBVChz
cmMyLCBFbGVtZW50c0FyZSgzLCA0KSk7CisgIEVYUEVDVF9USEFUKGRzdCwgRWxlbWVudHNBcmUo
MSwgMiwgMywgNCwgNSkpOworfQorCitURVNUKEJ0cmVlLCBNZXJnZUludG9NdWx0aUNvbnRhaW5l
cnMpIHsKKyAgYWJzbDo6YnRyZWVfc2V0PGludCwgSW50Q29tcGFyZVRvQ21wPiBzcmMxID0gezEs
IDIsIDN9OworICBhYnNsOjpidHJlZV9tdWx0aXNldDxpbnQ+IHNyYzIgPSB7MywgNCwgNCwgNX07
CisgIGFic2w6OmJ0cmVlX211bHRpc2V0PGludD4gZHN0OworCisgIGRzdC5tZXJnZShzcmMxKTsK
KyAgRVhQRUNUX1RSVUUoc3JjMS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoZHN0LCBFbGVtZW50
c0FyZSgxLCAyLCAzKSk7CisgIGRzdC5tZXJnZShzcmMyKTsKKyAgRVhQRUNUX1RSVUUoc3JjMi5l
bXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoZHN0LCBFbGVtZW50c0FyZSgxLCAyLCAzLCAzLCA0LCA0
LCA1KSk7Cit9CisKK1RFU1QoQnRyZWUsIE1lcmdlSW50b011bHRpQ29udGFpbmVyc1dpdGhDb21w
YXJlVG8pIHsKKyAgYWJzbDo6YnRyZWVfc2V0PGludCwgSW50Q29tcGFyZVRvQ21wPiBzcmMxID0g
ezEsIDIsIDN9OworICBhYnNsOjpidHJlZV9tdWx0aXNldDxpbnQ+IHNyYzIgPSB7MywgNCwgNCwg
NX07CisgIGFic2w6OmJ0cmVlX211bHRpc2V0PGludCwgSW50Q29tcGFyZVRvQ21wPiBkc3Q7CisK
KyAgZHN0Lm1lcmdlKHNyYzEpOworICBFWFBFQ1RfVFJVRShzcmMxLmVtcHR5KCkpOworICBFWFBF
Q1RfVEhBVChkc3QsIEVsZW1lbnRzQXJlKDEsIDIsIDMpKTsKKyAgZHN0Lm1lcmdlKHNyYzIpOwor
ICBFWFBFQ1RfVFJVRShzcmMyLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChkc3QsIEVsZW1lbnRz
QXJlKDEsIDIsIDMsIDMsIDQsIDQsIDUpKTsKK30KKworVEVTVChCdHJlZSwgTWVyZ2VJbnRvTXVs
dGlNYXBzV2l0aERpZmZlcmVudENvbXBhcmF0b3JzKSB7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQs
IGludCwgSW50Q29tcGFyZVRvQ21wPiBzcmMxID0ge3sxLCAxfSwgezIsIDJ9LCB7MywgM319Owor
ICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIGludCwgc3RkOjpncmVhdGVyPGludD4+IHNyYzIg
PSB7CisgICAgICB7NSwgNX0sIHs0LCAxfSwgezQsIDR9LCB7MywgMn19OworICBhYnNsOjpidHJl
ZV9tdWx0aW1hcDxpbnQsIGludD4gZHN0OworCisgIGRzdC5tZXJnZShzcmMxKTsKKyAgRVhQRUNU
X1RSVUUoc3JjMS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoZHN0LCBFbGVtZW50c0FyZShQYWly
KDEsIDEpLCBQYWlyKDIsIDIpLCBQYWlyKDMsIDMpKSk7CisgIGRzdC5tZXJnZShzcmMyKTsKKyAg
RVhQRUNUX1RSVUUoc3JjMi5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoZHN0LCBFbGVtZW50c0Fy
ZShQYWlyKDEsIDEpLCBQYWlyKDIsIDIpLCBQYWlyKDMsIDMpLCBQYWlyKDMsIDIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoNCwgMSksIFBhaXIoNCwgNCksIFBhaXIoNSwg
NSkpKTsKK30KKworc3RydWN0IEtleUNvbXBhcmVUb1dlYWtPcmRlcmluZyB7CisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICBhYnNsOjp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yKCkoY29uc3QgVCAm
YSwgY29uc3QgVCAmYikgY29uc3QgeworICAgIHJldHVybiBhIDwgYiA/IGFic2w6OndlYWtfb3Jk
ZXJpbmc6Omxlc3MKKyAgICAgICAgICAgICAgICAgOiBhID09IGIgPyBhYnNsOjp3ZWFrX29yZGVy
aW5nOjplcXVpdmFsZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgIDogYWJzbDo6d2Vha19v
cmRlcmluZzo6Z3JlYXRlcjsKKyAgfQorfTsKKworc3RydWN0IEtleUNvbXBhcmVUb1N0cm9uZ09y
ZGVyaW5nIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGFic2w6OnN0cm9uZ19vcmRlcmlu
ZyBvcGVyYXRvcigpKGNvbnN0IFQgJmEsIGNvbnN0IFQgJmIpIGNvbnN0IHsKKyAgICByZXR1cm4g
YSA8IGIgPyBhYnNsOjpzdHJvbmdfb3JkZXJpbmc6Omxlc3MKKyAgICAgICAgICAgICAgICAgOiBh
ID09IGIgPyBhYnNsOjpzdHJvbmdfb3JkZXJpbmc6OmVxdWFsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogYWJzbDo6c3Ryb25nX29yZGVyaW5nOjpncmVhdGVyOworICB9Cit9OworCitURVNU
KEJ0cmVlLCBVc2VyUHJvdmlkZWRLZXlDb21wYXJlVG9Db21wYXJhdG9ycykgeworICBhYnNsOjpi
dHJlZV9zZXQ8aW50LCBLZXlDb21wYXJlVG9XZWFrT3JkZXJpbmc+IHdlYWtfc2V0ID0gezEsIDIs
IDN9OworICBFWFBFQ1RfVFJVRSh3ZWFrX3NldC5jb250YWlucygyKSk7CisgIEVYUEVDVF9GQUxT
RSh3ZWFrX3NldC5jb250YWlucyg0KSk7CisKKyAgYWJzbDo6YnRyZWVfc2V0PGludCwgS2V5Q29t
cGFyZVRvU3Ryb25nT3JkZXJpbmc+IHN0cm9uZ19zZXQgPSB7MSwgMiwgM307CisgIEVYUEVDVF9U
UlVFKHN0cm9uZ19zZXQuY29udGFpbnMoMikpOworICBFWFBFQ1RfRkFMU0Uoc3Ryb25nX3NldC5j
b250YWlucyg0KSk7Cit9CisKK1RFU1QoQnRyZWUsIFRyeUVtcGxhY2VCYXNpY1Rlc3QpIHsKKyAg
YWJzbDo6YnRyZWVfbWFwPGludCwgc3RkOjpzdHJpbmc+IG07CisKKyAgLy8gU2hvdWxkIGNvbnN0
cnVjdCBhIHN0ZDo6c3RyaW5nIGZyb20gdGhlIGxpdGVyYWwuCisgIG0udHJ5X2VtcGxhY2UoMSwg
Im9uZSIpOworICBFWFBFQ1RfRVEoMSwgbS5zaXplKCkpOworCisgIC8vIFRyeSBvdGhlciBzdGQ6
OnN0cmluZyBjb25zdHJ1Y3RvcnMgYW5kIGNvbnN0IGx2YWx1ZSBrZXkuCisgIGNvbnN0IGludCBr
ZXkoNDIpOworICBtLnRyeV9lbXBsYWNlKGtleSwgMywgJ2EnKTsKKyAgbS50cnlfZW1wbGFjZSgy
LCBzdGQ6OnN0cmluZygidHdvIikpOworCisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfc29ydGVkKG0u
YmVnaW4oKSwgbS5lbmQoKSkpOworICBFWFBFQ1RfVEhBVChtLCBFbGVtZW50c0FyZUFycmF5KHN0
ZDo6dmVjdG9yPHN0ZDo6cGFpcjxpbnQsIHN0ZDo6c3RyaW5nPj57CisgICAgICAgICAgICAgICAg
ICAgICB7MSwgIm9uZSJ9LCB7MiwgInR3byJ9LCB7NDIsICJhYWEifX0pKTsKK30KKworVEVTVChC
dHJlZSwgVHJ5RW1wbGFjZVdpdGhIaW50V29ya3MpIHsKKyAgLy8gVXNlIGEgY291bnRpbmcgY29t
cGFyYXRvciBoZXJlIHRvIHZlcmlmeSB0aGF0IGhpbnQgaXMgdXNlZC4KKyAgaW50IGNhbGxzID0g
MDsKKyAgYXV0byBjbXAgPSBbJmNhbGxzXShpbnQgeCwgaW50IHkpIHsKKyAgICArK2NhbGxzOwor
ICAgIHJldHVybiB4IDwgeTsKKyAgfTsKKyAgdXNpbmcgQ21wID0gZGVjbHR5cGUoY21wKTsKKwor
ICBhYnNsOjpidHJlZV9tYXA8aW50LCBpbnQsIENtcD4gbShjbXApOworICBmb3IgKGludCBpID0g
MDsgaSA8IDEyODsgKytpKSB7CisgICAgbS5lbXBsYWNlKGksIGkpOworICB9CisKKyAgLy8gU2Fu
aXR5IGNoZWNrIGZvciB0aGUgY29tcGFyYXRvcgorICBjYWxscyA9IDA7CisgIG0uZW1wbGFjZSgx
MjcsIDEyNyk7CisgIEVYUEVDVF9HRShjYWxscywgNCk7CisKKyAgLy8gVHJ5IHdpdGggYmVnaW4g
aGludDoKKyAgY2FsbHMgPSAwOworICBhdXRvIGl0ID0gbS50cnlfZW1wbGFjZShtLmJlZ2luKCks
IC0xLCAtMSk7CisgIEVYUEVDVF9FUSgxMjksIG0uc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKGl0LCBt
LmJlZ2luKCkpOworICBFWFBFQ1RfTEUoY2FsbHMsIDIpOworCisgIC8vIFRyeSB3aXRoIGVuZCBo
aW50OgorICBjYWxscyA9IDA7CisgIHN0ZDo6cGFpcjxpbnQsIGludD4gcGFpcjEwMjQgPSB7MTAy
NCwgMTAyNH07CisgIGl0ID0gbS50cnlfZW1wbGFjZShtLmVuZCgpLCBwYWlyMTAyNC5maXJzdCwg
cGFpcjEwMjQuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKDEzMCwgbS5zaXplKCkpOworICBFWFBFQ1Rf
RVEoaXQsIC0tbS5lbmQoKSk7CisgIEVYUEVDVF9MRShjYWxscywgMik7CisKKyAgLy8gVHJ5IHZh
bHVlIGFscmVhZHkgcHJlc2VudCwgYmFkIGhpbnQ7IGVuc3VyZSBubyBkdXBsaWNhdGUgYWRkZWQ6
CisgIGNhbGxzID0gMDsKKyAgaXQgPSBtLnRyeV9lbXBsYWNlKG0uZW5kKCksIDE2LCAxNyk7Cisg
IEVYUEVDVF9FUSgxMzAsIG0uc2l6ZSgpKTsKKyAgRVhQRUNUX0dFKGNhbGxzLCA0KTsKKyAgRVhQ
RUNUX0VRKGl0LCBtLmZpbmQoMTYpKTsKKworICAvLyBUcnkgdmFsdWUgYWxyZWFkeSBwcmVzZW50
LCBoaW50IHBvaW50cyBkaXJlY3RseSB0byBpdDoKKyAgY2FsbHMgPSAwOworICBpdCA9IG0udHJ5
X2VtcGxhY2UoaXQsIDE2LCAxNyk7CisgIEVYUEVDVF9FUSgxMzAsIG0uc2l6ZSgpKTsKKyAgRVhQ
RUNUX0xFKGNhbGxzLCAyKTsKKyAgRVhQRUNUX0VRKGl0LCBtLmZpbmQoMTYpKTsKKworICBtLmVy
YXNlKDIpOworICBFWFBFQ1RfRVEoMTI5LCBtLnNpemUoKSk7CisgIGF1dG8gaGludCA9IG0uZmlu
ZCgzKTsKKyAgLy8gVHJ5IGVtcGxhY2UgaW4gdGhlIG1pZGRsZSBvZiB0d28gb3RoZXIgZWxlbWVu
dHMuCisgIGNhbGxzID0gMDsKKyAgbS50cnlfZW1wbGFjZShoaW50LCAyLCAyKTsKKyAgRVhQRUNU
X0VRKDEzMCwgbS5zaXplKCkpOworICBFWFBFQ1RfTEUoY2FsbHMsIDIpOworCisgIEVYUEVDVF9U
UlVFKHN0ZDo6aXNfc29ydGVkKG0uYmVnaW4oKSwgbS5lbmQoKSkpOworfQorCitURVNUKEJ0cmVl
LCBUcnlFbXBsYWNlV2l0aEJhZEhpbnQpIHsKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwgaW50PiBt
ID0ge3sxLCAxfSwgezksIDl9fTsKKworICAvLyBCYWQgaGludCAodG9vIHNtYWxsKSwgc2hvdWxk
IHN0aWxsIGVtcGxhY2U6CisgIGF1dG8gaXQgPSBtLnRyeV9lbXBsYWNlKG0uYmVnaW4oKSwgMiwg
Mik7CisgIEVYUEVDVF9FUShpdCwgKyttLmJlZ2luKCkpOworICBFWFBFQ1RfVEhBVChtLCBFbGVt
ZW50c0FyZUFycmF5KAorICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWly
PGludCwgaW50Pj57ezEsIDF9LCB7MiwgMn0sIHs5LCA5fX0pKTsKKworICAvLyBCYWQgaGludCwg
dG9vIGxhcmdlIHRoaXMgdGltZToKKyAgaXQgPSBtLnRyeV9lbXBsYWNlKCsrKCsrbS5iZWdpbigp
KSwgMCwgMCk7CisgIEVYUEVDVF9FUShpdCwgbS5iZWdpbigpKTsKKyAgRVhQRUNUX1RIQVQobSwg
RWxlbWVudHNBcmVBcnJheShzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+PnsKKyAgICAg
ICAgICAgICAgICAgICAgIHswLCAwfSwgezEsIDF9LCB7MiwgMn0sIHs5LCA5fX0pKTsKK30KKwor
VEVTVChCdHJlZSwgVHJ5RW1wbGFjZU1haW50YWluc1NvcnRlZE9yZGVyKSB7CisgIGFic2w6OmJ0
cmVlX21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtOworICBzdGQ6OnBhaXI8aW50LCBzdGQ6OnN0cmlu
Zz4gcGFpcjUgPSB7NSwgImZpdmUifTsKKworICAvLyBUZXN0IGJvdGggbHZhbHVlICYgcnZhbHVl
IGVtcGxhY2UuCisgIG0udHJ5X2VtcGxhY2UoMTAsICJ0ZW4iKTsKKyAgbS50cnlfZW1wbGFjZShw
YWlyNS5maXJzdCwgcGFpcjUuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKDIsIG0uc2l6ZSgpKTsKKyAg
RVhQRUNUX1RSVUUoc3RkOjppc19zb3J0ZWQobS5iZWdpbigpLCBtLmVuZCgpKSk7CisKKyAgaW50
IGludDEwMHsxMDB9OworICBtLnRyeV9lbXBsYWNlKGludDEwMCwgImh1bmRyZWQiKTsKKyAgbS50
cnlfZW1wbGFjZSgxLCAib25lIik7CisgIEVYUEVDVF9FUSg0LCBtLnNpemUoKSk7CisgIEVYUEVD
VF9UUlVFKHN0ZDo6aXNfc29ydGVkKG0uYmVnaW4oKSwgbS5lbmQoKSkpOworfQorCitURVNUKEJ0
cmVlLCBUcnlFbXBsYWNlV2l0aEhpbnRBbmROb1ZhbHVlQXJnc1dvcmtzKSB7CisgIGFic2w6OmJ0
cmVlX21hcDxpbnQsIGludD4gbTsKKyAgbS50cnlfZW1wbGFjZShtLmVuZCgpLCAxKTsKKyAgRVhQ
RUNUX0VRKDAsIG1bMV0pOworfQorCitURVNUKEJ0cmVlLCBUcnlFbXBsYWNlV2l0aEhpbnRBbmRN
dWx0aXBsZVZhbHVlQXJnc1dvcmtzKSB7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIHN0ZDo6c3Ry
aW5nPiBtOworICBtLnRyeV9lbXBsYWNlKG0uZW5kKCksIDEsIDEwLCAnYScpOworICBFWFBFQ1Rf
RVEoc3RkOjpzdHJpbmcoMTAsICdhJyksIG1bMV0pOworfQorCitURVNUKEJ0cmVlLCBNb3ZlQXNz
aWdubWVudEFsbG9jYXRvclByb3BhZ2F0aW9uKSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFja2Vy
OworCisgIGludDY0X3QgYnl0ZXMxID0gMCwgYnl0ZXMyID0gMDsKKyAgUHJvcGFnYXRpbmdDb3Vu
dGluZ0FsbG9jPE1vdmFibGVPbmx5SW5zdGFuY2U+IGFsbG9jYXRvcjEoJmJ5dGVzMSk7CisgIFBy
b3BhZ2F0aW5nQ291bnRpbmdBbGxvYzxNb3ZhYmxlT25seUluc3RhbmNlPiBhbGxvY2F0b3IyKCZi
eXRlczIpOworICBzdGQ6Omxlc3M8TW92YWJsZU9ubHlJbnN0YW5jZT4gY21wOworCisgIC8vIFRl
c3QgcHJvcGFnYXRpbmcgYWxsb2NhdG9yX3R5cGUuCisgIHsKKyAgICBhYnNsOjpidHJlZV9zZXQ8
TW92YWJsZU9ubHlJbnN0YW5jZSwgc3RkOjpsZXNzPE1vdmFibGVPbmx5SW5zdGFuY2U+LAorICAg
ICAgICAgICAgICAgICAgICBQcm9wYWdhdGluZ0NvdW50aW5nQWxsb2M8TW92YWJsZU9ubHlJbnN0
YW5jZT4+CisgICAgICAgIHNldDEoY21wLCBhbGxvY2F0b3IxKSwgc2V0MihjbXAsIGFsbG9jYXRv
cjIpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkgc2V0MS5pbnNlcnQoTW92
YWJsZU9ubHlJbnN0YW5jZShpKSk7CisKKyAgICB0cmFja2VyLlJlc2V0Q29waWVzTW92ZXNTd2Fw
cygpOworICAgIHNldDIgPSBzdGQ6Om1vdmUoc2V0MSk7CisgICAgRVhQRUNUX0VRKHRyYWNrZXIu
bW92ZXMoKSwgMCk7CisgIH0KKyAgLy8gVGVzdCBub24tcHJvcGFnYXRpbmcgYWxsb2NhdG9yX3R5
cGUgd2l0aCBlcXVhbCBhbGxvY2F0b3JzLgorICB7CisgICAgYWJzbDo6YnRyZWVfc2V0PE1vdmFi
bGVPbmx5SW5zdGFuY2UsIHN0ZDo6bGVzczxNb3ZhYmxlT25seUluc3RhbmNlPiwKKyAgICAgICAg
ICAgICAgICAgICAgQ291bnRpbmdBbGxvY2F0b3I8TW92YWJsZU9ubHlJbnN0YW5jZT4+CisgICAg
ICAgIHNldDEoY21wLCBhbGxvY2F0b3IxKSwgc2V0MihjbXAsIGFsbG9jYXRvcjEpOworCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkgc2V0MS5pbnNlcnQoTW92YWJsZU9ubHlJbnN0
YW5jZShpKSk7CisKKyAgICB0cmFja2VyLlJlc2V0Q29waWVzTW92ZXNTd2FwcygpOworICAgIHNl
dDIgPSBzdGQ6Om1vdmUoc2V0MSk7CisgICAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMCk7
CisgIH0KKyAgLy8gVGVzdCBub24tcHJvcGFnYXRpbmcgYWxsb2NhdG9yX3R5cGUgd2l0aCBkaWZm
ZXJlbnQgYWxsb2NhdG9ycy4KKyAgeworICAgIGFic2w6OmJ0cmVlX3NldDxNb3ZhYmxlT25seUlu
c3RhbmNlLCBzdGQ6Omxlc3M8TW92YWJsZU9ubHlJbnN0YW5jZT4sCisgICAgICAgICAgICAgICAg
ICAgIENvdW50aW5nQWxsb2NhdG9yPE1vdmFibGVPbmx5SW5zdGFuY2U+PgorICAgICAgICBzZXQx
KGNtcCwgYWxsb2NhdG9yMSksIHNldDIoY21wLCBhbGxvY2F0b3IyKTsKKworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgMTAwOyArK2kpIHNldDEuaW5zZXJ0KE1vdmFibGVPbmx5SW5zdGFuY2UoaSkp
OworCisgICAgdHJhY2tlci5SZXNldENvcGllc01vdmVzU3dhcHMoKTsKKyAgICBzZXQyID0gc3Rk
Ojptb3ZlKHNldDEpOworICAgIEVYUEVDVF9HRSh0cmFja2VyLm1vdmVzKCksIDEwMCk7CisgIH0K
K30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
Cit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVl
X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9idHJlZV90ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVlY2Y0M2NlZWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2J0cmVlX3Rlc3QuaApAQCAtMCwwICsxLDE1MyBAQAorLy8gQ29weXJpZ2h0
IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfQlRS
RUVfVEVTVF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9CVFJFRV9URVNUX0hfCisKKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxyYW5kb20+Cisj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPgor
CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvYnRyZWVfbWFwLmgiCisjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvYnRyZWVfc2V0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvZmxhdF9oYXNo
X3NldC5oIgorI2luY2x1ZGUgImFic2wvdGltZS90aW1lLmgiCisKK25hbWVzcGFjZSBhYnNsIHsK
K25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCisvLyBMaWtlIHJlbW92ZV9jb25zdCBi
dXQgcHJvcGFnYXRlcyB0aGUgcmVtb3ZhbCB0aHJvdWdoIHN0ZDo6cGFpci4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IHJlbW92ZV9wYWlyX2NvbnN0IHsKKyAgdXNpbmcgdHlwZSA9IHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgorc3RydWN0IHJlbW92ZV9wYWlyX2NvbnN0PHN0ZDo6cGFpcjxULCBV
PiA+IHsKKyAgdXNpbmcgdHlwZSA9IHN0ZDo6cGFpcjx0eXBlbmFtZSByZW1vdmVfcGFpcl9jb25z
dDxUPjo6dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcGFp
cl9jb25zdDxVPjo6dHlwZT47Cit9OworCisvLyBVdGlsaXR5IGNsYXNzIHRvIHByb3ZpZGUgYW4g
YWNjZXNzb3IgZm9yIGEga2V5IGdpdmVuIGEgdmFsdWUuIFRoZSBkZWZhdWx0CisvLyBiZWhhdmlv
ciBpcyB0byB0cmVhdCB0aGUgdmFsdWUgYXMgYSBwYWlyIGFuZCByZXR1cm4gdGhlIGZpcnN0IGVs
ZW1lbnQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KK3N0cnVjdCBLZXlPZlZh
bHVlIHsKKyAgc3RydWN0IHR5cGUgeworICAgIGNvbnN0IEsmIG9wZXJhdG9yKCkoY29uc3QgViYg
cCkgY29uc3QgeyByZXR1cm4gcC5maXJzdDsgfQorICB9OworfTsKKworLy8gUGFydGlhbCBzcGVj
aWFsaXphdGlvbiBvZiBLZXlPZlZhbHVlIGNsYXNzIGZvciB3aGVuIHRoZSBrZXkgYW5kIHZhbHVl
IGFyZQorLy8gdGhlIHNhbWUgdHlwZSBzdWNoIGFzIGluIHNldDw+IGFuZCBidHJlZV9zZXQ8Pi4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBLPgorc3RydWN0IEtleU9mVmFsdWU8SywgSz4geworICBzdHJ1
Y3QgdHlwZSB7CisgICAgY29uc3QgSyYgb3BlcmF0b3IoKShjb25zdCBLJiBrKSBjb25zdCB7IHJl
dHVybiBrOyB9CisgIH07Cit9OworCitpbmxpbmUgY2hhciogR2VuZXJhdGVEaWdpdHMoY2hhciBi
dWZbMTZdLCB1bnNpZ25lZCB2YWwsIHVuc2lnbmVkIG1heHZhbCkgeworICBhc3NlcnQodmFsIDw9
IG1heHZhbCk7CisgIGNvbnN0ZXhwciB1bnNpZ25lZCBrQmFzZSA9IDY0OyAgLy8gYXZvaWQgaW50
ZWdlciBkaXZpc2lvbi4KKyAgdW5zaWduZWQgcCA9IDE1OworICBidWZbcC0tXSA9IDA7CisgIHdo
aWxlIChtYXh2YWwgPiAwKSB7CisgICAgYnVmW3AtLV0gPSAnICcgKyAodmFsICUga0Jhc2UpOwor
ICAgIHZhbCAvPSBrQmFzZTsKKyAgICBtYXh2YWwgLz0ga0Jhc2U7CisgIH0KKyAgcmV0dXJuIGJ1
ZiArIHAgKyAxOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KK3N0cnVjdCBHZW5lcmF0b3Ig
eworICBpbnQgbWF4dmFsOworICBleHBsaWNpdCBHZW5lcmF0b3IoaW50IG0pIDogbWF4dmFsKG0p
IHt9CisgIEsgb3BlcmF0b3IoKShpbnQgaSkgY29uc3QgeworICAgIGFzc2VydChpIDw9IG1heHZh
bCk7CisgICAgcmV0dXJuIEsoaSk7CisgIH0KK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgR2Vu
ZXJhdG9yPGFic2w6OlRpbWU+IHsKKyAgaW50IG1heHZhbDsKKyAgZXhwbGljaXQgR2VuZXJhdG9y
KGludCBtKSA6IG1heHZhbChtKSB7fQorICBhYnNsOjpUaW1lIG9wZXJhdG9yKCkoaW50IGkpIGNv
bnN0IHsgcmV0dXJuIGFic2w6OkZyb21Vbml4TWlsbGlzKGkpOyB9Cit9OworCit0ZW1wbGF0ZSA8
Pgorc3RydWN0IEdlbmVyYXRvcjxzdGQ6OnN0cmluZz4geworICBpbnQgbWF4dmFsOworICBleHBs
aWNpdCBHZW5lcmF0b3IoaW50IG0pIDogbWF4dmFsKG0pIHt9CisgIHN0ZDo6c3RyaW5nIG9wZXJh
dG9yKCkoaW50IGkpIGNvbnN0IHsKKyAgICBjaGFyIGJ1ZlsxNl07CisgICAgcmV0dXJuIEdlbmVy
YXRlRGlnaXRzKGJ1ZiwgaSwgbWF4dmFsKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+CitzdHJ1Y3QgR2VuZXJhdG9yPHN0ZDo6cGFpcjxULCBVPiA+IHsKKyAg
R2VuZXJhdG9yPHR5cGVuYW1lIHJlbW92ZV9wYWlyX2NvbnN0PFQ+Ojp0eXBlPiB0Z2VuOworICBH
ZW5lcmF0b3I8dHlwZW5hbWUgcmVtb3ZlX3BhaXJfY29uc3Q8VT46OnR5cGU+IHVnZW47CisKKyAg
ZXhwbGljaXQgR2VuZXJhdG9yKGludCBtKSA6IHRnZW4obSksIHVnZW4obSkge30KKyAgc3RkOjpw
YWlyPFQsIFU+IG9wZXJhdG9yKCkoaW50IGkpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIodGdlbihpKSwgdWdlbihpKSk7CisgIH0KK307CisKKy8vIEdlbmVyYXRlIG4gdmFsdWVz
IGZvciBvdXIgdGVzdHMgYW5kIGJlbmNobWFya3MuIFZhbHVlIHJhbmdlIGlzIFswLCBtYXh2YWxd
LgoraW5saW5lIHN0ZDo6dmVjdG9yPGludD4gR2VuZXJhdGVOdW1iZXJzV2l0aFNlZWQoaW50IG4s
IGludCBtYXh2YWwsIGludCBzZWVkKSB7CisgIC8vIE5PVEU6IFNvbWUgdGVzdHMgcmVseSBvbiBn
ZW5lcmF0ZWQgbnVtYmVycyBub3QgY2hhbmdpbmcgYmV0d2VlbiB0ZXN0IHJ1bnMuCisgIC8vIFdl
IHVzZSBzdGQ6Om1pbnN0ZF9yYW5kMCBiZWNhdXNlIGl0IGlzIHdlbGwtZGVmaW5lZCwgYnV0IGRv
bid0IHVzZQorICAvLyBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiBiZWNhdXNlIHBsYXRm
b3JtcyB1c2UgZGlmZmVyZW50IGFsZ29yaXRobXMuCisgIHN0ZDo6bWluc3RkX3JhbmQwIHJuZyhz
ZWVkKTsKKworICBzdGQ6OnZlY3RvcjxpbnQ+IHZhbHVlczsKKyAgYWJzbDo6ZmxhdF9oYXNoX3Nl
dDxpbnQ+IHVuaXF1ZV92YWx1ZXM7CisgIGlmICh2YWx1ZXMuc2l6ZSgpIDwgbikgeworICAgIGZv
ciAoaW50IGkgPSB2YWx1ZXMuc2l6ZSgpOyBpIDwgbjsgaSsrKSB7CisgICAgICBpbnQgdmFsdWU7
CisgICAgICBkbyB7CisgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8aW50PihybmcoKSkgJSAo
bWF4dmFsICsgMSk7CisgICAgICB9IHdoaWxlICghdW5pcXVlX3ZhbHVlcy5pbnNlcnQodmFsdWUp
LnNlY29uZCk7CisKKyAgICAgIHZhbHVlcy5wdXNoX2JhY2sodmFsdWUpOworICAgIH0KKyAgfQor
ICByZXR1cm4gdmFsdWVzOworfQorCisvLyBHZW5lcmF0ZXMgbiB2YWx1ZXMgaW4gdGhlIHJhbmdl
IFswLCBtYXh2YWxdLgordGVtcGxhdGUgPHR5cGVuYW1lIFY+CitzdGQ6OnZlY3RvcjxWPiBHZW5l
cmF0ZVZhbHVlc1dpdGhTZWVkKGludCBuLCBpbnQgbWF4dmFsLCBpbnQgc2VlZCkgeworICBjb25z
dCBzdGQ6OnZlY3RvcjxpbnQ+IG51bXMgPSBHZW5lcmF0ZU51bWJlcnNXaXRoU2VlZChuLCBtYXh2
YWwsIHNlZWQpOworICBHZW5lcmF0b3I8Vj4gZ2VuKG1heHZhbCk7CisgIHN0ZDo6dmVjdG9yPFY+
IHZlYzsKKworICB2ZWMucmVzZXJ2ZShuKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKysp
IHsKKyAgICB2ZWMucHVzaF9iYWNrKGdlbihudW1zW2ldKSk7CisgIH0KKworICByZXR1cm4gdmVj
OworfQorCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0JUUkVFX1RFU1RfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2Zp
eGVkX2FycmF5LmgKaW5kZXggNmQ5ZmE1Zjc0NWQuLjYwZGEwNDg4YjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRf
YXJyYXkuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTg4
LDcgKzE4OCw3IEBAIGNsYXNzIEZpeGVkQXJyYXkgewogICAvLyBgRml4ZWRBcnJheTxUPmAuIFRo
aXMgaXMgZXF1aXZhbGVudCB0byB0aGUgbW9zdCBwb3NzaWJsZSBhZGRyZXNzYWJsZSBieXRlcwog
ICAvLyBvdmVyIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGFrZW4gYnkgVC4KICAgY29uc3RleHByIHNp
emVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0
czxkaWZmZXJlbmNlX3R5cGU+OjptYXgoKSAvIHNpemVvZih2YWx1ZV90eXBlKTsKKyAgICByZXR1
cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8ZGlmZmVyZW5jZV90eXBlPjo6bWF4KSgpIC8gc2l6ZW9m
KHZhbHVlX3R5cGUpOwogICB9CiAKICAgLy8gRml4ZWRBcnJheTo6ZW1wdHkoKQpAQCAtNTE1LDQg
KzUxNSw1IEBAIHZvaWQgRml4ZWRBcnJheTxULCBOLCBBPjo6Tm9uRW1wdHlJbmxpbmVkU3RvcmFn
ZTo6QW5ub3RhdGVEZXN0cnVjdCgKICAgc3RhdGljX2Nhc3Q8dm9pZD4obik7ICAvLyBNYXJrIHVz
ZWQgd2hlbiBub3QgaW4gYXNhbiBtb2RlCiB9CiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCiAjZW5k
aWYgIC8vIEFCU0xfQ09OVEFJTkVSX0ZJWEVEX0FSUkFZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvZml4ZWRfYXJyYXlfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVk
X2FycmF5X2JlbmNobWFyay5jYwppbmRleCBiNGYwY2YyYWViMC4uM2M3YTVhNzIzNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV9iZW5jaG1hcmsuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X2JlbmNobWFyay5jYwpAQCAtMSwxMCArMSwxMCBAQAot
Ly8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8gQ29weXJpZ2h0IDIwMTkg
VGhlIEFic2VpbCBBdXRob3JzLgogLy8KIC8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC0xMiwxMiArMTIsMTIgQEAKIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgogCi0jaW5jbHVkZSAiYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXku
aCIKLQogI2luY2x1ZGUgPHN0ZGRlZi5oPgorCiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVk
ZSAiYmVuY2htYXJrL2JlbmNobWFyay5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ZpeGVk
X2FycmF5LmgiCiAKIG5hbWVzcGFjZSB7CiAKQEAgLTI1LDggKzI1LDkgQEAgbmFtZXNwYWNlIHsK
IC8vIHNldCBhbiBpbnQgdG8gYSBjb25zdGFudC4uCiBjbGFzcyBTaW1wbGVDbGFzcyB7CiAgcHVi
bGljOgotICBTaW1wbGVDbGFzcygpIDogaSgzKSB7IH0KKyAgU2ltcGxlQ2xhc3MoKSA6IGkoMykg
e30KICAgflNpbXBsZUNsYXNzKCkgeyBpID0gMDsgfQorCiAgcHJpdmF0ZToKICAgaW50IGk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5
X3Rlc3QuY2MKaW5kZXggZGE2M2RiZmUzOGUuLjk5ODRhNWUyYWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvZml4ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKQEAgLTEs
MTAgKzEsMTAgQEAKLS8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vIENv
cHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KIC8vCiAvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApAQCAtMTQsMTAgKzE0LDkgQEAKIAogI2luY2x1ZGUgPGluaXRpYWxp
emVyX2xpc3Q+CiAKLSNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheS5oIgotCiAj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvZXhj
ZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvZml4ZWRf
YXJyYXkuaCIKIAogbmFtZXNwYWNlIGFic2wgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvZml4ZWRfYXJyYXlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV90ZXN0
LmNjCmluZGV4IDIwNWZmNDFmZTExLi4yYjFjZjQ3ZWFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ZpeGVkX2FycmF5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2Fy
cmF5X3Rlc3QuY2MKQEAgLTEsMTAgKzEsMTAgQEAKLS8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KIC8vCiAv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTUsNiArMTUsNyBAQAogI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5LmgiCiAKICNpbmNsdWRlIDxzdGRpby5o
PgorCiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPG1lbW9y
eT4KQEAgLTQyLDExICs0Myw3IEBAIHN0YXRpYyBib29sIElzT25TdGFjayhjb25zdCBBcnJheVR5
cGUmIGEpIHsKIAogY2xhc3MgQ29uc3RydWN0aW9uVGVzdGVyIHsKICBwdWJsaWM6Ci0gIENvbnN0
cnVjdGlvblRlc3RlcigpCi0gICAgICA6IHNlbGZfcHRyXyh0aGlzKSwKLSAgICAgICAgdmFsdWVf
KDApIHsKLSAgICBjb25zdHJ1Y3Rpb25zKys7Ci0gIH0KKyAgQ29uc3RydWN0aW9uVGVzdGVyKCkg
OiBzZWxmX3B0cl8odGhpcyksIHZhbHVlXygwKSB7IGNvbnN0cnVjdGlvbnMrKzsgfQogICB+Q29u
c3RydWN0aW9uVGVzdGVyKCkgewogICAgIGFzc2VydChzZWxmX3B0cl8gPT0gdGhpcyk7CiAgICAg
c2VsZl9wdHJfID0gbnVsbHB0cjsKQEAgLTU4LDkgKzU1LDcgQEAgY2xhc3MgQ29uc3RydWN0aW9u
VGVzdGVyIHsKICAgc3RhdGljIGludCBjb25zdHJ1Y3Rpb25zOwogICBzdGF0aWMgaW50IGRlc3Ry
dWN0aW9uczsKIAotICB2b2lkIENoZWNrQ29uc3RydWN0ZWQoKSB7Ci0gICAgYXNzZXJ0KHNlbGZf
cHRyXyA9PSB0aGlzKTsKLSAgfQorICB2b2lkIENoZWNrQ29uc3RydWN0ZWQoKSB7IGFzc2VydChz
ZWxmX3B0cl8gPT0gdGhpcyk7IH0KIAogICB2b2lkIHNldChpbnQgdmFsdWUpIHsgdmFsdWVfID0g
dmFsdWU7IH0KICAgaW50IGdldCgpIHsgcmV0dXJuIHZhbHVlXzsgfQpAQCAtMTUwLDcgKzE0NSw3
IEBAIFRFU1QoRml4ZWRBcnJheVRlc3QsIFNtYWxsT2JqZWN0cykgewogICB9CiAKICAgewotICAg
IC8vIEFycmF5cyBvZiA+IGRlZmF1bHQgc2l6ZSBzaG91bGQgYmUgb24gdGhlIHN0YWNrCisgICAg
Ly8gQXJyYXlzIG9mID4gZGVmYXVsdCBzaXplIHNob3VsZCBiZSBvbiB0aGUgaGVhcAogICAgIGFi
c2w6OkZpeGVkQXJyYXk8aW50LCAxMDA+IGFycmF5KDEwMSk7CiAgICAgRVhQRUNUX0ZBTFNFKElz
T25TdGFjayhhcnJheSkpOwogICB9CkBAIC0xNjAsMTMgKzE1NSwxMyBAQCBURVNUKEZpeGVkQXJy
YXlUZXN0LCBTbWFsbE9iamVjdHMpIHsKICAgICAvLyBzYW1lIGFtb3VudCBvZiBzdGFjayBzcGFj
ZQogICAgIGFic2w6OkZpeGVkQXJyYXk8aW50PiBhcnJheTEoMCk7CiAgICAgYWJzbDo6Rml4ZWRB
cnJheTxjaGFyPiBhcnJheTIoMCk7Ci0gICAgRVhQRUNUX0xFKHNpemVvZihhcnJheTEpLCBzaXpl
b2YoYXJyYXkyKSsxMDApOwotICAgIEVYUEVDVF9MRShzaXplb2YoYXJyYXkyKSwgc2l6ZW9mKGFy
cmF5MSkrMTAwKTsKKyAgICBFWFBFQ1RfTEUoc2l6ZW9mKGFycmF5MSksIHNpemVvZihhcnJheTIp
ICsgMTAwKTsKKyAgICBFWFBFQ1RfTEUoc2l6ZW9mKGFycmF5MiksIHNpemVvZihhcnJheTEpICsg
MTAwKTsKICAgfQogCiAgIHsKICAgICAvLyBFbnN1cmUgdGhhdCB2ZWN0b3JzIGFyZSBwcm9wZXJs
eSBjb25zdHJ1Y3RlZCBpbnNpZGUgYSBmaXhlZCBhcnJheS4KLSAgICBhYnNsOjpGaXhlZEFycmF5
PHN0ZDo6dmVjdG9yPGludD4gPiBhcnJheSgyKTsKKyAgICBhYnNsOjpGaXhlZEFycmF5PHN0ZDo6
dmVjdG9yPGludD4+IGFycmF5KDIpOwogICAgIEVYUEVDVF9FUSgwLCBhcnJheVswXS5zaXplKCkp
OwogICAgIEVYUEVDVF9FUSgwLCBhcnJheVsxXS5zaXplKCkpOwogICB9CkBAIC0yNzAsOCArMjY1
LDggQEAgc3RhdGljIHZvaWQgVGVzdEFycmF5KGludCBuKSB7CiAgICAgICBhcnJheS5kYXRhKClb
aV0uc2V0KGkgKyAxKTsKICAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsK
LSAgICAgIEVYUEVDVF9USEFUKGFycmF5W2ldLmdldCgpLCBpKzEpOwotICAgICAgRVhQRUNUX1RI
QVQoYXJyYXkuZGF0YSgpW2ldLmdldCgpLCBpKzEpOworICAgICAgRVhQRUNUX1RIQVQoYXJyYXlb
aV0uZ2V0KCksIGkgKyAxKTsKKyAgICAgIEVYUEVDVF9USEFUKGFycmF5LmRhdGEoKVtpXS5nZXQo
KSwgaSArIDEpOwogICAgIH0KICAgfSAgLy8gQ2xvc2Ugc2NvcGUgY29udGFpbmluZyAnYXJyYXkn
LgogCkBAIC0yOTYsNyArMjkxLDcgQEAgc3RhdGljIHZvaWQgVGVzdEFycmF5T2ZBcnJheXMoaW50
IG4pIHsKIAogICAgIEFTU0VSVF9FUShhcnJheS5zaXplKCksIG4pOwogICAgIEFTU0VSVF9FUShh
cnJheS5tZW1zaXplKCksCi0gICAgICAgICAgICAgc2l6ZW9mKENvbnN0cnVjdGlvblRlc3Rlcikg
KiBlbGVtZW50c19wZXJfaW5uZXJfYXJyYXkgKiBuKTsKKyAgICAgICAgICAgICAgc2l6ZW9mKENv
bnN0cnVjdGlvblRlc3RlcikgKiBlbGVtZW50c19wZXJfaW5uZXJfYXJyYXkgKiBuKTsKICAgICBB
U1NFUlRfRVEoYXJyYXkuYmVnaW4oKSArIG4sIGFycmF5LmVuZCgpKTsKIAogICAgIC8vIENoZWNr
IHRoYXQgYWxsIGVsZW1lbnRzIHdlcmUgY29uc3RydWN0ZWQKQEAgLTMxNiw3ICszMTEsNyBAQCBz
dGF0aWMgdm9pZCBUZXN0QXJyYXlPZkFycmF5cyhpbnQgbikgewogICAgIH0KICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBlbGVtZW50
c19wZXJfaW5uZXJfYXJyYXk7IGorKykgewotICAgICAgICBBU1NFUlRfRVEoKGFycmF5W2ldKVtq
XS5nZXQoKSwgIGkgKiBlbGVtZW50c19wZXJfaW5uZXJfYXJyYXkgKyBqKTsKKyAgICAgICAgQVNT
RVJUX0VRKChhcnJheVtpXSlbal0uZ2V0KCksIGkgKiBlbGVtZW50c19wZXJfaW5uZXJfYXJyYXkg
KyBqKTsKICAgICAgICAgQVNTRVJUX0VRKChhcnJheS5kYXRhKClbaV0pW2pdLmdldCgpLCBpICog
ZWxlbWVudHNfcGVyX2lubmVyX2FycmF5ICsgaik7CiAgICAgICB9CiAgICAgfQpAQCAtMzI5LDgg
KzMyNCw3IEBAIHN0YXRpYyB2b2lkIFRlc3RBcnJheU9mQXJyYXlzKGludCBuKSB7CiAgICAgfQog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICBmb3IgKGludCBqID0gMDsg
aiA8IGVsZW1lbnRzX3Blcl9pbm5lcl9hcnJheTsgaisrKSB7Ci0gICAgICAgIEFTU0VSVF9FUSgo
YXJyYXlbaV0pW2pdLmdldCgpLAotICAgICAgICAgICAgICAgICAgKGkgKyAxKSAqIGVsZW1lbnRz
X3Blcl9pbm5lcl9hcnJheSArIGopOworICAgICAgICBBU1NFUlRfRVEoKGFycmF5W2ldKVtqXS5n
ZXQoKSwgKGkgKyAxKSAqIGVsZW1lbnRzX3Blcl9pbm5lcl9hcnJheSArIGopOwogICAgICAgICBB
U1NFUlRfRVEoKGFycmF5LmRhdGEoKVtpXSlbal0uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAo
aSArIDEpICogZWxlbWVudHNfcGVyX2lubmVyX2FycmF5ICsgaik7CiAgICAgICB9CkBAIC0zNDMs
NyArMzM3LDcgQEAgc3RhdGljIHZvaWQgVGVzdEFycmF5T2ZBcnJheXMoaW50IG4pIHsKIH0KIAog
VEVTVChJdGVyYXRvckNvbnN0cnVjdG9yVGVzdCwgTm9uSW5saW5lKSB7Ci0gIGludCBjb25zdCBr
SW5wdXRbXSA9IHsgMiwgMywgNSwgNywgMTEsIDEzLCAxNyB9OworICBpbnQgY29uc3Qga0lucHV0
W10gPSB7MiwgMywgNSwgNywgMTEsIDEzLCAxN307CiAgIGFic2w6OkZpeGVkQXJyYXk8aW50LCBB
QlNMX0FSUkFZU0laRShrSW5wdXQpIC0gMT4gY29uc3QgZml4ZWQoCiAgICAgICBrSW5wdXQsIGtJ
bnB1dCArIEFCU0xfQVJSQVlTSVpFKGtJbnB1dCkpOwogICBBU1NFUlRfRVEoQUJTTF9BUlJBWVNJ
WkUoa0lucHV0KSwgZml4ZWQuc2l6ZSgpKTsKQEAgLTM1Myw3ICszNDcsNyBAQCBURVNUKEl0ZXJh
dG9yQ29uc3RydWN0b3JUZXN0LCBOb25JbmxpbmUpIHsKIH0KIAogVEVTVChJdGVyYXRvckNvbnN0
cnVjdG9yVGVzdCwgSW5saW5lKSB7Ci0gIGludCBjb25zdCBrSW5wdXRbXSA9IHsgMiwgMywgNSwg
NywgMTEsIDEzLCAxNyB9OworICBpbnQgY29uc3Qga0lucHV0W10gPSB7MiwgMywgNSwgNywgMTEs
IDEzLCAxN307CiAgIGFic2w6OkZpeGVkQXJyYXk8aW50LCBBQlNMX0FSUkFZU0laRShrSW5wdXQp
PiBjb25zdCBmaXhlZCgKICAgICAgIGtJbnB1dCwga0lucHV0ICsgQUJTTF9BUlJBWVNJWkUoa0lu
cHV0KSk7CiAgIEFTU0VSVF9FUShBQlNMX0FSUkFZU0laRShrSW5wdXQpLCBmaXhlZC5zaXplKCkp
OwpAQCAtMzYzLDkgKzM1NywxMCBAQCBURVNUKEl0ZXJhdG9yQ29uc3RydWN0b3JUZXN0LCBJbmxp
bmUpIHsKIH0KIAogVEVTVChJdGVyYXRvckNvbnN0cnVjdG9yVGVzdCwgTm9uUG9kKSB7Ci0gIGNo
YXIgY29uc3QqIGtJbnB1dFtdID0KLSAgICAgIHsgInJlZCIsICJvcmFuZ2UiLCAieWVsbG93Iiwg
ImdyZWVuIiwgImJsdWUiLCAiaW5kaWdvIiwgInZpb2xldCIgfTsKLSAgYWJzbDo6Rml4ZWRBcnJh
eTxzdGQ6OnN0cmluZz4gY29uc3QgZml4ZWQoa0lucHV0LCBrSW5wdXQgKyBBQlNMX0FSUkFZU0la
RShrSW5wdXQpKTsKKyAgY2hhciBjb25zdCoga0lucHV0W10gPSB7InJlZCIsICAib3JhbmdlIiwg
InllbGxvdyIsICJncmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJibHVlIiwgImlu
ZGlnbyIsICJ2aW9sZXQifTsKKyAgYWJzbDo6Rml4ZWRBcnJheTxzdGQ6OnN0cmluZz4gY29uc3Qg
Zml4ZWQoa0lucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrSW5wdXQgKyBBQlNMX0FSUkFZU0laRShrSW5wdXQpKTsKICAgQVNTRVJUX0VRKEFCU0xfQVJS
QVlTSVpFKGtJbnB1dCksIGZpeGVkLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
QUJTTF9BUlJBWVNJWkUoa0lucHV0KTsgKytpKSB7CiAgICAgQVNTRVJUX0VRKGtJbnB1dFtpXSwg
Zml4ZWRbaV0pOwpAQCAtMzgwLDcgKzM3NSw3IEBAIFRFU1QoSXRlcmF0b3JDb25zdHJ1Y3RvclRl
c3QsIEZyb21FbXB0eVZlY3RvcikgewogfQogCiBURVNUKEl0ZXJhdG9yQ29uc3RydWN0b3JUZXN0
LCBGcm9tTm9uRW1wdHlWZWN0b3IpIHsKLSAgaW50IGNvbnN0IGtJbnB1dFtdID0geyAyLCAzLCA1
LCA3LCAxMSwgMTMsIDE3IH07CisgIGludCBjb25zdCBrSW5wdXRbXSA9IHsyLCAzLCA1LCA3LCAx
MSwgMTMsIDE3fTsKICAgc3RkOjp2ZWN0b3I8aW50PiBjb25zdCBpdGVtcyhrSW5wdXQsIGtJbnB1
dCArIEFCU0xfQVJSQVlTSVpFKGtJbnB1dCkpOwogICBhYnNsOjpGaXhlZEFycmF5PGludD4gY29u
c3QgZml4ZWQoaXRlbXMuYmVnaW4oKSwgaXRlbXMuZW5kKCkpOwogICBBU1NFUlRfRVEoaXRlbXMu
c2l6ZSgpLCBmaXhlZC5zaXplKCkpOwpAQCAtMzkwLDcgKzM4NSw3IEBAIFRFU1QoSXRlcmF0b3JD
b25zdHJ1Y3RvclRlc3QsIEZyb21Ob25FbXB0eVZlY3RvcikgewogfQogCiBURVNUKEl0ZXJhdG9y
Q29uc3RydWN0b3JUZXN0LCBGcm9tQmlkaXJlY3Rpb25hbEl0ZXJhdG9yUmFuZ2UpIHsKLSAgaW50
IGNvbnN0IGtJbnB1dFtdID0geyAyLCAzLCA1LCA3LCAxMSwgMTMsIDE3IH07CisgIGludCBjb25z
dCBrSW5wdXRbXSA9IHsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3fTsKICAgc3RkOjpsaXN0PGludD4g
Y29uc3QgaXRlbXMoa0lucHV0LCBrSW5wdXQgKyBBQlNMX0FSUkFZU0laRShrSW5wdXQpKTsKICAg
YWJzbDo6Rml4ZWRBcnJheTxpbnQ+IGNvbnN0IGZpeGVkKGl0ZW1zLmJlZ2luKCksIGl0ZW1zLmVu
ZCgpKTsKICAgRVhQRUNUX1RIQVQoZml4ZWQsIHRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXkoa0lu
cHV0KSk7CkBAIC01MDcsOSArNTAyLDggQEAgc3RydWN0IFBpY2t5RGVsZXRlIHsKIAogVEVTVChG
aXhlZEFycmF5VGVzdCwgVXNlc0dsb2JhbEFsbG9jKSB7IGFic2w6OkZpeGVkQXJyYXk8UGlja3lE
ZWxldGUsIDA+IGEoNSk7IH0KIAotCiBURVNUKEZpeGVkQXJyYXlUZXN0LCBEYXRhKSB7Ci0gIHN0
YXRpYyBjb25zdCBpbnQga0lucHV0W10gPSB7IDIsIDMsIDUsIDcsIDExLCAxMywgMTcgfTsKKyAg
c3RhdGljIGNvbnN0IGludCBrSW5wdXRbXSA9IHsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3fTsKICAg
YWJzbDo6Rml4ZWRBcnJheTxpbnQ+IGZhKHN0ZDo6YmVnaW4oa0lucHV0KSwgc3RkOjplbmQoa0lu
cHV0KSk7CiAgIEVYUEVDVF9FUShmYS5kYXRhKCksICYqZmEuYmVnaW4oKSk7CiAgIEVYUEVDVF9F
UShmYS5kYXRhKCksICZmYVswXSk7CkBAIC04MjMsNyArODE3LDcgQEAgVEVTVChBbGxvY2F0b3JT
dXBwb3J0VGVzdCwgU2l6ZVZhbEFsbG9jQ29uc3RydWN0b3IpIHsKICNpZmRlZiBBRERSRVNTX1NB
TklUSVpFUgogVEVTVChGaXhlZEFycmF5VGVzdCwgQWRkcmVzc1Nhbml0aXplckFubm90YXRpb25z
MSkgewogICBhYnNsOjpGaXhlZEFycmF5PGludCwgMzI+IGEoMTApOwotICBpbnQgKnJhdyA9IGEu
ZGF0YSgpOworICBpbnQqIHJhdyA9IGEuZGF0YSgpOwogICByYXdbMF0gPSAwOwogICByYXdbOV0g
PSAwOwogICBFWFBFQ1RfREVBVEgocmF3Wy0yXSA9IDAsICJjb250YWluZXItb3ZlcmZsb3ciKTsK
QEAgLTgzNCw3ICs4MjgsNyBAQCBURVNUKEZpeGVkQXJyYXlUZXN0LCBBZGRyZXNzU2FuaXRpemVy
QW5ub3RhdGlvbnMxKSB7CiAKIFRFU1QoRml4ZWRBcnJheVRlc3QsIEFkZHJlc3NTYW5pdGl6ZXJB
bm5vdGF0aW9uczIpIHsKICAgYWJzbDo6Rml4ZWRBcnJheTxjaGFyLCAxNz4gYSgxMik7Ci0gIGNo
YXIgKnJhdyA9IGEuZGF0YSgpOworICBjaGFyKiByYXcgPSBhLmRhdGEoKTsKICAgcmF3WzBdID0g
MDsKICAgcmF3WzExXSA9IDA7CiAgIEVYUEVDVF9ERUFUSChyYXdbLTddID0gMCwgImNvbnRhaW5l
ci1vdmVyZmxvdyIpOwpAQCAtODQ1LDcgKzgzOSw3IEBAIFRFU1QoRml4ZWRBcnJheVRlc3QsIEFk
ZHJlc3NTYW5pdGl6ZXJBbm5vdGF0aW9uczIpIHsKIAogVEVTVChGaXhlZEFycmF5VGVzdCwgQWRk
cmVzc1Nhbml0aXplckFubm90YXRpb25zMykgewogICBhYnNsOjpGaXhlZEFycmF5PHVpbnQ2NF90
LCAyMD4gYSgyMCk7Ci0gIHVpbnQ2NF90ICpyYXcgPSBhLmRhdGEoKTsKKyAgdWludDY0X3QqIHJh
dyA9IGEuZGF0YSgpOwogICByYXdbMF0gPSAwOwogICByYXdbMTldID0gMDsKICAgRVhQRUNUX0RF
QVRIKHJhd1stMV0gPSAwLCAiY29udGFpbmVyLW92ZXJmbG93Iik7CkBAIC04NTQsNyArODQ4LDcg
QEAgVEVTVChGaXhlZEFycmF5VGVzdCwgQWRkcmVzc1Nhbml0aXplckFubm90YXRpb25zMykgewog
CiBURVNUKEZpeGVkQXJyYXlUZXN0LCBBZGRyZXNzU2FuaXRpemVyQW5ub3RhdGlvbnM0KSB7CiAg
IGFic2w6OkZpeGVkQXJyYXk8VGhyZWVJbnRzPiBhKDEwKTsKLSAgVGhyZWVJbnRzICpyYXcgPSBh
LmRhdGEoKTsKKyAgVGhyZWVJbnRzKiByYXcgPSBhLmRhdGEoKTsKICAgcmF3WzBdID0gVGhyZWVJ
bnRzKCk7CiAgIHJhd1s5XSA9IFRocmVlSW50cygpOwogICAvLyBOb3RlOiByYXdbLTFdIGlzIHBv
aW50aW5nIHRvIDEyIGJ5dGVzIGJlZm9yZSB0aGUgY29udGFpbmVyIHJhbmdlLiBIb3dldmVyLApA
QCAtODY5LDQgKzg2MywyMSBAQCBURVNUKEZpeGVkQXJyYXlUZXN0LCBBZGRyZXNzU2FuaXRpemVy
QW5ub3RhdGlvbnM0KSB7CiB9CiAjZW5kaWYgIC8vIEFERFJFU1NfU0FOSVRJWkVSCiAKK1RFU1Qo
Rml4ZWRBcnJheVRlc3QsIEFic2xIYXNoVmFsdWVXb3JrcykgeworICB1c2luZyBWID0gYWJzbDo6
Rml4ZWRBcnJheTxpbnQ+OworICBzdGQ6OnZlY3RvcjxWPiBjYXNlczsKKworICAvLyBHZW5lcmF0
ZSBhIHZhcmlldHkgb2YgdmVjdG9ycyBzb21lIG9mIHRoZXNlIGFyZSBzbWFsbCBlbm91Z2ggZm9y
IHRoZSBpbmxpbmUKKyAgLy8gc3BhY2UgYnV0IGFyZSBzdG9yZWQgb3V0IG9mIGxpbmUuCisgIGZv
ciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgIFYgdihpKTsKKyAgICBmb3IgKGludCBq
ID0gMDsgaiA8IGk7ICsraikgeworICAgICAgdltqXSA9IGo7CisgICAgfQorICAgIGNhc2VzLnB1
c2hfYmFjayh2KTsKKyAgfQorCisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1l
bnRzQWJzbEhhc2hDb3JyZWN0bHkoY2FzZXMpKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ZsYXRfaGFzaF9tYXAuaAppbmRleCBlNTU3MGQxMDA0NC4uMGJjNTAxYjExNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfbWFwLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ZsYXRfaGFzaF9tYXAuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0
aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL2FsZ29yaXRobS9jb250YWluZXIuaCIKICNpbmNsdWRl
ICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiCiAjaW5jbHVkZSAi
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAgLy8gSVdZ
VSBwcmFnbWE6IGV4cG9ydAogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19o
YXNoX21hcC5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydApAQCAtNjksMTQgKzcwLDE0IEBAIHN0
cnVjdCBGbGF0SGFzaE1hcFBvbGljeTsKIC8vIEJ5IGRlZmF1bHQsIGBmbGF0X2hhc2hfbWFwYCB1
c2VzIHRoZSBgYWJzbDo6SGFzaGAgaGFzaGluZyBmcmFtZXdvcmsuCiAvLyBBbGwgZnVuZGFtZW50
YWwgYW5kIEFic2VpbCB0eXBlcyB0aGF0IHN1cHBvcnQgdGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdv
cmsgaGF2ZQogLy8gYSBjb21wYXRpYmxlIGVxdWFsaXR5IG9wZXJhdG9yIGZvciBjb21wYXJpbmcg
aW5zZXJ0aW9ucyBpbnRvIGBmbGF0X2hhc2hfbWFwYC4KLS8vIElmIHlvdXIgdHlwZSBpcyBub3Qg
eWV0IHN1cHBvcnRlZCBieSB0aGUgYGFzYmw6Okhhc2hgIGZyYW1ld29yaywgc2VlCisvLyBJZiB5
b3VyIHR5cGUgaXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdv
cmssIHNlZQogLy8gYWJzbC9oYXNoL2hhc2guaCBmb3IgaW5mb3JtYXRpb24gb24gZXh0ZW5kaW5n
IEFic2VpbCBoYXNoaW5nIHRvIHVzZXItZGVmaW5lZAogLy8gdHlwZXMuCiAvLwogLy8gTk9URTog
QSBgZmxhdF9oYXNoX21hcGAgc3RvcmVzIGl0cyB2YWx1ZSB0eXBlcyBkaXJlY3RseSBpbnNpZGUg
aXRzCiAvLyBpbXBsZW1lbnRhdGlvbiBhcnJheSB0byBhdm9pZCBtZW1vcnkgaW5kaXJlY3Rpb24u
IEJlY2F1c2UgYSBgZmxhdF9oYXNoX21hcGAKIC8vIGlzIGRlc2lnbmVkIHRvIG1vdmUgZGF0YSB3
aGVuIHJlaGFzaGVkLCBtYXAgdmFsdWVzIHdpbGwgbm90IHJldGFpbiBwb2ludGVyCi0vLyBzdGFi
aWxpdHkuIElmIHlvdSByZXF1aXJlIHBvaW50ZXIgc3RhYmlsaXR5LCBvciB5b3VyIHZhbHVlcyBh
cmUgbGFyZ2UsCisvLyBzdGFiaWxpdHkuIElmIHlvdSByZXF1aXJlIHBvaW50ZXIgc3RhYmlsaXR5
LCBvciBpZiB5b3VyIHZhbHVlcyBhcmUgbGFyZ2UsCiAvLyBjb25zaWRlciB1c2luZyBgYWJzbDo6
ZmxhdF9oYXNoX21hcDxLZXksIHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZT4+YCBpbnN0ZWFkLgogLy8g
SWYgeW91ciB0eXBlcyBhcmUgbm90IG1vdmVhYmxlIG9yIHlvdSByZXF1aXJlIHBvaW50ZXIgc3Rh
YmlsaXR5IGZvciBrZXlzLAogLy8gY29uc2lkZXIgYGFic2w6Om5vZGVfaGFzaF9tYXBgLgpAQCAt
MTA5LDYgKzExMCw0NiBAQCBjbGFzcyBmbGF0X2hhc2hfbWFwIDogcHVibGljIGFic2w6OmNvbnRh
aW5lcl9pbnRlcm5hbDo6cmF3X2hhc2hfbWFwPAogICB1c2luZyBCYXNlID0gdHlwZW5hbWUgZmxh
dF9oYXNoX21hcDo6cmF3X2hhc2hfbWFwOwogCiAgcHVibGljOgorICAvLyBDb25zdHJ1Y3RvcnMg
YW5kIEFzc2lnbm1lbnQgT3BlcmF0b3JzCisgIC8vCisgIC8vIEEgZmxhdF9oYXNoX21hcCBzdXBw
b3J0cyB0aGUgc2FtZSBvdmVybG9hZCBzZXQgYXMgYHN0ZDo6dW5vcmRlcmVkX21hcGAKKyAgLy8g
Zm9yIGNvbnN0cnVjdGlvbiBhbmQgYXNzaWdubWVudDoKKyAgLy8KKyAgLy8gKiAgRGVmYXVsdCBj
b25zdHJ1Y3RvcgorICAvLworICAvLyAgICAvLyBObyBhbGxvY2F0aW9uIGZvciB0aGUgdGFibGUn
cyBlbGVtZW50cyBpcyBtYWRlLgorICAvLyAgICBhYnNsOjpmbGF0X2hhc2hfbWFwPGludCwgc3Rk
OjpzdHJpbmc+IG1hcDE7CisgIC8vCisgIC8vICogSW5pdGlhbGl6ZXIgTGlzdCBjb25zdHJ1Y3Rv
cgorICAvLworICAvLyAgIGFic2w6OmZsYXRfaGFzaF9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFw
MiA9CisgIC8vICAgICAgIHt7MSwgImh1ZXkifSwgezIsICJkZXdleSJ9LCB7MywgImxvdWllIn0s
fTsKKyAgLy8KKyAgLy8gKiBDb3B5IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6Zmxh
dF9oYXNoX21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXAzKG1hcDIpOworICAvLworICAvLyAqIENv
cHkgYXNzaWdubWVudCBvcGVyYXRvcgorICAvLworICAvLyAgLy8gSGFzaCBmdW5jdG9yIGFuZCBD
b21wYXJhdG9yIGFyZSBjb3BpZWQgYXMgd2VsbAorICAvLyAgYWJzbDo6ZmxhdF9oYXNoX21hcDxp
bnQsIHN0ZDo6c3RyaW5nPiBtYXA0OworICAvLyAgbWFwNCA9IG1hcDM7CisgIC8vCisgIC8vICog
TW92ZSBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIC8vIE1vdmUgaXMgZ3VhcmFudGVlZCBlZmZp
Y2llbnQKKyAgLy8gICBhYnNsOjpmbGF0X2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDUo
c3RkOjptb3ZlKG1hcDQpKTsKKyAgLy8KKyAgLy8gKiBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IK
KyAgLy8KKyAgLy8gICAvLyBNYXkgYmUgZWZmaWNpZW50IGlmIGFsbG9jYXRvcnMgYXJlIGNvbXBh
dGlibGUKKyAgLy8gICBhYnNsOjpmbGF0X2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDY7
CisgIC8vICAgbWFwNiA9IHN0ZDo6bW92ZShtYXA1KTsKKyAgLy8KKyAgLy8gKiBSYW5nZSBjb25z
dHJ1Y3RvcgorICAvLworICAvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxpbnQsIHN0ZDo6c3Ry
aW5nPj4gdiA9IHt7MSwgImEifSwgezIsICJiIn19OworICAvLyAgIGFic2w6OmZsYXRfaGFzaF9t
YXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwNyh2LmJlZ2luKCksIHYuZW5kKCkpOwogICBmbGF0X2hh
c2hfbWFwKCkge30KICAgdXNpbmcgQmFzZTo6QmFzZTsKIApAQCAtMTc4LDggKzIxOSwxMiBAQCBj
bGFzcyBmbGF0X2hhc2hfbWFwIDogcHVibGljIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6cmF3
X2hhc2hfbWFwPAogICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCBhdCBgcG9zaXRpb25gIG9mIHRo
ZSBgZmxhdF9oYXNoX21hcGAsIHJldHVybmluZwogICAvLyAgIGB2b2lkYC4KICAgLy8KLSAgLy8g
ICBOT1RFOiB0aGlzIHJldHVybiBiZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIFNU
TCBjb250YWluZXJzIGluCi0gIC8vICAgZ2VuZXJhbCBhbmQgYHN0ZDo6dW5vcmRlcmVkX21hcGAg
aW4gcGFydGljdWxhci4KKyAgLy8gICBOT1RFOiByZXR1cm5pbmcgYHZvaWRgIGluIHRoaXMgY2Fz
ZSBpcyBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIFNUTAorICAvLyAgIGNvbnRhaW5lcnMgaW4gZ2Vu
ZXJhbCBhbmQgYHN0ZDo6dW5vcmRlcmVkX21hcGAgaW4gcGFydGljdWxhciAod2hpY2gKKyAgLy8g
ICByZXR1cm4gYW4gaXRlcmF0b3IgdG8gdGhlIGVsZW1lbnQgZm9sbG93aW5nIHRoZSBlcmFzZWQg
ZWxlbWVudCkuIElmIHRoYXQKKyAgLy8gICBpdGVyYXRvciBpcyBuZWVkZWQsIHNpbXBseSBwb3N0
IGluY3JlbWVudCB0aGUgaXRlcmF0b3I6CisgIC8vCisgIC8vICAgICBtYXAuZXJhc2UoaXQrKyk7
CiAgIC8vCiAgIC8vIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9p
dGVyYXRvciBsYXN0KToKICAgLy8KQEAgLTQ4NiwyNSArNTMxLDI2IEBAIG5hbWVzcGFjZSBjb250
YWluZXJfaW50ZXJuYWwgewogCiB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4KIHN0cnVjdCBG
bGF0SGFzaE1hcFBvbGljeSB7Ci0gIHVzaW5nIHNsb3RfdHlwZSA9IGNvbnRhaW5lcl9pbnRlcm5h
bDo6c2xvdF90eXBlPEssIFY+OworICB1c2luZyBzbG90X3BvbGljeSA9IGNvbnRhaW5lcl9pbnRl
cm5hbDo6bWFwX3Nsb3RfcG9saWN5PEssIFY+OworICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFt
ZSBzbG90X3BvbGljeTo6c2xvdF90eXBlOwogICB1c2luZyBrZXlfdHlwZSA9IEs7CiAgIHVzaW5n
IG1hcHBlZF90eXBlID0gVjsKICAgdXNpbmcgaW5pdF90eXBlID0gc3RkOjpwYWlyPC8qbm9uIGNv
bnN0Ki8ga2V5X3R5cGUsIG1hcHBlZF90eXBlPjsKIAogICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2Nh
dG9yLCBjbGFzcy4uLiBBcmdzPgogICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2NhdG9yKiBh
bGxvYywgc2xvdF90eXBlKiBzbG90LCBBcmdzJiYuLi4gYXJncykgewotICAgIHNsb3RfdHlwZTo6
Y29uc3RydWN0KGFsbG9jLCBzbG90LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAg
IHNsb3RfcG9saWN5Ojpjb25zdHJ1Y3QoYWxsb2MsIHNsb3QsIHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CiAgIH0KIAogICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgogICBzdGF0aWMg
dm9pZCBkZXN0cm95KEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgewotICAgIHNs
b3RfdHlwZTo6ZGVzdHJveShhbGxvYywgc2xvdCk7CisgICAgc2xvdF9wb2xpY3k6OmRlc3Ryb3ko
YWxsb2MsIHNsb3QpOwogICB9CiAKICAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KICAgc3Rh
dGljIHZvaWQgdHJhbnNmZXIoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgewotICAgIHNsb3Rf
dHlwZTo6dHJhbnNmZXIoYWxsb2MsIG5ld19zbG90LCBvbGRfc2xvdCk7CisgICAgc2xvdF9wb2xp
Y3k6OnRyYW5zZmVyKGFsbG9jLCBuZXdfc2xvdCwgb2xkX3Nsb3QpOwogICB9CiAKICAgdGVtcGxh
dGUgPGNsYXNzIEYsIGNsYXNzLi4uIEFyZ3M+CkBAIC01MjQsNSArNTcwLDE2IEBAIHN0cnVjdCBG
bGF0SGFzaE1hcFBvbGljeSB7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVy
bmFsCisKK25hbWVzcGFjZSBjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsIHsKKworLy8gU3Bl
Y2lhbGl6YXRpb24gb2YgdHJhaXQgaW4gYWJzbC9hbGdvcml0aG0vY29udGFpbmVyLmgKK3RlbXBs
YXRlIDxjbGFzcyBLZXksIGNsYXNzIFQsIGNsYXNzIEhhc2gsIGNsYXNzIEtleUVxdWFsLCBjbGFz
cyBBbGxvY2F0b3I+CitzdHJ1Y3QgSXNVbm9yZGVyZWRDb250YWluZXI8CisgICAgYWJzbDo6Zmxh
dF9oYXNoX21hcDxLZXksIFQsIEhhc2gsIEtleUVxdWFsLCBBbGxvY2F0b3I+PiA6IHN0ZDo6dHJ1
ZV90eXBlIHt9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5h
bAorCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCiAjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0ZM
QVRfSEFTSF9NQVBfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfbWFw
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcF90ZXN0LmNjCmluZGV4IDEw
YTc4MWZmZDZjLi5lYmNiNTYwZmMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRf
aGFzaF9tYXBfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcF90ZXN0
LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNyw2ICsx
Nyw3IEBACiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3Jf
dGVzdGluZy5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9t
YXBfY29uc3RydWN0b3JfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC91bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29u
dGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCIKICNpbmNsdWRl
ICJhYnNsL3R5cGVzL2FueS5oIgogCkBAIC0zMCwxOSArMzEsMjAgQEAgdXNpbmcgOjp0ZXN0aW5n
OjpQYWlyOwogdXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsKIAogdGVtcGxh
dGUgPGNsYXNzIEssIGNsYXNzIFY+Ci11c2luZyBNYXAgPQotICAgIGZsYXRfaGFzaF9tYXA8Sywg
ViwgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPD4+Owor
dXNpbmcgTWFwID0gZmxhdF9oYXNoX21hcDxLLCBWLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLCBTdGF0
ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb2M8c3RkOjpw
YWlyPGNvbnN0IEssIFY+Pj47CiAKIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfc3RhbmRhcmRfbGF5
b3V0PE5vblN0YW5kYXJkTGF5b3V0PigpLCAiIik7CiAKIHVzaW5nIE1hcFR5cGVzID0KLSAgICA6
OnRlc3Rpbmc6OlR5cGVzPE1hcDxpbnQsIGludD4sIE1hcDxzdGQ6OnN0cmluZywgaW50PiwgTWFw
PEVudW0sIHN0ZDo6c3RyaW5nPiwKLSAgICAgICAgICAgICAgICAgICAgIE1hcDxFbnVtQ2xhc3Ms
IGludD4sIE1hcDxpbnQsIE5vblN0YW5kYXJkTGF5b3V0PiwKLSAgICAgICAgICAgICAgICAgICAg
IE1hcDxOb25TdGFuZGFyZExheW91dCwgaW50Pj47CisgICAgOjp0ZXN0aW5nOjpUeXBlczxNYXA8
aW50LCBpbnQ+LCBNYXA8c3RkOjpzdHJpbmcsIGludD4sCisgICAgICAgICAgICAgICAgICAgICBN
YXA8RW51bSwgc3RkOjpzdHJpbmc+LCBNYXA8RW51bUNsYXNzLCBpbnQ+LAorICAgICAgICAgICAg
ICAgICAgICAgTWFwPGludCwgTm9uU3RhbmRhcmRMYXlvdXQ+LCBNYXA8Tm9uU3RhbmRhcmRMYXlv
dXQsIGludD4+OwogCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFzaE1hcCwg
Q29uc3RydWN0b3JUZXN0LCBNYXBUeXBlcyk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChGbGF0SGFzaE1hcCwgTG9va3VwVGVzdCwgTWFwVHlwZXMpOwotSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoRmxhdEhhc2hNYXAsIE1vZGlmaWVyc1Rlc3QsIE1hcFR5cGVzKTsKK0lOU1RB
TlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChGbGF0SGFzaE1hcCwgQ29uc3RydWN0b3JUZXN0LCBN
YXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoRmxhdEhhc2hNYXAsIExv
b2t1cFRlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChGbGF0
SGFzaE1hcCwgTWVtYmVyc1Rlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1Rf
U1VJVEVfUChGbGF0SGFzaE1hcCwgTW9kaWZpZXJzVGVzdCwgTWFwVHlwZXMpOwogCiBURVNUKEZs
YXRIYXNoTWFwLCBTdGFuZGFyZExheW91dCkgewogICBzdHJ1Y3QgSW50IHsKQEAgLTk0LDcgKzk2
LDcgQEAgVEVTVChGbGF0SGFzaE1hcCwgSXRlcmF0ZXNNc2FuKSB7CiAgIH0KIH0KIAotLy8gRGVt
b25zdHJhdGlvbiBvZiB0aGUgIkxhenkgS2V5IiBwYXR0ZXJuLiAgVGhpcyB1c2VzIGhldGVyb2dl
bm91cyBpbnNlcnQgdG8KKy8vIERlbW9uc3RyYXRpb24gb2YgdGhlICJMYXp5IEtleSIgcGF0dGVy
bi4gIFRoaXMgdXNlcyBoZXRlcm9nZW5lb3VzIGluc2VydCB0bwogLy8gYXZvaWQgY3JlYXRpbmcg
ZXhwZW5zaXZlIGtleSBlbGVtZW50cyB3aGVuIHRoZSBpdGVtIGlzIGFscmVhZHkgcHJlc2VudCBp
biB0aGUKIC8vIG1hcC4KIHN0cnVjdCBMYXp5SW50IHsKQEAgLTEzOSw2ICsxNDEsNyBAQCBURVNU
KEZsYXRIYXNoTWFwLCBMYXp5S2V5UGF0dGVybikgewogICBpbnQgY29udmVyc2lvbnMgPSAwOwog
ICBpbnQgaGFzaGVzID0gMDsKICAgZmxhdF9oYXNoX21hcDxzaXplX3QsIHNpemVfdCwgSGFzaCwg
RXE+IG0oMCwgSGFzaHsmaGFzaGVzfSk7CisgIG0ucmVzZXJ2ZSgzKTsKIAogICBtW0xhenlJbnQo
MSwgJmNvbnZlcnNpb25zKV0gPSAxOwogICBFWFBFQ1RfVEhBVChtLCBVbm9yZGVyZWRFbGVtZW50
c0FyZShQYWlyKDEsIDEpKSk7CkBAIC0yMDMsNyArMjA2LDkgQEAgVEVTVChGbGF0SGFzaE1hcCwg
TWVyZ2VFeHRyYWN0SW5zZXJ0KSB7CiAgIG0uaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CiAgIEVY
UEVDVF9USEFUKG0sIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoMSwgMTcpLCBQYWlyKDIsIDkp
KSk7CiB9Ci0jaWYgIWRlZmluZWQoX19BTkRST0lEX18pICYmICFkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19FTVNDUklQVEVOX18pCisKKyNpZiAoZGVmaW5lZChBQlNMX0hBVkVfU1RE
X0FOWSkgfHwgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSkgJiYgXAorICAgICFkZWZpbmVkKF9f
RU1TQ1JJUFRFTl9fKQogVEVTVChGbGF0SGFzaE1hcCwgQW55KSB7CiAgIGFic2w6OmZsYXRfaGFz
aF9tYXA8aW50LCBhYnNsOjphbnk+IG07CiAgIG0uZW1wbGFjZSgxLCA3KTsKQEAgLTIzNCw3ICsy
MzksOCBAQCBURVNUKEZsYXRIYXNoTWFwLCBBbnkpIHsKICAgQVNTRVJUX05FKGl0MiwgbTIuZW5k
KCkpOwogICBFWFBFQ1RfRVEoNywgaXQyLT5zZWNvbmQpOwogfQotI2VuZGlmICAvLyBfX0FORFJP
SURfXworI2VuZGlmICAvLyAoZGVmaW5lZChBQlNMX0hBVkVfU1REX0FOWSkgfHwgIWRlZmluZWQo
X0xJQkNQUF9WRVJTSU9OKSkgJiYKKyAgICAgICAgLy8gIWRlZmluZWQoX19FTVNDUklQVEVOX18p
CiAKIH0gIC8vIG5hbWVzcGFjZQogfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9mbGF0X2hhc2hfc2V0LmgKaW5kZXggOThhZWFkMWE4YWUuLjJhNTFjMzQxMWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9mbGF0X2hhc2hfc2V0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRl
IDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9hbGdvcml0aG0vY29udGFpbmVyLmgiCiAjaW5j
bHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVy
bmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CkBAIC01
NCw5ICs1NSw5IEBAIHN0cnVjdCBGbGF0SGFzaFNldFBvbGljeTsKIC8vIGZvbGxvd2luZyBub3Rh
YmxlIGRpZmZlcmVuY2VzOgogLy8KIC8vICogUmVxdWlyZXMga2V5cyB0aGF0IGFyZSBDb3B5Q29u
c3RydWN0aWJsZQotLy8gKiBTdXBwb3J0cyBoZXRlcm9nZW5lb3VzIGxvb2t1cCwgdGhyb3VnaCBg
ZmluZCgpYCwgYG9wZXJhdG9yW10oKWAgYW5kCi0vLyAgIGBpbnNlcnQoKWAsIHByb3ZpZGVkIHRo
YXQgdGhlIHNldCBpcyBwcm92aWRlZCBhIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cwotLy8gICBo
YXNoaW5nIGZ1bmN0aW9uIGFuZCBlcXVhbGl0eSBvcGVyYXRvci4KKy8vICogU3VwcG9ydHMgaGV0
ZXJvZ2VuZW91cyBsb29rdXAsIHRocm91Z2ggYGZpbmQoKWAgYW5kIGBpbnNlcnQoKWAsIHByb3Zp
ZGVkCisvLyAgIHRoYXQgdGhlIHNldCBpcyBwcm92aWRlZCBhIGNvbXBhdGlibGUgaGV0ZXJvZ2Vu
ZW91cyBoYXNoaW5nIGZ1bmN0aW9uIGFuZAorLy8gICBlcXVhbGl0eSBvcGVyYXRvci4KIC8vICog
SW52YWxpZGF0ZXMgYW55IHJlZmVyZW5jZXMgYW5kIHBvaW50ZXJzIHRvIGVsZW1lbnRzIHdpdGhp
biB0aGUgdGFibGUgYWZ0ZXIKIC8vICAgYHJlaGFzaCgpYC4KIC8vICogQ29udGFpbnMgYSBgY2Fw
YWNpdHkoKWAgbWVtYmVyIGZ1bmN0aW9uIGluZGljYXRpbmcgdGhlIG51bWJlciBvZiBlbGVtZW50
CkBAIC02Niw3ICs2Nyw3IEBAIHN0cnVjdCBGbGF0SGFzaFNldFBvbGljeTsKIC8vIEJ5IGRlZmF1
bHQsIGBmbGF0X2hhc2hfc2V0YCB1c2VzIHRoZSBgYWJzbDo6SGFzaGAgaGFzaGluZyBmcmFtZXdv
cmsuIEFsbAogLy8gZnVuZGFtZW50YWwgYW5kIEFic2VpbCB0eXBlcyB0aGF0IHN1cHBvcnQgdGhl
IGBhYnNsOjpIYXNoYCBmcmFtZXdvcmsgaGF2ZSBhCiAvLyBjb21wYXRpYmxlIGVxdWFsaXR5IG9w
ZXJhdG9yIGZvciBjb21wYXJpbmcgaW5zZXJ0aW9ucyBpbnRvIGBmbGF0X2hhc2hfbWFwYC4KLS8v
IElmIHlvdXIgdHlwZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBieSB0aGUgYGFzYmw6Okhhc2hgIGZy
YW1ld29yaywgc2VlCisvLyBJZiB5b3VyIHR5cGUgaXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhl
IGBhYnNsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQogLy8gYWJzbC9oYXNoL2hhc2guaCBmb3IgaW5m
b3JtYXRpb24gb24gZXh0ZW5kaW5nIEFic2VpbCBoYXNoaW5nIHRvIHVzZXItZGVmaW5lZAogLy8g
dHlwZXMuCiAvLwpAQCAtODQsNyArODUsNyBAQCBzdHJ1Y3QgRmxhdEhhc2hTZXRQb2xpY3k7CiAv
LyAgICAgeyJodWV5IiwgImRld2V5IiwgImxvdWllIn07CiAvLwogLy8gIC8vIEluc2VydCBhIG5l
dyBlbGVtZW50IGludG8gdGhlIGZsYXQgaGFzaCBzZXQKLS8vICBkdWNrcy5pbnNlcnQoImRvbmFs
ZCJ9OworLy8gIGR1Y2tzLmluc2VydCgiZG9uYWxkIik7CiAvLwogLy8gIC8vIEZvcmNlIGEgcmVo
YXNoIG9mIHRoZSBmbGF0IGhhc2ggc2V0CiAvLyAgZHVja3MucmVoYXNoKDApOwpAQCAtMTAyLDYg
KzEwMyw0NiBAQCBjbGFzcyBmbGF0X2hhc2hfc2V0CiAgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBm
bGF0X2hhc2hfc2V0OjpyYXdfaGFzaF9zZXQ7CiAKICBwdWJsaWM6CisgIC8vIENvbnN0cnVjdG9y
cyBhbmQgQXNzaWdubWVudCBPcGVyYXRvcnMKKyAgLy8KKyAgLy8gQSBmbGF0X2hhc2hfc2V0IHN1
cHBvcnRzIHRoZSBzYW1lIG92ZXJsb2FkIHNldCBhcyBgc3RkOjp1bm9yZGVyZWRfbWFwYAorICAv
LyBmb3IgY29uc3RydWN0aW9uIGFuZCBhc3NpZ25tZW50OgorICAvLworICAvLyAqICBEZWZhdWx0
IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgIC8vIE5vIGFsbG9jYXRpb24gZm9yIHRoZSB0YWJs
ZSdzIGVsZW1lbnRzIGlzIG1hZGUuCisgIC8vICAgIGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjpz
dHJpbmc+IHNldDE7CisgIC8vCisgIC8vICogSW5pdGlhbGl6ZXIgTGlzdCBjb25zdHJ1Y3Rvcgor
ICAvLworICAvLyAgIGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHNldDIgPQorICAv
LyAgICAgICB7eyJodWV5In0sIHsiZGV3ZXkifSwgeyJsb3VpZSJ9LH07CisgIC8vCisgIC8vICog
Q29weSBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjpz
dHJpbmc+IHNldDMoc2V0Mik7CisgIC8vCisgIC8vICogQ29weSBhc3NpZ25tZW50IG9wZXJhdG9y
CisgIC8vCisgIC8vICAvLyBIYXNoIGZ1bmN0b3IgYW5kIENvbXBhcmF0b3IgYXJlIGNvcGllZCBh
cyB3ZWxsCisgIC8vICBhYnNsOjpmbGF0X2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzZXQ0OworICAv
LyAgc2V0NCA9IHNldDM7CisgIC8vCisgIC8vICogTW92ZSBjb25zdHJ1Y3RvcgorICAvLworICAv
LyAgIC8vIE1vdmUgaXMgZ3VhcmFudGVlZCBlZmZpY2llbnQKKyAgLy8gICBhYnNsOjpmbGF0X2hh
c2hfc2V0PHN0ZDo6c3RyaW5nPiBzZXQ1KHN0ZDo6bW92ZShzZXQ0KSk7CisgIC8vCisgIC8vICog
TW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisgIC8vICAgLy8gTWF5IGJlIGVmZmljaWVu
dCBpZiBhbGxvY2F0b3JzIGFyZSBjb21wYXRpYmxlCisgIC8vICAgYWJzbDo6ZmxhdF9oYXNoX3Nl
dDxzdGQ6OnN0cmluZz4gc2V0NjsKKyAgLy8gICBzZXQ2ID0gc3RkOjptb3ZlKHNldDUpOworICAv
LworICAvLyAqIFJhbmdlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IHYgPSB7ImEiLCAiYiJ9OworICAvLyAgIGFic2w6OmZsYXRfaGFzaF9zZXQ8c3Rk
OjpzdHJpbmc+IHNldDcodi5iZWdpbigpLCB2LmVuZCgpKTsKICAgZmxhdF9oYXNoX3NldCgpIHt9
CiAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKQEAgLTE3MSw4ICsyMTIsMTIgQEAgY2xhc3MgZmxhdF9o
YXNoX3NldAogICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCBhdCBgcG9zaXRpb25gIG9mIHRoZSBg
ZmxhdF9oYXNoX3NldGAsIHJldHVybmluZwogICAvLyAgIGB2b2lkYC4KICAgLy8KLSAgLy8gICBO
T1RFOiB0aGlzIHJldHVybiBiZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIFNUTCBj
b250YWluZXJzIGluCi0gIC8vICAgZ2VuZXJhbCBhbmQgYHN0ZDo6dW5vcmRlcmVkX21hcGAgaW4g
cGFydGljdWxhci4KKyAgLy8gICBOT1RFOiByZXR1cm5pbmcgYHZvaWRgIGluIHRoaXMgY2FzZSBp
cyBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIFNUTAorICAvLyAgIGNvbnRhaW5lcnMgaW4gZ2VuZXJh
bCBhbmQgYHN0ZDo6dW5vcmRlcmVkX3NldGAgaW4gcGFydGljdWxhciAod2hpY2gKKyAgLy8gICBy
ZXR1cm4gYW4gaXRlcmF0b3IgdG8gdGhlIGVsZW1lbnQgZm9sbG93aW5nIHRoZSBlcmFzZWQgZWxl
bWVudCkuIElmIHRoYXQKKyAgLy8gICBpdGVyYXRvciBpcyBuZWVkZWQsIHNpbXBseSBwb3N0IGlu
Y3JlbWVudCB0aGUgaXRlcmF0b3I6CisgIC8vCisgIC8vICAgICBzZXQuZXJhc2UoaXQrKyk7CiAg
IC8vCiAgIC8vIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVy
YXRvciBsYXN0KToKICAgLy8KQEAgLTIzOCw4ICsyODMsNyBAQCBjbGFzcyBmbGF0X2hhc2hfc2V0
CiAgIC8vCiAgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJl
IGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQogICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5l
ciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCi0g
IC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVyIGB0cnlfZW1wbGFjZSgpYCB1bmxlc3Mg
eW91ciBrZXkgaXMgbm90Ci0gIC8vIGNvcHlhYmxlIG9yIG1vdmVhYmxlLgorICAvLyBkZXN0cm95
ZWQgaW1tZWRpYXRlbHkuCiAgIC8vCiAgIC8vIElmIHJlaGFzaGluZyBvY2N1cnMgZHVlIHRvIHRo
ZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLgogICB1c2luZyBCYXNl
OjplbXBsYWNlOwpAQCAtMjUzLDggKzI5Nyw3IEBAIGNsYXNzIGZsYXRfaGFzaF9zZXQKICAgLy8K
ICAgLy8gVGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFk
eSBpcyBhbiBlbGVtZW50IHdpdGggdGhlCiAgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3
aGljaCBjYXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKLSAgLy8gZGVz
dHJveWVkIGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3VyIGtl
eSBpcyBub3QKLSAgLy8gY29weWFibGUgb3IgbW92ZWFibGUuCisgIC8vIGRlc3Ryb3llZCBpbW1l
ZGlhdGVseS4KICAgLy8KICAgLy8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUgdG8gdGhlIGluc2Vy
dGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCiAgIHVzaW5nIEJhc2U6OmVtcGxh
Y2VfaGludDsKQEAgLTQzNSw1ICs0NzgsMTYgQEAgc3RydWN0IEZsYXRIYXNoU2V0UG9saWN5IHsK
ICAgc3RhdGljIHNpemVfdCBzcGFjZV91c2VkKGNvbnN0IFQqKSB7IHJldHVybiAwOyB9CiB9Owog
fSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorCituYW1lc3BhY2UgY29udGFpbmVy
X2FsZ29yaXRobV9pbnRlcm5hbCB7CisKKy8vIFNwZWNpYWxpemF0aW9uIG9mIHRyYWl0IGluIGFi
c2wvYWxnb3JpdGhtL2NvbnRhaW5lci5oCit0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBIYXNo
LCBjbGFzcyBLZXlFcXVhbCwgY2xhc3MgQWxsb2NhdG9yPgorc3RydWN0IElzVW5vcmRlcmVkQ29u
dGFpbmVyPGFic2w6OmZsYXRfaGFzaF9zZXQ8S2V5LCBIYXNoLCBLZXlFcXVhbCwgQWxsb2NhdG9y
Pj4KKyAgICA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVy
X2FsZ29yaXRobV9pbnRlcm5hbAorCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCiAjZW5kaWYgIC8v
IEFCU0xfQ09OVEFJTkVSX0ZMQVRfSEFTSF9TRVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9mbGF0X2hhc2hfc2V0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3Nl
dF90ZXN0LmNjCmluZGV4IGU1MmZkNTMyY2JlLi5iNTViZTU5YjA0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
ZmxhdF9oYXNoX3NldF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
dGVybmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgogI2luY2x1ZGUgImFic2wv
Y29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRl
ICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdC5oIgog
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJz
X3Rlc3QuaCIKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhYnNs
L3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKQEAgLTQwLDkgKzQxLDEwIEBAIHVzaW5nIFNldCA9CiB1
c2luZyBTZXRUeXBlcyA9CiAgICAgOjp0ZXN0aW5nOjpUeXBlczxTZXQ8aW50PiwgU2V0PHN0ZDo6
c3RyaW5nPiwgU2V0PEVudW0+LCBTZXQ8RW51bUNsYXNzPj47CiAKLUlOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKEZsYXRIYXNoU2V0LCBDb25zdHJ1Y3RvclRlc3QsIFNldFR5cGVzKTsKLUlO
U1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKEZsYXRIYXNoU2V0LCBMb29rdXBUZXN0LCBTZXRU
eXBlcyk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFzaFNldCwgTW9kaWZp
ZXJzVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKEZsYXRI
YXNoU2V0LCBDb25zdHJ1Y3RvclRlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfU1VJVEVfUChGbGF0SGFzaFNldCwgTG9va3VwVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9TVUlURV9QKEZsYXRIYXNoU2V0LCBNZW1iZXJzVGVzdCwgU2V0VHlwZXMp
OworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKEZsYXRIYXNoU2V0LCBNb2RpZmllcnNU
ZXN0LCBTZXRUeXBlcyk7CiAKIFRFU1QoRmxhdEhhc2hTZXQsIEVtcGxhY2VTdHJpbmcpIHsKICAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSB7ImEiLCAiYiJ9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92
ZWN0b3IuaAppbmRleCAxMjc1NmJiODIwYy4uMjVhZjE2NTg5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVk
X3ZlY3Rvci5oCkBAIC0xLDEwICsxLDEwIEBACi0vLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCiAvLwogLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIwLDE3ICsyMCwxNyBAQAogLy8g
dmVjdG9yIiB3aGljaCBiZWhhdmVzIGluIGFuIGVxdWl2YWxlbnQgZmFzaGlvbiB0byBhIGBzdGQ6
OnZlY3RvcmAsIGV4Y2VwdAogLy8gdGhhdCBzdG9yYWdlIGZvciBzbWFsbCBzZXF1ZW5jZXMgb2Yg
dGhlIHZlY3RvciBhcmUgcHJvdmlkZWQgaW5saW5lIHdpdGhvdXQKIC8vIHJlcXVpcmluZyBhbnkg
aGVhcCBhbGxvY2F0aW9uLgotCi0vLyBBbiBgYWJzbDo6SW5saW5lZFZlY3RvcjxULE4+YCBzcGVj
aWZpZXMgdGhlIHNpemUgTiBhdCB3aGljaCB0byBpbmxpbmUgYXMgb25lCi0vLyBvZiBpdHMgdGVt
cGxhdGUgcGFyYW1ldGVycy4gVmVjdG9ycyBvZiBsZW5ndGggPD0gTiBhcmUgcHJvdmlkZWQgaW5s
aW5lLgotLy8gVHlwaWNhbGx5IE4gaXMgdmVyeSBzbWFsbCAoZS5nLiwgNCkgc28gdGhhdCBzZXF1
ZW5jZXMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gYmUKLS8vIHNob3J0IGRvIG5vdCByZXF1aXJlIGFs
bG9jYXRpb25zLgotCi0vLyBBbiBgYWJzbDo6SW5saW5lZFZlY3RvcmAgZG9lcyBub3QgdXN1YWxs
eSByZXF1aXJlIGEgc3BlY2lmaWMgYWxsb2NhdG9yOyBpZgorLy8KKy8vIEFuIGBhYnNsOjpJbmxp
bmVkVmVjdG9yPFQsIE4+YCBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgY2FwYWNpdHkgYE5gIGFzIG9u
ZSBvZgorLy8gaXRzIHRlbXBsYXRlIHBhcmFtZXRlcnMuIEluc3RhbmNlcyB3aGVyZSBgc2l6ZSgp
IDw9IE5gIGhvbGQgY29udGFpbmVkCisvLyBlbGVtZW50cyBpbiBpbmxpbmUgc3BhY2UuIFR5cGlj
YWxseSBgTmAgaXMgdmVyeSBzbWFsbCBzbyB0aGF0IHNlcXVlbmNlcyB0aGF0CisvLyBhcmUgZXhw
ZWN0ZWQgdG8gYmUgc2hvcnQgZG8gbm90IHJlcXVpcmUgYWxsb2NhdGlvbnMuCisvLworLy8gQW4g
YGFic2w6OklubGluZWRWZWN0b3JgIGRvZXMgbm90IHVzdWFsbHkgcmVxdWlyZSBhIHNwZWNpZmlj
IGFsbG9jYXRvci4gSWYKIC8vIHRoZSBpbmxpbmVkIHZlY3RvciBncm93cyBiZXlvbmQgaXRzIGlu
aXRpYWwgY29uc3RyYWludHMsIGl0IHdpbGwgbmVlZCB0bwotLy8gYWxsb2NhdGUgKGFzIGFueSBu
b3JtYWwgYHN0ZDo6dmVjdG9yYCB3b3VsZCkgYW5kIGl0IHdpbGwgZ2VuZXJhbGx5IHVzZSB0aGUK
LS8vIGRlZmF1bHQgYWxsb2NhdG9yIGluIHRoYXQgY2FzZTsgb3B0aW9uYWxseSwgYSBjdXN0b20g
YWxsb2NhdG9yIG1heSBiZQotLy8gc3BlY2lmaWVkIHVzaW5nIGFuIGBhYnNsOjpJbmxpbmVkVmVj
dG9yPFQsTixBPmAgY29uc3RydWN0aW9uLgorLy8gYWxsb2NhdGUgKGFzIGFueSBub3JtYWwgYHN0
ZDo6dmVjdG9yYCB3b3VsZCkuIFRoaXMgaXMgdXN1YWxseSBwZXJmb3JtZWQgd2l0aAorLy8gdGhl
IGRlZmF1bHQgYWxsb2NhdG9yIChkZWZpbmVkIGFzIGBzdGQ6OmFsbG9jYXRvcjxUPmApLiBPcHRp
b25hbGx5LCBhIGN1c3RvbQorLy8gYWxsb2NhdG9yIHR5cGUgbWF5IGJlIHNwZWNpZmllZCBhcyBg
QWAgaW4gYGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT5gLgogCiAjaWZuZGVmIEFCU0xfQ09O
VEFJTkVSX0lOTElORURfVkVDVE9SX0hfCiAjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOTElORURf
VkVDVE9SX0hfCkBAIC01MCwxMCArNTAsMTAgQEAKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJu
YWwvdGhyb3dfZGVsZWdhdGUuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgi
CiAjaW5jbHVkZSAiYWJzbC9iYXNlL3BvcnQuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9pbmxpbmVkX3ZlY3Rvci5oIgogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgogCiBuYW1lc3BhY2UgYWJzbCB7Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBJbmxp
bmVkVmVjdG9yCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjEsMTMyOSArNjEsNzgzIEBA
IG5hbWVzcGFjZSBhYnNsIHsKIC8vIEFuIGBhYnNsOjpJbmxpbmVkVmVjdG9yYCBpcyBkZXNpZ25l
ZCB0byBiZSBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yCiAvLyBgc3RkOjp2ZWN0b3JgIGZvciB1
c2UgY2FzZXMgd2hlcmUgdGhlIHZlY3RvcidzIHNpemUgaXMgc3VmZmljaWVudGx5IHNtYWxsCiAv
LyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVkLiBJZiB0aGUgaW5saW5lZCB2ZWN0b3IgZG9lcyBncm93
IGJleW9uZCBpdHMgZXN0aW1hdGVkCi0vLyBzaXplLCBpdCB3aWxsIHRyaWdnZXIgYW4gaW5pdGlh
bCBhbGxvY2F0aW9uIG9uIHRoZSBoZWFwLCBhbmQgd2lsbCBiZWhhdmUgYXMgYQotLy8gYHN0ZDp2
ZWN0b3JgLiBUaGUgQVBJIG9mIHRoZSBgYWJzbDo6SW5saW5lZFZlY3RvcmAgd2l0aGluIHRoaXMg
ZmlsZSBpcworLy8gY2FwYWNpdHksIGl0IHdpbGwgdHJpZ2dlciBhbiBpbml0aWFsIGFsbG9jYXRp
b24gb24gdGhlIGhlYXAsIGFuZCB3aWxsIGJlaGF2ZQorLy8gYXMgYSBgc3RkOnZlY3RvcmAuIFRo
ZSBBUEkgb2YgdGhlIGBhYnNsOjpJbmxpbmVkVmVjdG9yYCB3aXRoaW4gdGhpcyBmaWxlIGlzCiAv
LyBkZXNpZ25lZCB0byBjb3ZlciB0aGUgc2FtZSBBUEkgZm9vdHByaW50IGFzIGNvdmVyZWQgYnkg
YHN0ZDo6dmVjdG9yYC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUg
QSA9IHN0ZDo6YWxsb2NhdG9yPFQ+ID4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwg
dHlwZW5hbWUgQSA9IHN0ZDo6YWxsb2NhdG9yPFQ+PgogY2xhc3MgSW5saW5lZFZlY3RvciB7Ci0g
IHVzaW5nIEFsbG9jYXRvclRyYWl0cyA9IHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBPjsKKyAgc3Rh
dGljX2Fzc2VydChOID4gMCwgImBhYnNsOjpJbmxpbmVkVmVjdG9yYCByZXF1aXJlcyBhbiBpbmxp
bmVkIGNhcGFjaXR5LiIpOworCisgIHVzaW5nIFN0b3JhZ2UgPSBpbmxpbmVkX3ZlY3Rvcl9pbnRl
cm5hbDo6U3RvcmFnZTxULCBOLCBBPjsKKyAgdXNpbmcgcnZhbHVlX3JlZmVyZW5jZSA9IHR5cGVu
YW1lIFN0b3JhZ2U6OnJ2YWx1ZV9yZWZlcmVuY2U7CisgIHVzaW5nIE1vdmVJdGVyYXRvciA9IHR5
cGVuYW1lIFN0b3JhZ2U6Ok1vdmVJdGVyYXRvcjsKKyAgdXNpbmcgQWxsb2NhdG9yVHJhaXRzID0g
dHlwZW5hbWUgU3RvcmFnZTo6QWxsb2NhdG9yVHJhaXRzOworICB1c2luZyBJc01lbWNweU9rID0g
dHlwZW5hbWUgU3RvcmFnZTo6SXNNZW1jcHlPazsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRl
cmF0b3I+CisgIHVzaW5nIEl0ZXJhdG9yVmFsdWVBZGFwdGVyID0KKyAgICAgIHR5cGVuYW1lIFN0
b3JhZ2U6OnRlbXBsYXRlIEl0ZXJhdG9yVmFsdWVBZGFwdGVyPEl0ZXJhdG9yPjsKKyAgdXNpbmcg
Q29weVZhbHVlQWRhcHRlciA9IHR5cGVuYW1lIFN0b3JhZ2U6OkNvcHlWYWx1ZUFkYXB0ZXI7Cisg
IHVzaW5nIERlZmF1bHRWYWx1ZUFkYXB0ZXIgPSB0eXBlbmFtZSBTdG9yYWdlOjpEZWZhdWx0VmFs
dWVBZGFwdGVyOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KKyAgdXNpbmcgRW5h
YmxlSWZBdExlYXN0Rm9yd2FyZEl0ZXJhdG9yID0gYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICBp
bmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6SXNBdExlYXN0Rm9yd2FyZEl0ZXJhdG9yPEl0ZXJhdG9y
Pjo6dmFsdWU+OworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+CisgIHVzaW5nIERpc2Fi
bGVJZkF0TGVhc3RGb3J3YXJkSXRlcmF0b3IgPSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICFp
bmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6SXNBdExlYXN0Rm9yd2FyZEl0ZXJhdG9yPEl0ZXJhdG9y
Pjo6dmFsdWU+OwogCiAgcHVibGljOgotICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IEE7Ci0gIHVz
aW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6dmFsdWVfdHlwZTsKLSAg
dXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIGFsbG9jYXRvcl90eXBlOjpwb2ludGVyOwotICB1c2lu
ZyBjb25zdF9wb2ludGVyID0gdHlwZW5hbWUgYWxsb2NhdG9yX3R5cGU6OmNvbnN0X3BvaW50ZXI7
Ci0gIHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVuYW1lIGFsbG9jYXRvcl90eXBlOjpyZWZlcmVuY2U7
Ci0gIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IHR5cGVuYW1lIGFsbG9jYXRvcl90eXBlOjpjb25z
dF9yZWZlcmVuY2U7Ci0gIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVuYW1lIGFsbG9jYXRvcl90eXBl
OjpzaXplX3R5cGU7Ci0gIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHR5cGVuYW1lIGFsbG9jYXRv
cl90eXBlOjpkaWZmZXJlbmNlX3R5cGU7Ci0gIHVzaW5nIGl0ZXJhdG9yID0gcG9pbnRlcjsKLSAg
dXNpbmcgY29uc3RfaXRlcmF0b3IgPSBjb25zdF9wb2ludGVyOwotICB1c2luZyByZXZlcnNlX2l0
ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsKLSAgdXNpbmcgY29uc3Rf
cmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj47
Ci0KLSAgSW5saW5lZFZlY3RvcigpIG5vZXhjZXB0KG5vZXhjZXB0KGFsbG9jYXRvcl90eXBlKCkp
KQotICAgICAgOiBhbGxvY2F0b3JfYW5kX3RhZ18oYWxsb2NhdG9yX3R5cGUoKSkge30KLQorICB1
c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFN0b3JhZ2U6OmFsbG9jYXRvcl90eXBlOwor
ICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgU3RvcmFnZTo6dmFsdWVfdHlwZTsKKyAgdXNp
bmcgcG9pbnRlciA9IHR5cGVuYW1lIFN0b3JhZ2U6OnBvaW50ZXI7CisgIHVzaW5nIGNvbnN0X3Bv
aW50ZXIgPSB0eXBlbmFtZSBTdG9yYWdlOjpjb25zdF9wb2ludGVyOworICB1c2luZyByZWZlcmVu
Y2UgPSB0eXBlbmFtZSBTdG9yYWdlOjpyZWZlcmVuY2U7CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5j
ZSA9IHR5cGVuYW1lIFN0b3JhZ2U6OmNvbnN0X3JlZmVyZW5jZTsKKyAgdXNpbmcgc2l6ZV90eXBl
ID0gdHlwZW5hbWUgU3RvcmFnZTo6c2l6ZV90eXBlOworICB1c2luZyBkaWZmZXJlbmNlX3R5cGUg
PSB0eXBlbmFtZSBTdG9yYWdlOjpkaWZmZXJlbmNlX3R5cGU7CisgIHVzaW5nIGl0ZXJhdG9yID0g
dHlwZW5hbWUgU3RvcmFnZTo6aXRlcmF0b3I7CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gdHlw
ZW5hbWUgU3RvcmFnZTo6Y29uc3RfaXRlcmF0b3I7CisgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3Ig
PSB0eXBlbmFtZSBTdG9yYWdlOjpyZXZlcnNlX2l0ZXJhdG9yOworICB1c2luZyBjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yID0gdHlwZW5hbWUgU3RvcmFnZTo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsK
KworICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgLy8gSW5saW5lZFZlY3RvciBDb25zdHJ1Y3Rv
cnMgYW5kIERlc3RydWN0b3IKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgLy8gQ3JlYXRl
cyBhbiBlbXB0eSBpbmxpbmVkIHZlY3RvciB3aXRoIGEgdmFsdWUtaW5pdGlhbGl6ZWQgYWxsb2Nh
dG9yLgorICBJbmxpbmVkVmVjdG9yKCkgbm9leGNlcHQobm9leGNlcHQoYWxsb2NhdG9yX3R5cGUo
KSkpIDogc3RvcmFnZV8oKSB7fQorCisgIC8vIENyZWF0ZXMgYW4gZW1wdHkgaW5saW5lZCB2ZWN0
b3Igd2l0aCBhIGNvcHkgb2YgYGFsbG9jYC4KICAgZXhwbGljaXQgSW5saW5lZFZlY3Rvcihjb25z
dCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpIG5vZXhjZXB0Ci0gICAgICA6IGFsbG9jYXRvcl9hbmRf
dGFnXyhhbGxvYykge30KKyAgICAgIDogc3RvcmFnZV8oYWxsb2MpIHt9CiAKLSAgLy8gQ3JlYXRl
IGEgdmVjdG9yIHdpdGggbiBjb3BpZXMgb2YgdmFsdWVfdHlwZSgpLgorICAvLyBDcmVhdGVzIGFu
IGlubGluZWQgdmVjdG9yIHdpdGggYG5gIGNvcGllcyBvZiBgdmFsdWVfdHlwZSgpYC4KICAgZXhw
bGljaXQgSW5saW5lZFZlY3RvcihzaXplX3R5cGUgbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQotICAgICAg
OiBhbGxvY2F0b3JfYW5kX3RhZ18oYWxsb2MpIHsKLSAgICBJbml0QXNzaWduKG4pOworICAgICAg
OiBzdG9yYWdlXyhhbGxvYykgeworICAgIHN0b3JhZ2VfLkluaXRpYWxpemUoRGVmYXVsdFZhbHVl
QWRhcHRlcigpLCBuKTsKICAgfQogCi0gIC8vIENyZWF0ZSBhIHZlY3RvciB3aXRoIG4gY29waWVz
IG9mIGVsZW0KLSAgSW5saW5lZFZlY3RvcihzaXplX3R5cGUgbiwgY29uc3QgdmFsdWVfdHlwZSYg
ZWxlbSwKKyAgLy8gQ3JlYXRlcyBhbiBpbmxpbmVkIHZlY3RvciB3aXRoIGBuYCBjb3BpZXMgb2Yg
YHZgLgorICBJbmxpbmVkVmVjdG9yKHNpemVfdHlwZSBuLCBjb25zdF9yZWZlcmVuY2UgdiwKICAg
ICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlw
ZSgpKQotICAgICAgOiBhbGxvY2F0b3JfYW5kX3RhZ18oYWxsb2MpIHsKLSAgICBJbml0QXNzaWdu
KG4sIGVsZW0pOworICAgICAgOiBzdG9yYWdlXyhhbGxvYykgeworICAgIHN0b3JhZ2VfLkluaXRp
YWxpemUoQ29weVZhbHVlQWRhcHRlcih2KSwgbik7CiAgIH0KIAotICAvLyBDcmVhdGUgYW5kIGlu
aXRpYWxpemUgd2l0aCB0aGUgZWxlbWVudHMgW2ZpcnN0IC4uIGxhc3QpLgotICAvLyBUaGUgdW51
c2VkIGVuYWJsZV9pZiBhcmd1bWVudCByZXN0cmljdHMgdGhpcyBjb25zdHJ1Y3RvciBzbyB0aGF0
IGl0IGlzCi0gIC8vIGVsaWRlZCB3aGVuIHZhbHVlX3R5cGUgaXMgYW4gaW50ZWdyYWwgdHlwZS4g
IFRoaXMgcHJldmVudHMgYW1iaWd1b3VzCi0gIC8vIGludGVycHJldGF0aW9uIGJldHdlZW4gYSBj
YWxsIHRvIHRoaXMgY29uc3RydWN0b3Igd2l0aCB0d28gaW50ZWdyYWwKLSAgLy8gYXJndW1lbnRz
IGFuZCBhIGNhbGwgdG8gdGhlIHByZWNlZGluZyAobiwgZWxlbSkgY29uc3RydWN0b3IuCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgotICBJbmxpbmVkVmVjdG9yKAotICAgICAg
SW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LAotICAgICAgY29uc3QgYWxs
b2NhdG9yX3R5cGUmIGFsbG9jID0gYWxsb2NhdG9yX3R5cGUoKSwKLSAgICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2ludGVncmFsPElucHV0SXRlcmF0b3I+Ojp2YWx1ZT46OnR5
cGUqID0KLSAgICAgICAgICBudWxscHRyKQotICAgICAgOiBhbGxvY2F0b3JfYW5kX3RhZ18oYWxs
b2MpIHsKLSAgICBBcHBlbmRSYW5nZShmaXJzdCwgbGFzdCk7CisgIC8vIENyZWF0ZXMgYW4gaW5s
aW5lZCB2ZWN0b3Igd2l0aCBjb3BpZXMgb2YgdGhlIGVsZW1lbnRzIG9mIGBsaXN0YC4KKyAgSW5s
aW5lZFZlY3RvcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCwKKyAgICAg
ICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgp
KQorICAgICAgOiBJbmxpbmVkVmVjdG9yKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSwgYWxsb2Mp
IHt9CisKKyAgLy8gQ3JlYXRlcyBhbiBpbmxpbmVkIHZlY3RvciB3aXRoIGVsZW1lbnRzIGNvbnN0
cnVjdGVkIGZyb20gdGhlIHByb3ZpZGVkCisgIC8vIGZvcndhcmQgaXRlcmF0b3IgcmFuZ2UgW2Bm
aXJzdGAsIGBsYXN0YCkuCisgIC8vCisgIC8vIE5PVEU6IHRoZSBgZW5hYmxlX2lmYCBwcmV2ZW50
cyBhbWJpZ3VvdXMgaW50ZXJwcmV0YXRpb24gYmV0d2VlbiBhIGNhbGwgdG8KKyAgLy8gdGhpcyBj
b25zdHJ1Y3RvciB3aXRoIHR3byBpbnRlZ3JhbCBhcmd1bWVudHMgYW5kIGEgY2FsbCB0byB0aGUg
YWJvdmUKKyAgLy8gYElubGluZWRWZWN0b3Ioc2l6ZV90eXBlLCBjb25zdF9yZWZlcmVuY2UpYCBj
b25zdHJ1Y3Rvci4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwKKyAgICAg
ICAgICAgIEVuYWJsZUlmQXRMZWFzdEZvcndhcmRJdGVyYXRvcjxGb3J3YXJkSXRlcmF0b3I+KiA9
IG51bGxwdHI+CisgIElubGluZWRWZWN0b3IoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJk
SXRlcmF0b3IgbGFzdCwKKyAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxs
b2MgPSBhbGxvY2F0b3JfdHlwZSgpKQorICAgICAgOiBzdG9yYWdlXyhhbGxvYykgeworICAgIHN0
b3JhZ2VfLkluaXRpYWxpemUoSXRlcmF0b3JWYWx1ZUFkYXB0ZXI8Rm9yd2FyZEl0ZXJhdG9yPihm
aXJzdCksCisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0
KSk7CiAgIH0KIAotICBJbmxpbmVkVmVjdG9yKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90
eXBlPiBpbml0LAorICAvLyBDcmVhdGVzIGFuIGlubGluZWQgdmVjdG9yIHdpdGggZWxlbWVudHMg
Y29uc3RydWN0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgaW5wdXQKKyAgLy8gaXRlcmF0b3IgcmFuZ2Ug
W2BmaXJzdGAsIGBsYXN0YCkuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLAor
ICAgICAgICAgICAgRGlzYWJsZUlmQXRMZWFzdEZvcndhcmRJdGVyYXRvcjxJbnB1dEl0ZXJhdG9y
PiogPSBudWxscHRyPgorICBJbmxpbmVkVmVjdG9yKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0
SXRlcmF0b3IgbGFzdCwKICAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxs
b2MgPSBhbGxvY2F0b3JfdHlwZSgpKQotICAgICAgOiBhbGxvY2F0b3JfYW5kX3RhZ18oYWxsb2Mp
IHsKLSAgICBBcHBlbmRSYW5nZShpbml0LmJlZ2luKCksIGluaXQuZW5kKCkpOworICAgICAgOiBz
dG9yYWdlXyhhbGxvYykgeworICAgIHN0ZDo6Y29weShmaXJzdCwgbGFzdCwgc3RkOjpiYWNrX2lu
c2VydGVyKCp0aGlzKSk7CiAgIH0KIAotICBJbmxpbmVkVmVjdG9yKGNvbnN0IElubGluZWRWZWN0
b3ImIHYpOwotICBJbmxpbmVkVmVjdG9yKGNvbnN0IElubGluZWRWZWN0b3ImIHYsIGNvbnN0IGFs
bG9jYXRvcl90eXBlJiBhbGxvYyk7CisgIC8vIENyZWF0ZXMgYW4gaW5saW5lZCB2ZWN0b3IgYnkg
Y29weWluZyB0aGUgY29udGVudHMgb2YgYG90aGVyYCB1c2luZworICAvLyBgb3RoZXJgJ3MgYWxs
b2NhdG9yLgorICBJbmxpbmVkVmVjdG9yKGNvbnN0IElubGluZWRWZWN0b3ImIG90aGVyKQorICAg
ICAgOiBJbmxpbmVkVmVjdG9yKG90aGVyLCAqb3RoZXIuc3RvcmFnZV8uR2V0QWxsb2NQdHIoKSkg
e30KIAotICAvLyBUaGlzIG1vdmUgY29uc3RydWN0b3IgZG9lcyBub3QgYWxsb2NhdGUgYW5kIG9u
bHkgbW92ZXMgdGhlIHVuZGVybHlpbmcKLSAgLy8gb2JqZWN0cywgc28gaXRzIGBub2V4Y2VwdGAg
c3BlY2lmaWNhdGlvbiBkZXBlbmRzIG9uIHdoZXRoZXIgbW92aW5nIHRoZQotICAvLyB1bmRlcmx5
aW5nIG9iamVjdHMgY2FuIHRocm93IG9yIG5vdC4gV2UgYXNzdW1lCi0gIC8vICBhKSBtb3ZlIGNv
bnN0cnVjdG9ycyBzaG91bGQgb25seSB0aHJvdyBkdWUgdG8gYWxsb2NhdGlvbiBmYWlsdXJlIGFu
ZAotICAvLyAgYikgaWYgYHZhbHVlX3R5cGVgJ3MgbW92ZSBjb25zdHJ1Y3RvciBhbGxvY2F0ZXMs
IGl0IHVzZXMgdGhlIHNhbWUKLSAgLy8gICAgIGFsbG9jYXRpb24gZnVuY3Rpb24gYXMgdGhlIGBJ
bmxpbmVkVmVjdG9yYCdzIGFsbG9jYXRvciwgc28gdGhlIG1vdmUKLSAgLy8gICAgIGNvbnN0cnVj
dG9yIGlzIG5vbi10aHJvd2luZyBpZiB0aGUgYWxsb2NhdG9yIGlzIG5vbi10aHJvd2luZyBvcgot
ICAvLyAgICAgYHZhbHVlX3R5cGVgJ3MgbW92ZSBjb25zdHJ1Y3RvciBpcyBzcGVjaWZpZWQgYXMg
YG5vZXhjZXB0YC4KLSAgSW5saW5lZFZlY3RvcihJbmxpbmVkVmVjdG9yJiYgdikgbm9leGNlcHQo
Ci0gICAgICBhYnNsOjphbGxvY2F0b3JfaXNfbm90aHJvdzxhbGxvY2F0b3JfdHlwZT46OnZhbHVl
IHx8Ci0gICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGU+
Ojp2YWx1ZSk7Ci0KLSAgLy8gVGhpcyBtb3ZlIGNvbnN0cnVjdG9yIGFsbG9jYXRlcyBhbmQgYWxz
byBtb3ZlcyB0aGUgdW5kZXJseWluZyBvYmplY3RzLCBzbwotICAvLyBpdHMgYG5vZXhjZXB0YCBz
cGVjaWZpY2F0aW9uIGRlcGVuZHMgb24gd2hldGhlciB0aGUgYWxsb2NhdGlvbiBjYW4gdGhyb3cK
LSAgLy8gYW5kIHdoZXRoZXIgbW92aW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdHMgY2FuIHRocm93
LiBCYXNlZCBvbiB0aGUgc2FtZQotICAvLyBhc3N1bXB0aW9ucyBhYm92ZSwgdGhlIGBub2V4Y2Vw
dGAgc3BlY2lmaWNhdGlvbiBpcyBkb21pbmF0ZWQgYnkgd2hldGhlciB0aGUKLSAgLy8gYWxsb2Nh
dGlvbiBjYW4gdGhyb3cgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGB2YWx1ZV90eXBlYCdzIG1vdmUg
Y29uc3RydWN0b3IKLSAgLy8gaXMgc3BlY2lmaWVkIGFzIGBub2V4Y2VwdGAuCi0gIElubGluZWRW
ZWN0b3IoSW5saW5lZFZlY3RvciYmIHYsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykgbm9l
eGNlcHQoCi0gICAgICBhYnNsOjphbGxvY2F0b3JfaXNfbm90aHJvdzxhbGxvY2F0b3JfdHlwZT46
OnZhbHVlKTsKLQotICB+SW5saW5lZFZlY3RvcigpIHsgY2xlYXIoKTsgfQotCi0gIElubGluZWRW
ZWN0b3ImIG9wZXJhdG9yPShjb25zdCBJbmxpbmVkVmVjdG9yJiB2KSB7Ci0gICAgaWYgKHRoaXMg
PT0gJnYpIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgLy8gT3B0aW1pemVkIHRv
IGF2b2lkIHJlYWxsb2NhdGlvbi4KLSAgICAvLyBQcmVmZXIgcmVhc3NpZ25tZW50IHRvIGNvcHkg
Y29uc3RydWN0aW9uIGZvciBlbGVtZW50cy4KLSAgICBpZiAoc2l6ZSgpIDwgdi5zaXplKCkpIHsg
IC8vIGdyb3cKLSAgICAgIHJlc2VydmUodi5zaXplKCkpOwotICAgICAgc3RkOjpjb3B5KHYuYmVn
aW4oKSwgdi5iZWdpbigpICsgc2l6ZSgpLCBiZWdpbigpKTsKLSAgICAgIHN0ZDo6Y29weSh2LmJl
Z2luKCkgKyBzaXplKCksIHYuZW5kKCksIHN0ZDo6YmFja19pbnNlcnRlcigqdGhpcykpOwotICAg
IH0gZWxzZSB7ICAvLyBtYXliZSBzaHJpbmsKLSAgICAgIGVyYXNlKGJlZ2luKCkgKyB2LnNpemUo
KSwgZW5kKCkpOwotICAgICAgc3RkOjpjb3B5KHYuYmVnaW4oKSwgdi5lbmQoKSwgYmVnaW4oKSk7
CisgIC8vIENyZWF0ZXMgYW4gaW5saW5lZCB2ZWN0b3IgYnkgY29weWluZyB0aGUgY29udGVudHMg
b2YgYG90aGVyYCB1c2luZyBgYWxsb2NgLgorICBJbmxpbmVkVmVjdG9yKGNvbnN0IElubGluZWRW
ZWN0b3ImIG90aGVyLCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHN0b3Jh
Z2VfKGFsbG9jKSB7CisgICAgaWYgKElzTWVtY3B5T2s6OnZhbHVlICYmICFvdGhlci5zdG9yYWdl
Xy5HZXRJc0FsbG9jYXRlZCgpKSB7CisgICAgICBzdG9yYWdlXy5NZW1jcHlGcm9tKG90aGVyLnN0
b3JhZ2VfKTsKKyAgICB9IGVsc2UgeworICAgICAgc3RvcmFnZV8uSW5pdGlhbGl6ZShJdGVyYXRv
clZhbHVlQWRhcHRlcjxjb25zdF9wb2ludGVyPihvdGhlci5kYXRhKCkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdGhlci5zaXplKCkpOwogICAgIH0KLSAgICByZXR1cm4gKnRoaXM7CiAg
IH0KIAotICBJbmxpbmVkVmVjdG9yJiBvcGVyYXRvcj0oSW5saW5lZFZlY3RvciYmIHYpIHsKLSAg
ICBpZiAodGhpcyA9PSAmdikgewotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBpZiAo
di5hbGxvY2F0ZWQoKSkgewotICAgICAgY2xlYXIoKTsKLSAgICAgIHRhZygpLnNldF9hbGxvY2F0
ZWRfc2l6ZSh2LnNpemUoKSk7Ci0gICAgICBpbml0X2FsbG9jYXRpb24odi5hbGxvY2F0aW9uKCkp
OwotICAgICAgdi50YWcoKSA9IFRhZygpOworICAvLyBDcmVhdGVzIGFuIGlubGluZWQgdmVjdG9y
IGJ5IG1vdmluZyBpbiB0aGUgY29udGVudHMgb2YgYG90aGVyYCB3aXRob3V0CisgIC8vIGFsbG9j
YXRpbmcuIElmIGBvdGhlcmAgY29udGFpbnMgYWxsb2NhdGVkIG1lbW9yeSwgdGhlIG5ld2x5LWNy
ZWF0ZWQgaW5saW5lZAorICAvLyB2ZWN0b3Igd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGF0IG1l
bW9yeS4gSG93ZXZlciwgaWYgYG90aGVyYCBkb2VzIG5vdAorICAvLyBjb250YWluIGFsbG9jYXRl
ZCBtZW1vcnksIHRoZSBuZXdseS1jcmVhdGVkIGlubGluZWQgdmVjdG9yIHdpbGwgcGVyZm9ybQor
ICAvLyBlbGVtZW50LXdpc2UgbW92ZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGNvbnRlbnRzIG9mIGBv
dGhlcmAuCisgIC8vCisgIC8vIE5PVEU6IHNpbmNlIG5vIGFsbG9jYXRpb24gaXMgcGVyZm9ybWVk
IGZvciB0aGUgaW5saW5lZCB2ZWN0b3IgaW4gZWl0aGVyCisgIC8vIGNhc2UsIHRoZSBgbm9leGNl
cHQoLi4uKWAgc3BlY2lmaWNhdGlvbiBkZXBlbmRzIG9uIHdoZXRoZXIgbW92aW5nIHRoZQorICAv
LyB1bmRlcmx5aW5nIG9iamVjdHMgY2FuIHRocm93LiBJdCBpcyBhc3N1bWVkIGFzc3VtZWQgdGhh
dC4uLgorICAvLyAgYSkgbW92ZSBjb25zdHJ1Y3RvcnMgc2hvdWxkIG9ubHkgdGhyb3cgZHVlIHRv
IGFsbG9jYXRpb24gZmFpbHVyZS4KKyAgLy8gIGIpIGlmIGB2YWx1ZV90eXBlYCdzIG1vdmUgY29u
c3RydWN0b3IgYWxsb2NhdGVzLCBpdCB1c2VzIHRoZSBzYW1lCisgIC8vICAgICBhbGxvY2F0aW9u
IGZ1bmN0aW9uIGFzIHRoZSBpbmxpbmVkIHZlY3RvcidzIGFsbG9jYXRvci4KKyAgLy8gVGh1cywg
dGhlIG1vdmUgY29uc3RydWN0b3IgaXMgbm9uLXRocm93aW5nIGlmIHRoZSBhbGxvY2F0b3IgaXMg
bm9uLXRocm93aW5nCisgIC8vIG9yIGB2YWx1ZV90eXBlYCdzIG1vdmUgY29uc3RydWN0b3IgaXMg
c3BlY2lmaWVkIGFzIGBub2V4Y2VwdGAuCisgIElubGluZWRWZWN0b3IoSW5saW5lZFZlY3RvciYm
IG90aGVyKSBub2V4Y2VwdCgKKyAgICAgIGFic2w6OmFsbG9jYXRvcl9pc19ub3Rocm93PGFsbG9j
YXRvcl90eXBlPjo6dmFsdWUgfHwKKyAgICAgIHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVj
dGlibGU8dmFsdWVfdHlwZT46OnZhbHVlKQorICAgICAgOiBzdG9yYWdlXygqb3RoZXIuc3RvcmFn
ZV8uR2V0QWxsb2NQdHIoKSkgeworICAgIGlmIChJc01lbWNweU9rOjp2YWx1ZSkgeworICAgICAg
c3RvcmFnZV8uTWVtY3B5RnJvbShvdGhlci5zdG9yYWdlXyk7CisKKyAgICAgIG90aGVyLnN0b3Jh
Z2VfLlNldElubGluZWRTaXplKDApOworICAgIH0gZWxzZSBpZiAob3RoZXIuc3RvcmFnZV8uR2V0
SXNBbGxvY2F0ZWQoKSkgeworICAgICAgc3RvcmFnZV8uU2V0QWxsb2NhdGVkRGF0YShvdGhlci5z
dG9yYWdlXy5HZXRBbGxvY2F0ZWREYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG90aGVyLnN0b3JhZ2VfLkdldEFsbG9jYXRlZENhcGFjaXR5KCkpOworICAgICAgc3RvcmFn
ZV8uU2V0QWxsb2NhdGVkU2l6ZShvdGhlci5zdG9yYWdlXy5HZXRTaXplKCkpOworCisgICAgICBv
dGhlci5zdG9yYWdlXy5TZXRJbmxpbmVkU2l6ZSgwKTsKICAgICB9IGVsc2UgewotICAgICAgaWYg
KGFsbG9jYXRlZCgpKSBjbGVhcigpOwotICAgICAgLy8gQm90aCBhcmUgaW5saW5lZCBub3cuCi0g
ICAgICBpZiAoc2l6ZSgpIDwgdi5zaXplKCkpIHsKLSAgICAgICAgYXV0byBtaWQgPSBzdGQ6Om1h
a2VfbW92ZV9pdGVyYXRvcih2LmJlZ2luKCkgKyBzaXplKCkpOwotICAgICAgICBzdGQ6OmNvcHko
c3RkOjptYWtlX21vdmVfaXRlcmF0b3Iodi5iZWdpbigpKSwgbWlkLCBiZWdpbigpKTsKLSAgICAg
ICAgVW5pbml0aWFsaXplZENvcHkobWlkLCBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih2LmVuZCgp
KSwgZW5kKCkpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBuZXdfZW5kID0gc3RkOjpj
b3B5KHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKHYuYmVnaW4oKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih2LmVuZCgpKSwgYmVnaW4o
KSk7Ci0gICAgICAgIERlc3Ryb3kobmV3X2VuZCwgZW5kKCkpOwotICAgICAgfQotICAgICAgdGFn
KCkuc2V0X2lubGluZV9zaXplKHYuc2l6ZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuICp0aGlzOwot
ICB9CisgICAgICBJdGVyYXRvclZhbHVlQWRhcHRlcjxNb3ZlSXRlcmF0b3I+IG90aGVyX3ZhbHVl
cygKKyAgICAgICAgICBNb3ZlSXRlcmF0b3Iob3RoZXIuc3RvcmFnZV8uR2V0SW5saW5lZERhdGEo
KSkpOwogCi0gIElubGluZWRWZWN0b3ImIG9wZXJhdG9yPShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
dmFsdWVfdHlwZT4gaW5pdCkgewotICAgIEFzc2lnblJhbmdlKGluaXQuYmVnaW4oKSwgaW5pdC5l
bmQoKSk7Ci0gICAgcmV0dXJuICp0aGlzOworICAgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6
OkNvbnN0cnVjdEVsZW1lbnRzKAorICAgICAgICAgIHN0b3JhZ2VfLkdldEFsbG9jUHRyKCksIHN0
b3JhZ2VfLkdldElubGluZWREYXRhKCksICZvdGhlcl92YWx1ZXMsCisgICAgICAgICAgb3RoZXIu
c3RvcmFnZV8uR2V0U2l6ZSgpKTsKKworICAgICAgc3RvcmFnZV8uU2V0SW5saW5lZFNpemUob3Ro
ZXIuc3RvcmFnZV8uR2V0U2l6ZSgpKTsKKyAgICB9CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9y
Ojphc3NpZ24oKQorICAvLyBDcmVhdGVzIGFuIGlubGluZWQgdmVjdG9yIGJ5IG1vdmluZyBpbiB0
aGUgY29udGVudHMgb2YgYG90aGVyYCB3aXRoIGEgY29weQorICAvLyBvZiBgYWxsb2NgLgogICAv
LwotICAvLyBSZXBsYWNlcyB0aGUgY29udGVudHMgb2YgdGhlIGlubGluZWQgdmVjdG9yIHdpdGgg
Y29waWVzIG9mIHRob3NlIGluIHRoZQotICAvLyBpdGVyYXRvciByYW5nZSBbZmlyc3QsIGxhc3Qp
LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KLSAgdm9pZCBhc3NpZ24oCi0g
ICAgICBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsCi0gICAgICB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19pbnRlZ3JhbDxJbnB1dEl0ZXJhdG9yPjo6dmFs
dWU+Ojp0eXBlKiA9Ci0gICAgICAgICAgbnVsbHB0cikgewotICAgIEFzc2lnblJhbmdlKGZpcnN0
LCBsYXN0KTsKLSAgfQorICAvLyBOT1RFOiBpZiBgb3RoZXJgJ3MgYWxsb2NhdG9yIGlzIG5vdCBl
cXVhbCB0byBgYWxsb2NgLCBldmVuIGlmIGBvdGhlcmAKKyAgLy8gY29udGFpbnMgYWxsb2NhdGVk
IG1lbW9yeSwgdGhpcyBtb3ZlIGNvbnN0cnVjdG9yIHdpbGwgc3RpbGwgYWxsb2NhdGUuIFNpbmNl
CisgIC8vIGFsbG9jYXRpb24gaXMgcGVyZm9ybWVkLCB0aGlzIGNvbnN0cnVjdG9yIGNhbiBvbmx5
IGJlIGBub2V4Y2VwdGAgaWYgdGhlCisgIC8vIHNwZWNpZmllZCBhbGxvY2F0b3IgaXMgYWxzbyBg
bm9leGNlcHRgLgorICBJbmxpbmVkVmVjdG9yKElubGluZWRWZWN0b3ImJiBvdGhlciwgY29uc3Qg
YWxsb2NhdG9yX3R5cGUmIGFsbG9jKSBub2V4Y2VwdCgKKyAgICAgIGFic2w6OmFsbG9jYXRvcl9p
c19ub3Rocm93PGFsbG9jYXRvcl90eXBlPjo6dmFsdWUpCisgICAgICA6IHN0b3JhZ2VfKGFsbG9j
KSB7CisgICAgaWYgKElzTWVtY3B5T2s6OnZhbHVlKSB7CisgICAgICBzdG9yYWdlXy5NZW1jcHlG
cm9tKG90aGVyLnN0b3JhZ2VfKTsKIAotICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6
YXNzaWduKClgIHRvIHRha2UgdmFsdWVzIGZyb20gZWxlbWVudHMgb2YgYW4KLSAgLy8gaW5pdGlh
bGl6ZXIgbGlzdAotICB2b2lkIGFzc2lnbihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlw
ZT4gaW5pdCkgewotICAgIEFzc2lnblJhbmdlKGluaXQuYmVnaW4oKSwgaW5pdC5lbmQoKSk7Ci0g
IH0KKyAgICAgIG90aGVyLnN0b3JhZ2VfLlNldElubGluZWRTaXplKDApOworICAgIH0gZWxzZSBp
ZiAoKCpzdG9yYWdlXy5HZXRBbGxvY1B0cigpID09ICpvdGhlci5zdG9yYWdlXy5HZXRBbGxvY1B0
cigpKSAmJgorICAgICAgICAgICAgICAgb3RoZXIuc3RvcmFnZV8uR2V0SXNBbGxvY2F0ZWQoKSkg
eworICAgICAgc3RvcmFnZV8uU2V0QWxsb2NhdGVkRGF0YShvdGhlci5zdG9yYWdlXy5HZXRBbGxv
Y2F0ZWREYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLnN0b3Jh
Z2VfLkdldEFsbG9jYXRlZENhcGFjaXR5KCkpOworICAgICAgc3RvcmFnZV8uU2V0QWxsb2NhdGVk
U2l6ZShvdGhlci5zdG9yYWdlXy5HZXRTaXplKCkpOwogCi0gIC8vIE92ZXJsb2FkIG9mIGBJbmxp
bmVkVmVjdG9yOjphc3NpZ24oKWAgdG8gcmVwbGFjZSB0aGUgZmlyc3QgYG5gIGVsZW1lbnRzIG9m
Ci0gIC8vIHRoZSBpbmxpbmVkIHZlY3RvciB3aXRoIGBlbGVtYCB2YWx1ZXMuCi0gIHZvaWQgYXNz
aWduKHNpemVfdHlwZSBuLCBjb25zdCB2YWx1ZV90eXBlJiBlbGVtKSB7Ci0gICAgaWYgKG4gPD0g
c2l6ZSgpKSB7ICAvLyBQb3NzaWJseSBzaHJpbmsKLSAgICAgIHN0ZDo6ZmlsbF9uKGJlZ2luKCks
IG4sIGVsZW0pOwotICAgICAgZXJhc2UoYmVnaW4oKSArIG4sIGVuZCgpKTsKLSAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgLy8gR3JvdwotICAgIHJlc2VydmUobik7Ci0gICAgc3RkOjpmaWxsX24o
YmVnaW4oKSwgc2l6ZSgpLCBlbGVtKTsKLSAgICBpZiAoYWxsb2NhdGVkKCkpIHsKLSAgICAgIFVu
aW5pdGlhbGl6ZWRGaWxsKGFsbG9jYXRlZF9zcGFjZSgpICsgc2l6ZSgpLCBhbGxvY2F0ZWRfc3Bh
Y2UoKSArIG4sCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtKTsKLSAgICAgIHRhZygpLnNl
dF9hbGxvY2F0ZWRfc2l6ZShuKTsKKyAgICAgIG90aGVyLnN0b3JhZ2VfLlNldElubGluZWRTaXpl
KDApOwogICAgIH0gZWxzZSB7Ci0gICAgICBVbmluaXRpYWxpemVkRmlsbChpbmxpbmVkX3NwYWNl
KCkgKyBzaXplKCksIGlubGluZWRfc3BhY2UoKSArIG4sIGVsZW0pOwotICAgICAgdGFnKCkuc2V0
X2lubGluZV9zaXplKG4pOworICAgICAgc3RvcmFnZV8uSW5pdGlhbGl6ZSgKKyAgICAgICAgICBJ
dGVyYXRvclZhbHVlQWRhcHRlcjxNb3ZlSXRlcmF0b3I+KE1vdmVJdGVyYXRvcihvdGhlci5kYXRh
KCkpKSwKKyAgICAgICAgICBvdGhlci5zaXplKCkpOwogICAgIH0KICAgfQogCi0gIC8vIElubGlu
ZWRWZWN0b3I6OnNpemUoKQotICAvLwotICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVu
dHMgaW4gdGhlIGlubGluZWQgdmVjdG9yLgotICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IG5vZXhj
ZXB0IHsgcmV0dXJuIHRhZygpLnNpemUoKTsgfQorICB+SW5saW5lZFZlY3RvcigpIHt9CisKKyAg
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC8vIElubGluZWRWZWN0b3IgTWVtYmVyIEFjY2Vzc29y
cworICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjplbXB0eSgp
CisgIC8vIGBJbmxpbmVkVmVjdG9yOjplbXB0eSgpYAogICAvLwotICAvLyBDaGVja3MgaWYgdGhl
IGlubGluZWQgdmVjdG9yIGhhcyBubyBlbGVtZW50cy4KLSAgYm9vbCBlbXB0eSgpIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuIChzaXplKCkgPT0gMCk7IH0KKyAgLy8gUmV0dXJucyB3aGV0aGVyIHRo
ZSBpbmxpbmVkIHZlY3RvciBjb250YWlucyBubyBlbGVtZW50cy4KKyAgYm9vbCBlbXB0eSgpIGNv
bnN0IG5vZXhjZXB0IHsgcmV0dXJuICFzaXplKCk7IH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpj
YXBhY2l0eSgpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpzaXplKClgCiAgIC8vCi0gIC8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gYW4gaW5saW5l
ZCB2ZWN0b3IKLSAgLy8gd2l0aG91dCByZXF1aXJpbmcgYSByZWFsbG9jYXRpb24gb2YgdW5kZXJs
eWluZyBtZW1vcnkuIE5vdGUgdGhhdCBmb3IKLSAgLy8gbW9zdCBpbmxpbmVkIHZlY3RvcnMsIGBj
YXBhY2l0eSgpYCBzaG91bGQgZXF1YWwgaXRzIGluaXRpYWwgc2l6ZSBgTmA7IGZvcgotICAvLyBp
bmxpbmVkIHZlY3RvcnMgd2hpY2ggZXhjZWVkIHRoaXMgY2FwYWNpdHksIHRoZXkgd2lsbCBubyBs
b25nZXIgYmUgaW5saW5lZCwKLSAgLy8gYW5kIGBjYXBhY2l0eSgpYCB3aWxsIGVxdWFsIGl0cyBj
YXBhY2l0eSBvbiB0aGUgYWxsb2NhdGVkIGhlYXAuCi0gIHNpemVfdHlwZSBjYXBhY2l0eSgpIGNv
bnN0IG5vZXhjZXB0IHsKLSAgICByZXR1cm4gYWxsb2NhdGVkKCkgPyBhbGxvY2F0aW9uKCkuY2Fw
YWNpdHkoKSA6IE47Ci0gIH0KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGlu
IHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCBub2V4Y2VwdCB7
IHJldHVybiBzdG9yYWdlXy5HZXRTaXplKCk7IH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjptYXhf
c2l6ZSgpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjptYXhfc2l6ZSgpYAogICAvLwotICAvLyBSZXR1
cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyB0aGUgdmVjdG9yIGNhbiBob2xkLgor
ICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyB0aGUgaW5saW5lZCB2
ZWN0b3IgY2FuIGhvbGQuCiAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsK
ICAgICAvLyBPbmUgYml0IG9mIHRoZSBzaXplIHN0b3JhZ2UgaXMgdXNlZCB0byBpbmRpY2F0ZSB3
aGV0aGVyIHRoZSBpbmxpbmVkCi0gICAgLy8gdmVjdG9yIGlzIGFsbG9jYXRlZDsgYXMgYSByZXN1
bHQsIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGNvbnRhaW5lciB0aGF0Ci0gICAgLy8gd2UgY2Fu
IGV4cHJlc3MgaXMgaGFsZiBvZiB0aGUgbWF4IGZvciBvdXIgc2l6ZSB0eXBlLgotICAgIHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdHlwZT46Om1heCgpIC8gMjsKKyAgICAvLyB2ZWN0
b3IgY29udGFpbnMgYWxsb2NhdGVkIG1lbW9yeS4gQXMgYSByZXN1bHQsIHRoZSBtYXhpbXVtIHNp
emUgdGhhdCB0aGUKKyAgICAvLyBpbmxpbmVkIHZlY3RvciBjYW4gZXhwcmVzcyBpcyBoYWxmIG9m
IHRoZSBtYXggZm9yIGBzaXplX3R5cGVgLgorICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3R5cGU+OjptYXgpKCkgLyAyOwogICB9CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6ZGF0
YSgpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpjYXBhY2l0eSgpYAogICAvLwotICAvLyBSZXR1cm5z
IGEgY29uc3QgVCogcG9pbnRlciB0byBlbGVtZW50cyBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuIFRo
aXMgcG9pbnRlcgotICAvLyBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgKGJ1dCBub3QgbW9kaWZ5KSB0
aGUgY29udGFpbmVkIGVsZW1lbnRzLgotICAvLyBPbmx5IHJlc3VsdHMgd2l0aGluIHRoZSByYW5n
ZSBgWzAsc2l6ZSgpKWAgYXJlIGRlZmluZWQuCi0gIGNvbnN0X3BvaW50ZXIgZGF0YSgpIGNvbnN0
IG5vZXhjZXB0IHsKLSAgICByZXR1cm4gYWxsb2NhdGVkKCkgPyBhbGxvY2F0ZWRfc3BhY2UoKSA6
IGlubGluZWRfc3BhY2UoKTsKKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRo
YXQgY291bGQgYmUgc3RvcmVkIGluIHRoZSBpbmxpbmVkIHZlY3RvcgorICAvLyB3aXRob3V0IHJl
cXVpcmluZyBhIHJlYWxsb2NhdGlvbi4KKyAgLy8KKyAgLy8gTk9URTogZm9yIG1vc3QgaW5saW5l
ZCB2ZWN0b3JzLCBgY2FwYWNpdHkoKWAgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZQorICAvLyB0ZW1w
bGF0ZSBwYXJhbWV0ZXIgYE5gLiBGb3IgaW5saW5lZCB2ZWN0b3JzIHdoaWNoIGV4Y2VlZCB0aGlz
IGNhcGFjaXR5LAorICAvLyB0aGV5IHdpbGwgbm8gbG9uZ2VyIGJlIGlubGluZWQgYW5kIGBjYXBh
Y2l0eSgpYCB3aWxsIGVxdWFsIHRoZSBjYXBhY3RpdHkgb2YKKyAgLy8gdGhlIGFsbG9jYXRlZCBt
ZW1vcnkuCisgIHNpemVfdHlwZSBjYXBhY2l0eSgpIGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1
cm4gc3RvcmFnZV8uR2V0SXNBbGxvY2F0ZWQoKSA/IHN0b3JhZ2VfLkdldEFsbG9jYXRlZENhcGFj
aXR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0b3JhZ2VfLkdl
dElubGluZWRDYXBhY2l0eSgpOwogICB9CiAKLSAgLy8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rv
cjo6ZGF0YSgpIHRvIHJldHVybiBhIFQqIHBvaW50ZXIgdG8gZWxlbWVudHMgb2YgdGhlCi0gIC8v
IGlubGluZWQgdmVjdG9yLiBUaGlzIHBvaW50ZXIgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIGFuZCBt
b2RpZnkgdGhlIGNvbnRhaW5lZAotICAvLyBlbGVtZW50cy4KKyAgLy8gYElubGluZWRWZWN0b3I6
OmRhdGEoKWAKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGBwb2ludGVyYCB0byB0aGUgZWxlbWVudHMg
b2YgdGhlIGlubGluZWQgdmVjdG9yLiBUaGlzIHBvaW50ZXIKKyAgLy8gY2FuIGJlIHVzZWQgdG8g
YWNjZXNzIGFuZCBtb2RpZnkgdGhlIGNvbnRhaW5lZCBlbGVtZW50cy4KKyAgLy8KKyAgLy8gTk9U
RTogb25seSBlbGVtZW50cyB3aXRoaW4gW2BkYXRhKClgLCBgZGF0YSgpICsgc2l6ZSgpYCkgYXJl
IHZhbGlkLgogICBwb2ludGVyIGRhdGEoKSBub2V4Y2VwdCB7Ci0gICAgcmV0dXJuIGFsbG9jYXRl
ZCgpID8gYWxsb2NhdGVkX3NwYWNlKCkgOiBpbmxpbmVkX3NwYWNlKCk7CisgICAgcmV0dXJuIHN0
b3JhZ2VfLkdldElzQWxsb2NhdGVkKCkgPyBzdG9yYWdlXy5HZXRBbGxvY2F0ZWREYXRhKCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0b3JhZ2VfLkdldElubGluZWRE
YXRhKCk7CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpjbGVhcigpCisgIC8vIE92ZXJsb2Fk
IG9mIGBJbmxpbmVkVmVjdG9yOjpkYXRhKClgIHRoYXQgcmV0dXJucyBhIGBjb25zdF9wb2ludGVy
YCB0byB0aGUKKyAgLy8gZWxlbWVudHMgb2YgdGhlIGlubGluZWQgdmVjdG9yLiBUaGlzIHBvaW50
ZXIgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIGJ1dCBub3QKKyAgLy8gbW9kaWZ5IHRoZSBjb250YWlu
ZWQgZWxlbWVudHMuCiAgIC8vCi0gIC8vIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGlu
bGluZWQgdmVjdG9yLgotICB2b2lkIGNsZWFyKCkgbm9leGNlcHQgewotICAgIHNpemVfdHlwZSBz
ID0gc2l6ZSgpOwotICAgIGlmIChhbGxvY2F0ZWQoKSkgewotICAgICAgRGVzdHJveShhbGxvY2F0
ZWRfc3BhY2UoKSwgYWxsb2NhdGVkX3NwYWNlKCkgKyBzKTsKLSAgICAgIGFsbG9jYXRpb24oKS5E
ZWFsbG9jKGFsbG9jYXRvcigpKTsKLSAgICB9IGVsc2UgaWYgKHMgIT0gMCkgeyAgLy8gZG8gbm90
aGluZyBmb3IgZW1wdHkgdmVjdG9ycwotICAgICAgRGVzdHJveShpbmxpbmVkX3NwYWNlKCksIGlu
bGluZWRfc3BhY2UoKSArIHMpOwotICAgIH0KLSAgICB0YWcoKSA9IFRhZygpOworICAvLyBOT1RF
OiBvbmx5IGVsZW1lbnRzIHdpdGhpbiBbYGRhdGEoKWAsIGBkYXRhKCkgKyBzaXplKClgKSBhcmUg
dmFsaWQuCisgIGNvbnN0X3BvaW50ZXIgZGF0YSgpIGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1
cm4gc3RvcmFnZV8uR2V0SXNBbGxvY2F0ZWQoKSA/IHN0b3JhZ2VfLkdldEFsbG9jYXRlZERhdGEo
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RvcmFnZV8uR2V0SW5s
aW5lZERhdGEoKTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OmF0KCkKKyAgLy8gYElubGlu
ZWRWZWN0b3I6Om9wZXJhdG9yW10oLi4uKWAKICAgLy8KLSAgLy8gUmV0dXJucyB0aGUgaXRoIGVs
ZW1lbnQgb2YgYW4gaW5saW5lZCB2ZWN0b3IuCi0gIGNvbnN0IHZhbHVlX3R5cGUmIGF0KHNpemVf
dHlwZSBpKSBjb25zdCB7Ci0gICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShpID49IHNpemUoKSkp
IHsKLSAgICAgIGJhc2VfaW50ZXJuYWw6OlRocm93U3RkT3V0T2ZSYW5nZSgKLSAgICAgICAgICAi
SW5saW5lZFZlY3Rvcjo6YXQgZmFpbGVkIGJvdW5kcyBjaGVjayIpOwotICAgIH0KKyAgLy8gUmV0
dXJucyBhIGByZWZlcmVuY2VgIHRvIHRoZSBgaWB0aCBlbGVtZW50IG9mIHRoZSBpbmxpbmVkIHZl
Y3Rvci4KKyAgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIGkpIHsKKyAgICBhc3NlcnQo
aSA8IHNpemUoKSk7CisKICAgICByZXR1cm4gZGF0YSgpW2ldOwogICB9CiAKLSAgLy8gSW5saW5l
ZFZlY3Rvcjo6b3BlcmF0b3JbXQotICAvLwotICAvLyBSZXR1cm5zIHRoZSBpdGggZWxlbWVudCBv
ZiBhbiBpbmxpbmVkIHZlY3RvciB1c2luZyB0aGUgYXJyYXkgb3BlcmF0b3IuCi0gIGNvbnN0IHZh
bHVlX3R5cGUmIG9wZXJhdG9yW10oc2l6ZV90eXBlIGkpIGNvbnN0IHsKKyAgLy8gT3ZlcmxvYWQg
b2YgYElubGluZWRWZWN0b3I6Om9wZXJhdG9yW10oLi4uKWAgdGhhdCByZXR1cm5zIGEKKyAgLy8g
YGNvbnN0X3JlZmVyZW5jZWAgdG8gdGhlIGBpYHRoIGVsZW1lbnQgb2YgdGhlIGlubGluZWQgdmVj
dG9yLgorICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgaSkgY29uc3Qgewog
ICAgIGFzc2VydChpIDwgc2l6ZSgpKTsKKwogICAgIHJldHVybiBkYXRhKClbaV07CiAgIH0KIAot
ICAvLyBPdmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjphdCgpIHRvIHJldHVybiB0aGUgaXRoIGVs
ZW1lbnQgb2YgYW4gaW5saW5lZAotICAvLyB2ZWN0b3IuCi0gIHZhbHVlX3R5cGUmIGF0KHNpemVf
dHlwZSBpKSB7Ci0gICAgaWYgKGkgPj0gc2l6ZSgpKSB7CisgIC8vIGBJbmxpbmVkVmVjdG9yOjph
dCguLi4pYAorICAvLworICAvLyBSZXR1cm5zIGEgYHJlZmVyZW5jZWAgdG8gdGhlIGBpYHRoIGVs
ZW1lbnQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICAvLworICAvLyBOT1RFOiBpZiBgaWAgaXMg
bm90IHdpdGhpbiB0aGUgcmVxdWlyZWQgcmFuZ2Ugb2YgYElubGluZWRWZWN0b3I6OmF0KC4uLilg
LAorICAvLyBpbiBib3RoIGRlYnVnIGFuZCBub24tZGVidWcgYnVpbGRzLCBgc3RkOjpvdXRfb2Zf
cmFuZ2VgIHdpbGwgYmUgdGhyb3duLgorICByZWZlcmVuY2UgYXQoc2l6ZV90eXBlIGkpIHsKKyAg
ICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGkgPj0gc2l6ZSgpKSkgewogICAgICAgYmFzZV9pbnRl
cm5hbDo6VGhyb3dTdGRPdXRPZlJhbmdlKAotICAgICAgICAgICJJbmxpbmVkVmVjdG9yOjphdCBm
YWlsZWQgYm91bmRzIGNoZWNrIik7CisgICAgICAgICAgImBJbmxpbmVkVmVjdG9yOjphdChzaXpl
X3R5cGUpYCBmYWlsZWQgYm91bmRzIGNoZWNrIik7CiAgICAgfQotICAgIHJldHVybiBkYXRhKClb
aV07Ci0gIH0KIAotICAvLyBPdmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjpvcGVyYXRvcltdIHRv
IHJldHVybiB0aGUgaXRoIGVsZW1lbnQgb2YgYW4KLSAgLy8gaW5saW5lZCB2ZWN0b3IuCi0gIHZh
bHVlX3R5cGUmIG9wZXJhdG9yW10oc2l6ZV90eXBlIGkpIHsKLSAgICBhc3NlcnQoaSA8IHNpemUo
KSk7CiAgICAgcmV0dXJuIGRhdGEoKVtpXTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OmJh
Y2soKQorICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6YXQoLi4uKWAgdGhhdCByZXR1
cm5zIGEgYGNvbnN0X3JlZmVyZW5jZWAgdG8KKyAgLy8gdGhlIGBpYHRoIGVsZW1lbnQgb2YgdGhl
IGlubGluZWQgdmVjdG9yLgogICAvLwotICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBs
YXN0IGVsZW1lbnQgb2YgYW4gaW5saW5lZCB2ZWN0b3IuCi0gIHZhbHVlX3R5cGUmIGJhY2soKSB7
Ci0gICAgYXNzZXJ0KCFlbXB0eSgpKTsKLSAgICByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7Ci0gIH0K
KyAgLy8gTk9URTogaWYgYGlgIGlzIG5vdCB3aXRoaW4gdGhlIHJlcXVpcmVkIHJhbmdlIG9mIGBJ
bmxpbmVkVmVjdG9yOjphdCguLi4pYCwKKyAgLy8gaW4gYm90aCBkZWJ1ZyBhbmQgbm9uLWRlYnVn
IGJ1aWxkcywgYHN0ZDo6b3V0X29mX3JhbmdlYCB3aWxsIGJlIHRocm93bi4KKyAgY29uc3RfcmVm
ZXJlbmNlIGF0KHNpemVfdHlwZSBpKSBjb25zdCB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxT
RShpID49IHNpemUoKSkpIHsKKyAgICAgIGJhc2VfaW50ZXJuYWw6OlRocm93U3RkT3V0T2ZSYW5n
ZSgKKyAgICAgICAgICAiYElubGluZWRWZWN0b3I6OmF0KHNpemVfdHlwZSkgY29uc3RgIGZhaWxl
ZCBib3VuZHMgY2hlY2siKTsKKyAgICB9CiAKLSAgLy8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rv
cjo6YmFjaygpIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGxhc3QgZWxlbWVudAotICAvLyBv
ZiBhbiBpbmxpbmVkIHZlY3RvciBvZiBjb25zdCB2YWx1ZXMuCi0gIGNvbnN0IHZhbHVlX3R5cGUm
IGJhY2soKSBjb25zdCB7Ci0gICAgYXNzZXJ0KCFlbXB0eSgpKTsKLSAgICByZXR1cm4gYXQoc2l6
ZSgpIC0gMSk7CisgICAgcmV0dXJuIGRhdGEoKVtpXTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0
b3I6OmZyb250KCkKKyAgLy8gYElubGluZWRWZWN0b3I6OmZyb250KClgCiAgIC8vCi0gIC8vIFJl
dHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YgYW4gaW5saW5lZCB2ZWN0
b3IuCi0gIHZhbHVlX3R5cGUmIGZyb250KCkgeworICAvLyBSZXR1cm5zIGEgYHJlZmVyZW5jZWAg
dG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICByZWZlcmVuY2Ug
ZnJvbnQoKSB7CiAgICAgYXNzZXJ0KCFlbXB0eSgpKTsKKwogICAgIHJldHVybiBhdCgwKTsKICAg
fQogCi0gIC8vIE92ZXJsb2FkIG9mIElubGluZWRWZWN0b3I6OmZyb250KCkgcmV0dXJucyBhIHJl
ZmVyZW5jZSB0byB0aGUgZmlyc3QgZWxlbWVudAotICAvLyBvZiBhbiBpbmxpbmVkIHZlY3RvciBv
ZiBjb25zdCB2YWx1ZXMuCi0gIGNvbnN0IHZhbHVlX3R5cGUmIGZyb250KCkgY29uc3QgeworICAv
LyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6ZnJvbnQoKWAgdGhhdCByZXR1cm5zIGEgYGNv
bnN0X3JlZmVyZW5jZWAgdG8KKyAgLy8gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGlubGluZWQg
dmVjdG9yLgorICBjb25zdF9yZWZlcmVuY2UgZnJvbnQoKSBjb25zdCB7CiAgICAgYXNzZXJ0KCFl
bXB0eSgpKTsKKwogICAgIHJldHVybiBhdCgwKTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6
OmVtcGxhY2VfYmFjaygpCi0gIC8vCi0gIC8vIENvbnN0cnVjdHMgYW5kIGFwcGVuZHMgYW4gb2Jq
ZWN0IHRvIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgLy8gYElubGluZWRWZWN0b3I6OmJhY2soKWAK
ICAgLy8KLSAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudC4K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIHZhbHVlX3R5cGUmIGVtcGxhY2VfYmFj
ayhBcmdzJiYuLi4gYXJncykgewotICAgIHNpemVfdHlwZSBzID0gc2l6ZSgpOwotICAgIGFzc2Vy
dChzIDw9IGNhcGFjaXR5KCkpOwotICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UocyA9PSBjYXBh
Y2l0eSgpKSkgewotICAgICAgcmV0dXJuIEdyb3dBbmRFbXBsYWNlQmFjayhzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOwotICAgIH0KLSAgICBhc3NlcnQocyA8IGNhcGFjaXR5KCkpOworICAv
LyBSZXR1cm5zIGEgYHJlZmVyZW5jZWAgdG8gdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgaW5saW5l
ZCB2ZWN0b3IuCisgIHJlZmVyZW5jZSBiYWNrKCkgeworICAgIGFzc2VydCghZW1wdHkoKSk7CiAK
LSAgICB2YWx1ZV90eXBlKiBzcGFjZTsKLSAgICBpZiAoYWxsb2NhdGVkKCkpIHsKLSAgICAgIHRh
ZygpLnNldF9hbGxvY2F0ZWRfc2l6ZShzICsgMSk7Ci0gICAgICBzcGFjZSA9IGFsbG9jYXRlZF9z
cGFjZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICB0YWcoKS5zZXRfaW5saW5lX3NpemUocyArIDEp
OwotICAgICAgc3BhY2UgPSBpbmxpbmVkX3NwYWNlKCk7Ci0gICAgfQotICAgIHJldHVybiBDb25z
dHJ1Y3Qoc3BhY2UgKyBzLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVy
biBhdChzaXplKCkgLSAxKTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OnB1c2hfYmFjaygp
Ci0gIC8vCi0gIC8vIEFwcGVuZHMgYSBjb25zdCBlbGVtZW50IHRvIHRoZSBpbmxpbmVkIHZlY3Rv
ci4KLSAgdm9pZCBwdXNoX2JhY2soY29uc3QgdmFsdWVfdHlwZSYgdCkgeyBlbXBsYWNlX2JhY2so
dCk7IH0KLQotICAvLyBPdmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjpwdXNoX2JhY2soKSB0byBh
cHBlbmQgYSBtb3ZlLW9ubHkgZWxlbWVudCB0byB0aGUKLSAgLy8gaW5saW5lZCB2ZWN0b3IuCi0g
IHZvaWQgcHVzaF9iYWNrKHZhbHVlX3R5cGUmJiB0KSB7IGVtcGxhY2VfYmFjayhzdGQ6Om1vdmUo
dCkpOyB9Ci0KLSAgLy8gSW5saW5lZFZlY3Rvcjo6cG9wX2JhY2soKQotICAvLwotICAvLyBSZW1v
dmVzIHRoZSBsYXN0IGVsZW1lbnQgKHdoaWNoIGlzIGRlc3Ryb3llZCkgaW4gdGhlIGlubGluZWQg
dmVjdG9yLgotICB2b2lkIHBvcF9iYWNrKCkgeworICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZl
Y3Rvcjo6YmFjaygpYCB0aGF0IHJldHVybnMgYSBgY29uc3RfcmVmZXJlbmNlYCB0byB0aGUKKyAg
Ly8gbGFzdCBlbGVtZW50IG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgY29uc3RfcmVmZXJlbmNl
IGJhY2soKSBjb25zdCB7CiAgICAgYXNzZXJ0KCFlbXB0eSgpKTsKLSAgICBzaXplX3R5cGUgcyA9
IHNpemUoKTsKLSAgICBpZiAoYWxsb2NhdGVkKCkpIHsKLSAgICAgIERlc3Ryb3koYWxsb2NhdGVk
X3NwYWNlKCkgKyBzIC0gMSwgYWxsb2NhdGVkX3NwYWNlKCkgKyBzKTsKLSAgICAgIHRhZygpLnNl
dF9hbGxvY2F0ZWRfc2l6ZShzIC0gMSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIERlc3Ryb3koaW5s
aW5lZF9zcGFjZSgpICsgcyAtIDEsIGlubGluZWRfc3BhY2UoKSArIHMpOwotICAgICAgdGFnKCku
c2V0X2lubGluZV9zaXplKHMgLSAxKTsKLSAgICB9Ci0gIH0KLQotICAvLyBJbmxpbmVkVmVjdG9y
OjpyZXNpemUoKQotICAvLwotICAvLyBSZXNpemVzIHRoZSBpbmxpbmVkIHZlY3RvciB0byBjb250
YWluIGBuYCBlbGVtZW50cy4gSWYgYG5gIGlzIHNtYWxsZXIgdGhhbgotICAvLyB0aGUgaW5saW5l
ZCB2ZWN0b3IncyBjdXJyZW50IHNpemUsIGV4dHJhIGVsZW1lbnRzIGFyZSBkZXN0cm95ZWQuIElm
IGBuYCBpcwotICAvLyBsYXJnZXIgdGhhbiB0aGUgaW5pdGlhbCBzaXplLCBuZXcgZWxlbWVudHMg
YXJlIHZhbHVlLWluaXRpYWxpemVkLgotICB2b2lkIHJlc2l6ZShzaXplX3R5cGUgbik7CiAKLSAg
Ly8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6cmVzaXplKCkgdG8gcmVzaXplIHRoZSBpbmxp
bmVkIHZlY3RvciB0byBjb250YWluCi0gIC8vIGBuYCBlbGVtZW50cy4gSWYgYG5gIGlzIGxhcmdl
ciB0aGFuIHRoZSBjdXJyZW50IHNpemUsIGVub3VnaCBjb3BpZXMgb2YKLSAgLy8gYGVsZW1gIGFy
ZSBhcHBlbmRlZCB0byBpbmNyZWFzZSBpdHMgc2l6ZSB0byBgbmAuCi0gIHZvaWQgcmVzaXplKHNp
emVfdHlwZSBuLCBjb25zdCB2YWx1ZV90eXBlJiBlbGVtKTsKKyAgICByZXR1cm4gYXQoc2l6ZSgp
IC0gMSk7CisgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpiZWdpbigpCisgIC8vIGBJbmxpbmVk
VmVjdG9yOjpiZWdpbigpYAogICAvLwotICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICAvLyBSZXR1cm5zIGFuIGBpdGVyYXRv
cmAgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCiAgIGl0ZXJhdG9yIGJl
Z2luKCkgbm9leGNlcHQgeyByZXR1cm4gZGF0YSgpOyB9CiAKLSAgLy8gT3ZlcmxvYWQgb2YgSW5s
aW5lZFZlY3Rvcjo6YmVnaW4oKSBmb3IgcmV0dXJuaW5nIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhl
Ci0gIC8vIGJlZ2lubmluZyBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCisgIC8vIE92ZXJsb2FkIG9m
IGBJbmxpbmVkVmVjdG9yOjpiZWdpbigpYCB0aGF0IHJldHVybnMgYSBgY29uc3RfaXRlcmF0b3Jg
IHRvCisgIC8vIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlubGluZWQgdmVjdG9yLgogICBjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGRhdGEoKTsgfQogCi0gIC8v
IElubGluZWRWZWN0b3I6OmNiZWdpbigpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjplbmQoKWAKICAg
Ly8KLSAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGlubGluZWQgdmVjdG9yLgotICBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCBub2V4Y2Vw
dCB7IHJldHVybiBiZWdpbigpOyB9Ci0KLSAgLy8gSW5saW5lZFZlY3Rvcjo6ZW5kKCkKLSAgLy8K
LSAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBpbmxpbmVkIHZlY3Rv
ci4KKyAgLy8gUmV0dXJucyBhbiBgaXRlcmF0b3JgIHRvIHRoZSBlbmQgb2YgdGhlIGlubGluZWQg
dmVjdG9yLgogICBpdGVyYXRvciBlbmQoKSBub2V4Y2VwdCB7IHJldHVybiBkYXRhKCkgKyBzaXpl
KCk7IH0KIAotICAvLyBPdmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjplbmQoKSBmb3IgcmV0dXJu
aW5nIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGVuZAotICAvLyBvZiB0aGUgaW5saW5lZCB2ZWN0
b3IuCisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjplbmQoKWAgdGhhdCByZXR1cm5z
IGEgYGNvbnN0X2l0ZXJhdG9yYCB0byB0aGUKKyAgLy8gZW5kIG9mIHRoZSBpbmxpbmVkIHZlY3Rv
ci4KICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gZGF0YSgp
ICsgc2l6ZSgpOyB9CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6Y2VuZCgpCisgIC8vIGBJbmxpbmVk
VmVjdG9yOjpjYmVnaW4oKWAKICAgLy8KLSAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRv
IHRoZSBlbmQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICAvLyBSZXR1cm5zIGEgYGNvbnN0X2l0
ZXJhdG9yYCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgY29uc3Rf
aXRlcmF0b3IgY2JlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gYmVnaW4oKTsgfQorCisg
IC8vIGBJbmxpbmVkVmVjdG9yOjpjZW5kKClgCisgIC8vCisgIC8vIFJldHVybnMgYSBgY29uc3Rf
aXRlcmF0b3JgIHRvIHRoZSBlbmQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgogICBjb25zdF9pdGVy
YXRvciBjZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gZW5kKCk7IH0KIAotICAvLyBJbmxp
bmVkVmVjdG9yOjpyYmVnaW4oKQorICAvLyBgSW5saW5lZFZlY3Rvcjo6cmJlZ2luKClgCiAgIC8v
Ci0gIC8vIFJldHVybnMgYSByZXZlcnNlIGl0ZXJhdG9yIGZyb20gdGhlIGVuZCBvZiB0aGUgaW5s
aW5lZCB2ZWN0b3IuCisgIC8vIFJldHVybnMgYSBgcmV2ZXJzZV9pdGVyYXRvcmAgZnJvbSB0aGUg
ZW5kIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBu
b2V4Y2VwdCB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQogCi0gIC8vIE92ZXJs
b2FkIG9mIElubGluZWRWZWN0b3I6OnJiZWdpbigpIGZvciByZXR1cm5pbmcgYSBjb25zdCByZXZl
cnNlIGl0ZXJhdG9yCi0gIC8vIGZyb20gdGhlIGVuZCBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCisg
IC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjpyYmVnaW4oKWAgdGhhdCByZXR1cm5zIGEK
KyAgLy8gYGNvbnN0X3JldmVyc2VfaXRlcmF0b3JgIGZyb20gdGhlIGVuZCBvZiB0aGUgaW5saW5l
ZCB2ZWN0b3IuCiAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3Qgbm9leGNl
cHQgewogICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsKICAgfQogCi0g
IC8vIElubGluZWRWZWN0b3I6OmNyYmVnaW4oKQotICAvLwotICAvLyBSZXR1cm5zIGEgY29uc3Qg
cmV2ZXJzZSBpdGVyYXRvciBmcm9tIHRoZSBlbmQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgotICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBy
YmVnaW4oKTsgfQotCi0gIC8vIElubGluZWRWZWN0b3I6OnJlbmQoKQorICAvLyBgSW5saW5lZFZl
Y3Rvcjo6cmVuZCgpYAogICAvLwotICAvLyBSZXR1cm5zIGEgcmV2ZXJzZSBpdGVyYXRvciBmcm9t
IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICAvLyBSZXR1cm5zIGEgYHJl
dmVyc2VfaXRlcmF0b3JgIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5saW5lZCB2ZWN0b3Iu
CiAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRl
cmF0b3IoYmVnaW4oKSk7IH0KIAotICAvLyBPdmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjpyZW5k
KCkgZm9yIHJldHVybmluZyBhIGNvbnN0IHJldmVyc2UgaXRlcmF0b3IKKyAgLy8gT3ZlcmxvYWQg
b2YgYElubGluZWRWZWN0b3I6OnJlbmQoKWAgdGhhdCByZXR1cm5zIGEgYGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3JgCiAgIC8vIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5saW5lZCB2ZWN0b3Iu
CiAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsKICAgICBy
ZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsKICAgfQogCi0gIC8vIElubGlu
ZWRWZWN0b3I6OmNyZW5kKCkKKyAgLy8gYElubGluZWRWZWN0b3I6OmNyYmVnaW4oKWAKICAgLy8K
LSAgLy8gUmV0dXJucyBhIHJldmVyc2UgaXRlcmF0b3IgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBpbmxpbmVkIHZlY3Rvci4KKyAgLy8gUmV0dXJucyBhIGBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
YCBmcm9tIHRoZSBlbmQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByYmVnaW4oKTsgfQorCisg
IC8vIGBJbmxpbmVkVmVjdG9yOjpjcmVuZCgpYAorICAvLworICAvLyBSZXR1cm5zIGEgYGNvbnN0
X3JldmVyc2VfaXRlcmF0b3JgIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5saW5lZAorICAv
LyB2ZWN0b3IuCiAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCBub2V4Y2Vw
dCB7IHJldHVybiByZW5kKCk7IH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjplbXBsYWNlKCkKKyAg
Ly8gYElubGluZWRWZWN0b3I6OmdldF9hbGxvY2F0b3IoKWAKICAgLy8KLSAgLy8gQ29uc3RydWN0
cyBhbmQgaW5zZXJ0cyBhbiBvYmplY3QgdG8gdGhlIGlubGluZWQgdmVjdG9yIGF0IHRoZSBnaXZl
bgotICAvLyBgcG9zaXRpb25gLCByZXR1cm5pbmcgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhl
IG5ld2x5IGVtcGxhY2VkIGVsZW1lbnQuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgot
ICBpdGVyYXRvciBlbXBsYWNlKGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBBcmdzJiYuLi4gYXJn
cyk7CisgIC8vIFJldHVybnMgYSBjb3B5IG9mIHRoZSBpbmxpbmVkIHZlY3RvcidzIGFsbG9jYXRv
ci4KKyAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuICpzdG9y
YWdlXy5HZXRBbGxvY1B0cigpOyB9CisKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC8vIElu
bGluZWRWZWN0b3IgTWVtYmVyIE11dGF0b3JzCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0g
IC8vIElubGluZWRWZWN0b3I6Omluc2VydCgpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpvcGVyYXRv
cj0oLi4uKWAKICAgLy8KLSAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQg
dmFsdWUgYXQgYHBvc2l0aW9uYCwgcmV0dXJuaW5nIGFuCi0gIC8vIGl0ZXJhdG9yIHBvaW50aW5n
IHRvIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50LgotICBpdGVyYXRvciBpbnNlcnQoY29uc3Rf
aXRlcmF0b3IgcG9zaXRpb24sIGNvbnN0IHZhbHVlX3R5cGUmIHYpIHsKLSAgICByZXR1cm4gZW1w
bGFjZShwb3NpdGlvbiwgdik7Ci0gIH0KKyAgLy8gUmVwbGFjZXMgdGhlIGVsZW1lbnRzIG9mIHRo
ZSBpbmxpbmVkIHZlY3RvciB3aXRoIGNvcGllcyBvZiB0aGUgZWxlbWVudHMgb2YKKyAgLy8gYGxp
c3RgLgorICBJbmxpbmVkVmVjdG9yJiBvcGVyYXRvcj0oc3RkOjppbml0aWFsaXplcl9saXN0PHZh
bHVlX3R5cGU+IGxpc3QpIHsKKyAgICBhc3NpZ24obGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsK
IAotICAvLyBPdmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjppbnNlcnQoKSBmb3IgaW5zZXJ0aW5n
IGFuIGVsZW1lbnQgb2YgdGhlCi0gIC8vIHNwZWNpZmllZCBydmFsdWUsIHJldHVybmluZyBhbiBp
dGVyYXRvciBwb2ludGluZyB0byB0aGUgbmV3bHkgaW5zZXJ0ZWQKLSAgLy8gZWxlbWVudC4KLSAg
aXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCB2YWx1ZV90eXBlJiYgdikg
ewotICAgIHJldHVybiBlbXBsYWNlKHBvc2l0aW9uLCBzdGQ6Om1vdmUodikpOworICAgIHJldHVy
biAqdGhpczsKICAgfQogCi0gIC8vIE92ZXJsb2FkIG9mIElubGluZWRWZWN0b3I6Omluc2VydCgp
IGZvciBpbnNlcnRpbmcgYG5gIGVsZW1lbnRzIG9mIHRoZQotICAvLyBzcGVjaWZpZWQgdmFsdWUg
YXQgYHBvc2l0aW9uYCwgcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBmaXJz
dAotICAvLyBvZiB0aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudHMuCi0gIGl0ZXJhdG9yIGluc2Vy
dChjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwgc2l6ZV90eXBlIG4sIGNvbnN0IHZhbHVlX3R5cGUm
IHYpIHsKLSAgICByZXR1cm4gSW5zZXJ0V2l0aENvdW50KHBvc2l0aW9uLCBuLCB2KTsKLSAgfQor
ICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6b3BlcmF0b3I9KC4uLilgIHRoYXQgcmVw
bGFjZXMgdGhlIGVsZW1lbnRzIG9mCisgIC8vIHRoZSBpbmxpbmVkIHZlY3RvciB3aXRoIGNvcGll
cyBvZiB0aGUgZWxlbWVudHMgb2YgYG90aGVyYC4KKyAgSW5saW5lZFZlY3RvciYgb3BlcmF0b3I9
KGNvbnN0IElubGluZWRWZWN0b3ImIG90aGVyKSB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVF
KHRoaXMgIT0gc3RkOjphZGRyZXNzb2Yob3RoZXIpKSkgeworICAgICAgY29uc3RfcG9pbnRlciBv
dGhlcl9kYXRhID0gb3RoZXIuZGF0YSgpOworICAgICAgYXNzaWduKG90aGVyX2RhdGEsIG90aGVy
X2RhdGEgKyBvdGhlci5zaXplKCkpOworICAgIH0KIAotICAvLyBPdmVybG9hZCBvZiBgSW5saW5l
ZFZlY3Rvcjo6aW5zZXJ0KClgIHRvIGRpc2FtYmlndWF0ZSB0aGUgdHdvCi0gIC8vIHRocmVlLWFy
Z3VtZW50IG92ZXJsb2FkcyBvZiBgaW5zZXJ0KClgLCByZXR1cm5pbmcgYW4gaXRlcmF0b3IgcG9p
bnRpbmcgdG8KLSAgLy8gdGhlIGZpcnN0IG9mIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50cy4K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsCi0gICAgICAgICAgICB0eXBlbmFt
ZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8Ci0gICAgICAg
ICAgICAgICAgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcj46Oml0
ZXJhdG9yX2NhdGVnb3J5LAotICAgICAgICAgICAgICAgIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFn
Pjo6dmFsdWU+Ojp0eXBlPgotICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zaXRp
b24sIElucHV0SXRlcmF0b3IgZmlyc3QsCi0gICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9y
IGxhc3QpIHsKLSAgICB1c2luZyBJdGVyVHlwZSA9Ci0gICAgICAgIHR5cGVuYW1lIHN0ZDo6aXRl
cmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeTsKLSAgICByZXR1
cm4gSW5zZXJ0V2l0aFJhbmdlKHBvc2l0aW9uLCBmaXJzdCwgbGFzdCwgSXRlclR5cGUoKSk7Cisg
ICAgcmV0dXJuICp0aGlzOwogICB9CiAKLSAgLy8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6
aW5zZXJ0KCkgZm9yIGluc2VydGluZyBhIGxpc3Qgb2YgZWxlbWVudHMgYXQKLSAgLy8gYHBvc2l0
aW9uYCwgcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBvZiB0aGUg
bmV3bHkKLSAgLy8gaW5zZXJ0ZWQgZWxlbWVudHMuCi0gIGl0ZXJhdG9yIGluc2VydChjb25zdF9p
dGVyYXRvciBwb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDx2YWx1ZV90eXBlPiBpbml0KSB7Ci0gICAgcmV0dXJuIGluc2VydChwb3NpdGlvbiwgaW5pdC5i
ZWdpbigpLCBpbml0LmVuZCgpKTsKKyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6Om9w
ZXJhdG9yPSguLi4pYCB0aGF0IG1vdmVzIHRoZSBlbGVtZW50cyBvZgorICAvLyBgb3RoZXJgIGlu
dG8gdGhlIGlubGluZWQgdmVjdG9yLgorICAvLworICAvLyBOT1RFOiBhcyBhIHJlc3VsdCBvZiBj
YWxsaW5nIHRoaXMgb3ZlcmxvYWQsIGBvdGhlcmAgaXMgbGVmdCBpbiBhIHZhbGlkIGJ1dAorICAv
LyB1bnNwZWNpZmllZCBzdGF0ZS4KKyAgSW5saW5lZFZlY3RvciYgb3BlcmF0b3I9KElubGluZWRW
ZWN0b3ImJiBvdGhlcikgeworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRSh0aGlzICE9IHN0ZDo6
YWRkcmVzc29mKG90aGVyKSkpIHsKKyAgICAgIGlmIChJc01lbWNweU9rOjp2YWx1ZSB8fCBvdGhl
ci5zdG9yYWdlXy5HZXRJc0FsbG9jYXRlZCgpKSB7CisgICAgICAgIGlubGluZWRfdmVjdG9yX2lu
dGVybmFsOjpEZXN0cm95RWxlbWVudHMoc3RvcmFnZV8uR2V0QWxsb2NQdHIoKSwgZGF0YSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUoKSk7
CisgICAgICAgIHN0b3JhZ2VfLkRlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICAgICAgICBzdG9y
YWdlXy5NZW1jcHlGcm9tKG90aGVyLnN0b3JhZ2VfKTsKKworICAgICAgICBvdGhlci5zdG9yYWdl
Xy5TZXRJbmxpbmVkU2l6ZSgwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHN0b3JhZ2VfLkFz
c2lnbihJdGVyYXRvclZhbHVlQWRhcHRlcjxNb3ZlSXRlcmF0b3I+KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1vdmVJdGVyYXRvcihvdGhlci5zdG9yYWdlXy5HZXRJbmxpbmVkRGF0YSgp
KSksCisgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5zaXplKCkpOworICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiAqdGhpczsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OmVyYXNl
KCkKKyAgLy8gYElubGluZWRWZWN0b3I6OmFzc2lnbiguLi4pYAogICAvLwotICAvLyBFcmFzZXMg
dGhlIGVsZW1lbnQgYXQgYHBvc2l0aW9uYCBvZiB0aGUgaW5saW5lZCB2ZWN0b3IsIHJldHVybmlu
ZyBhbgotICAvLyBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZm9sbG93aW5nIGVsZW1lbnQgb3Ig
dGhlIGNvbnRhaW5lcidzIGVuZCBpZiB0aGUKLSAgLy8gbGFzdCBlbGVtZW50IHdhcyBlcmFzZWQu
Ci0gIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKSB7Ci0gICAgYXNzZXJ0
KHBvc2l0aW9uID49IGJlZ2luKCkpOwotICAgIGFzc2VydChwb3NpdGlvbiA8IGVuZCgpKTsKLQot
ICAgIGl0ZXJhdG9yIHBvcyA9IGNvbnN0X2Nhc3Q8aXRlcmF0b3I+KHBvc2l0aW9uKTsKLSAgICBz
dGQ6Om1vdmUocG9zICsgMSwgZW5kKCksIHBvcyk7Ci0gICAgcG9wX2JhY2soKTsKLSAgICByZXR1
cm4gcG9zOworICAvLyBSZXBsYWNlcyB0aGUgY29udGVudHMgb2YgdGhlIGlubGluZWQgdmVjdG9y
IHdpdGggYG5gIGNvcGllcyBvZiBgdmAuCisgIHZvaWQgYXNzaWduKHNpemVfdHlwZSBuLCBjb25z
dF9yZWZlcmVuY2UgdikgeworICAgIHN0b3JhZ2VfLkFzc2lnbihDb3B5VmFsdWVBZGFwdGVyKHYp
LCBuKTsKICAgfQogCi0gIC8vIE92ZXJsb2FkIG9mIElubGluZWRWZWN0b3I6OmVyYXNlKCkgZm9y
IGVyYXNpbmcgYWxsIGVsZW1lbnRzIGluIHRoZQotICAvLyBpdGVyYXRvciByYW5nZSBbZmlyc3Qs
IGxhc3QpIGluIHRoZSBpbmxpbmVkIHZlY3RvciwgcmV0dXJuaW5nIGFuIGl0ZXJhdG9yCi0gIC8v
IHBvaW50aW5nIHRvIHRoZSBmaXJzdCBlbGVtZW50IGZvbGxvd2luZyB0aGUgcmFuZ2UgZXJhc2Vk
LCBvciB0aGUKLSAgLy8gY29udGFpbmVyJ3MgZW5kIGlmIHJhbmdlIGluY2x1ZGVkIHRoZSBjb250
YWluZXIncyBsYXN0IGVsZW1lbnQuCi0gIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZp
cnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KTsKKyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0
b3I6OmFzc2lnbiguLi4pYCB0aGF0IHJlcGxhY2VzIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgLy8g
aW5saW5lZCB2ZWN0b3Igd2l0aCBjb3BpZXMgb2YgdGhlIGVsZW1lbnRzIG9mIGBsaXN0YC4KKyAg
dm9pZCBhc3NpZ24oc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QpIHsKKyAg
ICBhc3NpZ24obGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKKyAgfQogCi0gIC8vIElubGluZWRW
ZWN0b3I6OnJlc2VydmUoKQorICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6YXNzaWdu
KC4uLilgIHRvIHJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAvLyBpbmxpbmVkIHZlY3Rv
ciB3aXRoIHRoZSByYW5nZSBbYGZpcnN0YCwgYGxhc3RgKS4KICAgLy8KLSAgLy8gRW5sYXJnZXMg
dGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlubGluZWQgdmVjdG9yIHNvIGl0
IGNhbiBob2xkCi0gIC8vIGF0IGxlYXN0IGBuYCBlbGVtZW50cy4gVGhpcyBtZXRob2QgZG9lcyBu
b3QgY2hhbmdlIGBzaXplKClgIG9yIHRoZSBhY3R1YWwKLSAgLy8gY29udGVudHMgb2YgdGhlIHZl
Y3Rvci4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IGlmIGBuYCBkb2VzIG5vdCBleGNlZWQgdGhlIGlu
bGluZWQgdmVjdG9yJ3MgaW5pdGlhbCBzaXplIGBOYCwKLSAgLy8gYHJlc2VydmUoKWAgd2lsbCBo
YXZlIG5vIGVmZmVjdDsgaWYgaXQgZG9lcyBleGNlZWQgaXRzIGluaXRpYWwgc2l6ZSwKLSAgLy8g
YHJlc2VydmUoKWAgd2lsbCB0cmlnZ2VyIGFuIGluaXRpYWwgYWxsb2NhdGlvbiBhbmQgbW92ZSB0
aGUgaW5saW5lZCB2ZWN0b3IKLSAgLy8gb250byB0aGUgaGVhcC4gSWYgdGhlIHZlY3RvciBhbHJl
YWR5IGV4aXN0cyBvbiB0aGUgaGVhcCBhbmQgdGhlIHJlcXVlc3RlZAotICAvLyBzaXplIGV4Y2Vl
ZHMgaXQsIGEgcmVhbGxvY2F0aW9uIHdpbGwgYmUgcGVyZm9ybWVkLgotICB2b2lkIHJlc2VydmUo
c2l6ZV90eXBlIG4pIHsKLSAgICBpZiAobiA+IGNhcGFjaXR5KCkpIHsKLSAgICAgIC8vIE1ha2Ug
cm9vbSBmb3IgbmV3IGVsZW1lbnRzCi0gICAgICBFbmxhcmdlQnkobiAtIHNpemUoKSk7Ci0gICAg
fQorICAvLyBOT1RFOiB0aGlzIG92ZXJsb2FkIGlzIGZvciBpdGVyYXRvcnMgdGhhdCBhcmUgImZv
cndhcmQiIGNhdGVnb3J5IG9yIGJldHRlci4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJ
dGVyYXRvciwKKyAgICAgICAgICAgIEVuYWJsZUlmQXRMZWFzdEZvcndhcmRJdGVyYXRvcjxGb3J3
YXJkSXRlcmF0b3I+KiA9IG51bGxwdHI+CisgIHZvaWQgYXNzaWduKEZvcndhcmRJdGVyYXRvciBm
aXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QpIHsKKyAgICBzdG9yYWdlXy5Bc3NpZ24oSXRlcmF0
b3JWYWx1ZUFkYXB0ZXI8Rm9yd2FyZEl0ZXJhdG9yPihmaXJzdCksCisgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6ZGlzdGFuY2UoZmlyc3QsIGxhc3QpKTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0
b3I6OnNocmlua190b19maXQoKQotICAvLwotICAvLyBSZWR1Y2VzIG1lbW9yeSB1c2FnZSBieSBm
cmVlaW5nIHVudXNlZCBtZW1vcnkuCi0gIC8vIEFmdGVyIHRoaXMgY2FsbCBgY2FwYWNpdHkoKWAg
d2lsbCBiZSBlcXVhbCB0byBgbWF4KE4sIHNpemUoKSlgLgorICAvLyBPdmVybG9hZCBvZiBgSW5s
aW5lZFZlY3Rvcjo6YXNzaWduKC4uLilgIHRvIHJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIHRoZQor
ICAvLyBpbmxpbmVkIHZlY3RvciB3aXRoIHRoZSByYW5nZSBbYGZpcnN0YCwgYGxhc3RgKS4KICAg
Ly8KLSAgLy8gSWYgYHNpemUoKSA8PSBOYCBhbmQgdGhlIGVsZW1lbnRzIGFyZSBjdXJyZW50bHkg
c3RvcmVkIG9uIHRoZSBoZWFwLCB0aGV5Ci0gIC8vIHdpbGwgYmUgbW92ZWQgdG8gdGhlIGlubGlu
ZWQgc3RvcmFnZSBhbmQgdGhlIGhlYXAgbWVtb3J5IGRlYWxsb2NhdGVkLgotICAvLyBJZiBgc2l6
ZSgpID4gTmAgYW5kIGBzaXplKCkgPCBjYXBhY2l0eSgpYCB0aGUgZWxlbWVudHMgd2lsbCBiZSBt
b3ZlZCB0bwotICAvLyBhIHJlYWxsb2NhdGVkIHN0b3JhZ2Ugb24gaGVhcC4KLSAgdm9pZCBzaHJp
bmtfdG9fZml0KCkgewotICAgIGNvbnN0IGF1dG8gcyA9IHNpemUoKTsKLSAgICBpZiAoIWFsbG9j
YXRlZCgpIHx8IHMgPT0gY2FwYWNpdHkoKSkgewotICAgICAgLy8gVGhlcmUncyBub3RoaW5nIHRv
IGRlYWxsb2NhdGUuCi0gICAgICByZXR1cm47CisgIC8vIE5PVEU6IHRoaXMgb3ZlcmxvYWQgaXMg
Zm9yIGl0ZXJhdG9ycyB0aGF0IGFyZSAiaW5wdXQiIGNhdGVnb3J5LgorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSW5wdXRJdGVyYXRvciwKKyAgICAgICAgICAgIERpc2FibGVJZkF0TGVhc3RGb3J3YXJk
SXRlcmF0b3I8SW5wdXRJdGVyYXRvcj4qID0gbnVsbHB0cj4KKyAgdm9pZCBhc3NpZ24oSW5wdXRJ
dGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KSB7CisgICAgc2l6ZV90eXBlIGkgPSAw
OworICAgIGZvciAoOyBpIDwgc2l6ZSgpICYmIGZpcnN0ICE9IGxhc3Q7ICsraSwgc3RhdGljX2Nh
c3Q8dm9pZD4oKytmaXJzdCkpIHsKKyAgICAgIGF0KGkpID0gKmZpcnN0OwogICAgIH0KIAotICAg
IGlmIChzIDw9IE4pIHsKLSAgICAgIC8vIE1vdmUgdGhlIGVsZW1lbnRzIHRvIHRoZSBpbmxpbmVk
IHN0b3JhZ2UuCi0gICAgICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgdXNpbmcgYSB0ZW1wb3Jhcnks
IGJlY2F1c2UgaW5saW5lZF9zdG9yYWdlIGFuZAotICAgICAgLy8gYWxsb2NhdGlvbl9zdG9yYWdl
IGFyZSBpbiBhIHVuaW9uIGZpZWxkLgotICAgICAgYXV0byB0ZW1wID0gc3RkOjptb3ZlKCp0aGlz
KTsKLSAgICAgIGFzc2lnbihzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih0ZW1wLmJlZ2luKCkpLAot
ICAgICAgICAgICAgIHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKHRlbXAuZW5kKCkpKTsKLSAgICAg
IHJldHVybjsKLSAgICB9CisgICAgZXJhc2UoZGF0YSgpICsgaSwgZGF0YSgpICsgc2l6ZSgpKTsK
IAotICAgIC8vIFJlYWxsb2NhdGUgc3RvcmFnZSBhbmQgbW92ZSBlbGVtZW50cy4KLSAgICAvLyBX
ZSBjYW4ndCBzaW1wbHkgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGFzIGFib3ZlLCBiZWNhdXNlIGFz
c2lnbigpIHdvdWxkCi0gICAgLy8gY2FsbCBpbnRvIHJlc2VydmUoKSBpbnRlcm5hbGx5IGFuZCBy
ZXNlcnZlIGxhcmdlciBjYXBhY2l0eSB0aGFuIHdlIG5lZWQuCi0gICAgQWxsb2NhdGlvbiBuZXdf
YWxsb2NhdGlvbihhbGxvY2F0b3IoKSwgcyk7Ci0gICAgVW5pbml0aWFsaXplZENvcHkoc3RkOjpt
YWtlX21vdmVfaXRlcmF0b3IoYWxsb2NhdGVkX3NwYWNlKCkpLAotICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKGFsbG9jYXRlZF9zcGFjZSgpICsgcyksCi0gICAg
ICAgICAgICAgICAgICAgICAgbmV3X2FsbG9jYXRpb24uYnVmZmVyKCkpOwotICAgIFJlc2V0QWxs
b2NhdGlvbihuZXdfYWxsb2NhdGlvbiwgcyk7CisgICAgc3RkOjpjb3B5KGZpcnN0LCBsYXN0LCBz
dGQ6OmJhY2tfaW5zZXJ0ZXIoKnRoaXMpKTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OnN3
YXAoKQorICAvLyBgSW5saW5lZFZlY3Rvcjo6cmVzaXplKC4uLilgCiAgIC8vCi0gIC8vIFN3YXBz
IHRoZSBjb250ZW50cyBvZiB0aGlzIGlubGluZWQgdmVjdG9yIHdpdGggdGhlIGNvbnRlbnRzIG9m
IGBvdGhlcmAuCi0gIHZvaWQgc3dhcChJbmxpbmVkVmVjdG9yJiBvdGhlcik7Ci0KLSAgLy8gSW5s
aW5lZFZlY3Rvcjo6Z2V0X2FsbG9jYXRvcigpCisgIC8vIFJlc2l6ZXMgdGhlIGlubGluZWQgdmVj
dG9yIHRvIGNvbnRhaW4gYG5gIGVsZW1lbnRzLgogICAvLwotICAvLyBSZXR1cm5zIHRoZSBhbGxv
Y2F0b3Igb2YgdGhpcyBpbmxpbmVkIHZlY3Rvci4KLSAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9j
YXRvcigpIGNvbnN0IHsgcmV0dXJuIGFsbG9jYXRvcigpOyB9CisgIC8vIE5PVEU6IGlmIGBuYCBp
cyBzbWFsbGVyIHRoYW4gYHNpemUoKWAsIGV4dHJhIGVsZW1lbnRzIGFyZSBkZXN0cm95ZWQuIElm
IGBuYAorICAvLyBpcyBsYXJnZXIgdGhhbiBgc2l6ZSgpYCwgbmV3IGVsZW1lbnRzIGFyZSB2YWx1
ZS1pbml0aWFsaXplZC4KKyAgdm9pZCByZXNpemUoc2l6ZV90eXBlIG4pIHsgc3RvcmFnZV8uUmVz
aXplKERlZmF1bHRWYWx1ZUFkYXB0ZXIoKSwgbik7IH0KIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SD4KLSAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIGNvbnN0IElubGluZWRWZWN0b3ImIHYp
IHsKLSAgICByZXR1cm4gSDo6Y29tYmluZShIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3Zl
KGgpLCB2LmRhdGEoKSwgdi5zaXplKCkpLAotICAgICAgICAgICAgICAgICAgICAgIHYuc2l6ZSgp
KTsKKyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6OnJlc2l6ZSguLi4pYCB0aGF0IHJl
c2l6ZXMgdGhlIGlubGluZWQgdmVjdG9yIHRvCisgIC8vIGNvbnRhaW4gYG5gIGVsZW1lbnRzLgor
ICAvLworICAvLyBOT1RFOiBpZiBgbmAgaXMgc21hbGxlciB0aGFuIGBzaXplKClgLCBleHRyYSBl
bGVtZW50cyBhcmUgZGVzdHJveWVkLiBJZiBgbmAKKyAgLy8gaXMgbGFyZ2VyIHRoYW4gYHNpemUo
KWAsIG5ldyBlbGVtZW50cyBhcmUgY29waWVkLWNvbnN0cnVjdGVkIGZyb20gYHZgLgorICB2b2lk
IHJlc2l6ZShzaXplX3R5cGUgbiwgY29uc3RfcmVmZXJlbmNlIHYpIHsKKyAgICBzdG9yYWdlXy5S
ZXNpemUoQ29weVZhbHVlQWRhcHRlcih2KSwgbik7CiAgIH0KIAotIHByaXZhdGU6Ci0gIHN0YXRp
Y19hc3NlcnQoTiA+IDAsICJpbmxpbmVkIHZlY3RvciB3aXRoIG5vbnBvc2l0aXZlIHNpemUiKTsK
LQotICAvLyBJdCBob2xkcyB3aGV0aGVyIHRoZSB2ZWN0b3IgaXMgYWxsb2NhdGVkIG9yIG5vdCBp
biB0aGUgbG93ZXN0IGJpdC4KLSAgLy8gVGhlIHNpemUgaXMgaGVsZCBpbiB0aGUgaGlnaCBiaXRz
OgotICAvLyAgIHNpemVfID0gKHNpemUgPDwgMSkgfCBpc19hbGxvY2F0ZWQ7CisgIC8vIGBJbmxp
bmVkVmVjdG9yOjppbnNlcnQoLi4uKWAKICAgLy8KLSAgLy8gTWFpbnRhaW5lcidzIE5vdGU6IHNp
emVfdHlwZSBpcyB1c2VyIGRlZmluZWQuIFRoZSBjb250cmFjdCBpcyBsaW1pdGVkIHRvCi0gIC8v
IGFyaXRobWV0aWMgb3BlcmF0b3JzIHRvIGF2b2lkIGRlcGVuZGluZyBvbiBjb21wbGlhbnQgb3Zl
cmxvYWRlZCBiaXR3aXNlCi0gIC8vIG9wZXJhdG9ycy4KLSAgY2xhc3MgVGFnIHsKLSAgIHB1Ymxp
YzoKLSAgICBUYWcoKSA6IHNpemVfKDApIHt9Ci0gICAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7
IHJldHVybiBzaXplXyAvIDI7IH0KLSAgICB2b2lkIGFkZF9zaXplKHNpemVfdHlwZSBuKSB7IHNp
emVfICs9IG4gKiAyOyB9Ci0gICAgdm9pZCBzZXRfaW5saW5lX3NpemUoc2l6ZV90eXBlIG4pIHsg
c2l6ZV8gPSBuICogMjsgfQotICAgIHZvaWQgc2V0X2FsbG9jYXRlZF9zaXplKHNpemVfdHlwZSBu
KSB7IHNpemVfID0gKG4gKiAyKSArIDE7IH0KLSAgICBib29sIGFsbG9jYXRlZCgpIGNvbnN0IHsg
cmV0dXJuIHNpemVfICUgMjsgfQotCi0gICBwcml2YXRlOgotICAgIHNpemVfdHlwZSBzaXplXzsK
LSAgfTsKLQotICAvLyBEZXJpdmVzIGZyb20gYWxsb2NhdG9yX3R5cGUgdG8gdXNlIHRoZSBlbXB0
eSBiYXNlIGNsYXNzIG9wdGltaXphdGlvbi4KLSAgLy8gSWYgdGhlIGFsbG9jYXRvcl90eXBlIGlz
IHN0YXRlbGVzcywgd2UgY2FuICdzdG9yZScKLSAgLy8gb3VyIGluc3RhbmNlIG9mIGl0IGZvciBm
cmVlLgotICBjbGFzcyBBbGxvY2F0b3JBbmRUYWcgOiBwcml2YXRlIGFsbG9jYXRvcl90eXBlIHsK
LSAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbGxvY2F0b3JBbmRUYWcoY29uc3QgYWxsb2NhdG9y
X3R5cGUmIGEpIDogYWxsb2NhdG9yX3R5cGUoYSkge30KLSAgICBUYWcmIHRhZygpIHsgcmV0dXJu
IHRhZ187IH0KLSAgICBjb25zdCBUYWcmIHRhZygpIGNvbnN0IHsgcmV0dXJuIHRhZ187IH0KLSAg
ICBhbGxvY2F0b3JfdHlwZSYgYWxsb2NhdG9yKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBjb25z
dCBhbGxvY2F0b3JfdHlwZSYgYWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLQot
ICAgcHJpdmF0ZToKLSAgICBUYWcgdGFnXzsKLSAgfTsKLQotICBjbGFzcyBBbGxvY2F0aW9uIHsK
LSAgIHB1YmxpYzoKLSAgICBBbGxvY2F0aW9uKGFsbG9jYXRvcl90eXBlJiBhLCAgLy8gTk9MSU5U
KHJ1bnRpbWUvcmVmZXJlbmNlcykKLSAgICAgICAgICAgICAgIHNpemVfdHlwZSBjYXBhY2l0eSkK
LSAgICAgICAgOiBjYXBhY2l0eV8oY2FwYWNpdHkpLAotICAgICAgICAgIGJ1ZmZlcl8oQWxsb2Nh
dG9yVHJhaXRzOjphbGxvY2F0ZShhLCBjYXBhY2l0eV8pKSB7fQotCi0gICAgdm9pZCBEZWFsbG9j
KGFsbG9jYXRvcl90eXBlJiBhKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQotICAg
ICAgQWxsb2NhdG9yVHJhaXRzOjpkZWFsbG9jYXRlKGEsIGJ1ZmZlcigpLCBjYXBhY2l0eSgpKTsK
LSAgICB9Ci0KLSAgICBzaXplX3R5cGUgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBjYXBhY2l0
eV87IH0KLSAgICBjb25zdCB2YWx1ZV90eXBlKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBidWZm
ZXJfOyB9Ci0gICAgdmFsdWVfdHlwZSogYnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyXzsgfQotCi0g
ICBwcml2YXRlOgotICAgIHNpemVfdHlwZSBjYXBhY2l0eV87Ci0gICAgdmFsdWVfdHlwZSogYnVm
ZmVyXzsKLSAgfTsKLQotICBjb25zdCBUYWcmIHRhZygpIGNvbnN0IHsgcmV0dXJuIGFsbG9jYXRv
cl9hbmRfdGFnXy50YWcoKTsgfQotICBUYWcmIHRhZygpIHsgcmV0dXJuIGFsbG9jYXRvcl9hbmRf
dGFnXy50YWcoKTsgfQotCi0gIEFsbG9jYXRpb24mIGFsbG9jYXRpb24oKSB7Ci0gICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8QWxsb2NhdGlvbiY+KHJlcF8uYWxsb2NhdGlvbl9zdG9yYWdlLmFs
bG9jYXRpb24pOwotICB9Ci0gIGNvbnN0IEFsbG9jYXRpb24mIGFsbG9jYXRpb24oKSBjb25zdCB7
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQWxsb2NhdGlvbiY+KAotICAgICAg
ICByZXBfLmFsbG9jYXRpb25fc3RvcmFnZS5hbGxvY2F0aW9uKTsKLSAgfQotICB2b2lkIGluaXRf
YWxsb2NhdGlvbihjb25zdCBBbGxvY2F0aW9uJiBhbGxvY2F0aW9uKSB7Ci0gICAgbmV3ICgmcmVw
Xy5hbGxvY2F0aW9uX3N0b3JhZ2UuYWxsb2NhdGlvbikgQWxsb2NhdGlvbihhbGxvY2F0aW9uKTsK
KyAgLy8gSW5zZXJ0cyBhIGNvcHkgb2YgYHZgIGF0IGBwb3NgLCByZXR1cm5pbmcgYW4gYGl0ZXJh
dG9yYCB0byB0aGUgbmV3bHkKKyAgLy8gaW5zZXJ0ZWQgZWxlbWVudC4KKyAgaXRlcmF0b3IgaW5z
ZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvcywgY29uc3RfcmVmZXJlbmNlIHYpIHsKKyAgICByZXR1cm4g
ZW1wbGFjZShwb3MsIHYpOwogICB9CiAKLSAgLy8gVE9ETyhhYnNsLXRlYW0pOiBpbnZlc3RpZ2F0
ZSB3aGV0aGVyIHRoZSByZWludGVycHJldF9jYXN0IGlzIGFwcHJvcHJpYXRlLgotICB2YWx1ZV90
eXBlKiBpbmxpbmVkX3NwYWNlKCkgewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZhbHVl
X3R5cGUqPigKLSAgICAgICAgc3RkOjphZGRyZXNzb2YocmVwXy5pbmxpbmVkX3N0b3JhZ2UuaW5s
aW5lZFswXSkpOwotICB9Ci0gIGNvbnN0IHZhbHVlX3R5cGUqIGlubGluZWRfc3BhY2UoKSBjb25z
dCB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdmFsdWVfdHlwZSo+KAotICAg
ICAgICBzdGQ6OmFkZHJlc3NvZihyZXBfLmlubGluZWRfc3RvcmFnZS5pbmxpbmVkWzBdKSk7Cisg
IC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjppbnNlcnQoLi4uKWAgdGhhdCBpbnNlcnRz
IGB2YCBhdCBgcG9zYCB1c2luZworICAvLyBtb3ZlIHNlbWFudGljcywgcmV0dXJuaW5nIGFuIGBp
dGVyYXRvcmAgdG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQuCisgIGl0ZXJhdG9yIGluc2Vy
dChjb25zdF9pdGVyYXRvciBwb3MsIHJ2YWx1ZV9yZWZlcmVuY2UgdikgeworICAgIHJldHVybiBl
bXBsYWNlKHBvcywgc3RkOjptb3ZlKHYpKTsKICAgfQogCi0gIHZhbHVlX3R5cGUqIGFsbG9jYXRl
ZF9zcGFjZSgpIHsgcmV0dXJuIGFsbG9jYXRpb24oKS5idWZmZXIoKTsgfQotICBjb25zdCB2YWx1
ZV90eXBlKiBhbGxvY2F0ZWRfc3BhY2UoKSBjb25zdCB7IHJldHVybiBhbGxvY2F0aW9uKCkuYnVm
ZmVyKCk7IH0KKyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6Omluc2VydCguLi4pYCB0
aGF0IGluc2VydHMgYG5gIGNvbnRpZ3VvdXMgY29waWVzCisgIC8vIG9mIGB2YCBzdGFydGluZyBh
dCBgcG9zYCwgcmV0dXJuaW5nIGFuIGBpdGVyYXRvcmAgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IG9m
CisgIC8vIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50cy4KKyAgaXRlcmF0b3IgaW5zZXJ0KGNv
bnN0X2l0ZXJhdG9yIHBvcywgc2l6ZV90eXBlIG4sIGNvbnN0X3JlZmVyZW5jZSB2KSB7CisgICAg
YXNzZXJ0KHBvcyA+PSBiZWdpbigpKTsKKyAgICBhc3NlcnQocG9zIDw9IGVuZCgpKTsKIAotICBj
b25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2NhdG9yKCkgY29uc3QgewotICAgIHJldHVybiBhbGxv
Y2F0b3JfYW5kX3RhZ18uYWxsb2NhdG9yKCk7CisgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKG4g
IT0gMCkpIHsKKyAgICAgIHZhbHVlX3R5cGUgZGVhbGlhcyA9IHY7CisgICAgICByZXR1cm4gc3Rv
cmFnZV8uSW5zZXJ0KHBvcywgQ29weVZhbHVlQWRhcHRlcihkZWFsaWFzKSwgbik7CisgICAgfSBl
bHNlIHsKKyAgICAgIHJldHVybiBjb25zdF9jYXN0PGl0ZXJhdG9yPihwb3MpOworICAgIH0KICAg
fQotICBhbGxvY2F0b3JfdHlwZSYgYWxsb2NhdG9yKCkgeyByZXR1cm4gYWxsb2NhdG9yX2FuZF90
YWdfLmFsbG9jYXRvcigpOyB9CiAKLSAgYm9vbCBhbGxvY2F0ZWQoKSBjb25zdCB7IHJldHVybiB0
YWcoKS5hbGxvY2F0ZWQoKTsgfQotCi0gIC8vIEVubGFyZ2UgdGhlIHVuZGVybHlpbmcgcmVwcmVz
ZW50YXRpb24gc28gd2UgY2FuIHN0b3JlIHNpemVfICsgZGVsdGEgZWxlbXMuCi0gIC8vIFRoZSBz
aXplIGlzIG5vdCBjaGFuZ2VkLCBhbmQgYW55IG5ld2x5IGFkZGVkIG1lbW9yeSBpcyBub3QgaW5p
dGlhbGl6ZWQuCi0gIHZvaWQgRW5sYXJnZUJ5KHNpemVfdHlwZSBkZWx0YSk7CisgIC8vIE92ZXJs
b2FkIG9mIGBJbmxpbmVkVmVjdG9yOjppbnNlcnQoLi4uKWAgdGhhdCBpbnNlcnRzIGNvcGllcyBv
ZiB0aGUKKyAgLy8gZWxlbWVudHMgb2YgYGxpc3RgIHN0YXJ0aW5nIGF0IGBwb3NgLCByZXR1cm5p
bmcgYW4gYGl0ZXJhdG9yYCBwb2ludGluZyB0bworICAvLyB0aGUgZmlyc3Qgb2YgdGhlIG5ld2x5
IGluc2VydGVkIGVsZW1lbnRzLgorICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9z
LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCkgeworICAgIHJldHVybiBp
bnNlcnQocG9zLCBsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOworICB9CiAKLSAgLy8gU2hpZnQg
YWxsIGVsZW1lbnRzIGZyb20gcG9zaXRpb24gdG8gZW5kKCkgbiBwbGFjZXMgdG8gdGhlIHJpZ2h0
LgotICAvLyBJZiB0aGUgdmVjdG9yIG5lZWRzIHRvIGJlIGVubGFyZ2VkLCBtZW1vcnkgd2lsbCBi
ZSBhbGxvY2F0ZWQuCi0gIC8vIFJldHVybnMgaXRlcmF0b3JzIHBvaW50aW5nIHRvIHRoZSBzdGFy
dCBvZiB0aGUgcHJldmlvdXNseS1pbml0aWFsaXplZAotICAvLyBwb3J0aW9uIGFuZCB0aGUgc3Rh
cnQgb2YgdGhlIHVuaW5pdGlhbGl6ZWQgcG9ydGlvbiBvZiB0aGUgY3JlYXRlZCBnYXAuCi0gIC8v
IFRoZSBudW1iZXIgb2YgaW5pdGlhbGl6ZWQgc3BvdHMgaXMgcGFpci5zZWNvbmQgLSBwYWlyLmZp
cnN0OwotICAvLyB0aGUgbnVtYmVyIG9mIHJhdyBzcG90cyBpcyBuIC0gKHBhaXIuc2Vjb25kIC0g
cGFpci5maXJzdCkuCisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjppbnNlcnQoLi4u
KWAgdGhhdCBpbnNlcnRzIHRoZSByYW5nZSBbYGZpcnN0YCwKKyAgLy8gYGxhc3RgKSBzdGFydGlu
ZyBhdCBgcG9zYCwgcmV0dXJuaW5nIGFuIGBpdGVyYXRvcmAgcG9pbnRpbmcgdG8gdGhlIGZpcnN0
CisgIC8vIG9mIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50cy4KICAgLy8KLSAgLy8gVXBkYXRl
cyB0aGUgc2l6ZSBvZiB0aGUgSW5saW5lZFZlY3RvciBpbnRlcm5hbGx5LgotICBzdGQ6OnBhaXI8
aXRlcmF0b3IsIGl0ZXJhdG9yPiBTaGlmdFJpZ2h0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBuKTsK
LQotICB2b2lkIFJlc2V0QWxsb2NhdGlvbihBbGxvY2F0aW9uIG5ld19hbGxvY2F0aW9uLCBzaXpl
X3R5cGUgbmV3X3NpemUpIHsKLSAgICBpZiAoYWxsb2NhdGVkKCkpIHsKLSAgICAgIERlc3Ryb3ko
YWxsb2NhdGVkX3NwYWNlKCksIGFsbG9jYXRlZF9zcGFjZSgpICsgc2l6ZSgpKTsKLSAgICAgIGFz
c2VydChiZWdpbigpID09IGFsbG9jYXRlZF9zcGFjZSgpKTsKLSAgICAgIGFsbG9jYXRpb24oKS5E
ZWFsbG9jKGFsbG9jYXRvcigpKTsKLSAgICAgIGFsbG9jYXRpb24oKSA9IG5ld19hbGxvY2F0aW9u
OworICAvLyBOT1RFOiB0aGlzIG92ZXJsb2FkIGlzIGZvciBpdGVyYXRvcnMgdGhhdCBhcmUgImZv
cndhcmQiIGNhdGVnb3J5IG9yIGJldHRlci4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJ
dGVyYXRvciwKKyAgICAgICAgICAgIEVuYWJsZUlmQXRMZWFzdEZvcndhcmRJdGVyYXRvcjxGb3J3
YXJkSXRlcmF0b3I+KiA9IG51bGxwdHI+CisgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRv
ciBwb3MsIEZvcndhcmRJdGVyYXRvciBmaXJzdCwKKyAgICAgICAgICAgICAgICAgIEZvcndhcmRJ
dGVyYXRvciBsYXN0KSB7CisgICAgYXNzZXJ0KHBvcyA+PSBiZWdpbigpKTsKKyAgICBhc3NlcnQo
cG9zIDw9IGVuZCgpKTsKKworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShmaXJzdCAhPSBsYXN0
KSkgeworICAgICAgcmV0dXJuIHN0b3JhZ2VfLkluc2VydChwb3MsIEl0ZXJhdG9yVmFsdWVBZGFw
dGVyPEZvcndhcmRJdGVyYXRvcj4oZmlyc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgIERlc3Ry
b3koaW5saW5lZF9zcGFjZSgpLCBpbmxpbmVkX3NwYWNlKCkgKyBzaXplKCkpOwotICAgICAgaW5p
dF9hbGxvY2F0aW9uKG5ld19hbGxvY2F0aW9uKTsgIC8vIGJ1Zzogb25seSBpbml0IG9uY2UKKyAg
ICAgIHJldHVybiBjb25zdF9jYXN0PGl0ZXJhdG9yPihwb3MpOwogICAgIH0KLSAgICB0YWcoKS5z
ZXRfYWxsb2NhdGVkX3NpemUobmV3X3NpemUpOwogICB9CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1l
Li4uIEFyZ3M+Ci0gIHZhbHVlX3R5cGUmIEdyb3dBbmRFbXBsYWNlQmFjayhBcmdzJiYuLi4gYXJn
cykgewotICAgIGFzc2VydChzaXplKCkgPT0gY2FwYWNpdHkoKSk7Ci0gICAgY29uc3Qgc2l6ZV90
eXBlIHMgPSBzaXplKCk7Ci0KLSAgICBBbGxvY2F0aW9uIG5ld19hbGxvY2F0aW9uKGFsbG9jYXRv
cigpLCAyICogY2FwYWNpdHkoKSk7CisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjpp
bnNlcnQoLi4uKWAgdGhhdCBpbnNlcnRzIHRoZSByYW5nZSBbYGZpcnN0YCwKKyAgLy8gYGxhc3Rg
KSBzdGFydGluZyBhdCBgcG9zYCwgcmV0dXJuaW5nIGFuIGBpdGVyYXRvcmAgcG9pbnRpbmcgdG8g
dGhlIGZpcnN0CisgIC8vIG9mIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50cy4KKyAgLy8KKyAg
Ly8gTk9URTogdGhpcyBvdmVybG9hZCBpcyBmb3IgaXRlcmF0b3JzIHRoYXQgYXJlICJpbnB1dCIg
Y2F0ZWdvcnkuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLAorICAgICAgICAg
ICAgRGlzYWJsZUlmQXRMZWFzdEZvcndhcmRJdGVyYXRvcjxJbnB1dEl0ZXJhdG9yPiogPSBudWxs
cHRyPgorICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zLCBJbnB1dEl0ZXJhdG9y
IGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpIHsKKyAgICBhc3NlcnQocG9zID49IGJlZ2luKCkp
OworICAgIGFzc2VydChwb3MgPD0gZW5kKCkpOworCisgICAgc2l6ZV90eXBlIGluZGV4ID0gc3Rk
OjpkaXN0YW5jZShjYmVnaW4oKSwgcG9zKTsKKyAgICBmb3IgKHNpemVfdHlwZSBpID0gaW5kZXg7
IGZpcnN0ICE9IGxhc3Q7ICsraSwgc3RhdGljX2Nhc3Q8dm9pZD4oKytmaXJzdCkpIHsKKyAgICAg
IGluc2VydChkYXRhKCkgKyBpLCAqZmlyc3QpOworICAgIH0KIAotICAgIHZhbHVlX3R5cGUmIG5l
d19lbGVtZW50ID0KLSAgICAgICAgQ29uc3RydWN0KG5ld19hbGxvY2F0aW9uLmJ1ZmZlcigpICsg
cywgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICBVbmluaXRpYWxpemVkQ29weShz
dGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihkYXRhKCkpLAotICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKGRhdGEoKSArIHMpLAotICAgICAgICAgICAgICAgICAgICAg
IG5ld19hbGxvY2F0aW9uLmJ1ZmZlcigpKTsKKyAgICByZXR1cm4gaXRlcmF0b3IoZGF0YSgpICsg
aW5kZXgpOworICB9CiAKLSAgICBSZXNldEFsbG9jYXRpb24obmV3X2FsbG9jYXRpb24sIHMgKyAx
KTsKKyAgLy8gYElubGluZWRWZWN0b3I6OmVtcGxhY2UoLi4uKWAKKyAgLy8KKyAgLy8gQ29uc3Ry
dWN0cyBhbmQgaW5zZXJ0cyBhbiBlbGVtZW50IHVzaW5nIGBhcmdzLi4uYCBpbiB0aGUgaW5saW5l
ZCB2ZWN0b3IgYXQKKyAgLy8gYHBvc2AsIHJldHVybmluZyBhbiBgaXRlcmF0b3JgIHBvaW50aW5n
IHRvIHRoZSBuZXdseSBlbXBsYWNlZCBlbGVtZW50LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KKyAgaXRlcmF0b3IgZW1wbGFjZShjb25zdF9pdGVyYXRvciBwb3MsIEFyZ3MmJi4uLiBh
cmdzKSB7CisgICAgYXNzZXJ0KHBvcyA+PSBiZWdpbigpKTsKKyAgICBhc3NlcnQocG9zIDw9IGVu
ZCgpKTsKIAotICAgIHJldHVybiBuZXdfZWxlbWVudDsKKyAgICB2YWx1ZV90eXBlIGRlYWxpYXMo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICByZXR1cm4gc3RvcmFnZV8uSW5zZXJ0
KHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yVmFsdWVBZGFwdGVyPE1v
dmVJdGVyYXRvcj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW92ZUl0ZXJhdG9y
KHN0ZDo6YWRkcmVzc29mKGRlYWxpYXMpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAx
KTsKICAgfQogCi0gIHZvaWQgSW5pdEFzc2lnbihzaXplX3R5cGUgbik7Ci0gIHZvaWQgSW5pdEFz
c2lnbihzaXplX3R5cGUgbiwgY29uc3QgdmFsdWVfdHlwZSYgdCk7Ci0KKyAgLy8gYElubGluZWRW
ZWN0b3I6OmVtcGxhY2VfYmFjayguLi4pYAorICAvLworICAvLyBDb25zdHJ1Y3RzIGFuZCBpbnNl
cnRzIGFuIGVsZW1lbnQgdXNpbmcgYGFyZ3MuLi5gIGluIHRoZSBpbmxpbmVkIHZlY3RvciBhdAor
ICAvLyBgZW5kKClgLCByZXR1cm5pbmcgYSBgcmVmZXJlbmNlYCB0byB0aGUgbmV3bHkgZW1wbGFj
ZWQgZWxlbWVudC4KICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIHZhbHVlX3R5cGUm
IENvbnN0cnVjdChwb2ludGVyIHAsIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgQWxsb2NhdG9yVHJh
aXRzOjpjb25zdHJ1Y3QoYWxsb2NhdG9yKCksIHAsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7Ci0gICAgcmV0dXJuICpwOworICByZWZlcmVuY2UgZW1wbGFjZV9iYWNrKEFyZ3MmJi4uLiBh
cmdzKSB7CisgICAgcmV0dXJuIHN0b3JhZ2VfLkVtcGxhY2VCYWNrKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7CiAgIH0KIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KLSAgdm9pZCBV
bmluaXRpYWxpemVkQ29weShJdGVyIHNyYywgSXRlciBzcmNfbGFzdCwgdmFsdWVfdHlwZSogZHN0
KSB7Ci0gICAgZm9yICg7IHNyYyAhPSBzcmNfbGFzdDsgKytkc3QsICsrc3JjKSBDb25zdHJ1Y3Qo
ZHN0LCAqc3JjKTsKKyAgLy8gYElubGluZWRWZWN0b3I6OnB1c2hfYmFjayguLi4pYAorICAvLwor
ICAvLyBJbnNlcnRzIGEgY29weSBvZiBgdmAgaW4gdGhlIGlubGluZWQgdmVjdG9yIGF0IGBlbmQo
KWAuCisgIHZvaWQgcHVzaF9iYWNrKGNvbnN0X3JlZmVyZW5jZSB2KSB7IHN0YXRpY19jYXN0PHZv
aWQ+KGVtcGxhY2VfYmFjayh2KSk7IH0KKworICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rv
cjo6cHVzaF9iYWNrKC4uLilgIGZvciBpbnNlcnRpbmcgYHZgIGF0IGBlbmQoKWAKKyAgLy8gdXNp
bmcgbW92ZSBzZW1hbnRpY3MuCisgIHZvaWQgcHVzaF9iYWNrKHJ2YWx1ZV9yZWZlcmVuY2Ugdikg
eworICAgIHN0YXRpY19jYXN0PHZvaWQ+KGVtcGxhY2VfYmFjayhzdGQ6Om1vdmUodikpKTsKICAg
fQogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICB2b2lkIFVuaW5pdGlhbGl6ZWRG
aWxsKHZhbHVlX3R5cGUqIGRzdCwgdmFsdWVfdHlwZSogZHN0X2xhc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQXJncyYuLi4gYXJncykgewotICAgIGZvciAoOyBkc3QgIT0gZHN0
X2xhc3Q7ICsrZHN0KSBDb25zdHJ1Y3QoZHN0LCBhcmdzLi4uKTsKKyAgLy8gYElubGluZWRWZWN0
b3I6OnBvcF9iYWNrKClgCisgIC8vCisgIC8vIERlc3Ryb3lzIHRoZSBlbGVtZW50IGF0IGBiYWNr
KClgLCByZWR1Y2luZyB0aGUgc2l6ZSBieSBgMWAuCisgIHZvaWQgcG9wX2JhY2soKSBub2V4Y2Vw
dCB7CisgICAgYXNzZXJ0KCFlbXB0eSgpKTsKKworICAgIEFsbG9jYXRvclRyYWl0czo6ZGVzdHJv
eSgqc3RvcmFnZV8uR2V0QWxsb2NQdHIoKSwgZGF0YSgpICsgKHNpemUoKSAtIDEpKTsKKyAgICBz
dG9yYWdlXy5TdWJ0cmFjdFNpemUoMSk7CiAgIH0KIAotICAvLyBEZXN0cm95IFtwdHIsIHB0cl9s
YXN0KSBpbiBwbGFjZS4KLSAgdm9pZCBEZXN0cm95KHZhbHVlX3R5cGUqIHB0ciwgdmFsdWVfdHlw
ZSogcHRyX2xhc3QpOworICAvLyBgSW5saW5lZFZlY3Rvcjo6ZXJhc2UoLi4uKWAKKyAgLy8KKyAg
Ly8gRXJhc2VzIHRoZSBlbGVtZW50IGF0IGBwb3NgLCByZXR1cm5pbmcgYW4gYGl0ZXJhdG9yYCBw
b2ludGluZyB0byB3aGVyZSB0aGUKKyAgLy8gZXJhc2VkIGVsZW1lbnQgd2FzIGxvY2F0ZWQuCisg
IC8vCisgIC8vIE5PVEU6IG1heSByZXR1cm4gYGVuZCgpYCwgd2hpY2ggaXMgbm90IGRlcmVmZXJl
bmNhYmxlLgorICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBwb3MpIHsKKyAgICBhc3Nl
cnQocG9zID49IGJlZ2luKCkpOworICAgIGFzc2VydChwb3MgPCBlbmQoKSk7CiAKLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIEl0ZXI+Ci0gIHZvaWQgQXBwZW5kUmFuZ2UoSXRlciBmaXJzdCwgSXRlciBs
YXN0LCBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZykgewotICAgIHN0ZDo6Y29weShmaXJzdCwgbGFz
dCwgc3RkOjpiYWNrX2luc2VydGVyKCp0aGlzKSk7CisgICAgcmV0dXJuIHN0b3JhZ2VfLkVyYXNl
KHBvcywgcG9zICsgMSk7CiAgIH0KIAotICAvLyBGYXN0ZXIgcGF0aCBmb3IgZm9yd2FyZCBpdGVy
YXRvcnMuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgotICB2b2lkIEFwcGVuZFJhbmdlKEl0
ZXIgZmlyc3QsIEl0ZXIgbGFzdCwgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyk7CisgIC8vIE92
ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjplcmFzZSguLi4pYCB0aGF0IGVyYXNlcyBldmVyeSBl
bGVtZW50IGluIHRoZQorICAvLyByYW5nZSBbYGZyb21gLCBgdG9gKSwgcmV0dXJuaW5nIGFuIGBp
dGVyYXRvcmAgcG9pbnRpbmcgdG8gd2hlcmUgdGhlIGZpcnN0CisgIC8vIGVyYXNlZCBlbGVtZW50
IHdhcyBsb2NhdGVkLgorICAvLworICAvLyBOT1RFOiBtYXkgcmV0dXJuIGBlbmQoKWAsIHdoaWNo
IGlzIG5vdCBkZXJlZmVyZW5jYWJsZS4KKyAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3Ig
ZnJvbSwgY29uc3RfaXRlcmF0b3IgdG8pIHsKKyAgICBhc3NlcnQoZnJvbSA+PSBiZWdpbigpKTsK
KyAgICBhc3NlcnQoZnJvbSA8PSB0byk7CisgICAgYXNzZXJ0KHRvIDw9IGVuZCgpKTsKIAotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KLSAgdm9pZCBBcHBlbmRSYW5nZShJdGVyIGZpcnN0LCBJ
dGVyIGxhc3QpIHsKLSAgICB1c2luZyBJdGVyVGFnID0gdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90
cmFpdHM8SXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5OwotICAgIEFwcGVuZFJhbmdlKGZpcnN0LCBs
YXN0LCBJdGVyVGFnKCkpOworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShmcm9tICE9IHRvKSkg
eworICAgICAgcmV0dXJuIHN0b3JhZ2VfLkVyYXNlKGZyb20sIHRvKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8aXRlcmF0b3I+KGZyb20pOworICAgIH0KICAgfQogCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgotICB2b2lkIEFzc2lnblJhbmdlKEl0ZXIgZmlyc3Qs
IEl0ZXIgbGFzdCwgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcpOworICAvLyBgSW5saW5lZFZlY3Rv
cjo6Y2xlYXIoKWAKKyAgLy8KKyAgLy8gRGVzdHJveXMgYWxsIGVsZW1lbnRzIGluIHRoZSBpbmxp
bmVkIHZlY3Rvciwgc2V0dGluZyB0aGUgc2l6ZSB0byBgMGAgYW5kCisgIC8vIGRlYWxsb2NhdGlu
ZyBhbnkgaGVsZCBtZW1vcnkuCisgIHZvaWQgY2xlYXIoKSBub2V4Y2VwdCB7CisgICAgaW5saW5l
ZF92ZWN0b3JfaW50ZXJuYWw6OkRlc3Ryb3lFbGVtZW50cyhzdG9yYWdlXy5HZXRBbGxvY1B0cigp
LCBkYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplKCkpOworICAgIHN0b3JhZ2VfLkRlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICAgIHN0b3Jh
Z2VfLlNldElubGluZWRTaXplKDApOworICB9CiAKLSAgLy8gRmFzdGVyIHBhdGggZm9yIGZvcndh
cmQgaXRlcmF0b3JzLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KLSAgdm9pZCBBc3NpZ25S
YW5nZShJdGVyIGZpcnN0LCBJdGVyIGxhc3QsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpOwor
ICAvLyBgSW5saW5lZFZlY3Rvcjo6cmVzZXJ2ZSguLi4pYAorICAvLworICAvLyBFbnN1cmVzIHRo
YXQgdGhlcmUgaXMgZW5vdWdoIHJvb20gZm9yIGF0IGxlYXN0IGBuYCBlbGVtZW50cy4KKyAgdm9p
ZCByZXNlcnZlKHNpemVfdHlwZSBuKSB7IHN0b3JhZ2VfLlJlc2VydmUobik7IH0KKworICAvLyBg
SW5saW5lZFZlY3Rvcjo6c2hyaW5rX3RvX2ZpdCgpYAorICAvLworICAvLyBSZWR1Y2VzIG1lbW9y
eSB1c2FnZSBieSBmcmVlaW5nIHVudXNlZCBtZW1vcnkuIEFmdGVyIGJlaW5nIGNhbGxlZCwgY2Fs
bHMgdG8KKyAgLy8gYGNhcGFjaXR5KClgIHdpbGwgYmUgZXF1YWwgdG8gYG1heChOLCBzaXplKCkp
YC4KKyAgLy8KKyAgLy8gSWYgYHNpemUoKSA8PSBOYCBhbmQgdGhlIGlubGluZWQgdmVjdG9yIGNv
bnRhaW5zIGFsbG9jYXRlZCBtZW1vcnksIHRoZQorICAvLyBlbGVtZW50cyB3aWxsIGFsbCBiZSBt
b3ZlZCB0byB0aGUgaW5saW5lZCBzcGFjZSBhbmQgdGhlIGFsbG9jYXRlZCBtZW1vcnkKKyAgLy8g
d2lsbCBiZSBkZWFsbG9jYXRlZC4KKyAgLy8KKyAgLy8gSWYgYHNpemUoKSA+IE5gIGFuZCBgc2l6
ZSgpIDwgY2FwYWNpdHkoKWAsIHRoZSBlbGVtZW50cyB3aWxsIGJlIG1vdmVkIHRvIGEKKyAgLy8g
c21hbGxlciBhbGxvY2F0aW9uLgorICB2b2lkIHNocmlua190b19maXQoKSB7CisgICAgaWYgKHN0
b3JhZ2VfLkdldElzQWxsb2NhdGVkKCkpIHsKKyAgICAgIHN0b3JhZ2VfLlNocmlua1RvRml0KCk7
CisgICAgfQorICB9CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXI+Ci0gIHZvaWQgQXNzaWdu
UmFuZ2UoSXRlciBmaXJzdCwgSXRlciBsYXN0KSB7Ci0gICAgdXNpbmcgSXRlclRhZyA9IHR5cGVu
YW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeTsKLSAgICBB
c3NpZ25SYW5nZShmaXJzdCwgbGFzdCwgSXRlclRhZygpKTsKKyAgLy8gYElubGluZWRWZWN0b3I6
OnN3YXAoLi4uKWAKKyAgLy8KKyAgLy8gU3dhcHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBpbmxpbmVk
IHZlY3RvciB3aXRoIGBvdGhlcmAuCisgIHZvaWQgc3dhcChJbmxpbmVkVmVjdG9yJiBvdGhlcikg
eworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRSh0aGlzICE9IHN0ZDo6YWRkcmVzc29mKG90aGVy
KSkpIHsKKyAgICAgIHN0b3JhZ2VfLlN3YXAoc3RkOjphZGRyZXNzb2Yob3RoZXIuc3RvcmFnZV8p
KTsKKyAgICB9CiAgIH0KIAotICBpdGVyYXRvciBJbnNlcnRXaXRoQ291bnQoY29uc3RfaXRlcmF0
b3IgcG9zaXRpb24sIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdmFsdWVfdHlwZSYgdik7Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcj4KLSAg
aXRlcmF0b3IgSW5zZXJ0V2l0aFJhbmdlKGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBJbnB1dEl0
ZXIgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXIgbGFzdCwgc3Rk
OjppbnB1dF9pdGVyYXRvcl90YWcpOwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXI+
Ci0gIGl0ZXJhdG9yIEluc2VydFdpdGhSYW5nZShjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwgRm9y
d2FyZEl0ZXIgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlciBs
YXN0LCBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKTsKLQotICBBbGxvY2F0b3JBbmRUYWcgYWxs
b2NhdG9yX2FuZF90YWdfOwotCi0gIC8vIEVpdGhlciB0aGUgaW5saW5lZCBvciBhbGxvY2F0ZWQg
cmVwcmVzZW50YXRpb24KLSAgdW5pb24gUmVwIHsKLSAgICAvLyBVc2Ugc3RydWN0IHRvIHBlcmZv
cm0gaW5kaXJlY3Rpb24gdGhhdCBzb2x2ZXMgYSBiaXphcnJlIGNvbXBpbGF0aW9uCi0gICAgLy8g
ZXJyb3Igb24gVmlzdWFsIFN0dWRpbyAoYWxsIGtub3duIHZlcnNpb25zKS4KLSAgICBzdHJ1Y3Qg
ewotICAgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKHZhbHVlX3R5cGUp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25vZih2YWx1ZV90eXBl
KT46OnR5cGUgaW5saW5lZFtOXTsKLSAgICB9IGlubGluZWRfc3RvcmFnZTsKLSAgICBzdHJ1Y3Qg
ewotICAgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKEFsbG9jYXRpb24p
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25vZihBbGxvY2F0aW9u
KT46OnR5cGUgYWxsb2NhdGlvbjsKLSAgICB9IGFsbG9jYXRpb25fc3RvcmFnZTsKLSAgfSByZXBf
OworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUaGVULCBzaXpl
X3QgVGhlTiwgdHlwZW5hbWUgVGhlQT4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIGNv
bnN0IGFic2w6OklubGluZWRWZWN0b3I8VGhlVCwgVGhlTiwgVGhlQT4mIGEpOworCisgIFN0b3Jh
Z2Ugc3RvcmFnZV87CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gSW5saW5lZFZl
Y3RvciBOb24tTWVtYmVyIEZ1bmN0aW9ucwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8g
c3dhcCgpCisvLyBgc3dhcCguLi4pYAogLy8KLS8vIFN3YXBzIHRoZSBjb250ZW50cyBvZiB0d28g
aW5saW5lZCB2ZWN0b3JzLiBUaGlzIGNvbnZlbmllbmNlIGZ1bmN0aW9uCi0vLyBzaW1wbHkgY2Fs
bHMgSW5saW5lZFZlY3Rvcjo6c3dhcChvdGhlcl9pbmxpbmVkX3ZlY3RvcikuCisvLyBTd2FwcyB0
aGUgY29udGVudHMgb2YgdHdvIGlubGluZWQgdmVjdG9ycy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLXZvaWQgc3dhcChJbmxpbmVkVmVjdG9yPFQsIE4sIEE+
JiBhLAotICAgICAgICAgIElubGluZWRWZWN0b3I8VCwgTiwgQT4mIGIpIG5vZXhjZXB0KG5vZXhj
ZXB0KGEuc3dhcChiKSkpIHsKK3ZvaWQgc3dhcChhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+
JiBhLAorICAgICAgICAgIGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4mIGIpIG5vZXhjZXB0
KG5vZXhjZXB0KGEuc3dhcChiKSkpIHsKICAgYS5zd2FwKGIpOwogfQogCi0vLyBvcGVyYXRvcj09
KCkKKy8vIGBvcGVyYXRvcj09KC4uLilgCiAvLwotLy8gVGVzdHMgdGhlIGVxdWl2YWxlbmN5IG9m
IHRoZSBjb250ZW50cyBvZiB0d28gaW5saW5lZCB2ZWN0b3JzLgorLy8gVGVzdHMgZm9yIHZhbHVl
LWVxdWFsaXR5IG9mIHR3byBpbmxpbmVkIHZlY3RvcnMuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
c2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgSW5saW5lZFZlY3Rv
cjxULCBOLCBBPiYgYSwKLSAgICAgICAgICAgICAgICBjb25zdCBJbmxpbmVkVmVjdG9yPFQsIE4s
IEE+JiBiKSB7Ci0gIHJldHVybiBhYnNsOjplcXVhbChhLmJlZ2luKCksIGEuZW5kKCksIGIuYmVn
aW4oKSwgYi5lbmQoKSk7Citib29sIG9wZXJhdG9yPT0oY29uc3QgYWJzbDo6SW5saW5lZFZlY3Rv
cjxULCBOLCBBPiYgYSwKKyAgICAgICAgICAgICAgICBjb25zdCBhYnNsOjpJbmxpbmVkVmVjdG9y
PFQsIE4sIEE+JiBiKSB7CisgIGF1dG8gYV9kYXRhID0gYS5kYXRhKCk7CisgIGF1dG8gYl9kYXRh
ID0gYi5kYXRhKCk7CisgIHJldHVybiBhYnNsOjplcXVhbChhX2RhdGEsIGFfZGF0YSArIGEuc2l6
ZSgpLCBiX2RhdGEsIGJfZGF0YSArIGIuc2l6ZSgpKTsKIH0KIAotLy8gb3BlcmF0b3IhPSgpCisv
LyBgb3BlcmF0b3IhPSguLi4pYAogLy8KLS8vIFRlc3RzIHRoZSBpbmVxdWFsaXR5IG9mIHRoZSBj
b250ZW50cyBvZiB0d28gaW5saW5lZCB2ZWN0b3JzLgorLy8gVGVzdHMgZm9yIHZhbHVlLWluZXF1
YWxpdHkgb2YgdHdvIGlubGluZWQgdmVjdG9ycy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgTiwgdHlwZW5hbWUgQT4KLWJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmxpbmVkVmVjdG9yPFQs
IE4sIEE+JiBhLAotICAgICAgICAgICAgICAgIGNvbnN0IElubGluZWRWZWN0b3I8VCwgTiwgQT4m
IGIpIHsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+
JiBhLAorICAgICAgICAgICAgICAgIGNvbnN0IGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4m
IGIpIHsKICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotLy8gb3BlcmF0b3I8KCkKKy8vIGBvcGVy
YXRvcjwoLi4uKWAKIC8vCi0vLyBUZXN0cyB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiBvbmUgaW5s
aW5lZCB2ZWN0b3IgYXJlIGxlc3MgdGhhbiB0aGUgY29udGVudHMKLS8vIG9mIGFub3RoZXIgdGhy
b3VnaCBhIGxleGljb2dyYXBoaWNhbCBjb21wYXJpc29uIG9wZXJhdGlvbi4KKy8vIFRlc3RzIHdo
ZXRoZXIgdGhlIHZhbHVlIG9mIGFuIGlubGluZWQgdmVjdG9yIGlzIGxlc3MgdGhhbiB0aGUgdmFs
dWUgb2YKKy8vIGFub3RoZXIgaW5saW5lZCB2ZWN0b3IgdXNpbmcgYSBsZXhpY29ncmFwaGljYWwg
Y29tcGFyaXNvbiBhbGdvcml0aG0uCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5
cGVuYW1lIEE+Ci1ib29sIG9wZXJhdG9yPChjb25zdCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBh
LAotICAgICAgICAgICAgICAgY29uc3QgSW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYikgewotICBy
ZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZShhLmJlZ2luKCksIGEuZW5kKCksIGIu
YmVnaW4oKSwgYi5lbmQoKSk7Citib29sIG9wZXJhdG9yPChjb25zdCBhYnNsOjpJbmxpbmVkVmVj
dG9yPFQsIE4sIEE+JiBhLAorICAgICAgICAgICAgICAgY29uc3QgYWJzbDo6SW5saW5lZFZlY3Rv
cjxULCBOLCBBPiYgYikgeworICBhdXRvIGFfZGF0YSA9IGEuZGF0YSgpOworICBhdXRvIGJfZGF0
YSA9IGIuZGF0YSgpOworICByZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZShhX2Rh
dGEsIGFfZGF0YSArIGEuc2l6ZSgpLCBiX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJfZGF0YSArIGIuc2l6ZSgpKTsKIH0KIAotLy8gb3BlcmF0b3I+KCkKKy8v
IGBvcGVyYXRvcj4oLi4uKWAKIC8vCi0vLyBUZXN0cyB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiBv
bmUgaW5saW5lZCB2ZWN0b3IgYXJlIGdyZWF0ZXIgdGhhbiB0aGUKLS8vIGNvbnRlbnRzIG9mIGFu
b3RoZXIgdGhyb3VnaCBhIGxleGljb2dyYXBoaWNhbCBjb21wYXJpc29uIG9wZXJhdGlvbi4KKy8v
IFRlc3RzIHdoZXRoZXIgdGhlIHZhbHVlIG9mIGFuIGlubGluZWQgdmVjdG9yIGlzIGdyZWF0ZXIg
dGhhbiB0aGUgdmFsdWUgb2YKKy8vIGFub3RoZXIgaW5saW5lZCB2ZWN0b3IgdXNpbmcgYSBsZXhp
Y29ncmFwaGljYWwgY29tcGFyaXNvbiBhbGdvcml0aG0uCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
c2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1ib29sIG9wZXJhdG9yPihjb25zdCBJbmxpbmVkVmVjdG9y
PFQsIE4sIEE+JiBhLAotICAgICAgICAgICAgICAgY29uc3QgSW5saW5lZFZlY3RvcjxULCBOLCBB
PiYgYikgeworYm9vbCBvcGVyYXRvcj4oY29uc3QgYWJzbDo6SW5saW5lZFZlY3RvcjxULCBOLCBB
PiYgYSwKKyAgICAgICAgICAgICAgIGNvbnN0IGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4m
IGIpIHsKICAgcmV0dXJuIGIgPCBhOwogfQogCi0vLyBvcGVyYXRvcjw9KCkKKy8vIGBvcGVyYXRv
cjw9KC4uLilgCiAvLwotLy8gVGVzdHMgd2hldGhlciB0aGUgY29udGVudHMgb2Ygb25lIGlubGlu
ZWQgdmVjdG9yIGFyZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8KLS8vIHRoZSBjb250ZW50cyBvZiBh
bm90aGVyIHRocm91Z2ggYSBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBvcGVyYXRpb24uCisv
LyBUZXN0cyB3aGV0aGVyIHRoZSB2YWx1ZSBvZiBhbiBpbmxpbmVkIHZlY3RvciBpcyBsZXNzIHRo
YW4gb3IgZXF1YWwgdG8gdGhlCisvLyB2YWx1ZSBvZiBhbm90aGVyIGlubGluZWQgdmVjdG9yIHVz
aW5nIGEgbGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gYWxnb3JpdGhtLgogdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgotYm9vbCBvcGVyYXRvcjw9KGNvbnN0IElu
bGluZWRWZWN0b3I8VCwgTiwgQT4mIGEsCi0gICAgICAgICAgICAgICAgY29uc3QgSW5saW5lZFZl
Y3RvcjxULCBOLCBBPiYgYikgeworYm9vbCBvcGVyYXRvcjw9KGNvbnN0IGFic2w6OklubGluZWRW
ZWN0b3I8VCwgTiwgQT4mIGEsCisgICAgICAgICAgICAgICAgY29uc3QgYWJzbDo6SW5saW5lZFZl
Y3RvcjxULCBOLCBBPiYgYikgewogICByZXR1cm4gIShiIDwgYSk7CiB9CiAKLS8vIG9wZXJhdG9y
Pj0oKQorLy8gYG9wZXJhdG9yPj0oLi4uKWAKIC8vCi0vLyBUZXN0cyB3aGV0aGVyIHRoZSBjb250
ZW50cyBvZiBvbmUgaW5saW5lZCB2ZWN0b3IgYXJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bwot
Ly8gdGhlIGNvbnRlbnRzIG9mIGFub3RoZXIgdGhyb3VnaCBhIGxleGljb2dyYXBoaWNhbCBjb21w
YXJpc29uIG9wZXJhdGlvbi4KKy8vIFRlc3RzIHdoZXRoZXIgdGhlIHZhbHVlIG9mIGFuIGlubGlu
ZWQgdmVjdG9yIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUKKy8vIHZhbHVlIG9mIGFu
b3RoZXIgaW5saW5lZCB2ZWN0b3IgdXNpbmcgYSBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBh
bGdvcml0aG0uCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1i
b29sIG9wZXJhdG9yPj0oY29uc3QgSW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYSwKLSAgICAgICAg
ICAgICAgICBjb25zdCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBiKSB7Citib29sIG9wZXJhdG9y
Pj0oY29uc3QgYWJzbDo6SW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYSwKKyAgICAgICAgICAgICAg
ICBjb25zdCBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBiKSB7CiAgIHJldHVybiAhKGEg
PCBiKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEltcGxlbWVudGF0aW9uIG9m
IElubGluZWRWZWN0b3IKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBgQWJzbEhhc2hWYWx1
ZSguLi4pYAogLy8KLS8vIERvIG5vdCBkZXBlbmQgb24gYW55IGltcGxlbWVudGF0aW9uIGRldGFp
bHMgYmVsb3cgdGhpcyBsaW5lLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5
cGVuYW1lIEE+Ci1JbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJbmxpbmVkVmVjdG9yKGNvbnN0IElu
bGluZWRWZWN0b3ImIHYpCi0gICAgOiBhbGxvY2F0b3JfYW5kX3RhZ18odi5hbGxvY2F0b3IoKSkg
ewotICByZXNlcnZlKHYuc2l6ZSgpKTsKLSAgaWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgVW5pbml0
aWFsaXplZENvcHkodi5iZWdpbigpLCB2LmVuZCgpLCBhbGxvY2F0ZWRfc3BhY2UoKSk7Ci0gICAg
dGFnKCkuc2V0X2FsbG9jYXRlZF9zaXplKHYuc2l6ZSgpKTsKLSAgfSBlbHNlIHsKLSAgICBVbmlu
aXRpYWxpemVkQ29weSh2LmJlZ2luKCksIHYuZW5kKCksIGlubGluZWRfc3BhY2UoKSk7Ci0gICAg
dGFnKCkuc2V0X2lubGluZV9zaXplKHYuc2l6ZSgpKTsKLSAgfQotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1JbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJ
bmxpbmVkVmVjdG9yKGNvbnN0IElubGluZWRWZWN0b3ImIHYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykKLSAgICA6IGFs
bG9jYXRvcl9hbmRfdGFnXyhhbGxvYykgewotICByZXNlcnZlKHYuc2l6ZSgpKTsKLSAgaWYgKGFs
bG9jYXRlZCgpKSB7Ci0gICAgVW5pbml0aWFsaXplZENvcHkodi5iZWdpbigpLCB2LmVuZCgpLCBh
bGxvY2F0ZWRfc3BhY2UoKSk7Ci0gICAgdGFnKCkuc2V0X2FsbG9jYXRlZF9zaXplKHYuc2l6ZSgp
KTsKLSAgfSBlbHNlIHsKLSAgICBVbmluaXRpYWxpemVkQ29weSh2LmJlZ2luKCksIHYuZW5kKCks
IGlubGluZWRfc3BhY2UoKSk7Ci0gICAgdGFnKCkuc2V0X2lubGluZV9zaXplKHYuc2l6ZSgpKTsK
LSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1J
bmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJbmxpbmVkVmVjdG9yKElubGluZWRWZWN0b3ImJiB2KSBu
b2V4Y2VwdCgKLSAgICBhYnNsOjphbGxvY2F0b3JfaXNfbm90aHJvdzxhbGxvY2F0b3JfdHlwZT46
OnZhbHVlIHx8Ci0gICAgc3RkOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTx2YWx1ZV90
eXBlPjo6dmFsdWUpCi0gICAgOiBhbGxvY2F0b3JfYW5kX3RhZ18odi5hbGxvY2F0b3JfYW5kX3Rh
Z18pIHsKLSAgaWYgKHYuYWxsb2NhdGVkKCkpIHsKLSAgICAvLyBXZSBjYW4ganVzdCBzdGVhbCB0
aGUgdW5kZXJseWluZyBidWZmZXIgZnJvbSB0aGUgc291cmNlLgotICAgIC8vIFRoYXQgbGVhdmVz
IHRoZSBzb3VyY2UgZW1wdHksIHNvIHdlIGNsZWFyIGl0cyBzaXplLgotICAgIGluaXRfYWxsb2Nh
dGlvbih2LmFsbG9jYXRpb24oKSk7Ci0gICAgdi50YWcoKSA9IFRhZygpOwotICB9IGVsc2Ugewot
ICAgIFVuaW5pdGlhbGl6ZWRDb3B5KHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKHYuaW5saW5lZF9z
cGFjZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih2
LmlubGluZWRfc3BhY2UoKSArIHYuc2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICBpbmxp
bmVkX3NwYWNlKCkpOwotICB9Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwg
dHlwZW5hbWUgQT4KLUlubGluZWRWZWN0b3I8VCwgTiwgQT46OklubGluZWRWZWN0b3IoCi0gICAg
SW5saW5lZFZlY3RvciYmIHYsCi0gICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmCi0gICAgICAgIGFs
bG9jKSBub2V4Y2VwdChhYnNsOjphbGxvY2F0b3JfaXNfbm90aHJvdzxhbGxvY2F0b3JfdHlwZT46
OnZhbHVlKQotICAgIDogYWxsb2NhdG9yX2FuZF90YWdfKGFsbG9jKSB7Ci0gIGlmICh2LmFsbG9j
YXRlZCgpKSB7Ci0gICAgaWYgKGFsbG9jID09IHYuYWxsb2NhdG9yKCkpIHsKLSAgICAgIC8vIFdl
IGNhbiBqdXN0IHN0ZWFsIHRoZSBhbGxvY2F0aW9uIGZyb20gdGhlIHNvdXJjZS4KLSAgICAgIHRh
ZygpID0gdi50YWcoKTsKLSAgICAgIGluaXRfYWxsb2NhdGlvbih2LmFsbG9jYXRpb24oKSk7Ci0g
ICAgICB2LnRhZygpID0gVGFnKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8vIFdlIG5lZWQgdG8g
dXNlIG91ciBvd24gYWxsb2NhdG9yCi0gICAgICByZXNlcnZlKHYuc2l6ZSgpKTsKLSAgICAgIFVu
aW5pdGlhbGl6ZWRDb3B5KHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKHYuYmVnaW4oKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih2LmVuZCgpKSwgYWxs
b2NhdGVkX3NwYWNlKCkpOwotICAgICAgdGFnKCkuc2V0X2FsbG9jYXRlZF9zaXplKHYuc2l6ZSgp
KTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgVW5pbml0aWFsaXplZENvcHkoc3RkOjptYWtlX21v
dmVfaXRlcmF0b3Iodi5pbmxpbmVkX3NwYWNlKCkpLAotICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKHYuaW5saW5lZF9zcGFjZSgpICsgdi5zaXplKCkpLAotICAg
ICAgICAgICAgICAgICAgICAgIGlubGluZWRfc3BhY2UoKSk7Ci0gICAgdGFnKCkuc2V0X2lubGlu
ZV9zaXplKHYuc2l6ZSgpKTsKLSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IE4sIHR5cGVuYW1lIEE+Ci12b2lkIElubGluZWRWZWN0b3I8VCwgTiwgQT46OkluaXRBc3NpZ24o
c2l6ZV90eXBlIG4sIGNvbnN0IHZhbHVlX3R5cGUmIHQpIHsKLSAgaWYgKG4gPiBzdGF0aWNfY2Fz
dDxzaXplX3R5cGU+KE4pKSB7Ci0gICAgQWxsb2NhdGlvbiBuZXdfYWxsb2NhdGlvbihhbGxvY2F0
b3IoKSwgbik7Ci0gICAgaW5pdF9hbGxvY2F0aW9uKG5ld19hbGxvY2F0aW9uKTsKLSAgICBVbmlu
aXRpYWxpemVkRmlsbChhbGxvY2F0ZWRfc3BhY2UoKSwgYWxsb2NhdGVkX3NwYWNlKCkgKyBuLCB0
KTsKLSAgICB0YWcoKS5zZXRfYWxsb2NhdGVkX3NpemUobik7Ci0gIH0gZWxzZSB7Ci0gICAgVW5p
bml0aWFsaXplZEZpbGwoaW5saW5lZF9zcGFjZSgpLCBpbmxpbmVkX3NwYWNlKCkgKyBuLCB0KTsK
LSAgICB0YWcoKS5zZXRfaW5saW5lX3NpemUobik7Ci0gIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgotdm9pZCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+
OjpJbml0QXNzaWduKHNpemVfdHlwZSBuKSB7Ci0gIGlmIChuID4gc3RhdGljX2Nhc3Q8c2l6ZV90
eXBlPihOKSkgewotICAgIEFsbG9jYXRpb24gbmV3X2FsbG9jYXRpb24oYWxsb2NhdG9yKCksIG4p
OwotICAgIGluaXRfYWxsb2NhdGlvbihuZXdfYWxsb2NhdGlvbik7Ci0gICAgVW5pbml0aWFsaXpl
ZEZpbGwoYWxsb2NhdGVkX3NwYWNlKCksIGFsbG9jYXRlZF9zcGFjZSgpICsgbik7Ci0gICAgdGFn
KCkuc2V0X2FsbG9jYXRlZF9zaXplKG4pOwotICB9IGVsc2UgewotICAgIFVuaW5pdGlhbGl6ZWRG
aWxsKGlubGluZWRfc3BhY2UoKSwgaW5saW5lZF9zcGFjZSgpICsgbik7Ci0gICAgdGFnKCkuc2V0
X2lubGluZV9zaXplKG4pOwotICB9Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
TiwgdHlwZW5hbWUgQT4KLXZvaWQgSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6cmVzaXplKHNpemVf
dHlwZSBuKSB7Ci0gIHNpemVfdHlwZSBzID0gc2l6ZSgpOwotICBpZiAobiA8IHMpIHsKLSAgICBl
cmFzZShiZWdpbigpICsgbiwgZW5kKCkpOwotICAgIHJldHVybjsKLSAgfQotICByZXNlcnZlKG4p
OwotICBhc3NlcnQoY2FwYWNpdHkoKSA+PSBuKTsKLQotICAvLyBGaWxsIG5ldyBzcGFjZSB3aXRo
IGVsZW1lbnRzIGNvbnN0cnVjdGVkIGluLXBsYWNlLgotICBpZiAoYWxsb2NhdGVkKCkpIHsKLSAg
ICBVbmluaXRpYWxpemVkRmlsbChhbGxvY2F0ZWRfc3BhY2UoKSArIHMsIGFsbG9jYXRlZF9zcGFj
ZSgpICsgbik7Ci0gICAgdGFnKCkuc2V0X2FsbG9jYXRlZF9zaXplKG4pOwotICB9IGVsc2Ugewot
ICAgIFVuaW5pdGlhbGl6ZWRGaWxsKGlubGluZWRfc3BhY2UoKSArIHMsIGlubGluZWRfc3BhY2Uo
KSArIG4pOwotICAgIHRhZygpLnNldF9pbmxpbmVfc2l6ZShuKTsKLSAgfQotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci12b2lkIElubGluZWRWZWN0b3I8
VCwgTiwgQT46OnJlc2l6ZShzaXplX3R5cGUgbiwgY29uc3QgdmFsdWVfdHlwZSYgZWxlbSkgewot
ICBzaXplX3R5cGUgcyA9IHNpemUoKTsKLSAgaWYgKG4gPCBzKSB7Ci0gICAgZXJhc2UoYmVnaW4o
KSArIG4sIGVuZCgpKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgcmVzZXJ2ZShuKTsKLSAgYXNzZXJ0
KGNhcGFjaXR5KCkgPj0gbik7Ci0KLSAgLy8gRmlsbCBuZXcgc3BhY2Ugd2l0aCBjb3BpZXMgb2Yg
J2VsZW0nLgotICBpZiAoYWxsb2NhdGVkKCkpIHsKLSAgICBVbmluaXRpYWxpemVkRmlsbChhbGxv
Y2F0ZWRfc3BhY2UoKSArIHMsIGFsbG9jYXRlZF9zcGFjZSgpICsgbiwgZWxlbSk7Ci0gICAgdGFn
KCkuc2V0X2FsbG9jYXRlZF9zaXplKG4pOwotICB9IGVsc2UgewotICAgIFVuaW5pdGlhbGl6ZWRG
aWxsKGlubGluZWRfc3BhY2UoKSArIHMsIGlubGluZWRfc3BhY2UoKSArIG4sIGVsZW0pOwotICAg
IHRhZygpLnNldF9pbmxpbmVfc2l6ZShuKTsKLSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci10ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLXR5
cGVuYW1lIElubGluZWRWZWN0b3I8VCwgTiwgQT46Oml0ZXJhdG9yIElubGluZWRWZWN0b3I8VCwg
TiwgQT46OmVtcGxhY2UoCi0gICAgY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIEFyZ3MmJi4uLiBh
cmdzKSB7Ci0gIGFzc2VydChwb3NpdGlvbiA+PSBiZWdpbigpKTsKLSAgYXNzZXJ0KHBvc2l0aW9u
IDw9IGVuZCgpKTsKLSAgaWYgKHBvc2l0aW9uID09IGVuZCgpKSB7Ci0gICAgZW1wbGFjZV9iYWNr
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgcmV0dXJuIGVuZCgpIC0gMTsKLSAg
fQotCi0gIFQgbmV3X3QgPSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0KLSAgYXV0
byByYW5nZSA9IFNoaWZ0UmlnaHQocG9zaXRpb24sIDEpOwotICBpZiAocmFuZ2UuZmlyc3QgPT0g
cmFuZ2Uuc2Vjb25kKSB7Ci0gICAgLy8gY29uc3RydWN0aW5nIGludG8gdW5pbml0aWFsaXplZCBt
ZW1vcnkKLSAgICBDb25zdHJ1Y3QocmFuZ2UuZmlyc3QsIHN0ZDo6bW92ZShuZXdfdCkpOwotICB9
IGVsc2UgewotICAgIC8vIGFzc2lnbmluZyBpbnRvIG1vdmVkLWZyb20gb2JqZWN0Ci0gICAgKnJh
bmdlLmZpcnN0ID0gVChzdGQ6Om1vdmUobmV3X3QpKTsKLSAgfQotCi0gIHJldHVybiByYW5nZS5m
aXJzdDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgot
dHlwZW5hbWUgSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6aXRlcmF0b3IgSW5saW5lZFZlY3RvcjxU
LCBOLCBBPjo6ZXJhc2UoCi0gICAgY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9y
IGxhc3QpIHsKLSAgYXNzZXJ0KGJlZ2luKCkgPD0gZmlyc3QpOwotICBhc3NlcnQoZmlyc3QgPD0g
bGFzdCk7Ci0gIGFzc2VydChsYXN0IDw9IGVuZCgpKTsKLQotICBpdGVyYXRvciByYW5nZV9zdGFy
dCA9IGNvbnN0X2Nhc3Q8aXRlcmF0b3I+KGZpcnN0KTsKLSAgaXRlcmF0b3IgcmFuZ2VfZW5kID0g
Y29uc3RfY2FzdDxpdGVyYXRvcj4obGFzdCk7Ci0KLSAgc2l6ZV90eXBlIHMgPSBzaXplKCk7Ci0g
IHB0cmRpZmZfdCBlcmFzZV9nYXAgPSBzdGQ6OmRpc3RhbmNlKHJhbmdlX3N0YXJ0LCByYW5nZV9l
bmQpOwotICBpZiAoZXJhc2VfZ2FwID4gMCkgewotICAgIHBvaW50ZXIgc3BhY2U7Ci0gICAgaWYg
KGFsbG9jYXRlZCgpKSB7Ci0gICAgICBzcGFjZSA9IGFsbG9jYXRlZF9zcGFjZSgpOwotICAgICAg
dGFnKCkuc2V0X2FsbG9jYXRlZF9zaXplKHMgLSBlcmFzZV9nYXApOwotICAgIH0gZWxzZSB7Ci0g
ICAgICBzcGFjZSA9IGlubGluZWRfc3BhY2UoKTsKLSAgICAgIHRhZygpLnNldF9pbmxpbmVfc2l6
ZShzIC0gZXJhc2VfZ2FwKTsKLSAgICB9Ci0gICAgc3RkOjptb3ZlKHJhbmdlX2VuZCwgc3BhY2Ug
KyBzLCByYW5nZV9zdGFydCk7Ci0gICAgRGVzdHJveShzcGFjZSArIHMgLSBlcmFzZV9nYXAsIHNw
YWNlICsgcyk7Ci0gIH0KLSAgcmV0dXJuIHJhbmdlX3N0YXJ0OwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci12b2lkIElubGluZWRWZWN0b3I8VCwgTiwg
QT46OnN3YXAoSW5saW5lZFZlY3RvciYgb3RoZXIpIHsKLSAgdXNpbmcgc3RkOjpzd2FwOyAgLy8g
QXVnbWVudCBBREwgd2l0aCBzdGQ6OnN3YXAuCi0gIGlmICgmb3RoZXIgPT0gdGhpcykgewotICAg
IHJldHVybjsKLSAgfQotICBpZiAoYWxsb2NhdGVkKCkgJiYgb3RoZXIuYWxsb2NhdGVkKCkpIHsK
LSAgICAvLyBCb3RoIG91dCBvZiBsaW5lLCBzbyBqdXN0IHN3YXAgdGhlIHRhZywgYWxsb2NhdGlv
biwgYW5kIGFsbG9jYXRvci4KLSAgICBzd2FwKHRhZygpLCBvdGhlci50YWcoKSk7Ci0gICAgc3dh
cChhbGxvY2F0aW9uKCksIG90aGVyLmFsbG9jYXRpb24oKSk7Ci0gICAgc3dhcChhbGxvY2F0b3Io
KSwgb3RoZXIuYWxsb2NhdG9yKCkpOwotICAgIHJldHVybjsKLSAgfQotICBpZiAoIWFsbG9jYXRl
ZCgpICYmICFvdGhlci5hbGxvY2F0ZWQoKSkgewotICAgIC8vIEJvdGggaW5saW5lZDogc3dhcCB1
cCB0byBzbWFsbGVyIHNpemUsIHRoZW4gbW92ZSByZW1haW5pbmcgZWxlbWVudHMuCi0gICAgSW5s
aW5lZFZlY3RvciogYSA9IHRoaXM7Ci0gICAgSW5saW5lZFZlY3RvciogYiA9ICZvdGhlcjsKLSAg
ICBpZiAoc2l6ZSgpIDwgb3RoZXIuc2l6ZSgpKSB7Ci0gICAgICBzd2FwKGEsIGIpOwotICAgIH0K
LQotICAgIGNvbnN0IHNpemVfdHlwZSBhX3NpemUgPSBhLT5zaXplKCk7Ci0gICAgY29uc3Qgc2l6
ZV90eXBlIGJfc2l6ZSA9IGItPnNpemUoKTsKLSAgICBhc3NlcnQoYV9zaXplID49IGJfc2l6ZSk7
Ci0gICAgLy8gJ2EnIGlzIGxhcmdlci4gU3dhcCB0aGUgZWxlbWVudHMgdXAgdG8gdGhlIHNtYWxs
ZXIgYXJyYXkgc2l6ZS4KLSAgICBzdGQ6OnN3YXBfcmFuZ2VzKGEtPmlubGluZWRfc3BhY2UoKSwg
YS0+aW5saW5lZF9zcGFjZSgpICsgYl9zaXplLAotICAgICAgICAgICAgICAgICAgICAgYi0+aW5s
aW5lZF9zcGFjZSgpKTsKLQotICAgIC8vIE1vdmUgdGhlIHJlbWFpbmluZyBlbGVtZW50czogQVti
X3NpemUsYV9zaXplKSAtPiBCW2Jfc2l6ZSxhX3NpemUpCi0gICAgYi0+VW5pbml0aWFsaXplZENv
cHkoYS0+aW5saW5lZF9zcGFjZSgpICsgYl9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGEtPmlubGluZWRfc3BhY2UoKSArIGFfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBi
LT5pbmxpbmVkX3NwYWNlKCkgKyBiX3NpemUpOwotICAgIGEtPkRlc3Ryb3koYS0+aW5saW5lZF9z
cGFjZSgpICsgYl9zaXplLCBhLT5pbmxpbmVkX3NwYWNlKCkgKyBhX3NpemUpOwotCi0gICAgc3dh
cChhLT50YWcoKSwgYi0+dGFnKCkpOwotICAgIHN3YXAoYS0+YWxsb2NhdG9yKCksIGItPmFsbG9j
YXRvcigpKTsKLSAgICBhc3NlcnQoYi0+c2l6ZSgpID09IGFfc2l6ZSk7Ci0gICAgYXNzZXJ0KGEt
PnNpemUoKSA9PSBiX3NpemUpOwotICAgIHJldHVybjsKLSAgfQotICAvLyBPbmUgaXMgb3V0IG9m
IGxpbmUsIG9uZSBpcyBpbmxpbmUuCi0gIC8vIFdlIGZpcnN0IG1vdmUgdGhlIGVsZW1lbnRzIGZy
b20gdGhlIGlubGluZWQgdmVjdG9yIGludG8gdGhlCi0gIC8vIGlubGluZWQgc3BhY2UgaW4gdGhl
IG90aGVyIHZlY3Rvci4gIFdlIHRoZW4gcHV0IHRoZSBvdGhlciB2ZWN0b3IncwotICAvLyBwb2lu
dGVyL2NhcGFjaXR5IGludG8gdGhlIG9yaWdpbmFsbHkgaW5saW5lZCB2ZWN0b3IgYW5kIHN3YXAK
LSAgLy8gdGhlIHRhZ3MuCi0gIElubGluZWRWZWN0b3IqIGEgPSB0aGlzOwotICBJbmxpbmVkVmVj
dG9yKiBiID0gJm90aGVyOwotICBpZiAoYS0+YWxsb2NhdGVkKCkpIHsKLSAgICBzd2FwKGEsIGIp
OwotICB9Ci0gIGFzc2VydCghYS0+YWxsb2NhdGVkKCkpOwotICBhc3NlcnQoYi0+YWxsb2NhdGVk
KCkpOwotICBjb25zdCBzaXplX3R5cGUgYV9zaXplID0gYS0+c2l6ZSgpOwotICBjb25zdCBzaXpl
X3R5cGUgYl9zaXplID0gYi0+c2l6ZSgpOwotICAvLyBJbiBhbiBvcHRpbWl6ZWQgYnVpbGQsIGJf
c2l6ZSB3b3VsZCBiZSB1bnVzZWQuCi0gICh2b2lkKWJfc2l6ZTsKLQotICAvLyBNYWRlIExvY2Fs
IGNvcGllcyBvZiBzaXplKCksIGRvbid0IG5lZWQgdGFnKCkgYWNjdXJhdGUgYW55bW9yZQotICBz
d2FwKGEtPnRhZygpLCBiLT50YWcoKSk7Ci0KLSAgLy8gQ29weSBiX2FsbG9jYXRpb24gb3V0IGJl
Zm9yZSBiJ3MgdW5pb24gZ2V0cyBjbG9iYmVyZWQgYnkgaW5saW5lX3NwYWNlLgotICBBbGxvY2F0
aW9uIGJfYWxsb2NhdGlvbiA9IGItPmFsbG9jYXRpb24oKTsKLQotICBiLT5VbmluaXRpYWxpemVk
Q29weShhLT5pbmxpbmVkX3NwYWNlKCksIGEtPmlubGluZWRfc3BhY2UoKSArIGFfc2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgYi0+aW5saW5lZF9zcGFjZSgpKTsKLSAgYS0+RGVzdHJveShh
LT5pbmxpbmVkX3NwYWNlKCksIGEtPmlubGluZWRfc3BhY2UoKSArIGFfc2l6ZSk7Ci0KLSAgYS0+
YWxsb2NhdGlvbigpID0gYl9hbGxvY2F0aW9uOwotCi0gIGlmIChhLT5hbGxvY2F0b3IoKSAhPSBi
LT5hbGxvY2F0b3IoKSkgewotICAgIHN3YXAoYS0+YWxsb2NhdG9yKCksIGItPmFsbG9jYXRvcigp
KTsKLSAgfQotCi0gIGFzc2VydChiLT5zaXplKCkgPT0gYV9zaXplKTsKLSAgYXNzZXJ0KGEtPnNp
emUoKSA9PSBiX3NpemUpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5
cGVuYW1lIEE+Ci12b2lkIElubGluZWRWZWN0b3I8VCwgTiwgQT46OkVubGFyZ2VCeShzaXplX3R5
cGUgZGVsdGEpIHsKLSAgY29uc3Qgc2l6ZV90eXBlIHMgPSBzaXplKCk7Ci0gIGFzc2VydChzIDw9
IGNhcGFjaXR5KCkpOwotCi0gIHNpemVfdHlwZSB0YXJnZXQgPSBzdGQ6Om1heChzdGF0aWNfY2Fz
dDxzaXplX3R5cGU+KE4pLCBzICsgZGVsdGEpOwotCi0gIC8vIENvbXB1dGUgbmV3IGNhcGFjaXR5
IGJ5IHJlcGVhdGVkbHkgZG91YmxpbmcgY3VycmVudCBjYXBhY2l0eQotICAvLyBUT0RPKHBzcmMp
OiBDaGVjayBhbmQgYXZvaWQgb3ZlcmZsb3c/Ci0gIHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBj
YXBhY2l0eSgpOwotICB3aGlsZSAobmV3X2NhcGFjaXR5IDwgdGFyZ2V0KSB7Ci0gICAgbmV3X2Nh
cGFjaXR5IDw8PSAxOwotICB9Ci0KLSAgQWxsb2NhdGlvbiBuZXdfYWxsb2NhdGlvbihhbGxvY2F0
b3IoKSwgbmV3X2NhcGFjaXR5KTsKLQotICBVbmluaXRpYWxpemVkQ29weShzdGQ6Om1ha2VfbW92
ZV9pdGVyYXRvcihkYXRhKCkpLAotICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfbW92ZV9p
dGVyYXRvcihkYXRhKCkgKyBzKSwKLSAgICAgICAgICAgICAgICAgICAgbmV3X2FsbG9jYXRpb24u
YnVmZmVyKCkpOwotCi0gIFJlc2V0QWxsb2NhdGlvbihuZXdfYWxsb2NhdGlvbiwgcyk7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLWF1dG8gSW5saW5l
ZFZlY3RvcjxULCBOLCBBPjo6U2hpZnRSaWdodChjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwgc2l6
ZV90eXBlIG4pCi0gICAgLT4gc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4gewotICBpdGVy
YXRvciBzdGFydF91c2VkID0gY29uc3RfY2FzdDxpdGVyYXRvcj4ocG9zaXRpb24pOwotICBpdGVy
YXRvciBzdGFydF9yYXcgPSBjb25zdF9jYXN0PGl0ZXJhdG9yPihwb3NpdGlvbik7Ci0gIHNpemVf
dHlwZSBzID0gc2l6ZSgpOwotICBzaXplX3R5cGUgcmVxdWlyZWRfc2l6ZSA9IHMgKyBuOwotCi0g
IGlmIChyZXF1aXJlZF9zaXplID4gY2FwYWNpdHkoKSkgewotICAgIC8vIENvbXB1dGUgbmV3IGNh
cGFjaXR5IGJ5IHJlcGVhdGVkbHkgZG91YmxpbmcgY3VycmVudCBjYXBhY2l0eQotICAgIHNpemVf
dHlwZSBuZXdfY2FwYWNpdHkgPSBjYXBhY2l0eSgpOwotICAgIHdoaWxlIChuZXdfY2FwYWNpdHkg
PCByZXF1aXJlZF9zaXplKSB7Ci0gICAgICBuZXdfY2FwYWNpdHkgPDw9IDE7Ci0gICAgfQotICAg
IC8vIE1vdmUgZXZlcnlvbmUgaW50byB0aGUgbmV3IGFsbG9jYXRpb24sIGxlYXZpbmcgYSBnYXAg
b2YgbiBmb3IgdGhlCi0gICAgLy8gcmVxdWVzdGVkIHNoaWZ0LgotICAgIEFsbG9jYXRpb24gbmV3
X2FsbG9jYXRpb24oYWxsb2NhdG9yKCksIG5ld19jYXBhY2l0eSk7Ci0gICAgc2l6ZV90eXBlIGlu
ZGV4ID0gcG9zaXRpb24gLSBiZWdpbigpOwotICAgIFVuaW5pdGlhbGl6ZWRDb3B5KHN0ZDo6bWFr
ZV9tb3ZlX2l0ZXJhdG9yKGRhdGEoKSksCi0gICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtl
X21vdmVfaXRlcmF0b3IoZGF0YSgpICsgaW5kZXgpLAotICAgICAgICAgICAgICAgICAgICAgIG5l
d19hbGxvY2F0aW9uLmJ1ZmZlcigpKTsKLSAgICBVbmluaXRpYWxpemVkQ29weShzdGQ6Om1ha2Vf
bW92ZV9pdGVyYXRvcihkYXRhKCkgKyBpbmRleCksCi0gICAgICAgICAgICAgICAgICAgICAgc3Rk
OjptYWtlX21vdmVfaXRlcmF0b3IoZGF0YSgpICsgcyksCi0gICAgICAgICAgICAgICAgICAgICAg
bmV3X2FsbG9jYXRpb24uYnVmZmVyKCkgKyBpbmRleCArIG4pOwotICAgIFJlc2V0QWxsb2NhdGlv
bihuZXdfYWxsb2NhdGlvbiwgcyk7Ci0KLSAgICAvLyBOZXcgYWxsb2NhdGlvbiBtZWFucyBvdXIg
aXRlcmF0b3IgaXMgaW52YWxpZCwgc28gd2UnbGwgcmVjYWxjdWxhdGUuCi0gICAgLy8gU2luY2Ug
dGhlIGVudGlyZSBnYXAgaXMgaW4gbmV3IHNwYWNlLCB0aGVyZSdzIG5vIHVzZWQgc3BhY2UgdG8g
cmV1c2UuCi0gICAgc3RhcnRfcmF3ID0gYmVnaW4oKSArIGluZGV4OwotICAgIHN0YXJ0X3VzZWQg
PSBzdGFydF9yYXc7Ci0gIH0gZWxzZSB7Ci0gICAgLy8gSWYgd2UgaGFkIGVub3VnaCBzcGFjZSwg
aXQncyBhIHR3by1wYXJ0IG1vdmUuIEVsZW1lbnRzIGdvaW5nIGludG8KLSAgICAvLyBwcmV2aW91
c2x5LXVub2NjdXBpZWQgc3BhY2UgbmVlZCBhbiBVbmluaXRpYWxpemVkQ29weS4gRWxlbWVudHMK
LSAgICAvLyBnb2luZyBpbnRvIGEgcHJldmlvdXNseS1vY2N1cGllZCBzcGFjZSBhcmUganVzdCBh
IG1vdmUuCi0gICAgaXRlcmF0b3IgcG9zID0gY29uc3RfY2FzdDxpdGVyYXRvcj4ocG9zaXRpb24p
OwotICAgIGl0ZXJhdG9yIHJhd19zcGFjZSA9IGVuZCgpOwotICAgIHNpemVfdHlwZSBzbG90c19p
bl91c2VkX3NwYWNlID0gcmF3X3NwYWNlIC0gcG9zOwotICAgIHNpemVfdHlwZSBuZXdfZWxlbWVu
dHNfaW5fdXNlZF9zcGFjZSA9IHN0ZDo6bWluKG4sIHNsb3RzX2luX3VzZWRfc3BhY2UpOwotICAg
IHNpemVfdHlwZSBuZXdfZWxlbWVudHNfaW5fcmF3X3NwYWNlID0gbiAtIG5ld19lbGVtZW50c19p
bl91c2VkX3NwYWNlOwotICAgIHNpemVfdHlwZSBvbGRfZWxlbWVudHNfaW5fdXNlZF9zcGFjZSA9
Ci0gICAgICAgIHNsb3RzX2luX3VzZWRfc3BhY2UgLSBuZXdfZWxlbWVudHNfaW5fdXNlZF9zcGFj
ZTsKLQotICAgIFVuaW5pdGlhbGl6ZWRDb3B5KHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKHBvcyAr
IG9sZF9lbGVtZW50c19pbl91c2VkX3NwYWNlKSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1ha2VfbW92ZV9pdGVyYXRvcihyYXdfc3BhY2UpLAotICAgICAgICAgICAgICAgICAgICAgIHJh
d19zcGFjZSArIG5ld19lbGVtZW50c19pbl9yYXdfc3BhY2UpOwotICAgIHN0ZDo6bW92ZV9iYWNr
d2FyZChwb3MsIHBvcyArIG9sZF9lbGVtZW50c19pbl91c2VkX3NwYWNlLCByYXdfc3BhY2UpOwot
Ci0gICAgLy8gSWYgdGhlIGdhcCBpcyBlbnRpcmVseSBpbiByYXcgc3BhY2UsIHRoZSB1c2VkIHNw
YWNlIHN0YXJ0cyB3aGVyZSB0aGUgcmF3Ci0gICAgLy8gc3BhY2Ugc3RhcnRzLCBsZWF2aW5nIG5v
IGVsZW1lbnRzIGluIHVzZWQgc3BhY2UuIElmIHRoZSBnYXAgaXMgZW50aXJlbHkKLSAgICAvLyBp
biB1c2VkIHNwYWNlLCB0aGUgcmF3IHNwYWNlIHN0YXJ0cyBhdCB0aGUgZW5kIG9mIHRoZSBnYXAs
IGxlYXZpbmcgYWxsCi0gICAgLy8gZWxlbWVudHMgYWNjb3VudGVkIGZvciB3aXRoaW4gdGhlIHVz
ZWQgc3BhY2UuCi0gICAgc3RhcnRfdXNlZCA9IHBvczsKLSAgICBzdGFydF9yYXcgPSBwb3MgKyBu
ZXdfZWxlbWVudHNfaW5fdXNlZF9zcGFjZTsKLSAgfQotICB0YWcoKS5hZGRfc2l6ZShuKTsKLSAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN0YXJ0X3VzZWQsIHN0YXJ0X3Jhdyk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLXZvaWQgSW5saW5lZFZlY3Rv
cjxULCBOLCBBPjo6RGVzdHJveSh2YWx1ZV90eXBlKiBwdHIsIHZhbHVlX3R5cGUqIHB0cl9sYXN0
KSB7Ci0gIGZvciAodmFsdWVfdHlwZSogcCA9IHB0cjsgcCAhPSBwdHJfbGFzdDsgKytwKSB7Ci0g
ICAgQWxsb2NhdG9yVHJhaXRzOjpkZXN0cm95KGFsbG9jYXRvcigpLCBwKTsKLSAgfQotCi0gIC8v
IE92ZXJ3cml0ZSB1bnVzZWQgbWVtb3J5IHdpdGggMHhhYiBzbyB3ZSBjYW4gY2F0Y2ggdW5pbml0
aWFsaXplZCB1c2FnZS4KLSAgLy8gQ2FzdCB0byB2b2lkKiB0byB0ZWxsIHRoZSBjb21waWxlciB0
aGF0IHdlIGRvbid0IGNhcmUgdGhhdCB3ZSBtaWdodCBiZQotICAvLyBzY3JpYmJsaW5nIG9uIGEg
dnRhYmxlIHBvaW50ZXIuCi0jaWZuZGVmIE5ERUJVRwotICBpZiAocHRyICE9IHB0cl9sYXN0KSB7
Ci0gICAgbWVtc2V0KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHB0ciksIDB4YWIsIHNpemVvZigq
cHRyKSAqIChwdHJfbGFzdCAtIHB0cikpOwotICB9Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgotdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXI+
Ci12b2lkIElubGluZWRWZWN0b3I8VCwgTiwgQT46OkFwcGVuZFJhbmdlKEl0ZXIgZmlyc3QsIEl0
ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpm
b3J3YXJkX2l0ZXJhdG9yX3RhZykgewotICB1c2luZyBMZW5ndGggPSB0eXBlbmFtZSBzdGQ6Oml0
ZXJhdG9yX3RyYWl0czxJdGVyPjo6ZGlmZmVyZW5jZV90eXBlOwotICBMZW5ndGggbGVuZ3RoID0g
c3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCk7Ci0gIHJlc2VydmUoc2l6ZSgpICsgbGVuZ3RoKTsK
LSAgaWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgVW5pbml0aWFsaXplZENvcHkoZmlyc3QsIGxhc3Qs
IGFsbG9jYXRlZF9zcGFjZSgpICsgc2l6ZSgpKTsKLSAgICB0YWcoKS5zZXRfYWxsb2NhdGVkX3Np
emUoc2l6ZSgpICsgbGVuZ3RoKTsKLSAgfSBlbHNlIHsKLSAgICBVbmluaXRpYWxpemVkQ29weShm
aXJzdCwgbGFzdCwgaW5saW5lZF9zcGFjZSgpICsgc2l6ZSgpKTsKLSAgICB0YWcoKS5zZXRfaW5s
aW5lX3NpemUoc2l6ZSgpICsgbGVuZ3RoKTsKLSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KLXZvaWQg
SW5saW5lZFZlY3RvcjxULCBOLCBBPjo6QXNzaWduUmFuZ2UoSXRlciBmaXJzdCwgSXRlciBsYXN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlucHV0X2l0
ZXJhdG9yX3RhZykgewotICAvLyBPcHRpbWl6ZWQgdG8gYXZvaWQgcmVhbGxvY2F0aW9uLgotICAv
LyBQcmVmZXIgcmVhc3NpZ25tZW50IHRvIGNvcHkgY29uc3RydWN0aW9uIGZvciBlbGVtZW50cy4K
LSAgaXRlcmF0b3Igb3V0ID0gYmVnaW4oKTsKLSAgZm9yICg7IGZpcnN0ICE9IGxhc3QgJiYgb3V0
ICE9IGVuZCgpOyArK2ZpcnN0LCArK291dCkgewotICAgICpvdXQgPSAqZmlyc3Q7Ci0gIH0KLSAg
ZXJhc2Uob3V0LCBlbmQoKSk7Ci0gIHN0ZDo6Y29weShmaXJzdCwgbGFzdCwgc3RkOjpiYWNrX2lu
c2VydGVyKCp0aGlzKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlw
ZW5hbWUgQT4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgotdm9pZCBJbmxpbmVkVmVjdG9yPFQs
IE4sIEE+OjpBc3NpZ25SYW5nZShJdGVyIGZpcnN0LCBJdGVyIGxhc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpIHsK
LSAgdXNpbmcgTGVuZ3RoID0gdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcj46OmRp
ZmZlcmVuY2VfdHlwZTsKLSAgTGVuZ3RoIGxlbmd0aCA9IHN0ZDo6ZGlzdGFuY2UoZmlyc3QsIGxh
c3QpOwotICAvLyBQcmVmZXIgcmVhc3NpZ25tZW50IHRvIGNvcHkgY29uc3RydWN0aW9uIGZvciBl
bGVtZW50cy4KLSAgaWYgKHN0YXRpY19jYXN0PHNpemVfdHlwZT4obGVuZ3RoKSA8PSBzaXplKCkp
IHsKLSAgICBlcmFzZShzdGQ6OmNvcHkoZmlyc3QsIGxhc3QsIGJlZ2luKCkpLCBlbmQoKSk7Ci0g
ICAgcmV0dXJuOwotICB9Ci0gIHJlc2VydmUobGVuZ3RoKTsKLSAgaXRlcmF0b3Igb3V0ID0gYmVn
aW4oKTsKLSAgZm9yICg7IG91dCAhPSBlbmQoKTsgKytmaXJzdCwgKytvdXQpICpvdXQgPSAqZmly
c3Q7Ci0gIGlmIChhbGxvY2F0ZWQoKSkgewotICAgIFVuaW5pdGlhbGl6ZWRDb3B5KGZpcnN0LCBs
YXN0LCBvdXQpOwotICAgIHRhZygpLnNldF9hbGxvY2F0ZWRfc2l6ZShsZW5ndGgpOwotICB9IGVs
c2UgewotICAgIFVuaW5pdGlhbGl6ZWRDb3B5KGZpcnN0LCBsYXN0LCBvdXQpOwotICAgIHRhZygp
LnNldF9pbmxpbmVfc2l6ZShsZW5ndGgpOwotICB9Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLWF1dG8gSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6SW5z
ZXJ0V2l0aENvdW50KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIG4sIGNvbnN0IHZhbHVlX3R5cGUm
IHYpCi0gICAgLT4gaXRlcmF0b3IgewotICBhc3NlcnQocG9zaXRpb24gPj0gYmVnaW4oKSAmJiBw
b3NpdGlvbiA8PSBlbmQoKSk7Ci0gIGlmIChuID09IDApIHJldHVybiBjb25zdF9jYXN0PGl0ZXJh
dG9yPihwb3NpdGlvbik7Ci0KLSAgdmFsdWVfdHlwZSBjb3B5ID0gdjsKLSAgc3RkOjpwYWlyPGl0
ZXJhdG9yLCBpdGVyYXRvcj4gaXRfcGFpciA9IFNoaWZ0UmlnaHQocG9zaXRpb24sIG4pOwotICBz
dGQ6OmZpbGwoaXRfcGFpci5maXJzdCwgaXRfcGFpci5zZWNvbmQsIGNvcHkpOwotICBVbmluaXRp
YWxpemVkRmlsbChpdF9wYWlyLnNlY29uZCwgaXRfcGFpci5maXJzdCArIG4sIGNvcHkpOwotCi0g
IHJldHVybiBpdF9wYWlyLmZpcnN0OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IE4sIHR5cGVuYW1lIEE+Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyPgotYXV0byBJbmxp
bmVkVmVjdG9yPFQsIE4sIEE+OjpJbnNlcnRXaXRoUmFuZ2UoY29uc3RfaXRlcmF0b3IgcG9zaXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0
ZXIgZmlyc3QsIElucHV0SXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcpCi0gICAgLT4gaXRlcmF0b3Ig
ewotICBhc3NlcnQocG9zaXRpb24gPj0gYmVnaW4oKSAmJiBwb3NpdGlvbiA8PSBlbmQoKSk7Ci0g
IHNpemVfdHlwZSBpbmRleCA9IHBvc2l0aW9uIC0gY2JlZ2luKCk7Ci0gIHNpemVfdHlwZSBpID0g
aW5kZXg7Ci0gIHdoaWxlIChmaXJzdCAhPSBsYXN0KSBpbnNlcnQoYmVnaW4oKSArIGkrKywgKmZp
cnN0KyspOwotICByZXR1cm4gYmVnaW4oKSArIGluZGV4OwotfQotCi0vLyBPdmVybG9hZCBvZiBJ
bmxpbmVkVmVjdG9yOjpJbnNlcnRXaXRoUmFuZ2UoKQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNp
emVfdCBOLCB0eXBlbmFtZSBBPgotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyPgotYXV0
byBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJbnNlcnRXaXRoUmFuZ2UoY29uc3RfaXRlcmF0b3Ig
cG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
b3J3YXJkSXRlciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZvcndhcmRJdGVyIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKQotICAgIC0+IGl0ZXJhdG9y
IHsKLSAgYXNzZXJ0KHBvc2l0aW9uID49IGJlZ2luKCkgJiYgcG9zaXRpb24gPD0gZW5kKCkpOwot
ICBpZiAoZmlyc3QgPT0gbGFzdCkgewotICAgIHJldHVybiBjb25zdF9jYXN0PGl0ZXJhdG9yPihw
b3NpdGlvbik7Ci0gIH0KLSAgdXNpbmcgTGVuZ3RoID0gdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90
cmFpdHM8Rm9yd2FyZEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGU7Ci0gIExlbmd0aCBuID0gc3RkOjpk
aXN0YW5jZShmaXJzdCwgbGFzdCk7Ci0gIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+IGl0
X3BhaXIgPSBTaGlmdFJpZ2h0KHBvc2l0aW9uLCBuKTsKLSAgc2l6ZV90eXBlIHVzZWRfc3BvdHMg
PSBpdF9wYWlyLnNlY29uZCAtIGl0X3BhaXIuZmlyc3Q7Ci0gIEZvcndhcmRJdGVyIG9wZW5fc3Bv
dCA9IHN0ZDo6bmV4dChmaXJzdCwgdXNlZF9zcG90cyk7Ci0gIHN0ZDo6Y29weShmaXJzdCwgb3Bl
bl9zcG90LCBpdF9wYWlyLmZpcnN0KTsKLSAgVW5pbml0aWFsaXplZENvcHkob3Blbl9zcG90LCBs
YXN0LCBpdF9wYWlyLnNlY29uZCk7Ci0gIHJldHVybiBpdF9wYWlyLmZpcnN0OworLy8gUHJvdmlk
ZXMgYGFic2w6Okhhc2hgIHN1cHBvcnQgZm9yIGBhYnNsOjpJbmxpbmVkVmVjdG9yYC4gSXQgaXMg
dW5jb21tb24gdG8KKy8vIGNhbGwgdGhpcyBkaXJlY3RseS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBI
LCB0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KK0ggQWJzbEhhc2hWYWx1ZShIIGgs
IGNvbnN0IGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4mIGEpIHsKKyAgYXV0byBzaXplID0g
YS5zaXplKCk7CisgIHJldHVybiBIOjpjb21iaW5lKEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6
Om1vdmUoaCksIGEuZGF0YSgpLCBzaXplKSwgc2l6ZSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBh
YnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfYmVuY2htYXJr
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX2JlbmNobWFyay5jYwppbmRleCBh
M2FkMGY4YWU0Zi4uYjk5YmJkNjI1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxp
bmVkX3ZlY3Rvcl9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVj
dG9yX2JlbmNobWFyay5jYwpAQCAtMSwxMCArMSwxMCBAQAotLy8gQ29weXJpZ2h0IDIwMTcgVGhl
IEFic2VpbCBBdXRob3JzLgorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgog
Ly8KIC8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOwogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMiwyOCArMTIsMjUg
QEAKIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogCi0j
aW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaCIKLQorI2luY2x1ZGUgPGFy
cmF5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJi
ZW5jaG1hcmsvYmVuY2htYXJrLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19s
b2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImFic2wv
Y29udGFpbmVyL2lubGluZWRfdmVjdG9yLmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9j
YXQuaCIKIAogbmFtZXNwYWNlIHsKIAotdXNpbmcgSW50VmVjID0gYWJzbDo6SW5saW5lZFZlY3Rv
cjxpbnQsIDg+OwotCiB2b2lkIEJNX0lubGluZWRWZWN0b3JGaWxsKGJlbmNobWFyazo6U3RhdGUm
IHN0YXRlKSB7Ci0gIGNvbnN0IGludCBsZW4gPSBzdGF0ZS5yYW5nZSgwKTsKKyAgYWJzbDo6SW5s
aW5lZFZlY3RvcjxpbnQsIDg+IHY7CisgIGludCB2YWwgPSAxMDsKICAgZm9yIChhdXRvIF8gOiBz
dGF0ZSkgewotICAgIEludFZlYyB2OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKysp
IHsKLSAgICAgIHYucHVzaF9iYWNrKGkpOwotICAgIH0KKyAgICBiZW5jaG1hcms6OkRvTm90T3B0
aW1pemUodik7CisgICAgdi5wdXNoX2JhY2sodmFsKTsKICAgfQotICBzdGF0ZS5TZXRJdGVtc1By
b2Nlc3NlZChzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGF0ZS5pdGVyYXRpb25zKCkpICogbGVuKTsK
IH0KIEJFTkNITUFSSyhCTV9JbmxpbmVkVmVjdG9yRmlsbCktPlJhbmdlKDAsIDEwMjQpOwogCkBA
IC00MywyMyArNDAsMjUgQEAgdm9pZCBCTV9JbmxpbmVkVmVjdG9yRmlsbFJhbmdlKGJlbmNobWFy
azo6U3RhdGUmIHN0YXRlKSB7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAg
ICBpYVtpXSA9IGk7CiAgIH0KKyAgYXV0byogZnJvbSA9IGlhLmdldCgpOworICBhdXRvKiB0byA9
IGZyb20gKyBsZW47CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBJbnRWZWMgdihpYS5n
ZXQoKSwgaWEuZ2V0KCkgKyBsZW4pOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShmcm9t
KTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodG8pOworICAgIGFic2w6OklubGluZWRW
ZWN0b3I8aW50LCA4PiB2KGZyb20sIHRvKTsKICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUo
dik7CiAgIH0KLSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoc3RhdGljX2Nhc3Q8aW50NjRfdD4o
c3RhdGUuaXRlcmF0aW9ucygpKSAqIGxlbik7CiB9CiBCRU5DSE1BUksoQk1fSW5saW5lZFZlY3Rv
ckZpbGxSYW5nZSktPlJhbmdlKDAsIDEwMjQpOwogCiB2b2lkIEJNX1N0ZFZlY3RvckZpbGwoYmVu
Y2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKLSAgY29uc3QgaW50IGxlbiA9IHN0YXRlLnJhbmdlKDAp
OworICBzdGQ6OnZlY3RvcjxpbnQ+IHY7CisgIGludCB2YWwgPSAxMDsKICAgZm9yIChhdXRvIF8g
OiBzdGF0ZSkgewotICAgIHN0ZDo6dmVjdG9yPGludD4gdjsKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IGxlbjsgaSsrKSB7Ci0gICAgICB2LnB1c2hfYmFjayhpKTsKLSAgICB9CisgICAgYmVuY2ht
YXJrOjpEb05vdE9wdGltaXplKHYpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2YWwp
OworICAgIHYucHVzaF9iYWNrKHZhbCk7CiAgIH0KLSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQo
c3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9ucygpKSAqIGxlbik7CiB9CiBCRU5D
SE1BUksoQk1fU3RkVmVjdG9yRmlsbCktPlJhbmdlKDAsIDEwMjQpOwogCkBAIC04OSw3ICs4OCw3
IEBAIHZvaWQgQk1fSW5saW5lZFZlY3RvckZpbGxTdHJpbmcoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKICAgY29uc3QgaW50IGxlbiA9IHN0YXRlLnJhbmdlKDApOwogICBjb25zdCBpbnQgbm9f
c3NvID0gR2V0Tm9uU2hvcnRTdHJpbmdPcHRpbWl6YXRpb25TaXplKCk7CiAgIHN0ZDo6c3RyaW5n
IHN0cmluZ3NbNF0gPSB7c3RkOjpzdHJpbmcobm9fc3NvLCAnQScpLCBzdGQ6OnN0cmluZyhub19z
c28sICdCJyksCi0gICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKG5vX3NzbywgJ0Mn
KSwgc3RkOjpzdHJpbmcobm9fc3NvLCAnRCcpfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZyhub19zc28sICdDJyksIHN0ZDo6c3RyaW5nKG5vX3NzbywgJ0QnKX07CiAK
ICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewogICAgIGFic2w6OklubGluZWRWZWN0b3I8c3RkOjpz
dHJpbmcsIDg+IHY7CkBAIC0xMDUsNyArMTA0LDcgQEAgdm9pZCBCTV9TdGRWZWN0b3JGaWxsU3Ry
aW5nKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGNvbnN0IGludCBsZW4gPSBzdGF0ZS5y
YW5nZSgwKTsKICAgY29uc3QgaW50IG5vX3NzbyA9IEdldE5vblNob3J0U3RyaW5nT3B0aW1pemF0
aW9uU2l6ZSgpOwogICBzdGQ6OnN0cmluZyBzdHJpbmdzWzRdID0ge3N0ZDo6c3RyaW5nKG5vX3Nz
bywgJ0EnKSwgc3RkOjpzdHJpbmcobm9fc3NvLCAnQicpLAotICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZyhub19zc28sICdDJyksIHN0ZDo6c3RyaW5nKG5vX3NzbywgJ0QnKX07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcobm9fc3NvLCAnQycpLCBzdGQ6
OnN0cmluZyhub19zc28sICdEJyl9OwogCiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKICAgICBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdjsKQEAgLTEyNCw3ICsxMjMsNyBAQCBzdHJ1Y3QgQnVm
ZmVyIHsgIC8vIHNvbWUgYXJiaXRyYXJ5IHN0cnVjdHVyZSBmb3IgYmVuY2htYXJraW5nLgogICB2
b2lkKiB1c2VyX2RhdGE7CiB9OwogCi12b2lkIEJNX0lubGluZWRWZWN0b3JUZW5Bc3NpZ25tZW50
cyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9JbmxpbmVkVmVjdG9yQXNzaWdu
bWVudHMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgY29uc3QgaW50IGxlbiA9IHN0YXRl
LnJhbmdlKDApOwogICB1c2luZyBCdWZmZXJWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPEJ1ZmZl
ciwgMj47CiAKQEAgLTEzMywxOCArMTMyLDI1IEBAIHZvaWQgQk1fSW5saW5lZFZlY3RvclRlbkFz
c2lnbm1lbnRzKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAKICAgQnVmZmVyVmVjIGRzdDsK
ICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsr
aSkgewotICAgICAgZHN0ID0gc3JjOwotICAgIH0KKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1p
emUoZHN0KTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoc3JjKTsKKyAgICBkc3QgPSBz
cmM7CiAgIH0KIH0KLUJFTkNITUFSSyhCTV9JbmxpbmVkVmVjdG9yVGVuQXNzaWdubWVudHMpCi0g
ICAgLT5BcmcoMCktPkFyZygxKS0+QXJnKDIpLT5BcmcoMyktPkFyZyg0KS0+QXJnKDIwKTsKK0JF
TkNITUFSSyhCTV9JbmxpbmVkVmVjdG9yQXNzaWdubWVudHMpCisgICAgLT5BcmcoMCkKKyAgICAt
PkFyZygxKQorICAgIC0+QXJnKDIpCisgICAgLT5BcmcoMykKKyAgICAtPkFyZyg0KQorICAgIC0+
QXJnKDIwKTsKIAogdm9pZCBCTV9DcmVhdGVGcm9tQ29udGFpbmVyKGJlbmNobWFyazo6U3RhdGUm
IHN0YXRlKSB7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBhYnNsOjpJbmxpbmVkVmVj
dG9yPGludCwgND4geChhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgND57MSwgMiwgM30pOwotICAg
IGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh4KTsKKyAgICBhYnNsOjpJbmxpbmVkVmVjdG9yPGlu
dCwgND4gc3JjezEsIDIsIDN9OworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShzcmMpOwor
ICAgIGFic2w6OklubGluZWRWZWN0b3I8aW50LCA0PiBkc3Qoc3RkOjptb3ZlKHNyYykpOworICAg
IGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShkc3QpOwogICB9CiB9CiBCRU5DSE1BUksoQk1fQ3Jl
YXRlRnJvbUNvbnRhaW5lcik7CkBAIC0xNTksMTUgKzE2NSwxNCBAQCBzdHJ1Y3QgTGFyZ2VDb3B5
YWJsZU9ubHkgewogCiBzdHJ1Y3QgTGFyZ2VDb3B5YWJsZVN3YXBwYWJsZSB7CiAgIExhcmdlQ29w
eWFibGVTd2FwcGFibGUoKSA6IGQoMTAyNCwgMTcpIHt9CisKICAgTGFyZ2VDb3B5YWJsZVN3YXBw
YWJsZShjb25zdCBMYXJnZUNvcHlhYmxlU3dhcHBhYmxlJiBvKSA9IGRlZmF1bHQ7Ci0gIExhcmdl
Q29weWFibGVTd2FwcGFibGUoTGFyZ2VDb3B5YWJsZVN3YXBwYWJsZSYmIG8pID0gZGVsZXRlOwog
CiAgIExhcmdlQ29weWFibGVTd2FwcGFibGUmIG9wZXJhdG9yPShMYXJnZUNvcHlhYmxlU3dhcHBh
YmxlIG8pIHsKICAgICB1c2luZyBzdGQ6OnN3YXA7CiAgICAgc3dhcCgqdGhpcywgbyk7CiAgICAg
cmV0dXJuICp0aGlzOwogICB9Ci0gIExhcmdlQ29weWFibGVTd2FwcGFibGUmIG9wZXJhdG9yPShM
YXJnZUNvcHlhYmxlU3dhcHBhYmxlJiYgbykgPSBkZWxldGU7CiAKICAgZnJpZW5kIHZvaWQgc3dh
cChMYXJnZUNvcHlhYmxlU3dhcHBhYmxlJiBhLCBMYXJnZUNvcHlhYmxlU3dhcHBhYmxlJiBiKSB7
CiAgICAgdXNpbmcgc3RkOjpzd2FwOwpAQCAtMjE1LDYgKzIyMCw4IEBAIHZvaWQgQk1fU3dhcEVs
ZW1lbnRzKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIFZlYyBiOwogICBmb3IgKGF1dG8g
XyA6IHN0YXRlKSB7CiAgICAgdXNpbmcgc3RkOjpzd2FwOworICAgIGJlbmNobWFyazo6RG9Ob3RP
cHRpbWl6ZShhKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoYik7CiAgICAgc3dhcChh
LCBiKTsKICAgfQogfQpAQCAtMjYwLDYwICsyNjcsNDQgQEAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJN
X1NpemVvZiwgYWJzbDo6SW5saW5lZFZlY3RvcjxzdGQ6OnN0cmluZywgOD4pOwogdm9pZCBCTV9J
bmxpbmVkVmVjdG9ySW5kZXhJbmxpbmVkKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGFi
c2w6OklubGluZWRWZWN0b3I8aW50LCA4PiB2ID0gezEsIDIsIDMsIDQsIDUsIDYsIDd9OwogICBm
b3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwOyArK2kp
IHsKLSAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKLSAgICAgIGJlbmNobWFyazo6
RG9Ob3RPcHRpbWl6ZSh2WzRdKTsKLSAgICB9CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXpl
KHYpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2WzRdKTsKICAgfQotICBzdGF0ZS5T
ZXRJdGVtc1Byb2Nlc3NlZCgxMDAwICogc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0
aW9ucygpKSk7CiB9CiBCRU5DSE1BUksoQk1fSW5saW5lZFZlY3RvckluZGV4SW5saW5lZCk7CiAK
IHZvaWQgQk1fSW5saW5lZFZlY3RvckluZGV4RXh0ZXJuYWwoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKICAgYWJzbDo6SW5saW5lZFZlY3RvcjxpbnQsIDg+IHYgPSB7MSwgMiwgMywgNCwgNSwg
NiwgNywgOCwgOSwgMTB9OwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKLSAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2
KTsKLSAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2WzRdKTsKLSAgICB9CisgICAgYmVu
Y2htYXJrOjpEb05vdE9wdGltaXplKHYpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2
WzRdKTsKICAgfQotICBzdGF0ZS5TZXRJdGVtc1Byb2Nlc3NlZCgxMDAwICogc3RhdGljX2Nhc3Q8
aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9ucygpKSk7CiB9CiBCRU5DSE1BUksoQk1fSW5saW5lZFZl
Y3RvckluZGV4RXh0ZXJuYWwpOwogCiB2b2lkIEJNX1N0ZFZlY3RvckluZGV4KGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7CiAgIHN0ZDo6dmVjdG9yPGludD4gdiA9IHsxLCAyLCAzLCA0LCA1LCA2
LCA3LCA4LCA5LCAxMH07CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgewotICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYp
OwotICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHZbNF0pOwotICAgIH0KKyAgICBiZW5j
aG1hcms6OkRvTm90T3B0aW1pemUodik7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHZb
NF0pOwogICB9Ci0gIHN0YXRlLlNldEl0ZW1zUHJvY2Vzc2VkKDEwMDAgKiBzdGF0aWNfY2FzdDxp
bnQ2NF90PihzdGF0ZS5pdGVyYXRpb25zKCkpKTsKIH0KIEJFTkNITUFSSyhCTV9TdGRWZWN0b3JJ
bmRleCk7CiAKLSNkZWZpbmUgVU5ST0xMXzIoeCkgICAgICAgICAgICBcCi0gIGJlbmNobWFyazo6
RG9Ob3RPcHRpbWl6ZSh4KTsgXAotICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoeCk7Ci0KLSNk
ZWZpbmUgVU5ST0xMXzQoeCkgVU5ST0xMXzIoeCkgVU5ST0xMXzIoeCkKLSNkZWZpbmUgVU5ST0xM
XzgoeCkgVU5ST0xMXzQoeCkgVU5ST0xMXzQoeCkKLSNkZWZpbmUgVU5ST0xMXzE2KHgpIFVOUk9M
TF84KHgpIFVOUk9MTF84KHgpOwotCiB2b2lkIEJNX0lubGluZWRWZWN0b3JEYXRhSW5saW5lZChi
ZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgOD4g
diA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3fTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAg
IFVOUk9MTF8xNih2LmRhdGEoKSk7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOwor
ICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2LmRhdGEoKSk7CiAgIH0KLSAgc3RhdGUuU2V0
SXRlbXNQcm9jZXNzZWQoMTYgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGF0ZS5pdGVyYXRpb25z
KCkpKTsKIH0KIEJFTkNITUFSSyhCTV9JbmxpbmVkVmVjdG9yRGF0YUlubGluZWQpOwogCiB2b2lk
IEJNX0lubGluZWRWZWN0b3JEYXRhRXh0ZXJuYWwoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
ICAgYWJzbDo6SW5saW5lZFZlY3RvcjxpbnQsIDg+IHYgPSB7MSwgMiwgMywgNCwgNSwgNiwgNywg
OCwgOSwgMTB9OwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgVU5ST0xMXzE2KHYuZGF0
YSgpKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodik7CisgICAgYmVuY2htYXJrOjpE
b05vdE9wdGltaXplKHYuZGF0YSgpKTsKICAgfQogICBzdGF0ZS5TZXRJdGVtc1Byb2Nlc3NlZCgx
NiAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRlLml0ZXJhdGlvbnMoKSkpOwogfQpAQCAtMzIy
LDcgKzMxMyw4IEBAIEJFTkNITUFSSyhCTV9JbmxpbmVkVmVjdG9yRGF0YUV4dGVybmFsKTsKIHZv
aWQgQk1fU3RkVmVjdG9yRGF0YShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6OnZl
Y3RvcjxpbnQ+IHYgPSB7MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTB9OwogICBmb3IgKGF1
dG8gXyA6IHN0YXRlKSB7Ci0gICAgVU5ST0xMXzE2KHYuZGF0YSgpKTsKKyAgICBiZW5jaG1hcms6
OkRvTm90T3B0aW1pemUodik7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYuZGF0YSgp
KTsKICAgfQogICBzdGF0ZS5TZXRJdGVtc1Byb2Nlc3NlZCgxNiAqIHN0YXRpY19jYXN0PGludDY0
X3Q+KHN0YXRlLml0ZXJhdGlvbnMoKSkpOwogfQpAQCAtMzMxLDU1ICszMjMsNDgyIEBAIEJFTkNI
TUFSSyhCTV9TdGRWZWN0b3JEYXRhKTsKIHZvaWQgQk1fSW5saW5lZFZlY3RvclNpemVJbmxpbmVk
KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGFic2w6OklubGluZWRWZWN0b3I8aW50LCA4
PiB2ID0gezEsIDIsIDMsIDQsIDUsIDYsIDd9OwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0g
ICAgVU5ST0xMXzE2KHYuc2l6ZSgpKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodik7
CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYuc2l6ZSgpKTsKICAgfQotICBzdGF0ZS5T
ZXRJdGVtc1Byb2Nlc3NlZCgxNiAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRlLml0ZXJhdGlv
bnMoKSkpOwogfQogQkVOQ0hNQVJLKEJNX0lubGluZWRWZWN0b3JTaXplSW5saW5lZCk7CiAKIHZv
aWQgQk1fSW5saW5lZFZlY3RvclNpemVFeHRlcm5hbChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkg
ewogICBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgOD4gdiA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3
LCA4LCA5LCAxMH07CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBVTlJPTExfMTYodi5z
aXplKCkpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKKyAgICBiZW5jaG1hcms6
OkRvTm90T3B0aW1pemUodi5zaXplKCkpOwogICB9Ci0gIHN0YXRlLlNldEl0ZW1zUHJvY2Vzc2Vk
KDE2ICogc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9ucygpKSk7CiB9CiBCRU5D
SE1BUksoQk1fSW5saW5lZFZlY3RvclNpemVFeHRlcm5hbCk7CiAKIHZvaWQgQk1fU3RkVmVjdG9y
U2l6ZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6OnZlY3RvcjxpbnQ+IHYgPSB7
MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTB9OwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7
Ci0gICAgVU5ST0xMXzE2KHYuc2l6ZSgpKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUo
dik7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYuc2l6ZSgpKTsKICAgfQotICBzdGF0
ZS5TZXRJdGVtc1Byb2Nlc3NlZCgxNiAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRlLml0ZXJh
dGlvbnMoKSkpOwogfQogQkVOQ0hNQVJLKEJNX1N0ZFZlY3RvclNpemUpOwogCiB2b2lkIEJNX0lu
bGluZWRWZWN0b3JFbXB0eUlubGluZWQoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgYWJz
bDo6SW5saW5lZFZlY3RvcjxpbnQsIDg+IHYgPSB7MSwgMiwgMywgNCwgNSwgNiwgN307CiAgIGZv
ciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBVTlJPTExfMTYodi5lbXB0eSgpKTsKKyAgICBiZW5j
aG1hcms6OkRvTm90T3B0aW1pemUodik7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYu
ZW1wdHkoKSk7CiAgIH0KLSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoMTYgKiBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihzdGF0ZS5pdGVyYXRpb25zKCkpKTsKIH0KIEJFTkNITUFSSyhCTV9JbmxpbmVk
VmVjdG9yRW1wdHlJbmxpbmVkKTsKIAogdm9pZCBCTV9JbmxpbmVkVmVjdG9yRW1wdHlFeHRlcm5h
bChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwg
OD4gdiA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMH07CiAgIGZvciAoYXV0byBfIDog
c3RhdGUpIHsKLSAgICBVTlJPTExfMTYodi5lbXB0eSgpKTsKKyAgICBiZW5jaG1hcms6OkRvTm90
T3B0aW1pemUodik7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYuZW1wdHkoKSk7CiAg
IH0KLSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoMTYgKiBzdGF0aWNfY2FzdDxpbnQ2NF90Pihz
dGF0ZS5pdGVyYXRpb25zKCkpKTsKIH0KIEJFTkNITUFSSyhCTV9JbmxpbmVkVmVjdG9yRW1wdHlF
eHRlcm5hbCk7CiAKIHZvaWQgQk1fU3RkVmVjdG9yRW1wdHkoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKICAgc3RkOjp2ZWN0b3I8aW50PiB2ID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDks
IDEwfTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIFVOUk9MTF8xNih2LmVtcHR5KCkp
OworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKKyAgICBiZW5jaG1hcms6OkRvTm90
T3B0aW1pemUodi5lbXB0eSgpKTsKICAgfQotICBzdGF0ZS5TZXRJdGVtc1Byb2Nlc3NlZCgxNiAq
IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRlLml0ZXJhdGlvbnMoKSkpOwogfQogQkVOQ0hNQVJL
KEJNX1N0ZFZlY3RvckVtcHR5KTsKIAorY29uc3RleHByIHNpemVfdCBrSW5saW5lZENhcGFjaXR5
ID0gNDsKK2NvbnN0ZXhwciBzaXplX3Qga0xhcmdlU2l6ZSA9IGtJbmxpbmVkQ2FwYWNpdHkgKiAy
OworY29uc3RleHByIHNpemVfdCBrU21hbGxTaXplID0ga0lubGluZWRDYXBhY2l0eSAvIDI7Citj
b25zdGV4cHIgc2l6ZV90IGtCYXRjaFNpemUgPSAxMDA7CisKKyNkZWZpbmUgQUJTTF9JTlRFUk5B
TF9CRU5DSE1BUktfT05FX1NJWkUoQk1fRnVuY3Rpb25UZW1wbGF0ZSwgVCkgXAorICBCRU5DSE1B
UktfVEVNUExBVEUoQk1fRnVuY3Rpb25UZW1wbGF0ZSwgVCwga0xhcmdlU2l6ZSk7ICAgICAgICBc
CisgIEJFTkNITUFSS19URU1QTEFURShCTV9GdW5jdGlvblRlbXBsYXRlLCBULCBrU21hbGxTaXpl
KQorCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX0Z1bmN0aW9u
VGVtcGxhdGUsIFQpICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRnVuY3Rpb25UZW1w
bGF0ZSwgVCwga0xhcmdlU2l6ZSwga0xhcmdlU2l6ZSk7IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRF
KEJNX0Z1bmN0aW9uVGVtcGxhdGUsIFQsIGtMYXJnZVNpemUsIGtTbWFsbFNpemUpOyBcCisgIEJF
TkNITUFSS19URU1QTEFURShCTV9GdW5jdGlvblRlbXBsYXRlLCBULCBrU21hbGxTaXplLCBrTGFy
Z2VTaXplKTsgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRnVuY3Rpb25UZW1wbGF0ZSwgVCwg
a1NtYWxsU2l6ZSwga1NtYWxsU2l6ZSkKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBJ
bmxWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIGtJbmxpbmVkQ2FwYWNpdHk+OworCitzdHJ1
Y3QgVHJpdmlhbFR5cGUgeworICBzaXplX3QgdmFsOworfTsKKworY2xhc3MgTm9udHJpdmlhbFR5
cGUgeworIHB1YmxpYzoKKyAgQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUgTm9udHJpdmlhbFR5cGUo
KSA6IHZhbF8oKSB7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKCp0aGlzKTsKKyAgfQor
CisgIEFCU0xfQVRUUklCVVRFX05PSU5MSU5FIE5vbnRyaXZpYWxUeXBlKGNvbnN0IE5vbnRyaXZp
YWxUeXBlJiBvdGhlcikKKyAgICAgIDogdmFsXyhvdGhlci52YWxfKSB7CisgICAgYmVuY2htYXJr
OjpEb05vdE9wdGltaXplKCp0aGlzKTsKKyAgfQorCisgIEFCU0xfQVRUUklCVVRFX05PSU5MSU5F
IE5vbnRyaXZpYWxUeXBlJiBvcGVyYXRvcj0oCisgICAgICBjb25zdCBOb250cml2aWFsVHlwZSYg
b3RoZXIpIHsKKyAgICB2YWxfID0gb3RoZXIudmFsXzsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0
aW1pemUoKnRoaXMpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIEFCU0xfQVRUUklCVVRF
X05PSU5MSU5FIH5Ob250cml2aWFsVHlwZSgpIG5vZXhjZXB0IHsKKyAgICBiZW5jaG1hcms6OkRv
Tm90T3B0aW1pemUoKnRoaXMpOworICB9CisKKyBwcml2YXRlOgorICBzaXplX3QgdmFsXzsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBQcmVwYXJlVmVjRm4sIHR5cGVuYW1l
IFRlc3RWZWNGbj4KK3ZvaWQgQmF0Y2hlZEJlbmNobWFyayhiZW5jaG1hcms6OlN0YXRlJiBzdGF0
ZSwgUHJlcGFyZVZlY0ZuIHByZXBhcmVfdmVjLAorICAgICAgICAgICAgICAgICAgICAgIFRlc3RW
ZWNGbiB0ZXN0X3ZlYykgeworICBzdGQ6OmFycmF5PElubFZlYzxUPiwga0JhdGNoU2l6ZT4gdmVj
dG9yX2JhdGNoe307CisKKyAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nQmF0Y2goa0JhdGNoU2l6
ZSkpIHsKKyAgICAvLyBQcmVwYXJlIGJhdGNoCisgICAgc3RhdGUuUGF1c2VUaW1pbmcoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtCYXRjaFNpemU7ICsraSkgeworICAgICAgcHJlcGFy
ZV92ZWModmVjdG9yX2JhdGNoLmRhdGEoKSArIGksIGkpOworICAgIH0KKyAgICBiZW5jaG1hcms6
OkRvTm90T3B0aW1pemUodmVjdG9yX2JhdGNoKTsKKyAgICBzdGF0ZS5SZXN1bWVUaW1pbmcoKTsK
KworICAgIC8vIFRlc3QgYmF0Y2gKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtCYXRjaFNp
emU7ICsraSkgeworICAgICAgdGVzdF92ZWModmVjdG9yX2JhdGNoLmRhdGEoKSArIGksIGkpOwor
ICAgIH0KKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFRvU2l6ZT4KK3Zv
aWQgQk1fQ29uc3RydWN0RnJvbVNpemUoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgdXNp
bmcgVmVjVCA9IElubFZlYzxUPjsKKyAgYXV0byBzaXplID0gVG9TaXplOworICBCYXRjaGVkQmVu
Y2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovIFtdKElu
bFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5+VmVjVCgpOyB9LAorICAgICAgLyogdGVzdF92
ZWMgPSAqLworICAgICAgWyZdKHZvaWQqIHB0ciwgc2l6ZV90KSB7CisgICAgICAgIGJlbmNobWFy
azo6RG9Ob3RPcHRpbWl6ZShzaXplKTsKKyAgICAgICAgOjpuZXcgKHB0cikgVmVjVChzaXplKTsK
KyAgICAgIH0pOworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fQ29uc3Ry
dWN0RnJvbVNpemUsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9T
SVpFKEJNX0NvbnN0cnVjdEZyb21TaXplLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCBzaXplX3QgVG9TaXplPgordm9pZCBCTV9Db25zdHJ1Y3RGcm9tU2l6ZVJlZihi
ZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICB1c2luZyBWZWNUID0gSW5sVmVjPFQ+OworICBh
dXRvIHNpemUgPSBUb1NpemU7CisgIGF1dG8gcmVmID0gVCgpOworICBCYXRjaGVkQmVuY2htYXJr
PFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovIFtdKElubFZlYzxU
PiogdmVjLCBzaXplX3QpIHsgdmVjLT5+VmVjVCgpOyB9LAorICAgICAgLyogdGVzdF92ZWMgPSAq
LworICAgICAgWyZdKHZvaWQqIHB0ciwgc2l6ZV90KSB7CisgICAgICAgIGJlbmNobWFyazo6RG9O
b3RPcHRpbWl6ZShzaXplKTsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHJlZik7
CisgICAgICAgIDo6bmV3IChwdHIpIFZlY1Qoc2l6ZSwgcmVmKTsKKyAgICAgIH0pOworfQorQUJT
TF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fQ29uc3RydWN0RnJvbVNpemVSZWYsIFRy
aXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0NvbnN0cnVj
dEZyb21TaXplUmVmLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBz
aXplX3QgVG9TaXplPgordm9pZCBCTV9Db25zdHJ1Y3RGcm9tUmFuZ2UoYmVuY2htYXJrOjpTdGF0
ZSYgc3RhdGUpIHsKKyAgdXNpbmcgVmVjVCA9IElubFZlYzxUPjsKKyAgc3RkOjphcnJheTxULCBU
b1NpemU+IGFycnt9OworICBCYXRjaGVkQmVuY2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAg
ICAvKiBwcmVwYXJlX3ZlYyA9ICovIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5+
VmVjVCgpOyB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAgWyZdKHZvaWQqIHB0ciwg
c2l6ZV90KSB7CisgICAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShhcnIpOworICAgICAg
ICA6Om5ldyAocHRyKSBWZWNUKGFyci5iZWdpbigpLCBhcnIuZW5kKCkpOworICAgICAgfSk7Cit9
CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9Db25zdHJ1Y3RGcm9tUmFuZ2Us
IFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0NvbnN0
cnVjdEZyb21SYW5nZSwgTm9udHJpdmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
c2l6ZV90IFRvU2l6ZT4KK3ZvaWQgQk1fQ29uc3RydWN0RnJvbUNvcHkoYmVuY2htYXJrOjpTdGF0
ZSYgc3RhdGUpIHsKKyAgdXNpbmcgVmVjVCA9IElubFZlYzxUPjsKKyAgVmVjVCBvdGhlcl92ZWMo
VG9TaXplKTsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyog
cHJlcGFyZV92ZWMgPSAqLworICAgICAgW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeyB2ZWMt
Pn5WZWNUKCk7IH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbJl0odm9pZCogcHRy
LCBzaXplX3QpIHsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKG90aGVyX3ZlYyk7
CisgICAgICAgIDo6bmV3IChwdHIpIFZlY1Qob3RoZXJfdmVjKTsKKyAgICAgIH0pOworfQorQUJT
TF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fQ29uc3RydWN0RnJvbUNvcHksIFRyaXZp
YWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0NvbnN0cnVjdEZy
b21Db3B5LCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
VG9TaXplPgordm9pZCBCTV9Db25zdHJ1Y3RGcm9tTW92ZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0
ZSkgeworICB1c2luZyBWZWNUID0gSW5sVmVjPFQ+OworICBzdGQ6OmFycmF5PFZlY1QsIGtCYXRj
aFNpemU+IHZlY3Rvcl9iYXRjaHt9OworICBCYXRjaGVkQmVuY2htYXJrPFQ+KAorICAgICAgc3Rh
dGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisgICAgICBbJl0oSW5sVmVjPFQ+KiB2ZWMs
IHNpemVfdCBpKSB7CisgICAgICAgIHZlY3Rvcl9iYXRjaFtpXS5jbGVhcigpOworICAgICAgICB2
ZWN0b3JfYmF0Y2hbaV0ucmVzaXplKFRvU2l6ZSk7CisgICAgICAgIHZlYy0+flZlY1QoKTsKKyAg
ICAgIH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbJl0odm9pZCogcHRyLCBzaXpl
X3QgaSkgeworICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodmVjdG9yX2JhdGNoW2ld
KTsKKyAgICAgICAgOjpuZXcgKHB0cikgVmVjVChzdGQ6Om1vdmUodmVjdG9yX2JhdGNoW2ldKSk7
CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0NvbnN0
cnVjdEZyb21Nb3ZlLCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19PTkVf
U0laRShCTV9Db25zdHJ1Y3RGcm9tTW92ZSwgTm9udHJpdmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplLCBzaXplX3QgVG9TaXplPgordm9pZCBCTV9Bc3Np
Z25TaXplUmVmKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIGF1dG8gc2l6ZSA9IFRvU2l6
ZTsKKyAgYXV0byByZWYgPSBUKCk7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0
ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8gW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkg
eyB2ZWMtPnJlc2l6ZShGcm9tU2l6ZSk7IH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAg
ICBbJl0oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeworICAgICAgICBiZW5jaG1hcms6OkRvTm90
T3B0aW1pemUoc2l6ZSk7CisgICAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShyZWYpOwor
ICAgICAgICB2ZWMtPmFzc2lnbihzaXplLCByZWYpOworICAgICAgfSk7Cit9CitBQlNMX0lOVEVS
TkFMX0JFTkNITUFSS19UV09fU0laRShCTV9Bc3NpZ25TaXplUmVmLCBUcml2aWFsVHlwZSk7CitB
QlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9Bc3NpZ25TaXplUmVmLCBOb250cml2
aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRnJvbVNpemUsIHNpemVf
dCBUb1NpemU+Cit2b2lkIEJNX0Fzc2lnblJhbmdlKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7
CisgIHN0ZDo6YXJyYXk8VCwgVG9TaXplPiBhcnJ7fTsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigK
KyAgICAgIHN0YXRlLAorICAgICAgLyogcHJlcGFyZV92ZWMgPSAqLyBbXShJbmxWZWM8VD4qIHZl
Yywgc2l6ZV90KSB7IHZlYy0+cmVzaXplKEZyb21TaXplKTsgfSwKKyAgICAgIC8qIHRlc3RfdmVj
ID0gKi8KKyAgICAgIFsmXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIGJlbmNo
bWFyazo6RG9Ob3RPcHRpbWl6ZShhcnIpOworICAgICAgICB2ZWMtPmFzc2lnbihhcnIuYmVnaW4o
KSwgYXJyLmVuZCgpKTsKKyAgICAgIH0pOworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdP
X1NJWkUoQk1fQXNzaWduUmFuZ2UsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hN
QVJLX1RXT19TSVpFKEJNX0Fzc2lnblJhbmdlLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCBzaXplX3QgRnJvbVNpemUsIHNpemVfdCBUb1NpemU+Cit2b2lkIEJNX0Fz
c2lnbkZyb21Db3B5KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIElubFZlYzxUPiBvdGhl
cl92ZWMoVG9TaXplKTsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAg
ICAgLyogcHJlcGFyZV92ZWMgPSAqLyBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZlYy0+
cmVzaXplKEZyb21TaXplKTsgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAgICAgIFsmXShJ
bmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6
ZShvdGhlcl92ZWMpOworICAgICAgICAqdmVjID0gb3RoZXJfdmVjOworICAgICAgfSk7Cit9CitB
QlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9Bc3NpZ25Gcm9tQ29weSwgVHJpdmlh
bFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fQXNzaWduRnJvbUNv
cHksIE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9t
U2l6ZSwgc2l6ZV90IFRvU2l6ZT4KK3ZvaWQgQk1fQXNzaWduRnJvbU1vdmUoYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKKyAgdXNpbmcgVmVjVCA9IElubFZlYzxUPjsKKyAgc3RkOjphcnJheTxW
ZWNULCBrQmF0Y2hTaXplPiB2ZWN0b3JfYmF0Y2h7fTsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigK
KyAgICAgIHN0YXRlLAorICAgICAgLyogcHJlcGFyZV92ZWMgPSAqLworICAgICAgWyZdKElubFZl
YzxUPiogdmVjLCBzaXplX3QgaSkgeworICAgICAgICB2ZWN0b3JfYmF0Y2hbaV0uY2xlYXIoKTsK
KyAgICAgICAgdmVjdG9yX2JhdGNoW2ldLnJlc2l6ZShUb1NpemUpOworICAgICAgICB2ZWMtPnJl
c2l6ZShGcm9tU2l6ZSk7CisgICAgICB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAg
WyZdKElubFZlYzxUPiogdmVjLCBzaXplX3QgaSkgeworICAgICAgICBiZW5jaG1hcms6OkRvTm90
T3B0aW1pemUodmVjdG9yX2JhdGNoW2ldKTsKKyAgICAgICAgKnZlYyA9IHN0ZDo6bW92ZSh2ZWN0
b3JfYmF0Y2hbaV0pOworICAgICAgfSk7Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09f
U0laRShCTV9Bc3NpZ25Gcm9tTW92ZSwgVHJpdmlhbFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5D
SE1BUktfVFdPX1NJWkUoQk1fQXNzaWduRnJvbU1vdmUsIE5vbnRyaXZpYWxUeXBlKTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9tU2l6ZSwgc2l6ZV90IFRvU2l6ZT4KK3ZvaWQg
Qk1fUmVzaXplU2l6ZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBCYXRjaGVkQmVuY2ht
YXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisgICAgICBb
XShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIHZlYy0+Y2xlYXIoKTsKKyAgICAg
ICAgdmVjLT5yZXNpemUoRnJvbVNpemUpOworICAgICAgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0g
Ki8KKyAgICAgIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5yZXNpemUoVG9TaXpl
KTsgfSk7Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9SZXNpemVTaXpl
LCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9SZXNp
emVTaXplLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
RnJvbVNpemUsIHNpemVfdCBUb1NpemU+Cit2b2lkIEJNX1Jlc2l6ZVNpemVSZWYoYmVuY2htYXJr
OjpTdGF0ZSYgc3RhdGUpIHsKKyAgYXV0byB0ID0gVCgpOworICBCYXRjaGVkQmVuY2htYXJrPFQ+
KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisgICAgICBbXShJbmxW
ZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIHZlYy0+Y2xlYXIoKTsKKyAgICAgICAgdmVj
LT5yZXNpemUoRnJvbVNpemUpOworICAgICAgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAg
ICAgIFsmXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIGJlbmNobWFyazo6RG9O
b3RPcHRpbWl6ZSh0KTsKKyAgICAgICAgdmVjLT5yZXNpemUoVG9TaXplLCB0KTsKKyAgICAgIH0p
OworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fUmVzaXplU2l6ZVJlZiwg
VHJpdmlhbFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fUmVzaXpl
U2l6ZVJlZiwgTm9udHJpdmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IEZyb21TaXplLCBzaXplX3QgVG9TaXplPgordm9pZCBCTV9JbnNlcnRTaXplUmVmKGJlbmNobWFy
azo6U3RhdGUmIHN0YXRlKSB7CisgIGF1dG8gdCA9IFQoKTsKKyAgQmF0Y2hlZEJlbmNobWFyazxU
PigKKyAgICAgIHN0YXRlLAorICAgICAgLyogcHJlcGFyZV92ZWMgPSAqLworICAgICAgW10oSW5s
VmVjPFQ+KiB2ZWMsIHNpemVfdCkgeworICAgICAgICB2ZWMtPmNsZWFyKCk7CisgICAgICAgIHZl
Yy0+cmVzaXplKEZyb21TaXplKTsKKyAgICAgIH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisg
ICAgICBbJl0oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeworICAgICAgICBiZW5jaG1hcms6OkRv
Tm90T3B0aW1pemUodCk7CisgICAgICAgIGF1dG8qIHBvcyA9IHZlYy0+ZGF0YSgpICsgKHZlYy0+
c2l6ZSgpIC8gMik7CisgICAgICAgIHZlYy0+aW5zZXJ0KHBvcywgdCk7CisgICAgICB9KTsKK30K
K0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX0luc2VydFNpemVSZWYsIFRyaXZp
YWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX0luc2VydFNpemVS
ZWYsIE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9t
U2l6ZSwgc2l6ZV90IFRvU2l6ZT4KK3ZvaWQgQk1fSW5zZXJ0UmFuZ2UoYmVuY2htYXJrOjpTdGF0
ZSYgc3RhdGUpIHsKKyAgSW5sVmVjPFQ+IG90aGVyX3ZlYyhUb1NpemUpOworICBCYXRjaGVkQmVu
Y2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisgICAg
ICBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIHZlYy0+Y2xlYXIoKTsKKyAg
ICAgICAgdmVjLT5yZXNpemUoRnJvbVNpemUpOworICAgICAgfSwKKyAgICAgIC8qIHRlc3RfdmVj
ID0gKi8KKyAgICAgIFsmXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIGJlbmNo
bWFyazo6RG9Ob3RPcHRpbWl6ZShvdGhlcl92ZWMpOworICAgICAgICBhdXRvKiBwb3MgPSB2ZWMt
PmRhdGEoKSArICh2ZWMtPnNpemUoKSAvIDIpOworICAgICAgICB2ZWMtPmluc2VydChwb3MsIG90
aGVyX3ZlYy5iZWdpbigpLCBvdGhlcl92ZWMuZW5kKCkpOworICAgICAgfSk7Cit9CitBQlNMX0lO
VEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9JbnNlcnRSYW5nZSwgVHJpdmlhbFR5cGUpOwor
QUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fSW5zZXJ0UmFuZ2UsIE5vbnRyaXZp
YWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9tU2l6ZT4KK3ZvaWQg
Qk1fRW1wbGFjZUJhY2soYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgQmF0Y2hlZEJlbmNo
bWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyogcHJlcGFyZV92ZWMgPSAqLworICAgICAg
W10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeworICAgICAgICB2ZWMtPmNsZWFyKCk7CisgICAg
ICAgIHZlYy0+cmVzaXplKEZyb21TaXplKTsKKyAgICAgIH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9
ICovCisgICAgICBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZlYy0+ZW1wbGFjZV9iYWNr
KCk7IH0pOworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fRW1wbGFjZUJh
Y2ssIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0Vt
cGxhY2VCYWNrLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgRnJvbVNpemU+Cit2b2lkIEJNX1BvcEJhY2soYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
KyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyogcHJlcGFyZV92
ZWMgPSAqLworICAgICAgW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeworICAgICAgICB2ZWMt
PmNsZWFyKCk7CisgICAgICAgIHZlYy0+cmVzaXplKEZyb21TaXplKTsKKyAgICAgIH0sCisgICAg
ICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZl
Yy0+cG9wX2JhY2soKTsgfSk7Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19PTkVfU0laRShC
TV9Qb3BCYWNrLCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19PTkVfU0la
RShCTV9Qb3BCYWNrLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBz
aXplX3QgRnJvbVNpemU+Cit2b2lkIEJNX0VyYXNlT25lKGJlbmNobWFyazo6U3RhdGUmIHN0YXRl
KSB7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwKKyAgICAgIC8qIHByZXBh
cmVfdmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsKKyAgICAgICAg
dmVjLT5jbGVhcigpOworICAgICAgICB2ZWMtPnJlc2l6ZShGcm9tU2l6ZSk7CisgICAgICB9LAor
ICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAgW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkg
eworICAgICAgICBhdXRvKiBwb3MgPSB2ZWMtPmRhdGEoKSArICh2ZWMtPnNpemUoKSAvIDIpOwor
ICAgICAgICB2ZWMtPmVyYXNlKHBvcyk7CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVO
Q0hNQVJLX09ORV9TSVpFKEJNX0VyYXNlT25lLCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFM
X0JFTkNITUFSS19PTkVfU0laRShCTV9FcmFzZU9uZSwgTm9udHJpdmlhbFR5cGUpOworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplPgordm9pZCBCTV9FcmFzZVJhbmdlKGJl
bmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBz
dGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxUPiogdmVj
LCBzaXplX3QpIHsKKyAgICAgICAgdmVjLT5jbGVhcigpOworICAgICAgICB2ZWMtPnJlc2l6ZShG
cm9tU2l6ZSk7CisgICAgICB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAgW10oSW5s
VmVjPFQ+KiB2ZWMsIHNpemVfdCkgeworICAgICAgICBhdXRvKiBwb3MgPSB2ZWMtPmRhdGEoKSAr
ICh2ZWMtPnNpemUoKSAvIDIpOworICAgICAgICB2ZWMtPmVyYXNlKHBvcywgcG9zICsgMSk7Cisg
ICAgICB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0VyYXNlUmFu
Z2UsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0Vy
YXNlUmFuZ2UsIE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVf
dCBGcm9tU2l6ZT4KK3ZvaWQgQk1fQ2xlYXIoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAg
QmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyogcHJlcGFyZV92ZWMg
PSAqLyBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZlYy0+cmVzaXplKEZyb21TaXplKTsg
fSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8gW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeyB2
ZWMtPmNsZWFyKCk7IH0pOworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1f
Q2xlYXIsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJN
X0NsZWFyLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
RnJvbVNpemUsIHNpemVfdCBUb0NhcGFjaXR5Pgordm9pZCBCTV9SZXNlcnZlKGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwKKyAg
ICAgIC8qIHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3Qp
IHsKKyAgICAgICAgdmVjLT5jbGVhcigpOworICAgICAgICB2ZWMtPnJlc2l6ZShGcm9tU2l6ZSk7
CisgICAgICB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAgW10oSW5sVmVjPFQ+KiB2
ZWMsIHNpemVfdCkgeyB2ZWMtPnJlc2VydmUoVG9DYXBhY2l0eSk7IH0pOworfQorQUJTTF9JTlRF
Uk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fUmVzZXJ2ZSwgVHJpdmlhbFR5cGUpOworQUJTTF9J
TlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fUmVzZXJ2ZSwgTm9udHJpdmlhbFR5cGUpOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21DYXBhY2l0eSwgc2l6ZV90IFRvQ2Fw
YWNpdHk+Cit2b2lkIEJNX1Nocmlua1RvRml0KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cisg
IEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVj
ID0gKi8KKyAgICAgIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsKKyAgICAgICAgdmVjLT5j
bGVhcigpOworICAgICAgICB2ZWMtPnJlc2l6ZShUb0NhcGFjaXR5KTsKKyAgICAgICAgdmVjLT5y
ZXNlcnZlKEZyb21DYXBhY2l0eSk7CisgICAgICB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLyBb
XShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZlYy0+c2hyaW5rX3RvX2ZpdCgpOyB9KTsKK30K
K0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX1Nocmlua1RvRml0LCBUcml2aWFs
VHlwZSk7CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9TaHJpbmtUb0ZpdCwg
Tm9udHJpdmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXpl
LCBzaXplX3QgVG9TaXplPgordm9pZCBCTV9Td2FwKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7
CisgIHVzaW5nIFZlY1QgPSBJbmxWZWM8VD47CisgIHN0ZDo6YXJyYXk8VmVjVCwga0JhdGNoU2l6
ZT4gdmVjdG9yX2JhdGNoe307CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwK
KyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFsmXShJbmxWZWM8VD4qIHZlYywgc2l6
ZV90IGkpIHsKKyAgICAgICAgdmVjdG9yX2JhdGNoW2ldLmNsZWFyKCk7CisgICAgICAgIHZlY3Rv
cl9iYXRjaFtpXS5yZXNpemUoVG9TaXplKTsKKyAgICAgICAgdmVjLT5yZXNpemUoRnJvbVNpemUp
OworICAgICAgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAgICAgIFsmXShJbmxWZWM8VD4q
IHZlYywgc2l6ZV90IGkpIHsKKyAgICAgICAgdXNpbmcgc3RkOjpzd2FwOworICAgICAgICBiZW5j
aG1hcms6OkRvTm90T3B0aW1pemUodmVjdG9yX2JhdGNoW2ldKTsKKyAgICAgICAgc3dhcCgqdmVj
LCB2ZWN0b3JfYmF0Y2hbaV0pOworICAgICAgfSk7Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNITUFS
S19UV09fU0laRShCTV9Td2FwLCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFMX0JFTkNITUFS
S19UV09fU0laRShCTV9Td2FwLCBOb250cml2aWFsVHlwZSk7CisKIH0gIC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl9leGNlcHRpb25fc2Fm
ZXR5X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZmMGRh
NzViN2JhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9y
X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwpAQCAtMCwwICsxLDQ4OSBAQAorLy8gQ29weXJpZ2h0
IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRl
IDxpbml0aWFsaXplcl9saXN0PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNs
dWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgiCisjaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaCIKKworbmFtZXNwYWNlIHsKKwor
Y29uc3RleHByIHNpemVfdCBrSW5saW5lZENhcGFjaXR5ID0gNDsKK2NvbnN0ZXhwciBzaXplX3Qg
a0xhcmdlU2l6ZSA9IGtJbmxpbmVkQ2FwYWNpdHkgKiAyOworY29uc3RleHByIHNpemVfdCBrU21h
bGxTaXplID0ga0lubGluZWRDYXBhY2l0eSAvIDI7CisKK3VzaW5nIFRocm93ZXIgPSB0ZXN0aW5n
OjpUaHJvd2luZ1ZhbHVlPD47Cit1c2luZyBNb3ZhYmxlVGhyb3dlciA9IHRlc3Rpbmc6OlRocm93
aW5nVmFsdWU8dGVzdGluZzo6VHlwZVNwZWM6OmtOb1Rocm93TW92ZT47Cit1c2luZyBUaHJvd0Fs
bG9jID0gdGVzdGluZzo6VGhyb3dpbmdBbGxvY2F0b3I8VGhyb3dlcj47CisKK3VzaW5nIFRocm93
ZXJWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPFRocm93ZXIsIGtJbmxpbmVkQ2FwYWNpdHk+Owor
dXNpbmcgTW92YWJsZVRocm93ZXJWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPE1vdmFibGVUaHJv
d2VyLCBrSW5saW5lZENhcGFjaXR5PjsKKwordXNpbmcgVGhyb3dBbGxvY1Rocm93ZXJWZWMgPQor
ICAgIGFic2w6OklubGluZWRWZWN0b3I8VGhyb3dlciwga0lubGluZWRDYXBhY2l0eSwgVGhyb3dB
bGxvYz47Cit1c2luZyBUaHJvd0FsbG9jTW92YWJsZVRocm93ZXJWZWMgPQorICAgIGFic2w6Oklu
bGluZWRWZWN0b3I8TW92YWJsZVRocm93ZXIsIGtJbmxpbmVkQ2FwYWNpdHksIFRocm93QWxsb2M+
OworCisvLyBJbiBHQ0MsIGlmIGFuIGVsZW1lbnQgb2YgYSBgc3RkOjppbml0aWFsaXplcl9saXN0
YCB0aHJvd3MgZHVyaW5nIGNvbnN0cnVjdGlvbgorLy8gdGhlIGVsZW1lbnRzIHRoYXQgd2VyZSBj
b25zdHJ1Y3RlZCBiZWZvcmUgaXQgYXJlIG5vdCBkZXN0cm95ZWQuIFRoaXMgY2F1c2VzCisvLyBp
bmNvcnJlY3QgZXhjZXB0aW9uIHNhZmV0eSB0ZXN0IGZhaWx1cmVzLiBUaHVzLCBgdGVzdGluZzo6
bm90aHJvd19jdG9yYCBpcworLy8gcmVxdWlyZWQuIFNlZTogaHR0cHM6Ly9nY2MuZ251Lm9yZy9i
dWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjYxMzkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9NQUtF
X0lOSVRfTElTVChULCBOKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgKE4gPiBrSW5saW5lZENh
cGFjaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICA/
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPntUKDAsIHRlc3Rpbmc6Om5vdGhyb3dfY3RvciksIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUKDEsIHRlc3Rpbmc6Om5vdGhyb3df
Y3RvciksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUKDIsIHRlc3Rpbmc6
Om5vdGhyb3dfY3RvciksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUKDMs
IHRlc3Rpbmc6Om5vdGhyb3dfY3RvciksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUKDQsIHRlc3Rpbmc6Om5vdGhyb3dfY3RvciksIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUKDUsIHRlc3Rpbmc6Om5vdGhyb3dfY3RvciksIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUKDYsIHRlc3Rpbmc6Om5vdGhyb3dfY3RvciksIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUKDcsIHRlc3Rpbmc6Om5vdGhyb3dfY3Rv
cil9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICA6IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPntUKDAsIHRl
c3Rpbmc6Om5vdGhyb3dfY3RvciksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUKDEsIHRlc3Rpbmc6Om5vdGhyb3dfY3Rvcil9KQorc3RhdGljX2Fzc2VydCgoa0xhcmdlU2l6
ZSA9PSA4IHx8IGtTbWFsbFNpemUgPT0gMiksCisgICAgICAgICAgICAgICJNdXN0IHVwZGF0ZSBB
QlNMX0lOVEVSTkFMX01BS0VfSU5JVF9MSVNUKC4uLikuIik7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUaGVWZWNULCBzaXplX3QuLi4gVGhlU2l6ZXM+CitjbGFzcyBUZXN0UGFyYW1zIHsKKyBwdWJs
aWM6CisgIHVzaW5nIFZlY1QgPSBUaGVWZWNUOworICBjb25zdGV4cHIgc3RhdGljIHNpemVfdCBH
ZXRTaXplQXQoc2l6ZV90IGkpIHsgcmV0dXJuIGtTaXplc1sxICsgaV07IH0KKworIHByaXZhdGU6
CisgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IGtTaXplc1sxICsgc2l6ZW9mLi4uKFRoZVNpemVz
KV0gPSB7MSwgVGhlU2l6ZXMuLi59OworfTsKKwordXNpbmcgTm9TaXplVGVzdFBhcmFtcyA9Cisg
ICAgOjp0ZXN0aW5nOjpUeXBlczxUZXN0UGFyYW1zPFRocm93ZXJWZWM+LCBUZXN0UGFyYW1zPE1v
dmFibGVUaHJvd2VyVmVjPiwKKyAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJhbXM8VGhyb3dB
bGxvY1Rocm93ZXJWZWM+LAorICAgICAgICAgICAgICAgICAgICAgVGVzdFBhcmFtczxUaHJvd0Fs
bG9jTW92YWJsZVRocm93ZXJWZWM+PjsKKwordXNpbmcgT25lU2l6ZVRlc3RQYXJhbXMgPQorICAg
IDo6dGVzdGluZzo6VHlwZXM8VGVzdFBhcmFtczxUaHJvd2VyVmVjLCBrTGFyZ2VTaXplPiwKKyAg
ICAgICAgICAgICAgICAgICAgIFRlc3RQYXJhbXM8VGhyb3dlclZlYywga1NtYWxsU2l6ZT4sCisg
ICAgICAgICAgICAgICAgICAgICBUZXN0UGFyYW1zPE1vdmFibGVUaHJvd2VyVmVjLCBrTGFyZ2VT
aXplPiwKKyAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJhbXM8TW92YWJsZVRocm93ZXJWZWMs
IGtTbWFsbFNpemU+LAorICAgICAgICAgICAgICAgICAgICAgVGVzdFBhcmFtczxUaHJvd0FsbG9j
VGhyb3dlclZlYywga0xhcmdlU2l6ZT4sCisgICAgICAgICAgICAgICAgICAgICBUZXN0UGFyYW1z
PFRocm93QWxsb2NUaHJvd2VyVmVjLCBrU21hbGxTaXplPiwKKyAgICAgICAgICAgICAgICAgICAg
IFRlc3RQYXJhbXM8VGhyb3dBbGxvY01vdmFibGVUaHJvd2VyVmVjLCBrTGFyZ2VTaXplPiwKKyAg
ICAgICAgICAgICAgICAgICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY01vdmFibGVUaHJvd2VyVmVj
LCBrU21hbGxTaXplPj47CisKK3VzaW5nIFR3b1NpemVUZXN0UGFyYW1zID0gOjp0ZXN0aW5nOjpU
eXBlczwKKyAgICBUZXN0UGFyYW1zPFRocm93ZXJWZWMsIGtMYXJnZVNpemUsIGtMYXJnZVNpemU+
LAorICAgIFRlc3RQYXJhbXM8VGhyb3dlclZlYywga0xhcmdlU2l6ZSwga1NtYWxsU2l6ZT4sCisg
ICAgVGVzdFBhcmFtczxUaHJvd2VyVmVjLCBrU21hbGxTaXplLCBrTGFyZ2VTaXplPiwKKyAgICBU
ZXN0UGFyYW1zPFRocm93ZXJWZWMsIGtTbWFsbFNpemUsIGtTbWFsbFNpemU+LAorICAgIFRlc3RQ
YXJhbXM8TW92YWJsZVRocm93ZXJWZWMsIGtMYXJnZVNpemUsIGtMYXJnZVNpemU+LAorICAgIFRl
c3RQYXJhbXM8TW92YWJsZVRocm93ZXJWZWMsIGtMYXJnZVNpemUsIGtTbWFsbFNpemU+LAorICAg
IFRlc3RQYXJhbXM8TW92YWJsZVRocm93ZXJWZWMsIGtTbWFsbFNpemUsIGtMYXJnZVNpemU+LAor
ICAgIFRlc3RQYXJhbXM8TW92YWJsZVRocm93ZXJWZWMsIGtTbWFsbFNpemUsIGtTbWFsbFNpemU+
LAorICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY1Rocm93ZXJWZWMsIGtMYXJnZVNpemUsIGtMYXJn
ZVNpemU+LAorICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY1Rocm93ZXJWZWMsIGtMYXJnZVNpemUs
IGtTbWFsbFNpemU+LAorICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY1Rocm93ZXJWZWMsIGtTbWFs
bFNpemUsIGtMYXJnZVNpemU+LAorICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY1Rocm93ZXJWZWMs
IGtTbWFsbFNpemUsIGtTbWFsbFNpemU+LAorICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY01vdmFi
bGVUaHJvd2VyVmVjLCBrTGFyZ2VTaXplLCBrTGFyZ2VTaXplPiwKKyAgICBUZXN0UGFyYW1zPFRo
cm93QWxsb2NNb3ZhYmxlVGhyb3dlclZlYywga0xhcmdlU2l6ZSwga1NtYWxsU2l6ZT4sCisgICAg
VGVzdFBhcmFtczxUaHJvd0FsbG9jTW92YWJsZVRocm93ZXJWZWMsIGtTbWFsbFNpemUsIGtMYXJn
ZVNpemU+LAorICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY01vdmFibGVUaHJvd2VyVmVjLCBrU21h
bGxTaXplLCBrU21hbGxTaXplPj47CisKK3RlbXBsYXRlIDx0eXBlbmFtZT4KK3N0cnVjdCBOb1Np
emVUZXN0IDogOjp0ZXN0aW5nOjpUZXN0IHt9OworVFlQRURfVEVTVF9TVUlURShOb1NpemVUZXN0
LCBOb1NpemVUZXN0UGFyYW1zKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lPgorc3RydWN0IE9uZVNp
emVUZXN0IDogOjp0ZXN0aW5nOjpUZXN0IHt9OworVFlQRURfVEVTVF9TVUlURShPbmVTaXplVGVz
dCwgT25lU2l6ZVRlc3RQYXJhbXMpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWU+CitzdHJ1Y3QgVHdv
U2l6ZVRlc3QgOiA6OnRlc3Rpbmc6OlRlc3Qge307CitUWVBFRF9URVNUX1NVSVRFKFR3b1NpemVU
ZXN0LCBUd29TaXplVGVzdFBhcmFtcyk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBWZWNUPgorYm9v
bCBJbmxpbmVkVmVjdG9ySW52YXJpYW50cyhWZWNUKiB2ZWMpIHsKKyAgaWYgKCp2ZWMgIT0gKnZl
YykgcmV0dXJuIGZhbHNlOworICBpZiAodmVjLT5zaXplKCkgPiB2ZWMtPmNhcGFjaXR5KCkpIHJl
dHVybiBmYWxzZTsKKyAgaWYgKHZlYy0+c2l6ZSgpID4gdmVjLT5tYXhfc2l6ZSgpKSByZXR1cm4g
ZmFsc2U7CisgIGlmICh2ZWMtPmNhcGFjaXR5KCkgPiB2ZWMtPm1heF9zaXplKCkpIHJldHVybiBm
YWxzZTsKKyAgaWYgKHZlYy0+ZGF0YSgpICE9IHN0ZDo6YWRkcmVzc29mKHZlYy0+YXQoMCkpKSBy
ZXR1cm4gZmFsc2U7CisgIGlmICh2ZWMtPmRhdGEoKSAhPSB2ZWMtPmJlZ2luKCkpIHJldHVybiBm
YWxzZTsKKyAgaWYgKCp2ZWMtPmRhdGEoKSAhPSAqdmVjLT5iZWdpbigpKSByZXR1cm4gZmFsc2U7
CisgIGlmICh2ZWMtPmJlZ2luKCkgPiB2ZWMtPmVuZCgpKSByZXR1cm4gZmFsc2U7CisgIGlmICgo
dmVjLT5lbmQoKSAtIHZlYy0+YmVnaW4oKSkgIT0gdmVjLT5zaXplKCkpIHJldHVybiBmYWxzZTsK
KyAgaWYgKHN0ZDo6ZGlzdGFuY2UodmVjLT5iZWdpbigpLCB2ZWMtPmVuZCgpKSAhPSB2ZWMtPnNp
emUoKSkgcmV0dXJuIGZhbHNlOworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gRnVuY3Rpb24gdGhh
dCBhbHdheXMgcmV0dXJucyBmYWxzZSBpcyBjb3JyZWN0LCBidXQgcmVmYWN0b3JpbmcgaXMgcmVx
dWlyZWQKKy8vIGZvciBjbGFyaXR5LiBJdCdzIG5lZWRlZCB0byBleHByZXNzIHRoYXQsIGFzIGEg
Y29udHJhY3QsIGNlcnRhaW4gb3BlcmF0aW9ucworLy8gc2hvdWxkIG5vdCB0aHJvdyBhdCBhbGwu
IEV4ZWN1dGlvbiBvZiB0aGlzIGZ1bmN0aW9uIG1lYW5zIGFuIGV4Y2VwdGlvbiB3YXMKKy8vIHRo
cm93biBhbmQgdGh1cyB0aGUgdGVzdCBzaG91bGQgZmFpbC4KKy8vIFRPRE8oam9obnNvbmNqKTog
QWRkIGB0ZXN0aW5nOjpOb1Rocm93R3VhcmFudGVlYCB0byB0aGUgZnJhbWV3b3JrCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVmVjVD4KK2Jvb2wgTm9UaHJvd0d1YXJhbnRlZShWZWNUKiAvKiB2ZWMgKi8p
IHsKKyAgcmV0dXJuIGZhbHNlOworfQorCitUWVBFRF9URVNUKE5vU2l6ZVRlc3QsIERlZmF1bHRD
b25zdHJ1Y3RvcikgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpWZWNUOwor
ICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OmFsbG9jYXRvcl90eXBlOwor
CisgIHRlc3Rpbmc6OlRlc3RUaHJvd2luZ0N0b3I8VmVjVD4oKTsKKworICB0ZXN0aW5nOjpUZXN0
VGhyb3dpbmdDdG9yPFZlY1Q+KGFsbG9jYXRvcl90eXBle30pOworfQorCitUWVBFRF9URVNUKE9u
ZVNpemVUZXN0LCBTaXplQ29uc3RydWN0b3IpIHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6VmVjVDsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSB0eXBlbmFtZSBWZWNUOjph
bGxvY2F0b3JfdHlwZTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHNpemUgPSBUeXBlUGFyYW06
OkdldFNpemVBdCgwKTsKKworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdDdG9yPFZlY1Q+KHNpemUp
OworCisgIHRlc3Rpbmc6OlRlc3RUaHJvd2luZ0N0b3I8VmVjVD4oc2l6ZSwgYWxsb2NhdG9yX3R5
cGV7fSk7Cit9CisKK1RZUEVEX1RFU1QoT25lU2l6ZVRlc3QsIFNpemVSZWZDb25zdHJ1Y3Rvcikg
eworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpWZWNUOworICB1c2luZyB2YWx1
ZV90eXBlID0gdHlwZW5hbWUgVmVjVDo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5
cGUgPSB0eXBlbmFtZSBWZWNUOjphbGxvY2F0b3JfdHlwZTsKKyAgY29uc3RleHByIHN0YXRpYyBh
dXRvIHNpemUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICB0ZXN0aW5nOjpUZXN0VGhy
b3dpbmdDdG9yPFZlY1Q+KHNpemUsIHZhbHVlX3R5cGV7fSk7CisKKyAgdGVzdGluZzo6VGVzdFRo
cm93aW5nQ3RvcjxWZWNUPihzaXplLCB2YWx1ZV90eXBle30sIGFsbG9jYXRvcl90eXBle30pOwor
fQorCitUWVBFRF9URVNUKE9uZVNpemVUZXN0LCBJbml0aWFsaXplckxpc3RDb25zdHJ1Y3Rvcikg
eworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpWZWNUOworICB1c2luZyB2YWx1
ZV90eXBlID0gdHlwZW5hbWUgVmVjVDo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5
cGUgPSB0eXBlbmFtZSBWZWNUOjphbGxvY2F0b3JfdHlwZTsKKyAgY29uc3RleHByIHN0YXRpYyBh
dXRvIHNpemUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICB0ZXN0aW5nOjpUZXN0VGhy
b3dpbmdDdG9yPFZlY1Q+KAorICAgICAgQUJTTF9JTlRFUk5BTF9NQUtFX0lOSVRfTElTVCh2YWx1
ZV90eXBlLCBzaXplKSk7CisKKyAgdGVzdGluZzo6VGVzdFRocm93aW5nQ3RvcjxWZWNUPigKKyAg
ICAgIEFCU0xfSU5URVJOQUxfTUFLRV9JTklUX0xJU1QodmFsdWVfdHlwZSwgc2l6ZSksIGFsbG9j
YXRvcl90eXBle30pOworfQorCitUWVBFRF9URVNUKE9uZVNpemVUZXN0LCBSYW5nZUNvbnN0cnVj
dG9yKSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFtZSBUeXBlUGFyYW06OlZlY1Q7CisgIHVzaW5n
IHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBWZWNUOjp2YWx1ZV90eXBlOworICB1c2luZyBhbGxvY2F0
b3JfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OmFsbG9jYXRvcl90eXBlOworICBjb25zdGV4cHIgc3Rh
dGljIGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDApOworCisgIHN0ZDo6YXJyYXk8
dmFsdWVfdHlwZSwgc2l6ZT4gYXJye307CisKKyAgdGVzdGluZzo6VGVzdFRocm93aW5nQ3RvcjxW
ZWNUPihhcnIuYmVnaW4oKSwgYXJyLmVuZCgpKTsKKworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdD
dG9yPFZlY1Q+KGFyci5iZWdpbigpLCBhcnIuZW5kKCksIGFsbG9jYXRvcl90eXBle30pOworfQor
CitUWVBFRF9URVNUKE9uZVNpemVUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKKyAgdXNpbmcgVmVj
VCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSB0
eXBlbmFtZSBWZWNUOjphbGxvY2F0b3JfdHlwZTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHNp
emUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICBWZWNUIG90aGVyX3ZlY3tzaXplfTsK
KworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdDdG9yPFZlY1Q+KG90aGVyX3ZlYyk7CisKKyAgdGVz
dGluZzo6VGVzdFRocm93aW5nQ3RvcjxWZWNUPihvdGhlcl92ZWMsIGFsbG9jYXRvcl90eXBle30p
OworfQorCitUWVBFRF9URVNUKE9uZVNpemVUZXN0LCBNb3ZlQ29uc3RydWN0b3IpIHsKKyAgdXNp
bmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5
cGUgPSB0eXBlbmFtZSBWZWNUOjphbGxvY2F0b3JfdHlwZTsKKyAgY29uc3RleHByIHN0YXRpYyBh
dXRvIHNpemUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICBpZiAoIWFic2w6OmFsbG9j
YXRvcl9pc19ub3Rocm93PGFsbG9jYXRvcl90eXBlPjo6dmFsdWUpIHsKKyAgICB0ZXN0aW5nOjpU
ZXN0VGhyb3dpbmdDdG9yPFZlY1Q+KFZlY1R7c2l6ZX0pOworCisgICAgdGVzdGluZzo6VGVzdFRo
cm93aW5nQ3RvcjxWZWNUPihWZWNUe3NpemV9LCBhbGxvY2F0b3JfdHlwZXt9KTsKKyAgfQorfQor
CitUWVBFRF9URVNUKFR3b1NpemVUZXN0LCBBc3NpZ24pIHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6
OnZhbHVlX3R5cGU7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byBmcm9tX3NpemUgPSBUeXBlUGFy
YW06OkdldFNpemVBdCgwKTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHRvX3NpemUgPSBUeXBl
UGFyYW06OkdldFNpemVBdCgxKTsKKworICBhdXRvIHRlc3RlciA9IHRlc3Rpbmc6Ok1ha2VFeGNl
cHRpb25TYWZldHlUZXN0ZXIoKQorICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1
ZShWZWNUe2Zyb21fc2l6ZX0pCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKElu
bGluZWRWZWN0b3JJbnZhcmlhbnRzPFZlY1Q+KTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVz
dChbXShWZWNUKiB2ZWMpIHsKKyAgICAqdmVjID0gQUJTTF9JTlRFUk5BTF9NQUtFX0lOSVRfTElT
VCh2YWx1ZV90eXBlLCB0b19zaXplKTsKKyAgfSkpOworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5U
ZXN0KFtdKFZlY1QqIHZlYykgeworICAgIFZlY1Qgb3RoZXJfdmVje3RvX3NpemV9OworICAgICp2
ZWMgPSBvdGhlcl92ZWM7CisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShW
ZWNUKiB2ZWMpIHsKKyAgICBWZWNUIG90aGVyX3ZlY3t0b19zaXplfTsKKyAgICAqdmVjID0gc3Rk
Ojptb3ZlKG90aGVyX3ZlYyk7CisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChb
XShWZWNUKiB2ZWMpIHsKKyAgICB2YWx1ZV90eXBlIHZhbHt9OworICAgIHZlYy0+YXNzaWduKHRv
X3NpemUsIHZhbCk7CisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNU
KiB2ZWMpIHsKKyAgICB2ZWMtPmFzc2lnbihBQlNMX0lOVEVSTkFMX01BS0VfSU5JVF9MSVNUKHZh
bHVlX3R5cGUsIHRvX3NpemUpKTsKKyAgfSkpOworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0
KFtdKFZlY1QqIHZlYykgeworICAgIHN0ZDo6YXJyYXk8dmFsdWVfdHlwZSwgdG9fc2l6ZT4gYXJy
e307CisgICAgdmVjLT5hc3NpZ24oYXJyLmJlZ2luKCksIGFyci5lbmQoKSk7CisgIH0pKTsKK30K
KworVFlQRURfVEVTVChUd29TaXplVGVzdCwgUmVzaXplKSB7CisgIHVzaW5nIFZlY1QgPSB0eXBl
bmFtZSBUeXBlUGFyYW06OlZlY1Q7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBWZWNU
Ojp2YWx1ZV90eXBlOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gZnJvbV9zaXplID0gVHlwZVBh
cmFtOjpHZXRTaXplQXQoMCk7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byB0b19zaXplID0gVHlw
ZVBhcmFtOjpHZXRTaXplQXQoMSk7CisKKyAgYXV0byB0ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtlRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFs
dWUoVmVjVHtmcm9tX3NpemV9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhJ
bmxpbmVkVmVjdG9ySW52YXJpYW50czxWZWNUPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdGluZzo6c3Ryb25nX2d1YXJhbnRlZSk7CisKKyAgRVhQRUNUX1RSVUUodGVz
dGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5yZXNpemUodG9fc2l6ZSk7ICAvLwor
ICB9KSk7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAg
dmVjLT5yZXNpemUodG9fc2l6ZSwgdmFsdWVfdHlwZXt9KTsgIC8vCisgIH0pKTsKK30KKworVFlQ
RURfVEVTVChPbmVTaXplVGVzdCwgSW5zZXJ0KSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFtZSBU
eXBlUGFyYW06OlZlY1Q7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBWZWNUOjp2YWx1
ZV90eXBlOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gZnJvbV9zaXplID0gVHlwZVBhcmFtOjpH
ZXRTaXplQXQoMCk7CisKKyAgYXV0byB0ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2Fm
ZXR5VGVzdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoVmVjVHtm
cm9tX3NpemV9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhJbmxpbmVkVmVj
dG9ySW52YXJpYW50czxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVj
VCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKTsKKyAgICB2ZWMtPmluc2VydChp
dCwgdmFsdWVfdHlwZXt9KTsKKyAgfSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShW
ZWNUKiB2ZWMpIHsKKyAgICBhdXRvIGl0ID0gdmVjLT5iZWdpbigpICsgKHZlYy0+c2l6ZSgpIC8g
Mik7CisgICAgdmVjLT5pbnNlcnQoaXQsIHZhbHVlX3R5cGV7fSk7CisgIH0pKTsKKyAgRVhQRUNU
X1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+ZW5k
KCk7CisgICAgdmVjLT5pbnNlcnQoaXQsIHZhbHVlX3R5cGV7fSk7CisgIH0pKTsKK30KKworVFlQ
RURfVEVTVChUd29TaXplVGVzdCwgSW5zZXJ0KSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFtZSBU
eXBlUGFyYW06OlZlY1Q7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBWZWNUOjp2YWx1
ZV90eXBlOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gZnJvbV9zaXplID0gVHlwZVBhcmFtOjpH
ZXRTaXplQXQoMCk7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byBjb3VudCA9IFR5cGVQYXJhbTo6
R2V0U2l6ZUF0KDEpOworCisgIGF1dG8gdGVzdGVyID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNh
ZmV0eVRlc3RlcigpCisgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFZlY1R7
ZnJvbV9zaXplfSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoSW5saW5lZFZl
Y3RvckludmFyaWFudHM8VmVjVD4pOworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZl
Y1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMtPmJlZ2luKCk7CisgICAgdmVjLT5pbnNlcnQo
aXQsIGNvdW50LCB2YWx1ZV90eXBle30pOworICB9KSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rlci5U
ZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMtPmJlZ2luKCkgKyAodmVjLT5z
aXplKCkgLyAyKTsKKyAgICB2ZWMtPmluc2VydChpdCwgY291bnQsIHZhbHVlX3R5cGV7fSk7Cisg
IH0pKTsKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgYXV0
byBpdCA9IHZlYy0+ZW5kKCk7CisgICAgdmVjLT5pbnNlcnQoaXQsIGNvdW50LCB2YWx1ZV90eXBl
e30pOworICB9KSk7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7
CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKTsKKyAgICB2ZWMtPmluc2VydChpdCwgQUJTTF9J
TlRFUk5BTF9NQUtFX0lOSVRfTElTVCh2YWx1ZV90eXBlLCBjb3VudCkpOworICB9KSk7CisgIEVY
UEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMt
PmJlZ2luKCkgKyAodmVjLT5zaXplKCkgLyAyKTsKKyAgICB2ZWMtPmluc2VydChpdCwgQUJTTF9J
TlRFUk5BTF9NQUtFX0lOSVRfTElTVCh2YWx1ZV90eXBlLCBjb3VudCkpOworICB9KSk7CisgIEVY
UEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMt
PmVuZCgpOworICAgIHZlYy0+aW5zZXJ0KGl0LCBBQlNMX0lOVEVSTkFMX01BS0VfSU5JVF9MSVNU
KHZhbHVlX3R5cGUsIGNvdW50KSk7CisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVz
dChbXShWZWNUKiB2ZWMpIHsKKyAgICBhdXRvIGl0ID0gdmVjLT5iZWdpbigpOworICAgIHN0ZDo6
YXJyYXk8dmFsdWVfdHlwZSwgY291bnQ+IGFycnt9OworICAgIHZlYy0+aW5zZXJ0KGl0LCBhcnIu
YmVnaW4oKSwgYXJyLmVuZCgpKTsKKyAgfSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChb
XShWZWNUKiB2ZWMpIHsKKyAgICBhdXRvIGl0ID0gdmVjLT5iZWdpbigpICsgKHZlYy0+c2l6ZSgp
IC8gMik7CisgICAgc3RkOjphcnJheTx2YWx1ZV90eXBlLCBjb3VudD4gYXJye307CisgICAgdmVj
LT5pbnNlcnQoaXQsIGFyci5iZWdpbigpLCBhcnIuZW5kKCkpOworICB9KSk7CisgIEVYUEVDVF9U
UlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMtPmVuZCgp
OworICAgIHN0ZDo6YXJyYXk8dmFsdWVfdHlwZSwgY291bnQ+IGFycnt9OworICAgIHZlYy0+aW5z
ZXJ0KGl0LCBhcnIuYmVnaW4oKSwgYXJyLmVuZCgpKTsKKyAgfSkpOworfQorCitUWVBFRF9URVNU
KE9uZVNpemVUZXN0LCBFbXBsYWNlQmFjaykgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlw
ZVBhcmFtOjpWZWNUOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6
R2V0U2l6ZUF0KDApOworCisgIFZlY1QgZnVsbF92ZWN7c2l6ZX07CisgIGZ1bGxfdmVjLnJlc2l6
ZShmdWxsX3ZlYy5jYXBhY2l0eSgpKTsKKworICBWZWNUIG5vbmZ1bGxfdmVje3NpemV9OworICBu
b25mdWxsX3ZlYy5yZXNlcnZlKHNpemUgKyAxKTsKKworICBhdXRvIHRlc3RlciA9IHRlc3Rpbmc6
Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoQ29udHJhY3RzKAorICAgICAgSW5saW5l
ZFZlY3RvckludmFyaWFudHM8VmVjVD4pOworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5XaXRoSW5p
dGlhbFZhbHVlKG5vbmZ1bGxfdmVjKS5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIHZlYy0+ZW1w
bGFjZV9iYWNrKCk7ICAvLworICB9KSk7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLldpdGhJbml0
aWFsVmFsdWUoZnVsbF92ZWMpLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5lbXBsYWNl
X2JhY2soKTsgIC8vCisgIH0pKTsKK30KKworVFlQRURfVEVTVChPbmVTaXplVGVzdCwgUG9wQmFj
aykgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpWZWNUOworICBjb25zdGV4
cHIgc3RhdGljIGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDApOworCisgIGF1dG8g
dGVzdGVyID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCisgICAgICAgICAg
ICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFZlY1R7c2l6ZX0pCisgICAgICAgICAgICAgICAg
ICAgIC5XaXRoQ29udHJhY3RzKE5vVGhyb3dHdWFyYW50ZWU8VmVjVD4pOworCisgIEVYUEVDVF9U
UlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIHZlYy0+cG9wX2JhY2soKTsgIC8v
CisgIH0pKTsKK30KKworVFlQRURfVEVTVChPbmVTaXplVGVzdCwgRXJhc2UpIHsKKyAgdXNpbmcg
VmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRv
IHNpemUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICBhdXRvIHRlc3RlciA9IHRlc3Rp
bmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQorICAgICAgICAgICAgICAgICAgICAuV2l0
aEluaXRpYWxWYWx1ZShWZWNUe3NpemV9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRy
YWN0cyhJbmxpbmVkVmVjdG9ySW52YXJpYW50czxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUodGVz
dGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKTsKKyAg
ICB2ZWMtPmVyYXNlKGl0KTsKKyAgfSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShW
ZWNUKiB2ZWMpIHsKKyAgICBhdXRvIGl0ID0gdmVjLT5iZWdpbigpICsgKHZlYy0+c2l6ZSgpIC8g
Mik7CisgICAgdmVjLT5lcmFzZShpdCk7CisgIH0pKTsKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRl
c3QoW10oVmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKSArICh2ZWMtPnNp
emUoKSAtIDEpOworICAgIHZlYy0+ZXJhc2UoaXQpOworICB9KSk7CisKKyAgRVhQRUNUX1RSVUUo
dGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKTsK
KyAgICB2ZWMtPmVyYXNlKGl0LCBpdCArIDEpOworICB9KSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rl
ci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMtPmJlZ2luKCkgKyAodmVj
LT5zaXplKCkgLyAyKTsKKyAgICB2ZWMtPmVyYXNlKGl0LCBpdCArIDEpOworICB9KSk7CisgIEVY
UEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMt
PmJlZ2luKCkgKyAodmVjLT5zaXplKCkgLSAxKTsKKyAgICB2ZWMtPmVyYXNlKGl0LCBpdCArIDEp
OworICB9KSk7Cit9CisKK1RZUEVEX1RFU1QoT25lU2l6ZVRlc3QsIENsZWFyKSB7CisgIHVzaW5n
IFZlY1QgPSB0eXBlbmFtZSBUeXBlUGFyYW06OlZlY1Q7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0
byBzaXplID0gVHlwZVBhcmFtOjpHZXRTaXplQXQoMCk7CisKKyAgYXV0byB0ZXN0ZXIgPSB0ZXN0
aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgLldp
dGhJbml0aWFsVmFsdWUoVmVjVHtzaXplfSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250
cmFjdHMoTm9UaHJvd0d1YXJhbnRlZTxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRl
c3QoW10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5jbGVhcigpOyAgLy8KKyAgfSkpOworfQorCitU
WVBFRF9URVNUKFR3b1NpemVUZXN0LCBSZXNlcnZlKSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFt
ZSBUeXBlUGFyYW06OlZlY1Q7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byBmcm9tX3NpemUgPSBU
eXBlUGFyYW06OkdldFNpemVBdCgwKTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHRvX2NhcGFj
aXR5ID0gVHlwZVBhcmFtOjpHZXRTaXplQXQoMSk7CisKKyAgYXV0byB0ZXN0ZXIgPSB0ZXN0aW5n
OjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhJ
bml0aWFsVmFsdWUoVmVjVHtmcm9tX3NpemV9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENv
bnRyYWN0cyhJbmxpbmVkVmVjdG9ySW52YXJpYW50czxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUo
dGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5yZXNlcnZlKHRvX2NhcGFjaXR5
KTsgIC8vCisgIH0pKTsKK30KKworVFlQRURfVEVTVChPbmVTaXplVGVzdCwgU2hyaW5rVG9GaXQp
IHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgY29uc3RleHBy
IHN0YXRpYyBhdXRvIHNpemUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICBhdXRvIHRl
c3RlciA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQorICAgICAgICAgICAg
ICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShWZWNUe3NpemV9KQorICAgICAgICAgICAgICAgICAg
ICAuV2l0aENvbnRyYWN0cyhJbmxpbmVkVmVjdG9ySW52YXJpYW50czxWZWNUPik7CisKKyAgRVhQ
RUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5zaHJpbmtfdG9f
Zml0KCk7ICAvLworICB9KSk7Cit9CisKK1RZUEVEX1RFU1QoVHdvU2l6ZVRlc3QsIFN3YXApIHsK
KyAgdXNpbmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgY29uc3RleHByIHN0
YXRpYyBhdXRvIGZyb21fc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDApOworICBjb25zdGV4
cHIgc3RhdGljIGF1dG8gdG9fc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDEpOworCisgIGF1
dG8gdGVzdGVyID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCisgICAgICAg
ICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFZlY1R7ZnJvbV9zaXplfSkKKyAgICAgICAg
ICAgICAgICAgICAgLldpdGhDb250cmFjdHMoSW5saW5lZFZlY3RvckludmFyaWFudHM8VmVjVD4p
OworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIFZlY1Qg
b3RoZXJfdmVje3RvX3NpemV9OworICAgIHZlYy0+c3dhcChvdGhlcl92ZWMpOworICB9KSk7CisK
KyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgdXNpbmcgc3Rk
Ojpzd2FwOworICAgIFZlY1Qgb3RoZXJfdmVje3RvX3NpemV9OworICAgIHN3YXAoKnZlYywgb3Ro
ZXJfdmVjKTsKKyAgfSkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGlu
ZWRfdmVjdG9yX3Rlc3QuY2MKaW5kZXggMDhkY2QzZWY2NmYuLmJhZGE0ZmVjOWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW5saW5lZF92ZWN0b3JfdGVzdC5jYwpAQCAtMSwxMCArMSwxMCBAQAotLy8gQ29w
eXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFi
c2VpbCBBdXRob3JzLgogLy8KIC8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl90
ZXN0aW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCiAj
aW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
dGVybmFsL2NvdW50aW5nX2FsbG9jYXRvci5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
dGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5oIgogI2luY2x1ZGUgImFic2wvaGFzaC9oYXNo
X3Rlc3RpbmcuaCIKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKQEAgLTM3LDYgKzM4
LDcgQEAKIAogbmFtZXNwYWNlIHsKIAordXNpbmcgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpD
b3VudGluZ0FsbG9jYXRvcjsKIHVzaW5nIGFic2w6OnRlc3RfaW50ZXJuYWw6OkNvcHlhYmxlTW92
YWJsZUluc3RhbmNlOwogdXNpbmcgYWJzbDo6dGVzdF9pbnRlcm5hbDo6Q29weWFibGVPbmx5SW5z
dGFuY2U7CiB1c2luZyBhYnNsOjp0ZXN0X2ludGVybmFsOjpJbnN0YW5jZVRyYWNrZXI7CkBAIC02
OCwxOCArNzAsMTUgQEAgTUFUQ0hFUl9QKFZhbHVlSXMsIGUsICIiKSB7CiAvLyB0ZXN0X2luc3Rh
bmNlX3RyYWNrZXIuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgSW5zdGFuY2VUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKLVRZUEVEX1RFU1RfQ0FTRV9QKEluc3RhbmNl
VGVzdCk7CitUWVBFRF9URVNUX1NVSVRFX1AoSW5zdGFuY2VUZXN0KTsKIAogLy8gQSBzaW1wbGUg
cmVmZXJlbmNlIGNvdW50ZWQgY2xhc3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHByb3BlciBlbGVt
ZW50cyBhcmUKIC8vIGRlc3Ryb3llZCBpbiB0aGUgZXJhc2UoYmVnaW4sIGVuZCkgdGVzdC4KIGNs
YXNzIFJlZkNvdW50ZWQgewogIHB1YmxpYzoKLSAgUmVmQ291bnRlZChpbnQgdmFsdWUsIGludCog
Y291bnQpIDogdmFsdWVfKHZhbHVlKSwgY291bnRfKGNvdW50KSB7Ci0gICAgUmVmKCk7Ci0gIH0K
KyAgUmVmQ291bnRlZChpbnQgdmFsdWUsIGludCogY291bnQpIDogdmFsdWVfKHZhbHVlKSwgY291
bnRfKGNvdW50KSB7IFJlZigpOyB9CiAKLSAgUmVmQ291bnRlZChjb25zdCBSZWZDb3VudGVkJiB2
KQotICAgICAgOiB2YWx1ZV8odi52YWx1ZV8pLCBjb3VudF8odi5jb3VudF8pIHsKKyAgUmVmQ291
bnRlZChjb25zdCBSZWZDb3VudGVkJiB2KSA6IHZhbHVlXyh2LnZhbHVlXyksIGNvdW50Xyh2LmNv
dW50XykgewogICAgIFJlZigpOwogICB9CiAKQEAgLTEzOCw1NyArMTM3LDYgQEAgc3RhdGljIElu
dFZlYyBGaWxsKGludCBsZW4sIGludCBvZmZzZXQgPSAwKSB7CiAgIHJldHVybiB2OwogfQogCi0v
LyBUaGlzIGlzIGEgc3RhdGVmdWwgYWxsb2NhdG9yLCBidXQgdGhlIHN0YXRlIGxpdmVzIG91dHNp
ZGUgb2YgdGhlCi0vLyBhbGxvY2F0b3IgKGluIHdoYXRldmVyIHRlc3QgaXMgdXNpbmcgdGhlIGFs
bG9jYXRvcikuIFRoaXMgaXMgb2RkCi0vLyBidXQgaGVscHMgaW4gdGVzdHMgd2hlcmUgdGhlIGFs
bG9jYXRvciBpcyBwcm9wYWdhdGVkIGludG8gbmVzdGVkCi0vLyBjb250YWluZXJzIC0gdGhhdCBj
aGFpbiBvZiBhbGxvY2F0b3JzIHVzZXMgdGhlIHNhbWUgc3RhdGUgYW5kIGlzCi0vLyB0aHVzIGVh
c2llciB0byBxdWVyeSBmb3IgYWdncmVnYXRlIGFsbG9jYXRpb24gaW5mb3JtYXRpb24uCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIENvdW50aW5nQWxsb2NhdG9yIDogcHVibGljIHN0ZDo6
YWxsb2NhdG9yPFQ+IHsKLSBwdWJsaWM6Ci0gIHVzaW5nIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8
VD47Ci0gIHVzaW5nIHBvaW50ZXIgPSB0eXBlbmFtZSBBbGxvYzo6cG9pbnRlcjsKLSAgdXNpbmcg
c2l6ZV90eXBlID0gdHlwZW5hbWUgQWxsb2M6OnNpemVfdHlwZTsKLQotICBDb3VudGluZ0FsbG9j
YXRvcigpIDogYnl0ZXNfdXNlZF8obnVsbHB0cikge30KLSAgZXhwbGljaXQgQ291bnRpbmdBbGxv
Y2F0b3IoaW50NjRfdCogYikgOiBieXRlc191c2VkXyhiKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBVPgotICBDb3VudGluZ0FsbG9jYXRvcihjb25zdCBDb3VudGluZ0FsbG9jYXRvcjxVPiYg
eCkKLSAgICAgIDogQWxsb2MoeCksIGJ5dGVzX3VzZWRfKHguYnl0ZXNfdXNlZF8pIHt9Ci0KLSAg
cG9pbnRlciBhbGxvY2F0ZShzaXplX3R5cGUgbiwKLSAgICAgICAgICAgICAgICAgICBzdGQ6OmFs
bG9jYXRvcjx2b2lkPjo6Y29uc3RfcG9pbnRlciBoaW50ID0gbnVsbHB0cikgewotICAgIGFzc2Vy
dChieXRlc191c2VkXyAhPSBudWxscHRyKTsKLSAgICAqYnl0ZXNfdXNlZF8gKz0gbiAqIHNpemVv
ZihUKTsKLSAgICByZXR1cm4gQWxsb2M6OmFsbG9jYXRlKG4sIGhpbnQpOwotICB9Ci0KLSAgdm9p
ZCBkZWFsbG9jYXRlKHBvaW50ZXIgcCwgc2l6ZV90eXBlIG4pIHsKLSAgICBBbGxvYzo6ZGVhbGxv
Y2F0ZShwLCBuKTsKLSAgICBhc3NlcnQoYnl0ZXNfdXNlZF8gIT0gbnVsbHB0cik7Ci0gICAgKmJ5
dGVzX3VzZWRfIC09IG4gKiBzaXplb2YoVCk7Ci0gIH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PgotICBjbGFzcyByZWJpbmQgewotICAgcHVibGljOgotICAgIHVzaW5nIG90aGVyID0gQ291bnRp
bmdBbGxvY2F0b3I8VT47Ci0gIH07Ci0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
b3VudGluZ0FsbG9jYXRvciYgYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb3Vu
dGluZ0FsbG9jYXRvciYgYikgewotICAgIHJldHVybiBhLmJ5dGVzX3VzZWRfID09IGIuYnl0ZXNf
dXNlZF87Ci0gIH0KLQotICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvdW50aW5nQWxs
b2NhdG9yJiBhLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvdW50aW5nQWxsb2Nh
dG9yJiBiKSB7Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLSAgfQotCi0gIGludDY0X3QqIGJ5dGVz
X3VzZWRfOwotfTsKLQogVEVTVChJbnRWZWMsIFNpbXBsZU9wcykgewogICBmb3IgKGludCBsZW4g
PSAwOyBsZW4gPCAyMDsgbGVuKyspIHsKICAgICBJbnRWZWMgdjsKQEAgLTIzOSw2ICsxODcsMTIg
QEAgVEVTVChJbnRWZWMsIFNpbXBsZU9wcykgewogICB9CiB9CiAKK1RFU1QoSW50VmVjLCBQb3BC
YWNrTm9PdmVyZmxvdykgeworICBJbnRWZWMgdiA9IHsxfTsKKyAgdi5wb3BfYmFjaygpOworICBF
WFBFQ1RfRVEodi5zaXplKCksIDApOworfQorCiBURVNUKEludFZlYywgQXRUaHJvd3MpIHsKICAg
SW50VmVjIHYgPSB7MSwgMiwgM307CiAgIEVYUEVDVF9FUSh2LmF0KDIpLCAzKTsKQEAgLTMzMyw3
ICsyODcsNyBAQCBURVNUKFJlZkNvdW50ZWRWZWMsIEVyYXNlQmVnaW5FbmQpIHsKICAgICAgICAg
fQogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGVsZW1lbnRzIGF0IHRoZSBlbmQgYXJlIHBy
ZXNlcnZlZC4KLSAgICAgICAgZm9yIChpbnQgaSA9IGVyYXNlX2VuZDsgaTwgbGVuOyArK2kpIHsK
KyAgICAgICAgZm9yIChpbnQgaSA9IGVyYXNlX2VuZDsgaSA8IGxlbjsgKytpKSB7CiAgICAgICAg
ICAgRVhQRUNUX0VRKDEsIGNvdW50c1tpXSk7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTU5NSwx
MCArNTQ5LDEwIEBAIFRFU1QoSW50VmVjLCBSZXNpemUpIHsKICAgICBzdGF0aWMgY29uc3QgaW50
IGtSZXNpemVFbGVtID0gMTAwMDAwMDsKICAgICBmb3IgKGludCBrID0gMDsgayA8IDEwOyBrKysp
IHsKICAgICAgIC8vIEVubGFyZ2luZyByZXNpemUKLSAgICAgIHYucmVzaXplKGxlbitrLCBrUmVz
aXplRWxlbSk7Ci0gICAgICBFWFBFQ1RfRVEobGVuK2ssIHYuc2l6ZSgpKTsKLSAgICAgIEVYUEVD
VF9MRShsZW4raywgdi5jYXBhY2l0eSgpKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVu
K2s7IGkrKykgeworICAgICAgdi5yZXNpemUobGVuICsgaywga1Jlc2l6ZUVsZW0pOworICAgICAg
RVhQRUNUX0VRKGxlbiArIGssIHYuc2l6ZSgpKTsKKyAgICAgIEVYUEVDVF9MRShsZW4gKyBrLCB2
LmNhcGFjaXR5KCkpOworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW4gKyBrOyBpKyspIHsK
ICAgICAgICAgaWYgKGkgPCBsZW4pIHsKICAgICAgICAgICBFWFBFQ1RfRVEoaSwgdltpXSk7CiAg
ICAgICAgIH0gZWxzZSB7CkBAIC05MDYsOCArODYwLDEwIEBAIFRZUEVEX1RFU1RfUChJbnN0YW5j
ZVRlc3QsIFN3YXApIHsKICAgICAgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyOwogICAgICAgSW5z
dGFuY2VWZWMgYSwgYjsKICAgICAgIGNvbnN0IHNpemVfdCBpbmxpbmVkX2NhcGFjaXR5ID0gYS5j
YXBhY2l0eSgpOworICAgICAgYXV0byBtaW5fbGVuID0gc3RkOjptaW4obDEsIGwyKTsKKyAgICAg
IGF1dG8gbWF4X2xlbiA9IHN0ZDo6bWF4KGwxLCBsMik7CiAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGwxOyBpKyspIGEucHVzaF9iYWNrKEluc3RhbmNlKGkpKTsKLSAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbDI7IGkrKykgYi5wdXNoX2JhY2soSW5zdGFuY2UoMTAwK2kpKTsKKyAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbDI7IGkrKykgYi5wdXNoX2JhY2soSW5zdGFuY2UoMTAwICsgaSkp
OwogICAgICAgRVhQRUNUX0VRKHRyYWNrZXIuaW5zdGFuY2VzKCksIGwxICsgbDIpOwogICAgICAg
dHJhY2tlci5SZXNldENvcGllc01vdmVzU3dhcHMoKTsKICAgICAgIHsKQEAgLTkxOSwxNSArODc1
LDE1IEBAIFRZUEVEX1RFU1RfUChJbnN0YW5jZVRlc3QsIFN3YXApIHsKICAgICAgICAgRVhQRUNU
X0VRKHRyYWNrZXIuc3dhcHMoKSwgMCk7ICAvLyBBbGxvY2F0aW9ucyBhcmUgc3dhcHBlZC4KICAg
ICAgICAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMCk7CiAgICAgICB9IGVsc2UgaWYgKGEu
c2l6ZSgpIDw9IGlubGluZWRfY2FwYWNpdHkgJiYgYi5zaXplKCkgPD0gaW5saW5lZF9jYXBhY2l0
eSkgewotICAgICAgICBFWFBFQ1RfRVEodHJhY2tlci5zd2FwcygpLCBzdGQ6Om1pbihsMSwgbDIp
KTsKLSAgICAgICAgLy8gVE9ETyhic2Ftd2VsKTogVGhpcyBzaG91bGQgdXNlIG1vdmVzIHdoZW4g
dGhlIHR5cGUgaXMgbW92YWJsZS4KLSAgICAgICAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCks
IHN0ZDo6bWF4KGwxLCBsMikgLSBzdGQ6Om1pbihsMSwgbDIpKTsKKyAgICAgICAgRVhQRUNUX0VR
KHRyYWNrZXIuc3dhcHMoKSwgbWluX2xlbik7CisgICAgICAgIEVYUEVDVF9FUSgodHJhY2tlci5t
b3ZlcygpID8gdHJhY2tlci5tb3ZlcygpIDogdHJhY2tlci5jb3BpZXMoKSksCisgICAgICAgICAg
ICAgICAgICBtYXhfbGVuIC0gbWluX2xlbik7CiAgICAgICB9IGVsc2UgewogICAgICAgICAvLyBP
bmUgaXMgYWxsb2NhdGVkIGFuZCB0aGUgb3RoZXIgaXNuJ3QuIFRoZSBhbGxvY2F0aW9uIGlzIHRy
YW5zZmVycmVkCiAgICAgICAgIC8vIHdpdGhvdXQgY29weWluZyBlbGVtZW50cywgYW5kIHRoZSBp
bmxpbmVkIGluc3RhbmNlcyBhcmUgY29waWVkL21vdmVkLgogICAgICAgICBFWFBFQ1RfRVEodHJh
Y2tlci5zd2FwcygpLCAwKTsKLSAgICAgICAgLy8gVE9ETyhic2Ftd2VsKTogVGhpcyBzaG91bGQg
dXNlIG1vdmVzIHdoZW4gdGhlIHR5cGUgaXMgbW92YWJsZS4KLSAgICAgICAgRVhQRUNUX0VRKHRy
YWNrZXIuY29waWVzKCksIHN0ZDo6bWluKGwxLCBsMikpOworICAgICAgICBFWFBFQ1RfRVEoKHRy
YWNrZXIubW92ZXMoKSA/IHRyYWNrZXIubW92ZXMoKSA6IHRyYWNrZXIuY29waWVzKCkpLAorICAg
ICAgICAgICAgICAgICAgbWluX2xlbik7CiAgICAgICB9CiAKICAgICAgIEVYUEVDVF9FUShsMSwg
Yi5zaXplKCkpOwpAQCAtOTc1LDcgKzkzMSw3IEBAIFRFU1QoSW50VmVjLCBFcXVhbEFuZE5vdEVx
dWFsKSB7CiAgICAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7CiAgICAgRVhQRUNUX1RSVUUoYSAhPSBi
KTsKIAotICAgIGJbaV0gPSBiW2ldIC0gMTsgICAgLy8gQmFjayB0byBiZWZvcmUKKyAgICBiW2ld
ID0gYltpXSAtIDE7ICAvLyBCYWNrIHRvIGJlZm9yZQogICAgIEVYUEVDVF9UUlVFKGEgPT0gYik7
CiAgICAgRVhQRUNUX0ZBTFNFKGEgIT0gYik7CiAgIH0KQEAgLTEwNDIsNyArOTk4LDcgQEAgVFlQ
RURfVEVTVF9QKEluc3RhbmNlVGVzdCwgQ291bnRDb25zdHJ1Y3RvcnNEZXN0cnVjdG9ycykgewog
CiAgICAgLy8gcmVzZXJ2ZSgpIG11c3Qgbm90IGluY3JlYXNlIHRoZSBudW1iZXIgb2YgaW5pdGlh
bGl6ZWQgb2JqZWN0cwogICAgIFNDT1BFRF9UUkFDRSgicmVzZXJ2ZSIpOwotICAgIHYucmVzZXJ2
ZShsZW4rMTAwMCk7CisgICAgdi5yZXNlcnZlKGxlbiArIDEwMDApOwogICAgIEVYUEVDVF9FUSh0
cmFja2VyLmluc3RhbmNlcygpLCBsZW4pOwogICAgIEVYUEVDVF9FUSh0cmFja2VyLmNvcGllcygp
ICsgdHJhY2tlci5tb3ZlcygpLCBsZW4pOwogCkBAIC0xMjg4LDkgKzEyNDQsOCBAQCB2b2lkIElu
c3RhbmNlQ291bnRFbGVtQXNzaWduV2l0aEFsbG9jYXRpb25UZXN0KCkgewogICAgIGFic2w6Oklu
bGluZWRWZWN0b3I8SW5zdGFuY2UsIDI+IHYob3JpZ2luYWxfY29udGVudHMuYmVnaW4oKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX2NvbnRlbnRzLmVu
ZCgpKTsKICAgICB2LmFzc2lnbigzLCBJbnN0YW5jZSgxMjMpKTsKLSAgICBFWFBFQ1RfVEhBVCh2
LAotICAgICAgICAgICAgICAgIEFsbE9mKFNpemVJcygzKSwKLSAgICAgICAgICAgICAgICAgICAg
ICBFbGVtZW50c0FyZShWYWx1ZUlzKDEyMyksIFZhbHVlSXMoMTIzKSwgVmFsdWVJcygxMjMpKSkp
OworICAgIEVYUEVDVF9USEFUKHYsIEFsbE9mKFNpemVJcygzKSwgRWxlbWVudHNBcmUoVmFsdWVJ
cygxMjMpLCBWYWx1ZUlzKDEyMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZUlzKDEyMykpKSk7CiAgICAgRVhQRUNUX0xFKHYuc2l6ZSgpLCB2
LmNhcGFjaXR5KCkpOwogICB9CiB9CkBAIC0xNTY5LDggKzE1MjQsOCBAQCBUWVBFRF9URVNUX1Ao
SW5zdGFuY2VUZXN0LCBJbml0aWFsaXplckxpc3RBc3NpZ24pIHsKICAgICBTQ09QRURfVFJBQ0Uo
b3JpZ2luYWxfc2l6ZSk7CiAgICAgYWJzbDo6SW5saW5lZFZlY3RvcjxJbnN0YW5jZSwgMj4gdihv
cmlnaW5hbF9zaXplLCBJbnN0YW5jZSgxMjM0NSkpOwogICAgIHYuYXNzaWduKHtJbnN0YW5jZSgz
KSwgSW5zdGFuY2UoNCksIEluc3RhbmNlKDUpfSk7Ci0gICAgRVhQRUNUX1RIQVQodiwgQWxsT2Yo
U2l6ZUlzKDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzQXJlKFZhbHVlSXMo
MyksIFZhbHVlSXMoNCksIFZhbHVlSXMoNSkpKSk7CisgICAgRVhQRUNUX1RIQVQoCisgICAgICAg
IHYsIEFsbE9mKFNpemVJcygzKSwgRWxlbWVudHNBcmUoVmFsdWVJcygzKSwgVmFsdWVJcyg0KSwg
VmFsdWVJcyg1KSkpKTsKICAgICBFWFBFQ1RfTEUoMywgdi5jYXBhY2l0eSgpKTsKICAgfQogfQpA
QCAtMTU5NSw3ICsxNTUwLDcgQEAgVEVTVChEeW5hbWljVmVjLCBEeW5hbWljVmVjQ29tcGlsZXMp
IHsKIFRFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIENvbnN0cnVjdG9ycykgewogICB1c2luZyBN
eUFsbG9jID0gQ291bnRpbmdBbGxvY2F0b3I8aW50PjsKICAgdXNpbmcgQWxsb2NWZWMgPSBhYnNs
OjpJbmxpbmVkVmVjdG9yPGludCwgNCwgTXlBbGxvYz47Ci0gIGNvbnN0IGludCBpYVtdID0geyAw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3IH07CisgIGNvbnN0IGludCBpYVtdID0gezAsIDEsIDIsIDMs
IDQsIDUsIDYsIDd9OwogICBpbnQ2NF90IGFsbG9jYXRlZCA9IDA7CiAgIE15QWxsb2MgYWxsb2Mo
JmFsbG9jYXRlZCk7CiAgIHsgQWxsb2NWZWMgQUJTTF9BVFRSSUJVVEVfVU5VU0VEIHY7IH0KQEAg
LTE2MTEsNyArMTU2Niw3IEBAIFRFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIENvbnN0cnVjdG9y
cykgewogVEVTVChBbGxvY2F0b3JTdXBwb3J0VGVzdCwgQ291bnRBbGxvY2F0aW9ucykgewogICB1
c2luZyBNeUFsbG9jID0gQ291bnRpbmdBbGxvY2F0b3I8aW50PjsKICAgdXNpbmcgQWxsb2NWZWMg
PSBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgNCwgTXlBbGxvYz47Ci0gIGNvbnN0IGludCBpYVtd
ID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3IH07CisgIGNvbnN0IGludCBpYVtdID0gezAsIDEs
IDIsIDMsIDQsIDUsIDYsIDd9OwogICBpbnQ2NF90IGFsbG9jYXRlZCA9IDA7CiAgIE15QWxsb2Mg
YWxsb2MoJmFsbG9jYXRlZCk7CiAgIHsKQEAgLTE2NzUsOCArMTYzMCw4IEBAIFRFU1QoQWxsb2Nh
dG9yU3VwcG9ydFRlc3QsIFN3YXBCb3RoQWxsb2NhdGVkKSB7CiAgIGludDY0X3QgYWxsb2NhdGVk
MSA9IDA7CiAgIGludDY0X3QgYWxsb2NhdGVkMiA9IDA7CiAgIHsKLSAgICBjb25zdCBpbnQgaWEx
W10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcgfTsKLSAgICBjb25zdCBpbnQgaWEyW10gPSB7
IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDggfTsKKyAgICBjb25zdCBpbnQgaWExW10gPSB7MCwg
MSwgMiwgMywgNCwgNSwgNiwgN307CisgICAgY29uc3QgaW50IGlhMltdID0gezAsIDEsIDIsIDMs
IDQsIDUsIDYsIDcsIDh9OwogICAgIE15QWxsb2MgYTEoJmFsbG9jYXRlZDEpOwogICAgIE15QWxs
b2MgYTIoJmFsbG9jYXRlZDIpOwogICAgIEFsbG9jVmVjIHYxKGlhMSwgaWExICsgQUJTTF9BUlJB
WVNJWkUoaWExKSwgYTEpOwpAQCAtMTcwMCw4ICsxNjU1LDggQEAgVEVTVChBbGxvY2F0b3JTdXBw
b3J0VGVzdCwgU3dhcE9uZUFsbG9jYXRlZCkgewogICBpbnQ2NF90IGFsbG9jYXRlZDEgPSAwOwog
ICBpbnQ2NF90IGFsbG9jYXRlZDIgPSAwOwogICB7Ci0gICAgY29uc3QgaW50IGlhMVtdID0geyAw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3IH07Ci0gICAgY29uc3QgaW50IGlhMltdID0geyAwLCAxLCAy
LCAzIH07CisgICAgY29uc3QgaW50IGlhMVtdID0gezAsIDEsIDIsIDMsIDQsIDUsIDYsIDd9Owor
ICAgIGNvbnN0IGludCBpYTJbXSA9IHswLCAxLCAyLCAzfTsKICAgICBNeUFsbG9jIGExKCZhbGxv
Y2F0ZWQxKTsKICAgICBNeUFsbG9jIGEyKCZhbGxvY2F0ZWQyKTsKICAgICBBbGxvY1ZlYyB2MShp
YTEsIGlhMSArIEFCU0xfQVJSQVlTSVpFKGlhMSksIGExKTsKQEAgLTE3MjAsNDggKzE2NzUsNTMg
QEAgVEVTVChBbGxvY2F0b3JTdXBwb3J0VGVzdCwgU3dhcE9uZUFsbG9jYXRlZCkgewogICBFWFBF
Q1RfVEhBVChhbGxvY2F0ZWQyLCAwKTsKIH0KIAotVEVTVChBbGxvY2F0b3JTdXBwb3J0VGVzdCwg
U2NvcGVkQWxsb2NhdG9yV29ya3MpIHsKK1RFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIFNjb3Bl
ZEFsbG9jYXRvcldvcmtzSW5saW5lZCkgewogICB1c2luZyBTdGRWZWN0b3IgPSBzdGQ6OnZlY3Rv
cjxpbnQsIENvdW50aW5nQWxsb2NhdG9yPGludD4+OwotICB1c2luZyBNeUFsbG9jID0KLSAgICAg
IHN0ZDo6c2NvcGVkX2FsbG9jYXRvcl9hZGFwdG9yPENvdW50aW5nQWxsb2NhdG9yPFN0ZFZlY3Rv
cj4+OwotICB1c2luZyBBbGxvY1ZlYyA9IGFic2w6OklubGluZWRWZWN0b3I8U3RkVmVjdG9yLCA0
LCBNeUFsbG9jPjsKKyAgdXNpbmcgQWxsb2MgPSBDb3VudGluZ0FsbG9jYXRvcjxTdGRWZWN0b3I+
OworICB1c2luZyBTY29wZWRBbGxvYyA9IHN0ZDo6c2NvcGVkX2FsbG9jYXRvcl9hZGFwdG9yPEFs
bG9jPjsKKyAgdXNpbmcgQWxsb2NWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPFN0ZFZlY3Rvciwg
MSwgU2NvcGVkQWxsb2M+OwogCi0gIGludDY0X3QgYWxsb2NhdGVkID0gMDsKLSAgQWxsb2NWZWMg
dmVjKE15QWxsb2N7Q291bnRpbmdBbGxvY2F0b3I8U3RkVmVjdG9yPnsmYWxsb2NhdGVkfX0pOwot
ICBFWFBFQ1RfRVEoYWxsb2NhdGVkLCAwKTsKKyAgaW50NjRfdCB0b3RhbF9hbGxvY2F0ZWRfYnl0
ZV9jb3VudCA9IDA7CiAKLSAgLy8gVGhpcyBkZWZhdWx0IGNvbnN0cnVjdHMgYSB2ZWN0b3I8aW50
PiwgYnV0IHRoZSBhbGxvY2F0b3Igc2hvdWxkIHBhc3MgaXRzZWxmCi0gIC8vIGludG8gdGhlIHZl
Y3RvcjxpbnQ+LgotICAvLyBUaGUgYWJzbDo6SW5saW5lZFZlY3RvciBkb2VzIG5vdCBhbGxvY2F0
ZSBhbnkgbWVtb3J5LgotICAvLyBUaGUgdmVjdG9yPGludD4gZG9lcyBub3QgYWxsb2NhdGUgYW55
IG1lbW9yeS4KLSAgdmVjLnJlc2l6ZSgxKTsKLSAgRVhQRUNUX0VRKGFsbG9jYXRlZCwgMCk7Cisg
IEFsbG9jVmVjIGlubGluZWRfY2FzZShTY29wZWRBbGxvYyhBbGxvYygrJnRvdGFsX2FsbG9jYXRl
ZF9ieXRlX2NvdW50KSkpOwogCi0gIC8vIFdlIG1ha2UgdmVjdG9yPGludD4gYWxsb2NhdGUgbWVt
b3J5LgotICAvLyBJdCBtdXN0IGdvIHRocm91Z2ggdGhlIGFsbG9jYXRvciBldmVuIHRob3VnaCB3
ZSBkaWRuJ3QgY29uc3RydWN0IHRoZQotICAvLyB2ZWN0b3IgZGlyZWN0bHkuCi0gIHZlY1swXS5w
dXNoX2JhY2soMSk7Ci0gIEVYUEVDVF9FUShhbGxvY2F0ZWQsIHNpemVvZihpbnQpICogMSk7Cisg
IC8vIENhbGxlZCBvbmx5IG9uY2UgdG8gcmVtYWluIGlubGluZWQKKyAgaW5saW5lZF9jYXNlLmVt
cGxhY2VfYmFjaygpOwogCi0gIC8vIEFub3RoZXIgYWxsb2NhdGluZyB2ZWN0b3IuCi0gIHZlYy5w
dXNoX2JhY2sodmVjWzBdKTsKLSAgRVhQRUNUX0VRKGFsbG9jYXRlZCwgc2l6ZW9mKGludCkgKiAy
KTsKKyAgaW50NjRfdCBhYnNsX3Jlc3BvbnNpYmxlX2Zvcl9jb3VudCA9IHRvdGFsX2FsbG9jYXRl
ZF9ieXRlX2NvdW50OworICBFWFBFQ1RfRVEoYWJzbF9yZXNwb25zaWJsZV9mb3JfY291bnQsIDAp
OwogCi0gIC8vIE92ZXJmbG93IHRoZSBpbmxpbmVkIG1lbW9yeS4KLSAgLy8gVGhlIGFic2w6Oklu
bGluZWRWZWN0b3Igd2lsbCBub3cgYWxsb2NhdGUuCi0gIHZlYy5yZXNpemUoNSk7Ci0gIEVYUEVD
VF9FUShhbGxvY2F0ZWQsIHNpemVvZihpbnQpICogMiArIHNpemVvZihTdGRWZWN0b3IpICogOCk7
CisgIGlubGluZWRfY2FzZVswXS5lbXBsYWNlX2JhY2soKTsKKyAgRVhQRUNUX0dUKHRvdGFsX2Fs
bG9jYXRlZF9ieXRlX2NvdW50LCBhYnNsX3Jlc3BvbnNpYmxlX2Zvcl9jb3VudCk7CiAKLSAgLy8g
QWRkaW5nIG9uZSBtb3JlIGluIGV4dGVybmFsIG1vZGUgc2hvdWxkIGFsc28gd29yay4KLSAgdmVj
LnB1c2hfYmFjayh2ZWNbMF0pOwotICBFWFBFQ1RfRVEoYWxsb2NhdGVkLCBzaXplb2YoaW50KSAq
IDMgKyBzaXplb2YoU3RkVmVjdG9yKSAqIDgpOworICBpbmxpbmVkX2Nhc2UuY2xlYXIoKTsKKyAg
aW5saW5lZF9jYXNlLnNocmlua190b19maXQoKTsKKyAgRVhQRUNUX0VRKHRvdGFsX2FsbG9jYXRl
ZF9ieXRlX2NvdW50LCAwKTsKK30KIAotICAvLyBBbmQgZXh0ZW5kaW5nIHRoZXNlIHNob3VsZCBz
dGlsbCB3b3JrLgotICB2ZWNbMF0ucHVzaF9iYWNrKDEpOwotICBFWFBFQ1RfRVEoYWxsb2NhdGVk
LCBzaXplb2YoaW50KSAqIDQgKyBzaXplb2YoU3RkVmVjdG9yKSAqIDgpOworVEVTVChBbGxvY2F0
b3JTdXBwb3J0VGVzdCwgU2NvcGVkQWxsb2NhdG9yV29ya3NBbGxvY2F0ZWQpIHsKKyAgdXNpbmcg
U3RkVmVjdG9yID0gc3RkOjp2ZWN0b3I8aW50LCBDb3VudGluZ0FsbG9jYXRvcjxpbnQ+PjsKKyAg
dXNpbmcgQWxsb2MgPSBDb3VudGluZ0FsbG9jYXRvcjxTdGRWZWN0b3I+OworICB1c2luZyBTY29w
ZWRBbGxvYyA9IHN0ZDo6c2NvcGVkX2FsbG9jYXRvcl9hZGFwdG9yPEFsbG9jPjsKKyAgdXNpbmcg
QWxsb2NWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPFN0ZFZlY3RvciwgMSwgU2NvcGVkQWxsb2M+
OwogCi0gIHZlYy5jbGVhcigpOwotICBFWFBFQ1RfRVEoYWxsb2NhdGVkLCAwKTsKKyAgaW50NjRf
dCB0b3RhbF9hbGxvY2F0ZWRfYnl0ZV9jb3VudCA9IDA7CisKKyAgQWxsb2NWZWMgYWxsb2NhdGVk
X2Nhc2UoU2NvcGVkQWxsb2MoQWxsb2MoKyZ0b3RhbF9hbGxvY2F0ZWRfYnl0ZV9jb3VudCkpKTsK
KworICAvLyBDYWxsZWQgdHdpY2UgdG8gZm9yY2UgaW50byBiZWluZyBhbGxvY2F0ZWQKKyAgYWxs
b2NhdGVkX2Nhc2UuZW1wbGFjZV9iYWNrKCk7CisgIGFsbG9jYXRlZF9jYXNlLmVtcGxhY2VfYmFj
aygpOworCisgIGludDY0X3QgYWJzbF9yZXNwb25zaWJsZV9mb3JfY291bnQgPSB0b3RhbF9hbGxv
Y2F0ZWRfYnl0ZV9jb3VudDsKKyAgRVhQRUNUX0dUKGFic2xfcmVzcG9uc2libGVfZm9yX2NvdW50
LCAwKTsKKworICBhbGxvY2F0ZWRfY2FzZVsxXS5lbXBsYWNlX2JhY2soKTsKKyAgRVhQRUNUX0dU
KHRvdGFsX2FsbG9jYXRlZF9ieXRlX2NvdW50LCBhYnNsX3Jlc3BvbnNpYmxlX2Zvcl9jb3VudCk7
CisKKyAgYWxsb2NhdGVkX2Nhc2UuY2xlYXIoKTsKKyAgYWxsb2NhdGVkX2Nhc2Uuc2hyaW5rX3Rv
X2ZpdCgpOworICBFWFBFQ1RfRVEodG90YWxfYWxsb2NhdGVkX2J5dGVfY291bnQsIDApOwogfQog
CiBURVNUKEFsbG9jYXRvclN1cHBvcnRUZXN0LCBTaXplQWxsb2NDb25zdHJ1Y3RvcikgewpAQCAt
MTc5MCw0ICsxNzUwLDIzIEBAIFRFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIFNpemVBbGxvY0Nv
bnN0cnVjdG9yKSB7CiAgIH0KIH0KIAorVEVTVChJbmxpbmVkVmVjdG9yVGVzdCwgQWJzbEhhc2hW
YWx1ZVdvcmtzKSB7CisgIHVzaW5nIFYgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgND47Cisg
IHN0ZDo6dmVjdG9yPFY+IGNhc2VzOworCisgIC8vIEdlbmVyYXRlIGEgdmFyaWV0eSBvZiB2ZWN0
b3JzIHNvbWUgb2YgdGhlc2UgYXJlIHNtYWxsIGVub3VnaCBmb3IgdGhlIGlubGluZQorICAvLyBz
cGFjZSBidXQgYXJlIHN0b3JlZCBvdXQgb2YgbGluZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAx
MDsgKytpKSB7CisgICAgViB2OworICAgIGZvciAoaW50IGogPSAwOyBqIDwgaTsgKytqKSB7Cisg
ICAgICB2LnB1c2hfYmFjayhqKTsKKyAgICB9CisgICAgY2FzZXMucHVzaF9iYWNrKHYpOworICAg
IHYucmVzaXplKGkgJSA0KTsKKyAgICBjYXNlcy5wdXNoX2JhY2sodik7CisgIH0KKworICBFWFBF
Q1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNhc2Vz
KSk7Cit9CisKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9idHJlZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2J0cmVl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk1NjFhNGQ2MmZlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2J0cmVlLmgKQEAgLTAs
MCArMSwyNjEwIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwor
Ly8gQSBidHJlZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU1RMIHNldCBhbmQgbWFwIGludGVyZmFj
ZXMuIEEgYnRyZWUgaXMgc21hbGxlcgorLy8gYW5kIGdlbmVyYWxseSBhbHNvIGZhc3RlciB0aGFu
IFNUTCBzZXQvbWFwIChyZWZlciB0byB0aGUgYmVuY2htYXJrcyBiZWxvdykuCisvLyBUaGUgcmVk
LWJsYWNrIHRyZWUgaW1wbGVtZW50YXRpb24gb2YgU1RMIHNldC9tYXAgaGFzIGFuIG92ZXJoZWFk
IG9mIDMKKy8vIHBvaW50ZXJzIChsZWZ0LCByaWdodCBhbmQgcGFyZW50KSBwbHVzIHRoZSBub2Rl
IGNvbG9yIGluZm9ybWF0aW9uIGZvciBlYWNoCisvLyBzdG9yZWQgdmFsdWUuIFNvIGEgc2V0PGlu
dDMyX3Q+IGNvbnN1bWVzIDQwIGJ5dGVzIGZvciBlYWNoIHZhbHVlIHN0b3JlZCBpbgorLy8gNjQt
Yml0IG1vZGUuIFRoaXMgYnRyZWUgaW1wbGVtZW50YXRpb24gc3RvcmVzIG11bHRpcGxlIHZhbHVl
cyBvbiBmaXhlZAorLy8gc2l6ZSBub2RlcyAodXN1YWxseSAyNTYgYnl0ZXMpIGFuZCBkb2Vzbid0
IHN0b3JlIGNoaWxkIHBvaW50ZXJzIGZvciBsZWFmCisvLyBub2Rlcy4gVGhlIHJlc3VsdCBpcyB0
aGF0IGEgYnRyZWVfc2V0PGludDMyX3Q+IG1heSB1c2UgbXVjaCBsZXNzIG1lbW9yeSBwZXIKKy8v
IHN0b3JlZCB2YWx1ZS4gRm9yIHRoZSByYW5kb20gaW5zZXJ0aW9uIGJlbmNobWFyayBpbiBidHJl
ZV9iZW5jaC5jYywgYQorLy8gYnRyZWVfc2V0PGludDMyX3Q+IHdpdGggbm9kZS1zaXplIG9mIDI1
NiB1c2VzIDUuMSBieXRlcyBwZXIgc3RvcmVkIHZhbHVlLgorLy8KKy8vIFRoZSBwYWNraW5nIG9m
IG11bHRpcGxlIHZhbHVlcyBvbiB0byBlYWNoIG5vZGUgb2YgYSBidHJlZSBoYXMgYW5vdGhlciBl
ZmZlY3QKKy8vIGJlc2lkZXMgYmV0dGVyIHNwYWNlIHV0aWxpemF0aW9uOiBiZXR0ZXIgY2FjaGUg
bG9jYWxpdHkgZHVlIHRvIGZld2VyIGNhY2hlCisvLyBsaW5lcyBiZWluZyBhY2Nlc3NlZC4gQmV0
dGVyIGNhY2hlIGxvY2FsaXR5IHRyYW5zbGF0ZXMgaW50byBmYXN0ZXIKKy8vIG9wZXJhdGlvbnMu
CisvLworLy8gQ0FWRUFUUworLy8KKy8vIEluc2VydGlvbnMgYW5kIGRlbGV0aW9ucyBvbiBhIGJ0
cmVlIGNhbiBjYXVzZSBzcGxpdHRpbmcsIG1lcmdpbmcgb3IKKy8vIHJlYmFsYW5jaW5nIG9mIGJ0
cmVlIG5vZGVzLiBBbmQgZXZlbiB3aXRob3V0IHRoZXNlIG9wZXJhdGlvbnMsIGluc2VydGlvbnMK
Ky8vIGFuZCBkZWxldGlvbnMgb24gYSBidHJlZSB3aWxsIG1vdmUgdmFsdWVzIGFyb3VuZCB3aXRo
aW4gYSBub2RlLiBJbiBib3RoCisvLyBjYXNlcywgdGhlIHJlc3VsdCBpcyB0aGF0IGluc2VydGlv
bnMgYW5kIGRlbGV0aW9ucyBjYW4gaW52YWxpZGF0ZSBpdGVyYXRvcnMKKy8vIHBvaW50aW5nIHRv
IHZhbHVlcyBvdGhlciB0aGFuIHRoZSBvbmUgYmVpbmcgaW5zZXJ0ZWQvZGVsZXRlZC4gVGhlcmVm
b3JlLCB0aGlzCisvLyBjb250YWluZXIgZG9lcyBub3QgcHJvdmlkZSBwb2ludGVyIHN0YWJpbGl0
eS4gVGhpcyBpcyBub3RhYmx5IGRpZmZlcmVudCBmcm9tCisvLyBTVEwgc2V0L21hcCB3aGljaCB0
YWtlcyBjYXJlIHRvIG5vdCBpbnZhbGlkYXRlIGl0ZXJhdG9ycyBvbiBpbnNlcnQvZXJhc2UKKy8v
IGV4Y2VwdCwgb2YgY291cnNlLCBmb3IgaXRlcmF0b3JzIHBvaW50aW5nIHRvIHRoZSB2YWx1ZSBi
ZWluZyBlcmFzZWQuICBBCisvLyBwYXJ0aWFsIHdvcmthcm91bmQgd2hlbiBlcmFzaW5nIGlzIGF2
YWlsYWJsZTogZXJhc2UoKSByZXR1cm5zIGFuIGl0ZXJhdG9yCisvLyBwb2ludGluZyB0byB0aGUg
aXRlbSBqdXN0IGFmdGVyIHRoZSBvbmUgdGhhdCB3YXMgZXJhc2VkIChvciBlbmQoKSBpZiBub25l
CisvLyBleGlzdHMpLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0JUUkVFX0hf
CisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0JUUkVFX0hfCisKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1
ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgor
I2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxuZXc+Cisj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxp
dHk+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvY29tbW9uLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvY29tcHJlc3NlZF90dXBsZS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L2NvbnRhaW5lcl9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9s
YXlvdXQuaCIKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNs
L21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcu
aCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL2NvbXBhcmUuaCIKKyNpbmNsdWRlICJhYnNsL3V0aWxp
dHkvdXRpbGl0eS5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2lu
dGVybmFsIHsKKworLy8gQSBoZWxwZXIgY2xhc3MgdGhhdCBpbmRpY2F0ZXMgaWYgdGhlIENvbXBh
cmUgcGFyYW1ldGVyIGlzIGEga2V5LWNvbXBhcmUtdG8KKy8vIGNvbXBhcmF0b3IuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgVD4KK3VzaW5nIGJ0cmVlX2lzX2tleV9jb21w
YXJlX3RvID0KKyAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPGFic2w6OnJlc3VsdF9vZl90PENvbXBh
cmUoY29uc3QgVCAmLCBjb25zdCBUICYpPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
OndlYWtfb3JkZXJpbmc+OworCitzdHJ1Y3QgU3RyaW5nQnRyZWVEZWZhdWx0TGVzcyB7CisgIHVz
aW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKworICBTdHJpbmdCdHJlZURlZmF1bHRMZXNzKCkg
PSBkZWZhdWx0OworCisgIC8vIENvbXBhdGliaWxpdHkgY29uc3RydWN0b3IuCisgIFN0cmluZ0J0
cmVlRGVmYXVsdExlc3Moc3RkOjpsZXNzPHN0ZDo6c3RyaW5nPikge30gIC8vIE5PTElOVAorICBT
dHJpbmdCdHJlZURlZmF1bHRMZXNzKHN0ZDo6bGVzczxzdHJpbmdfdmlldz4pIHt9ICAvLyBOT0xJ
TlQKKworICBhYnNsOjp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yKCkoYWJzbDo6c3RyaW5nX3ZpZXcg
bGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcg
cmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0
X2FzX29yZGVyaW5nKGxocy5jb21wYXJlKHJocykpOworICB9Cit9OworCitzdHJ1Y3QgU3RyaW5n
QnRyZWVEZWZhdWx0R3JlYXRlciB7CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKwor
ICBTdHJpbmdCdHJlZURlZmF1bHRHcmVhdGVyKCkgPSBkZWZhdWx0OworCisgIFN0cmluZ0J0cmVl
RGVmYXVsdEdyZWF0ZXIoc3RkOjpncmVhdGVyPHN0ZDo6c3RyaW5nPikge30gIC8vIE5PTElOVAor
ICBTdHJpbmdCdHJlZURlZmF1bHRHcmVhdGVyKHN0ZDo6Z3JlYXRlcjxzdHJpbmdfdmlldz4pIHt9
ICAvLyBOT0xJTlQKKworICBhYnNsOjp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yKCkoYWJzbDo6c3Ry
aW5nX3ZpZXcgbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3Ry
aW5nX3ZpZXcgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbXBhcmVfaW50ZXJuYWw6OmNvbXBh
cmVfcmVzdWx0X2FzX29yZGVyaW5nKHJocy5jb21wYXJlKGxocykpOworICB9Cit9OworCisvLyBB
IGhlbHBlciBjbGFzcyB0byBjb252ZXJ0IGEgYm9vbGVhbiBjb21wYXJpc29uIGludG8gYSB0aHJl
ZS13YXkgImNvbXBhcmUtdG8iCisvLyBjb21wYXJpc29uIHRoYXQgcmV0dXJucyBhIG5lZ2F0aXZl
IHZhbHVlIHRvIGluZGljYXRlIGxlc3MtdGhhbiwgemVybyB0bworLy8gaW5kaWNhdGUgZXF1YWxp
dHkgYW5kIGEgcG9zaXRpdmUgdmFsdWUgdG8gaW5kaWNhdGUgZ3JlYXRlci10aGFuLiBUaGlzIGhl
bHBlcgorLy8gY2xhc3MgaXMgc3BlY2lhbGl6ZWQgZm9yIGxlc3M8c3RkOjpzdHJpbmc+LCBncmVh
dGVyPHN0ZDo6c3RyaW5nPiwKKy8vIGxlc3M8c3RyaW5nX3ZpZXc+LCBhbmQgZ3JlYXRlcjxzdHJp
bmdfdmlldz4uCisvLworLy8ga2V5X2NvbXBhcmVfdG9fYWRhcHRlciBpcyBwcm92aWRlZCBzbyB0
aGF0IGJ0cmVlIHVzZXJzCisvLyBhdXRvbWF0aWNhbGx5IGdldCB0aGUgbW9yZSBlZmZpY2llbnQg
Y29tcGFyZS10byBjb2RlIHdoZW4gdXNpbmcgY29tbW9uCisvLyBnb29nbGUgc3RyaW5nIHR5cGVz
IHdpdGggY29tbW9uIGNvbXBhcmlzb24gZnVuY3RvcnMuCisvLyBUaGVzZSBzdHJpbmctbGlrZSBz
cGVjaWFsaXphdGlvbnMgYWxzbyB0dXJuIG9uIGhldGVyb2dlbmVvdXMgbG9va3VwIGJ5CisvLyBk
ZWZhdWx0LgordGVtcGxhdGUgPHR5cGVuYW1lIENvbXBhcmU+CitzdHJ1Y3Qga2V5X2NvbXBhcmVf
dG9fYWRhcHRlciB7CisgIHVzaW5nIHR5cGUgPSBDb21wYXJlOworfTsKKwordGVtcGxhdGUgPD4K
K3N0cnVjdCBrZXlfY29tcGFyZV90b19hZGFwdGVyPHN0ZDo6bGVzczxzdGQ6OnN0cmluZz4+IHsK
KyAgdXNpbmcgdHlwZSA9IFN0cmluZ0J0cmVlRGVmYXVsdExlc3M7Cit9OworCit0ZW1wbGF0ZSA8
Pgorc3RydWN0IGtleV9jb21wYXJlX3RvX2FkYXB0ZXI8c3RkOjpncmVhdGVyPHN0ZDo6c3RyaW5n
Pj4geworICB1c2luZyB0eXBlID0gU3RyaW5nQnRyZWVEZWZhdWx0R3JlYXRlcjsKK307CisKK3Rl
bXBsYXRlIDw+CitzdHJ1Y3Qga2V5X2NvbXBhcmVfdG9fYWRhcHRlcjxzdGQ6Omxlc3M8YWJzbDo6
c3RyaW5nX3ZpZXc+PiB7CisgIHVzaW5nIHR5cGUgPSBTdHJpbmdCdHJlZURlZmF1bHRMZXNzOwor
fTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBrZXlfY29tcGFyZV90b19hZGFwdGVyPHN0ZDo6Z3Jl
YXRlcjxhYnNsOjpzdHJpbmdfdmlldz4+IHsKKyAgdXNpbmcgdHlwZSA9IFN0cmluZ0J0cmVlRGVm
YXVsdEdyZWF0ZXI7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBDb21w
YXJlLCB0eXBlbmFtZSBBbGxvYywgaW50IFRhcmdldE5vZGVTaXplLAorICAgICAgICAgIGJvb2wg
TXVsdGksIHR5cGVuYW1lIFNsb3RQb2xpY3k+CitzdHJ1Y3QgY29tbW9uX3BhcmFtcyB7CisgIC8v
IElmIENvbXBhcmUgaXMgYSBjb21tb24gY29tcGFyYXRvciBmb3IgYSBzdGQ6OnN0cmluZy1saWtl
IHR5cGUsIHRoZW4gd2UgYWRhcHQgaXQKKyAgLy8gdG8gdXNlIGhldGVyb2dlbmVvdXMgbG9va3Vw
IGFuZCB0byBiZSBhIGtleS1jb21wYXJlLXRvIGNvbXBhcmF0b3IuCisgIHVzaW5nIGtleV9jb21w
YXJlID0gdHlwZW5hbWUga2V5X2NvbXBhcmVfdG9fYWRhcHRlcjxDb21wYXJlPjo6dHlwZTsKKyAg
Ly8gQSB0eXBlIHdoaWNoIGluZGljYXRlcyBpZiB3ZSBoYXZlIGEga2V5LWNvbXBhcmUtdG8gZnVu
Y3RvciBvciBhIHBsYWluIG9sZAorICAvLyBrZXktY29tcGFyZSBmdW5jdG9yLgorICB1c2luZyBp
c19rZXlfY29tcGFyZV90byA9IGJ0cmVlX2lzX2tleV9jb21wYXJlX3RvPGtleV9jb21wYXJlLCBL
ZXk+OworCisgIHVzaW5nIGFsbG9jYXRvcl90eXBlID0gQWxsb2M7CisgIHVzaW5nIGtleV90eXBl
ID0gS2V5OworICB1c2luZyBzaXplX3R5cGUgPSBzdGQ6Om1ha2Vfc2lnbmVkPHNpemVfdD46OnR5
cGU7CisgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHB0cmRpZmZfdDsKKworICAvLyBUcnVlIGlm
IHRoaXMgaXMgYSBtdWx0aXNldCBvciBtdWx0aW1hcC4KKyAgdXNpbmcgaXNfbXVsdGlfY29udGFp
bmVyID0gc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBNdWx0aT47CisKKyAgdXNpbmcgc2xv
dF9wb2xpY3kgPSBTbG90UG9saWN5OworICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBzbG90
X3BvbGljeTo6c2xvdF90eXBlOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgc2xvdF9w
b2xpY3k6OnZhbHVlX3R5cGU7CisgIHVzaW5nIGluaXRfdHlwZSA9IHR5cGVuYW1lIHNsb3RfcG9s
aWN5OjptdXRhYmxlX3ZhbHVlX3R5cGU7CisgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlICo7
CisgIHVzaW5nIGNvbnN0X3BvaW50ZXIgPSBjb25zdCB2YWx1ZV90eXBlICo7CisgIHVzaW5nIHJl
ZmVyZW5jZSA9IHZhbHVlX3R5cGUgJjsKKyAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0gY29uc3Qg
dmFsdWVfdHlwZSAmOworCisgIGVudW0geworICAgIGtUYXJnZXROb2RlU2l6ZSA9IFRhcmdldE5v
ZGVTaXplLAorCisgICAgLy8gVXBwZXIgYm91bmQgZm9yIHRoZSBhdmFpbGFibGUgc3BhY2UgZm9y
IHZhbHVlcy4gVGhpcyBpcyBsYXJnZXN0IGZvciBsZWFmCisgICAgLy8gbm9kZXMsIHdoaWNoIGhh
dmUgb3ZlcmhlYWQgb2YgYXQgbGVhc3QgYSBwb2ludGVyICsgNCBieXRlcyAoZm9yIHN0b3JpbmcK
KyAgICAvLyAzIGZpZWxkX3R5cGVzIGFuZCBhbiBlbnVtKS4KKyAgICBrTm9kZVZhbHVlU3BhY2Ug
PQorICAgICAgICBUYXJnZXROb2RlU2l6ZSAtIC8qbWluaW11bSBvdmVyaGVhZD0qLyhzaXplb2Yo
dm9pZCAqKSArIDQpLAorICB9OworCisgIC8vIFRoaXMgaXMgYW4gaW50ZWdyYWwgdHlwZSBsYXJn
ZSBlbm91Z2ggdG8gaG9sZCBhcyBtYW55CisgIC8vIFZhbHVlU2l6ZS12YWx1ZXMgYXMgd2lsbCBm
aXQgYSBub2RlIG9mIFRhcmdldE5vZGVTaXplIGJ5dGVzLgorICB1c2luZyBub2RlX2NvdW50X3R5
cGUgPQorICAgICAgYWJzbDo6Y29uZGl0aW9uYWxfdDwoa05vZGVWYWx1ZVNwYWNlIC8gc2l6ZW9m
KHZhbHVlX3R5cGUpID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ4X3Q+OjptYXgpKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MTZfdCwgdWludDhfdD47ICAvLyBOT0xJTlQKKworICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMg
YXJlIG5lY2Vzc2FyeSBmb3IgcGFzc2luZyB0aGlzIHN0cnVjdCBhcyBQb2xpY3lUcmFpdHMKKyAg
Ly8gZm9yIG5vZGVfaGFuZGxlIGFuZC9vciBhcmUgdXNlZCB3aXRoaW4gYnRyZWUuCisgIHN0YXRp
YyB2YWx1ZV90eXBlICZlbGVtZW50KHNsb3RfdHlwZSAqc2xvdCkgeworICAgIHJldHVybiBzbG90
X3BvbGljeTo6ZWxlbWVudChzbG90KTsKKyAgfQorICBzdGF0aWMgY29uc3QgdmFsdWVfdHlwZSAm
ZWxlbWVudChjb25zdCBzbG90X3R5cGUgKnNsb3QpIHsKKyAgICByZXR1cm4gc2xvdF9wb2xpY3k6
OmVsZW1lbnQoc2xvdCk7CisgIH0KKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdChBbGxvYyAqYWxsb2MsIHNsb3RfdHlwZSAqc2xvdCwgQXJncyAmJi4u
LiBhcmdzKSB7CisgICAgc2xvdF9wb2xpY3k6OmNvbnN0cnVjdChhbGxvYywgc2xvdCwgc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxs
b2MgKmFsbG9jLCBzbG90X3R5cGUgKnNsb3QsIHNsb3RfdHlwZSAqb3RoZXIpIHsKKyAgICBzbG90
X3BvbGljeTo6Y29uc3RydWN0KGFsbG9jLCBzbG90LCBvdGhlcik7CisgIH0KKyAgc3RhdGljIHZv
aWQgZGVzdHJveShBbGxvYyAqYWxsb2MsIHNsb3RfdHlwZSAqc2xvdCkgeworICAgIHNsb3RfcG9s
aWN5OjpkZXN0cm95KGFsbG9jLCBzbG90KTsKKyAgfQorICBzdGF0aWMgdm9pZCB0cmFuc2ZlcihB
bGxvYyAqYWxsb2MsIHNsb3RfdHlwZSAqbmV3X3Nsb3QsIHNsb3RfdHlwZSAqb2xkX3Nsb3QpIHsK
KyAgICBjb25zdHJ1Y3QoYWxsb2MsIG5ld19zbG90LCBvbGRfc2xvdCk7CisgICAgZGVzdHJveShh
bGxvYywgb2xkX3Nsb3QpOworICB9CisgIHN0YXRpYyB2b2lkIHN3YXAoQWxsb2MgKmFsbG9jLCBz
bG90X3R5cGUgKmEsIHNsb3RfdHlwZSAqYikgeworICAgIHNsb3RfcG9saWN5Ojpzd2FwKGFsbG9j
LCBhLCBiKTsKKyAgfQorICBzdGF0aWMgdm9pZCBtb3ZlKEFsbG9jICphbGxvYywgc2xvdF90eXBl
ICpzcmMsIHNsb3RfdHlwZSAqZGVzdCkgeworICAgIHNsb3RfcG9saWN5Ojptb3ZlKGFsbG9jLCBz
cmMsIGRlc3QpOworICB9CisgIHN0YXRpYyB2b2lkIG1vdmUoQWxsb2MgKmFsbG9jLCBzbG90X3R5
cGUgKmZpcnN0LCBzbG90X3R5cGUgKmxhc3QsCisgICAgICAgICAgICAgICAgICAgc2xvdF90eXBl
ICpyZXN1bHQpIHsKKyAgICBzbG90X3BvbGljeTo6bW92ZShhbGxvYywgZmlyc3QsIGxhc3QsIHJl
c3VsdCk7CisgIH0KK307CisKKy8vIEEgcGFyYW1ldGVycyBzdHJ1Y3R1cmUgZm9yIGhvbGRpbmcg
dGhlIHR5cGUgcGFyYW1ldGVycyBmb3IgYSBidHJlZV9tYXAuCisvLyBDb21wYXJlIGFuZCBBbGxv
YyBzaG91bGQgYmUgbm90aHJvdyBjb3B5LWNvbnN0cnVjdGlibGUuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBEYXRhLCB0eXBlbmFtZSBDb21wYXJlLCB0eXBlbmFtZSBBbGxvYywK
KyAgICAgICAgICBpbnQgVGFyZ2V0Tm9kZVNpemUsIGJvb2wgTXVsdGk+CitzdHJ1Y3QgbWFwX3Bh
cmFtcyA6IGNvbW1vbl9wYXJhbXM8S2V5LCBDb21wYXJlLCBBbGxvYywgVGFyZ2V0Tm9kZVNpemUs
IE11bHRpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcF9zbG90X3BvbGlj
eTxLZXksIERhdGE+PiB7CisgIHVzaW5nIHN1cGVyX3R5cGUgPSB0eXBlbmFtZSBtYXBfcGFyYW1z
Ojpjb21tb25fcGFyYW1zOworICB1c2luZyBtYXBwZWRfdHlwZSA9IERhdGE7CisgIC8vIFRoaXMg
dHlwZSBhbGxvd3MgdXMgdG8gbW92ZSBrZXlzIHdoZW4gaXQgaXMgc2FmZSB0byBkbyBzby4gSXQg
aXMgc2FmZQorICAvLyBmb3IgbWFwcyBpbiB3aGljaCB2YWx1ZV90eXBlIGFuZCBtdXRhYmxlX3Zh
bHVlX3R5cGUgYXJlIGxheW91dCBjb21wYXRpYmxlLgorICB1c2luZyBzbG90X3BvbGljeSA9IHR5
cGVuYW1lIHN1cGVyX3R5cGU6OnNsb3RfcG9saWN5OworICB1c2luZyBzbG90X3R5cGUgPSB0eXBl
bmFtZSBzdXBlcl90eXBlOjpzbG90X3R5cGU7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFt
ZSBzdXBlcl90eXBlOjp2YWx1ZV90eXBlOworICB1c2luZyBpbml0X3R5cGUgPSB0eXBlbmFtZSBz
dXBlcl90eXBlOjppbml0X3R5cGU7CisKKyAgdXNpbmcga2V5X2NvbXBhcmUgPSB0eXBlbmFtZSBz
dXBlcl90eXBlOjprZXlfY29tcGFyZTsKKyAgLy8gSW5oZXJpdCBmcm9tIGtleV9jb21wYXJlIGZv
ciBlbXB0eSBiYXNlIGNsYXNzIG9wdGltaXphdGlvbi4KKyAgc3RydWN0IHZhbHVlX2NvbXBhcmUg
OiBwcml2YXRlIGtleV9jb21wYXJlIHsKKyAgICB2YWx1ZV9jb21wYXJlKCkgPSBkZWZhdWx0Owor
ICAgIGV4cGxpY2l0IHZhbHVlX2NvbXBhcmUoY29uc3Qga2V5X2NvbXBhcmUgJmNtcCkgOiBrZXlf
Y29tcGFyZShjbXApIHt9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
KyAgICBhdXRvIG9wZXJhdG9yKCkoY29uc3QgVCAmbGVmdCwgY29uc3QgVSAmcmlnaHQpIGNvbnN0
CisgICAgICAgIC0+IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxrZXlfY29tcGFyZT4oKShsZWZ0LmZp
cnN0LCByaWdodC5maXJzdCkpIHsKKyAgICAgIHJldHVybiBrZXlfY29tcGFyZTo6b3BlcmF0b3Io
KShsZWZ0LmZpcnN0LCByaWdodC5maXJzdCk7CisgICAgfQorICB9OworICB1c2luZyBpc19tYXBf
Y29udGFpbmVyID0gc3RkOjp0cnVlX3R5cGU7CisKKyAgc3RhdGljIGNvbnN0IEtleSAma2V5KGNv
bnN0IHZhbHVlX3R5cGUgJngpIHsgcmV0dXJuIHguZmlyc3Q7IH0KKyAgc3RhdGljIGNvbnN0IEtl
eSAma2V5KGNvbnN0IGluaXRfdHlwZSAmeCkgeyByZXR1cm4geC5maXJzdDsgfQorICBzdGF0aWMg
Y29uc3QgS2V5ICZrZXkoY29uc3Qgc2xvdF90eXBlICp4KSB7IHJldHVybiBzbG90X3BvbGljeTo6
a2V5KHgpOyB9CisgIHN0YXRpYyBtYXBwZWRfdHlwZSAmdmFsdWUodmFsdWVfdHlwZSAqdmFsdWUp
IHsgcmV0dXJuIHZhbHVlLT5zZWNvbmQ7IH0KK307CisKKy8vIFRoaXMgdHlwZSBpbXBsZW1lbnRz
IHRoZSBuZWNlc3NhcnkgZnVuY3Rpb25zIGZyb20gdGhlCisvLyBhYnNsOjpjb250YWluZXJfaW50
ZXJuYWw6OnNsb3RfdHlwZSBpbnRlcmZhY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5Pgorc3Ry
dWN0IHNldF9zbG90X3BvbGljeSB7CisgIHVzaW5nIHNsb3RfdHlwZSA9IEtleTsKKyAgdXNpbmcg
dmFsdWVfdHlwZSA9IEtleTsKKyAgdXNpbmcgbXV0YWJsZV92YWx1ZV90eXBlID0gS2V5OworCisg
IHN0YXRpYyB2YWx1ZV90eXBlICZlbGVtZW50KHNsb3RfdHlwZSAqc2xvdCkgeyByZXR1cm4gKnNs
b3Q7IH0KKyAgc3RhdGljIGNvbnN0IHZhbHVlX3R5cGUgJmVsZW1lbnQoY29uc3Qgc2xvdF90eXBl
ICpzbG90KSB7IHJldHVybiAqc2xvdDsgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywg
Y2xhc3MuLi4gQXJncz4KKyAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9jICphbGxvYywgc2xv
dF90eXBlICpzbG90LCBBcmdzICYmLi4uIGFyZ3MpIHsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJh
aXRzPEFsbG9jPjo6Y29uc3RydWN0KCphbGxvYywgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cisg
IH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVj
dChBbGxvYyAqYWxsb2MsIHNsb3RfdHlwZSAqc2xvdCwgc2xvdF90eXBlICpvdGhlcikgeworICAg
IGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+Ojpjb25zdHJ1Y3QoKmFsbG9jLCBzbG90LCBz
dGQ6Om1vdmUoKm90aGVyKSk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Cisg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koQWxsb2MgKmFsbG9jLCBzbG90X3R5cGUgKnNsb3QpIHsKKyAg
ICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6ZGVzdHJveSgqYWxsb2MsIHNsb3QpOwor
ICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgorICBzdGF0aWMgdm9pZCBzd2FwKEFs
bG9jICogLyphbGxvYyovLCBzbG90X3R5cGUgKmEsIHNsb3RfdHlwZSAqYikgeworICAgIHVzaW5n
IHN0ZDo6c3dhcDsKKyAgICBzd2FwKCphLCAqYik7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQWxsb2M+CisgIHN0YXRpYyB2b2lkIG1vdmUoQWxsb2MgKiAvKmFsbG9jKi8sIHNsb3RfdHlw
ZSAqc3JjLCBzbG90X3R5cGUgKmRlc3QpIHsKKyAgICAqZGVzdCA9IHN0ZDo6bW92ZSgqc3JjKTsK
KyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KKyAgc3RhdGljIHZvaWQgbW92ZShB
bGxvYyAqYWxsb2MsIHNsb3RfdHlwZSAqZmlyc3QsIHNsb3RfdHlwZSAqbGFzdCwKKyAgICAgICAg
ICAgICAgICAgICBzbG90X3R5cGUgKnJlc3VsdCkgeworICAgIGZvciAoc2xvdF90eXBlICpzcmMg
PSBmaXJzdCwgKmRlc3QgPSByZXN1bHQ7IHNyYyAhPSBsYXN0OyArK3NyYywgKytkZXN0KQorICAg
ICAgbW92ZShhbGxvYywgc3JjLCBkZXN0KTsKKyAgfQorfTsKKworLy8gQSBwYXJhbWV0ZXJzIHN0
cnVjdHVyZSBmb3IgaG9sZGluZyB0aGUgdHlwZSBwYXJhbWV0ZXJzIGZvciBhIGJ0cmVlX3NldC4K
Ky8vIENvbXBhcmUgYW5kIEFsbG9jIHNob3VsZCBiZSBub3Rocm93IGNvcHktY29uc3RydWN0aWJs
ZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIENvbXBhcmUsIHR5cGVuYW1lIEFs
bG9jLCBpbnQgVGFyZ2V0Tm9kZVNpemUsCisgICAgICAgICAgYm9vbCBNdWx0aT4KK3N0cnVjdCBz
ZXRfcGFyYW1zIDogY29tbW9uX3BhcmFtczxLZXksIENvbXBhcmUsIEFsbG9jLCBUYXJnZXROb2Rl
U2l6ZSwgTXVsdGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3Nsb3Rf
cG9saWN5PEtleT4+IHsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IEtleTsKKyAgdXNpbmcgc2xvdF90
eXBlID0gdHlwZW5hbWUgc2V0X3BhcmFtczo6Y29tbW9uX3BhcmFtczo6c2xvdF90eXBlOworICB1
c2luZyB2YWx1ZV9jb21wYXJlID0gdHlwZW5hbWUgc2V0X3BhcmFtczo6Y29tbW9uX3BhcmFtczo6
a2V5X2NvbXBhcmU7CisgIHVzaW5nIGlzX21hcF9jb250YWluZXIgPSBzdGQ6OmZhbHNlX3R5cGU7
CisKKyAgc3RhdGljIGNvbnN0IEtleSAma2V5KGNvbnN0IHZhbHVlX3R5cGUgJngpIHsgcmV0dXJu
IHg7IH0KKyAgc3RhdGljIGNvbnN0IEtleSAma2V5KGNvbnN0IHNsb3RfdHlwZSAqeCkgeyByZXR1
cm4gKng7IH0KK307CisKKy8vIEFuIGFkYXB0ZXIgY2xhc3MgdGhhdCBjb252ZXJ0cyBhIGxvd2Vy
LWJvdW5kIGNvbXBhcmUgaW50byBhbiB1cHBlci1ib3VuZAorLy8gY29tcGFyZS4gTm90ZTogdGhl
cmUgaXMgbm8gbmVlZCB0byBtYWtlIGEgdmVyc2lvbiBvZiB0aGlzIGFkYXB0ZXIgc3BlY2lhbGl6
ZWQKKy8vIGZvciBrZXktY29tcGFyZS10byBmdW5jdG9ycyBiZWNhdXNlIHRoZSB1cHBlci1ib3Vu
ZCAodGhlIGZpcnN0IHZhbHVlIGdyZWF0ZXIKKy8vIHRoYW4gdGhlIGlucHV0KSBpcyBuZXZlciBh
biBleGFjdCBtYXRjaC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDb21wYXJlPgorc3RydWN0IHVwcGVy
X2JvdW5kX2FkYXB0ZXIgeworICBleHBsaWNpdCB1cHBlcl9ib3VuZF9hZGFwdGVyKGNvbnN0IENv
bXBhcmUgJmMpIDogY29tcChjKSB7fQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUg
TEs+CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBLICZhLCBjb25zdCBMSyAmYikgY29uc3Qgewor
ICAgIC8vIFJldHVybnMgdHJ1ZSB3aGVuIGEgaXMgbm90IGdyZWF0ZXIgdGhhbiBiLgorICAgIHJl
dHVybiAhY29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfbGVzc190aGFuKGNvbXAo
YiwgYSkpOworICB9CisKKyBwcml2YXRlOgorICBDb21wYXJlIGNvbXA7Cit9OworCitlbnVtIGNs
YXNzIE1hdGNoS2luZCA6IHVpbnQ4X3QgeyBrRXEsIGtOZSB9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgViwgYm9vbCBJc0NvbXBhcmVUbz4KK3N0cnVjdCBTZWFyY2hSZXN1bHQgeworICBWIHZhbHVl
OworICBNYXRjaEtpbmQgbWF0Y2g7CisKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIEhhc01hdGNo
KCkgeyByZXR1cm4gdHJ1ZTsgfQorICBib29sIElzRXEoKSBjb25zdCB7IHJldHVybiBtYXRjaCA9
PSBNYXRjaEtpbmQ6OmtFcTsgfQorfTsKKworLy8gV2hlbiB3ZSBkb24ndCB1c2UgQ29tcGFyZVRv
LCBgbWF0Y2hgIGlzIG5vdCBwcmVzZW50LgorLy8gVGhpcyBlbnN1cmVzIHRoYXQgY2FsbGVycyBj
YW4ndCB1c2UgaXQgYWNjaWRlbnRhbGx5IHdoZW4gaXQgcHJvdmlkZXMgbm8KKy8vIHVzZWZ1bCBp
bmZvcm1hdGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBWPgorc3RydWN0IFNlYXJjaFJlc3VsdDxW
LCBmYWxzZT4geworICBWIHZhbHVlOworCisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBIYXNNYXRj
aCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBJc0VxKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KK307CisKKy8vIEEgbm9kZSBpbiB0aGUgYnRyZWUgaG9sZGluZy4gVGhl
IHNhbWUgbm9kZSB0eXBlIGlzIHVzZWQgZm9yIGJvdGggaW50ZXJuYWwKKy8vIGFuZCBsZWFmIG5v
ZGVzIGluIHRoZSBidHJlZSwgdGhvdWdoIHRoZSBub2RlcyBhcmUgYWxsb2NhdGVkIGluIHN1Y2gg
YSB3YXkKKy8vIHRoYXQgdGhlIGNoaWxkcmVuIGFycmF5IGlzIG9ubHkgdmFsaWQgaW4gaW50ZXJu
YWwgbm9kZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1zPgorY2xhc3MgYnRyZWVfbm9kZSB7
CisgIHVzaW5nIGlzX2tleV9jb21wYXJlX3RvID0gdHlwZW5hbWUgUGFyYW1zOjppc19rZXlfY29t
cGFyZV90bzsKKyAgdXNpbmcgaXNfbXVsdGlfY29udGFpbmVyID0gdHlwZW5hbWUgUGFyYW1zOjpp
c19tdWx0aV9jb250YWluZXI7CisgIHVzaW5nIGZpZWxkX3R5cGUgPSB0eXBlbmFtZSBQYXJhbXM6
Om5vZGVfY291bnRfdHlwZTsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSB0eXBlbmFtZSBQYXJh
bXM6OmFsbG9jYXRvcl90eXBlOworICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBQYXJhbXM6
OnNsb3RfdHlwZTsKKworIHB1YmxpYzoKKyAgdXNpbmcgcGFyYW1zX3R5cGUgPSBQYXJhbXM7Cisg
IHVzaW5nIGtleV90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjprZXlfdHlwZTsKKyAgdXNpbmcgdmFs
dWVfdHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgcG9pbnRlciA9
IHR5cGVuYW1lIFBhcmFtczo6cG9pbnRlcjsKKyAgdXNpbmcgY29uc3RfcG9pbnRlciA9IHR5cGVu
YW1lIFBhcmFtczo6Y29uc3RfcG9pbnRlcjsKKyAgdXNpbmcgcmVmZXJlbmNlID0gdHlwZW5hbWUg
UGFyYW1zOjpyZWZlcmVuY2U7CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IHR5cGVuYW1lIFBh
cmFtczo6Y29uc3RfcmVmZXJlbmNlOworICB1c2luZyBrZXlfY29tcGFyZSA9IHR5cGVuYW1lIFBh
cmFtczo6a2V5X2NvbXBhcmU7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6
c2l6ZV90eXBlOworICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBQYXJhbXM6OmRp
ZmZlcmVuY2VfdHlwZTsKKworICAvLyBCdHJlZSBkZWNpZGVzIHdoZXRoZXIgdG8gdXNlIGxpbmVh
ciBub2RlIHNlYXJjaCBhcyBmb2xsb3dzOgorICAvLyAgIC0gSWYgdGhlIGtleSBpcyBhcml0aG1l
dGljIGFuZCB0aGUgY29tcGFyYXRvciBpcyBzdGQ6Omxlc3Mgb3IKKyAgLy8gICAgIHN0ZDo6Z3Jl
YXRlciwgY2hvb3NlIGxpbmVhci4KKyAgLy8gICAtIE90aGVyd2lzZSwgY2hvb3NlIGJpbmFyeS4K
KyAgLy8gVE9ETyhlemIpOiBNaWdodCBtYWtlIHNlbnNlIHRvIGFkZCBjb25kaXRpb24ocykgYmFz
ZWQgb24gbm9kZS1zaXplLgorICB1c2luZyB1c2VfbGluZWFyX3NlYXJjaCA9IHN0ZDo6aW50ZWdy
YWxfY29uc3RhbnQ8CisgICAgICBib29sLAorICAgICAgICAgICAgICAgIHN0ZDo6aXNfYXJpdGht
ZXRpYzxrZXlfdHlwZT46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgICAgIChzdGQ6OmlzX3Nh
bWU8c3RkOjpsZXNzPGtleV90eXBlPiwga2V5X2NvbXBhcmU+Ojp2YWx1ZSB8fAorICAgICAgICAg
ICAgICAgICAgICAgc3RkOjppc19zYW1lPHN0ZDo6Z3JlYXRlcjxrZXlfdHlwZT4sIGtleV9jb21w
YXJlPjo6dmFsdWUpPjsKKworICAvLyBUaGlzIGNsYXNzIGlzIG9yZ2FuaXplZCBieSBndGw6Okxh
eW91dCBhcyBpZiBpdCBoYWQgdGhlIGZvbGxvd2luZworICAvLyBzdHJ1Y3R1cmU6CisgIC8vICAg
Ly8gQSBwb2ludGVyIHRvIHRoZSBub2RlJ3MgcGFyZW50LgorICAvLyAgIGJ0cmVlX25vZGUgKnBh
cmVudDsKKyAgLy8KKyAgLy8gICAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIG5vZGUgaW4gdGhlIG5v
ZGUncyBwYXJlbnQuCisgIC8vICAgZmllbGRfdHlwZSBwb3NpdGlvbjsKKyAgLy8gICAvLyBUaGUg
aW5kZXggb2YgdGhlIGZpcnN0IHBvcHVsYXRlZCB2YWx1ZSBpbiBgdmFsdWVzYC4KKyAgLy8gICAv
LyBUT0RPKGV6Yik6IHJpZ2h0IG5vdywgYHN0YXJ0YCBpcyBhbHdheXMgMC4gVXBkYXRlIGluc2Vy
dGlvbi9tZXJnZQorICAvLyAgIC8vIGxvZ2ljIHRvIGFsbG93IGZvciBmbG9hdGluZyBzdG9yYWdl
IHdpdGhpbiBub2Rlcy4KKyAgLy8gICBmaWVsZF90eXBlIHN0YXJ0OworICAvLyAgIC8vIFRoZSBj
b3VudCBvZiB0aGUgbnVtYmVyIG9mIHBvcHVsYXRlZCB2YWx1ZXMgaW4gdGhlIG5vZGUuCisgIC8v
ICAgZmllbGRfdHlwZSBjb3VudDsKKyAgLy8gICAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2YgdmFs
dWVzIHRoZSBub2RlIGNhbiBob2xkLiBUaGlzIGlzIGFuIGludGVnZXIgaW4KKyAgLy8gICAvLyBb
MSwga05vZGVWYWx1ZXNdIGZvciByb290IGxlYWYgbm9kZXMsIGtOb2RlVmFsdWVzIGZvciBub24t
cm9vdCBsZWFmCisgIC8vICAgLy8gbm9kZXMsIGFuZCBrSW50ZXJuYWxOb2RlTWF4Q291bnQgKGFz
IGEgc2VudGluZWwgdmFsdWUpIGZvciBpbnRlcm5hbAorICAvLyAgIC8vIG5vZGVzIChldmVuIHRo
b3VnaCB0aGVyZSBhcmUgc3RpbGwga05vZGVWYWx1ZXMgdmFsdWVzIGluIHRoZSBub2RlKS4KKyAg
Ly8gICAvLyBUT0RPKGV6Yik6IG1ha2UgbWF4X2NvdW50IHVzZSBvbmx5IDQgYml0cyBhbmQgcmVj
b3JkIGxvZzIoY2FwYWNpdHkpCisgIC8vICAgLy8gdG8gZnJlZSBleHRyYSBiaXRzIGZvciBpc19y
b290LCBldGMuCisgIC8vICAgZmllbGRfdHlwZSBtYXhfY291bnQ7CisgIC8vCisgIC8vICAgLy8g
VGhlIGFycmF5IG9mIHZhbHVlcy4gVGhlIGNhcGFjaXR5IGlzIGBtYXhfY291bnRgIGZvciBsZWFm
IG5vZGVzIGFuZAorICAvLyAgIC8vIGtOb2RlVmFsdWVzIGZvciBpbnRlcm5hbCBub2Rlcy4gT25s
eSB0aGUgdmFsdWVzIGluCisgIC8vICAgLy8gW3N0YXJ0LCBzdGFydCArIGNvdW50KSBoYXZlIGJl
ZW4gaW5pdGlhbGl6ZWQgYW5kIGFyZSB2YWxpZC4KKyAgLy8gICBzbG90X3R5cGUgdmFsdWVzW21h
eF9jb3VudF07CisgIC8vCisgIC8vICAgLy8gVGhlIGFycmF5IG9mIGNoaWxkIHBvaW50ZXJzLiBU
aGUga2V5cyBpbiBjaGlsZHJlbltpXSBhcmUgYWxsIGxlc3MKKyAgLy8gICAvLyB0aGFuIGtleShp
KS4gVGhlIGtleXMgaW4gY2hpbGRyZW5baSArIDFdIGFyZSBhbGwgZ3JlYXRlciB0aGFuIGtleShp
KS4KKyAgLy8gICAvLyBUaGVyZSBhcmUgMCBjaGlsZHJlbiBmb3IgbGVhZiBub2RlcyBhbmQga05v
ZGVWYWx1ZXMgKyAxIGNoaWxkcmVuIGZvcgorICAvLyAgIC8vIGludGVybmFsIG5vZGVzLgorICAv
LyAgIGJ0cmVlX25vZGUgKmNoaWxkcmVuW2tOb2RlVmFsdWVzICsgMV07CisgIC8vCisgIC8vIFRo
aXMgY2xhc3MgaXMgb25seSBjb25zdHJ1Y3RlZCBieSBFbXB0eU5vZGVUeXBlLiBOb3JtYWxseSwg
cG9pbnRlcnMgdG8gdGhlCisgIC8vIGxheW91dCBhYm92ZSBhcmUgYWxsb2NhdGVkLCBjYXN0IHRv
IGJ0cmVlX25vZGUqLCBhbmQgZGUtYWxsb2NhdGVkIHdpdGhpbgorICAvLyB0aGUgYnRyZWUgaW1w
bGVtZW50YXRpb24uCisgIH5idHJlZV9ub2RlKCkgPSBkZWZhdWx0OworICBidHJlZV9ub2RlKGJ0
cmVlX25vZGUgY29uc3QgJikgPSBkZWxldGU7CisgIGJ0cmVlX25vZGUgJm9wZXJhdG9yPShidHJl
ZV9ub2RlIGNvbnN0ICYpID0gZGVsZXRlOworCisgIC8vIFB1YmxpYyBmb3IgRW1wdHlOb2RlVHlw
ZS4KKyAgY29uc3RleHByIHN0YXRpYyBzaXplX3R5cGUgQWxpZ25tZW50KCkgeworICAgIHN0YXRp
Y19hc3NlcnQoTGVhZkxheW91dCgxKS5BbGlnbm1lbnQoKSA9PSBJbnRlcm5hbExheW91dCgpLkFs
aWdubWVudCgpLAorICAgICAgICAgICAgICAgICAgIkFsaWdubWVudCBvZiBhbGwgbm9kZXMgbXVz
dCBiZSBlcXVhbC4iKTsKKyAgICByZXR1cm4gSW50ZXJuYWxMYXlvdXQoKS5BbGlnbm1lbnQoKTsK
KyAgfQorCisgcHJvdGVjdGVkOgorICBidHJlZV9ub2RlKCkgPSBkZWZhdWx0OworCisgcHJpdmF0
ZToKKyAgdXNpbmcgbGF5b3V0X3R5cGUgPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkxheW91
dDxidHJlZV9ub2RlICosIGZpZWxkX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdF90eXBlLCBidHJlZV9ub2RlICo+OworICBj
b25zdGV4cHIgc3RhdGljIHNpemVfdHlwZSBTaXplV2l0aE5WYWx1ZXMoc2l6ZV90eXBlIG4pIHsK
KyAgICByZXR1cm4gbGF5b3V0X3R5cGUoLypwYXJlbnQqLyAxLAorICAgICAgICAgICAgICAgICAg
ICAgICAvKnBvc2l0aW9uLCBzdGFydCwgY291bnQsIG1heF9jb3VudCovIDQsCisgICAgICAgICAg
ICAgICAgICAgICAgIC8qdmFsdWVzKi8gbiwKKyAgICAgICAgICAgICAgICAgICAgICAgLypjaGls
ZHJlbiovIDApCisgICAgICAgIC5BbGxvY1NpemUoKTsKKyAgfQorICAvLyBBIGxvd2VyIGJvdW5k
IGZvciB0aGUgb3ZlcmhlYWQgb2YgZmllbGRzIG90aGVyIHRoYW4gdmFsdWVzIGluIGEgbGVhZiBu
b2RlLgorICBjb25zdGV4cHIgc3RhdGljIHNpemVfdHlwZSBNaW5pbXVtT3ZlcmhlYWQoKSB7Cisg
ICAgcmV0dXJuIFNpemVXaXRoTlZhbHVlcygxKSAtIHNpemVvZih2YWx1ZV90eXBlKTsKKyAgfQor
CisgIC8vIENvbXB1dGUgaG93IG1hbnkgdmFsdWVzIHdlIGNhbiBmaXQgb250byBhIGxlYWYgbm9k
ZSB0YWtpbmcgaW50byBhY2NvdW50CisgIC8vIHBhZGRpbmcuCisgIGNvbnN0ZXhwciBzdGF0aWMg
c2l6ZV90eXBlIE5vZGVUYXJnZXRWYWx1ZXMoY29uc3QgaW50IGJlZ2luLCBjb25zdCBpbnQgZW5k
KSB7CisgICAgcmV0dXJuIGJlZ2luID09IGVuZCA/IGJlZ2luCisgICAgICAgICAgICAgICAgICAg
ICAgICA6IFNpemVXaXRoTlZhbHVlcygoYmVnaW4gKyBlbmQpIC8gMiArIDEpID4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNfdHlwZTo6a1RhcmdldE5vZGVTaXplCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5vZGVUYXJnZXRWYWx1ZXMoYmVnaW4sIChi
ZWdpbiArIGVuZCkgLyAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBOb2RlVGFy
Z2V0VmFsdWVzKChiZWdpbiArIGVuZCkgLyAyICsgMSwgZW5kKTsKKyAgfQorCisgIGVudW0gewor
ICAgIGtUYXJnZXROb2RlU2l6ZSA9IHBhcmFtc190eXBlOjprVGFyZ2V0Tm9kZVNpemUsCisgICAg
a05vZGVUYXJnZXRWYWx1ZXMgPSBOb2RlVGFyZ2V0VmFsdWVzKDAsIHBhcmFtc190eXBlOjprVGFy
Z2V0Tm9kZVNpemUpLAorCisgICAgLy8gV2UgbmVlZCBhIG1pbmltdW0gb2YgMyB2YWx1ZXMgcGVy
IGludGVybmFsIG5vZGUgaW4gb3JkZXIgdG8gcGVyZm9ybQorICAgIC8vIHNwbGl0dGluZyAoMSB2
YWx1ZSBmb3IgdGhlIHR3byBub2RlcyBpbnZvbHZlZCBpbiB0aGUgc3BsaXQgYW5kIDEgdmFsdWUK
KyAgICAvLyBwcm9wYWdhdGVkIHRvIHRoZSBwYXJlbnQgYXMgdGhlIGRlbGltaXRlciBmb3IgdGhl
IHNwbGl0KS4KKyAgICBrTm9kZVZhbHVlcyA9IGtOb2RlVGFyZ2V0VmFsdWVzID49IDMgPyBrTm9k
ZVRhcmdldFZhbHVlcyA6IDMsCisKKyAgICAvLyBUaGUgbm9kZSBpcyBpbnRlcm5hbCAoaS5lLiBp
cyBub3QgYSBsZWFmIG5vZGUpIGlmIGFuZCBvbmx5IGlmIGBtYXhfY291bnRgCisgICAgLy8gaGFz
IHRoaXMgdmFsdWUuCisgICAga0ludGVybmFsTm9kZU1heENvdW50ID0gMCwKKyAgfTsKKworICAv
LyBMZWF2ZXMgY2FuIGhhdmUgbGVzcyB0aGFuIGtOb2RlVmFsdWVzIHZhbHVlcy4KKyAgY29uc3Rl
eHByIHN0YXRpYyBsYXlvdXRfdHlwZSBMZWFmTGF5b3V0KGNvbnN0IGludCBtYXhfdmFsdWVzID0g
a05vZGVWYWx1ZXMpIHsKKyAgICByZXR1cm4gbGF5b3V0X3R5cGUoLypwYXJlbnQqLyAxLAorICAg
ICAgICAgICAgICAgICAgICAgICAvKnBvc2l0aW9uLCBzdGFydCwgY291bnQsIG1heF9jb3VudCov
IDQsCisgICAgICAgICAgICAgICAgICAgICAgIC8qdmFsdWVzKi8gbWF4X3ZhbHVlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgLypjaGlsZHJlbiovIDApOworICB9CisgIGNvbnN0ZXhwciBzdGF0
aWMgbGF5b3V0X3R5cGUgSW50ZXJuYWxMYXlvdXQoKSB7CisgICAgcmV0dXJuIGxheW91dF90eXBl
KC8qcGFyZW50Ki8gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgLypwb3NpdGlvbiwgc3RhcnQs
IGNvdW50LCBtYXhfY291bnQqLyA0LAorICAgICAgICAgICAgICAgICAgICAgICAvKnZhbHVlcyov
IGtOb2RlVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAvKmNoaWxkcmVuKi8ga05vZGVW
YWx1ZXMgKyAxKTsKKyAgfQorICBjb25zdGV4cHIgc3RhdGljIHNpemVfdHlwZSBMZWFmU2l6ZShj
b25zdCBpbnQgbWF4X3ZhbHVlcyA9IGtOb2RlVmFsdWVzKSB7CisgICAgcmV0dXJuIExlYWZMYXlv
dXQobWF4X3ZhbHVlcykuQWxsb2NTaXplKCk7CisgIH0KKyAgY29uc3RleHByIHN0YXRpYyBzaXpl
X3R5cGUgSW50ZXJuYWxTaXplKCkgeworICAgIHJldHVybiBJbnRlcm5hbExheW91dCgpLkFsbG9j
U2l6ZSgpOworICB9CisKKyAgLy8gTiBpcyB0aGUgaW5kZXggb2YgdGhlIHR5cGUgaW4gdGhlIExh
eW91dCBkZWZpbml0aW9uLgorICAvLyBFbGVtZW50VHlwZTxOPiBpcyB0aGUgTnRoIHR5cGUgaW4g
dGhlIExheW91dCBkZWZpbml0aW9uLgorICB0ZW1wbGF0ZSA8c2l6ZV90eXBlIE4+CisgIGlubGlu
ZSB0eXBlbmFtZSBsYXlvdXRfdHlwZTo6dGVtcGxhdGUgRWxlbWVudFR5cGU8Tj4gKkdldEZpZWxk
KCkgeworICAgIC8vIFdlIGFzc2VydCB0aGF0IHdlIGRvbid0IHJlYWQgZnJvbSB2YWx1ZXMgdGhh
dCBhcmVuJ3QgdGhlcmUuCisgICAgYXNzZXJ0KE4gPCAzIHx8ICFsZWFmKCkpOworICAgIHJldHVy
biBJbnRlcm5hbExheW91dCgpLnRlbXBsYXRlIFBvaW50ZXI8Tj4ocmVpbnRlcnByZXRfY2FzdDxj
aGFyICo+KHRoaXMpKTsKKyAgfQorICB0ZW1wbGF0ZSA8c2l6ZV90eXBlIE4+CisgIGlubGluZSBj
b25zdCB0eXBlbmFtZSBsYXlvdXRfdHlwZTo6dGVtcGxhdGUgRWxlbWVudFR5cGU8Tj4gKkdldEZp
ZWxkKCkgY29uc3QgeworICAgIGFzc2VydChOIDwgMyB8fCAhbGVhZigpKTsKKyAgICByZXR1cm4g
SW50ZXJuYWxMYXlvdXQoKS50ZW1wbGF0ZSBQb2ludGVyPE4+KAorICAgICAgICByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIgKj4odGhpcykpOworICB9CisgIHZvaWQgc2V0X3BhcmVudChidHJl
ZV9ub2RlICpwKSB7ICpHZXRGaWVsZDwwPigpID0gcDsgfQorICBmaWVsZF90eXBlICZtdXRhYmxl
X2NvdW50KCkgeyByZXR1cm4gR2V0RmllbGQ8MT4oKVsyXTsgfQorICBzbG90X3R5cGUgKnNsb3Qo
aW50IGkpIHsgcmV0dXJuICZHZXRGaWVsZDwyPigpW2ldOyB9CisgIGNvbnN0IHNsb3RfdHlwZSAq
c2xvdChpbnQgaSkgY29uc3QgeyByZXR1cm4gJkdldEZpZWxkPDI+KClbaV07IH0KKyAgdm9pZCBz
ZXRfcG9zaXRpb24oZmllbGRfdHlwZSB2KSB7IEdldEZpZWxkPDE+KClbMF0gPSB2OyB9CisgIHZv
aWQgc2V0X3N0YXJ0KGZpZWxkX3R5cGUgdikgeyBHZXRGaWVsZDwxPigpWzFdID0gdjsgfQorICB2
b2lkIHNldF9jb3VudChmaWVsZF90eXBlIHYpIHsgR2V0RmllbGQ8MT4oKVsyXSA9IHY7IH0KKyAg
Ly8gVGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQgYnkgdGhlIG5vZGUgaW5pdCBtZXRob2RzLgor
ICB2b2lkIHNldF9tYXhfY291bnQoZmllbGRfdHlwZSB2KSB7IEdldEZpZWxkPDE+KClbM10gPSB2
OyB9CisKKyBwdWJsaWM6CisgIC8vIFdoZXRoZXIgdGhpcyBpcyBhIGxlYWYgbm9kZSBvciBub3Qu
IFRoaXMgdmFsdWUgZG9lc24ndCBjaGFuZ2UgYWZ0ZXIgdGhlCisgIC8vIG5vZGUgaXMgY3JlYXRl
ZC4KKyAgYm9vbCBsZWFmKCkgY29uc3QgeyByZXR1cm4gR2V0RmllbGQ8MT4oKVszXSAhPSBrSW50
ZXJuYWxOb2RlTWF4Q291bnQ7IH0KKworICAvLyBHZXR0ZXIgZm9yIHRoZSBwb3NpdGlvbiBvZiB0
aGlzIG5vZGUgaW4gaXRzIHBhcmVudC4KKyAgZmllbGRfdHlwZSBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIEdldEZpZWxkPDE+KClbMF07IH0KKworICAvLyBHZXR0ZXIgZm9yIHRoZSBvZmZzZXQg
b2YgdGhlIGZpcnN0IHZhbHVlIGluIHRoZSBgdmFsdWVzYCBhcnJheS4KKyAgZmllbGRfdHlwZSBz
dGFydCgpIGNvbnN0IHsgcmV0dXJuIEdldEZpZWxkPDE+KClbMV07IH0KKworICAvLyBHZXR0ZXJz
IGZvciB0aGUgbnVtYmVyIG9mIHZhbHVlcyBzdG9yZWQgaW4gdGhpcyBub2RlLgorICBmaWVsZF90
eXBlIGNvdW50KCkgY29uc3QgeyByZXR1cm4gR2V0RmllbGQ8MT4oKVsyXTsgfQorICBmaWVsZF90
eXBlIG1heF9jb3VudCgpIGNvbnN0IHsKKyAgICAvLyBJbnRlcm5hbCBub2RlcyBoYXZlIG1heF9j
b3VudD09a0ludGVybmFsTm9kZU1heENvdW50LgorICAgIC8vIExlYWYgbm9kZXMgaGF2ZSBtYXhf
Y291bnQgaW4gWzEsIGtOb2RlVmFsdWVzXS4KKyAgICBjb25zdCBmaWVsZF90eXBlIG1heF9jb3Vu
dCA9IEdldEZpZWxkPDE+KClbM107CisgICAgcmV0dXJuIG1heF9jb3VudCA9PSBmaWVsZF90eXBl
e2tJbnRlcm5hbE5vZGVNYXhDb3VudH0KKyAgICAgICAgICAgICAgID8gZmllbGRfdHlwZXtrTm9k
ZVZhbHVlc30KKyAgICAgICAgICAgICAgIDogbWF4X2NvdW50OworICB9CisKKyAgLy8gR2V0dGVy
IGZvciB0aGUgcGFyZW50IG9mIHRoaXMgbm9kZS4KKyAgYnRyZWVfbm9kZSAqcGFyZW50KCkgY29u
c3QgeyByZXR1cm4gKkdldEZpZWxkPDA+KCk7IH0KKyAgLy8gR2V0dGVyIGZvciB3aGV0aGVyIHRo
ZSBub2RlIGlzIHRoZSByb290IG9mIHRoZSB0cmVlLiBUaGUgcGFyZW50IG9mIHRoZQorICAvLyBy
b290IG9mIHRoZSB0cmVlIGlzIHRoZSBsZWZ0bW9zdCBub2RlIGluIHRoZSB0cmVlIHdoaWNoIGlz
IGd1YXJhbnRlZWQgdG8KKyAgLy8gYmUgYSBsZWFmLgorICBib29sIGlzX3Jvb3QoKSBjb25zdCB7
IHJldHVybiBwYXJlbnQoKS0+bGVhZigpOyB9CisgIHZvaWQgbWFrZV9yb290KCkgeworICAgIGFz
c2VydChwYXJlbnQoKS0+aXNfcm9vdCgpKTsKKyAgICBzZXRfcGFyZW50KHBhcmVudCgpLT5wYXJl
bnQoKSk7CisgIH0KKworICAvLyBHZXR0ZXJzIGZvciB0aGUga2V5L3ZhbHVlIGF0IHBvc2l0aW9u
IGkgaW4gdGhlIG5vZGUuCisgIGNvbnN0IGtleV90eXBlICZrZXkoaW50IGkpIGNvbnN0IHsgcmV0
dXJuIHBhcmFtc190eXBlOjprZXkoc2xvdChpKSk7IH0KKyAgcmVmZXJlbmNlIHZhbHVlKGludCBp
KSB7IHJldHVybiBwYXJhbXNfdHlwZTo6ZWxlbWVudChzbG90KGkpKTsgfQorICBjb25zdF9yZWZl
cmVuY2UgdmFsdWUoaW50IGkpIGNvbnN0IHsgcmV0dXJuIHBhcmFtc190eXBlOjplbGVtZW50KHNs
b3QoaSkpOyB9CisKKyAgLy8gR2V0dGVycy9zZXR0ZXIgZm9yIHRoZSBjaGlsZCBhdCBwb3NpdGlv
biBpIGluIHRoZSBub2RlLgorICBidHJlZV9ub2RlICpjaGlsZChpbnQgaSkgY29uc3QgeyByZXR1
cm4gR2V0RmllbGQ8Mz4oKVtpXTsgfQorICBidHJlZV9ub2RlICombXV0YWJsZV9jaGlsZChpbnQg
aSkgeyByZXR1cm4gR2V0RmllbGQ8Mz4oKVtpXTsgfQorICB2b2lkIGNsZWFyX2NoaWxkKGludCBp
KSB7CisgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpTYW5pdGl6ZXJQb2lzb25PYmplY3Qo
Jm11dGFibGVfY2hpbGQoaSkpOworICB9CisgIHZvaWQgc2V0X2NoaWxkKGludCBpLCBidHJlZV9u
b2RlICpjKSB7CisgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpTYW5pdGl6ZXJVbnBvaXNv
bk9iamVjdCgmbXV0YWJsZV9jaGlsZChpKSk7CisgICAgbXV0YWJsZV9jaGlsZChpKSA9IGM7Cisg
ICAgYy0+c2V0X3Bvc2l0aW9uKGkpOworICB9CisgIHZvaWQgaW5pdF9jaGlsZChpbnQgaSwgYnRy
ZWVfbm9kZSAqYykgeworICAgIHNldF9jaGlsZChpLCBjKTsKKyAgICBjLT5zZXRfcGFyZW50KHRo
aXMpOworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IHZhbHVl
IHdob3NlIGtleSBpcyBub3QgbGVzcyB0aGFuIGsuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgor
ICBTZWFyY2hSZXN1bHQ8aW50LCBpc19rZXlfY29tcGFyZV90bzo6dmFsdWU+IGxvd2VyX2JvdW5k
KAorICAgICAgY29uc3QgSyAmaywgY29uc3Qga2V5X2NvbXBhcmUgJmNvbXApIGNvbnN0IHsKKyAg
ICByZXR1cm4gdXNlX2xpbmVhcl9zZWFyY2g6OnZhbHVlID8gbGluZWFyX3NlYXJjaChrLCBjb21w
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBiaW5hcnlfc2VhcmNoKGss
IGNvbXApOworICB9CisgIC8vIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCB2YWx1
ZSB3aG9zZSBrZXkgaXMgZ3JlYXRlciB0aGFuIGsuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgor
ICBpbnQgdXBwZXJfYm91bmQoY29uc3QgSyAmaywgY29uc3Qga2V5X2NvbXBhcmUgJmNvbXApIGNv
bnN0IHsKKyAgICBhdXRvIHVwcGVyX2NvbXBhcmUgPSB1cHBlcl9ib3VuZF9hZGFwdGVyPGtleV9j
b21wYXJlPihjb21wKTsKKyAgICByZXR1cm4gdXNlX2xpbmVhcl9zZWFyY2g6OnZhbHVlID8gbGlu
ZWFyX3NlYXJjaChrLCB1cHBlcl9jb21wYXJlKS52YWx1ZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBiaW5hcnlfc2VhcmNoKGssIHVwcGVyX2NvbXBhcmUpLnZhbHVlOwor
ICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIENvbXBhcmU+CisgIFNlYXJj
aFJlc3VsdDxpbnQsIGJ0cmVlX2lzX2tleV9jb21wYXJlX3RvPENvbXBhcmUsIGtleV90eXBlPjo6
dmFsdWU+CisgIGxpbmVhcl9zZWFyY2goY29uc3QgSyAmaywgY29uc3QgQ29tcGFyZSAmY29tcCkg
Y29uc3QgeworICAgIHJldHVybiBsaW5lYXJfc2VhcmNoX2ltcGwoaywgMCwgY291bnQoKSwgY29t
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0cmVlX2lzX2tleV9jb21wYXJlX3Rv
PENvbXBhcmUsIGtleV90eXBlPigpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0
eXBlbmFtZSBDb21wYXJlPgorICBTZWFyY2hSZXN1bHQ8aW50LCBidHJlZV9pc19rZXlfY29tcGFy
ZV90bzxDb21wYXJlLCBrZXlfdHlwZT46OnZhbHVlPgorICBiaW5hcnlfc2VhcmNoKGNvbnN0IEsg
JmssIGNvbnN0IENvbXBhcmUgJmNvbXApIGNvbnN0IHsKKyAgICByZXR1cm4gYmluYXJ5X3NlYXJj
aF9pbXBsKGssIDAsIGNvdW50KCksIGNvbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBidHJlZV9pc19rZXlfY29tcGFyZV90bzxDb21wYXJlLCBrZXlfdHlwZT4oKSk7CisgIH0KKwor
ICAvLyBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgdmFsdWUgd2hvc2Uga2V5IGlz
IG5vdCBsZXNzIHRoYW4gayB1c2luZworICAvLyBsaW5lYXIgc2VhcmNoIHBlcmZvcm1lZCB1c2lu
ZyBwbGFpbiBjb21wYXJlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgQ29tcGFy
ZT4KKyAgU2VhcmNoUmVzdWx0PGludCwgZmFsc2U+IGxpbmVhcl9zZWFyY2hfaW1wbCgKKyAgICAg
IGNvbnN0IEsgJmssIGludCBzLCBjb25zdCBpbnQgZSwgY29uc3QgQ29tcGFyZSAmY29tcCwKKyAg
ICAgIHN0ZDo6ZmFsc2VfdHlwZSAvKiBJc0NvbXBhcmVUbyAqLykgY29uc3QgeworICAgIHdoaWxl
IChzIDwgZSkgeworICAgICAgaWYgKCFjb21wKGtleShzKSwgaykpIHsKKyAgICAgICAgYnJlYWs7
CisgICAgICB9CisgICAgICArK3M7CisgICAgfQorICAgIHJldHVybiB7c307CisgIH0KKworICAv
LyBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgdmFsdWUgd2hvc2Uga2V5IGlzIG5v
dCBsZXNzIHRoYW4gayB1c2luZworICAvLyBsaW5lYXIgc2VhcmNoIHBlcmZvcm1lZCB1c2luZyBj
b21wYXJlLXRvLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgQ29tcGFyZT4KKyAg
U2VhcmNoUmVzdWx0PGludCwgdHJ1ZT4gbGluZWFyX3NlYXJjaF9pbXBsKAorICAgICAgY29uc3Qg
SyAmaywgaW50IHMsIGNvbnN0IGludCBlLCBjb25zdCBDb21wYXJlICZjb21wLAorICAgICAgc3Rk
Ojp0cnVlX3R5cGUgLyogSXNDb21wYXJlVG8gKi8pIGNvbnN0IHsKKyAgICB3aGlsZSAocyA8IGUp
IHsKKyAgICAgIGNvbnN0IGFic2w6OndlYWtfb3JkZXJpbmcgYyA9IGNvbXAoa2V5KHMpLCBrKTsK
KyAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgcmV0dXJuIHtzLCBNYXRjaEtpbmQ6OmtFcX07
CisgICAgICB9IGVsc2UgaWYgKGMgPiAwKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAg
ICAgKytzOworICAgIH0KKyAgICByZXR1cm4ge3MsIE1hdGNoS2luZDo6a05lfTsKKyAgfQorCisg
IC8vIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCB2YWx1ZSB3aG9zZSBrZXkgaXMg
bm90IGxlc3MgdGhhbiBrIHVzaW5nCisgIC8vIGJpbmFyeSBzZWFyY2ggcGVyZm9ybWVkIHVzaW5n
IHBsYWluIGNvbXBhcmUuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBDb21wYXJl
PgorICBTZWFyY2hSZXN1bHQ8aW50LCBmYWxzZT4gYmluYXJ5X3NlYXJjaF9pbXBsKAorICAgICAg
Y29uc3QgSyAmaywgaW50IHMsIGludCBlLCBjb25zdCBDb21wYXJlICZjb21wLAorICAgICAgc3Rk
OjpmYWxzZV90eXBlIC8qIElzQ29tcGFyZVRvICovKSBjb25zdCB7CisgICAgd2hpbGUgKHMgIT0g
ZSkgeworICAgICAgY29uc3QgaW50IG1pZCA9IChzICsgZSkgPj4gMTsKKyAgICAgIGlmIChjb21w
KGtleShtaWQpLCBrKSkgeworICAgICAgICBzID0gbWlkICsgMTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIGUgPSBtaWQ7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiB7c307CisgIH0KKwor
ICAvLyBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgdmFsdWUgd2hvc2Uga2V5IGlz
IG5vdCBsZXNzIHRoYW4gayB1c2luZworICAvLyBiaW5hcnkgc2VhcmNoIHBlcmZvcm1lZCB1c2lu
ZyBjb21wYXJlLXRvLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgQ29tcGFyZVRv
PgorICBTZWFyY2hSZXN1bHQ8aW50LCB0cnVlPiBiaW5hcnlfc2VhcmNoX2ltcGwoCisgICAgICBj
b25zdCBLICZrLCBpbnQgcywgaW50IGUsIGNvbnN0IENvbXBhcmVUbyAmY29tcCwKKyAgICAgIHN0
ZDo6dHJ1ZV90eXBlIC8qIElzQ29tcGFyZVRvICovKSBjb25zdCB7CisgICAgaWYgKGlzX211bHRp
X2NvbnRhaW5lcjo6dmFsdWUpIHsKKyAgICAgIE1hdGNoS2luZCBleGFjdF9tYXRjaCA9IE1hdGNo
S2luZDo6a05lOworICAgICAgd2hpbGUgKHMgIT0gZSkgeworICAgICAgICBjb25zdCBpbnQgbWlk
ID0gKHMgKyBlKSA+PiAxOworICAgICAgICBjb25zdCBhYnNsOjp3ZWFrX29yZGVyaW5nIGMgPSBj
b21wKGtleShtaWQpLCBrKTsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgcyA9IG1p
ZCArIDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZSA9IG1pZDsKKyAgICAgICAgICBp
ZiAoYyA9PSAwKSB7CisgICAgICAgICAgICAvLyBOZWVkIHRvIHJldHVybiB0aGUgZmlyc3QgdmFs
dWUgd2hvc2Uga2V5IGlzIG5vdCBsZXNzIHRoYW4gaywKKyAgICAgICAgICAgIC8vIHdoaWNoIHJl
cXVpcmVzIGNvbnRpbnVpbmcgdGhlIGJpbmFyeSBzZWFyY2ggaWYgdGhpcyBpcyBhCisgICAgICAg
ICAgICAvLyBtdWx0aS1jb250YWluZXIuCisgICAgICAgICAgICBleGFjdF9tYXRjaCA9IE1hdGNo
S2luZDo6a0VxOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJu
IHtzLCBleGFjdF9tYXRjaH07CisgICAgfSBlbHNlIHsgIC8vIE5vdCBhIG11bHRpLWNvbnRhaW5l
ci4KKyAgICAgIHdoaWxlIChzICE9IGUpIHsKKyAgICAgICAgY29uc3QgaW50IG1pZCA9IChzICsg
ZSkgPj4gMTsKKyAgICAgICAgY29uc3QgYWJzbDo6d2Vha19vcmRlcmluZyBjID0gY29tcChrZXko
bWlkKSwgayk7CisgICAgICAgIGlmIChjIDwgMCkgeworICAgICAgICAgIHMgPSBtaWQgKyAxOwor
ICAgICAgICB9IGVsc2UgaWYgKGMgPiAwKSB7CisgICAgICAgICAgZSA9IG1pZDsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICByZXR1cm4ge21pZCwgTWF0Y2hLaW5kOjprRXF9OworICAgICAg
ICB9CisgICAgICB9CisgICAgICByZXR1cm4ge3MsIE1hdGNoS2luZDo6a05lfTsKKyAgICB9Cisg
IH0KKworICAvLyBFbXBsYWNlcyBhIHZhbHVlIGF0IHBvc2l0aW9uIGksIHNoaWZ0aW5nIGFsbCBl
eGlzdGluZyB2YWx1ZXMgYW5kCisgIC8vIGNoaWxkcmVuIGF0IHBvc2l0aW9ucyA+PSBpIHRvIHRo
ZSByaWdodCBieSAxLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgdm9pZCBlbXBs
YWNlX3ZhbHVlKHNpemVfdHlwZSBpLCBhbGxvY2F0b3JfdHlwZSAqYWxsb2MsIEFyZ3MgJiYuLi4g
YXJncyk7CisKKyAgLy8gUmVtb3ZlcyB0aGUgdmFsdWUgYXQgcG9zaXRpb24gaSwgc2hpZnRpbmcg
YWxsIGV4aXN0aW5nIHZhbHVlcyBhbmQgY2hpbGRyZW4KKyAgLy8gYXQgcG9zaXRpb25zID4gaSB0
byB0aGUgbGVmdCBieSAxLgorICB2b2lkIHJlbW92ZV92YWx1ZShpbnQgaSwgYWxsb2NhdG9yX3R5
cGUgKmFsbG9jKTsKKworICAvLyBSZW1vdmVzIHRoZSB2YWx1ZXMgYXQgcG9zaXRpb25zIFtpLCBp
ICsgdG9fZXJhc2UpLCBzaGlmdGluZyBhbGwgdmFsdWVzCisgIC8vIGFmdGVyIHRoYXQgcmFuZ2Ug
dG8gdGhlIGxlZnQgYnkgdG9fZXJhc2UuIERvZXMgbm90IGNoYW5nZSBjaGlsZHJlbiBhdCBhbGwu
CisgIHZvaWQgcmVtb3ZlX3ZhbHVlc19pZ25vcmVfY2hpbGRyZW4oaW50IGksIGludCB0b19lcmFz
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHlwZSAq
YWxsb2MpOworCisgIC8vIFJlYmFsYW5jZXMgYSBub2RlIHdpdGggaXRzIHJpZ2h0IHNpYmxpbmcu
CisgIHZvaWQgcmViYWxhbmNlX3JpZ2h0X3RvX2xlZnQoaW50IHRvX21vdmUsIGJ0cmVlX25vZGUg
KnJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlICph
bGxvYyk7CisgIHZvaWQgcmViYWxhbmNlX2xlZnRfdG9fcmlnaHQoaW50IHRvX21vdmUsIGJ0cmVl
X25vZGUgKnJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90
eXBlICphbGxvYyk7CisKKyAgLy8gU3BsaXRzIGEgbm9kZSwgbW92aW5nIGEgcG9ydGlvbiBvZiB0
aGUgbm9kZSdzIHZhbHVlcyB0byBpdHMgcmlnaHQgc2libGluZy4KKyAgdm9pZCBzcGxpdChpbnQg
aW5zZXJ0X3Bvc2l0aW9uLCBidHJlZV9ub2RlICpkZXN0LCBhbGxvY2F0b3JfdHlwZSAqYWxsb2Mp
OworCisgIC8vIE1lcmdlcyBhIG5vZGUgd2l0aCBpdHMgcmlnaHQgc2libGluZywgbW92aW5nIGFs
bCBvZiB0aGUgdmFsdWVzIGFuZCB0aGUKKyAgLy8gZGVsaW1pdGluZyBrZXkgaW4gdGhlIHBhcmVu
dCBub2RlIG9udG8gaXRzZWxmLgorICB2b2lkIG1lcmdlKGJ0cmVlX25vZGUgKnNpYmxpbmcsIGFs
bG9jYXRvcl90eXBlICphbGxvYyk7CisKKyAgLy8gU3dhcCB0aGUgY29udGVudHMgb2YgInRoaXMi
IGFuZCAic3JjIi4KKyAgdm9pZCBzd2FwKGJ0cmVlX25vZGUgKnNyYywgYWxsb2NhdG9yX3R5cGUg
KmFsbG9jKTsKKworICAvLyBOb2RlIGFsbG9jYXRpb24vZGVsZXRpb24gcm91dGluZXMuCisgIHN0
YXRpYyBidHJlZV9ub2RlICppbml0X2xlYWYoYnRyZWVfbm9kZSAqbiwgYnRyZWVfbm9kZSAqcGFy
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhfY291bnQpIHsKKyAg
ICBuLT5zZXRfcGFyZW50KHBhcmVudCk7CisgICAgbi0+c2V0X3Bvc2l0aW9uKDApOworICAgIG4t
PnNldF9zdGFydCgwKTsKKyAgICBuLT5zZXRfY291bnQoMCk7CisgICAgbi0+c2V0X21heF9jb3Vu
dChtYXhfY291bnQpOworICAgIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6U2FuaXRpemVyUG9p
c29uTWVtb3J5UmVnaW9uKAorICAgICAgICBuLT5zbG90KDApLCBtYXhfY291bnQgKiBzaXplb2Yo
c2xvdF90eXBlKSk7CisgICAgcmV0dXJuIG47CisgIH0KKyAgc3RhdGljIGJ0cmVlX25vZGUgKmlu
aXRfaW50ZXJuYWwoYnRyZWVfbm9kZSAqbiwgYnRyZWVfbm9kZSAqcGFyZW50KSB7CisgICAgaW5p
dF9sZWFmKG4sIHBhcmVudCwga05vZGVWYWx1ZXMpOworICAgIC8vIFNldCBgbWF4X2NvdW50YCB0
byBhIHNlbnRpbmVsIHZhbHVlIHRvIGluZGljYXRlIHRoYXQgdGhpcyBub2RlIGlzCisgICAgLy8g
aW50ZXJuYWwuCisgICAgbi0+c2V0X21heF9jb3VudChrSW50ZXJuYWxOb2RlTWF4Q291bnQpOwor
ICAgIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6U2FuaXRpemVyUG9pc29uTWVtb3J5UmVnaW9u
KAorICAgICAgICAmbi0+bXV0YWJsZV9jaGlsZCgwKSwgKGtOb2RlVmFsdWVzICsgMSkgKiBzaXpl
b2YoYnRyZWVfbm9kZSAqKSk7CisgICAgcmV0dXJuIG47CisgIH0KKyAgdm9pZCBkZXN0cm95KGFs
bG9jYXRvcl90eXBlICphbGxvYykgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQoKTsg
KytpKSB7CisgICAgICB2YWx1ZV9kZXN0cm95KGksIGFsbG9jKTsKKyAgICB9CisgIH0KKworIHB1
YmxpYzoKKyAgLy8gRXhwb3NlZCBvbmx5IGZvciB0ZXN0cy4KKyAgc3RhdGljIGJvb2wgdGVzdG9u
bHlfdXNlc19saW5lYXJfbm9kZV9zZWFyY2goKSB7CisgICAgcmV0dXJuIHVzZV9saW5lYXJfc2Vh
cmNoOjp2YWx1ZTsKKyAgfQorCisgcHJpdmF0ZToKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFy
Z3M+CisgIHZvaWQgdmFsdWVfaW5pdChjb25zdCBzaXplX3R5cGUgaSwgYWxsb2NhdG9yX3R5cGUg
KmFsbG9jLCBBcmdzICYmLi4uIGFyZ3MpIHsKKyAgICBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6
OlNhbml0aXplclVucG9pc29uT2JqZWN0KHNsb3QoaSkpOworICAgIHBhcmFtc190eXBlOjpjb25z
dHJ1Y3QoYWxsb2MsIHNsb3QoaSksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0K
KyAgdm9pZCB2YWx1ZV9kZXN0cm95KGNvbnN0IHNpemVfdHlwZSBpLCBhbGxvY2F0b3JfdHlwZSAq
YWxsb2MpIHsKKyAgICBwYXJhbXNfdHlwZTo6ZGVzdHJveShhbGxvYywgc2xvdChpKSk7CisgICAg
YWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpTYW5pdGl6ZXJQb2lzb25PYmplY3Qoc2xvdChpKSk7
CisgIH0KKworICAvLyBNb3ZlIG4gdmFsdWVzIHN0YXJ0aW5nIGF0IHZhbHVlIGkgaW4gdGhpcyBu
b2RlIGludG8gdGhlIHZhbHVlcyBzdGFydGluZyBhdAorICAvLyB2YWx1ZSBqIGluIG5vZGUgeC4K
KyAgdm9pZCB1bmluaXRpYWxpemVkX21vdmVfbihjb25zdCBzaXplX3R5cGUgbiwgY29uc3Qgc2l6
ZV90eXBlIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90eXBlIGos
IGJ0cmVlX25vZGUgKngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5
cGUgKmFsbG9jKSB7CisgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpTYW5pdGl6ZXJVbnBv
aXNvbk1lbW9yeVJlZ2lvbigKKyAgICAgICAgeC0+c2xvdChqKSwgbiAqIHNpemVvZihzbG90X3R5
cGUpKTsKKyAgICBmb3IgKHNsb3RfdHlwZSAqc3JjID0gc2xvdChpKSwgKmVuZCA9IHNyYyArIG4s
ICpkZXN0ID0geC0+c2xvdChqKTsKKyAgICAgICAgIHNyYyAhPSBlbmQ7ICsrc3JjLCArK2Rlc3Qp
IHsKKyAgICAgIHBhcmFtc190eXBlOjpjb25zdHJ1Y3QoYWxsb2MsIGRlc3QsIHNyYyk7CisgICAg
fQorICB9CisKKyAgLy8gRGVzdHJveXMgYSByYW5nZSBvZiBuIHZhbHVlcywgc3RhcnRpbmcgYXQg
aW5kZXggaS4KKyAgdm9pZCB2YWx1ZV9kZXN0cm95X24oY29uc3Qgc2l6ZV90eXBlIGksIGNvbnN0
IHNpemVfdHlwZSBuLAorICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHlwZSAqYWxs
b2MpIHsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG47ICsraikgeworICAgICAgdmFsdWVfZGVz
dHJveShpICsgaiwgYWxsb2MpOworICAgIH0KKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBQ
PgorICBmcmllbmQgY2xhc3MgYnRyZWU7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBOLCB0eXBlbmFt
ZSBSLCB0eXBlbmFtZSBQPgorICBmcmllbmQgc3RydWN0IGJ0cmVlX2l0ZXJhdG9yOworICBmcmll
bmQgY2xhc3MgQnRyZWVOb2RlUGVlcjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2RlLCB0
eXBlbmFtZSBSZWZlcmVuY2UsIHR5cGVuYW1lIFBvaW50ZXI+CitzdHJ1Y3QgYnRyZWVfaXRlcmF0
b3IgeworIHByaXZhdGU6CisgIHVzaW5nIGtleV90eXBlID0gdHlwZW5hbWUgTm9kZTo6a2V5X3R5
cGU7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVuYW1lIE5vZGU6OnNpemVfdHlwZTsKKyAgdXNp
bmcgcGFyYW1zX3R5cGUgPSB0eXBlbmFtZSBOb2RlOjpwYXJhbXNfdHlwZTsKKworICB1c2luZyBu
b2RlX3R5cGUgPSBOb2RlOworICB1c2luZyBub3JtYWxfbm9kZSA9IHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0PE5vZGU+Ojp0eXBlOworICB1c2luZyBjb25zdF9ub2RlID0gY29uc3QgTm9kZTsK
KyAgdXNpbmcgbm9ybWFsX3BvaW50ZXIgPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6cG9pbnRlcjsK
KyAgdXNpbmcgbm9ybWFsX3JlZmVyZW5jZSA9IHR5cGVuYW1lIHBhcmFtc190eXBlOjpyZWZlcmVu
Y2U7CisgIHVzaW5nIGNvbnN0X3BvaW50ZXIgPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6Y29uc3Rf
cG9pbnRlcjsKKyAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0gdHlwZW5hbWUgcGFyYW1zX3R5cGU6
OmNvbnN0X3JlZmVyZW5jZTsKKyAgdXNpbmcgc2xvdF90eXBlID0gdHlwZW5hbWUgcGFyYW1zX3R5
cGU6OnNsb3RfdHlwZTsKKworICB1c2luZyBpdGVyYXRvciA9CisgICAgICBidHJlZV9pdGVyYXRv
cjxub3JtYWxfbm9kZSwgbm9ybWFsX3JlZmVyZW5jZSwgbm9ybWFsX3BvaW50ZXI+OworICB1c2lu
ZyBjb25zdF9pdGVyYXRvciA9CisgICAgICBidHJlZV9pdGVyYXRvcjxjb25zdF9ub2RlLCBjb25z
dF9yZWZlcmVuY2UsIGNvbnN0X3BvaW50ZXI+OworCisgcHVibGljOgorICAvLyBUaGVzZSBhbGlh
c2VzIGFyZSBwdWJsaWMgZm9yIHN0ZDo6aXRlcmF0b3JfdHJhaXRzLgorICB1c2luZyBkaWZmZXJl
bmNlX3R5cGUgPSB0eXBlbmFtZSBOb2RlOjpkaWZmZXJlbmNlX3R5cGU7CisgIHVzaW5nIHZhbHVl
X3R5cGUgPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgcG9pbnRl
ciA9IFBvaW50ZXI7CisgIHVzaW5nIHJlZmVyZW5jZSA9IFJlZmVyZW5jZTsKKyAgdXNpbmcgaXRl
cmF0b3JfY2F0ZWdvcnkgPSBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnOworCisgIGJ0
cmVlX2l0ZXJhdG9yKCkgOiBub2RlKG51bGxwdHIpLCBwb3NpdGlvbigtMSkge30KKyAgYnRyZWVf
aXRlcmF0b3IoTm9kZSAqbiwgaW50IHApIDogbm9kZShuKSwgcG9zaXRpb24ocCkge30KKworICAv
LyBOT1RFOiB0aGlzIFNGSU5BRSBhbGxvd3MgZm9yIGltcGxpY2l0IGNvbnZlcnNpb25zIGZyb20g
aXRlcmF0b3IgdG8KKyAgLy8gY29uc3RfaXRlcmF0b3IsIGJ1dCBpdCBzcGVjaWZpY2FsbHkgYXZv
aWRzIGRlZmluaW5nIGNvcHkgY29uc3RydWN0b3JzIHNvCisgIC8vIHRoYXQgYnRyZWVfaXRlcmF0
b3IgY2FuIGJlIHRyaXZpYWxseSBjb3B5YWJsZS4gVGhpcyBpcyBmb3IgcGVyZm9ybWFuY2UgYW5k
CisgIC8vIGJpbmFyeSBzaXplIHJlYXNvbnMuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBOLCB0eXBl
bmFtZSBSLCB0eXBlbmFtZSBQLAorICAgICAgICAgICAgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAg
ICAgICAgICAgICAgc3RkOjppc19zYW1lPGJ0cmVlX2l0ZXJhdG9yPE4sIFIsIFA+LCBpdGVyYXRv
cj46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTxidHJlZV9pdGVy
YXRvciwgY29uc3RfaXRlcmF0b3I+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICBpbnQ+ID0gMD4K
KyAgYnRyZWVfaXRlcmF0b3IoY29uc3QgYnRyZWVfaXRlcmF0b3I8TiwgUiwgUD4gJngpICAvLyBO
T0xJTlQKKyAgICAgIDogbm9kZSh4Lm5vZGUpLCBwb3NpdGlvbih4LnBvc2l0aW9uKSB7fQorCisg
cHJpdmF0ZToKKyAgLy8gVGhpcyBTRklOQUUgYWxsb3dzIGV4cGxpY2l0IGNvbnZlcnNpb25zIGZy
b20gY29uc3RfaXRlcmF0b3IgdG8KKyAgLy8gaXRlcmF0b3IsIGJ1dCBhbHNvIGF2b2lkcyBkZWZp
bmluZyBhIGNvcHkgY29uc3RydWN0b3IuCisgIC8vIE5PVEU6IHRoZSBjb25zdF9jYXN0IGlzIHNh
ZmUgYmVjYXVzZSB0aGlzIGNvbnN0cnVjdG9yIGlzIG9ubHkgY2FsbGVkIGJ5CisgIC8vIG5vbi1j
b25zdCBtZXRob2RzIGFuZCB0aGUgY29udGFpbmVyIG93bnMgdGhlIG5vZGVzLgorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTiwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUCwKKyAgICAgICAgICAgIGFic2w6
OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTxidHJlZV9pdGVyYXRv
cjxOLCBSLCBQPiwgY29uc3RfaXRlcmF0b3I+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICAg
ICBzdGQ6OmlzX3NhbWU8YnRyZWVfaXRlcmF0b3IsIGl0ZXJhdG9yPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgaW50PiA9IDA+CisgIGV4cGxpY2l0IGJ0cmVlX2l0ZXJhdG9yKGNvbnN0IGJ0cmVl
X2l0ZXJhdG9yPE4sIFIsIFA+ICZ4KQorICAgICAgOiBub2RlKGNvbnN0X2Nhc3Q8bm9kZV90eXBl
ICo+KHgubm9kZSkpLCBwb3NpdGlvbih4LnBvc2l0aW9uKSB7fQorCisgIC8vIEluY3JlbWVudC9k
ZWNyZW1lbnQgdGhlIGl0ZXJhdG9yLgorICB2b2lkIGluY3JlbWVudCgpIHsKKyAgICBpZiAobm9k
ZS0+bGVhZigpICYmICsrcG9zaXRpb24gPCBub2RlLT5jb3VudCgpKSB7CisgICAgICByZXR1cm47
CisgICAgfQorICAgIGluY3JlbWVudF9zbG93KCk7CisgIH0KKyAgdm9pZCBpbmNyZW1lbnRfc2xv
dygpOworCisgIHZvaWQgZGVjcmVtZW50KCkgeworICAgIGlmIChub2RlLT5sZWFmKCkgJiYgLS1w
b3NpdGlvbiA+PSAwKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGRlY3JlbWVudF9zbG93
KCk7CisgIH0KKyAgdm9pZCBkZWNyZW1lbnRfc2xvdygpOworCisgcHVibGljOgorICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgY29uc3RfaXRlcmF0b3IgJngpIGNvbnN0IHsKKyAgICByZXR1cm4gbm9k
ZSA9PSB4Lm5vZGUgJiYgcG9zaXRpb24gPT0geC5wb3NpdGlvbjsKKyAgfQorICBib29sIG9wZXJh
dG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3IgJngpIGNvbnN0IHsKKyAgICByZXR1cm4gbm9kZSAh
PSB4Lm5vZGUgfHwgcG9zaXRpb24gIT0geC5wb3NpdGlvbjsKKyAgfQorCisgIC8vIEFjY2Vzc29y
cyBmb3IgdGhlIGtleS92YWx1ZSB0aGUgaXRlcmF0b3IgaXMgcG9pbnRpbmcgYXQuCisgIHJlZmVy
ZW5jZSBvcGVyYXRvciooKSBjb25zdCB7CisgICAgcmV0dXJuIG5vZGUtPnZhbHVlKHBvc2l0aW9u
KTsKKyAgfQorICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7CisgICAgcmV0dXJuICZub2Rl
LT52YWx1ZShwb3NpdGlvbik7CisgIH0KKworICBidHJlZV9pdGVyYXRvciYgb3BlcmF0b3IrKygp
IHsKKyAgICBpbmNyZW1lbnQoKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAgYnRyZWVfaXRl
cmF0b3ImIG9wZXJhdG9yLS0oKSB7CisgICAgZGVjcmVtZW50KCk7CisgICAgcmV0dXJuICp0aGlz
OworICB9CisgIGJ0cmVlX2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7CisgICAgYnRyZWVfaXRl
cmF0b3IgdG1wID0gKnRoaXM7CisgICAgKysqdGhpczsKKyAgICByZXR1cm4gdG1wOworICB9Cisg
IGJ0cmVlX2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7CisgICAgYnRyZWVfaXRlcmF0b3IgdG1w
ID0gKnRoaXM7CisgICAgLS0qdGhpczsKKyAgICByZXR1cm4gdG1wOworICB9CisKKyBwcml2YXRl
OgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1zPgorICBmcmllbmQgY2xhc3MgYnRyZWU7Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlPgorICBmcmllbmQgY2xhc3MgYnRyZWVfY29udGFpbmVy
OworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZT4KKyAgZnJpZW5kIGNsYXNzIGJ0cmVlX3NldF9j
b250YWluZXI7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlPgorICBmcmllbmQgY2xhc3MgYnRy
ZWVfbWFwX2NvbnRhaW5lcjsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWU+CisgIGZyaWVuZCBj
bGFzcyBidHJlZV9tdWx0aXNldF9jb250YWluZXI7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBOLCB0
eXBlbmFtZSBSLCB0eXBlbmFtZSBQPgorICBmcmllbmQgc3RydWN0IGJ0cmVlX2l0ZXJhdG9yOwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZVR5cGUsIHR5cGVuYW1lIENoZWNrZXJUeXBlPgorICBm
cmllbmQgY2xhc3MgYmFzZV9jaGVja2VyOworCisgIGNvbnN0IGtleV90eXBlICZrZXkoKSBjb25z
dCB7IHJldHVybiBub2RlLT5rZXkocG9zaXRpb24pOyB9CisgIHNsb3RfdHlwZSAqc2xvdCgpIHsg
cmV0dXJuIG5vZGUtPnNsb3QocG9zaXRpb24pOyB9CisKKyAgLy8gVGhlIG5vZGUgaW4gdGhlIHRy
ZWUgdGhlIGl0ZXJhdG9yIGlzIHBvaW50aW5nIGF0LgorICBOb2RlICpub2RlOworICAvLyBUaGUg
cG9zaXRpb24gd2l0aGluIHRoZSBub2RlIG9mIHRoZSB0cmVlIHRoZSBpdGVyYXRvciBpcyBwb2lu
dGluZyBhdC4KKyAgLy8gVE9ETyhlemIpOiBtYWtlIHRoaXMgYSBmaWVsZF90eXBlCisgIGludCBw
b3NpdGlvbjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbXM+CitjbGFzcyBidHJlZSB7
CisgIHVzaW5nIG5vZGVfdHlwZSA9IGJ0cmVlX25vZGU8UGFyYW1zPjsKKyAgdXNpbmcgaXNfa2V5
X2NvbXBhcmVfdG8gPSB0eXBlbmFtZSBQYXJhbXM6OmlzX2tleV9jb21wYXJlX3RvOworCisgIC8v
IFdlIHVzZSBhIHN0YXRpYyBlbXB0eSBub2RlIGZvciB0aGUgcm9vdC9sZWZ0bW9zdC9yaWdodG1v
c3Qgb2YgZW1wdHkgYnRyZWVzCisgIC8vIGluIG9yZGVyIHRvIGF2b2lkIGJyYW5jaGluZyBpbiBi
ZWdpbigpL2VuZCgpLgorICBzdHJ1Y3QgYWxpZ25hcyhub2RlX3R5cGU6OkFsaWdubWVudCgpKSBF
bXB0eU5vZGVUeXBlIDogbm9kZV90eXBlIHsKKyAgICB1c2luZyBmaWVsZF90eXBlID0gdHlwZW5h
bWUgbm9kZV90eXBlOjpmaWVsZF90eXBlOworICAgIG5vZGVfdHlwZSAqcGFyZW50OworICAgIGZp
ZWxkX3R5cGUgcG9zaXRpb24gPSAwOworICAgIGZpZWxkX3R5cGUgc3RhcnQgPSAwOworICAgIGZp
ZWxkX3R5cGUgY291bnQgPSAwOworICAgIC8vIG1heF9jb3VudCBtdXN0IGJlICE9IGtJbnRlcm5h
bE5vZGVNYXhDb3VudCAoc28gdGhhdCB0aGlzIG5vZGUgaXMgcmVnYXJkZWQKKyAgICAvLyBhcyBh
IGxlYWYgbm9kZSkuIG1heF9jb3VudCgpIGlzIG5ldmVyIGNhbGxlZCB3aGVuIHRoZSB0cmVlIGlz
IGVtcHR5LgorICAgIGZpZWxkX3R5cGUgbWF4X2NvdW50ID0gbm9kZV90eXBlOjprSW50ZXJuYWxO
b2RlTWF4Q291bnQgKyAxOworCisjaWZkZWYgX01TQ19WRVIKKyAgICAvLyBNU1ZDIGhhcyBjb25z
dGV4cHIgY29kZSBnZW5lcmF0aW9ucyBidWdzIGhlcmUuCisgICAgRW1wdHlOb2RlVHlwZSgpIDog
cGFyZW50KHRoaXMpIHt9CisjZWxzZQorICAgIGNvbnN0ZXhwciBFbXB0eU5vZGVUeXBlKG5vZGVf
dHlwZSAqcCkgOiBwYXJlbnQocCkge30KKyNlbmRpZgorICB9OworCisgIHN0YXRpYyBub2RlX3R5
cGUgKkVtcHR5Tm9kZSgpIHsKKyNpZmRlZiBfTVNDX1ZFUgorICAgIHN0YXRpYyBFbXB0eU5vZGVU
eXBlKiBlbXB0eV9ub2RlID0gbmV3IEVtcHR5Tm9kZVR5cGU7CisgICAgLy8gVGhpcyBhc3NlcnQg
ZmFpbHMgb24gc29tZSBvdGhlciBjb25zdHJ1Y3Rpb24gbWV0aG9kcy4KKyAgICBhc3NlcnQoZW1w
dHlfbm9kZS0+cGFyZW50ID09IGVtcHR5X25vZGUpOworICAgIHJldHVybiBlbXB0eV9ub2RlOwor
I2Vsc2UKKyAgICBzdGF0aWMgY29uc3RleHByIEVtcHR5Tm9kZVR5cGUgZW1wdHlfbm9kZSgKKyAg
ICAgICAgY29uc3RfY2FzdDxFbXB0eU5vZGVUeXBlICo+KCZlbXB0eV9ub2RlKSk7CisgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8RW1wdHlOb2RlVHlwZSAqPigmZW1wdHlfbm9kZSk7CisjZW5kaWYKKyAg
fQorCisgIGVudW0geworICAgIGtOb2RlVmFsdWVzID0gbm9kZV90eXBlOjprTm9kZVZhbHVlcywK
KyAgICBrTWluTm9kZVZhbHVlcyA9IGtOb2RlVmFsdWVzIC8gMiwKKyAgfTsKKworICBzdHJ1Y3Qg
bm9kZV9zdGF0cyB7CisgICAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjpzaXpl
X3R5cGU7CisKKyAgICBub2RlX3N0YXRzKHNpemVfdHlwZSBsLCBzaXplX3R5cGUgaSkKKyAgICAg
ICAgOiBsZWFmX25vZGVzKGwpLAorICAgICAgICAgIGludGVybmFsX25vZGVzKGkpIHsKKyAgICB9
CisKKyAgICBub2RlX3N0YXRzJiBvcGVyYXRvcis9KGNvbnN0IG5vZGVfc3RhdHMgJngpIHsKKyAg
ICAgIGxlYWZfbm9kZXMgKz0geC5sZWFmX25vZGVzOworICAgICAgaW50ZXJuYWxfbm9kZXMgKz0g
eC5pbnRlcm5hbF9ub2RlczsKKyAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBzaXpl
X3R5cGUgbGVhZl9ub2RlczsKKyAgICBzaXplX3R5cGUgaW50ZXJuYWxfbm9kZXM7CisgIH07CisK
KyBwdWJsaWM6CisgIHVzaW5nIGtleV90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjprZXlfdHlwZTsK
KyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6dmFsdWVfdHlwZTsKKyAgdXNp
bmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjpzaXplX3R5cGU7CisgIHVzaW5nIGRpZmZl
cmVuY2VfdHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6ZGlmZmVyZW5jZV90eXBlOworICB1c2luZyBr
ZXlfY29tcGFyZSA9IHR5cGVuYW1lIFBhcmFtczo6a2V5X2NvbXBhcmU7CisgIHVzaW5nIHZhbHVl
X2NvbXBhcmUgPSB0eXBlbmFtZSBQYXJhbXM6OnZhbHVlX2NvbXBhcmU7CisgIHVzaW5nIGFsbG9j
YXRvcl90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjphbGxvY2F0b3JfdHlwZTsKKyAgdXNpbmcgcmVm
ZXJlbmNlID0gdHlwZW5hbWUgUGFyYW1zOjpyZWZlcmVuY2U7CisgIHVzaW5nIGNvbnN0X3JlZmVy
ZW5jZSA9IHR5cGVuYW1lIFBhcmFtczo6Y29uc3RfcmVmZXJlbmNlOworICB1c2luZyBwb2ludGVy
ID0gdHlwZW5hbWUgUGFyYW1zOjpwb2ludGVyOworICB1c2luZyBjb25zdF9wb2ludGVyID0gdHlw
ZW5hbWUgUGFyYW1zOjpjb25zdF9wb2ludGVyOworICB1c2luZyBpdGVyYXRvciA9IGJ0cmVlX2l0
ZXJhdG9yPG5vZGVfdHlwZSwgcmVmZXJlbmNlLCBwb2ludGVyPjsKKyAgdXNpbmcgY29uc3RfaXRl
cmF0b3IgPSB0eXBlbmFtZSBpdGVyYXRvcjo6Y29uc3RfaXRlcmF0b3I7CisgIHVzaW5nIHJldmVy
c2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OworICB1c2luZyBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJh
dG9yPjsKKyAgdXNpbmcgbm9kZV9oYW5kbGVfdHlwZSA9IG5vZGVfaGFuZGxlPFBhcmFtcywgUGFy
YW1zLCBhbGxvY2F0b3JfdHlwZT47CisKKyAgLy8gSW50ZXJuYWwgdHlwZXMgbWFkZSBwdWJsaWMg
Zm9yIHVzZSBieSBidHJlZV9jb250YWluZXIgdHlwZXMuCisgIHVzaW5nIHBhcmFtc190eXBlID0g
UGFyYW1zOworICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBQYXJhbXM6OnNsb3RfdHlwZTsK
KworIHByaXZhdGU6CisgIC8vIEZvciB1c2UgaW4gY29weV9vcl9tb3ZlX3ZhbHVlc19pbl9vcmRl
ci4KKyAgY29uc3QgdmFsdWVfdHlwZSAmbWF5YmVfbW92ZV9mcm9tX2l0ZXJhdG9yKGNvbnN0X2l0
ZXJhdG9yIHgpIHsgcmV0dXJuICp4OyB9CisgIHZhbHVlX3R5cGUgJiZtYXliZV9tb3ZlX2Zyb21f
aXRlcmF0b3IoaXRlcmF0b3IgeCkgeyByZXR1cm4gc3RkOjptb3ZlKCp4KTsgfQorCisgIC8vIENv
cGllcyBvciBtb3ZlcyAoZGVwZW5kaW5nIG9uIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIpIHRoZSB2
YWx1ZXMgaW4KKyAgLy8geCBpbnRvIHRoaXMgYnRyZWUgaW4gdGhlaXIgb3JkZXIgaW4geC4gVGhp
cyBidHJlZSBtdXN0IGJlIGVtcHR5IGJlZm9yZSB0aGlzCisgIC8vIG1ldGhvZCBpcyBjYWxsZWQu
IFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4gY29weSBjb25zdHJ1Y3Rpb24sIGNvcHkKKyAgLy8gYXNz
aWdubWVudCwgYW5kIG1vdmUgYXNzaWdubWVudC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEJ0cmVl
PgorICB2b2lkIGNvcHlfb3JfbW92ZV92YWx1ZXNfaW5fb3JkZXIoQnRyZWUgKngpOworCisgIC8v
IFZhbGlkYXRlcyB0aGF0IHZhcmlvdXMgYXNzdW1wdGlvbnMvcmVxdWlyZW1lbnRzIGFyZSB0cnVl
IGF0IGNvbXBpbGUgdGltZS4KKyAgY29uc3RleHByIHN0YXRpYyBib29sIHN0YXRpY19hc3NlcnRf
dmFsaWRhdGlvbigpOworCisgcHVibGljOgorICBidHJlZShjb25zdCBrZXlfY29tcGFyZSAmY29t
cCwgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmFsbG9jKTsKKworICBidHJlZShjb25zdCBidHJlZSAm
eCk7CisgIGJ0cmVlKGJ0cmVlICYmeCkgbm9leGNlcHQKKyAgICAgIDogcm9vdF8oc3RkOjptb3Zl
KHgucm9vdF8pKSwKKyAgICAgICAgcmlnaHRtb3N0XyhhYnNsOjpleGNoYW5nZSh4LnJpZ2h0bW9z
dF8sIEVtcHR5Tm9kZSgpKSksCisgICAgICAgIHNpemVfKGFic2w6OmV4Y2hhbmdlKHguc2l6ZV8s
IDApKSB7CisgICAgeC5tdXRhYmxlX3Jvb3QoKSA9IEVtcHR5Tm9kZSgpOworICB9CisKKyAgfmJ0
cmVlKCkgeworICAgIC8vIFB1dCBzdGF0aWNfYXNzZXJ0cyBpbiBkZXN0cnVjdG9yIHRvIGF2b2lk
IHRyaWdnZXJpbmcgdGhlbSBiZWZvcmUgdGhlIHR5cGUKKyAgICAvLyBpcyBjb21wbGV0ZS4KKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19hc3NlcnRfdmFsaWRhdGlvbigpLCAiVGhpcyBjYWxsIG11
c3QgYmUgZWxpZGVkLiIpOworICAgIGNsZWFyKCk7CisgIH0KKworICAvLyBBc3NpZ24gdGhlIGNv
bnRlbnRzIG9mIHggdG8gKnRoaXMuCisgIGJ0cmVlICZvcGVyYXRvcj0oY29uc3QgYnRyZWUgJngp
OworICBidHJlZSAmb3BlcmF0b3I9KGJ0cmVlICYmeCkgbm9leGNlcHQ7CisKKyAgaXRlcmF0b3Ig
YmVnaW4oKSB7CisgICAgcmV0dXJuIGl0ZXJhdG9yKGxlZnRtb3N0KCksIDApOworICB9CisgIGNv
bnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9pdGVyYXRvcihs
ZWZ0bW9zdCgpLCAwKTsKKyAgfQorICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBpdGVyYXRvcihy
aWdodG1vc3RfLCByaWdodG1vc3RfLT5jb3VudCgpKTsgfQorICBjb25zdF9pdGVyYXRvciBlbmQo
KSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHJpZ2h0bW9zdF8sIHJpZ2h0bW9z
dF8tPmNvdW50KCkpOworICB9CisgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeworICAgIHJl
dHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsKKyAgfQorICBjb25zdF9yZXZlcnNlX2l0ZXJh
dG9yIHJiZWdpbigpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihl
bmQoKSk7CisgIH0KKyAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgeworICAgIHJldHVybiByZXZl
cnNlX2l0ZXJhdG9yKGJlZ2luKCkpOworICB9CisgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVu
ZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsK
KyAgfQorCisgIC8vIEZpbmRzIHRoZSBmaXJzdCBlbGVtZW50IHdob3NlIGtleSBpcyBub3QgbGVz
cyB0aGFuIGtleS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIGl0ZXJhdG9yIGxvd2VyX2Jv
dW5kKGNvbnN0IEsgJmtleSkgeworICAgIHJldHVybiBpbnRlcm5hbF9lbmQoaW50ZXJuYWxfbG93
ZXJfYm91bmQoa2V5KSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIGNvbnN0X2l0
ZXJhdG9yIGxvd2VyX2JvdW5kKGNvbnN0IEsgJmtleSkgY29uc3QgeworICAgIHJldHVybiBpbnRl
cm5hbF9lbmQoaW50ZXJuYWxfbG93ZXJfYm91bmQoa2V5KSk7CisgIH0KKworICAvLyBGaW5kcyB0
aGUgZmlyc3QgZWxlbWVudCB3aG9zZSBrZXkgaXMgZ3JlYXRlciB0aGFuIGtleS4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIEs+CisgIGl0ZXJhdG9yIHVwcGVyX2JvdW5kKGNvbnN0IEsgJmtleSkgewor
ICAgIHJldHVybiBpbnRlcm5hbF9lbmQoaW50ZXJuYWxfdXBwZXJfYm91bmQoa2V5KSk7CisgIH0K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIGNvbnN0X2l0ZXJhdG9yIHVwcGVyX2JvdW5kKGNv
bnN0IEsgJmtleSkgY29uc3QgeworICAgIHJldHVybiBpbnRlcm5hbF9lbmQoaW50ZXJuYWxfdXBw
ZXJfYm91bmQoa2V5KSk7CisgIH0KKworICAvLyBGaW5kcyB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHdo
aWNoIGNvbXBhcmUgZXF1YWwgdG8ga2V5LiBUaGUgZmlyc3QgbWVtYmVyIG9mCisgIC8vIHRoZSBy
ZXR1cm5lZCBwYWlyIGlzIGVxdWFsIHRvIGxvd2VyX2JvdW5kKGtleSkuIFRoZSBzZWNvbmQgbWVt
YmVyIHBhaXIgb2YKKyAgLy8gdGhlIHBhaXIgaXMgZXF1YWwgdG8gdXBwZXJfYm91bmQoa2V5KS4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+
IGVxdWFsX3JhbmdlKGNvbnN0IEsgJmtleSkgeworICAgIHJldHVybiB7bG93ZXJfYm91bmQoa2V5
KSwgdXBwZXJfYm91bmQoa2V5KX07CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIHN0
ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IGVxdWFsX3JhbmdlKGNvbnN0
IEsgJmtleSkgY29uc3QgeworICAgIHJldHVybiB7bG93ZXJfYm91bmQoa2V5KSwgdXBwZXJfYm91
bmQoa2V5KX07CisgIH0KKworICAvLyBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUgYnRyZWUgb25s
eSBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LiBUaGUKKyAgLy8gYm9vbGVhbiByZXR1cm4g
dmFsdWUgaW5kaWNhdGVzIHdoZXRoZXIgaW5zZXJ0aW9uIHN1Y2NlZWRlZCBvciBmYWlsZWQuCisg
IC8vIFJlcXVpcmVtZW50OiBpZiBga2V5YCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgYnRyZWUsIGRv
ZXMgbm90IGNvbnN1bWUgYGFyZ3NgLgorICAvLyBSZXF1aXJlbWVudDogYGtleWAgaXMgbmV2ZXIg
cmVmZXJlbmNlZCBhZnRlciBjb25zdW1pbmcgYGFyZ3NgLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUu
Li4gQXJncz4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnRfdW5pcXVlKGNvbnN0
IGtleV90eXBlICZrZXksIEFyZ3MgJiYuLi4gYXJncyk7CisKKyAgLy8gSW5zZXJ0cyB3aXRoIGhp
bnQuIENoZWNrcyB0byBzZWUgaWYgdGhlIHZhbHVlIHNob3VsZCBiZSBwbGFjZWQgaW1tZWRpYXRl
bHkKKyAgLy8gYmVmb3JlIGBwb3NpdGlvbmAgaW4gdGhlIHRyZWUuIElmIHNvLCB0aGVuIHRoZSBp
bnNlcnRpb24gd2lsbCB0YWtlCisgIC8vIGFtb3J0aXplZCBjb25zdGFudCB0aW1lLiBJZiBub3Qs
IHRoZSBpbnNlcnRpb24gd2lsbCB0YWtlIGFtb3J0aXplZAorICAvLyBsb2dhcml0aG1pYyB0aW1l
IGFzIGlmIGEgY2FsbCB0byBpbnNlcnRfdW5pcXVlKCkgd2VyZSBtYWRlLgorICAvLyBSZXF1aXJl
bWVudDogaWYgYGtleWAgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGJ0cmVlLCBkb2VzIG5vdCBjb25z
dW1lIGBhcmdzYC4KKyAgLy8gUmVxdWlyZW1lbnQ6IGBrZXlgIGlzIG5ldmVyIHJlZmVyZW5jZWQg
YWZ0ZXIgY29uc3VtaW5nIGBhcmdzYC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Cisg
IHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X2hpbnRfdW5pcXVlKGl0ZXJhdG9yIHBv
c2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBrZXlfdHlwZSAma2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBcmdzICYmLi4uIGFyZ3MpOworCisgIC8vIEluc2VydCBhIHJhbmdlIG9mIHZh
bHVlcyBpbnRvIHRoZSBidHJlZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+
CisgIHZvaWQgaW5zZXJ0X2l0ZXJhdG9yX3VuaXF1ZShJbnB1dEl0ZXJhdG9yIGIsIElucHV0SXRl
cmF0b3IgZSk7CisKKyAgLy8gSW5zZXJ0cyBhIHZhbHVlIGludG8gdGhlIGJ0cmVlLgorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmFsdWVUeXBlPgorICBpdGVyYXRvciBpbnNlcnRfbXVsdGkoY29uc3Qg
a2V5X3R5cGUgJmtleSwgVmFsdWVUeXBlICYmdik7CisKKyAgLy8gSW5zZXJ0cyBhIHZhbHVlIGlu
dG8gdGhlIGJ0cmVlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWVUeXBlPgorICBpdGVyYXRv
ciBpbnNlcnRfbXVsdGkoVmFsdWVUeXBlICYmdikgeworICAgIHJldHVybiBpbnNlcnRfbXVsdGko
cGFyYW1zX3R5cGU6OmtleSh2KSwgc3RkOjpmb3J3YXJkPFZhbHVlVHlwZT4odikpOworICB9CisK
KyAgLy8gSW5zZXJ0IHdpdGggaGludC4gQ2hlY2sgdG8gc2VlIGlmIHRoZSB2YWx1ZSBzaG91bGQg
YmUgcGxhY2VkIGltbWVkaWF0ZWx5CisgIC8vIGJlZm9yZSBwb3NpdGlvbiBpbiB0aGUgdHJlZS4g
SWYgaXQgZG9lcywgdGhlbiB0aGUgaW5zZXJ0aW9uIHdpbGwgdGFrZQorICAvLyBhbW9ydGl6ZWQg
Y29uc3RhbnQgdGltZS4gSWYgbm90LCB0aGUgaW5zZXJ0aW9uIHdpbGwgdGFrZSBhbW9ydGl6ZWQK
KyAgLy8gbG9nYXJpdGhtaWMgdGltZSBhcyBpZiBhIGNhbGwgdG8gaW5zZXJ0X211bHRpKHYpIHdl
cmUgbWFkZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KKyAgaXRlcmF0b3IgaW5z
ZXJ0X2hpbnRfbXVsdGkoaXRlcmF0b3IgcG9zaXRpb24sIFZhbHVlVHlwZSAmJnYpOworCisgIC8v
IEluc2VydCBhIHJhbmdlIG9mIHZhbHVlcyBpbnRvIHRoZSBidHJlZS4KKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIElucHV0SXRlcmF0b3I+CisgIHZvaWQgaW5zZXJ0X2l0ZXJhdG9yX211bHRpKElucHV0
SXRlcmF0b3IgYiwgSW5wdXRJdGVyYXRvciBlKTsKKworICAvLyBFcmFzZSB0aGUgc3BlY2lmaWVk
IGl0ZXJhdG9yIGZyb20gdGhlIGJ0cmVlLiBUaGUgaXRlcmF0b3IgbXVzdCBiZSB2YWxpZAorICAv
LyAoaS5lLiBub3QgZXF1YWwgdG8gZW5kKCkpLiAgUmV0dXJuIGFuIGl0ZXJhdG9yIHBvaW50aW5n
IHRvIHRoZSBub2RlIGFmdGVyCisgIC8vIHRoZSBvbmUgdGhhdCB3YXMgZXJhc2VkIChvciBlbmQo
KSBpZiBub25lIGV4aXN0cykuCisgIC8vIFJlcXVpcmVtZW50OiBkb2VzIG5vdCByZWFkIHRoZSB2
YWx1ZSBhdCBgKml0ZXJgLgorICBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBpdGVyKTsKKworICAv
LyBFcmFzZXMgcmFuZ2UuIFJldHVybnMgdGhlIG51bWJlciBvZiBrZXlzIGVyYXNlZCBhbmQgYW4g
aXRlcmF0b3IgcG9pbnRpbmcKKyAgLy8gdG8gdGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIGxhc3QgZXJh
c2VkIGVsZW1lbnQuCisgIHN0ZDo6cGFpcjxzaXplX3R5cGUsIGl0ZXJhdG9yPiBlcmFzZShpdGVy
YXRvciBiZWdpbiwgaXRlcmF0b3IgZW5kKTsKKworICAvLyBFcmFzZXMgdGhlIHNwZWNpZmllZCBr
ZXkgZnJvbSB0aGUgYnRyZWUuIFJldHVybnMgMSBpZiBhbiBlbGVtZW50IHdhcworICAvLyBlcmFz
ZWQgYW5kIDAgb3RoZXJ3aXNlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgc2l6ZV90eXBl
IGVyYXNlX3VuaXF1ZShjb25zdCBLICZrZXkpOworCisgIC8vIEVyYXNlcyBhbGwgb2YgdGhlIGVu
dHJpZXMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBrZXkgZnJvbSB0aGUKKyAgLy8gYnRyZWUuIFJl
dHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBlcmFzZWQuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBLPgorICBzaXplX3R5cGUgZXJhc2VfbXVsdGkoY29uc3QgSyAma2V5KTsKKworICAvLyBGaW5k
cyB0aGUgaXRlcmF0b3IgY29ycmVzcG9uZGluZyB0byBhIGtleSBvciByZXR1cm5zIGVuZCgpIGlm
IHRoZSBrZXkgaXMKKyAgLy8gbm90IHByZXNlbnQuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgor
ICBpdGVyYXRvciBmaW5kKGNvbnN0IEsgJmtleSkgeworICAgIHJldHVybiBpbnRlcm5hbF9lbmQo
aW50ZXJuYWxfZmluZChrZXkpKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgY29u
c3RfaXRlcmF0b3IgZmluZChjb25zdCBLICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gaW50ZXJu
YWxfZW5kKGludGVybmFsX2ZpbmQoa2V5KSk7CisgIH0KKworICAvLyBSZXR1cm5zIGEgY291bnQg
b2YgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUga2V5IGFwcGVhcnMgaW4gdGhlIGJ0cmVlLgorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgc2l6ZV90eXBlIGNvdW50X3VuaXF1ZShjb25zdCBLICZr
ZXkpIGNvbnN0IHsKKyAgICBjb25zdCBpdGVyYXRvciBiZWdpbiA9IGludGVybmFsX2ZpbmQoa2V5
KTsKKyAgICBpZiAoYmVnaW4ubm9kZSA9PSBudWxscHRyKSB7CisgICAgICAvLyBUaGUga2V5IGRv
ZXNuJ3QgZXhpc3QgaW4gdGhlIHRyZWUuCisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0
dXJuIDE7CisgIH0KKyAgLy8gUmV0dXJucyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgdGltZXMg
dGhlIGtleSBhcHBlYXJzIGluIHRoZSBidHJlZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+Cisg
IHNpemVfdHlwZSBjb3VudF9tdWx0aShjb25zdCBLICZrZXkpIGNvbnN0IHsKKyAgICBjb25zdCBh
dXRvIHJhbmdlID0gZXF1YWxfcmFuZ2Uoa2V5KTsKKyAgICByZXR1cm4gc3RkOjpkaXN0YW5jZShy
YW5nZS5maXJzdCwgcmFuZ2Uuc2Vjb25kKTsKKyAgfQorCisgIC8vIENsZWFyIHRoZSBidHJlZSwg
ZGVsZXRpbmcgYWxsIG9mIHRoZSB2YWx1ZXMgaXQgY29udGFpbnMuCisgIHZvaWQgY2xlYXIoKTsK
KworICAvLyBTd2FwIHRoZSBjb250ZW50cyBvZiAqdGhpcyBhbmQgeC4KKyAgdm9pZCBzd2FwKGJ0
cmVlICZ4KTsKKworICBjb25zdCBrZXlfY29tcGFyZSAma2V5X2NvbXAoKSBjb25zdCBub2V4Y2Vw
dCB7CisgICAgcmV0dXJuIHJvb3RfLnRlbXBsYXRlIGdldDwwPigpOworICB9CisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBMSz4KKyAgYm9vbCBjb21wYXJlX2tleXMoY29uc3QgSyAm
eCwgY29uc3QgTEsgJnkpIGNvbnN0IHsKKyAgICByZXR1cm4gY29tcGFyZV9pbnRlcm5hbDo6Y29t
cGFyZV9yZXN1bHRfYXNfbGVzc190aGFuKGtleV9jb21wKCkoeCwgeSkpOworICB9CisKKyAgdmFs
dWVfY29tcGFyZSB2YWx1ZV9jb21wKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfY29tcGFyZShrZXlf
Y29tcCgpKTsgfQorCisgIC8vIFZlcmlmaWVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGJ0cmVlLgor
ICB2b2lkIHZlcmlmeSgpIGNvbnN0OworCisgIC8vIFNpemUgcm91dGluZXMuCisgIHNpemVfdHlw
ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0KKyAgc2l6ZV90eXBlIG1heF9zaXplKCkg
Y29uc3QgeyByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90eXBlPjo6bWF4KSgpOyB9
CisgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBzaXplXyA9PSAwOyB9CisKKyAgLy8gVGhl
IGhlaWdodCBvZiB0aGUgYnRyZWUuIEFuIGVtcHR5IHRyZWUgd2lsbCBoYXZlIGhlaWdodCAwLgor
ICBzaXplX3R5cGUgaGVpZ2h0KCkgY29uc3QgeworICAgIHNpemVfdHlwZSBoID0gMDsKKyAgICBp
ZiAocm9vdCgpKSB7CisgICAgICAvLyBDb3VudCB0aGUgbGVuZ3RoIG9mIHRoZSBjaGFpbiBmcm9t
IHRoZSBsZWZ0bW9zdCBub2RlIHVwIHRvIHRoZQorICAgICAgLy8gcm9vdC4gV2UgYWN0dWFsbHkg
Y291bnQgZnJvbSB0aGUgcm9vdCBiYWNrIGFyb3VuZCB0byB0aGUgbGV2ZWwgYmVsb3cKKyAgICAg
IC8vIHRoZSByb290LCBidXQgdGhlIGNhbGN1bGF0aW9uIGlzIHRoZSBzYW1lIGJlY2F1c2Ugb2Yg
dGhlIGNpcmN1bGFyaXR5CisgICAgICAvLyBvZiB0aGF0IHRyYXZlcnNhbC4KKyAgICAgIGNvbnN0
IG5vZGVfdHlwZSAqbiA9IHJvb3QoKTsKKyAgICAgIGRvIHsKKyAgICAgICAgKytoOworICAgICAg
ICBuID0gbi0+cGFyZW50KCk7CisgICAgICB9IHdoaWxlIChuICE9IHJvb3QoKSk7CisgICAgfQor
ICAgIHJldHVybiBoOworICB9CisKKyAgLy8gVGhlIG51bWJlciBvZiBpbnRlcm5hbCwgbGVhZiBh
bmQgdG90YWwgbm9kZXMgdXNlZCBieSB0aGUgYnRyZWUuCisgIHNpemVfdHlwZSBsZWFmX25vZGVz
KCkgY29uc3QgeworICAgIHJldHVybiBpbnRlcm5hbF9zdGF0cyhyb290KCkpLmxlYWZfbm9kZXM7
CisgIH0KKyAgc2l6ZV90eXBlIGludGVybmFsX25vZGVzKCkgY29uc3QgeworICAgIHJldHVybiBp
bnRlcm5hbF9zdGF0cyhyb290KCkpLmludGVybmFsX25vZGVzOworICB9CisgIHNpemVfdHlwZSBu
b2RlcygpIGNvbnN0IHsKKyAgICBub2RlX3N0YXRzIHN0YXRzID0gaW50ZXJuYWxfc3RhdHMocm9v
dCgpKTsKKyAgICByZXR1cm4gc3RhdHMubGVhZl9ub2RlcyArIHN0YXRzLmludGVybmFsX25vZGVz
OworICB9CisKKyAgLy8gVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB1c2VkIGJ5IHRoZSBidHJl
ZS4KKyAgc2l6ZV90eXBlIGJ5dGVzX3VzZWQoKSBjb25zdCB7CisgICAgbm9kZV9zdGF0cyBzdGF0
cyA9IGludGVybmFsX3N0YXRzKHJvb3QoKSk7CisgICAgaWYgKHN0YXRzLmxlYWZfbm9kZXMgPT0g
MSAmJiBzdGF0cy5pbnRlcm5hbF9ub2RlcyA9PSAwKSB7CisgICAgICByZXR1cm4gc2l6ZW9mKCp0
aGlzKSArCisgICAgICAgICAgICAgbm9kZV90eXBlOjpMZWFmU2l6ZShyb290KCktPm1heF9jb3Vu
dCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHNpemVvZigqdGhpcykgKworICAgICAg
ICAgICAgIHN0YXRzLmxlYWZfbm9kZXMgKiBub2RlX3R5cGU6OkxlYWZTaXplKCkgKworICAgICAg
ICAgICAgIHN0YXRzLmludGVybmFsX25vZGVzICogbm9kZV90eXBlOjpJbnRlcm5hbFNpemUoKTsK
KyAgICB9CisgIH0KKworICAvLyBUaGUgYXZlcmFnZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCBwZXIg
dmFsdWUgc3RvcmVkIGluIHRoZSBidHJlZS4KKyAgc3RhdGljIGRvdWJsZSBhdmVyYWdlX2J5dGVz
X3Blcl92YWx1ZSgpIHsKKyAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcGVyIHZh
bHVlIG9uIGEgbGVhZiBub2RlIHRoYXQgaXMgNzUlCisgICAgLy8gZnVsbC4gRXhwZXJpbWVudGFs
bHksIHRoaXMgbWF0Y2hlcyB1cCBuaWNlbHkgd2l0aCB0aGUgY29tcHV0ZWQgbnVtYmVyIG9mCisg
ICAgLy8gYnl0ZXMgcGVyIHZhbHVlIGluIHRyZWVzIHRoYXQgaGFkIHRoZWlyIHZhbHVlcyBpbnNl
cnRlZCBpbiByYW5kb20gb3JkZXIuCisgICAgcmV0dXJuIG5vZGVfdHlwZTo6TGVhZlNpemUoKSAv
IChrTm9kZVZhbHVlcyAqIDAuNzUpOworICB9CisKKyAgLy8gVGhlIGZ1bGxuZXNzIG9mIHRoZSBi
dHJlZS4gQ29tcHV0ZWQgYXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYnRyZWUKKyAg
Ly8gZGl2aWRlZCBieSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMgYSB0cmVlIHdpdGgg
dGhlIGN1cnJlbnQgbnVtYmVyCisgIC8vIG9mIG5vZGVzIGNvdWxkIGhvbGQuIEEgdmFsdWUgb2Yg
MSBpbmRpY2F0ZXMgcGVyZmVjdCBzcGFjZQorICAvLyB1dGlsaXphdGlvbi4gU21hbGxlciB2YWx1
ZXMgaW5kaWNhdGUgc3BhY2Ugd2FzdGFnZS4KKyAgZG91YmxlIGZ1bGxuZXNzKCkgY29uc3Qgewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHNpemUoKSkgLyAobm9kZXMoKSAqIGtOb2Rl
VmFsdWVzKTsKKyAgfQorICAvLyBUaGUgb3ZlcmhlYWQgb2YgdGhlIGJ0cmVlIHN0cnVjdHVyZSBp
biBieXRlcyBwZXIgbm9kZS4gQ29tcHV0ZWQgYXMgdGhlCisgIC8vIHRvdGFsIG51bWJlciBvZiBi
eXRlcyB1c2VkIGJ5IHRoZSBidHJlZSBtaW51cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgZm9y
CisgIC8vIHN0b3JpbmcgZWxlbWVudHMgZGl2aWRlZCBieSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRz
LgorICBkb3VibGUgb3ZlcmhlYWQoKSBjb25zdCB7CisgICAgaWYgKGVtcHR5KCkpIHsKKyAgICAg
IHJldHVybiAwLjA7CisgICAgfQorICAgIHJldHVybiAoYnl0ZXNfdXNlZCgpIC0gc2l6ZSgpICog
c2l6ZW9mKHZhbHVlX3R5cGUpKSAvCisgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oc2l6
ZSgpKTsKKyAgfQorCisgIC8vIFRoZSBhbGxvY2F0b3IgdXNlZCBieSB0aGUgYnRyZWUuCisgIGFs
bG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7CisgICAgcmV0dXJuIGFsbG9jYXRv
cigpOworICB9CisKKyBwcml2YXRlOgorICAvLyBJbnRlcm5hbCBhY2Nlc3NvciByb3V0aW5lcy4K
KyAgbm9kZV90eXBlICpyb290KCkgeyByZXR1cm4gcm9vdF8udGVtcGxhdGUgZ2V0PDI+KCk7IH0K
KyAgY29uc3Qgbm9kZV90eXBlICpyb290KCkgY29uc3QgeyByZXR1cm4gcm9vdF8udGVtcGxhdGUg
Z2V0PDI+KCk7IH0KKyAgbm9kZV90eXBlICombXV0YWJsZV9yb290KCkgbm9leGNlcHQgeyByZXR1
cm4gcm9vdF8udGVtcGxhdGUgZ2V0PDI+KCk7IH0KKyAga2V5X2NvbXBhcmUgKm11dGFibGVfa2V5
X2NvbXAoKSBub2V4Y2VwdCB7IHJldHVybiAmcm9vdF8udGVtcGxhdGUgZ2V0PDA+KCk7IH0KKwor
ICAvLyBUaGUgbGVmdG1vc3Qgbm9kZSBpcyBzdG9yZWQgYXMgdGhlIHBhcmVudCBvZiB0aGUgcm9v
dCBub2RlLgorICBub2RlX3R5cGUgKmxlZnRtb3N0KCkgeyByZXR1cm4gcm9vdCgpLT5wYXJlbnQo
KTsgfQorICBjb25zdCBub2RlX3R5cGUgKmxlZnRtb3N0KCkgY29uc3QgeyByZXR1cm4gcm9vdCgp
LT5wYXJlbnQoKTsgfQorCisgIC8vIEFsbG9jYXRvciByb3V0aW5lcy4KKyAgYWxsb2NhdG9yX3R5
cGUgKm11dGFibGVfYWxsb2NhdG9yKCkgbm9leGNlcHQgeworICAgIHJldHVybiAmcm9vdF8udGVt
cGxhdGUgZ2V0PDE+KCk7CisgIH0KKyAgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmFsbG9jYXRvcigp
IGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gcm9vdF8udGVtcGxhdGUgZ2V0PDE+KCk7Cisg
IH0KKworICAvLyBBbGxvY2F0ZXMgYSBjb3JyZWN0bHkgYWxpZ25lZCBub2RlIG9mIGF0IGxlYXN0
IHNpemUgYnl0ZXMgdXNpbmcgdGhlCisgIC8vIGFsbG9jYXRvci4KKyAgbm9kZV90eXBlICphbGxv
Y2F0ZShjb25zdCBzaXplX3R5cGUgc2l6ZSkgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PG5vZGVfdHlwZSAqPigKKyAgICAgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpBbGxvY2F0
ZTxub2RlX3R5cGU6OkFsaWdubWVudCgpPigKKyAgICAgICAgICAgIG11dGFibGVfYWxsb2NhdG9y
KCksIHNpemUpKTsKKyAgfQorCisgIC8vIE5vZGUgY3JlYXRpb24vZGVsZXRpb24gcm91dGluZXMu
CisgIG5vZGVfdHlwZSogbmV3X2ludGVybmFsX25vZGUobm9kZV90eXBlICpwYXJlbnQpIHsKKyAg
ICBub2RlX3R5cGUgKnAgPSBhbGxvY2F0ZShub2RlX3R5cGU6OkludGVybmFsU2l6ZSgpKTsKKyAg
ICByZXR1cm4gbm9kZV90eXBlOjppbml0X2ludGVybmFsKHAsIHBhcmVudCk7CisgIH0KKyAgbm9k
ZV90eXBlKiBuZXdfbGVhZl9ub2RlKG5vZGVfdHlwZSAqcGFyZW50KSB7CisgICAgbm9kZV90eXBl
ICpwID0gYWxsb2NhdGUobm9kZV90eXBlOjpMZWFmU2l6ZSgpKTsKKyAgICByZXR1cm4gbm9kZV90
eXBlOjppbml0X2xlYWYocCwgcGFyZW50LCBrTm9kZVZhbHVlcyk7CisgIH0KKyAgbm9kZV90eXBl
ICpuZXdfbGVhZl9yb290X25vZGUoY29uc3QgaW50IG1heF9jb3VudCkgeworICAgIG5vZGVfdHlw
ZSAqcCA9IGFsbG9jYXRlKG5vZGVfdHlwZTo6TGVhZlNpemUobWF4X2NvdW50KSk7CisgICAgcmV0
dXJuIG5vZGVfdHlwZTo6aW5pdF9sZWFmKHAsIHAsIG1heF9jb3VudCk7CisgIH0KKworICAvLyBE
ZWxldGlvbiBoZWxwZXIgcm91dGluZXMuCisgIHZvaWQgZXJhc2Vfc2FtZV9ub2RlKGl0ZXJhdG9y
IGJlZ2luLCBpdGVyYXRvciBlbmQpOworICBpdGVyYXRvciBlcmFzZV9mcm9tX2xlYWZfbm9kZShp
dGVyYXRvciBiZWdpbiwgc2l6ZV90eXBlIHRvX2VyYXNlKTsKKyAgaXRlcmF0b3IgcmViYWxhbmNl
X2FmdGVyX2RlbGV0ZShpdGVyYXRvciBpdGVyKTsKKworICAvLyBEZWFsbG9jYXRlcyBhIG5vZGUg
b2YgYSBjZXJ0YWluIHNpemUgaW4gYnl0ZXMgdXNpbmcgdGhlIGFsbG9jYXRvci4KKyAgdm9pZCBk
ZWFsbG9jYXRlKGNvbnN0IHNpemVfdHlwZSBzaXplLCBub2RlX3R5cGUgKm5vZGUpIHsKKyAgICBh
YnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkRlYWxsb2NhdGU8bm9kZV90eXBlOjpBbGlnbm1lbnQo
KT4oCisgICAgICAgIG11dGFibGVfYWxsb2NhdG9yKCksIG5vZGUsIHNpemUpOworICB9CisKKyAg
dm9pZCBkZWxldGVfaW50ZXJuYWxfbm9kZShub2RlX3R5cGUgKm5vZGUpIHsKKyAgICBub2RlLT5k
ZXN0cm95KG11dGFibGVfYWxsb2NhdG9yKCkpOworICAgIGRlYWxsb2NhdGUobm9kZV90eXBlOjpJ
bnRlcm5hbFNpemUoKSwgbm9kZSk7CisgIH0KKyAgdm9pZCBkZWxldGVfbGVhZl9ub2RlKG5vZGVf
dHlwZSAqbm9kZSkgeworICAgIG5vZGUtPmRlc3Ryb3kobXV0YWJsZV9hbGxvY2F0b3IoKSk7Cisg
ICAgZGVhbGxvY2F0ZShub2RlX3R5cGU6OkxlYWZTaXplKG5vZGUtPm1heF9jb3VudCgpKSwgbm9k
ZSk7CisgIH0KKworICAvLyBSZWJhbGFuY2VzIG9yIHNwbGl0cyB0aGUgbm9kZSBpdGVyIHBvaW50
cyB0by4KKyAgdm9pZCByZWJhbGFuY2Vfb3Jfc3BsaXQoaXRlcmF0b3IgKml0ZXIpOworCisgIC8v
IE1lcmdlcyB0aGUgdmFsdWVzIG9mIGxlZnQsIHJpZ2h0IGFuZCB0aGUgZGVsaW1pdGluZyBrZXkg
b24gdGhlaXIgcGFyZW50CisgIC8vIG9udG8gbGVmdCwgcmVtb3ZpbmcgdGhlIGRlbGltaXRpbmcg
a2V5IGFuZCBkZWxldGluZyByaWdodC4KKyAgdm9pZCBtZXJnZV9ub2Rlcyhub2RlX3R5cGUgKmxl
ZnQsIG5vZGVfdHlwZSAqcmlnaHQpOworCisgIC8vIFRyaWVzIHRvIG1lcmdlIG5vZGUgd2l0aCBp
dHMgbGVmdCBvciByaWdodCBzaWJsaW5nLCBhbmQgZmFpbGluZyB0aGF0LAorICAvLyByZWJhbGFu
Y2Ugd2l0aCBpdHMgbGVmdCBvciByaWdodCBzaWJsaW5nLiBSZXR1cm5zIHRydWUgaWYgYSBtZXJn
ZQorICAvLyBvY2N1cnJlZCwgYXQgd2hpY2ggcG9pbnQgaXQgaXMgbm8gbG9uZ2VyIHZhbGlkIHRv
IGFjY2VzcyBub2RlLiBSZXR1cm5zCisgIC8vIGZhbHNlIGlmIG5vIG1lcmdpbmcgdG9vayBwbGFj
ZS4KKyAgYm9vbCB0cnlfbWVyZ2Vfb3JfcmViYWxhbmNlKGl0ZXJhdG9yICppdGVyKTsKKworICAv
LyBUcmllcyB0byBzaHJpbmsgdGhlIGhlaWdodCBvZiB0aGUgdHJlZSBieSAxLgorICB2b2lkIHRy
eV9zaHJpbmsoKTsKKworICBpdGVyYXRvciBpbnRlcm5hbF9lbmQoaXRlcmF0b3IgaXRlcikgewor
ICAgIHJldHVybiBpdGVyLm5vZGUgIT0gbnVsbHB0ciA/IGl0ZXIgOiBlbmQoKTsKKyAgfQorICBj
b25zdF9pdGVyYXRvciBpbnRlcm5hbF9lbmQoY29uc3RfaXRlcmF0b3IgaXRlcikgY29uc3Qgewor
ICAgIHJldHVybiBpdGVyLm5vZGUgIT0gbnVsbHB0ciA/IGl0ZXIgOiBlbmQoKTsKKyAgfQorCisg
IC8vIEVtcGxhY2VzIGEgdmFsdWUgaW50byB0aGUgYnRyZWUgaW1tZWRpYXRlbHkgYmVmb3JlIGl0
ZXIuIFJlcXVpcmVzIHRoYXQKKyAgLy8ga2V5KHYpIDw9IGl0ZXIua2V5KCkgYW5kICgtLWl0ZXIp
LmtleSgpIDw9IGtleSh2KS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIGl0ZXJh
dG9yIGludGVybmFsX2VtcGxhY2UoaXRlcmF0b3IgaXRlciwgQXJncyAmJi4uLiBhcmdzKTsKKwor
ICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBmaXJzdCB2YWx1ZSA+PSB0
aGUgdmFsdWUgIml0ZXIiIGlzCisgIC8vIHBvaW50aW5nIGF0LiBOb3RlIHRoYXQgIml0ZXIiIG1p
Z2h0IGJlIHBvaW50aW5nIHRvIGFuIGludmFsaWQgbG9jYXRpb24gYXMKKyAgLy8gaXRlci5wb3Np
dGlvbiA9PSBpdGVyLm5vZGUtPmNvdW50KCkuIFRoaXMgcm91dGluZSBzaW1wbHkgbW92ZXMgaXRl
ciB1cCBpbgorICAvLyB0aGUgdHJlZSB0byBhIHZhbGlkIGxvY2F0aW9uLgorICAvLyBSZXF1aXJl
czogaXRlci5ub2RlIGlzIG5vbi1udWxsLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlclR5cGU+
CisgIHN0YXRpYyBJdGVyVHlwZSBpbnRlcm5hbF9sYXN0KEl0ZXJUeXBlIGl0ZXIpOworCisgIC8v
IFJldHVybnMgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGxlYWYgcG9zaXRpb24gYXQgd2hp
Y2gga2V5IHdvdWxkCisgIC8vIHJlc2lkZSBpbiB0aGUgdHJlZS4gV2UgcHJvdmlkZSAyIHZlcnNp
b25zIG9mIGludGVybmFsX2xvY2F0ZS4gVGhlIGZpcnN0CisgIC8vIHZlcnNpb24gdXNlcyBhIGxl
c3MtdGhhbiBjb21wYXJhdG9yIGFuZCBpcyBpbmNhcGFibGUgb2YgZGlzdGluZ3Vpc2hpbmcgd2hl
bgorICAvLyB0aGVyZSBpcyBhbiBleGFjdCBtYXRjaC4gVGhlIHNlY29uZCB2ZXJzaW9uIGlzIGZv
ciB0aGUga2V5LWNvbXBhcmUtdG8KKyAgLy8gc3BlY2lhbGl6YXRpb24gYW5kIGRpc3Rpbmd1aXNo
ZXMgZXhhY3QgbWF0Y2hlcy4gVGhlIGtleS1jb21wYXJlLXRvCisgIC8vIHNwZWNpYWxpemF0aW9u
IGFsbG93cyB0aGUgY2FsbGVyIHRvIGF2b2lkIGEgc3Vic2VxdWVudCBjb21wYXJpc29uIHRvCisg
IC8vIGRldGVybWluZSBpZiBhbiBleGFjdCBtYXRjaCB3YXMgbWFkZSwgd2hpY2ggaXMgaW1wb3J0
YW50IGZvciBrZXlzIHdpdGgKKyAgLy8gZXhwZW5zaXZlIGNvbXBhcmlzb24sIHN1Y2ggYXMgc3Ry
aW5ncy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIFNlYXJjaFJlc3VsdDxpdGVyYXRvciwg
aXNfa2V5X2NvbXBhcmVfdG86OnZhbHVlPiBpbnRlcm5hbF9sb2NhdGUoCisgICAgICBjb25zdCBL
ICZrZXkpIGNvbnN0OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgorICBTZWFyY2hSZXN1bHQ8
aXRlcmF0b3IsIGZhbHNlPiBpbnRlcm5hbF9sb2NhdGVfaW1wbCgKKyAgICAgIGNvbnN0IEsgJmtl
eSwgc3RkOjpmYWxzZV90eXBlIC8qIElzQ29tcGFyZVRvICovKSBjb25zdDsKKworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSz4KKyAgU2VhcmNoUmVzdWx0PGl0ZXJhdG9yLCB0cnVlPiBpbnRlcm5hbF9s
b2NhdGVfaW1wbCgKKyAgICAgIGNvbnN0IEsgJmtleSwgc3RkOjp0cnVlX3R5cGUgLyogSXNDb21w
YXJlVG8gKi8pIGNvbnN0OworCisgIC8vIEludGVybmFsIHJvdXRpbmUgd2hpY2ggaW1wbGVtZW50
cyBsb3dlcl9ib3VuZCgpLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgaXRlcmF0b3IgaW50
ZXJuYWxfbG93ZXJfYm91bmQoY29uc3QgSyAma2V5KSBjb25zdDsKKworICAvLyBJbnRlcm5hbCBy
b3V0aW5lIHdoaWNoIGltcGxlbWVudHMgdXBwZXJfYm91bmQoKS4KKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEs+CisgIGl0ZXJhdG9yIGludGVybmFsX3VwcGVyX2JvdW5kKGNvbnN0IEsgJmtleSkgY29u
c3Q7CisKKyAgLy8gSW50ZXJuYWwgcm91dGluZSB3aGljaCBpbXBsZW1lbnRzIGZpbmQoKS4KKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIGl0ZXJhdG9yIGludGVybmFsX2ZpbmQoY29uc3QgSyAm
a2V5KSBjb25zdDsKKworICAvLyBEZWxldGVzIGEgbm9kZSBhbmQgYWxsIG9mIGl0cyBjaGlsZHJl
bi4KKyAgdm9pZCBpbnRlcm5hbF9jbGVhcihub2RlX3R5cGUgKm5vZGUpOworCisgIC8vIFZlcmlm
aWVzIHRoZSB0cmVlIHN0cnVjdHVyZSBvZiBub2RlLgorICBpbnQgaW50ZXJuYWxfdmVyaWZ5KGNv
bnN0IG5vZGVfdHlwZSAqbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlfdHlw
ZSAqbG8sIGNvbnN0IGtleV90eXBlICpoaSkgY29uc3Q7CisKKyAgbm9kZV9zdGF0cyBpbnRlcm5h
bF9zdGF0cyhjb25zdCBub2RlX3R5cGUgKm5vZGUpIGNvbnN0IHsKKyAgICAvLyBUaGUgcm9vdCBj
YW4gYmUgYSBzdGF0aWMgZW1wdHkgbm9kZS4KKyAgICBpZiAobm9kZSA9PSBudWxscHRyIHx8IChu
b2RlID09IHJvb3QoKSAmJiBlbXB0eSgpKSkgeworICAgICAgcmV0dXJuIG5vZGVfc3RhdHMoMCwg
MCk7CisgICAgfQorICAgIGlmIChub2RlLT5sZWFmKCkpIHsKKyAgICAgIHJldHVybiBub2RlX3N0
YXRzKDEsIDApOworICAgIH0KKyAgICBub2RlX3N0YXRzIHJlcygwLCAxKTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8PSBub2RlLT5jb3VudCgpOyArK2kpIHsKKyAgICAgIHJlcyArPSBpbnRlcm5h
bF9zdGF0cyhub2RlLT5jaGlsZChpKSk7CisgICAgfQorICAgIHJldHVybiByZXM7CisgIH0KKwor
IHB1YmxpYzoKKyAgLy8gRXhwb3NlZCBvbmx5IGZvciB0ZXN0cy4KKyAgc3RhdGljIGJvb2wgdGVz
dG9ubHlfdXNlc19saW5lYXJfbm9kZV9zZWFyY2goKSB7CisgICAgcmV0dXJuIG5vZGVfdHlwZTo6
dGVzdG9ubHlfdXNlc19saW5lYXJfbm9kZV9zZWFyY2goKTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
Ly8gV2UgdXNlIGNvbXByZXNzZWQgdHVwbGUgaW4gb3JkZXIgdG8gc2F2ZSBzcGFjZSBiZWNhdXNl
IGtleV9jb21wYXJlIGFuZAorICAvLyBhbGxvY2F0b3JfdHlwZSBhcmUgdXN1YWxseSBlbXB0eS4K
KyAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpDb21wcmVzc2VkVHVwbGU8a2V5X2NvbXBhcmUs
IGFsbG9jYXRvcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlX3R5cGUgKj4KKyAgICAgIHJvb3RfOworCisgIC8vIEEgcG9pbnRlciB0byB0aGUg
cmlnaHRtb3N0IG5vZGUuIE5vdGUgdGhhdCB0aGUgbGVmdG1vc3Qgbm9kZSBpcyBzdG9yZWQgYXMK
KyAgLy8gdGhlIHJvb3QncyBwYXJlbnQuCisgIG5vZGVfdHlwZSAqcmlnaHRtb3N0XzsKKworICAv
LyBOdW1iZXIgb2YgdmFsdWVzLgorICBzaXplX3R5cGUgc2l6ZV87Cit9OworCisvLy8vCisvLyBi
dHJlZV9ub2RlIG1ldGhvZHMKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVu
YW1lLi4uIEFyZ3M+CitpbmxpbmUgdm9pZCBidHJlZV9ub2RlPFA+OjplbXBsYWNlX3ZhbHVlKGNv
bnN0IHNpemVfdHlwZSBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbGxvY2F0b3JfdHlwZSAqYWxsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFyZ3MgJiYuLi4gYXJncykgeworICBhc3NlcnQoaSA8PSBjb3VudCgpKTsKKyAg
Ly8gU2hpZnQgb2xkIHZhbHVlcyB0byBjcmVhdGUgc3BhY2UgZm9yIG5ldyB2YWx1ZSBhbmQgdGhl
biBjb25zdHJ1Y3QgaXQgaW4KKyAgLy8gcGxhY2UuCisgIGlmIChpIDwgY291bnQoKSkgeworICAg
IHZhbHVlX2luaXQoY291bnQoKSwgYWxsb2MsIHNsb3QoY291bnQoKSAtIDEpKTsKKyAgICBmb3Ig
KHNpemVfdHlwZSBqID0gY291bnQoKSAtIDE7IGogPiBpOyAtLWopCisgICAgICBwYXJhbXNfdHlw
ZTo6bW92ZShhbGxvYywgc2xvdChqIC0gMSksIHNsb3QoaikpOworICAgIHZhbHVlX2Rlc3Ryb3ko
aSwgYWxsb2MpOworICB9CisgIHZhbHVlX2luaXQoaSwgYWxsb2MsIHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7CisgIHNldF9jb3VudChjb3VudCgpICsgMSk7CisKKyAgaWYgKCFsZWFmKCkg
JiYgY291bnQoKSA+IGkgKyAxKSB7CisgICAgZm9yIChpbnQgaiA9IGNvdW50KCk7IGogPiBpICsg
MTsgLS1qKSB7CisgICAgICBzZXRfY2hpbGQoaiwgY2hpbGQoaiAtIDEpKTsKKyAgICB9CisgICAg
Y2xlYXJfY2hpbGQoaSArIDEpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgoraW5s
aW5lIHZvaWQgYnRyZWVfbm9kZTxQPjo6cmVtb3ZlX3ZhbHVlKGNvbnN0IGludCBpLCBhbGxvY2F0
b3JfdHlwZSAqYWxsb2MpIHsKKyAgaWYgKCFsZWFmKCkgJiYgY291bnQoKSA+IGkgKyAxKSB7Cisg
ICAgYXNzZXJ0KGNoaWxkKGkgKyAxKS0+Y291bnQoKSA9PSAwKTsKKyAgICBmb3IgKHNpemVfdHlw
ZSBqID0gaSArIDE7IGogPCBjb3VudCgpOyArK2opIHsKKyAgICAgIHNldF9jaGlsZChqLCBjaGls
ZChqICsgMSkpOworICAgIH0KKyAgICBjbGVhcl9jaGlsZChjb3VudCgpKTsKKyAgfQorCisgIHJl
bW92ZV92YWx1ZXNfaWdub3JlX2NoaWxkcmVuKGksIC8qdG9fZXJhc2U9Ki8xLCBhbGxvYyk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgoraW5saW5lIHZvaWQgYnRyZWVfbm9kZTxQPjo6cmVt
b3ZlX3ZhbHVlc19pZ25vcmVfY2hpbGRyZW4oCisgICAgY29uc3QgaW50IGksIGNvbnN0IGludCB0
b19lcmFzZSwgYWxsb2NhdG9yX3R5cGUgKmFsbG9jKSB7CisgIHBhcmFtc190eXBlOjptb3ZlKGFs
bG9jLCBzbG90KGkgKyB0b19lcmFzZSksIHNsb3QoY291bnQoKSksIHNsb3QoaSkpOworICB2YWx1
ZV9kZXN0cm95X24oY291bnQoKSAtIHRvX2VyYXNlLCB0b19lcmFzZSwgYWxsb2MpOworICBzZXRf
Y291bnQoY291bnQoKSAtIHRvX2VyYXNlKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit2
b2lkIGJ0cmVlX25vZGU8UD46OnJlYmFsYW5jZV9yaWdodF90b19sZWZ0KGNvbnN0IGludCB0b19t
b3ZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidHJlZV9u
b2RlICpyaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWxsb2NhdG9yX3R5cGUgKmFsbG9jKSB7CisgIGFzc2VydChwYXJlbnQoKSA9PSByaWdodC0+cGFy
ZW50KCkpOworICBhc3NlcnQocG9zaXRpb24oKSArIDEgPT0gcmlnaHQtPnBvc2l0aW9uKCkpOwor
ICBhc3NlcnQocmlnaHQtPmNvdW50KCkgPj0gY291bnQoKSk7CisgIGFzc2VydCh0b19tb3ZlID49
IDEpOworICBhc3NlcnQodG9fbW92ZSA8PSByaWdodC0+Y291bnQoKSk7CisKKyAgLy8gMSkgTW92
ZSB0aGUgZGVsaW1pdGluZyB2YWx1ZSBpbiB0aGUgcGFyZW50IHRvIHRoZSBsZWZ0IG5vZGUuCisg
IHZhbHVlX2luaXQoY291bnQoKSwgYWxsb2MsIHBhcmVudCgpLT5zbG90KHBvc2l0aW9uKCkpKTsK
KworICAvLyAyKSBNb3ZlIHRoZSAodG9fbW92ZSAtIDEpIHZhbHVlcyBmcm9tIHRoZSByaWdodCBu
b2RlIHRvIHRoZSBsZWZ0IG5vZGUuCisgIHJpZ2h0LT51bmluaXRpYWxpemVkX21vdmVfbih0b19t
b3ZlIC0gMSwgMCwgY291bnQoKSArIDEsIHRoaXMsIGFsbG9jKTsKKworICAvLyAzKSBNb3ZlIHRo
ZSBuZXcgZGVsaW1pdGluZyB2YWx1ZSB0byB0aGUgcGFyZW50IGZyb20gdGhlIHJpZ2h0IG5vZGUu
CisgIHBhcmFtc190eXBlOjptb3ZlKGFsbG9jLCByaWdodC0+c2xvdCh0b19tb3ZlIC0gMSksCisg
ICAgICAgICAgICAgICAgICAgIHBhcmVudCgpLT5zbG90KHBvc2l0aW9uKCkpKTsKKworICAvLyA0
KSBTaGlmdCB0aGUgdmFsdWVzIGluIHRoZSByaWdodCBub2RlIHRvIHRoZWlyIGNvcnJlY3QgcG9z
aXRpb24uCisgIHBhcmFtc190eXBlOjptb3ZlKGFsbG9jLCByaWdodC0+c2xvdCh0b19tb3ZlKSwg
cmlnaHQtPnNsb3QocmlnaHQtPmNvdW50KCkpLAorICAgICAgICAgICAgICAgICAgICByaWdodC0+
c2xvdCgwKSk7CisKKyAgLy8gNSkgRGVzdHJveSB0aGUgbm93LWVtcHR5IHRvX21vdmUgZW50cmll
cyBpbiB0aGUgcmlnaHQgbm9kZS4KKyAgcmlnaHQtPnZhbHVlX2Rlc3Ryb3lfbihyaWdodC0+Y291
bnQoKSAtIHRvX21vdmUsIHRvX21vdmUsIGFsbG9jKTsKKworICBpZiAoIWxlYWYoKSkgeworICAg
IC8vIE1vdmUgdGhlIGNoaWxkIHBvaW50ZXJzIGZyb20gdGhlIHJpZ2h0IHRvIHRoZSBsZWZ0IG5v
ZGUuCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b19tb3ZlOyArK2kpIHsKKyAgICAgIGluaXRf
Y2hpbGQoY291bnQoKSArIGkgKyAxLCByaWdodC0+Y2hpbGQoaSkpOworICAgIH0KKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8PSByaWdodC0+Y291bnQoKSAtIHRvX21vdmU7ICsraSkgeworICAgICAg
YXNzZXJ0KGkgKyB0b19tb3ZlIDw9IHJpZ2h0LT5tYXhfY291bnQoKSk7CisgICAgICByaWdodC0+
aW5pdF9jaGlsZChpLCByaWdodC0+Y2hpbGQoaSArIHRvX21vdmUpKTsKKyAgICAgIHJpZ2h0LT5j
bGVhcl9jaGlsZChpICsgdG9fbW92ZSk7CisgICAgfQorICB9CisKKyAgLy8gRml4dXAgdGhlIGNv
dW50cyBvbiB0aGUgbGVmdCBhbmQgcmlnaHQgbm9kZXMuCisgIHNldF9jb3VudChjb3VudCgpICsg
dG9fbW92ZSk7CisgIHJpZ2h0LT5zZXRfY291bnQocmlnaHQtPmNvdW50KCkgLSB0b19tb3ZlKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit2b2lkIGJ0cmVlX25vZGU8UD46OnJlYmFsYW5j
ZV9sZWZ0X3RvX3JpZ2h0KGNvbnN0IGludCB0b19tb3ZlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBidHJlZV9ub2RlICpyaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGUgKmFsbG9jKSB7Cisg
IGFzc2VydChwYXJlbnQoKSA9PSByaWdodC0+cGFyZW50KCkpOworICBhc3NlcnQocG9zaXRpb24o
KSArIDEgPT0gcmlnaHQtPnBvc2l0aW9uKCkpOworICBhc3NlcnQoY291bnQoKSA+PSByaWdodC0+
Y291bnQoKSk7CisgIGFzc2VydCh0b19tb3ZlID49IDEpOworICBhc3NlcnQodG9fbW92ZSA8PSBj
b3VudCgpKTsKKworICAvLyBWYWx1ZXMgaW4gdGhlIHJpZ2h0IG5vZGUgYXJlIHNoaWZ0ZWQgdG8g
dGhlIHJpZ2h0IHRvIG1ha2Ugcm9vbSBmb3IgdGhlCisgIC8vIG5ldyB0b19tb3ZlIHZhbHVlcy4g
VGhlbiwgdGhlIGRlbGltaXRpbmcgdmFsdWUgaW4gdGhlIHBhcmVudCBhbmQgdGhlCisgIC8vIG90
aGVyICh0b19tb3ZlIC0gMSkgdmFsdWVzIGluIHRoZSBsZWZ0IG5vZGUgYXJlIG1vdmVkIGludG8g
dGhlIHJpZ2h0IG5vZGUuCisgIC8vIExhc3RseSwgYSBuZXcgZGVsaW1pdGluZyB2YWx1ZSBpcyBt
b3ZlZCBmcm9tIHRoZSBsZWZ0IG5vZGUgaW50byB0aGUKKyAgLy8gcGFyZW50LCBhbmQgdGhlIHJl
bWFpbmluZyBlbXB0eSBsZWZ0IG5vZGUgZW50cmllcyBhcmUgZGVzdHJveWVkLgorCisgIGlmIChy
aWdodC0+Y291bnQoKSA+PSB0b19tb3ZlKSB7CisgICAgLy8gVGhlIG9yaWdpbmFsIGxvY2F0aW9u
IG9mIHRoZSByaWdodC0+Y291bnQoKSB2YWx1ZXMgYXJlIHN1ZmZpY2llbnQgdG8gaG9sZAorICAg
IC8vIHRoZSBuZXcgdG9fbW92ZSBlbnRyaWVzIGZyb20gdGhlIHBhcmVudCBhbmQgbGVmdCBub2Rl
LgorCisgICAgLy8gMSkgU2hpZnQgZXhpc3RpbmcgdmFsdWVzIGluIHRoZSByaWdodCBub2RlIHRv
IHRoZWlyIGNvcnJlY3QgcG9zaXRpb25zLgorICAgIHJpZ2h0LT51bmluaXRpYWxpemVkX21vdmVf
bih0b19tb3ZlLCByaWdodC0+Y291bnQoKSAtIHRvX21vdmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJpZ2h0LT5jb3VudCgpLCByaWdodCwgYWxsb2MpOworICAgIGZvciAoc2xv
dF90eXBlICpzcmMgPSByaWdodC0+c2xvdChyaWdodC0+Y291bnQoKSAtIHRvX21vdmUgLSAxKSwK
KyAgICAgICAgICAgICAgICAgICAqZGVzdCA9IHJpZ2h0LT5zbG90KHJpZ2h0LT5jb3VudCgpIC0g
MSksCisgICAgICAgICAgICAgICAgICAgKmVuZCA9IHJpZ2h0LT5zbG90KDApOworICAgICAgICAg
c3JjID49IGVuZDsgLS1zcmMsIC0tZGVzdCkgeworICAgICAgcGFyYW1zX3R5cGU6Om1vdmUoYWxs
b2MsIHNyYywgZGVzdCk7CisgICAgfQorCisgICAgLy8gMikgTW92ZSB0aGUgZGVsaW1pdGluZyB2
YWx1ZSBpbiB0aGUgcGFyZW50IHRvIHRoZSByaWdodCBub2RlLgorICAgIHBhcmFtc190eXBlOjpt
b3ZlKGFsbG9jLCBwYXJlbnQoKS0+c2xvdChwb3NpdGlvbigpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICByaWdodC0+c2xvdCh0b19tb3ZlIC0gMSkpOworCisgICAgLy8gMykgTW92ZSB0aGUgKHRv
X21vdmUgLSAxKSB2YWx1ZXMgZnJvbSB0aGUgbGVmdCBub2RlIHRvIHRoZSByaWdodCBub2RlLgor
ICAgIHBhcmFtc190eXBlOjptb3ZlKGFsbG9jLCBzbG90KGNvdW50KCkgLSAodG9fbW92ZSAtIDEp
KSwgc2xvdChjb3VudCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICByaWdodC0+c2xvdCgwKSk7
CisgIH0gZWxzZSB7CisgICAgLy8gVGhlIHJpZ2h0IG5vZGUgZG9lcyBub3QgaGF2ZSBlbm91Z2gg
aW5pdGlhbGl6ZWQgc3BhY2UgdG8gaG9sZCB0aGUgbmV3CisgICAgLy8gdG9fbW92ZSBlbnRyaWVz
LCBzbyBwYXJ0IG9mIHRoZW0gd2lsbCBtb3ZlIHRvIHVuaW5pdGlhbGl6ZWQgc3BhY2UuCisKKyAg
ICAvLyAxKSBTaGlmdCBleGlzdGluZyB2YWx1ZXMgaW4gdGhlIHJpZ2h0IG5vZGUgdG8gdGhlaXIg
Y29ycmVjdCBwb3NpdGlvbnMuCisgICAgcmlnaHQtPnVuaW5pdGlhbGl6ZWRfbW92ZV9uKHJpZ2h0
LT5jb3VudCgpLCAwLCB0b19tb3ZlLCByaWdodCwgYWxsb2MpOworCisgICAgLy8gMikgTW92ZSB0
aGUgZGVsaW1pdGluZyB2YWx1ZSBpbiB0aGUgcGFyZW50IHRvIHRoZSByaWdodCBub2RlLgorICAg
IHJpZ2h0LT52YWx1ZV9pbml0KHRvX21vdmUgLSAxLCBhbGxvYywgcGFyZW50KCktPnNsb3QocG9z
aXRpb24oKSkpOworCisgICAgLy8gMykgTW92ZSB0aGUgKHRvX21vdmUgLSAxKSB2YWx1ZXMgZnJv
bSB0aGUgbGVmdCBub2RlIHRvIHRoZSByaWdodCBub2RlLgorICAgIGNvbnN0IHNpemVfdHlwZSB1
bmluaXRpYWxpemVkX3JlbWFpbmluZyA9IHRvX21vdmUgLSByaWdodC0+Y291bnQoKSAtIDE7Cisg
ICAgdW5pbml0aWFsaXplZF9tb3ZlX24odW5pbml0aWFsaXplZF9yZW1haW5pbmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY291bnQoKSAtIHVuaW5pdGlhbGl6ZWRfcmVtYWluaW5nLCByaWdo
dC0+Y291bnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCwgYWxsb2MpOworICAg
IHBhcmFtc190eXBlOjptb3ZlKGFsbG9jLCBzbG90KGNvdW50KCkgLSAodG9fbW92ZSAtIDEpKSwK
KyAgICAgICAgICAgICAgICAgICAgICBzbG90KGNvdW50KCkgLSB1bmluaXRpYWxpemVkX3JlbWFp
bmluZyksIHJpZ2h0LT5zbG90KDApKTsKKyAgfQorCisgIC8vIDQpIE1vdmUgdGhlIG5ldyBkZWxp
bWl0aW5nIHZhbHVlIHRvIHRoZSBwYXJlbnQgZnJvbSB0aGUgbGVmdCBub2RlLgorICBwYXJhbXNf
dHlwZTo6bW92ZShhbGxvYywgc2xvdChjb3VudCgpIC0gdG9fbW92ZSksIHBhcmVudCgpLT5zbG90
KHBvc2l0aW9uKCkpKTsKKworICAvLyA1KSBEZXN0cm95IHRoZSBub3ctZW1wdHkgdG9fbW92ZSBl
bnRyaWVzIGluIHRoZSBsZWZ0IG5vZGUuCisgIHZhbHVlX2Rlc3Ryb3lfbihjb3VudCgpIC0gdG9f
bW92ZSwgdG9fbW92ZSwgYWxsb2MpOworCisgIGlmICghbGVhZigpKSB7CisgICAgLy8gTW92ZSB0
aGUgY2hpbGQgcG9pbnRlcnMgZnJvbSB0aGUgbGVmdCB0byB0aGUgcmlnaHQgbm9kZS4KKyAgICBm
b3IgKGludCBpID0gcmlnaHQtPmNvdW50KCk7IGkgPj0gMDsgLS1pKSB7CisgICAgICByaWdodC0+
aW5pdF9jaGlsZChpICsgdG9fbW92ZSwgcmlnaHQtPmNoaWxkKGkpKTsKKyAgICAgIHJpZ2h0LT5j
bGVhcl9jaGlsZChpKTsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gdG9fbW92ZTsg
KytpKSB7CisgICAgICByaWdodC0+aW5pdF9jaGlsZChpIC0gMSwgY2hpbGQoY291bnQoKSAtIHRv
X21vdmUgKyBpKSk7CisgICAgICBjbGVhcl9jaGlsZChjb3VudCgpIC0gdG9fbW92ZSArIGkpOwor
ICAgIH0KKyAgfQorCisgIC8vIEZpeHVwIHRoZSBjb3VudHMgb24gdGhlIGxlZnQgYW5kIHJpZ2h0
IG5vZGVzLgorICBzZXRfY291bnQoY291bnQoKSAtIHRvX21vdmUpOworICByaWdodC0+c2V0X2Nv
dW50KHJpZ2h0LT5jb3VudCgpICsgdG9fbW92ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQ
Pgordm9pZCBidHJlZV9ub2RlPFA+OjpzcGxpdChjb25zdCBpbnQgaW5zZXJ0X3Bvc2l0aW9uLCBi
dHJlZV9ub2RlICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHlw
ZSAqYWxsb2MpIHsKKyAgYXNzZXJ0KGRlc3QtPmNvdW50KCkgPT0gMCk7CisgIGFzc2VydChtYXhf
Y291bnQoKSA9PSBrTm9kZVZhbHVlcyk7CisKKyAgLy8gV2UgYmlhcyB0aGUgc3BsaXQgYmFzZWQg
b24gdGhlIHBvc2l0aW9uIGJlaW5nIGluc2VydGVkLiBJZiB3ZSdyZQorICAvLyBpbnNlcnRpbmcg
YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGVmdCBub2RlIHRoZW4gYmlhcyB0aGUgc3BsaXQgdG8g
cHV0CisgIC8vIG1vcmUgdmFsdWVzIG9uIHRoZSByaWdodCBub2RlLiBJZiB3ZSdyZSBpbnNlcnRp
bmcgYXQgdGhlIGVuZCBvZiB0aGUKKyAgLy8gcmlnaHQgbm9kZSB0aGVuIGJpYXMgdGhlIHNwbGl0
IHRvIHB1dCBtb3JlIHZhbHVlcyBvbiB0aGUgbGVmdCBub2RlLgorICBpZiAoaW5zZXJ0X3Bvc2l0
aW9uID09IDApIHsKKyAgICBkZXN0LT5zZXRfY291bnQoY291bnQoKSAtIDEpOworICB9IGVsc2Ug
aWYgKGluc2VydF9wb3NpdGlvbiA9PSBrTm9kZVZhbHVlcykgeworICAgIGRlc3QtPnNldF9jb3Vu
dCgwKTsKKyAgfSBlbHNlIHsKKyAgICBkZXN0LT5zZXRfY291bnQoY291bnQoKSAvIDIpOworICB9
CisgIHNldF9jb3VudChjb3VudCgpIC0gZGVzdC0+Y291bnQoKSk7CisgIGFzc2VydChjb3VudCgp
ID49IDEpOworCisgIC8vIE1vdmUgdmFsdWVzIGZyb20gdGhlIGxlZnQgc2libGluZyB0byB0aGUg
cmlnaHQgc2libGluZy4KKyAgdW5pbml0aWFsaXplZF9tb3ZlX24oZGVzdC0+Y291bnQoKSwgY291
bnQoKSwgMCwgZGVzdCwgYWxsb2MpOworCisgIC8vIERlc3Ryb3kgdGhlIG5vdy1lbXB0eSBlbnRy
aWVzIGluIHRoZSBsZWZ0IG5vZGUuCisgIHZhbHVlX2Rlc3Ryb3lfbihjb3VudCgpLCBkZXN0LT5j
b3VudCgpLCBhbGxvYyk7CisKKyAgLy8gVGhlIHNwbGl0IGtleSBpcyB0aGUgbGFyZ2VzdCB2YWx1
ZSBpbiB0aGUgbGVmdCBzaWJsaW5nLgorICBzZXRfY291bnQoY291bnQoKSAtIDEpOworICBwYXJl
bnQoKS0+ZW1wbGFjZV92YWx1ZShwb3NpdGlvbigpLCBhbGxvYywgc2xvdChjb3VudCgpKSk7Cisg
IHZhbHVlX2Rlc3Ryb3koY291bnQoKSwgYWxsb2MpOworICBwYXJlbnQoKS0+aW5pdF9jaGlsZChw
b3NpdGlvbigpICsgMSwgZGVzdCk7CisKKyAgaWYgKCFsZWFmKCkpIHsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8PSBkZXN0LT5jb3VudCgpOyArK2kpIHsKKyAgICAgIGFzc2VydChjaGlsZChjb3Vu
dCgpICsgaSArIDEpICE9IG51bGxwdHIpOworICAgICAgZGVzdC0+aW5pdF9jaGlsZChpLCBjaGls
ZChjb3VudCgpICsgaSArIDEpKTsKKyAgICAgIGNsZWFyX2NoaWxkKGNvdW50KCkgKyBpICsgMSk7
CisgICAgfQorICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordm9pZCBidHJlZV9ub2Rl
PFA+OjptZXJnZShidHJlZV9ub2RlICpzcmMsIGFsbG9jYXRvcl90eXBlICphbGxvYykgeworICBh
c3NlcnQocGFyZW50KCkgPT0gc3JjLT5wYXJlbnQoKSk7CisgIGFzc2VydChwb3NpdGlvbigpICsg
MSA9PSBzcmMtPnBvc2l0aW9uKCkpOworCisgIC8vIE1vdmUgdGhlIGRlbGltaXRpbmcgdmFsdWUg
dG8gdGhlIGxlZnQgbm9kZS4KKyAgdmFsdWVfaW5pdChjb3VudCgpLCBhbGxvYywgcGFyZW50KCkt
PnNsb3QocG9zaXRpb24oKSkpOworCisgIC8vIE1vdmUgdGhlIHZhbHVlcyBmcm9tIHRoZSByaWdo
dCB0byB0aGUgbGVmdCBub2RlLgorICBzcmMtPnVuaW5pdGlhbGl6ZWRfbW92ZV9uKHNyYy0+Y291
bnQoKSwgMCwgY291bnQoKSArIDEsIHRoaXMsIGFsbG9jKTsKKworICAvLyBEZXN0cm95IHRoZSBu
b3ctZW1wdHkgZW50cmllcyBpbiB0aGUgcmlnaHQgbm9kZS4KKyAgc3JjLT52YWx1ZV9kZXN0cm95
X24oMCwgc3JjLT5jb3VudCgpLCBhbGxvYyk7CisKKyAgaWYgKCFsZWFmKCkpIHsKKyAgICAvLyBN
b3ZlIHRoZSBjaGlsZCBwb2ludGVycyBmcm9tIHRoZSByaWdodCB0byB0aGUgbGVmdCBub2RlLgor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IHNyYy0+Y291bnQoKTsgKytpKSB7CisgICAgICBpbml0
X2NoaWxkKGNvdW50KCkgKyBpICsgMSwgc3JjLT5jaGlsZChpKSk7CisgICAgICBzcmMtPmNsZWFy
X2NoaWxkKGkpOworICAgIH0KKyAgfQorCisgIC8vIEZpeHVwIHRoZSBjb3VudHMgb24gdGhlIHNy
YyBhbmQgZGVzdCBub2Rlcy4KKyAgc2V0X2NvdW50KDEgKyBjb3VudCgpICsgc3JjLT5jb3VudCgp
KTsKKyAgc3JjLT5zZXRfY291bnQoMCk7CisKKyAgLy8gUmVtb3ZlIHRoZSB2YWx1ZSBvbiB0aGUg
cGFyZW50IG5vZGUuCisgIHBhcmVudCgpLT5yZW1vdmVfdmFsdWUocG9zaXRpb24oKSwgYWxsb2Mp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWVfbm9kZTxQPjo6c3dhcChi
dHJlZV9ub2RlICp4LCBhbGxvY2F0b3JfdHlwZSAqYWxsb2MpIHsKKyAgdXNpbmcgc3RkOjpzd2Fw
OworICBhc3NlcnQobGVhZigpID09IHgtPmxlYWYoKSk7CisKKyAgLy8gRGV0ZXJtaW5lIHdoaWNo
IGlzIHRoZSBzbWFsbGVyL2xhcmdlciBub2RlLgorICBidHJlZV9ub2RlICpzbWFsbGVyID0gdGhp
cywgKmxhcmdlciA9IHg7CisgIGlmIChzbWFsbGVyLT5jb3VudCgpID4gbGFyZ2VyLT5jb3VudCgp
KSB7CisgICAgc3dhcChzbWFsbGVyLCBsYXJnZXIpOworICB9CisKKyAgLy8gU3dhcCB0aGUgdmFs
dWVzLgorICBmb3IgKHNsb3RfdHlwZSAqYSA9IHNtYWxsZXItPnNsb3QoMCksICpiID0gbGFyZ2Vy
LT5zbG90KDApLAorICAgICAgICAgICAgICAgICAqZW5kID0gYSArIHNtYWxsZXItPmNvdW50KCk7
CisgICAgICAgYSAhPSBlbmQ7ICsrYSwgKytiKSB7CisgICAgcGFyYW1zX3R5cGU6OnN3YXAoYWxs
b2MsIGEsIGIpOworICB9CisKKyAgLy8gTW92ZSB2YWx1ZXMgdGhhdCBjYW4ndCBiZSBzd2FwcGVk
LgorICBjb25zdCBzaXplX3R5cGUgdG9fbW92ZSA9IGxhcmdlci0+Y291bnQoKSAtIHNtYWxsZXIt
PmNvdW50KCk7CisgIGxhcmdlci0+dW5pbml0aWFsaXplZF9tb3ZlX24odG9fbW92ZSwgc21hbGxl
ci0+Y291bnQoKSwgc21hbGxlci0+Y291bnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbWFsbGVyLCBhbGxvYyk7CisgIGxhcmdlci0+dmFsdWVfZGVzdHJveV9uKHNtYWxsZXIt
PmNvdW50KCksIHRvX21vdmUsIGFsbG9jKTsKKworICBpZiAoIWxlYWYoKSkgeworICAgIC8vIFN3
YXAgdGhlIGNoaWxkIHBvaW50ZXJzLgorICAgIHN0ZDo6c3dhcF9yYW5nZXMoJnNtYWxsZXItPm11
dGFibGVfY2hpbGQoMCksCisgICAgICAgICAgICAgICAgICAgICAmc21hbGxlci0+bXV0YWJsZV9j
aGlsZChzbWFsbGVyLT5jb3VudCgpICsgMSksCisgICAgICAgICAgICAgICAgICAgICAmbGFyZ2Vy
LT5tdXRhYmxlX2NoaWxkKDApKTsKKyAgICAvLyBVcGRhdGUgc3dhcHBlZCBjaGlsZHJlbidzIHBh
cmVudCBwb2ludGVycy4KKyAgICBpbnQgaSA9IDA7CisgICAgZm9yICg7IGkgPD0gc21hbGxlci0+
Y291bnQoKTsgKytpKSB7CisgICAgICBzbWFsbGVyLT5jaGlsZChpKS0+c2V0X3BhcmVudChzbWFs
bGVyKTsKKyAgICAgIGxhcmdlci0+Y2hpbGQoaSktPnNldF9wYXJlbnQobGFyZ2VyKTsKKyAgICB9
CisgICAgLy8gTW92ZSB0aGUgY2hpbGQgcG9pbnRlcnMgdGhhdCBjb3VsZG4ndCBiZSBzd2FwcGVk
LgorICAgIGZvciAoOyBpIDw9IGxhcmdlci0+Y291bnQoKTsgKytpKSB7CisgICAgICBzbWFsbGVy
LT5pbml0X2NoaWxkKGksIGxhcmdlci0+Y2hpbGQoaSkpOworICAgICAgbGFyZ2VyLT5jbGVhcl9j
aGlsZChpKTsKKyAgICB9CisgIH0KKworICAvLyBTd2FwIHRoZSBjb3VudHMuCisgIHN3YXAobXV0
YWJsZV9jb3VudCgpLCB4LT5tdXRhYmxlX2NvdW50KCkpOworfQorCisvLy8vCisvLyBidHJlZV9p
dGVyYXRvciBtZXRob2RzCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTiwgdHlwZW5hbWUgUiwgdHlwZW5h
bWUgUD4KK3ZvaWQgYnRyZWVfaXRlcmF0b3I8TiwgUiwgUD46OmluY3JlbWVudF9zbG93KCkgewor
ICBpZiAobm9kZS0+bGVhZigpKSB7CisgICAgYXNzZXJ0KHBvc2l0aW9uID49IG5vZGUtPmNvdW50
KCkpOworICAgIGJ0cmVlX2l0ZXJhdG9yIHNhdmUoKnRoaXMpOworICAgIHdoaWxlIChwb3NpdGlv
biA9PSBub2RlLT5jb3VudCgpICYmICFub2RlLT5pc19yb290KCkpIHsKKyAgICAgIGFzc2VydChu
b2RlLT5wYXJlbnQoKS0+Y2hpbGQobm9kZS0+cG9zaXRpb24oKSkgPT0gbm9kZSk7CisgICAgICBw
b3NpdGlvbiA9IG5vZGUtPnBvc2l0aW9uKCk7CisgICAgICBub2RlID0gbm9kZS0+cGFyZW50KCk7
CisgICAgfQorICAgIGlmIChwb3NpdGlvbiA9PSBub2RlLT5jb3VudCgpKSB7CisgICAgICAqdGhp
cyA9IHNhdmU7CisgICAgfQorICB9IGVsc2UgeworICAgIGFzc2VydChwb3NpdGlvbiA8IG5vZGUt
PmNvdW50KCkpOworICAgIG5vZGUgPSBub2RlLT5jaGlsZChwb3NpdGlvbiArIDEpOworICAgIHdo
aWxlICghbm9kZS0+bGVhZigpKSB7CisgICAgICBub2RlID0gbm9kZS0+Y2hpbGQoMCk7CisgICAg
fQorICAgIHBvc2l0aW9uID0gMDsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTiwgdHlw
ZW5hbWUgUiwgdHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWVfaXRlcmF0b3I8TiwgUiwgUD46OmRlY3Jl
bWVudF9zbG93KCkgeworICBpZiAobm9kZS0+bGVhZigpKSB7CisgICAgYXNzZXJ0KHBvc2l0aW9u
IDw9IC0xKTsKKyAgICBidHJlZV9pdGVyYXRvciBzYXZlKCp0aGlzKTsKKyAgICB3aGlsZSAocG9z
aXRpb24gPCAwICYmICFub2RlLT5pc19yb290KCkpIHsKKyAgICAgIGFzc2VydChub2RlLT5wYXJl
bnQoKS0+Y2hpbGQobm9kZS0+cG9zaXRpb24oKSkgPT0gbm9kZSk7CisgICAgICBwb3NpdGlvbiA9
IG5vZGUtPnBvc2l0aW9uKCkgLSAxOworICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudCgpOworICAg
IH0KKyAgICBpZiAocG9zaXRpb24gPCAwKSB7CisgICAgICAqdGhpcyA9IHNhdmU7CisgICAgfQor
ICB9IGVsc2UgeworICAgIGFzc2VydChwb3NpdGlvbiA+PSAwKTsKKyAgICBub2RlID0gbm9kZS0+
Y2hpbGQocG9zaXRpb24pOworICAgIHdoaWxlICghbm9kZS0+bGVhZigpKSB7CisgICAgICBub2Rl
ID0gbm9kZS0+Y2hpbGQobm9kZS0+Y291bnQoKSk7CisgICAgfQorICAgIHBvc2l0aW9uID0gbm9k
ZS0+Y291bnQoKSAtIDE7CisgIH0KK30KKworLy8vLworLy8gYnRyZWUgbWV0aG9kcwordGVtcGxh
dGUgPHR5cGVuYW1lIFA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQnRyZWU+Cit2b2lkIGJ0cmVlPFA+
Ojpjb3B5X29yX21vdmVfdmFsdWVzX2luX29yZGVyKEJ0cmVlICp4KSB7CisgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lPGJ0cmVlLCBCdHJlZT46OnZhbHVlIHx8CisgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6aXNfc2FtZTxjb25zdCBidHJlZSwgQnRyZWU+Ojp2YWx1ZSwKKyAgICAgICAgICAg
ICAgICAiQnRyZWUgdHlwZSBtdXN0IGJlIHNhbWUgb3IgY29uc3QuIik7CisgIGFzc2VydChlbXB0
eSgpKTsKKworICAvLyBXZSBjYW4gYXZvaWQga2V5IGNvbXBhcmlzb25zIGJlY2F1c2Ugd2Uga25v
dyB0aGUgb3JkZXIgb2YgdGhlCisgIC8vIHZhbHVlcyBpcyB0aGUgc2FtZSBvcmRlciB3ZSdsbCBz
dG9yZSB0aGVtIGluLgorICBhdXRvIGl0ZXIgPSB4LT5iZWdpbigpOworICBpZiAoaXRlciA9PSB4
LT5lbmQoKSkgcmV0dXJuOworICBpbnNlcnRfbXVsdGkobWF5YmVfbW92ZV9mcm9tX2l0ZXJhdG9y
KGl0ZXIpKTsKKyAgKytpdGVyOworICBmb3IgKDsgaXRlciAhPSB4LT5lbmQoKTsgKytpdGVyKSB7
CisgICAgLy8gSWYgdGhlIGJ0cmVlIGlzIG5vdCBlbXB0eSwgd2UgY2FuIGp1c3QgaW5zZXJ0IHRo
ZSBuZXcgdmFsdWUgYXQgdGhlIGVuZAorICAgIC8vIG9mIHRoZSB0cmVlLgorICAgIGludGVybmFs
X2VtcGxhY2UoZW5kKCksIG1heWJlX21vdmVfZnJvbV9pdGVyYXRvcihpdGVyKSk7CisgIH0KK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Citjb25zdGV4cHIgYm9vbCBidHJlZTxQPjo6c3RhdGlj
X2Fzc2VydF92YWxpZGF0aW9uKCkgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19j
b3B5X2NvbnN0cnVjdGlibGU8a2V5X2NvbXBhcmU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAi
S2V5IGNvbXBhcmlzb24gbXVzdCBiZSBub3Rocm93IGNvcHkgY29uc3RydWN0aWJsZSIpOworICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8YWxsb2NhdG9y
X3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiQWxsb2NhdG9yIG11c3QgYmUgbm90aHJv
dyBjb3B5IGNvbnN0cnVjdGlibGUiKTsKKyAgc3RhdGljX2Fzc2VydCh0eXBlX3RyYWl0c19pbnRl
cm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPGl0ZXJhdG9yPjo6dmFsdWUsCisgICAgICAgICAg
ICAgICAgIml0ZXJhdG9yIG5vdCB0cml2aWFsbHkgY29weWFibGUuIik7CisKKyAgLy8gTm90ZTog
V2UgYXNzZXJ0IHRoYXQga1RhcmdldFZhbHVlcywgd2hpY2ggaXMgY29tcHV0ZWQgZnJvbQorICAv
LyBQYXJhbXM6OmtUYXJnZXROb2RlU2l6ZSwgbXVzdCBmaXQgdGhlIG5vZGVfdHlwZTo6ZmllbGRf
dHlwZS4KKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIGtOb2RlVmFsdWVzIDwgKDEgPDwgKDggKiBz
aXplb2YodHlwZW5hbWUgbm9kZV90eXBlOjpmaWVsZF90eXBlKSkpLAorICAgICAgInRhcmdldCBu
b2RlIHNpemUgdG9vIGxhcmdlIik7CisKKyAgLy8gVmVyaWZ5IHRoYXQga2V5X2NvbXBhcmUgcmV0
dXJucyBhbiBhYnNsOjp7d2VhayxzdHJvbmd9X29yZGVyaW5nIG9yIGJvb2wuCisgIHVzaW5nIGNv
bXBhcmVfcmVzdWx0X3R5cGUgPQorICAgICAgYWJzbDo6cmVzdWx0X29mX3Q8a2V5X2NvbXBhcmUo
a2V5X3R5cGUsIGtleV90eXBlKT47CisgIHN0YXRpY19hc3NlcnQoCisgICAgICBzdGQ6OmlzX3Nh
bWU8Y29tcGFyZV9yZXN1bHRfdHlwZSwgYm9vbD46OnZhbHVlIHx8CisgICAgICAgICAgc3RkOjpp
c19jb252ZXJ0aWJsZTxjb21wYXJlX3Jlc3VsdF90eXBlLCBhYnNsOjp3ZWFrX29yZGVyaW5nPjo6
dmFsdWUsCisgICAgICAia2V5IGNvbXBhcmlzb24gZnVuY3Rpb24gbXVzdCByZXR1cm4gYWJzbDo6
e3dlYWssc3Ryb25nfV9vcmRlcmluZyBvciAiCisgICAgICAiYm9vbC4iKTsKKworICAvLyBUZXN0
IHRoZSBhc3N1bXB0aW9uIG1hZGUgaW4gc2V0dGluZyBrTm9kZVZhbHVlU3BhY2UuCisgIHN0YXRp
Y19hc3NlcnQobm9kZV90eXBlOjpNaW5pbXVtT3ZlcmhlYWQoKSA+PSBzaXplb2Yodm9pZCAqKSAr
IDQsCisgICAgICAgICAgICAgICAgIm5vZGUgc3BhY2UgYXNzdW1wdGlvbiBpbmNvcnJlY3QiKTsK
KworICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+CitidHJlZTxQPjo6
YnRyZWUoY29uc3Qga2V5X2NvbXBhcmUgJmNvbXAsIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhbGxv
YykKKyAgICA6IHJvb3RfKGNvbXAsIGFsbG9jLCBFbXB0eU5vZGUoKSksIHJpZ2h0bW9zdF8oRW1w
dHlOb2RlKCkpLCBzaXplXygwKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK2J0cmVlPFA+
OjpidHJlZShjb25zdCBidHJlZSAmeCkgOiBidHJlZSh4LmtleV9jb21wKCksIHguYWxsb2NhdG9y
KCkpIHsKKyAgY29weV9vcl9tb3ZlX3ZhbHVlc19pbl9vcmRlcigmeCk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CithdXRvIGJ0cmVlPFA+
OjppbnNlcnRfdW5pcXVlKGNvbnN0IGtleV90eXBlICZrZXksIEFyZ3MgJiYuLi4gYXJncykKKyAg
ICAtPiBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHsKKyAgaWYgKGVtcHR5KCkpIHsKKyAgICBt
dXRhYmxlX3Jvb3QoKSA9IHJpZ2h0bW9zdF8gPSBuZXdfbGVhZl9yb290X25vZGUoMSk7CisgIH0K
KworICBhdXRvIHJlcyA9IGludGVybmFsX2xvY2F0ZShrZXkpOworICBpdGVyYXRvciAmaXRlciA9
IHJlcy52YWx1ZTsKKworICBpZiAocmVzLkhhc01hdGNoKCkpIHsKKyAgICBpZiAocmVzLklzRXEo
KSkgeworICAgICAgLy8gVGhlIGtleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgdHJlZSwgZG8gbm90
aGluZy4KKyAgICAgIHJldHVybiB7aXRlciwgZmFsc2V9OworICAgIH0KKyAgfSBlbHNlIHsKKyAg
ICBpdGVyYXRvciBsYXN0ID0gaW50ZXJuYWxfbGFzdChpdGVyKTsKKyAgICBpZiAobGFzdC5ub2Rl
ICYmICFjb21wYXJlX2tleXMoa2V5LCBsYXN0LmtleSgpKSkgeworICAgICAgLy8gVGhlIGtleSBh
bHJlYWR5IGV4aXN0cyBpbiB0aGUgdHJlZSwgZG8gbm90aGluZy4KKyAgICAgIHJldHVybiB7bGFz
dCwgZmFsc2V9OworICAgIH0KKyAgfQorICByZXR1cm4ge2ludGVybmFsX2VtcGxhY2UoaXRlciwg
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSwgdHJ1ZX07Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CitpbmxpbmUgYXV0byBidHJlZTxQ
Pjo6aW5zZXJ0X2hpbnRfdW5pcXVlKGl0ZXJhdG9yIHBvc2l0aW9uLCBjb25zdCBrZXlfdHlwZSAm
a2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmdzICYmLi4u
IGFyZ3MpCisgICAgLT4gc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiB7CisgIGlmICghZW1wdHko
KSkgeworICAgIGlmIChwb3NpdGlvbiA9PSBlbmQoKSB8fCBjb21wYXJlX2tleXMoa2V5LCBwb3Np
dGlvbi5rZXkoKSkpIHsKKyAgICAgIGl0ZXJhdG9yIHByZXYgPSBwb3NpdGlvbjsKKyAgICAgIGlm
IChwb3NpdGlvbiA9PSBiZWdpbigpIHx8IGNvbXBhcmVfa2V5cygoLS1wcmV2KS5rZXkoKSwga2V5
KSkgeworICAgICAgICAvLyBwcmV2LmtleSgpIDwga2V5IDwgcG9zaXRpb24ua2V5KCkKKyAgICAg
ICAgcmV0dXJuIHtpbnRlcm5hbF9lbXBsYWNlKHBvc2l0aW9uLCBzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pLCB0cnVlfTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGNvbXBhcmVfa2V5cyhw
b3NpdGlvbi5rZXkoKSwga2V5KSkgeworICAgICAgKytwb3NpdGlvbjsKKyAgICAgIGlmIChwb3Np
dGlvbiA9PSBlbmQoKSB8fCBjb21wYXJlX2tleXMoa2V5LCBwb3NpdGlvbi5rZXkoKSkpIHsKKyAg
ICAgICAgLy8ge29yaWdpbmFsIGBwb3NpdGlvbmB9LmtleSgpIDwga2V5IDwge2N1cnJlbnQgYHBv
c2l0aW9uYH0ua2V5KCkKKyAgICAgICAgcmV0dXJuIHtpbnRlcm5hbF9lbXBsYWNlKHBvc2l0aW9u
LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pLCB0cnVlfTsKKyAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgLy8gcG9zaXRpb24ua2V5KCkgPT0ga2V5CisgICAgICByZXR1cm4ge3Bvc2l0
aW9uLCBmYWxzZX07CisgICAgfQorICB9CisgIHJldHVybiBpbnNlcnRfdW5pcXVlKGtleSwgc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KK3ZvaWQgYnRyZWU8UD46Omluc2VydF9p
dGVyYXRvcl91bmlxdWUoSW5wdXRJdGVyYXRvciBiLCBJbnB1dEl0ZXJhdG9yIGUpIHsKKyAgZm9y
ICg7IGIgIT0gZTsgKytiKSB7CisgICAgaW5zZXJ0X2hpbnRfdW5pcXVlKGVuZCgpLCBwYXJhbXNf
dHlwZTo6a2V5KCpiKSwgKmIpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordGVt
cGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KK2F1dG8gYnRyZWU8UD46Omluc2VydF9tdWx0aShj
b25zdCBrZXlfdHlwZSAma2V5LCBWYWx1ZVR5cGUgJiZ2KSAtPiBpdGVyYXRvciB7CisgIGlmIChl
bXB0eSgpKSB7CisgICAgbXV0YWJsZV9yb290KCkgPSByaWdodG1vc3RfID0gbmV3X2xlYWZfcm9v
dF9ub2RlKDEpOworICB9CisKKyAgaXRlcmF0b3IgaXRlciA9IGludGVybmFsX3VwcGVyX2JvdW5k
KGtleSk7CisgIGlmIChpdGVyLm5vZGUgPT0gbnVsbHB0cikgeworICAgIGl0ZXIgPSBlbmQoKTsK
KyAgfQorICByZXR1cm4gaW50ZXJuYWxfZW1wbGFjZShpdGVyLCBzdGQ6OmZvcndhcmQ8VmFsdWVU
eXBlPih2KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1l
IFZhbHVlVHlwZT4KK2F1dG8gYnRyZWU8UD46Omluc2VydF9oaW50X211bHRpKGl0ZXJhdG9yIHBv
c2l0aW9uLCBWYWx1ZVR5cGUgJiZ2KSAtPiBpdGVyYXRvciB7CisgIGlmICghZW1wdHkoKSkgewor
ICAgIGNvbnN0IGtleV90eXBlICZrZXkgPSBwYXJhbXNfdHlwZTo6a2V5KHYpOworICAgIGlmIChw
b3NpdGlvbiA9PSBlbmQoKSB8fCAhY29tcGFyZV9rZXlzKHBvc2l0aW9uLmtleSgpLCBrZXkpKSB7
CisgICAgICBpdGVyYXRvciBwcmV2ID0gcG9zaXRpb247CisgICAgICBpZiAocG9zaXRpb24gPT0g
YmVnaW4oKSB8fCAhY29tcGFyZV9rZXlzKGtleSwgKC0tcHJldikua2V5KCkpKSB7CisgICAgICAg
IC8vIHByZXYua2V5KCkgPD0ga2V5IDw9IHBvc2l0aW9uLmtleSgpCisgICAgICAgIHJldHVybiBp
bnRlcm5hbF9lbXBsYWNlKHBvc2l0aW9uLCBzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2KSk7Cisg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGl0ZXJhdG9yIG5leHQgPSBwb3NpdGlvbjsKKyAg
ICAgICsrbmV4dDsKKyAgICAgIGlmIChuZXh0ID09IGVuZCgpIHx8ICFjb21wYXJlX2tleXMobmV4
dC5rZXkoKSwga2V5KSkgeworICAgICAgICAvLyBwb3NpdGlvbi5rZXkoKSA8IGtleSA8PSBuZXh0
LmtleSgpCisgICAgICAgIHJldHVybiBpbnRlcm5hbF9lbXBsYWNlKG5leHQsIHN0ZDo6Zm9yd2Fy
ZDxWYWx1ZVR5cGU+KHYpKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIGluc2VydF9t
dWx0aShzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+Cit2b2lkIGJ0cmVlPFA+Ojpp
bnNlcnRfaXRlcmF0b3JfbXVsdGkoSW5wdXRJdGVyYXRvciBiLCBJbnB1dEl0ZXJhdG9yIGUpIHsK
KyAgZm9yICg7IGIgIT0gZTsgKytiKSB7CisgICAgaW5zZXJ0X2hpbnRfbXVsdGkoZW5kKCksICpi
KTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK2F1dG8gYnRyZWU8UD46Om9wZXJh
dG9yPShjb25zdCBidHJlZSAmeCkgLT4gYnRyZWUgJiB7CisgIGlmICh0aGlzICE9ICZ4KSB7Cisg
ICAgY2xlYXIoKTsKKworICAgICptdXRhYmxlX2tleV9jb21wKCkgPSB4LmtleV9jb21wKCk7Cisg
ICAgaWYgKGFic2w6OmFsbG9jYXRvcl90cmFpdHM8CisgICAgICAgICAgICBhbGxvY2F0b3JfdHlw
ZT46OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50Ojp2YWx1ZSkgeworICAg
ICAgKm11dGFibGVfYWxsb2NhdG9yKCkgPSB4LmFsbG9jYXRvcigpOworICAgIH0KKworICAgIGNv
cHlfb3JfbW92ZV92YWx1ZXNfaW5fb3JkZXIoJngpOworICB9CisgIHJldHVybiAqdGhpczsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFA+CithdXRvIGJ0cmVlPFA+OjpvcGVyYXRvcj0oYnRyZWUg
JiZ4KSBub2V4Y2VwdCAtPiBidHJlZSAmIHsKKyAgaWYgKHRoaXMgIT0gJngpIHsKKyAgICBjbGVh
cigpOworCisgICAgdXNpbmcgc3RkOjpzd2FwOworICAgIGlmIChhYnNsOjphbGxvY2F0b3JfdHJh
aXRzPAorICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGU+Ojpwcm9wYWdhdGVfb25fY29udGFpbmVy
X2NvcHlfYXNzaWdubWVudDo6dmFsdWUpIHsKKyAgICAgIC8vIE5vdGU6IGByb290X2AgYWxzbyBj
b250YWlucyB0aGUgYWxsb2NhdG9yIGFuZCB0aGUga2V5IGNvbXBhcmF0b3IuCisgICAgICBzd2Fw
KHJvb3RfLCB4LnJvb3RfKTsKKyAgICAgIHN3YXAocmlnaHRtb3N0XywgeC5yaWdodG1vc3RfKTsK
KyAgICAgIHN3YXAoc2l6ZV8sIHguc2l6ZV8pOworICAgIH0gZWxzZSB7CisgICAgICBpZiAoYWxs
b2NhdG9yKCkgPT0geC5hbGxvY2F0b3IoKSkgeworICAgICAgICBzd2FwKG11dGFibGVfcm9vdCgp
LCB4Lm11dGFibGVfcm9vdCgpKTsKKyAgICAgICAgc3dhcCgqbXV0YWJsZV9rZXlfY29tcCgpLCAq
eC5tdXRhYmxlX2tleV9jb21wKCkpOworICAgICAgICBzd2FwKHJpZ2h0bW9zdF8sIHgucmlnaHRt
b3N0Xyk7CisgICAgICAgIHN3YXAoc2l6ZV8sIHguc2l6ZV8pOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gV2UgYXJlbid0IGFsbG93ZWQgdG8gcHJvcGFnYXRlIHRoZSBhbGxvY2F0b3IgYW5k
IHRoZSBhbGxvY2F0b3IgaXMKKyAgICAgICAgLy8gZGlmZmVyZW50IHNvIHdlIGNhbid0IHRha2Ug
b3ZlciBpdHMgbWVtb3J5LiBXZSBtdXN0IG1vdmUgZWFjaCBlbGVtZW50CisgICAgICAgIC8vIGlu
ZGl2aWR1YWxseS4gV2UgbmVlZCBib3RoIGB4YCBhbmQgYHRoaXNgIHRvIGhhdmUgYHhgcyBrZXkg
Y29tcGFyYXRvcgorICAgICAgICAvLyB3aGlsZSBtb3ZpbmcgdGhlIHZhbHVlcyBzbyB3ZSBjYW4n
dCBzd2FwIHRoZSBrZXkgY29tcGFyYXRvcnMuCisgICAgICAgICptdXRhYmxlX2tleV9jb21wKCkg
PSB4LmtleV9jb21wKCk7CisgICAgICAgIGNvcHlfb3JfbW92ZV92YWx1ZXNfaW5fb3JkZXIoJngp
OworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBQPgorYXV0byBidHJlZTxQPjo6ZXJhc2UoaXRlcmF0b3IgaXRlcikgLT4gaXRlcmF0
b3IgeworICBib29sIGludGVybmFsX2RlbGV0ZSA9IGZhbHNlOworICBpZiAoIWl0ZXIubm9kZS0+
bGVhZigpKSB7CisgICAgLy8gRGVsZXRpb24gb2YgYSB2YWx1ZSBvbiBhbiBpbnRlcm5hbCBub2Rl
LiBGaXJzdCwgbW92ZSB0aGUgbGFyZ2VzdCB2YWx1ZQorICAgIC8vIGZyb20gb3VyIGxlZnQgY2hp
bGQgaGVyZSwgdGhlbiBkZWxldGUgdGhhdCBwb3NpdGlvbiAoaW4gcmVtb3ZlX3ZhbHVlKCkKKyAg
ICAvLyBiZWxvdykuIFdlIGNhbiBnZXQgdG8gdGhlIGxhcmdlc3QgdmFsdWUgZnJvbSBvdXIgbGVm
dCBjaGlsZCBieQorICAgIC8vIGRlY3JlbWVudGluZyBpdGVyLgorICAgIGl0ZXJhdG9yIGludGVy
bmFsX2l0ZXIoaXRlcik7CisgICAgLS1pdGVyOworICAgIGFzc2VydChpdGVyLm5vZGUtPmxlYWYo
KSk7CisgICAgYXNzZXJ0KCFjb21wYXJlX2tleXMoaW50ZXJuYWxfaXRlci5rZXkoKSwgaXRlci5r
ZXkoKSkpOworICAgIHBhcmFtc190eXBlOjptb3ZlKG11dGFibGVfYWxsb2NhdG9yKCksIGl0ZXIu
bm9kZS0+c2xvdChpdGVyLnBvc2l0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5h
bF9pdGVyLm5vZGUtPnNsb3QoaW50ZXJuYWxfaXRlci5wb3NpdGlvbikpOworICAgIGludGVybmFs
X2RlbGV0ZSA9IHRydWU7CisgIH0KKworICAvLyBEZWxldGUgdGhlIGtleSBmcm9tIHRoZSBsZWFm
LgorICBpdGVyLm5vZGUtPnJlbW92ZV92YWx1ZShpdGVyLnBvc2l0aW9uLCBtdXRhYmxlX2FsbG9j
YXRvcigpKTsKKyAgLS1zaXplXzsKKworICAvLyBXZSB3YW50IHRvIHJldHVybiB0aGUgbmV4dCB2
YWx1ZSBhZnRlciB0aGUgb25lIHdlIGp1c3QgZXJhc2VkLiBJZiB3ZQorICAvLyBlcmFzZWQgZnJv
bSBhbiBpbnRlcm5hbCBub2RlIChpbnRlcm5hbF9kZWxldGUgPT0gdHJ1ZSksIHRoZW4gdGhlIG5l
eHQKKyAgLy8gdmFsdWUgaXMgKysoKytpdGVyKS4gSWYgd2UgZXJhc2VkIGZyb20gYSBsZWFmIG5v
ZGUgKGludGVybmFsX2RlbGV0ZSA9PQorICAvLyBmYWxzZSkgdGhlbiB0aGUgbmV4dCB2YWx1ZSBp
cyArK2l0ZXIuIE5vdGUgdGhhdCArK2l0ZXIgbWF5IHBvaW50IHRvIGFuCisgIC8vIGludGVybmFs
IG5vZGUgYW5kIHRoZSB2YWx1ZSBpbiB0aGUgaW50ZXJuYWwgbm9kZSBtYXkgbW92ZSB0byBhIGxl
YWYgbm9kZQorICAvLyAoaXRlci5ub2RlKSB3aGVuIHJlYmFsYW5jaW5nIGlzIHBlcmZvcm1lZCBh
dCB0aGUgbGVhZiBsZXZlbC4KKworICBpdGVyYXRvciByZXMgPSByZWJhbGFuY2VfYWZ0ZXJfZGVs
ZXRlKGl0ZXIpOworCisgIC8vIElmIHdlIGVyYXNlZCBmcm9tIGFuIGludGVybmFsIG5vZGUsIGFk
dmFuY2UgdGhlIGl0ZXJhdG9yLgorICBpZiAoaW50ZXJuYWxfZGVsZXRlKSB7CisgICAgKytyZXM7
CisgIH0KKyAgcmV0dXJuIHJlczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+CithdXRvIGJ0
cmVlPFA+OjpyZWJhbGFuY2VfYWZ0ZXJfZGVsZXRlKGl0ZXJhdG9yIGl0ZXIpIC0+IGl0ZXJhdG9y
IHsKKyAgLy8gTWVyZ2UvcmViYWxhbmNlIGFzIHdlIHdhbGsgYmFjayB1cCB0aGUgdHJlZS4KKyAg
aXRlcmF0b3IgcmVzKGl0ZXIpOworICBib29sIGZpcnN0X2l0ZXJhdGlvbiA9IHRydWU7CisgIGZv
ciAoOzspIHsKKyAgICBpZiAoaXRlci5ub2RlID09IHJvb3QoKSkgeworICAgICAgdHJ5X3Nocmlu
aygpOworICAgICAgaWYgKGVtcHR5KCkpIHsKKyAgICAgICAgcmV0dXJuIGVuZCgpOworICAgICAg
fQorICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChpdGVyLm5vZGUtPmNvdW50KCkgPj0ga01p
bk5vZGVWYWx1ZXMpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBib29sIG1lcmdlZCA9IHRy
eV9tZXJnZV9vcl9yZWJhbGFuY2UoJml0ZXIpOworICAgIC8vIE9uIHRoZSBmaXJzdCBpdGVyYXRp
b24sIHdlIHNob3VsZCB1cGRhdGUgYHJlc2Agd2l0aCBgaXRlcmAgYmVjYXVzZSBgcmVzYAorICAg
IC8vIG1heSBoYXZlIGJlZW4gaW52YWxpZGF0ZWQuCisgICAgaWYgKGZpcnN0X2l0ZXJhdGlvbikg
eworICAgICAgcmVzID0gaXRlcjsKKyAgICAgIGZpcnN0X2l0ZXJhdGlvbiA9IGZhbHNlOworICAg
IH0KKyAgICBpZiAoIW1lcmdlZCkgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIGl0ZXIubm9k
ZSA9IGl0ZXIubm9kZS0+cGFyZW50KCk7CisgIH0KKworICAvLyBBZGp1c3Qgb3VyIHJldHVybiB2
YWx1ZS4gSWYgd2UncmUgcG9pbnRpbmcgYXQgdGhlIGVuZCBvZiBhIG5vZGUsIGFkdmFuY2UKKyAg
Ly8gdGhlIGl0ZXJhdG9yLgorICBpZiAocmVzLnBvc2l0aW9uID09IHJlcy5ub2RlLT5jb3VudCgp
KSB7CisgICAgcmVzLnBvc2l0aW9uID0gcmVzLm5vZGUtPmNvdW50KCkgLSAxOworICAgICsrcmVz
OworICB9CisKKyAgcmV0dXJuIHJlczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+CithdXRv
IGJ0cmVlPFA+OjplcmFzZShpdGVyYXRvciBiZWdpbiwgaXRlcmF0b3IgZW5kKQorICAgIC0+IHN0
ZDo6cGFpcjxzaXplX3R5cGUsIGl0ZXJhdG9yPiB7CisgIGRpZmZlcmVuY2VfdHlwZSBjb3VudCA9
IHN0ZDo6ZGlzdGFuY2UoYmVnaW4sIGVuZCk7CisgIGFzc2VydChjb3VudCA+PSAwKTsKKworICBp
ZiAoY291bnQgPT0gMCkgeworICAgIHJldHVybiB7MCwgYmVnaW59OworICB9CisKKyAgaWYgKGNv
dW50ID09IHNpemVfKSB7CisgICAgY2xlYXIoKTsKKyAgICByZXR1cm4ge2NvdW50LCB0aGlzLT5l
bmQoKX07CisgIH0KKworICBpZiAoYmVnaW4ubm9kZSA9PSBlbmQubm9kZSkgeworICAgIGVyYXNl
X3NhbWVfbm9kZShiZWdpbiwgZW5kKTsKKyAgICBzaXplXyAtPSBjb3VudDsKKyAgICByZXR1cm4g
e2NvdW50LCByZWJhbGFuY2VfYWZ0ZXJfZGVsZXRlKGJlZ2luKX07CisgIH0KKworICBjb25zdCBz
aXplX3R5cGUgdGFyZ2V0X3NpemUgPSBzaXplXyAtIGNvdW50OworICB3aGlsZSAoc2l6ZV8gPiB0
YXJnZXRfc2l6ZSkgeworICAgIGlmIChiZWdpbi5ub2RlLT5sZWFmKCkpIHsKKyAgICAgIGNvbnN0
IHNpemVfdHlwZSByZW1haW5pbmdfdG9fZXJhc2UgPSBzaXplXyAtIHRhcmdldF9zaXplOworICAg
ICAgY29uc3Qgc2l6ZV90eXBlIHJlbWFpbmluZ19pbl9ub2RlID0gYmVnaW4ubm9kZS0+Y291bnQo
KSAtIGJlZ2luLnBvc2l0aW9uOworICAgICAgYmVnaW4gPSBlcmFzZV9mcm9tX2xlYWZfbm9kZSgK
KyAgICAgICAgICBiZWdpbiwgKHN0ZDo6bWluKShyZW1haW5pbmdfdG9fZXJhc2UsIHJlbWFpbmlu
Z19pbl9ub2RlKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGJlZ2luID0gZXJhc2UoYmVnaW4pOwor
ICAgIH0KKyAgfQorICByZXR1cm4ge2NvdW50LCBiZWdpbn07Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBQPgordm9pZCBidHJlZTxQPjo6ZXJhc2Vfc2FtZV9ub2RlKGl0ZXJhdG9yIGJlZ2luLCBp
dGVyYXRvciBlbmQpIHsKKyAgYXNzZXJ0KGJlZ2luLm5vZGUgPT0gZW5kLm5vZGUpOworICBhc3Nl
cnQoZW5kLnBvc2l0aW9uID4gYmVnaW4ucG9zaXRpb24pOworCisgIG5vZGVfdHlwZSAqbm9kZSA9
IGJlZ2luLm5vZGU7CisgIHNpemVfdHlwZSB0b19lcmFzZSA9IGVuZC5wb3NpdGlvbiAtIGJlZ2lu
LnBvc2l0aW9uOworICBpZiAoIW5vZGUtPmxlYWYoKSkgeworICAgIC8vIERlbGV0ZSBhbGwgY2hp
bGRyZW4gYmV0d2VlbiBiZWdpbiBhbmQgZW5kLgorICAgIGZvciAoc2l6ZV90eXBlIGkgPSAwOyBp
IDwgdG9fZXJhc2U7ICsraSkgeworICAgICAgaW50ZXJuYWxfY2xlYXIobm9kZS0+Y2hpbGQoYmVn
aW4ucG9zaXRpb24gKyBpICsgMSkpOworICAgIH0KKyAgICAvLyBSb3RhdGUgY2hpbGRyZW4gYWZ0
ZXIgZW5kIGludG8gbmV3IHBvc2l0aW9ucy4KKyAgICBmb3IgKHNpemVfdHlwZSBpID0gYmVnaW4u
cG9zaXRpb24gKyB0b19lcmFzZSArIDE7IGkgPD0gbm9kZS0+Y291bnQoKTsgKytpKSB7CisgICAg
ICBub2RlLT5zZXRfY2hpbGQoaSAtIHRvX2VyYXNlLCBub2RlLT5jaGlsZChpKSk7CisgICAgICBu
b2RlLT5jbGVhcl9jaGlsZChpKTsKKyAgICB9CisgIH0KKyAgbm9kZS0+cmVtb3ZlX3ZhbHVlc19p
Z25vcmVfY2hpbGRyZW4oYmVnaW4ucG9zaXRpb24sIHRvX2VyYXNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtdXRhYmxlX2FsbG9jYXRvcigpKTsKKworICAvLyBEbyBu
b3QgbmVlZCB0byB1cGRhdGUgcmlnaHRtb3N0XywgYmVjYXVzZQorICAvLyAqIGVpdGhlciBlbmQg
PT0gdGhpcy0+ZW5kKCksIGFuZCB0aGVyZWZvcmUgbm9kZSA9PSByaWdodG1vc3RfLCBhbmQgc3Rp
bGwKKyAgLy8gICBleGlzdHMKKyAgLy8gKiBvciBlbmQgIT0gdGhpcy0+ZW5kKCksIGFuZCB0aGVy
ZWZvcmUgcmlnaHRtb3N0XyBoYXNuJ3QgYmVlbiBlcmFzZWQsIHNpbmNlCisgIC8vICAgaXQgd2Fz
bid0IGNvdmVyZWQgaW4gW2JlZ2luLCBlbmQpCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgor
YXV0byBidHJlZTxQPjo6ZXJhc2VfZnJvbV9sZWFmX25vZGUoaXRlcmF0b3IgYmVnaW4sIHNpemVf
dHlwZSB0b19lcmFzZSkKKyAgICAtPiBpdGVyYXRvciB7CisgIG5vZGVfdHlwZSAqbm9kZSA9IGJl
Z2luLm5vZGU7CisgIGFzc2VydChub2RlLT5sZWFmKCkpOworICBhc3NlcnQobm9kZS0+Y291bnQo
KSA+IGJlZ2luLnBvc2l0aW9uKTsKKyAgYXNzZXJ0KGJlZ2luLnBvc2l0aW9uICsgdG9fZXJhc2Ug
PD0gbm9kZS0+Y291bnQoKSk7CisKKyAgbm9kZS0+cmVtb3ZlX3ZhbHVlc19pZ25vcmVfY2hpbGRy
ZW4oYmVnaW4ucG9zaXRpb24sIHRvX2VyYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtdXRhYmxlX2FsbG9jYXRvcigpKTsKKworICBzaXplXyAtPSB0b19lcmFzZTsK
KworICByZXR1cm4gcmViYWxhbmNlX2FmdGVyX2RlbGV0ZShiZWdpbik7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lIEs+CithdXRvIGJ0cmVlPFA+OjplcmFz
ZV91bmlxdWUoY29uc3QgSyAma2V5KSAtPiBzaXplX3R5cGUgeworICBjb25zdCBpdGVyYXRvciBp
dGVyID0gaW50ZXJuYWxfZmluZChrZXkpOworICBpZiAoaXRlci5ub2RlID09IG51bGxwdHIpIHsK
KyAgICAvLyBUaGUga2V5IGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHRyZWUsIHJldHVybiBub3RoaW5n
IGRvbmUuCisgICAgcmV0dXJuIDA7CisgIH0KKyAgZXJhc2UoaXRlcik7CisgIHJldHVybiAxOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBLPgorYXV0byBi
dHJlZTxQPjo6ZXJhc2VfbXVsdGkoY29uc3QgSyAma2V5KSAtPiBzaXplX3R5cGUgeworICBjb25z
dCBpdGVyYXRvciBiZWdpbiA9IGludGVybmFsX2xvd2VyX2JvdW5kKGtleSk7CisgIGlmIChiZWdp
bi5ub2RlID09IG51bGxwdHIpIHsKKyAgICAvLyBUaGUga2V5IGRvZXNuJ3QgZXhpc3QgaW4gdGhl
IHRyZWUsIHJldHVybiBub3RoaW5nIGRvbmUuCisgICAgcmV0dXJuIDA7CisgIH0KKyAgLy8gRGVs
ZXRlIGFsbCBvZiB0aGUga2V5cyBiZXR3ZWVuIGJlZ2luIGFuZCB1cHBlcl9ib3VuZChrZXkpLgor
ICBjb25zdCBpdGVyYXRvciBlbmQgPSBpbnRlcm5hbF9lbmQoaW50ZXJuYWxfdXBwZXJfYm91bmQo
a2V5KSk7CisgIHJldHVybiBlcmFzZShiZWdpbiwgZW5kKS5maXJzdDsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFA+Cit2b2lkIGJ0cmVlPFA+OjpjbGVhcigpIHsKKyAgaWYgKCFlbXB0eSgpKSB7
CisgICAgaW50ZXJuYWxfY2xlYXIocm9vdCgpKTsKKyAgfQorICBtdXRhYmxlX3Jvb3QoKSA9IEVt
cHR5Tm9kZSgpOworICByaWdodG1vc3RfID0gRW1wdHlOb2RlKCk7CisgIHNpemVfID0gMDsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit2b2lkIGJ0cmVlPFA+Ojpzd2FwKGJ0cmVlICZ4KSB7
CisgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgaWYgKGFic2w6OmFsbG9jYXRvcl90cmFpdHM8CisgICAg
ICAgICAgYWxsb2NhdG9yX3R5cGU+Ojpwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA6OnZhbHVl
KSB7CisgICAgLy8gTm90ZTogYHJvb3RfYCBhbHNvIGNvbnRhaW5zIHRoZSBhbGxvY2F0b3IgYW5k
IHRoZSBrZXkgY29tcGFyYXRvci4KKyAgICBzd2FwKHJvb3RfLCB4LnJvb3RfKTsKKyAgfSBlbHNl
IHsKKyAgICAvLyBJdCdzIHVuZGVmaW5lZCBiZWhhdmlvciBpZiB0aGUgYWxsb2NhdG9ycyBhcmUg
dW5lcXVhbCBoZXJlLgorICAgIGFzc2VydChhbGxvY2F0b3IoKSA9PSB4LmFsbG9jYXRvcigpKTsK
KyAgICBzd2FwKG11dGFibGVfcm9vdCgpLCB4Lm11dGFibGVfcm9vdCgpKTsKKyAgICBzd2FwKCpt
dXRhYmxlX2tleV9jb21wKCksICp4Lm11dGFibGVfa2V5X2NvbXAoKSk7CisgIH0KKyAgc3dhcChy
aWdodG1vc3RfLCB4LnJpZ2h0bW9zdF8pOworICBzd2FwKHNpemVfLCB4LnNpemVfKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit2b2lkIGJ0cmVlPFA+Ojp2ZXJpZnkoKSBjb25zdCB7Cisg
IGFzc2VydChyb290KCkgIT0gbnVsbHB0cik7CisgIGFzc2VydChsZWZ0bW9zdCgpICE9IG51bGxw
dHIpOworICBhc3NlcnQocmlnaHRtb3N0XyAhPSBudWxscHRyKTsKKyAgYXNzZXJ0KGVtcHR5KCkg
fHwgc2l6ZSgpID09IGludGVybmFsX3ZlcmlmeShyb290KCksIG51bGxwdHIsIG51bGxwdHIpKTsK
KyAgYXNzZXJ0KGxlZnRtb3N0KCkgPT0gKCsrY29uc3RfaXRlcmF0b3Iocm9vdCgpLCAtMSkpLm5v
ZGUpOworICBhc3NlcnQocmlnaHRtb3N0XyA9PSAoLS1jb25zdF9pdGVyYXRvcihyb290KCksIHJv
b3QoKS0+Y291bnQoKSkpLm5vZGUpOworICBhc3NlcnQobGVmdG1vc3QoKS0+bGVhZigpKTsKKyAg
YXNzZXJ0KHJpZ2h0bW9zdF8tPmxlYWYoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgor
dm9pZCBidHJlZTxQPjo6cmViYWxhbmNlX29yX3NwbGl0KGl0ZXJhdG9yICppdGVyKSB7CisgIG5v
ZGVfdHlwZSAqJm5vZGUgPSBpdGVyLT5ub2RlOworICBpbnQgJmluc2VydF9wb3NpdGlvbiA9IGl0
ZXItPnBvc2l0aW9uOworICBhc3NlcnQobm9kZS0+Y291bnQoKSA9PSBub2RlLT5tYXhfY291bnQo
KSk7CisgIGFzc2VydChrTm9kZVZhbHVlcyA9PSBub2RlLT5tYXhfY291bnQoKSk7CisKKyAgLy8g
Rmlyc3QgdHJ5IHRvIG1ha2Ugcm9vbSBvbiB0aGUgbm9kZSBieSByZWJhbGFuY2luZy4KKyAgbm9k
ZV90eXBlICpwYXJlbnQgPSBub2RlLT5wYXJlbnQoKTsKKyAgaWYgKG5vZGUgIT0gcm9vdCgpKSB7
CisgICAgaWYgKG5vZGUtPnBvc2l0aW9uKCkgPiAwKSB7CisgICAgICAvLyBUcnkgcmViYWxhbmNp
bmcgd2l0aCBvdXIgbGVmdCBzaWJsaW5nLgorICAgICAgbm9kZV90eXBlICpsZWZ0ID0gcGFyZW50
LT5jaGlsZChub2RlLT5wb3NpdGlvbigpIC0gMSk7CisgICAgICBhc3NlcnQobGVmdC0+bWF4X2Nv
dW50KCkgPT0ga05vZGVWYWx1ZXMpOworICAgICAgaWYgKGxlZnQtPmNvdW50KCkgPCBrTm9kZVZh
bHVlcykgeworICAgICAgICAvLyBXZSBiaWFzIHJlYmFsYW5jaW5nIGJhc2VkIG9uIHRoZSBwb3Np
dGlvbiBiZWluZyBpbnNlcnRlZC4gSWYgd2UncmUKKyAgICAgICAgLy8gaW5zZXJ0aW5nIGF0IHRo
ZSBlbmQgb2YgdGhlIHJpZ2h0IG5vZGUgdGhlbiB3ZSBiaWFzIHJlYmFsYW5jaW5nIHRvCisgICAg
ICAgIC8vIGZpbGwgdXAgdGhlIGxlZnQgbm9kZS4KKyAgICAgICAgaW50IHRvX21vdmUgPSAoa05v
ZGVWYWx1ZXMgLSBsZWZ0LT5jb3VudCgpKSAvCisgICAgICAgICAgICAgICAgICAgICAgKDEgKyAo
aW5zZXJ0X3Bvc2l0aW9uIDwga05vZGVWYWx1ZXMpKTsKKyAgICAgICAgdG9fbW92ZSA9IChzdGQ6
Om1heCkoMSwgdG9fbW92ZSk7CisKKyAgICAgICAgaWYgKCgoaW5zZXJ0X3Bvc2l0aW9uIC0gdG9f
bW92ZSkgPj0gMCkgfHwKKyAgICAgICAgICAgICgobGVmdC0+Y291bnQoKSArIHRvX21vdmUpIDwg
a05vZGVWYWx1ZXMpKSB7CisgICAgICAgICAgbGVmdC0+cmViYWxhbmNlX3JpZ2h0X3RvX2xlZnQo
dG9fbW92ZSwgbm9kZSwgbXV0YWJsZV9hbGxvY2F0b3IoKSk7CisKKyAgICAgICAgICBhc3NlcnQo
bm9kZS0+bWF4X2NvdW50KCkgLSBub2RlLT5jb3VudCgpID09IHRvX21vdmUpOworICAgICAgICAg
IGluc2VydF9wb3NpdGlvbiA9IGluc2VydF9wb3NpdGlvbiAtIHRvX21vdmU7CisgICAgICAgICAg
aWYgKGluc2VydF9wb3NpdGlvbiA8IDApIHsKKyAgICAgICAgICAgIGluc2VydF9wb3NpdGlvbiA9
IGluc2VydF9wb3NpdGlvbiArIGxlZnQtPmNvdW50KCkgKyAxOworICAgICAgICAgICAgbm9kZSA9
IGxlZnQ7CisgICAgICAgICAgfQorCisgICAgICAgICAgYXNzZXJ0KG5vZGUtPmNvdW50KCkgPCBu
b2RlLT5tYXhfY291bnQoKSk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICB9
CisgICAgfQorCisgICAgaWYgKG5vZGUtPnBvc2l0aW9uKCkgPCBwYXJlbnQtPmNvdW50KCkpIHsK
KyAgICAgIC8vIFRyeSByZWJhbGFuY2luZyB3aXRoIG91ciByaWdodCBzaWJsaW5nLgorICAgICAg
bm9kZV90eXBlICpyaWdodCA9IHBhcmVudC0+Y2hpbGQobm9kZS0+cG9zaXRpb24oKSArIDEpOwor
ICAgICAgYXNzZXJ0KHJpZ2h0LT5tYXhfY291bnQoKSA9PSBrTm9kZVZhbHVlcyk7CisgICAgICBp
ZiAocmlnaHQtPmNvdW50KCkgPCBrTm9kZVZhbHVlcykgeworICAgICAgICAvLyBXZSBiaWFzIHJl
YmFsYW5jaW5nIGJhc2VkIG9uIHRoZSBwb3NpdGlvbiBiZWluZyBpbnNlcnRlZC4gSWYgd2UncmUK
KyAgICAgICAgLy8gaW5zZXJ0aW5nIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxlZnQgbm9kZSB0
aGVuIHdlIGJpYXMgcmViYWxhbmNpbmcKKyAgICAgICAgLy8gdG8gZmlsbCB1cCB0aGUgcmlnaHQg
bm9kZS4KKyAgICAgICAgaW50IHRvX21vdmUgPQorICAgICAgICAgICAgKGtOb2RlVmFsdWVzIC0g
cmlnaHQtPmNvdW50KCkpIC8gKDEgKyAoaW5zZXJ0X3Bvc2l0aW9uID4gMCkpOworICAgICAgICB0
b19tb3ZlID0gKHN0ZDo6bWF4KSgxLCB0b19tb3ZlKTsKKworICAgICAgICBpZiAoKGluc2VydF9w
b3NpdGlvbiA8PSAobm9kZS0+Y291bnQoKSAtIHRvX21vdmUpKSB8fAorICAgICAgICAgICAgKChy
aWdodC0+Y291bnQoKSArIHRvX21vdmUpIDwga05vZGVWYWx1ZXMpKSB7CisgICAgICAgICAgbm9k
ZS0+cmViYWxhbmNlX2xlZnRfdG9fcmlnaHQodG9fbW92ZSwgcmlnaHQsIG11dGFibGVfYWxsb2Nh
dG9yKCkpOworCisgICAgICAgICAgaWYgKGluc2VydF9wb3NpdGlvbiA+IG5vZGUtPmNvdW50KCkp
IHsKKyAgICAgICAgICAgIGluc2VydF9wb3NpdGlvbiA9IGluc2VydF9wb3NpdGlvbiAtIG5vZGUt
PmNvdW50KCkgLSAxOworICAgICAgICAgICAgbm9kZSA9IHJpZ2h0OworICAgICAgICAgIH0KKwor
ICAgICAgICAgIGFzc2VydChub2RlLT5jb3VudCgpIDwgbm9kZS0+bWF4X2NvdW50KCkpOworICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8vIFJlYmFs
YW5jaW5nIGZhaWxlZCwgbWFrZSBzdXJlIHRoZXJlIGlzIHJvb20gb24gdGhlIHBhcmVudCBub2Rl
IGZvciBhIG5ldworICAgIC8vIHZhbHVlLgorICAgIGFzc2VydChwYXJlbnQtPm1heF9jb3VudCgp
ID09IGtOb2RlVmFsdWVzKTsKKyAgICBpZiAocGFyZW50LT5jb3VudCgpID09IGtOb2RlVmFsdWVz
KSB7CisgICAgICBpdGVyYXRvciBwYXJlbnRfaXRlcihub2RlLT5wYXJlbnQoKSwgbm9kZS0+cG9z
aXRpb24oKSk7CisgICAgICByZWJhbGFuY2Vfb3Jfc3BsaXQoJnBhcmVudF9pdGVyKTsKKyAgICB9
CisgIH0gZWxzZSB7CisgICAgLy8gUmViYWxhbmNpbmcgbm90IHBvc3NpYmxlIGJlY2F1c2UgdGhp
cyBpcyB0aGUgcm9vdCBub2RlLgorICAgIC8vIENyZWF0ZSBhIG5ldyByb290IG5vZGUgYW5kIHNl
dCB0aGUgY3VycmVudCByb290IG5vZGUgYXMgdGhlIGNoaWxkIG9mIHRoZQorICAgIC8vIG5ldyBy
b290LgorICAgIHBhcmVudCA9IG5ld19pbnRlcm5hbF9ub2RlKHBhcmVudCk7CisgICAgcGFyZW50
LT5pbml0X2NoaWxkKDAsIHJvb3QoKSk7CisgICAgbXV0YWJsZV9yb290KCkgPSBwYXJlbnQ7Cisg
ICAgLy8gSWYgdGhlIGZvcm1lciByb290IHdhcyBhIGxlYWYgbm9kZSwgdGhlbiBpdCdzIG5vdyB0
aGUgcmlnaHRtb3N0IG5vZGUuCisgICAgYXNzZXJ0KCFwYXJlbnQtPmNoaWxkKDApLT5sZWFmKCkg
fHwgcGFyZW50LT5jaGlsZCgwKSA9PSByaWdodG1vc3RfKTsKKyAgfQorCisgIC8vIFNwbGl0IHRo
ZSBub2RlLgorICBub2RlX3R5cGUgKnNwbGl0X25vZGU7CisgIGlmIChub2RlLT5sZWFmKCkpIHsK
KyAgICBzcGxpdF9ub2RlID0gbmV3X2xlYWZfbm9kZShwYXJlbnQpOworICAgIG5vZGUtPnNwbGl0
KGluc2VydF9wb3NpdGlvbiwgc3BsaXRfbm9kZSwgbXV0YWJsZV9hbGxvY2F0b3IoKSk7CisgICAg
aWYgKHJpZ2h0bW9zdF8gPT0gbm9kZSkgcmlnaHRtb3N0XyA9IHNwbGl0X25vZGU7CisgIH0gZWxz
ZSB7CisgICAgc3BsaXRfbm9kZSA9IG5ld19pbnRlcm5hbF9ub2RlKHBhcmVudCk7CisgICAgbm9k
ZS0+c3BsaXQoaW5zZXJ0X3Bvc2l0aW9uLCBzcGxpdF9ub2RlLCBtdXRhYmxlX2FsbG9jYXRvcigp
KTsKKyAgfQorCisgIGlmIChpbnNlcnRfcG9zaXRpb24gPiBub2RlLT5jb3VudCgpKSB7CisgICAg
aW5zZXJ0X3Bvc2l0aW9uID0gaW5zZXJ0X3Bvc2l0aW9uIC0gbm9kZS0+Y291bnQoKSAtIDE7Cisg
ICAgbm9kZSA9IHNwbGl0X25vZGU7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit2
b2lkIGJ0cmVlPFA+OjptZXJnZV9ub2Rlcyhub2RlX3R5cGUgKmxlZnQsIG5vZGVfdHlwZSAqcmln
aHQpIHsKKyAgbGVmdC0+bWVyZ2UocmlnaHQsIG11dGFibGVfYWxsb2NhdG9yKCkpOworICBpZiAo
cmlnaHQtPmxlYWYoKSkgeworICAgIGlmIChyaWdodG1vc3RfID09IHJpZ2h0KSByaWdodG1vc3Rf
ID0gbGVmdDsKKyAgICBkZWxldGVfbGVhZl9ub2RlKHJpZ2h0KTsKKyAgfSBlbHNlIHsKKyAgICBk
ZWxldGVfaW50ZXJuYWxfbm9kZShyaWdodCk7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFA+Citib29sIGJ0cmVlPFA+Ojp0cnlfbWVyZ2Vfb3JfcmViYWxhbmNlKGl0ZXJhdG9yICppdGVy
KSB7CisgIG5vZGVfdHlwZSAqcGFyZW50ID0gaXRlci0+bm9kZS0+cGFyZW50KCk7CisgIGlmIChp
dGVyLT5ub2RlLT5wb3NpdGlvbigpID4gMCkgeworICAgIC8vIFRyeSBtZXJnaW5nIHdpdGggb3Vy
IGxlZnQgc2libGluZy4KKyAgICBub2RlX3R5cGUgKmxlZnQgPSBwYXJlbnQtPmNoaWxkKGl0ZXIt
Pm5vZGUtPnBvc2l0aW9uKCkgLSAxKTsKKyAgICBhc3NlcnQobGVmdC0+bWF4X2NvdW50KCkgPT0g
a05vZGVWYWx1ZXMpOworICAgIGlmICgoMSArIGxlZnQtPmNvdW50KCkgKyBpdGVyLT5ub2RlLT5j
b3VudCgpKSA8PSBrTm9kZVZhbHVlcykgeworICAgICAgaXRlci0+cG9zaXRpb24gKz0gMSArIGxl
ZnQtPmNvdW50KCk7CisgICAgICBtZXJnZV9ub2RlcyhsZWZ0LCBpdGVyLT5ub2RlKTsKKyAgICAg
IGl0ZXItPm5vZGUgPSBsZWZ0OworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICB9CisgIGlm
IChpdGVyLT5ub2RlLT5wb3NpdGlvbigpIDwgcGFyZW50LT5jb3VudCgpKSB7CisgICAgLy8gVHJ5
IG1lcmdpbmcgd2l0aCBvdXIgcmlnaHQgc2libGluZy4KKyAgICBub2RlX3R5cGUgKnJpZ2h0ID0g
cGFyZW50LT5jaGlsZChpdGVyLT5ub2RlLT5wb3NpdGlvbigpICsgMSk7CisgICAgYXNzZXJ0KHJp
Z2h0LT5tYXhfY291bnQoKSA9PSBrTm9kZVZhbHVlcyk7CisgICAgaWYgKCgxICsgaXRlci0+bm9k
ZS0+Y291bnQoKSArIHJpZ2h0LT5jb3VudCgpKSA8PSBrTm9kZVZhbHVlcykgeworICAgICAgbWVy
Z2Vfbm9kZXMoaXRlci0+bm9kZSwgcmlnaHQpOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIC8vIFRyeSByZWJhbGFuY2luZyB3aXRoIG91ciByaWdodCBzaWJsaW5nLiBXZSBkb24ndCBw
ZXJmb3JtIHJlYmFsYW5jaW5nIGlmCisgICAgLy8gd2UgZGVsZXRlZCB0aGUgZmlyc3QgZWxlbWVu
dCBmcm9tIGl0ZXItPm5vZGUgYW5kIHRoZSBub2RlIGlzIG5vdAorICAgIC8vIGVtcHR5LiBUaGlz
IGlzIGEgc21hbGwgb3B0aW1pemF0aW9uIGZvciB0aGUgY29tbW9uIHBhdHRlcm4gb2YgZGVsZXRp
bmcKKyAgICAvLyBmcm9tIHRoZSBmcm9udCBvZiB0aGUgdHJlZS4KKyAgICBpZiAoKHJpZ2h0LT5j
b3VudCgpID4ga01pbk5vZGVWYWx1ZXMpICYmCisgICAgICAgICgoaXRlci0+bm9kZS0+Y291bnQo
KSA9PSAwKSB8fAorICAgICAgICAgKGl0ZXItPnBvc2l0aW9uID4gMCkpKSB7CisgICAgICBpbnQg
dG9fbW92ZSA9IChyaWdodC0+Y291bnQoKSAtIGl0ZXItPm5vZGUtPmNvdW50KCkpIC8gMjsKKyAg
ICAgIHRvX21vdmUgPSAoc3RkOjptaW4pKHRvX21vdmUsIHJpZ2h0LT5jb3VudCgpIC0gMSk7Cisg
ICAgICBpdGVyLT5ub2RlLT5yZWJhbGFuY2VfcmlnaHRfdG9fbGVmdCh0b19tb3ZlLCByaWdodCwg
bXV0YWJsZV9hbGxvY2F0b3IoKSk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9Cisg
IGlmIChpdGVyLT5ub2RlLT5wb3NpdGlvbigpID4gMCkgeworICAgIC8vIFRyeSByZWJhbGFuY2lu
ZyB3aXRoIG91ciBsZWZ0IHNpYmxpbmcuIFdlIGRvbid0IHBlcmZvcm0gcmViYWxhbmNpbmcgaWYK
KyAgICAvLyB3ZSBkZWxldGVkIHRoZSBsYXN0IGVsZW1lbnQgZnJvbSBpdGVyLT5ub2RlIGFuZCB0
aGUgbm9kZSBpcyBub3QKKyAgICAvLyBlbXB0eS4gVGhpcyBpcyBhIHNtYWxsIG9wdGltaXphdGlv
biBmb3IgdGhlIGNvbW1vbiBwYXR0ZXJuIG9mIGRlbGV0aW5nCisgICAgLy8gZnJvbSB0aGUgYmFj
ayBvZiB0aGUgdHJlZS4KKyAgICBub2RlX3R5cGUgKmxlZnQgPSBwYXJlbnQtPmNoaWxkKGl0ZXIt
Pm5vZGUtPnBvc2l0aW9uKCkgLSAxKTsKKyAgICBpZiAoKGxlZnQtPmNvdW50KCkgPiBrTWluTm9k
ZVZhbHVlcykgJiYKKyAgICAgICAgKChpdGVyLT5ub2RlLT5jb3VudCgpID09IDApIHx8CisgICAg
ICAgICAoaXRlci0+cG9zaXRpb24gPCBpdGVyLT5ub2RlLT5jb3VudCgpKSkpIHsKKyAgICAgIGlu
dCB0b19tb3ZlID0gKGxlZnQtPmNvdW50KCkgLSBpdGVyLT5ub2RlLT5jb3VudCgpKSAvIDI7Cisg
ICAgICB0b19tb3ZlID0gKHN0ZDo6bWluKSh0b19tb3ZlLCBsZWZ0LT5jb3VudCgpIC0gMSk7Cisg
ICAgICBsZWZ0LT5yZWJhbGFuY2VfbGVmdF90b19yaWdodCh0b19tb3ZlLCBpdGVyLT5ub2RlLCBt
dXRhYmxlX2FsbG9jYXRvcigpKTsKKyAgICAgIGl0ZXItPnBvc2l0aW9uICs9IHRvX21vdmU7Cisg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFA+Cit2b2lkIGJ0cmVlPFA+Ojp0cnlfc2hyaW5rKCkgeworICBpZiAo
cm9vdCgpLT5jb3VudCgpID4gMCkgeworICAgIHJldHVybjsKKyAgfQorICAvLyBEZWxldGVkIHRo
ZSBsYXN0IGl0ZW0gb24gdGhlIHJvb3Qgbm9kZSwgc2hyaW5rIHRoZSBoZWlnaHQgb2YgdGhlIHRy
ZWUuCisgIGlmIChyb290KCktPmxlYWYoKSkgeworICAgIGFzc2VydChzaXplKCkgPT0gMCk7Cisg
ICAgZGVsZXRlX2xlYWZfbm9kZShyb290KCkpOworICAgIG11dGFibGVfcm9vdCgpID0gRW1wdHlO
b2RlKCk7CisgICAgcmlnaHRtb3N0XyA9IEVtcHR5Tm9kZSgpOworICB9IGVsc2UgeworICAgIG5v
ZGVfdHlwZSAqY2hpbGQgPSByb290KCktPmNoaWxkKDApOworICAgIGNoaWxkLT5tYWtlX3Jvb3Qo
KTsKKyAgICBkZWxldGVfaW50ZXJuYWxfbm9kZShyb290KCkpOworICAgIG11dGFibGVfcm9vdCgp
ID0gY2hpbGQ7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSXRlclR5cGU+CitpbmxpbmUgSXRlclR5cGUgYnRyZWU8UD46OmludGVybmFsX2xhc3Qo
SXRlclR5cGUgaXRlcikgeworICBhc3NlcnQoaXRlci5ub2RlICE9IG51bGxwdHIpOworICB3aGls
ZSAoaXRlci5wb3NpdGlvbiA9PSBpdGVyLm5vZGUtPmNvdW50KCkpIHsKKyAgICBpdGVyLnBvc2l0
aW9uID0gaXRlci5ub2RlLT5wb3NpdGlvbigpOworICAgIGl0ZXIubm9kZSA9IGl0ZXIubm9kZS0+
cGFyZW50KCk7CisgICAgaWYgKGl0ZXIubm9kZS0+bGVhZigpKSB7CisgICAgICBpdGVyLm5vZGUg
PSBudWxscHRyOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIHJldHVybiBpdGVyOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgoraW5s
aW5lIGF1dG8gYnRyZWU8UD46OmludGVybmFsX2VtcGxhY2UoaXRlcmF0b3IgaXRlciwgQXJncyAm
Ji4uLiBhcmdzKQorICAgIC0+IGl0ZXJhdG9yIHsKKyAgaWYgKCFpdGVyLm5vZGUtPmxlYWYoKSkg
eworICAgIC8vIFdlIGNhbid0IGluc2VydCBvbiBhbiBpbnRlcm5hbCBub2RlLiBJbnN0ZWFkLCB3
ZSdsbCBpbnNlcnQgYWZ0ZXIgdGhlCisgICAgLy8gcHJldmlvdXMgdmFsdWUgd2hpY2ggaXMgZ3Vh
cmFudGVlZCB0byBiZSBvbiBhIGxlYWYgbm9kZS4KKyAgICAtLWl0ZXI7CisgICAgKytpdGVyLnBv
c2l0aW9uOworICB9CisgIGNvbnN0IGludCBtYXhfY291bnQgPSBpdGVyLm5vZGUtPm1heF9jb3Vu
dCgpOworICBpZiAoaXRlci5ub2RlLT5jb3VudCgpID09IG1heF9jb3VudCkgeworICAgIC8vIE1h
a2Ugcm9vbSBpbiB0aGUgbGVhZiBmb3IgdGhlIG5ldyBpdGVtLgorICAgIGlmIChtYXhfY291bnQg
PCBrTm9kZVZhbHVlcykgeworICAgICAgLy8gSW5zZXJ0aW9uIGludG8gdGhlIHJvb3Qgd2hlcmUg
dGhlIHJvb3QgaXMgc21hbGxlciB0aGFuIHRoZSBmdWxsIG5vZGUKKyAgICAgIC8vIHNpemUuIFNp
bXBseSBncm93IHRoZSBzaXplIG9mIHRoZSByb290IG5vZGUuCisgICAgICBhc3NlcnQoaXRlci5u
b2RlID09IHJvb3QoKSk7CisgICAgICBpdGVyLm5vZGUgPQorICAgICAgICAgIG5ld19sZWFmX3Jv
b3Rfbm9kZSgoc3RkOjptaW48aW50Pikoa05vZGVWYWx1ZXMsIDIgKiBtYXhfY291bnQpKTsKKyAg
ICAgIGl0ZXIubm9kZS0+c3dhcChyb290KCksIG11dGFibGVfYWxsb2NhdG9yKCkpOworICAgICAg
ZGVsZXRlX2xlYWZfbm9kZShyb290KCkpOworICAgICAgbXV0YWJsZV9yb290KCkgPSBpdGVyLm5v
ZGU7CisgICAgICByaWdodG1vc3RfID0gaXRlci5ub2RlOworICAgIH0gZWxzZSB7CisgICAgICBy
ZWJhbGFuY2Vfb3Jfc3BsaXQoJml0ZXIpOworICAgIH0KKyAgfQorICBpdGVyLm5vZGUtPmVtcGxh
Y2VfdmFsdWUoaXRlci5wb3NpdGlvbiwgbXV0YWJsZV9hbGxvY2F0b3IoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICsrc2l6ZV87
CisgIHJldHVybiBpdGVyOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBLPgoraW5saW5lIGF1dG8gYnRyZWU8UD46OmludGVybmFsX2xvY2F0ZShjb25zdCBL
ICZrZXkpIGNvbnN0CisgICAgLT4gU2VhcmNoUmVzdWx0PGl0ZXJhdG9yLCBpc19rZXlfY29tcGFy
ZV90bzo6dmFsdWU+IHsKKyAgcmV0dXJuIGludGVybmFsX2xvY2F0ZV9pbXBsKGtleSwgaXNfa2V5
X2NvbXBhcmVfdG8oKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5
cGVuYW1lIEs+CitpbmxpbmUgYXV0byBidHJlZTxQPjo6aW50ZXJuYWxfbG9jYXRlX2ltcGwoCisg
ICAgY29uc3QgSyAma2V5LCBzdGQ6OmZhbHNlX3R5cGUgLyogSXNDb21wYXJlVG8gKi8pIGNvbnN0
CisgICAgLT4gU2VhcmNoUmVzdWx0PGl0ZXJhdG9yLCBmYWxzZT4geworICBpdGVyYXRvciBpdGVy
KGNvbnN0X2Nhc3Q8bm9kZV90eXBlICo+KHJvb3QoKSksIDApOworICBmb3IgKDs7KSB7CisgICAg
aXRlci5wb3NpdGlvbiA9IGl0ZXIubm9kZS0+bG93ZXJfYm91bmQoa2V5LCBrZXlfY29tcCgpKS52
YWx1ZTsKKyAgICAvLyBOT1RFOiB3ZSBkb24ndCBuZWVkIHRvIHdhbGsgYWxsIHRoZSB3YXkgZG93
biB0aGUgdHJlZSBpZiB0aGUga2V5cyBhcmUKKyAgICAvLyBlcXVhbCwgYnV0IGRldGVybWluaW5n
IGVxdWFsaXR5IHdvdWxkIHJlcXVpcmUgZG9pbmcgYW4gZXh0cmEgY29tcGFyaXNvbgorICAgIC8v
IG9uIGVhY2ggbm9kZSBvbiB0aGUgd2F5IGRvd24sIGFuZCB3ZSB3aWxsIG5lZWQgdG8gZ28gYWxs
IHRoZSB3YXkgdG8gdGhlCisgICAgLy8gbGVhZiBub2RlIGluIHRoZSBleHBlY3RlZCBjYXNlLgor
ICAgIGlmIChpdGVyLm5vZGUtPmxlYWYoKSkgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIGl0
ZXIubm9kZSA9IGl0ZXIubm9kZS0+Y2hpbGQoaXRlci5wb3NpdGlvbik7CisgIH0KKyAgcmV0dXJu
IHtpdGVyfTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Sz4KK2lubGluZSBhdXRvIGJ0cmVlPFA+OjppbnRlcm5hbF9sb2NhdGVfaW1wbCgKKyAgICBjb25z
dCBLICZrZXksIHN0ZDo6dHJ1ZV90eXBlIC8qIElzQ29tcGFyZVRvICovKSBjb25zdAorICAgIC0+
IFNlYXJjaFJlc3VsdDxpdGVyYXRvciwgdHJ1ZT4geworICBpdGVyYXRvciBpdGVyKGNvbnN0X2Nh
c3Q8bm9kZV90eXBlICo+KHJvb3QoKSksIDApOworICBmb3IgKDs7KSB7CisgICAgU2VhcmNoUmVz
dWx0PGludCwgdHJ1ZT4gcmVzID0gaXRlci5ub2RlLT5sb3dlcl9ib3VuZChrZXksIGtleV9jb21w
KCkpOworICAgIGl0ZXIucG9zaXRpb24gPSByZXMudmFsdWU7CisgICAgaWYgKHJlcy5tYXRjaCA9
PSBNYXRjaEtpbmQ6OmtFcSkgeworICAgICAgcmV0dXJuIHtpdGVyLCBNYXRjaEtpbmQ6OmtFcX07
CisgICAgfQorICAgIGlmIChpdGVyLm5vZGUtPmxlYWYoKSkgeworICAgICAgYnJlYWs7CisgICAg
fQorICAgIGl0ZXIubm9kZSA9IGl0ZXIubm9kZS0+Y2hpbGQoaXRlci5wb3NpdGlvbik7CisgIH0K
KyAgcmV0dXJuIHtpdGVyLCBNYXRjaEtpbmQ6OmtOZX07Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lIEs+CithdXRvIGJ0cmVlPFA+OjppbnRlcm5hbF9sb3dl
cl9ib3VuZChjb25zdCBLICZrZXkpIGNvbnN0IC0+IGl0ZXJhdG9yIHsKKyAgaXRlcmF0b3IgaXRl
cihjb25zdF9jYXN0PG5vZGVfdHlwZSAqPihyb290KCkpLCAwKTsKKyAgZm9yICg7OykgeworICAg
IGl0ZXIucG9zaXRpb24gPSBpdGVyLm5vZGUtPmxvd2VyX2JvdW5kKGtleSwga2V5X2NvbXAoKSku
dmFsdWU7CisgICAgaWYgKGl0ZXIubm9kZS0+bGVhZigpKSB7CisgICAgICBicmVhazsKKyAgICB9
CisgICAgaXRlci5ub2RlID0gaXRlci5ub2RlLT5jaGlsZChpdGVyLnBvc2l0aW9uKTsKKyAgfQor
ICByZXR1cm4gaW50ZXJuYWxfbGFzdChpdGVyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KK2F1dG8gYnRyZWU8UD46OmludGVybmFsX3VwcGVyX2Jv
dW5kKGNvbnN0IEsgJmtleSkgY29uc3QgLT4gaXRlcmF0b3IgeworICBpdGVyYXRvciBpdGVyKGNv
bnN0X2Nhc3Q8bm9kZV90eXBlICo+KHJvb3QoKSksIDApOworICBmb3IgKDs7KSB7CisgICAgaXRl
ci5wb3NpdGlvbiA9IGl0ZXIubm9kZS0+dXBwZXJfYm91bmQoa2V5LCBrZXlfY29tcCgpKTsKKyAg
ICBpZiAoaXRlci5ub2RlLT5sZWFmKCkpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBpdGVy
Lm5vZGUgPSBpdGVyLm5vZGUtPmNoaWxkKGl0ZXIucG9zaXRpb24pOworICB9CisgIHJldHVybiBp
bnRlcm5hbF9sYXN0KGl0ZXIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBLPgorYXV0byBidHJlZTxQPjo6aW50ZXJuYWxfZmluZChjb25zdCBLICZrZXkp
IGNvbnN0IC0+IGl0ZXJhdG9yIHsKKyAgYXV0byByZXMgPSBpbnRlcm5hbF9sb2NhdGUoa2V5KTsK
KyAgaWYgKHJlcy5IYXNNYXRjaCgpKSB7CisgICAgaWYgKHJlcy5Jc0VxKCkpIHsKKyAgICAgIHJl
dHVybiByZXMudmFsdWU7CisgICAgfQorICB9IGVsc2UgeworICAgIGNvbnN0IGl0ZXJhdG9yIGl0
ZXIgPSBpbnRlcm5hbF9sYXN0KHJlcy52YWx1ZSk7CisgICAgaWYgKGl0ZXIubm9kZSAhPSBudWxs
cHRyICYmICFjb21wYXJlX2tleXMoa2V5LCBpdGVyLmtleSgpKSkgeworICAgICAgcmV0dXJuIGl0
ZXI7CisgICAgfQorICB9CisgIHJldHVybiB7bnVsbHB0ciwgMH07Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBQPgordm9pZCBidHJlZTxQPjo6aW50ZXJuYWxfY2xlYXIobm9kZV90eXBlICpub2Rl
KSB7CisgIGlmICghbm9kZS0+bGVhZigpKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbm9k
ZS0+Y291bnQoKTsgKytpKSB7CisgICAgICBpbnRlcm5hbF9jbGVhcihub2RlLT5jaGlsZChpKSk7
CisgICAgfQorICAgIGRlbGV0ZV9pbnRlcm5hbF9ub2RlKG5vZGUpOworICB9IGVsc2UgeworICAg
IGRlbGV0ZV9sZWFmX25vZGUobm9kZSk7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+
CitpbnQgYnRyZWU8UD46OmludGVybmFsX3ZlcmlmeSgKKyAgICBjb25zdCBub2RlX3R5cGUgKm5v
ZGUsIGNvbnN0IGtleV90eXBlICpsbywgY29uc3Qga2V5X3R5cGUgKmhpKSBjb25zdCB7CisgIGFz
c2VydChub2RlLT5jb3VudCgpID4gMCk7CisgIGFzc2VydChub2RlLT5jb3VudCgpIDw9IG5vZGUt
Pm1heF9jb3VudCgpKTsKKyAgaWYgKGxvKSB7CisgICAgYXNzZXJ0KCFjb21wYXJlX2tleXMobm9k
ZS0+a2V5KDApLCAqbG8pKTsKKyAgfQorICBpZiAoaGkpIHsKKyAgICBhc3NlcnQoIWNvbXBhcmVf
a2V5cygqaGksIG5vZGUtPmtleShub2RlLT5jb3VudCgpIC0gMSkpKTsKKyAgfQorICBmb3IgKGlu
dCBpID0gMTsgaSA8IG5vZGUtPmNvdW50KCk7ICsraSkgeworICAgIGFzc2VydCghY29tcGFyZV9r
ZXlzKG5vZGUtPmtleShpKSwgbm9kZS0+a2V5KGkgLSAxKSkpOworICB9CisgIGludCBjb3VudCA9
IG5vZGUtPmNvdW50KCk7CisgIGlmICghbm9kZS0+bGVhZigpKSB7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPD0gbm9kZS0+Y291bnQoKTsgKytpKSB7CisgICAgICBhc3NlcnQobm9kZS0+Y2hpbGQo
aSkgIT0gbnVsbHB0cik7CisgICAgICBhc3NlcnQobm9kZS0+Y2hpbGQoaSktPnBhcmVudCgpID09
IG5vZGUpOworICAgICAgYXNzZXJ0KG5vZGUtPmNoaWxkKGkpLT5wb3NpdGlvbigpID09IGkpOwor
ICAgICAgY291bnQgKz0gaW50ZXJuYWxfdmVyaWZ5KAorICAgICAgICAgIG5vZGUtPmNoaWxkKGkp
LAorICAgICAgICAgIChpID09IDApID8gbG8gOiAmbm9kZS0+a2V5KGkgLSAxKSwKKyAgICAgICAg
ICAoaSA9PSBub2RlLT5jb3VudCgpKSA/IGhpIDogJm5vZGUtPmtleShpKSk7CisgICAgfQorICB9
CisgIHJldHVybiBjb3VudDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5h
bAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRF
Uk5BTF9CVFJFRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2J0cmVl
X2NvbnRhaW5lci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2J0cmVlX2NvbnRhaW5lci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MjY4NjFkNWJiYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9idHJlZV9jb250YWluZXIu
aApAQCAtMCwwICsxLDYwOSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQlRSRUVfQ09OVEFJTkVSX0hf
CisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0JUUkVFX0NPTlRBSU5FUl9IXworCisj
aW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisjaW5jbHVk
ZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9p
bnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVy
bmFsL2J0cmVlLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvY29tbW9uLmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRz
LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewor
CisvLyBBIGNvbW1vbiBiYXNlIGNsYXNzIGZvciBidHJlZV9zZXQsIGJ0cmVlX21hcCwgYnRyZWVf
bXVsdGlzZXQsIGFuZAorLy8gYnRyZWVfbXVsdGltYXAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJl
ZT4KK2NsYXNzIGJ0cmVlX2NvbnRhaW5lciB7CisgIHVzaW5nIHBhcmFtc190eXBlID0gdHlwZW5h
bWUgVHJlZTo6cGFyYW1zX3R5cGU7CisKKyBwcm90ZWN0ZWQ6CisgIC8vIEFsaWFzIHVzZWQgZm9y
IGhldGVyb2dlbmVvdXMgbG9va3VwIGZ1bmN0aW9ucy4KKyAgLy8gYGtleV9hcmc8Sz5gIGV2YWx1
YXRlcyB0byBgS2Agd2hlbiB0aGUgZnVuY3RvcnMgYXJlIHRyYW5zcGFyZW50IGFuZCB0bworICAv
LyBga2V5X3R5cGVgIG90aGVyd2lzZS4gSXQgcGVybWl0cyB0ZW1wbGF0ZSBhcmd1bWVudCBkZWR1
Y3Rpb24gb24gYEtgIGZvciB0aGUKKyAgLy8gdHJhbnNwYXJlbnQgY2FzZS4KKyAgdGVtcGxhdGUg
PGNsYXNzIEs+CisgIHVzaW5nIGtleV9hcmcgPQorICAgICAgdHlwZW5hbWUgS2V5QXJnPElzVHJh
bnNwYXJlbnQ8dHlwZW5hbWUgVHJlZTo6a2V5X2NvbXBhcmU+Ojp2YWx1ZT46OgorICAgICAgICAg
IHRlbXBsYXRlIHR5cGU8SywgdHlwZW5hbWUgVHJlZTo6a2V5X3R5cGU+OworCisgcHVibGljOgor
ICB1c2luZyBrZXlfdHlwZSA9IHR5cGVuYW1lIFRyZWU6OmtleV90eXBlOworICB1c2luZyB2YWx1
ZV90eXBlID0gdHlwZW5hbWUgVHJlZTo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgc2l6ZV90eXBlID0g
dHlwZW5hbWUgVHJlZTo6c2l6ZV90eXBlOworICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBl
bmFtZSBUcmVlOjpkaWZmZXJlbmNlX3R5cGU7CisgIHVzaW5nIGtleV9jb21wYXJlID0gdHlwZW5h
bWUgVHJlZTo6a2V5X2NvbXBhcmU7CisgIHVzaW5nIHZhbHVlX2NvbXBhcmUgPSB0eXBlbmFtZSBU
cmVlOjp2YWx1ZV9jb21wYXJlOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFRy
ZWU6OmFsbG9jYXRvcl90eXBlOworICB1c2luZyByZWZlcmVuY2UgPSB0eXBlbmFtZSBUcmVlOjpy
ZWZlcmVuY2U7CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IHR5cGVuYW1lIFRyZWU6OmNvbnN0
X3JlZmVyZW5jZTsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIFRyZWU6OnBvaW50ZXI7Cisg
IHVzaW5nIGNvbnN0X3BvaW50ZXIgPSB0eXBlbmFtZSBUcmVlOjpjb25zdF9wb2ludGVyOworICB1
c2luZyBpdGVyYXRvciA9IHR5cGVuYW1lIFRyZWU6Oml0ZXJhdG9yOworICB1c2luZyBjb25zdF9p
dGVyYXRvciA9IHR5cGVuYW1lIFRyZWU6OmNvbnN0X2l0ZXJhdG9yOworICB1c2luZyByZXZlcnNl
X2l0ZXJhdG9yID0gdHlwZW5hbWUgVHJlZTo6cmV2ZXJzZV9pdGVyYXRvcjsKKyAgdXNpbmcgY29u
c3RfcmV2ZXJzZV9pdGVyYXRvciA9IHR5cGVuYW1lIFRyZWU6OmNvbnN0X3JldmVyc2VfaXRlcmF0
b3I7CisgIHVzaW5nIG5vZGVfdHlwZSA9IHR5cGVuYW1lIFRyZWU6Om5vZGVfaGFuZGxlX3R5cGU7
CisKKyAgLy8gQ29uc3RydWN0b3JzL2Fzc2lnbm1lbnRzLgorICBidHJlZV9jb250YWluZXIoKSA6
IHRyZWVfKGtleV9jb21wYXJlKCksIGFsbG9jYXRvcl90eXBlKCkpIHt9CisgIGV4cGxpY2l0IGJ0
cmVlX2NvbnRhaW5lcihjb25zdCBrZXlfY29tcGFyZSAmY29tcCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhbGxvYyA9IGFsbG9jYXRvcl90eXBlKCkp
CisgICAgICA6IHRyZWVfKGNvbXAsIGFsbG9jKSB7fQorICBidHJlZV9jb250YWluZXIoY29uc3Qg
YnRyZWVfY29udGFpbmVyICZ4KSA9IGRlZmF1bHQ7CisgIGJ0cmVlX2NvbnRhaW5lcihidHJlZV9j
b250YWluZXIgJiZ4KSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgIGJ0cmVlX2NvbnRhaW5lciAmb3Bl
cmF0b3I9KGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeCkgPSBkZWZhdWx0OworICBidHJlZV9jb250
YWluZXIgJm9wZXJhdG9yPShidHJlZV9jb250YWluZXIgJiZ4KSBub2V4Y2VwdCgKKyAgICAgIHN0
ZDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8VHJlZT46OnZhbHVlKSA9IGRlZmF1bHQ7CisK
KyAgLy8gSXRlcmF0b3Igcm91dGluZXMuCisgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gdHJl
ZV8uYmVnaW4oKTsgfQorICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHRy
ZWVfLmJlZ2luKCk7IH0KKyAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4g
dHJlZV8uYmVnaW4oKTsgfQorICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiB0cmVlXy5lbmQoKTsg
fQorICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiB0cmVlXy5lbmQoKTsgfQor
ICBjb25zdF9pdGVyYXRvciBjZW5kKCkgY29uc3QgeyByZXR1cm4gdHJlZV8uZW5kKCk7IH0KKyAg
cmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiB0cmVlXy5yYmVnaW4oKTsgfQorICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLnJiZWdp
bigpOyB9CisgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IHRyZWVfLnJiZWdpbigpOyB9CisgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHRy
ZWVfLnJlbmQoKTsgfQorICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJl
dHVybiB0cmVlXy5yZW5kKCk7IH0KKyAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmVuZCgpIGNv
bnN0IHsgcmV0dXJuIHRyZWVfLnJlbmQoKTsgfQorCisgIC8vIExvb2t1cCByb3V0aW5lcy4KKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgaXRlcmF0b3IgZmluZChjb25zdCBr
ZXlfYXJnPEs+ICZrZXkpIHsKKyAgICByZXR1cm4gdHJlZV8uZmluZChrZXkpOworICB9CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBLID0ga2V5X3R5cGU+CisgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29u
c3Qga2V5X2FyZzxLPiAma2V5KSBjb25zdCB7CisgICAgcmV0dXJuIHRyZWVfLmZpbmQoa2V5KTsK
KyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSyA9IGtleV90eXBlPgorICBib29sIGNvbnRhaW5z
KGNvbnN0IGtleV9hcmc8Sz4gJmtleSkgY29uc3QgeworICAgIHJldHVybiBmaW5kKGtleSkgIT0g
ZW5kKCk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgaXRlcmF0
b3IgbG93ZXJfYm91bmQoY29uc3Qga2V5X2FyZzxLPiAma2V5KSB7CisgICAgcmV0dXJuIHRyZWVf
Lmxvd2VyX2JvdW5kKGtleSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlw
ZT4KKyAgY29uc3RfaXRlcmF0b3IgbG93ZXJfYm91bmQoY29uc3Qga2V5X2FyZzxLPiAma2V5KSBj
b25zdCB7CisgICAgcmV0dXJuIHRyZWVfLmxvd2VyX2JvdW5kKGtleSk7CisgIH0KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgaXRlcmF0b3IgdXBwZXJfYm91bmQoY29uc3Qg
a2V5X2FyZzxLPiAma2V5KSB7CisgICAgcmV0dXJuIHRyZWVfLnVwcGVyX2JvdW5kKGtleSk7Cisg
IH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgY29uc3RfaXRlcmF0b3Ig
dXBwZXJfYm91bmQoY29uc3Qga2V5X2FyZzxLPiAma2V5KSBjb25zdCB7CisgICAgcmV0dXJuIHRy
ZWVfLnVwcGVyX2JvdW5kKGtleSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlf
dHlwZT4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4gZXF1YWxfcmFuZ2UoY29uc3Qg
a2V5X2FyZzxLPiAma2V5KSB7CisgICAgcmV0dXJuIHRyZWVfLmVxdWFsX3JhbmdlKGtleSk7Cisg
IH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgc3RkOjpwYWlyPGNvbnN0
X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gZXF1YWxfcmFuZ2UoCisgICAgICBjb25zdCBrZXlf
YXJnPEs+ICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gdHJlZV8uZXF1YWxfcmFuZ2Uoa2V5KTsK
KyAgfQorCisgIC8vIERlbGV0aW9uIHJvdXRpbmVzLiBOb3RlIHRoYXQgdGhlcmUgaXMgYWxzbyBh
IGRlbGV0aW9uIHJvdXRpbmUgdGhhdCBpcworICAvLyBzcGVjaWZpYyB0byBidHJlZV9zZXRfY29u
dGFpbmVyL2J0cmVlX211bHRpc2V0X2NvbnRhaW5lci4KKworICAvLyBFcmFzZSB0aGUgc3BlY2lm
aWVkIGl0ZXJhdG9yIGZyb20gdGhlIGJ0cmVlLiBUaGUgaXRlcmF0b3IgbXVzdCBiZSB2YWxpZAor
ICAvLyAoaS5lLiBub3QgZXF1YWwgdG8gZW5kKCkpLiAgUmV0dXJuIGFuIGl0ZXJhdG9yIHBvaW50
aW5nIHRvIHRoZSBub2RlIGFmdGVyCisgIC8vIHRoZSBvbmUgdGhhdCB3YXMgZXJhc2VkIChvciBl
bmQoKSBpZiBub25lIGV4aXN0cykuCisgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGl0
ZXIpIHsgcmV0dXJuIHRyZWVfLmVyYXNlKGl0ZXJhdG9yKGl0ZXIpKTsgfQorICBpdGVyYXRvciBl
cmFzZShpdGVyYXRvciBpdGVyKSB7IHJldHVybiB0cmVlXy5lcmFzZShpdGVyKTsgfQorICBpdGVy
YXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCkgewor
ICAgIHJldHVybiB0cmVlXy5lcmFzZShpdGVyYXRvcihmaXJzdCksIGl0ZXJhdG9yKGxhc3QpKS5z
ZWNvbmQ7CisgIH0KKworICAvLyBFeHRyYWN0IHJvdXRpbmVzLgorICBub2RlX3R5cGUgZXh0cmFj
dChpdGVyYXRvciBwb3NpdGlvbikgeworICAgIC8vIFVzZSBNb3ZlIGluc3RlYWQgb2YgVHJhbnNm
ZXIsIGJlY2F1c2UgdGhlIHJlYmFsYW5jaW5nIGNvZGUgZXhwZWN0cyB0bworICAgIC8vIGhhdmUg
YSB2YWxpZCBvYmplY3QgdG8gc2NyaWJibGUgbWV0YWRhdGEgYml0cyBvbiB0b3Agb2YuCisgICAg
YXV0byBub2RlID0gQ29tbW9uQWNjZXNzOjpNb3ZlPG5vZGVfdHlwZT4oZ2V0X2FsbG9jYXRvcigp
LCBwb3NpdGlvbi5zbG90KCkpOworICAgIGVyYXNlKHBvc2l0aW9uKTsKKyAgICByZXR1cm4gbm9k
ZTsKKyAgfQorICBub2RlX3R5cGUgZXh0cmFjdChjb25zdF9pdGVyYXRvciBwb3NpdGlvbikgewor
ICAgIHJldHVybiBleHRyYWN0KGl0ZXJhdG9yKHBvc2l0aW9uKSk7CisgIH0KKworIHB1YmxpYzoK
KyAgLy8gVXRpbGl0eSByb3V0aW5lcy4KKyAgdm9pZCBjbGVhcigpIHsgdHJlZV8uY2xlYXIoKTsg
fQorICB2b2lkIHN3YXAoYnRyZWVfY29udGFpbmVyICZ4KSB7IHRyZWVfLnN3YXAoeC50cmVlXyk7
IH0KKyAgdm9pZCB2ZXJpZnkoKSBjb25zdCB7IHRyZWVfLnZlcmlmeSgpOyB9CisKKyAgLy8gU2l6
ZSByb3V0aW5lcy4KKyAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVybiB0cmVlXy5zaXpl
KCk7IH0KKyAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgeyByZXR1cm4gdHJlZV8ubWF4X3Np
emUoKTsgfQorICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gdHJlZV8uZW1wdHkoKTsgfQor
CisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgYnRyZWVfY29udGFpbmVyICZ4LCBjb25z
dCBidHJlZV9jb250YWluZXIgJnkpIHsKKyAgICBpZiAoeC5zaXplKCkgIT0geS5zaXplKCkpIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjplcXVhbCh4LmJlZ2luKCksIHguZW5kKCksIHku
YmVnaW4oKSk7CisgIH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGJ0cmVlX2Nv
bnRhaW5lciAmeCwgY29uc3QgYnRyZWVfY29udGFpbmVyICZ5KSB7CisgICAgcmV0dXJuICEoeCA9
PSB5KTsKKyAgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPChjb25zdCBidHJlZV9jb250YWlu
ZXIgJngsIGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeSkgeworICAgIHJldHVybiBzdGQ6OmxleGlj
b2dyYXBoaWNhbF9jb21wYXJlKHguYmVnaW4oKSwgeC5lbmQoKSwgeS5iZWdpbigpLCB5LmVuZCgp
KTsKKyAgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPihjb25zdCBidHJlZV9jb250YWluZXIg
JngsIGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeSkgeworICAgIHJldHVybiB5IDwgeDsKKyAgfQor
CisgIGZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgYnRyZWVfY29udGFpbmVyICZ4LCBjb25z
dCBidHJlZV9jb250YWluZXIgJnkpIHsKKyAgICByZXR1cm4gISh5IDwgeCk7CisgIH0KKworICBm
cmllbmQgYm9vbCBvcGVyYXRvcj49KGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeCwgY29uc3QgYnRy
ZWVfY29udGFpbmVyICZ5KSB7CisgICAgcmV0dXJuICEoeCA8IHkpOworICB9CisKKyAgLy8gVGhl
IGFsbG9jYXRvciB1c2VkIGJ5IHRoZSBidHJlZS4KKyAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9j
YXRvcigpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLmdldF9hbGxvY2F0b3IoKTsgfQorCisgIC8vIFRo
ZSBrZXkgY29tcGFyYXRvciB1c2VkIGJ5IHRoZSBidHJlZS4KKyAga2V5X2NvbXBhcmUga2V5X2Nv
bXAoKSBjb25zdCB7IHJldHVybiB0cmVlXy5rZXlfY29tcCgpOyB9CisgIHZhbHVlX2NvbXBhcmUg
dmFsdWVfY29tcCgpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLnZhbHVlX2NvbXAoKTsgfQorCisgIC8v
IFN1cHBvcnQgYWJzbDo6SGFzaC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0YXRlPgorICBmcmll
bmQgU3RhdGUgQWJzbEhhc2hWYWx1ZShTdGF0ZSBoLCBjb25zdCBidHJlZV9jb250YWluZXIgJmIp
IHsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJnYgOiBiKSB7CisgICAgICBoID0gU3RhdGU6OmNvbWJp
bmUoc3RkOjptb3ZlKGgpLCB2KTsKKyAgICB9CisgICAgcmV0dXJuIFN0YXRlOjpjb21iaW5lKHN0
ZDo6bW92ZShoKSwgYi5zaXplKCkpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIFRyZWUgdHJlZV87
Cit9OworCisvLyBBIGNvbW1vbiBiYXNlIGNsYXNzIGZvciBidHJlZV9zZXQgYW5kIGJ0cmVlX21h
cC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUcmVlPgorY2xhc3MgYnRyZWVfc2V0X2NvbnRhaW5lciA6
IHB1YmxpYyBidHJlZV9jb250YWluZXI8VHJlZT4geworICB1c2luZyBzdXBlcl90eXBlID0gYnRy
ZWVfY29udGFpbmVyPFRyZWU+OworICB1c2luZyBwYXJhbXNfdHlwZSA9IHR5cGVuYW1lIFRyZWU6
OnBhcmFtc190eXBlOworICB1c2luZyBpbml0X3R5cGUgPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6
aW5pdF90eXBlOworICB1c2luZyBpc19rZXlfY29tcGFyZV90byA9IHR5cGVuYW1lIHBhcmFtc190
eXBlOjppc19rZXlfY29tcGFyZV90bzsKKyAgZnJpZW5kIGNsYXNzIEJ0cmVlTm9kZVBlZXI7CisK
KyBwcm90ZWN0ZWQ6CisgIHRlbXBsYXRlIDxjbGFzcyBLPgorICB1c2luZyBrZXlfYXJnID0gdHlw
ZW5hbWUgc3VwZXJfdHlwZTo6dGVtcGxhdGUga2V5X2FyZzxLPjsKKworIHB1YmxpYzoKKyAgdXNp
bmcga2V5X3R5cGUgPSB0eXBlbmFtZSBUcmVlOjprZXlfdHlwZTsKKyAgdXNpbmcgdmFsdWVfdHlw
ZSA9IHR5cGVuYW1lIFRyZWU6OnZhbHVlX3R5cGU7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVu
YW1lIFRyZWU6OnNpemVfdHlwZTsKKyAgdXNpbmcga2V5X2NvbXBhcmUgPSB0eXBlbmFtZSBUcmVl
OjprZXlfY29tcGFyZTsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSB0eXBlbmFtZSBUcmVlOjph
bGxvY2F0b3JfdHlwZTsKKyAgdXNpbmcgaXRlcmF0b3IgPSB0eXBlbmFtZSBUcmVlOjppdGVyYXRv
cjsKKyAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSB0eXBlbmFtZSBUcmVlOjpjb25zdF9pdGVyYXRv
cjsKKyAgdXNpbmcgbm9kZV90eXBlID0gdHlwZW5hbWUgc3VwZXJfdHlwZTo6bm9kZV90eXBlOwor
ICB1c2luZyBpbnNlcnRfcmV0dXJuX3R5cGUgPSBJbnNlcnRSZXR1cm5UeXBlPGl0ZXJhdG9yLCBu
b2RlX3R5cGU+OworCisgIC8vIEluaGVyaXQgY29uc3RydWN0b3JzLgorICB1c2luZyBzdXBlcl90
eXBlOjpzdXBlcl90eXBlOworICBidHJlZV9zZXRfY29udGFpbmVyKCkge30KKworICAvLyBSYW5n
ZSBjb25zdHJ1Y3Rvci4KKyAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+CisgIGJ0cmVl
X3NldF9jb250YWluZXIoSW5wdXRJdGVyYXRvciBiLCBJbnB1dEl0ZXJhdG9yIGUsCisgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qga2V5X2NvbXBhcmUgJmNvbXAgPSBrZXlfY29tcGFyZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhbGxvYyA9IGFsbG9j
YXRvcl90eXBlKCkpCisgICAgICA6IHN1cGVyX3R5cGUoY29tcCwgYWxsb2MpIHsKKyAgICBpbnNl
cnQoYiwgZSk7CisgIH0KKworICAvLyBJbml0aWFsaXplciBsaXN0IGNvbnN0cnVjdG9yLgorICBi
dHJlZV9zZXRfY29udGFpbmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGluaXQs
CisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5X2NvbXBhcmUgJmNvbXAgPSBrZXlfY29t
cGFyZSgpLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhbGxv
YyA9IGFsbG9jYXRvcl90eXBlKCkpCisgICAgICA6IGJ0cmVlX3NldF9jb250YWluZXIoaW5pdC5i
ZWdpbigpLCBpbml0LmVuZCgpLCBjb21wLCBhbGxvYykge30KKworICAvLyBMb29rdXAgcm91dGlu
ZXMuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLID0ga2V5X3R5cGU+CisgIHNpemVfdHlwZSBjb3Vu
dChjb25zdCBrZXlfYXJnPEs+ICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gdGhpcy0+dHJlZV8u
Y291bnRfdW5pcXVlKGtleSk7CisgIH0KKworICAvLyBJbnNlcnRpb24gcm91dGluZXMuCisgIHN0
ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0KGNvbnN0IHZhbHVlX3R5cGUgJngpIHsKKyAg
ICByZXR1cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X3VuaXF1ZShwYXJhbXNfdHlwZTo6a2V5KHgpLCB4
KTsKKyAgfQorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydCh2YWx1ZV90eXBlICYm
eCkgeworICAgIHJldHVybiB0aGlzLT50cmVlXy5pbnNlcnRfdW5pcXVlKHBhcmFtc190eXBlOjpr
ZXkoeCksIHN0ZDo6bW92ZSh4KSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZShBcmdzICYmLi4uIGFyZ3MpIHsK
KyAgICBpbml0X3R5cGUgdihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVy
biB0aGlzLT50cmVlXy5pbnNlcnRfdW5pcXVlKHBhcmFtc190eXBlOjprZXkodiksIHN0ZDo6bW92
ZSh2KSk7CisgIH0KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBj
b25zdCB2YWx1ZV90eXBlICZ4KSB7CisgICAgcmV0dXJuIHRoaXMtPnRyZWVfCisgICAgICAgIC5p
bnNlcnRfaGludF91bmlxdWUoaXRlcmF0b3IocG9zaXRpb24pLCBwYXJhbXNfdHlwZTo6a2V5KHgp
LCB4KQorICAgICAgICAuZmlyc3Q7CisgIH0KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJh
dG9yIHBvc2l0aW9uLCB2YWx1ZV90eXBlICYmeCkgeworICAgIHJldHVybiB0aGlzLT50cmVlXwor
ICAgICAgICAuaW5zZXJ0X2hpbnRfdW5pcXVlKGl0ZXJhdG9yKHBvc2l0aW9uKSwgcGFyYW1zX3R5
cGU6OmtleSh4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoeCkpCisg
ICAgICAgIC5maXJzdDsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgaXRl
cmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBBcmdzICYmLi4uIGFy
Z3MpIHsKKyAgICBpbml0X3R5cGUgdihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAg
IHJldHVybiB0aGlzLT50cmVlXworICAgICAgICAuaW5zZXJ0X2hpbnRfdW5pcXVlKGl0ZXJhdG9y
KHBvc2l0aW9uKSwgcGFyYW1zX3R5cGU6OmtleSh2KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1vdmUodikpCisgICAgICAgIC5maXJzdDsKKyAgfQorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgdm9pZCBpbnNlcnQoSW5wdXRJdGVyYXRvciBiLCBJbnB1
dEl0ZXJhdG9yIGUpIHsKKyAgICB0aGlzLT50cmVlXy5pbnNlcnRfaXRlcmF0b3JfdW5pcXVlKGIs
IGUpOworICB9CisgIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+
IGluaXQpIHsKKyAgICB0aGlzLT50cmVlXy5pbnNlcnRfaXRlcmF0b3JfdW5pcXVlKGluaXQuYmVn
aW4oKSwgaW5pdC5lbmQoKSk7CisgIH0KKyAgaW5zZXJ0X3JldHVybl90eXBlIGluc2VydChub2Rl
X3R5cGUgJiZub2RlKSB7CisgICAgaWYgKCFub2RlKSByZXR1cm4ge3RoaXMtPmVuZCgpLCBmYWxz
ZSwgbm9kZV90eXBlKCl9OworICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzID0KKyAg
ICAgICAgaW5zZXJ0KHN0ZDo6bW92ZShwYXJhbXNfdHlwZTo6ZWxlbWVudChDb21tb25BY2Nlc3M6
OkdldFNsb3Qobm9kZSkpKSk7CisgICAgaWYgKHJlcy5zZWNvbmQpIHsKKyAgICAgIENvbW1vbkFj
Y2Vzczo6UmVzZXQoJm5vZGUpOworICAgICAgcmV0dXJuIHtyZXMuZmlyc3QsIHRydWUsIG5vZGVf
dHlwZSgpfTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHtyZXMuZmlyc3QsIGZhbHNlLCBz
dGQ6Om1vdmUobm9kZSl9OworICAgIH0KKyAgfQorICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRl
cmF0b3IgaGludCwgbm9kZV90eXBlICYmbm9kZSkgeworICAgIGlmICghbm9kZSkgcmV0dXJuIHRo
aXMtPmVuZCgpOworICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzID0gdGhpcy0+dHJl
ZV8uaW5zZXJ0X2hpbnRfdW5pcXVlKAorICAgICAgICBpdGVyYXRvcihoaW50KSwgcGFyYW1zX3R5
cGU6OmtleShDb21tb25BY2Nlc3M6OkdldFNsb3Qobm9kZSkpLAorICAgICAgICBzdGQ6Om1vdmUo
cGFyYW1zX3R5cGU6OmVsZW1lbnQoQ29tbW9uQWNjZXNzOjpHZXRTbG90KG5vZGUpKSkpOworICAg
IGlmIChyZXMuc2Vjb25kKSBDb21tb25BY2Nlc3M6OlJlc2V0KCZub2RlKTsKKyAgICByZXR1cm4g
cmVzLmZpcnN0OworICB9CisKKyAgLy8gRGVsZXRpb24gcm91dGluZXMuCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBLID0ga2V5X3R5cGU+CisgIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfYXJnPEs+
ICZrZXkpIHsKKyAgICByZXR1cm4gdGhpcy0+dHJlZV8uZXJhc2VfdW5pcXVlKGtleSk7CisgIH0K
KyAgdXNpbmcgc3VwZXJfdHlwZTo6ZXJhc2U7CisKKyAgLy8gTm9kZSBleHRyYWN0aW9uIHJvdXRp
bmVzLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSyA9IGtleV90eXBlPgorICBub2RlX3R5cGUgZXh0
cmFjdChjb25zdCBrZXlfYXJnPEs+ICZrZXkpIHsKKyAgICBhdXRvIGl0ID0gZmluZChrZXkpOwor
ICAgIHJldHVybiBpdCA9PSB0aGlzLT5lbmQoKSA/IG5vZGVfdHlwZSgpIDogZXh0cmFjdChpdCk7
CisgIH0KKyAgdXNpbmcgc3VwZXJfdHlwZTo6ZXh0cmFjdDsKKworICAvLyBNZXJnZSByb3V0aW5l
cy4KKyAgLy8gTW92ZXMgZWxlbWVudHMgZnJvbSBgc3JjYCBpbnRvIGB0aGlzYC4gSWYgdGhlIGVs
ZW1lbnQgYWxyZWFkeSBleGlzdHMgaW4KKyAgLy8gYHRoaXNgLCBpdCBpcyBsZWZ0IHVubW9kaWZp
ZWQgaW4gYHNyY2AuCisgIHRlbXBsYXRlIDwKKyAgICAgIHR5cGVuYW1lIFQsCisgICAgICB0eXBl
bmFtZSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICAgICBhYnNsOjpjb25qdW5jdGlvbjwKKyAg
ICAgICAgICAgICAgc3RkOjppc19zYW1lPHZhbHVlX3R5cGUsIHR5cGVuYW1lIFQ6OnZhbHVlX3R5
cGU+LAorICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8YWxsb2NhdG9yX3R5cGUsIHR5cGVuYW1l
IFQ6OmFsbG9jYXRvcl90eXBlPiwKKyAgICAgICAgICAgICAgc3RkOjppc19zYW1lPHR5cGVuYW1l
IHBhcmFtc190eXBlOjppc19tYXBfY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZW5hbWUgVDo6cGFyYW1zX3R5cGU6OmlzX21hcF9jb250YWluZXI+Pjo6dmFsdWUsCisg
ICAgICAgICAgaW50PiA9IDA+CisgIHZvaWQgbWVyZ2UoYnRyZWVfY29udGFpbmVyPFQ+ICZzcmMp
IHsgIC8vIE5PTElOVAorICAgIGZvciAoYXV0byBzcmNfaXQgPSBzcmMuYmVnaW4oKTsgc3JjX2l0
ICE9IHNyYy5lbmQoKTspIHsKKyAgICAgIGlmIChpbnNlcnQoc3RkOjptb3ZlKCpzcmNfaXQpKS5z
ZWNvbmQpIHsKKyAgICAgICAgc3JjX2l0ID0gc3JjLmVyYXNlKHNyY19pdCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICArK3NyY19pdDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICB0ZW1wbGF0
ZSA8CisgICAgICB0eXBlbmFtZSBULAorICAgICAgdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8
CisgICAgICAgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgICAgICAgIHN0ZDo6aXNfc2Ft
ZTx2YWx1ZV90eXBlLCB0eXBlbmFtZSBUOjp2YWx1ZV90eXBlPiwKKyAgICAgICAgICAgICAgc3Rk
Ojppc19zYW1lPGFsbG9jYXRvcl90eXBlLCB0eXBlbmFtZSBUOjphbGxvY2F0b3JfdHlwZT4sCisg
ICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBwYXJhbXNfdHlwZTo6aXNfbWFwX2Nv
bnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFQ6OnBhcmFtc190
eXBlOjppc19tYXBfY29udGFpbmVyPj46OnZhbHVlLAorICAgICAgICAgIGludD4gPSAwPgorICB2
b2lkIG1lcmdlKGJ0cmVlX2NvbnRhaW5lcjxUPiAmJnNyYykgeworICAgIG1lcmdlKHNyYyk7Cisg
IH0KK307CisKKy8vIEJhc2UgY2xhc3MgZm9yIGJ0cmVlX21hcC4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUcmVlPgorY2xhc3MgYnRyZWVfbWFwX2NvbnRhaW5lciA6IHB1YmxpYyBidHJlZV9zZXRfY29u
dGFpbmVyPFRyZWU+IHsKKyAgdXNpbmcgc3VwZXJfdHlwZSA9IGJ0cmVlX3NldF9jb250YWluZXI8
VHJlZT47CisgIHVzaW5nIHBhcmFtc190eXBlID0gdHlwZW5hbWUgVHJlZTo6cGFyYW1zX3R5cGU7
CisKKyBwcm90ZWN0ZWQ6CisgIHRlbXBsYXRlIDxjbGFzcyBLPgorICB1c2luZyBrZXlfYXJnID0g
dHlwZW5hbWUgc3VwZXJfdHlwZTo6dGVtcGxhdGUga2V5X2FyZzxLPjsKKworIHB1YmxpYzoKKyAg
dXNpbmcga2V5X3R5cGUgPSB0eXBlbmFtZSBUcmVlOjprZXlfdHlwZTsKKyAgdXNpbmcgbWFwcGVk
X3R5cGUgPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6bWFwcGVkX3R5cGU7CisgIHVzaW5nIHZhbHVl
X3R5cGUgPSB0eXBlbmFtZSBUcmVlOjp2YWx1ZV90eXBlOworICB1c2luZyBrZXlfY29tcGFyZSA9
IHR5cGVuYW1lIFRyZWU6OmtleV9jb21wYXJlOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5
cGVuYW1lIFRyZWU6OmFsbG9jYXRvcl90eXBlOworICB1c2luZyBpdGVyYXRvciA9IHR5cGVuYW1l
IFRyZWU6Oml0ZXJhdG9yOworICB1c2luZyBjb25zdF9pdGVyYXRvciA9IHR5cGVuYW1lIFRyZWU6
OmNvbnN0X2l0ZXJhdG9yOworCisgIC8vIEluaGVyaXQgY29uc3RydWN0b3JzLgorICB1c2luZyBz
dXBlcl90eXBlOjpzdXBlcl90eXBlOworICBidHJlZV9tYXBfY29udGFpbmVyKCkge30KKworICAv
LyBJbnNlcnRpb24gcm91dGluZXMuCisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBz
dGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHRyeV9lbXBsYWNlKGNvbnN0IGtleV90eXBlICZrLCBB
cmdzICYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X3VuaXF1ZSgK
KyAgICAgICAgaywgc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6OmZvcndhcmRfYXNfdHVw
bGUoayksCisgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgc3RkOjpw
YWlyPGl0ZXJhdG9yLCBib29sPiB0cnlfZW1wbGFjZShrZXlfdHlwZSAmJmssIEFyZ3MgJiYuLi4g
YXJncykgeworICAgIC8vIE5vdGU6IGBrZXlfcmVmYCBleGlzdHMgdG8gYXZvaWQgYSBDbGFuZ1Rp
ZHkgd2FybmluZyBhYm91dCBtb3ZpbmcgZnJvbSBga2AKKyAgICAvLyBhbmQgdGhlbiB1c2luZyBg
a2AgdW5zZXF1ZW5jZWQuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoZSBtb3ZlIGlzIGludG8gYQor
ICAgIC8vIGZvcndhcmRpbmcgcmVmZXJlbmNlIGFuZCBpbnNlcnRfdW5pcXVlIGd1YXJhbnRlZXMg
dGhhdCBga2V5YCBpcyBuZXZlcgorICAgIC8vIHJlZmVyZW5jZWQgYWZ0ZXIgY29uc3VtaW5nIGBh
cmdzYC4KKyAgICBjb25zdCBrZXlfdHlwZSYga2V5X3JlZiA9IGs7CisgICAgcmV0dXJuIHRoaXMt
PnRyZWVfLmluc2VydF91bmlxdWUoCisgICAgICAgIGtleV9yZWYsIHN0ZDo6cGllY2V3aXNlX2Nv
bnN0cnVjdCwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6bW92ZShrKSksCisgICAgICAgIHN0
ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgfQor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgaXRlcmF0b3IgdHJ5X2VtcGxhY2UoY29u
c3RfaXRlcmF0b3IgaGludCwgY29uc3Qga2V5X3R5cGUgJmssCisgICAgICAgICAgICAgICAgICAg
ICAgIEFyZ3MgJiYuLi4gYXJncykgeworICAgIHJldHVybiB0aGlzLT50cmVlXworICAgICAgICAu
aW5zZXJ0X2hpbnRfdW5pcXVlKGl0ZXJhdG9yKGhpbnQpLCBrLCBzdGQ6OnBpZWNld2lzZV9jb25z
dHJ1Y3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxl
KGspLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKQorICAgICAgICAuZmlyc3Q7CisgIH0KKyAgdGVt
cGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIGl0ZXJhdG9yIHRyeV9lbXBsYWNlKGNvbnN0X2l0
ZXJhdG9yIGhpbnQsIGtleV90eXBlICYmaywgQXJncyAmJi4uLiBhcmdzKSB7CisgICAgLy8gTm90
ZTogYGtleV9yZWZgIGV4aXN0cyB0byBhdm9pZCBhIENsYW5nVGlkeSB3YXJuaW5nIGFib3V0IG1v
dmluZyBmcm9tIGBrYAorICAgIC8vIGFuZCB0aGVuIHVzaW5nIGBrYCB1bnNlcXVlbmNlZC4gVGhp
cyBpcyBzYWZlIGJlY2F1c2UgdGhlIG1vdmUgaXMgaW50byBhCisgICAgLy8gZm9yd2FyZGluZyBy
ZWZlcmVuY2UgYW5kIGluc2VydF9oaW50X3VuaXF1ZSBndWFyYW50ZWVzIHRoYXQgYGtleWAgaXMK
KyAgICAvLyBuZXZlciByZWZlcmVuY2VkIGFmdGVyIGNvbnN1bWluZyBgYXJnc2AuCisgICAgY29u
c3Qga2V5X3R5cGUmIGtleV9yZWYgPSBrOworICAgIHJldHVybiB0aGlzLT50cmVlXworICAgICAg
ICAuaW5zZXJ0X2hpbnRfdW5pcXVlKGl0ZXJhdG9yKGhpbnQpLCBrZXlfcmVmLCBzdGQ6OnBpZWNl
d2lzZV9jb25zdHJ1Y3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJk
X2FzX3R1cGxlKHN0ZDo6bW92ZShrKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpCisgICAgICAg
IC5maXJzdDsKKyAgfQorICBtYXBwZWRfdHlwZSAmb3BlcmF0b3JbXShjb25zdCBrZXlfdHlwZSAm
aykgeworICAgIHJldHVybiB0cnlfZW1wbGFjZShrKS5maXJzdC0+c2Vjb25kOworICB9CisgIG1h
cHBlZF90eXBlICZvcGVyYXRvcltdKGtleV90eXBlICYmaykgeworICAgIHJldHVybiB0cnlfZW1w
bGFjZShzdGQ6Om1vdmUoaykpLmZpcnN0LT5zZWNvbmQ7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSyA9IGtleV90eXBlPgorICBtYXBwZWRfdHlwZSAmYXQoY29uc3Qga2V5X2FyZzxLPiAm
a2V5KSB7CisgICAgYXV0byBpdCA9IHRoaXMtPmZpbmQoa2V5KTsKKyAgICBpZiAoaXQgPT0gdGhp
cy0+ZW5kKCkpCisgICAgICBiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoImFic2w6
OmJ0cmVlX21hcDo6YXQiKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgfQorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSyA9IGtleV90eXBlPgorICBjb25zdCBtYXBwZWRfdHlwZSAmYXQoY29uc3Qg
a2V5X2FyZzxLPiAma2V5KSBjb25zdCB7CisgICAgYXV0byBpdCA9IHRoaXMtPmZpbmQoa2V5KTsK
KyAgICBpZiAoaXQgPT0gdGhpcy0+ZW5kKCkpCisgICAgICBiYXNlX2ludGVybmFsOjpUaHJvd1N0
ZE91dE9mUmFuZ2UoImFic2w6OmJ0cmVlX21hcDo6YXQiKTsKKyAgICByZXR1cm4gaXQtPnNlY29u
ZDsKKyAgfQorfTsKKworLy8gQSBjb21tb24gYmFzZSBjbGFzcyBmb3IgYnRyZWVfbXVsdGlzZXQg
YW5kIGJ0cmVlX211bHRpbWFwLgordGVtcGxhdGUgPHR5cGVuYW1lIFRyZWU+CitjbGFzcyBidHJl
ZV9tdWx0aXNldF9jb250YWluZXIgOiBwdWJsaWMgYnRyZWVfY29udGFpbmVyPFRyZWU+IHsKKyAg
dXNpbmcgc3VwZXJfdHlwZSA9IGJ0cmVlX2NvbnRhaW5lcjxUcmVlPjsKKyAgdXNpbmcgcGFyYW1z
X3R5cGUgPSB0eXBlbmFtZSBUcmVlOjpwYXJhbXNfdHlwZTsKKyAgdXNpbmcgaW5pdF90eXBlID0g
dHlwZW5hbWUgcGFyYW1zX3R5cGU6OmluaXRfdHlwZTsKKyAgdXNpbmcgaXNfa2V5X2NvbXBhcmVf
dG8gPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6aXNfa2V5X2NvbXBhcmVfdG87CisKKyAgdGVtcGxh
dGUgPGNsYXNzIEs+CisgIHVzaW5nIGtleV9hcmcgPSB0eXBlbmFtZSBzdXBlcl90eXBlOjp0ZW1w
bGF0ZSBrZXlfYXJnPEs+OworCisgcHVibGljOgorICB1c2luZyBrZXlfdHlwZSA9IHR5cGVuYW1l
IFRyZWU6OmtleV90eXBlOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgVHJlZTo6dmFs
dWVfdHlwZTsKKyAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgVHJlZTo6c2l6ZV90eXBlOwor
ICB1c2luZyBrZXlfY29tcGFyZSA9IHR5cGVuYW1lIFRyZWU6OmtleV9jb21wYXJlOworICB1c2lu
ZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFRyZWU6OmFsbG9jYXRvcl90eXBlOworICB1c2lu
ZyBpdGVyYXRvciA9IHR5cGVuYW1lIFRyZWU6Oml0ZXJhdG9yOworICB1c2luZyBjb25zdF9pdGVy
YXRvciA9IHR5cGVuYW1lIFRyZWU6OmNvbnN0X2l0ZXJhdG9yOworICB1c2luZyBub2RlX3R5cGUg
PSB0eXBlbmFtZSBzdXBlcl90eXBlOjpub2RlX3R5cGU7CisKKyAgLy8gSW5oZXJpdCBjb25zdHJ1
Y3RvcnMuCisgIHVzaW5nIHN1cGVyX3R5cGU6OnN1cGVyX3R5cGU7CisgIGJ0cmVlX211bHRpc2V0
X2NvbnRhaW5lcigpIHt9CisKKyAgLy8gUmFuZ2UgY29uc3RydWN0b3IuCisgIHRlbXBsYXRlIDxj
bGFzcyBJbnB1dEl0ZXJhdG9yPgorICBidHJlZV9tdWx0aXNldF9jb250YWluZXIoSW5wdXRJdGVy
YXRvciBiLCBJbnB1dEl0ZXJhdG9yIGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBrZXlfY29tcGFyZSAmY29tcCA9IGtleV9jb21wYXJlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQor
ICAgICAgOiBzdXBlcl90eXBlKGNvbXAsIGFsbG9jKSB7CisgICAgaW5zZXJ0KGIsIGUpOworICB9
CisKKyAgLy8gSW5pdGlhbGl6ZXIgbGlzdCBjb25zdHJ1Y3Rvci4KKyAgYnRyZWVfbXVsdGlzZXRf
Y29udGFpbmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGluaXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlfY29tcGFyZSAmY29tcCA9IGtleV9jb21wYXJl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYWxs
b2MgPSBhbGxvY2F0b3JfdHlwZSgpKQorICAgICAgOiBidHJlZV9tdWx0aXNldF9jb250YWluZXIo
aW5pdC5iZWdpbigpLCBpbml0LmVuZCgpLCBjb21wLCBhbGxvYykge30KKworICAvLyBMb29rdXAg
cm91dGluZXMuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLID0ga2V5X3R5cGU+CisgIHNpemVfdHlw
ZSBjb3VudChjb25zdCBrZXlfYXJnPEs+ICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gdGhpcy0+
dHJlZV8uY291bnRfbXVsdGkoa2V5KTsKKyAgfQorCisgIC8vIEluc2VydGlvbiByb3V0aW5lcy4K
KyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0IHZhbHVlX3R5cGUgJngpIHsgcmV0dXJuIHRoaXMtPnRy
ZWVfLmluc2VydF9tdWx0aSh4KTsgfQorICBpdGVyYXRvciBpbnNlcnQodmFsdWVfdHlwZSAmJngp
IHsKKyAgICByZXR1cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X211bHRpKHN0ZDo6bW92ZSh4KSk7Cisg
IH0KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBjb25zdCB2YWx1
ZV90eXBlICZ4KSB7CisgICAgcmV0dXJuIHRoaXMtPnRyZWVfLmluc2VydF9oaW50X211bHRpKGl0
ZXJhdG9yKHBvc2l0aW9uKSwgeCk7CisgIH0KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJh
dG9yIHBvc2l0aW9uLCB2YWx1ZV90eXBlICYmeCkgeworICAgIHJldHVybiB0aGlzLT50cmVlXy5p
bnNlcnRfaGludF9tdWx0aShpdGVyYXRvcihwb3NpdGlvbiksIHN0ZDo6bW92ZSh4KSk7CisgIH0K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+CisgIHZvaWQgaW5zZXJ0KElucHV0
SXRlcmF0b3IgYiwgSW5wdXRJdGVyYXRvciBlKSB7CisgICAgdGhpcy0+dHJlZV8uaW5zZXJ0X2l0
ZXJhdG9yX211bHRpKGIsIGUpOworICB9CisgIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxpbml0X3R5cGU+IGluaXQpIHsKKyAgICB0aGlzLT50cmVlXy5pbnNlcnRfaXRlcmF0b3Jf
bXVsdGkoaW5pdC5iZWdpbigpLCBpbml0LmVuZCgpKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUuLi4gQXJncz4KKyAgaXRlcmF0b3IgZW1wbGFjZShBcmdzICYmLi4uIGFyZ3MpIHsKKyAgICBy
ZXR1cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X211bHRpKGluaXRfdHlwZShzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgaXRl
cmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBBcmdzICYmLi4uIGFy
Z3MpIHsKKyAgICByZXR1cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X2hpbnRfbXVsdGkoCisgICAgICAg
IGl0ZXJhdG9yKHBvc2l0aW9uKSwgaW5pdF90eXBlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOworICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAg
aXRlcmF0b3IgaW5zZXJ0X25vZGVfaGVscGVyKG5vZGVfdHlwZSAmJm5vZGUsIEFyZ3MgJiYuLi4g
YXJncykgeworICAgIGlmICghbm9kZSkgcmV0dXJuIHRoaXMtPmVuZCgpOworICAgIGl0ZXJhdG9y
IHJlcyA9CisgICAgICAgIGluc2VydChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4sCisgICAg
ICAgICAgICAgICBzdGQ6Om1vdmUocGFyYW1zX3R5cGU6OmVsZW1lbnQoQ29tbW9uQWNjZXNzOjpH
ZXRTbG90KG5vZGUpKSkpOworICAgIENvbW1vbkFjY2Vzczo6UmVzZXQoJm5vZGUpOworICAgIHJl
dHVybiByZXM7CisgIH0KKworIHB1YmxpYzoKKyAgaXRlcmF0b3IgaW5zZXJ0KG5vZGVfdHlwZSAm
Jm5vZGUpIHsKKyAgICByZXR1cm4gaW5zZXJ0X25vZGVfaGVscGVyKHN0ZDo6bW92ZShub2RlKSk7
CisgIH0KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIG5vZGVfdHlwZSAm
Jm5vZGUpIHsKKyAgICByZXR1cm4gaW5zZXJ0X25vZGVfaGVscGVyKHN0ZDo6bW92ZShub2RlKSwg
aGludCk7CisgIH0KKworICAvLyBEZWxldGlvbiByb3V0aW5lcy4KKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEsgPSBrZXlfdHlwZT4KKyAgc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtleV9hcmc8Sz4gJmtl
eSkgeworICAgIHJldHVybiB0aGlzLT50cmVlXy5lcmFzZV9tdWx0aShrZXkpOworICB9CisgIHVz
aW5nIHN1cGVyX3R5cGU6OmVyYXNlOworCisgIC8vIE5vZGUgZXh0cmFjdGlvbiByb3V0aW5lcy4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgbm9kZV90eXBlIGV4dHJhY3Qo
Y29uc3Qga2V5X2FyZzxLPiAma2V5KSB7CisgICAgYXV0byBpdCA9IGZpbmQoa2V5KTsKKyAgICBy
ZXR1cm4gaXQgPT0gdGhpcy0+ZW5kKCkgPyBub2RlX3R5cGUoKSA6IGV4dHJhY3QoaXQpOworICB9
CisgIHVzaW5nIHN1cGVyX3R5cGU6OmV4dHJhY3Q7CisKKyAgLy8gTWVyZ2Ugcm91dGluZXMuCisg
IC8vIE1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIGBzcmNgIGludG8gYHRoaXNgLgorICB0ZW1wbGF0
ZSA8CisgICAgICB0eXBlbmFtZSBULAorICAgICAgdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8
CisgICAgICAgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgICAgICAgIHN0ZDo6aXNfc2Ft
ZTx2YWx1ZV90eXBlLCB0eXBlbmFtZSBUOjp2YWx1ZV90eXBlPiwKKyAgICAgICAgICAgICAgc3Rk
Ojppc19zYW1lPGFsbG9jYXRvcl90eXBlLCB0eXBlbmFtZSBUOjphbGxvY2F0b3JfdHlwZT4sCisg
ICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBwYXJhbXNfdHlwZTo6aXNfbWFwX2Nv
bnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFQ6OnBhcmFtc190
eXBlOjppc19tYXBfY29udGFpbmVyPj46OnZhbHVlLAorICAgICAgICAgIGludD4gPSAwPgorICB2
b2lkIG1lcmdlKGJ0cmVlX2NvbnRhaW5lcjxUPiAmc3JjKSB7ICAvLyBOT0xJTlQKKyAgICBpbnNl
cnQoc3RkOjptYWtlX21vdmVfaXRlcmF0b3Ioc3JjLmJlZ2luKCkpLAorICAgICAgICAgICBzdGQ6
Om1ha2VfbW92ZV9pdGVyYXRvcihzcmMuZW5kKCkpKTsKKyAgICBzcmMuY2xlYXIoKTsKKyAgfQor
CisgIHRlbXBsYXRlIDwKKyAgICAgIHR5cGVuYW1lIFQsCisgICAgICB0eXBlbmFtZSBhYnNsOjpl
bmFibGVfaWZfdDwKKyAgICAgICAgICBhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAgICAgICAg
c3RkOjppc19zYW1lPHZhbHVlX3R5cGUsIHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGU+LAorICAgICAg
ICAgICAgICBzdGQ6OmlzX3NhbWU8YWxsb2NhdG9yX3R5cGUsIHR5cGVuYW1lIFQ6OmFsbG9jYXRv
cl90eXBlPiwKKyAgICAgICAgICAgICAgc3RkOjppc19zYW1lPHR5cGVuYW1lIHBhcmFtc190eXBl
Ojppc19tYXBfY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUg
VDo6cGFyYW1zX3R5cGU6OmlzX21hcF9jb250YWluZXI+Pjo6dmFsdWUsCisgICAgICAgICAgaW50
PiA9IDA+CisgIHZvaWQgbWVyZ2UoYnRyZWVfY29udGFpbmVyPFQ+ICYmc3JjKSB7CisgICAgbWVy
Z2Uoc3JjKTsKKyAgfQorfTsKKworLy8gQSBiYXNlIGNsYXNzIGZvciBidHJlZV9tdWx0aW1hcC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUcmVlPgorY2xhc3MgYnRyZWVfbXVsdGltYXBfY29udGFpbmVy
IDogcHVibGljIGJ0cmVlX211bHRpc2V0X2NvbnRhaW5lcjxUcmVlPiB7CisgIHVzaW5nIHN1cGVy
X3R5cGUgPSBidHJlZV9tdWx0aXNldF9jb250YWluZXI8VHJlZT47CisgIHVzaW5nIHBhcmFtc190
eXBlID0gdHlwZW5hbWUgVHJlZTo6cGFyYW1zX3R5cGU7CisKKyBwdWJsaWM6CisgIHVzaW5nIG1h
cHBlZF90eXBlID0gdHlwZW5hbWUgcGFyYW1zX3R5cGU6Om1hcHBlZF90eXBlOworCisgIC8vIElu
aGVyaXQgY29uc3RydWN0b3JzLgorICB1c2luZyBzdXBlcl90eXBlOjpzdXBlcl90eXBlOworICBi
dHJlZV9tdWx0aW1hcF9jb250YWluZXIoKSB7fQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRh
aW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NP
TlRBSU5FUl9JTlRFUk5BTF9CVFJFRV9DT05UQUlORVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9jb21tb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21t
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTkxZDNlYTExZmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29tbW9uLmgKQEAg
LTAsMCArMSwxOTYgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
CisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0NPTlRBSU5FUl9IXworI2RlZmluZSBB
QlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9DT05UQUlORVJfSF8KKworI2luY2x1ZGUgPGNhc3NlcnQ+
CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFp
dHMuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSBhYnNs
IHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MsIGNs
YXNzID0gdm9pZD4KK3N0cnVjdCBJc1RyYW5zcGFyZW50IDogc3RkOjpmYWxzZV90eXBlIHt9Owor
dGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgSXNUcmFuc3BhcmVudDxULCBhYnNsOjp2b2lkX3Q8
dHlwZW5hbWUgVDo6aXNfdHJhbnNwYXJlbnQ+PgorICAgIDogc3RkOjp0cnVlX3R5cGUge307CisK
K3RlbXBsYXRlIDxib29sIGlzX3RyYW5zcGFyZW50Pgorc3RydWN0IEtleUFyZyB7CisgIC8vIFRy
YW5zcGFyZW50LiBGb3J3YXJkIGBLYC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1l
IGtleV90eXBlPgorICB1c2luZyB0eXBlID0gSzsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3Qg
S2V5QXJnPGZhbHNlPiB7CisgIC8vIE5vdCB0cmFuc3BhcmVudC4gQWx3YXlzIHVzZSBga2V5X3R5
cGVgLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUga2V5X3R5cGU+CisgIHVzaW5n
IHR5cGUgPSBrZXlfdHlwZTsKK307CisKKy8vIFRoZSBub2RlX2hhbmRsZSBjb25jZXB0IGZyb20g
QysrMTcuCisvLyBXZSBzcGVjaWFsaXplIG5vZGVfaGFuZGxlIGZvciBzZXRzIGFuZCBtYXBzLiBu
b2RlX2hhbmRsZV9iYXNlIGhvbGRzIHRoZQorLy8gY29tbW9uIEFQSSBvZiBib3RoLgordGVtcGxh
dGUgPHR5cGVuYW1lIFBvbGljeVRyYWl0cywgdHlwZW5hbWUgQWxsb2M+CitjbGFzcyBub2RlX2hh
bmRsZV9iYXNlIHsKKyBwcm90ZWN0ZWQ6CisgIHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIFBv
bGljeVRyYWl0czo6c2xvdF90eXBlOworCisgcHVibGljOgorICB1c2luZyBhbGxvY2F0b3JfdHlw
ZSA9IEFsbG9jOworCisgIGNvbnN0ZXhwciBub2RlX2hhbmRsZV9iYXNlKCkge30KKyAgbm9kZV9o
YW5kbGVfYmFzZShub2RlX2hhbmRsZV9iYXNlJiYgb3RoZXIpIG5vZXhjZXB0IHsKKyAgICAqdGhp
cyA9IHN0ZDo6bW92ZShvdGhlcik7CisgIH0KKyAgfm5vZGVfaGFuZGxlX2Jhc2UoKSB7IGRlc3Ry
b3koKTsgfQorICBub2RlX2hhbmRsZV9iYXNlJiBvcGVyYXRvcj0obm9kZV9oYW5kbGVfYmFzZSYm
IG90aGVyKSBub2V4Y2VwdCB7CisgICAgZGVzdHJveSgpOworICAgIGlmICghb3RoZXIuZW1wdHko
KSkgeworICAgICAgYWxsb2NfID0gb3RoZXIuYWxsb2NfOworICAgICAgUG9saWN5VHJhaXRzOjp0
cmFuc2ZlcihhbGxvYygpLCBzbG90KCksIG90aGVyLnNsb3QoKSk7CisgICAgICBvdGhlci5yZXNl
dCgpOworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBib29sIGVtcHR5KCkgY29u
c3Qgbm9leGNlcHQgeyByZXR1cm4gIWFsbG9jXzsgfQorICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gIWVtcHR5KCk7IH0KKyAgYWxsb2NhdG9yX3R5cGUg
Z2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuICphbGxvY187IH0KKworIHByb3RlY3RlZDoK
KyAgZnJpZW5kIHN0cnVjdCBDb21tb25BY2Nlc3M7CisKKyAgc3RydWN0IHRyYW5zZmVyX3RhZ190
IHt9OworICBub2RlX2hhbmRsZV9iYXNlKHRyYW5zZmVyX3RhZ190LCBjb25zdCBhbGxvY2F0b3Jf
dHlwZSYgYSwgc2xvdF90eXBlKiBzKQorICAgICAgOiBhbGxvY18oYSkgeworICAgIFBvbGljeVRy
YWl0czo6dHJhbnNmZXIoYWxsb2MoKSwgc2xvdCgpLCBzKTsKKyAgfQorCisgIHN0cnVjdCBtb3Zl
X3RhZ190IHt9OworICBub2RlX2hhbmRsZV9iYXNlKG1vdmVfdGFnX3QsIGNvbnN0IGFsbG9jYXRv
cl90eXBlJiBhLCBzbG90X3R5cGUqIHMpCisgICAgICA6IGFsbG9jXyhhKSB7CisgICAgUG9saWN5
VHJhaXRzOjpjb25zdHJ1Y3QoYWxsb2MoKSwgc2xvdCgpLCBzKTsKKyAgfQorCisgIHZvaWQgZGVz
dHJveSgpIHsKKyAgICBpZiAoIWVtcHR5KCkpIHsKKyAgICAgIFBvbGljeVRyYWl0czo6ZGVzdHJv
eShhbGxvYygpLCBzbG90KCkpOworICAgICAgcmVzZXQoKTsKKyAgICB9CisgIH0KKworICB2b2lk
IHJlc2V0KCkgeworICAgIGFzc2VydChhbGxvY18uaGFzX3ZhbHVlKCkpOworICAgIGFsbG9jXyA9
IGFic2w6Om51bGxvcHQ7CisgIH0KKworICBzbG90X3R5cGUqIHNsb3QoKSBjb25zdCB7CisgICAg
YXNzZXJ0KCFlbXB0eSgpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxzbG90X3R5cGUq
PihzdGQ6OmFkZHJlc3NvZihzbG90X3NwYWNlXykpOworICB9CisgIGFsbG9jYXRvcl90eXBlKiBh
bGxvYygpIHsgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKCphbGxvY18pOyB9CisKKyBwcml2YXRlOgor
ICBhYnNsOjpvcHRpb25hbDxhbGxvY2F0b3JfdHlwZT4gYWxsb2NfOworICBtdXRhYmxlIGFic2w6
OmFsaWduZWRfc3RvcmFnZV90PHNpemVvZihzbG90X3R5cGUpLCBhbGlnbm9mKHNsb3RfdHlwZSk+
CisgICAgICBzbG90X3NwYWNlXzsKK307CisKKy8vIEZvciBzZXRzLgordGVtcGxhdGUgPHR5cGVu
YW1lIFBvbGljeSwgdHlwZW5hbWUgUG9saWN5VHJhaXRzLCB0eXBlbmFtZSBBbGxvYywKKyAgICAg
ICAgICB0eXBlbmFtZSA9IHZvaWQ+CitjbGFzcyBub2RlX2hhbmRsZSA6IHB1YmxpYyBub2RlX2hh
bmRsZV9iYXNlPFBvbGljeVRyYWl0cywgQWxsb2M+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1l
IG5vZGVfaGFuZGxlOjpub2RlX2hhbmRsZV9iYXNlOworCisgcHVibGljOgorICB1c2luZyB2YWx1
ZV90eXBlID0gdHlwZW5hbWUgUG9saWN5VHJhaXRzOjp2YWx1ZV90eXBlOworCisgIGNvbnN0ZXhw
ciBub2RlX2hhbmRsZSgpIHt9CisKKyAgdmFsdWVfdHlwZSYgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBQb2xpY3lUcmFpdHM6OmVsZW1lbnQodGhpcy0+c2xvdCgpKTsgfQorCisgcHJpdmF0ZToKKyAg
ZnJpZW5kIHN0cnVjdCBDb21tb25BY2Nlc3M7CisKKyAgdXNpbmcgQmFzZTo6QmFzZTsKK307CisK
Ky8vIEZvciBtYXBzLgordGVtcGxhdGUgPHR5cGVuYW1lIFBvbGljeSwgdHlwZW5hbWUgUG9saWN5
VHJhaXRzLCB0eXBlbmFtZSBBbGxvYz4KK2NsYXNzIG5vZGVfaGFuZGxlPFBvbGljeSwgUG9saWN5
VHJhaXRzLCBBbGxvYywKKyAgICAgICAgICAgICAgICAgIGFic2w6OnZvaWRfdDx0eXBlbmFtZSBQ
b2xpY3k6Om1hcHBlZF90eXBlPj4KKyAgICA6IHB1YmxpYyBub2RlX2hhbmRsZV9iYXNlPFBvbGlj
eVRyYWl0cywgQWxsb2M+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIG5vZGVfaGFuZGxlOjpu
b2RlX2hhbmRsZV9iYXNlOworCisgcHVibGljOgorICB1c2luZyBrZXlfdHlwZSA9IHR5cGVuYW1l
IFBvbGljeTo6a2V5X3R5cGU7CisgIHVzaW5nIG1hcHBlZF90eXBlID0gdHlwZW5hbWUgUG9saWN5
OjptYXBwZWRfdHlwZTsKKworICBjb25zdGV4cHIgbm9kZV9oYW5kbGUoKSB7fQorCisgIGF1dG8g
a2V5KCkgY29uc3QgLT4gZGVjbHR5cGUoUG9saWN5VHJhaXRzOjprZXkodGhpcy0+c2xvdCgpKSkg
eworICAgIHJldHVybiBQb2xpY3lUcmFpdHM6OmtleSh0aGlzLT5zbG90KCkpOworICB9CisKKyAg
bWFwcGVkX3R5cGUmIG1hcHBlZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gUG9saWN5VHJhaXRzOjp2
YWx1ZSgmUG9saWN5VHJhaXRzOjplbGVtZW50KHRoaXMtPnNsb3QoKSkpOworICB9CisKKyBwcml2
YXRlOgorICBmcmllbmQgc3RydWN0IENvbW1vbkFjY2VzczsKKworICB1c2luZyBCYXNlOjpCYXNl
OworfTsKKworLy8gUHJvdmlkZSBhY2Nlc3MgdG8gbm9uLXB1YmxpYyBub2RlLWhhbmRsZSBmdW5j
dGlvbnMuCitzdHJ1Y3QgQ29tbW9uQWNjZXNzIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+
CisgIHN0YXRpYyBhdXRvIEdldFNsb3QoY29uc3QgTm9kZSYgbm9kZSkgLT4gZGVjbHR5cGUobm9k
ZS5zbG90KCkpIHsKKyAgICByZXR1cm4gbm9kZS5zbG90KCk7CisgIH0KKworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTm9kZT4KKyAgc3RhdGljIHZvaWQgUmVzZXQoTm9kZSogbm9kZSkgeworICAgIG5v
ZGUtPnJlc2V0KCk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4g
QXJncz4KKyAgc3RhdGljIFQgVHJhbnNmZXIoQXJncyYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4g
VCh0eXBlbmFtZSBUOjp0cmFuc2Zlcl90YWdfdHt9LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
IHN0YXRpYyBUIE1vdmUoQXJncyYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4gVCh0eXBlbmFtZSBU
Ojptb3ZlX3RhZ190e30sIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KK307CisK
Ky8vIEltcGxlbWVudCB0aGUgaW5zZXJ0X3JldHVybl90eXBlPD4gY29uY2VwdCBvZiBDKysxNy4K
K3RlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgTm9kZVR5cGU+CitzdHJ1Y3QgSW5zZXJ0
UmV0dXJuVHlwZSB7CisgIEl0ZXJhdG9yIHBvc2l0aW9uOworICBib29sIGluc2VydGVkOworICBO
b2RlVHlwZSBub2RlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAor
fSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5B
TF9DT05UQUlORVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21w
cmVzc2VkX3R1cGxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29tcHJlc3NlZF90dXBs
ZS5oCmluZGV4IGNjNTI2MTRmNWIzLi43ZDA4ZTM3MGRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL2NvbXByZXNzZWRfdHVwbGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0yNywyNCArMjcsMjUgQEAKIC8vICAgY29uc3QgVDImIHQyID0gdmFs
dWUuZ2V0PDI+KCk7CiAvLyAgIC4uLgogLy8KLS8vIGh0dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29t
L3cvY3BwL2xhbmd1YWdlL2VibworLy8gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3Bw
L2xhbmd1YWdlL2VibwogCiAjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0NPTVBSRVNT
RURfVFVQTEVfSF8KICNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQ09NUFJFU1NFRF9U
VVBMRV9IXwogCisjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KICNpbmNsdWRlIDx0dXBsZT4K
ICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAi
YWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKIAotI2lmZGVmIF9NU0NfVkVSCisjaWYgZGVmaW5lZChf
TVNDX1ZFUikgJiYgIWRlZmluZWQoX19OVkNDX18pCiAvLyBXZSBuZWVkIHRvIG1hcmsgdGhlc2Ug
Y2xhc3NlcyB3aXRoIHRoaXMgZGVjbHNwZWMgdG8gZW5zdXJlIHRoYXQKIC8vIENvbXByZXNzZWRU
dXBsZSBoYXBwZW5zLgogI2RlZmluZSBBQlNMX0lOVEVSTkFMX0NPTVBSRVNTRURfVFVQTEVfREVD
TFNQRUMgX19kZWNsc3BlYyhlbXB0eV9iYXNlcykKLSNlbHNlICAvLyBfTVNDX1ZFUgorI2Vsc2UK
ICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9DT01QUkVTU0VEX1RVUExFX0RFQ0xTUEVDCi0jZW5kaWYg
IC8vIF9NU0NfVkVSCisjZW5kaWYKIAogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIGNvbnRh
aW5lcl9pbnRlcm5hbCB7CkBAIC03NSw1NyArNzYsMTEwIEBAIGNvbnN0ZXhwciBib29sIElzRmlu
YWwoKSB7CiAjZW5kaWYKIH0KIAorLy8gV2UgY2FuJ3QgdXNlIEVCQ08gb24gb3RoZXIgQ29tcHJl
c3NlZFR1cGxlcyBiZWNhdXNlIHRoYXQgd291bGQgbWVhbiB0aGF0IHdlCisvLyBkZXJpdmUgZnJv
bSBtdWx0aXBsZSBTdG9yYWdlPD4gaW5zdGFudGlhdGlvbnMgd2l0aCB0aGUgc2FtZSBJIHBhcmFt
ZXRlciwKKy8vIGFuZCBwb3RlbnRpYWxseSBmcm9tIG11bHRpcGxlIGlkZW50aWNhbCBTdG9yYWdl
PD4gaW5zdGFudGlhdGlvbnMuICBTbyBhbnl0aW1lCisvLyB3ZSB1c2UgdHlwZSBpbmhlcml0YW5j
ZSByYXRoZXIgdGhhbiBlbmNhcHN1bGF0aW9uLCB3ZSBtYXJrCisvLyBDb21wcmVzc2VkVHVwbGVJ
bXBsLCB0byBtYWtlIHRoaXMgZWFzeSB0byBkZXRlY3QuCitzdHJ1Y3QgdXNlc19pbmhlcml0YW5j
ZSB7fTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgYm9vbCBTaG91bGRVc2VC
YXNlKCkgewotICByZXR1cm4gc3RkOjppc19jbGFzczxUPjo6dmFsdWUgJiYgc3RkOjppc19lbXB0
eTxUPjo6dmFsdWUgJiYgIUlzRmluYWw8VD4oKTsKKyAgcmV0dXJuIHN0ZDo6aXNfY2xhc3M8VD46
OnZhbHVlICYmIHN0ZDo6aXNfZW1wdHk8VD46OnZhbHVlICYmICFJc0ZpbmFsPFQ+KCkgJiYKKyAg
ICAgICAgICFzdGQ6OmlzX2Jhc2Vfb2Y8dXNlc19pbmhlcml0YW5jZSwgVD46OnZhbHVlOwogfQog
CiAvLyBUaGUgc3RvcmFnZSBjbGFzcyBwcm92aWRlcyB0d28gc3BlY2lhbGl6YXRpb25zOgogLy8g
IC0gRm9yIGVtcHR5IGNsYXNzZXMsIGl0IHN0b3JlcyBUIGFzIGEgYmFzZSBjbGFzcy4KIC8vICAt
IEZvciBldmVyeXRoaW5nIGVsc2UsIGl0IHN0b3JlcyBUIGFzIGEgbWVtYmVyLgotdGVtcGxhdGUg
PHR5cGVuYW1lIEQsIHNpemVfdCBJLCBib29sID0gU2hvdWxkVXNlQmFzZTxFbGVtVDxELCBJPj4o
KT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgSSwKKyNpZiBkZWZpbmVkKF9NU0NfVkVS
KQorICAgICAgICAgIGJvb2wgVXNlQmFzZSA9CisgICAgICAgICAgICAgIFNob3VsZFVzZUJhc2U8
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8dHJ1ZSwgVD46OnR5cGU+KCk+CisjZWxzZQorICAgICAg
ICAgIGJvb2wgVXNlQmFzZSA9IFNob3VsZFVzZUJhc2U8VD4oKT4KKyNlbmRpZgogc3RydWN0IFN0
b3JhZ2UgewotICB1c2luZyBUID0gRWxlbVQ8RCwgST47CiAgIFQgdmFsdWU7CiAgIGNvbnN0ZXhw
ciBTdG9yYWdlKCkgPSBkZWZhdWx0OwotICBleHBsaWNpdCBjb25zdGV4cHIgU3RvcmFnZShUJiYg
dikgOiB2YWx1ZShhYnNsOjpmb3J3YXJkPFQ+KHYpKSB7fQotICBjb25zdGV4cHIgY29uc3QgVCYg
Z2V0KCkgY29uc3QgeyByZXR1cm4gdmFsdWU7IH0KLSAgVCYgZ2V0KCkgeyByZXR1cm4gdmFsdWU7
IH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBTdG9yYWdl
KGFic2w6OmluX3BsYWNlX3QsIFYmJiB2KQorICAgICAgOiB2YWx1ZShhYnNsOjpmb3J3YXJkPFY+
KHYpKSB7fQorICBjb25zdGV4cHIgY29uc3QgVCYgZ2V0KCkgY29uc3QmIHsgcmV0dXJuIHZhbHVl
OyB9CisgIFQmIGdldCgpICYgeyByZXR1cm4gdmFsdWU7IH0KKyAgY29uc3RleHByIGNvbnN0IFQm
JiBnZXQoKSBjb25zdCYmIHsgcmV0dXJuIGFic2w6Om1vdmUoKnRoaXMpLnZhbHVlOyB9CisgIFQm
JiBnZXQoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoKnRoaXMpLnZhbHVlOyB9CiB9OwogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRCwgc2l6ZV90IEk+Ci1zdHJ1Y3QgQUJTTF9JTlRFUk5BTF9DT01QUkVT
U0VEX1RVUExFX0RFQ0xTUEVDIFN0b3JhZ2U8RCwgSSwgdHJ1ZT4KLSAgICA6IEVsZW1UPEQsIEk+
IHsKLSAgdXNpbmcgVCA9IGludGVybmFsX2NvbXByZXNzZWRfdHVwbGU6OkVsZW1UPEQsIEk+Owor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBJPgorc3RydWN0IEFCU0xfSU5URVJOQUxfQ09N
UFJFU1NFRF9UVVBMRV9ERUNMU1BFQyBTdG9yYWdlPFQsIEksIHRydWU+IDogVCB7CiAgIGNvbnN0
ZXhwciBTdG9yYWdlKCkgPSBkZWZhdWx0OwotICBleHBsaWNpdCBjb25zdGV4cHIgU3RvcmFnZShU
JiYgdikgOiBUKGFic2w6OmZvcndhcmQ8VD4odikpIHt9Ci0gIGNvbnN0ZXhwciBjb25zdCBUJiBn
ZXQoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICBUJiBnZXQoKSB7IHJldHVybiAqdGhpczsg
fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPgorICBleHBsaWNpdCBjb25zdGV4cHIgU3RvcmFn
ZShhYnNsOjppbl9wbGFjZV90LCBWJiYgdikKKyAgICAgIDogVChhYnNsOjpmb3J3YXJkPFY+KHYp
KSB7fQorCisgIGNvbnN0ZXhwciBjb25zdCBUJiBnZXQoKSBjb25zdCYgeyByZXR1cm4gKnRoaXM7
IH0KKyAgVCYgZ2V0KCkgJiB7IHJldHVybiAqdGhpczsgfQorICBjb25zdGV4cHIgY29uc3QgVCYm
IGdldCgpIGNvbnN0JiYgeyByZXR1cm4gYWJzbDo6bW92ZSgqdGhpcyk7IH0KKyAgVCYmIGdldCgp
ICYmIHsgcmV0dXJuIHN0ZDo6bW92ZSgqdGhpcyk7IH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBELCB0eXBlbmFtZSBJPgordGVtcGxhdGUgPHR5cGVuYW1lIEQsIHR5cGVuYW1lIEksIGJvb2wg
U2hvdWxkQW55VXNlQmFzZT4KIHN0cnVjdCBBQlNMX0lOVEVSTkFMX0NPTVBSRVNTRURfVFVQTEVf
REVDTFNQRUMgQ29tcHJlc3NlZFR1cGxlSW1wbDsKIAotdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFRz
LCBzaXplX3QuLi4gST4KLXN0cnVjdCBBQlNMX0lOVEVSTkFMX0NPTVBSRVNTRURfVFVQTEVfREVD
TFNQRUMKLSAgICBDb21wcmVzc2VkVHVwbGVJbXBsPENvbXByZXNzZWRUdXBsZTxUcy4uLj4sIGFi
c2w6OmluZGV4X3NlcXVlbmNlPEkuLi4+PgordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFRzLCBzaXpl
X3QuLi4gSSwgYm9vbCBTaG91bGRBbnlVc2VCYXNlPgorc3RydWN0IEFCU0xfSU5URVJOQUxfQ09N
UFJFU1NFRF9UVVBMRV9ERUNMU1BFQyBDb21wcmVzc2VkVHVwbGVJbXBsPAorICAgIENvbXByZXNz
ZWRUdXBsZTxUcy4uLj4sIGFic2w6OmluZGV4X3NlcXVlbmNlPEkuLi4+LCBTaG91bGRBbnlVc2VC
YXNlPgogICAgIC8vIFdlIHVzZSB0aGUgZHVtbXkgaWRlbnRpdHkgZnVuY3Rpb24gdGhyb3VnaCBz
dGQ6OmludGVncmFsX2NvbnN0YW50IHRvCiAgICAgLy8gY29udmluY2UgTVNWQyBvZiBhY2NlcHRp
bmcgYW5kIGV4cGFuZGluZyBJIGluIHRoYXQgY29udGV4dC4gV2l0aG91dCBpdAogICAgIC8vIHlv
dSB3b3VsZCBnZXQ6CiAgICAgLy8gICBlcnJvciBDMzU0ODogJ0knOiBwYXJhbWV0ZXIgcGFjayBj
YW5ub3QgYmUgdXNlZCBpbiB0aGlzIGNvbnRleHQKLSAgICA6IFN0b3JhZ2U8Q29tcHJlc3NlZFR1
cGxlPFRzLi4uPiwKLSAgICAgICAgICAgICAgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxzaXplX3Qs
IEk+Ojp2YWx1ZT4uLi4geworICAgIDogdXNlc19pbmhlcml0YW5jZSwKKyAgICAgIFN0b3JhZ2U8
VHMsIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBJPjo6dmFsdWU+Li4uIHsKICAgY29u
c3RleHByIENvbXByZXNzZWRUdXBsZUltcGwoKSA9IGRlZmF1bHQ7Ci0gIGV4cGxpY2l0IGNvbnN0
ZXhwciBDb21wcmVzc2VkVHVwbGVJbXBsKFRzJiYuLi4gYXJncykKLSAgICAgIDogU3RvcmFnZTxD
b21wcmVzc2VkVHVwbGU8VHMuLi4+LCBJPihhYnNsOjpmb3J3YXJkPFRzPihhcmdzKSkuLi4ge30K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFZzPgorICBleHBsaWNpdCBjb25zdGV4cHIgQ29tcHJl
c3NlZFR1cGxlSW1wbChhYnNsOjppbl9wbGFjZV90LCBWcyYmLi4uIGFyZ3MpCisgICAgICA6IFN0
b3JhZ2U8VHMsIEk+KGFic2w6OmluX3BsYWNlLCBhYnNsOjpmb3J3YXJkPFZzPihhcmdzKSkuLi4g
e30KKyAgZnJpZW5kIENvbXByZXNzZWRUdXBsZTxUcy4uLj47CiB9OwogCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gVHMsIHNpemVfdC4uLiBJPgorc3RydWN0IEFCU0xfSU5URVJOQUxfQ09NUFJFU1NF
RF9UVVBMRV9ERUNMU1BFQyBDb21wcmVzc2VkVHVwbGVJbXBsPAorICAgIENvbXByZXNzZWRUdXBs
ZTxUcy4uLj4sIGFic2w6OmluZGV4X3NlcXVlbmNlPEkuLi4+LCBmYWxzZT4KKyAgICAvLyBXZSB1
c2UgdGhlIGR1bW15IGlkZW50aXR5IGZ1bmN0aW9uIGFzIGFib3ZlLi4uCisgICAgOiBTdG9yYWdl
PFRzLCBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgST46OnZhbHVlLCBmYWxzZT4uLi4g
eworICBjb25zdGV4cHIgQ29tcHJlc3NlZFR1cGxlSW1wbCgpID0gZGVmYXVsdDsKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIFZzPgorICBleHBsaWNpdCBjb25zdGV4cHIgQ29tcHJlc3NlZFR1cGxl
SW1wbChhYnNsOjppbl9wbGFjZV90LCBWcyYmLi4uIGFyZ3MpCisgICAgICA6IFN0b3JhZ2U8VHMs
IEksIGZhbHNlPihhYnNsOjppbl9wbGFjZSwgYWJzbDo6Zm9yd2FyZDxWcz4oYXJncykpLi4uIHt9
CisgIGZyaWVuZCBDb21wcmVzc2VkVHVwbGU8VHMuLi4+OworfTsKKworc3RkOjpmYWxzZV90eXBl
IE9yKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OmZhbHNlX3R5cGU+KTsKK3N0ZDo6dHJ1ZV90
eXBlIE9yKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxib29sPik7CisKKy8vIE1TVkMgcmVxdWlyZXMg
dGhpcyB0byBiZSBkb25lIHNlcGFyYXRlbHkgcmF0aGVyIHRoYW4gd2l0aGluIHRoZSBkZWNsYXJh
dGlvbgorLy8gb2YgQ29tcHJlc3NlZFR1cGxlIGJlbG93LgordGVtcGxhdGUgPHR5cGVuYW1lLi4u
IFRzPgorY29uc3RleHByIGJvb2wgU2hvdWxkQW55VXNlQmFzZSgpIHsKKyAgcmV0dXJuIGRlY2x0
eXBlKAorICAgICAgT3Ioe3N0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgU2hvdWxkVXNlQmFz
ZTxUcz4oKT4oKS4uLn0pKXt9OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
Vj4KK3VzaW5nIFR1cGxlTW92ZUNvbnN0cnVjdGlibGUgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlv
bmFsPAorICAgICAgc3RkOjppc19yZWZlcmVuY2U8VD46OnZhbHVlLCBzdGQ6OmlzX2NvbnZlcnRp
YmxlPFYsIFQ+LAorICAgICAgc3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIFYmJj4+Ojp0eXBlOwor
CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWxfY29tcHJlc3NlZF90dXBsZQogCiAvLyBIZWxwZXIg
Y2xhc3MgdG8gcGVyZm9ybSB0aGUgRW1wdHkgQmFzZSBDbGFzcyBPcHRpbWl6YXRpb24uCiAvLyBU
cyBjYW4gY29udGFpbiBjbGFzc2VzIGFuZCBub24tY2xhc3NlcywgZW1wdHkgb3Igbm90LiBGb3Ig
dGhlIG9uZXMgdGhhdAogLy8gYXJlIGVtcHR5IGNsYXNzZXMsIHdlIHBlcmZvcm0gdGhlIENvbXBy
ZXNzZWRUdXBsZS4gSWYgYWxsIHR5cGVzIGluIFRzIGFyZQotLy8gZW1wdHkgY2xhc3NlcywgdGhl
biBDb21wcmVzc2VkVHVwbGU8VHMuLi4+IGlzIGl0c2VsZiBhbiBlbXB0eSBjbGFzcy4KKy8vIGVt
cHR5IGNsYXNzZXMsIHRoZW4gQ29tcHJlc3NlZFR1cGxlPFRzLi4uPiBpcyBpdHNlbGYgYW4gZW1w
dHkgY2xhc3MuICAoVGhpcworLy8gZG9lcyBub3QgYXBwbHkgd2hlbiBvbmUgb3IgbW9yZSBvZiB0
aG9zZSBlbXB0eSBjbGFzc2VzIGlzIGl0c2VsZiBhbiBlbXB0eQorLy8gQ29tcHJlc3NlZFR1cGxl
LikKIC8vCiAvLyBUbyBhY2Nlc3MgdGhlIG1lbWJlcnMsIHVzZSBtZW1iZXIgLmdldDxOPigpIGZ1
bmN0aW9uLgogLy8KQEAgLTEzNywyOCArMTkxLDYyIEBAIHN0cnVjdCBBQlNMX0lOVEVSTkFMX0NP
TVBSRVNTRURfVFVQTEVfREVDTFNQRUMKIC8vICAgY29uc3QgVDImIHQyID0gdmFsdWUuZ2V0PDI+
KCk7CiAvLyAgIC4uLgogLy8KLS8vIGh0dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2xh
bmd1YWdlL2VibworLy8gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2xhbmd1YWdl
L2VibwogdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFRzPgogY2xhc3MgQUJTTF9JTlRFUk5BTF9DT01Q
UkVTU0VEX1RVUExFX0RFQ0xTUEVDIENvbXByZXNzZWRUdXBsZQogICAgIDogcHJpdmF0ZSBpbnRl
cm5hbF9jb21wcmVzc2VkX3R1cGxlOjpDb21wcmVzc2VkVHVwbGVJbXBsPAotICAgICAgICAgIENv
bXByZXNzZWRUdXBsZTxUcy4uLj4sIGFic2w6OmluZGV4X3NlcXVlbmNlX2ZvcjxUcy4uLj4+IHsK
KyAgICAgICAgICBDb21wcmVzc2VkVHVwbGU8VHMuLi4+LCBhYnNsOjppbmRleF9zZXF1ZW5jZV9m
b3I8VHMuLi4+LAorICAgICAgICAgIGludGVybmFsX2NvbXByZXNzZWRfdHVwbGU6OlNob3VsZEFu
eVVzZUJhc2U8VHMuLi4+KCk+IHsKICBwcml2YXRlOgogICB0ZW1wbGF0ZSA8aW50IEk+CiAgIHVz
aW5nIEVsZW1UID0gaW50ZXJuYWxfY29tcHJlc3NlZF90dXBsZTo6RWxlbVQ8Q29tcHJlc3NlZFR1
cGxlLCBJPjsKIAorICB0ZW1wbGF0ZSA8aW50IEk+CisgIHVzaW5nIFN0b3JhZ2VUID0gaW50ZXJu
YWxfY29tcHJlc3NlZF90dXBsZTo6U3RvcmFnZTxFbGVtVDxJPiwgST47CisKICBwdWJsaWM6Cisg
IC8vIFRoZXJlIHNlZW1zIHRvIGJlIGEgYnVnIGluIE1TVkMgZGVhbGluZyBpbiB3aGljaCB1c2lu
ZyAnPWRlZmF1bHQnIGhlcmUgd2lsbAorICAvLyBjYXVzZSB0aGUgY29tcGlsZXIgdG8gaWdub3Jl
IHRoZSBib2R5IG9mIG90aGVyIGNvbnN0cnVjdG9ycy4gVGhlIHdvcmstCisgIC8vIGFyb3VuZCBp
cyB0byBleHBsaWNpdGx5IGltcGxlbWVudCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKyNpZiBk
ZWZpbmVkKF9NU0NfVkVSKQorICBjb25zdGV4cHIgQ29tcHJlc3NlZFR1cGxlKCkgOiBDb21wcmVz
c2VkVHVwbGU6OkNvbXByZXNzZWRUdXBsZUltcGwoKSB7fQorI2Vsc2UKICAgY29uc3RleHByIENv
bXByZXNzZWRUdXBsZSgpID0gZGVmYXVsdDsKLSAgZXhwbGljaXQgY29uc3RleHByIENvbXByZXNz
ZWRUdXBsZShUcy4uLiBiYXNlKQotICAgICAgOiBDb21wcmVzc2VkVHVwbGU6OkNvbXByZXNzZWRU
dXBsZUltcGwoYWJzbDo6Zm9yd2FyZDxUcz4oYmFzZSkuLi4pIHt9CisjZW5kaWYKKyAgZXhwbGlj
aXQgY29uc3RleHByIENvbXByZXNzZWRUdXBsZShjb25zdCBUcyYuLi4gYmFzZSkKKyAgICAgIDog
Q29tcHJlc3NlZFR1cGxlOjpDb21wcmVzc2VkVHVwbGVJbXBsKGFic2w6OmluX3BsYWNlLCBiYXNl
Li4uKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBWcywKKyAgICAgICAgICAgIGFic2w6
OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgIGFic2w6OmNvbmp1bmN0aW9uPAorICAgICAg
ICAgICAgICAgICAgICAvLyBFbnN1cmUgd2UgYXJlIG5vdCBoaWRpbmcgZGVmYXVsdCBjb3B5L21v
dmUgY29uc3RydWN0b3JzLgorICAgICAgICAgICAgICAgICAgICBhYnNsOjpuZWdhdGlvbjxzdGQ6
OmlzX3NhbWU8dm9pZChDb21wcmVzc2VkVHVwbGUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZChhYnNsOjpkZWNheV90PFZzPi4uLik+PiwKKyAg
ICAgICAgICAgICAgICAgICAgaW50ZXJuYWxfY29tcHJlc3NlZF90dXBsZTo6VHVwbGVNb3ZlQ29u
c3RydWN0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRzLCBWcyYmPi4uLj46OnZhbHVl
LAorICAgICAgICAgICAgICAgIGJvb2w+ID0gdHJ1ZT4KKyAgZXhwbGljaXQgY29uc3RleHByIENv
bXByZXNzZWRUdXBsZShWcyYmLi4uIGJhc2UpCisgICAgICA6IENvbXByZXNzZWRUdXBsZTo6Q29t
cHJlc3NlZFR1cGxlSW1wbChhYnNsOjppbl9wbGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFic2w6OmZvcndhcmQ8VnM+KGJhc2UpLi4uKSB7fQorCisg
IHRlbXBsYXRlIDxpbnQgST4KKyAgRWxlbVQ8ST4mIGdldCgpICYgeworICAgIHJldHVybiBpbnRl
cm5hbF9jb21wcmVzc2VkX3R1cGxlOjpTdG9yYWdlPEVsZW1UPEk+LCBJPjo6Z2V0KCk7CisgIH0K
KworICB0ZW1wbGF0ZSA8aW50IEk+CisgIGNvbnN0ZXhwciBjb25zdCBFbGVtVDxJPiYgZ2V0KCkg
Y29uc3QmIHsKKyAgICByZXR1cm4gU3RvcmFnZVQ8ST46OmdldCgpOworICB9CiAKICAgdGVtcGxh
dGUgPGludCBJPgotICBFbGVtVDxJPiYgZ2V0KCkgewotICAgIHJldHVybiBpbnRlcm5hbF9jb21w
cmVzc2VkX3R1cGxlOjpTdG9yYWdlPENvbXByZXNzZWRUdXBsZSwgST46OmdldCgpOworICBFbGVt
VDxJPiYmIGdldCgpICYmIHsKKyAgICByZXR1cm4gc3RkOjptb3ZlKCp0aGlzKS5TdG9yYWdlVDxJ
Pjo6Z2V0KCk7CiAgIH0KIAogICB0ZW1wbGF0ZSA8aW50IEk+Ci0gIGNvbnN0ZXhwciBjb25zdCBF
bGVtVDxJPiYgZ2V0KCkgY29uc3QgewotICAgIHJldHVybiBpbnRlcm5hbF9jb21wcmVzc2VkX3R1
cGxlOjpTdG9yYWdlPENvbXByZXNzZWRUdXBsZSwgST46OmdldCgpOworICBjb25zdGV4cHIgY29u
c3QgRWxlbVQ8ST4mJiBnZXQoKSBjb25zdCYmIHsKKyAgICByZXR1cm4gYWJzbDo6bW92ZSgqdGhp
cykuU3RvcmFnZVQ8ST46OmdldCgpOwogICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL2NvbXByZXNzZWRfdHVwbGVfdGVzdC5jYwppbmRleCA0NTAzMGM2NzVlZS4uMTlh
ZjhmMTBhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21wcmVzc2Vk
X3R1cGxlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbXByZXNzZWRf
dHVwbGVfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtMTQsMTcgKzE0LDI2IEBACiAKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9j
b21wcmVzc2VkX3R1cGxlLmgiCiAKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5n
PgogCiAjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5o
IgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMv
YW55LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFic2wv
dXRpbGl0eS91dGlsaXR5LmgiCiAKLW5hbWVzcGFjZSBhYnNsIHsKLW5hbWVzcGFjZSBjb250YWlu
ZXJfaW50ZXJuYWwgewotbmFtZXNwYWNlIHsKKy8vIFRoZXNlIGFyZSBkZWNsYXJlZCBhdCBnbG9i
YWwgc2NvcGUgcHVyZWx5IHNvIHRoYXQgZXJyb3IgbWVzc2FnZXMKKy8vIGFyZSBzbWFsbGVyIGFu
ZCBlYXNpZXIgdG8gdW5kZXJzdGFuZC4KK2VudW0gY2xhc3MgQ2FsbFR5cGUgeyBrQ29uc3RSZWYs
IGtDb25zdE1vdmUgfTsKIAogdGVtcGxhdGUgPGludD4KLXN0cnVjdCBFbXB0eSB7fTsKK3N0cnVj
dCBFbXB0eSB7CisgIGNvbnN0ZXhwciBDYWxsVHlwZSB2YWx1ZSgpIGNvbnN0JiB7IHJldHVybiBD
YWxsVHlwZTo6a0NvbnN0UmVmOyB9CisgIGNvbnN0ZXhwciBDYWxsVHlwZSB2YWx1ZSgpIGNvbnN0
JiYgeyByZXR1cm4gQ2FsbFR5cGU6OmtDb25zdE1vdmU7IH0KK307CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogc3RydWN0IE5vdEVtcHR5IHsKQEAgLTM3LDYgKzQ2LDE0IEBAIHN0cnVjdCBUd29W
YWx1ZXMgewogICBVIHZhbHVlMjsKIH07CiAKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNl
IGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjp0ZXN0X2lu
dGVybmFsOjpDb3B5YWJsZU1vdmFibGVJbnN0YW5jZTsKK3VzaW5nIGFic2w6OnRlc3RfaW50ZXJu
YWw6Okluc3RhbmNlVHJhY2tlcjsKKwogVEVTVChDb21wcmVzc2VkVHVwbGVUZXN0LCBTaXplb2Yp
IHsKICAgRVhQRUNUX0VRKHNpemVvZihpbnQpLCBzaXplb2YoQ29tcHJlc3NlZFR1cGxlPGludD4p
KTsKICAgRVhQRUNUX0VRKHNpemVvZihpbnQpLCBzaXplb2YoQ29tcHJlc3NlZFR1cGxlPGludCwg
RW1wdHk8MD4+KSk7CkBAIC01Miw2ICs2OSwxNDEgQEAgVEVTVChDb21wcmVzc2VkVHVwbGVUZXN0
LCBTaXplb2YpIHsKICAgICAgICAgICAgIHNpemVvZihDb21wcmVzc2VkVHVwbGU8aW50LCBFbXB0
eTwwPiwgTm90RW1wdHk8ZG91YmxlPiwgRW1wdHk8MT4+KSk7CiB9CiAKK1RFU1QoQ29tcHJlc3Nl
ZFR1cGxlVGVzdCwgT25lTW92ZU9uUlZhbHVlQ29uc3RydWN0aW9uVGVtcCkgeworICBJbnN0YW5j
ZVRyYWNrZXIgdHJhY2tlcjsKKyAgQ29tcHJlc3NlZFR1cGxlPENvcHlhYmxlTW92YWJsZUluc3Rh
bmNlPiB4MShDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSgxKSk7CisgIEVYUEVDVF9FUSh0cmFja2Vy
Lmluc3RhbmNlcygpLCAxKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDApOworICBF
WFBFQ1RfTEUodHJhY2tlci5tb3ZlcygpLCAxKTsKKyAgRVhQRUNUX0VRKHgxLmdldDwwPigpLnZh
bHVlKCksIDEpOworfQorCitURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIE9uZU1vdmVPblJWYWx1
ZUNvbnN0cnVjdGlvbk1vdmUpIHsKKyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisKKyAgQ29w
eWFibGVNb3ZhYmxlSW5zdGFuY2UgaTEoMSk7CisgIENvbXByZXNzZWRUdXBsZTxDb3B5YWJsZU1v
dmFibGVJbnN0YW5jZT4geDEoc3RkOjptb3ZlKGkxKSk7CisgIEVYUEVDVF9FUSh0cmFja2VyLmlu
c3RhbmNlcygpLCAyKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDApOworICBFWFBF
Q1RfTEUodHJhY2tlci5tb3ZlcygpLCAxKTsKKyAgRVhQRUNUX0VRKHgxLmdldDwwPigpLnZhbHVl
KCksIDEpOworfQorCitURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIE9uZU1vdmVPblJWYWx1ZUNv
bnN0cnVjdGlvbk1peGVkVHlwZXMpIHsKKyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIENv
cHlhYmxlTW92YWJsZUluc3RhbmNlIGkxKDEpOworICBDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSBp
MigyKTsKKyAgRW1wdHk8MD4gZW1wdHk7CisgIENvbXByZXNzZWRUdXBsZTxDb3B5YWJsZU1vdmFi
bGVJbnN0YW5jZSwgQ29weWFibGVNb3ZhYmxlSW5zdGFuY2UmLCBFbXB0eTwwPj4KKyAgICAgIHgx
KHN0ZDo6bW92ZShpMSksIGkyLCBlbXB0eSk7CisgIEVYUEVDVF9FUSh4MS5nZXQ8MD4oKS52YWx1
ZSgpLCAxKTsKKyAgRVhQRUNUX0VRKHgxLmdldDwxPigpLnZhbHVlKCksIDIpOworICBFWFBFQ1Rf
RVEodHJhY2tlci5jb3BpZXMoKSwgMCk7CisgIEVYUEVDVF9FUSh0cmFja2VyLm1vdmVzKCksIDEp
OworfQorCitzdHJ1Y3QgSW5jb21wbGV0ZVR5cGU7CitDb21wcmVzc2VkVHVwbGU8Q29weWFibGVN
b3ZhYmxlSW5zdGFuY2UsIEluY29tcGxldGVUeXBlJiwgRW1wdHk8MD4+CitNYWtlV2l0aEluY29t
cGxldGUoQ29weWFibGVNb3ZhYmxlSW5zdGFuY2UgaTEsCisgICAgICAgICAgICAgICAgICAgSW5j
b21wbGV0ZVR5cGUmIHQsICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAgICAgICBFbXB0eTwwPiBl
bXB0eSkgeworICByZXR1cm4gQ29tcHJlc3NlZFR1cGxlPENvcHlhYmxlTW92YWJsZUluc3RhbmNl
LCBJbmNvbXBsZXRlVHlwZSYsIEVtcHR5PDA+PnsKKyAgICAgIHN0ZDo6bW92ZShpMSksIHQsIGVt
cHR5fTsKK30KKworc3RydWN0IEluY29tcGxldGVUeXBlIHt9OworVEVTVChDb21wcmVzc2VkVHVw
bGVUZXN0LCBPbmVNb3ZlT25SVmFsdWVDb25zdHJ1Y3Rpb25XaXRoSW5jb21wbGV0ZVR5cGUpIHsK
KyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIENvcHlhYmxlTW92YWJsZUluc3RhbmNlIGkx
KDEpOworICBFbXB0eTwwPiBlbXB0eTsKKyAgc3RydWN0IERlcml2ZWRUeXBlIDogSW5jb21wbGV0
ZVR5cGUge2ludCB2YWx1ZSA9IDA7fTsKKyAgRGVyaXZlZFR5cGUgZmQ7CisgIGZkLnZhbHVlID0g
NzsKKworICBDb21wcmVzc2VkVHVwbGU8Q29weWFibGVNb3ZhYmxlSW5zdGFuY2UsIEluY29tcGxl
dGVUeXBlJiwgRW1wdHk8MD4+IHgxID0KKyAgICAgIE1ha2VXaXRoSW5jb21wbGV0ZShzdGQ6Om1v
dmUoaTEpLCBmZCwgZW1wdHkpOworCisgIEVYUEVDVF9FUSh4MS5nZXQ8MD4oKS52YWx1ZSgpLCAx
KTsKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PERlcml2ZWRUeXBlJj4oeDEuZ2V0PDE+KCkpLnZh
bHVlLCA3KTsKKworICBFWFBFQ1RfRVEodHJhY2tlci5jb3BpZXMoKSwgMCk7CisgIEVYUEVDVF9F
USh0cmFja2VyLm1vdmVzKCksIDIpOworfQorCitURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsCisg
ICAgIE9uZU1vdmVPblJWYWx1ZUNvbnN0cnVjdGlvbk1peGVkVHlwZXNfQnJhY2VJbml0UG9pc29u
UGlsbEV4cGVjdGVkKSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyOworICBDb3B5YWJsZU1v
dmFibGVJbnN0YW5jZSBpMSgxKTsKKyAgQ29weWFibGVNb3ZhYmxlSW5zdGFuY2UgaTIoMik7Cisg
IENvbXByZXNzZWRUdXBsZTxDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSwgQ29weWFibGVNb3ZhYmxl
SW5zdGFuY2UmLCBFbXB0eTwwPj4KKyAgICAgIHgxKHN0ZDo6bW92ZShpMSksIGkyLCB7fSk7ICAv
LyBOT0xJTlQKKyAgRVhQRUNUX0VRKHgxLmdldDwwPigpLnZhbHVlKCksIDEpOworICBFWFBFQ1Rf
RVEoeDEuZ2V0PDE+KCkudmFsdWUoKSwgMik7CisgIEVYUEVDVF9FUSh0cmFja2VyLmluc3RhbmNl
cygpLCAzKTsKKyAgLy8gV2UgYXJlIGZvcmNlZCBpbnRvIHRoZSBgY29uc3QgVHMmLi4uYCBjb25z
dHJ1Y3RvciAoaW52b2tpbmcgY29waWVzKQorICAvLyBiZWNhdXNlIHdlIG5lZWQgaXQgdG8gZGVk
dWNlIHRoZSB0eXBlIG9mIGB7fWAuCisgIC8vIHN0ZDo6dHVwbGUgYWxzbyBoYXMgdGhpcyBiZWhh
dmlvci4KKyAgLy8gTm90ZSwgdGhpcyB0ZXN0IGlzIHByb29mIHRoYXQgdGhpcyBpcyBleHBlY3Rl
ZCBiZWhhdmlvciwgYnV0IGl0IGlzIG5vdAorICAvLyBfZGVzaXJlZF8gYmVoYXZpb3IuCisgIEVY
UEVDVF9FUSh0cmFja2VyLmNvcGllcygpLCAxKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMo
KSwgMCk7Cit9CisKK1RFU1QoQ29tcHJlc3NlZFR1cGxlVGVzdCwgT25lQ29weU9uTFZhbHVlQ29u
c3RydWN0aW9uKSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyOworICBDb3B5YWJsZU1vdmFi
bGVJbnN0YW5jZSBpMSgxKTsKKworICBDb21wcmVzc2VkVHVwbGU8Q29weWFibGVNb3ZhYmxlSW5z
dGFuY2U+IHgxKGkxKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDEpOworICBFWFBF
Q1RfRVEodHJhY2tlci5tb3ZlcygpLCAwKTsKKworICB0cmFja2VyLlJlc2V0Q29waWVzTW92ZXNT
d2FwcygpOworCisgIENvcHlhYmxlTW92YWJsZUluc3RhbmNlIGkyKDIpOworICBjb25zdCBDb3B5
YWJsZU1vdmFibGVJbnN0YW5jZSYgaTJfcmVmID0gaTI7CisgIENvbXByZXNzZWRUdXBsZTxDb3B5
YWJsZU1vdmFibGVJbnN0YW5jZT4geDIoaTJfcmVmKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29w
aWVzKCksIDEpOworICBFWFBFQ1RfRVEodHJhY2tlci5tb3ZlcygpLCAwKTsKK30KKworVEVTVChD
b21wcmVzc2VkVHVwbGVUZXN0LCBPbmVNb3ZlT25SVmFsdWVBY2Nlc3MpIHsKKyAgSW5zdGFuY2VU
cmFja2VyIHRyYWNrZXI7CisgIENvcHlhYmxlTW92YWJsZUluc3RhbmNlIGkxKDEpOworICBDb21w
cmVzc2VkVHVwbGU8Q29weWFibGVNb3ZhYmxlSW5zdGFuY2U+IHgoc3RkOjptb3ZlKGkxKSk7Cisg
IHRyYWNrZXIuUmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCk7CisKKyAgQ29weWFibGVNb3ZhYmxlSW5z
dGFuY2UgaTIgPSBzdGQ6Om1vdmUoeCkuZ2V0PDA+KCk7CisgIEVYUEVDVF9FUSh0cmFja2VyLmNv
cGllcygpLCAwKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMSk7Cit9CisKK1RFU1Qo
Q29tcHJlc3NlZFR1cGxlVGVzdCwgT25lQ29weU9uTFZhbHVlQWNjZXNzKSB7CisgIEluc3RhbmNl
VHJhY2tlciB0cmFja2VyOworCisgIENvbXByZXNzZWRUdXBsZTxDb3B5YWJsZU1vdmFibGVJbnN0
YW5jZT4geChDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSgwKSk7CisgIEVYUEVDVF9FUSh0cmFja2Vy
LmNvcGllcygpLCAwKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMSk7CisKKyAgQ29w
eWFibGVNb3ZhYmxlSW5zdGFuY2UgdCA9IHguZ2V0PDA+KCk7CisgIEVYUEVDVF9FUSh0cmFja2Vy
LmNvcGllcygpLCAxKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMSk7Cit9CisKK1RF
U1QoQ29tcHJlc3NlZFR1cGxlVGVzdCwgWmVyb0NvcHlPblJlZkFjY2VzcykgeworICBJbnN0YW5j
ZVRyYWNrZXIgdHJhY2tlcjsKKworICBDb21wcmVzc2VkVHVwbGU8Q29weWFibGVNb3ZhYmxlSW5z
dGFuY2U+IHgoQ29weWFibGVNb3ZhYmxlSW5zdGFuY2UoMCkpOworICBFWFBFQ1RfRVEodHJhY2tl
ci5jb3BpZXMoKSwgMCk7CisgIEVYUEVDVF9FUSh0cmFja2VyLm1vdmVzKCksIDEpOworCisgIENv
cHlhYmxlTW92YWJsZUluc3RhbmNlJiB0MSA9IHguZ2V0PDA+KCk7CisgIGNvbnN0IENvcHlhYmxl
TW92YWJsZUluc3RhbmNlJiB0MiA9IHguZ2V0PDA+KCk7CisgIEVYUEVDVF9FUSh0cmFja2VyLmNv
cGllcygpLCAwKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMSk7CisgIEVYUEVDVF9F
USh0MS52YWx1ZSgpLCAwKTsKKyAgRVhQRUNUX0VRKHQyLnZhbHVlKCksIDApOworfQorCiBURVNU
KENvbXByZXNzZWRUdXBsZVRlc3QsIEFjY2VzcykgewogICBzdHJ1Y3QgUyB7CiAgICAgc3RkOjpz
dHJpbmcgeDsKQEAgLTExMiw5ICsyNjQsMTQgQEAgVEVTVChDb21wcmVzc2VkVHVwbGVUZXN0LCBO
ZXN0ZWQpIHsKICAgRVhQRUNUX0VRKDQgKiBzaXplb2YoY2hhciksCiAgICAgICAgICAgICBzaXpl
b2YoQ29tcHJlc3NlZFR1cGxlPENvbXByZXNzZWRUdXBsZTxjaGFyLCBjaGFyPiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZFR1cGxlPGNoYXIsIGNoYXI+Pikp
OwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIChzdGQ6OmlzX2VtcHR5PENvbXByZXNzZWRUdXBsZTxD
b21wcmVzc2VkVHVwbGU8RW1wdHk8MD4+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvbXByZXNzZWRUdXBsZTxFbXB0eTwxPj4+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RS
VUUoKHN0ZDo6aXNfZW1wdHk8Q29tcHJlc3NlZFR1cGxlPEVtcHR5PDA+LCBFbXB0eTwxPj4+Ojp2
YWx1ZSkpOworCisgIC8vIE1ha2Ugc3VyZSBldmVyeXRoaW5nIHN0aWxsIHdvcmtzIHdoZW4gdGhp
bmdzIGFyZSBuZXN0ZWQuCisgIHN0cnVjdCBDVF9FbXB0eSA6IENvbXByZXNzZWRUdXBsZTxFbXB0
eTwwPj4ge307CisgIENvbXByZXNzZWRUdXBsZTxFbXB0eTwwPiwgQ1RfRW1wdHk+IG5lc3RlZF9l
bXB0eTsKKyAgYXV0byBjb250YWluZWQgPSBuZXN0ZWRfZW1wdHkuZ2V0PDA+KCk7CisgIGF1dG8g
bmVzdGVkID0gbmVzdGVkX2VtcHR5LmdldDwxPigpLmdldDwwPigpOworICBFWFBFQ1RfVFJVRSgo
c3RkOjppc19zYW1lPGRlY2x0eXBlKGNvbnRhaW5lZCksIGRlY2x0eXBlKG5lc3RlZCk+Ojp2YWx1
ZSkpOwogfQogCiBURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIFJlZmVyZW5jZSkgewpAQCAtMTQw
LDE1ICsyOTcsMTAzIEBAIFRFU1QoQ29tcHJlc3NlZFR1cGxlVGVzdCwgTm9FbGVtZW50cykgewog
ICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2VtcHR5PENvbXByZXNzZWRUdXBsZTw+Pjo6dmFsdWUpOwog
fQogCitURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIE1vdmVPbmx5RWxlbWVudHMpIHsKKyAgQ29t
cHJlc3NlZFR1cGxlPHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmluZz4+IHN0cl90dXAoCisgICAg
ICBhYnNsOjptYWtlX3VuaXF1ZTxzdGQ6OnN0cmluZz4oInN0ciIpKTsKKworICBDb21wcmVzc2Vk
VHVwbGU8Q29tcHJlc3NlZFR1cGxlPHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmluZz4+LAorICAg
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGludD4+CisgIHgoc3RkOjptb3ZlKHN0cl90
dXApLCBhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDUpKTsKKworICBFWFBFQ1RfRVEoKnguZ2V0PDA+
KCkuZ2V0PDA+KCksICJzdHIiKTsKKyAgRVhQRUNUX0VRKCp4LmdldDwxPigpLCA1KTsKKworICBz
dGQ6OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+IHgwID0gc3RkOjptb3ZlKHguZ2V0PDA+KCkpLmdl
dDwwPigpOworICBzdGQ6OnVuaXF1ZV9wdHI8aW50PiB4MSA9IHN0ZDo6bW92ZSh4KS5nZXQ8MT4o
KTsKKworICBFWFBFQ1RfRVEoKngwLCAic3RyIik7CisgIEVYUEVDVF9FUSgqeDEsIDUpOworfQor
CitURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIE1vdmVDb25zdHJ1Y3Rpb25Nb3ZlT25seUVsZW1l
bnRzKSB7CisgIENvbXByZXNzZWRUdXBsZTxzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+PiBi
YXNlKAorICAgICAgYWJzbDo6bWFrZV91bmlxdWU8c3RkOjpzdHJpbmc+KCJzdHIiKSk7CisgIEVY
UEVDVF9FUSgqYmFzZS5nZXQ8MD4oKSwgInN0ciIpOworCisgIENvbXByZXNzZWRUdXBsZTxzdGQ6
OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+PiBjb3B5KHN0ZDo6bW92ZShiYXNlKSk7CisgIEVYUEVD
VF9FUSgqY29weS5nZXQ8MD4oKSwgInN0ciIpOworfQorCitURVNUKENvbXByZXNzZWRUdXBsZVRl
c3QsIEFueUVsZW1lbnRzKSB7CisgIGFueSBhKHN0ZDo6c3RyaW5nKCJzdHIiKSk7CisgIENvbXBy
ZXNzZWRUdXBsZTxhbnksIGFueSY+IHgoYW55KDUpLCBhKTsKKyAgRVhQRUNUX0VRKGFic2w6OmFu
eV9jYXN0PGludD4oeC5nZXQ8MD4oKSksIDUpOworICBFWFBFQ1RfRVEoYWJzbDo6YW55X2Nhc3Q8
c3RkOjpzdHJpbmc+KHguZ2V0PDE+KCkpLCAic3RyIik7CisKKyAgYSA9IDAuNWY7CisgIEVYUEVD
VF9FUShhYnNsOjphbnlfY2FzdDxmbG9hdD4oeC5nZXQ8MT4oKSksIDAuNSk7CisKKyAgLy8gRW5z
dXJlIGNvcHkgY29uc3RydWN0aW9uIHdvcmsgaW4gdGhlIGZhY2Ugb2YgYSB0eXBlIHdpdGggYSB1
bml2ZXJzYWwKKyAgLy8gaW1wbGljaXQgY29uc3RydWN0b3I7CisgIENvbXByZXNzZWRUdXBsZTxh
YnNsOjphbnk+IGN7fSwgZChjKTsgIC8vIE5PTElOVAorfQorCiBURVNUKENvbXByZXNzZWRUdXBs
ZVRlc3QsIENvbnN0ZXhwcikgewotICBjb25zdGV4cHIgQ29tcHJlc3NlZFR1cGxlPGludCwgZG91
YmxlLCBDb21wcmVzc2VkVHVwbGU8aW50Pj4geCgKLSAgICAgIDcsIDEuMjUsIENvbXByZXNzZWRU
dXBsZTxpbnQ+KDUpKTsKKyAgc3RydWN0IE5vblRyaXZpYWxTdHJ1Y3QgeworICAgIGNvbnN0ZXhw
ciBOb25Ucml2aWFsU3RydWN0KCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBpbnQgdmFsdWUo
KSBjb25zdCB7IHJldHVybiB2OyB9CisgICAgaW50IHYgPSA1OworICB9OworICBzdHJ1Y3QgVHJp
dmlhbFN0cnVjdCB7CisgICAgVHJpdmlhbFN0cnVjdCgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4
cHIgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdjsgfQorICAgIGludCB2OworICB9OworICBj
b25zdGV4cHIgQ29tcHJlc3NlZFR1cGxlPGludCwgZG91YmxlLCBDb21wcmVzc2VkVHVwbGU8aW50
PiwgRW1wdHk8MD4+IHgoCisgICAgICA3LCAxLjI1LCBDb21wcmVzc2VkVHVwbGU8aW50Pig1KSwg
e30pOwogICBjb25zdGV4cHIgaW50IHgwID0geC5nZXQ8MD4oKTsKICAgY29uc3RleHByIGRvdWJs
ZSB4MSA9IHguZ2V0PDE+KCk7CiAgIGNvbnN0ZXhwciBpbnQgeDIgPSB4LmdldDwyPigpLmdldDww
PigpOworICBjb25zdGV4cHIgQ2FsbFR5cGUgeDMgPSB4LmdldDwzPigpLnZhbHVlKCk7CisKICAg
RVhQRUNUX0VRKHgwLCA3KTsKICAgRVhQRUNUX0VRKHgxLCAxLjI1KTsKICAgRVhQRUNUX0VRKHgy
LCA1KTsKKyAgRVhQRUNUX0VRKHgzLCBDYWxsVHlwZTo6a0NvbnN0UmVmKTsKKworI2lmICFkZWZp
bmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fY2xhbmdfXykgfHwgX19HTlVDX18gPiA0CisgIGNv
bnN0ZXhwciBDb21wcmVzc2VkVHVwbGU8RW1wdHk8MD4sIFRyaXZpYWxTdHJ1Y3QsIGludD4gdHJp
dmlhbCA9IHt9OworICBjb25zdGV4cHIgQ2FsbFR5cGUgdHJpdmlhbDAgPSB0cml2aWFsLmdldDww
PigpLnZhbHVlKCk7CisgIGNvbnN0ZXhwciBpbnQgdHJpdmlhbDEgPSB0cml2aWFsLmdldDwxPigp
LnZhbHVlKCk7CisgIGNvbnN0ZXhwciBpbnQgdHJpdmlhbDIgPSB0cml2aWFsLmdldDwyPigpOwor
CisgIEVYUEVDVF9FUSh0cml2aWFsMCwgQ2FsbFR5cGU6OmtDb25zdFJlZik7CisgIEVYUEVDVF9F
USh0cml2aWFsMSwgMCk7CisgIEVYUEVDVF9FUSh0cml2aWFsMiwgMCk7CisjZW5kaWYKKworICBj
b25zdGV4cHIgQ29tcHJlc3NlZFR1cGxlPEVtcHR5PDA+LCBOb25Ucml2aWFsU3RydWN0LCBhYnNs
OjpvcHRpb25hbDxpbnQ+PgorICAgICAgbm9uX3RyaXZpYWwgPSB7fTsKKyAgY29uc3RleHByIENh
bGxUeXBlIG5vbl90cml2aWFsMCA9IG5vbl90cml2aWFsLmdldDwwPigpLnZhbHVlKCk7CisgIGNv
bnN0ZXhwciBpbnQgbm9uX3RyaXZpYWwxID0gbm9uX3RyaXZpYWwuZ2V0PDE+KCkudmFsdWUoKTsK
KyAgY29uc3RleHByIGFic2w6Om9wdGlvbmFsPGludD4gbm9uX3RyaXZpYWwyID0gbm9uX3RyaXZp
YWwuZ2V0PDI+KCk7CisKKyAgRVhQRUNUX0VRKG5vbl90cml2aWFsMCwgQ2FsbFR5cGU6OmtDb25z
dFJlZik7CisgIEVYUEVDVF9FUShub25fdHJpdmlhbDEsIDUpOworICBFWFBFQ1RfRVEobm9uX3Ry
aXZpYWwyLCBhYnNsOjpudWxsb3B0KTsKKworICBzdGF0aWMgY29uc3RleHByIGNoYXIgZGF0YVtd
ID0gIkRFRiI7CisgIGNvbnN0ZXhwciBDb21wcmVzc2VkVHVwbGU8Y29uc3QgY2hhcio+IHooZGF0
YSk7CisgIGNvbnN0ZXhwciBjb25zdCBjaGFyKiB6MSA9IHouZ2V0PDA+KCk7CisgIEVYUEVDVF9F
UShzdGQ6OnN0cmluZyh6MSksIHN0ZDo6c3RyaW5nKGRhdGEpKTsKKworI2lmIGRlZmluZWQoX19j
bGFuZ19fKQorICAvLyBBbiBhcHBhcmVudCBidWcgaW4gZWFybGllciB2ZXJzaW9ucyBvZiBnY2Mg
Y2xhaW1zIHRoZXNlIGFyZSBhbWJpZ3VvdXMuCisgIGNvbnN0ZXhwciBpbnQgeDJtID0gYWJzbDo6
bW92ZSh4LmdldDwyPigpKS5nZXQ8MD4oKTsKKyAgY29uc3RleHByIENhbGxUeXBlIHgzbSA9IGFi
c2w6Om1vdmUoeCkuZ2V0PDM+KCkudmFsdWUoKTsKKyAgRVhQRUNUX0VRKHgybSwgNSk7CisgIEVY
UEVDVF9FUSh4M20sIENhbGxUeXBlOjprQ29uc3RNb3ZlKTsKKyNlbmRpZgogfQogCiAjaWYgZGVm
aW5lZChfX2NsYW5nX18pIHx8IGRlZmluZWQoX19HTlVDX18pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaAppbmRleCA1NmM1ZDJkZjY3My4uZTViYjk3NzM1NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaApAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjg2LDEzICsyODYsNDggQEAg
c3RydWN0IElzTGF5b3V0Q29tcGF0aWJsZSB7CiAKIH0gIC8vIG5hbWVzcGFjZSBtZW1vcnlfaW50
ZXJuYWwKIAotLy8gSWYga011dGFibGVLZXlzIGlzIGZhbHNlLCBvbmx5IHRoZSB2YWx1ZSBtZW1i
ZXIgaXMgYWNjZXNzZWQuCisvLyBUaGUgaW50ZXJuYWwgc3RvcmFnZSB0eXBlIGZvciBrZXktdmFs
dWUgY29udGFpbmVycyBsaWtlIGZsYXRfaGFzaF9tYXAuCiAvLwotLy8gSWYga011dGFibGVLZXlz
IGlzIHRydWUsIGtleSBpcyBhY2Nlc3NlZCB0aHJvdWdoIGFsbCBzbG90cyB3aGlsZSB2YWx1ZSBh
bmQKLS8vIG11dGFibGVfdmFsdWUgYXJlIGFjY2Vzc2VkIG9ubHkgdmlhIElOSVRJQUxJWkVEIHNs
b3RzLiBTbG90cyBhcmUgY3JlYXRlZCBhbmQKLS8vIGRlc3Ryb3llZCB2aWEgbXV0YWJsZV92YWx1
ZSBzbyB0aGF0IHRoZSBrZXkgY2FuIGJlIG1vdmVkIGxhdGVyLgorLy8gSXQgaXMgY29udmVuaWVu
dCBmb3IgdGhlIHZhbHVlX3R5cGUgb2YgYSBmbGF0X2hhc2hfbWFwPEssIFY+IHRvIGJlCisvLyBw
YWlyPGNvbnN0IEssIFY+OyB0aGUgImNvbnN0IEsiIHByZXZlbnRzIGFjY2lkZW50YWwgbW9kaWZp
Y2F0aW9uIG9mIHRoZSBrZXkKKy8vIHdoZW4gZGVhbGluZyB3aXRoIHRoZSByZWZlcmVuY2UgcmV0
dXJuZWQgZnJvbSBmaW5kKCkgYW5kIHNpbWlsYXIgbWV0aG9kcy4KKy8vIEhvd2V2ZXIsIHRoaXMg
Y3JlYXRlcyBvdGhlciBwcm9ibGVtczsgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGVtcGxhY2UoSywg
VikKKy8vIGVmZmljaWVudGx5IHdpdGggbW92ZSBvcGVyYXRpb25zLCBhbmQgc2ltaWxhcmx5IGJl
IGFibGUgdG8gbW92ZSBhCisvLyBwYWlyPEssIFY+IGluIGluc2VydCgpLgorLy8KKy8vIFRoZSBz
b2x1dGlvbiBpcyB0aGlzIHVuaW9uLCB3aGljaCBhbGlhc2VzIHRoZSBjb25zdCBhbmQgbm9uLWNv
bnN0IHZlcnNpb25zCisvLyBvZiB0aGUgcGFpci4gVGhpcyBhbHNvIGFsbG93cyBmbGF0X2hhc2hf
bWFwPGNvbnN0IEssIFY+IHRvIHdvcmssIGV2ZW4gdGhvdWdoCisvLyB0aGF0IGhhcyB0aGUgc2Ft
ZSBlZmZpY2llbmN5IGlzc3VlcyB3aXRoIG1vdmUgaW4gZW1wbGFjZSgpIGFuZCBpbnNlcnQoKSAt
CisvLyBidXQgcGVvcGxlIGRvIGl0IGFueXdheS4KKy8vCisvLyBJZiBrTXV0YWJsZUtleXMgaXMg
ZmFsc2UsIG9ubHkgdGhlIHZhbHVlIG1lbWJlciBjYW4gYmUgYWNjZXNzZWQuCisvLworLy8gSWYg
a011dGFibGVLZXlzIGlzIHRydWUsIGtleSBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCBhbGwgc2xv
dHMgd2hpbGUgdmFsdWUKKy8vIGFuZCBtdXRhYmxlX3ZhbHVlIG11c3QgYmUgYWNjZXNzZWQgb25s
eSB2aWEgSU5JVElBTElaRUQgc2xvdHMuIFNsb3RzIGFyZQorLy8gY3JlYXRlZCBhbmQgZGVzdHJv
eWVkIHZpYSBtdXRhYmxlX3ZhbHVlIHNvIHRoYXQgdGhlIGtleSBjYW4gYmUgbW92ZWQgbGF0ZXIu
CisvLworLy8gQWNjZXNzaW5nIG9uZSBvZiB0aGUgdW5pb24gZmllbGRzIHdoaWxlIHRoZSBvdGhl
ciBpcyBhY3RpdmUgaXMgc2FmZSBhcworLy8gbG9uZyBhcyB0aGV5IGFyZSBsYXlvdXQtY29tcGF0
aWJsZSwgd2hpY2ggaXMgZ3VhcmFudGVlZCBieSB0aGUgZGVmaW5pdGlvbiBvZgorLy8ga011dGFi
bGVLZXlzLiBGb3IgQysrMTEsIHRoZSByZWxldmFudCBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBp
cworLy8gaHR0cHM6Ly90aW1zb25nLWNwcC5naXRodWIuaW8vY3Bwd3AvbjMzMzcvY2xhc3MubWVt
IzE5ICg5LjIuMTkpCiB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4KLXVuaW9uIHNsb3RfdHlw
ZSB7Cit1bmlvbiBtYXBfc2xvdF90eXBlIHsKKyAgbWFwX3Nsb3RfdHlwZSgpIHt9CisgIH5tYXBf
c2xvdF90eXBlKCkgPSBkZWxldGU7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSBzdGQ6OnBhaXI8Y29u
c3QgSywgVj47CisgIHVzaW5nIG11dGFibGVfdmFsdWVfdHlwZSA9IHN0ZDo6cGFpcjxLLCBWPjsK
KworICB2YWx1ZV90eXBlIHZhbHVlOworICBtdXRhYmxlX3ZhbHVlX3R5cGUgbXV0YWJsZV92YWx1
ZTsKKyAgSyBrZXk7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4KK3N0cnVjdCBt
YXBfc2xvdF9wb2xpY3kgeworICB1c2luZyBzbG90X3R5cGUgPSBtYXBfc2xvdF90eXBlPEssIFY+
OworICB1c2luZyB2YWx1ZV90eXBlID0gc3RkOjpwYWlyPGNvbnN0IEssIFY+OworICB1c2luZyBt
dXRhYmxlX3ZhbHVlX3R5cGUgPSBzdGQ6OnBhaXI8SywgVj47CisKICBwcml2YXRlOgogICBzdGF0
aWMgdm9pZCBlbXBsYWNlKHNsb3RfdHlwZSogc2xvdCkgewogICAgIC8vIFRoZSBjb25zdHJ1Y3Rp
b24gb2YgdW5pb24gZG9lc24ndCBkbyBhbnl0aGluZyBhdCBydW50aW1lIGJ1dCBpdCBhbGxvd3Mg
dXMKQEAgLTMwMiwxOSArMzM3LDE3IEBAIHVuaW9uIHNsb3RfdHlwZSB7CiAgIC8vIElmIHBhaXI8
Y29uc3QgSywgVj4gYW5kIHBhaXI8SywgVj4gYXJlIGxheW91dC1jb21wYXRpYmxlLCB3ZSBjYW4g
YWNjZXB0IG9uZQogICAvLyBvciB0aGUgb3RoZXIgdmlhIHNsb3RfdHlwZS4gV2UgYXJlIGFsc28g
ZnJlZSB0byBhY2Nlc3MgdGhlIGtleSB2aWEKICAgLy8gc2xvdF90eXBlOjprZXkgaW4gdGhpcyBj
YXNlLgotICB1c2luZyBrTXV0YWJsZUtleXMgPQotICAgICAgc3RkOjppbnRlZ3JhbF9jb25zdGFu
dDxib29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfaW50ZXJuYWw6Oklz
TGF5b3V0Q29tcGF0aWJsZTxLLCBWPjo6dmFsdWU+OworICB1c2luZyBrTXV0YWJsZUtleXMgPSBt
ZW1vcnlfaW50ZXJuYWw6OklzTGF5b3V0Q29tcGF0aWJsZTxLLCBWPjsKIAogIHB1YmxpYzoKLSAg
c2xvdF90eXBlKCkge30KLSAgfnNsb3RfdHlwZSgpID0gZGVsZXRlOwotICB1c2luZyB2YWx1ZV90
eXBlID0gc3RkOjpwYWlyPGNvbnN0IEssIFY+OwotICB1c2luZyBtdXRhYmxlX3ZhbHVlX3R5cGUg
PSBzdGQ6OnBhaXI8SywgVj47CisgIHN0YXRpYyB2YWx1ZV90eXBlJiBlbGVtZW50KHNsb3RfdHlw
ZSogc2xvdCkgeyByZXR1cm4gc2xvdC0+dmFsdWU7IH0KKyAgc3RhdGljIGNvbnN0IHZhbHVlX3R5
cGUmIGVsZW1lbnQoY29uc3Qgc2xvdF90eXBlKiBzbG90KSB7CisgICAgcmV0dXJuIHNsb3QtPnZh
bHVlOworICB9CiAKLSAgdmFsdWVfdHlwZSB2YWx1ZTsKLSAgbXV0YWJsZV92YWx1ZV90eXBlIG11
dGFibGVfdmFsdWU7Ci0gIEsga2V5OworICBzdGF0aWMgY29uc3QgSyYga2V5KGNvbnN0IHNsb3Rf
dHlwZSogc2xvdCkgeworICAgIHJldHVybiBrTXV0YWJsZUtleXM6OnZhbHVlID8gc2xvdC0+a2V5
IDogc2xvdC0+dmFsdWUuZmlyc3Q7CisgIH0KIAogICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9y
LCBjbGFzcy4uLiBBcmdzPgogICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2NhdG9yKiBhbGxv
Yywgc2xvdF90eXBlKiBzbG90LCBBcmdzJiYuLi4gYXJncykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnlfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5X3Rlc3QuY2MKaW5kZXggZjFjNDA1ODI5OGMu
LmQ2YjA0OTVmMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFp
bmVyX21lbW9yeV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWlu
ZXJfbWVtb3J5X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb3VudGluZ19hbGxvY2F0
b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb3VudGluZ19hbGxvY2F0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGU3MTdiZWY2NzgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY291bnRpbmdfYWxsb2NhdG9yLmgK
QEAgLTAsMCArMSw3OSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQ09VTlRJTkdfQUxMT0NBVE9SX0hf
CisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0NPVU5USU5HX0FMTE9DQVRPUl9IXwor
CisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPG1lbW9y
eT4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisK
Ky8vIFRoaXMgaXMgYSBzdGF0ZWZ1bCBhbGxvY2F0b3IsIGJ1dCB0aGUgc3RhdGUgbGl2ZXMgb3V0
c2lkZSBvZiB0aGUKKy8vIGFsbG9jYXRvciAoaW4gd2hhdGV2ZXIgdGVzdCBpcyB1c2luZyB0aGUg
YWxsb2NhdG9yKS4gVGhpcyBpcyBvZGQKKy8vIGJ1dCBoZWxwcyBpbiB0ZXN0cyB3aGVyZSB0aGUg
YWxsb2NhdG9yIGlzIHByb3BhZ2F0ZWQgaW50byBuZXN0ZWQKKy8vIGNvbnRhaW5lcnMgLSB0aGF0
IGNoYWluIG9mIGFsbG9jYXRvcnMgdXNlcyB0aGUgc2FtZSBzdGF0ZSBhbmQgaXMKKy8vIHRodXMg
ZWFzaWVyIHRvIHF1ZXJ5IGZvciBhZ2dyZWdhdGUgYWxsb2NhdGlvbiBpbmZvcm1hdGlvbi4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ291bnRpbmdBbGxvY2F0b3IgOiBwdWJsaWMgc3Rk
OjphbGxvY2F0b3I8VD4geworIHB1YmxpYzoKKyAgdXNpbmcgQWxsb2MgPSBzdGQ6OmFsbG9jYXRv
cjxUPjsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIEFsbG9jOjpwb2ludGVyOworICB1c2lu
ZyBzaXplX3R5cGUgPSB0eXBlbmFtZSBBbGxvYzo6c2l6ZV90eXBlOworCisgIENvdW50aW5nQWxs
b2NhdG9yKCkgOiBieXRlc191c2VkXyhudWxscHRyKSB7fQorICBleHBsaWNpdCBDb3VudGluZ0Fs
bG9jYXRvcihpbnQ2NF90KiBiKSA6IGJ5dGVzX3VzZWRfKGIpIHt9CisKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+CisgIENvdW50aW5nQWxsb2NhdG9yKGNvbnN0IENvdW50aW5nQWxsb2NhdG9yPFU+
JiB4KQorICAgICAgOiBBbGxvYyh4KSwgYnl0ZXNfdXNlZF8oeC5ieXRlc191c2VkXykge30KKwor
ICBwb2ludGVyIGFsbG9jYXRlKHNpemVfdHlwZSBuLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6
YWxsb2NhdG9yPHZvaWQ+Ojpjb25zdF9wb2ludGVyIGhpbnQgPSBudWxscHRyKSB7CisgICAgYXNz
ZXJ0KGJ5dGVzX3VzZWRfICE9IG51bGxwdHIpOworICAgICpieXRlc191c2VkXyArPSBuICogc2l6
ZW9mKFQpOworICAgIHJldHVybiBBbGxvYzo6YWxsb2NhdGUobiwgaGludCk7CisgIH0KKworICB2
b2lkIGRlYWxsb2NhdGUocG9pbnRlciBwLCBzaXplX3R5cGUgbikgeworICAgIEFsbG9jOjpkZWFs
bG9jYXRlKHAsIG4pOworICAgIGFzc2VydChieXRlc191c2VkXyAhPSBudWxscHRyKTsKKyAgICAq
Ynl0ZXNfdXNlZF8gLT0gbiAqIHNpemVvZihUKTsKKyAgfQorCisgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+CisgIGNsYXNzIHJlYmluZCB7CisgICBwdWJsaWM6CisgICAgdXNpbmcgb3RoZXIgPSBDb3Vu
dGluZ0FsbG9jYXRvcjxVPjsKKyAgfTsKKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENvdW50aW5nQWxsb2NhdG9yJiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
dW50aW5nQWxsb2NhdG9yJiBiKSB7CisgICAgcmV0dXJuIGEuYnl0ZXNfdXNlZF8gPT0gYi5ieXRl
c191c2VkXzsKKyAgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgQ291bnRpbmdB
bGxvY2F0b3ImIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ291bnRpbmdBbGxv
Y2F0b3ImIGIpIHsKKyAgICByZXR1cm4gIShhID09IGIpOworICB9CisKKyAgaW50NjRfdCogYnl0
ZXNfdXNlZF87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAv
LyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0NP
VU5USU5HX0FMTE9DQVRPUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
X2Z1bmN0aW9uX2RlZmF1bHRzLmgKaW5kZXggMWYwZDc5NGQ5NjYuLmNiOGYwM2M4N2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM5LDggKzM5LDgg
QEAKIC8vIGVxdWFsIGZ1bmN0aW9ucyBhcmUgc3RpbGwgYm91bmQgdG8gVC4gVGhpcyBpcyBpbXBv
cnRhbnQgYmVjYXVzZSBzb21lIHR5cGUgVQogLy8gY2FuIGJlIGhhc2hlZCBieS90ZXN0ZWQgZm9y
IGVxdWFsaXR5IGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiBULiBBIG5vdGFibGUKIC8vIGV4YW1w
bGUgaXMgYGNvbnN0IGNoYXIqYC4gYGNvbnN0IGNoYXIqYCBpcyB0cmVhdGVkIGFzIGEgYy1zdHls
ZSBzdHJpbmcgd2hlbgotLy8gdGhlIGhhc2ggZnVuY3Rpb24gaXMgaGFzaDxzdHJpbmc+IGJ1dCBh
cyBhIHBvaW50ZXIgd2hlbiB0aGUgaGFzaCBmdW5jdGlvbiBpcwotLy8gaGFzaDx2b2lkKj4uCisv
LyB0aGUgaGFzaCBmdW5jdGlvbiBpcyBoYXNoPHN0ZDo6c3RyaW5nPiBidXQgYXMgYSBwb2ludGVy
IHdoZW4gdGhlIGhhc2gKKy8vIGZ1bmN0aW9uIGlzIGhhc2g8dm9pZCo+LgogLy8KICNpZm5kZWYg
QUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSF9GVU5DVElPTl9ERUZBVUxUU19IXwogI2RlZmlu
ZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIX0ZVTkNUSU9OX0RFRkFVTFRTX0hfCkBAIC04
Myw2ICs4Myw3IEBAIHN0cnVjdCBTdHJpbmdIYXNoRXEgewogICAgIH0KICAgfTsKIH07CisKIHRl
bXBsYXRlIDw+CiBzdHJ1Y3QgSGFzaEVxPHN0ZDo6c3RyaW5nPiA6IFN0cmluZ0hhc2hFcSB7fTsK
IHRlbXBsYXRlIDw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9m
dW5jdGlvbl9kZWZhdWx0c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hf
ZnVuY3Rpb25fZGVmYXVsdHNfdGVzdC5jYwppbmRleCA0NjRiYWFlMDJjZC4uODI3MDhkYmU5NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1
bHRzX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25f
ZGVmYXVsdHNfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtNzcsMTQgKzc3LDE0IEBAIHN0cnVjdCBFcVN0cmluZyA6IDo6dGVzdGluZzo6VGVzdCB7
CiAgIGhhc2hfZGVmYXVsdF9lcTxUPiBrZXlfZXE7CiB9OwogCi1UWVBFRF9URVNUX0NBU0UoRXFT
dHJpbmcsIFN0cmluZ1R5cGVzKTsKK1RZUEVEX1RFU1RfU1VJVEUoRXFTdHJpbmcsIFN0cmluZ1R5
cGVzKTsKIAogdGVtcGxhdGUgPGNsYXNzIFQ+CiBzdHJ1Y3QgSGFzaFN0cmluZyA6IDo6dGVzdGlu
Zzo6VGVzdCB7CiAgIGhhc2hfZGVmYXVsdF9oYXNoPFQ+IGhhc2hlcjsKIH07CiAKLVRZUEVEX1RF
U1RfQ0FTRShIYXNoU3RyaW5nLCBTdHJpbmdUeXBlcyk7CitUWVBFRF9URVNUX1NVSVRFKEhhc2hT
dHJpbmcsIFN0cmluZ1R5cGVzKTsKIAogVFlQRURfVEVTVChFcVN0cmluZywgV29ya3MpIHsKICAg
YXV0byBlcSA9IHRoaXMtPmtleV9lcTsKQEAgLTEyMSwxNCArMTIxLDE0IEBAIHN0cnVjdCBFcVBv
aW50ZXIgOiA6OnRlc3Rpbmc6OlRlc3QgewogICBoYXNoX2RlZmF1bHRfZXE8VD4ga2V5X2VxOwog
fTsKIAotVFlQRURfVEVTVF9DQVNFKEVxUG9pbnRlciwgUG9pbnRlclR5cGVzKTsKK1RZUEVEX1RF
U1RfU1VJVEUoRXFQb2ludGVyLCBQb2ludGVyVHlwZXMpOwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4K
IHN0cnVjdCBIYXNoUG9pbnRlciA6IDo6dGVzdGluZzo6VGVzdCB7CiAgIGhhc2hfZGVmYXVsdF9o
YXNoPFQ+IGhhc2hlcjsKIH07CiAKLVRZUEVEX1RFU1RfQ0FTRShIYXNoUG9pbnRlciwgUG9pbnRl
clR5cGVzKTsKK1RZUEVEX1RFU1RfU1VJVEUoSGFzaFBvaW50ZXIsIFBvaW50ZXJUeXBlcyk7CiAK
IFRZUEVEX1RFU1QoRXFQb2ludGVyLCBXb3JrcykgewogICBpbnQgZHVtbXk7CkBAIC0yMDIsMTUg
KzIwMiwxMSBAQCBUWVBFRF9URVNUKEhhc2hQb2ludGVyLCBXb3JrcykgewogICBFWFBFQ1RfTkUo
aGFzaCgmZHVtbXkpLCBoYXNoKGN1cHRyKSk7CiB9CiAKLS8vIENhcnRlc2lhbiBwcm9kdWN0IG9m
IChzdHJpbmcsIHN0ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldykKLS8vIHdpdGggKHN0cmlu
Zywgc3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3LCBjb25zdCBjaGFyKikuCisvLyBDYXJ0
ZXNpYW4gcHJvZHVjdCBvZiAoc3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3KQorLy8gd2l0
aCAoc3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3LCBjb25zdCBjaGFyKikuCiB1c2luZyBT
dHJpbmdUeXBlc0NhcnRlc2lhblByb2R1Y3QgPSBUeXBlczwKICAgICAvLyBjbGFuZy1mb3JtYXQg
b2ZmCiAKLSAgICBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiwKLSAgICBzdGQ6
OnBhaXI8c3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3PiwKLSAgICBzdGQ6OnBhaXI8c3Rk
OjpzdHJpbmcsIGNvbnN0IGNoYXIqPiwKLQogICAgIHN0ZDo6cGFpcjxhYnNsOjpzdHJpbmdfdmll
dywgc3RkOjpzdHJpbmc+LAogICAgIHN0ZDo6cGFpcjxhYnNsOjpzdHJpbmdfdmlldywgYWJzbDo6
c3RyaW5nX3ZpZXc+LAogICAgIHN0ZDo6cGFpcjxhYnNsOjpzdHJpbmdfdmlldywgY29uc3QgY2hh
cio+PjsKQEAgLTI0OCw3ICsyNDQsNyBAQCBUWVBFRF9URVNUX1AoU3RyaW5nTGlrZVRlc3QsIEhh
c2hFcSkgewogICBFWFBFQ1RfTkUodGhpcy0+aGFzaCh0aGlzLT5hMSksIHRoaXMtPmhhc2godGhp
cy0+YjIpKTsKIH0KIAotVFlQRURfVEVTVF9DQVNFKFN0cmluZ0xpa2VUZXN0LCBTdHJpbmdUeXBl
c0NhcnRlc2lhblByb2R1Y3QpOworVFlQRURfVEVTVF9TVUlURShTdHJpbmdMaWtlVGVzdCwgU3Ry
aW5nVHlwZXNDYXJ0ZXNpYW5Qcm9kdWN0KTsKIAogfSAgLy8gbmFtZXNwYWNlCiB9ICAvLyBuYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjCmluZGV4IDBkNmE5ZGYxNmY4Li4zN2EyM2Q2MDkx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rl
c3RpbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rl
c3RpbmcuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM5
LDkgKzM5LDkgQEAgY2xhc3MgUmFuZG9tRGV2aWNlU2VlZFNlcSB7CiAKIH0gIC8vIG5hbWVzcGFj
ZQogCi1zdGQ6Om10MTk5MzdfNjQqIEdldFRocmVhZExvY2FsUm5nKCkgeworc3RkOjptdDE5OTM3
XzY0KiBHZXRTaGFyZWRSbmcoKSB7CiAgIFJhbmRvbURldmljZVNlZWRTZXEgc2VlZF9zZXE7Ci0g
IHRocmVhZF9sb2NhbCBhdXRvKiBybmcgPSBuZXcgc3RkOjptdDE5OTM3XzY0KHNlZWRfc2VxKTsK
KyAgc3RhdGljIGF1dG8qIHJuZyA9IG5ldyBzdGQ6Om10MTk5MzdfNjQoc2VlZF9zZXEpOwogICBy
ZXR1cm4gcm5nOwogfQogCkBAIC01MSw3ICs1MSw3IEBAIHN0ZDo6c3RyaW5nIEdlbmVyYXRvcjxz
dGQ6OnN0cmluZz46Om9wZXJhdG9yKCkoKSBjb25zdCB7CiAgIHN0ZDo6c3RyaW5nIHJlczsKICAg
cmVzLnJlc2l6ZSgzMik7CiAgIHN0ZDo6Z2VuZXJhdGUocmVzLmJlZ2luKCksIHJlcy5lbmQoKSwK
LSAgICAgICAgICAgICAgICBbJl0oKSB7IHJldHVybiBjaGFycygqR2V0VGhyZWFkTG9jYWxSbmco
KSk7IH0pOworICAgICAgICAgICAgICAgIFsmXSgpIHsgcmV0dXJuIGNoYXJzKCpHZXRTaGFyZWRS
bmcoKSk7IH0pOwogICByZXR1cm4gcmVzOwogfQogCkBAIC02Myw3ICs2Myw3IEBAIGFic2w6OnN0
cmluZ192aWV3IEdlbmVyYXRvcjxhYnNsOjpzdHJpbmdfdmlldz46Om9wZXJhdG9yKCkoKSBjb25z
dCB7CiAgIGF1dG8mIHJlcyA9IGFyZW5hLT5iYWNrKCk7CiAgIHJlcy5yZXNpemUoMzIpOwogICBz
dGQ6OmdlbmVyYXRlKHJlcy5iZWdpbigpLCByZXMuZW5kKCksCi0gICAgICAgICAgICAgICAgWyZd
KCkgeyByZXR1cm4gY2hhcnMoKkdldFRocmVhZExvY2FsUm5nKCkpOyB9KTsKKyAgICAgICAgICAg
ICAgICBbJl0oKSB7IHJldHVybiBjaGFycygqR2V0U2hhcmVkUm5nKCkpOyB9KTsKICAgcmV0dXJu
IHJlczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2Vu
ZXJhdG9yX3Rlc3RpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2dlbmVyYXRv
cl90ZXN0aW5nLmgKaW5kZXggNTBkNzcxMDI2YzcuLjI3ZmI4NGY1ZDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmgKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0
IElzTWFwPE1hcCwgYWJzbDo6dm9pZF90PHR5cGVuYW1lIE1hcDo6bWFwcGVkX3R5cGU+PiA6IHN0
ZDo6dHJ1ZV90eXBlIHt9OwogCiB9ICAvLyBuYW1lc3BhY2UgZ2VuZXJhdG9yX2ludGVybmFsCiAK
LXN0ZDo6bXQxOTkzN182NCogR2V0VGhyZWFkTG9jYWxSbmcoKTsKK3N0ZDo6bXQxOTkzN182NCog
R2V0U2hhcmVkUm5nKCk7CiAKIGVudW0gRW51bSB7CiAgIGtFbnVtRW1wdHksCkBAIC02Niw3ICs2
Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUPgogc3RydWN0IEdlbmVyYXRvcjxULCB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGU+IHsKICAgVCBv
cGVyYXRvcigpKCkgY29uc3QgewogICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFQ+
IGRpc3Q7Ci0gICAgcmV0dXJuIGRpc3QoKkdldFRocmVhZExvY2FsUm5nKCkpOworICAgIHJldHVy
biBkaXN0KCpHZXRTaGFyZWRSbmcoKSk7CiAgIH0KIH07CiAKQEAgLTc2LDcgKzc2LDcgQEAgc3Ry
dWN0IEdlbmVyYXRvcjxFbnVtPiB7CiAgICAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248
dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bT46OnR5cGU+CiAgICAgICAgIGRpc3Q7
CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgIGF1dG8gdmFyaWF0ZSA9IGRpc3QoKkdldFRocmVh
ZExvY2FsUm5nKCkpOworICAgICAgYXV0byB2YXJpYXRlID0gZGlzdCgqR2V0U2hhcmVkUm5nKCkp
OwogICAgICAgaWYgKHZhcmlhdGUgIT0ga0VudW1FbXB0eSAmJiB2YXJpYXRlICE9IGtFbnVtRGVs
ZXRlZCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudW0+KHZhcmlhdGUpOwogICAgIH0K
QEAgLTkwLDcgKzkwLDcgQEAgc3RydWN0IEdlbmVyYXRvcjxFbnVtQ2xhc3M+IHsKICAgICAgICAg
dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bUNsYXNzPjo6dHlwZT4KICAgICAgICAg
ZGlzdDsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgRW51bUNsYXNzIHZhcmlhdGUgPSBzdGF0
aWNfY2FzdDxFbnVtQ2xhc3M+KGRpc3QoKkdldFRocmVhZExvY2FsUm5nKCkpKTsKKyAgICAgIEVu
dW1DbGFzcyB2YXJpYXRlID0gc3RhdGljX2Nhc3Q8RW51bUNsYXNzPihkaXN0KCpHZXRTaGFyZWRS
bmcoKSkpOwogICAgICAgaWYgKHZhcmlhdGUgIT0gRW51bUNsYXNzOjprRW1wdHkgJiYgdmFyaWF0
ZSAhPSBFbnVtQ2xhc3M6OmtEZWxldGVkKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW51
bUNsYXNzPih2YXJpYXRlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hh
c2hfcG9saWN5X3Rlc3RpbmcuaAppbmRleCBmZmM3NmVhZDdhNi4uYzU3NDA3YTAyYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaApAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTM5LDcgKzEzOSw3IEBAIHN0
cnVjdCBBbGxvYyA6IHN0ZDo6YWxsb2NhdG9yPFQ+IHsKICAgZnJpZW5kIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBBbGxvYyYgYSwgY29uc3QgQWxsb2MmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQog
CiAgcHJpdmF0ZToKLSAgc2l6ZV90IGlkXyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCk7CisgIHNpemVfdCBpZF8gPSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgp
KCk7CiB9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgTWFwPgpAQCAtMTY5LDcgKzE2OSwxMSBAQCBhdXRv
IGtleXMoY29uc3QgU2V0JiBzKQogLy8gdGFrZSBhbGxvY2F0b3IgYXJndW1lbnRzLiBUaGlzIHRl
c3QgaXMgZGVmaW5lZCBhZC1ob2MgZm9yIHRoZSBwbGF0Zm9ybXMKIC8vIHdlIGNhcmUgYWJvdXQg
KG5vdGFibHkgQ3Jvc3N0b29sIDE3KSBiZWNhdXNlIGxpYnN0ZGN4eCdzIHVzZWxlc3MKIC8vIHZl
cnNpb25pbmcgc2NoZW1lIHByZWNsdWRlcyBhIG1vcmUgcHJpbmNpcGxlZCBzb2x1dGlvbi4KLSNp
ZiBkZWZpbmVkKF9fR0xJQkNYWF9fKSAmJiBfX0dMSUJDWFhfXyA8PSAyMDE0MDQyNQorLy8gRnJv
bSBHQ0MtNC45IENoYW5nZWxvZzogKHNyYzogaHR0cHM6Ly9nY2MuZ251Lm9yZy9nY2MtNC45L2No
YW5nZXMuaHRtbCkKKy8vICJ0aGUgdW5vcmRlcmVkIGFzc29jaWF0aXZlIGNvbnRhaW5lcnMgaW4g
PHVub3JkZXJlZF9tYXA+IGFuZCA8dW5vcmRlcmVkX3NldD4KKy8vIG1lZXQgdGhlIGFsbG9jYXRv
ci1hd2FyZSBjb250YWluZXIgcmVxdWlyZW1lbnRzOyIKKyNpZiAoZGVmaW5lZChfX0dMSUJDWFhf
XykgJiYgX19HTElCQ1hYX18gPD0gMjAxNDA0MjUgKSB8fCBcCisoIF9fR05VQ19fIDwgNCB8fCAo
X19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDkgKSkKICNkZWZpbmUgQUJTTF9VTk9S
REVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMgMAogI2Vsc2UKICNkZWZpbmUgQUJTTF9VTk9SREVS
RURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MKaW5kZXggYzIxNWM0MjM3YWUuLjBjOTVl
YjVlYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lf
dGVzdGluZ190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGlj
eV90ZXN0aW5nX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90cmFp
dHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaAppbmRl
eCAwMjllNDdlMTc1Yy4uZmQwMDdkZTdjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvaGFzaF9wb2xpY3lfdHJhaXRzLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKQEAgLTg0LDcgKzg0LDcgQEAgc3RydWN0IGhhc2hfcG9saWN5X3RyYWl0cyB7CiAg
IH0KIAogICAvLyBUcmFuc2ZlcnMgdGhlIGBvbGRfc2xvdGAgdG8gYG5ld19zbG90YC4gQW55IG1l
bW9yeSBhbGxvY2F0ZWQgYnkgdGhlCi0gIC8vIGFsbG9jYXRvciBpbnNpZGUgYG9sZF9zbG90YCB0
byBgbmV3X3Nsb3RgIGNhbiBiZSB0cmFuc2ZlcmVkLgorICAvLyBhbGxvY2F0b3IgaW5zaWRlIGBv
bGRfc2xvdGAgdG8gYG5ld19zbG90YCBjYW4gYmUgdHJhbnNmZXJyZWQuCiAgIC8vCiAgIC8vIE9Q
VElPTkFMOiBkZWZhdWx0cyB0bzoKICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9oYXNoX3BvbGljeV90cmFpdHNfdGVzdC5jYwppbmRleCA0MjNmMTU0OGU3Yy4uZTY0M2Qx
ODk5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90
cmFpdHNfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lf
dHJhaXRzX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWcuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWcuaAppbmRleCBjM2JkNjVj
OWM0ZS4uNzE5MzAwMDQ2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXNodGFibGVfZGVidWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxl
X2RlYnVnLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTYw
LDcgKzYwLDcgQEAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBHZXRIYXNodGFibGVEZWJ1Z051bVByb2Jl
c0hpc3RvZ3JhbShjb25zdCBDJiBjb250YWluZXIpIHsKICAgICBzaXplX3QgbnVtX3Byb2JlcyA9
IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVzKAogICAgICAgICBjb250YWluZXIsCiAgICAgICAg
IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaHRhYmxlX2RlYnVnX2ludGVybmFsOjpHZXRL
ZXk8Qz4oKml0LCAwKSk7Ci0gICAgdi5yZXNpemUoc3RkOjptYXgodi5zaXplKCksIG51bV9wcm9i
ZXMgKyAxKSk7CisgICAgdi5yZXNpemUoKHN0ZDo6bWF4KSh2LnNpemUoKSwgbnVtX3Byb2JlcyAr
IDEpKTsKICAgICB2W251bV9wcm9iZXNdKys7CiAgIH0KICAgcmV0dXJuIHY7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tzLmgKaW5kZXggOGYyMTk3
MjZiZWUuLjM3MWNlODFmNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaHRhYmxlX2RlYnVnX2hvb2tzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hh
c2h0YWJsZV9kZWJ1Z19ob29rcy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9z
YW1wbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDAzZGQ4MmU3ZmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1w
bGVyLmNjCkBAIC0wLDAgKzEsMzA4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpf
c2FtcGxlci5oIgorCisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5j
bHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxsaW1pdHM+CisK
KyNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImFic2wvY29udGFp
bmVyL2ludGVybmFsL2hhdmVfc3NlLmgiCisjaW5jbHVkZSAiYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0
cmFjZS5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wv
c3luY2hyb25pemF0aW9uL211dGV4LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBj
b250YWluZXJfaW50ZXJuYWwgeworY29uc3RleHByIGludCBIYXNodGFibGV6SW5mbzo6a01heFN0
YWNrRGVwdGg7CisKK25hbWVzcGFjZSB7CitBQlNMX0NPTlNUX0lOSVQgc3RkOjphdG9taWM8Ym9v
bD4gZ19oYXNodGFibGV6X2VuYWJsZWR7CisgICAgZmFsc2UKK307CitBQlNMX0NPTlNUX0lOSVQg
c3RkOjphdG9taWM8aW50MzJfdD4gZ19oYXNodGFibGV6X3NhbXBsZV9wYXJhbWV0ZXJ7MSA8PCAx
MH07CitBQlNMX0NPTlNUX0lOSVQgc3RkOjphdG9taWM8aW50MzJfdD4gZ19oYXNodGFibGV6X21h
eF9zYW1wbGVzezEgPDwgMjB9OworCisvLyBSZXR1cm5zIHRoZSBuZXh0IHBzZXVkby1yYW5kb20g
dmFsdWUuCisvLyBwUk5HIGlzOiBhWCtiIG1vZCBjIHdpdGggYSA9IDB4NURFRUNFNjZELCBiID0g
IDB4QiwgYyA9IDE8PDQ4CisvLyBUaGlzIGlzIHRoZSBscmFuZDY0IGdlbmVyYXRvci4KK3VpbnQ2
NF90IE5leHRSYW5kb20odWludDY0X3Qgcm5kKSB7CisgIGNvbnN0IHVpbnQ2NF90IHBybmdfbXVs
dCA9IHVpbnQ2NF90ezB4NURFRUNFNjZEfTsKKyAgY29uc3QgdWludDY0X3QgcHJuZ19hZGQgPSAw
eEI7CisgIGNvbnN0IHVpbnQ2NF90IHBybmdfbW9kX3Bvd2VyID0gNDg7CisgIGNvbnN0IHVpbnQ2
NF90IHBybmdfbW9kX21hc2sgPSB+KH51aW50NjRfdHswfSA8PCBwcm5nX21vZF9wb3dlcik7Cisg
IHJldHVybiAocHJuZ19tdWx0ICogcm5kICsgcHJuZ19hZGQpICYgcHJuZ19tb2RfbWFzazsKK30K
KworLy8gR2VuZXJhdGVzIGEgZ2VvbWV0cmljIHZhcmlhYmxlIHdpdGggdGhlIHNwZWNpZmllZCBt
ZWFuLgorLy8gVGhpcyBpcyBkb25lIGJ5IGdlbmVyYXRpbmcgYSByYW5kb20gbnVtYmVyIGJldHdl
ZW4gMCBhbmQgMSBhbmQgYXBwbHlpbmcKKy8vIHRoZSBpbnZlcnNlIGN1bXVsYXRpdmUgZGlzdHJp
YnV0aW9uIGZ1bmN0aW9uIGZvciBhbiBleHBvbmVudGlhbC4KKy8vIFNwZWNpZmljYWxseTogTGV0
IG0gYmUgdGhlIGludmVyc2Ugb2YgdGhlIHNhbXBsZSBwZXJpb2QsIHRoZW4KKy8vIHRoZSBwcm9i
YWJpbGl0eSBkaXN0cmlidXRpb24gZnVuY3Rpb24gaXMgbSpleHAoLW14KSBzbyB0aGUgQ0RGIGlz
CisvLyBwID0gMSAtIGV4cCgtbXgpLCBzbworLy8gcSA9IDEgLSBwID0gZXhwKC1teCkKKy8vIGxv
Z19lKHEpID0gLW14CisvLyAtbG9nX2UocSkvbSA9IHgKKy8vIGxvZ18yKHEpICogKC1sb2dfZSgy
KSAqIDEvbSkgPSB4CisvLyBJbiB0aGUgY29kZSwgcSBpcyBhY3R1YWxseSBpbiB0aGUgcmFuZ2Ug
MSB0byAyKioyNiwgaGVuY2UgdGhlIC0yNiBiZWxvdworLy8KK2ludDY0X3QgR2V0R2VvbWV0cmlj
VmFyaWFibGUoaW50NjRfdCBtZWFuKSB7CisjaWYgQUJTTF9IQVZFX1RIUkVBRF9MT0NBTAorICB0
aHJlYWRfbG9jYWwKKyNlbHNlICAgLy8gQUJTTF9IQVZFX1RIUkVBRF9MT0NBTAorICAvLyBTYW1w
bGVTbG93IGFuZCBoZW5jZSBHZXRHZW9tZXRyaWNWYXJpYWJsZSBpcyBndWFyZGVkIGJ5IGEgc2lu
Z2xlIG11dGV4IHdoZW4KKyAgLy8gdGhlcmUgYXJlIG5vdCB0aHJlYWQgbG9jYWxzLiAgVGh1cywg
YSBzaW5nbGUgZ2xvYmFsIHJuZyBpcyBhY2NlcHRhYmxlIGZvcgorICAvLyB0aGF0IGNhc2UuCisg
IHN0YXRpYworI2VuZGlmICAvLyBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMCisgICAgICB1aW50NjRf
dCBybmcgPSBbXSgpIHsKKyAgICAgICAgLy8gV2UgZG9uJ3QgZ2V0IHdlbGwgZGlzdHJpYnV0ZWQg
bnVtYmVycyBmcm9tIHRoaXMgc28gd2UgY2FsbAorICAgICAgICAvLyBOZXh0UmFuZG9tKCkgYSBi
dW5jaCB0byBtdXNoIHRoZSBiaXRzIGFyb3VuZC4gIFdlIHVzZSBhIGdsb2JhbF9yYW5kCisgICAg
ICAgIC8vIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgc2FtZSB0aHJlYWQgKGJ5IG1lbW9y
eSBhZGRyZXNzKSBnZXRzCisgICAgICAgIC8vIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCByZXBlYXRl
ZGx5LgorICAgICAgICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIHN0ZDo6YXRvbWljPHVpbnQzMl90
PiBnbG9iYWxfcmFuZCgwKTsKKyAgICAgICAgdWludDY0X3QgciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3Q+KCZybmcpICsKKyAgICAgICAgICAgICAgICAgICBnbG9iYWxfcmFuZC5mZXRjaF9h
ZGQoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgMjA7ICsraSkgeworICAgICAgICAgIHIgPSBOZXh0UmFuZG9tKHIpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiByOworICAgICAgfSgpOworCisgIHJuZyA9IE5leHRSYW5kb20ocm5n
KTsKKworICAvLyBUYWtlIHRoZSB0b3AgMjYgYml0cyBhcyB0aGUgcmFuZG9tIG51bWJlcgorICAv
LyAoVGhpcyBwbHVzIHRoZSAxPDw1OCBzYW1wbGluZyBib3VuZCBnaXZlIGEgbWF4IHBvc3NpYmxl
IHN0ZXAgb2YKKyAgLy8gNTE5NDI5NzE4Mzk3Mzc4MDQ4MCBieXRlcy4pCisgIGNvbnN0IHVpbnQ2
NF90IHBybmdfbW9kX3Bvd2VyID0gNDg7ICAvLyBOdW1iZXIgb2YgYml0cyBpbiBwcm5nCisgIC8v
IFRoZSB1aW50MzJfdCBjYXN0IGlzIHRvIHByZXZlbnQgYSAoaGFyZC10by1yZXByb2R1Y2UpIE5B
TgorICAvLyB1bmRlciBwaWlpIGRlYnVnIGZvciBzb21lIGJpbmFyaWVzLgorICBkb3VibGUgcSA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihybmcgPj4gKHBybmdfbW9kX3Bvd2VyIC0gMjYpKSArIDEu
MDsKKyAgLy8gUHV0IHRoZSBjb21wdXRlZCBwLXZhbHVlIHRocm91Z2ggdGhlIENERiBvZiBhIGdl
b21ldHJpYy4KKyAgZG91YmxlIGludGVydmFsID0gKGxvZzIocSkgLSAyNikgKiAoLXN0ZDo6bG9n
KDIuMCkgKiBtZWFuKTsKKworICAvLyBWZXJ5IGxhcmdlIHZhbHVlcyBvZiBpbnRlcnZhbCBvdmVy
ZmxvdyBpbnQ2NF90LiBJZiB3ZSBoYXBwZW4gdG8KKyAgLy8gaGl0IHN1Y2ggaW1wcm9iYWJsZSBj
b25kaXRpb24sIHdlIHNpbXBseSBjaGVhdCBhbmQgY2xhbXAgaW50ZXJ2YWwKKyAgLy8gdG8gbGFy
Z2VzdCBzdXBwb3J0ZWQgdmFsdWUuCisgIGlmIChpbnRlcnZhbCA+IHN0YXRpY19jYXN0PGRvdWJs
ZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkgLyAyKSkgeworICAgIHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSAvIDI7CisgIH0KKworICAvLyBT
bWFsbCB2YWx1ZXMgb2YgaW50ZXJ2YWwgYXJlIGVxdWl2YWxlbnQgdG8ganVzdCBzYW1wbGluZyBu
ZXh0IHRpbWUuCisgIGlmIChpbnRlcnZhbCA8IDEpIHsKKyAgICByZXR1cm4gMTsKKyAgfQorICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4oaW50ZXJ2YWwpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UKKworSGFzaHRhYmxlelNhbXBsZXImIEhhc2h0YWJsZXpTYW1wbGVyOjpHbG9iYWwoKSB7Cisg
IHN0YXRpYyBhdXRvKiBzYW1wbGVyID0gbmV3IEhhc2h0YWJsZXpTYW1wbGVyKCk7CisgIHJldHVy
biAqc2FtcGxlcjsKK30KKworSGFzaHRhYmxlelNhbXBsZXI6OkRpc3Bvc2VDYWxsYmFjayBIYXNo
dGFibGV6U2FtcGxlcjo6U2V0RGlzcG9zZUNhbGxiYWNrKAorICAgIERpc3Bvc2VDYWxsYmFjayBm
KSB7CisgIHJldHVybiBkaXNwb3NlXy5leGNoYW5nZShmLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxh
eGVkKTsKK30KKworSGFzaHRhYmxlekluZm86Okhhc2h0YWJsZXpJbmZvKCkgeyBQcmVwYXJlRm9y
U2FtcGxpbmcoKTsgfQorSGFzaHRhYmxlekluZm86On5IYXNodGFibGV6SW5mbygpID0gZGVmYXVs
dDsKKwordm9pZCBIYXNodGFibGV6SW5mbzo6UHJlcGFyZUZvclNhbXBsaW5nKCkgeworICBjYXBh
Y2l0eS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgc2l6ZS5zdG9yZSgw
LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgbnVtX2VyYXNlcy5zdG9yZSgwLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgbWF4X3Byb2JlX2xlbmd0aC5zdG9yZSgwLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgdG90YWxfcHJvYmVfbGVuZ3RoLnN0b3JlKDAsIHN0
ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBoYXNoZXNfYml0d2lzZV9vci5zdG9yZSgwLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaGFzaGVzX2JpdHdpc2VfYW5kLnN0b3JlKH5z
aXplX3R7fSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisKKyAgY3JlYXRlX3RpbWUgPSBh
YnNsOjpOb3coKTsKKyAgLy8gVGhlIGlubGluZXIgbWFrZXMgaGFyZGNvZGVkIHNraXBfY291bnQg
ZGlmZmljdWx0IChlc3BlY2lhbGx5IHdoZW4gY29tYmluZWQKKyAgLy8gd2l0aCBMVE8pLiAgV2Ug
dXNlIHRoZSBhYmlsaXR5IHRvIGV4Y2x1ZGUgc3RhY2tzIGJ5IHJlZ2V4IHdoZW4gZW5jb2RpbmcK
KyAgLy8gaW5zdGVhZC4KKyAgZGVwdGggPSBhYnNsOjpHZXRTdGFja1RyYWNlKHN0YWNrLCBIYXNo
dGFibGV6SW5mbzo6a01heFN0YWNrRGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBza2lwX2NvdW50PSAqLyAwKTsKKyAgZGVhZCA9IG51bGxwdHI7Cit9CisKK0hhc2h0YWJs
ZXpTYW1wbGVyOjpIYXNodGFibGV6U2FtcGxlcigpCisgICAgOiBkcm9wcGVkX3NhbXBsZXNfKDAp
LCBzaXplX2VzdGltYXRlXygwKSwgYWxsXyhudWxscHRyKSwgZGlzcG9zZV8obnVsbHB0cikgewor
ICBhYnNsOjpNdXRleExvY2sgbCgmZ3JhdmV5YXJkXy5pbml0X211KTsKKyAgZ3JhdmV5YXJkXy5k
ZWFkID0gJmdyYXZleWFyZF87Cit9CisKK0hhc2h0YWJsZXpTYW1wbGVyOjp+SGFzaHRhYmxlelNh
bXBsZXIoKSB7CisgIEhhc2h0YWJsZXpJbmZvKiBzID0gYWxsXy5sb2FkKHN0ZDo6bWVtb3J5X29y
ZGVyX2FjcXVpcmUpOworICB3aGlsZSAocyAhPSBudWxscHRyKSB7CisgICAgSGFzaHRhYmxleklu
Zm8qIG5leHQgPSBzLT5uZXh0OworICAgIGRlbGV0ZSBzOworICAgIHMgPSBuZXh0OworICB9Cit9
CisKK3ZvaWQgSGFzaHRhYmxlelNhbXBsZXI6OlB1c2hOZXcoSGFzaHRhYmxlekluZm8qIHNhbXBs
ZSkgeworICBzYW1wbGUtPm5leHQgPSBhbGxfLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7CisgIHdoaWxlICghYWxsXy5jb21wYXJlX2V4Y2hhbmdlX3dlYWsoc2FtcGxlLT5uZXh0LCBz
YW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptZW1vcnlf
b3JkZXJfcmVsZWFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKSkgeworICB9Cit9CisKK3ZvaWQgSGFzaHRhYmxlelNhbXBs
ZXI6OlB1c2hEZWFkKEhhc2h0YWJsZXpJbmZvKiBzYW1wbGUpIHsKKyAgaWYgKGF1dG8qIGRpc3Bv
c2UgPSBkaXNwb3NlXy5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpKSB7CisgICAgZGlz
cG9zZSgqc2FtcGxlKTsKKyAgfQorCisgIGFic2w6Ok11dGV4TG9jayBncmF2ZXlhcmRfbG9jaygm
Z3JhdmV5YXJkXy5pbml0X211KTsKKyAgYWJzbDo6TXV0ZXhMb2NrIHNhbXBsZV9sb2NrKCZzYW1w
bGUtPmluaXRfbXUpOworICBzYW1wbGUtPmRlYWQgPSBncmF2ZXlhcmRfLmRlYWQ7CisgIGdyYXZl
eWFyZF8uZGVhZCA9IHNhbXBsZTsKK30KKworSGFzaHRhYmxlekluZm8qIEhhc2h0YWJsZXpTYW1w
bGVyOjpQb3BEZWFkKCkgeworICBhYnNsOjpNdXRleExvY2sgZ3JhdmV5YXJkX2xvY2soJmdyYXZl
eWFyZF8uaW5pdF9tdSk7CisKKyAgLy8gVGhlIGxpc3QgaXMgY2lyY3VsYXIsIHNvIGV2ZW50dWFs
bHkgaXQgY29sbGFwc2VzIGRvd24gdG8KKyAgLy8gICBncmF2ZXlhcmRfLmRlYWQgPT0gJmdyYXZl
eWFyZF8KKyAgLy8gd2hlbiBpdCBpcyBlbXB0eS4KKyAgSGFzaHRhYmxlekluZm8qIHNhbXBsZSA9
IGdyYXZleWFyZF8uZGVhZDsKKyAgaWYgKHNhbXBsZSA9PSAmZ3JhdmV5YXJkXykgcmV0dXJuIG51
bGxwdHI7CisKKyAgYWJzbDo6TXV0ZXhMb2NrIHNhbXBsZV9sb2NrKCZzYW1wbGUtPmluaXRfbXUp
OworICBncmF2ZXlhcmRfLmRlYWQgPSBzYW1wbGUtPmRlYWQ7CisgIHNhbXBsZS0+UHJlcGFyZUZv
clNhbXBsaW5nKCk7CisgIHJldHVybiBzYW1wbGU7Cit9CisKK0hhc2h0YWJsZXpJbmZvKiBIYXNo
dGFibGV6U2FtcGxlcjo6UmVnaXN0ZXIoKSB7CisgIGludDY0X3Qgc2l6ZSA9IHNpemVfZXN0aW1h
dGVfLmZldGNoX2FkZCgxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaWYgKHNpemUg
PiBnX2hhc2h0YWJsZXpfbWF4X3NhbXBsZXMubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVk
KSkgeworICAgIHNpemVfZXN0aW1hdGVfLmZldGNoX3N1YigxLCBzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsKKyAgICBkcm9wcGVkX3NhbXBsZXNfLmZldGNoX2FkZCgxLCBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIEhhc2h0YWJsZXpJ
bmZvKiBzYW1wbGUgPSBQb3BEZWFkKCk7CisgIGlmIChzYW1wbGUgPT0gbnVsbHB0cikgeworICAg
IC8vIFJlc3VycmVjdGlvbiBmYWlsZWQuICBIaXJlIGEgbmV3IHdhcmxvY2suCisgICAgc2FtcGxl
ID0gbmV3IEhhc2h0YWJsZXpJbmZvKCk7CisgICAgUHVzaE5ldyhzYW1wbGUpOworICB9CisKKyAg
cmV0dXJuIHNhbXBsZTsKK30KKwordm9pZCBIYXNodGFibGV6U2FtcGxlcjo6VW5yZWdpc3RlcihI
YXNodGFibGV6SW5mbyogc2FtcGxlKSB7CisgIFB1c2hEZWFkKHNhbXBsZSk7CisgIHNpemVfZXN0
aW1hdGVfLmZldGNoX3N1YigxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKworaW50
NjRfdCBIYXNodGFibGV6U2FtcGxlcjo6SXRlcmF0ZSgKKyAgICBjb25zdCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoY29uc3QgSGFzaHRhYmxlekluZm8mIHN0YWNrKT4mIGYpIHsKKyAgSGFzaHRhYmxleklu
Zm8qIHMgPSBhbGxfLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgIHdoaWxlIChz
ICE9IG51bGxwdHIpIHsKKyAgICBhYnNsOjpNdXRleExvY2sgbCgmcy0+aW5pdF9tdSk7CisgICAg
aWYgKHMtPmRlYWQgPT0gbnVsbHB0cikgeworICAgICAgZigqcyk7CisgICAgfQorICAgIHMgPSBz
LT5uZXh0OworICB9CisKKyAgcmV0dXJuIGRyb3BwZWRfc2FtcGxlc18ubG9hZChzdGQ6Om1lbW9y
eV9vcmRlcl9yZWxheGVkKTsKK30KKworSGFzaHRhYmxlekluZm8qIFNhbXBsZVNsb3coaW50NjRf
dCogbmV4dF9zYW1wbGUpIHsKKyAgaWYgKGtBYnNsQ29udGFpbmVySW50ZXJuYWxTYW1wbGVFdmVy
eXRoaW5nKSB7CisgICAgKm5leHRfc2FtcGxlID0gMTsKKyAgICByZXR1cm4gSGFzaHRhYmxlelNh
bXBsZXI6Okdsb2JhbCgpLlJlZ2lzdGVyKCk7CisgIH0KKworICBib29sIGZpcnN0ID0gKm5leHRf
c2FtcGxlIDwgMDsKKyAgKm5leHRfc2FtcGxlID0gR2V0R2VvbWV0cmljVmFyaWFibGUoCisgICAg
ICBnX2hhc2h0YWJsZXpfc2FtcGxlX3BhcmFtZXRlci5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3Jl
bGF4ZWQpKTsKKworICAvLyBnX2hhc2h0YWJsZXpfZW5hYmxlZCBjYW4gYmUgZHluYW1pY2FsbHkg
ZmxpcHBlZCwgd2UgbmVlZCB0byBzZXQgYSB0aHJlc2hvbGQKKyAgLy8gbG93IGVub3VnaCB0aGF0
IHdlIHdpbGwgc3RhcnQgc2FtcGxpbmcgaW4gYSByZWFzb25hYmxlIHRpbWUsIHNvIHdlIGp1c3Qg
dXNlCisgIC8vIHRoZSBkZWZhdWx0IHNhbXBsaW5nIHJhdGUuCisgIGlmICghZ19oYXNodGFibGV6
X2VuYWJsZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKSkgcmV0dXJuIG51bGxwdHI7
CisKKyAgLy8gV2Ugd2lsbCBvbmx5IGJlIG5lZ2F0aXZlIG9uIG91ciBmaXJzdCBjb3VudCwgc28g
d2Ugc2hvdWxkIGp1c3QgcmV0cnkgaW4KKyAgLy8gdGhhdCBjYXNlLgorICBpZiAoZmlyc3QpIHsK
KyAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUoLS0qbmV4dF9zYW1wbGUgPiAwKSkgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIFNhbXBsZVNsb3cobmV4dF9zYW1wbGUpOworICB9CisKKyAgcmV0
dXJuIEhhc2h0YWJsZXpTYW1wbGVyOjpHbG9iYWwoKS5SZWdpc3RlcigpOworfQorCisjaWYgQUJT
TF9QRVJfVEhSRUFEX1RMUyA9PSAxCitBQlNMX1BFUl9USFJFQURfVExTX0tFWVdPUkQgaW50NjRf
dCBnbG9iYWxfbmV4dF9zYW1wbGUgPSAwOworI2VuZGlmICAvLyBBQlNMX1BFUl9USFJFQURfVExT
ID09IDEKKwordm9pZCBVbnNhbXBsZVNsb3coSGFzaHRhYmxlekluZm8qIGluZm8pIHsKKyAgSGFz
aHRhYmxlelNhbXBsZXI6Okdsb2JhbCgpLlVucmVnaXN0ZXIoaW5mbyk7Cit9CisKK3ZvaWQgUmVj
b3JkSW5zZXJ0U2xvdyhIYXNodGFibGV6SW5mbyogaW5mbywgc2l6ZV90IGhhc2gsCisgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGRpc3RhbmNlX2Zyb21fZGVzaXJlZCkgeworICAvLyBTd2lz
c1RhYmxlcyBwcm9iZSBpbiBncm91cHMgb2YgMTYsIHNvIHNjYWxlIHRoaXMgdG8gY291bnQgaXRl
bXMgcHJvYmVzIGFuZAorICAvLyBub3Qgb2Zmc2V0IGZyb20gZGVzaXJlZC4KKyAgc2l6ZV90IHBy
b2JlX2xlbmd0aCA9IGRpc3RhbmNlX2Zyb21fZGVzaXJlZDsKKyNpZiBTV0lTU1RBQkxFX0hBVkVf
U1NFMgorICBwcm9iZV9sZW5ndGggLz0gMTY7CisjZWxzZQorICBwcm9iZV9sZW5ndGggLz0gODsK
KyNlbmRpZgorCisgIGluZm8tPmhhc2hlc19iaXR3aXNlX2FuZC5mZXRjaF9hbmQoaGFzaCwgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGluZm8tPmhhc2hlc19iaXR3aXNlX29yLmZldGNo
X29yKGhhc2gsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBpbmZvLT5tYXhfcHJvYmVf
bGVuZ3RoLnN0b3JlKAorICAgICAgc3RkOjptYXgoaW5mby0+bWF4X3Byb2JlX2xlbmd0aC5sb2Fk
KHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpLAorICAgICAgICAgICAgICAgcHJvYmVfbGVuZ3Ro
KSwKKyAgICAgIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBpbmZvLT50b3RhbF9wcm9i
ZV9sZW5ndGguZmV0Y2hfYWRkKHByb2JlX2xlbmd0aCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7CisgIGluZm8tPnNpemUuZmV0Y2hfYWRkKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OworfQorCit2b2lkIFNldEhhc2h0YWJsZXpFbmFibGVkKGJvb2wgZW5hYmxlZCkgeworICBnX2hh
c2h0YWJsZXpfZW5hYmxlZC5zdG9yZShlbmFibGVkLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNl
KTsKK30KKwordm9pZCBTZXRIYXNodGFibGV6U2FtcGxlUGFyYW1ldGVyKGludDMyX3QgcmF0ZSkg
eworICBpZiAocmF0ZSA+IDApIHsKKyAgICBnX2hhc2h0YWJsZXpfc2FtcGxlX3BhcmFtZXRlci5z
dG9yZShyYXRlLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKKyAgfSBlbHNlIHsKKyAgICBB
QlNMX1JBV19MT0coRVJST1IsICJJbnZhbGlkIGhhc2h0YWJsZXogc2FtcGxlIHJhdGU6ICVsbGQi
LAorICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJhdGUpKTsgIC8vIE5P
TElOVChydW50aW1lL2ludCkKKyAgfQorfQorCit2b2lkIFNldEhhc2h0YWJsZXpNYXhTYW1wbGVz
KGludDMyX3QgbWF4KSB7CisgIGlmIChtYXggPiAwKSB7CisgICAgZ19oYXNodGFibGV6X21heF9z
YW1wbGVzLnN0b3JlKG1heCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CisgIH0gZWxzZSB7
CisgICAgQUJTTF9SQVdfTE9HKEVSUk9SLCAiSW52YWxpZCBoYXNodGFibGV6IG1heCBzYW1wbGVz
OiAlbGxkIiwKKyAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtYXgpKTsg
IC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgY29udGFp
bmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi40MTEyMTc1NDQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9oYXNodGFibGV6X3NhbXBsZXIuaApAQCAtMCwwICsxLDI4OCBAQAorLy8gQ29w
eXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vIEZpbGU6IGhhc2h0YWJsZXpfc2FtcGxlci5oCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyB0aGUgQVBJIGZvciBhIGxvdyBs
ZXZlbCBsaWJyYXJ5IHRvIHNhbXBsZSBoYXNodGFibGVzCisvLyBhbmQgY29sbGVjdCBydW50aW1l
IHN0YXRpc3RpY3MgYWJvdXQgdGhlbS4KKy8vCisvLyBgSGFzaHRhYmxlelNhbXBsZXJgIGNvbnRy
b2xzIHRoZSBsaWZlY3ljbGUgb2YgYEhhc2h0YWJsZXpJbmZvYCBvYmplY3RzIHdoaWNoCisvLyBz
dG9yZSBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBzYW1wbGUuCisvLworLy8gYFJlY29yZCpg
IG1ldGhvZHMgc3RvcmUgaW5mb3JtYXRpb24gaW50byBzYW1wbGVzLgorLy8gYFNhbXBsZSgpYCBh
bmQgYFVuc2FtcGxlKClgIG1ha2UgdXNlIG9mIGEgc2luZ2xlIGdsb2JhbCBzYW1wbGVyIHdpdGgK
Ky8vIHByb3BlcnRpZXMgY29udHJvbGxlZCBieSB0aGUgZmxhZ3MgaGFzaHRhYmxlel9lbmFibGVk
LAorLy8gaGFzaHRhYmxlel9zYW1wbGVfcmF0ZSwgYW5kIGhhc2h0YWJsZXpfbWF4X3NhbXBsZXMu
CisvLworLy8gV0FSTklORworLy8KKy8vIFVzaW5nIHRoaXMgc2FtcGxpbmcgQVBJIG1heSBjYXVz
ZSBzYW1wbGVkIFN3aXNzIHRhYmxlcyB0byB1c2UgdGhlIGdsb2JhbAorLy8gYWxsb2NhdG9yIChv
cGVyYXRvciBgbmV3YCkgaW4gYWRkaXRpb24gdG8gYW55IGN1c3RvbSBhbGxvY2F0b3IuICBJZiB5
b3UKKy8vIGFyZSB1c2luZyBhIHRhYmxlIGluIGFuIHVudXN1YWwgY2lyY3Vtc3RhbmNlIHdoZXJl
IGFsbG9jYXRpb24gb3IgY2FsbGluZyBhCisvLyBsaW51eCBzeXNjYWxsIGlzIHVuYWNjZXB0YWJs
ZSwgdGhpcyBjb3VsZCBpbnRlcmZlcmUuCisvLworLy8gVGhpcyB1dGlsaXR5IGlzIGludGVybmFs
LW9ubHkuIFVzZSBhdCB5b3VyIG93biByaXNrLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lO
VEVSTkFMX0hBU0hUQUJMRVpfU0FNUExFUl9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRF
Uk5BTF9IQVNIVEFCTEVaX1NBTVBMRVJfSF8KKworI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRl
IDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNp
bmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcGVyX3RocmVhZF90bHMuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvaGF2ZV9zc2UuaCIKKyNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgor
I2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCisvLyBTdG9yZXMgaW5mb3JtYXRpb24gYWJv
dXQgYSBzYW1wbGVkIGhhc2h0YWJsZS4gIEFsbCBtdXRhdGlvbnMgdG8gdGhpcyAqbXVzdCoKKy8v
IGJlIG1hZGUgdGhyb3VnaCBgUmVjb3JkKmAgZnVuY3Rpb25zIGJlbG93LiAgQWxsIHJlYWRzIGZy
b20gdGhpcyAqbXVzdCogb25seQorLy8gb2NjdXIgaW4gdGhlIGNhbGxiYWNrIHRvIGBIYXNodGFi
bGV6U2FtcGxlcjo6SXRlcmF0ZWAuCitzdHJ1Y3QgSGFzaHRhYmxlekluZm8geworICAvLyBDb25z
dHJ1Y3RzIHRoZSBvYmplY3QgYnV0IGRvZXMgbm90IGZpbGwgaW4gYW55IGZpZWxkcy4KKyAgSGFz
aHRhYmxlekluZm8oKTsKKyAgfkhhc2h0YWJsZXpJbmZvKCk7CisgIEhhc2h0YWJsZXpJbmZvKGNv
bnN0IEhhc2h0YWJsZXpJbmZvJikgPSBkZWxldGU7CisgIEhhc2h0YWJsZXpJbmZvJiBvcGVyYXRv
cj0oY29uc3QgSGFzaHRhYmxlekluZm8mKSA9IGRlbGV0ZTsKKworICAvLyBQdXRzIHRoZSBvYmpl
Y3QgaW50byBhIGNsZWFuIHN0YXRlLCBmaWxscyBpbiB0aGUgbG9naWNhbGx5IGBjb25zdGAgbWVt
YmVycywKKyAgLy8gYmxvY2tpbmcgZm9yIGFueSByZWFkZXJzIHRoYXQgYXJlIGN1cnJlbnRseSBz
YW1wbGluZyB0aGUgb2JqZWN0LgorICB2b2lkIFByZXBhcmVGb3JTYW1wbGluZygpIEFCU0xfRVhD
TFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGluaXRfbXUpOworCisgIC8vIFRoZXNlIGZpZWxkcyBhcmUg
bXV0YXRlZCBieSB0aGUgdmFyaW91cyBSZWNvcmQqIEFQSXMgYW5kIG5lZWQgdG8gYmUKKyAgLy8g
dGhyZWFkLXNhZmUuCisgIHN0ZDo6YXRvbWljPHNpemVfdD4gY2FwYWNpdHk7CisgIHN0ZDo6YXRv
bWljPHNpemVfdD4gc2l6ZTsKKyAgc3RkOjphdG9taWM8c2l6ZV90PiBudW1fZXJhc2VzOworICBz
dGQ6OmF0b21pYzxzaXplX3Q+IG1heF9wcm9iZV9sZW5ndGg7CisgIHN0ZDo6YXRvbWljPHNpemVf
dD4gdG90YWxfcHJvYmVfbGVuZ3RoOworICBzdGQ6OmF0b21pYzxzaXplX3Q+IGhhc2hlc19iaXR3
aXNlX29yOworICBzdGQ6OmF0b21pYzxzaXplX3Q+IGhhc2hlc19iaXR3aXNlX2FuZDsKKworICAv
LyBgSGFzaHRhYmxlelNhbXBsZXJgIG1haW50YWlucyBpbnRydXNpdmUgbGlua2VkIGxpc3RzIGZv
ciBhbGwgc2FtcGxlcy4gIFNlZQorICAvLyBjb21tZW50cyBvbiBgSGFzaHRhYmxlelNhbXBsZXI6
OmFsbF9gIGZvciBkZXRhaWxzIG9uIHRoZXNlLiAgYGluaXRfbXVgCisgIC8vIGd1YXJkcyB0aGUg
YWJpbGl0eSB0byByZXN0b3JlIHRoZSBzYW1wbGUgdG8gYSBwcmlzdGluZSBzdGF0ZS4gIFRoaXMK
KyAgLy8gcHJldmVudHMgcmFjZXMgd2l0aCBzYW1wbGluZyBhbmQgcmVzdXJyZWN0aW5nIGFuIG9i
amVjdC4KKyAgYWJzbDo6TXV0ZXggaW5pdF9tdTsKKyAgSGFzaHRhYmxlekluZm8qIG5leHQ7Cisg
IEhhc2h0YWJsZXpJbmZvKiBkZWFkIEFCU0xfR1VBUkRFRF9CWShpbml0X211KTsKKworICAvLyBB
bGwgb2YgdGhlIGZpZWxkcyBiZWxvdyBhcmUgc2V0IGJ5IGBQcmVwYXJlRm9yU2FtcGxpbmdgLCB0
aGV5IG11c3Qgbm90IGJlCisgIC8vIG11dGF0ZWQgaW4gYFJlY29yZCpgIGZ1bmN0aW9ucy4gIFRo
ZXkgYXJlIGxvZ2ljYWxseSBgY29uc3RgIGluIHRoYXQgc2Vuc2UuCisgIC8vIFRoZXNlIGFyZSBn
dWFyZGVkIGJ5IGluaXRfbXUsIGJ1dCB0aGF0IGlzIG5vdCBleHRlcm5hbGl6ZWQgdG8gY2xpZW50
cywgd2hvCisgIC8vIGNhbiBvbmx5IHJlYWQgdGhlbSBkdXJpbmcgYEhhc2h0YWJsZXpTYW1wbGVy
OjpJdGVyYXRlYCB3aGljaCB3aWxsIGhvbGQgdGhlCisgIC8vIGxvY2suCisgIHN0YXRpYyBjb25z
dGV4cHIgaW50IGtNYXhTdGFja0RlcHRoID0gNjQ7CisgIGFic2w6OlRpbWUgY3JlYXRlX3RpbWU7
CisgIGludDMyX3QgZGVwdGg7CisgIHZvaWQqIHN0YWNrW2tNYXhTdGFja0RlcHRoXTsKK307CisK
K2lubGluZSB2b2lkIFJlY29yZFJlaGFzaFNsb3coSGFzaHRhYmxlekluZm8qIGluZm8sIHNpemVf
dCB0b3RhbF9wcm9iZV9sZW5ndGgpIHsKKyNpZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgorICB0b3Rh
bF9wcm9iZV9sZW5ndGggLz0gMTY7CisjZWxzZQorICB0b3RhbF9wcm9iZV9sZW5ndGggLz0gODsK
KyNlbmRpZgorICBpbmZvLT50b3RhbF9wcm9iZV9sZW5ndGguc3RvcmUodG90YWxfcHJvYmVfbGVu
Z3RoLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaW5mby0+bnVtX2VyYXNlcy5zdG9y
ZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKworaW5saW5lIHZvaWQgUmVjb3Jk
U3RvcmFnZUNoYW5nZWRTbG93KEhhc2h0YWJsZXpJbmZvKiBpbmZvLCBzaXplX3Qgc2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FwYWNpdHkpIHsKKyAg
aW5mby0+c2l6ZS5zdG9yZShzaXplLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaW5m
by0+Y2FwYWNpdHkuc3RvcmUoY2FwYWNpdHksIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwor
ICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgLy8gVGhpcyBpcyBhIGNsZWFyLCByZXNldCB0aGUgdG90
YWwvbnVtX2VyYXNlcyB0b28uCisgICAgUmVjb3JkUmVoYXNoU2xvdyhpbmZvLCAwKTsKKyAgfQor
fQorCit2b2lkIFJlY29yZEluc2VydFNsb3coSGFzaHRhYmxlekluZm8qIGluZm8sIHNpemVfdCBo
YXNoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkaXN0YW5jZV9mcm9tX2Rlc2lyZWQp
OworCitpbmxpbmUgdm9pZCBSZWNvcmRFcmFzZVNsb3coSGFzaHRhYmxlekluZm8qIGluZm8pIHsK
KyAgaW5mby0+c2l6ZS5mZXRjaF9zdWIoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cisg
IGluZm8tPm51bV9lcmFzZXMuZmV0Y2hfYWRkKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OworfQorCitIYXNodGFibGV6SW5mbyogU2FtcGxlU2xvdyhpbnQ2NF90KiBuZXh0X3NhbXBsZSk7
Cit2b2lkIFVuc2FtcGxlU2xvdyhIYXNodGFibGV6SW5mbyogaW5mbyk7CisKK2NsYXNzIEhhc2h0
YWJsZXpJbmZvSGFuZGxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEhhc2h0YWJsZXpJbmZvSGFu
ZGxlKCkgOiBpbmZvXyhudWxscHRyKSB7fQorICBleHBsaWNpdCBIYXNodGFibGV6SW5mb0hhbmRs
ZShIYXNodGFibGV6SW5mbyogaW5mbykgOiBpbmZvXyhpbmZvKSB7fQorICB+SGFzaHRhYmxleklu
Zm9IYW5kbGUoKSB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKGluZm9fID09IG51bGxwdHIp
KSByZXR1cm47CisgICAgVW5zYW1wbGVTbG93KGluZm9fKTsKKyAgfQorCisgIEhhc2h0YWJsZXpJ
bmZvSGFuZGxlKGNvbnN0IEhhc2h0YWJsZXpJbmZvSGFuZGxlJikgPSBkZWxldGU7CisgIEhhc2h0
YWJsZXpJbmZvSGFuZGxlJiBvcGVyYXRvcj0oY29uc3QgSGFzaHRhYmxlekluZm9IYW5kbGUmKSA9
IGRlbGV0ZTsKKworICBIYXNodGFibGV6SW5mb0hhbmRsZShIYXNodGFibGV6SW5mb0hhbmRsZSYm
IG8pIG5vZXhjZXB0CisgICAgICA6IGluZm9fKGFic2w6OmV4Y2hhbmdlKG8uaW5mb18sIG51bGxw
dHIpKSB7fQorICBIYXNodGFibGV6SW5mb0hhbmRsZSYgb3BlcmF0b3I9KEhhc2h0YWJsZXpJbmZv
SGFuZGxlJiYgbykgbm9leGNlcHQgeworICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoaW5mb18g
IT0gbnVsbHB0cikpIHsKKyAgICAgIFVuc2FtcGxlU2xvdyhpbmZvXyk7CisgICAgfQorICAgIGlu
Zm9fID0gYWJzbDo6ZXhjaGFuZ2Uoby5pbmZvXywgbnVsbHB0cik7CisgICAgcmV0dXJuICp0aGlz
OworICB9CisKKyAgaW5saW5lIHZvaWQgUmVjb3JkU3RvcmFnZUNoYW5nZWQoc2l6ZV90IHNpemUs
IHNpemVfdCBjYXBhY2l0eSkgeworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShpbmZvXyA9PSBu
dWxscHRyKSkgcmV0dXJuOworICAgIFJlY29yZFN0b3JhZ2VDaGFuZ2VkU2xvdyhpbmZvXywgc2l6
ZSwgY2FwYWNpdHkpOworICB9CisKKyAgaW5saW5lIHZvaWQgUmVjb3JkUmVoYXNoKHNpemVfdCB0
b3RhbF9wcm9iZV9sZW5ndGgpIHsKKyAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUoaW5mb18gPT0g
bnVsbHB0cikpIHJldHVybjsKKyAgICBSZWNvcmRSZWhhc2hTbG93KGluZm9fLCB0b3RhbF9wcm9i
ZV9sZW5ndGgpOworICB9CisKKyAgaW5saW5lIHZvaWQgUmVjb3JkSW5zZXJ0KHNpemVfdCBoYXNo
LCBzaXplX3QgZGlzdGFuY2VfZnJvbV9kZXNpcmVkKSB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9U
UlVFKGluZm9fID09IG51bGxwdHIpKSByZXR1cm47CisgICAgUmVjb3JkSW5zZXJ0U2xvdyhpbmZv
XywgaGFzaCwgZGlzdGFuY2VfZnJvbV9kZXNpcmVkKTsKKyAgfQorCisgIGlubGluZSB2b2lkIFJl
Y29yZEVyYXNlKCkgeworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShpbmZvXyA9PSBudWxscHRy
KSkgcmV0dXJuOworICAgIFJlY29yZEVyYXNlU2xvdyhpbmZvXyk7CisgIH0KKworICBmcmllbmQg
aW5saW5lIHZvaWQgc3dhcChIYXNodGFibGV6SW5mb0hhbmRsZSYgbGhzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBIYXNodGFibGV6SW5mb0hhbmRsZSYgcmhzKSB7CisgICAgc3RkOjpzd2Fw
KGxocy5pbmZvXywgcmhzLmluZm9fKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGNsYXNz
IEhhc2h0YWJsZXpJbmZvSGFuZGxlUGVlcjsKKyAgSGFzaHRhYmxlekluZm8qIGluZm9fOworfTsK
KworI2lmIEFCU0xfUEVSX1RIUkVBRF9UTFMgPT0gMQorZXh0ZXJuIEFCU0xfUEVSX1RIUkVBRF9U
TFNfS0VZV09SRCBpbnQ2NF90IGdsb2JhbF9uZXh0X3NhbXBsZTsKKyNlbmRpZiAgLy8gQUJTTF9Q
RVJfVEhSRUFEX1RMUworCisvLyBSZXR1cm5zIGFuIFJBSUkgc2FtcGxpbmcgaGFuZGxlIHRoYXQg
bWFuYWdlcyByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0YXRpb24KKy8vIHdpdGggdGhlIGdsb2Jh
bCBzYW1wbGVyLgoraW5saW5lIEhhc2h0YWJsZXpJbmZvSGFuZGxlIFNhbXBsZSgpIHsKKyNpZiBB
QlNMX1BFUl9USFJFQURfVExTID09IDAKKyAgc3RhdGljIGF1dG8qIG11ID0gbmV3IGFic2w6Ok11
dGV4OworICBzdGF0aWMgaW50NjRfdCBnbG9iYWxfbmV4dF9zYW1wbGUgPSAwOworICBhYnNsOjpN
dXRleExvY2sgbChtdSk7CisjZW5kaWYgIC8vICFBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMCisKKyAg
aWYgKEFCU0xfUFJFRElDVF9UUlVFKC0tZ2xvYmFsX25leHRfc2FtcGxlID4gMCkpIHsKKyAgICBy
ZXR1cm4gSGFzaHRhYmxlekluZm9IYW5kbGUobnVsbHB0cik7CisgIH0KKyAgcmV0dXJuIEhhc2h0
YWJsZXpJbmZvSGFuZGxlKFNhbXBsZVNsb3coJmdsb2JhbF9uZXh0X3NhbXBsZSkpOworfQorCisv
LyBIb2xkcyBzYW1wbGVzIGFuZCB0aGVpciBhc3NvY2lhdGVkIHN0YWNrIHRyYWNlcyB3aXRoIGEg
c29mdCBsaW1pdCBvZgorLy8gYFNldEhhc2h0YWJsZXpNYXhTYW1wbGVzKClgLgorLy8KKy8vIFRo
cmVhZCBzYWZlLgorY2xhc3MgSGFzaHRhYmxlelNhbXBsZXIgeworIHB1YmxpYzoKKyAgLy8gUmV0
dXJucyBhIGdsb2JhbCBTYW1wbGVyLgorICBzdGF0aWMgSGFzaHRhYmxlelNhbXBsZXImIEdsb2Jh
bCgpOworCisgIEhhc2h0YWJsZXpTYW1wbGVyKCk7CisgIH5IYXNodGFibGV6U2FtcGxlcigpOwor
CisgIC8vIFJlZ2lzdGVycyBmb3Igc2FtcGxpbmcuICBSZXR1cm5zIGFuIG9wYXF1ZSByZWdpc3Ry
YXRpb24gaW5mby4KKyAgSGFzaHRhYmxlekluZm8qIFJlZ2lzdGVyKCk7CisKKyAgLy8gVW5yZWdp
c3RlcnMgdGhlIHNhbXBsZS4KKyAgdm9pZCBVbnJlZ2lzdGVyKEhhc2h0YWJsZXpJbmZvKiBzYW1w
bGUpOworCisgIC8vIFRoZSBkaXNwb3NlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIG9uIGFsbCBz
YW1wbGVzIHRoZSBtb21lbnQgdGhleSBhcmUKKyAgLy8gYmVpbmcgdW5yZWdpc3RlcmVkLiBPbmx5
IGFmZmVjdHMgc2FtcGxlcyB0aGF0IGFyZSB1bnJlZ2lzdGVyZWQgYWZ0ZXIgdGhlCisgIC8vIGNh
bGxiYWNrIGhhcyBiZWVuIHNldC4KKyAgLy8gUmV0dXJucyB0aGUgcHJldmlvdXMgY2FsbGJhY2su
CisgIHVzaW5nIERpc3Bvc2VDYWxsYmFjayA9IHZvaWQgKCopKGNvbnN0IEhhc2h0YWJsZXpJbmZv
Jik7CisgIERpc3Bvc2VDYWxsYmFjayBTZXREaXNwb3NlQ2FsbGJhY2soRGlzcG9zZUNhbGxiYWNr
IGYpOworCisgIC8vIEl0ZXJhdGVzIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGBTdGFja0luZm9g
cy4gIFJldHVybmluZyB0aGUgbnVtYmVyIG9mCisgIC8vIHNhbXBsZXMgdGhhdCBoYXZlIGJlZW4g
ZHJvcHBlZC4KKyAgaW50NjRfdCBJdGVyYXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25z
dCBIYXNodGFibGV6SW5mbyYgc3RhY2spPiYgZik7CisKKyBwcml2YXRlOgorICB2b2lkIFB1c2hO
ZXcoSGFzaHRhYmxlekluZm8qIHNhbXBsZSk7CisgIHZvaWQgUHVzaERlYWQoSGFzaHRhYmxleklu
Zm8qIHNhbXBsZSk7CisgIEhhc2h0YWJsZXpJbmZvKiBQb3BEZWFkKCk7CisKKyAgc3RkOjphdG9t
aWM8c2l6ZV90PiBkcm9wcGVkX3NhbXBsZXNfOworICBzdGQ6OmF0b21pYzxzaXplX3Q+IHNpemVf
ZXN0aW1hdGVfOworCisgIC8vIEludHJ1c2l2ZSBsb2NrIGZyZWUgbGlua2VkIGxpc3RzIGZvciB0
cmFja2luZyBzYW1wbGVzLgorICAvLworICAvLyBgYWxsX2AgcmVjb3JkcyBhbGwgc2FtcGxlcyAo
dGhleSBhcmUgbmV2ZXIgcmVtb3ZlZCBmcm9tIHRoaXMgbGlzdCkgYW5kIGlzCisgIC8vIHRlcm1p
bmF0ZWQgd2l0aCBhIGBudWxscHRyYC4KKyAgLy8KKyAgLy8gYGdyYXZleWFyZF8uZGVhZGAgaXMg
YSBjaXJjdWxhciBsaW5rZWQgbGlzdC4gIFdoZW4gaXQgaXMgZW1wdHksCisgIC8vIGBncmF2ZXlh
cmRfLmRlYWQgPT0gJmdyYXZleWFyZGAuICBUaGUgbGlzdCBpcyBjaXJjdWxhciBzbyB0aGF0Cisg
IC8vIGV2ZXJ5IGl0ZW0gb24gaXQgKGV2ZW4gdGhlIGxhc3QpIGhhcyBhIG5vbi1udWxsIGRlYWQg
cG9pbnRlci4gIFRoaXMgYWxsb3dzCisgIC8vIGBJdGVyYXRlYCB0byBkZXRlcm1pbmUgaWYgYSBn
aXZlbiBzYW1wbGUgaXMgbGl2ZSBvciBkZWFkIHVzaW5nIG9ubHkKKyAgLy8gaW5mb3JtYXRpb24g
b24gdGhlIHNhbXBsZSBpdHNlbGYuCisgIC8vCisgIC8vIEZvciBleGFtcGxlLCBub2RlcyBbQSwg
QiwgQywgRCwgRV0gd2l0aCBbQSwgQywgRV0gYWxpdmUgYW5kIFtCLCBEXSBkZWFkCisgIC8vIGxv
b2tzIGxpa2UgdGhpcyAoRyBpcyB0aGUgR3JhdmV5YXJkKToKKyAgLy8KKyAgLy8gICAgICAgICAg
ICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisgIC8vICAgIGFsbCAt
LT58IEEgfC0tLT58IEIgfC0tLT58IEMgfC0tLT58IEQgfC0tLT58IEUgfAorICAvLyAgICAgICAg
ICAgfCAgIHwgICAgfCAgIHwgICAgfCAgIHwgICAgfCAgIHwgICAgfCAgIHwKKyAgLy8gICArLS0t
KyAgIHwgICB8ICstPnwgICB8LSsgIHwgICB8ICstPnwgICB8LSsgIHwgICB8CisgIC8vICAgfCBH
IHwgICArLS0tKyB8ICArLS0tKyB8ICArLS0tKyB8ICArLS0tKyB8ICArLS0tKworICAvLyAgIHwg
ICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgfCAgICAgICAgfAorICAvLyAgIHwgICB8IC0t
LS0tLS0tKyAgICAgICAgKy0tLS0tLS0tKyAgICAgICAgfAorICAvLyAgICstLS0rICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAvLyAgICAgXiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAvLyAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAvLworICBzdGQ6OmF0b21pYzxIYXNodGFibGV6SW5mbyo+IGFs
bF87CisgIEhhc2h0YWJsZXpJbmZvIGdyYXZleWFyZF87CisKKyAgc3RkOjphdG9taWM8RGlzcG9z
ZUNhbGxiYWNrPiBkaXNwb3NlXzsKK307CisKKy8vIEVuYWJsZXMgb3IgZGlzYWJsZXMgc2FtcGxp
bmcgZm9yIFN3aXNzIHRhYmxlcy4KK3ZvaWQgU2V0SGFzaHRhYmxlekVuYWJsZWQoYm9vbCBlbmFi
bGVkKTsKKworLy8gU2V0cyB0aGUgcmF0ZSBhdCB3aGljaCBTd2lzcyB0YWJsZXMgd2lsbCBiZSBz
YW1wbGVkLgordm9pZCBTZXRIYXNodGFibGV6U2FtcGxlUGFyYW1ldGVyKGludDMyX3QgcmF0ZSk7
CisKKy8vIFNldHMgYSBzb2Z0IG1heCBmb3IgdGhlIG51bWJlciBvZiBzYW1wbGVzIHRoYXQgd2ls
bCBiZSBrZXB0Lgordm9pZCBTZXRIYXNodGFibGV6TWF4U2FtcGxlcyhpbnQzMl90IG1heCk7CisK
Ky8vIENvbmZpZ3VyYXRpb24gb3ZlcnJpZGUuCisvLyBUaGlzIGFsbG93cyBwcm9jZXNzLXdpZGUg
c2FtcGxpbmcgd2l0aG91dCBkZXBlbmRpbmcgb24gb3JkZXIgb2YKKy8vIGluaXRpYWxpemF0aW9u
IG9mIHN0YXRpYyBzdG9yYWdlIGR1cmF0aW9uIG9iamVjdHMuCisvLyBUaGUgZGVmaW5pdGlvbiBv
ZiB0aGlzIGNvbnN0YW50IGlzIHdlYWssIHdoaWNoIGFsbG93cyB1cyB0byBpbmplY3QgYQorLy8g
ZGlmZmVyZW50IHZhbHVlIGZvciBpdCBhdCBsaW5rIHRpbWUuCitleHRlcm4gIkMiIGNvbnN0IGJv
b2wga0Fic2xDb250YWluZXJJbnRlcm5hbFNhbXBsZUV2ZXJ5dGhpbmc7CisKK30gIC8vIG5hbWVz
cGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAg
Ly8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSFRBQkxFWl9TQU1QTEVSX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyX2ZvcmNlX3dl
YWtfZGVmaW5pdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGV6X3Nh
bXBsZXJfZm9yY2Vfd2Vha19kZWZpbml0aW9uLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi40Y2E2ZmZkYWRkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9oYXNodGFibGV6X3NhbXBsZXJfZm9yY2Vfd2Vha19kZWZpbml0aW9uLmNj
CkBAIC0wLDAgKzEsMjcgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVy
LmgiCisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKworLy8gU2VlIGhhc2h0YWJsZXpf
c2FtcGxlci5oIGZvciBkZXRhaWxzLgorZXh0ZXJuICJDIiBBQlNMX0FUVFJJQlVURV9XRUFLIGNv
bnN0IGJvb2wKKyAgICBrQWJzbENvbnRhaW5lckludGVybmFsU2FtcGxlRXZlcnl0aGluZyA9IGZh
bHNlOworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpf
c2FtcGxlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2Ft
cGxlcl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43Zjll
OGRkMjFmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
dGFibGV6X3NhbXBsZXJfdGVzdC5jYwpAQCAtMCwwICsxLDM1NSBAQAorLy8gQ29weXJpZ2h0IDIw
MTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9oYXNodGFibGV6X3NhbXBsZXIuaCIKKworI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8cmFuZG9tPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVz
LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGF2ZV9zc2UuaCIKKyNpbmNs
dWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9ibG9ja2luZ19jb3VudGVyLmgiCisjaW5jbHVkZSAi
YWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvdGhyZWFkX3Bvb2wuaCIKKyNpbmNsdWRlICJh
YnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgorI2luY2x1ZGUgImFic2wvc3luY2hyb25pemF0
aW9uL25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgImFic2wvdGltZS9jbG9jay5oIgorI2luY2x1
ZGUgImFic2wvdGltZS90aW1lLmgiCisKKyNpZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgorY29uc3Rl
eHByIGludCBrUHJvYmVMZW5ndGggPSAxNjsKKyNlbHNlCitjb25zdGV4cHIgaW50IGtQcm9iZUxl
bmd0aCA9IDg7CisjZW5kaWYKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5l
cl9pbnRlcm5hbCB7CitjbGFzcyBIYXNodGFibGV6SW5mb0hhbmRsZVBlZXIgeworIHB1YmxpYzoK
KyAgc3RhdGljIGJvb2wgSXNTYW1wbGVkKGNvbnN0IEhhc2h0YWJsZXpJbmZvSGFuZGxlJiBoKSB7
CisgICAgcmV0dXJuIGguaW5mb18gIT0gbnVsbHB0cjsKKyAgfQorCisgIHN0YXRpYyBIYXNodGFi
bGV6SW5mbyogR2V0SW5mbyhIYXNodGFibGV6SW5mb0hhbmRsZSogaCkgeyByZXR1cm4gaC0+aW5m
b187IH0KK307CisKK25hbWVzcGFjZSB7Cit1c2luZyA6OmFic2w6OnN5bmNocm9uaXphdGlvbl9p
bnRlcm5hbDo6VGhyZWFkUG9vbDsKK3VzaW5nIDo6dGVzdGluZzo6SXNFbXB0eTsKK3VzaW5nIDo6
dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7CisKK3N0ZDo6dmVjdG9yPHNpemVfdD4gR2V0
U2l6ZXMoSGFzaHRhYmxlelNhbXBsZXIqIHMpIHsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiByZXM7
CisgIHMtPkl0ZXJhdGUoWyZdKGNvbnN0IEhhc2h0YWJsZXpJbmZvJiBpbmZvKSB7CisgICAgcmVz
LnB1c2hfYmFjayhpbmZvLnNpemUubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSk7Cisg
IH0pOworICByZXR1cm4gcmVzOworfQorCitIYXNodGFibGV6SW5mbyogUmVnaXN0ZXIoSGFzaHRh
YmxlelNhbXBsZXIqIHMsIHNpemVfdCBzaXplKSB7CisgIGF1dG8qIGluZm8gPSBzLT5SZWdpc3Rl
cigpOworICBhc3NlcnQoaW5mbyAhPSBudWxscHRyKTsKKyAgaW5mby0+c2l6ZS5zdG9yZShzaXpl
KTsKKyAgcmV0dXJuIGluZm87Cit9CisKK1RFU1QoSGFzaHRhYmxlekluZm9UZXN0LCBQcmVwYXJl
Rm9yU2FtcGxpbmcpIHsKKyAgYWJzbDo6VGltZSB0ZXN0X3N0YXJ0ID0gYWJzbDo6Tm93KCk7Cisg
IEhhc2h0YWJsZXpJbmZvIGluZm87CisgIGFic2w6Ok11dGV4TG9jayBsKCZpbmZvLmluaXRfbXUp
OworICBpbmZvLlByZXBhcmVGb3JTYW1wbGluZygpOworCisgIEVYUEVDVF9FUShpbmZvLmNhcGFj
aXR5LmxvYWQoKSwgMCk7CisgIEVYUEVDVF9FUShpbmZvLnNpemUubG9hZCgpLCAwKTsKKyAgRVhQ
RUNUX0VRKGluZm8ubnVtX2VyYXNlcy5sb2FkKCksIDApOworICBFWFBFQ1RfRVEoaW5mby5tYXhf
cHJvYmVfbGVuZ3RoLmxvYWQoKSwgMCk7CisgIEVYUEVDVF9FUShpbmZvLnRvdGFsX3Byb2JlX2xl
bmd0aC5sb2FkKCksIDApOworICBFWFBFQ1RfRVEoaW5mby5oYXNoZXNfYml0d2lzZV9vci5sb2Fk
KCksIDApOworICBFWFBFQ1RfRVEoaW5mby5oYXNoZXNfYml0d2lzZV9hbmQubG9hZCgpLCB+c2l6
ZV90e30pOworICBFWFBFQ1RfR0UoaW5mby5jcmVhdGVfdGltZSwgdGVzdF9zdGFydCk7CisKKyAg
aW5mby5jYXBhY2l0eS5zdG9yZSgxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaW5m
by5zaXplLnN0b3JlKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBpbmZvLm51bV9l
cmFzZXMuc3RvcmUoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGluZm8ubWF4X3By
b2JlX2xlbmd0aC5zdG9yZSgxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaW5mby50
b3RhbF9wcm9iZV9sZW5ndGguc3RvcmUoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cisg
IGluZm8uaGFzaGVzX2JpdHdpc2Vfb3Iuc3RvcmUoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7CisgIGluZm8uaGFzaGVzX2JpdHdpc2VfYW5kLnN0b3JlKDEsIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpOworICBpbmZvLmNyZWF0ZV90aW1lID0gdGVzdF9zdGFydCAtIGFic2w6OkhvdXJz
KDIwKTsKKworICBpbmZvLlByZXBhcmVGb3JTYW1wbGluZygpOworICBFWFBFQ1RfRVEoaW5mby5j
YXBhY2l0eS5sb2FkKCksIDApOworICBFWFBFQ1RfRVEoaW5mby5zaXplLmxvYWQoKSwgMCk7Cisg
IEVYUEVDVF9FUShpbmZvLm51bV9lcmFzZXMubG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8u
bWF4X3Byb2JlX2xlbmd0aC5sb2FkKCksIDApOworICBFWFBFQ1RfRVEoaW5mby50b3RhbF9wcm9i
ZV9sZW5ndGgubG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8uaGFzaGVzX2JpdHdpc2Vfb3Iu
bG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8uaGFzaGVzX2JpdHdpc2VfYW5kLmxvYWQoKSwg
fnNpemVfdHt9KTsKKyAgRVhQRUNUX0dFKGluZm8uY3JlYXRlX3RpbWUsIHRlc3Rfc3RhcnQpOwor
fQorCitURVNUKEhhc2h0YWJsZXpJbmZvVGVzdCwgUmVjb3JkU3RvcmFnZUNoYW5nZWQpIHsKKyAg
SGFzaHRhYmxlekluZm8gaW5mbzsKKyAgYWJzbDo6TXV0ZXhMb2NrIGwoJmluZm8uaW5pdF9tdSk7
CisgIGluZm8uUHJlcGFyZUZvclNhbXBsaW5nKCk7CisgIFJlY29yZFN0b3JhZ2VDaGFuZ2VkU2xv
dygmaW5mbywgMTcsIDQ3KTsKKyAgRVhQRUNUX0VRKGluZm8uc2l6ZS5sb2FkKCksIDE3KTsKKyAg
RVhQRUNUX0VRKGluZm8uY2FwYWNpdHkubG9hZCgpLCA0Nyk7CisgIFJlY29yZFN0b3JhZ2VDaGFu
Z2VkU2xvdygmaW5mbywgMjAsIDIwKTsKKyAgRVhQRUNUX0VRKGluZm8uc2l6ZS5sb2FkKCksIDIw
KTsKKyAgRVhQRUNUX0VRKGluZm8uY2FwYWNpdHkubG9hZCgpLCAyMCk7Cit9CisKK1RFU1QoSGFz
aHRhYmxlekluZm9UZXN0LCBSZWNvcmRJbnNlcnQpIHsKKyAgSGFzaHRhYmxlekluZm8gaW5mbzsK
KyAgYWJzbDo6TXV0ZXhMb2NrIGwoJmluZm8uaW5pdF9tdSk7CisgIGluZm8uUHJlcGFyZUZvclNh
bXBsaW5nKCk7CisgIEVYUEVDVF9FUShpbmZvLm1heF9wcm9iZV9sZW5ndGgubG9hZCgpLCAwKTsK
KyAgUmVjb3JkSW5zZXJ0U2xvdygmaW5mbywgMHgwMDAwRkYwMCwgNiAqIGtQcm9iZUxlbmd0aCk7
CisgIEVYUEVDVF9FUShpbmZvLm1heF9wcm9iZV9sZW5ndGgubG9hZCgpLCA2KTsKKyAgRVhQRUNU
X0VRKGluZm8uaGFzaGVzX2JpdHdpc2VfYW5kLmxvYWQoKSwgMHgwMDAwRkYwMCk7CisgIEVYUEVD
VF9FUShpbmZvLmhhc2hlc19iaXR3aXNlX29yLmxvYWQoKSwgMHgwMDAwRkYwMCk7CisgIFJlY29y
ZEluc2VydFNsb3coJmluZm8sIDB4MDAwRkYwMDAsIDQgKiBrUHJvYmVMZW5ndGgpOworICBFWFBF
Q1RfRVEoaW5mby5tYXhfcHJvYmVfbGVuZ3RoLmxvYWQoKSwgNik7CisgIEVYUEVDVF9FUShpbmZv
Lmhhc2hlc19iaXR3aXNlX2FuZC5sb2FkKCksIDB4MDAwMEYwMDApOworICBFWFBFQ1RfRVEoaW5m
by5oYXNoZXNfYml0d2lzZV9vci5sb2FkKCksIDB4MDAwRkZGMDApOworICBSZWNvcmRJbnNlcnRT
bG93KCZpbmZvLCAweDAwRkYwMDAwLCAxMiAqIGtQcm9iZUxlbmd0aCk7CisgIEVYUEVDVF9FUShp
bmZvLm1heF9wcm9iZV9sZW5ndGgubG9hZCgpLCAxMik7CisgIEVYUEVDVF9FUShpbmZvLmhhc2hl
c19iaXR3aXNlX2FuZC5sb2FkKCksIDB4MDAwMDAwMDApOworICBFWFBFQ1RfRVEoaW5mby5oYXNo
ZXNfYml0d2lzZV9vci5sb2FkKCksIDB4MDBGRkZGMDApOworfQorCitURVNUKEhhc2h0YWJsZXpJ
bmZvVGVzdCwgUmVjb3JkRXJhc2UpIHsKKyAgSGFzaHRhYmxlekluZm8gaW5mbzsKKyAgYWJzbDo6
TXV0ZXhMb2NrIGwoJmluZm8uaW5pdF9tdSk7CisgIGluZm8uUHJlcGFyZUZvclNhbXBsaW5nKCk7
CisgIEVYUEVDVF9FUShpbmZvLm51bV9lcmFzZXMubG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGlu
Zm8uc2l6ZS5sb2FkKCksIDApOworICBSZWNvcmRJbnNlcnRTbG93KCZpbmZvLCAweDAwMDBGRjAw
LCA2ICoga1Byb2JlTGVuZ3RoKTsKKyAgRVhQRUNUX0VRKGluZm8uc2l6ZS5sb2FkKCksIDEpOwor
ICBSZWNvcmRFcmFzZVNsb3coJmluZm8pOworICBFWFBFQ1RfRVEoaW5mby5zaXplLmxvYWQoKSwg
MCk7CisgIEVYUEVDVF9FUShpbmZvLm51bV9lcmFzZXMubG9hZCgpLCAxKTsKK30KKworVEVTVChI
YXNodGFibGV6SW5mb1Rlc3QsIFJlY29yZFJlaGFzaCkgeworICBIYXNodGFibGV6SW5mbyBpbmZv
OworICBhYnNsOjpNdXRleExvY2sgbCgmaW5mby5pbml0X211KTsKKyAgaW5mby5QcmVwYXJlRm9y
U2FtcGxpbmcoKTsKKyAgUmVjb3JkSW5zZXJ0U2xvdygmaW5mbywgMHgxLCAwKTsKKyAgUmVjb3Jk
SW5zZXJ0U2xvdygmaW5mbywgMHgyLCBrUHJvYmVMZW5ndGgpOworICBSZWNvcmRJbnNlcnRTbG93
KCZpbmZvLCAweDQsIGtQcm9iZUxlbmd0aCk7CisgIFJlY29yZEluc2VydFNsb3coJmluZm8sIDB4
OCwgMiAqIGtQcm9iZUxlbmd0aCk7CisgIEVYUEVDVF9FUShpbmZvLnNpemUubG9hZCgpLCA0KTsK
KyAgRVhQRUNUX0VRKGluZm8udG90YWxfcHJvYmVfbGVuZ3RoLmxvYWQoKSwgNCk7CisKKyAgUmVj
b3JkRXJhc2VTbG93KCZpbmZvKTsKKyAgUmVjb3JkRXJhc2VTbG93KCZpbmZvKTsKKyAgRVhQRUNU
X0VRKGluZm8uc2l6ZS5sb2FkKCksIDIpOworICBFWFBFQ1RfRVEoaW5mby50b3RhbF9wcm9iZV9s
ZW5ndGgubG9hZCgpLCA0KTsKKyAgRVhQRUNUX0VRKGluZm8ubnVtX2VyYXNlcy5sb2FkKCksIDIp
OworCisgIFJlY29yZFJlaGFzaFNsb3coJmluZm8sIDMgKiBrUHJvYmVMZW5ndGgpOworICBFWFBF
Q1RfRVEoaW5mby5zaXplLmxvYWQoKSwgMik7CisgIEVYUEVDVF9FUShpbmZvLnRvdGFsX3Byb2Jl
X2xlbmd0aC5sb2FkKCksIDMpOworICBFWFBFQ1RfRVEoaW5mby5udW1fZXJhc2VzLmxvYWQoKSwg
MCk7Cit9CisKK1RFU1QoSGFzaHRhYmxlelNhbXBsZXJUZXN0LCBTbWFsbFNhbXBsZVBhcmFtZXRl
cikgeworICBTZXRIYXNodGFibGV6RW5hYmxlZCh0cnVlKTsKKyAgU2V0SGFzaHRhYmxlelNhbXBs
ZVBhcmFtZXRlcigxMDApOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgaW50NjRfdCBuZXh0X3NhbXBsZSA9IDA7CisgICAgSGFzaHRhYmxlekluZm8qIHNhbXBsZSA9
IFNhbXBsZVNsb3coJm5leHRfc2FtcGxlKTsKKyAgICBFWFBFQ1RfR1QobmV4dF9zYW1wbGUsIDAp
OworICAgIEVYUEVDVF9ORShzYW1wbGUsIG51bGxwdHIpOworICAgIFVuc2FtcGxlU2xvdyhzYW1w
bGUpOworICB9Cit9CisKK1RFU1QoSGFzaHRhYmxlelNhbXBsZXJUZXN0LCBMYXJnZVNhbXBsZVBh
cmFtZXRlcikgeworICBTZXRIYXNodGFibGV6RW5hYmxlZCh0cnVlKTsKKyAgU2V0SGFzaHRhYmxl
elNhbXBsZVBhcmFtZXRlcihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICBpbnQ2NF90IG5leHRfc2Ft
cGxlID0gMDsKKyAgICBIYXNodGFibGV6SW5mbyogc2FtcGxlID0gU2FtcGxlU2xvdygmbmV4dF9z
YW1wbGUpOworICAgIEVYUEVDVF9HVChuZXh0X3NhbXBsZSwgMCk7CisgICAgRVhQRUNUX05FKHNh
bXBsZSwgbnVsbHB0cik7CisgICAgVW5zYW1wbGVTbG93KHNhbXBsZSk7CisgIH0KK30KKworVEVT
VChIYXNodGFibGV6U2FtcGxlclRlc3QsIFNhbXBsZSkgeworICBTZXRIYXNodGFibGV6RW5hYmxl
ZCh0cnVlKTsKKyAgU2V0SGFzaHRhYmxlelNhbXBsZVBhcmFtZXRlcigxMDApOworICBpbnQ2NF90
IG51bV9zYW1wbGVkID0gMDsKKyAgaW50NjRfdCB0b3RhbCA9IDA7CisgIGRvdWJsZSBzYW1wbGVf
cmF0ZSA9IDAuMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICBI
YXNodGFibGV6SW5mb0hhbmRsZSBoID0gU2FtcGxlKCk7CisgICAgKyt0b3RhbDsKKyAgICBpZiAo
SGFzaHRhYmxlekluZm9IYW5kbGVQZWVyOjpJc1NhbXBsZWQoaCkpIHsKKyAgICAgICsrbnVtX3Nh
bXBsZWQ7CisgICAgfQorICAgIHNhbXBsZV9yYXRlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihudW1f
c2FtcGxlZCkgLyB0b3RhbDsKKyAgICBpZiAoMC4wMDUgPCBzYW1wbGVfcmF0ZSAmJiBzYW1wbGVf
cmF0ZSA8IDAuMDE1KSBicmVhazsKKyAgfQorICBFWFBFQ1RfTkVBUihzYW1wbGVfcmF0ZSwgMC4w
MSwgMC4wMDUpOworfQorCitURVNUKEhhc2h0YWJsZXpTYW1wbGVyVGVzdCwgSGFuZGxlKSB7Cisg
IGF1dG8mIHNhbXBsZXIgPSBIYXNodGFibGV6U2FtcGxlcjo6R2xvYmFsKCk7CisgIEhhc2h0YWJs
ZXpJbmZvSGFuZGxlIGgoc2FtcGxlci5SZWdpc3RlcigpKTsKKyAgYXV0byogaW5mbyA9IEhhc2h0
YWJsZXpJbmZvSGFuZGxlUGVlcjo6R2V0SW5mbygmaCk7CisgIGluZm8tPmhhc2hlc19iaXR3aXNl
X2FuZC5zdG9yZSgweDEyMzQ1Njc4LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKworICBi
b29sIGZvdW5kID0gZmFsc2U7CisgIHNhbXBsZXIuSXRlcmF0ZShbJl0oY29uc3QgSGFzaHRhYmxl
ekluZm8mIGgpIHsKKyAgICBpZiAoJmggPT0gaW5mbykgeworICAgICAgRVhQRUNUX0VRKGguaGFz
aGVzX2JpdHdpc2VfYW5kLmxvYWQoKSwgMHgxMjM0NTY3OCk7CisgICAgICBmb3VuZCA9IHRydWU7
CisgICAgfQorICB9KTsKKyAgRVhQRUNUX1RSVUUoZm91bmQpOworCisgIGggPSBIYXNodGFibGV6
SW5mb0hhbmRsZSgpOworICBmb3VuZCA9IGZhbHNlOworICBzYW1wbGVyLkl0ZXJhdGUoWyZdKGNv
bnN0IEhhc2h0YWJsZXpJbmZvJiBoKSB7CisgICAgaWYgKCZoID09IGluZm8pIHsKKyAgICAgIC8v
IHRoaXMgd2lsbCBvbmx5IGhhcHBlbiBpZiBzb21lIG90aGVyIHRocmVhZCBoYXMgcmVzdXJyZWN0
ZWQgdGhlIGluZm8KKyAgICAgIC8vIHRoZSBvbGQgaGFuZGxlIHdhcyB1c2luZy4KKyAgICAgIGlm
IChoLmhhc2hlc19iaXR3aXNlX2FuZC5sb2FkKCkgPT0gMHgxMjM0NTY3OCkgeworICAgICAgICBm
b3VuZCA9IHRydWU7CisgICAgICB9CisgICAgfQorICB9KTsKKyAgRVhQRUNUX0ZBTFNFKGZvdW5k
KTsKK30KKworVEVTVChIYXNodGFibGV6U2FtcGxlclRlc3QsIFJlZ2lzdHJhdGlvbikgeworICBI
YXNodGFibGV6U2FtcGxlciBzYW1wbGVyOworICBhdXRvKiBpbmZvMSA9IFJlZ2lzdGVyKCZzYW1w
bGVyLCAxKTsKKyAgRVhQRUNUX1RIQVQoR2V0U2l6ZXMoJnNhbXBsZXIpLCBVbm9yZGVyZWRFbGVt
ZW50c0FyZSgxKSk7CisKKyAgYXV0byogaW5mbzIgPSBSZWdpc3Rlcigmc2FtcGxlciwgMik7Cisg
IEVYUEVDVF9USEFUKEdldFNpemVzKCZzYW1wbGVyKSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoMSwg
MikpOworICBpbmZvMS0+c2l6ZS5zdG9yZSgzKTsKKyAgRVhQRUNUX1RIQVQoR2V0U2l6ZXMoJnNh
bXBsZXIpLCBVbm9yZGVyZWRFbGVtZW50c0FyZSgzLCAyKSk7CisKKyAgc2FtcGxlci5VbnJlZ2lz
dGVyKGluZm8xKTsKKyAgc2FtcGxlci5VbnJlZ2lzdGVyKGluZm8yKTsKK30KKworVEVTVChIYXNo
dGFibGV6U2FtcGxlclRlc3QsIFVucmVnaXN0cmF0aW9uKSB7CisgIEhhc2h0YWJsZXpTYW1wbGVy
IHNhbXBsZXI7CisgIHN0ZDo6dmVjdG9yPEhhc2h0YWJsZXpJbmZvKj4gaW5mb3M7CisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgaW5mb3MucHVzaF9iYWNrKFJlZ2lzdGVy
KCZzYW1wbGVyLCBpKSk7CisgIH0KKyAgRVhQRUNUX1RIQVQoR2V0U2l6ZXMoJnNhbXBsZXIpLCBV
bm9yZGVyZWRFbGVtZW50c0FyZSgwLCAxLCAyKSk7CisKKyAgc2FtcGxlci5VbnJlZ2lzdGVyKGlu
Zm9zWzFdKTsKKyAgRVhQRUNUX1RIQVQoR2V0U2l6ZXMoJnNhbXBsZXIpLCBVbm9yZGVyZWRFbGVt
ZW50c0FyZSgwLCAyKSk7CisKKyAgaW5mb3MucHVzaF9iYWNrKFJlZ2lzdGVyKCZzYW1wbGVyLCAz
KSk7CisgIGluZm9zLnB1c2hfYmFjayhSZWdpc3Rlcigmc2FtcGxlciwgNCkpOworICBFWFBFQ1Rf
VEhBVChHZXRTaXplcygmc2FtcGxlciksIFVub3JkZXJlZEVsZW1lbnRzQXJlKDAsIDIsIDMsIDQp
KTsKKyAgc2FtcGxlci5VbnJlZ2lzdGVyKGluZm9zWzNdKTsKKyAgRVhQRUNUX1RIQVQoR2V0U2l6
ZXMoJnNhbXBsZXIpLCBVbm9yZGVyZWRFbGVtZW50c0FyZSgwLCAyLCA0KSk7CisKKyAgc2FtcGxl
ci5VbnJlZ2lzdGVyKGluZm9zWzBdKTsKKyAgc2FtcGxlci5VbnJlZ2lzdGVyKGluZm9zWzJdKTsK
KyAgc2FtcGxlci5VbnJlZ2lzdGVyKGluZm9zWzRdKTsKKyAgRVhQRUNUX1RIQVQoR2V0U2l6ZXMo
JnNhbXBsZXIpLCBJc0VtcHR5KCkpOworfQorCitURVNUKEhhc2h0YWJsZXpTYW1wbGVyVGVzdCwg
TXVsdGlUaHJlYWRlZCkgeworICBIYXNodGFibGV6U2FtcGxlciBzYW1wbGVyOworICBOb3RpZmlj
YXRpb24gc3RvcDsKKyAgVGhyZWFkUG9vbCBwb29sKDEwKTsKKworICBmb3IgKGludCBpID0gMDsg
aSA8IDEwOyArK2kpIHsKKyAgICBwb29sLlNjaGVkdWxlKFsmc2FtcGxlciwgJnN0b3BdKCkgewor
ICAgICAgc3RkOjpyYW5kb21fZGV2aWNlIHJkOworICAgICAgc3RkOjptdDE5OTM3IGdlbihyZCgp
KTsKKworICAgICAgc3RkOjp2ZWN0b3I8SGFzaHRhYmxlekluZm8qPiBpbmZvejsKKyAgICAgIHdo
aWxlICghc3RvcC5IYXNCZWVuTm90aWZpZWQoKSkgeworICAgICAgICBpZiAoaW5mb3ouZW1wdHko
KSkgeworICAgICAgICAgIGluZm96LnB1c2hfYmFjayhzYW1wbGVyLlJlZ2lzdGVyKCkpOworICAg
ICAgICB9CisgICAgICAgIHN3aXRjaCAoc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248Pigw
LCAyKShnZW4pKSB7CisgICAgICAgICAgY2FzZSAwOiB7CisgICAgICAgICAgICBpbmZvei5wdXNo
X2JhY2soc2FtcGxlci5SZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IH0KKyAgICAgICAgICBjYXNlIDE6IHsKKyAgICAgICAgICAgIHNpemVfdCBwID0KKyAgICAgICAg
ICAgICAgICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjw+KDAsIGluZm96LnNpemUoKSAt
IDEpKGdlbik7CisgICAgICAgICAgICBIYXNodGFibGV6SW5mbyogaW5mbyA9IGluZm96W3BdOwor
ICAgICAgICAgICAgaW5mb3pbcF0gPSBpbmZvei5iYWNrKCk7CisgICAgICAgICAgICBpbmZvei5w
b3BfYmFjaygpOworICAgICAgICAgICAgc2FtcGxlci5VbnJlZ2lzdGVyKGluZm8pOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgIGNhc2UgMjogeworICAgICAgICAg
ICAgYWJzbDo6RHVyYXRpb24gb2xkZXN0ID0gYWJzbDo6WmVyb0R1cmF0aW9uKCk7CisgICAgICAg
ICAgICBzYW1wbGVyLkl0ZXJhdGUoWyZdKGNvbnN0IEhhc2h0YWJsZXpJbmZvJiBpbmZvKSB7Cisg
ICAgICAgICAgICAgIG9sZGVzdCA9IHN0ZDo6bWF4KG9sZGVzdCwgYWJzbDo6Tm93KCkgLSBpbmZv
LmNyZWF0ZV90aW1lKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgQVNTRVJUX0dFKG9s
ZGVzdCwgYWJzbDo6WmVyb0R1cmF0aW9uKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSk7CisgIH0KKyAgLy8gVGhlIHRocmVhZHMg
d2lsbCBoYW1tZXIgYXdheS4gIEdpdmUgaXQgYSBsaXR0bGUgYml0IG9mIHRpbWUgZm9yIHRzYW4g
dG8KKyAgLy8gc3BvdCBlcnJvcnMuCisgIGFic2w6OlNsZWVwRm9yKGFic2w6OlNlY29uZHMoMykp
OworICBzdG9wLk5vdGlmeSgpOworfQorCitURVNUKEhhc2h0YWJsZXpTYW1wbGVyVGVzdCwgQ2Fs
bGJhY2spIHsKKyAgSGFzaHRhYmxlelNhbXBsZXIgc2FtcGxlcjsKKworICBhdXRvKiBpbmZvMSA9
IFJlZ2lzdGVyKCZzYW1wbGVyLCAxKTsKKyAgYXV0byogaW5mbzIgPSBSZWdpc3Rlcigmc2FtcGxl
ciwgMik7CisKKyAgc3RhdGljIGNvbnN0IEhhc2h0YWJsZXpJbmZvKiBleHBlY3RlZDsKKworICBh
dXRvIGNhbGxiYWNrID0gW10oY29uc3QgSGFzaHRhYmxlekluZm8mIGluZm8pIHsKKyAgICAvLyBX
ZSBjYW4ndCB1c2UgYGluZm9gIG91dHNpZGUgb2YgdGhpcyBjYWxsYmFjayBiZWNhdXNlIHRoZSBv
YmplY3Qgd2lsbCBiZQorICAgIC8vIGRpc3Bvc2VkIGFzIHNvb24gYXMgd2UgcmV0dXJuIGZyb20g
aGVyZS4KKyAgICBFWFBFQ1RfRVEoJmluZm8sIGV4cGVjdGVkKTsKKyAgfTsKKworICAvLyBTZXQg
dGhlIGNhbGxiYWNrLgorICBFWFBFQ1RfRVEoc2FtcGxlci5TZXREaXNwb3NlQ2FsbGJhY2soY2Fs
bGJhY2spLCBudWxscHRyKTsKKyAgZXhwZWN0ZWQgPSBpbmZvMTsKKyAgc2FtcGxlci5VbnJlZ2lz
dGVyKGluZm8xKTsKKworICAvLyBVbnNldCB0aGUgY2FsbGJhY2suCisgIEVYUEVDVF9FUShjYWxs
YmFjaywgc2FtcGxlci5TZXREaXNwb3NlQ2FsbGJhY2sobnVsbHB0cikpOworICBleHBlY3RlZCA9
IG51bGxwdHI7ICAvLyBubyBtb3JlIGNhbGxzLgorICBzYW1wbGVyLlVucmVnaXN0ZXIoaW5mbzIp
OworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJu
YWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvaGF2ZV9zc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXZlX3NzZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40MzQxNDQxOGRiYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXZlX3NzZS5oCkBAIC0wLDAg
KzEsNDkgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8v
IFNoYXJlZCBjb25maWcgcHJvYmluZyBmb3IgU1NFIGluc3RydWN0aW9ucyB1c2VkIGluIFN3aXNz
IHRhYmxlcy4KKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFWRV9TU0VfSF8KKyNk
ZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFWRV9TU0VfSF8KKworI2lmbmRlZiBTV0lT
U1RBQkxFX0hBVkVfU1NFMgorI2lmIGRlZmluZWQoX19TU0UyX18pIHx8ICBcCisgICAgKGRlZmlu
ZWQoX01TQ19WRVIpICYmIFwKKyAgICAgKGRlZmluZWQoX01fWDY0KSB8fCAoZGVmaW5lZChfTV9J
WDg2KSAmJiBfTV9JWDg2X0ZQID49IDIpKSkKKyNkZWZpbmUgU1dJU1NUQUJMRV9IQVZFX1NTRTIg
MQorI2Vsc2UKKyNkZWZpbmUgU1dJU1NUQUJMRV9IQVZFX1NTRTIgMAorI2VuZGlmCisjZW5kaWYK
KworI2lmbmRlZiBTV0lTU1RBQkxFX0hBVkVfU1NTRTMKKyNpZmRlZiBfX1NTU0UzX18KKyNkZWZp
bmUgU1dJU1NUQUJMRV9IQVZFX1NTU0UzIDEKKyNlbHNlCisjZGVmaW5lIFNXSVNTVEFCTEVfSEFW
RV9TU1NFMyAwCisjZW5kaWYKKyNlbmRpZgorCisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTU0UzICYm
ICFTV0lTU1RBQkxFX0hBVkVfU1NFMgorI2Vycm9yICJCYWQgY29uZmlndXJhdGlvbiEiCisjZW5k
aWYKKworI2lmIFNXSVNTVEFCTEVfSEFWRV9TU0UyCisjaW5jbHVkZSA8ZW1taW50cmluLmg+Cisj
ZW5kaWYKKworI2lmIFNXSVNTVEFCTEVfSEFWRV9TU1NFMworI2luY2x1ZGUgPHRtbWludHJpbi5o
PgorI2VuZGlmCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFWRV9TU0Vf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9pbmxpbmVkX3ZlY3Rvci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2lubGluZWRfdmVjdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYxYzRmNmViZmNjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2lubGluZWRfdmVjdG9yLmgKQEAgLTAsMCArMSw4
OTMgQEAKKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVm
IEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0lOTElORURfVkVDVE9SX0lOVEVSTkFMX0hfCisjZGVm
aW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0lOTElORURfVkVDVE9SX0lOVEVSTkFMX0hfCisK
KyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3Ry
aW5nPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxt
ZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3Mu
aCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlLmgi
CisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5
cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9zcGFuLmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBJdGVyYXRvcj4KK3VzaW5nIElzQXRMZWFzdEZvcndhcmRJdGVyYXRvciA9IHN0ZDo6
aXNfY29udmVydGlibGU8CisgICAgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0
b3I+OjppdGVyYXRvcl9jYXRlZ29yeSwKKyAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnPjsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvclR5cGU+Cit1c2luZyBJc01lbWNweU9rID0g
YWJzbDo6Y29uanVuY3Rpb248CisgICAgc3RkOjppc19zYW1lPHN0ZDo6YWxsb2NhdG9yPHR5cGVu
YW1lIEFsbG9jYXRvclR5cGU6OnZhbHVlX3R5cGU+LAorICAgICAgICAgICAgICAgICBBbGxvY2F0
b3JUeXBlPiwKKyAgICBhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPHR5cGVu
YW1lIEFsbG9jYXRvclR5cGU6OnZhbHVlX3R5cGU+LAorICAgIGFic2w6OmlzX3RyaXZpYWxseV9j
b3B5X2Fzc2lnbmFibGU8dHlwZW5hbWUgQWxsb2NhdG9yVHlwZTo6dmFsdWVfdHlwZT4sCisgICAg
YWJzbDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTx0eXBlbmFtZSBBbGxvY2F0b3JUeXBlOjp2
YWx1ZV90eXBlPj47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3JUeXBlLCB0eXBlbmFt
ZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFNpemVUeXBlPgordm9pZCBEZXN0cm95RWxlbWVudHMoQWxs
b2NhdG9yVHlwZSogYWxsb2NfcHRyLCBWYWx1ZVR5cGUqIGRlc3Ryb3lfZmlyc3QsCisgICAgICAg
ICAgICAgICAgICAgICBTaXplVHlwZSBkZXN0cm95X3NpemUpIHsKKyAgdXNpbmcgQWxsb2NhdG9y
VHJhaXRzID0gYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3JUeXBlPjsKKworICBpZiAo
ZGVzdHJveV9maXJzdCAhPSBudWxscHRyKSB7CisgICAgZm9yIChhdXRvIGkgPSBkZXN0cm95X3Np
emU7IGkgIT0gMDspIHsKKyAgICAgIC0taTsKKyAgICAgIEFsbG9jYXRvclRyYWl0czo6ZGVzdHJv
eSgqYWxsb2NfcHRyLCBkZXN0cm95X2ZpcnN0ICsgaSk7CisgICAgfQorCisjaWZuZGVmIE5ERUJV
RworICAgIC8vIE92ZXJ3cml0ZSB1bnVzZWQgbWVtb3J5IHdpdGggYDB4YWJgIHNvIHdlIGNhbiBj
YXRjaCB1bmluaXRpYWxpemVkIHVzYWdlLgorICAgIC8vCisgICAgLy8gQ2FzdCB0byBgdm9pZCpg
IHRvIHRlbGwgdGhlIGNvbXBpbGVyIHRoYXQgd2UgZG9uJ3QgY2FyZSB0aGF0IHdlIG1pZ2h0IGJl
CisgICAgLy8gc2NyaWJibGluZyBvbiBhIHZ0YWJsZSBwb2ludGVyLgorICAgIGF1dG8qIG1lbW9y
eV9wdHIgPSBzdGF0aWNfY2FzdDx2b2lkKj4oZGVzdHJveV9maXJzdCk7CisgICAgYXV0byBtZW1v
cnlfc2l6ZSA9IHNpemVvZihWYWx1ZVR5cGUpICogZGVzdHJveV9zaXplOworICAgIHN0ZDo6bWVt
c2V0KG1lbW9yeV9wdHIsIDB4YWIsIG1lbW9yeV9zaXplKTsKKyNlbmRpZiAgLy8gTkRFQlVHCisg
IH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvclR5cGUsIHR5cGVuYW1lIFZhbHVl
VHlwZSwgdHlwZW5hbWUgVmFsdWVBZGFwdGVyLAorICAgICAgICAgIHR5cGVuYW1lIFNpemVUeXBl
Pgordm9pZCBDb25zdHJ1Y3RFbGVtZW50cyhBbGxvY2F0b3JUeXBlKiBhbGxvY19wdHIsIFZhbHVl
VHlwZSogY29uc3RydWN0X2ZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUFkYXB0
ZXIqIHZhbHVlc19wdHIsIFNpemVUeXBlIGNvbnN0cnVjdF9zaXplKSB7CisgIGZvciAoU2l6ZVR5
cGUgaSA9IDA7IGkgPCBjb25zdHJ1Y3Rfc2l6ZTsgKytpKSB7CisgICAgQUJTTF9JTlRFUk5BTF9U
UlkgeworICAgICAgdmFsdWVzX3B0ci0+Q29uc3RydWN0TmV4dChhbGxvY19wdHIsIGNvbnN0cnVj
dF9maXJzdCArIGkpOworICAgIH0KKyAgICBBQlNMX0lOVEVSTkFMX0NBVENIX0FOWSB7CisgICAg
ICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVzdHJveUVsZW1lbnRzKGFsbG9jX3B0ciwgY29u
c3RydWN0X2ZpcnN0LCBpKTsKKyAgICAgIEFCU0xfSU5URVJOQUxfUkVUSFJPVzsKKyAgICB9Cisg
IH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVBZGFw
dGVyLCB0eXBlbmFtZSBTaXplVHlwZT4KK3ZvaWQgQXNzaWduRWxlbWVudHMoVmFsdWVUeXBlKiBh
c3NpZ25fZmlyc3QsIFZhbHVlQWRhcHRlciogdmFsdWVzX3B0ciwKKyAgICAgICAgICAgICAgICAg
ICAgU2l6ZVR5cGUgYXNzaWduX3NpemUpIHsKKyAgZm9yIChTaXplVHlwZSBpID0gMDsgaSA8IGFz
c2lnbl9zaXplOyArK2kpIHsKKyAgICB2YWx1ZXNfcHRyLT5Bc3NpZ25OZXh0KGFzc2lnbl9maXJz
dCArIGkpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3JUeXBlPgorc3Ry
dWN0IFN0b3JhZ2VWaWV3IHsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIEFsbG9jYXRvclR5
cGU6OnBvaW50ZXI7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6
OnNpemVfdHlwZTsKKworICBwb2ludGVyIGRhdGE7CisgIHNpemVfdHlwZSBzaXplOworICBzaXpl
X3R5cGUgY2FwYWNpdHk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yVHlwZSwg
dHlwZW5hbWUgSXRlcmF0b3I+CitjbGFzcyBJdGVyYXRvclZhbHVlQWRhcHRlciB7CisgIHVzaW5n
IHBvaW50ZXIgPSB0eXBlbmFtZSBBbGxvY2F0b3JUeXBlOjpwb2ludGVyOworICB1c2luZyBBbGxv
Y2F0b3JUcmFpdHMgPSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvclR5cGU+OworCisg
cHVibGljOgorICBleHBsaWNpdCBJdGVyYXRvclZhbHVlQWRhcHRlcihjb25zdCBJdGVyYXRvciYg
aXQpIDogaXRfKGl0KSB7fQorCisgIHZvaWQgQ29uc3RydWN0TmV4dChBbGxvY2F0b3JUeXBlKiBh
bGxvY19wdHIsIHBvaW50ZXIgY29uc3RydWN0X2F0KSB7CisgICAgQWxsb2NhdG9yVHJhaXRzOjpj
b25zdHJ1Y3QoKmFsbG9jX3B0ciwgY29uc3RydWN0X2F0LCAqaXRfKTsKKyAgICArK2l0XzsKKyAg
fQorCisgIHZvaWQgQXNzaWduTmV4dChwb2ludGVyIGFzc2lnbl9hdCkgeworICAgICphc3NpZ25f
YXQgPSAqaXRfOworICAgICsraXRfOworICB9CisKKyBwcml2YXRlOgorICBJdGVyYXRvciBpdF87
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yVHlwZT4KK2NsYXNzIENvcHlWYWx1
ZUFkYXB0ZXIgeworICB1c2luZyBwb2ludGVyID0gdHlwZW5hbWUgQWxsb2NhdG9yVHlwZTo6cG9p
bnRlcjsKKyAgdXNpbmcgY29uc3RfcG9pbnRlciA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6OmNv
bnN0X3BvaW50ZXI7CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IHR5cGVuYW1lIEFsbG9jYXRv
clR5cGU6OmNvbnN0X3JlZmVyZW5jZTsKKyAgdXNpbmcgQWxsb2NhdG9yVHJhaXRzID0gYWJzbDo6
YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3JUeXBlPjsKKworIHB1YmxpYzoKKyAgZXhwbGljaXQg
Q29weVZhbHVlQWRhcHRlcihjb25zdF9yZWZlcmVuY2UgdikgOiBwdHJfKHN0ZDo6YWRkcmVzc29m
KHYpKSB7fQorCisgIHZvaWQgQ29uc3RydWN0TmV4dChBbGxvY2F0b3JUeXBlKiBhbGxvY19wdHIs
IHBvaW50ZXIgY29uc3RydWN0X2F0KSB7CisgICAgQWxsb2NhdG9yVHJhaXRzOjpjb25zdHJ1Y3Qo
KmFsbG9jX3B0ciwgY29uc3RydWN0X2F0LCAqcHRyXyk7CisgIH0KKworICB2b2lkIEFzc2lnbk5l
eHQocG9pbnRlciBhc3NpZ25fYXQpIHsgKmFzc2lnbl9hdCA9ICpwdHJfOyB9CisKKyBwcml2YXRl
OgorICBjb25zdF9wb2ludGVyIHB0cl87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2Nh
dG9yVHlwZT4KK2NsYXNzIERlZmF1bHRWYWx1ZUFkYXB0ZXIgeworICB1c2luZyBwb2ludGVyID0g
dHlwZW5hbWUgQWxsb2NhdG9yVHlwZTo6cG9pbnRlcjsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5
cGVuYW1lIEFsbG9jYXRvclR5cGU6OnZhbHVlX3R5cGU7CisgIHVzaW5nIEFsbG9jYXRvclRyYWl0
cyA9IGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yVHlwZT47CisKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IERlZmF1bHRWYWx1ZUFkYXB0ZXIoKSB7fQorCisgIHZvaWQgQ29uc3RydWN0TmV4
dChBbGxvY2F0b3JUeXBlKiBhbGxvY19wdHIsIHBvaW50ZXIgY29uc3RydWN0X2F0KSB7CisgICAg
QWxsb2NhdG9yVHJhaXRzOjpjb25zdHJ1Y3QoKmFsbG9jX3B0ciwgY29uc3RydWN0X2F0KTsKKyAg
fQorCisgIHZvaWQgQXNzaWduTmV4dChwb2ludGVyIGFzc2lnbl9hdCkgeyAqYXNzaWduX2F0ID0g
dmFsdWVfdHlwZSgpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yVHlwZT4K
K2NsYXNzIEFsbG9jYXRpb25UcmFuc2FjdGlvbiB7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBl
bmFtZSBBbGxvY2F0b3JUeXBlOjp2YWx1ZV90eXBlOworICB1c2luZyBwb2ludGVyID0gdHlwZW5h
bWUgQWxsb2NhdG9yVHlwZTo6cG9pbnRlcjsKKyAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUg
QWxsb2NhdG9yVHlwZTo6c2l6ZV90eXBlOworICB1c2luZyBBbGxvY2F0b3JUcmFpdHMgPSBhYnNs
OjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvclR5cGU+OworCisgcHVibGljOgorICBleHBsaWNp
dCBBbGxvY2F0aW9uVHJhbnNhY3Rpb24oQWxsb2NhdG9yVHlwZSogYWxsb2NfcHRyKQorICAgICAg
OiBhbGxvY19kYXRhXygqYWxsb2NfcHRyLCBudWxscHRyKSB7fQorCisgIH5BbGxvY2F0aW9uVHJh
bnNhY3Rpb24oKSB7CisgICAgaWYgKERpZEFsbG9jYXRlKCkpIHsKKyAgICAgIEFsbG9jYXRvclRy
YWl0czo6ZGVhbGxvY2F0ZShHZXRBbGxvY2F0b3IoKSwgR2V0RGF0YSgpLCBHZXRDYXBhY2l0eSgp
KTsKKyAgICB9CisgIH0KKworICBBbGxvY2F0aW9uVHJhbnNhY3Rpb24oY29uc3QgQWxsb2NhdGlv
blRyYW5zYWN0aW9uJikgPSBkZWxldGU7CisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEFsbG9jYXRp
b25UcmFuc2FjdGlvbiYpID0gZGVsZXRlOworCisgIEFsbG9jYXRvclR5cGUmIEdldEFsbG9jYXRv
cigpIHsgcmV0dXJuIGFsbG9jX2RhdGFfLnRlbXBsYXRlIGdldDwwPigpOyB9CisgIHBvaW50ZXIm
IEdldERhdGEoKSB7IHJldHVybiBhbGxvY19kYXRhXy50ZW1wbGF0ZSBnZXQ8MT4oKTsgfQorICBz
aXplX3R5cGUmIEdldENhcGFjaXR5KCkgeyByZXR1cm4gY2FwYWNpdHlfOyB9CisKKyAgYm9vbCBE
aWRBbGxvY2F0ZSgpIHsgcmV0dXJuIEdldERhdGEoKSAhPSBudWxscHRyOyB9CisgIHBvaW50ZXIg
QWxsb2NhdGUoc2l6ZV90eXBlIGNhcGFjaXR5KSB7CisgICAgR2V0RGF0YSgpID0gQWxsb2NhdG9y
VHJhaXRzOjphbGxvY2F0ZShHZXRBbGxvY2F0b3IoKSwgY2FwYWNpdHkpOworICAgIEdldENhcGFj
aXR5KCkgPSBjYXBhY2l0eTsKKyAgICByZXR1cm4gR2V0RGF0YSgpOworICB9CisKKyBwcml2YXRl
OgorICBjb250YWluZXJfaW50ZXJuYWw6OkNvbXByZXNzZWRUdXBsZTxBbGxvY2F0b3JUeXBlLCBw
b2ludGVyPiBhbGxvY19kYXRhXzsKKyAgc2l6ZV90eXBlIGNhcGFjaXR5XyA9IDA7Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yVHlwZT4KK2NsYXNzIENvbnN0cnVjdGlvblRyYW5z
YWN0aW9uIHsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6OnBvaW50
ZXI7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6OnNpemVfdHlw
ZTsKKworIHB1YmxpYzoKKyAgZXhwbGljaXQgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24oQWxsb2Nh
dG9yVHlwZSogYWxsb2NfcHRyKQorICAgICAgOiBhbGxvY19kYXRhXygqYWxsb2NfcHRyLCBudWxs
cHRyKSB7fQorCisgIH5Db25zdHJ1Y3Rpb25UcmFuc2FjdGlvbigpIHsKKyAgICBpZiAoRGlkQ29u
c3RydWN0KCkpIHsKKyAgICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpEZXN0cm95RWxlbWVu
dHMoc3RkOjphZGRyZXNzb2YoR2V0QWxsb2NhdG9yKCkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZXREYXRhKCksIEdldFNpemUoKSk7CisgICAgfQor
ICB9CisKKyAgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24oY29uc3QgQ29uc3RydWN0aW9uVHJhbnNh
Y3Rpb24mKSA9IGRlbGV0ZTsKKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ29uc3RydWN0aW9uVHJh
bnNhY3Rpb24mKSA9IGRlbGV0ZTsKKworICBBbGxvY2F0b3JUeXBlJiBHZXRBbGxvY2F0b3IoKSB7
IHJldHVybiBhbGxvY19kYXRhXy50ZW1wbGF0ZSBnZXQ8MD4oKTsgfQorICBwb2ludGVyJiBHZXRE
YXRhKCkgeyByZXR1cm4gYWxsb2NfZGF0YV8udGVtcGxhdGUgZ2V0PDE+KCk7IH0KKyAgc2l6ZV90
eXBlJiBHZXRTaXplKCkgeyByZXR1cm4gc2l6ZV87IH0KKworICBib29sIERpZENvbnN0cnVjdCgp
IHsgcmV0dXJuIEdldERhdGEoKSAhPSBudWxscHRyOyB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBW
YWx1ZUFkYXB0ZXI+CisgIHZvaWQgQ29uc3RydWN0KHBvaW50ZXIgZGF0YSwgVmFsdWVBZGFwdGVy
KiB2YWx1ZXNfcHRyLCBzaXplX3R5cGUgc2l6ZSkgeworICAgIGlubGluZWRfdmVjdG9yX2ludGVy
bmFsOjpDb25zdHJ1Y3RFbGVtZW50cyhzdGQ6OmFkZHJlc3NvZihHZXRBbGxvY2F0b3IoKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIHZhbHVl
c19wdHIsIHNpemUpOworICAgIEdldERhdGEoKSA9IGRhdGE7CisgICAgR2V0U2l6ZSgpID0gc2l6
ZTsKKyAgfQorICB2b2lkIENvbW1pdCgpIHsKKyAgICBHZXREYXRhKCkgPSBudWxscHRyOworICAg
IEdldFNpemUoKSA9IDA7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnRhaW5lcl9pbnRlcm5hbDo6
Q29tcHJlc3NlZFR1cGxlPEFsbG9jYXRvclR5cGUsIHBvaW50ZXI+IGFsbG9jX2RhdGFfOworICBz
aXplX3R5cGUgc2l6ZV8gPSAwOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBO
LCB0eXBlbmFtZSBBPgorY2xhc3MgU3RvcmFnZSB7CisgcHVibGljOgorICB1c2luZyBhbGxvY2F0
b3JfdHlwZSA9IEE7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlw
ZTo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIGFsbG9jYXRvcl90eXBl
Ojpwb2ludGVyOworICB1c2luZyBjb25zdF9wb2ludGVyID0gdHlwZW5hbWUgYWxsb2NhdG9yX3R5
cGU6OmNvbnN0X3BvaW50ZXI7CisgIHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVuYW1lIGFsbG9jYXRv
cl90eXBlOjpyZWZlcmVuY2U7CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IHR5cGVuYW1lIGFs
bG9jYXRvcl90eXBlOjpjb25zdF9yZWZlcmVuY2U7CisgIHVzaW5nIHJ2YWx1ZV9yZWZlcmVuY2Ug
PSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6dmFsdWVfdHlwZSYmOworICB1c2luZyBzaXplX3R5
cGUgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6c2l6ZV90eXBlOworICB1c2luZyBkaWZmZXJl
bmNlX3R5cGUgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6ZGlmZmVyZW5jZV90eXBlOworICB1
c2luZyBpdGVyYXRvciA9IHBvaW50ZXI7CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gY29uc3Rf
cG9pbnRlcjsKKyAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRv
cjxpdGVyYXRvcj47CisgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVy
c2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+OworICB1c2luZyBNb3ZlSXRlcmF0b3IgPSBzdGQ6
Om1vdmVfaXRlcmF0b3I8aXRlcmF0b3I+OworICB1c2luZyBBbGxvY2F0b3JUcmFpdHMgPSBhYnNs
OjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcl90eXBlPjsKKyAgdXNpbmcgSXNNZW1jcHlPayA9
IGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpJc01lbWNweU9rPGFsbG9jYXRvcl90eXBlPjsKKwor
ICB1c2luZyBTdG9yYWdlVmlldyA9IGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpTdG9yYWdlVmll
dzxhbGxvY2F0b3JfdHlwZT47CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgorICB1
c2luZyBJdGVyYXRvclZhbHVlQWRhcHRlciA9CisgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5h
bDo6SXRlcmF0b3JWYWx1ZUFkYXB0ZXI8YWxsb2NhdG9yX3R5cGUsIEl0ZXJhdG9yPjsKKyAgdXNp
bmcgQ29weVZhbHVlQWRhcHRlciA9CisgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6Q29w
eVZhbHVlQWRhcHRlcjxhbGxvY2F0b3JfdHlwZT47CisgIHVzaW5nIERlZmF1bHRWYWx1ZUFkYXB0
ZXIgPQorICAgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkRlZmF1bHRWYWx1ZUFkYXB0ZXI8
YWxsb2NhdG9yX3R5cGU+OworCisgIHVzaW5nIEFsbG9jYXRpb25UcmFuc2FjdGlvbiA9CisgICAg
ICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6QWxsb2NhdGlvblRyYW5zYWN0aW9uPGFsbG9jYXRv
cl90eXBlPjsKKyAgdXNpbmcgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24gPQorICAgICAgaW5saW5l
ZF92ZWN0b3JfaW50ZXJuYWw6OkNvbnN0cnVjdGlvblRyYW5zYWN0aW9uPGFsbG9jYXRvcl90eXBl
PjsKKworICBzdGF0aWMgc2l6ZV90eXBlIE5leHRDYXBhY2l0eShzaXplX3R5cGUgY3VycmVudF9j
YXBhY2l0eSkgeworICAgIHJldHVybiBjdXJyZW50X2NhcGFjaXR5ICogMjsKKyAgfQorCisgIHN0
YXRpYyBzaXplX3R5cGUgQ29tcHV0ZUNhcGFjaXR5KHNpemVfdHlwZSBjdXJyZW50X2NhcGFjaXR5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgcmVxdWVzdGVk
X2NhcGFjaXR5KSB7CisgICAgcmV0dXJuIChzdGQ6Om1heCkoTmV4dENhcGFjaXR5KGN1cnJlbnRf
Y2FwYWNpdHkpLCByZXF1ZXN0ZWRfY2FwYWNpdHkpOworICB9CisKKyAgLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgIC8vIFN0b3JhZ2UgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9yCisgIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisgIFN0b3JhZ2UoKSA6IG1ldGFkYXRhXygpIHt9CisKKyAgZXhw
bGljaXQgU3RvcmFnZShjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IG1ldGFk
YXRhXyhhbGxvYywgLyogZW1wdHkgYW5kIGlubGluZWQgKi8gMCkge30KKworICB+U3RvcmFnZSgp
IHsKKyAgICBwb2ludGVyIGRhdGEgPSBHZXRJc0FsbG9jYXRlZCgpID8gR2V0QWxsb2NhdGVkRGF0
YSgpIDogR2V0SW5saW5lZERhdGEoKTsKKyAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVz
dHJveUVsZW1lbnRzKEdldEFsbG9jUHRyKCksIGRhdGEsIEdldFNpemUoKSk7CisgICAgRGVhbGxv
Y2F0ZUlmQWxsb2NhdGVkKCk7CisgIH0KKworICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgLy8g
U3RvcmFnZSBNZW1iZXIgQWNjZXNzb3JzCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIHNp
emVfdHlwZSYgR2V0U2l6ZUFuZElzQWxsb2NhdGVkKCkgeyByZXR1cm4gbWV0YWRhdGFfLnRlbXBs
YXRlIGdldDwxPigpOyB9CisKKyAgY29uc3Qgc2l6ZV90eXBlJiBHZXRTaXplQW5kSXNBbGxvY2F0
ZWQoKSBjb25zdCB7CisgICAgcmV0dXJuIG1ldGFkYXRhXy50ZW1wbGF0ZSBnZXQ8MT4oKTsKKyAg
fQorCisgIHNpemVfdHlwZSBHZXRTaXplKCkgY29uc3QgeyByZXR1cm4gR2V0U2l6ZUFuZElzQWxs
b2NhdGVkKCkgPj4gMTsgfQorCisgIGJvb2wgR2V0SXNBbGxvY2F0ZWQoKSBjb25zdCB7IHJldHVy
biBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSAmIDE7IH0KKworICBwb2ludGVyIEdldEFsbG9jYXRl
ZERhdGEoKSB7IHJldHVybiBkYXRhXy5hbGxvY2F0ZWQuYWxsb2NhdGVkX2RhdGE7IH0KKworICBj
b25zdF9wb2ludGVyIEdldEFsbG9jYXRlZERhdGEoKSBjb25zdCB7CisgICAgcmV0dXJuIGRhdGFf
LmFsbG9jYXRlZC5hbGxvY2F0ZWRfZGF0YTsKKyAgfQorCisgIHBvaW50ZXIgR2V0SW5saW5lZERh
dGEoKSB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8cG9pbnRlcj4oCisgICAgICAgIHN0
ZDo6YWRkcmVzc29mKGRhdGFfLmlubGluZWQuaW5saW5lZF9kYXRhWzBdKSk7CisgIH0KKworICBj
b25zdF9wb2ludGVyIEdldElubGluZWREYXRhKCkgY29uc3QgeworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0X3BvaW50ZXI+KAorICAgICAgICBzdGQ6OmFkZHJlc3NvZihkYXRhXy5p
bmxpbmVkLmlubGluZWRfZGF0YVswXSkpOworICB9CisKKyAgc2l6ZV90eXBlIEdldEFsbG9jYXRl
ZENhcGFjaXR5KCkgY29uc3QgeworICAgIHJldHVybiBkYXRhXy5hbGxvY2F0ZWQuYWxsb2NhdGVk
X2NhcGFjaXR5OworICB9CisKKyAgc2l6ZV90eXBlIEdldElubGluZWRDYXBhY2l0eSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oTik7IH0KKworICBTdG9yYWdlVmlldyBN
YWtlU3RvcmFnZVZpZXcoKSB7CisgICAgcmV0dXJuIEdldElzQWxsb2NhdGVkKCkKKyAgICAgICAg
ICAgICAgID8gU3RvcmFnZVZpZXd7R2V0QWxsb2NhdGVkRGF0YSgpLCBHZXRTaXplKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdldEFsbG9jYXRlZENhcGFjaXR5KCl9CisgICAgICAg
ICAgICAgICA6IFN0b3JhZ2VWaWV3e0dldElubGluZWREYXRhKCksIEdldFNpemUoKSwgR2V0SW5s
aW5lZENhcGFjaXR5KCl9OworICB9CisKKyAgYWxsb2NhdG9yX3R5cGUqIEdldEFsbG9jUHRyKCkg
eworICAgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihtZXRhZGF0YV8udGVtcGxhdGUgZ2V0PDA+KCkp
OworICB9CisKKyAgY29uc3QgYWxsb2NhdG9yX3R5cGUqIEdldEFsbG9jUHRyKCkgY29uc3Qgewor
ICAgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihtZXRhZGF0YV8udGVtcGxhdGUgZ2V0PDA+KCkpOwor
ICB9CisKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC8vIFN0b3JhZ2UgTWVtYmVyIE11dGF0
b3JzCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1
ZUFkYXB0ZXI+CisgIHZvaWQgSW5pdGlhbGl6ZShWYWx1ZUFkYXB0ZXIgdmFsdWVzLCBzaXplX3R5
cGUgbmV3X3NpemUpOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZUFkYXB0ZXI+CisgIHZv
aWQgQXNzaWduKFZhbHVlQWRhcHRlciB2YWx1ZXMsIHNpemVfdHlwZSBuZXdfc2l6ZSk7CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlQWRhcHRlcj4KKyAgdm9pZCBSZXNpemUoVmFsdWVBZGFw
dGVyIHZhbHVlcywgc2l6ZV90eXBlIG5ld19zaXplKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VmFsdWVBZGFwdGVyPgorICBpdGVyYXRvciBJbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zLCBWYWx1
ZUFkYXB0ZXIgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIGluc2VydF9jb3Vu
dCk7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIHJlZmVyZW5jZSBFbXBsYWNl
QmFjayhBcmdzJiYuLi4gYXJncyk7CisKKyAgaXRlcmF0b3IgRXJhc2UoY29uc3RfaXRlcmF0b3Ig
ZnJvbSwgY29uc3RfaXRlcmF0b3IgdG8pOworCisgIHZvaWQgUmVzZXJ2ZShzaXplX3R5cGUgcmVx
dWVzdGVkX2NhcGFjaXR5KTsKKworICB2b2lkIFNocmlua1RvRml0KCk7CisKKyAgdm9pZCBTd2Fw
KFN0b3JhZ2UqIG90aGVyX3N0b3JhZ2VfcHRyKTsKKworICB2b2lkIFNldElzQWxsb2NhdGVkKCkg
eworICAgIEdldFNpemVBbmRJc0FsbG9jYXRlZCgpIHw9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4o
MSk7CisgIH0KKworICB2b2lkIFVuc2V0SXNBbGxvY2F0ZWQoKSB7CisgICAgR2V0U2l6ZUFuZElz
QWxsb2NhdGVkKCkgJj0gKChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdHlwZT46Om1heCkoKSAt
IDEpOworICB9CisKKyAgdm9pZCBTZXRTaXplKHNpemVfdHlwZSBzaXplKSB7CisgICAgR2V0U2l6
ZUFuZElzQWxsb2NhdGVkKCkgPQorICAgICAgICAoc2l6ZSA8PCAxKSB8IHN0YXRpY19jYXN0PHNp
emVfdHlwZT4oR2V0SXNBbGxvY2F0ZWQoKSk7CisgIH0KKworICB2b2lkIFNldEFsbG9jYXRlZFNp
emUoc2l6ZV90eXBlIHNpemUpIHsKKyAgICBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSA9IChzaXpl
IDw8IDEpIHwgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigxKTsKKyAgfQorCisgIHZvaWQgU2V0SW5s
aW5lZFNpemUoc2l6ZV90eXBlIHNpemUpIHsKKyAgICBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSA9
IHNpemUgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigxKTsKKyAgfQorCisgIHZvaWQgQWRkU2l6
ZShzaXplX3R5cGUgY291bnQpIHsKKyAgICBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSArPSBjb3Vu
dCA8PCBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KDEpOworICB9CisKKyAgdm9pZCBTdWJ0cmFjdFNp
emUoc2l6ZV90eXBlIGNvdW50KSB7CisgICAgYXNzZXJ0KGNvdW50IDw9IEdldFNpemUoKSk7CisK
KyAgICBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSAtPSBjb3VudCA8PCBzdGF0aWNfY2FzdDxzaXpl
X3R5cGU+KDEpOworICB9CisKKyAgdm9pZCBTZXRBbGxvY2F0ZWREYXRhKHBvaW50ZXIgZGF0YSwg
c2l6ZV90eXBlIGNhcGFjaXR5KSB7CisgICAgZGF0YV8uYWxsb2NhdGVkLmFsbG9jYXRlZF9kYXRh
ID0gZGF0YTsKKyAgICBkYXRhXy5hbGxvY2F0ZWQuYWxsb2NhdGVkX2NhcGFjaXR5ID0gY2FwYWNp
dHk7CisgIH0KKworICB2b2lkIEFjcXVpcmVBbGxvY2F0ZWREYXRhKEFsbG9jYXRpb25UcmFuc2Fj
dGlvbiogYWxsb2NhdGlvbl90eF9wdHIpIHsKKyAgICBTZXRBbGxvY2F0ZWREYXRhKGFsbG9jYXRp
b25fdHhfcHRyLT5HZXREYXRhKCksCisgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uX3R4
X3B0ci0+R2V0Q2FwYWNpdHkoKSk7CisgICAgYWxsb2NhdGlvbl90eF9wdHItPkdldERhdGEoKSA9
IG51bGxwdHI7CisgICAgYWxsb2NhdGlvbl90eF9wdHItPkdldENhcGFjaXR5KCkgPSAwOworICB9
CisKKyAgdm9pZCBNZW1jcHlGcm9tKGNvbnN0IFN0b3JhZ2UmIG90aGVyX3N0b3JhZ2UpIHsKKyAg
ICBhc3NlcnQoSXNNZW1jcHlPazo6dmFsdWUgfHwgb3RoZXJfc3RvcmFnZS5HZXRJc0FsbG9jYXRl
ZCgpKTsKKworICAgIEdldFNpemVBbmRJc0FsbG9jYXRlZCgpID0gb3RoZXJfc3RvcmFnZS5HZXRT
aXplQW5kSXNBbGxvY2F0ZWQoKTsKKyAgICBkYXRhXyA9IG90aGVyX3N0b3JhZ2UuZGF0YV87Cisg
IH0KKworICB2b2lkIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpIHsKKyAgICBpZiAoR2V0SXNBbGxv
Y2F0ZWQoKSkgeworICAgICAgQWxsb2NhdG9yVHJhaXRzOjpkZWFsbG9jYXRlKCpHZXRBbGxvY1B0
cigpLCBHZXRBbGxvY2F0ZWREYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2V0QWxsb2NhdGVkQ2FwYWNpdHkoKSk7CisgICAgfQorICB9CisKKyBwcml2YXRlOgorICB1
c2luZyBNZXRhZGF0YSA9CisgICAgICBjb250YWluZXJfaW50ZXJuYWw6OkNvbXByZXNzZWRUdXBs
ZTxhbGxvY2F0b3JfdHlwZSwgc2l6ZV90eXBlPjsKKworICBzdHJ1Y3QgQWxsb2NhdGVkIHsKKyAg
ICBwb2ludGVyIGFsbG9jYXRlZF9kYXRhOworICAgIHNpemVfdHlwZSBhbGxvY2F0ZWRfY2FwYWNp
dHk7CisgIH07CisKKyAgc3RydWN0IElubGluZWQgeworICAgIHVzaW5nIElubGluZWREYXRhRWxl
bWVudCA9CisgICAgICAgIGFic2w6OmFsaWduZWRfc3RvcmFnZV90PHNpemVvZih2YWx1ZV90eXBl
KSwgYWxpZ25vZih2YWx1ZV90eXBlKT47CisgICAgSW5saW5lZERhdGFFbGVtZW50IGlubGluZWRf
ZGF0YVtOXTsKKyAgfTsKKworICB1bmlvbiBEYXRhIHsKKyAgICBBbGxvY2F0ZWQgYWxsb2NhdGVk
OworICAgIElubGluZWQgaW5saW5lZDsKKyAgfTsKKworICBNZXRhZGF0YSBtZXRhZGF0YV87Cisg
IERhdGEgZGF0YV87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVu
YW1lIEE+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWVBZGFwdGVyPgorYXV0byBTdG9yYWdlPFQs
IE4sIEE+OjpJbml0aWFsaXplKFZhbHVlQWRhcHRlciB2YWx1ZXMsIHNpemVfdHlwZSBuZXdfc2l6
ZSkKKyAgICAtPiB2b2lkIHsKKyAgLy8gT25seSBjYWxsYWJsZSBmcm9tIGNvbnN0cnVjdG9ycyEK
KyAgYXNzZXJ0KCFHZXRJc0FsbG9jYXRlZCgpKTsKKyAgYXNzZXJ0KEdldFNpemUoKSA9PSAwKTsK
KworICBwb2ludGVyIGNvbnN0cnVjdF9kYXRhOworCisgIGlmIChuZXdfc2l6ZSA+IEdldElubGlu
ZWRDYXBhY2l0eSgpKSB7CisgICAgLy8gQmVjYXVzZSB0aGlzIGlzIG9ubHkgY2FsbGVkIGZyb20g
dGhlIGBJbmxpbmVkVmVjdG9yYCBjb25zdHJ1Y3RvcnMsIGl0J3MKKyAgICAvLyBzYWZlIHRvIHRh
a2Ugb24gdGhlIGFsbG9jYXRpb24gd2l0aCBzaXplIGAwYC4gSWYgYENvbnN0cnVjdEVsZW1lbnRz
KC4uLilgCisgICAgLy8gdGhyb3dzLCBkZWFsbG9jYXRpb24gd2lsbCBiZSBhdXRvbWF0aWNhbGx5
IGhhbmRsZWQgYnkgYH5TdG9yYWdlKClgLgorICAgIHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBD
b21wdXRlQ2FwYWNpdHkoR2V0SW5saW5lZENhcGFjaXR5KCksIG5ld19zaXplKTsKKyAgICBwb2lu
dGVyIG5ld19kYXRhID0gQWxsb2NhdG9yVHJhaXRzOjphbGxvY2F0ZSgqR2V0QWxsb2NQdHIoKSwg
bmV3X2NhcGFjaXR5KTsKKworICAgIFNldEFsbG9jYXRlZERhdGEobmV3X2RhdGEsIG5ld19jYXBh
Y2l0eSk7CisgICAgU2V0SXNBbGxvY2F0ZWQoKTsKKworICAgIGNvbnN0cnVjdF9kYXRhID0gbmV3
X2RhdGE7CisgIH0gZWxzZSB7CisgICAgY29uc3RydWN0X2RhdGEgPSBHZXRJbmxpbmVkRGF0YSgp
OworICB9CisKKyAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkNvbnN0cnVjdEVsZW1lbnRzKEdl
dEFsbG9jUHRyKCksIGNvbnN0cnVjdF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnZhbHVlcywgbmV3X3NpemUpOworCisgIC8vIFNpbmNlIHRoZSBp
bml0aWFsIHNpemUgd2FzIGd1YXJhbnRlZWQgdG8gYmUgYDBgIGFuZCB0aGUgYWxsb2NhdGVkIGJp
dCBpcworICAvLyBhbHJlYWR5IGNvcnJlY3QgZm9yIGVpdGhlciBjYXNlLCAqYWRkaW5nKiBgbmV3
X3NpemVgIGdpdmVzIHVzIHRoZSBjb3JyZWN0CisgIC8vIHJlc3VsdCBmYXN0ZXIgdGhhbiBzZXR0
aW5nIGl0IGRpcmVjdGx5LgorICBBZGRTaXplKG5ld19zaXplKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgordGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVl
QWRhcHRlcj4KK2F1dG8gU3RvcmFnZTxULCBOLCBBPjo6QXNzaWduKFZhbHVlQWRhcHRlciB2YWx1
ZXMsIHNpemVfdHlwZSBuZXdfc2l6ZSkgLT4gdm9pZCB7CisgIFN0b3JhZ2VWaWV3IHN0b3JhZ2Vf
dmlldyA9IE1ha2VTdG9yYWdlVmlldygpOworCisgIEFsbG9jYXRpb25UcmFuc2FjdGlvbiBhbGxv
Y2F0aW9uX3R4KEdldEFsbG9jUHRyKCkpOworCisgIGFic2w6OlNwYW48dmFsdWVfdHlwZT4gYXNz
aWduX2xvb3A7CisgIGFic2w6OlNwYW48dmFsdWVfdHlwZT4gY29uc3RydWN0X2xvb3A7CisgIGFi
c2w6OlNwYW48dmFsdWVfdHlwZT4gZGVzdHJveV9sb29wOworCisgIGlmIChuZXdfc2l6ZSA+IHN0
b3JhZ2Vfdmlldy5jYXBhY2l0eSkgeworICAgIHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBDb21w
dXRlQ2FwYWNpdHkoc3RvcmFnZV92aWV3LmNhcGFjaXR5LCBuZXdfc2l6ZSk7CisgICAgcG9pbnRl
ciBuZXdfZGF0YSA9IGFsbG9jYXRpb25fdHguQWxsb2NhdGUobmV3X2NhcGFjaXR5KTsKKworICAg
IGNvbnN0cnVjdF9sb29wID0ge25ld19kYXRhLCBuZXdfc2l6ZX07CisgICAgZGVzdHJveV9sb29w
ID0ge3N0b3JhZ2Vfdmlldy5kYXRhLCBzdG9yYWdlX3ZpZXcuc2l6ZX07CisgIH0gZWxzZSBpZiAo
bmV3X3NpemUgPiBzdG9yYWdlX3ZpZXcuc2l6ZSkgeworICAgIGFzc2lnbl9sb29wID0ge3N0b3Jh
Z2Vfdmlldy5kYXRhLCBzdG9yYWdlX3ZpZXcuc2l6ZX07CisgICAgY29uc3RydWN0X2xvb3AgPSB7
c3RvcmFnZV92aWV3LmRhdGEgKyBzdG9yYWdlX3ZpZXcuc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBuZXdfc2l6ZSAtIHN0b3JhZ2Vfdmlldy5zaXplfTsKKyAgfSBlbHNlIHsKKyAgICBhc3Np
Z25fbG9vcCA9IHtzdG9yYWdlX3ZpZXcuZGF0YSwgbmV3X3NpemV9OworICAgIGRlc3Ryb3lfbG9v
cCA9IHtzdG9yYWdlX3ZpZXcuZGF0YSArIG5ld19zaXplLCBzdG9yYWdlX3ZpZXcuc2l6ZSAtIG5l
d19zaXplfTsKKyAgfQorCisgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpBc3NpZ25FbGVtZW50
cyhhc3NpZ25fbG9vcC5kYXRhKCksICZ2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhc3NpZ25fbG9vcC5zaXplKCkpOworCisgIGlubGluZWRfdmVjdG9y
X2ludGVybmFsOjpDb25zdHJ1Y3RFbGVtZW50cygKKyAgICAgIEdldEFsbG9jUHRyKCksIGNvbnN0
cnVjdF9sb29wLmRhdGEoKSwgJnZhbHVlcywgY29uc3RydWN0X2xvb3Auc2l6ZSgpKTsKKworICBp
bmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVzdHJveUVsZW1lbnRzKEdldEFsbG9jUHRyKCksIGRl
c3Ryb3lfbG9vcC5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdHJveV9sb29wLnNpemUoKSk7CisKKyAgaWYgKGFsbG9jYXRpb25fdHguRGlkQWxs
b2NhdGUoKSkgeworICAgIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICAgIEFjcXVpcmVBbGxv
Y2F0ZWREYXRhKCZhbGxvY2F0aW9uX3R4KTsKKyAgICBTZXRJc0FsbG9jYXRlZCgpOworICB9CisK
KyAgU2V0U2l6ZShuZXdfc2l6ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
TiwgdHlwZW5hbWUgQT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZUFkYXB0ZXI+CithdXRvIFN0
b3JhZ2U8VCwgTiwgQT46OlJlc2l6ZShWYWx1ZUFkYXB0ZXIgdmFsdWVzLCBzaXplX3R5cGUgbmV3
X3NpemUpIC0+IHZvaWQgeworICBTdG9yYWdlVmlldyBzdG9yYWdlX3ZpZXcgPSBNYWtlU3RvcmFn
ZVZpZXcoKTsKKworICBBbGxvY2F0aW9uVHJhbnNhY3Rpb24gYWxsb2NhdGlvbl90eChHZXRBbGxv
Y1B0cigpKTsKKyAgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24gY29uc3RydWN0aW9uX3R4KEdldEFs
bG9jUHRyKCkpOworCisgIEl0ZXJhdG9yVmFsdWVBZGFwdGVyPE1vdmVJdGVyYXRvcj4gbW92ZV92
YWx1ZXMoCisgICAgICBNb3ZlSXRlcmF0b3Ioc3RvcmFnZV92aWV3LmRhdGEpKTsKKworICBhYnNs
OjpTcGFuPHZhbHVlX3R5cGU+IGNvbnN0cnVjdF9sb29wOworICBhYnNsOjpTcGFuPHZhbHVlX3R5
cGU+IG1vdmVfY29uc3RydWN0X2xvb3A7CisgIGFic2w6OlNwYW48dmFsdWVfdHlwZT4gZGVzdHJv
eV9sb29wOworCisgIGlmIChuZXdfc2l6ZSA+IHN0b3JhZ2Vfdmlldy5jYXBhY2l0eSkgeworICAg
IHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBDb21wdXRlQ2FwYWNpdHkoc3RvcmFnZV92aWV3LmNh
cGFjaXR5LCBuZXdfc2l6ZSk7CisgICAgcG9pbnRlciBuZXdfZGF0YSA9IGFsbG9jYXRpb25fdHgu
QWxsb2NhdGUobmV3X2NhcGFjaXR5KTsKKyAgICBjb25zdHJ1Y3RfbG9vcCA9IHtuZXdfZGF0YSAr
IHN0b3JhZ2Vfdmlldy5zaXplLAorICAgICAgICAgICAgICAgICAgICAgIG5ld19zaXplIC0gc3Rv
cmFnZV92aWV3LnNpemV9OworICAgIG1vdmVfY29uc3RydWN0X2xvb3AgPSB7bmV3X2RhdGEsIHN0
b3JhZ2Vfdmlldy5zaXplfTsKKyAgICBkZXN0cm95X2xvb3AgPSB7c3RvcmFnZV92aWV3LmRhdGEs
IHN0b3JhZ2Vfdmlldy5zaXplfTsKKyAgfSBlbHNlIGlmIChuZXdfc2l6ZSA+IHN0b3JhZ2Vfdmll
dy5zaXplKSB7CisgICAgY29uc3RydWN0X2xvb3AgPSB7c3RvcmFnZV92aWV3LmRhdGEgKyBzdG9y
YWdlX3ZpZXcuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXdfc2l6ZSAtIHN0b3JhZ2Vf
dmlldy5zaXplfTsKKyAgfSBlbHNlIHsKKyAgICBkZXN0cm95X2xvb3AgPSB7c3RvcmFnZV92aWV3
LmRhdGEgKyBuZXdfc2l6ZSwgc3RvcmFnZV92aWV3LnNpemUgLSBuZXdfc2l6ZX07CisgIH0KKwor
ICBjb25zdHJ1Y3Rpb25fdHguQ29uc3RydWN0KGNvbnN0cnVjdF9sb29wLmRhdGEoKSwgJnZhbHVl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RfbG9vcC5zaXplKCkpOwor
CisgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpDb25zdHJ1Y3RFbGVtZW50cygKKyAgICAgIEdl
dEFsbG9jUHRyKCksIG1vdmVfY29uc3RydWN0X2xvb3AuZGF0YSgpLCAmbW92ZV92YWx1ZXMsCisg
ICAgICBtb3ZlX2NvbnN0cnVjdF9sb29wLnNpemUoKSk7CisKKyAgaW5saW5lZF92ZWN0b3JfaW50
ZXJuYWw6OkRlc3Ryb3lFbGVtZW50cyhHZXRBbGxvY1B0cigpLCBkZXN0cm95X2xvb3AuZGF0YSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfbG9v
cC5zaXplKCkpOworCisgIGNvbnN0cnVjdGlvbl90eC5Db21taXQoKTsKKyAgaWYgKGFsbG9jYXRp
b25fdHguRGlkQWxsb2NhdGUoKSkgeworICAgIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICAg
IEFjcXVpcmVBbGxvY2F0ZWREYXRhKCZhbGxvY2F0aW9uX3R4KTsKKyAgICBTZXRJc0FsbG9jYXRl
ZCgpOworICB9CisKKyAgU2V0U2l6ZShuZXdfc2l6ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZUFkYXB0
ZXI+CithdXRvIFN0b3JhZ2U8VCwgTiwgQT46Okluc2VydChjb25zdF9pdGVyYXRvciBwb3MsIFZh
bHVlQWRhcHRlciB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5
cGUgaW5zZXJ0X2NvdW50KSAtPiBpdGVyYXRvciB7CisgIFN0b3JhZ2VWaWV3IHN0b3JhZ2Vfdmll
dyA9IE1ha2VTdG9yYWdlVmlldygpOworCisgIHNpemVfdHlwZSBpbnNlcnRfaW5kZXggPQorICAg
ICAgc3RkOjpkaXN0YW5jZShjb25zdF9pdGVyYXRvcihzdG9yYWdlX3ZpZXcuZGF0YSksIHBvcyk7
CisgIHNpemVfdHlwZSBpbnNlcnRfZW5kX2luZGV4ID0gaW5zZXJ0X2luZGV4ICsgaW5zZXJ0X2Nv
dW50OworICBzaXplX3R5cGUgbmV3X3NpemUgPSBzdG9yYWdlX3ZpZXcuc2l6ZSArIGluc2VydF9j
b3VudDsKKworICBpZiAobmV3X3NpemUgPiBzdG9yYWdlX3ZpZXcuY2FwYWNpdHkpIHsKKyAgICBB
bGxvY2F0aW9uVHJhbnNhY3Rpb24gYWxsb2NhdGlvbl90eChHZXRBbGxvY1B0cigpKTsKKyAgICBD
b25zdHJ1Y3Rpb25UcmFuc2FjdGlvbiBjb25zdHJ1Y3Rpb25fdHgoR2V0QWxsb2NQdHIoKSk7Cisg
ICAgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24gbW92ZV9jb25zdHJ1Y2l0b25fdHgoR2V0QWxsb2NQ
dHIoKSk7CisKKyAgICBJdGVyYXRvclZhbHVlQWRhcHRlcjxNb3ZlSXRlcmF0b3I+IG1vdmVfdmFs
dWVzKAorICAgICAgICBNb3ZlSXRlcmF0b3Ioc3RvcmFnZV92aWV3LmRhdGEpKTsKKworICAgIHNp
emVfdHlwZSBuZXdfY2FwYWNpdHkgPSBDb21wdXRlQ2FwYWNpdHkoc3RvcmFnZV92aWV3LmNhcGFj
aXR5LCBuZXdfc2l6ZSk7CisgICAgcG9pbnRlciBuZXdfZGF0YSA9IGFsbG9jYXRpb25fdHguQWxs
b2NhdGUobmV3X2NhcGFjaXR5KTsKKworICAgIGNvbnN0cnVjdGlvbl90eC5Db25zdHJ1Y3QobmV3
X2RhdGEgKyBpbnNlcnRfaW5kZXgsICZ2YWx1ZXMsIGluc2VydF9jb3VudCk7CisKKyAgICBtb3Zl
X2NvbnN0cnVjaXRvbl90eC5Db25zdHJ1Y3QobmV3X2RhdGEsICZtb3ZlX3ZhbHVlcywgaW5zZXJ0
X2luZGV4KTsKKworICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpDb25zdHJ1Y3RFbGVtZW50
cygKKyAgICAgICAgR2V0QWxsb2NQdHIoKSwgbmV3X2RhdGEgKyBpbnNlcnRfZW5kX2luZGV4LCAm
bW92ZV92YWx1ZXMsCisgICAgICAgIHN0b3JhZ2Vfdmlldy5zaXplIC0gaW5zZXJ0X2luZGV4KTsK
KworICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpEZXN0cm95RWxlbWVudHMoR2V0QWxsb2NQ
dHIoKSwgc3RvcmFnZV92aWV3LmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdG9yYWdlX3ZpZXcuc2l6ZSk7CisKKyAgICBjb25zdHJ1Y3Rpb25fdHgu
Q29tbWl0KCk7CisgICAgbW92ZV9jb25zdHJ1Y2l0b25fdHguQ29tbWl0KCk7CisgICAgRGVhbGxv
Y2F0ZUlmQWxsb2NhdGVkKCk7CisgICAgQWNxdWlyZUFsbG9jYXRlZERhdGEoJmFsbG9jYXRpb25f
dHgpOworCisgICAgU2V0QWxsb2NhdGVkU2l6ZShuZXdfc2l6ZSk7CisgICAgcmV0dXJuIGl0ZXJh
dG9yKG5ld19kYXRhICsgaW5zZXJ0X2luZGV4KTsKKyAgfSBlbHNlIHsKKyAgICBzaXplX3R5cGUg
bW92ZV9jb25zdHJ1Y3Rpb25fZGVzdGluYXRpb25faW5kZXggPQorICAgICAgICAoc3RkOjptYXgp
KGluc2VydF9lbmRfaW5kZXgsIHN0b3JhZ2Vfdmlldy5zaXplKTsKKworICAgIENvbnN0cnVjdGlv
blRyYW5zYWN0aW9uIG1vdmVfY29uc3RydWN0aW9uX3R4KEdldEFsbG9jUHRyKCkpOworCisgICAg
SXRlcmF0b3JWYWx1ZUFkYXB0ZXI8TW92ZUl0ZXJhdG9yPiBtb3ZlX2NvbnN0cnVjdGlvbl92YWx1
ZXMoCisgICAgICAgIE1vdmVJdGVyYXRvcihzdG9yYWdlX3ZpZXcuZGF0YSArCisgICAgICAgICAg
ICAgICAgICAgICAobW92ZV9jb25zdHJ1Y3Rpb25fZGVzdGluYXRpb25faW5kZXggLSBpbnNlcnRf
Y291bnQpKSk7CisgICAgYWJzbDo6U3Bhbjx2YWx1ZV90eXBlPiBtb3ZlX2NvbnN0cnVjdGlvbiA9
IHsKKyAgICAgICAgc3RvcmFnZV92aWV3LmRhdGEgKyBtb3ZlX2NvbnN0cnVjdGlvbl9kZXN0aW5h
dGlvbl9pbmRleCwKKyAgICAgICAgbmV3X3NpemUgLSBtb3ZlX2NvbnN0cnVjdGlvbl9kZXN0aW5h
dGlvbl9pbmRleH07CisKKyAgICBwb2ludGVyIG1vdmVfYXNzaWdubWVudF92YWx1ZXMgPSBzdG9y
YWdlX3ZpZXcuZGF0YSArIGluc2VydF9pbmRleDsKKyAgICBhYnNsOjpTcGFuPHZhbHVlX3R5cGU+
IG1vdmVfYXNzaWdubWVudCA9IHsKKyAgICAgICAgc3RvcmFnZV92aWV3LmRhdGEgKyBpbnNlcnRf
ZW5kX2luZGV4LAorICAgICAgICBtb3ZlX2NvbnN0cnVjdGlvbl9kZXN0aW5hdGlvbl9pbmRleCAt
IGluc2VydF9lbmRfaW5kZXh9OworCisgICAgYWJzbDo6U3Bhbjx2YWx1ZV90eXBlPiBpbnNlcnRf
YXNzaWdubWVudCA9IHttb3ZlX2Fzc2lnbm1lbnRfdmFsdWVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZV9jb25zdHJ1Y3Rpb24uc2l6ZSgpfTsK
KworICAgIGFic2w6OlNwYW48dmFsdWVfdHlwZT4gaW5zZXJ0X2NvbnN0cnVjdGlvbiA9IHsKKyAg
ICAgICAgaW5zZXJ0X2Fzc2lnbm1lbnQuZGF0YSgpICsgaW5zZXJ0X2Fzc2lnbm1lbnQuc2l6ZSgp
LAorICAgICAgICBpbnNlcnRfY291bnQgLSBpbnNlcnRfYXNzaWdubWVudC5zaXplKCl9OworCisg
ICAgbW92ZV9jb25zdHJ1Y3Rpb25fdHguQ29uc3RydWN0KG1vdmVfY29uc3RydWN0aW9uLmRhdGEo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vdmVfY29uc3RydWN0aW9u
X3ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZV9jb25zdHJ1
Y3Rpb24uc2l6ZSgpKTsKKworICAgIGZvciAocG9pbnRlciBkZXN0aW5hdGlvbiA9IG1vdmVfYXNz
aWdubWVudC5kYXRhKCkgKyBtb3ZlX2Fzc2lnbm1lbnQuc2l6ZSgpLAorICAgICAgICAgICAgICAg
ICBsYXN0X2Rlc3RpbmF0aW9uID0gbW92ZV9hc3NpZ25tZW50LmRhdGEoKSwKKyAgICAgICAgICAg
ICAgICAgc291cmNlID0gbW92ZV9hc3NpZ25tZW50X3ZhbHVlcyArIG1vdmVfYXNzaWdubWVudC5z
aXplKCk7CisgICAgICAgICA7KSB7CisgICAgICAtLWRlc3RpbmF0aW9uOworICAgICAgLS1zb3Vy
Y2U7CisgICAgICBpZiAoZGVzdGluYXRpb24gPCBsYXN0X2Rlc3RpbmF0aW9uKSBicmVhazsKKyAg
ICAgICpkZXN0aW5hdGlvbiA9IHN0ZDo6bW92ZSgqc291cmNlKTsKKyAgICB9CisKKyAgICBpbmxp
bmVkX3ZlY3Rvcl9pbnRlcm5hbDo6QXNzaWduRWxlbWVudHMoaW5zZXJ0X2Fzc2lnbm1lbnQuZGF0
YSgpLCAmdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRfYXNzaWdubWVudC5zaXplKCkpOworCisgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJu
YWw6OkNvbnN0cnVjdEVsZW1lbnRzKAorICAgICAgICBHZXRBbGxvY1B0cigpLCBpbnNlcnRfY29u
c3RydWN0aW9uLmRhdGEoKSwgJnZhbHVlcywKKyAgICAgICAgaW5zZXJ0X2NvbnN0cnVjdGlvbi5z
aXplKCkpOworCisgICAgbW92ZV9jb25zdHJ1Y3Rpb25fdHguQ29tbWl0KCk7CisKKyAgICBBZGRT
aXplKGluc2VydF9jb3VudCk7CisgICAgcmV0dXJuIGl0ZXJhdG9yKHN0b3JhZ2Vfdmlldy5kYXRh
ICsgaW5zZXJ0X2luZGV4KTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IE4sIHR5cGVuYW1lIEE+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KK2F1dG8gU3RvcmFn
ZTxULCBOLCBBPjo6RW1wbGFjZUJhY2soQXJncyYmLi4uIGFyZ3MpIC0+IHJlZmVyZW5jZSB7Cisg
IFN0b3JhZ2VWaWV3IHN0b3JhZ2VfdmlldyA9IE1ha2VTdG9yYWdlVmlldygpOworCisgIEFsbG9j
YXRpb25UcmFuc2FjdGlvbiBhbGxvY2F0aW9uX3R4KEdldEFsbG9jUHRyKCkpOworCisgIEl0ZXJh
dG9yVmFsdWVBZGFwdGVyPE1vdmVJdGVyYXRvcj4gbW92ZV92YWx1ZXMoCisgICAgICBNb3ZlSXRl
cmF0b3Ioc3RvcmFnZV92aWV3LmRhdGEpKTsKKworICBwb2ludGVyIGNvbnN0cnVjdF9kYXRhOwor
CisgIGlmIChzdG9yYWdlX3ZpZXcuc2l6ZSA9PSBzdG9yYWdlX3ZpZXcuY2FwYWNpdHkpIHsKKyAg
ICBzaXplX3R5cGUgbmV3X2NhcGFjaXR5ID0gTmV4dENhcGFjaXR5KHN0b3JhZ2Vfdmlldy5jYXBh
Y2l0eSk7CisgICAgcG9pbnRlciBuZXdfZGF0YSA9IGFsbG9jYXRpb25fdHguQWxsb2NhdGUobmV3
X2NhcGFjaXR5KTsKKworICAgIGNvbnN0cnVjdF9kYXRhID0gbmV3X2RhdGE7CisgIH0gZWxzZSB7
CisgICAgY29uc3RydWN0X2RhdGEgPSBzdG9yYWdlX3ZpZXcuZGF0YTsKKyAgfQorCisgIHBvaW50
ZXIgZW5kID0gY29uc3RydWN0X2RhdGEgKyBzdG9yYWdlX3ZpZXcuc2l6ZTsKKworICBBbGxvY2F0
b3JUcmFpdHM6OmNvbnN0cnVjdCgqR2V0QWxsb2NQdHIoKSwgZW5kLCBzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworCisgIGlmIChhbGxvY2F0aW9uX3R4LkRpZEFsbG9jYXRlKCkpIHsKKyAg
ICBBQlNMX0lOVEVSTkFMX1RSWSB7CisgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6Q29u
c3RydWN0RWxlbWVudHMoCisgICAgICAgICAgR2V0QWxsb2NQdHIoKSwgYWxsb2NhdGlvbl90eC5H
ZXREYXRhKCksICZtb3ZlX3ZhbHVlcywKKyAgICAgICAgICBzdG9yYWdlX3ZpZXcuc2l6ZSk7Cisg
ICAgfQorICAgIEFCU0xfSU5URVJOQUxfQ0FUQ0hfQU5ZIHsKKyAgICAgIEFsbG9jYXRvclRyYWl0
czo6ZGVzdHJveSgqR2V0QWxsb2NQdHIoKSwgZW5kKTsKKyAgICAgIEFCU0xfSU5URVJOQUxfUkVU
SFJPVzsKKyAgICB9CisKKyAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVzdHJveUVsZW1l
bnRzKEdldEFsbG9jUHRyKCksIHN0b3JhZ2Vfdmlldy5kYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZV92aWV3LnNpemUpOworCisgICAgRGVh
bGxvY2F0ZUlmQWxsb2NhdGVkKCk7CisgICAgQWNxdWlyZUFsbG9jYXRlZERhdGEoJmFsbG9jYXRp
b25fdHgpOworICAgIFNldElzQWxsb2NhdGVkKCk7CisgIH0KKworICBBZGRTaXplKDEpOworICBy
ZXR1cm4gKmVuZDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFt
ZSBBPgorYXV0byBTdG9yYWdlPFQsIE4sIEE+OjpFcmFzZShjb25zdF9pdGVyYXRvciBmcm9tLCBj
b25zdF9pdGVyYXRvciB0bykKKyAgICAtPiBpdGVyYXRvciB7CisgIGFzc2VydChmcm9tICE9IHRv
KTsKKworICBTdG9yYWdlVmlldyBzdG9yYWdlX3ZpZXcgPSBNYWtlU3RvcmFnZVZpZXcoKTsKKwor
ICBzaXplX3R5cGUgZXJhc2Vfc2l6ZSA9IHN0ZDo6ZGlzdGFuY2UoZnJvbSwgdG8pOworICBzaXpl
X3R5cGUgZXJhc2VfaW5kZXggPQorICAgICAgc3RkOjpkaXN0YW5jZShjb25zdF9pdGVyYXRvcihz
dG9yYWdlX3ZpZXcuZGF0YSksIGZyb20pOworICBzaXplX3R5cGUgZXJhc2VfZW5kX2luZGV4ID0g
ZXJhc2VfaW5kZXggKyBlcmFzZV9zaXplOworCisgIEl0ZXJhdG9yVmFsdWVBZGFwdGVyPE1vdmVJ
dGVyYXRvcj4gbW92ZV92YWx1ZXMoCisgICAgICBNb3ZlSXRlcmF0b3Ioc3RvcmFnZV92aWV3LmRh
dGEgKyBlcmFzZV9lbmRfaW5kZXgpKTsKKworICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6QXNz
aWduRWxlbWVudHMoc3RvcmFnZV92aWV3LmRhdGEgKyBlcmFzZV9pbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb3ZlX3ZhbHVlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Vfdmlldy5zaXplIC0gZXJhc2Vf
ZW5kX2luZGV4KTsKKworICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVzdHJveUVsZW1lbnRz
KAorICAgICAgR2V0QWxsb2NQdHIoKSwgc3RvcmFnZV92aWV3LmRhdGEgKyAoc3RvcmFnZV92aWV3
LnNpemUgLSBlcmFzZV9zaXplKSwKKyAgICAgIGVyYXNlX3NpemUpOworCisgIFN1YnRyYWN0U2l6
ZShlcmFzZV9zaXplKTsKKyAgcmV0dXJuIGl0ZXJhdG9yKHN0b3JhZ2Vfdmlldy5kYXRhICsgZXJh
c2VfaW5kZXgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1l
IEE+CithdXRvIFN0b3JhZ2U8VCwgTiwgQT46OlJlc2VydmUoc2l6ZV90eXBlIHJlcXVlc3RlZF9j
YXBhY2l0eSkgLT4gdm9pZCB7CisgIFN0b3JhZ2VWaWV3IHN0b3JhZ2VfdmlldyA9IE1ha2VTdG9y
YWdlVmlldygpOworCisgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UocmVxdWVzdGVkX2NhcGFjaXR5
IDw9IHN0b3JhZ2Vfdmlldy5jYXBhY2l0eSkpIHJldHVybjsKKworICBBbGxvY2F0aW9uVHJhbnNh
Y3Rpb24gYWxsb2NhdGlvbl90eChHZXRBbGxvY1B0cigpKTsKKworICBJdGVyYXRvclZhbHVlQWRh
cHRlcjxNb3ZlSXRlcmF0b3I+IG1vdmVfdmFsdWVzKAorICAgICAgTW92ZUl0ZXJhdG9yKHN0b3Jh
Z2Vfdmlldy5kYXRhKSk7CisKKyAgc2l6ZV90eXBlIG5ld19jYXBhY2l0eSA9CisgICAgICBDb21w
dXRlQ2FwYWNpdHkoc3RvcmFnZV92aWV3LmNhcGFjaXR5LCByZXF1ZXN0ZWRfY2FwYWNpdHkpOwor
ICBwb2ludGVyIG5ld19kYXRhID0gYWxsb2NhdGlvbl90eC5BbGxvY2F0ZShuZXdfY2FwYWNpdHkp
OworCisgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpDb25zdHJ1Y3RFbGVtZW50cyhHZXRBbGxv
Y1B0cigpLCBuZXdfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZtb3ZlX3ZhbHVlcywgc3RvcmFnZV92aWV3LnNpemUpOworCisgIGlubGluZWRfdmVj
dG9yX2ludGVybmFsOjpEZXN0cm95RWxlbWVudHMoR2V0QWxsb2NQdHIoKSwgc3RvcmFnZV92aWV3
LmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFn
ZV92aWV3LnNpemUpOworCisgIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICBBY3F1aXJlQWxs
b2NhdGVkRGF0YSgmYWxsb2NhdGlvbl90eCk7CisgIFNldElzQWxsb2NhdGVkKCk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KK2F1dG8gU3RvcmFnZTxU
LCBOLCBBPjo6U2hyaW5rVG9GaXQoKSAtPiB2b2lkIHsKKyAgLy8gTWF5IG9ubHkgYmUgY2FsbGVk
IG9uIGFsbG9jYXRlZCBpbnN0YW5jZXMhCisgIGFzc2VydChHZXRJc0FsbG9jYXRlZCgpKTsKKwor
ICBTdG9yYWdlVmlldyBzdG9yYWdlX3ZpZXd7R2V0QWxsb2NhdGVkRGF0YSgpLCBHZXRTaXplKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRBbGxvY2F0ZWRDYXBhY2l0eSgpfTsKKwor
ICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHN0b3JhZ2Vfdmlldy5zaXplID09IHN0b3JhZ2Vfdmll
dy5jYXBhY2l0eSkpIHJldHVybjsKKworICBBbGxvY2F0aW9uVHJhbnNhY3Rpb24gYWxsb2NhdGlv
bl90eChHZXRBbGxvY1B0cigpKTsKKworICBJdGVyYXRvclZhbHVlQWRhcHRlcjxNb3ZlSXRlcmF0
b3I+IG1vdmVfdmFsdWVzKAorICAgICAgTW92ZUl0ZXJhdG9yKHN0b3JhZ2Vfdmlldy5kYXRhKSk7
CisKKyAgcG9pbnRlciBjb25zdHJ1Y3RfZGF0YTsKKworICBpZiAoc3RvcmFnZV92aWV3LnNpemUg
PiBHZXRJbmxpbmVkQ2FwYWNpdHkoKSkgeworICAgIHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBz
dG9yYWdlX3ZpZXcuc2l6ZTsKKyAgICBwb2ludGVyIG5ld19kYXRhID0gYWxsb2NhdGlvbl90eC5B
bGxvY2F0ZShuZXdfY2FwYWNpdHkpOworCisgICAgY29uc3RydWN0X2RhdGEgPSBuZXdfZGF0YTsK
KyAgfSBlbHNlIHsKKyAgICBjb25zdHJ1Y3RfZGF0YSA9IEdldElubGluZWREYXRhKCk7CisgIH0K
KworICBBQlNMX0lOVEVSTkFMX1RSWSB7CisgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkNv
bnN0cnVjdEVsZW1lbnRzKEdldEFsbG9jUHRyKCksIGNvbnN0cnVjdF9kYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW92ZV92YWx1ZXMsIHN0b3Jh
Z2Vfdmlldy5zaXplKTsKKyAgfQorICBBQlNMX0lOVEVSTkFMX0NBVENIX0FOWSB7CisgICAgU2V0
QWxsb2NhdGVkRGF0YShzdG9yYWdlX3ZpZXcuZGF0YSwgc3RvcmFnZV92aWV3LmNhcGFjaXR5KTsK
KyAgICBBQlNMX0lOVEVSTkFMX1JFVEhST1c7CisgIH0KKworICBpbmxpbmVkX3ZlY3Rvcl9pbnRl
cm5hbDo6RGVzdHJveUVsZW1lbnRzKEdldEFsbG9jUHRyKCksIHN0b3JhZ2Vfdmlldy5kYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Vfdmlldy5z
aXplKTsKKworICBBbGxvY2F0b3JUcmFpdHM6OmRlYWxsb2NhdGUoKkdldEFsbG9jUHRyKCksIHN0
b3JhZ2Vfdmlldy5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZV92
aWV3LmNhcGFjaXR5KTsKKworICBpZiAoYWxsb2NhdGlvbl90eC5EaWRBbGxvY2F0ZSgpKSB7Cisg
ICAgQWNxdWlyZUFsbG9jYXRlZERhdGEoJmFsbG9jYXRpb25fdHgpOworICB9IGVsc2UgeworICAg
IFVuc2V0SXNBbGxvY2F0ZWQoKTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6
ZV90IE4sIHR5cGVuYW1lIEE+CithdXRvIFN0b3JhZ2U8VCwgTiwgQT46OlN3YXAoU3RvcmFnZSog
b3RoZXJfc3RvcmFnZV9wdHIpIC0+IHZvaWQgeworICB1c2luZyBzdGQ6OnN3YXA7CisgIGFzc2Vy
dCh0aGlzICE9IG90aGVyX3N0b3JhZ2VfcHRyKTsKKworICBpZiAoR2V0SXNBbGxvY2F0ZWQoKSAm
JiBvdGhlcl9zdG9yYWdlX3B0ci0+R2V0SXNBbGxvY2F0ZWQoKSkgeworICAgIHN3YXAoZGF0YV8u
YWxsb2NhdGVkLCBvdGhlcl9zdG9yYWdlX3B0ci0+ZGF0YV8uYWxsb2NhdGVkKTsKKyAgfSBlbHNl
IGlmICghR2V0SXNBbGxvY2F0ZWQoKSAmJiAhb3RoZXJfc3RvcmFnZV9wdHItPkdldElzQWxsb2Nh
dGVkKCkpIHsKKyAgICBTdG9yYWdlKiBzbWFsbF9wdHIgPSB0aGlzOworICAgIFN0b3JhZ2UqIGxh
cmdlX3B0ciA9IG90aGVyX3N0b3JhZ2VfcHRyOworICAgIGlmIChzbWFsbF9wdHItPkdldFNpemUo
KSA+IGxhcmdlX3B0ci0+R2V0U2l6ZSgpKSBzd2FwKHNtYWxsX3B0ciwgbGFyZ2VfcHRyKTsKKwor
ICAgIGZvciAoc2l6ZV90eXBlIGkgPSAwOyBpIDwgc21hbGxfcHRyLT5HZXRTaXplKCk7ICsraSkg
eworICAgICAgc3dhcChzbWFsbF9wdHItPkdldElubGluZWREYXRhKClbaV0sIGxhcmdlX3B0ci0+
R2V0SW5saW5lZERhdGEoKVtpXSk7CisgICAgfQorCisgICAgSXRlcmF0b3JWYWx1ZUFkYXB0ZXI8
TW92ZUl0ZXJhdG9yPiBtb3ZlX3ZhbHVlcygKKyAgICAgICAgTW92ZUl0ZXJhdG9yKGxhcmdlX3B0
ci0+R2V0SW5saW5lZERhdGEoKSArIHNtYWxsX3B0ci0+R2V0U2l6ZSgpKSk7CisKKyAgICBpbmxp
bmVkX3ZlY3Rvcl9pbnRlcm5hbDo6Q29uc3RydWN0RWxlbWVudHMoCisgICAgICAgIGxhcmdlX3B0
ci0+R2V0QWxsb2NQdHIoKSwKKyAgICAgICAgc21hbGxfcHRyLT5HZXRJbmxpbmVkRGF0YSgpICsg
c21hbGxfcHRyLT5HZXRTaXplKCksICZtb3ZlX3ZhbHVlcywKKyAgICAgICAgbGFyZ2VfcHRyLT5H
ZXRTaXplKCkgLSBzbWFsbF9wdHItPkdldFNpemUoKSk7CisKKyAgICBpbmxpbmVkX3ZlY3Rvcl9p
bnRlcm5hbDo6RGVzdHJveUVsZW1lbnRzKAorICAgICAgICBsYXJnZV9wdHItPkdldEFsbG9jUHRy
KCksCisgICAgICAgIGxhcmdlX3B0ci0+R2V0SW5saW5lZERhdGEoKSArIHNtYWxsX3B0ci0+R2V0
U2l6ZSgpLAorICAgICAgICBsYXJnZV9wdHItPkdldFNpemUoKSAtIHNtYWxsX3B0ci0+R2V0U2l6
ZSgpKTsKKyAgfSBlbHNlIHsKKyAgICBTdG9yYWdlKiBhbGxvY2F0ZWRfcHRyID0gdGhpczsKKyAg
ICBTdG9yYWdlKiBpbmxpbmVkX3B0ciA9IG90aGVyX3N0b3JhZ2VfcHRyOworICAgIGlmICghYWxs
b2NhdGVkX3B0ci0+R2V0SXNBbGxvY2F0ZWQoKSkgc3dhcChhbGxvY2F0ZWRfcHRyLCBpbmxpbmVk
X3B0cik7CisKKyAgICBTdG9yYWdlVmlldyBhbGxvY2F0ZWRfc3RvcmFnZV92aWV3e2FsbG9jYXRl
ZF9wdHItPkdldEFsbG9jYXRlZERhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFsbG9jYXRlZF9wdHItPkdldFNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlZF9wdHItPkdldEFsbG9jYXRlZENhcGFjaXR5KCl9
OworCisgICAgSXRlcmF0b3JWYWx1ZUFkYXB0ZXI8TW92ZUl0ZXJhdG9yPiBtb3ZlX3ZhbHVlcygK
KyAgICAgICAgTW92ZUl0ZXJhdG9yKGlubGluZWRfcHRyLT5HZXRJbmxpbmVkRGF0YSgpKSk7CisK
KyAgICBBQlNMX0lOVEVSTkFMX1RSWSB7CisgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6
Q29uc3RydWN0RWxlbWVudHMoCisgICAgICAgICAgaW5saW5lZF9wdHItPkdldEFsbG9jUHRyKCks
IGFsbG9jYXRlZF9wdHItPkdldElubGluZWREYXRhKCksCisgICAgICAgICAgJm1vdmVfdmFsdWVz
LCBpbmxpbmVkX3B0ci0+R2V0U2l6ZSgpKTsKKyAgICB9CisgICAgQUJTTF9JTlRFUk5BTF9DQVRD
SF9BTlkgeworICAgICAgYWxsb2NhdGVkX3B0ci0+U2V0QWxsb2NhdGVkRGF0YShhbGxvY2F0ZWRf
c3RvcmFnZV92aWV3LmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFsbG9jYXRlZF9zdG9yYWdlX3ZpZXcuY2FwYWNpdHkpOworICAgICAgQUJTTF9JTlRFUk5BTF9S
RVRIUk9XOworICAgIH0KKworICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpEZXN0cm95RWxl
bWVudHMoaW5saW5lZF9wdHItPkdldEFsbG9jUHRyKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVkX3B0ci0+R2V0SW5saW5lZERhdGEoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZWRfcHRyLT5H
ZXRTaXplKCkpOworCisgICAgaW5saW5lZF9wdHItPlNldEFsbG9jYXRlZERhdGEoYWxsb2NhdGVk
X3N0b3JhZ2Vfdmlldy5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs
bG9jYXRlZF9zdG9yYWdlX3ZpZXcuY2FwYWNpdHkpOworICB9CisKKyAgc3dhcChHZXRTaXplQW5k
SXNBbGxvY2F0ZWQoKSwgb3RoZXJfc3RvcmFnZV9wdHItPkdldFNpemVBbmRJc0FsbG9jYXRlZCgp
KTsKKyAgc3dhcCgqR2V0QWxsb2NQdHIoKSwgKm90aGVyX3N0b3JhZ2VfcHRyLT5HZXRBbGxvY1B0
cigpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGlubGluZWRfdmVjdG9yX2ludGVybmFsCit9ICAv
LyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0lO
TElORURfVkVDVE9SX0lOVEVSTkFMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvbGF5b3V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0LmgKaW5kZXgg
Njc2YzdkNjdlZTYuLmJiZGRlNTA3OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvbGF5b3V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dC5oCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yMzIsMTMgKzIzMiwx
NyBAQCBzdHJ1Y3QgU2l6ZU9mIDogTm90QWxpZ25lZDxUPiwgc3RkOjppbnRlZ3JhbF9jb25zdGFu
dDxzaXplX3QsIHNpemVvZihUKT4ge307CiB0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CiBz
dHJ1Y3QgU2l6ZU9mPEFsaWduZWQ8VCwgTj4+IDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxzaXpl
X3QsIHNpemVvZihUKT4ge307CiAKKy8vIE5vdGU6IHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2Nj
LmdudS5vcmcvUFI4ODExNQogdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgQWxpZ25PZiA6IE5v
dEFsaWduZWQ8VD4sIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBhbGlnbm9mKFQpPiB7
fTsKK3N0cnVjdCBBbGlnbk9mIDogTm90QWxpZ25lZDxUPiB7CisgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IHZhbHVlID0gYWxpZ25vZihUKTsKK307CiAKIHRlbXBsYXRlIDxjbGFzcyBULCBzaXpl
X3QgTj4KLXN0cnVjdCBBbGlnbk9mPEFsaWduZWQ8VCwgTj4+IDogc3RkOjppbnRlZ3JhbF9jb25z
dGFudDxzaXplX3QsIE4+IHsKK3N0cnVjdCBBbGlnbk9mPEFsaWduZWQ8VCwgTj4+IHsKICAgc3Rh
dGljX2Fzc2VydChOICUgYWxpZ25vZihUKSA9PSAwLAogICAgICAgICAgICAgICAgICJDdXN0b20g
YWxpZ25tZW50IGNhbid0IGJlIGxvd2VyIHRoYW4gdGhlIHR5cGUncyBhbGlnbm1lbnQiKTsKKyAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgdmFsdWUgPSBOOwogfTsKIAogLy8gRG9lcyBgVHMuLi5g
IGNvbnRhaW4gYFRgPwpAQCAtMjQ5LDggKzI1MywxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgRnJvbSwg
Y2xhc3MgVG8+CiB1c2luZyBDb3B5Q29uc3QgPQogICAgIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9u
YWw8c3RkOjppc19jb25zdDxGcm9tPjo6dmFsdWUsIGNvbnN0IFRvLCBUbz46OnR5cGU7CiAKKy8v
IE5vdGU6IFdlJ3JlIG5vdCBxdWFsaWZ5aW5nIHRoaXMgd2l0aCBhYnNsOjogYmVjYXVzZSBpdCBk
b2Vzbid0IGNvbXBpbGUgdW5kZXIKKy8vIE1TVkMuCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLXVzaW5n
IFNsaWNlVHlwZSA9IGFic2w6OlNwYW48VD47Cit1c2luZyBTbGljZVR5cGUgPSBTcGFuPFQ+Owog
CiAvLyBUaGlzIG5hbWVzcGFjZSBjb250YWlucyBubyB0eXBlcy4gSXQgcHJldmVudHMgZnVuY3Rp
b25zIGRlZmluZWQgaW4gaXQgZnJvbQogLy8gYmVpbmcgZm91bmQgYnkgQURMLgpAQCAtMjkwLDcg
KzI5Niw3IEBAIHN0ZDo6c3RyaW5nIFR5cGVOYW1lKCkgewogI2lmZGVmIEFCU0xfSU5URVJOQUxf
SEFTX0NYQV9ERU1BTkdMRQogICBkZW1hbmdsZWQgPSBhYmk6Ol9fY3hhX2RlbWFuZ2xlKHR5cGVp
ZChUKS5uYW1lKCksIG51bGxwdHIsIG51bGxwdHIsICZzdGF0dXMpOwogI2VuZGlmCi0gIGlmIChz
dGF0dXMgPT0gMCAmJiBkZW1hbmdsZWQgIT0gbnVsbHB0cikgeyAgLy8gRGVtYW5nbGluZyBzdWNj
ZWVlZGVkLgorICBpZiAoc3RhdHVzID09IDAgJiYgZGVtYW5nbGVkICE9IG51bGxwdHIpIHsgIC8v
IERlbWFuZ2xpbmcgc3VjY2VlZGVkLgogICAgIGFic2w6OlN0ckFwcGVuZCgmb3V0LCAiPCIsIGRl
bWFuZ2xlZCwgIj4iKTsKICAgICBmcmVlKGRlbWFuZ2xlZCk7CiAgIH0gZWxzZSB7CkBAIC0zOTYs
NyArNDAyLDcgQEAgY2xhc3MgTGF5b3V0SW1wbDxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiwgYWJz
bDo6aW5kZXhfc2VxdWVuY2U8U2l6ZVNlcS4uLj4sCiAgICAgc3RhdGljX2Fzc2VydChOIDwgTnVt
T2Zmc2V0cywgIkluZGV4IG91dCBvZiBib3VuZHMiKTsKICAgICByZXR1cm4gYWRsX2JhcnJpZXI6
OkFsaWduKAogICAgICAgICBPZmZzZXQ8TiAtIDE+KCkgKyBTaXplT2Y8RWxlbWVudFR5cGU8TiAt
IDE+PigpICogc2l6ZV9bTiAtIDFdLAotICAgICAgICBFbGVtZW50QWxpZ25tZW50PE4+KCkpOwor
ICAgICAgICBFbGVtZW50QWxpZ25tZW50PE4+Ojp2YWx1ZSk7CiAgIH0KIAogICAvLyBPZmZzZXQg
aW4gYnl0ZXMgb2YgdGhlIGFycmF5IHdpdGggdGhlIHNwZWNpZmllZCBlbGVtZW50IHR5cGUuIFRo
ZXJlIG11c3QKQEAgLTQ0NSw3ICs0NTEsNyBAQCBjbGFzcyBMYXlvdXRJbXBsPHN0ZDo6dHVwbGU8
RWxlbWVudHMuLi4+LCBhYnNsOjppbmRleF9zZXF1ZW5jZTxTaXplU2VxLi4uPiwKICAgICByZXR1
cm4gU2l6ZTxFbGVtZW50SW5kZXg8VD4oKT4oKTsKICAgfQogCi0gICAgLy8gVGhlIG51bWJlciBv
ZiBlbGVtZW50cyBvZiBhbGwgYXJyYXlzIGZvciB3aGljaCB0aGV5IGFyZSBrbm93bi4KKyAgLy8g
VGhlIG51bWJlciBvZiBlbGVtZW50cyBvZiBhbGwgYXJyYXlzIGZvciB3aGljaCB0aGV5IGFyZSBr
bm93bi4KICAgY29uc3RleHByIHN0ZDo6YXJyYXk8c2l6ZV90LCBOdW1TaXplcz4gU2l6ZXMoKSBj
b25zdCB7CiAgICAgcmV0dXJuIHt7U2l6ZTxTaXplU2VxPigpLi4ufX07CiAgIH0KQEAgLTYxMCw3
ICs2MTYsNyBAQCBjbGFzcyBMYXlvdXRJbXBsPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+LCBhYnNs
OjppbmRleF9zZXF1ZW5jZTxTaXplU2VxLi4uPiwKICNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgog
ICAgIFBvaXNvblBhZGRpbmc8Q2hhciwgTiAtIDE+KHApOwogICAgIC8vIFRoZSBgaWZgIGlzIGFu
IG9wdGltaXphdGlvbi4gSXQgZG9lc24ndCBhZmZlY3QgdGhlIG9ic2VydmFibGUgYmVoYXZpb3Vy
LgotICAgIGlmIChFbGVtZW50QWxpZ25tZW50PE4gLSAxPigpICUgRWxlbWVudEFsaWdubWVudDxO
PigpKSB7CisgICAgaWYgKEVsZW1lbnRBbGlnbm1lbnQ8TiAtIDE+Ojp2YWx1ZSAlIEVsZW1lbnRB
bGlnbm1lbnQ8Tj46OnZhbHVlKSB7CiAgICAgICBzaXplX3Qgc3RhcnQgPQogICAgICAgICAgIE9m
ZnNldDxOIC0gMT4oKSArIFNpemVPZjxFbGVtZW50VHlwZTxOIC0gMT4+KCkgKiBzaXplX1tOIC0g
MV07CiAgICAgICBBU0FOX1BPSVNPTl9NRU1PUllfUkVHSU9OKHAgKyBzdGFydCwgT2Zmc2V0PE4+
KCkgLSBzdGFydCk7CkBAIC02MzcsNyArNjQzLDggQEAgY2xhc3MgTGF5b3V0SW1wbDxzdGQ6OnR1
cGxlPEVsZW1lbnRzLi4uPiwgYWJzbDo6aW5kZXhfc2VxdWVuY2U8U2l6ZVNlcS4uLj4sCiAgIHN0
ZDo6c3RyaW5nIERlYnVnU3RyaW5nKCkgY29uc3QgewogICAgIGNvbnN0IGF1dG8gb2Zmc2V0cyA9
IE9mZnNldHMoKTsKICAgICBjb25zdCBzaXplX3Qgc2l6ZXNbXSA9IHtTaXplT2Y8RWxlbWVudFR5
cGU8T2Zmc2V0U2VxPj4oKS4uLn07Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdHlwZXNbXSA9IHth
ZGxfYmFycmllcjo6VHlwZU5hbWU8RWxlbWVudFR5cGU8T2Zmc2V0U2VxPj4oKS4uLn07CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdHlwZXNbXSA9IHsKKyAgICAgICAgYWRsX2JhcnJpZXI6OlR5cGVO
YW1lPEVsZW1lbnRUeXBlPE9mZnNldFNlcT4+KCkuLi59OwogICAgIHN0ZDo6c3RyaW5nIHJlcyA9
IGFic2w6OlN0ckNhdCgiQDAiLCB0eXBlc1swXSwgIigiLCBzaXplc1swXSwgIikiKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSBOdW1PZmZzZXRzIC0gMTsgKytpKSB7CiAgICAgICBhYnNs
OjpTdHJBcHBlbmQoJnJlcywgIlsiLCBzaXplX1tpXSwgIl07IEAiLCBvZmZzZXRzW2kgKyAxXSwg
dHlwZXNbaSArIDFdLApAQCAtNjkwLDcgKzY5Nyw3IEBAIGNsYXNzIExheW91dCA6IHB1YmxpYyBp
bnRlcm5hbF9sYXlvdXQ6OkxheW91dFR5cGU8c2l6ZW9mLi4uKFRzKSwgVHMuLi4+IHsKICAgLy8K
ICAgLy8gSXQncyBhbGxvd2VkIHRvIHBhc3MgZmV3ZXIgYXJyYXkgc2l6ZXMgdGhhbiB0aGUgbnVt
YmVyIG9mIGFycmF5cy4gRS5nLiwKICAgLy8gaWYgYWxsIHlvdSBuZWVkIGlzIHRvIHRoZSBvZmZz
ZXQgb2YgdGhlIHNlY29uZCBhcnJheSwgeW91IG9ubHkgbmVlZCB0bwotICAvLyBwYXNzIG9uZSBh
cmd1bWVudCAtLSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBmaXJzdCBhcnJheXMuCisg
IC8vIHBhc3Mgb25lIGFyZ3VtZW50IC0tIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGZp
cnN0IGFycmF5LgogICAvLwogICAvLyAgIC8vIGludFszXSBmb2xsb3dlZCBieSA0IGJ5dGVzIG9m
IHBhZGRpbmcgYW5kIGFuIHVua25vd24gbnVtYmVyIG9mCiAgIC8vICAgLy8gZG91Ymxlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXRfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXRfdGVzdC5jYwppbmRleCBmMzUxNTdhM2JkOC4uMzNi
NzJiZDM3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXRfdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0X3Rlc3QuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQ1LDcgKzQ1LDI1IEBAIEV4
cGVjdGVkIFR5cGUoQWN0dWFsIHZhbCkgewogICByZXR1cm4gdmFsOwogfQogCi11c2luZyBJbnQx
MjggPSBpbnQ2NF90WzJdOworLy8gSGVscGVyIGNsYXNzZXMgdG8gdGVzdCBkaWZmZXJlbnQgc2l6
ZSBhbmQgYWxpZ25tZW50cy4KK3N0cnVjdCBhbGlnbmFzKDgpIEludDEyOCB7CisgIHVpbnQ2NF90
IGEsIGI7CisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oSW50MTI4IGxocywgSW50MTI4IHJocykg
eworICAgIHJldHVybiBzdGQ6OnRpZShsaHMuYSwgbGhzLmIpID09IHN0ZDo6dGllKHJocy5hLCBy
aHMuYik7CisgIH0KKworICBzdGF0aWMgc3RkOjpzdHJpbmcgTmFtZSgpIHsKKyAgICByZXR1cm4g
aW50ZXJuYWxfbGF5b3V0OjphZGxfYmFycmllcjo6VHlwZU5hbWU8SW50MTI4PigpOworICB9Cit9
OworCisvLyBpbnQ2NF90IGlzICpub3QqIDgtYnl0ZSBhbGlnbmVkIG9uIGFsbCBwbGF0Zm9ybXMh
CitzdHJ1Y3QgYWxpZ25hcyg4KSBJbnQ2NCB7CisgIGludDY0X3QgYTsKKyAgZnJpZW5kIGJvb2wg
b3BlcmF0b3I9PShJbnQ2NCBsaHMsIEludDY0IHJocykgeworICAgIHJldHVybiBsaHMuYSA9PSBy
aHMuYTsKKyAgfQorfTsKIAogLy8gUHJvcGVydGllcyBvZiB0eXBlcyB0aGF0IHRoaXMgdGVzdCBy
ZWxpZXMgb24uCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQ4X3QpID09IDEsICIiKTsKQEAgLTU0
LDYgKzcyLDggQEAgc3RhdGljX2Fzc2VydChzaXplb2YoaW50MTZfdCkgPT0gMiwgIiIpOwogc3Rh
dGljX2Fzc2VydChhbGlnbm9mKGludDE2X3QpID09IDIsICIiKTsKIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKGludDMyX3QpID09IDQsICIiKTsKIHN0YXRpY19hc3NlcnQoYWxpZ25vZihpbnQzMl90KSA9
PSA0LCAiIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihJbnQ2NCkgPT0gOCwgIiIpOworc3RhdGlj
X2Fzc2VydChhbGlnbm9mKEludDY0KSA9PSA4LCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihJ
bnQxMjgpID09IDE2LCAiIik7CiBzdGF0aWNfYXNzZXJ0KGFsaWdub2YoSW50MTI4KSA9PSA4LCAi
Iik7CiAKQEAgLTEyNzEsMTQgKzEyOTEsMTQgQEAgVEVTVChMYXlvdXQsIE92ZXJBbGlnbmVkKSB7
CiBURVNUKExheW91dCwgQWxpZ25tZW50KSB7CiAgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDhf
dD46OkFsaWdubWVudCgpID09IDEsICIiKTsKICAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50MzJf
dD46OkFsaWdubWVudCgpID09IDQsICIiKTsKLSAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50NjRf
dD46OkFsaWdubWVudCgpID09IDgsICIiKTsKKyAgc3RhdGljX2Fzc2VydChMYXlvdXQ8SW50NjQ+
OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7CiAgIHN0YXRpY19hc3NlcnQoTGF5b3V0PEFsaWduZWQ8
aW50OF90LCA2ND4+OjpBbGlnbm1lbnQoKSA9PSA2NCwgIiIpOwotICBzdGF0aWNfYXNzZXJ0KExh
eW91dDxpbnQ4X3QsIGludDMyX3QsIGludDY0X3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7Ci0g
IHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDhfdCwgaW50NjRfdCwgaW50MzJfdD46OkFsaWdubWVu
dCgpID09IDgsICIiKTsKLSAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50MzJfdCwgaW50OF90LCBp
bnQ2NF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOwotICBzdGF0aWNfYXNzZXJ0KExheW91dDxp
bnQzMl90LCBpbnQ2NF90LCBpbnQ4X3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7Ci0gIHN0YXRp
Y19hc3NlcnQoTGF5b3V0PGludDY0X3QsIGludDhfdCwgaW50MzJfdD46OkFsaWdubWVudCgpID09
IDgsICIiKTsKLSAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50NjRfdCwgaW50MzJfdCwgaW50OF90
Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQ4X3Qs
IGludDMyX3QsIEludDY0Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0
KExheW91dDxpbnQ4X3QsIEludDY0LCBpbnQzMl90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOwor
ICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQzMl90LCBpbnQ4X3QsIEludDY0Pjo6QWxpZ25tZW50
KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQzMl90LCBJbnQ2NCwgaW50
OF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxJbnQ2
NCwgaW50OF90LCBpbnQzMl90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNz
ZXJ0KExheW91dDxJbnQ2NCwgaW50MzJfdCwgaW50OF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIp
OwogfQogCiBURVNUKExheW91dCwgQ29uc3RleHByUGFydGlhbCkgewpAQCAtMTMxMyw3ICsxMzMz
LDcgQEAgdm9pZCBFeHBlY3RQb2lzb25lZChjb25zdCB1bnNpZ25lZCBjaGFyICgmYnVmKVtOXSwK
IH0KIAogVEVTVChMYXlvdXQsIFBvaXNvblBhZGRpbmcpIHsKLSAgdXNpbmcgTCA9IExheW91dDxp
bnQ4X3QsIGludDY0X3QsIGludDMyX3QsIEludDEyOD47CisgIHVzaW5nIEwgPSBMYXlvdXQ8aW50
OF90LCBJbnQ2NCwgaW50MzJfdCwgSW50MTI4PjsKIAogICBjb25zdGV4cHIgc2l6ZV90IG4gPSBM
OjpQYXJ0aWFsKDEsIDIsIDMsIDQpLkFsbG9jU2l6ZSgpOwogICB7CkBAIC0xMzYxLDEyICsxMzgx
LDYgQEAgVEVTVChMYXlvdXQsIFBvaXNvblBhZGRpbmcpIHsKIH0KIAogVEVTVChMYXlvdXQsIERl
YnVnU3RyaW5nKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGludDY0X3R5cGUgPQotI2lmZGVmIF9N
U0NfVkVSCi0gICJfX2ludDY0IjsKLSNlbHNlICAgLy8gX01TQ19WRVIKLSAgc3RkOjppc19zYW1l
PGludDY0X3QsIGxvbmcgbG9uZz46OnZhbHVlID8gImxvbmcgbG9uZyIgOiAibG9uZyI7ICAvLyBO
T0xJTlQKLSNlbmRpZiAgLy8gX01TQ19WRVIKICAgewogICAgIGNvbnN0ZXhwciBhdXRvIHggPSBM
YXlvdXQ8aW50OF90LCBpbnQzMl90LCBpbnQ4X3QsIEludDEyOD46OlBhcnRpYWwoKTsKICAgICBF
WFBFQ1RfRVEoIkAwPHNpZ25lZCBjaGFyPigxKSIsIHguRGVidWdTdHJpbmcoKSk7CkBAIC0xMzg0
LDI0ICsxMzk4LDI0IEBAIFRFU1QoTGF5b3V0LCBEZWJ1Z1N0cmluZykgewogICAgIGNvbnN0ZXhw
ciBhdXRvIHggPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBpbnQ4X3QsIEludDEyOD46OlBhcnRp
YWwoMSwgMiwgMyk7CiAgICAgRVhQRUNUX0VRKAogICAgICAgICAiQDA8c2lnbmVkIGNoYXI+KDEp
WzFdOyBANDxpbnQ+KDQpWzJdOyBAMTI8c2lnbmVkIGNoYXI+KDEpWzNdOyAiCi0gICAgICAgICJA
MTY8IiArCi0gICAgICAgICAgICBpbnQ2NF90eXBlICsgIiBbMl0+KDE2KSIsCisgICAgICAgICJA
MTYiICsKKyAgICAgICAgICAgIEludDEyODo6TmFtZSgpICsgIigxNikiLAogICAgICAgICB4LkRl
YnVnU3RyaW5nKCkpOwogICB9CiAgIHsKICAgICBjb25zdGV4cHIgYXV0byB4ID0gTGF5b3V0PGlu
dDhfdCwgaW50MzJfdCwgaW50OF90LCBJbnQxMjg+OjpQYXJ0aWFsKDEsIDIsIDMsIDQpOwogICAg
IEVYUEVDVF9FUSgKICAgICAgICAgIkAwPHNpZ25lZCBjaGFyPigxKVsxXTsgQDQ8aW50Pig0KVsy
XTsgQDEyPHNpZ25lZCBjaGFyPigxKVszXTsgIgotICAgICAgICAiQDE2PCIgKwotICAgICAgICAg
ICAgaW50NjRfdHlwZSArICIgWzJdPigxNilbNF0iLAorICAgICAgICAiQDE2IiArCisgICAgICAg
ICAgICBJbnQxMjg6Ok5hbWUoKSArICIoMTYpWzRdIiwKICAgICAgICAgeC5EZWJ1Z1N0cmluZygp
KTsKICAgfQogICB7CiAgICAgY29uc3RleHByIExheW91dDxpbnQ4X3QsIGludDMyX3QsIGludDhf
dCwgSW50MTI4PiB4KDEsIDIsIDMsIDQpOwogICAgIEVYUEVDVF9FUSgKICAgICAgICAgIkAwPHNp
Z25lZCBjaGFyPigxKVsxXTsgQDQ8aW50Pig0KVsyXTsgQDEyPHNpZ25lZCBjaGFyPigxKVszXTsg
IgotICAgICAgICAiQDE2PCIgKwotICAgICAgICAgICAgaW50NjRfdHlwZSArICIgWzJdPigxNilb
NF0iLAorICAgICAgICAiQDE2IiArCisgICAgICAgICAgICBJbnQxMjg6Ok5hbWUoKSArICIoMTYp
WzRdIiwKICAgICAgICAgeC5EZWJ1Z1N0cmluZygpKTsKICAgfQogfQpAQCAtMTUyOCw4ICsxNTQy
LDcgQEAgY2xhc3MgQ29tcGFjdFN0cmluZyB7CiAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3Qg
ewogICAgIC8vIEVxdWl2YWxlbnQgdG8gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocC5nZXQoKSAr
IHNpemVvZihzaXplX3QpKS4KICAgICAvLyBUaGUgYXJndW1lbnQgaW4gUGFydGlhbCgxKSBzcGVj
aWZpZXMgdGhhdCB3ZSBoYXZlIHNpemVfdFsxXSBpbiBmcm9udCBvZgotICAgIC8vIHRoZQotICAg
IC8vIGNoYXJhY3RlcnMuCisgICAgLy8gdGhlIGNoYXJhY3RlcnMuCiAgICAgcmV0dXJuIEw6OlBh
cnRpYWwoMSkuUG9pbnRlcjxjaGFyPihwXy5nZXQoKSk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL25vZGVfaGFzaF9wb2xpY3kuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5LmgKaW5kZXggMDY1ZTcwMDllN2UuLjE5YjRmYzA5
OGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGlj
eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5LmgKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0LmNjCmluZGV4IDQzZDI4N2UzYzRh
Li5mMWQzZWMzMDE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL25vZGVf
aGFzaF9wb2xpY3lfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9o
YXNoX3BvbGljeV90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgKaW5kZXggMWVkYzAwNzFl
N2QuLjZhOWM3MzBjNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3
X2hhc2hfbWFwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX21hcC5o
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOSw2ICsxOSw3
IEBACiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1
ZGUgImFic2wvYmFzZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5oIgogI2luY2x1ZGUgImFic2wv
Y29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKICNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQK
IApAQCAtMzksMTEgKzQwLDE0IEBAIGNsYXNzIHJhd19oYXNoX21hcCA6IHB1YmxpYyByYXdfaGFz
aF9zZXQ8UG9saWN5LCBIYXNoLCBFcSwgQWxsb2M+IHsKICAgdXNpbmcgTWFwcGVkQ29uc3RSZWZl
cmVuY2UgPSBkZWNsdHlwZShQOjp2YWx1ZSgKICAgICAgIHN0ZDo6YWRkcmVzc29mKHN0ZDo6ZGVj
bHZhbDx0eXBlbmFtZSByYXdfaGFzaF9tYXA6OmNvbnN0X3JlZmVyZW5jZT4oKSkpKTsKIAorICB1
c2luZyBLZXlBcmdJbXBsID0KKyAgICAgIEtleUFyZzxJc1RyYW5zcGFyZW50PEVxPjo6dmFsdWUg
JiYgSXNUcmFuc3BhcmVudDxIYXNoPjo6dmFsdWU+OworCiAgcHVibGljOgogICB1c2luZyBrZXlf
dHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6a2V5X3R5cGU7CiAgIHVzaW5nIG1hcHBlZF90eXBlID0g
dHlwZW5hbWUgUG9saWN5OjptYXBwZWRfdHlwZTsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+Ci0g
IHVzaW5nIGtleV9hcmcgPSB0eXBlbmFtZSByYXdfaGFzaF9tYXA6OnJhd19oYXNoX3NldDo6dGVt
cGxhdGUga2V5X2FyZzxLPjsKKyAgdGVtcGxhdGUgPGNsYXNzIEs+CisgIHVzaW5nIGtleV9hcmcg
PSB0eXBlbmFtZSBLZXlBcmdJbXBsOjp0ZW1wbGF0ZSB0eXBlPEssIGtleV90eXBlPjsKIAogICBz
dGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3JlZmVyZW5jZTxrZXlfdHlwZT46OnZhbHVlLCAiIik7CiAg
IC8vIFRPRE8oYWxraXMpOiByZW1vdmUgdGhpcyBhc3NlcnRpb24gYW5kIHZlcmlmeSB0aGF0IHJl
ZmVyZW5jZSBtYXBwZWRfdHlwZSBpcwpAQCAtMTMzLDE0ICsxMzcsMjAgQEAgY2xhc3MgcmF3X2hh
c2hfbWFwIDogcHVibGljIHJhd19oYXNoX3NldDxQb2xpY3ksIEhhc2gsIEVxLCBBbGxvYz4gewog
ICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBQID0gUG9saWN5PgogICBNYXBw
ZWRSZWZlcmVuY2U8UD4gYXQoY29uc3Qga2V5X2FyZzxLPiYga2V5KSB7CiAgICAgYXV0byBpdCA9
IHRoaXMtPmZpbmQoa2V5KTsKLSAgICBpZiAoaXQgPT0gdGhpcy0+ZW5kKCkpIHN0ZDo6YWJvcnQo
KTsKKyAgICBpZiAoaXQgPT0gdGhpcy0+ZW5kKCkpIHsKKyAgICAgIGJhc2VfaW50ZXJuYWw6OlRo
cm93U3RkT3V0T2ZSYW5nZSgKKyAgICAgICAgICAiYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpy
YXdfaGFzaF9tYXA8Pjo6YXQiKTsKKyAgICB9CiAgICAgcmV0dXJuIFBvbGljeTo6dmFsdWUoJipp
dCk7CiAgIH0KIAogICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBQID0gUG9s
aWN5PgogICBNYXBwZWRDb25zdFJlZmVyZW5jZTxQPiBhdChjb25zdCBrZXlfYXJnPEs+JiBrZXkp
IGNvbnN0IHsKICAgICBhdXRvIGl0ID0gdGhpcy0+ZmluZChrZXkpOwotICAgIGlmIChpdCA9PSB0
aGlzLT5lbmQoKSkgc3RkOjphYm9ydCgpOworICAgIGlmIChpdCA9PSB0aGlzLT5lbmQoKSkgewor
ICAgICAgYmFzZV9pbnRlcm5hbDo6VGhyb3dTdGRPdXRPZlJhbmdlKAorICAgICAgICAgICJhYnNs
Ojpjb250YWluZXJfaW50ZXJuYWw6OnJhd19oYXNoX21hcDw+OjphdCIpOworICAgIH0KICAgICBy
ZXR1cm4gUG9saWN5Ojp2YWx1ZSgmKml0KTsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L3Jhd19oYXNoX3NldC5jYwppbmRleCAxMDE1MzEyOWZkMS4uYWMyZDEwYTc2NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQsNiArMTQsNyBAQAogCiAjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiCiAKKyNpbmNsdWRlIDxhdG9taWM+CiAj
aW5jbHVkZSA8Y3N0ZGRlZj4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKQEAgLTI5
LDcgKzMwLDcgQEAgaW5saW5lIHNpemVfdCBSYW5kb21TZWVkKCkgewogICBzdGF0aWMgdGhyZWFk
X2xvY2FsIHNpemVfdCBjb3VudGVyID0gMDsKICAgc2l6ZV90IHZhbHVlID0gKytjb3VudGVyOwog
I2Vsc2UgICAvLyBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMCi0gIHN0YXRpYyBzdGQ6OmF0b21pYzxz
aXplX3Q+IGNvdW50ZXI7CisgIHN0YXRpYyBzdGQ6OmF0b21pYzxzaXplX3Q+IGNvdW50ZXIoMCk7
CiAgIHNpemVfdCB2YWx1ZSA9IGNvdW50ZXIuZmV0Y2hfYWRkKDEsIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpOwogI2VuZGlmICAvLyBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMCiAgIHJldHVybiB2
YWx1ZSBeIHN0YXRpY19jYXN0PHNpemVfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZj
b3VudGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hf
c2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgKaW5kZXggNzBk
YTkwZjc5YTQuLjY1NmU5ODA2ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvcmF3X2hhc2hfc2V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNo
X3NldC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC05MSwz
MCArOTEsNiBAQAogI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9SQVdfSEFTSF9TRVRf
SF8KICNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfUkFXX0hBU0hfU0VUX0hfCiAKLSNp
Zm5kZWYgU1dJU1NUQUJMRV9IQVZFX1NTRTIKLSNpZmRlZiBfX1NTRTJfXwotI2RlZmluZSBTV0lT
U1RBQkxFX0hBVkVfU1NFMiAxCi0jZWxzZQotI2RlZmluZSBTV0lTU1RBQkxFX0hBVkVfU1NFMiAw
Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIFNXSVNTVEFCTEVfSEFWRV9TU1NFMwotI2lmZGVm
IF9fU1NTRTNfXwotI2RlZmluZSBTV0lTU1RBQkxFX0hBVkVfU1NTRTMgMQotI2Vsc2UKLSNkZWZp
bmUgU1dJU1NUQUJMRV9IQVZFX1NTU0UzIDAKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBTV0lTU1RB
QkxFX0hBVkVfU1NTRTMgJiYgIVNXSVNTVEFCTEVfSEFWRV9TU0UyCi0jZXJyb3IgIkJhZCBjb25m
aWd1cmF0aW9uISIKLSNlbmRpZgotCi0jaWYgU1dJU1NUQUJMRV9IQVZFX1NTRTIKLSNpbmNsdWRl
IDx4ODZpbnRyaW4uaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUg
PGNtYXRoPgogI2luY2x1ZGUgPGNzdGRpbnQ+CkBAIC0xMjksMTQgKzEwNSwxNiBAQAogI2luY2x1
ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVy
bmFsL2VuZGlhbi5oIgogI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiCisjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvY29tbW9uLmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZS5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
dGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9oYXNodGFibGVfZGVidWdfaG9va3MuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXNodGFibGV6X3NhbXBsZXIuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXZlX3NzZS5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2xh
eW91dC5oIgogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImFic2wv
bWV0YS90eXBlX3RyYWl0cy5oIgotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNp
bmNsdWRlICJhYnNsL3V0aWxpdHkvdXRpbGl0eS5oIgogCiBuYW1lc3BhY2UgYWJzbCB7CkBAIC0x
ODcsMTIgKzE2NSw2IEBAIHN0cnVjdCBJc0RlY29tcG9zYWJsZTwKICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmRlY2x2YWw8VHM+KCkuLi4pKT4sCiAgICAgUG9saWN5LCBIYXNoLCBFcSwgVHMu
Li4+IDogc3RkOjp0cnVlX3R5cGUge307CiAKLXRlbXBsYXRlIDxjbGFzcywgY2xhc3MgPSB2b2lk
Pgotc3RydWN0IElzVHJhbnNwYXJlbnQgOiBzdGQ6OmZhbHNlX3R5cGUge307Ci10ZW1wbGF0ZSA8
Y2xhc3MgVD4KLXN0cnVjdCBJc1RyYW5zcGFyZW50PFQsIGFic2w6OnZvaWRfdDx0eXBlbmFtZSBU
Ojppc190cmFuc3BhcmVudD4+Ci0gICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsKLQogLy8gVE9ETyhh
bGtpcyk6IFN3aXRjaCB0byBzdGQ6OmlzX25vdGhyb3dfc3dhcHBhYmxlIHdoZW4gZ2NjL2NsYW5n
IHN1cHBvcnRzIGl0LgogdGVtcGxhdGUgPGNsYXNzIFQ+CiBjb25zdGV4cHIgYm9vbCBJc05vVGhy
b3dTd2FwcGFibGUoKSB7CkBAIC0yMDIsMTQgKzE3NCwxNyBAQCBjb25zdGV4cHIgYm9vbCBJc05v
VGhyb3dTd2FwcGFibGUoKSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogaW50IFRyYWlsaW5n
WmVyb3MoVCB4KSB7Ci0gIHJldHVybiBzaXplb2YoVCkgPT0gOCA/IGJhc2VfaW50ZXJuYWw6OkNv
dW50VHJhaWxpbmdaZXJvc05vblplcm82NCh4KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBi
YXNlX2ludGVybmFsOjpDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvMzIoeCk7CisgIHJldHVybiBz
aXplb2YoVCkgPT0gOCA/IGJhc2VfaW50ZXJuYWw6OkNvdW50VHJhaWxpbmdaZXJvc05vblplcm82
NCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih4
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogYmFzZV9pbnRlcm5hbDo6Q291bnRUcmFpbGlu
Z1plcm9zTm9uWmVybzMyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHgpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbnQgTGVhZGlu
Z1plcm9zKFQgeCkgewotICByZXR1cm4gc2l6ZW9mKFQpID09IDggPyBiYXNlX2ludGVybmFsOjpD
b3VudExlYWRpbmdaZXJvczY0KHgpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IGJhc2VfaW50
ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zMzIoeCk7CisgIHJldHVybiBzaXplb2YoVCkgPT0gOAor
ICAgICAgICAgICAgID8gYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oeCkpCisgICAgICAgICAgICAgOiBiYXNlX2ludGVybmFsOjpDb3VudExl
YWRpbmdaZXJvczMyKHN0YXRpY19jYXN0PHVpbnQzMl90Pih4KSk7CiB9CiAKIC8vIEFuIGFic3Ry
YWN0aW9uIG92ZXIgYSBiaXRtYXNrLiBJdCBwcm92aWRlcyBhbiBlYXN5IHdheSB0byBpdGVyYXRl
IHRocm91Z2ggdGhlCkBAIC0zMzcsMTAgKzMxMiwyNyBAQCBpbmxpbmUgYm9vbCBJc0RlbGV0ZWQo
Y3RybF90IGMpIHsgcmV0dXJuIGMgPT0ga0RlbGV0ZWQ7IH0KIGlubGluZSBib29sIElzRW1wdHlP
ckRlbGV0ZWQoY3RybF90IGMpIHsgcmV0dXJuIGMgPCBrU2VudGluZWw7IH0KIAogI2lmIFNXSVNT
VEFCTEVfSEFWRV9TU0UyCi1zdHJ1Y3QgR3JvdXAgeworCisvLyBodHRwczovL2dpdGh1Yi5jb20v
YWJzZWlsL2Fic2VpbC1jcHAvaXNzdWVzLzIwOQorLy8gaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6
aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9ODc4NTMKKy8vIF9tbV9jbXBndF9lcGk4IGlzIGJyb2tlbiB1
bmRlciBHQ0Mgd2l0aCAtZnVuc2lnbmVkLWNoYXIKKy8vIFdvcmsgYXJvdW5kIHRoaXMgYnkgdXNp
bmcgdGhlIHBvcnRhYmxlIGltcGxlbWVudGF0aW9uIG9mIEdyb3VwCisvLyB3aGVuIHVzaW5nIC1m
dW5zaWduZWQtY2hhciB1bmRlciBHQ0MuCitpbmxpbmUgX19tMTI4aSBfbW1fY21wZ3RfZXBpOF9m
aXhlZChfX20xMjhpIGEsIF9fbTEyOGkgYikgeworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFk
ZWZpbmVkKF9fY2xhbmdfXykKKyAgaWYgKHN0ZDo6aXNfdW5zaWduZWQ8Y2hhcj46OnZhbHVlKSB7
CisgICAgY29uc3QgX19tMTI4aSBtYXNrID0gX21tX3NldDFfZXBpOCgweDgwKTsKKyAgICBjb25z
dCBfX20xMjhpIGRpZmYgPSBfbW1fc3Vic19lcGk4KGIsIGEpOworICAgIHJldHVybiBfbW1fY21w
ZXFfZXBpOChfbW1fYW5kX3NpMTI4KGRpZmYsIG1hc2spLCBtYXNrKTsKKyAgfQorI2VuZGlmCisg
IHJldHVybiBfbW1fY21wZ3RfZXBpOChhLCBiKTsKK30KKworc3RydWN0IEdyb3VwU3NlMkltcGwg
ewogICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrV2lkdGggPSAxNjsgIC8vIHRoZSBudW1iZXIg
b2Ygc2xvdHMgcGVyIGdyb3VwCiAKLSAgZXhwbGljaXQgR3JvdXAoY29uc3QgY3RybF90KiBwb3Mp
IHsKKyAgZXhwbGljaXQgR3JvdXBTc2UySW1wbChjb25zdCBjdHJsX3QqIHBvcykgewogICAgIGN0
cmwgPSBfbW1fbG9hZHVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBfX20xMjhpKj4ocG9z
KSk7CiAgIH0KIApAQCAtMzU4LDcgKzM1MCw3IEBAIHN0cnVjdCBHcm91cCB7CiAgICAgcmV0dXJu
IEJpdE1hc2s8dWludDMyX3QsIGtXaWR0aD4oCiAgICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KF9t
bV9zaWduX2VwaTgoY3RybCwgY3RybCkpKTsKICNlbHNlCi0gICAgcmV0dXJuIE1hdGNoKGtFbXB0
eSk7CisgICAgcmV0dXJuIE1hdGNoKHN0YXRpY19jYXN0PGgyX3Q+KGtFbXB0eSkpOwogI2VuZGlm
CiAgIH0KIApAQCAtMzY2LDIzICszNTgsMjQgQEAgc3RydWN0IEdyb3VwIHsKICAgQml0TWFzazx1
aW50MzJfdCwga1dpZHRoPiBNYXRjaEVtcHR5T3JEZWxldGVkKCkgY29uc3QgewogICAgIGF1dG8g
c3BlY2lhbCA9IF9tbV9zZXQxX2VwaTgoa1NlbnRpbmVsKTsKICAgICByZXR1cm4gQml0TWFzazx1
aW50MzJfdCwga1dpZHRoPigKLSAgICAgICAgX21tX21vdmVtYXNrX2VwaTgoX21tX2NtcGd0X2Vw
aTgoc3BlY2lhbCwgY3RybCkpKTsKKyAgICAgICAgX21tX21vdmVtYXNrX2VwaTgoX21tX2NtcGd0
X2VwaThfZml4ZWQoc3BlY2lhbCwgY3RybCkpKTsKICAgfQogCiAgIC8vIFJldHVybnMgdGhlIG51
bWJlciBvZiB0cmFpbGluZyBlbXB0eSBvciBkZWxldGVkIGVsZW1lbnRzIGluIHRoZSBncm91cC4K
ICAgdWludDMyX3QgQ291bnRMZWFkaW5nRW1wdHlPckRlbGV0ZWQoKSBjb25zdCB7CiAgICAgYXV0
byBzcGVjaWFsID0gX21tX3NldDFfZXBpOChrU2VudGluZWwpOwotICAgIHJldHVybiBUcmFpbGlu
Z1plcm9zKF9tbV9tb3ZlbWFza19lcGk4KF9tbV9jbXBndF9lcGk4KHNwZWNpYWwsIGN0cmwpKSAr
IDEpOworICAgIHJldHVybiBUcmFpbGluZ1plcm9zKAorICAgICAgICBfbW1fbW92ZW1hc2tfZXBp
OChfbW1fY21wZ3RfZXBpOF9maXhlZChzcGVjaWFsLCBjdHJsKSkgKyAxKTsKICAgfQogCiAgIHZv
aWQgQ29udmVydFNwZWNpYWxUb0VtcHR5QW5kRnVsbFRvRGVsZXRlZChjdHJsX3QqIGRzdCkgY29u
c3QgewotICAgIGF1dG8gbXNicyA9IF9tbV9zZXQxX2VwaTgoMHg4MCk7CisgICAgYXV0byBtc2Jz
ID0gX21tX3NldDFfZXBpOChzdGF0aWNfY2FzdDxjaGFyPigtMTI4KSk7CiAgICAgYXV0byB4MTI2
ID0gX21tX3NldDFfZXBpOCgxMjYpOwogI2lmIFNXSVNTVEFCTEVfSEFWRV9TU1NFMwogICAgIGF1
dG8gcmVzID0gX21tX29yX3NpMTI4KF9tbV9zaHVmZmxlX2VwaTgoeDEyNiwgY3RybCksIG1zYnMp
OwogI2Vsc2UKICAgICBhdXRvIHplcm8gPSBfbW1fc2V0emVyb19zaTEyOCgpOwotICAgIGF1dG8g
c3BlY2lhbF9tYXNrID0gX21tX2NtcGd0X2VwaTgoemVybywgY3RybCk7CisgICAgYXV0byBzcGVj
aWFsX21hc2sgPSBfbW1fY21wZ3RfZXBpOF9maXhlZCh6ZXJvLCBjdHJsKTsKICAgICBhdXRvIHJl
cyA9IF9tbV9vcl9zaTEyOChtc2JzLCBfbW1fYW5kbm90X3NpMTI4KHNwZWNpYWxfbWFzaywgeDEy
NikpOwogI2VuZGlmCiAgICAgX21tX3N0b3JldV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEy
OGkqPihkc3QpLCByZXMpOwpAQCAtMzkwLDExICszODMsMTMgQEAgc3RydWN0IEdyb3VwIHsKIAog
ICBfX20xMjhpIGN0cmw7CiB9OwotI2Vsc2UKLXN0cnVjdCBHcm91cCB7CisjZW5kaWYgIC8vIFNX
SVNTVEFCTEVfSEFWRV9TU0UyCisKK3N0cnVjdCBHcm91cFBvcnRhYmxlSW1wbCB7CiAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGtXaWR0aCA9IDg7CiAKLSAgZXhwbGljaXQgR3JvdXAoY29uc3Qg
Y3RybF90KiBwb3MpIDogY3RybChsaXR0bGVfZW5kaWFuOjpMb2FkNjQocG9zKSkge30KKyAgZXhw
bGljaXQgR3JvdXBQb3J0YWJsZUltcGwoY29uc3QgY3RybF90KiBwb3MpCisgICAgICA6IGN0cmwo
bGl0dGxlX2VuZGlhbjo6TG9hZDY0KHBvcykpIHt9CiAKICAgQml0TWFzazx1aW50NjRfdCwga1dp
ZHRoLCAzPiBNYXRjaChoMl90IGhhc2gpIGNvbnN0IHsKICAgICAvLyBGb3IgdGhlIHRlY2huaXF1
ZSwgc2VlOgpAQCAtNDQxLDE1ICs0MzYsMTcgQEAgc3RydWN0IEdyb3VwIHsKIAogICB1aW50NjRf
dCBjdHJsOwogfTsKLSNlbmRpZiAgLy8gU1dJU1NUQUJMRV9IQVZFX1NTRTIKKworI2lmIFNXSVNT
VEFCTEVfSEFWRV9TU0UyCit1c2luZyBHcm91cCA9IEdyb3VwU3NlMkltcGw7CisjZWxzZQordXNp
bmcgR3JvdXAgPSBHcm91cFBvcnRhYmxlSW1wbDsKKyNlbmRpZgogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
UG9saWN5LCBjbGFzcyBIYXNoLCBjbGFzcyBFcSwgY2xhc3MgQWxsb2M+CiBjbGFzcyByYXdfaGFz
aF9zZXQ7CiAKLQotaW5saW5lIGJvb2wgSXNWYWxpZENhcGFjaXR5KHNpemVfdCBuKSB7Ci0gIHJl
dHVybiAoKG4gKyAxKSAmIG4pID09IDAgJiYgbiA+PSBHcm91cDo6a1dpZHRoIC0gMTsKLX0KK2lu
bGluZSBib29sIElzVmFsaWRDYXBhY2l0eShzaXplX3QgbikgeyByZXR1cm4gKChuICsgMSkgJiBu
KSA9PSAwICYmIG4gPiAwOyB9CiAKIC8vIFBSRUNPTkRJVElPTjoKIC8vICAgSXNWYWxpZENhcGFj
aXR5KGNhcGFjaXR5KQpAQCAtNDcxLDE1MiArNDY4LDMyIEBAIGlubGluZSB2b2lkIENvbnZlcnRE
ZWxldGVkVG9FbXB0eUFuZEZ1bGxUb0RlbGV0ZWQoCiAgIGN0cmxbY2FwYWNpdHldID0ga1NlbnRp
bmVsOwogfQogCi0vLyBSb3VuZHMgdXAgdGhlIGNhcGFjaXR5IHRvIHRoZSBuZXh0IHBvd2VyIG9m
IDIgbWludXMgMSBhbmQgZW5zdXJlcyBpdCBpcwotLy8gZ3JlYXRlciBvciBlcXVhbCB0byBHcm91
cDo6a1dpZHRoIC0gMS4KKy8vIFJvdW5kcyB1cCB0aGUgY2FwYWNpdHkgdG8gdGhlIG5leHQgcG93
ZXIgb2YgMiBtaW51cyAxLCB3aXRoIGEgbWluaW11bSBvZiAxLgogaW5saW5lIHNpemVfdCBOb3Jt
YWxpemVDYXBhY2l0eShzaXplX3QgbikgewotICBjb25zdGV4cHIgc2l6ZV90IGtNaW5DYXBhY2l0
eSA9IEdyb3VwOjprV2lkdGggLSAxOwotICByZXR1cm4gbiA8PSBrTWluQ2FwYWNpdHkKLSAgICAg
ICAgICAgICA/IGtNaW5DYXBhY2l0eQotICAgICAgICAgICAgIDogc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSA+PiBMZWFkaW5nWmVyb3Mobik7CisgIHJldHVybiBuID8gfnNpemVf
dHt9ID4+IExlYWRpbmdaZXJvcyhuKSA6IDE7CiB9CiAKLS8vIFRoZSBub2RlX2hhbmRsZSBjb25j
ZXB0IGZyb20gQysrMTcuCi0vLyBXZSBzcGVjaWFsaXplIG5vZGVfaGFuZGxlIGZvciBzZXRzIGFu
ZCBtYXBzLiBub2RlX2hhbmRsZV9iYXNlIGhvbGRzIHRoZQotLy8gY29tbW9uIEFQSSBvZiBib3Ro
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFBvbGljeSwgdHlwZW5hbWUgQWxsb2M+Ci1jbGFzcyBub2Rl
X2hhbmRsZV9iYXNlIHsKLSBwcm90ZWN0ZWQ6Ci0gIHVzaW5nIFBvbGljeVRyYWl0cyA9IGhhc2hf
cG9saWN5X3RyYWl0czxQb2xpY3k+OwotICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBQb2xp
Y3lUcmFpdHM6OnNsb3RfdHlwZTsKLQotIHB1YmxpYzoKLSAgdXNpbmcgYWxsb2NhdG9yX3R5cGUg
PSBBbGxvYzsKLQotICBjb25zdGV4cHIgbm9kZV9oYW5kbGVfYmFzZSgpIHt9Ci0gIG5vZGVfaGFu
ZGxlX2Jhc2Uobm9kZV9oYW5kbGVfYmFzZSYmIG90aGVyKSBub2V4Y2VwdCB7Ci0gICAgKnRoaXMg
PSBzdGQ6Om1vdmUob3RoZXIpOwotICB9Ci0gIH5ub2RlX2hhbmRsZV9iYXNlKCkgeyBkZXN0cm95
KCk7IH0KLSAgbm9kZV9oYW5kbGVfYmFzZSYgb3BlcmF0b3I9KG5vZGVfaGFuZGxlX2Jhc2UmJiBv
dGhlcikgewotICAgIGRlc3Ryb3koKTsKLSAgICBpZiAoIW90aGVyLmVtcHR5KCkpIHsKLSAgICAg
IGFsbG9jXyA9IG90aGVyLmFsbG9jXzsKLSAgICAgIFBvbGljeVRyYWl0czo6dHJhbnNmZXIoYWxs
b2MoKSwgc2xvdCgpLCBvdGhlci5zbG90KCkpOwotICAgICAgb3RoZXIucmVzZXQoKTsKLSAgICB9
Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgYm9vbCBlbXB0eSgpIGNvbnN0IG5vZXhjZXB0
IHsgcmV0dXJuICFhbGxvY187IH0KLSAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuICFlbXB0eSgpOyB9Ci0gIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0
b3IoKSBjb25zdCB7IHJldHVybiAqYWxsb2NfOyB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHRlbXBsYXRl
IDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4KLSAgZnJpZW5kIGNsYXNz
IHJhd19oYXNoX3NldDsKLQotICBub2RlX2hhbmRsZV9iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBhLCBzbG90X3R5cGUqIHMpIDogYWxsb2NfKGEpIHsKLSAgICBQb2xpY3lUcmFpdHM6OnRyYW5z
ZmVyKGFsbG9jKCksIHNsb3QoKSwgcyk7Ci0gIH0KLQotICB2b2lkIGRlc3Ryb3koKSB7Ci0gICAg
aWYgKCFlbXB0eSgpKSB7Ci0gICAgICBQb2xpY3lUcmFpdHM6OmRlc3Ryb3koYWxsb2MoKSwgc2xv
dCgpKTsKLSAgICAgIHJlc2V0KCk7Ci0gICAgfQotICB9Ci0KLSAgdm9pZCByZXNldCgpIHsKLSAg
ICBhc3NlcnQoYWxsb2NfLmhhc192YWx1ZSgpKTsKLSAgICBhbGxvY18gPSBhYnNsOjpudWxsb3B0
OwotICB9Ci0KLSAgc2xvdF90eXBlKiBzbG90KCkgY29uc3QgewotICAgIGFzc2VydCghZW1wdHko
KSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8c2xvdF90eXBlKj4oc3RkOjphZGRyZXNz
b2Yoc2xvdF9zcGFjZV8pKTsKLSAgfQotICBhbGxvY2F0b3JfdHlwZSogYWxsb2MoKSB7IHJldHVy
biBzdGQ6OmFkZHJlc3NvZigqYWxsb2NfKTsgfQotCi0gcHJpdmF0ZToKLSAgYWJzbDo6b3B0aW9u
YWw8YWxsb2NhdG9yX3R5cGU+IGFsbG9jXzsKLSAgbXV0YWJsZSBhYnNsOjphbGlnbmVkX3N0b3Jh
Z2VfdDxzaXplb2Yoc2xvdF90eXBlKSwgYWxpZ25vZihzbG90X3R5cGUpPgotICAgICAgc2xvdF9z
cGFjZV87Ci19OwotCi0vLyBGb3Igc2V0cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBQb2xpY3ksIHR5
cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSA9IHZvaWQ+Ci1jbGFzcyBub2RlX2hhbmRsZSA6IHB1Ymxp
YyBub2RlX2hhbmRsZV9iYXNlPFBvbGljeSwgQWxsb2M+IHsKLSAgdXNpbmcgQmFzZSA9IHR5cGVu
YW1lIG5vZGVfaGFuZGxlOjpub2RlX2hhbmRsZV9iYXNlOwotCi0gcHVibGljOgotICB1c2luZyB2
YWx1ZV90eXBlID0gdHlwZW5hbWUgQmFzZTo6UG9saWN5VHJhaXRzOjp2YWx1ZV90eXBlOwotCi0g
IGNvbnN0ZXhwciBub2RlX2hhbmRsZSgpIHt9Ci0KLSAgdmFsdWVfdHlwZSYgdmFsdWUoKSBjb25z
dCB7Ci0gICAgcmV0dXJuIEJhc2U6OlBvbGljeVRyYWl0czo6ZWxlbWVudCh0aGlzLT5zbG90KCkp
OwotICB9Ci0KLSBwcml2YXRlOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBl
bmFtZSwgdHlwZW5hbWU+Ci0gIGZyaWVuZCBjbGFzcyByYXdfaGFzaF9zZXQ7Ci0KLSAgbm9kZV9o
YW5kbGUoY29uc3QgQWxsb2MmIGEsIHR5cGVuYW1lIEJhc2U6OnNsb3RfdHlwZSogcykgOiBCYXNl
KGEsIHMpIHt9Ci19OwotCi0vLyBGb3IgbWFwcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBQb2xpY3ks
IHR5cGVuYW1lIEFsbG9jPgotY2xhc3Mgbm9kZV9oYW5kbGU8UG9saWN5LCBBbGxvYywgYWJzbDo6
dm9pZF90PHR5cGVuYW1lIFBvbGljeTo6bWFwcGVkX3R5cGU+PgotICAgIDogcHVibGljIG5vZGVf
aGFuZGxlX2Jhc2U8UG9saWN5LCBBbGxvYz4gewotICB1c2luZyBCYXNlID0gdHlwZW5hbWUgbm9k
ZV9oYW5kbGU6Om5vZGVfaGFuZGxlX2Jhc2U7Ci0KLSBwdWJsaWM6Ci0gIHVzaW5nIGtleV90eXBl
ID0gdHlwZW5hbWUgUG9saWN5OjprZXlfdHlwZTsKLSAgdXNpbmcgbWFwcGVkX3R5cGUgPSB0eXBl
bmFtZSBQb2xpY3k6Om1hcHBlZF90eXBlOwotCi0gIGNvbnN0ZXhwciBub2RlX2hhbmRsZSgpIHt9
Ci0KLSAgYXV0byBrZXkoKSBjb25zdCAtPiBkZWNsdHlwZShCYXNlOjpQb2xpY3lUcmFpdHM6Omtl
eSh0aGlzLT5zbG90KCkpKSB7Ci0gICAgcmV0dXJuIEJhc2U6OlBvbGljeVRyYWl0czo6a2V5KHRo
aXMtPnNsb3QoKSk7Ci0gIH0KLQotICBtYXBwZWRfdHlwZSYgbWFwcGVkKCkgY29uc3QgewotICAg
IHJldHVybiBCYXNlOjpQb2xpY3lUcmFpdHM6OnZhbHVlKAotICAgICAgICAmQmFzZTo6UG9saWN5
VHJhaXRzOjplbGVtZW50KHRoaXMtPnNsb3QoKSkpOworLy8gV2UgdXNlIDcvOHRoIGFzIG1heGlt
dW0gbG9hZCBmYWN0b3IuCisvLyBGb3IgMTYtd2lkZSBncm91cHMsIHRoYXQgZ2l2ZXMgYW4gYXZl
cmFnZSBvZiB0d28gZW1wdHkgc2xvdHMgcGVyIGdyb3VwLgoraW5saW5lIHNpemVfdCBDYXBhY2l0
eVRvR3Jvd3RoKHNpemVfdCBjYXBhY2l0eSkgeworICBhc3NlcnQoSXNWYWxpZENhcGFjaXR5KGNh
cGFjaXR5KSk7CisgIC8vIGBjYXBhY2l0eSo3LzhgCisgIGlmIChHcm91cDo6a1dpZHRoID09IDgg
JiYgY2FwYWNpdHkgPT0gNykgeworICAgIC8vIHgteC84IGRvZXMgbm90IHdvcmsgd2hlbiB4PT03
LgorICAgIHJldHVybiA2OwogICB9Ci0KLSBwcml2YXRlOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUs
IHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWU+Ci0gIGZyaWVuZCBjbGFzcyByYXdfaGFzaF9z
ZXQ7Ci0KLSAgbm9kZV9oYW5kbGUoY29uc3QgQWxsb2MmIGEsIHR5cGVuYW1lIEJhc2U6OnNsb3Rf
dHlwZSogcykgOiBCYXNlKGEsIHMpIHt9Ci19OwotCi0vLyBJbXBsZW1lbnQgdGhlIGluc2VydF9y
ZXR1cm5fdHlwZTw+IGNvbmNlcHQgb2YgQysrMTcuCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3Is
IGNsYXNzIE5vZGVUeXBlPgotc3RydWN0IGluc2VydF9yZXR1cm5fdHlwZSB7Ci0gIEl0ZXJhdG9y
IHBvc2l0aW9uOwotICBib29sIGluc2VydGVkOwotICBOb2RlVHlwZSBub2RlOwotfTsKLQotLy8g
SGVscGVyIHRyYWl0IHRvIGFsbG93IG9yIGRpc2FsbG93IGFyYml0cmFyeSBrZXlzIHdoZW4gdGhl
IGhhc2ggYW5kCi0vLyBlcSBmdW5jdGlvbnMgYXJlIHRyYW5zcGFyZW50LgotLy8gSXQgaXMgdmVy
eSBpbXBvcnRhbnQgdGhhdCB0aGUgaW5uZXIgdGVtcGxhdGUgaXMgYW4gYWxpYXMgYW5kIHRoYXQg
dGhlIHR5cGUgaXQKLS8vIHByb2R1Y2VzIGlzIG5vdCBhIGRlcGVuZGVudCB0eXBlLiBPdGhlcndp
c2UsIHR5cGUgZGVkdWN0aW9uIHdvdWxkIGZhaWwuCi10ZW1wbGF0ZSA8Ym9vbCBpc190cmFuc3Bh
cmVudD4KLXN0cnVjdCBLZXlBcmcgewotICAvLyBUcmFuc3BhcmVudC4gRm9yd2FyZCBgS2AuCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBrZXlfdHlwZT4KLSAgdXNpbmcgdHlwZSA9
IEs7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IEtleUFyZzxmYWxzZT4gewotICAvLyBOb3Qg
dHJhbnNwYXJlbnQuIEFsd2F5cyB1c2UgYGtleV90eXBlYC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IEssIHR5cGVuYW1lIGtleV90eXBlPgotICB1c2luZyB0eXBlID0ga2V5X3R5cGU7Ci19OworICBy
ZXR1cm4gY2FwYWNpdHkgLSBjYXBhY2l0eSAvIDg7Cit9CisvLyBGcm9tIGRlc2lyZWQgImdyb3d0
aCIgdG8gYSBsb3dlcmJvdW5kIG9mIHRoZSBuZWNlc3NhcnkgY2FwYWNpdHkuCisvLyBNaWdodCBu
b3QgYmUgYSB2YWxpZCBvbmUgYW5kIHJlcXVpcmVkIE5vcm1hbGl6ZUNhcGFjaXR5KCkuCitpbmxp
bmUgc2l6ZV90IEdyb3d0aFRvTG93ZXJib3VuZENhcGFjaXR5KHNpemVfdCBncm93dGgpIHsKKyAg
Ly8gYGdyb3d0aCo4LzdgCisgIGlmIChHcm91cDo6a1dpZHRoID09IDggJiYgZ3Jvd3RoID09IDcp
IHsKKyAgICAvLyB4Kyh4LTEpLzcgZG9lcyBub3Qgd29yayB3aGVuIHg9PTcuCisgICAgcmV0dXJu
IDg7CisgIH0KKyAgcmV0dXJuIGdyb3d0aCArIHN0YXRpY19jYXN0PHNpemVfdD4oKHN0YXRpY19j
YXN0PGludDY0X3Q+KGdyb3d0aCkgLSAxKSAvIDcpOworfQogCiAvLyBQb2xpY3k6IGEgcG9saWN5
IGRlZmluZXMgaG93IHRvIHBlcmZvcm0gZGlmZmVyZW50IG9wZXJhdGlvbnMgb24KIC8vIHRoZSBz
bG90cyBvZiB0aGUgaGFzaHRhYmxlIChzZWUgaGFzaF9wb2xpY3lfdHJhaXRzLmggZm9yIHRoZSBm
dWxsIGludGVyZmFjZQpAQCAtNjMyLDE0ICs1MDksMTQgQEAgc3RydWN0IEtleUFyZzxmYWxzZT4g
ewogLy8gaWYgdGhleSBhcmUgZXF1YWwsIGZhbHNlIGlmIHRoZXkgYXJlIG5vdC4gSWYgdHdvIGtl
eXMgY29tcGFyZSBlcXVhbCwgdGhlbgogLy8gdGhlaXIgaGFzaCB2YWx1ZXMgYXMgZGVmaW5lZCBi
eSBIYXNoIE1VU1QgYmUgZXF1YWwuCiAvLwotLy8gQWxsb2NhdG9yOiBhbiBBbGxvY2F0b3IgW2h0
dHA6Ly9kZXZkb2NzLmlvL2NwcC9jb25jZXB0L2FsbG9jYXRvcl0gd2l0aCB3aGljaAorLy8gQWxs
b2NhdG9yOiBhbiBBbGxvY2F0b3IgW2h0dHBzOi8vZGV2ZG9jcy5pby9jcHAvY29uY2VwdC9hbGxv
Y2F0b3JdIHdpdGggd2hpY2gKIC8vIHRoZSBzdG9yYWdlIG9mIHRoZSBoYXNodGFibGUgd2lsbCBi
ZSBhbGxvY2F0ZWQgYW5kIHRoZSBlbGVtZW50cyB3aWxsIGJlCiAvLyBjb25zdHJ1Y3RlZCBhbmQg
ZGVzdHJveWVkLgogdGVtcGxhdGUgPGNsYXNzIFBvbGljeSwgY2xhc3MgSGFzaCwgY2xhc3MgRXEs
IGNsYXNzIEFsbG9jPgogY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgdXNpbmcgUG9saWN5VHJhaXRz
ID0gaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeT47Ci0gIHVzaW5nIEtleUFyZ0ltcGwgPSBjb250
YWluZXJfaW50ZXJuYWw6OktleUFyZzxJc1RyYW5zcGFyZW50PEVxPjo6dmFsdWUgJiYKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzVHJhbnNwYXJlbnQ8
SGFzaD46OnZhbHVlPjsKKyAgdXNpbmcgS2V5QXJnSW1wbCA9CisgICAgICBLZXlBcmc8SXNUcmFu
c3BhcmVudDxFcT46OnZhbHVlICYmIElzVHJhbnNwYXJlbnQ8SGFzaD46OnZhbHVlPjsKIAogIHB1
YmxpYzoKICAgdXNpbmcgaW5pdF90eXBlID0gdHlwZW5hbWUgUG9saWN5VHJhaXRzOjppbml0X3R5
cGU7CkBAIC02NjIsNyArNTM5LDcgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgICAgIGFsbG9j
YXRvcl90eXBlPjo6dGVtcGxhdGUgcmViaW5kX3RyYWl0czx2YWx1ZV90eXBlPjo6Y29uc3RfcG9p
bnRlcjsKIAogICAvLyBBbGlhcyB1c2VkIGZvciBoZXRlcm9nZW5lb3VzIGxvb2t1cCBmdW5jdGlv
bnMuCi0gIC8vIGBrZXlfYXJnPEs+YCBldmFsdWF0ZXMgdG8gYEtgIHdoZW4gdGhlIGZ1bmN0b3Jz
IGFyZSB0cmFucGFyZW50IGFuZCB0bworICAvLyBga2V5X2FyZzxLPmAgZXZhbHVhdGVzIHRvIGBL
YCB3aGVuIHRoZSBmdW5jdG9ycyBhcmUgdHJhbnNwYXJlbnQgYW5kIHRvCiAgIC8vIGBrZXlfdHlw
ZWAgb3RoZXJ3aXNlLiBJdCBwZXJtaXRzIHRlbXBsYXRlIGFyZ3VtZW50IGRlZHVjdGlvbiBvbiBg
S2AgZm9yIHRoZQogICAvLyB0cmFuc3BhcmVudCBjYXNlLgogICB0ZW1wbGF0ZSA8Y2xhc3MgSz4K
QEAgLTc4MCw3ICs2NTcsMTEgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgICB9CiAKICAgICBj
dHJsX3QqIGN0cmxfID0gbnVsbHB0cjsKLSAgICBzbG90X3R5cGUqIHNsb3RfOworICAgIC8vIFRv
IGF2b2lkIHVuaW5pdGlhbGl6ZWQgbWVtYmVyIHdhcm5pZ3MsIHB1dCBzbG90XyBpbiBhbiBhbm9u
eW1vdXMgdW5pb24uCisgICAgLy8gVGhlIG1lbWJlciBpcyBub3QgaW5pdGlhbGl6ZWQgb24gc2lu
Z2xldG9uIGFuZCBlbmQgaXRlcmF0b3JzLgorICAgIHVuaW9uIHsKKyAgICAgIHNsb3RfdHlwZSog
c2xvdF87CisgICAgfTsKICAgfTsKIAogICBjbGFzcyBjb25zdF9pdGVyYXRvciB7CkBAIC04MjAs
NyArNzAxLDggQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgICBpdGVyYXRvciBpbm5lcl87CiAg
IH07CiAKLSAgdXNpbmcgbm9kZV90eXBlID0gY29udGFpbmVyX2ludGVybmFsOjpub2RlX2hhbmRs
ZTxQb2xpY3ksIEFsbG9jPjsKKyAgdXNpbmcgbm9kZV90eXBlID0gbm9kZV9oYW5kbGU8UG9saWN5
LCBoYXNoX3BvbGljeV90cmFpdHM8UG9saWN5PiwgQWxsb2M+OworICB1c2luZyBpbnNlcnRfcmV0
dXJuX3R5cGUgPSBJbnNlcnRSZXR1cm5UeXBlPGl0ZXJhdG9yLCBub2RlX3R5cGU+OwogCiAgIHJh
d19oYXNoX3NldCgpIG5vZXhjZXB0KAogICAgICAgc3RkOjppc19ub3Rocm93X2RlZmF1bHRfY29u
c3RydWN0aWJsZTxoYXNoZXI+Ojp2YWx1ZSYmCkBAIC04MzMsNyArNzE1LDcgQEAgY2xhc3MgcmF3
X2hhc2hfc2V0IHsKICAgICAgIDogY3RybF8oRW1wdHlHcm91cCgpKSwgc2V0dGluZ3NfKDAsIGhh
c2gsIGVxLCBhbGxvYykgewogICAgIGlmIChidWNrZXRfY291bnQpIHsKICAgICAgIGNhcGFjaXR5
XyA9IE5vcm1hbGl6ZUNhcGFjaXR5KGJ1Y2tldF9jb3VudCk7Ci0gICAgICBncm93dGhfbGVmdCgp
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihjYXBhY2l0eV8gKiBrTWF4TG9hZEZhY3Rvcik7CisgICAg
ICByZXNldF9ncm93dGhfbGVmdCgpOwogICAgICAgaW5pdGlhbGl6ZV9zbG90cygpOwogICAgIH0K
ICAgfQpAQCAtODc1LDggKzc1Nyw4IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgIC8vIHRoYXQg
YWNjZXB0IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBhbmQgc3RkOjppbml0aWFsaXplcl9saXN0
PGluaXRfdHlwZT4uCiAgIC8vIFRoaXMgaXMgYWR2YW50YWdlb3VzIGZvciBwZXJmb3JtYW5jZS4K
ICAgLy8KLSAgLy8gICAvLyBUdXJucyB7ImFiYyIsICJkZWYifSBpbnRvIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxzdGQ6OnN0cmluZz4sIHRoZW4gY29waWVzCi0gIC8vICAgLy8gdGhlIHN0cmluZ3Mg
aW50byB0aGUgc2V0LgorICAvLyAgIC8vIFR1cm5zIHsiYWJjIiwgImRlZiJ9IGludG8gc3RkOjpp
bml0aWFsaXplcl9saXN0PHN0ZDo6c3RyaW5nPiwgdGhlbgorICAvLyAgIC8vIGNvcGllcyB0aGUg
c3RyaW5ncyBpbnRvIHRoZSBzZXQuCiAgIC8vICAgc3RkOjp1bm9yZGVyZWRfc2V0PHN0ZDo6c3Ry
aW5nPiBzID0geyJhYmMiLCAiZGVmIn07CiAgIC8vCiAgIC8vICAgLy8gVHVybnMgeyJhYmMiLCAi
ZGVmIn0gaW50byBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+LCB0aGVuCkBAIC05
MzksOSArODIxLDEwIEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgICAgLy8gdGhhbiBhIGZ1bGwg
YGluc2VydGAuCiAgICAgZm9yIChjb25zdCBhdXRvJiB2IDogdGhhdCkgewogICAgICAgY29uc3Qg
c2l6ZV90IGhhc2ggPSBQb2xpY3lUcmFpdHM6OmFwcGx5KEhhc2hFbGVtZW50e2hhc2hfcmVmKCl9
LCB2KTsKLSAgICAgIGNvbnN0IHNpemVfdCBpID0gZmluZF9maXJzdF9ub25fZnVsbChoYXNoKTsK
LSAgICAgIHNldF9jdHJsKGksIEgyKGhhc2gpKTsKLSAgICAgIGVtcGxhY2VfYXQoaSwgdik7Cisg
ICAgICBhdXRvIHRhcmdldCA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAgICBzZXRf
Y3RybCh0YXJnZXQub2Zmc2V0LCBIMihoYXNoKSk7CisgICAgICBlbXBsYWNlX2F0KHRhcmdldC5v
ZmZzZXQsIHYpOworICAgICAgaW5mb3pfLlJlY29yZEluc2VydChoYXNoLCB0YXJnZXQucHJvYmVf
bGVuZ3RoKTsKICAgICB9CiAgICAgc2l6ZV8gPSB0aGF0LnNpemUoKTsKICAgICBncm93dGhfbGVm
dCgpIC09IHRoYXQuc2l6ZSgpOwpAQCAtOTU1LDYgKzgzOCw3IEBAIGNsYXNzIHJhd19oYXNoX3Nl
dCB7CiAgICAgICAgIHNsb3RzXyhhYnNsOjpleGNoYW5nZSh0aGF0LnNsb3RzXywgbnVsbHB0cikp
LAogICAgICAgICBzaXplXyhhYnNsOjpleGNoYW5nZSh0aGF0LnNpemVfLCAwKSksCiAgICAgICAg
IGNhcGFjaXR5XyhhYnNsOjpleGNoYW5nZSh0aGF0LmNhcGFjaXR5XywgMCkpLAorICAgICAgICBp
bmZvel8oYWJzbDo6ZXhjaGFuZ2UodGhhdC5pbmZvel8sIEhhc2h0YWJsZXpJbmZvSGFuZGxlKCkp
KSwKICAgICAgICAgLy8gSGFzaCwgZXF1YWxpdHkgYW5kIGFsbG9jYXRvciBhcmUgY29waWVkIGlu
c3RlYWQgb2YgbW92ZWQgYmVjYXVzZQogICAgICAgICAvLyBgdGhhdGAgbXVzdCBiZSBsZWZ0IHZh
bGlkLiBJZiBIYXNoIGlzIHN0ZDo6ZnVuY3Rpb248S2V5PiwgbW92aW5nIGl0CiAgICAgICAgIC8v
IHdvdWxkIGNyZWF0ZSBhIG51bGxwdHIgZnVuY3RvciB0aGF0IGNhbm5vdCBiZSBjYWxsZWQuCkBA
IC05NzUsNiArODU5LDcgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgICAgIHN0ZDo6c3dhcChz
aXplXywgdGhhdC5zaXplXyk7CiAgICAgICBzdGQ6OnN3YXAoY2FwYWNpdHlfLCB0aGF0LmNhcGFj
aXR5Xyk7CiAgICAgICBzdGQ6OnN3YXAoZ3Jvd3RoX2xlZnQoKSwgdGhhdC5ncm93dGhfbGVmdCgp
KTsKKyAgICAgIHN0ZDo6c3dhcChpbmZvel8sIHRoYXQuaW5mb3pfKTsKICAgICB9IGVsc2Ugewog
ICAgICAgcmVzZXJ2ZSh0aGF0LnNpemUoKSk7CiAgICAgICAvLyBOb3RlOiB0aGlzIHdpbGwgY29w
eSBlbGVtZW50cyBvZiBkZW5zZV9zZXQgYW5kIHVub3JkZXJlZF9zZXQgaW5zdGVhZCBvZgpAQCAt
MTAyMiw5ICs5MDcsOSBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewogICBib29sIGVtcHR5KCkgY29u
c3QgeyByZXR1cm4gIXNpemUoKTsgfQogICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNp
emVfOyB9CiAgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIGNhcGFjaXR5XzsgfQot
ICBzaXplX3QgbWF4X3NpemUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpOyB9CisgIHNpemVfdCBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIChzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCkoKTsgfQogCi0gIHZvaWQgY2xlYXIoKSB7Cisg
IEFCU0xfQVRUUklCVVRFX1JFSU5JVElBTElaRVMgdm9pZCBjbGVhcigpIHsKICAgICAvLyBJdGVy
YXRpbmcgb3ZlciB0aGlzIGNvbnRhaW5lciBpcyBPKGJ1Y2tldF9jb3VudCgpKS4gV2hlbiBidWNr
ZXRfY291bnQoKQogICAgIC8vIGlzIG11Y2ggZ3JlYXRlciB0aGFuIHNpemUoKSwgaXRlcmF0aW9u
IGJlY29tZXMgcHJvaGliaXRpdmVseSBleHBlbnNpdmUuCiAgICAgLy8gRm9yIGNsZWFyKCkgaXQg
aXMgbW9yZSBpbXBvcnRhbnQgdG8gcmV1c2UgdGhlIGFsbG9jYXRlZCBhcnJheSB3aGVuIHRoZQpA
QCAtMTA0Miw5ICs5MjcsMTAgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgICAgIH0KICAgICAg
IHNpemVfID0gMDsKICAgICAgIHJlc2V0X2N0cmwoKTsKLSAgICAgIGdyb3d0aF9sZWZ0KCkgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGNhcGFjaXR5XyAqIGtNYXhMb2FkRmFjdG9yKTsKKyAgICAgIHJl
c2V0X2dyb3d0aF9sZWZ0KCk7CiAgICAgfQogICAgIGFzc2VydChlbXB0eSgpKTsKKyAgICBpbmZv
el8uUmVjb3JkU3RvcmFnZUNoYW5nZWQoMCwgY2FwYWNpdHlfKTsKICAgfQogCiAgIC8vIFRoaXMg
b3ZlcmxvYWQga2lja3MgaW4gd2hlbiB0aGUgYXJndW1lbnQgaXMgYW4gcnZhbHVlIG9mIGluc2Vy
dGFibGUgYW5kCkBAIC0xMDgzLDcgKzk2OSw3IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgIC8v
IFRoaXMgb3ZlcmxvYWQga2lja3MgaW4gd2hlbiB0aGUgYXJndW1lbnQgaXMgYW4gcnZhbHVlIG9m
IGluaXRfdHlwZS4gSXRzCiAgIC8vIHB1cnBvc2UgaXMgdG8gaGFuZGxlIGJyYWNlLWluaXQtbGlz
dCBhcmd1bWVudHMuCiAgIC8vCi0gIC8vICAgZmxhdF9oYXNoX3NldDxzdGQ6OnN0cmluZywgaW50
PiBzOworICAvLyAgIGZsYXRfaGFzaF9tYXA8c3RkOjpzdHJpbmcsIGludD4gczsKICAgLy8gICBz
Lmluc2VydCh7ImFiYyIsIDQyfSk7CiAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0
KGluaXRfdHlwZSYmIHZhbHVlKSB7CiAgICAgcmV0dXJuIGVtcGxhY2Uoc3RkOjptb3ZlKHZhbHVl
KSk7CkBAIC0xMTI0LDEzICsxMDEwLDE0IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgICAgaW5z
ZXJ0KGlsaXN0LmJlZ2luKCksIGlsaXN0LmVuZCgpKTsKICAgfQogCi0gIGluc2VydF9yZXR1cm5f
dHlwZTxpdGVyYXRvciwgbm9kZV90eXBlPiBpbnNlcnQobm9kZV90eXBlJiYgbm9kZSkgeworICBp
bnNlcnRfcmV0dXJuX3R5cGUgaW5zZXJ0KG5vZGVfdHlwZSYmIG5vZGUpIHsKICAgICBpZiAoIW5v
ZGUpIHJldHVybiB7ZW5kKCksIGZhbHNlLCBub2RlX3R5cGUoKX07Ci0gICAgY29uc3QgYXV0byYg
ZWxlbSA9IFBvbGljeVRyYWl0czo6ZWxlbWVudChub2RlLnNsb3QoKSk7CisgICAgY29uc3QgYXV0
byYgZWxlbSA9IFBvbGljeVRyYWl0czo6ZWxlbWVudChDb21tb25BY2Nlc3M6OkdldFNsb3Qobm9k
ZSkpOwogICAgIGF1dG8gcmVzID0gUG9saWN5VHJhaXRzOjphcHBseSgKLSAgICAgICAgSW5zZXJ0
U2xvdDxmYWxzZT57KnRoaXMsIHN0ZDo6bW92ZSgqbm9kZS5zbG90KCkpfSwgZWxlbSk7CisgICAg
ICAgIEluc2VydFNsb3Q8ZmFsc2U+eyp0aGlzLCBzdGQ6Om1vdmUoKkNvbW1vbkFjY2Vzczo6R2V0
U2xvdChub2RlKSl9LAorICAgICAgICBlbGVtKTsKICAgICBpZiAocmVzLnNlY29uZCkgewotICAg
ICAgbm9kZS5yZXNldCgpOworICAgICAgQ29tbW9uQWNjZXNzOjpSZXNldCgmbm9kZSk7CiAgICAg
ICByZXR1cm4ge3Jlcy5maXJzdCwgdHJ1ZSwgbm9kZV90eXBlKCl9OwogICAgIH0gZWxzZSB7CiAg
ICAgICByZXR1cm4ge3Jlcy5maXJzdCwgZmFsc2UsIHN0ZDo6bW92ZShub2RlKX07CkBAIC0xMjk0
LDcgKzExODEsOCBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewogICB9CiAKICAgbm9kZV90eXBlIGV4
dHJhY3QoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pIHsKLSAgICBub2RlX3R5cGUgbm9kZShhbGxv
Y19yZWYoKSwgcG9zaXRpb24uaW5uZXJfLnNsb3RfKTsKKyAgICBhdXRvIG5vZGUgPQorICAgICAg
ICBDb21tb25BY2Nlc3M6OlRyYW5zZmVyPG5vZGVfdHlwZT4oYWxsb2NfcmVmKCksIHBvc2l0aW9u
LmlubmVyXy5zbG90Xyk7CiAgICAgZXJhc2VfbWV0YV9vbmx5KHBvc2l0aW9uKTsKICAgICByZXR1
cm4gbm9kZTsKICAgfQpAQCAtMTMxOSw2ICsxMjA3LDcgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsK
ICAgICBzd2FwKGdyb3d0aF9sZWZ0KCksIHRoYXQuZ3Jvd3RoX2xlZnQoKSk7CiAgICAgc3dhcCho
YXNoX3JlZigpLCB0aGF0Lmhhc2hfcmVmKCkpOwogICAgIHN3YXAoZXFfcmVmKCksIHRoYXQuZXFf
cmVmKCkpOworICAgIHN3YXAoaW5mb3pfLCB0aGF0LmluZm96Xyk7CiAgICAgaWYgKEFsbG9jVHJh
aXRzOjpwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA6OnZhbHVlKSB7CiAgICAgICBzd2FwKGFs
bG9jX3JlZigpLCB0aGF0LmFsbG9jX3JlZigpKTsKICAgICB9IGVsc2UgewpAQCAtMTMyOSwxNyAr
MTIxOCwyMSBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewogCiAgIHZvaWQgcmVoYXNoKHNpemVfdCBu
KSB7CiAgICAgaWYgKG4gPT0gMCAmJiBjYXBhY2l0eV8gPT0gMCkgcmV0dXJuOwotICAgIGlmIChu
ID09IDAgJiYgc2l6ZV8gPT0gMCkgcmV0dXJuIGRlc3Ryb3lfc2xvdHMoKTsKLSAgICBhdXRvIG0g
PSBOb3JtYWxpemVDYXBhY2l0eShzdGQ6Om1heChuLCBOdW1TbG90c0Zhc3Qoc2l6ZSgpKSkpOwor
ICAgIGlmIChuID09IDAgJiYgc2l6ZV8gPT0gMCkgeworICAgICAgZGVzdHJveV9zbG90cygpOwor
ICAgICAgaW5mb3pfLlJlY29yZFN0b3JhZ2VDaGFuZ2VkKDAsIDApOworICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAvLyBiaXRvciBpcyBhIGZhc3RlciB3YXkgb2YgZG9pbmcgYG1heGAgaGVyZS4g
V2Ugd2lsbCByb3VuZCB1cCB0byB0aGUgbmV4dAorICAgIC8vIHBvd2VyLW9mLTItbWludXMtMSwg
c28gYml0b3IgaXMgZ29vZCBlbm91Z2guCisgICAgYXV0byBtID0gTm9ybWFsaXplQ2FwYWNpdHko
biB8IEdyb3d0aFRvTG93ZXJib3VuZENhcGFjaXR5KHNpemUoKSkpOwogICAgIC8vIG4gPT0gMCB1
bmNvbmRpdGlvbmFsbHkgcmVoYXNoZXMgYXMgcGVyIHRoZSBzdGFuZGFyZC4KICAgICBpZiAobiA9
PSAwIHx8IG0gPiBjYXBhY2l0eV8pIHsKICAgICAgIHJlc2l6ZShtKTsKICAgICB9CiAgIH0KIAot
ICB2b2lkIHJlc2VydmUoc2l6ZV90IG4pIHsKLSAgICByZWhhc2goTnVtU2xvdHNGYXN0KG4pKTsK
LSAgfQorICB2b2lkIHJlc2VydmUoc2l6ZV90IG4pIHsgcmVoYXNoKEdyb3d0aFRvTG93ZXJib3Vu
ZENhcGFjaXR5KG4pKTsgfQogCiAgIC8vIEV4dGVuc2lvbiBBUEk6IHN1cHBvcnQgZm9yIGhldGVy
b2dlbmVvdXMga2V5cy4KICAgLy8KQEAgLTE1MTcsMTMgKzE0MTAsNiBAQCBjbGFzcyByYXdfaGFz
aF9zZXQgewogICAgIHNsb3RfdHlwZSYmIHNsb3Q7CiAgIH07CiAKLSAgLy8gQ29tcHV0ZXMgc3Rk
OjpjZWlsKG4gLyBrTWF4TG9hZEZhY3RvcikuIEZhc3RlciB0aGFuIGNhbGxpbmcgc3RkOjpjZWls
LgotICBzdGF0aWMgaW5saW5lIHNpemVfdCBOdW1TbG90c0Zhc3Qoc2l6ZV90IG4pIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigKLSAgICAgICAgKG4gKiBrTWF4TG9hZEZhY3RvckRl
bm9taW5hdG9yICsgKGtNYXhMb2FkRmFjdG9yTnVtZXJhdG9yIC0gMSkpIC8KLSAgICAgICAga01h
eExvYWRGYWN0b3JOdW1lcmF0b3IpOwotICB9Ci0KICAgLy8gImVyYXNlcyIgdGhlIG9iamVjdCBm
cm9tIHRoZSBjb250YWluZXIsIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYWN0dWFsbHkKICAgLy8g
ZGVzdHJveSB0aGUgb2JqZWN0LiBJdCBvbmx5IHVwZGF0ZXMgYWxsIHRoZSBtZXRhZGF0YSBvZiB0
aGUgY2xhc3MuCiAgIC8vIFRoaXMgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBQb2xp
Y3k6OnRyYW5zZmVyIHRvIG1vdmUgdGhlIG9iamVjdCB0bwpAQCAtMTU0NiwxNyArMTQzMiwzNCBA
QCBjbGFzcyByYXdfaGFzaF9zZXQgewogCiAgICAgc2V0X2N0cmwoaW5kZXgsIHdhc19uZXZlcl9m
dWxsID8ga0VtcHR5IDoga0RlbGV0ZWQpOwogICAgIGdyb3d0aF9sZWZ0KCkgKz0gd2FzX25ldmVy
X2Z1bGw7CisgICAgaW5mb3pfLlJlY29yZEVyYXNlKCk7CiAgIH0KIAogICB2b2lkIGluaXRpYWxp
emVfc2xvdHMoKSB7CiAgICAgYXNzZXJ0KGNhcGFjaXR5Xyk7CisgICAgLy8gRm9sa3Mgd2l0aCBj
dXN0b20gYWxsb2NhdG9ycyBvZnRlbiBtYWtlIHVud2FycmFudGVkIGFzc3VtcHRpb25zIGFib3V0
IHRoZQorICAgIC8vIGJlaGF2aW9yIG9mIHRoZWlyIGNsYXNzZXMgdmlzLWEtdmlzIHRyaXZpYWwg
ZGVzdHJ1Y3RhYmlsaXR5IGFuZCB3aGF0CisgICAgLy8gY2FsbHMgdGhleSB3aWxsIG9yIHdvbnQg
bWFrZS4gIEF2b2lkIHNhbXBsaW5nIGZvciBwZW9wbGUgd2l0aCBjdXN0b20KKyAgICAvLyBhbGxv
Y2F0b3JzIHRvIGdldCB1cyBvdXQgb2YgdGhpcyBtZXNzLiAgVGhpcyBpcyBub3QgYSBoYXJkIGd1
YXJhbnRlZSBidXQKKyAgICAvLyBhIHdvcmthcm91bmQgd2hpbGUgd2UgcGxhbiB0aGUgZXhhY3Qg
Z3VhcmFudGVlIHdlIHdhbnQgdG8gcHJvdmlkZS4KKyAgICAvLworICAgIC8vIFBlb3BsZSBhcmUg
b2Z0ZW4gc2xvcHB5IHdpdGggdGhlIGV4YWN0IHR5cGUgb2YgdGhlaXIgYWxsb2NhdG9yIChzb21l
dGltZXMKKyAgICAvLyBpdCBoYXMgYW4gZXh0cmEgY29uc3Qgb3IgaXMgbWlzc2luZyB0aGUgcGFp
ciwgYnV0IHJlYmluZHMgbWFkZSBpdCB3b3JrCisgICAgLy8gYW55d2F5KS4gIFRvIGF2b2lkIHRo
ZSBhbWJpZ3VpdHksIHdlIHdvcmsgb2ZmIFNsb3RBbGxvYyB3aGljaCB3ZSBoYXZlCisgICAgLy8g
Ym91bmQgbW9yZSBjYXJlZnVsbHkuCisgICAgaWYgKHN0ZDo6aXNfc2FtZTxTbG90QWxsb2MsIHN0
ZDo6YWxsb2NhdG9yPHNsb3RfdHlwZT4+Ojp2YWx1ZSAmJgorICAgICAgICBzbG90c18gPT0gbnVs
bHB0cikgeworICAgICAgaW5mb3pfID0gU2FtcGxlKCk7CisgICAgfQorCiAgICAgYXV0byBsYXlv
dXQgPSBNYWtlTGF5b3V0KGNhcGFjaXR5Xyk7CiAgICAgY2hhciogbWVtID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KAogICAgICAgICBBbGxvY2F0ZTxMYXlvdXQ6OkFsaWdubWVudCgpPigmYWxsb2NfcmVm
KCksIGxheW91dC5BbGxvY1NpemUoKSkpOwogICAgIGN0cmxfID0gcmVpbnRlcnByZXRfY2FzdDxj
dHJsX3QqPihsYXlvdXQudGVtcGxhdGUgUG9pbnRlcjwwPihtZW0pKTsKICAgICBzbG90c18gPSBs
YXlvdXQudGVtcGxhdGUgUG9pbnRlcjwxPihtZW0pOwogICAgIHJlc2V0X2N0cmwoKTsKLSAgICBn
cm93dGhfbGVmdCgpID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihjYXBhY2l0eV8gKiBrTWF4TG9hZEZh
Y3RvcikgLSBzaXplXzsKKyAgICByZXNldF9ncm93dGhfbGVmdCgpOworICAgIGluZm96Xy5SZWNv
cmRTdG9yYWdlQ2hhbmdlZChzaXplXywgY2FwYWNpdHlfKTsKICAgfQogCiAgIHZvaWQgZGVzdHJv
eV9zbG90cygpIHsKQEAgLTE1ODUsMTEgKzE0ODgsMTQgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsK
ICAgICBjYXBhY2l0eV8gPSBuZXdfY2FwYWNpdHk7CiAgICAgaW5pdGlhbGl6ZV9zbG90cygpOwog
CisgICAgc2l6ZV90IHRvdGFsX3Byb2JlX2xlbmd0aCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgIT0gb2xkX2NhcGFjaXR5OyArK2kpIHsKICAgICAgIGlmIChJc0Z1bGwob2xkX2N0cmxb
aV0pKSB7CiAgICAgICAgIHNpemVfdCBoYXNoID0gUG9saWN5VHJhaXRzOjphcHBseShIYXNoRWxl
bWVudHtoYXNoX3JlZigpfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBvbGljeVRyYWl0czo6ZWxlbWVudChvbGRfc2xvdHMgKyBpKSk7Ci0gICAgICAgIHNpemVf
dCBuZXdfaSA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAgICAgIGF1dG8gdGFyZ2V0
ID0gZmluZF9maXJzdF9ub25fZnVsbChoYXNoKTsKKyAgICAgICAgc2l6ZV90IG5ld19pID0gdGFy
Z2V0Lm9mZnNldDsKKyAgICAgICAgdG90YWxfcHJvYmVfbGVuZ3RoICs9IHRhcmdldC5wcm9iZV9s
ZW5ndGg7CiAgICAgICAgIHNldF9jdHJsKG5ld19pLCBIMihoYXNoKSk7CiAgICAgICAgIFBvbGlj
eVRyYWl0czo6dHJhbnNmZXIoJmFsbG9jX3JlZigpLCBzbG90c18gKyBuZXdfaSwgb2xkX3Nsb3Rz
ICsgaSk7CiAgICAgICB9CkBAIC0xNjAxLDEwICsxNTA3LDEyIEBAIGNsYXNzIHJhd19oYXNoX3Nl
dCB7CiAgICAgICBEZWFsbG9jYXRlPExheW91dDo6QWxpZ25tZW50KCk+KCZhbGxvY19yZWYoKSwg
b2xkX2N0cmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC5B
bGxvY1NpemUoKSk7CiAgICAgfQorICAgIGluZm96Xy5SZWNvcmRSZWhhc2godG90YWxfcHJvYmVf
bGVuZ3RoKTsKICAgfQogCiAgIHZvaWQgZHJvcF9kZWxldGVzX3dpdGhvdXRfcmVzaXplKCkgQUJT
TF9BVFRSSUJVVEVfTk9JTkxJTkUgewogICAgIGFzc2VydChJc1ZhbGlkQ2FwYWNpdHkoY2FwYWNp
dHlfKSk7CisgICAgYXNzZXJ0KCFpc19zbWFsbCgpKTsKICAgICAvLyBBbGdvcml0aG06CiAgICAg
Ly8gLSBtYXJrIGFsbCBERUxFVEVEIHNsb3RzIGFzIEVNUFRZCiAgICAgLy8gLSBtYXJrIGFsbCBG
VUxMIHNsb3RzIGFzIERFTEVURUQKQEAgLTE2MjQsMTIgKzE1MzIsMTUgQEAgY2xhc3MgcmF3X2hh
c2hfc2V0IHsKICAgICBDb252ZXJ0RGVsZXRlZFRvRW1wdHlBbmRGdWxsVG9EZWxldGVkKGN0cmxf
LCBjYXBhY2l0eV8pOwogICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihz
bG90X3R5cGUpLCBhbGlnbm9mKHNsb3RfdHlwZSk+Ojp0eXBlCiAgICAgICAgIHJhdzsKKyAgICBz
aXplX3QgdG90YWxfcHJvYmVfbGVuZ3RoID0gMDsKICAgICBzbG90X3R5cGUqIHNsb3QgPSByZWlu
dGVycHJldF9jYXN0PHNsb3RfdHlwZSo+KCZyYXcpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IGNhcGFjaXR5XzsgKytpKSB7CiAgICAgICBpZiAoIUlzRGVsZXRlZChjdHJsX1tpXSkpIGNv
bnRpbnVlOwogICAgICAgc2l6ZV90IGhhc2ggPSBQb2xpY3lUcmFpdHM6OmFwcGx5KEhhc2hFbGVt
ZW50e2hhc2hfcmVmKCl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBvbGljeVRyYWl0czo6ZWxlbWVudChzbG90c18gKyBpKSk7Ci0gICAgICBzaXplX3QgbmV3X2kg
PSBmaW5kX2ZpcnN0X25vbl9mdWxsKGhhc2gpOworICAgICAgYXV0byB0YXJnZXQgPSBmaW5kX2Zp
cnN0X25vbl9mdWxsKGhhc2gpOworICAgICAgc2l6ZV90IG5ld19pID0gdGFyZ2V0Lm9mZnNldDsK
KyAgICAgIHRvdGFsX3Byb2JlX2xlbmd0aCArPSB0YXJnZXQucHJvYmVfbGVuZ3RoOwogCiAgICAg
ICAvLyBWZXJpZnkgaWYgdGhlIG9sZCBhbmQgbmV3IGkgZmFsbCB3aXRoaW4gdGhlIHNhbWUgZ3Jv
dXAgd3J0IHRoZSBoYXNoLgogICAgICAgLy8gSWYgdGhleSBkbywgd2UgZG9uJ3QgbmVlZCB0byBt
b3ZlIHRoZSBvYmplY3QgYXMgaXQgZmFsbHMgYWxyZWFkeSBpbiB0aGUKQEAgLTE2NjEsMTMgKzE1
NzIsMTQgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgICAgICAgLS1pOyAgLy8gcmVwZWF0CiAg
ICAgICB9CiAgICAgfQotICAgIGdyb3d0aF9sZWZ0KCkgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNh
cGFjaXR5XyAqIGtNYXhMb2FkRmFjdG9yKSAtIHNpemVfOworICAgIHJlc2V0X2dyb3d0aF9sZWZ0
KCk7CisgICAgaW5mb3pfLlJlY29yZFJlaGFzaCh0b3RhbF9wcm9iZV9sZW5ndGgpOwogICB9CiAK
ICAgdm9pZCByZWhhc2hfYW5kX2dyb3dfaWZfbmVjZXNzYXJ5KCkgewogICAgIGlmIChjYXBhY2l0
eV8gPT0gMCkgewotICAgICAgcmVzaXplKEdyb3VwOjprV2lkdGggLSAxKTsKLSAgICB9IGVsc2Ug
aWYgKHNpemUoKSA8PSBrTWF4TG9hZEZhY3RvciAvIDIgKiBjYXBhY2l0eV8pIHsKKyAgICAgIHJl
c2l6ZSgxKTsKKyAgICB9IGVsc2UgaWYgKHNpemUoKSA8PSBDYXBhY2l0eVRvR3Jvd3RoKGNhcGFj
aXR5KCkpIC8gMikgewogICAgICAgLy8gU3F1YXNoIERFTEVURUQgd2l0aG91dCBncm93aW5nIGlm
IHRoZXJlIGlzIGVub3VnaCBjYXBhY2l0eS4KICAgICAgIGRyb3BfZGVsZXRlc193aXRob3V0X3Jl
c2l6ZSgpOwogICAgIH0gZWxzZSB7CkBAIC0xNzAyLDI0ICsxNjE0LDI2IEBAIGNsYXNzIHJhd19o
YXNoX3NldCB7CiAgIC8vIC0gdGhlIGlucHV0IGlzIGFscmVhZHkgYSBzZXQKICAgLy8gLSB0aGVy
ZSBhcmUgZW5vdWdoIHNsb3RzCiAgIC8vIC0gdGhlIGVsZW1lbnQgd2l0aCB0aGUgaGFzaCBpcyBu
b3QgaW4gdGhlIHRhYmxlCi0gIHNpemVfdCBmaW5kX2ZpcnN0X25vbl9mdWxsKHNpemVfdCBoYXNo
KSB7CisgIHN0cnVjdCBGaW5kSW5mbyB7CisgICAgc2l6ZV90IG9mZnNldDsKKyAgICBzaXplX3Qg
cHJvYmVfbGVuZ3RoOworICB9OworICBGaW5kSW5mbyBmaW5kX2ZpcnN0X25vbl9mdWxsKHNpemVf
dCBoYXNoKSB7CiAgICAgYXV0byBzZXEgPSBwcm9iZShoYXNoKTsKICAgICB3aGlsZSAodHJ1ZSkg
ewogICAgICAgR3JvdXAgZ3tjdHJsXyArIHNlcS5vZmZzZXQoKX07CiAgICAgICBhdXRvIG1hc2sg
PSBnLk1hdGNoRW1wdHlPckRlbGV0ZWQoKTsKICAgICAgIGlmIChtYXNrKSB7CiAjaWYgIWRlZmlu
ZWQoTkRFQlVHKQotICAgICAgICAvLyBXZSB3YW50IHRvIGZvcmNlIHNtYWxsIHRhYmxlcyB0byBo
YXZlIHJhbmRvbSBlbnRyaWVzIHRvbywgc28KLSAgICAgICAgLy8gaW4gZGVidWcgYnVpbGQgd2Ug
d2lsbCByYW5kb21seSBpbnNlcnQgaW4gZWl0aGVyIHRoZSBmcm9udCBvciBiYWNrIG9mCisgICAg
ICAgIC8vIFdlIHdhbnQgdG8gYWRkIGVudHJvcHkgZXZlbiB3aGVuIEFTTFIgaXMgbm90IGVuYWJs
ZWQuCisgICAgICAgIC8vIEluIGRlYnVnIGJ1aWxkIHdlIHdpbGwgcmFuZG9tbHkgaW5zZXJ0IGlu
IGVpdGhlciB0aGUgZnJvbnQgb3IgYmFjayBvZgogICAgICAgICAvLyB0aGUgZ3JvdXAuCiAgICAg
ICAgIC8vIFRPRE8oa2ZtLHNiZW56YSk6IHJldmlzaXQgYWZ0ZXIgd2UgZG8gdW5jb25kaXRpb25h
bCBtaXhpbmcKLSAgICAgICAgaWYgKFNob3VsZEluc2VydEJhY2t3YXJkcyhoYXNoLCBjdHJsXykp
Ci0gICAgICAgICAgcmV0dXJuIHNlcS5vZmZzZXQobWFzay5IaWdoZXN0Qml0U2V0KCkpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgcmV0dXJuIHNlcS5vZmZzZXQobWFzay5Mb3dlc3RCaXRTZXQo
KSk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gc2VxLm9mZnNldChtYXNrLkxvd2VzdEJpdFNldCgp
KTsKKyAgICAgICAgaWYgKCFpc19zbWFsbCgpICYmIFNob3VsZEluc2VydEJhY2t3YXJkcyhoYXNo
LCBjdHJsXykpIHsKKyAgICAgICAgICByZXR1cm4ge3NlcS5vZmZzZXQobWFzay5IaWdoZXN0Qml0
U2V0KCkpLCBzZXEuaW5kZXgoKX07CisgICAgICAgIH0KICNlbmRpZgorICAgICAgICByZXR1cm4g
e3NlcS5vZmZzZXQobWFzay5Mb3dlc3RCaXRTZXQoKSksIHNlcS5pbmRleCgpfTsKICAgICAgIH0K
ICAgICAgIGFzc2VydChzZXEuaW5kZXgoKSA8IGNhcGFjaXR5XyAmJiAiZnVsbCB0YWJsZSEiKTsK
ICAgICAgIHNlcS5uZXh0KCk7CkBAIC0xNzU4LDE1ICsxNjcyLDE3IEBAIGNsYXNzIHJhd19oYXNo
X3NldCB7CiAgIH0KIAogICBzaXplX3QgcHJlcGFyZV9pbnNlcnQoc2l6ZV90IGhhc2gpIEFCU0xf
QVRUUklCVVRFX05PSU5MSU5FIHsKLSAgICBzaXplX3QgdGFyZ2V0ID0gZmluZF9maXJzdF9ub25f
ZnVsbChoYXNoKTsKLSAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGdyb3d0aF9sZWZ0KCkgPT0g
MCAmJiAhSXNEZWxldGVkKGN0cmxfW3RhcmdldF0pKSkgeworICAgIGF1dG8gdGFyZ2V0ID0gZmlu
ZF9maXJzdF9ub25fZnVsbChoYXNoKTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGdyb3d0
aF9sZWZ0KCkgPT0gMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIUlzRGVsZXRlZChj
dHJsX1t0YXJnZXQub2Zmc2V0XSkpKSB7CiAgICAgICByZWhhc2hfYW5kX2dyb3dfaWZfbmVjZXNz
YXJ5KCk7CiAgICAgICB0YXJnZXQgPSBmaW5kX2ZpcnN0X25vbl9mdWxsKGhhc2gpOwogICAgIH0K
ICAgICArK3NpemVfOwotICAgIGdyb3d0aF9sZWZ0KCkgLT0gSXNFbXB0eShjdHJsX1t0YXJnZXRd
KTsKLSAgICBzZXRfY3RybCh0YXJnZXQsIEgyKGhhc2gpKTsKLSAgICByZXR1cm4gdGFyZ2V0Owor
ICAgIGdyb3d0aF9sZWZ0KCkgLT0gSXNFbXB0eShjdHJsX1t0YXJnZXQub2Zmc2V0XSk7CisgICAg
c2V0X2N0cmwodGFyZ2V0Lm9mZnNldCwgSDIoaGFzaCkpOworICAgIGluZm96Xy5SZWNvcmRJbnNl
cnQoaGFzaCwgdGFyZ2V0LnByb2JlX2xlbmd0aCk7CisgICAgcmV0dXJuIHRhcmdldC5vZmZzZXQ7
CiAgIH0KIAogICAvLyBDb25zdHJ1Y3RzIHRoZSB2YWx1ZSBpbiB0aGUgc3BhY2UgcG9pbnRlZCBi
eSB0aGUgaXRlcmF0b3IuIFRoaXMgb25seSB3b3JrcwpAQCAtMTgwNCw2ICsxNzIwLDEwIEBAIGNs
YXNzIHJhd19oYXNoX3NldCB7CiAgICAgU2FuaXRpemVyUG9pc29uTWVtb3J5UmVnaW9uKHNsb3Rz
Xywgc2l6ZW9mKHNsb3RfdHlwZSkgKiBjYXBhY2l0eV8pOwogICB9CiAKKyAgdm9pZCByZXNldF9n
cm93dGhfbGVmdCgpIHsKKyAgICBncm93dGhfbGVmdCgpID0gQ2FwYWNpdHlUb0dyb3d0aChjYXBh
Y2l0eSgpKSAtIHNpemVfOworICB9CisKICAgLy8gU2V0cyB0aGUgY29udHJvbCBieXRlLCBhbmQg
aWYgYGkgPCBHcm91cDo6a1dpZHRoYCwgc2V0IHRoZSBjbG9uZWQgYnl0ZSBhdAogICAvLyB0aGUg
ZW5kIHRvby4KICAgdm9pZCBzZXRfY3RybChzaXplX3QgaSwgY3RybF90IGgpIHsKQEAgLTE4MTYs
MTEgKzE3MzYsMjggQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgICB9CiAKICAgICBjdHJsX1tp
XSA9IGg7Ci0gICAgY3RybF9bKChpIC0gR3JvdXA6OmtXaWR0aCkgJiBjYXBhY2l0eV8pICsgR3Jv
dXA6OmtXaWR0aF0gPSBoOworICAgIGN0cmxfWygoaSAtIEdyb3VwOjprV2lkdGgpICYgY2FwYWNp
dHlfKSArIDEgKworICAgICAgICAgICgoR3JvdXA6OmtXaWR0aCAtIDEpICYgY2FwYWNpdHlfKV0g
PSBoOwogICB9CiAKICAgc2l6ZV90JiBncm93dGhfbGVmdCgpIHsgcmV0dXJuIHNldHRpbmdzXy50
ZW1wbGF0ZSBnZXQ8MD4oKTsgfQogCisgIC8vIFRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2Jq
ZWN0IGhhcyB0d28gbW9kZXM6CisgIC8vICAtIHNtYWxsOiBGb3IgY2FwYWNpdGllcyA8IGtXaWR0
aC0xCisgIC8vICAtIGxhcmdlOiBGb3IgdGhlIHJlc3QuCisgIC8vCisgIC8vIERpZmZlcmVuY2Vz
OgorICAvLyAgLSBJbiBzbWFsbCBtb2RlIHdlIGFyZSBhYmxlIHRvIHVzZSB0aGUgd2hvbGUgY2Fw
YWNpdHkuIFRoZSBleHRyYSBjb250cm9sCisgIC8vICBieXRlcyBnaXZlIHVzIGF0IGxlYXN0IG9u
ZSAiZW1wdHkiIGNvbnRyb2wgYnl0ZSB0byBzdG9wIHRoZSBpdGVyYXRpb24uCisgIC8vICBUaGlz
IGlzIGltcG9ydGFudCB0byBtYWtlIDEgYSB2YWxpZCBjYXBhY2l0eS4KKyAgLy8KKyAgLy8gIC0g
SW4gc21hbGwgbW9kZSBvbmx5IHRoZSBmaXJzdCBgY2FwYWNpdHkoKWAgY29udHJvbCBieXRlcyBh
ZnRlciB0aGUKKyAgLy8gIHNlbnRpbmVsIGFyZSB2YWxpZC4gVGhlIHJlc3QgY29udGFpbiBkdW1t
eSBrRW1wdHkgdmFsdWVzIHRoYXQgZG8gbm90CisgIC8vICByZXByZXNlbnQgYSByZWFsIHNsb3Qu
IFRoaXMgaXMgaW1wb3J0YW50IHRvIHRha2UgaW50byBhY2NvdW50IG9uCisgIC8vICBmaW5kX2Zp
cnN0X25vbl9mdWxsKCksIHdoZXJlIHdlIG5ldmVyIHRyeSBTaG91bGRJbnNlcnRCYWNrd2FyZHMo
KSBmb3IKKyAgLy8gIHNtYWxsIHRhYmxlcy4KKyAgYm9vbCBpc19zbWFsbCgpIGNvbnN0IHsgcmV0
dXJuIGNhcGFjaXR5XyA8IEdyb3VwOjprV2lkdGggLSAxOyB9CisKICAgaGFzaGVyJiBoYXNoX3Jl
ZigpIHsgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8MT4oKTsgfQogICBjb25zdCBoYXNo
ZXImIGhhc2hfcmVmKCkgY29uc3QgeyByZXR1cm4gc2V0dGluZ3NfLnRlbXBsYXRlIGdldDwxPigp
OyB9CiAgIGtleV9lcXVhbCYgZXFfcmVmKCkgeyByZXR1cm4gc2V0dGluZ3NfLnRlbXBsYXRlIGdl
dDwyPigpOyB9CkBAIC0xODMwLDEyICsxNzY3LDYgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAg
ICByZXR1cm4gc2V0dGluZ3NfLnRlbXBsYXRlIGdldDwzPigpOwogICB9CiAKLSAgLy8gT24gYXZl
cmFnZSBlYWNoIGdyb3VwIGhhcyAyIGVtcHR5IHNsb3QgKGZvciB0aGUgdmVjdG9yaXplZCBjYXNl
KS4KLSAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IGtNYXhMb2FkRmFjdG9yTnVtZXJhdG9yID0g
MTQ7Ci0gIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBrTWF4TG9hZEZhY3RvckRlbm9taW5hdG9y
ID0gMTY7Ci0gIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQga01heExvYWRGYWN0b3IgPQotICAgICAg
MS4wICoga01heExvYWRGYWN0b3JOdW1lcmF0b3IgLyBrTWF4TG9hZEZhY3RvckRlbm9taW5hdG9y
OwotCiAgIC8vIFRPRE8oYWxraXMpOiBJbnZlc3RpZ2F0ZSByZW1vdmluZyBzb21lIG9mIHRoZXNl
IGZpZWxkczoKICAgLy8gLSBjdHJsL3Nsb3RzIGNhbiBiZSBkZXJpdmVkIGZyb20gZWFjaCBvdGhl
cgogICAvLyAtIHNpemUgY2FuIGJlIG1vdmVkIGludG8gdGhlIHNsb3QgYXJyYXkKQEAgLTE4NDMs
NiArMTc3NCw3IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgIHNsb3RfdHlwZSogc2xvdHNfID0g
bnVsbHB0cjsgICAgIC8vIFtjYXBhY2l0eSAqIHNsb3RfdHlwZV0KICAgc2l6ZV90IHNpemVfID0g
MDsgICAgICAgICAgICAgICAgLy8gbnVtYmVyIG9mIGZ1bGwgc2xvdHMKICAgc2l6ZV90IGNhcGFj
aXR5XyA9IDA7ICAgICAgICAgICAgLy8gdG90YWwgbnVtYmVyIG9mIHNsb3RzCisgIEhhc2h0YWJs
ZXpJbmZvSGFuZGxlIGluZm96XzsKICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpDb21wcmVz
c2VkVHVwbGU8c2l6ZV90IC8qIGdyb3d0aF9sZWZ0ICovLCBoYXNoZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9lcXVhbCwgYWxsb2NhdG9yX3R5cGU+
CiAgICAgICBzZXR0aW5nc197MCwgaGFzaGVye30sIGtleV9lcXVhbHt9LCBhbGxvY2F0b3JfdHlw
ZXt9fTsKQEAgLTE4OTUsMTAgKzE4MjcsOSBAQCBzdHJ1Y3QgSGFzaHRhYmxlRGVidWdBY2Nlc3M8
U2V0LCBhYnNsOjp2b2lkX3Q8dHlwZW5hbWUgU2V0OjpyYXdfaGFzaF9zZXQ+PiB7CiAgIH0KIAog
ICBzdGF0aWMgc2l6ZV90IExvd2VyQm91bmRBbGxvY2F0ZWRCeXRlU2l6ZShzaXplX3Qgc2l6ZSkg
ewotICAgIHNpemVfdCBjYXBhY2l0eSA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6Tm9ybWFsaXplQ2Fw
YWNpdHkoCi0gICAgICAgIHN0ZDo6Y2VpbChzaXplIC8gU2V0OjprTWF4TG9hZEZhY3RvcikpOwor
ICAgIHNpemVfdCBjYXBhY2l0eSA9IEdyb3d0aFRvTG93ZXJib3VuZENhcGFjaXR5KHNpemUpOwog
ICAgIGlmIChjYXBhY2l0eSA9PSAwKSByZXR1cm4gMDsKLSAgICBhdXRvIGxheW91dCA9IFNldDo6
TWFrZUxheW91dChjYXBhY2l0eSk7CisgICAgYXV0byBsYXlvdXQgPSBTZXQ6Ok1ha2VMYXlvdXQo
Tm9ybWFsaXplQ2FwYWNpdHkoY2FwYWNpdHkpKTsKICAgICBzaXplX3QgbSA9IGxheW91dC5BbGxv
Y1NpemUoKTsKICAgICBzaXplX3QgcGVyX3Nsb3QgPSBUcmFpdHM6OnNwYWNlX3VzZWQoc3RhdGlj
X2Nhc3Q8Y29uc3QgU2xvdCo+KG51bGxwdHIpKTsKICAgICBpZiAocGVyX3Nsb3QgIT0gfnNpemVf
dHt9KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0
X2FsbG9jYXRvcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3Nl
dF9hbGxvY2F0b3JfdGVzdC5jYwppbmRleCA4OTFmYTQ1MGZlMC4uYTVlZmYwYjNkMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXRfYWxsb2NhdG9yX3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldF9hbGxvY2F0
b3JfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldF90ZXN0LmNjCmluZGV4IGNkMzNh
M2FjYjkxLi5lZDRjYThjODhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L3Jhd19oYXNoX3NldF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdf
aGFzaF9zZXRfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMTQsNyArMTQsNiBAQAogCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
cmF3X2hhc2hfc2V0LmgiCiAKLSNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxjbWF0aD4KICNp
bmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGRlcXVlPgpAQCAtNDksMTggKzQ4LDQ3IEBAIG5h
bWVzcGFjZSB7CiAKIHVzaW5nIDo6dGVzdGluZzo6RG91YmxlTmVhcjsKIHVzaW5nIDo6dGVzdGlu
Zzo6RWxlbWVudHNBcmU7Cit1c2luZyA6OnRlc3Rpbmc6OkdlOwordXNpbmcgOjp0ZXN0aW5nOjpM
dDsKIHVzaW5nIDo6dGVzdGluZzo6T3B0aW9uYWw7CiB1c2luZyA6OnRlc3Rpbmc6OlBhaXI7CiB1
c2luZyA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlOwogCiBURVNUKFV0aWwsIE5vcm1h
bGl6ZUNhcGFjaXR5KSB7Ci0gIGNvbnN0ZXhwciBzaXplX3Qga01pbkNhcGFjaXR5ID0gR3JvdXA6
OmtXaWR0aCAtIDE7Ci0gIEVYUEVDVF9FUShrTWluQ2FwYWNpdHksIE5vcm1hbGl6ZUNhcGFjaXR5
KDApKTsKLSAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSwgTm9ybWFsaXplQ2FwYWNpdHkoMSkpOwot
ICBFWFBFQ1RfRVEoa01pbkNhcGFjaXR5LCBOb3JtYWxpemVDYXBhY2l0eSgyKSk7Ci0gIEVYUEVD
VF9FUShrTWluQ2FwYWNpdHksIE5vcm1hbGl6ZUNhcGFjaXR5KGtNaW5DYXBhY2l0eSkpOwotICBF
WFBFQ1RfRVEoa01pbkNhcGFjaXR5ICogMiArIDEsIE5vcm1hbGl6ZUNhcGFjaXR5KGtNaW5DYXBh
Y2l0eSArIDEpKTsKLSAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSAqIDIgKyAxLCBOb3JtYWxpemVD
YXBhY2l0eShrTWluQ2FwYWNpdHkgKyAyKSk7CisgIEVYUEVDVF9FUSgxLCBOb3JtYWxpemVDYXBh
Y2l0eSgwKSk7CisgIEVYUEVDVF9FUSgxLCBOb3JtYWxpemVDYXBhY2l0eSgxKSk7CisgIEVYUEVD
VF9FUSgzLCBOb3JtYWxpemVDYXBhY2l0eSgyKSk7CisgIEVYUEVDVF9FUSgzLCBOb3JtYWxpemVD
YXBhY2l0eSgzKSk7CisgIEVYUEVDVF9FUSg3LCBOb3JtYWxpemVDYXBhY2l0eSg0KSk7CisgIEVY
UEVDVF9FUSg3LCBOb3JtYWxpemVDYXBhY2l0eSg3KSk7CisgIEVYUEVDVF9FUSgxNSwgTm9ybWFs
aXplQ2FwYWNpdHkoOCkpOworICBFWFBFQ1RfRVEoMTUsIE5vcm1hbGl6ZUNhcGFjaXR5KDE1KSk7
CisgIEVYUEVDVF9FUSgxNSAqIDIgKyAxLCBOb3JtYWxpemVDYXBhY2l0eSgxNSArIDEpKTsKKyAg
RVhQRUNUX0VRKDE1ICogMiArIDEsIE5vcm1hbGl6ZUNhcGFjaXR5KDE1ICsgMikpOworfQorCitU
RVNUKFV0aWwsIEdyb3d0aEFuZENhcGFjaXR5KSB7CisgIC8vIFZlcmlmeSB0aGF0IEdyb3d0aFRv
Q2FwYWNpdHkgZ2l2ZXMgdGhlIG1pbmltdW0gY2FwYWNpdHkgdGhhdCBoYXMgZW5vdWdoCisgIC8v
IGdyb3d0aC4KKyAgZm9yIChzaXplX3QgZ3Jvd3RoID0gMDsgZ3Jvd3RoIDwgMTAwMDA7ICsrZ3Jv
d3RoKSB7CisgICAgU0NPUEVEX1RSQUNFKGdyb3d0aCk7CisgICAgc2l6ZV90IGNhcGFjaXR5ID0g
Tm9ybWFsaXplQ2FwYWNpdHkoR3Jvd3RoVG9Mb3dlcmJvdW5kQ2FwYWNpdHkoZ3Jvd3RoKSk7Cisg
ICAgLy8gVGhlIGNhcGFjaXR5IGlzIGxhcmdlIGVub3VnaCBmb3IgYGdyb3d0aGAKKyAgICBFWFBF
Q1RfVEhBVChDYXBhY2l0eVRvR3Jvd3RoKGNhcGFjaXR5KSwgR2UoZ3Jvd3RoKSk7CisgICAgaWYg
KGdyb3d0aCAhPSAwICYmIGNhcGFjaXR5ID4gMSkgeworICAgICAgLy8gVGhlcmUgaXMgbm8gc21h
bGxlciBjYXBhY2l0eSB0aGF0IHdvcmtzLgorICAgICAgRVhQRUNUX1RIQVQoQ2FwYWNpdHlUb0dy
b3d0aChjYXBhY2l0eSAvIDIpLCBMdChncm93dGgpKTsKKyAgICB9CisgIH0KKworICBmb3IgKHNp
emVfdCBjYXBhY2l0eSA9IEdyb3VwOjprV2lkdGggLSAxOyBjYXBhY2l0eSA8IDEwMDAwOworICAg
ICAgIGNhcGFjaXR5ID0gMiAqIGNhcGFjaXR5ICsgMSkgeworICAgIFNDT1BFRF9UUkFDRShjYXBh
Y2l0eSk7CisgICAgc2l6ZV90IGdyb3d0aCA9IENhcGFjaXR5VG9Hcm93dGgoY2FwYWNpdHkpOwor
ICAgIEVYUEVDVF9USEFUKGdyb3d0aCwgTHQoY2FwYWNpdHkpKTsKKyAgICBFWFBFQ1RfTEUoR3Jv
d3RoVG9Mb3dlcmJvdW5kQ2FwYWNpdHkoZ3Jvd3RoKSwgY2FwYWNpdHkpOworICAgIEVYUEVDVF9F
UShOb3JtYWxpemVDYXBhY2l0eShHcm93dGhUb0xvd2VyYm91bmRDYXBhY2l0eShncm93dGgpKSwg
Y2FwYWNpdHkpOworICB9CiB9CiAKIFRFU1QoVXRpbCwgcHJvYmVfc2VxKSB7CkBAIC0xMDcsMTQg
KzEzNSwxNCBAQCBURVNUKEJpdE1hc2ssIFdpdGhTaGlmdCkgewogfQogCiBURVNUKEJpdE1hc2ss
IExlYWRpbmdUcmFpbGluZykgewotICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2Pigw
YjAwMDExMDEwMDEwMDAwMDApLkxlYWRpbmdaZXJvcygpKSwgMyk7Ci0gIEVYUEVDVF9FUSgoQml0
TWFzazx1aW50MzJfdCwgMTY+KDBiMDAwMTEwMTAwMTAwMDAwMCkuVHJhaWxpbmdaZXJvcygpKSwg
Nik7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDB4MDAwMDFhNDApLkxlYWRp
bmdaZXJvcygpKSwgMyk7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDB4MDAw
MDFhNDApLlRyYWlsaW5nWmVyb3MoKSksIDYpOwogCi0gIEVYUEVDVF9FUSgoQml0TWFzazx1aW50
MzJfdCwgMTY+KDBiMDAwMDAwMDAwMDAwMDAwMSkuTGVhZGluZ1plcm9zKCkpLCAxNSk7Ci0gIEVY
UEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDBiMDAwMDAwMDAwMDAwMDAwMSkuVHJhaWxp
bmdaZXJvcygpKSwgMCk7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDB4MDAw
MDAwMDEpLkxlYWRpbmdaZXJvcygpKSwgMTUpOworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMy
X3QsIDE2PigweDAwMDAwMDAxKS5UcmFpbGluZ1plcm9zKCkpLCAwKTsKIAotICBFWFBFQ1RfRVEo
KEJpdE1hc2s8dWludDMyX3QsIDE2PigwYjEwMDAwMDAwMDAwMDAwMDApLkxlYWRpbmdaZXJvcygp
KSwgMCk7Ci0gIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDBiMTAwMDAwMDAwMDAw
MDAwMCkuVHJhaWxpbmdaZXJvcygpKSwgMTUpOworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMy
X3QsIDE2PigweDAwMDA4MDAwKS5MZWFkaW5nWmVyb3MoKSksIDApOworICBFWFBFQ1RfRVEoKEJp
dE1hc2s8dWludDMyX3QsIDE2PigweDAwMDA4MDAwKS5UcmFpbGluZ1plcm9zKCkpLCAxNSk7CiAK
ICAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQ2NF90LCA4LCAzPigweDAwMDAwMDgwODA4MDgwMDAp
LkxlYWRpbmdaZXJvcygpKSwgMyk7CiAgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50NjRfdCwgOCwg
Mz4oMHgwMDAwMDA4MDgwODA4MDAwKS5UcmFpbGluZ1plcm9zKCkpLCAxKTsKQEAgLTEzMCw0NSAr
MTU4LDUwIEBAIFRFU1QoR3JvdXAsIEVtcHR5R3JvdXApIHsKICAgZm9yIChoMl90IGggPSAwOyBo
ICE9IDEyODsgKytoKSBFWFBFQ1RfRkFMU0UoR3JvdXB7RW1wdHlHcm91cCgpfS5NYXRjaChoKSk7
CiB9CiAKLSNpZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgogVEVTVChHcm91cCwgTWF0Y2gpIHsKLSAg
Y3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCBrRGVsZXRlZCwgMywga0VtcHR5LCA1LCBrU2Vu
dGluZWwsIDcsCi0gICAgICAgICAgICAgICAgICAgIDcsICAgICAgNSwgMywgICAgICAgIDEsIDEs
ICAgICAgMSwgMSwgICAgICAgICAxfTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNo
KDApLCBFbGVtZW50c0FyZSgpKTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDEp
LCBFbGVtZW50c0FyZSgxLCAxMSwgMTIsIDEzLCAxNCwgMTUpKTsKLSAgRVhQRUNUX1RIQVQoR3Jv
dXB7Z3JvdXB9Lk1hdGNoKDMpLCBFbGVtZW50c0FyZSgzLCAxMCkpOwotICBFWFBFQ1RfVEhBVChH
cm91cHtncm91cH0uTWF0Y2goNSksIEVsZW1lbnRzQXJlKDUsIDkpKTsKLSAgRVhQRUNUX1RIQVQo
R3JvdXB7Z3JvdXB9Lk1hdGNoKDcpLCBFbGVtZW50c0FyZSg3LCA4KSk7Ci19Ci0KLVRFU1QoR3Jv
dXAsIE1hdGNoRW1wdHkpIHsKLSAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCBrRGVsZXRl
ZCwgMywga0VtcHR5LCA1LCBrU2VudGluZWwsIDcsCi0gICAgICAgICAgICAgICAgICAgIDcsICAg
ICAgNSwgMywgICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAgICAxfTsKLSAgRVhQRUNUX1RI
QVQoR3JvdXB7Z3JvdXB9Lk1hdGNoRW1wdHkoKSwgRWxlbWVudHNBcmUoMCwgNCkpOworICBpZiAo
R3JvdXA6OmtXaWR0aCA9PSAxNikgeworICAgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwg
a0RlbGV0ZWQsIDMsIGtFbXB0eSwgNSwga1NlbnRpbmVsLCA3LAorICAgICAgICAgICAgICAgICAg
ICAgIDcsICAgICAgNSwgMywgICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAgICAxfTsKKyAg
ICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMCksIEVsZW1lbnRzQXJlKCkpOworICAg
IEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaCgxKSwgRWxlbWVudHNBcmUoMSwgMTEsIDEy
LCAxMywgMTQsIDE1KSk7CisgICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDMpLCBF
bGVtZW50c0FyZSgzLCAxMCkpOworICAgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaCg1
KSwgRWxlbWVudHNBcmUoNSwgOSkpOworICAgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRj
aCg3KSwgRWxlbWVudHNBcmUoNywgOCkpOworICB9IGVsc2UgaWYgKEdyb3VwOjprV2lkdGggPT0g
OCkgeworICAgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0ZWQsIDIsIDEs
IGtTZW50aW5lbCwgMX07CisgICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDApLCBF
bGVtZW50c0FyZSgpKTsKKyAgICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMSksIEVs
ZW1lbnRzQXJlKDEsIDUsIDcpKTsKKyAgICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2go
MiksIEVsZW1lbnRzQXJlKDIsIDQpKTsKKyAgfSBlbHNlIHsKKyAgICBGQUlMKCkgPDwgIk5vIHRl
c3QgY292ZXJhZ2UgZm9yIEdyb3VwOjprV2lkdGg9PSIgPDwgR3JvdXA6OmtXaWR0aDsKKyAgfQog
fQogCi1URVNUKEdyb3VwLCBNYXRjaEVtcHR5T3JEZWxldGVkKSB7Ci0gIGN0cmxfdCBncm91cFtd
ID0ge2tFbXB0eSwgMSwga0RlbGV0ZWQsIDMsIGtFbXB0eSwgNSwga1NlbnRpbmVsLCA3LAotICAg
ICAgICAgICAgICAgICAgICA3LCAgICAgIDUsIDMsICAgICAgICAxLCAxLCAgICAgIDEsIDEsICAg
ICAgICAgMX07Ci0gIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaEVtcHR5T3JEZWxldGVk
KCksIEVsZW1lbnRzQXJlKDAsIDIsIDQpKTsKLX0KLSNlbHNlCi1URVNUKEdyb3VwLCBNYXRjaCkg
ewotICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1wdHksIDEsIDIsIGtEZWxldGVkLCAyLCAxLCBrU2Vu
dGluZWwsIDF9OwotICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMCksIEVsZW1lbnRz
QXJlKCkpOwotICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMSksIEVsZW1lbnRzQXJl
KDEsIDUsIDcpKTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDIpLCBFbGVtZW50
c0FyZSgyLCA0KSk7Ci19CiBURVNUKEdyb3VwLCBNYXRjaEVtcHR5KSB7Ci0gIGN0cmxfdCBncm91
cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0ZWQsIDIsIDEsIGtTZW50aW5lbCwgMX07Ci0gIEVY
UEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaEVtcHR5KCksIEVsZW1lbnRzQXJlKDApKTsKKyAg
aWYgKEdyb3VwOjprV2lkdGggPT0gMTYpIHsKKyAgICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1wdHks
IDEsIGtEZWxldGVkLCAzLCBrRW1wdHksIDUsIGtTZW50aW5lbCwgNywKKyAgICAgICAgICAgICAg
ICAgICAgICA3LCAgICAgIDUsIDMsICAgICAgICAxLCAxLCAgICAgIDEsIDEsICAgICAgICAgMX07
CisgICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoRW1wdHkoKSwgRWxlbWVudHNBcmUo
MCwgNCkpOworICB9IGVsc2UgaWYgKEdyb3VwOjprV2lkdGggPT0gOCkgeworICAgIGN0cmxfdCBn
cm91cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0ZWQsIDIsIDEsIGtTZW50aW5lbCwgMX07Cisg
ICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoRW1wdHkoKSwgRWxlbWVudHNBcmUoMCkp
OworICB9IGVsc2UgeworICAgIEZBSUwoKSA8PCAiTm8gdGVzdCBjb3ZlcmFnZSBmb3IgR3JvdXA6
OmtXaWR0aD09IiA8PCBHcm91cDo6a1dpZHRoOworICB9CiB9CiAKIFRFU1QoR3JvdXAsIE1hdGNo
RW1wdHlPckRlbGV0ZWQpIHsKLSAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCAyLCBrRGVs
ZXRlZCwgMiwgMSwga1NlbnRpbmVsLCAxfTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1h
dGNoRW1wdHlPckRlbGV0ZWQoKSwgRWxlbWVudHNBcmUoMCwgMykpOworICBpZiAoR3JvdXA6OmtX
aWR0aCA9PSAxNikgeworICAgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwga0RlbGV0ZWQs
IDMsIGtFbXB0eSwgNSwga1NlbnRpbmVsLCA3LAorICAgICAgICAgICAgICAgICAgICAgIDcsICAg
ICAgNSwgMywgICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAgICAxfTsKKyAgICBFWFBFQ1Rf
VEhBVChHcm91cHtncm91cH0uTWF0Y2hFbXB0eU9yRGVsZXRlZCgpLCBFbGVtZW50c0FyZSgwLCAy
LCA0KSk7CisgIH0gZWxzZSBpZiAoR3JvdXA6OmtXaWR0aCA9PSA4KSB7CisgICAgY3RybF90IGdy
b3VwW10gPSB7a0VtcHR5LCAxLCAyLCBrRGVsZXRlZCwgMiwgMSwga1NlbnRpbmVsLCAxfTsKKyAg
ICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2hFbXB0eU9yRGVsZXRlZCgpLCBFbGVtZW50
c0FyZSgwLCAzKSk7CisgIH0gZWxzZSB7CisgICAgRkFJTCgpIDw8ICJObyB0ZXN0IGNvdmVyYWdl
IGZvciBHcm91cDo6a1dpZHRoPT0iIDw8IEdyb3VwOjprV2lkdGg7CisgIH0KIH0KLSNlbmRpZgog
CiBURVNUKEJhdGNoLCBEcm9wRGVsZXRlcykgewogICBjb25zdGV4cHIgc2l6ZV90IGtDYXBhY2l0
eSA9IDYzOwpAQCAtMzEwLDcgKzM0MywyNSBAQCBzdHJ1Y3QgSW50VGFibGUKICAgICA6IHJhd19o
YXNoX3NldDxJbnRQb2xpY3ksIGNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0X2hhc2g8
aW50NjRfdD4sCiAgICAgICAgICAgICAgICAgICAgc3RkOjplcXVhbF90bzxpbnQ2NF90Piwgc3Rk
OjphbGxvY2F0b3I8aW50NjRfdD4+IHsKICAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIEludFRhYmxl
OjpyYXdfaGFzaF9zZXQ7Ci0gIEludFRhYmxlKCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEN1c3RvbUFsbG9jIDogc3RkOjphbGxv
Y2F0b3I8VD4geworICBDdXN0b21BbGxvYygpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+
CisgIEN1c3RvbUFsbG9jKGNvbnN0IEN1c3RvbUFsbG9jPFU+JiBvdGhlcikge30KKworICB0ZW1w
bGF0ZTxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5kIHsKKyAgICB1c2luZyBvdGhlciA9IEN1c3RvbUFs
bG9jPFU+OworICB9OworfTsKKworc3RydWN0IEN1c3RvbUFsbG9jSW50VGFibGUKKyAgICA6IHJh
d19oYXNoX3NldDxJbnRQb2xpY3ksIGNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0X2hh
c2g8aW50NjRfdD4sCisgICAgICAgICAgICAgICAgICAgc3RkOjplcXVhbF90bzxpbnQ2NF90Piwg
Q3VzdG9tQWxsb2M8aW50NjRfdD4+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIEN1c3RvbUFs
bG9jSW50VGFibGU6OnJhd19oYXNoX3NldDsKICAgdXNpbmcgQmFzZTo6QmFzZTsKIH07CiAKQEAg
LTMzOCw2ICszODksNyBAQCBURVNUKFRhYmxlLCBFbXB0eUZ1bmN0b3JPcHRpbWl6YXRpb24pIHsK
ICAgICBzaXplX3Qgc2l6ZTsKICAgICBzaXplX3QgY2FwYWNpdHk7CiAgICAgc2l6ZV90IGdyb3d0
aF9sZWZ0OworICAgIHZvaWQqIGluZm96OwogICB9OwogICBzdHJ1Y3QgU3RhdGVsZXNzSGFzaCB7
CiAgICAgc2l6ZV90IG9wZXJhdG9yKCkoYWJzbDo6c3RyaW5nX3ZpZXcpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KQEAgLTM4MCwxMyArNDMyLDE1IEBAIFRFU1QoVGFibGUsIFByZWZldGNoKSB7CiAgIHQu
cHJlZmV0Y2goMik7CiAKICAgLy8gRG8gbm90IHJ1biBpbiBkZWJ1ZyBtb2RlLCB3aGVuIHByZWZl
dGNoIGlzIG5vdCBpbXBsZW1lbnRlZCwgb3Igd2hlbgotICAvLyBzYW5pdGl6ZXJzIGFyZSBlbmFi
bGVkLgotI2lmIGRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5l
ZChBRERSRVNTX1NBTklUSVpFUikgJiYgXAotICAgICFkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIp
ICYmICFkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpICYmICAgICAgICAgICAgXAotICAgICFkZWZp
bmVkKFVOREVGSU5FRF9CRUhBVklPUl9TQU5JVElaRVIpCisgIC8vIHNhbml0aXplcnMgYXJlIGVu
YWJsZWQsIG9yIG9uIFdlYkFzc2VtYmx5LgorI2lmIGRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVk
KF9fR05VQ19fKSAmJiBkZWZpbmVkKF9feDg2XzY0X18pICYmICAgICAgICAgIFwKKyAgICAhZGVm
aW5lZChBRERSRVNTX1NBTklUSVpFUikgJiYgIWRlZmluZWQoTUVNT1JZX1NBTklUSVpFUikgJiYg
ICAgICAgICAgICBcCisgICAgIWRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikgJiYgIWRlZmluZWQo
VU5ERUZJTkVEX0JFSEFWSU9SX1NBTklUSVpFUikgJiYgXAorICAgICFkZWZpbmVkKF9fRU1TQ1JJ
UFRFTl9fKQogICBjb25zdCBhdXRvIG5vdyA9IFtdIHsgcmV0dXJuIGFic2w6OmJhc2VfaW50ZXJu
YWw6OkN5Y2xlQ2xvY2s6Ok5vdygpOyB9OwogCi0gIHN0YXRpYyBjb25zdGV4cHIgaW50IHNpemUg
PSAxMDAwMDAwOworICAvLyBNYWtlIHNpemUgZW5vdWdoIHRvIG5vdCBmaXQgaW4gTDIgY2FjaGUg
KDE2LjcgTWIpCisgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNpemUgPSAxIDw8IDIyOwogICBmb3Ig
KGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgdC5pbnNlcnQoaSk7CiAKICAgaW50NjRfdCBub19w
cmVmZXRjaCA9IDAsIHByZWZldGNoID0gMDsKQEAgLTY4Nyw3ICs3NDEsNyBAQCBURVNUKFRhYmxl
LCBSZWhhc2hXaXRoTm9SZXNpemUpIHsKICAgTW9kdWxvMTAwMEhhc2hUYWJsZSB0OwogICAvLyBB
ZGRpbmcgdGhlIHNhbWUgbGVuZ3RoIChhbmQgdGhlIHNhbWUgaGFzaCkgc3RyaW5ncwogICAvLyB0
byBoYXZlIGF0IGxlYXN0IGtNaW5GdWxsR3JvdXBzIGdyb3VwcwotICAvLyB3aXRoIEdyb3VwOjpr
V2lkdGggY29sbGlzaW9ucy4gVGhlbiBmZWVsIHVwdG8gTWF4RGVuc2l0eVNpemU7CisgIC8vIHdp
dGggR3JvdXA6OmtXaWR0aCBjb2xsaXNpb25zLiBUaGVuIGZpbGwgdXAgdG8gTWF4RGVuc2l0eVNp
emU7CiAgIGNvbnN0IHNpemVfdCBrTWluRnVsbEdyb3VwcyA9IDc7CiAgIHN0ZDo6dmVjdG9yPGlu
dD4ga2V5czsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBNYXhEZW5zaXR5U2l6ZShHcm91cDo6
a1dpZHRoICoga01pbkZ1bGxHcm91cHMpOyArK2kpIHsKQEAgLTc3OSw3ICs4MzMsNyBAQCBURVNU
KFRhYmxlLCBFbnN1cmVOb25RdWFkcmF0aWNBc0luUnVzdCkgewogVEVTVChUYWJsZSwgQ2xlYXJC
dWcpIHsKICAgSW50VGFibGUgdDsKICAgY29uc3RleHByIHNpemVfdCBjYXBhY2l0eSA9IGNvbnRh
aW5lcl9pbnRlcm5hbDo6R3JvdXA6OmtXaWR0aCAtIDE7Ci0gIGNvbnN0ZXhwciBzaXplX3QgbWF4
X3NpemUgPSBjYXBhY2l0eSAvIDI7CisgIGNvbnN0ZXhwciBzaXplX3QgbWF4X3NpemUgPSBjYXBh
Y2l0eSAvIDIgKyAxOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heF9zaXplOyArK2kpIHsK
ICAgICB0Lmluc2VydChpKTsKICAgfQpAQCAtODEwLDYgKzg2NCwyNSBAQCBURVNUKFRhYmxlLCBF
cmFzZSkgewogICBFWFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7CiB9CiAKK1RFU1Qo
VGFibGUsIEVyYXNlTWFpbnRhaW5zVmFsaWRJdGVyYXRvcikgeworICBJbnRUYWJsZSB0OworICBj
b25zdCBpbnQga051bUVsZW1lbnRzID0gMTAwOworICBmb3IgKGludCBpID0gMDsgaSA8IGtOdW1F
bGVtZW50czsgaSArKykgeworICAgIEVYUEVDVF9UUlVFKHQuZW1wbGFjZShpKS5zZWNvbmQpOwor
ICB9CisgIEVYUEVDVF9FUSh0LnNpemUoKSwga051bUVsZW1lbnRzKTsKKworICBpbnQgbnVtX2Vy
YXNlX2NhbGxzID0gMDsKKyAgYXV0byBpdCA9IHQuYmVnaW4oKTsKKyAgd2hpbGUgKGl0ICE9IHQu
ZW5kKCkpIHsKKyAgICB0LmVyYXNlKGl0KyspOworICAgIG51bV9lcmFzZV9jYWxscysrOworICB9
CisKKyAgRVhQRUNUX1RSVUUodC5lbXB0eSgpKTsKKyAgRVhQRUNUX0VRKG51bV9lcmFzZV9jYWxs
cywga051bUVsZW1lbnRzKTsKK30KKwogLy8gQ29sbGVjdCBOIGJhZCBrZXlzIGJ5IGZvbGxvd2lu
ZyBhbGdvcml0aG06CiAvLyAxLiBDcmVhdGUgYW4gZW1wdHkgdGFibGUgYW5kIHJlc2VydmUgaXQg
dG8gMiAqIE4uCiAvLyAyLiBJbnNlcnQgTiByYW5kb20gZWxlbWVudHMuCkBAIC0xMDA4LDcgKzEw
ODEsNyBAQCBQcm9iZVN0YXRzIENvbGxlY3RQcm9iZVN0YXRzT25LZXlzWG9yZWRXaXRoU2VlZChj
b25zdCBzdGQ6OnZlY3RvcjxpbnQ2NF90PiYga2V5cwogCiBFeHBlY3RlZFN0YXRzIFhvclNlZWRF
eHBlY3RlZFN0YXRzKCkgewogICBjb25zdGV4cHIgYm9vbCBrUmFuZG9taXplc0luc2VydHMgPQot
I2lmIE5ERUJVRworI2lmZGVmIE5ERUJVRwogICAgICAgZmFsc2U7CiAjZWxzZSAgIC8vIE5ERUJV
RwogICAgICAgdHJ1ZTsKQEAgLTEwMjksNyArMTEwMiw2IEBAIEV4cGVjdGVkU3RhdHMgWG9yU2Vl
ZEV4cGVjdGVkU3RhdHMoKSB7CiAgICAgICAgICAge3swLjk1LCAwLjF9fSwKICAgICAgICAgICB7
ezAuOTUsIDB9LCB7MC45OSwgMn0sIHswLjk5OSwgNH0sIHswLjk5OTksIDEwfX19OwogICAgICAg
fQotICAgICAgYnJlYWs7CiAgICAgY2FzZSAxNjoKICAgICAgIGlmIChrUmFuZG9taXplc0luc2Vy
dHMpIHsKICAgICAgICAgcmV0dXJuIHswLjEsCkBAIC0xMDQyLDEyICsxMTE0LDExIEBAIEV4cGVj
dGVkU3RhdHMgWG9yU2VlZEV4cGVjdGVkU3RhdHMoKSB7CiAgICAgICAgICAgICAgICAge3swLjk1
LCAwLjA1fX0sCiAgICAgICAgICAgICAgICAge3swLjk1LCAwfSwgezAuOTksIDF9LCB7MC45OTks
IDR9LCB7MC45OTk5LCAxMH19fTsKICAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6
Ci0gICAgICBBQlNMX1JBV19MT0coRkFUQUwsICIlcyIsICJVbmtub3duIEdyb3VwIHdpZHRoIik7
CiAgIH0KKyAgQUJTTF9SQVdfTE9HKEZBVEFMLCAiJXMiLCAiVW5rbm93biBHcm91cCB3aWR0aCIp
OwogICByZXR1cm4ge307CiB9CisKIFRFU1QoVGFibGUsIERJU0FCTEVEX0Vuc3VyZU5vblF1YWRy
YXRpY1RvcE5Yb3JTZWVkQnlQcm9iZVNlcUxlbmd0aCkgewogICBQcm9iZVN0YXRzUGVyU2l6ZSBz
dGF0czsKICAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBzaXplcyA9IHtHcm91cDo6a1dpZHRoIDw8IDUs
IEdyb3VwOjprV2lkdGggPDwgMTB9OwpAQCAtMTEwNCw3ICsxMTc1LDcgQEAgUHJvYmVTdGF0cyBD
b2xsZWN0UHJvYmVTdGF0c09uTGluZWFybHlUcmFuc2Zvcm1lZEtleXMoCiAKIEV4cGVjdGVkU3Rh
dHMgTGluZWFyVHJhbnNmb3JtRXhwZWN0ZWRTdGF0cygpIHsKICAgY29uc3RleHByIGJvb2wga1Jh
bmRvbWl6ZXNJbnNlcnRzID0KLSNpZiBOREVCVUcKKyNpZmRlZiBOREVCVUcKICAgICAgIGZhbHNl
OwogI2Vsc2UgICAvLyBOREVCVUcKICAgICAgIHRydWU7CkBAIC0xMTI1LDcgKzExOTYsNiBAQCBF
eHBlY3RlZFN0YXRzIExpbmVhclRyYW5zZm9ybUV4cGVjdGVkU3RhdHMoKSB7CiAgICAgICAgICAg
ICAgICAge3swLjk1LCAwLjN9fSwKICAgICAgICAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwg
M30sIHswLjk5OSwgMTV9LCB7MC45OTk5LCAyNX19fTsKICAgICAgIH0KLSAgICAgIGJyZWFrOwog
ICAgIGNhc2UgMTY6CiAgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7CiAgICAgICAgIHJl
dHVybiB7MC4xLApAQCAtMTEzOCwxMiArMTIwOCwxMSBAQCBFeHBlY3RlZFN0YXRzIExpbmVhclRy
YW5zZm9ybUV4cGVjdGVkU3RhdHMoKSB7CiAgICAgICAgICAgICAgICAge3swLjk1LCAwLjF9fSwK
ICAgICAgICAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMX0sIHswLjk5OSwgNn0sIHswLjk5
OTksIDEwfX19OwogICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEFC
U0xfUkFXX0xPRyhGQVRBTCwgIiVzIiwgIlVua25vd24gR3JvdXAgd2lkdGgiKTsKICAgfQorICBB
QlNMX1JBV19MT0coRkFUQUwsICIlcyIsICJVbmtub3duIEdyb3VwIHdpZHRoIik7CiAgIHJldHVy
biB7fTsKIH0KKwogVEVTVChUYWJsZSwgRElTQUJMRURfRW5zdXJlTm9uUXVhZHJhdGljVG9wTkxp
bmVhclRyYW5zZm9ybUJ5UHJvYmVTZXFMZW5ndGgpIHsKICAgUHJvYmVTdGF0c1BlclNpemUgc3Rh
dHM7CiAgIHN0ZDo6dmVjdG9yPHNpemVfdD4gc2l6ZXMgPSB7R3JvdXA6OmtXaWR0aCA8PCA1LCBH
cm91cDo6a1dpZHRoIDw8IDEwfTsKQEAgLTEyOTYsMzcgKzEzNjUsMzEgQEAgVEVTVChUYWJsZSwg
Q29uc3RydWN0RnJvbUluaXRMaXN0KSB7CiAKIFRFU1QoVGFibGUsIENvcHlDb25zdHJ1Y3QpIHsK
ICAgSW50VGFibGUgdDsKLSAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOwogICB0LmVtcGxhY2Uo
MCk7CiAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CiAgIHsKICAgICBJbnRUYWJsZSB1KHQpOwog
ICAgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRKHQubWF4X2xvYWRfZmFj
dG9yKCksIHUubWF4X2xvYWRfZmFjdG9yKCkpOwogICAgIEVYUEVDVF9USEFUKCp1LmZpbmQoMCks
IDApOwogICB9CiAgIHsKICAgICBJbnRUYWJsZSB1e3R9OwogICAgIEVYUEVDVF9FUSgxLCB1LnNp
emUoKSk7Ci0gICAgRVhQRUNUX0VRKHQubWF4X2xvYWRfZmFjdG9yKCksIHUubWF4X2xvYWRfZmFj
dG9yKCkpOwogICAgIEVYUEVDVF9USEFUKCp1LmZpbmQoMCksIDApOwogICB9CiAgIHsKICAgICBJ
bnRUYWJsZSB1ID0gdDsKICAgICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOwotICAgIEVYUEVDVF9F
USh0Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgICBFWFBFQ1Rf
VEhBVCgqdS5maW5kKDApLCAwKTsKICAgfQogfQogCiBURVNUKFRhYmxlLCBDb3B5Q29uc3RydWN0
V2l0aEFsbG9jKSB7CiAgIFN0cmluZ1RhYmxlIHQ7Ci0gIHQubWF4X2xvYWRfZmFjdG9yKC4zMjFm
KTsKICAgdC5lbXBsYWNlKCJhIiwgImIiKTsKICAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKICAg
U3RyaW5nVGFibGUgdSh0LCBBbGxvYzxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5n
Pj4oKSk7CiAgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7Ci0gIEVYUEVDVF9FUSh0Lm1heF9sb2Fk
X2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgRVhQRUNUX1RIQVQoKnUuZmluZCgi
YSIpLCBQYWlyKCJhIiwgImIiKSk7CiB9CiAKQEAgLTEzNDQsOTQgKzE0MDcsNzUgQEAgVEVTVChU
YWJsZSwgQWxsb2NXaXRoRXhwbGljaXRDdG9yKSB7CiBURVNUKFRhYmxlLCBNb3ZlQ29uc3RydWN0
KSB7CiAgIHsKICAgICBTdHJpbmdUYWJsZSB0OwotICAgIHQubWF4X2xvYWRfZmFjdG9yKC4zMjFm
KTsKLSAgICBjb25zdCBmbG9hdCBsZiA9IHQubWF4X2xvYWRfZmFjdG9yKCk7CiAgICAgdC5lbXBs
YWNlKCJhIiwgImIiKTsKICAgICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOwogCiAgICAgU3RyaW5n
VGFibGUgdShzdGQ6Om1vdmUodCkpOwogICAgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7Ci0gICAg
RVhQRUNUX0VRKGxmLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgICBFWFBFQ1RfVEhBVCgqdS5m
aW5kKCJhIiksIFBhaXIoImEiLCAiYiIpKTsKICAgfQogICB7CiAgICAgU3RyaW5nVGFibGUgdDsK
LSAgICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7Ci0gICAgY29uc3QgZmxvYXQgbGYgPSB0Lm1h
eF9sb2FkX2ZhY3RvcigpOwogICAgIHQuZW1wbGFjZSgiYSIsICJiIik7CiAgICAgRVhQRUNUX0VR
KDEsIHQuc2l6ZSgpKTsKIAogICAgIFN0cmluZ1RhYmxlIHV7c3RkOjptb3ZlKHQpfTsKICAgICBF
WFBFQ1RfRVEoMSwgdS5zaXplKCkpOwotICAgIEVYUEVDVF9FUShsZiwgdS5tYXhfbG9hZF9mYWN0
b3IoKSk7CiAgICAgRVhQRUNUX1RIQVQoKnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7CiAg
IH0KICAgewogICAgIFN0cmluZ1RhYmxlIHQ7Ci0gICAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYp
OwotICAgIGNvbnN0IGZsb2F0IGxmID0gdC5tYXhfbG9hZF9mYWN0b3IoKTsKICAgICB0LmVtcGxh
Y2UoImEiLCAiYiIpOwogICAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CiAKICAgICBTdHJpbmdU
YWJsZSB1ID0gc3RkOjptb3ZlKHQpOwogICAgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7Ci0gICAg
RVhQRUNUX0VRKGxmLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgICBFWFBFQ1RfVEhBVCgqdS5m
aW5kKCJhIiksIFBhaXIoImEiLCAiYiIpKTsKICAgfQogfQogCiBURVNUKFRhYmxlLCBNb3ZlQ29u
c3RydWN0V2l0aEFsbG9jKSB7CiAgIFN0cmluZ1RhYmxlIHQ7Ci0gIHQubWF4X2xvYWRfZmFjdG9y
KC4zMjFmKTsKLSAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9sb2FkX2ZhY3RvcigpOwogICB0LmVt
cGxhY2UoImEiLCAiYiIpOwogICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOwogICBTdHJpbmdUYWJs
ZSB1KHN0ZDo6bW92ZSh0KSwgQWxsb2M8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmlu
Zz4+KCkpOwogICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOwotICBFWFBFQ1RfRVEobGYsIHUubWF4
X2xvYWRfZmFjdG9yKCkpOwogICBFWFBFQ1RfVEhBVCgqdS5maW5kKCJhIiksIFBhaXIoImEiLCAi
YiIpKTsKIH0KIAogVEVTVChUYWJsZSwgQ29weUFzc2lnbikgewogICBTdHJpbmdUYWJsZSB0Owot
ICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7CiAgIHQuZW1wbGFjZSgiYSIsICJiIik7CiAgIEVY
UEVDVF9FUSgxLCB0LnNpemUoKSk7CiAgIFN0cmluZ1RhYmxlIHU7CiAgIHUgPSB0OwogICBFWFBF
Q1RfRVEoMSwgdS5zaXplKCkpOwotICBFWFBFQ1RfRVEodC5tYXhfbG9hZF9mYWN0b3IoKSwgdS5t
YXhfbG9hZF9mYWN0b3IoKSk7CiAgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEiKSwgUGFpcigiYSIs
ICJiIikpOwogfQogCiBURVNUKFRhYmxlLCBDb3B5U2VsZkFzc2lnbikgewogICBTdHJpbmdUYWJs
ZSB0OwotICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7Ci0gIGNvbnN0IGZsb2F0IGxmID0gdC5t
YXhfbG9hZF9mYWN0b3IoKTsKICAgdC5lbXBsYWNlKCJhIiwgImIiKTsKICAgRVhQRUNUX0VRKDEs
IHQuc2l6ZSgpKTsKICAgdCA9IComdDsKICAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKLSAgRVhQ
RUNUX0VRKGxmLCB0Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgRVhQRUNUX1RIQVQoKnQuZmluZCgi
YSIpLCBQYWlyKCJhIiwgImIiKSk7CiB9CiAKIFRFU1QoVGFibGUsIE1vdmVBc3NpZ24pIHsKICAg
U3RyaW5nVGFibGUgdDsKLSAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOwotICBjb25zdCBmbG9h
dCBsZiA9IHQubWF4X2xvYWRfZmFjdG9yKCk7CiAgIHQuZW1wbGFjZSgiYSIsICJiIik7CiAgIEVY
UEVDVF9FUSgxLCB0LnNpemUoKSk7CiAgIFN0cmluZ1RhYmxlIHU7CiAgIHUgPSBzdGQ6Om1vdmUo
dCk7CiAgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7Ci0gIEVYUEVDVF9FUShsZiwgdS5tYXhfbG9h
ZF9mYWN0b3IoKSk7CiAgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikp
OwogfQogCiBURVNUKFRhYmxlLCBFcXVhbGl0eSkgewogICBTdHJpbmdUYWJsZSB0OwotICBzdGQ6
OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4gdiA9IHt7ImEiLCAi
YiJ9LCB7ImFhIiwgImJiIn19OworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcs
IHN0ZDo6c3RyaW5nPj4gdiA9IHt7ImEiLCAiYiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImFhIiwgImJiIn19OwogICB0Lmluc2Vy
dChzdGQ6OmJlZ2luKHYpLCBzdGQ6OmVuZCh2KSk7CiAgIFN0cmluZ1RhYmxlIHUgPSB0OwogICBF
WFBFQ1RfRVEodSwgdCk7CkBAIC0xNDM5LDIwICsxNDgzLDI0IEBAIFRFU1QoVGFibGUsIEVxdWFs
aXR5KSB7CiAKIFRFU1QoVGFibGUsIEVxdWFsaXR5MikgewogICBTdHJpbmdUYWJsZSB0OwotICBz
dGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4gdjEgPSB7eyJh
IiwgImIifSwgeyJhYSIsICJiYiJ9fTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3Ry
aW5nLCBzdGQ6OnN0cmluZz4+IHYxID0ge3siYSIsICJiIn0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImFhIiwgImJiIn19OwogICB0
Lmluc2VydChzdGQ6OmJlZ2luKHYxKSwgc3RkOjplbmQodjEpKTsKICAgU3RyaW5nVGFibGUgdTsK
LSAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYyID0g
e3siYSIsICJhIn0sIHsiYWEiLCAiYWEifX07CisgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6
OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2MiA9IHt7ImEiLCAiYSJ9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhYSIsICJhYSJ9fTsK
ICAgdS5pbnNlcnQoc3RkOjpiZWdpbih2MiksIHN0ZDo6ZW5kKHYyKSk7CiAgIEVYUEVDVF9ORSh1
LCB0KTsKIH0KIAogVEVTVChUYWJsZSwgRXF1YWxpdHkzKSB7CiAgIFN0cmluZ1RhYmxlIHQ7Ci0g
IHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2MSA9IHt7
ImIiLCAiYiJ9LCB7ImJiIiwgImJiIn19OworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpz
dHJpbmcsIHN0ZDo6c3RyaW5nPj4gdjEgPSB7eyJiIiwgImIifSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYmIiLCAiYmIifX07CiAg
IHQuaW5zZXJ0KHN0ZDo6YmVnaW4odjEpLCBzdGQ6OmVuZCh2MSkpOwogICBTdHJpbmdUYWJsZSB1
OwotICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4gdjIg
PSB7eyJhIiwgImEifSwgeyJhYSIsICJhYSJ9fTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0
ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYyID0ge3siYSIsICJhIn0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImFhIiwgImFhIn19
OwogICB1Lmluc2VydChzdGQ6OmJlZ2luKHYyKSwgc3RkOjplbmQodjIpKTsKICAgRVhQRUNUX05F
KHUsIHQpOwogfQpAQCAtMTY3Nyw3ICsxNzI1LDcgQEAgVEVTVChOb2RlcywgRXh0cmFjdEluc2Vy
dCkgewogICBFWFBFQ1RfRkFMU0Uobm9kZS5lbXB0eSgpKTsKIAogICBTdHJpbmdUYWJsZSB0MjsK
LSAgYXV0byByZXMgPSB0Mi5pbnNlcnQoc3RkOjptb3ZlKG5vZGUpKTsKKyAgU3RyaW5nVGFibGU6
Omluc2VydF9yZXR1cm5fdHlwZSByZXMgPSB0Mi5pbnNlcnQoc3RkOjptb3ZlKG5vZGUpKTsKICAg
RVhQRUNUX1RSVUUocmVzLmluc2VydGVkKTsKICAgRVhQRUNUX1RIQVQoKnJlcy5wb3NpdGlvbiwg
UGFpcihrMCwgIiIpKTsKICAgRVhQRUNUX0ZBTFNFKHJlcy5ub2RlKTsKQEAgLTE3MDcsNzMgKzE3
NTUsNDkgQEAgVEVTVChOb2RlcywgRXh0cmFjdEluc2VydCkgewogICBFWFBFQ1RfRkFMU0Uobm9k
ZSk7CiB9CiAKLVN0cmluZ1RhYmxlIE1ha2VTaW1wbGVUYWJsZShzaXplX3Qgc2l6ZSkgewotICBT
dHJpbmdUYWJsZSB0OwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgdC5lbXBs
YWNlKHN0ZDo6c3RyaW5nKDEsICdBJyArIGkpLCAiIik7CitJbnRUYWJsZSBNYWtlU2ltcGxlVGFi
bGUoc2l6ZV90IHNpemUpIHsKKyAgSW50VGFibGUgdDsKKyAgd2hpbGUgKHQuc2l6ZSgpIDwgc2l6
ZSkgdC5pbnNlcnQodC5zaXplKCkpOwogICByZXR1cm4gdDsKIH0KIAotc3RkOjpzdHJpbmcgT3Jk
ZXJPZkl0ZXJhdGlvbihjb25zdCBTdHJpbmdUYWJsZSYgdCkgewotICBzdGQ6OnN0cmluZyBvcmRl
cjsKLSAgZm9yIChhdXRvJiBwIDogdCkgb3JkZXIgKz0gcC5maXJzdDsKLSAgcmV0dXJuIG9yZGVy
Oworc3RkOjp2ZWN0b3I8aW50PiBPcmRlck9mSXRlcmF0aW9uKGNvbnN0IEludFRhYmxlJiB0KSB7
CisgIHJldHVybiB7dC5iZWdpbigpLCB0LmVuZCgpfTsKIH0KIAorLy8gVGhlc2UgSXRlcmF0aW9u
T3JkZXJDaGFuZ2VzIHRlc3RzIGRlcGVuZCBvbiBub24tZGV0ZXJtaW5pc3RpYyBiZWhhdmlvci4K
Ky8vIFdlIGFyZSBpbmplY3Rpbmcgbm9uLWRldGVybWluaXNtIGZyb20gdGhlIHBvaW50ZXIgb2Yg
dGhlIHRhYmxlLCBidXQgZG8gc28gaW4KKy8vIGEgd2F5IHRoYXQgb25seSB0aGUgcGFnZSBtYXR0
ZXJzLiBXZSBoYXZlIHRvIHJldHJ5IGVub3VnaCB0aW1lcyB0byBtYWtlIHN1cmUKKy8vIHdlIGFy
ZSB0b3VjaGluZyBkaWZmZXJlbnQgbWVtb3J5IHBhZ2VzIHRvIGNhdXNlIHRoZSBvcmRlcmluZyB0
byBjaGFuZ2UuCisvLyBXZSBhbHNvIG5lZWQgdG8ga2VlcCB0aGUgb2xkIHRhYmxlcyBhcm91bmQg
dG8gYXZvaWQgZ2V0dGluZyB0aGUgc2FtZSBtZW1vcnkKKy8vIGJsb2NrcyBvdmVyIGFuZCBvdmVy
LgogVEVTVChUYWJsZSwgSXRlcmF0aW9uT3JkZXJDaGFuZ2VzQnlJbnN0YW5jZSkgewotICAvLyBO
ZWVkcyB0byBiZSBtb3JlIHRoYW4ga1dpZHRoIGVsZW1lbnRzIHRvIGJlIGFibGUgdG8gYWZmZWN0
IG9yZGVyLgotICBjb25zdCBTdHJpbmdUYWJsZSByZWZlcmVuY2UgPSBNYWtlU2ltcGxlVGFibGUo
MjApOwotCi0gIC8vIFNpbmNlIG9yZGVyIGlzIG5vbi1kZXRlcm1pbmlzdGljIHdlIGNhbid0IGp1
c3QgdHJ5IG9uY2UgYW5kIHZlcmlmeS4KLSAgLy8gV2UnbGwgdHJ5IHVudGlsIHdlIGZpbmQgdGhh
dCBvcmRlciBjaGFuZ2VkLiBJdCBzaG91bGQgbm90IHRha2UgbWFueSB0cmllcwotICAvLyBmb3Ig
dGhhdC4KLSAgLy8gSW1wb3J0YW50OiB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9sZCB0YWJsZXMgYXJv
dW5kLiBPdGhlcndpc2UgdGNtYWxsb2Mgd2lsbAotICAvLyBqdXN0IGdpdmUgdXMgdGhlIHNhbWUg
YmxvY2tzIGFuZCB3ZSB3b3VsZCBiZSBkb2luZyB0aGUgc2FtZSBvcmRlciBhZ2Fpbi4KLSAgc3Rk
Ojp2ZWN0b3I8U3RyaW5nVGFibGU+IGdhcmJhZ2U7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7
ICsraSkgewotICAgIGF1dG8gdHJpYWwgPSBNYWtlU2ltcGxlVGFibGUoMjApOwotICAgIGlmIChP
cmRlck9mSXRlcmF0aW9uKHRyaWFsKSAhPSBPcmRlck9mSXRlcmF0aW9uKHJlZmVyZW5jZSkpIHsK
LSAgICAgIC8vIFdlIGFyZSBkb25lLgotICAgICAgcmV0dXJuOworICBmb3IgKHNpemVfdCBzaXpl
IDogezIsIDYsIDEyLCAyMH0pIHsKKyAgICBjb25zdCBhdXRvIHJlZmVyZW5jZV90YWJsZSA9IE1h
a2VTaW1wbGVUYWJsZShzaXplKTsKKyAgICBjb25zdCBhdXRvIHJlZmVyZW5jZSA9IE9yZGVyT2ZJ
dGVyYXRpb24ocmVmZXJlbmNlX3RhYmxlKTsKKworICAgIHN0ZDo6dmVjdG9yPEludFRhYmxlPiB0
YWJsZXM7CisgICAgYm9vbCBmb3VuZF9kaWZmZXJlbmNlID0gZmFsc2U7CisgICAgZm9yIChpbnQg
aSA9IDA7ICFmb3VuZF9kaWZmZXJlbmNlICYmIGkgPCA1MDAwOyArK2kpIHsKKyAgICAgIHRhYmxl
cy5wdXNoX2JhY2soTWFrZVNpbXBsZVRhYmxlKHNpemUpKTsKKyAgICAgIGZvdW5kX2RpZmZlcmVu
Y2UgPSBPcmRlck9mSXRlcmF0aW9uKHRhYmxlcy5iYWNrKCkpICE9IHJlZmVyZW5jZTsKKyAgICB9
CisgICAgaWYgKCFmb3VuZF9kaWZmZXJlbmNlKSB7CisgICAgICBGQUlMKCkKKyAgICAgICAgICA8
PCAiSXRlcmF0aW9uIG9yZGVyIHJlbWFpbmVkIHRoZSBzYW1lIGFjcm9zcyBtYW55IGF0dGVtcHRz
IHdpdGggc2l6ZSAiCisgICAgICAgICAgPDwgc2l6ZTsKICAgICB9Ci0gICAgZ2FyYmFnZS5wdXNo
X2JhY2soc3RkOjptb3ZlKHRyaWFsKSk7CiAgIH0KLSAgRkFJTCgpOwogfQogCiBURVNUKFRhYmxl
LCBJdGVyYXRpb25PcmRlckNoYW5nZXNPblJlaGFzaCkgewotICAvLyBTaW5jZSBvcmRlciBpcyBu
b24tZGV0ZXJtaW5pc3RpYyB3ZSBjYW4ndCBqdXN0IHRyeSBvbmNlIGFuZCB2ZXJpZnkuCi0gIC8v
IFdlJ2xsIHRyeSB1bnRpbCB3ZSBmaW5kIHRoYXQgb3JkZXIgY2hhbmdlZC4gSXQgc2hvdWxkIG5v
dCB0YWtlIG1hbnkgdHJpZXMKLSAgLy8gZm9yIHRoYXQuCi0gIC8vIEltcG9ydGFudDogd2UgaGF2
ZSB0byBrZWVwIHRoZSBvbGQgdGFibGVzIGFyb3VuZC4gT3RoZXJ3aXNlIHRjbWFsbG9jIHdpbGwK
LSAgLy8ganVzdCBnaXZlIHVzIHRoZSBzYW1lIGJsb2NrcyBhbmQgd2Ugd291bGQgYmUgZG9pbmcg
dGhlIHNhbWUgb3JkZXIgYWdhaW4uCi0gIHN0ZDo6dmVjdG9yPFN0cmluZ1RhYmxlPiBnYXJiYWdl
OwotICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICAvLyBOZWVkcyB0byBiZSBt
b3JlIHRoYW4ga1dpZHRoIGVsZW1lbnRzIHRvIGJlIGFibGUgdG8gYWZmZWN0IG9yZGVyLgotICAg
IFN0cmluZ1RhYmxlIHQgPSBNYWtlU2ltcGxlVGFibGUoMjApOwotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHJlZmVyZW5jZSA9IE9yZGVyT2ZJdGVyYXRpb24odCk7CisgIHN0ZDo6dmVjdG9yPEludFRh
YmxlPiBnYXJiYWdlOworICBmb3IgKGludCBpID0gMDsgaSA8IDUwMDA7ICsraSkgeworICAgIGF1
dG8gdCA9IE1ha2VTaW1wbGVUYWJsZSgyMCk7CisgICAgY29uc3QgYXV0byByZWZlcmVuY2UgPSBP
cmRlck9mSXRlcmF0aW9uKHQpOwogICAgIC8vIEZvcmNlIHJlaGFzaCB0byB0aGUgc2FtZSBzaXpl
LgogICAgIHQucmVoYXNoKDApOwotICAgIHN0ZDo6c3RyaW5nIHRyaWFsID0gT3JkZXJPZkl0ZXJh
dGlvbih0KTsKLSAgICBpZiAodHJpYWwgIT0gcmVmZXJlbmNlKSB7Ci0gICAgICAvLyBXZSBhcmUg
ZG9uZS4KLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZ2FyYmFnZS5wdXNoX2JhY2soc3RkOjpt
b3ZlKHQpKTsKLSAgfQotICBGQUlMKCk7Ci19Ci0KLVRFU1QoVGFibGUsIEl0ZXJhdGlvbk9yZGVy
Q2hhbmdlc0ZvclNtYWxsVGFibGVzKSB7Ci0gIC8vIFNpbmNlIG9yZGVyIGlzIG5vbi1kZXRlcm1p
bmlzdGljIHdlIGNhbid0IGp1c3QgdHJ5IG9uY2UgYW5kIHZlcmlmeS4KLSAgLy8gV2UnbGwgdHJ5
IHVudGlsIHdlIGZpbmQgdGhhdCBvcmRlciBjaGFuZ2VkLgotICAvLyBJbXBvcnRhbnQ6IHdlIGhh
dmUgdG8ga2VlcCB0aGUgb2xkIHRhYmxlcyBhcm91bmQuIE90aGVyd2lzZSB0Y21hbGxvYyB3aWxs
Ci0gIC8vIGp1c3QgZ2l2ZSB1cyB0aGUgc2FtZSBibG9ja3MgYW5kIHdlIHdvdWxkIGJlIGRvaW5n
IHRoZSBzYW1lIG9yZGVyIGFnYWluLgotICBTdHJpbmdUYWJsZSByZWZlcmVuY2VfdGFibGUgPSBN
YWtlU2ltcGxlVGFibGUoNSk7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHJlZmVyZW5jZSA9IE9yZGVy
T2ZJdGVyYXRpb24ocmVmZXJlbmNlX3RhYmxlKTsKLSAgc3RkOjp2ZWN0b3I8U3RyaW5nVGFibGU+
IGdhcmJhZ2U7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgNTA7ICsraSkgewotICAgIFN0cmluZ1Rh
YmxlIHQgPSBNYWtlU2ltcGxlVGFibGUoNSk7Ci0gICAgc3RkOjpzdHJpbmcgdHJpYWwgPSBPcmRl
ck9mSXRlcmF0aW9uKHQpOworICAgIGF1dG8gdHJpYWwgPSBPcmRlck9mSXRlcmF0aW9uKHQpOwog
ICAgIGlmICh0cmlhbCAhPSByZWZlcmVuY2UpIHsKICAgICAgIC8vIFdlIGFyZSBkb25lLgogICAg
ICAgcmV0dXJuOwpAQCAtMTc4MywxMzYgKzE4MDcsMjIgQEAgVEVTVChUYWJsZSwgSXRlcmF0aW9u
T3JkZXJDaGFuZ2VzRm9yU21hbGxUYWJsZXMpIHsKICAgRkFJTCgpIDw8ICJJdGVyYXRpb24gb3Jk
ZXIgcmVtYWluZWQgdGhlIHNhbWUgYWNyb3NzIG1hbnkgYXR0ZW1wdHMuIjsKIH0KIAotLy8gRmls
bCB0aGUgdGFibGUgdG8gMyBkaWZmZXJlbnQgbG9hZCBmYWN0b3JzIChtaW4sIG1lZGlhbiwgbWF4
KSBhbmQgZXZhbHVhdGUKLS8vIHRoZSBwZXJjZW50YWdlIG9mIHBlcmZlY3QgaGl0cyB1c2luZyB0
aGUgZGVidWcgQVBJLgotdGVtcGxhdGUgPGNsYXNzIFRhYmxlLCBjbGFzcyBBZGRGbj4KLXN0ZDo6
dmVjdG9yPGRvdWJsZT4gQ29sbGVjdFBlcmZlY3RSYXRpb3MoVGFibGUgdCwgQWRkRm4gYWRkKSB7
Ci0gIHVzaW5nIEtleSA9IHR5cGVuYW1lIFRhYmxlOjprZXlfdHlwZTsKLQotICAvLyBGaXJzdCwg
ZmlsbCBlbm91Z2ggdG8gaGF2ZSBhIGdvb2QgZGlzdHJpYnV0aW9uLgotICBjb25zdGV4cHIgc2l6
ZV90IGtNaW5TaXplID0gMTAwMDA7Ci0gIHN0ZDo6dmVjdG9yPEtleT4ga2V5czsKLSAgd2hpbGUg
KHQuc2l6ZSgpIDwga01pblNpemUpIGtleXMucHVzaF9iYWNrKGFkZCh0KSk7Ci0gIC8vIFRoZW4s
IGluc2VydCB1bnRpbCB3ZSByZWFjaCBtaW4gbG9hZCBmYWN0b3IuCi0gIGRvdWJsZSBsZiA9IHQu
bG9hZF9mYWN0b3IoKTsKLSAgd2hpbGUgKGxmIDw9IHQubG9hZF9mYWN0b3IoKSkga2V5cy5wdXNo
X2JhY2soYWRkKHQpKTsKLQotICAvLyBXZSBhcmUgbm93IGF0IG1pbiBsb2FkIGZhY3Rvci4gVGFr
ZSBhIHNuYXBzaG90LgotICBzaXplX3QgcGVyZmVjdCA9IDA7Ci0gIGF1dG8gdXBkYXRlX3BlcmZl
Y3QgPSBbJl0oS2V5IGspIHsKLSAgICBwZXJmZWN0ICs9IEdldEhhc2h0YWJsZURlYnVnTnVtUHJv
YmVzKHQsIGspID09IDA7Ci0gIH07Ci0gIGZvciAoY29uc3QgYXV0byYgayA6IGtleXMpIHVwZGF0
ZV9wZXJmZWN0KGspOworLy8gVmVyaWZ5IHRoYXQgcG9pbnRlcnMgYXJlIGludmFsaWRhdGVkIGFz
IHNvb24gYXMgYSBzZWNvbmQgZWxlbWVudCBpcyBpbnNlcnRlZC4KKy8vIFRoaXMgcHJldmVudHMg
ZGVwZW5kZW5jeSBvbiBwb2ludGVyIHN0YWJpbGl0eSBvbiBzbWFsbCB0YWJsZXMuCitURVNUKFRh
YmxlLCBVbnN0YWJsZVBvaW50ZXJzKSB7CisgIEludFRhYmxlIHRhYmxlOwogCi0gIHN0ZDo6dmVj
dG9yPGRvdWJsZT4gcGVyZmVjdF9yYXRpb3M7Ci0gIC8vIEtlZXAgZ29pbmcgdW50aWwgd2UgaGl0
IG1heCBsb2FkIGZhY3Rvci4KLSAgd2hpbGUgKHQubG9hZF9mYWN0b3IoKSA8IC42KSB7Ci0gICAg
cGVyZmVjdF9yYXRpb3MucHVzaF9iYWNrKDEuMCAqIHBlcmZlY3QgLyB0LnNpemUoKSk7Ci0gICAg
dXBkYXRlX3BlcmZlY3QoYWRkKHQpKTsKLSAgfQotICB3aGlsZSAodC5sb2FkX2ZhY3RvcigpID4g
LjUpIHsKLSAgICBwZXJmZWN0X3JhdGlvcy5wdXNoX2JhY2soMS4wICogcGVyZmVjdCAvIHQuc2l6
ZSgpKTsKLSAgICB1cGRhdGVfcGVyZmVjdChhZGQodCkpOwotICB9Ci0gIHJldHVybiBwZXJmZWN0
X3JhdGlvczsKLX0KLQotc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gU3Ry
aW5nVGFibGVQZWZlY3RSYXRpb3MoKSB7Ci0gIGNvbnN0ZXhwciBib29sIGtSYW5kb21pemVzSW5z
ZXJ0cyA9Ci0jaWYgTkRFQlVHCi0gICAgICBmYWxzZTsKLSNlbHNlICAgLy8gTkRFQlVHCi0gICAg
ICB0cnVlOwotI2VuZGlmICAvLyBOREVCVUcKLQotICAvLyBUaGUgZWZmZWN0aXZlIGxvYWQgZmFj
dG9yIGlzIGxhcmdlciBpbiBub24tb3B0IG1vZGUgYmVjYXVzZSB3ZSBpbnNlcnQKLSAgLy8gZWxl
bWVudHMgb3V0IG9mIG9yZGVyLgotICBzd2l0Y2ggKGNvbnRhaW5lcl9pbnRlcm5hbDo6R3JvdXA6
OmtXaWR0aCkgewotICAgIGNhc2UgODoKLSAgICAgIGlmIChrUmFuZG9taXplc0luc2VydHMpIHsK
LSAgICAgICAgcmV0dXJuIHt7MC45ODYsIDAuMDJ9LCB7MC45NSwgMC4wMn0sIHswLjg5LCAwLjAy
fX07Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4ge3swLjk5NSwgMC4wMX0sIHswLjk3
LCAwLjAxfSwgezAuODksIDAuMDJ9fTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2Ug
MTY6Ci0gICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7Ci0gICAgICAgIHJldHVybiB7ezAu
OTczLCAwLjAxfSwgezAuOTY1LCAwLjAxfSwgezAuOTIsIDAuMDJ9fTsKLSAgICAgIH0gZWxzZSB7
Ci0gICAgICAgIHJldHVybiB7ezAuOTk1LCAwLjAwNX0sIHswLjk5LCAwLjAwNX0sIHswLjk0LCAw
LjAxfX07Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgLy8gSWdu
b3JlIGFueXRoaW5nIGVsc2UuCi0gICAgICByZXR1cm4ge307Ci0gIH0KLX0KLQotLy8gVGhpcyBp
cyBhbG1vc3QgYSBjaGFuZ2UgZGV0ZWN0b3IsIGJ1dCBpdCBhbGxvd3MgdXMgdG8ga25vdyBob3cg
d2UgYXJlCi0vLyBhZmZlY3RpbmcgdGhlIHByb2JlIGRpc3RyaWJ1dGlvbi4KLVRFU1QoVGFibGUs
IEVmZmVjdGl2ZUxvYWRGYWN0b3JTdHJpbmdzKSB7Ci0gIHN0ZDo6dmVjdG9yPGRvdWJsZT4gcGVy
ZmVjdF9yYXRpb3MgPQotICAgICAgQ29sbGVjdFBlcmZlY3RSYXRpb3MoU3RyaW5nVGFibGUoKSwg
W10oU3RyaW5nVGFibGUmIHQpIHsKLSAgICAgICAgcmV0dXJuIHQuZW1wbGFjZShzdGQ6OnRvX3N0
cmluZyh0LnNpemUoKSksICIiKS5maXJzdC0+Zmlyc3Q7Ci0gICAgICB9KTsKLQotICBhdXRvIHJh
dGlvcyA9IFN0cmluZ1RhYmxlUGVmZWN0UmF0aW9zKCk7Ci0gIGlmIChyYXRpb3MuZW1wdHkoKSkg
cmV0dXJuOwotCi0gIEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zLmZyb250KCksCi0gICAgICAg
ICAgICAgIERvdWJsZU5lYXIocmF0aW9zWzBdLmZpcnN0LCByYXRpb3NbMF0uc2Vjb25kKSk7Ci0g
IEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zW3BlcmZlY3RfcmF0aW9zLnNpemUoKSAvIDJdLAot
ICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1sxXS5maXJzdCwgcmF0aW9zWzFdLnNlY29u
ZCkpOwotICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlvcy5iYWNrKCksCi0gICAgICAgICAgICAg
IERvdWJsZU5lYXIocmF0aW9zWzJdLmZpcnN0LCByYXRpb3NbMl0uc2Vjb25kKSk7Ci19Ci0KLXN0
ZDo6dmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IEludFRhYmxlUGVmZWN0UmF0aW9z
KCkgewotICBjb25zdGV4cHIgYm9vbCBrUmFuZG9taXplc0luc2VydHMgPQotI2lmZGVmIE5ERUJV
RwotICAgICAgZmFsc2U7Ci0jZWxzZSAgIC8vIE5ERUJVRwotICAgICAgdHJ1ZTsKLSNlbmRpZiAg
Ly8gTkRFQlVHCi0KLSAgLy8gVGhlIGVmZmVjdGl2ZSBsb2FkIGZhY3RvciBpcyBsYXJnZXIgaW4g
bm9uLW9wdCBtb2RlIGJlY2F1c2Ugd2UgaW5zZXJ0Ci0gIC8vIGVsZW1lbnRzIG91dCBvZiBvcmRl
ci4KLSAgc3dpdGNoIChjb250YWluZXJfaW50ZXJuYWw6Okdyb3VwOjprV2lkdGgpIHsKLSAgICBj
YXNlIDg6Ci0gICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7Ci0gICAgICAgIHJldHVybiB7
ezAuOTksIDAuMDJ9LCB7MC45ODUsIDAuMDJ9LCB7MC45NSwgMC4wNX19OwotICAgICAgfSBlbHNl
IHsKLSAgICAgICAgcmV0dXJuIHt7MC45OSwgMC4wMX0sIHswLjk5LCAwLjAxfSwgezAuOTUsIDAu
MDJ9fTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgMTY6Ci0gICAgICBpZiAoa1Jh
bmRvbWl6ZXNJbnNlcnRzKSB7Ci0gICAgICAgIHJldHVybiB7ezAuOTgsIDAuMDJ9LCB7MC45Nzgs
IDAuMDJ9LCB7MC45NiwgMC4wMn19OwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIHt7
MC45OTgsIDAuMDAzfSwgezAuOTk1LCAwLjAxfSwgezAuOTc1LCAwLjAyfX07Ci0gICAgICB9Ci0g
ICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgLy8gSWdub3JlIGFueXRoaW5nIGVsc2Uu
Ci0gICAgICByZXR1cm4ge307Ci0gIH0KLX0KKyAgY29uc3QgYXV0byBhZGRyID0gWyZdKGludCBp
KSB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmKnRhYmxlLmZpbmQo
aSkpOworICB9OwogCi0vLyBUaGlzIGlzIGFsbW9zdCBhIGNoYW5nZSBkZXRlY3RvciwgYnV0IGl0
IGFsbG93cyB1cyB0byBrbm93IGhvdyB3ZSBhcmUKLS8vIGFmZmVjdGluZyB0aGUgcHJvYmUgZGlz
dHJpYnV0aW9uLgotVEVTVChUYWJsZSwgRWZmZWN0aXZlTG9hZEZhY3RvckludHMpIHsKLSAgc3Rk
Ojp2ZWN0b3I8ZG91YmxlPiBwZXJmZWN0X3JhdGlvcyA9IENvbGxlY3RQZXJmZWN0UmF0aW9zKAot
ICAgICAgSW50VGFibGUoKSwgW10oSW50VGFibGUmIHQpIHsgcmV0dXJuICp0LmVtcGxhY2UodC5z
aXplKCkpLmZpcnN0OyB9KTsKKyAgdGFibGUuaW5zZXJ0KDApOworICBjb25zdCB1aW50cHRyX3Qg
b2xkX3B0ciA9IGFkZHIoMCk7CiAKLSAgYXV0byByYXRpb3MgPSBJbnRUYWJsZVBlZmVjdFJhdGlv
cygpOwotICBpZiAocmF0aW9zLmVtcHR5KCkpIHJldHVybjsKKyAgLy8gVGhpcyBjYXVzZXMgYSBy
ZWhhc2guCisgIHRhYmxlLmluc2VydCgxKTsKIAotICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlv
cy5mcm9udCgpLAotICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1swXS5maXJzdCwgcmF0
aW9zWzBdLnNlY29uZCkpOwotICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlvc1twZXJmZWN0X3Jh
dGlvcy5zaXplKCkgLyAyXSwKLSAgICAgICAgICAgICAgRG91YmxlTmVhcihyYXRpb3NbMV0uZmly
c3QsIHJhdGlvc1sxXS5zZWNvbmQpKTsKLSAgRVhQRUNUX1RIQVQocGVyZmVjdF9yYXRpb3MuYmFj
aygpLAotICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1syXS5maXJzdCwgcmF0aW9zWzJd
LnNlY29uZCkpOworICBFWFBFQ1RfTkUob2xkX3B0ciwgYWRkcigwKSk7CiB9CiAKIC8vIENvbmZp
cm0gdGhhdCB3ZSBhc3NlcnQgaWYgd2UgdHJ5IHRvIGVyYXNlKCkgZW5kKCkuCkBAIC0xOTMxLDkg
KzE4NDEsNTIgQEAgVEVTVChUYWJsZURlYXRoVGVzdCwgRXJhc2VPZkVuZEFzc2VydHMpIHsKICAg
RVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh0LmVyYXNlKHQuZW5kKCkpLCBrRGVhdGhNc2cpOwog
fQogCitURVNUKFJhd0hhc2hTYW1wbGVyVGVzdCwgU2FtcGxlKSB7CisgIC8vIEVuYWJsZSB0aGUg
ZmVhdHVyZSBldmVuIGlmIHRoZSBwcm9kIGRlZmF1bHQgaXMgb2ZmLgorICBTZXRIYXNodGFibGV6
RW5hYmxlZCh0cnVlKTsKKyAgU2V0SGFzaHRhYmxlelNhbXBsZVBhcmFtZXRlcigxMDApOworCisg
IGF1dG8mIHNhbXBsZXIgPSBIYXNodGFibGV6U2FtcGxlcjo6R2xvYmFsKCk7CisgIHNpemVfdCBz
dGFydF9zaXplID0gMDsKKyAgc3RhcnRfc2l6ZSArPSBzYW1wbGVyLkl0ZXJhdGUoWyZdKGNvbnN0
IEhhc2h0YWJsZXpJbmZvJikgeyArK3N0YXJ0X3NpemU7IH0pOworCisgIHN0ZDo6dmVjdG9yPElu
dFRhYmxlPiB0YWJsZXM7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7Cisg
ICAgdGFibGVzLmVtcGxhY2VfYmFjaygpOworICAgIHRhYmxlcy5iYWNrKCkuaW5zZXJ0KDEpOwor
ICB9CisgIHNpemVfdCBlbmRfc2l6ZSA9IDA7CisgIGVuZF9zaXplICs9IHNhbXBsZXIuSXRlcmF0
ZShbJl0oY29uc3QgSGFzaHRhYmxlekluZm8mKSB7ICsrZW5kX3NpemU7IH0pOworCisgIEVYUEVD
VF9ORUFSKChlbmRfc2l6ZSAtIHN0YXJ0X3NpemUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPih0YWJs
ZXMuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgMC4wMSwgMC4wMDUpOworfQorCitURVNUKFJhd0hh
c2hTYW1wbGVyVGVzdCwgRG9Ob3RTYW1wbGVDdXN0b21BbGxvY2F0b3JzKSB7CisgIC8vIEVuYWJs
ZSB0aGUgZmVhdHVyZSBldmVuIGlmIHRoZSBwcm9kIGRlZmF1bHQgaXMgb2ZmLgorICBTZXRIYXNo
dGFibGV6RW5hYmxlZCh0cnVlKTsKKyAgU2V0SGFzaHRhYmxlelNhbXBsZVBhcmFtZXRlcigxMDAp
OworCisgIGF1dG8mIHNhbXBsZXIgPSBIYXNodGFibGV6U2FtcGxlcjo6R2xvYmFsKCk7CisgIHNp
emVfdCBzdGFydF9zaXplID0gMDsKKyAgc3RhcnRfc2l6ZSArPSBzYW1wbGVyLkl0ZXJhdGUoWyZd
KGNvbnN0IEhhc2h0YWJsZXpJbmZvJikgeyArK3N0YXJ0X3NpemU7IH0pOworCisgIHN0ZDo6dmVj
dG9yPEN1c3RvbUFsbG9jSW50VGFibGU+IHRhYmxlczsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAx
MDAwMDAwOyArK2kpIHsKKyAgICB0YWJsZXMuZW1wbGFjZV9iYWNrKCk7CisgICAgdGFibGVzLmJh
Y2soKS5pbnNlcnQoMSk7CisgIH0KKyAgc2l6ZV90IGVuZF9zaXplID0gMDsKKyAgZW5kX3NpemUg
Kz0gc2FtcGxlci5JdGVyYXRlKFsmXShjb25zdCBIYXNodGFibGV6SW5mbyYpIHsgKytlbmRfc2l6
ZTsgfSk7CisKKyAgRVhQRUNUX05FQVIoKGVuZF9zaXplIC0gc3RhcnRfc2l6ZSkgLyBzdGF0aWNf
Y2FzdDxkb3VibGU+KHRhYmxlcy5zaXplKCkpLAorICAgICAgICAgICAgICAwLjAwLCAwLjAwMSk7
Cit9CisKICNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgogVEVTVChTYW5pdGl6ZXIsIFBvaXNvbmlu
Z1VudXNlZCkgewogICBJbnRUYWJsZSB0OworICB0LnJlc2VydmUoNSk7CiAgIC8vIEluc2VydCBz
b21ldGhpbmcgdG8gZm9yY2UgYW4gYWxsb2NhdGlvbi4KICAgaW50NjRfdCYgdjEgPSAqdC5pbnNl
cnQoMCkuZmlyc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0
X2luc3RhbmNlX3RyYWNrZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0
YW5jZV90cmFja2VyLmNjCmluZGV4IGIxOGUwYmI3YTFlLi41YTY2Y2I0ZDE0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmNjCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgKaW5kZXggZWM0NWY1NzQwMzcuLmM0
NzMxZGJlM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0
YW5jZV90cmFja2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFu
Y2VfdHJhY2tlci5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBA
IC0xOCwxMCArMTgsMTIgQEAKICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPG9zdHJlYW0+
CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL2NvbXBhcmUuaCIKKwogbmFtZXNwYWNlIGFic2wgewog
bmFtZXNwYWNlIHRlc3RfaW50ZXJuYWwgewogCi0vLyBBIHR5cGUgdGhhdCBjb3VudHMgbnVtYmVy
IG9mIG9jY3VyZW5jZXMgb2YgdGhlIHR5cGUsIHRoZSBsaXZlIG9jY3VycmVuY2VzIG9mCisvLyBB
IHR5cGUgdGhhdCBjb3VudHMgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHRoZSB0eXBlLCB0aGUg
bGl2ZSBvY2N1cnJlbmNlcyBvZgogLy8gdGhlIHR5cGUsIGFzIHdlbGwgYXMgdGhlIG51bWJlciBv
ZiBjb3BpZXMsIG1vdmVzLCBzd2FwcywgYW5kIGNvbXBhcmlzb25zIHRoYXQKIC8vIGhhdmUgb2Nj
dXJyZWQgb24gdGhlIHR5cGUuIFRoaXMgaXMgdXNlZCBhcyBhIGJhc2UgY2xhc3MgZm9yIHRoZSBj
b3B5YWJsZSwKIC8vIGNvcHlhYmxlK21vdmFibGUsIGFuZCBtb3ZhYmxlIHR5cGVzIGJlbG93IHRo
YXQgYXJlIHVzZWQgaW4gYWN0dWFsIHRlc3RzLiBVc2UKQEAgLTk2LDYgKzk4LDE0IEBAIGNsYXNz
IEJhc2VDb3VudGVkSW5zdGFuY2UgewogICAgIHJldHVybiB2YWx1ZV8gPj0geC52YWx1ZV87CiAg
IH0KIAorICBhYnNsOjp3ZWFrX29yZGVyaW5nIGNvbXBhcmUoY29uc3QgQmFzZUNvdW50ZWRJbnN0
YW5jZSYgeCkgY29uc3QgeworICAgICsrbnVtX2NvbXBhcmlzb25zXzsKKyAgICByZXR1cm4gdmFs
dWVfIDwgeC52YWx1ZV8KKyAgICAgICAgICAgICAgID8gYWJzbDo6d2Vha19vcmRlcmluZzo6bGVz
cworICAgICAgICAgICAgICAgOiB2YWx1ZV8gPT0geC52YWx1ZV8gPyBhYnNsOjp3ZWFrX29yZGVy
aW5nOjplcXVpdmFsZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFi
c2w6OndlYWtfb3JkZXJpbmc6OmdyZWF0ZXI7CisgIH0KKwogICBpbnQgdmFsdWUoKSBjb25zdCB7
CiAgICAgaWYgKCFpc19saXZlXykgc3RkOjphYm9ydCgpOwogICAgIHJldHVybiB2YWx1ZV87CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2Vy
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2Vy
X3Rlc3QuY2MKaW5kZXggMGFlNTc2MzZkZjIuLjFjNmE0ZmE3MTUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyX3Rlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlcl90ZXN0LmNjCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNzQsNiArMTc0LDgg
QEAgVEVTVChUZXN0SW5zdGFuY2VUcmFja2VyLCBDb21wYXJpc29ucykgewogICBFWFBFQ1RfRVEo
NSwgdHJhY2tlci5jb21wYXJpc29ucygpKTsKICAgRVhQRUNUX0ZBTFNFKG9uZSA+PSB0d28pOwog
ICBFWFBFQ1RfRVEoNiwgdHJhY2tlci5jb21wYXJpc29ucygpKTsKKyAgRVhQRUNUX1RSVUUob25l
LmNvbXBhcmUodHdvKSA8IDApOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSg3LCB0cmFja2VyLmNv
bXBhcmlzb25zKCkpOwogCiAgIHRyYWNrZXIuUmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCk7CiAgIEVY
UEVDVF9FUSgwLCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL3RyYWNrZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90cmFj
a2VkLmgKaW5kZXggN2QxNGFmMDMxMzguLjc1MTczYWIwMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvdHJhY2tlZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC90cmFja2VkLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0cnVj
dG9yX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0
cnVjdG9yX3Rlc3QuaAppbmRleCAyZmZiNjQ2Y2IyNi4uNjg4MTdlNGU0Y2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3Qu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rv
cl90ZXN0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI5
LDcgKzI5LDcgQEAgbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CiB0ZW1wbGF0ZSA8Y2xh
c3MgVW5vcmRNYXA+CiBjbGFzcyBDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHt9OwogCi1UWVBFRF9URVNUX0NBU0VfUChDb25zdHJ1Y3RvclRlc3QpOworVFlQRURfVEVT
VF9TVUlURV9QKENvbnN0cnVjdG9yVGVzdCk7CiAKIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIE5vQXJncykgewogICBUeXBlUGFyYW0gbTsKQEAgLTgzLDggKzgzLDI4IEBAIFRZUEVEX1RF
U1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEVxdWFsQWxsb2MpIHsKICAgRVhQ
RUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1
Y3RvclRlc3QsIEJ1Y2tldENvdW50QWxsb2MpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Ry
dWN0IGlzX3N0ZF91bm9yZGVyZWRfbWFwIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4gVD4KK3N0cnVjdCBpc19zdGRfdW5vcmRlcmVkX21hcDxzdGQ6OnVub3Jk
ZXJlZF9tYXA8VC4uLj4+IDogc3RkOjp0cnVlX3R5cGUge307CisKICNpZiBkZWZpbmVkKFVOT1JE
RVJFRF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNykKK3VzaW5nIGhh
c19jeHgxNF9zdGRfYXBpcyA9IHN0ZDo6dHJ1ZV90eXBlOworI2Vsc2UKK3VzaW5nIGhhc19jeHgx
NF9zdGRfYXBpcyA9IHN0ZDo6ZmFsc2VfdHlwZTsKKyNlbmRpZgorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3VzaW5nIGV4cGVjdF9jeHgxNF9hcGlzID0KKyAgICBhYnNsOjpkaXNqdW5jdGlvbjxh
YnNsOjpuZWdhdGlvbjxpc19zdGRfdW5vcmRlcmVkX21hcDxUPj4sCisgICAgICAgICAgICAgICAg
ICAgICAgaGFzX2N4eDE0X3N0ZF9hcGlzPjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJh
bT4KK3ZvaWQgQnVja2V0Q291bnRBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBCdWNrZXRDb3VudEFsbG9jVGVzdChzdGQ6
OnRydWVfdHlwZSkgewogICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3Jf
dHlwZTsKICAgQSBhbGxvYygwKTsKICAgVHlwZVBhcmFtIG0oMTIzLCBhbGxvYyk7CkBAIC05Miwx
MSArMTEyLDE3IEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50QWxs
b2MpIHsKICAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKICAgRVhQRUNUX1RIQVQobSwgOjp0ZXN0
aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50
KCksIDEyMyk7Ci0jZW5kaWYKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVj
a2V0Q291bnRIYXNoQWxsb2MpIHsKLSNpZiBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTQpIHx8
IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNykKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIEJ1Y2tldENvdW50QWxsb2MpIHsKKyAgQnVja2V0Q291bnRBbGxvY1Rlc3Q8VHlwZVBhcmFt
PihleHBlY3RfY3h4MTRfYXBpczxUeXBlUGFyYW0+KCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHlwZVBhcmFtPgordm9pZCBCdWNrZXRDb3VudEhhc2hBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90
eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBCdWNrZXRDb3Vu
dEhhc2hBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6aGFzaGVyOwogICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0
b3JfdHlwZTsKICAgSCBoYXNoZXI7CkBAIC0xMDcsMTggKzEzMywzOCBAQCBUWVBFRF9URVNUX1Ao
Q29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2hBbGxvYykgewogICBFWFBFQ1RfVFJVRSht
LmVtcHR5KCkpOwogICBFWFBFQ1RfVEhBVChtLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRz
QXJlKCkpOwogICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKLSNlbmRpZgogfQog
Ci1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRBbGxvYykgeworVFlQRURfVEVT
VF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRIYXNoQWxsb2MpIHsKKyAgQnVja2V0Q291
bnRIYXNoQWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2N4eDE0X2FwaXM8VHlwZVBhcmFtPigp
KTsKK30KKwogI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JTCit1c2luZyBo
YXNfYWxsb2Nfc3RkX2NvbnN0cnVjdG9ycyA9IHN0ZDo6dHJ1ZV90eXBlOworI2Vsc2UKK3VzaW5n
IGhhc19hbGxvY19zdGRfY29uc3RydWN0b3JzID0gc3RkOjpmYWxzZV90eXBlOworI2VuZGlmCisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgZXhwZWN0X2FsbG9jX2NvbnN0cnVjdG9ycyA9
CisgICAgYWJzbDo6ZGlzanVuY3Rpb248YWJzbDo6bmVnYXRpb248aXNfc3RkX3Vub3JkZXJlZF9t
YXA8VD4+LAorICAgICAgICAgICAgICAgICAgICAgIGhhc19hbGxvY19zdGRfY29uc3RydWN0b3Jz
PjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQWxsb2NUZXN0KHN0ZDo6
ZmFsc2VfdHlwZSkge30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQWxs
b2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06
OmFsbG9jYXRvcl90eXBlOwogICBBIGFsbG9jKDApOwogICBUeXBlUGFyYW0gbShhbGxvYyk7CiAg
IEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOwogICBFWFBFQ1RfVFJVRShtLmVt
cHR5KCkpOwogICBFWFBFQ1RfVEhBVChtLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJl
KCkpOwotI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEFsbG9jKSB7
CisgIEFsbG9jVGVzdDxUeXBlUGFyYW0+KGV4cGVjdF9hbGxvY19jb25zdHJ1Y3RvcnM8VHlwZVBh
cmFtPigpKTsKIH0KIAogVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRv
ckJ1Y2tldEhhc2hFcXVhbEFsbG9jKSB7CkBAIC0xNDAsOCArMTg2LDExIEBAIFRZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoRXF1YWxBbGxvYykgewog
ICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKIH0KIAotVFlQRURfVEVTVF9QKENv
bnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jKSB7Ci0jaWYgZGVmaW5lZChV
Tk9SREVSRURfTUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2NU
ZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4K
K3ZvaWQgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwogICB1c2lu
ZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKICAgQSBhbGxvYygwKTsK
QEAgLTE1MiwxMSArMjAxLDE3IEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0
SXRlcmF0b3JCdWNrZXRBbGxvYykgewogICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFs
bG9jKTsKICAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheSh2YWx1ZXMpKTsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7
Ci0jZW5kaWYKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRv
ckJ1Y2tldEhhc2hBbGxvYykgewotI2lmIGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNCkgfHwg
ZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE3KQorVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVz
dCwgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jKSB7CisgIElucHV0SXRlcmF0b3JCdWNrZXRBbGxv
Y1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfY3h4MTRfYXBpczxUeXBlUGFyYW0+KCkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFz
aEFsbG9jVGVzdChzdGQ6OmZhbHNlX3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBl
UGFyYW0+Cit2b2lkIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxsb2NUZXN0KHN0ZDo6dHJ1ZV90
eXBlKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJh
bT47CiAgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKICAgdXNpbmcgQSA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CkBAIC0xNzAsNyArMjI1LDEwIEBA
IFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxs
b2MpIHsKICAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CiAgIEVYUEVDVF9U
SEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVz
KSk7CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwotI2VuZGlmCit9CisKK1RZ
UEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxsb2Mp
IHsKKyAgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3Rf
Y3h4MTRfYXBpczxUeXBlUGFyYW0+KCkpOwogfQogCiBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKQEAgLTE5MCw4ICsyNDgsMTEgQEAgVFlQRURfVEVTVF9Q
KENvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7CiAgIEVYUEVDVF9FUShtLCBuKTsK
IH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yQWxsb2Mp
IHsKLSNpZiBBQlNMX1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUwordGVtcGxhdGUgPHR5
cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQ29weUNvbnN0cnVjdG9yQWxsb2NUZXN0KHN0ZDo6ZmFs
c2VfdHlwZSkge30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQ29weUNv
bnN0cnVjdG9yQWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CiAgIHVzaW5nIEggPSB0eXBlbmFtZSBU
eXBlUGFyYW06Omhhc2hlcjsKICAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2Vx
dWFsOwpAQCAtMjA2LDcgKzI2NywxMCBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBD
b3B5Q29uc3RydWN0b3JBbGxvYykgewogICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEo
KSk7CiAgIEVYUEVDVF9ORShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOwog
ICBFWFBFQ1RfRVEobSwgbik7Ci0jZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9y
VGVzdCwgQ29weUNvbnN0cnVjdG9yQWxsb2MpIHsKKyAgQ29weUNvbnN0cnVjdG9yQWxsb2NUZXN0
PFR5cGVQYXJhbT4oZXhwZWN0X2FsbG9jX2NvbnN0cnVjdG9yczxUeXBlUGFyYW0+KCkpOwogfQog
CiAvLyBUT0RPKGFsa2lzKTogVGVzdCBub24tcHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBvbiBjb3B5
IGNvbnN0cnVjdG9ycy4KQEAgLTIyOSw4ICsyOTMsMTEgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgTW92ZUNvbnN0cnVjdG9yKSB7CiAgIEVYUEVDVF9FUShtLCBuKTsKIH0KIAotVFlQ
RURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUNvbnN0cnVjdG9yQWxsb2MpIHsKLSNpZiBB
QlNMX1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUwordGVtcGxhdGUgPHR5cGVuYW1lIFR5
cGVQYXJhbT4KK3ZvaWQgTW92ZUNvbnN0cnVjdG9yQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkg
e30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgTW92ZUNvbnN0cnVjdG9y
QWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CiAgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06
Omhhc2hlcjsKICAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOwpAQCAt
MjQ2LDcgKzMxMywxMCBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQ29uc3Ry
dWN0b3JBbGxvYykgewogICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CiAgIEVY
UEVDVF9ORShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOwogICBFWFBFQ1Rf
RVEobSwgbik7Ci0jZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92
ZUNvbnN0cnVjdG9yQWxsb2MpIHsKKyAgTW92ZUNvbnN0cnVjdG9yQWxsb2NUZXN0PFR5cGVQYXJh
bT4oZXhwZWN0X2FsbG9jX2NvbnN0cnVjdG9yczxUeXBlUGFyYW0+KCkpOwogfQogCiAvLyBUT0RP
KGFsa2lzKTogVGVzdCBub24tcHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBvbiBtb3ZlIGNvbnN0cnVj
dG9ycy4KQEAgLTI2OSw4ICszMzksMTEgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwg
SW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEVxdWFsQWxsb2MpIHsKICAgRVhQRUNUX0dFKG0uYnVj
a2V0X2NvdW50KCksIDEyMyk7CiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElu
aXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jKSB7Ci0jaWYgZGVmaW5lZChVTk9SREVSRURfTUFQX0NY
WDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHlwZVBhcmFtPgordm9pZCBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvY1Rlc3Qoc3RkOjpmYWxz
ZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbml0aWFs
aXplckxpc3RCdWNrZXRBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNpbmcgVCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKICAgdXNpbmcgQSA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CiAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRv
cjxUPiBnZW47CkBAIC0yODAsMTEgKzM1MywxNyBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvYykgewogICBFWFBFQ1RfRVEobS5nZXRfYWxs
b2NhdG9yKCksIGFsbG9jKTsKICAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2Nv
dW50KCksIDEyMyk7Ci0jZW5kaWYKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwg
SW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jKSB7Ci0jaWYgZGVmaW5lZChVTk9SREVSRURf
TUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCitUWVBFRF9URVNUX1Ao
Q29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvYykgeworICBJbml0aWFs
aXplckxpc3RCdWNrZXRBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfY3h4MTRfYXBpczxUeXBl
UGFyYW0+KCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbml0
aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFz
aEFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6
R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwogICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjpoYXNoZXI7CiAgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBl
OwpAQCAtMjk3LDcgKzM3NiwxMCBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0
aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2MpIHsKICAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRv
cigpLCBhbGxvYyk7CiAgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJl
ZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgp
LCAxMjMpOwotI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRp
YWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvYykgeworICBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNo
QWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2N4eDE0X2FwaXM8VHlwZVBhcmFtPigpKTsKIH0K
IAogVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudCkgewpAQCAtMzkwLDE1
ICs0NzIsMTYgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudE9uU2Vs
ZikgewogCiBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCgKICAgICBDb25zdHJ1Y3RvclRlc3Qs
IE5vQXJncywgQnVja2V0Q291bnQsIEJ1Y2tldENvdW50SGFzaCwgQnVja2V0Q291bnRIYXNoRXF1
YWwsCi0gICAgQnVja2V0Q291bnRIYXNoRXF1YWxBbGxvYywgQnVja2V0Q291bnRBbGxvYywgQnVj
a2V0Q291bnRIYXNoQWxsb2MsCi0gICAgQnVja2V0QWxsb2MsIElucHV0SXRlcmF0b3JCdWNrZXRI
YXNoRXF1YWxBbGxvYywgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jLAorICAgIEJ1Y2tldENvdW50
SGFzaEVxdWFsQWxsb2MsIEJ1Y2tldENvdW50QWxsb2MsIEJ1Y2tldENvdW50SGFzaEFsbG9jLCBB
bGxvYywKKyAgICBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEVxdWFsQWxsb2MsIElucHV0SXRlcmF0
b3JCdWNrZXRBbGxvYywKICAgICBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jLCBDb3B5Q29u
c3RydWN0b3IsIENvcHlDb25zdHJ1Y3RvckFsbG9jLAogICAgIE1vdmVDb25zdHJ1Y3RvciwgTW92
ZUNvbnN0cnVjdG9yQWxsb2MsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hFcXVhbEFsbG9jLAog
ICAgIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jLCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNo
QWxsb2MsIEFzc2lnbm1lbnQsCi0gICAgTW92ZUFzc2lnbm1lbnQsIEFzc2lnbm1lbnRGcm9tSW5p
dGlhbGl6ZXJMaXN0LAotICAgIEFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3RpbmcsIE1vdmVBc3Np
Z25tZW50T3ZlcndyaXRlc0V4aXN0aW5nLAorICAgIE1vdmVBc3NpZ25tZW50LCBBc3NpZ25tZW50
RnJvbUluaXRpYWxpemVyTGlzdCwgQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZywKKyAgICBN
b3ZlQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZywKICAgICBBc3NpZ25tZW50RnJvbUluaXRp
YWxpemVyTGlzdE92ZXJ3cml0ZXNFeGlzdGluZywgQXNzaWdubWVudE9uU2VsZik7CiAKIH0gIC8v
IG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNl
bmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9DT05TVFJVQ1RP
Ul9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVk
X21hcF9sb29rdXBfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9t
YXBfbG9va3VwX3Rlc3QuaAppbmRleCAxZjFiNmI0ODliMy4uZWJkMzYxMmJkZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3Qu
aApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjYsNyArMjYs
NyBAQCBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKIHRlbXBsYXRlIDxjbGFzcyBVbm9y
ZE1hcD4KIGNsYXNzIExvb2t1cFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OwogCi1U
WVBFRF9URVNUX0NBU0VfUChMb29rdXBUZXN0KTsKK1RZUEVEX1RFU1RfU1VJVEVfUChMb29rdXBU
ZXN0KTsKIAogVFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIEF0KSB7CiAgIHVzaW5nIFQgPSBoYXNo
X2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CkBAIC0xMTEsNCArMTExLDUgQEAg
UkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoTG9va3VwVGVzdCwgQXQsIE9wZXJhdG9yQnJhY2tl
dCwgQ291bnQsIEZpbmQsCiAKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKIH0g
IC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxf
VU5PUkRFUkVEX01BUF9MT09LVVBfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tZW1iZXJzX3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMWJmMzFhYjQwOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tZW1iZXJzX3Rlc3QuaApAQCAtMCww
ICsxLDg1IEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lm
bmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQX01FTUJFUlNfVEVTVF9I
XworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQX01FTUJFUlNf
VEVTVF9IXworCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSAiZ21vY2svZ21vY2su
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3Ry
YWl0cy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
IHsKKwordGVtcGxhdGUgPGNsYXNzIFVub3JkTWFwPgorY2xhc3MgTWVtYmVyc1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitUWVBFRF9URVNUX1NVSVRFX1AoTWVtYmVyc1Rlc3Qp
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVXNlVHlwZSgpIHt9CisKK1RZUEVEX1RF
U1RfUChNZW1iZXJzVGVzdCwgVHlwZWRlZnMpIHsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2Ft
ZTxzdGQ6OnBhaXI8Y29uc3QgdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjptYXBwZWRf
dHlwZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjp2
YWx1ZV90eXBlPigpKSk7CisgIEVYUEVDVF9UUlVFKChhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAg
ICAgICAgICAgIGFic2w6Om5lZ2F0aW9uPHN0ZDo6aXNfc2lnbmVkPHR5cGVuYW1lIFR5cGVQYXJh
bTo6c2l6ZV90eXBlPj4sCisgICAgICAgICAgICAgICBzdGQ6OmlzX2ludGVncmFsPHR5cGVuYW1l
IFR5cGVQYXJhbTo6c2l6ZV90eXBlPj4oKSkpOworICBFWFBFQ1RfVFJVRSgoYWJzbDo6Y29uanVu
Y3Rpb248CisgICAgICAgICAgICAgICBzdGQ6OmlzX3NpZ25lZDx0eXBlbmFtZSBUeXBlUGFyYW06
OmRpZmZlcmVuY2VfdHlwZT4sCisgICAgICAgICAgICAgICBzdGQ6OmlzX2ludGVncmFsPHR5cGVu
YW1lIFR5cGVQYXJhbTo6ZGlmZmVyZW5jZV90eXBlPj4oKSkpOworICBFWFBFQ1RfVFJVRSgoc3Rk
Ojppc19jb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgIGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxj
b25zdCB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlciY+KCkoCisgICAgICAgICAgICAgICAgICAg
c3RkOjpkZWNsdmFsPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X3R5cGUmPigpKSksCisg
ICAgICAgICAgICAgICBzaXplX3Q+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfY29udmVy
dGlibGU8CisgICAgICAgICAgICAgICBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Y29uc3QgdHlwZW5h
bWUgVHlwZVBhcmFtOjprZXlfZXF1YWwmPigpKAorICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVj
bHZhbDxjb25zdCB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV90eXBlJj4oKSwKKyAgICAgICAgICAg
ICAgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfdHlwZSY+
KCkpKSwKKyAgICAgICAgICAgICAgIGJvb2w+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNf
c2FtZTx0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOjp2YWx1ZV90eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVQYXJhbTo6dmFsdWVfdHlwZT4o
KSkpOworICBFWFBFQ1RfVFJVRSgoc3RkOjppc19zYW1lPHR5cGVuYW1lIFR5cGVQYXJhbTo6dmFs
dWVfdHlwZSYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFt
OjpyZWZlcmVuY2U+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTxjb25zdCB0eXBl
bmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGUmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGVuYW1lIFR5cGVQYXJhbTo6Y29uc3RfcmVmZXJlbmNlPigpKSk7CisgIEVYUEVDVF9UUlVF
KChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjphbGxvY2F0b3JfdHJhaXRzPAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBl
Pjo6cG9pbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFy
YW06OnBvaW50ZXI+KCkpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICAoc3RkOjppc19zYW1lPHR5
cGVuYW1lIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU+Ojpjb25zdF9wb2ludGVyLAorICAgICAg
ICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OmNvbnN0X3BvaW50ZXI+KCkpKTsKK30K
KworVFlQRURfVEVTVF9QKE1lbWJlcnNUZXN0LCBTaW1wbGVGdW5jdGlvbnMpIHsKKyAgRVhQRUNU
X0dUKFR5cGVQYXJhbSgpLm1heF9zaXplKCksIDApOworfQorCitUWVBFRF9URVNUX1AoTWVtYmVy
c1Rlc3QsIEJlZ2luRW5kKSB7CisgIFR5cGVQYXJhbSB0ID0ge3R5cGVuYW1lIFR5cGVQYXJhbTo6
dmFsdWVfdHlwZXt9fTsKKyAgRVhQRUNUX0VRKHQuYmVnaW4oKSwgdC5jYmVnaW4oKSk7CisgIEVY
UEVDVF9FUSh0LmVuZCgpLCB0LmNlbmQoKSk7CisgIEVYUEVDVF9ORSh0LmJlZ2luKCksIHQuZW5k
KCkpOworICBFWFBFQ1RfTkUodC5jYmVnaW4oKSwgdC5jZW5kKCkpOworfQorCitSRUdJU1RFUl9U
WVBFRF9URVNUX1NVSVRFX1AoTWVtYmVyc1Rlc3QsIFR5cGVkZWZzLCBTaW1wbGVGdW5jdGlvbnMs
IEJlZ2luRW5kKTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9S
REVSRURfTUFQX01FTUJFUlNfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgKaW5kZXggYjZjNjMzYWUyNzMu
LjUyYTEwOTJlNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRl
cmVkX21hcF9tb2RpZmllcnNfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91
bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTI2LDcgKzI2LDcgQEAgbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRl
cm5hbCB7CiB0ZW1wbGF0ZSA8Y2xhc3MgVW5vcmRNYXA+CiBjbGFzcyBNb2RpZmllcnNUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKIAotVFlQRURfVEVTVF9DQVNFX1AoTW9kaWZpZXJz
VGVzdCk7CitUWVBFRF9URVNUX1NVSVRFX1AoTW9kaWZpZXJzVGVzdCk7CiAKIFRZUEVEX1RFU1Rf
UChNb2RpZmllcnNUZXN0LCBDbGVhcikgewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwpAQCAtMjY5LDQgKzI2OSw1IEBAIFJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QKE1vZGlmaWVyc1Rlc3QsIENsZWFyLCBJbnNlcnQsIEluc2VydEhpbnQsCiAK
IH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNs
CisKICNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9NT0RJ
RklFUlNfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3Jk
ZXJlZF9tYXBfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFw
X3Rlc3QuY2MKaW5kZXggNDBlNzk5Y2RhODkuLjcyNTY3ZWFjMzNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF90ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oIgog
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rl
c3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21l
bWJlcnNfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJl
ZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCIKIAogbmFtZXNwYWNlIGFic2wgewpAQCAtMjksOSArMzAs
MTAgQEAgdXNpbmcgTWFwVHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPAogICAgICAgICAgICAgICAg
ICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b2M8c3RkOjpwYWlyPGNvbnN0IHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+Pj47CiAKLUlOU1RB
TlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVub3JkZXJlZE1hcCwgQ29uc3RydWN0b3JUZXN0LCBN
YXBUeXBlcyk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbm9yZGVyZWRNYXAsIExv
b2t1cFRlc3QsIE1hcFR5cGVzKTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVub3Jk
ZXJlZE1hcCwgTW9kaWZpZXJzVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9TVUlURV9QKFVub3JkZXJlZE1hcCwgQ29uc3RydWN0b3JUZXN0LCBNYXBUeXBlcyk7CitJTlNU
QU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoVW5vcmRlcmVkTWFwLCBMb29rdXBUZXN0LCBNYXBU
eXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoVW5vcmRlcmVkTWFwLCBNZW1i
ZXJzVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKFVub3Jk
ZXJlZE1hcCwgTW9kaWZpZXJzVGVzdCwgTWFwVHlwZXMpOwogCiB9ICAvLyBuYW1lc3BhY2UKIH0g
IC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaAppbmRleCBj
YjU5MzcwNDY4NS4uZjQ4NDQ2ODM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0LmgKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE2LDEyICsxNiwxNCBAQAogI2RlZmlu
ZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0NPTlNUUlVDVE9SX1RFU1Rf
SF8KIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCiAjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2dlbmVy
YXRvcl90ZXN0aW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9w
b2xpY3lfdGVzdGluZy5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgogCiBu
YW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKQEAgLTI5LDcg
KzMxLDcgQEAgbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VW5vcmRNYXA+CiBjbGFzcyBDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHt9OwogCi1UWVBFRF9URVNUX0NBU0VfUChDb25zdHJ1Y3RvclRlc3QpOworVFlQRURfVEVTVF9T
VUlURV9QKENvbnN0cnVjdG9yVGVzdCk7CiAKIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3Qs
IE5vQXJncykgewogICBUeXBlUGFyYW0gbTsKQEAgLTkxLDggKzkzLDI4IEBAIFRZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEVxdWFsQWxsb2MpIHsKICAgRVhQRUNU
X0dFKGNtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0
b3JUZXN0LCBCdWNrZXRDb3VudEFsbG9jKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBpc19zdGRfdW5vcmRlcmVkX3NldCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lLi4uIFQ+CitzdHJ1Y3QgaXNfc3RkX3Vub3JkZXJlZF9zZXQ8c3RkOjp1bm9yZGVy
ZWRfc2V0PFQuLi4+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCiAjaWYgZGVmaW5lZChVTk9SREVS
RURfU0VUX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTcpCit1c2luZyBoYXNf
Y3h4MTRfc3RkX2FwaXMgPSBzdGQ6OnRydWVfdHlwZTsKKyNlbHNlCit1c2luZyBoYXNfY3h4MTRf
c3RkX2FwaXMgPSBzdGQ6OmZhbHNlX3R5cGU7CisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Cit1c2luZyBleHBlY3RfY3h4MTRfYXBpcyA9CisgICAgYWJzbDo6ZGlzanVuY3Rpb248YWJz
bDo6bmVnYXRpb248aXNfc3RkX3Vub3JkZXJlZF9zZXQ8VD4+LAorICAgICAgICAgICAgICAgICAg
ICAgIGhhc19jeHgxNF9zdGRfYXBpcz47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+
Cit2b2lkIEJ1Y2tldENvdW50QWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQnVja2V0Q291bnRBbGxvY1Rlc3Qoc3RkOjp0
cnVlX3R5cGUpIHsKICAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5
cGU7CiAgIEEgYWxsb2MoMCk7CiAgIFR5cGVQYXJhbSBtKDEyMywgYWxsb2MpOwpAQCAtMTAwLDEx
ICsxMjIsMTcgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRBbGxv
YykgewogICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOwogICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6
OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOwogICBFWFBFQ1RfR0UobS5idWNrZXRf
Y291bnQoKSwgMTIzKTsKLSNlbmRpZgogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0
LCBCdWNrZXRDb3VudEhhc2hBbGxvYykgewotI2lmIGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgx
NCkgfHwgZGVmaW5lZChVTk9SREVSRURfU0VUX0NYWDE3KQorVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgQnVja2V0Q291bnRBbGxvYykgeworICBCdWNrZXRDb3VudEFsbG9jVGVzdDxUeXBl
UGFyYW0+KGV4cGVjdF9jeHgxNF9hcGlzPFR5cGVQYXJhbT4oKSk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIEJ1Y2tldENvdW50SGFzaEFsbG9jVGVzdChzdGQ6OmZh
bHNlX3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIEJ1Y2tl
dENvdW50SGFzaEFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBIID0gdHlwZW5h
bWUgVHlwZVBhcmFtOjpoYXNoZXI7CiAgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFs
bG9jYXRvcl90eXBlOwogICBIIGhhc2hlcjsKQEAgLTExNSwxOCArMTQzLDM4IEBAIFRZUEVEX1RF
U1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEFsbG9jKSB7CiAgIEVYUEVDVF9U
UlVFKG0uZW1wdHkoKSk7CiAgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRl
cmVkRWxlbWVudHNBcmUoKSk7CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwot
I2VuZGlmCiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldEFsbG9jKSB7
CitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2hBbGxvYykgewor
ICBCdWNrZXRDb3VudEhhc2hBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfY3h4MTRfYXBpczxU
eXBlUGFyYW0+KCkpOworfQorCiAjaWYgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RP
UlMKK3VzaW5nIGhhc19hbGxvY19zdGRfY29uc3RydWN0b3JzID0gc3RkOjp0cnVlX3R5cGU7Cisj
ZWxzZQordXNpbmcgaGFzX2FsbG9jX3N0ZF9jb25zdHJ1Y3RvcnMgPSBzdGQ6OmZhbHNlX3R5cGU7
CisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBleHBlY3RfYWxsb2NfY29u
c3RydWN0b3JzID0KKyAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpuZWdhdGlvbjxpc19zdGRf
dW5vcmRlcmVkX3NldDxUPj4sCisgICAgICAgICAgICAgICAgICAgICAgaGFzX2FsbG9jX3N0ZF9j
b25zdHJ1Y3RvcnM+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBBbGxv
Y1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFt
Pgordm9pZCBBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNpbmcgQSA9IHR5cGVuYW1l
IFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CiAgIEEgYWxsb2MoMCk7CiAgIFR5cGVQYXJhbSBt
KGFsbG9jKTsKICAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CiAgIEVYUEVD
VF9UUlVFKG0uZW1wdHkoKSk7CiAgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5v
cmRlcmVkRWxlbWVudHNBcmUoKSk7Ci0jZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgQWxsb2MpIHsKKyAgQWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2FsbG9jX2Nv
bnN0cnVjdG9yczxUeXBlUGFyYW0+KCkpOwogfQogCiBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEVxdWFsQWxsb2MpIHsKQEAgLTE0OCw4ICsxOTYs
MTEgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhh
c2hFcXVhbEFsbG9jKSB7CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwogfQog
Ci1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2Mp
IHsKLSNpZiBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVE
X1NFVF9DWFgxNykKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIElucHV0SXRl
cmF0b3JCdWNrZXRBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2NUZXN0KHN0ZDo6
dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5
cGVQYXJhbT47CiAgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBl
OwogICBBIGFsbG9jKDApOwpAQCAtMTYwLDExICsyMTEsMTcgQEAgVFlQRURfVEVTVF9QKENvbnN0
cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jKSB7CiAgIEVYUEVDVF9FUShtLmdl
dF9hbGxvY2F0b3IoKSwgYWxsb2MpOwogICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6
OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CiAgIEVYUEVDVF9HRShtLmJ1Y2tl
dF9jb3VudCgpLCAxMjMpOwotI2VuZGlmCiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxsb2MpIHsKLSNpZiBkZWZpbmVkKFVOT1JERVJF
RF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykKK1RZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNrZXRBbGxvYykgeworICBJbnB1dEl0
ZXJhdG9yQnVja2V0QWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2N4eDE0X2FwaXM8VHlwZVBh
cmFtPigpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgSW5wdXRJ
dGVyYXRvckJ1Y2tldEhhc2hBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9j
VGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJh
dGVkVHlwZTxUeXBlUGFyYW0+OwogICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNo
ZXI7CiAgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOwpAQCAt
MTc4LDcgKzIzNSwxMCBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJh
dG9yQnVja2V0SGFzaEFsbG9jKSB7CiAgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxs
b2MpOwogICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRz
QXJlQXJyYXkodmFsdWVzKSk7CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwot
I2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JC
dWNrZXRIYXNoQWxsb2MpIHsKKyAgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvY1Rlc3Q8VHlw
ZVBhcmFtPihleHBlY3RfY3h4MTRfYXBpczxUeXBlUGFyYW0+KCkpOwogfQogCiBUWVBFRF9URVNU
X1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKQEAgLTE5NiwxMCArMjU2LDE0
IEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvcikgewogICBF
WFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CiAgIEVYUEVDVF9FUShtLmdldF9hbGxv
Y2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOwogICBFWFBFQ1RfRVEobSwgbik7CisgIEVYUEVD
VF9ORShUeXBlUGFyYW0oMCwgaGFzaGVyLCBlcXVhbCwgYWxsb2MpLCBuKTsKIH0KIAotVFlQRURf
VEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yQWxsb2MpIHsKLSNpZiBBQlNM
X1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQ
YXJhbT4KK3ZvaWQgQ29weUNvbnN0cnVjdG9yQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQ29weUNvbnN0cnVjdG9yQWxs
b2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5l
cmF0ZWRUeXBlPFR5cGVQYXJhbT47CiAgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhh
c2hlcjsKICAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOwpAQCAtMjE0
LDcgKzI3OCwxMCBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0
b3JBbGxvYykgewogICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CiAgIEVYUEVD
VF9ORShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOwogICBFWFBFQ1RfRVEo
bSwgbik7Ci0jZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQ29weUNv
bnN0cnVjdG9yQWxsb2MpIHsKKyAgQ29weUNvbnN0cnVjdG9yQWxsb2NUZXN0PFR5cGVQYXJhbT4o
ZXhwZWN0X2FsbG9jX2NvbnN0cnVjdG9yczxUeXBlUGFyYW0+KCkpOwogfQogCiAvLyBUT0RPKGFs
a2lzKTogVGVzdCBub24tcHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBvbiBjb3B5IGNvbnN0cnVjdG9y
cy4KQEAgLTIzNyw4ICszMDQsMTEgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92
ZUNvbnN0cnVjdG9yKSB7CiAgIEVYUEVDVF9FUShtLCBuKTsKIH0KIAotVFlQRURfVEVTVF9QKENv
bnN0cnVjdG9yVGVzdCwgTW92ZUNvbnN0cnVjdG9yQWxsb2MpIHsKLSNpZiBBQlNMX1VOT1JERVJF
RF9TVVBQT1JUU19BTExPQ19DVE9SUwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3Zv
aWQgTW92ZUNvbnN0cnVjdG9yQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgTW92ZUNvbnN0cnVjdG9yQWxsb2NUZXN0KHN0
ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBl
PFR5cGVQYXJhbT47CiAgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKICAg
dXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOwpAQCAtMjU0LDcgKzMyNCwx
MCBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3JBbGxvYykg
ewogICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CiAgIEVYUEVDVF9ORShtLmdl
dF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOwogICBFWFBFQ1RfRVEobSwgbik7Ci0j
ZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUNvbnN0cnVjdG9y
QWxsb2MpIHsKKyAgTW92ZUNvbnN0cnVjdG9yQWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2Fs
bG9jX2NvbnN0cnVjdG9yczxUeXBlUGFyYW0+KCkpOwogfQogCiAvLyBUT0RPKGFsa2lzKTogVGVz
dCBub24tcHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBvbiBtb3ZlIGNvbnN0cnVjdG9ycy4KQEAgLTI3
Nyw4ICszNTAsMTEgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJM
aXN0QnVja2V0SGFzaEVxdWFsQWxsb2MpIHsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCks
IDEyMyk7CiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlz
dEJ1Y2tldEFsbG9jKSB7Ci0jaWYgZGVmaW5lZChVTk9SREVSRURfU0VUX0NYWDE0KSB8fCBkZWZp
bmVkKFVOT1JERVJFRF9TRVRfQ1hYMTcpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgor
dm9pZCBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbml0aWFsaXplckxpc3RCdWNr
ZXRBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6
OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKICAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJh
bTo6YWxsb2NhdG9yX3R5cGU7CiAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CkBA
IC0yODgsMTEgKzM2NCwxNyBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFs
aXplckxpc3RCdWNrZXRBbGxvYykgewogICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFs
bG9jKTsKICAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50
c0FyZUFycmF5KHZhbHVlcykpOwogICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsK
LSNlbmRpZgogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxp
c3RCdWNrZXRIYXNoQWxsb2MpIHsKLSNpZiBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8
IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jKSB7CisgIEluaXRpYWxpemVyTGlzdEJ1Y2tl
dEFsbG9jVGVzdDxUeXBlUGFyYW0+KGV4cGVjdF9jeHgxNF9hcGlzPFR5cGVQYXJhbT4oKSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIEluaXRpYWxpemVyTGlzdEJ1
Y2tldEhhc2hBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHlwZVBhcmFtPgordm9pZCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2NUZXN0KHN0
ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBl
PFR5cGVQYXJhbT47CiAgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKICAg
dXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CkBAIC0zMDUsMTAg
KzM4NywxMyBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RC
dWNrZXRIYXNoQWxsb2MpIHsKICAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7
CiAgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVB
cnJheSh2YWx1ZXMpKTsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Ci0jZW5k
aWYKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudCkgeworVFlQ
RURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9j
KSB7CisgIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBl
Y3RfY3h4MTRfYXBpczxUeXBlUGFyYW0+KCkpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0
b3JUZXN0LCBDb3B5QXNzaWdubWVudCkgewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwogICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpo
YXNoZXI7CiAgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKQEAgLTM5
NCwxNSArNDc5LDE2IEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnRP
blNlbGYpIHsKIAogUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoCiAgICAgQ29uc3RydWN0b3JU
ZXN0LCBOb0FyZ3MsIEJ1Y2tldENvdW50LCBCdWNrZXRDb3VudEhhc2gsIEJ1Y2tldENvdW50SGFz
aEVxdWFsLAotICAgIEJ1Y2tldENvdW50SGFzaEVxdWFsQWxsb2MsIEJ1Y2tldENvdW50QWxsb2Ms
IEJ1Y2tldENvdW50SGFzaEFsbG9jLAotICAgIEJ1Y2tldEFsbG9jLCBJbnB1dEl0ZXJhdG9yQnVj
a2V0SGFzaEVxdWFsQWxsb2MsIElucHV0SXRlcmF0b3JCdWNrZXRBbGxvYywKKyAgICBCdWNrZXRD
b3VudEhhc2hFcXVhbEFsbG9jLCBCdWNrZXRDb3VudEFsbG9jLCBCdWNrZXRDb3VudEhhc2hBbGxv
YywgQWxsb2MsCisgICAgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9jLCBJbnB1dEl0
ZXJhdG9yQnVja2V0QWxsb2MsCiAgICAgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvYywgQ29w
eUNvbnN0cnVjdG9yLCBDb3B5Q29uc3RydWN0b3JBbGxvYywKICAgICBNb3ZlQ29uc3RydWN0b3Is
IE1vdmVDb25zdHJ1Y3RvckFsbG9jLCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoRXF1YWxBbGxv
YywKLSAgICBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvYywgSW5pdGlhbGl6ZXJMaXN0QnVja2V0
SGFzaEFsbG9jLCBBc3NpZ25tZW50LAotICAgIE1vdmVBc3NpZ25tZW50LCBBc3NpZ25tZW50RnJv
bUluaXRpYWxpemVyTGlzdCwKLSAgICBBc3NpZ25tZW50T3ZlcndyaXRlc0V4aXN0aW5nLCBNb3Zl
QXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZywKKyAgICBJbml0aWFsaXplckxpc3RCdWNrZXRB
bGxvYywgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jLCBDb3B5QXNzaWdubWVudCwKKyAg
ICBNb3ZlQXNzaWdubWVudCwgQXNzaWdubWVudEZyb21Jbml0aWFsaXplckxpc3QsIEFzc2lnbm1l
bnRPdmVyd3JpdGVzRXhpc3RpbmcsCisgICAgTW92ZUFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3Rp
bmcsCiAgICAgQXNzaWdubWVudEZyb21Jbml0aWFsaXplckxpc3RPdmVyd3JpdGVzRXhpc3Rpbmcs
IEFzc2lnbm1lbnRPblNlbGYpOwogCiB9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
CiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCiAjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVS
TkFMX1VOT1JERVJFRF9TRVRfQ09OU1RSVUNUT1JfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgKaW5kZXggYWNhOWM2
YTVkZjcuLjA1YjMyYjVkOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
dW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTI2LDcgKzI2LDcgQEAgbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRl
cm5hbCB7CiB0ZW1wbGF0ZSA8Y2xhc3MgVW5vcmRTZXQ+CiBjbGFzcyBMb29rdXBUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7fTsKIAotVFlQRURfVEVTVF9DQVNFX1AoTG9va3VwVGVzdCk7
CitUWVBFRF9URVNUX1NVSVRFX1AoTG9va3VwVGVzdCk7CiAKIFRZUEVEX1RFU1RfUChMb29rdXBU
ZXN0LCBDb3VudCkgewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxU
eXBlUGFyYW0+OwpAQCAtODUsNCArODUsNSBAQCBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChM
b29rdXBUZXN0LCBDb3VudCwgRmluZCwgRXF1YWxSYW5nZSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBj
b250YWluZXJfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJT
TF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NFVF9MT09LVVBfVEVTVF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tZW1iZXJzX3Rlc3Qu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjk2Yzk0NWExMWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9t
ZW1iZXJzX3Rlc3QuaApAQCAtMCwwICsxLDg0IEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJz
ZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVS
RURfU0VUX01FTUJFUlNfVEVTVF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9V
Tk9SREVSRURfU0VUX01FTUJFUlNfVEVTVF9IXworCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+Cisj
aW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1
ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3Bh
Y2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFVub3JkU2V0PgorY2xh
c3MgTWVtYmVyc1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitUWVBFRF9URVNU
X1NVSVRFX1AoTWVtYmVyc1Rlc3QpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVXNl
VHlwZSgpIHt9CisKK1RZUEVEX1RFU1RfUChNZW1iZXJzVGVzdCwgVHlwZWRlZnMpIHsKKyAgRVhQ
RUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUeXBlUGFyYW06OmtleV90eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVQYXJhbTo6dmFsdWVfdHlwZT4o
KSkpOworICBFWFBFQ1RfVFJVRSgoYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgICAgICAgICBh
YnNsOjpuZWdhdGlvbjxzdGQ6OmlzX3NpZ25lZDx0eXBlbmFtZSBUeXBlUGFyYW06OnNpemVfdHlw
ZT4+LAorICAgICAgICAgICAgICAgc3RkOjppc19pbnRlZ3JhbDx0eXBlbmFtZSBUeXBlUGFyYW06
OnNpemVfdHlwZT4+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKGFic2w6OmNvbmp1bmN0aW9uPAorICAg
ICAgICAgICAgICAgc3RkOjppc19zaWduZWQ8dHlwZW5hbWUgVHlwZVBhcmFtOjpkaWZmZXJlbmNl
X3R5cGU+LAorICAgICAgICAgICAgICAgc3RkOjppc19pbnRlZ3JhbDx0eXBlbmFtZSBUeXBlUGFy
YW06OmRpZmZlcmVuY2VfdHlwZT4+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfY29udmVy
dGlibGU8CisgICAgICAgICAgICAgICBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Y29uc3QgdHlwZW5h
bWUgVHlwZVBhcmFtOjpoYXNoZXImPigpKAorICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZh
bDxjb25zdCB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV90eXBlJj4oKSkpLAorICAgICAgICAgICAg
ICAgc2l6ZV90PigpKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX2NvbnZlcnRpYmxlPAorICAg
ICAgICAgICAgICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJh
bTo6a2V5X2VxdWFsJj4oKSgKKyAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3Qg
dHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfdHlwZSY+KCksCisgICAgICAgICAgICAgICAgICAgc3Rk
OjpkZWNsdmFsPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X3R5cGUmPigpKSksCisgICAg
ICAgICAgICAgICBib29sPigpKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3NhbWU8dHlwZW5h
bWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTo6dmFsdWVfdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGU+KCkpKTsKKyAgRVhQ
RUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGUmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVQYXJhbTo6cmVmZXJlbmNl
PigpKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3NhbWU8Y29uc3QgdHlwZW5hbWUgVHlwZVBh
cmFtOjp2YWx1ZV90eXBlJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBU
eXBlUGFyYW06OmNvbnN0X3JlZmVyZW5jZT4oKSkpOworICBFWFBFQ1RfVFJVRSgoc3RkOjppc19z
YW1lPHR5cGVuYW1lIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZT46OnBvaW50ZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjpwb2ludGVy
PigpKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgKHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6
OmFsbG9jYXRvcl90cmFpdHM8CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBl
UGFyYW06OmFsbG9jYXRvcl90eXBlPjo6Y29uc3RfcG9pbnRlciwKKyAgICAgICAgICAgICAgICAg
ICAgdHlwZW5hbWUgVHlwZVBhcmFtOjpjb25zdF9wb2ludGVyPigpKSk7Cit9CisKK1RZUEVEX1RF
U1RfUChNZW1iZXJzVGVzdCwgU2ltcGxlRnVuY3Rpb25zKSB7CisgIEVYUEVDVF9HVChUeXBlUGFy
YW0oKS5tYXhfc2l6ZSgpLCAwKTsKK30KKworVFlQRURfVEVTVF9QKE1lbWJlcnNUZXN0LCBCZWdp
bkVuZCkgeworICBUeXBlUGFyYW0gdCA9IHt0eXBlbmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGV7
fX07CisgIEVYUEVDVF9FUSh0LmJlZ2luKCksIHQuY2JlZ2luKCkpOworICBFWFBFQ1RfRVEodC5l
bmQoKSwgdC5jZW5kKCkpOworICBFWFBFQ1RfTkUodC5iZWdpbigpLCB0LmVuZCgpKTsKKyAgRVhQ
RUNUX05FKHQuY2JlZ2luKCksIHQuY2VuZCgpKTsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9T
VUlURV9QKE1lbWJlcnNUZXN0LCBUeXBlZGVmcywgU2ltcGxlRnVuY3Rpb25zLCBCZWdpbkVuZCk7
CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NFVF9N
RU1CRVJTX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9y
ZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5v
cmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oCmluZGV4IDliZWFjZjMzMTY5Li43OWE4ZDQyMmJl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9k
aWZpZXJzX3Rlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3Nl
dF9tb2RpZmllcnNfdGVzdC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC0yNiw3ICsyNiw3IEBAIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewogdGVt
cGxhdGUgPGNsYXNzIFVub3JkU2V0PgogY2xhc3MgTW9kaWZpZXJzVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3Qge307CiAKLVRZUEVEX1RFU1RfQ0FTRV9QKE1vZGlmaWVyc1Rlc3QpOworVFlQ
RURfVEVTVF9TVUlURV9QKE1vZGlmaWVyc1Rlc3QpOwogCiBUWVBFRF9URVNUX1AoTW9kaWZpZXJz
VGVzdCwgQ2xlYXIpIHsKICAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKQEAgLTE4NCw0ICsxODQsNSBAQCBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UChNb2RpZmllcnNUZXN0LCBDbGVhciwgSW5zZXJ0LCBJbnNlcnRIaW50LAogCiB9ICAvLyBuYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCiAjZW5kaWYg
IC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9TRVRfTU9ESUZJRVJTX1RFU1Rf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF90ZXN0LmNjCmlu
ZGV4IDEyODFjZTUzZDVlLi42NDc4ZmFjMTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdW5vcmRlcmVkX3NldF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0xNiwyMSArMTYsMjMgQEAKIAogI2luY2x1ZGUgImFic2wvY29udGFp
bmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgogI2luY2x1ZGUg
ImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCIKKyNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVz
dC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9k
aWZpZXJzX3Rlc3QuaCIKIAogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIGNvbnRhaW5lcl9p
bnRlcm5hbCB7CiBuYW1lc3BhY2UgewogCi11c2luZyBTZXRUeXBlcyA9Ci0gICAgOjp0ZXN0aW5n
OjpUeXBlczxzdGQ6OnVub3JkZXJlZF9zZXQ8aW50LCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsVGVzdGluZ0VxdWFs
LCBBbGxvYzxpbnQ+PiwKLSAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5vcmRlcmVkX3NldDxz
dGQ6OnN0cmluZywgU3RhdGVmdWxUZXN0aW5nSGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwgQWxsb2M8c3RkOjpzdHJpbmc+
Pj47Cit1c2luZyBTZXRUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8CisgICAgc3RkOjp1bm9yZGVy
ZWRfc2V0PGludCwgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsCisg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG9jPGludD4+LAorICAgIHN0ZDo6dW5vcmRlcmVkX3Nl
dDxzdGQ6OnN0cmluZywgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWws
CisgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jPHN0ZDo6c3RyaW5nPj4+OwogCi1JTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChVbm9yZGVyZWRTZXQsIENvbnN0cnVjdG9yVGVzdCwgU2V0
VHlwZXMpOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5vcmRlcmVkU2V0LCBMb29r
dXBUZXN0LCBTZXRUeXBlcyk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbm9yZGVy
ZWRTZXQsIE1vZGlmaWVyc1Rlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1Rf
U1VJVEVfUChVbm9yZGVyZWRTZXQsIENvbnN0cnVjdG9yVGVzdCwgU2V0VHlwZXMpOworSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9TVUlURV9QKFVub3JkZXJlZFNldCwgTG9va3VwVGVzdCwgU2V0VHlw
ZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKFVub3JkZXJlZFNldCwgTWVtYmVy
c1Rlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChVbm9yZGVy
ZWRTZXQsIE1vZGlmaWVyc1Rlc3QsIFNldFR5cGVzKTsKIAogfSAgLy8gbmFtZXNwYWNlCiB9ICAv
LyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvbm9kZV9oYXNoX21hcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9tYXAuaAppbmRl
eCA2MzY5ZWMzYWQ2NC4uYTg0MWY1YWJkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9u
b2RlX2hhc2hfbWFwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9tYXAuaApAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDAsNiArNDAsNyBAQAog
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJh
YnNsL2FsZ29yaXRobS9jb250YWluZXIuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9jb250YWluZXJfbWVtb3J5LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAogI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL25vZGVfaGFzaF9wb2xpY3kuaCIKQEAgLTcx
LDcgKzcyLDcgQEAgY2xhc3MgTm9kZUhhc2hNYXBQb2xpY3k7CiAvLyBCeSBkZWZhdWx0LCBgbm9k
ZV9oYXNoX21hcGAgdXNlcyB0aGUgYGFic2w6Okhhc2hgIGhhc2hpbmcgZnJhbWV3b3JrLgogLy8g
QWxsIGZ1bmRhbWVudGFsIGFuZCBBYnNlaWwgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZSBgYWJzbDo6
SGFzaGAgZnJhbWV3b3JrIGhhdmUKIC8vIGEgY29tcGF0aWJsZSBlcXVhbGl0eSBvcGVyYXRvciBm
b3IgY29tcGFyaW5nIGluc2VydGlvbnMgaW50byBgbm9kZV9oYXNoX21hcGAuCi0vLyBJZiB5b3Vy
IHR5cGUgaXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhlIGBhc2JsOjpIYXNoYCBmcmFtZXdvcmss
IHNlZQorLy8gSWYgeW91ciB0eXBlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBgYWJzbDo6
SGFzaGAgZnJhbWV3b3JrLCBzZWUKIC8vIGFic2wvaGFzaC9oYXNoLmggZm9yIGluZm9ybWF0aW9u
IG9uIGV4dGVuZGluZyBBYnNlaWwgaGFzaGluZyB0byB1c2VyLWRlZmluZWQKIC8vIHR5cGVzLgog
Ly8KQEAgLTkxLDcgKzkyLDcgQEAgY2xhc3MgTm9kZUhhc2hNYXBQb2xpY3k7CiAvLyAgc3RkOjpz
dHJpbmcgc2VhcmNoX2tleSA9ICJiIjsKIC8vICBhdXRvIHJlc3VsdCA9IGR1Y2tzLmZpbmQoc2Vh
cmNoX2tleSk7CiAvLyAgaWYgKHJlc3VsdCAhPSBkdWNrcy5lbmQoKSkgewotLy8gICAgc3RkOjpj
b3V0IDw8ICJSZXN1bHQ6ICIgPDwgc2VhcmNoX2tleS0+c2Vjb25kIDw8IHN0ZDo6ZW5kbDsKKy8v
ICAgIHN0ZDo6Y291dCA8PCAiUmVzdWx0OiAiIDw8IHJlc3VsdC0+c2Vjb25kIDw8IHN0ZDo6ZW5k
bDsKIC8vICB9CiB0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBWYWx1ZSwKICAgICAgICAgICBj
bGFzcyBIYXNoID0gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2RlZmF1bHRfaGFzaDxL
ZXk+LApAQCAtMTA0LDYgKzEwNSw0NiBAQCBjbGFzcyBub2RlX2hhc2hfbWFwCiAgIHVzaW5nIEJh
c2UgPSB0eXBlbmFtZSBub2RlX2hhc2hfbWFwOjpyYXdfaGFzaF9tYXA7CiAKICBwdWJsaWM6Cisg
IC8vIENvbnN0cnVjdG9ycyBhbmQgQXNzaWdubWVudCBPcGVyYXRvcnMKKyAgLy8KKyAgLy8gQSBu
b2RlX2hhc2hfbWFwIHN1cHBvcnRzIHRoZSBzYW1lIG92ZXJsb2FkIHNldCBhcyBgc3RkOjp1bm9y
ZGVyZWRfbWFwYAorICAvLyBmb3IgY29uc3RydWN0aW9uIGFuZCBhc3NpZ25tZW50OgorICAvLwor
ICAvLyAqICBEZWZhdWx0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgIC8vIE5vIGFsbG9jYXRp
b24gZm9yIHRoZSB0YWJsZSdzIGVsZW1lbnRzIGlzIG1hZGUuCisgIC8vICAgIGFic2w6Om5vZGVf
aGFzaF9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwMTsKKyAgLy8KKyAgLy8gKiBJbml0aWFsaXpl
ciBMaXN0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6bm9kZV9oYXNoX21hcDxpbnQs
IHN0ZDo6c3RyaW5nPiBtYXAyID0KKyAgLy8gICAgICAge3sxLCAiaHVleSJ9LCB7MiwgImRld2V5
In0sIHszLCAibG91aWUifSx9OworICAvLworICAvLyAqIENvcHkgY29uc3RydWN0b3IKKyAgLy8K
KyAgLy8gICBhYnNsOjpub2RlX2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDMobWFwMik7
CisgIC8vCisgIC8vICogQ29weSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisgIC8vICAvLyBI
YXNoIGZ1bmN0b3IgYW5kIENvbXBhcmF0b3IgYXJlIGNvcGllZCBhcyB3ZWxsCisgIC8vICBhYnNs
Ojpub2RlX2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDQ7CisgIC8vICBtYXA0ID0gbWFw
MzsKKyAgLy8KKyAgLy8gKiBNb3ZlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgLy8gTW92ZSBp
cyBndWFyYW50ZWVkIGVmZmljaWVudAorICAvLyAgIGFic2w6Om5vZGVfaGFzaF9tYXA8aW50LCBz
dGQ6OnN0cmluZz4gbWFwNShzdGQ6Om1vdmUobWFwNCkpOworICAvLworICAvLyAqIE1vdmUgYXNz
aWdubWVudCBvcGVyYXRvcgorICAvLworICAvLyAgIC8vIE1heSBiZSBlZmZpY2llbnQgaWYgYWxs
b2NhdG9ycyBhcmUgY29tcGF0aWJsZQorICAvLyAgIGFic2w6Om5vZGVfaGFzaF9tYXA8aW50LCBz
dGQ6OnN0cmluZz4gbWFwNjsKKyAgLy8gICBtYXA2ID0gc3RkOjptb3ZlKG1hcDUpOworICAvLwor
ICAvLyAqIFJhbmdlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgc3RkOjp2ZWN0b3I8c3RkOjpw
YWlyPGludCwgc3RkOjpzdHJpbmc+PiB2ID0ge3sxLCAiYSJ9LCB7MiwgImIifX07CisgIC8vICAg
YWJzbDo6bm9kZV9oYXNoX21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXA3KHYuYmVnaW4oKSwgdi5l
bmQoKSk7CiAgIG5vZGVfaGFzaF9tYXAoKSB7fQogICB1c2luZyBCYXNlOjpCYXNlOwogCkBAIC01
MjYsNSArNTY3LDE2IEBAIGNsYXNzIE5vZGVIYXNoTWFwUG9saWN5CiAgIHN0YXRpYyBjb25zdCBW
YWx1ZSYgdmFsdWUoY29uc3QgdmFsdWVfdHlwZSogZWxlbSkgeyByZXR1cm4gZWxlbS0+c2Vjb25k
OyB9CiB9OwogfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorCituYW1lc3BhY2Ug
Y29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbCB7CisKKy8vIFNwZWNpYWxpemF0aW9uIG9mIHRy
YWl0IGluIGFic2wvYWxnb3JpdGhtL2NvbnRhaW5lci5oCit0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBj
bGFzcyBULCBjbGFzcyBIYXNoLCBjbGFzcyBLZXlFcXVhbCwgY2xhc3MgQWxsb2NhdG9yPgorc3Ry
dWN0IElzVW5vcmRlcmVkQ29udGFpbmVyPAorICAgIGFic2w6Om5vZGVfaGFzaF9tYXA8S2V5LCBU
LCBIYXNoLCBLZXlFcXVhbCwgQWxsb2NhdG9yPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKKworfSAg
Ly8gbmFtZXNwYWNlIGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWwKKwogfSAgLy8gbmFtZXNw
YWNlIGFic2wKKwogI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9OT0RFX0hBU0hfTUFQX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX21hcF90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL25vZGVfaGFzaF9tYXBfdGVzdC5jYwppbmRleCBiZDc4OTY0NGMyNC4uMGYyNzE0
YTcyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFwX3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9tYXBfdGVzdC5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUg
ImFic2wvY29udGFpbmVyL2ludGVybmFsL3RyYWNrZWQuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QuaCIKICNpbmNsdWRl
ICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgiCisj
aW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tZW1iZXJzX3Rl
c3QuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21v
ZGlmaWVyc190ZXN0LmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKQEAgLTM0LDkgKzM1LDEwIEBAIHVz
aW5nIE1hcFR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczwKICAgICAgICAgICAgICAgICAgICAgICAg
IFN0YXRlZnVsVGVzdGluZ0VxdWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgQWxsb2M8c3Rk
OjpwYWlyPGNvbnN0IHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+Pj47CiAKLUlOU1RBTlRJQVRF
X1RZUEVEX1RFU1RfQ0FTRV9QKE5vZGVIYXNoTWFwLCBDb25zdHJ1Y3RvclRlc3QsIE1hcFR5cGVz
KTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE5vZGVIYXNoTWFwLCBMb29rdXBUZXN0
LCBNYXBUeXBlcyk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChOb2RlSGFzaE1hcCwg
TW9kaWZpZXJzVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9Q
KE5vZGVIYXNoTWFwLCBDb25zdHJ1Y3RvclRlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfU1VJVEVfUChOb2RlSGFzaE1hcCwgTG9va3VwVGVzdCwgTWFwVHlwZXMpOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKE5vZGVIYXNoTWFwLCBNZW1iZXJzVGVzdCwgTWFw
VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKE5vZGVIYXNoTWFwLCBNb2Rp
ZmllcnNUZXN0LCBNYXBUeXBlcyk7CiAKIHVzaW5nIE0gPSBhYnNsOjpub2RlX2hhc2hfbWFwPHN0
ZDo6c3RyaW5nLCBUcmFja2VkPGludD4+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
bm9kZV9oYXNoX3NldC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXQuaAppbmRleCA5
MGQ0Y2UwYzE2My4uMGNkMWZlNTdmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2Rl
X2hhc2hfc2V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXQuaApAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzcsNiArMzcsNyBAQAogCiAj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CiAKKyNpbmNsdWRlICJhYnNsL2FsZ29yaXRobS9jb250YWlu
ZXIuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2Rl
ZmF1bHRzLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CiAjaW5jbHVkZSAiYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL3Jhd19oYXNoX3NldC5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydApAQCAtNjcs
NyArNjgsNyBAQCBzdHJ1Y3QgTm9kZUhhc2hTZXRQb2xpY3k7CiAvLyBCeSBkZWZhdWx0LCBgbm9k
ZV9oYXNoX3NldGAgdXNlcyB0aGUgYGFic2w6Okhhc2hgIGhhc2hpbmcgZnJhbWV3b3JrLgogLy8g
QWxsIGZ1bmRhbWVudGFsIGFuZCBBYnNlaWwgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZSBgYWJzbDo6
SGFzaGAgZnJhbWV3b3JrIGhhdmUKIC8vIGEgY29tcGF0aWJsZSBlcXVhbGl0eSBvcGVyYXRvciBm
b3IgY29tcGFyaW5nIGluc2VydGlvbnMgaW50byBgbm9kZV9oYXNoX3NldGAuCi0vLyBJZiB5b3Vy
IHR5cGUgaXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhlIGBhc2JsOjpIYXNoYCBmcmFtZXdvcmss
IHNlZQorLy8gSWYgeW91ciB0eXBlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBgYWJzbDo6
SGFzaGAgZnJhbWV3b3JrLCBzZWUKIC8vIGFic2wvaGFzaC9oYXNoLmggZm9yIGluZm9ybWF0aW9u
IG9uIGV4dGVuZGluZyBBYnNlaWwgaGFzaGluZyB0byB1c2VyLWRlZmluZWQKIC8vIHR5cGVzLgog
Ly8KQEAgLTk2LDYgKzk3LDQ2IEBAIGNsYXNzIG5vZGVfaGFzaF9zZXQKICAgdXNpbmcgQmFzZSA9
IHR5cGVuYW1lIG5vZGVfaGFzaF9zZXQ6OnJhd19oYXNoX3NldDsKIAogIHB1YmxpYzoKKyAgLy8g
Q29uc3RydWN0b3JzIGFuZCBBc3NpZ25tZW50IE9wZXJhdG9ycworICAvLworICAvLyBBIG5vZGVf
aGFzaF9zZXQgc3VwcG9ydHMgdGhlIHNhbWUgb3ZlcmxvYWQgc2V0IGFzIGBzdGQ6OnVub3JkZXJl
ZF9tYXBgCisgIC8vIGZvciBjb25zdHJ1Y3Rpb24gYW5kIGFzc2lnbm1lbnQ6CisgIC8vCisgIC8v
ICogIERlZmF1bHQgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICAgLy8gTm8gYWxsb2NhdGlvbiBm
b3IgdGhlIHRhYmxlJ3MgZWxlbWVudHMgaXMgbWFkZS4KKyAgLy8gICAgYWJzbDo6bm9kZV9oYXNo
X3NldDxzdGQ6OnN0cmluZz4gc2V0MTsKKyAgLy8KKyAgLy8gKiBJbml0aWFsaXplciBMaXN0IGNv
bnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6bm9kZV9oYXNoX3NldDxzdGQ6OnN0cmluZz4g
c2V0MiA9CisgIC8vICAgICAgIHt7Imh1ZXkifSwgeyJkZXdleSJ9LCB7ImxvdWllIn0sfTsKKyAg
Ly8KKyAgLy8gKiBDb3B5IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6bm9kZV9oYXNo
X3NldDxzdGQ6OnN0cmluZz4gc2V0MyhzZXQyKTsKKyAgLy8KKyAgLy8gKiBDb3B5IGFzc2lnbm1l
bnQgb3BlcmF0b3IKKyAgLy8KKyAgLy8gIC8vIEhhc2ggZnVuY3RvciBhbmQgQ29tcGFyYXRvciBh
cmUgY29waWVkIGFzIHdlbGwKKyAgLy8gIGFic2w6Om5vZGVfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+
IHNldDQ7CisgIC8vICBzZXQ0ID0gc2V0MzsKKyAgLy8KKyAgLy8gKiBNb3ZlIGNvbnN0cnVjdG9y
CisgIC8vCisgIC8vICAgLy8gTW92ZSBpcyBndWFyYW50ZWVkIGVmZmljaWVudAorICAvLyAgIGFi
c2w6Om5vZGVfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHNldDUoc3RkOjptb3ZlKHNldDQpKTsKKyAg
Ly8KKyAgLy8gKiBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgLy8KKyAgLy8gICAvLyBNYXkg
YmUgZWZmaWNpZW50IGlmIGFsbG9jYXRvcnMgYXJlIGNvbXBhdGlibGUKKyAgLy8gICBhYnNsOjpu
b2RlX2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzZXQ2OworICAvLyAgIHNldDYgPSBzdGQ6Om1vdmUo
c2V0NSk7CisgIC8vCisgIC8vICogUmFuZ2UgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IHsiYSIsICJiIn07CisgIC8vICAgYWJzbDo6bm9kZV9o
YXNoX3NldDxzdGQ6OnN0cmluZz4gc2V0Nyh2LmJlZ2luKCksIHYuZW5kKCkpOwogICBub2RlX2hh
c2hfc2V0KCkge30KICAgdXNpbmcgQmFzZTo6QmFzZTsKIApAQCAtMjMyLDggKzI3Myw3IEBAIGNs
YXNzIG5vZGVfaGFzaF9zZXQKICAgLy8KICAgLy8gVGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVj
dGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBlbGVtZW50IHdpdGggdGhlCiAgIC8vIGtl
eSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBl
bGVtZW50IHdpbGwgYmUKLSAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9l
bXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBub3QKLSAgLy8gY29weWFibGUgb3IgbW92ZWFi
bGUuCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4KICAgLy8KICAgLy8gSWYgcmVoYXNoaW5n
IG9jY3VycyBkdWUgdG8gdGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0
ZWQuCiAgIHVzaW5nIEJhc2U6OmVtcGxhY2U7CkBAIC0yNDcsOCArMjg3LDcgQEAgY2xhc3Mgbm9k
ZV9oYXNoX3NldAogICAvLwogICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZl
biBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKICAgLy8ga2V5IGluIHRo
ZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQg
d2lsbCBiZQotICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2Uo
KWAgdW5sZXNzIHlvdXIga2V5IGlzIG5vdAotICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAg
Ly8gZGVzdHJveWVkIGltbWVkaWF0ZWx5LgogICAvLwogICAvLyBJZiByZWhhc2hpbmcgb2NjdXJz
IGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KICAg
dXNpbmcgQmFzZTo6ZW1wbGFjZV9oaW50OwpAQCAtNDM1LDUgKzQ3NCwxNSBAQCBzdHJ1Y3QgTm9k
ZUhhc2hTZXRQb2xpY3kKICAgc3RhdGljIHNpemVfdCBlbGVtZW50X3NwYWNlX3VzZWQoY29uc3Qg
VCopIHsgcmV0dXJuIHNpemVvZihUKTsgfQogfTsKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwKKworbmFtZXNwYWNlIGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWwgeworCisv
LyBTcGVjaWFsaXphdGlvbiBvZiB0cmFpdCBpbiBhYnNsL2FsZ29yaXRobS9jb250YWluZXIuaAor
dGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgSGFzaCwgY2xhc3MgS2V5RXF1YWwsIGNsYXNzIEFs
bG9jYXRvcj4KK3N0cnVjdCBJc1Vub3JkZXJlZENvbnRhaW5lcjxhYnNsOjpub2RlX2hhc2hfc2V0
PEtleSwgSGFzaCwgS2V5RXF1YWwsIEFsbG9jYXRvcj4+CisgICAgOiBzdGQ6OnRydWVfdHlwZSB7
fTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWwKIH0gIC8v
IG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfTk9ERV9IQVNIX1NF
VF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXRfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0X3Rlc3QuY2MKaW5kZXggN2U0OThmMGY3Nzku
LjBlYTc2ZTdjNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX3NldF90
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0X3Rlc3QuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE2LDYgKzE2LDcgQEAKIAog
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0
b3JfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9z
ZXRfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9y
ZGVyZWRfc2V0X21lbWJlcnNfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVy
bmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaCIKIAogbmFtZXNwYWNlIGFic2wgewpA
QCAtMjksMTQgKzMwLDE1IEBAIHVzaW5nIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7
CiB1c2luZyBTZXRUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8CiAgICAgbm9kZV9oYXNoX3NldDxp
bnQsIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzxpbnQ+
PiwKICAgICBub2RlX2hhc2hfc2V0PHN0ZDo6c3RyaW5nLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLCBT
dGF0ZWZ1bFRlc3RpbmdFcXVhbCwKLSAgICAgICAgICAgICAgICAgIEFsbG9jPGludD4+LAorICAg
ICAgICAgICAgICAgICAgQWxsb2M8c3RkOjpzdHJpbmc+PiwKICAgICBub2RlX2hhc2hfc2V0PEVu
dW0sIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzxFbnVt
Pj4sCiAgICAgbm9kZV9oYXNoX3NldDxFbnVtQ2xhc3MsIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0
YXRlZnVsVGVzdGluZ0VxdWFsLAogICAgICAgICAgICAgICAgICAgQWxsb2M8RW51bUNsYXNzPj4+
OwogCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChOb2RlSGFzaFNldCwgQ29uc3RydWN0
b3JUZXN0LCBTZXRUeXBlcyk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChOb2RlSGFz
aFNldCwgTG9va3VwVGVzdCwgU2V0VHlwZXMpOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1AoTm9kZUhhc2hTZXQsIE1vZGlmaWVyc1Rlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfU1VJVEVfUChOb2RlSGFzaFNldCwgQ29uc3RydWN0b3JUZXN0LCBTZXRUeXBlcyk7
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoTm9kZUhhc2hTZXQsIExvb2t1cFRlc3Qs
IFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChOb2RlSGFzaFNldCwg
TWVtYmVyc1Rlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChO
b2RlSGFzaFNldCwgTW9kaWZpZXJzVGVzdCwgU2V0VHlwZXMpOwogCiBURVNUKE5vZGVIYXNoU2V0
LCBNb3ZlYWJsZU5vdENvcHlhYmxlQ29tcGlsZXMpIHsKICAgbm9kZV9oYXNoX3NldDxzdGQ6OnVu
aXF1ZV9wdHI8dm9pZCo+PiB0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMuYnpsIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29wdHMuYnpsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzUwOGYxN2RmOS4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMuYnpsCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICsw
LDAgQEAKLSIiImFic2wgc3BlY2lmaWMgY29wdHMuCi0KLUZsYWdzIHNwZWNpZmllZCBoZXJlIG11
c3Qgbm90IGltcGFjdCBBQkkuIENvZGUgY29tcGlsZWQgd2l0aCBhbmQgd2l0aG91dCB0aGVzZQot
b3B0cyB3aWxsIGJlIGxpbmtlZCB0b2dldGhlciwgYW5kIGluIHNvbWUgY2FzZXMgaGVhZGVycyBj
b21waWxlZCB3aXRoIGFuZAotd2l0aG91dCB0aGVzZSBvcHRpb25zIHdpbGwgYmUgcGFydCBvZiB0
aGUgc2FtZSBwcm9ncmFtLgotIiIiCi1HQ0NfRkxBR1MgPSBbCi0gICAgIi1XYWxsIiwKLSAgICAi
LVdleHRyYSIsCi0gICAgIi1XY2FzdC1xdWFsIiwKLSAgICAiLVdjb252ZXJzaW9uLW51bGwiLAot
ICAgICItV21pc3NpbmctZGVjbGFyYXRpb25zIiwKLSAgICAiLVdvdmVybGVuZ3RoLXN0cmluZ3Mi
LAotICAgICItV3BvaW50ZXItYXJpdGgiLAotICAgICItV3VudXNlZC1sb2NhbC10eXBlZGVmcyIs
Ci0gICAgIi1XdW51c2VkLXJlc3VsdCIsCi0gICAgIi1XdmFyYXJncyIsCi0gICAgIi1XdmxhIiwg
ICMgdmFyaWFibGUtbGVuZ3RoIGFycmF5Ci0gICAgIi1Xd3JpdGUtc3RyaW5ncyIsCi0gICAgIyBH
b29nbGUgc3R5bGUgZG9lcyBub3QgdXNlIHVuc2lnbmVkIGludGVnZXJzLCB0aG91Z2ggU1RMIGNv
bnRhaW5lcnMKLSAgICAjIGhhdmUgdW5zaWduZWQgdHlwZXMuCi0gICAgIi1Xbm8tc2lnbi1jb21w
YXJlIiwKLV0KLQotR0NDX1RFU1RfRkxBR1MgPSBbCi0gICAgIi1Xbm8tY29udmVyc2lvbi1udWxs
IiwKLSAgICAiLVduby1taXNzaW5nLWRlY2xhcmF0aW9ucyIsCi0gICAgIi1Xbm8tc2lnbi1jb21w
YXJlIiwKLSAgICAiLVduby11bnVzZWQtZnVuY3Rpb24iLAotICAgICItV25vLXVudXNlZC1wYXJh
bWV0ZXIiLAotICAgICItV25vLXVudXNlZC1wcml2YXRlLWZpZWxkIiwKLV0KLQotIyBEb2NzIG9u
IHNpbmdsZSBmbGFncyBpcyBwcmVjZWRlZCBieSBhIGNvbW1lbnQuCi0jIERvY3Mgb24gZ3JvdXBz
IG9mIGZsYWdzIGlzIHByZWNlZGVkIGJ5ICMjIy4KLQotTExWTV9GTEFHUyA9IFsKLSAgICAiLVdh
bGwiLAotICAgICItV2V4dHJhIiwKLSAgICAiLVdldmVyeXRoaW5nIiwKLSAgICAjIEFic2VpbCBk
b2VzIG5vdCBzdXBwb3J0IEMrKzk4Ci0gICAgIi1Xbm8tYysrOTgtY29tcGF0LXBlZGFudGljIiwK
LSAgICAjIFR1cm5zIG9mZiBhbGwgaW1wbGljaXQgY29udmVyc2lvbiB3YXJuaW5ncy4gTW9zdCBh
cmUgcmUtZW5hYmxlZCBiZWxvdy4KLSAgICAiLVduby1jb252ZXJzaW9uIiwKLSAgICAiLVduby1j
b3ZlcmVkLXN3aXRjaC1kZWZhdWx0IiwKLSAgICAiLVduby1kZXByZWNhdGVkIiwKLSAgICAiLVdu
by1kaXNhYmxlZC1tYWNyby1leHBhbnNpb24iLAotICAgICItV25vLWRvdWJsZS1wcm9tb3Rpb24i
LAotICAgICMjIwotICAgICMgVHVybmVkIG9mZiBhcyB0aGV5IGluY2x1ZGUgdmFsaWQgQysrIGNv
ZGUuCi0gICAgIi1Xbm8tY29tbWEiLAotICAgICItV25vLWV4dHJhLXNlbWkiLAotICAgICItV25v
LXBhY2tlZCIsCi0gICAgIi1Xbm8tcGFkZGVkIiwKLSAgICAjIyMKLSAgICAjIEdvb2dsZSBzdHls
ZSBkb2VzIG5vdCB1c2UgdW5zaWduZWQgaW50ZWdlcnMsIHRob3VnaCBTVEwgY29udGFpbmVycwot
ICAgICMgaGF2ZSB1bnNpZ25lZCB0eXBlcy4KLSAgICAiLVduby1zaWduLWNvbXBhcmUiLAotICAg
ICMjIwotICAgICItV25vLWZsb2F0LWNvbnZlcnNpb24iLAotICAgICItV25vLWZsb2F0LWVxdWFs
IiwKLSAgICAiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCi0gICAgIyBUb28gYWdncmVzc2l2ZTog
d2FybnMgb24gQ2xhbmcgZXh0ZW5zaW9ucyBlbmNsb3NlZCBpbiBDbGFuZy1vbmx5Ci0gICAgIyBj
b21waWxhdGlvbiBwYXRocy4KLSAgICAiLVduby1nY2MtY29tcGF0IiwKLSAgICAjIyMKLSAgICAj
IFNvbWUgaW50ZXJuYWwgZ2xvYmFscyBhcmUgbmVjZXNzYXJ5LiBEb24ndCBkbyB0aGlzIGF0IGhv
bWUuCi0gICAgIi1Xbm8tZ2xvYmFsLWNvbnN0cnVjdG9ycyIsCi0gICAgIi1Xbm8tZXhpdC10aW1l
LWRlc3RydWN0b3JzIiwKLSAgICAjIyMKLSAgICAiLVduby1uZXN0ZWQtYW5vbi10eXBlcyIsCi0g
ICAgIi1Xbm8tbm9uLW1vZHVsYXItaW5jbHVkZS1pbi1tb2R1bGUiLAotICAgICItV25vLW9sZC1z
dHlsZS1jYXN0IiwKLSAgICAjIFdhcm5zIG9uIHByZWZlcnJlZCB1c2FnZSBvZiBub24tUE9EIHR5
cGVzIHN1Y2ggYXMgc3RyaW5nX3ZpZXcKLSAgICAiLVduby1yYW5nZS1sb29wLWFuYWx5c2lzIiwK
LSAgICAiLVduby1yZXNlcnZlZC1pZC1tYWNybyIsCi0gICAgIi1Xbm8tc2hvcnRlbi02NC10by0z
MiIsCi0gICAgIi1Xbm8tc3dpdGNoLWVudW0iLAotICAgICItV25vLXRocmVhZC1zYWZldHktbmVn
YXRpdmUiLAotICAgICItV25vLXVuZGVmIiwKLSAgICAiLVduby11bmtub3duLXdhcm5pbmctb3B0
aW9uIiwKLSAgICAiLVduby11bnJlYWNoYWJsZS1jb2RlIiwKLSAgICAjIENhdXNlcyB3YXJuaW5n
cyBvbiBpbmNsdWRlIGd1YXJkcwotICAgICItV25vLXVudXNlZC1tYWNyb3MiLAotICAgICItV25v
LXdlYWstdnRhYmxlcyIsCi0gICAgIyMjCi0gICAgIyBJbXBsaWNpdCBjb252ZXJzaW9uIHdhcm5p
bmdzIHR1cm5lZCBvZmYgYnkgLVduby1jb252ZXJzaW9uCi0gICAgIyB3aGljaCBhcmUgcmUtZW5h
YmxlZCBiZWxvdy4KLSAgICAiLVdiaXRmaWVsZC1lbnVtLWNvbnZlcnNpb24iLAotICAgICItV2Jv
b2wtY29udmVyc2lvbiIsCi0gICAgIi1XY29uc3RhbnQtY29udmVyc2lvbiIsCi0gICAgIi1XZW51
bS1jb252ZXJzaW9uIiwKLSAgICAiLVdpbnQtY29udmVyc2lvbiIsCi0gICAgIi1XbGl0ZXJhbC1j
b252ZXJzaW9uIiwKLSAgICAiLVdub24tbGl0ZXJhbC1udWxsLWNvbnZlcnNpb24iLAotICAgICIt
V251bGwtY29udmVyc2lvbiIsCi0gICAgIi1Xb2JqYy1saXRlcmFsLWNvbnZlcnNpb24iLAotICAg
ICItV25vLXNpZ24tY29udmVyc2lvbiIsCi0gICAgIi1Xc3RyaW5nLWNvbnZlcnNpb24iLAotICAg
ICMjIwotXQotCi1MTFZNX1RFU1RfRkxBR1MgPSBbCi0gICAgIi1Xbm8tYzk5LWV4dGVuc2lvbnMi
LAotICAgICItV25vLW1pc3Npbmctbm9yZXR1cm4iLAotICAgICItV25vLW1pc3NpbmctcHJvdG90
eXBlcyIsCi0gICAgIi1Xbm8tbWlzc2luZy12YXJpYWJsZS1kZWNsYXJhdGlvbnMiLAotICAgICIt
V25vLW51bGwtY29udmVyc2lvbiIsCi0gICAgIi1Xbm8tc2hhZG93IiwKLSAgICAiLVduby1zaGlm
dC1zaWduLW92ZXJmbG93IiwKLSAgICAiLVduby1zaWduLWNvbXBhcmUiLAotICAgICItV25vLXVu
dXNlZC1mdW5jdGlvbiIsCi0gICAgIi1Xbm8tdW51c2VkLW1lbWJlci1mdW5jdGlvbiIsCi0gICAg
Ii1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCi0gICAgIi1Xbm8tdW51c2VkLXByaXZhdGUtZmllbGQi
LAotICAgICItV25vLXVudXNlZC10ZW1wbGF0ZSIsCi0gICAgIi1Xbm8tdXNlZC1idXQtbWFya2Vk
LXVudXNlZCIsCi0gICAgIi1Xbm8temVyby1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQiLAotICAg
ICMgZ3Rlc3QgZGVwZW5kcyBvbiB0aGlzIEdOVSBleHRlbnNpb24gYmVpbmcgb2ZmZXJlZC4KLSAg
ICAiLVduby1nbnUtemVyby12YXJpYWRpYy1tYWNyby1hcmd1bWVudHMiLAotXQotCi1NU1ZDX0ZM
QUdTID0gWwotICAgICIvVzMiLAotICAgICIvd2Q0MDA1IiwgICMgbWFjcm8tcmVkZWZpbml0aW9u
Ci0gICAgIi93ZDQwNjgiLCAgIyB1bmtub3duIHByYWdtYQotICAgICIvd2Q0MTgwIiwgICMgcXVh
bGlmaWVyIGFwcGxpZWQgdG8gZnVuY3Rpb24gdHlwZSBoYXMgbm8gbWVhbmluZzsgaWdub3JlZAot
ICAgICIvd2Q0MjQ0IiwgICMgY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9z
c2libGUgbG9zcyBvZiBkYXRhCi0gICAgIi93ZDQyNjciLCAgIyBjb252ZXJzaW9uIGZyb20gJ3Np
emVfdCcgdG8gJ3R5cGUnLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKLSAgICAiL3dkNDgwMCIsICAj
IGZvcmNpbmcgdmFsdWUgdG8gYm9vbCAndHJ1ZScgb3IgJ2ZhbHNlJyAocGVyZm9ybWFuY2Ugd2Fy
bmluZykKLSAgICAiL0ROT01JTk1BWCIsICAjIERvbid0IGRlZmluZSBtaW4gYW5kIG1heCBtYWNy
b3MgKHdpbmRvd3MuaCkKLSAgICAiL0RXSU4zMl9MRUFOX0FORF9NRUFOIiwgICMgRG9uJ3QgYmxv
YXQgbmFtZXNwYWNlIHdpdGggaW5jb21wYXRpYmxlIHdpbnNvY2sgdmVyc2lvbnMuCi0gICAgIi9E
X0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiLCAgIyBEb24ndCB3YXJuIGFib3V0IHVzYWdlIG9mIGlu
c2VjdXJlIEMgZnVuY3Rpb25zCi1dCi0KLU1TVkNfVEVTVF9GTEFHUyA9IFsKLSAgICAiL3dkNDAx
OCIsICAjIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaAotICAgICIvd2Q0MTAxIiwgICMgdW5yZWZl
cmVuY2VkIGxvY2FsIHZhcmlhYmxlCi0gICAgIi93ZDQ1MDMiLCAgIyBkZWNvcmF0ZWQgbmFtZSBs
ZW5ndGggZXhjZWVkZWQsIG5hbWUgd2FzIHRydW5jYXRlZAotXQotCi0jIC9XYWxsIHdpdGggbXN2
YyBpbmNsdWRlcyB1bmhlbHBmdWwgd2FybmluZ3Mgc3VjaCBhcyBDNDcxMSwgQzQ3MTAsIC4uLgot
QUJTTF9ERUZBVUxUX0NPUFRTID0gc2VsZWN0KHsKLSAgICAiLy9hYnNsOndpbmRvd3MiOiBNU1ZD
X0ZMQUdTLAotICAgICIvL2Fic2w6bGx2bV9jb21waWxlciI6IExMVk1fRkxBR1MsCi0gICAgIi8v
Y29uZGl0aW9uczpkZWZhdWx0IjogR0NDX0ZMQUdTLAotfSkKLQotIyBpbiBhYnNlbmNlIG9mIG1v
ZHVsZXMgKC0tY29tcGlsZXI9Z2NjIG9yIC1jIG9wdCksIGNjX3Rlc3RzIGxlYWsgdGhlaXIgY29w
dHMKLSMgdG8gdGhlaXIgKGluY2x1ZGVkIGhlYWRlcikgZGVwZW5kZW5jaWVzIGFuZCBmYWlsIHRv
IGJ1aWxkIG91dHNpZGUgYWJzbAotQUJTTF9URVNUX0NPUFRTID0gQUJTTF9ERUZBVUxUX0NPUFRT
ICsgc2VsZWN0KHsKLSAgICAiLy9hYnNsOndpbmRvd3MiOiBNU1ZDX1RFU1RfRkxBR1MsCi0gICAg
Ii8vYWJzbDpsbHZtX2NvbXBpbGVyIjogTExWTV9URVNUX0ZMQUdTLAotICAgICIvL2NvbmRpdGlv
bnM6ZGVmYXVsdCI6IEdDQ19URVNUX0ZMQUdTLAotfSkKLQotQUJTTF9FWENFUFRJT05TX0ZMQUcg
PSBzZWxlY3QoewotICAgICIvL2Fic2w6d2luZG93cyI6IFsiL1VfSEFTX0VYQ0VQVElPTlMiLCAi
L0RfSEFTX0VYQ0VQVElPTlM9MSIsICIvRUhzYyJdLAotICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVs
dCI6IFsiLWZleGNlcHRpb25zIl0sCi19KQotCi1BQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BU
UyA9IHNlbGVjdCh7Ci0gICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogW10sCi19KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29wdHMvQWJzZWlsQ29uZmlndXJlQ29wdHMuY21ha2UgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0
cy9BYnNlaWxDb25maWd1cmVDb3B0cy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNGVjZTRjNmY0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9B
YnNlaWxDb25maWd1cmVDb3B0cy5jbWFrZQpAQCAtMCwwICsxLDYwIEBACisjIFNlZSBhYnNsL2Nv
cHRzL2NvcHRzLnB5IGFuZCBhYnNsL2NvcHRzL2dlbmVyYXRlX2NvcHRzLnB5CitpbmNsdWRlKEdF
TkVSQVRFRF9BYnNlaWxDb3B0cykKKworc2V0KEFCU0xfTFNBTl9MSU5LT1BUUyAiIikKK3NldChB
QlNMX0hBVkVfTFNBTiBPRkYpCitzZXQoQUJTTF9ERUZBVUxUX0xJTktPUFRTICIiKQorCitpZigi
JHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IiBTVFJFUVVBTCAiR05VIikKKyAgc2V0KEFCU0xfREVG
QVVMVF9DT1BUUyAiJHtBQlNMX0dDQ19GTEFHU30iKQorICBzZXQoQUJTTF9URVNUX0NPUFRTICIk
e0FCU0xfR0NDX0ZMQUdTfTske0FCU0xfR0NDX1RFU1RfRkxBR1N9IikKKyAgc2V0KEFCU0xfRVhD
RVBUSU9OU19GTEFHICIke0FCU0xfR0NDX0VYQ0VQVElPTlNfRkxBR1N9IikKKyAgc2V0KEFCU0xf
UkFORE9NX1JBTkRFTl9DT1BUUyAiJHtBQlNMX1JBTkRPTV9IV0FFU19YNjRfRkxBR1N9IikKK2Vs
c2VpZigiJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IiBNQVRDSEVTICJDbGFuZyIpCisgICMgTUFU
Q0hFUyBzbyB3ZSBnZXQgYm90aCBDbGFuZyBhbmQgQXBwbGVDbGFuZworICBpZihNU1ZDKQorICAg
ICMgY2xhbmctY2wgaXMgaGFsZiBNU1ZDLCBoYWxmIExMVk0KKyAgICBzZXQoQUJTTF9ERUZBVUxU
X0NPUFRTICIke0FCU0xfQ0xBTkdfQ0xfRkxBR1N9IikKKyAgICBzZXQoQUJTTF9URVNUX0NPUFRT
ICIke0FCU0xfQ0xBTkdfQ0xfRkxBR1N9OyR7QUJTTF9DTEFOR19DTF9URVNUX0ZMQUdTfSIpCisg
ICAgc2V0KEFCU0xfRVhDRVBUSU9OU19GTEFHICIke0FCU0xfQ0xBTkdfQ0xfRVhDRVBUSU9OU19G
TEFHU30iKQorICAgIHNldChBQlNMX0RFRkFVTFRfTElOS09QVFMgIiR7QUJTTF9NU1ZDX0xJTktP
UFRTfSIpCisgICAgc2V0KEFCU0xfUkFORE9NX1JBTkRFTl9DT1BUUyAiJHtBQlNMX1JBTkRPTV9I
V0FFU19NU1ZDX1g2NF9GTEFHU30iKQorICBlbHNlKCkKKyAgICBzZXQoQUJTTF9ERUZBVUxUX0NP
UFRTICIke0FCU0xfTExWTV9GTEFHU30iKQorICAgIHNldChBQlNMX1RFU1RfQ09QVFMgIiR7QUJT
TF9MTFZNX0ZMQUdTfTske0FCU0xfTExWTV9URVNUX0ZMQUdTfSIpCisgICAgc2V0KEFCU0xfRVhD
RVBUSU9OU19GTEFHICIke0FCU0xfTExWTV9FWENFUFRJT05TX0ZMQUdTfSIpCisgICAgc2V0KEFC
U0xfUkFORE9NX1JBTkRFTl9DT1BUUyAiJHtBQlNMX1JBTkRPTV9IV0FFU19YNjRfRkxBR1N9IikK
KyAgICBpZigiJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IiBTVFJFUVVBTCAiQ2xhbmciKQorICAg
ICAgIyBBcHBsZUNsYW5nIGRvZXNuJ3QgaGF2ZSBsc2FuCisgICAgICAjIGh0dHBzOi8vZGV2ZWxv
cGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL2NvZGVfZGlhZ25vc3RpY3MKKyAgICAgIGlmKE5P
VCBDTUFLRV9DWFhfQ09NUElMRVJfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMy41KQorICAgICAgICBz
ZXQoQUJTTF9MU0FOX0xJTktPUFRTICItZnNhbml0aXplPWxlYWsiKQorICAgICAgICBzZXQoQUJT
TF9IQVZFX0xTQU4gT04pCisgICAgICBlbmRpZigpCisgICAgZW5kaWYoKQorICBlbmRpZigpCitl
bHNlaWYoIiR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIk1TVkMiKQorICBzZXQo
QUJTTF9ERUZBVUxUX0NPUFRTICIke0FCU0xfTVNWQ19GTEFHU30iKQorICBzZXQoQUJTTF9URVNU
X0NPUFRTICIke0FCU0xfTVNWQ19GTEFHU307JHtBQlNMX01TVkNfVEVTVF9GTEFHU30iKQorICBz
ZXQoQUJTTF9FWENFUFRJT05TX0ZMQUcgIiR7QUJTTF9NU1ZDX0VYQ0VQVElPTlNfRkxBR1N9IikK
KyAgc2V0KEFCU0xfREVGQVVMVF9MSU5LT1BUUyAiJHtBQlNMX01TVkNfTElOS09QVFN9IikKKyAg
c2V0KEFCU0xfUkFORE9NX1JBTkRFTl9DT1BUUyAiJHtBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2
NF9GTEFHU30iKQorZWxzZSgpCisgIG1lc3NhZ2UoV0FSTklORyAiVW5rbm93biBjb21waWxlcjog
JHtDTUFLRV9DWFhfQ09NUElMRVJ9LiAgQnVpbGRpbmcgd2l0aCBubyBkZWZhdWx0IGZsYWdzIikK
KyAgc2V0KEFCU0xfREVGQVVMVF9DT1BUUyAiIikKKyAgc2V0KEFCU0xfVEVTVF9DT1BUUyAiIikK
KyAgc2V0KEFCU0xfRVhDRVBUSU9OU19GTEFHICIiKQorICBzZXQoQUJTTF9SQU5ET01fUkFOREVO
X0NPUFRTICIiKQorZW5kaWYoKQorCisjIFRoaXMgZmxhZyBpcyB1c2VkIGludGVybmFsbHkgZm9y
IEJhemVsIGJ1aWxkcyBhbmQgaXMga2VwdCBoZXJlIGZvciBjb25zaXN0ZW5jeQorc2V0KEFCU0xf
RVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICIiKQorCitpZigiJHtDTUFLRV9DWFhfU1RBTkRBUkR9
IiBFUVVBTCA5OCkKKyAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQWJzZWlsIHJlcXVpcmVzIGF0IGxl
YXN0IEMrKzExIikKK2Vsc2VpZihOT1QgIiR7Q01BS0VfQ1hYX1NUQU5EQVJEfSIpCisgIG1lc3Nh
Z2UoU1RBVFVTICJObyBDTUFLRV9DWFhfU1RBTkRBUkQgc2V0LCBhc3N1bWluZyAxMSIpCisgIHNl
dChBQlNMX0NYWF9TVEFOREFSRCAxMSkKK2Vsc2UoKQorICBzZXQoQUJTTF9DWFhfU1RBTkRBUkQg
IiR7Q01BS0VfQ1hYX1NUQU5EQVJEfSIpCitlbmRpZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0
cy9HRU5FUkFURURfQWJzZWlsQ29wdHMuY21ha2UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9HRU5FUkFURURfQWJz
ZWlsQ29wdHMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAx
YmQ0MGIyOGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMvR0VORVJBVEVEX0Fic2Vp
bENvcHRzLmNtYWtlCkBAIC0wLDAgKzEsMjM2IEBACisjIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVB
TExZIEVESVQgVEhJUyBGSUxFLgorIworIyAoMSkgRWRpdCBhYnNsL2NvcHRzL2NvcHRzLnB5Lgor
IyAoMikgUnVuIGBweXRob24gPHBhdGhfdG9fYWJzbD4vY29wdHMvZ2VuZXJhdGVfY29wdHMucHlg
LgorCitsaXN0KEFQUEVORCBBQlNMX0NMQU5HX0NMX0VYQ0VQVElPTlNfRkxBR1MKKyAgICAiL1Vf
SEFTX0VYQ0VQVElPTlMiCisgICAgIi9EX0hBU19FWENFUFRJT05TPTEiCisgICAgIi9FSHNjIgor
KQorCitsaXN0KEFQUEVORCBBQlNMX0NMQU5HX0NMX0ZMQUdTCisgICAgIi9XMyIKKyAgICAiLVdu
by1jKys5OC1jb21wYXQtcGVkYW50aWMiCisgICAgIi1Xbm8tY29udmVyc2lvbiIKKyAgICAiLVdu
by1jb3ZlcmVkLXN3aXRjaC1kZWZhdWx0IgorICAgICItV25vLWRlcHJlY2F0ZWQiCisgICAgIi1X
bm8tZGlzYWJsZWQtbWFjcm8tZXhwYW5zaW9uIgorICAgICItV25vLWRvdWJsZS1wcm9tb3Rpb24i
CisgICAgIi1Xbm8tY29tbWEiCisgICAgIi1Xbm8tZXh0cmEtc2VtaSIKKyAgICAiLVduby1leHRy
YS1zZW1pLXN0bXQiCisgICAgIi1Xbm8tcGFja2VkIgorICAgICItV25vLXBhZGRlZCIKKyAgICAi
LVduby1zaWduLWNvbXBhcmUiCisgICAgIi1Xbm8tZmxvYXQtY29udmVyc2lvbiIKKyAgICAiLVdu
by1mbG9hdC1lcXVhbCIKKyAgICAiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIKKyAgICAiLVduby1n
Y2MtY29tcGF0IgorICAgICItV25vLWdsb2JhbC1jb25zdHJ1Y3RvcnMiCisgICAgIi1Xbm8tZXhp
dC10aW1lLWRlc3RydWN0b3JzIgorICAgICItV25vLW5lc3RlZC1hbm9uLXR5cGVzIgorICAgICIt
V25vLW5vbi1tb2R1bGFyLWluY2x1ZGUtaW4tbW9kdWxlIgorICAgICItV25vLW9sZC1zdHlsZS1j
YXN0IgorICAgICItV25vLXJhbmdlLWxvb3AtYW5hbHlzaXMiCisgICAgIi1Xbm8tcmVzZXJ2ZWQt
aWQtbWFjcm8iCisgICAgIi1Xbm8tc2hvcnRlbi02NC10by0zMiIKKyAgICAiLVduby1zd2l0Y2gt
ZW51bSIKKyAgICAiLVduby10aHJlYWQtc2FmZXR5LW5lZ2F0aXZlIgorICAgICItV25vLXVua25v
d24td2FybmluZy1vcHRpb24iCisgICAgIi1Xbm8tdW5yZWFjaGFibGUtY29kZSIKKyAgICAiLVdu
by11bnVzZWQtbWFjcm9zIgorICAgICItV25vLXdlYWstdnRhYmxlcyIKKyAgICAiLVduby16ZXJv
LWFzLW51bGwtcG9pbnRlci1jb25zdGFudCIKKyAgICAiLVdiaXRmaWVsZC1lbnVtLWNvbnZlcnNp
b24iCisgICAgIi1XYm9vbC1jb252ZXJzaW9uIgorICAgICItV2NvbnN0YW50LWNvbnZlcnNpb24i
CisgICAgIi1XZW51bS1jb252ZXJzaW9uIgorICAgICItV2ludC1jb252ZXJzaW9uIgorICAgICIt
V2xpdGVyYWwtY29udmVyc2lvbiIKKyAgICAiLVdub24tbGl0ZXJhbC1udWxsLWNvbnZlcnNpb24i
CisgICAgIi1XbnVsbC1jb252ZXJzaW9uIgorICAgICItV29iamMtbGl0ZXJhbC1jb252ZXJzaW9u
IgorICAgICItV25vLXNpZ24tY29udmVyc2lvbiIKKyAgICAiLVdzdHJpbmctY29udmVyc2lvbiIK
KyAgICAiL0ROT01JTk1BWCIKKyAgICAiL0RXSU4zMl9MRUFOX0FORF9NRUFOIgorICAgICIvRF9D
UlRfU0VDVVJFX05PX1dBUk5JTkdTIgorICAgICIvRF9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTIgor
ICAgICIvRF9FTkFCTEVfRVhURU5ERURfQUxJR05FRF9TVE9SQUdFIgorKQorCitsaXN0KEFQUEVO
RCBBQlNMX0NMQU5HX0NMX1RFU1RfRkxBR1MKKyAgICAiLVduby1jOTktZXh0ZW5zaW9ucyIKKyAg
ICAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICAiLVduby1taXNzaW5nLW5vcmV0
dXJuIgorICAgICItV25vLW1pc3NpbmctcHJvdG90eXBlcyIKKyAgICAiLVduby1taXNzaW5nLXZh
cmlhYmxlLWRlY2xhcmF0aW9ucyIKKyAgICAiLVduby1udWxsLWNvbnZlcnNpb24iCisgICAgIi1X
bm8tc2hhZG93IgorICAgICItV25vLXNoaWZ0LXNpZ24tb3ZlcmZsb3ciCisgICAgIi1Xbm8tc2ln
bi1jb21wYXJlIgorICAgICItV25vLXVudXNlZC1mdW5jdGlvbiIKKyAgICAiLVduby11bnVzZWQt
bWVtYmVyLWZ1bmN0aW9uIgorICAgICItV25vLXVudXNlZC1wYXJhbWV0ZXIiCisgICAgIi1Xbm8t
dW51c2VkLXByaXZhdGUtZmllbGQiCisgICAgIi1Xbm8tdW51c2VkLXRlbXBsYXRlIgorICAgICIt
V25vLXVzZWQtYnV0LW1hcmtlZC11bnVzZWQiCisgICAgIi1Xbm8temVyby1hcy1udWxsLXBvaW50
ZXItY29uc3RhbnQiCisgICAgIi1Xbm8tZ251LXplcm8tdmFyaWFkaWMtbWFjcm8tYXJndW1lbnRz
IgorKQorCitsaXN0KEFQUEVORCBBQlNMX0dDQ19FWENFUFRJT05TX0ZMQUdTCisgICAgIi1mZXhj
ZXB0aW9ucyIKKykKKworbGlzdChBUFBFTkQgQUJTTF9HQ0NfRkxBR1MKKyAgICAiLVdhbGwiCisg
ICAgIi1XZXh0cmEiCisgICAgIi1XY2FzdC1xdWFsIgorICAgICItV2NvbnZlcnNpb24tbnVsbCIK
KyAgICAiLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyIKKyAgICAiLVdvdmVybGVuZ3RoLXN0cmluZ3Mi
CisgICAgIi1XcG9pbnRlci1hcml0aCIKKyAgICAiLVd1bnVzZWQtbG9jYWwtdHlwZWRlZnMiCisg
ICAgIi1XdW51c2VkLXJlc3VsdCIKKyAgICAiLVd2YXJhcmdzIgorICAgICItV3ZsYSIKKyAgICAi
LVd3cml0ZS1zdHJpbmdzIgorICAgICItV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIgor
ICAgICItV25vLXNpZ24tY29tcGFyZSIKKykKKworbGlzdChBUFBFTkQgQUJTTF9HQ0NfVEVTVF9G
TEFHUworICAgICItV25vLWNvbnZlcnNpb24tbnVsbCIKKyAgICAiLVduby1kZXByZWNhdGVkLWRl
Y2xhcmF0aW9ucyIKKyAgICAiLVduby1taXNzaW5nLWRlY2xhcmF0aW9ucyIKKyAgICAiLVduby1z
aWduLWNvbXBhcmUiCisgICAgIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIgorICAgICItV25vLXVudXNl
ZC1wYXJhbWV0ZXIiCisgICAgIi1Xbm8tdW51c2VkLXByaXZhdGUtZmllbGQiCispCisKK2xpc3Qo
QVBQRU5EIEFCU0xfTExWTV9FWENFUFRJT05TX0ZMQUdTCisgICAgIi1mZXhjZXB0aW9ucyIKKykK
KworbGlzdChBUFBFTkQgQUJTTF9MTFZNX0ZMQUdTCisgICAgIi1XYWxsIgorICAgICItV2V4dHJh
IgorICAgICItV2V2ZXJ5dGhpbmciCisgICAgIi1Xbm8tYysrOTgtY29tcGF0LXBlZGFudGljIgor
ICAgICItV25vLWNvbnZlcnNpb24iCisgICAgIi1Xbm8tY292ZXJlZC1zd2l0Y2gtZGVmYXVsdCIK
KyAgICAiLVduby1kZXByZWNhdGVkIgorICAgICItV25vLWRpc2FibGVkLW1hY3JvLWV4cGFuc2lv
biIKKyAgICAiLVduby1kb3VibGUtcHJvbW90aW9uIgorICAgICItV25vLWNvbW1hIgorICAgICIt
V25vLWV4dHJhLXNlbWkiCisgICAgIi1Xbm8tZXh0cmEtc2VtaS1zdG10IgorICAgICItV25vLXBh
Y2tlZCIKKyAgICAiLVduby1wYWRkZWQiCisgICAgIi1Xbm8tc2lnbi1jb21wYXJlIgorICAgICIt
V25vLWZsb2F0LWNvbnZlcnNpb24iCisgICAgIi1Xbm8tZmxvYXQtZXF1YWwiCisgICAgIi1Xbm8t
Zm9ybWF0LW5vbmxpdGVyYWwiCisgICAgIi1Xbm8tZ2NjLWNvbXBhdCIKKyAgICAiLVduby1nbG9i
YWwtY29uc3RydWN0b3JzIgorICAgICItV25vLWV4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICAi
LVduby1uZXN0ZWQtYW5vbi10eXBlcyIKKyAgICAiLVduby1ub24tbW9kdWxhci1pbmNsdWRlLWlu
LW1vZHVsZSIKKyAgICAiLVduby1vbGQtc3R5bGUtY2FzdCIKKyAgICAiLVduby1yYW5nZS1sb29w
LWFuYWx5c2lzIgorICAgICItV25vLXJlc2VydmVkLWlkLW1hY3JvIgorICAgICItV25vLXNob3J0
ZW4tNjQtdG8tMzIiCisgICAgIi1Xbm8tc3dpdGNoLWVudW0iCisgICAgIi1Xbm8tdGhyZWFkLXNh
ZmV0eS1uZWdhdGl2ZSIKKyAgICAiLVduby11bmtub3duLXdhcm5pbmctb3B0aW9uIgorICAgICIt
V25vLXVucmVhY2hhYmxlLWNvZGUiCisgICAgIi1Xbm8tdW51c2VkLW1hY3JvcyIKKyAgICAiLVdu
by13ZWFrLXZ0YWJsZXMiCisgICAgIi1Xbm8temVyby1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQi
CisgICAgIi1XYml0ZmllbGQtZW51bS1jb252ZXJzaW9uIgorICAgICItV2Jvb2wtY29udmVyc2lv
biIKKyAgICAiLVdjb25zdGFudC1jb252ZXJzaW9uIgorICAgICItV2VudW0tY29udmVyc2lvbiIK
KyAgICAiLVdpbnQtY29udmVyc2lvbiIKKyAgICAiLVdsaXRlcmFsLWNvbnZlcnNpb24iCisgICAg
Ii1Xbm9uLWxpdGVyYWwtbnVsbC1jb252ZXJzaW9uIgorICAgICItV251bGwtY29udmVyc2lvbiIK
KyAgICAiLVdvYmpjLWxpdGVyYWwtY29udmVyc2lvbiIKKyAgICAiLVduby1zaWduLWNvbnZlcnNp
b24iCisgICAgIi1Xc3RyaW5nLWNvbnZlcnNpb24iCispCisKK2xpc3QoQVBQRU5EIEFCU0xfTExW
TV9URVNUX0ZMQUdTCisgICAgIi1Xbm8tYzk5LWV4dGVuc2lvbnMiCisgICAgIi1Xbm8tZGVwcmVj
YXRlZC1kZWNsYXJhdGlvbnMiCisgICAgIi1Xbm8tbWlzc2luZy1ub3JldHVybiIKKyAgICAiLVdu
by1taXNzaW5nLXByb3RvdHlwZXMiCisgICAgIi1Xbm8tbWlzc2luZy12YXJpYWJsZS1kZWNsYXJh
dGlvbnMiCisgICAgIi1Xbm8tbnVsbC1jb252ZXJzaW9uIgorICAgICItV25vLXNoYWRvdyIKKyAg
ICAiLVduby1zaGlmdC1zaWduLW92ZXJmbG93IgorICAgICItV25vLXNpZ24tY29tcGFyZSIKKyAg
ICAiLVduby11bnVzZWQtZnVuY3Rpb24iCisgICAgIi1Xbm8tdW51c2VkLW1lbWJlci1mdW5jdGlv
biIKKyAgICAiLVduby11bnVzZWQtcGFyYW1ldGVyIgorICAgICItV25vLXVudXNlZC1wcml2YXRl
LWZpZWxkIgorICAgICItV25vLXVudXNlZC10ZW1wbGF0ZSIKKyAgICAiLVduby11c2VkLWJ1dC1t
YXJrZWQtdW51c2VkIgorICAgICItV25vLXplcm8tYXMtbnVsbC1wb2ludGVyLWNvbnN0YW50Igor
ICAgICItV25vLWdudS16ZXJvLXZhcmlhZGljLW1hY3JvLWFyZ3VtZW50cyIKKykKKworbGlzdChB
UFBFTkQgQUJTTF9NU1ZDX0VYQ0VQVElPTlNfRkxBR1MKKyAgICAiL1VfSEFTX0VYQ0VQVElPTlMi
CisgICAgIi9EX0hBU19FWENFUFRJT05TPTEiCisgICAgIi9FSHNjIgorKQorCitsaXN0KEFQUEVO
RCBBQlNMX01TVkNfRkxBR1MKKyAgICAiL1czIgorICAgICIvRE5PTUlOTUFYIgorICAgICIvRFdJ
TjMyX0xFQU5fQU5EX01FQU4iCisgICAgIi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiCisgICAg
Ii9EX1NDTF9TRUNVUkVfTk9fV0FSTklOR1MiCisgICAgIi9EX0VOQUJMRV9FWFRFTkRFRF9BTElH
TkVEX1NUT1JBR0UiCisgICAgIi93ZDQwMDUiCisgICAgIi93ZDQwNjgiCisgICAgIi93ZDQxODAi
CisgICAgIi93ZDQyNDQiCisgICAgIi93ZDQyNjciCisgICAgIi93ZDQ1MDMiCisgICAgIi93ZDQ4
MDAiCispCisKK2xpc3QoQVBQRU5EIEFCU0xfTVNWQ19MSU5LT1BUUworICAgICItaWdub3JlOjQy
MjEiCispCisKK2xpc3QoQVBQRU5EIEFCU0xfTVNWQ19URVNUX0ZMQUdTCisgICAgIi93ZDQwMTgi
CisgICAgIi93ZDQxMDEiCisgICAgIi93ZDQ1MDMiCisgICAgIi93ZDQ5OTYiCisgICAgIi9ETk9N
SU5NQVgiCispCisKK2xpc3QoQVBQRU5EIEFCU0xfUkFORE9NX0hXQUVTX0FSTTMyX0ZMQUdTCisg
ICAgIi1tZnB1PW5lb24iCispCisKK2xpc3QoQVBQRU5EIEFCU0xfUkFORE9NX0hXQUVTX0FSTTY0
X0ZMQUdTCisgICAgIi1tYXJjaD1hcm12OC1hK2NyeXB0byIKKykKKworbGlzdChBUFBFTkQgQUJT
TF9SQU5ET01fSFdBRVNfTVNWQ19YNjRfRkxBR1MKKyAgICAiL08yIgorICAgICIvT2IyIgorKQor
CitsaXN0KEFQUEVORCBBQlNMX1JBTkRPTV9IV0FFU19YNjRfRkxBR1MKKyAgICAiLW1hZXMiCisg
ICAgIi1tc3NlNC4xIgorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMvR0VORVJBVEVEX2NvcHRz
LmJ6bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvcHRzL0dFTkVSQVRFRF9jb3B0cy5iemwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgyZjMzMmY0OWNkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29wdHMvR0VORVJBVEVEX2NvcHRzLmJ6bApAQCAtMCwwICsxLDIzNyBAQAorIiIiR0VORVJB
VEVEISBETyBOT1QgTUFOVUFMTFkgRURJVCBUSElTIEZJTEUuCisKKygxKSBFZGl0IGFic2wvY29w
dHMvY29wdHMucHkuCisoMikgUnVuIGBweXRob24gPHBhdGhfdG9fYWJzbD4vY29wdHMvZ2VuZXJh
dGVfY29wdHMucHlgLgorIiIiCisKK0FCU0xfQ0xBTkdfQ0xfRVhDRVBUSU9OU19GTEFHUyA9IFsK
KyAgICAiL1VfSEFTX0VYQ0VQVElPTlMiLAorICAgICIvRF9IQVNfRVhDRVBUSU9OUz0xIiwKKyAg
ICAiL0VIc2MiLAorXQorCitBQlNMX0NMQU5HX0NMX0ZMQUdTID0gWworICAgICIvVzMiLAorICAg
ICItV25vLWMrKzk4LWNvbXBhdC1wZWRhbnRpYyIsCisgICAgIi1Xbm8tY29udmVyc2lvbiIsCisg
ICAgIi1Xbm8tY292ZXJlZC1zd2l0Y2gtZGVmYXVsdCIsCisgICAgIi1Xbm8tZGVwcmVjYXRlZCIs
CisgICAgIi1Xbm8tZGlzYWJsZWQtbWFjcm8tZXhwYW5zaW9uIiwKKyAgICAiLVduby1kb3VibGUt
cHJvbW90aW9uIiwKKyAgICAiLVduby1jb21tYSIsCisgICAgIi1Xbm8tZXh0cmEtc2VtaSIsCisg
ICAgIi1Xbm8tZXh0cmEtc2VtaS1zdG10IiwKKyAgICAiLVduby1wYWNrZWQiLAorICAgICItV25v
LXBhZGRlZCIsCisgICAgIi1Xbm8tc2lnbi1jb21wYXJlIiwKKyAgICAiLVduby1mbG9hdC1jb252
ZXJzaW9uIiwKKyAgICAiLVduby1mbG9hdC1lcXVhbCIsCisgICAgIi1Xbm8tZm9ybWF0LW5vbmxp
dGVyYWwiLAorICAgICItV25vLWdjYy1jb21wYXQiLAorICAgICItV25vLWdsb2JhbC1jb25zdHJ1
Y3RvcnMiLAorICAgICItV25vLWV4aXQtdGltZS1kZXN0cnVjdG9ycyIsCisgICAgIi1Xbm8tbmVz
dGVkLWFub24tdHlwZXMiLAorICAgICItV25vLW5vbi1tb2R1bGFyLWluY2x1ZGUtaW4tbW9kdWxl
IiwKKyAgICAiLVduby1vbGQtc3R5bGUtY2FzdCIsCisgICAgIi1Xbm8tcmFuZ2UtbG9vcC1hbmFs
eXNpcyIsCisgICAgIi1Xbm8tcmVzZXJ2ZWQtaWQtbWFjcm8iLAorICAgICItV25vLXNob3J0ZW4t
NjQtdG8tMzIiLAorICAgICItV25vLXN3aXRjaC1lbnVtIiwKKyAgICAiLVduby10aHJlYWQtc2Fm
ZXR5LW5lZ2F0aXZlIiwKKyAgICAiLVduby11bmtub3duLXdhcm5pbmctb3B0aW9uIiwKKyAgICAi
LVduby11bnJlYWNoYWJsZS1jb2RlIiwKKyAgICAiLVduby11bnVzZWQtbWFjcm9zIiwKKyAgICAi
LVduby13ZWFrLXZ0YWJsZXMiLAorICAgICItV25vLXplcm8tYXMtbnVsbC1wb2ludGVyLWNvbnN0
YW50IiwKKyAgICAiLVdiaXRmaWVsZC1lbnVtLWNvbnZlcnNpb24iLAorICAgICItV2Jvb2wtY29u
dmVyc2lvbiIsCisgICAgIi1XY29uc3RhbnQtY29udmVyc2lvbiIsCisgICAgIi1XZW51bS1jb252
ZXJzaW9uIiwKKyAgICAiLVdpbnQtY29udmVyc2lvbiIsCisgICAgIi1XbGl0ZXJhbC1jb252ZXJz
aW9uIiwKKyAgICAiLVdub24tbGl0ZXJhbC1udWxsLWNvbnZlcnNpb24iLAorICAgICItV251bGwt
Y29udmVyc2lvbiIsCisgICAgIi1Xb2JqYy1saXRlcmFsLWNvbnZlcnNpb24iLAorICAgICItV25v
LXNpZ24tY29udmVyc2lvbiIsCisgICAgIi1Xc3RyaW5nLWNvbnZlcnNpb24iLAorICAgICIvRE5P
TUlOTUFYIiwKKyAgICAiL0RXSU4zMl9MRUFOX0FORF9NRUFOIiwKKyAgICAiL0RfQ1JUX1NFQ1VS
RV9OT19XQVJOSU5HUyIsCisgICAgIi9EX1NDTF9TRUNVUkVfTk9fV0FSTklOR1MiLAorICAgICIv
RF9FTkFCTEVfRVhURU5ERURfQUxJR05FRF9TVE9SQUdFIiwKK10KKworQUJTTF9DTEFOR19DTF9U
RVNUX0ZMQUdTID0gWworICAgICItV25vLWM5OS1leHRlbnNpb25zIiwKKyAgICAiLVduby1kZXBy
ZWNhdGVkLWRlY2xhcmF0aW9ucyIsCisgICAgIi1Xbm8tbWlzc2luZy1ub3JldHVybiIsCisgICAg
Ii1Xbm8tbWlzc2luZy1wcm90b3R5cGVzIiwKKyAgICAiLVduby1taXNzaW5nLXZhcmlhYmxlLWRl
Y2xhcmF0aW9ucyIsCisgICAgIi1Xbm8tbnVsbC1jb252ZXJzaW9uIiwKKyAgICAiLVduby1zaGFk
b3ciLAorICAgICItV25vLXNoaWZ0LXNpZ24tb3ZlcmZsb3ciLAorICAgICItV25vLXNpZ24tY29t
cGFyZSIsCisgICAgIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKyAgICAiLVduby11bnVzZWQtbWVt
YmVyLWZ1bmN0aW9uIiwKKyAgICAiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKKyAgICAiLVduby11
bnVzZWQtcHJpdmF0ZS1maWVsZCIsCisgICAgIi1Xbm8tdW51c2VkLXRlbXBsYXRlIiwKKyAgICAi
LVduby11c2VkLWJ1dC1tYXJrZWQtdW51c2VkIiwKKyAgICAiLVduby16ZXJvLWFzLW51bGwtcG9p
bnRlci1jb25zdGFudCIsCisgICAgIi1Xbm8tZ251LXplcm8tdmFyaWFkaWMtbWFjcm8tYXJndW1l
bnRzIiwKK10KKworQUJTTF9HQ0NfRVhDRVBUSU9OU19GTEFHUyA9IFsKKyAgICAiLWZleGNlcHRp
b25zIiwKK10KKworQUJTTF9HQ0NfRkxBR1MgPSBbCisgICAgIi1XYWxsIiwKKyAgICAiLVdleHRy
YSIsCisgICAgIi1XY2FzdC1xdWFsIiwKKyAgICAiLVdjb252ZXJzaW9uLW51bGwiLAorICAgICIt
V21pc3NpbmctZGVjbGFyYXRpb25zIiwKKyAgICAiLVdvdmVybGVuZ3RoLXN0cmluZ3MiLAorICAg
ICItV3BvaW50ZXItYXJpdGgiLAorICAgICItV3VudXNlZC1sb2NhbC10eXBlZGVmcyIsCisgICAg
Ii1XdW51c2VkLXJlc3VsdCIsCisgICAgIi1XdmFyYXJncyIsCisgICAgIi1XdmxhIiwKKyAgICAi
LVd3cml0ZS1zdHJpbmdzIiwKKyAgICAiLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIs
CisgICAgIi1Xbm8tc2lnbi1jb21wYXJlIiwKK10KKworQUJTTF9HQ0NfVEVTVF9GTEFHUyA9IFsK
KyAgICAiLVduby1jb252ZXJzaW9uLW51bGwiLAorICAgICItV25vLWRlcHJlY2F0ZWQtZGVjbGFy
YXRpb25zIiwKKyAgICAiLVduby1taXNzaW5nLWRlY2xhcmF0aW9ucyIsCisgICAgIi1Xbm8tc2ln
bi1jb21wYXJlIiwKKyAgICAiLVduby11bnVzZWQtZnVuY3Rpb24iLAorICAgICItV25vLXVudXNl
ZC1wYXJhbWV0ZXIiLAorICAgICItV25vLXVudXNlZC1wcml2YXRlLWZpZWxkIiwKK10KKworQUJT
TF9MTFZNX0VYQ0VQVElPTlNfRkxBR1MgPSBbCisgICAgIi1mZXhjZXB0aW9ucyIsCitdCisKK0FC
U0xfTExWTV9GTEFHUyA9IFsKKyAgICAiLVdhbGwiLAorICAgICItV2V4dHJhIiwKKyAgICAiLVdl
dmVyeXRoaW5nIiwKKyAgICAiLVduby1jKys5OC1jb21wYXQtcGVkYW50aWMiLAorICAgICItV25v
LWNvbnZlcnNpb24iLAorICAgICItV25vLWNvdmVyZWQtc3dpdGNoLWRlZmF1bHQiLAorICAgICIt
V25vLWRlcHJlY2F0ZWQiLAorICAgICItV25vLWRpc2FibGVkLW1hY3JvLWV4cGFuc2lvbiIsCisg
ICAgIi1Xbm8tZG91YmxlLXByb21vdGlvbiIsCisgICAgIi1Xbm8tY29tbWEiLAorICAgICItV25v
LWV4dHJhLXNlbWkiLAorICAgICItV25vLWV4dHJhLXNlbWktc3RtdCIsCisgICAgIi1Xbm8tcGFj
a2VkIiwKKyAgICAiLVduby1wYWRkZWQiLAorICAgICItV25vLXNpZ24tY29tcGFyZSIsCisgICAg
Ii1Xbm8tZmxvYXQtY29udmVyc2lvbiIsCisgICAgIi1Xbm8tZmxvYXQtZXF1YWwiLAorICAgICIt
V25vLWZvcm1hdC1ub25saXRlcmFsIiwKKyAgICAiLVduby1nY2MtY29tcGF0IiwKKyAgICAiLVdu
by1nbG9iYWwtY29uc3RydWN0b3JzIiwKKyAgICAiLVduby1leGl0LXRpbWUtZGVzdHJ1Y3RvcnMi
LAorICAgICItV25vLW5lc3RlZC1hbm9uLXR5cGVzIiwKKyAgICAiLVduby1ub24tbW9kdWxhci1p
bmNsdWRlLWluLW1vZHVsZSIsCisgICAgIi1Xbm8tb2xkLXN0eWxlLWNhc3QiLAorICAgICItV25v
LXJhbmdlLWxvb3AtYW5hbHlzaXMiLAorICAgICItV25vLXJlc2VydmVkLWlkLW1hY3JvIiwKKyAg
ICAiLVduby1zaG9ydGVuLTY0LXRvLTMyIiwKKyAgICAiLVduby1zd2l0Y2gtZW51bSIsCisgICAg
Ii1Xbm8tdGhyZWFkLXNhZmV0eS1uZWdhdGl2ZSIsCisgICAgIi1Xbm8tdW5rbm93bi13YXJuaW5n
LW9wdGlvbiIsCisgICAgIi1Xbm8tdW5yZWFjaGFibGUtY29kZSIsCisgICAgIi1Xbm8tdW51c2Vk
LW1hY3JvcyIsCisgICAgIi1Xbm8td2Vhay12dGFibGVzIiwKKyAgICAiLVduby16ZXJvLWFzLW51
bGwtcG9pbnRlci1jb25zdGFudCIsCisgICAgIi1XYml0ZmllbGQtZW51bS1jb252ZXJzaW9uIiwK
KyAgICAiLVdib29sLWNvbnZlcnNpb24iLAorICAgICItV2NvbnN0YW50LWNvbnZlcnNpb24iLAor
ICAgICItV2VudW0tY29udmVyc2lvbiIsCisgICAgIi1XaW50LWNvbnZlcnNpb24iLAorICAgICIt
V2xpdGVyYWwtY29udmVyc2lvbiIsCisgICAgIi1Xbm9uLWxpdGVyYWwtbnVsbC1jb252ZXJzaW9u
IiwKKyAgICAiLVdudWxsLWNvbnZlcnNpb24iLAorICAgICItV29iamMtbGl0ZXJhbC1jb252ZXJz
aW9uIiwKKyAgICAiLVduby1zaWduLWNvbnZlcnNpb24iLAorICAgICItV3N0cmluZy1jb252ZXJz
aW9uIiwKK10KKworQUJTTF9MTFZNX1RFU1RfRkxBR1MgPSBbCisgICAgIi1Xbm8tYzk5LWV4dGVu
c2lvbnMiLAorICAgICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIiwKKyAgICAiLVduby1t
aXNzaW5nLW5vcmV0dXJuIiwKKyAgICAiLVduby1taXNzaW5nLXByb3RvdHlwZXMiLAorICAgICIt
V25vLW1pc3NpbmctdmFyaWFibGUtZGVjbGFyYXRpb25zIiwKKyAgICAiLVduby1udWxsLWNvbnZl
cnNpb24iLAorICAgICItV25vLXNoYWRvdyIsCisgICAgIi1Xbm8tc2hpZnQtc2lnbi1vdmVyZmxv
dyIsCisgICAgIi1Xbm8tc2lnbi1jb21wYXJlIiwKKyAgICAiLVduby11bnVzZWQtZnVuY3Rpb24i
LAorICAgICItV25vLXVudXNlZC1tZW1iZXItZnVuY3Rpb24iLAorICAgICItV25vLXVudXNlZC1w
YXJhbWV0ZXIiLAorICAgICItV25vLXVudXNlZC1wcml2YXRlLWZpZWxkIiwKKyAgICAiLVduby11
bnVzZWQtdGVtcGxhdGUiLAorICAgICItV25vLXVzZWQtYnV0LW1hcmtlZC11bnVzZWQiLAorICAg
ICItV25vLXplcm8tYXMtbnVsbC1wb2ludGVyLWNvbnN0YW50IiwKKyAgICAiLVduby1nbnUtemVy
by12YXJpYWRpYy1tYWNyby1hcmd1bWVudHMiLAorXQorCitBQlNMX01TVkNfRVhDRVBUSU9OU19G
TEFHUyA9IFsKKyAgICAiL1VfSEFTX0VYQ0VQVElPTlMiLAorICAgICIvRF9IQVNfRVhDRVBUSU9O
Uz0xIiwKKyAgICAiL0VIc2MiLAorXQorCitBQlNMX01TVkNfRkxBR1MgPSBbCisgICAgIi9XMyIs
CisgICAgIi9ETk9NSU5NQVgiLAorICAgICIvRFdJTjMyX0xFQU5fQU5EX01FQU4iLAorICAgICIv
RF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiwKKyAgICAiL0RfU0NMX1NFQ1VSRV9OT19XQVJOSU5H
UyIsCisgICAgIi9EX0VOQUJMRV9FWFRFTkRFRF9BTElHTkVEX1NUT1JBR0UiLAorICAgICIvd2Q0
MDA1IiwKKyAgICAiL3dkNDA2OCIsCisgICAgIi93ZDQxODAiLAorICAgICIvd2Q0MjQ0IiwKKyAg
ICAiL3dkNDI2NyIsCisgICAgIi93ZDQ1MDMiLAorICAgICIvd2Q0ODAwIiwKK10KKworQUJTTF9N
U1ZDX0xJTktPUFRTID0gWworICAgICItaWdub3JlOjQyMjEiLAorXQorCitBQlNMX01TVkNfVEVT
VF9GTEFHUyA9IFsKKyAgICAiL3dkNDAxOCIsCisgICAgIi93ZDQxMDEiLAorICAgICIvd2Q0NTAz
IiwKKyAgICAiL3dkNDk5NiIsCisgICAgIi9ETk9NSU5NQVgiLAorXQorCitBQlNMX1JBTkRPTV9I
V0FFU19BUk0zMl9GTEFHUyA9IFsKKyAgICAiLW1mcHU9bmVvbiIsCitdCisKK0FCU0xfUkFORE9N
X0hXQUVTX0FSTTY0X0ZMQUdTID0gWworICAgICItbWFyY2g9YXJtdjgtYStjcnlwdG8iLAorXQor
CitBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2NF9GTEFHUyA9IFsKKyAgICAiL08yIiwKKyAgICAi
L09iMiIsCitdCisKK0FCU0xfUkFORE9NX0hXQUVTX1g2NF9GTEFHUyA9IFsKKyAgICAiLW1hZXMi
LAorICAgICItbXNzZTQuMSIsCitdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9jb25maWd1cmVf
Y29wdHMuYnpsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGM0ZWZlNzdjMjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb3B0cy9jb25maWd1cmVfY29wdHMuYnpsCkBAIC0wLDAgKzEsODkgQEAKKyIiImFi
c2wgc3BlY2lmaWMgY29wdHMuCisKK1RoaXMgZmlsZSBzaW1wbHkgc2VsZWN0cyB0aGUgY29ycmVj
dCBvcHRpb25zIGZyb20gdGhlIGdlbmVyYXRlZCBmaWxlcy4gIFRvCitjaGFuZ2UgQWJzZWlsIGNv
cHRzLCBlZGl0IGFic2wvY29wdHMvY29wdHMucHkKKyIiIgorCitsb2FkKAorICAgICIvL2Fic2w6
Y29wdHMvR0VORVJBVEVEX2NvcHRzLmJ6bCIsCisgICAgIkFCU0xfR0NDX0VYQ0VQVElPTlNfRkxB
R1MiLAorICAgICJBQlNMX0dDQ19GTEFHUyIsCisgICAgIkFCU0xfR0NDX1RFU1RfRkxBR1MiLAor
ICAgICJBQlNMX0xMVk1fRVhDRVBUSU9OU19GTEFHUyIsCisgICAgIkFCU0xfTExWTV9GTEFHUyIs
CisgICAgIkFCU0xfTExWTV9URVNUX0ZMQUdTIiwKKyAgICAiQUJTTF9NU1ZDX0VYQ0VQVElPTlNf
RkxBR1MiLAorICAgICJBQlNMX01TVkNfRkxBR1MiLAorICAgICJBQlNMX01TVkNfTElOS09QVFMi
LAorICAgICJBQlNMX01TVkNfVEVTVF9GTEFHUyIsCisgICAgIkFCU0xfUkFORE9NX0hXQUVTX0FS
TTMyX0ZMQUdTIiwKKyAgICAiQUJTTF9SQU5ET01fSFdBRVNfQVJNNjRfRkxBR1MiLAorICAgICJB
QlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2NF9GTEFHUyIsCisgICAgIkFCU0xfUkFORE9NX0hXQUVT
X1g2NF9GTEFHUyIsCispCisKK0FCU0xfREVGQVVMVF9DT1BUUyA9IHNlbGVjdCh7CisgICAgIi8v
YWJzbDp3aW5kb3dzIjogQUJTTF9NU1ZDX0ZMQUdTLAorICAgICIvL2Fic2w6bGx2bV9jb21waWxl
ciI6IEFCU0xfTExWTV9GTEFHUywKKyAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBBQlNMX0dD
Q19GTEFHUywKK30pCisKKyMgaW4gYWJzZW5jZSBvZiBtb2R1bGVzICgtLWNvbXBpbGVyPWdjYyBv
ciAtYyBvcHQpLCBjY190ZXN0cyBsZWFrIHRoZWlyIGNvcHRzCisjIHRvIHRoZWlyIChpbmNsdWRl
ZCBoZWFkZXIpIGRlcGVuZGVuY2llcyBhbmQgZmFpbCB0byBidWlsZCBvdXRzaWRlIGFic2wKK0FC
U0xfVEVTVF9DT1BUUyA9IEFCU0xfREVGQVVMVF9DT1BUUyArIHNlbGVjdCh7CisgICAgIi8vYWJz
bDp3aW5kb3dzIjogQUJTTF9NU1ZDX1RFU1RfRkxBR1MsCisgICAgIi8vYWJzbDpsbHZtX2NvbXBp
bGVyIjogQUJTTF9MTFZNX1RFU1RfRkxBR1MsCisgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0Ijog
QUJTTF9HQ0NfVEVTVF9GTEFHUywKK30pCisKK0FCU0xfRVhDRVBUSU9OU19GTEFHID0gc2VsZWN0
KHsKKyAgICAiLy9hYnNsOndpbmRvd3MiOiBBQlNMX01TVkNfRVhDRVBUSU9OU19GTEFHUywKKyAg
ICAiLy9hYnNsOmxsdm1fY29tcGlsZXIiOiBBQlNMX0xMVk1fRVhDRVBUSU9OU19GTEFHUywKKyAg
ICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBBQlNMX0dDQ19FWENFUFRJT05TX0ZMQUdTLAorfSkK
KworQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgPSBzZWxlY3QoeworICAgICIvL2NvbmRp
dGlvbnM6ZGVmYXVsdCI6IFtdLAorfSkKKworQUJTTF9ERUZBVUxUX0xJTktPUFRTID0gc2VsZWN0
KHsKKyAgICAiLy9hYnNsOndpbmRvd3MiOiBBQlNMX01TVkNfTElOS09QVFMsCisgICAgIi8vY29u
ZGl0aW9uczpkZWZhdWx0IjogW10sCit9KQorCisjIEFCU0xfUkFORE9NX1JBTkRFTl9DT1BUUyBi
bGF6ZSBjb3B0cyBmbGFncyB3aGljaCBhcmUgcmVxdWlyZWQgYnkgZWFjaAorIyBlbnZpcm9ubWVu
dCB0byBidWlsZCBhbiBhY2NlbGVyYXRlZCBSYW5kZW5Id0FlcyBsaWJyYXJ5LgorQUJTTF9SQU5E
T01fUkFOREVOX0NPUFRTID0gc2VsZWN0KHsKKyAgICAjIEFQUExFCisgICAgIjpjcHVfZGFyd2lu
X3g4Nl82NCI6IEFCU0xfUkFORE9NX0hXQUVTX1g2NF9GTEFHUywKKyAgICAiOmNwdV9kYXJ3aW4i
OiBBQlNMX1JBTkRPTV9IV0FFU19YNjRfRkxBR1MsCisgICAgIjpjcHVfeDY0X3dpbmRvd3NfbXN2
YyI6IEFCU0xfUkFORE9NX0hXQUVTX01TVkNfWDY0X0ZMQUdTLAorICAgICI6Y3B1X3g2NF93aW5k
b3dzIjogQUJTTF9SQU5ET01fSFdBRVNfTVNWQ19YNjRfRkxBR1MsCisgICAgIjpjcHVfaGFzd2Vs
bCI6IEFCU0xfUkFORE9NX0hXQUVTX1g2NF9GTEFHUywKKyAgICAiOmNwdV9wcGMiOiBbIi1tY3J5
cHRvIl0sCisKKyAgICAjIFN1cHBvcnRlZCBieSBkZWZhdWx0IG9yIHVuc3VwcG9ydGVkLgorICAg
ICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFtdLAorfSkKKworIyBhYnNsX3JhbmRvbV9yYW5kZW5f
Y29wdHNfaW5pdDoKKyMgIEluaXRpYWxpemUgdGhlIGNvbmZpZyB0YXJnZXRzIGJhc2VkIG9uIGNw
dSwgb3MsIGV0Yy4gdXNlZCB0byBzZWxlY3QKKyMgIHRoZSByZXF1aXJlZCB2YWx1ZXMgZm9yIEFC
U0xfUkFORE9NX1JBTkRFTl9DT1BUUworZGVmIGFic2xfcmFuZG9tX3JhbmRlbl9jb3B0c19pbml0
KCk6CisgICAgIiIiSW5pdGlhbGl6ZSB0aGUgY29uZmlnX3NldHRpbmdzIHVzZWQgYnkgQUJTTF9S
QU5ET01fUkFOREVOX0NPUFRTLiIiIgorCisgICAgIyBDUFUgY29uZmlncy4KKyAgICAjIFRoZXNl
IGNvbmZpZ3MgaGF2ZSBjb25zaXN0ZW50IGZsYWdzIHRvIGVuYWJsZSBIV0FFUyBpbnRzcnVjdGlv
bnMuCisgICAgY3B1X2NvbmZpZ3MgPSBbCisgICAgICAgICJwcGMiLAorICAgICAgICAiaGFzd2Vs
bCIsCisgICAgICAgICJkYXJ3aW5feDg2XzY0IiwKKyAgICAgICAgImRhcndpbiIsCisgICAgICAg
ICJ4NjRfd2luZG93c19tc3ZjIiwKKyAgICAgICAgIng2NF93aW5kb3dzIiwKKyAgICBdCisgICAg
Zm9yIGNwdSBpbiBjcHVfY29uZmlnczoKKyAgICAgICAgbmF0aXZlLmNvbmZpZ19zZXR0aW5nKAor
ICAgICAgICAgICAgbmFtZSA9ICJjcHVfJXMiICUgY3B1LAorICAgICAgICAgICAgdmFsdWVzID0g
eyJjcHUiOiBjcHV9LAorICAgICAgICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9jb3B0cy5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvcHRzL2NvcHRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi4wNjhhYmNlYmNjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL2NvcHRz
LnB5CkBAIC0wLDAgKzEsMjE0IEBACisiIiJBYnNlaWwgY29tcGlsZXIgb3B0aW9ucy4KKworVGhp
cyBpcyB0aGUgc291cmNlIG9mIHRydXRoIGZvciBBYnNlaWwgY29tcGlsZXIgb3B0aW9ucy4gIFRv
IG1vZGlmeSBBYnNlaWwKK2NvbXBpbGF0aW9uIG9wdGlvbnM6CisKKyAgKDEpIEVkaXQgdGhlIGFw
cHJvcHJpYXRlIGxpc3QgaW4gdGhpcyBmaWxlIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybSB0aGUgZmxh
ZyBpcworICAgICAgbmVlZGVkIG9uLgorICAoMikgUnVuIGA8cGF0aF90b19hYnNsPi9jb3B0cy9n
ZW5lcmF0ZV9jb3B0cy5weWAuCisKK1RoZSBnZW5lcmF0ZWQgY29wdHMgYXJlIGNvbnN1bWVkIGJ5
IGNvbmZpZ3VyZV9jb3B0cy5iemwgYW5kCitBYnNlaWxDb25maWd1cmVDb3B0cy5jbWFrZS4KKyIi
IgorCisjIC9XYWxsIHdpdGggbXN2YyBpbmNsdWRlcyB1bmhlbHBmdWwgd2FybmluZ3Mgc3VjaCBh
cyBDNDcxMSwgQzQ3MTAsIC4uLgorTVNWQ19CSUdfV0FSTklOR19GTEFHUyA9IFsKKyAgICAiL1cz
IiwKK10KKworTExWTV9CSUdfV0FSTklOR19GTEFHUyA9IFsKKyAgICAiLVdhbGwiLAorICAgICIt
V2V4dHJhIiwKKyAgICAiLVdldmVyeXRoaW5nIiwKK10KKworIyBEb2NzIG9uIHNpbmdsZSBmbGFn
cyBpcyBwcmVjZWRlZCBieSBhIGNvbW1lbnQuCisjIERvY3Mgb24gZ3JvdXBzIG9mIGZsYWdzIGlz
IHByZWNlZGVkIGJ5ICMjIy4KK0xMVk1fRElTQUJMRV9XQVJOSU5HU19GTEFHUyA9IFsKKyAgICAj
IEFic2VpbCBkb2VzIG5vdCBzdXBwb3J0IEMrKzk4CisgICAgIi1Xbm8tYysrOTgtY29tcGF0LXBl
ZGFudGljIiwKKyAgICAjIFR1cm5zIG9mZiBhbGwgaW1wbGljaXQgY29udmVyc2lvbiB3YXJuaW5n
cy4gTW9zdCBhcmUgcmUtZW5hYmxlZCBiZWxvdy4KKyAgICAiLVduby1jb252ZXJzaW9uIiwKKyAg
ICAiLVduby1jb3ZlcmVkLXN3aXRjaC1kZWZhdWx0IiwKKyAgICAiLVduby1kZXByZWNhdGVkIiwK
KyAgICAiLVduby1kaXNhYmxlZC1tYWNyby1leHBhbnNpb24iLAorICAgICItV25vLWRvdWJsZS1w
cm9tb3Rpb24iLAorICAgICMjIworICAgICMgVHVybmVkIG9mZiBhcyB0aGV5IGluY2x1ZGUgdmFs
aWQgQysrIGNvZGUuCisgICAgIi1Xbm8tY29tbWEiLAorICAgICItV25vLWV4dHJhLXNlbWkiLAor
ICAgICItV25vLWV4dHJhLXNlbWktc3RtdCIsCisgICAgIi1Xbm8tcGFja2VkIiwKKyAgICAiLVdu
by1wYWRkZWQiLAorICAgICMjIworICAgICMgR29vZ2xlIHN0eWxlIGRvZXMgbm90IHVzZSB1bnNp
Z25lZCBpbnRlZ2VycywgdGhvdWdoIFNUTCBjb250YWluZXJzCisgICAgIyBoYXZlIHVuc2lnbmVk
IHR5cGVzLgorICAgICItV25vLXNpZ24tY29tcGFyZSIsCisgICAgIyMjCisgICAgIi1Xbm8tZmxv
YXQtY29udmVyc2lvbiIsCisgICAgIi1Xbm8tZmxvYXQtZXF1YWwiLAorICAgICItV25vLWZvcm1h
dC1ub25saXRlcmFsIiwKKyAgICAjIFRvbyBhZ2dyZXNzaXZlOiB3YXJucyBvbiBDbGFuZyBleHRl
bnNpb25zIGVuY2xvc2VkIGluIENsYW5nLW9ubHkKKyAgICAjIGNvbXBpbGF0aW9uIHBhdGhzLgor
ICAgICItV25vLWdjYy1jb21wYXQiLAorICAgICMjIworICAgICMgU29tZSBpbnRlcm5hbCBnbG9i
YWxzIGFyZSBuZWNlc3NhcnkuIERvbid0IGRvIHRoaXMgYXQgaG9tZS4KKyAgICAiLVduby1nbG9i
YWwtY29uc3RydWN0b3JzIiwKKyAgICAiLVduby1leGl0LXRpbWUtZGVzdHJ1Y3RvcnMiLAorICAg
ICMjIworICAgICItV25vLW5lc3RlZC1hbm9uLXR5cGVzIiwKKyAgICAiLVduby1ub24tbW9kdWxh
ci1pbmNsdWRlLWluLW1vZHVsZSIsCisgICAgIi1Xbm8tb2xkLXN0eWxlLWNhc3QiLAorICAgICMg
V2FybnMgb24gcHJlZmVycmVkIHVzYWdlIG9mIG5vbi1QT0QgdHlwZXMgc3VjaCBhcyBzdHJpbmdf
dmlldworICAgICItV25vLXJhbmdlLWxvb3AtYW5hbHlzaXMiLAorICAgICItV25vLXJlc2VydmVk
LWlkLW1hY3JvIiwKKyAgICAiLVduby1zaG9ydGVuLTY0LXRvLTMyIiwKKyAgICAiLVduby1zd2l0
Y2gtZW51bSIsCisgICAgIi1Xbm8tdGhyZWFkLXNhZmV0eS1uZWdhdGl2ZSIsCisgICAgIi1Xbm8t
dW5rbm93bi13YXJuaW5nLW9wdGlvbiIsCisgICAgIi1Xbm8tdW5yZWFjaGFibGUtY29kZSIsCisg
ICAgIyBDYXVzZXMgd2FybmluZ3Mgb24gaW5jbHVkZSBndWFyZHMKKyAgICAiLVduby11bnVzZWQt
bWFjcm9zIiwKKyAgICAiLVduby13ZWFrLXZ0YWJsZXMiLAorICAgICMgQ2F1c2VzIHdhcm5pbmdz
IG9uIHVzYWdlIG9mIHR5cGVzL2NvbXBhcmUuaCBjb21wYXJpc29uIG9wZXJhdG9ycy4KKyAgICAi
LVduby16ZXJvLWFzLW51bGwtcG9pbnRlci1jb25zdGFudCIsCisgICAgIyMjCisgICAgIyBJbXBs
aWNpdCBjb252ZXJzaW9uIHdhcm5pbmdzIHR1cm5lZCBvZmYgYnkgLVduby1jb252ZXJzaW9uCisg
ICAgIyB3aGljaCBhcmUgcmUtZW5hYmxlZCBiZWxvdy4KKyAgICAiLVdiaXRmaWVsZC1lbnVtLWNv
bnZlcnNpb24iLAorICAgICItV2Jvb2wtY29udmVyc2lvbiIsCisgICAgIi1XY29uc3RhbnQtY29u
dmVyc2lvbiIsCisgICAgIi1XZW51bS1jb252ZXJzaW9uIiwKKyAgICAiLVdpbnQtY29udmVyc2lv
biIsCisgICAgIi1XbGl0ZXJhbC1jb252ZXJzaW9uIiwKKyAgICAiLVdub24tbGl0ZXJhbC1udWxs
LWNvbnZlcnNpb24iLAorICAgICItV251bGwtY29udmVyc2lvbiIsCisgICAgIi1Xb2JqYy1saXRl
cmFsLWNvbnZlcnNpb24iLAorICAgICItV25vLXNpZ24tY29udmVyc2lvbiIsCisgICAgIi1Xc3Ry
aW5nLWNvbnZlcnNpb24iLAorXQorCitMTFZNX1RFU1RfRElTQUJMRV9XQVJOSU5HU19GTEFHUyA9
IFsKKyAgICAiLVduby1jOTktZXh0ZW5zaW9ucyIsCisgICAgIi1Xbm8tZGVwcmVjYXRlZC1kZWNs
YXJhdGlvbnMiLAorICAgICItV25vLW1pc3Npbmctbm9yZXR1cm4iLAorICAgICItV25vLW1pc3Np
bmctcHJvdG90eXBlcyIsCisgICAgIi1Xbm8tbWlzc2luZy12YXJpYWJsZS1kZWNsYXJhdGlvbnMi
LAorICAgICItV25vLW51bGwtY29udmVyc2lvbiIsCisgICAgIi1Xbm8tc2hhZG93IiwKKyAgICAi
LVduby1zaGlmdC1zaWduLW92ZXJmbG93IiwKKyAgICAiLVduby1zaWduLWNvbXBhcmUiLAorICAg
ICItV25vLXVudXNlZC1mdW5jdGlvbiIsCisgICAgIi1Xbm8tdW51c2VkLW1lbWJlci1mdW5jdGlv
biIsCisgICAgIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisgICAgIi1Xbm8tdW51c2VkLXByaXZh
dGUtZmllbGQiLAorICAgICItV25vLXVudXNlZC10ZW1wbGF0ZSIsCisgICAgIi1Xbm8tdXNlZC1i
dXQtbWFya2VkLXVudXNlZCIsCisgICAgIi1Xbm8temVyby1hcy1udWxsLXBvaW50ZXItY29uc3Rh
bnQiLAorICAgICMgZ3Rlc3QgZGVwZW5kcyBvbiB0aGlzIEdOVSBleHRlbnNpb24gYmVpbmcgb2Zm
ZXJlZC4KKyAgICAiLVduby1nbnUtemVyby12YXJpYWRpYy1tYWNyby1hcmd1bWVudHMiLAorXQor
CitNU1ZDX1NUWUxFX0VYQ0VQVElPTlNfRkxBR1MgPSBbCisgICAgIi9VX0hBU19FWENFUFRJT05T
IiwKKyAgICAiL0RfSEFTX0VYQ0VQVElPTlM9MSIsCisgICAgIi9FSHNjIgorXQorCitNU1ZDX0RF
RklORVMgPSBbCisgICAgIi9ETk9NSU5NQVgiLCAgIyBEb24ndCBkZWZpbmUgbWluIGFuZCBtYXgg
bWFjcm9zICh3aW5kb3dzLmgpCisgICAgIyBEb24ndCBibG9hdCBuYW1lc3BhY2Ugd2l0aCBpbmNv
bXBhdGlibGUgd2luc29jayB2ZXJzaW9ucy4KKyAgICAiL0RXSU4zMl9MRUFOX0FORF9NRUFOIiwK
KyAgICAjIERvbid0IHdhcm4gYWJvdXQgdXNhZ2Ugb2YgaW5zZWN1cmUgQyBmdW5jdGlvbnMuCisg
ICAgIi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiLAorICAgICIvRF9TQ0xfU0VDVVJFX05PX1dB
Uk5JTkdTIiwKKyAgICAjIEludHJvZHVjZWQgaW4gVlMgMjAxNyAxNS44LCBhbGxvdyBvdmVyYWxp
Z25lZCB0eXBlcyBpbiBhbGlnbmVkX3N0b3JhZ2UKKyAgICAiL0RfRU5BQkxFX0VYVEVOREVEX0FM
SUdORURfU1RPUkFHRSIsCitdCisKK0NPUFRfVkFSUyA9IHsKKyAgICAiQUJTTF9HQ0NfRkxBR1Mi
OiBbCisgICAgICAgICItV2FsbCIsCisgICAgICAgICItV2V4dHJhIiwKKyAgICAgICAgIi1XY2Fz
dC1xdWFsIiwKKyAgICAgICAgIi1XY29udmVyc2lvbi1udWxsIiwKKyAgICAgICAgIi1XbWlzc2lu
Zy1kZWNsYXJhdGlvbnMiLAorICAgICAgICAiLVdvdmVybGVuZ3RoLXN0cmluZ3MiLAorICAgICAg
ICAiLVdwb2ludGVyLWFyaXRoIiwKKyAgICAgICAgIi1XdW51c2VkLWxvY2FsLXR5cGVkZWZzIiwK
KyAgICAgICAgIi1XdW51c2VkLXJlc3VsdCIsCisgICAgICAgICItV3ZhcmFyZ3MiLAorICAgICAg
ICAiLVd2bGEiLCAgIyB2YXJpYWJsZS1sZW5ndGggYXJyYXkKKyAgICAgICAgIi1Xd3JpdGUtc3Ry
aW5ncyIsCisgICAgICAgICMgZ2NjLTQueCBoYXMgc3B1cmlvdXMgbWlzc2luZyBmaWVsZCBpbml0
aWFsaXplciB3YXJuaW5ncy4KKyAgICAgICAgIyBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxh
L3Nob3dfYnVnLmNnaT9pZD0zNjc1MAorICAgICAgICAjIFJlbW92ZSB3aGVuIGdjYy00LnggaXMg
bm8gbG9uZ2VyIHN1cHBvcnRlZC4KKyAgICAgICAgIi1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFs
aXplcnMiLAorICAgICAgICAjIEdvb2dsZSBzdHlsZSBkb2VzIG5vdCB1c2UgdW5zaWduZWQgaW50
ZWdlcnMsIHRob3VnaCBTVEwgY29udGFpbmVycworICAgICAgICAjIGhhdmUgdW5zaWduZWQgdHlw
ZXMuCisgICAgICAgICItV25vLXNpZ24tY29tcGFyZSIsCisgICAgXSwKKyAgICAiQUJTTF9HQ0Nf
VEVTVF9GTEFHUyI6IFsKKyAgICAgICAgIi1Xbm8tY29udmVyc2lvbi1udWxsIiwKKyAgICAgICAg
Ii1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiLAorICAgICAgICAiLVduby1taXNzaW5nLWRl
Y2xhcmF0aW9ucyIsCisgICAgICAgICItV25vLXNpZ24tY29tcGFyZSIsCisgICAgICAgICItV25v
LXVudXNlZC1mdW5jdGlvbiIsCisgICAgICAgICItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorICAg
ICAgICAiLVduby11bnVzZWQtcHJpdmF0ZS1maWVsZCIsCisgICAgXSwKKyAgICAiQUJTTF9HQ0Nf
RVhDRVBUSU9OU19GTEFHUyI6IFsiLWZleGNlcHRpb25zIl0sCisgICAgIkFCU0xfTExWTV9GTEFH
UyI6CisgICAgICAgIExMVk1fQklHX1dBUk5JTkdfRkxBR1MgKyBMTFZNX0RJU0FCTEVfV0FSTklO
R1NfRkxBR1MsCisgICAgIkFCU0xfTExWTV9URVNUX0ZMQUdTIjoKKyAgICAgICAgTExWTV9URVNU
X0RJU0FCTEVfV0FSTklOR1NfRkxBR1MsCisgICAgIkFCU0xfTExWTV9FWENFUFRJT05TX0ZMQUdT
IjogWyItZmV4Y2VwdGlvbnMiXSwKKyAgICAiQUJTTF9DTEFOR19DTF9GTEFHUyI6CisgICAgICAg
IChNU1ZDX0JJR19XQVJOSU5HX0ZMQUdTICsgTExWTV9ESVNBQkxFX1dBUk5JTkdTX0ZMQUdTICsg
TVNWQ19ERUZJTkVTKSwKKyAgICAiQUJTTF9DTEFOR19DTF9URVNUX0ZMQUdTIjoKKyAgICAgICAg
TExWTV9URVNUX0RJU0FCTEVfV0FSTklOR1NfRkxBR1MsCisgICAgIkFCU0xfQ0xBTkdfQ0xfRVhD
RVBUSU9OU19GTEFHUyI6CisgICAgICAgIE1TVkNfU1RZTEVfRVhDRVBUSU9OU19GTEFHUywKKyAg
ICAiQUJTTF9NU1ZDX0ZMQUdTIjoKKyAgICAgICAgTVNWQ19CSUdfV0FSTklOR19GTEFHUyArIE1T
VkNfREVGSU5FUyArIFsKKyAgICAgICAgICAgICIvd2Q0MDA1IiwgICMgbWFjcm8tcmVkZWZpbml0
aW9uCisgICAgICAgICAgICAiL3dkNDA2OCIsICAjIHVua25vd24gcHJhZ21hCisgICAgICAgICAg
ICAjIHF1YWxpZmllciBhcHBsaWVkIHRvIGZ1bmN0aW9uIHR5cGUgaGFzIG5vIG1lYW5pbmc7IGln
bm9yZWQKKyAgICAgICAgICAgICIvd2Q0MTgwIiwKKyAgICAgICAgICAgICMgY29udmVyc2lvbiBm
cm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCisgICAgICAgICAg
ICAiL3dkNDI0NCIsCisgICAgICAgICAgICAjIGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAn
dHlwZScsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQorICAgICAgICAgICAgIi93ZDQyNjciLAorICAg
ICAgICAgICAgIyBUaGUgZGVjb3JhdGVkIG5hbWUgd2FzIGxvbmdlciB0aGFuIHRoZSBjb21waWxl
ciBsaW1pdAorICAgICAgICAgICAgIi93ZDQ1MDMiLAorICAgICAgICAgICAgIyBmb3JjaW5nIHZh
bHVlIHRvIGJvb2wgJ3RydWUnIG9yICdmYWxzZScgKHBlcmZvcm1hbmNlIHdhcm5pbmcpCisgICAg
ICAgICAgICAiL3dkNDgwMCIsCisgICAgICAgIF0sCisgICAgIkFCU0xfTVNWQ19URVNUX0ZMQUdT
IjogWworICAgICAgICAiL3dkNDAxOCIsICAjIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaAorICAg
ICAgICAiL3dkNDEwMSIsICAjIHVucmVmZXJlbmNlZCBsb2NhbCB2YXJpYWJsZQorICAgICAgICAi
L3dkNDUwMyIsICAjIGRlY29yYXRlZCBuYW1lIGxlbmd0aCBleGNlZWRlZCwgbmFtZSB3YXMgdHJ1
bmNhdGVkCisgICAgICAgICIvd2Q0OTk2IiwgICMgdXNlIG9mIGRlcHJlY2F0ZWQgc3ltYm9sCisg
ICAgICAgICIvRE5PTUlOTUFYIiwgICMgZGlzYWJsZSB0aGUgbWluKCkgYW5kIG1heCgpIG1hY3Jv
cyBmcm9tIDx3aW5kb3dzLmg+CisgICAgXSwKKyAgICAiQUJTTF9NU1ZDX0VYQ0VQVElPTlNfRkxB
R1MiOgorICAgICAgICBNU1ZDX1NUWUxFX0VYQ0VQVElPTlNfRkxBR1MsCisgICAgIkFCU0xfTVNW
Q19MSU5LT1BUUyI6IFsKKyAgICAgICAgIyBPYmplY3QgZmlsZSBkb2Vzbid0IGV4cG9ydCBhbnkg
cHJldmlvdXNseSB1bmRlZmluZWQgc3ltYm9scworICAgICAgICAiLWlnbm9yZTo0MjIxIiwKKyAg
ICBdLAorICAgICMgIkhXQUVTIiBpcyBhbiBhYmJyZXZpYXRpb24gZm9yICJoYXJkd2FyZSBBRVMi
IChBRVMgLSBBZHZhbmNlZCBFbmNyeXB0aW9uCisgICAgIyBTdGFuZGFyZCkuIFRoZXNlIGZsYWdz
IGFyZSB1c2VkIGZvciBkZXRlY3Rpbmcgd2hldGhlciBvciBub3QgdGhlIHRhcmdldAorICAgICMg
YXJjaGl0ZWN0dXJlIGhhcyBoYXJkd2FyZSBzdXBwb3J0IGZvciBBRVMgaW5zdHJ1Y3Rpb25zIHdo
aWNoIGNhbiBiZSB1c2VkCisgICAgIyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHNvbWUgcmFu
ZG9tIGJpdCBnZW5lcmF0b3JzLgorICAgICJBQlNMX1JBTkRPTV9IV0FFU19BUk02NF9GTEFHUyI6
IFsiLW1hcmNoPWFybXY4LWErY3J5cHRvIl0sCisgICAgIkFCU0xfUkFORE9NX0hXQUVTX0FSTTMy
X0ZMQUdTIjogWyItbWZwdT1uZW9uIl0sCisgICAgIkFCU0xfUkFORE9NX0hXQUVTX1g2NF9GTEFH
UyI6IFsKKyAgICAgICAgIi1tYWVzIiwKKyAgICAgICAgIi1tc3NlNC4xIiwKKyAgICBdLAorICAg
ICJBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2NF9GTEFHUyI6IFsKKyAgICAgICAgIi9PMiIsICAj
IE1heGltaXplIHNwZWVkCisgICAgICAgICIvT2IyIiwgICMgQWdncmVzc2l2ZSBpbmxpbmluZwor
ICAgIF0sCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9nZW5lcmF0ZV9jb3B0cy5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvcHRzL2dlbmVyYXRlX2NvcHRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwLi4wZTVkYzlmYWQyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL2dl
bmVyYXRlX2NvcHRzLnB5CkBAIC0wLDAgKzEsMTA5IEBACisjIS91c3IvYmluL3B5dGhvbgorIiIi
R2VuZXJhdGUgQWJzZWlsIGNvbXBpbGUgY29tcGlsZSBvcHRpb24gY29uZmlncy4KKworVXNhZ2U6
IDxwYXRoX3RvX2Fic2w+L2NvcHRzL2dlbmVyYXRlX2NvcHRzLnB5CisKK1RoZSBjb25maWdzIGFy
ZSBnZW5lcmF0ZWQgZnJvbSBjb3B0cy5weS4KKyIiIgorCitmcm9tIG9zIGltcG9ydCBwYXRoCitp
bXBvcnQgc3lzCitmcm9tIGNvcHRzIGltcG9ydCBDT1BUX1ZBUlMKKworCisjIEhlbHBlciBmdW5j
dGlvbnMKK2RlZiBmaWxlX2hlYWRlcl9saW5lcygpOgorICByZXR1cm4gWworICAgICAgIkdFTkVS
QVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgVEhJUyBGSUxFLiIsICIiLAorICAgICAgIigxKSBF
ZGl0IGFic2wvY29wdHMvY29wdHMucHkuIiwKKyAgICAgICIoMikgUnVuIGBweXRob24gPHBhdGhf
dG9fYWJzbD4vY29wdHMvZ2VuZXJhdGVfY29wdHMucHlgLiIKKyAgXQorCisKK2RlZiBmbGF0dGVu
KCpsaXN0cyk6CisgIHJldHVybiBbaXRlbSBmb3Igc3VibGlzdCBpbiBsaXN0cyBmb3IgaXRlbSBp
biBzdWJsaXN0XQorCisKK2RlZiByZWxhdGl2ZV9maWxlbmFtZShmaWxlbmFtZSk6CisgIHJldHVy
biBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgZmlsZW5hbWUpCisKKworIyBTdHls
ZSBjbGFzc2VzLiAgVGhlc2UgY29udGFpbiBhbGwgdGhlIHN5bnRhY3RpYyBzdHlsaW5nIG5lZWRl
ZCB0byBnZW5lcmF0ZSBhCisjIGNvcHQgZmlsZSBmb3IgZGlmZmVyZW50IGJ1aWxkIHRvb2xzLgor
Y2xhc3MgQ01ha2VTdHlsZShvYmplY3QpOgorICAiIiJTdHlsZSBvYmplY3QgZm9yIENNYWtlIGNv
cHRzIGZpbGUuIiIiCisKKyAgZGVmIHNlcGFyYXRvcihzZWxmKToKKyAgICByZXR1cm4gIiIKKwor
ICBkZWYgbGlzdF9pbnRyb2R1Y2VyKHNlbGYsIG5hbWUpOgorICAgIHJldHVybiAibGlzdChBUFBF
TkQgIiArIG5hbWUKKworICBkZWYgbGlzdF9jbG9zZXIoc2VsZik6CisgICAgcmV0dXJuICIpXG4i
CisKKyAgZGVmIGRvY3N0cmluZyhzZWxmKToKKyAgICByZXR1cm4gIlxuIi5qb2luKCgoIiMgIiAr
IGxpbmUpLnN0cmlwKCkgZm9yIGxpbmUgaW4gZmlsZV9oZWFkZXJfbGluZXMoKSkpCisKKyAgZGVm
IGZpbGVuYW1lKHNlbGYpOgorICAgIHJldHVybiAiR0VORVJBVEVEX0Fic2VpbENvcHRzLmNtYWtl
IgorCisKK2NsYXNzIFN0YXJsYXJrU3R5bGUob2JqZWN0KToKKyAgIiIiU3R5bGUgb2JqZWN0IGZv
ciBTdGFybGFyayBjb3B0cyBmaWxlLiIiIgorCisgIGRlZiBzZXBhcmF0b3Ioc2VsZik6CisgICAg
cmV0dXJuICIsIgorCisgIGRlZiBsaXN0X2ludHJvZHVjZXIoc2VsZiwgbmFtZSk6CisgICAgcmV0
dXJuIG5hbWUgKyAiID0gWyIKKworICBkZWYgbGlzdF9jbG9zZXIoc2VsZik6CisgICAgcmV0dXJu
ICJdXG4iCisKKyAgZGVmIGRvY3N0cmluZyhzZWxmKToKKyAgICBkb2NzdHJpbmdfcXVvdGVzID0g
IlwiXCJcIiIKKyAgICByZXR1cm4gZG9jc3RyaW5nX3F1b3RlcyArICJcbiIuam9pbigKKyAgICAg
ICAgZmxhdHRlbihmaWxlX2hlYWRlcl9saW5lcygpLCBbZG9jc3RyaW5nX3F1b3Rlc10pKQorCisg
IGRlZiBmaWxlbmFtZShzZWxmKToKKyAgICByZXR1cm4gIkdFTkVSQVRFRF9jb3B0cy5iemwiCisK
KworZGVmIGNvcHRfbGlzdChuYW1lLCBhcmdfbGlzdCwgc3R5bGUpOgorICAiIiJDb3B0IGZpbGUg
Z2VuZXJhdGlvbi4iIiIKKworICBtYWtlX2xpbmUgPSBsYW1iZGEgczogIiAgICBcIiIgKyBzICsg
IlwiIiArIHN0eWxlLnNlcGFyYXRvcigpCisgIGV4dGVybmFsX3N0cl9saXN0ID0gW21ha2VfbGlu
ZShzKSBmb3IgcyBpbiBhcmdfbGlzdF0KKworICByZXR1cm4gIlxuIi5qb2luKAorICAgICAgZmxh
dHRlbigKKyAgICAgICAgICBbc3R5bGUubGlzdF9pbnRyb2R1Y2VyKG5hbWUpXSwKKyAgICAgICAg
ICBleHRlcm5hbF9zdHJfbGlzdCwKKyAgICAgICAgICBbc3R5bGUubGlzdF9jbG9zZXIoKV0pKQor
CisKK2RlZiBnZW5lcmF0ZV9jb3B0X2ZpbGUoc3R5bGUpOgorICAiIiJDcmVhdGVzIGEgZ2VuZXJh
dGVkIGNvcHQgZmlsZSB1c2luZyB0aGUgZ2l2ZW4gc3R5bGUgb2JqZWN0LgorCisgIEFyZ3M6Cisg
ICAgc3R5bGU6IGVpdGhlciBTdGFybGFya1N0eWxlKCkgb3IgQ01ha2VTdHlsZSgpCisgICIiIgor
ICB3aXRoIG9wZW4ocmVsYXRpdmVfZmlsZW5hbWUoc3R5bGUuZmlsZW5hbWUoKSksICJ3IikgYXMg
ZjoKKyAgICBmLndyaXRlKHN0eWxlLmRvY3N0cmluZygpKQorICAgIGYud3JpdGUoIlxuIikKKyAg
ICBmb3IgdmFyX25hbWUsIGFyZ19saXN0IGluIHNvcnRlZChDT1BUX1ZBUlMuaXRlbXMoKSk6Cisg
ICAgICBmLndyaXRlKCJcbiIpCisgICAgICBmLndyaXRlKGNvcHRfbGlzdCh2YXJfbmFtZSwgYXJn
X2xpc3QsIHN0eWxlKSkKKworCitkZWYgbWFpbihhcmd2KToKKyAgaWYgbGVuKGFyZ3YpID4gMToK
KyAgICByYWlzZSBSdW50aW1lRXJyb3IoImdlbmVyYXRlX2NvcHRzIG5lZWRzIG5vIGNvbW1hbmQg
bGluZSBhcmdzIikKKworICBnZW5lcmF0ZV9jb3B0X2ZpbGUoU3RhcmxhcmtTdHlsZSgpKQorICBn
ZW5lcmF0ZV9jb3B0X2ZpbGUoQ01ha2VTdHlsZSgpKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21h
aW5fXyI6CisgIG1haW4oc3lzLmFyZ3YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJ
TEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJTEQuYmF6ZWwKaW5kZXggZTFlN2ZjZWQ2OWYu
LjkxM2NmYWZiMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJTEQuYmF6ZWwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZGVidWdnaW5nL0JVSUxELmJhemVsCkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtMTUsOCArMTUsOSBAQAogIwogCiBsb2FkKAotICAgICIvL2Fic2w6Y29wdHMu
YnpsIiwKKyAgICAiLy9hYnNsOmNvcHRzL2NvbmZpZ3VyZV9jb3B0cy5iemwiLAogICAgICJBQlNM
X0RFRkFVTFRfQ09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElOS09QVFMiLAogICAgICJBQlNM
X1RFU1RfQ09QVFMiLAogKQogCkBAIC0zMyw2ICszNCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgXSwK
ICAgICBoZHJzID0gWyJzdGFja3RyYWNlLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiOmRlYnVnZ2luZ19pbnRlcm5hbCIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIs
CkBAIC01MywxMSArNTUsMTMgQEAgY2NfbGlicmFyeSgKICAgICAgICAgInN5bWJvbGl6ZS5oIiwK
ICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6ZGVidWdnaW5n
X2ludGVybmFsIiwKICAgICAgICAgIjpkZW1hbmdsZV9pbnRlcm5hbCIsCiAgICAgICAgICIvL2Fi
c2wvYmFzZSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAi
Ly9hYnNsL2Jhc2U6ZHluYW1pY19hbm5vdGF0aW9ucyIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpt
YWxsb2NfaW50ZXJuYWwiLAogICAgIF0sCiApCkBAIC02Niw2ICs3MCw3IEBAIGNjX3Rlc3QoCiAg
ICAgbmFtZSA9ICJzeW1ib2xpemVfdGVzdCIsCiAgICAgc3JjcyA9IFsic3ltYm9saXplX3Rlc3Qu
Y2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
REVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnN0YWNrX2NvbnN1bXB0
aW9uIiwKICAgICAgICAgIjpzeW1ib2xpemUiLApAQCAtODUsNiArOTAsNyBAQCBjY19saWJyYXJ5
KAogICAgICAgICAiaW50ZXJuYWwvZXhhbWluZV9zdGFjay5oIiwKICAgICBdLAogICAgIGNvcHRz
ID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAogICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjpzdGFja3RyYWNlIiwKQEAgLTk5LDYgKzEwNSw3IEBAIGNjX2xpYnJh
cnkoCiAgICAgc3JjcyA9IFsiZmFpbHVyZV9zaWduYWxfaGFuZGxlci5jYyJdLAogICAgIGhkcnMg
PSBbImZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxU
X0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMg
PSBbCiAgICAgICAgICI6ZXhhbWluZV9zdGFjayIsCiAgICAgICAgICI6c3RhY2t0cmFjZSIsCkBA
IC0xMTUsNyArMTIyLDcgQEAgY2NfdGVzdCgKICAgICBsaW5rb3B0cyA9IHNlbGVjdCh7CiAgICAg
ICAgICIvL2Fic2w6d2luZG93cyI6IFtdLAogICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQi
OiBbIi1wdGhyZWFkIl0sCi0gICAgfSksCisgICAgfSkgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMs
CiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpmYWlsdXJlX3NpZ25hbF9oYW5kbGVyIiwKICAgICAg
ICAgIjpzdGFja3RyYWNlIiwKQEAgLTE0Nyw4ICsxNTQsMTAgQEAgY2NfbGlicmFyeSgKICAgICAg
ICAgImludGVybmFsL3Zkc29fc3VwcG9ydC5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9E
RUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpj
b3JlX2hlYWRlcnMiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZHluYW1pY19hbm5vdGF0aW9ucyIs
CiAgICAgXSwKICkKQEAgLTE2OCw2ICsxNzcsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiZGVt
YW5nbGVfdGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvZGVtYW5nbGVfdGVzdC5jYyJdLAog
ICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6ZGVtYW5nbGVfaW50ZXJuYWwiLAog
ICAgICAgICAiOnN0YWNrX2NvbnN1bXB0aW9uIiwKQEAgLTE4MCwyMiArMTkwLDkgQEAgY2NfdGVz
dCgKIAogY2NfbGlicmFyeSgKICAgICBuYW1lID0gImxlYWtfY2hlY2siLAotICAgIHNyY3MgPSBz
ZWxlY3QoewotICAgICAgICAjIFRoZSBsZWFrIGNoZWNraW5nIGludGVyZmFjZSBkZXBlbmRzIG9u
IHdlYWsgZnVuY3Rpb24KLSAgICAgICAgIyBkZWNsYXJhdGlvbnMgdGhhdCBtYXkgbm90IG5lY2Vz
c2FyaWx5IGhhdmUgZGVmaW5pdGlvbnMuCi0gICAgICAgICMgV2luZG93cyBkb2Vzbid0IHN1cHBv
cnQgdGhpcywgYW5kIGlvcyByZXF1aXJlcwotICAgICAgICAjIGd1YXJhbnRlZWQgZGVmaW5pdGlv
bnMgZm9yIHdlYWsgc3ltYm9scy4KLSAgICAgICAgIi8vYWJzbDppb3MiOiBbXSwKLSAgICAgICAg
Ii8vYWJzbDp3aW5kb3dzIjogW10sCi0gICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsK
LSAgICAgICAgICAgICJsZWFrX2NoZWNrLmNjIiwKLSAgICAgICAgXSwKLSAgICB9KSwKLSAgICBo
ZHJzID0gc2VsZWN0KHsKLSAgICAgICAgIi8vYWJzbDppb3MiOiBbXSwKLSAgICAgICAgIi8vYWJz
bDp3aW5kb3dzIjogW10sCi0gICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsibGVha19j
aGVjay5oIl0sCi0gICAgfSksCisgICAgc3JjcyA9IFsibGVha19jaGVjay5jYyJdLAorICAgIGhk
cnMgPSBbImxlYWtfY2hlY2suaCJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAogICAgIGRlcHMgPSBbIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyJdLAogKQogCkBAIC0y
MDUsNiArMjAyLDcgQEAgY2NfbGlicmFyeSgKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJsZWFr
X2NoZWNrX2Rpc2FibGUiLAogICAgIHNyY3MgPSBbImxlYWtfY2hlY2tfZGlzYWJsZS5jYyJdLAor
ICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGxpbmtzdGF0aWMgPSAx
LAogICAgIGFsd2F5c2xpbmsgPSAxLAogKQpAQCAtMjI1LDYgKzIyMyw3IEBAIGNjX2xpYnJhcnko
CiAgICAgICAgICIvL2Fic2w6bGx2bV9jb21waWxlciI6IFsiLURMRUFLX1NBTklUSVpFUiJdLAog
ICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbXSwKICAgICB9KSwKKyAgICBsaW5rb3B0
cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxp
dHk6cHJpdmF0ZSJdLAogKQogCkBAIC0yMzQsNiArMjMzLDcgQEAgY2NfbGlicmFyeSgKICAgICBz
cmNzID0gWyJsZWFrX2NoZWNrLmNjIl0sCiAgICAgaGRycyA9IFsibGVha19jaGVjay5oIl0sCiAg
ICAgY29wdHMgPSBbIi1VTEVBS19TQU5JVElaRVIiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJd
LAogKQogCkBAIC0yNDQsNyArMjQ0LDggQEAgY2NfdGVzdCgKICAgICAgICAgIi8vYWJzbDpsbHZt
X2NvbXBpbGVyIjogWyItREFCU0xfRVhQRUNUX0xFQUtfU0FOSVRJWkVSIl0sCiAgICAgICAgICIv
L2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFtdLAogICAgIH0pLAotICAgIGxpbmtvcHRzID0gQUJTTF9M
U0FOX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9MU0FOX0xJTktPUFRTICsgQUJTTF9E
RUZBVUxUX0xJTktPUFRTLAorICAgIHRhZ3MgPSBbIm5vdHNhbiJdLAogICAgIGRlcHMgPSBbCiAg
ICAgICAgICI6bGVha19jaGVja19hcGlfZW5hYmxlZF9mb3JfdGVzdGluZyIsCiAgICAgICAgICIv
L2Fic2wvYmFzZSIsCkBAIC0yNTYsNiArMjU3LDggQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImxl
YWtfY2hlY2tfbm9fbHNhbl90ZXN0IiwKICAgICBzcmNzID0gWyJsZWFrX2NoZWNrX3Rlc3QuY2Mi
XSwKICAgICBjb3B0cyA9IFsiLVVBQlNMX0VYUEVDVF9MRUFLX1NBTklUSVpFUiJdLAorICAgIGxp
bmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHRhZ3MgPSBbIm5vYXNhbiJdLAog
ICAgIGRlcHMgPSBbCiAgICAgICAgICI6bGVha19jaGVja19hcGlfZGlzYWJsZWRfZm9yX3Rlc3Rp
bmciLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLCAgIyBmb3IgcmF3X2xvZ2dpbmcKQEAgLTI3MCw3
ICsyNzMsOCBAQCBjY190ZXN0KAogY2NfdGVzdCgKICAgICBuYW1lID0gImRpc2FibGVkX2xlYWtf
Y2hlY2tfdGVzdCIsCiAgICAgc3JjcyA9IFsibGVha19jaGVja19mYWlsX3Rlc3QuY2MiXSwKLSAg
ICBsaW5rb3B0cyA9IEFCU0xfTFNBTl9MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfTFNB
Tl9MSU5LT1BUUyArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB0YWdzID0gWyJub3RzYW4i
XSwKICAgICBkZXBzID0gWwogICAgICAgICAiOmxlYWtfY2hlY2tfYXBpX2VuYWJsZWRfZm9yX3Rl
c3RpbmciLAogICAgICAgICAiOmxlYWtfY2hlY2tfZGlzYWJsZSIsCkBAIC0yODUsNiArMjg5LDcg
QEAgY2NfbGlicmFyeSgKICAgICBzcmNzID0gWyJpbnRlcm5hbC9zdGFja19jb25zdW1wdGlvbi5j
YyJdLAogICAgIGhkcnMgPSBbImludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uLmgiXSwKICAgICBj
b3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCkBAIC0yOTYsNiArMzAxLDcgQEAgY2Nf
dGVzdCgKICAgICBuYW1lID0gInN0YWNrX2NvbnN1bXB0aW9uX3Rlc3QiLAogICAgIHNyY3MgPSBb
ImludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xf
VEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBk
ZXBzID0gWwogICAgICAgICAiOnN0YWNrX2NvbnN1bXB0aW9uIiwKICAgICAgICAgIi8vYWJzbC9i
YXNlIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVn
Z2luZy9CVUlMRC5nbgppbmRleCBkMzU4MmQ2YTQyNi4uYTNjN2NmZTJmMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJTEQuZ24K
QEAgLTIsMTEgKzIsMTggQEAKICMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogIyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgogCi1pbXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCiBpbXBvcnQo
Ii8vYnVpbGQvY29uZmlnL3Nhbml0aXplcnMvc2FuaXRpemVycy5nbmkiKQoraW1wb3J0KCIvL2J1
aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCisjIFVzYWdlIG9mIEFic2VpbCBpbiBDaHJvbWl1
bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRkaW5n
IHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1bS5v
cmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBm
b3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1BM3J6
Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQogaWYgKGJ1aWxkX3dpdGhfY2hyb21p
dW0pIHsKICAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCiAgICAgIi8v
dGhpcmRfcGFydHkvd2VicnRjLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIs
CiAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCkBAIC01Nyw2ICs2NCw3IEBA
IHNvdXJjZV9zZXQoInN5bWJvbGl6ZSIpIHsKICAgICAiOmRlbWFuZ2xlX2ludGVybmFsIiwKICAg
ICAiLi4vYmFzZSIsCiAgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vYmFzZTpk
eW5hbWljX2Fubm90YXRpb25zIiwKICAgICAiLi4vYmFzZTptYWxsb2NfaW50ZXJuYWwiLAogICBd
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvQ01ha2VMaXN0cy50eHQKaW5kZXggNGFmMmVjOGE0MTEuLjAwMWUyNzI3OTA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVi
dWdnaW5nL0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtMTQsMjA0ICsxNCwzMDUgQEAKICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAj
CiAKLWxpc3QoQVBQRU5EIERFQlVHR0lOR19QVUJMSUNfSEVBREVSUwotICAiZmFpbHVyZV9zaWdu
YWxfaGFuZGxlci5oIgotICAibGVha19jaGVjay5oIgotICAic3RhY2t0cmFjZS5oIgotICAic3lt
Ym9saXplLmgiCi0pCi0KLSMgVE9ETyhjb2hlbmpvbikgVGhlIGJlbG93IGlzIGFsbCBraW5kcyBv
ZiB3cm9uZy4gIE1ha2UgdGhpcyBtYXRjaCB3aGF0IHdlIGRvIGluCi0jIEJhemVsCi1saXN0KEFQ
UEVORCBERUJVR0dJTkdfSU5URVJOQUxfSEVBREVSUwotICAiaW50ZXJuYWwvYWRkcmVzc19pc19y
ZWFkYWJsZS5oIgotICAiaW50ZXJuYWwvZGVtYW5nbGUuaCIKLSAgImludGVybmFsL2VsZl9tZW1f
aW1hZ2UuaCIKLSAgImludGVybmFsL2V4YW1pbmVfc3RhY2suaCIKLSAgImludGVybmFsL3N0YWNr
dHJhY2VfY29uZmlnLmgiCi0gICJpbnRlcm5hbC9zeW1ib2xpemUuaCIKLSAgImludGVybmFsL3Zk
c29fc3VwcG9ydC5oIgotKQotCi1saXN0KEFQUEVORCBERUJVR0dJTkdfSU5URVJOQUxfU1JDCi0g
ICJpbnRlcm5hbC9hZGRyZXNzX2lzX3JlYWRhYmxlLmNjIgotICAiaW50ZXJuYWwvZWxmX21lbV9p
bWFnZS5jYyIKLSAgImludGVybmFsL3Zkc29fc3VwcG9ydC5jYyIKLSkKLQotCi1saXN0KEFQUEVO
RCBTVEFDS1RSQUNFX1NSQwotICAic3RhY2t0cmFjZS5jYyIKLSAgJHtERUJVR0dJTkdfSU5URVJO
QUxfU1JDfQotICAke0RFQlVHR0lOR19QVUJMSUNfSEVBREVSU30KLSAgJHtERUJVR0dJTkdfSU5U
RVJOQUxfSEVBREVSU30KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHN0YWNrdHJhY2UK
KyAgSERSUworICAgICJzdGFja3RyYWNlLmgiCisgIFNSQ1MKKyAgICAic3RhY2t0cmFjZS5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmRl
YnVnZ2luZ19pbnRlcm5hbAorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMK
KyAgUFVCTElDCiApCiAKLWxpc3QoQVBQRU5EIFNZTUJPTElaRV9TUkMKLSAgInN5bWJvbGl6ZS5j
YyIKLSAgInN5bWJvbGl6ZV9lbGYuaW5jIgotICAic3ltYm9saXplX3VuaW1wbGVtZW50ZWQuaW5j
IgotICAic3ltYm9saXplX3dpbjMyLmluYyIKLSAgImludGVybmFsL2RlbWFuZ2xlLmNjIgotICAk
e0RFQlVHR0lOR19QVUJMSUNfSEVBREVSU30KLSAgJHtERUJVR0dJTkdfSU5URVJOQUxfSEVBREVS
U30KLSAgJHtERUJVR0dJTkdfSU5URVJOQUxfU1JDfQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1F
CisgICAgc3ltYm9saXplCisgIEhEUlMKKyAgICAic3ltYm9saXplLmgiCisgICAgImludGVybmFs
L3N5bWJvbGl6ZS5oIgorICBTUkNTCisgICAgInN5bWJvbGl6ZS5jYyIKKyAgICAic3ltYm9saXpl
X2VsZi5pbmMiCisgICAgInN5bWJvbGl6ZV91bmltcGxlbWVudGVkLmluYyIKKyAgICAic3ltYm9s
aXplX3dpbjMyLmluYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElO
S09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmRl
YnVnZ2luZ19pbnRlcm5hbAorICAgIGFic2w6OmRlbWFuZ2xlX2ludGVybmFsCisgICAgYWJzbDo6
YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmR5bmFtaWNfYW5ub3RhdGlv
bnMKKyAgICBhYnNsOjptYWxsb2NfaW50ZXJuYWwKKyAgUFVCTElDCiApCiAKLWxpc3QoQVBQRU5E
IEZBSUxVUkVfU0lHTkFMX0hBTkRMRVJfU1JDCi0gICJmYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmNj
IgotICAke0RFQlVHR0lOR19QVUJMSUNfSEVBREVSU30KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQor
ICAgIHN5bWJvbGl6ZV90ZXN0CisgIFNSQ1MKKyAgICAic3ltYm9saXplX3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdGFja19jb25z
dW1wdGlvbgorICAgIGFic2w6OnN5bWJvbGl6ZQorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpj
b3JlX2hlYWRlcnMKKyAgICBhYnNsOjptZW1vcnkKKyAgICBnbW9jawogKQogCi1saXN0KEFQUEVO
RCBFWEFNSU5FX1NUQUNLX1NSQwotICAiaW50ZXJuYWwvZXhhbWluZV9zdGFjay5jYyIKLSAgJHtE
RUJVR0dJTkdfUFVCTElDX0hFQURFUlN9Ci0gICR7REVCVUdHSU5HX0lOVEVSTkFMX0hFQURFUlN9
CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBleGFtaW5lX3N0YWNrCisgIEhEUlMKKyAg
ICAiaW50ZXJuYWwvZXhhbWluZV9zdGFjay5oIgorICBTUkNTCisgICAgImludGVybmFsL2V4YW1p
bmVfc3RhY2suY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpzdGFja3RyYWNlCisgICAgYWJzbDo6c3ltYm9saXplCisgICAgYWJzbDo6YmFz
ZQorICAgIGFic2w6OmNvcmVfaGVhZGVycwogKQogCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAot
ICAgIGFic2xfc3RhY2t0cmFjZQotICBTT1VSQ0VTCi0gICAgJHtTVEFDS1RSQUNFX1NSQ30KLSAg
RVhQT1JUX05BTUUKLSAgICBzdGFja3RyYWNlCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAg
ICBmYWlsdXJlX3NpZ25hbF9oYW5kbGVyCisgIEhEUlMKKyAgICAiZmFpbHVyZV9zaWduYWxfaGFu
ZGxlci5oIgorICBTUkNTCisgICAgImZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuY2MiCisgIENPUFRT
CisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpleGFtaW5lX3N0
YWNrCisgICAgYWJzbDo6c3RhY2t0cmFjZQorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25m
aWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgUFVCTElDCiApCiAKLWFic2xfbGlicmFyeSgK
LSAgVEFSR0VUCi0gICAgYWJzbF9zeW1ib2xpemUKLSAgU09VUkNFUwotICAgICR7U1lNQk9MSVpF
X1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgZmFp
bHVyZV9zaWduYWxfaGFuZGxlcl90ZXN0CisgIFNSQ1MKKyAgICAiZmFpbHVyZV9zaWduYWxfaGFu
ZGxlcl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6ZmFpbHVyZV9zaWduYWxfaGFuZGxlcgorICAgIGFic2w6OnN0YWNrdHJhY2UKKyAg
ICBhYnNsOjpzeW1ib2xpemUKICAgICBhYnNsOjpiYXNlCi0gICAgYWJzbF9tYWxsb2NfaW50ZXJu
YWwKLSAgRVhQT1JUX05BTUUKLSAgICBzeW1ib2xpemUKKyAgICBhYnNsOjpzdHJpbmdzCisgICAg
VGhyZWFkczo6VGhyZWFkcworICAgIGdtb2NrCiApCiAKLWFic2xfbGlicmFyeSgKLSAgVEFSR0VU
Ci0gICAgYWJzbF9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyCi0gIFNPVVJDRVMKLSAgICAke0ZBSUxV
UkVfU0lHTkFMX0hBTkRMRVJfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbF9iYXNl
IGFic2w6OmV4YW1pbmVfc3RhY2sgYWJzbDo6c3RhY2t0cmFjZSBhYnNsX3N5bmNocm9uaXphdGlv
bgotICBFWFBPUlRfTkFNRQotICAgIGZhaWx1cmVfc2lnbmFsX2hhbmRsZXIKK2Fic2xfY2NfbGli
cmFyeSgKKyAgTkFNRQorICAgIGRlYnVnZ2luZ19pbnRlcm5hbAorICBIRFJTCisgICAgImludGVy
bmFsL2FkZHJlc3NfaXNfcmVhZGFibGUuaCIKKyAgICAiaW50ZXJuYWwvZWxmX21lbV9pbWFnZS5o
IgorICAgICJpbnRlcm5hbC9zdGFja3RyYWNlX2FhcmNoNjQtaW5sLmluYyIKKyAgICAiaW50ZXJu
YWwvc3RhY2t0cmFjZV9hcm0taW5sLmluYyIKKyAgICAiaW50ZXJuYWwvc3RhY2t0cmFjZV9jb25m
aWcuaCIKKyAgICAiaW50ZXJuYWwvc3RhY2t0cmFjZV9nZW5lcmljLWlubC5pbmMiCisgICAgImlu
dGVybmFsL3N0YWNrdHJhY2VfcG93ZXJwYy1pbmwuaW5jIgorICAgICJpbnRlcm5hbC9zdGFja3Ry
YWNlX3VuaW1wbGVtZW50ZWQtaW5sLmluYyIKKyAgICAiaW50ZXJuYWwvc3RhY2t0cmFjZV93aW4z
Mi1pbmwuaW5jIgorICAgICJpbnRlcm5hbC9zdGFja3RyYWNlX3g4Ni1pbmwuaW5jIgorICAgICJp
bnRlcm5hbC92ZHNvX3N1cHBvcnQuaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9hZGRyZXNzX2lz
X3JlYWRhYmxlLmNjIgorICAgICJpbnRlcm5hbC9lbGZfbWVtX2ltYWdlLmNjIgorICAgICJpbnRl
cm5hbC92ZHNvX3N1cHBvcnQuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJz
bDo6ZHluYW1pY19hbm5vdGF0aW9ucwogKQogCi0jIEludGVybmFsLW9ubHkuIFByb2plY3RzIGV4
dGVybmFsIHRvIEFic2VpbCBzaG91bGQgbm90IGRlcGVuZAotIyBkaXJlY3RseSBvbiB0aGlzIGxp
YnJhcnkuCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfZXhhbWluZV9zdGFjawot
ICBTT1VSQ0VTCi0gICAgJHtFWEFNSU5FX1NUQUNLX1NSQ30KLSAgRVhQT1JUX05BTUUKLSAgICBl
eGFtaW5lX3N0YWNrCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBkZW1hbmdsZV9pbnRl
cm5hbAorICBIRFJTCisgICAgImludGVybmFsL2RlbWFuZ2xlLmgiCisgIFNSQ1MKKyAgICAiaW50
ZXJuYWwvZGVtYW5nbGUuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgIFBVQkxJQwog
KQogCi1saXN0KEFQUEVORCBMRUFLX0NIRUNLX1NSQwotICAibGVha19jaGVjay5jYyIKK2Fic2xf
Y2NfdGVzdCgKKyAgTkFNRQorICAgIGRlbWFuZ2xlX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5h
bC9kZW1hbmdsZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6ZGVtYW5nbGVfaW50ZXJuYWwKKyAgICBhYnNsOjpzdGFja19jb25zdW1w
dGlvbgorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpt
ZW1vcnkKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyBsZWFrX2NoZWNrIGxpYnJhcnkKLWFic2xf
bGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9sZWFrX2NoZWNrCi0gIFNPVVJDRVMKLSAgICAk
e0xFQUtfQ0hFQ0tfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbF9iYXNlCi0gIEVY
UE9SVF9OQU1FCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKICAgICBsZWFrX2NoZWNrCisgIEhE
UlMKKyAgICAibGVha19jaGVjay5oIgorICBTUkNTCisgICAgImxlYWtfY2hlY2suY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb3JlX2hl
YWRlcnMKKyAgUFVCTElDCiApCiAKLQotIyBjb21wb25lbnQgdGFyZ2V0Ci1hYnNsX2hlYWRlcl9s
aWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX2RlYnVnZ2luZwotICBQVUJMSUNfTElCUkFSSUVT
Ci0gICAgYWJzbF9zdGFja3RyYWNlIGFic2xfbGVha19jaGVjawotICBFWFBPUlRfTkFNRQotICAg
IGRlYnVnZ2luZworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgbGVha19jaGVja19kaXNh
YmxlCisgIFNSQ1MKKyAgICAibGVha19jaGVja19kaXNhYmxlLmNjIgorICBDT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0NPUFRTfQorICBQVUJMSUMKICkKIAotIwotIyMgVEVTVFMKLSMKLQotbGlz
dChBUFBFTkQgU1RBQ0tfQ09OU1VNUFRJT05fU1JDCi0gICJpbnRlcm5hbC9zdGFja19jb25zdW1w
dGlvbi5jYyIKLSAgImludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uLmgiCithYnNsX2NjX2xpYnJh
cnkoCisgIE5BTUUKKyAgICBsZWFrX2NoZWNrX2FwaV9lbmFibGVkX2Zvcl90ZXN0aW5nCisgIEhE
UlMKKyAgICAibGVha19jaGVjay5oIgorICBTUkNTCisgICAgImxlYWtfY2hlY2suY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgICAgJDwkPEJPT0w6JHtBQlNMX0hBVkVf
TFNBTn0+Oi1ETEVBS19TQU5JVElaRVI+CisgIFRFU1RPTkxZCiApCiAKLWFic2xfbGlicmFyeSgK
LSAgVEFSR0VUCi0gICAgYWJzbF9zdGFja19jb25zdW1wdGlvbgotICBTT1VSQ0VTCi0gICAgJHtT
VEFDS19DT05TVU1QVElPTl9TUkN9CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBsZWFr
X2NoZWNrX2FwaV9kaXNhYmxlZF9mb3JfdGVzdGluZworICBIRFJTCisgICAgImxlYWtfY2hlY2su
aCIKKyAgU1JDUworICAgICJsZWFrX2NoZWNrLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQorICAgICItVUxFQUtfU0FOSVRJWkVSIgorICBURVNUT05MWQogKQogCi1hYnNs
X3Rlc3QoCi0gIFRBUkdFVAotICAgIGFic2xfc3RhY2tfY29uc3VtcHRpb25fdGVzdAotICBTT1VS
Q0VTCi0gICAgImludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uX3Rlc3QuY2MiCi0gIFBVQkxJQ19M
SUJSQVJJRVMKLSAgICBhYnNsX3N0YWNrX2NvbnN1bXB0aW9uCithYnNsX2NjX3Rlc3QoCisgIE5B
TUUKKyAgICBsZWFrX2NoZWNrX3Rlc3QKKyAgU1JDUworICAgICJsZWFrX2NoZWNrX3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgICAgIiQ8JDxCT09MOiR7QUJT
TF9IQVZFX0xTQU59PjotREFCU0xfRVhQRUNUX0xFQUtfU0FOSVRJWkVSPiIKKyAgTElOS09QVFMK
KyAgICAiJHtBQlNMX0xTQU5fTElOS09QVFN9IgorICBERVBTCisgICAgYWJzbDo6bGVha19jaGVj
a19hcGlfZW5hYmxlZF9mb3JfdGVzdGluZwogICAgIGFic2w6OmJhc2UKKyAgICBnbW9ja19tYWlu
CiApCiAKLWxpc3QoQVBQRU5EIERFTUFOR0xFX1RFU1RfU1JDICJpbnRlcm5hbC9kZW1hbmdsZV90
ZXN0LmNjIikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBkZW1hbmdsZV90ZXN0Ci0gIFNP
VVJDRVMKLSAgICAke0RFTUFOR0xFX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAg
YWJzbF9zeW1ib2xpemUgYWJzbF9zdGFja19jb25zdW1wdGlvbgorYWJzbF9jY190ZXN0KAorICBO
QU1FCisgICAgbGVha19jaGVja19ub19sc2FuX3Rlc3QKKyAgU1JDUworICAgICJsZWFrX2NoZWNr
X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgICAgIi1VQUJTTF9F
WFBFQ1RfTEVBS19TQU5JVElaRVIiCisgIERFUFMKKyAgICBhYnNsOjpsZWFrX2NoZWNrX2FwaV9k
aXNhYmxlZF9mb3JfdGVzdGluZworICAgIGFic2w6OmJhc2UKKyAgICBnbW9ja19tYWluCiApCiAK
LWxpc3QoQVBQRU5EIFNZTUJPTElaRV9URVNUX1NSQyAic3ltYm9saXplX3Rlc3QuY2MiKQotCi1h
YnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIHN5bWJvbGl6ZV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAk
e1NZTUJPTElaRV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2w6OmJhc2Ug
YWJzbDo6bWVtb3J5IGFic2xfc3ltYm9saXplIGFic2xfc3RhY2tfY29uc3VtcHRpb24KK2Fic2xf
Y2NfdGVzdCgKKyAgTkFNRQorICAgIGRpc2FibGVkX2xlYWtfY2hlY2tfdGVzdAorICBTUkNTCisg
ICAgImxlYWtfY2hlY2tfZmFpbF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBMSU5LT1BUUworICAgICIke0FCU0xfTFNBTl9MSU5LT1BUU30iCisgIERFUFMKKyAg
ICBhYnNsOjpsZWFrX2NoZWNrX2FwaV9lbmFibGVkX2Zvcl90ZXN0aW5nCisgICAgYWJzbDo6bGVh
a19jaGVja19kaXNhYmxlCisgICAgYWJzbDo6YmFzZQorICAgIGdtb2NrX21haW4KICkKIAotbGlz
dChBUFBFTkQgRkFJTFVSRV9TSUdOQUxfSEFORExFUl9URVNUX1NSQyAiZmFpbHVyZV9zaWduYWxf
aGFuZGxlcl90ZXN0LmNjIikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBmYWlsdXJlX3Np
Z25hbF9oYW5kbGVyX3Rlc3QKLSAgU09VUkNFUwotICAgICR7RkFJTFVSRV9TSUdOQUxfSEFORExF
Ul9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2xfZXhhbWluZV9zdGFjawot
ICAgIGFic2xfZmFpbHVyZV9zaWduYWxfaGFuZGxlcgotICAgIGFic2xfc3RhY2t0cmFjZQotICAg
IGFic2xfc3ltYm9saXplCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBzdGFja19jb25z
dW1wdGlvbgorICBIRFJTCisgICAgImludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uLmgiCisgIFNS
Q1MKKyAgICAiaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKICAgICBhYnNsOjpiYXNlCi0gICAgYWJzbDo6c3Ry
aW5ncworICAgIGFic2w6OmNvcmVfaGVhZGVycworICBURVNUT05MWQogKQogCi0jIHRlc3QgbGVh
a19jaGVja190ZXN0Ci1saXN0KEFQUEVORCBMRUFLX0NIRUNLX1RFU1RfU1JDICJsZWFrX2NoZWNr
X3Rlc3QuY2MiKQorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgc3RhY2tfY29uc3VtcHRpb25f
dGVzdAorICBTUkNTCisgICAgImludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uX3Rlc3QuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdGFja19j
b25zdW1wdGlvbgorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBn
bW9ja19tYWluCispCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgbGVha19jaGVja190ZXN0
Ci0gIFNPVVJDRVMKLSAgICAke0xFQUtfQ0hFQ0tfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICBhYnNsX2xlYWtfY2hlY2sKKyMgY29tcG9uZW50IHRhcmdldAorYWJzbF9jY19saWJy
YXJ5KAorICBOQU1FCisgICAgZGVidWdnaW5nCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRf
Q09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdGFja3RyYWNlCisgICAgYWJzbDo6bGVha19jaGVj
aworICBQVUJMSUMKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25h
bF9oYW5kbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuY2MK
aW5kZXggZDRiOTU3YmMyZTQuLmM2YTRkOTYyYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dp
bmcvZmFpbHVyZV9zaWduYWxfaGFuZGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvZmFpbHVy
ZV9zaWduYWxfaGFuZGxlci5jYwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTE5LDcgKzExOSwxMSBAQCBjb25zdCBjaGFyKiBGYWlsdXJlU2lnbmFsVG9TdHJp
bmcoaW50IHNpZ25vKSB7CiAjaWZuZGVmIF9XSU4zMgogCiBzdGF0aWMgYm9vbCBTZXR1cEFsdGVy
bmF0ZVN0YWNrT25jZSgpIHsKKyNpZiBkZWZpbmVkKF9fd2FzbV9fKSB8fCBkZWZpbmVkIChfX2Fz
am1zX18pCiAgIGNvbnN0IHNpemVfdCBwYWdlX21hc2sgPSBnZXRwYWdlc2l6ZSgpIC0gMTsKKyNl
bHNlCisgIGNvbnN0IHNpemVfdCBwYWdlX21hc2sgPSBzeXNjb25mKF9TQ19QQUdFU0laRSkgLSAx
OworI2VuZGlmCiAgIHNpemVfdCBzdGFja19zaXplID0gKHN0ZDo6bWF4KFNJR1NUS1NaLCA2NTUz
NikgKyBwYWdlX21hc2spICYgfnBhZ2VfbWFzazsKICNpZiBkZWZpbmVkKEFERFJFU1NfU0FOSVRJ
WkVSKSB8fCBkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpIHx8IFwKICAgICBkZWZpbmVkKFRIUkVB
RF9TQU5JVElaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvZmFpbHVyZV9zaWduYWxf
aGFuZGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuaAppbmRl
eCBjNTc5NTRlNTg3NS4uMWJlYjc4YjkzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9m
YWlsdXJlX3NpZ25hbF9oYW5kbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ZhaWx1cmVfc2ln
bmFsX2hhbmRsZXIuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXJfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyX3Rlc3QuY2MKaW5kZXgg
YmE1MjA5MTBmNDcuLmJiMmNjNDhlYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvZmFp
bHVyZV9zaWduYWxfaGFuZGxlcl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9mYWlsdXJl
X3NpZ25hbF9oYW5kbGVyX3Rlc3QuY2MKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKQEAgLTEzMywxNiArMTMzLDE3IEBAIGNvbnN0ZXhwciBpbnQga0ZhaWx1cmVTaWdu
YWxzW10gPSB7CiB9OwogCiBzdGQ6OnN0cmluZyBTaWduYWxQYXJhbVRvU3RyaW5nKGNvbnN0IDo6
dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxpbnQ+JiBpbmZvKSB7Ci0gIHN0ZDo6c3RyaW5nIHJlc3Vs
dCA9IGFic2w6OmRlYnVnZ2luZ19pbnRlcm5hbDo6RmFpbHVyZVNpZ25hbFRvU3RyaW5nKGluZm8u
cGFyYW0pOworICBzdGQ6OnN0cmluZyByZXN1bHQgPQorICAgICAgYWJzbDo6ZGVidWdnaW5nX2lu
dGVybmFsOjpGYWlsdXJlU2lnbmFsVG9TdHJpbmcoaW5mby5wYXJhbSk7CiAgIGlmIChyZXN1bHQu
ZW1wdHkoKSkgewogICAgIHJlc3VsdCA9IGFic2w6OlN0ckNhdChpbmZvLnBhcmFtKTsKICAgfQog
ICByZXR1cm4gcmVzdWx0OwogfQogCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChBYnNsRGVhdGhU
ZXN0LCBGYWlsdXJlU2lnbmFsSGFuZGxlckRlYXRoVGVzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDo6dGVzdGluZzo6VmFsdWVzSW4oa0ZhaWx1cmVTaWduYWxzKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFNpZ25hbFBhcmFtVG9TdHJpbmcpOworSU5TVEFOVElBVEVfVEVTVF9TVUlURV9Q
KEFic2xEZWF0aFRlc3QsIEZhaWx1cmVTaWduYWxIYW5kbGVyRGVhdGhUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4oa0ZhaWx1cmVTaWduYWxzKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBTaWduYWxQYXJhbVRvU3RyaW5nKTsKIAogI2VuZGlmICAv
LyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50
ZXJuYWwvYWRkcmVzc19pc19yZWFkYWJsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9h
ZGRyZXNzX2lzX3JlYWRhYmxlLmNjCmluZGV4IDc0NTVhYTBiNDE2Li45OWM0YzY0YmU4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2FkZHJlc3NfaXNfcmVhZGFibGUuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2FkZHJlc3NfaXNfcmVhZGFibGUuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9pbnRlcm5hbC9hZGRyZXNzX2lzX3JlYWRhYmxlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dp
bmcvaW50ZXJuYWwvYWRkcmVzc19pc19yZWFkYWJsZS5oCmluZGV4IDlkNDgwMzAwNjVjLi5jYTgw
MDNlNjI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2FkZHJlc3NfaXNf
cmVhZGFibGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvYWRkcmVzc19pc19yZWFk
YWJsZS5oCkBAIC00LDE0ICs0LDEzIEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIC8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgogLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCi0vLwogCiAjaWZuZGVmIEFCU0xfREVCVUdHSU5HX0lOVEVSTkFMX0FERFJFU1NfSVNf
UkVBREFCTEVfSF8KICNkZWZpbmUgQUJTTF9ERUJVR0dJTkdfSU5URVJOQUxfQUREUkVTU19JU19S
RUFEQUJMRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xl
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmNjCmluZGV4IDQ4MzU0NDU5
YmM4Li41MmE1NTNmZDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2Rl
bWFuZ2xlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNzQ5LDggKzc0OSw4IEBA
IHN0YXRpYyBib29sIFBhcnNlU291cmNlTmFtZShTdGF0ZSAqc3RhdGUpIHsKIC8vIDxsb2NhbC1z
b3VyY2UtbmFtZT4gOjo9IEwgPHNvdXJjZS1uYW1lPiBbPGRpc2NyaW1pbmF0b3I+XQogLy8KIC8v
IFJlZmVyZW5jZXM6Ci0vLyAgIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5j
Z2k/aWQ9MzE3NzUKLS8vICAgaHR0cDovL2djYy5nbnUub3JnL3ZpZXdjdnM/dmlldz1yZXYmcmV2
aXNpb249MTI0NDY3CisvLyAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcu
Y2dpP2lkPTMxNzc1CisvLyAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvdmlld2N2cz92aWV3PXJldiZy
ZXZpc2lvbj0xMjQ0NjcKIHN0YXRpYyBib29sIFBhcnNlTG9jYWxTb3VyY2VOYW1lKFN0YXRlICpz
dGF0ZSkgewogICBDb21wbGV4aXR5R3VhcmQgZ3VhcmQoc3RhdGUpOwogICBpZiAoZ3VhcmQuSXNU
b29Db21wbGV4KCkpIHJldHVybiBmYWxzZTsKQEAgLTExNjgsNiArMTE2OCwxMiBAQCBzdGF0aWMg
Ym9vbCBQYXJzZVR5cGUoU3RhdGUgKnN0YXRlKSB7CiAgIH0KICAgc3RhdGUtPnBhcnNlX3N0YXRl
ID0gY29weTsKIAorICAvLyBudWxscHRyX3QsIGkuZS4gZGVjbHR5cGUobnVsbHB0cikuCisgIGlm
IChQYXJzZVR3b0NoYXJUb2tlbihzdGF0ZSwgIkRuIikpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fQorICBzdGF0ZS0+cGFyc2Vfc3RhdGUgPSBjb3B5OworCiAgIGlmIChQYXJzZU9uZUNoYXJUb2tl
bihzdGF0ZSwgJ1UnKSAmJiBQYXJzZVNvdXJjZU5hbWUoc3RhdGUpICYmCiAgICAgICBQYXJzZVR5
cGUoc3RhdGUpKSB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjM2LDYgKzE2NDIsMTUgQEAgc3Rh
dGljIGJvb2wgUGFyc2VFeHByZXNzaW9uKFN0YXRlICpzdGF0ZSkgewogICB9CiAgIHN0YXRlLT5w
YXJzZV9zdGF0ZSA9IGNvcHk7CiAKKyAgLy8gUG9pbnRlci10by1tZW1iZXIgYWNjZXNzIGV4cHJl
c3Npb25zLiAgVGhpcyBwYXJzZXMgdGhlIHNhbWUgYXMgYSBiaW5hcnkKKyAgLy8gb3BlcmF0b3Is
IGJ1dCBpdCdzIGltcGxlbWVudGVkIHNlcGFyYXRlbHkgYmVjYXVzZSAiZHMiIHNob3VsZG4ndCBi
ZQorICAvLyBhY2NlcHRlZCBpbiBvdGhlciBjb250ZXh0cyB0aGF0IHBhcnNlIGFuIG9wZXJhdG9y
IG5hbWUuCisgIGlmIChQYXJzZVR3b0NoYXJUb2tlbihzdGF0ZSwgImRzIikgJiYgUGFyc2VFeHBy
ZXNzaW9uKHN0YXRlKSAmJgorICAgICAgUGFyc2VFeHByZXNzaW9uKHN0YXRlKSkgeworICAgIHJl
dHVybiB0cnVlOworICB9CisgIHN0YXRlLT5wYXJzZV9zdGF0ZSA9IGNvcHk7CisKICAgLy8gUGFy
YW1ldGVyIHBhY2sgZXhwYW5zaW9uCiAgIGlmIChQYXJzZVR3b0NoYXJUb2tlbihzdGF0ZSwgInNw
IikgJiYgUGFyc2VFeHByZXNzaW9uKHN0YXRlKSkgewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dp
bmcvaW50ZXJuYWwvZGVtYW5nbGUuaAppbmRleCAyZTc1NTY0ZWQzNS4uODFiYjBkZmQ0YmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZGVt
YW5nbGVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZV90ZXN0LmNj
CmluZGV4IGI5ZDkwMDhmMDA3Li5hNjhjZTMyNDliYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdn
aW5nL2ludGVybmFsL2RlbWFuZ2xlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVy
bmFsL2RlbWFuZ2xlX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTgxLDggKzgxLDkgQEAgVEVTVChEZW1hbmdsZSwgQ2xvbmVzKSB7CiAvLyBUZXN0
cyB0aGF0IHZlcmlmeSB0aGF0IERlbWFuZ2xlIGZvb3RwcmludCBpcyB3aXRoaW4gc29tZSBsaW1p
dC4KIC8vIFRoZXkgYXJlIG5vdCB0byBiZSBydW4gdW5kZXIgc2FuaXRpemVycyBhcyB0aGUgc2Fu
aXRpemVycyBpbmNyZWFzZQogLy8gc3RhY2sgY29uc3VtcHRpb24gYnkgYWJvdXQgNHguCi0jaWYg
ZGVmaW5lZChBQlNMX0lOVEVSTkFMX0hBVkVfREVCVUdHSU5HX1NUQUNLX0NPTlNVTVBUSU9OKSAm
JiBcCi0gICAgIUFERFJFU1NfU0FOSVRJWkVSICYmICFNRU1PUllfU0FOSVRJWkVSICYmICFUSFJF
QURfU0FOSVRJWkVSCisjaWYgZGVmaW5lZChBQlNMX0lOVEVSTkFMX0hBVkVfREVCVUdHSU5HX1NU
QUNLX0NPTlNVTVBUSU9OKSAmJiAgIFwKKyAgICAhZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikg
JiYgIWRlZmluZWQoTUVNT1JZX1NBTklUSVpFUikgJiYgXAorICAgICFkZWZpbmVkKFRIUkVBRF9T
QU5JVElaRVIpCiAKIHN0YXRpYyBjb25zdCBjaGFyICpnX21hbmdsZWQ7CiBzdGF0aWMgY2hhciBn
X2RlbWFuZ2xlX2J1ZmZlcls0MDk2XTsKQEAgLTE3Niw2ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBU
ZXN0T25JbnB1dChjb25zdCBjaGFyKiBpbnB1dCkgewogVEVTVChEZW1hbmdsZVJlZ3Jlc3Npb24s
IE5lZ2F0aXZlTGVuZ3RoKSB7CiAgIFRlc3RPbklucHV0KCJfWlpuNCIpOwogfQorCiBURVNUKERl
bWFuZ2xlUmVncmVzc2lvbiwgRGVlcGx5TmVzdGVkQXJyYXlUeXBlKSB7CiAgIGNvbnN0IGludCBk
ZXB0aCA9IDEwMDAwMDsKICAgc3RkOjpzdHJpbmcgZGF0YSA9ICJfWlN0SSI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZWxmX21lbV9pbWFnZS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVn
Z2luZy9pbnRlcm5hbC9lbGZfbWVtX2ltYWdlLmNjCmluZGV4IDNmNzQ3ZTdmOTU4Li5lNzQwOGJj
YThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2VsZl9tZW1faW1hZ2Uu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2VsZl9tZW1faW1hZ2UuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Rl
YnVnZ2luZy9pbnRlcm5hbC9lbGZfbWVtX2ltYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJu
YWwvZWxmX21lbV9pbWFnZS5oCmluZGV4IDNiNTc3MjY4OTU0Li5kODQyMDBkYjFlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2VsZl9tZW1faW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZWxmX21lbV9pbWFnZS5oCkBAIC01LDcgKzUsNyBAQAogICog
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAgKgot
ICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogICoKICAqIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zNCw3ICszNCw3IEBACiAjZGVmaW5lIEFCU0xfSEFW
RV9FTEZfTUVNX0lNQUdFIDEKICNlbmRpZgogCi0jaWYgQUJTTF9IQVZFX0VMRl9NRU1fSU1BR0UK
KyNpZmRlZiBBQlNMX0hBVkVfRUxGX01FTV9JTUFHRQogCiAjaW5jbHVkZSA8bGluay5oPiAgLy8g
Zm9yIEVsZlcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2V4YW1pbmVf
c3RhY2suY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFjay5jYwppbmRl
eCBmYWY4ODgzNjczNS4uMWViYzc4OGZlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9p
bnRlcm5hbC9leGFtaW5lX3N0YWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9l
eGFtaW5lX3N0YWNrLmNjCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFjay5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2V4YW1pbmVfc3RhY2suaAppbmRleCBhMTZjMDNiMjc0
OC4uNTZjOTc2M2ViNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9leGFt
aW5lX3N0YWNrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2V4YW1pbmVfc3RhY2su
aApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uLmNjCmluZGV4IDJiM2I5NzJlYTUzLi40
YjA1ZjQ5NTVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrX2Nv
bnN1bXB0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja19jb25zdW1w
dGlvbi5jYwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uaAppbmRleCA0YzVmYTBmMGQ4
Mi4uYjg2MGEzYzFhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFj
a19jb25zdW1wdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja19jb25z
dW1wdGlvbi5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb25fdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja19jb25zdW1wdGlvbl90ZXN0LmNjCmlu
ZGV4IDVjZTM4NDZlYzQ0Li42OGJmYTEyNmUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5n
L2ludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5n
L2ludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uX3Rlc3QuY2MKQEAgLTUsNyArNSw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5h
bC9zdGFja3RyYWNlX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJh
Y2VfY29uZmlnLmgKaW5kZXggZGQ3MTNkYThjMGMuLmQ0ZTg0ODBhOGUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9jb25maWcuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9jb25maWcuaApAQCAtNSw3ICs1LDcgQEAKICAq
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogICoK
LSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKiAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICAqCiAgKiBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDEsOCArNDEsOSBAQAogI2RlZmluZSBBQlNMX1NU
QUNLVFJBQ0VfSU5MX0hFQURFUiBcCiAgICAgImFic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNr
dHJhY2VfYWFyY2g2NC1pbmwuaW5jIgogIyBlbGlmIGRlZmluZWQoX19hcm1fXykKKy8vIE5vdGU6
IFdoZW4gdXNpbmcgZ2xpYmMgdGhpcyBtYXkgcmVxdWlyZSAtZnVud2luZC10YWJsZXMgdG8gZnVu
Y3Rpb24gcHJvcGVybHkuCiAjZGVmaW5lIEFCU0xfU1RBQ0tUUkFDRV9JTkxfSEVBREVSIFwKLSAg
ICAiYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9hcm0taW5sLmluYyIKKyAgImFi
c2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfZ2VuZXJpYy1pbmwuaW5jIgogIyBlbHNl
CiAjZGVmaW5lIEFCU0xfU1RBQ0tUUkFDRV9JTkxfSEVBREVSIFwKICAgICJhYnNsL2RlYnVnZ2lu
Zy9pbnRlcm5hbC9zdGFja3RyYWNlX3VuaW1wbGVtZW50ZWQtaW5sLmluYyIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX2dlbmVyaWMtaW5sLmluYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX2dlbmVyaWMtaW5sLmluYwppbmRleCAy
YzljYTQxMGM2MC4uMmU4NzZmZWY5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRl
cm5hbC9zdGFja3RyYWNlX2dlbmVyaWMtaW5sLmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50
ZXJuYWwvc3RhY2t0cmFjZV9nZW5lcmljLWlubC5pbmMKQEAgLTEyLDEzICsxMiw0OCBAQAogI2Rl
ZmluZSBBQlNMX0RFQlVHR0lOR19JTlRFUk5BTF9TVEFDS1RSQUNFX0dFTkVSSUNfSU5MX0hfCiAK
ICNpbmNsdWRlIDxleGVjaW5mby5oPgorI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxjc3Ry
aW5nPgogCiAjaW5jbHVkZSAiYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5oIgogCisvLyBTb21l
dGltZXMsIHdlIGNhbiB0cnkgdG8gZ2V0IGEgc3RhY2sgdHJhY2UgZnJvbSB3aXRoaW4gYSBzdGFj
aworLy8gdHJhY2UsIGJlY2F1c2Ugd2UgZG9uJ3QgYmxvY2sgc2lnbmFscyBpbnNpZGUgdGhpcyBj
b2RlICh3aGljaCB3b3VsZCBiZSB0b28KKy8vIGV4cGVuc2l2ZTogdGhlIHR3byBleHRyYSBzeXN0
ZW0gY2FsbHMgcGVyIHN0YWNrIHRyYWNlIGRvIG1hdHRlciBoZXJlKS4KKy8vIFRoYXQgY2FuIGNh
dXNlIGEgc2VsZi1kZWFkbG9jay4KKy8vIFByb3RlY3QgYWdhaW5zdCBzdWNoIHJlZW50cmFudCBj
YWxsIGJ5IGZhaWxpbmcgdG8gZ2V0IGEgc3RhY2sgdHJhY2UuCisvLworLy8gV2UgdXNlIF9fdGhy
ZWFkIGhlcmUgYmVjYXVzZSB0aGUgY29kZSBoZXJlIGlzIGV4dHJlbWVseSBsb3cgbGV2ZWwgLS0g
aXQgaXMKKy8vIGNhbGxlZCB3aGlsZSBjb2xsZWN0aW5nIHN0YWNrIHRyYWNlcyBmcm9tIHdpdGhp
biBtYWxsb2MgYW5kIG1tYXAsIGFuZCB0aHVzCisvLyBjYW4gbm90IGNhbGwgYW55dGhpbmcgd2hp
Y2ggbWlnaHQgY2FsbCBtYWxsb2Mgb3IgbW1hcCBpdHNlbGYuCitzdGF0aWMgX190aHJlYWQgaW50
IHJlY3Vyc2l2ZSA9IDA7CisKKy8vIFRoZSBzdGFjayB0cmFjZSBmdW5jdGlvbiBtaWdodCBiZSBp
bnZva2VkIHZlcnkgZWFybHkgaW4gdGhlIHByb2dyYW0ncworLy8gZXhlY3V0aW9uIChlLmcuIGZy
b20gdGhlIHZlcnkgZmlyc3QgbWFsbG9jIGlmIHVzaW5nIHRjbWFsbG9jKS4gQWxzbywgdGhlCisv
LyBnbGliYyBpbXBsZW1lbnRhdGlvbiBpdHNlbGYgd2lsbCB0cmlnZ2VyIG1hbGxvYyB0aGUgZmly
c3QgdGltZSBpdCBpcyBjYWxsZWQuCisvLyBBcyBzdWNoLCB3ZSBzdXBwcmVzcyB1c2FnZSBvZiBi
YWNrdHJhY2UgZHVyaW5nIHRoaXMgZWFybHkgc3RhZ2Ugb2YgZXhlY3V0aW9uLgorc3RhdGljIHN0
ZDo6YXRvbWljPGJvb2w+IGRpc2FibGVfc3RhY2t0cmFjZXModHJ1ZSk7ICAvLyBEaXNhYmxlZCB1
bnRpbCBoZWFsdGh5LgorLy8gV2FpdGluZyB1bnRpbCBzdGF0aWMgaW5pdGlhbGl6ZXJzIHJ1biBz
ZWVtcyB0byBiZSBsYXRlIGVub3VnaC4KKy8vIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBpbnRvIHN0
YWNrdHJhY2UuY2Mgc28gdGhpcyB3aWxsIG9ubHkgcnVuIG9uY2UuCitzdGF0aWMgaW50IHN0YWNr
dHJhY2VzX2VuYWJsZXIgPSBbXSgpIHsKKyAgdm9pZCogdW51c2VkX3N0YWNrWzFdOworICAvLyBG
b3JjZSB0aGUgZmlyc3QgYmFja3RyYWNlIHRvIGhhcHBlbiBlYXJseSB0byBnZXQgdGhlIG9uZS10
aW1lIHNoYXJlZCBsaWIKKyAgLy8gbG9hZGluZyAoYWxsb2NhdGlvbikgb3V0IG9mIHRoZSB3YXku
IEFmdGVyIHRoZSBmaXJzdCBjYWxsIGl0IGlzIG11Y2ggc2FmZXIKKyAgLy8gdG8gdXNlIGJhY2t0
cmFjZSBmcm9tIGEgc2lnbmFsIGhhbmRsZXIgaWYgd2UgY3Jhc2ggc29tZXdoZXJlIGxhdGVyLgor
ICBiYWNrdHJhY2UodW51c2VkX3N0YWNrLCAxKTsKKyAgZGlzYWJsZV9zdGFja3RyYWNlcy5zdG9y
ZShmYWxzZSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIHJldHVybiAwOworfSgpOwor
CiB0ZW1wbGF0ZSA8Ym9vbCBJU19TVEFDS19GUkFNRVMsIGJvb2wgSVNfV0lUSF9DT05URVhUPgog
c3RhdGljIGludCBVbndpbmRJbXBsKHZvaWQqKiByZXN1bHQsIGludCogc2l6ZXMsIGludCBtYXhf
ZGVwdGgsIGludCBza2lwX2NvdW50LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnVjcCwgaW50ICptaW5fZHJvcHBlZF9mcmFtZXMpIHsKKyAgaWYgKHJlY3Vyc2l2ZSB8fCBkaXNh
YmxlX3N0YWNrdHJhY2VzLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkpIHsKKyAgICBy
ZXR1cm4gMDsKKyAgfQorICArK3JlY3Vyc2l2ZTsKKworICBzdGF0aWNfY2FzdDx2b2lkPih1Y3Ap
OyAgLy8gVW51c2VkLgogICBzdGF0aWMgY29uc3QgaW50IGtTdGFja0xlbmd0aCA9IDY0OwogICB2
b2lkICogc3RhY2tba1N0YWNrTGVuZ3RoXTsKICAgaW50IHNpemU7CkBAIC00NSw2ICs4MCw4IEBA
IHN0YXRpYyBpbnQgVW53aW5kSW1wbCh2b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLCBpbnQgbWF4
X2RlcHRoLCBpbnQgc2tpcF9jb3VudCwKICAgICB9CiAgIH0KIAorICAtLXJlY3Vyc2l2ZTsKKwog
ICByZXR1cm4gcmVzdWx0X2NvdW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcv
aW50ZXJuYWwvc3RhY2t0cmFjZV9wb3dlcnBjLWlubC5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50
ZXJuYWwvc3RhY2t0cmFjZV9wb3dlcnBjLWlubC5pbmMKaW5kZXggODYwYWMyYjNlNTguLjNhMDcw
ZWU0NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9w
b3dlcnBjLWlubC5pbmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2Vf
cG93ZXJwYy1pbmwuaW5jCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CkBAIC0xNCw4ICsxNCw4IEBACiAvLwogLy8gUHJvZHVjZSBzdGFjayB0cmFjZS4gIEknbSBndWVz
c2luZyAoaG9waW5nISkgdGhlIGNvZGUgaXMgbXVjaCBsaWtlCiAvLyBmb3IgeDg2LiAgRm9yIGFw
cGxlIG1hY2hpbmVzLCBhdCBsZWFzdCwgaXQgc2VlbXMgdG8gYmU7IHNlZQotLy8gICAgaHR0cDov
L2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9tYWMvcnVudGltZWh0bWwvUlRBcmNo
LTU5Lmh0bWwKLS8vICAgIGh0dHA6Ly93d3cubGludXgtZm91bmRhdGlvbi5vcmcvc3BlYy9FTEYv
cHBjNjQvUFBDLWVsZjY0YWJpLTEuOS5odG1sI1NUQUNLCisvLyAgICBodHRwczovL2RldmVsb3Bl
ci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9tYWMvcnVudGltZWh0bWwvUlRBcmNoLTU5Lmh0bWwK
Ky8vICAgIGh0dHBzOi8vd3d3LmxpbnV4LWZvdW5kYXRpb24ub3JnL3NwZWMvRUxGL3BwYzY0L1BQ
Qy1lbGY2NGFiaS0xLjkuaHRtbCNTVEFDSwogLy8gTGludXggaGFzIHNpbWlsYXIgY29kZTogaHR0
cDovL3BhdGNod29yay5vemxhYnMub3JnL2xpbnV4cHBjL3BhdGNoP2lkPTg4ODIKIAogI2lmbmRl
ZiBBQlNMX0RFQlVHR0lOR19JTlRFUk5BTF9TVEFDS1RSQUNFX1BPV0VSUENfSU5MX0hfCkBAIC0x
NjIsNyArMTYyLDcgQEAgQUJTTF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZICAgLy8gTWF5
IHJlYWQgcmFuZG9tIGVsZW1lbnRzIGZyb20gc3RhY2suCiBzdGF0aWMgaW50IFVud2luZEltcGwo
dm9pZCoqIHJlc3VsdCwgaW50KiBzaXplcywgaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdWNwLCBpbnQgKm1pbl9kcm9wcGVk
X2ZyYW1lcykgewogICB2b2lkICoqc3A7Ci0gIC8vIEFwcGxlIE9TIFggdXNlcyBhbiBvbGQgdmVy
c2lvbiBvZiBnbnUgYXMgLS0gYm90aCBEYXJ3aW4gNy45LjAgKFBhbnRoZXIpCisgIC8vIEFwcGxl
IG1hY09TIHVzZXMgYW4gb2xkIHZlcnNpb24gb2YgZ251IGFzIC0tIGJvdGggRGFyd2luIDcuOS4w
IChQYW50aGVyKQogICAvLyBhbmQgRGFyd2luIDguOC4xIChUaWdlcikgdXNlIGFzIDEuMzguICBU
aGlzIG1lYW5zIHdlIGhhdmUgdG8gdXNlIGEKICAgLy8gZGlmZmVyZW50IGFzbSBzeW50YXguICBJ
IGRvbid0IGtub3cgcXVpdGUgdGhlIGJlc3Qgd2F5IHRvIGRpc2NyaW1pbmF0ZQogICAvLyBzeXN0
ZW1zIHVzaW5nIHRoZSBvbGQgYXMgZnJvbSB0aGUgbmV3IG9uZTsgSSd2ZSBnb25lIHdpdGggX19B
UFBMRV9fLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2Vf
d2luMzItaW5sLmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3dpbjMy
LWlubC5pbmMKaW5kZXggYThmOGE1NmFmYjMuLmI0NjQ5MWY4MTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV93aW4zMi1pbmwuaW5jCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3dpbjMyLWlubC5pbmMKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTMyLDcgKzMyLDcgQEAKIC8vIHNlcnZl
ci4KIC8vCiAvLyBUaGlzIGNvZGUgaXMgaW5zcGlyZWQgYnkgYSBwYXRjaCBmcm9tIERhdmlkIFZp
dGVrOgotLy8gICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXBlcmZ0b29scy9pc3N1
ZXMvZGV0YWlsP2lkPTgzCisvLyAgIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXBl
cmZ0b29scy9pc3N1ZXMvZGV0YWlsP2lkPTgzCiAKICNpZm5kZWYgQUJTTF9ERUJVR0dJTkdfSU5U
RVJOQUxfU1RBQ0tUUkFDRV9XSU4zMl9JTkxfSF8KICNkZWZpbmUgQUJTTF9ERUJVR0dJTkdfSU5U
RVJOQUxfU1RBQ0tUUkFDRV9XSU4zMl9JTkxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9pbnRlcm5hbC9zdGFja3RyYWNlX3g4Ni1pbmwuaW5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVy
bmFsL3N0YWNrdHJhY2VfeDg2LWlubC5pbmMKaW5kZXggYWM4NWI5MjAzMzIuLjI1YWE4YmRmOGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5s
LmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5sLmlu
YwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL2ludGVybmFsL2FkZHJlc3NfaXNfcmVhZGFi
bGUuaCIKICNpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC92ZHNvX3N1cHBvcnQuaCIg
IC8vIGEgbm8tb3Agb24gbm9uLWVsZiBvciBub24tZ2xpYmMgc3lzdGVtcwogI2luY2x1ZGUgImFi
c2wvZGVidWdnaW5nL3N0YWNrdHJhY2UuaCIKKwogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5h
bC9yYXdfbG9nZ2luZy5oIgogCiAjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoX19p
Mzg2X18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3ltYm9saXplLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3ltYm9saXplLmgKaW5kZXggOGQ5MjZmZWM0OGEu
LjNlNTM3ODkzMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3ltYm9s
aXplLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N5bWJvbGl6ZS5oCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yMCw3ICsyMCw2IEBACiAKICNp
bmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPGNzdGRpbnQ+Ci0jaW5jbHVkZSAiYWJzbC9iYXNl
L3BvcnQuaCIgIC8vIE5lZWRlZCBmb3Igc3RyaW5nIHZzIHN0ZDo6c3RyaW5nCiAKICNpZmRlZiBB
QlNMX0lOVEVSTkFMX0hBVkVfRUxGX1NZTUJPTElaRQogI2Vycm9yIEFCU0xfSU5URVJOQUxfSEFW
RV9FTEZfU1lNQk9MSVpFIGNhbm5vdCBiZSBkaXJlY3RseSBzZXQKQEAgLTQyLDkgKzQxLDkgQEAg
bmFtZXNwYWNlIGRlYnVnZ2luZ19pbnRlcm5hbCB7CiAvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vz
czsgb3RoZXJ3aXNlIHJldHVybnMgZmFsc2UgaW4gY2FzZSBvZiBlcnJvcnMuCiAvLwogLy8gVGhp
cyBpcyBub3QgYXN5bmMtc2lnbmFsLXNhZmUuCi1ib29sIEZvckVhY2hTZWN0aW9uKAotICAgIGlu
dCBmZCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBj
b25zdCBFbGZXKFNoZHIpICYpPiYKLSAgICAgICAgICAgICAgICBjYWxsYmFjayk7Citib29sIEZv
ckVhY2hTZWN0aW9uKGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpmdW5j
dGlvbjxib29sKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRWxmVyhTaGRyKSAmKT4mIGNhbGxiYWNrKTsK
IAogLy8gR2V0cyB0aGUgc2VjdGlvbiBoZWFkZXIgZm9yIHRoZSBnaXZlbiBuYW1lLCBpZiBpdCBl
eGlzdHMuIFJldHVybnMgdHJ1ZSBvbgogLy8gc3VjY2Vzcy4gT3RoZXJ3aXNlLCByZXR1cm5zIGZh
bHNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3Zkc29fc3VwcG9ydC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC92ZHNvX3N1cHBvcnQuY2MKaW5kZXggZTgxMjll
ODdkY2EuLjIzYzMwODQ3NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwv
dmRzb19zdXBwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC92ZHNvX3N1cHBv
cnQuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC92ZHNvX3N1cHBvcnQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVn
Z2luZy9pbnRlcm5hbC92ZHNvX3N1cHBvcnQuaAppbmRleCA4MDAyYzc0MDVmYS4uOTg5NWI0OGRk
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC92ZHNvX3N1cHBvcnQuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvdmRzb19zdXBwb3J0LmgKQEAgLTUsNyArNSw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9sZWFrX2NoZWNrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2suY2MKaW5kZXggZTAx
ZTVmOGM5MzcuLmZmZTNkMWJkYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19j
aGVjay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVjay5jYwpAQCAtNCwxMyArNCwx
NCBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIC8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCiAvLyBXcmFwcGVy
cyBhcm91bmQgbHNhbl9pbnRlcmZhY2UgZnVuY3Rpb25zLgogLy8gV2hlbiBsc2FuIGlzIG5vdCBs
aW5rZWQgaW4sIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IGF2YWlsYWJsZSwKIC8vIHRoZXJlZm9y
ZSBBYnNlaWwgY29kZSB3aGljaCBkZXBlbmRzIG9uIHRoZXNlIGZ1bmN0aW9ucyBpcyBjb25kaXRp
b25lZCBvbiB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVjay5oCmluZGV4IGM5MzA2ODRlOTU5Li40ZDQ4OWM1ODI4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2suaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvbGVha19jaGVjay5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVja19kaXNhYmxlLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2tfZGlzYWJsZS5jYwppbmRleCBkZjIyYzFjYWU5
MS4uOTI0ZDZlM2Q1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrX2Rp
c2FibGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2tfZGlzYWJsZS5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZGVidWdnaW5nL2xlYWtfY2hlY2tfZmFpbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtf
Y2hlY2tfZmFpbF90ZXN0LmNjCmluZGV4IGJmNTQxZmU4NDE1Li4yODg3Y2VhYjE0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2tfZmFpbF90ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9sZWFrX2NoZWNrX2ZhaWxfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hl
Y2tfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrX3Rlc3QuY2MKaW5kZXggZmVi
ZDFlZTRmOTIuLjkzYTdlZGQyZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19j
aGVja190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrX3Rlc3QuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9zdGFja3RyYWNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N0YWNrdHJhY2UuY2MK
aW5kZXggNDYzZmFkMjY5YzEuLjlkZTg3ODJmNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dp
bmcvc3RhY2t0cmFjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDYsNiArNDYsNyBAQAog
I2luY2x1ZGUgQUJTTF9TVEFDS1RSQUNFX0lOTF9IRUFERVIKICNlbHNlCiAjIGVycm9yIENhbm5v
dCBjYWxjdWxhdGUgc3RhY2sgdHJhY2U6IHdpbGwgbmVlZCB0byB3cml0ZSBmb3IgeW91ciBlbnZp
cm9ubWVudAorCiAjIGluY2x1ZGUgImFic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2Vf
YWFyY2g2NC1pbmwuaW5jIgogIyBpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFj
a3RyYWNlX2FybS1pbmwuaW5jIgogIyBpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9z
dGFja3RyYWNlX2dlbmVyaWMtaW5sLmluYyIKQEAgLTgwLDI5ICs4MSwyOSBAQCBBQlNMX0FUVFJJ
QlVURV9BTFdBWVNfSU5MSU5FIGlubGluZSBpbnQgVW53aW5kKHZvaWQqKiByZXN1bHQsIGludCog
c2l6ZXMsCiAKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotQUJTTF9BVFRSSUJVVEVfTk9J
TkxJTkUKLWludCBHZXRTdGFja0ZyYW1lcyh2b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLCBpbnQg
bWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgeworQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUgQUJT
TF9BVFRSSUJVVEVfTk9fVEFJTF9DQUxMIGludCBHZXRTdGFja0ZyYW1lcygKKyAgICB2b2lkKiog
cmVzdWx0LCBpbnQqIHNpemVzLCBpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgewogICBy
ZXR1cm4gVW53aW5kPHRydWUsIGZhbHNlPihyZXN1bHQsIHNpemVzLCBtYXhfZGVwdGgsIHNraXBf
Y291bnQsIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwog
fQogCi1BQlNMX0FUVFJJQlVURV9OT0lOTElORQotaW50IEdldFN0YWNrRnJhbWVzV2l0aENvbnRl
eHQodm9pZCoqIHJlc3VsdCwgaW50KiBzaXplcywgaW50IG1heF9kZXB0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50LCBjb25zdCB2b2lkKiB1YywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWluX2Ryb3BwZWRfZnJhbWVzKSB7CitBQlNM
X0FUVFJJQlVURV9OT0lOTElORSBBQlNMX0FUVFJJQlVURV9OT19UQUlMX0NBTEwgaW50CitHZXRT
dGFja0ZyYW1lc1dpdGhDb250ZXh0KHZvaWQqKiByZXN1bHQsIGludCogc2l6ZXMsIGludCBtYXhf
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50LCBjb25zdCB2
b2lkKiB1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBtaW5fZHJvcHBlZF9mcmFt
ZXMpIHsKICAgcmV0dXJuIFVud2luZDx0cnVlLCB0cnVlPihyZXN1bHQsIHNpemVzLCBtYXhfZGVw
dGgsIHNraXBfY291bnQsIHVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9kcm9w
cGVkX2ZyYW1lcyk7CiB9CiAKLUFCU0xfQVRUUklCVVRFX05PSU5MSU5FCi1pbnQgR2V0U3RhY2tU
cmFjZSh2b2lkKiogcmVzdWx0LCBpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgeworQUJT
TF9BVFRSSUJVVEVfTk9JTkxJTkUgQUJTTF9BVFRSSUJVVEVfTk9fVEFJTF9DQUxMIGludCBHZXRT
dGFja1RyYWNlKAorICAgIHZvaWQqKiByZXN1bHQsIGludCBtYXhfZGVwdGgsIGludCBza2lwX2Nv
dW50KSB7CiAgIHJldHVybiBVbndpbmQ8ZmFsc2UsIGZhbHNlPihyZXN1bHQsIG51bGxwdHIsIG1h
eF9kZXB0aCwgc2tpcF9jb3VudCwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogfQogCi1BQlNMX0FUVFJJQlVURV9OT0lOTElORQotaW50IEdldFN0YWNr
VHJhY2VXaXRoQ29udGV4dCh2b2lkKiogcmVzdWx0LCBpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9j
b3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogdWMsIGludCog
bWluX2Ryb3BwZWRfZnJhbWVzKSB7CitBQlNMX0FUVFJJQlVURV9OT0lOTElORSBBQlNMX0FUVFJJ
QlVURV9OT19UQUlMX0NBTEwgaW50CitHZXRTdGFja1RyYWNlV2l0aENvbnRleHQodm9pZCoqIHJl
c3VsdCwgaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCogdWMsIGludCogbWluX2Ryb3BwZWRfZnJhbWVzKSB7CiAgIHJldHVy
biBVbndpbmQ8ZmFsc2UsIHRydWU+KHJlc3VsdCwgbnVsbHB0ciwgbWF4X2RlcHRoLCBza2lwX2Nv
dW50LCB1YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluX2Ryb3BwZWRfZnJhbWVz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvc3RhY2t0cmFjZS5oCmluZGV4IDhiODMxZTI2ODE1Li4zZmMxYzAzZjNlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N0YWNrdHJhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dp
bmcvc3RhY2t0cmFjZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdn
aW5nL3N5bWJvbGl6ZS5jYwppbmRleCBhMzVlMjRjYzI5YS4uMjRlM2E3ZjBhMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5
bWJvbGl6ZS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5
bWJvbGl6ZS5oCmluZGV4IDI0ZTZlNjQ3MWM2Li5hNzNkYmQ5ZWFiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZGVidWdnaW5nL3N5bWJvbGl6ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemUu
aApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZV9lbGYuaW5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJv
bGl6ZV9lbGYuaW5jCmluZGV4IGIxNmE0MmE2MmM5Li40NjBkZDAzYTFkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZV9lbGYuaW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9z
eW1ib2xpemVfZWxmLmluYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMzA1LDcgKzMwNSw3IEBAIGNsYXNzIFN5bWJvbGl6ZXIgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnRtcF9idWYsIGludCB0bXBfYnVmX3Np
emUpOwogCiAgIGVudW0gewotICAgIFNZTUJPTF9CVUZfU0laRSA9IDIwNDgsCisgICAgU1lNQk9M
X0JVRl9TSVpFID0gMzA3MiwKICAgICBUTVBfQlVGX1NJWkUgPSAxMDI0LAogICAgIFNZTUJPTF9D
QUNIRV9MSU5FUyA9IDEyOCwKICAgfTsKQEAgLTMzMyw3ICszMzMsMTEgQEAgc3RhdGljIHN0ZDo6
YXRvbWljPFN5bWJvbGl6ZXIgKj4gZ19jYWNoZWRfc3ltYm9saXplcjsKIH0gIC8vIG5hbWVzcGFj
ZQogCiBzdGF0aWMgaW50IFN5bWJvbGl6ZXJTaXplKCkgeworI2lmIGRlZmluZWQoX193YXNtX18p
IHx8IGRlZmluZWQoX19hc21qc19fKQogICBpbnQgcGFnZXNpemUgPSBnZXRwYWdlc2l6ZSgpOwor
I2Vsc2UKKyAgaW50IHBhZ2VzaXplID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOworI2VuZGlmCiAg
IHJldHVybiAoKHNpemVvZihTeW1ib2xpemVyKSAtIDEpIC8gcGFnZXNpemUgKyAxKSAqIHBhZ2Vz
aXplOwogfQogCkBAIC03NTgsMzcgKzc2MiwyNyBAQCBGaW5kU3ltYm9sUmVzdWx0IFN5bWJvbGl6
ZXI6OkdldFN5bWJvbEZyb21PYmplY3RGaWxlKAogICAgIH0KICAgfQogCi0gIC8vIENvbnN1bHQg
YSByZWd1bGFyIHN5bWJvbCB0YWJsZSBmaXJzdC4KLSAgaWYgKCFHZXRTZWN0aW9uSGVhZGVyQnlU
eXBlKG9iai5mZCwgb2JqLmVsZl9oZWFkZXIuZV9zaG51bSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9iai5lbGZfaGVhZGVyLmVfc2hvZmYsIFNIVF9TWU1UQUIsICZzeW10YWIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBfYnVmLCB0bXBfYnVmX3NpemUpKSB7Ci0g
ICAgcmV0dXJuIFNZTUJPTF9OT1RfRk9VTkQ7Ci0gIH0KLSAgaWYgKCFSZWFkRnJvbU9mZnNldEV4
YWN0KAotICAgICAgICAgIG9iai5mZCwgJnN0cnRhYiwgc2l6ZW9mKHN0cnRhYiksCi0gICAgICAg
ICAgb2JqLmVsZl9oZWFkZXIuZV9zaG9mZiArIHN5bXRhYi5zaF9saW5rICogc2l6ZW9mKHN5bXRh
YikpKSB7Ci0gICAgcmV0dXJuIFNZTUJPTF9OT1RfRk9VTkQ7Ci0gIH0KLSAgY29uc3QgRmluZFN5
bWJvbFJlc3VsdCByYyA9Ci0gICAgICBGaW5kU3ltYm9sKHBjLCBvYmouZmQsIG91dCwgb3V0X3Np
emUsIHJlbG9jYXRpb24sICZzdHJ0YWIsICZzeW10YWIsCi0gICAgICAgICAgICAgICAgIG9wZF9w
dHIsIHRtcF9idWYsIHRtcF9idWZfc2l6ZSk7Ci0gIGlmIChyYyAhPSBTWU1CT0xfTk9UX0ZPVU5E
KSB7Ci0gICAgcmV0dXJuIHJjOyAgLy8gRm91bmQgdGhlIHN5bWJvbCBpbiBhIHJlZ3VsYXIgc3lt
Ym9sIHRhYmxlLgorICAvLyBDb25zdWx0IGEgcmVndWxhciBzeW1ib2wgdGFibGUsIHRoZW4gZmFs
bCBiYWNrIHRvIHRoZSBkeW5hbWljIHN5bWJvbCB0YWJsZS4KKyAgZm9yIChjb25zdCBhdXRvIHN5
bWJvbF90YWJsZV90eXBlIDoge1NIVF9TWU1UQUIsIFNIVF9EWU5TWU19KSB7CisgICAgaWYgKCFH
ZXRTZWN0aW9uSGVhZGVyQnlUeXBlKG9iai5mZCwgb2JqLmVsZl9oZWFkZXIuZV9zaG51bSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmVsZl9oZWFkZXIuZV9zaG9mZiwgc3lt
Ym9sX3RhYmxlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzeW10YWIs
IHRtcF9idWYsIHRtcF9idWZfc2l6ZSkpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBp
ZiAoIVJlYWRGcm9tT2Zmc2V0RXhhY3QoCisgICAgICAgICAgICBvYmouZmQsICZzdHJ0YWIsIHNp
emVvZihzdHJ0YWIpLAorICAgICAgICAgICAgb2JqLmVsZl9oZWFkZXIuZV9zaG9mZiArIHN5bXRh
Yi5zaF9saW5rICogc2l6ZW9mKHN5bXRhYikpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9Cisg
ICAgY29uc3QgRmluZFN5bWJvbFJlc3VsdCByYyA9CisgICAgICAgIEZpbmRTeW1ib2wocGMsIG9i
ai5mZCwgb3V0LCBvdXRfc2l6ZSwgcmVsb2NhdGlvbiwgJnN0cnRhYiwgJnN5bXRhYiwKKyAgICAg
ICAgICAgICAgICAgICBvcGRfcHRyLCB0bXBfYnVmLCB0bXBfYnVmX3NpemUpOworICAgIGlmIChy
YyAhPSBTWU1CT0xfTk9UX0ZPVU5EKSB7CisgICAgICByZXR1cm4gcmM7CisgICAgfQogICB9CiAK
LSAgLy8gSWYgdGhlIHN5bWJvbCBpcyBub3QgZm91bmQsIHRoZW4gY29uc3VsdCBhIGR5bmFtaWMg
c3ltYm9sIHRhYmxlLgotICBpZiAoIUdldFNlY3Rpb25IZWFkZXJCeVR5cGUob2JqLmZkLCBvYmou
ZWxmX2hlYWRlci5lX3NobnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmVs
Zl9oZWFkZXIuZV9zaG9mZiwgU0hUX0RZTlNZTSwgJnN5bXRhYiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRtcF9idWYsIHRtcF9idWZfc2l6ZSkpIHsKLSAgICByZXR1cm4gU1lNQk9M
X05PVF9GT1VORDsKLSAgfQotICBpZiAoIVJlYWRGcm9tT2Zmc2V0RXhhY3QoCi0gICAgICAgICAg
b2JqLmZkLCAmc3RydGFiLCBzaXplb2Yoc3RydGFiKSwKLSAgICAgICAgICBvYmouZWxmX2hlYWRl
ci5lX3Nob2ZmICsgc3ltdGFiLnNoX2xpbmsgKiBzaXplb2Yoc3ltdGFiKSkpIHsKLSAgICByZXR1
cm4gU1lNQk9MX05PVF9GT1VORDsKLSAgfQotICByZXR1cm4gRmluZFN5bWJvbChwYywgb2JqLmZk
LCBvdXQsIG91dF9zaXplLCByZWxvY2F0aW9uLCAmc3RydGFiLCAmc3ltdGFiLAotICAgICAgICAg
ICAgICAgICAgICBvcGRfcHRyLCB0bXBfYnVmLCB0bXBfYnVmX3NpemUpOworICByZXR1cm4gU1lN
Qk9MX05PVF9GT1VORDsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTkyMSw2ICs5MTUsMTQgQEAgc3Rh
dGljIGNvbnN0IGNoYXIgKkdldEhleChjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5k
LAogICByZXR1cm4gcDsKIH0KIAorLy8gTm9ybWFsbHkgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBp
biAicj94IiBtYXBzLgorLy8gT24gdGhlIFBvd2VyUEMsIGZ1bmN0aW9uIHBvaW50ZXJzIHBvaW50
IHRvIGRlc2NyaXB0b3JzIGluIHRoZSAub3BkCisvLyBzZWN0aW9uLiAgVGhlIGRlc2NyaXB0b3Jz
IHRoZW1zZWx2ZXMgYXJlIG5vdCBleGVjdXRhYmxlIGNvZGUsIHNvCisvLyB3ZSBuZWVkIHRvIHJl
bGF4IHRoZSBjaGVjayBiZWxvdyB0byAicj8/Ii4KK3N0YXRpYyBib29sIFNob3VsZFVzZU1hcHBp
bmcoY29uc3QgY2hhciAqY29uc3QgZmxhZ3MpIHsKKyAgcmV0dXJuIGZsYWdzWzBdID09ICdyJyAm
JiAoa1BsYXRmb3JtVXNlc09QRFNlY3Rpb25zIHx8IGZsYWdzWzJdID09ICd4Jyk7Cit9CisKIC8v
IFJlYWQgL3Byb2Mvc2VsZi9tYXBzIGFuZCBydW4gImNhbGxiYWNrIiBmb3IgZWFjaCBtbWFwcGVk
IGZpbGUgZm91bmQuICBJZgogLy8gImNhbGxiYWNrIiByZXR1cm5zIGZhbHNlLCBzdG9wIHNjYW5u
aW5nIGFuZCByZXR1cm4gdHJ1ZS4gRWxzZSBjb250aW51ZQogLy8gc2Nhbm5pbmcgL3Byb2Mvc2Vs
Zi9tYXBzLiBSZXR1cm4gdHJ1ZSBpZiBubyBwYXJzZSBlcnJvciBpcyBmb3VuZC4KQEAgLTk5MCwx
MiArOTkyLDggQEAgc3RhdGljIEFCU0xfQVRUUklCVVRFX05PSU5MSU5FIGJvb2wgUmVhZEFkZHJN
YXAoCiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gQ2hlY2sgZmxhZ3MuICBO
b3JtYWxseSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluICJyLXgiIG1hcHMuICBPbgotICAgIC8v
IHRoZSBQb3dlclBDLCBmdW5jdGlvbiBwb2ludGVycyBwb2ludCB0byBkZXNjcmlwdG9ycyBpbiB0
aGUgLm9wZAotICAgIC8vIHNlY3Rpb24uICBUaGUgZGVzY3JpcHRvcnMgdGhlbXNlbHZlcyBhcmUg
bm90IGV4ZWN1dGFibGUgY29kZS4gIFNvCi0gICAgLy8gd2UgbmVlZCB0byByZWxheCB0aGUgY2hl
Y2sgYmVsb3cgdG8gInIqKiIuCi0gICAgaWYgKG1lbWNtcChmbGFnc19zdGFydCwgInIteCIsIDMp
ICE9IDAgJiYgIC8vIE5vdCBhICJyLXgiIG1hcC4KLSAgICAgICAgIShrUGxhdGZvcm1Vc2VzT1BE
U2VjdGlvbnMgJiYgZmxhZ3Nfc3RhcnRbMF0gPT0gJ3InKSkgeworICAgIC8vIENoZWNrIGZsYWdz
LgorICAgIGlmICghU2hvdWxkVXNlTWFwcGluZyhmbGFnc19zdGFydCkpIHsKICAgICAgIGNvbnRp
bnVlOyAgLy8gV2Ugc2tpcCB0aGlzIG1hcC4KICAgICB9CiAgICAgKytjdXJzb3I7ICAvLyBTa2lw
ICcgJy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfdGVzdC5jYwppbmRleCA4MDI5ZmJlOWQyZS4uMDgwNjhj
MzA3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEwNyw3ICsxMDcsOCBAQCBzdGF0aWMgY29uc3QgY2hh
ciAqVHJ5U3ltYm9saXplV2l0aExpbWl0KHZvaWQgKnBjLCBpbnQgbGltaXQpIHsKICAgICBBQlNM
X1JBV19DSEVDSyhzdHJubGVuKGhlYXBfYnVmZmVyLmdldCgpLCBsaW1pdCkgPCBsaW1pdCwKICAg
ICAgICAgICAgICAgICAgICAiYWJzbDo6U3ltYm9saXplKCkgZGlkIG5vdCBwcm9wZXJseSB0ZXJt
aW5hdGUgdGhlIHN0cmluZyIpOwogICAgIHN0cm5jcHkodHJ5X3N5bWJvbGl6ZV9idWZmZXIsIGhl
YXBfYnVmZmVyLmdldCgpLAotICAgICAgICAgICAgc2l6ZW9mKHRyeV9zeW1ib2xpemVfYnVmZmVy
KSk7CisgICAgICAgICAgICBzaXplb2YodHJ5X3N5bWJvbGl6ZV9idWZmZXIpIC0gMSk7CisgICAg
dHJ5X3N5bWJvbGl6ZV9idWZmZXJbc2l6ZW9mKHRyeV9zeW1ib2xpemVfYnVmZmVyKSAtIDFdID0g
J1wwJzsKICAgfQogCiAgIHJldHVybiBmb3VuZCA/IHRyeV9zeW1ib2xpemVfYnVmZmVyIDogbnVs
bHB0cjsKQEAgLTM5MiwxNiArMzkzLDIwIEBAIFRFU1QoU3ltYm9saXplLCBGb3JFYWNoU2VjdGlv
bikgewogZXh0ZXJuICJDIiB7CiBpbmxpbmUgdm9pZCAqQUJTTF9BVFRSSUJVVEVfQUxXQVlTX0lO
TElORSBpbmxpbmVfZnVuYygpIHsKICAgdm9pZCAqcGMgPSBudWxscHRyOwotI2lmIGRlZmluZWQo
X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKLSAgX19hc21fXyBfX3ZvbGF0aWxlX18o
ImNhbGwgMWY7IDE6IHBvcCAlMCIgOiAiPXIiKHBjKSk7CisjaWYgZGVmaW5lZChfX2kzODZfXykK
KyAgX19hc21fXyBfX3ZvbGF0aWxlX18oImNhbGwgMWY7XG4gMTogcG9wICVbUENdIiA6IFsgUEMg
XSAiPXIiKHBjKSk7CisjZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgIF9fYXNtX18gX192b2xh
dGlsZV9fKCJsZWFxIDAoJSVyaXApLCVbUENdO1xuIiA6IFsgUEMgXSAiPXIiKHBjKSk7CiAjZW5k
aWYKICAgcmV0dXJuIHBjOwogfQogCiB2b2lkICpBQlNMX0FUVFJJQlVURV9OT0lOTElORSBub25f
aW5saW5lX2Z1bmMoKSB7CiAgIHZvaWQgKnBjID0gbnVsbHB0cjsKLSNpZiBkZWZpbmVkKF9faTM4
Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCi0gIF9fYXNtX18gX192b2xhdGlsZV9fKCJjYWxs
IDFmOyAxOiBwb3AgJTAiIDogIj1yIihwYykpOworI2lmIGRlZmluZWQoX19pMzg2X18pCisgIF9f
YXNtX18gX192b2xhdGlsZV9fKCJjYWxsIDFmO1xuIDE6IHBvcCAlW1BDXSIgOiBbIFBDIF0gIj1y
IihwYykpOworI2VsaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorICBfX2FzbV9fIF9fdm9sYXRpbGVf
XygibGVhcSAwKCUlcmlwKSwlW1BDXTtcbiIgOiBbIFBDIF0gIj1yIihwYykpOwogI2VuZGlmCiAg
IHJldHVybiBwYzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfdW5p
bXBsZW1lbnRlZC5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3VuaW1wbGVtZW50ZWQu
aW5jCmluZGV4IDJhM2Y0YWNiMGUxLi43YzU4MGZlNDQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVi
dWdnaW5nL3N5bWJvbGl6ZV91bmltcGxlbWVudGVkLmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcv
c3ltYm9saXplX3VuaW1wbGVtZW50ZWQuaW5jCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0yNiw2ICsyNiw5IEBAIGJvb2wgUmVtb3ZlQWxsU3ltYm9sRGVjb3Jh
dG9ycyh2b2lkKSB7IHJldHVybiBmYWxzZTsgfQogYm9vbCBSZWdpc3RlckZpbGVNYXBwaW5nSGlu
dChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgdWludDY0X3QsIGNvbnN0IGNoYXIgKikgewog
ICByZXR1cm4gZmFsc2U7CiB9Citib29sIEdldEZpbGVNYXBwaW5nSGludChjb25zdCB2b2lkICoq
LCBjb25zdCB2b2lkICoqLCB1aW50NjRfdCAqLCBjb25zdCBjaGFyICoqKSB7CisgIHJldHVybiBm
YWxzZTsKK30KIAogfSAgLy8gbmFtZXNwYWNlIGRlYnVnZ2luZ19pbnRlcm5hbAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3dpbjMyLmluYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9zeW1ib2xpemVfd2luMzIuaW5jCmluZGV4IGUzZmZmNzRkNDkzLi41YTU1ZjI5ZDI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZV93aW4zMi5pbmMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZGVidWdnaW5nL3N5bWJvbGl6ZV93aW4zMi5pbmMKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTE2LDggKzE2LDE0IEBACiAvLyBodHRwczovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9tczY4MDU3OCh2PXZzLjg1KS5h
c3B4CiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisKKy8vIE1TVkMgaGVhZGVyIERiZ0hlbHAuaCBo
YXMgYSB3YXJuaW5nIGZvciBhbiBpZ25vcmVkIHR5cGVkZWYuCisjcHJhZ21hIHdhcm5pbmcocHVz
aCkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQwOTEpCiAjaW5jbHVkZSA8RGJnSGVscC5oPgot
I3ByYWdtYSBjb21tZW50KGxpYiwgIkRiZ0hlbHAiKQorI3ByYWdtYSB3YXJuaW5nKHBvcCkKKwor
I3ByYWdtYSBjb21tZW50KGxpYiwgImRiZ2hlbHAubGliIikKIAogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KICNpbmNsdWRlIDxjc3RyaW5nPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvQlVJTEQuYmF6
ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9mbGFncy9CVUlMRC5iYXplbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMmZlNjFlYWE4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9C
VUlMRC5iYXplbApAQCAtMCwwICsxLDM4NCBAQAorIworIyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFi
c2VpbCBBdXRob3JzLgorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisjCisKK2xvYWQoCisgICAgIi8vYWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwK
KyAgICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRTIiwK
KyAgICAiQUJTTF9URVNUX0NPUFRTIiwKKykKKworcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkg
PSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKKworbGljZW5zZXMoWyJub3RpY2UiXSkgICMgQXBh
Y2hlIDIuMAorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaW50ZXJuYWwiLAorICAgIHNyY3Mg
PSBbCisgICAgICAgICJpbnRlcm5hbC9wcm9ncmFtX25hbWUuY2MiLAorICAgIF0sCisgICAgaGRy
cyA9IFsKKyAgICAgICAgImludGVybmFsL3BhdGhfdXRpbC5oIiwKKyAgICAgICAgImludGVybmFs
L3Byb2dyYW1fbmFtZS5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkg
PSBbCisgICAgICAgICIvL2Fic2wvZmxhZ3M6X19wa2dfXyIsCisgICAgXSwKKyAgICBkZXBzID0g
WworICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3N5bmNocm9uaXph
dGlvbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImNvbmZpZyIsCisg
ICAgc3JjcyA9IFsKKyAgICAgICAgInVzYWdlX2NvbmZpZy5jYyIsCisgICAgXSwKKyAgICBoZHJz
ID0gWworICAgICAgICAiY29uZmlnLmgiLAorICAgICAgICAidXNhZ2VfY29uZmlnLmgiLAorICAg
IF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjppbnRlcm5hbCIsCisg
ICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL3N0cmlu
Z3MiLAorICAgICAgICAiLy9hYnNsL3N5bmNocm9uaXphdGlvbiIsCisgICAgXSwKKykKKworY2Nf
bGlicmFyeSgKKyAgICBuYW1lID0gIm1hcnNoYWxsaW5nIiwKKyAgICBzcmNzID0gWworICAgICAg
ICAibWFyc2hhbGxpbmcuY2MiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgIm1hcnNo
YWxsaW5nLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAg
Ii8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisg
ICAgICAgICIvL2Fic2wvc3RyaW5nczpzdHJfZm9ybWF0IiwKKyAgICBdLAorKQorCitjY19saWJy
YXJ5KAorICAgIG5hbWUgPSAiaGFuZGxlIiwKKyAgICBzcmNzID0gWworICAgICAgICAiaW50ZXJu
YWwvY29tbWFuZGxpbmVmbGFnLmNjIiwKKyAgICBdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJp
bnRlcm5hbC9jb21tYW5kbGluZWZsYWcuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVG
QVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB2
aXNpYmlsaXR5ID0gWworICAgICAgICAiLy9hYnNsL2ZsYWdzOl9fcGtnX18iLAorICAgIF0sCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb25maWciLAorICAgICAgICAiOm1hcnNoYWxsaW5nIiwK
KyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVy
cyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvc3luY2hyb25p
emF0aW9uIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpvcHRpb25hbCIsCisgICAgXSwKKykKKwor
Y2NfbGlicmFyeSgKKyAgICBuYW1lID0gInJlZ2lzdHJ5IiwKKyAgICBzcmNzID0gWworICAgICAg
ICAiaW50ZXJuYWwvcmVnaXN0cnkuY2MiLAorICAgICAgICAiaW50ZXJuYWwvdHlwZV9lcmFzZWQu
Y2MiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgImludGVybmFsL3JlZ2lzdHJ5Lmgi
LAorICAgICAgICAiaW50ZXJuYWwvdHlwZV9lcmFzZWQuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9
IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKKyAgICB2aXNpYmlsaXR5ID0gWworICAgICAgICAiLy9hYnNsL2ZsYWdzOl9fcGtnX18iLAor
ICAgIF0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb25maWciLAorICAgICAgICAiOmhhbmRs
ZSIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hl
YWRlcnMiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6ZHluYW1pY19hbm5vdGF0aW9ucyIsCisgICAg
ICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0aW9uIiwK
KyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiZmxhZyIsCisgICAgc3JjcyA9
IFsKKyAgICAgICAgImZsYWcuY2MiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgImRl
Y2xhcmUuaCIsCisgICAgICAgICJmbGFnLmgiLAorICAgICAgICAiaW50ZXJuYWwvZmxhZy5oIiwK
KyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29uZmlnIiwK
KyAgICAgICAgIjpoYW5kbGUiLAorICAgICAgICAiOm1hcnNoYWxsaW5nIiwKKyAgICAgICAgIjpy
ZWdpc3RyeSIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpj
b3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgIF0sCispCisKK2Nj
X2xpYnJhcnkoCisgICAgbmFtZSA9ICJ1c2FnZV9pbnRlcm5hbCIsCisgICAgc3JjcyA9IFsKKyAg
ICAgICAgImludGVybmFsL3VzYWdlLmNjIiwKKyAgICBdLAorICAgIGhkcnMgPSBbCisgICAgICAg
ICJpbnRlcm5hbC91c2FnZS5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxp
dHkgPSBbCisgICAgICAgICIvL2Fic2wvZmxhZ3M6X19wa2dfXyIsCisgICAgXSwKKyAgICBkZXBz
ID0gWworICAgICAgICAiOmNvbmZpZyIsCisgICAgICAgICI6ZmxhZyIsCisgICAgICAgICI6aGFu
ZGxlIiwKKyAgICAgICAgIjppbnRlcm5hbCIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisg
ICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0aW9uIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5
KAorICAgIG5hbWUgPSAidXNhZ2UiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJ1c2FnZS5jYyIs
CisgICAgXSwKKyAgICBoZHJzID0gWworICAgICAgICAidXNhZ2UuaCIsCisgICAgXSwKKyAgICBj
b3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOnVzYWdlX2ludGVybmFsIiwKKyAgICAg
ICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb24iLAor
ICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJwYXJzZSIsCisgICAgc3JjcyA9
IFsicGFyc2UuY2MiXSwKKyAgICBoZHJzID0gWworICAgICAgICAiaW50ZXJuYWwvcGFyc2UuaCIs
CisgICAgICAgICJwYXJzZS5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBb
CisgICAgICAgICI6Y29uZmlnIiwKKyAgICAgICAgIjpmbGFnIiwKKyAgICAgICAgIjpoYW5kbGUi
LAorICAgICAgICAiOmludGVybmFsIiwKKyAgICAgICAgIjpyZWdpc3RyeSIsCisgICAgICAgICI6
dXNhZ2UiLAorICAgICAgICAiOnVzYWdlX2ludGVybmFsIiwKKyAgICAgICAgIi8vYWJzbC9zdHJp
bmdzIiwKKyAgICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb24iLAorICAgIF0sCispCisKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgVW5pdCB0ZXN0cyBpbiBhbHBhaGFiZXRpY2FsIG9yZGVyLgor
CitjY190ZXN0KAorICAgIG5hbWUgPSAiY29tbWFuZGxpbmVmbGFnX3Rlc3QiLAorICAgIHNpemUg
PSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJpbnRlcm5hbC9jb21tYW5kbGluZWZs
YWdfdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBs
aW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAi
OmZsYWciLAorICAgICAgICAiOmhhbmRsZSIsCisgICAgICAgICI6cmVnaXN0cnkiLAorICAgICAg
ICAiLy9hYnNsL21lbW9yeSIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVz
dCgKKyAgICBuYW1lID0gImNvbmZpZ190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBz
cmNzID0gWworICAgICAgICAiY29uZmlnX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb25maWciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29v
Z2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9
ICJmbGFnX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAg
ICJmbGFnX3Rlc3QuY2MiLAorICAgICAgICAiZmxhZ190ZXN0X2RlZnMuY2MiLAorICAgIF0sCisg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpmbGFnIiwKKyAgICAgICAgIi8vYWJz
bC9zdHJpbmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWlu
IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAibWFyc2hhbGxpbmdfdGVzdCIs
CisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgIm1hcnNoYWxsaW5n
X3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlu
a29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpt
YXJzaGFsbGluZyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFp
biIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInBhdGhfdXRpbF90ZXN0IiwK
KyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiaW50ZXJuYWwvcGF0
aF91dGlsX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAg
ICAgIjppbnRlcm5hbCIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3Rf
bWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInBhcnNlX3Rlc3QiLAor
ICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJwYXJzZV90ZXN0LmNj
IiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZmxhZyIsCisg
ICAgICAgICI6cGFyc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNs
L2Jhc2U6c2NvcGVkX3NldF9lbnYiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAg
ICAiLy9hYnNsL3R5cGVzOnNwYW4iLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8v
Omd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJwcm9ncmFt
X25hbWVfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAg
ImludGVybmFsL3Byb2dyYW1fbmFtZV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJT
TF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAg
IGRlcHMgPSBbCisgICAgICAgICI6aW50ZXJuYWwiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3Mi
LAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0s
CispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJ0eXBlX2VyYXNlZF90ZXN0IiwKKyAgICBzaXpl
ID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiaW50ZXJuYWwvdHlwZV9lcmFzZWRf
dGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmZs
YWciLAorICAgICAgICAiOnJlZ2lzdHJ5IiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAg
ICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8v
Omd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJ1c2FnZV9j
b25maWdfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAg
InVzYWdlX2NvbmZpZ190ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBb
CisgICAgICAgICI6Y29uZmlnIiwKKyAgICAgICAgIjppbnRlcm5hbCIsCisgICAgICAgICIvL2Fi
c2wvc3RyaW5ncyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFp
biIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInVzYWdlX3Rlc3QiLAorICAg
IHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJpbnRlcm5hbC91c2FnZV90
ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtv
cHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29u
ZmlnIiwKKyAgICAgICAgIjpmbGFnIiwKKyAgICAgICAgIjppbnRlcm5hbCIsCisgICAgICAgICI6
cGFyc2UiLAorICAgICAgICAiOnVzYWdlIiwKKyAgICAgICAgIjp1c2FnZV9pbnRlcm5hbCIsCisg
ICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAg
ICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAgXSwKKykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvQlVJTEQuZ24KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA3M2M3NGFjNGE5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZmxhZ3MvQlVJTEQuZ24KQEAgLTAsMCArMSwyNTIgQEAKKyMgQ29weXJpZ2h0
IDIwMTkgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworaW1wb3J0KCIvL2J1aWxk
X292ZXJyaWRlcy9idWlsZC5nbmkiKQorCisjIFVzYWdlIG9mIEFic2VpbCBpbiBDaHJvbWl1bSBp
cyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRkaW5nIHBy
b2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1bS5vcmcg
YW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3Vu
ZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1BM3J6Ym9U
TGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQoraWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0p
IHsKKyAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCisgICAgIi8vdGhp
cmRfcGFydHkvd2VicnRjLyoiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCisg
ICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCisgIF0KK30gZWxzZSB7CisgIHZp
c2liaWxpdHkgPSBbICIqIiBdCit9CisKKyMgQnVpbGQgdGFyZ2V0cyBpbiB0aGlzIG1vZHVsZSBh
cmUgbWFya2VkIGFzICJ0ZXN0b25seSIgYmVjYXVzZSBpdCBpcyBub3QgY2xlYXIKKyMgaG93IEFC
U0xfRkxBRyB3aWxsIGludGVyYWN0IHdpdGggLy9iYXNlL2NvbW1hbmRfbGluZS5oLgorIyBJZiB0
aGlzIGlzIGEgcHJvYmxlbSwgZmVlbCBmcmVlIHRvIHJlbW92ZSAidGVzdG9ubHkiIGFuZCB1c2Ug
ImFzc2VydF9ub19kZXBzIgorIyBvbiB0aGUgbWFpbiBDaHJvbWUgYmluYXJ5LgorCitzb3VyY2Vf
c2V0KCJpbnRlcm5hbCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAg
ICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJs
aWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29u
ZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImludGVybmFsL3Byb2dyYW1fbmFtZS5jYyIsCisg
IF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9wYXRoX3V0aWwuaCIsCisgICAgImludGVy
bmFsL3Byb2dyYW1fbmFtZS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9zdHJpbmdzIiwK
KyAgICAiLi4vc3luY2hyb25pemF0aW9uIiwKKyAgXQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlz
aWJpbGl0eSArPSBbICI6KiIgXQorfQorCitzb3VyY2Vfc2V0KCJjb25maWciKSB7CisgIHRlc3Rv
bmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9t
aXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
Om5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9k
ZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0gWworICAg
ICJ1c2FnZV9jb25maWcuY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAiY29uZmlnLmgiLAor
ICAgICJ1c2FnZV9jb25maWcuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmludGVybmFsIiwK
KyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi9zdHJpbmdzIiwKKyAgICAiLi4v
c3luY2hyb25pemF0aW9uIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJtYXJzaGFsbGluZyIpIHsK
KyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGls
ZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMg
PSBbCisgICAgIm1hcnNoYWxsaW5nLmNjIiwKKyAgXQorICBwdWJsaWMgPSBbCisgICAgIm1hcnNo
YWxsaW5nLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
KyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisgIF0KK30K
Kworc291cmNlX3NldCgiaGFuZGxlIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAt
PSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3Mg
Kz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBd
CisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5j
bHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50ZXJuYWwvY29tbWFuZGxpbmVm
bGFnLmNjIiwKKyAgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2NvbW1hbmRsaW5lZmxh
Zy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29uZmlnIiwKKyAgICAiOm1hcnNoYWxsaW5n
IiwKKyAgICAiLi4vYmFzZSIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4v
c3RyaW5ncyIsCisgICAgIi4uL3N5bmNocm9uaXphdGlvbiIsCisgICAgIi4uL3R5cGVzOm9wdGlv
bmFsIiwKKyAgXQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICI6KiIgXQor
fQorCitzb3VyY2Vfc2V0KCJyZWdpc3RyeSIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZp
Z3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25m
aWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwK
KyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNs
X2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImludGVybmFsL3JlZ2lzdHJ5
LmNjIiwKKyAgICAiaW50ZXJuYWwvdHlwZV9lcmFzZWQuY2MiLAorICBdCisgIHB1YmxpYyA9IFsK
KyAgICAiaW50ZXJuYWwvcmVnaXN0cnkuaCIsCisgICAgImludGVybmFsL3R5cGVfZXJhc2VkLmgi
LAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb25maWciLAorICAgICI6aGFuZGxlIiwKKyAgICAi
Li4vYmFzZSIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vYmFzZTpkeW5h
bWljX2Fubm90YXRpb25zIiwKKyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3N5bmNocm9uaXph
dGlvbiIsCisgIF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxpdHkgKz0gWyAiOioiIF0K
K30KKworc291cmNlX3NldCgiZmxhZyIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3Mg
LT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdz
ICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAg
XQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2lu
Y2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImZsYWcuY2MiLAorICBdCisgIHB1
YmxpYyA9IFsKKyAgICAiZGVjbGFyZS5oIiwKKyAgICAiZmxhZy5oIiwKKyAgICAiaW50ZXJuYWwv
ZmxhZy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29uZmlnIiwKKyAgICAiOmhhbmRsZSIs
CisgICAgIjptYXJzaGFsbGluZyIsCisgICAgIjpyZWdpc3RyeSIsCisgICAgIi4uL2Jhc2UiLAor
ICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL3N0cmluZ3MiLAorICBdCit9CisK
K3NvdXJjZV9zZXQoInVzYWdlX2ludGVybmFsIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29u
ZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNv
bmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2Rl
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2Mi
LAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFi
c2xfaW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50ZXJuYWwvdXNhZ2Uu
Y2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvdXNhZ2UuaCIsCisgIF0KKyAg
ZGVwcyA9IFsKKyAgICAiOmNvbmZpZyIsCisgICAgIjpmbGFnIiwKKyAgICAiOmhhbmRsZSIsCisg
ICAgIjppbnRlcm5hbCIsCisgICAgIi4uL3N0cmluZ3MiLAorICAgICIuLi9zeW5jaHJvbml6YXRp
b24iLAorICBdCisgIHZpc2liaWxpdHkgPSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIjoqIiBdCit9
CisKK3NvdXJjZV9zZXQoInVzYWdlIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAt
PSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3Mg
Kz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBd
CisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5j
bHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAidXNhZ2UuY2MiLAorICBdCisgIHB1
YmxpYyA9IFsKKyAgICAidXNhZ2UuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOnVzYWdlX2lu
dGVybmFsIiwKKyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3N5bmNocm9uaXphdGlvbiIsCisg
IF0KK30KKworc291cmNlX3NldCgicGFyc2UiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25m
aWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29u
ZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUi
LAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIs
CisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJz
bF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0gWworICAgICJwYXJzZS5jYyIsCisgIF0K
KyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9wYXJzZS5oIiwKKyAgICAicGFyc2UuaCIsCisg
IF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvbmZpZyIsCisgICAgIjpmbGFnIiwKKyAgICAiOmhhbmRs
ZSIsCisgICAgIjppbnRlcm5hbCIsCisgICAgIjpyZWdpc3RyeSIsCisgICAgIjp1c2FnZSIsCisg
ICAgIjp1c2FnZV9pbnRlcm5hbCIsCisgICAgIi4uL3N0cmluZ3MiLAorICAgICIuLi9zeW5jaHJv
bml6YXRpb24iLAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5mYTFkNGUxNzdiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdz
L0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsMzQ2IEBACisjCisjIENvcHlyaWdodCAyMDE5IFRo
ZSBBYnNlaWwgQXV0aG9ycy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisj
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorIworCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRp
cmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZmxhZ3NfaW50ZXJuYWwKKyAg
U1JDUworICAgICJpbnRlcm5hbC9wcm9ncmFtX25hbWUuY2MiCisgIEhEUlMKKyAgICAiaW50ZXJu
YWwvcGF0aF91dGlsLmgiCisgICAgImludGVybmFsL3Byb2dyYW1fbmFtZS5oIgorICBDT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxU
X0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN5bmNocm9u
aXphdGlvbgorICBQVUJMSUMKKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZmxh
Z3NfY29uZmlnCisgIFNSQ1MKKyAgICAidXNhZ2VfY29uZmlnLmNjIgorICBIRFJTCisgICAgImNv
bmZpZy5oIgorICAgICJ1c2FnZV9jb25maWcuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVM
VF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQ
UworICAgIGFic2w6OmZsYWdzX2ludGVybmFsCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAg
YWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorKQorCithYnNsX2NjX2xp
YnJhcnkoCisgIE5BTUUKKyAgICBmbGFnc19tYXJzaGFsbGluZworICBTUkNTCisgICAgIm1hcnNo
YWxsaW5nLmNjIgorICBIRFJTCisgICAgIm1hcnNoYWxsaW5nLmgiCisgIENPUFRTCisgICAgJHtB
QlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpzdHJpbmdzCisg
ICAgYWJzbDo6c3RyX2Zvcm1hdAorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3Qg
ZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZmxhZ3Nf
aGFuZGxlCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmNjIgorICBIRFJT
CisgICAgImludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5oIgorICBDT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQor
ICBERVBTCisgICAgYWJzbDo6ZmxhZ3NfY29uZmlnCisgICAgYWJzbDo6ZmxhZ3NfbWFyc2hhbGxp
bmcKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6c3Ry
aW5ncworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorICAgIGFic2w6Om9wdGlvbmFsCispCisK
KyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNs
X2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBmbGFnc19yZWdpc3RyeQorICBTUkNTCisgICAgImlu
dGVybmFsL3JlZ2lzdHJ5LmNjIgorICAgICJpbnRlcm5hbC90eXBlX2VyYXNlZC5jYyIKKyAgSERS
UworICAgICJpbnRlcm5hbC9yZWdpc3RyeS5oIgorICAgICJpbnRlcm5hbC90eXBlX2VyYXNlZC5o
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZmxhZ3NfY29uZmlnCisg
ICAgYWJzbDo6ZmxhZ3NfaGFuZGxlCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVh
ZGVycworICAgIGFic2w6OmR5bmFtaWNfYW5ub3RhdGlvbnMKKyAgICBhYnNsOjpzdHJpbmdzCisg
ICAgYWJzbDo6c3luY2hyb25pemF0aW9uCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQor
ICAgIGZsYWdzCisgIFNSQ1MKKyAgICAiZmxhZy5jYyIKKyAgSERSUworICAgICJkZWNsYXJlLmgi
CisgICAgImZsYWcuaCIKKyAgICAiaW50ZXJuYWwvZmxhZy5oIgorICBDT1BUUworICAgICR7QUJT
TF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRT
fQorICBERVBTCisgICAgYWJzbDo6ZmxhZ3NfY29uZmlnCisgICAgYWJzbDo6ZmxhZ3NfaGFuZGxl
CisgICAgYWJzbDo6ZmxhZ3NfbWFyc2hhbGxpbmcKKyAgICBhYnNsOjpmbGFnc19yZWdpc3RyeQor
ICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpzdHJpbmdz
CispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHku
CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBmbGFnc191c2FnZV9pbnRlcm5hbAorICBT
UkNTCisgICAgImludGVybmFsL3VzYWdlLmNjIgorICBIRFJTCisgICAgImludGVybmFsL3VzYWdl
LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFnc19jb25maWcK
KyAgICBhYnNsOjpmbGFncworICAgIGFic2w6OmZsYWdzX2hhbmRsZQorICAgIGFic2w6OmZsYWdz
X2ludGVybmFsCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgor
KQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBmbGFnc191c2FnZQorICBTUkNTCisg
ICAgInVzYWdlLmNjIgorICBIRFJTCisgICAgInVzYWdlLmgiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpmbGFnc191c2FnZV9pbnRlcm5hbAorICAgIGFic2w6OnN0cmlu
Z3MKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBO
QU1FCisgICAgZmxhZ3NfcGFyc2UKKyAgU1JDUworICAgICJwYXJzZS5jYyIKKyAgSERSUworICAg
ICJpbnRlcm5hbC9wYXJzZS5oIgorICAgICJwYXJzZS5oIgorICBDT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQor
ICBERVBTCisgICAgYWJzbDo6ZmxhZ3NfY29uZmlnCisgICAgYWJzbDo6ZmxhZ3MKKyAgICBhYnNs
OjpmbGFnc19oYW5kbGUKKyAgICBhYnNsOjpmbGFnc19pbnRlcm5hbAorICAgIGFic2w6OmZsYWdz
X3JlZ2lzdHJ5CisgICAgYWJzbDo6ZmxhZ3NfdXNhZ2UKKyAgICBhYnNsOjpzdHJpbmdzCisgICAg
YWJzbDo6c3luY2hyb25pemF0aW9uCispCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVW5pdCB0
ZXN0cyBpbiBhbHBhaGFiZXRpY2FsIG9yZGVyLgorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAg
ICBmbGFnc19jb21tYW5kbGluZWZsYWdfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL2NvbW1h
bmRsaW5lZmxhZ190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6ZmxhZ3MKKyAgICBhYnNsOjpmbGFnc19oYW5kbGUKKyAgICBhYnNsOjpm
bGFnc19yZWdpc3RyeQorICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBn
dGVzdF9tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGZsYWdzX2NvbmZpZ190
ZXN0CisgIFNSQ1MKKyAgICAiY29uZmlnX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RF
U1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFnc19jb25maWcKKyAgICBndGVzdF9tYWlu
CispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGZsYWdzX2ZsYWdfdGVzdAorICBTUkNT
CisgICAgImZsYWdfdGVzdC5jYyIKKyAgICAiZmxhZ190ZXN0X2RlZnMuY2MiCisgIENPUFRTCisg
ICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFncworICAgIGFic2w6
OnN0cmluZ3MKKyAgICBndGVzdF9tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAg
IGZsYWdzX21hcnNoYWxsaW5nX3Rlc3QKKyAgU1JDUworICAgICJtYXJzaGFsbGluZ190ZXN0LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Zmxh
Z3NfbWFyc2hhbGxpbmcKKyAgICBndGVzdF9tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQorICAgIGZsYWdzX3BhcnNlX3Rlc3QKKyAgU1JDUworICAgICJwYXJzZV90ZXN0LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZmxhZ3MKKyAg
ICBhYnNsOjpiYXNlCisgICAgYWJzbDo6ZmxhZ3NfcGFyc2UKKyAgICBhYnNsOjpzY29wZWRfc2V0
X2VudgorICAgIGFic2w6OnNwYW4KKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ21vY2tfbWFpbgor
KQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBmbGFnc19wYXRoX3V0aWxfdGVzdAorICBT
UkNTCisgICAgImludGVybmFsL3BhdGhfdXRpbF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJT
TF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZmxhZ3NfaW50ZXJuYWwKKyAgICBndGVz
dF9tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGZsYWdzX3Byb2dyYW1fbmFt
ZV90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcHJvZ3JhbV9uYW1lX3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFnc19pbnRl
cm5hbAorICAgIGFic2w6OnN0cmluZ3MKKyAgICBndGVzdF9tYWluCispCisKK2Fic2xfY2NfdGVz
dCgKKyAgTkFNRQorICAgIGZsYWdzX3R5cGVfZXJhc2VkX3Rlc3QKKyAgU1JDUworICAgICJpbnRl
cm5hbC90eXBlX2VyYXNlZF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRT
fQorICBERVBTCisgICAgYWJzbDo6ZmxhZ3MKKyAgICBhYnNsOjpmbGFnc19yZWdpc3RyeQorICAg
IGFic2w6Om1lbW9yeQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBndGVzdF9tYWluCispCisKK2Fi
c2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGZsYWdzX3VzYWdlX2NvbmZpZ190ZXN0CisgIFNSQ1MK
KyAgICAidXNhZ2VfY29uZmlnX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFnc19jb25maWcKKyAgICBhYnNsOjpmbGFnc19pbnRl
cm5hbAorICAgIGFic2w6OnN0cmluZ3MKKyAgICBndGVzdF9tYWluCispCisKK2Fic2xfY2NfdGVz
dCgKKyAgTkFNRQorICAgIGZsYWdzX3VzYWdlX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC91
c2FnZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6ZmxhZ3NfY29uZmlnCisgICAgYWJzbDo6ZmxhZ3MKKyAgICBhYnNsOjpmbGFnc19p
bnRlcm5hbAorICAgIGFic2w6OmZsYWdzX3BhcnNlCisgICAgYWJzbDo6ZmxhZ3NfdXNhZ2UKKyAg
ICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ3Rlc3QKKykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvY29uZmlnLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE5ZmQ5N2FkMGYzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZmxhZ3MvY29uZmlnLmgKQEAgLTAsMCArMSw0OCBAQAorLy8KKy8vICBDb3B5
cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0ZMQUdTX0NP
TkZJR19IXworI2RlZmluZSBBQlNMX0ZMQUdTX0NPTkZJR19IXworCisvLyBEZXRlcm1pbmUgaWYg
d2Ugc2hvdWxkIHN0cmlwIHN0cmluZyBsaXRlcmFscyBmcm9tIHRoZSBGbGFnIG9iamVjdHMuCisv
LyBCeSBkZWZhdWx0IHdlIHN0cmlwIHN0cmluZyBsaXRlcmFscyBvbiBtb2JpbGUgcGxhdGZvcm1z
LgorI2lmICFkZWZpbmVkKEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMpCisKKyNpZiBkZWZpbmVkKF9f
QU5EUk9JRF9fKQorI2RlZmluZSBBQlNMX0ZMQUdTX1NUUklQX05BTUVTIDEKKworI2VsaWYgZGVm
aW5lZChfX0FQUExFX18pCisjaW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjaWYgZGVm
aW5lZChUQVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FCisjZGVmaW5lIEFCU0xf
RkxBR1NfU1RSSVBfTkFNRVMgMQorI2VsaWYgZGVmaW5lZChUQVJHRVRfT1NfRU1CRURERUQpICYm
IFRBUkdFVF9PU19FTUJFRERFRAorI2RlZmluZSBBQlNMX0ZMQUdTX1NUUklQX05BTUVTIDEKKyNl
bmRpZiAgLy8gVEFSR0VUX09TXyoKKyNlbmRpZgorCisjZW5kaWYgIC8vICFkZWZpbmVkKEFCU0xf
RkxBR1NfU1RSSVBfTkFNRVMpCisKKyNpZiAhZGVmaW5lZChBQlNMX0ZMQUdTX1NUUklQX05BTUVT
KQorLy8gSWYgQUJTTF9GTEFHU19TVFJJUF9OQU1FUyB3YXNuJ3Qgc2V0IG9uIHRoZSBjb21tYW5k
IGxpbmUgb3IgYWJvdmUsCisvLyB0aGUgZGVmYXVsdCBpcyBub3QgdG8gc3RyaXAuCisjZGVmaW5l
IEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMgMAorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChBQlNMX0ZM
QUdTX1NUUklQX0hFTFApCisvLyBCeSBkZWZhdWx0LCBpZiB3ZSBzdHJpcCBuYW1lcywgd2UgYWxz
byBzdHJpcCBoZWxwLgorI2RlZmluZSBBQlNMX0ZMQUdTX1NUUklQX0hFTFAgQUJTTF9GTEFHU19T
VFJJUF9OQU1FUworI2VuZGlmCisKKyNlbmRpZiAgLy8gQUJTTF9GTEFHU19DT05GSUdfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2NvbmZpZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvY29uZmln
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYzODk5ODY2
N2U3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvY29uZmlnX3Rlc3QuY2MKQEAgLTAs
MCArMSw2MSBAQAorLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisj
aW5jbHVkZSAiYWJzbC9mbGFncy9jb25maWcuaCIKKworI2lmZGVmIF9fQVBQTEVfXworI2luY2x1
ZGUgPFRhcmdldENvbmRpdGlvbmFscy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgorCisjaWZuZGVmIEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMKKyNlcnJvciBBQlNMX0ZMQUdT
X1NUUklQX05BTUVTIGlzIG5vdCBkZWZpbmVkCisjZW5kaWYKKworI2lmbmRlZiBBQlNMX0ZMQUdT
X1NUUklQX0hFTFAKKyNlcnJvciBBQlNMX0ZMQUdTX1NUUklQX0hFTFAgaXMgbm90IGRlZmluZWQK
KyNlbmRpZgorCituYW1lc3BhY2UgeworCisvLyBUZXN0IHRoYXQgQUJTTF9GTEFHU19TVFJJUF9O
QU1FUyBhbmQgQUJTTF9GTEFHU19TVFJJUF9IRUxQIGFyZSBjb25maWd1cmVkIGhvdworLy8gd2Ug
ZXhwZWN0IHRoZW0gdG8gYmUgY29uZmlndXJlZCBieSBkZWZhdWx0LiBJZiB5b3Ugb3ZlcnJpZGUg
dGhpcworLy8gY29uZmlndXJhdGlvbiwgdGhpcyB0ZXN0IHdpbGwgZmFpbCwgYnV0IHRoZSBjb2Rl
IHNob3VsZCBzdGlsbCBiZSBzYWZlIHRvIHVzZS4KK1RFU1QoRmxhZ3NDb25maWdUZXN0LCBUZXN0
KSB7CisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAgRVhQRUNUX0VRKEFCU0xfRkxBR1NfU1RS
SVBfTkFNRVMsIDEpOworICBFWFBFQ1RfRVEoQUJTTF9GTEFHU19TVFJJUF9IRUxQLCAxKTsKKyNl
bGlmIGRlZmluZWQoX19teXJpYWQyX18pCisgIEVYUEVDVF9FUShBQlNMX0ZMQUdTX1NUUklQX05B
TUVTLCAwKTsKKyAgRVhQRUNUX0VRKEFCU0xfRkxBR1NfU1RSSVBfSEVMUCwgMCk7CisjZWxpZiBk
ZWZpbmVkKFRBUkdFVF9PU19JUEhPTkUpICYmIFRBUkdFVF9PU19JUEhPTkUKKyAgRVhQRUNUX0VR
KEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMsIDEpOworICBFWFBFQ1RfRVEoQUJTTF9GTEFHU19TVFJJ
UF9IRUxQLCAxKTsKKyNlbGlmIGRlZmluZWQoVEFSR0VUX09TX0VNQkVEREVEKSAmJiBUQVJHRVRf
T1NfRU1CRURERUQKKyAgRVhQRUNUX0VRKEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMsIDEpOworICBF
WFBFQ1RfRVEoQUJTTF9GTEFHU19TVFJJUF9IRUxQLCAxKTsKKyNlbGlmIGRlZmluZWQoX19BUFBM
RV9fKQorICBFWFBFQ1RfRVEoQUJTTF9GTEFHU19TVFJJUF9OQU1FUywgMCk7CisgIEVYUEVDVF9F
UShBQlNMX0ZMQUdTX1NUUklQX0hFTFAsIDApOworI2VsaWYgZGVmaW5lZChfV0lOMzIpCisgIEVY
UEVDVF9FUShBQlNMX0ZMQUdTX1NUUklQX05BTUVTLCAwKTsKKyAgRVhQRUNUX0VRKEFCU0xfRkxB
R1NfU1RSSVBfSEVMUCwgMCk7CisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKKyAgRVhQRUNUX0VR
KEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMsIDApOworICBFWFBFQ1RfRVEoQUJTTF9GTEFHU19TVFJJ
UF9IRUxQLCAwKTsKKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2ZsYWdzL2RlY2xhcmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2RlY2xhcmUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTU2ZWM1ZTlhZWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9kZWNsYXJlLmgKQEAgLTAsMCArMSw1OCBAQAorLy8KKy8vICBDb3B5cmln
aHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gRmlsZTogZGVjbGFyZS5oCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRo
aXMgZmlsZSBkZWZpbmVzIHRoZSBBQlNMX0RFQ0xBUkVfRkxBRyBtYWNybywgYWxsb3dpbmcgeW91
IHRvIGRlY2xhcmUgYW4KKy8vIGBhYnNsOjpGbGFnYCBmb3IgdXNlIHdpdGhpbiBhIHRyYW5zbGF0
aW9uIHVuaXQuIFlvdSBzaG91bGQgcGxhY2UgdGhpcworLy8gZGVjbGFyYXRpb24gd2l0aGluIHRo
ZSBoZWFkZXIgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIC5jYyBmaWxlIHRoYXQgZGVmaW5lcwor
Ly8gYW5kIG93bnMgdGhlIGBGbGFnYC4KKworI2lmbmRlZiBBQlNMX0ZMQUdTX0RFQ0xBUkVfSF8K
KyNkZWZpbmUgQUJTTF9GTEFHU19ERUNMQVJFX0hfCisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
c3RyaW5nX3ZpZXcuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVy
bmFsIHsKKworLy8gYWJzbDo6RmxhZzxUPiByZXByZXNlbnRzIGEgZmxhZyBvZiB0eXBlICdUJyBj
cmVhdGVkIGJ5IEFCU0xfRkxBRy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRmxhZzsK
KworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCisKKy8vIEZsYWcKKy8vCisvLyBGb3J3
YXJkIGRlY2xhcmF0aW9uIG9mIHRoZSBgYWJzbDo6RmxhZ2AgdHlwZSBmb3IgdXNlIGluIGRlZmlu
aW5nIHRoZSBtYWNyby4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgRmxhZyA9IGZsYWdz
X2ludGVybmFsOjpGbGFnPFQ+OworCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisvLyBBQlNMX0RF
Q0xBUkVfRkxBRygpCisvLworLy8gVGhpcyBtYWNybyBpcyBhIGNvbnZlbmllbmNlIGZvciBkZWNs
YXJpbmcgdXNlIG9mIGFuIGBhYnNsOjpGbGFnYCB3aXRoaW4gYQorLy8gdHJhbnNsYXRpb24gdW5p
dC4gVGhpcyBtYWNybyBzaG91bGQgYmUgdXNlZCB3aXRoaW4gYSBoZWFkZXIgZmlsZSB0bworLy8g
ZGVjbGFyZSB1c2FnZSBvZiB0aGUgZmxhZyB3aXRoaW4gYW55IC5jYyBmaWxlIGluY2x1ZGluZyB0
aGF0IGhlYWRlciBmaWxlLgorLy8KKy8vIFRoZSBBQlNMX0RFQ0xBUkVfRkxBRyh0eXBlLCBuYW1l
KSBtYWNybyBleHBhbmRzIHRvOgorLy8KKy8vICAgZXh0ZXJuIGFic2w6OkZsYWc8dHlwZT4gRkxB
R1NfbmFtZTsKKyNkZWZpbmUgQUJTTF9ERUNMQVJFX0ZMQUcodHlwZSwgbmFtZSkgZXh0ZXJuIDo6
YWJzbDo6RmxhZzx0eXBlPiBGTEFHU18jI25hbWUKKworI2VuZGlmICAvLyBBQlNMX0ZMQUdTX0RF
Q0xBUkVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWcuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9m
bGFnLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMTZjYzc1ZTM4
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWcuY2MKQEAgLTAsMCArMSw0NCBA
QAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1
ZGUgImFic2wvZmxhZ3MvZmxhZy5oIgorCisjaW5jbHVkZSA8Y3N0cmluZz4KKworbmFtZXNwYWNl
IGFic2wgeworCisvLyBXZSB3YW50IHRvIHZhbGlkYXRlIHRoZSB0eXBlIG1pc21hdGNoIGJldHdl
ZW4gdHlwZSBkZWZpbml0aW9uIGFuZAorLy8gZGVjbGFyYXRpb24uIFRoZSBsb2NrLWZyZWUgaW1w
bGVtZW50YXRpb24gZG9lcyBub3QgYWxsb3cgdXMgdG8gZG8gaXQsCisvLyBzbyBpbiBkZWJ1ZyBi
dWlsZHMgd2UgYWx3YXlzIHVzZSB0aGUgc2xvd2VyIGltcGxlbWVudGF0aW9uLCB3aGljaCBhbHdh
eXMKKy8vIHZhbGlkYXRlcyB0aGUgdHlwZS4KKyNpZm5kZWYgTkRFQlVHCisjZGVmaW5lIEFCU0xf
RkxBR1NfQVRPTUlDX0dFVChUKSBcCisgIFQgR2V0RmxhZyhjb25zdCBhYnNsOjpGbGFnPFQ+JiBm
bGFnKSB7IHJldHVybiBmbGFnLkdldCgpOyB9CisjZWxzZQorI2RlZmluZSBBQlNMX0ZMQUdTX0FU
T01JQ19HRVQoVCkgICAgICAgICBcCisgIFQgR2V0RmxhZyhjb25zdCBhYnNsOjpGbGFnPFQ+JiBm
bGFnKSB7IFwKKyAgICBUIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IGlmIChmbGFnLkF0b21pY0dldCgmcmVzdWx0KSkgeyAgICAgICBcCisgICAgICByZXR1cm4gcmVz
dWx0OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIHJldHVybiBmbGFnLkdldCgpOyAgICAgICAgICAgICAgICAgICBc
CisgIH0KKyNlbmRpZgorCitBQlNMX0ZMQUdTX0lOVEVSTkFMX0ZPUl9FQUNIX0xPQ0tfRlJFRShB
QlNMX0ZMQUdTX0FUT01JQ19HRVQpCisKKyN1bmRlZiBBQlNMX0ZMQUdTX0FUT01JQ19HRVQKKwor
fSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWcuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2ZsYWdzL2ZsYWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
MzZjNzcxY2Y0OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9mbGFnLmgKQEAgLTAs
MCArMSwyNTcgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IGZsYWcuaAorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIGBhYnNs
OjpGbGFnPFQ+YCB0eXBlIGZvciBob2xkaW5nIGNvbW1hbmQtbGluZQorLy8gZmxhZyBkYXRhLCBh
bmQgYWJzdHJhY3Rpb25zIHRvIGNyZWF0ZSwgZ2V0IGFuZCBzZXQgc3VjaCBmbGFnIGRhdGEuCisv
LworLy8gSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGlzIHR5cGUgaXMgKip1bnNwZWNp
ZmllZCoqIChhbiBpbXBsZW1lbnRhdGlvbgorLy8gZGV0YWlsKSBhbmQgeW91IGRvIG5vdCBjb25z
dHJ1Y3Qgb3IgbWFuaXB1bGF0ZSBhY3R1YWwgYGFic2w6OkZsYWc8VD5gCisvLyBpbnN0YW5jZXMu
IEluc3RlYWQsIHlvdSBkZWZpbmUgYW5kIGRlY2xhcmUgZmxhZ3MgdXNpbmcgdGhlCisvLyBgQUJT
TF9GTEFHKClgIGFuZCBgQUJTTF9ERUNMQVJFX0ZMQUcoKWAgbWFjcm9zLCBhbmQgZ2V0IGFuZCBz
ZXQgZmxhZyB2YWx1ZXMKKy8vIHVzaW5nIHRoZSBgYWJzbDo6R2V0RmxhZygpYCBhbmQgYGFic2w6
OlNldEZsYWcoKWAgZnVuY3Rpb25zLgorCisjaWZuZGVmIEFCU0xfRkxBR1NfRkxBR19IXworI2Rl
ZmluZSBBQlNMX0ZMQUdTX0ZMQUdfSF8KKworI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVz
LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2Nhc3RzLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9j
b25maWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2RlY2xhcmUuaCIKKyNpbmNsdWRlICJhYnNs
L2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3Mv
aW50ZXJuYWwvZmxhZy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvbWFyc2hhbGxpbmcuaCIKKwor
bmFtZXNwYWNlIGFic2wgeworCisvLyBGbGFnCisvLworLy8gQW4gYGFic2w6OkZsYWdgIGhvbGRz
IGEgY29tbWFuZC1saW5lIGZsYWcgdmFsdWUsIHByb3ZpZGluZyBhIHJ1bnRpbWUKKy8vIHBhcmFt
ZXRlciB0byBhIGJpbmFyeS4gU3VjaCBmbGFncyBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgZ2xv
YmFsIG5hbWVzcGFjZQorLy8gYW5kIChwcmVmZXJhYmx5KSBpbiB0aGUgbW9kdWxlIGNvbnRhaW5p
bmcgdGhlIGJpbmFyeSdzIGBtYWluKClgIGZ1bmN0aW9uLgorLy8KKy8vIFlvdSBzaG91bGQgbm90
IGNvbnN0cnVjdCBhbmQgY2Fubm90IHVzZSB0aGUgYGFic2w6OkZsYWdgIHR5cGUgZGlyZWN0bHk7
CisvLyBpbnN0ZWFkLCB5b3Ugc2hvdWxkIGRlY2xhcmUgZmxhZ3MgdXNpbmcgdGhlIGBBQlNMX0RF
Q0xBUkVfRkxBRygpYCBtYWNybworLy8gd2l0aGluIGEgaGVhZGVyIGZpbGUsIGFuZCBkZWZpbmUg
eW91ciBmbGFnIHVzaW5nIGBBQlNMX0ZMQUcoKWAgd2l0aGluIHlvdXIKKy8vIGhlYWRlcidzIGFz
c29jaWF0ZWQgYC5jY2AgZmlsZS4gU3VjaCBmbGFncyB3aWxsIGJlIG5hbWVkIGBGTEFHU19uYW1l
YC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgIC5oIGZpbGUKKy8vCisvLyAgICAgIC8vIERl
Y2xhcmVzIHVzYWdlIG9mIGEgZmxhZyBuYW1lZCAiRkxBR1NfY291bnQiCisvLyAgICAgIEFCU0xf
REVDTEFSRV9GTEFHKGludCwgY291bnQpOworLy8KKy8vICAgIC5jYyBmaWxlCisvLworLy8gICAg
ICAvLyBEZWZpbmVzIGEgZmxhZyBuYW1lZCAiRkxBR1NfY291bnQiIHdpdGggYSBkZWZhdWx0IGBp
bnRgIHZhbHVlIG9mIDAuCisvLyAgICAgIEFCU0xfRkxBRyhpbnQsIGNvdW50LCAwLCAiQ291bnQg
b2YgaXRlbXMgdG8gcHJvY2VzcyIpOworLy8KKy8vIE5vIHB1YmxpYyBtZXRob2RzIG9mIGBhYnNs
OjpGbGFnPFQ+YCBhcmUgcGFydCBvZiB0aGUgQWJzZWlsIEZsYWdzIEFQSS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgordXNpbmcgRmxhZyA9IGZsYWdzX2ludGVybmFsOjpGbGFnPFQ+OworCisvLyBH
ZXRGbGFnKCkKKy8vCisvLyBSZXR1cm5zIHRoZSB2YWx1ZSAob2YgdHlwZSBgVGApIG9mIGFuIGBh
YnNsOjpGbGFnPFQ+YCBpbnN0YW5jZSwgYnkgdmFsdWUuIERvCisvLyBub3QgY29uc3RydWN0IGFu
IGBhYnNsOjpGbGFnPFQ+YCBkaXJlY3RseSBhbmQgY2FsbCBgYWJzbDo6R2V0RmxhZygpYDsKKy8v
IGluc3RlYWQsIHJlZmVyIHRvIGZsYWcncyBjb25zdHJ1Y3RlZCB2YXJpYWJsZSBuYW1lIChlLmcu
IGBGTEFHU19uYW1lYCkuCisvLyBCZWNhdXNlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBieSB2YWx1
ZSBhbmQgbm90IGJ5IHJlZmVyZW5jZSwgaXQgaXMKKy8vIHRocmVhZC1zYWZlLCBidXQgbm90ZSB0
aGF0IHRoZSBvcGVyYXRpb24gbWF5IGJlIGV4cGVuc2l2ZTsgYXMgYSByZXN1bHQsIGF2b2lkCisv
LyBgYWJzbDo6R2V0RmxhZygpYCB3aXRoaW4gYW55IHRpZ2h0IGxvb3BzLgorLy8KKy8vIEV4YW1w
bGU6CisvLworLy8gICAvLyBGTEFHU19jb3VudCBpcyBhIEZsYWcgb2YgdHlwZSBgaW50YAorLy8g
ICBpbnQgbXlfY291bnQgPSBhYnNsOjpHZXRGbGFnKEZMQUdTX2NvdW50KTsKKy8vCisvLyAgIC8v
IEZMQUdTX2ZpcnN0bmFtZSBpcyBhIEZsYWcgb2YgdHlwZSBgc3RkOjpzdHJpbmdgCisvLyAgIHN0
ZDo6c3RyaW5nIGZpcnN0X25hbWUgPSBhYnNsOjpHZXRGbGFnKEZMQUdTX2ZpcnN0bmFtZSk7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QgR2V0RmxhZyhjb25zdCBhYnNsOjpGbGFnPFQ+JiBmbGFn
KSB7CisjZGVmaW5lIEFCU0xfRkxBR1NfSU5URVJOQUxfTE9DS19GUkVFX1ZBTElEQVRFKEJJVCkg
XAorICBzdGF0aWNfYXNzZXJ0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICFzdGQ6OmlzX3NhbWU8VCwgQklUPjo6dmFsdWUsICAgICAgICAgICAgICAgICBcCisg
ICAgICAiRG8gbm90IHNwZWNpZnkgZXhwbGljaXQgdGVtcGxhdGUgcGFyYW1ldGVycyB0byBhYnNs
OjpHZXRGbGFnIik7CisgIEFCU0xfRkxBR1NfSU5URVJOQUxfRk9SX0VBQ0hfTE9DS19GUkVFKEFC
U0xfRkxBR1NfSU5URVJOQUxfTE9DS19GUkVFX1ZBTElEQVRFKQorI3VuZGVmIEFCU0xfRkxBR1Nf
SU5URVJOQUxfTE9DS19GUkVFX1ZBTElEQVRFCisKKyAgcmV0dXJuIGZsYWcuR2V0KCk7Cit9CisK
Ky8vIE92ZXJsb2FkIGZvciBgR2V0RmxhZygpYCBmb3IgdHlwZXMgdGhhdCBzdXBwb3J0IGxvY2st
ZnJlZSByZWFkcy4KKyNkZWZpbmUgQUJTTF9GTEFHU19JTlRFUk5BTF9MT0NLX0ZSRUVfRVhQT1JU
KFQpIFwKKyAgZXh0ZXJuIFQgR2V0RmxhZyhjb25zdCBhYnNsOjpGbGFnPFQ+JiBmbGFnKTsKK0FC
U0xfRkxBR1NfSU5URVJOQUxfRk9SX0VBQ0hfTE9DS19GUkVFKEFCU0xfRkxBR1NfSU5URVJOQUxf
TE9DS19GUkVFX0VYUE9SVCkKKyN1bmRlZiBBQlNMX0ZMQUdTX0lOVEVSTkFMX0xPQ0tfRlJFRV9F
WFBPUlQKKworLy8gU2V0RmxhZygpCisvLworLy8gU2V0cyB0aGUgdmFsdWUgb2YgYW4gYGFic2w6
OkZsYWdgIHRvIHRoZSB2YWx1ZSBgdmAuIERvIG5vdCBjb25zdHJ1Y3QgYW4KKy8vIGBhYnNsOjpG
bGFnPFQ+YCBkaXJlY3RseSBhbmQgY2FsbCBgYWJzbDo6U2V0RmxhZygpYDsgaW5zdGVhZCwgdXNl
IHRoZQorLy8gZmxhZydzIHZhcmlhYmxlIG5hbWUgKGUuZy4gYEZMQUdTX25hbWVgKS4gVGhpcyBm
dW5jdGlvbiBpcworLy8gdGhyZWFkLXNhZmUsIGJ1dCBpcyBwb3RlbnRpYWxseSBleHBlbnNpdmUu
IEF2b2lkIHNldHRpbmcgZmxhZ3MgaW4gZ2VuZXJhbCwKKy8vIGJ1dCBlc3BlY2lhbGx5IHdpdGhp
biBwZXJmb3JtYW5jZS1jcml0aWNhbCBjb2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lk
IFNldEZsYWcoYWJzbDo6RmxhZzxUPiogZmxhZywgY29uc3QgVCYgdikgeworICBmbGFnLT5TZXQo
dik7Cit9CisKKy8vIE92ZXJsb2FkIG9mIGBTZXRGbGFnKClgIHRvIGFsbG93IGNhbGxlcnMgdG8g
cGFzcyBpbiBhIHZhbHVlIHRoYXQgaXMKKy8vIGNvbnZlcnRpYmxlIHRvIGBUYC4gRS5nLiwgdXNl
IHRoaXMgb3ZlcmxvYWQgdG8gcGFzcyBhICJjb25zdCBjaGFyKiIgd2hlbiBgVGAKKy8vIGlzIGBz
dGQ6OnN0cmluZ2AuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KK3ZvaWQgU2V0
RmxhZyhhYnNsOjpGbGFnPFQ+KiBmbGFnLCBjb25zdCBWJiB2KSB7CisgIFQgdmFsdWUodik7Cisg
IGZsYWctPlNldCh2YWx1ZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKworLy8gQUJT
TF9GTEFHKCkKKy8vCisvLyBUaGlzIG1hY3JvIGRlZmluZXMgYW4gYGFic2w6OkZsYWc8VD5gIGlu
c3RhbmNlIG9mIGEgc3BlY2lmaWVkIHR5cGUgYFRgOgorLy8KKy8vICAgQUJTTF9GTEFHKFQsIG5h
bWUsIGRlZmF1bHRfdmFsdWUsIGhlbHApOworLy8KKy8vIHdoZXJlOgorLy8KKy8vICAgKiBgVGAg
aXMgYSBzdXBwb3J0ZWQgZmxhZyB0eXBlIChzZWUgdGhlIGxpc3Qgb2YgdHlwZXMgaW4gYG1hcnNo
YWxsaW5nLmhgKSwKKy8vICAgKiBgbmFtZWAgZGVzaWduYXRlcyB0aGUgbmFtZSBvZiB0aGUgZmxh
ZyAoYXMgYSBnbG9iYWwgdmFyaWFibGUKKy8vICAgICBgRkxBR1NfbmFtZWApLAorLy8gICAqIGBk
ZWZhdWx0X3ZhbHVlYCBpcyBhbiBleHByZXNzaW9uIGhvbGRpbmcgdGhlIGRlZmF1bHQgdmFsdWUg
Zm9yIHRoaXMgZmxhZworLy8gICAgICh3aGljaCBtdXN0IGJlIGltcGxpY2l0bHkgY29udmVydGli
bGUgdG8gYFRgKSwKKy8vICAgKiBgaGVscGAgaXMgdGhlIGhlbHAgdGV4dCwgd2hpY2ggY2FuIGFs
c28gYmUgYW4gZXhwcmVzc2lvbi4KKy8vCisvLyBUaGlzIG1hY3JvIGV4cGFuZHMgdG8gYSBmbGFn
IG5hbWVkICdGTEFHU19uYW1lJyBvZiB0eXBlICdUJzoKKy8vCisvLyAgIGFic2w6OkZsYWc8VD4g
RkxBR1NfbmFtZSA9IC4uLjsKKy8vCisvLyBOb3RlIHRoYXQgYWxsIHN1Y2ggaW5zdGFuY2VzIGFy
ZSBjcmVhdGVkIGFzIGdsb2JhbCB2YXJpYWJsZXMuCisvLworLy8gRm9yIGBBQlNMX0ZMQUcoKWAg
dmFsdWVzIHRoYXQgeW91IHdpc2ggdG8gZXhwb3NlIHRvIG90aGVyIHRyYW5zbGF0aW9uIHVuaXRz
LAorLy8gaXQgaXMgcmVjb21tZW5kZWQgdG8gZGVmaW5lIHRob3NlIGZsYWdzIHdpdGhpbiB0aGUg
YC5jY2AgZmlsZSBhc3NvY2lhdGVkIHdpdGgKKy8vIHRoZSBoZWFkZXIgd2hlcmUgdGhlIGZsYWcg
aXMgZGVjbGFyZWQuCisvLworLy8gTm90ZTogZG8gbm90IGNvbnN0cnVjdCBvYmplY3RzIG9mIHR5
cGUgYGFic2w6OkZsYWc8VD5gIGRpcmVjdGx5LiBPbmx5IHVzZSB0aGUKKy8vIGBBQlNMX0ZMQUco
KWAgbWFjcm8gZm9yIHN1Y2ggY29uc3RydWN0aW9uLgorI2RlZmluZSBBQlNMX0ZMQUcoVHlwZSwg
bmFtZSwgZGVmYXVsdF92YWx1ZSwgaGVscCkgXAorICBBQlNMX0ZMQUdfSU1QTChUeXBlLCBuYW1l
LCBkZWZhdWx0X3ZhbHVlLCBoZWxwKQorCisvLyBBQlNMX0ZMQUcoKS5PblVwZGF0ZSgpCisvLwor
Ly8gRGVmaW5lcyBhIGZsYWcgb2YgdHlwZSBgVGAgd2l0aCBhIGNhbGxiYWNrIGF0dGFjaGVkOgor
Ly8KKy8vICAgQUJTTF9GTEFHKFQsIG5hbWUsIGRlZmF1bHRfdmFsdWUsIGhlbHApLk9uVXBkYXRl
KGNhbGxiYWNrKTsKKy8vCisvLyBBZnRlciBhbnkgc2V0dGluZyBvZiB0aGUgZmxhZyB2YWx1ZSwg
dGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGF0IGxlYXN0CisvLyBvbmNlLiBBIHJhcGlkIHNl
cXVlbmNlIG9mIGNoYW5nZXMgbWF5IGJlIG1lcmdlZCB0b2dldGhlciBpbnRvIHRoZSBzYW1lCisv
LyBjYWxsYmFjay4gTm8gY29uY3VycmVudCBjYWxscyB0byB0aGUgY2FsbGJhY2sgd2lsbCBiZSBt
YWRlIGZvciB0aGUgc2FtZQorLy8gZmxhZy4gQ2FsbGJhY2tzIGFyZSBhbGxvd2VkIHRvIHJlYWQg
dGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZsYWcgYnV0IG11c3QKKy8vIG5vdCBtdXRhdGUgdGhh
dCBmbGFnLgorLy8KKy8vIFRoZSB1cGRhdGUgbWVjaGFuaXNtIGd1YXJhbnRlZXMgImV2ZW50dWFs
IGNvbnNpc3RlbmN5IjsgaWYgdGhlIGNhbGxiYWNrCisvLyBkZXJpdmVzIGFuIGF1eGlsaWFyeSBk
YXRhIHN0cnVjdHVyZSBmcm9tIHRoZSBmbGFnIHZhbHVlLCBpdCBpcyBndWFyYW50ZWVkCisvLyB0
aGF0IGV2ZW50dWFsbHkgdGhlIGZsYWcgdmFsdWUgYW5kIHRoZSBkZXJpdmVkIGRhdGEgc3RydWN0
dXJlIHdpbGwgYmUKKy8vIGNvbnNpc3RlbnQuCisvLworLy8gTm90ZTogQUJTTF9GTEFHLk9uVXBk
YXRlKCkgZG9lcyBub3QgaGF2ZSBhIHB1YmxpYyBkZWZpbml0aW9uLiBIZW5jZSwgdGhpcworLy8g
Y29tbWVudCBzZXJ2ZXMgYXMgaXRzIEFQSSBkb2N1bWVudGF0aW9uLgorCisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGJlbG93IHRoaXMgc2VjdGlv
bgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQUJTTF9GTEFHX0lNUEwgbWFjcm8gZGVm
aW5pdGlvbiBjb25kaXRpb25hbCBvbiBBQlNMX0ZMQUdTX1NUUklQX05BTUVTCisKKyNpZiBBQlNM
X0ZMQUdTX1NUUklQX05BTUVTCisjZGVmaW5lIEFCU0xfRkxBR19JTVBMX0ZMQUdOQU1FKHR4dCkg
IiIKKyNkZWZpbmUgQUJTTF9GTEFHX0lNUExfRklMRU5BTUUoKSAiIgorI2RlZmluZSBBQlNMX0ZM
QUdfSU1QTF9SRUdJU1RSQVIoVCwgZmxhZykgXAorICBhYnNsOjpmbGFnc19pbnRlcm5hbDo6Rmxh
Z1JlZ2lzdHJhcjxULCBmYWxzZT4oJmZsYWcpCisjZWxzZQorI2RlZmluZSBBQlNMX0ZMQUdfSU1Q
TF9GTEFHTkFNRSh0eHQpIHR4dAorI2RlZmluZSBBQlNMX0ZMQUdfSU1QTF9GSUxFTkFNRSgpIF9f
RklMRV9fCisjZGVmaW5lIEFCU0xfRkxBR19JTVBMX1JFR0lTVFJBUihULCBmbGFnKSBcCisgIGFi
c2w6OmZsYWdzX2ludGVybmFsOjpGbGFnUmVnaXN0cmFyPFQsIHRydWU+KCZmbGFnKQorI2VuZGlm
CisKKy8vIEFCU0xfRkxBR19JTVBMIG1hY3JvIGRlZmluaXRpb24gY29uZGl0aW9uYWwgb24gQUJT
TF9GTEFHU19TVFJJUF9IRUxQCisKKyNpZiBBQlNMX0ZMQUdTX1NUUklQX0hFTFAKKyNkZWZpbmUg
QUJTTF9GTEFHX0lNUExfRkxBR0hFTFAodHh0KSBhYnNsOjpmbGFnc19pbnRlcm5hbDo6a1N0cmlw
cGVkRmxhZ0hlbHAKKyNlbHNlCisjZGVmaW5lIEFCU0xfRkxBR19JTVBMX0ZMQUdIRUxQKHR4dCkg
dHh0CisjZW5kaWYKKworI2RlZmluZSBBQlNMX0ZMQUdfSU1QTF9ERUNMQVJFX0hFTFBfV1JBUFBF
UihuYW1lLCB0eHQpIFwKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEFic2xGbGFnc1dyYXBIZWxwIyNu
YW1lKCkgeyAgICAgICBcCisgICAgcmV0dXJuIEFCU0xfRkxBR19JTVBMX0ZMQUdIRUxQKHR4dCk7
ICAgICAgICAgICAgICAgXAorICB9CisKKyNkZWZpbmUgQUJTTF9GTEFHX0lNUExfREVDTEFSRV9E
RUZfVkFMX1dSQVBQRVIobmFtZSwgVHlwZSwgZGVmYXVsdF92YWx1ZSkgICBcCisgIHN0YXRpYyB2
b2lkKiBBYnNsRmxhZ3NJbml0RmxhZyMjbmFtZSgpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHJldHVybiBhYnNsOjpmbGFnc19pbnRlcm5hbDo6TWFrZUZyb21EZWZh
dWx0VmFsdWU8VHlwZT4oZGVmYXVsdF92YWx1ZSk7IFwKKyAgfQorCisvLyBBQlNMX0ZMQUdfSU1Q
TAorLy8KKy8vIE5vdGU6IE5hbWUgb2YgcmVnaXN0cmFyIG9iamVjdCBpcyBub3QgYXJiaXRyYXJ5
LiBJdCBpcyB1c2VkIHRvICJncmFiIgorLy8gZ2xvYmFsIG5hbWUgZm9yIEZMQUdTX25vPGZsYWdf
bmFtZT4gc3ltYm9sLCB0aHVzIHByZXZlbnRpbmcgdGhlIHBvc3NpYmlsaXR5CisvLyBvZiBkZWZp
bmluZyB0d28gZmxhZ3Mgd2l0aCBuYW1lcyBmb28gYW5kIG5vZm9vLgorI2RlZmluZSBBQlNMX0ZM
QUdfSU1QTChUeXBlLCBuYW1lLCBkZWZhdWx0X3ZhbHVlLCBoZWxwKSAgICAgICAgICAgICBcCisg
IG5hbWVzcGFjZSBhYnNsIC8qIGJsb2NrIGZsYWdzIGluIG5hbWVzcGFjZXMgKi8ge30gICAgICAg
ICAgICAgICAgIFwKKyAgQUJTTF9GTEFHX0lNUExfREVDTEFSRV9ERUZfVkFMX1dSQVBQRVIobmFt
ZSwgVHlwZSwgZGVmYXVsdF92YWx1ZSkgXAorICBBQlNMX0ZMQUdfSU1QTF9ERUNMQVJFX0hFTFBf
V1JBUFBFUihuYW1lLCBoZWxwKSAgICAgICAgICAgICAgICAgICBcCisgIEFCU0xfQ09OU1RfSU5J
VCBhYnNsOjpGbGFnPFR5cGU+IEZMQUdTXyMjbmFtZSggICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgIEFCU0xfRkxBR19JTVBMX0ZMQUdOQU1FKCNuYW1lKSwgJkFic2xGbGFnc1dyYXBIZWxwIyNu
YW1lLCAgICAgXAorICAgICAgQUJTTF9GTEFHX0lNUExfRklMRU5BTUUoKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAmYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6OkZs
YWdNYXJzaGFsbGluZ09wczxUeXBlPiwgICAgICAgICAgICAgIFwKKyAgICAgICZBYnNsRmxhZ3NJ
bml0RmxhZyMjbmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBl
eHRlcm4gYm9vbCBGTEFHU19ubyMjbmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIGJvb2wgRkxBR1Nfbm8jI25hbWUgPSBBQlNMX0ZMQUdfSU1QTF9SRUdJU1RS
QVIoVHlwZSwgRkxBR1NfIyNuYW1lKQorCisvLyBBQlNMX1JFVElSRURfRkxBRworLy8KKy8vIERl
c2lnbmF0ZXMgdGhlIGZsYWcgKHdoaWNoIGlzIHVzdWFsbHkgcHJlLWV4aXN0aW5nKSBhcyAicmV0
aXJlZC4iIEEgcmV0aXJlZAorLy8gZmxhZyBpcyBhIGZsYWcgdGhhdCBpcyBub3cgdW51c2VkIGJ5
IHRoZSBwcm9ncmFtLCBidXQgbWF5IHN0aWxsIGJlIHBhc3NlZCBvbgorLy8gdGhlIGNvbW1hbmQg
bGluZSwgdXN1YWxseSBieSBwcm9kdWN0aW9uIHNjcmlwdHMuIEEgcmV0aXJlZCBmbGFnIGlzIGln
bm9yZWQKKy8vIGFuZCBjb2RlIGNhbid0IGFjY2VzcyBpdCBhdCBydW50aW1lLgorLy8KKy8vIFRo
aXMgbWFjcm8gcmVnaXN0ZXJzIGEgcmV0aXJlZCBmbGFnIHdpdGggZ2l2ZW4gbmFtZSBhbmQgdHlw
ZSwgd2l0aCBhIG5hbWUKKy8vIGlkZW50aWNhbCB0byB0aGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwg
ZmxhZyB5b3UgYXJlIHJldGlyaW5nLiBUaGUgcmV0aXJlZAorLy8gZmxhZydzIHR5cGUgY2FuIGNo
YW5nZSBvdmVyIHRpbWUsIHNvIHRoYXQgeW91IGNhbiByZXRpcmUgY29kZSB0byBzdXBwb3J0IGEK
Ky8vIGN1c3RvbSBmbGFnIHR5cGUuCisvLworLy8gVGhpcyBtYWNybyBoYXMgdGhlIHNhbWUgc2ln
bmF0dXJlIGFzIGBBQlNMX0ZMQUdgLiBUbyByZXRpcmUgYSBmbGFnLCBzaW1wbHkKKy8vIHJlcGxh
Y2UgYW4gYEFCU0xfRkxBR2AgZGVmaW5pdGlvbiB3aXRoIGBBQlNMX1JFVElSRURfRkxBR2AsIGxl
YXZpbmcgdGhlCisvLyBhcmd1bWVudHMgdW5jaGFuZ2VkICh1bmxlc3Mgb2YgY291cnNlIHlvdSBh
Y3R1YWxseSB3YW50IHRvIHJldGlyZSB0aGUgZmxhZworLy8gdHlwZSBhdCB0aGlzIHRpbWUgYXMg
d2VsbCkuCisvLworLy8gYGRlZmF1bHRfdmFsdWVgIGlzIG9ubHkgdXNlZCBhcyBhIGRvdWJsZSBj
aGVjayBvbiB0aGUgdHlwZS4gYGV4cGxhbmF0aW9uYCBpcworLy8gdW51c2VkLgorLy8gVE9ETyhy
b2dlZWZmKTogUmV0dXJuIGFuIGFub255bW91cyBzdHJ1Y3QgaW5zdGVhZCBvZiBib29sLCBhbmQg
cGxhY2UgaXQgaW50bworLy8gdGhlIHVubmFtZWQgbmFtZXNwYWNlLgorI2RlZmluZSBBQlNMX1JF
VElSRURfRkxBRyh0eXBlLCBmbGFnbmFtZSwgZGVmYXVsdF92YWx1ZSwgZXhwbGFuYXRpb24pIFwK
KyAgQUJTTF9BVFRSSUJVVEVfVU5VU0VEIHN0YXRpYyBjb25zdCBib29sIGlnbm9yZWRfIyNmbGFn
bmFtZSA9ICAgICAgICBcCisgICAgICAoW10geyByZXR1cm4gdHlwZShkZWZhdWx0X3ZhbHVlKTsg
fSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIGFic2w6OmZsYWdzX2ludGVy
bmFsOjpSZXRpcmVkRmxhZzx0eXBlPigjZmxhZ25hbWUpKQorCisjZW5kaWYgIC8vIEFCU0xfRkxB
R1NfRkxBR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvZmxhZ190ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvZmxhZ190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li4xYmNkN2U5Njg2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWdfdGVzdC5j
YwpAQCAtMCwwICsxLDQ4MiBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvZmxhZy5oIgorCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3MvbnVtYmVycy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0Lmgi
CisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5oIgorCitBQlNMX0RFQ0xBUkVfRkxB
RyhpbnQ2NF90LCBtaXN0eXBlZF9pbnRfZmxhZyk7CitBQlNMX0RFQ0xBUkVfRkxBRyhzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4sIG1pc3R5cGVkX3N0cmluZ19mbGFnKTsKKworbmFtZXNwYWNlIHsK
KworbmFtZXNwYWNlIGZsYWdzID0gYWJzbDo6ZmxhZ3NfaW50ZXJuYWw7CisKK3N0ZDo6c3RyaW5n
IFRlc3RIZWxwTXNnKCkgeyByZXR1cm4gImhlbHAiOyB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3ZvaWQqIFRlc3RNYWtlRGZsdCgpIHsKKyAgcmV0dXJuIG5ldyBUe307Cit9Cit2b2lkIFRlc3RD
YWxsYmFjaygpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorYm9vbCBUZXN0Q29uc3RydWN0
aW9uRm9yKCkgeworICBjb25zdGV4cHIgZmxhZ3M6OkZsYWc8VD4gZjEoImYxIiwgJlRlc3RIZWxw
TXNnLCAiZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWJzbDo6ZmxhZ3Nf
aW50ZXJuYWw6OkZsYWdNYXJzaGFsbGluZ09wczxUPiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZUZXN0TWFrZURmbHQ8VD4pOworICBFWFBFQ1RfRVEoZjEuTmFtZSgpLCAiZjEiKTsK
KyAgRVhQRUNUX0VRKGYxLkhlbHAoKSwgImhlbHAiKTsKKyAgRVhQRUNUX0VRKGYxLkZpbGVuYW1l
KCksICJmaWxlIik7CisKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBmbGFnczo6RmxhZzxUPiBm
MigKKyAgICAgICJmMiIsICZUZXN0SGVscE1zZywgImZpbGUiLCAmYWJzbDo6ZmxhZ3NfaW50ZXJu
YWw6OkZsYWdNYXJzaGFsbGluZ09wczxUPiwKKyAgICAgICZUZXN0TWFrZURmbHQ8VD4pOworICBm
bGFnczo6RmxhZ1JlZ2lzdHJhcjxULCBmYWxzZT4oJmYyKS5PblVwZGF0ZShUZXN0Q2FsbGJhY2sp
OworCisgIEVYUEVDVF9FUShmMi5OYW1lKCksICJmMiIpOworICBFWFBFQ1RfRVEoZjIuSGVscCgp
LCAiaGVscCIpOworICBFWFBFQ1RfRVEoZjIuRmlsZW5hbWUoKSwgImZpbGUiKTsKKworICByZXR1
cm4gdHJ1ZTsKK30KKworc3RydWN0IFVEVCB7CisgIFVEVCgpID0gZGVmYXVsdDsKKyAgVURUKGNv
bnN0IFVEVCYpID0gZGVmYXVsdDsKK307Citib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5n
X3ZpZXcsIFVEVCosIHN0ZDo6c3RyaW5nKikgeyByZXR1cm4gdHJ1ZTsgfQorc3RkOjpzdHJpbmcg
QWJzbFVucGFyc2VGbGFnKGNvbnN0IFVEVCYpIHsgcmV0dXJuICIiOyB9CisKK1RFU1QoRmxhZ1Rl
c3QsIFRlc3RDb25zdHJ1Y3Rpb24pIHsKKyAgVGVzdENvbnN0cnVjdGlvbkZvcjxib29sPigpOwor
ICBUZXN0Q29uc3RydWN0aW9uRm9yPGludDE2X3Q+KCk7CisgIFRlc3RDb25zdHJ1Y3Rpb25Gb3I8
dWludDE2X3Q+KCk7CisgIFRlc3RDb25zdHJ1Y3Rpb25Gb3I8aW50MzJfdD4oKTsKKyAgVGVzdENv
bnN0cnVjdGlvbkZvcjx1aW50MzJfdD4oKTsKKyAgVGVzdENvbnN0cnVjdGlvbkZvcjxpbnQ2NF90
PigpOworICBUZXN0Q29uc3RydWN0aW9uRm9yPHVpbnQ2NF90PigpOworICBUZXN0Q29uc3RydWN0
aW9uRm9yPGRvdWJsZT4oKTsKKyAgVGVzdENvbnN0cnVjdGlvbkZvcjxmbG9hdD4oKTsKKyAgVGVz
dENvbnN0cnVjdGlvbkZvcjxzdGQ6OnN0cmluZz4oKTsKKworICBUZXN0Q29uc3RydWN0aW9uRm9y
PFVEVD4oKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworfSAgLy8gbmFtZXNwYWNlCisKK0FCU0xf
REVDTEFSRV9GTEFHKGJvb2wsIHRlc3RfZmxhZ18wMSk7CitBQlNMX0RFQ0xBUkVfRkxBRyhpbnQs
IHRlc3RfZmxhZ18wMik7CitBQlNMX0RFQ0xBUkVfRkxBRyhpbnQxNl90LCB0ZXN0X2ZsYWdfMDMp
OworQUJTTF9ERUNMQVJFX0ZMQUcodWludDE2X3QsIHRlc3RfZmxhZ18wNCk7CitBQlNMX0RFQ0xB
UkVfRkxBRyhpbnQzMl90LCB0ZXN0X2ZsYWdfMDUpOworQUJTTF9ERUNMQVJFX0ZMQUcodWludDMy
X3QsIHRlc3RfZmxhZ18wNik7CitBQlNMX0RFQ0xBUkVfRkxBRyhpbnQ2NF90LCB0ZXN0X2ZsYWdf
MDcpOworQUJTTF9ERUNMQVJFX0ZMQUcodWludDY0X3QsIHRlc3RfZmxhZ18wOCk7CitBQlNMX0RF
Q0xBUkVfRkxBRyhkb3VibGUsIHRlc3RfZmxhZ18wOSk7CitBQlNMX0RFQ0xBUkVfRkxBRyhmbG9h
dCwgdGVzdF9mbGFnXzEwKTsKK0FCU0xfREVDTEFSRV9GTEFHKHN0ZDo6c3RyaW5nLCB0ZXN0X2Zs
YWdfMTEpOworCituYW1lc3BhY2UgeworCisjaWYgIUFCU0xfRkxBR1NfU1RSSVBfTkFNRVMKKwor
VEVTVChGbGFnVGVzdCwgVGVzdEZsYWdEZWNsYXJhdGlvbikgeworICAvLyB0ZXN0IHRoYXQgd2Ug
Y2FuIGFjY2VzcyBmbGFnIG9iamVjdHMuCisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDEu
TmFtZSgpLCAidGVzdF9mbGFnXzAxIik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDIu
TmFtZSgpLCAidGVzdF9mbGFnXzAyIik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDMu
TmFtZSgpLCAidGVzdF9mbGFnXzAzIik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDQu
TmFtZSgpLCAidGVzdF9mbGFnXzA0Iik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDUu
TmFtZSgpLCAidGVzdF9mbGFnXzA1Iik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDYu
TmFtZSgpLCAidGVzdF9mbGFnXzA2Iik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDcu
TmFtZSgpLCAidGVzdF9mbGFnXzA3Iik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDgu
TmFtZSgpLCAidGVzdF9mbGFnXzA4Iik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDku
TmFtZSgpLCAidGVzdF9mbGFnXzA5Iik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMTAu
TmFtZSgpLCAidGVzdF9mbGFnXzEwIik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMTEu
TmFtZSgpLCAidGVzdF9mbGFnXzExIik7Cit9CisjZW5kaWYgIC8vICFBQlNMX0ZMQUdTX1NUUklQ
X05BTUVTCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK30gIC8vIG5hbWVzcGFjZQorCitBQlNMX0ZMQUco
Ym9vbCwgdGVzdF9mbGFnXzAxLCB0cnVlLCAidGVzdCBmbGFnIDAxIik7CitBQlNMX0ZMQUcoaW50
LCB0ZXN0X2ZsYWdfMDIsIDEyMzQsICJ0ZXN0IGZsYWcgMDIiKTsKK0FCU0xfRkxBRyhpbnQxNl90
LCB0ZXN0X2ZsYWdfMDMsIC0zNCwgInRlc3QgZmxhZyAwMyIpOworQUJTTF9GTEFHKHVpbnQxNl90
LCB0ZXN0X2ZsYWdfMDQsIDE4OSwgInRlc3QgZmxhZyAwNCIpOworQUJTTF9GTEFHKGludDMyX3Qs
IHRlc3RfZmxhZ18wNSwgMTA3NjUsICJ0ZXN0IGZsYWcgMDUiKTsKK0FCU0xfRkxBRyh1aW50MzJf
dCwgdGVzdF9mbGFnXzA2LCA0MDAwMCwgInRlc3QgZmxhZyAwNiIpOworQUJTTF9GTEFHKGludDY0
X3QsIHRlc3RfZmxhZ18wNywgLTEyMzQ1NjcsICJ0ZXN0IGZsYWcgMDciKTsKK0FCU0xfRkxBRyh1
aW50NjRfdCwgdGVzdF9mbGFnXzA4LCA5ODc2NTQzLCAidGVzdCBmbGFnIDA4Iik7CitBQlNMX0ZM
QUcoZG91YmxlLCB0ZXN0X2ZsYWdfMDksIC05Ljg3NmUtNTAsICJ0ZXN0IGZsYWcgMDkiKTsKK0FC
U0xfRkxBRyhmbG9hdCwgdGVzdF9mbGFnXzEwLCAxLjIzNGUxMmYsICJ0ZXN0IGZsYWcgMTAiKTsK
K0FCU0xfRkxBRyhzdGQ6OnN0cmluZywgdGVzdF9mbGFnXzExLCAiIiwgInRlc3QgZmxhZyAxMSIp
OworCituYW1lc3BhY2UgeworCisjaWYgIUFCU0xfRkxBR1NfU1RSSVBfTkFNRVMKK1RFU1QoRmxh
Z1Rlc3QsIFRlc3RGbGFnRGVmaW5pdGlvbikgeworICBhYnNsOjpzdHJpbmdfdmlldyBleHBlY3Rl
ZF9maWxlX25hbWUgPSAiYWJzbC9mbGFncy9mbGFnX3Rlc3QuY2MiOworCisgIEVYUEVDVF9FUShG
TEFHU190ZXN0X2ZsYWdfMDEuTmFtZSgpLCAidGVzdF9mbGFnXzAxIik7CisgIEVYUEVDVF9FUShG
TEFHU190ZXN0X2ZsYWdfMDEuSGVscCgpLCAidGVzdCBmbGFnIDAxIik7CisgIEVYUEVDVF9UUlVF
KAorICAgICAgYWJzbDo6RW5kc1dpdGgoRkxBR1NfdGVzdF9mbGFnXzAxLkZpbGVuYW1lKCksIGV4
cGVjdGVkX2ZpbGVfbmFtZSkpOworCisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDIuTmFt
ZSgpLCAidGVzdF9mbGFnXzAyIik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDIuSGVs
cCgpLCAidGVzdCBmbGFnIDAyIik7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6RW5kc1dp
dGgoRkxBR1NfdGVzdF9mbGFnXzAyLkZpbGVuYW1lKCksIGV4cGVjdGVkX2ZpbGVfbmFtZSkpOwor
CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDMuTmFtZSgpLCAidGVzdF9mbGFnXzAzIik7
CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDMuSGVscCgpLCAidGVzdCBmbGFnIDAzIik7
CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6RW5kc1dpdGgoRkxBR1NfdGVzdF9mbGFnXzAz
LkZpbGVuYW1lKCksIGV4cGVjdGVkX2ZpbGVfbmFtZSkpOworCisgIEVYUEVDVF9FUShGTEFHU190
ZXN0X2ZsYWdfMDQuTmFtZSgpLCAidGVzdF9mbGFnXzA0Iik7CisgIEVYUEVDVF9FUShGTEFHU190
ZXN0X2ZsYWdfMDQuSGVscCgpLCAidGVzdCBmbGFnIDA0Iik7CisgIEVYUEVDVF9UUlVFKAorICAg
ICAgYWJzbDo6RW5kc1dpdGgoRkxBR1NfdGVzdF9mbGFnXzA0LkZpbGVuYW1lKCksIGV4cGVjdGVk
X2ZpbGVfbmFtZSkpOworCisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDUuTmFtZSgpLCAi
dGVzdF9mbGFnXzA1Iik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDUuSGVscCgpLCAi
dGVzdCBmbGFnIDA1Iik7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6RW5kc1dpdGgoRkxB
R1NfdGVzdF9mbGFnXzA1LkZpbGVuYW1lKCksIGV4cGVjdGVkX2ZpbGVfbmFtZSkpOworCisgIEVY
UEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDYuTmFtZSgpLCAidGVzdF9mbGFnXzA2Iik7CisgIEVY
UEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDYuSGVscCgpLCAidGVzdCBmbGFnIDA2Iik7CisgIEVY
UEVDVF9UUlVFKAorICAgICAgYWJzbDo6RW5kc1dpdGgoRkxBR1NfdGVzdF9mbGFnXzA2LkZpbGVu
YW1lKCksIGV4cGVjdGVkX2ZpbGVfbmFtZSkpOworCisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2Zs
YWdfMDcuTmFtZSgpLCAidGVzdF9mbGFnXzA3Iik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2Zs
YWdfMDcuSGVscCgpLCAidGVzdCBmbGFnIDA3Iik7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJz
bDo6RW5kc1dpdGgoRkxBR1NfdGVzdF9mbGFnXzA3LkZpbGVuYW1lKCksIGV4cGVjdGVkX2ZpbGVf
bmFtZSkpOworCisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDguTmFtZSgpLCAidGVzdF9m
bGFnXzA4Iik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMDguSGVscCgpLCAidGVzdCBm
bGFnIDA4Iik7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6RW5kc1dpdGgoRkxBR1NfdGVz
dF9mbGFnXzA4LkZpbGVuYW1lKCksIGV4cGVjdGVkX2ZpbGVfbmFtZSkpOworCisgIEVYUEVDVF9F
UShGTEFHU190ZXN0X2ZsYWdfMDkuTmFtZSgpLCAidGVzdF9mbGFnXzA5Iik7CisgIEVYUEVDVF9F
UShGTEFHU190ZXN0X2ZsYWdfMDkuSGVscCgpLCAidGVzdCBmbGFnIDA5Iik7CisgIEVYUEVDVF9U
UlVFKAorICAgICAgYWJzbDo6RW5kc1dpdGgoRkxBR1NfdGVzdF9mbGFnXzA5LkZpbGVuYW1lKCks
IGV4cGVjdGVkX2ZpbGVfbmFtZSkpOworCisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMTAu
TmFtZSgpLCAidGVzdF9mbGFnXzEwIik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMTAu
SGVscCgpLCAidGVzdCBmbGFnIDEwIik7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6RW5k
c1dpdGgoRkxBR1NfdGVzdF9mbGFnXzEwLkZpbGVuYW1lKCksIGV4cGVjdGVkX2ZpbGVfbmFtZSkp
OworCisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMTEuTmFtZSgpLCAidGVzdF9mbGFnXzEx
Iik7CisgIEVYUEVDVF9FUShGTEFHU190ZXN0X2ZsYWdfMTEuSGVscCgpLCAidGVzdCBmbGFnIDEx
Iik7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6RW5kc1dpdGgoRkxBR1NfdGVzdF9mbGFn
XzExLkZpbGVuYW1lKCksIGV4cGVjdGVkX2ZpbGVfbmFtZSkpOworfQorI2VuZGlmICAvLyAhQUJT
TF9GTEFHU19TVFJJUF9OQU1FUworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKEZsYWdUZXN0LCBU
ZXN0RGVmYXVsdCkgeworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdf
MDEpLCB0cnVlKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzAy
KSwgMTIzNCk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wMyks
IC0zNCk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wNCksIDE4
OSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wNSksIDEwNzY1
KTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzA2KSwgNDAwMDAp
OworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMDcpLCAtMTIzNDU2
Nyk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wOCksIDk4NzY1
NDMpOworICBFWFBFQ1RfTkVBUihhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wOSksIC05
Ljg3NmUtNTAsIDFlLTU1KTsKKyAgRVhQRUNUX05FQVIoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0
X2ZsYWdfMTApLCAxLjIzNGUxMmYsIDFlNWYpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhG
TEFHU190ZXN0X2ZsYWdfMTEpLCAiIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoRmxh
Z1Rlc3QsIFRlc3RHZXRTZXQpIHsKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfdGVzdF9mbGFnXzAx
LCBmYWxzZSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wMSks
IGZhbHNlKTsKKworICBhYnNsOjpTZXRGbGFnKCZGTEFHU190ZXN0X2ZsYWdfMDIsIDMyMSk7Cisg
IEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wMiksIDMyMSk7CisKKyAg
YWJzbDo6U2V0RmxhZygmRkxBR1NfdGVzdF9mbGFnXzAzLCA2Nyk7CisgIEVYUEVDVF9FUShhYnNs
OjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wMyksIDY3KTsKKworICBhYnNsOjpTZXRGbGFnKCZG
TEFHU190ZXN0X2ZsYWdfMDQsIDEpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190
ZXN0X2ZsYWdfMDQpLCAxKTsKKworICBhYnNsOjpTZXRGbGFnKCZGTEFHU190ZXN0X2ZsYWdfMDUs
IC05MDgpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMDUpLCAt
OTA4KTsKKworICBhYnNsOjpTZXRGbGFnKCZGTEFHU190ZXN0X2ZsYWdfMDYsIDQwMDEpOworICBF
WFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMDYpLCA0MDAxKTsKKworICBh
YnNsOjpTZXRGbGFnKCZGTEFHU190ZXN0X2ZsYWdfMDcsIC0yMzQ1Nik7CisgIEVYUEVDVF9FUShh
YnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wNyksIC0yMzQ1Nik7CisKKyAgYWJzbDo6U2V0
RmxhZygmRkxBR1NfdGVzdF9mbGFnXzA4LCA5NzUzMTApOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0
RmxhZyhGTEFHU190ZXN0X2ZsYWdfMDgpLCA5NzUzMTApOworCisgIGFic2w6OlNldEZsYWcoJkZM
QUdTX3Rlc3RfZmxhZ18wOSwgMS4wMDAwMSk7CisgIEVYUEVDVF9ORUFSKGFic2w6OkdldEZsYWco
RkxBR1NfdGVzdF9mbGFnXzA5KSwgMS4wMDAwMSwgMWUtMTApOworCisgIGFic2w6OlNldEZsYWco
JkZMQUdTX3Rlc3RfZmxhZ18xMCwgLTMuNTRmKTsKKyAgRVhQRUNUX05FQVIoYWJzbDo6R2V0Rmxh
ZyhGTEFHU190ZXN0X2ZsYWdfMTApLCAtMy41NGYsIDFlLTZmKTsKKworICBhYnNsOjpTZXRGbGFn
KCZGTEFHU190ZXN0X2ZsYWdfMTEsICJhc2RmIik7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFn
KEZMQUdTX3Rlc3RfZmxhZ18xMSksICJhc2RmIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2lu
dCBHZXREZmx0MSgpIHsgcmV0dXJuIDE7IH0KKworfSAgLy8gbmFtZXNwYWNlCisKK0FCU0xfRkxB
RyhpbnQsIHRlc3RfZmxhZ18xMiwgR2V0RGZsdDEoKSwgInRlc3QgZmxhZyAxMiIpOworQUJTTF9G
TEFHKHN0ZDo6c3RyaW5nLCB0ZXN0X2ZsYWdfMTMsIGFic2w6OlN0ckNhdCgiQUFBIiwgIkJCQiIp
LAorICAgICAgICAgICJ0ZXN0IGZsYWcgMTMiKTsKKworbmFtZXNwYWNlIHsKKworVEVTVChGbGFn
VGVzdCwgVGVzdE5vbkNvbnN0ZXhwckRlZmF1bHQpIHsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZs
YWcoRkxBR1NfdGVzdF9mbGFnXzEyKSwgMSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZM
QUdTX3Rlc3RfZmxhZ18xMyksICJBQUFCQkIiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworfSAg
Ly8gbmFtZXNwYWNlCisKK0FCU0xfRkxBRyhib29sLCB0ZXN0X2ZsYWdfMTQsIHRydWUsIGFic2w6
OlN0ckNhdCgidGVzdCAiLCAiZmxhZyAiLCAiMTQiKSk7CisKK25hbWVzcGFjZSB7CisKKyNpZiAh
QUJTTF9GTEFHU19TVFJJUF9IRUxQCitURVNUKEZsYWdUZXN0LCBUZXN0Tm9uQ29uc3RleHBySGVs
cCkgeworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzE0LkhlbHAoKSwgInRlc3QgZmxhZyAx
NCIpOworfQorI2VuZGlmICAvLyEgQUJTTF9GTEFHU19TVFJJUF9IRUxQCisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK2ludCBjYl90ZXN0X3ZhbHVlID0gLTE7Cit2b2lkIFRlc3RGbGFnQ0IoKTsKKworfSAg
Ly8gbmFtZXNwYWNlCisKK0FCU0xfRkxBRyhpbnQsIHRlc3RfZmxhZ193aXRoX2NiLCAxMDAsICIi
KS5PblVwZGF0ZShUZXN0RmxhZ0NCKTsKKworQUJTTF9GTEFHKGludCwgdGVzdF9mbGFnX3dpdGhf
bGFtYmRhX2NiLCAyMDAsICIiKS5PblVwZGF0ZShbXSgpIHsKKyAgY2JfdGVzdF92YWx1ZSA9IGFi
c2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnX3dpdGhfbGFtYmRhX2NiKSArCisgICAgICAgICAg
ICAgICAgICBhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ193aXRoX2NiKTsKK30pOworCitu
YW1lc3BhY2UgeworCit2b2lkIFRlc3RGbGFnQ0IoKSB7IGNiX3Rlc3RfdmFsdWUgPSBhYnNsOjpH
ZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ193aXRoX2NiKTsgfQorCisvLyBUZXN0cyBzaWRlLWVmZmVj
dHMgb2YgY2FsbGJhY2sgaW52b2NhdGlvbi4KK1RFU1QoRmxhZ1Rlc3QsIENhbGxiYWNrSW52b2Nh
dGlvbikgeworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfd2l0aF9j
YiksIDEwMCk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ193aXRo
X2xhbWJkYV9jYiksIDIwMCk7CisgIEVYUEVDVF9FUShjYl90ZXN0X3ZhbHVlLCAzMDApOworCisg
IGFic2w6OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ193aXRoX2NiLCAxKTsKKyAgRVhQRUNUX0VR
KGNiX3Rlc3RfdmFsdWUsIDEpOworCisgIGFic2w6OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ193
aXRoX2xhbWJkYV9jYiwgMyk7CisgIEVYUEVDVF9FUShjYl90ZXN0X3ZhbHVlLCA0KTsKK30KKwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworc3RydWN0IEN1c3RvbVVEVCB7CisgIEN1c3RvbVVEVCgpIDogYSgx
KSwgYigxKSB7fQorICBDdXN0b21VRFQoaW50IGFfLCBpbnQgYl8pIDogYShhXyksIGIoYl8pIHt9
CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21VRFQmIGYxLCBjb25zdCBD
dXN0b21VRFQmIGYyKSB7CisgICAgcmV0dXJuIGYxLmEgPT0gZjIuYSAmJiBmMS5iID09IGYyLmI7
CisgIH0KKworICBpbnQgYTsKKyAgaW50IGI7Cit9OworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6
OnN0cmluZ192aWV3IGluLCBDdXN0b21VRFQqIGYsIHN0ZDo6c3RyaW5nKikgeworICBzdGQ6OnZl
Y3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gcGFydHMgPQorICAgICAgYWJzbDo6U3RyU3BsaXQoaW4s
ICc6JywgYWJzbDo6U2tpcFdoaXRlc3BhY2UoKSk7CisKKyAgaWYgKHBhcnRzLnNpemUoKSAhPSAy
KSByZXR1cm4gZmFsc2U7CisKKyAgaWYgKCFhYnNsOjpTaW1wbGVBdG9pKHBhcnRzWzBdLCAmZi0+
YSkpIHJldHVybiBmYWxzZTsKKworICBpZiAoIWFic2w6OlNpbXBsZUF0b2kocGFydHNbMV0sICZm
LT5iKSkgcmV0dXJuIGZhbHNlOworCisgIHJldHVybiB0cnVlOworfQorc3RkOjpzdHJpbmcgQWJz
bFVucGFyc2VGbGFnKGNvbnN0IEN1c3RvbVVEVCYgZikgeworICByZXR1cm4gYWJzbDo6U3RyQ2F0
KGYuYSwgIjoiLCBmLmIpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworQUJTTF9GTEFHKEN1c3Rv
bVVEVCwgdGVzdF9mbGFnXzE1LCBDdXN0b21VRFQoKSwgInRlc3QgZmxhZyAxNSIpOworCituYW1l
c3BhY2UgeworCitURVNUKEZsYWdUZXN0LCBUZXN0Q3VzdG9tVURUKSB7CisgIEVYUEVDVF9FUShh
YnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18xNSksIEN1c3RvbVVEVCgxLCAxKSk7CisgIGFi
c2w6OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ18xNSwgQ3VzdG9tVURUKDIsIDMpKTsKKyAgRVhQ
RUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzE1KSwgQ3VzdG9tVURUKDIsIDMp
KTsKK30KKworLy8gTVNWQyBwcm9kdWNlcyBsaW5rIGVycm9yIG9uIHRoZSB0eXBlIG1pc21hdGNo
LgorLy8gTGludXggZG9lcyBub3QgaGF2ZSBidWlsZCBlcnJvcnMgYW5kIHZhbGlkYXRpb25zIHdv
cmsgYXMgZXhwZWN0ZWQuCisjaWYgMCAgLy8gIWRlZmluZWQoX1dJTjMyKSAmJiBHVEVTVF9IQVNf
REVBVEhfVEVTVAorCitURVNUKEZsYWd0ZXN0LCBUZXN0VHlwZU1pc21hdGNoVmFsaWRhdGlvbnMp
IHsKKyAgLy8gRm9yIGJ1aWx0aW4gdHlwZXMsIEdldEZsYWcoKSBvbmx5IGRvZXMgdmFsaWRhdGlv
biBpbiBkZWJ1ZyBtb2RlLgorICBFWFBFQ1RfREVCVUdfREVBVEgoCisgICAgICBhYnNsOjpHZXRG
bGFnKEZMQUdTX21pc3R5cGVkX2ludF9mbGFnKSwKKyAgICAgICJGbGFnICdtaXN0eXBlZF9pbnRf
ZmxhZycgaXMgZGVmaW5lZCBhcyBvbmUgdHlwZSBhbmQgZGVjbGFyZWQgIgorICAgICAgImFzIGFu
b3RoZXIiKTsKKyAgRVhQRUNUX0RFQVRIKGFic2w6OlNldEZsYWcoJkZMQUdTX21pc3R5cGVkX2lu
dF9mbGFnLCAwKSwKKyAgICAgICAgICAgICAgICJGbGFnICdtaXN0eXBlZF9pbnRfZmxhZycgaXMg
ZGVmaW5lZCBhcyBvbmUgdHlwZSBhbmQgZGVjbGFyZWQgIgorICAgICAgICAgICAgICAgImFzIGFu
b3RoZXIiKTsKKworICBFWFBFQ1RfREVBVEgoYWJzbDo6R2V0RmxhZyhGTEFHU19taXN0eXBlZF9z
dHJpbmdfZmxhZyksCisgICAgICAgICAgICAgICAiRmxhZyAnbWlzdHlwZWRfc3RyaW5nX2ZsYWcn
IGlzIGRlZmluZWQgYXMgb25lIHR5cGUgYW5kICIKKyAgICAgICAgICAgICAgICJkZWNsYXJlZCBh
cyBhbm90aGVyIik7CisgIEVYUEVDVF9ERUFUSCgKKyAgICAgIGFic2w6OlNldEZsYWcoJkZMQUdT
X21pc3R5cGVkX3N0cmluZ19mbGFnLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz57fSksCisgICAg
ICAiRmxhZyAnbWlzdHlwZWRfc3RyaW5nX2ZsYWcnIGlzIGRlZmluZWQgYXMgb25lIHR5cGUgYW5k
IGRlY2xhcmVkIGFzICIKKyAgICAgICJhbm90aGVyIik7Cit9CisKKyNlbmRpZgorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisvLyBBIGNvbnRyaXZlZCB0eXBlIHRoYXQgb2ZmZXJzIGltcGxpY2l0IGFuZCBl
eHBsaWNpdCBjb252ZXJzaW9uIGZyb20gc3BlY2lmaWMKKy8vIHNvdXJjZSB0eXBlcy4KK3N0cnVj
dCBDb252ZXJzaW9uVGVzdFZhbCB7CisgIENvbnZlcnNpb25UZXN0VmFsKCkgPSBkZWZhdWx0Owor
ICBleHBsaWNpdCBDb252ZXJzaW9uVGVzdFZhbChpbnQgYV9pbikgOiBhKGFfaW4pIHt9CisKKyAg
ZW51bSBjbGFzcyBWaWFJbXBsaWNpdENvbnYgeyBrVGVuID0gMTAsIGtFbGV2ZW4gfTsKKyAgLy8g
Tk9MSU5UTkVYVExJTkUKKyAgQ29udmVyc2lvblRlc3RWYWwoVmlhSW1wbGljaXRDb252IGZyb20p
IDogYShzdGF0aWNfY2FzdDxpbnQ+KGZyb20pKSB7fQorCisgIGludCBhOworfTsKKworYm9vbCBB
YnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IGluLCBDb252ZXJzaW9uVGVzdFZhbCogdmFs
X291dCwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyopIHsKKyAgaWYgKCFhYnNsOjpT
aW1wbGVBdG9pKGluLCAmdmFsX291dC0+YSkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAg
cmV0dXJuIHRydWU7Cit9CitzdGQ6OnN0cmluZyBBYnNsVW5wYXJzZUZsYWcoY29uc3QgQ29udmVy
c2lvblRlc3RWYWwmIHZhbCkgeworICByZXR1cm4gYWJzbDo6U3RyQ2F0KHZhbC5hKTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlCisKKy8vIEZsYWcgZGVmYXVsdCB2YWx1ZXMgY2FuIGJlIHNwZWNpZmll
ZCB3aXRoIGEgdmFsdWUgdGhhdCBjb252ZXJ0cyB0byB0aGUgZmxhZworLy8gdmFsdWUgdHlwZSBp
bXBsaWNpdGx5LgorQUJTTF9GTEFHKENvbnZlcnNpb25UZXN0VmFsLCB0ZXN0X2ZsYWdfMTYsCisg
ICAgICAgICAgQ29udmVyc2lvblRlc3RWYWw6OlZpYUltcGxpY2l0Q29udjo6a1RlbiwgInRlc3Qg
ZmxhZyAxNiIpOworCituYW1lc3BhY2UgeworCitURVNUKEZsYWdUZXN0LCBDYW5TZXRWaWFJbXBs
aWNpdENvbnZlcnNpb24pIHsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9m
bGFnXzE2KS5hLCAxMCk7CisgIGFic2w6OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ18xNiwKKyAg
ICAgICAgICAgICAgICBDb252ZXJzaW9uVGVzdFZhbDo6VmlhSW1wbGljaXRDb252OjprRWxldmVu
KTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzE2KS5hLCAxMSk7
Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0cnVjdCBOb25EZmx0Q29uc3RydWN0aWJsZSB7Cisg
cHVibGljOgorICAvLyBUaGlzIGNvbnN0cnVjdG9yIHRlc3RzIHRoYXQgd2UgY2FuIGluaXRpYWxp
emUgdGhlIGZsYWcgd2l0aCBpbnQgdmFsdWUKKyAgTm9uRGZsdENvbnN0cnVjdGlibGUoaW50IGkp
IDogdmFsdWUoaSkge30gIC8vIE5PTElOVAorCisgIC8vIFRoaXMgY29uc3RydWN0b3IgdGVzdHMg
dGhhdCB3ZSBjYW4ndCBpbml0aWFsaXplIHRoZSBmbGFnIHdpdGggY2hhciB2YWx1ZQorICAvLyBi
dXQgY2FuIHdpdGggZXhwbGljaXRseSBjb25zdHJ1Y3RlZCBOb25EZmx0Q29uc3RydWN0aWJsZS4K
KyAgZXhwbGljaXQgTm9uRGZsdENvbnN0cnVjdGlibGUoY2hhciBjKSA6IHZhbHVlKDEwMCArIHN0
YXRpY19jYXN0PGludD4oYykpIHt9CisKKyAgaW50IHZhbHVlOworfTsKKworYm9vbCBBYnNsUGFy
c2VGbGFnKGFic2w6OnN0cmluZ192aWV3IGluLCBOb25EZmx0Q29uc3RydWN0aWJsZSogbmRjX291
dCwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyopIHsKKyAgcmV0dXJuIGFic2w6OlNp
bXBsZUF0b2koaW4sICZuZGNfb3V0LT52YWx1ZSk7Cit9CitzdGQ6OnN0cmluZyBBYnNsVW5wYXJz
ZUZsYWcoY29uc3QgTm9uRGZsdENvbnN0cnVjdGlibGUmIG5kYykgeworICByZXR1cm4gYWJzbDo6
U3RyQ2F0KG5kYy52YWx1ZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitBQlNMX0ZMQUcoTm9u
RGZsdENvbnN0cnVjdGlibGUsIG5kY19mbGFnMSwgTm9uRGZsdENvbnN0cnVjdGlibGUoJzEnKSwK
KyAgICAgICAgICAiRmxhZyB3aXRoIG5vbiBkZWZhdWx0IGNvbnN0cnVjdGlibGUgdHlwZSIpOwor
QUJTTF9GTEFHKE5vbkRmbHRDb25zdHJ1Y3RpYmxlLCBuZGNfZmxhZzIsIDAsCisgICAgICAgICAg
IkZsYWcgd2l0aCBub24gZGVmYXVsdCBjb25zdHJ1Y3RpYmxlIHR5cGUiKTsKKworbmFtZXNwYWNl
IHsKKworVEVTVChGbGFnVGVzdCwgVGVzdE5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlVHlwZSkgewor
ICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19uZGNfZmxhZzEpLnZhbHVlLCAnMScgKyAx
MDApOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19uZGNfZmxhZzIpLnZhbHVlLCAw
KTsKKworICBhYnNsOjpTZXRGbGFnKCZGTEFHU19uZGNfZmxhZzEsIE5vbkRmbHRDb25zdHJ1Y3Rp
YmxlKCdBJykpOworICBhYnNsOjpTZXRGbGFnKCZGTEFHU19uZGNfZmxhZzIsIDI1KTsKKworICBF
WFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19uZGNfZmxhZzEpLnZhbHVlLCAnQScgKyAxMDAp
OworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19uZGNfZmxhZzIpLnZhbHVlLCAyNSk7
Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK30gIC8vIG5hbWVzcGFjZQorCitBQlNMX1JFVElSRURf
RkxBRyhib29sLCBvbGRfYm9vbF9mbGFnLCB0cnVlLCAib2xkIGRlc2NyIik7CitBQlNMX1JFVElS
RURfRkxBRyhpbnQsIG9sZF9pbnRfZmxhZywgKGludClzdGQ6OnNxcnQoMTApLCAib2xkIGRlc2Ny
Iik7CitBQlNMX1JFVElSRURfRkxBRyhzdGQ6OnN0cmluZywgb2xkX3N0cl9mbGFnLCAiIiwgYWJz
bDo6U3RyQ2F0KCJvbGQgIiwgImRlc2NyIikpOworCituYW1lc3BhY2UgeworCitURVNUKEZsYWdU
ZXN0LCBUZXN0UmV0aXJlZEZsYWdSZWdpc3RyYXRpb24pIHsKKyAgYm9vbCBpc19ib29sID0gZmFs
c2U7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpJc1JldGlyZWRGbGFnKCJvbGRfYm9vbF9mbGFnIiwg
JmlzX2Jvb2wpKTsKKyAgRVhQRUNUX1RSVUUoaXNfYm9vbCk7CisgIEVYUEVDVF9UUlVFKGZsYWdz
OjpJc1JldGlyZWRGbGFnKCJvbGRfaW50X2ZsYWciLCAmaXNfYm9vbCkpOworICBFWFBFQ1RfRkFM
U0UoaXNfYm9vbCk7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpJc1JldGlyZWRGbGFnKCJvbGRfc3Ry
X2ZsYWciLCAmaXNfYm9vbCkpOworICBFWFBFQ1RfRkFMU0UoaXNfYm9vbCk7CisgIEVYUEVDVF9G
QUxTRShmbGFnczo6SXNSZXRpcmVkRmxhZygic29tZV9vdGhlcl9mbGFnIiwgJmlzX2Jvb2wpKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9mbGFnX3Rlc3Rf
ZGVmcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWdfdGVzdF9kZWZzLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMzY2YzU4MDMyNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2ZsYWdzL2ZsYWdfdGVzdF9kZWZzLmNjCkBAIC0wLDAgKzEsMjIgQEAKKy8vCisvLyAgQ29w
eXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKy8vIFRoaXMgZmlsZSBpcyB1c2Vk
IHRvIHRlc3QgdGhlIG1pc21hdGNoIG9mIHRoZSBmbGFnIHR5cGUgYmV0d2VlbiBkZWZpbml0aW9u
CisvLyBhbmQgZGVjbGFyYXRpb24uIFRoZXNlIGFyZSBkZWZpbml0aW9ucy4gZmxhZ190ZXN0LmNj
IGNvbnRhaW5zIGRlY2xhcmF0aW9ucy4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSAiYWJz
bC9mbGFncy9mbGFnLmgiCisKK0FCU0xfRkxBRyhpbnQsIG1pc3R5cGVkX2ludF9mbGFnLCAwLCAi
Iik7CitBQlNMX0ZMQUcoc3RkOjpzdHJpbmcsIG1pc3R5cGVkX3N0cmluZ19mbGFnLCAiIiwgIiIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMDgwMGZjMGZiMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5jYwpAQCAtMCwwICsxLDQ5NCBAQAor
Ly8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAi
YWJzbC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGluZWZsYWcuaCIKKworI2luY2x1ZGUgPGNhc3Nl
cnQ+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNs
dWRlICJhYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9jb25m
aWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3VzYWdlX2NvbmZpZy5oIgorI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0
ZXguaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsIHsKKwor
Ly8gVGhlIGhlbHAgbWVzc2FnZSBpbmRpY2F0aW5nIHRoYXQgdGhlIGNvbW1hbmRsaW5lIGZsYWcg
aGFzIGJlZW4KKy8vICdzdHJpcHBlZCcuIEl0IHdpbGwgbm90IHNob3cgdXAgd2hlbiBkb2luZyAi
LWhlbHAiIGFuZCBpdHMKKy8vIHZhcmlhbnRzLiBUaGUgZmxhZyBpcyBzdHJpcHBlZCBpZiBBQlNM
X0ZMQUdTX1NUUklQX0hFTFAgaXMgc2V0IHRvIDEKKy8vIGJlZm9yZSBpbmNsdWRpbmcgYWJzbC9m
bGFncy9mbGFnLmgKKworLy8gVGhpcyBpcyB1c2VkIGJ5IHRoaXMgZmlsZSwgYW5kIGFsc28gaW4g
Y29tbWFuZGxpbmVmbGFnc19yZXBvcnRpbmcuY2MKK2NvbnN0IGNoYXIga1N0cmlwcGVkRmxhZ0hl
bHBbXSA9ICJcMDAxXDAwMlwwMDNcMDA0ICh1bmtub3duKSBcMDA0XDAwM1wwMDJcMDAxIjsKKwor
bmFtZXNwYWNlIHsKKworLy8gQ3VycmVudGx5IHdlIG9ubHkgdmFsaWRhdGUgZmxhZyB2YWx1ZXMg
Zm9yIHVzZXItZGVmaW5lZCBmbGFnIHR5cGVzLgorYm9vbCBTaG91bGRWYWxpZGF0ZUZsYWdWYWx1
ZShjb25zdCBDb21tYW5kTGluZUZsYWcmIGZsYWcpIHsKKyNkZWZpbmUgRE9OVF9WQUxJREFURShU
KSBcCisgIGlmIChmbGFnLklzT2ZUeXBlPFQ+KCkpIHJldHVybiBmYWxzZTsKKyAgQUJTTF9GTEFH
U19JTlRFUk5BTF9GT1JfRUFDSF9MT0NLX0ZSRUUoRE9OVF9WQUxJREFURSkKKyAgRE9OVF9WQUxJ
REFURShzdGQ6OnN0cmluZykKKyAgRE9OVF9WQUxJREFURShzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4pCisjdW5kZWYgRE9OVF9WQUxJREFURQorCisgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBu
YW1lc3BhY2UKKworYWJzbDo6TXV0ZXgqIEluaXRGbGFnKENvbW1hbmRMaW5lRmxhZyogZmxhZykg
eworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGFic2w6Ok11dGV4IGluaXRfbG9jayhhYnNsOjpr
Q29uc3RJbml0KTsKKyAgYWJzbDo6TXV0ZXgqIG11OworCisgIHsKKyAgICBhYnNsOjpNdXRleExv
Y2sgbG9jaygmaW5pdF9sb2NrKTsKKworICAgIGlmIChmbGFnLT5sb2NrcyA9PSBudWxscHRyKSB7
ICAvLyBNdXN0IGluaXRpYWxpemUgTXV0ZXhlcyBmb3IgdGhpcyBmbGFnLgorICAgICAgZmxhZy0+
bG9ja3MgPSBuZXcgZmxhZ3NfaW50ZXJuYWw6OkNvbW1hbmRMaW5lRmxhZ0xvY2tzOworICAgIH0K
KworICAgIG11ID0gJmZsYWctPmxvY2tzLT5wcmltYXJ5X211OworICB9CisKKyAgeworICAgIGFi
c2w6Ok11dGV4TG9jayBsb2NrKG11KTsKKworICAgIGlmICghZmxhZy0+cmV0aXJlZCAmJiBmbGFn
LT5kZWYgPT0gbnVsbHB0cikgeworICAgICAgLy8gTmVlZCB0byBpbml0aWFsaXplIGRlZiBhbmQg
Y3VyIGZpZWxkcy4KKyAgICAgIGZsYWctPmRlZiA9ICgqZmxhZy0+bWFrZV9pbml0X3ZhbHVlKSgp
OworICAgICAgZmxhZy0+Y3VyID0gQ2xvbmUoZmxhZy0+b3AsIGZsYWctPmRlZik7CisgICAgICBV
cGRhdGVDb3B5KGZsYWcpOworICAgICAgZmxhZy0+aW5pdGVkLnN0b3JlKHRydWUsIHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGVhc2UpOworICAgICAgZmxhZy0+SW52b2tlQ2FsbGJhY2soKTsKKyAgICB9
CisgIH0KKworICBmbGFnLT5pbml0ZWQuc3RvcmUodHJ1ZSwgc3RkOjptZW1vcnlfb3JkZXJfcmVs
ZWFzZSk7CisgIHJldHVybiBtdTsKK30KKworLy8gRW5zdXJlIHRoYXQgdGhlIGxhemlseSBpbml0
aWFsaXplZCBmaWVsZHMgb2YgKmZsYWcgaGF2ZSBiZWVuIGluaXRpYWxpemVkLAorLy8gYW5kIHJl
dHVybiAmZmxhZy0+bG9ja3MtPnByaW1hcnlfbXUuCithYnNsOjpNdXRleCogQ29tbWFuZExpbmVG
bGFnOjpJbml0RmxhZ0lmTmVjZXNzYXJ5KCkgY29uc3QKKyAgICBBQlNMX0xPQ0tfUkVUVVJORUQo
bG9ja3MtPnByaW1hcnlfbXUpIHsKKyAgaWYgKCF0aGlzLT5pbml0ZWQubG9hZChzdGQ6Om1lbW9y
eV9vcmRlcl9hY3F1aXJlKSkgeworICAgIHJldHVybiBJbml0RmxhZyhjb25zdF9jYXN0PENvbW1h
bmRMaW5lRmxhZyo+KHRoaXMpKTsKKyAgfQorCisgIC8vIEFsbCBmaWVsZHMgaW5pdGlhbGl6ZWQ7
IHRoaXMtPmxvY2tzIGlzIHRoZXJlZm9yZSBzYWZlIHRvIHJlYWQuCisgIHJldHVybiAmdGhpcy0+
bG9ja3MtPnByaW1hcnlfbXU7Cit9CisKK3ZvaWQgQ29tbWFuZExpbmVGbGFnOjpEZXN0cm95KCkg
Y29uc3QgeworICAvLyBWYWx1ZXMgYXJlIGhlYXAgYWxsb2NhdGVkIGZvciByZXRpcmVkIGFuZCBB
YnNlaWwgRmxhZ3MuCisgIGlmIChJc1JldGlyZWQoKSB8fCBJc0Fic2VpbEZsYWcoKSkgeworICAg
IGlmICh0aGlzLT5jdXIpIERlbGV0ZSh0aGlzLT5vcCwgdGhpcy0+Y3VyKTsKKyAgICBpZiAodGhp
cy0+ZGVmKSBEZWxldGUodGhpcy0+b3AsIHRoaXMtPmRlZik7CisgIH0KKworICBkZWxldGUgdGhp
cy0+bG9ja3M7Cit9CisKK2Jvb2wgQ29tbWFuZExpbmVGbGFnOjpJc01vZGlmaWVkKCkgY29uc3Qg
eworICBhYnNsOjpNdXRleExvY2sgbChJbml0RmxhZ0lmTmVjZXNzYXJ5KCkpOworICByZXR1cm4g
bW9kaWZpZWQ7Cit9CisKK3ZvaWQgQ29tbWFuZExpbmVGbGFnOjpTZXRNb2RpZmllZChib29sIGlz
X21vZGlmaWVkKSB7CisgIGFic2w6Ok11dGV4TG9jayBsKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7
CisgIG1vZGlmaWVkID0gaXNfbW9kaWZpZWQ7Cit9CisKK2Jvb2wgQ29tbWFuZExpbmVGbGFnOjpJ
c1NwZWNpZmllZE9uQ29tbWFuZExpbmUoKSBjb25zdCB7CisgIGFic2w6Ok11dGV4TG9jayBsKElu
aXRGbGFnSWZOZWNlc3NhcnkoKSk7CisgIHJldHVybiBvbl9jb21tYW5kX2xpbmU7Cit9CisKK2Fi
c2w6OnN0cmluZ192aWV3IENvbW1hbmRMaW5lRmxhZzo6VHlwZW5hbWUoKSBjb25zdCB7CisgIC8v
IFdlIGRvIG5vdCBzdG9yZS9yZXBvcnQgdHlwZSBpbiBBYnNlaWwgRmxhZ3MsIHNvIHRoYXQgdXNl
ciBkbyBub3QgcmVseSBvbiBpbgorICAvLyBhdCBydW50aW1lCisgIGlmIChJc0Fic2VpbEZsYWco
KSB8fCBJc1JldGlyZWQoKSkgcmV0dXJuICIiOworCisjZGVmaW5lIEhBTkRMRV9WMV9CVUlMVElO
X1RZUEUodCkgXAorICBpZiAoSXNPZlR5cGU8dD4oKSkgeyAgICAgICAgICAgIFwKKyAgICByZXR1
cm4gI3Q7ICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworICBIQU5ETEVfVjFfQlVJTFRJTl9U
WVBFKGJvb2wpOworICBIQU5ETEVfVjFfQlVJTFRJTl9UWVBFKGludDMyX3QpOworICBIQU5ETEVf
VjFfQlVJTFRJTl9UWVBFKGludDY0X3QpOworICBIQU5ETEVfVjFfQlVJTFRJTl9UWVBFKHVpbnQ2
NF90KTsKKyAgSEFORExFX1YxX0JVSUxUSU5fVFlQRShkb3VibGUpOworI3VuZGVmIEhBTkRMRV9W
MV9CVUlMVElOX1RZUEUKKworICBpZiAoSXNPZlR5cGU8c3RkOjpzdHJpbmc+KCkpIHsKKyAgICBy
ZXR1cm4gInN0cmluZyI7CisgIH0KKworICByZXR1cm4gIiI7Cit9CisKK3N0ZDo6c3RyaW5nIENv
bW1hbmRMaW5lRmxhZzo6RmlsZW5hbWUoKSBjb25zdCB7CisgIHJldHVybiBmbGFnc19pbnRlcm5h
bDo6R2V0VXNhZ2VDb25maWcoKS5ub3JtYWxpemVfZmlsZW5hbWUodGhpcy0+ZmlsZW5hbWUpOwor
fQorCitzdGQ6OnN0cmluZyBDb21tYW5kTGluZUZsYWc6OkRlZmF1bHRWYWx1ZSgpIGNvbnN0IHsK
KyAgYWJzbDo6TXV0ZXhMb2NrIGwoSW5pdEZsYWdJZk5lY2Vzc2FyeSgpKTsKKworICByZXR1cm4g
VW5wYXJzZSh0aGlzLT5tYXJzaGFsbGluZ19vcCwgdGhpcy0+ZGVmKTsKK30KKworc3RkOjpzdHJp
bmcgQ29tbWFuZExpbmVGbGFnOjpDdXJyZW50VmFsdWUoKSBjb25zdCB7CisgIGFic2w6Ok11dGV4
TG9jayBsKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisKKyAgcmV0dXJuIFVucGFyc2UodGhpcy0+
bWFyc2hhbGxpbmdfb3AsIHRoaXMtPmN1cik7Cit9CisKK2Jvb2wgQ29tbWFuZExpbmVGbGFnOjpI
YXNWYWxpZGF0b3JGbigpIGNvbnN0IHsKKyAgYWJzbDo6TXV0ZXhMb2NrIGwoSW5pdEZsYWdJZk5l
Y2Vzc2FyeSgpKTsKKworICByZXR1cm4gdGhpcy0+dmFsaWRhdG9yICE9IG51bGxwdHI7Cit9CisK
K2Jvb2wgQ29tbWFuZExpbmVGbGFnOjpTZXRWYWxpZGF0b3JGbihGbGFnVmFsaWRhdG9yIGZuKSB7
CisgIGFic2w6Ok11dGV4TG9jayBsKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisKKyAgLy8gb2sg
dG8gcmVnaXN0ZXIgdGhlIHNhbWUgZnVuY3Rpb24gb3ZlciBhbmQgb3ZlciBhZ2FpbgorICBpZiAo
Zm4gPT0gdGhpcy0+dmFsaWRhdG9yKSByZXR1cm4gdHJ1ZTsKKworICAvLyBDYW4ndCBzZXQgdmFs
aWRhdG9yIHRvIGEgZGlmZmVyZW50IGZ1bmN0aW9uLCB1bmxlc3MgcmVzZXQgZmlyc3QuCisgIGlm
IChmbiAhPSBudWxscHRyICYmIHRoaXMtPnZhbGlkYXRvciAhPSBudWxscHRyKSB7CisgICAgQUJT
TF9JTlRFUk5BTF9MT0coCisgICAgICAgIFdBUk5JTkcsIGFic2w6OlN0ckNhdCgiSWdub3Jpbmcg
U2V0VmFsaWRhdG9yRm4oKSBmb3IgZmxhZyAnIiwgTmFtZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIic6IHZhbGlkYXRlLWZuIGFscmVhZHkgcmVnaXN0ZXJlZCIpKTsKKworICAg
IHJldHVybiBmYWxzZTsKKyAgfQorCisgIHRoaXMtPnZhbGlkYXRvciA9IGZuOworICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBDb21tYW5kTGluZUZsYWc6Okludm9rZVZhbGlkYXRvcihjb25zdCB2
b2lkKiB2YWx1ZSkgY29uc3QKKyAgICBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRCh0aGlz
LT5sb2Nrcy0+cHJpbWFyeV9tdSkgeworICBpZiAoIXRoaXMtPnZhbGlkYXRvcikgeworICAgIHJl
dHVybiB0cnVlOworICB9CisKKyAgKHZvaWQpdmFsdWU7CisKKyAgQUJTTF9JTlRFUk5BTF9MT0co
CisgICAgICBGQVRBTCwKKyAgICAgIGFic2w6OlN0ckNhdCgiRmxhZyAnIiwgTmFtZSgpLAorICAg
ICAgICAgICAgICAgICAgICInIG9mIGVuY2Fwc3VsYXRlZCB0eXBlIHNob3VsZCBub3QgaGF2ZSBh
IHZhbGlkYXRvciIpKTsKKworICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ29tbWFuZExpbmVG
bGFnOjpTZXRDYWxsYmFjaygKKyAgICBjb25zdCBmbGFnc19pbnRlcm5hbDo6RmxhZ0NhbGxiYWNr
IG11dGF0aW9uX2NhbGxiYWNrKSB7CisgIGFic2w6Ok11dGV4TG9jayBsKEluaXRGbGFnSWZOZWNl
c3NhcnkoKSk7CisKKyAgY2FsbGJhY2sgPSBtdXRhdGlvbl9jYWxsYmFjazsKKworICBJbnZva2VD
YWxsYmFjaygpOworfQorCisvLyBJZiB0aGUgZmxhZyBoYXMgYSBtdXRhdGlvbiBjYWxsYmFjayB0
aGlzIGZ1bmN0aW9uIGludm9rZXMgaXQuIFdoaWxlIHRoZQorLy8gY2FsbGJhY2sgaXMgYmVpbmcg
aW52b2tlZCB0aGUgcHJpbWFyeSBmbGFnJ3MgbXV0ZXggaXMgdW5sb2NrZWQgYW5kIGl0IGlzCisv
LyByZS1sb2NrZWQgYmFjayBhZnRlciBjYWxsIHRvIGNhbGxiYWNrIGlzIGNvbXBsZXRlZC4gQ2Fs
bGJhY2sgaW52b2NhdGlvbiBpcworLy8gZ3VhcmRlZCBieSBmbGFnJ3Mgc2Vjb25kYXJ5IG11dGV4
IGluc3RlYWQgd2hpY2ggcHJldmVudHMgY29uY3VycmVudCBjYWxsYmFjaworLy8gaW52b2NhdGlv
bi4gTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlIGZvciBvdGhlciB0aHJlYWQgdG8gZ3JhYiB0aGUg
cHJpbWFyeQorLy8gbG9jayBhbmQgdXBkYXRlIGZsYWcncyB2YWx1ZSBhdCBhbnkgdGltZSBkdXJp
bmcgdGhlIGNhbGxiYWNrIGludm9jYXRpb24uCisvLyBUaGlzIGlzIGJ5IGRlc2lnbi4gQ2FsbGJh
Y2sgY2FuIGdldCBhIHZhbHVlIG9mIHRoZSBmbGFnIGlmIG5lY2Vzc2FyeSwgYnV0IGl0CisvLyBt
aWdodCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgdmFsdWUgaW5pdGlhdGVkIHRoZSBjYWxsYmFjayBh
bmQgaXQgYWxzbyBjYW4gYmUKKy8vIGRpZmZlcmVudCBieSB0aGUgdGltZSB0aGUgY2FsbGJhY2sg
aW52b2NhdGlvbiBpcyBjb21wbGV0ZWQuCisvLyBSZXF1aXJlcyB0aGF0ICpwcmltYXJ5X2xvY2sg
YmUgaGVsZCBpbiBleGNsdXNpdmUgbW9kZTsgaXQgbWF5IGJlIHJlbGVhc2VkCisvLyBhbmQgcmVh
Y3F1aXJlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uCit2b2lkIENvbW1hbmRMaW5lRmxhZzo6SW52
b2tlQ2FsbGJhY2soKQorICAgIEFCU0xfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKHRoaXMtPmxv
Y2tzLT5wcmltYXJ5X211KSB7CisgIGlmICghdGhpcy0+Y2FsbGJhY2spIHJldHVybjsKKworICAv
LyBUaGUgY2FsbGJhY2sgbG9jayBpcyBndWFyYW50ZWVkIGluaXRpYWxpemVkLCBiZWNhdXNlICps
b2Nrcy0+cHJpbWFyeV9tdQorICAvLyBleGlzdHMuCisgIGFic2w6Ok11dGV4KiBjYWxsYmFja19t
dSA9ICZ0aGlzLT5sb2Nrcy0+Y2FsbGJhY2tfbXU7CisKKyAgLy8gV2hlbiBleGVjdXRpbmcgdGhl
IGNhbGxiYWNrIHdlIG5lZWQgdGhlIHByaW1hcnkgZmxhZydzIG11dGV4IHRvIGJlIHVubG9ja2Vk
CisgIC8vIHNvIHRoYXQgY2FsbGJhY2sgY2FuIHJldHJpZXZlIHRoZSBmbGFnJ3MgdmFsdWUuCisg
IHRoaXMtPmxvY2tzLT5wcmltYXJ5X211LlVubG9jaygpOworCisgIHsKKyAgICBhYnNsOjpNdXRl
eExvY2sgbG9jayhjYWxsYmFja19tdSk7CisgICAgdGhpcy0+Y2FsbGJhY2soKTsKKyAgfQorCisg
IHRoaXMtPmxvY2tzLT5wcmltYXJ5X211LkxvY2soKTsKK30KKworLy8gQXR0ZW1wdHMgdG8gcGFy
c2Ugc3VwcGxpZWQgYHZhbHVlYCBzdHJpbmcgdXNpbmcgcGFyc2luZyByb3V0aW5lIGluIHRoZSBg
ZmxhZ2AKKy8vIGFyZ3VtZW50LiBJZiBwYXJzaW5nIGlzIHN1Y2Nlc3NmdWwsIGl0IHdpbGwgdHJ5
IHRvIHZhbGlkYXRlIHRoYXQgdGhlIHBhcnNlZAorLy8gdmFsdWUgaXMgdmFsaWQgZm9yIHRoZSBz
cGVjaWZpZWQgJ2ZsYWcnLiBGaW5hbGx5IHRoaXMgZnVuY3Rpb24gc3RvcmVzIHRoZQorLy8gcGFy
c2VkIHZhbHVlIGluICdkc3QnIGFzc3VtaW5nIGl0IGlzIGEgcG9pbnRlciB0byB0aGUgZmxhZydz
IHZhbHVlIHR5cGUuIEluCisvLyBjYXNlIGlmIGFueSBlcnJvciBpcyBlbmNvdW50ZXJlZCBpbiBl
aXRoZXIgc3RlcCwgdGhlIGVycm9yIG1lc3NhZ2UgaXMgc3RvcmVkCisvLyBpbiAnZXJyJworYm9v
bCBUcnlQYXJzZUxvY2tlZChDb21tYW5kTGluZUZsYWcqIGZsYWcsIHZvaWQqIGRzdCwgYWJzbDo6
c3RyaW5nX3ZpZXcgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnIp
CisgICAgQUJTTF9FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoZmxhZy0+bG9ja3MtPnByaW1hcnlf
bXUpIHsKKyAgdm9pZCogdGVudGF0aXZlX3ZhbHVlID0gQ2xvbmUoZmxhZy0+b3AsIGZsYWctPmRl
Zik7CisgIHN0ZDo6c3RyaW5nIHBhcnNlX2VycjsKKyAgaWYgKCFQYXJzZShmbGFnLT5tYXJzaGFs
bGluZ19vcCwgdmFsdWUsIHRlbnRhdGl2ZV92YWx1ZSwgJnBhcnNlX2VycikpIHsKKyAgICBhdXRv
IHR5cGVfbmFtZSA9IGZsYWctPlR5cGVuYW1lKCk7CisgICAgYWJzbDo6c3RyaW5nX3ZpZXcgZXJy
X3NlcCA9IHBhcnNlX2Vyci5lbXB0eSgpID8gIiIgOiAiOyAiOworICAgIGFic2w6OnN0cmluZ192
aWV3IHR5cGVuYW1lX3NlcCA9IHR5cGVfbmFtZS5lbXB0eSgpID8gIiIgOiAiICI7CisgICAgKmVy
ciA9IGFic2w6OlN0ckNhdCgiSWxsZWdhbCB2YWx1ZSAnIiwgdmFsdWUsICInIHNwZWNpZmllZCBm
b3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWVfc2VwLCB0eXBlX25hbWUsICIg
ZmxhZyAnIiwgZmxhZy0+TmFtZSgpLCAiJyIsCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJf
c2VwLCBwYXJzZV9lcnIpOworICAgIERlbGV0ZShmbGFnLT5vcCwgdGVudGF0aXZlX3ZhbHVlKTsK
KyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBpZiAoIWZsYWctPkludm9rZVZhbGlkYXRvcih0
ZW50YXRpdmVfdmFsdWUpKSB7CisgICAgKmVyciA9IGFic2w6OlN0ckNhdCgiRmFpbGVkIHZhbGlk
YXRpb24gb2YgbmV3IHZhbHVlICciLAorICAgICAgICAgICAgICAgICAgICAgICAgVW5wYXJzZShm
bGFnLT5tYXJzaGFsbGluZ19vcCwgdGVudGF0aXZlX3ZhbHVlKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICInIGZvciBmbGFnICciLCBmbGFnLT5OYW1lKCksICInIik7CisgICAgRGVsZXRlKGZs
YWctPm9wLCB0ZW50YXRpdmVfdmFsdWUpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGZs
YWctPmNvdW50ZXIrKzsKKyAgQ29weShmbGFnLT5vcCwgdGVudGF0aXZlX3ZhbHVlLCBkc3QpOwor
ICBEZWxldGUoZmxhZy0+b3AsIHRlbnRhdGl2ZV92YWx1ZSk7CisgIHJldHVybiB0cnVlOworfQor
CisvLyBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBiYXNlZCBvbiBzcGVjaWZpZWQgc3RyaW5n
IGB2YWx1ZWAuIElmIHRoZSBmbGFnCisvLyB3YXMgc3VjY2Vzc2Z1bGx5IHNldCB0byBuZXcgdmFs
dWUsIGl0IHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlLCBzZXRzIGBlcnJgCisvLyB0byBpbmRpY2F0
ZSB0aGUgZXJyb3IsIGxlYXZlcyB0aGUgZmxhZyB1bmNoYW5nZWQsIGFuZCByZXR1cm5zIGZhbHNl
LiBUaGVyZQorLy8gYXJlIHRocmVlIHdheXMgdG8gc2V0IHRoZSBmbGFnJ3MgdmFsdWU6CisvLyAg
KiBVcGRhdGUgdGhlIGN1cnJlbnQgZmxhZyB2YWx1ZQorLy8gICogVXBkYXRlIHRoZSBmbGFnJ3Mg
ZGVmYXVsdCB2YWx1ZQorLy8gICogVXBkYXRlIHRoZSBjdXJyZW50IGZsYWcgdmFsdWUgaWYgaXQg
d2FzIG5ldmVyIHNldCBiZWZvcmUKKy8vIFRoZSBtb2RlIGlzIHNlbGVjdGVkIGJhc2VkIG9uICdz
ZXRfbW9kZScgcGFyYW1ldGVyLgorYm9vbCBDb21tYW5kTGluZUZsYWc6OlNldEZyb21TdHJpbmco
YWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWx1ZVNvdXJjZSBzb3VyY2UsIHN0ZDo6c3RyaW5nKiBlcnIpIHsKKyAgaWYg
KElzUmV0aXJlZCgpKSByZXR1cm4gZmFsc2U7CisKKyAgYWJzbDo6TXV0ZXhMb2NrIGwoSW5pdEZs
YWdJZk5lY2Vzc2FyeSgpKTsKKworICAvLyBEaXJlY3QtYWNjZXNzIGZsYWdzIGNhbiBiZSBtb2Rp
ZmllZCB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlCisgIC8vIGZsYWcgQVBJLiBEZXRlY3Qgc3Vj
aCBjaGFuZ2VzIGFuZCB1cGRhdGUgdGhlIGZsYWctPm1vZGlmaWVkIGJpdC4KKyAgaWYgKCFJc0Fi
c2VpbEZsYWcoKSkgeworICAgIGlmICghdGhpcy0+bW9kaWZpZWQgJiYgQ2hhbmdlZERpcmVjdGx5
KHRoaXMsIHRoaXMtPmN1ciwgdGhpcy0+ZGVmKSkgeworICAgICAgdGhpcy0+bW9kaWZpZWQgPSB0
cnVlOworICAgIH0KKyAgfQorCisgIHN3aXRjaCAoc2V0X21vZGUpIHsKKyAgICBjYXNlIFNFVF9G
TEFHU19WQUxVRTogeworICAgICAgLy8gc2V0IG9yIG1vZGlmeSB0aGUgZmxhZydzIHZhbHVlCisg
ICAgICBpZiAoIVRyeVBhcnNlTG9ja2VkKHRoaXMsIHRoaXMtPmN1ciwgdmFsdWUsIGVycikpIHJl
dHVybiBmYWxzZTsKKyAgICAgIHRoaXMtPm1vZGlmaWVkID0gdHJ1ZTsKKyAgICAgIFVwZGF0ZUNv
cHkodGhpcyk7CisgICAgICBJbnZva2VDYWxsYmFjaygpOworCisgICAgICBpZiAoc291cmNlID09
IGtDb21tYW5kTGluZSkgeworICAgICAgICB0aGlzLT5vbl9jb21tYW5kX2xpbmUgPSB0cnVlOwor
ICAgICAgfQorICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU0VUX0ZMQUdfSUZfREVGQVVM
VDogeworICAgICAgLy8gc2V0IHRoZSBmbGFnJ3MgdmFsdWUsIGJ1dCBvbmx5IGlmIGl0IGhhc24n
dCBiZWVuIHNldCBieSBzb21lb25lIGVsc2UKKyAgICAgIGlmICghdGhpcy0+bW9kaWZpZWQpIHsK
KyAgICAgICAgaWYgKCFUcnlQYXJzZUxvY2tlZCh0aGlzLCB0aGlzLT5jdXIsIHZhbHVlLCBlcnIp
KSByZXR1cm4gZmFsc2U7CisgICAgICAgIHRoaXMtPm1vZGlmaWVkID0gdHJ1ZTsKKyAgICAgICAg
VXBkYXRlQ29weSh0aGlzKTsKKyAgICAgICAgSW52b2tlQ2FsbGJhY2soKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIFRPRE8ocm9nZWVmZik6IHJldmlldyBhbmQgZml4IHRoaXMgc2VtYW50
aWMuIEN1cnJlbnRseSB3ZSBkbyBub3QgZmFpbAorICAgICAgICAvLyBpbiB0aGlzIGNhc2UgaWYg
ZmxhZyBpcyBtb2RpZmllZC4gVGhpcyBpcyBtaXNsZWFkaW5nIHNpbmNlIHRoZSBmbGFnJ3MKKyAg
ICAgICAgLy8gdmFsdWUgaXMgbm90IHVwZGF0ZWQgZXZlbiB0aG91Z2ggd2UgcmV0dXJuIHRydWUu
CisgICAgICAgIC8vICplcnIgPSBhYnNsOjpTdHJDYXQodGhpcy0+TmFtZSgpLCAiIGlzIGFscmVh
ZHkgc2V0IHRvICIsCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgQ3VycmVudFZhbHVl
KCksICJcbiIpOworICAgICAgICAvLyByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU0VUX0ZMQUdTX0RFRkFV
TFQ6IHsKKyAgICAgIC8vIG1vZGlmeSB0aGUgZmxhZydzIGRlZmF1bHQtdmFsdWUKKyAgICAgIGlm
ICghVHJ5UGFyc2VMb2NrZWQodGhpcywgdGhpcy0+ZGVmLCB2YWx1ZSwgZXJyKSkgcmV0dXJuIGZh
bHNlOworCisgICAgICBpZiAoIXRoaXMtPm1vZGlmaWVkKSB7CisgICAgICAgIC8vIE5lZWQgdG8g
c2V0IGJvdGggZGVmdmFsdWUgKmFuZCogY3VycmVudCwgaW4gdGhpcyBjYXNlCisgICAgICAgIENv
cHkodGhpcy0+b3AsIHRoaXMtPmRlZiwgdGhpcy0+Y3VyKTsKKyAgICAgICAgVXBkYXRlQ29weSh0
aGlzKTsKKyAgICAgICAgSW52b2tlQ2FsbGJhY2soKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAvLyB1bmtub3duIHNldF9tb2RlCisgICAgICBh
c3NlcnQoZmFsc2UpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorCisgIHJldHVy
biB0cnVlOworfQorCit2b2lkIENvbW1hbmRMaW5lRmxhZzo6U3RvcmVBdG9taWMoc2l6ZV90IHNp
emUpIHsKKyAgaW50NjRfdCB0ID0gMDsKKyAgYXNzZXJ0KHNpemUgPD0gc2l6ZW9mKGludDY0X3Qp
KTsKKyAgbWVtY3B5KCZ0LCB0aGlzLT5jdXIsIHNpemUpOworICB0aGlzLT5hdG9taWMuc3RvcmUo
dCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7Cit9CisKK3ZvaWQgQ29tbWFuZExpbmVGbGFn
OjpDaGVja0RlZmF1bHRWYWx1ZVBhcnNpbmdSb3VuZHRyaXAoKSBjb25zdCB7CisgIHN0ZDo6c3Ry
aW5nIHYgPSBEZWZhdWx0VmFsdWUoKTsKKworICBhYnNsOjpNdXRleExvY2sgbG9jayhJbml0Rmxh
Z0lmTmVjZXNzYXJ5KCkpOworCisgIHZvaWQqIGRzdCA9IENsb25lKHRoaXMtPm9wLCB0aGlzLT5k
ZWYpOworICBzdGQ6OnN0cmluZyBlcnJvcjsKKyAgaWYgKCFmbGFnc19pbnRlcm5hbDo6UGFyc2Uo
dGhpcy0+bWFyc2hhbGxpbmdfb3AsIHYsIGRzdCwgJmVycm9yKSkgeworICAgIEFCU0xfSU5URVJO
QUxfTE9HKAorICAgICAgICBGQVRBTCwKKyAgICAgICAgYWJzbDo6U3RyQ2F0KCJGbGFnICIsIE5h
bWUoKSwgIiAoZnJvbSAiLCBGaWxlbmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgIik6IHN0
ZDo6c3RyaW5nIGZvcm0gb2YgZGVmYXVsdCB2YWx1ZSAnIiwgdiwKKyAgICAgICAgICAgICAgICAg
ICAgICInIGNvdWxkIG5vdCBiZSBwYXJzZWQ7IGVycm9yPSIsIGVycm9yKSk7CisgIH0KKworICAv
LyBXZSBkbyBub3QgY29tcGFyZSBkc3QgdG8gZGVmIHNpbmNlIHBhcnNpbmcvdW5wYXJzaW5nIG1h
eSBtYWtlCisgIC8vIHNtYWxsIGNoYW5nZXMsIGUuZy4sIHByZWNpc2lvbiBsb3NzIGZvciBmbG9h
dGluZyBwb2ludCB0eXBlcy4KKyAgRGVsZXRlKHRoaXMtPm9wLCBkc3QpOworfQorCitib29sIENv
bW1hbmRMaW5lRmxhZzo6VmFsaWRhdGVEZWZhdWx0VmFsdWUoKSBjb25zdCB7CisgIGFic2w6Ok11
dGV4TG9jayBsb2NrKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisgIHJldHVybiBJbnZva2VWYWxp
ZGF0b3IodGhpcy0+ZGVmKTsKK30KKworYm9vbCBDb21tYW5kTGluZUZsYWc6OlZhbGlkYXRlSW5w
dXRWYWx1ZShhYnNsOjpzdHJpbmdfdmlldyB2YWx1ZSkgY29uc3QgeworICBhYnNsOjpNdXRleExv
Y2sgbChJbml0RmxhZ0lmTmVjZXNzYXJ5KCkpOyAgLy8gcHJvdGVjdCBkZWZhdWx0IHZhbHVlIGFj
Y2VzcworCisgIHZvaWQqIG9iaiA9IENsb25lKHRoaXMtPm9wLCB0aGlzLT5kZWYpOworICBzdGQ6
OnN0cmluZyBpZ25vcmVkX2Vycm9yOworICBjb25zdCBib29sIHJlc3VsdCA9CisgICAgICBmbGFn
c19pbnRlcm5hbDo6UGFyc2UodGhpcy0+bWFyc2hhbGxpbmdfb3AsIHZhbHVlLCBvYmosICZpZ25v
cmVkX2Vycm9yKSAmJgorICAgICAgSW52b2tlVmFsaWRhdG9yKG9iaik7CisgIERlbGV0ZSh0aGlz
LT5vcCwgb2JqKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3QgaW50NjRfdCBDb21tYW5k
TGluZUZsYWc6OmtBdG9taWNJbml0OworCit2b2lkIENvbW1hbmRMaW5lRmxhZzo6UmVhZCh2b2lk
KiBkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGFnc19pbnRlcm5hbDo6
RmxhZ09wRm4gZHN0X29wKSBjb25zdCB7CisgIGFic2w6OlJlYWRlck11dGV4TG9jayBsKEluaXRG
bGFnSWZOZWNlc3NhcnkoKSk7CisKKyAgLy8gYGRzdF9vcGAgaXMgdGhlIHVubWFyc2hhbGluZyBv
cGVyYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGUgZGVjbGFyYXRpb24KKyAgLy8gdmlzaWJpbGUg
YXQgdGhlIGNhbGwgc2l0ZS4gYG9wYCBpcyB0aGUgRmxhZydzIGRlZmluZWQgdW5tYXJzaGFsbGlu
ZworICAvLyBvcGVyYXRpb24uIFRoZXkgbXVzdCBtYXRjaCBmb3IgdGhpcyBvcGVyYXRpb24gdG8g
YmUgd2VsbC1kZWZpbmVkLgorICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGRzdF9vcCAhPSBvcCkp
IHsKKyAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAgICAgRVJST1IsCisgICAgICAgIGFic2w6
OlN0ckNhdCgiRmxhZyAnIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICInIGlzIGRlZmlu
ZWQgYXMgb25lIHR5cGUgYW5kIGRlY2xhcmVkIGFzIGFub3RoZXIiKSk7CisgIH0KKyAgQ29weUNv
bnN0cnVjdChvcCwgY3VyLCBkc3QpOworfQorCit2b2lkIENvbW1hbmRMaW5lRmxhZzo6V3JpdGUo
Y29uc3Qgdm9pZCogc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsYWdz
X2ludGVybmFsOjpGbGFnT3BGbiBzcmNfb3ApIHsKKyAgYWJzbDo6TXV0ZXhMb2NrIGwoSW5pdEZs
YWdJZk5lY2Vzc2FyeSgpKTsKKworICAvLyBgc3JjX29wYCBpcyB0aGUgbWFyc2hhbGxpbmcgb3Bl
cmF0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRlY2xhcmF0aW9uCisgIC8vIHZpc2libGUgYXQg
dGhlIGNhbGwgc2l0ZS4gYG9wYCBpcyB0aGUgRmxhZydzIGRlZmluZWQgbWFyc2hhbGxpbmcgb3Bl
cmF0aW9uLgorICAvLyBUaGV5IG11c3QgbWF0Y2ggZm9yIHRoaXMgb3BlcmF0aW9uIHRvIGJlIHdl
bGwtZGVmaW5lZC4KKyAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShzcmNfb3AgIT0gb3ApKSB7Cisg
ICAgQUJTTF9JTlRFUk5BTF9MT0coCisgICAgICAgIEVSUk9SLAorICAgICAgICBhYnNsOjpTdHJD
YXQoIkZsYWcgJyIsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAiJyBpcyBkZWZpbmVkIGFz
IG9uZSB0eXBlIGFuZCBkZWNsYXJlZCBhcyBhbm90aGVyIikpOworICB9CisKKyAgaWYgKFNob3Vs
ZFZhbGlkYXRlRmxhZ1ZhbHVlKCp0aGlzKSkgeworICAgIHZvaWQqIG9iaiA9IENsb25lKG9wLCBz
cmMpOworICAgIHN0ZDo6c3RyaW5nIGlnbm9yZWRfZXJyb3I7CisgICAgc3RkOjpzdHJpbmcgc3Jj
X2FzX3N0ciA9IFVucGFyc2UobWFyc2hhbGxpbmdfb3AsIHNyYyk7CisgICAgaWYgKCFQYXJzZSht
YXJzaGFsbGluZ19vcCwgc3JjX2FzX3N0ciwgb2JqLCAmaWdub3JlZF9lcnJvcikgfHwKKyAgICAg
ICAgIUludm9rZVZhbGlkYXRvcihvYmopKSB7CisgICAgICBBQlNMX0lOVEVSTkFMX0xPRyhFUlJP
UiwgYWJzbDo6U3RyQ2F0KCJBdHRlbXB0IHRvIHNldCBmbGFnICciLCBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyB0byBpbnZhbGlkIHZhbHVlICIs
IHNyY19hc19zdHIpKTsKKyAgICB9CisgICAgRGVsZXRlKG9wLCBvYmopOworICB9CisKKyAgbW9k
aWZpZWQgPSB0cnVlOworICBjb3VudGVyKys7CisgIENvcHkob3AsIHNyYywgY3VyKTsKKworICBV
cGRhdGVDb3B5KHRoaXMpOworICBJbnZva2VDYWxsYmFjaygpOworfQorCitzdGQ6OnN0cmluZyBI
ZWxwVGV4dDo6R2V0SGVscFRleHQoKSBjb25zdCB7CisgIGlmIChoZWxwX2Z1bmN0aW9uXykgcmV0
dXJuIGhlbHBfZnVuY3Rpb25fKCk7CisgIGlmIChoZWxwX21lc3NhZ2VfKSByZXR1cm4gaGVscF9t
ZXNzYWdlXzsKKworICByZXR1cm4ge307Cit9CisKKy8vIFVwZGF0ZSBhbnkgY29weSBvZiB0aGUg
ZmxhZyB2YWx1ZSB0aGF0IGlzIHN0b3JlZCBpbiBhbiBhdG9taWMgd29yZC4KKy8vIEluIGFkZGl0
aW9uIGlmIGZsYWcgaGFzIGEgbXV0YXRpb24gY2FsbGJhY2sgdGhpcyBmdW5jdGlvbiBpbnZva2Vz
IGl0Lgordm9pZCBVcGRhdGVDb3B5KENvbW1hbmRMaW5lRmxhZyogZmxhZykgeworI2RlZmluZSBT
VE9SRV9BVE9NSUMoVCkgICAgICAgICAgIFwKKyAgZWxzZSBpZiAoZmxhZy0+SXNPZlR5cGU8VD4o
KSkgeyBcCisgICAgZmxhZy0+U3RvcmVBdG9taWMoc2l6ZW9mKFQpKTsgXAorICB9CisKKyAgaWYg
KGZhbHNlKSB7CisgIH0KKyAgQUJTTF9GTEFHU19JTlRFUk5BTF9GT1JfRUFDSF9MT0NLX0ZSRUUo
U1RPUkVfQVRPTUlDKQorI3VuZGVmIFNUT1JFX0FUT01JQworfQorCisvLyBSZXR1cm4gdHJ1ZSBp
ZmYgZmxhZyB2YWx1ZSB3YXMgY2hhbmdlZCB2aWEgZGlyZWN0LWFjY2Vzcy4KK2Jvb2wgQ2hhbmdl
ZERpcmVjdGx5KENvbW1hbmRMaW5lRmxhZyogZmxhZywgY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9p
ZCogYikgeworICBpZiAoIWZsYWctPklzQWJzZWlsRmxhZygpKSB7CisvLyBOZWVkIHRvIGNvbXBh
cmUgdmFsdWVzIGZvciBkaXJlY3QtYWNjZXNzIGZsYWdzLgorI2RlZmluZSBDSEFOR0VEX0ZPUl9U
WVBFKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgIGlmIChmbGFnLT5Jc09mVHlwZTxUPigpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVCo+KGEpICE9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihiKTsgXAorICB9CisKKyAg
ICBDSEFOR0VEX0ZPUl9UWVBFKGJvb2wpOworICAgIENIQU5HRURfRk9SX1RZUEUoaW50MzJfdCk7
CisgICAgQ0hBTkdFRF9GT1JfVFlQRShpbnQ2NF90KTsKKyAgICBDSEFOR0VEX0ZPUl9UWVBFKHVp
bnQ2NF90KTsKKyAgICBDSEFOR0VEX0ZPUl9UWVBFKGRvdWJsZSk7CisgICAgQ0hBTkdFRF9GT1Jf
VFlQRShzdGQ6OnN0cmluZyk7CisjdW5kZWYgQ0hBTkdFRF9GT1JfVFlQRQorICB9CisKKyAgcmV0
dXJuIGZhbHNlOworfQorCit9ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKK30gIC8vIG5h
bWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGlu
ZWZsYWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kODI0NDNhNzc2MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5oCkBAIC0wLDAgKzEs
MzgzIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNp
Zm5kZWYgQUJTTF9GTEFHU19JTlRFUk5BTF9DT01NQU5ETElORUZMQUdfSF8KKyNkZWZpbmUgQUJT
TF9GTEFHU19JTlRFUk5BTF9DT01NQU5ETElORUZMQUdfSF8KKworI2luY2x1ZGUgPGF0b21pYz4K
KworI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL21h
cnNoYWxsaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIKKyNp
bmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIFR5cGUtc3BlY2lmaWMgb3BlcmF0aW9ucywgZWcu
LCBwYXJzaW5nLCBjb3B5aW5nLCBldGMuIGFyZSBwcm92aWRlZAorLy8gYnkgZnVuY3Rpb24gc3Bl
Y2lmaWMgdG8gdGhhdCB0eXBlIHdpdGggYSBzaWduYXR1cmUgbWF0Y2hpbmcgRmxhZ09wRm4uCitl
bnVtIEZsYWdPcCB7CisgIGtEZWxldGUsCisgIGtDbG9uZSwKKyAga0NvcHksCisgIGtDb3B5Q29u
c3RydWN0LAorICBrU2l6ZW9mLAorICBrUGFyc2UsCisgIGtVbnBhcnNlCit9OwordXNpbmcgRmxh
Z09wRm4gPSB2b2lkKiAoKikoRmxhZ09wLCBjb25zdCB2b2lkKiwgdm9pZCopOwordXNpbmcgRmxh
Z01hcnNoYWxsaW5nT3BGbiA9IHZvaWQqICgqKShGbGFnT3AsIGNvbnN0IHZvaWQqLCB2b2lkKiwg
dm9pZCopOworCisvLyBPcHRpb25zIHRoYXQgY29udHJvbCBTZXRDb21tYW5kTGluZU9wdGlvbldp
dGhNb2RlLgorZW51bSBGbGFnU2V0dGluZ01vZGUgeworICAvLyB1cGRhdGUgdGhlIGZsYWcncyB2
YWx1ZSB1bmNvbmRpdGlvbmFsbHkgKGNhbiBjYWxsIHRoaXMgbXVsdGlwbGUgdGltZXMpLgorICBT
RVRfRkxBR1NfVkFMVUUsCisgIC8vIHVwZGF0ZSB0aGUgZmxhZydzIHZhbHVlLCBidXQgKm9ubHkg
aWYqIGl0IGhhcyBub3QgeWV0IGJlZW4gdXBkYXRlZAorICAvLyB3aXRoIFNFVF9GTEFHU19WQUxV
RSwgU0VUX0ZMQUdfSUZfREVGQVVMVCwgb3IgIkZMQUdTX3h4eCA9IG5vbmRlZiIuCisgIFNFVF9G
TEFHX0lGX0RFRkFVTFQsCisgIC8vIHNldCB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUgdG8gdGhp
cy4gIElmIHRoZSBmbGFnIGhhcyBub3QgYmVlbiB1cGRhdGVkCisgIC8vIHlldCAodmlhIFNFVF9G
TEFHU19WQUxVRSwgU0VUX0ZMQUdfSUZfREVGQVVMVCwgb3IgIkZMQUdTX3h4eCA9IG5vbmRlZiIp
CisgIC8vIGNoYW5nZSB0aGUgZmxhZydzIGN1cnJlbnQgdmFsdWUgdG8gdGhlIG5ldyBkZWZhdWx0
IHZhbHVlIGFzIHdlbGwuCisgIFNFVF9GTEFHU19ERUZBVUxUCit9OworCisvLyBPcHRpb25zIHRo
YXQgY29udHJvbCBTZXRGcm9tU3RyaW5nOiBTb3VyY2Ugb2YgYSB2YWx1ZS4KK2VudW0gVmFsdWVT
b3VyY2UgeworICAvLyBGbGFnIGlzIGJlaW5nIHNldCBieSB2YWx1ZSBzcGVjaWZpZWQgb24gYSBj
b21tYW5kIGxpbmUuCisgIGtDb21tYW5kTGluZSwKKyAgLy8gRmxhZyBpcyBiZWluZyBzZXQgYnkg
dmFsdWUgc3BlY2lmaWVkIGluIHRoZSBjb2RlLgorICBrUHJvZ3JhbW1hdGljQ2hhbmdlLAorfTsK
KworLy8gU2lnbmF0dXJlIGZvciB0aGUgaGVscCBnZW5lcmF0aW9uIGZ1bmN0aW9uIHVzZWQgYXMg
YW4gYXJndW1lbnQgZm9yIHRoZQorLy8gYWJzbDo6RmxhZyBjb25zdHJ1Y3Rvci4KK3VzaW5nIEhl
bHBHZW5GdW5jID0gc3RkOjpzdHJpbmcgKCopKCk7CisKKy8vIFNpZ25hdHVyZSBmb3IgdGhlIGZ1
bmN0aW9uIGdlbmVyYXRpbmcgdGhlIGluaXRpYWwgZmxhZyB2YWx1ZSBiYXNlZCAodXN1YWxseQor
Ly8gYmFzZWQgb24gZGVmYXVsdCB2YWx1ZSBzdXBwbGllZCBpbiBmbGFnJ3MgZGVmaW5pdGlvbikK
K3VzaW5nIEluaXRpYWxWYWxHZW5GdW5jID0gdm9pZCogKCopKCk7CisKK3N0cnVjdCBDb21tYW5k
TGluZUZsYWdJbmZvOworCisvLyBTaWduYXR1cmUgZm9yIHRoZSBtdXRhdGlvbiBjYWxsYmFjayB1
c2VkIGJ5IHdhdGNoZWQgRmxhZ3MKKy8vIFRoZSBjYWxsYmFjayBpcyBub2V4Y2VwdC4KKy8vIFRP
RE8ocm9nZWVmZik6IGFkZCBub2V4Y2VwdCBhZnRlciBDKysxNyBzdXBwb3J0IGlzIGFkZGVkLgor
dXNpbmcgRmxhZ0NhbGxiYWNrID0gdm9pZCAoKikoKTsKKwordXNpbmcgRmxhZ1ZhbGlkYXRvciA9
IGJvb2wgKCopKCk7CisKK2V4dGVybiBjb25zdCBjaGFyIGtTdHJpcHBlZEZsYWdIZWxwW107CisK
Ky8vIFRoZSBwZXItdHlwZSBmdW5jdGlvbgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkKiBG
bGFnT3BzKEZsYWdPcCBvcCwgY29uc3Qgdm9pZCogdjEsIHZvaWQqIHYyKSB7CisgIHN3aXRjaCAo
b3ApIHsKKyAgICBjYXNlIGtEZWxldGU6CisgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8Y29uc3Qg
VCo+KHYxKTsKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2Uga0Nsb25lOgorICAgICAg
cmV0dXJuIG5ldyBUKCpzdGF0aWNfY2FzdDxjb25zdCBUKj4odjEpKTsKKyAgICBjYXNlIGtDb3B5
OgorICAgICAgKnN0YXRpY19jYXN0PFQqPih2MikgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KHYx
KTsKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2Uga0NvcHlDb25zdHJ1Y3Q6CisgICAg
ICBuZXcgKHYyKSBUKCpzdGF0aWNfY2FzdDxjb25zdCBUKj4odjEpKTsKKyAgICAgIHJldHVybiBu
dWxscHRyOworICAgIGNhc2Uga1NpemVvZjoKKyAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqPihzaXplb2YoVCkpOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQqIEZsYWdNYXJzaGFsbGluZ09w
cyhGbGFnT3Agb3AsIGNvbnN0IHZvaWQqIHYxLCB2b2lkKiB2Miwgdm9pZCogdjMpIHsKKyAgc3dp
dGNoIChvcCkgeworICAgIGNhc2Uga1BhcnNlOiB7CisgICAgICAvLyBpbml0aWFsaXplIHRoZSB0
ZW1wb3JhcnkgaW5zdGFuY2Ugb2YgdHlwZSBUIGJhc2VkIG9uIGN1cnJlbnQgdmFsdWUgaW4KKyAg
ICAgIC8vIGRlc3RpbmF0aW9uICh3aGljaCBpcyBnb2luZyB0byBiZSBmbGFnJ3MgZGVmYXVsdCB2
YWx1ZSkuCisgICAgICBUIHRlbXAoKnN0YXRpY19jYXN0PFQqPih2MikpOworICAgICAgaWYgKCFh
YnNsOjpQYXJzZUZsYWc8VD4oKnN0YXRpY19jYXN0PGNvbnN0IGFic2w6OnN0cmluZ192aWV3Kj4o
djEpLCAmdGVtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0
ZDo6c3RyaW5nKj4odjMpKSkgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgIH0KKyAg
ICAgICpzdGF0aWNfY2FzdDxUKj4odjIpID0gc3RkOjptb3ZlKHRlbXApOworICAgICAgcmV0dXJu
IHYyOworICAgIH0KKyAgICBjYXNlIGtVbnBhcnNlOgorICAgICAgKnN0YXRpY19jYXN0PHN0ZDo6
c3RyaW5nKj4odjIpID0KKyAgICAgICAgICBhYnNsOjpVbnBhcnNlRmxhZzxUPigqc3RhdGljX2Nh
c3Q8Y29uc3QgVCo+KHYxKSk7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBkZWZhdWx0Ogor
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KK30KKworLy8gRnVuY3Rpb25zIHRoYXQgaW52b2tl
IGZsYWctdHlwZS1zcGVjaWZpYyBvcGVyYXRpb25zLgoraW5saW5lIHZvaWQgRGVsZXRlKEZsYWdP
cEZuIG9wLCBjb25zdCB2b2lkKiBvYmopIHsKKyAgb3AoZmxhZ3NfaW50ZXJuYWw6OmtEZWxldGUs
IG9iaiwgbnVsbHB0cik7Cit9CisKK2lubGluZSB2b2lkKiBDbG9uZShGbGFnT3BGbiBvcCwgY29u
c3Qgdm9pZCogb2JqKSB7CisgIHJldHVybiBvcChmbGFnc19pbnRlcm5hbDo6a0Nsb25lLCBvYmos
IG51bGxwdHIpOworfQorCitpbmxpbmUgdm9pZCBDb3B5KEZsYWdPcEZuIG9wLCBjb25zdCB2b2lk
KiBzcmMsIHZvaWQqIGRzdCkgeworICBvcChmbGFnc19pbnRlcm5hbDo6a0NvcHksIHNyYywgZHN0
KTsKK30KKworaW5saW5lIHZvaWQgQ29weUNvbnN0cnVjdChGbGFnT3BGbiBvcCwgY29uc3Qgdm9p
ZCogc3JjLCB2b2lkKiBkc3QpIHsKKyAgb3AoZmxhZ3NfaW50ZXJuYWw6OmtDb3B5Q29uc3RydWN0
LCBzcmMsIGRzdCk7Cit9CisKK2lubGluZSBib29sIFBhcnNlKEZsYWdNYXJzaGFsbGluZ09wRm4g
b3AsIGFic2w6OnN0cmluZ192aWV3IHRleHQsIHZvaWQqIGRzdCwKKyAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKiBlcnJvcikgeworICByZXR1cm4gb3AoZmxhZ3NfaW50ZXJuYWw6OmtQYXJz
ZSwgJnRleHQsIGRzdCwgZXJyb3IpICE9IG51bGxwdHI7Cit9CisKK2lubGluZSBzdGQ6OnN0cmlu
ZyBVbnBhcnNlKEZsYWdNYXJzaGFsbGluZ09wRm4gb3AsIGNvbnN0IHZvaWQqIHZhbCkgeworICBz
dGQ6OnN0cmluZyByZXN1bHQ7CisgIG9wKGZsYWdzX2ludGVybmFsOjprVW5wYXJzZSwgdmFsLCAm
cmVzdWx0LCBudWxscHRyKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIHNpemVfdCBT
aXplb2YoRmxhZ09wRm4gb3ApIHsKKyAgLy8gVGhpcyBzZXF1ZW5jZSBvZiBjYXN0cyByZXZlcnNl
cyB0aGUgc2VxdWVuY2UgZnJvbSBiYXNlOjppbnRlcm5hbDo6RmxhZ09wcygpCisgIHJldHVybiBz
dGF0aWNfY2FzdDxzaXplX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KAorICAgICAgb3Ao
ZmxhZ3NfaW50ZXJuYWw6OmtTaXplb2YsIG51bGxwdHIsIG51bGxwdHIpKSk7Cit9CisKKy8vIFRo
ZSBmb2xsb3dpbmcgc3RydWN0IGNvbnRhaW5zIHRoZSBsb2NrcyBpbiBhIENvbW1hbmRMaW5lRmxh
ZyBzdHJ1Y3QuCisvLyBUaGV5IGFyZSBpbiBhIHNlcGFyYXRlIHN0cnVjdCB0aGF0IGlzIGxhemls
eSBhbGxvY2F0ZWQgdG8gYXZvaWQgcHJvYmxlbXMKKy8vIHdpdGggc3RhdGljIGluaXRpYWxpemF0
aW9uIGFuZCB0byBhdm9pZCBtdWx0aXBsZSBhbGxvY2F0aW9ucy4KK3N0cnVjdCBDb21tYW5kTGlu
ZUZsYWdMb2NrcyB7CisgIGFic2w6Ok11dGV4IHByaW1hcnlfbXU7ICAgLy8gcHJvdGVjdHMgc2V2
ZXJhbCBmaWVsZHMgaW4gQ29tbWFuZExpbmVGbGFnCisgIGFic2w6Ok11dGV4IGNhbGxiYWNrX211
OyAgLy8gdXNlZCB0byBzZXJpYWxpemUgY2FsbGJhY2tzCit9OworCisvLyBIb2xkcyBlaXRoZXIg
YSBwb2ludGVyIHRvIGhlbHAgdGV4dCBvciBhIGZ1bmN0aW9uIHdoaWNoIHByb2R1Y2VzIGl0LiAg
VGhpcyBpcworLy8gbmVlZGVkIGZvciBzdXBwb3J0aW5nIGJvdGggc3RhdGljIGluaXRpYWxpemF0
aW9uIG9mIEZsYWdzIHdoaWxlIHN1cHBvcnRpbmcKKy8vIHRoZSBsZWdhY3kgcmVnaXN0cmF0aW9u
IGZyYW1ld29yay4gIFdlIGNhbid0IHVzZSBhYnNsOjp2YXJpYW50PGNvbnN0IGNoYXIqLAorLy8g
Y29uc3QgY2hhciooKikoKT4gc2luY2UgYW55Ym9keSBwYXNzaW5nIDAgb3IgbnVsbHB0ciBpbiB0
byBhIENvbW1hbmRMaW5lRmxhZworLy8gd291bGQgZmluZCBhbiBhbWJpZ3VpdHkuCitjbGFzcyBI
ZWxwVGV4dCB7CisgcHVibGljOgorICBzdGF0aWMgY29uc3RleHByIEhlbHBUZXh0IEZyb21GdW5j
dGlvblBvaW50ZXIoY29uc3QgSGVscEdlbkZ1bmMgZm4pIHsKKyAgICByZXR1cm4gSGVscFRleHQo
Zm4sIG51bGxwdHIpOworICB9CisgIHN0YXRpYyBjb25zdGV4cHIgSGVscFRleHQgRnJvbVN0YXRp
Y0NTdHJpbmcoY29uc3QgY2hhciogbXNnKSB7CisgICAgcmV0dXJuIEhlbHBUZXh0KG51bGxwdHIs
IG1zZyk7CisgIH0KKworICBzdGQ6OnN0cmluZyBHZXRIZWxwVGV4dCgpIGNvbnN0OworCisgIEhl
bHBUZXh0KCkgPSBkZWxldGU7CisgIEhlbHBUZXh0KGNvbnN0IEhlbHBUZXh0JikgPSBkZWZhdWx0
OworICBIZWxwVGV4dChIZWxwVGV4dCYmKSA9IGRlZmF1bHQ7CisKKyBwcml2YXRlOgorICBleHBs
aWNpdCBjb25zdGV4cHIgSGVscFRleHQoY29uc3QgSGVscEdlbkZ1bmMgZm4sIGNvbnN0IGNoYXIq
IG1zZykKKyAgICAgIDogaGVscF9mdW5jdGlvbl8oZm4pLCBoZWxwX21lc3NhZ2VfKG1zZykge30K
KworICBIZWxwR2VuRnVuYyBoZWxwX2Z1bmN0aW9uXzsKKyAgY29uc3QgY2hhciogaGVscF9tZXNz
YWdlXzsKK307CisKKy8vIEhvbGRzIGFsbCBpbmZvcm1hdGlvbiBmb3IgYSBmbGFnLgorc3RydWN0
IENvbW1hbmRMaW5lRmxhZyB7CisgIGNvbnN0ZXhwciBDb21tYW5kTGluZUZsYWcoCisgICAgICBj
b25zdCBjaGFyKiBuYW1lX2FyZywgSGVscFRleHQgaGVscF90ZXh0LCBjb25zdCBjaGFyKiBmaWxl
bmFtZV9hcmcsCisgICAgICBjb25zdCBmbGFnc19pbnRlcm5hbDo6RmxhZ09wRm4gb3BfYXJnLAor
ICAgICAgY29uc3QgZmxhZ3NfaW50ZXJuYWw6OkZsYWdNYXJzaGFsbGluZ09wRm4gbWFyc2hhbGxp
bmdfb3BfYXJnLAorICAgICAgY29uc3QgZmxhZ3NfaW50ZXJuYWw6OkluaXRpYWxWYWxHZW5GdW5j
IGluaXRpYWxfdmFsdWVfZ2VuLAorICAgICAgY29uc3QgYm9vbCByZXRpcmVkX2FyZywgdm9pZCog
ZGVmX2FyZywgdm9pZCogY3VyX2FyZykKKyAgICAgIDogbmFtZShuYW1lX2FyZyksCisgICAgICAg
IGhlbHAoaGVscF90ZXh0KSwKKyAgICAgICAgZmlsZW5hbWUoZmlsZW5hbWVfYXJnKSwKKyAgICAg
ICAgb3Aob3BfYXJnKSwKKyAgICAgICAgbWFyc2hhbGxpbmdfb3AobWFyc2hhbGxpbmdfb3BfYXJn
KSwKKyAgICAgICAgbWFrZV9pbml0X3ZhbHVlKGluaXRpYWxfdmFsdWVfZ2VuKSwKKyAgICAgICAg
cmV0aXJlZChyZXRpcmVkX2FyZyksCisgICAgICAgIGluaXRlZChmYWxzZSksCisgICAgICAgIG1v
ZGlmaWVkKGZhbHNlKSwKKyAgICAgICAgb25fY29tbWFuZF9saW5lKGZhbHNlKSwKKyAgICAgICAg
dmFsaWRhdG9yKG51bGxwdHIpLAorICAgICAgICBjYWxsYmFjayhudWxscHRyKSwKKyAgICAgICAg
ZGVmKGRlZl9hcmcpLAorICAgICAgICBjdXIoY3VyX2FyZyksCisgICAgICAgIGNvdW50ZXIoMCks
CisgICAgICAgIGF0b21pYyhrQXRvbWljSW5pdCksCisgICAgICAgIGxvY2tzKG51bGxwdHIpIHt9
CisKKyAgLy8gUmV2ZXJ0IHRoZSBpbml0IHJvdXRpbmUuCisgIHZvaWQgRGVzdHJveSgpIGNvbnN0
OworCisgIC8vIE5vdCBjb3B5YWJsZS9hc3NpZ25hYmxlLgorICBDb21tYW5kTGluZUZsYWcoY29u
c3QgQ29tbWFuZExpbmVGbGFnJikgPSBkZWxldGU7CisgIENvbW1hbmRMaW5lRmxhZyYgb3BlcmF0
b3I9KGNvbnN0IENvbW1hbmRMaW5lRmxhZyYpID0gZGVsZXRlOworCisgIGFic2w6OnN0cmluZ192
aWV3IE5hbWUoKSBjb25zdCB7IHJldHVybiBuYW1lOyB9CisgIHN0ZDo6c3RyaW5nIEhlbHAoKSBj
b25zdCB7IHJldHVybiBoZWxwLkdldEhlbHBUZXh0KCk7IH0KKyAgYm9vbCBJc1JldGlyZWQoKSBj
b25zdCB7IHJldHVybiB0aGlzLT5yZXRpcmVkOyB9CisgIGJvb2wgSXNNb2RpZmllZCgpIGNvbnN0
OworICB2b2lkIFNldE1vZGlmaWVkKGJvb2wgaXNfbW9kaWZpZWQpOworICBib29sIElzU3BlY2lm
aWVkT25Db21tYW5kTGluZSgpIGNvbnN0OworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgaXMg
YSBoYW5kbGUgdG8gYW4gQWJzZWlsIEZsYWcuCisgIGJvb2wgSXNBYnNlaWxGbGFnKCkgY29uc3Qg
eworICAgIC8vIFNldCB0byBudWxsIGZvciBWMSBmbGFncworICAgIHJldHVybiB0aGlzLT5tYWtl
X2luaXRfdmFsdWUgIT0gbnVsbHB0cjsKKyAgfQorCisgIGFic2w6OnN0cmluZ192aWV3IFR5cGVu
YW1lKCkgY29uc3Q7CisgIHN0ZDo6c3RyaW5nIEZpbGVuYW1lKCkgY29uc3Q7CisgIHN0ZDo6c3Ry
aW5nIERlZmF1bHRWYWx1ZSgpIGNvbnN0OworICBzdGQ6OnN0cmluZyBDdXJyZW50VmFsdWUoKSBj
b25zdDsKKworICBib29sIEhhc1ZhbGlkYXRvckZuKCkgY29uc3Q7CisgIGJvb2wgU2V0VmFsaWRh
dG9yRm4oRmxhZ1ZhbGlkYXRvciBmbik7CisgIGJvb2wgSW52b2tlVmFsaWRhdG9yKGNvbnN0IHZv
aWQqIHZhbHVlKSBjb25zdDsKKworICAvLyBSZXR1cm4gdHJ1ZSBpZmYgZmxhZyBoYXMgdHlwZSBU
LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgaW5saW5lIGJvb2wgSXNPZlR5cGUoKSBjb25z
dCB7CisgICAgcmV0dXJuIHRoaXMtPm9wID09ICZmbGFnc19pbnRlcm5hbDo6RmxhZ09wczxUPjsK
KyAgfQorCisgIC8vIEF0dGVtcHRzIHRvIHJldHJpZXZlIHRoZSBmbGFnIHZhbHVlLiBSZXR1cm5z
IHZhbHVlIG9uIHN1Y2Nlc3MsCisgIC8vIGFic2w6Om51bGxvcHQgb3RoZXJ3aXNlLgorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKyAgYWJzbDo6b3B0aW9uYWw8VD4gR2V0KCkgY29uc3QgeworICAg
IGlmIChJc1JldGlyZWQoKSB8fCBmbGFnc19pbnRlcm5hbDo6RmxhZ09wczxUPiAhPSB0aGlzLT5v
cCkKKyAgICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworCisgICAgVCByZXM7CisgICAgUmVhZCgm
cmVzLCBmbGFnc19pbnRlcm5hbDo6RmxhZ09wczxUPik7CisKKyAgICByZXR1cm4gcmVzOworICB9
CisKKyAgdm9pZCBTZXRDYWxsYmFjayhjb25zdCBmbGFnc19pbnRlcm5hbDo6RmxhZ0NhbGxiYWNr
IG11dGF0aW9uX2NhbGxiYWNrKTsKKyAgdm9pZCBJbnZva2VDYWxsYmFjaygpOworCisgIC8vIFNl
dHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGJhc2VkIG9uIHNwZWNpZmllZCBzdGQ6OnN0cmluZyBg
dmFsdWVgLiBJZiB0aGUgZmxhZworICAvLyB3YXMgc3VjY2Vzc2Z1bGx5IHNldCB0byBuZXcgdmFs
dWUsIGl0IHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlLCBzZXRzIGBlcnJvcmAKKyAgLy8gdG8gaW5k
aWNhdGUgdGhlIGVycm9yLCBsZWF2ZXMgdGhlIGZsYWcgdW5jaGFuZ2VkLCBhbmQgcmV0dXJucyBm
YWxzZS4gVGhlcmUKKyAgLy8gYXJlIHRocmVlIHdheXMgdG8gc2V0IHRoZSBmbGFnJ3MgdmFsdWU6
CisgIC8vICAqIFVwZGF0ZSB0aGUgY3VycmVudCBmbGFnIHZhbHVlCisgIC8vICAqIFVwZGF0ZSB0
aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUKKyAgLy8gICogVXBkYXRlIHRoZSBjdXJyZW50IGZsYWcg
dmFsdWUgaWYgaXQgd2FzIG5ldmVyIHNldCBiZWZvcmUKKyAgLy8gVGhlIG1vZGUgaXMgc2VsZWN0
ZWQgYmFzZWQgb24gYHNldF9tb2RlYCBwYXJhbWV0ZXIuCisgIGJvb2wgU2V0RnJvbVN0cmluZyhh
YnNsOjpzdHJpbmdfdmlldyB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzX2ludGVy
bmFsOjpGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUsCisgICAgICAgICAgICAgICAgICAgICBmbGFn
c19pbnRlcm5hbDo6VmFsdWVTb3VyY2Ugc291cmNlLCBzdGQ6OnN0cmluZyogZXJyb3IpOworCisg
IHZvaWQgU3RvcmVBdG9taWMoc2l6ZV90IHNpemUpOworCisgIHZvaWQgQ2hlY2tEZWZhdWx0VmFs
dWVQYXJzaW5nUm91bmR0cmlwKCkgY29uc3Q7CisgIC8vIEludm9rZSB0aGUgZmxhZyB2YWxpZGF0
b3JzIGZvciBvbGQgZmxhZ3MuCisgIC8vIFRPRE8ocm9nZWVmZik6IGltcGxlbWVudCBwcm9wZXIg
dmFsaWRhdG9ycyBmb3IgQWJzZWlsIEZsYWdzCisgIGJvb2wgVmFsaWRhdGVEZWZhdWx0VmFsdWUo
KSBjb25zdDsKKyAgYm9vbCBWYWxpZGF0ZUlucHV0VmFsdWUoYWJzbDo6c3RyaW5nX3ZpZXcgdmFs
dWUpIGNvbnN0OworCisgIC8vIENvbnN0YW50IGNvbmZpZ3VyYXRpb24gZm9yIGEgcGFydGljdWxh
ciBmbGFnLgorIHByaXZhdGU6CisgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWU7CisgIGNvbnN0IEhl
bHBUZXh0IGhlbHA7CisgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVuYW1lOworCisgcHJvdGVjdGVk
OgorICBjb25zdCBGbGFnT3BGbiBvcDsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHlwZS1z
cGVjaWZpYyBoYW5kbGVyCisgIGNvbnN0IEZsYWdNYXJzaGFsbGluZ09wRm4gbWFyc2hhbGxpbmdf
b3A7ICAvLyBNYXJzaGFsbGluZyBvcHMgaGFuZGxlcgorICBjb25zdCBJbml0aWFsVmFsR2VuRnVu
YyBtYWtlX2luaXRfdmFsdWU7ICAgLy8gTWFrZXMgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZsYWcK
KyAgY29uc3QgYm9vbCByZXRpcmVkOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElzIHRoZSBm
bGFnIHJldGlyZWQ/CisgIHN0ZDo6YXRvbWljPGJvb2w+IGluaXRlZDsgIC8vIGZpZWxkcyBoYXZl
IGJlZW4gbGF6aWx5IGluaXRpYWxpemVkCisKKyAgLy8gTXV0YWJsZSBzdGF0ZSAoZ3VhcmRlZCBi
eSBsb2Nrcy0+cHJpbWFyeV9tdSkuCisgIGJvb2wgbW9kaWZpZWQ7ICAgICAgICAgICAgLy8gSGFz
IGZsYWcgdmFsdWUgYmVlbiBtb2RpZmllZD8KKyAgYm9vbCBvbl9jb21tYW5kX2xpbmU7ICAgICAv
LyBTcGVjaWZpZWQgb24gY29tbWFuZCBsaW5lLgorICBGbGFnVmFsaWRhdG9yIHZhbGlkYXRvcjsg
IC8vIFZhbGlkYXRvciBmdW5jdGlvbiwgb3IgbnVsbHB0cgorICBGbGFnQ2FsbGJhY2sgY2FsbGJh
Y2s7ICAgIC8vIE11dGF0aW9uIGNhbGxiYWNrLCBvciBudWxscHRyCisgIHZvaWQqIGRlZjsgICAg
ICAgICAgICAgICAgLy8gTGF6aWx5IGluaXRpYWxpemVkIHBvaW50ZXIgdG8gZGVmYXVsdCB2YWx1
ZQorICB2b2lkKiBjdXI7ICAgICAgICAgICAgICAgIC8vIExhemlseSBpbml0aWFsaXplZCBwb2lu
dGVyIHRvIGN1cnJlbnQgdmFsdWUKKyAgaW50NjRfdCBjb3VudGVyOyAgICAgICAgICAgIC8vIE11
dGF0aW9uIGNvdW50ZXIKKworICAvLyBGb3Igc29tZSB0eXBlcywgYSBjb3B5IG9mIHRoZSBjdXJy
ZW50IHZhbHVlIGlzIGtlcHQgaW4gYW4gYXRvbWljYWxseQorICAvLyBhY2Nlc3NpYmxlIGZpZWxk
LgorICBzdGF0aWMgY29uc3QgaW50NjRfdCBrQXRvbWljSW5pdCA9IDB4YWJhYmFiYWJhYmFiYWJh
YmxsOworICBzdGQ6OmF0b21pYzxpbnQ2NF90PiBhdG9taWM7CisKKyAgLy8gTGF6aWx5IGluaXRp
YWxpemVkIG11dGV4ZXMgZm9yIHRoaXMgZmxhZyB2YWx1ZS4gIFdlIGNhbm5vdCBpbmxpbmUgYQor
ICAvLyBTcGluTG9jayBvciBNdXRleCBoZXJlIGJlY2F1c2UgdGhvc2UgaGF2ZSBub24tY29uc3Rl
eHByIGNvbnN0cnVjdG9ycyBhbmQKKyAgLy8gc28gd291bGQgcHJldmVudCBjb25zdGFudCBpbml0
aWFsaXphdGlvbiBvZiB0aGlzIHR5cGUuCisgIC8vIFRPRE8ocm9nZWVmZik6IGZpeCBpdCBvbmNl
IE11dGV4IGhhcyBjb25zdGV4cHIgY29uc3RydWN0b3IKKyAgc3RydWN0IENvbW1hbmRMaW5lRmxh
Z0xvY2tzKiBsb2NrczsgIC8vIGxvY2tzLCBsYXppbGl5IGFsbG9jYXRlZC4KKworICAvLyBFbnN1
cmUgdGhhdCB0aGUgbGF6aWx5IGluaXRpYWxpemVkIGZpZWxkcyBvZiAqZmxhZyBoYXZlIGJlZW4g
aW5pdGlhbGl6ZWQsCisgIC8vIGFuZCByZXR1cm4gdGhlIGxvY2sgd2hpY2ggc2hvdWxkIGJlIGxv
Y2tlZCB3aGVuIGZsYWcncyBzdGF0ZSBpcyBtdXRhdGVkLgorICBhYnNsOjpNdXRleCogSW5pdEZs
YWdJZk5lY2Vzc2FyeSgpIGNvbnN0OworCisgIC8vIGNvcHkgY29uc3RydWN0IG5ldyB2YWx1ZSBv
ZiBmbGFnJ3MgdHlwZSBpbiBhIG1lbW9yeSByZWZlcmVuY2VkIGJ5IGRzdAorICAvLyBiYXNlZCBv
biBjdXJyZW50IGZsYWcncyB2YWx1ZQorICB2b2lkIFJlYWQodm9pZCogZHN0LCBjb25zdCBmbGFn
c19pbnRlcm5hbDo6RmxhZ09wRm4gZHN0X29wKSBjb25zdDsKKyAgLy8gdXBkYXRlcyBmbGFnJ3Mg
dmFsdWUgdG8gKnNyYyAobG9ja2VkKQorICB2b2lkIFdyaXRlKGNvbnN0IHZvaWQqIHNyYywgY29u
c3QgZmxhZ3NfaW50ZXJuYWw6OkZsYWdPcEZuIHNyY19vcCk7CisKKyAgZnJpZW5kIGNsYXNzIEZs
YWdSZWdpc3RyeTsKKyAgZnJpZW5kIGNsYXNzIEZsYWdQdHJNYXA7CisgIGZyaWVuZCBjbGFzcyBG
bGFnU2F2ZXJJbXBsOworICBmcmllbmQgdm9pZCBGaWxsQ29tbWFuZExpbmVGbGFnSW5mbyhDb21t
YW5kTGluZUZsYWcqIGZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENvbW1hbmRMaW5lRmxhZ0luZm8qIHJlc3VsdCk7CisgIGZyaWVuZCBib29sIFRyeVBhcnNlTG9j
a2VkKENvbW1hbmRMaW5lRmxhZyogZmxhZywgdm9pZCogZHN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldyB2YWx1ZSwgc3RkOjpzdHJpbmcqIGVycik7Cisg
IGZyaWVuZCBhYnNsOjpNdXRleCogSW5pdEZsYWcoQ29tbWFuZExpbmVGbGFnKiBmbGFnKTsKK307
CisKKy8vIFVwZGF0ZSBhbnkgY29weSBvZiB0aGUgZmxhZyB2YWx1ZSB0aGF0IGlzIHN0b3JlZCBp
biBhbiBhdG9taWMgd29yZC4KKy8vIEluIGFkZGl0aW9uIGlmIGZsYWcgaGFzIGEgbXV0YXRpb24g
Y2FsbGJhY2sgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGl0LiBXaGlsZQorLy8gY2FsbGJhY2sgaXMg
YmVpbmcgaW52b2tlZCB0aGUgcHJpbWFyeSBmbGFnJ3MgbXV0ZXggaXMgdW5sb2NrZWQgYW5kIGl0
IGlzCisvLyByZS1sb2NrZWQgYmFjayBhZnRlciBjYWxsIHRvIGNhbGxiYWNrIGlzIGNvbXBsZXRl
ZC4gQ2FsbGJhY2sgaW52b2NhdGlvbiBpcworLy8gZ3VhcmRlZCBieSBmbGFnJ3Mgc2Vjb25kYXJ5
IG11dGV4IGluc3RlYWQgd2hpY2ggcHJldmVudHMgY29uY3VycmVudCBjYWxsYmFjaworLy8gaW52
b2NhdGlvbi4gTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlIGZvciBvdGhlciB0aHJlYWQgdG8gZ3Jh
YiB0aGUgcHJpbWFyeQorLy8gbG9jayBhbmQgdXBkYXRlIGZsYWcncyB2YWx1ZSBhdCBhbnkgdGlt
ZSBkdXJpbmcgdGhlIGNhbGxiYWNrIGludm9jYXRpb24uCisvLyBUaGlzIGlzIGJ5IGRlc2lnbi4g
Q2FsbGJhY2sgY2FuIGdldCBhIHZhbHVlIG9mIHRoZSBmbGFnIGlmIG5lY2Vzc2FyeSwgYnV0IGl0
CisvLyBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgdmFsdWUgaW5pdGlhdGVkIHRoZSBjYWxs
YmFjayBhbmQgaXQgYWxzbyBjYW4gYmUKKy8vIGRpZmZlcmVudCBieSB0aGUgdGltZSB0aGUgY2Fs
bGJhY2sgaW52b2NhdGlvbiBpcyBjb21wbGV0ZWQuCisvLyBSZXF1aXJlcyB0aGF0ICpwcmltYXJ5
X2xvY2sgYmUgaGVsZCBpbiBleGNsdXNpdmUgbW9kZTsgaXQgbWF5IGJlIHJlbGVhc2VkCisvLyBh
bmQgcmVhY3F1aXJlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uCit2b2lkIFVwZGF0ZUNvcHkoQ29t
bWFuZExpbmVGbGFnKiBmbGFnKTsKKy8vIFJldHVybiB0cnVlIGlmZiBmbGFnIHZhbHVlIHdhcyBj
aGFuZ2VkIHZpYSBkaXJlY3QtYWNjZXNzLgorYm9vbCBDaGFuZ2VkRGlyZWN0bHkoQ29tbWFuZExp
bmVGbGFnKiBmbGFnLCBjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKTsKKworLy8gVGhpcyBt
YWNybyBpcyB0aGUgInNvdXJjZSBvZiB0cnV0aCIgZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBm
bGFnIHR5cGVzIHdlCisvLyBleHBlY3QgdG8gcGVyZm9ybSBsb2NrIGZyZWUgb3BlcmF0aW9ucyBv
bi4gU3BlY2lmaWNhbGx5IGl0IGdlbmVyYXRlcyBjb2RlLAorLy8gYSBvbmUgYXJndW1lbnQgbWFj
cm8gb3BlcmF0aW5nIG9uIGEgdHlwZSwgc3VwcGxpZWQgYXMgYSBtYWNybyBhcmd1bWVudCwgZm9y
CisvLyBlYWNoIHR5cGUgaW4gdGhlIGxpc3QuCisjZGVmaW5lIEFCU0xfRkxBR1NfSU5URVJOQUxf
Rk9SX0VBQ0hfTE9DS19GUkVFKEEpIFwKKyAgQShib29sKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICBBKHNob3J0KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgIEEodW5zaWduZWQgc2hvcnQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgQShpbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICBBKHVuc2lnbmVkIGludCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgIEEobG9uZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgQSh1bnNpZ25lZCBsb25nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBB
KGxvbmcgbG9uZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEEodW5z
aWduZWQgbG9uZyBsb25nKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQShkb3VibGUp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBBKGZsb2F0KQorCit9
ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNl
bmRpZiAgLy8gQUJTTF9GTEFHU19JTlRFUk5BTF9DT01NQU5ETElORUZMQUdfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZ190ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYwZDU3YWRiZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnX3Rlc3QuY2MKQEAgLTAsMCArMSwxOTYg
QEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNs
dWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5oIgorCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ZsYWcuaCIKKyNpbmNsdWRlICJh
YnNsL2ZsYWdzL2ludGVybmFsL3JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYWJzbC9z
dHJpbmdzL3N0cl9jYXQuaCIKKworQUJTTF9GTEFHKGludCwgaW50X2ZsYWcsIDIwMSwgImludF9m
bGFnIGhlbHAiKTsKK0FCU0xfRkxBRyhzdGQ6OnN0cmluZywgc3RyaW5nX2ZsYWcsICJkZmx0IiwK
KyAgICAgICAgICBhYnNsOjpTdHJDYXQoInN0cmluZ19mbGFnIiwgIiBoZWxwIikpOworQUJTTF9S
RVRJUkVEX0ZMQUcoYm9vbCwgYm9vbF9yZXRpcmVkX2ZsYWcsIGZhbHNlLCAiYm9vbF9yZXRpcmVk
X2ZsYWcgaGVscCIpOworCituYW1lc3BhY2UgeworCituYW1lc3BhY2UgZmxhZ3MgPSBhYnNsOjpm
bGFnc19pbnRlcm5hbDsKKworY2xhc3MgQ29tbWFuZExpbmVGbGFnVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7IGZsYWdf
c2F2ZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8ZmxhZ3M6OkZsYWdTYXZlcj4oKTsgfQorICB2b2lk
IFRlYXJEb3duKCkgb3ZlcnJpZGUgeyBmbGFnX3NhdmVyXy5yZXNldCgpOyB9CisKKyBwcml2YXRl
OgorICBzdGQ6OnVuaXF1ZV9wdHI8ZmxhZ3M6OkZsYWdTYXZlcj4gZmxhZ19zYXZlcl87Cit9Owor
CitURVNUX0YoQ29tbWFuZExpbmVGbGFnVGVzdCwgVGVzdEF0dHJpYnV0ZXNBY2Nlc3NNZXRob2Rz
KSB7CisgIGF1dG8qIGZsYWdfMDEgPSBmbGFnczo6RmluZENvbW1hbmRMaW5lRmxhZygiaW50X2Zs
YWciKTsKKworICBBU1NFUlRfVFJVRShmbGFnXzAxKTsKKyAgRVhQRUNUX0VRKGZsYWdfMDEtPk5h
bWUoKSwgImludF9mbGFnIik7CisgIEVYUEVDVF9FUShmbGFnXzAxLT5IZWxwKCksICJpbnRfZmxh
ZyBoZWxwIik7CisgIEVYUEVDVF9FUShmbGFnXzAxLT5UeXBlbmFtZSgpLCAiIik7CisgIEVYUEVD
VF9UUlVFKCFmbGFnXzAxLT5Jc1JldGlyZWQoKSk7CisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPklz
T2ZUeXBlPGludD4oKSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OkVuZHNXaXRoKAorICAgICAgZmxh
Z18wMS0+RmlsZW5hbWUoKSwKKyAgICAgICJhYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5l
ZmxhZ190ZXN0LmNjIikpOworCisgIGF1dG8qIGZsYWdfMDIgPSBmbGFnczo6RmluZENvbW1hbmRM
aW5lRmxhZygic3RyaW5nX2ZsYWciKTsKKworICBBU1NFUlRfVFJVRShmbGFnXzAyKTsKKyAgRVhQ
RUNUX0VRKGZsYWdfMDItPk5hbWUoKSwgInN0cmluZ19mbGFnIik7CisgIEVYUEVDVF9FUShmbGFn
XzAyLT5IZWxwKCksICJzdHJpbmdfZmxhZyBoZWxwIik7CisgIEVYUEVDVF9FUShmbGFnXzAyLT5U
eXBlbmFtZSgpLCAiIik7CisgIEVYUEVDVF9UUlVFKCFmbGFnXzAyLT5Jc1JldGlyZWQoKSk7Cisg
IEVYUEVDVF9UUlVFKGZsYWdfMDItPklzT2ZUeXBlPHN0ZDo6c3RyaW5nPigpKTsKKyAgRVhQRUNU
X1RSVUUoYWJzbDo6RW5kc1dpdGgoCisgICAgICBmbGFnXzAyLT5GaWxlbmFtZSgpLAorICAgICAg
ImFic2wvZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnX3Rlc3QuY2MiKSk7CisKKyAgYXV0
byogZmxhZ18wMyA9IGZsYWdzOjpGaW5kUmV0aXJlZEZsYWcoImJvb2xfcmV0aXJlZF9mbGFnIik7
CisKKyAgQVNTRVJUX1RSVUUoZmxhZ18wMyk7CisgIEVYUEVDVF9FUShmbGFnXzAzLT5OYW1lKCks
ICJib29sX3JldGlyZWRfZmxhZyIpOworICBFWFBFQ1RfRVEoZmxhZ18wMy0+SGVscCgpLCAiIik7
CisgIEVYUEVDVF9FUShmbGFnXzAzLT5UeXBlbmFtZSgpLCAiIik7CisgIEVYUEVDVF9UUlVFKGZs
YWdfMDMtPklzUmV0aXJlZCgpKTsKKyAgRVhQRUNUX1RSVUUoZmxhZ18wMy0+SXNPZlR5cGU8Ym9v
bD4oKSk7CisgIEVYUEVDVF9FUShmbGFnXzAzLT5GaWxlbmFtZSgpLCAiUkVUSVJFRCIpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoQ29tbWFuZExpbmVGbGFnVGVzdCwgVGVzdFZhbHVl
QWNjZXNzTWV0aG9kcykgeworICBhYnNsOjpTZXRGbGFnKCZGTEFHU19pbnRfZmxhZywgMzAxKTsK
KyAgYXV0byogZmxhZ18wMSA9IGZsYWdzOjpGaW5kQ29tbWFuZExpbmVGbGFnKCJpbnRfZmxhZyIp
OworCisgIEFTU0VSVF9UUlVFKGZsYWdfMDEpOworICBFWFBFQ1RfRVEoZmxhZ18wMS0+Q3VycmVu
dFZhbHVlKCksICIzMDEiKTsKKyAgRVhQRUNUX0VRKGZsYWdfMDEtPkRlZmF1bHRWYWx1ZSgpLCAi
MjAxIik7CisKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1Nfc3RyaW5nX2ZsYWcsICJuZXdfc3RyX3Zh
bHVlIik7CisgIGF1dG8qIGZsYWdfMDIgPSBmbGFnczo6RmluZENvbW1hbmRMaW5lRmxhZygic3Ry
aW5nX2ZsYWciKTsKKworICBBU1NFUlRfVFJVRShmbGFnXzAyKTsKKyAgRVhQRUNUX0VRKGZsYWdf
MDItPkN1cnJlbnRWYWx1ZSgpLCAibmV3X3N0cl92YWx1ZSIpOworICBFWFBFQ1RfRVEoZmxhZ18w
Mi0+RGVmYXVsdFZhbHVlKCksICJkZmx0Iik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1Rf
RihDb21tYW5kTGluZUZsYWdUZXN0LCBUZXN0U2V0RnJvbVN0cmluZ0N1cnJlbnRWYWx1ZSkgewor
ICBzdGQ6OnN0cmluZyBlcnI7CisKKyAgYXV0byogZmxhZ18wMSA9IGZsYWdzOjpGaW5kQ29tbWFu
ZExpbmVGbGFnKCJpbnRfZmxhZyIpOworICBFWFBFQ1RfRkFMU0UoZmxhZ18wMS0+SXNTcGVjaWZp
ZWRPbkNvbW1hbmRMaW5lKCkpOworCisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPlNldEZyb21TdHJp
bmcoIjExIiwgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFnczo6a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikpOworICBFWFBF
Q1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDExKTsKKyAgRVhQRUNUX0ZBTFNF
KGZsYWdfMDEtPklzU3BlY2lmaWVkT25Db21tYW5kTGluZSgpKTsKKworICBFWFBFQ1RfVFJVRShm
bGFnXzAxLT5TZXRGcm9tU3RyaW5nKCItMTIzIiwgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6a1Byb2dyYW1tYXRpY0No
YW5nZSwgJmVycikpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyks
IC0xMjMpOworICBFWFBFQ1RfRkFMU0UoZmxhZ18wMS0+SXNTcGVjaWZpZWRPbkNvbW1hbmRMaW5l
KCkpOworCisgIEVYUEVDVF9UUlVFKCFmbGFnXzAxLT5TZXRGcm9tU3RyaW5nKCJ4eXoiLCBmbGFn
czo6U0VUX0ZMQUdTX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFnczo6a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikpOworICBFWFBFQ1RfRVEoYWJzbDo6
R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIC0xMjMpOworICBFWFBFQ1RfRVEoZXJyLCAiSWxsZWdh
bCB2YWx1ZSAneHl6JyBzcGVjaWZpZWQgZm9yIGZsYWcgJ2ludF9mbGFnJyIpOworICBFWFBFQ1Rf
RkFMU0UoZmxhZ18wMS0+SXNTcGVjaWZpZWRPbkNvbW1hbmRMaW5lKCkpOworCisgIEVYUEVDVF9U
UlVFKCFmbGFnXzAxLT5TZXRGcm9tU3RyaW5nKCJBMSIsIGZsYWdzOjpTRVRfRkxBR1NfVkFMVUUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprUHJvZ3JhbW1h
dGljQ2hhbmdlLCAmZXJyKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2ludF9m
bGFnKSwgLTEyMyk7CisgIEVYUEVDVF9FUShlcnIsICJJbGxlZ2FsIHZhbHVlICdBMScgc3BlY2lm
aWVkIGZvciBmbGFnICdpbnRfZmxhZyciKTsKKyAgRVhQRUNUX0ZBTFNFKGZsYWdfMDEtPklzU3Bl
Y2lmaWVkT25Db21tYW5kTGluZSgpKTsKKworICBFWFBFQ1RfVFJVRShmbGFnXzAxLT5TZXRGcm9t
U3RyaW5nKCIweDEwIiwgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFnczo6a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikpOwor
ICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDE2KTsKKyAgRVhQRUNU
X0ZBTFNFKGZsYWdfMDEtPklzU3BlY2lmaWVkT25Db21tYW5kTGluZSgpKTsKKworICBFWFBFQ1Rf
VFJVRShmbGFnXzAxLT5TZXRGcm9tU3RyaW5nKCIwMTEiLCBmbGFnczo6U0VUX0ZMQUdTX1ZBTFVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprQ29tbWFuZExp
bmUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfaW50X2ZsYWcpLCAx
MSk7CisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPklzU3BlY2lmaWVkT25Db21tYW5kTGluZSgpKTsK
KworICBFWFBFQ1RfVFJVRSghZmxhZ18wMS0+U2V0RnJvbVN0cmluZygiIiwgZmxhZ3M6OlNFVF9G
TEFHU19WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6
OmtQcm9ncmFtbWF0aWNDaGFuZ2UsICZlcnIpKTsKKyAgRVhQRUNUX0VRKGVyciwgIklsbGVnYWwg
dmFsdWUgJycgc3BlY2lmaWVkIGZvciBmbGFnICdpbnRfZmxhZyciKTsKKworICBhdXRvKiBmbGFn
XzAyID0gZmxhZ3M6OkZpbmRDb21tYW5kTGluZUZsYWcoInN0cmluZ19mbGFnIik7CisgIEVYUEVD
VF9UUlVFKGZsYWdfMDItPlNldEZyb21TdHJpbmcoInh5eiIsIGZsYWdzOjpTRVRfRkxBR1NfVkFM
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OmtQcm9ncmFt
bWF0aWNDaGFuZ2UsICZlcnIpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1Nfc3Ry
aW5nX2ZsYWcpLCAieHl6Iik7CisKKyAgRVhQRUNUX1RSVUUoZmxhZ18wMi0+U2V0RnJvbVN0cmlu
ZygiIiwgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGFnczo6a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikpOworICBFWFBFQ1Rf
RVEoYWJzbDo6R2V0RmxhZyhGTEFHU19zdHJpbmdfZmxhZyksICIiKTsKK30KKworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworVEVTVF9GKENvbW1hbmRMaW5lRmxhZ1Rlc3QsIFRlc3RTZXRGcm9tU3RyaW5nRGVm
YXVsdFZhbHVlKSB7CisgIHN0ZDo6c3RyaW5nIGVycjsKKworICBhdXRvKiBmbGFnXzAxID0gZmxh
Z3M6OkZpbmRDb21tYW5kTGluZUZsYWcoImludF9mbGFnIik7CisKKyAgRVhQRUNUX1RSVUUoZmxh
Z18wMS0+U2V0RnJvbVN0cmluZygiMTExIiwgZmxhZ3M6OlNFVF9GTEFHU19ERUZBVUxULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprUHJvZ3JhbW1hdGljQ2hh
bmdlLCAmZXJyKSk7CisgIEVYUEVDVF9FUShmbGFnXzAxLT5EZWZhdWx0VmFsdWUoKSwgIjExMSIp
OworCisgIGF1dG8qIGZsYWdfMDIgPSBmbGFnczo6RmluZENvbW1hbmRMaW5lRmxhZygic3RyaW5n
X2ZsYWciKTsKKworICBFWFBFQ1RfVFJVRShmbGFnXzAyLT5TZXRGcm9tU3RyaW5nKCJhYmMiLCBm
bGFnczo6U0VUX0ZMQUdTX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3M6OmtQcm9ncmFtbWF0aWNDaGFuZ2UsICZlcnIpKTsKKyAgRVhQRUNUX0VRKGZs
YWdfMDItPkRlZmF1bHRWYWx1ZSgpLCAiYWJjIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
U1RfRihDb21tYW5kTGluZUZsYWdUZXN0LCBUZXN0U2V0RnJvbVN0cmluZ0lmRGVmYXVsdCkgewor
ICBzdGQ6OnN0cmluZyBlcnI7CisKKyAgYXV0byogZmxhZ18wMSA9IGZsYWdzOjpGaW5kQ29tbWFu
ZExpbmVGbGFnKCJpbnRfZmxhZyIpOworCisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPlNldEZyb21T
dHJpbmcoIjIyIiwgZmxhZ3M6OlNFVF9GTEFHX0lGX0RFRkFVTFQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OmtQcm9ncmFtbWF0aWNDaGFuZ2UsICZlcnIpKQor
ICAgICAgPDwgZXJyOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyks
IDIyKTsKKworICBFWFBFQ1RfVFJVRShmbGFnXzAxLT5TZXRGcm9tU3RyaW5nKCIzMyIsIGZsYWdz
OjpTRVRfRkxBR19JRl9ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdzOjprUHJvZ3JhbW1hdGljQ2hhbmdlLCAmZXJyKSk7CisgIEVYUEVDVF9FUShhYnNs
OjpHZXRGbGFnKEZMQUdTX2ludF9mbGFnKSwgMjIpOworICAvLyBFWFBFQ1RfRVEoZXJyLCAiRVJS
T1I6IGludF9mbGFnIGlzIGFscmVhZHkgc2V0IHRvIDIyIik7CisKKyAgLy8gUmVzZXQgYmFjayB0
byBkZWZhdWx0IHZhbHVlCisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPlNldEZyb21TdHJpbmcoIjIw
MSIsIGZsYWdzOjpTRVRfRkxBR1NfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3M6OmtQcm9ncmFtbWF0aWNDaGFuZ2UsICZlcnIpKTsKKworICBFWFBFQ1Rf
VFJVRShmbGFnXzAxLT5TZXRGcm9tU3RyaW5nKCIzMyIsIGZsYWdzOjpTRVRfRkxBR19JRl9ERUZB
VUxULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprUHJvZ3Jh
bW1hdGljQ2hhbmdlLCAmZXJyKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2lu
dF9mbGFnKSwgMjAxKTsKKyAgLy8gRVhQRUNUX0VRKGVyciwgIkVSUk9SOiBpbnRfZmxhZyBpcyBh
bHJlYWR5IHNldCB0byAyMDEiKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy9pbnRlcm5hbC9mbGFnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9mbGFnLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJjNTBkZTU0ODZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvZmxhZy5oCkBAIC0wLDAgKzEsMTIx
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5k
ZWYgQUJTTF9GTEFHU19JTlRFUk5BTF9GTEFHX0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfSU5URVJO
QUxfRkxBR19IXworCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGluZWZs
YWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3JlZ2lzdHJ5LmgiCisKK25hbWVz
cGFjZSBhYnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIFRoaXMgaXMgInVu
c3BlY2lmaWVkIiBpbXBsZW1lbnRhdGlvbiBvZiBhYnNsOjpGbGFnPFQ+IHR5cGUuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZsYWcgOiBwdWJsaWMgZmxhZ3NfaW50ZXJuYWw6OkNvbW1h
bmRMaW5lRmxhZyB7CisgcHVibGljOgorICBjb25zdGV4cHIgRmxhZyhjb25zdCBjaGFyKiBuYW1l
LCBjb25zdCBmbGFnc19pbnRlcm5hbDo6SGVscEdlbkZ1bmMgaGVscF9nZW4sCisgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICBjb25zdCBmbGFn
c19pbnRlcm5hbDo6RmxhZ01hcnNoYWxsaW5nT3BGbiBtYXJzaGFsbGluZ19vcF9hcmcsCisgICAg
ICAgICAgICAgICAgIGNvbnN0IGZsYWdzX2ludGVybmFsOjpJbml0aWFsVmFsR2VuRnVuYyBpbml0
aWFsX3ZhbHVlX2dlbikKKyAgICAgIDogZmxhZ3NfaW50ZXJuYWw6OkNvbW1hbmRMaW5lRmxhZygK
KyAgICAgICAgICAgIG5hbWUsIGZsYWdzX2ludGVybmFsOjpIZWxwVGV4dDo6RnJvbUZ1bmN0aW9u
UG9pbnRlcihoZWxwX2dlbiksCisgICAgICAgICAgICBmaWxlbmFtZSwgJmZsYWdzX2ludGVybmFs
OjpGbGFnT3BzPFQ+LCBtYXJzaGFsbGluZ19vcF9hcmcsCisgICAgICAgICAgICBpbml0aWFsX3Zh
bHVlX2dlbiwKKyAgICAgICAgICAgIC8qcmV0aXJlZF9hcmc9Ki9mYWxzZSwgLypkZWZfYXJnPSov
bnVsbHB0ciwKKyAgICAgICAgICAgIC8qY3VyX2FyZz0qL251bGxwdHIpIHt9CisKKyAgVCBHZXQo
KSBjb25zdCB7CisgICAgLy8gSW1wbGVtZW50YXRpb24gbm90ZXM6CisgICAgLy8KKyAgICAvLyBX
ZSBhcmUgd3JhcHBpbmcgYSB1bmlvbiBhcm91bmQgdGhlIHZhbHVlIG9mIGBUYCB0byBzZXJ2ZSB0
aHJlZSBwdXJwb3NlczoKKyAgICAvLworICAgIC8vICAxLiBgVS52YWx1ZWAgaGFzIGNvcnJlY3Qg
c2l6ZSBhbmQgYWxpZ25tZW50IGZvciBhIHZhbHVlIG9mIHR5cGUgYFRgCisgICAgLy8gIDIuIFRo
ZSBgVS52YWx1ZWAgY29uc3RydWN0b3IgaXMgbm90IGludm9rZWQgc2luY2UgVSdzIGNvbnN0cnVj
dG9yIGRvZXMKKyAgICAvLyAgbm90CisgICAgLy8gICAgIGRvIGl0IGV4cGxpY2l0bHkuCisgICAg
Ly8gIDMuIFRoZSBgVS52YWx1ZWAgZGVzdHJ1Y3RvciBpcyBpbnZva2VkIHNpbmNlIFUncyBkZXN0
cnVjdG9yIGRvZXMgaXQKKyAgICAvLyAgICAgZXhwbGljaXRseS4gVGhpcyBtYWtlcyBgVWAgYSBr
aW5kIG9mIFJBSUkgd3JhcHBlciBhcm91bmQgbm9uIGRlZmF1bHQKKyAgICAvLyAgICAgY29uc3Ry
dWN0aWJsZSB2YWx1ZSBvZiBULCB3aGljaCBpcyBkZXN0cnVjdGVkIHdoZW4gd2UgbGVhdmUgdGhl
CisgICAgLy8gICAgIHNjb3BlLiBXZSBkbyBuZWVkIHRvIGRlc3Ryb3kgVS52YWx1ZSwgd2hpY2gg
aXMgY29uc3RydWN0ZWQgYnkKKyAgICAvLyAgICAgQ29tbWFuZExpbmVGbGFnOjpSZWFkIGV2ZW4g
dGhvdWdoIHdlIGxlZnQgaXQgaW4gYSBtb3ZlZC1mcm9tIHN0YXRlCisgICAgLy8gICAgIGFmdGVy
IHN0ZDo6bW92ZS4KKyAgICAvLworICAgIC8vIEFsbCBvZiB0aGlzIHNlcnZlcyB0byBhdm9pZCBy
ZXF1aXJpbmcgYFRgIGJlaW5nIGRlZmF1bHQgY29uc3RydWN0aWJsZS4KKyAgICB1bmlvbiBVIHsK
KyAgICAgIFQgdmFsdWU7CisgICAgICBVKCkge30KKyAgICAgIH5VKCkgeyB2YWx1ZS5+VCgpOyB9
CisgICAgfTsKKyAgICBVIHU7CisKKyAgICB0aGlzLT5SZWFkKCZ1LnZhbHVlLCAmZmxhZ3NfaW50
ZXJuYWw6OkZsYWdPcHM8VD4pOworICAgIHJldHVybiBzdGQ6Om1vdmUodS52YWx1ZSk7CisgIH0K
KworICBib29sIEF0b21pY0dldChUKiB2KSBjb25zdCB7CisgICAgY29uc3QgaW50NjRfdCByID0g
dGhpcy0+YXRvbWljLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgICAgaWYgKHIg
IT0gZmxhZ3NfaW50ZXJuYWw6OkNvbW1hbmRMaW5lRmxhZzo6a0F0b21pY0luaXQpIHsKKyAgICAg
IG1lbWNweSh2LCAmciwgc2l6ZW9mKFQpKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHZvaWQgU2V0KGNvbnN0IFQmIHYpIHsgdGhpcy0+
V3JpdGUoJnYsICZmbGFnc19pbnRlcm5hbDo6RmxhZ09wczxUPik7IH0KK307CisKKy8vIFRoaXMg
Y2xhc3MgZmFjaWxpdGF0ZXMgRmxhZyBvYmplY3QgcmVnaXN0cmF0aW9uIGFuZCB0YWlsIGV4cHJl
c3Npb24tYmFzZWQKKy8vIGZsYWcgZGVmaW5pdGlvbiwgZm9yIGV4YW1wbGU6CisvLyBBQlNMX0ZM
QUcoaW50LCBmb28sIDQyLCAiRm9vIGhlbHAiKS5PblVwZGF0ZShOb3RpZnlGb29XYXRjaGVyKTsK
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGRvX3JlZ2lzdGVyPgorY2xhc3MgRmxhZ1JlZ2lz
dHJhciB7CisgcHVibGljOgorICBleHBsaWNpdCBGbGFnUmVnaXN0cmFyKEZsYWc8VD4qIGZsYWcp
IDogZmxhZ18oZmxhZykgeworICAgIGlmIChkb19yZWdpc3RlcikgZmxhZ3NfaW50ZXJuYWw6OlJl
Z2lzdGVyQ29tbWFuZExpbmVGbGFnKGZsYWdfKTsKKyAgfQorCisgIEZsYWdSZWdpc3RyYXImIE9u
VXBkYXRlKGZsYWdzX2ludGVybmFsOjpGbGFnQ2FsbGJhY2sgY2IpICYmIHsKKyAgICBmbGFnXy0+
U2V0Q2FsbGJhY2soY2IpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIC8vIE1ha2UgdGhl
IHJlZ2lzdHJhciAiZGllIiBncmFjZWZ1bGx5IGFzIGEgYm9vbCBvbiBhIGxpbmUgd2hlcmUgcmVn
aXN0cmF0aW9uCisgIC8vIGhhcHBlbnMuIFJlZ2lzdHJhciBvYmplY3RzIGFyZSBpbnRlbmRlZCB0
byBsaXZlIG9ubHkgYXMgdGVtcG9yYXJ5LgorICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfSAgLy8gTk9MSU5UCisKKyBwcml2YXRlOgorICBGbGFnPFQ+KiBmbGFnXzsgIC8v
IEZsYWcgYmVpbmcgcmVnaXN0ZXJlZCAobm90IG93bmVkKS4KK307CisKKy8vIFRoaXMgc3RydWN0
IGFuZCBjb3JyZXNwb25kaW5nIG92ZXJsb2FkIHRvIE1ha2VEZWZhdWx0VmFsdWUgYXJlIHVzZWQg
dG8KKy8vIGZhY2lsaXRhdGUgdXNhZ2Ugb2Yge30gYXMgZGVmYXVsdCB2YWx1ZSBpbiBBQlNMX0ZM
QUcgbWFjcm8uCitzdHJ1Y3QgRW1wdHlCcmFjZXMge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorVCogTWFrZUZyb21EZWZhdWx0VmFsdWUoVCB0KSB7CisgIHJldHVybiBuZXcgVChzdGQ6Om1v
dmUodCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QqIE1ha2VGcm9tRGVmYXVsdFZh
bHVlKEVtcHR5QnJhY2VzKSB7CisgIHJldHVybiBuZXcgVDsKK30KKworfSAgLy8gbmFtZXNwYWNl
IGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xf
RkxBR1NfSU5URVJOQUxfRkxBR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwv
cGFyc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3BhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZkM2FjYTYxZjQwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZmxhZ3MvaW50ZXJuYWwvcGFyc2UuaApAQCAtMCwwICsxLDQ4IEBACisvLworLy8gQ29weXJp
Z2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9GTEFHU19JTlRF
Uk5BTF9QQVJTRV9IXworI2RlZmluZSBBQlNMX0ZMQUdTX0lOVEVSTkFMX1BBUlNFX0hfCisKKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9mbGFn
cy9kZWNsYXJlLmgiCisKK0FCU0xfREVDTEFSRV9GTEFHKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiwgZmxhZ2ZpbGUpOworQUJTTF9ERUNMQVJFX0ZMQUcoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
LCBmcm9tZW52KTsKK0FCU0xfREVDTEFSRV9GTEFHKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiwg
dHJ5ZnJvbWVudik7CitBQlNMX0RFQ0xBUkVfRkxBRyhzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4s
IHVuZGVmb2spOworCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwg
eworCitlbnVtIGNsYXNzIEFyZ3ZMaXN0QWN0aW9uIHsga1JlbW92ZVBhcnNlZEFyZ3MsIGtLZWVw
UGFyc2VkQXJncyB9OworZW51bSBjbGFzcyBVc2FnZUZsYWdzQWN0aW9uIHsga0hhbmRsZVVzYWdl
LCBrSWdub3JlVXNhZ2UgfTsKK2VudW0gY2xhc3MgT25VbmRlZmluZWRGbGFnIHsKKyAga0lnbm9y
ZVVuZGVmaW5lZCwKKyAga1JlcG9ydFVuZGVmaW5lZCwKKyAga0Fib3J0SWZVbmRlZmluZWQKK307
CisKK3N0ZDo6dmVjdG9yPGNoYXIqPiBQYXJzZUNvbW1hbmRMaW5lSW1wbChpbnQgYXJnYywgY2hh
ciogYXJndltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3ZM
aXN0QWN0aW9uIGFyZ19saXN0X2FjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVc2FnZUZsYWdzQWN0aW9uIHVzYWdlX2ZsYWdfYWN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE9uVW5kZWZpbmVkRmxhZyBvbl91bmRlZl9mbGFnKTsK
KworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAor
CisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfSU5URVJOQUxfUEFSU0VfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2ZsYWdzL2ludGVybmFsL3BhdGhfdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcGF0
aF91dGlsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU2MTVjMGU2
YzU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcGF0aF91dGlsLmgK
QEAgLTAsMCArMSw2MCBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhv
cnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKworI2lmbmRlZiBBQlNMX0ZMQUdTX0lOVEVSTkFMX1BBVEhfVVRJTF9IXworI2RlZmlu
ZSBBQlNMX0ZMQUdTX0lOVEVSTkFMX1BBVEhfVVRJTF9IXworCisjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25h
bWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIEEgcG9ydGFi
bGUgaW50ZXJmYWNlIHRoYXQgcmV0dXJucyB0aGUgYmFzZW5hbWUgb2YgdGhlIGZpbGVuYW1lIHBh
c3NlZCBhcyBhbgorLy8gYXJndW1lbnQuIEl0IGlzIHNpbWlsYXIgdG8gYmFzZW5hbWUoMykKKy8v
IDxodHRwczovL2xpbnV4LmRpZS5uZXQvbWFuLzMvYmFzZW5hbWU+LgorLy8gRm9yIGV4YW1wbGU6
CisvLyAgICAgZmxhZ3NfaW50ZXJuYWw6OkJhc2VuYW1lKCJhL2IvcHJvZy9maWxlLmNjIikKKy8v
IHJldHVybnMgImZpbGUuY2MiCisvLyAgICAgZmxhZ3NfaW50ZXJuYWw6OkJhc2VuYW1lKCJmaWxl
LmNjIikKKy8vIHJldHVybnMgImZpbGUuY2MiCitpbmxpbmUgYWJzbDo6c3RyaW5nX3ZpZXcgQmFz
ZW5hbWUoYWJzbDo6c3RyaW5nX3ZpZXcgZmlsZW5hbWUpIHsKKyAgYXV0byBsYXN0X3NsYXNoX3Bv
cyA9IGZpbGVuYW1lLmZpbmRfbGFzdF9vZigiL1xcIik7CisKKyAgcmV0dXJuIGxhc3Rfc2xhc2hf
cG9zID09IGFic2w6OnN0cmluZ192aWV3OjpucG9zCisgICAgICAgICAgICAgPyBmaWxlbmFtZQor
ICAgICAgICAgICAgIDogZmlsZW5hbWUuc3Vic3RyKGxhc3Rfc2xhc2hfcG9zICsgMSk7Cit9CisK
Ky8vIEEgcG9ydGFibGUgaW50ZXJmYWNlIHRoYXQgcmV0dXJucyB0aGUgZGlyZWN0b3J5IG5hbWUg
b2YgdGhlIGZpbGVuYW1lCisvLyBwYXNzZWQgYXMgYW4gYXJndW1lbnQsIGluY2x1ZGluZyB0aGUg
dHJhaWxpbmcgc2xhc2guCisvLyBSZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcgaWYgYSBzbGFzaCBp
cyBub3QgZm91bmQgaW4gdGhlIGlucHV0IGZpbGUgbmFtZS4KKy8vIEZvciBleGFtcGxlOgorLy8g
ICAgICBmbGFnc19pbnRlcm5hbDo6UGFja2FnZSgiYS9iL3Byb2cvZmlsZS5jYyIpCisvLyByZXR1
cm5zICJhL2IvcHJvZy8iCisvLyAgICAgIGZsYWdzX2ludGVybmFsOjpQYWNrYWdlKCJmaWxlLmNj
IikKKy8vIHJldHVybnMgIiIKK2lubGluZSBhYnNsOjpzdHJpbmdfdmlldyBQYWNrYWdlKGFic2w6
OnN0cmluZ192aWV3IGZpbGVuYW1lKSB7CisgIGF1dG8gbGFzdF9zbGFzaF9wb3MgPSBmaWxlbmFt
ZS5maW5kX2xhc3Rfb2YoIi9cXCIpOworCisgIHJldHVybiBsYXN0X3NsYXNoX3BvcyA9PSBhYnNs
OjpzdHJpbmdfdmlldzo6bnBvcworICAgICAgICAgICAgID8gYWJzbDo6c3RyaW5nX3ZpZXcoKQor
ICAgICAgICAgICAgIDogZmlsZW5hbWUuc3Vic3RyKDAsIGxhc3Rfc2xhc2hfcG9zICsgMSk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
KworI2VuZGlmICAvLyBBQlNMX0ZMQUdTX0lOVEVSTkFMX1BBVEhfVVRJTF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcGF0aF91dGlsX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9p
bnRlcm5hbC9wYXRoX3V0aWxfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uMjA5MTM3M2M4OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRl
cm5hbC9wYXRoX3V0aWxfdGVzdC5jYwpAQCAtMCwwICsxLDQ2IEBACisvLworLy8gIENvcHlyaWdo
dCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRl
cm5hbC9wYXRoX3V0aWwuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFj
ZSB7CisKK25hbWVzcGFjZSBmbGFncyA9IGFic2w6OmZsYWdzX2ludGVybmFsOworCitURVNUKEZs
YWdzUGF0aFV0aWxUZXN0LCBUZXN0QmFzZW5hbWUpIHsKKyAgRVhQRUNUX0VRKGZsYWdzOjpCYXNl
bmFtZSgiIiksICIiKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpCYXNlbmFtZSgiYS5jYyIpLCAiYS5j
YyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OkJhc2VuYW1lKCJkaXIvYS5jYyIpLCAiYS5jYyIpOwor
ICBFWFBFQ1RfRVEoZmxhZ3M6OkJhc2VuYW1lKCJkaXIxL2RpcjIvYS5jYyIpLCAiYS5jYyIpOwor
ICBFWFBFQ1RfRVEoZmxhZ3M6OkJhc2VuYW1lKCIuLi9kaXIxL2RpcjIvYS5jYyIpLCAiYS5jYyIp
OworICBFWFBFQ1RfRVEoZmxhZ3M6OkJhc2VuYW1lKCIvZGlyMS9kaXIyL2EuY2MiKSwgImEuY2Mi
KTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpCYXNlbmFtZSgiL2RpcjEvZGlyMi8uLi9kaXIzL2EuY2Mi
KSwgImEuY2MiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChGbGFnc1BhdGhVdGlsVGVz
dCwgVGVzdFBhY2thZ2UpIHsKKyAgRVhQRUNUX0VRKGZsYWdzOjpQYWNrYWdlKCIiKSwgIiIpOwor
ICBFWFBFQ1RfRVEoZmxhZ3M6OlBhY2thZ2UoImEuY2MiKSwgIiIpOworICBFWFBFQ1RfRVEoZmxh
Z3M6OlBhY2thZ2UoImRpci9hLmNjIiksICJkaXIvIik7CisgIEVYUEVDVF9FUShmbGFnczo6UGFj
a2FnZSgiZGlyMS9kaXIyL2EuY2MiKSwgImRpcjEvZGlyMi8iKTsKKyAgRVhQRUNUX0VRKGZsYWdz
OjpQYWNrYWdlKCIuLi9kaXIxL2RpcjIvYS5jYyIpLCAiLi4vZGlyMS9kaXIyLyIpOworICBFWFBF
Q1RfRVEoZmxhZ3M6OlBhY2thZ2UoIi9kaXIxL2RpcjIvYS5jYyIpLCAiL2RpcjEvZGlyMi8iKTsK
KyAgRVhQRUNUX0VRKGZsYWdzOjpQYWNrYWdlKCIvZGlyMS9kaXIyLy4uL2RpcjMvYS5jYyIpLCAi
L2RpcjEvZGlyMi8uLi9kaXIzLyIpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVy
bmFsL3Byb2dyYW1fbmFtZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uZjA4MTFmMTQ0ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9w
cm9ncmFtX25hbWUuY2MKQEAgLTAsMCArMSw1MyBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcHJv
Z3JhbV9uYW1lLmgiCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL2ZsYWdz
L2ludGVybmFsL3BhdGhfdXRpbC5oIgorI2luY2x1ZGUgImFic2wvc3luY2hyb25pemF0aW9uL211
dGV4LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisK
K0FCU0xfQ09OU1RfSU5JVCBzdGF0aWMgYWJzbDo6TXV0ZXggcHJvZ3JhbV9uYW1lX2d1YXJkKGFi
c2w6OmtDb25zdEluaXQpOworQUJTTF9DT05TVF9JTklUIHN0YXRpYyBzdGQ6OnN0cmluZyogcHJv
Z3JhbV9uYW1lCisgICAgQUJTTF9HVUFSREVEX0JZKHByb2dyYW1fbmFtZV9ndWFyZCkgPSBudWxs
cHRyOworCitzdGQ6OnN0cmluZyBQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSB7CisgIGFic2w6Ok11
dGV4TG9jayBsKCZwcm9ncmFtX25hbWVfZ3VhcmQpOworCisgIHJldHVybiBwcm9ncmFtX25hbWUg
PyAqcHJvZ3JhbV9uYW1lIDogIlVOS05PV04iOworfQorCitzdGQ6OnN0cmluZyBTaG9ydFByb2dy
YW1JbnZvY2F0aW9uTmFtZSgpIHsKKyAgYWJzbDo6TXV0ZXhMb2NrIGwoJnByb2dyYW1fbmFtZV9n
dWFyZCk7CisKKyAgcmV0dXJuIHByb2dyYW1fbmFtZSA/IHN0ZDo6c3RyaW5nKGZsYWdzX2ludGVy
bmFsOjpCYXNlbmFtZSgqcHJvZ3JhbV9uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICA6ICJV
TktOT1dOIjsKK30KKwordm9pZCBTZXRQcm9ncmFtSW52b2NhdGlvbk5hbWUoYWJzbDo6c3RyaW5n
X3ZpZXcgcHJvZ19uYW1lX3N0cikgeworICBhYnNsOjpNdXRleExvY2sgbCgmcHJvZ3JhbV9uYW1l
X2d1YXJkKTsKKworICBpZiAoIXByb2dyYW1fbmFtZSkKKyAgICBwcm9ncmFtX25hbWUgPSBuZXcg
c3RkOjpzdHJpbmcocHJvZ19uYW1lX3N0cik7CisgIGVsc2UKKyAgICBwcm9ncmFtX25hbWUtPmFz
c2lnbihwcm9nX25hbWVfc3RyLmRhdGEoKSwgcHJvZ19uYW1lX3N0ci5zaXplKCkpOworfQorCit9
ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9wcm9ncmFtX25hbWUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdz
L2ludGVybmFsL3Byb2dyYW1fbmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi4zMjZmMjRiYjY1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVy
bmFsL3Byb2dyYW1fbmFtZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIw
MTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9GTEFHU19JTlRFUk5BTF9Q
Uk9HUkFNX05BTUVfSF8KKyNkZWZpbmUgQUJTTF9GTEFHU19JTlRFUk5BTF9QUk9HUkFNX05BTUVf
SF8KKworI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdf
dmlldy5oIgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUHJvZ3JhbSBuYW1lCisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIFJldHVybnMgcHJvZ3JhbSBp
bnZvY2F0aW9uIG5hbWUgb3IgIlVOS05PV04iIGlmIGBTZXRQcm9ncmFtSW52b2NhdGlvbk5hbWUo
KWAKKy8vIGlzIG5ldmVyIGNhbGxlZC4gQXQgdGhlIG1vbWVudCB0aGlzIGlzIGFsd2F5cyBzZXQg
dG8gYXJndlswXSBhcyBwYXJ0IG9mCisvLyBsaWJyYXJ5IGluaXRpYWxpemF0aW9uLgorc3RkOjpz
dHJpbmcgUHJvZ3JhbUludm9jYXRpb25OYW1lKCk7CisKKy8vIFJldHVybnMgYmFzZSBuYW1lIGZv
ciBwcm9ncmFtIGludm9jYXRpb24gbmFtZS4gRm9yIGV4YW1wbGUsIGlmCisvLyAgIFByb2dyYW1J
bnZvY2F0aW9uTmFtZSgpID09ICJhL2IvbXliaW5hcnkiCisvLyB0aGVuCisvLyAgIFNob3J0UHJv
Z3JhbUludm9jYXRpb25OYW1lKCkgPT0gIm15YmluYXJ5Igorc3RkOjpzdHJpbmcgU2hvcnRQcm9n
cmFtSW52b2NhdGlvbk5hbWUoKTsKKworLy8gU2V0cyBwcm9ncmFtIGludm9jYXRpb24gbmFtZSB0
byBhIG5ldyB2YWx1ZS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UKKy8vIGR1cmluZyBwcm9n
cmFtIGluaXRpYWxpemF0aW9uLCBiZWZvcmUgYW55IHRocmVhZHMgYXJlIHNwYXduZWQuCit2b2lk
IFNldFByb2dyYW1JbnZvY2F0aW9uTmFtZShhYnNsOjpzdHJpbmdfdmlldyBwcm9nX25hbWVfc3Ry
KTsKKworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJz
bAorCisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfSU5URVJOQUxfUFJPR1JBTV9OQU1FX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9wcm9ncmFtX25hbWVfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5lZDY5MjE4YjgzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZV90ZXN0LmNjCkBAIC0wLDAgKzEsNjAgQEAKKy8v
CisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJh
YnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKworbmFtZXNwYWNlIHsKKwor
bmFtZXNwYWNlIGZsYWdzID0gYWJzbDo6ZmxhZ3NfaW50ZXJuYWw7CisKK1RFU1QoRmxhZ3NQYXRo
VXRpbFRlc3QsIFRlc3RJbml0aWFsUHJvZ2FtTmFtZSkgeworICBmbGFnczo6U2V0UHJvZ3JhbUlu
dm9jYXRpb25OYW1lKCJhYnNsL2ZsYWdzL3Byb2dyYW1fbmFtZV90ZXN0Iik7CisgIHN0ZDo6c3Ry
aW5nIHByb2dyYW1fbmFtZSA9IGZsYWdzOjpQcm9ncmFtSW52b2NhdGlvbk5hbWUoKTsKKyAgZm9y
IChjaGFyJiBjIDogcHJvZ3JhbV9uYW1lKQorICAgIGlmIChjID09ICdcXCcpIGMgPSAnLyc7CisK
KyNpZiAhZGVmaW5lZChfX3dhc21fXykgJiYgIWRlZmluZWQoX19hc21qc19fKQorICBjb25zdCBz
dGQ6OnN0cmluZyBleHBlY3RfbmFtZSA9ICJhYnNsL2ZsYWdzL3Byb2dyYW1fbmFtZV90ZXN0IjsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0X2Jhc2VuYW1lID0gInByb2dyYW1fbmFtZV90ZXN0
IjsKKyNlbHNlCisgIC8vIEZvciB0YXJnZXRzIHRoYXQgZ2VuZXJhdGUgamF2YXNjcmlwdCBvciB3
ZWJhc3NlbWJseSB0aGUgaW52b2NhdGlvbiBuYW1lCisgIC8vIGhhcyB0aGUgc3BlY2lhbCB2YWx1
ZSBiZWxvdy4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0X25hbWUgPSAidGhpcy5wcm9ncmFt
IjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0X2Jhc2VuYW1lID0gInRoaXMucHJvZ3JhbSI7
CisjZW5kaWYKKworICBFWFBFQ1RfVFJVRShhYnNsOjpFbmRzV2l0aChwcm9ncmFtX25hbWUsIGV4
cGVjdF9uYW1lKSkgPDwgcHJvZ3JhbV9uYW1lOworICBFWFBFQ1RfRVEoZmxhZ3M6OlNob3J0UHJv
Z3JhbUludm9jYXRpb25OYW1lKCksIGV4cGVjdF9iYXNlbmFtZSk7Cit9CisKK1RFU1QoRmxhZ3NQ
YXRoVXRpbFRlc3QsIFRlc3RQcm9nYW1OYW1lSW50ZXJmYWNlcykgeworICBmbGFnczo6U2V0UHJv
Z3JhbUludm9jYXRpb25OYW1lKCJhL215X3Rlc3QiKTsKKworICBFWFBFQ1RfRVEoZmxhZ3M6OlBy
b2dyYW1JbnZvY2F0aW9uTmFtZSgpLCAiYS9teV90ZXN0Iik7CisgIEVYUEVDVF9FUShmbGFnczo6
U2hvcnRQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSwgIm15X3Rlc3QiKTsKKworICBhYnNsOjpzdHJp
bmdfdmlldyBub3RfbnVsbF90ZXJtaW5hdGVkKCJhYnNsL2FhYS9iYmIiKTsKKyAgbm90X251bGxf
dGVybWluYXRlZCA9IG5vdF9udWxsX3Rlcm1pbmF0ZWQuc3Vic3RyKDEsIDEwKTsKKworICBmbGFn
czo6U2V0UHJvZ3JhbUludm9jYXRpb25OYW1lKG5vdF9udWxsX3Rlcm1pbmF0ZWQpOworCisgIEVY
UEVDVF9FUShmbGFnczo6UHJvZ3JhbUludm9jYXRpb25OYW1lKCksICJic2wvYWFhL2JiIik7Cisg
IEVYUEVDVF9FUShmbGFnczo6U2hvcnRQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSwgImJiIik7Cit9
CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcmVn
aXN0cnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9yZWdpc3RyeS5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjQ3NWJkODQxMjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9pbnRlcm5hbC9yZWdpc3RyeS5jYwpAQCAtMCwwICsxLDQ0MyBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJz
bC9mbGFncy9pbnRlcm5hbC9yZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2R5bmFt
aWNfYW5ub3RhdGlvbnMuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dp
bmcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2NvbmZpZy5oIgorI2luY2x1ZGUgImFic2wvZmxh
Z3MvdXNhZ2VfY29uZmlnLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNp
bmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNsL3N5bmNo
cm9uaXphdGlvbi9tdXRleC5oIgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmxhZ1JlZ2lzdHJ5IGlt
cGxlbWVudGF0aW9uCisvLyAgICBBIEZsYWdSZWdpc3RyeSBob2xkcyBhbGwgZmxhZyBvYmplY3Rz
IGluZGV4ZWQKKy8vICAgIGJ5IHRoZWlyIG5hbWVzIHNvIHRoYXQgaWYgeW91IGtub3cgYSBmbGFn
J3MgbmFtZSB5b3UgY2FuIGFjY2VzcyBvcgorLy8gICAgc2V0IGl0LgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKwordm9pZCBEZXN0
cm95RmxhZyhDb21tYW5kTGluZUZsYWcqIGZsYWcpIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUyB7CisgIGZsYWctPkRlc3Ryb3koKTsKKworICAvLyBDb21tYW5kTGluZUZsYWcgaGFuZGxl
IG9iamVjdCBpcyBoZWFwIGFsbG9jYXRlZCBmb3Igbm9uIEFic2VpbCBGbGFncy4KKyAgaWYgKCFm
bGFnLT5Jc0Fic2VpbEZsYWcoKSkgeworICAgIGRlbGV0ZSBmbGFnOworICB9Cit9CisKK30gIC8v
IG5hbWVzcGFjZQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmxhZ1JlZ2lzdHJ5CisvLyAgICBBIEZs
YWdSZWdpc3RyeSBzaW5nbGV0b24gb2JqZWN0IGhvbGRzIGFsbCBmbGFnIG9iamVjdHMgaW5kZXhl
ZAorLy8gICAgYnkgdGhlaXIgbmFtZXMgc28gdGhhdCBpZiB5b3Uga25vdyBhIGZsYWcncyBuYW1l
IChhcyBhIEMKKy8vICAgIHN0cmluZyksIHlvdSBjYW4gYWNjZXNzIG9yIHNldCBpdC4gIElmIHRo
ZSBmdW5jdGlvbiBpcyBuYW1lZAorLy8gICAgRm9vTG9ja2VkKCksIHlvdSBtdXN0IG93biB0aGUg
cmVnaXN0cnkgbG9jayBiZWZvcmUgY2FsbGluZworLy8gICAgdGhlIGZ1bmN0aW9uOyBvdGhlcndp
c2UsIHlvdSBzaG91bGQgKm5vdCogaG9sZCB0aGUgbG9jaywgYW5kCisvLyAgICB0aGUgZnVuY3Rp
b24gd2lsbCBhY3F1aXJlIGl0IGl0c2VsZiBpZiBuZWVkZWQuCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitj
bGFzcyBGbGFnUmVnaXN0cnkgeworIHB1YmxpYzoKKyAgRmxhZ1JlZ2lzdHJ5KCkgPSBkZWZhdWx0
OworICB+RmxhZ1JlZ2lzdHJ5KCkgeworICAgIGZvciAoYXV0byYgcCA6IGZsYWdzXykgeworICAg
ICAgRGVzdHJveUZsYWcocC5zZWNvbmQpOworICAgIH0KKyAgfQorCisgIC8vIFN0b3JlIGEgZmxh
ZyBpbiB0aGlzIHJlZ2lzdHJ5LiAgVGFrZXMgb3duZXJzaGlwIG9mICpmbGFnLgorICB2b2lkIFJl
Z2lzdGVyRmxhZyhDb21tYW5kTGluZUZsYWcqIGZsYWcpOworCisgIHZvaWQgTG9jaygpIEFCU0xf
RVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04obG9ja18pIHsgbG9ja18uTG9jaygpOyB9CisgIHZvaWQg
VW5sb2NrKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJT04obG9ja18pIHsgbG9ja18uVW5sb2NrKCk7IH0K
KworICAvLyBSZXR1cm5zIHRoZSBmbGFnIG9iamVjdCBmb3IgdGhlIHNwZWNpZmllZCBuYW1lLCBv
ciBudWxscHRyIGlmIG5vdCBmb3VuZC4KKyAgLy8gV2lsbCBlbWl0IGEgd2FybmluZyBpZiBhICdy
ZXRpcmVkJyBmbGFnIGlzIHNwZWNpZmllZC4KKyAgQ29tbWFuZExpbmVGbGFnKiBGaW5kRmxhZ0xv
Y2tlZChhYnNsOjpzdHJpbmdfdmlldyBuYW1lKTsKKworICAvLyBSZXR1cm5zIHRoZSByZXRpcmVk
IGZsYWcgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIG5hbWUsIG9yIG51bGxwdHIgaWYgbm90Cisg
IC8vIGZvdW5kIG9yIG5vdCByZXRpcmVkLiAgRG9lcyBub3QgZW1pdCBhIHdhcm5pbmcuCisgIENv
bW1hbmRMaW5lRmxhZyogRmluZFJldGlyZWRGbGFnTG9ja2VkKGFic2w6OnN0cmluZ192aWV3IG5h
bWUpOworCisgIHN0YXRpYyBGbGFnUmVnaXN0cnkqIEdsb2JhbFJlZ2lzdHJ5KCk7ICAvLyByZXR1
cm5zIGEgc2luZ2xldG9uIHJlZ2lzdHJ5CisKKyBwcml2YXRlOgorICBmcmllbmQgY2xhc3MgRmxh
Z1NhdmVySW1wbDsgIC8vIHJlYWRzIGFsbCB0aGUgZmxhZ3MgaW4gb3JkZXIgdG8gY29weSB0aGVt
CisgIGZyaWVuZCB2b2lkIEZvckVhY2hGbGFnVW5sb2NrZWQoCisgICAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQoQ29tbWFuZExpbmVGbGFnKik+IHZpc2l0b3IpOworCisgIC8vIFRoZSBtYXAgZnJvbSBu
YW1lIHRvIGZsYWcsIGZvciBGaW5kRmxhZ0xvY2tlZCgpLgorICB1c2luZyBGbGFnTWFwID0gc3Rk
OjptYXA8YWJzbDo6c3RyaW5nX3ZpZXcsIENvbW1hbmRMaW5lRmxhZyo+OworICB1c2luZyBGbGFn
SXRlcmF0b3IgPSBGbGFnTWFwOjppdGVyYXRvcjsKKyAgdXNpbmcgRmxhZ0NvbnN0SXRlcmF0b3Ig
PSBGbGFnTWFwOjpjb25zdF9pdGVyYXRvcjsKKyAgRmxhZ01hcCBmbGFnc187CisKKyAgYWJzbDo6
TXV0ZXggbG9ja187CisKKyAgLy8gRGlzYWxsb3cKKyAgRmxhZ1JlZ2lzdHJ5KGNvbnN0IEZsYWdS
ZWdpc3RyeSYpOworICBGbGFnUmVnaXN0cnkmIG9wZXJhdG9yPShjb25zdCBGbGFnUmVnaXN0cnkm
KTsKK307CisKK0ZsYWdSZWdpc3RyeSogRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpIHsK
KyAgc3RhdGljIEZsYWdSZWdpc3RyeSogZ2xvYmFsX3JlZ2lzdHJ5ID0gbmV3IEZsYWdSZWdpc3Ry
eTsKKyAgcmV0dXJuIGdsb2JhbF9yZWdpc3RyeTsKK30KKworbmFtZXNwYWNlIHsKKworY2xhc3Mg
RmxhZ1JlZ2lzdHJ5TG9jayB7CisgcHVibGljOgorICBleHBsaWNpdCBGbGFnUmVnaXN0cnlMb2Nr
KEZsYWdSZWdpc3RyeSogZnIpIDogZnJfKGZyKSB7IGZyXy0+TG9jaygpOyB9CisgIH5GbGFnUmVn
aXN0cnlMb2NrKCkgeyBmcl8tPlVubG9jaygpOyB9CisKKyBwcml2YXRlOgorICBGbGFnUmVnaXN0
cnkqIGNvbnN0IGZyXzsKK307CisKK30gIC8vIG5hbWVzcGFjZQorCit2b2lkIEZsYWdSZWdpc3Ry
eTo6UmVnaXN0ZXJGbGFnKENvbW1hbmRMaW5lRmxhZyogZmxhZykgeworICBGbGFnUmVnaXN0cnlM
b2NrIHJlZ2lzdHJ5X2xvY2sodGhpcyk7CisgIHN0ZDo6cGFpcjxGbGFnSXRlcmF0b3IsIGJvb2w+
IGlucyA9CisgICAgICBmbGFnc18uaW5zZXJ0KEZsYWdNYXA6OnZhbHVlX3R5cGUoZmxhZy0+TmFt
ZSgpLCBmbGFnKSk7CisgIGlmIChpbnMuc2Vjb25kID09IGZhbHNlKSB7ICAvLyBtZWFucyB0aGUg
bmFtZSB3YXMgYWxyZWFkeSBpbiB0aGUgbWFwCisgICAgQ29tbWFuZExpbmVGbGFnKiBvbGRfZmxh
ZyA9IGlucy5maXJzdC0+c2Vjb25kOworICAgIGlmIChmbGFnLT5Jc1JldGlyZWQoKSAhPSBvbGRf
ZmxhZy0+SXNSZXRpcmVkKCkpIHsKKyAgICAgIC8vIEFsbCByZWdpc3RyYXRpb25zIG11c3QgYWdy
ZWUgb24gdGhlICdyZXRpcmVkJyBmbGFnLgorICAgICAgZmxhZ3NfaW50ZXJuYWw6OlJlcG9ydFVz
YWdlRXJyb3IoCisgICAgICAgICAgYWJzbDo6U3RyQ2F0KAorICAgICAgICAgICAgICAiUmV0aXJl
ZCBmbGFnICciLCBmbGFnLT5OYW1lKCksCisgICAgICAgICAgICAgICInIHdhcyBkZWZpbmVkIG5v
cm1hbGx5IGluIGZpbGUgJyIsCisgICAgICAgICAgICAgIChmbGFnLT5Jc1JldGlyZWQoKSA/IG9s
ZF9mbGFnLT5GaWxlbmFtZSgpIDogZmxhZy0+RmlsZW5hbWUoKSksCisgICAgICAgICAgICAgICIn
LiIpLAorICAgICAgICAgIHRydWUpOworICAgIH0gZWxzZSBpZiAoZmxhZy0+b3AgIT0gb2xkX2Zs
YWctPm9wKSB7CisgICAgICBmbGFnc19pbnRlcm5hbDo6UmVwb3J0VXNhZ2VFcnJvcigKKyAgICAg
ICAgICBhYnNsOjpTdHJDYXQoIkZsYWcgJyIsIGZsYWctPk5hbWUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIicgd2FzIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UgYnV0IHdpdGggIgorICAgICAg
ICAgICAgICAgICAgICAgICAiZGlmZmVyaW5nIHR5cGVzLiBEZWZpbmVkIGluIGZpbGVzICciLAor
ICAgICAgICAgICAgICAgICAgICAgICBvbGRfZmxhZy0+RmlsZW5hbWUoKSwgIicgYW5kICciLCBm
bGFnLT5GaWxlbmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAiJyB3aXRoIHR5cGVzICci
LCBvbGRfZmxhZy0+VHlwZW5hbWUoKSwgIicgYW5kICciLAorICAgICAgICAgICAgICAgICAgICAg
ICBmbGFnLT5UeXBlbmFtZSgpLCAiJywgcmVzcGVjdGl2ZWx5LiIpLAorICAgICAgICAgIHRydWUp
OworICAgIH0gZWxzZSBpZiAob2xkX2ZsYWctPklzUmV0aXJlZCgpKSB7CisgICAgICAvLyBSZXRp
cmVkIGRlZmluaXRpb25zIGFyZSBpZGVtcG90ZW50LiBKdXN0IGtlZXAgdGhlIG9sZCBvbmUuCisg
ICAgICBEZXN0cm95RmxhZyhmbGFnKTsKKyAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKG9s
ZF9mbGFnLT5GaWxlbmFtZSgpICE9IGZsYWctPkZpbGVuYW1lKCkpIHsKKyAgICAgIGZsYWdzX2lu
dGVybmFsOjpSZXBvcnRVc2FnZUVycm9yKAorICAgICAgICAgIGFic2w6OlN0ckNhdCgiRmxhZyAn
IiwgZmxhZy0+TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAiJyB3YXMgZGVmaW5lZCBt
b3JlIHRoYW4gb25jZSAoaW4gZmlsZXMgJyIsCisgICAgICAgICAgICAgICAgICAgICAgIG9sZF9m
bGFnLT5GaWxlbmFtZSgpLCAiJyBhbmQgJyIsIGZsYWctPkZpbGVuYW1lKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICInKS4iKSwKKyAgICAgICAgICB0cnVlKTsKKyAgICB9IGVsc2UgeworICAg
ICAgZmxhZ3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdlRXJyb3IoCisgICAgICAgICAgYWJzbDo6U3Ry
Q2F0KAorICAgICAgICAgICAgICAiU29tZXRoaW5nIHdyb25nIHdpdGggZmxhZyAnIiwgZmxhZy0+
TmFtZSgpLCAiJyBpbiBmaWxlICciLAorICAgICAgICAgICAgICBmbGFnLT5GaWxlbmFtZSgpLCAi
Jy4gT25lIHBvc3NpYmlsaXR5OiBmaWxlICciLCBmbGFnLT5GaWxlbmFtZSgpLAorICAgICAgICAg
ICAgICAiJyBpcyBiZWluZyBsaW5rZWQgYm90aCBzdGF0aWNhbGx5IGFuZCBkeW5hbWljYWxseSBp
bnRvIHRoaXMgIgorICAgICAgICAgICAgICAiZXhlY3V0YWJsZS4gZS5nLiBzb21lIGZpbGVzIGxp
c3RlZCBhcyBzcmNzIHRvIGEgdGVzdCBhbmQgYWxzbyAiCisgICAgICAgICAgICAgICJsaXN0ZWQg
YXMgc3JjcyBvZiBzb21lIHNoYXJlZCBsaWIgZGVwcyBvZiB0aGUgc2FtZSB0ZXN0LiIpLAorICAg
ICAgICAgIHRydWUpOworICAgIH0KKyAgICAvLyBBbGwgY2FzZXMgYWJvdmUgYXJlIGZhdGFsLCBl
eGNlcHQgZm9yIHRoZSByZXRpcmVkIGZsYWdzLgorICAgIHN0ZDo6ZXhpdCgxKTsKKyAgfQorfQor
CitDb21tYW5kTGluZUZsYWcqIEZsYWdSZWdpc3RyeTo6RmluZEZsYWdMb2NrZWQoYWJzbDo6c3Ry
aW5nX3ZpZXcgbmFtZSkgeworICBGbGFnQ29uc3RJdGVyYXRvciBpID0gZmxhZ3NfLmZpbmQobmFt
ZSk7CisgIGlmIChpID09IGZsYWdzXy5lbmQoKSkgeworICAgIHJldHVybiBudWxscHRyOworICB9
CisKKyAgaWYgKGktPnNlY29uZC0+SXNSZXRpcmVkKCkpIHsKKyAgICBmbGFnc19pbnRlcm5hbDo6
UmVwb3J0VXNhZ2VFcnJvcigKKyAgICAgICAgYWJzbDo6U3RyQ2F0KCJBY2Nlc3NpbmcgcmV0aXJl
ZCBmbGFnICciLCBuYW1lLCAiJyIpLCBmYWxzZSk7CisgIH0KKworICByZXR1cm4gaS0+c2Vjb25k
OworfQorCitDb21tYW5kTGluZUZsYWcqIEZsYWdSZWdpc3RyeTo6RmluZFJldGlyZWRGbGFnTG9j
a2VkKGFic2w6OnN0cmluZ192aWV3IG5hbWUpIHsKKyAgRmxhZ0NvbnN0SXRlcmF0b3IgaSA9IGZs
YWdzXy5maW5kKG5hbWUpOworICBpZiAoaSA9PSBmbGFnc18uZW5kKCkgfHwgIWktPnNlY29uZC0+
SXNSZXRpcmVkKCkpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIHJldHVybiBpLT5z
ZWNvbmQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGbGFnU2F2ZXIKKy8vIEZsYWdTYXZlcklt
cGwKKy8vICAgIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBzdGF0ZXMgb2YgYWxsIGZsYWdzIGF0IGNv
bnN0cnVjdCB0aW1lLAorLy8gICAgYW5kIHJlc3RvcmVzIGFsbCBmbGFncyB0byB0aGF0IHN0YXRl
IGF0IGRlc3RydWN0IHRpbWUuCisvLyAgICBJdHMgbWFqb3IgaW1wbGVtZW50YXRpb24gY2hhbGxl
bmdlIGlzIHRoYXQgaXQgbmV2ZXIgbW9kaWZpZXMKKy8vICAgIHBvaW50ZXJzIGluIHRoZSAnbWFp
bicgcmVnaXN0cnksIHNvIGdsb2JhbCBGTEFHXyogdmFycyBhbHdheXMKKy8vICAgIHBvaW50IHRv
IHRoZSByaWdodCBwbGFjZS4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIEZsYWdTYXZlckltcGwg
eworIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0cyBhbiBlbXB0eSBGbGFnU2F2ZXJJbXBsIG9iamVj
dC4KKyAgRmxhZ1NhdmVySW1wbCgpIHt9CisgIH5GbGFnU2F2ZXJJbXBsKCkgeworICAgIC8vIHJl
Y2xhaW0gbWVtb3J5IGZyb20gZWFjaCBvZiBvdXIgQ29tbWFuZExpbmVGbGFncworICAgIGZvciAo
Y29uc3QgU2F2ZWRGbGFnJiBzcmMgOiBiYWNrdXBfcmVnaXN0cnlfKSB7CisgICAgICBEZWxldGUo
c3JjLm9wLCBzcmMuY3VycmVudCk7CisgICAgICBEZWxldGUoc3JjLm9wLCBzcmMuZGVmYXVsdF92
YWx1ZSk7CisgICAgfQorICB9CisKKyAgLy8gU2F2ZXMgdGhlIGZsYWcgc3RhdGVzIGZyb20gdGhl
IGZsYWcgcmVnaXN0cnkgaW50byB0aGlzIG9iamVjdC4KKyAgLy8gSXQncyBhbiBlcnJvciB0byBj
YWxsIHRoaXMgbW9yZSB0aGFuIG9uY2UuCisgIC8vIE11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIHJl
Z2lzdHJ5IG11dGV4IGlzIG5vdCBoZWxkLgorICB2b2lkIFNhdmVGcm9tUmVnaXN0cnkoKSB7Cisg
ICAgYXNzZXJ0KGJhY2t1cF9yZWdpc3RyeV8uZW1wdHkoKSk7ICAvLyBjYWxsIG9ubHkgb25jZSEK
KyAgICBTYXZlZEZsYWcgc2F2ZWQ7CisgICAgZmxhZ3NfaW50ZXJuYWw6OkZvckVhY2hGbGFnKFsm
XShmbGFnc19pbnRlcm5hbDo6Q29tbWFuZExpbmVGbGFnKiBmbGFnKSB7CisgICAgICBpZiAoZmxh
Zy0+SXNSZXRpcmVkKCkpIHJldHVybjsKKworICAgICAgc2F2ZWQubmFtZSA9IGZsYWctPk5hbWUo
KTsKKyAgICAgIHNhdmVkLm9wID0gZmxhZy0+b3A7CisgICAgICBzYXZlZC5tYXJzaGFsbGluZ19v
cCA9IGZsYWctPm1hcnNoYWxsaW5nX29wOworICAgICAgeworICAgICAgICBhYnNsOjpNdXRleExv
Y2sgbChmbGFnLT5Jbml0RmxhZ0lmTmVjZXNzYXJ5KCkpOworICAgICAgICBzYXZlZC52YWxpZGF0
b3IgPSBmbGFnLT52YWxpZGF0b3I7CisgICAgICAgIHNhdmVkLm1vZGlmaWVkID0gZmxhZy0+bW9k
aWZpZWQ7CisgICAgICAgIHNhdmVkLm9uX2NvbW1hbmRfbGluZSA9IGZsYWctPm9uX2NvbW1hbmRf
bGluZTsKKyAgICAgICAgc2F2ZWQuY3VycmVudCA9IENsb25lKHNhdmVkLm9wLCBmbGFnLT5jdXIp
OworICAgICAgICBzYXZlZC5kZWZhdWx0X3ZhbHVlID0gQ2xvbmUoc2F2ZWQub3AsIGZsYWctPmRl
Zik7CisgICAgICAgIHNhdmVkLmNvdW50ZXIgPSBmbGFnLT5jb3VudGVyOworICAgICAgfQorICAg
ICAgYmFja3VwX3JlZ2lzdHJ5Xy5wdXNoX2JhY2soc2F2ZWQpOworICAgIH0pOworICB9CisKKyAg
Ly8gUmVzdG9yZXMgdGhlIHNhdmVkIGZsYWcgc3RhdGVzIGludG8gdGhlIGZsYWcgcmVnaXN0cnku
ICBXZQorICAvLyBhc3N1bWUgbm8gZmxhZ3Mgd2VyZSBhZGRlZCBvciBkZWxldGVkIGZyb20gdGhl
IHJlZ2lzdHJ5IHNpbmNlCisgIC8vIHRoZSBTYXZlRnJvbVJlZ2lzdHJ5OyBpZiB0aGV5IHdlcmUs
IHRoYXQncyB0cm91YmxlISAgTXVzdCBiZQorICAvLyBjYWxsZWQgd2hlbiB0aGUgcmVnaXN0cnkg
bXV0ZXggaXMgbm90IGhlbGQuCisgIHZvaWQgUmVzdG9yZVRvUmVnaXN0cnkoKSB7CisgICAgRmxh
Z1JlZ2lzdHJ5KiBjb25zdCBnbG9iYWxfcmVnaXN0cnkgPSBGbGFnUmVnaXN0cnk6Okdsb2JhbFJl
Z2lzdHJ5KCk7CisgICAgRmxhZ1JlZ2lzdHJ5TG9jayBmcmwoZ2xvYmFsX3JlZ2lzdHJ5KTsKKyAg
ICBmb3IgKGNvbnN0IFNhdmVkRmxhZyYgc3JjIDogYmFja3VwX3JlZ2lzdHJ5XykgeworICAgICAg
Q29tbWFuZExpbmVGbGFnKiBmbGFnID0gZ2xvYmFsX3JlZ2lzdHJ5LT5GaW5kRmxhZ0xvY2tlZChz
cmMubmFtZSk7CisgICAgICAvLyBJZiBudWxsLCBmbGFnIGdvdCBkZWxldGVkIGZyb20gcmVnaXN0
cnkuCisgICAgICBpZiAoIWZsYWcpIGNvbnRpbnVlOworCisgICAgICBib29sIHJlc3RvcmVkID0g
ZmFsc2U7CisgICAgICB7CisgICAgICAgIGFic2w6Ok11dGV4TG9jayBsKGZsYWctPkluaXRGbGFn
SWZOZWNlc3NhcnkoKSk7CisgICAgICAgIGZsYWctPnZhbGlkYXRvciA9IHNyYy52YWxpZGF0b3I7
CisgICAgICAgIGZsYWctPm1vZGlmaWVkID0gc3JjLm1vZGlmaWVkOworICAgICAgICBmbGFnLT5v
bl9jb21tYW5kX2xpbmUgPSBzcmMub25fY29tbWFuZF9saW5lOworICAgICAgICBpZiAoZmxhZy0+
Y291bnRlciAhPSBzcmMuY291bnRlciB8fAorICAgICAgICAgICAgQ2hhbmdlZERpcmVjdGx5KGZs
YWcsIHNyYy5kZWZhdWx0X3ZhbHVlLCBmbGFnLT5kZWYpKSB7CisgICAgICAgICAgcmVzdG9yZWQg
PSB0cnVlOworICAgICAgICAgIENvcHkoc3JjLm9wLCBzcmMuZGVmYXVsdF92YWx1ZSwgZmxhZy0+
ZGVmKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZmxhZy0+Y291bnRlciAhPSBzcmMuY291bnRl
ciB8fAorICAgICAgICAgICAgQ2hhbmdlZERpcmVjdGx5KGZsYWcsIHNyYy5jdXJyZW50LCBmbGFn
LT5jdXIpKSB7CisgICAgICAgICAgcmVzdG9yZWQgPSB0cnVlOworICAgICAgICAgIENvcHkoc3Jj
Lm9wLCBzcmMuY3VycmVudCwgZmxhZy0+Y3VyKTsKKyAgICAgICAgICBVcGRhdGVDb3B5KGZsYWcp
OworICAgICAgICAgIGZsYWctPkludm9rZUNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICAgIH0K
KworICAgICAgaWYgKHJlc3RvcmVkKSB7CisgICAgICAgIGZsYWctPmNvdW50ZXIrKzsKKworICAg
ICAgICAvLyBSZXZhbGlkYXRlIHRoZSBmbGFnIGJlY2F1c2UgdGhlIHZhbGlkYXRvciBtaWdodCBz
dG9yZSBzdGF0ZSBiYXNlZAorICAgICAgICAvLyBvbiB0aGUgZmxhZydzIHZhbHVlLCB3aGljaCBq
dXN0IGNoYW5nZWQgZHVlIHRvIHRoZSByZXN0b3JlLgorICAgICAgICAvLyBGYWlsaW5nIHZhbGlk
YXRpb24gaXMgaWdub3JlZCBiZWNhdXNlIGl0J3MgYXNzdW1lZCB0aGF0IHRoZSBmbGFnCisgICAg
ICAgIC8vIHdhcyB2YWxpZCBwcmV2aW91c2x5IGFuZCB0aGVyZSdzIGxpdHRsZSB0aGF0IGNhbiBi
ZSBkb25lIGFib3V0IGl0CisgICAgICAgIC8vIGhlcmUsIGFueXdheS4KKyAgICAgICAgZmxhZy0+
VmFsaWRhdGVJbnB1dFZhbHVlKGZsYWctPkN1cnJlbnRWYWx1ZSgpKTsKKworICAgICAgICBBQlNM
X0lOVEVSTkFMX0xPRygKKyAgICAgICAgICAgIElORk8sIGFic2w6OlN0ckNhdCgiUmVzdG9yZSBz
YXZlZCB2YWx1ZSBvZiAiLCBmbGFnLT5OYW1lKCksICI6ICIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5wYXJzZShzcmMubWFyc2hhbGxpbmdfb3AsIHNyYy5jdXJyZW50KSkpOwor
ICAgICAgfQorICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0IFNhdmVkRmxhZyB7Cisg
ICAgYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZTsKKyAgICBGbGFnT3BGbiBvcDsKKyAgICBGbGFnTWFy
c2hhbGxpbmdPcEZuIG1hcnNoYWxsaW5nX29wOworICAgIGludDY0X3QgY291bnRlcjsKKyAgICBi
b29sIG1vZGlmaWVkOworICAgIGJvb2wgb25fY29tbWFuZF9saW5lOworICAgIGJvb2wgKCp2YWxp
ZGF0b3IpKCk7CisgICAgY29uc3Qgdm9pZCogY3VycmVudDsgICAgICAgIC8vIG51bGxwdHIgYWZ0
ZXIgcmVzdG9yZQorICAgIGNvbnN0IHZvaWQqIGRlZmF1bHRfdmFsdWU7ICAvLyBudWxscHRyIGFm
dGVyIHJlc3RvcmUKKyAgfTsKKworICBzdGQ6OnZlY3RvcjxTYXZlZEZsYWc+IGJhY2t1cF9yZWdp
c3RyeV87CisKKyAgRmxhZ1NhdmVySW1wbChjb25zdCBGbGFnU2F2ZXJJbXBsJik7ICAvLyBubyBj
b3B5aW5nIQorICB2b2lkIG9wZXJhdG9yPShjb25zdCBGbGFnU2F2ZXJJbXBsJik7Cit9OworCitG
bGFnU2F2ZXI6OkZsYWdTYXZlcigpIDogaW1wbF8obmV3IEZsYWdTYXZlckltcGwoKSkgeworICBp
bXBsXy0+U2F2ZUZyb21SZWdpc3RyeSgpOworfQorCit2b2lkIEZsYWdTYXZlcjo6SWdub3JlKCkg
eworICBkZWxldGUgaW1wbF87CisgIGltcGxfID0gbnVsbHB0cjsKK30KKworRmxhZ1NhdmVyOjp+
RmxhZ1NhdmVyKCkgeworICBpZiAoIWltcGxfKSByZXR1cm47CisKKyAgaW1wbF8tPlJlc3RvcmVU
b1JlZ2lzdHJ5KCk7CisgIGRlbGV0ZSBpbXBsXzsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEdl
dEFsbEZsYWdzKCkKKy8vICAgIFRoZSBtYWluIHdheSB0aGUgRmxhZ1JlZ2lzdHJ5IGNsYXNzIGV4
cG9zZXMgaXRzIGRhdGEuICBUaGlzCisvLyAgICByZXR1cm5zLCBhcyBzdHJpbmdzLCBhbGwgdGhl
IGluZm8gYWJvdXQgYWxsIHRoZSBmbGFncyBpbgorLy8gICAgdGhlIG1haW4gcmVnaXN0cnksIHNv
cnRlZCBmaXJzdCBieSBmaWxlbmFtZSB0aGV5IGFyZSBkZWZpbmVkCisvLyAgICBpbiwgYW5kIHRo
ZW4gYnkgZmxhZ25hbWUuCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdHJ1Y3QgRmlsZW5hbWVGbGFnbmFt
ZUxlc3MgeworICBib29sIG9wZXJhdG9yKCkoY29uc3QgQ29tbWFuZExpbmVGbGFnSW5mbyYgYSwK
KyAgICAgICAgICAgICAgICAgIGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8mIGIpIGNvbnN0IHsK
KyAgICBpbnQgY21wID0gYWJzbDo6c3RyaW5nX3ZpZXcoYS5maWxlbmFtZSkuY29tcGFyZShiLmZp
bGVuYW1lKTsKKyAgICBpZiAoY21wICE9IDApIHJldHVybiBjbXAgPCAwOworICAgIHJldHVybiBh
Lm5hbWUgPCBiLm5hbWU7CisgIH0KK307CisKK3ZvaWQgRmlsbENvbW1hbmRMaW5lRmxhZ0luZm8o
Q29tbWFuZExpbmVGbGFnKiBmbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21t
YW5kTGluZUZsYWdJbmZvKiByZXN1bHQpIHsKKyAgcmVzdWx0LT5uYW1lID0gc3RkOjpzdHJpbmco
ZmxhZy0+TmFtZSgpKTsKKyAgcmVzdWx0LT50eXBlID0gc3RkOjpzdHJpbmcoZmxhZy0+VHlwZW5h
bWUoKSk7CisgIHJlc3VsdC0+ZGVzY3JpcHRpb24gPSBmbGFnLT5IZWxwKCk7CisgIHJlc3VsdC0+
ZmlsZW5hbWUgPSBmbGFnLT5GaWxlbmFtZSgpOworCisgIGlmICghZmxhZy0+SXNBYnNlaWxGbGFn
KCkpIHsKKyAgICBpZiAoIWZsYWctPklzTW9kaWZpZWQoKSAmJiBDaGFuZ2VkRGlyZWN0bHkoZmxh
ZywgZmxhZy0+Y3VyLCBmbGFnLT5kZWYpKSB7CisgICAgICBmbGFnLT5tb2RpZmllZCA9IHRydWU7
CisgICAgfQorICB9CisKKyAgcmVzdWx0LT5jdXJyZW50X3ZhbHVlID0gZmxhZy0+Q3VycmVudFZh
bHVlKCk7CisgIHJlc3VsdC0+ZGVmYXVsdF92YWx1ZSA9IGZsYWctPkRlZmF1bHRWYWx1ZSgpOwor
ICByZXN1bHQtPmlzX2RlZmF1bHQgPSAhZmxhZy0+SXNNb2RpZmllZCgpOworICByZXN1bHQtPmhh
c192YWxpZGF0b3JfZm4gPSBmbGFnLT5IYXNWYWxpZGF0b3JGbigpOworICBhYnNsOjpNdXRleExv
Y2sgbChmbGFnLT5Jbml0RmxhZ0lmTmVjZXNzYXJ5KCkpOworICByZXN1bHQtPmZsYWdfcHRyID0g
ZmxhZy0+SXNBYnNlaWxGbGFnKCkgPyBudWxscHRyIDogZmxhZy0+Y3VyOworfQorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitDb21tYW5kTGluZUZsYWcqIEZpbmRDb21tYW5kTGluZUZsYWcoYWJzbDo6c3Ry
aW5nX3ZpZXcgbmFtZSkgeworICBpZiAobmFtZS5lbXB0eSgpKSByZXR1cm4gbnVsbHB0cjsKKyAg
RmxhZ1JlZ2lzdHJ5KiBjb25zdCByZWdpc3RyeSA9IEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0
cnkoKTsKKyAgRmxhZ1JlZ2lzdHJ5TG9jayBmcmwocmVnaXN0cnkpOworCisgIHJldHVybiByZWdp
c3RyeS0+RmluZEZsYWdMb2NrZWQobmFtZSk7Cit9CisKK0NvbW1hbmRMaW5lRmxhZyogRmluZFJl
dGlyZWRGbGFnKGFic2w6OnN0cmluZ192aWV3IG5hbWUpIHsKKyAgRmxhZ1JlZ2lzdHJ5KiBjb25z
dCByZWdpc3RyeSA9IEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0cnkoKTsKKyAgRmxhZ1JlZ2lz
dHJ5TG9jayBmcmwocmVnaXN0cnkpOworCisgIHJldHVybiByZWdpc3RyeS0+RmluZFJldGlyZWRG
bGFnTG9ja2VkKG5hbWUpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIEZvckVhY2hGbGFn
VW5sb2NrZWQoc3RkOjpmdW5jdGlvbjx2b2lkKENvbW1hbmRMaW5lRmxhZyopPiB2aXNpdG9yKSB7
CisgIEZsYWdSZWdpc3RyeSogY29uc3QgcmVnaXN0cnkgPSBGbGFnUmVnaXN0cnk6Okdsb2JhbFJl
Z2lzdHJ5KCk7CisgIGZvciAoRmxhZ1JlZ2lzdHJ5OjpGbGFnQ29uc3RJdGVyYXRvciBpID0gcmVn
aXN0cnktPmZsYWdzXy5iZWdpbigpOworICAgICAgIGkgIT0gcmVnaXN0cnktPmZsYWdzXy5lbmQo
KTsgKytpKSB7CisgICAgdmlzaXRvcihpLT5zZWNvbmQpOworICB9Cit9CisKK3ZvaWQgRm9yRWFj
aEZsYWcoc3RkOjpmdW5jdGlvbjx2b2lkKENvbW1hbmRMaW5lRmxhZyopPiB2aXNpdG9yKSB7Cisg
IEZsYWdSZWdpc3RyeSogY29uc3QgcmVnaXN0cnkgPSBGbGFnUmVnaXN0cnk6Okdsb2JhbFJlZ2lz
dHJ5KCk7CisgIEZsYWdSZWdpc3RyeUxvY2sgZnJsKHJlZ2lzdHJ5KTsKKyAgRm9yRWFjaEZsYWdV
bmxvY2tlZCh2aXNpdG9yKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBHZXRBbGxGbGFn
cyhzdGQ6OnZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiogT1VUUFVUKSB7CisgIGZsYWdzX2lu
dGVybmFsOjpGb3JFYWNoRmxhZyhbJl0oQ29tbWFuZExpbmVGbGFnKiBmbGFnKSB7CisgICAgaWYg
KGZsYWctPklzUmV0aXJlZCgpKSByZXR1cm47CisKKyAgICBDb21tYW5kTGluZUZsYWdJbmZvIGZp
OworICAgIEZpbGxDb21tYW5kTGluZUZsYWdJbmZvKGZsYWcsICZmaSk7CisgICAgT1VUUFVULT5w
dXNoX2JhY2soZmkpOworICB9KTsKKworICAvLyBOb3cgc29ydCB0aGUgZmxhZ3MsIGZpcnN0IGJ5
IGZpbGVuYW1lIHRoZXkgb2NjdXIgaW4sIHRoZW4gYWxwaGFiZXRpY2FsbHkKKyAgc3RkOjpzb3J0
KE9VVFBVVC0+YmVnaW4oKSwgT1VUUFVULT5lbmQoKSwgRmlsZW5hbWVGbGFnbmFtZUxlc3MoKSk7
Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgUmVnaXN0ZXJDb21tYW5kTGluZUZsYWcoQ29t
bWFuZExpbmVGbGFnKiBmbGFnKSB7CisgIEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0cnkoKS0+
UmVnaXN0ZXJGbGFnKGZsYWcpOworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworYm9vbCBSZXRpcmUoRmxhZ09wRm4gb3BzLCBGbGFnTWFyc2hhbGxpbmdPcEZuIG1hcnNoYWxs
aW5nX29wcywKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgYXV0byogZmxhZyA9
IG5ldyBDb21tYW5kTGluZUZsYWcoCisgICAgICBuYW1lLAorICAgICAgLypoZWxwX3RleHQ9Ki9h
YnNsOjpmbGFnc19pbnRlcm5hbDo6SGVscFRleHQ6OkZyb21TdGF0aWNDU3RyaW5nKG51bGxwdHIp
LAorICAgICAgLypmaWxlbmFtZV9hcmc9Ki8iUkVUSVJFRCIsIG9wcywgbWFyc2hhbGxpbmdfb3Bz
LAorICAgICAgLyppbml0aWFsX3ZhbHVlX2dlbj0qL251bGxwdHIsCisgICAgICAvKnJldGlyZWRf
YXJnPSovdHJ1ZSwgbnVsbHB0ciwgbnVsbHB0cik7CisgIEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVn
aXN0cnkoKS0+UmVnaXN0ZXJGbGFnKGZsYWcpOworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworYm9vbCBJc1JldGlyZWRGbGFnKGFic2w6OnN0cmluZ192aWV3IG5hbWUsIGJv
b2wqIHR5cGVfaXNfYm9vbCkgeworICBhc3NlcnQoIW5hbWUuZW1wdHkoKSk7CisgIENvbW1hbmRM
aW5lRmxhZyogZmxhZyA9IGZsYWdzX2ludGVybmFsOjpGaW5kUmV0aXJlZEZsYWcobmFtZSk7Cisg
IGlmIChmbGFnID09IG51bGxwdHIpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgYXNzZXJ0
KHR5cGVfaXNfYm9vbCk7CisgICp0eXBlX2lzX2Jvb2wgPSBmbGFnLT5Jc09mVHlwZTxib29sPigp
OworICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcmVn
aXN0cnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3JlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI3NTY2ZmJmNGFiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZmxhZ3MvaW50ZXJuYWwvcmVnaXN0cnkuaApAQCAtMCwwICsxLDE2NyBAQAorLy8KKy8v
IENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfRkxB
R1NfSU5URVJOQUxfUkVHSVNUUllfSF8KKyNkZWZpbmUgQUJTTF9GTEFHU19JTlRFUk5BTF9SRUdJ
U1RSWV9IXworCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVk
ZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImFi
c2wvZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmgiCisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LyBHbG9iYWwgZmxhZ3MgcmVnaXN0cnkgQVBJLgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3Bh
Y2UgZmxhZ3NfaW50ZXJuYWwgeworCisvLyBDb21tYW5kTGluZUZsYWdJbmZvIGhvbGRzIGFsbCBp
bmZvcm1hdGlvbiBmb3IgYSBmbGFnLgorc3RydWN0IENvbW1hbmRMaW5lRmxhZ0luZm8geworICBz
dGQ6OnN0cmluZyBuYW1lOyAgICAgICAgICAgLy8gdGhlIG5hbWUgb2YgdGhlIGZsYWcKKyAgc3Rk
OjpzdHJpbmcgdHlwZTsgICAgICAgICAgIC8vIERPIE5PVCB1c2UuIFVzZSBmbGFnLT5Jc09mVHlw
ZTxUPigpIGluc3RlYWQuCisgIHN0ZDo6c3RyaW5nIGRlc2NyaXB0aW9uOyAgICAvLyB0aGUgImhl
bHAgdGV4dCIgYXNzb2NpYXRlZCB3aXRoIHRoZSBmbGFnCisgIHN0ZDo6c3RyaW5nIGN1cnJlbnRf
dmFsdWU7ICAvLyB0aGUgY3VycmVudCB2YWx1ZSwgYXMgYSBzdGQ6OnN0cmluZworICBzdGQ6OnN0
cmluZyBkZWZhdWx0X3ZhbHVlOyAgLy8gdGhlIGRlZmF1bHQgdmFsdWUsIGFzIGEgc3RkOjpzdHJp
bmcKKyAgc3RkOjpzdHJpbmcgZmlsZW5hbWU7ICAgICAgIC8vICdjbGVhbmVkJyB2ZXJzaW9uIG9m
IGZpbGVuYW1lIGhvbGRpbmcgdGhlIGZsYWcKKyAgYm9vbCBoYXNfdmFsaWRhdG9yX2ZuOyAgLy8g
dHJ1ZSBpZiBSZWdpc3RlckZsYWdWYWxpZGF0b3IgY2FsbGVkIG9uIHRoaXMgZmxhZworCisgIGJv
b2wgaXNfZGVmYXVsdDsgIC8vIHRydWUgaWYgdGhlIGZsYWcgaGFzIHRoZSBkZWZhdWx0IHZhbHVl
IGFuZAorICAgICAgICAgICAgICAgICAgICAvLyBoYXMgbm90IGJlZW4gc2V0IGV4cGxpY2l0bHkg
ZnJvbSB0aGUgY21kbGluZQorICAgICAgICAgICAgICAgICAgICAvLyBvciB2aWEgU2V0Q29tbWFu
ZExpbmVPcHRpb24uCisKKyAgLy8gbnVsbHB0ciBmb3IgQUJTTF9GTEFHLiAgQSBwb2ludGVyIHRv
IHRoZSBmbGFnJ3MgY3VycmVudCB2YWx1ZQorICAvLyBvdGhlcndpc2UuICBFLmcuLCBmb3IgREVG
SU5FX2ludDMyKGZvbywgLi4uKSwgZmxhZ19wdHIgd2lsbCBiZQorICAvLyAmRkxBR1NfZm9vLgor
ICBjb25zdCB2b2lkKiBmbGFnX3B0cjsKK307CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
dm9pZCBGaWxsQ29tbWFuZExpbmVGbGFnSW5mbyhDb21tYW5kTGluZUZsYWcqIGZsYWcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRMaW5lRmxhZ0luZm8qIHJlc3VsdCk7CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29tbWFuZExpbmVGbGFnKiBGaW5kQ29tbWFuZExp
bmVGbGFnKGFic2w6OnN0cmluZ192aWV3IG5hbWUpOworQ29tbWFuZExpbmVGbGFnKiBGaW5kUmV0
aXJlZEZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSk7CisKKy8vIEV4ZWN1dGVzIHNwZWNpZmll
ZCB2aXNpdG9yIGZvciBlYWNoIG5vbi1yZXRpcmVkIGZsYWcgaW4gdGhlIHJlZ2lzdHJ5LgorLy8g
UmVxdWlyZXMgdGhlIGNhbGxlciBob2xkIHRoZSByZWdpc3RyeSBsb2NrLgordm9pZCBGb3JFYWNo
RmxhZ1VubG9ja2VkKHN0ZDo6ZnVuY3Rpb248dm9pZChDb21tYW5kTGluZUZsYWcqKT4gdmlzaXRv
cik7CisvLyBFeGVjdXRlcyBzcGVjaWZpZWQgdmlzaXRvciBmb3IgZWFjaCBub24tcmV0aXJlZCBm
bGFnIGluIHRoZSByZWdpc3RyeS4gV2hpbGUKKy8vIGNhbGxiYWNrIGFyZSBleGVjdXRlZCwgdGhl
IHJlZ2lzdHJ5IGlzIGxvY2tlZCBhbmQgY2FuJ3QgYmUgY2hhbmdlZC4KK3ZvaWQgRm9yRWFjaEZs
YWcoc3RkOjpmdW5jdGlvbjx2b2lkKENvbW1hbmRMaW5lRmxhZyopPiB2aXNpdG9yKTsKKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBTdG9yZSB0aGUgbGlzdCBvZiBhbGwgZmxhZ3MgaW4g
Kk9VVFBVVCwgc29ydGVkIGJ5IGZpbGUuCit2b2lkIEdldEFsbEZsYWdzKHN0ZDo6dmVjdG9yPENv
bW1hbmRMaW5lRmxhZ0luZm8+KiBPVVRQVVQpOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K2Jvb2wgUmVnaXN0ZXJDb21tYW5kTGluZUZsYWcoQ29tbWFuZExpbmVGbGFnKik7CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIFJldGlyZWQgcmVnaXN0cmF0aW9uczoKKy8vCisvLyBSZXRp
cmVkIGZsYWcgcmVnaXN0cmF0aW9ucyBhcmUgdHJlYXRlZCBzcGVjaWFsbHkuIEEgJ3JldGlyZWQn
IGZsYWcgaXMKKy8vIHByb3ZpZGVkIG9ubHkgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBhdXRvbWF0
ZWQgaW52b2NhdGlvbnMgdGhhdCBzdGlsbAorLy8gbmFtZSBpdC4gIEEgJ3JldGlyZWQnIGZsYWc6
CisvLyAgIC0gaXMgbm90IGJvdW5kIHRvIGEgQysrIEZMQUdTXyByZWZlcmVuY2UuCisvLyAgIC0g
aGFzIGEgdHlwZSBhbmQgYSB2YWx1ZSwgYnV0IHRoYXQgdmFsdWUgaXMgaW50ZW50aW9uYWxseSBp
bmFjY2Vzc2libGUuCisvLyAgIC0gZG9lcyBub3QgYXBwZWFyIGluIC0taGVscCBtZXNzYWdlcy4K
Ky8vICAgLSBpcyBmdWxseSBzdXBwb3J0ZWQgYnkgX2FsbF8gZmxhZyBwYXJzaW5nIHJvdXRpbmVz
LgorLy8gICAtIGNvbnN1bWVzIGFyZ3Mgbm9ybWFsbHksIGFuZCBjb21wbGFpbnMgYWJvdXQgdHlw
ZSBtaXNtYXRjaGVzIGluIGl0cworLy8gICAgIGFyZ3VtZW50LgorLy8gICAtIGVtaXRzIGEgY29t
cGxhaW50IGJ1dCBkb2VzIG5vdCBkaWUgKGUuZy4gTE9HKEVSUk9SKSkgaWYgaXQgaXMKKy8vICAg
ICBhY2Nlc3NlZCBieSBuYW1lIHRocm91Z2ggdGhlIGZsYWdzIEFQSSBmb3IgcGFyc2luZyBvciBv
dGhlcndpc2UuCisvLworLy8gVGhlIHJlZ2lzdHJhdGlvbnMgZm9yIGEgZmxhZyBoYXBwZW4gaW4g
YW4gdW5zcGVjaWZpZWQgb3JkZXIgYXMgdGhlCisvLyBpbml0aWFsaXplcnMgZm9yIHRoZSBuYW1l
c3BhY2Utc2NvcGUgb2JqZWN0cyBvZiBhIHByb2dyYW0gYXJlIHJ1bi4KKy8vIEFueSBudW1iZXIg
b2Ygd2VhayByZWdpc3RyYXRpb25zIGZvciBhIGZsYWcgY2FuIHdlYWtseSBkZWZpbmUgdGhlIGZs
YWcuCisvLyBPbmUgbm9uLXdlYWsgcmVnaXN0cmF0aW9uIHdpbGwgdXBncmFkZSB0aGUgZmxhZyBm
cm9tIHdlYWsgdG8gbm9uLXdlYWsuCisvLyBGdXJ0aGVyIHdlYWsgcmVnaXN0cmF0aW9ucyBvZiBh
IG5vbi13ZWFrIGZsYWcgYXJlIGlnbm9yZWQuCisvLworLy8gVGhpcyBtZWNoYW5pc20gaXMgZGVz
aWduZWQgdG8gc3VwcG9ydCBtb3ZpbmcgZGVhZCBmbGFncyBpbnRvIGEKKy8vICdncmF2ZXlhcmQn
IGxpYnJhcnkuICBBbiBleGFtcGxlIG1pZ3JhdGlvbjoKKy8vCisvLyAgIDA6IFJlbW92ZSByZWZl
cmVuY2VzIHRvIHRoaXMgRkxBR1NfZmxhZ25hbWUgaW4gdGhlIEMrKyBjb2RlYmFzZS4KKy8vICAg
MTogUmVnaXN0ZXIgYXMgJ3JldGlyZWQnIGluIG9sZF9saWIuCisvLyAgIDI6IE1ha2Ugb2xkX2xp
YiBkZXBlbmQgb24gZ3JhdmV5YXJkLgorLy8gICAzOiBBZGQgYSByZWR1bmRhbnQgJ3JldGlyZWQn
IHJlZ2lzdHJhdGlvbiB0byBncmF2ZXlhcmQuCisvLyAgIDQ6IFJlbW92ZSB0aGUgb2xkX2xpYiAn
cmV0aXJlZCcgcmVnaXN0cmF0aW9uLgorLy8gICA1OiBFdmVudHVhbGx5IGRlbGV0ZSB0aGUgZ3Jh
dmV5YXJkIHJlZ2lzdHJhdGlvbiBlbnRpcmVseS4KKy8vCisvLyBSZXR1cm5zIGJvb2wgdG8gZW5h
YmxlIHVzZSBpbiBuYW1lc3BhY2Utc2NvcGUgaW5pdGlhbGl6ZXJzLgorLy8gRm9yIGV4YW1wbGU6
CisvLworLy8gICBzdGF0aWMgY29uc3QgYm9vbCBkdW1teSA9IGJhc2U6OlJldGlyZWRGbGFnPGlu
dDMyX3Q+KCJteWZsYWciKTsKKy8vCisvLyBPciB0byBkZWNsYXJlIHNldmVyYWwgYXQgb25jZToK
Ky8vCisvLyAgIHN0YXRpYyBib29sIGR1bW1pZXNbXSA9IHsKKy8vICAgICAgIGJhc2U6OlJldGly
ZWRGbGFnPHN0ZDo6c3RyaW5nPigic29tZV9zdHJpbmdfZmxhZyIpLAorLy8gICAgICAgYmFzZTo6
UmV0aXJlZEZsYWc8ZG91YmxlPigic29tZV9kb3VibGVfZmxhZyIpLAorLy8gICAgICAgYmFzZTo6
UmV0aXJlZEZsYWc8aW50MzJfdD4oInNvbWVfaW50MzJfZmxhZyIpCisvLyAgIH07CisKKy8vIFJl
dGlyZSBmbGFnIHdpdGggbmFtZSAibmFtZSIgYW5kIHR5cGUgaW5kaWNhdGVkIGJ5IG9wcy4KK2Jv
b2wgUmV0aXJlKEZsYWdPcEZuIG9wcywgRmxhZ01hcnNoYWxsaW5nT3BGbiBtYXJzaGFsbGluZ19v
cHMsCisgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lKTsKKworLy8gUmVnaXN0ZXJlZCBhIHJl
dGlyZWQgZmxhZyB3aXRoIG5hbWUgJ2ZsYWdfbmFtZScgYW5kIHR5cGUgJ1QnLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitpbmxpbmUgYm9vbCBSZXRpcmVkRmxhZyhjb25zdCBjaGFyKiBmbGFnX25h
bWUpIHsKKyAgcmV0dXJuIGZsYWdzX2ludGVybmFsOjpSZXRpcmUoZmxhZ3NfaW50ZXJuYWw6OkZs
YWdPcHM8VD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzX2ludGVybmFs
OjpGbGFnTWFyc2hhbGxpbmdPcHM8VD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfbmFtZSk7Cit9CisKKy8vIElmIHRoZSBmbGFnIGlzIHJldGlyZWQsIHJldHVybnMgdHJ1
ZSBhbmQgaW5kaWNhdGVzIGluIHwqdHlwZV9pc19ib29sfAorLy8gd2hldGhlciB0aGUgdHlwZSBv
ZiB0aGUgcmV0aXJlZCBmbGFnIGlzIGEgYm9vbC4KKy8vIE9ubHkgdG8gYmUgY2FsbGVkIGJ5IGNv
ZGUgdGhhdCBuZWVkcyB0byBleHBsaWNpdGx5IGlnbm9yZSByZXRpcmVkIGZsYWdzLgorYm9vbCBJ
c1JldGlyZWRGbGFnKGFic2w6OnN0cmluZ192aWV3IG5hbWUsIGJvb2wqIHR5cGVfaXNfYm9vbCk7
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFNhdmVzIHRoZSBzdGF0ZXMgKHZhbHVlLCBk
ZWZhdWx0IHZhbHVlLCB3aGV0aGVyIHRoZSB1c2VyIGhhcyBzZXQKKy8vIHRoZSBmbGFnLCByZWdp
c3RlcmVkIHZhbGlkYXRvcnMsIGV0Yykgb2YgYWxsIGZsYWdzLCBhbmQgcmVzdG9yZXMKKy8vIHRo
ZW0gd2hlbiB0aGUgRmxhZ1NhdmVyIGlzIGRlc3Ryb3llZC4KKy8vCisvLyBUaGlzIGNsYXNzIGlz
IHRocmVhZC1zYWZlLiAgSG93ZXZlciwgaXRzIGRlc3RydWN0b3Igd3JpdGVzIHRvCisvLyBleGFj
dGx5IHRoZSBzZXQgb2YgZmxhZ3MgdGhhdCBoYXZlIGNoYW5nZWQgdmFsdWUgZHVyaW5nIGl0cwor
Ly8gbGlmZXRpbWUsIHNvIGNvbmN1cnJlbnQgX2RpcmVjdF8gYWNjZXNzIHRvIHRob3NlIGZsYWdz
CisvLyAoaS5lLiBGTEFHU19mb28gaW5zdGVhZCBvZiB7R2V0LFNldH1Db21tYW5kTGluZU9wdGlv
bigpKSBpcyB1bnNhZmUuCisKK2NsYXNzIEZsYWdTYXZlciB7CisgcHVibGljOgorICBGbGFnU2F2
ZXIoKTsKKyAgfkZsYWdTYXZlcigpOworCisgIEZsYWdTYXZlcihjb25zdCBGbGFnU2F2ZXImKSA9
IGRlbGV0ZTsKKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRmxhZ1NhdmVyJikgPSBkZWxldGU7CisK
KyAgLy8gUHJldmVudHMgc2F2ZXIgZnJvbSByZXN0b3JpbmcgdGhlIHNhdmVkIHN0YXRlIG9mIGZs
YWdzLgorICB2b2lkIElnbm9yZSgpOworCisgcHJpdmF0ZToKKyAgY2xhc3MgRmxhZ1NhdmVySW1w
bCogaW1wbF87ICAvLyB3ZSB1c2UgcGltcGwgaGVyZSB0byBrZWVwIEFQSSBzdGVhZHkKK307CisK
K30gIC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKwor
I2VuZGlmICAvLyBBQlNMX0ZMQUdTX0lOVEVSTkFMX1JFR0lTVFJZX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2VyYXNlZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFs
L3R5cGVfZXJhc2VkLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4y
OTg0MjkxYzg3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3R5cGVf
ZXJhc2VkLmNjCkBAIC0wLDAgKzEsMTA2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFi
c2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3R5cGVfZXJh
c2VkLmgiCisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNp
bmNsdWRlICJhYnNsL2ZsYWdzL2NvbmZpZy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvdXNhZ2Vf
Y29uZmlnLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKworbmFtZXNwYWNl
IGFic2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsIHsKKworYm9vbCBHZXRDb21tYW5kTGlu
ZU9wdGlvbihhYnNsOjpzdHJpbmdfdmlldyBuYW1lLCBzdGQ6OnN0cmluZyogdmFsdWUpIHsKKyAg
aWYgKG5hbWUuZW1wdHkoKSkgcmV0dXJuIGZhbHNlOworICBhc3NlcnQodmFsdWUpOworCisgIENv
bW1hbmRMaW5lRmxhZyogZmxhZyA9IGZsYWdzX2ludGVybmFsOjpGaW5kQ29tbWFuZExpbmVGbGFn
KG5hbWUpOworICBpZiAoZmxhZyA9PSBudWxscHRyIHx8IGZsYWctPklzUmV0aXJlZCgpKSB7Cisg
ICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgKnZhbHVlID0gZmxhZy0+Q3VycmVudFZhbHVlKCk7
CisgIHJldHVybiB0cnVlOworfQorCitib29sIEdldENvbW1hbmRMaW5lRmxhZ0luZm8oYWJzbDo6
c3RyaW5nX3ZpZXcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kTGlu
ZUZsYWdJbmZvKiBPVVRQVVQpIHsKKyAgaWYgKG5hbWUuZW1wdHkoKSkgcmV0dXJuIGZhbHNlOwor
CisgIENvbW1hbmRMaW5lRmxhZyogZmxhZyA9IGZsYWdzX2ludGVybmFsOjpGaW5kQ29tbWFuZExp
bmVGbGFnKG5hbWUpOworICBpZiAoZmxhZyA9PSBudWxscHRyIHx8IGZsYWctPklzUmV0aXJlZCgp
KSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgYXNzZXJ0KE9VVFBVVCk7CisgIEZpbGxD
b21tYW5kTGluZUZsYWdJbmZvKGZsYWcsIE9VVFBVVCk7CisgIHJldHVybiB0cnVlOworfQorCitD
b21tYW5kTGluZUZsYWdJbmZvIEdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZShhYnNsOjpzdHJp
bmdfdmlldyBuYW1lKSB7CisgIENvbW1hbmRMaW5lRmxhZ0luZm8gaW5mbzsKKyAgaWYgKCFHZXRD
b21tYW5kTGluZUZsYWdJbmZvKG5hbWUsICZpbmZvKSkgeworICAgIEFCU0xfSU5URVJOQUxfTE9H
KEZBVEFMLCBhYnNsOjpTdHJDYXQoIkZsYWcgJyIsIG5hbWUsICInIGRvZXMgbm90IGV4aXN0Iikp
OworICB9CisgIHJldHVybiBpbmZvOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIFNldENv
bW1hbmRMaW5lT3B0aW9uKGFic2w6OnN0cmluZ192aWV3IG5hbWUsIGFic2w6OnN0cmluZ192aWV3
IHZhbHVlKSB7CisgIHJldHVybiBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKG5hbWUsIHZh
bHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc19pbnRlcm5h
bDo6U0VUX0ZMQUdTX1ZBTFVFKTsKK30KKworYm9vbCBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhN
b2RlKGFic2w6OnN0cmluZ192aWV3IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmxhZ1NldHRpbmdNb2RlIHNldF9tb2RlKSB7CisgIENvbW1hbmRMaW5lRmxhZyog
ZmxhZyA9IGZsYWdzX2ludGVybmFsOjpGaW5kQ29tbWFuZExpbmVGbGFnKG5hbWUpOworCisgIGlm
ICghZmxhZyB8fCBmbGFnLT5Jc1JldGlyZWQoKSkgcmV0dXJuIGZhbHNlOworCisgIHN0ZDo6c3Ry
aW5nIGVycm9yOworICBpZiAoIWZsYWctPlNldEZyb21TdHJpbmcodmFsdWUsIHNldF9tb2RlLCBr
UHJvZ3JhbW1hdGljQ2hhbmdlLCAmZXJyb3IpKSB7CisgICAgLy8gRXJyb3JzIGhlcmUgYXJlIGFs
bCBvZiB0aGUgZm9ybTogdGhlIHByb3ZpZGVkIG5hbWUgd2FzIGEgcmVjb2duaXplZAorICAgIC8v
IGZsYWcsIGJ1dCB0aGUgdmFsdWUgd2FzIGludmFsaWQgKGJhZCB0eXBlLCBvciB2YWxpZGF0aW9u
IGZhaWxlZCkuCisgICAgZmxhZ3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdlRXJyb3IoZXJyb3IsIGZh
bHNlKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworYm9vbCBJc1ZhbGlkRmxhZ1ZhbHVlKGFic2w6OnN0cmluZ192aWV3IG5h
bWUsIGFic2w6OnN0cmluZ192aWV3IHZhbHVlKSB7CisgIENvbW1hbmRMaW5lRmxhZyogZmxhZyA9
IGZsYWdzX2ludGVybmFsOjpGaW5kQ29tbWFuZExpbmVGbGFnKG5hbWUpOworCisgIHJldHVybiBm
bGFnICE9IG51bGxwdHIgJiYKKyAgICAgICAgIChmbGFnLT5Jc1JldGlyZWQoKSB8fCBmbGFnLT5W
YWxpZGF0ZUlucHV0VmFsdWUodmFsdWUpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBT
cGVjaWZpZWRPbkNvbW1hbmRMaW5lKGFic2w6OnN0cmluZ192aWV3IG5hbWUpIHsKKyAgQ29tbWFu
ZExpbmVGbGFnKiBmbGFnID0gZmxhZ3NfaW50ZXJuYWw6OkZpbmRDb21tYW5kTGluZUZsYWcobmFt
ZSk7CisgIGlmIChmbGFnICE9IG51bGxwdHIgJiYgIWZsYWctPklzUmV0aXJlZCgpKSB7CisgICAg
cmV0dXJuIGZsYWctPklzU3BlY2lmaWVkT25Db21tYW5kTGluZSgpOworICB9CisgIHJldHVybiBm
YWxzZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvdHlwZV9lcmFzZWQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2ZsYWdzL2ludGVybmFsL3R5cGVfZXJhc2VkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjI0OWQzNmI5ZjMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvaW50ZXJuYWwvdHlwZV9lcmFzZWQuaApAQCAtMCwwICsxLDk3IEBACisvLworLy8gQ29w
eXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9GTEFHU19J
TlRFUk5BTF9UWVBFX0VSQVNFRF9IXworI2RlZmluZSBBQlNMX0ZMQUdTX0lOVEVSTkFMX1RZUEVf
RVJBU0VEX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2lu
dGVybmFsL2NvbW1hbmRsaW5lZmxhZy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwv
cmVnaXN0cnkuaCIKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFJlZ2lzdHJ5IGludGVyZmFjZXMgb3Bl
cmF0aW5nIG9uIHR5cGUgZXJhc2VkIGhhbmRsZXMuCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIElmIGEgZmxhZyBuYW1lZCAibmFtZSIgZXhpc3Rz
LCBzdG9yZSBpdHMgY3VycmVudCB2YWx1ZSBpbiAqT1VUUFVUCisvLyBhbmQgcmV0dXJuIHRydWUu
ICBFbHNlIHJldHVybiBmYWxzZSB3aXRob3V0IGNoYW5naW5nICpPVVRQVVQuCisvLyBUaHJlYWQt
c2FmZS4KK2Jvb2wgR2V0Q29tbWFuZExpbmVPcHRpb24oYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSwg
c3RkOjpzdHJpbmcqIHZhbHVlKTsKKworLy8gSWYgYSBmbGFnIG5hbWVkICJuYW1lIiBleGlzdHMs
IHN0b3JlIGl0cyBpbmZvcm1hdGlvbiBpbiAqT1VUUFVUCisvLyBhbmQgcmV0dXJuIHRydWUuICBF
bHNlIHJldHVybiBmYWxzZSB3aXRob3V0IGNoYW5naW5nICpPVVRQVVQuCisvLyBUaHJlYWQtc2Fm
ZS4KK2Jvb2wgR2V0Q29tbWFuZExpbmVGbGFnSW5mbyhhYnNsOjpzdHJpbmdfdmlldyBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRMaW5lRmxhZ0luZm8qIE9VVFBVVCk7
CisKKy8vIFJldHVybnMgdGhlIENvbW1hbmRMaW5lRmxhZ0luZm8gb2YgdGhlIGZsYWduYW1lLiAg
ZXhpdCgpIHdpdGggYW4KKy8vIGVycm9yIGNvZGUgaWYgbmFtZSBub3QgZm91bmQuCisvLyBUaHJl
YWQtc2FmZS4KK0NvbW1hbmRMaW5lRmxhZ0luZm8gR2V0Q29tbWFuZExpbmVGbGFnSW5mb09yRGll
KGFic2w6OnN0cmluZ192aWV3IG5hbWUpOworCisvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBmbGFn
IG5hbWVkICJuYW1lIiB0byB2YWx1ZS4gIElmIHN1Y2Nlc3NmdWwsCisvLyByZXR1cm5zIHRydWUu
ICBJZiBub3Qgc3VjY2Vzc2Z1bCAoZS5nLiwgdGhlIGZsYWcgd2FzIG5vdCBmb3VuZCBvcgorLy8g
dGhlIHZhbHVlIGlzIG5vdCBhIHZhbGlkIHZhbHVlKSwgcmV0dXJucyBmYWxzZS4KKy8vIFRocmVh
ZC1zYWZlLgorYm9vbCBTZXRDb21tYW5kTGluZU9wdGlvbihhYnNsOjpzdHJpbmdfdmlldyBuYW1l
LCBhYnNsOjpzdHJpbmdfdmlldyB2YWx1ZSk7CisKK2Jvb2wgU2V0Q29tbWFuZExpbmVPcHRpb25X
aXRoTW9kZShhYnNsOjpzdHJpbmdfdmlldyBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZsYWdTZXR0aW5nTW9kZSBzZXRfbW9kZSk7CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworLy8gUmV0dXJucyB0cnVlIGlmZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZSB0cnVlOgorLy8gKGEpICJuYW1lIiBuYW1lcyBhIHJlZ2lzdGVyZWQgZmxhZwor
Ly8gKGIpICJ2YWx1ZSIgY2FuIGJlIHBhcnNlZCBzdWNjZXNmdWxseSBhY2NvcmRpbmcgdG8gdGhl
IHR5cGUgb2YgdGhlIGZsYWcKKy8vIChjKSBwYXJzZWQgdmFsdWUgcGFzc2VzIGFueSB2YWxpZGF0
b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBmbGFnCitib29sIElzVmFsaWRGbGFnVmFsdWUoYWJzbDo6
c3RyaW5nX3ZpZXcgbmFtZSwgYWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWUpOworCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy8vIFJldHVybnMgdHJ1ZSBpZmYgYSBmbGFnIG5hbWVkICJuYW1lIiB3
YXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUKKy8vIChlaXRoZXIgZGlyZWN0bHksIG9y
IHZpYSBvbmUgb2YgLS1mbGFnZmlsZSBvciAtLWZyb21lbnYgb3IgLS10cnlmcm9tZW52KS4KKy8v
CisvLyBBbnkgbm9uLWNvbW1hbmQtbGluZSBtb2RpZmljYXRpb24gb2YgdGhlIGZsYWcgZG9lcyBu
b3QgYWZmZWN0IHRoZQorLy8gcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24uICBTbyBmb3IgZXhhbXBs
ZSwgaWYgYSBmbGFnIHdhcyBwYXNzZWQgb24KKy8vIHRoZSBjb21tYW5kIGxpbmUgYnV0IHRoZW4g
cmVzZXQgdmlhIFNFVF9GTEFHU19ERUZBVUxULCB0aGlzCisvLyBmdW5jdGlvbiB3aWxsIHN0aWxs
IHJldHVybiB0cnVlLgorYm9vbCBTcGVjaWZpZWRPbkNvbW1hbmRMaW5lKGFic2w6OnN0cmluZ192
aWV3IG5hbWUpOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIElmIGEgZmxhZyB3aXRo
IHNwZWNpZmllZCAibmFtZSIgZXhpc3RzIGFuZCBoYXMgdHlwZSBULCBzdG9yZQorLy8gaXRzIGN1
cnJlbnQgdmFsdWUgaW4gKmRzdCBhbmQgcmV0dXJuIHRydWUuICBFbHNlIHJldHVybiBmYWxzZQor
Ly8gd2l0aG91dCB0b3VjaGluZyAqZHN0LiAgVCBtdXN0IG9iZXkgYWxsIG9mIHRoZSByZXF1aXJl
bWVudHMgZm9yCisvLyB0eXBlcyBwYXNzZWQgdG8gREVGSU5FX0ZMQUcuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2lubGluZSBib29sIEdldEJ5TmFtZShhYnNsOjpzdHJpbmdfdmlldyBuYW1lLCBU
KiBkc3QpIHsKKyAgQ29tbWFuZExpbmVGbGFnKiBmbGFnID0gZmxhZ3NfaW50ZXJuYWw6OkZpbmRD
b21tYW5kTGluZUZsYWcobmFtZSk7CisgIGlmICghZmxhZykgcmV0dXJuIGZhbHNlOworCisgIGlm
IChhdXRvIHZhbCA9IGZsYWctPkdldDxUPigpKSB7CisgICAgKmRzdCA9ICp2YWw7CisgICAgcmV0
dXJuIHRydWU7CisgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBm
bGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0ZM
QUdTX0lOVEVSTkFMX1RZUEVfRVJBU0VEX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRl
cm5hbC90eXBlX2VyYXNlZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvdHlwZV9lcmFz
ZWRfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWM3NDlh
NjA3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2VyYXNl
ZF90ZXN0LmNjCkBAIC0wLDAgKzEsMTQ3IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2Vy
YXNlZC5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
I2luY2x1ZGUgImFic2wvZmxhZ3MvZmxhZy5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9y
eS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisKK0FCU0xfRkxBRyhpbnQs
IGludF9mbGFnLCAxLCAiaW50X2ZsYWcgaGVscCIpOworQUJTTF9GTEFHKHN0ZDo6c3RyaW5nLCBz
dHJpbmdfZmxhZywgImRmbHQiLCAic3RyaW5nX2ZsYWcgaGVscCIpOworQUJTTF9SRVRJUkVEX0ZM
QUcoYm9vbCwgYm9vbF9yZXRpcmVkX2ZsYWcsIGZhbHNlLCAiYm9vbF9yZXRpcmVkX2ZsYWcgaGVs
cCIpOworCituYW1lc3BhY2UgeworCituYW1lc3BhY2UgZmxhZ3MgPSBhYnNsOjpmbGFnc19pbnRl
cm5hbDsKKworY2xhc3MgVHlwZUVyYXNlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cisg
cHJvdGVjdGVkOgorICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgeyBmbGFnX3NhdmVyXyA9IGFic2w6
Om1ha2VfdW5pcXVlPGZsYWdzOjpGbGFnU2F2ZXI+KCk7IH0KKyAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlIHsgZmxhZ19zYXZlcl8ucmVzZXQoKTsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjp1bmlx
dWVfcHRyPGZsYWdzOjpGbGFnU2F2ZXI+IGZsYWdfc2F2ZXJfOworfTsKKworLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworVEVTVF9GKFR5cGVFcmFzZWRUZXN0LCBUZXN0R2V0Q29tbWFuZExpbmVPcHRpb24pIHsK
KyAgc3RkOjpzdHJpbmcgdmFsdWU7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRDb21tYW5kTGlu
ZU9wdGlvbigiaW50X2ZsYWciLCAmdmFsdWUpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAiMSIpOwor
CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRDb21tYW5kTGluZU9wdGlvbigic3RyaW5nX2ZsYWci
LCAmdmFsdWUpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAiZGZsdCIpOworCisgIEVYUEVDVF9GQUxT
RShmbGFnczo6R2V0Q29tbWFuZExpbmVPcHRpb24oImJvb2xfcmV0aXJlZF9mbGFnIiwgJnZhbHVl
KSk7CisKKyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpHZXRDb21tYW5kTGluZU9wdGlvbigidW5rbm93
bl9mbGFnIiwgJnZhbHVlKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihUeXBlRXJh
c2VkVGVzdCwgVGVzdFNldENvbW1hbmRMaW5lT3B0aW9uKSB7CisgIEVYUEVDVF9UUlVFKGZsYWdz
OjpTZXRDb21tYW5kTGluZU9wdGlvbigiaW50X2ZsYWciLCAiMTAxIikpOworICBFWFBFQ1RfRVEo
YWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDEwMSk7CisKKyAgRVhQRUNUX1RSVUUoZmxh
Z3M6OlNldENvbW1hbmRMaW5lT3B0aW9uKCJzdHJpbmdfZmxhZyIsICJhc2RmZ2giKSk7CisgIEVY
UEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3N0cmluZ19mbGFnKSwgImFzZGZnaCIpOworCisg
IEVYUEVDVF9GQUxTRShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRpb24oImJvb2xfcmV0aXJlZF9m
bGFnIiwgInRydWUiKSk7CisKKyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9w
dGlvbigidW5rbm93bl9mbGFnIiwgInRydWUiKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
U1RfRihUeXBlRXJhc2VkVGVzdCwgVGVzdFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGVfU0VU
X0ZMQUdTX1ZBTFVFKSB7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlv
bldpdGhNb2RlKCJpbnRfZmxhZyIsICIxMDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdTX1ZBTFVFKSk7CisgIEVYUEVD
VF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2ludF9mbGFnKSwgMTAxKTsKKworICBFWFBFQ1RfVFJV
RShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgic3RyaW5nX2ZsYWciLCAiYXNk
ZmdoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSkpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFH
U19zdHJpbmdfZmxhZyksICJhc2RmZ2giKTsKKworICBFWFBFQ1RfRkFMU0UoZmxhZ3M6OlNldENv
bW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoImJvb2xfcmV0aXJlZF9mbGFnIiwgInRydWUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNF
VF9GTEFHU19WQUxVRSkpOworCisgIEVYUEVDVF9GQUxTRShmbGFnczo6U2V0Q29tbWFuZExpbmVP
cHRpb25XaXRoTW9kZSgidW5rbm93bl9mbGFnIiwgInRydWUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSkp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoVHlwZUVyYXNlZFRlc3QsIFRlc3RTZXRD
b21tYW5kTGluZU9wdGlvbldpdGhNb2RlX1NFVF9GTEFHX0lGX0RFRkFVTFQpIHsKKyAgRVhQRUNU
X1RSVUUoZmxhZ3M6OlNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoImludF9mbGFnIiwgIjEw
MSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzOjpTRVRfRkxBR19JRl9ERUZBVUxUKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZM
QUdTX2ludF9mbGFnKSwgMTAxKTsKKworICAvLyBUaGlzIHNlbWFudGljIGlzIGJyb2tlbi4gV2Ug
cmV0dXJuIHRydWUgaW5zdGVhZCBvZiBmYWxzZS4gVmFsdWUgaXMgbm90CisgIC8vIHVwZGF0ZWQu
CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJpbnRf
ZmxhZyIsICIyMDIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFnczo6U0VUX0ZMQUdfSUZfREVGQVVMVCkpOworICBFWFBFQ1RfRVEoYWJzbDo6
R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDEwMSk7CisKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OlNl
dENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInN0cmluZ19mbGFnIiwgImFzZGZnaCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjpTRVRf
RkxBR19JRl9ERUZBVUxUKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3N0cmlu
Z19mbGFnKSwgImFzZGZnaCIpOworCisgIEVYUEVDVF9GQUxTRShmbGFnczo6U2V0Q29tbWFuZExp
bmVPcHRpb25XaXRoTW9kZSgiYm9vbF9yZXRpcmVkX2ZsYWciLCAidHJ1ZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdf
SUZfREVGQVVMVCkpOworCisgIEVYUEVDVF9GQUxTRShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRp
b25XaXRoTW9kZSgidW5rbm93bl9mbGFnIiwgInRydWUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNFVF9GTEFHX0lGX0RFRkFVTFQp
KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFR5cGVFcmFzZWRUZXN0LCBUZXN0U2V0
Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZV9TRVRfRkxBR1NfREVGQVVMVCkgeworICBFWFBFQ1Rf
VFJVRShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgiaW50X2ZsYWciLCAiMTAx
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxh
Z3M6OlNFVF9GTEFHU19ERUZBVUxUKSk7CisKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OlNldENvbW1h
bmRMaW5lT3B0aW9uV2l0aE1vZGUoInN0cmluZ19mbGFnIiwgImFzZGZnaCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjpTRVRfRkxBR1Nf
REVGQVVMVCkpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19zdHJpbmdfZmxhZyks
ICJhc2RmZ2giKTsKKworICBFWFBFQ1RfRkFMU0UoZmxhZ3M6OlNldENvbW1hbmRMaW5lT3B0aW9u
V2l0aE1vZGUoImJvb2xfcmV0aXJlZF9mbGFnIiwgInRydWUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNFVF9GTEFHU19ERUZBVUxU
KSk7CisKKyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2Rl
KCJ1bmtub3duX2ZsYWciLCAidHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdTX0RFRkFVTFQpKTsKKworICAvLyBU
aGlzIHNob3VsZCBiZSBzdWNjZXNzZnVsbCwgc2luY2UgZmxhZyBpcyBzdGlsbCBpcyBub3Qgc2V0
CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJpbnRf
ZmxhZyIsICIyMDIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFnczo6U0VUX0ZMQUdfSUZfREVGQVVMVCkpOworICBFWFBFQ1RfRVEoYWJzbDo6
R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDIwMik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
U1RfRihUeXBlRXJhc2VkVGVzdCwgVGVzdElzVmFsaWRGbGFnVmFsdWUpIHsKKyAgRVhQRUNUX1RS
VUUoZmxhZ3M6OklzVmFsaWRGbGFnVmFsdWUoImludF9mbGFnIiwgIjU3IikpOworICBFWFBFQ1Rf
VFJVRShmbGFnczo6SXNWYWxpZEZsYWdWYWx1ZSgiaW50X2ZsYWciLCAiLTEwMSIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKGZsYWdzOjpJc1ZhbGlkRmxhZ1ZhbHVlKCJpbnRfZmxhZyIsICIxLjEiKSk7CisK
KyAgRVhQRUNUX1RSVUUoZmxhZ3M6OklzVmFsaWRGbGFnVmFsdWUoInN0cmluZ19mbGFnIiwgIiMl
XiMlXiQlREdIREckVyVhZHNmIikpOworCisgIEVYUEVDVF9UUlVFKGZsYWdzOjpJc1ZhbGlkRmxh
Z1ZhbHVlKCJib29sX3JldGlyZWRfZmxhZyIsICJ0cnVlIikpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxh
Z3MvaW50ZXJuYWwvdXNhZ2UuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjAzMDQ4NTE0YWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwv
dXNhZ2UuY2MKQEAgLTAsMCArMSwzODMgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJz
ZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuaCIK
KworI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL2Zs
YWdzL2ZsYWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3BhdGhfdXRpbC5oIgor
I2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcHJvZ3JhbV9uYW1lLmgiCisjaW5jbHVkZSAi
YWJzbC9mbGFncy91c2FnZV9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvYXNjaWku
aCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9zdHJfc3BsaXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIK
KyNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgorCitBQlNMX0ZMQUcoYm9v
bCwgaGVscCwgZmFsc2UsCisgICAgICAgICAgInNob3cgaGVscCBvbiBpbXBvcnRhbnQgZmxhZ3Mg
Zm9yIHRoaXMgYmluYXJ5IFt0aXA6IGFsbCBmbGFncyBjYW4gIgorICAgICAgICAgICJoYXZlIHR3
byBkYXNoZXNdIik7CitBQlNMX0ZMQUcoYm9vbCwgaGVscGZ1bGwsIGZhbHNlLCAic2hvdyBoZWxw
IG9uIGFsbCBmbGFncyIpOworQUJTTF9GTEFHKGJvb2wsIGhlbHBzaG9ydCwgZmFsc2UsCisgICAg
ICAgICAgInNob3cgaGVscCBvbiBvbmx5IHRoZSBtYWluIG1vZHVsZSBmb3IgdGhpcyBwcm9ncmFt
Iik7CitBQlNMX0ZMQUcoYm9vbCwgaGVscHBhY2thZ2UsIGZhbHNlLAorICAgICAgICAgICJzaG93
IGhlbHAgb24gYWxsIG1vZHVsZXMgaW4gdGhlIG1haW4gcGFja2FnZSIpOworQUJTTF9GTEFHKGJv
b2wsIHZlcnNpb24sIGZhbHNlLCAic2hvdyB2ZXJzaW9uIGFuZCBidWlsZCBpbmZvIGFuZCBleGl0
Iik7CitBQlNMX0ZMQUcoYm9vbCwgb25seV9jaGVja19hcmdzLCBmYWxzZSwgImV4aXQgYWZ0ZXIg
Y2hlY2tpbmcgYWxsIGZsYWdzIik7CitBQlNMX0ZMQUcoc3RkOjpzdHJpbmcsIGhlbHBvbiwgIiIs
CisgICAgICAgICAgInNob3cgaGVscCBvbiB0aGUgbW9kdWxlcyBuYW1lZCBieSB0aGlzIGZsYWcg
dmFsdWUiKTsKK0FCU0xfRkxBRyhzdGQ6OnN0cmluZywgaGVscG1hdGNoLCAiIiwKKyAgICAgICAg
ICAic2hvdyBoZWxwIG9uIG1vZHVsZXMgd2hvc2UgbmFtZSBjb250YWlucyB0aGUgc3BlY2lmaWVk
IHN1YnN0ciIpOworCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwg
eworbmFtZXNwYWNlIHsKKworLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGVtaXQgYW4gWE1MIGVs
ZW1lbnQgd2l0aCBgdGFnYCBhbmQgYHRleHRgLgorLy8gSXQgYWRkcyBvcGVuaW5nIGFuZCBjbG9z
aW5nIHRhZ3MgYW5kIGVzY2FwZXMgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0LgorLy8g
Rm9yIGV4YW1wbGU6CisvLyBzdGQ6OmNvdXQgPDwgWE1MRWxlbWVudCgidGl0bGUiLCAiTWlsayAm
IENvb2tpZXMiKTsKKy8vIHByaW50cyAiPHRpdGxlPk1pbGsgJmFtcDsgQ29va2llczwvdGl0bGU+
IgorY2xhc3MgWE1MRWxlbWVudCB7CisgcHVibGljOgorICBYTUxFbGVtZW50KGFic2w6OnN0cmlu
Z192aWV3IHRhZywgYWJzbDo6c3RyaW5nX3ZpZXcgdHh0KQorICAgICAgOiB0YWdfKHRhZyksIHR4
dF8odHh0KSB7fQorCisgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3Ry
ZWFtJiBvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MRWxl
bWVudCYgeG1sX2VsZW0pIHsKKyAgICBvdXQgPDwgIjwiIDw8IHhtbF9lbGVtLnRhZ18gPDwgIj4i
OworCisgICAgZm9yIChhdXRvIGMgOiB4bWxfZWxlbS50eHRfKSB7CisgICAgICBzd2l0Y2ggKGMp
IHsKKyAgICAgICAgY2FzZSAnIic6CisgICAgICAgICAgb3V0IDw8ICImcXVvdDsiOworICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlICdcJyc6CisgICAgICAgICAgb3V0IDw8ICImYXBvczsi
OworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICcmJzoKKyAgICAgICAgICBvdXQgPDwg
IiZhbXA7IjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnPCc6CisgICAgICAgICAg
b3V0IDw8ICImbHQ7IjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnPic6CisgICAg
ICAgICAgb3V0IDw8ICImZ3Q7IjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICBvdXQgPDwgYzsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gb3V0IDw8ICI8LyIgPDwgeG1sX2VsZW0udGFnXyA8PCAiPiI7CisgIH0KKwor
IHByaXZhdGU6CisgIGFic2w6OnN0cmluZ192aWV3IHRhZ187CisgIGFic2w6OnN0cmluZ192aWV3
IHR4dF87Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gSGVscGVyIGNsYXNzIHRvIHByZXR0eS1w
cmludCBpbmZvIGFib3V0IGEgZmxhZy4KKworY2xhc3MgRmxhZ0hlbHBQcmV0dHlQcmludGVyIHsK
KyBwdWJsaWM6CisgIC8vIFByZXR0eSBwcmludGVyIGhvbGRzIG9uIHRvIHRoZSBzdGQ6Om9zdHJl
YW0mIHJlZmVyZW5jZSB0byBkaXJlY3QgYW4gb3V0cHV0CisgIC8vIHRvIHRoYXQgc3RyZWFtLgor
ICBGbGFnSGVscFByZXR0eVByaW50ZXIoaW50IG1heF9saW5lX2xlbiwgc3RkOjpvc3RyZWFtKiBv
dXQpCisgICAgICA6IG91dF8oKm91dCksCisgICAgICAgIG1heF9saW5lX2xlbl8obWF4X2xpbmVf
bGVuKSwKKyAgICAgICAgbGluZV9sZW5fKDApLAorICAgICAgICBmaXJzdF9saW5lXyh0cnVlKSB7
fQorCisgIHZvaWQgV3JpdGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBib29sIHdyYXBfbGluZSA9
IGZhbHNlKSB7CisgICAgLy8gRW1wdHkgc3RkOjpzdHJpbmcgLSBkbyBub3RoaW5nLgorICAgIGlm
IChzdHIuZW1wdHkoKSkgcmV0dXJuOworCisgICAgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3Zp
ZXc+IHRva2VuczsKKyAgICBpZiAod3JhcF9saW5lKSB7CisgICAgICBmb3IgKGF1dG8gbGluZSA6
IGFic2w6OlN0clNwbGl0KHN0ciwgYWJzbDo6QnlBbnlDaGFyKCJcblxyIikpKSB7CisgICAgICAg
IGlmICghdG9rZW5zLmVtcHR5KCkpIHsKKyAgICAgICAgICAvLyBLZWVwIGxpbmUgc2VwYXJhdG9y
cyBpbiB0aGUgaW5wdXQgc3RkOjpzdHJpbmcuCisgICAgICAgICAgdG9rZW5zLnB1c2hfYmFjaygi
XG4iKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8gdG9rZW4gOgorICAgICAgICAgICAg
IGFic2w6OlN0clNwbGl0KGxpbmUsIGFic2w6OkJ5QW55Q2hhcigiIFx0IiksIGFic2w6OlNraXBF
bXB0eSgpKSkgeworICAgICAgICAgIHRva2Vucy5wdXNoX2JhY2sodG9rZW4pOworICAgICAgICB9
CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHRva2Vucy5wdXNoX2JhY2soc3RyKTsKKyAg
ICB9CisKKyAgICBmb3IgKGF1dG8gdG9rZW4gOiB0b2tlbnMpIHsKKyAgICAgIGJvb2wgbmV3X2xp
bmUgPSAobGluZV9sZW5fID09IDApOworCisgICAgICAvLyBSZXNwZWN0IGxpbmUgc2VwYXJhdG9y
cyBpbiB0aGUgaW5wdXQgc3RkOjpzdHJpbmcuCisgICAgICBpZiAodG9rZW4gPT0gIlxuIikgewor
ICAgICAgICBFbmRMaW5lKCk7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICAv
LyBXcml0ZSB0aGUgdG9rZW4sIGVuZGluZyB0aGUgc3RkOjpzdHJpbmcgZmlyc3QgaWYgbmVjZXNz
YXJ5L3Bvc3NpYmxlLgorICAgICAgaWYgKCFuZXdfbGluZSAmJiAobGluZV9sZW5fICsgdG9rZW4u
c2l6ZSgpID49IG1heF9saW5lX2xlbl8pKSB7CisgICAgICAgIEVuZExpbmUoKTsKKyAgICAgICAg
bmV3X2xpbmUgPSB0cnVlOworICAgICAgfQorCisgICAgICBpZiAobmV3X2xpbmUpIHsKKyAgICAg
ICAgU3RhcnRMaW5lKCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBvdXRfIDw8ICcgJzsKKyAg
ICAgICAgKytsaW5lX2xlbl87CisgICAgICB9CisKKyAgICAgIG91dF8gPDwgdG9rZW47CisgICAg
ICBsaW5lX2xlbl8gKz0gdG9rZW4uc2l6ZSgpOworICAgIH0KKyAgfQorCisgIHZvaWQgU3RhcnRM
aW5lKCkgeworICAgIGlmIChmaXJzdF9saW5lXykgeworICAgICAgb3V0XyA8PCAiICAgICI7Cisg
ICAgICBsaW5lX2xlbl8gPSA0OworICAgICAgZmlyc3RfbGluZV8gPSBmYWxzZTsKKyAgICB9IGVs
c2UgeworICAgICAgb3V0XyA8PCAiICAgICAgIjsKKyAgICAgIGxpbmVfbGVuXyA9IDY7CisgICAg
fQorICB9CisgIHZvaWQgRW5kTGluZSgpIHsKKyAgICBvdXRfIDw8ICdcbic7CisgICAgbGluZV9s
ZW5fID0gMDsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpvc3RyZWFtJiBvdXRfOworICBjb25z
dCBpbnQgbWF4X2xpbmVfbGVuXzsKKyAgaW50IGxpbmVfbGVuXzsKKyAgYm9vbCBmaXJzdF9saW5l
XzsKK307CisKK3ZvaWQgRmxhZ0hlbHBIdW1hblJlYWRhYmxlKGNvbnN0IGZsYWdzX2ludGVybmFs
OjpDb21tYW5kTGluZUZsYWcmIGZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om9zdHJlYW0qIG91dCkgeworICBGbGFnSGVscFByZXR0eVByaW50ZXIgcHJpbnRlcig4MCwgb3V0
KTsgIC8vIE1heCBsaW5lIGxlbmd0aCBpcyA4MC4KKworICAvLyBGbGFnIG5hbWUuCisgIHByaW50
ZXIuV3JpdGUoYWJzbDo6U3RyQ2F0KCItIiwgZmxhZy5OYW1lKCkpKTsKKworICAvLyBGbGFnIGhl
bHAuCisgIHByaW50ZXIuV3JpdGUoYWJzbDo6U3RyQ2F0KCIoIiwgZmxhZy5IZWxwKCksICIpOyIp
LCAvKndyYXBfbGluZT0qL3RydWUpOworCisgIC8vIEZsYWcgZGF0YSB0eXBlIChmb3IgVjEgZmxh
Z3Mgb25seSkuCisgIGlmICghZmxhZy5Jc0Fic2VpbEZsYWcoKSAmJiAhZmxhZy5Jc1JldGlyZWQo
KSkgeworICAgIHByaW50ZXIuV3JpdGUoYWJzbDo6U3RyQ2F0KCJ0eXBlOiAiLCBmbGFnLlR5cGVu
YW1lKCksICI7IikpOworICB9CisKKyAgLy8gVGhlIGxpc3RlZCBkZWZhdWx0IHZhbHVlIHdpbGwg
YmUgdGhlIGFjdHVhbCBkZWZhdWx0IGZyb20gdGhlIGZsYWcKKyAgLy8gZGVmaW5pdGlvbiBpbiB0
aGUgb3JpZ2luYXRpbmcgc291cmNlIGZpbGUsIHVubGVzcyB0aGUgdmFsdWUgaGFzCisgIC8vIHN1
YnNlcXVlbnRseSBiZWVuIG1vZGlmaWVkIHVzaW5nIFNldENvbW1hbmRMaW5lT3B0aW9uKCkgd2l0
aCBtb2RlCisgIC8vIFNFVF9GTEFHU19ERUZBVUxULgorICBzdGQ6OnN0cmluZyBkZmx0X3ZhbCA9
IGZsYWcuRGVmYXVsdFZhbHVlKCk7CisgIGlmIChmbGFnLklzT2ZUeXBlPHN0ZDo6c3RyaW5nPigp
KSB7CisgICAgZGZsdF92YWwgPSBhYnNsOjpTdHJDYXQoIlwiIiwgZGZsdF92YWwsICJcIiIpOwor
ICB9CisgIHByaW50ZXIuV3JpdGUoYWJzbDo6U3RyQ2F0KCJkZWZhdWx0OiAiLCBkZmx0X3ZhbCwg
IjsiKSk7CisKKyAgaWYgKGZsYWcuSXNNb2RpZmllZCgpKSB7CisgICAgc3RkOjpzdHJpbmcgY3Vy
cl92YWwgPSBmbGFnLkN1cnJlbnRWYWx1ZSgpOworICAgIGlmIChmbGFnLklzT2ZUeXBlPHN0ZDo6
c3RyaW5nPigpKSB7CisgICAgICBjdXJyX3ZhbCA9IGFic2w6OlN0ckNhdCgiXCIiLCBjdXJyX3Zh
bCwgIlwiIik7CisgICAgfQorICAgIHByaW50ZXIuV3JpdGUoYWJzbDo6U3RyQ2F0KCJjdXJyZW50
bHk6ICIsIGN1cnJfdmFsLCAiOyIpKTsKKyAgfQorCisgIHByaW50ZXIuRW5kTGluZSgpOworfQor
CisvLyBTaG93cyBoZWxwIGZvciBldmVyeSBmaWxlbmFtZSB3aGljaCBtYXRjaGVzIGFueSBvZiB0
aGUgZmlsdGVycworLy8gSWYgZmlsdGVycyBhcmUgZW1wdHksIHNob3dzIGhlbHAgZm9yIGV2ZXJ5
IGZpbGUuCisvLyBJZiBhIGZsYWcncyBoZWxwIG1lc3NhZ2UgaGFzIGJlZW4gc3RyaXBwZWQgKGUu
Zy4gYnkgYWRkaW5nICcjZGVmaW5lCisvLyBTVFJJUF9GTEFHX0hFTFAgMScgdGhlbiB0aGlzIGZs
YWcgd2lsbCBub3QgYmUgZGlzcGxheWVkIGJ5ICctLWhlbHAnCisvLyBhbmQgaXRzIHZhcmlhbnRz
Lgordm9pZCBGbGFnc0hlbHBJbXBsKHN0ZDo6b3N0cmVhbSYgb3V0LCBmbGFnc19pbnRlcm5hbDo6
RmxhZ0tpbmRGaWx0ZXIgZmlsdGVyX2NiLAorICAgICAgICAgICAgICAgICAgIEhlbHBGb3JtYXQg
Zm9ybWF0LCBhYnNsOjpzdHJpbmdfdmlldyBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpIHsKKyAgaWYg
KGZvcm1hdCA9PSBIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSkgeworICAgIG91dCA8PCBmbGFn
c19pbnRlcm5hbDo6U2hvcnRQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSA8PCAiOiAiCisgICAgICAg
IDw8IHByb2dyYW1fdXNhZ2VfbWVzc2FnZSA8PCAiXG5cbiI7CisgIH0gZWxzZSB7CisgICAgLy8g
WE1MIHNjaGVtYSBpcyBub3QgYSBwYXJ0IG9mIG91ciBwdWJsaWMgQVBJIGZvciBub3cuCisgICAg
b3V0IDw8ICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PlxuIgorICAgICAgICAvLyBUaGUgZG9jdW1l
bnQuCisgICAgICAgIDw8ICI8QWxsRmxhZ3M+XG4iCisgICAgICAgIC8vIFRoZSBwcm9ncmFtIG5h
bWUgYW5kIHVzYWdlLgorICAgICAgICA8PCBYTUxFbGVtZW50KCJwcm9ncmFtIiwgZmxhZ3NfaW50
ZXJuYWw6OlNob3J0UHJvZ3JhbUludm9jYXRpb25OYW1lKCkpCisgICAgICAgIDw8ICdcbicKKyAg
ICAgICAgPDwgWE1MRWxlbWVudCgidXNhZ2UiLCBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpIDw8ICdc
bic7CisgIH0KKworICAvLyBNYXAgb2YgcGFja2FnZSBuYW1lIHRvCisgIC8vICAgbWFwIG9mIGZp
bGUgbmFtZSB0bworICAvLyAgICAgdmVjdG9yIG9mIGZsYWdzIGluIHRoZSBmaWxlLgorICAvLyBU
aGlzIG1hcCBpcyB1c2VkIHRvIG91dHB1dCBtYXRjaGluZyBmbGFncyBncm91cGVkIGJ5IHBhY2th
Z2UgYW5kIGZpbGUKKyAgLy8gbmFtZS4KKyAgc3RkOjptYXA8c3RkOjpzdHJpbmcsCisgICAgICAg
ICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rv
cjxjb25zdCBmbGFnc19pbnRlcm5hbDo6Q29tbWFuZExpbmVGbGFnKj4+PgorICAgICAgbWF0Y2hp
bmdfZmxhZ3M7CisKKyAgZmxhZ3NfaW50ZXJuYWw6OkZvckVhY2hGbGFnKFsmXShmbGFnc19pbnRl
cm5hbDo6Q29tbWFuZExpbmVGbGFnKiBmbGFnKSB7CisgICAgc3RkOjpzdHJpbmcgZmxhZ19maWxl
bmFtZSA9IGZsYWctPkZpbGVuYW1lKCk7CisKKyAgICAvLyBJZ25vcmUgcmV0aXJlZCBmbGFncy4K
KyAgICBpZiAoZmxhZy0+SXNSZXRpcmVkKCkpIHJldHVybjsKKworICAgIC8vIElmIHRoZSBmbGFn
IGhhcyBiZWVuIHN0cmlwcGVkLCBwcmV0ZW5kIHRoYXQgaXQgZG9lc24ndCBleGlzdC4KKyAgICBp
ZiAoZmxhZy0+SGVscCgpID09IGZsYWdzX2ludGVybmFsOjprU3RyaXBwZWRGbGFnSGVscCkgcmV0
dXJuOworCisgICAgLy8gTWFrZSBzdXJlIGZsYWcgc2F0aXNmaWVzIHRoZSBmaWx0ZXIKKyAgICBp
ZiAoIWZpbHRlcl9jYiB8fCAhZmlsdGVyX2NiKGZsYWdfZmlsZW5hbWUpKSByZXR1cm47CisKKyAg
ICBtYXRjaGluZ19mbGFnc1tzdGQ6OnN0cmluZyhmbGFnc19pbnRlcm5hbDo6UGFja2FnZShmbGFn
X2ZpbGVuYW1lKSldCisgICAgICAgICAgICAgICAgICBbZmxhZ19maWxlbmFtZV0KKyAgICAgICAg
ICAgICAgICAgICAgICAucHVzaF9iYWNrKGZsYWcpOworICB9KTsKKworICBhYnNsOjpzdHJpbmdf
dmlldworICAgICAgcGFja2FnZV9zZXBhcmF0b3I7ICAgICAgICAgICAgIC8vIGNvbnRyb2xzIGJs
YW5rIGxpbmVzIGJldHdlZW4gcGFja2FnZXMuCisgIGFic2w6OnN0cmluZ192aWV3IGZpbGVfc2Vw
YXJhdG9yOyAgLy8gY29udHJvbHMgYmxhbmsgbGluZXMgYmV0d2VlbiBmaWxlcy4KKyAgZm9yIChj
b25zdCBhdXRvJiBwYWNrYWdlIDogbWF0Y2hpbmdfZmxhZ3MpIHsKKyAgICBpZiAoZm9ybWF0ID09
IEhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlKSB7CisgICAgICBvdXQgPDwgcGFja2FnZV9zZXBh
cmF0b3I7CisgICAgICBwYWNrYWdlX3NlcGFyYXRvciA9ICJcblxuIjsKKyAgICB9CisKKyAgICBm
aWxlX3NlcGFyYXRvciA9ICIiOworICAgIGZvciAoY29uc3QgYXV0byYgZmxhZ3NfaW5fZmlsZSA6
IHBhY2thZ2Uuc2Vjb25kKSB7CisgICAgICBpZiAoZm9ybWF0ID09IEhlbHBGb3JtYXQ6OmtIdW1h
blJlYWRhYmxlKSB7CisgICAgICAgIG91dCA8PCBmaWxlX3NlcGFyYXRvciA8PCAiICBGbGFncyBm
cm9tICIgPDwgZmxhZ3NfaW5fZmlsZS5maXJzdAorICAgICAgICAgICAgPDwgIjpcbiI7CisgICAg
ICAgIGZpbGVfc2VwYXJhdG9yID0gIlxuIjsKKyAgICAgIH0KKworICAgICAgZm9yIChjb25zdCBh
dXRvKiBmbGFnIDogZmxhZ3NfaW5fZmlsZS5zZWNvbmQpIHsKKyAgICAgICAgZmxhZ3NfaW50ZXJu
YWw6OkZsYWdIZWxwKG91dCwgKmZsYWcsIGZvcm1hdCk7CisgICAgICB9CisgICAgfQorICB9CisK
KyAgaWYgKGZvcm1hdCA9PSBIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSkgeworICAgIGlmIChm
aWx0ZXJfY2IgJiYgbWF0Y2hpbmdfZmxhZ3MuZW1wdHkoKSkgeworICAgICAgb3V0IDw8ICIgIE5v
IG1vZHVsZXMgbWF0Y2hlZDogdXNlIC1oZWxwZnVsbFxuIjsKKyAgICB9CisgIH0gZWxzZSB7Cisg
ICAgLy8gVGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuCisgICAgb3V0IDw8ICI8L0FsbEZsYWdzPlxu
IjsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFByb2R1
Y2VzIHRoZSBoZWxwIG1lc3NhZ2UgZGVzY3JpYmluZyBzcGVjaWZpYyBmbGFnLgordm9pZCBGbGFn
SGVscChzdGQ6Om9zdHJlYW0mIG91dCwgY29uc3QgZmxhZ3NfaW50ZXJuYWw6OkNvbW1hbmRMaW5l
RmxhZyYgZmxhZywKKyAgICAgICAgICAgICAgSGVscEZvcm1hdCBmb3JtYXQpIHsKKyAgaWYgKGZv
cm1hdCA9PSBIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSkKKyAgICBmbGFnc19pbnRlcm5hbDo6
RmxhZ0hlbHBIdW1hblJlYWRhYmxlKGZsYWcsICZvdXQpOworfQorCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gUHJvZHVjZXMgdGhlIGhlbHAgbWVzc2FnZXMgZm9yIGFsbCBmbGFncyBtYXRjaGluZyB0aGUg
ZmlsdGVyLgorLy8gSWYgZmlsdGVyIGlzIGVtcHR5IHByb2R1Y2VzIGhlbHAgbWVzc2FnZXMgZm9y
IGFsbCBmbGFncy4KK3ZvaWQgRmxhZ3NIZWxwKHN0ZDo6b3N0cmVhbSYgb3V0LCBhYnNsOjpzdHJp
bmdfdmlldyBmaWx0ZXIsIEhlbHBGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAgYWJzbDo6
c3RyaW5nX3ZpZXcgcHJvZ3JhbV91c2FnZV9tZXNzYWdlKSB7CisgIGZsYWdzX2ludGVybmFsOjpG
bGFnS2luZEZpbHRlciBmaWx0ZXJfY2IgPSBbJl0oYWJzbDo6c3RyaW5nX3ZpZXcgZmlsZW5hbWUp
IHsKKyAgICByZXR1cm4gZmlsdGVyLmVtcHR5KCkgfHwgZmlsZW5hbWUuZmluZChmaWx0ZXIpICE9
IGFic2w6OnN0cmluZ192aWV3OjpucG9zOworICB9OworICBmbGFnc19pbnRlcm5hbDo6RmxhZ3NI
ZWxwSW1wbChvdXQsIGZpbHRlcl9jYiwgZm9ybWF0LCBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpOwor
fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ2hlY2tzIGFsbCB0aGUgJ3VzYWdlJyBjb21tYW5kIGxp
bmUgZmxhZ3MgdG8gc2VlIGlmIGFueSBoYXZlIGJlZW4gc2V0LgorLy8gSWYgc28sIGhhbmRsZXMg
dGhlbSBhcHByb3ByaWF0ZWx5LgoraW50IEhhbmRsZVVzYWdlRmxhZ3Moc3RkOjpvc3RyZWFtJiBv
dXQsCisgICAgICAgICAgICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldyBwcm9ncmFtX3VzYWdl
X21lc3NhZ2UpIHsKKyAgaWYgKGFic2w6OkdldEZsYWcoRkxBR1NfaGVscHNob3J0KSkgeworICAg
IGZsYWdzX2ludGVybmFsOjpGbGFnc0hlbHBJbXBsKAorICAgICAgICBvdXQsIGZsYWdzX2ludGVy
bmFsOjpHZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBzaG9ydF9mbGFncywKKyAgICAgICAg
SGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUsIHByb2dyYW1fdXNhZ2VfbWVzc2FnZSk7CisgICAg
cmV0dXJuIDE7CisgIH0KKworICBpZiAoYWJzbDo6R2V0RmxhZyhGTEFHU19oZWxwZnVsbCkpIHsK
KyAgICAvLyBzaG93IGFsbCBvcHRpb25zCisgICAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdzSGVscChv
dXQsICIiLCBIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2dyYW1fdXNhZ2VfbWVzc2FnZSk7CisgICAgcmV0dXJuIDE7CisgIH0KKwor
ICBpZiAoIWFic2w6OkdldEZsYWcoRkxBR1NfaGVscG9uKS5lbXB0eSgpKSB7CisgICAgZmxhZ3Nf
aW50ZXJuYWw6OkZsYWdzSGVscCgKKyAgICAgICAgb3V0LCBhYnNsOjpTdHJDYXQoIi8iLCBhYnNs
OjpHZXRGbGFnKEZMQUdTX2hlbHBvbiksICIuIiksCisgICAgICAgIEhlbHBGb3JtYXQ6OmtIdW1h
blJlYWRhYmxlLCBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpOworICAgIHJldHVybiAxOworICB9CisK
KyAgaWYgKCFhYnNsOjpHZXRGbGFnKEZMQUdTX2hlbHBtYXRjaCkuZW1wdHkoKSkgeworICAgIGZs
YWdzX2ludGVybmFsOjpGbGFnc0hlbHAob3V0LCBhYnNsOjpHZXRGbGFnKEZMQUdTX2hlbHBtYXRj
aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWxwRm9ybWF0OjprSHVtYW5SZWFk
YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1fdXNhZ2VfbWVzc2Fn
ZSk7CisgICAgcmV0dXJuIDE7CisgIH0KKworICBpZiAoYWJzbDo6R2V0RmxhZyhGTEFHU19oZWxw
KSkgeworICAgIGZsYWdzX2ludGVybmFsOjpGbGFnc0hlbHBJbXBsKAorICAgICAgICBvdXQsIGZs
YWdzX2ludGVybmFsOjpHZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBfZmxhZ3MsCisgICAg
ICAgIEhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlLCBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpOwor
CisgICAgb3V0IDw8ICJcblRyeSAtLWhlbHBmdWxsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGZsYWdz
LlxuIjsKKworICAgIHJldHVybiAxOworICB9CisKKyAgaWYgKGFic2w6OkdldEZsYWcoRkxBR1Nf
aGVscHBhY2thZ2UpKSB7CisgICAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdzSGVscEltcGwoCisgICAg
ICAgIG91dCwgZmxhZ3NfaW50ZXJuYWw6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscHBh
Y2thZ2VfZmxhZ3MsCisgICAgICAgIEhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlLCBwcm9ncmFt
X3VzYWdlX21lc3NhZ2UpOworCisgICAgb3V0IDw8ICJcblRyeSAtLWhlbHBmdWxsIHRvIGdldCBh
IGxpc3Qgb2YgYWxsIGZsYWdzLlxuIjsKKworICAgIHJldHVybiAxOworICB9CisKKyAgaWYgKGFi
c2w6OkdldEZsYWcoRkxBR1NfdmVyc2lvbikpIHsKKyAgICBpZiAoZmxhZ3NfaW50ZXJuYWw6Okdl
dFVzYWdlQ29uZmlnKCkudmVyc2lvbl9zdHJpbmcpCisgICAgICBvdXQgPDwgZmxhZ3NfaW50ZXJu
YWw6OkdldFVzYWdlQ29uZmlnKCkudmVyc2lvbl9zdHJpbmcoKTsKKyAgICAvLyBVbmxpa2UgaGVs
cCwgd2UgbWF5IGJlIGFza2luZyBmb3IgdmVyc2lvbiBpbiBhIHNjcmlwdCwgc28gcmV0dXJuIDAK
KyAgICByZXR1cm4gMDsKKyAgfQorCisgIGlmIChhYnNsOjpHZXRGbGFnKEZMQUdTX29ubHlfY2hl
Y2tfYXJncykpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHJldHVybiAtMTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFs
L3VzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc2MDc1YjA4
MjlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuaApAQCAt
MCwwICsxLDc4IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaWZuZGVmIEFCU0xfRkxBR1NfSU5URVJOQUxfVVNBR0VfSF8KKyNkZWZpbmUgQUJTTF9G
TEFHU19JTlRFUk5BTF9VU0FHRV9IXworCisjaW5jbHVkZSA8aW9zZndkPgorI2luY2x1ZGUgPHN0
cmluZz4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvZGVjbGFyZS5oIgorI2luY2x1ZGUgImFic2wv
ZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cmluZ192aWV3LmgiCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBVc2FnZSByZXBvcnRpbmcgaW50
ZXJmYWNlcworCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgewor
CisvLyBUaGUgZm9ybWF0IHRvIHJlcG9ydCB0aGUgaGVscCBtZXNzYWdlcyBpbi4KK2VudW0gY2xh
c3MgSGVscEZvcm1hdCB7CisgIGtIdW1hblJlYWRhYmxlLAorfTsKKworLy8gT3V0cHV0cyB0aGUg
aGVscCBtZXNzYWdlIGRlc2NyaWJpbmcgc3BlY2lmaWMgZmxhZy4KK3ZvaWQgRmxhZ0hlbHAoc3Rk
Ojpvc3RyZWFtJiBvdXQsIGNvbnN0IGZsYWdzX2ludGVybmFsOjpDb21tYW5kTGluZUZsYWcmIGZs
YWcsCisgICAgICAgICAgICAgIEhlbHBGb3JtYXQgZm9ybWF0ID0gSGVscEZvcm1hdDo6a0h1bWFu
UmVhZGFibGUpOworCisvLyBQcm9kdWNlcyB0aGUgaGVscCBtZXNzYWdlcyBmb3IgYWxsIGZsYWdz
IG1hdGNoaW5nIHRoZSBmaWx0ZXIuIEEgZmxhZyBtYXRjaGVzCisvLyB0aGUgZmlsdGVyIGlmIGl0
IGlzIGRlZmluZWQgaW4gYSBmaWxlIHdpdGggYSBmaWxlbmFtZSB3aGljaCBpbmNsdWRlcworLy8g
ZmlsdGVyIHN0cmluZyBhcyBhIHN1YnN0cmluZy4gWW91IGNhbiB1c2UgJy8nIGFuZCAnLicgdG8g
cmVzdHJpY3QgdGhlCisvLyBtYXRjaGluZyB0byBhIHNwZWNpZmljIGZpbGUgbmFtZXMuIEZvciBl
eGFtcGxlOgorLy8gICBGbGFnc0hlbHAob3V0LCAiL3BhdGgvdG8vZmlsZS4iKTsKKy8vIHJlc3Ry
aWN0cyBoZWxwIHRvIG9ubHkgZmxhZ3Mgd2hpY2ggcmVzaWRlcyBpbiBmaWxlcyBuYW1lZCBsaWtl
OgorLy8gIC4uLi9wYXRoL3RvL2ZpbGUuPGV4dD4KKy8vIGZvciBhbnkgZXh0ZW5zaW9uICdleHQn
LiBJZiB0aGUgZmlsdGVyIGlzIGVtcHR5IHRoaXMgZnVuY3Rpb24gcHJvZHVjZXMgaGVscAorLy8g
bWVzc2FnZXMgZm9yIGFsbCBmbGFncy4KK3ZvaWQgRmxhZ3NIZWxwKHN0ZDo6b3N0cmVhbSYgb3V0
LCBhYnNsOjpzdHJpbmdfdmlldyBmaWx0ZXIsCisgICAgICAgICAgICAgICBIZWxwRm9ybWF0IGZv
cm1hdCwgYWJzbDo6c3RyaW5nX3ZpZXcgcHJvZ3JhbV91c2FnZV9tZXNzYWdlKTsKKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworLy8gSWYgYW55IG9mIHRoZSAndXNhZ2UnIHJlbGF0ZWQgY29tbWFuZCBsaW5l
IGZsYWdzIChsaXN0ZWQgb24gdGhlIGJvdHRvbSBvZgorLy8gdGhpcyBmaWxlKSBoYXMgYmVlbiBz
ZXQgdGhpcyByb3V0aW5lIHByb2R1Y2VzIGNvcnJlc3BvbmRpbmcgaGVscCBtZXNzYWdlIGluCisv
LyB0aGUgc3BlY2lmaWVkIG91dHB1dCBzdHJlYW0gYW5kIHJldHVybnM6CisvLyAgMCAtIGlmICJ2
ZXJzaW9uIiBvciAib25seV9jaGVja19mbGFncyIgZmxhZ3Mgd2VyZSBzZXQgYW5kIGhhbmRsZWQu
CisvLyAgMSAtIGlmIHNvbWUgb3RoZXIgJ3VzYWdlJyByZWxhdGVkIGZsYWcgd2FzIHNldCBhbmQg
aGFuZGxlZC4KKy8vIC0xIC0gaWYgbm8gdXNhZ2UgZmxhZ3Mgd2VyZSBzZXQgb24gYSBjb21tbWFu
ZCBsaW5lLgorLy8gTm9uIG5lZ2F0aXZlIHJldHVybiB2YWx1ZXMgYXJlIGV4cGVjdGVkIHRvIGJl
IHVzZWQgYXMgYW4gZXhpdCBjb2RlIGZvciBhCisvLyBiaW5hcnkuCitpbnQgSGFuZGxlVXNhZ2VG
bGFncyhzdGQ6Om9zdHJlYW0mIG91dCwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmlu
Z192aWV3IHByb2dyYW1fdXNhZ2VfbWVzc2FnZSk7CisKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19p
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworQUJTTF9ERUNMQVJFX0ZMQUcoYm9vbCwg
aGVscCk7CitBQlNMX0RFQ0xBUkVfRkxBRyhib29sLCBoZWxwZnVsbCk7CitBQlNMX0RFQ0xBUkVf
RkxBRyhib29sLCBoZWxwc2hvcnQpOworQUJTTF9ERUNMQVJFX0ZMQUcoYm9vbCwgaGVscHBhY2th
Z2UpOworQUJTTF9ERUNMQVJFX0ZMQUcoYm9vbCwgdmVyc2lvbik7CitBQlNMX0RFQ0xBUkVfRkxB
Ryhib29sLCBvbmx5X2NoZWNrX2FyZ3MpOworQUJTTF9ERUNMQVJFX0ZMQUcoc3RkOjpzdHJpbmcs
IGhlbHBvbik7CitBQlNMX0RFQ0xBUkVfRkxBRyhzdGQ6OnN0cmluZywgaGVscG1hdGNoKTsKKwor
I2VuZGlmICAvLyBBQlNMX0ZMQUdTX0lOVEVSTkFMX1VTQUdFX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9mbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvdXNh
Z2VfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzgxZTFk
MmIxNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0
LmNjCkBAIC0wLDAgKzEsNDA0IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZS5oIgorCisj
aW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAi
YWJzbC9mbGFncy9mbGFnLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0
aWwuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5oIgorI2lu
Y2x1ZGUgImFic2wvZmxhZ3MvcGFyc2UuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3VzYWdlLmgi
CisjaW5jbHVkZSAiYWJzbC9mbGFncy91c2FnZV9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKworQUJTTF9G
TEFHKGludCwgdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMSwgMTAxLAorICAgICAgICAgICJ1
c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIGhlbHAgbWVzc2FnZSIpOworQUJTTF9GTEFHKGJv
b2wsIHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIsIGZhbHNlLAorICAgICAgICAgICJ1c2Fn
ZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAyIGhlbHAgbWVzc2FnZSIpOworQUJTTF9GTEFHKGRvdWJs
ZSwgdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMywgMS4wMywKKyAgICAgICAgICAidXNhZ2Vf
cmVwb3J0aW5nX3Rlc3RfZmxhZ18wMyBoZWxwIG1lc3NhZ2UiKTsKK0FCU0xfRkxBRyhpbnQ2NF90
LCB1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0LCAxMDAwMDAwMDAwMDAwMDA0TCwKKyAgICAg
ICAgICAidXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNCBoZWxwIG1lc3NhZ2UiKTsKKworc3Rh
dGljIGNvbnN0IGNoYXIga1Rlc3RVc2FnZU1lc3NhZ2VbXSA9ICJDdXN0b20gdXNhZ2UgbWVzc2Fn
ZSI7CisKK3N0cnVjdCBVRFQgeworICBVRFQoKSA9IGRlZmF1bHQ7CisgIFVEVChjb25zdCBVRFQm
KSA9IGRlZmF1bHQ7Cit9OworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCBV
RFQqLCBzdGQ6OnN0cmluZyopIHsgcmV0dXJuIHRydWU7IH0KK3N0ZDo6c3RyaW5nIEFic2xVbnBh
cnNlRmxhZyhjb25zdCBVRFQmKSB7IHJldHVybiAiVURUe30iOyB9CisKK0FCU0xfRkxBRyhVRFQs
IHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUsIHt9LAorICAgICAgICAgICJ1c2FnZV9yZXBv
cnRpbmdfdGVzdF9mbGFnXzA1IGhlbHAgbWVzc2FnZSIpOworCitBQlNMX0ZMQUcoCisgICAgc3Rk
OjpzdHJpbmcsIHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDYsIHt9LAorICAgICJ1c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzA2IGhlbHAgbWVzc2FnZS5cbiIKKyAgICAiXG4iCisgICAgIlNv
bWUgbW9yZSBoZWxwLlxuIgorICAgICJFdmVuIG1vcmUgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25n
IGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgIgorICAgICJoZWxwIG1lc3NhZ2Uu
Iik7CisKK25hbWVzcGFjZSB7CisKK25hbWVzcGFjZSBmbGFncyA9IGFic2w6OmZsYWdzX2ludGVy
bmFsOworCitzdGF0aWMgc3RkOjpzdHJpbmcgTm9ybWFsaXplRmlsZU5hbWUoYWJzbDo6c3RyaW5n
X3ZpZXcgZm5hbWUpIHsKKyNpZmRlZiBfV0lOMzIKKyAgc3RkOjpzdHJpbmcgbm9ybWFsaXplZChm
bmFtZSk7CisgIHN0ZDo6cmVwbGFjZShub3JtYWxpemVkLmJlZ2luKCksIG5vcm1hbGl6ZWQuZW5k
KCksICdcXCcsICcvJyk7CisgIGZuYW1lID0gbm9ybWFsaXplZDsKKyNlbmRpZgorCisgIGF1dG8g
YWJzbF9wb3MgPSBmbmFtZS5maW5kKCIvYWJzbC8iKTsKKyAgaWYgKGFic2xfcG9zICE9IGFic2w6
OnN0cmluZ192aWV3OjpucG9zKSB7CisgICAgZm5hbWUgPSBmbmFtZS5zdWJzdHIoYWJzbF9wb3Mg
KyAxKTsKKyAgfQorICByZXR1cm4gc3RkOjpzdHJpbmcoZm5hbWUpOworfQorCitjbGFzcyBVc2Fn
ZVJlcG9ydGluZ1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBV
c2FnZVJlcG9ydGluZ1Rlc3QoKSB7CisgICAgLy8gSW5zdGFsbCBkZWZhdWx0IGNvbmZpZyBmb3Ig
dGhlIHVzZSBvbiB0aGlzIHVuaXQgdGVzdC4KKyAgICAvLyBCaW5hcnkgbWF5IGluc3RhbGwgYSBj
dXN0b20gY29uZmlnIGJlZm9yZSB0ZXN0cyBhcmUgcnVuLgorICAgIGFic2w6OkZsYWdzVXNhZ2VD
b25maWcgZGVmYXVsdF9jb25maWc7CisgICAgZGVmYXVsdF9jb25maWcubm9ybWFsaXplX2ZpbGVu
YW1lID0gJk5vcm1hbGl6ZUZpbGVOYW1lOworICAgIGFic2w6OlNldEZsYWdzVXNhZ2VDb25maWco
ZGVmYXVsdF9jb25maWcpOworICB9CisKKyBwcml2YXRlOgorICBmbGFnczo6RmxhZ1NhdmVyIGZs
YWdfc2F2ZXJfOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordXNpbmcgVXNhZ2VSZXBvcnRpbmdE
ZWF0aFRlc3QgPSBVc2FnZVJlcG9ydGluZ1Rlc3Q7CisKK1RFU1RfRihVc2FnZVJlcG9ydGluZ0Rl
YXRoVGVzdCwgVGVzdFNldFByb2dyYW1Vc2FnZU1lc3NhZ2UpIHsKKyAgRVhQRUNUX0VRKGFic2w6
OlByb2dyYW1Vc2FnZU1lc3NhZ2UoKSwga1Rlc3RVc2FnZU1lc3NhZ2UpOworCisjaWZuZGVmIF9X
SU4zMgorICAvLyBUT0RPKHJvZ2VlZmYpOiBmaWd1cmUgb3V0IHdoeSB0aGlzIGRvZXMgbm90IHdv
cmsgb24gV2luZG93cy4KKyAgRVhQRUNUX0RFQVRIKGFic2w6OlNldFByb2dyYW1Vc2FnZU1lc3Nh
Z2UoImN1c3RvbSB1c2FnZSBtZXNzYWdlIiksCisgICAgICAgICAgICAgICAiLipTZXRQcm9ncmFt
VXNhZ2VNZXNzYWdlXFwoXFwpIGNhbGxlZCB0d2ljZS4qIik7CisjZW5kaWYKK30KKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworVEVTVF9GKFVzYWdlUmVwb3J0aW5nVGVzdCwgVGVzdEZsYWdIZWxwSFJGX29u
X2ZsYWdfMDEpIHsKKyAgY29uc3QgYXV0byogZmxhZyA9IGZsYWdzOjpGaW5kQ29tbWFuZExpbmVG
bGFnKCJ1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIik7CisgIHN0ZDo6c3RyaW5nc3RyZWFt
IHRlc3RfYnVmOworCisgIGZsYWdzOjpGbGFnSGVscCh0ZXN0X2J1ZiwgKmZsYWcsIGZsYWdzOjpI
ZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHRlc3RfYnVm
LnN0cigpLAorICAgICAgUiIoICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxICh1c2Fn
ZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAx
MDE7CispIik7Cit9CisKK1RFU1RfRihVc2FnZVJlcG9ydGluZ1Rlc3QsIFRlc3RGbGFnSGVscEhS
Rl9vbl9mbGFnXzAyKSB7CisgIGNvbnN0IGF1dG8qIGZsYWcgPSBmbGFnczo6RmluZENvbW1hbmRM
aW5lRmxhZygidXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiIpOworICBzdGQ6OnN0cmluZ3N0
cmVhbSB0ZXN0X2J1ZjsKKworICBmbGFnczo6RmxhZ0hlbHAodGVzdF9idWYsICpmbGFnLCBmbGFn
czo6SGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUpOworICBFWFBFQ1RfRVEoCisgICAgICB0ZXN0
X2J1Zi5zdHIoKSwKKyAgICAgIFIiKCAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiAo
dXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVs
dDogZmFsc2U7CispIik7Cit9CisKK1RFU1RfRihVc2FnZVJlcG9ydGluZ1Rlc3QsIFRlc3RGbGFn
SGVscEhSRl9vbl9mbGFnXzAzKSB7CisgIGNvbnN0IGF1dG8qIGZsYWcgPSBmbGFnczo6RmluZENv
bW1hbmRMaW5lRmxhZygidXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMyIpOworICBzdGQ6OnN0
cmluZ3N0cmVhbSB0ZXN0X2J1ZjsKKworICBmbGFnczo6RmxhZ0hlbHAodGVzdF9idWYsICpmbGFn
LCBmbGFnczo6SGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUpOworICBFWFBFQ1RfRVEoCisgICAg
ICB0ZXN0X2J1Zi5zdHIoKSwKKyAgICAgIFIiKCAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxh
Z18wMyAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMyBoZWxwIG1lc3NhZ2UpOworICAgICAg
ZGVmYXVsdDogMS4wMzsKKykiKTsKK30KKworVEVTVF9GKFVzYWdlUmVwb3J0aW5nVGVzdCwgVGVz
dEZsYWdIZWxwSFJGX29uX2ZsYWdfMDQpIHsKKyAgY29uc3QgYXV0byogZmxhZyA9IGZsYWdzOjpG
aW5kQ29tbWFuZExpbmVGbGFnKCJ1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0Iik7CisgIHN0
ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmOworCisgIGZsYWdzOjpGbGFnSGVscCh0ZXN0X2J1Ziwg
KmZsYWcsIGZsYWdzOjpIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSk7CisgIEVYUEVDVF9FUSgK
KyAgICAgIHRlc3RfYnVmLnN0cigpLAorICAgICAgUiIoICAgIC11c2FnZV9yZXBvcnRpbmdfdGVz
dF9mbGFnXzA0ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0IGhlbHAgbWVzc2FnZSk7Cisg
ICAgICBkZWZhdWx0OiAxMDAwMDAwMDAwMDAwMDA0OworKSIpOworfQorCitURVNUX0YoVXNhZ2VS
ZXBvcnRpbmdUZXN0LCBUZXN0RmxhZ0hlbHBIUkZfb25fZmxhZ18wNSkgeworICBjb25zdCBhdXRv
KiBmbGFnID0gZmxhZ3M6OkZpbmRDb21tYW5kTGluZUZsYWcoInVzYWdlX3JlcG9ydGluZ190ZXN0
X2ZsYWdfMDUiKTsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWY7CisKKyAgZmxhZ3M6OkZs
YWdIZWxwKHRlc3RfYnVmLCAqZmxhZywgZmxhZ3M6OkhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxl
KTsKKyAgRVhQRUNUX0VRKAorICAgICAgdGVzdF9idWYuc3RyKCksCisgICAgICBSIiggICAgLXVz
YWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUg
aGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IFVEVHt9OworKSIpOworfQorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitURVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0LCBUZXN0RmxhZ3NIZWxwSFJGKSB7
CisgIHN0ZDo6c3RyaW5nIHVzYWdlX3Rlc3RfZmxhZ3Nfb3V0ID0KKyAgICAgIFIiKHVzYWdlX3Rl
c3Q6IEN1c3RvbSB1c2FnZSBtZXNzYWdlCisKKyAgRmxhZ3MgZnJvbSBhYnNsL2ZsYWdzL2ludGVy
bmFsL3VzYWdlX3Rlc3QuY2M6CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDEgKHVz
YWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDEgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6
IDEwMTsKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiAodXNhZ2VfcmVwb3J0aW5n
X3Rlc3RfZmxhZ18wMiBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogZmFsc2U7CisgICAg
LXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDMgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdf
MDMgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEuMDM7CisgICAgLXVzYWdlX3JlcG9y
dGluZ190ZXN0X2ZsYWdfMDQgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDQgaGVscCBtZXNz
YWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEwMDAwMDAwMDAwMDAwMDQ7CisgICAgLXVzYWdlX3JlcG9y
dGluZ190ZXN0X2ZsYWdfMDUgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUgaGVscCBtZXNz
YWdlKTsKKyAgICAgIGRlZmF1bHQ6IFVEVHt9OworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9m
bGFnXzA2ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA2IGhlbHAgbWVzc2FnZS4KKworICAg
ICAgU29tZSBtb3JlIGhlbHAuCisgICAgICBFdmVuIG1vcmUgbG9uZyBsb25nIGxvbmcgbG9uZyBs
b25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgaGVscAorICAgICAgbWVzc2Fn
ZS4pOyBkZWZhdWx0OiAiIjsKKykiOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmXzAx
OworICBmbGFnczo6RmxhZ3NIZWxwKHRlc3RfYnVmXzAxLCAidXNhZ2VfdGVzdC5jYyIsCisgICAg
ICAgICAgICAgICAgICAgZmxhZ3M6OkhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlLCBrVGVzdFVz
YWdlTWVzc2FnZSk7CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zl8wMS5zdHIoKSwgdXNhZ2VfdGVzdF9m
bGFnc19vdXQpOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmXzAyOworICBmbGFnczo6
RmxhZ3NIZWxwKHRlc3RfYnVmXzAyLCAiZmxhZ3MvaW50ZXJuYWwvdXNhZ2VfdGVzdC5jYyIsCisg
ICAgICAgICAgICAgICAgICAgZmxhZ3M6OkhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlLCBrVGVz
dFVzYWdlTWVzc2FnZSk7CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zl8wMi5zdHIoKSwgdXNhZ2VfdGVz
dF9mbGFnc19vdXQpOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmXzAzOworICBmbGFn
czo6RmxhZ3NIZWxwKHRlc3RfYnVmXzAzLCAidXNhZ2VfdGVzdCIsIGZsYWdzOjpIZWxwRm9ybWF0
OjprSHVtYW5SZWFkYWJsZSwKKyAgICAgICAgICAgICAgICAgICBrVGVzdFVzYWdlTWVzc2FnZSk7
CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zl8wMy5zdHIoKSwgdXNhZ2VfdGVzdF9mbGFnc19vdXQpOwor
CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmXzA0OworICBmbGFnczo6RmxhZ3NIZWxwKHRl
c3RfYnVmXzA0LCAiZmxhZ3MvaW52YWxpZF9maWxlX25hbWUuY2MiLAorICAgICAgICAgICAgICAg
ICAgIGZsYWdzOjpIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSwga1Rlc3RVc2FnZU1lc3NhZ2Up
OworICBFWFBFQ1RfRVEodGVzdF9idWZfMDQuc3RyKCksCisgICAgICAgICAgICBSIih1c2FnZV90
ZXN0OiBDdXN0b20gdXNhZ2UgbWVzc2FnZQorCisgIE5vIG1vZHVsZXMgbWF0Y2hlZDogdXNlIC1o
ZWxwZnVsbAorKSIpOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmXzA1OworICBmbGFn
czo6RmxhZ3NIZWxwKHRlc3RfYnVmXzA1LCAiIiwgZmxhZ3M6OkhlbHBGb3JtYXQ6OmtIdW1hblJl
YWRhYmxlLAorICAgICAgICAgICAgICAgICAgIGtUZXN0VXNhZ2VNZXNzYWdlKTsKKyAgc3RkOjpz
dHJpbmcgdGVzdF9vdXQgPSB0ZXN0X2J1Zl8wNS5zdHIoKTsKKyAgYWJzbDo6c3RyaW5nX3ZpZXcg
dGVzdF9vdXRfc3RyKHRlc3Rfb3V0KTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpTdGFy
dHNXaXRoKHRlc3Rfb3V0X3N0ciwgInVzYWdlX3Rlc3Q6IEN1c3RvbSB1c2FnZSBtZXNzYWdlIikp
OworICBFWFBFQ1RfVFJVRShhYnNsOjpTdHJDb250YWlucygKKyAgICAgIHRlc3Rfb3V0X3N0ciwg
IkZsYWdzIGZyb20gYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0LmNjOiIpKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6U3RyQ29udGFpbnModGVzdF9vdXRfc3RyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRmxhZ3MgZnJvbSBhYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlLmNj
OiIpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpTdHJDb250YWlucyh0ZXN0X291dF9z
dHIsICItdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMSAiKSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OlN0ckNvbnRhaW5zKHRlc3Rfb3V0X3N0ciwgIi1oZWxwIChzaG93IGhlbHAiKSkKKyAgICAg
IDw8IHRlc3Rfb3V0X3N0cjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFVzYWdlUmVw
b3J0aW5nVGVzdCwgVGVzdE5vVXNhZ2VGbGFncykgeworICBzdGQ6OnN0cmluZ3N0cmVhbSB0ZXN0
X2J1ZjsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5kbGVVc2FnZUZsYWdzKHRlc3RfYnVmLCBrVGVz
dFVzYWdlTWVzc2FnZSksIC0xKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFVzYWdl
UmVwb3J0aW5nVGVzdCwgVGVzdFVzYWdlRmxhZ19oZWxwc2hvcnQpIHsKKyAgYWJzbDo6U2V0Rmxh
ZygmRkxBR1NfaGVscHNob3J0LCB0cnVlKTsKKworICBzdGQ6OnN0cmluZ3N0cmVhbSB0ZXN0X2J1
ZjsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5kbGVVc2FnZUZsYWdzKHRlc3RfYnVmLCBrVGVzdFVz
YWdlTWVzc2FnZSksIDEpOworICBFWFBFQ1RfRVEodGVzdF9idWYuc3RyKCksCisgICAgICAgICAg
ICBSIih1c2FnZV90ZXN0OiBDdXN0b20gdXNhZ2UgbWVzc2FnZQorCisgIEZsYWdzIGZyb20gYWJz
bC9mbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0LmNjOgorICAgIC11c2FnZV9yZXBvcnRpbmdfdGVz
dF9mbGFnXzAxICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIGhlbHAgbWVzc2FnZSk7Cisg
ICAgICBkZWZhdWx0OiAxMDE7CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIgKHVz
YWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6
IGZhbHNlOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAzICh1c2FnZV9yZXBvcnRp
bmdfdGVzdF9mbGFnXzAzIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxLjAzOworICAg
IC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFn
XzA0IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxMDAwMDAwMDAwMDAwMDA0OworICAg
IC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA1ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFn
XzA1IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiBVRFR7fTsKKyAgICAtdXNhZ2VfcmVw
b3J0aW5nX3Rlc3RfZmxhZ18wNiAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiBoZWxwIG1l
c3NhZ2UuCisKKyAgICAgIFNvbWUgbW9yZSBoZWxwLgorICAgICAgRXZlbiBtb3JlIGxvbmcgbG9u
ZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGhlbHAK
KyAgICAgIG1lc3NhZ2UuKTsgZGVmYXVsdDogIiI7CispIik7Cit9CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK1RFU1RfRihVc2FnZVJlcG9ydGluZ1Rlc3QsIFRlc3RVc2FnZUZsYWdfaGVscCkgeworICBh
YnNsOjpTZXRGbGFnKCZGTEFHU19oZWxwLCB0cnVlKTsKKworICBzdGQ6OnN0cmluZ3N0cmVhbSB0
ZXN0X2J1ZjsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5kbGVVc2FnZUZsYWdzKHRlc3RfYnVmLCBr
VGVzdFVzYWdlTWVzc2FnZSksIDEpOworICBFWFBFQ1RfRVEodGVzdF9idWYuc3RyKCksCisgICAg
ICAgICAgICBSIih1c2FnZV90ZXN0OiBDdXN0b20gdXNhZ2UgbWVzc2FnZQorCisgIEZsYWdzIGZy
b20gYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0LmNjOgorICAgIC11c2FnZV9yZXBvcnRp
bmdfdGVzdF9mbGFnXzAxICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIGhlbHAgbWVzc2Fn
ZSk7CisgICAgICBkZWZhdWx0OiAxMDE7CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdf
MDIgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRl
ZmF1bHQ6IGZhbHNlOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAzICh1c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzAzIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxLjAz
OworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0ICh1c2FnZV9yZXBvcnRpbmdfdGVz
dF9mbGFnXzA0IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxMDAwMDAwMDAwMDAwMDA0
OworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA1ICh1c2FnZV9yZXBvcnRpbmdfdGVz
dF9mbGFnXzA1IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiBVRFR7fTsKKyAgICAtdXNh
Z2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiBo
ZWxwIG1lc3NhZ2UuCisKKyAgICAgIFNvbWUgbW9yZSBoZWxwLgorICAgICAgRXZlbiBtb3JlIGxv
bmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25n
IGhlbHAKKyAgICAgIG1lc3NhZ2UuKTsgZGVmYXVsdDogIiI7CisKK1RyeSAtLWhlbHBmdWxsIHRv
IGdldCBhIGxpc3Qgb2YgYWxsIGZsYWdzLgorKSIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitU
RVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0LCBUZXN0VXNhZ2VGbGFnX2hlbHBwYWNrYWdlKSB7Cisg
IGFic2w6OlNldEZsYWcoJkZMQUdTX2hlbHBwYWNrYWdlLCB0cnVlKTsKKworICBzdGQ6OnN0cmlu
Z3N0cmVhbSB0ZXN0X2J1ZjsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5kbGVVc2FnZUZsYWdzKHRl
c3RfYnVmLCBrVGVzdFVzYWdlTWVzc2FnZSksIDEpOworICBFWFBFQ1RfRVEodGVzdF9idWYuc3Ry
KCksCisgICAgICAgICAgICBSIih1c2FnZV90ZXN0OiBDdXN0b20gdXNhZ2UgbWVzc2FnZQorCisg
IEZsYWdzIGZyb20gYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0LmNjOgorICAgIC11c2Fn
ZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIGhl
bHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxMDE7CisgICAgLXVzYWdlX3JlcG9ydGluZ190
ZXN0X2ZsYWdfMDIgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIgaGVscCBtZXNzYWdlKTsK
KyAgICAgIGRlZmF1bHQ6IGZhbHNlOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAz
ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAzIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZh
dWx0OiAxLjAzOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0ICh1c2FnZV9yZXBv
cnRpbmdfdGVzdF9mbGFnXzA0IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxMDAwMDAw
MDAwMDAwMDA0OworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA1ICh1c2FnZV9yZXBv
cnRpbmdfdGVzdF9mbGFnXzA1IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiBVRFR7fTsK
KyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiAodXNhZ2VfcmVwb3J0aW5nX3Rlc3Rf
ZmxhZ18wNiBoZWxwIG1lc3NhZ2UuCisKKyAgICAgIFNvbWUgbW9yZSBoZWxwLgorICAgICAgRXZl
biBtb3JlIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcg
bG9uZyBsb25nIGhlbHAKKyAgICAgIG1lc3NhZ2UuKTsgZGVmYXVsdDogIiI7CisKK1RyeSAtLWhl
bHBmdWxsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGZsYWdzLgorKSIpOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitURVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0LCBUZXN0VXNhZ2VGbGFnX3ZlcnNpb24p
IHsKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfdmVyc2lvbiwgdHJ1ZSk7CisKKyAgc3RkOjpzdHJp
bmdzdHJlYW0gdGVzdF9idWY7CisgIEVYUEVDVF9FUShmbGFnczo6SGFuZGxlVXNhZ2VGbGFncyh0
ZXN0X2J1Ziwga1Rlc3RVc2FnZU1lc3NhZ2UpLCAwKTsKKyNpZm5kZWYgTkRFQlVHCisgIEVYUEVD
VF9FUSh0ZXN0X2J1Zi5zdHIoKSwgInVzYWdlX3Rlc3RcbkRlYnVnIGJ1aWxkIChOREVCVUcgbm90
ICNkZWZpbmVkKVxuIik7CisjZWxzZQorICBFWFBFQ1RfRVEodGVzdF9idWYuc3RyKCksICJ1c2Fn
ZV90ZXN0XG4iKTsKKyNlbmRpZgorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoVXNhZ2VS
ZXBvcnRpbmdUZXN0LCBUZXN0VXNhZ2VGbGFnX29ubHlfY2hlY2tfYXJncykgeworICBhYnNsOjpT
ZXRGbGFnKCZGTEFHU19vbmx5X2NoZWNrX2FyZ3MsIHRydWUpOworCisgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIHRlc3RfYnVmOworICBFWFBFQ1RfRVEoZmxhZ3M6OkhhbmRsZVVzYWdlRmxhZ3ModGVzdF9i
dWYsIGtUZXN0VXNhZ2VNZXNzYWdlKSwgMCk7CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zi5zdHIoKSwg
IiIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0LCBU
ZXN0VXNhZ2VGbGFnX2hlbHBvbikgeworICBhYnNsOjpTZXRGbGFnKCZGTEFHU19oZWxwb24sICJi
bGEtYmxhIik7CisKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWZfMDE7CisgIEVYUEVDVF9F
UShmbGFnczo6SGFuZGxlVXNhZ2VGbGFncyh0ZXN0X2J1Zl8wMSwga1Rlc3RVc2FnZU1lc3NhZ2Up
LCAxKTsKKyAgRVhQRUNUX0VRKHRlc3RfYnVmXzAxLnN0cigpLAorICAgICAgICAgICAgUiIodXNh
Z2VfdGVzdDogQ3VzdG9tIHVzYWdlIG1lc3NhZ2UKKworICBObyBtb2R1bGVzIG1hdGNoZWQ6IHVz
ZSAtaGVscGZ1bGwKKykiKTsKKworICBhYnNsOjpTZXRGbGFnKCZGTEFHU19oZWxwb24sICJ1c2Fn
ZV90ZXN0Iik7CisKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWZfMDI7CisgIEVYUEVDVF9F
UShmbGFnczo6SGFuZGxlVXNhZ2VGbGFncyh0ZXN0X2J1Zl8wMiwga1Rlc3RVc2FnZU1lc3NhZ2Up
LCAxKTsKKyAgRVhQRUNUX0VRKHRlc3RfYnVmXzAyLnN0cigpLAorICAgICAgICAgICAgUiIodXNh
Z2VfdGVzdDogQ3VzdG9tIHVzYWdlIG1lc3NhZ2UKKworICBGbGFncyBmcm9tIGFic2wvZmxhZ3Mv
aW50ZXJuYWwvdXNhZ2VfdGVzdC5jYzoKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18w
MSAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMSBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVm
YXVsdDogMTAxOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAyICh1c2FnZV9yZXBv
cnRpbmdfdGVzdF9mbGFnXzAyIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiBmYWxzZTsK
KyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMyAodXNhZ2VfcmVwb3J0aW5nX3Rlc3Rf
ZmxhZ18wMyBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogMS4wMzsKKyAgICAtdXNhZ2Vf
cmVwb3J0aW5nX3Rlc3RfZmxhZ18wNCAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNCBoZWxw
IG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogMTAwMDAwMDAwMDAwMDAwNDsKKyAgICAtdXNhZ2Vf
cmVwb3J0aW5nX3Rlc3RfZmxhZ18wNSAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNSBoZWxw
IG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogVURUe307CisgICAgLXVzYWdlX3JlcG9ydGluZ190
ZXN0X2ZsYWdfMDYgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDYgaGVscCBtZXNzYWdlLgor
CisgICAgICBTb21lIG1vcmUgaGVscC4KKyAgICAgIEV2ZW4gbW9yZSBsb25nIGxvbmcgbG9uZyBs
b25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBoZWxwCisgICAgICBt
ZXNzYWdlLik7IGRlZmF1bHQ6ICIiOworKSIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit9ICAv
LyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworICBhYnNs
OjpHZXRGbGFnKEZMQUdTX3VuZGVmb2spOyAgLy8gRm9yY2UgbGlua2luZyBvZiBwYXJzZS5jYwor
ICBmbGFnczo6U2V0UHJvZ3JhbUludm9jYXRpb25OYW1lKCJ1c2FnZV90ZXN0Iik7CisgIGFic2w6
OlNldFByb2dyYW1Vc2FnZU1lc3NhZ2Uoa1Rlc3RVc2FnZU1lc3NhZ2UpOworICA6OnRlc3Rpbmc6
OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNUUygp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvbWFyc2hhbGxpbmcuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFn
cy9tYXJzaGFsbGluZy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
ZjAyNWFlN2U4NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9tYXJzaGFsbGluZy5j
YwpAQCAtMCwwICsxLDE4OSBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvbWFyc2hhbGxpbmcuaCIKKworI2luY2x1
ZGUgPGxpbWl0cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbnVtYmVycy5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cl9mb3JtYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2pvaW4uaCIKKyNpbmNs
dWRlICJhYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsUGFyc2VGbGFn
IHNwZWNpYWxpemF0aW9ucyBmb3IgYm9vbGVhbiB0eXBlLgorCitib29sIEFic2xQYXJzZUZsYWco
YWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgYm9vbCogZHN0LCBzdGQ6OnN0cmluZyopIHsKKyAgY29u
c3QgY2hhcioga1RydWVbXSA9IHsiMSIsICJ0IiwgInRydWUiLCAieSIsICJ5ZXMifTsKKyAgY29u
c3QgY2hhcioga0ZhbHNlW10gPSB7IjAiLCAiZiIsICJmYWxzZSIsICJuIiwgIm5vIn07CisgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKGtUcnVlKSA9PSBzaXplb2Yoa0ZhbHNlKSwgInRydWVfZmFsc2Vf
ZXF1YWwiKTsKKworICB0ZXh0ID0gYWJzbDo6U3RyaXBBc2NpaVdoaXRlc3BhY2UodGV4dCk7CisK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBQlNMX0FSUkFZU0laRShrVHJ1ZSk7ICsraSkgewor
ICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHRleHQsIGtUcnVlW2ldKSkgeworICAgICAg
KmRzdCA9IHRydWU7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGFic2w6OkVx
dWFsc0lnbm9yZUNhc2UodGV4dCwga0ZhbHNlW2ldKSkgeworICAgICAgKmRzdCA9IGZhbHNlOwor
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsgIC8vIGRpZG4n
dCBtYXRjaCBhIGxlZ2FsIGlucHV0Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsUGFyc2VG
bGFnIGZvciBpbnRlZ3JhbCB0eXBlcy4KKworLy8gUmV0dXJuIHRoZSBiYXNlIHRvIHVzZSBmb3Ig
cGFyc2luZyB0ZXh0IGFzIGFuIGludGVnZXIuICBMZWFkaW5nIDB4CisvLyBwdXRzIHVzIGluIGJh
c2UgMTYuICBCdXQgbGVhZGluZyAwIGRvZXMgbm90IHB1dCB1cyBpbiBiYXNlIDguIEl0CisvLyBj
YXVzZWQgdG9vIG1hbnkgYnVncyB3aGVuIHdlIGhhZCB0aGF0IGJlaGF2aW9yLgorc3RhdGljIGlu
dCBOdW1lcmljQmFzZShhYnNsOjpzdHJpbmdfdmlldyB0ZXh0KSB7CisgIGNvbnN0IGJvb2wgaGV4
ID0gKHRleHQuc2l6ZSgpID49IDIgJiYgdGV4dFswXSA9PSAnMCcgJiYKKyAgICAgICAgICAgICAg
ICAgICAgKHRleHRbMV0gPT0gJ3gnIHx8IHRleHRbMV0gPT0gJ1gnKSk7CisgIHJldHVybiBoZXgg
PyAxNiA6IDEwOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK2lubGluZSBib29s
IFBhcnNlRmxhZ0ltcGwoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgSW50VHlwZSogZHN0KSB7Cisg
IHRleHQgPSBhYnNsOjpTdHJpcEFzY2lpV2hpdGVzcGFjZSh0ZXh0KTsKKworICByZXR1cm4gYWJz
bDo6bnVtYmVyc19pbnRlcm5hbDo6c2FmZV9zdHJ0b2lfYmFzZSh0ZXh0LCBkc3QsIE51bWVyaWNC
YXNlKHRleHQpKTsKK30KKworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRl
eHQsIHNob3J0KiBkc3QsIHN0ZDo6c3RyaW5nKikgeworICBpbnQgdmFsOworICBpZiAoIVBhcnNl
RmxhZ0ltcGwodGV4dCwgJnZhbCkpIHJldHVybiBmYWxzZTsKKyAgaWYgKHN0YXRpY19jYXN0PHNo
b3J0Pih2YWwpICE9IHZhbCkgIC8vIHdvcmtlZCwgYnV0IG51bWJlciBvdXQgb2YgcmFuZ2UKKyAg
ICByZXR1cm4gZmFsc2U7CisgICpkc3QgPSBzdGF0aWNfY2FzdDxzaG9ydD4odmFsKTsKKyAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0
LCB1bnNpZ25lZCBzaG9ydCogZHN0LCBzdGQ6OnN0cmluZyopIHsKKyAgdW5zaWduZWQgaW50IHZh
bDsKKyAgaWYgKCFQYXJzZUZsYWdJbXBsKHRleHQsICZ2YWwpKSByZXR1cm4gZmFsc2U7CisgIGlm
IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4odmFsKSAhPQorICAgICAgdmFsKSAgLy8gd29y
a2VkLCBidXQgbnVtYmVyIG91dCBvZiByYW5nZQorICAgIHJldHVybiBmYWxzZTsKKyAgKmRzdCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pih2YWwpOworICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGludCogZHN0LCBzdGQ6
OnN0cmluZyopIHsKKyAgcmV0dXJuIFBhcnNlRmxhZ0ltcGwodGV4dCwgZHN0KTsKK30KKworYm9v
bCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIHVuc2lnbmVkIGludCogZHN0
LCBzdGQ6OnN0cmluZyopIHsKKyAgcmV0dXJuIFBhcnNlRmxhZ0ltcGwodGV4dCwgZHN0KTsKK30K
KworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGxvbmcqIGRzdCwg
c3RkOjpzdHJpbmcqKSB7CisgIHJldHVybiBQYXJzZUZsYWdJbXBsKHRleHQsIGRzdCk7Cit9CisK
K2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCB1bnNpZ25lZCBsb25n
KiBkc3QsIHN0ZDo6c3RyaW5nKikgeworICByZXR1cm4gUGFyc2VGbGFnSW1wbCh0ZXh0LCBkc3Qp
OworfQorCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgbG9uZyBs
b25nKiBkc3QsIHN0ZDo6c3RyaW5nKikgeworICByZXR1cm4gUGFyc2VGbGFnSW1wbCh0ZXh0LCBk
c3QpOworfQorCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgdW5z
aWduZWQgbG9uZyBsb25nKiBkc3QsCisgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqKSB7
CisgIHJldHVybiBQYXJzZUZsYWdJbXBsKHRleHQsIGRzdCk7Cit9CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyBBYnNsUGFyc2VGbGFnIGZvciBmbG9hdGluZyBwb2ludCB0eXBlcy4KKworYm9vbCBBYnNs
UGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGZsb2F0KiBkc3QsIHN0ZDo6c3RyaW5n
KikgeworICByZXR1cm4gYWJzbDo6U2ltcGxlQXRvZih0ZXh0LCBkc3QpOworfQorCitib29sIEFi
c2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgZG91YmxlKiBkc3QsIHN0ZDo6c3Ry
aW5nKikgeworICByZXR1cm4gYWJzbDo6U2ltcGxlQXRvZCh0ZXh0LCBkc3QpOworfQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8gQWJzbFBhcnNlRmxhZyBmb3Igc3RyaW5ncy4KKworYm9vbCBBYnNsUGFy
c2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIHN0ZDo6c3RyaW5nKiBkc3QsIHN0ZDo6c3Ry
aW5nKikgeworICBkc3QtPmFzc2lnbih0ZXh0LmRhdGEoKSwgdGV4dC5zaXplKCkpOworICByZXR1
cm4gdHJ1ZTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFic2xQYXJzZUZsYWcgZm9yIHZlY3Rv
ciBvZiBzdHJpbmdzLgorCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4
dCwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBkc3QsCisgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcqKSB7CisgIC8vIEFuIGVtcHR5IGZsYWcgdmFsdWUgY29ycmVzcG9uZHMgdG8gYW4g
ZW1wdHkgdmVjdG9yLCBub3QgYSB2ZWN0b3IKKyAgLy8gd2l0aCBhIHNpbmdsZSwgZW1wdHkgc3Rk
OjpzdHJpbmcuCisgIGlmICh0ZXh0LmVtcHR5KCkpIHsKKyAgICBkc3QtPmNsZWFyKCk7CisgICAg
cmV0dXJuIHRydWU7CisgIH0KKyAgKmRzdCA9IGFic2w6OlN0clNwbGl0KHRleHQsICcsJywgYWJz
bDo6QWxsb3dFbXB0eSgpKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LyBBYnNsVW5wYXJzZUZsYWcgc3BlY2lhbGl6YXRpb25zIGZvciB2YXJpb3VzIGJ1aWx0aW4gZmxh
ZyB0eXBlcy4KKworc3RkOjpzdHJpbmcgVW5wYXJzZShib29sIHYpIHsgcmV0dXJuIHYgPyAidHJ1
ZSIgOiAiZmFsc2UiOyB9CitzdGQ6OnN0cmluZyBVbnBhcnNlKHNob3J0IHYpIHsgcmV0dXJuIGFi
c2w6OlN0ckNhdCh2KTsgfQorc3RkOjpzdHJpbmcgVW5wYXJzZSh1bnNpZ25lZCBzaG9ydCB2KSB7
IHJldHVybiBhYnNsOjpTdHJDYXQodik7IH0KK3N0ZDo6c3RyaW5nIFVucGFyc2UoaW50IHYpIHsg
cmV0dXJuIGFic2w6OlN0ckNhdCh2KTsgfQorc3RkOjpzdHJpbmcgVW5wYXJzZSh1bnNpZ25lZCBp
bnQgdikgeyByZXR1cm4gYWJzbDo6U3RyQ2F0KHYpOyB9CitzdGQ6OnN0cmluZyBVbnBhcnNlKGxv
bmcgdikgeyByZXR1cm4gYWJzbDo6U3RyQ2F0KHYpOyB9CitzdGQ6OnN0cmluZyBVbnBhcnNlKHVu
c2lnbmVkIGxvbmcgdikgeyByZXR1cm4gYWJzbDo6U3RyQ2F0KHYpOyB9CitzdGQ6OnN0cmluZyBV
bnBhcnNlKGxvbmcgbG9uZyB2KSB7IHJldHVybiBhYnNsOjpTdHJDYXQodik7IH0KK3N0ZDo6c3Ry
aW5nIFVucGFyc2UodW5zaWduZWQgbG9uZyBsb25nIHYpIHsgcmV0dXJuIGFic2w6OlN0ckNhdCh2
KTsgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0cmluZyBVbnBhcnNlRmxvYXRpbmdQ
b2ludFZhbChUIHYpIHsKKyAgLy8gZGlnaXRzMTAgaXMgZ3VhcmFudGVlZCB0byByb3VuZHRyaXAg
Y29ycmVjdGx5IGluIHN0ZDo6c3RyaW5nIC0+IHZhbHVlIC0+IHN0ZDo6c3RyaW5nCisgIC8vIGNv
bnZlcnNpb25zLCBidXQgbWF5IG5vdCBiZSBlbm91Z2ggdG8gcmVwcmVzZW50IGFsbCB0aGUgdmFs
dWVzIGNvcnJlY3RseS4KKyAgc3RkOjpzdHJpbmcgZGlnaXQxMF9zdHIgPQorICAgICAgYWJzbDo6
U3RyRm9ybWF0KCIlLipnIiwgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzMTAsIHYpOwor
ICBpZiAoc3RkOjppc25hbih2KSB8fCBzdGQ6OmlzaW5mKHYpKSByZXR1cm4gZGlnaXQxMF9zdHI7
CisKKyAgVCByb3VuZHRyaXBfdmFsID0gMDsKKyAgc3RkOjpzdHJpbmcgZXJyOworICBpZiAoYWJz
bDo6UGFyc2VGbGFnKGRpZ2l0MTBfc3RyLCAmcm91bmR0cmlwX3ZhbCwgJmVycikgJiYKKyAgICAg
IHJvdW5kdHJpcF92YWwgPT0gdikgeworICAgIHJldHVybiBkaWdpdDEwX3N0cjsKKyAgfQorCisg
IC8vIG1heF9kaWdpdHMxMCBpcyB0aGUgbnVtYmVyIG9mIGJhc2UtMTAgZGlnaXRzIHRoYXQgYXJl
IG5lY2Vzc2FyeSB0byB1bmlxdWVseQorICAvLyByZXByZXNlbnQgYWxsIGRpc3RpbmN0IHZhbHVl
cy4KKyAgcmV0dXJuIGFic2w6OlN0ckZvcm1hdCgiJS4qZyIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
VD46Om1heF9kaWdpdHMxMCwgdik7Cit9CitzdGQ6OnN0cmluZyBVbnBhcnNlKGZsb2F0IHYpIHsg
cmV0dXJuIFVucGFyc2VGbG9hdGluZ1BvaW50VmFsKHYpOyB9CitzdGQ6OnN0cmluZyBVbnBhcnNl
KGRvdWJsZSB2KSB7IHJldHVybiBVbnBhcnNlRmxvYXRpbmdQb2ludFZhbCh2KTsgfQorc3RkOjpz
dHJpbmcgQWJzbFVucGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHYpIHsgcmV0dXJuIHN0ZDo6
c3RyaW5nKHYpOyB9CitzdGQ6OnN0cmluZyBBYnNsVW5wYXJzZUZsYWcoY29uc3Qgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+JiB2KSB7CisgIHJldHVybiBhYnNsOjpTdHJKb2luKHYsICIsIik7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL21hcnNoYWxsaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9tYXJz
aGFsbGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mOWUyOTU5
NDM3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL21hcnNoYWxsaW5nLmgKQEAgLTAs
MCArMSwyNTMgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IG1hcnNoYWxsaW5nLmgKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRo
ZSBBUEkgZm9yIGV4dGVuZGluZyBBYnNlaWwgZmxhZyBzdXBwb3J0IHRvCisvLyBjdXN0b20gdHlw
ZXMsIGFuZCBkZWZpbmVzIHRoZSBzZXQgb2Ygb3ZlcmxvYWRzIGZvciBmdW5kYW1lbnRhbCB0eXBl
cy4KKy8vCisvLyBPdXQgb2YgdGhlIGJveCwgdGhlIEFic2VpbCBmbGFncyBsaWJyYXJ5IHN1cHBv
cnRzIHRoZSBmb2xsb3dpbmcgdHlwZXM6CisvLworLy8gKiBgYm9vbGAKKy8vICogYGludDE2X3Rg
CisvLyAqIGB1aW50MTZfdGAKKy8vICogYGludDMyX3RgCisvLyAqIGB1aW50MzJfdGAKKy8vICog
YGludDY0X3RgCisvLyAqIGB1aW50NjRfdGAKKy8vICogYGZsb2F0YAorLy8gKiBgZG91YmxlYAor
Ly8gKiBgc3RkOjpzdHJpbmdgCisvLyAqIGBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz5gCisvLwor
Ly8gTm90ZSB0aGF0IHN1cHBvcnQgZm9yIGludGVncmFsIHR5cGVzIGlzIGltcGxlbWVudGVkIHVz
aW5nIG92ZXJsb2FkcyBmb3IKKy8vIHZhcmlhYmxlLXdpZHRoIGZ1bmRhbWVudGFsIHR5cGVzIChg
c2hvcnRgLCBgaW50YCwgYGxvbmdgLCBldGMuKS4gSG93ZXZlciwKKy8vIHlvdSBzaG91bGQgcHJl
ZmVyIHRoZSBmaXhlZC13aWR0aCBpbnRlZ3JhbCB0eXBlcyAoYGludDMyX3RgLCBgdWludDY0X3Rg
LAorLy8gZXRjLikgd2UndmUgbm90ZWQgYWJvdmUgd2l0aGluIGZsYWcgZGVmaW5pdGlvbnMuCisK
Ky8vCisvLyBJbiBhZGRpdGlvbiwgc2V2ZXJhbCBBYnNlaWwgbGlicmFyaWVzIHByb3ZpZGUgdGhl
aXIgb3duIGN1c3RvbSBzdXBwb3J0IGZvcgorLy8gQWJzZWlsIGZsYWdzLgorLy8KKy8vIFRoZSBB
YnNlaWwgdGltZSBsaWJyYXJ5IHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgc3VwcG9ydCBmb3IgY2l2
aWwgdGltZSB2YWx1ZXM6CisvLworLy8gKiBgYWJzbDo6Q2l2aWxTZWNvbmRgCisvLyAqIGBhYnNs
OjpDaXZpbE1pbnV0ZWAKKy8vICogYGFic2w6OkNpdmlsSG91cmAKKy8vICogYGFic2w6OkNpdmls
RGF5YAorLy8gKiBgYWJzbDo6Q2l2aWxNb250aGAKKy8vICogYGFic2w6OkNpdmlsWWVhcmAKKy8v
CisvLyBhbmQgYWxzbyBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgZm9sbG93aW5nIGFic29sdXRl
IHRpbWUgdmFsdWVzOgorLy8KKy8vICogYGFic2w6OkR1cmF0aW9uYAorLy8gKiBgYWJzbDo6VGlt
ZWAKKy8vCisvLyBBZGRpdGlvbmFsIHN1cHBvcnQgZm9yIEFic2VpbCB0eXBlcyB3aWxsIGJlIG5v
dGVkIGhlcmUgYXMgaXQgaXMgYWRkZWQuCisvLworLy8gWW91IGNhbiBhbHNvIHByb3ZpZGUgeW91
ciBvd24gY3VzdG9tIGZsYWdzIGJ5IGFkZGluZyBvdmVybG9hZHMgZm9yCisvLyBgQWJzbFBhcnNl
RmxhZygpYCBhbmQgYEFic2xVbnBhcnNlRmxhZygpYCB0byB5b3VyIHR5cGUgZGVmaW5pdGlvbnMu
IChTZWUKKy8vIGJlbG93LikKKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWRkaW5n
IFR5cGUgU3VwcG9ydCBmb3IgQWJzZWlsIEZsYWdzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIFRvIGFkZCBzdXBwb3J0IGZvciB5b3VyIHVzZXItZGVmaW5lZCB0eXBlLCBhZGQgb3Zl
cmxvYWRzIG9mIGBBYnNsUGFyc2VGbGFnKClgCisvLyBhbmQgYEFic2xVbnBhcnNlRmxhZygpYCBh
cyBmcmVlIChub24tbWVtYmVyKSBmdW5jdGlvbnMgdG8geW91ciB0eXBlLiBJZiBgVGAKKy8vIGlz
IGEgY2xhc3MgdHlwZSwgdGhlc2UgZnVuY3Rpb25zIGNhbiBiZSBmcmllbmQgZnVuY3Rpb24gZGVm
aW5pdGlvbnMuIFRoZXNlCisvLyBvdmVybG9hZHMgbXVzdCBiZSBhZGRlZCB0byB0aGUgc2FtZSBu
YW1lc3BhY2Ugd2hlcmUgdGhlIHR5cGUgaXMgZGVmaW5lZCwgc28KKy8vIHRoYXQgdGhleSBjYW4g
YmUgZGlzY292ZXJlZCBieSBBcmd1bWVudC1EZXBlbmRlbnQgTG9va3VwIChBREwpLgorLy8KKy8v
IEV4YW1wbGU6CisvLworLy8gICBuYW1lc3BhY2UgZm9vIHsKKy8vCisvLyAgIGVudW0gT3V0cHV0
TW9kZSB7IGtQbGFpblRleHQsIGtIdG1sIH07CisvLworLy8gICAvLyBBYnNsUGFyc2VGbGFnIGNv
bnZlcnRzIGZyb20gYSBzdHJpbmcgdG8gT3V0cHV0TW9kZS4KKy8vICAgLy8gTXVzdCBiZSBpbiBz
YW1lIG5hbWVzcGFjZSBhcyBPdXRwdXRNb2RlLgorLy8KKy8vICAgLy8gUGFyc2VzIGFuIE91dHB1
dE1vZGUgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGZsYWcgdmFsdWUgYHRleHQuIFJldHVybnMKKy8v
ICAgLy8gYHRydWVgIGFuZCBzZXRzIGAqbW9kZWAgb24gc3VjY2VzczsgcmV0dXJucyBgZmFsc2Vg
IGFuZCBzZXRzIGAqZXJyb3JgCisvLyAgIC8vIG9uIGZhaWx1cmUuCisvLyAgIGJvb2wgQWJzbFBh
cnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LAorLy8gICAgICAgICAgICAgICAgICAgICAg
T3V0cHV0TW9kZSogbW9kZSwKKy8vICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBl
cnJvcikgeworLy8gICAgIGlmICh0ZXh0ID09ICJwbGFpbnRleHQiKSB7CisvLyAgICAgICAqbW9k
ZSA9IGtQbGFpblRleHQ7CisvLyAgICAgICByZXR1cm4gdHJ1ZTsKKy8vICAgICB9CisvLyAgICAg
aWYgKHRleHQgPT0gImh0bWwiKSB7CisvLyAgICAgICAqbW9kZSA9IGtIdG1sOworLy8gICAgICBy
ZXR1cm4gdHJ1ZTsKKy8vICAgICB9CisvLyAgICAgKmVycm9yID0gInVua25vd24gdmFsdWUgZm9y
IGVudW1lcmF0aW9uIjsKKy8vICAgICByZXR1cm4gZmFsc2U7CisvLyAgfQorLy8KKy8vICAvLyBB
YnNsVW5wYXJzZUZsYWcgY29udmVydHMgZnJvbSBhbiBPdXRwdXRNb2RlIHRvIGEgc3RyaW5nLgor
Ly8gIC8vIE11c3QgYmUgaW4gc2FtZSBuYW1lc3BhY2UgYXMgT3V0cHV0TW9kZS4KKy8vCisvLyAg
Ly8gUmV0dXJucyBhIHRleHR1YWwgZmxhZyB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBPdXRw
dXRNb2RlIGBtb2RlYC4KKy8vICBzdGQ6OnN0cmluZyBBYnNsVW5wYXJzZUZsYWcoT3V0cHV0TW9k
ZSBtb2RlKSB7CisvLyAgICBzd2l0Y2ggKG1vZGUpIHsKKy8vICAgICAgY2FzZSBrUGxhaW5UZXh0
OiByZXR1cm4gInBsYWludGV4dCI7CisvLyAgICAgIGNhc2Uga0h0bWw6IHJldHVybiAiaHRtbCI7
CisvLyAgICB9CisvLyAgICByZXR1cm4gYWJzbDo6U3RyQ2F0KG1vZGUpOworLy8gIH0KKy8vCisv
LyBOb3RpY2UgdGhhdCBuZWl0aGVyIGBBYnNsUGFyc2VGbGFnKClgIG5vciBgQWJzbFVucGFyc2VG
bGFnKClgIGFyZSBjbGFzcworLy8gbWVtYmVycywgYnV0IGZyZWUgZnVuY3Rpb25zLiBgQWJzbFBh
cnNlRmxhZy9BYnNsVW5wYXJzZUZsYWcoKWAgb3ZlcmxvYWRzCisvLyBmb3IgYSB0eXBlIHNob3Vs
ZCBvbmx5IGJlIGRlY2xhcmVkIGluIHRoZSBzYW1lIGZpbGUgYW5kIG5hbWVzcGFjZSBhcyBzYWlk
CisvLyB0eXBlLiBUaGUgcHJvcGVyIGBBYnNsUGFyc2VGbGFnL0Fic2xVbnBhcnNlRmxhZygpYCBp
bXBsZW1lbnRhdGlvbnMgZm9yIGEKKy8vIGdpdmVuIHR5cGUgd2lsbCBiZSBkaXNjb3ZlcmVkIHZp
YSBBcmd1bWVudC1EZXBlbmRlbnQgTG9va3VwIChBREwpLgorLy8KKy8vIGBBYnNsUGFyc2VGbGFn
KClgIG1heSBuZWVkLCBpbiB0dXJuLCB0byBwYXJzZSBzaW1wbGVyIGNvbnN0aXR1ZW50IHR5cGVz
CisvLyB1c2luZyBgYWJzbDo6UGFyc2VGbGFnKClgLiBGb3IgZXhhbXBsZSwgYSBjdXN0b20gc3Ry
dWN0IGBNeUZsYWdUeXBlYAorLy8gY29uc2lzdGluZyBvZiBhIGBzdGQ6OnBhaXI8aW50LCBzdGQ6
OnN0cmluZz5gIHdvdWxkIGFkZCBhbiBgQWJzbFBhcnNlRmxhZygpYAorLy8gb3ZlcmxvYWQgZm9y
IGl0cyBgTXlGbGFnVHlwZWAgbGlrZSBzbzoKKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgbmFt
ZXNwYWNlIG15X2ZsYWdfdHlwZSB7CisvLworLy8gICBzdHJ1Y3QgTXlGbGFnVHlwZSB7CisvLyAg
ICAgc3RkOjpwYWlyPGludCwgc3RkOjpzdHJpbmc+IG15X2ZsYWdfZGF0YTsKKy8vICAgfTsKKy8v
CisvLyAgIGJvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBNeUZsYWdU
eXBlKiBmbGFnLAorLy8gICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIGVycik7Cisv
LworLy8gICBzdGQ6OnN0cmluZyBBYnNsVW5wYXJzZUZsYWcoY29uc3QgTXlGbGFnVHlwZSYpOwor
Ly8KKy8vICAgLy8gV2l0aGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgYEFic2xQYXJzZUZsYWcoKWAg
d2lsbCwgaW4gdHVybiBpbnZva2UKKy8vICAgLy8gYGFic2w6OlBhcnNlRmxhZygpYCBvbiBpdHMg
Y29uc3RpdHVlbnQgYGludGAgYW5kIGBzdGQ6OnN0cmluZ2AgdHlwZXMKKy8vICAgLy8gKHdoaWNo
IGhhdmUgYnVpbHQtaW4gQWJzZWlsIGZsYWcgc3VwcG9ydC4KKy8vCisvLyAgIGJvb2wgQWJzbFBh
cnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBNeUZsYWdUeXBlKiBmbGFnLAorLy8gICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIGVycikgeworLy8gICAgIHN0ZDo6cGFpcjxh
YnNsOjpzdHJpbmdfdmlldywgYWJzbDo6c3RyaW5nX3ZpZXc+IHRva2VucyA9CisvLyAgICAgICAg
IGFic2w6OlN0clNwbGl0KHRleHQsICcsJyk7CisvLyAgICAgaWYgKCFhYnNsOjpQYXJzZUZsYWco
dG9rZW5zLmZpcnN0LCAmZmxhZy0+bXlfZmxhZ19kYXRhLmZpcnN0LCBlcnIpKQorLy8gICAgICAg
ICByZXR1cm4gZmFsc2U7CisvLyAgICAgaWYgKCFhYnNsOjpQYXJzZUZsYWcodG9rZW5zLnNlY29u
ZCwgJmZsYWctPm15X2ZsYWdfZGF0YS5zZWNvbmQsIGVycikpCisvLyAgICAgICAgIHJldHVybiBm
YWxzZTsKKy8vICAgICByZXR1cm4gdHJ1ZTsKKy8vICAgfQorLy8KKy8vICAgLy8gU2ltaWxhcmx5
LCBmb3IgdW5wYXJzaW5nLCB3ZSBjYW4gc2ltcGx5IGludm9rZSBgYWJzbDo6VW5wYXJzZUZsYWco
KWAgb24KKy8vICAgLy8gdGhlIGNvbnN0aXR1ZW50IHR5cGVzLgorLy8gICBzdGQ6OnN0cmluZyBB
YnNsVW5wYXJzZUZsYWcoY29uc3QgTXlGbGFnVHlwZSYgZmxhZykgeworLy8gICAgIHJldHVybiBh
YnNsOjpTdHJDYXQoYWJzbDo6VW5wYXJzZUZsYWcoZmxhZy5teV9mbGFnX2RhdGEuZmlyc3QpLAor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgIiwiLAorLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6VW5wYXJzZUZsYWcoZmxhZy5teV9mbGFnX2RhdGEuc2Vjb25kKSk7CisvLyAgIH0K
KyNpZm5kZWYgQUJTTF9GTEFHU19NQVJTSEFMTElOR19IXworI2RlZmluZSBBQlNMX0ZMQUdTX01B
UlNIQUxMSU5HX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25hbWVzcGFjZSBhYnNsIHsK
K25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIE92ZXJsb2FkcyBvZiBgQWJzbFBhcnNl
RmxhZygpYCBhbmQgYEFic2xVbnBhcnNlRmxhZygpYCBmb3IgZnVuZGFtZW50YWwgdHlwZXMuCiti
b29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIGJvb2wqLCBzdGQ6OnN0cmluZyop
OworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCBzaG9ydCosIHN0ZDo6c3Ry
aW5nKik7ICAgICAgICAgICAvLyBOT0xJTlQKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJp
bmdfdmlldywgdW5zaWduZWQgc2hvcnQqLCBzdGQ6OnN0cmluZyopOyAgLy8gTk9MSU5UCitib29s
IEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIGludCosIHN0ZDo6c3RyaW5nKik7ICAg
ICAgICAgICAgIC8vIE5PTElOVAorYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3
LCB1bnNpZ25lZCBpbnQqLCBzdGQ6OnN0cmluZyopOyAgICAvLyBOT0xJTlQKK2Jvb2wgQWJzbFBh
cnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgbG9uZyosIHN0ZDo6c3RyaW5nKik7ICAgICAgICAg
ICAgLy8gTk9MSU5UCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIHVuc2ln
bmVkIGxvbmcqLCBzdGQ6OnN0cmluZyopOyAgIC8vIE5PTElOVAorYm9vbCBBYnNsUGFyc2VGbGFn
KGFic2w6OnN0cmluZ192aWV3LCBsb25nIGxvbmcqLCBzdGQ6OnN0cmluZyopOyAgICAgICAvLyBO
T0xJTlQKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgdW5zaWduZWQgbG9u
ZyBsb25nKiwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyopOyAgLy8gTk9MSU5UCiti
b29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIGZsb2F0Kiwgc3RkOjpzdHJpbmcq
KTsKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgZG91YmxlKiwgc3RkOjpz
dHJpbmcqKTsKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgc3RkOjpzdHJp
bmcqLCBzdGQ6OnN0cmluZyopOworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3
LCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qLCBzdGQ6OnN0cmluZyopOworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2Jvb2wgSW52b2tlUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IGlucHV0
LCBUKiBkc3QsIHN0ZDo6c3RyaW5nKiBlcnIpIHsKKyAgLy8gQ29tbWVudCBvbiBuZXh0IGxpbmUg
cHJvdmlkZXMgYSBnb29kIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2UgaWYgVAorICAvLyBkb2VzIG5v
dCBoYXZlIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIFQqLCBzdGQ6OnN0cmluZyop
LgorICByZXR1cm4gQWJzbFBhcnNlRmxhZyhpbnB1dCwgZHN0LCBlcnIpOyAgLy8gSXMgVCBtaXNz
aW5nIEFic2xQYXJzZUZsYWc/Cit9CisKKy8vIFN0cmluZ3MgYW5kIHN0ZDo6IGNvbnRhaW5lcnMg
ZG8gbm90IGhhdmUgdGhlIHNhbWUgb3ZlcmxvYWQgcmVzb2x1dGlvbgorLy8gY29uc2lkZXJhdGlv
bnMgYXMgZnVuZGFtZW50YWwgdHlwZXMuIE5hbWluZyB0aGVzZSAnQWJzbFVucGFyc2VGbGFnJyBt
ZWFucyB3ZQorLy8gY2FuIGF2b2lkIHRoZSBuZWVkIGZvciBhZGRpdGlvbmFsIHNwZWNpYWxpemF0
aW9ucyBvZiBVbnBhcnNlIChiZWxvdykuCitzdGQ6OnN0cmluZyBBYnNsVW5wYXJzZUZsYWcoYWJz
bDo6c3RyaW5nX3ZpZXcgdik7CitzdGQ6OnN0cmluZyBBYnNsVW5wYXJzZUZsYWcoY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+Jik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RkOjpz
dHJpbmcgVW5wYXJzZShjb25zdCBUJiB2KSB7CisgIC8vIENvbW1lbnQgb24gbmV4dCBsaW5lIHBy
b3ZpZGVzIGEgZ29vZCBjb21waWxlciBlcnJvciBtZXNzYWdlIGlmIFQgZG9lcyBub3QKKyAgLy8g
aGF2ZSBVbnBhcnNlRmxhZy4KKyAgcmV0dXJuIEFic2xVbnBhcnNlRmxhZyh2KTsgIC8vIElzIFQg
bWlzc2luZyBBYnNsVW5wYXJzZUZsYWc/Cit9CisKKy8vIE92ZXJsb2FkcyBmb3IgYnVpbHRpbiB0
eXBlcy4KK3N0ZDo6c3RyaW5nIFVucGFyc2UoYm9vbCB2KTsKK3N0ZDo6c3RyaW5nIFVucGFyc2Uo
c2hvcnQgdik7ICAgICAgICAgICAgICAgLy8gTk9MSU5UCitzdGQ6OnN0cmluZyBVbnBhcnNlKHVu
c2lnbmVkIHNob3J0IHYpOyAgICAgIC8vIE5PTElOVAorc3RkOjpzdHJpbmcgVW5wYXJzZShpbnQg
dik7ICAgICAgICAgICAgICAgICAvLyBOT0xJTlQKK3N0ZDo6c3RyaW5nIFVucGFyc2UodW5zaWdu
ZWQgaW50IHYpOyAgICAgICAgLy8gTk9MSU5UCitzdGQ6OnN0cmluZyBVbnBhcnNlKGxvbmcgdik7
ICAgICAgICAgICAgICAgIC8vIE5PTElOVAorc3RkOjpzdHJpbmcgVW5wYXJzZSh1bnNpZ25lZCBs
b25nIHYpOyAgICAgICAvLyBOT0xJTlQKK3N0ZDo6c3RyaW5nIFVucGFyc2UobG9uZyBsb25nIHYp
OyAgICAgICAgICAgLy8gTk9MSU5UCitzdGQ6OnN0cmluZyBVbnBhcnNlKHVuc2lnbmVkIGxvbmcg
bG9uZyB2KTsgIC8vIE5PTElOVAorc3RkOjpzdHJpbmcgVW5wYXJzZShmbG9hdCB2KTsKK3N0ZDo6
c3RyaW5nIFVucGFyc2UoZG91YmxlIHYpOworCit9ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJu
YWwKKworLy8gUGFyc2VGbGFnKCkKKy8vCisvLyBQYXJzZXMgYSBzdHJpbmcgdmFsdWUgaW50byBh
IGZsYWcgdmFsdWUgb2YgdHlwZSBgVGAuIERvIG5vdCBhZGQgb3ZlcmxvYWRzIG9mCisvLyB0aGlz
IGZ1bmN0aW9uIGZvciB5b3VyIHR5cGUgZGlyZWN0bHk7IGluc3RlYWQsIGFkZCBhbiBgQWJzbFBh
cnNlRmxhZygpYAorLy8gZnJlZSBmdW5jdGlvbiBhcyBkb2N1bWVudGVkIGFib3ZlLgorLy8KKy8v
IFNvbWUgaW1wbGVtZW50YXRpb25zIG9mIGBBYnNsUGFyc2VGbGFnKClgIGZvciB0eXBlcyB3aGlj
aCBjb25zaXN0IG9mIG90aGVyLAorLy8gY29uc3RpdHVlbnQgdHlwZXMgd2hpY2ggYWxyZWFkeSBo
YXZlIEFic2VpbCBmbGFnIHN1cHBvcnQsIG1heSBuZWVkIHRvIGNhbGwKKy8vIGBhYnNsOjpQYXJz
ZUZsYWcoKWAgb24gdGhvc2UgY29uc2l0dWVudCBzdHJpbmcgdmFsdWVzLiAoU2VlIGFib3ZlLikK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIGJvb2wgUGFyc2VGbGFnKGFic2w6OnN0cmlu
Z192aWV3IGlucHV0LCBUKiBkc3QsIHN0ZDo6c3RyaW5nKiBlcnJvcikgeworICByZXR1cm4gZmxh
Z3NfaW50ZXJuYWw6Okludm9rZVBhcnNlRmxhZyhpbnB1dCwgZHN0LCBlcnJvcik7Cit9CisKKy8v
IFVucGFyc2VGbGFnKCkKKy8vCisvLyBVbnBhcnNlcyBhIGZsYWcgdmFsdWUgb2YgdHlwZSBgVGAg
aW50byBhIHN0cmluZyB2YWx1ZS4gRG8gbm90IGFkZCBvdmVybG9hZHMKKy8vIG9mIHRoaXMgZnVu
Y3Rpb24gZm9yIHlvdXIgdHlwZSBkaXJlY3RseTsgaW5zdGVhZCwgYWRkIGFuIGBBYnNsVW5wYXJz
ZUZsYWcoKWAKKy8vIGZyZWUgZnVuY3Rpb24gYXMgZG9jdW1lbnRlZCBhYm92ZS4KKy8vCisvLyBT
b21lIGltcGxlbWVudGF0aW9ucyBvZiBgQWJzbFVucGFyc2VGbGFnKClgIGZvciB0eXBlcyB3aGlj
aCBjb25zaXN0IG9mIG90aGVyLAorLy8gY29uc3RpdHVlbnQgdHlwZXMgd2hpY2ggYWxyZWFkeSBo
YXZlIEFic2VpbCBmbGFnIHN1cHBvcnQsIG1heSB3YW50IHRvIGNhbGwKKy8vIGBhYnNsOjpVbnBh
cnNlRmxhZygpYCBvbiB0aG9zZSBjb25zdGl0dWVudCB0eXBlcy4gKFNlZSBhYm92ZS4pCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSBzdGQ6OnN0cmluZyBVbnBhcnNlRmxhZyhjb25zdCBU
JiB2KSB7CisgIHJldHVybiBmbGFnc19pbnRlcm5hbDo6VW5wYXJzZSh2KTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0ZMQUdTX01BUlNIQUxMSU5HX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9tYXJzaGFsbGluZ190ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3Mv
bWFyc2hhbGxpbmdfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMzdjZDE5NDBlMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9tYXJzaGFsbGlu
Z190ZXN0LmNjCkBAIC0wLDAgKzEsODk5IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9tYXJzaGFsbGluZy5oIgor
CisjaW5jbHVkZSA8Y21hdGg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2UgeworCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdEJvb2xQYXJzaW5nKSB7CisgIHN0ZDo6
c3RyaW5nIGVycjsKKyAgYm9vbCB2YWx1ZTsKKworICAvLyBUcnVlIHZhbHVlcy4KKyAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJUcnVlIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9U
UlVFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJ0cnVlIiwgJnZhbHVl
LCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCJUUlVFIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHZhbHVlKTsKKwor
ICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIlllcyIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfVFJVRSh2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygieWVzIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCJZRVMiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUodmFsdWUp
OworCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygidCIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiVCIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6UGFyc2VGbGFnKCJ5IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHZhbHVl
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJZIiwgJnZhbHVlLCAmZXJyKSk7Cisg
IEVYUEVDVF9UUlVFKHZhbHVlKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUodmFsdWUpOworCisgIC8vIEZhbHNlIHZh
bHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJGYWxzZSIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRkFMU0UodmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoImZhbHNlIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRSh2YWx1ZSk7CisgIEVY
UEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiRkFMU0UiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKHZhbHVlKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIk5vIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRSh2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OlBhcnNlRmxhZygibm8iLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKHZhbHVl
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJOTyIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfRkFMU0UodmFsdWUpOworCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygi
ZiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UodmFsdWUpOworICBFWFBFQ1RfVFJV
RShhYnNsOjpQYXJzZUZsYWcoIkYiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKHZh
bHVlKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIm4iLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX0ZBTFNFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCJOIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRSh2YWx1ZSk7CisKKyAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxT
RSh2YWx1ZSk7CisKKyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZy4KKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCIgIHRydWUiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUodmFs
dWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoInRydWUgICIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxh
ZygiICB0cnVlICAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHZhbHVlKTsKKwor
ICAvLyBJbnZhbGlkIGlucHV0LgorICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiICAiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXG4iLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXHQiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMiIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIxMSIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJ0dCIsICZ2YWx1ZSwgJmVycikpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdEludDE2UGFyc2lu
ZykgeworICBzdGQ6OnN0cmluZyBlcnI7CisgIGludDE2X3QgdmFsdWU7CisKKyAgLy8gRGVjaW1h
bCB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMSIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoIjAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAwKTsKKyAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VGbGFnKCItMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEo
dmFsdWUsIC0xKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxMjMiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMjMpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoIi0xODc2NSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIC0x
ODc2NSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiKzMiLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAzKTsKKworICAvLyBMZWFkaW5nIHplcm8gdmFsdWVzLgor
ICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiLTAwMSIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIC0xKTsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6UGFyc2VGbGFnKCIwMDAwMTAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2
YWx1ZSwgMTAwKTsKKworICAvLyBIZXggdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJz
ZUZsYWcoIjB4MTAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxNik7Cisg
IEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMFgyMzQiLCAmdmFsdWUsICZlcnIpKTsKKyAg
RVhQRUNUX0VRKHZhbHVlLCA1NjQpOworICAvLyBUT0RPKHJvZ2VlZmYpOiBmaXggYmVsb3cgdmFs
aWRhdGlvbnMKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiLTB4N0ZGRCIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfTkUodmFsdWUsIC0zKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6
OlBhcnNlRmxhZygiKzB4MzEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FKHZhbHVlLCA0
OSk7CisKKyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJz
ZUZsYWcoIjEwICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMCk7Cisg
IEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAxMSIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRVEodmFsdWUsIDExKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDAx
MiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTIpOworICBFWFBFQ1Rf
VFJVRShhYnNsOjpQYXJzZUZsYWcoIiAweDIyICAgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfRVEodmFsdWUsIDM0KTsKKworICAvLyBJbnZhbGlkIHZhbHVlcy4KKyAgRVhQRUNUX0ZBTFNF
KGFic2w6OlBhcnNlRmxhZygiIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNs
OjpQYXJzZUZsYWcoIiAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBh
cnNlRmxhZygiICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNl
RmxhZygiNDAwMDAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNl
RmxhZygiLS0xIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZs
YWcoIlxuIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWco
Ilx0IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIjJV
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIkZGRiIs
ICZ2YWx1ZSwgJmVycikpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5n
VGVzdCwgVGVzdFVpbnQxNlBhcnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJyOworICB1aW50MTZf
dCB2YWx1ZTsKKworICAvLyBEZWNpbWFsIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCIxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVY
UEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1Rf
RVEodmFsdWUsIDApOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEyMyIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEyMyk7CisgIEVYUEVDVF9UUlVFKGFic2w6
OlBhcnNlRmxhZygiKzMiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAzKTsK
KworICAvLyBMZWFkaW5nIHplcm8gdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoIjAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9F
USh2YWx1ZSwgMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDAwMDEwMCIsICZ2
YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEwMCk7CisKKyAgLy8gSGV4IHZhbHVl
cy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDEwIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTYpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWco
IjBYMjM0IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgNTY0KTsKKyAgLy8g
VE9ETyhyb2dlZWZmKTogZml4IGJlbG93IHZhbGlkYXRpb25zCisgIEVYUEVDVF9GQUxTRShhYnNs
OjpQYXJzZUZsYWcoIisweDMxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORSh2YWx1ZSwg
NDkpOworCisgIC8vIFdoaXRlc3BhY2UgaGFuZGxpbmcKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCIxMCAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTApOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAgMTEiLCAmdmFsdWUsICZlcnIpKTsKKyAg
RVhQRUNUX0VRKHZhbHVlLCAxMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAw
MTIgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEyKTsKKyAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgMHgyMiAgICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQ
RUNUX0VRKHZhbHVlLCAzNCk7CisKKyAgLy8gSW52YWxpZCB2YWx1ZXMuCisgIEVYUEVDVF9GQUxT
RShhYnNsOjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJz
bDo6UGFyc2VGbGFnKCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQ
YXJzZUZsYWcoIiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJz
ZUZsYWcoIjcwMDAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJz
ZUZsYWcoIi0xIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZs
YWcoIi0tMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFn
KCJcbiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJc
dCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIyVSIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJGRkYiLCAm
dmFsdWUsICZlcnIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rl
c3QsIFRlc3RJbnQzMlBhcnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJyOworICBpbnQzMl90IHZh
bHVlOworCisgIC8vIERlY2ltYWwgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoIjEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2
YWx1ZSwgMCk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiLTEiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAtMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNl
RmxhZygiMTIzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTIzKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCItOTg3NjUiLCAmdmFsdWUsICZlcnIpKTsKKyAg
RVhQRUNUX0VRKHZhbHVlLCAtOTg3NjUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWco
IiszIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMyk7CisKKyAgLy8gTGVh
ZGluZyB6ZXJvIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMSIsICZ2
YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEpOworICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIi0wMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAt
MSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDAwMDEwMCIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEwMCk7CisKKyAgLy8gSGV4IHZhbHVlcy4KKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDEwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVD
VF9FUSh2YWx1ZSwgMTYpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjBYMjM0Iiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgNTY0KTsKKyAgLy8gVE9ETyhyb2dl
ZWZmKTogZml4IGJlbG93IHZhbGlkYXRpb25zCisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZs
YWcoIi0weDdGRkZGRkZEIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORSh2YWx1ZSwgLTMp
OworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIrMHgzMSIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfTkUodmFsdWUsIDQ5KTsKKworICAvLyBXaGl0ZXNwYWNlIGhhbmRsaW5nCisg
IEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMTAgICIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRVEodmFsdWUsIDEwKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDEx
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTEpOworICBFWFBFQ1RfVFJV
RShhYnNsOjpQYXJzZUZsYWcoIiAgMDEyICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VR
KHZhbHVlLCAxMik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiIDB4MjIgICAgIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMzQpOworCisgIC8vIEludmFsaWQg
dmFsdWVzLgorICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIiLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiICIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIgICIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCI3MDAwMDAwMDAwMCIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCItLTEiLCAmdmFsdWUsICZlcnIpKTsK
KyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXG4iLCAmdmFsdWUsICZlcnIpKTsKKyAg
RVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXHQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMlUiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNU
X0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiRkZGIiwgJnZhbHVlLCAmZXJyKSk7Cit9CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0VWludDMyUGFyc2luZykgewor
ICBzdGQ6OnN0cmluZyBlcnI7CisgIHVpbnQzMl90IHZhbHVlOworCisgIC8vIERlY2ltYWwgdmFs
dWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEiLCAmdmFsdWUsICZlcnIpKTsK
KyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIw
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMCk7CisgIEVYUEVDVF9UUlVF
KGFic2w6OlBhcnNlRmxhZygiMTIzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1
ZSwgMTIzKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIrMyIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRVEodmFsdWUsIDMpOworCisgIC8vIExlYWRpbmcgemVybyB2YWx1ZXMu
CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAg
RVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDAw
MTAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTAwKTsKKworICAvLyBI
ZXggdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4MTAiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxNik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBh
cnNlRmxhZygiMFgyMzQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCA1NjQp
OworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4RkZGRkZGRkQiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCA0Mjk0OTY3MjkzKTsKKyAgLy8gVE9ETyhyb2dlZWZm
KTogZml4IGJlbG93IHZhbGlkYXRpb25zCisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWco
IisweDMxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORSh2YWx1ZSwgNDkpOworCisgIC8v
IFdoaXRlc3BhY2UgaGFuZGxpbmcKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxMCAg
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTApOworICBFWFBFQ1RfVFJV
RShhYnNsOjpQYXJzZUZsYWcoIiAgMTEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZh
bHVlLCAxMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAwMTIgICIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEyKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
UGFyc2VGbGFnKCIgMHgyMiAgICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVl
LCAzNCk7CisKKyAgLy8gSW52YWxpZCB2YWx1ZXMuCisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJz
ZUZsYWcoIiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFn
KCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIiAg
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIjE0MDAw
MDAwMDAwMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFn
KCItMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIt
LTEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXG4i
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXHQiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMlUiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiRkZGIiwgJnZhbHVl
LCAmZXJyKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBU
ZXN0SW50NjRQYXJzaW5nKSB7CisgIHN0ZDo6c3RyaW5nIGVycjsKKyAgaW50NjRfdCB2YWx1ZTsK
KworICAvLyBEZWNpbWFsIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIx
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVYUEVDVF9UUlVF
KGFic2w6OlBhcnNlRmxhZygiMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUs
IDApOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIi0xIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9FUSh2YWx1ZSwgLTEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWco
IjEyMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEyMyk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OlBhcnNlRmxhZygiLTk4NzY1IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVD
VF9FUSh2YWx1ZSwgLTk4NzY1KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIrMyIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDMpOworCisgIC8vIExlYWRpbmcg
emVybyB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDEiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCIwMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDAwMTAwIiwgJnZhbHVlLCAmZXJyKSk7Cisg
IEVYUEVDVF9FUSh2YWx1ZSwgMTAwKTsKKworICAvLyBIZXggdmFsdWVzLgorICBFWFBFQ1RfVFJV
RShhYnNsOjpQYXJzZUZsYWcoIjB4MTAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZh
bHVlLCAxNik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMFhGRkZBQUFCQkJDQ0NE
REQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMTUyODI3Njg0MTk3MDI3
MjkzKTsKKyAgLy8gVE9ETyhyb2dlZWZmKTogZml4IGJlbG93IHZhbGlkYXRpb24KKyAgRVhQRUNU
X0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiLTB4N0ZGRkZGRkZGRkZGRkZGRSIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfTkUodmFsdWUsIC0yKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNl
RmxhZygiKzB4MzEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FKHZhbHVlLCA0OSk7CisK
KyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWco
IjEwICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMCk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAxMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1Rf
RVEodmFsdWUsIDExKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDAxMiAgIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTIpOworICBFWFBFQ1RfVFJVRShh
YnNsOjpQYXJzZUZsYWcoIiAweDdGICAgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEo
dmFsdWUsIDEyNyk7CisKKyAgLy8gSW52YWxpZCB2YWx1ZXMuCisgIEVYUEVDVF9GQUxTRShhYnNs
OjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFy
c2VGbGFnKCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZs
YWcoIiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWco
IjB4RkZGRkZGRkZGRkZGRkZGRkZGIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShh
YnNsOjpQYXJzZUZsYWcoIi0tMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJz
bDo6UGFyc2VGbGFnKCJcbiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6
UGFyc2VGbGFnKCJcdCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFy
c2VGbGFnKCIyVSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VG
bGFnKCJGRkYiLCAmdmFsdWUsICZlcnIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChN
YXJzaGFsbGluZ1Rlc3QsIFRlc3RVSW50NjRQYXJzaW5nKSB7CisgIHN0ZDo6c3RyaW5nIGVycjsK
KyAgdWludDY0X3QgdmFsdWU7CisKKyAgLy8gRGVjaW1hbCB2YWx1ZXMuCisgIEVYUEVDVF9UUlVF
KGFic2w6OlBhcnNlRmxhZygiMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUs
IDEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAiLCAmdmFsdWUsICZlcnIpKTsK
KyAgRVhQRUNUX0VRKHZhbHVlLCAwKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIx
MjMiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMjMpOworICBFWFBFQ1Rf
VFJVRShhYnNsOjpQYXJzZUZsYWcoIisxMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEo
dmFsdWUsIDEzKTsKKworICAvLyBMZWFkaW5nIHplcm8gdmFsdWVzLgorICBFWFBFQ1RfVFJVRShh
YnNsOjpQYXJzZUZsYWcoIjAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwg
MSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDAxIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygi
MDAwMDMwMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDMwMCk7CisKKyAg
Ly8gSGV4IHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDEwIiwgJnZh
bHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTYpOworICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIjBYRkZGRiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUs
IDY1NTM1KTsKKyAgLy8gVE9ETyhyb2dlZWZmKTogZml4IGJlbG93IHZhbGlkYXRpb24KKyAgRVhQ
RUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiKzB4MzEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQ
RUNUX05FKHZhbHVlLCA0OSk7CisKKyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZworICBFWFBFQ1Rf
VFJVRShhYnNsOjpQYXJzZUZsYWcoIjEwICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VR
KHZhbHVlLCAxMCk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAxMSIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDExKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
UGFyc2VGbGFnKCIgIDAxMiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwg
MTIpOworCisgIC8vIEludmFsaWQgdmFsdWVzLgorICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VG
bGFnKCIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygi
ICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIgICIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIweEZGRkZG
RkZGRkZGRkZGRkZGRiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFy
c2VGbGFnKCItMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VG
bGFnKCItLTEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxh
ZygiXG4iLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygi
XHQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMlUi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiRkZGIiwg
JnZhbHVlLCAmZXJyKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdU
ZXN0LCBUZXN0RmxvYXRQYXJzaW5nKSB7CisgIHN0ZDo6c3RyaW5nIGVycjsKKyAgZmxvYXQgdmFs
dWU7CisKKyAgLy8gT3JkaW5hcnkgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoIjEuMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkxPQVRfRVEodmFsdWUsIDEuM2Yp
OworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIi0wLjEiLCAmdmFsdWUsICZlcnIpKTsK
KyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgLTAuMWYpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoIiswLjAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFs
dWUsIDAuMDFmKTsKKworICAvLyBTY2llbnRpZmljIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCIxLjJlMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VR
KHZhbHVlLCAxLjJlM2YpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjkuODc2NTQw
MmUtMzciLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgOS44NzY1
NDAyZS0zN2YpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAuMTFlKzMiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgMC4xMWUrM2YpOworICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEuZS0yMzAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9ET1VCTEVfRVEodmFsdWUsIDAuZik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxh
ZygiMS5lKzIzMDAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc2luZih2
YWx1ZSkpOworCisgIC8vIExlYWRpbmcgemVybyB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6
OlBhcnNlRmxhZygiMDEuNiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZh
bHVlLCAxLjZmKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDAuMDAwMSIsICZ2
YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAwLjAwMDFmKTsKKworICAv
LyBUcmFpbGluZyB6ZXJvIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIt
NS4xMDAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIC01LjFm
KTsKKworICAvLyBFeGNlcHRpb25hbCB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNl
RmxhZygiTmFOIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNuYW4odmFs
dWUpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJJbmYiLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc2luZih2YWx1ZSkpOworCisgIC8vIEhleCB2YWx1ZXMK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDEwLjIzcDEyIiwgJnZhbHVlLCAmZXJy
KSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDY2MDk2LmYpOworICBFWFBFQ1RfVFJVRShh
YnNsOjpQYXJzZUZsYWcoIi0weEYxLkEzcC0yIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9O
RUFSKHZhbHVlLCAtNjAuNDA5MmYsIDVlLTVmKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCIrMHgwLjBBQXAtMTIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FQVIodmFsdWUs
IDEuMDEzMjhlLTA1ZiwgNWUtMTFmKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIw
eC4wMXAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORUFSKHZhbHVlLCAwLjAwNzgxMjVm
LCA1ZS04Zik7CisKKyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZworICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIjEwLjEgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VR
KHZhbHVlLCAxMC4xZik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAyLjM0Iiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDIuMzRmKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDUuNyAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9ET1VCTEVfRVEodmFsdWUsIDUuN2YpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoIiAgLTB4RTAuRjNwMDEgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfTkVBUih2YWx1
ZSwgLTQ0OS44OTg0Mzc1ZiwgNWUtOGYpOworCisgIC8vIEludmFsaWQgdmFsdWVzLgorICBFWFBF
Q1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZB
TFNFKGFic2w6OlBhcnNlRmxhZygiICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0Uo
YWJzbDo6UGFyc2VGbGFnKCIgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJz
bDo6UGFyc2VGbGFnKCItLTEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6
OlBhcnNlRmxhZygiXG4iLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBh
cnNlRmxhZygiXHQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNl
RmxhZygiMi4zeHh4IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJz
ZUZsYWcoIjB4MC4xcEFBIiwgJnZhbHVlLCAmZXJyKSk7CisgIC8vIFRPRE8ocm9nZWVmZik6IGJl
bG93IGFzc2VydGlvbiBzaG91bGQgZmFpbAorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWco
IjB4MC4xIiwgJnZhbHVlLCAmZXJyKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFy
c2hhbGxpbmdUZXN0LCBUZXN0RG91YmxlUGFyc2luZykgeworICBzdGQ6OnN0cmluZyBlcnI7Cisg
IGRvdWJsZSB2YWx1ZTsKKworICAvLyBPcmRpbmFyeSB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFi
c2w6OlBhcnNlRmxhZygiMS4zIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEo
dmFsdWUsIDEuMyk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiLTAuMSIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAtMC4xKTsKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6UGFyc2VGbGFnKCIrMC4wMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9V
QkxFX0VRKHZhbHVlLCAwLjAxKTsKKworICAvLyBTY2llbnRpZmljIHZhbHVlcy4KKyAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxLjJlMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1Rf
RE9VQkxFX0VRKHZhbHVlLCAxLjJlMyk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygi
OS4wMDAwMDAwMmUtMTIzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFs
dWUsIDkuMDAwMDAwMDJlLTEyMyk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMC4x
MWUrMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAwLjExZSsz
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxLmUtMjMwMCIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAwKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
UGFyc2VGbGFnKCIxLmUrMjMwMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfVFJVRShzdGQ6
OmlzaW5mKHZhbHVlKSk7CisKKyAgLy8gTGVhZGluZyB6ZXJvIHZhbHVlcy4KKyAgRVhQRUNUX1RS
VUUoYWJzbDo6UGFyc2VGbGFnKCIwMS42IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VC
TEVfRVEodmFsdWUsIDEuNik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDAwLjAw
MDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgMC4wMDAxKTsK
KworICAvLyBUcmFpbGluZyB6ZXJvIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCItNS4xMDAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUs
IC01LjEpOworCisgIC8vIEV4Y2VwdGlvbmFsIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6
UGFyc2VGbGFnKCJOYU4iLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc25h
bih2YWx1ZSkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIm5hbiIsICZ2YWx1ZSwg
JmVycikpOworICBFWFBFQ1RfVFJVRShzdGQ6OmlzbmFuKHZhbHVlKSk7CisgIEVYUEVDVF9UUlVF
KGFic2w6OlBhcnNlRmxhZygiSW5mIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHN0
ZDo6aXNpbmYodmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJpbmYiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc2luZih2YWx1ZSkpOworCisgIC8v
IEhleCB2YWx1ZXMKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDEwLjIzcDEyIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDY2MDk2KTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCItMHhGMS5BM3AtMiIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfTkVBUih2YWx1ZSwgLTYwLjQwOTIsIDVlLTUpOworICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIisweDAuMEFBcC0xMiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfTkVB
Uih2YWx1ZSwgMS4wMTMyOGUtMDUsIDVlLTExKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCIweC4wMXAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORUFSKHZhbHVlLCAwLjAw
NzgxMjUsIDVlLTgpOworCisgIC8vIFdoaXRlc3BhY2UgaGFuZGxpbmcKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6UGFyc2VGbGFnKCIxMC4xICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJM
RV9FUSh2YWx1ZSwgMTAuMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAyLjM0
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDIuMzQpOworICBF
WFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAgNS43ICAiLCAmdmFsdWUsICZlcnIpKTsKKyAg
RVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgNS43KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCIgIC0weEUwLkYzcDAxICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FQVIodmFs
dWUsIC00NDkuODk4NDM3NSwgNWUtOCk7CisKKyAgLy8gSW52YWxpZCB2YWx1ZXMuCisgIEVYUEVD
VF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFM
U0UoYWJzbDo6UGFyc2VGbGFnKCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShh
YnNsOjpQYXJzZUZsYWcoIiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNs
OjpQYXJzZUZsYWcoIi0tMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6
UGFyc2VGbGFnKCJcbiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFy
c2VGbGFnKCJcdCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VG
bGFnKCIyLjN4eHgiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNl
RmxhZygiMHgwLjFwQUEiLCAmdmFsdWUsICZlcnIpKTsKKyAgLy8gVE9ETyhyb2dlZWZmKTogYmVs
b3cgYXNzZXJ0aW9uIHNob3VsZCBmYWlsCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygi
MHgwLjEiLCAmdmFsdWUsICZlcnIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJz
aGFsbGluZ1Rlc3QsIFRlc3RTdHJpbmdQYXJzaW5nKSB7CisgIHN0ZDo6c3RyaW5nIGVycjsKKyAg
c3RkOjpzdHJpbmcgdmFsdWU7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAiIik7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OlBhcnNlRmxhZygiICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsICIg
Iik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAgIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9FUSh2YWx1ZSwgIiAgICIpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoIlxuIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgIlxuIik7CisgIEVY
UEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiXHQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNU
X0VRKHZhbHVlLCAiXHQiKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJhc2RmZyIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsICJhc2RmZyIpOworICBFWFBFQ1Rf
VFJVRShhYnNsOjpQYXJzZUZsYWcoImFzZGYgZ2hqayIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfRVEodmFsdWUsICJhc2RmIGdoamsiKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCJhXG5iXG5jIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgImFcbmJcbmMi
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJhc2RcMGZnaCIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRVEodmFsdWUsICJhc2QiKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCJcXFxcIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgIlxcXFwi
KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRlc3RWZWN0
b3JPZlN0cmluZ1BhcnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJyOworICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gdmFsdWU7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz57fSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMSIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfRVEodmFsdWUsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7IjEifSkpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoImEsYiIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRVEodmFsdWUsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7ImEiLCAiYiJ9KSk7Cisg
IEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiYSxiLGMsIiwgJnZhbHVlLCAmZXJyKSk7Cisg
IEVYUEVDVF9FUSh2YWx1ZSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHsiYSIsICJiIiwgImMi
LCAiIn0pKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJhLCwiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oeyJhIiwg
IiIsICIifSkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiwiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oeyIiLCAi
In0pKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJhLCBiLGMgIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHsiYSIs
ICIgYiIsICJjICJ9KSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdU
ZXN0LCBUZXN0Qm9vbFVucGFyc2luZykgeworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWco
dHJ1ZSksICJ0cnVlIik7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyhmYWxzZSksICJm
YWxzZSIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVz
dEludDE2VW5wYXJzaW5nKSB7CisgIGludDE2X3QgdmFsdWU7CisKKyAgdmFsdWUgPSAxOworICBF
WFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMSIpOworICB2YWx1ZSA9IDA7Cisg
IEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVlID0gLTE7
CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICItMSIpOworICB2YWx1ZSA9
IDk4NzY7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICI5ODc2Iik7Cisg
IHZhbHVlID0gLTk4NzsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIi05
ODciKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRlc3RV
aW50MTZVbnBhcnNpbmcpIHsKKyAgdWludDE2X3QgdmFsdWU7CisKKyAgdmFsdWUgPSAxOworICBF
WFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMSIpOworICB2YWx1ZSA9IDA7Cisg
IEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVlID0gMTk4
NzY7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxOTg3NiIpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdEludDMyVW5wYXJz
aW5nKSB7CisgIGludDMyX3QgdmFsdWU7CisKKyAgdmFsdWUgPSAxOworICBFWFBFQ1RfRVEoYWJz
bDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMSIpOworICB2YWx1ZSA9IDA7CisgIEVYUEVDVF9FUShh
YnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVlID0gLTE7CisgIEVYUEVDVF9F
UShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICItMSIpOworICB2YWx1ZSA9IDEyMzQ1OworICBF
WFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMTIzNDUiKTsKKyAgdmFsdWUgPSAt
OTg3OworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiLTk4NyIpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdFVpbnQzMlVucGFy
c2luZykgeworICB1aW50MzJfdCB2YWx1ZTsKKworICB2YWx1ZSA9IDE7CisgIEVYUEVDVF9FUShh
YnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxIik7CisgIHZhbHVlID0gMDsKKyAgRVhQRUNUX0VR
KGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjAiKTsKKyAgdmFsdWUgPSAxMjM0NTAwOworICBF
WFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMTIzNDUwMCIpOworfQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdEludDY0VW5wYXJzaW5nKSB7
CisgIGludDY0X3QgdmFsdWU7CisKKyAgdmFsdWUgPSAxOworICBFWFBFQ1RfRVEoYWJzbDo6VW5w
YXJzZUZsYWcodmFsdWUpLCAiMSIpOworICB2YWx1ZSA9IDA7CisgIEVYUEVDVF9FUShhYnNsOjpV
bnBhcnNlRmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVlID0gLTE7CisgIEVYUEVDVF9FUShhYnNs
OjpVbnBhcnNlRmxhZyh2YWx1ZSksICItMSIpOworICB2YWx1ZSA9IDEyMzQ1Njc4OUw7CisgIEVY
UEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxMjM0NTY3ODkiKTsKKyAgdmFsdWUg
PSAtOTg3NjU0MzIxTDsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIi05
ODc2NTQzMjEiKTsKKyAgdmFsdWUgPSAweDdGRkZGRkZGRkZGRkZGRkY7CisgIEVYUEVDVF9FUShh
YnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICI5MjIzMzcyMDM2ODU0Nzc1ODA3Iik7CisgIHZhbHVl
ID0gMHhGRkZGRkZGRkZGRkZGRkZGOworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFs
dWUpLCAiLTEiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rlc3Qs
IFRlc3RVaW50NjRVbnBhcnNpbmcpIHsKKyAgdWludDY0X3QgdmFsdWU7CisKKyAgdmFsdWUgPSAx
OworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMSIpOworICB2YWx1ZSA9
IDA7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVl
ID0gMTIzNDU2Nzg5TDsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjEy
MzQ1Njc4OSIpOworICB2YWx1ZSA9IDB4RkZGRkZGRkZGRkZGRkZGRjsKKyAgRVhQRUNUX0VRKGFi
c2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjE4NDQ2NzQ0MDczNzA5NTUxNjE1Iik7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0RmxvYXRVbnBhcnNpbmcp
IHsKKyAgZmxvYXQgdmFsdWU7CisKKyAgdmFsdWUgPSAxLjFmOworICBFWFBFQ1RfRVEoYWJzbDo6
VW5wYXJzZUZsYWcodmFsdWUpLCAiMS4xIik7CisgIHZhbHVlID0gMC4wMWY7CisgIEVYUEVDVF9F
UShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwLjAxIik7CisgIHZhbHVlID0gMS4yM2UtMmY7
CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwLjAxMjMiKTsKKyAgdmFs
dWUgPSAtMC43MWY7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICItMC43
MSIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdERv
dWJsZVVucGFyc2luZykgeworICBkb3VibGUgdmFsdWU7CisKKyAgdmFsdWUgPSAxLjE7CisgIEVY
UEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxLjEiKTsKKyAgdmFsdWUgPSAwLjAx
OworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMC4wMSIpOworICB2YWx1
ZSA9IDEuMjNlLTI7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwLjAx
MjMiKTsKKyAgdmFsdWUgPSAtMC43MTsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZh
bHVlKSwgIi0wLjcxIik7CisgIHZhbHVlID0gLTA7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNl
RmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVlID0gc3RkOjpuYW4oIiIpOworICBFWFBFQ1RfRVEo
YWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAibmFuIik7CisgIHZhbHVlID0gc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZs
YWcodmFsdWUpLCAiaW5mIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxp
bmdUZXN0LCBUZXN0U3RyaW5nVW5wYXJzaW5nKSB7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNl
RmxhZygiIiksICIiKTsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKCIgIiksICIgIik7
CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZygicXdlcnR5IiksICJxd2VydHkiKTsKKyAg
RVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKCJBU0RGR0giKSwgIkFTREZHSCIpOworICBFWFBF
Q1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcoIlxuXHQgICIpLCAiXG5cdCAgIik7Cit9CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBUZXN0Um91bmR0cmlwKFQg
dikgeworICBUIG5ld192OworICBzdGQ6OnN0cmluZyBlcnI7CisgIEVYUEVDVF9UUlVFKGFic2w6
OlBhcnNlRmxhZyhhYnNsOjpVbnBhcnNlRmxhZyh2KSwgJm5ld192LCAmZXJyKSk7CisgIEVYUEVD
VF9FUShuZXdfdiwgdik7Cit9CisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0RmxvYXRSb3Vu
ZFRyaXApIHsKKyAgVGVzdFJvdW5kdHJpcCgwLjFmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyZik7
CisgIFRlc3RSb3VuZHRyaXAoMC4xMjNmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzRmKTsKKyAg
VGVzdFJvdW5kdHJpcCgwLjEyMzQ1Zik7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTZmKTsKKyAg
VGVzdFJvdW5kdHJpcCgwLjEyMzQ1NjdmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4Zik7
CisKKyAgVGVzdFJvdW5kdHJpcCgwLjFlMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyZTIwZik7
CisgIFRlc3RSb3VuZHRyaXAoMC4xMjNlMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzRlMjBm
KTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1ZTIwZik7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0
NTZlMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NjdlMjBmKTsKKyAgVGVzdFJvdW5kdHJp
cCgwLjEyMzQ1Njc4ZTIwZik7CisKKyAgVGVzdFJvdW5kdHJpcCgwLjFlLTIwZik7CisgIFRlc3RS
b3VuZHRyaXAoMC4xMmUtMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyM2UtMjBmKTsKKyAgVGVz
dFJvdW5kdHJpcCgwLjEyMzRlLTIwZik7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NWUtMjBmKTsK
KyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NmUtMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1
NjdlLTIwZik7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3OGUtMjBmKTsKK30KKworVEVTVChN
YXJzaGFsbGluZ1Rlc3QsIFRlc3REb3VibGVSb3VuZFRyaXApIHsKKyAgVGVzdFJvdW5kdHJpcCgw
LjEpOworICBUZXN0Um91bmR0cmlwKDAuMTIpOworICBUZXN0Um91bmR0cmlwKDAuMTIzKTsKKyAg
VGVzdFJvdW5kdHJpcCgwLjEyMzQpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDUpOworICBUZXN0
Um91bmR0cmlwKDAuMTIzNDU2KTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NjcpOworICBUZXN0
Um91bmR0cmlwKDAuMTIzNDU2NzgpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5KTsKKyAg
VGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5
MTIpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzKTsKKyAgVGVzdFJvdW5kdHJpcCgw
LjEyMzQ1Njc4OTEyMzQpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDUpOworICBU
ZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2KTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1
Njc4OTEyMzQ1NjcpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2NzgpOworCisg
IFRlc3RSb3VuZHRyaXAoMC4xZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyZTUwKTsKKyAgVGVz
dFJvdW5kdHJpcCgwLjEyM2U1MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0ZTUwKTsKKyAgVGVz
dFJvdW5kdHJpcCgwLjEyMzQ1ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NmU1MCk7Cisg
IFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4
ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OWU1MCk7CisgIFRlc3RSb3VuZHRyaXAo
MC4xMjM0NTY3ODkxZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyZTUwKTsKKyAg
VGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyM2U1MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0
NTY3ODkxMjM0ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyMzQ1ZTUwKTsKKyAg
VGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyMzQ1NmU1MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4x
MjM0NTY3ODkxMjM0NTY3ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyMzQ1Njc4
ZTUwKTsKKworICBUZXN0Um91bmR0cmlwKDAuMWUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTJl
LTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyM2UtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIz
NGUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDVlLTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgw
LjEyMzQ1NmUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2N2UtNTApOworICBUZXN0Um91
bmR0cmlwKDAuMTIzNDU2NzhlLTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OWUtNTAp
OworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MWUtNTApOworICBUZXN0Um91bmR0cmlwKDAu
MTIzNDU2Nzg5MTJlLTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyM2UtNTApOwor
ICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNGUtNTApOworICBUZXN0Um91bmR0cmlwKDAu
MTIzNDU2Nzg5MTIzNDVlLTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyMzQ1NmUt
NTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2N2UtNTApOworICBUZXN0Um91
bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2NzhlLTUwKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9wYXJzZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3BhcnNlLmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNmM0ZDY4ZmMyNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3BhcnNlLmNjCkBAIC0wLDAgKzEsNzUxIEBACisvLwor
Ly8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNs
L2ZsYWdzL3BhcnNlLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgPGZzdHJl
YW0+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8dHVwbGU+CisKKyNpZmRlZiBfV0lO
MzIKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImFic2wvZmxhZ3Mv
ZmxhZy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcHJvZ3JhbV9uYW1lLmgiCisj
aW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9yZWdpc3RyeS5oIgorI2luY2x1ZGUgImFic2wv
ZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3VzYWdlLmgiCisj
aW5jbHVkZSAiYWJzbC9mbGFncy91c2FnZV9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpcC5oIgorI2luY2x1ZGUg
ImFic2wvc3luY2hyb25pemF0aW9uL211dGV4LmgiCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVz
cGFjZSBhYnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCitB
QlNMX0NPTlNUX0lOSVQgYWJzbDo6TXV0ZXggcHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQoYWJzbDo6
a0NvbnN0SW5pdCk7CisKK0FCU0xfQ09OU1RfSU5JVCBib29sIGZsYWdmaWxlX25lZWRzX3Byb2Nl
c3NpbmcKKyAgICBBQlNMX0dVQVJERURfQlkocHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpID0gZmFs
c2U7CitBQlNMX0NPTlNUX0lOSVQgYm9vbCBmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcKKyAgICBB
QlNMX0dVQVJERURfQlkocHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpID0gZmFsc2U7CitBQlNMX0NP
TlNUX0lOSVQgYm9vbCB0cnlmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcKKyAgICBBQlNMX0dVQVJE
RURfQlkocHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpID0gZmFsc2U7CisKK30gIC8vIG5hbWVzcGFj
ZQorfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAor
CitBQlNMX0ZMQUcoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LCBmbGFnZmlsZSwge30sCisgICAg
ICAgICAgImNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIHRvIGxvYWQgZmxhZ3MgZnJvbSIp
CisgICAgLk9uVXBkYXRlKFtdKCkgeworICAgICAgaWYgKGFic2w6OkdldEZsYWcoRkxBR1NfZmxh
Z2ZpbGUpLmVtcHR5KCkpIHJldHVybjsKKworICAgICAgYWJzbDo6TXV0ZXhMb2NrIGwoJmFic2w6
OmZsYWdzX2ludGVybmFsOjpwcm9jZXNzaW5nX2NoZWNrc19ndWFyZCk7CisKKyAgICAgIC8vIFNl
dHRpbmcgdGhpcyBmbGFnIHR3aWNlIGJlZm9yZSBpdCBpcyBoYW5kbGVkIG1vc3QgbGlrZWx5IGFu
IGludGVybmFsCisgICAgICAvLyBlcnJvciBhbmQgc2hvdWxkIGJlIHJldmlld2VkIGJ5IGRldmVs
b3BlcnMuCisgICAgICBpZiAoYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6OmZsYWdmaWxlX25lZWRzX3By
b2Nlc3NpbmcpIHsKKyAgICAgICAgQUJTTF9JTlRFUk5BTF9MT0coV0FSTklORywgImZsYWdmaWxl
IHNldCB0d2ljZSBiZWZvcmUgaXQgaXMgaGFuZGxlZCIpOworICAgICAgfQorCisgICAgICBhYnNs
OjpmbGFnc19pbnRlcm5hbDo6ZmxhZ2ZpbGVfbmVlZHNfcHJvY2Vzc2luZyA9IHRydWU7CisgICAg
fSk7CitBQlNMX0ZMQUcoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LCBmcm9tZW52LCB7fSwKKyAg
ICAgICAgICAiY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZmxhZ3MgdG8gc2V0IGZyb20gdGhlIGVu
dmlyb25tZW50IgorICAgICAgICAgICIgW3VzZSAnZXhwb3J0IEZMQUdTX2ZsYWcxPXZhbHVlJ10i
KQorICAgIC5PblVwZGF0ZShbXSgpIHsKKyAgICAgIGlmIChhYnNsOjpHZXRGbGFnKEZMQUdTX2Zy
b21lbnYpLmVtcHR5KCkpIHJldHVybjsKKworICAgICAgYWJzbDo6TXV0ZXhMb2NrIGwoJmFic2w6
OmZsYWdzX2ludGVybmFsOjpwcm9jZXNzaW5nX2NoZWNrc19ndWFyZCk7CisKKyAgICAgIC8vIFNl
dHRpbmcgdGhpcyBmbGFnIHR3aWNlIGJlZm9yZSBpdCBpcyBoYW5kbGVkIG1vc3QgbGlrZWx5IGFu
IGludGVybmFsCisgICAgICAvLyBlcnJvciBhbmQgc2hvdWxkIGJlIHJldmlld2VkIGJ5IGRldmVs
b3BlcnMuCisgICAgICBpZiAoYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6OmZyb21lbnZfbmVlZHNfcHJv
Y2Vzc2luZykgeworICAgICAgICBBQlNMX0lOVEVSTkFMX0xPRyhXQVJOSU5HLCAiZnJvbWVudiBz
ZXQgdHdpY2UgYmVmb3JlIGl0IGlzIGhhbmRsZWQuIik7CisgICAgICB9CisKKyAgICAgIGFic2w6
OmZsYWdzX2ludGVybmFsOjpmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcgPSB0cnVlOworICAgIH0p
OworQUJTTF9GTEFHKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiwgdHJ5ZnJvbWVudiwge30sCisg
ICAgICAgICAgImNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZsYWdzIHRvIHRyeSB0byBzZXQgZnJv
bSB0aGUgZW52aXJvbm1lbnQgaWYgIgorICAgICAgICAgICJwcmVzZW50IikKKyAgICAuT25VcGRh
dGUoW10oKSB7CisgICAgICBpZiAoYWJzbDo6R2V0RmxhZyhGTEFHU190cnlmcm9tZW52KS5lbXB0
eSgpKSByZXR1cm47CisKKyAgICAgIGFic2w6Ok11dGV4TG9jayBsKCZhYnNsOjpmbGFnc19pbnRl
cm5hbDo6cHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpOworCisgICAgICAvLyBTZXR0aW5nIHRoaXMg
ZmxhZyB0d2ljZSBiZWZvcmUgaXQgaXMgaGFuZGxlZCBtb3N0IGxpa2VseSBhbiBpbnRlcm5hbAor
ICAgICAgLy8gZXJyb3IgYW5kIHNob3VsZCBiZSByZXZpZXdlZCBieSBkZXZlbG9wZXJzLgorICAg
ICAgaWYgKGFic2w6OmZsYWdzX2ludGVybmFsOjp0cnlmcm9tZW52X25lZWRzX3Byb2Nlc3Npbmcp
IHsKKyAgICAgICAgQUJTTF9JTlRFUk5BTF9MT0coV0FSTklORywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRyeWZyb21lbnYgc2V0IHR3aWNlIGJlZm9yZSBpdCBpcyBoYW5kbGVkLiIpOwor
ICAgICAgfQorCisgICAgICBhYnNsOjpmbGFnc19pbnRlcm5hbDo6dHJ5ZnJvbWVudl9uZWVkc19w
cm9jZXNzaW5nID0gdHJ1ZTsKKyAgICB9KTsKKworQUJTTF9GTEFHKHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiwgdW5kZWZvaywge30sCisgICAgICAgICAgImNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m
IGZsYWcgbmFtZXMgdGhhdCBpdCBpcyBva2F5IHRvIHNwZWNpZnkgIgorICAgICAgICAgICJvbiB0
aGUgY29tbWFuZCBsaW5lIGV2ZW4gaWYgdGhlIHByb2dyYW0gZG9lcyBub3QgZGVmaW5lIGEgZmxh
ZyAiCisgICAgICAgICAgIndpdGggdGhhdCBuYW1lIik7CisKK25hbWVzcGFjZSBhYnNsIHsKK25h
bWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEFyZ3NMaXN0
IHsKKyBwdWJsaWM6CisgIEFyZ3NMaXN0KCkgOiBuZXh0X2FyZ18oMCkge30KKyAgQXJnc0xpc3Qo
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgOiBhcmdzXyhhcmd2LCBhcmd2ICsgYXJnYyksIG5leHRf
YXJnXygwKSB7fQorICBleHBsaWNpdCBBcmdzTGlzdChjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4mIGFyZ3MpCisgICAgICA6IGFyZ3NfKGFyZ3MpLCBuZXh0X2FyZ18oMCkge30KKworICAv
LyBSZXR1cm5zIHN1Y2Nlc3Mgc3RhdHVzOiB0cnVlIGlmIHBhcnNpbmcgc3VjY2Vzc2Z1bCwgZmFs
c2Ugb3RoZXJ3aXNlLgorICBib29sIFJlYWRGcm9tRmxhZ2ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcm
IGZsYWdfZmlsZV9uYW1lKTsKKworICBpbnQgU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGFyZ3NfLnNp
emUoKSAtIG5leHRfYXJnXzsgfQorICBpbnQgRnJvbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG5l
eHRfYXJnXzsgfQorICBhYnNsOjpzdHJpbmdfdmlldyBGcm9udCgpIGNvbnN0IHsgcmV0dXJuIGFy
Z3NfW25leHRfYXJnX107IH0KKyAgdm9pZCBQb3BGcm9udCgpIHsgbmV4dF9hcmdfKys7IH0KKwor
IHByaXZhdGU6CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBhcmdzXzsKKyAgaW50IG5leHRf
YXJnXzsKK307CisKK2Jvb2wgQXJnc0xpc3Q6OlJlYWRGcm9tRmxhZ2ZpbGUoY29uc3Qgc3RkOjpz
dHJpbmcmIGZsYWdfZmlsZV9uYW1lKSB7CisgIHN0ZDo6aWZzdHJlYW0gZmxhZ19maWxlKGZsYWdf
ZmlsZV9uYW1lKTsKKworICBpZiAoIWZsYWdfZmlsZSkgeworICAgIGZsYWdzX2ludGVybmFsOjpS
ZXBvcnRVc2FnZUVycm9yKAorICAgICAgICBhYnNsOjpTdHJDYXQoIkNhbid0IG9wZW4gZmxhZ2Zp
bGUgIiwgZmxhZ19maWxlX25hbWUpLCB0cnVlKTsKKworICAgIHJldHVybiBmYWxzZTsKKyAgfQor
CisgIC8vIFRoaXMgYXJndW1lbnQgcmVwcmVzZW50cyBmYWtlIGFyZ3ZbMF0sIHdoaWNoIHNob3Vs
ZCBiZSBwcmVzZW50IGluIGFsbCBhcmcKKyAgLy8gbGlzdHMuCisgIGFyZ3NfLnB1c2hfYmFjaygi
Iik7CisKKyAgc3RkOjpzdHJpbmcgbGluZTsKKyAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKworICB3
aGlsZSAoc3RkOjpnZXRsaW5lKGZsYWdfZmlsZSwgbGluZSkpIHsKKyAgICBhYnNsOjpzdHJpbmdf
dmlldyBzdHJpcHBlZCA9IGFic2w6OlN0cmlwTGVhZGluZ0FzY2lpV2hpdGVzcGFjZShsaW5lKTsK
KworICAgIGlmIChzdHJpcHBlZC5lbXB0eSgpIHx8IHN0cmlwcGVkWzBdID09ICcjJykgeworICAg
ICAgLy8gQ29tbWVudCBvciBlbXB0eSBsaW5lOyBqdXN0IGlnbm9yZS4KKyAgICAgIGNvbnRpbnVl
OworICAgIH0KKworICAgIGlmIChzdHJpcHBlZFswXSA9PSAnLScpIHsKKyAgICAgIGlmIChzdHJp
cHBlZCA9PSAiLS0iKSB7CisgICAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVycm9y
KAorICAgICAgICAgICAgIkZsYWdmaWxlIGNhbid0IGNvbnRhaW4gcG9zaXRpb24gYXJndW1lbnRz
IG9yIC0tIiwgdHJ1ZSk7CisKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICBicmVh
azsKKyAgICAgIH0KKworICAgICAgYXJnc18ucHVzaF9iYWNrKHN0ZDo6c3RyaW5nKHN0cmlwcGVk
KSk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBmbGFnc19pbnRlcm5hbDo6UmVwb3J0
VXNhZ2VFcnJvcigKKyAgICAgICAgYWJzbDo6U3RyQ2F0KCJVbmV4cGVjdGVkIGxpbmUgaW4gdGhl
IGZsYWdmaWxlICIsIGZsYWdfZmlsZV9uYW1lLCAiOiAiLAorICAgICAgICAgICAgICAgICAgICAg
bGluZSksCisgICAgICAgIHRydWUpOworCisgICAgc3VjY2VzcyA9IGZhbHNlOworICB9CisKKyAg
cmV0dXJuIHN1Y2Nlc3M7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFJlYWRzIHRoZSBlbnZp
cm9ubWVudCB2YXJpYWJsZSB3aXRoIG5hbWUgYG5hbWVgIGFuZCBzdG9yZXMgcmVzdWx0cyBpbgor
Ly8gYHZhbHVlYC4gSWYgdmFyaWFibGUgaXMgbm90IHByZXNlbnQgaW4gZW52aXJvbm1lbnQgcmV0
dXJucyBmYWxzZSwgb3RoZXJ3aXNlCisvLyByZXR1cm5zIHRydWUuCitib29sIEdldEVudlZhcihj
b25zdCBjaGFyKiB2YXJfbmFtZSwgc3RkOjpzdHJpbmcqIHZhcl92YWx1ZSkgeworI2lmZGVmIF9X
SU4zMgorICBjaGFyIGJ1ZlsxMDI0XTsKKyAgYXV0byBnZXRfcmVzID0gR2V0RW52aXJvbm1lbnRW
YXJpYWJsZUEodmFyX25hbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICBpZiAoZ2V0X3JlcyA+PSBz
aXplb2YoYnVmKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGlmIChnZXRfcmVzID09
IDApIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICAqdmFyX3ZhbHVlID0gc3RkOjpzdHJp
bmcoYnVmLCBnZXRfcmVzKTsKKyNlbHNlCisgIGNvbnN0IGNoYXIqIHZhbCA9IDo6Z2V0ZW52KHZh
cl9uYW1lKTsKKyAgaWYgKHZhbCA9PSBudWxscHRyKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9
CisKKyAgKnZhcl92YWx1ZSA9IHZhbDsKKyNlbmRpZgorCisgIHJldHVybiB0cnVlOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisvLyBSZXR1cm5zOgorLy8gIEZsYWcgbmFtZSBvciBlbXB0eSBpZiBh
cmc9IC0tCisvLyAgRmxhZyB2YWx1ZSBhZnRlciA9IGluIC0tZmxhZz12YWx1ZSAoZW1wdHkgaWYg
LS1mb28pCisvLyAgIklzIGVtcHR5IHZhbHVlIiBzdGF0dXMuIFRydWUgaWYgYXJnPSAtLWZvbz0s
IGZhbHNlIG90aGVyd2lzZS4gVGhpcyBpcworLy8gIHJlcXVpcmVkIHRvIHNlcGFyYXRlIC0tZm9v
IGZyb20gLS1mb289LgorLy8gRm9yIGV4YW1wbGU6CisvLyAgICAgIGFyZyAgICAgICAgICAgcmV0
dXJuIHZhbHVlcworLy8gICAiLS1mb289YmFyIiAtPiB7ImZvbyIsICJiYXIiLCBmYWxzZX0uCisv
LyAgICItLWZvbyIgICAgIC0+IHsiZm9vIiwgIiIsIGZhbHNlfS4KKy8vICAgIi0tZm9vPSIgICAg
LT4geyJmb28iLCAiIiwgdHJ1ZX0uCitzdGQ6OnR1cGxlPGFic2w6OnN0cmluZ192aWV3LCBhYnNs
OjpzdHJpbmdfdmlldywgYm9vbD4gU3BsaXROYW1lQW5kVmFsdWUoCisgICAgYWJzbDo6c3RyaW5n
X3ZpZXcgYXJnKSB7CisgIC8vIEFsbG93IC1mb28gYW5kIC0tZm9vCisgIGFic2w6OkNvbnN1bWVQ
cmVmaXgoJmFyZywgIi0iKTsKKworICBpZiAoYXJnLmVtcHR5KCkpIHsKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3R1cGxlKCIiLCAiIiwgZmFsc2UpOworICB9CisKKyAgYXV0byBlcXVhbF9zaWduX3Bv
cyA9IGFyZy5maW5kKCI9Iik7CisKKyAgYWJzbDo6c3RyaW5nX3ZpZXcgZmxhZ19uYW1lID0gYXJn
LnN1YnN0cigwLCBlcXVhbF9zaWduX3Bvcyk7CisKKyAgYWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWU7
CisgIGJvb2wgaXNfZW1wdHlfdmFsdWUgPSBmYWxzZTsKKworICBpZiAoZXF1YWxfc2lnbl9wb3Mg
IT0gYWJzbDo6c3RyaW5nX3ZpZXc6Om5wb3MpIHsKKyAgICB2YWx1ZSA9IGFyZy5zdWJzdHIoZXF1
YWxfc2lnbl9wb3MgKyAxKTsKKyAgICBpc19lbXB0eV92YWx1ZSA9IHZhbHVlLmVtcHR5KCk7Cisg
IH0KKworICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKGZsYWdfbmFtZSwgdmFsdWUsIGlzX2VtcHR5
X3ZhbHVlKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUmV0dXJuczoKKy8vICBmb3VuZCBm
bGFnIG9yIG51bGxwdHIKKy8vICBpcyBuZWdhdGl2ZSBpbiBjYXNlIG9mIC0tbm9mb28KK3N0ZDo6
dHVwbGU8Q29tbWFuZExpbmVGbGFnKiwgYm9vbD4gTG9jYXRlRmxhZyhhYnNsOjpzdHJpbmdfdmll
dyBmbGFnX25hbWUpIHsKKyAgQ29tbWFuZExpbmVGbGFnKiBmbGFnID0gZmxhZ3NfaW50ZXJuYWw6
OkZpbmRDb21tYW5kTGluZUZsYWcoZmxhZ19uYW1lKTsKKyAgYm9vbCBpc19uZWdhdGl2ZSA9IGZh
bHNlOworCisgIGlmICghZmxhZyAmJiBhYnNsOjpDb25zdW1lUHJlZml4KCZmbGFnX25hbWUsICJu
byIpKSB7CisgICAgZmxhZyA9IGZsYWdzX2ludGVybmFsOjpGaW5kQ29tbWFuZExpbmVGbGFnKGZs
YWdfbmFtZSk7CisgICAgaXNfbmVnYXRpdmUgPSB0cnVlOworICB9CisKKyAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZShmbGFnLCBpc19uZWdhdGl2ZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8v
IFZlcmlmeSB0aGF0IGRlZmF1bHQgdmFsdWVzIG9mIHR5cGVkIGZsYWdzIG11c3QgYmUgY29udmVy
dGlibGUgdG8gc3RyaW5nIGFuZAorLy8gYmFjay4KK3ZvaWQgQ2hlY2tEZWZhdWx0VmFsdWVzUGFy
c2luZ1JvdW5kdHJpcCgpIHsKKyNpZm5kZWYgTkRFQlVHCisgIGZsYWdzX2ludGVybmFsOjpGb3JF
YWNoRmxhZyhbJl0oQ29tbWFuZExpbmVGbGFnKiBmbGFnKSB7CisgICAgaWYgKGZsYWctPklzUmV0
aXJlZCgpKSByZXR1cm47CisKKyNkZWZpbmUgSUdOT1JFX1RZUEUoVCkgXAorICBpZiAoZmxhZy0+
SXNPZlR5cGU8VD4oKSkgcmV0dXJuOworCisgICAgQUJTTF9GTEFHU19JTlRFUk5BTF9GT1JfRUFD
SF9MT0NLX0ZSRUUoSUdOT1JFX1RZUEUpCisgICAgSUdOT1JFX1RZUEUoc3RkOjpzdHJpbmcpCisg
ICAgSUdOT1JFX1RZUEUoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KQorI3VuZGVmIElHTk9SRV9U
WVBFCisKKyAgICBmbGFnLT5DaGVja0RlZmF1bHRWYWx1ZVBhcnNpbmdSb3VuZHRyaXAoKTsKKyAg
fSk7CisjZW5kaWYKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUmV0dXJucyBzdWNjZXNzIHN0
YXR1cywgd2hpY2ggaXMgdHJ1ZSBpZiB3ZSBzdWNjZXNzZnVsbHkgcmVhZCBhbGwgZmxhZyBmaWxl
cywKKy8vIGluIHdoaWNoIGNhc2UgbmV3IEFyZ0xpc3RzIGFyZSBhcHBlbmRlZCB0byB0aGUgaW5w
dXRfYXJncyBpbiBhIHJldmVyc2Ugb3JkZXIKKy8vIG9mIGZpbGUgbmFtZXMgaW4gdGhlIGlucHV0
IGZsYWdmaWxlcyBsaXN0LiBUaGlzIG9yZGVyIGVuc3VyZXMgdGhhdCBmbGFncyBmcm9tCisvLyB0
aGUgZmlyc3QgZmxhZ2ZpbGUgaW4gdGhlIGlucHV0IGxpc3QgYXJlIHByb2Nlc3NlZCBiZWZvcmUg
dGhlIHNlY29uZCBmbGFnZmlsZQorLy8gZXRjLgorYm9vbCBSZWFkRmxhZ2ZpbGVzKGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgZmxhZ2ZpbGVzLAorICAgICAgICAgICAgICAgICAgIHN0
ZDo6dmVjdG9yPEFyZ3NMaXN0PiogaW5wdXRfYXJncykgeworICBib29sIHN1Y2Nlc3MgPSB0cnVl
OworICBmb3IgKGF1dG8gaXQgPSBmbGFnZmlsZXMucmJlZ2luKCk7IGl0ICE9IGZsYWdmaWxlcy5y
ZW5kKCk7ICsraXQpIHsKKyAgICBBcmdzTGlzdCBhbDsKKworICAgIGlmIChhbC5SZWFkRnJvbUZs
YWdmaWxlKCppdCkpIHsKKyAgICAgIGlucHV0X2FyZ3MtPnB1c2hfYmFjayhhbCk7CisgICAgfSBl
bHNlIHsKKyAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICB9CisgIH0KKworICByZXR1cm4gc3Vj
Y2VzczsKK30KKworLy8gUmV0dXJucyBzdWNjZXNzIHN0YXR1cywgd2hpY2ggaXMgdHJ1ZSBpZiB3
ZXJlIGFibGUgdG8gbG9jYXRlIGFsbCBlbnZpcm9ubWVudAorLy8gdmFyaWFibGVzIGNvcnJlY3Rs
eSBvciBpZiBmYWlsX29uX2Fic2VudF9pbl9lbnYgaXMgZmFsc2UuIFRoZSBlbnZpcm9ubWVudAor
Ly8gdmFyaWFibGUgbmFtZXMgYXJlIGV4cGVjdGVkIHRvIGJlIG9mIHRoZSBmb3JtIGBGTEFHU188
ZmxhZ19uYW1lPmAsIHdoZXJlCisvLyBgZmxhZ19uYW1lYCBpcyBhIHN0cmluZyBmcm9tIHRoZSBp
bnB1dCBmbGFnX25hbWVzIGxpc3QuIElmIHN1Y2Nlc3NmdWwgd2UKKy8vIGFwcGVuZCBhIHNpbmds
ZSBBcmdMaXN0IGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0X2FyZ3MuCitib29sIFJlYWRGbGFnc0Zy
b21FbnYoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBmbGFnX25hbWVzLAorICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEFyZ3NMaXN0PiogaW5wdXRfYXJncywKKyAgICAg
ICAgICAgICAgICAgICAgICBib29sIGZhaWxfb25fYWJzZW50X2luX2VudikgeworICBib29sIHN1
Y2Nlc3MgPSB0cnVlOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYXJnczsKKworICAvLyBU
aGlzIGFyZ3VtZW50IHJlcHJlc2VudHMgZmFrZSBhcmd2WzBdLCB3aGljaCBzaG91bGQgYmUgcHJl
c2VudCBpbiBhbGwgYXJnCisgIC8vIGxpc3RzLgorICBhcmdzLnB1c2hfYmFjaygiIik7CisKKyAg
Zm9yIChjb25zdCBhdXRvJiBmbGFnX25hbWUgOiBmbGFnX25hbWVzKSB7CisgICAgLy8gQXZvaWQg
aW5maW5pdGUgcmVjdXJzaW9uLgorICAgIGlmIChmbGFnX25hbWUgPT0gImZyb21lbnYiIHx8IGZs
YWdfbmFtZSA9PSAidHJ5ZnJvbWVudiIpIHsKKyAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRV
c2FnZUVycm9yKAorICAgICAgICAgIGFic2w6OlN0ckNhdCgiSW5maW5pdGUgcmVjdXJzaW9uIG9u
IGZsYWcgIiwgZmxhZ19uYW1lKSwgdHJ1ZSk7CisKKyAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAg
ICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGVudm5hbWUgPSBh
YnNsOjpTdHJDYXQoIkZMQUdTXyIsIGZsYWdfbmFtZSk7CisgICAgc3RkOjpzdHJpbmcgZW52dmFs
OworICAgIGlmICghR2V0RW52VmFyKGVudm5hbWUuY19zdHIoKSwgJmVudnZhbCkpIHsKKyAgICAg
IGlmIChmYWlsX29uX2Fic2VudF9pbl9lbnYpIHsKKyAgICAgICAgZmxhZ3NfaW50ZXJuYWw6OlJl
cG9ydFVzYWdlRXJyb3IoCisgICAgICAgICAgICBhYnNsOjpTdHJDYXQoZW52bmFtZSwgIiBub3Qg
Zm91bmQgaW4gZW52aXJvbm1lbnQiKSwgdHJ1ZSk7CisKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNl
OworICAgICAgfQorCisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBhcmdzLnB1c2hfYmFj
ayhhYnNsOjpTdHJDYXQoIi0tIiwgZmxhZ19uYW1lLCAiPSIsIGVudnZhbCkpOworICB9CisKKyAg
aWYgKHN1Y2Nlc3MpIHsKKyAgICBpbnB1dF9hcmdzLT5lbXBsYWNlX2JhY2soYXJncyk7CisgIH0K
KworICByZXR1cm4gc3VjY2VzczsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUmV0dXJucyBz
dWNjZXNzIHN0YXR1cywgd2hpY2ggaXMgdHJ1ZSBpZiB3ZXJlIGFibGUgdG8gaGFuZGxlIGFsbCBn
ZW5lcmF0b3IKKy8vIGZsYWdzIChmbGFnZmlsZSwgZnJvbWVudiwgdHJ5ZnJvbWVtdikgc3VjY2Vz
c2Z1bGx5LgorYm9vbCBIYW5kbGVHZW5lcmF0b3JGbGFncyhzdGQ6OnZlY3RvcjxBcmdzTGlzdD4q
IGlucHV0X2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiogZmxhZ2ZpbGVfdmFsdWUpIHsKKyAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKworICBh
YnNsOjpNdXRleExvY2sgbCgmZmxhZ3NfaW50ZXJuYWw6OnByb2Nlc3NpbmdfY2hlY2tzX2d1YXJk
KTsKKworICAvLyBmbGFnZmlsZSBjb3VsZCBoYXZlIGJlZW4gc2V0IGVpdGhlciBvbiBhIGNvbW1h
bmQgbGluZSBvcgorICAvLyBwcm9ncmFtbWF0aWNhbGx5IGJlZm9yZSBpbnZva2luZyBQYXJzZUNv
bW1hbmRMaW5lLiBOb3RlIHRoYXQgd2UgZG8gbm90CisgIC8vIGFjdHVhbGx5IHByb2Nlc3MgYXJn
dW1lbnRzIHNwZWNpZmllZCBpbiB0aGUgZmxhZ2ZpbGUsIGJ1dCBpbnN0ZWFkCisgIC8vIGNyZWF0
ZSBhIHNlY29uZGFyeSBhcmd1bWVudHMgbGlzdCB0byBiZSBwcm9jZXNzZWQgYWxvbmcgd2l0aCB0
aGUgcmVzdAorICAvLyBvZiB0aGUgY29tYW1uZCBsaW5lIGFyZ3VtZW50cy4gU2luY2Ugd2UgYWx3
YXlzIHRoZSBwcm9jZXNzIG1vc3QgcmVjZW50bHkKKyAgLy8gY3JlYXRlZCBsaXN0IG9mIGFyZ3Vt
ZW50cyBmaXJzdCwgdGhpcyB3aWxsIHJlc3VsdCBpbiBmbGFnZmlsZSBhcmd1bWVudAorICAvLyBi
ZWluZyBwcm9jZXNzZWQgYmVmb3JlIGFueSBvdGhlciBhcmd1bWVudCBpbiB0aGUgY29tbWFuZCBs
aW5lLiBJZgorICAvLyBGTEFHU19mbGFnZmlsZSBjb250YWlucyBtb3JlIHRoYW4gb25lIGZpbGUg
bmFtZSB3ZSBjcmVhdGUgbXVsdGlwbGUgbmV3CisgIC8vIGxldmVscyBvZiBhcmd1bWVudHMgaW4g
YSByZXZlcnNlIG9yZGVyIG9mIGZpbGUgbmFtZXMuIFRodXMgd2UgYWx3YXlzCisgIC8vIHByb2Nl
c3MgYXJndW1lbnRzIGZyb20gZmlyc3QgZmlsZSBiZWZvcmUgYXJndW1lbnRzIGNvbnRhaW5pbmcg
aW4gYQorICAvLyBzZWNvbmQgZmlsZSwgZXRjLiBJZiBmbGFnZmlsZSBjb250YWlucyBhbm90aGVy
CisgIC8vIC0tZmxhZ2ZpbGUgaW5zaWRlIG9mIGl0LCBpdCB3aWxsIHByb2R1Y2UgbmV3IGxldmVs
IG9mIGFyZ3VtZW50cyBhbmQKKyAgLy8gcHJvY2Vzc2VkIGJlZm9yZSB0aGUgcmVzdCBvZiB0aGUg
ZmxhZ2ZpbGUuIFdlIGFyZSBhbHNvIGNvbGxlY3RpbmcgYWxsCisgIC8vIGZsYWdmaWxlcyBzZXQg
b24gb3JpZ2luYWwgY29tbWFuZCBsaW5lLiBVbmxpa2UgdGhlIHJlc3Qgb2YgdGhlIGZsYWdzLAor
ICAvLyB0aGlzIGZsYWcgY2FuIGJlIHNldCBtdWx0aXBsZSB0aW1lcyBhbmQgaXMgZXhwZWN0ZWQg
dG8gYmUgaGFuZGxlZAorICAvLyBtdWx0aXBsZSB0aW1lcy4gV2UgYXJlIGNvbGxlY3RpbmcgdGhl
bSBhbGwgaW50byBhIHNpbmdsZSBsaXN0IGFuZCBzZXQKKyAgLy8gdGhlIHZhbHVlIG9mIEZMQUdT
X2ZsYWdmaWxlIHRvIHRoYXQgdmFsdWUgYXQgdGhlIGVuZCBvZiB0aGUgcGFyc2luZy4KKyAgaWYg
KGZsYWdzX2ludGVybmFsOjpmbGFnZmlsZV9uZWVkc19wcm9jZXNzaW5nKSB7CisgICAgYXV0byBm
bGFnZmlsZXMgPSBhYnNsOjpHZXRGbGFnKEZMQUdTX2ZsYWdmaWxlKTsKKworICAgIGlmIChpbnB1
dF9hcmdzLT5zaXplKCkgPT0gMSkgeworICAgICAgZmxhZ2ZpbGVfdmFsdWUtPmluc2VydChmbGFn
ZmlsZV92YWx1ZS0+ZW5kKCksIGZsYWdmaWxlcy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGFnZmlsZXMuZW5kKCkpOworICAgIH0KKworICAgIHN1Y2Nlc3MgJj0gUmVh
ZEZsYWdmaWxlcyhmbGFnZmlsZXMsIGlucHV0X2FyZ3MpOworCisgICAgZmxhZ3NfaW50ZXJuYWw6
OmZsYWdmaWxlX25lZWRzX3Byb2Nlc3NpbmcgPSBmYWxzZTsKKyAgfQorCisgIC8vIFNpbWlsYXIg
dG8gZmxhZ2ZpbGUgZnJvbWVudi90cnlmcm9tZW12IGNhbiBiZSBzZXQgYm90aAorICAvLyBwcm9n
cmFtbWF0aWNhbGx5IGFuZCBhdCBydW50aW1lIG9uIGEgY29tbWFuZCBsaW5lLiBVbmxpa2UgZmxh
Z2ZpbGUgdGhlc2UKKyAgLy8gY2FuJ3QgYmUgcmVjdXJzaXZlLgorICBpZiAoZmxhZ3NfaW50ZXJu
YWw6OmZyb21lbnZfbmVlZHNfcHJvY2Vzc2luZykgeworICAgIGF1dG8gZmxhZ3NfbGlzdCA9IGFi
c2w6OkdldEZsYWcoRkxBR1NfZnJvbWVudik7CisKKyAgICBzdWNjZXNzICY9IFJlYWRGbGFnc0Zy
b21FbnYoZmxhZ3NfbGlzdCwgaW5wdXRfYXJncywgdHJ1ZSk7CisKKyAgICBmbGFnc19pbnRlcm5h
bDo6ZnJvbWVudl9uZWVkc19wcm9jZXNzaW5nID0gZmFsc2U7CisgIH0KKworICBpZiAoZmxhZ3Nf
aW50ZXJuYWw6OnRyeWZyb21lbnZfbmVlZHNfcHJvY2Vzc2luZykgeworICAgIGF1dG8gZmxhZ3Nf
bGlzdCA9IGFic2w6OkdldEZsYWcoRkxBR1NfdHJ5ZnJvbWVudik7CisKKyAgICBzdWNjZXNzICY9
IFJlYWRGbGFnc0Zyb21FbnYoZmxhZ3NfbGlzdCwgaW5wdXRfYXJncywgZmFsc2UpOworCisgICAg
ZmxhZ3NfaW50ZXJuYWw6OnRyeWZyb21lbnZfbmVlZHNfcHJvY2Vzc2luZyA9IGZhbHNlOworICB9
CisKKyAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgUmVzZXRH
ZW5lcmF0b3JGbGFncyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGZsYWdmaWxlX3Zh
bHVlKSB7CisgIC8vIFNldHRpbmcgZmxhZ2ZpbGUgdG8gdGhlIHZhbHVlIHdoaWNoIGNvbGxhdGVz
IGFsbCB0aGUgdmFsdWVzIHNldCBvbiBhCisgIC8vIGNvbW1hbmQgbGluZSBhbmQgcHJvZ3JhbW1h
dGljYWxseS4gU28gaWYgY29tbWFuZCBsaW5lIGxvb2tlZCBsaWtlCisgIC8vIC0tZmxhZ2ZpbGU9
ZjEgLS1mbGFnZmlsZT1mMiB0aGUgZmluYWwgdmFsdWUgb2YgdGhlIEZMQUdTX2ZsYWdmaWxlIGZs
YWcgaXMKKyAgLy8gZ29pbmcgdG8gYmUgeyJmMSIsICJmMiJ9CisgIGlmICghZmxhZ2ZpbGVfdmFs
dWUuZW1wdHkoKSkgeworICAgIGFic2w6OlNldEZsYWcoJkZMQUdTX2ZsYWdmaWxlLCBmbGFnZmls
ZV92YWx1ZSk7CisgICAgYWJzbDo6TXV0ZXhMb2NrIGwoJmZsYWdzX2ludGVybmFsOjpwcm9jZXNz
aW5nX2NoZWNrc19ndWFyZCk7CisgICAgZmxhZ3NfaW50ZXJuYWw6OmZsYWdmaWxlX25lZWRzX3By
b2Nlc3NpbmcgPSBmYWxzZTsKKyAgfQorCisgIC8vIGZyb21lbnYvdHJ5ZnJvbWVudiBhcmUgc2V0
IHRvIDx1bmRlZmluZWQ+IHZhbHVlLgorICBpZiAoIWFic2w6OkdldEZsYWcoRkxBR1NfZnJvbWVu
dikuZW1wdHkoKSkgeworICAgIGFic2w6OlNldEZsYWcoJkZMQUdTX2Zyb21lbnYsIHt9KTsKKyAg
fQorICBpZiAoIWFic2w6OkdldEZsYWcoRkxBR1NfdHJ5ZnJvbWVudikuZW1wdHkoKSkgeworICAg
IGFic2w6OlNldEZsYWcoJkZMQUdTX3RyeWZyb21lbnYsIHt9KTsKKyAgfQorCisgIGFic2w6Ok11
dGV4TG9jayBsKCZmbGFnc19pbnRlcm5hbDo6cHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpOworICBm
bGFnc19pbnRlcm5hbDo6ZnJvbWVudl9uZWVkc19wcm9jZXNzaW5nID0gZmFsc2U7CisgIGZsYWdz
X2ludGVybmFsOjp0cnlmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcgPSBmYWxzZTsKK30KKworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworLy8gUmV0dXJuczoKKy8vICBzdWNjZXNzIHN0YXR1cworLy8gIGRlZHVj
ZWQgdmFsdWUKKy8vIFdlIGFyZSBhbHNvIG11dGF0aW5nIGN1cnJfbGlzdCBpbiBjYXNlIGlmIHdl
IG5lZWQgdG8gZ2V0IGEgaG9sZCBvZiBuZXh0CisvLyBhcmd1bWVudCBpbiB0aGUgaW5wdXQuCitz
dGQ6OnR1cGxlPGJvb2wsIGFic2w6OnN0cmluZ192aWV3PiBEZWR1Y2VGbGFnVmFsdWUoY29uc3Qg
Q29tbWFuZExpbmVGbGFnJiBmbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3IHZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfbmVnYXRpdmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc19lbXB0eV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBcmdzTGlzdCogY3Vycl9saXN0KSB7CisgIC8vIFZhbHVlIGlzIGVpdGhl
ciBhbiBhcmd1bWVudCBzdWZmaXggYWZ0ZXIgYD1gIGluICItLWZvbz08dmFsdWU+IgorICAvLyBv
ciBzZXBhcmF0ZSBhcmd1bWVudCBpbiBjYXNlIG9mICItLWZvbyIgIjx2YWx1ZT4iLgorCisgIC8v
IGJvb2xlYW4gZmxhZ3MgaGF2ZSB0aGVzZSBmb3JtczoKKyAgLy8gICAtLWZvbworICAvLyAgIC0t
bm9mb28KKyAgLy8gICAtLWZvbz10cnVlCisgIC8vICAgLS1mb289ZmFsc2UKKyAgLy8gICAtLW5v
Zm9vPTx2YWx1ZT4gaXMgbm90IHN1cHBvcnRlZAorICAvLyAgIC0tZm9vIDx2YWx1ZT4gaXMgbm90
IHN1cHBvcnRlZAorCisgIC8vIG5vbiBib29sZWFuIGZsYWdzIGhhdmUgdGhlc2UgZm9ybXM6Cisg
IC8vIC0tZm9vPTx2YWx1ZT4KKyAgLy8gLS1mb28gPHZhbHVlPgorICAvLyAtLW5vZm9vIGlzIG5v
dCBzdXBwb3J0ZWQKKworICBpZiAoZmxhZy5Jc09mVHlwZTxib29sPigpKSB7CisgICAgaWYgKHZh
bHVlLmVtcHR5KCkpIHsKKyAgICAgIGlmIChpc19lbXB0eV92YWx1ZSkgeworICAgICAgICAvLyAi
LS1ib29sX2ZsYWc9IiBjYXNlCisgICAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVy
cm9yKAorICAgICAgICAgICAgYWJzbDo6U3RyQ2F0KAorICAgICAgICAgICAgICAgICJNaXNzaW5n
IHRoZSB2YWx1ZSBhZnRlciBhc3NpZ25tZW50IGZvciB0aGUgYm9vbGVhbiBmbGFnICciLAorICAg
ICAgICAgICAgICAgIGZsYWcuTmFtZSgpLCAiJyIpLAorICAgICAgICAgICAgdHJ1ZSk7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoZmFsc2UsICIiKTsKKyAgICAgIH0KKworICAgICAg
Ly8gIi0tYm9vbF9mbGFnIiBjYXNlCisgICAgICB2YWx1ZSA9IGlzX25lZ2F0aXZlID8gIjAiIDog
IjEiOworICAgIH0gZWxzZSBpZiAoaXNfbmVnYXRpdmUpIHsKKyAgICAgIC8vICItLW5vYm9vbF9m
bGFnPVkiIGNhc2UKKyAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVycm9yKAorICAg
ICAgICAgIGFic2w6OlN0ckNhdCgiTmVnYXRpdmUgZm9ybSB3aXRoIGFzc2lnbm1lbnQgaXMgbm90
IHZhbGlkIGZvciB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAiYm9vbGVhbiBmbGFnICci
LAorICAgICAgICAgICAgICAgICAgICAgICBmbGFnLk5hbWUoKSwgIiciKSwKKyAgICAgICAgICB0
cnVlKTsKKyAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoZmFsc2UsICIiKTsKKyAgICB9Cisg
IH0gZWxzZSBpZiAoaXNfbmVnYXRpdmUpIHsKKyAgICAvLyAiLS1ub2ludF9mbGFnPTEiIGNhc2UK
KyAgICBmbGFnc19pbnRlcm5hbDo6UmVwb3J0VXNhZ2VFcnJvcigKKyAgICAgICAgYWJzbDo6U3Ry
Q2F0KCJOZWdhdGl2ZSBmb3JtIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGZsYWcgJyIsIGZsYWcuTmFt
ZSgpLAorICAgICAgICAgICAgICAgICAgICAgIiciKSwKKyAgICAgICAgdHJ1ZSk7CisgICAgcmV0
dXJuIHN0ZDo6bWFrZV90dXBsZShmYWxzZSwgIiIpOworICB9IGVsc2UgaWYgKHZhbHVlLmVtcHR5
KCkgJiYgKCFpc19lbXB0eV92YWx1ZSkpIHsKKyAgICBpZiAoY3Vycl9saXN0LT5TaXplKCkgPT0g
MSkgeworICAgICAgLy8gIi0taW50X2ZsYWciIGNhc2UKKyAgICAgIGZsYWdzX2ludGVybmFsOjpS
ZXBvcnRVc2FnZUVycm9yKAorICAgICAgICAgIGFic2w6OlN0ckNhdCgiTWlzc2luZyB0aGUgdmFs
dWUgZm9yIHRoZSBmbGFnICciLCBmbGFnLk5hbWUoKSwgIiciKSwKKyAgICAgICAgICB0cnVlKTsK
KyAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoZmFsc2UsICIiKTsKKyAgICB9CisKKyAgICAv
LyAiLS1pbnRfZmxhZyIgIjEwIiBjYXNlCisgICAgY3Vycl9saXN0LT5Qb3BGcm9udCgpOworICAg
IHZhbHVlID0gY3Vycl9saXN0LT5Gcm9udCgpOworCisgICAgLy8gSGV1cmlzdGljIHRvIGRldGVj
dCB0aGUgY2FzZSB3aGVyZSBzb21lb25lIHRyZWF0cyBhIHN0ZDo6c3RyaW5nIGFyZworICAgIC8v
IGxpa2UgYSBib29sIG9yIGp1c3QgZm9yZ2V0cyB0byBwYXNzIGEgdmFsdWU6CisgICAgLy8gLS1t
eV9zdHJpbmdfdmFyIC0tZm9vPWJhcgorICAgIC8vIFdlIGxvb2sgZm9yIGEgZmxhZyBvZiBzdGQ6
OnN0cmluZyB0eXBlLCB3aG9zZSB2YWx1ZSBiZWdpbnMgd2l0aCBhCisgICAgLy8gZGFzaCBhbmQg
Y29ycmVzcG9uZHMgdG8ga25vd24gZmxhZyBvciBzdGFuZGFsb25lIC0tLgorICAgIGlmICh2YWx1
ZVswXSA9PSAnLScgJiYgZmxhZy5Jc09mVHlwZTxzdGQ6OnN0cmluZz4oKSkgeworICAgICAgYXV0
byBtYXliZV9mbGFnX25hbWUgPSBzdGQ6OmdldDwwPihTcGxpdE5hbWVBbmRWYWx1ZSh2YWx1ZS5z
dWJzdHIoMSkpKTsKKworICAgICAgaWYgKG1heWJlX2ZsYWdfbmFtZS5lbXB0eSgpIHx8CisgICAg
ICAgICAgc3RkOjpnZXQ8MD4oTG9jYXRlRmxhZyhtYXliZV9mbGFnX25hbWUpKSAhPSBudWxscHRy
KSB7CisgICAgICAgIC8vICItLXN0cmluZ19mbGFnIiAiLS1rbm93bl9mbGFnIiBjYXNlCisgICAg
ICAgIEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAgICAgICAgV0FSTklORywKKyAgICAgICAgICAg
IGFic2w6OlN0ckNhdCgiRGlkIHlvdSByZWFsbHkgbWVhbiB0byBzZXQgZmxhZyAnIiwgZmxhZy5O
YW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIicgdG8gdGhlIHZhbHVlICciLCB2YWx1
ZSwgIic/IikpOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBzdGQ6Om1ha2VfdHVw
bGUodHJ1ZSwgdmFsdWUpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIENhbklnbm9yZVVu
ZGVmaW5lZEZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgZmxhZ19uYW1lKSB7CisgIGF1dG8gdW5kZWZv
ayA9IGFic2w6OkdldEZsYWcoRkxBR1NfdW5kZWZvayk7CisgIGlmIChzdGQ6OmZpbmQodW5kZWZv
ay5iZWdpbigpLCB1bmRlZm9rLmVuZCgpLCBmbGFnX25hbWUpICE9IHVuZGVmb2suZW5kKCkpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGlmIChhYnNsOjpDb25zdW1lUHJlZml4KCZmbGFn
X25hbWUsICJubyIpICYmCisgICAgICBzdGQ6OmZpbmQodW5kZWZvay5iZWdpbigpLCB1bmRlZm9r
LmVuZCgpLCBmbGFnX25hbWUpICE9IHVuZGVmb2suZW5kKCkpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
KyAgfQorCisgIHJldHVybiBmYWxzZTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK3N0ZDo6dmVjdG9yPGNoYXIqPiBQYXJzZUNvbW1hbmRMaW5lSW1wbChpbnQgYXJn
YywgY2hhciogYXJndltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFyZ3ZMaXN0QWN0aW9uIGFyZ19saXN0X2FjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVc2FnZUZsYWdzQWN0aW9uIHVzYWdlX2ZsYWdfYWN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uVW5kZWZpbmVkRmxhZyBvbl91bmRlZl9m
bGFnKSB7CisgIEFCU0xfSU5URVJOQUxfQ0hFQ0soYXJnYyA+IDAsICJNaXNzaW5nIGFyZ3ZbMF0i
KTsKKworICAvLyBUaGlzIHJvdXRpbmUgZG9lcyBub3QgcmV0dXJuIGFueXRoaW5nIHNpbmNlIHdl
IGFib3J0IG9uIGZhaWx1cmUuCisgIENoZWNrRGVmYXVsdFZhbHVlc1BhcnNpbmdSb3VuZHRyaXAo
KTsKKworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZmxhZ2ZpbGVfdmFsdWU7CisKKyAgc3Rk
Ojp2ZWN0b3I8QXJnc0xpc3Q+IGlucHV0X2FyZ3M7CisgIGlucHV0X2FyZ3MucHVzaF9iYWNrKEFy
Z3NMaXN0KGFyZ2MsIGFyZ3YpKTsKKworICBzdGQ6OnZlY3RvcjxjaGFyKj4gb3V0cHV0X2FyZ3M7
CisgIHN0ZDo6dmVjdG9yPGNoYXIqPiBwb3NpdGlvbmFsX2FyZ3M7CisgIG91dHB1dF9hcmdzLnJl
c2VydmUoYXJnYyk7CisKKyAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiB1bmRlZmluZWQgZmxhZ3Mu
IFRoZSBlbGVtZW50IG9mIHRoZSBsaXN0IGlzIHRoZSBwYWlyCisgIC8vIGNvbnNpc3Rpbmcgb2Yg
Ym9vbGVhbiBpbmRpY2F0aW5nIGlmIGZsYWcgY2FtZSBmcm9tIGNvbW1hbmQgbGluZSAodnMgZnJv
bQorICAvLyBzb21lIGZsYWcgZmlsZSB3ZSd2ZSByZWFkKSBhbmQgZmxhZyBuYW1lLgorICAvLyBU
T0RPKHJvZ2VlZmYpOiBFbGltaW5hdGUgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHBhaXIgYWZ0
ZXIgY2xlYW51cC4KKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGJvb2wsIHN0ZDo6c3RyaW5nPj4g
dW5kZWZpbmVkX2ZsYWdfbmFtZXM7CisKKyAgLy8gU2V0IHByb2dyYW0gaW52b2NhdGlvbiBuYW1l
IGlmIGl0IGlzIG5vdCBzZXQgYmVmb3JlLgorICBpZiAoUHJvZ3JhbUludm9jYXRpb25OYW1lKCkg
PT0gIlVOS05PV04iKSB7CisgICAgZmxhZ3NfaW50ZXJuYWw6OlNldFByb2dyYW1JbnZvY2F0aW9u
TmFtZShhcmd2WzBdKTsKKyAgfQorICBvdXRwdXRfYXJncy5wdXNoX2JhY2soYXJndlswXSk7CisK
KyAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBsaXN0IG9mIHRoZSBpbnB1dCBhcmd1bWVudHMuIEZp
cnN0IGxldmVsIGFyZSBhcmd1bWVudHMKKyAgLy8gb3JpZ2luYXRlZCBmcm9tIGFyZ2MvYXJndi4g
Rm9sbG93aW5nIGxldmVscyBhcmUgYXJndW1lbnRzIG9yaWdpbmF0ZWQgZnJvbQorICAvLyByZWN1
cnNpdmUgcGFyc2luZyBvZiBmbGFnZmlsZShzKS4KKyAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAg
d2hpbGUgKCFpbnB1dF9hcmdzLmVtcHR5KCkpIHsKKyAgICAvLyAxMC4gRmlyc3Qgd2UgcHJvY2Vz
cyB0aGUgYnVpbHQtaW4gZ2VuZXJhdG9yIGZsYWdzLgorICAgIHN1Y2Nlc3MgJj0gSGFuZGxlR2Vu
ZXJhdG9yRmxhZ3MoJmlucHV0X2FyZ3MsICZmbGFnZmlsZV92YWx1ZSk7CisKKyAgICAvLyAzMC4g
U2VsZWN0IHRvcC1tb3N0IChtb3N0IHJlY2VudCkgYXJndW1lbnRzIGxpc3QuIElmIGl0IGlzIGVt
cHR5IGRyb3AgaXQKKyAgICAvLyBhbmQgcmUtdHJ5LgorICAgIEFyZ3NMaXN0JiBjdXJyX2xpc3Qg
PSBpbnB1dF9hcmdzLmJhY2soKTsKKworICAgIGN1cnJfbGlzdC5Qb3BGcm9udCgpOworCisgICAg
aWYgKGN1cnJfbGlzdC5TaXplKCkgPT0gMCkgeworICAgICAgaW5wdXRfYXJncy5wb3BfYmFjaygp
OworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgLy8gNDAuIFBpY2sgdXAgdGhlIGZyb250
IHJlbWFpbmluZyBhcmd1bWVudCBpbiB0aGUgY3VycmVudCBsaXN0LiBJZiBjdXJyZW50CisgICAg
Ly8gc3RhY2sgb2YgYXJndW1lbnQgbGlzdHMgY29udGFpbnMgb25seSBvbmUgZWxlbWVudCAtIHdl
IGFyZSBwcm9jZXNzaW5nIGFuCisgICAgLy8gYXJndW1lbnQgZnJvbSB0aGUgb3JpZ2luYWwgYXJn
di4KKyAgICBhYnNsOjpzdHJpbmdfdmlldyBhcmcoY3Vycl9saXN0LkZyb250KCkpOworICAgIGJv
b2wgYXJnX2Zyb21fYXJndiA9IGlucHV0X2FyZ3Muc2l6ZSgpID09IDE7CisKKyAgICAvLyA1MC4g
SWYgYXJndW1lbnQgZG9lcyBub3Qgc3RhcnQgd2l0aCAtIG9yIGlzIGp1c3QgIi0iIC0gdGhpcyBp
cworICAgIC8vIHBvc2l0aW9uYWwgYXJndW1lbnQuCisgICAgaWYgKCFhYnNsOjpDb25zdW1lUHJl
Zml4KCZhcmcsICItIikgfHwgYXJnLmVtcHR5KCkpIHsKKyAgICAgIEFCU0xfSU5URVJOQUxfQ0hF
Q0soYXJnX2Zyb21fYXJndiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkZsYWdmaWxlIGNh
bm5vdCBjb250YWluIHBvc2l0aW9uYWwgYXJndW1lbnQiKTsKKworICAgICAgcG9zaXRpb25hbF9h
cmdzLnB1c2hfYmFjayhhcmd2W2N1cnJfbGlzdC5Gcm9udEluZGV4KCldKTsKKyAgICAgIGNvbnRp
bnVlOworICAgIH0KKworICAgIGlmIChhcmdfZnJvbV9hcmd2ICYmIChhcmdfbGlzdF9hY3QgPT0g
QXJndkxpc3RBY3Rpb246OmtLZWVwUGFyc2VkQXJncykpIHsKKyAgICAgIG91dHB1dF9hcmdzLnB1
c2hfYmFjayhhcmd2W2N1cnJfbGlzdC5Gcm9udEluZGV4KCldKTsKKyAgICB9CisKKyAgICAvLyA2
MC4gU3BsaXQgdGhlIGN1cnJlbnQgYXJndW1lbnQgb24gJz0nIHRvIGZpZ3VyZSBvdXQgdGhlIGFy
Z3VtZW50CisgICAgLy8gbmFtZSBhbmQgdmFsdWUuIElmIGZsYWcgbmFtZSBpcyBlbXB0eSBpdCBt
ZWFucyB3ZSd2ZSBnb3QgIi0tIi4gdmFsdWUKKyAgICAvLyBjYW4gYmUgZW1wdHkgZWl0aGVyIGlm
IHRoZXJlIHdlcmUgbm8gJz0nIGluIGFyZ3VtZW50IHN0ZDo6c3RyaW5nIGF0IGFsbCBvcgorICAg
IC8vIGFuIGFyZ3VtZW50IGxvb2tlZCBsaWtlICItLWZvbz0iLiBJbiBhIGxhdHRlciBjYXNlIGlz
X2VtcHR5X3ZhbHVlIGlzCisgICAgLy8gdHJ1ZS4KKyAgICBhYnNsOjpzdHJpbmdfdmlldyBmbGFn
X25hbWU7CisgICAgYWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWU7CisgICAgYm9vbCBpc19lbXB0eV92
YWx1ZSA9IGZhbHNlOworCisgICAgc3RkOjp0aWUoZmxhZ19uYW1lLCB2YWx1ZSwgaXNfZW1wdHlf
dmFsdWUpID0gU3BsaXROYW1lQW5kVmFsdWUoYXJnKTsKKworICAgIC8vIDcwLiAiLS0iIGFsb25l
IG1lYW5zIHdoYXQgaXQgZG9lcyBmb3IgR05VOiBzdG9wIGZsYWdzIHBhcnNpbmcuIFdlIGRvCisg
ICAgLy8gbm90IHN1cHBvcnQgcG9zaXRpb25hbCBhcmd1bWVudHMgaW4gZmxhZ2ZpbGVzLCBzbyB3
ZSBqdXN0IGRyb3AgdGhlbS4KKyAgICBpZiAoZmxhZ19uYW1lLmVtcHR5KCkpIHsKKyAgICAgIEFC
U0xfSU5URVJOQUxfQ0hFQ0soYXJnX2Zyb21fYXJndiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkZsYWdmaWxlIGNhbm5vdCBjb250YWluIHBvc2l0aW9uYWwgYXJndW1lbnQiKTsKKworICAg
ICAgY3Vycl9saXN0LlBvcEZyb250KCk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyA4
MC4gTG9jYXRlIHRoZSBmbGFnIGJhc2VkIG9uIGZsYWcgbmFtZS4gSGFuZGxlIGJvdGggLS1mb28g
YW5kIC0tbm9mb28KKyAgICBDb21tYW5kTGluZUZsYWcqIGZsYWcgPSBudWxscHRyOworICAgIGJv
b2wgaXNfbmVnYXRpdmUgPSBmYWxzZTsKKyAgICBzdGQ6OnRpZShmbGFnLCBpc19uZWdhdGl2ZSkg
PSBMb2NhdGVGbGFnKGZsYWdfbmFtZSk7CisKKyAgICBpZiAoZmxhZyA9PSBudWxscHRyKSB7Cisg
ICAgICBpZiAob25fdW5kZWZfZmxhZyAhPSBPblVuZGVmaW5lZEZsYWc6OmtJZ25vcmVVbmRlZmlu
ZWQpIHsKKyAgICAgICAgdW5kZWZpbmVkX2ZsYWdfbmFtZXMuZW1wbGFjZV9iYWNrKGFyZ19mcm9t
X2FyZ3YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0
cmluZyhmbGFnX25hbWUpKTsKKyAgICAgIH0KKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAg
IC8vIDkwLiBEZWR1Y2UgZmxhZydzIHZhbHVlIChmcm9tIHRoaXMgb3IgbmV4dCBhcmd1bWVudCkK
KyAgICBhdXRvIGN1cnJfaW5kZXggPSBjdXJyX2xpc3QuRnJvbnRJbmRleCgpOworICAgIGJvb2wg
dmFsdWVfc3VjY2VzcyA9IHRydWU7CisgICAgc3RkOjp0aWUodmFsdWVfc3VjY2VzcywgdmFsdWUp
ID0KKyAgICAgICAgRGVkdWNlRmxhZ1ZhbHVlKCpmbGFnLCB2YWx1ZSwgaXNfbmVnYXRpdmUsIGlz
X2VtcHR5X3ZhbHVlLCAmY3Vycl9saXN0KTsKKyAgICBzdWNjZXNzICY9IHZhbHVlX3N1Y2Nlc3M7
CisKKyAgICAvLyBJZiBhYm92ZSBjYWxsIGNvbnN1bWVkIGFuIGFyZ3VtZW50LCBpdCB3YXMgYSBz
dGFuZGFsb25lIHZhbHVlCisgICAgaWYgKGFyZ19mcm9tX2FyZ3YgJiYgKGFyZ19saXN0X2FjdCA9
PSBBcmd2TGlzdEFjdGlvbjo6a0tlZXBQYXJzZWRBcmdzKSAmJgorICAgICAgICAoY3Vycl9pbmRl
eCAhPSBjdXJyX2xpc3QuRnJvbnRJbmRleCgpKSkgeworICAgICAgb3V0cHV0X2FyZ3MucHVzaF9i
YWNrKGFyZ3ZbY3Vycl9saXN0LkZyb250SW5kZXgoKV0pOworICAgIH0KKworICAgIC8vIDEwMC4g
U2V0IHRoZSBsb2NhdGVkIGZsYWcgdG8gYSBuZXcgbmV3IHZhbHVlLCB1bmxlc3MgaXQgaXMgcmV0
aXJlZC4KKyAgICAvLyBTZXR0aW5nIHJldGlyZWQgZmxhZyBmYWlscywgYnV0IHdlIGlnbm9yaW5n
IGl0IGhlcmUuCisgICAgaWYgKGZsYWctPklzUmV0aXJlZCgpKSBjb250aW51ZTsKKworICAgIHN0
ZDo6c3RyaW5nIGVycm9yOworICAgIGlmICghZmxhZy0+U2V0RnJvbVN0cmluZyh2YWx1ZSwgU0VU
X0ZMQUdTX1ZBTFVFLCBrQ29tbWFuZExpbmUsICZlcnJvcikpIHsKKyAgICAgIGZsYWdzX2ludGVy
bmFsOjpSZXBvcnRVc2FnZUVycm9yKGVycm9yLCB0cnVlKTsKKyAgICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKKyAgICB9CisgIH0KKworICBmb3IgKGNvbnN0IGF1dG8mIGZsYWdfbmFtZSA6IHVuZGVmaW5l
ZF9mbGFnX25hbWVzKSB7CisgICAgaWYgKENhbklnbm9yZVVuZGVmaW5lZEZsYWcoZmxhZ19uYW1l
LnNlY29uZCkpIGNvbnRpbnVlOworCisgICAgZmxhZ3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdlRXJy
b3IoCisgICAgICAgIGFic2w6OlN0ckNhdCgiVW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyAnIiwg
ZmxhZ19uYW1lLnNlY29uZCwgIiciKSwKKyAgICAgICAgdHJ1ZSk7CisKKyAgICBzdWNjZXNzID0g
ZmFsc2U7CisgIH0KKworI2lmIEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMKKyAgaWYgKCFzdWNjZXNz
KSB7CisgICAgZmxhZ3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdlRXJyb3IoCisgICAgICAgICJOT1RF
OiBjb21tYW5kIGxpbmUgZmxhZ3MgYXJlIGRpc2FibGVkIGluIHRoaXMgYnVpbGQiLCB0cnVlKTsK
KyAgfQorI2VuZGlmCisKKyAgaWYgKCFzdWNjZXNzKSB7CisgICAgZmxhZ3NfaW50ZXJuYWw6Okhh
bmRsZVVzYWdlRmxhZ3Moc3RkOjpjb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFByb2dyYW1Vc2FnZU1lc3NhZ2UoKSk7CisgICAgc3RkOjpleGl0KDEpOworICB9CisK
KyAgaWYgKHVzYWdlX2ZsYWdfYWN0ID09IFVzYWdlRmxhZ3NBY3Rpb246OmtIYW5kbGVVc2FnZSkg
eworICAgIGludCBleGl0X2NvZGUgPSBmbGFnc19pbnRlcm5hbDo6SGFuZGxlVXNhZ2VGbGFncygK
KyAgICAgICAgc3RkOjpjb3V0LCBQcm9ncmFtVXNhZ2VNZXNzYWdlKCkpOworCisgICAgaWYgKGV4
aXRfY29kZSAhPSAtMSkgeworICAgICAgc3RkOjpleGl0KGV4aXRfY29kZSk7CisgICAgfQorICB9
CisKKyAgUmVzZXRHZW5lcmF0b3JGbGFncyhmbGFnZmlsZV92YWx1ZSk7CisKKyAgLy8gUmVpbnN0
YXRlIHBvc2l0aW9uYWwgYXJncyB3aGljaCB3ZXJlIGludGVybWl4ZWQgd2l0aCBmbGFncyBpbiB0
aGUgYXJndW1lbnRzCisgIC8vIGxpc3QuCisgIGZvciAoYXV0byBhcmcgOiBwb3NpdGlvbmFsX2Fy
Z3MpIHsKKyAgICBvdXRwdXRfYXJncy5wdXNoX2JhY2soYXJnKTsKKyAgfQorCisgIC8vIEFsbCB0
aGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgcG9zaXRpb25hbC4KKyAgaWYgKCFpbnB1dF9hcmdz
LmVtcHR5KCkpIHsKKyAgICBmb3IgKGludCBhcmdfaW5kZXggPSBpbnB1dF9hcmdzLmJhY2soKS5G
cm9udEluZGV4KCk7IGFyZ19pbmRleCA8IGFyZ2M7CisgICAgICAgICArK2FyZ19pbmRleCkgewor
ICAgICAgb3V0cHV0X2FyZ3MucHVzaF9iYWNrKGFyZ3ZbYXJnX2luZGV4XSk7CisgICAgfQorICB9
CisKKyAgcmV0dXJuIG91dHB1dF9hcmdzOworfQorCit9ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50
ZXJuYWwKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RkOjp2ZWN0b3I8Y2hhcio+IFBhcnNlQ29tbWFu
ZExpbmUoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworICByZXR1cm4gZmxhZ3NfaW50ZXJuYWw6
OlBhcnNlQ29tbWFuZExpbmVJbXBsKAorICAgICAgYXJnYywgYXJndiwgZmxhZ3NfaW50ZXJuYWw6
OkFyZ3ZMaXN0QWN0aW9uOjprUmVtb3ZlUGFyc2VkQXJncywKKyAgICAgIGZsYWdzX2ludGVybmFs
OjpVc2FnZUZsYWdzQWN0aW9uOjprSGFuZGxlVXNhZ2UsCisgICAgICBmbGFnc19pbnRlcm5hbDo6
T25VbmRlZmluZWRGbGFnOjprQWJvcnRJZlVuZGVmaW5lZCk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9wYXJzZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvcGFy
c2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGJiNzUxMDE1NjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9wYXJzZS5oCkBAIC0wLDAgKzEsNTggQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogcGFyc2UuaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vCisvLyBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgbWFpbiBwYXJzaW5nIGZ1bmN0aW9uIGZv
ciBBYnNlaWwgZmxhZ3M6CisvLyBgYWJzbDo6UGFyc2VDb21tYW5kTGluZSgpYC4KKworI2lmbmRl
ZiBBQlNMX0ZMQUdTX1BBUlNFX0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfUEFSU0VfSF8KKworI2lu
Y2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2ZsYWdz
L2ludGVybmFsL3BhcnNlLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKKworLy8gUGFyc2VDb21tYW5k
TGluZSgpCisvLworLy8gUGFyc2VzIHRoZSBzZXQgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBw
YXNzZWQgaW4gdGhlIGBhcmdjYCAoYXJndW1lbnQKKy8vIGNvdW50KSBhbmQgYGFyZ3ZbXWAgKGFy
Z3VtZW50IHZlY3RvcikgcGFyYW1ldGVycyBmcm9tIGBtYWluKClgLCBhc3NpZ25pbmcKKy8vIHZh
bHVlcyB0byBhbnkgZGVmaW5lZCBBYnNlaWwgZmxhZ3MuIChBbnkgYXJndW1lbnRzIHBhc3NlZCBh
ZnRlciB0aGUKKy8vIGZsYWctdGVybWluYXRpbmcgZGVsaW1pdGVyIChgLS1gKSBhcmUgdHJlYXRl
ZCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhbmQKKy8vIGlnbm9yZWQuKQorLy8KKy8vIEFueSBj
b21tYW5kLWxpbmUgZmxhZ3MgKGFuZCBhcmd1bWVudHMgdG8gdGhvc2UgZmxhZ3MpIGFyZSBwYXJz
ZWQgaW50byBBYnNlaWwKKy8vIEZsYWcgdmFsdWVzLCBpZiB0aG9zZSBmbGFncyBhcmUgZGVmaW5l
ZC4gQW55IHVuZGVmaW5lZCBmbGFncyB3aWxsIGVpdGhlcgorLy8gcmV0dXJuIGFuIGVycm9yLCBv
ciBiZSBpZ25vcmVkIGlmIHRoYXQgZmxhZyBpcyBkZXNpZ25hdGVkIHVzaW5nIGB1bmRlZm9rYCB0
bworLy8gaW5kaWNhdGUgInVuZGVmaW5lZCBpcyBPSy4iCisvLworLy8gQW55IGNvbW1hbmQtbGlu
ZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBub3QgcGFydCBvZiBhbnkgY29tbWFuZC1saW5lIGZsYWcg
KG9yCisvLyBhcmd1bWVudHMgdG8gYSBmbGFnKSBhcmUgcmV0dXJuZWQgaW4gYSB2ZWN0b3IsIHdp
dGggdGhlIHByb2dyYW0gaW52b2NhdGlvbgorLy8gbmFtZSBhdCBwb3NpdGlvbiAwIG9mIHRoYXQg
dmVjdG9yLiAoTm90ZSB0aGF0IHRoaXMgaW5jbHVkZXMgcG9zaXRpb25hbAorLy8gYXJndW1lbnRz
IGFmdGVyIHRoZSBmbGFnLXRlcm1pbmF0aW5nIGRlbGltaXRlciBgLS1gLikKKy8vCisvLyBBZnRl
ciBhbGwgZmxhZ3MgYW5kIGZsYWcgYXJndW1lbnRzIGFyZSBwYXJzZWQsIHRoaXMgZnVuY3Rpb24g
bG9va3MgZm9yIGFueQorLy8gYnVpbHQtaW4gdXNhZ2UgZmxhZ3MgKGUuZy4gYC0taGVscGApLCBh
bmQgaWYgYW55IHdlcmUgc3BlY2lmaWVkLCBpdCByZXBvcnRzCisvLyBoZWxwIG1lc3NhZ2VzIGFu
ZCB0aGVuIGV4aXRzIHRoZSBwcm9ncmFtLgorc3RkOjp2ZWN0b3I8Y2hhcio+IFBhcnNlQ29tbWFu
ZExpbmUoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisK
KyNlbmRpZiAgLy8gQUJTTF9GTEFHU19QQVJTRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3Mv
cGFyc2VfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3BhcnNlX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ0N2EzYmM3YmRjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZmxhZ3MvcGFyc2VfdGVzdC5jYwpAQCAtMCwwICsxLDg1OCBAQAorLy8KKy8vIENvcHly
aWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9w
YXJzZS5oIgorCisjaW5jbHVkZSA8ZnN0cmVhbT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwv
cmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVkX3NldF9l
bnYuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ZsYWcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmgiCisjaW5j
bHVkZSAiYWJzbC90eXBlcy9zcGFuLmgiCisKKyNpZmRlZiBfV0lOMzIKKyNpbmNsdWRlIDx3aW5k
b3dzLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIHsKKwordXNpbmcgYWJzbDo6YmFzZV9pbnRlcm5h
bDo6U2NvcGVkU2V0RW52OworCitzdHJ1Y3QgVURUIHsKKyAgVURUKCkgPSBkZWZhdWx0OworICBV
RFQoY29uc3QgVURUJikgPSBkZWZhdWx0OworICBVRFQoaW50IHYpIDogdmFsdWUodikge30gIC8v
IE5PTElOVAorCisgIGludCB2YWx1ZTsKK307CisKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpz
dHJpbmdfdmlldyBpbiwgVURUKiB1ZHQsIHN0ZDo6c3RyaW5nKiBlcnIpIHsKKyAgaWYgKGluID09
ICJBIikgeworICAgIHVkdC0+dmFsdWUgPSAxOworICAgIHJldHVybiB0cnVlOworICB9CisgIGlm
IChpbiA9PSAiQUFBIikgeworICAgIHVkdC0+dmFsdWUgPSAxMDsKKyAgICByZXR1cm4gdHJ1ZTsK
KyAgfQorCisgICplcnIgPSAiVXNlIHZhbHVlcyBBLCBBQUEgaW5zdGVhZCI7CisgIHJldHVybiBm
YWxzZTsKK30KK3N0ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxhZyhjb25zdCBVRFQmIHVkdCkgewor
ICByZXR1cm4gdWR0LnZhbHVlID09IDEgPyAiQSIgOiAiQUFBIjsKK30KKworc3RkOjpzdHJpbmcg
R2V0VGVzdFRtcERpckVudlZhcihjb25zdCBjaGFyKiBjb25zdCBlbnZfdmFyX25hbWUpIHsKKyNp
ZmRlZiBfV0lOMzIKKyAgY2hhciBidWZbTUFYX1BBVEhdOworICBhdXRvIGdldF9yZXMgPSBHZXRF
bnZpcm9ubWVudFZhcmlhYmxlQShlbnZfdmFyX25hbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICBp
ZiAoZ2V0X3JlcyA+PSBzaXplb2YoYnVmKSB8fCBnZXRfcmVzID09IDApIHsKKyAgICByZXR1cm4g
IiI7CisgIH0KKworICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmLCBnZXRfcmVzKTsKKyNlbHNlCisg
IGNvbnN0IGNoYXIqIHZhbCA9IDo6Z2V0ZW52KGVudl92YXJfbmFtZSk7CisgIGlmICh2YWwgPT0g
bnVsbHB0cikgeworICAgIHJldHVybiAiIjsKKyAgfQorCisgIHJldHVybiB2YWw7CisjZW5kaWYK
K30KKworY29uc3Qgc3RkOjpzdHJpbmcmIEdldFRlc3RUZW1wRGlyKCkgeworICBzdGF0aWMgc3Rk
OjpzdHJpbmcqIHRlbXBfZGlyX25hbWUgPSBbXSgpIC0+IHN0ZDo6c3RyaW5nKiB7CisgICAgc3Rk
OjpzdHJpbmcqIHJlcyA9IG5ldyBzdGQ6OnN0cmluZyhHZXRUZXN0VG1wRGlyRW52VmFyKCJURVNU
X1RNUERJUiIpKTsKKworICAgIGlmIChyZXMtPmVtcHR5KCkpIHsKKyAgICAgICpyZXMgPSBHZXRU
ZXN0VG1wRGlyRW52VmFyKCJUTVBESVIiKTsKKyAgICB9CisKKyAgICBpZiAocmVzLT5lbXB0eSgp
KSB7CisjaWZkZWYgX1dJTjMyCisgICAgICBjaGFyIHRlbXBfcGF0aF9idWZmZXJbTUFYX1BBVEhd
OworCisgICAgICBhdXRvIGxlbiA9IEdldFRlbXBQYXRoQShNQVhfUEFUSCwgdGVtcF9wYXRoX2J1
ZmZlcik7CisgICAgICBpZiAobGVuIDwgTUFYX1BBVEggJiYgbGVuICE9IDApIHsKKyAgICAgICAg
c3RkOjpzdHJpbmcgdGVtcF9kaXJfbmFtZSA9IGFic2w6OlN0ckNhdCgKKyAgICAgICAgICAgIHRl
bXBfcGF0aF9idWZmZXIsICJcXHBhcnNlX3Rlc3QuIiwgR2V0Q3VycmVudFByb2Nlc3NJZCgpKTsK
KyAgICAgICAgaWYgKENyZWF0ZURpcmVjdG9yeUEodGVtcF9kaXJfbmFtZS5jX3N0cigpLCBudWxs
cHRyKSkgeworICAgICAgICAgICpyZXMgPSB0ZW1wX2Rpcl9uYW1lOworICAgICAgICB9CisgICAg
ICB9CisjZWxzZQorICAgICAgY2hhciB0ZW1wX2Rpcl90ZW1wbGF0ZVtdID0gIi90bXAvcGFyc2Vf
dGVzdC5YWFhYWFgiOworICAgICAgaWYgKGF1dG8qIHVuaXF1ZV9uYW1lID0gOjpta2R0ZW1wKHRl
bXBfZGlyX3RlbXBsYXRlKSkgeworICAgICAgICAqcmVzID0gdW5pcXVlX25hbWU7CisgICAgICB9
CisjZW5kaWYKKworICAgICAgaWYgKHJlcy0+ZW1wdHkoKSkgeworICAgICAgICBBQlNMX0lOVEVS
TkFMX0xPRyhGQVRBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBtYWtl
IHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIGRhdGEgZmlsZXMiKTsKKyAgICAgIH0KKyAgICB9CisK
KyNpZmRlZiBfV0lOMzIKKyAgICAqcmVzICs9ICJcXCI7CisjZWxzZQorICAgICpyZXMgKz0gIi8i
OworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzOworICB9KCk7CisKKyAgcmV0dXJuICp0ZW1wX2Rp
cl9uYW1lOworfQorCitzdHJ1Y3QgRmxhZ2ZpbGVEYXRhIHsKKyAgY29uc3QgYWJzbDo6c3RyaW5n
X3ZpZXcgZmlsZV9uYW1lOworICBjb25zdCBhYnNsOjpTcGFuPGNvbnN0IGNoYXIqIGNvbnN0PiBm
aWxlX2xpbmVzOworfTsKKworLy8gY2xhbmctZm9ybWF0IG9mZgorY29uc3RleHByIGNvbnN0IGNo
YXIqIGNvbnN0IGZmMV9kYXRhW10gPSB7CisgICAgIiMgY29tbWVudCAgICAiLAorICAgICIgICMg
Y29tbWVudCAgIiwKKyAgICAiIiwKKyAgICAiICAgICAiLAorICAgICItLWludF9mbGFnPS0xIiwK
KyAgICAiICAtLXN0cmluZ19mbGFnPXEydzIgICIsCisgICAgIiAgIyMgICAiLAorICAgICIgIC0t
ZG91YmxlX2ZsYWc9MC4xIiwKKyAgICAiLS1ib29sX2ZsYWc9WSAgIgorfTsKKworY29uc3RleHBy
IGNvbnN0IGNoYXIqIGNvbnN0IGZmMl9kYXRhW10gPSB7CisgICAgIiMgU2V0dGluZyBsZWdhY3kg
ZmxhZyIsCisgICAgIi0tbGVnYWN5X2ludD0xMTExIiwKKyAgICAiLS1sZWdhY3lfYm9vbCIsCisg
ICAgIi0tbm9ib29sX2ZsYWciLAorICAgICItLWxlZ2FjeV9zdHI9YXFzdyIsCisgICAgIi0taW50
X2ZsYWc9MTAwIiwKKyAgICAiICAgIyMgPT09PT09PT09PT09PSIKK307CisvLyBjbGFuZy1mb3Jt
YXQgb24KKworLy8gQnVpbGRzIGZsYWdmaWxlIGZsYWcgaW4gdGhlIGZsYWdmaWxlX2ZsYWcgYnVm
ZmVyIGFuZCByZXR1cm5zIGl0LiBUaGlzCisvLyBmdW5jdGlvbiBhbHNvIGNyZWF0ZXMgYSB0ZW1w
b3JhcnkgZmxhZ2ZpbGUgYmFzZWQgb24gRmxhZ2ZpbGVEYXRhIGlucHV0LgorLy8gV2UgY3JlYXRl
IGEgZmxhZ2ZpbGUgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHdpdGggdGhlIG5hbWUgc3BlY2lm
aWVkIGluCisvLyBGbGFnZmlsZURhdGEgYW5kIHBvcHVsYXRlIGl0IHdpdGggbGluZXMgc3BlY2lm
ZWQgaW4gRmxhZ2ZpbGVEYXRhLiBJZiAkMCBpcworLy8gcmVmZXJlbmNlZCBpbiBhbnkgb2YgdGhl
IGxpbmVzIGluIEZsYWdmaWxlRGF0YSB0aGV5IGFyZSByZXBsYWNlZCB3aXRoCisvLyB0ZW1wb3Jh
cnkgZGlyZWN0b3J5IGxvY2F0aW9uLiBUaGlzIHdheSB3ZSBjYW4gdGVzdCBpbmNsdXNpb24gb2Yg
b25lIGZsYWdmaWxlCisvLyBmcm9tIGFub3RoZXIgZmxhZ2ZpbGUuCitjb25zdCBjaGFyKiBHZXRG
bGFnZmlsZUZsYWcoY29uc3Qgc3RkOjp2ZWN0b3I8RmxhZ2ZpbGVEYXRhPiYgZmZkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBmbGFnZmlsZV9mbGFnKSB7CisgICpm
bGFnZmlsZV9mbGFnID0gIi0tZmxhZ2ZpbGU9IjsKKyAgYWJzbDo6c3RyaW5nX3ZpZXcgc2VwYXJh
dG9yOworICBmb3IgKGNvbnN0IGF1dG8mIGZsYWdmaWxlX2RhdGEgOiBmZmQpIHsKKyAgICBzdGQ6
OnN0cmluZyBmbGFnZmlsZV9uYW1lID0KKyAgICAgICAgYWJzbDo6U3RyQ2F0KEdldFRlc3RUZW1w
RGlyKCksIGZsYWdmaWxlX2RhdGEuZmlsZV9uYW1lKTsKKworICAgIHN0ZDo6b2ZzdHJlYW0gZmxh
Z2ZpbGVfb3V0KGZsYWdmaWxlX25hbWUpOworICAgIGZvciAoYXV0byBsaW5lIDogZmxhZ2ZpbGVf
ZGF0YS5maWxlX2xpbmVzKSB7CisgICAgICBmbGFnZmlsZV9vdXQgPDwgYWJzbDo6U3Vic3RpdHV0
ZShsaW5lLCBHZXRUZXN0VGVtcERpcigpKSA8PCAiXG4iOworICAgIH0KKworICAgIGFic2w6OlN0
ckFwcGVuZChmbGFnZmlsZV9mbGFnLCBzZXBhcmF0b3IsIGZsYWdmaWxlX25hbWUpOworICAgIHNl
cGFyYXRvciA9ICIsIjsKKyAgfQorCisgIHJldHVybiBmbGFnZmlsZV9mbGFnLT5jX3N0cigpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKKworQUJTTF9GTEFHKGludCwgaW50X2ZsYWcsIDEsICIiKTsK
K0FCU0xfRkxBRyhkb3VibGUsIGRvdWJsZV9mbGFnLCAxLjEsICIiKTsKK0FCU0xfRkxBRyhzdGQ6
OnN0cmluZywgc3RyaW5nX2ZsYWcsICJhIiwgIiIpOworQUJTTF9GTEFHKGJvb2wsIGJvb2xfZmxh
ZywgZmFsc2UsICIiKTsKK0FCU0xfRkxBRyhVRFQsIHVkdF9mbGFnLCAtMSwgIiIpOworQUJTTF9S
RVRJUkVEX0ZMQUcoaW50LCBsZWdhY3lfaW50LCAxLCAiIik7CitBQlNMX1JFVElSRURfRkxBRyhi
b29sLCBsZWdhY3lfYm9vbCwgZmFsc2UsICIiKTsKK0FCU0xfUkVUSVJFRF9GTEFHKHN0ZDo6c3Ry
aW5nLCBsZWdhY3lfc3RyLCAibCIsICIiKTsKKworbmFtZXNwYWNlIHsKKworbmFtZXNwYWNlIGZs
YWdzID0gYWJzbDo6ZmxhZ3NfaW50ZXJuYWw7Cit1c2luZyB0ZXN0aW5nOjpFbGVtZW50c0FyZUFy
cmF5OworCitjbGFzcyBQYXJzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJpdmF0
ZToKKyAgZmxhZ3M6OkZsYWdTYXZlciBmbGFnX3NhdmVyXzsKK307CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK3RlbXBsYXRlIDxpbnQgTj4KK3N0ZDo6dmVjdG9yPGNoYXIqPiBJbnZva2VQYXJzZShjb25z
dCBjaGFyKiAoJmluX2FyZ3YpW05dKSB7CisgIHJldHVybiBhYnNsOjpQYXJzZUNvbW1hbmRMaW5l
KE4sIGNvbnN0X2Nhc3Q8Y2hhcioqPihpbl9hcmd2KSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K3RlbXBsYXRlIDxpbnQgTj4KK3ZvaWQgVGVzdFBhcnNlKGNvbnN0IGNoYXIqICgmaW5fYXJndilb
Tl0sIGludCBpbnRfZmxhZ192YWx1ZSwKKyAgICAgICAgICAgICAgIGRvdWJsZSBkb3VibGVfZmxh
Z192YWwsIGFic2w6OnN0cmluZ192aWV3IHN0cmluZ19mbGFnX3ZhbCwKKyAgICAgICAgICAgICAg
IGJvb2wgYm9vbF9mbGFnX3ZhbCwgaW50IGV4cF9wb3NpdGlvbl9hcmdzID0gMCkgeworICBhdXRv
IG91dF9hcmdzID0gSW52b2tlUGFyc2UoaW5fYXJndik7CisKKyAgRVhQRUNUX0VRKG91dF9hcmdz
LnNpemUoKSwgMSArIGV4cF9wb3NpdGlvbl9hcmdzKTsKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdz
WzBdLCAidGVzdGJpbiIpOworCisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2ludF9m
bGFnKSwgaW50X2ZsYWdfdmFsdWUpOworICBFWFBFQ1RfTkVBUihhYnNsOjpHZXRGbGFnKEZMQUdT
X2RvdWJsZV9mbGFnKSwgZG91YmxlX2ZsYWdfdmFsLCAwLjAwMDEpOworICBFWFBFQ1RfRVEoYWJz
bDo6R2V0RmxhZyhGTEFHU19zdHJpbmdfZmxhZyksIHN0cmluZ19mbGFnX3ZhbCk7CisgIEVYUEVD
VF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2Jvb2xfZmxhZyksIGJvb2xfZmxhZ192YWwpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0RW1wdHlBcmd2KSB7Cisg
IGNvbnN0IGNoYXIqIGluX2FyZ3ZbXSA9IHsidGVzdGJpbiJ9OworCisgIGF1dG8gb3V0X2FyZ3Mg
PSBJbnZva2VQYXJzZShpbl9hcmd2KTsKKworICBFWFBFQ1RfRVEob3V0X2FyZ3Muc2l6ZSgpLCAx
KTsKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdzWzBdLCAidGVzdGJpbiIpOworfQorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0VmFsaWRJbnRBcmcpIHsKKyAgY29uc3Qg
Y2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLWludF9mbGFn
PTEwIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAxMCwgMS4xLCAiYSIsIGZhbHNlKTsK
KworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAg
Ii1pbnRfZmxhZz0wMjAiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczIsIDIwLCAxLjEsICJh
IiwgZmFsc2UpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MzW10gPSB7CisgICAgICAidGVzdGJp
biIsCisgICAgICAiLS1pbnRfZmxhZyIsCisgICAgICAiLTMwIiwKKyAgfTsKKyAgVGVzdFBhcnNl
KGluX2FyZ3MzLCAtMzAsIDEuMSwgImEiLCBmYWxzZSk7CisKKyAgY29uc3QgY2hhciogaW5fYXJn
czRbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItaW50X2ZsYWciLAorICAgICAgIjB4
MjEiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczQsIDMzLCAxLjEsICJhIiwgZmFsc2UpOwor
fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0VmFsaWREb3VibGVB
cmcpIHsKKyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAg
ICAgICItLWRvdWJsZV9mbGFnPTIuMyIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMSwgMSwg
Mi4zLCAiYSIsIGZhbHNlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAg
InRlc3RiaW4iLAorICAgICAgIi0tZG91YmxlX2ZsYWc9MHgxLjIiLAorICB9OworICBUZXN0UGFy
c2UoaW5fYXJnczIsIDEsIDEuMTI1LCAiYSIsIGZhbHNlKTsKKworICBjb25zdCBjaGFyKiBpbl9h
cmdzM1tdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tZG91YmxlX2ZsYWciLAorICAg
ICAgIjk5LjciLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczMsIDEsIDk5LjcsICJhIiwgZmFs
c2UpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3M0W10gPSB7CisgICAgICAidGVzdGJpbiIsCisg
ICAgICAiLS1kb3VibGVfZmxhZyIsCisgICAgICAiMHgyMC4xIiwKKyAgfTsKKyAgVGVzdFBhcnNl
KGluX2FyZ3M0LCAxLCAzMi4wNjI1LCAiYSIsIGZhbHNlKTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdFZhbGlkU3RyaW5nQXJnKSB7CisgIGNvbnN0IGNoYXIq
IGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1zdHJpbmdfZmxhZz1h
cXN3ZGUiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczEsIDEsIDEuMSwgImFxc3dkZSIsIGZh
bHNlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAor
ICAgICAgIi1zdHJpbmdfZmxhZz1hPWI9YyIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMiwg
MSwgMS4xLCAiYT1iPWMiLCBmYWxzZSk7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczNbXSA9IHsK
KyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLXN0cmluZ19mbGFnIiwKKyAgICAgICJ6YXhzY2Qi
LAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczMsIDEsIDEuMSwgInpheHNjZCIsIGZhbHNlKTsK
KworICBjb25zdCBjaGFyKiBpbl9hcmdzNFtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAg
Ii1zdHJpbmdfZmxhZyIsCisgICAgICAiLS1pbnRfZmxhZyIsCisgIH07CisgIFRlc3RQYXJzZShp
bl9hcmdzNCwgMSwgMS4xLCAiLS1pbnRfZmxhZyIsIGZhbHNlKTsKKworICBjb25zdCBjaGFyKiBp
bl9hcmdzNVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tc3RyaW5nX2ZsYWciLAor
ICAgICAgIi0tbm9fYV9mbGFnPTExIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3M1LCAxLCAx
LjEsICItLW5vX2FfZmxhZz0xMSIsIGZhbHNlKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVT
VF9GKFBhcnNlVGVzdCwgVGVzdFZhbGlkQm9vbEFyZykgeworICBjb25zdCBjaGFyKiBpbl9hcmdz
MVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tYm9vbF9mbGFnIiwKKyAgfTsKKyAg
VGVzdFBhcnNlKGluX2FyZ3MxLCAxLCAxLjEsICJhIiwgdHJ1ZSk7CisKKyAgY29uc3QgY2hhciog
aW5fYXJnczJbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLW5vYm9vbF9mbGFnIiwK
KyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MyLCAxLCAxLjEsICJhIiwgZmFsc2UpOworCisgIGNv
bnN0IGNoYXIqIGluX2FyZ3MzW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1ib29s
X2ZsYWc9dHJ1ZSIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMywgMSwgMS4xLCAiYSIsIHRy
dWUpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3M0W10gPSB7CisgICAgICAidGVzdGJpbiIsCisg
ICAgICAiLWJvb2xfZmxhZz1mYWxzZSIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzNCwgMSwg
MS4xLCAiYSIsIGZhbHNlKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFBhcnNlVGVz
dCwgVGVzdFZhbGlkVURUQXJnKSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAg
ICAidGVzdGJpbiIsCisgICAgICAiLS11ZHRfZmxhZz1BIiwKKyAgfTsKKyAgSW52b2tlUGFyc2Uo
aW5fYXJnczEpOworCisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3VkdF9mbGFnKS52
YWx1ZSwgMSk7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczJbXSA9IHsidGVzdGJpbiIsICItLXVk
dF9mbGFnIiwgIkFBQSJ9OworICBJbnZva2VQYXJzZShpbl9hcmdzMik7CisKKyAgRVhQRUNUX0VR
KGFic2w6OkdldEZsYWcoRkxBR1NfdWR0X2ZsYWcpLnZhbHVlLCAxMCk7Cit9CisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RWYWxpZE11bHRpcGxlQXJnKSB7CisgIGNv
bnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsICAgICAgICAgICAiLS1i
b29sX2ZsYWciLCAgICAgICAiLS1pbnRfZmxhZz0yIiwKKyAgICAgICItLWRvdWJsZV9mbGFnPTAu
MSIsICItLXN0cmluZ19mbGFnPWFzZCIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMSwgMiwg
MC4xLCAiYXNkIiwgdHJ1ZSk7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczJbXSA9IHsKKyAgICAg
ICJ0ZXN0YmluIiwgIi0tc3RyaW5nX2ZsYWc9IiwgIi0tbm9ib29sX2ZsYWciLCAiLS1pbnRfZmxh
ZyIsCisgICAgICAiLTAxMSIsICAgICItLWRvdWJsZV9mbGFnIiwgICItMWUtMiIsCisgIH07Cisg
IFRlc3RQYXJzZShpbl9hcmdzMiwgLTExLCAtMC4wMSwgIiIsIGZhbHNlKTsKKworICBjb25zdCBj
aGFyKiBpbl9hcmdzM1tdID0geworICAgICAgInRlc3RiaW4iLCAgICAgICAgICAiLS1pbnRfZmxh
ZyIsICAgICAgICAgIi0wIiwgIi0tc3RyaW5nX2ZsYWciLCAiXCJcIiIsCisgICAgICAiLS1ib29s
X2ZsYWc9dHJ1ZSIsICItLWRvdWJsZV9mbGFnPTFlMTgiLAorICB9OworICBUZXN0UGFyc2UoaW5f
YXJnczMsIDAsIDFlMTgsICJcIlwiIiwgdHJ1ZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
U1RfRihQYXJzZVRlc3QsIFRlc3RQb3NpdGlvbmFsQXJncykgeworICBjb25zdCBjaGFyKiBpbl9h
cmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgInAxIiwKKyAgICAgICJwMiIsCisg
IH07CisgIFRlc3RQYXJzZShpbl9hcmdzMSwgMSwgMS4xLCAiYSIsIGZhbHNlLCAyKTsKKworICBh
dXRvIG91dF9hcmdzMSA9IEludm9rZVBhcnNlKGluX2FyZ3MxKTsKKworICBFWFBFQ1RfU1RSRVEo
b3V0X2FyZ3MxWzFdLCAicDEiKTsKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdzMVsyXSwgInAyIik7
CisKKyAgY29uc3QgY2hhciogaW5fYXJnczJbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAg
ICItLWludF9mbGFnPTIiLAorICAgICAgInAxIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3My
LCAyLCAxLjEsICJhIiwgZmFsc2UsIDEpOworCisgIGF1dG8gb3V0X2FyZ3MyID0gSW52b2tlUGFy
c2UoaW5fYXJnczIpOworCisgIEVYUEVDVF9TVFJFUShvdXRfYXJnczJbMV0sICJwMSIpOworCisg
IGNvbnN0IGNoYXIqIGluX2FyZ3MzW10gPSB7InRlc3RiaW4iLCAicDEiLCAgICAgICAgICAiLS1p
bnRfZmxhZz0zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicDIiLCAgICAgICItLWJv
b2xfZmxhZyIsICJ0cnVlIn07CisgIFRlc3RQYXJzZShpbl9hcmdzMywgMywgMS4xLCAiYSIsIHRy
dWUsIDMpOworCisgIGF1dG8gb3V0X2FyZ3MzID0gSW52b2tlUGFyc2UoaW5fYXJnczMpOworCisg
IEVYUEVDVF9TVFJFUShvdXRfYXJnczNbMV0sICJwMSIpOworICBFWFBFQ1RfU1RSRVEob3V0X2Fy
Z3MzWzJdLCAicDIiKTsKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdzM1szXSwgInRydWUiKTsKKwor
ICBjb25zdCBjaGFyKiBpbl9hcmdzNFtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0t
IiwKKyAgICAgICJwMSIsCisgICAgICAicDIiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczQs
IDMsIDEuMSwgImEiLCB0cnVlLCAyKTsKKworICBhdXRvIG91dF9hcmdzNCA9IEludm9rZVBhcnNl
KGluX2FyZ3M0KTsKKworICBFWFBFQ1RfU1RSRVEob3V0X2FyZ3M0WzFdLCAicDEiKTsKKyAgRVhQ
RUNUX1NUUkVRKG91dF9hcmdzNFsyXSwgInAyIik7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczVb
XSA9IHsKKyAgICAgICJ0ZXN0YmluIiwgInAxIiwgIi0taW50X2ZsYWc9NCIsICItLSIsICItLWJv
b2xfZmxhZyIsICJmYWxzZSIsICJwMiIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzNSwgNCwg
MS4xLCAiYSIsIHRydWUsIDQpOworCisgIGF1dG8gb3V0X2FyZ3M1ID0gSW52b2tlUGFyc2UoaW5f
YXJnczUpOworCisgIEVYUEVDVF9TVFJFUShvdXRfYXJnczVbMV0sICJwMSIpOworICBFWFBFQ1Rf
U1RSRVEob3V0X2FyZ3M1WzJdLCAiLS1ib29sX2ZsYWciKTsKKyAgRVhQRUNUX1NUUkVRKG91dF9h
cmdzNVszXSwgImZhbHNlIik7CisgIEVYUEVDVF9TVFJFUShvdXRfYXJnczVbNF0sICJwMiIpOwor
fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCit1c2luZyBQYXJzZURlYXRoVGVzdCA9IFBhcnNlVGVzdDsK
KworVEVTVF9GKFBhcnNlRGVhdGhUZXN0LCBUZXN0VW5kZWZpbmVkQXJnKSB7CisgIGNvbnN0IGNo
YXIqIGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS11bmRlZmluZWRf
ZmxhZyIsCisgIH07CisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9hcmdzMSksCisgICAg
ICAgICAgICAgICAiVW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyAndW5kZWZpbmVkX2ZsYWcnIik7
CisKKyAgY29uc3QgY2hhciogaW5fYXJnczJbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAg
ICItLW5vcHJlZml4ZWRfZmxhZyIsCisgIH07CisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShp
bl9hcmdzMiksCisgICAgICAgICAgICAgICAiVW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyAnbm9w
cmVmaXhlZF9mbGFnJyIpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MzW10gPSB7CisgICAgICAi
dGVzdGJpbiIsCisgICAgICAiLS1JbnRfZmxhZz0xIiwKKyAgfTsKKyAgRVhQRUNUX0RFQVRIKElu
dm9rZVBhcnNlKGluX2FyZ3MzKSwgIlVua25vd24gY29tbWFuZCBsaW5lIGZsYWcgJ0ludF9mbGFn
JyIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VEZWF0aFRlc3QsIFRlc3RJ
bnZhbGlkQm9vbEZsYWdGb3JtYXQpIHsKKyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAg
ICAgICJ0ZXN0YmluIiwKKyAgICAgICItLWJvb2xfZmxhZz0iLAorICB9OworICBFWFBFQ1RfREVB
VEgoCisgICAgICBJbnZva2VQYXJzZShpbl9hcmdzMSksCisgICAgICAiTWlzc2luZyB0aGUgdmFs
dWUgYWZ0ZXIgYXNzaWdubWVudCBmb3IgdGhlIGJvb2xlYW4gZmxhZyAnYm9vbF9mbGFnJyIpOwor
CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MyW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAi
LS1ub2Jvb2xfZmxhZz10cnVlIiwKKyAgfTsKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGlu
X2FyZ3MyKSwKKyAgICAgICAgICAgICAgICJOZWdhdGl2ZSBmb3JtIHdpdGggYXNzaWdubWVudCBp
cyBub3QgdmFsaWQgZm9yIHRoZSBib29sZWFuICIKKyAgICAgICAgICAgICAgICJmbGFnICdib29s
X2ZsYWcnIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZURlYXRoVGVzdCwg
VGVzdEludmFsaWROb25Cb29sRmxhZ0Zvcm1hdCkgeworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtd
ID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tbm9zdHJpbmdfZmxhZyIsCisgIH07Cisg
IEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9hcmdzMSksCisgICAgICAgICAgICAgICAiTmVn
YXRpdmUgZm9ybSBpcyBub3QgdmFsaWQgZm9yIHRoZSBmbGFnICdzdHJpbmdfZmxhZyciKTsKKwor
ICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0t
aW50X2ZsYWciLAorICB9OworICBFWFBFQ1RfREVBVEgoSW52b2tlUGFyc2UoaW5fYXJnczIpLAor
ICAgICAgICAgICAgICAgIk1pc3NpbmcgdGhlIHZhbHVlIGZvciB0aGUgZmxhZyAnaW50X2ZsYWcn
Iik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZURlYXRoVGVzdCwgVGVzdElu
dmFsaWRVRFRGbGFnRm9ybWF0KSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAg
ICAidGVzdGJpbiIsCisgICAgICAiLS11ZHRfZmxhZz0xIiwKKyAgfTsKKyAgRVhQRUNUX0RFQVRI
KEludm9rZVBhcnNlKGluX2FyZ3MxKSwKKyAgICAgICAgICAgICAgICJJbGxlZ2FsIHZhbHVlICcx
JyBzcGVjaWZpZWQgZm9yIGZsYWcgJ3VkdF9mbGFnJzsgVXNlIHZhbHVlcyBBLCAiCisgICAgICAg
ICAgICAgICAiQUFBIGluc3RlYWQiKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0gewor
ICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tdWR0X2ZsYWciLAorICAgICAgIkFBIiwKKyAgfTsK
KyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3MyKSwKKyAgICAgICAgICAgICAgICJJ
bGxlZ2FsIHZhbHVlICdBQScgc3BlY2lmaWVkIGZvciBmbGFnICd1ZHRfZmxhZyc7IFVzZSB2YWx1
ZXMgIgorICAgICAgICAgICAgICAgIkEsIEFBQSBpbnN0ZWFkIik7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RMZWdhY3lGbGFncykgeworICBjb25zdCBjaGFy
KiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tbGVnYWN5X2ludD0x
MSIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMSwgMSwgMS4xLCAiYSIsIGZhbHNlKTsKKwor
ICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0t
bGVnYWN5X2Jvb2wiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczIsIDEsIDEuMSwgImEiLCBm
YWxzZSk7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczNbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwg
ICAgICAgIi0tbGVnYWN5X2ludCIsICIyMiIsICAgICAgICAgICAiLS1pbnRfZmxhZz0yIiwKKyAg
ICAgICItLWxlZ2FjeV9ib29sIiwgInRydWUiLCAgICAgICAgICItLWxlZ2FjeV9zdHIiLCAiLS1z
dHJpbmdfZmxhZz1xd2UiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczMsIDIsIDEuMSwgImEi
LCBmYWxzZSwgMSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRl
c3RTaW1wbGVWYWxpZEZsYWdmaWxlKSB7CisgIHN0ZDo6c3RyaW5nIGZsYWdmaWxlX2ZsYWc7CisK
KyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgIEdl
dEZsYWdmaWxlRmxhZyh7eyJwYXJzZV90ZXN0LmZmMSIsIGFic2w6Ok1ha2VDb25zdFNwYW4oZmYx
X2RhdGEpfX0sCisgICAgICAgICAgICAgICAgICAgICAgJmZsYWdmaWxlX2ZsYWcpLAorICB9Owor
ICBUZXN0UGFyc2UoaW5fYXJnczEsIC0xLCAwLjEsICJxMncyICAiLCB0cnVlKTsKKworICBjb25z
dCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgR2V0RmxhZ2Zp
bGVGbGFnKHt7InBhcnNlX3Rlc3QuZmYyIiwgYWJzbDo6TWFrZUNvbnN0U3BhbihmZjJfZGF0YSl9
fSwKKyAgICAgICAgICAgICAgICAgICAgICAmZmxhZ2ZpbGVfZmxhZyksCisgIH07CisgIFRlc3RQ
YXJzZShpbl9hcmdzMiwgMTAwLCAwLjEsICJxMncyICAiLCBmYWxzZSk7Cit9CisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RWYWxpZE11bHRpRmxhZ2ZpbGUpIHsKKyAg
c3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZzsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0g
eworICAgICAgInRlc3RiaW4iLAorICAgICAgR2V0RmxhZ2ZpbGVGbGFnKHt7InBhcnNlX3Rlc3Qu
ZmYyIiwgYWJzbDo6TWFrZUNvbnN0U3BhbihmZjJfZGF0YSl9LAorICAgICAgICAgICAgICAgICAg
ICAgICB7InBhcnNlX3Rlc3QuZmYxIiwgYWJzbDo6TWFrZUNvbnN0U3BhbihmZjFfZGF0YSl9fSwK
KyAgICAgICAgICAgICAgICAgICAgICAmZmxhZ2ZpbGVfZmxhZyksCisgIH07CisgIFRlc3RQYXJz
ZShpbl9hcmdzMSwgLTEsIDAuMSwgInEydzIgICIsIHRydWUpOworfQorCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0RmxhZ2ZpbGVNaXhlZFdpdGhSZWd1bGFyRmxhZ3Mp
IHsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZzsKKworICBjb25zdCBjaGFyKiBpbl9hcmdz
MVtdID0geworICAgICAgInRlc3RiaW4iLCAiLS1pbnRfZmxhZz0zIiwKKyAgICAgIEdldEZsYWdm
aWxlRmxhZyh7eyJwYXJzZV90ZXN0LmZmMSIsIGFic2w6Ok1ha2VDb25zdFNwYW4oZmYxX2RhdGEp
fX0sCisgICAgICAgICAgICAgICAgICAgICAgJmZsYWdmaWxlX2ZsYWcpLAorICAgICAgIi1kb3Vi
bGVfZmxhZz0wLjIifTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAtMSwgMC4yLCAicTJ3MiAgIiwg
dHJ1ZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RGbGFn
ZmlsZUluRmxhZ2ZpbGUpIHsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZzsKKworICBjb25z
dGV4cHIgY29uc3QgY2hhciogY29uc3QgZmYzX2RhdGFbXSA9IHsKKyAgICAgICItLWZsYWdmaWxl
PSQwL3BhcnNlX3Rlc3QuZmYxIiwKKyAgICAgICItLWZsYWdmaWxlPSQwL3BhcnNlX3Rlc3QuZmYy
IiwKKyAgfTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4i
LAorICAgICAgR2V0RmxhZ2ZpbGVGbGFnKHt7InBhcnNlX3Rlc3QuZmYzIiwgYWJzbDo6TWFrZUNv
bnN0U3BhbihmZjNfZGF0YSl9fSwKKyAgICAgICAgICAgICAgICAgICAgICAmZmxhZ2ZpbGVfZmxh
ZyksCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMSwgMTAwLCAwLjEsICJxMncyICAiLCBmYWxz
ZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZURlYXRoVGVzdCwgVGVzdElu
dmFsaWRGbGFnZmlsZXMpIHsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZzsKKworICBjb25z
dGV4cHIgY29uc3QgY2hhciogY29uc3QgZmY0X2RhdGFbXSA9IHsKKyAgICAiLS11bmtub3duX2Zs
YWc9MTAiCisgIH07CisKKyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0
YmluIiwKKyAgICAgIEdldEZsYWdmaWxlRmxhZyh7eyJwYXJzZV90ZXN0LmZmNCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICBhYnNsOjpNYWtlQ29uc3RTcGFuKGZmNF9kYXRhKX19LCAmZmxhZ2Zp
bGVfZmxhZyksCisgIH07CisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9hcmdzMSksCisg
ICAgICAgICAgICAgICAiVW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyAndW5rbm93bl9mbGFnJyIp
OworCisgIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjb25zdCBmZjVfZGF0YVtdID0geworICAgICIt
LWludF9mbGFnIDEwIiwKKyAgfTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAg
ICAgInRlc3RiaW4iLAorICAgICAgR2V0RmxhZ2ZpbGVGbGFnKHt7InBhcnNlX3Rlc3QuZmY1IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Ok1ha2VDb25zdFNwYW4oZmY1X2RhdGEpfX0s
ICZmbGFnZmlsZV9mbGFnKSwKKyAgfTsKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2Fy
Z3MyKSwKKyAgICAgICAgICAgICAgICJVbmtub3duIGNvbW1hbmQgbGluZSBmbGFnICdpbnRfZmxh
ZyAxMCciKTsKKworICBjb25zdGV4cHIgY29uc3QgY2hhciogY29uc3QgZmY2X2RhdGFbXSA9IHsK
KyAgICAgICItLWludF9mbGFnPTEwIiwgIi0tIiwgImFyZzEiLCAiYXJnMiIsICJhcmczIiwKKyAg
fTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzM1tdID0geworICAgICAgInRlc3RiaW4iLAorICAg
ICAgR2V0RmxhZ2ZpbGVGbGFnKHt7InBhcnNlX3Rlc3QuZmY2IiwgYWJzbDo6TWFrZUNvbnN0U3Bh
bihmZjZfZGF0YSl9fSwKKyAgICAgICAgICAgICAgICAgICAgICAmZmxhZ2ZpbGVfZmxhZyksCisg
IH07CisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9hcmdzMyksCisgICAgICAgICAgICAg
ICAiRmxhZ2ZpbGUgY2FuJ3QgY29udGFpbiBwb3NpdGlvbiBhcmd1bWVudHMgb3IgLS0iKTsKKwor
ICBjb25zdCBjaGFyKiBpbl9hcmdzNFtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0t
ZmxhZ2ZpbGU9aW52YWxpZF9mbGFnX2ZpbGUiLAorICB9OworICBFWFBFQ1RfREVBVEgoSW52b2tl
UGFyc2UoaW5fYXJnczQpLCAiQ2FuJ3Qgb3BlbiBmbGFnZmlsZSBpbnZhbGlkX2ZsYWdfZmlsZSIp
OworCisgIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjb25zdCBmZjdfZGF0YVtdID0geworICAgICAg
Ii0taW50X2ZsYWc9MTAiLAorICAgICAgIipiaW4qIiwKKyAgICAgICItLXN0cl9mbGFnPWFxc3ci
LAorICB9OworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3M1W10gPSB7CisgICAgICAidGVzdGJpbiIs
CisgICAgICBHZXRGbGFnZmlsZUZsYWcoe3sicGFyc2VfdGVzdC5mZjciLCBhYnNsOjpNYWtlQ29u
c3RTcGFuKGZmN19kYXRhKX19LAorICAgICAgICAgICAgICAgICAgICAgICZmbGFnZmlsZV9mbGFn
KSwKKyAgfTsKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3M1KSwKKyAgICAgICAg
ICAgICAgICJVbmV4cGVjdGVkIGxpbmUgaW4gdGhlIGZsYWdmaWxlIC4qOiBcXCpiaW5cXCoiKTsK
K30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdFJlYWRpbmdSZXF1
aXJlZEZsYWdzRnJvbUVudikgeworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geyJ0ZXN0Ymlu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1mcm9tZW52PWludF9mbGFnLGJvb2xf
ZmxhZyxzdHJpbmdfZmxhZyJ9OworCisgIFNjb3BlZFNldEVudiBzZXRfaW50X2ZsYWcoIkZMQUdT
X2ludF9mbGFnIiwgIjMzIik7CisgIFNjb3BlZFNldEVudiBzZXRfYm9vbF9mbGFnKCJGTEFHU19i
b29sX2ZsYWciLCAiVHJ1ZSIpOworICBTY29wZWRTZXRFbnYgc2V0X3N0cmluZ19mbGFnKCJGTEFH
U19zdHJpbmdfZmxhZyIsICJBUTEyIik7CisKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAzMywgMS4x
LCAiQVExMiIsIHRydWUpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VEZWF0
aFRlc3QsIFRlc3RSZWFkaW5nVW5zZXRSZXF1aXJlZEZsYWdzRnJvbUVudikgeworICBjb25zdCBj
aGFyKiBpbl9hcmdzMVtdID0geyJ0ZXN0YmluIiwgIi0tZnJvbWVudj1pbnRfZmxhZyJ9OworCisg
IEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9hcmdzMSksCisgICAgICAgICAgICAgICAiRkxB
R1NfaW50X2ZsYWcgbm90IGZvdW5kIGluIGVudmlyb25tZW50Iik7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1RFU1RfRihQYXJzZURlYXRoVGVzdCwgVGVzdFJlY3Vyc2l2ZUZsYWdzRnJvbUVudikg
eworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geyJ0ZXN0YmluIiwgIi0tZnJvbWVudj10cnlm
cm9tZW52In07CisKKyAgU2NvcGVkU2V0RW52IHNldF90cnlmcm9tZW52KCJGTEFHU190cnlmcm9t
ZW52IiwgImludF9mbGFnIik7CisKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3Mx
KSwgIkluZmluaXRlIHJlY3Vyc2lvbiBvbiBmbGFnIHRyeWZyb21lbnYiKTsKK30KKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdFJlYWRpbmdPcHRpb25hbEZsYWdzRnJv
bUVudikgeworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLCAi
LS10cnlmcm9tZW52PWludF9mbGFnLGJvb2xfZmxhZyxzdHJpbmdfZmxhZyxvdGhlcl9mbGFnIn07
CisKKyAgU2NvcGVkU2V0RW52IHNldF9pbnRfZmxhZygiRkxBR1NfaW50X2ZsYWciLCAiMTciKTsK
KyAgU2NvcGVkU2V0RW52IHNldF9ib29sX2ZsYWcoIkZMQUdTX2Jvb2xfZmxhZyIsICJZIik7CisK
KyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAxNywgMS4xLCAiYSIsIHRydWUpOworfQorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0UmVhZGluZ0ZsYWdzRnJvbUVudk1veGVk
V2l0aFJlZ3VsYXJGbGFncykgeworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAg
InRlc3RiaW4iLAorICAgICAgIi0tYm9vbF9mbGFnPVQiLAorICAgICAgIi0tdHJ5ZnJvbWVudj1p
bnRfZmxhZyxib29sX2ZsYWciLAorICAgICAgIi0taW50X2ZsYWc9LTIxIiwKKyAgfTsKKworICBT
Y29wZWRTZXRFbnYgc2V0X2ludF9mbGFnKCJGTEFHU19pbnRfZmxhZyIsICItMTUiKTsKKyAgU2Nv
cGVkU2V0RW52IHNldF9ib29sX2ZsYWcoIkZMQUdTX2Jvb2xfZmxhZyIsICJGIik7CisKKyAgVGVz
dFBhcnNlKGluX2FyZ3MxLCAtMjEsIDEuMSwgImEiLCBmYWxzZSk7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RLZWVwUGFyc2VkQXJncykgeworICBjb25zdCBj
aGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLCAgICAgICAgImFyZzEiLCAiLS1i
b29sX2ZsYWciLAorICAgICAgIi0taW50X2ZsYWc9MjExIiwgImFyZzIiLCAiLS1kb3VibGVfZmxh
Zz0xLjEiLAorICAgICAgIi0tc3RyaW5nX2ZsYWciLCAgImFzZCIsICAiLS0iLAorICAgICAgImFy
ZzMiLCAgICAgICAgICAgImFyZzQiLAorICB9OworCisgIGF1dG8gb3V0X2FyZ3MxID0gSW52b2tl
UGFyc2UoaW5fYXJnczEpOworCisgIEVYUEVDVF9USEFUKAorICAgICAgb3V0X2FyZ3MxLAorICAg
ICAgRWxlbWVudHNBcmVBcnJheSh7YWJzbDo6c3RyaW5nX3ZpZXcoInRlc3RiaW4iKSwgYWJzbDo6
c3RyaW5nX3ZpZXcoImFyZzEiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmlu
Z192aWV3KCJhcmcyIiksIGFic2w6OnN0cmluZ192aWV3KCJhcmczIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldygiYXJnNCIpfSkpOworCisgIGF1dG8gb3V0X2Fy
Z3MyID0gZmxhZ3M6OlBhcnNlQ29tbWFuZExpbmVJbXBsKAorICAgICAgMTEsIGNvbnN0X2Nhc3Q8
Y2hhcioqPihpbl9hcmdzMSksIGZsYWdzOjpBcmd2TGlzdEFjdGlvbjo6a0tlZXBQYXJzZWRBcmdz
LAorICAgICAgZmxhZ3M6OlVzYWdlRmxhZ3NBY3Rpb246OmtIYW5kbGVVc2FnZSwKKyAgICAgIGZs
YWdzOjpPblVuZGVmaW5lZEZsYWc6OmtBYm9ydElmVW5kZWZpbmVkKTsKKworICBFWFBFQ1RfVEhB
VCgKKyAgICAgIG91dF9hcmdzMiwKKyAgICAgIEVsZW1lbnRzQXJlQXJyYXkoe2Fic2w6OnN0cmlu
Z192aWV3KCJ0ZXN0YmluIiksCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpzdHJpbmdf
dmlldygiLS1ib29sX2ZsYWciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmlu
Z192aWV3KCItLWludF9mbGFnPTIxMSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
c3RyaW5nX3ZpZXcoIi0tZG91YmxlX2ZsYWc9MS4xIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjpzdHJpbmdfdmlldygiLS1zdHJpbmdfZmxhZyIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoImFzZCIpLCBhYnNsOjpzdHJpbmdfdmlldygiLS0iKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3KCJhcmcxIiksIGFic2w6
OnN0cmluZ192aWV3KCJhcmcyIiksCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpzdHJp
bmdfdmlldygiYXJnMyIpLCBhYnNsOjpzdHJpbmdfdmlldygiYXJnNCIpfSkpOworfQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0SWdub3JlVW5kZWZpbmVkRmxhZ3Mp
IHsKKyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAg
ICJhcmcxIiwKKyAgICAgICItLXVuZGVmX2ZsYWc9YWEiLAorICAgICAgIi0taW50X2ZsYWc9MjEi
LAorICB9OworCisgIGF1dG8gb3V0X2FyZ3MxID0gZmxhZ3M6OlBhcnNlQ29tbWFuZExpbmVJbXBs
KAorICAgICAgNCwgY29uc3RfY2FzdDxjaGFyKio+KGluX2FyZ3MxKSwgZmxhZ3M6OkFyZ3ZMaXN0
QWN0aW9uOjprUmVtb3ZlUGFyc2VkQXJncywKKyAgICAgIGZsYWdzOjpVc2FnZUZsYWdzQWN0aW9u
OjprSGFuZGxlVXNhZ2UsCisgICAgICBmbGFnczo6T25VbmRlZmluZWRGbGFnOjprSWdub3JlVW5k
ZWZpbmVkKTsKKworICBFWFBFQ1RfVEhBVChvdXRfYXJnczEsIEVsZW1lbnRzQXJlQXJyYXkoe2Fi
c2w6OnN0cmluZ192aWV3KCJ0ZXN0YmluIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoImFyZzEiKX0pKTsKKworICBFWFBFQ1Rf
RVEoYWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDIxKTsKKworICBjb25zdCBjaGFyKiBp
bl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgImFyZzEiLAorICAgICAgIi0t
dW5kZWZfZmxhZz1hYSIsCisgICAgICAiLS1zdHJpbmdfZmxhZz1BQSIsCisgIH07CisKKyAgYXV0
byBvdXRfYXJnczIgPSBmbGFnczo6UGFyc2VDb21tYW5kTGluZUltcGwoCisgICAgICA0LCBjb25z
dF9jYXN0PGNoYXIqKj4oaW5fYXJnczIpLCBmbGFnczo6QXJndkxpc3RBY3Rpb246OmtLZWVwUGFy
c2VkQXJncywKKyAgICAgIGZsYWdzOjpVc2FnZUZsYWdzQWN0aW9uOjprSGFuZGxlVXNhZ2UsCisg
ICAgICBmbGFnczo6T25VbmRlZmluZWRGbGFnOjprSWdub3JlVW5kZWZpbmVkKTsKKworICBFWFBF
Q1RfVEhBVCgKKyAgICAgIG91dF9hcmdzMiwKKyAgICAgIEVsZW1lbnRzQXJlQXJyYXkoCisgICAg
ICAgICAge2Fic2w6OnN0cmluZ192aWV3KCJ0ZXN0YmluIiksIGFic2w6OnN0cmluZ192aWV3KCIt
LXVuZGVmX2ZsYWc9YWEiKSwKKyAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoIi0tc3RyaW5n
X2ZsYWc9QUEiKSwgYWJzbDo6c3RyaW5nX3ZpZXcoImFyZzEiKX0pKTsKKworICBFWFBFQ1RfRVEo
YWJzbDo6R2V0RmxhZyhGTEFHU19zdHJpbmdfZmxhZyksICJBQSIpOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitURVNUX0YoUGFyc2VEZWF0aFRlc3QsIFRlc3RIZWxwRmxhZ0hhbmRsaW5nKSB7Cisg
IGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1o
ZWxwIiwKKyAgfTsKKworICBFWFBFQ1RfRVhJVChJbnZva2VQYXJzZShpbl9hcmdzMSksIHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczJbXSA9
IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLWhlbHAiLAorICAgICAgIi0taW50X2ZsYWc9
MyIsCisgIH07CisKKyAgYXV0byBvdXRfYXJnczIgPSBmbGFnczo6UGFyc2VDb21tYW5kTGluZUlt
cGwoCisgICAgICAzLCBjb25zdF9jYXN0PGNoYXIqKj4oaW5fYXJnczIpLCBmbGFnczo6QXJndkxp
c3RBY3Rpb246OmtSZW1vdmVQYXJzZWRBcmdzLAorICAgICAgZmxhZ3M6OlVzYWdlRmxhZ3NBY3Rp
b246OmtJZ25vcmVVc2FnZSwKKyAgICAgIGZsYWdzOjpPblVuZGVmaW5lZEZsYWc6OmtBYm9ydElm
VW5kZWZpbmVkKTsKKworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyks
IDMpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3VzYWdl
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2UuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmRmZjdhM2RhYjM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNh
Z2UuY2MKQEAgLTAsMCArMSw1NiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorI2luY2x1ZGUgImFic2wvZmxhZ3MvdXNhZ2UuaCIKKworI2luY2x1ZGUgPHN0
cmluZz4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuaCIKKyNpbmNsdWRl
ICJhYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKK0FCU0xfQ09OU1RfSU5JVCBhYnNs
OjpNdXRleCB1c2FnZV9tZXNzYWdlX2d1YXJkKGFic2w6OmtDb25zdEluaXQpOworQUJTTF9DT05T
VF9JTklUIHN0ZDo6c3RyaW5nKiBwcm9ncmFtX3VzYWdlX21lc3NhZ2UKKyAgICBBQlNMX0dVQVJE
RURfQlkodXNhZ2VfbWVzc2FnZV9ndWFyZCkgPSBudWxscHRyOworfSAgLy8gbmFtZXNwYWNlCit9
ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFNldHMg
dGhlICJ1c2FnZSIgbWVzc2FnZSB0byBiZSB1c2VkIGJ5IGhlbHAgcmVwb3J0aW5nIHJvdXRpbmVz
Lgordm9pZCBTZXRQcm9ncmFtVXNhZ2VNZXNzYWdlKGFic2w6OnN0cmluZ192aWV3IG5ld191c2Fn
ZV9tZXNzYWdlKSB7CisgIGFic2w6Ok11dGV4TG9jayBsKCZmbGFnc19pbnRlcm5hbDo6dXNhZ2Vf
bWVzc2FnZV9ndWFyZCk7CisKKyAgaWYgKGZsYWdzX2ludGVybmFsOjpwcm9ncmFtX3VzYWdlX21l
c3NhZ2UgIT0gbnVsbHB0cikgeworICAgIEFCU0xfSU5URVJOQUxfTE9HKEZBVEFMLCAiU2V0UHJv
Z3JhbVVzYWdlTWVzc2FnZSgpIGNhbGxlZCB0d2ljZS4iKTsKKyAgICBzdGQ6OmV4aXQoMSk7Cisg
IH0KKworICBmbGFnc19pbnRlcm5hbDo6cHJvZ3JhbV91c2FnZV9tZXNzYWdlID0gbmV3IHN0ZDo6
c3RyaW5nKG5ld191c2FnZV9tZXNzYWdlKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFJldHVy
bnMgdGhlIHVzYWdlIG1lc3NhZ2Ugc2V0IGJ5IFNldFByb2dyYW1Vc2FnZU1lc3NhZ2UoKS4KKy8v
IE5vdGU6IFdlIGFibGUgdG8gcmV0dXJuIHN0cmluZ192aWV3IGhlcmUgb25seSBiZWNhdXNlIGNh
bGxpbmcKKy8vIFNldFByb2dyYW1Vc2FnZU1lc3NhZ2UgdHdpY2UgaXMgcHJvaGliaXRlZC4KK2Fi
c2w6OnN0cmluZ192aWV3IFByb2dyYW1Vc2FnZU1lc3NhZ2UoKSB7CisgIGFic2w6Ok11dGV4TG9j
ayBsKCZmbGFnc19pbnRlcm5hbDo6dXNhZ2VfbWVzc2FnZV9ndWFyZCk7CisKKyAgcmV0dXJuIGZs
YWdzX2ludGVybmFsOjpwcm9ncmFtX3VzYWdlX21lc3NhZ2UgIT0gbnVsbHB0cgorICAgICAgICAg
ICAgID8gYWJzbDo6c3RyaW5nX3ZpZXcoKmZsYWdzX2ludGVybmFsOjpwcm9ncmFtX3VzYWdlX21l
c3NhZ2UpCisgICAgICAgICAgICAgOiAiV2FybmluZzogU2V0UHJvZ3JhbVVzYWdlTWVzc2FnZSgp
IG5ldmVyIGNhbGxlZCI7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy91c2FnZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2ExMjEwNzEzN2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy91c2FnZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIw
MTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9GTEFHU19VU0FHRV9IXwor
I2RlZmluZSBBQlNMX0ZMQUdTX1VTQUdFX0hfCisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Ry
aW5nX3ZpZXcuaCIKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFVzYWdlIHJlcG9ydGluZyBpbnRlcmZh
Y2VzCisKK25hbWVzcGFjZSBhYnNsIHsKKworLy8gU2V0cyB0aGUgInVzYWdlIiBtZXNzYWdlIHRv
IGJlIHVzZWQgYnkgaGVscCByZXBvcnRpbmcgcm91dGluZXMuCisvLyBGb3IgZXhhbXBsZToKKy8v
ICBhYnNsOjpTZXRQcm9ncmFtVXNhZ2VNZXNzYWdlKAorLy8gICAgICBhYnNsOjpTdHJDYXQoIlRo
aXMgcHJvZ3JhbSBkb2VzIG5vdGhpbmcuICBTYW1wbGUgdXNhZ2U6XG4iLCBhcmd2WzBdLAorLy8g
ICAgICAgICAgICAgICAgICAgIiA8dXNlbGVzc2FyZzE+IDx1c2VsZXNzYXJnMj4iKSk7CisvLyBE
byBub3QgaW5jbHVkZSBjb21tYW5kbGluZSBmbGFncyBpbiB0aGUgdXNhZ2U6IHdlIGRvIHRoYXQg
Zm9yIHlvdSEKKy8vIE5vdGU6IENhbGxpbmcgU2V0UHJvZ3JhbVVzYWdlTWVzc2FnZSB0d2ljZSB3
aWxsIHRyaWdnZXIgYSBjYWxsIHRvIHN0ZDo6ZXhpdC4KK3ZvaWQgU2V0UHJvZ3JhbVVzYWdlTWVz
c2FnZShhYnNsOjpzdHJpbmdfdmlldyBuZXdfdXNhZ2VfbWVzc2FnZSk7CisKKy8vIFJldHVybnMg
dGhlIHVzYWdlIG1lc3NhZ2Ugc2V0IGJ5IFNldFByb2dyYW1Vc2FnZU1lc3NhZ2UoKS4KK2Fic2w6
OnN0cmluZ192aWV3IFByb2dyYW1Vc2FnZU1lc3NhZ2UoKTsKKworfSAgLy8gbmFtZXNwYWNlIGFi
c2wKKworI2VuZGlmICAvLyBBQlNMX0ZMQUdTX1VTQUdFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9m
bGFncy91c2FnZV9jb25maWcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy91c2FnZV9jb25maWcuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY5N2JmMzAwZGRlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2VfY29uZmlnLmNjCkBAIC0wLDAgKzEsMTUyIEBACisv
LworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAi
YWJzbC9mbGFncy91c2FnZV9jb25maWcuaCIKKworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1
ZGUgPG1lbW9yeT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCisjaW5jbHVk
ZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdz
L2ludGVybmFsL3Byb2dyYW1fbmFtZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0
LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmlwLmgiCisjaW5jbHVkZSAiYWJzbC9zeW5j
aHJvbml6YXRpb24vbXV0ZXguaCIKKworZXh0ZXJuICJDIiB7CisKKy8vIEFkZGl0aW9uYWwgcmVw
b3J0IG9mIGZhdGFsIHVzYWdlIGVycm9yIG1lc3NhZ2UgYmVmb3JlIHdlIHN0ZDo6ZXhpdC4gRXJy
b3IgaXMKKy8vIGZhdGFsIGlmIGlzX2ZhdGFsIGFyZ3VtZW50IHRvIFJlcG9ydFVzYWdlRXJyb3Ig
aXMgdHJ1ZS4KK0FCU0xfQVRUUklCVVRFX1dFQUsgdm9pZCBBYnNsSW50ZXJuYWxSZXBvcnRGYXRh
bFVzYWdlRXJyb3IoYWJzbDo6c3RyaW5nX3ZpZXcpIHt9CisKK30gIC8vIGV4dGVybiAiQyIKKwor
bmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsIHsKKworbmFtZXNwYWNl
IHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFJldHVybnMgdHJ1ZSBpZiBmbGFncyBkZWZpbmVkIGlu
IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcmVwb3J0ZWQgd2l0aAorLy8gLWhlbHBzaG9ydCBmbGFn
LgorCitib29sIENvbnRhaW5zSGVscHNob3J0RmxhZ3MoYWJzbDo6c3RyaW5nX3ZpZXcgZmlsZW5h
bWUpIHsKKyAgLy8gQnkgZGVmYXVsdCB3ZSBvbmx5IHdhbnQgZmxhZ3MgaW4gYmluYXJ5J3MgbWFp
bi4gV2UgZXhwZWN0IHRoZSBtYWluCisgIC8vIHJvdXRpbmUgdG8gcmVzaWRlIGluIDxwcm9ncmFt
Pi5jYyBvciA8cHJvZ3JhbT4tbWFpbi5jYyBvcgorICAvLyA8cHJvZ3JhbT5fbWFpbi5jYywgd2hl
cmUgdGhlIDxwcm9ncmFtPiBpcyB0aGUgbmFtZSBvZiB0aGUgYmluYXJ5LgorICBhdXRvIHN1ZmZp
eCA9IGZsYWdzX2ludGVybmFsOjpCYXNlbmFtZShmaWxlbmFtZSk7CisgIGlmICghYWJzbDo6Q29u
c3VtZVByZWZpeCgmc3VmZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfaW50
ZXJuYWw6OlNob3J0UHJvZ3JhbUludm9jYXRpb25OYW1lKCkpKQorICAgIHJldHVybiBmYWxzZTsK
KyAgcmV0dXJuIGFic2w6OlN0YXJ0c1dpdGgoc3VmZml4LCAiLiIpIHx8IGFic2w6OlN0YXJ0c1dp
dGgoc3VmZml4LCAiLW1haW4uIikgfHwKKyAgICAgICAgIGFic2w6OlN0YXJ0c1dpdGgoc3VmZml4
LCAiX21haW4uIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBSZXR1cm5zIHRydWUgaWYgZmxh
Z3MgZGVmaW5lZCBpbiB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHJlcG9ydGVkIHdpdGgKKy8vIC1o
ZWxwcGFja2FnZSBmbGFnLgorCitib29sIENvbnRhaW5zSGVscHBhY2thZ2VGbGFncyhhYnNsOjpz
dHJpbmdfdmlldyBmaWxlbmFtZSkgeworICAvLyBUT0RPKHJvZ2VlZmYpOiBpbXBsZW1lbnQgcHJv
cGVybHkgd2hlbiByZWdpc3RyeSBpcyBhdmFpbGFibGUuCisgIHJldHVybiBDb250YWluc0hlbHBz
aG9ydEZsYWdzKGZpbGVuYW1lKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEdlbmVyYXRlcyBw
cm9ncmFtIHZlcnNpb24gaW5mb3JtYXRpb24gaW50byBzdXBwbGllZCBvdXRwdXQuCisKK3N0ZDo6
c3RyaW5nIFZlcnNpb25TdHJpbmcoKSB7CisgIHN0ZDo6c3RyaW5nIHZlcnNpb25fc3RyKGZsYWdz
X2ludGVybmFsOjpTaG9ydFByb2dyYW1JbnZvY2F0aW9uTmFtZSgpKTsKKworICB2ZXJzaW9uX3N0
ciArPSAiXG4iOworCisjaWYgIWRlZmluZWQoTkRFQlVHKQorICB2ZXJzaW9uX3N0ciArPSAiRGVi
dWcgYnVpbGQgKE5ERUJVRyBub3QgI2RlZmluZWQpXG4iOworI2VuZGlmCisKKyAgcmV0dXJuIHZl
cnNpb25fc3RyOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gTm9ybWFsaXplcyB0aGUgZmlsZW5h
bWUgc3BlY2lmaWMgdG8gdGhlIGJ1aWxkIHN5c3RlbS9maWxlc3lzdGVtIHVzZWQuCisKK3N0ZDo6
c3RyaW5nIE5vcm1hbGl6ZUZpbGVuYW1lKGFic2w6OnN0cmluZ192aWV3IGZpbGVuYW1lKSB7Cisg
IC8vIFNraXAgYW55IGxlYWRpbmcgc2xhc2hlcworICBhdXRvIHBvcyA9IGZpbGVuYW1lLmZpbmRf
Zmlyc3Rfbm90X29mKCJcXC8iKTsKKyAgaWYgKHBvcyA9PSBhYnNsOjpzdHJpbmdfdmlldzo6bnBv
cykgcmV0dXJuICIiOworCisgIGZpbGVuYW1lLnJlbW92ZV9wcmVmaXgocG9zKTsKKyAgcmV0dXJu
IHN0ZDo6c3RyaW5nKGZpbGVuYW1lKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQUJTTF9DT05T
VF9JTklUIGFic2w6Ok11dGV4IGN1c3RvbV91c2FnZV9jb25maWdfZ3VhcmQoYWJzbDo6a0NvbnN0
SW5pdCk7CitBQlNMX0NPTlNUX0lOSVQgRmxhZ3NVc2FnZUNvbmZpZyogY3VzdG9tX3VzYWdlX2Nv
bmZpZworICAgIEFCU0xfR1VBUkRFRF9CWShjdXN0b21fdXNhZ2VfY29uZmlnX2d1YXJkKSA9IG51
bGxwdHI7CisKK30gIC8vIG5hbWVzcGFjZQorCitGbGFnc1VzYWdlQ29uZmlnIEdldFVzYWdlQ29u
ZmlnKCkgeworICBhYnNsOjpNdXRleExvY2sgbCgmY3VzdG9tX3VzYWdlX2NvbmZpZ19ndWFyZCk7
CisKKyAgaWYgKGN1c3RvbV91c2FnZV9jb25maWcpIHJldHVybiAqY3VzdG9tX3VzYWdlX2NvbmZp
ZzsKKworICBGbGFnc1VzYWdlQ29uZmlnIGRlZmF1bHRfY29uZmlnOworICBkZWZhdWx0X2NvbmZp
Zy5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MgPSAmQ29udGFpbnNIZWxwc2hvcnRGbGFnczsKKyAg
ZGVmYXVsdF9jb25maWcuY29udGFpbnNfaGVscF9mbGFncyA9ICZDb250YWluc0hlbHBwYWNrYWdl
RmxhZ3M7CisgIGRlZmF1bHRfY29uZmlnLmNvbnRhaW5zX2hlbHBwYWNrYWdlX2ZsYWdzID0gJkNv
bnRhaW5zSGVscHBhY2thZ2VGbGFnczsKKyAgZGVmYXVsdF9jb25maWcudmVyc2lvbl9zdHJpbmcg
PSAmVmVyc2lvblN0cmluZzsKKyAgZGVmYXVsdF9jb25maWcubm9ybWFsaXplX2ZpbGVuYW1lID0g
Jk5vcm1hbGl6ZUZpbGVuYW1lOworCisgIHJldHVybiBkZWZhdWx0X2NvbmZpZzsKK30KKwordm9p
ZCBSZXBvcnRVc2FnZUVycm9yKGFic2w6OnN0cmluZ192aWV3IG1zZywgYm9vbCBpc19mYXRhbCkg
eworICBzdGQ6OmNlcnIgPDwgIkVSUk9SOiAiIDw8IG1zZyA8PCBzdGQ6OmVuZGw7CisKKyAgaWYg
KGlzX2ZhdGFsKSB7CisgICAgQWJzbEludGVybmFsUmVwb3J0RmF0YWxVc2FnZUVycm9yKG1zZyk7
CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCisKK3ZvaWQgU2V0Rmxh
Z3NVc2FnZUNvbmZpZyhGbGFnc1VzYWdlQ29uZmlnIHVzYWdlX2NvbmZpZykgeworICBhYnNsOjpN
dXRleExvY2sgbCgmZmxhZ3NfaW50ZXJuYWw6OmN1c3RvbV91c2FnZV9jb25maWdfZ3VhcmQpOwor
CisgIGlmICghdXNhZ2VfY29uZmlnLmNvbnRhaW5zX2hlbHBzaG9ydF9mbGFncykKKyAgICB1c2Fn
ZV9jb25maWcuY29udGFpbnNfaGVscHNob3J0X2ZsYWdzID0KKyAgICAgICAgZmxhZ3NfaW50ZXJu
YWw6OkNvbnRhaW5zSGVscHNob3J0RmxhZ3M7CisKKyAgaWYgKCF1c2FnZV9jb25maWcuY29udGFp
bnNfaGVscF9mbGFncykKKyAgICB1c2FnZV9jb25maWcuY29udGFpbnNfaGVscF9mbGFncyA9IGZs
YWdzX2ludGVybmFsOjpDb250YWluc0hlbHBwYWNrYWdlRmxhZ3M7CisKKyAgaWYgKCF1c2FnZV9j
b25maWcuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MpCisgICAgdXNhZ2VfY29uZmlnLmNvbnRh
aW5zX2hlbHBwYWNrYWdlX2ZsYWdzID0KKyAgICAgICAgZmxhZ3NfaW50ZXJuYWw6OkNvbnRhaW5z
SGVscHBhY2thZ2VGbGFnczsKKworICBpZiAoIXVzYWdlX2NvbmZpZy52ZXJzaW9uX3N0cmluZykK
KyAgICB1c2FnZV9jb25maWcudmVyc2lvbl9zdHJpbmcgPSBmbGFnc19pbnRlcm5hbDo6VmVyc2lv
blN0cmluZzsKKworICBpZiAoIXVzYWdlX2NvbmZpZy5ub3JtYWxpemVfZmlsZW5hbWUpCisgICAg
dXNhZ2VfY29uZmlnLm5vcm1hbGl6ZV9maWxlbmFtZSA9IGZsYWdzX2ludGVybmFsOjpOb3JtYWxp
emVGaWxlbmFtZTsKKworICBpZiAoZmxhZ3NfaW50ZXJuYWw6OmN1c3RvbV91c2FnZV9jb25maWcp
CisgICAgKmZsYWdzX2ludGVybmFsOjpjdXN0b21fdXNhZ2VfY29uZmlnID0gdXNhZ2VfY29uZmln
OworICBlbHNlCisgICAgZmxhZ3NfaW50ZXJuYWw6OmN1c3RvbV91c2FnZV9jb25maWcgPSBuZXcg
RmxhZ3NVc2FnZUNvbmZpZyh1c2FnZV9jb25maWcpOworfQorCit9ICAvLyBuYW1lc3BhY2UgYWJz
bApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2VfY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy91
c2FnZV9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWU1
MDE2YTllZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy91c2FnZV9jb25maWcuaApA
QCAtMCwwICsxLDEzMSBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhv
cnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogdXNhZ2VfY29uZmln
LmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBmaWxlIGRlZmluZXMgdGhl
IG1haW4gdXNhZ2UgcmVwb3J0aW5nIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlcyBhbmQKKy8vIGRv
Y3VtZW50cyBBYnNlaWwncyBzdXBwb3J0ZWQgYnVpbHQtaW4gdXNhZ2UgZmxhZ3MuIElmIHRoZXNl
IGZsYWdzIGFyZSBmb3VuZAorLy8gd2hlbiBwYXJzaW5nIGEgY29tbWFuZC1saW5lLCBBYnNlaWwg
d2lsbCBleGl0IHRoZSBwcm9ncmFtIGFuZCBkaXNwbGF5CisvLyBhcHByb3ByaWF0ZSBoZWxwIG1l
c3NhZ2VzLgorI2lmbmRlZiBBQlNMX0ZMQUdTX1VTQUdFX0NPTkZJR19IXworI2RlZmluZSBBQlNM
X0ZMQUdTX1VTQUdFX0NPTkZJR19IXworCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRl
IDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEJ1aWx0LWluIFVzYWdlIEZsYWdzCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIEFic2VpbCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGJ1aWx0
LWluIHVzYWdlIGZsYWdzLiBXaGVuIHBhc3NlZCwgdGhlc2UgZmxhZ3MKKy8vIGV4aXQgdGhlIHBy
b2dyYW0gYW5kIDoKKy8vCisvLyAqIC0taGVscAorLy8gICAgIFNob3dzIGhlbHAgb24gaW1wb3J0
YW50IGZsYWdzIGZvciB0aGlzIGJpbmFyeQorLy8gKiAtLWhlbHBmdWxsCisvLyAgICAgU2hvd3Mg
aGVscCBvbiBhbGwgZmxhZ3MKKy8vICogLS1oZWxwc2hvcnQKKy8vICAgICBTaG93cyBoZWxwIG9u
IG9ubHkgdGhlIG1haW4gbW9kdWxlIGZvciB0aGlzIHByb2dyYW0KKy8vICogLS1oZWxwcGFja2Fn
ZQorLy8gICAgIFNob3dzIGhlbHAgb24gYWxsIG1vZHVsZXMgaW4gdGhlIG1haW4gcGFja2FnZQor
Ly8gKiAtLXZlcnNpb24KKy8vICAgICBTaG93cyB0aGUgdmVyc2lvbiBhbmQgYnVpbGQgaW5mbyBm
b3IgdGhpcyBiaW5hcnkgYW5kIGV4aXRzCisvLyAqIC0tb25seV9jaGVja19hcmdzCisvLyAgICAg
RXhpdHMgYWZ0ZXIgY2hlY2tpbmcgYWxsIGZsYWdzCisvLyAqIC0taGVscG9uCisvLyAgICAgU2hv
d3MgaGVscCBvbiB0aGUgbW9kdWxlcyBuYW1lZCBieSB0aGlzIGZsYWcgdmFsdWUKKy8vICogLS1o
ZWxwbWF0Y2gKKy8vICAgICBTaG93cyBoZWxwIG9uIG1vZHVsZXMgd2hvc2UgbmFtZSBjb250YWlu
cyB0aGUgc3BlY2lmaWVkIHN1YnN0cmluZworCituYW1lc3BhY2UgYWJzbCB7CisKK25hbWVzcGFj
ZSBmbGFnc19pbnRlcm5hbCB7Cit1c2luZyBGbGFnS2luZEZpbHRlciA9IHN0ZDo6ZnVuY3Rpb248
Ym9vbCAoYWJzbDo6c3RyaW5nX3ZpZXcpPjsKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5h
bAorCisvLyBGbGFnc1VzYWdlQ29uZmlnCisvLworLy8gVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMg
dGhlIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIGZvciBjaGFuZ2luZyB0aGUgYmVoYXZpb3IKKy8v
IG9mIHRoZSB1c2FnZSByZXBvcnRpbmcgcm91dGluZXMgaW4gQWJzZWlsIEZsYWdzLgorc3RydWN0
IEZsYWdzVXNhZ2VDb25maWcgeworICAvLyBSZXR1cm5zIHRydWUgaWYgZmxhZ3MgZGVmaW5lZCBp
biB0aGUgZ2l2ZW4gc291cmNlIGNvZGUgZmlsZSBzaG91bGQgYmUKKyAgLy8gcmVwb3J0ZWQgd2l0
aCAtLWhlbHBzaG9ydCBmbGFnLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGZpbGUKKyAgLy8gInBhdGgv
dG8vbXkvY29kZS5jYyIgZGVmaW5lcyB0aGUgZmxhZyAiLS1teV9mbGFnIiwgYW5kCisgIC8vIGNv
bnRhaW5zX2hlbHBzaG9ydF9mbGFncygicGF0aC90by9teS9jb2RlLmNjIikgcmV0dXJucyB0cnVl
LCBpbnZva2luZyB0aGUKKyAgLy8gcHJvZ3JhbSB3aXRoIC0taGVscHNob3J0IHdpbGwgaW5jbHVk
ZSBpbmZvcm1hdGlvbiBhYm91dCAtLW15X2ZsYWcgaW4gdGhlCisgIC8vIHByb2dyYW0gb3V0cHV0
LgorICBmbGFnc19pbnRlcm5hbDo6RmxhZ0tpbmRGaWx0ZXIgY29udGFpbnNfaGVscHNob3J0X2Zs
YWdzOworCisgIC8vIFJldHVybnMgdHJ1ZSBpZiBmbGFncyBkZWZpbmVkIGluIHRoZSBmaWxlbmFt
ZSBzaG91bGQgYmUgcmVwb3J0ZWQgd2l0aAorICAvLyAtLWhlbHAgZmxhZy4gRm9yIGV4YW1wbGUs
IGlmIHRoZSBmaWxlCisgIC8vICJwYXRoL3RvL215L2NvZGUuY2MiIGRlZmluZXMgdGhlIGZsYWcg
Ii0tbXlfZmxhZyIsIGFuZAorICAvLyBjb250YWluc19oZWxwX2ZsYWdzKCJwYXRoL3RvL215L2Nv
ZGUuY2MiKSByZXR1cm5zIHRydWUsIGludm9raW5nIHRoZQorICAvLyBwcm9ncmFtIHdpdGggLS1o
ZWxwIHdpbGwgaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCAtLW15X2ZsYWcgaW4gdGhlCisgIC8v
IHByb2dyYW0gb3V0cHV0LgorICBmbGFnc19pbnRlcm5hbDo6RmxhZ0tpbmRGaWx0ZXIgY29udGFp
bnNfaGVscF9mbGFnczsKKworICAvLyBSZXR1cm5zIHRydWUgaWYgZmxhZ3MgZGVmaW5lZCBpbiB0
aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHJlcG9ydGVkIHdpdGgKKyAgLy8gLS1oZWxwcGFja2FnZSBm
bGFnLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGZpbGUKKyAgLy8gInBhdGgvdG8vbXkvY29kZS5jYyIg
ZGVmaW5lcyB0aGUgZmxhZyAiLS1teV9mbGFnIiwgYW5kCisgIC8vIGNvbnRhaW5zX2hlbHBwYWNr
YWdlX2ZsYWdzKCJwYXRoL3RvL215L2NvZGUuY2MiKSByZXR1cm5zIHRydWUsIGludm9raW5nIHRo
ZQorICAvLyBwcm9ncmFtIHdpdGggLS1oZWxwcGFja2FnZSB3aWxsIGluY2x1ZGUgaW5mb3JtYXRp
b24gYWJvdXQgLS1teV9mbGFnIGluIHRoZQorICAvLyBwcm9ncmFtIG91dHB1dC4KKyAgZmxhZ3Nf
aW50ZXJuYWw6OkZsYWdLaW5kRmlsdGVyIGNvbnRhaW5zX2hlbHBwYWNrYWdlX2ZsYWdzOworCisg
IC8vIEdlbmVyYXRlcyBzdGQ6OnN0cmluZyBjb250YWluaW5nIHByb2dyYW0gdmVyc2lvbi4gVGhp
cyBpcyB0aGUgc3RkOjpzdHJpbmcgcmVwb3J0ZWQKKyAgLy8gd2hlbiB1c2VyIHNwZWNpZmllcyAt
LXZlcnNpb24gaW4gYSBjb21tYW5kIGxpbmUuCisgIHN0ZDo6ZnVuY3Rpb248c3RkOjpzdHJpbmco
KT4gdmVyc2lvbl9zdHJpbmc7CisKKyAgLy8gTm9ybWFsaXplcyB0aGUgZmlsZW5hbWUgc3BlY2lm
aWMgdG8gdGhlIGJ1aWxkIHN5c3RlbS9maWxlc3lzdGVtIHVzZWQuIFRoaXMKKyAgLy8gcm91dGlu
ZSBpcyB1c2VkIHdoZW4gd2UgcmVwb3J0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxhZyBk
ZWZpbml0aW9uCisgIC8vIGxvY2F0aW9uLiBGb3IgaW5zdGFuY2UsIGlmIHlvdXIgYnVpbGQgcmVz
aWRlcyBhdCBzb21lIGxvY2F0aW9uIHlvdSBkbyBub3QKKyAgLy8gd2FudCB0byBleHBvc2UgaW4g
dGhlIHVzYWdlIG91dHB1dCwgeW91IGNhbiB0cmltIGl0IHRvIHNob3cgb25seSByZWxldmFudAor
ICAvLyBwYXJ0LgorICAvLyBGb3IgZXhhbXBsZToKKyAgLy8gICBub3JtYWxpemVfZmlsZW5hbWUo
Ii9teV9jb21wYW55L3NvbWVfbG9uZ19wYXRoL3NyYy9wcm9qZWN0L2ZpbGUuY2MiKQorICAvLyBt
aWdodCBwcm9kdWNlCisgIC8vICAgInByb2plY3QvZmlsZS5jYyIuCisgIHN0ZDo6ZnVuY3Rpb248
c3RkOjpzdHJpbmcgKGFic2w6OnN0cmluZ192aWV3KT4gbm9ybWFsaXplX2ZpbGVuYW1lOworfTsK
KworLy8gU2V0RmxhZ3NVc2FnZUNvbmZpZygpCisvLworLy8gU2V0cyB0aGUgdXNhZ2UgcmVwb3J0
aW5nIGNvbmZpZ3VyYXRpb24gY2FsbGJhY2tzLiBJZiBhbnkgb2YgdGhlIGNhbGxiYWNrcyBhcmUK
Ky8vIG5vdCBzZXQgaW4gdXNhZ2VfY29uZmlnIGluc3RhbmNlLCB0aGVuIHRoZSBkZWZhdWx0IHZh
bHVlIG9mIHRoZSBjYWxsYmFjayBpcworLy8gdXNlZC4KK3ZvaWQgU2V0RmxhZ3NVc2FnZUNvbmZp
ZyhGbGFnc1VzYWdlQ29uZmlnIHVzYWdlX2NvbmZpZyk7CisKK25hbWVzcGFjZSBmbGFnc19pbnRl
cm5hbCB7CisKK0ZsYWdzVXNhZ2VDb25maWcgR2V0VXNhZ2VDb25maWcoKTsKKwordm9pZCBSZXBv
cnRVc2FnZUVycm9yKGFic2w6OnN0cmluZ192aWV3IG1zZywgYm9vbCBpc19mYXRhbCk7CisKK30g
IC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworZXh0
ZXJuICJDIiB7CisKKy8vIEFkZGl0aW9uYWwgcmVwb3J0IG9mIGZhdGFsIHVzYWdlIGVycm9yIG1l
c3NhZ2UgYmVmb3JlIHdlIHN0ZDo6ZXhpdC4gRXJyb3IgaXMKKy8vIGZhdGFsIGlmIGlzX2ZhdGFs
IGFyZ3VtZW50IHRvIFJlcG9ydFVzYWdlRXJyb3IgaXMgdHJ1ZS4KK3ZvaWQgQWJzbEludGVybmFs
UmVwb3J0RmF0YWxVc2FnZUVycm9yKGFic2w6OnN0cmluZ192aWV3KTsKKworfSAgLy8gZXh0ZXJu
ICJDIgorCisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfVVNBR0VfQ09ORklHX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9mbGFncy91c2FnZV9jb25maWdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3VzYWdlX2Nv
bmZpZ190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zYmRl
MTNhZjhmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3VzYWdlX2NvbmZpZ190ZXN0
LmNjCkBAIC0wLDAgKzEsMTk4IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy91c2FnZV9jb25maWcuaCIKKworI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRo
X3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgorCituYW1lc3BhY2UgeworCitjbGFzcyBG
bGFnc1VzYWdlQ29uZmlnVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6
CisgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7CisgICAgLy8gSW5zdGFsbCBEZWZhdWx0IGNvbmZp
ZyBmb3IgdGhlIHVzZSBvbiB0aGlzIHVuaXQgdGVzdC4KKyAgICAvLyBCaW5hcnkgbWF5IGluc3Rh
bGwgYSBjdXN0b20gY29uZmlnIGJlZm9yZSB0ZXN0cyBhcmUgcnVuLgorICAgIGFic2w6OkZsYWdz
VXNhZ2VDb25maWcgZGVmYXVsdF9jb25maWc7CisgICAgYWJzbDo6U2V0RmxhZ3NVc2FnZUNvbmZp
ZyhkZWZhdWx0X2NvbmZpZyk7CisgIH0KK307CisKK25hbWVzcGFjZSBmbGFncyA9IGFic2w6OmZs
YWdzX2ludGVybmFsOworCitib29sIFRzdENvbnRhaW5zSGVscHNob3J0RmxhZ3MoYWJzbDo6c3Ry
aW5nX3ZpZXcgZikgeworICByZXR1cm4gYWJzbDo6U3RhcnRzV2l0aChmbGFnczo6QmFzZW5hbWUo
ZiksICJwcm9nbmFtZS4iKTsKK30KKworYm9vbCBUc3RDb250YWluc0hlbHBwYWNrYWdlRmxhZ3Mo
YWJzbDo6c3RyaW5nX3ZpZXcgZikgeworICByZXR1cm4gYWJzbDo6RW5kc1dpdGgoZmxhZ3M6OlBh
Y2thZ2UoZiksICJhYWEvIik7Cit9CisKK2Jvb2wgVHN0Q29udGFpbnNIZWxwRmxhZ3MoYWJzbDo6
c3RyaW5nX3ZpZXcgZikgeworICByZXR1cm4gYWJzbDo6RW5kc1dpdGgoZmxhZ3M6OlBhY2thZ2Uo
ZiksICJ6enovIik7Cit9CisKK3N0ZDo6c3RyaW5nIFRzdFZlcnNpb25TdHJpbmcoKSB7IHJldHVy
biAicHJvZ3JhbSAxLjAuMCI7IH0KKworc3RkOjpzdHJpbmcgVHN0Tm9ybWFsaXplRmlsZW5hbWUo
YWJzbDo6c3RyaW5nX3ZpZXcgZmlsZW5hbWUpIHsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKGZpbGVu
YW1lLnN1YnN0cigyKSk7Cit9CisKK3ZvaWQgVHN0UmVwb3J0VXNhZ2VNZXNzYWdlKGFic2w6OnN0
cmluZ192aWV3IG1zZykge30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKEZsYWdzVXNhZ2VD
b25maWdUZXN0LCBUZXN0R2V0U2V0RmxhZ3NVc2FnZUNvbmZpZykgeworICBFWFBFQ1RfVFJVRShm
bGFnczo6R2V0VXNhZ2VDb25maWcoKS5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MpOworICBFWFBF
Q1RfVFJVRShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5jb250YWluc19oZWxwX2ZsYWdzKTsKKyAg
RVhQRUNUX1RSVUUoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscHBhY2thZ2Vf
ZmxhZ3MpOworICBFWFBFQ1RfVFJVRShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS52ZXJzaW9uX3N0
cmluZyk7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6ZV9m
aWxlbmFtZSk7CisKKyAgYWJzbDo6RmxhZ3NVc2FnZUNvbmZpZyBlbXB0eV9jb25maWc7CisgIGVt
cHR5X2NvbmZpZy5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MgPSAmVHN0Q29udGFpbnNIZWxwc2hv
cnRGbGFnczsKKyAgZW1wdHlfY29uZmlnLmNvbnRhaW5zX2hlbHBfZmxhZ3MgPSAmVHN0Q29udGFp
bnNIZWxwRmxhZ3M7CisgIGVtcHR5X2NvbmZpZy5jb250YWluc19oZWxwcGFja2FnZV9mbGFncyA9
ICZUc3RDb250YWluc0hlbHBwYWNrYWdlRmxhZ3M7CisgIGVtcHR5X2NvbmZpZy52ZXJzaW9uX3N0
cmluZyA9ICZUc3RWZXJzaW9uU3RyaW5nOworICBlbXB0eV9jb25maWcubm9ybWFsaXplX2ZpbGVu
YW1lID0gJlRzdE5vcm1hbGl6ZUZpbGVuYW1lOworICBhYnNsOjpTZXRGbGFnc1VzYWdlQ29uZmln
KGVtcHR5X2NvbmZpZyk7CisKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCku
Y29udGFpbnNfaGVscHNob3J0X2ZsYWdzKTsKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OkdldFVzYWdl
Q29uZmlnKCkuY29udGFpbnNfaGVscF9mbGFncyk7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRV
c2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBwYWNrYWdlX2ZsYWdzKTsKKyAgRVhQRUNUX1RSVUUo
ZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkudmVyc2lvbl9zdHJpbmcpOworICBFWFBFQ1RfVFJVRShm
bGFnczo6R2V0VXNhZ2VDb25maWcoKS5ub3JtYWxpemVfZmlsZW5hbWUpOworfQorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitURVNUX0YoRmxhZ3NVc2FnZUNvbmZpZ1Rlc3QsIFRlc3RDb250YWluc0hlbHBz
aG9ydEZsYWdzKSB7CisgIGZsYWdzOjpTZXRQcm9ncmFtSW52b2NhdGlvbk5hbWUoInVzYWdlX2Nv
bmZpZ190ZXN0Iik7CisKKyAgYXV0byBjb25maWcgPSBmbGFnczo6R2V0VXNhZ2VDb25maWcoKTsK
KyAgRVhQRUNUX1RSVUUoY29uZmlnLmNvbnRhaW5zX2hlbHBzaG9ydF9mbGFncygiYWRpci9jZC91
c2FnZV9jb25maWdfdGVzdC5jYyIpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBjb25maWcuY29u
dGFpbnNfaGVscHNob3J0X2ZsYWdzKCJhYWFhL3VzYWdlX2NvbmZpZ190ZXN0LW1haW4uY2MiKSk7
CisgIEVYUEVDVF9UUlVFKGNvbmZpZy5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MoImFiYy91c2Fn
ZV9jb25maWdfdGVzdF9tYWluLmNjIikpOworICBFWFBFQ1RfRkFMU0UoY29uZmlnLmNvbnRhaW5z
X2hlbHBzaG9ydF9mbGFncygidXNhZ2VfY29uZmlnX21haW4uY2MiKSk7CisKKyAgYWJzbDo6Rmxh
Z3NVc2FnZUNvbmZpZyBlbXB0eV9jb25maWc7CisgIGVtcHR5X2NvbmZpZy5jb250YWluc19oZWxw
c2hvcnRfZmxhZ3MgPSAmVHN0Q29udGFpbnNIZWxwc2hvcnRGbGFnczsKKyAgYWJzbDo6U2V0Rmxh
Z3NVc2FnZUNvbmZpZyhlbXB0eV9jb25maWcpOworCisgIEVYUEVDVF9UUlVFKAorICAgICAgZmxh
Z3M6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscHNob3J0X2ZsYWdzKCJhYWEvcHJvZ25h
bWUuY3BwIikpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBmbGFnczo6R2V0VXNhZ2VDb25maWco
KS5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MoImFhYS9wcm9nbWFuZS5jcHAiKSk7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK1RFU1RfRihGbGFnc1VzYWdlQ29uZmlnVGVzdCwgVGVzdENvbnRhaW5z
SGVscEZsYWdzKSB7CisgIGZsYWdzOjpTZXRQcm9ncmFtSW52b2NhdGlvbk5hbWUoInVzYWdlX2Nv
bmZpZ190ZXN0Iik7CisKKyAgYXV0byBjb25maWcgPSBmbGFnczo6R2V0VXNhZ2VDb25maWcoKTsK
KyAgRVhQRUNUX1RSVUUoY29uZmlnLmNvbnRhaW5zX2hlbHBfZmxhZ3MoInp6ei91c2FnZV9jb25m
aWdfdGVzdC5jYyIpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBjb25maWcuY29udGFpbnNfaGVs
cF9mbGFncygiYmRpci9hL3p6ei91c2FnZV9jb25maWdfdGVzdC1tYWluLmNjIikpOworICBFWFBF
Q1RfVFJVRSgKKyAgICAgIGNvbmZpZy5jb250YWluc19oZWxwX2ZsYWdzKCIvL2Fxc2Uvenp6L3Vz
YWdlX2NvbmZpZ190ZXN0X21haW4uY2MiKSk7CisgIEVYUEVDVF9GQUxTRShjb25maWcuY29udGFp
bnNfaGVscF9mbGFncygienp6L2FhL3VzYWdlX2NvbmZpZ19tYWluLmNjIikpOworCisgIGFic2w6
OkZsYWdzVXNhZ2VDb25maWcgZW1wdHlfY29uZmlnOworICBlbXB0eV9jb25maWcuY29udGFpbnNf
aGVscF9mbGFncyA9ICZUc3RDb250YWluc0hlbHBGbGFnczsKKyAgYWJzbDo6U2V0RmxhZ3NVc2Fn
ZUNvbmZpZyhlbXB0eV9jb25maWcpOworCisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRVc2FnZUNv
bmZpZygpLmNvbnRhaW5zX2hlbHBfZmxhZ3MoInp6ei9tYWluLWJvZHkuYyIpKTsKKyAgRVhQRUNU
X0ZBTFNFKAorICAgICAgZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscF9mbGFn
cygienp6L2Rpci9tYWluLWJvZHkuYyIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9G
KEZsYWdzVXNhZ2VDb25maWdUZXN0LCBUZXN0Q29udGFpbnNIZWxwcGFja2FnZUZsYWdzKSB7Cisg
IGZsYWdzOjpTZXRQcm9ncmFtSW52b2NhdGlvbk5hbWUoInVzYWdlX2NvbmZpZ190ZXN0Iik7CisK
KyAgYXV0byBjb25maWcgPSBmbGFnczo6R2V0VXNhZ2VDb25maWcoKTsKKyAgRVhQRUNUX1RSVUUo
Y29uZmlnLmNvbnRhaW5zX2hlbHBwYWNrYWdlX2ZsYWdzKCJhYWEvdXNhZ2VfY29uZmlnX3Rlc3Qu
Y2MiKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgY29uZmlnLmNvbnRhaW5zX2hlbHBwYWNrYWdl
X2ZsYWdzKCJiYmRpci9hYWEvdXNhZ2VfY29uZmlnX3Rlc3QtbWFpbi5jYyIpKTsKKyAgRVhQRUNU
X1RSVUUoY29uZmlnLmNvbnRhaW5zX2hlbHBwYWNrYWdlX2ZsYWdzKAorICAgICAgIi8vYXFzd2Rl
L2FhYS91c2FnZV9jb25maWdfdGVzdF9tYWluLmNjIikpOworICBFWFBFQ1RfRkFMU0UoY29uZmln
LmNvbnRhaW5zX2hlbHBwYWNrYWdlX2ZsYWdzKCJhYWRpci91c2FnZV9jb25maWdfbWFpbi5jYyIp
KTsKKworICBhYnNsOjpGbGFnc1VzYWdlQ29uZmlnIGVtcHR5X2NvbmZpZzsKKyAgZW1wdHlfY29u
ZmlnLmNvbnRhaW5zX2hlbHBwYWNrYWdlX2ZsYWdzID0gJlRzdENvbnRhaW5zSGVscHBhY2thZ2VG
bGFnczsKKyAgYWJzbDo6U2V0RmxhZ3NVc2FnZUNvbmZpZyhlbXB0eV9jb25maWcpOworCisgIEVY
UEVDVF9UUlVFKAorICAgICAgZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscHBh
Y2thZ2VfZmxhZ3MoImFhYS9tYWluLWJvZHkuYyIpKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAg
ZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MoImFhZGly
L21haW4tYm9keS5jIikpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoRmxhZ3NVc2Fn
ZUNvbmZpZ1Rlc3QsIFRlc3RWZXJzaW9uU3RyaW5nKSB7CisgIGZsYWdzOjpTZXRQcm9ncmFtSW52
b2NhdGlvbk5hbWUoInVzYWdlX2NvbmZpZ190ZXN0Iik7CisKKyNpZmRlZiBOREVCVUcKKyAgc3Rk
OjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0ID0gInVzYWdlX2NvbmZpZ190ZXN0XG4iOworI2Vsc2UK
KyAgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0ID0KKyAgICAgICJ1c2FnZV9jb25maWdfdGVz
dFxuRGVidWcgYnVpbGQgKE5ERUJVRyBub3QgI2RlZmluZWQpXG4iOworI2VuZGlmCisKKyAgRVhQ
RUNUX0VRKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLnZlcnNpb25fc3RyaW5nKCksIGV4cGVjdGVk
X291dHB1dCk7CisKKyAgYWJzbDo6RmxhZ3NVc2FnZUNvbmZpZyBlbXB0eV9jb25maWc7CisgIGVt
cHR5X2NvbmZpZy52ZXJzaW9uX3N0cmluZyA9ICZUc3RWZXJzaW9uU3RyaW5nOworICBhYnNsOjpT
ZXRGbGFnc1VzYWdlQ29uZmlnKGVtcHR5X2NvbmZpZyk7CisKKyAgRVhQRUNUX0VRKGZsYWdzOjpH
ZXRVc2FnZUNvbmZpZygpLnZlcnNpb25fc3RyaW5nKCksICJwcm9ncmFtIDEuMC4wIik7Cit9CisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihGbGFnc1VzYWdlQ29uZmlnVGVzdCwgVGVzdE5vcm1h
bGl6ZUZpbGVuYW1lKSB7CisgIC8vIFRoaXMgdGVzdHMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24uCisgIEVYUEVDVF9FUShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5ub3JtYWxpemVfZmlsZW5h
bWUoImEvYS5jYyIpLCAiYS9hLmNjIik7CisgIEVYUEVDVF9FUShmbGFnczo6R2V0VXNhZ2VDb25m
aWcoKS5ub3JtYWxpemVfZmlsZW5hbWUoIi9hL2EuY2MiKSwgImEvYS5jYyIpOworICBFWFBFQ1Rf
RVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkubm9ybWFsaXplX2ZpbGVuYW1lKCIvLy9hL2EuY2Mi
KSwgImEvYS5jYyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkubm9ybWFs
aXplX2ZpbGVuYW1lKCIvIiksICIiKTsKKworICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIGN1c3Rv
bSBpbXBsZW1lbnRhdGlvbiBpcyBjYWxsZWQuCisgIGFic2w6OkZsYWdzVXNhZ2VDb25maWcgZW1w
dHlfY29uZmlnOworICBlbXB0eV9jb25maWcubm9ybWFsaXplX2ZpbGVuYW1lID0gJlRzdE5vcm1h
bGl6ZUZpbGVuYW1lOworICBhYnNsOjpTZXRGbGFnc1VzYWdlQ29uZmlnKGVtcHR5X2NvbmZpZyk7
CisKKyAgRVhQRUNUX0VRKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6ZV9maWxlbmFt
ZSgiYS9hLmNjIiksICJhLmNjIik7CisgIEVYUEVDVF9FUShmbGFnczo6R2V0VXNhZ2VDb25maWco
KS5ub3JtYWxpemVfZmlsZW5hbWUoImFhYS9hLmNjIiksICJhL2EuY2MiKTsKKworICAvLyBUaGlz
IHRlc3RzIHRoYXQgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgY2FsbGVkLgorICBlbXB0
eV9jb25maWcubm9ybWFsaXplX2ZpbGVuYW1lID0gbnVsbHB0cjsKKyAgYWJzbDo6U2V0RmxhZ3NV
c2FnZUNvbmZpZyhlbXB0eV9jb25maWcpOworCisgIEVYUEVDVF9FUShmbGFnczo6R2V0VXNhZ2VD
b25maWcoKS5ub3JtYWxpemVfZmlsZW5hbWUoImEvYS5jYyIpLCAiYS9hLmNjIik7CisgIEVYUEVD
VF9FUShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5ub3JtYWxpemVfZmlsZW5hbWUoIi9hL2EuY2Mi
KSwgImEvYS5jYyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkubm9ybWFs
aXplX2ZpbGVuYW1lKCIvLy9hL2EuY2MiKSwgImEvYS5jYyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6
OkdldFVzYWdlQ29uZmlnKCkubm9ybWFsaXplX2ZpbGVuYW1lKCJcXGFcXGEuY2MiKSwgImFcXGEu
Y2MiKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6ZV9maWxl
bmFtZSgiLy8iKSwgIiIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkubm9y
bWFsaXplX2ZpbGVuYW1lKCJcXFxcIiksICIiKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5iYXplbApp
bmRleCA1MGFhNTUwNmMxMS4uOGMyZGFmNzAzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQlVJ
TEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5iYXplbApAQCAtNSw3ICs1LDcgQEAKICMg
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMg
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTE1LDggKzE1LDkgQEAKICMKIAogbG9hZCgKLSAgICAiLy9hYnNs
OmNvcHRzLmJ6bCIsCisgICAgIi8vYWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKICAg
ICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRTIiwKICAg
ICAiQUJTTF9URVNUX0NPUFRTIiwKICkKIApAQCAtMzIsNiArMzMsNyBAQCBjY19saWJyYXJ5KAog
ICAgIF0sCiAgICAgaGRycyA9IFsiaGFzaC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9
IFsKICAgICAgICAgIjpjaXR5IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIs
CkBAIC01MCw2ICs1Miw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJoYXNoX3Rlc3Rpbmci
LAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBoZHJzID0gWyJoYXNoX3Rlc3RpbmcuaCJdLAorICAg
IGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAg
ICI6c3B5X2hhc2hfc3RhdGUiLAogICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLApA
QCAtNjMsNiArNjYsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiaGFzaF90ZXN0IiwKICAgICBz
cmNzID0gWyJoYXNoX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAg
ICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAg
ICAiOmhhc2giLAogICAgICAgICAiOmhhc2hfdGVzdGluZyIsCkBAIC04MCw2ICs4NCw3IEBAIGNj
X2xpYnJhcnkoCiAgICAgdGVzdG9ubHkgPSAxLAogICAgIGhkcnMgPSBbImludGVybmFsL3NweV9o
YXNoX3N0YXRlLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2li
aWxpdHk6cHJpdmF0ZSJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6aGFzaCIsCkBAIC05Myw5
ICs5OCw5IEBAIGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvY2l0eS5jYyJdLAog
ICAgIGhkcnMgPSBbCiAgICAgICAgICJpbnRlcm5hbC9jaXR5LmgiLAotICAgICAgICAiaW50ZXJu
YWwvY2l0eV9jcmMuaCIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAg
ICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVh
ZGVycyIsCkBAIC0xMDcsNiArMTEyLDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNpdHlfdGVz
dCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvY2l0eV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgZGVwcyA9IFsKICAgICAgICAgIjpjaXR5IiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2ds
ZXRlc3QvLzpndGVzdF9tYWluIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9oYXNoL0JVSUxELmduCmluZGV4IDQwYjZiM2EyMmIzLi4yMWJmODgxYTFkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxELmduCkBAIC00
LDggKzQsMTUgQEAKIAogaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCisj
IFVzYWdlIG9mIEFic2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9w
dC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2Ug
cmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hy
b21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIwor
IyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2ds
ZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgx
dkJEVQogaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsKKyAgICAi
Ly9saWJhc3Npc3RhbnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAogICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVz
dDpndGVzdCIsCkBAIC05MSw3ICs5OCw2IEBAIHNvdXJjZV9zZXQoImNpdHkiKSB7CiAgIHB1Ymxp
Y19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25m
aWciIF0KICAgcHVibGljID0gWwogICAgICJpbnRlcm5hbC9jaXR5LmgiLAotICAgICJpbnRlcm5h
bC9jaXR5X2NyYy5oIiwKICAgXQogICBzb3VyY2VzID0gWwogICAgICJpbnRlcm5hbC9jaXR5LmNj
IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0NN
YWtlTGlzdHMudHh0CmluZGV4IDM1MDgxZTM3NzRmLi5mZWJjNTUxZmNlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvaGFzaC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0NNYWtlTGlzdHMudHh0
CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQsNjcgKzE0LDEwMiBAQAog
IyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICMKIAotbGlzdChBUFBFTkQgSEFTSF9Q
VUJMSUNfSEVBREVSUwotICAiaGFzaC5oIgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAg
aGFzaAorICBIRFJTCisgICAgImhhc2guaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9oYXNoLmNj
IgorICAgICJpbnRlcm5hbC9oYXNoLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjplbmRpYW4KKyAg
ICBhYnNsOjpmaXhlZF9hcnJheQorICAgIGFic2w6Om1ldGEKKyAgICBhYnNsOjppbnQxMjgKKyAg
ICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6b3B0aW9uYWwKKyAgICBhYnNsOjp2YXJpYW50Cisg
ICAgYWJzbDo6dXRpbGl0eQorICAgIGFic2w6OmNpdHkKKyAgUFVCTElDCiApCiAKLWxpc3QoQVBQ
RU5EIEhBU0hfSU5URVJOQUxfSEVBREVSUwotICAiaW50ZXJuYWwvY2l0eS5oIgotICAiaW50ZXJu
YWwvY2l0eV9jcmMuaCIKLSAgImludGVybmFsL2hhc2guaCIKK2Fic2xfY2NfbGlicmFyeSgKKyAg
TkFNRQorICAgIGhhc2hfdGVzdGluZworICBIRFJTCisgICAgImhhc2hfdGVzdGluZy5oIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3B5X2hhc2hf
c3RhdGUKKyAgICBhYnNsOjptZXRhCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnZhcmlh
bnQKKyAgICBnbW9jaworICBURVNUT05MWQogKQogCi0jIGFic2xfaGFzaCBsaWJyYXJ5Ci1saXN0
KEFQUEVORCBIQVNIX1NSQwotICAiaW50ZXJuYWwvY2l0eS5jYyIKLSAgImludGVybmFsL2hhc2gu
Y2MiCi0gICR7SEFTSF9QVUJMSUNfSEVBREVSU30KLSAgJHtIQVNIX0lOVEVSTkFMX0hFQURFUlN9
CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBoYXNoX3Rlc3QKKyAgU1JDUworICAgICJoYXNo
X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjpoYXNoCisgICAgYWJzbDo6aGFzaF90ZXN0aW5nCisgICAgYWJzbDo6Y29yZV9oZWFkZXJz
CisgICAgYWJzbDo6ZmxhdF9oYXNoX3NldAorICAgIGFic2w6OnNweV9oYXNoX3N0YXRlCisgICAg
YWJzbDo6bWV0YQorICAgIGFic2w6OmludDEyOAorICAgIGdtb2NrX21haW4KICkKIAotc2V0KEhB
U0hfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpoYXNoIGFic2w6OmNvbnRhaW5lciBhYnNsOjpzdHJp
bmdzIGFic2w6OnN0cl9mb3JtYXQgYWJzbDo6dXRpbGl0eSkKLQotYWJzbF9saWJyYXJ5KAotICBU
QVJHRVQKLSAgICBhYnNsX2hhc2gKLSAgU09VUkNFUwotICAgICR7SEFTSF9TUkN9Ci0gIFBVQkxJ
Q19MSUJSQVJJRVMKLSAgICAke0hBU0hfUFVCTElDX0xJQlJBUklFU30KLSAgRVhQT1JUX05BTUUK
LSAgICBoYXNoCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBzcHlfaGFzaF9zdGF0ZQor
ICBIRFJTCisgICAgImludGVybmFsL3NweV9oYXNoX3N0YXRlLmgiCisgIENPUFRTCisgICAgJHtB
QlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoCisgICAgYWJzbDo6c3Ry
aW5ncworICAgIGFic2w6OnN0cl9mb3JtYXQKKyAgVEVTVE9OTFkKICkKIAotIwotIyMgVEVTVFMK
LSMKLQotIyB0ZXN0aW5nIHN1cHBvcnQKLXNldChIQVNIX1RFU1RfSEVBREVSUyBoYXNoX3Rlc3Rp
bmcuaCBpbnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oKQotc2V0KEhBU0hfVEVTVF9QVUJMSUNfTElC
UkFSSUVTIGFic2w6Omhhc2ggYWJzbDo6Y29udGFpbmVyIGFic2w6Om51bWVyaWMgYWJzbDo6c3Ry
aW5ncyBhYnNsOjpzdHJfZm9ybWF0KQotCi0jIGhhc2hfdGVzdAotc2V0KEhBU0hfVEVTVF9TUkMg
Imhhc2hfdGVzdC5jYyIgJHtIQVNIX1RFU1RfSEVBREVSU30pCi0KLWFic2xfdGVzdCgKLSAgVEFS
R0VUCi0gICAgaGFzaF90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0hBU0hfVEVTVF9TUkN9Ci0gIFBV
QkxJQ19MSUJSQVJJRVMKLSAgICAke0hBU0hfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgY2l0eQorICBIRFJTCisgICAgImludGVybmFsL2NpdHku
aCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9jaXR5LmNjIgorICBDT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29yZV9o
ZWFkZXJzCisgICAgYWJzbDo6ZW5kaWFuCiApCiAKLSMgaGFzaF90ZXN0Ci1zZXQoQ0lUWV9URVNU
X1NSQyAiaW50ZXJuYWwvY2l0eV90ZXN0LmNjIikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fi
c2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIGNpdHlfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtDSVRZ
X1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtIQVNIX1RFU1RfUFVCTElDX0xJ
QlJBUklFU30KKyAgU1JDUworICAgICJpbnRlcm5hbC9jaXR5X3Rlc3QuY2MiCisgIENPUFRTCisg
ICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjaXR5CisgICAgZ21vY2tf
bWFpbgogKQogCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9o
YXNoLmgKaW5kZXggYzdiYTRjMmI3YTUuLjI5N2RjOWNiMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9o
YXNoL2hhc2guaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2guaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjUsOCArMjUsOCBAQAogLy8gICAqIGBBYnNsSGFzaFZh
bHVlYCwgYW4gZXh0ZW5zaW9uIHBvaW50IHRoYXQgYWxsb3dzIHlvdSB0byBleHRlbmQgdHlwZXMg
dG8KIC8vICAgICBzdXBwb3J0IEFic2VpbCBoYXNoaW5nIHdpdGhvdXQgcmVxdWlyaW5nIHlvdSB0
byBkZWZpbmUgYSBoYXNoaW5nCiAvLyAgICAgYWxnb3JpdGhtLgotLy8gICAqIGBIYXNoU3RhdGVg
LCBhIHR5cGUtZXJhc2VkIGNsYXNzIHdoaWNoIGltcGxlbWVudCB0aGUgbWFuaXB1bGF0aW9uIG9m
IHRoZQotLy8gICAgIGhhc2ggc3RhdGUgKEgpIGl0c2VsZi4gY29udGFpbmluZyBtZW1iZXIgZnVu
Y3Rpb25zIGBjb21iaW5lKClgIGFuZAorLy8gICAqIGBIYXNoU3RhdGVgLCBhIHR5cGUtZXJhc2Vk
IGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhlIG1hbmlwdWxhdGlvbiBvZiB0aGUKKy8vICAgICBo
YXNoIHN0YXRlIChIKSBpdHNlbGYsIGNvbnRhaW5zIG1lbWJlciBmdW5jdGlvbnMgYGNvbWJpbmUo
KWAgYW5kCiAvLyAgICAgYGNvbWJpbmVfY29udGlndW91cygpYCwgd2hpY2ggeW91IGNhbiB1c2Ug
dG8gY29udHJpYnV0ZSB0byBhbiBleGlzdGluZwogLy8gICAgIGhhc2ggc3RhdGUgd2hlbiBoYXNo
aW5nIHlvdXIgdHlwZXMuCiAvLwpAQCAtMzYsMjUgKzM2LDM0IEBACiAvLyBmcmFtZXdvcmsgYnkg
c2ltcGx5IGNvbWJpbmluZyBpdHMgc3RhdGUgd2l0aCB0aGUgc3RhdGUgb2Yga25vd24sIGhhc2hh
YmxlCiAvLyB0eXBlcy4gSGFzaGluZyBvZiB0aGF0IGNvbWJpbmVkIHN0YXRlIGlzIHNlcGFyYXRl
bHkgZG9uZSBieSBgYWJzbDo6SGFzaGAuCiAvLworLy8gT25lIHNob3VsZCBhc3N1bWUgdGhhdCBh
IGhhc2ggYWxnb3JpdGhtIGlzIGNob3NlbiByYW5kb21seSBhdCB0aGUgc3RhcnQgb2YKKy8vIGVh
Y2ggcHJvY2Vzcy4gIEUuZy4sIGFic2w6Okhhc2g8aW50PigpKDkpIGluIG9uZSBwcm9jZXNzIGFu
ZAorLy8gYWJzbDo6SGFzaDxpbnQ+KCkoOSkgaW4gYW5vdGhlciBwcm9jZXNzIGFyZSBsaWtlbHkg
dG8gZGlmZmVyLgorLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICAvLyBTdXBwb3NlIHdlIGhhdmUg
YSBjbGFzcyBgQ2lyY2xlYCBmb3Igd2hpY2ggd2Ugd2FudCB0byBhZGQgaGFzaGluZworLy8gICAv
LyBTdXBwb3NlIHdlIGhhdmUgYSBjbGFzcyBgQ2lyY2xlYCBmb3Igd2hpY2ggd2Ugd2FudCB0byBh
ZGQgaGFzaGluZzoKIC8vICAgY2xhc3MgQ2lyY2xlIHsKLS8vICAgICBwdWJsaWM6Ci0vLyAgICAg
ICAuLi4KLS8vICAgICBwcml2YXRlOgotLy8gICAgICAgc3RkOjpwYWlyPGludCwgaW50PiBjZW50
ZXJfOwotLy8gICAgICAgaW50IHJhZGl1c187Ci0vLyAgICAgfTsKLS8vCi0vLyAgIC8vIFRvIGFk
ZCBoYXNoaW5nIHN1cHBvcnQgdG8gYENpcmNsZWAsIHdlIHNpbXBseSBuZWVkIHRvIGFkZCBhbiBv
cmRpbmFyeQotLy8gICAvLyBmdW5jdGlvbiBgQWJzbEhhc2hWYWx1ZSgpYCwgYW5kIHJldHVybiB0
aGUgY29tYmluZWQgaGFzaCBzdGF0ZSBvZiB0aGUKLS8vICAgLy8gZXhpc3RpbmcgaGFzaCBzdGF0
ZSBhbmQgdGhlIGNsYXNzIHN0YXRlOgorLy8gICAgcHVibGljOgorLy8gICAgIC4uLgorLy8gICAg
cHJpdmF0ZToKKy8vICAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IGNlbnRlcl87CisvLyAgICAgaW50
IHJhZGl1c187CisvLyAgIH07CiAvLworLy8gICAvLyBUbyBhZGQgaGFzaGluZyBzdXBwb3J0IHRv
IGBDaXJjbGVgLCB3ZSBzaW1wbHkgbmVlZCB0byBhZGQgYSBmcmVlCisvLyAgIC8vIChub24tbWVt
YmVyKSBmdW5jdGlvbiBgQWJzbEhhc2hWYWx1ZSgpYCwgYW5kIHJldHVybiB0aGUgY29tYmluZWQg
aGFzaAorLy8gICAvLyBzdGF0ZSBvZiB0aGUgZXhpc3RpbmcgaGFzaCBzdGF0ZSBhbmQgdGhlIGNs
YXNzIHN0YXRlLiBZb3UgY2FuIGFkZCBzdWNoIGEKKy8vICAgLy8gZnJlZSBmdW5jdGlvbiB1c2lu
ZyBhIGZyaWVuZCBkZWNsYXJhdGlvbiB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNsYXNzOgorLy8g
ICBjbGFzcyBDaXJjbGUgeworLy8gICAgcHVibGljOgorLy8gICAgIC4uLgogLy8gICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBIPgogLy8gICAgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBjb25z
dCBDaXJjbGUmIGMpIHsKIC8vICAgICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwg
Yy5jZW50ZXJfLCBjLnJhZGl1c18pOwogLy8gICAgIH0KKy8vICAgICAuLi4KKy8vICAgfTsKIC8v
CiAvLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIEFkZGluZyBUeXBlIFN1cHBvcnQgdG8gYGFi
c2w6Okhhc2hgIGJlbG93LgogLy8KQEAgLTY5LDcgKzc4LDcgQEAgbmFtZXNwYWNlIGFic2wgewog
Ly8gYGFic2w6Okhhc2hgCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KLS8vIGBhYnNsOjpI
YXNoPFQ+YCBpcyBhIGNvbnZlbmllbnQgZ2VuZXJhbC1wdXJwb3NlIGhhc2ggZnVuY3RvciBmb3Ig
YSB0eXBlIGBUYAorLy8gYGFic2w6Okhhc2g8VD5gIGlzIGEgY29udmVuaWVudCBnZW5lcmFsLXB1
cnBvc2UgaGFzaCBmdW5jdG9yIGZvciBhbnkgdHlwZSBgVGAKIC8vIHNhdGlzZnlpbmcgYW55IG9m
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyAoaW4gb3JkZXIpOgogLy8KIC8vICAqIFQgaXMgYW4g
YXJpdGhtZXRpYyBvciBwb2ludGVyIHR5cGUKQEAgLTk4LDcgKzEwNyw3IEBAIG5hbWVzcGFjZSBh
YnNsIHsKIC8vICAgICogYWJzbDo6c3RyaW5nX3ZpZXcKIC8vICAgICogYWJzbDo6SW5saW5lZFZl
Y3RvcgogLy8gICAgKiBhYnNsOjpGaXhlZEFycmF5Ci0vLyAgICAqIGFic2w6OnVuaXQxMjgKKy8v
ICAgICogYWJzbDo6dWludDEyOAogLy8gICAgKiBhYnNsOjpUaW1lLCBhYnNsOjpEdXJhdGlvbiwg
YW5kIGFic2w6OlRpbWVab25lCiAvLwogLy8gTm90ZTogdGhlIGxpc3QgYWJvdmUgaXMgbm90IG1l
YW50IHRvIGJlIGV4aGF1c3RpdmUuIEFkZGl0aW9uYWwgdHlwZSBzdXBwb3J0CkBAIC0xNDIsNyAr
MTUxLDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8KIC8vIFRoZSAiaGFzaCBzdGF0ZSIgY29uY2Vw
dCBjb250YWlucyB0d28gbWVtYmVyIGZ1bmN0aW9ucyBmb3IgbWl4aW5nIGhhc2ggc3RhdGU6CiAv
LwotLy8gKiBgSDo6Y29tYmluZSgpYAorLy8gKiBgSDo6Y29tYmluZShzdGF0ZSwgdmFsdWVzLi4u
KWAKIC8vCiAvLyAgIENvbWJpbmVzIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdmFsdWVzIGludG8g
YSBoYXNoIHN0YXRlLCByZXR1cm5pbmcgdGhlCiAvLyAgIHVwZGF0ZWQgc3RhdGUuIE5vdGUgdGhh
dCB0aGUgZXhpc3RpbmcgaGFzaCBzdGF0ZSBpcyBtb3ZlLW9ubHkgYW5kIG11c3QgYmUKQEAgLTE2
MCw3ICsxNjksNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAgICAgc3RhdGUgPSBIOjpjb21iaW5l
KHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMik7CiAvLyAgICAgc3RhdGUgPSBIOjpjb21iaW5lKHN0
ZDo6bW92ZShzdGF0ZSksIHZhbHVlMyk7CiAvLwotLy8gKiBgSDo6Y29tYmluZV9jb250aWd1b3Vz
KClgCisvLyAqIGBIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RhdGUsIGRhdGEsIHNpemUpYAogLy8K
IC8vICAgIENvbWJpbmVzIGEgY29udGlndW91cyBhcnJheSBvZiBgc2l6ZWAgZWxlbWVudHMgaW50
byBhIGhhc2ggc3RhdGUsCiAvLyAgICByZXR1cm5pbmcgdGhlIHVwZGF0ZWQgc3RhdGUuIE5vdGUg
dGhhdCB0aGUgZXhpc3RpbmcgaGFzaCBzdGF0ZSBpcwpAQCAtMjM1LDcgKzI0NCw3IEBAIHVzaW5n
IEhhc2ggPSBhYnNsOjpoYXNoX2ludGVybmFsOjpIYXNoPFQ+OwogLy8gICAgIH0KIC8vICAgIHBy
aXZhdGU6CiAvLyAgICAgdmlydHVhbCB2b2lkIEhhc2hWYWx1ZShhYnNsOjpIYXNoU3RhdGUgc3Rh
dGUpIGNvbnN0ID0gMDsKLS8vICB9OworLy8gICB9OwogLy8KIC8vICAgY2xhc3MgSW1wbCA6IElu
dGVyZmFjZSB7CiAvLyAgICBwcml2YXRlOgpAQCAtMjQzLDcgKzI1Miw3IEBAIHVzaW5nIEhhc2gg
PSBhYnNsOjpoYXNoX2ludGVybmFsOjpIYXNoPFQ+OwogLy8gICAgICAgYWJzbDo6SGFzaFN0YXRl
Ojpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHYxXywgdjJfKTsKIC8vICAgICB9CiAvLyAgICAg
aW50IHYxXzsKLS8vICAgICBzdHJpbmcgdjJfOworLy8gICAgIHN0ZDo6c3RyaW5nIHYyXzsKIC8v
ICAgfTsKIGNsYXNzIEhhc2hTdGF0ZSA6IHB1YmxpYyBoYXNoX2ludGVybmFsOjpIYXNoU3RhdGVC
YXNlPEhhc2hTdGF0ZT4gewogIHB1YmxpYzoKQEAgLTMwOSw0ICszMTgsNSBAQCBjbGFzcyBIYXNo
U3RhdGUgOiBwdWJsaWMgaGFzaF9pbnRlcm5hbDo6SGFzaFN0YXRlQmFzZTxIYXNoU3RhdGU+IHsK
IH07CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9IQVNIX0hBU0hf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNo
X3Rlc3QuY2MKaW5kZXggN2I2ZmIyZTdhYzEuLjlhNjY3YmE3MDNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9oYXNoL2hhc2hfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2hfdGVzdC5jYwpAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTUsNiArMTUsNyBAQAogI2lu
Y2x1ZGUgImFic2wvaGFzaC9oYXNoLmgiCiAKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxi
aXRzZXQ+CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxkZXF1ZT4KICNpbmNsdWRlIDxm
b3J3YXJkX2xpc3Q+CkBAIC01MCw3ICs1MSw3IEBAIHVzaW5nIGFic2w6Omhhc2hfaW50ZXJuYWw6
OlNweUhhc2hTdGF0ZTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgSGFzaFZhbHVlSW50
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIH07Ci1UWVBFRF9URVNUX0NBU0VfUChIYXNo
VmFsdWVJbnRUZXN0KTsKK1RZUEVEX1RFU1RfU1VJVEVfUChIYXNoVmFsdWVJbnRUZXN0KTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTcHlIYXNoU3RhdGUgU3B5SGFzaChjb25zdCBUJiB2YWx1
ZSkgewpAQCAtODQsMTEgKzg1LDM0OSBAQCB1c2luZyBJbnRUeXBlcyA9IHRlc3Rpbmc6OlR5cGVz
PHVuc2lnbmVkIGNoYXIsIGNoYXIsIGludCwgaW50MzJfdCwgaW50NjRfdCwgdWludAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCwgc2l6ZV90PjsKIElOU1RBTlRJQVRF
X1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBIYXNoVmFsdWVJbnRUZXN0LCBJbnRUeXBlcyk7CiAKK2Vu
dW0gTGVnYWN5RW51bSB7IGtWYWx1ZTEsIGtWYWx1ZTIsIGtWYWx1ZTMgfTsKKworZW51bSBjbGFz
cyBFbnVtQ2xhc3MgeyBrVmFsdWU0LCBrVmFsdWU1LCBrVmFsdWU2IH07CisKK1RFU1QoSGFzaFZh
bHVlVGVzdCwgRW51bUFuZEJvb2wpIHsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPExlZ2Fj
eUVudW0+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8RW51bUNsYXNzPjo6
dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPGJvb2w+Ojp2YWx1ZSkpOworCisg
IEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHko
c3RkOjptYWtlX3R1cGxlKAorICAgICAgTGVnYWN5RW51bTo6a1ZhbHVlMSwgTGVnYWN5RW51bTo6
a1ZhbHVlMiwgTGVnYWN5RW51bTo6a1ZhbHVlMykpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVy
aWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShzdGQ6Om1ha2VfdHVwbGUoCisgICAg
ICBFbnVtQ2xhc3M6OmtWYWx1ZTQsIEVudW1DbGFzczo6a1ZhbHVlNSwgRW51bUNsYXNzOjprVmFs
dWU2KSkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNo
Q29ycmVjdGx5KAorICAgICAgc3RkOjptYWtlX3R1cGxlKHRydWUsIGZhbHNlKSkpOworfQorCitU
RVNUKEhhc2hWYWx1ZVRlc3QsIEZsb2F0aW5nUG9pbnQpIHsKKyAgRVhQRUNUX1RSVUUoKGlzX2hh
c2hhYmxlPGZsb2F0Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPGRvdWJs
ZT46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxsb25nIGRvdWJsZT46OnZh
bHVlKSk7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFz
aENvcnJlY3RseSgKKyAgICAgIHN0ZDo6bWFrZV90dXBsZSg0Mi5mLCAwLmYsIC0wLmYsIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLAorICAgICAgICAgICAgICAgICAgICAg
IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSkpKTsKKworICBFWFBFQ1Rf
VFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAgICAg
c3RkOjptYWtlX3R1cGxlKDQyLiwgMC4sIC0wLiwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjppbmZpbml0eSgpLAorICAgICAgICAgICAgICAgICAgICAgIC1zdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmluZmluaXR5KCkpKSk7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlw
ZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAvLyBB
ZGQgc29tZSB2YWx1ZXMgd2l0aCBzbWFsbCBleHBvbmVudCB0byB0ZXN0IHRoYXQgTk9STUFMIHZh
bHVlcyBhbHNvCisgICAgICAvLyBhcHBlbmQgdGhlaXIgY2F0ZWdvcnkuCisgICAgICAuNUwsIDEu
TCwgMi5MLCA0LkwsIDQyLkwsIDAuTCwgLTAuTCwKKyAgICAgIDE3ICogc3RhdGljX2Nhc3Q8bG9u
ZyBkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpLAorICAgICAgc3Rk
OjpudW1lcmljX2xpbWl0czxsb25nIGRvdWJsZT46OmluZmluaXR5KCksCisgICAgICAtc3RkOjpu
dW1lcmljX2xpbWl0czxsb25nIGRvdWJsZT46OmluZmluaXR5KCkpKSk7Cit9CisKK1RFU1QoSGFz
aFZhbHVlVGVzdCwgUG9pbnRlcikgeworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8aW50Kj46
OnZhbHVlKSk7CisKKyAgaW50IGk7CisgIGludCogcHRyID0gJmk7CisgIGludCogbiA9IG51bGxw
dHI7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENv
cnJlY3RseSgKKyAgICAgIHN0ZDo6bWFrZV90dXBsZSgmaSwgcHRyLCBudWxscHRyLCBwdHIgKyAx
LCBuKSkpOworfQorCitURVNUKEhhc2hWYWx1ZVRlc3QsIFBvaW50ZXJBbGlnbm1lbnQpIHsKKyAg
Ly8gV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBwb2ludGVyIGFsaWdubWVudCB3aWxsIG5vdCBj
YXVzZSBiaXRzIHRvIGJlCisgIC8vIHN0dWNrLgorCisgIGNvbnN0ZXhwciBzaXplX3Qga1RvdGFs
U2l6ZSA9IDEgPDwgMjA7CisgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGRhdGEobmV3IGNoYXJb
a1RvdGFsU2l6ZV0pOworICBjb25zdGV4cHIgc2l6ZV90IGtMb2cyTnVtVmFsdWVzID0gNTsKKyAg
Y29uc3RleHByIHNpemVfdCBrTnVtVmFsdWVzID0gMSA8PCBrTG9nMk51bVZhbHVlczsKKworICBm
b3IgKHNpemVfdCBhbGlnbiA9IDE7IGFsaWduIDwga1RvdGFsU2l6ZSAvIGtOdW1WYWx1ZXM7Cisg
ICAgICAgYWxpZ24gPCA4ID8gYWxpZ24gKz0gMSA6IGFsaWduIDwgMTAyNCA/IGFsaWduICs9IDgg
OiBhbGlnbiArPSAzMikgeworICAgIFNDT1BFRF9UUkFDRShhbGlnbik7CisgICAgQVNTRVJUX0xF
KGFsaWduICoga051bVZhbHVlcywga1RvdGFsU2l6ZSk7CisKKyAgICBzaXplX3QgYml0c19vciA9
IDA7CisgICAgc2l6ZV90IGJpdHNfYW5kID0gfnNpemVfdHt9OworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBrTnVtVmFsdWVzOyArK2kpIHsKKyAgICAgIHNpemVfdCBoYXNoID0gYWJzbDo6
SGFzaDx2b2lkKj4oKShkYXRhLmdldCgpICsgaSAqIGFsaWduKTsKKyAgICAgIGJpdHNfb3IgfD0g
aGFzaDsKKyAgICAgIGJpdHNfYW5kICY9IGhhc2g7CisgICAgfQorCisgICAgLy8gTGltaXQgdGhl
IHNjb3BlIHRvIHRoZSBiaXRzIHdlIHdvdWxkIGJlIHVzaW5nIGZvciBTd2lzc3RhYmxlLgorICAg
IGNvbnN0ZXhwciBzaXplX3Qga01hc2sgPSAoMSA8PCAoa0xvZzJOdW1WYWx1ZXMgKyA3KSkgLSAx
OworICAgIHNpemVfdCBzdHVja19iaXRzID0gKH5iaXRzX29yIHwgYml0c19hbmQpICYga01hc2s7
CisgICAgRVhQRUNUX0VRKHN0dWNrX2JpdHMsIDApIDw8ICIweCIgPDwgc3RkOjpoZXggPDwgc3R1
Y2tfYml0czsKKyAgfQorfQorCitURVNUKEhhc2hWYWx1ZVRlc3QsIFBhaXJBbmRUdXBsZSkgewor
ICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8c3RkOjpwYWlyPGludCwgaW50Pj46OnZhbHVlKSk7
CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxzdGQ6OnBhaXI8Y29uc3QgaW50JiwgY29uc3Qg
aW50Jj4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8c3RkOjp0dXBsZTxp
bnQmLCBpbnQmPj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxzdGQ6OnR1
cGxlPGludCYmLCBpbnQmJj4+Ojp2YWx1ZSkpOworCisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlm
eVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoc3RkOjptYWtlX3R1cGxlKAorICAgICAg
c3RkOjptYWtlX3BhaXIoMCwgNDIpLCBzdGQ6Om1ha2VfcGFpcigwLCA0MiksIHN0ZDo6bWFrZV9w
YWlyKDQyLCAwKSwKKyAgICAgIHN0ZDo6bWFrZV9wYWlyKDAsIDApLCBzdGQ6Om1ha2VfcGFpcig0
MiwgNDIpLCBzdGQ6Om1ha2VfcGFpcigxLCA0MikpKSk7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIHN0ZDo6bWFrZV90
dXBsZShzdGQ6Om1ha2VfdHVwbGUoMCwgMCwgMCksIHN0ZDo6bWFrZV90dXBsZSgwLCAwLCA0Miks
CisgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3R1cGxlKDAsIDIzLCAwKSwgc3RkOjpt
YWtlX3R1cGxlKDE3LCAwLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfdHVw
bGUoNDIsIDAsIDApLCBzdGQ6Om1ha2VfdHVwbGUoMywgOSwgOSksCisgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYWtlX3R1cGxlKDAsIDAsIC00MikpKSk7CisKKyAgLy8gVGVzdCB0aGF0IHR1
cGxlcyBvZiBsdmFsdWUgcmVmZXJlbmNlcyB3b3JrIChzbyB3ZSBuZWVkIGEgZmV3IGx2YWx1ZXMp
OgorICBpbnQgYSA9IDAsIGIgPSAxLCBjID0gMTcsIGQgPSAyMzsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShzdGQ6Om1ha2VfdHVwbGUo
CisgICAgICBzdGQ6OnRpZShhLCBhKSwgc3RkOjp0aWUoYSwgYiksIHN0ZDo6dGllKGIsIGMpLCBz
dGQ6OnRpZShjLCBkKSkpKTsKKworICAvLyBUZXN0IHRoYXQgdHVwbGVzIG9mIHJ2YWx1ZSByZWZl
cmVuY2VzIHdvcms6CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJz
bEhhc2hDb3JyZWN0bHkoc3RkOjptYWtlX3R1cGxlKAorICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1
cGxlKDAsIDAsIDApLCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoMCwgMCwgNDIpLAorICAgICAgc3Rk
Ojpmb3J3YXJkX2FzX3R1cGxlKDAsIDIzLCAwKSwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKDE3LCAw
LCAwKSwKKyAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSg0MiwgMCwgMCksIHN0ZDo6Zm9yd2Fy
ZF9hc190dXBsZSgzLCA5LCA5KSwKKyAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgwLCAwLCAt
NDIpKSkpOworfQorCitURVNUKEhhc2hWYWx1ZVRlc3QsIENvbWJpbmVDb250aWd1b3VzV29ya3Mp
IHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp0dXBsZTxpbnQ+PiB2MSA9IHtzdGQ6Om1ha2VfdHVwbGUo
MSksIHN0ZDo6bWFrZV90dXBsZSgzKX07CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dHVwbGU8aW50Pj4g
djIgPSB7c3RkOjptYWtlX3R1cGxlKDEpLCBzdGQ6Om1ha2VfdHVwbGUoMil9OworCisgIGF1dG8g
dmgxID0gU3B5SGFzaCh2MSk7CisgIGF1dG8gdmgyID0gU3B5SGFzaCh2Mik7CisgIEVYUEVDVF9O
RSh2aDEsIHZoMik7Cit9CisKK3N0cnVjdCBEdW1teURlbGV0ZXIgeworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgdm9pZCBvcGVyYXRvcigpIChUKiBwdHIpIHt9Cit9OworCitzdHJ1Y3QgU21h
cnRQb2ludGVyRXEgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgYm9v
bCBvcGVyYXRvcigpKGNvbnN0IFQmIHQsIGNvbnN0IFUmIHUpIGNvbnN0IHsKKyAgICByZXR1cm4g
R2V0UHRyKHQpID09IEdldFB0cih1KTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICBzdGF0aWMgYXV0byBHZXRQdHIoY29uc3QgVCYgdCkgLT4gZGVjbHR5cGUoJip0KSB7CisgICAg
cmV0dXJuIHQgPyAmKnQgOiBudWxscHRyOworICB9CisKKyAgc3RhdGljIHN0ZDo6bnVsbHB0cl90
IEdldFB0cihzdGQ6Om51bGxwdHJfdCkgeyByZXR1cm4gbnVsbHB0cjsgfQorfTsKKworVEVTVChI
YXNoVmFsdWVUZXN0LCBTbWFydFBvaW50ZXJzKSB7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJs
ZTxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChpc19oYXNo
YWJsZTxzdGQ6OnVuaXF1ZV9wdHI8aW50LCBEdW1teURlbGV0ZXI+Pjo6dmFsdWUpKTsKKyAgRVhQ
RUNUX1RSVUUoKGlzX2hhc2hhYmxlPHN0ZDo6c2hhcmVkX3B0cjxpbnQ+Pjo6dmFsdWUpKTsKKwor
ICBpbnQgaSwgajsKKyAgc3RkOjp1bmlxdWVfcHRyPGludCwgRHVtbXlEZWxldGVyPiB1bmlxdWUx
KCZpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPGludCwgRHVtbXlEZWxldGVyPiB1bmlxdWUyKCZpKTsK
KyAgc3RkOjp1bmlxdWVfcHRyPGludCwgRHVtbXlEZWxldGVyPiB1bmlxdWVfb3RoZXIoJmopOwor
ICBzdGQ6OnVuaXF1ZV9wdHI8aW50LCBEdW1teURlbGV0ZXI+IHVuaXF1ZV9udWxsOworCisgIHN0
ZDo6c2hhcmVkX3B0cjxpbnQ+IHNoYXJlZDEoJmksIER1bW15RGVsZXRlcigpKTsKKyAgc3RkOjpz
aGFyZWRfcHRyPGludD4gc2hhcmVkMigmaSwgRHVtbXlEZWxldGVyKCkpOworICBzdGQ6OnNoYXJl
ZF9wdHI8aW50PiBzaGFyZWRfb3RoZXIoJmosIER1bW15RGVsZXRlcigpKTsKKyAgc3RkOjpzaGFy
ZWRfcHRyPGludD4gc2hhcmVkX251bGw7CisKKyAgLy8gU2FuaXR5IGNoZWNrIG9mIHRoZSBFcSBm
dW5jdGlvbi4KKyAgQVNTRVJUX1RSVUUoU21hcnRQb2ludGVyRXF7fSh1bmlxdWUxLCBzaGFyZWQx
KSk7CisgIEFTU0VSVF9GQUxTRShTbWFydFBvaW50ZXJFcXt9KHVuaXF1ZTEsIHNoYXJlZF9vdGhl
cikpOworICBBU1NFUlRfVFJVRShTbWFydFBvaW50ZXJFcXt9KHVuaXF1ZV9udWxsLCBudWxscHRy
KSk7CisgIEFTU0VSVF9GQUxTRShTbWFydFBvaW50ZXJFcXt9KHNoYXJlZDIsIG51bGxwdHIpKTsK
KworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVj
dGx5KAorICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKCZpLCBudWxscHRyLCAgICAgICAgICAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUxLCB1bmlxdWUy
LCB1bmlxdWVfbnVsbCwgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8aW50PigpLCAgICAgICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
YXJlZDEsIHNoYXJlZDIsIHNoYXJlZF9udWxsLCAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1ha2Vfc2hhcmVkPGludD4oKSksCisgICAgICBTbWFydFBvaW50ZXJFcXt9KSk7
Cit9CisKK1RFU1QoSGFzaFZhbHVlVGVzdCwgRnVuY3Rpb25Qb2ludGVyKSB7CisgIHVzaW5nIEZ1
bmMgPSBpbnQgKCopKCk7CisgIEVYUEVDVF9UUlVFKGlzX2hhc2hhYmxlPEZ1bmM+Ojp2YWx1ZSk7
CisKKyAgRnVuYyBwMSA9IFtdIHsgcmV0dXJuIDI7IH0sIHAyID0gW10geyByZXR1cm4gMTsgfTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3Rs
eSgKKyAgICAgIHN0ZDo6bWFrZV90dXBsZShwMSwgcDIsIG51bGxwdHIpKSk7Cit9CisKK3N0cnVj
dCBXcmFwSW5UdXBsZSB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGQ6OnR1cGxlPGlu
dCwgVCwgc2l6ZV90PiBvcGVyYXRvcigpKGNvbnN0IFQmIHQpIGNvbnN0IHsKKyAgICByZXR1cm4g
c3RkOjptYWtlX3R1cGxlKDcsIHQsIDB4ZGVhZGJlZWYpOworICB9Cit9OworCitURVNUKEhhc2hW
YWx1ZVRlc3QsIFN0cmluZ3MpIHsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPHN0ZDo6c3Ry
aW5nPjo6dmFsdWUpKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBzbWFsbCA9ICJmb28iOworICBj
b25zdCBzdGQ6OnN0cmluZyBkdXAgPSAiZm9vZm9vIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbGFy
Z2UgPSAibGFyZ2UiOworICBjb25zdCBzdGQ6OnN0cmluZyBodWdlID0gc3RkOjpzdHJpbmcoNTAw
MCwgJ2EnKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xI
YXNoQ29ycmVjdGx5KHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgIHN0ZDo6c3RyaW5nKCksIGFic2w6
OnN0cmluZ192aWV3KCksCisgICAgICBzdGQ6OnN0cmluZygiIiksIGFic2w6OnN0cmluZ192aWV3
KCIiKSwKKyAgICAgIHN0ZDo6c3RyaW5nKHNtYWxsKSwgYWJzbDo6c3RyaW5nX3ZpZXcoc21hbGwp
LAorICAgICAgc3RkOjpzdHJpbmcoZHVwKSwgYWJzbDo6c3RyaW5nX3ZpZXcoZHVwKSwKKyAgICAg
IHN0ZDo6c3RyaW5nKGxhcmdlKSwgYWJzbDo6c3RyaW5nX3ZpZXcobGFyZ2UpLAorICAgICAgc3Rk
OjpzdHJpbmcoaHVnZSksIGFic2w6OnN0cmluZ192aWV3KGh1Z2UpKSkpOworCisgIC8vIEFsc28g
Y2hlY2sgdGhhdCBuZXN0ZWQgdHlwZXMgbWFpbnRhaW4gdGhlIHNhbWUgaGFzaC4KKyAgY29uc3Qg
V3JhcEluVHVwbGUgdHt9OworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50
c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgIHQoc3RkOjpzdHJpbmco
KSksIHQoYWJzbDo6c3RyaW5nX3ZpZXcoKSksCisgICAgICB0KHN0ZDo6c3RyaW5nKCIiKSksIHQo
YWJzbDo6c3RyaW5nX3ZpZXcoIiIpKSwKKyAgICAgIHQoc3RkOjpzdHJpbmcoc21hbGwpKSwgdChh
YnNsOjpzdHJpbmdfdmlldyhzbWFsbCkpLAorICAgICAgdChzdGQ6OnN0cmluZyhkdXApKSwgdChh
YnNsOjpzdHJpbmdfdmlldyhkdXApKSwKKyAgICAgIHQoc3RkOjpzdHJpbmcobGFyZ2UpKSwgdChh
YnNsOjpzdHJpbmdfdmlldyhsYXJnZSkpLAorICAgICAgdChzdGQ6OnN0cmluZyhodWdlKSksIHQo
YWJzbDo6c3RyaW5nX3ZpZXcoaHVnZSkpKSkpOworCisgIC8vIE1ha2Ugc3VyZSB0aGF0IGhhc2hp
bmcgYSBgY29uc3QgY2hhcipgIGRvZXMgbm90IHVzZSBpdHMgc3RkOjpzdHJpbmctdmFsdWUuCisg
IEVYUEVDVF9ORShTcHlIYXNoKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPigiQUJDIikpLAorICAg
ICAgICAgICAgU3B5SGFzaChhYnNsOjpzdHJpbmdfdmlldygiQUJDIikpKTsKK30KKworVEVTVChI
YXNoVmFsdWVUZXN0LCBTdGRBcnJheSkgeworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8c3Rk
OjphcnJheTxpbnQsIDM+Pjo6dmFsdWUpKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlU
eXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAgICAgc3RkOjptYWtlX3R1cGxlKHN0
ZDo6YXJyYXk8aW50LCAzPnt9LCBzdGQ6OmFycmF5PGludCwgMz57ezAsIDIzLCA0Mn19KSkpOwor
fQorCitURVNUKEhhc2hWYWx1ZVRlc3QsIFN0ZEJpdHNldCkgeworICBFWFBFQ1RfVFJVRSgoaXNf
aGFzaGFibGU8c3RkOjpiaXRzZXQ8MjU3Pj46OnZhbHVlKSk7CisKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIHtzdGQ6OmJp
dHNldDwyPigiMDAiKSwgc3RkOjpiaXRzZXQ8Mj4oIjAxIiksIHN0ZDo6Yml0c2V0PDI+KCIxMCIp
LAorICAgICAgIHN0ZDo6Yml0c2V0PDI+KCIxMSIpfSkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpW
ZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAgICAge3N0ZDo6Yml0c2V0
PDU+KCIxMDEwMSIpLCBzdGQ6OmJpdHNldDw1PigiMTAwMDEiKSwgc3RkOjpiaXRzZXQ8NT4oKX0p
KTsKKworICBjb25zdGV4cHIgaW50IGtOdW1CaXRzID0gMjU2OworICBzdGQ6OmFycmF5PHN0ZDo6
c3RyaW5nLCA2PiBiaXRfc3RyaW5nczsKKyAgYml0X3N0cmluZ3MuZmlsbChzdGQ6OnN0cmluZyhr
TnVtQml0cywgJzEnKSk7CisgIGJpdF9zdHJpbmdzWzFdWzBdID0gJzAnOworICBiaXRfc3RyaW5n
c1syXVsxXSA9ICcwJzsKKyAgYml0X3N0cmluZ3NbM11ba051bUJpdHMgLyAzXSA9ICcwJzsKKyAg
Yml0X3N0cmluZ3NbNF1ba051bUJpdHMgLSAyXSA9ICcwJzsKKyAgYml0X3N0cmluZ3NbNV1ba051
bUJpdHMgLSAxXSA9ICcwJzsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVu
dHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIHtzdGQ6OmJpdHNldDxrTnVtQml0cz4oYml0X3N0
cmluZ3NbMF0uY19zdHIoKSksCisgICAgICAgc3RkOjpiaXRzZXQ8a051bUJpdHM+KGJpdF9zdHJp
bmdzWzFdLmNfc3RyKCkpLAorICAgICAgIHN0ZDo6Yml0c2V0PGtOdW1CaXRzPihiaXRfc3RyaW5n
c1syXS5jX3N0cigpKSwKKyAgICAgICBzdGQ6OmJpdHNldDxrTnVtQml0cz4oYml0X3N0cmluZ3Nb
M10uY19zdHIoKSksCisgICAgICAgc3RkOjpiaXRzZXQ8a051bUJpdHM+KGJpdF9zdHJpbmdzWzRd
LmNfc3RyKCkpLAorICAgICAgIHN0ZDo6Yml0c2V0PGtOdW1CaXRzPihiaXRfc3RyaW5nc1s1XS5j
X3N0cigpKX0pKTsKK30gIC8vIG5hbWVzcGFjZQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIEhhc2hWYWx1ZVNlcXVlbmNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CitU
WVBFRF9URVNUX1NVSVRFX1AoSGFzaFZhbHVlU2VxdWVuY2VUZXN0KTsKKworVFlQRURfVEVTVF9Q
KEhhc2hWYWx1ZVNlcXVlbmNlVGVzdCwgQmFzaWNVc2FnZSkgeworICBFWFBFQ1RfVFJVRSgoaXNf
aGFzaGFibGU8VHlwZVBhcmFtPjo6dmFsdWUpKTsKKworICB1c2luZyBWYWx1ZVR5cGUgPSB0eXBl
bmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGU7CisgIGF1dG8gYSA9IHN0YXRpY19jYXN0PFZhbHVl
VHlwZT4oMCk7CisgIGF1dG8gYiA9IHN0YXRpY19jYXN0PFZhbHVlVHlwZT4oMjMpOworICBhdXRv
IGMgPSBzdGF0aWNfY2FzdDxWYWx1ZVR5cGU+KDQyKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpW
ZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAgICAgc3RkOjptYWtlX3R1
cGxlKFR5cGVQYXJhbSgpLCBUeXBlUGFyYW17fSwgVHlwZVBhcmFte2EsIGIsIGN9LAorICAgICAg
ICAgICAgICAgICAgICAgIFR5cGVQYXJhbXthLCBifSwgVHlwZVBhcmFte2IsIGN9KSkpOworfQor
CitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChIYXNoVmFsdWVTZXF1ZW5jZVRlc3QsIEJhc2lj
VXNhZ2UpOwordXNpbmcgSW50U2VxdWVuY2VUeXBlcyA9CisgICAgdGVzdGluZzo6VHlwZXM8c3Rk
OjpkZXF1ZTxpbnQ+LCBzdGQ6OmZvcndhcmRfbGlzdDxpbnQ+LCBzdGQ6Omxpc3Q8aW50PiwKKyAg
ICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+LCBzdGQ6OnZlY3Rvcjxib29sPiwgc3Rk
OjpzZXQ8aW50PiwKKyAgICAgICAgICAgICAgICAgICBzdGQ6Om11bHRpc2V0PGludD4+OworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEhhc2hWYWx1ZVNlcXVlbmNlVGVzdCwgSW50
U2VxdWVuY2VUeXBlcyk7CisKKy8vIFByaXZhdGUgdHlwZSB0aGF0IG9ubHkgc3VwcG9ydHMgQWJz
bEhhc2hWYWx1ZSB0byBtYWtlIHN1cmUgb3VyIGNob3NlbiBoYXNoCisvLyBpbXBsZW50YXRpb24g
aXMgcmVjdXJzaXZlIHdpdGhpbiBhYnNsOjpIYXNoLgorLy8gSXQgdXNlcyBzdGQ6OmFicygpIG9u
IHRoZSB2YWx1ZSB0byBwcm92aWRlIGRpZmZlcmVudCBiaXR3aXNlIHJlcHJlc2VudGF0aW9ucwor
Ly8gb2YgdGhlIHNhbWUgbG9naWNhbCB2YWx1ZS4KK3N0cnVjdCBQcml2YXRlIHsKKyAgaW50IGk7
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwg
UHJpdmF0ZSBwKSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBzdGQ6OmFi
cyhwLmkpKTsKKyAgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oUHJpdmF0ZSBhLCBQcml2
YXRlIGIpIHsKKyAgICByZXR1cm4gc3RkOjphYnMoYS5pKSA9PSBzdGQ6OmFicyhiLmkpOworICB9
CisKKyAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG8sIFBy
aXZhdGUgcCkgeworICAgIHJldHVybiBvIDw8IHAuaTsKKyAgfQorfTsKKworVEVTVChIYXNoVmFs
dWVUZXN0LCBQcml2YXRlU2FuaXR5KSB7CisgIC8vIFNhbml0eSBjaGVjayB0aGF0IFByaXZhdGUg
aXMgd29ya2luZyBhcyB0aGUgdGVzdHMgYmVsb3cgZXhwZWN0IGl0IHRvIHdvcmsuCisgIEVYUEVD
VF9UUlVFKGlzX2hhc2hhYmxlPFByaXZhdGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9ORShTcHlIYXNo
KFByaXZhdGV7MH0pLCBTcHlIYXNoKFByaXZhdGV7MX0pKTsKKyAgRVhQRUNUX0VRKFNweUhhc2go
UHJpdmF0ZXsxfSksIFNweUhhc2goUHJpdmF0ZXsxfSkpOworfQorCitURVNUKEhhc2hWYWx1ZVRl
c3QsIE9wdGlvbmFsKSB7CisgIEVYUEVDVF9UUlVFKGlzX2hhc2hhYmxlPGFic2w6Om9wdGlvbmFs
PFByaXZhdGU+Pjo6dmFsdWUpOworCisgIHVzaW5nIE8gPSBhYnNsOjpvcHRpb25hbDxQcml2YXRl
PjsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJl
Y3RseSgKKyAgICAgIHN0ZDo6bWFrZV90dXBsZShPe30sIE97ezF9fSwgT3t7LTF9fSwgT3t7MTB9
fSkpKTsKK30KKworVEVTVChIYXNoVmFsdWVUZXN0LCBWYXJpYW50KSB7CisgIHVzaW5nIFYgPSBh
YnNsOjp2YXJpYW50PFByaXZhdGUsIHN0ZDo6c3RyaW5nPjsKKyAgRVhQRUNUX1RSVUUoaXNfaGFz
aGFibGU8Vj46OnZhbHVlKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVt
ZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgIFYoUHJpdmF0ZXsx
fSksIFYoUHJpdmF0ZXstMX0pLCBWKFByaXZhdGV7Mn0pLCBWKCJBQkMiKSwgVigiQkNEIikpKSk7
CisKKyNpZiBBQlNMX01FVEFfSU5URVJOQUxfU1REX0hBU0hfU0ZJTkFFX0ZSSUVORExZXworICBz
dHJ1Y3QgUyB7fTsKKyAgRVhQRUNUX0ZBTFNFKGlzX2hhc2hhYmxlPGFic2w6OnZhcmlhbnQ8Uz4+
Ojp2YWx1ZSk7CisjZW5kaWYKK30KKworVEVTVChIYXNoVmFsdWVUZXN0LCBNYXBzKSB7CisgIEVY
UEVDVF9UUlVFKChpc19oYXNoYWJsZTxzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPj46OnZhbHVl
KSk7CisKKyAgdXNpbmcgTSA9IHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+OworICBFWFBFQ1Rf
VFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6bWFr
ZV90dXBsZSgKKyAgICAgIE17fSwgTXt7MCwgImZvbyJ9fSwgTXt7MSwgImZvbyJ9fSwgTXt7MCwg
ImJhciJ9fSwgTXt7MSwgImJhciJ9fSwKKyAgICAgIE17ezAsICJmb28ifSwgezQyLCAiYmFyIn19
LCBNe3sxLCAiZm9vIn0sIHs0MiwgImJhciJ9fSwKKyAgICAgIE17ezEsICJmb28ifSwgezQzLCAi
YmFyIn19LCBNe3sxLCAiZm9vIn0sIHs0MywgImJheiJ9fSkpKTsKKworICB1c2luZyBNTSA9IHN0
ZDo6bXVsdGltYXA8aW50LCBzdGQ6OnN0cmluZz47CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlm
eVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoc3RkOjptYWtlX3R1cGxlKAorICAgICAg
TU17fSwgTU17ezAsICJmb28ifX0sIE1Ne3sxLCAiZm9vIn19LCBNTXt7MCwgImJhciJ9fSwgTU17
ezEsICJiYXIifX0sCisgICAgICBNTXt7MCwgImZvbyJ9LCB7MCwgImJhciJ9fSwgTU17ezAsICJi
YXIifSwgezAsICJmb28ifX0sCisgICAgICBNTXt7MCwgImZvbyJ9LCB7NDIsICJiYXIifX0sIE1N
e3sxLCAiZm9vIn0sIHs0MiwgImJhciJ9fSwKKyAgICAgIE1Ne3sxLCAiZm9vIn0sIHsxLCAiZm9v
In0sIHs0MywgImJhciJ9fSwgTU17ezEsICJmb28ifSwgezQzLCAiYmF6In19KSkpOworfQorCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPgotc3RydWN0IElzSGFzaENhbGxi
bGUgOiBzdGQ6OmZhbHNlX3R5cGUge307CitzdHJ1Y3QgSXNIYXNoQ2FsbGFibGUgOiBzdGQ6OmZh
bHNlX3R5cGUge307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IElzSGFzaENhbGxi
bGU8VCwgYWJzbDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxhYnNsOjpIYXNoPFQ+Pigp
KAorc3RydWN0IElzSGFzaENhbGxhYmxlPFQsIGFic2w6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRl
Y2x2YWw8YWJzbDo6SGFzaDxUPj4oKSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OmRlY2x2YWw8Y29uc3QgVCY+KCkpKT4+IDogc3RkOjp0cnVlX3R5cGUge307CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+CkBAIC0xMDUsMTAgKzQ0NCwxMSBAQCBURVNU
KElzSGFzaGFibGVUZXN0LCBWYWxpZEhhc2gpIHsKICAgRVhQRUNUX1RSVUUoc3RkOjppc19tb3Zl
X2NvbnN0cnVjdGlibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOwogICBFWFBFQ1RfVFJVRShh
YnNsOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOwogICBFWFBF
Q1RfVFJVRShhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUp
OwotICBFWFBFQ1RfVFJVRShJc0hhc2hDYWxsYmxlPGludD46OnZhbHVlKTsKKyAgRVhQRUNUX1RS
VUUoSXNIYXNoQ2FsbGFibGU8aW50Pjo6dmFsdWUpOwogICBFWFBFQ1RfVFJVRShJc0FnZ3JlZ2F0
ZUluaXRpYWxpemFibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOwogfQotI2lmIEFCU0xfSEFT
SF9JTlRFUk5BTF9DQU5fUE9JU09OXyAmJiAhZGVmaW5lZChfX0FQUExFX18pCisKKyNpZiBBQlNM
X01FVEFfSU5URVJOQUxfU1REX0hBU0hfU0ZJTkFFX0ZSSUVORExZXwogVEVTVChJc0hhc2hhYmxl
VGVzdCwgUG9pc29uSGFzaCkgewogICBzdHJ1Y3QgWCB7fTsKICAgRVhQRUNUX0ZBTFNFKChpc19o
YXNoYWJsZTxYPjo6dmFsdWUpKTsKQEAgLTExNywxMCArNDU3LDEwIEBAIFRFU1QoSXNIYXNoYWJs
ZVRlc3QsIFBvaXNvbkhhc2gpIHsKICAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNfbW92ZV9jb25zdHJ1
Y3RpYmxlPGFic2w6Okhhc2g8WD4+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9GQUxTRShhYnNsOjppc19j
b3B5X2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxYPj46OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNFKGFi
c2w6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpIYXNoPFg+Pjo6dmFsdWUpOwotICBFWFBFQ1Rf
RkFMU0UoSXNIYXNoQ2FsbGJsZTxYPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoSXNIYXNoQ2Fs
bGFibGU8WD46OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNFKElzQWdncmVnYXRlSW5pdGlhbGl6YWJs
ZTxhYnNsOjpIYXNoPFg+Pjo6dmFsdWUpOwogfQotI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJO
QUxfQ0FOX1BPSVNPTl8KKyNlbmRpZiAgLy8gQUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNIX1NG
SU5BRV9GUklFTkRMWV8KIAogLy8gSGFzaGFibGUgdHlwZXMKIC8vCkBAIC0xMjksNyArNDY5LDcg
QEAgVEVTVChJc0hhc2hhYmxlVGVzdCwgUG9pc29uSGFzaCkgewogc3RydWN0IE5vT3AgewogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaENvZGU+CiAgIGZyaWVuZCBIYXNoQ29kZSBBYnNsSGFzaFZh
bHVlKEhhc2hDb2RlIGgsIE5vT3AgbikgewotICAgIHJldHVybiBzdGQ6Om1vdmUoaCk7CisgICAg
cmV0dXJuIGg7CiAgIH0KIH07CiAKQEAgLTE1OSw4ICs0OTksMTYgQEAgc3RydWN0IENvbWJpbmVW
YXJpYWRpYyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludCg0KSk7CiAgIH0KIH07
CitlbnVtIGNsYXNzIEludm9rZVRhZyB7CisgIGtVbmlxdWVseVJlcHJlc2VudGVkLAorICBrSGFz
aFZhbHVlLAorI2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworICBr
TGVnYWN5SGFzaCwKKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZ
X0hBU0hfCisgIGtTdGRIYXNoLAorICBrTm9uZQorfTsKIAotdXNpbmcgSW52b2tlVGFnID0gYWJz
bDo6aGFzaF9pbnRlcm5hbDo6SW52b2tlSGFzaFRhZzsKIHRlbXBsYXRlIDxJbnZva2VUYWcgVD4K
IHVzaW5nIEludm9rZVRhZ0NvbnN0YW50ID0gc3RkOjppbnRlZ3JhbF9jb25zdGFudDxJbnZva2VU
YWcsIFQ+OwogCkBAIC0xNzUsNiArNTIzLDcgQEAgc3RydWN0IE1pblRhZzxhPiA6IEludm9rZVRh
Z0NvbnN0YW50PGE+IHt9OwogCiB0ZW1wbGF0ZSA8SW52b2tlVGFnLi4uIFRhZ3M+CiBzdHJ1Y3Qg
Q3VzdG9tSGFzaFR5cGUgeworICBleHBsaWNpdCBDdXN0b21IYXNoVHlwZShzaXplX3QgdmFsKSA6
IHZhbHVlKHZhbCkge30KICAgc2l6ZV90IHZhbHVlOwogfTsKIApAQCAtMjQxLDE3ICs1OTAsMTcg
QEAgdm9pZCBUZXN0Q3VzdG9tSGFzaFR5cGUoSW52b2tlVGFnQ29uc3RhbnQ8SW52b2tlVGFnOjpr
Tm9uZT4sIFQuLi4pIHsKICAgRVhQRUNUX1RSVUUoaXNfaGFzaGFibGU8Y29uc3QgdHlwZSY+KCkp
OwogCiAgIGNvbnN0IHNpemVfdCBvZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bWluKHtU
Ojp2YWx1ZS4uLn0pKTsKLSAgRVhQRUNUX0VRKFNweUhhc2godHlwZXs3fSksIFNweUhhc2goc2l6
ZV90ezcgKyBvZmZzZXR9KSk7CisgIEVYUEVDVF9FUShTcHlIYXNoKHR5cGUoNykpLCBTcHlIYXNo
KHNpemVfdHs3ICsgb2Zmc2V0fSkpOwogfQogCiB2b2lkIFRlc3RDdXN0b21IYXNoVHlwZShJbnZv
a2VUYWdDb25zdGFudDxJbnZva2VUYWc6OmtOb25lPikgewotI2lmIEFCU0xfSEFTSF9JTlRFUk5B
TF9DQU5fUE9JU09OXworI2lmIEFCU0xfTUVUQV9JTlRFUk5BTF9TVERfSEFTSF9TRklOQUVfRlJJ
RU5ETFlfCiAgIC8vIGlzX2hhc2hhYmxlIGlzIGZhbHNlIGlmIHdlIGRvbid0IHN1cHBvcnQgYW55
IG9mIHRoZSBob29rcy4KICAgdXNpbmcgdHlwZSA9IEN1c3RvbUhhc2hUeXBlPD47CiAgIEVYUEVD
VF9GQUxTRShpc19oYXNoYWJsZTx0eXBlPigpKTsKICAgRVhQRUNUX0ZBTFNFKGlzX2hhc2hhYmxl
PGNvbnN0IHR5cGU+KCkpOwogICBFWFBFQ1RfRkFMU0UoaXNfaGFzaGFibGU8Y29uc3QgdHlwZSY+
KCkpOwotI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8KKyNlbmRpZiAg
Ly8gQUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNIX1NGSU5BRV9GUklFTkRMWV8KIH0KIAogdGVt
cGxhdGUgPEludm9rZVRhZyBUYWcsIHR5cGVuYW1lLi4uIFQ+CkBAIC0yNzMsNyArNjIyLDcgQEAg
VEVTVChIYXNoVGVzdCwgTm9PcHNBcmVFcXVpdmFsZW50KSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIGNsYXNzIEhhc2hJbnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogfTsKLVRZUEVE
X1RFU1RfQ0FTRV9QKEhhc2hJbnRUZXN0KTsKK1RZUEVEX1RFU1RfU1VJVEVfUChIYXNoSW50VGVz
dCk7CiAKIFRZUEVEX1RFU1RfUChIYXNoSW50VGVzdCwgQmFzaWNVc2FnZSkgewogICBFWFBFQ1Rf
TkUoSGFzaDxOb09wPigpKHt9KSwgSGFzaDxUeXBlUGFyYW0+KCkoMCkpOwpAQCAtMzUyLDcgKzcw
MSw4IEBAIFRFU1QoSGFzaFRlc3QsIEhhc2hOb25VbmlxdWVseVJlcHJlc2VudGVkVHlwZSkgewog
fQogCiBURVNUKEhhc2hUZXN0LCBTdGFuZGFyZEhhc2hDb250YWluZXJVc2FnZSkgewotICBzdGQ6
OnVub3JkZXJlZF9tYXA8aW50LCBzdGQ6OnN0cmluZywgSGFzaDxpbnQ+PiBtYXAgPSB7ezAsICJm
b28ifSwgeyA0MiwgImJhciIgfX07CisgIHN0ZDo6dW5vcmRlcmVkX21hcDxpbnQsIHN0ZDo6c3Ry
aW5nLCBIYXNoPGludD4+IG1hcCA9IHt7MCwgImZvbyJ9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezQyLCAiYmFyIn19OwogCiAgIEVY
UEVDVF9ORShtYXAuZmluZCgwKSwgbWFwLmVuZCgpKTsKICAgRVhQRUNUX0VRKG1hcC5maW5kKDEp
LCBtYXAuZW5kKCkpOwpAQCAtNDIyLDQgKzc3MiwyNCBAQCBURVNUKEhhc2hUZXN0LCBUeXBlRXJh
c2VkKSB7CiAgICAgICAgICAgICBTcHlIYXNoKHN0ZDo6bWFrZV9wYWlyKHNpemVfdHs3fSwgMTcp
KSk7CiB9CiAKK3N0cnVjdCBWYWx1ZVdpdGhCb29sQ29udmVyc2lvbiB7CisgIG9wZXJhdG9yIGJv
b2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICBpbnQgaTsKK307CisKK30gIC8vIG5hbWVz
cGFjZQorbmFtZXNwYWNlIHN0ZCB7Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IGhhc2g8VmFsdWVXaXRo
Qm9vbENvbnZlcnNpb24+IHsKKyAgc2l6ZV90IG9wZXJhdG9yKCkoVmFsdWVXaXRoQm9vbENvbnZl
cnNpb24gdikgeyByZXR1cm4gdi5pOyB9Cit9OworfSAgLy8gbmFtZXNwYWNlIHN0ZAorCituYW1l
c3BhY2UgeworCitURVNUKEhhc2hUZXN0LCBEb2VzTm90VXNlSW1wbGljaXRDb252ZXJzaW9uc1Rv
Qm9vbCkgeworICBFWFBFQ1RfTkUoYWJzbDo6SGFzaDxWYWx1ZVdpdGhCb29sQ29udmVyc2lvbj4o
KShWYWx1ZVdpdGhCb29sQ29udmVyc2lvbnswfSksCisgICAgICAgICAgICBhYnNsOjpIYXNoPFZh
bHVlV2l0aEJvb2xDb252ZXJzaW9uPigpKFZhbHVlV2l0aEJvb2xDb252ZXJzaW9uezF9KSk7Cit9
CisKIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoX3Rlc3Rpbmcu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgKaW5kZXggMWUzY2RhNjQ0NjcuLmM0NWJjMTU0
OTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2hfdGVzdGluZy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hh
c2gvaGFzaF90ZXN0aW5nLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTkwLDcgKzkwLDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSD4KIC8vICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBCYWQyIHgpIHsK
IC8vICAgICAvLyBVc2VzIGEgYW5kIGIuCi0vLyAgICAgcmV0dXJuIEg6OmNvbWJpbmUoeC5hLCB4
LmIpOworLy8gICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHguYSwgeC5i
KTsKIC8vICAgfQogLy8gICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KEJhZDIgeCwgQmFkMiB5KSB7
CiAvLyAgICAgLy8gT25seSB1c2VzIGEuCkBAIC0xMDcsNyArMTA3LDcgQEAgbmFtZXNwYWNlIGFi
c2wgewogLy8gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KIC8vICAgZnJpZW5kIEggQWJzbEhhc2hW
YWx1ZShIIHN0YXRlLCBCYWQzIHgpIHsKIC8vICAgICAvLyBPbmx5IHVzZXMgYS4KLS8vICAgICBy
ZXR1cm4gSDo6Y29tYmluZSh4LmEpOworLy8gICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92
ZShzdGF0ZSksIHguYSk7CiAvLyAgIH0KIC8vICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShCYWQz
IHgsIEJhZDMgeSkgewogLy8gICAgIC8vIFVzZXMgYSBhbmQgYi4KQEAgLTEyMywxOSArMTIzLDIx
IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vICAgaW50ICpwLCBzaXplOwogLy8gICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSD4KIC8vICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBCYWQ0IHgp
IHsKLS8vICAgICByZXR1cm4gSDo6Y29tYmluZV9yYW5nZSh4LnAsIHgucCArIHguc2l6ZSk7Cisv
LyAgICAgcmV0dXJuIEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1vdmUoc3RhdGUpLCB4LnAs
IHgucCArIHguc2l6ZSk7CiAvLyAgIH0KIC8vICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShCYWQ0
IHgsIEJhZDQgeSkgewotLy8gICAgIHJldHVybiBzdGQ6OmVxdWFsKHgucCwgeC5wICsgeC5zaXpl
LCB5LnAsIHkucCArIHkuc2l6ZSk7CisvLyAgICAvLyBDb21wYXJlIHR3byByYW5nZXMgZm9yIGVx
dWFsaXR5LiBDKysxNCBjb2RlIGNhbiBpbnN0ZWFkIHVzZSBzdGQ6OmVxdWFsLgorLy8gICAgIHJl
dHVybiBhYnNsOjplcXVhbCh4LnAsIHgucCArIHguc2l6ZSwgeS5wLCB5LnAgKyB5LnNpemUpOwog
Ly8gICB9CiAvLyB9OwogLy8KIC8vIEFuIGVhc3kgc29sdXRpb24gdG8gdGhpcyBpcyB0byBjb21i
aW5lIHRoZSBzaXplIGFmdGVyIGNvbWJpbmluZyB0aGUgcmFuZ2UsCiAvLyBsaWtlIHNvOgotLy8g
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KLS8vICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0
YXRlLCBCYWQ0IHgpIHsKLS8vICAgICByZXR1cm4gSDo6Y29tYmluZShIOjpjb21iaW5lX3Jhbmdl
KHgucCwgeC5wICsgeC5zaXplKSwgeC5zaXplKTsKLS8vICAgfQorLy8gdGVtcGxhdGUgPHR5cGVu
YW1lIEg+CisvLyBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggc3RhdGUsIEJhZDQgeCkgeworLy8g
ICByZXR1cm4gSDo6Y29tYmluZSgKKy8vICAgICAgIEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6
Om1vdmUoc3RhdGUpLCB4LnAsIHgucCArIHguc2l6ZSksIHguc2l6ZSk7CisvLyB9CiAvLwogdGVt
cGxhdGUgPGludCYuLi4gRXhwbGljaXRCYXJyaWVyLCB0eXBlbmFtZSBDb250YWluZXI+CiBBQlNM
X01VU1RfVVNFX1JFU1VMVCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQKQEAgLTE4OCw3ICsxOTAs
OSBAQCBWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNvbnN0IENvbnRhaW5l
ciYgdmFsdWVzLCBFcSBlcXVhbHMpIHsKICAgc3RydWN0IEluZm8gewogICAgIGNvbnN0IFYmIHZh
bHVlOwogICAgIHNpemVfdCBpbmRleDsKLSAgICBzdGQ6OnN0cmluZyBUb1N0cmluZygpIGNvbnN0
IHsgcmV0dXJuIGFic2w6OnZpc2l0KFByaW50VmlzaXRvcntpbmRleH0sIHZhbHVlKTsgfQorICAg
IHN0ZDo6c3RyaW5nIFRvU3RyaW5nKCkgY29uc3QgeworICAgICAgcmV0dXJuIGFic2w6OnZpc2l0
KFByaW50VmlzaXRvcntpbmRleH0sIHZhbHVlKTsKKyAgICB9CiAgICAgU3B5SGFzaFN0YXRlIGV4
cGFuZCgpIGNvbnN0IHsgcmV0dXJuIGFic2w6OnZpc2l0KEV4cGFuZFZpc2l0b3J7fSwgdmFsdWUp
OyB9CiAgIH07CiAKQEAgLTIyNyw3ICsyMzEsOCBAQCBWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xI
YXNoQ29ycmVjdGx5KGNvbnN0IENvbnRhaW5lciYgdmFsdWVzLCBFcSBlcXVhbHMpIHsKICAgLy8g
Tm93IHdlIHZlcmlmeSB0aGF0IEFic2xIYXNoVmFsdWUgaXMgYWxzbyBjb3JyZWN0bHkgaW1wbGVt
ZW50ZWQuCiAKICAgZm9yIChjb25zdCBhdXRvJiBjIDogY2xhc3NlcykgewotICAgIC8vIEFsbCBl
bGVtZW50cyBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3MgbXVzdCBoYXZlIHRoZSBzYW1lIGhhc2gg
ZXhwYW5zaW9uLgorICAgIC8vIEFsbCBlbGVtZW50cyBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mg
bXVzdCBoYXZlIHRoZSBzYW1lIGhhc2gKKyAgICAvLyBleHBhbnNpb24uCiAgICAgY29uc3QgU3B5
SGFzaFN0YXRlIGV4cGVjdGVkID0gY1swXS5leHBhbmQoKTsKICAgICBmb3IgKGNvbnN0IEluZm8m
IHYgOiBjKSB7CiAgICAgICBpZiAodi5leHBhbmQoKSAhPSB2LmV4cGFuZCgpKSB7CkBAIC0yODUs
NyArMjkwLDcgQEAgc3RydWN0IFR5cGVTZXQgewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IFQ+Ci1zdHJ1Y3QgTWFrZVR5cGVTZXQgOiBUeXBlU2V0PD57fTsKK3N0cnVjdCBNYWtlVHlwZVNl
dCA6IFR5cGVTZXQ8PiB7fTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBUcz4K
IHN0cnVjdCBNYWtlVHlwZVNldDxULCBUcy4uLj4gOiBNYWtlVHlwZVNldDxUcy4uLj46OnRlbXBs
YXRlIEluc2VydDxUPjo6dHlwZSB7fTsKIApAQCAtMzQ2LDggKzM1MSw3IEBAIHRlbXBsYXRlIDxp
bnQmLi4uLCB0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIEVxPgogQUJTTF9NVVNUX1VTRV9S
RVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CiBWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xI
YXNoQ29ycmVjdGx5KGNvbnN0IENvbnRhaW5lciYgdmFsdWVzLCBFcSBlcXVhbHMpIHsKICAgcmV0
dXJuIGhhc2hfaW50ZXJuYWw6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHko
Ci0gICAgICBoYXNoX2ludGVybmFsOjpDb250YWluZXJBc1ZlY3RvcjxDb250YWluZXI+OjpEbyh2
YWx1ZXMpLAotICAgICAgZXF1YWxzKTsKKyAgICAgIGhhc2hfaW50ZXJuYWw6OkNvbnRhaW5lckFz
VmVjdG9yPENvbnRhaW5lcj46OkRvKHZhbHVlcyksIGVxdWFscyk7CiB9CiAKIHRlbXBsYXRlIDxp
bnQmLi4uLCB0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmNjCmluZGV4IDhmNzJkZDFiN2QwLi5kYzc2
NTBhNzllMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtMzQwLDI1MSArMzQwLDUgQEAgdWludDY0X3QgQ2l0eUhhc2g2NFdpdGhT
ZWVkcyhjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50NjRfdCBzZWVkMCwKICAgcmV0dXJu
IEhhc2hMZW4xNihDaXR5SGFzaDY0KHMsIGxlbikgLSBzZWVkMCwgc2VlZDEpOwogfQogCi0vLyBB
IHN1YnJvdXRpbmUgZm9yIENpdHlIYXNoMTI4KCkuICBSZXR1cm5zIGEgZGVjZW50IDEyOC1iaXQg
aGFzaCBmb3Igc3RyaW5ncwotLy8gb2YgYW55IGxlbmd0aCByZXByZXNlbnRhYmxlIGluIHNpZ25l
ZCBsb25nLiAgQmFzZWQgb24gQ2l0eSBhbmQgTXVybXVyLgotc3RhdGljIHVpbnQxMjggQ2l0eU11
cm11cihjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50MTI4IHNlZWQpIHsKLSAgdWludDY0
X3QgYSA9IFVpbnQxMjhMb3c2NChzZWVkKTsKLSAgdWludDY0X3QgYiA9IFVpbnQxMjhIaWdoNjQo
c2VlZCk7Ci0gIHVpbnQ2NF90IGMgPSAwOwotICB1aW50NjRfdCBkID0gMDsKLSAgaW50NjRfdCBs
ID0gbGVuIC0gMTY7Ci0gIGlmIChsIDw9IDApIHsgIC8vIGxlbiA8PSAxNgotICAgIGEgPSBTaGlm
dE1peChhICogazEpICogazE7Ci0gICAgYyA9IGIgKiBrMSArIEhhc2hMZW4wdG8xNihzLCBsZW4p
OwotICAgIGQgPSBTaGlmdE1peChhICsgKGxlbiA+PSA4ID8gRmV0Y2g2NChzKSA6IGMpKTsKLSAg
fSBlbHNlIHsgIC8vIGxlbiA+IDE2Ci0gICAgYyA9IEhhc2hMZW4xNihGZXRjaDY0KHMgKyBsZW4g
LSA4KSArIGsxLCBhKTsKLSAgICBkID0gSGFzaExlbjE2KGIgKyBsZW4sIGMgKyBGZXRjaDY0KHMg
KyBsZW4gLSAxNikpOwotICAgIGEgKz0gZDsKLSAgICBkbyB7Ci0gICAgICBhIF49IFNoaWZ0TWl4
KEZldGNoNjQocykgKiBrMSkgKiBrMTsKLSAgICAgIGEgKj0gazE7Ci0gICAgICBiIF49IGE7Ci0g
ICAgICBjIF49IFNoaWZ0TWl4KEZldGNoNjQocyArIDgpICogazEpICogazE7Ci0gICAgICBjICo9
IGsxOwotICAgICAgZCBePSBjOwotICAgICAgcyArPSAxNjsKLSAgICAgIGwgLT0gMTY7Ci0gICAg
fSB3aGlsZSAobCA+IDApOwotICB9Ci0gIGEgPSBIYXNoTGVuMTYoYSwgYyk7Ci0gIGIgPSBIYXNo
TGVuMTYoZCwgYik7Ci0gIHJldHVybiB1aW50MTI4KGEgXiBiLCBIYXNoTGVuMTYoYiwgYSkpOwot
fQotCi11aW50MTI4IENpdHlIYXNoMTI4V2l0aFNlZWQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxl
biwgdWludDEyOCBzZWVkKSB7Ci0gIGlmIChsZW4gPCAxMjgpIHsKLSAgICByZXR1cm4gQ2l0eU11
cm11cihzLCBsZW4sIHNlZWQpOwotICB9Ci0KLSAgLy8gV2UgZXhwZWN0IGxlbiA+PSAxMjggdG8g
YmUgdGhlIGNvbW1vbiBjYXNlLiAgS2VlcCA1NiBieXRlcyBvZiBzdGF0ZToKLSAgLy8gdiwgdywg
eCwgeSwgYW5kIHouCi0gIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IHYsIHc7Ci0gIHVp
bnQ2NF90IHggPSBVaW50MTI4TG93NjQoc2VlZCk7Ci0gIHVpbnQ2NF90IHkgPSBVaW50MTI4SGln
aDY0KHNlZWQpOwotICB1aW50NjRfdCB6ID0gbGVuICogazE7Ci0gIHYuZmlyc3QgPSBSb3RhdGUo
eSBeIGsxLCA0OSkgKiBrMSArIEZldGNoNjQocyk7Ci0gIHYuc2Vjb25kID0gUm90YXRlKHYuZmly
c3QsIDQyKSAqIGsxICsgRmV0Y2g2NChzICsgOCk7Ci0gIHcuZmlyc3QgPSBSb3RhdGUoeSArIHos
IDM1KSAqIGsxICsgeDsKLSAgdy5zZWNvbmQgPSBSb3RhdGUoeCArIEZldGNoNjQocyArIDg4KSwg
NTMpICogazE7Ci0KLSAgLy8gVGhpcyBpcyB0aGUgc2FtZSBpbm5lciBsb29wIGFzIENpdHlIYXNo
NjQoKSwgbWFudWFsbHkgdW5yb2xsZWQuCi0gIGRvIHsKLSAgICB4ID0gUm90YXRlKHggKyB5ICsg
di5maXJzdCArIEZldGNoNjQocyArIDgpLCAzNykgKiBrMTsKLSAgICB5ID0gUm90YXRlKHkgKyB2
LnNlY29uZCArIEZldGNoNjQocyArIDQ4KSwgNDIpICogazE7Ci0gICAgeCBePSB3LnNlY29uZDsK
LSAgICB5ICs9IHYuZmlyc3QgKyBGZXRjaDY0KHMgKyA0MCk7Ci0gICAgeiA9IFJvdGF0ZSh6ICsg
dy5maXJzdCwgMzMpICogazE7Ci0gICAgdiA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocywgdi5z
ZWNvbmQgKiBrMSwgeCArIHcuZmlyc3QpOwotICAgIHcgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRz
KHMgKyAzMiwgeiArIHcuc2Vjb25kLCB5ICsgRmV0Y2g2NChzICsgMTYpKTsKLSAgICBzdGQ6OnN3
YXAoeiwgeCk7Ci0gICAgcyArPSA2NDsKLSAgICB4ID0gUm90YXRlKHggKyB5ICsgdi5maXJzdCAr
IEZldGNoNjQocyArIDgpLCAzNykgKiBrMTsKLSAgICB5ID0gUm90YXRlKHkgKyB2LnNlY29uZCAr
IEZldGNoNjQocyArIDQ4KSwgNDIpICogazE7Ci0gICAgeCBePSB3LnNlY29uZDsKLSAgICB5ICs9
IHYuZmlyc3QgKyBGZXRjaDY0KHMgKyA0MCk7Ci0gICAgeiA9IFJvdGF0ZSh6ICsgdy5maXJzdCwg
MzMpICogazE7Ci0gICAgdiA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocywgdi5zZWNvbmQgKiBr
MSwgeCArIHcuZmlyc3QpOwotICAgIHcgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMgKyAzMiwg
eiArIHcuc2Vjb25kLCB5ICsgRmV0Y2g2NChzICsgMTYpKTsKLSAgICBzdGQ6OnN3YXAoeiwgeCk7
Ci0gICAgcyArPSA2NDsKLSAgICBsZW4gLT0gMTI4OwotICB9IHdoaWxlIChBQlNMX1BSRURJQ1Rf
VFJVRShsZW4gPj0gMTI4KSk7Ci0gIHggKz0gUm90YXRlKHYuZmlyc3QgKyB6LCA0OSkgKiBrMDsK
LSAgeSA9IHkgKiBrMCArIFJvdGF0ZSh3LnNlY29uZCwgMzcpOwotICB6ID0geiAqIGswICsgUm90
YXRlKHcuZmlyc3QsIDI3KTsKLSAgdy5maXJzdCAqPSA5OwotICB2LmZpcnN0ICo9IGswOwotICAv
LyBJZiAwIDwgbGVuIDwgMTI4LCBoYXNoIHVwIHRvIDQgY2h1bmtzIG9mIDMyIGJ5dGVzIGVhY2gg
ZnJvbSB0aGUgZW5kIG9mIHMuCi0gIGZvciAoc2l6ZV90IHRhaWxfZG9uZSA9IDA7IHRhaWxfZG9u
ZSA8IGxlbjspIHsKLSAgICB0YWlsX2RvbmUgKz0gMzI7Ci0gICAgeSA9IFJvdGF0ZSh4ICsgeSwg
NDIpICogazAgKyB2LnNlY29uZDsKLSAgICB3LmZpcnN0ICs9IEZldGNoNjQocyArIGxlbiAtIHRh
aWxfZG9uZSArIDE2KTsKLSAgICB4ID0geCAqIGswICsgdy5maXJzdDsKLSAgICB6ICs9IHcuc2Vj
b25kICsgRmV0Y2g2NChzICsgbGVuIC0gdGFpbF9kb25lKTsKLSAgICB3LnNlY29uZCArPSB2LmZp
cnN0OwotICAgIHYgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMgKyBsZW4gLSB0YWlsX2RvbmUs
IHYuZmlyc3QgKyB6LCB2LnNlY29uZCk7Ci0gICAgdi5maXJzdCAqPSBrMDsKLSAgfQotICAvLyBB
dCB0aGlzIHBvaW50IG91ciA1NiBieXRlcyBvZiBzdGF0ZSBzaG91bGQgY29udGFpbiBtb3JlIHRo
YW4KLSAgLy8gZW5vdWdoIGluZm9ybWF0aW9uIGZvciBhIHN0cm9uZyAxMjgtYml0IGhhc2guICBX
ZSB1c2UgdHdvCi0gIC8vIGRpZmZlcmVudCA1Ni1ieXRlLXRvLTgtYnl0ZSBoYXNoZXMgdG8gZ2V0
IGEgMTYtYnl0ZSBmaW5hbCByZXN1bHQuCi0gIHggPSBIYXNoTGVuMTYoeCwgdi5maXJzdCk7Ci0g
IHkgPSBIYXNoTGVuMTYoeSArIHosIHcuZmlyc3QpOwotICByZXR1cm4gdWludDEyOChIYXNoTGVu
MTYoeCArIHYuc2Vjb25kLCB3LnNlY29uZCkgKyB5LAotICAgICAgICAgICAgICAgICBIYXNoTGVu
MTYoeCArIHcuc2Vjb25kLCB5ICsgdi5zZWNvbmQpKTsKLX0KLQotdWludDEyOCBDaXR5SGFzaDEy
OChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7Ci0gIHJldHVybiBsZW4gPj0gMTYKLSAgICAg
ICAgICAgICA/IENpdHlIYXNoMTI4V2l0aFNlZWQocyArIDE2LCBsZW4gLSAxNiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDEyOChGZXRjaDY0KHMpLCBGZXRjaDY0KHMg
KyA4KSArIGswKSkKLSAgICAgICAgICAgICA6IENpdHlIYXNoMTI4V2l0aFNlZWQocywgbGVuLCB1
aW50MTI4KGswLCBrMSkpOwotfQogfSAgLy8gbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwKIH0gIC8v
IG5hbWVzcGFjZSBhYnNsCi0KLSNpZmRlZiBfX1NTRTRfMl9fCi0jaW5jbHVkZSA8bm1taW50cmlu
Lmg+Ci0jaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfY3JjLmgiCi0KLW5hbWVzcGFj
ZSBhYnNsIHsKLW5hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsKLQotLy8gUmVxdWlyZXMgbGVuID49
IDI0MC4KLXN0YXRpYyB2b2lkIENpdHlIYXNoQ3JjMjU2TG9uZyhjb25zdCBjaGFyICpzLCBzaXpl
X3QgbGVuLCB1aW50MzJfdCBzZWVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ2NF90ICpyZXN1bHQpIHsKLSAgdWludDY0X3QgYSA9IEZldGNoNjQocyArIDU2KSArIGswOwot
ICB1aW50NjRfdCBiID0gRmV0Y2g2NChzICsgOTYpICsgazA7Ci0gIHVpbnQ2NF90IGMgPSByZXN1
bHRbMF0gPSBIYXNoTGVuMTYoYiwgbGVuKTsKLSAgdWludDY0X3QgZCA9IHJlc3VsdFsxXSA9IEZl
dGNoNjQocyArIDEyMCkgKiBrMCArIGxlbjsKLSAgdWludDY0X3QgZSA9IEZldGNoNjQocyArIDE4
NCkgKyBzZWVkOwotICB1aW50NjRfdCBmID0gMDsKLSAgdWludDY0X3QgZyA9IDA7Ci0gIHVpbnQ2
NF90IGggPSBjICsgZDsKLSAgdWludDY0X3QgeCA9IHNlZWQ7Ci0gIHVpbnQ2NF90IHkgPSAwOwot
ICB1aW50NjRfdCB6ID0gMDsKLQotICAvLyAyNDAgYnl0ZXMgb2YgaW5wdXQgcGVyIGl0ZXIuCi0g
IHNpemVfdCBpdGVycyA9IGxlbiAvIDI0MDsKLSAgbGVuIC09IGl0ZXJzICogMjQwOwotICBkbyB7
Ci0jdW5kZWYgQ0hVTksKLSNkZWZpbmUgQ0hVTksocikgICAgICAgICAgICAgICBcCi0gIFBFUk1V
VEUzKHgsIHosIHkpOyAgICAgICAgICAgXAotICBiICs9IEZldGNoNjQocyk7ICAgICAgICAgICAg
IFwKLSAgYyArPSBGZXRjaDY0KHMgKyA4KTsgICAgICAgICBcCi0gIGQgKz0gRmV0Y2g2NChzICsg
MTYpOyAgICAgICAgXAotICBlICs9IEZldGNoNjQocyArIDI0KTsgICAgICAgIFwKLSAgZiArPSBG
ZXRjaDY0KHMgKyAzMik7ICAgICAgICBcCi0gIGEgKz0gYjsgICAgICAgICAgICAgICAgICAgICAg
XAotICBoICs9IGY7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgYiArPSBjOyAgICAgICAgICAg
ICAgICAgICAgICBcCi0gIGYgKz0gZDsgICAgICAgICAgICAgICAgICAgICAgXAotICBnICs9IGU7
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZSArPSB6OyAgICAgICAgICAgICAgICAgICAgICBc
Ci0gIGcgKz0geDsgICAgICAgICAgICAgICAgICAgICAgXAotICB6ID0gX21tX2NyYzMyX3U2NCh6
LCBiICsgZyk7IFwKLSAgeSA9IF9tbV9jcmMzMl91NjQoeSwgZSArIGgpOyBcCi0gIHggPSBfbW1f
Y3JjMzJfdTY0KHgsIGYgKyBhKTsgXAotICBlID0gUm90YXRlKGUsIHIpOyAgICAgICAgICAgIFwK
LSAgYyArPSBlOyAgICAgICAgICAgICAgICAgICAgICBcCi0gIHMgKz0gNDAKLQotICAgIENIVU5L
KDApOwotICAgIFBFUk1VVEUzKGEsIGgsIGMpOwotICAgIENIVU5LKDMzKTsKLSAgICBQRVJNVVRF
MyhhLCBoLCBmKTsKLSAgICBDSFVOSygwKTsKLSAgICBQRVJNVVRFMyhiLCBoLCBmKTsKLSAgICBD
SFVOSyg0Mik7Ci0gICAgUEVSTVVURTMoYiwgaCwgZCk7Ci0gICAgQ0hVTksoMCk7Ci0gICAgUEVS
TVVURTMoYiwgaCwgZSk7Ci0gICAgQ0hVTksoMzMpOwotICAgIFBFUk1VVEUzKGEsIGgsIGUpOwot
ICB9IHdoaWxlICgtLWl0ZXJzID4gMCk7Ci0KLSAgd2hpbGUgKGxlbiA+PSA0MCkgewotICAgIENI
VU5LKDI5KTsKLSAgICBlIF49IFJvdGF0ZShhLCAyMCk7Ci0gICAgaCArPSBSb3RhdGUoYiwgMzAp
OwotICAgIGcgXj0gUm90YXRlKGMsIDQwKTsKLSAgICBmICs9IFJvdGF0ZShkLCAzNCk7Ci0gICAg
UEVSTVVURTMoYywgaCwgZyk7Ci0gICAgbGVuIC09IDQwOwotICB9Ci0gIGlmIChsZW4gPiAwKSB7
Ci0gICAgcyA9IHMgKyBsZW4gLSA0MDsKLSAgICBDSFVOSygzMyk7Ci0gICAgZSBePSBSb3RhdGUo
YSwgNDMpOwotICAgIGggKz0gUm90YXRlKGIsIDQyKTsKLSAgICBnIF49IFJvdGF0ZShjLCA0MSk7
Ci0gICAgZiArPSBSb3RhdGUoZCwgNDApOwotICB9Ci0gIHJlc3VsdFswXSBePSBoOwotICByZXN1
bHRbMV0gXj0gZzsKLSAgZyArPSBoOwotICBhID0gSGFzaExlbjE2KGEsIGcgKyB6KTsKLSAgeCAr
PSB5IDw8IDMyOwotICBiICs9IHg7Ci0gIGMgPSBIYXNoTGVuMTYoYywgeikgKyBoOwotICBkID0g
SGFzaExlbjE2KGQsIGUgKyByZXN1bHRbMF0pOwotICBnICs9IGU7Ci0gIGggKz0gSGFzaExlbjE2
KHgsIGYpOwotICBlID0gSGFzaExlbjE2KGEsIGQpICsgZzsKLSAgeiA9IEhhc2hMZW4xNihiLCBj
KSArIGE7Ci0gIHkgPSBIYXNoTGVuMTYoZywgaCkgKyBjOwotICByZXN1bHRbMF0gPSBlICsgeiAr
IHkgKyB4OwotICBhID0gU2hpZnRNaXgoKGEgKyB5KSAqIGswKSAqIGswICsgYjsKLSAgcmVzdWx0
WzFdICs9IGEgKyByZXN1bHRbMF07Ci0gIGEgPSBTaGlmdE1peChhICogazApICogazAgKyBjOwot
ICByZXN1bHRbMl0gPSBhICsgcmVzdWx0WzFdOwotICBhID0gU2hpZnRNaXgoKGEgKyBlKSAqIGsw
KSAqIGswOwotICByZXN1bHRbM10gPSBhICsgcmVzdWx0WzJdOwotfQotCi0vLyBSZXF1aXJlcyBs
ZW4gPCAyNDAuCi1zdGF0aWMgdm9pZCBDaXR5SGFzaENyYzI1NlNob3J0KGNvbnN0IGNoYXIgKnMs
IHNpemVfdCBsZW4sIHVpbnQ2NF90ICpyZXN1bHQpIHsKLSAgY2hhciBidWZbMjQwXTsKLSAgbWVt
Y3B5KGJ1ZiwgcywgbGVuKTsKLSAgbWVtc2V0KGJ1ZiArIGxlbiwgMCwgMjQwIC0gbGVuKTsKLSAg
Q2l0eUhhc2hDcmMyNTZMb25nKGJ1ZiwgMjQwLCB+c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxlbiks
IHJlc3VsdCk7Ci19Ci0KLXZvaWQgQ2l0eUhhc2hDcmMyNTYoY29uc3QgY2hhciAqcywgc2l6ZV90
IGxlbiwgdWludDY0X3QgKnJlc3VsdCkgewotICBpZiAoQUJTTF9QUkVESUNUX1RSVUUobGVuID49
IDI0MCkpIHsKLSAgICBDaXR5SGFzaENyYzI1NkxvbmcocywgbGVuLCAwLCByZXN1bHQpOwotICB9
IGVsc2UgewotICAgIENpdHlIYXNoQ3JjMjU2U2hvcnQocywgbGVuLCByZXN1bHQpOwotICB9Ci19
Ci0KLXVpbnQxMjggQ2l0eUhhc2hDcmMxMjhXaXRoU2VlZChjb25zdCBjaGFyICpzLCBzaXplX3Qg
bGVuLCB1aW50MTI4IHNlZWQpIHsKLSAgaWYgKGxlbiA8PSA5MDApIHsKLSAgICByZXR1cm4gQ2l0
eUhhc2gxMjhXaXRoU2VlZChzLCBsZW4sIHNlZWQpOwotICB9IGVsc2UgewotICAgIHVpbnQ2NF90
IHJlc3VsdFs0XTsKLSAgICBDaXR5SGFzaENyYzI1NihzLCBsZW4sIHJlc3VsdCk7Ci0gICAgdWlu
dDY0X3QgdSA9IFVpbnQxMjhIaWdoNjQoc2VlZCkgKyByZXN1bHRbMF07Ci0gICAgdWludDY0X3Qg
diA9IFVpbnQxMjhMb3c2NChzZWVkKSArIHJlc3VsdFsxXTsKLSAgICByZXR1cm4gdWludDEyOChI
YXNoTGVuMTYodSwgdiArIHJlc3VsdFsyXSksCi0gICAgICAgICAgICAgICAgICAgSGFzaExlbjE2
KFJvdGF0ZSh2LCAzMiksIHUgKiBrMCArIHJlc3VsdFszXSkpOwotICB9Ci19Ci0KLXVpbnQxMjgg
Q2l0eUhhc2hDcmMxMjgoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikgewotICBpZiAobGVuIDw9
IDkwMCkgewotICAgIHJldHVybiBDaXR5SGFzaDEyOChzLCBsZW4pOwotICB9IGVsc2UgewotICAg
IHVpbnQ2NF90IHJlc3VsdFs0XTsKLSAgICBDaXR5SGFzaENyYzI1NihzLCBsZW4sIHJlc3VsdCk7
Ci0gICAgcmV0dXJuIHVpbnQxMjgocmVzdWx0WzJdLCByZXN1bHRbM10pOwotICB9Ci19Ci0KLX0g
IC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgYWJzbAotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9p
bnRlcm5hbC9jaXR5LmgKaW5kZXggNTViMzdiODc1ZjAuLmI0M2QzNDA3ZGNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2Np
dHkuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTIsNyAr
MTIsNyBAQAogLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CiAvLwotLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2NpdHloYXNoLworLy8gaHR0cHM6Ly9j
b2RlLmdvb2dsZS5jb20vcC9jaXR5aGFzaC8KIC8vCiAvLyBUaGlzIGZpbGUgcHJvdmlkZXMgYSBm
ZXcgZnVuY3Rpb25zIGZvciBoYXNoaW5nIHN0cmluZ3MuICBBbGwgb2YgdGhlbSBhcmUKIC8vIGhp
Z2gtcXVhbGl0eSBmdW5jdGlvbnMgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSBwYXNzIHN0YW5kYXJk
IHRlc3RzIHN1Y2gKQEAgLTIzLDE1ICsyMyw2IEBACiAvLyBpcyBNdXJtdXIzLiAgRm9yIDY0LWJp
dCB4ODYgY29kZSwgQ2l0eUhhc2g2NCBpcyBhbiBleGNlbGxlbnQgY2hvaWNlIGZvciBoYXNoCiAv
LyB0YWJsZXMgYW5kIG1vc3Qgb3RoZXIgaGFzaGluZyAoZXhjbHVkaW5nIGNyeXB0b2dyYXBoeSku
CiAvLwotLy8gRm9yIDY0LWJpdCB4ODYgY29kZSwgb24gbG9uZyBzdHJpbmdzLCB0aGUgcGljdHVy
ZSBpcyBtb3JlIGNvbXBsaWNhdGVkLgotLy8gT24gbWFueSByZWNlbnQgSW50ZWwgQ1BVcywgc3Vj
aCBhcyBOZWhhbGVtLCBXZXN0bWVyZSwgU2FuZHkgQnJpZGdlLCBldGMuLAotLy8gQ2l0eUhhc2hD
cmMxMjggYXBwZWFycyB0byBiZSBmYXN0ZXIgdGhhbiBhbGwgY29tcGV0aXRvcnMgb2YgY29tcGFy
YWJsZQotLy8gcXVhbGl0eS4gIENpdHlIYXNoMTI4IGlzIGFsc28gZ29vZCBidXQgbm90IHF1aXRl
IGFzIGZhc3QuICBXZSBiZWxpZXZlIG91cgotLy8gbmVhcmVzdCBjb21wZXRpdG9yIGlzIEJvYiBK
ZW5raW5zJyBTcG9va3kuICBXZSBkb24ndCBoYXZlIGdyZWF0IGRhdGEgZm9yCi0vLyBvdGhlciA2
NC1iaXQgQ1BVcywgYnV0IGZvciBsb25nIHN0cmluZ3Mgd2Uga25vdyB0aGF0IFNwb29reSBpcyBz
bGlnaHRseQotLy8gZmFzdGVyIHRoYW4gQ2l0eUhhc2ggb24gc29tZSByZWxhdGl2ZWx5IHJlY2Vu
dCBBTUQgeDg2LTY0IENQVXMsIGZvciBleGFtcGxlLgotLy8gTm90ZSB0aGF0IENpdHlIYXNoQ3Jj
MTI4IGlzIGRlY2xhcmVkIGluIGNpdHljcmMuaC4KLS8vCiAvLyBGb3IgMzItYml0IHg4NiBjb2Rl
LCB3ZSBkb24ndCBrbm93IG9mIGFueXRoaW5nIGZhc3RlciB0aGFuIENpdHlIYXNoMzIgdGhhdAog
Ly8gaXMgb2YgY29tcGFyYWJsZSBxdWFsaXR5LiAgV2UgYmVsaWV2ZSBvdXIgbmVhcmVzdCBjb21w
ZXRpdG9yIGlzIE11cm11cjNBLgogLy8gKE9uIDY0LWJpdCBDUFVzLCBpdCBpcyB0eXBpY2FsbHkg
ZmFzdGVyIHRvIHVzZSB0aGUgb3RoZXIgQ2l0eUhhc2ggdmFyaWFudHMuKQpAQCAtNTgsNyArNDks
NiBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gZm9yIHNpemVfdC4KICNpbmNsdWRlIDx1dGls
aXR5PgogCi0KIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsKIApA
QCAtNzksMTMgKzY5LDYgQEAgdWludDY0X3QgQ2l0eUhhc2g2NFdpdGhTZWVkKGNvbnN0IGNoYXIg
KnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90IHNlZWQpOwogdWludDY0X3QgQ2l0eUhhc2g2NFdpdGhT
ZWVkcyhjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50NjRfdCBzZWVkMCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNlZWQxKTsKIAotLy8gSGFzaCBmdW5jdGlvbiBm
b3IgYSBieXRlIGFycmF5LgotdWludDEyOCBDaXR5SGFzaDEyOChjb25zdCBjaGFyICpzLCBzaXpl
X3QgbGVuKTsKLQotLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LiAgRm9yIGNvbnZl
bmllbmNlLCBhIDEyOC1iaXQgc2VlZCBpcyBhbHNvCi0vLyBoYXNoZWQgaW50byB0aGUgcmVzdWx0
LgotdWludDEyOCBDaXR5SGFzaDEyOFdpdGhTZWVkKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4s
IHVpbnQxMjggc2VlZCk7Ci0KIC8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4gIE1v
c3QgdXNlZnVsIGluIDMyLWJpdCBiaW5hcmllcy4KIHVpbnQzMl90IENpdHlIYXNoMzIoY29uc3Qg
Y2hhciAqcywgc2l6ZV90IGxlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwv
Y2l0eV9jcmMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV9jcmMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNmJlNjU1N2QyMTMuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hh
c2gvaW50ZXJuYWwvY2l0eV9jcmMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8v
IENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KLS8vCi0vLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLS8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KLS8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0vLwotLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQotLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLS8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAotLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0vLwotLy8gVGhpcyBmaWxlIGRl
Y2xhcmVzIHRoZSBzdWJzZXQgb2YgdGhlIENpdHlIYXNoIGZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUK
LS8vIF9tbV9jcmMzMl91NjQoKS4gIFNlZSB0aGUgQ2l0eUhhc2ggUkVBRE1FIGZvciBkZXRhaWxz
LgotLy8KLS8vIEZ1bmN0aW9ucyBpbiB0aGUgQ2l0eUhhc2ggZmFtaWx5IGFyZSBub3Qgc3VpdGFi
bGUgZm9yIGNyeXB0b2dyYXBoeS4KLQotI2lmbmRlZiBBQlNMX0hBU0hfSU5URVJOQUxfQ0lUWV9D
UkNfSF8KLSNkZWZpbmUgQUJTTF9IQVNIX0lOVEVSTkFMX0NJVFlfQ1JDX0hfCi0KLSNpbmNsdWRl
ICJhYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oIgotCi1uYW1lc3BhY2UgYWJzbCB7Ci1uYW1lc3Bh
Y2UgaGFzaF9pbnRlcm5hbCB7Ci0KLS8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4K
LXVpbnQxMjggQ2l0eUhhc2hDcmMxMjgoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbik7Ci0KLS8v
IEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4gIEZvciBjb252ZW5pZW5jZSwgYSAxMjgt
Yml0IHNlZWQgaXMgYWxzbwotLy8gaGFzaGVkIGludG8gdGhlIHJlc3VsdC4KLXVpbnQxMjggQ2l0
eUhhc2hDcmMxMjhXaXRoU2VlZChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50MTI4IHNl
ZWQpOwotCi0vLyBIYXNoIGZ1bmN0aW9uIGZvciBhIGJ5dGUgYXJyYXkuICBTZXRzIHJlc3VsdFsw
XSAuLi4gcmVzdWx0WzNdLgotdm9pZCBDaXR5SGFzaENyYzI1Nihjb25zdCBjaGFyICpzLCBzaXpl
X3QgbGVuLCB1aW50NjRfdCAqcmVzdWx0KTsKLQotfSAgLy8gbmFtZXNwYWNlIGhhc2hfaW50ZXJu
YWwKLX0gIC8vIG5hbWVzcGFjZSBhYnNsCi0KLSNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFM
X0NJVFlfQ1JDX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV90ZXN0LmNjCmluZGV4IDY3OGRhNTNkMzRkLi43
MWI0ZWNjZWNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5X3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE4LDkgKzE4LDYgQEAKICNpbmNsdWRlIDxjc3Rk
aW8+CiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpZmRl
ZiBfX1NTRTRfMl9fCi0jaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfY3JjLmgiCi0j
ZW5kaWYKIAogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgewpAQCAt
MjgsNyArMjUsNiBAQCBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgazAgPSAweGMzYTVjODVjOTdjYjMxMjdVTEw7CiBzdGF0aWMgY29uc3QgdWludDY0X3Qg
a1NlZWQwID0gMTIzNDU2NzsKIHN0YXRpYyBjb25zdCB1aW50NjRfdCBrU2VlZDEgPSBrMDsKLXN0
YXRpYyBjb25zdCB1aW50MTI4IGtTZWVkMTI4KGtTZWVkMCwga1NlZWQxKTsKIHN0YXRpYyBjb25z
dCBpbnQga0RhdGFTaXplID0gMSA8PCAyMDsKIHN0YXRpYyBjb25zdCBpbnQga1Rlc3RTaXplID0g
MzAwOwogCkBAIC00OSwxNzU0ICs0NSw1MzkgQEAgdm9pZCBzZXR1cCgpIHsKIH0KIAogI2RlZmlu
ZSBDKHgpIDB4IyN4IyNVTEwKLXN0YXRpYyBjb25zdCB1aW50NjRfdCB0ZXN0ZGF0YVtrVGVzdFNp
emVdWzE2XSA9IHsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCB0ZXN0ZGF0YVtrVGVzdFNpemVdWzRd
ID0gewogICAgIHtDKDlhZTE2YTNiMmY5MDQwNGYpLCBDKDc1MTA2ZGI4OTAyMzdhNGEpLCBDKDNm
ZWFjNWY2MzYwMzk3NjYpLAotICAgICBDKDNkZjA5ZGZjNjRjMDlhMmIpLCBDKDNjYjU0MGMzOTJl
NTFlMjkpLCBDKDZiNTYzNDNmZWFjMDY2MyksCi0gICAgIEMoNWI3YmM1MGZkOGU4YWQ5MiksIEMo
M2RmMDlkZmM2NGMwOWEyYiksIEMoM2NiNTQwYzM5MmU1MWUyOSksCi0gICAgIEMoNmI1NjM0M2Zl
YWMwNjYzKSwgQyg1YjdiYzUwZmQ4ZThhZDkyKSwgQyg5NTE2MmYyNGU2YTVmOTMwKSwKLSAgICAg
Qyg2ODA4YmRmNGYxZWIwNmUwKSwgQyhiM2IxZjNhNjdiNjI0ZDgyKSwgQyhjOWE2MmYxMmJkNGNk
ODBiKSwKICAgICAgQyhkYzU2ZDE3YSl9LAogICAgIHtDKDU0MTE1MGU4N2Y0MTVlOTYpLCBDKDFh
ZWYwZDI0YjMxNDhhMWEpLCBDKGJhY2MzMDBlMWU4MjM0NWEpLAotICAgICBDKGMzY2RjNDFlMWRm
MzM1MTMpLCBDKDJjMTM4ZmYyNTk2ZDQyZjYpLCBDKGY1OGU5MDgyYWVkMzA1NWYpLAotICAgICBD
KDE2MmUxOTJiMjk1NzE2M2QpLCBDKGMzY2RjNDFlMWRmMzM1MTMpLCBDKDJjMTM4ZmYyNTk2ZDQy
ZjYpLAotICAgICBDKGY1OGU5MDgyYWVkMzA1NWYpLCBDKDE2MmUxOTJiMjk1NzE2M2QpLCBDKGZi
OTllODVlMGQxNmY5MGMpLAotICAgICBDKDYwODQ2MmMxNWJkZjI3ZTgpLCBDKGU3ZDJjNWM5NDM1
NzJiNjIpLCBDKDFiYWFhOTMyNzY0Mjc5OGMpLAogICAgICBDKDk5OTI5MzM0KX0sCi0gICAge0Mo
ZjM3ODZhNGIyNTgyN2MxKSwgQygzNGVlMWEyYmY3NjdiZDFjKSwgQygyZjE1Y2EyZWJmYjYzMWYy
KSwKLSAgICAgQygzMTQ5YmExZGFjNzcyNzBkKSwgQyg3MGUyZTA3NmUzMDcwM2MpLCBDKDU5YmNj
OTY1OWJjNTI5NiksCi0gICAgIEMoOWVjYmM4MTMyYWUyZjFkNyksIEMoMzE0OWJhMWRhYzc3Mjcw
ZCksIEMoNzBlMmUwNzZlMzA3MDNjKSwKLSAgICAgQyg1OWJjYzk2NTliYzUyOTYpLCBDKDllY2Jj
ODEzMmFlMmYxZDcpLCBDKGEwMWQzMDc4OWJhZDdjZjIpLAotICAgICBDKGFlMDNmZTM3MTk4MWEw
ZTApLCBDKDEyN2UzODgzYjg3ODg5MzQpLCBDKGQwYWMzZDRjMGE2ZmNhMzIpLAotICAgICBDKDQy
NTJlZGI3KX0sCisgICAge0MoZjM3ODZhNGIyNTgyN2MxKSwgQygzNGVlMWEyYmY3NjdiZDFjKSwg
QygyZjE1Y2EyZWJmYjYzMWYyKSwgQyg0MjUyZWRiNyl9LAogICAgIHtDKGVmOTIzYTdhMWFmNzhl
YWIpLCBDKDc5MTYzYjFlMWU5YTliMTgpLCBDKGRmM2IyYWNhNmUxZTRhMzApLAotICAgICBDKDIx
OTNmYjc2MjBjYmYyM2IpLCBDKDhiNmE4ZmYwNmNkYTgzMDIpLCBDKDFhNDQ0NjlhZmQzZTA5MWYp
LAotICAgICBDKDhiMDQ0OTM3NjYxMjUwNiksIEMoMjE5M2ZiNzYyMGNiZjIzYiksIEMoOGI2YThm
ZjA2Y2RhODMwMiksCi0gICAgIEMoMWE0NDQ2OWFmZDNlMDkxZiksIEMoOGIwNDQ5Mzc2NjEyNTA2
KSwgQyhlOWQ5ZDQxYzMyYWQ5MWQxKSwKLSAgICAgQyhiNDRhYjA5ZjU4ZTNjNjA4KSwgQygxOWU5
MTc1ZjlmY2Y3ODQpLCBDKDgzOWIzYzk1ODFiNGE0ODApLCBDKGViYzM0ZjNjKX0sCisgICAgIEMo
ZWJjMzRmM2MpfSwKICAgICB7QygxMWRmNTkyNTk2ZjQxZDg4KSwgQyg4NDNlYzBiY2U5MDQyZjlj
KSwgQyhjY2UyZWExZTA4YjFlYjMwKSwKLSAgICAgQyg0ZDA5ZTQyZjA5Y2MzNDk1KSwgQyg2NjYy
MzY2MzFiOWYyNTNiKSwgQyhkMjhiMzc2M2NkMDJiNmEzKSwKLSAgICAgQyg0M2IyNDllNTdjNGQw
YzFiKSwgQyg0ZDA5ZTQyZjA5Y2MzNDk1KSwgQyg2NjYyMzY2MzFiOWYyNTNiKSwKLSAgICAgQyhk
MjhiMzc2M2NkMDJiNmEzKSwgQyg0M2IyNDllNTdjNGQwYzFiKSwgQygzODg3MTAxYzhhZGVhMTAx
KSwKLSAgICAgQyg4YTkzNTVkNGVmYzkxZGYwKSwgQygzZTYxMDk0NGNjOWZlY2ZkKSwgQyg1YmY5
ZWI2MGIwOGFjMGNlKSwKICAgICAgQygyNmYyYjQ2Myl9LAogICAgIHtDKDgzMWY0NDhiZGM1NjAw
YjMpLCBDKDYyYTI0YmUzMTIwYTY5MTkpLCBDKDFiNDQwOThhNDFlMDEwZGEpLAotICAgICBDKGRj
MDdkZjUzYjk0OWM2YiksIEMoZDJiMTFiMjA4MWFlYjAwMiksIEMoZDIxMmIwMmMxYjEzZjc3Miks
Ci0gICAgIEMoYzBiZWQyOTdiNGJlMTkxMiksIEMoZGMwN2RmNTNiOTQ5YzZiKSwgQyhkMmIxMWIy
MDgxYWViMDAyKSwKLSAgICAgQyhkMjEyYjAyYzFiMTNmNzcyKSwgQyhjMGJlZDI5N2I0YmUxOTEy
KSwgQyg2ODJkM2QyYWQzMDRlNGFmKSwKLSAgICAgQyg0MGU5MTEyYTY1NTQzN2ExKSwgQygyNjhi
MDlmN2VlMDk4NDNmKSwgQyg2Yjk2OThkNDM4NTljYTQ3KSwKICAgICAgQyhiMDQyYzA0Nyl9LAot
ICAgIHtDKDNlY2E4MDNlNzAzMDQ4OTQpLCBDKGQ4MGRlNzY3ZTRhOTIwYSksIEMoYTUxY2ZiYjI5
MmVmZDUzZCksCi0gICAgIEMoZDE4M2RjZGE1ZjczZWRmYSksIEMoM2E5M2NiZjQwZjMwMTI4Yyks
IEMoMWE5MjU0NGQwYjQxZGJkYSksCi0gICAgIEMoYWVjMmM0YmVlODE5NzVlMSksIEMoZDE4M2Rj
ZGE1ZjczZWRmYSksIEMoM2E5M2NiZjQwZjMwMTI4YyksCi0gICAgIEMoMWE5MjU0NGQwYjQxZGJk
YSksIEMoYWVjMmM0YmVlODE5NzVlMSksIEMoNWY5MTgxNGQxMTI2YmE0YiksCi0gICAgIEMoZjhh
YzU3ZWVlODdmY2YxZiksIEMoYzU1YzY0NGE1ZDAwMjNjZCksIEMoYWRiNzYxZTgyNzgyNWZmMiks
Ci0gICAgIEMoZTczYmIwYTgpfSwKKyAgICB7QygzZWNhODAzZTcwMzA0ODk0KSwgQyhkODBkZTc2
N2U0YTkyMGEpLCBDKGE1MWNmYmIyOTJlZmQ1M2QpLCBDKGU3M2JiMGE4KX0sCiAgICAge0MoMWI1
YTA2M2ZiNGM3ZjlmMSksIEMoMzE4ZGJjMjRhZjY2ZGVlOSksIEMoMTBlZjdiMzJkNWM3MTlhZiks
Ci0gICAgIEMoYjE0MGEwMmVmNWM5NzcxMiksIEMoYjdkMDBlZjA2NWI1MWIzMyksIEMoNjM1MTIx
ZDUzMjg5N2Q5OCksCi0gICAgIEMoNTMyZGFmMjFiMzEyYTZkNiksIEMoYjE0MGEwMmVmNWM5Nzcx
MiksIEMoYjdkMDBlZjA2NWI1MWIzMyksCi0gICAgIEMoNjM1MTIxZDUzMjg5N2Q5OCksIEMoNTMy
ZGFmMjFiMzEyYTZkNiksIEMoYzBiMDliNzVkOTQzOTEwKSwKLSAgICAgQyg4Yzg0ZGZiNWVmMmE4
ZTk2KSwgQyhlNWMwNjAzNGIwMzUzNDMzKSwgQygzMTcwZmFmMWMzM2E0NWRkKSwKICAgICAgQyg5
MWRmZGQ3NSl9LAogICAgIHtDKGEwZjEwMTQ5YTBlNTM4ZDYpLCBDKDY5ZDAwOGMyMGY4NzQxOWYp
LCBDKDQxYjM2Mzc2MTg1YjNlOWUpLAotICAgICBDKDI2YjY2ODk5NjBjY2Y4MWQpLCBDKDU1ZjIz
YjI3YmI5ZWZkOTQpLCBDKDNhMTdmNjE2NmRkNzY1ZGIpLAotICAgICBDKGM4OTFhOGE2MjkzMWU3
ODIpLCBDKDI2YjY2ODk5NjBjY2Y4MWQpLCBDKDU1ZjIzYjI3YmI5ZWZkOTQpLAotICAgICBDKDNh
MTdmNjE2NmRkNzY1ZGIpLCBDKGM4OTFhOGE2MjkzMWU3ODIpLCBDKDIzODUyZGMzN2RkZDI2MDcp
LAotICAgICBDKDhiN2YxYjFlYzg5NzgyOWUpLCBDKGQxZDY5NDUyYTU0ZWVkOGEpLCBDKDU2NDMx
ZjJiZDc2NmVjMjQpLAogICAgICBDKGM4N2Y5NWRlKX0sCiAgICAge0MoZmI4ZDljNzA2NjBiOTEw
YiksIEMoYTQ1YjBjYzM0NzZiZmYxYiksIEMoYjI4ZDE5OTYxNDRmMDIwNyksCi0gICAgIEMoOThl
YzMxMTEzZTVlMzVkMiksIEMoNWU0YWViODUzZjFiOWFhNyksIEMoYmNmNWM4ZmU0NDY1YjdjOCks
Ci0gICAgIEMoYjFlYTNhODI0Mzk5NmYxNSksIEMoOThlYzMxMTEzZTVlMzVkMiksIEMoNWU0YWVi
ODUzZjFiOWFhNyksCi0gICAgIEMoYmNmNWM4ZmU0NDY1YjdjOCksIEMoYjFlYTNhODI0Mzk5NmYx
NSksIEMoY2FiYmNjZWRiNjQwNzU3MSksCi0gICAgIEMoZDFlNDBhODRjNDQ1ZWMzYSksIEMoMzMz
MDJhYTkwOGNmNDAzOSksIEMoOWYxNWY3OTIxMWI1Y2RmOCksCiAgICAgIEMoM2Y1NTM4ZWYpfSwK
ICAgICB7QygyMzY4MjdiZWFlMjgyYTQ2KSwgQyhlNDM5NzAyMjExMzljOTQ2KSwgQyg0ZjNhYzZm
YWE4MzdhM2FhKSwKLSAgICAgQyg3MWZlYzBmOTcyMjQ4OTE1KSwgQygyMTcwZWMyMDYxZjI0NTc0
KSwgQyg5ZWIzNDZiNmNhYTM2ZTgyKSwKLSAgICAgQygyOTA4ZjBmZGJjYTQ4ZTczKSwgQyg3MWZl
YzBmOTcyMjQ4OTE1KSwgQygyMTcwZWMyMDYxZjI0NTc0KSwKLSAgICAgQyg5ZWIzNDZiNmNhYTM2
ZTgyKSwgQygyOTA4ZjBmZGJjYTQ4ZTczKSwgQyg4MTAxYzk5ZjA3YzY0YWJiKSwKLSAgICAgQyhi
OWY0YjAyYjFiNmE5NmE3KSwgQyg1ODNhMmIxMGNkMjIyZjg4KSwgQygxOTlkYWU0Y2Y5ZGIyNGMp
LCBDKDcwZWIxYTFmKX0sCisgICAgIEMoNzBlYjFhMWYpfSwKICAgICB7QyhjMzg1ZTQzNTEzNmVj
ZjdjKSwgQyhkOWQxNzM2OGZmNmM0YTA4KSwgQygxYjMxZWVkNGU1MjUxYTY3KSwKLSAgICAgQyhk
ZjAxYTMyMmM0M2E2MjAwKSwgQygyOThiNjVhMTcxNGI1YTdlKSwgQyg5MzNiODNmMGFlZGYyM2Mp
LAotICAgICBDKDE1N2JjYjQ0ZDYzZjc2NWEpLCBDKGRmMDFhMzIyYzQzYTYyMDApLCBDKDI5OGI2
NWExNzE0YjVhN2UpLAotICAgICBDKDkzM2I4M2YwYWVkZjIzYyksIEMoMTU3YmNiNDRkNjNmNzY1
YSksIEMoZDZlOWZjN2EyNzJkOGI1MSksCi0gICAgIEMoM2VlNTA3M2VmMWE5Yjc3NyksIEMoNjMx
NDllMzFmYWMwMmM1OSksIEMoMmY3OTc5ZmY2MzZiYTFkOCksCiAgICAgIEMoY2ZkNjNiODMpfSwK
ICAgICB7QyhlM2Y2ODI4YjYwMTcwODZkKSwgQygyMWI0ZDE5MDA1NTRiM2IwKSwgQyhiZWYzOGJl
MTgwOWUyNGYxKSwKLSAgICAgQyhkOTMyNTE3NTg5ODVlZTZjKSwgQygzMmE5ZTlmODJiYTJhOTMy
KSwgQygzODIyYWFjYWE5NWYzMzI5KSwKLSAgICAgQyhkYjM0OWIyZjkwYTQ5MGQ4KSwgQyhkOTMy
NTE3NTg5ODVlZTZjKSwgQygzMmE5ZTlmODJiYTJhOTMyKSwKLSAgICAgQygzODIyYWFjYWE5NWYz
MzI5KSwgQyhkYjM0OWIyZjkwYTQ5MGQ4KSwgQyg4ZDQ5MTk0YTg5NGExOWNhKSwKLSAgICAgQyg3
OWE3OGIwNmU0MjczOGU2KSwgQyg3ZTBmMWVkYTNkMzkwYzY2KSwgQygxYzI5MWQ3ZTY0MTEwMGE1
KSwKICAgICAgQyg4OTRhNTJlZil9LAogICAgIHtDKDg1MWZmZjI4NTU2MWRjYTApLCBDKDRkMTI3
N2Q3M2NkZjQxNmYpLCBDKDI4Y2NmZmE2MTAxMGViZTIpLAotICAgICBDKDc3YTRjY2FjZDEzMWQ5
ZWUpLCBDKGUxZDA4ZWViMmYwZTI5YWEpLCBDKDcwYjllMzA1MTM4M2ZhNDUpLAotICAgICBDKDU4
MmQwMTIwNDI1Y2FiYSksIEMoNzdhNGNjYWNkMTMxZDllZSksIEMoZTFkMDhlZWIyZjBlMjlhYSks
Ci0gICAgIEMoNzBiOWUzMDUxMzgzZmE0NSksIEMoNTgyZDAxMjA0MjVjYWJhKSwgQyhhNzQwZWVm
MTg0NmU0NTY0KSwKLSAgICAgQyg1NzJkZGRiNzRhYzNhZTAwKSwgQyhmZGI1Y2E5NTc5MTYzYmJk
KSwgQyhhNjQ5YjliNzk5YzYxNWQyKSwKICAgICAgQyg5Y2RlNmE1NCl9LAogICAgIHtDKDYxMTUy
YTYzNTk1YTk2ZDkpLCBDKGQxYTNhOTFlZjNhN2JhNDUpLCBDKDQ0M2I2YmI0YTQ5M2FkMGMpLAot
ICAgICBDKGExNTQyOTZkMTEzNjJkMDYpLCBDKGQwZjBiZjFmMWNiMDJmYzEpLCBDKGNjYjg3ZTA5
MzA5ZjkwZDEpLAotICAgICBDKGIyNGE4ZTQ4ODE5MTExMDEpLCBDKGExNTQyOTZkMTEzNjJkMDYp
LCBDKGQwZjBiZjFmMWNiMDJmYzEpLAotICAgICBDKGNjYjg3ZTA5MzA5ZjkwZDEpLCBDKGIyNGE4
ZTQ4ODE5MTExMDEpLCBDKDFhNDgxYjQ1Mjg1NTlmNTgpLAotICAgICBDKGJmODM3YTMxNTA4OTY5
OTUpLCBDKDQ5ODllZjZiOTQxYTM3NTcpLCBDKDJlNzI1YWI3MmQwYjI5NDgpLAogICAgICBDKDZj
NDg5OGQ1KX0sCiAgICAge0MoNDQ0NzNlMDNiZTMwNmM4OCksIEMoMzAwOTc3NjFmODcyNDcyYSks
IEMoOWZkMWI2NjliZmFkODJkNyksCi0gICAgIEMoM2JhYjE4YjE2NDM5Njc4MyksIEMoNDdlMzg1
ZmY5ZDRjMDZmKSwgQygxODA2MjA4MWJmNTU4ZGYpLAotICAgICBDKDYzNDE2ZWI2OGYxMDRhMzYp
LCBDKDNiYWIxOGIxNjQzOTY3ODMpLCBDKDQ3ZTM4NWZmOWQ0YzA2ZiksCi0gICAgIEMoMTgwNjIw
ODFiZjU1OGRmKSwgQyg2MzQxNmViNjhmMTA0YTM2KSwgQyg0YWJkYTE1NjBjNDdhYzgwKSwKLSAg
ICAgQygxZWEwZTYzZGM2NTg3YWVlKSwgQygzM2VjNzlkOTJlYmMxZGUpLCBDKDk0ZjlkY2NlZjc3
MWUwNDgpLCBDKDEzZTE5NzhlKX0sCi0gICAge0MoM2VhZDVmMjFkMzQ0MDU2KSwgQyhmYjY0MjAz
OTNjZmIwNWMzKSwgQyg0MDc5MzIzOTRjYmJkMzAzKSwKLSAgICAgQyhhYzA1OTYxN2Y1OTA2Njcz
KSwgQyg5NGQ1MGQzZGNkMzA2OWE3KSwgQygyYjI2YzNiOTJkZWEwZjApLAotICAgICBDKDk5Yjcz
NzRjYzc4ZmMzZmIpLCBDKGFjMDU5NjE3ZjU5MDY2NzMpLCBDKDk0ZDUwZDNkY2QzMDY5YTcpLAot
ICAgICBDKDJiMjZjM2I5MmRlYTBmMCksIEMoOTliNzM3NGNjNzhmYzNmYiksIEMoMWE4ZTNjNzNj
ZGQ0MGVlOCksCi0gICAgIEMoY2JiNWZjYTA2NzQ3ZjQ1YiksIEMoY2VlYzQ0MjM4YjI5MTg0MSks
IEMoMjhiZjM1Y2NlOWM5MGEyNSksIEMoNTFiNGJhOCl9LAorICAgICBDKDEzZTE5NzhlKX0sCisg
ICAge0MoM2VhZDVmMjFkMzQ0MDU2KSwgQyhmYjY0MjAzOTNjZmIwNWMzKSwgQyg0MDc5MzIzOTRj
YmJkMzAzKSwgQyg1MWI0YmE4KX0sCiAgICAge0MoNmFiYmZkZTM3ZWUwM2I1YiksIEMoODNmZWJm
MTg4ZDJjYzExMyksIEMoY2RhN2I2MmQ5NGQ1YjhlZSksCi0gICAgIEMoYTQzNzU1OTBiOGFlN2M4
MiksIEMoMTY4ZmQ0MmY5ZWNhZTRmZiksIEMoMjNiYmRlNDNkZTJjYjIxNCksCi0gICAgIEMoYThj
MzMzMTEyYTI0M2M4YyksIEMoYTQzNzU1OTBiOGFlN2M4MiksIEMoMTY4ZmQ0MmY5ZWNhZTRmZiks
Ci0gICAgIEMoMjNiYmRlNDNkZTJjYjIxNCksIEMoYThjMzMzMTEyYTI0M2M4YyksIEMoMTBhYzAx
MmU4YzUxOGI0OSksCi0gICAgIEMoNjRhNDQ2MDVkOGIyOTQ1OCksIEMoYTY3ZTcwMWQyYTY3OTA3
NSksIEMoM2EzYTIwZjQzZWM5MjMwMyksCiAgICAgIEMoYjZiMDZlNDApfSwKLSAgICB7Qyg5NDNl
N2VkNjNiM2MwODApLCBDKDFlZjIwN2U5NDQ0ZWY3ZjgpLCBDKGVmNGE5ZjlmOGM2ZjliNGEpLAot
ICAgICBDKDZiNTRmYzM4ZDZhODQxMDgpLCBDKDMyZjQyMTJhNDdhNDY2NSksIEMoNmI1YTlhOGY2
NGVlMWRhNiksCi0gICAgIEMoOWY3NGU4NmM2ZGE2OTQyMSksIEMoNmI1NGZjMzhkNmE4NDEwOCks
IEMoMzJmNDIxMmE0N2E0NjY1KSwKLSAgICAgQyg2YjVhOWE4ZjY0ZWUxZGE2KSwgQyg5Zjc0ZTg2
YzZkYTY5NDIxKSwgQyg5NDZkZDBjYjMwYzFhMDhlKSwKLSAgICAgQyhmZGYzNzY5NTY5MDdlYWFh
KSwgQyhhNTkwNzRjNmVlYzAzMDI4KSwgQyhiMWEzYWJjZjI4M2YzNGFjKSwgQygyNDBhMmYyKX0s
CisgICAge0MoOTQzZTdlZDYzYjNjMDgwKSwgQygxZWYyMDdlOTQ0NGVmN2Y4KSwgQyhlZjRhOWY5
ZjhjNmY5YjRhKSwgQygyNDBhMmYyKX0sCiAgICAge0MoZDcyY2UwNTE3MWVmOGExYSksIEMoYzZi
ZDZiZDg2OTIwMzg5NCksIEMoYzc2MGU2Mzk2NDU1ZDIzYSksCi0gICAgIEMoZjg2YWYwYjQwZGNj
ZTdiKSwgQyg4ZDNjMTVkNjEzMzk0ZDNjKSwgQyg0OTFlNDAwNDkxY2Q0ZWNlKSwKLSAgICAgQyg3
YzE5ZDM1MzBlYTM1NDdmKSwgQyhmODZhZjBiNDBkY2NlN2IpLCBDKDhkM2MxNWQ2MTMzOTRkM2Mp
LAotICAgICBDKDQ5MWU0MDA0OTFjZDRlY2UpLCBDKDdjMTlkMzUzMGVhMzU0N2YpLCBDKDEzNjI5
NjNhMWRjMzJhZjkpLAotICAgICBDKGZiOWJjMTE3NjJlMTM4NWMpLCBDKDllMTY0ZWYxZjUzNzYw
ODMpLCBDKDZjMTU4MTliNWU4MjhhN2UpLAogICAgICBDKDVkY2VmYzMwKX0sCiAgICAge0MoNDE4
MjgzMmI1MmQ2MzczNSksIEMoMzM3MDk3ZTEyM2VlYTQxNCksIEMoYjVhNzJjYTA0NTZkZjkxMCks
Ci0gICAgIEMoN2ViYzAzNDIzNWJjMTIyZiksIEMoZDlhNzc4M2Q0ZWRkODA0OSksIEMoNWY4YjA0
YTE1YWU0MjM2MSksCi0gICAgIEMoZmMxOTMzNjMzMzY0NTNkZCksIEMoN2ViYzAzNDIzNWJjMTIy
ZiksIEMoZDlhNzc4M2Q0ZWRkODA0OSksCi0gICAgIEMoNWY4YjA0YTE1YWU0MjM2MSksIEMoZmMx
OTMzNjMzMzY0NTNkZCksIEMoOWI2YzUwMjI0ZWY4YzRmOCksCi0gICAgIEMoYmEyMjVjNzk0MmQx
NmMzZiksIEMoNmY2ZDU1MjI2YTczYzQxMiksIEMoYWJjYTA2MWZlMDcyMTUyYSksCiAgICAgIEMo
N2E0OGIxMDUpfSwKICAgICB7QyhkNmNkYWU4OTI1ODRhMmNiKSwgQyg1OGRlMGZhNGVjYTE3ZGNk
KSwgQyg0M2RmMzBiOGY1ZjFjYjAwKSwKLSAgICAgQyg5ZTRlYTVhNDk0MWUwOTdkKSwgQyg1NDdl
MDQ4ZDVhOWRhYWJhKSwgQyhlYjZlY2JiMGI4MzFkMTg1KSwKLSAgICAgQyhlMDE2OGRmNWZhZDBj
NjcwKSwgQyg5ZTRlYTVhNDk0MWUwOTdkKSwgQyg1NDdlMDQ4ZDVhOWRhYWJhKSwKLSAgICAgQyhl
YjZlY2JiMGI4MzFkMTg1KSwgQyhlMDE2OGRmNWZhZDBjNjcwKSwgQyhhZmE5NzA1Zjk4YzJjOTZh
KSwKLSAgICAgQyg3NDk0MzZmNDgxMzdhOTZiKSwgQyg3NTljMDQxZmMyMWRmNDg2KSwgQyhiMjNi
ZjQwMDEwN2FhMmVjKSwKICAgICAgQyhmZDU1MDA3Yil9LAogICAgIHtDKDVjOGU5MGJjMjY3YzVl
ZTQpLCBDKGU5YWUwNDQwNzVkOTkyZDkpLCBDKGYyMzRjYmZkMWYwYTFlNTkpLAotICAgICBDKGNl
Mjc0NDUyMTk0NGYxNGMpLCBDKDEwNGY4MDMyZjk5ZGMxNTIpLCBDKDRlN2Y0MjViZmFjNjdjYTcp
LAotICAgICBDKDk0NjFiOTExYTFjNmQ1ODkpLCBDKGNlMjc0NDUyMTk0NGYxNGMpLCBDKDEwNGY4
MDMyZjk5ZGMxNTIpLAotICAgICBDKDRlN2Y0MjViZmFjNjdjYTcpLCBDKDk0NjFiOTExYTFjNmQ1
ODkpLCBDKDVlNWVjYzcyNmRiOGI2MGQpLAotICAgICBDKGNjZTY4YjA1ODYwODNiNTEpLCBDKDhh
N2Y4ZTU0YTljYmEwZmMpLCBDKDQyZjAxMDE4MWQxNmYwNDkpLAogICAgICBDKDZiOTU4OTRjKX0s
CiAgICAge0MoYmJkN2YzMGFjMzEwYTZmMyksIEMoYjIzYjU3MGQyNjY2Njg1ZiksIEMoZmIxM2Zi
MDhjOTgxNGZlNyksCi0gICAgIEMoNGVlMTA3MDQyZTUxMjM3NCksIEMoMWUyYzhjMGQxNjA5N2Ux
MyksIEMoMjEwYzc1MDA5OTVhYTBlNiksCi0gICAgIEMoNmMxMzE5MDU1NzEwNjQ1NyksIEMoNGVl
MTA3MDQyZTUxMjM3NCksIEMoMWUyYzhjMGQxNjA5N2UxMyksCi0gICAgIEMoMjEwYzc1MDA5OTVh
YTBlNiksIEMoNmMxMzE5MDU1NzEwNjQ1NyksIEMoYTk5YjMxYzk2Nzc3ZjM4MSksCi0gICAgIEMo
ODMxMmFlODMwMWQzODZjMCksIEMoZWQ1MDQyYjJhNGZhOTZhMyksIEMoZDcxZDFiYjIzOTA3ZmU5
NyksCiAgICAgIEMoMzM2MGU4MjcpfSwKLSAgICB7QygzNmEwOTdhYTQ5NTE5ZDk3KSwgQyg4MjA0
MzgwYTczYzQwNjUpLCBDKDc3YzIwMDRiZGQ5ZTI3NmEpLAotICAgICBDKDZlZTFmODE3Y2UwYjdh
ZWUpLCBDKGU5ZGNiMzUwN2YwNTk2Y2EpLCBDKDZiYzYzYzY2NmI1MTAwZTIpLAotICAgICBDKGUw
YjA1NmYxODIxNzUyYWYpLCBDKDZlZTFmODE3Y2UwYjdhZWUpLCBDKGU5ZGNiMzUwN2YwNTk2Y2Ep
LAotICAgICBDKDZiYzYzYzY2NmI1MTAwZTIpLCBDKGUwYjA1NmYxODIxNzUyYWYpLCBDKDhlYTEx
MTRlNjAyOTI2NzgpLAotICAgICBDKDkwNGI4MGI0NmJlY2M3NyksIEMoNDZjZDliYjZlOWRmZjUy
ZiksIEMoNGM5MWUzYjY5ODM1NTU0MCksIEMoNDUxNzdlMGIpfSwKLSAgICB7QyhkYzc4Y2IwMzJj
NDkyMTcpLCBDKDExMjQ2NDA4M2Y4M2UwM2EpLCBDKDk2YWU1M2UyODE3MGMwZjUpLAotICAgICBD
KGQzNjdmZjU0OTUyYTk1OCksIEMoY2RhZDkzMDY1NzM3MTE0NyksIEMoYWEyNGRjMmE5NTczZDVm
ZSksCi0gICAgIEMoZWIxMzZkYWE4OWRhNTExMCksIEMoZDM2N2ZmNTQ5NTJhOTU4KSwgQyhjZGFk
OTMwNjU3MzcxMTQ3KSwKLSAgICAgQyhhYTI0ZGMyYTk1NzNkNWZlKSwgQyhlYjEzNmRhYTg5ZGE1
MTEwKSwgQyhkZTYyMzAwNWY2ZDQ2MDU3KSwKLSAgICAgQyhiNTBjMGM5MmI5NWU5YjdmKSwgQyhh
OGFhNTQwNTBiODFjOTc4KSwgQyg1NzNmYjVjNzg5NWFmOWI1KSwKLSAgICAgQyg3YzZmZmZlNCl9
LAorICAgIHtDKDM2YTA5N2FhNDk1MTlkOTcpLCBDKDgyMDQzODBhNzNjNDA2NSksIEMoNzdjMjAw
NGJkZDllMjc2YSksIEMoNDUxNzdlMGIpfSwKKyAgICB7QyhkYzc4Y2IwMzJjNDkyMTcpLCBDKDEx
MjQ2NDA4M2Y4M2UwM2EpLCBDKDk2YWU1M2UyODE3MGMwZjUpLCBDKDdjNmZmZmU0KX0sCiAgICAg
e0MoNDQxNTkzZTBkYTkyMmRmZSksIEMoOTM2ZWY0NjA2MTQ2OWIzMiksIEMoMjA0YTE5MjExOTdk
ZGQ4NyksCi0gICAgIEMoNTBkOGE3MGU3YThkOGY1NiksIEMoMjU2ZDE1MGFlNzVkYWI3NiksIEMo
ZTgxZjRjNGExOTg5MDM2YSksCi0gICAgIEMoZDBmOGRiMzY1ZjlkN2UwMCksIEMoNTBkOGE3MGU3
YThkOGY1NiksIEMoMjU2ZDE1MGFlNzVkYWI3NiksCi0gICAgIEMoZTgxZjRjNGExOTg5MDM2YSks
IEMoZDBmOGRiMzY1ZjlkN2UwMCksIEMoNzUzZDY4NjY3N2IxNDUyMiksCi0gICAgIEMoOWY3NmUw
Y2I2ZjJkMGE2NiksIEMoYWIxNGY5NTk4OGVjMGQzOSksIEMoOTc2MjFkOWRhOWM5ODEyZiksCiAg
ICAgIEMoYmJjNzhkYTQpfSwKICAgICB7QygyYmEzODgzZDcxY2MyMTMzKSwgQyg3MmYyYmJiMzJi
ZWQxYTNjKSwgQygyN2UxYmQ5NmQ0ODQzMjUxKSwKLSAgICAgQyhhOTBmNzYxZThkYjE1NDNhKSwg
QyhjMzM5ZTIzYzA5NzAzY2Q4KSwgQyhmMGM2NjI0YzRiMDk4ZmQzKSwKLSAgICAgQygxYmFlMjA1
M2U0MWZhNGQ5KSwgQyhhOTBmNzYxZThkYjE1NDNhKSwgQyhjMzM5ZTIzYzA5NzAzY2Q4KSwKLSAg
ICAgQyhmMGM2NjI0YzRiMDk4ZmQzKSwgQygxYmFlMjA1M2U0MWZhNGQ5KSwgQygzNTg5ZTI3M2My
MmJhMDU5KSwKLSAgICAgQyg2Mzc5ODI0NmU1OTExYTBiKSwgQygxOGU3MTBlYzI2OGZjNWRjKSwg
Qyg3MTRhMTIyZGUxZDA3NGYzKSwKICAgICAgQyhjNWMyNWQzOSl9LAogICAgIHtDKGYyYjZkMmFk
Zjg0MjM2MDApLCBDKDc1MTRlMmYwMTZhNDg3MjIpLCBDKDQzMDQ1NzQzYTUwMzk2YmEpLAotICAg
ICBDKDIzZGFjYjgxMTY1MmFkNGYpLCBDKGM5ODJkYTQ4MGUwZDRjN2QpLCBDKDNhOWM4ZWQ1YTM5
OWQwYTkpLAotICAgICBDKDk1MWI4ZDA4NDY5MWQ0ZTQpLCBDKDIzZGFjYjgxMTY1MmFkNGYpLCBD
KGM5ODJkYTQ4MGUwZDRjN2QpLAotICAgICBDKDNhOWM4ZWQ1YTM5OWQwYTkpLCBDKDk1MWI4ZDA4
NDY5MWQ0ZTQpLCBDKGQ5Zjg3YjQ5ODhjZmYyZjcpLAotICAgICBDKDIxN2ExOTFkOTg2YWEzYmMp
LCBDKDZhZDIzYzU2YjQ4MDM1MCksIEMoZGQ3ODY3MzkzOGNlYjJlNyksIEMoYjZlNWQwNmUpfSwK
KyAgICAgQyhiNmU1ZDA2ZSl9LAogICAgIHtDKDM4ZmZmZTdmMzY4MGQ2M2MpLCBDKGQ1MTMzMjUy
NTVhN2E2ZDEpLCBDKDMxZWQ0Nzc5MGY2Y2E2MmYpLAotICAgICBDKGM4MDFmYWFhMGEyZTMzMWYp
LCBDKDQ5MWRiYzU4Mjc5YzdmODgpLCBDKDljMDE3ODg0ODMyMWM5N2EpLAotICAgICBDKDlkOTM0
ZjgxNGY0ZDZhM2MpLCBDKGM4MDFmYWFhMGEyZTMzMWYpLCBDKDQ5MWRiYzU4Mjc5YzdmODgpLAot
ICAgICBDKDljMDE3ODg0ODMyMWM5N2EpLCBDKDlkOTM0ZjgxNGY0ZDZhM2MpLCBDKDYwNmEzZTRm
Yzg3NjMxOTIpLAotICAgICBDKGJjMTVjYjM2YTY3N2VlODQpLCBDKDUyZDU5MDQxNTdlMWZlNzEp
LCBDKDE1ODhkZDhiMTE0NWI3OWIpLAogICAgICBDKDYxNzg1MDRlKX0sCi0gICAge0MoYjc0Nzdi
ZjBiOWNlMzdjNiksIEMoNjNiMWM1ODBhN2ZkMDJhNCksIEMoZjY0MzNiOWYxMGE1ZGFjKSwKLSAg
ICAgQyg2OGRkNzZkYjlkNjRlY2E3KSwgQygzNjI5NzY4MmI2NGI2NyksIEMoNDJiMTkyZDcxZjQx
NGI3YSksCi0gICAgIEMoNzk2OTJjZWY0NGZhMDIwNiksIEMoNjhkZDc2ZGI5ZDY0ZWNhNyksIEMo
MzYyOTc2ODJiNjRiNjcpLAotICAgICBDKDQyYjE5MmQ3MWY0MTRiN2EpLCBDKDc5NjkyY2VmNDRm
YTAyMDYpLCBDKGYwOTc5MjUyZjQ3NzZkMDcpLAotICAgICBDKDRiODdjZDRmMWM5YmJmNTIpLCBD
KDUxYjg0YmJjNjMxMmM3MTApLCBDKDE1MDcyMGZiZjg1NDI4YTcpLAotICAgICBDKGJkNGMzNjM3
KX0sCisgICAge0MoYjc0NzdiZjBiOWNlMzdjNiksIEMoNjNiMWM1ODBhN2ZkMDJhNCksIEMoZjY0
MzNiOWYxMGE1ZGFjKSwgQyhiZDRjMzYzNyl9LAogICAgIHtDKDU1YmRiMGU3MWUzZWRlYmQpLCBD
KGM3YWI1NjJiY2YwNTY4YmMpLCBDKDQzMTY2MzMyZjllZTY4NGYpLAotICAgICBDKGIyZTI1OTY0
Y2Q0MDkxMTcpLCBDKGEwMTA1OTlkNjI4N2M0MTIpLCBDKGZhNWQ2NDYxZTc2OGRkYTIpLAotICAg
ICBDKGNiM2NlNzRlOGVjNGY5MDYpLCBDKGIyZTI1OTY0Y2Q0MDkxMTcpLCBDKGEwMTA1OTlkNjI4
N2M0MTIpLAotICAgICBDKGZhNWQ2NDYxZTc2OGRkYTIpLCBDKGNiM2NlNzRlOGVjNGY5MDYpLCBD
KDYxMjBhYmZkNTQxYTI2MTApLAotICAgICBDKGFhODhiMTQ4Y2M5NTc5NGQpLCBDKDI2ODZjYTM1
ZGY2NTkwZTMpLCBDKGM2YjAyZDE4NjE2Y2U5NGQpLAogICAgICBDKDZlN2FjNDc0KX0sCi0gICAg
e0MoNzgyZmExYjA4YjQ3NWU3KSwgQyhmYjcxMzg5NTFjNjFiMjNiKSwgQyg5ODI5MTA1ZTIzNGZi
MTFlKSwKLSAgICAgQyg5YThjNDMxZjUwMGVmMDZlKSwgQyhkODQ4NTgxYTU4MGI2YzEyKSwgQyhm
ZWNmZTExZTEzYTJiZGI0KSwKLSAgICAgQyg2YzRmYTAyNzNkN2RiMDhjKSwgQyg5YThjNDMxZjUw
MGVmMDZlKSwgQyhkODQ4NTgxYTU4MGI2YzEyKSwKLSAgICAgQyhmZWNmZTExZTEzYTJiZGI0KSwg
Qyg2YzRmYTAyNzNkN2RiMDhjKSwgQyg0ODJmNDNiZjVhZTU5ZmNiKSwKLSAgICAgQyhmNjUxZmJj
YTEwNWQ3OWU2KSwgQyhmMDlmNzg2OTVkODY1ODE3KSwgQyg3YTk5ZDAwOTIwODVjZjQ3KSwKLSAg
ICAgQygxZmI0YjUxOCl9LAorICAgIHtDKDc4MmZhMWIwOGI0NzVlNyksIEMoZmI3MTM4OTUxYzYx
YjIzYiksIEMoOTgyOTEwNWUyMzRmYjExZSksIEMoMWZiNGI1MTgpfSwKICAgICB7QyhjNWRjMTli
ODc2ZDM3YTgwKSwgQygxNWZmY2ZmNjY2Y2ZkNzEwKSwgQyhlOGMzMGM3MjAwMzEwM2UyKSwKLSAg
ICAgQyg3ODcwNzY1YjQ3MGIyYzVkKSwgQyg3OGE5MTAzZmY5NjBkODIpLCBDKDdiYjUwZmZjOWZh
Yzc0YjMpLAotICAgICBDKDQ3N2U3MGFiMmIzNDdkYjIpLCBDKDc4NzA3NjViNDcwYjJjNWQpLCBD
KDc4YTkxMDNmZjk2MGQ4MiksCi0gICAgIEMoN2JiNTBmZmM5ZmFjNzRiMyksIEMoNDc3ZTcwYWIy
YjM0N2RiMiksIEMoYTYyNTIzOGJkZjdjMDdjZiksCi0gICAgIEMoMTEyOGQ1MTUxNzQ4MDlmNSks
IEMoYjBmMTY0N2U4MmY0NTg3MyksIEMoMTc3OTJkMWM0ZjIyMmMzOSksCiAgICAgIEMoMzFkMTNk
NmQpfSwKICAgICB7Qyg1ZTExNDE3MTFkMmQ2NzA2KSwgQyhiNTM3ZjZkZWU4ZGU2OTMzKSwgQygz
YWYwYTFmYmJlMDI3YzU0KSwKLSAgICAgQyhlYTM0OWRiYzE2YzJlNDQxKSwgQygzOGE3NDU1YjZh
ODc3NTQ3KSwgQyg1Zjk3Yjk3NTBlMzY1NDExKSwKLSAgICAgQyhlOGNkZTdmOTNhZjQ5YTMpLCBD
KGVhMzQ5ZGJjMTZjMmU0NDEpLCBDKDM4YTc0NTViNmE4Nzc1NDcpLAotICAgICBDKDVmOTdiOTc1
MGUzNjU0MTEpLCBDKGU4Y2RlN2Y5M2FmNDlhMyksIEMoYmExMDE5MjVlYzFmN2UyNiksCi0gICAg
IEMoZDVlODRjYWI4MTkyYzcxZSksIEMoZTI1NjQyNzcyNmZkZDYzMyksIEMoYTRmMzhlMmM2MTE2
ODkwZCksCiAgICAgIEMoMjZmYTcyZTMpfSwKLSAgICB7Qyg3ODJlZGY2ZGEwMDEyMzRmKSwgQyhm
NDhjYmQ1YzY2YzQ4ZjMpLCBDKDgwODc1NGQxZTY0ZTJhMzIpLAotICAgICBDKDVkOWRkZTc3MzUz
YjFhNmQpLCBDKDExZjU4YzU0NTgxZmE4YjEpLCBDKGRhOTBmYTdjMjhjMzc0NzgpLAotICAgICBD
KDVlOWEyZWFmYzY3MGE4OGEpLCBDKDVkOWRkZTc3MzUzYjFhNmQpLCBDKDExZjU4YzU0NTgxZmE4
YjEpLAotICAgICBDKGRhOTBmYTdjMjhjMzc0NzgpLCBDKDVlOWEyZWFmYzY3MGE4OGEpLCBDKGUz
NWUxYmMxNzJlMDExZWYpLAotICAgICBDKGJmOTI1NWE0NDUwYWU3ZmUpLCBDKDU1Zjg1MTk0ZTI2
YmM1NWYpLCBDKDRmMzI3ODczZTE0ZDBlNTQpLAotICAgICBDKDZhNzQzM2JmKX0sCisgICAge0Mo
NzgyZWRmNmRhMDAxMjM0ZiksIEMoZjQ4Y2JkNWM2NmM0OGYzKSwgQyg4MDg3NTRkMWU2NGUyYTMy
KSwgQyg2YTc0MzNiZil9LAogICAgIHtDKGQyNjI4NTg0MmZmMDRkNDQpLCBDKDhmMzhkNzEzNDFl
YWNjYTkpLCBDKDVjYTQzNmY0ZGI3YTg4M2MpLAotICAgICBDKGJmNDFlNTM3NmI5ZjBlZWMpLCBD
KDIyNTJkMjFlYjdlMWMwZTkpLCBDKGY0YjcwYTk3MTg1NWU3MzIpLAotICAgICBDKDQwYzc2OTVh
YTM2NjJhZmQpLCBDKGJmNDFlNTM3NmI5ZjBlZWMpLCBDKDIyNTJkMjFlYjdlMWMwZTkpLAotICAg
ICBDKGY0YjcwYTk3MTg1NWU3MzIpLCBDKDQwYzc2OTVhYTM2NjJhZmQpLCBDKDc3MGZlMTllMTZh
YjczYmIpLAotICAgICBDKGQ2MDNlYmRhNjM5M2Q3NDkpLCBDKGU1OGM2MjQzOWFhNTBkYmQpLCBD
KDk2ZDUxZTVhMDJkMmQ3Y2YpLAogICAgICBDKDRlNmRmNzU4KX0sCiAgICAge0MoYzZhYjgzMDg2
NWE2YmFlNiksIEMoNmFhOGU4ZGQ0Yjk4ODE1YyksIEMoZWZlMzg0NjcxM2MzNzFlNSksCi0gICAg
IEMoYTE5MjRjYmYwYjVmOTIyMiksIEMoN2Y0ODcyMzY5YzJiNDI1OCksIEMoY2Q2ZGEzMDUzMGYz
ZWE4OSksCi0gICAgIEMoYjdmOGI5YTcwNGU2Y2VhMSksIEMoYTE5MjRjYmYwYjVmOTIyMiksIEMo
N2Y0ODcyMzY5YzJiNDI1OCksCi0gICAgIEMoY2Q2ZGEzMDUzMGYzZWE4OSksIEMoYjdmOGI5YTcw
NGU2Y2VhMSksIEMoZmEwNmZmNDA0MzNmZDUzNSksCi0gICAgIEMoZmIxYzM2ZmU4ZjA3MzdmMSks
IEMoYmI3MDUwNTYxMTcxZjgwKSwgQyhiMWJjMjMyMzU5MzVkODk3KSwgQyhkNTdmNjNlYSl9LAot
ICAgIHtDKDQ0YjNhMTkyOTIzMjg5MiksIEMoNjFkY2EwZTkxNGZjMjE3KSwgQyhhNjA3Y2MxNDIw
OTZiOTY0KSwKLSAgICAgQyhmN2RiYzg0MzNjODliMjc0KSwgQygyZjVmNzA1ODFjOWI3ZDMyKSwg
QygzOWJmNWU1ZmVjODJkY2NhKSwKLSAgICAgQyg4YWRlNTYzODg5MDFhNjE5KSwgQyhmN2RiYzg0
MzNjODliMjc0KSwgQygyZjVmNzA1ODFjOWI3ZDMyKSwKLSAgICAgQygzOWJmNWU1ZmVjODJkY2Nh
KSwgQyg4YWRlNTYzODg5MDFhNjE5KSwgQyhjMWM2YTcyNWNhYWIzZWE5KSwKLSAgICAgQyhjMWM3
OTA2YzJmODBiODk4KSwgQyg5YzM4NzFhMDRjYzg4NGU2KSwgQyhkZjAxODEzY2JiZGYyMTdmKSwK
LSAgICAgQyg1MmVmNzNiMyl9LAotICAgIHtDKDRiNjAzZDc5MzJhOGRlNGYpLCBDKGZhZTY0YzQ2
NGI4YThmNDUpLCBDKDhmYWZhYjc1NjYxZDYwMmEpLAotICAgICBDKDhmZmU4NzBlZjRhZGMwODcp
LCBDKDY1YmVhMmJlNDFmNTViNTQpLCBDKDgyZjM1MDNmNjM2YWVmMSksCi0gICAgIEMoNWY3OGEy
ODIzNzhiNmJiMCksIEMoOGZmZTg3MGVmNGFkYzA4NyksIEMoNjViZWEyYmU0MWY1NWI1NCksCi0g
ICAgIEMoODJmMzUwM2Y2MzZhZWYxKSwgQyg1Zjc4YTI4MjM3OGI2YmIwKSwgQyg3YmYyNDIyYzBi
ZWNlZGRiKSwKLSAgICAgQyg5ZDIzOGQ0NzgwMTE0YmQpLCBDKDdhZDE5ODMxMTkwNjU5N2YpLCBD
KGVjOGY4OTJjMDQyMmFjYTMpLCBDKDNjYjM2YzMpfSwKKyAgICAgQyhkNTdmNjNlYSl9LAorICAg
IHtDKDQ0YjNhMTkyOTIzMjg5MiksIEMoNjFkY2EwZTkxNGZjMjE3KSwgQyhhNjA3Y2MxNDIwOTZi
OTY0KSwgQyg1MmVmNzNiMyl9LAorICAgIHtDKDRiNjAzZDc5MzJhOGRlNGYpLCBDKGZhZTY0YzQ2
NGI4YThmNDUpLCBDKDhmYWZhYjc1NjYxZDYwMmEpLCBDKDNjYjM2YzMpfSwKICAgICB7Qyg0ZWMw
YjU0Y2YxNTY2YWZmKSwgQygzMGQyYzcyNjliMjA2YmY0KSwgQyg3N2MyMmU4MjI5NWUxMDYxKSwK
LSAgICAgQygzZGY5YjA0NDM0NzcxNTQyKSwgQyhmZWRkY2U3ODVjY2I2NjFmKSwgQyhhNjQ0YWZm
NzE2OTI4Mjk3KSwKLSAgICAgQyhkZDQ2YWVlNzM4MjRiNGVkKSwgQygzZGY5YjA0NDM0NzcxNTQy
KSwgQyhmZWRkY2U3ODVjY2I2NjFmKSwKLSAgICAgQyhhNjQ0YWZmNzE2OTI4Mjk3KSwgQyhkZDQ2
YWVlNzM4MjRiNGVkKSwgQyhiZjhkNzE4NzlkYTI5YjAyKSwKLSAgICAgQyhmYzgyZGNjYmZjODAy
MmEwKSwgQygzMWJmY2QwZDlmNDhkMWQzKSwgQyhjNjRlZTI0ZDBlN2I1ZjhiKSwKICAgICAgQyg3
MmMzOWJlYSl9LAogICAgIHtDKGVkOGI3YTRiMzQ5NTRmZjcpLCBDKDU2NDMyZGUzMWY0ZWU3NTcp
LCBDKDg1YmQzYWJhYTU3MmIxNTUpLAotICAgICBDKDdkMmMzOGE5MjZkYzFiODgpLCBDKDUyNDVi
OWViNGNkNjc5MWQpLCBDKGZiNTNhYjAzYjlhZDA4NTUpLAotICAgICBDKDM2NjQwMjZjOGZjNjY5
ZDcpLCBDKDdkMmMzOGE5MjZkYzFiODgpLCBDKDUyNDViOWViNGNkNjc5MWQpLAotICAgICBDKGZi
NTNhYjAzYjlhZDA4NTUpLCBDKDM2NjQwMjZjOGZjNjY5ZDcpLCBDKDQ1MDI0ZDUwODBiYzE5Niks
Ci0gICAgIEMoYjIzNmViZWMyY2MyNzQwKSwgQygyNzIzMWFkMGUzNDQzYmU0KSwgQygxNDU3ODBi
NjNmODA5MjUwKSwgQyhhNjVhYTI1Yyl9LAorICAgICBDKGE2NWFhMjVjKX0sCiAgICAge0MoNWQy
OGI0MzY5NDE3NmMyNiksIEMoNzE0Y2M4YmMxMmQwNjBhZSksIEMoMzQzNzcyNjI3M2E4M2ZlNiks
Ci0gICAgIEMoODY0YjFiMjhlYzE2ZWE4NiksIEMoNmE3OGE1YTQwMzllYzJiOSksIEMoOGU5NTk1
MzNlMzVhNzY2KSwKLSAgICAgQygzNDdiN2MyMmI3NWFlNjVmKSwgQyg4NjRiMWIyOGVjMTZlYTg2
KSwgQyg2YTc4YTVhNDAzOWVjMmI5KSwKLSAgICAgQyg4ZTk1OTUzM2UzNWE3NjYpLCBDKDM0N2I3
YzIyYjc1YWU2NWYpLCBDKDUwMDU4OTJiYjYxZTY0N2MpLAotICAgICBDKGZlNjQ2NTE5YjRhMTg5
NGQpLCBDKGNkODAxMDI2Zjc0YThhNTMpLCBDKDg3MTM0NjNlOWExYWI5Y2UpLAogICAgICBDKDc0
NzQwNTM5KX0sCiAgICAge0MoNmExZWYzNjM5ZTFkMjAyZSksIEMoOTE5YmMxYmQxNDVhZDkyOCks
IEMoMzBmM2Y3ZTQ4YzI4YTc3MyksCi0gICAgIEMoMmU4YzQ5ZDdjN2FhYTUyNyksIEMoNWUyMzI4
ZmM4NzAxZGI3YyksIEMoODllZjFhZmNhODFmN2RlOCksCi0gICAgIEMoYjE4NTdkYjExOTg1ZDI5
NiksIEMoMmU4YzQ5ZDdjN2FhYTUyNyksIEMoNWUyMzI4ZmM4NzAxZGI3YyksCi0gICAgIEMoODll
ZjFhZmNhODFmN2RlOCksIEMoYjE4NTdkYjExOTg1ZDI5NiksIEMoMTc3NjNkNjk1ZjYxNjExNSks
Ci0gICAgIEMoYjhmN2JmMWZjZGM4MzIyYyksIEMoY2YwYzYxOTM4YWIwN2EyNyksIEMoMTEyMmQz
ZTZlZGI0ZTg2NiksCiAgICAgIEMoYzNhZTNjMjYpfSwKLSAgICB7QygxNTlmNGQ5ZTAzMDdiMTEx
KSwgQygzZTE3OTE0YTU2NzVhMGMpLCBDKGFmODQ5YmQ0MjUwNDdiNTEpLAotICAgICBDKDNiNjll
ZGFkZjM1NzQzMmIpLCBDKDNhMmUzMTFjMTIxZTZiZjIpLCBDKDM4MGZhZDFlMjg4ZDU3ZTUpLAot
ICAgICBDKGJmN2M3ZThlZjBlM2I4M2EpLCBDKDNiNjllZGFkZjM1NzQzMmIpLCBDKDNhMmUzMTFj
MTIxZTZiZjIpLAotICAgICBDKDM4MGZhZDFlMjg4ZDU3ZTUpLCBDKGJmN2M3ZThlZjBlM2I4M2Ep
LCBDKDkyOTY2ZDVmNDM1NmFlOWIpLAotICAgICBDKDJhMDNmYzY2YzRkNmMwMzYpLCBDKDI1MTZk
OGJkZGIwZDUyNTkpLCBDKGIzZmZlOTczN2ZmNTA5MCksIEMoZjI5ZGI4YTIpfSwKKyAgICB7Qygx
NTlmNGQ5ZTAzMDdiMTExKSwgQygzZTE3OTE0YTU2NzVhMGMpLCBDKGFmODQ5YmQ0MjUwNDdiNTEp
LCBDKGYyOWRiOGEyKX0sCiAgICAge0MoY2MwYTg0MDcyNWE3ZTI1YiksIEMoNTdjNjk0NTQzOTZl
MTkzYSksIEMoOTc2ZWFmN2VlZTBiNDU0MCksCi0gICAgIEMoY2Q3YTQ2ODUwYjk1ZTkwMSksIEMo
YzU3ZjdkMDYwZGRhMjQ2ZiksIEMoNmI5NDA2ZWFkNjQwNzliZiksCi0gICAgIEMoMTFiMjhlMjBh
NTczYjdiZCksIEMoY2Q3YTQ2ODUwYjk1ZTkwMSksIEMoYzU3ZjdkMDYwZGRhMjQ2ZiksCi0gICAg
IEMoNmI5NDA2ZWFkNjQwNzliZiksIEMoMTFiMjhlMjBhNTczYjdiZCksIEMoMmQ2ZGIzNTZlOTM2
OWFjZSksCi0gICAgIEMoZGMwYWZlMTBmYmExOTMpLCBDKDVjZGIxMDg4NWRiYmZjZSksIEMoNWM3
MDBlMjA1NzgyZTM1YSksIEMoMWVmNGNiZjQpfSwKKyAgICAgQygxZWY0Y2JmNCl9LAogICAgIHtD
KGEyYjI3ZWUyMmY2M2MzZjEpLCBDKDllYmRlMGNlMWIzOTc2YjIpLCBDKDJmZTZhOTJhMjU3YWYz
MDgpLAotICAgICBDKDhjMWRmOTI3YTkzMGFmNTkpLCBDKGE0NjJmNDQyM2M5ZTM4NGUpLCBDKDIz
NjU0MjI1NWIyYWQ4ZDkpLAotICAgICBDKDU5NWQyMDFhMmMxOWQ1YmMpLCBDKDhjMWRmOTI3YTkz
MGFmNTkpLCBDKGE0NjJmNDQyM2M5ZTM4NGUpLAotICAgICBDKDIzNjU0MjI1NWIyYWQ4ZDkpLCBD
KDU5NWQyMDFhMmMxOWQ1YmMpLCBDKDIyYzg3ZDQ2MDRhNjdmMyksCi0gICAgIEMoNTg1YTA2ZWI0
YmM0NGM0ZiksIEMoYjQxNzVhN2FjN2VhYmNkOCksIEMoYTQ1N2QzZWViYTE0YWI4YyksCiAgICAg
IEMoYTliZTZjNDEpfSwKLSAgICB7QyhkOGYyZjIzNDg5OWJjYWIzKSwgQyhiMTBiMDM3Mjk3YzNh
MTY4KSwgQyhkZWJlYTJjNTEwY2VkYTdmKSwKLSAgICAgQyg5NDk4ZmVmYjg5MDI4N2NlKSwgQyhh
ZTY4YzJiZTViMWE2OWE2KSwgQyg2MTg5ZGZiYTM0ZWQ2NTZjKSwKLSAgICAgQyg5MTY1OGY5NTgz
NmU1MjA2KSwgQyg5NDk4ZmVmYjg5MDI4N2NlKSwgQyhhZTY4YzJiZTViMWE2OWE2KSwKLSAgICAg
Qyg2MTg5ZGZiYTM0ZWQ2NTZjKSwgQyg5MTY1OGY5NTgzNmU1MjA2KSwgQyhjMGJiNGZmZjMyYWVj
ZDRkKSwKLSAgICAgQyg5NDEyNWY1MDVhNTBlZWY5KSwgQyg2YWM0MDZlN2NmYmNlNWJiKSwgQygz
NDRhNGIxZGNkYjdmNWQ4KSwgQyhmYTMxODAxKX0sCisgICAge0MoZDhmMmYyMzQ4OTliY2FiMyks
IEMoYjEwYjAzNzI5N2MzYTE2OCksIEMoZGViZWEyYzUxMGNlZGE3ZiksIEMoZmEzMTgwMSl9LAog
ICAgIHtDKDU4NGYyODU0Mzg2NDg0NGYpLCBDKGQ3Y2VlOWZjMmQ0NmYyMGQpLCBDKGEzOGRjYTU2
NTczODcyMDUpLAotICAgICBDKDdhMGI2ZGJhYjlhMTRlNjkpLCBDKGM2ZDBhOWQ2YjBlMzFhYzQp
LCBDKGE2NzRkODU4MTJjN2NmNiksCi0gICAgIEMoNjM1MzhjMDM1MTA0OTk0MCksIEMoN2EwYjZk
YmFiOWExNGU2OSksIEMoYzZkMGE5ZDZiMGUzMWFjNCksCi0gICAgIEMoYTY3NGQ4NTgxMmM3Y2Y2
KSwgQyg2MzUzOGMwMzUxMDQ5OTQwKSwgQyg5NzEwZTVmMGJjOTNkMWQpLAotICAgICBDKGMyYmVh
NWJkN2M1NGRkZDQpLCBDKDQ4NzM5YWYyYmVkMGQzMmQpLCBDKGJhMmM0ZTA5ZTIxZmJhODUpLAog
ICAgICBDKDgzMzFjNWQ4KX0sCi0gICAge0MoYTk0YmU0NmRkOWFhNDFhZiksIEMoYTU3ZTViNzcy
M2QzZjliZCksIEMoMzRiZjg0NWE1MmZkMmYpLAotICAgICBDKDg0M2I1ODQ2M2M4ZGYwYWUpLCBD
KDc0YjI1ODMyNGU5MTYwNDUpLCBDKGJkZDczNTMyMzBlYjJiMzgpLAotICAgICBDKGZhZDMxZmNl
ZDdhYmFkZTUpLCBDKDg0M2I1ODQ2M2M4ZGYwYWUpLCBDKDc0YjI1ODMyNGU5MTYwNDUpLAotICAg
ICBDKGJkZDczNTMyMzBlYjJiMzgpLCBDKGZhZDMxZmNlZDdhYmFkZTUpLCBDKDI0MzZhZWFmYjAw
NDZmODUpLAotICAgICBDKDY1YmM5YWY5ZTVlMzMxNjEpLCBDKDkyNzMzYjFiM2FlOTA2MjgpLCBD
KGY0ODE0M2VhZjc4YTdhODkpLAotICAgICBDKGU5ODc2ZGI4KX0sCisgICAge0MoYTk0YmU0NmRk
OWFhNDFhZiksIEMoYTU3ZTViNzcyM2QzZjliZCksIEMoMzRiZjg0NWE1MmZkMmYpLCBDKGU5ODc2
ZGI4KX0sCiAgICAge0MoOWE4N2JlYTIyNzQ5MWQyMCksIEMoYTQ2ODY1N2UyYjljNDNlNyksIEMo
YWY5YmE2MGRiOGQ4OWVmNyksCi0gICAgIEMoY2M3NmY0MjllYTdhMTJiYiksIEMoNWYzMGVhZjJi
YjE0ODcwYSksIEMoNDM0ZTgyNGNiM2UwY2QxMSksCi0gICAgIEMoNDMxYTRkMzgyZTM5ZDE2ZSks
IEMoY2M3NmY0MjllYTdhMTJiYiksIEMoNWYzMGVhZjJiYjE0ODcwYSksCi0gICAgIEMoNDM0ZTgy
NGNiM2UwY2QxMSksIEMoNDMxYTRkMzgyZTM5ZDE2ZSksIEMoOWU1MWY5MTNjNDc3M2E4KSwKLSAg
ICAgQygzMmFiMTkyNTgyM2QwYWRkKSwgQyg5OWM2MWI1NGMxZDhmNjlkKSwgQygzOGNmYjgwZjAy
YjQzYjFmKSwKICAgICAgQygyN2IwNjA0ZSl9LAogICAgIHtDKDI3Njg4YzI0OTU4ZDFhNWMpLCBD
KGUzYjRhMWM5NDI5Y2YyNTMpLCBDKDQ4YTk1ODExZjcwZDY0YmMpLAotICAgICBDKDMyODA2MzIy
OWRiMjI4ODQpLCBDKDY3ZTljOTVmOGJhOTYwMjgpLCBDKDdjNmJmMDFjNjA0MzYwNzUpLAotICAg
ICBDKGZhNTUxNjFlN2Q5MDMwYjIpLCBDKDMyODA2MzIyOWRiMjI4ODQpLCBDKDY3ZTljOTVmOGJh
OTYwMjgpLAotICAgICBDKDdjNmJmMDFjNjA0MzYwNzUpLCBDKGZhNTUxNjFlN2Q5MDMwYjIpLCBD
KGRhZGJjMmYwZGFiOTE2ODEpLAotICAgICBDKGRhMzlkN2E0OTM0Y2ExMSksIEMoMTYyZTg0NWQy
NGMxYjQ1YyksIEMoZWI1YjlkY2Q4YzZlZDMxYiksIEMoZGNlYzA3ZjIpfSwKKyAgICAgQyhkY2Vj
MDdmMil9LAogICAgIHtDKDVkMWQzNzc5MGExODczYWQpLCBDKGVkOWNkNGJjYzVmYTEwOTApLCBD
KGNlNTFjZGUwNWQ4Y2Q5NmEpLAotICAgICBDKGY3MmMyNmU2MjQ0MDdlNjYpLCBDKGEwZWI1NDFi
ZGJjNmQ0MDkpLCBDKGMzZjQwYTJmNDBiM2IyMTMpLAotICAgICBDKDZhNzg0ZGU2ODc5NDQ5MmQp
LCBDKGY3MmMyNmU2MjQ0MDdlNjYpLCBDKGEwZWI1NDFiZGJjNmQ0MDkpLAotICAgICBDKGMzZjQw
YTJmNDBiM2IyMTMpLCBDKDZhNzg0ZGU2ODc5NDQ5MmQpLCBDKDEwYTM4YTIzZGJlZjc5MzcpLAot
ICAgICBDKDZhNTU2MGY4NTMyNTIyNzgpLCBDKGMzMzg3YmJmM2M3YjgyYmEpLCBDKGZiZWU3YzEy
ZWIwNzI4MDUpLAogICAgICBDKGNmZjBhODJhKX0sCiAgICAge0MoMWYwM2ZkMThiNzExZWVhOSks
IEMoNTY2ZDg5YjE5NDZkMzgxYSksIEMoNmU5NmU4M2ZjOTI1NjNhYiksCi0gICAgIEMoNDA1ZjY2
Y2Y4Y2FlMWEzMiksIEMoZDcyNjE3NDBkOGYxOGNlNiksIEMoZmVhM2FmNjRhNDEzZDBiMiksCi0g
ICAgIEMoZDY0ZDE4MTBlODM1MjBmZSksIEMoNDA1ZjY2Y2Y4Y2FlMWEzMiksIEMoZDcyNjE3NDBk
OGYxOGNlNiksCi0gICAgIEMoZmVhM2FmNjRhNDEzZDBiMiksIEMoZDY0ZDE4MTBlODM1MjBmZSks
IEMoZTEzMzRhMDBhNTgwYzZlOCksCi0gICAgIEMoNDU0MDQ5ZTFiNTJjMTVmKSwgQyg4ODk1ZDgy
M2Q5Nzc4MjQ3KSwgQyhlZmE3ZjJlODhiODI2NjE4KSwgQyhmZWM4MzYyMSl9LAotICAgIHtDKGYw
MzE2ZjI4NmNmNTI3YjYpLCBDKGY4NGMyOTUzOGRlMWFhNWEpLCBDKDc2MTJlZDNjOTIzZDRhNzEp
LAotICAgICBDKGQ0ZWNjZWJlOTM5M2VlOGEpLCBDKDJlYjc4NjdjMjMxOGNjNTkpLCBDKDFjZTYy
MWZkNzAwZmUzOTYpLAotICAgICBDKDY4NjQ1MGQ3YTM0Njg3OGEpLCBDKGQ0ZWNjZWJlOTM5M2Vl
OGEpLCBDKDJlYjc4NjdjMjMxOGNjNTkpLAotICAgICBDKDFjZTYyMWZkNzAwZmUzOTYpLCBDKDY4
NjQ1MGQ3YTM0Njg3OGEpLCBDKDc1YTVmMzc1NzlmOGI0Y2IpLAotICAgICBDKDUwMGNjMTZlYjY1
NDFkYzcpLCBDKGI3YjAyMzE3YjUzOWQ5YTYpLCBDKDM1MTlkZGZmNWJjMjBhMjkpLCBDKDc0M2Q4
ZGMpfSwKKyAgICAgQyhmZWM4MzYyMSl9LAorICAgIHtDKGYwMzE2ZjI4NmNmNTI3YjYpLCBDKGY4
NGMyOTUzOGRlMWFhNWEpLCBDKDc2MTJlZDNjOTIzZDRhNzEpLCBDKDc0M2Q4ZGMpfSwKICAgICB7
QygyOTcwMDhiY2IzZTM0MDFkKSwgQyg2MWE4ZTQwN2Y4MmIwYzY5KSwgQyhhNGEzNWJmZjA1MjRm
YTBlKSwKLSAgICAgQyg3YTYxZDhmNTUyYTUzNDQyKSwgQyg4MjFkMWQ4ZDhjZmFjZjM1KSwgQyg3
Y2MwNjM2MWI4NmQwNTU5KSwKLSAgICAgQygxMTliNjE3YThjMmJlMTk5KSwgQyg3YTYxZDhmNTUy
YTUzNDQyKSwgQyg4MjFkMWQ4ZDhjZmFjZjM1KSwKLSAgICAgQyg3Y2MwNjM2MWI4NmQwNTU5KSwg
QygxMTliNjE3YThjMmJlMTk5KSwgQygyOTk2NDg3ZGE2NzIxNzU5KSwKLSAgICAgQyg2MWE5MDEz
NzYwNzBiOTFkKSwgQyhkODhkZWUxMmFlOWM5YjNjKSwgQyg1NjY1NDkxYmUxZmE1M2E3KSwKICAg
ICAgQyg2NGQ0MWQyNil9LAotICAgIHtDKDQzYzYyNTI0MTFlZTNiZSksIEMoYjRjYTFiODA3Nzc3
NzE2OCksIEMoMjc0NmRjM2Y3ZGExNzM3ZiksCi0gICAgIEMoMjI0N2E0YjIwNThkMWM1MCksIEMo
MWIzZmExODRiMWQ3YmNjMCksIEMoZGViODU2MTM5OTVjMDZlZCksCi0gICAgIEMoY2JlMWQ5NTc0
ODVhM2NjZCksIEMoMjI0N2E0YjIwNThkMWM1MCksIEMoMWIzZmExODRiMWQ3YmNjMCksCi0gICAg
IEMoZGViODU2MTM5OTVjMDZlZCksIEMoY2JlMWQ5NTc0ODVhM2NjZCksIEMoZGZlMjQxZjhmMzNj
OTZiNiksCi0gICAgIEMoNjU5N2ViMDUwMTljMjEwOSksIEMoZGEzNDRiMmE2M2EyMTljZiksIEMo
NzliOGUzODg3NjEyMzc4YSksCi0gICAgIEMoYWNkOTBjODEpfSwKKyAgICB7Qyg0M2M2MjUyNDEx
ZWUzYmUpLCBDKGI0Y2ExYjgwNzc3NzcxNjgpLCBDKDI3NDZkYzNmN2RhMTczN2YpLCBDKGFjZDkw
YzgxKX0sCiAgICAge0MoY2UzOGE5YTU0ZmFkNjU5OSksIEMoNmQ2ZjRhOTBiOWU4NzU1ZSksIEMo
YzNlY2M3OWZmMTA1ZGUzZiksCi0gICAgIEMoZThiOWVlOTZlZmEyZDBlKSwgQyg5MDEyMjkwNWM0
YWI1MzU4KSwgQyg4NGY4MGM4MzJkNzE5NzljKSwKLSAgICAgQygyMjkzMTBmM2ZmYmJmNGM2KSwg
QyhlOGI5ZWU5NmVmYTJkMGUpLCBDKDkwMTIyOTA1YzRhYjUzNTgpLAotICAgICBDKDg0ZjgwYzgz
MmQ3MTk3OWMpLCBDKDIyOTMxMGYzZmZiYmY0YzYpLCBDKGNjOWViNDIxMDBjZDYzYTcpLAotICAg
ICBDKDdhMjgzZjJmM2RhN2I5ZiksIEMoMzU5YjA2MWQzMTRlN2E3MiksIEMoZDBkOTU5NzIwMDI4
ODYyKSwgQyg3Yzc0NmE0Yil9LAotICAgIHtDKDI3MGE5MzA1ZmVmNzBjZiksIEMoNjAwMTkzOTk5
ZDg4NGYzYSksIEMoZjRkNDllYWUwOWVkOGExKSwKLSAgICAgQygyZTA5MWI4NTY2MGYxMjk4KSwg
QyhiZmUzN2ZhZTFjZGQ2NGM5KSwgQyg4ZGRkZmJhYjkzMGY2NDk0KSwKLSAgICAgQygyY2NmNGIw
OGY1ZDQxN2EpLCBDKDJlMDkxYjg1NjYwZjEyOTgpLCBDKGJmZTM3ZmFlMWNkZDY0YzkpLAotICAg
ICBDKDhkZGRmYmFiOTMwZjY0OTQpLCBDKDJjY2Y0YjA4ZjVkNDE3YSksIEMoMzY1YzJlZTg1NTgy
ZmU2KSwKLSAgICAgQyhkZWUwMjdiY2QzNmRiNjJhKSwgQyhiMTUwOTk0ZDNjN2U1ODM4KSwgQyhm
ZGZkMWEwZTY5MmU0MzZkKSwKLSAgICAgQyhiMTA0N2U5OSl9LAorICAgICBDKDdjNzQ2YTRiKX0s
CisgICAge0MoMjcwYTkzMDVmZWY3MGNmKSwgQyg2MDAxOTM5OTlkODg0ZjNhKSwgQyhmNGQ0OWVh
ZTA5ZWQ4YTEpLCBDKGIxMDQ3ZTk5KX0sCiAgICAge0MoZTcxYmU3YzI4ZTg0ZDExOSksIEMoZWI2
YWNlNTk5MzI3MzZlNiksIEMoNzBjNDM5NzgwN2JhMTJjNSksCi0gICAgIEMoN2E5ZDc3NzgxYWM1
MzUwOSksIEMoNDQ4OWMzY2NmZGEzYjM5YyksIEMoZmE3MjJkNGYyNDNiNDk2NCksCi0gICAgIEMo
MjVmMTU4MDBiZmZkZDEyMiksIEMoN2E5ZDc3NzgxYWM1MzUwOSksIEMoNDQ4OWMzY2NmZGEzYjM5
YyksCi0gICAgIEMoZmE3MjJkNGYyNDNiNDk2NCksIEMoMjVmMTU4MDBiZmZkZDEyMiksIEMoZWQ4
NWU0MTU3ZmJkMzI5NyksCi0gICAgIEMoYWFiMTk2NzIyN2Q1OWVmZCksIEMoMjE5OTYzMTIxMmVi
MzgzOSksIEMoM2U0YzE5MzU5YWFlMWNjMiksCiAgICAgIEMoZDFmZDEwNjgpfSwKICAgICB7Qyhi
NWI1OGMyNGI1M2FhYTE5KSwgQyhkMmE2YWIwNzczZGQ4OTdmKSwgQyhlZjc2MmZlMDFlY2I1Yjk3
KSwKLSAgICAgQyg5ZGVlZmJjZmE0Y2FiMWYxKSwgQyhiNThmNTk0M2NkMjQ5MmJhKSwgQyhhOTZk
Y2M0ZDFmNDc4MmE3KSwKLSAgICAgQygxMDJiNjJhODIzMDlkZGU1KSwgQyg5ZGVlZmJjZmE0Y2Fi
MWYxKSwgQyhiNThmNTk0M2NkMjQ5MmJhKSwKLSAgICAgQyhhOTZkY2M0ZDFmNDc4MmE3KSwgQygx
MDJiNjJhODIzMDlkZGU1KSwgQygzNWZlNTI2ODQ3NjNiMzM4KSwKLSAgICAgQyhhZmUyNjE2NjUx
ZWFhZDFmKSwgQyg0M2UzODcxNWJkZmEwNWU3KSwgQyg4M2M5YmE4M2I1ZWM0YTQwKSwKICAgICAg
Qyg1NjQ4NjA3Nyl9LAogICAgIHtDKDQ0ZGQ1OWJkMzAxOTk1Y2YpLCBDKDNjY2FiZDc2NDkzYWRh
MWEpLCBDKDU0MGRiNGM4N2Q1NWVmMjMpLAotICAgICBDKGNmYzZkN2FkZGEzNTc5NyksIEMoMTRj
N2QxZjMyMzMyY2YwMyksIEMoMmQ1NTNmZmJmZjNiZTk5ZCksCi0gICAgIEMoYzkxYzRlZTBjYjU2
MzE4MiksIEMoY2ZjNmQ3YWRkYTM1Nzk3KSwgQygxNGM3ZDFmMzIzMzJjZjAzKSwKLSAgICAgQygy
ZDU1M2ZmYmZmM2JlOTlkKSwgQyhjOTFjNGVlMGNiNTYzMTgyKSwgQyg5YWE1ZTUwN2Y0OTEzNmYw
KSwKLSAgICAgQyg3NjBjNWRkMWE4MmM0ODg4KSwgQyhiZWVhN2U5NzRhMWNmYjVjKSwgQyg2NDBi
MjQ3Nzc0ZmU0YmY3KSwKICAgICAgQyg2MDY5YmU4MCl9LAotICAgIHtDKGI0ZDQ3ODllYjZmMjYz
MGIpLCBDKGJmNjk3MzI2M2NlOGVmMGUpLCBDKGQxYzc1YzUwODQ0YjlkMyksCi0gICAgIEMoYmNl
OTA1OTAwYzFlYzZlYSksIEMoYzMwZjMwNGY0MDQ1NDg3ZCksIEMoYTVjNTUwMTY2YjNhMTQyYiks
Ci0gICAgIEMoMmY0ODJiNGUzNTMyNzI4NyksIEMoYmNlOTA1OTAwYzFlYzZlYSksIEMoYzMwZjMw
NGY0MDQ1NDg3ZCksCi0gICAgIEMoYTVjNTUwMTY2YjNhMTQyYiksIEMoMmY0ODJiNGUzNTMyNzI4
NyksIEMoMTViMjFkZGRkZjM1NTQzOCksCi0gICAgIEMoNDk2NDcxZmEzMDA2YmFiKSwgQygyYThm
ZDQ1OGQwNmMxYTMyKSwgQyhkYjkxZThhZTgxMmYwYjhkKSwgQygyMDc4MzU5Yil9LAorICAgIHtD
KGI0ZDQ3ODllYjZmMjYzMGIpLCBDKGJmNjk3MzI2M2NlOGVmMGUpLCBDKGQxYzc1YzUwODQ0Yjlk
MyksIEMoMjA3ODM1OWIpfSwKICAgICB7QygxMjgwNzgzM2M0NjM3MzdjKSwgQyg1OGU5MjdlYTNi
Mzc3NmI0KSwgQyg3MmRkMjBlZjFjMmY4YWQwKSwKLSAgICAgQyg5MTBiNjEwZGU3YTk2N2JmKSwg
Qyg4MDFiYzg2MjEyMGY2YmY1KSwgQyg5NjUzZWZlZWQ1ODk3NjgxKSwKLSAgICAgQyhmNTM2N2Zm
ODNlOWViYmIzKSwgQyg5MTBiNjEwZGU3YTk2N2JmKSwgQyg4MDFiYzg2MjEyMGY2YmY1KSwKLSAg
ICAgQyg5NjUzZWZlZWQ1ODk3NjgxKSwgQyhmNTM2N2ZmODNlOWViYmIzKSwgQyhjZjU2ZDQ4OWFm
ZDFiMGJmKSwKLSAgICAgQyhjN2M3OTM3MTVjYWUzZGU4KSwgQyg2MzFmOTFkNjRhYmFlNDdjKSwg
Qyg1ZjFmNDJmYjE0YTQ0NGEyKSwKICAgICAgQyg5ZWEyMTAwNCl9LAogICAgIHtDKGU4ODQxOTky
MmI4NzE3NmYpLCBDKGJjZjMyZjQxYTdkZGJmNmYpLCBDKGQ2ZWJlZmQ4MDg1YzFhMGYpLAotICAg
ICBDKGQxZDQ0ZmU5OTQ1MWVmNzIpLCBDKGVjOTUxYmE4ZTUxZTM1NDUpLCBDKGMwY2E4NmIzNjA3
NDZlOTYpLAotICAgICBDKGFhNjc5Y2MwNjZhODA0MGIpLCBDKGQxZDQ0ZmU5OTQ1MWVmNzIpLCBD
KGVjOTUxYmE4ZTUxZTM1NDUpLAotICAgICBDKGMwY2E4NmIzNjA3NDZlOTYpLCBDKGFhNjc5Y2Mw
NjZhODA0MGIpLCBDKDUxMDY1ODYxZWNlNmZmYzEpLAotICAgICBDKDc2Nzc3MzY4YTI5OTdlMTEp
LCBDKDg3ZjI3OGY0NjczMTEwMGMpLCBDKGJiYWE0MTQwYmRiYTQ1MjcpLAogICAgICBDKDljOWNm
ZTg4KX0sCiAgICAge0MoMTA1MTkxZTBlYzhmN2Y2MCksIEMoNTkxOGRiZmNjYTk3MWU3OSksIEMo
NmIyODVjOGE5NDQ3NjdiOSksCi0gICAgIEMoZDNlODZhYzRmNWVjY2ZhNCksIEMoZTUzOTlkZjJi
MTA2Y2ExKSwgQyg4MTRhYWRmYWNkMjE3ZjFkKSwKLSAgICAgQygyNzU0ZTNkZWYxYzQwNWE5KSwg
QyhkM2U4NmFjNGY1ZWNjZmE0KSwgQyhlNTM5OWRmMmIxMDZjYTEpLAotICAgICBDKDgxNGFhZGZh
Y2QyMTdmMWQpLCBDKDI3NTRlM2RlZjFjNDA1YTkpLCBDKDk5MjkwMzIzYjlmMDZlNzQpLAotICAg
ICBDKGE5NzgyZTA0M2YyNzE0NjEpLCBDKDEzYzhiM2I4YzI3NWE4NjApLCBDKDYwMzhkNjIwZTU4
MWU5ZTcpLAogICAgICBDKGI3MGE2ZGRkKX0sCiAgICAge0MoYTViODhiZjczOTlhOWYwNyksIEMo
ZmNhM2RkZmQ5NjQ2MWNjNCksIEMoZWJlNzM4ZmRjMDI4MmZjNiksCi0gICAgIEMoNjlhZmJjODAw
NjA2ZDBmYiksIEMoNjEwNGI5N2E5ZGIxMmRmNyksIEMoZmNjMDkxOThiYjkwYmY5ZiksCi0gICAg
IEMoYzVlMDc3ZTQxYTY1YmE5MSksIEMoNjlhZmJjODAwNjA2ZDBmYiksIEMoNjEwNGI5N2E5ZGIx
MmRmNyksCi0gICAgIEMoZmNjMDkxOThiYjkwYmY5ZiksIEMoYzVlMDc3ZTQxYTY1YmE5MSksIEMo
ZGIyNjE4MzVlZThhYTA4ZSksCi0gICAgIEMoZGIwZWU2NjJlNTc5NmRjOSksIEMoZmMxODgwZWNl
YzQ5OWU1ZiksIEMoNjQ4ODY2ZmJlMTUwMjAzNCksCiAgICAgIEMoZGVhMzcyOTgpfSwKICAgICB7
QyhkMDhjM2Y1NzQ3ZDg0ZjUwKSwgQyg0ZTcwOGIyN2QxYjZmOGFjKSwgQyg3MGY3MGZkNzM0ODg4
NjA2KSwKLSAgICAgQyg5MDlhZTAxOWQ3NjFkMDE5KSwgQygzNjhiZjRhYWIxYjg2ZWY5KSwgQygz
MDhiZDYxNmQ1NDYwMjM5KSwKLSAgICAgQyg0ZmQzMzI2OWY3Njc4M2VhKSwgQyg5MDlhZTAxOWQ3
NjFkMDE5KSwgQygzNjhiZjRhYWIxYjg2ZWY5KSwKLSAgICAgQygzMDhiZDYxNmQ1NDYwMjM5KSwg
Qyg0ZmQzMzI2OWY3Njc4M2VhKSwgQyg3ZDUzYjM3YzE5NzEzZWFiKSwKLSAgICAgQyg2YmJhNmVh
YmRhNThhODk3KSwgQyg5MWFiYjUwZWZjMTE2MDQ3KSwgQyg0ZTkwMmYzNDdlMGUwZTM1KSwKICAg
ICAgQyg4ZjQ4MDgxOSl9LAotICAgIHtDKDJmNzJkMTJhNDAwNDRiNGIpLCBDKDg4OTY4OTM1MmZl
YzUzZGUpLCBDKGYwM2U2YWQ4N2ViMmYzNiksCi0gICAgIEMoZWY3OWYyOGQ4NzRiOWUyZCksIEMo
YjUxMjA4OWU4ZTYzYjc2YyksIEMoMjRkYzA2ODMzYmYxOTNhOSksCi0gICAgIEMoM2MyMzMwOGJh
OGU5OWQ3ZSksIEMoZWY3OWYyOGQ4NzRiOWUyZCksIEMoYjUxMjA4OWU4ZTYzYjc2YyksCi0gICAg
IEMoMjRkYzA2ODMzYmYxOTNhOSksIEMoM2MyMzMwOGJhOGU5OWQ3ZSksIEMoNWNlZmY3Yjg1Y2Fj
ZWZiNyksCi0gICAgIEMoZWYzOTAzMzg4OThjZDczKSwgQyhiMTI5NjdkN2QyMjU0ZjU0KSwgQyhk
ZTg3NGNiZDhhZWY3Yjc1KSwgQygzMGIzYjE2KX0sCisgICAge0MoMmY3MmQxMmE0MDA0NGI0Yiks
IEMoODg5Njg5MzUyZmVjNTNkZSksIEMoZjAzZTZhZDg3ZWIyZjM2KSwgQygzMGIzYjE2KX0sCiAg
ICAge0MoYWExZjYxZmRjNWMyZTExZSksIEMoYzJjNTZjZDExMjc3YWIyNyksIEMoYTFlNzMwNjlm
ZGYxZjk0ZiksCi0gICAgIEMoODE4NGJhYjM2YmI3OWRmMCksIEMoYzgxOTI5Y2U4NjU1Yjk0MCks
IEMoMzAxYjExYmY4YTRkOGNlOCksCi0gICAgIEMoNzMxMjZmZDQ1YWI3NWRlOSksIEMoODE4NGJh
YjM2YmI3OWRmMCksIEMoYzgxOTI5Y2U4NjU1Yjk0MCksCi0gICAgIEMoMzAxYjExYmY4YTRkOGNl
OCksIEMoNzMxMjZmZDQ1YWI3NWRlOSksIEMoNGJkNmY3NmU0ODg4MjI5YSksCi0gICAgIEMoOWFh
ZTM1NWI1NGE3NTZkNSksIEMoY2EzZGU5NzI2ZjZlOTlkNSksIEMoODNmODBjYWM1YmMzNjg1Miks
CiAgICAgIEMoZjMxYmM0ZTgpfSwKICAgICB7Qyg5NDg5YjM2ZmUyMjQ2MjQ0KSwgQygzMzU1MzY3
MDMzYmU3NGI4KSwgQyg1ZjU3YzIyNzdjYmNlNTE2KSwKLSAgICAgQyhiYzYxNDE0Zjk4MDJlY2Fm
KSwgQyg4ZWRkMWU3YTUwNTYyOTI0KSwgQyg0OGY0YWI3NGEzNWU5NWYyKSwKLSAgICAgQyhjYzFh
ZmNmZDk5YTE4MGU3KSwgQyhiYzYxNDE0Zjk4MDJlY2FmKSwgQyg4ZWRkMWU3YTUwNTYyOTI0KSwK
LSAgICAgQyg0OGY0YWI3NGEzNWU5NWYyKSwgQyhjYzFhZmNmZDk5YTE4MGU3KSwgQyg1MTdkZDVl
M2FjZjY2MTEwKSwKLSAgICAgQyg3ZGQzYWQ5ZTg5NzhiMzBkKSwgQygxZjZkNWRmYzcwZGU4MTJi
KSwgQyg5NDdkYWFiYTY0NDFhYWYzKSwKICAgICAgQyg0MTlmOTUzYil9LAogICAgIHtDKDM1OGQ3
YzA0NzZhMDQ0Y2QpLCBDKGUwYjdiNDdiY2JkODg1NGYpLCBDKGZmYjQyZWM2OTY3MDU1MTkpLAot
ICAgICBDKGQ0NWU0NGMyNjNlOTVjMzgpLCBDKGRmNjFkYjUzOTIzYWUzYjEpLCBDKGYyYmM5NDhj
YzRmYzAyN2MpLAotICAgICBDKDhhODAwMGM2MDY2NzcyYTMpLCBDKGQ0NWU0NGMyNjNlOTVjMzgp
LCBDKGRmNjFkYjUzOTIzYWUzYjEpLAotICAgICBDKGYyYmM5NDhjYzRmYzAyN2MpLCBDKDhhODAw
MGM2MDY2NzcyYTMpLCBDKDlmZDkzYzk0MmQzMWZhMTcpLAotICAgICBDKGQ3NjUxZWNlYmUwOWNi
ZDMpLCBDKDY4NjgyY2VmYjZhNmYxNjUpLCBDKDU0MWViOTlhMmRjZWU0MGUpLAogICAgICBDKDIw
ZTllNzZkKX0sCiAgICAge0MoYjBjNDhkZjE0Mjc1MjY1YSksIEMoOWRhNDQ0ODk3NTkwNWVmYSks
IEMoZDcxNjYxOGU0MTRjZWI2ZCksCi0gICAgIEMoMzBlODg4YWY3MGRmMWU1NiksIEMoNGJlZTU0
YmQ0NzI3NGY2OSksIEMoMTc4YjQwNTllMWEwYWZlNSksCi0gICAgIEMoNmUyYzk2YjdmNThlNTE3
OCksIEMoMzBlODg4YWY3MGRmMWU1NiksIEMoNGJlZTU0YmQ0NzI3NGY2OSksCi0gICAgIEMoMTc4
YjQwNTllMWEwYWZlNSksIEMoNmUyYzk2YjdmNThlNTE3OCksIEMoYmI0MjlkM2I5Mjc1ZTliYyks
Ci0gICAgIEMoYzE5ODAxM2YwOWNhZmRjNiksIEMoZWMwYTZlZTRmYjVkZTM0OCksIEMoNzQ0ZTFl
OGVkMmViMWViMCksCiAgICAgIEMoNjQ2ZjBmZjgpfSwKICAgICB7QyhkYWE3MGJiMzAwOTU2NTg4
KSwgQyg0MTBlYTY4ODNhMjQwYzZkKSwgQyhmNWM4MjM5ZmI1NjczZWIzKSwKLSAgICAgQyg4YjFk
N2JiNDkwM2MxMDVmKSwgQyhjZmIxYzMyMmI3Mzg5MWQ0KSwgQyg1ZjNiNzkyYjIyZjA3Mjk3KSwK
LSAgICAgQyhmZDY0MDYxZjhiZTg2ODExKSwgQyg4YjFkN2JiNDkwM2MxMDVmKSwgQyhjZmIxYzMy
MmI3Mzg5MWQ0KSwKLSAgICAgQyg1ZjNiNzkyYjIyZjA3Mjk3KSwgQyhmZDY0MDYxZjhiZTg2ODEx
KSwgQygxZDJkYjcxMjkyMWNmYzJiKSwKLSAgICAgQyhjZDFiMmIyZjJjZWUxOGFlKSwgQyg2YjZm
ODc5MGRjN2ZlYjA5KSwgQyg0NmMxNzllZmEzZjBmNTE4KSwKICAgICAgQyhlZWI3ZWNhOCl9LAot
ICAgIHtDKDRlYzk3YTIwYjZjNGM3YzIpLCBDKDU5MTNiMWNkNDU0ZjI5ZmQpLCBDKGE5NjI5Zjlk
YWYwNmQ2ODUpLAotICAgICBDKDg1MmM5NDk5MTU2YThmMyksIEMoM2ExODBhNmFiZmI3OTAxNiks
IEMoOWZjM2M0NzY0MDM3YzNjOSksCi0gICAgIEMoMjg5MGM0MmZjMGQ5NzJjZiksIEMoODUyYzk0
OTkxNTZhOGYzKSwgQygzYTE4MGE2YWJmYjc5MDE2KSwKLSAgICAgQyg5ZmMzYzQ3NjQwMzdjM2M5
KSwgQygyODkwYzQyZmMwZDk3MmNmKSwgQygxZjkyMjMxZDRlNTM3NjUxKSwKLSAgICAgQyhmYWI4
YmIwN2FhNTRiN2I5KSwgQyhlMDVkMmQ3NzFjNDg1ZWQ0KSwgQyhkNTBiMzRiZjgwOGNhNzMxKSwg
Qyg4MTEyYmI5KX0sCisgICAge0MoNGVjOTdhMjBiNmM0YzdjMiksIEMoNTkxM2IxY2Q0NTRmMjlm
ZCksIEMoYTk2MjlmOWRhZjA2ZDY4NSksIEMoODExMmJiOSl9LAogICAgIHtDKDVjMzMyMzYyODQz
NWEyZTgpLCBDKDFiZWE0NWNlOWU3MmE2ZTMpLCBDKDkwNGYwYTcwMjdkZGI1MmUpLAotICAgICBD
KDkzOWYzMWRlMTRkY2RjN2IpLCBDKGE2OGZkZjQzNzlkZjA2OCksIEMoZjE2OWUxZjBiODM1Mjc5
ZCksCi0gICAgIEMoNzQ5OGU0MzJmOTYxOWIyNyksIEMoOTM5ZjMxZGUxNGRjZGM3YiksIEMoYTY4
ZmRmNDM3OWRmMDY4KSwKLSAgICAgQyhmMTY5ZTFmMGI4MzUyNzlkKSwgQyg3NDk4ZTQzMmY5NjE5
YjI3KSwgQygxYWEyYTFmMTEwODhlNzg1KSwKLSAgICAgQyhkNmFkNzJmNDU3MjlkZTc4KSwgQyg5
YTYzODE0MTU3YzgwMjY3KSwgQyg1NTUzOGUzNWM2NDhlNDM1KSwKICAgICAgQyg4NWE2ZDQ3Nyl9
LAogICAgIHtDKGMxZWYyNmJlYTI2MGFiZGIpLCBDKDZlZTQyM2YyMTM3ZjkyODApLCBDKGRmMjEx
OGI5NDZlZDBiNDMpLAotICAgICBDKDExYjg3ZmIxYjkwMGNjMzkpLCBDKGUzM2U1OWI5MGRkODE1
YjEpLCBDKGFhNmNiNWM0YmFmYWU3NDEpLAotICAgICBDKDczOTY5OTk1MWNhOGM3MTMpLCBDKDEx
Yjg3ZmIxYjkwMGNjMzkpLCBDKGUzM2U1OWI5MGRkODE1YjEpLAotICAgICBDKGFhNmNiNWM0YmFm
YWU3NDEpLCBDKDczOTY5OTk1MWNhOGM3MTMpLCBDKDJiNDM4OWE5NjczMTAwNzcpLAotICAgICBD
KDFkNTM4MjU2OGEzMWMyYzkpLCBDKDU1ZDFlNzg3ZmJlNjg5OTEpLCBDKDI3N2MyNTRiYzMxMzAx
ZTcpLAogICAgICBDKDU2Zjc2Yzg0KX0sCiAgICAge0MoNmJlNzM4MWIxMTVkNjUzYSksIEMoZWQw
NDYxOTA3NThlYTUxMSksIEMoZGU2YTQ1ZmZjM2VkMTE1OSksCi0gICAgIEMoYTY0NzYwZTQwNDE0
NDdkMCksIEMoZTNlYWM0OWYzZTBjNTEwOSksIEMoZGQ4NmM0ZDRjYjYyNThlMiksCi0gICAgIEMo
ZWZhOTg1N2FmZDA0NmM3ZiksIEMoYTY0NzYwZTQwNDE0NDdkMCksIEMoZTNlYWM0OWYzZTBjNTEw
OSksCi0gICAgIEMoZGQ4NmM0ZDRjYjYyNThlMiksIEMoZWZhOTg1N2FmZDA0NmM3ZiksIEMoZmFi
NzkzZGFlODI0NmYxNiksCi0gICAgIEMoYzllM2IxMjFiMzFkMDk0YyksIEMoYTJhMGY1NTg1ODQ2
NTIyNiksIEMoZGJhNmYwZmYzOTQzNjM0NCksCiAgICAgIEMoOWFmNDVkNTUpfSwKICAgICB7Qyhh
ZTNlZWNlMTcxMWIyMTA1KSwgQygxNGZkM2Y0MDI3ZjgxYTRhKSwgQyhhYmI3ZTQ1MTc3ZDE1MWRi
KSwKLSAgICAgQyg1MDFmM2U5YjE4ODYxZTQ0KSwgQyg0NjUyMDExNzAwNzRlN2Q4KSwgQyg5NmQ1
YzkxOTcwZjJjYjEyKSwKLSAgICAgQyg0MGZkMjhjNDM1MDZjOTVkKSwgQyg1MDFmM2U5YjE4ODYx
ZTQ0KSwgQyg0NjUyMDExNzAwNzRlN2Q4KSwKLSAgICAgQyg5NmQ1YzkxOTcwZjJjYjEyKSwgQyg0
MGZkMjhjNDM1MDZjOTVkKSwgQyhlODZjNGIwNzgwMmFhZmYzKSwKLSAgICAgQyhmMzE3ZDE0MTEy
MzcyYTcwKSwgQyg2NDFiMTNlNTg3NzExNjUwKSwgQyg0OTE1NDIxYWIxMDkwZWFhKSwKICAgICAg
QyhkMWMzMzc2MCl9LAogICAgIHtDKDM3NmMyODU4OGI4ZmIzODkpLCBDKDZiMDQ1ZTg0ZDg0OTFl
ZDIpLCBDKDRlODU3ZWZmYjdkNGU3ZGMpLAotICAgICBDKDE1NGRkNzlmZDJmOTg0YjQpLCBDKGYx
MTE3MTc3NTYyMmMxYzMpLCBDKDFmYmUzMDk4MmU3OGU2ZjApLAotICAgICBDKGE0NjBhMTVkY2Yz
MjdlNDQpLCBDKDE1NGRkNzlmZDJmOTg0YjQpLCBDKGYxMTE3MTc3NTYyMmMxYzMpLAotICAgICBD
KDFmYmUzMDk4MmU3OGU2ZjApLCBDKGE0NjBhMTVkY2YzMjdlNDQpLCBDKGYzNTllMDkwMGNjM2Q1
ODIpLAotICAgICBDKDdlMTEwNzA0NDc5NzZkMDApLCBDKDMyNGU2ZGFmMjc2ZWE0YjUpLCBDKDdh
YTZlMmRmMGNjOTRmYTIpLAogICAgICBDKGM1NmJiZjY5KX0sCiAgICAge0MoNThkOTQzNTAzYmI2
NzQ4ZiksIEMoNDE5YzZjOGU4OGFjNzBmNiksIEMoNTg2NzYwY2JmM2QzZDM2OCksCi0gICAgIEMo
YjdlMTY0OTc5ZDVjY2ZjMSksIEMoMTJjYjQyMzBkMjZiZjI4NiksIEMoZjFiZjkxMGQ0NGJkODRj
YiksCi0gICAgIEMoYjMyYzI0YzZhNDAyNzIpLCBDKGI3ZTE2NDk3OWQ1Y2NmYzEpLCBDKDEyY2I0
MjMwZDI2YmYyODYpLAotICAgICBDKGYxYmY5MTBkNDRiZDg0Y2IpLCBDKGIzMmMyNGM2YTQwMjcy
KSwgQygxMWVkMTJlMzRjNDhjMDM5KSwKLSAgICAgQyhiMGMyNTM4ZTUxZDBhNmFjKSwgQyg0MjY5
YmI3NzNlMWQ1NTNhKSwgQyhlMzVhOWRiYWJkMzQ4NjcpLCBDKGFiZWNmYjliKX0sCisgICAgIEMo
YWJlY2ZiOWIpfSwKICAgICB7QyhkZmZmNTk4OWY1Y2ZkOWExKSwgQyhiY2VlMmU3ZWEzYTk2Zjgz
KSwgQyg2ODFjNzg3NGFkYjI5MDE3KSwKLSAgICAgQygzZmY2YzhhYzdjMzZiNjNhKSwgQyg0OGJj
ODgzMWQ4NDllMzI2KSwgQygzMGIwNzhlNzZiMDIxNGUyKSwKLSAgICAgQyg0Mjk1NGU2YWQ3MjFi
OTIwKSwgQygzZmY2YzhhYzdjMzZiNjNhKSwgQyg0OGJjODgzMWQ4NDllMzI2KSwKLSAgICAgQygz
MGIwNzhlNzZiMDIxNGUyKSwgQyg0Mjk1NGU2YWQ3MjFiOTIwKSwgQyhmOWFlYjMzZDE2NGI0NDcy
KSwKLSAgICAgQyg3YjM1M2IxMTA4MzFkYmRjKSwgQygxNmY2NGM4MmY0NGFlMTdiKSwgQyhiNzEy
NDRjYzE2NGIzYjJiKSwKICAgICAgQyg4ZGUxMzI1NSl9LAogICAgIHtDKDdmYjE5ZWIxYTQ5NmU4
ZjUpLCBDKGQ0OWU1ZGZkYjVjMDgzM2YpLCBDKGMwZDVkN2IyZjdjNDhkYzcpLAotICAgICBDKDFh
NTczMTNhMzJmMjJkZGUpLCBDKDMwYWY0NmU0OTg1MGJmOGIpLCBDKGFhMGZlOGQxMmY4MDhmODMp
LAotICAgICBDKDQ0M2UzMWQ3MDg3M2JiNmIpLCBDKDFhNTczMTNhMzJmMjJkZGUpLCBDKDMwYWY0
NmU0OTg1MGJmOGIpLAotICAgICBDKGFhMGZlOGQxMmY4MDhmODMpLCBDKDQ0M2UzMWQ3MDg3M2Ji
NmIpLCBDKGJiZWI2N2M0OWM5ZmRjMTMpLAotICAgICBDKDE4ZjFlMmE4OGY1OWY5ZDUpLCBDKGZi
MWIwNTAzOGU1ZGVmMTEpLCBDKGQwNDUwYjVjZTRjMzljNTIpLAogICAgICBDKGE5OGVlMjk5KX0s
CiAgICAge0MoNWRiYTViMGRhZGNjZGJhYSksIEMoNGJhOGRhOGRlZDg3ZmNkYyksIEMoZjY5M2Zk
ZDI1YmFkZjJmMCksCi0gICAgIEMoZTkwMjllNjM2NDI4NjU4NyksIEMoYWU2OWY0OWVjYjQ2NzI2
YyksIEMoMThlMDAyNjc5MjE3YzQwNSksCi0gICAgIEMoYmQ2ZDY2ZTg1MzMyYWU5ZiksIEMoZTkw
MjllNjM2NDI4NjU4NyksIEMoYWU2OWY0OWVjYjQ2NzI2YyksCi0gICAgIEMoMThlMDAyNjc5MjE3
YzQwNSksIEMoYmQ2ZDY2ZTg1MzMyYWU5ZiksIEMoNmJmMzMwYjFjMzUzZGQyYSksCi0gICAgIEMo
NzRlOWYyZTcxZTNhNDE1MiksIEMoM2Y4NTU2MGI1MGY2YzQxMyksIEMoZDMzYTUyYTQ3ZWFlZDJi
NCksCiAgICAgIEMoMzAxNWY1NTYpfSwKICAgICB7Qyg2ODhiZWY0YjEzNWE2ODI5KSwgQyg4ZDMx
ZDgyYWJjZDU0ZThlKSwgQyhmOTVmOGEzMGQ1NTAzNmQ3KSwKLSAgICAgQygzZDhjOTBlMjdhYTJl
MTQ3KSwgQygyZWM5MzdjZTBhYTIzNmI0KSwgQyg4OWI1NjM5OTZkM2EwYjc4KSwKLSAgICAgQygz
OWIwMjQxM2IyM2MzZjA4KSwgQygzZDhjOTBlMjdhYTJlMTQ3KSwgQygyZWM5MzdjZTBhYTIzNmI0
KSwKLSAgICAgQyg4OWI1NjM5OTZkM2EwYjc4KSwgQygzOWIwMjQxM2IyM2MzZjA4KSwgQyg4ZDQ3
NWEyZTY0ZmFmMmQyKSwKLSAgICAgQyg0ODU2N2Y3ZGNhNDZlY2FmKSwgQygyNTRjZGEwOGQ1Zjg3
YTZkKSwgQyhlYzZhZTlmNzI5YzQ3MDM5KSwKICAgICAgQyg1YTQzMGUyOSl9LAogICAgIHtDKGQ4
MzIzYmUwNTQzM2E0MTIpLCBDKDhkNDhmYTJiMmI3NjE0MWQpLCBDKDNkMzQ2ZjIzOTc4MzM2YTUp
LAotICAgICBDKDRkNTBjNzUzNzU2MjAzM2YpLCBDKDU3ZGM3NjI1YjYxZGZlODkpLCBDKDk3MjNh
OWY0YzA4YWQ5M2EpLAotICAgICBDKDUzMDk1OTZmNDhhYjQ1NmIpLCBDKDRkNTBjNzUzNzU2MjAz
M2YpLCBDKDU3ZGM3NjI1YjYxZGZlODkpLAotICAgICBDKDk3MjNhOWY0YzA4YWQ5M2EpLCBDKDUz
MDk1OTZmNDhhYjQ1NmIpLCBDKDdlNDUzMDg4MDE5ZDIyMGYpLAotICAgICBDKDg3NzYwNjdiYTZh
Yjk3MTQpLCBDKDY3ZTFkMDZiZDE5NWRlMzkpLCBDKDc0YTFhMzJmODk5NGI5MTgpLAogICAgICBD
KDI3OTdhZGQwKX0sCiAgICAge0MoM2I1NDA0Mjc4YTU1YTdmYyksIEMoMjNjYTBiMzI3YzJkMGE4
MSksIEMoYTZkNjUzMjk1NzFjODkyYyksCi0gICAgIEMoNDU1MDQ4MDFlMGU2MDY2YiksIEMoODZl
NmM2ZDYxNTJhM2QwNCksIEMoNGYzZGIxYzUzZWNhMjk1MiksCi0gICAgIEMoZDI0ZDY5YjNlOWVm
MTBmMyksIEMoNDU1MDQ4MDFlMGU2MDY2YiksIEMoODZlNmM2ZDYxNTJhM2QwNCksCi0gICAgIEMo
NGYzZGIxYzUzZWNhMjk1MiksIEMoZDI0ZDY5YjNlOWVmMTBmMyksIEMoOTNhMGRlMjIxOWU2NmE3
MCksCi0gICAgIEMoODkzMmM3MTE1Y2NiMWY4YSksIEMoNWVmNTAzZmRmMjg0MWE4YyksIEMoMzgw
NjRkZDllZmE4MGE0MSksCiAgICAgIEMoMjdkNTUwMTYpfSwKICAgICB7QygyYTk2YTNmOTZjNWU5
YmJjKSwgQyg4Y2FmODU2NmUyMTJkZGE4KSwgQyg5MDRkZTU1OWNhMTZlNDVlKSwKLSAgICAgQyhm
MTNiYzJkOWMyZmUyMjJlKSwgQyhiZTRjY2VjOWE2Y2RjY2ZkKSwgQygzN2IyY2JkZDk3M2EzYWM5
KSwKLSAgICAgQyg3YjMyMjNjZDljOTQ5N2JlKSwgQyhmMTNiYzJkOWMyZmUyMjJlKSwgQyhiZTRj
Y2VjOWE2Y2RjY2ZkKSwKLSAgICAgQygzN2IyY2JkZDk3M2EzYWM5KSwgQyg3YjMyMjNjZDljOTQ5
N2JlKSwgQyhkNTkwNDQ0MGYzNzZmODg5KSwKLSAgICAgQyg2MmIxMzE4NzY5OWM0NzNjKSwgQyg0
NzUxYjg5MjUxZjI2NzI2KSwgQyg5NTAwZDg0ZmEzYTYxYmE4KSwKICAgICAgQyg4NDk0NWE4Mil9
LAogICAgIHtDKDIyYmViZmRjYzI2ZDE4ZmYpLCBDKDRiNGQ4ZGNiMTA4MDdiYTEpLCBDKDQwMjY1
ZWVlMzBjNmI4OTYpLAotICAgICBDKDM3NTJiNDIzMDczYjExOWEpLCBDKDM3N2RjNWViN2M2NjJi
ZGIpLCBDKDJiOWYwN2Y5M2E2YzI1YjkpLAotICAgICBDKDk2ZjI0ZWRlMmJkYzA3MTgpLCBDKDM3
NTJiNDIzMDczYjExOWEpLCBDKDM3N2RjNWViN2M2NjJiZGIpLAotICAgICBDKDJiOWYwN2Y5M2E2
YzI1YjkpLCBDKDk2ZjI0ZWRlMmJkYzA3MTgpLCBDKGY3Njk5YjEyYzMxNDE3YmQpLAotICAgICBD
KDE3YjM2NmY0MDFjNThiMiksIEMoYmY2MDE4OGQ1ZjQzN2IzNyksIEMoNDg0NDM2ZTU2ZGYxN2Yw
NCksIEMoM2VmN2UyMjQpfSwKKyAgICAgQygzZWY3ZTIyNCl9LAogICAgIHtDKDYyN2EyMjQ5ZWM2
YmJjYzIpLCBDKGMwNTc4YjQ2MmE0NjczNWEpLCBDKDQ5NzRiOGVlMWMyZDRmMWYpLAotICAgICBD
KGViZGJiOTE4ZWI2ZDgzN2YpLCBDKDhmYjVmMjE4ZGQ4NDE0N2MpLCBDKGM3N2RkMWY4ODFkZjJj
NTQpLAotICAgICBDKDYyZWFjMjk4ZWMyMjZkYzMpLCBDKGViZGJiOTE4ZWI2ZDgzN2YpLCBDKDhm
YjVmMjE4ZGQ4NDE0N2MpLAotICAgICBDKGM3N2RkMWY4ODFkZjJjNTQpLCBDKDYyZWFjMjk4ZWMy
MjZkYzMpLCBDKDQzZWRlZDgzYzRiNjBiZDApLAotICAgICBDKDlhMGE0MDNiNTQ4NzUwM2IpLCBD
KDI1ZjMwNWQ5MTQ3ZjBiZGEpLCBDKDNhZDQxN2Y1MTFiYzFlNjQpLAogICAgICBDKDM1ZWQ4ZGM4
KX0sCi0gICAge0MoM2FiYWYxNjY3YmEyZjNlMCksIEMoZWU3ODQ3NmI1ZWVhZGMxKSwgQyg3ZTU2
YWMwYTZjYTRmM2Y0KSwKLSAgICAgQyhmMWI5YjQxM2RmOWQ3OWVkKSwgQyhhNzYyMWI2ZmQwMmRi
NTAzKSwgQyhkOTJmN2JhOTkyOGE0ZmZlKSwKLSAgICAgQyg1M2Y1NmJhYmRjYWU5NmE2KSwgQyhm
MWI5YjQxM2RmOWQ3OWVkKSwgQyhhNzYyMWI2ZmQwMmRiNTAzKSwKLSAgICAgQyhkOTJmN2JhOTky
OGE0ZmZlKSwgQyg1M2Y1NmJhYmRjYWU5NmE2KSwgQyg1MzAyYjg5ZmM0ODcxM2FiKSwKLSAgICAg
QyhkMDNlM2IwNGRiZTdhMmYyKSwgQyhmYTc0ZWY4YWY2ZDM3NmE3KSwgQygxMDNjOGNkZWExMDUw
ZWYyKSwKLSAgICAgQyg2YTc1ZTQzZCl9LAorICAgIHtDKDNhYmFmMTY2N2JhMmYzZTApLCBDKGVl
Nzg0NzZiNWVlYWRjMSksIEMoN2U1NmFjMGE2Y2E0ZjNmNCksIEMoNmE3NWU0M2QpfSwKICAgICB7
QygzOTMxYWM2OGM1ZjFiMmM5KSwgQyhlZmUzODkyMzYzYWIwZmIwKSwgQyg0MGI3MDcyNjgzMzdj
ZDM2KSwKLSAgICAgQyhhNTNhNmI2NGIxYWM4NWM5KSwgQyhkNTBlN2Y4NmVlMWI4MzJiKSwgQyg3
YmFiMDhmZGQyNmJhMGE0KSwKLSAgICAgQyg3NTg3NzQzYzE4ZmUyNDc1KSwgQyhhNTNhNmI2NGIx
YWM4NWM5KSwgQyhkNTBlN2Y4NmVlMWI4MzJiKSwKLSAgICAgQyg3YmFiMDhmZGQyNmJhMGE0KSwg
Qyg3NTg3NzQzYzE4ZmUyNDc1KSwgQyhlM2I1ZDVkNDkwY2Y1NzYxKSwKLSAgICAgQyhkZmMwNTNm
N2QwNjVlZGQ1KSwgQyg0MmZmZDhkNWZiNzAxMjlmKSwgQyg1OTljYTM4Njc3Y2NjZGMzKSwKICAg
ICAgQygyMzVkOTgwNSl9LAotICAgIHtDKGI5OGZiMDYwNmY0MTY3NTQpLCBDKDQ2YTZlNTU0N2Jh
OTljMWUpLCBDKGM5MDlkODIxMTJhOGVkMiksCi0gICAgIEMoZGJmYWFlOTY0MmIzMjA1YSksIEMo
ZjY3NmExMzM5NDAyYmNiOSksIEMoZjRmMTJhNWIxYWMxMWYyOSksCi0gICAgIEMoN2RiOGJhZDgx
MjQ5ZGVlNCksIEMoZGJmYWFlOTY0MmIzMjA1YSksIEMoZjY3NmExMzM5NDAyYmNiOSksCi0gICAg
IEMoZjRmMTJhNWIxYWMxMWYyOSksIEMoN2RiOGJhZDgxMjQ5ZGVlNCksIEMoYjI2ZTQ2ZjJkYTk1
OTIyZSksCi0gICAgIEMoMmFhZWRkNWUxMmUzYzYxMSksIEMoYTBlMmQ5MDgyOTY2MDc0KSwgQyhj
NjRkYThhMTY3YWRkNjNkKSwgQyhmN2Q2OTU3Mil9LAorICAgIHtDKGI5OGZiMDYwNmY0MTY3NTQp
LCBDKDQ2YTZlNTU0N2JhOTljMWUpLCBDKGM5MDlkODIxMTJhOGVkMiksIEMoZjdkNjk1NzIpfSwK
ICAgICB7Qyg3Zjc3MjlhMzNlNThmY2M0KSwgQygyZTRiYzFlN2EwMjNlYWQ0KSwgQyhlNzA3MDA4
ZWE3Y2E2MjIyKSwKLSAgICAgQyg0NzQxOGE3MTgwMDMzNGEwKSwgQyhkMTAzOTVkOGZjNjRkOGE0
KSwgQyg4MjU3YTMwMDYyY2I2NmYpLAotICAgICBDKDY3ODZmOWIyZGMxZmYxOGEpLCBDKDQ3NDE4
YTcxODAwMzM0YTApLCBDKGQxMDM5NWQ4ZmM2NGQ4YTQpLAotICAgICBDKDgyNTdhMzAwNjJjYjY2
ZiksIEMoNjc4NmY5YjJkYzFmZjE4YSksIEMoNTYzM2Y0MzdiYjJmMTgwZiksCi0gICAgIEMoZTVh
M2E0MDU3MzdkMjJkNiksIEMoY2EwZmYxZWY2ZjdmMGI3NCksIEMoZDBhZTYwMDY4NGIxNmRmOCks
CiAgICAgIEMoYmFjZDAxOTkpfSwKICAgICB7Qyg0MmEwYWE5Y2U4Mjg0OGIzKSwgQyg1NzIzMjcz
MGU2YmVlMTc1KSwgQyhmODliYjNmMzcwNzgyMDMxKSwKLSAgICAgQyhjYWEzM2NmOWI0ZjY2MTlj
KSwgQyhiMmM4NjQ4YWQ0OWMyMDlmKSwgQyg5ZTg5ZWNlMDcxMmRiMWMwKSwKLSAgICAgQygxMDFk
ODI3NGE3MTFhNTRiKSwgQyhjYWEzM2NmOWI0ZjY2MTljKSwgQyhiMmM4NjQ4YWQ0OWMyMDlmKSwK
LSAgICAgQyg5ZTg5ZWNlMDcxMmRiMWMwKSwgQygxMDFkODI3NGE3MTFhNTRiKSwgQyg1MzhlNzlm
MWU3MDEzNWNkKSwKLSAgICAgQyhlMWY1YTc2Zjk4M2M4NDRlKSwgQyg2NTNjMDgyZmQ2NjA4OGZj
KSwgQygxYjljOWI0NjRiNjU0OTU4KSwKICAgICAgQyhlNDI4ZjUwZSl9LAogICAgIHtDKDZiMmM2
ZDM4NDA4YTQ4ODkpLCBDKGRlM2VmNmY2OGZiMjU4ODUpLCBDKDIwNzU0ZjQ1NmMyMDMzNjEpLAot
ICAgICBDKDk0MWY1MDIzYzBjOTQzZjkpLCBDKGRmZGViOTU2NGZkNjZmMjQpLCBDKDIxNDBjZWM3
MDZiOWQ0MDYpLAotICAgICBDKDdiMjI0MjliMTMxZTljNzIpLCBDKDk0MWY1MDIzYzBjOTQzZjkp
LCBDKGRmZGViOTU2NGZkNjZmMjQpLAotICAgICBDKDIxNDBjZWM3MDZiOWQ0MDYpLCBDKDdiMjI0
MjliMTMxZTljNzIpLCBDKDk0MjE1YzIyZWI5NDBmNDUpLAotICAgICBDKGQyOGI5ZWQ0NzRmNzI0
OWEpLCBDKDZmMjVlODhmMmZiZjlmNTYpLCBDKGI2NzE4ZjllNjA1YjM4YWMpLAogICAgICBDKDgx
ZWFhYWQzKX0sCiAgICAge0MoOTMwMzgwYTM3NDFlODYyYSksIEMoMzQ4ZDI4NjM4ZGM3MTY1OCks
IEMoODlkZWRjZmQxNjU0ZWEwZCksCi0gICAgIEMoN2U3ZjYxNjg0MDgwMTA2KSwgQyg4MzdhY2U5
Nzk0NTgyOTc2KSwgQyg1YWM4Y2E3NmEzNTdlYjFiKSwKLSAgICAgQygzMmI1ODMwODYyNTY2MWZi
KSwgQyg3ZTdmNjE2ODQwODAxMDYpLCBDKDgzN2FjZTk3OTQ1ODI5NzYpLAotICAgICBDKDVhYzhj
YTc2YTM1N2ViMWIpLCBDKDMyYjU4MzA4NjI1NjYxZmIpLCBDKGMwOTcwNWM0NTcyMDI1ZDkpLAot
ICAgICBDKGY5MTg3ZjZhZjAyOTEzMDMpLCBDKDFjMGVkZDhlZTRiMDI1MzgpLCBDKGU2Y2IxMDVk
YWEwNTc4YSksIEMoYWRkYmQzZTMpfSwKKyAgICAgQyhhZGRiZDNlMyl9LAogICAgIHtDKDk0ODA4
YjVkMmFhMjVmOWEpLCBDKGNlYzcyOTY4MTI4MTk1ZTApLCBDKGQ5ZjRkYTJiZGMxZTEzMGYpLAot
ICAgICBDKDI3MmQ4ZGQ3NGYzMDA2Y2MpLCBDKGVjNmMyYWQxZWMwM2Y1NTQpLCBDKDRhZDI3NmIy
NDlhNWQ1ZGQpLAotICAgICBDKDU0OWEyMmExN2MwY2RlMTIpLCBDKDI3MmQ4ZGQ3NGYzMDA2Y2Mp
LCBDKGVjNmMyYWQxZWMwM2Y1NTQpLAotICAgICBDKDRhZDI3NmIyNDlhNWQ1ZGQpLCBDKDU0OWEy
MmExN2MwY2RlMTIpLCBDKDYwMjExOWNiODI0ZDdjZGUpLAotICAgICBDKGY0ZDNjZWYyNDBlZjM1
ZmEpLCBDKGU4ODk4OTVlMDE5MTFiYzcpLCBDKDc4NWE3ZTVhYzIwZTg1MmIpLAogICAgICBDKGU2
NmRiY2EwKX0sCiAgICAge0MoYjMxYWJiMDhhZTZlM2QzOCksIEMoOWViOWE5NWNiZDllODIyMyks
IEMoODAxOWU3OWI3ZWU5NGVhOSksCi0gICAgIEMoN2IyMjcxYTdhMzI0OGUyMiksIEMoM2I0Zjcw
MGU1YTBiYTUyMyksIEMoOGViYzUyMGMyMjcyMDZmZSksCi0gICAgIEMoZGEzZjg2MTQ5MGY1ZDI5
MSksIEMoN2IyMjcxYTdhMzI0OGUyMiksIEMoM2I0ZjcwMGU1YTBiYTUyMyksCi0gICAgIEMoOGVi
YzUyMGMyMjcyMDZmZSksIEMoZGEzZjg2MTQ5MGY1ZDI5MSksIEMoZDA4YTY4OWY5ZjNhYTYwZSks
Ci0gICAgIEMoNTQ3YzFiOTdhMDY4NjYxZiksIEMoNGIxNWE2N2ZhMjkxNzJmMCksIEMoZWFmNDBj
MDg1MTkxZDgwZiksCiAgICAgIEMoYWZlMTFmZDUpfSwKICAgICB7QyhkY2NiNTUzNGE4OTNlYTFh
KSwgQyhjZTcxYzM5ODcwOGM2MTMxKSwgQyhmZTIzOTYzMTU0NTdjMTY0KSwKLSAgICAgQygzZjEy
MjlmNGQwZmQ5NmZiKSwgQygzMzEzMGFhNWZhOWQ0M2YyKSwgQyhlNDI2OTNkNWIzNGU2M2FiKSwK
LSAgICAgQygyZjRlZjJiZTY3ZjYyMTA0KSwgQygzZjEyMjlmNGQwZmQ5NmZiKSwgQygzMzEzMGFh
NWZhOWQ0M2YyKSwKLSAgICAgQyhlNDI2OTNkNWIzNGU2M2FiKSwgQygyZjRlZjJiZTY3ZjYyMTA0
KSwgQygzNzJlNTE1MzUxNmUzN2I5KSwKLSAgICAgQyhhZjllYzE0MmFiMTJjYzg2KSwgQyg3Nzc5
MjBjMDkzNDVlMzU5KSwgQyhlN2M0YTM4M2JlZjhhZGM2KSwKICAgICAgQyhhNzFhNDA2Zil9LAog
ICAgIHtDKDYzNjkxNjM1NjU4MTRkZTYpLCBDKDhmZWI4NmZiMzhkMDhjMmYpLCBDKDQ5NzY5MzM0
ODVjYzlhMjApLAotICAgICBDKDdkM2U4MmQ1YmEyOWE5MGQpLCBDKGQ1OTgzY2M5M2E5ZDEyNmEp
LCBDKDM3ZTlkZmQ5NTBlN2I2OTIpLAotICAgICBDKDgwNjczYmU2YTc4ODhiODcpLCBDKDdkM2U4
MmQ1YmEyOWE5MGQpLCBDKGQ1OTgzY2M5M2E5ZDEyNmEpLAotICAgICBDKDM3ZTlkZmQ5NTBlN2I2
OTIpLCBDKDgwNjczYmU2YTc4ODhiODcpLCBDKDU3ZjczMmRjNjAwODA4YmMpLAotICAgICBDKDU5
NDc3MTk5ODAyY2M3OGIpLCBDKGY4MjQ4MTBlYjhmMmMyZGUpLCBDKGM0YTM0MzdmMDViM2I2MWMp
LAogICAgICBDKDlkOTBlYWY1KX0sCiAgICAge0MoZWRlZTRmZjI1M2Q5ZjliMyksIEMoOTZlZjc2
ZmIyNzllZjBhZCksIEMoYTRkMjA0ZDE3OWRiMjQ2MCksCi0gICAgIEMoMWYzZGNkZmE1MTM1MTJk
NiksIEMoNGRjN2VjMDcyODMxMTdlNCksIEMoNDQzOGJhZTg4YWUyOGJmOSksCi0gICAgIEMoYWE3
ZWFlNzJjOTI0NGEwZCksIEMoMWYzZGNkZmE1MTM1MTJkNiksIEMoNGRjN2VjMDcyODMxMTdlNCks
Ci0gICAgIEMoNDQzOGJhZTg4YWUyOGJmOSksIEMoYWE3ZWFlNzJjOTI0NGEwZCksIEMoYjlhZWRj
OGQzZWNjNzJkZiksCi0gICAgIEMoYjc1YThlYjA5MGE3N2Q2MiksIEMoNmIxNTY3N2Y5Y2Q5MTUw
NyksIEMoNTFkODI4MmNiM2E5ZGRiZiksCiAgICAgIEMoNjY2NWRiMTApfSwKICAgICB7Qyg5NDE5
OTNkZjZlNjMzMjE0KSwgQyg5MjliYzFiZWNhNWI3MmM2KSwgQygxNDFmYzUyYjhkNTU1NzJkKSwK
LSAgICAgQyhiM2I3ODJhZDMwOGYyMWVkKSwgQyg0ZjI2NzY0ODUwNDFkZWUwKSwgQyhiZmUyNzlh
ZWQ1Y2I0YmM4KSwKLSAgICAgQygyYTYyNTA4YTQ2N2EyMmZmKSwgQyhiM2I3ODJhZDMwOGYyMWVk
KSwgQyg0ZjI2NzY0ODUwNDFkZWUwKSwKLSAgICAgQyhiZmUyNzlhZWQ1Y2I0YmM4KSwgQygyYTYy
NTA4YTQ2N2EyMmZmKSwgQyhlNzRkMjllYWI3NDIzODVkKSwKLSAgICAgQyg1NmIwNWNkOTBlY2Zj
MjkzKSwgQyhjNjAzNzI4ZWE3M2Y4ODQ0KSwgQyg4NjM4ZmNkMjFiYzY5MmM0KSwKICAgICAgQyg5
Yzk3N2NiZil9LAogICAgIHtDKDg1OTgzODI5M2Y2NGNkNGMpLCBDKDQ4NDQwM2IzOWQ0NGFkNzkp
LCBDKGJmNjc0ZTY0ZDY0YjkzMzkpLAotICAgICBDKDQ0ZDY4YWZkYTk1NjhmMDgpLCBDKDQ3ODU2
OGVkNTFjYTFkNjUpLCBDKDY3OWMyMDRhZDNkOWU3NjYpLAotICAgICBDKGIyOGU3ODg4Nzg0ODhk
YzEpLCBDKDQ0ZDY4YWZkYTk1NjhmMDgpLCBDKDQ3ODU2OGVkNTFjYTFkNjUpLAotICAgICBDKDY3
OWMyMDRhZDNkOWU3NjYpLCBDKGIyOGU3ODg4Nzg0ODhkYzEpLCBDKGQwMDFhODRkM2E4NGZhZTYp
LAotICAgICBDKGQzNzY5NThmZTRjYjkxM2UpLCBDKDE3NDM1Mjc3ZTM2Yzg2ZjApLCBDKDIzNjU3
YjI2M2MzNDdhYTYpLAogICAgICBDKGVlODNkZGQ0KX0sCi0gICAge0MoYzE5YjU2NDhlMGQ5ZjU1
NSksIEMoMzI4ZTQ3YjJiNzU2Mjk5MyksIEMoZTc1NmI5MmJhNGJkNmE1MSksCi0gICAgIEMoYzMz
MTRlMzYyNzY0ZGRiOCksIEMoNjQ4MWMwODRlZTllYzZiNSksIEMoZWRlMjNmYjlhMjUxNzcxKSwK
LSAgICAgQyhiZDYxN2YyNjQzMzI0NTkwKSwgQyhjMzMxNGUzNjI3NjRkZGI4KSwgQyg2NDgxYzA4
NGVlOWVjNmI1KSwKLSAgICAgQyhlZGUyM2ZiOWEyNTE3NzEpLCBDKGJkNjE3ZjI2NDMzMjQ1OTAp
LCBDKGQyZDMwYzliOTVlMDMwZjUpLAotICAgICBDKDhhNTE3MzEyZmZjNTc5NWUpLCBDKDhiMWYz
MjUwMzNiZDUzNWUpLCBDKDNlZTZlODY3ZTAzZjI4OTIpLCBDKDI2NTE5Y2MpfSwKKyAgICB7Qyhj
MTliNTY0OGUwZDlmNTU1KSwgQygzMjhlNDdiMmI3NTYyOTkzKSwgQyhlNzU2YjkyYmE0YmQ2YTUx
KSwgQygyNjUxOWNjKX0sCiAgICAge0MoZjk2M2I2M2I5MDA2YzI0OCksIEMoOWU5YmY3MjdmZmFh
MDBiYyksIEMoYzczYmFjYzc1YjkxN2UzYSksCi0gICAgIEMoMmM2YWE3MDYxMjljYzU0YyksIEMo
MTdhNzA2ZjU5YTQ5ZjA4NiksIEMoYzdjMWVlYzQ1NTIxNzE0NSksCi0gICAgIEMoNmFkZmRjNmUw
NzYwMmQ0MiksIEMoMmM2YWE3MDYxMjljYzU0YyksIEMoMTdhNzA2ZjU5YTQ5ZjA4NiksCi0gICAg
IEMoYzdjMWVlYzQ1NTIxNzE0NSksIEMoNmFkZmRjNmUwNzYwMmQ0MiksIEMoZmI3NWZjYTMwZDg0
OGRkMiksCi0gICAgIEMoNTIyOGM5ZWQxNDY1M2VkNCksIEMoOTUzOTU4OTEwMTUzYjFhMiksIEMo
YTQzMDEwM2EyNGY0MmE1ZCksCiAgICAgIEMoYTQ4NWE1M2YpfSwKICAgICB7Qyg2YThhYTA4NTJh
OGMxZjNiKSwgQyhjOGYxZTVlMjA2YTIxMDE2KSwgQygyYWE1NTRhZWQxZWJiNTI0KSwKLSAgICAg
QyhmYzNlM2MzMjJjZDVkODliKSwgQyhiN2UzOTExZGMyYmQ0ZWJiKSwgQyhmY2Q2ZGE1ZTVmYWU4
MzNhKSwKLSAgICAgQyg1MWVkM2M0MWY4N2Y5MTE4KSwgQyhmYzNlM2MzMjJjZDVkODliKSwgQyhi
N2UzOTExZGMyYmQ0ZWJiKSwKLSAgICAgQyhmY2Q2ZGE1ZTVmYWU4MzNhKSwgQyg1MWVkM2M0MWY4
N2Y5MTE4KSwgQyhmMzE3NTBjYmMxOWM0MjBhKSwKLSAgICAgQygxODZkYWIxYWJhZGExZDg2KSwg
QyhjYTdmODhjYjg5NGIzY2Q3KSwgQygyODU5ZWViMWMzNzM3OTBjKSwKICAgICAgQyhmNjJiYzQx
Mil9LAogICAgIHtDKDc0MDQyOGI0ZDQ1ZTVmYjgpLCBDKDRjOTVhNGNlOTIyY2IwYTUpLCBDKGU5
OWMzYmE3OGZlYWU3OTYpLAotICAgICBDKDkxNGYxZWEyZmRjZWJmNWMpLCBDKDk1NjY0NTNjMDdj
ZDA2MDEpLCBDKDk4NDFiZjY2ZDA0NjJjZCksCi0gICAgIEMoNzkxNDBjMWMxODUzNmFlYiksIEMo
OTE0ZjFlYTJmZGNlYmY1YyksIEMoOTU2NjQ1M2MwN2NkMDYwMSksCi0gICAgIEMoOTg0MWJmNjZk
MDQ2MmNkKSwgQyg3OTE0MGMxYzE4NTM2YWViKSwgQyhhOTYzYjkzMGIwNTgyMGMyKSwKLSAgICAg
Qyg2YTdkOWZhMGM4YzQ1MTUzKSwgQyg2NDIxNGM0MGQwN2NmMzliKSwgQyg3MDU3ZGFmMWQ4MDZj
MDE0KSwKICAgICAgQyg4OTc1YTQzNil9LAotICAgIHtDKDY1OGI4ODNiM2E4NzJiODYpLCBDKDJm
MGUzMDNmMGY2NDgyN2EpLCBDKDk3NTMzN2UyM2RjNDVlMSksCi0gICAgIEMoOTk0NjhhOTE3OTg2
MTYyYiksIEMoN2IzMTQzNGFhYzZlMGFmMCksIEMoZjY5MTVjMTU2MmM3ZDgyZiksCi0gICAgIEMo
ZTQwNzFkODJhNmRkNzFkYiksIEMoOTk0NjhhOTE3OTg2MTYyYiksIEMoN2IzMTQzNGFhYzZlMGFm
MCksCi0gICAgIEMoZjY5MTVjMTU2MmM3ZDgyZiksIEMoZTQwNzFkODJhNmRkNzFkYiksIEMoNWY1
MzMxZjA3N2I1ZDk5NiksCi0gICAgIEMoN2IzMTRiYTIxYjc0N2E0ZiksIEMoNWE3M2NiOTUyMWRh
MTdmNSksIEMoMTJlZDQzNWZhZTI4NmQ4NiksCi0gICAgIEMoOTRmZjdmNDEpfSwKLSAgICB7Qyg2
ZGYwYTk3N2RhNWQyN2Q0KSwgQyg4OTFkZDBlN2NiMTk1MDgpLCBDKGZkNjU0MzRhMGI3MWU2ODAp
LAotICAgICBDKDg3OTllNDc0MGU1NzNjNTApLCBDKDllNzM5YjUyZDBmMzQxZTgpLCBDKGNkZmQz
NGJhN2Q3YjAzZWIpLAotICAgICBDKDUwNjE4MTJjZTZjODg0OTkpLCBDKDg3OTllNDc0MGU1NzNj
NTApLCBDKDllNzM5YjUyZDBmMzQxZTgpLAotICAgICBDKGNkZmQzNGJhN2Q3YjAzZWIpLCBDKDUw
NjE4MTJjZTZjODg0OTkpLCBDKDYxMmI4ZDhmMjQxMWRjNWMpLAotICAgICBDKDg3OGJkODgzZDI5
Yzc3ODcpLCBDKDQ3YTg0NjcyNzE4MmJiKSwgQyhlYzQ5NDk1MDhjOGIzYjlhKSwgQyg3NjBhYTAz
MSl9LAotICAgIHtDKGE5MDAyNzU0NjRhZTA3ZWYpLCBDKDExZjJjZmRhMzRiZWI0YTMpLCBDKDlh
YmY5MWU1YTFjMzhlNCksCi0gICAgIEMoODA2M2Q4MGFiMjZmM2Q2ZCksIEMoNDE3N2I0YjliNGYw
MzkzZiksIEMoNmRlNDJiYTg2NzJiOTY0MCksCi0gICAgIEMoZDBiY2NkYjcyYzUxYzE4KSwgQyg4
MDYzZDgwYWIyNmYzZDZkKSwgQyg0MTc3YjRiOWI0ZjAzOTNmKSwKLSAgICAgQyg2ZGU0MmJhODY3
MmI5NjQwKSwgQyhkMGJjY2RiNzJjNTFjMTgpLCBDKGFmM2Y2MTFiN2YyMmNmMTIpLAotICAgICBD
KDM4NjNjNDE0OTI2NDU3NTUpLCBDKDkyOGM3YTYxNmE4ZjE0ZjkpLCBDKGE4MmM3OGViMmVhZGM1
OGIpLAotICAgICBDKDNiZGE3NmRmKX0sCisgICAge0MoNjU4Yjg4M2IzYTg3MmI4NiksIEMoMmYw
ZTMwM2YwZjY0ODI3YSksIEMoOTc1MzM3ZTIzZGM0NWUxKSwgQyg5NGZmN2Y0MSl9LAorICAgIHtD
KDZkZjBhOTc3ZGE1ZDI3ZDQpLCBDKDg5MWRkMGU3Y2IxOTUwOCksIEMoZmQ2NTQzNGEwYjcxZTY4
MCksIEMoNzYwYWEwMzEpfSwKKyAgICB7QyhhOTAwMjc1NDY0YWUwN2VmKSwgQygxMWYyY2ZkYTM0
YmViNGEzKSwgQyg5YWJmOTFlNWExYzM4ZTQpLCBDKDNiZGE3NmRmKX0sCiAgICAge0MoODEwYmM4
YWEwYzQwYmNiMCksIEMoNDQ4YTAxOTU2OGQwMTQ0MSksIEMoZjYwZWM1MmY2MGQzYWVhZSksCi0g
ICAgIEMoNTJjNDQ4MzdhYTZkZmM3NyksIEMoMTVkOGQ4ZmNjZGQ2ZGM1YiksIEMoMzQ1Yjc5M2Nj
ZmE5MzA1NSksCi0gICAgIEMoOTMyMTYwZmU4MDJjYTk3NSksIEMoNTJjNDQ4MzdhYTZkZmM3Nyks
IEMoMTVkOGQ4ZmNjZGQ2ZGM1YiksCi0gICAgIEMoMzQ1Yjc5M2NjZmE5MzA1NSksIEMoOTMyMTYw
ZmU4MDJjYTk3NSksIEMoYTYyNGIwZGQ5M2ZjMThjZCksCi0gICAgIEMoZDk1NWIyNTRjMjAzN2Yx
ZSksIEMoZTU0MDUzM2QzNzBhNjY0YyksIEMoMmJhNGVjMTI1MTRlOWQ3KSwgQyg0OThlMmU2NSl9
LAorICAgICBDKDQ5OGUyZTY1KX0sCiAgICAge0MoMjIwMzYzMjdkZWI1OWVkNyksIEMoYWRjMDVj
ZWI5NzAyNmEwMiksIEMoNDhiZmYwNjU0MjYyNjcyYiksCi0gICAgIEMoYzc5MWIzMTNhYmEzZjI1
OCksIEMoNDQzYzc3NTdhNDcyN2JlZSksIEMoZTMwZTRiMjM3MjE3MWJkZiksCi0gICAgIEMoZjNk
Yjk4NmM0MTU2ZjNjYiksIEMoYzc5MWIzMTNhYmEzZjI1OCksIEMoNDQzYzc3NTdhNDcyN2JlZSks
Ci0gICAgIEMoZTMwZTRiMjM3MjE3MWJkZiksIEMoZjNkYjk4NmM0MTU2ZjNjYiksIEMoYTkzOWFl
ZmFiOTdjNmUxNSksCi0gICAgIEMoZGJlYjhhY2YxZDViMGU2YyksIEMoMWUwZWFiNjY3YTc5NWJi
YSksIEMoODBkZDUzOTkwMmRmNGQ1MCksCiAgICAgIEMoZDM4ZGViNDgpfSwKICAgICB7Qyg3ZDE0
ZGZhOTc3MmIwMGM4KSwgQyg1OTU3MzVlZmM3ZWVhZWQ3KSwgQygyOTg3Mjg1NGY5NGMzNTA3KSwK
LSAgICAgQyhiYzI0MTU3OWQ4MzQ4NDAxKSwgQygxNmRjODMyODA0ZDcyOGYwKSwgQyhlOWNjNzFh
ZTY0ZTNmMDllKSwKLSAgICAgQyhiZWY2MzRiYzk3OGJhYzMxKSwgQyhiYzI0MTU3OWQ4MzQ4NDAx
KSwgQygxNmRjODMyODA0ZDcyOGYwKSwKLSAgICAgQyhlOWNjNzFhZTY0ZTNmMDllKSwgQyhiZWY2
MzRiYzk3OGJhYzMxKSwgQyg3ZjY0YjFmYTJhOTEyOWUpLAotICAgICBDKDcxZDgzMWJkNTMwYWM3
ZjMpLCBDKGM3YWQwYThhNmQ1YmU2ZjEpLCBDKDgyYTdkM2E4MTVjN2FhYWIpLAogICAgICBDKDgy
YjNmYjZiKX0sCiAgICAge0MoMmQ3NzdjZGRiOTEyNjc1ZCksIEMoMjc4ZDdiMTA3MjJhMTNmOSks
IEMoZjVjMDJiZmI3Y2MwNzhhZiksCi0gICAgIEMoNDI4MzAwMTIzOTg4ODgzNiksIEMoZjQ0Y2Ez
OWE2Zjc5ZGI4OSksIEMoZWQxODYxMjJkNzFiY2M5ZiksCi0gICAgIEMoODYyMDAxN2FiNWYzYmEz
YiksIEMoNDI4MzAwMTIzOTg4ODgzNiksIEMoZjQ0Y2EzOWE2Zjc5ZGI4OSksCi0gICAgIEMoZWQx
ODYxMjJkNzFiY2M5ZiksIEMoODYyMDAxN2FiNWYzYmEzYiksIEMoZTc4NzQ3MjE4N2YxNzZjKSwK
LSAgICAgQygyNjdlNjRjNDcyOGNmMTgxKSwgQyhmMWJhNGIzMDA3YzE1ZTMwKSwgQyg4ZTNhNzVk
NWIwMmVjZmMwKSwKICAgICAgQyhlNTAwZTI1Zil9LAogICAgIHtDKGYyZWM5ODgyNGU4YWE2MTMp
LCBDKDVlYjdlM2ZiNTNmZTNiZWQpLCBDKDEyYzIyODYwNDY2ZTFkZDQpLAotICAgICBDKDM3NGRk
NDI4OGUwYjcyZTUpLCBDKGZmODkxNmRiNzA2YzBkZjQpLCBDKGNiMWE5ZTg1ZGU1ZTRiOGQpLAot
ICAgICBDKGQ0ZDEyYWZiNjdhMjc2NTkpLCBDKDM3NGRkNDI4OGUwYjcyZTUpLCBDKGZmODkxNmRi
NzA2YzBkZjQpLAotICAgICBDKGNiMWE5ZTg1ZGU1ZTRiOGQpLCBDKGQ0ZDEyYWZiNjdhMjc2NTkp
LCBDKGZlYjY5MDk1ZDFiYTE3NWEpLAotICAgICBDKGUyMDAzYWFiMjNhNDdmYWQpLCBDKDgxNjNh
M2VjYWI4OTRiNDkpLCBDKDQ2ZDM1NjY3NGNlMDQxZjYpLAogICAgICBDKGJkMmJiMDdjKX0sCiAg
ICAge0MoNWU3NjM5ODhlMjFmNDg3ZiksIEMoMjQxODlkZTgwNjVkOGRjNSksIEMoZDE1MTlkMjQw
M2I2MmFhMCksCi0gICAgIEMoOTEzNjQ1Njc0MDExOTgxNSksIEMoNGQ4ZmY3NzMzYjI3ZWI4Myks
IEMoZWEzMDQwYmMwYzcxN2VmOCksCi0gICAgIEMoNzYxN2FiNDAwZGZhZGJjKSwgQyg5MTM2NDU2
NzQwMTE5ODE1KSwgQyg0ZDhmZjc3MzNiMjdlYjgzKSwKLSAgICAgQyhlYTMwNDBiYzBjNzE3ZWY4
KSwgQyg3NjE3YWI0MDBkZmFkYmMpLCBDKGZiMzM2NzcwYzEwYjE3YTEpLAotICAgICBDKDYxMjNi
NjhiNWIzMWYxNTEpLCBDKDFlMTQ3ZDVmMjk1ZWNjZjIpLCBDKDllY2JiMTMzMzU1NmY5NzcpLAog
ICAgICBDKDNhMmI0MzFkKX0sCiAgICAge0MoNDg5NDlkYzMyN2JiOTZhZCksIEMoZTFmZDIxNjM2
YzVjNTBiNCksIEMoM2Y2ZWI3ZjEzYTg3MTJiNCksCi0gICAgIEMoMTRjZjdmMDJkYWIwZWVlOCks
IEMoNmQwMTc1MDYwNWU4OTQ0NSksIEMoNGYxY2Y0MDA2ZTYxM2I3OCksCi0gICAgIEMoNTdjNDBj
NGRiMzJiZWMzYiksIEMoMTRjZjdmMDJkYWIwZWVlOCksIEMoNmQwMTc1MDYwNWU4OTQ0NSksCi0g
ICAgIEMoNGYxY2Y0MDA2ZTYxM2I3OCksIEMoNTdjNDBjNGRiMzJiZWMzYiksIEMoMWZkZTVhMzQ3
ZjRhMzI2ZSksCi0gICAgIEMoY2I1YTU0MzA4YWRiMGUzZiksIEMoMTQ5OTRiMmJhNDQ3YTIzYyks
IEMoNzA2N2QwYWJiNDI1N2I2OCksCiAgICAgIEMoNzMyMmE4M2QpfSwKICAgICB7QyhiN2M0MjA5
ZmIyNGE4NWM1KSwgQyhiMzVmZWIzMTljNzljZTEwKSwgQyhmMGQzZGUxOTE4MzNiOTIyKSwKLSAg
ICAgQyg1NzBkNjI3NThkZGY2Mzk3KSwgQyg1ZTAyMDRmYjY4YTdiODAwKSwgQyg0MzgzYTkyMzZm
OGI1YTJiKSwKLSAgICAgQyg3YmMxYTY0NjQxZDgwM2E0KSwgQyg1NzBkNjI3NThkZGY2Mzk3KSwg
Qyg1ZTAyMDRmYjY4YTdiODAwKSwKLSAgICAgQyg0MzgzYTkyMzZmOGI1YTJiKSwgQyg3YmMxYTY0
NjQxZDgwM2E0KSwgQyg1NDM0ZDYxMjg1MDk5ZjdhKSwKLSAgICAgQyhkNDk0NDlhYWNkZDVkZDY3
KSwgQyg5Nzg1NWJhMGU5YTdkNzVkKSwgQyhkYTY3MzI4MDYyZjNhNjJmKSwKICAgICAgQyhhNjQ1
Y2ExYyl9LAogICAgIHtDKDljOWU1YmUwOTQzZDRiMDUpLCBDKGI3M2RjNjllNDUyMDFjYmIpLCBD
KGFhYjE3MTgwYmZlNTA4M2QpLAotICAgICBDKGM3MzhhNzdhOWE1NWYwZTIpLCBDKDcwNTIyMWFk
ZGVkZDgxZGYpLCBDKGZkOWJkOGQzOTdhYmNmYTMpLAotICAgICBDKDhjY2YwMDA0YWE4NmI3OTUp
LCBDKGM3MzhhNzdhOWE1NWYwZTIpLCBDKDcwNTIyMWFkZGVkZDgxZGYpLAotICAgICBDKGZkOWJk
OGQzOTdhYmNmYTMpLCBDKDhjY2YwMDA0YWE4NmI3OTUpLCBDKDJiYjVkYjIyODAwNjgyMDYpLAot
ICAgICBDKDhjMjJkMjlmMzA3YTAxZCksIEMoMjc0YTIyZGUwMmY0NzNjOCksIEMoYjg3OTE4NzBm
NDI2ODE4MiksIEMoODkwOWE0NWEpfSwKKyAgICAgQyg4OTA5YTQ1YSl9LAogICAgIHtDKDM4OThi
Y2E0ZGZkNjYzOGQpLCBDKGY5MTFmZjM1ZWZlZjAxNjcpLCBDKDI0YmRmNjllNTA5MWZjODgpLAot
ICAgICBDKDliODI1NjdhYjY1NjA3OTYpLCBDKDg5MWI2OTQ2MmI0MWMyMjQpLCBDKDhlY2NjN2U0
ZjNhZjNiNTEpLAotICAgICBDKDM4MWU1NGMzYzhmMWM3ZDApLCBDKDliODI1NjdhYjY1NjA3OTYp
LCBDKDg5MWI2OTQ2MmI0MWMyMjQpLAotICAgICBDKDhlY2NjN2U0ZjNhZjNiNTEpLCBDKDM4MWU1
NGMzYzhmMWM3ZDApLCBDKGM4MGZiYzQ4OWE1NThhNTUpLAotICAgICBDKDFiYTg4ZTA2MmE2NjNh
ZjcpLCBDKGFmN2IxZWYxYzAxMTYzMDMpLCBDKGJkMjBlMWE1YTZiMWEwY2QpLAogICAgICBDKGJk
MzAwNzRjKX0sCi0gICAge0MoNWI1ZDI1NTc0MDBlNjhlNyksIEMoOThkNjEwMDMzNTc0Y2VlKSwg
QyhkZmQwODc3MmNlMzg1ZGViKSwKLSAgICAgQygzYzEzZTg5NDM2NWRjNmMyKSwgQygyNmZjN2Ji
Y2RhM2YwZWYpLCBDKGRiYjcxMTA2Y2RiZmVhMzYpLAotICAgICBDKDc4NTIzOWE3NDJjNmQyNmQp
LCBDKDNjMTNlODk0MzY1ZGM2YzIpLCBDKDI2ZmM3YmJjZGEzZjBlZiksCi0gICAgIEMoZGJiNzEx
MDZjZGJmZWEzNiksIEMoNzg1MjM5YTc0MmM2ZDI2ZCksIEMoZjgxMGM0MTVhZTA1YjJmNCksCi0g
ICAgIEMoYmI5YjllNzM5ODUyNjA4OCksIEMoNzAxMjhmMWJmODMwYTMyYiksIEMoYmNjNzNmODJi
NjQxMDg5OSksCi0gICAgIEMoYzE3Y2YwMDEpfSwKKyAgICB7Qyg1YjVkMjU1NzQwMGU2OGU3KSwg
Qyg5OGQ2MTAwMzM1NzRjZWUpLCBDKGRmZDA4NzcyY2UzODVkZWIpLCBDKGMxN2NmMDAxKX0sCiAg
ICAge0MoYTkyN2VkOGIyYmYwOWJiNiksIEMoNjA2ZTUyZjEwYWU5NGVjYSksIEMoNzFjMjIwM2Zl
YjM1YTllZSksCi0gICAgIEMoNmU2NWVjMTRhOGZiNTY1KSwgQygzNGJmZjZmMmVlNWE3Zjc5KSwg
QygyZTMyOWE1YmUyYzAxMWIpLAotICAgICBDKDczMTYxYzkzMzMxYjE0ZjkpLCBDKDZlNjVlYzE0
YThmYjU2NSksIEMoMzRiZmY2ZjJlZTVhN2Y3OSksCi0gICAgIEMoMmUzMjlhNWJlMmMwMTFiKSwg
Qyg3MzE2MWM5MzMzMWIxNGY5KSwgQygxNWQxM2YyNDA4YWVjZjg4KSwKLSAgICAgQyg5ZjViNjFi
OGE0YjU1YjMxKSwgQyg4ZmUyNWE0M2IyOTZkYmE2KSwgQyhiZGFkMDNiNzMwMGYyODRlKSwKICAg
ICAgQygyNmZmZDI1YSl9LAogICAgIHtDKDhkMjU3NDY0MTRhZWRmMjgpLCBDKDM0YjE2MjlkMjhi
MzNkM2EpLCBDKDRkNTM5NGFlYTVmODJkN2IpLAotICAgICBDKDM3OWY3NjQ1OGEzYzg5NTcpLCBD
KDc5ZGQwODBmOTg0M2FmNzcpLCBDKGM0NmYwYTc4NDdmNjBjMWQpLAotICAgICBDKGFmMTU3OWM1
Nzk3NzAzY2MpLCBDKDM3OWY3NjQ1OGEzYzg5NTcpLCBDKDc5ZGQwODBmOTg0M2FmNzcpLAotICAg
ICBDKGM0NmYwYTc4NDdmNjBjMWQpLCBDKGFmMTU3OWM1Nzk3NzAzY2MpLCBDKDhiN2QzMWYzMzg3
NTVjMTQpLAotICAgICBDKDJlZmY5NzY3OTUxMmFhYTgpLCBDKGRmMDdkNjhlMDc1MTc5ZWQpLCBD
KGM4ZmE2YzdhNzI5ZTdmMWYpLAogICAgICBDKGYxZDhjZTNjKX0sCiAgICAge0MoYjViYmRiNzM0
NTg3MTJmMiksIEMoMWZmODg3YjNjMmEzNTEzNyksIEMoN2Y3MjMxZjcwMmQwYWNlOSksCi0gICAg
IEMoMWU2ZjA5MTBjM2QyNWJkOCksIEMoYWQ5ZTI1MDg2MjEwMjQ2NyksIEMoMWM4NDJhMDdhYmFi
MzBjZCksCi0gICAgIEMoY2Q4MTI0MTc2YmFjMDFhYyksIEMoMWU2ZjA5MTBjM2QyNWJkOCksIEMo
YWQ5ZTI1MDg2MjEwMjQ2NyksCi0gICAgIEMoMWM4NDJhMDdhYmFiMzBjZCksIEMoY2Q4MTI0MTc2
YmFjMDFhYyksIEMoZWE2ZWJlN2E3OWI2N2VkYyksCi0gICAgIEMoNzNmNTk4YWM5ZGIyNjcxMyks
IEMoNGY0ZTcyZDc0NjBiOGZjKSwgQygzNjVkYzRiOWZkZjEzZjIxKSwgQygzZWU4ZmIxNyl9LAor
ICAgICBDKDNlZThmYjE3KX0sCiAgICAge0MoM2QzMmEyNmUzYWI5ZDI1NCksIEMoZmM0MDcwNTc0
ZGMzMGQzYSksIEMoZjAyNjI5NTc5YzJiMjdjOSksCi0gICAgIEMoYjFjZjA5YjAxODRhNDgzNCks
IEMoNWMwM2RiNDhlYjZjYzE1OSksIEMoZjE4YzdmY2YzNGQxZGY0NyksCi0gICAgIEMoZGZiMDQz
NDE5ZWNmMWZhOSksIEMoYjFjZjA5YjAxODRhNDgzNCksIEMoNWMwM2RiNDhlYjZjYzE1OSksCi0g
ICAgIEMoZjE4YzdmY2YzNGQxZGY0NyksIEMoZGZiMDQzNDE5ZWNmMWZhOSksIEMoZGNkNzhkMTNm
OWNhNjU4ZiksCi0gICAgIEMoNDM1NWQ0MDhmZmU4ZTQ5ZiksIEMoODFlZWZlZTkwOGI1OTNiNCks
IEMoNTkwYzIxM2MyMGU5ODFhMyksCiAgICAgIEMoYTc3YWNjMmEpfSwKLSAgICB7Qyg5MzcxZDNj
MzVmYTVlOWE1KSwgQyg0Mjk2N2NmNGQwMWYzMCksIEMoNjUyZDFlZWFlNzA0MTQ1YyksCi0gICAg
IEMoY2VhZjFhMGQxNTIzNGYxNSksIEMoMTQ1MGE1NGU0NWJhOWI5KSwgQyg2NWU5YzFmZDg4NWFh
OTMyKSwKLSAgICAgQygzNTRkNGJjMDM0YmE4Y2JlKSwgQyhjZWFmMWEwZDE1MjM0ZjE1KSwgQygx
NDUwYTU0ZTQ1YmE5YjkpLAotICAgICBDKDY1ZTljMWZkODg1YWE5MzIpLCBDKDM1NGQ0YmMwMzRi
YThjYmUpLCBDKDhmZDRmZjQ4NGMwOGZiNGIpLAotICAgICBDKGJmNDY3NDk4NjZmNjliYTApLCBD
KGNmMWMyMWVkZTgyYzk0NzcpLCBDKDQyMTc1NDhjNDNkYTEwOSksIEMoZjQ1NTZkZWUpfSwKLSAg
ICB7QyhjYmFhM2NiOGY2NGY1NGUwKSwgQyg3NmMzYjQ4ZWU1YzA4NDE3KSwgQyg5ZjdkMjRlODdl
NjFjZTkpLAotICAgICBDKDg1YjhlNTNmMjJlMTk1MDcpLCBDKGJiNTcxMzc3MzljYTQ4NmIpLCBD
KGM3N2YxMzFjY2EzOGY3NjEpLAotICAgICBDKGM1NmFjM2NmMjc1YmUxMjEpLCBDKDg1YjhlNTNm
MjJlMTk1MDcpLCBDKGJiNTcxMzc3MzljYTQ4NmIpLAotICAgICBDKGM3N2YxMzFjY2EzOGY3NjEp
LCBDKGM1NmFjM2NmMjc1YmUxMjEpLCBDKDllYzFhNmM5MTA5ZDI2ODUpLAotICAgICBDKDNkYWQw
OTIyZTc2YWZkYjApLCBDKGZkNThjYmY5NTI5NTgxMDMpLCBDKDdiMDRjOTA4ZTc4NjM5YTEpLAot
ICAgICBDKGRlMjg3YTY0KX0sCisgICAge0MoOTM3MWQzYzM1ZmE1ZTlhNSksIEMoNDI5NjdjZjRk
MDFmMzApLCBDKDY1MmQxZWVhZTcwNDE0NWMpLCBDKGY0NTU2ZGVlKX0sCisgICAge0MoY2JhYTNj
YjhmNjRmNTRlMCksIEMoNzZjM2I0OGVlNWMwODQxNyksIEMoOWY3ZDI0ZTg3ZTYxY2U5KSwgQyhk
ZTI4N2E2NCl9LAogICAgIHtDKGIyZTIzZTgxMTZjMmJhOWYpLCBDKDdlNGQ5YzAwNjAxMDExNTEp
LCBDKDMzMTBkYTVlNTAyOGYzNjcpLAotICAgICBDKGFkYzUyZGRkYjc2ZjZlNWUpLCBDKDRhYWQ0
ZTkyNWE5NjJiNjgpLCBDKDIwNGI3OWI3ZjcxNjhlNjQpLAotICAgICBDKGRmMjllZDY2NzFjMzY5
NTIpLCBDKGFkYzUyZGRkYjc2ZjZlNWUpLCBDKDRhYWQ0ZTkyNWE5NjJiNjgpLAotICAgICBDKDIw
NGI3OWI3ZjcxNjhlNjQpLCBDKGRmMjllZDY2NzFjMzY5NTIpLCBDKGUwMjkyN2NhYzM5NmQyMTAp
LAotICAgICBDKDVkNTAwZTcxNzQyYjYzOGEpLCBDKDVjOTk5OGFmN2YyN2IxMjQpLCBDKDNmYmE5
YTI1NzNkYzJmNyksIEMoODc4ZTU1YjkpfSwKLSAgICB7Qyg4YWE3N2Y1MmQ3ODY4ZWI5KSwgQyg0
ZDU1YmQ1ODc1ODRlNmUyKSwgQyhkMmRiMzcwNDFmNDk1ZjUpLAotICAgICBDKGNlMDMwZDE1YjVm
ZTJmNCksIEMoODZiNGE3YTA3ODBjMjQzMSksIEMoZWUwNzBhOWFlNWI1MWRiNyksCi0gICAgIEMo
ZWRjMjkzZDk1OTViZTVkOCksIEMoY2UwMzBkMTViNWZlMmY0KSwgQyg4NmI0YTdhMDc4MGMyNDMx
KSwKLSAgICAgQyhlZTA3MGE5YWU1YjUxZGI3KSwgQyhlZGMyOTNkOTU5NWJlNWQ4KSwgQygzZGZj
NWVjMTA4MjYwYTJiKSwKLSAgICAgQyg4YWZlMjhjNzEyM2JmNGUyKSwgQyhkYTgyZWYzODAyM2E3
YTVmKSwgQygzZTFmNzdiMDE3NGI3N2MzKSwgQyg3NjQ4NDg2KX0sCisgICAgIEMoODc4ZTU1Yjkp
fSwKKyAgICB7Qyg4YWE3N2Y1MmQ3ODY4ZWI5KSwgQyg0ZDU1YmQ1ODc1ODRlNmUyKSwgQyhkMmRi
MzcwNDFmNDk1ZjUpLCBDKDc2NDg0ODYpfSwKICAgICB7Qyg4NThmZWE5MjJjN2ZlMGMzKSwgQyhj
ZmU4MzI2YmY3MzNiYzZmKSwgQyg0ZTVlMjAxOGNmOGY3ZGZjKSwKLSAgICAgQyg2NGZkMWJjMDEx
ZTViYWI3KSwgQyg1YzllODU4NzI4MDE1NTY4KSwgQyg5N2FjNDJjMmIwMGIyOWIxKSwKLSAgICAg
Qyg3Zjg5Y2FmMDhjMTA5YWVlKSwgQyg2NGZkMWJjMDExZTViYWI3KSwgQyg1YzllODU4NzI4MDE1
NTY4KSwKLSAgICAgQyg5N2FjNDJjMmIwMGIyOWIxKSwgQyg3Zjg5Y2FmMDhjMTA5YWVlKSwgQyg5
YThhZjM0ZmQwZTlkYWNmKSwKLSAgICAgQyhiYmM1NDE2MWFhMTUwN2UwKSwgQyg3Y2RhNzIzY2Ni
YmZlNWVlKSwgQygyYzI4OWQ4MzlmYjkzZjU4KSwKICAgICAgQyg1N2FjMGZiMSl9LAogICAgIHtD
KDQ2ZWYyNWZkZWM4MzkyYjEpLCBDKGU0OGQ3YjZkNDJhNWNkMzUpLCBDKDU2YTZmZTFjMTc1Mjk5
Y2EpLAotICAgICBDKGZkZmE4MzZiNDFkY2VmNjIpLCBDKDJmOGRiODAzMGU4NDdlMWIpLCBDKDVi
YTBhNDlhYzRmOWIwZjgpLAotICAgICBDKGRhZTg5N2VkM2UzZmNlNDQpLCBDKGZkZmE4MzZiNDFk
Y2VmNjIpLCBDKDJmOGRiODAzMGU4NDdlMWIpLAotICAgICBDKDViYTBhNDlhYzRmOWIwZjgpLCBD
KGRhZTg5N2VkM2UzZmNlNDQpLCBDKDljNDMyZTMxYWVmNjI2ZTcpLAotICAgICBDKDlhMzZlMWM2
Y2Q2ZTNkZCksIEMoNTA5NWExNjdjMzRkMTlkKSwgQyhhNzAwMDVjZmE2YmFiYmVhKSwgQyhkMDE5
NjdjYSl9LAorICAgICBDKGQwMTk2N2NhKX0sCiAgICAge0MoOGQwNzhmNzI2YjJkZjQ2NCksIEMo
YjUwZWU3MWNkY2FiYjI5OSksIEMoZjRhZjMwMDEwNmY5YzdiYSksCi0gICAgIEMoN2QyMjJjYWFl
MDI1MTU4YSksIEMoY2MwMjhkNWZkNDAyNDFiOSksIEMoZGQ0MjUxNWI2MzllNmY5NyksCi0gICAg
IEMoZTA4ZTg2NTMxYTU4Zjg3ZiksIEMoN2QyMjJjYWFlMDI1MTU4YSksIEMoY2MwMjhkNWZkNDAy
NDFiOSksCi0gICAgIEMoZGQ0MjUxNWI2MzllNmY5NyksIEMoZTA4ZTg2NTMxYTU4Zjg3ZiksIEMo
ZDkzNjEyYzgzNWIzN2Q3YiksCi0gICAgIEMoOTFkZDYxNzI5YjJmYTdmNCksIEMoYmE3NjVhMWJk
ZGEwOWRiNyksIEMoNTUyNThiNDUxYjJiMTI5NyksCiAgICAgIEMoOTZlY2RmNzQpfSwKICAgICB7
QygzNWVhODZlNjk2MGNhOTUwKSwgQygzNGZlMWZlMjM0ZmM1Yzc2KSwgQyhhMDAyMDdhM2RjMmE3
MmI3KSwKLSAgICAgQyg4MDM5NWU0ODczOWUxYTY3KSwgQyg3NGE2N2Q4ZjdmNDNjM2Q3KSwgQyhk
ZDJiZGQxZDYyMjQ2YzZlKSwKLSAgICAgQyhhMWY0NDI5OGJhODBhY2Y2KSwgQyg4MDM5NWU0ODcz
OWUxYTY3KSwgQyg3NGE2N2Q4ZjdmNDNjM2Q3KSwKLSAgICAgQyhkZDJiZGQxZDYyMjQ2YzZlKSwg
QyhhMWY0NDI5OGJhODBhY2Y2KSwgQyhhZDg2ZDg2YzE4N2JmMzgpLAotICAgICBDKDI2ZmVlYTFm
MmVlZTI0MGQpLCBDKGVkN2YxZmQwNjZiMjM4OTcpLCBDKGE3NjhjZjFlMGZiYjUwMiksIEMoNzc5
ZjU1MDYpfSwKKyAgICAgQyg3NzlmNTUwNil9LAogICAgIHtDKDhhZWU5ZWRiYzE1ZGQwMTEpLCBD
KDUxZjU4MzlkYzg0NjI2OTUpLCBDKGIyMjEzZTE3YzM3ZGNhMmQpLAotICAgICBDKDEzM2IyOTlh
OTM5NzQ1YzUpLCBDKDc5NmUyYWFjMDUzZjUyYjMpLCBDKGU4ZDlmZTE1MjFhNGEyMjIpLAotICAg
ICBDKDgxOWE4ODYzZTVkMWMyOTApLCBDKDEzM2IyOTlhOTM5NzQ1YzUpLCBDKDc5NmUyYWFjMDUz
ZjUyYjMpLAotICAgICBDKGU4ZDlmZTE1MjFhNGEyMjIpLCBDKDgxOWE4ODYzZTVkMWMyOTApLCBD
KGMwNzM3ZjBmZTM0ZDM2YWQpLAotICAgICBDKGU2ZDZkNGEyNjdhNWNjMzEpLCBDKDk4MzAwYTc5
MTE2NzRjMjMpLCBDKGJlZjE4OTY2MWMyNTcwOTgpLAogICAgICBDKDNjOTRjMmRlKX0sCiAgICAg
e0MoYzNlMTQyYmE5ODQzMmRkYSksIEMoOTExZDA2MGNhYjEyNjE4OCksIEMoYjc1M2ZiZmE4MzY1
Yjg0NCksCi0gICAgIEMoZmQxYTliYTVlNzFiMDhhMiksIEMoN2FjMGRjMmVkNzc3ODUzMyksIEMo
YjU0MzE2MWZmMTc3MTg4YSksCi0gICAgIEMoNDkyZmMwOGE2MTg2ZjNmNCksIEMoZmQxYTliYTVl
NzFiMDhhMiksIEMoN2FjMGRjMmVkNzc3ODUzMyksCi0gICAgIEMoYjU0MzE2MWZmMTc3MTg4YSks
IEMoNDkyZmMwOGE2MTg2ZjNmNCksIEMoZmM0NzQ1ZjUxNmFmZDNiNiksCi0gICAgIEMoODhjMzAz
NzBhNTMwODBlKSwgQyg2NWExYmIzNGFiYzQ2NWUyKSwgQyhhYmJkMTQ2NjI5MTFjOGIzKSwgQygz
OWY5OGZhZil9LAorICAgICBDKDM5Zjk4ZmFmKX0sCiAgICAge0MoMTIzYmE2Yjk5YzhjZDhkYiks
IEMoNDQ4ZTU4MjY3MmVlMDdjNCksIEMoY2ViZTM3OTI5MmRiOWU2NSksCi0gICAgIEMoOTM4ZjVi
YmFiNTQ0ZDNkNiksIEMoZDJhOTVmOWYyZDM3NmQ3MyksIEMoNjhiMmYxNjE0OWU4MWFhMyksCi0g
ICAgIEMoYWQ3ZTMyZjgyZDg2Yzc5ZCksIEMoOTM4ZjViYmFiNTQ0ZDNkNiksIEMoZDJhOTVmOWYy
ZDM3NmQ3MyksCi0gICAgIEMoNjhiMmYxNjE0OWU4MWFhMyksIEMoYWQ3ZTMyZjgyZDg2Yzc5ZCks
IEMoNDU3NDAxNWFlODYyNmNlMiksCi0gICAgIEMoNDU1YWE2MTM3Mzg2YTU4MiksIEMoNjU4YWQy
NTQyZThlYzIwKSwgQyhlMzFkN2JlMmNhMzVkMDApLCBDKDdhZjMxMTk5KX0sCisgICAgIEMoN2Fm
MzExOTkpfSwKICAgICB7QyhiYTg3YWNlZjc5ZDE0ZjUzKSwgQyhiM2UwZmNhZTYzYTExNTU4KSwg
QyhkNWFjMzEzYTU5M2E5ZjQ1KSwKLSAgICAgQyhlZWE1ZjVhOWY3NGFmNTkxKSwgQyg1Nzg3MTBi
Y2MzNmZiZWEyKSwgQyg3YTgzOTM0MzIxODg5MzFkKSwKLSAgICAgQyg3MDVjZmM1ZWM3Y2MxNzIp
LCBDKGVlYTVmNWE5Zjc0YWY1OTEpLCBDKDU3ODcxMGJjYzM2ZmJlYTIpLAotICAgICBDKDdhODM5
MzQzMjE4ODkzMWQpLCBDKDcwNWNmYzVlYzdjYzE3MiksIEMoZGE4NWViZTVmYzQyNzk3NiksCi0g
ICAgIEMoYmZhNWM3YTQ1NGRmNTRjOCksIEMoNDYzMmI3MmE4MWJmNjZkMiksIEMoNWRkNzI4Nzdk
YjUzOWVlMiksCiAgICAgIEMoZTM0MWE5ZDYpfSwKLSAgICB7QyhiY2QzOTU3ZDU3MTdkYzMpLCBD
KDJkYTc0Njc0MWIwM2EwMDcpLCBDKDg3MzgxNmY0YjFlY2U0NzIpLAotICAgICBDKDJiODI2ZjFh
MmMwOGMyODkpLCBDKGRhNTBmNTY4NjNiNTVlNzQpLCBDKGIxODcxMmY2YjNlZWQ4M2IpLAotICAg
ICBDKGJkYzdjYzA1YWI0YzY4NWYpLCBDKDJiODI2ZjFhMmMwOGMyODkpLCBDKGRhNTBmNTY4NjNi
NTVlNzQpLAotICAgICBDKGIxODcxMmY2YjNlZWQ4M2IpLCBDKGJkYzdjYzA1YWI0YzY4NWYpLCBD
KDllNDVmYjgzM2QxYjBhZiksCi0gICAgIEMoZDcyMTMwODFkYjI5ZDgyZSksIEMoZDJhNmI2YzZh
MDllZDU1ZSksIEMoOThhNzY4NmNiYTMyM2NhOSksCi0gICAgIEMoY2EyNGFlZWIpfSwKKyAgICB7
QyhiY2QzOTU3ZDU3MTdkYzMpLCBDKDJkYTc0Njc0MWIwM2EwMDcpLCBDKDg3MzgxNmY0YjFlY2U0
NzIpLCBDKGNhMjRhZWViKX0sCiAgICAge0MoNjE0NDJmZjU1NjA5MTY4ZSksIEMoNjQ0N2M1ZmM3
NmU4YzljZiksIEMoNmE4NDZkZTgzYWUxNTcyOCksCi0gICAgIEMoZWZmYzI2NjNjZmZjNzc3Ziks
IEMoOTMyMTRmOGY0NjNhZmJlZCksIEMoYTE1NmVmMDYwNjZmNGU0ZSksCi0gICAgIEMoYTQwN2I2
ZWQ4NzY5ZDUxZSksIEMoZWZmYzI2NjNjZmZjNzc3ZiksIEMoOTMyMTRmOGY0NjNhZmJlZCksCi0g
ICAgIEMoYTE1NmVmMDYwNjZmNGU0ZSksIEMoYTQwN2I2ZWQ4NzY5ZDUxZSksIEMoYmIyZjllZDI5
NzQ1YzAyYSksCi0gICAgIEMoOTgxZWVjZDQzNWIzNmFkOSksIEMoNDYxYTVhMDVmYjljZGZmNCks
IEMoYmQ2Y2IyYTg3YjlmOTEwYyksCiAgICAgIEMoYjIyNTJiNTcpfSwKLSAgICB7QyhkYmU0YjFi
MmQxNzQ3NTdmKSwgQyg1MDY1MTJkYTE4NzEyNjU2KSwgQyg2ODU3ZjNlMGI4ZGQ5NWYpLAotICAg
ICBDKDVhNGZjMjcyOGE5YmI2NzEpLCBDKGViYjk3MTUyMmVjMzg3NTkpLCBDKDFhNWEwOTNlNmNm
MWY3MmIpLAotICAgICBDKDcyOWIwNTdmZTc4NGY1MDQpLCBDKDVhNGZjMjcyOGE5YmI2NzEpLCBD
KGViYjk3MTUyMmVjMzg3NTkpLAotICAgICBDKDFhNWEwOTNlNmNmMWY3MmIpLCBDKDcyOWIwNTdm
ZTc4NGY1MDQpLCBDKDcxZmNiZjQyYTc2N2Y5Y2YpLAotICAgICBDKDExNGNmZTc3MmRhNmNkZCks
IEMoNjBjZGY5Y2I2MjlkOWQ3YSksIEMoZTI3MGQxMGFkMDg4YjI0ZSksIEMoNzJjODFkYTEpfSwK
KyAgICB7QyhkYmU0YjFiMmQxNzQ3NTdmKSwgQyg1MDY1MTJkYTE4NzEyNjU2KSwgQyg2ODU3ZjNl
MGI4ZGQ5NWYpLCBDKDcyYzgxZGExKX0sCiAgICAge0MoNTMxZThlNzdiMzYzMTYxYyksIEMoZWVj
ZTBiNDNlMmRhZTAzMCksIEMoODI5NGI4MmM3OGYzNGVkMSksCi0gICAgIEMoZTc3N2IxZmQ1ODA1
ODJmMiksIEMoN2I4ODBmNThkYTExMjY5OSksIEMoNTYyYzZiMTg5YTYzMzNmNCksCi0gICAgIEMo
MTM5ZDY0Zjg4YTYxMWQ0KSwgQyhlNzc3YjFmZDU4MDU4MmYyKSwgQyg3Yjg4MGY1OGRhMTEyNjk5
KSwKLSAgICAgQyg1NjJjNmIxODlhNjMzM2Y0KSwgQygxMzlkNjRmODhhNjExZDQpLCBDKDUzZDhl
ZjE3ZWRhNjRmYTQpLAotICAgICBDKGJmM2VkZWQxNGRjNjBhMDQpLCBDKDJiNWM1NTljZjVlYzA3
YzUpLCBDKDg4OTVmNzMzOWQwM2E0OGEpLAogICAgICBDKDZiOWZjZTk1KX0sCiAgICAge0MoZjcx
ZTljOTI2ZDcxMWUyYiksIEMoZDc3YWYyODUzYTRjZWFhMSksIEMoOWFhMGQ2ZDc2YTM2ZmFlNyks
Ci0gICAgIEMoZGQxNmNkMGZiYzA4MzkzKSwgQygyOWE0MTRhNWQ4YzU4OTYyKSwgQyg3Mjc5M2Q4
ZDEwMjJiNWIyKSwKLSAgICAgQygyZThlNjljZjdjYmZmZGYwKSwgQyhkZDE2Y2QwZmJjMDgzOTMp
LCBDKDI5YTQxNGE1ZDhjNTg5NjIpLAotICAgICBDKDcyNzkzZDhkMTAyMmI1YjIpLCBDKDJlOGU2
OWNmN2NiZmZkZjApLCBDKDM3MjFjMDQ3M2FhOTljOWEpLAotICAgICBDKDFjZmY0ZWQ5YzMxY2Q5
MWMpLCBDKDQ5OTA3MzUwMzNjYzQ4MmIpLCBDKDdmZGY4YzcwMWM3MmY1NzcpLAogICAgICBDKDE5
Mzk5ODU3KX0sCiAgICAge0MoY2IyMGFjMjhmNTJkZjM2OCksIEMoZTY3MDVlZTc4ODA5OTZkZSks
IEMoOWI2NjVjYzNlYzY5NzJmMiksCi0gICAgIEMoNDI2MGU4YzI1NGU5OTI0YiksIEMoZjE5N2E2
ZWI0NTkxNTcyZCksIEMoOGU4NjdmZjBmYjdhYjI3YyksCi0gICAgIEMoZjk1NTAyZmI1MDNlZmFm
MyksIEMoNDI2MGU4YzI1NGU5OTI0YiksIEMoZjE5N2E2ZWI0NTkxNTcyZCksCi0gICAgIEMoOGU4
NjdmZjBmYjdhYjI3YyksIEMoZjk1NTAyZmI1MDNlZmFmMyksIEMoMzBjNDE4NzZiMDhlM2UyMiks
Ci0gICAgIEMoOTU4ZTI0MTllM2NkMjJmNCksIEMoZjBmM2FhMWZlMTE5YTEwNyksIEMoNDgxNjYy
MzEwYTM3OTEwMCksCiAgICAgIEMoM2M1N2E5OTQpfSwKICAgICB7QyhlNGE3OTRiNGFjYjk0YjU1
KSwgQyg4OTc5NTM1ODA1N2I2NjFiKSwgQyg5YzRjZGNlYzE3NmQ3YTcwKSwKLSAgICAgQyg0ODkw
YTgzZWU0MzViYzhiKSwgQyhkOGMxYzAwZmNlYjAwOTE0KSwgQyg5ZTcxMTFiYTIzNGY5MDBmKSwK
LSAgICAgQyhlYjhkYmFiMzY0ZDhiNjA0KSwgQyg0ODkwYTgzZWU0MzViYzhiKSwgQyhkOGMxYzAw
ZmNlYjAwOTE0KSwKLSAgICAgQyg5ZTcxMTFiYTIzNGY5MDBmKSwgQyhlYjhkYmFiMzY0ZDhiNjA0
KSwgQyhiMzI2MTQ1Mjk2M2VlYmIpLAotICAgICBDKDZjZjk0YjAyNzkyYzRmOTUpLCBDKGQ4OGZh
ODE1ZWYxZThmYyksIEMoMmQ2ODdhZjY2NjA0YzczKSwgQyhjMDUzZTcyOSl9LAorICAgICBDKGMw
NTNlNzI5KX0sCiAgICAge0MoY2I5NDJlOTE0NDNlNzIwOCksIEMoZTMzNWRlODEyNTU2N2MyYSks
IEMoZDRkNzRkMjY4Yjg2ZGYxZiksCi0gICAgIEMoOGJhMGZkZDJmZmM4YjIzOSksIEMoZjQxM2Iz
NjZjMWZmZTAyZiksIEMoYzA1YjI3MTdjNTlhOGEyOCksCi0gICAgIEMoOTgxMTg4ZWFiNGZjYzhm
YiksIEMoOGJhMGZkZDJmZmM4YjIzOSksIEMoZjQxM2IzNjZjMWZmZTAyZiksCi0gICAgIEMoYzA1
YjI3MTdjNTlhOGEyOCksIEMoOTgxMTg4ZWFiNGZjYzhmYiksIEMoZTU2M2Y0OWExZDkwNzJiYSks
Ci0gICAgIEMoM2M2YTNhYTRhMjYzNjdkYyksIEMoYmEwZGIxMzQ0ODY1M2YzNCksIEMoMzEwNjVk
NzU2MDc0ZDdkNiksCiAgICAgIEMoNTFjYmJiYTcpfSwKICAgICB7QyhlY2NhNzU2M2MyMDNmN2Jh
KSwgQygxNzdhZTI0MjNlZjM0YmIyKSwgQyhmNjBiNzI0MzQwMGM1NzMxKSwKLSAgICAgQyhjZjFl
ZGJmZTczMzBlOTRlKSwgQyg4ODE5NDU5MDZiY2IzY2M2KSwgQyg0YWNmMDI5MzI0NDg1NWRhKSwK
LSAgICAgQyg2NWFlMDQyYzFjMmEyOGMyKSwgQyhjZjFlZGJmZTczMzBlOTRlKSwgQyg4ODE5NDU5
MDZiY2IzY2M2KSwKLSAgICAgQyg0YWNmMDI5MzI0NDg1NWRhKSwgQyg2NWFlMDQyYzFjMmEyOGMy
KSwgQyhiMjVmYTBhMWNhYjMzNTU5KSwKLSAgICAgQyhkOThlOGRhYTI4MTI0MTMxKSwgQyhmY2Ux
N2Y1MGI5YzM1MWIzKSwgQygzZjk5NWNjZjczODY4NjRiKSwKICAgICAgQygxYWNkZTc5YSl9LAog
ICAgIHtDKDE2NTJjYjk0MDE3N2M4YjUpLCBDKDhjNGZlN2Q4NWQyYTZkNmQpLCBDKGY2MjE2YWQw
OTdlNTRlNzIpLAotICAgICBDKGY2NTIxYjkxMmIzNjhhZTYpLCBDKGE5ZmU0ZWZmODFkMDNlNzMp
LCBDKGQ2ZjYyMzYyOWY4MGQxYTMpLAotICAgICBDKDJiOTYwNGYzMmNiN2RjMzQpLCBDKGY2NTIx
YjkxMmIzNjhhZTYpLCBDKGE5ZmU0ZWZmODFkMDNlNzMpLAotICAgICBDKGQ2ZjYyMzYyOWY4MGQx
YTMpLCBDKDJiOTYwNGYzMmNiN2RjMzQpLCBDKDJhNDNkODRkY2Y1OWM3ZTIpLAotICAgICBDKGQw
YTE5N2M3MGM1ZGFlMGIpLCBDKDZlODRkNGJiYzcxZDc2YTApLCBDKGM3ZTk0NjIwMzc4YzZjYjIp
LAogICAgICBDKDJkMTYwZDEzKX0sCiAgICAge0MoMzFmZWQwZmMwNGMxM2NlOCksIEMoM2Q1ZDAz
ZGJmN2ZmMjQwYSksIEMoNzI3YzVjOWI1MTU4MTIwMyksCi0gICAgIEMoNmI1ZmZjMWY1NGZlY2Iy
OSksIEMoYThlOGU3YWQ1YjlhMjFkOSksIEMoYzRkNWEzMmNkNmFhYzIyZCksCi0gICAgIEMoZDdl
Mjc0YWQyMmQ0YTc5YSksIEMoNmI1ZmZjMWY1NGZlY2IyOSksIEMoYThlOGU3YWQ1YjlhMjFkOSks
Ci0gICAgIEMoYzRkNWEzMmNkNmFhYzIyZCksIEMoZDdlMjc0YWQyMmQ0YTc5YSksIEMoMzY4ODQx
ZWE1NzMxYTExMiksCi0gICAgIEMoZmVhZjdiYzJlNzNjYTQ4ZiksIEMoNjM2ZmIyNzJlOWVhMWY2
KSwgQyg1ZDljYjc1ODBjM2Y2MjA3KSwgQyg3ODdmNTgwMSl9LAorICAgICBDKDc4N2Y1ODAxKX0s
CiAgICAge0MoZTdiNjY4OTQ3NTkwYjliMyksIEMoYmFhNDFhZDMyOTM4ZDNmYSksIEMoYWJjYmM4
ZDRjYTRiMzllNCksCi0gICAgIEMoMzgxZWUxYjdlYTUzNGY0ZSksIEMoZGEzNzU5ODI4ZTNkZTQy
OSksIEMoM2UwMTVkNzY3MjlmOTk1NSksCi0gICAgIEMoY2JiZWM1MWE2NDg1ZmJkZSksIEMoMzgx
ZWUxYjdlYTUzNGY0ZSksIEMoZGEzNzU5ODI4ZTNkZTQyOSksCi0gICAgIEMoM2UwMTVkNzY3Mjlm
OTk1NSksIEMoY2JiZWM1MWE2NDg1ZmJkZSksIEMoOWI4NjYwNTI4MWYyMDcyNyksCi0gICAgIEMo
ZmM2ZmNmNTA4Njc2OTgyYSksIEMoM2IxMzVmN2E4MTNhMTA0MCksIEMoZDNhNDcwNmJlYTFkYjlj
OSksCiAgICAgIEMoYzk2Mjk4MjgpfSwKICAgICB7QygxZGUyMTE5OTIzZThlZjNjKSwgQyg2YWIy
N2MwOTZjZjJmZTE0KSwgQyg4YzM2NThlZGNhOTU4ODkxKSwKLSAgICAgQyg0Y2M4ZWQzYWRhNWYw
ZjIpLCBDKDRhNDk2Yjc3YzFmMWMwNGUpLCBDKDkwODViMGE4NjIwODQyMDEpLAotICAgICBDKGEx
ODk0YmRlOWUzZGVlMjEpLCBDKDRjYzhlZDNhZGE1ZjBmMiksIEMoNGE0OTZiNzdjMWYxYzA0ZSks
Ci0gICAgIEMoOTA4NWIwYTg2MjA4NDIwMSksIEMoYTE4OTRiZGU5ZTNkZWUyMSksIEMoMzY3ZmI0
NzJkYzViMjc3ZCksCi0gICAgIEMoN2QzOWNjY2ExNmZjNjc0NSksIEMoNzYzZjk4OGQ3MGRiOTEw
NiksIEMoYThiNjZmN2ZlY2I3MGYwMiksCiAgICAgIEMoYmUxMzkyMzEpfSwKICAgICB7QygxMjY5
ZGYxZTY5ZTE0ZmE3KSwgQyg5OTJmOWQ1OGFjNTA0MWI3KSwgQyhlOTdmY2Y2OTVhN2NiYmI0KSwK
LSAgICAgQyhlNWQwNTQ5ODAyZDE1MDA4KSwgQyg0MjRjMTM0ZWNkMGRiODM0KSwgQyg2ZmM0NGZk
OTFiZTE1YzZjKSwKLSAgICAgQyhhMWE1ZWY5NWQ1MGU1MzdkKSwgQyhlNWQwNTQ5ODAyZDE1MDA4
KSwgQyg0MjRjMTM0ZWNkMGRiODM0KSwKLSAgICAgQyg2ZmM0NGZkOTFiZTE1YzZjKSwgQyhhMWE1
ZWY5NWQ1MGU1MzdkKSwgQyhkMWUzZGFmNWQwNWY1MzA4KSwKLSAgICAgQyg0YzdmODE2MDBlYWEx
MzI3KSwgQygxMDlkMWI4ZDFmOWQwZDJiKSwgQyg4NzFlODY5OWUwYWViODYyKSwKICAgICAgQyg3
ZGY2OTllZil9LAogICAgIHtDKDgyMDgyNmQ3YWJhNTY3ZmYpLCBDKDFmNzNkMjhlMDM2YTUyZjMp
LCBDKDQxYzRjNWE3M2YzYjA4OTMpLAotICAgICBDKGFhMGQ3NGQ0YTk4ZGI4OWIpLCBDKDM2ZmQ0
ODZkMDdjNTZlMWQpLCBDKGQwYWQyM2NiYjY2NjBkOGEpLAotICAgICBDKDEyNjRhODQ2NjViMzVl
MTkpLCBDKGFhMGQ3NGQ0YTk4ZGI4OWIpLCBDKDM2ZmQ0ODZkMDdjNTZlMWQpLAotICAgICBDKGQw
YWQyM2NiYjY2NjBkOGEpLCBDKDEyNjRhODQ2NjViMzVlMTkpLCBDKDc4OTY4MmJmN2Q3ODFiMzMp
LAotICAgICBDKDZiZmE2YWJkMmZiNTcyMmQpLCBDKDY3NzljYjM2MjNkMzM5MDApLCBDKDQzNWNh
NTIxNGUxZWU1ZjApLAogICAgICBDKDhjZTZiOTZkKX0sCiAgICAge0MoZmZlMDU0N2U0OTIzY2Vm
OSksIEMoMzUzNGVkNDliOWRhNWIwMiksIEMoNTQ4YTI3MzcwMGZiYTAzZCksCi0gICAgIEMoMjhh
Yzg0Y2E3MDk1OGY3ZSksIEMoZDhhZTU3NWE2OGZhYTczMSksIEMoMmFhYWVlOWI5ZGNmZmQ0Yyks
Ci0gICAgIEMoNmM3ZmFhYjVjMjg1YzZkYSksIEMoMjhhYzg0Y2E3MDk1OGY3ZSksIEMoZDhhZTU3
NWE2OGZhYTczMSksCi0gICAgIEMoMmFhYWVlOWI5ZGNmZmQ0YyksIEMoNmM3ZmFhYjVjMjg1YzZk
YSksIEMoNDVkOTQyMzVmOTliYTc4ZiksCi0gICAgIEMoYWI1ZWExNmYzOTQ5N2Y1YiksIEMoZmI0
ZDZjODZmY2NiZGNhMyksIEMoODEwNGU2MzEwYTVmZDJjNyksCiAgICAgIEMoNmY5ZWQ5OWMpfSwK
ICAgICB7Qyg3MmRhOGQxYjExZDhiYzhiKSwgQyhiYTk0YjU2YjkxYjY4MWM2KSwgQyg0ZThjYzUx
YmQ5YjBmYzhjKSwKLSAgICAgQyg0MzUwNWVkMTMzYmU2NzJhKSwgQyhlOGYyZjlkOTczYzI3NzRl
KSwgQyg2NzdiOWI5YzdjYWQ2ZDk3KSwKLSAgICAgQyg0ZTFmNWQ1NmVmMTdiOTA2KSwgQyg0MzUw
NWVkMTMzYmU2NzJhKSwgQyhlOGYyZjlkOTczYzI3NzRlKSwKLSAgICAgQyg2NzdiOWI5YzdjYWQ2
ZDk3KSwgQyg0ZTFmNWQ1NmVmMTdiOTA2KSwgQyhlZWEzYTYwMzhmOTgzNzY3KSwKLSAgICAgQyg4
NzEwOWYwNzdmODZkYjAxKSwgQyhlY2MxY2E0MWY3NGQ2MWNjKSwgQygzNGE4N2U4NmU4M2JlZDE3
KSwKICAgICAgQyhlMDI0NDc5Nil9LAotICAgIHtDKGQ2MmFiNGUzZjg4ZmM3OTcpLCBDKGVhODZj
N2FlYjYyODNhZTQpLCBDKGI1YjkzZTA5YTdmZTQ2NSksCi0gICAgIEMoNDM0NGExYTAxMzRhZmUy
KSwgQyhmZjVjMTdmMDJiNjIzNDFkKSwgQygzMjE0YzZhNTg3Y2U0NjQ0KSwKLSAgICAgQyhhOTA1
ZTdlZDA2MjlkMDVjKSwgQyg0MzQ0YTFhMDEzNGFmZTIpLCBDKGZmNWMxN2YwMmI2MjM0MWQpLAot
ICAgICBDKDMyMTRjNmE1ODdjZTQ2NDQpLCBDKGE5MDVlN2VkMDYyOWQwNWMpLCBDKGI1YzcyNjkw
Y2Q3MTZlODIpLAotICAgICBDKDdjNjA5NzY0OWU2ZWJlN2IpLCBDKDdjZWVlOGM2ZTU2YTRkY2Qp
LCBDKDgwY2E4NDlkYzUzZWI5ZTQpLAotICAgICBDKDRjY2Y3ZTc1KX0sCisgICAge0MoZDYyYWI0
ZTNmODhmYzc5NyksIEMoZWE4NmM3YWViNjI4M2FlNCksIEMoYjViOTNlMDlhN2ZlNDY1KSwgQyg0
Y2NmN2U3NSl9LAogICAgIHtDKGQwZjA2YzI4YzdiMzY4MjMpLCBDKDEwMDhjYjA4NzRkZTRiYjgp
LCBDKGQ2YzdmZjgxNmM3YTczN2IpLAotICAgICBDKDQ4OWI2OTdmZTMwYWE2NWYpLCBDKDRkYTBm
YjYyMWZkYzc4MTcpLCBDKGRjNDM1ODNiODJjNTgxMDcpLAotICAgICBDKDRiMDI2MWRlYmRlYzNj
ZDYpLCBDKDQ4OWI2OTdmZTMwYWE2NWYpLCBDKDRkYTBmYjYyMWZkYzc4MTcpLAotICAgICBDKGRj
NDM1ODNiODJjNTgxMDcpLCBDKDRiMDI2MWRlYmRlYzNjZDYpLCBDKGE5NzQ4ZDdiNmMwZTAxNmMp
LAotICAgICBDKDdlODgyOGY3YmE0YjAzNGIpLCBDKGRhMGZhNTQzNDhhMjUxMmEpLCBDKGViZjk3
NDVjMDk2MmY5YWQpLAogICAgICBDKDkxNWNlZjg2KX0sCiAgICAge0MoOTliNzA0MjQ2MGQ3MmVj
NiksIEMoMmE1M2U1ZTJiOGU3OTVjMiksIEMoNTNhNzgxMzJkOWUxYjNlMyksCi0gICAgIEMoYzA0
M2U2N2U2ZmM2NDExOCksIEMoZmYwYWJmZTkyNmQ4NDRkMyksIEMoZjJhOWZlNWRiMmU5MTBmZSks
Ci0gICAgIEMoY2UzNTJjZGM4NGE5NjRkZCksIEMoYzA0M2U2N2U2ZmM2NDExOCksIEMoZmYwYWJm
ZTkyNmQ4NDRkMyksCi0gICAgIEMoZjJhOWZlNWRiMmU5MTBmZSksIEMoY2UzNTJjZGM4NGE5NjRk
ZCksIEMoYjg5YmMwMjhhYTVlNjA2MyksCi0gICAgIEMoYTM1NGU3ZmRhYzA0NDU5YyksIEMoNjhk
NjU0N2U2ZTk4MDE4OSksIEMoYzk2OGRkZGZkNTczNzczZSksCiAgICAgIEMoNWNiNTk0ODIpfSwK
LSAgICB7Qyg0ZjRkZmNmYzBlYzJiYWU1KSwgQyg4NDEyMzMxNDgyNjhhMWI4KSwgQyg5MjQ4YTc2
YWI4YmUwZDMpLAotICAgICBDKDMzNGM1YTI1YjU5MDNhOGMpLCBDKDRjOTRmZWY0NDMxMjIxMjgp
LCBDKDc0M2U3ZDg0NTQ2NTVjNDApLAotICAgICBDKDFhYjFlNmQxNDUyYWUyY2QpLCBDKDMzNGM1
YTI1YjU5MDNhOGMpLCBDKDRjOTRmZWY0NDMxMjIxMjgpLAotICAgICBDKDc0M2U3ZDg0NTQ2NTVj
NDApLCBDKDFhYjFlNmQxNDUyYWUyY2QpLCBDKGZlYzc2NmRlNGE4ZTQ3NmMpLAotICAgICBDKGNj
MDkyOWRhOTU2N2U3MWIpLCBDKDVmOWVmNWI1ZjE1MGMzNWEpLCBDKDg3NjU5Y2FiZDY0OTc2OGYp
LAotICAgICBDKDZjYTNmNTMyKX0sCisgICAge0MoNGY0ZGZjZmMwZWMyYmFlNSksIEMoODQxMjMz
MTQ4MjY4YTFiOCksIEMoOTI0OGE3NmFiOGJlMGQzKSwgQyg2Y2EzZjUzMil9LAogICAgIHtDKGZl
ODZiZjlkNDQyMmI5YWUpLCBDKGViY2U4OWM5MDY0MWVmOWMpLCBDKDFjODRlMjI5MmMwYjU2NTkp
LAotICAgICBDKDhiZGU2MjVhMTBhOGM1MGQpLCBDKGViODI3MWRlZDFmNzlhMGIpLCBDKDE0ZGM2
ODQ0ZjBkZTdhM2MpLAotICAgICBDKGY4NWIyZjk1NDFlN2U2ZGEpLCBDKDhiZGU2MjVhMTBhOGM1
MGQpLCBDKGViODI3MWRlZDFmNzlhMGIpLAotICAgICBDKDE0ZGM2ODQ0ZjBkZTdhM2MpLCBDKGY4
NWIyZjk1NDFlN2U2ZGEpLCBDKDJmZTIyY2ZkMTY4M2I5NjEpLAotICAgICBDKGVhMWQ3NWM1Yjdh
YTAxY2EpLCBDKDllZWY2MGE0NDg3NmJiOTUpLCBDKDk1MGM4MThlNTA1YzZmN2YpLAogICAgICBD
KGUyNGYzODU5KX0sCiAgICAge0MoYTkwZDgxMDYwOTMyZGJiMCksIEMoOGFjZmFhODhjNWZiZTky
YiksIEMoN2M2ZjM0NDdlOTBmN2YzZiksCi0gICAgIEMoZGQ1MmZjMTRjOGRkMzE0MyksIEMoMWJj
NzUwODUxNmU0MDYyOCksIEMoMzA1OTczMDI2NmFkZTYyNiksCi0gICAgIEMoZmZhNTI2ODIyZjM5
MWMyKSwgQyhkZDUyZmMxNGM4ZGQzMTQzKSwgQygxYmM3NTA4NTE2ZTQwNjI4KSwKLSAgICAgQygz
MDU5NzMwMjY2YWRlNjI2KSwgQyhmZmE1MjY4MjJmMzkxYzIpLCBDKGUyNTIzMmQ3YWZjOGE0MDYp
LAotICAgICBDKGQyYjhhNWEzZjNiNWY2NzApLCBDKDY2MzBmMzNlZGI3ZGZlMzIpLCBDKGM3MTI1
MGJhNjhjNGVhODYpLAogICAgICBDKGFkZjVhOWM3KX0sCiAgICAge0MoMTc5MzhhMWIwZTdmNTk1
MiksIEMoMjJjYWRkMmY1NmY4YTRiZSksIEMoODRiMGQxMTgzZDVlZDdjMSksCi0gICAgIEMoYzEz
MzZiOTJmZWY5MWJmNiksIEMoODAzMzJhMzk0NWYzM2ZhOSksIEMoYTBmNjhiODZmNzI2ZmY5Miks
Ci0gICAgIEMoYTNkYjUyODJjZjVmNGMwYiksIEMoYzEzMzZiOTJmZWY5MWJmNiksIEMoODAzMzJh
Mzk0NWYzM2ZhOSksCi0gICAgIEMoYTBmNjhiODZmNzI2ZmY5MiksIEMoYTNkYjUyODJjZjVmNGMw
YiksIEMoODI2NDBiNmZjNDkxNjYwNyksCi0gICAgIEMoMmRjMmEzYWExYTg5NDE3NSksIEMoOGI0
Yzg1MmJkZWU3Y2M5KSwgQygxMGI5ZDBhMDhiNTVmZjgzKSwgQygzMjI2NGI3NSl9LAorICAgICBD
KDMyMjY0Yjc1KX0sCiAgICAge0MoZGU5ZTBjYjBlMTZmNmU2ZCksIEMoMjM4ZTYyODNhYTRmNjU5
NCksIEMoNGZiOWM5MTRjMmYwYTEzYiksCi0gICAgIEMoNDk3Y2I5MTJiNjcwZjNiKSwgQyhkOTYz
YTNmMDJmZjRhNWI2KSwgQyg0ZmNjZWZhZTExYjUwMzkxKSwKLSAgICAgQyg0MmJhNDdkYjNmNzY3
MmYpLCBDKDQ5N2NiOTEyYjY3MGYzYiksIEMoZDk2M2EzZjAyZmY0YTViNiksCi0gICAgIEMoNGZj
Y2VmYWUxMWI1MDM5MSksIEMoNDJiYTQ3ZGIzZjc2NzJmKSwgQygxZDZiNjU1YTE4ODlmZWVmKSwK
LSAgICAgQyg1ZjMxOWFiZjhmYWZhMTlmKSwgQyg3MTVjMmU0OWRlYjE0NjIwKSwgQyg4ZDkxNTMw
ODJlY2RjZWE0KSwKICAgICAgQyhhNjRiMzM3Nil9LAotICAgIHtDKDZkNGI4NzZkOWIxNDZkMWEp
LCBDKGFhYjJkNjRjZThmMjY3MzkpLCBDKGQzMTVmOTM2MDBlODNmZTUpLAotICAgICBDKDJmZTlm
YWJkYmU3ZmRkNCksIEMoNzU1ZGIyNDlhMmQ4MWE2OSksIEMoZjI3OTI5ZjM2MDQ0NmQ3MSksCi0g
ICAgIEMoNzlhMWJmOTU3YzBjMWI5MiksIEMoMmZlOWZhYmRiZTdmZGQ0KSwgQyg3NTVkYjI0OWEy
ZDgxYTY5KSwKLSAgICAgQyhmMjc5MjlmMzYwNDQ2ZDcxKSwgQyg3OWExYmY5NTdjMGMxYjkyKSwg
QygzYzhhMjhkNGM5MzZjOWNkKSwKLSAgICAgQyhkZjBkM2QxM2IyYzZhOTAyKSwgQyhjNzY3MDJk
ZDk3Y2QyZWRkKSwgQygxYWEyMjBmN2JlMTY1MTcpLCBDKGQzMzg5MGUpfSwKKyAgICB7Qyg2ZDRi
ODc2ZDliMTQ2ZDFhKSwgQyhhYWIyZDY0Y2U4ZjI2NzM5KSwgQyhkMzE1ZjkzNjAwZTgzZmU1KSwg
QyhkMzM4OTBlKX0sCiAgICAge0MoZTY5OGZhM2Y1NGU2ZWEyMiksIEMoYmQyOGUyMGU3NDU1MzU4
YyksIEMoOWFjZTE2MWY2ZWE3NmU2NiksCi0gICAgIEMoZDUzZmI3ZTNjOTNhOWU0KSwgQyg3Mzdh
ZTcxYjA1MWJmMTA4KSwgQyg3YWM3MWZlYjg0YzJkZjQyKSwKLSAgICAgQygzZDgwNzVjZDI5M2Ex
NWI0KSwgQyhkNTNmYjdlM2M5M2E5ZTQpLCBDKDczN2FlNzFiMDUxYmYxMDgpLAotICAgICBDKDdh
YzcxZmViODRjMmRmNDIpLCBDKDNkODA3NWNkMjkzYTE1YjQpLCBDKGJmOGNlZTVlMDk1ZDhhN2Mp
LAotICAgICBDKGU3MDg2YjNjNzYwODE0M2EpLCBDKGU1NWIwYzJmYTkzOGQ3MGMpLCBDKGZmZmI1
ZjU4ZTY0MzY0OWMpLAogICAgICBDKDkyNmQ0YjYzKX0sCiAgICAge0MoN2JjMGRlZWQ0ZmIzNDlm
NyksIEMoMTc3MWFmZjI1ZGM3MjJmYSksIEMoMTlmZjA2NDRkOTY4MTkxNyksCi0gICAgIEMoY2Y3
ZDdmMjViZDcwY2QyYyksIEMoOTQ2NGVkOWJhZWI0MWI0ZiksIEMoYjkwNjRmNWMzY2IxMWI3MSks
Ci0gICAgIEMoMjM3ZTM5MjI5YjAxMmIyMCksIEMoY2Y3ZDdmMjViZDcwY2QyYyksIEMoOTQ2NGVk
OWJhZWI0MWI0ZiksCi0gICAgIEMoYjkwNjRmNWMzY2IxMWI3MSksIEMoMjM3ZTM5MjI5YjAxMmIy
MCksIEMoZGQ1NGQzZjVkOTgyZGZmZSksCi0gICAgIEMoN2ZjNzU2MmRiZmM4MWRiZiksIEMoNWIw
ZGQxOTI0ZjcwOTQ1KSwgQyhmMTc2MDUzN2Q4MjYxMTM1KSwgQyhkNTFiYTUzOSl9LAorICAgICBD
KGQ1MWJhNTM5KX0sCiAgICAge0MoZGI0YjE1ZTg4NTMzZjYyMiksIEMoMjU2ZDZkMjQxOWI0MWNl
OSksIEMoOWQ3YzUzNzgzOTY3NjVkNSksCi0gICAgIEMoOTA0MGU1YjkzNmI4NjYxYiksIEMoMjc2
ZTA4ZmE1M2FjMjdmZCksIEMoOGM5NDRkMzljMmJkZDJjYyksCi0gICAgIEMoZTI1MTRjOTgwMmE1
NzQzYyksIEMoOTA0MGU1YjkzNmI4NjYxYiksIEMoMjc2ZTA4ZmE1M2FjMjdmZCksCi0gICAgIEMo
OGM5NDRkMzljMmJkZDJjYyksIEMoZTI1MTRjOTgwMmE1NzQzYyksIEMoZTgyMTA3YjExYWM5MDM4
NiksCi0gICAgIEMoN2Q2YTIyYmMzNTA1NWU2KSwgQyhmZDZlYTlkMWM0MzhkOGFlKSwgQyhiZTYw
MTUxNDllOTgxNTUzKSwgQyg3ZjM3NjM2ZCl9LAorICAgICBDKDdmMzc2MzZkKX0sCiAgICAge0Mo
OTIyODM0NzM1ZTg2ZWNiMiksIEMoMzYzMzgyNjg1Yjg4MzI4ZSksIEMoZTljOTI5NjBkNzE0NDYz
MCksCi0gICAgIEMoODQzMWIxYmZkMGEyMzc5YyksIEMoOTAzODM5MTNhZWEyODNmOSksIEMoYTYx
NjM4MzFlYjQ5MjRkMiksCi0gICAgIEMoNWYzOTIxYjRmOTA4NGFlZSksIEMoODQzMWIxYmZkMGEy
Mzc5YyksIEMoOTAzODM5MTNhZWEyODNmOSksCi0gICAgIEMoYTYxNjM4MzFlYjQ5MjRkMiksIEMo
NWYzOTIxYjRmOTA4NGFlZSksIEMoN2E3MDA2MWExNDczZTU3OSksCi0gICAgIEMoNWIxOWQ4MGRj
ZDJjNjMzMSksIEMoNjE5NmI5NzkzMWZhYWQyNyksIEMoODY5YmY2ODI4ZTIzN2MzZiksCiAgICAg
IEMoYjk4MDI2YzApfSwKICAgICB7QygzMGYxZDcyYzgxMmYxZWI4KSwgQyhiNTY3Y2Q0YTY5Y2Q4
OTg5KSwgQyg4MjBiNmM5OTJhNTFmMGJjKSwKLSAgICAgQyhjNTQ2NzdhODAzNjcxMjVlKSwgQygz
MjA0ZmJkYmE0NjJlNjA2KSwgQyg4NTYzMjc4YWZjOWVhZTY5KSwKLSAgICAgQygyNjIxNDdkZDRi
ZjdlNTY2KSwgQyhjNTQ2NzdhODAzNjcxMjVlKSwgQygzMjA0ZmJkYmE0NjJlNjA2KSwKLSAgICAg
Qyg4NTYzMjc4YWZjOWVhZTY5KSwgQygyNjIxNDdkZDRiZjdlNTY2KSwgQygyMTc4YjYzZTdlZTJk
MjMwKSwKLSAgICAgQyhlOWM2MWFkODFmNWJmZjI2KSwgQyg5YWY3YTgxYjNjNTAxZWNhKSwgQyg0
NDEwNGEzODU5ZjAyMzhmKSwKICAgICAgQyhiODc3NzY3ZSl9LAotICAgIHtDKDE2ODg4NDI2N2Yz
ODE3ZTkpLCBDKDViMzc2ZTA1MGY2Mzc2NDUpLCBDKDFjMTgzMTRhYmQzNDQ5N2EpLAotICAgICBD
KDk1OThmNmFiMDY4M2ZjYzIpLCBDKDFjODA1YWJmN2I4MGUxZWUpLCBDKGRlYzlhYzQyZWUwZDBm
MzIpLAotICAgICBDKDhjZDcyZTM5MTJkMjQ2NjMpLCBDKDk1OThmNmFiMDY4M2ZjYzIpLCBDKDFj
ODA1YWJmN2I4MGUxZWUpLAotICAgICBDKGRlYzlhYzQyZWUwZDBmMzIpLCBDKDhjZDcyZTM5MTJk
MjQ2NjMpLCBDKDFmMDI1ZDQwNWYxYzFkODcpLAotICAgICBDKGJmN2I2MjIxZTE2NjhmOGYpLCBD
KDUyMzE2ZjY0ZTY5MmRiYjApLCBDKDdiZjQzZGY2MWVjNTFiMzkpLCBDKGFlZmFlNzcpfSwKLSAg
ICB7Qyg4MmU3ODU5NmVlM2U1NmE3KSwgQygyNTY5N2Q5Yzg3ZjMwZDk4KSwgQyg3NjAwYTgzNDI4
MzQ5MjRkKSwKLSAgICAgQyg2YmEzNzJmNGI3YWIyNjhiKSwgQyg4YzMyMzdjZjFmZTI0M2RmKSwg
QygzODMzZmM1MTAxMjkwM2RmKSwKLSAgICAgQyg4ZTMxMzEwMTA4YzU2ODNmKSwgQyg2YmEzNzJm
NGI3YWIyNjhiKSwgQyg4YzMyMzdjZjFmZTI0M2RmKSwKLSAgICAgQygzODMzZmM1MTAxMjkwM2Rm
KSwgQyg4ZTMxMzEwMTA4YzU2ODNmKSwgQygxMjY1OTM3MTVjMmRlNDI5KSwKLSAgICAgQyg0OGNh
OGYzNWEzZjU0YjkwKSwgQyhiOTMyMmI2MzJmNGY4YjApLCBDKDkyNmJiMTY5YjczMzc2OTMpLCBD
KGY2ODY5MTEpfSwKKyAgICB7QygxNjg4ODQyNjdmMzgxN2U5KSwgQyg1YjM3NmUwNTBmNjM3NjQ1
KSwgQygxYzE4MzE0YWJkMzQ0OTdhKSwgQyhhZWZhZTc3KX0sCisgICAge0MoODJlNzg1OTZlZTNl
NTZhNyksIEMoMjU2OTdkOWM4N2YzMGQ5OCksIEMoNzYwMGE4MzQyODM0OTI0ZCksIEMoZjY4Njkx
MSl9LAogICAgIHtDKGFhMmQ2Y2YyMmUzY2MyNTIpLCBDKDliNGRlYzRmNWUxNzlmMTYpLCBDKDc2
ZmIwZmJhMWQ5OWE5OWEpLAotICAgICBDKDlhNjJhZjNkYmJhMTQwZGEpLCBDKDI3ODU3ZWEwNDRl
OWRmYzEpLCBDKDMzYWJjZTlkYTIyNzI2NDcpLAotICAgICBDKGIyMmE3OTkzYWFmMzI1NTYpLCBD
KDlhNjJhZjNkYmJhMTQwZGEpLCBDKDI3ODU3ZWEwNDRlOWRmYzEpLAotICAgICBDKDMzYWJjZTlk
YTIyNzI2NDcpLCBDKGIyMmE3OTkzYWFmMzI1NTYpLCBDKGJmOGY4OGY4MDE5YmVkZjApLAotICAg
ICBDKGVkMmQ3ZjAxZmIyNzM5MDUpLCBDKDZiNDVmMTU5MDFiNDgxY2QpLCBDKGY4OGViYjQxM2Jh
NmE4ZDUpLAogICAgICBDKDNkZWFkZjEyKX0sCiAgICAge0MoN2JmNWZmZDdmNjkzODVjNyksIEMo
ZmMwNzdiMWQ4YmM4Mjg3OSksIEMoOWMwNGUzNmY5ZWQ4M2EyNCksCi0gICAgIEMoODIwNjVjNjJl
NjU4MjE4OCksIEMoOGVmNzg3ZmQzNTZmNWU0MyksIEMoMjkyMmU1M2UzNmUxN2RmYSksCi0gICAg
IEMoOTgwNWYyMjNkMzg1MDEwYiksIEMoODIwNjVjNjJlNjU4MjE4OCksIEMoOGVmNzg3ZmQzNTZm
NWU0MyksCi0gICAgIEMoMjkyMmU1M2UzNmUxN2RmYSksIEMoOTgwNWYyMjNkMzg1MDEwYiksIEMo
NjkyMTU0ZjM0OTFiNzg3ZCksCi0gICAgIEMoZTdlNjQ3MDBlNDE0ZmJmKSwgQyg3NTdkNGQ0YWI2
NTA2OWEwKSwgQyhjZDAyOTQ0NmE4ZTM0OGUyKSwgQyhjY2YwMmE0ZSl9LAorICAgICBDKGNjZjAy
YTRlKX0sCiAgICAge0MoZTg5YzhmZjlmOWM2ZTM0YiksIEMoZjU0YzBmNjY5YTQ5ZjZjNCksIEMo
ZmMzZTQ2ZjVkODQ2YWRlZiksCi0gICAgIEMoMjJmMmFhM2RmMjIyMWNjKSwgQyhmNjZmZWE5MGY1
ZDYyMTc0KSwgQyhiNzVkZWZhZWFhMWRkMmE3KSwKLSAgICAgQyg5Yjk5NGNkOWE3MjE0ZmQ1KSwg
QygyMmYyYWEzZGYyMjIxY2MpLCBDKGY2NmZlYTkwZjVkNjIxNzQpLAotICAgICBDKGI3NWRlZmFl
YWExZGQyYTcpLCBDKDliOTk0Y2Q5YTcyMTRmZDUpLCBDKGZhYzY3NWEzMTgwNGI3NzMpLAotICAg
ICBDKDk4YmNiM2I4MjBjNTBmYzYpLCBDKGUxNGFmNjRkMjhjZjA4ODUpLCBDKDI3NDY2ZmJkMmIz
NjBlYjUpLAogICAgICBDKDE3NmMxNzIyKX0sCi0gICAge0MoYTE4ZmJjZGNjZDExZTFmNCksIEMo
ODI0ODIxNjc1MWRmZDY1ZSksIEMoNDBjMDg5ZjIwOGQ4OWQ3YyksCi0gICAgIEMoMjI5Yjc5YWI2
OWFlOTdkKSwgQyhhODdhYWJjMmVjMjZlNTgyKSwgQyhiZTJiMDUzNzIxZWIyNmQyKSwKLSAgICAg
QygxMGZlYmQ3ZjBjM2Q2ZmNiKSwgQygyMjliNzlhYjY5YWU5N2QpLCBDKGE4N2FhYmMyZWMyNmU1
ODIpLAotICAgICBDKGJlMmIwNTM3MjFlYjI2ZDIpLCBDKDEwZmViZDdmMGMzZDZmY2IpLCBDKDlj
YzViOWIyZjZlM2JmN2IpLAotICAgICBDKDY1NWQ4NDk1ZmU2MjRhODYpLCBDKDYzODFhOWYzZDFm
MmJkN2UpLCBDKDc5ZWJhYmJmYzI1YzgzZTIpLCBDKDI2ZjgyYWQpfSwKKyAgICB7QyhhMThmYmNk
Y2NkMTFlMWY0KSwgQyg4MjQ4MjE2NzUxZGZkNjVlKSwgQyg0MGMwODlmMjA4ZDg5ZDdjKSwgQygy
NmY4MmFkKX0sCiAgICAge0MoMmQ1NGY0MGNjNDA4OGIxNyksIEMoNTlkMTU2MzNiMGNkMTM5OSks
IEMoYThjYzA0YmIxYmZmZDE1YiksCi0gICAgIEMoZDMzMmNkYjA3M2Q4ZGM0NiksIEMoMjcyYzU2
NDY2ODY4Y2I0NiksIEMoN2U3ZmNiZTM1Y2E2YzNmMyksCi0gICAgIEMoZWU4ZjUxZTVhNzAzOTlk
NCksIEMoZDMzMmNkYjA3M2Q4ZGM0NiksIEMoMjcyYzU2NDY2ODY4Y2I0NiksCi0gICAgIEMoN2U3
ZmNiZTM1Y2E2YzNmMyksIEMoZWU4ZjUxZTVhNzAzOTlkNCksIEMoMTY3MzdhOWM3NTgxZmU3Yiks
Ci0gICAgIEMoZWQwNGJmNTJmNGI3NWRjYiksIEMoOTcwN2ZmYjM2YmQzMGMxYSksIEMoMTM5MGYy
MzZmZGMwZGUzZSksCiAgICAgIEMoYjUyNDRmNDIpfSwKICAgICB7Qyg2OTI3Njk0NmNiNGU4N2M3
KSwgQyg2MmJkYmU2MTgzYmU2ZmE5KSwgQygzYmE5NzczZGFjNDQyYTFhKSwKLSAgICAgQyg3MDJl
MmFmYzdmNWExODI1KSwgQyg4YzQ5YjExZWE4MTUxZmRjKSwgQyhjYWYzZmVmNjFmNWE4NmZhKSwK
LSAgICAgQyhlZjBiMmVlODY0OWQ3MjcyKSwgQyg3MDJlMmFmYzdmNWExODI1KSwgQyg4YzQ5YjEx
ZWE4MTUxZmRjKSwKLSAgICAgQyhjYWYzZmVmNjFmNWE4NmZhKSwgQyhlZjBiMmVlODY0OWQ3Mjcy
KSwgQyg5ZTM0YTRlMDhkOTQ0MWUxKSwKLSAgICAgQyg3YmRjMGNkNjRkNWFmNTMzKSwgQyhhOTI2
YjE0ZDk5ZTNkODY4KSwgQyhmY2E5MjNhMTc3ODhjY2U0KSwKICAgICAgQyg0OWE2ODllNSl9LAot
ICAgIHtDKDY2ODE3NGEzZjQ0M2RmMWQpLCBDKDQwNzI5OTM5MmRhMWNlODYpLCBDKGMyYTNmN2Q3
ZjJjNWJlMjgpLAotICAgICBDKGE1OTBiMjAyYTdhNTgwN2IpLCBDKDk2OGQyNTkzZjdjY2I1NGUp
LCBDKDlkZDhkNjY5ZTNlOTVkZWMpLAotICAgICBDKGVlMGNjNWRkNThiNmU5M2EpLCBDKGE1OTBi
MjAyYTdhNTgwN2IpLCBDKDk2OGQyNTkzZjdjY2I1NGUpLAotICAgICBDKDlkZDhkNjY5ZTNlOTVk
ZWMpLCBDKGVlMGNjNWRkNThiNmU5M2EpLCBDKGFjNjVkNWE5NDY2ZmI0ODMpLAotICAgICBDKDIy
MWJlNTM4YjJjOWQ4MDYpLCBDKDVjYmU5NDQxNzg0ZjlmZDkpLCBDKGQ0YzdkNWQ2ZTNjMTIyYjgp
LCBDKDU5ZmNkZDMpfSwKLSAgICB7Qyg1ZTI5YmU4NDdiZDUwNDYpLCBDKGI1NjFjN2YxOWM4Zjgw
YzMpLCBDKDVlNWFiZDUwMjFjY2FlYWYpLAotICAgICBDKDc0MzJkNjM4ODhlMGMzMDYpLCBDKDc0
YmJjZWVlZDQ3OWNiNzEpLCBDKDY0NzE1ODY1OTk1NzVmZGYpLAotICAgICBDKDZhODU5YWQyMzM2
NWNiYTIpLCBDKDc0MzJkNjM4ODhlMGMzMDYpLCBDKDc0YmJjZWVlZDQ3OWNiNzEpLAotICAgICBD
KDY0NzE1ODY1OTk1NzVmZGYpLCBDKDZhODU5YWQyMzM2NWNiYTIpLCBDKGY5Y2VlYzg0YWNkMThk
Y2MpLAotICAgICBDKDc0YTI0MmZmMTkwNzQzN2MpLCBDKGY3MDg5MDE5NGUxZWU5MTMpLCBDKDc3
N2RmY2I0YmIwMWYwYmEpLAotICAgICBDKDRmNGIwNGU5KX0sCisgICAge0MoNjY4MTc0YTNmNDQz
ZGYxZCksIEMoNDA3Mjk5MzkyZGExY2U4NiksIEMoYzJhM2Y3ZDdmMmM1YmUyOCksIEMoNTlmY2Rk
Myl9LAorICAgIHtDKDVlMjliZTg0N2JkNTA0NiksIEMoYjU2MWM3ZjE5YzhmODBjMyksIEMoNWU1
YWJkNTAyMWNjYWVhZiksIEMoNGY0YjA0ZTkpfSwKICAgICB7QyhjZDBkNzlmMjE2NGRhMDE0KSwg
Qyg0YzM4NmJiNWM1ZDZjYTBjKSwgQyg4ZTc3MWIwMzY0N2MzYjYzKSwKLSAgICAgQyg2OWRiMjM4
NzVjYjBiNzE1KSwgQyhhZGE4ZGQ5MTUwNGFlMzdmKSwgQyg0NmJmMThkYmYwNDVlZDZhKSwKLSAg
ICAgQyhlMWI1ZjY3YjA2NDVhYjYzKSwgQyg2OWRiMjM4NzVjYjBiNzE1KSwgQyhhZGE4ZGQ5MTUw
NGFlMzdmKSwKLSAgICAgQyg0NmJmMThkYmYwNDVlZDZhKSwgQyhlMWI1ZjY3YjA2NDVhYjYzKSwg
Qyg4NzdiZThmNWRjZGRmZjQpLAotICAgICBDKDZkNDcxYjVmOWNhMmUyZDEpLCBDKDgwMmM4NmQ2
ZjQ5NWI5YmIpLCBDKGExZjliOWIyMmIzYmU3MDQpLAogICAgICBDKDhiMDBmODkxKX0sCiAgICAg
e0MoZTBlNmZjMGIxNjI4YWYxZCksIEMoMjliZTVmYjRjMjdhMjk0OSksIEMoMWMzZjc4MWE2MDRk
MzYzMCksCi0gICAgIEMoYzRhZjdmYWY4ODMwMzNhYSksIEMoOWJkMjk2YzRlOTQ1M2NhYyksIEMo
Y2E0NTQyNmMxZjdlMzNmOSksCi0gICAgIEMoYTZiYmRjZjcwNzRkNDBjNSksIEMoYzRhZjdmYWY4
ODMwMzNhYSksIEMoOWJkMjk2YzRlOTQ1M2NhYyksCi0gICAgIEMoY2E0NTQyNmMxZjdlMzNmOSks
IEMoYTZiYmRjZjcwNzRkNDBjNSksIEMoZTEzYTAwNWQ3MTQyNzMzYiksCi0gICAgIEMoYzAyYjc5
MjVjNWVlZWZhZiksIEMoZDM5MTE5YTYwNDQxZTJkNSksIEMoM2MyNGM3MTBkZjhmNGQ0MyksCiAg
ICAgIEMoMTZlMTE0ZjMpfSwKICAgICB7QygyMDU4OTI3NjY0YWRmZDkzKSwgQyg2ZThmOTY4Yzc5
NjNiYWE1KSwgQyhhZjNkY2VkNmZmZjdjMzk0KSwKLSAgICAgQyg0MmUzNGNmM2Q1M2M3ODc2KSwg
Qyg5Y2RkYmIyNjQyNGRjNWUpLCBDKDY0ZjYzNDBhNmQ4ZWRkYWQpLAotICAgICBDKDIxOTZlNDg4
ZWIyYTNhNGIpLCBDKDQyZTM0Y2YzZDUzYzc4NzYpLCBDKDljZGRiYjI2NDI0ZGM1ZSksCi0gICAg
IEMoNjRmNjM0MGE2ZDhlZGRhZCksIEMoMjE5NmU0ODhlYjJhM2E0YiksIEMoYzllOWRhMjU5MTFh
MTZmZCksCi0gICAgIEMoZTIxYjQ2ODNmM2UxOTZhOCksIEMoY2I4MGJmMWE0YzZmZGJiNCksIEMo
NTM3OTJlOWIzYzNlNjdmOCksCiAgICAgIEMoZDZiNmRhZGMpfSwKICAgICB7QyhkYzEwNzI4NWZk
OGUxYWY3KSwgQyhhODY0MWEwNjA5MzIxZjNmKSwgQyhkYjA2ZTg5ZmZkYzU0NDY2KSwKLSAgICAg
QyhiY2M3YTgxZWQ1NDMyNDI5KSwgQyhiNmQ3YmRjNmFkMmU4MWYxKSwgQyg5MzYwNWVjNDcxYWEz
N2RiKSwKLSAgICAgQyhhMmE3M2Y4YTg1YThlMzk3KSwgQyhiY2M3YTgxZWQ1NDMyNDI5KSwgQyhi
NmQ3YmRjNmFkMmU4MWYxKSwKLSAgICAgQyg5MzYwNWVjNDcxYWEzN2RiKSwgQyhhMmE3M2Y4YTg1
YThlMzk3KSwgQygxMGEwMTJiOGNhN2FjMjRiKSwKLSAgICAgQyhhYWM1ZmQ2MzM1MTU5NWNmKSwg
Qyg1YmI0YzY0OGEyMjZkZWEwKSwgQyg5ZDExZWNiMmI1YzA1YzVmKSwKICAgICAgQyg4OTdlMjBh
Yyl9LAotICAgIHtDKGZiYmExYWZlMmUzMjgwZjEpLCBDKDc1NWE1ZjM5MmYwN2ZjZSksIEMoOWU0
NGE5YTE1NDAyODA5YSksCi0gICAgIEMoNjIyNmEzMmUyNTA5OTg0OCksIEMoZWE4OTU2NjFlY2Y1
MzAwNCksIEMoNGQ3ZTAxNThkYjIyMjhiOSksCi0gICAgIEMoZTVhN2Q4MjkyMmY2OTg0MiksIEMo
NjIyNmEzMmUyNTA5OTg0OCksIEMoZWE4OTU2NjFlY2Y1MzAwNCksCi0gICAgIEMoNGQ3ZTAxNThk
YjIyMjhiOSksIEMoZTVhN2Q4MjkyMmY2OTg0MiksIEMoMmNlYTc3MTNiNjk4NDBjYSksCi0gICAg
IEMoMThkZTdiOWFlOTM4Mzc1YiksIEMoZjEyN2NjYTA4ZjNjYzY2NSksIEMoYjFjMjJkNzI3NjY1
YWQyKSwgQyhmOTk2ZTA1ZCl9LAorICAgIHtDKGZiYmExYWZlMmUzMjgwZjEpLCBDKDc1NWE1ZjM5
MmYwN2ZjZSksIEMoOWU0NGE5YTE1NDAyODA5YSksIEMoZjk5NmUwNWQpfSwKICAgICB7QyhiZmEx
MDc4NWRkYzEwMTFiKSwgQyhiNmUxYzRkMmY2NzBmN2RlKSwgQyg1MTdkOTU2MDRlNGZjYzFmKSwK
LSAgICAgQyhjYTY1NTJhMGRmYjgyYzczKSwgQyhiMDI0Y2RmMDllMzRiYTA3KSwgQyg2NmNkOGM1
YTk1ZDczOTNiKSwKLSAgICAgQyhlMzkzOWFjZjc5MGQ0YTc0KSwgQyhjYTY1NTJhMGRmYjgyYzcz
KSwgQyhiMDI0Y2RmMDllMzRiYTA3KSwKLSAgICAgQyg2NmNkOGM1YTk1ZDczOTNiKSwgQyhlMzkz
OWFjZjc5MGQ0YTc0KSwgQyg5NzgyNzU0MWExZWYwNTFlKSwKLSAgICAgQyhhYzJmY2U0N2ViZTY1
MDBjKSwgQyhiM2YwNmQzYmRkZjNiZDZhKSwgQygxZDc0YWZiMjVlMWNlNWZlKSwKICAgICAgQyhj
NDMwNmFmNil9LAotICAgIHtDKDUzNGNjMzVmMGVlMWViNGUpLCBDKGI3MDM4MjBmMWYzYjNkY2Up
LCBDKDg4NGFhMTY0Y2YyMjM2MyksCi0gICAgIEMoZjE0ZWY3ZjQ3ZDhhNTdhMyksIEMoODBkMWY4
NmYyZTA2MWQ3YyksIEMoNDAxZDZjMmYxNTFiNWE2MiksCi0gICAgIEMoZTk4ODQ2MDIyNDEwODk0
NCksIEMoZjE0ZWY3ZjQ3ZDhhNTdhMyksIEMoODBkMWY4NmYyZTA2MWQ3YyksCi0gICAgIEMoNDAx
ZDZjMmYxNTFiNWE2MiksIEMoZTk4ODQ2MDIyNDEwODk0NCksIEMoNzgwNGQ0MTM1ZjY4Y2QxOSks
Ci0gICAgIEMoNTQ4N2I0YjM5ZTY5ZmU4ZSksIEMoOGNjNTk5OTAxNTM1OGEyNyksIEMoOGYzNzI5
YjYxYzJkNTYwMSksCi0gICAgIEMoNmRjYWQ0MzMpfSwKLSAgICB7Qyg3Y2E2ZTM5MzM5OTVkYWMp
LCBDKGZkMTE4Yzc3ZGFhODE4OCksIEMoM2FjZWI3YjVlN2RhNjU0NSksCi0gICAgIEMoYzgzODk3
OTk0NDU0ODBkYiksIEMoNTM4OWY1ZGY4YWFjZDUwZCksIEMoZDEzNjU4MWYyMmZhYjVmKSwKLSAg
ICAgQyhjMmYzMWY4NTk5MWRhNDE3KSwgQyhjODM4OTc5OTQ0NTQ4MGRiKSwgQyg1Mzg5ZjVkZjhh
YWNkNTBkKSwKLSAgICAgQyhkMTM2NTgxZjIyZmFiNWYpLCBDKGMyZjMxZjg1OTkxZGE0MTcpLCBD
KGFlZmJmOWZmODQwMzVhNDMpLAotICAgICBDKDhhY2NiYWY0NGFkYWRkN2MpLCBDKGU1N2YzNjU3
MzQ0YjY3ZjUpLCBDKDIxNDkwZTVlOGFiZGVjNTEpLAotICAgICBDKDNjMDczNzRkKX0sCisgICAg
e0MoNTM0Y2MzNWYwZWUxZWI0ZSksIEMoYjcwMzgyMGYxZjNiM2RjZSksIEMoODg0YWExNjRjZjIy
MzYzKSwgQyg2ZGNhZDQzMyl9LAorICAgIHtDKDdjYTZlMzkzMzk5NWRhYyksIEMoZmQxMThjNzdk
YWE4MTg4KSwgQygzYWNlYjdiNWU3ZGE2NTQ1KSwgQygzYzA3Mzc0ZCl9LAogICAgIHtDKGYwZDYw
NDRmNmVmZDc1OTgpLCBDKGUwNDRkNmJhNDM2OTg1NmUpLCBDKDkxOTY4ZTRmOGM4YTFhNGMpLAot
ICAgICBDKDcwYmQxOTY4OTk2YmZmYzIpLCBDKDRjNjEzZGU1ZDhhYjMyYWMpLCBDKGZlMWY0Zjk3
MjA2Zjc5ZDgpLAotICAgICBDKGFjMDQzNGYyYzRlMjEzYTkpLCBDKDcwYmQxOTY4OTk2YmZmYzIp
LCBDKDRjNjEzZGU1ZDhhYjMyYWMpLAotICAgICBDKGZlMWY0Zjk3MjA2Zjc5ZDgpLCBDKGFjMDQz
NGYyYzRlMjEzYTkpLCBDKDc0OTBlOWQ4MmNmZTIyY2EpLAotICAgICBDKDVmYmJmN2Y5ODc0NTQy
MzgpLCBDKGMzOWUwZGM4MzY4Y2U5NDkpLCBDKDIyMjAxZDM4OTQ2NzZjNzEpLAogICAgICBDKGYw
ZjQ2MDJjKX0sCiAgICAge0MoM2Q2OWU1MjA0OTg3OWQ2MSksIEMoNzY2MTA2MzZlYTlmNzRmZSks
IEMoZTliZjU2MDJmODkzMTBjMCksCi0gICAgIEMoOGVlYjE3N2E4NjA1M2MxMSksIEMoZTM5MDEy
MmMzNDVmMzRhMiksIEMoMWUzMGU0N2FmYmFhZjhkNiksCi0gICAgIEMoN2I4OTJmNjhlNWY5MTcz
MiksIEMoOGVlYjE3N2E4NjA1M2MxMSksIEMoZTM5MDEyMmMzNDVmMzRhMiksCi0gICAgIEMoMWUz
MGU0N2FmYmFhZjhkNiksIEMoN2I4OTJmNjhlNWY5MTczMiksIEMoYjg3OTIyNTI1ZmE0NDE1OCks
Ci0gICAgIEMoZjQ0MGExZWUxYTFhNzY2YiksIEMoZWU4ZWZhZDI3OWQwOGM1YyksIEMoNDIxZjkx
MGM1YjYwMjE2ZSksCiAgICAgIEMoM2UxZWEwNzEpfSwKLSAgICB7Qyg3OWRhMjQyYTE2YWNhZTMx
KSwgQygxODNjNWY0MzhlMjlkNDApLCBDKDZkMzUxNzEwYWU5MmYzZGUpLAotICAgICBDKDI3MjMz
YjI4YjViMTFlOWIpLCBDKGM3ZGZlODk4OGE5NDI3MDApLCBDKDU3MGVkMTFjNGFiYWQ5ODQpLAot
ICAgICBDKDRiNGMwNDYzMmY0ODMxMWEpLCBDKDI3MjMzYjI4YjViMTFlOWIpLCBDKGM3ZGZlODk4
OGE5NDI3MDApLAotICAgICBDKDU3MGVkMTFjNGFiYWQ5ODQpLCBDKDRiNGMwNDYzMmY0ODMxMWEp
LCBDKDEyZjMzMjM1NDQyY2JmOSksCi0gICAgIEMoYTM1MzE1Y2EwYjViOGNkYiksIEMoZDhhYmRl
NjJlYWQ1NTA2YiksIEMoZmMwZmNmODQ3OGFkNTI2NiksCi0gICAgIEMoNjc1ODBmMGMpfSwKKyAg
ICB7Qyg3OWRhMjQyYTE2YWNhZTMxKSwgQygxODNjNWY0MzhlMjlkNDApLCBDKDZkMzUxNzEwYWU5
MmYzZGUpLCBDKDY3NTgwZjBjKX0sCiAgICAge0MoNDYxYzgyNjU2YTc0ZmI1NyksIEMoZDg0YjQ5
MWIyNzVhYTBmNyksIEMoOGYyNjJjYjI5YTZlYjhiMiksCi0gICAgIEMoNDlmYTMwNzBiYzdiMDZk
MCksIEMoZjEyZWQ0NDZiZDBjMDUzOSksIEMoNmQ0M2FjNWQxZGQ0YjI0MCksCi0gICAgIEMoNzYw
OTUyNGZlOTBiZWM5MyksIEMoNDlmYTMwNzBiYzdiMDZkMCksIEMoZjEyZWQ0NDZiZDBjMDUzOSks
Ci0gICAgIEMoNmQ0M2FjNWQxZGQ0YjI0MCksIEMoNzYwOTUyNGZlOTBiZWM5MyksIEMoMzkxYzJi
MmUwNzZlYzI0MSksCi0gICAgIEMoZjVlNjJkZWRhNzgzOWY3YiksIEMoM2M3YjMxODZhMTBkODcw
ZiksIEMoNzdlZjRmMmNiYTRmMTAwNSksCiAgICAgIEMoNGUxMDk0NTQpfSwKLSAgICB7Qyg1M2Mx
YTY2ZDBiMTMwMDMpLCBDKDczMWYwNjBlNmZlNzk3ZmMpLCBDKGRhYTU2ODExNzkxMzcxZTMpLAot
ICAgICBDKDU3NDY2MDQ2Y2Y2ODk2ZWQpLCBDKDhhYzM3ZTBlOGIyNWIwYzYpLCBDKDNlNjA3NGI1
MmFkM2NmMTgpLAotICAgICBDKGFhNDkxY2U3YjQ1ZGIyOTcpLCBDKDU3NDY2MDQ2Y2Y2ODk2ZWQp
LCBDKDhhYzM3ZTBlOGIyNWIwYzYpLAotICAgICBDKDNlNjA3NGI1MmFkM2NmMTgpLCBDKGFhNDkx
Y2U3YjQ1ZGIyOTcpLCBDKGY3YTkyMjdjNWU1ZTIyYzMpLAotICAgICBDKDNkOTJlMDg0MWUyOWNl
MjgpLCBDKDJkMzBkYTViMjg1OWU1OWQpLCBDKGZmMzdmYTFjOWNiZmFmYzIpLAotICAgICBDKDg4
YTQ3NGE3KX0sCi0gICAge0MoZDNhMmVmZWMwZjA0N2U5KSwgQygxY2FiY2U1ODg1M2U1OGVhKSwg
Qyg3YTE3YjJlYWUzMjU2YmU0KSwKLSAgICAgQyhjMmRjYzk3NThjOTEwMTcxKSwgQyhjYjVjZGRh
ZWZmNGRkYjQwKSwgQyg1ZDdjYzU4NjliYWVmZWYxKSwKLSAgICAgQyg5NjQ0YzU4NTNhZjljZmVi
KSwgQyhjMmRjYzk3NThjOTEwMTcxKSwgQyhjYjVjZGRhZWZmNGRkYjQwKSwKLSAgICAgQyg1ZDdj
YzU4NjliYWVmZWYxKSwgQyg5NjQ0YzU4NTNhZjljZmViKSwgQygyNTVjOTY4MTg0Njk0ZWUxKSwK
LSAgICAgQyg0ZTRkNzI2ZWRhMzYwOTI3KSwgQyg3ZDI3ZGQ1YjZkMTAwMzc3KSwgQyg5YTMwMGUy
MDIwZGRlYTJjKSwgQyg1YjViZWRkKX0sCisgICAge0MoNTNjMWE2NmQwYjEzMDAzKSwgQyg3MzFm
MDYwZTZmZTc5N2ZjKSwgQyhkYWE1NjgxMTc5MTM3MWUzKSwgQyg4OGE0NzRhNyl9LAorICAgIHtD
KGQzYTJlZmVjMGYwNDdlOSksIEMoMWNhYmNlNTg4NTNlNThlYSksIEMoN2ExN2IyZWFlMzI1NmJl
NCksIEMoNWI1YmVkZCl9LAogICAgIHtDKDQzYzY0ZDc0ODRmN2Y5YjIpLCBDKDVkYTAwMmI2NGFh
ZmFlYjcpLCBDKGI1NzZjMWU0NTgwMGE3MTYpLAotICAgICBDKDNlZTg0ZDNkNWI0Y2EwMGIpLCBD
KDVjYmM2ZDcwMTg5NGMzZjkpLCBDKGQ5ZTk0NmY1YWUxY2E5NSksCi0gICAgIEMoMjRjYTA2ZTY3
ZjBiMTgzMyksIEMoM2VlODRkM2Q1YjRjYTAwYiksIEMoNWNiYzZkNzAxODk0YzNmOSksCi0gICAg
IEMoZDllOTQ2ZjVhZTFjYTk1KSwgQygyNGNhMDZlNjdmMGIxODMzKSwgQygzNDEzZDQ2YjQxNTI2
NTBlKSwKLSAgICAgQyhjYmRmZGJjMmFiNTE2ZjljKSwgQygyYWFkOGFjYjczOWUwYzZjKSwgQygy
YmZjOTUwZDlmOWZhOTc3KSwKICAgICAgQygxYWFkZGZhNyl9LAogICAgIHtDKGE3ZGVjNmFkODFj
ZjdmYTEpLCBDKDE4MGMxYWI3MDg2ODMwNjMpLCBDKDk1ZTBmZDcwMDhkNjdjZmYpLAotICAgICBD
KDZiMTFjNTA3MzY4NzIwOCksIEMoN2UwYTU3ZGUwZDQ1M2YzKSwgQyhlNDhjMjY3ZDRmNjQ2ODY3
KSwKLSAgICAgQygyMTY4ZTkxMzYzNzVmOWNiKSwgQyg2YjExYzUwNzM2ODcyMDgpLCBDKDdlMGE1
N2RlMGQ0NTNmMyksCi0gICAgIEMoZTQ4YzI2N2Q0ZjY0Njg2NyksIEMoMjE2OGU5MTM2Mzc1Zjlj
YiksIEMoNjRkYTE5NGFlZWVhN2ZkZiksCi0gICAgIEMoYTNiOWYwMWZhNTg4NTY3OCksIEMoYzMx
NmY4ZWUyZWIyYmQxNyksIEMoYTdlNGQ4MGY4M2U0NDI3ZiksCiAgICAgIEMoNWJlMDdmZDgpfSwK
LSAgICB7Qyg1NDA4YTFkZjk5ZDRhZmYpLCBDKGI5NTY1ZTU4ODc0MGY2YmQpLCBDKGFiZjI0MTgx
M2IwODAwNmUpLAotICAgICBDKDdkYTllODFkODlmZGE3YWQpLCBDKDI3NDE1N2NhYmU3MTQ0MGQp
LCBDKDJjMjJkOWE0ODBiMzMxZjcpLAotICAgICBDKGU4MzVjOGFjNzQ2NDcyZDUpLCBDKDdkYTll
ODFkODlmZGE3YWQpLCBDKDI3NDE1N2NhYmU3MTQ0MGQpLAotICAgICBDKDJjMjJkOWE0ODBiMzMx
ZjcpLCBDKGU4MzVjOGFjNzQ2NDcyZDUpLCBDKDIwMzhjZTgxN2EyMDFhZTQpLAotICAgICBDKDQ2
ZjMyODlkZmUxYzVlNDApLCBDKDQzNTU3OGE0MmQ0YjdjNTYpLCBDKGY5NmQ5ZjQwOWZjZjU2MSks
IEMoY2JjYTg2MDYpfSwKKyAgICB7Qyg1NDA4YTFkZjk5ZDRhZmYpLCBDKGI5NTY1ZTU4ODc0MGY2
YmQpLCBDKGFiZjI0MTgxM2IwODAwNmUpLCBDKGNiY2E4NjA2KX0sCiAgICAge0MoYThiMjdhNmJj
YWVlZWQ0YiksIEMoYWVjMWVlZGVkNmE4N2UzOSksIEMoOWRhZjI0NmQ2ZmVkODMyNiksCi0gICAg
IEMoZDQ1YTkzOGI3OWY1NGU4ZiksIEMoMzY2YjIxOWQ2ZDEzM2U0OCksIEMoNWIxNGJlM2MyNWM0
OTQwNSksCi0gICAgIEMoZmRkNzkxZDQ4ODExYTU3MiksIEMoZDQ1YTkzOGI3OWY1NGU4ZiksIEMo
MzY2YjIxOWQ2ZDEzM2U0OCksCi0gICAgIEMoNWIxNGJlM2MyNWM0OTQwNSksIEMoZmRkNzkxZDQ4
ODExYTU3MiksIEMoM2RlNjdiOGQ5ZTk1ZDMzNSksCi0gICAgIEMoOTAzYzAxMzA3Y2ZiZWVkNSks
IEMoYWY3ZDY1ZjMyMjc0ZjFkMSksIEMoNGRiYTE0MWI1ZmMwM2M0MiksCiAgICAgIEMoYmRlNjRk
MDEpfSwKICAgICB7Qyg5YTk1MmE4MjQ2ZmRjMjY5KSwgQyhkMGRjZmNhYzc0ZWYyNzhjKSwgQygy
NTBmNzEzOTgzNmYwZjFmKSwKLSAgICAgQyhjODNkM2M1ZjRlNWYwMzIwKSwgQyg2OTRlN2FkZWIy
YmYzMmU1KSwgQyg3YWQwOTUzOGEzZGEyN2Y1KSwKLSAgICAgQygyYjVjMThmOTM0YWE1MzAzKSwg
QyhjODNkM2M1ZjRlNWYwMzIwKSwgQyg2OTRlN2FkZWIyYmYzMmU1KSwKLSAgICAgQyg3YWQwOTUz
OGEzZGEyN2Y1KSwgQygyYjVjMThmOTM0YWE1MzAzKSwgQyhjNGRhZDc3MDNkMzQzMjZlKSwKLSAg
ICAgQyg4MjU1NjllMmJjZGM2YTI1KSwgQyhiODNkMjY3NzA5Y2E5MDBkKSwgQyg0NGVkMDUxNTFm
NWQ3NGU2KSwKICAgICAgQyhlZTkwY2YzMyl9LAogICAgIHtDKGM5MzA4NDFkMWQ4ODY4NGYpLCBD
KDVlYjY2ZWIxOGI3Zjk2NzIpLCBDKGU0NTVkNDEzMDA4YTI1NDYpLAotICAgICBDKGJjMjcxYmMw
ZGYxNGQ2NDcpLCBDKGIwNzExMDBhOWZmMmVkYmIpLCBDKDJiMWE0YzFjYzMxYTExOWEpLAotICAg
ICBDKGI1ZDdjYWExYmQ5NDZjZWYpLCBDKGJjMjcxYmMwZGYxNGQ2NDcpLCBDKGIwNzExMDBhOWZm
MmVkYmIpLAotICAgICBDKDJiMWE0YzFjYzMxYTExOWEpLCBDKGI1ZDdjYWExYmQ5NDZjZWYpLCBD
KGUwMjYyM2FlMTBmNGFhZGQpLAotICAgICBDKGQ3OWY2MDAzODljZDA2ZmQpLCBDKDFlOGRhNzk2
NTMwM2U2MmIpLCBDKDg2ZjUwZTEwZWVhYjA5MjUpLAogICAgICBDKDQzMDVjM2NlKX0sCi0gICAg
e0MoOTRkYzY5NzFlM2NmMDcxYSksIEMoOTk0YzcwMDNiNzNiMmIzNCksIEMoZWExNmU4NTk3ODY5
NGU1KSwKLSAgICAgQygzMzZjMWI1OWExZmMxOWY2KSwgQyhjMTczYWNhZWNjNDcxMzA1KSwgQyhk
YjEyNjdkMjRmM2YzZjM2KSwKLSAgICAgQyhlOWE1ZWU5ODYyN2E2ZTc4KSwgQygzMzZjMWI1OWEx
ZmMxOWY2KSwgQyhjMTczYWNhZWNjNDcxMzA1KSwKLSAgICAgQyhkYjEyNjdkMjRmM2YzZjM2KSwg
QyhlOWE1ZWU5ODYyN2E2ZTc4KSwgQyg3MThmMzM0MjA0MzA1YWU1KSwKLSAgICAgQyhlM2I1M2Mx
NDhmOThkMjJjKSwgQyhhMTg0MDEyZGY4NDg5MjYpLCBDKDZlOTYzODYxMjdkNTExODMpLCBDKDRi
M2ExZDc2KX0sCi0gICAge0MoN2ZjOTgwMDZlMjVjYWM5KSwgQyg3N2ZlZTA0ODRjZGE4NmE3KSwg
QygzNzZlYzNkNDQ3MDYwNDU2KSwKLSAgICAgQyg4NDA2NGE2ZGNmOTE2MzQwKSwgQyhmYmY1NWEy
Njc5MGUwZWJiKSwgQygyZTdmODQxNTFjMzFhNWMyKSwKLSAgICAgQyg5ZjdmNmQ3NmI5NTBmOWJm
KSwgQyg4NDA2NGE2ZGNmOTE2MzQwKSwgQyhmYmY1NWEyNjc5MGUwZWJiKSwKLSAgICAgQygyZTdm
ODQxNTFjMzFhNWMyKSwgQyg5ZjdmNmQ3NmI5NTBmOWJmKSwgQygxMjVlMDk0ZmJlZTJiMTQ2KSwK
LSAgICAgQyg1NzA2YWE3MmIyZWVmN2MyKSwgQygxYzRhMmRhYTkwNWVlNjZlKSwgQyg4M2Q0ODAy
OWI1NDUxNjk0KSwKLSAgICAgQyhhOGJiNmQ4MCl9LAotICAgIHtDKGJkNzgxYzQ0NTQxMDNmNiks
IEMoNjEyMTk3MzIyZjQ5YzkzMSksIEMoYjljZjE3ZmQ3ZTU0NjJkNSksCi0gICAgIEMoZTM4ZTUy
NmNkMzMyNDM2NCksIEMoODVmMmI2M2E1YjVlODQwYSksIEMoNDg1ZDdjZWY1YWFhZGQ4NyksCi0g
ICAgIEMoZDJiODM3YTQ2MmY2ZGI2ZCksIEMoZTM4ZTUyNmNkMzMyNDM2NCksIEMoODVmMmI2M2E1
YjVlODQwYSksCi0gICAgIEMoNDg1ZDdjZWY1YWFhZGQ4NyksIEMoZDJiODM3YTQ2MmY2ZGI2ZCks
IEMoM2U0MWNlZjAzMTUyMGQ5YSksCi0gICAgIEMoODJkZjczOTAyZDdmNjdlKSwgQygzYmE2ZmQ1
NGMxNTI1N2NiKSwgQygyMmY5MWYwNzliZTQyZDQwKSwgQygxZjlmYTYwNyl9LAorICAgIHtDKDk0
ZGM2OTcxZTNjZjA3MWEpLCBDKDk5NGM3MDAzYjczYjJiMzQpLCBDKGVhMTZlODU5Nzg2OTRlNSks
IEMoNGIzYTFkNzYpfSwKKyAgICB7Qyg3ZmM5ODAwNmUyNWNhYzkpLCBDKDc3ZmVlMDQ4NGNkYTg2
YTcpLCBDKDM3NmVjM2Q0NDcwNjA0NTYpLCBDKGE4YmI2ZDgwKX0sCisgICAge0MoYmQ3ODFjNDQ1
NDEwM2Y2KSwgQyg2MTIxOTczMjJmNDljOTMxKSwgQyhiOWNmMTdmZDdlNTQ2MmQ1KSwgQygxZjlm
YTYwNyl9LAogICAgIHtDKGRhNjBlNmIxNDQ3OWY5ZGYpLCBDKDNiZGNjZjY5ZWNlMTY3OTIpLCBD
KDE4ZWJmNDVjNGZlY2ZkYzkpLAotICAgICBDKDE2ODE4ZWU5ZDM4YzY2NjQpLCBDKDU1MTlmYTlh
MWUzNWEzMjkpLCBDKGNiZDAwMDFlNGIwOGVkOCksCi0gICAgIEMoNDFhOTY1ZTM3YTBjNzMxYiks
IEMoMTY4MThlZTlkMzhjNjY2NCksIEMoNTUxOWZhOWExZTM1YTMyOSksCi0gICAgIEMoY2JkMDAw
MWU0YjA4ZWQ4KSwgQyg0MWE5NjVlMzdhMGM3MzFiKSwgQyg2NmU3YjVkY2NhMWNhMjhmKSwKLSAg
ICAgQyg5NjNiMmQ5OTM2MTQzNDdkKSwgQyg5YjZmYzZmNDFkNDExMTA2KSwgQyhhYWFlY2FjY2Y3
ODQ4YzBjKSwKICAgICAgQyg4ZDBlNGVkMil9LAotICAgIHtDKDRjYTU2YTM0OGI2YzRkMyksIEMo
NjA2MTg1MzdjMzg3MjUxNCksIEMoMmZiYjlmMGU2NTg3MWIwOSksCi0gICAgIEMoMzAyNzgwMTY4
MzBkZGQ0MyksIEMoZjA0NjY0NmQ5MDEyZTA3NCksIEMoYzYyYTU4MDRmNmU3YzlkYSksCi0gICAg
IEMoOThkNTFmNTgzMGUyYmMxZSksIEMoMzAyNzgwMTY4MzBkZGQ0MyksIEMoZjA0NjY0NmQ5MDEy
ZTA3NCksCi0gICAgIEMoYzYyYTU4MDRmNmU3YzlkYSksIEMoOThkNTFmNTgzMGUyYmMxZSksIEMo
N2IyY2JlNWQzN2UzZjI5ZSksCi0gICAgIEMoN2I4YzNlZDUwYmRhNGFhMCksIEMoM2VhNjBjYzI0
NjM5ZTAzOCksIEMoZjc3MDZkZTlmYjBiNTgwMSksCi0gICAgIEMoMWJmMzEzNDcpfSwKKyAgICB7
Qyg0Y2E1NmEzNDhiNmM0ZDMpLCBDKDYwNjE4NTM3YzM4NzI1MTQpLCBDKDJmYmI5ZjBlNjU4NzFi
MDkpLCBDKDFiZjMxMzQ3KX0sCiAgICAge0MoZWJkMjJkNGI3MDk0NjQwMSksIEMoNjg2MzYwMmJm
NzEzOTAxNyksIEMoYzBiMWFjNGUxMWIwMDY2NiksCi0gICAgIEMoN2QyNzgyYjgyYmQ0OTRiNiks
IEMoOTcxNTliYTFjMjZiMzA0YiksIEMoNDJiM2IwZmQ0MzFiMmFjMiksCi0gICAgIEMoZmFhODFm
ODI2OTFjODMwYyksIEMoN2QyNzgyYjgyYmQ0OTRiNiksIEMoOTcxNTliYTFjMjZiMzA0YiksCi0g
ICAgIEMoNDJiM2IwZmQ0MzFiMmFjMiksIEMoZmFhODFmODI2OTFjODMwYyksIEMoN2NjNjQ0OTIz
NGM3ZTE4NSksCi0gICAgIEMoYWVhYTZmYTY0M2NhODZhNSksIEMoMTQxMmRiMWMwZjJlMDEzMyks
IEMoNGRmMmZlM2U0MDcyOTM0ZiksCiAgICAgIEMoMWFlM2ZjNWIpfSwKLSAgICB7QygzY2M0Njkz
ZDZjYmNiMGMpLCBDKDUwMTY4OWVhMWM3MGZmYSksIEMoMTBhNDM1M2U5Yzg5ZTM2NCksCi0gICAg
IEMoNThjOGFiYTc0NzVlMmQ5NSksIEMoM2UyZjI5MTY5OGM5NDI3YSksIEMoZTg3MTBkMTljOWRl
OWU0MSksCi0gICAgIEMoNjVkZGEyMmViMDRjZjk1MyksIEMoNThjOGFiYTc0NzVlMmQ5NSksIEMo
M2UyZjI5MTY5OGM5NDI3YSksCi0gICAgIEMoZTg3MTBkMTljOWRlOWU0MSksIEMoNjVkZGEyMmVi
MDRjZjk1MyksIEMoZDc3MjljNDhjMjUwY2ZmYSksCi0gICAgIEMoZWY3NjE2MmIyZGRmYmE0Yiks
IEMoNTIzNzFlMTdmNGQ1MWY2ZCksIEMoZGRkMDAyMTEyZmYwYzgzMyksCi0gICAgIEMoNDU5YzM5
MzApfSwKKyAgICB7QygzY2M0NjkzZDZjYmNiMGMpLCBDKDUwMTY4OWVhMWM3MGZmYSksIEMoMTBh
NDM1M2U5Yzg5ZTM2NCksIEMoNDU5YzM5MzApfSwKICAgICB7QygzODkwOGU0M2Y3YmE1ZWYwKSwg
QygxYWIwMzVkNGU3NzgxZTc2KSwgQyg0MWQxMzNlOGMwYTY4ZmY3KSwKLSAgICAgQyhkMTA5MDg5
M2FmYWFiOGJjKSwgQyg5NmM0ZmU2OTIyNzcyODA3KSwgQyg0NTIyNDI2YzJiNDIwNWViKSwKLSAg
ICAgQyhlZmFkOTlhMTI2MmU3ZTBkKSwgQyhkMTA5MDg5M2FmYWFiOGJjKSwgQyg5NmM0ZmU2OTIy
NzcyODA3KSwKLSAgICAgQyg0NTIyNDI2YzJiNDIwNWViKSwgQyhlZmFkOTlhMTI2MmU3ZTBkKSwg
QyhjNzY5NjAyOWFiZGI0NjVlKSwKLSAgICAgQyg0ZTE4ZWFmMDNkNTE3NjUxKSwgQyhkMDA2YmNl
ZDU0Yzg2YWM4KSwgQyg0MzMwMzI2ZDEwMjE4NjBjKSwKICAgICAgQyhlMDBjNDE4NCl9LAotICAg
IHtDKDM0OTgzY2NjNmFhNDAyMDUpLCBDKDIxODAyY2FkMzRlNzJiYzQpLCBDKDE5NDNlOGZiM2Mx
N2JiOCksCi0gICAgIEMoZmM5NDcxNjdmNjljMGRhNSksIEMoYWU3OWNmZGI5MWI2ZjZjMSksIEMo
N2IyNTFkMDRjMjZjYmRhMyksCi0gICAgIEMoMTI4YTMzYTc5MDYwZDI1ZSksIEMoZmM5NDcxNjdm
NjljMGRhNSksIEMoYWU3OWNmZGI5MWI2ZjZjMSksCi0gICAgIEMoN2IyNTFkMDRjMjZjYmRhMyks
IEMoMTI4YTMzYTc5MDYwZDI1ZSksIEMoMWVjYTg0MmRiZmUwMThkZCksCi0gICAgIEMoNTBhNGNk
MmVlMGJhOWM2MyksIEMoYzJmNWM5N2Q4Mzk5NjgyZiksIEMoM2Y5MjlmYzdjYmU4ZWNiYiksCi0g
ICAgIEMoZmZjN2E3ODEpfSwKKyAgICB7QygzNDk4M2NjYzZhYTQwMjA1KSwgQygyMTgwMmNhZDM0
ZTcyYmM0KSwgQygxOTQzZThmYjNjMTdiYjgpLCBDKGZmYzdhNzgxKX0sCiAgICAge0MoODYyMTVj
NDVkY2FjOTkwNSksIEMoZWE1NDZhZmU4NTFjYWU0YiksIEMoZDg1YjY0NTdlNDg5ZTM3NCksCi0g
ICAgIEMoYjc2MDljOGU3MDM4NmQ2NiksIEMoMzZlNmNjYzI3OGQxNjM2ZCksIEMoMmY4NzMzMDdj
MDhlNmExYyksCi0gICAgIEMoMTBmMjUyYTc1ODUwNTI4OSksIEMoYjc2MDljOGU3MDM4NmQ2Niks
IEMoMzZlNmNjYzI3OGQxNjM2ZCksCi0gICAgIEMoMmY4NzMzMDdjMDhlNmExYyksIEMoMTBmMjUy
YTc1ODUwNTI4OSksIEMoYzg5Nzc2NDZlODFhYjRiNiksCi0gICAgIEMoODAxN2I3NDVjZDgwMjEz
YiksIEMoOTYwNjg3ZGIzNTliZWEwKSwgQyhlZjRhNDcwNjYwNzk5NDg4KSwgQyg2YTEyNTQ4MCl9
LAorICAgICBDKDZhMTI1NDgwKX0sCiAgICAge0MoNDIwZmMyNTVjMzhkYjE3NSksIEMoZDUwM2Nk
MGYzYzEyMDhkMSksIEMoZDQ2ODRlNzRjODI1YTBiYyksCi0gICAgIEMoNGMxMDUzNzQ0MzE1MmYz
ZCksIEMoNzIwNDUxZDNjODk1ZTI1ZCksIEMoYWZmNjBjNGQxMWY1MTNmZCksCi0gICAgIEMoODgx
ZThkNmQyZDVmYjk1MyksIEMoNGMxMDUzNzQ0MzE1MmYzZCksIEMoNzIwNDUxZDNjODk1ZTI1ZCks
Ci0gICAgIEMoYWZmNjBjNGQxMWY1MTNmZCksIEMoODgxZThkNmQyZDVmYjk1MyksIEMoOWRlYzAz
NGEwNDNmMWY1NSksCi0gICAgIEMoZTI3YTBjMjJlN2JmYjM5ZCksIEMoMjIyMGI5NTkxMjgzMjQp
LCBDKDUzMjQwMjcyMTUyZGJkOGIpLCBDKDg4YTE1MTJiKX0sCisgICAgIEMoODhhMTUxMmIpfSwK
ICAgICB7QygxZDdhMzFmNWJjOGZlMmY5KSwgQyg0NzYzOTkxMDkyZGNmODM2KSwgQyhlZDY5NWY1
NWI5NzQxNmY0KSwKLSAgICAgQyhmMjY1ZWRiMGMxYzQxMWQ3KSwgQygzMGUxZTllYzUyNjJiN2U2
KSwgQyhjMmMzYmEwNjFjZTc5NTdhKSwKLSAgICAgQyhkOTc1ZjkzYjg5YTE2NDA5KSwgQyhmMjY1
ZWRiMGMxYzQxMWQ3KSwgQygzMGUxZTllYzUyNjJiN2U2KSwKLSAgICAgQyhjMmMzYmEwNjFjZTc5
NTdhKSwgQyhkOTc1ZjkzYjg5YTE2NDA5KSwgQyhlOWQ3MDMxMjNmNDM0NTBhKSwKLSAgICAgQyg0
MTM4M2ZlZGZlZDY3YzgyKSwgQyg2ZTlmNDNlY2JiYmQ2MDA0KSwgQyhjN2NjZDIzYTI0ZTc3Yjgp
LCBDKDU0OWJiYmU1KX0sCisgICAgIEMoNTQ5YmJiZTUpfSwKICAgICB7Qyg5NDEyOWE4NGMzNzZh
MjZlKSwgQyhjMjQ1ZTg1OWRjMjMxOTMzKSwgQygxYjhmNzRmZWNmOTE3NDUzKSwKLSAgICAgQyhl
OTM2OWQyZTkwMDdlNzRiKSwgQyhiMTM3NTkxNWQxMTM2MDUyKSwgQyg5MjZjMjAyMWZlMWQyMzUx
KSwKLSAgICAgQygxZDk0M2FkZGFhYTJlN2U2KSwgQyhlOTM2OWQyZTkwMDdlNzRiKSwgQyhiMTM3
NTkxNWQxMTM2MDUyKSwKLSAgICAgQyg5MjZjMjAyMWZlMWQyMzUxKSwgQygxZDk0M2FkZGFhYTJl
N2U2KSwgQyhmNWY1MTU4NjljMjQ2NzM4KSwKLSAgICAgQyg3ZTMwOWNkMGUxYzBmMmEwKSwgQygx
NTNjM2MzNmNmNTIzZTNiKSwgQyg0OTMxYzY2ODcyZWE2NzU4KSwKICAgICAgQyhjMTMzZDM4Yyl9
LAotICAgIHtDKDFkM2E5ODA5ZGFiMDVjOGQpLCBDKGFkZGRlYjRmNzFjOTNlOCksIEMoZWYzNDJl
YjM2NjMxZWRiKSwKLSAgICAgQygzMDFkN2E2MWM0YjNkYmNhKSwgQyg4NjEzMzZjM2YwNTUyZDYx
KSwgQygxMmM2ZGI5NDc0NzEzMDBmKSwKLSAgICAgQyhhNjc5ZWYwZWQ3NjFkZWI5KSwgQygzMDFk
N2E2MWM0YjNkYmNhKSwgQyg4NjEzMzZjM2YwNTUyZDYxKSwKLSAgICAgQygxMmM2ZGI5NDc0NzEz
MDBmKSwgQyhhNjc5ZWYwZWQ3NjFkZWI5KSwgQyg1ZjcxM2I3MjBlZmNkMTQ3KSwKLSAgICAgQygz
N2FjMzMwYTMzM2FhNmIpLCBDKDMzMDlkYzllYzE2MTZlZWYpLCBDKDUyMzAxZDdhOTA4MDI2YjUp
LCBDKGZjYWNlMzQ4KX0sCisgICAge0MoMWQzYTk4MDlkYWIwNWM4ZCksIEMoYWRkZGViNGY3MWM5
M2U4KSwgQyhlZjM0MmViMzY2MzFlZGIpLCBDKGZjYWNlMzQ4KX0sCiAgICAge0MoOTBmYTNjY2Jk
NjA4NDhkYSksIEMoZGZhNmUwNTk1YjU2OWUxMSksIEMoZTU4NWQwNjdhMWY1MTM1ZCksCi0gICAg
IEMoNmNlZjg2NmVjMjk1YWJlYSksIEMoYzQ4NmMwZDkyMTRiZWIyZCksIEMoZDZlNDkwOTQ0ZDVm
ZTEwMCksCi0gICAgIEMoNTlkZjMxNzVkNzJjOWYzOCksIEMoNmNlZjg2NmVjMjk1YWJlYSksIEMo
YzQ4NmMwZDkyMTRiZWIyZCksCi0gICAgIEMoZDZlNDkwOTQ0ZDVmZTEwMCksIEMoNTlkZjMxNzVk
NzJjOWYzOCksIEMoM2YyM2FlYjRjMDRkMTQ0MyksCi0gICAgIEMoOWJmMDUxNWNkOGQyNDc3MCks
IEMoOTU4NTU0ZjYwY2NhYWRlMiksIEMoNTE4Mjg2M2M5MDEzMmZlOCksCiAgICAgIEMoZWQ3YjZm
OWEpfSwKICAgICB7QygyZGJiNGZjNzFiNTU0NTE0KSwgQyg5NjUwZTA0Yjg2YmUwZjgyKSwgQyg2
MGYyMzA0ZmJhOTI3NGQzKSwKLSAgICAgQyhmY2ZiOTQ0M2U5OTdjYWIpLCBDKGYxMzMxMGQ5NmRl
YzI3NzIpLCBDKDcwOWNhZDIwNDUyNTFhZjIpLAotICAgICBDKGFmZDBkMzBjYzYzNzZkYWQpLCBD
KGZjZmI5NDQzZTk5N2NhYiksIEMoZjEzMzEwZDk2ZGVjMjc3MiksCi0gICAgIEMoNzA5Y2FkMjA0
NTI1MWFmMiksIEMoYWZkMGQzMGNjNjM3NmRhZCksIEMoNTlkNGJlZDMwZDU1MGQwZCksCi0gICAg
IEMoNTgwMDZkNGUyMmQ4YWFkMSksIEMoZWVlMTJkMjM2MmQxZjEzYiksIEMoMzVjZjFkN2ZhYWYx
ZDIyOCksCiAgICAgIEMoNmQ5MDdkZGEpfSwKICAgICB7QyhiOThiZjQyNzRkMTgzNzRhKSwgQygx
YjY2OWZkNGM3ZjlhMTlhKSwgQyhiMWY1OTcyYjg4YmEyYjdhKSwKLSAgICAgQyg3MzExOWM5OWU2
ZDUwOGJlKSwgQyg1ZDQwMzZhMTg3NzM1Mzg1KSwgQyg4ZmE2NmUxOTJmZDgzODMxKSwKLSAgICAg
QygyYWJmNjRiNmI1OTJlZDU3KSwgQyg3MzExOWM5OWU2ZDUwOGJlKSwgQyg1ZDQwMzZhMTg3NzM1
Mzg1KSwKLSAgICAgQyg4ZmE2NmUxOTJmZDgzODMxKSwgQygyYWJmNjRiNmI1OTJlZDU3KSwgQyhk
NDUwMWY5NWRkODRiMDhjKSwKLSAgICAgQyhiZjE1NTI0MzljOGJlYTAyKSwgQyg0ZjU2ZmU3NTNi
YTdlMGJhKSwgQyg0Y2E4ZDM1Y2MwNThjZmNkKSwKICAgICAgQyg3YTRkNDhkNSl9LAogICAgIHtD
KGQ2NzgxZDBiNWUxOGViNjgpLCBDKGI5OTI5MTNjYWUwOWI1MzMpLCBDKDU4ZjYwMjFjYWFlZTNh
NDApLAotICAgICBDKGFhZmNiNzc0OTdiNWEyMGIpLCBDKDQxMTgxOWU1ZTc5Yjc3YTMpLCBDKGJk
Nzc5NTc5YzUxYzc3Y2UpLAotICAgICBDKDU4ZDExZjVkY2Y1ZDA3NWQpLCBDKGFhZmNiNzc0OTdi
NWEyMGIpLCBDKDQxMTgxOWU1ZTc5Yjc3YTMpLAotICAgICBDKGJkNzc5NTc5YzUxYzc3Y2UpLCBD
KDU4ZDExZjVkY2Y1ZDA3NWQpLCBDKDllYWU3NmNkZTFjYjQyMzMpLAotICAgICBDKDMyZmUyNWE5
YmY2NTc5NzApLCBDKDFjMGM4MDc5NDhlZGIwNmEpLCBDKGI4ZjI5YTNkZmFlZTI1NGQpLAogICAg
ICBDKGU2ODZmM2RiKX0sCi0gICAge0MoMjI2NjUxY2YxOGY0ODg0YyksIEMoNTk1MDUyYTg3NGYw
ZjUxYyksIEMoYzliNzUxNjJiMjNiYWI0MiksCi0gICAgIEMoM2Y0NGY4NzNiZTQ4MTJlYyksIEMo
NDI3NjYyYzFkYmZhYTdiMiksIEMoYTIwN2ZmOTYzOGZiNjU1OCksCi0gICAgIEMoYTczOGQ5MTll
NDVmNTUwZiksIEMoM2Y0NGY4NzNiZTQ4MTJlYyksIEMoNDI3NjYyYzFkYmZhYTdiMiksCi0gICAg
IEMoYTIwN2ZmOTYzOGZiNjU1OCksIEMoYTczOGQ5MTllNDVmNTUwZiksIEMoY2IxODZlYTA1NzE3
ZTdkNiksCi0gICAgIEMoMWNhN2Q2OGE1ODcxZmRjMSksIEMoNWQ0YzExOWVhOGVmMzc1MCksIEMo
NzJiNmExMGZhMmZmOTQwNiksIEMoY2NlN2M1NSl9LAotICAgIHtDKGE3MzRmYjA0N2QzMTYyZDYp
LCBDKGU1MjMxNzBkMjQwYmEzYTUpLCBDKDEyNWE2OTcyODA5NzMwZTgpLAotICAgICBDKGQzOTZh
Mjk3Nzk5YzI0YTEpLCBDKDhmZWU5OTJlMzA2OWJhZDUpLCBDKDJlM2EwMWIwNjk3Y2NmNTcpLAot
ICAgICBDKGVlOWM3MzkwYmQ5MDFjZmEpLCBDKGQzOTZhMjk3Nzk5YzI0YTEpLCBDKDhmZWU5OTJl
MzA2OWJhZDUpLAotICAgICBDKDJlM2EwMWIwNjk3Y2NmNTcpLCBDKGVlOWM3MzkwYmQ5MDFjZmEp
LCBDKDU2ZjJkOWRhMGFmMjhhZjIpLAotICAgICBDKDNmZGQzN2IyZmU4NDM3Y2IpLCBDKDNkMTNl
ZWViNjBkNmFlYzApLCBDKDI0MzJhZTYyZTgwMGE1Y2UpLCBDKGY1OGI5NmIpfSwKKyAgICB7Qygy
MjY2NTFjZjE4ZjQ4ODRjKSwgQyg1OTUwNTJhODc0ZjBmNTFjKSwgQyhjOWI3NTE2MmIyM2JhYjQy
KSwgQyhjY2U3YzU1KX0sCisgICAge0MoYTczNGZiMDQ3ZDMxNjJkNiksIEMoZTUyMzE3MGQyNDBi
YTNhNSksIEMoMTI1YTY5NzI4MDk3MzBlOCksIEMoZjU4Yjk2Yil9LAogICAgIHtDKGM2ZGY2MzY0
YTI0Zjc1YTMpLCBDKGMyOTRlMmM4NGM0ZjVkZjgpLCBDKGE4OGRmNjVjNmE4OTMxM2IpLAotICAg
ICBDKDg5NWZlODQ0MzE4M2RhNzQpLCBDKGM3ZjJmNmY4OTVhNjczMzQpLCBDKGEwZDZiNmE1MDY2
OTFkMzEpLAotICAgICBDKDI0ZjUxNzEyYjQ1OWE5ZjApLCBDKDg5NWZlODQ0MzE4M2RhNzQpLCBD
KGM3ZjJmNmY4OTVhNjczMzQpLAotICAgICBDKGEwZDZiNmE1MDY2OTFkMzEpLCBDKDI0ZjUxNzEy
YjQ1OWE5ZjApLCBDKDE3M2E2OTk0ODFiOWUwODgpLAotICAgICBDKDFkZWU5Yjc3YmNiZjQ1ZDMp
LCBDKDMyYjk4YTY0NmE4NjY3ZDApLCBDKDNhZGNkNGVlMjhmNDJhMGUpLAogICAgICBDKDFiYmY2
ZjYwKX0sCi0gICAge0MoZDhkMTM2NGMxZmJjZDEwKSwgQygyZDdjYzdmNTQ4MzJkZWFhKSwgQyg0
ZTIyYzg3NmE3YzU3NjI1KSwKLSAgICAgQyhhM2Q1ZDExMzdkMzBjNGJkKSwgQygxZTdkNzA2YTQ5
YmRmYjllKSwgQyhjNjMyODJiMjBhZDg2ZGIyKSwKLSAgICAgQyhhZWM5N2ZhMDc5MTZiZmQ2KSwg
QyhhM2Q1ZDExMzdkMzBjNGJkKSwgQygxZTdkNzA2YTQ5YmRmYjllKSwKLSAgICAgQyhjNjMyODJi
MjBhZDg2ZGIyKSwgQyhhZWM5N2ZhMDc5MTZiZmQ2KSwgQyg3YzliYTNlNTJkNDRmNzNlKSwKLSAg
ICAgQyhhZjYyZmQyNDU4MTExODVkKSwgQyg4YTlkMmRhY2Q4NzM3NjUyKSwgQyhiZDJjY2UyNzdk
NWZiZWMwKSwKLSAgICAgQyhjZTVlMGNjMil9LAorICAgIHtDKGQ4ZDEzNjRjMWZiY2QxMCksIEMo
MmQ3Y2M3ZjU0ODMyZGVhYSksIEMoNGUyMmM4NzZhN2M1NzYyNSksIEMoY2U1ZTBjYzIpfSwKICAg
ICB7QyhhYWUwNmY5MTQ2ZGI4ODVmKSwgQygzNTk4NzM2NDQxZTI4MGQ5KSwgQyhmYmEzMzliMTE3
MDgzZTU1KSwKLSAgICAgQyhiMjJiZjA4ZDlmOGFlY2Y3KSwgQyhjMTgyNzMwZGUzMzdiOTIyKSwg
QygyYjlhZGM4N2EwNDUwYTQ2KSwKLSAgICAgQygxOTJjMjlhOWNmYzAwYWFkKSwgQyhiMjJiZjA4
ZDlmOGFlY2Y3KSwgQyhjMTgyNzMwZGUzMzdiOTIyKSwKLSAgICAgQygyYjlhZGM4N2EwNDUwYTQ2
KSwgQygxOTJjMjlhOWNmYzAwYWFkKSwgQyg5ZmQ3MzNmMWQ4NGE1OWQ5KSwKLSAgICAgQyhkODZi
ZDVjOTgzOWFjZTE1KSwgQyhhZjIwYjU3MzAzMTcyODc2KSwgQyg5ZjYzY2I3MTYxYjUzNjRjKSwK
ICAgICAgQyg1ODRjZmQ2Zil9LAogICAgIHtDKDg5NTVlZjA3NjMxZTNiY2MpLCBDKDdkNzA5NjVl
YTM5MjZmODMpLCBDKDM5YWVkNDEzNGY4YjJkYjYpLAotICAgICBDKDg4MmVmYzI1NjE3MTVhOWMp
LCBDKGVmODEzMmExOGE1NDAyMjEpLCBDKGIyMGEzYzg3YThjMjU3YzEpLAotICAgICBDKGY1NDFi
ODYyOGZhZDZjMjMpLCBDKDg4MmVmYzI1NjE3MTVhOWMpLCBDKGVmODEzMmExOGE1NDAyMjEpLAot
ICAgICBDKGIyMGEzYzg3YThjMjU3YzEpLCBDKGY1NDFiODYyOGZhZDZjMjMpLCBDKDk1NTJhZWQ1
N2E2ZTA0NjcpLAotICAgICBDKDRkOWZkZDU2ODY3NjExYTcpLCBDKGMzMzAyNzliZjIzYjllYWIp
LCBDKDQ0ZGJiYWVhMmZjYjhlYmEpLAogICAgICBDKDhmOWJiYzMzKX0sCiAgICAge0MoYWQ2MTFj
NjA5Y2ZiZTQxMiksIEMoZDNjMDBiMThiZjI1Mzg3NyksIEMoOTBiMjE3MmUxZjNkMGJmZCksCi0g
ICAgIEMoMzcxYTk4YjJjYjA4NDg4MyksIEMoMzNhMjg4NmVlOWYwMDY2MyksIEMoYmU5NTY4ODE4
ZWQ2ZTZiZCksCi0gICAgIEMoZjI0NGEwZmEyNjczNDY5YSksIEMoMzcxYTk4YjJjYjA4NDg4Myks
IEMoMzNhMjg4NmVlOWYwMDY2MyksCi0gICAgIEMoYmU5NTY4ODE4ZWQ2ZTZiZCksIEMoZjI0NGEw
ZmEyNjczNDY5YSksIEMoYjQ0NzA1MGJkM2U1NTllOSksCi0gICAgIEMoZDNiNjk1ZGFlN2ExMzM4
MyksIEMoZGVkMGJiNjViZTQ3MTE4OCksIEMoY2EzYzdhMmI3ODkyMmNhZSksCiAgICAgIEMoZDc2
NDBkOTUpfSwKLSAgICB7QyhkNTMzOWFkYzI5NWQ1ZDY5KSwgQyhiNjMzY2MxZGNiOGI1ODZhKSwg
QyhlZTg0MTg0Y2Y1YjFhZWFmKSwKLSAgICAgQyg4OWYzYWFiOTlhZmJkNjM2KSwgQyhmNDIwZTAw
NGY4MTQ4YjlhKSwgQyg2ODE4MDczZmFhNzk3YzdjKSwKLSAgICAgQyhkZDNiNGUyMWNiYmY0MmNh
KSwgQyg4OWYzYWFiOTlhZmJkNjM2KSwgQyhmNDIwZTAwNGY4MTQ4YjlhKSwKLSAgICAgQyg2ODE4
MDczZmFhNzk3YzdjKSwgQyhkZDNiNGUyMWNiYmY0MmNhKSwgQyg2YTJiN2RiMjYxMTY0ODQ0KSwK
LSAgICAgQyhjYmVhZDYzZDE4OTU4NTJhKSwgQyg5M2QzN2UxZWFlMDVlMmY5KSwgQyg1ZDA2ZGIy
NzAzZmJjM2FlKSwgQygzZDEyYTJiKX0sCisgICAge0MoZDUzMzlhZGMyOTVkNWQ2OSksIEMoYjYz
M2NjMWRjYjhiNTg2YSksIEMoZWU4NDE4NGNmNWIxYWVhZiksIEMoM2QxMmEyYil9LAogICAgIHtD
KDQwZDBhZWZmNTIxMzc1YTgpLCBDKDc3YmExYWQ3ZWNlYmQ1MDYpLCBDKDU0N2M2ZjFhN2Q5ZGY0
MjcpLAotICAgICBDKDIxYzJiZTA5ODMyN2Y0OWIpLCBDKDdlMDM1MDY1YWM3YmJlZjUpLCBDKDZk
NzM0OGU2MzAyM2ZiMzUpLAotICAgICBDKDlkNDI3ZGMxYjY3YzM4MzApLCBDKDIxYzJiZTA5ODMy
N2Y0OWIpLCBDKDdlMDM1MDY1YWM3YmJlZjUpLAotICAgICBDKDZkNzM0OGU2MzAyM2ZiMzUpLCBD
KDlkNDI3ZGMxYjY3YzM4MzApLCBDKDRlM2QwMThhNDM4NTgzNDEpLAotICAgICBDKGNmOTI0YmI0
NGQ2YjQzYzUpLCBDKDQ2MThiNmEyNmUzNDQ2YWUpLCBDKDU0ZDMwMTNmYWMzZWQ0NjkpLAogICAg
ICBDKGFhZWFmZWQwKX0sCiAgICAge0MoOGIyZDU0YWUxYTNkZjc2OSksIEMoMTFlN2FkYWVlMzIx
NjY3OSksIEMoMzQ4Mzc4MWVmYzU2M2UwMyksCi0gICAgIEMoOWQwOTdkZDMxNTJhYjEwNyksIEMo
NTFlMjFkMjQxMjZlODU2MyksIEMoY2JhNTZjYWM4ODRhMTM1NCksCi0gICAgIEMoMzlhYmIxYjU5
NWYwYTk3NyksIEMoOWQwOTdkZDMxNTJhYjEwNyksIEMoNTFlMjFkMjQxMjZlODU2MyksCi0gICAg
IEMoY2JhNTZjYWM4ODRhMTM1NCksIEMoMzlhYmIxYjU5NWYwYTk3NyksIEMoODFlNmRkMWMxMTA5
ODQ4ZiksCi0gICAgIEMoMTY0NGIyMDk4MjZkN2IxNSksIEMoNmFjNjdlNGU0YjQ4MTJmMCksIEMo
YjNhOWY1NjIyYzkzNWJmNyksCiAgICAgIEMoOTViOWI4MTQpfSwKICAgICB7Qyg5OWMxNzU4MTli
NGVhZTI4KSwgQyg5MzJlOGZmOWY3YTQwMDQzKSwgQyhlYzc4ZGNhYjA3Y2E5ZjdjKSwKLSAgICAg
QyhjMWE3OGI4MmJhODE1Yjc0KSwgQyg0NThjYmRmYzgyZWIzMjJhKSwgQygxN2Y0YTE5MjM3NmVk
OGQ3KSwKLSAgICAgQyg2ZjllOTI5NjhiYzhjY2VmKSwgQyhjMWE3OGI4MmJhODE1Yjc0KSwgQyg0
NThjYmRmYzgyZWIzMjJhKSwKLSAgICAgQygxN2Y0YTE5MjM3NmVkOGQ3KSwgQyg2ZjllOTI5Njhi
YzhjY2VmKSwgQyg5M2UwOThjMzMzYjM5OTA1KSwKLSAgICAgQyhkNTliMWNhY2U0NGI3ZmRjKSwg
QyhmN2E2NGVkNzhjNjRjN2M1KSwgQyg3YzZlY2E1ZGQ4N2VjMWNlKSwKICAgICAgQyg0NWZiZTY2
ZSl9LAogICAgIHtDKDJhNDE4MzM1Nzc5YjgyZmMpLCBDKGFmMDI5NTk4Nzg0OWE3NmIpLCBDKGMx
MmJjNWZmMDIxM2Y0NmUpLAotICAgICBDKDVhZWVhZDhkNmNiMjViYjkpLCBDKDczOTMxNWY3NzQz
ZWMzZmYpLCBDKDlhYjQ4ZDI3MTExZDJkY2MpLAotICAgICBDKDViODdiZDM1YTk3NTkyOWIpLCBD
KDVhZWVhZDhkNmNiMjViYjkpLCBDKDczOTMxNWY3NzQzZWMzZmYpLAotICAgICBDKDlhYjQ4ZDI3
MTExZDJkY2MpLCBDKDViODdiZDM1YTk3NTkyOWIpLCBDKGMzZGQ4ZDZkOTVhNDZiYjMpLAotICAg
ICBDKDdiZjkwOTMyMTVhNGY0ODMpLCBDKGNiNTU3ZDZlZDg0Mjg1YmQpLCBDKGRhZjU4NDIyZjI2
MWZkYjUpLAogICAgICBDKGI0YmFhN2E4KX0sCi0gICAge0MoM2IxZmM2YTNkMjc5ZTY3ZCksIEMo
NzBlYTFlNDljMjI2Mzk2KSwgQygyNTUwNWFkY2YxMDQ2OTdjKSwKLSAgICAgQyhiYTFmZmJhMjlm
MDM2N2FhKSwgQyhhMjBiZWMxZGQxNWE4YjZjKSwgQyhlOWJmNjFkMmRhYjBmNzc0KSwKLSAgICAg
QyhmNGYzNWJmNTg3MGEwNDljKSwgQyhiYTFmZmJhMjlmMDM2N2FhKSwgQyhhMjBiZWMxZGQxNWE4
YjZjKSwKLSAgICAgQyhlOWJmNjFkMmRhYjBmNzc0KSwgQyhmNGYzNWJmNTg3MGEwNDljKSwgQygy
Njc4N2VmYTViOTIzODUpLAotICAgICBDKDNkOTUzMzU5MGNlMzBiNTkpLCBDKGE0ZGEzZTQwNTMw
YTAxZDQpLCBDKDYzOTVkZWFlZmI3MDA2N2MpLAotICAgICBDKDgzZTk2MmZlKX0sCi0gICAge0Mo
ZDk3ZWFjZGYxMGYxYzNjOSksIEMoYjU0ZjQ2NTQwNDNhMzZlMCksIEMoYjEyOGY2ZWIwOWQxMjM0
KSwKLSAgICAgQyhkOGFkN2VjODRhOWM5YWEyKSwgQyhlMjU2Y2ZmZWQxMWY2OWU2KSwgQygyY2Y2
NWU0OTU4YWQ1YmRhKSwKLSAgICAgQyhjZmJmOWIwMzI0NTk4OWE3KSwgQyhkOGFkN2VjODRhOWM5
YWEyKSwgQyhlMjU2Y2ZmZWQxMWY2OWU2KSwKLSAgICAgQygyY2Y2NWU0OTU4YWQ1YmRhKSwgQyhj
ZmJmOWIwMzI0NTk4OWE3KSwgQyg5ZmE1MWU2Njg2Y2Y0NDQ0KSwKLSAgICAgQyg5NDI1YzExN2Ez
NDYwOWQ1KSwgQyhiMjVmN2UyYzZmMzBlOTYpLCBDKGVhNTQ3N2MzZjJiNWFmZDEpLCBDKGFhYzM1
MzFjKX0sCisgICAge0MoM2IxZmM2YTNkMjc5ZTY3ZCksIEMoNzBlYTFlNDljMjI2Mzk2KSwgQygy
NTUwNWFkY2YxMDQ2OTdjKSwgQyg4M2U5NjJmZSl9LAorICAgIHtDKGQ5N2VhY2RmMTBmMWMzYzkp
LCBDKGI1NGY0NjU0MDQzYTM2ZTApLCBDKGIxMjhmNmViMDlkMTIzNCksIEMoYWFjMzUzMWMpfSwK
ICAgICB7QygyOTNhNWMxYzRlMjAzY2Q0KSwgQyg2YjMzMjlmMWMxMzBjZWZlKSwgQyhmMmUzMmY4
ZWM3NmFhYzkxKSwKLSAgICAgQygzNjFlMGE2MmM4MTg3YmZmKSwgQyg2MDg5OTcxYmI4NGQ3MTMz
KSwgQyg5M2RmNzc0MTU4OGRkNTBiKSwKLSAgICAgQyhjMmE5YjZhYmNkMWQ4MGIxKSwgQygzNjFl
MGE2MmM4MTg3YmZmKSwgQyg2MDg5OTcxYmI4NGQ3MTMzKSwKLSAgICAgQyg5M2RmNzc0MTU4OGRk
NTBiKSwgQyhjMmE5YjZhYmNkMWQ4MGIxKSwgQyg0ZDJmODY4NjlkNzliYzU5KSwKLSAgICAgQyg4
NWNkMjRkOGFhNTcwZmYpLCBDKGIwZGNmNmVmMGU5NGJiYjUpLCBDKDIwMzdjNjlhYTdhNzg0MjEp
LCBDKDJiMWRiN2NjKX0sCisgICAgIEMoMmIxZGI3Y2MpfSwKICAgICB7Qyg0MjkwZTAxOGZmYWVk
ZGU3KSwgQyhhMTQ5NDg1NDU0MThlYjVlKSwgQyg3MmQ4NTFiMjAyMjg0NjM2KSwKLSAgICAgQyg0
ZWMwMmYzZDJmMmIyM2YyKSwgQyhhYjM1ODA3MDhhYTdjMzM5KSwgQyhjZGNlMDY2ZmJhYjNmNjUp
LAotICAgICBDKGQ4ZWQzZWNmM2M3NjQ3YjkpLCBDKDRlYzAyZjNkMmYyYjIzZjIpLCBDKGFiMzU4
MDcwOGFhN2MzMzkpLAotICAgICBDKGNkY2UwNjZmYmFiM2Y2NSksIEMoZDhlZDNlY2YzYzc2NDdi
OSksIEMoNmQyMjA0YjNlMzFmMzQ0YSksCi0gICAgIEMoNjFhNGQ4N2Y4MGVlNjFkNyksIEMoNDQ2
YzQzZGJlZDRiNzI4ZiksIEMoNzMxMzBhYzk0ZjU4NzQ3ZSksCiAgICAgIEMoY2YwMGNkMzEpfSwK
ICAgICB7QyhmOTE5YTU5Y2JkZThiZjJmKSwgQyhhNTZkMDQyMDNiMmRjNWE1KSwgQygzOGIwNjc1
M2FjODcxZTQ4KSwKLSAgICAgQyhjMmM5ZmM2MzdkYmRmY2ZhKSwgQygyOTJhYjgzMDZkMTQ5ZDc1
KSwgQyg3ZjQzNmI4NzRiOWZmYzA3KSwKLSAgICAgQyhhNWI1NmIwMTI5MjE4YjgwKSwgQyhjMmM5
ZmM2MzdkYmRmY2ZhKSwgQygyOTJhYjgzMDZkMTQ5ZDc1KSwKLSAgICAgQyg3ZjQzNmI4NzRiOWZm
YzA3KSwgQyhhNWI1NmIwMTI5MjE4YjgwKSwgQyg5MTg4ZjdiZGM0N2VjMDUwKSwKLSAgICAgQyhj
ZmU5MzQ1ZDAzYTE1YWRlKSwgQyg0MGI1MjBmYjI3NTBjNDllKSwgQyhjMmU4M2QzNDM5NjhhZjJl
KSwKICAgICAgQyg3ZDNjNDNiOCl9LAogICAgIHtDKDFkNzBhM2Y1NTIxZDdmYTQpLCBDKGZiOTdi
M2ZkYzU4OTE5NjUpLCBDKDI5OWQ0OWJiYmUzNTM1YWYpLAotICAgICBDKGUxYTgyODZhN2Q2Nzk0
NmUpLCBDKDUyYmQ5NTZmMDQ3YjI5OCksIEMoY2JkNzQzMzJkZDQyMDRhYyksCi0gICAgIEMoMTJi
NWJlNzc1MjcyMTk3NiksIEMoZTFhODI4NmE3ZDY3OTQ2ZSksIEMoNTJiZDk1NmYwNDdiMjk4KSwK
LSAgICAgQyhjYmQ3NDMzMmRkNDIwNGFjKSwgQygxMmI1YmU3NzUyNzIxOTc2KSwgQygyNzg0MjZl
MjdmNjIwNGI2KSwKLSAgICAgQyg5MzJjYTdhN2NkNjEwMTgxKSwgQyg0MTY0NzMyMWYwYTU5MTRk
KSwgQyg0OGY0YWE2MWEwYWU4MGRiKSwKICAgICAgQyhjYmQ1ZmFjNil9LAogICAgIHtDKDZhZjk4
ZDdiNjU2ZDBkN2MpLCBDKGQyZTk5YWU5NmQ2YjVjMGMpLCBDKGY2M2JkMTYwM2VmODA2MjcpLAot
ICAgICBDKGJkZTUxMDMzYWMwNDEzZjgpLCBDKGJjMDI3MmY2OTFhZWM2MjkpLCBDKDYyMDQzMzI2
NTFiZWJjNDQpLAotICAgICBDKDFjYmYwMGRlMDI2ZWE5YmQpLCBDKGJkZTUxMDMzYWMwNDEzZjgp
LCBDKGJjMDI3MmY2OTFhZWM2MjkpLAotICAgICBDKDYyMDQzMzI2NTFiZWJjNDQpLCBDKDFjYmYw
MGRlMDI2ZWE5YmQpLCBDKGI5YzdlZDZhNzVmM2ZmMWUpLAotICAgICBDKDdlMzEwYjc2YTU4MDhl
NGYpLCBDKGFjYmJkMWFhZDU1MzE4ODUpLCBDKGZjMjQ1ZjI0NzNhZGViOWMpLAogICAgICBDKDc2
ZDBmZWM0KX0sCi0gICAge0MoMzk1YjdhOGFkYjk2YWI3NSksIEMoNTgyZGY3MTY1YjIwZjRhKSwg
QyhlNTJiZDMwZTlmZjY1N2Y5KSwKLSAgICAgQyg2YzcxMDY0OTk2Y2JlYzhiKSwgQygzNTJjNTM1
ZWRlZWZjYjg5KSwgQyhhYzdmMGFiYTE1Y2Q1ZWNkKSwKLSAgICAgQygzYWJhMWNhODM1M2U1YzYw
KSwgQyg2YzcxMDY0OTk2Y2JlYzhiKSwgQygzNTJjNTM1ZWRlZWZjYjg5KSwKLSAgICAgQyhhYzdm
MGFiYTE1Y2Q1ZWNkKSwgQygzYWJhMWNhODM1M2U1YzYwKSwgQyg1YzMwYTI4OGE4MGNlNjQ2KSwK
LSAgICAgQyhjMjk0MDQ4OGI2NjE3Njc0KSwgQyg5MjVmOGNjNjZiMzcwNTc1KSwgQyhhYTY1ZDEy
ODNiOWJiMGVmKSwKLSAgICAgQyg0MDVlMzQwMil9LAorICAgIHtDKDM5NWI3YThhZGI5NmFiNzUp
LCBDKDU4MmRmNzE2NWIyMGY0YSksIEMoZTUyYmQzMGU5ZmY2NTdmOSksIEMoNDA1ZTM0MDIpfSwK
ICAgICB7QygzODIyZGQ4MmM3ZGYwMTJmKSwgQyhiOTAyOWI0MGJkOWYxMjJiKSwgQyhmZDI1Yjk4
ODQ2ODI2NmM0KSwKLSAgICAgQyg0M2U0N2JkNWJhYjFlMGVmKSwgQyg0YTcxZjM2MzQyMWYyODJm
KSwgQyg4ODBiMmYzMmEyYjRlMjg5KSwKLSAgICAgQygxMjk5ZDRlZGE5ZDNlYWRmKSwgQyg0M2U0
N2JkNWJhYjFlMGVmKSwgQyg0YTcxZjM2MzQyMWYyODJmKSwKLSAgICAgQyg4ODBiMmYzMmEyYjRl
Mjg5KSwgQygxMjk5ZDRlZGE5ZDNlYWRmKSwgQyhkNzEzYTQwMjI2ZjU1NjQpLAotICAgICBDKDRk
OGQzNGZlZGM3Njk0MDYpLCBDKGE4NTAwMWIyOWNkOWNhYzMpLCBDKGNhZTkyMzUyYTQxZmQyYjAp
LAogICAgICBDKGM3MzJjNDgxKX0sCiAgICAge0MoNzlmN2VmZTRhODBiOTUxYSksIEMoZGQzYTNm
ZGRmYzZjOWM0MSksIEMoYWI0YzgxMmY5ZTI3YWE0MCksCi0gICAgIEMoODMyOTU0ZWM5ZDBkZTMz
MyksIEMoOTRjMzkwYWE5YmNiNmI4YSksIEMoZjNiMzJhZmRjMWYwNGY4MiksCi0gICAgIEMoZDIy
OWMzYjcyZTRiOWE3NCksIEMoODMyOTU0ZWM5ZDBkZTMzMyksIEMoOTRjMzkwYWE5YmNiNmI4YSks
Ci0gICAgIEMoZjNiMzJhZmRjMWYwNGY4MiksIEMoZDIyOWMzYjcyZTRiOWE3NCksIEMoMWQxMTg2
MGQ3ZWQ2MjRhNiksCi0gICAgIEMoY2FkZWUyMGIzNDQxYjk4NCksIEMoNzUzMDcwNzliZjMwNmY3
YiksIEMoODc5MDJhYTNiOTc1M2JhNCksCiAgICAgIEMoYThkMTIzYzkpfSwKLSAgICB7QyhhZTZl
NTlmNWYwNTU5MjFhKSwgQyhlOWQ5YjdiZjY4ZTgyKSwgQyg1Y2U0ZTRhNWIyNjljYzU5KSwKLSAg
ICAgQyg0OTYwMTExNzg5NzI3NTY3KSwgQygxNDliOGEzN2M3MTI1YWI2KSwgQyg3OGM3YTEzYWI5
NzQ5MzgyKSwKLSAgICAgQygxYzYxMTMxMjYwY2ExNTFhKSwgQyg0OTYwMTExNzg5NzI3NTY3KSwg
QygxNDliOGEzN2M3MTI1YWI2KSwKLSAgICAgQyg3OGM3YTEzYWI5NzQ5MzgyKSwgQygxYzYxMTMx
MjYwY2ExNTFhKSwgQygxZTkzMjc2YjM1YzMwOWEwKSwKLSAgICAgQygyNjE4ZjU2MjMwYWNkZTU4
KSwgQyhhZjYxMTMwYTE4ZTRmZWJmKSwgQyg3MTQ1ZGViMThlODliZWZlKSwKLSAgICAgQygxZTgw
YWQ3ZCl9LAorICAgIHtDKGFlNmU1OWY1ZjA1NTkyMWEpLCBDKGU5ZDliN2JmNjhlODIpLCBDKDVj
ZTRlNGE1YjI2OWNjNTkpLCBDKDFlODBhZDdkKX0sCiAgICAge0MoODk1OWRiYmYwNzM4N2QzNiks
IEMoYjQ2NThhZmNlNDhlYTM1ZCksIEMoOGYzZjgyNDM3ZDhjYjhkNiksCi0gICAgIEMoNjU2NmQ3
NDk1NDk4NmJhNSksIEMoOTlkNTIzNWNjODI1MTlhNyksIEMoMjU3YTIzODA1YzJkODI1KSwKLSAg
ICAgQyhhZDc1Y2NiOTY4ZTkzNDAzKSwgQyg2NTY2ZDc0OTU0OTg2YmE1KSwgQyg5OWQ1MjM1Y2M4
MjUxOWE3KSwKLSAgICAgQygyNTdhMjM4MDVjMmQ4MjUpLCBDKGFkNzVjY2I5NjhlOTM0MDMpLCBD
KGI0NWJkNGNmNzhlMTFmN2YpLAotICAgICBDKDgwYzU1MzZiZGM0ODc5ODMpLCBDKGE0ZmQ3NmVj
YmYwMThjOGEpLCBDKDNiOWRhYzc4YTdhNzBkNDMpLAogICAgICBDKDUyYWViODYzKX0sCiAgICAg
e0MoNDczOTYxMzIzNDI3OGE0OSksIEMoOTllYTViY2QzNDBiZjY2MyksIEMoMjU4NjQwOTEyZTcx
MmIxMiksCi0gICAgIEMoYzhhMjgyNzQwNDk5MTQwMiksIEMoN2VlNWU3ODU1MGYwMjY3NSksIEMo
MmVjNTM5NTJkYjVhYzY2MiksCi0gICAgIEMoMTUyNjQwNWE5ZGY2Nzk0YiksIEMoYzhhMjgyNzQw
NDk5MTQwMiksIEMoN2VlNWU3ODU1MGYwMjY3NSksCi0gICAgIEMoMmVjNTM5NTJkYjVhYzY2Miks
IEMoMTUyNjQwNWE5ZGY2Nzk0YiksIEMoZWRkYzYyNzExNzBjNWUxZiksCi0gICAgIEMoZjVhODVm
OTg2MDAxZDlkNiksIEMoOTU0MjdjNjc3YmY1OGQ1OCksIEMoNTNlZDY2NmRmYTg1Y2IyOSksCiAg
ICAgIEMoZWY3YzBjMTgpfSwKICAgICB7Qyg0MjBlNmM5MjZiYzU0ODQxKSwgQyg5NmRiYmY2ZjRl
N2M3NWNkKSwgQyhkOGQ0MGZhNzBjM2M2N2JiKSwKLSAgICAgQygzZWRiYzEwZTRiZmVlOTFiKSwg
QyhmMGQ2ODEzMDRjMjhlZjY4KSwgQyg3N2VhNjAyMDI5YWFhZjljKSwKLSAgICAgQyg5MGYwNzBi
ZDI0Yzg0ODNjKSwgQygzZWRiYzEwZTRiZmVlOTFiKSwgQyhmMGQ2ODEzMDRjMjhlZjY4KSwKLSAg
ICAgQyg3N2VhNjAyMDI5YWFhZjljKSwgQyg5MGYwNzBiZDI0Yzg0ODNjKSwgQygyOGJjOGU0MWUw
OGNlYjg2KSwKLSAgICAgQygxZWI1NmU0OGE2NTY5MWVmKSwgQyg5ZmVhNTMwMWM5MjAyZjBlKSwg
QygzZmNiNjUwOTFhYTlmMTM1KSwKICAgICAgQyhiNmFkNGI2OCl9LAogICAgIHtDKGM4NjAxYmFi
NTYxYmMxYjcpLCBDKDcyYjI2MjcyYTBmZjg2OWEpLCBDKDU2ZmRmYzk4NmQ2YmMzYzQpLAotICAg
ICBDKDgzNzA3NzMwY2FkNzI1ZDQpLCBDKGM5Y2E4OGMzYTc3OTY3NGEpLCBDKGUxYzY5NmZiYmQ5
YWE5MzMpLAotICAgICBDKDcyM2YzYmFhYjFjMTdhNDUpLCBDKDgzNzA3NzMwY2FkNzI1ZDQpLCBD
KGM5Y2E4OGMzYTc3OTY3NGEpLAotICAgICBDKGUxYzY5NmZiYmQ5YWE5MzMpLCBDKDcyM2YzYmFh
YjFjMTdhNDUpLCBDKGY4MmFiYzdhMWQ4NTE2ODIpLAotICAgICBDKDMwNjgzODM2ODE4ZTg1N2Qp
LCBDKDc4YmZhM2U4OWE1YWIyM2YpLCBDKDY5MjgyMzQ0ODJiMzE4MTcpLAogICAgICBDKGMxZTQ2
YjE3KX0sCi0gICAge0MoYjJkMjk0OTMxYTBlMjBlYiksIEMoMjg0ZmZkOWEwODE1YmMzOCksIEMo
MWY4YTEwM2FhYzliYmU2KSwKLSAgICAgQygxZWY4ZTk4ZTFlYTU3MjY5KSwgQyg1OTcxMTE2Mjcy
ZjQ1YThiKSwgQygxODdhZDY4Y2U5NWQ4ZWFjKSwKLSAgICAgQyhlOTRlOTNlZTRlOGVjYWE2KSwg
QygxZWY4ZTk4ZTFlYTU3MjY5KSwgQyg1OTcxMTE2MjcyZjQ1YThiKSwKLSAgICAgQygxODdhZDY4
Y2U5NWQ4ZWFjKSwgQyhlOTRlOTNlZTRlOGVjYWE2KSwgQyhhMGZmMmE1ODYxMTgzOGI1KSwKLSAg
ICAgQyhiMDFlMDM4NDliZmJhZTZmKSwgQyhkMDgxZTIwMmUyOGVhM2FiKSwgQyg1MTgzNmJjZWU3
NjJiZjEzKSwKLSAgICAgQyg1N2I4ZGYyNSl9LAorICAgIHtDKGIyZDI5NDkzMWEwZTIwZWIpLCBD
KDI4NGZmZDlhMDgxNWJjMzgpLCBDKDFmOGExMDNhYWM5YmJlNiksIEMoNTdiOGRmMjUpfSwKICAg
ICB7Qyg3OTY2ZjUzYzM3YjZjNmQ3KSwgQyg4ZTZhYmNmYjNhYTJiODhmKSwgQyg3ZjJlNWUwNzI0
ZTVmMzQ1KSwKLSAgICAgQygzZWViNjBjM2Y1ZjgxNDNkKSwgQyhhMjVhZWMwNWM0MjJhMjRmKSwg
QyhiMDI2YjAzYWQzY2NhNGRiKSwKLSAgICAgQyhlNmUwMzAwMjhjYzAyYTAyKSwgQygzZWViNjBj
M2Y1ZjgxNDNkKSwgQyhhMjVhZWMwNWM0MjJhMjRmKSwKLSAgICAgQyhiMDI2YjAzYWQzY2NhNGRi
KSwgQyhlNmUwMzAwMjhjYzAyYTAyKSwgQygxNmZlNjc5MzM4YjM0YmZjKSwKLSAgICAgQyhjMWJl
Mzg1YjVjOGE5ZGU0KSwgQyg2NWFmNWRmNjU2NzUzMGViKSwgQyhlZDNiMzAzZGY0ZGM2MzM1KSwK
ICAgICAgQyhlOWZhMzZkNil9LAogICAgIHtDKGJlOWJiMGFiZDAzYjczNjgpLCBDKDEzYmNhOTNh
MzAzMWJlNTUpLCBDKGU4NjRmNGY1MmI1NWI0NzIpLAotICAgICBDKDM2YThkMTNhMmNiYjA5Mzkp
LCBDKDI1NGFjNzM5MDc0MTMyMzApLCBDKDczNTIwZDE1MjIzMTVhNzApLAotICAgICBDKDhjOWZk
YjVjZjFlMWE1MDcpLCBDKDM2YThkMTNhMmNiYjA5MzkpLCBDKDI1NGFjNzM5MDc0MTMyMzApLAot
ICAgICBDKDczNTIwZDE1MjIzMTVhNzApLCBDKDhjOWZkYjVjZjFlMWE1MDcpLCBDKGIzNjQwNTcw
YjkyNjg4NiksCi0gICAgIEMoZmJhMjM0NGVlODdmN2JhYiksIEMoZGU1NzM0MWFiNDQ4ZGYwNSks
IEMoMzg1NjEyZWUwOTRmYTk3NyksCiAgICAgIEMoOGY4ZGFlZmMpfSwKLSAgICB7QyhhMDhkMTI4
YzVmMTY0OWJlKSwgQyhhODE2NmMzZGJiZTE5YWFkKSwgQyhjYjlmOTE0ZjgyOWVjNjJjKSwKLSAg
ICAgQyg1YjJiN2NhODU2ZmFkMWMzKSwgQyg4MDkzMDIyZDY4MmUzNzVkKSwgQyhlYTVkMTYzYmE3
ZWEyMzFmKSwKLSAgICAgQyhkNjE4MWQwMTJjMGRlNjQxKSwgQyg1YjJiN2NhODU2ZmFkMWMzKSwg
Qyg4MDkzMDIyZDY4MmUzNzVkKSwKLSAgICAgQyhlYTVkMTYzYmE3ZWEyMzFmKSwgQyhkNjE4MWQw
MTJjMGRlNjQxKSwgQyhlN2Q0MGQwYWI4YjA4MTU5KSwKLSAgICAgQygyZTgyMzIwZjUxYjNhNjdl
KSwgQygyN2MyZTM1NmVhMGI2M2EzKSwgQyg1ODg0MmQwMWEyYjFkMDc3KSwgQyg2ZTFiYjdlKX0s
CisgICAge0MoYTA4ZDEyOGM1ZjE2NDliZSksIEMoYTgxNjZjM2RiYmUxOWFhZCksIEMoY2I5Zjkx
NGY4MjllYzYyYyksIEMoNmUxYmI3ZSl9LAogICAgIHtDKDdjMzg2ZjBmZmUwNDY1YWMpLCBDKDUz
MDQxOWM5ZDg0M2RiZjMpLCBDKDc0NTBlM2E0ZjcyYjhkOGMpLAotICAgICBDKDQ4YjIxOGUzYjcy
MTgxMGQpLCBDKGQzNzU3YWM4NjA5YmM3ZmMpLCBDKDExMWJhMDJhODhhZWZjOCksCi0gICAgIEMo
ZTg2MzQzMTM3ZDNiZmMyYSksIEMoNDhiMjE4ZTNiNzIxODEwZCksIEMoZDM3NTdhYzg2MDliYzdm
YyksCi0gICAgIEMoMTExYmEwMmE4OGFlZmM4KSwgQyhlODYzNDMxMzdkM2JmYzJhKSwgQyg0NGFk
MjZiNTE2NjFiNTA3KSwKLSAgICAgQyhkYjEyNjg2NzAyNzRmNTFlKSwgQyg2MmE1ZTc1YmVhZTg3
NWYzKSwgQyhlMjY2ZTdhNDRjNWYyOGM2KSwKICAgICAgQyhmZDAwNzZmMCl9LAotICAgIHtDKGJi
MzYyMDk0ZTdlZjRmOCksIEMoZmYzYzJhNDg5NjZmOTcyNSksIEMoNTUxNTI4MDNhY2Q0YTdmZSks
Ci0gICAgIEMoMTU3NDdkOGM1MDVmZmQwMCksIEMoNDM4YTE1ZjM5MTMxMmNkNiksIEMoZTQ2Y2E2
MmMyNmQ4MjFmNSksCi0gICAgIEMoYmU3OGQ3NGM5Zjc5Y2I0NCksIEMoMTU3NDdkOGM1MDVmZmQw
MCksIEMoNDM4YTE1ZjM5MTMxMmNkNiksCi0gICAgIEMoZTQ2Y2E2MmMyNmQ4MjFmNSksIEMoYmU3
OGQ3NGM5Zjc5Y2I0NCksIEMoYThhYTE5ZjNhYTU5ZjA5YSksCi0gICAgIEMoZWZmYjNjZGRhYjJj
OTI2NyksIEMoZDc4ZTQxYWQ5N2NiMTZhNSksIEMoYWNlNjgyMTUxMzUyN2QzMiksCi0gICAgIEMo
ODk5YjE3YjYpfSwKKyAgICB7QyhiYjM2MjA5NGU3ZWY0ZjgpLCBDKGZmM2MyYTQ4OTY2Zjk3MjUp
LCBDKDU1MTUyODAzYWNkNGE3ZmUpLCBDKDg5OWIxN2I2KX0sCiAgICAge0MoY2Q4MGRlYTI0MzIx
ZWVhNCksIEMoNTJiNGZkYzgxMzBjMmIxNSksIEMoZjNlYTEwMGIxNTRiZmI4MiksCi0gICAgIEMo
ZDljY2VmMWQ0YmU0Njk4OCksIEMoNWVkZTBjNGUzODNhNWU2NiksIEMoZGE2OTY4MzcxNmE1NGQx
ZSksCi0gICAgIEMoYmZjM2ZkZjAyZDI0MmQyNCksIEMoZDljY2VmMWQ0YmU0Njk4OCksIEMoNWVk
ZTBjNGUzODNhNWU2NiksCi0gICAgIEMoZGE2OTY4MzcxNmE1NGQxZSksIEMoYmZjM2ZkZjAyZDI0
MmQyNCksIEMoMjBlZDMwMjc0NjUxYjNmNSksCi0gICAgIEMoNGM2NTk4MjQxNjllODZjNiksIEMo
NjM3MjI2ZGFlNWI1MmEwZSksIEMoN2UwNTBkYmQxYzcxZGM3ZiksCiAgICAgIEMoZTNlODRlMzEp
fSwKICAgICB7QyhkNTk5YTA0MTI1MzcyYzNhKSwgQygzMTMxMzZjNTZhNTZmMzYzKSwgQygxZTk5
M2MzNjc3NjI1ODMyKSwKLSAgICAgQygyODcwYTk5Yzc2YTU4N2E0KSwgQyg5OWY3NGNjMGIxODJk
ZGE0KSwgQyg4YTVlODk1YjJmMGNhN2I2KSwKLSAgICAgQygzZDc4ODgyZDVlMGJiMWRjKSwgQygy
ODcwYTk5Yzc2YTU4N2E0KSwgQyg5OWY3NGNjMGIxODJkZGE0KSwKLSAgICAgQyg4YTVlODk1YjJm
MGNhN2I2KSwgQygzZDc4ODgyZDVlMGJiMWRjKSwgQyhmNDY2MTIzNzMyYTNlMjVlKSwKLSAgICAg
QyhhY2E1ZTU5NzE2YTQwZTUwKSwgQygyNjFkMmU3MzgzZDBlNjg2KSwgQyhjZTkzNjJkNmE0MmMx
NWE3KSwKICAgICAgQyhlZWY3OWI2Yil9LAotICAgIHtDKGRiYmY1NDFlOWRmZGEwYSksIEMoMTQ3
OWZjZWI2ZGI0Zjg0NCksIEMoMzFhYjU3NmI1OTA2MjUzNCksCi0gICAgIEMoYTMzMzVjNDE3Njg3
Y2YzYSksIEMoOTJmZjExNGFjNDVjZGE3NSksIEMoYzNiOGE2MjczODRmMTNiNSksCi0gICAgIEMo
YzRmMjVkZTMzZGU4YjNmNyksIEMoYTMzMzVjNDE3Njg3Y2YzYSksIEMoOTJmZjExNGFjNDVjZGE3
NSksCi0gICAgIEMoYzNiOGE2MjczODRmMTNiNSksIEMoYzRmMjVkZTMzZGU4YjNmNyksIEMoZWFj
YmY1MjA1NzhjNTk2NCksCi0gICAgIEMoNGNiMTljNWFiMjRmMzIxNSksIEMoZTdkOGE2ZjY3ZjBj
NmU3KSwgQygzMjVjMjQxM2ViNzcwYWRhKSwgQyg4NjhlMzMxNSl9LAotICAgIHtDKGMyZWUzMjg4
YmU0ZmUyYmYpLCBDKGM2NWQyZjVkZGYzMmI5MiksIEMoYWY2ZWNkZjEyMWJhNTQ4NSksCi0gICAg
IEMoYzdjZDQ4ZjdhYmYxZmU1OSksIEMoY2U2MDA2NTZhY2U2ZjUzYSksIEMoOGE5NGE0MzgxYjEw
OGIzNCksCi0gICAgIEMoZjlkMTI3NmM2NGJmNTlmYiksIEMoYzdjZDQ4ZjdhYmYxZmU1OSksIEMo
Y2U2MDA2NTZhY2U2ZjUzYSksCi0gICAgIEMoOGE5NGE0MzgxYjEwOGIzNCksIEMoZjlkMTI3NmM2
NGJmNTlmYiksIEMoMjE5Y2U3MGZmNWExMTJhNSksCi0gICAgIEMoZTYwMjZjNTc2ZTJkMjhkNyks
IEMoYjhlNDY3ZjI1MDE1ZTNhNiksIEMoOTUwY2I5MDRmMzdhZjcxMCksCi0gICAgIEMoNDYzOWE0
MjYpfSwKKyAgICB7QyhkYmJmNTQxZTlkZmRhMGEpLCBDKDE0NzlmY2ViNmRiNGY4NDQpLCBDKDMx
YWI1NzZiNTkwNjI1MzQpLCBDKDg2OGUzMzE1KX0sCisgICAge0MoYzJlZTMyODhiZTRmZTJiZiks
IEMoYzY1ZDJmNWRkZjMyYjkyKSwgQyhhZjZlY2RmMTIxYmE1NDg1KSwgQyg0NjM5YTQyNil9LAog
ICAgIHtDKGQ4NjYwM2NlZDFlZDQ3MzApLCBDKGY5ZGU3MThhYWFkYTc3MDkpLCBDKGRiOGI5NzU1
MTk0YzY1MzUpLAotICAgICBDKGQ4MDNlMWVlYWQ0NzYwNGMpLCBDKGFkMDBmNzYxMTk3MGE3MWIp
LCBDKGJjNTAwMzZiMTZjZTcxZjUpLAotICAgICBDKGFmYmE5NjIxMGEyY2E3ZDYpLCBDKGQ4MDNl
MWVlYWQ0NzYwNGMpLCBDKGFkMDBmNzYxMTk3MGE3MWIpLAotICAgICBDKGJjNTAwMzZiMTZjZTcx
ZjUpLCBDKGFmYmE5NjIxMGEyY2E3ZDYpLCBDKDI4ZjdhN2JlMWQ2NzY1ZjApLAotICAgICBDKDk3
YmQ4ODhiOTM5MzhjNjgpLCBDKDZhZDQxZDFiNDA3ZGVkNDkpLCBDKGI5YmZlYzA5OGRjNTQzZTQp
LAogICAgICBDKGYzMjEzNjQ2KX0sCiAgICAge0MoOTE1MjYzYzY3MWIyODgwOSksIEMoYTgxNTM3
OGU3YWQ3NjJmZCksIEMoYWJlYzZkYzliNjY5ZjU1OSksCi0gICAgIEMoZDE3YzkyOGM1MzQyNDc3
ZiksIEMoNzQ1MTMwYjc5NTI1NGFkNSksIEMoOGM1ZGI5MjZmZTg4ZjhiYSksCi0gICAgIEMoNzQy
YTk1Yzk1M2U2ZDk3NCksIEMoZDE3YzkyOGM1MzQyNDc3ZiksIEMoNzQ1MTMwYjc5NTI1NGFkNSks
Ci0gICAgIEMoOGM1ZGI5MjZmZTg4ZjhiYSksIEMoNzQyYTk1Yzk1M2U2ZDk3NCksIEMoMjc5ZGI4
MDU3YjVkM2U5NiksCi0gICAgIEMoOTgxNjg0MTE1NjViNGVjNCksIEMoNTBhNzJjNTRmYTExMjVm
YSksIEMoMjc3NjZhNjM1ZGI3MzYzOCksCiAgICAgIEMoMTdmMTQ4ZTkpfSwKLSAgICB7QygyYjY3
Y2RkMzhjMzA3YTVlKSwgQyhjYjFkNDViYjVjOWZlMWMpLCBDKDgwMGJhZjJhMDJlYzE4YWQpLAot
ICAgICBDKDY1MzFjMWZlMzJiY2I0MTcpLCBDKDhjOTcwZDhkZjhjZGJlYjQpLCBDKDkxN2JhNWZj
NjdlNzJiNDApLAotICAgICBDKDRiNjVlNGUyNjNlMGE0MjYpLCBDKDY1MzFjMWZlMzJiY2I0MTcp
LCBDKDhjOTcwZDhkZjhjZGJlYjQpLAotICAgICBDKDkxN2JhNWZjNjdlNzJiNDApLCBDKDRiNjVl
NGUyNjNlMGE0MjYpLCBDKGUwZGUzM2NlODhhOGIzYTkpLAotICAgICBDKGY4ZWY5OGE0MzdlMTZi
MDgpLCBDKGE1MTYyYzBjN2M1ZjdiNjIpLCBDKGRiZGFjNDMzNjFiMmI4ODEpLAotICAgICBDKGJm
ZDk0ODgwKX0sCisgICAge0MoMmI2N2NkZDM4YzMwN2E1ZSksIEMoY2IxZDQ1YmI1YzlmZTFjKSwg
Qyg4MDBiYWYyYTAyZWMxOGFkKSwgQyhiZmQ5NDg4MCl9LAogICAgIHtDKDJkMTA3NDE5MDczYjlj
ZDApLCBDKGE5NmRiMDc0MGNlZjhmNTQpLCBDKGVjNDFlZTkxYjNlY2RjMWIpLAotICAgICBDKGZm
ZTMxOTY1NGM4ZTdlYmMpLCBDKDZhNjdiOGYxM2VhZDVhNzIpLCBDKDZkZDEwYTM0ZjgwZDUzMmYp
LAotICAgICBDKDZlOWNmYWVjZTlmYmNhNCksIEMoZmZlMzE5NjU0YzhlN2ViYyksIEMoNmE2N2I4
ZjEzZWFkNWE3MiksCi0gICAgIEMoNmRkMTBhMzRmODBkNTMyZiksIEMoNmU5Y2ZhZWNlOWZiY2E0
KSwgQyhiNDQ2OGViNmEzMGFhN2U5KSwKLSAgICAgQyhlODc5OTViZWU0ODMyMjJhKSwgQyhkMDM2
YzJjOTBjNjA5MzkxKSwgQyg4NTMzMDZlODJmYTMyMjQ3KSwKICAgICAgQyhiYjFmYTdmMyl9LAot
ICAgIHtDKGYzZTk0ODdlYzBlMjZkZmMpLCBDKDFhYjFmNjMyMjRlODM3ZmEpLCBDKDExOTk4M2Ji
NWE4MTI1ZDgpLAotICAgICBDKDg5NTBjZmNmNGJkZjYyMmMpLCBDKDg4NDdkY2E4MmVmZWVmMmYp
LCBDKDY0NmI3NWIwMjY3MDgxNjkpLAotICAgICBDKDIxY2FiNGIxNjg3YmQ4YiksIEMoODk1MGNm
Y2Y0YmRmNjIyYyksIEMoODg0N2RjYTgyZWZlZWYyZiksCi0gICAgIEMoNjQ2Yjc1YjAyNjcwODE2
OSksIEMoMjFjYWI0YjE2ODdiZDhiKSwgQygyNDNiNDg5YTllYWU2MjMxKSwKLSAgICAgQyg1ZjNl
NjM0YzRiNzc5ODc2KSwgQyhmZjhhYmQxNTQ4ZWFmNjQ2KSwgQyhjNzk2MmY1ZjAxNTE5MTRiKSwg
Qyg4ODgxNmIxKX0sCisgICAge0MoZjNlOTQ4N2VjMGUyNmRmYyksIEMoMWFiMWY2MzIyNGU4Mzdm
YSksIEMoMTE5OTgzYmI1YTgxMjVkOCksIEMoODg4MTZiMSl9LAogICAgIHtDKDExNjA5ODdjOGZl
ODZmN2QpLCBDKDg3OWU2ZGIxNDgxZWI5MWIpLCBDKGQ3ZGNiODAyYmZlNjg4NWQpLAotICAgICBD
KDE0NDUzYjVjYzNkODIzOTYpLCBDKDRlZjcwMGMzM2VkMjc4YmMpLCBDKDE2MzljNzJmZmMwMGQx
MmUpLAotICAgICBDKGZiMTQwZWU2MTU1ZjcwMGQpLCBDKDE0NDUzYjVjYzNkODIzOTYpLCBDKDRl
ZjcwMGMzM2VkMjc4YmMpLAotICAgICBDKDE2MzljNzJmZmMwMGQxMmUpLCBDKGZiMTQwZWU2MTU1
ZjcwMGQpLCBDKDJlNmI1Yzk2YTY2MjA4NjIpLAotICAgICBDKGExZjEzNjk5OGNiZTE5YyksIEMo
NzRlMDU4YTNiNmM1YTcxMiksIEMoOTNkY2Y2YmQzMzkyOGIxNyksIEMoNWMyZmFlYjMpfSwKKyAg
ICAgQyg1YzJmYWViMyl9LAogICAgIHtDKGVhYjgxMTJjNTYwYjk2N2IpLCBDKDk3ZjU1MGI1OGU4
OWRiYWUpLCBDKDg0NmVkNTA2ZDMwNDA1MWYpLAotICAgICBDKDI3NmFhMzc3NDRiNWEwMjgpLCBD
KDhjMTA4MDBlZTkwZWE1NzMpLCBDKGU2ZTU3ZDJiMzNhMWUwYjcpLAotICAgICBDKDkxZjgzNTYz
Y2QzYjlkZGEpLCBDKDI3NmFhMzc3NDRiNWEwMjgpLCBDKDhjMTA4MDBlZTkwZWE1NzMpLAotICAg
ICBDKGU2ZTU3ZDJiMzNhMWUwYjcpLCBDKDkxZjgzNTYzY2QzYjlkZGEpLCBDKGFmYmI0NzM5NTcw
NzM4YTEpLAotICAgICBDKDQ0MGJhOThkYTVkOGY2OSksIEMoZmRlNGU5YjBlZGEyMDM1MCksIEMo
ZTY3ZGZhNWEyMTM4ZmExKSwgQyg1MWI1ZmM2Zil9LAorICAgICBDKDUxYjVmYzZmKX0sCiAgICAg
e0MoMWFkZGNmMDM4NmQzNTM1MSksIEMoYjVmNDM2NTYxZjhmMTQ4NCksIEMoODVkMzhlMjIxODFj
OWJiMSksCi0gICAgIEMoZmY1YzAzZjAwM2MxZmVmZSksIEMoZTEwOTg2NzBhZmU3ZmY2KSwgQyhl
YTQ0NTAzMGNmODZkZTE5KSwKLSAgICAgQyhmMTU1YzY4YjVjMjk2N2Y4KSwgQyhmZjVjMDNmMDAz
YzFmZWZlKSwgQyhlMTA5ODY3MGFmZTdmZjYpLAotICAgICBDKGVhNDQ1MDMwY2Y4NmRlMTkpLCBD
KGYxNTVjNjhiNWMyOTY3ZjgpLCBDKDk1ZDMxYjE0NWRiYjJlOWUpLAotICAgICBDKDkxNGZlMWNh
M2RlYjMyNjUpLCBDKDYwNjYwMjBiMTM1OGNjYzEpLCBDKGM3NGJiN2UyZGVlMTUwMzYpLAogICAg
ICBDKDMzZDk0NzUyKX0sCiAgICAge0MoZDQ0NWJhODRiZjgwM2UwOSksIEMoMTIxNmMyNDk3MDM4
ZjgwNCksIEMoMjI5MzIxNmVhMjIzNzIwNyksCi0gICAgIEMoZTIxNjQ0NTFjNjUxYWRmYiksIEMo
YjI1MzRlNjU0NzdmOTgyMyksIEMoNGQ3MDY5MWE2OTY3MWUzNCksCi0gICAgIEMoMTViZTQ5NjNk
YmRlODE0MyksIEMoZTIxNjQ0NTFjNjUxYWRmYiksIEMoYjI1MzRlNjU0NzdmOTgyMyksCi0gICAg
IEMoNGQ3MDY5MWE2OTY3MWUzNCksIEMoMTViZTQ5NjNkYmRlODE0MyksIEMoNzYyZTc1YzQwNmM1
ZTlhMyksCi0gICAgIEMoN2I3NTc5ZjdlMDM1Njg0MSksIEMoNDgwNTMzZWIwNjZkZmNlNSksIEMo
OTBhZTE0ZWE2YmZlYjRhZSksCiAgICAgIEMoYjBjOTI5NDgpfSwKICAgICB7QygzNzIzNWEwOTZh
OGJlNDM1KSwgQyhkOWI3MzEzMDQ5MzU4OWMyKSwgQygzYjEwMjRmNTkzNzhkM2JlKSwKLSAgICAg
QyhhZDE1OWY1NDJkODFmMDRlKSwgQyg0OTYyNmE5N2E5NDYwOTYpLCBDKGQ4ZDM5OThiZjA5ZmQz
MDQpLAotICAgICBDKGQxMjdhNDExZWFlNjk0NTkpLCBDKGFkMTU5ZjU0MmQ4MWYwNGUpLCBDKDQ5
NjI2YTk3YTk0NjA5NiksCi0gICAgIEMoZDhkMzk5OGJmMDlmZDMwNCksIEMoZDEyN2E0MTFlYWU2
OTQ1OSksIEMoOGYzMjUzYzRlYjc4NWE3YiksCi0gICAgIEMoNDA0OTA2MmYzN2U2MjM5NyksIEMo
YjlmYTA0ZDNiNjcwZTVjMSksIEMoMTIxMWE3OTY3YWM5MzUwZiksCiAgICAgIEMoYzcxNzE1OTAp
fSwKICAgICB7Qyg3NjNhZDZlYTJmZTFjOTlkKSwgQyhjZjdhZjUzNjhhYzFlMjZiKSwgQyg0ZDVl
NDUxYjNiYjhkM2Q0KSwKLSAgICAgQygzNzEyZWI5MTNkMDRlMmYyKSwgQygyZjk1MDBkMzE5Yzg0
ZDg5KSwgQyg0YWM2ZWIyMWE4Y2YwNmY5KSwKLSAgICAgQyg3ZDE5MTdhZmNkZTQyNzQ0KSwgQygz
NzEyZWI5MTNkMDRlMmYyKSwgQygyZjk1MDBkMzE5Yzg0ZDg5KSwKLSAgICAgQyg0YWM2ZWIyMWE4
Y2YwNmY5KSwgQyg3ZDE5MTdhZmNkZTQyNzQ0KSwgQyg2YjU4NjA0YjVkZDEwOTAzKSwKLSAgICAg
QyhjNDI4OGRmYmMxZTMxOWZjKSwgQygyMzBmNzVjYTk2ODE3YzZlKSwgQyg4ODk0Y2JhM2I3NjM3
NTZjKSwKICAgICAgQygyNDBhNjdmYil9LAogICAgIHtDKGVhNjI3ZmM4NGNkMWI4NTcpLCBDKDg1
ZTM3MjQ5NDUyMDA3MWYpLCBDKDY5ZWM2MTgwMDg0NTc4MGIpLAotICAgICBDKGEzYzFjNWNhMWIw
MzY3KSwgQyhlYjY5MzM5OTcyNzJiYjNkKSwgQyg3NmE3MmNiNjI2OTJhNjU1KSwKLSAgICAgQygx
NDBiYjU1MzFlZGY3NTZlKSwgQyhhM2MxYzVjYTFiMDM2NyksIEMoZWI2OTMzOTk3MjcyYmIzZCks
Ci0gICAgIEMoNzZhNzJjYjYyNjkyYTY1NSksIEMoMTQwYmI1NTMxZWRmNzU2ZSksIEMoOGQwZDgw
NjdkMWM5MjVmNCksCi0gICAgIEMoN2IzZmE1NmQ4ZDc3YTEwYyksIEMoMmJkMDAyODdiMDk0NmQ4
OCksIEMoZjA4YzhlNGJkNjViODk3MCksCiAgICAgIEMoZTE4NDNjZDUpfSwKICAgICB7QygxZjJm
ZmQ3OWYyY2RjMGM4KSwgQyg3MjZhMWJjMzFiMzM3YWFhKSwgQyg2NzhiN2YyNzVlZjk2NDM0KSwK
LSAgICAgQyg1YWE4MmJmYWE5OWQzOTc4KSwgQyhjMThmOTZjYWRlNWNlMThkKSwgQygzODQwNDQ5
MWY5ZTM0YzAzKSwKLSAgICAgQyg4OTFmYjg5MjZiYTA0MThjKSwgQyg1YWE4MmJmYWE5OWQzOTc4
KSwgQyhjMThmOTZjYWRlNWNlMThkKSwKLSAgICAgQygzODQwNDQ5MWY5ZTM0YzAzKSwgQyg4OTFm
Yjg5MjZiYTA0MThjKSwgQyhlNWY2OWE2Mzk4MTE0YzE1KSwKLSAgICAgQyg3YjhkZWQzNjIzYmM2
YjFkKSwgQygyZjNlNWM1ZGE1ZmY3MGU4KSwgQygxYWIxNDJhZGRlYTZhOWVjKSwKICAgICAgQyhm
ZGExNDUyYil9LAogICAgIHtDKDM5YTllMTQ2ZWM0YjMyMTApLCBDKGY2M2Y3NTgwMmE3OGIxYWMp
LCBDKGUyZTIyNTM5Yzk0NzQxYzMpLAotICAgICBDKDhiMzA1ZDUzMmU2MTIyNmUpLCBDKGNhZWFl
ODBkYTJlYTJlKSwgQyg4OGE2Mjg5YTc2YWM2ODRlKSwKLSAgICAgQyg4Y2U1YjVmOWRmMWNiZDg1
KSwgQyg4YjMwNWQ1MzJlNjEyMjZlKSwgQyhjYWVhZTgwZGEyZWEyZSksCi0gICAgIEMoODhhNjI4
OWE3NmFjNjg0ZSksIEMoOGNlNWI1ZjlkZjFjYmQ4NSksIEMoOGFlMWZjNDc5OGUwMGQ1NyksCi0g
ICAgIEMoZTcxNjRiOGZiMzY0ZmM0NiksIEMoNmE5NzhjOWJkM2E2Njk0MyksIEMoZWYxMGQ1YWU0
ZGQwOGRjKSwgQyhhMmNhZDMzMCl9LAorICAgICBDKGEyY2FkMzMwKX0sCiAgICAge0MoNzRjYmEz
MDNlMmRkOWQ2ZCksIEMoNjkyNjk5YjgzMjg5ZmFkMSksIEMoZGZiOWFhNzg3NDY3ODQ4MCksCi0g
ICAgIEMoNzUxMzkwYThhNWM0MWJkYyksIEMoNmVlNWZiZjg3NjA1ZDM0KSwgQyg2Y2E3M2Y2MTBm
M2E4ZjdjKSwKLSAgICAgQyhlODk4YjNjOTk2NTcwYWQpLCBDKDc1MTM5MGE4YTVjNDFiZGMpLCBD
KDZlZTVmYmY4NzYwNWQzNCksCi0gICAgIEMoNmNhNzNmNjEwZjNhOGY3YyksIEMoZTg5OGIzYzk5
NjU3MGFkKSwgQyg5ODE2OGE1ODU4ZmM3MTEwKSwKLSAgICAgQyg2Zjk4N2ZhMjdhYTBkYWEyKSwg
QyhmMjVlM2UxODBkNGIzNmEzKSwgQyhkMGIwMzQ5NWFlYjFiZThhKSwKICAgICAgQyg1MzQ2N2Ux
Nil9LAogICAgIHtDKDRjYmMyYjczYTQzMDcxZTApLCBDKDU2YzVkYjRjNGNhNGUwYjcpLCBDKDFi
Mjc1YTE2MmY0NmJkM2QpLAotICAgICBDKGI4N2EzMjZlNDEzNjA0YmYpLCBDKGQ4ZjlhNWZhMjE0
YjAzYWIpLCBDKDhhOGJiODI2NTc3MWNmODgpLAotICAgICBDKGE2NTUzMTkwNTRmNmU3MGYpLCBD
KGI4N2EzMjZlNDEzNjA0YmYpLCBDKGQ4ZjlhNWZhMjE0YjAzYWIpLAotICAgICBDKDhhOGJiODI2
NTc3MWNmODgpLCBDKGE2NTUzMTkwNTRmNmU3MGYpLCBDKGI0OTljYjhlNjVhOWFmNDQpLAotICAg
ICBDKGJlZTdmYWZjYzgzMDc0OTEpLCBDKDVkMmU1NWZhOWIyN2NkYTIpLCBDKDYzYjEyMGY1ZmIy
ZDZlZTUpLAogICAgICBDKGRhMTRhOGQwKX0sCiAgICAge0MoODc1NjM4Yjk3MTVkMjIyMSksIEMo
ZDliYTA2MTVjMGM1ODc0MCksIEMoNjE2ZDRiZTJkZmU4MjVhYSksCi0gICAgIEMoNWRmMjVmMTNl
YTdiYzI4NCksIEMoMTY1ZWRmYWFmZDI1OThmYiksIEMoYWY3MjE1YzVjNzE4YzY5NiksCi0gICAg
IEMoZTlmMmY5Y2E2NTVlNzY5KSwgQyg1ZGYyNWYxM2VhN2JjMjg0KSwgQygxNjVlZGZhYWZkMjU5
OGZiKSwKLSAgICAgQyhhZjcyMTVjNWM3MThjNjk2KSwgQyhlOWYyZjljYTY1NWU3NjkpLCBDKGU0
NTljZmNiNTY1ZDNkMmQpLAotICAgICBDKDQxZDAzMjYzMWJlMjQxOGEpLCBDKGM1MDVkYjA1ZmQ5
NDZmNjApLCBDKDU0OTkwMzk0YTcxNGY1ZGUpLAogICAgICBDKDY3MzMzNTUxKX0sCiAgICAge0Mo
ZmI2ODZiMjc4Mjk5NGE4ZCksIEMoZWRlZTYwNjkzNzU2YmI0OCksIEMoZTZiYzNjYWUwZGVkMmVm
NSksCi0gICAgIEMoNThlYjRkMDNiMmMzZGRmNSksIEMoNmQyNTQyOTk1ZjkxODlmMSksIEMoYzBi
ZWVjNThhNWY1ZmVhMiksCi0gICAgIEMoZWQ2NzQzNmY0MmUyYTc4YiksIEMoNThlYjRkMDNiMmMz
ZGRmNSksIEMoNmQyNTQyOTk1ZjkxODlmMSksCi0gICAgIEMoYzBiZWVjNThhNWY1ZmVhMiksIEMo
ZWQ2NzQzNmY0MmUyYTc4YiksIEMoZGZlYzc2M2NkYjJiNTE5MyksCi0gICAgIEMoNzI0YThkNTM0
NWJkMmQ2KSwgQyg5NGQ0ZmQxYjgxNDU3YzIzKSwgQygyOGU4N2M1MGNkZWRlNDUzKSwgQyhhMGVi
ZDY2ZSl9LAorICAgICBDKGEwZWJkNjZlKX0sCiAgICAge0MoYWIyMWQ4MWE5MTFlNjcyMyksIEMo
NGMzMWIwNzM1NDg1MmY1OSksIEMoODM1ZGEzODRjOTM4NDc0NCksCi0gICAgIEMoN2Y3NTlkZGRj
NmU4NTQ5YSksIEMoNjE2ZGQwY2EwMjJjODczNSksIEMoOTQ3MTdhZDRiYzE1Y2ViMyksCi0gICAg
IEMoZjY2YzdiZTgwOGFiMzZlKSwgQyg3Zjc1OWRkZGM2ZTg1NDlhKSwgQyg2MTZkZDBjYTAyMmM4
NzM1KSwKLSAgICAgQyg5NDcxN2FkNGJjMTVjZWIzKSwgQyhmNjZjN2JlODA4YWIzNmUpLCBDKGFm
ODI4NmI1NTBiMmY0YjcpLAotICAgICBDKDc0NWJkMjE3ZDIwYTlmNDApLCBDKGM3M2JmYjljNTQz
MGYwMTUpLCBDKDU1ZTY1OTIyNjY2ZTNmYzIpLAogICAgICBDKDRiNzY5NTkzKX0sCiAgICAge0Mo
MzNkMDEzY2MwY2Q0NmVjZiksIEMoM2RlNzI2NDIzYWVhMTIyYyksIEMoMTE2YWY1MTExN2ZlMjFh
OSksCi0gICAgIEMoZjI3MWJhNDc0ZWRjNTYyZCksIEMoZTY1OTZlNjdmOWRkM2ViZCksIEMoYzBh
Mjg4ZWRmODA4ZjM4MyksCi0gICAgIEMoYjNkZWY3MDY4MWM2YmFiYyksIEMoZjI3MWJhNDc0ZWRj
NTYyZCksIEMoZTY1OTZlNjdmOWRkM2ViZCksCi0gICAgIEMoYzBhMjg4ZWRmODA4ZjM4MyksIEMo
YjNkZWY3MDY4MWM2YmFiYyksIEMoN2RhNzg2NGU5OTg5YjA5NSksCi0gICAgIEMoYmYyZjg3MTg2
OTNjZDhhMSksIEMoMjY0YTkxNDQxNjZkYTc3NiksIEMoNjFhZDkwNjc2ODcwYmViNiksCiAgICAg
IEMoNmFhNzU2MjQpfSwKLSAgICB7Qyg4Y2E5MmM3Y2QzOWZhZTVkKSwgQygzMTdlNjIwZTFiZjIw
ZjEpLCBDKDRmMGIzM2JmMjE5NGI5N2YpLAotICAgICBDKDQ1NzQ0YWZjZjEzMWRiZWUpLCBDKDk3
MjIyMzkyYzI1NTkzNTApLCBDKDQ5OGExOWIyODBjNmQ2ZWQpLAotICAgICBDKDgzYWMyYzM2YWNk
YjhkNDkpLCBDKDQ1NzQ0YWZjZjEzMWRiZWUpLCBDKDk3MjIyMzkyYzI1NTkzNTApLAotICAgICBD
KDQ5OGExOWIyODBjNmQ2ZWQpLCBDKDgzYWMyYzM2YWNkYjhkNDkpLCBDKDdhNjk2NDVjMjk0ZGFh
NjIpLAotICAgICBDKGFiZTlkMmJlODI3NWIzZDIpLCBDKDM5NTQyMDE5ZGUzNzEwODUpLCBDKDdm
NGVmYWM4NDg4Y2Q2YWQpLAotICAgICBDKDYwMmEzZjk2KX0sCi0gICAge0MoZmRkZTNiMDNmMDE4
ZjQzZSksIEMoMzhmOTMyOTQ2Yzc4NjYwKSwgQyhjODQwODRjZTk0Njg1MWVlKSwKLSAgICAgQyhi
NmRkMDliYTc4NTFjN2FmKSwgQyg1NzBkZTRlMWJiMTNiMTMzKSwgQyhjNGU3ODRlYjk3MjExNjQy
KSwKLSAgICAgQyg4Mjg1YTdmY2RjYzdjNThkKSwgQyhiNmRkMDliYTc4NTFjN2FmKSwgQyg1NzBk
ZTRlMWJiMTNiMTMzKSwKLSAgICAgQyhjNGU3ODRlYjk3MjExNjQyKSwgQyg4Mjg1YTdmY2RjYzdj
NThkKSwgQyhkNDIxZjQ3OTkwZGE4OTliKSwKLSAgICAgQyg4YWVkNDA5Yzk5N2VhYTEzKSwgQyg3
YTA0NTkyOWMyZTI5Y2NmKSwgQyhiMzczNjgyYTYyMDJjODZiKSwKLSAgICAgQyhjZDE4M2M0ZCl9
LAorICAgIHtDKDhjYTkyYzdjZDM5ZmFlNWQpLCBDKDMxN2U2MjBlMWJmMjBmMSksIEMoNGYwYjMz
YmYyMTk0Yjk3ZiksIEMoNjAyYTNmOTYpfSwKKyAgICB7QyhmZGRlM2IwM2YwMThmNDNlKSwgQygz
OGY5MzI5NDZjNzg2NjApLCBDKGM4NDA4NGNlOTQ2ODUxZWUpLCBDKGNkMTgzYzRkKX0sCiAgICAg
e0MoOWM4NTAyMDUwZTljOTQ1OCksIEMoZDZkMmExYTY5OTY0YmViOSksIEMoMTY3NTc2NmY0ODAy
MjliNSksCi0gICAgIEMoMjE2ZTFkNmM4NmNiNTI0YyksIEMoZDAxY2Y2ZmQ0ZjQwNjVjMCksIEMo
ZmZmYTRlYzViNDgyZWEwZiksCi0gICAgIEMoYTBlMjBlZTZhNTQwNGFjMSksIEMoMjE2ZTFkNmM4
NmNiNTI0YyksIEMoZDAxY2Y2ZmQ0ZjQwNjVjMCksCi0gICAgIEMoZmZmYTRlYzViNDgyZWEwZiks
IEMoYTBlMjBlZTZhNTQwNGFjMSksIEMoYzFiMDM3ZTRlZWJhZjg1ZSksCi0gICAgIEMoNjM0ZTNk
N2MzZWJmODllYiksIEMoYmNkYTk3MjM1OGM2N2QxKSwgQyhmZDEzNTIxODFlNWI4NTc4KSwgQyg5
NjBhNGQwNyl9LAorICAgICBDKDk2MGE0ZDA3KX0sCiAgICAge0MoMzQ4MTc2Y2EyZmEyZmRkMiks
IEMoM2E4OWM1MTRjYzM2MGMyZCksIEMoOWY5MGI4YWZiMzE4ZDZkMCksCi0gICAgIEMoYmNlZWUw
N2MxMWE5YWMzMCksIEMoMmUyZDQ3ZGZmOGU3N2ViNyksIEMoMTFhMzk0Y2Q3YjZkNjE0YSksCi0g
ICAgIEMoMWQ3YzQxZDU0ZTE1Y2I0YSksIEMoYmNlZWUwN2MxMWE5YWMzMCksIEMoMmUyZDQ3ZGZm
OGU3N2ViNyksCi0gICAgIEMoMTFhMzk0Y2Q3YjZkNjE0YSksIEMoMWQ3YzQxZDU0ZTE1Y2I0YSks
IEMoMTViYWE1YWU3MzEyYjBmYyksCi0gICAgIEMoZjM5OGY1OTZjYzk4NDYzNSksIEMoOGFiOGZk
Zjg3YTY3ODhlOCksIEMoYjJiNWMxMjM0YWI0N2UyKSwgQyg5YWU5OThjNCl9LAorICAgICBDKDlh
ZTk5OGM0KX0sCiAgICAge0MoNGEzZDNkZmJiYWVhMTMwYiksIEMoNGUyMjFjOTIwZjYxZWQwMSks
IEMoNTUzZmQ2Y2QxMzA0NTMxZiksCi0gICAgIEMoYmQyYjMxYjU2MDgxNDNmZSksIEMoYWI3MTdh
MTBmMjU1NDg1MyksIEMoMjkzODU3ZjA0ZDE5NGQyMiksCi0gICAgIEMoZDUxYmU4ZmE4NmYyNTRm
MCksIEMoYmQyYjMxYjU2MDgxNDNmZSksIEMoYWI3MTdhMTBmMjU1NDg1MyksCi0gICAgIEMoMjkz
ODU3ZjA0ZDE5NGQyMiksIEMoZDUxYmU4ZmE4NmYyNTRmMCksIEMoMWVlZTM5ZTA3Njg2OTA3ZSks
Ci0gICAgIEMoNjM5MDM5ZmUwZThkMzA1MiksIEMoZDZlYzE0NzBjZWY5N2ZmKSwgQygzNzBjODJi
ODYwMDM0ZjBmKSwgQyg3NGUyMTc5ZCl9LAorICAgICBDKDc0ZTIxNzlkKX0sCiAgICAge0MoYjM3
MWY3NjhjZGY0ZWRiOSksIEMoYmRlZjJhY2U2ZDJkZTBmMCksIEMoZTA1YjQxMDBmN2YxYmFlYyks
Ci0gICAgIEMoYjllMGQ0MTViNGViZDUzNCksIEMoYzk3YzJhMjdlZmFhMzNkNyksIEMoNTkxY2Ri
MzVmODRlZjlkYSksCi0gICAgIEMoYTU3ZDAyZDBlOGUzNzU2YyksIEMoYjllMGQ0MTViNGViZDUz
NCksIEMoYzk3YzJhMjdlZmFhMzNkNyksCi0gICAgIEMoNTkxY2RiMzVmODRlZjlkYSksIEMoYTU3
ZDAyZDBlOGUzNzU2YyksIEMoMjNmNTVmMTJkN2M1Yzg3YiksCi0gICAgIEMoNGM3Y2EwZmUyMzIy
MTEwMSksIEMoZGJjMzAyMDQ4MDMzNDU2NCksIEMoZDk4NTk5MmYzMmMyMzZiMSksCiAgICAgIEMo
ZWU5YmFlMjUpfSwKLSAgICB7Qyg3YTFkMmU5NjkzNGY2MWYpLCBDKGViMTc2MGFlNmFmN2Q5NjEp
LCBDKDg4N2ViMGRhMDYzMDA1ZGYpLAotICAgICBDKDIyMjhkNjcyNWUzMWI4YWIpLCBDKDliOThm
N2U0ZDAxNDJlNzApLCBDKGI2YThjMjExNWI4ZTBmZTcpLAotICAgICBDKGI1OTFlMmY1YWI5Yjk0
YjEpLCBDKDIyMjhkNjcyNWUzMWI4YWIpLCBDKDliOThmN2U0ZDAxNDJlNzApLAotICAgICBDKGI2
YThjMjExNWI4ZTBmZTcpLCBDKGI1OTFlMmY1YWI5Yjk0YjEpLCBDKDZjMWZlYWE4MDY1MzE4ZTAp
LAotICAgICBDKDRlN2UyY2EyMWMyZTgxZmIpLCBDKGU5ZmU1ZDhjZTc5OTNjNDUpLCBDKGVlNDEx
ZmEyZjEyY2Y4ZGYpLAotICAgICBDKGI2NmVkZjEwKX0sCisgICAge0MoN2ExZDJlOTY5MzRmNjFm
KSwgQyhlYjE3NjBhZTZhZjdkOTYxKSwgQyg4ODdlYjBkYTA2MzAwNWRmKSwgQyhiNjZlZGYxMCl9
LAogICAgIHtDKDhiZTUzZDQ2NmQ0NzI4ZjIpLCBDKDg2YTVhYzhlMGQ0MTY2NDApLCBDKDk4NGFh
NDY0Y2RiNWM4YmIpLAotICAgICBDKDg3MDQ5ZTY4ZjVkMzhlNTkpLCBDKDdkOGNlNDRlYzZiZDc3
NTEpLCBDKGNjMjhkMDhhYjQxNDgzOWMpLAotICAgICBDKDZjOGYwYmQzNGZlODQzZTMpLCBDKDg3
MDQ5ZTY4ZjVkMzhlNTkpLCBDKDdkOGNlNDRlYzZiZDc3NTEpLAotICAgICBDKGNjMjhkMDhhYjQx
NDgzOWMpLCBDKDZjOGYwYmQzNGZlODQzZTMpLCBDKGI4NDk2ZGNkYzAxZjNlNDcpLAotICAgICBD
KDJmMDMxMjVjMjgyYWMyNiksIEMoODJhODc5N2JhM2Y1ZWYwNyksIEMoN2M5NzdhNGQxMGJmNTJi
OCksIEMoZDYyMDk3MzcpfSwKLSAgICB7Qyg4Mjk2NzdlYjAzYWJmMDQyKSwgQyg0M2NhZDAwNGI2
YmMyYzApLCBDKGYyZjIyNDc1NjgwMzk3MWEpLAotICAgICBDKDk4ZDBkYmY3OTY0ODAxODcpLCBD
KGZiY2I1ZjNlMWJlZjU3NDIpLCBDKDVhZjJhMDQ2M2JmNmU5MjEpLAotICAgICBDKGFkOTU1NWJm
MDEyMGIzYTMpLCBDKDk4ZDBkYmY3OTY0ODAxODcpLCBDKGZiY2I1ZjNlMWJlZjU3NDIpLAotICAg
ICBDKDVhZjJhMDQ2M2JmNmU5MjEpLCBDKGFkOTU1NWJmMDEyMGIzYTMpLCBDKDI4M2UzOWIzZGM5
OWY0NDcpLAotICAgICBDKGJlZGFhMWE0YTAyNTBjMjgpLCBDKDlkNTA1NDY2MjRmZjlhNTcpLCBD
KDRhYmFmNTIzZDFjMDkwZjYpLCBDKGI5OTRhODgpfSwKLSAgICB7Qyg3NTQ0MzViYWUzNDk2ZmMp
LCBDKDU3MDdmYzAwNmYwOTRkY2YpLCBDKDg5NTFjODZhYjE5ZDhlNDApLAotICAgICBDKDU3YzUy
MDhlOGYwMjFhNzcpLCBDKGY3NjUzZmJiNjljZDkyNzYpLCBDKGE0ODQ0MTBhZjIxZDc1Y2IpLAot
ICAgICBDKGYxOWI2ODQ0YjNkNjI3ZTgpLCBDKDU3YzUyMDhlOGYwMjFhNzcpLCBDKGY3NjUzZmJi
NjljZDkyNzYpLAotICAgICBDKGE0ODQ0MTBhZjIxZDc1Y2IpLCBDKGYxOWI2ODQ0YjNkNjI3ZTgp
LCBDKGYzNzQwMGZjM2ZmZDk1MTQpLAotICAgICBDKDM2YWUwZDgyMTczNGVkZmQpLCBDKDVmMzc4
MjBhZjFmMWYzMDYpLCBDKGJlNjM3ZDQwZTZhNWFkMCksIEMoYTA1ZDQzYzApfSwKKyAgICAgQyhk
NjIwOTczNyl9LAorICAgIHtDKDgyOTY3N2ViMDNhYmYwNDIpLCBDKDQzY2FkMDA0YjZiYzJjMCks
IEMoZjJmMjI0NzU2ODAzOTcxYSksIEMoYjk5NGE4OCl9LAorICAgIHtDKDc1NDQzNWJhZTM0OTZm
YyksIEMoNTcwN2ZjMDA2ZjA5NGRjZiksIEMoODk1MWM4NmFiMTlkOGU0MCksIEMoYTA1ZDQzYzAp
fSwKICAgICB7QyhmZGE5ODc3ZWE4ZTM4MDVmKSwgQygzMWU4NjhiNmZmZDUyMWI3KSwgQyhiMDhj
OTA2ODFmYjZhMGZkKSwKLSAgICAgQyg2ODExMGE3ZjgzZjVkM2ZmKSwgQyg2ZDc3ZTA0NTkwMWI4
NWE4KSwgQyg4NGVmNjgxMTEzMDM2ZDhiKSwKLSAgICAgQygzYjlmOGUzOTI4ZjU2MTYwKSwgQyg2
ODExMGE3ZjgzZjVkM2ZmKSwgQyg2ZDc3ZTA0NTkwMWI4NWE4KSwKLSAgICAgQyg4NGVmNjgxMTEz
MDM2ZDhiKSwgQygzYjlmOGUzOTI4ZjU2MTYwKSwgQyhmYzhiN2Y1NmMxMzA4MzUpLAotICAgICBD
KGExMWYzZTgwMDYzOGU4NDEpLCBDKGQ5NTcyMjY3ZjVjZjI4YzEpLCBDKDc4OTdjODE0OTgwM2Yy
YWEpLAogICAgICBDKGM3OWY3M2E4KX0sCiAgICAge0MoMmUzNmY1MjNjYThmNWViNSksIEMoOGIy
MjkzMmY4OWIyNzUxMyksIEMoMzMxY2Q2ZWNiZmFkYzFiYiksCi0gICAgIEMoZDFiZmU0ZGYxMmIw
NGNiZiksIEMoZjU4YzE3MjQzZmQ2Mzg0MiksIEMoM2E0NTNjZGJhODBhNjBhZiksCi0gICAgIEMo
NTczN2IyY2E3NDcwZWE5NSksIEMoZDFiZmU0ZGYxMmIwNGNiZiksIEMoZjU4YzE3MjQzZmQ2Mzg0
MiksCi0gICAgIEMoM2E0NTNjZGJhODBhNjBhZiksIEMoNTczN2IyY2E3NDcwZWE5NSksIEMoNTRk
NDRhM2Y0NDc3MDMwYyksCi0gICAgIEMoODE2OGUwMmQ0ODY5YWE3ZiksIEMoNzdmMzgzYTE3Nzc4
NTU5ZCksIEMoOTVlMTczN2Q3N2EyNjhmYyksCiAgICAgIEMoYTQ5MGFmZjUpfSwKICAgICB7Qygy
MWEzNzhlZjc2ODI4MjA4KSwgQyhhNWMxMzAzN2ZhODQxZGEyKSwgQyg1MDZkMjJhNTNmYmU5ODEy
KSwKLSAgICAgQyg2MWM5Yzk1ZDkxMDE3ZGE1KSwgQygxNmY3YzgzYmE2OGY1Mjc5KSwgQyg5YzA2
MTliMDgwOGQwNWY3KSwKLSAgICAgQyg4M2MxMTdjZTRlNmI3MGEzKSwgQyg2MWM5Yzk1ZDkxMDE3
ZGE1KSwgQygxNmY3YzgzYmE2OGY1Mjc5KSwKLSAgICAgQyg5YzA2MTliMDgwOGQwNWY3KSwgQyg4
M2MxMTdjZTRlNmI3MGEzKSwgQyhjZmI0YzhhZjdmZDAxNDEzKSwKLSAgICAgQyhmZGVmMDRlNjAy
ZTcyMjk2KSwgQyhlZDYxMjRkMzM3ODg5YjEpLCBDKDQ5MTljODY3MDdiODMwZGEpLCBDKGRmYWQ2
NWI0KX0sCi0gICAge0MoY2NkZDU2MDAwNTRiMTZjYSksIEMoZjc4ODQ2ZTg0MjA0Y2I3YiksIEMo
MWY5ZmFlYzgyYzI0ZWFjOSksCi0gICAgIEMoNTg2MzQwMDRjN2IyZDE5YSksIEMoMjRiYjVmNTFl
ZDNiOTA3MyksIEMoNDY0MDlkZTAxODAzM2QwMCksCi0gICAgIEMoNGE5ODA1ZWVkNWFjODAyZSks
IEMoNTg2MzQwMDRjN2IyZDE5YSksIEMoMjRiYjVmNTFlZDNiOTA3MyksCi0gICAgIEMoNDY0MDlk
ZTAxODAzM2QwMCksIEMoNGE5ODA1ZWVkNWFjODAyZSksIEMoZTE4ZGU4ZGIzMDZiYWY4MiksCi0g
ICAgIEMoNDZiYmY3NWYxZmEwMjVmZiksIEMoNWZhZjJmYjA5YmUwOTQ4NyksIEMoM2ZiYzYyYmQ0
ZTU1OGZiMyksIEMoMWQwN2RmYil9LAorICAgICBDKGRmYWQ2NWI0KX0sCisgICAge0MoY2NkZDU2
MDAwNTRiMTZjYSksIEMoZjc4ODQ2ZTg0MjA0Y2I3YiksIEMoMWY5ZmFlYzgyYzI0ZWFjOSksIEMo
MWQwN2RmYil9LAogICAgIHtDKDc4NTQ0NjhmNGUwY2FiZDApLCBDKDNhM2Y2YjRmMDk4ZDA2OTIp
LCBDKGFlMjQyM2VjNzc5OWQzMGQpLAotICAgICBDKDI5YzM1MjllYjE2NWVlYmEpLCBDKDQ0M2Rl
MzcwM2I2NTdjMzUpLCBDKDY2YWNiY2UzMWFlMWJjOGQpLAotICAgICBDKDFhY2M5OWVmZmUxZDU0
N2UpLCBDKDI5YzM1MjllYjE2NWVlYmEpLCBDKDQ0M2RlMzcwM2I2NTdjMzUpLAotICAgICBDKDY2
YWNiY2UzMWFlMWJjOGQpLCBDKDFhY2M5OWVmZmUxZDU0N2UpLCBDKGNmMDdmOGE1NzkwNjU3M2Qp
LAotICAgICBDKDMxYmFmYjBiYmI5YTg2ZTcpLCBDKDQwYzY5NDkyNzAyYTkzNDYpLCBDKDdkZjYx
ZmRhYTBiODU4YWYpLAogICAgICBDKDQxNmRmOWEwKX0sCiAgICAge0MoN2Y4OGRiNTM0NmQ4Zjk5
NyksIEMoODhlYWM5YWFjYzY1Mzc5OCksIEMoNjhhNGQwMjk1ZjhlZWZhMSksCi0gICAgIEMoYWU1
OWNhODZmNGMzMzIzZCksIEMoMjU5MDZjMDk5MDZkNWM0YyksIEMoOGRkMmFhMGMwYTY1ODRhZSks
Ci0gICAgIEMoMjMyYTdkOTZiMzhmNDBlOSksIEMoYWU1OWNhODZmNGMzMzIzZCksIEMoMjU5MDZj
MDk5MDZkNWM0YyksCi0gICAgIEMoOGRkMmFhMGMwYTY1ODRhZSksIEMoMjMyYTdkOTZiMzhmNDBl
OSksIEMoODk4NmVlMDBhMmVkMDA0MiksCi0gICAgIEMoYzQ5YWU3ZTQyOGM4YTdkMSksIEMoYjdk
ZDgyODA3MTNhYzljMiksIEMoZTAxODcyMGFlZDFlYmMyOCksCiAgICAgIEMoMWY4ZmI5Y2MpfSwK
ICAgICB7QyhiYjNmYjVmYjAxZDYwZmNmKSwgQygxYjdjYzA4NDdhMjE1ZWI2KSwgQygxMjQ2Yzk5
NDQzNzk5MGExKSwKLSAgICAgQyhkNGVkYzk1NGMwN2NkOGYzKSwgQygyMjRmNDdlN2MwMGEzMGFi
KSwgQyhkNWFkN2FkN2Y0MWVmMGM2KSwKLSAgICAgQyg1OWUwODkyODFkODY5ZmQ3KSwgQyhkNGVk
Yzk1NGMwN2NkOGYzKSwgQygyMjRmNDdlN2MwMGEzMGFiKSwKLSAgICAgQyhkNWFkN2FkN2Y0MWVm
MGM2KSwgQyg1OWUwODkyODFkODY5ZmQ3KSwgQyhmMjkzNDBkMDdhMTRiNmYxKSwKLSAgICAgQyhj
ODdjNWVmNzZkOWM0ZWYzKSwgQyg0NjMxMTg3OTQxOTNhOWEpLCBDKDI5MjJkY2IwNTQwZjBkYmMp
LCBDKDdhYmY0OGUzKX0sCisgICAgIEMoN2FiZjQ4ZTMpfSwKICAgICB7QygyZTc4M2UxNzYxYWNk
ODRkKSwgQygzOTE1ODA0MmJhYzk3NWEwKSwgQygxY2QyMWM1YTgwNzExODhkKSwKLSAgICAgQyhi
MWI3ZWM0NGY5MzAyMTc2KSwgQyg1Y2I0NzY0NTBkYzBjMjk3KSwgQyhkYzVlZjY1MjUyMWVmNmEy
KSwKLSAgICAgQygzY2M3OWE5ZTMzNGUxZjg0KSwgQyhiMWI3ZWM0NGY5MzAyMTc2KSwgQyg1Y2I0
NzY0NTBkYzBjMjk3KSwKLSAgICAgQyhkYzVlZjY1MjUyMWVmNmEyKSwgQygzY2M3OWE5ZTMzNGUx
Zjg0KSwgQyg3NjllMmEyODNkYmNjNjUxKSwKLSAgICAgQyg5ZjI0YjEwNWM4NTExZDNmKSwgQyhj
MzFjMTU1NzVkZTJmMjdlKSwgQyhlY2ZlY2YzMmMzYWUyZDY2KSwKICAgICAgQyhkZWE0ZTNkZCl9
LAogICAgIHtDKDM5MjA1ODI1MWNmMjJhY2MpLCBDKDk0NGVjNDQ3NWVhZDQ2MjApLCBDKGIzMzBh
MTBiNWNiOTQxNjYpLAotICAgICBDKDU0YmM5YmVlN2NiZTE3NjcpLCBDKDQ4NTgyMGJkYmU0NDI0
MzEpLCBDKDU0ZDYxMjBlYTI5NzJlOTApLAotICAgICBDKGY0MzdhMDM0MWYyOWI3MmEpLCBDKDU0
YmM5YmVlN2NiZTE3NjcpLCBDKDQ4NTgyMGJkYmU0NDI0MzEpLAotICAgICBDKDU0ZDYxMjBlYTI5
NzJlOTApLCBDKGY0MzdhMDM0MWYyOWI3MmEpLCBDKDhmMzA4ODVjNzg0ZDU3MDQpLAotICAgICBD
KGFhOTUzNzZiMTZjNzkwNmEpLCBDKGU4MjY5MjhjZmFmOTNkYzMpLCBDKDIwZThmNTRkMWMxNmQ3
ZDgpLAogICAgICBDKGM2MDY0ZjIyKX0sCi0gICAge0MoYWRmNWMxZTVkNjQxOTk0NyksIEMoMmE5
NzQ3YmM2NTlkMjhhYSksIEMoOTVjNWI4Y2IxZjVkNjJjKSwKLSAgICAgQyg4MDk3M2VhNTMyYjBm
MzEwKSwgQyhhNDcxODI5YWE5YzE3ZGQ5KSwgQyhjMmZmMzQ3OTM5NDgwNGFiKSwKLSAgICAgQyg2
YmY0NGY4NjA2NzUzNjM2KSwgQyg4MDk3M2VhNTMyYjBmMzEwKSwgQyhhNDcxODI5YWE5YzE3ZGQ5
KSwKLSAgICAgQyhjMmZmMzQ3OTM5NDgwNGFiKSwgQyg2YmY0NGY4NjA2NzUzNjM2KSwgQyg1MTg0
ZDI5NzNlNmRkODI3KSwKLSAgICAgQygxMjFiOTYzNjlhMzMyZDlhKSwgQyg1YzI1ZDM0NzVhYjY5
ZTUwKSwgQygyNmQyOTYxZDYyODg0MTY4KSwKLSAgICAgQyg3NDNiZWQ5Yyl9LAorICAgIHtDKGFk
ZjVjMWU1ZDY0MTk5NDcpLCBDKDJhOTc0N2JjNjU5ZDI4YWEpLCBDKDk1YzViOGNiMWY1ZDYyYyks
IEMoNzQzYmVkOWMpfSwKICAgICB7Qyg2YmMxZGIyYzJiZWU1YWJhKSwgQyhlNjNiMGVkNjM1MzA3
Mzk4KSwgQyg3YjJlY2ExMTFmMzBkYmJjKSwKLSAgICAgQygyMzBkMmIzZTQ3ZjA5ODMwKSwgQyhl
Yzg2MjRhODIxYzFjYWY0KSwgQyhlYTZlYzQxMWNkYmYxY2IxKSwKLSAgICAgQyg1ZjM4YWU4MmFm
MzY0ZTI3KSwgQygyMzBkMmIzZTQ3ZjA5ODMwKSwgQyhlYzg2MjRhODIxYzFjYWY0KSwKLSAgICAg
QyhlYTZlYzQxMWNkYmYxY2IxKSwgQyg1ZjM4YWU4MmFmMzY0ZTI3KSwgQyhhNTE5ZWY1MTVlYTcx
ODdjKSwKLSAgICAgQyg2YmFkNWVmYTdlYmFlMDVmKSwgQyg3NDhhYmFjYjExYTc0YTYzKSwgQyhh
MjhlZWY5NjNkMTM5NmViKSwKICAgICAgQyhmY2UyNTRkNSl9LAogICAgIHtDKGIwMGY4OTgyMjll
ZmE1MDgpLCBDKDgzYjc1OTBhZDdmNjk4NWMpLCBDKDI3ODBlNzBhMDU5MmU0MWQpLAotICAgICBD
KDcxMjI0MTNiZGJjOTQwMzUpLCBDKGU3ZjkwZmFlMzNiZjc3NjMpLCBDKDRiNmJkMGZiMzBiMTIz
ODcpLAotICAgICBDKDU1NzM1OWMwYzQ0ZjQ4Y2EpLCBDKDcxMjI0MTNiZGJjOTQwMzUpLCBDKGU3
ZjkwZmFlMzNiZjc3NjMpLAotICAgICBDKDRiNmJkMGZiMzBiMTIzODcpLCBDKDU1NzM1OWMwYzQ0
ZjQ4Y2EpLCBDKGQ1NjU2YzNkNmJjNWYwZCksCi0gICAgIEMoOTgzZmY4ZTVlNzg0ZGE5OSksIEMo
NjI4NDc5NjcxYjQ0NWJmKSwgQyhlMTc5YTFlMjdjZTY4ZjVkKSwgQyhlNDdlYzlkMSl9LAorICAg
ICBDKGU0N2VjOWQxKX0sCiAgICAge0MoYjU2ZWI3NjljZTBkOWE4YyksIEMoY2UxOTYxMTdiZmJj
YWYwNCksIEMoYjI2YzNjMzc5N2Q2NjE2NSksCi0gICAgIEMoNWVkMTIzMzhmNjMwYWI3NiksIEMo
ZmFiMTlmY2IzMTkxMTZkKSwgQygxNjdmNWY0MmI1MjE3MjRiKSwKLSAgICAgQyhjNGFhNTZjNDA5
NTY4ZDc0KSwgQyg1ZWQxMjMzOGY2MzBhYjc2KSwgQyhmYWIxOWZjYjMxOTExNmQpLAotICAgICBD
KDE2N2Y1ZjQyYjUyMTcyNGIpLCBDKGM0YWE1NmM0MDk1NjhkNzQpLCBDKDc1ZmZmNGI0MmY4ZTk3
NzgpLAotICAgICBDKDk0MjE4Zjk0NzEwYzFlYTMpLCBDKGI3YjA1ZWZiNzM4YjA2YTYpLCBDKDgz
ZmZmMmRlYWJmOWNkMyksIEMoMzM0YTE0NWMpfSwKKyAgICAgQygzMzRhMTQ1Yyl9LAogICAgIHtD
KDcwYzA2Mzc2NzViOTQxNTApLCBDKDI1OWUxNjY5MzA1YjBhMTUpLCBDKDQ2ZTFkZDlmZDM4N2E1
OGQpLAotICAgICBDKGZjYTRlNWJjOTI5Mjc4OGUpLCBDKGNkNTA5ZGMxZmFjY2U0MWMpLCBDKGJi
YmE1NzVhNTlkODJmZSksCi0gICAgIEMoNGUyZTcxYzE1YjQ1ZDRkMyksIEMoZmNhNGU1YmM5Mjky
Nzg4ZSksIEMoY2Q1MDlkYzFmYWNjZTQxYyksCi0gICAgIEMoYmJiYTU3NWE1OWQ4MmZlKSwgQyg0
ZTJlNzFjMTViNDVkNGQzKSwgQyg1ZGM1NDU4MmVhZDk5OWMpLAotICAgICBDKDcyNjEyZDE1NzE5
NjNjNmYpLCBDKDMwMzE4YTlkMmQzZDE4MjkpLCBDKDc4NWRkMDBmNGNjOWM5YTApLAogICAgICBD
KGFkZWMxZTNjKX0sCiAgICAge0MoNzRjMGI4YTY4MjFmYWFmZSksIEMoYWJhYzM5ZDc0OTEzNzBl
NyksIEMoZmFmMGIyYTQ4YTRlNmFlZCksCi0gICAgIEMoOTY3ZTk3MGRmOTY3M2QyYSksIEMoZDQ2
NTI0N2NmZmE0MTVjMCksIEMoMzNhMWRmMGNhMTEwNzcyMiksCi0gICAgIEMoNDlmYzJhMTBhZGNl
NGEzMiksIEMoOTY3ZTk3MGRmOTY3M2QyYSksIEMoZDQ2NTI0N2NmZmE0MTVjMCksCi0gICAgIEMo
MzNhMWRmMGNhMTEwNzcyMiksIEMoNDlmYzJhMTBhZGNlNGEzMiksIEMoYzU3MDdlMDc5YTI4NDMw
OCksCi0gICAgIEMoNTczMDI4MjY2NjM1ZGRhNiksIEMoZjc4NmY1ZWVlNjEyN2ZhMCksIEMoYjMw
ZDc5Y2ViZmI1MTI2NiksCiAgICAgIEMoZjZhOWZiZjgpfSwKICAgICB7Qyg1ZmI1ZTQ4YWM3Yjdm
YTRmKSwgQyhhOTYxNzBmMDhmNWFjYmM3KSwgQyhiYmY1YzYzZDRmNTJhMWU1KSwKLSAgICAgQyg2
Y2MwOWU2MDcwMDU2M2U5KSwgQyhkMThmMjMyMjFlOTY0NzkxKSwgQyhmZmMyM2VlZWY3YWYyNmVi
KSwKLSAgICAgQyg2OTNhOTU0YTM2MjJhMzE1KSwgQyg4MTUzMDhhMzJhOWIwZGFmKSwgQyhlZmIy
YWIyN2JmNmZkMGJkKSwKLSAgICAgQyg5ZjFmZmMwOTg2MTExMTE4KSwgQyhmOWEzYWExNzc4ZWEz
OTg1KSwgQyg2OThmZTU0YjJiOTM5MzNiKSwKLSAgICAgQyhkYWNjMmIyODQwNGQwZjEwKSwgQyg4
MTUzMDhhMzJhOWIwZGFmKSwgQyhlZmIyYWIyN2JmNmZkMGJkKSwKICAgICAgQyg1Mzk4MjEwYyl9
LAogfTsKIAogdm9pZCBUZXN0VW5jaGFuZ2luZyhjb25zdCB1aW50NjRfdCogZXhwZWN0ZWQsIGlu
dCBvZmZzZXQsIGludCBsZW4pIHsKLSAgY29uc3QgdWludDEyOCB1ID0gQ2l0eUhhc2gxMjgoZGF0
YSArIG9mZnNldCwgbGVuKTsKLSAgY29uc3QgdWludDEyOCB2ID0gQ2l0eUhhc2gxMjhXaXRoU2Vl
ZChkYXRhICsgb2Zmc2V0LCBsZW4sIGtTZWVkMTI4KTsKICAgRVhQRUNUX0VRKGV4cGVjdGVkWzBd
LCBDaXR5SGFzaDY0KGRhdGEgKyBvZmZzZXQsIGxlbikpOwotICBFWFBFQ1RfRVEoZXhwZWN0ZWRb
MTVdLCBDaXR5SGFzaDMyKGRhdGEgKyBvZmZzZXQsIGxlbikpOworICBFWFBFQ1RfRVEoZXhwZWN0
ZWRbM10sIENpdHlIYXNoMzIoZGF0YSArIG9mZnNldCwgbGVuKSk7CiAgIEVYUEVDVF9FUShleHBl
Y3RlZFsxXSwgQ2l0eUhhc2g2NFdpdGhTZWVkKGRhdGEgKyBvZmZzZXQsIGxlbiwga1NlZWQwKSk7
CiAgIEVYUEVDVF9FUShleHBlY3RlZFsyXSwKICAgICAgICAgICAgIENpdHlIYXNoNjRXaXRoU2Vl
ZHMoZGF0YSArIG9mZnNldCwgbGVuLCBrU2VlZDAsIGtTZWVkMSkpOwotICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRbM10sIFVpbnQxMjhMb3c2NCh1KSk7Ci0gIEVYUEVDVF9FUShleHBlY3RlZFs0XSwgVWlu
dDEyOEhpZ2g2NCh1KSk7Ci0gIEVYUEVDVF9FUShleHBlY3RlZFs1XSwgVWludDEyOExvdzY0KHYp
KTsKLSAgRVhQRUNUX0VRKGV4cGVjdGVkWzZdLCBVaW50MTI4SGlnaDY0KHYpKTsKLSNpZmRlZiBf
X1NTRTRfMl9fCi0gIGNvbnN0IHVpbnQxMjggeSA9IENpdHlIYXNoQ3JjMTI4KGRhdGEgKyBvZmZz
ZXQsIGxlbik7Ci0gIGNvbnN0IHVpbnQxMjggeiA9IENpdHlIYXNoQ3JjMTI4V2l0aFNlZWQoZGF0
YSArIG9mZnNldCwgbGVuLCBrU2VlZDEyOCk7Ci0gIHVpbnQ2NF90IGNyYzI1Nl9yZXN1bHRzWzRd
OwotICBDaXR5SGFzaENyYzI1NihkYXRhICsgb2Zmc2V0LCBsZW4sIGNyYzI1Nl9yZXN1bHRzKTsK
LSAgRVhQRUNUX0VRKGV4cGVjdGVkWzddLCBVaW50MTI4TG93NjQoeSkpOwotICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRbOF0sIFVpbnQxMjhIaWdoNjQoeSkpOwotICBFWFBFQ1RfRVEoZXhwZWN0ZWRbOV0s
IFVpbnQxMjhMb3c2NCh6KSk7Ci0gIEVYUEVDVF9FUShleHBlY3RlZFsxMF0sIFVpbnQxMjhIaWdo
NjQoeikpOwotICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgIEVYUEVDVF9FUShl
eHBlY3RlZFsxMSArIGldLCBjcmMyNTZfcmVzdWx0c1tpXSk7Ci0gIH0KLSNlbmRpZgogfQogCiBU
RVNUKENpdHlIYXNoVGVzdCwgVW5jaGFuZ2luZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9p
bnRlcm5hbC9oYXNoLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNoLmNjCmluZGV4IDRiZjY0
MDk2ZTdlLi40YWI3YTlmOGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNo
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9o
YXNoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2guaAppbmRleCA3ODIxN2QyZmU3Ni4uNGZm
NGExMjZmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0yMjEsNyArMjIxLDkgQEAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19lbnVtPEVudW0+Ojp2YWx1ZSwgSD46OnR5cGUgQWJzbEhhc2hWYWx1ZSgKIH0KIC8vIEFi
c2xIYXNoVmFsdWUoKSBmb3IgaGFzaGluZyBmbG9hdGluZy1wb2ludCB2YWx1ZXMKIHRlbXBsYXRl
IDx0eXBlbmFtZSBILCB0eXBlbmFtZSBGbG9hdD4KLXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8RmxvYXQ+Ojp2YWx1ZSwgSD46OnR5cGUKK3R5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxGbG9hdCwgZmxvYXQ+Ojp2YWx1ZSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTxGbG9hdCwgZG91YmxlPjo6dmFsdWUs
CisgICAgICAgICAgICAgICAgICAgICAgICBIPjo6dHlwZQogQWJzbEhhc2hWYWx1ZShIIGhhc2hf
c3RhdGUsIEZsb2F0IHZhbHVlKSB7CiAgIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5dGVz
KHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPT0gMCA/IDAgOiB2YWx1ZSk7CkBAIC0yMzEsOCArMjMzLDkgQEAgQWJzbEhhc2hW
YWx1ZShIIGhhc2hfc3RhdGUsIEZsb2F0IHZhbHVlKSB7CiAvLyBGb3IgZXhhbXBsZSwgaW4geDg2
IHNpemVvZihsb25nIGRvdWJsZSk9PTE2IGJ1dCBpdCBvbmx5IHJlYWxseSB1c2VzIDgwLWJpdHMK
IC8vIG9mIGl0LiBUaGlzIG1lYW5zIHdlIGNhbid0IHVzZSBoYXNoX2J5dGVzIG9uIGEgbG9uZyBk
b3VibGUgYW5kIGhhdmUgdG8KIC8vIGNvbnZlcnQgaXQgdG8gc29tZXRoaW5nIGVsc2UgZmlyc3Qu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KLUggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGxv
bmcgZG91YmxlIHZhbHVlKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgTG9uZ0Rv
dWJsZT4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxMb25nRG91YmxlLCBs
b25nIGRvdWJsZT46OnZhbHVlLCBIPjo6dHlwZQorQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUs
IExvbmdEb3VibGUgdmFsdWUpIHsKICAgY29uc3QgaW50IGNhdGVnb3J5ID0gc3RkOjpmcGNsYXNz
aWZ5KHZhbHVlKTsKICAgc3dpdGNoIChjYXRlZ29yeSkgewogICAgIGNhc2UgRlBfSU5GSU5JVEU6
CkBAIC0yNjQsNyArMjY3LDEyIEBAIEggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGxvbmcg
ZG91YmxlIHZhbHVlKSB7CiAvLyBBYnNsSGFzaFZhbHVlKCkgZm9yIGhhc2hpbmcgcG9pbnRlcnMK
IHRlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgogSCBBYnNsSGFzaFZhbHVlKEggaGFz
aF9zdGF0ZSwgVCogcHRyKSB7Ci0gIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5dGVzKHN0
ZDo6bW92ZShoYXNoX3N0YXRlKSwgcHRyKTsKKyAgYXV0byB2ID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KHB0cik7CisgIC8vIER1ZSB0byBhbGlnbm1lbnQsIHBvaW50ZXJzIHRlbmQgdG8g
aGF2ZSBsb3cgYml0cyBhcyB6ZXJvLCBhbmQgdGhlIG5leHQgZmV3CisgIC8vIGJpdHMgZm9sbG93
IGEgcGF0dGVybiBzaW5jZSB0aGV5IGFyZSBhbHNvIG11bHRpcGxlcyBvZiBzb21lIGJhc2UgdmFs
dWUuCisgIC8vIE1peGluZyB0aGUgcG9pbnRlciB0d2ljZSBoZWxwcyBwcmV2ZW50IHN0dWNrIGxv
dyBiaXRzIGZvciBjZXJ0YWluIGFsaWdubWVudAorICAvLyB2YWx1ZXMuCisgIHJldHVybiBIOjpj
b21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdiwgdik7CiB9CiAKIC8vIEFic2xIYXNoVmFs
dWUoKSBmb3IgaGFzaGluZyBudWxscHRyX3QKQEAgLTQ5NCw2ICs1MDIsMTUgQEAgQWJzbEhhc2hW
YWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IGFic2w6OnZhcmlhbnQ8VC4uLj4mIHYpIHsKICAgfQog
ICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHYuaW5kZXgoKSk7CiB9
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsSGFzaFZhbHVlIGZvciBPdGhlciBU
eXBlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFz
aGluZyBzdGQ6OmJpdHNldCBpcyBub3QgZGVmaW5lZCwgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcwor
Ly8gZm9yIHZlY3Rvcjxib29sPiAoc2VlIHN0ZDo6dmVjdG9yIGFib3ZlKTogSXQgZG9lcyBub3Qg
ZXhwb3NlIHRoZSByYXcgYnl0ZXMsCisvLyBhbmQgYSBmYWxsYmFjayB0byBzdGQ6Omhhc2g8PiBp
cyBtb3N0IGxpa2VseSBmYXN0ZXIuCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIGhh
c2hfcmFuZ2Vfb3JfYnl0ZXMoKQpAQCAtNTE4LDUzICs1MzUsMjIgQEAgaGFzaF9yYW5nZV9vcl9i
eXRlcyhIIGhhc2hfc3RhdGUsIGNvbnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKSB7CiAgIHJldHVy
biBoYXNoX3N0YXRlOwogfQogCi0vLyBJbnZva2VIYXNoVGFnCi0vLwotLy8gSW52b2tlSGFzaChI
LCBjb25zdCBUJikgaW52b2tlcyB0aGUgYXBwcm9wcmlhdGUgaGFzaCBpbXBsZW1lbnRhdGlvbiBm
b3IgYQotLy8gaGFzaGVyIG9mIHR5cGUgYEhgIGFuZCBhIHZhbHVlIG9mIHR5cGUgYFRgLiBJZiBg
VGAgaXMgbm90IGhhc2hhYmxlLCB0aGVyZQotLy8gd2lsbCBiZSBubyBtYXRjaGluZyBvdmVybG9h
ZCBvZiBJbnZva2VIYXNoKCkuCi0vLyBOb3RlOiBTb21lIHBsYXRmb3JtcyAoZWcgTVNWQykgZG8g
bm90IHN1cHBvcnQgdGhlIGRldGVjdCBpZGlvbSBvbgotLy8gc3RkOjpoYXNoLiBJbiB0aG9zZSBw
bGF0Zm9ybXMgdGhlIGxhc3QgZmFsbGJhY2sgd2lsbCBiZSBzdGQ6Omhhc2ggYW5kCi0vLyBJbnZv
a2VIYXNoKCkgd2lsbCBhbHdheXMgaGF2ZSBhIHZhbGlkIG92ZXJsb2FkIGV2ZW4gaWYgc3RkOjpo
YXNoPFQ+IGlzIG5vdAotLy8gdmFsaWQuCi0vLwotLy8gV2UgdHJ5IHRoZSBmb2xsb3dpbmcgb3B0
aW9ucyBpbiBvcmRlcjoKLS8vICAgKiBJZiBpc191bmlxdWVseV9yZXByZXNlbnRlZCwgaGFzaCBi
eXRlcyBkaXJlY3RseS4KLS8vICAgKiBBREwgQWJzbEhhc2hWYWx1ZShILCBjb25zdCBUJikgY2Fs
bC4KLS8vICAgKiBzdGQ6Omhhc2g8VD4KLQotLy8gSW4gTVNWQyB3ZSBjYW4ndCBwcm9iZSBzdGQ6
Omhhc2ggb3Igc3RkZXh0OjpoYXNoIGJlY2F1c2UgaXQgdHJpZ2dlcnMgYQotLy8gc3RhdGljX2Fz
c2VydCBpbnN0ZWFkIG9mIGZhaWxpbmcgc3Vic3RpdHV0aW9uLgotI2lmIGRlZmluZWQoX01TQ19W
RVIpCi0jZGVmaW5lIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXyAwCi0jZWxzZSAgIC8v
IF9NU0NfVkVSCi0jZGVmaW5lIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXyAxCi0jZW5k
aWYgIC8vIF9NU0NfVkVSCi0KICNpZiBkZWZpbmVkKEFCU0xfSU5URVJOQUxfTEVHQUNZX0hBU0hf
TkFNRVNQQUNFKSAmJiBcCi0gICAgQUJTTF9IQVNIX0lOVEVSTkFMX0NBTl9QT0lTT05fCisgICAg
QUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNIX1NGSU5BRV9GUklFTkRMWV8KICNkZWZpbmUgQUJT
TF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfIDEKICNlbHNlCiAjZGVmaW5lIEFC
U0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXyAwCiAjZW5kaWYKIAotZW51bSBj
bGFzcyBJbnZva2VIYXNoVGFnIHsKLSAga1VuaXF1ZWx5UmVwcmVzZW50ZWQsCi0gIGtIYXNoVmFs
dWUsCi0jaWYgQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCi0gIGtMZWdh
Y3lIYXNoLAotI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFT
SF8KLSAga1N0ZEhhc2gsCi0gIGtOb25lCi19OwotCiAvLyBIYXNoU2VsZWN0CiAvLwogLy8gVHlw
ZSB0cmFpdCB0byBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIGhhc2ggaW1wbGVtZW50YXRpb24gdG8g
dXNlLgotLy8gSGFzaFNlbGVjdDxUPjo6dmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2YgSW52b2tlSGFz
aFRhZyB0aGF0IGluZGljYXRlcyB0aGUgYmVzdAotLy8gYXZhaWxhYmxlIGhhc2hpbmcgbWVjaGFu
aXNtLgotLy8gU2VlIGBOb3RlYCBhYm92ZSBhYm91dCBNU1ZDLgotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisvLyBIYXNoU2VsZWN0Ojp0eXBlPFQ+IHdpbGwgZ2l2ZSB0aGUgcHJvcGVyIGhhc2ggaW1w
bGVtZW50YXRpb24sIHRvIGJlIGludm9rZWQKKy8vIGFzOgorLy8gICBIYXNoU2VsZWN0Ojp0eXBl
PFQ+OjpJbnZva2Uoc3RhdGUsIHZhbHVlKQorLy8gQWxzbywgSGFzaFNlbGVjdDo6dHlwZTxUPjo6
dmFsdWUgaXMgYSBib29sZWFuIGVxdWFsIHRvIGB0cnVlYCBpZiB0aGVyZSBpcyBhCisvLyB2YWxp
ZCBgSW52b2tlYCBmdW5jdGlvbi4gVHlwZXMgdGhhdCBhcmUgbm90IGhhc2hhYmxlIHdpbGwgaGF2
ZSBhIDo6dmFsdWUgb2YKKy8vIGBmYWxzZWAuCiBzdHJ1Y3QgSGFzaFNlbGVjdCB7CiAgcHJpdmF0
ZToKICAgc3RydWN0IFN0YXRlIDogSGFzaFN0YXRlQmFzZTxTdGF0ZT4gewpAQCAtNTczLDk1ICs1
NTksNzUgQEAgc3RydWN0IEhhc2hTZWxlY3QgewogICAgIHVzaW5nIFN0YXRlOjpIYXNoU3RhdGVC
YXNlOjpjb21iaW5lX2NvbnRpZ3VvdXM7CiAgIH07CiAKLSAgLy8gYFByb2JlPFYsIFRhZz46OnZh
bHVlYCBldmFsdWF0ZXMgdG8gYFY8VD46OnZhbHVlYCBpZiBpdCBpcyBhIHZhbGlkCi0gIC8vIGV4
cHJlc3Npb24sIGFuZCBgZmFsc2VgIG90aGVyd2lzZS4KLSAgLy8gYFByb2JlPFYsIFRhZz46OnRh
Z2AgYWx3YXlzIGV2YWx1YXRlcyB0byBgVGFnYC4KLSAgdGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBl
bmFtZT4gY2xhc3MgViwgSW52b2tlSGFzaFRhZyBUYWc+Ci0gIHN0cnVjdCBQcm9iZSB7Ci0gICBw
cml2YXRlOgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxWPFU+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDA+Ci0gICAgc3RhdGljIHN0ZDo6dHJ1ZV90eXBl
IFRlc3QoaW50KTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgc3RkOjpm
YWxzZV90eXBlIFRlc3QoY2hhcik7Ci0KLSAgIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHBy
IEludm9rZUhhc2hUYWcga1RhZyA9IFRhZzsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFs
dWUgPSBkZWNsdHlwZSgKLSAgICAgICAgVGVzdDxhYnNsOjpyZW1vdmVfY29uc3RfdDxhYnNsOjpy
ZW1vdmVfcmVmZXJlbmNlX3Q8VD4+PigwKSk6OnZhbHVlOworICBzdHJ1Y3QgVW5pcXVlbHlSZXBy
ZXNlbnRlZFByb2JlIHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KKyAg
ICBzdGF0aWMgYXV0byBJbnZva2UoSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUpCisgICAgICAgIC0+
IGFic2w6OmVuYWJsZV9pZl90PGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkPFQ+Ojp2YWx1ZSwgSD4g
eworICAgICAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoc3RkOjptb3ZlKHN0YXRl
KSwgdmFsdWUpOworICAgIH0KICAgfTsKIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgdXNp
bmcgUHJvYmVVbmlxdWVseVJlcHJlc2VudGVkID0gaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8VT47
Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gIHVzaW5nIFByb2JlSGFzaFZhbHVlID0KLSAg
ICAgIHN0ZDo6aXNfc2FtZTxTdGF0ZSwgZGVjbHR5cGUoQWJzbEhhc2hWYWx1ZShzdGQ6OmRlY2x2
YWw8U3RhdGU+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IFUmPigpKSk+OworICBzdHJ1Y3QgSGFzaFZhbHVlUHJv
YmUgeworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBh
dXRvIEludm9rZShIIHN0YXRlLCBjb25zdCBUJiB2YWx1ZSkgLT4gYWJzbDo6ZW5hYmxlX2lmX3Q8
CisgICAgICAgIHN0ZDo6aXNfc2FtZTxILAorICAgICAgICAgICAgICAgICAgICAgZGVjbHR5cGUo
QWJzbEhhc2hWYWx1ZShzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZSkpPjo6dmFsdWUsCisgICAgICAg
IEg+IHsKKyAgICAgIHJldHVybiBBYnNsSGFzaFZhbHVlKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVl
KTsKKyAgICB9CisgIH07CiAKKyAgc3RydWN0IExlZ2FjeUhhc2hQcm9iZSB7CiAjaWYgQUJTTF9I
QVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PgotICB1c2luZyBQcm9iZUxlZ2FjeUhhc2ggPQotICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxk
ZWNsdHlwZShBQlNMX0lOVEVSTkFMX0xFR0FDWV9IQVNIX05BTUVTUEFDRTo6aGFzaDwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVT4oKShzdGQ6OmRlY2x2YWw8Y29uc3QgVSY+
KCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90PjsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgYXV0byBJbnZva2UoSCBzdGF0ZSwg
Y29uc3QgVCYgdmFsdWUpIC0+IGFic2w6OmVuYWJsZV9pZl90PAorICAgICAgICBzdGQ6OmlzX2Nv
bnZlcnRpYmxlPAorICAgICAgICAgICAgZGVjbHR5cGUoQUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFT
SF9OQU1FU1BBQ0U6Omhhc2g8VD4oKSh2YWx1ZSkpLAorICAgICAgICAgICAgc2l6ZV90Pjo6dmFs
dWUsCisgICAgICAgIEg+IHsKKyAgICAgIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5dGVz
KAorICAgICAgICAgIHN0ZDo6bW92ZShzdGF0ZSksCisgICAgICAgICAgQUJTTF9JTlRFUk5BTF9M
RUdBQ1lfSEFTSF9OQU1FU1BBQ0U6Omhhc2g8VD57fSh2YWx1ZSkpOworICAgIH0KICNlbmRpZiAg
Ly8gQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCisgIH07CiAKLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIFU+Ci0gIHVzaW5nIFByb2JlU3RkSGFzaCA9Ci0jaWYgQUJTTF9IQVNI
X0lOVEVSTkFMX0NBTl9QT0lTT05fCi0gICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPGRlY2x0eXBl
KHN0ZDo6aGFzaDxVPigpKHN0ZDo6ZGVjbHZhbDxjb25zdCBVJj4oKSkpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Q+OwotI2Vsc2UgICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfQ0FO
X1BPSVNPTl8KLSAgICAgIHN0ZDo6dHJ1ZV90eXBlOwotI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5U
RVJOQUxfQ0FOX1BPSVNPTl8KKyAgc3RydWN0IFN0ZEhhc2hQcm9iZSB7CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIGF1dG8gSW52b2tlKEggc3RhdGUs
IGNvbnN0IFQmIHZhbHVlKQorICAgICAgICAtPiBhYnNsOjplbmFibGVfaWZfdDx0eXBlX3RyYWl0
c19pbnRlcm5hbDo6SXNIYXNoYWJsZTxUPjo6dmFsdWUsIEg+IHsKKyAgICAgIHJldHVybiBoYXNo
X2ludGVybmFsOjpoYXNoX2J5dGVzKHN0ZDo6bW92ZShzdGF0ZSksIHN0ZDo6aGFzaDxUPnt9KHZh
bHVlKSk7CisgICAgfQorICB9OwogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICB1c2luZyBQ
cm9iZU5vbmUgPSBzdGQ6OnRydWVfdHlwZTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2gsIHR5
cGVuYW1lIFQ+CisgIHN0cnVjdCBQcm9iZSA6IEhhc2ggeworICAgcHJpdmF0ZToKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgPSBkZWNsdHlwZShIOjpJbnZva2UoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8U3RhdGU+KCksIHN0ZDo6ZGVjbHZh
bDxjb25zdCBUJj4oKSkpPgorICAgIHN0YXRpYyBzdGQ6OnRydWVfdHlwZSBUZXN0KGludCk7Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgICAgc3RhdGljIHN0ZDo6ZmFsc2VfdHlwZSBUZXN0
KGNoYXIpOworCisgICBwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0g
ZGVjbHR5cGUoVGVzdDxIYXNoPigwKSk6OnZhbHVlOworICB9OwogCiAgcHVibGljOgogICAvLyBQ
cm9iZSBlYWNoIGltcGxlbWVudGF0aW9uIGluIG9yZGVyLgotICAvLyBkaXNqdW5jdGlvbiBwcm92
aWRlcyBzaG9ydCBjaXJjdXRpbmcgd3J0IGluc3RhbnRpYXRpb24uCi0gIHN0YXRpYyBjb25zdGV4
cHIgSW52b2tlSGFzaFRhZyB2YWx1ZSA9IGFic2w6OmRpc2p1bmN0aW9uPAotICAgICAgUHJvYmU8
UHJvYmVVbmlxdWVseVJlcHJlc2VudGVkLCBJbnZva2VIYXNoVGFnOjprVW5pcXVlbHlSZXByZXNl
bnRlZD4sCi0gICAgICBQcm9iZTxQcm9iZUhhc2hWYWx1ZSwgSW52b2tlSGFzaFRhZzo6a0hhc2hW
YWx1ZT4sCi0jaWYgQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCi0gICAg
ICBQcm9iZTxQcm9iZUxlZ2FjeUhhc2gsIEludm9rZUhhc2hUYWc6OmtMZWdhY3lIYXNoPiwKLSNl
bmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCi0gICAgICBQ
cm9iZTxQcm9iZVN0ZEhhc2gsIEludm9rZUhhc2hUYWc6OmtTdGRIYXNoPiwKLSAgICAgIFByb2Jl
PFByb2JlTm9uZSwgSW52b2tlSGFzaFRhZzo6a05vbmU+Pjo6a1RhZzsKKyAgLy8gZGlzanVuY3Rp
b24gcHJvdmlkZXMgc2hvcnQgY2lyY3VpdGluZyB3cnQgaW5zdGFudGlhdGlvbi4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgIHVzaW5nIEFwcGx5ID0gYWJzbDo6ZGlzanVuY3Rpb248ICAgICAg
ICAgLy8KKyAgICAgIFByb2JlPFVuaXF1ZWx5UmVwcmVzZW50ZWRQcm9iZSwgVD4sICAvLworICAg
ICAgUHJvYmU8SGFzaFZhbHVlUHJvYmUsIFQ+LCAgICAgICAgICAgIC8vCisgICAgICBQcm9iZTxM
ZWdhY3lIYXNoUHJvYmUsIFQ+LCAgICAgICAgICAgLy8KKyAgICAgIFByb2JlPFN0ZEhhc2hQcm9i
ZSwgVD4sICAgICAgICAgICAgICAvLworICAgICAgc3RkOjpmYWxzZV90eXBlPjsKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2hhc2hhYmxlIDogc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSAhPQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52b2tlSGFzaFRhZzo6a05vbmU+
IHt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KLWFic2w6OmVuYWJsZV9p
Zl90PEhhc2hTZWxlY3Q8VD46OnZhbHVlID09IEludm9rZUhhc2hUYWc6OmtVbmlxdWVseVJlcHJl
c2VudGVkLAotICAgICAgICAgICAgICAgICAgSD4KLUludm9rZUhhc2goSCBzdGF0ZSwgY29uc3Qg
VCYgdmFsdWUpIHsKLSAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoc3RkOjptb3Zl
KHN0YXRlKSwgdmFsdWUpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4K
LWFic2w6OmVuYWJsZV9pZl90PEhhc2hTZWxlY3Q8VD46OnZhbHVlID09IEludm9rZUhhc2hUYWc6
OmtIYXNoVmFsdWUsIEg+Ci1JbnZva2VIYXNoKEggc3RhdGUsIGNvbnN0IFQmIHZhbHVlKSB7Ci0g
IHJldHVybiBBYnNsSGFzaFZhbHVlKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlKTsKLX0KLQotI2lm
IEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXwotdGVtcGxhdGUgPHR5cGVu
YW1lIEgsIHR5cGVuYW1lIFQ+Ci1hYnNsOjplbmFibGVfaWZfdDxIYXNoU2VsZWN0PFQ+Ojp2YWx1
ZSA9PSBJbnZva2VIYXNoVGFnOjprTGVnYWN5SGFzaCwgSD4KLUludm9rZUhhc2goSCBzdGF0ZSwg
Y29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoCi0g
ICAgICBzdGQ6Om1vdmUoc3RhdGUpLCBBQlNMX0lOVEVSTkFMX0xFR0FDWV9IQVNIX05BTUVTUEFD
RTo6aGFzaDxUPnt9KHZhbHVlKSk7Ci19Ci0jZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9T
VVBQT1JUX0xFR0FDWV9IQVNIXwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4K
LWFic2w6OmVuYWJsZV9pZl90PEhhc2hTZWxlY3Q8VD46OnZhbHVlID09IEludm9rZUhhc2hUYWc6
OmtTdGRIYXNoLCBIPgotSW52b2tlSGFzaChIIHN0YXRlLCBjb25zdCBUJiB2YWx1ZSkgewotICBy
ZXR1cm4gaGFzaF9pbnRlcm5hbDo6aGFzaF9ieXRlcyhzdGQ6Om1vdmUoc3RhdGUpLCBzdGQ6Omhh
c2g8VD57fSh2YWx1ZSkpOwotfQorc3RydWN0IGlzX2hhc2hhYmxlCisgICAgOiBzdGQ6OmludGVn
cmFsX2NvbnN0YW50PGJvb2wsIEhhc2hTZWxlY3Q6OnRlbXBsYXRlIEFwcGx5PFQ+Ojp2YWx1ZT4g
e307CiAKIC8vIENpdHlIYXNoU3RhdGUKIGNsYXNzIENpdHlIYXNoU3RhdGUgOiBwdWJsaWMgSGFz
aFN0YXRlQmFzZTxDaXR5SGFzaFN0YXRlPiB7CkBAIC02NzQsNyArNjQwLDggQEAgY2xhc3MgQ2l0
eUhhc2hTdGF0ZSA6IHB1YmxpYyBIYXNoU3RhdGVCYXNlPENpdHlIYXNoU3RhdGU+IHsKICNlbmRp
ZiAgLy8gQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgKIAogICBzdGF0aWMgY29uc3RleHByIHVp
bnQ2NF90IGtNdWwgPQotICAgICAgc2l6ZW9mKHNpemVfdCkgPT0gNCA/IHVpbnQ2NF90ezB4Y2M5
ZTJkNTF9IDogdWludDY0X3R7MHg5ZGRmZWEwOGViMzgyZDY5fTsKKyAgICAgIHNpemVvZihzaXpl
X3QpID09IDQgPyB1aW50NjRfdHsweGNjOWUyZDUxfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IHVpbnQ2NF90ezB4OWRkZmVhMDhlYjM4MmQ2OX07CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIHVzaW5nIEludGVncmFsRmFzdFBhdGggPQpAQCAtODcxLDcgKzgzOCw4IEBAIHN0cnVj
dCBIYXNoCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZS4uLiBUcz4KIEggSGFzaFN0YXRlQmFzZTxIPjo6Y29tYmluZShIIHN0YXRlLCBjb25zdCBU
JiB2YWx1ZSwgY29uc3QgVHMmLi4uIHZhbHVlcykgewotICByZXR1cm4gSDo6Y29tYmluZShoYXNo
X2ludGVybmFsOjpJbnZva2VIYXNoKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlKSwKKyAgcmV0dXJu
IEg6OmNvbWJpbmUoaGFzaF9pbnRlcm5hbDo6SGFzaFNlbGVjdDo6dGVtcGxhdGUgQXBwbHk8VD46
Okludm9rZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVl
KSwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLi4uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvaGFzaC9pbnRlcm5hbC9wcmludF9oYXNoX29mLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9w
cmludF9oYXNoX29mLmNjCmluZGV4IGI2ZGYzMWNjNWU4Li5jMzkyMTI1YTY5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9wcmludF9oYXNoX29mLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gv
aW50ZXJuYWwvcHJpbnRfaGFzaF9vZi5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9zcHlfaGFzaF9zdGF0
ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oCmluZGV4IDAzZDc5NWIw
OTAwLi5jNGNjOGQwNzMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9zcHlfaGFz
aF9zdGF0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvc3B5X2hhc2hfc3RhdGUuaApAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzksOCArMzksNyBAQCBu
YW1lc3BhY2UgaGFzaF9pbnRlcm5hbCB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIFNw
eUhhc2hTdGF0ZUltcGwgOiBwdWJsaWMgSGFzaFN0YXRlQmFzZTxTcHlIYXNoU3RhdGVJbXBsPFQ+
PiB7CiAgcHVibGljOgotICBTcHlIYXNoU3RhdGVJbXBsKCkKLSAgICAgIDogZXJyb3JfKHN0ZDo6
bWFrZV9zaGFyZWQ8YWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+PigpKSB7CisgIFNweUhhc2hT
dGF0ZUltcGwoKSA6IGVycm9yXyhzdGQ6Om1ha2Vfc2hhcmVkPGFic2w6Om9wdGlvbmFsPHN0ZDo6
c3RyaW5nPj4oKSkgewogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc192b2lkPFQ+Ojp2YWx1ZSwg
IiIpOwogICB9CiAKQEAgLTE3MCw3ICsxNjksNiBAQCBjbGFzcyBTcHlIYXNoU3RhdGVJbXBsIDog
cHVibGljIEhhc2hTdGF0ZUJhc2U8U3B5SGFzaFN0YXRlSW1wbDxUPj4gewogICAvLyBBYnNsSGFz
aFZhbHVlIGRpcmVjdGx5IChiZWNhdXNlIHRoZSBoYXNoIHN0YXRlIHR5cGUgZG9lcyBub3QgbWF0
Y2gpLgogICBzdGF0aWMgYm9vbCBkaXJlY3RfYWJzbF9oYXNoX3ZhbHVlX2Vycm9yXzsKIAotCiAg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBoYXNoX3JlcHJlc2VudGF0aW9uXzsKICAgLy8gVGhp
cyBpcyBhIHNoYXJlZF9wdHIgYmVjYXVzZSB3ZSB3YW50IGFsbCBpbnN0YW5jZXMgb2YgdGhlIHBh
cnRpY3VsYXIKICAgLy8gU3B5SGFzaFN0YXRlIHJ1biB0byBzaGFyZSB0aGUgZmllbGQuIFRoaXMg
d2F5IHdlIGNhbiBzZXQgdGhlIGVycm9yIGZvcgpAQCAtMjAwLDcgKzE5OCw3IEBAIGJvb2wgUnVu
T25TdGFydHVwPGY+OjpydW4gPSAoZigpLCB0cnVlKTsKIHRlbXBsYXRlIDwKICAgICB0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLAogICAgIC8vIE9ubHkgdHJpZ2dlciBmb3Igd2hlbiAoVCAhPSBVKSwK
LSAgICBhYnNsOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFQsIFU+Ojp2YWx1ZSwgaW50PiA9
IDAsCisgICAgdHlwZW5hbWUgPSBhYnNsOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFQsIFU+
Ojp2YWx1ZT4sCiAgICAgLy8gVGhpcyBzdGF0ZW1lbnQgd29ya3MgaW4gdHdvIHdheXM6CiAgICAg
Ly8gIC0gRmlyc3QsIGl0IGluc3RhbnRpYXRlcyBSdW5PblN0YXJ0dXAgYW5kIGZvcmNlcyB0aGUg
aW5pdGlhbGl6YXRpb24gb2YKICAgICAvLyAgICBgcnVuYCwgd2hpY2ggc2V0IHRoZSBnbG9iYWwg
dmFyaWFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuYmF6ZWwgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9t
ZW1vcnkvQlVJTEQuYmF6ZWwKaW5kZXggODlhMzEyZWFjNGIuLmY4MTVlZjk0MGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L0JVSUxELmJh
emVsCkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTUsOCArMTUsOSBAQAog
IwogCiBsb2FkKAotICAgICIvL2Fic2w6Y29wdHMuYnpsIiwKKyAgICAiLy9hYnNsOmNvcHRzL2Nv
bmZpZ3VyZV9jb3B0cy5iemwiLAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAorICAgICJBQlNM
X0RFRkFVTFRfTElOS09QVFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogICAgICJBQlNMX0VY
Q0VQVElPTlNfRkxBRyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwKQEAg
LTMwLDYgKzMxLDcgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gIm1lbW9yeSIsCiAgICAgaGRy
cyA9IFsibWVtb3J5LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBs
aW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAi
Ly9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKICAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJh
aXRzIiwKQEAgLTQwLDYgKzQyLDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gIm1lbW9yeV90ZXN0
IiwKICAgICBzcmNzID0gWyJtZW1vcnlfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMg
PSBbCiAgICAgICAgICI6bWVtb3J5IiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAgLTU0LDcg
KzU3LDcgQEAgY2NfdGVzdCgKICAgICAgICAgIm1lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3Qu
Y2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElP
TlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAor
ICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjptZW1vcnkiLAogICAgICAgICAi
Ly9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L21lbW9yeS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9CVUlMRC5nbgppbmRleCAzMDIyNGM2YTEx
Mi4uMDZiYzRjNWFiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9CVUlMRC5nbgorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkvQlVJTEQuZ24KQEAgLTQsOCArNCwxNSBAQAogCiBpbXBvcnQoIi8vYnVpbGRf
b3ZlcnJpZGVzL2J1aWxkLmduaSIpCiAKKyMgVXNhZ2Ugb2YgQWJzZWlsIGluIENocm9taXVtIGlz
IGd1YXJkZWQgYnkgYW4gZXhwbGljaXQgb3B0LWluIGxpc3QsIGJlZm9yZQorIyBhZGRpbmcgcHJv
amVjdHMgdG8gdGhpcyBsaXN0IHBsZWFzZSByZWFjaCBvdXQgdG8gY3h4QGNocm9taXVtLm9yZyBh
bmQgQ0M6CisjIC0gaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvT1dORVJTCisjCisjIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5k
IGF0OgorIyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFEZ1MxLUEzcnpib1RM
anBmNG0xc3FrSmdXam5ZX1J1MmRva2sxWDF2QkRVCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkg
ewogICB2aXNpYmlsaXR5ID0gWworICAgICIvL2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90aGly
ZF9wYXJ0eS93ZWJydGMvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKICAg
ICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9DTWFrZUxpc3RzLnR4dAppbmRleCA1
OTU4ZjVjNTJiZi4uMGE4MTIyMDNiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQ01ha2VMaXN0cy50eHQKQEAgLTUsNyArNSw3IEBA
CiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAj
Ci0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNCw1OCArMTQsNDUgQEAKICMgbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCiAjCiAKLWxpc3QoQVBQRU5EIE1FTU9SWV9QVUJMSUNfSEVBREVSUwot
ICAibWVtb3J5LmgiCi0pCi0KLQotYWJzbF9oZWFkZXJfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAg
YWJzbF9tZW1vcnkKLSAgRVhQT1JUX05BTUUKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQogICAg
IG1lbW9yeQorICBIRFJTCisgICAgIm1lbW9yeS5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6bWV0
YQorICBQVUJMSUMKICkKIAotIwotIyMgVEVTVFMKLSMKLQotIyB0ZXN0IG1lbW9yeV90ZXN0Ci1s
aXN0KEFQUEVORCBNRU1PUllfVEVTVF9TUkMKLSAgIm1lbW9yeV90ZXN0LmNjIgotICAke01FTU9S
WV9QVUJMSUNfSEVBREVSU30KLSkKLXNldChNRU1PUllfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFi
c2w6OmJhc2UgYWJzbDo6bWVtb3J5KQotCi0KLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xf
Y2NfdGVzdCgKKyAgTkFNRQogICAgIG1lbW9yeV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke01FTU9S
WV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7TUVNT1JZX1RFU1RfUFVCTElD
X0xJQlJBUklFU30KLSkKLQotCi0jIHRlc3QgbWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdAot
c2V0KE1FTU9SWV9FWENFUFRJT05fU0FGRVRZX1RFU1RfU1JDICJtZW1vcnlfZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0LmNjIikKLXNldChNRU1PUllfRVhDRVBUSU9OX1NBRkVUWV9URVNUX1BVQkxJQ19M
SUJSQVJJRVMKLSAgYWJzbDo6bWVtb3J5Ci0gIGFic2xfYmFzZV9pbnRlcm5hbF9leGNlcHRpb25f
c2FmZXR5X3Rlc3RpbmcKKyAgU1JDUworICAgICJtZW1vcnlfdGVzdC5jYyIKKyAgQ09QVFMKKyAg
ICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6
OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBnbW9ja19tYWluCiApCiAKLWFic2xf
dGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBtZW1vcnlfZXhjZXB0
aW9uX3NhZmV0eV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke01FTU9SWV9FWENFUFRJT05fU0FGRVRZ
X1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtNRU1PUllfRVhDRVBUSU9OX1NB
RkVUWV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIFBSSVZBVEVfQ09NUElMRV9GTEFHUworICBT
UkNTCisgICAgIm1lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiCisgIENPUFRTCisgICAg
JHtBQlNMX1RFU1RfQ09QVFN9CiAgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KKyAgTElOS09Q
VFMKKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTfQorICBERVBTCisgICAgYWJz
bDo6bWVtb3J5CisgICAgYWJzbDo6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nCisgICAgZ21vY2tf
bWFpbgogKQotCi0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bWVtb3J5L21lbW9yeS5oCmluZGV4IDFlYWVjMGY0MGFlLi41YTRhMWExZGZlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5L21lbW9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnkuaApAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDcsMTkgKzQ3LDE0IEBA
IG5hbWVzcGFjZSBhYnNsIHsKIC8vICAgWCogTmV3WChpbnQsIGludCk7CiAvLyAgIGF1dG8geCA9
IFdyYXBVbmlxdWUoTmV3WCgxLCAyKSk7ICAvLyAneCcgaXMgc3RkOjp1bmlxdWVfcHRyPFg+Lgog
Ly8KLS8vIFRoZSBwdXJwb3NlIG9mIFdyYXBVbmlxdWUgaXMgdG8gYXV0b21hdGljYWxseSBkZWR1
Y2UgdGhlIHBvaW50ZXIgdHlwZS4gSWYgeW91Ci0vLyB3aXNoIHRvIG1ha2UgdGhlIHR5cGUgZXhw
bGljaXQsIGZvciByZWFkYWJpbGl0eSByZWFzb25zIG9yIGJlY2F1c2UgeW91IHByZWZlcgotLy8g
dG8gdXNlIGEgYmFzZS1jbGFzcyBwb2ludGVyIHJhdGhlciB0aGFuIGEgZGVyaXZlZCBvbmUsIGp1
c3QgdXNlCisvLyBEbyBub3QgY2FsbCBXcmFwVW5pcXVlIHdpdGggYW4gZXhwbGljaXQgdHlwZSwg
YXMgaW4KKy8vIGBXcmFwVW5pcXVlPFg+KE5ld1goMSwgMikpYC4gIFRoZSBwdXJwb3NlIG9mIFdy
YXBVbmlxdWUgaXMgdG8gYXV0b21hdGljYWxseQorLy8gZGVkdWNlIHRoZSBwb2ludGVyIHR5cGUu
IElmIHlvdSB3aXNoIHRvIG1ha2UgdGhlIHR5cGUgZXhwbGljaXQsIGp1c3QgdXNlCiAvLyBgc3Rk
Ojp1bmlxdWVfcHRyYCBkaXJlY3RseS4KIC8vCi0vLyBFeGFtcGxlOgotLy8gICBYKiBGYWN0b3J5
KGludCwgaW50KTsKLS8vICAgYXV0byB4ID0gc3RkOjp1bmlxdWVfcHRyPFg+KEZhY3RvcnkoMSwg
MikpOworLy8gICBhdXRvIHggPSBzdGQ6OnVuaXF1ZV9wdHI8WD4oTmV3WCgxLCAyKSk7CiAvLyAg
ICAgICAgICAgICAgICAgIC0gb3IgLQotLy8gICBzdGQ6OnVuaXF1ZV9wdHI8WD4geChGYWN0b3J5
KDEsIDIpKTsKLS8vCi0vLyBUaGlzIGhhcyB0aGUgYWRkZWQgYWR2YW50YWdlIG9mIHdvcmtpbmcg
d2hldGhlciBGYWN0b3J5IHJldHVybnMgYSByYXcKLS8vIHBvaW50ZXIgb3IgYSBgc3RkOjp1bmlx
dWVfcHRyYC4KKy8vICAgc3RkOjp1bmlxdWVfcHRyPFg+IHgoTmV3WCgxLCAyKSk7CiAvLwogLy8g
V2hpbGUgYGFic2w6OldyYXBVbmlxdWVgIGlzIHVzZWZ1bCBmb3IgY2FwdHVyaW5nIHRoZSBvdXRw
dXQgb2YgYSByYXcKIC8vIHBvaW50ZXIgZmFjdG9yeSwgcHJlZmVyICdhYnNsOjptYWtlX3VuaXF1
ZTxUPihhcmdzLi4uKScgb3ZlcgpAQCAtMTIwLDcgKzExNSw3IEBAIHVzaW5nIHN0ZDo6bWFrZV91
bmlxdWU7CiAvLwogLy8gRm9yIG1vcmUgYmFja2dyb3VuZCBvbiB3aHkgYHN0ZDo6dW5pcXVlX3B0
cjxUPihuZXcgVChhLGIpKWAgaXMgcHJvYmxlbWF0aWMsCiAvLyBzZWUgSGVyYiBTdXR0ZXIncyBl
eHBsYW5hdGlvbiBvbgotLy8gKEV4Y2VwdGlvbi1TYWZlIEZ1bmN0aW9uIENhbGxzKVtodHRwOi8v
aGVyYnN1dHRlci5jb20vZ290dy9fMTAyL10uCisvLyAoRXhjZXB0aW9uLVNhZmUgRnVuY3Rpb24g
Q2FsbHMpW2h0dHBzOi8vaGVyYnN1dHRlci5jb20vZ290dy9fMTAyL10uCiAvLyAoSW4gZ2VuZXJh
bCwgcmV2aWV3ZXJzIHNob3VsZCB0cmVhdCBgbmV3IFQoYSxiKWAgd2l0aCBzY3J1dGlueS4pCiAv
LwogLy8gRXhhbXBsZSB1c2FnZToKQEAgLTU5OSw3ICs1OTQsNyBAQCBzdHJ1Y3QgYWxsb2NhdG9y
X3RyYWl0cyB7CiAgICAgcmV0dXJuIGEubWF4X3NpemUoKTsKICAgfQogICBzdGF0aWMgc2l6ZV90
eXBlIG1heF9zaXplX2ltcGwoY2hhciwgY29uc3QgQWxsb2MmKSB7Ci0gICAgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90eXBlPjo6bWF4KCkgLyBzaXplb2YodmFsdWVfdHlwZSk7Cisg
ICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdHlwZT46Om1heCkoKSAvIHNpemVv
Zih2YWx1ZV90eXBlKTsKICAgfQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBPgpAQCAtNjQ2LDcg
KzY0MSw3IEBAIHN0cnVjdCBhbGxvY2F0b3JfaXNfbm90aHJvdwogICAgIDogbWVtb3J5X2ludGVy
bmFsOjpFeHRyYWN0T3JUPG1lbW9yeV9pbnRlcm5hbDo6R2V0SXNOb3Rocm93LCBBbGxvYywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZhbHNlX3R5cGU+IHt9OwogCi0j
aWYgQUJTTF9BTExPQ0FUT1JfTk9USFJPVworI2lmIGRlZmluZWQoQUJTTF9BTExPQ0FUT1JfTk9U
SFJPVykgJiYgQUJTTF9BTExPQ0FUT1JfTk9USFJPVwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBz
dHJ1Y3QgYWxsb2NhdG9yX2lzX25vdGhyb3c8c3RkOjphbGxvY2F0b3I8VD4+IDogc3RkOjp0cnVl
X3R5cGUge307CiBzdHJ1Y3QgZGVmYXVsdF9hbGxvY2F0b3JfaXNfbm90aHJvdyA6IHN0ZDo6dHJ1
ZV90eXBlIHt9OwpAQCAtNjU1LDU5ICs2NTAsNDIgQEAgc3RydWN0IGRlZmF1bHRfYWxsb2NhdG9y
X2lzX25vdGhyb3cgOiBzdGQ6OmZhbHNlX3R5cGUge307CiAjZW5kaWYKIAogbmFtZXNwYWNlIG1l
bW9yeV9pbnRlcm5hbCB7Ci0jaWZkZWYgQUJTTF9IQVZFX0VYQ0VQVElPTlMgIC8vIENvbnN0cnVj
dFJhbmdlCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yLCB0eXBlbmFtZSBJdGVyYXRvciwg
dHlwZW5hbWUuLi4gQXJncz4KIHZvaWQgQ29uc3RydWN0UmFuZ2UoQWxsb2NhdG9yJiBhbGxvYywg
SXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEFyZ3MmLi4uIGFyZ3MpIHsKICAgZm9yIChJdGVyYXRvciBjdXIgPSBmaXJzdDsgY3VyICE9IGxh
c3Q7ICsrY3VyKSB7Ci0gICAgdHJ5IHsKLSAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxv
Y2F0b3I+Ojpjb25zdHJ1Y3QoYWxsb2MsIGN1ciwgYXJncy4uLik7Ci0gICAgfSBjYXRjaCAoLi4u
KSB7CisgICAgQUJTTF9JTlRFUk5BTF9UUlkgeworICAgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRz
PEFsbG9jYXRvcj46OmNvbnN0cnVjdChhbGxvYywgc3RkOjphZGRyZXNzb2YoKmN1ciksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuLi4pOwor
ICAgIH0KKyAgICBBQlNMX0lOVEVSTkFMX0NBVENIX0FOWSB7CiAgICAgICB3aGlsZSAoY3VyICE9
IGZpcnN0KSB7CiAgICAgICAgIC0tY3VyOwotICAgICAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8
QWxsb2NhdG9yPjo6ZGVzdHJveShhbGxvYywgY3VyKTsKKyAgICAgICAgc3RkOjphbGxvY2F0b3Jf
dHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koYWxsb2MsIHN0ZDo6YWRkcmVzc29mKCpjdXIpKTsK
ICAgICAgIH0KLSAgICAgIHRocm93OworICAgICAgQUJTTF9JTlRFUk5BTF9SRVRIUk9XOwogICAg
IH0KICAgfQogfQotI2Vsc2UgICAvLyBBQlNMX0hBVkVfRVhDRVBUSU9OUyAgLy8gQ29uc3RydWN0
UmFuZ2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIEl0ZXJhdG9yLCB0
eXBlbmFtZS4uLiBBcmdzPgotdm9pZCBDb25zdHJ1Y3RSYW5nZShBbGxvY2F0b3ImIGFsbG9jLCBJ
dGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QXJncyYuLi4gYXJncykgewotICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkgewotICAg
IHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoYWxsb2MsIGZpcnN0
LCBhcmdzLi4uKTsKLSAgfQotfQotI2VuZGlmICAvLyBBQlNMX0hBVkVfRVhDRVBUSU9OUyAgLy8g
Q29uc3RydWN0UmFuZ2UKIAotI2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBDb3B5UmFu
Z2UKIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBl
bmFtZSBJbnB1dEl0ZXJhdG9yPgogdm9pZCBDb3B5UmFuZ2UoQWxsb2NhdG9yJiBhbGxvYywgSXRl
cmF0b3IgZGVzdGluYXRpb24sIElucHV0SXRlcmF0b3IgZmlyc3QsCiAgICAgICAgICAgICAgICBJ
bnB1dEl0ZXJhdG9yIGxhc3QpIHsKICAgZm9yIChJdGVyYXRvciBjdXIgPSBkZXN0aW5hdGlvbjsg
Zmlyc3QgIT0gbGFzdDsKICAgICAgICBzdGF0aWNfY2FzdDx2b2lkPigrK2N1ciksIHN0YXRpY19j
YXN0PHZvaWQ+KCsrZmlyc3QpKSB7Ci0gICAgdHJ5IHsKLSAgICAgIHN0ZDo6YWxsb2NhdG9yX3Ry
YWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoYWxsb2MsIGN1ciwgKmZpcnN0KTsKLSAgICB9IGNh
dGNoICguLi4pIHsKKyAgICBBQlNMX0lOVEVSTkFMX1RSWSB7CisgICAgICBzdGQ6OmFsbG9jYXRv
cl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KGFsbG9jLCBzdGQ6OmFkZHJlc3NvZigqY3Vy
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmZp
cnN0KTsKKyAgICB9CisgICAgQUJTTF9JTlRFUk5BTF9DQVRDSF9BTlkgewogICAgICAgd2hpbGUg
KGN1ciAhPSBkZXN0aW5hdGlvbikgewogICAgICAgICAtLWN1cjsKLSAgICAgICAgc3RkOjphbGxv
Y2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koYWxsb2MsIGN1cik7CisgICAgICAgIHN0
ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KGFsbG9jLCBzdGQ6OmFkZHJl
c3NvZigqY3VyKSk7CiAgICAgICB9Ci0gICAgICB0aHJvdzsKKyAgICAgIEFCU0xfSU5URVJOQUxf
UkVUSFJPVzsKICAgICB9CiAgIH0KIH0KLSNlbHNlICAgLy8gQUJTTF9IQVZFX0VYQ0VQVElPTlMg
IC8vIENvcHlSYW5nZQotdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvciwgdHlwZW5hbWUgSXRl
cmF0b3IsIHR5cGVuYW1lIElucHV0SXRlcmF0b3I+Ci12b2lkIENvcHlSYW5nZShBbGxvY2F0b3Im
IGFsbG9jLCBJdGVyYXRvciBkZXN0aW5hdGlvbiwgSW5wdXRJdGVyYXRvciBmaXJzdCwKLSAgICAg
ICAgICAgICAgIElucHV0SXRlcmF0b3IgbGFzdCkgewotICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsK
LSAgICAgICBzdGF0aWNfY2FzdDx2b2lkPigrK2Rlc3RpbmF0aW9uKSwgc3RhdGljX2Nhc3Q8dm9p
ZD4oKytmaXJzdCkpIHsKLSAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29u
c3RydWN0KGFsbG9jLCBkZXN0aW5hdGlvbiwgKmZpcnN0KTsKLSAgfQotfQotI2VuZGlmICAvLyBB
QlNMX0hBVkVfRVhDRVBUSU9OUyAgLy8gQ29weVJhbmdlCiB9ICAvLyBuYW1lc3BhY2UgbWVtb3J5
X2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1v
cnkvbWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnlf
ZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCmluZGV4IDAwZDJiMTkyY2ZjLi5hMWMzOTcwNzJlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeS9tZW1vcnlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnlfdGVzdC5jYwppbmRleCAy
ZTQ1M2UyMmJhNS4uYzQ3ODIwZTU0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnlf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTY5LDYgKzY5LDQ1IEBAIFRFU1QoTWFrZVVu
aXF1ZVRlc3QsIEJhc2ljKSB7CiAgIEVYUEVDVF9FUSgiaGkiLCAqcCk7CiB9CiAKKy8vIEluaXRp
YWxpemF0aW9uVmVyaWZpZXIgZmlsbHMgaW4gYSBwYXR0ZXJuIHdoZW4gYWxsb2NhdGVkIHNvIHdl
IGNhbgorLy8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBpdHMgZGVmYXVsdCBhbmQgdmFsdWUgaW5pdGlh
bGl6ZWQgc3RhdGVzICh3aXRob3V0CisvLyBhY2Nlc3NpbmcgdHJ1bHkgdW5pbml0aWFsaXplZCBt
ZW1vcnkpLgorc3RydWN0IEluaXRpYWxpemF0aW9uVmVyaWZpZXIgeworICBzdGF0aWMgY29uc3Rl
eHByIGludCBrRGVmYXVsdFNjYWxhciA9IDB4NDM7CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtE
ZWZhdWx0QXJyYXkgPSAweDRCOworCisgIHN0YXRpYyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IG4pIHsKKyAgICB2b2lkKiByZXQgPSA6Om9wZXJhdG9yIG5ldyhuKTsKKyAgICBtZW1zZXQocmV0
LCBrRGVmYXVsdFNjYWxhciwgbik7CisgICAgcmV0dXJuIHJldDsKKyAgfQorCisgIHN0YXRpYyB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QgbikgeworICAgIHZvaWQqIHJldCA9IDo6b3BlcmF0
b3IgbmV3W10obik7CisgICAgbWVtc2V0KHJldCwga0RlZmF1bHRBcnJheSwgbik7CisgICAgcmV0
dXJuIHJldDsKKyAgfQorCisgIGludCBhOworICBpbnQgYjsKK307CisKK1RFU1QoSW5pdGlhbGl6
YXRpb24sIE1ha2VVbmlxdWUpIHsKKyAgYXV0byBwID0gYWJzbDo6bWFrZV91bmlxdWU8SW5pdGlh
bGl6YXRpb25WZXJpZmllcj4oKTsKKworICBFWFBFQ1RfRVEoMCwgcC0+YSk7CisgIEVYUEVDVF9F
USgwLCBwLT5iKTsKK30KKworVEVTVChJbml0aWFsaXphdGlvbiwgTWFrZVVuaXF1ZUFycmF5KSB7
CisgIGF1dG8gcCA9IGFic2w6Om1ha2VfdW5pcXVlPEluaXRpYWxpemF0aW9uVmVyaWZpZXJbXT4o
Mik7CisKKyAgRVhQRUNUX0VRKDAsIHBbMF0uYSk7CisgIEVYUEVDVF9FUSgwLCBwWzBdLmIpOwor
ICBFWFBFQ1RfRVEoMCwgcFsxXS5hKTsKKyAgRVhQRUNUX0VRKDAsIHBbMV0uYik7Cit9CisKIHN0
cnVjdCBNb3ZlT25seSB7CiAgIE1vdmVPbmx5KCkgPSBkZWZhdWx0OwogICBleHBsaWNpdCBNb3Zl
T25seShpbnQgaTEpIDogaXAxe25ldyBpbnR7aTF9fSB7fQpAQCAtMTQ1LDcgKzE4NCw3IEBAIFRF
U1QoTWFrZV9VbmlxdWVUZXN0LCBOb3RBbWJpZ3VvdXNXaXRoU3RkTWFrZVVuaXF1ZSkgewogICAg
IGV4cGxpY2l0IFRha2VzU3RkVHlwZShjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+ICZ2ZWMpIHt9CiAg
IH07CiAgIHVzaW5nIGFic2w6Om1ha2VfdW5pcXVlOwotICBtYWtlX3VuaXF1ZTxUYWtlc1N0ZFR5
cGU+KHN0ZDo6dmVjdG9yPGludD4oKSk7CisgICh2b2lkKW1ha2VfdW5pcXVlPFRha2VzU3RkVHlw
ZT4oc3RkOjp2ZWN0b3I8aW50PigpKTsKIH0KIAogI2lmIDAKQEAgLTU4MSw3ICs2MjAsNyBAQCBU
RVNUKEFsbG9jYXRvclRyYWl0cywgRnVuY3Rpb25zRnVsbCkgewogfQogCiBURVNUKEFsbG9jYXRv
ck5vVGhyb3dUZXN0LCBEZWZhdWx0QWxsb2NhdG9yKSB7Ci0jaWYgQUJTTF9BTExPQ0FUT1JfTk9U
SFJPVworI2lmIGRlZmluZWQoQUJTTF9BTExPQ0FUT1JfTk9USFJPVykgJiYgQUJTTF9BTExPQ0FU
T1JfTk9USFJPVwogICBFWFBFQ1RfVFJVRShhYnNsOjpkZWZhdWx0X2FsbG9jYXRvcl9pc19ub3Ro
cm93Ojp2YWx1ZSk7CiAjZWxzZQogICBFWFBFQ1RfRkFMU0UoYWJzbDo6ZGVmYXVsdF9hbGxvY2F0
b3JfaXNfbm90aHJvdzo6dmFsdWUpOwpAQCAtNTg5LDcgKzYyOCw3IEBAIFRFU1QoQWxsb2NhdG9y
Tm9UaHJvd1Rlc3QsIERlZmF1bHRBbGxvY2F0b3IpIHsKIH0KIAogVEVTVChBbGxvY2F0b3JOb1Ro
cm93VGVzdCwgU3RkQWxsb2NhdG9yKSB7Ci0jaWYgQUJTTF9BTExPQ0FUT1JfTk9USFJPVworI2lm
IGRlZmluZWQoQUJTTF9BTExPQ0FUT1JfTk9USFJPVykgJiYgQUJTTF9BTExPQ0FUT1JfTk9USFJP
VwogICBFWFBFQ1RfVFJVRShhYnNsOjphbGxvY2F0b3JfaXNfbm90aHJvdzxzdGQ6OmFsbG9jYXRv
cjxpbnQ+Pjo6dmFsdWUpOwogI2Vsc2UKICAgRVhQRUNUX0ZBTFNFKGFic2w6OmFsbG9jYXRvcl9p
c19ub3Rocm93PHN0ZDo6YWxsb2NhdG9yPGludD4+Ojp2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9tZXRhL0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS9CVUlMRC5iYXplbAppbmRleCBkYmM5NzE3
ZGRkMy4uZTAwNGI1MDlmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvQlVJTEQuYmF6ZWwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWV0YS9CVUlMRC5iYXplbApAQCAtMSw2ICsxLDcgQEAKIGxvYWQoCi0gICAgIi8v
YWJzbDpjb3B0cy5iemwiLAorICAgICIvL2Fic2w6Y29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bCIs
CiAgICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCisgICAgIkFCU0xfREVGQVVMVF9MSU5LT1BUUyIs
CiAgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiApCiAKQEAgLTEyLDYgKzEzLDcgQEAgY2NfbGlicmFy
eSgKICAgICBuYW1lID0gInR5cGVfdHJhaXRzIiwKICAgICBoZHJzID0gWyJ0eXBlX3RyYWl0cy5o
Il0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8vYWJzbC9iYXNlOmNv
bmZpZyIsCiAgICAgXSwKQEAgLTIxLDkgKzIzLDkgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gInR5
cGVfdHJhaXRzX3Rlc3QiLAogICAgIHNyY3MgPSBbInR5cGVfdHJhaXRzX3Rlc3QuY2MiXSwKICAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnR5cGVfdHJhaXRzIiwKLSAgICAgICAg
Ii8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0
ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAgICAgXSwKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZXRhL0JVSUxELmduCmluZGV4IDY3NTcyMTljMjczLi5mMmU1YmUyMDZl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL0JVSUxE
LmduCkBAIC00LDggKzQsMTUgQEAKIAogaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5n
bmkiKQogCisjIFVzYWdlIG9mIEFic2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4
cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlz
dCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBz
Oi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09X
TkVSUworIworIyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9k
b2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9S
dTJkb2trMVgxdkJEVQogaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9
IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoi
LAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkv
Z29vZ2xldGVzdDpndGVzdCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWV0YS9DTWFrZUxpc3RzLnR4dAppbmRleCBhZGIwY2ViNzU0ZC4uNjcyZWFkMmZk
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0
YS9DTWFrZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0
LDM5ICsxNCwzNyBAQAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICMKIAotbGlz
dChBUFBFTkQgTUVUQV9QVUJMSUNfSEVBREVSUwotICAidHlwZV90cmFpdHMuaCIKK2Fic2xfY2Nf
bGlicmFyeSgKKyAgTkFNRQorICAgIHR5cGVfdHJhaXRzCisgIEhEUlMKKyAgICAidHlwZV90cmFp
dHMuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFi
c2w6OmNvbmZpZworICBQVUJMSUMKICkKIAotCi0jCi0jIyBURVNUUwotIwotCi0jIHRlc3QgdHlw
ZV90cmFpdHNfdGVzdAotbGlzdChBUFBFTkQgVFlQRV9UUkFJVFNfVEVTVF9TUkMKLSAgInR5cGVf
dHJhaXRzX3Rlc3QuY2MiCi0gICR7TUVUQV9QVUJMSUNfSEVBREVSU30KK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQorICAgIHR5cGVfdHJhaXRzX3Rlc3QKKyAgU1JDUworICAgICJ0eXBlX3RyYWl0c190
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6dHlwZV90cmFpdHMKKyAgICBnbW9ja19tYWluCiApCiAKLWFic2xfaGVhZGVyX2xpYnJhcnko
Ci0gIFRBUkdFVAotICAgIGFic2xfbWV0YQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbDo6
YmFzZQotICBFWFBPUlRfTkFNRQorIyBjb21wb25lbnQgdGFyZ2V0CithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKICAgICBtZXRhCi0gKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIHR5cGVf
dHJhaXRzX3Rlc3QKLSAgU09VUkNFUwotICAgICR7VFlQRV9UUkFJVFNfVEVTVF9TUkN9Ci0gIFBV
QkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsOjpiYXNlCi0gICAgYWJzbDo6bWV0YQorICBDT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6dHlwZV90cmFpdHMK
KyAgUFVCTElDCiApCi0KLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgKaW5kZXggMjNlYmQ2ZWQwOTkuLjkyNzI0NGUwOWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90
eXBlX3RyYWl0cy5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBA
IC0yMiw3ICsyMiw3IEBACiAvLyBzdXBwb3J0IHR5cGUgaW5mZXJlbmNlLCBjbGFzc2lmaWNhdGlv
biwgYW5kIHRyYW5zZm9ybWF0aW9uLCBhcyB3ZWxsIGFzCiAvLyBtYWtlIGl0IGVhc2llciB0byB3
cml0ZSB0ZW1wbGF0ZXMgYmFzZWQgb24gZ2VuZXJpYyB0eXBlIGJlaGF2aW9yLgogLy8KLS8vIFNl
ZSBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9oZWFkZXIvdHlwZV90cmFpdHMKKy8v
IFNlZSBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvaGVhZGVyL3R5cGVfdHJhaXRz
CiAvLwogLy8gV0FSTklORzogdXNlIG9mIG1hbnkgb2YgdGhlIGNvbnN0cnVjdHMgaW4gdGhpcyBo
ZWFkZXIgd2lsbCBjb3VudCBhcyAiY29tcGxleAogLy8gdGVtcGxhdGUgbWV0YXByb2dyYW1taW5n
Iiwgc28gYmVmb3JlIHByb2NlZWRpbmcsIHBsZWFzZSBjYXJlZnVsbHkgY29uc2lkZXIKQEAgLTQz
LDggKzQzLDM5IEBACiAKIG5hbWVzcGFjZSBhYnNsIHsKIAorLy8gRGVmaW5lZCBhbmQgZG9jdW1l
bnRlZCBsYXRlciBvbiBpbiB0aGlzIGZpbGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBpc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlOworCiBuYW1lc3BhY2UgdHlwZV90cmFpdHNf
aW50ZXJuYWwgewogCisvLyBTaWxlbmNlIE1TVkMgd2FybmluZ3MgYWJvdXQgdGhlIGRlc3RydWN0
b3IgYmVpbmcgZGVmaW5lZCBhcyBkZWxldGVkLgorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFk
ZWZpbmVkKF9fR05VQ19fKQorI3ByYWdtYSB3YXJuaW5nKHB1c2gpCisjcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZSA6IDQ2MjQpCisjZW5kaWYgIC8vIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVk
KF9fR05VQ19fKQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3VuaW9uIFNpbmdsZU1lbWJlclVuaW9u
IHsKKyAgVCB0OworfTsKKworLy8gUmVzdG9yZSB0aGUgc3RhdGUgb2YgdGhlIGRlc3RydWN0b3Ig
d2FybmluZyB0aGF0IHdhcyBzaWxlbmNlZCBhYm92ZS4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAm
JiAhZGVmaW5lZChfX0dOVUNfXykKKyNwcmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYgIC8vIGRl
ZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fR05VQ19fKQorCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KK3N0cnVjdCBJc1RyaXZpYWxseU1vdmVBc3NpZ25hYmxlUmVmZXJlbmNlIDogc3RkOjpmYWxz
ZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBJc1RyaXZpYWxseU1vdmVB
c3NpZ25hYmxlUmVmZXJlbmNlPFQmPgorICAgIDogYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNz
aWduYWJsZTxUPjo6dHlwZSB7fTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgSXNUcml2
aWFsbHlNb3ZlQXNzaWduYWJsZVJlZmVyZW5jZTxUJiY+CisgICAgOiBhYnNsOjppc190cml2aWFs
bHlfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp0eXBlIHt9OworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
VHM+CiBzdHJ1Y3QgVm9pZFRJbXBsIHsKICAgdXNpbmcgdHlwZSA9IHZvaWQ7CkBAIC0xOTMsNiAr
MjI0LDIzIEBAIHN0cnVjdCBkaXNqdW5jdGlvbjw+IDogc3RkOjpmYWxzZV90eXBlIHt9OwogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgbmVnYXRpb24gOiBzdGQ6OmludGVncmFsX2NvbnN0
YW50PGJvb2wsICFUOjp2YWx1ZT4ge307CiAKKy8vIGlzX2Z1bmN0aW9uKCkKKy8vCisvLyBEZXRl
cm1pbmVzIHdoZXRoZXIgdGhlIHBhc3NlZCB0eXBlIGBUYCBpcyBhIGZ1bmN0aW9uIHR5cGUuCisv
LworLy8gVGhpcyBtZXRhZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgYSBkcm9wLWluIHJlcGxh
Y2VtZW50IGZvciB0aGUgQysrMTEKKy8vIGBzdGQ6OmlzX2Z1bmN0aW9uKClgIG1ldGFmdW5jdGlv
biBmb3IgcGxhdGZvcm1zIHRoYXQgaGF2ZSBpbmNvbXBsZXRlIEMrKzExCisvLyBzdXBwb3J0IChz
dWNoIGFzIGxpYnN0ZGMrKyA0LngpLgorLy8KKy8vIFRoaXMgbWV0YWZ1bmN0aW9uIHdvcmtzIGJl
Y2F1c2UgYXBwZW5kaW5nIGBjb25zdGAgdG8gYSB0eXBlIGRvZXMgbm90aGluZyB0bworLy8gZnVu
Y3Rpb24gdHlwZXMgYW5kIHJlZmVyZW5jZSB0eXBlcyAoYW5kIGZvcm1zIGEgY29uc3QtcXVhbGlm
aWVkIHR5cGUKKy8vIG90aGVyd2lzZSkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBp
c19mdW5jdGlvbgorICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDwKKyAgICAgICAgICBib29s
LCAhKHN0ZDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAgICAgc3Rk
Ojppc19jb25zdDx0eXBlbmFtZSBzdGQ6OmFkZF9jb25zdDxUPjo6dHlwZT46OnZhbHVlKT4ge307
CisKIC8vIGlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGUoKQogLy8KIC8vIERldGVybWluZXMgd2hl
dGhlciB0aGUgcGFzc2VkIHR5cGUgYFRgIGlzIHRyaXZpYWxseSBkZXN0cnVjdGFibGUuCkBAIC0y
NDYsNyArMjk0LDcgQEAgc3RydWN0IGlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGUKIC8vIEZvciB0
aGUgcHVycG9zZXMgb2YgdGhpcyBjaGVjaywgdGhlIGNhbGwgdG8gc3RkOjpkZWNsdmFsIGlzIGNv
bnNpZGVyZWQKIC8vIHRyaXZpYWwuIgogLy8KLS8vIE5vdGVzIGZyb20gaHR0cDovL2VuLmNwcHJl
ZmVyZW5jZS5jb20vdy9jcHAvdHlwZXMvaXNfY29uc3RydWN0aWJsZToKKy8vIE5vdGVzIGZyb20g
aHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL3R5cGVzL2lzX2NvbnN0cnVjdGlibGU6
CiAvLyBJbiBtYW55IGltcGxlbWVudGF0aW9ucywgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlIGFs
c28gY2hlY2tzIGlmIHRoZQogLy8gZGVzdHJ1Y3RvciB0aHJvd3MgYmVjYXVzZSBpdCBpcyBlZmZl
Y3RpdmVseSBub2V4Y2VwdChUKGFyZykpLiBTYW1lCiAvLyBhcHBsaWVzIHRvIGlzX3RyaXZpYWxs
eV9jb25zdHJ1Y3RpYmxlLCB3aGljaCwgaW4gdGhlc2UgaW1wbGVtZW50YXRpb25zLCBhbHNvCkBA
IC0yNzUsNiArMzIzLDQwIEBAIHN0cnVjdCBpc190cml2aWFsbHlfZGVmYXVsdF9jb25zdHJ1Y3Rp
YmxlCiAjZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfSVNfVFJJVklBTExZX0NPTlNUUlVDVElCTEUK
IH07CiAKKy8vIGlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGUoKQorLy8KKy8vIERldGVy
bWluZXMgd2hldGhlciB0aGUgcGFzc2VkIHR5cGUgYFRgIGlzIHRyaXZpYWxseSBtb3ZlIGNvbnN0
cnVjdGlibGUuCisvLworLy8gVGhpcyBtZXRhZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgYSBk
cm9wLWluIHJlcGxhY2VtZW50IGZvciB0aGUgQysrMTEKKy8vIGBzdGQ6OmlzX3RyaXZpYWxseV9t
b3ZlX2NvbnN0cnVjdGlibGUoKWAgbWV0YWZ1bmN0aW9uIGZvciBwbGF0Zm9ybXMgdGhhdCBoYXZl
CisvLyBpbmNvbXBsZXRlIEMrKzExIHN1cHBvcnQgKHN1Y2ggYXMgbGlic3RkYysrIDQueCkuIE9u
IGFueSBwbGF0Zm9ybXMgdGhhdCBkbworLy8gZnVsbHkgc3VwcG9ydCBDKysxMSwgd2UgY2hlY2sg
d2hldGhlciB0aGlzIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhlIHN0ZAorLy8gaW1wbGVt
ZW50YXRpb24uCisvLworLy8gTk9URTogYFQgb2JqKGRlY2x2YWw8VD4oKSk7YCBuZWVkcyB0byBi
ZSB3ZWxsLWZvcm1lZCBhbmQgbm90IGNhbGwgYW55CisvLyBub250cml2aWFsIG9wZXJhdGlvbi4g
IE5vbnRyaXZpYWxseSBkZXN0cnVjdGlibGUgdHlwZXMgd2lsbCBjYXVzZSB0aGUKKy8vIGV4cHJl
c3Npb24gdG8gYmUgbm9udHJpdmlhbC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlz
X3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGUKKyAgICA6IHN0ZDo6Y29uZGl0aW9uYWw8Cisg
ICAgICAgICAgc3RkOjppc19vYmplY3Q8VD46OnZhbHVlICYmICFzdGQ6OmlzX2FycmF5PFQ+Ojp2
YWx1ZSwKKyAgICAgICAgICBzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTwKKyAgICAgICAgICAg
ICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OlNpbmdsZU1lbWJlclVuaW9uPFQ+PiwKKyAgICAgICAg
ICBzdGQ6OmlzX3JlZmVyZW5jZTxUPj46OnR5cGU6OnR5cGUgeworI2lmZGVmIEFCU0xfSEFWRV9T
VERfSVNfVFJJVklBTExZX0NPTlNUUlVDVElCTEUKKyBwcml2YXRlOgorICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgY29tcGxpYW50ID0KKyAgICAgIHN0ZDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3Ry
dWN0aWJsZTxUPjo6dmFsdWUgPT0KKyAgICAgIGlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGli
bGU6OnZhbHVlOworICBzdGF0aWNfYXNzZXJ0KGNvbXBsaWFudCB8fCBzdGQ6OmlzX3RyaXZpYWxs
eV9tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJOb3QgY29t
cGxpYW50IHdpdGggc3RkOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlOyAiCisgICAg
ICAgICAgICAgICAgIlN0YW5kYXJkOiBmYWxzZSwgSW1wbGVtZW50YXRpb246IHRydWUiKTsKKyAg
c3RhdGljX2Fzc2VydChjb21wbGlhbnQgfHwgIXN0ZDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3Ry
dWN0aWJsZTxUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIk5vdCBjb21wbGlhbnQgd2l0aCBz
dGQ6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU7ICIKKyAgICAgICAgICAgICAgICAi
U3RhbmRhcmQ6IHRydWUsIEltcGxlbWVudGF0aW9uOiBmYWxzZSIpOworI2VuZGlmICAvLyBBQlNM
X0hBVkVfU1REX0lTX1RSSVZJQUxMWV9DT05TVFJVQ1RJQkxFCit9OworCiAvLyBpc190cml2aWFs
bHlfY29weV9jb25zdHJ1Y3RpYmxlKCkKIC8vCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBh
c3NlZCB0eXBlIGBUYCBpcyB0cml2aWFsbHkgY29weSBjb25zdHJ1Y3RpYmxlLgpAQCAtMjkwLDkg
KzM3MiwxMSBAQCBzdHJ1Y3QgaXNfdHJpdmlhbGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZQogLy8g
ZXhwcmVzc2lvbiB0byBiZSBub250cml2aWFsLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1
Y3QgaXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZQotICAgIDogc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBfX2hhc190cml2aWFsX2NvcHkoVCkgJiYKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlICYm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8VD46OnZhbHVlPiB7CisgICAgOiBzdGQ6OmNvbmRpdGlvbmFsPAorICAgICAgICAgIHN0
ZDo6aXNfb2JqZWN0PFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcnJheTxUPjo6dmFsdWUsCisgICAg
ICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8CisgICAgICAgICAgICAgIHR5cGVfdHJh
aXRzX2ludGVybmFsOjpTaW5nbGVNZW1iZXJVbmlvbjxUPj4sCisgICAgICAgICAgc3RkOjppc19s
dmFsdWVfcmVmZXJlbmNlPFQ+Pjo6dHlwZTo6dHlwZSB7CiAjaWZkZWYgQUJTTF9IQVZFX1NURF9J
U19UUklWSUFMTFlfQ09OU1RSVUNUSUJMRQogIHByaXZhdGU6CiAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBjb21wbGlhbnQgPQpAQCAtMzA3LDYgKzM5MSw0MiBAQCBzdHJ1Y3QgaXNfdHJpdmlhbGx5
X2NvcHlfY29uc3RydWN0aWJsZQogI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX0lTX1RSSVZJQUxM
WV9DT05TVFJVQ1RJQkxFCiB9OwogCisvLyBpc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlKCkK
Ky8vCisvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBhc3NlZCB0eXBlIGBUYCBpcyB0cml2aWFs
bHkgbW92ZSBhc3NpZ25hYmxlLgorLy8KKy8vIFRoaXMgbWV0YWZ1bmN0aW9uIGlzIGRlc2lnbmVk
IHRvIGJlIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgdGhlIEMrKzExCisvLyBgc3RkOjppc190
cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlKClgIG1ldGFmdW5jdGlvbiBmb3IgcGxhdGZvcm1zIHRo
YXQgaGF2ZQorLy8gaW5jb21wbGV0ZSBDKysxMSBzdXBwb3J0IChzdWNoIGFzIGxpYnN0ZGMrKyA0
LngpLiBPbiBhbnkgcGxhdGZvcm1zIHRoYXQgZG8KKy8vIGZ1bGx5IHN1cHBvcnQgQysrMTEsIHdl
IGNoZWNrIHdoZXRoZXIgdGhpcyB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZSBzdGQKKy8v
IGltcGxlbWVudGF0aW9uLgorLy8KKy8vIE5PVEU6IGBpc19hc3NpZ25hYmxlPFQsIFU+Ojp2YWx1
ZWAgaXMgYHRydWVgIGlmIHRoZSBleHByZXNzaW9uCisvLyBgZGVjbHZhbDxUPigpID0gZGVjbHZh
bDxVPigpYCBpcyB3ZWxsLWZvcm1lZCB3aGVuIHRyZWF0ZWQgYXMgYW4gdW5ldmFsdWF0ZWQKKy8v
IG9wZXJhbmQuIGBpc190cml2aWFsbHlfYXNzaWduYWJsZTxULCBVPmAgcmVxdWlyZXMgdGhlIGFz
c2lnbm1lbnQgdG8gY2FsbCBubworLy8gb3BlcmF0aW9uIHRoYXQgaXMgbm90IHRyaXZpYWwuIGBp
c190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPFQ+YCBpcyBzaW1wbHkKKy8vIGBpc190cml2aWFs
bHlfYXNzaWduYWJsZTxUJiwgVD5gLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNf
dHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZQorICAgIDogc3RkOjpjb25kaXRpb25hbDwKKyAgICAg
ICAgICBzdGQ6OmlzX29iamVjdDxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJyYXk8VD46OnZhbHVl
LAorICAgICAgICAgIHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPHR5cGVfdHJhaXRzX2ludGVybmFs
OjpTaW5nbGVNZW1iZXJVbmlvbjxUPj4sCisgICAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6
OklzVHJpdmlhbGx5TW92ZUFzc2lnbmFibGVSZWZlcmVuY2U8VD4+Ojp0eXBlOjoKKyAgICAgICAg
ICB0eXBlIHsKKyNpZmRlZiBBQlNMX0hBVkVfU1REX0lTX1RSSVZJQUxMWV9BU1NJR05BQkxFCisg
cHJpdmF0ZToKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNvbXBsaWFudCA9CisgICAgICBzdGQ6
OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8VD46OnZhbHVlID09CisgICAgICBpc190cml2
aWFsbHlfbW92ZV9hc3NpZ25hYmxlOjp2YWx1ZTsKKyAgc3RhdGljX2Fzc2VydChjb21wbGlhbnQg
fHwgc3RkOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAiTm90IGNvbXBsaWFudCB3aXRoIHN0ZDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWdu
YWJsZTsgIgorICAgICAgICAgICAgICAgICJTdGFuZGFyZDogZmFsc2UsIEltcGxlbWVudGF0aW9u
OiB0cnVlIik7CisgIHN0YXRpY19hc3NlcnQoY29tcGxpYW50IHx8ICFzdGQ6OmlzX3RyaXZpYWxs
eV9tb3ZlX2Fzc2lnbmFibGU8VD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJOb3QgY29tcGxp
YW50IHdpdGggc3RkOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlOyAiCisgICAgICAgICAg
ICAgICAgIlN0YW5kYXJkOiB0cnVlLCBJbXBsZW1lbnRhdGlvbjogZmFsc2UiKTsKKyNlbmRpZiAg
Ly8gQUJTTF9IQVZFX1NURF9JU19UUklWSUFMTFlfQVNTSUdOQUJMRQorfTsKKwogLy8gaXNfdHJp
dmlhbGx5X2NvcHlfYXNzaWduYWJsZSgpCiAvLwogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBw
YXNzZWQgdHlwZSBgVGAgaXMgdHJpdmlhbGx5IGNvcHkgYXNzaWduYWJsZS4KQEAgLTM0MSw2ICs0
NjEsNDkgQEAgc3RydWN0IGlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGUKICNlbmRpZiAgLy8g
QUJTTF9IQVZFX1NURF9JU19UUklWSUFMTFlfQVNTSUdOQUJMRQogfTsKIAorbmFtZXNwYWNlIHR5
cGVfdHJhaXRzX2ludGVybmFsIHsKKy8vIGlzX3RyaXZpYWxseV9jb3B5YWJsZSgpCisvLworLy8g
RGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXNzZWQgdHlwZSBgVGAgaXMgdHJpdmlhbGx5IGNvcHlh
YmxlLgorLy8KKy8vIFRoaXMgbWV0YWZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGEgZHJvcC1p
biByZXBsYWNlbWVudCBmb3IgdGhlIEMrKzExCisvLyBgc3RkOjppc190cml2aWFsbHlfY29weWFi
bGUoKWAgbWV0YWZ1bmN0aW9uIGZvciBwbGF0Zm9ybXMgdGhhdCBoYXZlCisvLyBpbmNvbXBsZXRl
IEMrKzExIHN1cHBvcnQgKHN1Y2ggYXMgbGlic3RkYysrIDQueCkuIFdlIHVzZSB0aGUgQysrMTcg
ZGVmaW5pdGlvbgorLy8gb2YgVHJpdmlhbGx5Q29weWFibGUuCisvLworLy8gTk9URTogYGlzX3Ry
aXZpYWxseV9jb3B5YWJsZTxUPjo6dmFsdWVgIGlzIGB0cnVlYCBpZiBhbGwgb2YgVCdzIGNvcHkv
bW92ZQorLy8gY29uc3RydWN0b3JzL2Fzc2lnbm1lbnQgb3BlcmF0b3JzIGFyZSB0cml2aWFsIG9y
IGRlbGV0ZWQsIFQgaGFzIGF0IGxlYXN0CisvLyBvbmUgbm9uLWRlbGV0ZWQgY29weS9tb3ZlIGNv
bnN0cnVjdG9yL2Fzc2lnbm1lbnQgb3BlcmF0b3IsIGFuZCBUIGlzIHRyaXZpYWxseQorLy8gZGVz
dHJ1Y3RpYmxlLiBBcnJheXMgb2YgdHJpdmlhbGx5IGNvcHlhYmxlIHR5cGVzIGFyZSB0cml2aWFs
bHkgY29weWFibGUuCisvLworLy8gV2UgZXhwb3NlIHRoaXMgbWV0YWZ1bmN0aW9uIG9ubHkgZm9y
IGludGVybmFsIHVzZSB3aXRoaW4gYWJzbC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
aXNfdHJpdmlhbGx5X2NvcHlhYmxlX2ltcGwgeworICB1c2luZyBFeHRlbnRzUmVtb3ZlZCA9IHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQ+Ojp0eXBlOworICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wga0lzQ29weU9yTW92ZUNvbnN0cnVjdGlibGUgPQorICAgICAgc3RkOjppc19jb3B5
X2NvbnN0cnVjdGlibGU8RXh0ZW50c1JlbW92ZWQ+Ojp2YWx1ZSB8fAorICAgICAgc3RkOjppc19t
b3ZlX2NvbnN0cnVjdGlibGU8RXh0ZW50c1JlbW92ZWQ+Ojp2YWx1ZTsKKyAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGtJc0NvcHlPck1vdmVBc3NpZ25hYmxlID0KKyAgICAgIGFic2w6OmlzX2NvcHlf
YXNzaWduYWJsZTxFeHRlbnRzUmVtb3ZlZD46OnZhbHVlIHx8CisgICAgICBhYnNsOjppc19tb3Zl
X2Fzc2lnbmFibGU8RXh0ZW50c1JlbW92ZWQ+Ojp2YWx1ZTsKKworIHB1YmxpYzoKKyAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGtWYWx1ZSA9CisgICAgICAoX19oYXNfdHJpdmlhbF9jb3B5KEV4dGVu
dHNSZW1vdmVkKSB8fCAha0lzQ29weU9yTW92ZUNvbnN0cnVjdGlibGUpICYmCisgICAgICAoX19o
YXNfdHJpdmlhbF9hc3NpZ24oRXh0ZW50c1JlbW92ZWQpIHx8ICFrSXNDb3B5T3JNb3ZlQXNzaWdu
YWJsZSkgJiYKKyAgICAgIChrSXNDb3B5T3JNb3ZlQ29uc3RydWN0aWJsZSB8fCBrSXNDb3B5T3JN
b3ZlQXNzaWduYWJsZSkgJiYKKyAgICAgIGlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RXh0ZW50
c1JlbW92ZWQ+Ojp2YWx1ZSAmJgorICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3IgdGhpcyBl
eHBsaWNpdGx5IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlJ2xsIHNheQorICAgICAgLy8gcmVmZXJlbmNl
cyBhcmUgdHJpdmlhbCBjb3B5YWJsZSB3aGVuIGNvbXBpbGVkIGJ5IE1TVkMuCisgICAgICAhc3Rk
Ojppc19yZWZlcmVuY2U8RXh0ZW50c1JlbW92ZWQ+Ojp2YWx1ZTsKK307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IGlzX3RyaXZpYWxseV9jb3B5YWJsZQorICAgIDogc3RkOjppbnRl
Z3JhbF9jb25zdGFudDwKKyAgICAgICAgICBib29sLCB0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNf
dHJpdmlhbGx5X2NvcHlhYmxlX2ltcGw8VD46OmtWYWx1ZT4ge307Cit9ICAvLyBuYW1lc3BhY2Ug
dHlwZV90cmFpdHNfaW50ZXJuYWwKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIEMrKzE0
ICJfdCIgdHJhaXQgYWxpYXNlcwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQxMywyNCAr
NTc2LDEzOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHVzaW5nIHJlc3VsdF9vZl90ID0gdHlw
ZW5hbWUgc3RkOjpyZXN1bHRfb2Y8VD46OnR5cGU7CiAKIG5hbWVzcGFjZSB0eXBlX3RyYWl0c19p
bnRlcm5hbCB7CisvLyBJbiBNU1ZDIHdlIGNhbid0IHByb2JlIHN0ZDo6aGFzaCBvciBzdGRleHQ6
Omhhc2ggYmVjYXVzZSBpdCB0cmlnZ2VycyBhCisvLyBzdGF0aWNfYXNzZXJ0IGluc3RlYWQgb2Yg
ZmFpbGluZyBzdWJzdGl0dXRpb24uIExpYmMrKyBwcmlvciB0byA0LjAKKy8vIGFsc28gdXNlZCBh
IHN0YXRpY19hc3NlcnQuCisvLworI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8IChkZWZpbmVkKF9M
SUJDUFBfVkVSU0lPTikgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBfTElCQ1BQX1ZF
UlNJT04gPCA0MDAwICYmIF9MSUJDUFBfU1REX1ZFUiA+IDExKQorI2RlZmluZSBBQlNMX01FVEFf
SU5URVJOQUxfU1REX0hBU0hfU0ZJTkFFX0ZSSUVORExZXyAwCisjZWxzZQorI2RlZmluZSBBQlNM
X01FVEFfSU5URVJOQUxfU1REX0hBU0hfU0ZJTkFFX0ZSSUVORExZXyAxCisjZW5kaWYKKworI2lm
ICFBQlNMX01FVEFfSU5URVJOQUxfU1REX0hBU0hfU0ZJTkFFX0ZSSUVORExZXwogdGVtcGxhdGUg
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgPSBzaXplX3Q+CitzdHJ1Y3QgSXNIYXNoYWJsZSA6IHN0
ZDo6dHJ1ZV90eXBlIHt9OworI2Vsc2UgICAvLyBBQlNMX01FVEFfSU5URVJOQUxfU1REX0hBU0hf
U0ZJTkFFX0ZSSUVORExZXwordGVtcGxhdGUgPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgPSB2b2lk
Pgogc3RydWN0IElzSGFzaGFibGUgOiBzdGQ6OmZhbHNlX3R5cGUge307CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBLZXk+Ci1zdHJ1Y3QgSXNIYXNoYWJsZTxLZXksCi0gICAgICAgICAgICAgICAgICBk
ZWNsdHlwZShzdGQ6OmRlY2x2YWw8c3RkOjpoYXNoPEtleT4+KCkoc3RkOjpkZWNsdmFsPEtleT4o
KSkpPgotICAgIDogc3RkOjp0cnVlX3R5cGUge307CitzdHJ1Y3QgSXNIYXNoYWJsZTwKKyAgICBL
ZXksCisgICAgYWJzbDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZTwKKyAgICAgICAg
ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPHN0ZDo6aGFzaDxLZXk+Jj4oKShzdGQ6OmRlY2x2YWw8S2V5
IGNvbnN0Jj4oKSkpLAorICAgICAgICBzdGQ6OnNpemVfdD46OnZhbHVlPj4gOiBzdGQ6OnRydWVf
dHlwZSB7fTsKKyNlbmRpZiAgLy8gIUFCU0xfTUVUQV9JTlRFUk5BTF9TVERfSEFTSF9TRklOQUVf
RlJJRU5ETFlfCisKK3N0cnVjdCBBc3NlcnRIYXNoRW5hYmxlZEhlbHBlciB7CisgcHJpdmF0ZToK
KyAgc3RhdGljIHZvaWQgU2luayguLi4pIHt9CisgIHN0cnVjdCBOQVQge307CisKKyAgdGVtcGxh
dGUgPGNsYXNzIEtleT4KKyAgc3RhdGljIGF1dG8gR2V0UmV0dXJuVHlwZShpbnQpCisgICAgICAt
PiBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8c3RkOjpoYXNoPEtleT4+KCkoc3RkOjpkZWNsdmFsPEtl
eSBjb25zdCY+KCkpKTsKKyAgdGVtcGxhdGUgPGNsYXNzIEtleT4KKyAgc3RhdGljIE5BVCBHZXRS
ZXR1cm5UeXBlKC4uLik7CisKKyAgdGVtcGxhdGUgPGNsYXNzIEtleT4KKyAgc3RhdGljIHN0ZDo6
bnVsbHB0cl90IERvSXQoKSB7CisgICAgc3RhdGljX2Fzc2VydChJc0hhc2hhYmxlPEtleT46OnZh
bHVlLAorICAgICAgICAgICAgICAgICAgInN0ZDo6aGFzaDxLZXk+IGRvZXMgbm90IHByb3ZpZGUg
YSBjYWxsIG9wZXJhdG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgKKyAgICAgICAgc3RkOjppc19k
ZWZhdWx0X2NvbnN0cnVjdGlibGU8c3RkOjpoYXNoPEtleT4+Ojp2YWx1ZSwKKyAgICAgICAgInN0
ZDo6aGFzaDxLZXk+IG11c3QgYmUgZGVmYXVsdCBjb25zdHJ1Y3RpYmxlIHdoZW4gaXQgaXMgZW5h
YmxlZCIpOworICAgIHN0YXRpY19hc3NlcnQoCisgICAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1
Y3RpYmxlPHN0ZDo6aGFzaDxLZXk+Pjo6dmFsdWUsCisgICAgICAgICJzdGQ6Omhhc2g8S2V5PiBt
dXN0IGJlIGNvcHkgY29uc3RydWN0aWJsZSB3aGVuIGl0IGlzIGVuYWJsZWQiKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxzdGQ6Omhhc2g8S2V5Pj46OnZhbHVl
LAorICAgICAgICAgICAgICAgICAgInN0ZDo6aGFzaDxLZXk+IG11c3QgYmUgY29weSBhc3NpZ25h
YmxlIHdoZW4gaXQgaXMgZW5hYmxlZCIpOworICAgIC8vIGlzX2Rlc3RydWN0aWJsZSBpcyB1bmNo
ZWNrZWQgYXMgaXQncyBpbXBsaWVkIGJ5IGVhY2ggb2YgdGhlCisgICAgLy8gaXNfY29uc3RydWN0
aWJsZSBjaGVja3MuCisgICAgdXNpbmcgUmV0dXJuVHlwZSA9IGRlY2x0eXBlKEdldFJldHVyblR5
cGU8S2V5PigwKSk7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8UmV0dXJuVHlwZSwg
TkFUPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8UmV0dXJu
VHlwZSwgc2l6ZV90Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAic3RkOjpoYXNoPEtleT4g
bXVzdCByZXR1cm4gc2l6ZV90Iik7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKworICB0ZW1w
bGF0ZSA8Y2xhc3MuLi4gVHM+CisgIGZyaWVuZCB2b2lkIEFzc2VydEhhc2hFbmFibGVkKCk7Cit9
OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5Pgotc3RydWN0IElzSGFzaEVuYWJsZWQKLSAgICA6
IGFic2w6OmNvbmp1bmN0aW9uPHN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPHN0ZDo6aGFz
aDxLZXk+PiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3Rp
YmxlPHN0ZDo6aGFzaDxLZXk+PiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfZGVz
dHJ1Y3RpYmxlPHN0ZDo6aGFzaDxLZXk+PiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
OmlzX2NvcHlfYXNzaWduYWJsZTxzdGQ6Omhhc2g8S2V5Pj4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICBJc0hhc2hhYmxlPEtleT4+IHt9OwordGVtcGxhdGUgPGNsYXNzLi4uIFRzPgoraW5saW5l
IHZvaWQgQXNzZXJ0SGFzaEVuYWJsZWQoKSB7CisgIHVzaW5nIEhlbHBlciA9IEFzc2VydEhhc2hF
bmFibGVkSGVscGVyOworICBIZWxwZXI6OlNpbmsoSGVscGVyOjpEb0l0PFRzPigpLi4uKTsKK30K
IAogfSAgLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzX2ludGVybmFsCiAKKy8vIEFuIGludGVybmFs
IG5hbWVzcGFjZSB0aGF0IGlzIHJlcXVpcmVkIHRvIGltcGxlbWVudCB0aGUgQysrMTcgc3dhcCB0
cmFpdHMuCisvLyBJdCBpcyBub3QgZnVydGhlciBuZXN0ZWQgaW4gdHlwZV90cmFpdHNfaW50ZXJu
YWwgdG8gYXZvaWQgbG9uZyBzeW1ib2wgbmFtZXMuCituYW1lc3BhY2Ugc3dhcF9pbnRlcm5hbCB7
CisKKy8vIE5lY2Vzc2FyeSBmb3IgdGhlIHRyYWl0cy4KK3VzaW5nIHN0ZDo6c3dhcDsKKworLy8g
VGhpcyBkZWNsYXJhdGlvbiBwcmV2ZW50cyBnbG9iYWwgYHN3YXBgIGFuZCBgYWJzbDo6c3dhcGAg
b3ZlcmxvYWRzIGZyb20gYmVpbmcKKy8vIGNvbnNpZGVyZWQgdW5sZXNzIEFETCBwaWNrcyB0aGVt
IHVwLgordm9pZCBzd2FwKCk7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgordXNpbmcgSXNTd2FwcGFi
bGVJbXBsID0gZGVjbHR5cGUoc3dhcChzdGQ6OmRlY2x2YWw8VCY+KCksIHN0ZDo6ZGVjbHZhbDxU
Jj4oKSkpOworCisvLyBOT1RFOiBUaGlzIGRhbmNlIHdpdGggdGhlIGRlZmF1bHQgdGVtcGxhdGUg
cGFyYW1ldGVyIGlzIGZvciBNU1ZDLgordGVtcGxhdGUgPGNsYXNzIFQsCisgICAgICAgICAgY2xh
c3MgSXNOb2V4Y2VwdCA9IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8CisgICAgICAgICAgICAgIGJv
b2wsIG5vZXhjZXB0KHN3YXAoc3RkOjpkZWNsdmFsPFQmPigpLCBzdGQ6OmRlY2x2YWw8VCY+KCkp
KT4+Cit1c2luZyBJc05vdGhyb3dTd2FwcGFibGVJbXBsID0gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8SXNOb2V4Y2VwdDo6dmFsdWU+Ojp0eXBlOworCisvLyBJc1N3YXBwYWJsZQorLy8KKy8vIERl
dGVybWluZXMgd2hldGhlciB0aGUgc3RhbmRhcmQgc3dhcCBpZGlvbSBpcyBhIHZhbGlkIGV4cHJl
c3Npb24gZm9yCisvLyBhcmd1bWVudHMgb2YgdHlwZSBgVGAuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4K
K3N0cnVjdCBJc1N3YXBwYWJsZQorICAgIDogYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6Omlz
X2RldGVjdGVkPElzU3dhcHBhYmxlSW1wbCwgVD4ge307CisKKy8vIElzTm90aHJvd1N3YXBwYWJs
ZQorLy8KKy8vIERldGVybWluZXMgd2hldGhlciB0aGUgc3RhbmRhcmQgc3dhcCBpZGlvbSBpcyBh
IHZhbGlkIGV4cHJlc3Npb24gZm9yCisvLyBhcmd1bWVudHMgb2YgdHlwZSBgVGAgYW5kIGlzIG5v
ZXhjZXB0LgordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgSXNOb3Rocm93U3dhcHBhYmxlCisg
ICAgOiBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfZGV0ZWN0ZWQ8SXNOb3Rocm93U3dh
cHBhYmxlSW1wbCwgVD4ge307CisKKy8vIFN3YXAoKQorLy8KKy8vIFBlcmZvcm1zIHRoZSBzd2Fw
IGlkaW9tIGZyb20gYSBuYW1lc3BhY2Ugd2hlcmUgdmFsaWQgY2FuZGlkYXRlcyBtYXkgb25seSBi
ZQorLy8gZm91bmQgaW4gYHN0ZGAgb3IgdmlhIEFETC4KK3RlbXBsYXRlIDxjbGFzcyBULCBhYnNs
OjplbmFibGVfaWZfdDxJc1N3YXBwYWJsZTxUPjo6dmFsdWUsIGludD4gPSAwPgordm9pZCBTd2Fw
KFQmIGxocywgVCYgcmhzKSBub2V4Y2VwdChJc05vdGhyb3dTd2FwcGFibGU8VD46OnZhbHVlKSB7
CisgIHN3YXAobGhzLCByaHMpOworfQorCisvLyBTdGRTd2FwSXNVbmNvbnN0cmFpbmVkCisvLwor
Ly8gU29tZSBzdGFuZGFyZCBsaWJyYXJ5IGltcGxlbWVudGF0aW9ucyBhcmUgYnJva2VuIGluIHRo
YXQgdGhleSBkbyBub3QKKy8vIGNvbnN0cmFpbiBgc3RkOjpzd2FwYC4gVGhpcyB3aWxsIGVmZmVj
dGl2ZWx5IHRlbGwgdXMgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aAorLy8gb25lIG9mIHRob3NlIGlt
cGxlbWVudGF0aW9ucy4KK3VzaW5nIFN0ZFN3YXBJc1VuY29uc3RyYWluZWQgPSBJc1N3YXBwYWJs
ZTx2b2lkKCk+OworCit9ICAvLyBuYW1lc3BhY2Ugc3dhcF9pbnRlcm5hbAorCituYW1lc3BhY2Ug
dHlwZV90cmFpdHNfaW50ZXJuYWwgeworCisvLyBNYWtlIHRoZSBzd2FwLXJlbGF0ZWQgdHJhaXRz
L2Z1bmN0aW9uIGFjY2Vzc2libGUgZnJvbSB0aGlzIG5hbWVzcGFjZS4KK3VzaW5nIHN3YXBfaW50
ZXJuYWw6OklzTm90aHJvd1N3YXBwYWJsZTsKK3VzaW5nIHN3YXBfaW50ZXJuYWw6OklzU3dhcHBh
YmxlOwordXNpbmcgc3dhcF9pbnRlcm5hbDo6U3dhcDsKK3VzaW5nIHN3YXBfaW50ZXJuYWw6OlN0
ZFN3YXBJc1VuY29uc3RyYWluZWQ7CisKK30gIC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0c19pbnRl
cm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIAogI2VuZGlmICAvLyBBQlNMX01FVEFfVFlQRV9U
UkFJVFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHNfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21ldGEvdHlwZV90cmFpdHNfdGVzdC5jYwppbmRleCBmNTFmNWRlZGVlNC4uYTdhOWM1Yzkx
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHNfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9tZXRhL3R5cGVfdHJhaXRzX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTIxNCw2ICsyMTQsMjkgQEAgY2xhc3MgRGVsZXRlZERlZmF1bHRDdG9y
IHsKICAgaW50IG5fOwogfTsKIAorY2xhc3MgVHJpdmlhbE1vdmVDdG9yIHsKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IFRyaXZpYWxNb3ZlQ3RvcihpbnQgbikgOiBuXyhuKSB7fQorICBUcml2aWFsTW92
ZUN0b3IoVHJpdmlhbE1vdmVDdG9yJiYpID0gZGVmYXVsdDsKKyAgVHJpdmlhbE1vdmVDdG9yJiBv
cGVyYXRvcj0oY29uc3QgVHJpdmlhbE1vdmVDdG9yJiB0KSB7CisgICAgbl8gPSB0Lm5fOworICAg
IHJldHVybiAqdGhpczsKKyAgfQorCisgcHJpdmF0ZToKKyAgaW50IG5fOworfTsKKworY2xhc3Mg
Tm9udHJpdmlhbE1vdmVDdG9yIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IE5vbnRyaXZpYWxNb3Zl
Q3RvcihpbnQgbikgOiBuXyhuKSB7fQorICBOb250cml2aWFsTW92ZUN0b3IoTm9udHJpdmlhbE1v
dmVDdG9yJiYgdCkgbm9leGNlcHQgOiBuXyh0Lm5fKSB7fQorICBOb250cml2aWFsTW92ZUN0b3Im
IG9wZXJhdG9yPShjb25zdCBOb250cml2aWFsTW92ZUN0b3ImKSA9IGRlZmF1bHQ7CisKKyBwcml2
YXRlOgorICBpbnQgbl87Cit9OworCiBjbGFzcyBUcml2aWFsQ29weUN0b3IgewogIHB1YmxpYzoK
ICAgZXhwbGljaXQgVHJpdmlhbENvcHlDdG9yKGludCBuKSA6IG5fKG4pIHt9CkBAIC0yNDcsNiAr
MjcwLDI5IEBAIGNsYXNzIERlbGV0ZWRDb3B5Q3RvciB7CiAgIGludCBuXzsKIH07CiAKK2NsYXNz
IFRyaXZpYWxNb3ZlQXNzaWduIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFRyaXZpYWxNb3ZlQXNz
aWduKGludCBuKSA6IG5fKG4pIHt9CisgIFRyaXZpYWxNb3ZlQXNzaWduKGNvbnN0IFRyaXZpYWxN
b3ZlQXNzaWduJiB0KSA6IG5fKHQubl8pIHt9CisgIFRyaXZpYWxNb3ZlQXNzaWduJiBvcGVyYXRv
cj0oVHJpdmlhbE1vdmVBc3NpZ24mJikgPSBkZWZhdWx0OworICB+VHJpdmlhbE1vdmVBc3NpZ24o
KSB7fSAgLy8gY2FuIGhhdmUgbm9udHJpdmlhbCBkZXN0cnVjdG9yCisgcHJpdmF0ZToKKyAgaW50
IG5fOworfTsKKworY2xhc3MgTm9udHJpdmlhbE1vdmVBc3NpZ24geworIHB1YmxpYzoKKyAgZXhw
bGljaXQgTm9udHJpdmlhbE1vdmVBc3NpZ24oaW50IG4pIDogbl8obikge30KKyAgTm9udHJpdmlh
bE1vdmVBc3NpZ24oY29uc3QgTm9udHJpdmlhbE1vdmVBc3NpZ24mKSA9IGRlZmF1bHQ7CisgIE5v
bnRyaXZpYWxNb3ZlQXNzaWduJiBvcGVyYXRvcj0oTm9udHJpdmlhbE1vdmVBc3NpZ24mJiB0KSBu
b2V4Y2VwdCB7CisgICAgbl8gPSB0Lm5fOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgcHJp
dmF0ZToKKyAgaW50IG5fOworfTsKKwogY2xhc3MgVHJpdmlhbENvcHlBc3NpZ24gewogIHB1Ymxp
YzoKICAgZXhwbGljaXQgVHJpdmlhbENvcHlBc3NpZ24oaW50IG4pIDogbl8obikge30KQEAgLTI4
MCwxMCArMzI2LDIwIEBAIGNsYXNzIERlbGV0ZWRDb3B5QXNzaWduIHsKICAgaW50IG5fOwogfTsK
IAotc3RydWN0IE5vbkNvcHlhYmxlIHsKLSAgTm9uQ29weWFibGUoKSA9IGRlZmF1bHQ7Ci0gIE5v
bkNvcHlhYmxlKGNvbnN0IE5vbkNvcHlhYmxlJikgPSBkZWxldGU7Ci0gIE5vbkNvcHlhYmxlJiBv
cGVyYXRvcj0oY29uc3QgTm9uQ29weWFibGUmKSA9IGRlbGV0ZTsKK3N0cnVjdCBNb3ZhYmxlTm9u
Q29weWFibGUgeworICBNb3ZhYmxlTm9uQ29weWFibGUoKSA9IGRlZmF1bHQ7CisgIE1vdmFibGVO
b25Db3B5YWJsZShjb25zdCBNb3ZhYmxlTm9uQ29weWFibGUmKSA9IGRlbGV0ZTsKKyAgTW92YWJs
ZU5vbkNvcHlhYmxlKE1vdmFibGVOb25Db3B5YWJsZSYmKSA9IGRlZmF1bHQ7CisgIE1vdmFibGVO
b25Db3B5YWJsZSYgb3BlcmF0b3I9KGNvbnN0IE1vdmFibGVOb25Db3B5YWJsZSYpID0gZGVsZXRl
OworICBNb3ZhYmxlTm9uQ29weWFibGUmIG9wZXJhdG9yPShNb3ZhYmxlTm9uQ29weWFibGUmJikg
PSBkZWZhdWx0OworfTsKKworc3RydWN0IE5vbkNvcHlhYmxlT3JNb3ZhYmxlIHsKKyAgTm9uQ29w
eWFibGVPck1vdmFibGUoKSA9IGRlZmF1bHQ7CisgIE5vbkNvcHlhYmxlT3JNb3ZhYmxlKGNvbnN0
IE5vbkNvcHlhYmxlT3JNb3ZhYmxlJikgPSBkZWxldGU7CisgIE5vbkNvcHlhYmxlT3JNb3ZhYmxl
KE5vbkNvcHlhYmxlT3JNb3ZhYmxlJiYpID0gZGVsZXRlOworICBOb25Db3B5YWJsZU9yTW92YWJs
ZSYgb3BlcmF0b3I9KGNvbnN0IE5vbkNvcHlhYmxlT3JNb3ZhYmxlJikgPSBkZWxldGU7CisgIE5v
bkNvcHlhYmxlT3JNb3ZhYmxlJiBvcGVyYXRvcj0oTm9uQ29weWFibGVPck1vdmFibGUmJikgPSBk
ZWxldGU7CiB9OwogCiBjbGFzcyBCYXNlIHsKQEAgLTMyOSw2ICszODUsMjIgQEAgY2xhc3MgQmFz
ZSB7CiAjZGVmaW5lIEFCU0xfR0NDX0JVR19UUklWSUFMTFlfQ09OU1RSVUNUSUJMRV9PTl9BUlJB
WV9PRl9OT05UUklWSUFMIDEKICNlbmRpZgogCitURVNUKFR5cGVUcmFpdHNUZXN0LCBUZXN0SXNG
dW5jdGlvbikgeworICBzdHJ1Y3QgQ2FsbGFibGUgeworICAgIHZvaWQgb3BlcmF0b3IoKSgpIHt9
CisgIH07CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX2Z1bmN0aW9uPHZvaWQoKT46OnZhbHVlKTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfZnVuY3Rpb248dm9pZCgpJj46OnZhbHVlKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6aXNfZnVuY3Rpb248dm9pZCgpIGNvbnN0Pjo6dmFsdWUpOworICBFWFBF
Q1RfVFJVRShhYnNsOjppc19mdW5jdGlvbjx2b2lkKCkgbm9leGNlcHQ+Ojp2YWx1ZSk7CisgIEVY
UEVDVF9UUlVFKGFic2w6OmlzX2Z1bmN0aW9uPHZvaWQoLi4uKSBub2V4Y2VwdD46OnZhbHVlKTsK
KworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfZnVuY3Rpb248dm9pZCgqKSgpPjo6dmFsdWUpOwor
ICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfZnVuY3Rpb248dm9pZCgmKSgpPjo6dmFsdWUpOworICBF
WFBFQ1RfRkFMU0UoYWJzbDo6aXNfZnVuY3Rpb248aW50Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFM
U0UoYWJzbDo6aXNfZnVuY3Rpb248Q2FsbGFibGU+Ojp2YWx1ZSk7Cit9CisKIFRFU1QoVHlwZVRy
YWl0c1Rlc3QsIFRlc3RUcml2aWFsRGVzdHJ1Y3RvcikgewogICAvLyBWZXJpZnkgdGhhdCBhcml0
aG1ldGljIHR5cGVzIGFuZCBwb2ludGVycyBoYXZlIHRyaXZpYWwgZGVzdHJ1Y3RvcnMuCiAgIEVY
UEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Ym9vbD46OnZhbHVlKTsK
QEAgLTQ3NCw2ICs1NDYsNzkgQEAgVEVTVChUeXBlVHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxEZWZh
dWx0Q3RvcikgewogI2VuZGlmCiB9CiAKK1RFU1QoVHlwZVRyYWl0c1Rlc3QsIFRlc3RUcml2aWFs
TW92ZUN0b3IpIHsKKyAgLy8gVmVyaWZ5IHRoYXQgYXJpdGhtZXRpYyB0eXBlcyBhbmQgcG9pbnRl
cnMgaGF2ZSB0cml2aWFsIG1vdmUKKyAgLy8gY29uc3RydWN0b3JzLgorICBFWFBFQ1RfVFJVRShh
YnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPGJvb2w+Ojp2YWx1ZSk7CisgIEVY
UEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8Y2hhcj46OnZh
bHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJs
ZTx1bnNpZ25lZCBjaGFyPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFs
bHlfbW92ZV9jb25zdHJ1Y3RpYmxlPHNpZ25lZCBjaGFyPjo6dmFsdWUpOworICBFWFBFQ1RfVFJV
RShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPHdjaGFyX3Q+Ojp2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8aW50
Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1
Y3RpYmxlPHVuc2lnbmVkIGludD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJp
dmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxpbnQxNl90Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJV
RShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPHVpbnQxNl90Pjo6dmFsdWUp
OworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPGlu
dDY0X3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Nv
bnN0cnVjdGlibGU8dWludDY0X3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3Ry
aXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8ZmxvYXQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVF
KGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8ZG91YmxlPjo6dmFsdWUpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPGxvbmcg
ZG91YmxlPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9j
b25zdHJ1Y3RpYmxlPHN0ZDo6c3RyaW5nKj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxUcml2aWFsKj46OnZhbHVlKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxjb25zdCBzdGQ6
OnN0cmluZyo+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3Zl
X2NvbnN0cnVjdGlibGU8Y29uc3QgVHJpdmlhbCo+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8c3RkOjpzdHJpbmcqKj46OnZhbHVl
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxU
cml2aWFsKio+Ojp2YWx1ZSk7CisKKyAgLy8gUmVmZXJlbmNlIHR5cGVzCisgIEVYUEVDVF9UUlVF
KGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8aW50Jj46OnZhbHVlKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxpbnQmJj46
OnZhbHVlKTsKKworICAvLyB0eXBlcyB3aXRoIGNvbXBpbGVyIGdlbmVyYXRlZCBtb3ZlIGN0b3Jz
CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8VHJp
dmlhbD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29u
c3RydWN0aWJsZTxUcml2aWFsTW92ZUN0b3I+Ojp2YWx1ZSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQg
dHlwZXMgd2l0aG91dCB0aGVtIChpLmUuIG5vbnRyaXZpYWwgb3IgZGVsZXRlZCkgYXJlIG5vdC4K
KyAgRVhQRUNUX0ZBTFNFKAorICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0
aWJsZTxOb250cml2aWFsQ29weUN0b3I+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpp
c190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPERlbGV0ZWRDb3B5Q3Rvcj46OnZhbHVlKTsK
KyAgRVhQRUNUX0ZBTFNFKAorICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0
aWJsZTxOb25Db3B5YWJsZU9yTW92YWJsZT46OnZhbHVlKTsKKworI2lmZGVmIEFCU0xfVFJJVklB
TExZX0NPTlNUUlVDVElCTEVfVkVSSUZZX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUKKyAgLy8gdHlw
ZSB3aXRoIG5vbnRyaXZpYWwgZGVzdHJ1Y3RvciBhcmUgbm9udHJpdmlhbCBtb3ZlIGNvbnN0cnVi
dGlibGUKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29u
c3RydWN0aWJsZTxOb250cml2aWFsRGVzdHJ1Y3Rvcj46OnZhbHVlKTsKKyNlbmRpZgorCisgIC8v
IHR5cGVzIHdpdGggdnRhYmxlcworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X21v
dmVfY29uc3RydWN0aWJsZTxCYXNlPjo6dmFsdWUpOworCisgIC8vIFZlcmlmeSB0aGF0IHNpbXBs
ZV9wYWlyIG9mIHN1Y2ggdHlwZXMgaXMgdHJpdmlhbGx5IG1vdmUgY29uc3RydWN0aWJsZQorICBF
WFBFQ1RfVFJVRSgKKyAgICAgIChhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxl
PHNpbXBsZV9wYWlyPGludCwgY2hhcio+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKAorICAg
ICAgYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxzaW1wbGVfcGFpcjxpbnQs
IFRyaXZpYWw+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKGFic2w6OmlzX3RyaXZpYWxseV9t
b3ZlX2NvbnN0cnVjdGlibGU8CisgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxpbnQsIFRyaXZp
YWxNb3ZlQ3Rvcj4+Ojp2YWx1ZSkpOworCisgIC8vIFZlcmlmeSB0aGF0IHR5cGVzIHdpdGhvdXQg
dHJpdmlhbCBtb3ZlIGNvbnN0cnVjdG9ycyBhcmUKKyAgLy8gY29ycmVjdGx5IG1hcmtlZCBhcyBz
dWNoLgorICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJs
ZTxzdGQ6OnN0cmluZz46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxs
eV9tb3ZlX2NvbnN0cnVjdGlibGU8c3RkOjp2ZWN0b3I8aW50Pj46OnZhbHVlKTsKKworICAvLyBW
ZXJpZnkgdGhhdCBzaW1wbGVfcGFpcnMgb2YgdHlwZXMgd2l0aG91dCB0cml2aWFsIG1vdmUgY29u
c3RydWN0b3JzCisgIC8vIGFyZSBub3QgbWFya2VkIGFzIHRyaXZpYWwuCisgIEVYUEVDVF9GQUxT
RSgoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTwKKyAgICAgICAgICAgICAg
ICBzaW1wbGVfcGFpcjxpbnQsIHN0ZDo6c3RyaW5nPj46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxT
RSgoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTwKKyAgICAgICAgICAgICAg
ICBzaW1wbGVfcGFpcjxzdGQ6OnN0cmluZywgaW50Pj46OnZhbHVlKSk7CisKKyAgLy8gVmVyaWZ5
IHRoYXQgYXJyYXlzIGFyZSBub3QKKyAgdXNpbmcgaW50MTAgPSBpbnRbMTBdOworICBFWFBFQ1Rf
RkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxpbnQxMD46OnZhbHVl
KTsKK30KKwogVEVTVChUeXBlVHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxDb3B5Q3RvcikgewogICAv
LyBWZXJpZnkgdGhhdCBhcml0aG1ldGljIHR5cGVzIGFuZCBwb2ludGVycyBoYXZlIHRyaXZpYWwg
Y29weQogICAvLyBjb25zdHJ1Y3RvcnMuCkBAIC00OTgsNiArNjQzLDEwIEBAIFRFU1QoVHlwZVRy
YWl0c1Rlc3QsIFRlc3RUcml2aWFsQ29weUN0b3IpIHsKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNf
dHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxzdGQ6OnN0cmluZyoqPjo6dmFsdWUpOwogICBF
WFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPFRyaXZpYWwq
Kj46OnZhbHVlKTsKIAorICAvLyBSZWZlcmVuY2UgdHlwZXMKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxpbnQmPjo6dmFsdWUpOworICBFWFBFQ1Rf
RkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxpbnQmJj46OnZhbHVl
KTsKKwogICAvLyB0eXBlcyB3aXRoIGNvbXBpbGVyIGdlbmVyYXRlZCBjb3B5IGN0b3JzCiAgIEVY
UEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8VHJpdmlhbD46
OnZhbHVlKTsKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0
aWJsZTxUcml2aWFsQ29weUN0b3I+Ojp2YWx1ZSk7CkBAIC01MDcsNyArNjU2LDkgQEAgVEVTVChU
eXBlVHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxDb3B5Q3RvcikgewogICAgICAgYWJzbDo6aXNfdHJp
dmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxOb250cml2aWFsQ29weUN0b3I+Ojp2YWx1ZSk7CiAg
IEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPERlbGV0
ZWRDb3B5Q3Rvcj46OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNFKAotICAgICAgYWJzbDo6aXNfdHJp
dmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxOb25Db3B5YWJsZT46OnZhbHVlKTsKKyAgICAgIGFi
c2w6OmlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8TW92YWJsZU5vbkNvcHlhYmxlPjo6
dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBhYnNsOjppc190cml2aWFsbHlfY29weV9j
b25zdHJ1Y3RpYmxlPE5vbkNvcHlhYmxlT3JNb3ZhYmxlPjo6dmFsdWUpOwogCiAjaWZkZWYgQUJT
TF9UUklWSUFMTFlfQ09OU1RSVUNUSUJMRV9WRVJJRllfVFJJVklBTExZX0RFU1RSVUNUSUJMRQog
ICAvLyB0eXBlIHdpdGggbm9udHJpdmlhbCBkZXN0cnVjdG9yIGFyZSBub250cml2aWFsIGNvcHkg
Y29uc3RydWJ0aWJsZQpAQCAtNTQzLDYgKzY5NCw3NCBAQCBURVNUKFR5cGVUcmFpdHNUZXN0LCBU
ZXN0VHJpdmlhbENvcHlDdG9yKSB7CiAgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlf
Y29weV9jb25zdHJ1Y3RpYmxlPGludDEwPjo6dmFsdWUpOwogfQogCitURVNUKFR5cGVUcmFpdHNU
ZXN0LCBUZXN0VHJpdmlhbE1vdmVBc3NpZ24pIHsKKyAgLy8gVmVyaWZ5IHRoYXQgYXJpdGhtZXRp
YyB0eXBlcyBhbmQgcG9pbnRlcnMgaGF2ZSB0cml2aWFsIG1vdmUKKyAgLy8gYXNzaWdubWVudCBv
cGVyYXRvcnMuCisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFi
bGU8Ym9vbD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVf
YXNzaWduYWJsZTxjaGFyPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFs
bHlfbW92ZV9hc3NpZ25hYmxlPHVuc2lnbmVkIGNoYXI+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVF
KGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8c2lnbmVkIGNoYXI+Ojp2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8d2NoYXJf
dD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWdu
YWJsZTxpbnQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3Zl
X2Fzc2lnbmFibGU8dW5zaWduZWQgaW50Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpp
c190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPGludDE2X3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9U
UlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8dWludDE2X3Q+Ojp2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8aW50NjRf
dD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWdu
YWJsZTx1aW50NjRfdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5
X21vdmVfYXNzaWduYWJsZTxmbG9hdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNf
dHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxkb3VibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVF
KGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8bG9uZyBkb3VibGU+Ojp2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8c3RkOjpz
dHJpbmcqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9h
c3NpZ25hYmxlPFRyaXZpYWwqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2
aWFsbHlfbW92ZV9hc3NpZ25hYmxlPGNvbnN0IHN0ZDo6c3RyaW5nKj46OnZhbHVlKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxjb25zdCBUcml2aWFs
Kj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWdu
YWJsZTxzdGQ6OnN0cmluZyoqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2
aWFsbHlfbW92ZV9hc3NpZ25hYmxlPFRyaXZpYWwqKj46OnZhbHVlKTsKKworICAvLyBjb25zdCBx
dWFsaWZpZWQgdHlwZXMgYXJlIG5vdCBhc3NpZ25hYmxlCisgIEVYUEVDVF9GQUxTRShhYnNsOjpp
c190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPGNvbnN0IGludD46OnZhbHVlKTsKKworICAvLyB0
eXBlcyB3aXRoIGNvbXBpbGVyIGdlbmVyYXRlZCBtb3ZlIGFzc2lnbm1lbnQKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxUcml2aWFsPjo6dmFsdWUpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPFRyaXZpYWxN
b3ZlQXNzaWduPjo6dmFsdWUpOworCisgIC8vIFZlcmlmeSB0aGF0IHR5cGVzIHdpdGhvdXQgdGhl
bSAoaS5lLiBub250cml2aWFsIG9yIGRlbGV0ZWQpIGFyZSBub3QuCisgIEVYUEVDVF9GQUxTRShh
YnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPE5vbnRyaXZpYWxDb3B5QXNzaWduPjo6
dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJs
ZTxEZWxldGVkQ29weUFzc2lnbj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3Ry
aXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8Tm9uQ29weWFibGVPck1vdmFibGU+Ojp2YWx1ZSk7CisK
KyAgLy8gdHlwZXMgd2l0aCB2dGFibGVzCisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFs
bHlfbW92ZV9hc3NpZ25hYmxlPEJhc2U+Ojp2YWx1ZSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgc2lt
cGxlX3BhaXIgaXMgdHJpdmlhbGx5IGFzc2lnbmFibGUKKyAgRVhQRUNUX1RSVUUoCisgICAgICAo
YWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxzaW1wbGVfcGFpcjxpbnQsIGNoYXIq
Pj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgKGFic2w6OmlzX3RyaXZpYWxseV9t
b3ZlX2Fzc2lnbmFibGU8c2ltcGxlX3BhaXI8aW50LCBUcml2aWFsPj46OnZhbHVlKSk7CisgIEVY
UEVDVF9UUlVFKChhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPAorICAgICAgICAg
ICAgICAgc2ltcGxlX3BhaXI8aW50LCBUcml2aWFsTW92ZUFzc2lnbj4+Ojp2YWx1ZSkpOworCisg
IC8vIFZlcmlmeSB0aGF0IHR5cGVzIG5vdCB0cml2aWFsbHkgbW92ZSBhc3NpZ25hYmxlIGFyZQor
ICAvLyBjb3JyZWN0bHkgbWFya2VkIGFzIHN1Y2guCisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190
cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPHN0ZDo6c3RyaW5nPjo6dmFsdWUpOworICBFWFBFQ1Rf
RkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxzdGQ6OnZlY3RvcjxpbnQ+
Pjo6dmFsdWUpOworCisgIC8vIFZlcmlmeSB0aGF0IHNpbXBsZV9wYWlycyBvZiB0eXBlcyBub3Qg
dHJpdmlhbGx5IG1vdmUgYXNzaWduYWJsZQorICAvLyBhcmUgbm90IG1hcmtlZCBhcyB0cml2aWFs
LgorICBFWFBFQ1RfRkFMU0UoKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8Cisg
ICAgICAgICAgICAgICAgc2ltcGxlX3BhaXI8aW50LCBzdGQ6OnN0cmluZz4+Ojp2YWx1ZSkpOwor
ICBFWFBFQ1RfRkFMU0UoKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8CisgICAg
ICAgICAgICAgICAgc2ltcGxlX3BhaXI8c3RkOjpzdHJpbmcsIGludD4+Ojp2YWx1ZSkpOworCisg
IC8vIFZlcmlmeSB0aGF0IGFycmF5cyBhcmUgbm90IHRyaXZpYWxseSBtb3ZlIGFzc2lnbmFibGUK
KyAgdXNpbmcgaW50MTAgPSBpbnRbMTBdOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlh
bGx5X21vdmVfYXNzaWduYWJsZTxpbnQxMD46OnZhbHVlKTsKKworICAvLyBWZXJpZnkgdGhhdCBy
ZWZlcmVuY2VzIGFyZSBoYW5kbGVkIGNvcnJlY3RseQorICBFWFBFQ1RfVFJVRShhYnNsOjppc190
cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPFRyaXZpYWwmJj46OnZhbHVlKTsKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxUcml2aWFsJj46OnZhbHVlKTsK
K30KKwogVEVTVChUeXBlVHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxDb3B5QXNzaWduKSB7CiAgIC8v
IFZlcmlmeSB0aGF0IGFyaXRobWV0aWMgdHlwZXMgYW5kIHBvaW50ZXJzIGhhdmUgdHJpdmlhbCBj
b3B5CiAgIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3JzLgpAQCAtNTc3LDcgKzc5Niw4IEBAIFRFU1Qo
VHlwZVRyYWl0c1Rlc3QsIFRlc3RUcml2aWFsQ29weUFzc2lnbikgewogICAvLyBWZXJpZnkgdGhh
dCB0eXBlcyB3aXRob3V0IHRoZW0gKGkuZS4gbm9udHJpdmlhbCBvciBkZWxldGVkKSBhcmUgbm90
LgogICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTxOb250
cml2aWFsQ29weUFzc2lnbj46OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZp
YWxseV9jb3B5X2Fzc2lnbmFibGU8RGVsZXRlZENvcHlBc3NpZ24+Ojp2YWx1ZSk7Ci0gIEVYUEVD
VF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPE5vbkNvcHlhYmxlPjo6
dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJs
ZTxNb3ZhYmxlTm9uQ29weWFibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190
cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPE5vbkNvcHlhYmxlT3JNb3ZhYmxlPjo6dmFsdWUpOwog
CiAgIC8vIHR5cGVzIHdpdGggdnRhYmxlcwogICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlh
bGx5X2NvcHlfYXNzaWduYWJsZTxCYXNlPjo6dmFsdWUpOwpAQCAtNjExLDYgKzgzMSwxMTYgQEAg
VEVTVChUeXBlVHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxDb3B5QXNzaWduKSB7CiAgIEVYUEVDVF9U
UlVFKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGU8VHJpdmlhbCY+Ojp2YWx1ZSk7
CiB9CiAKK1RFU1QoVHlwZVRyYWl0c1Rlc3QsIFRlc3RUcml2aWFsbHlDb3B5YWJsZSkgeworICAv
LyBWZXJpZnkgdGhhdCBhcml0aG1ldGljIHR5cGVzIGFuZCBwb2ludGVycyBhcmUgdHJpdmlhbGx5
IGNvcHlhYmxlLgorICBFWFBFQ1RfVFJVRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNf
dHJpdmlhbGx5X2NvcHlhYmxlPGJvb2w+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OnR5
cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8Y2hhcj46OnZhbHVlKTsK
KyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJp
dmlhbGx5X2NvcHlhYmxlPHVuc2lnbmVkIGNoYXI+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKAor
ICAgICAgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxz
aWduZWQgY2hhcj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3Ry
YWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPHdjaGFyX3Q+Ojp2YWx1ZSk7Cisg
IEVYUEVDVF9UUlVFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29w
eWFibGU8aW50Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJh
aXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8dW5zaWduZWQgaW50Pjo6dmFsdWUp
OworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190
cml2aWFsbHlfY29weWFibGU8aW50MTZfdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoCisgICAg
ICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPHVpbnQx
Nl90Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2lu
dGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8aW50NjRfdD46OnZhbHVlKTsKKyAgRVhQRUNU
X1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2Nv
cHlhYmxlPHVpbnQ2NF90Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjp0eXBlX3RyYWl0
c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPGZsb2F0Pjo6dmFsdWUpOworICBFWFBF
Q1RfVFJVRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxl
PGRvdWJsZT46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0
c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPGxvbmcgZG91YmxlPjo6dmFsdWUpOwor
ICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2
aWFsbHlfY29weWFibGU8c3RkOjpzdHJpbmcqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgKKyAg
ICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8VHJp
dmlhbCo+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFs
Ojppc190cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
Kj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRl
cm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPGNvbnN0IFRyaXZpYWwqPjo6dmFsdWUpOworICBF
WFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFs
bHlfY29weWFibGU8c3RkOjpzdHJpbmcqKj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoCisgICAg
ICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPFRyaXZp
YWwqKj46OnZhbHVlKTsKKworICAvLyBjb25zdCBxdWFsaWZpZWQgdHlwZXMgYXJlIG5vdCBhc3Np
Z25hYmxlIGJ1dCBhcmUgY29uc3RydWN0aWJsZQorICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6
OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8Y29uc3QgaW50Pjo6
dmFsdWUpOworCisgIC8vIFRyaXZpYWwgY29weSBjb25zdHJ1Y3Rvci9hc3NpZ25tZW50IGFuZCBk
ZXN0cnVjdG9yLgorICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVy
bmFsOjppc190cml2aWFsbHlfY29weWFibGU8VHJpdmlhbD46OnZhbHVlKTsKKyAgLy8gVHJpdmlh
bCBjb3B5IGFzc2lnbm1lbnQsIGJ1dCBub24tdHJpdmlhbCBjb3B5IGNvbnN0cnVjdG9yL2Rlc3Ry
dWN0b3IuCisgIEVYUEVDVF9GQUxTRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJp
dmlhbGx5X2NvcHlhYmxlPAorICAgICAgICAgICAgICAgVHJpdmlhbENvcHlBc3NpZ24+Ojp2YWx1
ZSk7CisgIC8vIFRyaXZpYWwgY29weSBjb25zdHJ1Y3RvciwgYnV0IG5vbi10cml2aWFsIGFzc2ln
bm1lbnQuCisgIEVYUEVDVF9GQUxTRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJp
dmlhbGx5X2NvcHlhYmxlPAorICAgICAgICAgICAgICAgVHJpdmlhbENvcHlDdG9yPjo6dmFsdWUp
OworCisgIC8vIFR5cGVzIHdpdGggYSBub24tdHJpdmlhbCBjb3B5IGNvbnN0cnVjdG9yL2Fzc2ln
bm1lbnQKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2
aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgICBOb250cml2aWFsQ29weUN0b3I+Ojp2YWx1
ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlh
bGx5X2NvcHlhYmxlPAorICAgICAgICAgICAgICAgTm9udHJpdmlhbENvcHlBc3NpZ24+Ojp2YWx1
ZSk7CisKKyAgLy8gVHlwZXMgd2l0aG91dCBjb3B5IGNvbnN0cnVjdG9yL2Fzc2lnbm1lbnQsIGJ1
dCB3aXRoIG1vdmUKKyAgLy8gTVNWQyBkaXNhZ3JlZXMgd2l0aCBvdGhlciBjb21waWxlcnMgYWJv
dXQgdGhpczoKKyAgLy8gRVhQRUNUX1RSVUUoYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6Omlz
X3RyaXZpYWxseV9jb3B5YWJsZTwKKyAgLy8gICAgICAgICAgICAgTW92YWJsZU5vbkNvcHlhYmxl
Pjo6dmFsdWUpOworCisgIC8vIFR5cGVzIHdpdGhvdXQgY29weS9tb3ZlIGNvbnN0cnVjdG9yL2Fz
c2lnbm1lbnQKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190
cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgICBOb25Db3B5YWJsZU9yTW92YWJsZT46
OnZhbHVlKTsKKworICAvLyBObyBjb3B5IGFzc2lnbiwgYnV0IGhhcyB0cml2aWFsIGNvcHkgY29u
c3RydWN0b3IuCisgIEVYUEVDVF9UUlVFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190
cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgIERlbGV0ZWRDb3B5QXNzaWduPjo6dmFs
dWUpOworCisgIC8vIHR5cGVzIHdpdGggdnRhYmxlcworICBFWFBFQ1RfRkFMU0UoYWJzbDo6dHlw
ZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxCYXNlPjo6dmFsdWUpOwor
CisgIC8vIFZlcmlmeSB0aGF0IHNpbXBsZV9wYWlyIGlzIHRyaXZpYWxseSBjb3B5YWJsZSBpZiBt
ZW1iZXJzIGFyZQorICBFWFBFQ1RfVFJVRSgoYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6Omlz
X3RyaXZpYWxseV9jb3B5YWJsZTwKKyAgICAgICAgICAgICAgIHNpbXBsZV9wYWlyPGludCwgY2hh
cio+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFs
Ojppc190cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxpbnQs
IFRyaXZpYWw+Pjo6dmFsdWUpKTsKKworICAvLyBWZXJpZnkgdGhhdCB0eXBlcyBub3QgdHJpdmlh
bGx5IGNvcHlhYmxlIGFyZQorICAvLyBjb3JyZWN0bHkgbWFya2VkIGFzIHN1Y2guCisgIEVYUEVD
VF9GQUxTRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlf
Y29weWFibGU8c3RkOjpzdHJpbmc+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjp0eXBl
X3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPAorICAgICAgICAgICAgICAg
c3RkOjp2ZWN0b3I8aW50Pj46OnZhbHVlKTsKKworICAvLyBWZXJpZnkgdGhhdCBzaW1wbGVfcGFp
cnMgb2YgdHlwZXMgbm90IHRyaXZpYWxseSBjb3B5YWJsZQorICAvLyBhcmUgbm90IG1hcmtlZCBh
cyB0cml2aWFsLgorICBFWFBFQ1RfRkFMU0UoKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjpp
c190cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgICAgc2ltcGxlX3BhaXI8aW50LCBz
dGQ6OnN0cmluZz4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKGFic2w6OnR5cGVfdHJhaXRz
X2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgICAgc2ltcGxl
X3BhaXI8c3RkOjpzdHJpbmcsIGludD4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKGFic2w6
OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAg
ICAgICAgc2ltcGxlX3BhaXI8aW50LCBUcml2aWFsQ29weUFzc2lnbj4+Ojp2YWx1ZSkpOworCisg
IC8vIFZlcmlmeSB0aGF0IGFycmF5cyBvZiB0cml2aWFsbHkgY29weWFibGUgdHlwZXMgYXJlIHRy
aXZpYWxseSBjb3B5YWJsZQorICB1c2luZyBpbnQxMCA9IGludFsxMF07CisgIEVYUEVDVF9UUlVF
KGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8aW50MTA+
Ojp2YWx1ZSk7CisgIHVzaW5nIGludDEweDEwID0gaW50WzEwXVsxMF07CisgIEVYUEVDVF9UUlVF
KAorICAgICAgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJs
ZTxpbnQxMHgxMD46OnZhbHVlKTsKKworICAvLyBWZXJpZnkgdGhhdCByZWZlcmVuY2VzIGFyZSBo
YW5kbGVkIGNvcnJlY3RseQorICBFWFBFQ1RfRkFMU0UoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0
c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPFRyaXZpYWwmJj46OnZhbHVlKTsKKyAg
RVhQRUNUX0ZBTFNFKAorICAgICAgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZp
YWxseV9jb3B5YWJsZTxUcml2aWFsJj46OnZhbHVlKTsKK30KKwogI2RlZmluZSBBQlNMX0lOVEVS
TkFMX0VYUEVDVF9BTElBU19FUVVJVkFMRU5DRSh0cmFpdF9uYW1lLCAuLi4pICAgICAgICAgIFwK
ICAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnRyYWl0X25hbWU8X19W
QV9BUkdTX18+Ojp0eXBlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dHJh
aXRfbmFtZSMjX3Q8X19WQV9BUkdTX18+Pjo6dmFsdWUpKQpAQCAtOTUzLDQgKzEyODMsODUgQEAg
VEVTVChUeXBlVHJhaXRzVGVzdCwgSXNNb3ZlQXNzaWduYWJsZSkgewogI2VuZGlmICAvLyBfTElC
Q1BQX1ZFUlNJT04KIH0KIAorbmFtZXNwYWNlIGFkbF9uYW1lc3BhY2UgeworCitzdHJ1Y3QgRGVs
ZXRlZFN3YXAgeworfTsKKwordm9pZCBzd2FwKERlbGV0ZWRTd2FwJiwgRGVsZXRlZFN3YXAmKSA9
IGRlbGV0ZTsKKworc3RydWN0IFNwZWNpYWxOb2V4Y2VwdFN3YXAgeworICBTcGVjaWFsTm9leGNl
cHRTd2FwKFNwZWNpYWxOb2V4Y2VwdFN3YXAmJikge30KKyAgU3BlY2lhbE5vZXhjZXB0U3dhcCYg
b3BlcmF0b3I9KFNwZWNpYWxOb2V4Y2VwdFN3YXAmJikgeyByZXR1cm4gKnRoaXM7IH0KKyAgflNw
ZWNpYWxOb2V4Y2VwdFN3YXAoKSA9IGRlZmF1bHQ7Cit9OworCit2b2lkIHN3YXAoU3BlY2lhbE5v
ZXhjZXB0U3dhcCYsIFNwZWNpYWxOb2V4Y2VwdFN3YXAmKSBub2V4Y2VwdCB7fQorCit9ICAvLyBu
YW1lc3BhY2UgYWRsX25hbWVzcGFjZQorCitURVNUKFR5cGVUcmFpdHNUZXN0LCBJc1N3YXBwYWJs
ZSkgeworICB1c2luZyBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNTd2FwcGFibGU7Cisg
IHVzaW5nIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjpTdGRTd2FwSXNVbmNvbnN0cmFpbmVk
OworCisgIEVYUEVDVF9UUlVFKElzU3dhcHBhYmxlPGludD46OnZhbHVlKTsKKworICBzdHJ1Y3Qg
UyB7fTsKKyAgRVhQRUNUX1RSVUUoSXNTd2FwcGFibGU8Uz46OnZhbHVlKTsKKworICBzdHJ1Y3Qg
Tm9Db25zdHJ1Y3QgeworICAgIE5vQ29uc3RydWN0KE5vQ29uc3RydWN0JiYpID0gZGVsZXRlOwor
ICAgIE5vQ29uc3RydWN0JiBvcGVyYXRvcj0oTm9Db25zdHJ1Y3QmJikgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICB+Tm9Db25zdHJ1Y3QoKSA9IGRlZmF1bHQ7CisgIH07CisKKyAgRVhQRUNUX0VRKElz
U3dhcHBhYmxlPE5vQ29uc3RydWN0Pjo6dmFsdWUsIFN0ZFN3YXBJc1VuY29uc3RyYWluZWQ6OnZh
bHVlKTsKKyAgc3RydWN0IE5vQXNzaWduIHsKKyAgICBOb0Fzc2lnbihOb0Fzc2lnbiYmKSB7fQor
ICAgIE5vQXNzaWduJiBvcGVyYXRvcj0oTm9Bc3NpZ24mJikgPSBkZWxldGU7CisgICAgfk5vQXNz
aWduKCkgPSBkZWZhdWx0OworICB9OworCisgIEVYUEVDVF9FUShJc1N3YXBwYWJsZTxOb0Fzc2ln
bj46OnZhbHVlLCBTdGRTd2FwSXNVbmNvbnN0cmFpbmVkOjp2YWx1ZSk7CisKKyAgRVhQRUNUX0ZB
TFNFKElzU3dhcHBhYmxlPGFkbF9uYW1lc3BhY2U6OkRlbGV0ZWRTd2FwPjo6dmFsdWUpOworCisg
IEVYUEVDVF9UUlVFKElzU3dhcHBhYmxlPGFkbF9uYW1lc3BhY2U6OlNwZWNpYWxOb2V4Y2VwdFN3
YXA+Ojp2YWx1ZSk7Cit9CisKK1RFU1QoVHlwZVRyYWl0c1Rlc3QsIElzTm90aHJvd1N3YXBwYWJs
ZSkgeworICB1c2luZyBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNOb3Rocm93U3dhcHBh
YmxlOworICB1c2luZyBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6U3RkU3dhcElzVW5jb25z
dHJhaW5lZDsKKworICBFWFBFQ1RfVFJVRShJc05vdGhyb3dTd2FwcGFibGU8aW50Pjo6dmFsdWUp
OworCisgIHN0cnVjdCBOb25Ob2V4Y2VwdE1vdmVzIHsKKyAgICBOb25Ob2V4Y2VwdE1vdmVzKE5v
bk5vZXhjZXB0TW92ZXMmJikge30KKyAgICBOb25Ob2V4Y2VwdE1vdmVzJiBvcGVyYXRvcj0oTm9u
Tm9leGNlcHRNb3ZlcyYmKSB7IHJldHVybiAqdGhpczsgfQorICAgIH5Ob25Ob2V4Y2VwdE1vdmVz
KCkgPSBkZWZhdWx0OworICB9OworCisgIEVYUEVDVF9GQUxTRShJc05vdGhyb3dTd2FwcGFibGU8
Tm9uTm9leGNlcHRNb3Zlcz46OnZhbHVlKTsKKworICBzdHJ1Y3QgTm9Db25zdHJ1Y3QgeworICAg
IE5vQ29uc3RydWN0KE5vQ29uc3RydWN0JiYpID0gZGVsZXRlOworICAgIE5vQ29uc3RydWN0JiBv
cGVyYXRvcj0oTm9Db25zdHJ1Y3QmJikgeyByZXR1cm4gKnRoaXM7IH0KKyAgICB+Tm9Db25zdHJ1
Y3QoKSA9IGRlZmF1bHQ7CisgIH07CisKKyAgRVhQRUNUX0ZBTFNFKElzTm90aHJvd1N3YXBwYWJs
ZTxOb0NvbnN0cnVjdD46OnZhbHVlKTsKKworICBzdHJ1Y3QgTm9Bc3NpZ24geworICAgIE5vQXNz
aWduKE5vQXNzaWduJiYpIHt9CisgICAgTm9Bc3NpZ24mIG9wZXJhdG9yPShOb0Fzc2lnbiYmKSA9
IGRlbGV0ZTsKKyAgICB+Tm9Bc3NpZ24oKSA9IGRlZmF1bHQ7CisgIH07CisKKyAgRVhQRUNUX0ZB
TFNFKElzTm90aHJvd1N3YXBwYWJsZTxOb0Fzc2lnbj46OnZhbHVlKTsKKworICBFWFBFQ1RfRkFM
U0UoSXNOb3Rocm93U3dhcHBhYmxlPGFkbF9uYW1lc3BhY2U6OkRlbGV0ZWRTd2FwPjo6dmFsdWUp
OworCisgIEVYUEVDVF9UUlVFKElzTm90aHJvd1N3YXBwYWJsZTxhZGxfbmFtZXNwYWNlOjpTcGVj
aWFsTm9leGNlcHRTd2FwPjo6dmFsdWUpOworfQorCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL251bWVyaWMvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0JVSUxELmJhemVs
CmluZGV4IDMyNGNlNjY5NWU0Li5kOWI1NjFkZmVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJp
Yy9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0JVSUxELmJhemVsCkBAIC00LDcgKzQs
NyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
IyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTMsOCArMTMsOSBAQAogIyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KIAogbG9hZCgKLSAgICAiLy9hYnNsOmNvcHRzLmJ6bCIsCisgICAg
Ii8vYWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKICAgICAiQUJTTF9ERUZBVUxUX0NP
UFRTIiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRTIiwKICAgICAiQUJTTF9URVNUX0NPUFRT
IiwKICkKIApAQCAtMzEsNiArMzIsNyBAQCBjY19saWJyYXJ5KAogICAgIF0sCiAgICAgaGRycyA9
IFsiaW50MTI4LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiLy9h
YnNsL2Jhc2U6Y29uZmlnIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCkBA
IC00NSw2ICs0Nyw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICJpbnQxMjhfdGVzdC5jYyIsCiAgICAg
XSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmludDEyOCIsCiAgICAgICAg
ICIvL2Fic2wvYmFzZSIsCkBAIC01OSw2ICs2Miw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJp
bnQxMjhfYmVuY2htYXJrIiwKICAgICBzcmNzID0gWyJpbnQxMjhfYmVuY2htYXJrLmNjIl0sCiAg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCiAgICAgdGFncyA9IFsiYmVuY2htYXJrIl0sCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjppbnQxMjgiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5nbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L251bWVyaWMvQlVJTEQuZ24KaW5kZXggZmRmYTJlMjcxZmYuLjU1YjZkMGI5ZWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvQlVJTEQuZ24K
QEAgLTYsNiArNiw3IEBAIGltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIikKIAog
aWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJh
c3Npc3RhbnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVz
dCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVt
ZXJpYy9DTWFrZUxpc3RzLnR4dAppbmRleCAzMzYwYjJlZTcyNi4uMjQyODg5ZjA4OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL251bWVyaWMvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9D
TWFrZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDQ5
ICsxNCw0NyBAQAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICMKIAotbGlzdChB
UFBFTkQgTlVNRVJJQ19QVUJMSUNfSEVBREVSUwotICAiaW50MTI4LmgiCi0pCi0KLQotIyBsaWJy
YXJ5IDEyOAotbGlzdChBUFBFTkQgSU5UMTI4X1NSQwotICAiaW50MTI4LmNjIgotICAke05VTUVS
SUNfUFVCTElDX0hFQURFUlN9Ci0pCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xf
aW50MTI4Ci0gIFNPVVJDRVMKLSAgICAke0lOVDEyOF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMK
LSAgICAke0lOVDEyOF9QVUJMSUNfTElCUkFSSUVTfQotICBFWFBPUlRfTkFNRQorYWJzbF9jY19s
aWJyYXJ5KAorICBOQU1FCiAgICAgaW50MTI4CisgIEhEUlMKKyAgICAiaW50MTI4LmgiCisgIFNS
Q1MKKyAgICAiaW50MTI4LmNjIgorICAgICJpbnQxMjhfaGF2ZV9pbnRyaW5zaWMuaW5jIgorICAg
ICJpbnQxMjhfbm9faW50cmluc2ljLmluYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycwor
ICBQVUJMSUMKICkKIAotCi1hYnNsX2hlYWRlcl9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNs
X251bWVyaWMKLSAgUFVCTElDX0xJQlJBUklFUworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAg
aW50MTI4X3Rlc3QKKyAgU1JDUworICAgICJpbnQxMjhfc3RyZWFtX3Rlc3QuY2MiCisgICAgImlu
dDEyOF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCiAg
ICAgYWJzbDo6aW50MTI4Ci0gIEVYUE9SVF9OQU1FCi0gICAgbnVtZXJpYworICAgIGFic2w6OmJh
c2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpoYXNoX3Rlc3RpbmcKKyAgICBh
YnNsOjp0eXBlX3RyYWl0cworICAgIGdtb2NrX21haW4KICkKIAotIyB0ZXN0IGludDEyOF90ZXN0
Ci1zZXQoSU5UMTI4X1RFU1RfU1JDICJpbnQxMjhfdGVzdC5jYyIpCi1zZXQoSU5UMTI4X1RFU1Rf
UFVCTElDX0xJQlJBUklFUyBhYnNsOjpudW1lcmljIGFic2w6OmJhc2UpCi0KLWFic2xfdGVzdCgK
LSAgVEFSR0VUCi0gICAgaW50MTI4X3Rlc3QKLSAgU09VUkNFUwotICAgICR7SU5UMTI4X1RFU1Rf
U1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtJTlQxMjhfVEVTVF9QVUJMSUNfTElCUkFS
SUVTfQorIyBjb21wb25lbnQgdGFyZ2V0CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBu
dW1lcmljCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjppbnQxMjgKKyAgUFVCTElDCiApCi0KLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmlj
L2ludDEyOC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4LmNjCmluZGV4IGNkNzk1MzRmM2JmLi45
M2I2MmM1MjkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjguY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbnVtZXJpYy9pbnQxMjguY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxj
YXNzZXJ0PgogI2luY2x1ZGUgPGlvbWFuaXA+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+ICAvLyBOT0xJ
TlQocmVhZGFiaWxpdHkvc3RyZWFtcykKKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UKHJl
YWRhYmlsaXR5L3N0cmVhbXMpCiAjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDxzdHJpbmc+
CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBpbmxpbmUg
aW50IEZsczEyOCh1aW50MTI4IG4pIHsKIAogLy8gTG9uZyBkaXZpc2lvbi9tb2R1bG8gZm9yIHVp
bnQxMjggaW1wbGVtZW50ZWQgdXNpbmcgdGhlIHNoaWZ0LXN1YnRyYWN0CiAvLyBkaXZpc2lvbiBh
bGdvcml0aG0gYWRhcHRlZCBmcm9tOgotLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0
aW9ucy81Mzg2Mzc3L2RpdmlzaW9uLXdpdGhvdXQtdXNpbmcKKy8vIGh0dHBzOi8vc3RhY2tvdmVy
Zmxvdy5jb20vcXVlc3Rpb25zLzUzODYzNzcvZGl2aXNpb24td2l0aG91dC11c2luZwogdm9pZCBE
aXZNb2RJbXBsKHVpbnQxMjggZGl2aWRlbmQsIHVpbnQxMjggZGl2aXNvciwgdWludDEyOCogcXVv
dGllbnRfcmV0LAogICAgICAgICAgICAgICAgIHVpbnQxMjgqIHJlbWFpbmRlcl9yZXQpIHsKICAg
YXNzZXJ0KGRpdmlzb3IgIT0gMCk7CkBAIC0xMjMsNiArMTIzLDI4IEBAIHVpbnQxMjggTWFrZVVp
bnQxMjhGcm9tRmxvYXQoVCB2KSB7CiAKICAgcmV0dXJuIE1ha2VVaW50MTI4KDAsIHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih2KSk7CiB9CisKKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykgJiYgIWRlZmlu
ZWQoX19TU0UzX18pCisvLyBXb3JrYXJvdW5kIGZvciBjbGFuZyBidWc6IGh0dHBzOi8vYnVncy5s
bHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyODkKKy8vIENhc3RpbmcgZnJvbSBsb25nIGRvdWJs
ZSB0byB1aW50NjRfdCBpcyBtaXNjb21waWxlZCBhbmQgZHJvcHMgYml0cy4KKy8vIEl0IGlzIG1v
cmUgd29yaywgc28gb25seSB1c2Ugd2hlbiB3ZSBuZWVkIHRoZSB3b3JrYXJvdW5kLgordWludDEy
OCBNYWtlVWludDEyOEZyb21GbG9hdChsb25nIGRvdWJsZSB2KSB7CisgIC8vIEdvIDUwIGJpdHMg
YXQgYSB0aW1lLCB0aGF0IGZpdHMgaW4gYSBkb3VibGUKKyAgc3RhdGljX2Fzc2VydChzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0cyA+PSA1MCwgIiIpOworICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBkb3VibGU+OjpkaWdpdHMgPD0gMTUwLCAiIik7Cisg
IC8vIFVuZGVmaW5lZCBiZWhhdmlvciBpZiB2IGlzIG5vdCBmaW5pdGUgb3IgY2Fubm90IGZpdCBp
bnRvIHVpbnQxMjguCisgIGFzc2VydChzdGQ6OmlzZmluaXRlKHYpICYmIHYgPiAtMSAmJiB2IDwg
c3RkOjpsZGV4cCgxLjBMLCAxMjgpKTsKKworICB2ID0gc3RkOjpsZGV4cCh2LCAtMTAwKTsKKyAg
dWludDY0X3QgdzAgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGQ6OnRydW5jKHYpKSk7CisgIHYgPSBzdGQ6OmxkZXhwKHYgLSBzdGF0aWNfY2FzdDxkb3VibGU+
KHcwKSwgNTApOworICB1aW50NjRfdCB3MSA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0aWNf
Y2FzdDxkb3VibGU+KHN0ZDo6dHJ1bmModikpKTsKKyAgdiA9IHN0ZDo6bGRleHAodiAtIHN0YXRp
Y19jYXN0PGRvdWJsZT4odzEpLCA1MCk7CisgIHVpbnQ2NF90IHcyID0gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjp0cnVuYyh2KSkpOworICByZXR1cm4gKHN0
YXRpY19jYXN0PHVpbnQxMjg+KHcwKSA8PCAxMDApIHwgKHN0YXRpY19jYXN0PHVpbnQxMjg+KHcx
KSA8PCA1MCkgfAorICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDEyOD4odzIpOworfQorI2VuZGlm
ICAvLyBfX2NsYW5nX18gJiYgIV9fU1NFM19fCiB9ICAvLyBuYW1lc3BhY2UKIAogdWludDEyODo6
dWludDEyOChmbG9hdCB2KSA6IHVpbnQxMjgoTWFrZVVpbnQxMjhGcm9tRmxvYXQodikpIHt9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjgu
aAppbmRleCA3OWI2MmE3NTg2Ni4uMTBiZThlY2E0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVy
aWMvaW50MTI4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjguaApAQCAtNSw3ICs1LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTksOCArMTksOCBAQAogLy8KIC8vIFRoaXMg
aGVhZGVyIGZpbGUgZGVmaW5lcyAxMjgtYml0IGludGVnZXIgdHlwZXMuCiAvLwotLy8gQ3VycmVu
dGx5LCB0aGlzIGZpbGUgZGVmaW5lcyBgdWludDEyOGAsIGFuIHVuc2lnbmVkIDEyOC1iaXQgaW50
ZWdlcjsgYSBzaWduZWQKLS8vIDEyOC1iaXQgaW50ZWdlciBpcyBmb3J0aGNvbWluZy4KKy8vIEN1
cnJlbnRseSwgdGhpcyBmaWxlIGRlZmluZXMgYHVpbnQxMjhgLCBhbiB1bnNpZ25lZCAxMjgtYml0
IGludGVnZXI7CisvLyBhIHNpZ25lZCAxMjgtYml0IGludGVnZXIgaXMgZm9ydGhjb21pbmcuCiAK
ICNpZm5kZWYgQUJTTF9OVU1FUklDX0lOVDEyOF9IXwogI2RlZmluZSBBQlNMX05VTUVSSUNfSU5U
MTI4X0hfCkBAIC0zNyw4ICszNywyMSBAQAogI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIK
ICNpbmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIgogCi1uYW1lc3BhY2UgYWJzbCB7CisjaWYgZGVm
aW5lZChfTVNDX1ZFUikKKy8vIEluIHZlcnkgb2xkIHZlcnNpb25zIG9mIE1TVkMgYW5kIHdoZW4g
dGhlIC9aYzp3Y2hhcl90IGZsYWcgaXMgb2ZmLCB3Y2hhcl90IGlzCisvLyBhIHR5cGVkZWYgZm9y
IHVuc2lnbmVkIHNob3J0LiAgT3RoZXJ3aXNlIHdjaGFyX3QgaXMgbWFwcGVkIHRvIHRoZSBfX3dj
aGFyX3QKKy8vIGJ1aWx0aW4gdHlwZS4gIFdlIG5lZWQgdG8gbWFrZSBzdXJlIG5vdCB0byBkZWZp
bmUgb3BlcmF0b3Igd2NoYXJfdCgpCisvLyBhbG9uZ3NpZGUgb3BlcmF0b3IgdW5zaWduZWQgc2hv
cnQoKSBpbiB0aGVzZSBpbnN0YW5jZXMuCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfV0NIQVJfVCBf
X3djaGFyX3QKKyNpZiBkZWZpbmVkKF9NX1g2NCkKKyNpbmNsdWRlIDxpbnRyaW4uaD4KKyNwcmFn
bWEgaW50cmluc2ljKF91bXVsMTI4KQorI2VuZGlmICAvLyBkZWZpbmVkKF9NX1g2NCkKKyNlbHNl
ICAgLy8gZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9XQ0hBUl9UIHdj
aGFyX3QKKyNlbmRpZiAgLy8gZGVmaW5lZChfTVNDX1ZFUikKIAorbmFtZXNwYWNlIGFic2wgewog
CiAvLyB1aW50MTI4CiAvLwpAQCAtMTI2LDcgKzEzOSw3IEBAIGNsYXNzCiAgIGNvbnN0ZXhwciBl
eHBsaWNpdCBvcGVyYXRvciB1bnNpZ25lZCBjaGFyKCkgY29uc3Q7CiAgIGNvbnN0ZXhwciBleHBs
aWNpdCBvcGVyYXRvciBjaGFyMTZfdCgpIGNvbnN0OwogICBjb25zdGV4cHIgZXhwbGljaXQgb3Bl
cmF0b3IgY2hhcjMyX3QoKSBjb25zdDsKLSAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIHdj
aGFyX3QoKSBjb25zdDsKKyAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIEFCU0xfSU5URVJO
QUxfV0NIQVJfVCgpIGNvbnN0OwogICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3Igc2hvcnQo
KSBjb25zdDsgIC8vIE5PTElOVChydW50aW1lL2ludCkKICAgLy8gTk9MSU5UTkVYVExJTkUocnVu
dGltZS9pbnQpCiAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVyYXRvciB1bnNpZ25lZCBzaG9ydCgp
IGNvbnN0OwpAQCAtMjI3LDggKzI0MCw4IEBAIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6
Om9zdHJlYW0mIG9zLCB1aW50MTI4IHYpOwogLy8gVE9ETyhzdHJlbCkgYWRkIG9wZXJhdG9yPj4o
c3RkOjppc3RyZWFtJiwgdWludDEyOCkKIAogY29uc3RleHByIHVpbnQxMjggVWludDEyOE1heCgp
IHsKLSAgcmV0dXJuIHVpbnQxMjgoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
LAotICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkp
OworICByZXR1cm4gdWludDEyOCgoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCko
KSwKKyAgICAgICAgICAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgp
KCkpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgYWJzbApAQCAtMjY2LDkgKzI3OSw5IEBAIGNsYXNz
IG51bWVyaWNfbGltaXRzPGFic2w6OnVpbnQxMjg+IHsKICNlbmRpZiAgLy8gQUJTTF9IQVZFX0lO
VFJJTlNJQ19JTlQxMjgKICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRpbnluZXNzX2JlZm9yZSA9
IGZhbHNlOwogCi0gIHN0YXRpYyBjb25zdGV4cHIgYWJzbDo6dWludDEyOCBtaW4oKSB7IHJldHVy
biAwOyB9CisgIHN0YXRpYyBjb25zdGV4cHIgYWJzbDo6dWludDEyOCAobWluKSgpIHsgcmV0dXJu
IDA7IH0KICAgc3RhdGljIGNvbnN0ZXhwciBhYnNsOjp1aW50MTI4IGxvd2VzdCgpIHsgcmV0dXJu
IDA7IH0KLSAgc3RhdGljIGNvbnN0ZXhwciBhYnNsOjp1aW50MTI4IG1heCgpIHsgcmV0dXJuIGFi
c2w6OlVpbnQxMjhNYXgoKTsgfQorICBzdGF0aWMgY29uc3RleHByIGFic2w6OnVpbnQxMjggKG1h
eCkoKSB7IHJldHVybiBhYnNsOjpVaW50MTI4TWF4KCk7IH0KICAgc3RhdGljIGNvbnN0ZXhwciBh
YnNsOjp1aW50MTI4IGVwc2lsb24oKSB7IHJldHVybiAwOyB9CiAgIHN0YXRpYyBjb25zdGV4cHIg
YWJzbDo6dWludDEyOCByb3VuZF9lcnJvcigpIHsgcmV0dXJuIDA7IH0KICAgc3RhdGljIGNvbnN0
ZXhwciBhYnNsOjp1aW50MTI4IGluZmluaXR5KCkgeyByZXR1cm4gMDsgfQpAQCAtMzg0LDEzICsz
OTcsMTMgQEAgY29uc3RleHByIHVpbnQxMjg6OnVpbnQxMjgodWludDY0X3QgaGlnaCwgdWludDY0
X3QgbG93KQogCiBjb25zdGV4cHIgdWludDEyODo6dWludDEyOChpbnQgdikKICAgICA6IGxvX3tz
dGF0aWNfY2FzdDx1aW50NjRfdD4odil9LAotICAgICAgaGlfe3YgPCAwID8gc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46Om1heCgpIDogMH0ge30KKyAgICAgIGhpX3t2IDwgMCA/IChzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KSgpIDogMH0ge30KIGNvbnN0ZXhwciB1aW50
MTI4Ojp1aW50MTI4KGxvbmcgdikgIC8vIE5PTElOVChydW50aW1lL2ludCkKICAgICA6IGxvX3tz
dGF0aWNfY2FzdDx1aW50NjRfdD4odil9LAotICAgICAgaGlfe3YgPCAwID8gc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46Om1heCgpIDogMH0ge30KKyAgICAgIGhpX3t2IDwgMCA/IChzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KSgpIDogMH0ge30KIGNvbnN0ZXhwciB1aW50
MTI4Ojp1aW50MTI4KGxvbmcgbG9uZyB2KSAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQogICAgIDog
bG9fe3N0YXRpY19jYXN0PHVpbnQ2NF90Pih2KX0sCi0gICAgICBoaV97diA8IDAgPyBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgOiAwfSB7fQorICAgICAgaGlfe3YgPCAwID8g
KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgpKCkgOiAwfSB7fQogCiBjb25zdGV4
cHIgdWludDEyODo6dWludDEyOCh1bnNpZ25lZCBpbnQgdikgOiBsb197dn0sIGhpX3swfSB7fQog
Ly8gTk9MSU5UTkVYVExJTkUocnVudGltZS9pbnQpCkBAIC00MTMsMTMgKzQyNiwxMyBAQCBjb25z
dGV4cHIgdWludDEyODo6dWludDEyOCh1aW50NjRfdCBoaWdoLCB1aW50NjRfdCBsb3cpCiAgICAg
OiBoaV97aGlnaH0sIGxvX3tsb3d9IHt9CiAKIGNvbnN0ZXhwciB1aW50MTI4Ojp1aW50MTI4KGlu
dCB2KQotICAgIDogaGlfe3YgPCAwID8gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpIDogMH0sCisgICAgOiBoaV97diA8IDAgPyAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCkoKSA6IDB9LAogICAgICAgbG9fe3N0YXRpY19jYXN0PHVpbnQ2NF90Pih2KX0ge30K
IGNvbnN0ZXhwciB1aW50MTI4Ojp1aW50MTI4KGxvbmcgdikgIC8vIE5PTElOVChydW50aW1lL2lu
dCkKLSAgICA6IGhpX3t2IDwgMCA/IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KSA6IDB9LAorICAgIDogaGlfe3YgPCAwID8gKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+
OjptYXgpKCkgOiAwfSwKICAgICAgIGxvX3tzdGF0aWNfY2FzdDx1aW50NjRfdD4odil9IHt9CiBj
b25zdGV4cHIgdWludDEyODo6dWludDEyOChsb25nIGxvbmcgdikgIC8vIE5PTElOVChydW50aW1l
L2ludCkKLSAgICA6IGhpX3t2IDwgMCA/IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgoKSA6IDB9LAorICAgIDogaGlfe3YgPCAwID8gKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0
X3Q+OjptYXgpKCkgOiAwfSwKICAgICAgIGxvX3tzdGF0aWNfY2FzdDx1aW50NjRfdD4odil9IHt9
CiAKIGNvbnN0ZXhwciB1aW50MTI4Ojp1aW50MTI4KHVuc2lnbmVkIGludCB2KSA6IGhpX3swfSwg
bG9fe3Z9IHt9CkBAIC00NjMsOCArNDc2LDggQEAgY29uc3RleHByIHVpbnQxMjg6Om9wZXJhdG9y
IGNoYXIzMl90KCkgY29uc3QgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcjMyX3Q+KGxvXyk7
CiB9CiAKLWNvbnN0ZXhwciB1aW50MTI4OjpvcGVyYXRvciB3Y2hhcl90KCkgY29uc3QgewotICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8d2NoYXJfdD4obG9fKTsKK2NvbnN0ZXhwciB1aW50MTI4OjpvcGVy
YXRvciBBQlNMX0lOVEVSTkFMX1dDSEFSX1QoKSBjb25zdCB7CisgIHJldHVybiBzdGF0aWNfY2Fz
dDxBQlNMX0lOVEVSTkFMX1dDSEFSX1Q+KGxvXyk7CiB9CiAKIC8vIE5PTElOVE5FWFRMSU5FKHJ1
bnRpbWUvaW50KQpAQCAtNjYxLDYgKzY3NCwxMiBAQCBpbmxpbmUgdWludDEyOCBvcGVyYXRvcioo
dWludDEyOCBsaHMsIHVpbnQxMjggcmhzKSB7CiAgIC8vIGNhbiBiZSB1c2VkIGZvciB1aW50MTI4
IHN0b3JhZ2UuCiAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBfX2ludDEyOD4obGhzKSAq
CiAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBfX2ludDEyOD4ocmhzKTsKKyNlbGlmIGRl
ZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQoX01fWDY0KQorICB1aW50NjRfdCBjYXJyeTsKKyAg
dWludDY0X3QgbG93ID0gX3VtdWwxMjgoVWludDEyOExvdzY0KGxocyksIFVpbnQxMjhMb3c2NChy
aHMpLCAmY2FycnkpOworICByZXR1cm4gTWFrZVVpbnQxMjgoVWludDEyOExvdzY0KGxocykgKiBV
aW50MTI4SGlnaDY0KHJocykgKworICAgICAgICAgICAgICAgICAgICAgICAgIFVpbnQxMjhIaWdo
NjQobGhzKSAqIFVpbnQxMjhMb3c2NChyaHMpICsgY2FycnksCisgICAgICAgICAgICAgICAgICAg
ICBsb3cpOwogI2Vsc2UgICAvLyBBQlNMX0hBVkVfSU5UUklOU0lDMTI4CiAgIHVpbnQ2NF90IGEz
MiA9IFVpbnQxMjhMb3c2NChsaHMpID4+IDMyOwogICB1aW50NjRfdCBhMDAgPSBVaW50MTI4TG93
NjQobGhzKSAmIDB4ZmZmZmZmZmY7CkBAIC03MDgsNCArNzI3LDYgQEAgaW5saW5lIHVpbnQxMjgm
IHVpbnQxMjg6Om9wZXJhdG9yLS0oKSB7CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKKyN1bmRl
ZiBBQlNMX0lOVEVSTkFMX1dDSEFSX1QKKwogI2VuZGlmICAvLyBBQlNMX05VTUVSSUNfSU5UMTI4
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9iZW5jaG1hcmsuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9udW1lcmljL2ludDEyOF9iZW5jaG1hcmsuY2MKaW5kZXggMWNiN2QwZWQ4N2UuLmE1NTAyZDky
N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9iZW5jaG1hcmsuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbnVtZXJpYy9pbnQxMjhfYmVuY2htYXJrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9oYXZl
X2ludHJpbnNpYy5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9oYXZlX2ludHJpbnNpYy5pbmMK
aW5kZXggZWUyYTA5MzAxOGQuLmM3ZWE2ODM0NTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmlj
L2ludDEyOF9oYXZlX2ludHJpbnNpYy5pbmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfaGF2
ZV9pbnRyaW5zaWMuaW5jCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CkBAIC0xNSw0ICsxNSw0IEBACiAKIC8vIFRoaXMgZmlsZSBjb250YWlucyA6aW50MTI4IGltcGxl
bWVudGF0aW9uIGRldGFpbHMgdGhhdCBkZXBlbmQgb24gaW50ZXJuYWwKIC8vIHJlcHJlc2VudGF0
aW9uIHdoZW4gQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjggaXMgZGVmaW5lZC4gVGhpcyBmaWxl
IGlzCi0vLyBpbmNsdWRlZCBieSBpbnQxMjguaC4KKy8vIGluY2x1ZGVkIGJ5IGludDEyOC5oIGFu
ZCByZWxpZXMgb24gQUJTTF9JTlRFUk5BTF9XQ0hBUl9UIGJlaW5nIGRlZmluZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9ub19pbnRyaW5zaWMuaW5jIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJp
Yy9pbnQxMjhfbm9faW50cmluc2ljLmluYwppbmRleCAwZDBiM2NmZGViMS4uMDQ2Y2I5YjNhNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X25vX2ludHJpbnNpYy5pbmMKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbnVtZXJpYy9pbnQxMjhfbm9faW50cmluc2ljLmluYwpAQCAtNSw3ICs1LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTUsNCArMTUsNCBAQAogCiAvLyBUaGlzIGZpbGUg
Y29udGFpbnMgOmludDEyOCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXQgZGVwZW5kIG9uIGlu
dGVybmFsCiAvLyByZXByZXNlbnRhdGlvbiB3aGVuIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4
IGlzICpub3QqIGRlZmluZWQuIFRoaXMgZmlsZQotLy8gaXMgaW5jbHVkZWQgYnkgaW50MTI4Lmgu
CisvLyBpcyBpbmNsdWRlZCBieSBpbnQxMjguaCBhbmQgcmVsaWVzIG9uIEFCU0xfSU5URVJOQUxf
V0NIQVJfVCBiZWluZyBkZWZpbmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhf
c3RyZWFtX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9zdHJlYW1fdGVzdC5jYwppbmRl
eCAwOWVmYWFkNGU3Zi4uM2NmYTlkYzE4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50
MTI4X3N0cmVhbV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3N0cmVhbV90ZXN0
LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9udW1lcmljL2ludDEyOF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfdGVz
dC5jYwppbmRleCBkZmUzNDc1YWNhMC4uNWUxYjVlYzM1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251
bWVyaWMvaW50MTI4X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfdGVzdC5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNTEsNyArNTEsNyBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIFVpbnQxMjhGbG9hdFRyYWl0c1Rlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OwogdHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGZsb2F0
LCBkb3VibGUsIGxvbmcgZG91YmxlPiBGbG9hdGluZ1BvaW50VHlwZXM7CiAKLVRZUEVEX1RFU1Rf
Q0FTRShVaW50MTI4SW50ZWdlclRyYWl0c1Rlc3QsIEludGVnZXJUeXBlcyk7CitUWVBFRF9URVNU
X1NVSVRFKFVpbnQxMjhJbnRlZ2VyVHJhaXRzVGVzdCwgSW50ZWdlclR5cGVzKTsKIAogVFlQRURf
VEVTVChVaW50MTI4SW50ZWdlclRyYWl0c1Rlc3QsIENvbnN0cnVjdEFzc2lnblRlc3QpIHsKICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnN0cnVjdGlibGU8YWJzbDo6dWludDEyOCwgVHlwZVBh
cmFtPjo6dmFsdWUsCkBAIC02Miw3ICs2Miw3IEBAIFRZUEVEX1RFU1QoVWludDEyOEludGVnZXJU
cmFpdHNUZXN0LCBDb25zdHJ1Y3RBc3NpZ25UZXN0KSB7CiAgICAgICAgICAgICAgICAgIlR5cGVQ
YXJhbSBtdXN0IG5vdCBiZSBhc3NpZ25hYmxlIGZyb20gYWJzbDo6dWludDEyOCIpOwogfQogCi1U
WVBFRF9URVNUX0NBU0UoVWludDEyOEZsb2F0VHJhaXRzVGVzdCwgRmxvYXRpbmdQb2ludFR5cGVz
KTsKK1RZUEVEX1RFU1RfU1VJVEUoVWludDEyOEZsb2F0VHJhaXRzVGVzdCwgRmxvYXRpbmdQb2lu
dFR5cGVzKTsKIAogVFlQRURfVEVTVChVaW50MTI4RmxvYXRUcmFpdHNUZXN0LCBDb25zdHJ1Y3RB
c3NpZ25UZXN0KSB7CiAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6
OnVpbnQxMjgsIFR5cGVQYXJhbT46OnZhbHVlLApAQCAtMjcxLDYgKzI3MSwyMCBAQCBURVNUKFVp
bnQxMjgsIENvbnZlcnNpb25UZXN0cykgewogICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8YWJzbDo6
dWludDEyOD4ocm91bmRfdG9femVybyksIDApOwogICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8YWJz
bDo6dWludDEyOD4ocm91bmRfdG9fZml2ZSksIDUpOwogICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
YWJzbDo6dWludDEyOD4ocm91bmRfdG9fbmluZSksIDkpOworCisgIGFic2w6OnVpbnQxMjggaGln
aGVzdF9wcmVjaXNpb25faW5fbG9uZ19kb3VibGUgPQorICAgICAgfmFic2w6OnVpbnQxMjh7fSA+
PiAoMTI4IC0gc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGRvdWJsZT46OmRpZ2l0cyk7CisgIEVY
UEVDVF9FUShoaWdoZXN0X3ByZWNpc2lvbl9pbl9sb25nX2RvdWJsZSwKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PGFic2w6OnVpbnQxMjg+KAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGxv
bmcgZG91YmxlPihoaWdoZXN0X3ByZWNpc2lvbl9pbl9sb25nX2RvdWJsZSkpKTsKKyAgLy8gQXBw
bHkgYSBtYXNrIGp1c3QgdG8gbWFrZSBzdXJlIGFsbCB0aGUgYml0cyBhcmUgdGhlIHJpZ2h0IHBs
YWNlLgorICBjb25zdCBhYnNsOjp1aW50MTI4IGFyYml0cmFyeV9tYXNrID0KKyAgICAgIGFic2w6
Ok1ha2VVaW50MTI4KDB4YTI5ZjYyMjY3N2RlZDc1MSwgMHhmOGNhNjZhZGQwNzZmNDY4KTsKKyAg
RVhQRUNUX0VRKGhpZ2hlc3RfcHJlY2lzaW9uX2luX2xvbmdfZG91YmxlICYgYXJiaXRyYXJ5X21h
c2ssCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxhYnNsOjp1aW50MTI4PihzdGF0aWNfY2FzdDxs
b25nIGRvdWJsZT4oCisgICAgICAgICAgICAgICAgaGlnaGVzdF9wcmVjaXNpb25faW5fbG9uZ19k
b3VibGUgJiBhcmJpdHJhcnlfbWFzaykpKTsKKworICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8YWJz
bDo6dWludDEyOD4oLTAuMUwpLCAwKTsKIH0KIAogVEVTVChVaW50MTI4LCBPcGVyYXRvckFzc2ln
blJldHVyblJlZikgewpAQCAtNDQwLDQgKzQ1NCwyOSBAQCBURVNUKFVpbnQxMjgsIE51bWVyaWNM
aW1pdHNUZXN0KSB7CiAgIEVYUEVDVF9FUShhYnNsOjpVaW50MTI4TWF4KCksIHN0ZDo6bnVtZXJp
Y19saW1pdHM8YWJzbDo6dWludDEyOD46Om1heCgpKTsKIH0KIAorVEVTVChVaW50MTI4LCBIYXNo
KSB7CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3Jy
ZWN0bHkoeworICAgICAgLy8gU29tZSBzaW1wbGUgdmFsdWVzCisgICAgICBhYnNsOjp1aW50MTI4
ezB9LAorICAgICAgYWJzbDo6dWludDEyOHsxfSwKKyAgICAgIH5hYnNsOjp1aW50MTI4e30sCisg
ICAgICAvLyA2NCBiaXQgbGltaXRzCisgICAgICBhYnNsOjp1aW50MTI4e3N0ZDo6bnVtZXJpY19s
aW1pdHM8aW50NjRfdD46Om1heCgpfSwKKyAgICAgIGFic2w6OnVpbnQxMjh7c3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46Om1heCgpfSArIDAsCisgICAgICBhYnNsOjp1aW50MTI4e3N0ZDo6
bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKX0gKyAxLAorICAgICAgYWJzbDo6dWludDEy
OHtzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCl9ICsgMiwKKyAgICAgIC8vIEtl
ZXBpbmcgaGlnaCBzYW1lCisgICAgICBhYnNsOjp1aW50MTI4ezF9IDw8IDYyLAorICAgICAgYWJz
bDo6dWludDEyOHsxfSA8PCA2MywKKyAgICAgIC8vIEtlZXBpbmcgbG93IHNhbWUKKyAgICAgIGFi
c2w6OnVpbnQxMjh7MX0gPDwgNjQsCisgICAgICBhYnNsOjp1aW50MTI4ezF9IDw8IDY1LAorICAg
ICAgLy8gMTI4IGJpdCBsaW1pdHMKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8YWJzbDo6dWlu
dDEyOD46Om1heCgpLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxhYnNsOjp1aW50MTI4Pjo6
bWF4KCkgLSAxLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxhYnNsOjp1aW50MTI4Pjo6bWlu
KCkgKyAxLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxhYnNsOjp1aW50MTI4Pjo6bWluKCks
CisgIH0pKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
QlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vQlVJTEQuYmF6ZWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY3NTg3YmY5YTlhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL0JVSUxELmJhemVsCkBAIC0wLDAgKzEsMzkwIEBACisjIEFCU0wgcmFuZG9tLW51
bWJlciBnZW5lcmF0aW9uIGxpYnJhcmllcy4KKworbG9hZCgKKyAgICAiLy9hYnNsOmNvcHRzL2Nv
bmZpZ3VyZV9jb3B0cy5iemwiLAorICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAorICAgICJBQlNM
X0RFRkFVTFRfTElOS09QVFMiLAorICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBRyIsCisgICAgIkFC
U0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwKKyAgICAiQUJTTF9URVNUX0NPUFRTIiwKKykK
KworcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkK
KworbGljZW5zZXMoWyJub3RpY2UiXSkgICMgQXBhY2hlIDIuMAorCitjY19saWJyYXJ5KAorICAg
IG5hbWUgPSAicmFuZG9tIiwKKyAgICBoZHJzID0gWyJyYW5kb20uaCJdLAorICAgIGNvcHRzID0g
QUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6c2Vl
ZF9zZXF1ZW5jZXMiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpub25zZWN1cmVf
YmFzZSIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOnBjZ19lbmdpbmUiLAorICAg
ICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpwb29sX3VyYmciLAorICAgICAgICAiLy9hYnNs
L3JhbmRvbS9pbnRlcm5hbDpyYW5kZW5fZW5naW5lIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5
KAorICAgIG5hbWUgPSAiZGlzdHJpYnV0aW9ucyIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImRp
c2NyZXRlX2Rpc3RyaWJ1dGlvbi5jYyIsCisgICAgICAgICJnYXVzc2lhbl9kaXN0cmlidXRpb24u
Y2MiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgImJlcm5vdWxsaV9kaXN0cmlidXRp
b24uaCIsCisgICAgICAgICJiZXRhX2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAgICAgImRpc2NyZXRl
X2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAgICAgImRpc3RyaWJ1dGlvbl9mb3JtYXRfdHJhaXRzLmgi
LAorICAgICAgICAiZGlzdHJpYnV0aW9ucy5oIiwKKyAgICAgICAgImV4cG9uZW50aWFsX2Rpc3Ry
aWJ1dGlvbi5oIiwKKyAgICAgICAgImdhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAgICAg
ImxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIsCisgICAgICAgICJwb2lzc29uX2Rpc3Ry
aWJ1dGlvbi5oIiwKKyAgICAgICAgInVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAg
ICAgInVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24uaCIsCisgICAgICAgICJ6aXBmX2Rpc3RyaWJ1
dGlvbi5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxp
bmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICIv
L2Fic2wvYmFzZTpiYXNlX2ludGVybmFsIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVh
ZGVycyIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fi
c2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1dGlvbl9pbXBsIiwKKyAgICAgICAgIi8vYWJzbC9y
YW5kb20vaW50ZXJuYWw6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2lu
dGVybmFsOmZhc3RfdW5pZm9ybV9iaXRzIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJu
YWw6ZmFzdG1hdGgiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDppb3N0cmVhbV9z
dGF0ZV9zYXZlciIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOnRyYWl0cyIsCisg
ICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOnVuaWZvcm1faGVscGVyIiwKKyAgICAgICAg
Ii8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpzcGFuIiwKKyAgICBdLAor
KQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAic2VlZF9nZW5fZXhjZXB0aW9uIiwKKyAgICBz
cmNzID0gWyJzZWVkX2dlbl9leGNlcHRpb24uY2MiXSwKKyAgICBoZHJzID0gWyJzZWVkX2dlbl9l
eGNlcHRpb24uaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTICsgQUJTTF9FWENF
UFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BU
UyArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWyIvL2Fic2wvYmFzZTpjb25m
aWciXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInNlZWRfc2VxdWVuY2VzIiwKKyAg
ICBzcmNzID0gWyJzZWVkX3NlcXVlbmNlcy5jYyJdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJz
ZWVkX3NlcXVlbmNlcy5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICI6c2VlZF9nZW5fZXhjZXB0aW9uIiwKKyAgICAgICAgIi8vYWJzbC9jb250YWluZXI6
aW5saW5lZF92ZWN0b3IiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpub25zZWN1
cmVfYmFzZSIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOnBvb2xfdXJiZyIsCisg
ICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOnNhbHRlZF9zZWVkX3NlcSIsCisgICAgICAg
ICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOnNlZWRfbWF0ZXJpYWwiLAorICAgICAgICAiLy9hYnNs
L3R5cGVzOnNwYW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJiZXJub3Vs
bGlfZGlzdHJpYnV0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHRpbWVvdXQg
PSAiZXRlcm5hbCIsICAjIEFuZHJvaWQgY2FuIHRha2UgYSB2ZXJ5IGxvbmcgdGltZQorICAgIHNy
Y3MgPSBbImJlcm5vdWxsaV9kaXN0cmlidXRpb25fdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJT
TF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAg
IGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6cmFuZG9tIiwK
KyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6c2VxdWVuY2VfdXJiZyIsCisgICAgICAg
ICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2Nf
dGVzdCgKKyAgICBuYW1lID0gImJldGFfZGlzdHJpYnV0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAi
c21hbGwiLAorICAgIHRpbWVvdXQgPSAiZXRlcm5hbCIsICAjIEFuZHJvaWQgY2FuIHRha2UgYSB2
ZXJ5IGxvbmcgdGltZQorICAgIHNyY3MgPSBbImJldGFfZGlzdHJpYnV0aW9uX3Rlc3QuY2MiXSwK
KyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3RyaWJ1dGlvbnMiLAorICAg
ICAgICAiOnJhbmRvbSIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wv
cmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1dGlvbl90ZXN0X3V0aWwiLAorICAgICAgICAiLy9hYnNs
L3JhbmRvbS9pbnRlcm5hbDpzZXF1ZW5jZV91cmJnIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdz
IiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzOnN0cl9mb3JtYXQiLAorICAgICAgICAiQGNvbV9n
b29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisg
ICAgbmFtZSA9ICJkaXN0cmlidXRpb25zX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAg
IHNyY3MgPSBbCisgICAgICAgICJkaXN0cmlidXRpb25zX3Rlc3QuY2MiLAorICAgIF0sCisgICAg
Y29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAg
IjpyYW5kb20iLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpkaXN0cmlidXRpb25f
dGVzdF91dGlsIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWlu
IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ2VuZXJhdG9yc190ZXN0IiwK
KyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnZW5lcmF0b3JzX3Rlc3QuY2MiXSwK
KyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3RyaWJ1dGlvbnMiLAorICAg
ICAgICAiOnJhbmRvbSIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3Rf
bWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImxvZ191bmlmb3JtX2lu
dF9kaXN0cmlidXRpb25fdGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBb
CisgICAgICAgICJsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uX3Rlc3QuY2MiLAorICAgIF0s
CisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAg
ICAgICAgIjpyYW5kb20iLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNs
L2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6ZGlz
dHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOnNl
cXVlbmNlX3VyYmciLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNs
L3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImRpc2NyZXRl
X2Rpc3RyaWJ1dGlvbl90ZXN0IiwKKyAgICBzaXplID0gIm1lZGl1bSIsCisgICAgc3JjcyA9IFsK
KyAgICAgICAgImRpc2NyZXRlX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6
cmFuZG9tIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20v
aW50ZXJuYWw6ZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgICAgICIvL2Fic2wvcmFuZG9t
L2ludGVybmFsOnNlcXVlbmNlX3VyYmciLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAg
ICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisK
K2NjX3Rlc3QoCisgICAgbmFtZSA9ICJwb2lzc29uX2Rpc3RyaWJ1dGlvbl90ZXN0IiwKKyAgICBz
aXplID0gInNtYWxsIiwKKyAgICB0aW1lb3V0ID0gImV0ZXJuYWwiLCAgIyBBbmRyb2lkIGNhbiB0
YWtlIGEgdmVyeSBsb25nIHRpbWUKKyAgICBzcmNzID0gWworICAgICAgICAicG9pc3Nvbl9kaXN0
cmlidXRpb25fdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB0YWdzID0gWworICAg
ICAgICAjIFRvbyBTbG93LgorICAgICAgICAibm9fdGVzdF9hbmRyb2lkX2FybSIsCisgICAgICAg
ICJub190ZXN0X2xvb25peCIsCisgICAgXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3Ry
aWJ1dGlvbnMiLAorICAgICAgICAiOnJhbmRvbSIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisg
ICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL2NvbnRh
aW5lcjpmbGF0X2hhc2hfbWFwIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6ZGlz
dHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOnNl
cXVlbmNlX3VyYmciLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNs
L3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImV4cG9uZW50
aWFsX2Rpc3RyaWJ1dGlvbl90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0g
WyJleHBvbmVudGlhbF9kaXN0cmlidXRpb25fdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRl
cHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6cmFuZG9tIiwKKyAg
ICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIs
CisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1dGlvbl90ZXN0X3V0aWwi
LAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpzZXF1ZW5jZV91cmJnIiwKKyAgICAg
ICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzOnN0cl9mb3JtYXQi
LAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0s
CispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJnYXVzc2lhbl9kaXN0cmlidXRpb25fdGVzdCIs
CisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgdGltZW91dCA9ICJldGVybmFsIiwgICMgQW5kcm9p
ZCBjYW4gdGFrZSBhIHZlcnkgbG9uZyB0aW1lCisgICAgc3JjcyA9IFsKKyAgICAgICAgImdhdXNz
aWFuX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMg
PSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6cmFuZG9tIiwKKyAgICAg
ICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisg
ICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1dGlvbl90ZXN0X3V0aWwiLAor
ICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpzZXF1ZW5jZV91cmJnIiwKKyAgICAgICAg
Ii8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzOnN0cl9mb3JtYXQiLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCisp
CisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJ1bmlmb3JtX2ludF9kaXN0cmlidXRpb25fdGVzdCIs
CisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHRpbWVvdXQgPSAibG9uZyIsCisgICAgc3JjcyA9
IFsKKyAgICAgICAgInVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIiwKKyAgICBdLAor
ICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAg
ICAgICI6cmFuZG9tIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9y
YW5kb20vaW50ZXJuYWw6ZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgICAgICIvL2Fic2wv
cmFuZG9tL2ludGVybmFsOnNlcXVlbmNlX3VyYmciLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3Mi
LAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0s
CispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJ1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uX3Rl
c3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWworICAgICAgICAidW5pZm9y
bV9yZWFsX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHRh
Z3MgPSBbCisgICAgICAgICJub190ZXN0X2FuZHJvaWRfYXJtIiwKKyAgICAgICAgIm5vX3Rlc3Rf
YW5kcm9pZF9hcm02NCIsCisgICAgICAgICJub190ZXN0X2FuZHJvaWRfeDg2IiwKKyAgICBdLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6cmFuZG9t
IiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJu
YWw6ZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVy
bmFsOnNlcXVlbmNlX3VyYmciLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAi
QGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rl
c3QoCisgICAgbmFtZSA9ICJ6aXBmX2Rpc3RyaWJ1dGlvbl90ZXN0IiwKKyAgICBzaXplID0gIm1l
ZGl1bSIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgInppcGZfZGlzdHJpYnV0aW9uX3Rlc3QuY2Mi
LAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBB
QlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRp
b25zIiwKKyAgICAgICAgIjpyYW5kb20iLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAg
ICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpkaXN0cmlidXRpb25fdGVzdF91dGlsIiwKKyAgICAg
ICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6c2VxdWVuY2VfdXJiZyIsCisgICAgICAgICIvL2Fi
c2wvc3RyaW5ncyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFp
biIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImV4YW1wbGVzX3Rlc3QiLAor
ICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImV4YW1wbGVzX3Rlc3QuY2MiXSwKKyAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOnJhbmRvbSIsCisgICAgICAgICJAY29t
X2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgK
KyAgICBuYW1lID0gInNlZWRfc2VxdWVuY2VzX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbInNlZWRfc2VxdWVuY2VzX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xf
VEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBk
ZXBzID0gWworICAgICAgICAiOnJhbmRvbSIsCisgICAgICAgICI6c2VlZF9zZXF1ZW5jZXMiLAor
ICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpub25zZWN1cmVfYmFzZSIsCisgICAgICAg
ICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworQkVO
Q0hNQVJLX1RBR1MgPSBbCisgICAgImJlbmNobWFyayIsCisgICAgIm5vX3Rlc3RfYW5kcm9pZF9h
cm0iLAorICAgICJub190ZXN0X2FuZHJvaWRfYXJtNjQiLAorICAgICJub190ZXN0X2FuZHJvaWRf
eDg2IiwKKyAgICAibm9fdGVzdF9kYXJ3aW5feDg2XzY0IiwKKyAgICAibm9fdGVzdF9pb3NfeDg2
XzY0IiwKKyAgICAibm9fdGVzdF9sb29uaXgiLAorICAgICJub190ZXN0X21zdmNfeDY0IiwKKyAg
ICAibm9fdGVzdF93YXNtIiwKK10KKworIyBCZW5jaG1hcmtzIGZvciB2YXJpb3VzIG1ldGhvZHMg
LyB0ZXN0IHV0aWxpdGllcworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiYmVuY2htYXJrcyIsCisg
ICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbCisgICAgICAgICJiZW5jaG1hcmtzLmNjIiwK
KyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHRhZ3MgPSBCRU5DSE1BUktfVEFHUywKKyAgICBkZXBz
ID0gWworICAgICAgICAiOmRpc3RyaWJ1dGlvbnMiLAorICAgICAgICAiOnJhbmRvbSIsCisgICAg
ICAgICI6c2VlZF9zZXF1ZW5jZXMiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJz
IiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9y
YW5kb20vaW50ZXJuYWw6ZmFzdF91bmlmb3JtX2JpdHMiLAorICAgICAgICAiLy9hYnNsL3JhbmRv
bS9pbnRlcm5hbDpyYW5kZW5fZW5naW5lIiwKKyAgICAgICAgIkBjb21fZ2l0aHViX2dvb2dsZV9i
ZW5jaG1hcmsvLzpiZW5jaG1hcmtfbWFpbiIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9CVUlMRC5nbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzBlMDk0YTVjNDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vQlVJTEQuZ24KQEAgLTAsMCArMSwxMjYgQEAKKyMgQ29weXJpZ2h0IDIwMTgg
VGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworaW1wb3J0KCIvL2J1aWxkX292ZXJy
aWRlcy9idWlsZC5nbmkiKQorCisjIFVzYWdlIG9mIEFic2VpbCBpbiBDaHJvbWl1bSBpcyBndWFy
ZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRkaW5nIHByb2plY3Rz
IHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1bS5vcmcgYW5kIEND
OgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoK
KyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRt
MXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQoraWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKKyAg
dmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCisgICAgIi8vdGhpcmRfcGFy
dHkvd2VicnRjLyoiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCisgICAgIi8v
dGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCisgICAgIi8vdGhpcmRfcGFydHkvb3BlbnNj
cmVlbi8qIiwKKyAgXQorfSBlbHNlIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KK30KKworc291
cmNlX3NldCgicmFuZG9tIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBp
bGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmln
L2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMg
PSBbCisgICAgInJhbmRvbS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6ZGlzdHJpYnV0aW9u
cyIsCisgICAgIjpzZWVkX3NlcXVlbmNlcyIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpub25z
ZWN1cmVfYmFzZSIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpwY2dfZW5naW5lIiwKKyAgICAi
Li4vcmFuZG9tL2ludGVybmFsOnBvb2xfdXJiZyIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpy
YW5kZW5fZW5naW5lIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJkaXN0cmlidXRpb25zIikgewor
ICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0K
KyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVt
X2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFn
c19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImJlcm5vdWxsaV9k
aXN0cmlidXRpb24uaCIsCisgICAgImJldGFfZGlzdHJpYnV0aW9uLmgiLAorICAgICJkaXNjcmV0
ZV9kaXN0cmlidXRpb24uaCIsCisgICAgImRpc3RyaWJ1dGlvbl9mb3JtYXRfdHJhaXRzLmgiLAor
ICAgICJkaXN0cmlidXRpb25zLmgiLAorICAgICJleHBvbmVudGlhbF9kaXN0cmlidXRpb24uaCIs
CisgICAgImdhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAibG9nX3VuaWZvcm1faW50X2Rp
c3RyaWJ1dGlvbi5oIiwKKyAgICAicG9pc3Nvbl9kaXN0cmlidXRpb24uaCIsCisgICAgInVuaWZv
cm1faW50X2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAidW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5o
IiwKKyAgICAiemlwZl9kaXN0cmlidXRpb24uaCIsCisgIF0KKyAgc291cmNlcyA9IFsKKyAgICAi
ZGlzY3JldGVfZGlzdHJpYnV0aW9uLmNjIiwKKyAgICAiZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmNj
IiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9iYXNlOmJhc2VfaW50ZXJuYWwiLAorICAgICIu
Li9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIu
Li9yYW5kb20vaW50ZXJuYWw6ZGlzdHJpYnV0aW9uX2ltcGwiLAorICAgICIuLi9yYW5kb20vaW50
ZXJuYWw6ZGlzdHJpYnV0aW9ucyIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpmYXN0X3VuaWZv
cm1fYml0cyIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpmYXN0bWF0aCIsCisgICAgIi4uL3Jh
bmRvbS9pbnRlcm5hbDppb3N0cmVhbV9zdGF0ZV9zYXZlciIsCisgICAgIi4uL3JhbmRvbS9pbnRl
cm5hbDp0cmFpdHMiLAorICAgICIuLi9yYW5kb20vaW50ZXJuYWw6dW5pZm9ybV9oZWxwZXIiLAor
ICAgICIuLi9zdHJpbmdzIiwKKyAgICAiLi4vdHlwZXM6c3BhbiIsCisgIF0KK30KKworc291cmNl
X3NldCgic2VlZF9nZW5fZXhjZXB0aW9uIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29u
ZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVp
bGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZp
Z3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQor
ICBwdWJsaWMgPSBbCisgICAgInNlZWRfZ2VuX2V4Y2VwdGlvbi5oIiwKKyAgXQorICBzb3VyY2Vz
ID0gWworICAgICJzZWVkX2dlbl9leGNlcHRpb24uY2MiLAorICBdCisgIGRlcHMgPSBbCisgICAg
Ii4uL2Jhc2U6Y29uZmlnIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJzZWVkX3NlcXVlbmNlcyIp
IHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2Rl
IiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJv
bWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9j
ZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJzZWVkX3Nl
cXVlbmNlcy5oIiwKKyAgXQorICBzb3VyY2VzID0gWworICAgICJzZWVkX3NlcXVlbmNlcy5jYyIs
CisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOnNlZWRfZ2VuX2V4Y2VwdGlvbiIsCisgICAgIi4uL2Nv
bnRhaW5lcjppbmxpbmVkX3ZlY3RvciIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpub25zZWN1
cmVfYmFzZSIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpwb29sX3VyYmciLAorICAgICIuLi9y
YW5kb20vaW50ZXJuYWw6c2FsdGVkX3NlZWRfc2VxIiwKKyAgICAiLi4vcmFuZG9tL2ludGVybmFs
OnNlZWRfbWF0ZXJpYWwiLAorICAgICIuLi90eXBlczpzcGFuIiwKKyAgXQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL0NNYWtlTGlzdHMu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yZDVjMDY1ODNlNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsx
LDEwMzQgQEAKKyMKKyMgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorIworIyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKyMKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisKK2Fic2xfY2NfbGli
cmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9yYW5kb20KKyAgSERSUworICAgICJyYW5kb20uaCIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnJhbmRvbV9kaXN0cmlidXRp
b25zCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX25vbnNlY3VyZV9iYXNlCisgICAgYWJzbDo6
cmFuZG9tX2ludGVybmFsX3BjZ19lbmdpbmUKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcG9v
bF91cmJnCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3JhbmRlbl9lbmdpbmUKKyAgICBhYnNs
OjpyYW5kb21fc2VlZF9zZXF1ZW5jZXMKKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisg
ICAgcmFuZG9tX2Rpc3RyaWJ1dGlvbnMKKyAgU1JDUworICAgICJkaXNjcmV0ZV9kaXN0cmlidXRp
b24uY2MiCisgICAgImdhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5jYyIKKyAgSERSUworICAgICJiZXJu
b3VsbGlfZGlzdHJpYnV0aW9uLmgiCisgICAgImJldGFfZGlzdHJpYnV0aW9uLmgiCisgICAgImRp
c2NyZXRlX2Rpc3RyaWJ1dGlvbi5oIgorICAgICJkaXN0cmlidXRpb25fZm9ybWF0X3RyYWl0cy5o
IgorICAgICJkaXN0cmlidXRpb25zLmgiCisgICAgImV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbi5o
IgorICAgICJnYXVzc2lhbl9kaXN0cmlidXRpb24uaCIKKyAgICAibG9nX3VuaWZvcm1faW50X2Rp
c3RyaWJ1dGlvbi5oIgorICAgICJwb2lzc29uX2Rpc3RyaWJ1dGlvbi5oIgorICAgICJ1bmlmb3Jt
X2ludF9kaXN0cmlidXRpb24uaCIKKyAgICAidW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oIgor
ICAgICJ6aXBmX2Rpc3RyaWJ1dGlvbi5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NP
UFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6YmFzZV9pbnRlcm5hbAorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25faW1wbAorICAgIGFic2w6OnJhbmRvbV9pbnRl
cm5hbF9kaXN0cmlidXRpb25zCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Zhc3RfdW5pZm9y
bV9iaXRzCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Zhc3RtYXRoCisgICAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsX2lvc3RyZWFtX3N0YXRlX3NhdmVyCisgICAgYWJzbDo6cmFuZG9tX2ludGVy
bmFsX3RyYWl0cworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF91bmlmb3JtX2hlbHBlcgorICAg
IGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6dHlwZV90cmFpdHMKKykK
KworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX3NlZWRfZ2VuX2V4Y2VwdGlv
bgorICBTUkNTCisgICAgInNlZWRfZ2VuX2V4Y2VwdGlvbi5jYyIKKyAgSERSUworICAgICJzZWVk
X2dlbl9leGNlcHRpb24uaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAg
ICAke0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJ
T05TX0ZMQUdfTElOS09QVFN9CisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpjb25maWcKKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFu
ZG9tX3NlZWRfc2VxdWVuY2VzCisgIFNSQ1MKKyAgICAic2VlZF9zZXF1ZW5jZXMuY2MiCisgIEhE
UlMKKyAgICAic2VlZF9zZXF1ZW5jZXMuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUwor
ICAgIGFic2w6OmlubGluZWRfdmVjdG9yCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX25vbnNl
Y3VyZV9iYXNlCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3Bvb2xfdXJiZworICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9zYWx0ZWRfc2VlZF9zZXEKKyAgICBhYnNsOjpyYW5kb21faW50ZXJu
YWxfc2VlZF9tYXRlcmlhbAorICAgIGFic2w6OnJhbmRvbV9zZWVkX2dlbl9leGNlcHRpb24KKyAg
ICBhYnNsOjpzcGFuCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9iZXJu
b3VsbGlfZGlzdHJpYnV0aW9uX3Rlc3QKKyAgU1JDUworICAgICJiZXJub3VsbGlfZGlzdHJpYnV0
aW9uX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRT
CisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21f
ZGlzdHJpYnV0aW9ucworICAgIGFic2w6OnJhbmRvbV9yYW5kb20KKyAgICBhYnNsOjpyYW5kb21f
aW50ZXJuYWxfc2VxdWVuY2VfdXJiZworICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21fYmV0YV9kaXN0cmlidXRpb25fdGVzdAor
ICBTUkNTCisgICAgImJldGFfZGlzdHJpYnV0aW9uX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucworICAgIGFic2w6OnJhbmRv
bV9yYW5kb20KKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Rpc3Ry
aWJ1dGlvbl90ZXN0X3V0aWwKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2VxdWVuY2VfdXJi
ZworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzdHJfZm9ybWF0CisgICAgZ21vY2sKKyAg
ICBndGVzdF9tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9kaXN0
cmlidXRpb25zX3Rlc3QKKyAgU1JDUworICAgICJkaXN0cmlidXRpb25zX3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFV
TFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucworICAg
IGFic2w6OnJhbmRvbV9yYW5kb20KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0
aW9uX3Rlc3RfdXRpbAorICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rl
c3QoCisgIE5BTUUKKyAgICByYW5kb21fZ2VuZXJhdG9yc190ZXN0CisgIFNSQ1MKKyAgICAiZ2Vu
ZXJhdG9yc190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5L
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICAgIGFic2w6OnJhbmRvbV9kaXN0
cmlidXRpb25zCisgICAgYWJzbDo6cmFuZG9tX3JhbmRvbQorICAgIGdtb2NrCisgICAgZ3Rlc3Rf
bWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21fbG9nX3VuaWZvcm1f
aW50X2Rpc3RyaWJ1dGlvbl90ZXN0CisgIFNSQ1MKKyAgICAibG9nX3VuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5L
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICAgIGFic2w6OmJhc2UKKyAgICBh
YnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucworICAgIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25fdGVzdF91dGlsCisgICAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsX3NlcXVlbmNlX3VyYmcKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9tCisgICAg
YWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN0cl9mb3JtYXQKKyAgICBnbW9jaworICAgIGd0ZXN0
X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2Rpc2NyZXRlX2Rp
c3RyaWJ1dGlvbl90ZXN0CisgIFNSQ1MKKyAgICAiZGlzY3JldGVfZGlzdHJpYnV0aW9uX3Rlc3Qu
Y2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtB
QlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6
cmFuZG9tX2Rpc3RyaWJ1dGlvbnMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0
aW9uX3Rlc3RfdXRpbAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9zZXF1ZW5jZV91cmJnCisg
ICAgYWJzbDo6cmFuZG9tX3JhbmRvbQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9jaworICAg
IGd0ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX3BvaXNz
b25fZGlzdHJpYnV0aW9uX3Rlc3QKKyAgU1JDUworICAgICJwb2lzc29uX2Rpc3RyaWJ1dGlvbl90
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2Rpc3Ry
aWJ1dGlvbnMKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9tCisgICAgYWJzbDo6YmFzZQorICAgIGFi
c2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmZsYXRfaGFzaF9tYXAKKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbAorICAgIGFic2w6OnJhbmRvbV9pbnRl
cm5hbF9zZXF1ZW5jZV91cmJnCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN0cl9mb3Jt
YXQKKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1F
CisgICAgcmFuZG9tX2V4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbl90ZXN0CisgIFNSQ1MKKyAgICAi
ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RF
U1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6cmFu
ZG9tX2Rpc3RyaWJ1dGlvbnMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0aW9u
X3Rlc3RfdXRpbAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9zZXF1ZW5jZV91cmJnCisgICAg
YWJzbDo6cmFuZG9tX3JhbmRvbQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzdHJfZm9y
bWF0CisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQorICAgIHJhbmRvbV9nYXVzc2lhbl9kaXN0cmlidXRpb25fdGVzdAorICBTUkNTCisgICAgImdh
dXNzaWFuX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnJhbmRvbV9k
aXN0cmlidXRpb25zCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlvbl90ZXN0
X3V0aWwKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2VxdWVuY2VfdXJiZworICAgIGFic2w6
OnJhbmRvbV9yYW5kb20KKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6c3RyX2Zvcm1hdAor
ICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAg
ICByYW5kb21fdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uX3Rlc3QKKyAgU1JDUworICAgICJ1bmlm
b3JtX2ludF9kaXN0cmlidXRpb25fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9D
T1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUwor
ICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucworICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25fdGVzdF91dGlsCisgICAgYWJzbDo6cmFuZG9t
X2ludGVybmFsX3NlcXVlbmNlX3VyYmcKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9tCisgICAgYWJz
bDo6c3RyaW5ncworICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3Qo
CisgIE5BTUUKKyAgICByYW5kb21fdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbl90ZXN0CisgIFNS
Q1MKKyAgICAidW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIgorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktP
UFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OnJhbmRvbV9kaXN0cmlidXRp
b25zCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwKKyAg
ICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2VxdWVuY2VfdXJiZworICAgIGFic2w6OnJhbmRvbV9y
YW5kb20KKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCisK
K2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV96aXBmX2Rpc3RyaWJ1dGlvbl90ZXN0
CisgIFNSQ1MKKyAgICAiemlwZl9kaXN0cmlidXRpb25fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BU
U30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9u
cworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25fdGVzdF91dGlsCisgICAg
YWJzbDo6cmFuZG9tX2ludGVybmFsX3NlcXVlbmNlX3VyYmcKKyAgICBhYnNsOjpyYW5kb21fcmFu
ZG9tCisgICAgYWJzbDo6c3RyaW5ncworICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21fZXhhbXBsZXNfdGVzdAorICBTUkNTCisg
ICAgImV4YW1wbGVzX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
IExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNs
OjpyYW5kb21fcmFuZG9tCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5B
TUUKKyAgICByYW5kb21fc2VlZF9zZXF1ZW5jZXNfdGVzdAorICBTUkNTCisgICAgInNlZWRfc2Vx
dWVuY2VzX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5k
b21fc2VlZF9zZXF1ZW5jZXMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfbm9uc2VjdXJlX2Jh
c2UKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9tCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCisp
CisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCith
YnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfdHJhaXRzCisgIEhE
UlMKKyAgICAiaW50ZXJuYWwvdHJhaXRzLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRf
Q09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpjb25maWcKKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRl
cGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9p
bnRlcm5hbF9kaXN0cmlidXRpb25fY2FsbGVyCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvZGlzdHJp
YnV0aW9uX2NhbGxlci5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBM
SU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorKQorCisjIEludGVybmFsLW9u
bHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAor
ICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlvbnMKKyAgSERSUworICAgICJp
bnRlcm5hbC9kaXN0cmlidXRpb25zLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09Q
VFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAg
ICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX2NhbGxlcgorICAgIGFic2w6OnJh
bmRvbV9pbnRlcm5hbF9mYXN0X3VuaWZvcm1fYml0cworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5h
bF9mYXN0bWF0aAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF90cmFpdHMKKyAgICBhYnNsOjpy
YW5kb21faW50ZXJuYWxfdW5pZm9ybV9oZWxwZXIKKyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6
c3RyaW5ncworICAgIGFic2w6OnR5cGVfdHJhaXRzCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJn
ZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUK
KyAgICByYW5kb21faW50ZXJuYWxfZmFzdF91bmlmb3JtX2JpdHMKKyAgSERSUworICAgICJpbnRl
cm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NP
UFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorKQorCisjIElu
dGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19s
aWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3NlZWRfbWF0ZXJpYWwKKyAgU1JD
UworICAgICJpbnRlcm5hbC9zZWVkX21hdGVyaWFsLmNjIgorICBIRFJTCisgICAgImludGVybmFs
L3NlZWRfbWF0ZXJpYWwuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAg
TElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6
OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpvcHRpb25hbAorICAgIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbF9mYXN0X3VuaWZvcm1fYml0cworICAgIGFic2w6OnNwYW4KKyAg
ICBhYnNsOjpzdHJpbmdzCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBl
bmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50
ZXJuYWxfcG9vbF91cmJnCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcG9vbF91cmJnLmNjIgorICBI
RFJTCisgICAgImludGVybmFsL3Bvb2xfdXJiZy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVh
ZGVycworICAgIGFic2w6OmVuZGlhbgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9yYW5kZW4K
KyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2VlZF9tYXRlcmlhbAorICAgIGFic2w6OnJhbmRv
bV9pbnRlcm5hbF90cmFpdHMKKyAgICBhYnNsOjpyYW5kb21fc2VlZF9nZW5fZXhjZXB0aW9uCisg
ICAgYWJzbDo6c3BhbgorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5k
IG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVy
bmFsX2V4cGxpY2l0X3NlZWRfc2VxCisgIEhEUlMKKyAgICAgICJpbnRlcm5hbC9yYW5kb21faW50
ZXJuYWxfZXhwbGljaXRfc2VlZF9zZXEuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgVEVTVE9O
TFkKKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3Rs
eS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9zZXF1ZW5j
ZV91cmJnCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvc2VxdWVuY2VfdXJiZy5oIgorICBDT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxU
X0xJTktPUFRTfQorICBURVNUT05MWQorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBu
b3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFu
ZG9tX2ludGVybmFsX3NhbHRlZF9zZWVkX3NlcQorICBIRFJTCisgICAgImludGVybmFsL3NhbHRl
ZF9zZWVkX3NlcS5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5L
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6aW5s
aW5lZF92ZWN0b3IKKyAgICBhYnNsOjpvcHRpb25hbAorICAgIGFic2w6OnNwYW4KKyAgICBhYnNs
OjpyYW5kb21faW50ZXJuYWxfc2VlZF9tYXRlcmlhbAorICAgIGFic2w6OnR5cGVfdHJhaXRzCisp
CisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCith
YnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfaW9zdHJlYW1fc3Rh
dGVfc2F2ZXIKKyAgSERSUworICAgICJpbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oIgor
ICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJT
TF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6aW50MTI4CisgICAgYWJzbDo6
dHlwZV90cmFpdHMKKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBv
biBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5h
bF9kaXN0cmlidXRpb25faW1wbAorICBIRFJTCisgICAgImludGVybmFsL2Rpc3RyaWJ1dGlvbl9p
bXBsLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisg
ICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiaXRzCisgICAg
YWJzbDo6Y29uZmlnCisgICAgYWJzbDo6aW50MTI4CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFs
X2Zhc3RtYXRoCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3RyYWl0cworKQorCisjIEludGVy
bmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJy
YXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX2Zhc3RtYXRoCisgIEhEUlMKKyAgICAi
aW50ZXJuYWwvZmFzdG1hdGguaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30K
KyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFi
c2w6OmJpdHMKKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBk
aXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9u
b25zZWN1cmVfYmFzZQorICBIRFJTCisgICAgImludGVybmFsL25vbnNlY3VyZV9iYXNlLmgiCisg
IENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBh
YnNsOjpvcHRpb25hbAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9wb29sX3VyYmcKKyAgICBh
YnNsOjpyYW5kb21faW50ZXJuYWxfc2FsdGVkX3NlZWRfc2VxCisgICAgYWJzbDo6cmFuZG9tX2lu
dGVybmFsX3NlZWRfbWF0ZXJpYWwKKyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6c3RyaW5ncwor
ICAgIGFic2w6OnR5cGVfdHJhaXRzCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5v
dCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5k
b21faW50ZXJuYWxfcGNnX2VuZ2luZQorICBIRFJTCisgICAgImludGVybmFsL3BjZ19lbmdpbmUu
aCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAk
e0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbmZpZworICAgIGFi
c2w6OmludDEyOAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9mYXN0bWF0aAorICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9pb3N0cmVhbV9zdGF0ZV9zYXZlcgorICAgIGFic2w6OnR5cGVfdHJh
aXRzCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0
bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcmFuZGVu
X2VuZ2luZQorICBIRFJTCisgICAgImludGVybmFsL3JhbmRlbl9lbmdpbmUuaCIKKyAgQ09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVM
VF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9pb3N0cmVhbV9z
dGF0ZV9zYXZlcgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9yYW5kZW4KKyAgICBhYnNsOjp0
eXBlX3RyYWl0cworKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9u
IGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFs
X3BsYXRmb3JtCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvcmFuZGVuX3RyYWl0cy5oIgorICAgICJp
bnRlcm5hbC9yYW5kZW4ta2V5cy5pbmMiCisgICAgImludGVybmFsL3BsYXRmb3JtLmgiCisgIENP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfTElOS09QVFN9CispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBl
bmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50
ZXJuYWxfcmFuZGVuCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcmFuZGVuLmNjIgorICBIRFJTCisg
ICAgImludGVybmFsL3JhbmRlbi5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRT
fQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAg
YWJzbDo6YmFzZQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9wbGF0Zm9ybQorICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9yYW5kZW5faHdhZXMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxf
cmFuZGVuX3Nsb3cKKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBv
biBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5h
bF9yYW5kZW5fc2xvdworICBTUkNTCisgICAgImludGVybmFsL3JhbmRlbl9zbG93LmNjIgorICBI
RFJTCisgICAgImludGVybmFsL3JhbmRlbl9zbG93LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcGxhdGZvcm0KKykKKworIyBJbnRlcm5h
bC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFy
eSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9yYW5kZW5faHdhZXMKKyAgU1JDUworICAg
ICJpbnRlcm5hbC9yYW5kZW5fZGV0ZWN0LmNjIgorICBIRFJTCisgICAgImludGVybmFsL3JhbmRl
bl9kZXRlY3QuaCIKKyAgICAiaW50ZXJuYWwvcmFuZGVuX2h3YWVzLmgiCisgIENPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgICAgJHtBQlNMX1JBTkRPTV9SQU5ERU5fQ09QVFN9Cisg
IExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNs
OjpyYW5kb21faW50ZXJuYWxfcGxhdGZvcm0KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcmFu
ZGVuX2h3YWVzX2ltcGwKKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVu
ZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRl
cm5hbF9yYW5kZW5faHdhZXNfaW1wbAorICBTUkNTCisgICAgImludGVybmFsL3JhbmRlbl9od2Fl
cy5jYyIKKyAgICAiaW50ZXJuYWwvcmFuZGVuX2h3YWVzLmgiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgICAgJHtBQlNMX1JBTkRPTV9SQU5ERU5fQ09QVFN9CisgIExJTktP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfcGxhdGZvcm0KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90
IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRv
bV9pbnRlcm5hbF9kaXN0cmlidXRpb25fdGVzdF91dGlsCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwv
Y2hpX3NxdWFyZS5jYyIKKyAgICAiaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5jYyIK
KyAgSERSUworICAgICJpbnRlcm5hbC9jaGlfc3F1YXJlLmgiCisgICAgImludGVybmFsL2Rpc3Ry
aWJ1dGlvbl90ZXN0X3V0aWwuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30K
KyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFi
c2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAg
YWJzbDo6c3RyX2Zvcm1hdAorICAgIGFic2w6OnNwYW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRh
cmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQor
ICAgIHJhbmRvbV9pbnRlcm5hbF90cmFpdHNfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3Ry
YWl0c190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9t
X2ludGVybmFsX3RyYWl0cworICAgIGd0ZXN0X21haW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRh
cmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQor
ICAgIHJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25faW1wbF90ZXN0CisgIFNSQ1MKKyAgICAi
aW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGxfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xf
VEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAg
REVQUworICAgIGFic2w6OmJpdHMKKyAgICBhYnNsOjpmbGFncworICAgIGFic2w6OmludDEyOAor
ICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25faW1wbAorICAgIGd0ZXN0X21h
aW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3Rs
eS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRp
b25fdGVzdF91dGlsX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9kaXN0cmlidXRpb25fdGVz
dF91dGlsX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbAorICAgIGd0ZXN0X21haW4KKykKKwor
IyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xf
Y2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9mYXN0bWF0aF90ZXN0CisgIFNS
Q1MKKyAgICAiaW50ZXJuYWwvZmFzdG1hdGhfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xf
VEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAg
REVQUworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9mYXN0bWF0aAorICAgIGd0ZXN0X21haW4K
KykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4K
K2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9leHBsaWNpdF9zZWVk
X3NlcV90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvZXhwbGljaXRfc2VlZF9zZXFfdGVzdC5j
YyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9l
eHBsaWNpdF9zZWVkX3NlcQorICAgIGFic2w6OnJhbmRvbV9zZWVkX3NlcXVlbmNlcworICAgIGdt
b2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3Qg
ZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2lu
dGVybmFsX3NhbHRlZF9zZWVkX3NlcV90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvc2FsdGVk
X3NlZWRfc2VxX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJ
TktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpy
YW5kb21faW50ZXJuYWxfc2FsdGVkX3NlZWRfc2VxCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWlu
CispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHku
CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfY2hpX3NxdWFyZV90
ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvY2hpX3NxdWFyZV90ZXN0LmNjIgorICBDT1BUUwor
ICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJ
TktPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6cmFuZG9t
X2ludGVybmFsX2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwKKyAgICBndGVzdF9tYWluCispCisKKyMg
SW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2Nj
X3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfZmFzdF91bmlmb3JtX2JpdHNfdGVz
dAorICBTUkNTCisgICAgImludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzX3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFV
TFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZmFzdF91bmlm
b3JtX2JpdHMKKyAgICBndGVzdF9tYWluCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRv
IG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5k
b21faW50ZXJuYWxfbm9uc2VjdXJlX2Jhc2VfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL25v
bnNlY3VyZV9iYXNlX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
IExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNs
OjpyYW5kb21faW50ZXJuYWxfbm9uc2VjdXJlX2Jhc2UKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9t
CisgICAgYWJzbDo6cmFuZG9tX2Rpc3RyaWJ1dGlvbnMKKyAgICBhYnNsOjpyYW5kb21fc2VlZF9z
ZXF1ZW5jZXMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ3Rlc3RfbWFpbgorKQorCisjIEludGVy
bmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY190ZXN0
KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3NlZWRfbWF0ZXJpYWxfdGVzdAorICBTUkNT
CisgICAgImludGVybmFsL3NlZWRfbWF0ZXJpYWxfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30K
KyAgREVQUworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9zZWVkX21hdGVyaWFsCisgICAgZ21v
Y2sKKyAgICBndGVzdF9tYWluCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBk
ZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50
ZXJuYWxfcG9vbF91cmJnX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9wb29sX3VyYmdfdGVz
dC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAk
e0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5h
bF9wb29sX3VyYmcKKyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6dHlwZV90cmFpdHMKKyAgICBn
dGVzdF9tYWluCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24g
ZGlyZWN0bHkuCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcGNn
X2VuZ2luZV90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcGNnX2VuZ2luZV90ZXN0LmNjIgor
ICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2V4cGxp
Y2l0X3NlZWRfc2VxCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3BjZ19lbmdpbmUKKyAgICBh
YnNsOjp0aW1lCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCisKKyMgSW50ZXJuYWwtb25s
eSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rlc3QoCisgIE5B
TUUKKyAgICByYW5kb21faW50ZXJuYWxfcmFuZGVuX2VuZ2luZV90ZXN0CisgIFNSQ1MKKyAgICAi
aW50ZXJuYWwvcmFuZGVuX2VuZ2luZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNU
X0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBT
CisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9leHBsaWNpdF9zZWVk
X3NlcQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9yYW5kZW5fZW5naW5lCisgICAgYWJzbDo6
c3RyaW5ncworICAgIGFic2w6OnRpbWUKKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4KKykKKwor
IyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xf
Y2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9yYW5kZW5fdGVzdAorICBTUkNT
CisgICAgImludGVybmFsL3JhbmRlbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNU
X0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBT
CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3JhbmRlbgorICAgIGFic2w6OnR5cGVfdHJhaXRz
CisgICAgZ3Rlc3RfbWFpbgorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVw
ZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVy
bmFsX3JhbmRlbl9zbG93X3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9yYW5kZW5fc2xvd190
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2ludGVy
bmFsX3JhbmRlbl9zbG93CisgICAgZ3Rlc3RfbWFpbgorKQorCisjIEludGVybmFsLW9ubHkgdGFy
Z2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY190ZXN0KAorICBOQU1FCisg
ICAgcmFuZG9tX2ludGVybmFsX3JhbmRlbl9od2Flc190ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJu
YWwvcmFuZGVuX2h3YWVzX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9
CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjpyYW5kb21faW50ZXJuYWxfcGxhdGZvcm0KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxf
cmFuZGVuX2h3YWVzCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3JhbmRlbl9od2Flc19pbXBs
CisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OnN0cl9mb3JtYXQKKyAgICBnbW9jaworICAgIGd0
ZXN0CispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0
bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfdW5pZm9y
bV9oZWxwZXIKKyAgSERSUworICAgICJpbnRlcm5hbC91bmlmb3JtX2hlbHBlci5oIgorICBDT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6
cmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlvbl9pbXBsCisgICAgYWJzbDo6cmFuZG9tX2ludGVy
bmFsX2Zhc3RfdW5pZm9ybV9iaXRzCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2lvc3RyZWFt
X3N0YXRlX3NhdmVyCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3RyYWl0cworICAgIGFic2w6
OnR5cGVfdHJhaXRzCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQg
b24gZGlyZWN0bHkuCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxf
aW9zdHJlYW1fc3RhdGVfc2F2ZXJfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL2lvc3RyZWFt
X3N0YXRlX3NhdmVyX3Rlc3QuY2MiCisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElO
S09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfaW9zdHJlYW1fc3RhdGVf
c2F2ZXIKKyAgICBndGVzdF9tYWluCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmVuY2ht
YXJrcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9iZW5jaG1hcmtzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi44N2JiYjk4MTBhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9iZW5jaG1hcmtzLmNjCkBAIC0wLDAgKzEsMzgzIEBACisvLyBDb3B5cmlnaHQgMjAx
NyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworLy8gQmVuY2htYXJrcyBmb3IgYWJzbCByYW5kb20g
ZGlzdHJpYnV0aW9ucyBhcyB3ZWxsIGFzIGEgc2VsZWN0aW9uIG9mIHRoZQorLy8gQysrIHN0YW5k
YXJkIGxpYnJhcnkgcmFuZG9tIGRpc3RyaWJ1dGlvbnMuCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+
CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGluaXRp
YWxpemVyX2xpc3Q+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8bGltaXRzPgorI2lu
Y2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5
cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vYmVybm91bGxpX2Rpc3RyaWJ1dGlv
bi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2JldGFfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20v
aW50ZXJuYWwvZmFzdF91bmlmb3JtX2JpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRl
cm5hbC9yYW5kZW5fZW5naW5lLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1f
aW50X2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3BvaXNzb25fZGlzdHJp
YnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3pp
cGZfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYmVuY2htYXJrL2JlbmNobWFyay5oIgorCitu
YW1lc3BhY2UgeworCisvLyBTZWVkIGRhdGEgdG8gYXZvaWQgcmVhZGluZyByYW5kb21fZGV2aWNl
KCkgZm9yIGJlbmNobWFya3MuCit1aW50MzJfdCBrU2VlZERhdGFbXSA9IHsKKyAgICAweDFCNTEw
MDUyLCAweDlBNTMyOTE1LCAweEQ2MEY1NzNGLCAweEJDOUJDNkU0LCAweDJCNjBBNDc2LCAweDgx
RTY3NDAwLAorICAgIDB4MDhCQTZGQjUsIDB4NTcxQkU5MUYsIDB4RjI5NkVDNkIsIDB4MkEwREQ5
MTUsIDB4QjY2MzY1MjEsIDB4RTdCOUY5QjYsCisgICAgMHhGRjM0MDUyRSwgMHhDNTg1NTY2NCwg
MHg1M0IwMkQ1RCwgMHhBOTlGOEZBMSwgMHgwOEJBNDc5OSwgMHg2RTg1MDc2QSwKKyAgICAweDRC
N0E3MEU5LCAweEI1QjMyOTQ0LCAweERCNzUwOTJFLCAweEM0MTkyNjIzLCAweEFENkVBNkIwLCAw
eDQ5QTdERjdELAorICAgIDB4OUNFRTYwQjgsIDB4OEZFREIyNjYsIDB4RUNBQThDNzEsIDB4Njk5
QTE4RkYsIDB4NTY2NDUyNkMsIDB4QzJCMTlFRTEsCisgICAgMHgxOTM2MDJBNSwgMHg3NTA5NEMy
OSwgMHhBMDU5MTM0MCwgMHhFNDE4M0EzRSwgMHgzRjU0OTg5QSwgMHg1QjQyOUQ2NSwKKyAgICAw
eDZCOEZFNEQ2LCAweDk5RjczRkQ2LCAweEExRDI5QzA3LCAweEVGRTgzMEY1LCAweDREMkQzOEU2
LCAweEYwMjU1REMxLAorICAgIDB4NENERDIwODYsIDB4ODQ3MEVCMjYsIDB4NjM4MkU5QzYsIDB4
MDIxRUNDNUUsIDB4MDk2ODZCM0YsIDB4M0VCQUVGQzksCisgICAgMHgzQzk3MTgxNCwgMHg2QjZB
NzBBMSwgMHg2ODdGMzU4NCwgMHg1MkEwRTI4NiwgMHgxMzE5OEEyRSwgMHgwMzcwNzM0NCwKK307
CisKKy8vIFByZWNvbXBpbGVkU2VlZFNlcSBwcm92aWRlcyBrU2VlZERhdGEgdG8gYSBjb25mb3Jt
aW5nCisvLyByYW5kb20gZW5naW5lIHRvIHNwZWVkIGluaXRpYWxpemF0aW9uIGluIHRoZSBiZW5j
aG1hcmtzLgorY2xhc3MgUHJlY29tcGlsZWRTZWVkU2VxIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJl
c3VsdF90eXBlID0gdWludDMyX3Q7CisKKyAgUHJlY29tcGlsZWRTZWVkU2VxKCkge30KKworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+CisgIFByZWNvbXBpbGVkU2VlZFNlcShJdGVyYXRv
ciBiZWdpbiwgSXRlcmF0b3IgZW5kKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBQ
cmVjb21waWxlZFNlZWRTZXEoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGlsKSB7fQorCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBPdXRJdGVyYXRvcj4KKyAgdm9pZCBnZW5lcmF0ZShPdXRJdGVyYXRv
ciBiZWdpbiwgT3V0SXRlcmF0b3IgZW5kKSB7CisgICAgc3RhdGljIHNpemVfdCBpZHggPSAwOwor
ICAgIGZvciAoOyBiZWdpbiAhPSBlbmQ7IGJlZ2luKyspIHsKKyAgICAgICpiZWdpbiA9IGtTZWVk
RGF0YVtpZHgrK107CisgICAgICBpZiAoaWR4ID49IEFCU0xfQVJSQVlTSVpFKGtTZWVkRGF0YSkp
IHsKKyAgICAgICAgaWR4ID0gMDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIEFCU0xfQVJSQVlTSVpFKGtTZWVkRGF0YSk7IH0KKworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3V0SXRlcmF0b3I+CisgIHZvaWQgcGFyYW0oT3V0SXRlcmF0b3Igb3V0
KSBjb25zdCB7CisgICAgc3RkOjpjb3B5KHN0ZDo6YmVnaW4oa1NlZWREYXRhKSwgc3RkOjplbmQo
a1NlZWREYXRhKSwgb3V0KTsKKyAgfQorfTsKKworLy8gdXNlX2RlZmF1bHRfaW5pdGlhbGl6YXRp
b248VD4gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJhbmRvbSBlbmdpbmUKKy8vIFQgbXVzdCBiZSBk
ZWZhdWx0IGluaXRpYWxpemVkLCBvciB3aGV0aGVyIHdlIG1heSBpbml0aWFsaXplIGl0IHVzaW5n
CisvLyBhIHNlZWQgc2VxdWVuY2UuIFRoaXMgaXMgdXNlZCBiZWNhdXNlIHNvbWUgZW5naW5lcyBk
byBub3QgYWNjZXB0IHNlZWQKKy8vIHNlcXVlbmNlLWJhc2VkIGluaXRpYWxpemF0aW9uLgordGVt
cGxhdGUgPHR5cGVuYW1lIEU+Cit1c2luZyB1c2VfZGVmYXVsdF9pbml0aWFsaXphdGlvbiA9IHN0
ZDo6ZmFsc2VfdHlwZTsKKworLy8gbWFrZV9lbmdpbmU8VCwgU1NlcT4gcmV0dXJucyBhIHJhbmRv
bV9lbmdpbmUgd2hpY2ggaXMgaW5pdGlhbGl6ZWQsCisvLyBlaXRoZXIgdmlhIHRoZSBkZWZhdWx0
IGNvbnN0cnVjdG9yLCB3aGVuIHVzZV9kZWZhdWx0X2luaXRpYWxpemF0aW9uPFQ+CisvLyBpcyB0
cnVlLCBvciB2aWEgdGhlIGluZGljYXRlZCBzZWVkIHNlcXVlbmNlLCBTU2VxLgordGVtcGxhdGUg
PHR5cGVuYW1lIEVuZ2luZSwgdHlwZW5hbWUgU1NlcSA9IFByZWNvbXBpbGVkU2VlZFNlcT4KK3R5
cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PCF1c2VfZGVmYXVsdF9pbml0aWFsaXphdGlvbjxFbmdp
bmU+Ojp2YWx1ZSwgRW5naW5lPgorbWFrZV9lbmdpbmUoKSB7CisgIC8vIEluaXRpYWxpemUgdGhl
IHJhbmRvbSBlbmdpbmUgdXNpbmcgdGhlIHNlZWQgc2VxdWVuY2UgU1NlcSwgd2hpY2gKKyAgLy8g
aXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgcHJlY29tcGlsZWQgc2VlZCBkYXRhLgorICBTU2VxIHNl
cShzdGQ6OmJlZ2luKGtTZWVkRGF0YSksIHN0ZDo6ZW5kKGtTZWVkRGF0YSkpOworICByZXR1cm4g
RW5naW5lKHNlcSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdpbmUsIHR5cGVuYW1lIFNT
ZXEgPSBQcmVjb21waWxlZFNlZWRTZXE+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDx1c2Vf
ZGVmYXVsdF9pbml0aWFsaXphdGlvbjxFbmdpbmU+Ojp2YWx1ZSwgRW5naW5lPgorbWFrZV9lbmdp
bmUoKSB7CisgIC8vIEluaXRpYWxpemUgdGhlIHJhbmRvbSBlbmdpbmUgdXNpbmcgdGhlIGRlZmF1
bHQgY29uc3RydWN0b3IuCisgIHJldHVybiBFbmdpbmUoKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIEVuZ2luZSwgdHlwZW5hbWUgU1NlcT4KK3ZvaWQgQk1fQ29uc3RydWN0KGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7CisgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKKyAgICBhdXRvIHJuZyA9
IG1ha2VfZW5naW5lPEVuZ2luZSwgU1NlcT4oKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1p
emUocm5nKCkpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdpbmU+Cit2b2lkIEJN
X0RpcmVjdChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICB1c2luZyB2YWx1ZV90eXBlID0g
dHlwZW5hbWUgRW5naW5lOjpyZXN1bHRfdHlwZTsKKyAgLy8gRGlyZWN0IHVzZSBvZiB0aGUgVVJC
Ry4KKyAgYXV0byBybmcgPSBtYWtlX2VuZ2luZTxFbmdpbmU+KCk7CisgIGZvciAoYXV0byBfIDog
c3RhdGUpIHsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocm5nKCkpOworICB9CisgIHN0
YXRlLlNldEJ5dGVzUHJvY2Vzc2VkKHNpemVvZih2YWx1ZV90eXBlKSAqIHN0YXRlLml0ZXJhdGlv
bnMoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdpbmU+Cit2b2lkIEJNX0dlbmVyYXRl
KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIC8vIHN0ZDo6Z2VuZXJhdGUgbWFrZXMgYSBj
b3B5IG9mIHRoZSBSTkc7IHRodXMgdGhpcyB0ZXN0cyB0aGUKKyAgLy8gY29weS1jb25zdHJ1Y3Rv
ciBlZmZpY2llbmN5LgorICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgRW5naW5lOjpyZXN1
bHRfdHlwZTsKKyAgc3RkOjp2ZWN0b3I8dmFsdWVfdHlwZT4gdig2NCk7CisgIGF1dG8gcm5nID0g
bWFrZV9lbmdpbmU8RW5naW5lPigpOworICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmdCYXRjaCg2
NCkpIHsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4odiksIHN0ZDo6ZW5kKHYpLCBybmcp
OworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdpbmUsIHNpemVfdCBlbGVtcz4KK3Zv
aWQgQk1fU2h1ZmZsZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICAvLyBEaXJlY3QgdXNl
IG9mIHRoZSBFbmdpbmUuCisgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiB2KGVsZW1zKTsKKyAgd2hp
bGUgKHN0YXRlLktlZXBSdW5uaW5nQmF0Y2goZWxlbXMpKSB7CisgICAgYXV0byBybmcgPSBtYWtl
X2VuZ2luZTxFbmdpbmU+KCk7CisgICAgc3RkOjpzaHVmZmxlKHN0ZDo6YmVnaW4odiksIHN0ZDo6
ZW5kKHYpLCBybmcpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdpbmUsIHNpemVf
dCBlbGVtcz4KK3ZvaWQgQk1fU2h1ZmZsZVJldXNlKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7
CisgIC8vIERpcmVjdCB1c2Ugb2YgdGhlIEVuZ2luZS4KKyAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+
IHYoZWxlbXMpOworICBhdXRvIHJuZyA9IG1ha2VfZW5naW5lPEVuZ2luZT4oKTsKKyAgd2hpbGUg
KHN0YXRlLktlZXBSdW5uaW5nQmF0Y2goZWxlbXMpKSB7CisgICAgc3RkOjpzaHVmZmxlKHN0ZDo6
YmVnaW4odiksIHN0ZDo6ZW5kKHYpLCBybmcpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBFbmdpbmUsIHR5cGVuYW1lIERpc3QsIHR5cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIEJNX0Rpc3Qo
YmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUsIEFyZ3MmJi4uLiBhcmdzKSB7CisgIHVzaW5nIHZhbHVl
X3R5cGUgPSB0eXBlbmFtZSBEaXN0OjpyZXN1bHRfdHlwZTsKKyAgYXV0byBybmcgPSBtYWtlX2Vu
Z2luZTxFbmdpbmU+KCk7CisgIERpc3QgZGlze3N0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLn07
CisgIC8vIENvbXBhcmUgdGhlIGZvbGxvd2luZyBsb29wIHBlcmZvcm1hbmNlOgorICBmb3IgKGF1
dG8gXyA6IHN0YXRlKSB7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGRpcyhybmcpKTsK
KyAgfQorICBzdGF0ZS5TZXRCeXRlc1Byb2Nlc3NlZChzaXplb2YodmFsdWVfdHlwZSkgKiBzdGF0
ZS5pdGVyYXRpb25zKCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lLCB0eXBlbmFt
ZSBEaXN0Pgordm9pZCBCTV9MYXJnZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICB1c2lu
ZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgRGlzdDo6cmVzdWx0X3R5cGU7CisgIHZvbGF0aWxlIHZh
bHVlX3R5cGUga01pbiA9IDA7CisgIHZvbGF0aWxlIHZhbHVlX3R5cGUga01heCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dmFsdWVfdHlwZT46Om1heCgpIC8gMiArIDE7CisgIEJNX0Rpc3Q8RW5naW5l
LCBEaXN0PihzdGF0ZSwga01pbiwga01heCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdp
bmUsIHR5cGVuYW1lIERpc3Q+Cit2b2lkIEJNX1NtYWxsKGJlbmNobWFyazo6U3RhdGUmIHN0YXRl
KSB7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBEaXN0OjpyZXN1bHRfdHlwZTsKKyAg
dm9sYXRpbGUgdmFsdWVfdHlwZSBrTWluID0gMDsKKyAgdm9sYXRpbGUgdmFsdWVfdHlwZSBrTWF4
ID0gc3RkOjpudW1lcmljX2xpbWl0czx2YWx1ZV90eXBlPjo6bWF4KCkgLyA2NCArIDE7CisgIEJN
X0Rpc3Q8RW5naW5lLCBEaXN0PihzdGF0ZSwga01pbiwga01heCk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBFbmdpbmUsIHR5cGVuYW1lIERpc3QsIGludCBBPgordm9pZCBCTV9CZXJub3VsbGko
YmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgdm9sYXRpbGUgZG91YmxlIGEgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KEEpIC8gMTAwMDAwMDsKKyAgQk1fRGlzdDxFbmdpbmUsIERpc3Q+KHN0YXRl
LCBhKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZSwgdHlwZW5hbWUgRGlzdCwgaW50
IEEsIGludCBCPgordm9pZCBCTV9CZXRhKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHVz
aW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBEaXN0OjpyZXN1bHRfdHlwZTsKKyAgdm9sYXRpbGUg
dmFsdWVfdHlwZSBhID0gc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oQSkgLyAxMDA7CisgIHZvbGF0
aWxlIHZhbHVlX3R5cGUgYiA9IHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KEIpIC8gMTAwOworICBC
TV9EaXN0PEVuZ2luZSwgRGlzdD4oc3RhdGUsIGEsIGIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRW5naW5lLCB0eXBlbmFtZSBEaXN0LCBpbnQgQT4KK3ZvaWQgQk1fR2FtbWEoYmVuY2htYXJr
OjpTdGF0ZSYgc3RhdGUpIHsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIERpc3Q6OnJl
c3VsdF90eXBlOworICB2b2xhdGlsZSB2YWx1ZV90eXBlIGEgPSBzdGF0aWNfY2FzdDx2YWx1ZV90
eXBlPihBKSAvIDEwMDsKKyAgQk1fRGlzdDxFbmdpbmUsIERpc3Q+KHN0YXRlLCBhKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZSwgdHlwZW5hbWUgRGlzdCwgaW50IEEgPSAxMDA+Cit2
b2lkIEJNX1BvaXNzb24oYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgdm9sYXRpbGUgZG91
YmxlIGEgPSBzdGF0aWNfY2FzdDxkb3VibGU+KEEpIC8gMTAwOworICBCTV9EaXN0PEVuZ2luZSwg
RGlzdD4oc3RhdGUsIGEpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lLCB0eXBlbmFt
ZSBEaXN0LCBpbnQgUSA9IDIsIGludCBWID0gMT4KK3ZvaWQgQk1fWmlwZihiZW5jaG1hcms6OlN0
YXRlJiBzdGF0ZSkgeworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgRGlzdDo6cmVzdWx0
X3R5cGU7CisgIHZvbGF0aWxlIGRvdWJsZSBxID0gUTsKKyAgdm9sYXRpbGUgZG91YmxlIHYgPSBW
OworICBCTV9EaXN0PEVuZ2luZSwgRGlzdD4oc3RhdGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8dmFs
dWVfdHlwZT46Om1heCgpLCBxLCB2KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZSwg
dHlwZW5hbWUgRGlzdD4KK3ZvaWQgQk1fVGhyZWFkKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7
CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBEaXN0OjpyZXN1bHRfdHlwZTsKKyAgYXV0
byBybmcgPSBtYWtlX2VuZ2luZTxFbmdpbmU+KCk7CisgIERpc3QgZGlze307CisgIGZvciAoYXV0
byBfIDogc3RhdGUpIHsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoZGlzKHJuZykpOwor
ICB9CisgIHN0YXRlLlNldEJ5dGVzUHJvY2Vzc2VkKHNpemVvZih2YWx1ZV90eXBlKSAqIHN0YXRl
Lml0ZXJhdGlvbnMoKSk7Cit9CisKKy8vIE5PVEVTOgorLy8KKy8vIHN0ZDo6Z2VvbWV0cmljX2Rp
c3RyaWJ1dGlvbiBpcyBzaW1pbGFyIHRvIHRoZSB6aXBmIGRpc3RyaWJ1dGlvbnMuCisvLyBUaGUg
YWxnb3JpdGhtIGZvciB0aGUgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlvbiBpcywgYmFzaWNhbGx5LAor
Ly8gZmxvb3IobG9nKDEtWCkgLyBsb2coMS1wKSkKKworLy8gTm9ybWFsIGJlbmNobWFyayBzdWl0
ZQorI2RlZmluZSBCTV9CQVNJQyhFbmdpbmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0NvbnN0
cnVjdCwgRW5naW5lLCBQcmVjb21waWxlZFNlZWRTZXEpOyAgICAgICAgICAgICAgICBcCisgIEJF
TkNITUFSS19URU1QTEFURShCTV9Db25zdHJ1Y3QsIEVuZ2luZSwgc3RkOjpzZWVkX3NlcSk7ICAg
ICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlyZWN0LCBFbmdp
bmUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJL
X1RFTVBMQVRFKEJNX1NodWZmbGUsIEVuZ2luZSwgMTApOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9TaHVmZmxlLCBFbmdpbmUsIDEw
MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExB
VEUoQk1fU2h1ZmZsZSwgRW5naW5lLCAxMDAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NodWZmbGVSZXVzZSwgRW5naW5lLCAxMDAp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9T
aHVmZmxlUmV1c2UsIEVuZ2luZSwgMTAwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5lLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6RmFzdFVuaWZvcm1CaXRzPHVpbnQzMl90Pik7ICAgICAgICBcCisgIEJFTkNI
TUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVy
bmFsOjpGYXN0VW5pZm9ybUJpdHM8dWludDY0X3Q+KTsgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RF
TVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50
MzJfdD4pOyBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsIHN0ZDo6dW5p
Zm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDY0X3Q+KTsgXAorICBCRU5DSE1BUktfVEVNUExBVEUo
Qk1fRGlzdCwgRW5naW5lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxp
bnQzMl90Pik7ICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0
LCBFbmdpbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICAgICAgYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDY0X3Q+
KTsgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0xhcmdlLCBFbmdp
bmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQzMl90Pik7ICAgICAg
ICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fTGFyZ2UsIEVuZ2luZSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDY0X3Q+KTsgICAgICAgICAgICAg
ICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9MYXJnZSwgRW5naW5lLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDMyX3Q+KTsgICAgICAgICAgICAgICAgIFwK
KyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0xhcmdlLCBFbmdpbmUsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBhYnNsOjp1bmlm
b3JtX2ludF9kaXN0cmlidXRpb248aW50NjRfdD4pOyAgICAgICAgICAgICAgICAgXAorICBCRU5D
SE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5lLCBzdGQ6OnVuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb248ZmxvYXQ+KTsgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwg
c3RkOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4pOyBcCisgIEJFTkNITUFSS19U
RU1QTEFURShCTV9EaXN0LCBFbmdpbmUsIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248
ZmxvYXQ+KTsgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5lLCBhYnNsOjp1
bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4pCisKKyNkZWZpbmUgQk1fQ09QWShFbmdp
bmUpIEJFTkNITUFSS19URU1QTEFURShCTV9HZW5lcmF0ZSwgRW5naW5lKQorCisjZGVmaW5lIEJN
X1RIUkVBRChFbmdpbmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1RocmVhZCwgRW5naW5lLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uPGludDY0X3Q+KSAgICAgICBcCisgICAgICAtPlRocmVhZFBlckNwdSgpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJL
X1RFTVBMQVRFKEJNX1RocmVhZCwgRW5naW5lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxk
b3VibGU+KSAgICAgICBcCisgICAgICAtPlRocmVhZFBlckNwdSgpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1No
dWZmbGUsIEVuZ2luZSwgMTAwKS0+VGhyZWFkUGVyQ3B1KCk7ICAgICAgXAorICBCRU5DSE1BUktf
VEVNUExBVEUoQk1fU2h1ZmZsZSwgRW5naW5lLCAxMDAwKS0+VGhyZWFkUGVyQ3B1KCk7ICAgICBc
CisgIEJFTkNITUFSS19URU1QTEFURShCTV9TaHVmZmxlUmV1c2UsIEVuZ2luZSwgMTAwKS0+VGhy
ZWFkUGVyQ3B1KCk7IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NodWZmbGVSZXVzZSwgRW5n
aW5lLCAxMDAwKS0+VGhyZWFkUGVyQ3B1KCk7CisKKyNkZWZpbmUgQk1fRVhURU5ERUQoRW5naW5l
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
IC8qIC0tLS0tLS0tLS0tLS0tIEV4dGVuZGVkIFVuaWZvcm0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLyAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fU21hbGwsIEVu
Z2luZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDMyX3Q+KTsgICAg
ICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9TbWFsbCwgRW5naW5lLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50NjRfdD4pOyAgICAgICAgICAg
ICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NtYWxsLCBFbmdpbmUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBh
YnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50MzJfdD4pOyAgICAgICAgICAgICAgICAg
XAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fU21hbGwsIEVuZ2luZSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6OnVu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ2NF90Pik7ICAgICAgICAgICAgICAgICBcCisgIEJF
TkNITUFSS19URU1QTEFURShCTV9TbWFsbCwgRW5naW5lLCBzdGQ6OnVuaWZvcm1fcmVhbF9kaXN0
cmlidXRpb248ZmxvYXQ+KTsgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fU21hbGwsIEVuZ2lu
ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+KTsgICAgICAg
ICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9TbWFsbCwgRW5naW5lLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxmbG9hdD4pOyAgICAgICAgICAgICAg
ICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NtYWxsLCBFbmdpbmUsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBhYnNs
Ojp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4pOyAgICAgICAgICAgICAgICAgXAor
ICAvKiAtLS0tLS0tLS0tLS0tLSBPdGhlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Rpc3QsIEVu
Z2luZSwgc3RkOjpub3JtYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4pOyAgICAgICBcCisgIEJFTkNI
TUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsIGFic2w6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlv
bjxkb3VibGU+KTsgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5lLCBz
dGQ6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+KTsgIFwKKyAgQkVOQ0hNQVJLX1RF
TVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwgYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPGRv
dWJsZT4pOyBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9Qb2lzc29uLCBFbmdpbmUsIHN0ZDo6
cG9pc3Nvbl9kaXN0cmlidXRpb248aW50NjRfdD4sICAgXAorICAgICAgICAgICAgICAgICAgICAg
MTAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1BvaXNzb24sIEVuZ2luZSwgYWJzbDo6cG9pc3Nv
bl9kaXN0cmlidXRpb248aW50NjRfdD4sICBcCisgICAgICAgICAgICAgICAgICAgICAxMDApOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBC
RU5DSE1BUktfVEVNUExBVEUoQk1fUG9pc3NvbiwgRW5naW5lLCBzdGQ6OnBvaXNzb25fZGlzdHJp
YnV0aW9uPGludDY0X3Q+LCAgIFwKKyAgICAgICAgICAgICAgICAgICAgIDEwICogMTAwKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFS
S19URU1QTEFURShCTV9Qb2lzc29uLCBFbmdpbmUsIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9u
PGludDY0X3Q+LCAgXAorICAgICAgICAgICAgICAgICAgICAgMTAgKiAxMDApOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBM
QVRFKEJNX1BvaXNzb24sIEVuZ2luZSwgc3RkOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxpbnQ2NF90
PiwgICBcCisgICAgICAgICAgICAgICAgICAgICAxMyAqIDEwMCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1f
UG9pc3NvbiwgRW5naW5lLCBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxpbnQ2NF90PiwgIFwK
KyAgICAgICAgICAgICAgICAgICAgIDEzICogMTAwKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0LCBF
bmdpbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6bG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQzMl90
Pik7ICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDY0X3Q+KTsgICAg
ICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5lLCBzdGQ6Omdl
b21ldHJpY19kaXN0cmlidXRpb248aW50NjRfdD4pOyAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRF
KEJNX1ppcGYsIEVuZ2luZSwgYWJzbDo6emlwZl9kaXN0cmlidXRpb248dWludDY0X3Q+KTsgICAg
ICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9aaXBmLCBFbmdpbmUsIGFic2w6OnppcGZfZGlz
dHJpYnV0aW9uPHVpbnQ2NF90PiwgMiwgICAgXAorICAgICAgICAgICAgICAgICAgICAgMyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
QkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Jlcm5vdWxsaSwgRW5naW5lLCBzdGQ6OmJlcm5vdWxsaV9k
aXN0cmlidXRpb24sICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAyNTczMDUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1B
UktfVEVNUExBVEUoQk1fQmVybm91bGxpLCBFbmdpbmUsIGFic2w6OmJlcm5vdWxsaV9kaXN0cmli
dXRpb24sICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIDI1NzMwNSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1Q
TEFURShCTV9CZXRhLCBFbmdpbmUsIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPGRvdWJsZT4sIDY1
LCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgNDEpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJN
X0JldGEsIEVuZ2luZSwgYWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZG91YmxlPiwgOTksICAgICBc
CisgICAgICAgICAgICAgICAgICAgICAzMzApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fQmV0YSwg
RW5naW5lLCBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxkb3VibGU+LCAxNTAsICAgIFwKKyAgICAg
ICAgICAgICAgICAgICAgIDE1MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9CZXRhLCBFbmdpbmUs
IGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPGRvdWJsZT4sIDQxMCwgICAgXAorICAgICAgICAgICAg
ICAgICAgICAgNTgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0JldGEsIEVuZ2luZSwgYWJzbDo6
YmV0YV9kaXN0cmlidXRpb248ZmxvYXQ+LCA2NSwgNDEpOyBcCisgIEJFTkNITUFSS19URU1QTEFU
RShCTV9CZXRhLCBFbmdpbmUsIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPGZsb2F0PiwgOTksICAg
ICAgXAorICAgICAgICAgICAgICAgICAgICAgMzMwKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Jl
dGEsIEVuZ2luZSwgYWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZmxvYXQ+LCAxNTAsICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICAxNTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fQmV0YSwgRW5n
aW5lLCBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxmbG9hdD4sIDQxMCwgICAgIFwKKyAgICAgICAg
ICAgICAgICAgICAgIDU4MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9HYW1tYSwgRW5naW5lLCBz
dGQ6OmdhbW1hX2Rpc3RyaWJ1dGlvbjxmbG9hdD4sIDE5OSk7ICAgXAorICBCRU5DSE1BUktfVEVN
UExBVEUoQk1fR2FtbWEsIEVuZ2luZSwgc3RkOjpnYW1tYV9kaXN0cmlidXRpb248ZG91YmxlPiwg
MTk5KTsKKworLy8gQUJTTCBSZWNvbW1lbmRlZCBpbnRlcmZhY2VzLgorQk1fQkFTSUMoYWJzbDo6
SW5zZWN1cmVCaXRHZW4pOyAgLy8gPT09IHBjZzY0XzIwMThfZW5naW5lCitCTV9CQVNJQyhhYnNs
OjpCaXRHZW4pOyAgICAvLyA9PT0gcmFuZGVuX2VuZ2luZTx1aW50NjRfdD4uCitCTV9USFJFQUQo
YWJzbDo6Qml0R2VuKTsKK0JNX0VYVEVOREVEKGFic2w6OkJpdEdlbik7CisKKy8vIEluc3RhbnRp
YXRlIGJlbmNobWFya3MgZm9yIG11bHRpcGxlIGVuZ2luZXMuCit1c2luZyByYW5kZW5fZW5naW5l
XzY0ID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpyYW5kZW5fZW5naW5lPHVpbnQ2NF90PjsKK3Vz
aW5nIHJhbmRlbl9lbmdpbmVfMzIgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnJhbmRlbl9lbmdp
bmU8dWludDMyX3Q+OworCisvLyBDb21wYXJpc29uIGludGVyZmFjZXMuCitCTV9CQVNJQyhzdGQ6
Om10MTk5MzdfNjQpOworQk1fQ09QWShzdGQ6Om10MTk5MzdfNjQpOworQk1fRVhURU5ERUQoc3Rk
OjptdDE5OTM3XzY0KTsKK0JNX0JBU0lDKHJhbmRlbl9lbmdpbmVfNjQpOworQk1fQ09QWShyYW5k
ZW5fZW5naW5lXzY0KTsKK0JNX0VYVEVOREVEKHJhbmRlbl9lbmdpbmVfNjQpOworCitCTV9CQVNJ
QyhzdGQ6Om10MTk5MzcpOworQk1fQ09QWShzdGQ6Om10MTk5MzcpOworQk1fQkFTSUMocmFuZGVu
X2VuZ2luZV8zMik7CitCTV9DT1BZKHJhbmRlbl9lbmdpbmVfMzIpOworCit9ICAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vYmVybm91bGxpX2Rpc3RyaWJ1dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi4zMjZmY2I2ZTAxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uLmgKQEAgLTAsMCArMSwxOTggQEAKKy8vIENv
cHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9N
X0JFUk5PVUxMSV9ESVNUUklCVVRJT05fSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fQkVSTk9VTExJ
X0RJU1RSSUJVVElPTl9IXworCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpc3RyZWFt
PgorI2luY2x1ZGUgPGxpbWl0cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9vcHRpbWl6YXRpb24u
aCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oIgor
I2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyLmgiCisK
K25hbWVzcGFjZSBhYnNsIHsKKworLy8gYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiBpcyBh
IGRyb3AgaW4gcmVwbGFjZW1lbnQgZm9yCisvLyBzdGQ6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24u
IEl0IGd1YXJhbnRlZXMgdGhhdCAoZ2l2ZW4gYSBwZXJmZWN0CisvLyBVbmlmb3JtUmFuZG9tQml0
R2VuZXJhdG9yKSB0aGUgYWNjZXB0YW5jZSBwcm9iYWJpbGl0eSBpcyAqZXhhY3RseSogZXF1YWwg
dG8KKy8vIHRoZSBnaXZlbiBkb3VibGUuCisvLworLy8gVGhlIGltcGxlbWVudGF0aW9uIGFzc3Vt
ZXMgdGhhdCBkb3VibGUgaXMgSUVFRTc1NAorY2xhc3MgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbiB7
CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IGJvb2w7CisKKyAgY2xhc3MgcGFyYW1f
dHlwZSB7CisgICBwdWJsaWM6CisgICAgdXNpbmcgZGlzdHJpYnV0aW9uX3R5cGUgPSBiZXJub3Vs
bGlfZGlzdHJpYnV0aW9uOworCisgICAgZXhwbGljaXQgcGFyYW1fdHlwZShkb3VibGUgcCA9IDAu
NSkgOiBwcm9iXyhwKSB7CisgICAgICBhc3NlcnQocCA+PSAwLjAgJiYgcCA8PSAxLjApOworICAg
IH0KKworICAgIGRvdWJsZSBwKCkgY29uc3QgeyByZXR1cm4gcHJvYl87IH0KKworICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgcDEsIGNvbnN0IHBhcmFtX3R5cGUm
IHAyKSB7CisgICAgICByZXR1cm4gcDEucCgpID09IHAyLnAoKTsKKyAgICB9CisgICAgZnJpZW5k
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXJhbV90eXBlJiBwMSwgY29uc3QgcGFyYW1fdHlwZSYg
cDIpIHsKKyAgICAgIHJldHVybiBwMS5wKCkgIT0gcDIucCgpOworICAgIH0KKworICAgcHJpdmF0
ZToKKyAgICBkb3VibGUgcHJvYl87CisgIH07CisKKyAgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbigp
IDogYmVybm91bGxpX2Rpc3RyaWJ1dGlvbigwLjUpIHt9CisKKyAgZXhwbGljaXQgYmVybm91bGxp
X2Rpc3RyaWJ1dGlvbihkb3VibGUgcCkgOiBwYXJhbV8ocCkge30KKworICBleHBsaWNpdCBiZXJu
b3VsbGlfZGlzdHJpYnV0aW9uKHBhcmFtX3R5cGUgcCkgOiBwYXJhbV8ocCkge30KKworICAvLyBu
by1vcAorICB2b2lkIHJlc2V0KCkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAg
Ym9vbCBvcGVyYXRvcigpKFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMp
CisgICAgcmV0dXJuIEdlbmVyYXRlKHBhcmFtXy5wKCksIGcpOworICB9CisKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFVSQkc+CisgIGJvb2wgb3BlcmF0b3IoKShVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1
bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIHBh
cmFtKSB7CisgICAgcmV0dXJuIEdlbmVyYXRlKHBhcmFtLnAoKSwgZyk7CisgIH0KKworICBwYXJh
bV90eXBlIHBhcmFtKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQgcGFyYW0oY29u
c3QgcGFyYW1fdHlwZSYgcGFyYW0pIHsgcGFyYW1fID0gcGFyYW07IH0KKworICBkb3VibGUgcCgp
IGNvbnN0IHsgcmV0dXJuIHBhcmFtXy5wKCk7IH0KKworICByZXN1bHRfdHlwZShtaW4pKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgcmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGJlcm5vdWxsaV9kaXN0
cmlidXRpb24mIGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlcm5vdWxsaV9k
aXN0cmlidXRpb24mIGQyKSB7CisgICAgcmV0dXJuIGQxLnBhcmFtXyA9PSBkMi5wYXJhbV87Cisg
IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGJlcm5vdWxsaV9kaXN0cmlidXRp
b24mIGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlcm5vdWxsaV9kaXN0cmli
dXRpb24mIGQyKSB7CisgICAgcmV0dXJuIGQxLnBhcmFtXyAhPSBkMi5wYXJhbV87CisgIH0KKwor
IHByaXZhdGU6CisgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qga1AzMiA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PigxKSA8PCAzMjsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgc3Rh
dGljIGJvb2wgR2VuZXJhdGUoZG91YmxlIHAsIFVSQkcmIGcpOyAgLy8gTk9MSU5UKHJ1bnRpbWUv
cmVmZXJlbmNlcykKKworICBwYXJhbV90eXBlIHBhcmFtXzsKK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBU
cmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRz
PiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0IGJlcm5vdWxs
aV9kaXN0cmlidXRpb24mIHgpIHsKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFr
ZV9vc3RyZWFtX3N0YXRlX3NhdmVyKG9zKTsKKyAgb3MucHJlY2lzaW9uKHJhbmRvbV9pbnRlcm5h
bDo6c3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8ZG91YmxlPjo6a1ByZWNpc2lvbik7CisgIG9zIDw8
IHgucCgpOworICByZXR1cm4gb3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlw
ZW5hbWUgVHJhaXRzPgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRv
cj4+KAorICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGJlcm5vdWxsaV9kaXN0cmlidXRpb24mIHgpIHsg
ICAgICAgICAgICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICBhdXRvIHNhdmVyID0g
cmFuZG9tX2ludGVybmFsOjptYWtlX2lzdHJlYW1fc3RhdGVfc2F2ZXIoaXMpOworICBhdXRvIHAg
PSByYW5kb21faW50ZXJuYWw6OnJlYWRfZmxvYXRpbmdfcG9pbnQ8ZG91YmxlPihpcyk7CisgIGlm
ICghaXMuZmFpbCgpKSB7CisgICAgeC5wYXJhbShiZXJub3VsbGlfZGlzdHJpYnV0aW9uOjpwYXJh
bV90eXBlKHApKTsKKyAgfQorICByZXR1cm4gaXM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBV
UkJHPgorYm9vbCBiZXJub3VsbGlfZGlzdHJpYnV0aW9uOjpHZW5lcmF0ZShkb3VibGUgcCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJCRyYgZykgeyAgLy8gTk9MSU5U
KHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgcmFuZG9tX2ludGVybmFsOjpGYXN0VW5pZm9ybUJpdHM8
dWludDMyX3Q+IGZhc3RfdTMyOworCisgIHdoaWxlICh0cnVlKSB7CisgICAgLy8gVGhlcmUgYXJl
IHR3byBhc3BlY3RzIG9mIHRoZSBkZWZpbml0aW9uIG9mIGBjYCBiZWxvdyB0aGF0IGFyZSB3b3J0
aAorICAgIC8vIGNvbW1lbnRpbmcgb24uICBGaXJzdCwgYmVjYXVzZSBgcGAgaXMgaW4gdGhlIHJh
bmdlIFswLCAxXSwgYGNgIGlzIGluIHRoZQorICAgIC8vIHJhbmdlIFswLCAyXjMyXSB3aGljaCBk
b2VzIG5vdCBmaXQgaW4gYSB1aW50MzJfdCBhbmQgdGhlcmVmb3JlIHJlcXVpcmVzCisgICAgLy8g
NjQgYml0cy4KKyAgICAvLworICAgIC8vIFNlY29uZCwgYGNgIGlzIGNvbnN0cnVjdGVkIGJ5IGZp
cnN0IGNhc3RpbmcgZXhwbGljaXRseSB0byBhIHNpZ25lZAorICAgIC8vIGludGVnZXIgYW5kIHRo
ZW4gY29udmVydGluZyBpbXBsaWNpdGx5IHRvIGFuIHVuc2lnbmVkIGludGVnZXIgb2YgdGhlIHNh
bWUKKyAgICAvLyBzaXplLiAgVGhpcyBpcyBkb25lIGJlY2F1c2UgdGhlIGhhcmR3YXJlIGNvbnZl
cnNpb24gaW5zdHJ1Y3Rpb25zIHByb2R1Y2UKKyAgICAvLyBzaWduZWQgaW50ZWdlcnMgZnJvbSBk
b3VibGU7IGlmIHRha2VuIGFzIGEgdWludDY0X3QgdGhlIGNvbnZlcnNpb24gd291bGQKKyAgICAv
LyBiZSB3cm9uZyBmb3IgZG91YmxlcyBncmVhdGVyIHRoYW4gMl42MyAobm90IHJlbGV2YW50IGlu
IHRoaXMgdXNlLWNhc2UpLgorICAgIC8vIElmIGNvbnZlcnRlZCBkaXJlY3RseSB0byBhbiB1bnNp
Z25lZCBpbnRlZ2VyLCB0aGUgY29tcGlsZXIgd291bGQgZW5kIHVwCisgICAgLy8gZW1pdHRpbmcg
Y29kZSB0byBoYW5kbGUgc3VjaCBsYXJnZSB2YWx1ZXMgdGhhdCBhcmUgbm90IHJlbGV2YW50IGR1
ZSB0bworICAgIC8vIHRoZSBrbm93biBib3VuZHMgb24gYGNgLiAgVG8gYXZvaWQgdGhlc2UgZXh0
cmEgaW5zdHJ1Y3Rpb25zIHRoaXMKKyAgICAvLyBpbXBsZW1lbnRhdGlvbiBjb252ZXJ0cyBmaXJz
dCB0byB0aGUgc2lnbmVkIHR5cGUgYW5kIHRoZW4gdXNlIHRoZQorICAgIC8vIGltcGxpY2l0IGNv
bnZlcnNpb24gdG8gdW5zaWduZWQgKHdoaWNoIGlzIGEgbm8tb3ApLgorICAgIGNvbnN0IHVpbnQ2
NF90IGMgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihwICoga1AzMik7CisgICAgY29uc3QgdWludDMy
X3QgdiA9IGZhc3RfdTMyKGcpOworICAgIC8vIEZBU1QgUEFUSDogdGhpcyBwYXRoIGZhaWxzIHdp
dGggcHJvYmFiaWxpdHkgMS8yXjMyLiAgTm90ZSB0aGF0IHNpbXBseQorICAgIC8vIHJldHVybmlu
ZyB2IDw9IGMgd291bGQgYXBwcm94aW1hdGUgUCB2ZXJ5IHdlbGwgKHVwIHRvIGFuIGFic29sdXRl
IGVycm9yCisgICAgLy8gb2YgMS8yXjMyKTsgdGhlIHNsb3cgcGF0aCAodGFrZW4gaW4gdGhhdCBy
YW5nZSBvZiBwb3NzaWJsZSBlcnJvciwgaW4gdGhlCisgICAgLy8gY2FzZSBvZiBlcXVhbGl0eSkg
ZWxpbWluYXRlcyB0aGUgcmVtYWluaW5nIGVycm9yLgorICAgIGlmIChBQlNMX1BSRURJQ1RfVFJV
RSh2ICE9IGMpKSByZXR1cm4gdiA8IGM7CisKKyAgICAvLyBJdCBpcyBndWFyYW50ZWVkIHRoYXQg
YHFgIGlzIHN0cmljdGx5IGxlc3MgdGhhbiAxLCBiZWNhdXNlIGlmIGBxYCB3ZXJlCisgICAgLy8g
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIHRoZSBzYW1lIHdvdWxkIGJlIHRydWUgZm9yIGBw
YC4gQ2VydGFpbmx5IGBwYAorICAgIC8vIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gMSwgYW5kIGlm
IGBwID09IDFgLCB0aGVuIHRoZSBmYXN0IHBhdGggd291bGQKKyAgICAvLyBuZWNlc3NhcnkgaGF2
ZSBiZWVuIHRha2VuIGFscmVhZHkuCisgICAgY29uc3QgZG91YmxlIHEgPSBzdGF0aWNfY2FzdDxk
b3VibGU+KGMpIC8ga1AzMjsKKworICAgIC8vIFRoZSBwcm9iYWJpbGl0eSBvZiBhY2NlcHRhbmNl
IG9uIHRoZSBmYXN0IHBhdGggaXMgYHFgIGFuZCBzbyB0aGUKKyAgICAvLyBwcm9iYWJpbGl0eSBv
ZiBhY2NlcHRhbmNlIGhlcmUgc2hvdWxkIGJlIGBwIC0gcWAuCisgICAgLy8KKyAgICAvLyBOb3Rl
IHRoYXQgYHFgIGlzIG9idGFpbmVkIGZyb20gYHBgIHZpYSBzb21lIHNoaWZ0cyBhbmQgY29udmVy
c2lvbnMsIHRoZQorICAgIC8vIHVwc2hvdCBvZiB3aGljaCBpcyB0aGF0IGBxYCBpcyBzaW1wbHkg
YHBgIHdpdGggc29tZSBvZiB0aGUKKyAgICAvLyBsZWFzdC1zaWduaWZpY2FudCBiaXRzIG9mIGl0
cyBtYW50aXNzYSBzZXQgdG8gemVyby4gVGhpcyBtZWFucyB0aGF0IHRoZQorICAgIC8vIGRpZmZl
cmVuY2UgYHAgLSBxYCB3aWxsIG5vdCBoYXZlIGFueSByb3VuZGluZyBlcnJvcnMuIFRvIHNlZSB3
aHksIHByZXRlbmQKKyAgICAvLyB0aGF0IGRvdWJsZSBoYXMgMTAgYml0cyBvZiByZXNvbHV0aW9u
IGFuZCBxIGlzIG9idGFpbmVkIGZyb20gYHBgIGluIHN1Y2gKKyAgICAvLyBhIHdheSB0aGF0IHRo
ZSA0IGxlYXN0LXNpZ25pZmljYW50IGJpdHMgb2YgaXRzIG1hbnRpc3NhIGFyZSBzZXQgdG8gemVy
by4KKyAgICAvLyBGb3IgZXhhbXBsZToKKyAgICAvLyAgIHAgICA9IDEuMTEwMDExMTAxMSAqIDJe
LTEKKyAgICAvLyAgIHEgICA9IDEuMTEwMDExMDAwMCAqIDJeLTEKKyAgICAvLyBwIC0gcSA9IDEu
MDExICAgICAgICAqIDJeLTgKKyAgICAvLyBUaGUgZGlmZmVyZW5jZSBgcCAtIHFgIGhhcyBleGFj
dGx5IHRoZSBub256ZXJvIG1hbnRpc3NhIGJpdHMgdGhhdCB3ZXJlCisgICAgLy8gImxvc3QiIGlu
IGBxYCBwcm9kdWNpbmcgYSBudW1iZXIgd2hpY2ggaXMgY2VydGFpbmx5IHJlcHJlc2VudGFibGUg
aW4gYQorICAgIC8vIGRvdWJsZS4KKyAgICBjb25zdCBkb3VibGUgbGVmdCA9IHAgLSBxOworCisg
ICAgLy8gQnkgY29uc3RydWN0aW9uLCB0aGUgcHJvYmFiaWxpdHkgb2YgYmVpbmcgb24gdGhpcyBz
bG93IHBhdGggaXMgMS8yXjMyLCBzbworICAgIC8vIFAoYWNjZXB0IGluIHNsb3cgcGF0aCkgPSBQ
KGFjY2VwdHwgaW4gc2xvdyBwYXRoKSAqIFAoc2xvdyBwYXRoKSwKKyAgICAvLyB3aGljaCBtZWFu
cyB0aGUgcHJvYmFiaWxpdHkgb2YgYWNjZXB0YW5jZSBoZXJlIGlzIGAxIC8gKGxlZnQgKiBrUDMy
KWA6CisgICAgY29uc3QgZG91YmxlIGhlcmUgPSBsZWZ0ICoga1AzMjsKKworICAgIC8vIFRoZSBz
aW1wbGVzdCB3YXkgdG8gY29tcHV0ZSB0aGUgcmVzdWx0IG9mIHRoaXMgdHJpYWwgaXMgdG8gcmVw
ZWF0IHRoZQorICAgIC8vIHdob2xlIGFsZ29yaXRobSB3aXRoIHRoZSBuZXcgcHJvYmFiaWxpdHku
IFRoaXMgdGVybWluYXRlcyBiZWNhdXNlIGV2ZW4KKyAgICAvLyBnaXZlbiAgYXJiaXRyYXJpbHkg
dW5mcmllbmRseSAicmFuZG9tIiBiaXRzLCBlYWNoIGl0ZXJhdGlvbiBlaXRoZXIKKyAgICAvLyBt
dWx0aXBsaWVzIGEgdGlueSBwcm9iYWJpbGl0eSBieSAyXjMyIChpZiBjID09IDApIG9yIHN0cmlw
cyBvZmYgc29tZQorICAgIC8vIG51bWJlciBvZiBub256ZXJvIG1hbnRpc3NhIGJpdHMuIFRoYXQg
cHJvY2VzcyBpcyBib3VuZGVkLgorICAgIGlmIChoZXJlID09IDApIHJldHVybiBmYWxzZTsKKyAg
ICBwID0gaGVyZTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8v
IEFCU0xfUkFORE9NX0JFUk5PVUxMSV9ESVNUUklCVVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmVy
bm91bGxpX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5mMmMzYjk5Y2Q0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9i
ZXJub3VsbGlfZGlzdHJpYnV0aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSwyMTMgQEAKKy8vIENvcHly
aWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20v
YmVybm91bGxpX2Rpc3RyaWJ1dGlvbi5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8
Y3N0ZGRlZj4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRl
IDx1dGlsaXR5PgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFu
ZG9tLmgiCisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEJlcm5vdWxsaVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnBhaXI8ZG91YmxlLCBzaXplX3Q+PiB7Cit9OworCitU
RVNUX1AoQmVybm91bGxpVGVzdCwgU2VyaWFsaXplKSB7CisgIGNvbnN0IGRvdWJsZSBkID0gR2V0
UGFyYW0oKS5maXJzdDsKKyAgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiBiZWZvcmUoZCk7
CisKKyAgeworICAgIGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gdmlhX3BhcmFteworICAg
ICAgICBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uOjpwYXJhbV90eXBlKGQpfTsKKyAgICBF
WFBFQ1RfRVEodmlhX3BhcmFtLCBiZWZvcmUpOworICB9CisKKyAgc3RkOjpzdHJpbmdzdHJlYW0g
c3M7CisgIHNzIDw8IGJlZm9yZTsKKyAgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiBhZnRl
cigwLjY3ODkpOworCisgIEVYUEVDVF9ORShiZWZvcmUucCgpLCBhZnRlci5wKCkpOworICBFWFBF
Q1RfTkUoYmVmb3JlLnBhcmFtKCksIGFmdGVyLnBhcmFtKCkpOworICBFWFBFQ1RfTkUoYmVmb3Jl
LCBhZnRlcik7CisKKyAgc3MgPj4gYWZ0ZXI7CisKKyAgRVhQRUNUX0VRKGJlZm9yZS5wKCksIGFm
dGVyLnAoKSk7CisgIEVYUEVDVF9FUShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7Cisg
IEVYUEVDVF9FUShiZWZvcmUsIGFmdGVyKTsKK30KKworVEVTVF9QKEJlcm5vdWxsaVRlc3QsIEFj
Y3VyYWN5KSB7CisgIC8vIFNhZGx5LCB0aGUgY2xhaW0gdG8gZmFtZSBmb3IgdGhpcyBpbXBsZW1l
bnRhdGlvbiBpcyBwcmVjaXNlIGFjY3VyYWN5LCB3aGljaAorICAvLyBpcyB2ZXJ5LCB2ZXJ5IGhh
cmQgdG8gbWVhc3VyZSwgdGhlIGltcHJvdmVtZW50cyBjb21lIGFzIHRyaWFscyBhcHByb2FjaCB0
aGUKKyAgLy8gbGltaXQgb2YgZG91YmxlIGFjY3VyYWN5OyB0aHVzIHRoZSBvdXRjb21lIGRpZmZl
cnMgZnJvbSB0aGUKKyAgLy8gc3RkOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uIHdpdGggYSBwcm9i
YWJpbGl0eSBvZiBhcHByb3hpbWF0ZWx5IDEgaW4gMl4tNTMuCisgIGNvbnN0IHN0ZDo6cGFpcjxk
b3VibGUsIHNpemVfdD4gcGFyYSA9IEdldFBhcmFtKCk7CisgIHNpemVfdCB0cmlhbHMgPSBwYXJh
LnNlY29uZDsKKyAgZG91YmxlIHAgPSBwYXJhLmZpcnN0OworCisgIGFic2w6Okluc2VjdXJlQml0
R2VuIHJuZzsKKworICBzaXplX3QgeWVzID0gMDsKKyAgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1
dGlvbiBkaXN0KHApOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyaWFsczsgKytpKSB7Cisg
ICAgaWYgKGRpc3Qocm5nKSkgeWVzKys7CisgIH0KKworICAvLyBDb21wdXRlIHRoZSBkaXN0cmli
dXRpb24gcGFyYW1ldGVycyBmb3IgYSBiaW5vbWlhbCB0ZXN0LCB1c2luZyBhIG5vcm1hbAorICAv
LyBhcHByb3hpbWF0aW9uIGZvciB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCwgYXMgdGhlcmUgYXJl
IGEgc3VmZmljaWVudGx5CisgIC8vIGxhcmdlIG51bWJlciBvZiB0cmlhbHMgdGhhdCB0aGUgY2Vu
dHJhbCBsaW1pdCB0aGVvcmVtIGFwcGxpZXMuCisgIGNvbnN0IGRvdWJsZSBzdGRkZXZfcCA9IHN0
ZDo6c3FydCgocCAqICgxLjAgLSBwKSkgLyB0cmlhbHMpOworICBjb25zdCBkb3VibGUgZXhwZWN0
ZWQgPSB0cmlhbHMgKiBwOworICBjb25zdCBkb3VibGUgc3RkZGV2ID0gdHJpYWxzICogc3RkZGV2
X3A7CisKKyAgLy8gNSBzaWdtYSwgYXBwcm92ZWQgYnkgUmljaGFyZCBGZXlubWFuCisgIEVYUEVD
VF9ORUFSKHllcywgZXhwZWN0ZWQsIDUgKiBzdGRkZXYpCisgICAgICA8PCAiQCIgPDwgcCA8PCAi
LCAiCisgICAgICA8PCBzdGQ6OmFicyhzdGF0aWNfY2FzdDxkb3VibGU+KHllcykgLSBleHBlY3Rl
ZCkgLyBzdGRkZXYgPDwgIiBzdGRkZXYiOworfQorCisvLyBUaGVyZSBtdXN0IGJlIG1hbnkgbW9y
ZSB0cmlhbHMgdG8gbWFrZSB0aGUgbWVhbiBhcHByb3hpbWF0ZWx5IG5vcm1hbCBmb3IgYHBgCisv
LyBjbG9zZXMgdG8gMCBvciAxLgorSU5TVEFOVElBVEVfVEVTVF9TVUlURV9QKAorICAgIEFsbCwg
QmVybm91bGxpVGVzdCwKKyAgICA6OnRlc3Rpbmc6OlZhbHVlcygKKyAgICAgICAgLy8gVHlwaWNh
bCB2YWx1ZXMuCisgICAgICAgIHN0ZDo6bWFrZV9wYWlyKDAsIDMwMDAwKSwgc3RkOjptYWtlX3Bh
aXIoMWUtMywgMzAwMDAwMDApLAorICAgICAgICBzdGQ6Om1ha2VfcGFpcigwLjEsIDMwMDAwMDAp
LCBzdGQ6Om1ha2VfcGFpcigwLjUsIDMwMDAwMDApLAorICAgICAgICBzdGQ6Om1ha2VfcGFpcigw
LjksIDMwMDAwMDAwKSwgc3RkOjptYWtlX3BhaXIoMC45OTksIDMwMDAwMDAwKSwKKyAgICAgICAg
c3RkOjptYWtlX3BhaXIoMSwgMzAwMDApLAorICAgICAgICAvLyBCb3VuZGFyeSBjYXNlcy4KKyAg
ICAgICAgc3RkOjptYWtlX3BhaXIoc3RkOjpuZXh0YWZ0ZXIoMS4wLCAwLjApLCAxKSwgIC8vIH4x
IC0gZXBzaWxvbgorICAgICAgICBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmVwc2lsb24oKSwgMSksCisgICAgICAgIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bmV4dGFm
dGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWluKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuMCksICAvLyBtaW4gKyBlcHNpbG9uCisgICAgICAgICAg
ICAgICAgICAgICAgIDEpLAorICAgICAgICBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46Om1pbigpLCAgLy8gc21hbGxlc3Qgbm9ybWFsCisgICAgICAgICAgICAgICAg
ICAgICAgIDEpLAorICAgICAgICBzdGQ6Om1ha2VfcGFpcigKKyAgICAgICAgICAgIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6ZGVub3JtX21pbigpLCAgLy8gc21hbGxlc3QgZGVub3JtCisg
ICAgICAgICAgICAxKSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjptaW4oKSAvIDIsIDEpLCAgLy8gZGVub3JtCisgICAgICAgIHN0ZDo6bWFrZV9w
YWlyKHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWluKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCksICAvLyBkZW5vcm1fbWF4
CisgICAgICAgICAgICAgICAgICAgICAgIDEpKSk7CisKKy8vIE5PVEU6IGFic2w6OmJlcm5vdWxs
aV9kaXN0cmlidXRpb24gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLgorVEVTVChCZXJu
b3VsbGlUZXN0LCBTdGFiaWxpdHlUZXN0KSB7CisgIC8vIGFic2w6OmJlcm5vdWxsaV9kaXN0cmli
dXRpb24gc3RhYmlsaXR5IHJlbGllcyBvbiBGYXN0VW5pZm9ybUJpdHMgYW5kCisgIC8vIGludGVn
ZXIgYXJpdGhtZXRpYy4KKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVy
YmcoeworICAgICAgMHgwMDAzZWI3NmY2ZjdmNzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGws
IDB4QzMzMkRERUZCRTZDNUFBNXVsbCwKKyAgICAgIDB4NjU1ODIxODU2OEFCOTcwMnVsbCwgMHgy
QUVGN0RBRDVCNkUyRjg0dWxsLCAweDE1MjFCNjI4MjkwNzYxNzB1bGwsCisgICAgICAweEVDREQ0
Nzc1NjE5RjE1MTB1bGwsIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbCwgMHgwMzM0RkUxRUFBMDM2M0NG
dWxsLAorICAgICAgMHhCNTczNUM5MDRDNzBBMjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1bGws
IDB4RUVDQzg2QkM2MDYyMkNBN3VsbCwKKyAgICAgIDB4NDg2NGYyMmMwNTliZjI5ZXVsbCwgMHgy
NDc4NTZkOGI4NjI2NjVjdWxsLCAweGU0NmU4NmU5YTEzMzdlMTB1bGwsCisgICAgICAweGQ4Yzg1
NDFmMzUxOWIxMzN1bGwsIDB4ZTc1YjUxNjJjNTY3YjllNHVsbCwgMHhmNzMyZTVkZWQ3MDA5YzVi
dWxsLAorICAgICAgMHhiMTcwYjk4MzUzMTIxZWFjdWxsLCAweDFlYzJlODk4NmQyMzYyY2F1bGws
IDB4ODE0YzhlMzVmZTlhOTYxYXVsbCwKKyAgICAgIDB4MGMzY2Q1OWM5YjYzOGEwMnVsbCwgMHhj
YjNiYjY0NzhhMDc3MTVjdWxsLCAweDEyMjRlNjJjOTc4YmJjN2Z1bGwsCisgICAgICAweDY3MWVm
MmNiMDRlODFmNmV1bGwsIDB4M2MxY2JkODExZWFmMTgwOHVsbCwgMHgxYmJjMjNjZmE4ZmFjNzIx
dWxsLAorICAgICAgMHhhNGMyY2RhNjVlNTk2YTUxdWxsLCAweGI3NzIxNmZhZDM3YWRmOTF1bGws
IDB4ODM2ZDc5NDQ1N2MwODg0OXVsbCwKKyAgICAgIDB4ZTA4M2RmMDM0NzVmNDlkN3VsbCwgMHhi
YzlmZWI1MTJlNmIwZDZjdWxsLCAweGIxMmQ3NGZkZDcxOGM4YzV1bGwsCisgICAgICAweDEyZmYw
OTY1M2JmYmU0Y2F1bGwsIDB4OGRkMDNhMTA1YmM0ZWU3ZXVsbCwgMHg1NzM4MzQxMDQ1YmEwZDg1
dWxsLAorICAgICAgMHhlM2ZkNzIyZGM2NWFkMDlldWxsLCAweDVhMTRmZDIxZWEyYTU3MDV1bGws
IDB4MTRlNmVhNGQ2ZWRiMGM3M3VsbCwKKyAgICAgIDB4Mjc1YjBkYzdlMGExOGFjZnVsbCwgMHgz
NmNlYmUwZDI2NTM2ODJldWxsLCAweDAzNjFlOWIyMzg2MTU5NmJ1bGwsCisgIH0pOworCisgIC8v
IEdlbmVyYXRlIGEgc3RkOjpzdHJpbmcgb2YgJzAnIGFuZCAnMScgZm9yIHRoZSBkaXN0cmlidXRp
b24gb3V0cHV0LgorICBhdXRvIGdlbmVyYXRlID0gWyZ1cmJnXShhYnNsOjpiZXJub3VsbGlfZGlz
dHJpYnV0aW9uJiBkaXN0KSB7CisgICAgc3RkOjpzdHJpbmcgb3V0cHV0OworICAgIG91dHB1dC5y
ZXNlcnZlKDM2KTsKKyAgICB1cmJnLnJlc2V0KCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAz
NTsgaSsrKSB7CisgICAgICBvdXRwdXQuYXBwZW5kKGRpc3QodXJiZykgPyAiMSIgOiAiMCIpOwor
ICAgIH0KKyAgICByZXR1cm4gb3V0cHV0OworICB9OworCisgIGNvbnN0IGRvdWJsZSBrUCA9IDAu
MDMzMTI4OTg2MjM2MjsKKyAgeworICAgIGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gZGlz
dChrUCk7CisgICAgYXV0byB2ID0gZ2VuZXJhdGUoZGlzdCk7CisgICAgRVhQRUNUX0VRKDM1LCB1
cmJnLmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9FUSh2LCAiMDAwMDAwMDAwMDAwMTAwMDAw
MDAwMDAwMTAwMDAwMDAwMDAiKSA8PCBkaXN0OworICB9CisgIHsKKyAgICBhYnNsOjpiZXJub3Vs
bGlfZGlzdHJpYnV0aW9uIGRpc3Qoa1AgKiAxMC4wKTsKKyAgICBhdXRvIHYgPSBnZW5lcmF0ZShk
aXN0KTsKKyAgICBFWFBFQ1RfRVEoMzUsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQRUNU
X0VRKHYsICIwMDAwMDEwMDAxMDAxMDAxMDAxMDAwMDAxMTAwMDAxMTAxMCIpIDw8IGRpc3Q7Cisg
IH0KKyAgeworICAgIGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gZGlzdChrUCAqIDIwLjAp
OworICAgIGF1dG8gdiA9IGdlbmVyYXRlKGRpc3QpOworICAgIEVYUEVDVF9FUSgzNSwgdXJiZy5p
bnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfRVEodiwgIjAwMDExMTEwMDEwMTEwMTEwMDExMDEx
MTExMTEwMTExMDExIikgPDwgZGlzdDsKKyAgfQorICB7CisgICAgYWJzbDo6YmVybm91bGxpX2Rp
c3RyaWJ1dGlvbiBkaXN0KDEuMCAtIGtQKTsKKyAgICBhdXRvIHYgPSBnZW5lcmF0ZShkaXN0KTsK
KyAgICBFWFBFQ1RfRVEoMzUsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQRUNUX0VRKHYs
ICIxMTExMTExMTExMTExMTExMTExMTAxMTExMTExMTExMTExMSIpIDw8IGRpc3Q7CisgIH0KK30K
KworVEVTVChCZXJub3VsbGlUZXN0LCBTdGFiaWxpdHlUZXN0MikgeworICBhYnNsOjpyYW5kb21f
aW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAgICAgIHsweDAwMDNlYjc2ZjZmN2Y3NTV1
bGwsIDB4RkZDRUE1MEZEQjJGOTUzQnVsbCwgMHhDMzMyRERFRkJFNkM1QUE1dWxsLAorICAgICAg
IDB4NjU1ODIxODU2OEFCOTcwMnVsbCwgMHgyQUVGN0RBRDVCNkUyRjg0dWxsLCAweDE1MjFCNjI4
MjkwNzYxNzB1bGwsCisgICAgICAgMHhFQ0RENDc3NTYxOUYxNTEwdWxsLCAweDEzQ0NBODMwRUI2
MUJEOTZ1bGwsIDB4MDMzNEZFMUVBQTAzNjNDRnVsbCwKKyAgICAgICAweEI1NzM1QzkwNEM3MEEy
Mzl1bGwsIDB4RDU5RTlFMEJDQkFBREUxNHVsbCwgMHhFRUNDODZCQzYwNjIyQ0E3dWxsfSk7CisK
KyAgLy8gR2VuZXJhdGUgYSBzdGQ6OnN0cmluZyBvZiAnMCcgYW5kICcxJyBmb3IgdGhlIGRpc3Ry
aWJ1dGlvbiBvdXRwdXQuCisgIGF1dG8gZ2VuZXJhdGUgPSBbJnVyYmddKGFic2w6OmJlcm5vdWxs
aV9kaXN0cmlidXRpb24mIGRpc3QpIHsKKyAgICBzdGQ6OnN0cmluZyBvdXRwdXQ7CisgICAgb3V0
cHV0LnJlc2VydmUoMTMpOworICAgIHVyYmcucmVzZXQoKTsKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IDEyOyBpKyspIHsKKyAgICAgIG91dHB1dC5hcHBlbmQoZGlzdCh1cmJnKSA/ICIxIiA6ICIw
Iik7CisgICAgfQorICAgIHJldHVybiBvdXRwdXQ7CisgIH07CisKKyAgY29uc3RleHByIGRvdWJs
ZSBiMCA9IDEuMCAvIDEzLjAgLyAwLjI7CisgIGNvbnN0ZXhwciBkb3VibGUgYjEgPSAyLjAgLyAx
My4wIC8gMC4yOworICBjb25zdGV4cHIgZG91YmxlIGIzID0gKDUuMCAvIDEzLjAgLyAwLjIpIC0g
KCgxIC0gYjApICsgKDEgLSBiMSkgKyAoMSAtIGIxKSk7CisgIHsKKyAgICBhYnNsOjpiZXJub3Vs
bGlfZGlzdHJpYnV0aW9uIGRpc3QoYjApOworICAgIGF1dG8gdiA9IGdlbmVyYXRlKGRpc3QpOwor
ICAgIEVYUEVDVF9FUSgxMiwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfRVEodiwg
IjAwMDAxMTEwMDEwMSIpIDw8IGRpc3Q7CisgIH0KKyAgeworICAgIGFic2w6OmJlcm5vdWxsaV9k
aXN0cmlidXRpb24gZGlzdChiMSk7CisgICAgYXV0byB2ID0gZ2VuZXJhdGUoZGlzdCk7CisgICAg
RVhQRUNUX0VRKDEyLCB1cmJnLmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9FUSh2LCAiMDAx
MTExMTAxMTAxIikgPDwgZGlzdDsKKyAgfQorICB7CisgICAgYWJzbDo6YmVybm91bGxpX2Rpc3Ry
aWJ1dGlvbiBkaXN0KGIzKTsKKyAgICBhdXRvIHYgPSBnZW5lcmF0ZShkaXN0KTsKKyAgICBFWFBF
Q1RfRVEoMTIsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQRUNUX0VRKHYsICIwMDExMTEx
MDExMTEiKSA8PCBkaXN0OworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2JldGFfZGlzdHJpYnV0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmV0YV9kaXN0
cmlidXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDdhZmQ2
MWM3ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmV0YV9kaXN0cmlidXRpb24u
aApAQCAtMCwwICsxLDQxNCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fQkVUQV9ESVNUUklCVVRJT05fSF8KKyNkZWZpbmUg
QUJTTF9SQU5ET01fQkVUQV9ESVNUUklCVVRJT05fSF8KKworI2luY2x1ZGUgPGNhc3NlcnQ+Cisj
aW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8aXN0cmVhbT4KKyNpbmNsdWRlIDxsaW1pdHM+Cisj
aW5jbHVkZSA8b3N0cmVhbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsLmgiCisjaW5jbHVkZSAiYWJzbC9y
YW5kb20vaW50ZXJuYWwvZmFzdF91bmlmb3JtX2JpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9mYXN0bWF0aC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lv
c3RyZWFtX3N0YXRlX3NhdmVyLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKKworLy8gYWJzbDo6YmV0
YV9kaXN0cmlidXRpb246CisvLyBHZW5lcmF0ZSBhIGZsb2F0aW5nLXBvaW50IHZhcmlhdGUgY29u
Zm9ybWluZyB0byBhIEJldGEgZGlzdHJpYnV0aW9uOgorLy8gICBwZGYoeCkgXHByb3B0byB4Xihh
bHBoYS0xKSAqICgxLXgpXihiZXRhLTEpLAorLy8gd2hlcmUgdGhlIHBhcmFtcyBhbHBoYSBhbmQg
YmV0YSBhcmUgYm90aCBzdHJpY3RseSBwb3NpdGl2ZSByZWFsIHZhbHVlcy4KKy8vCisvLyBUaGUg
c3VwcG9ydCBpcyB0aGUgb3BlbiBpbnRlcnZhbCAoMCwgMSksIGJ1dCB0aGUgcmV0dXJuIHZhbHVl
IG1pZ2h0IGJlIGVxdWFsCisvLyB0byAwIG9yIDEsIGR1ZSB0byBudW1lcmljYWwgZXJyb3JzIHdo
ZW4gYWxwaGEgYW5kIGJldGEgYXJlIHZlcnkgZGlmZmVyZW50LgorLy8KKy8vIFVzYWdlIG5vdGU6
IE9uZSB1c2FnZSBpcyB0aGF0IGFscGhhIGFuZCBiZXRhIGFyZSBjb3VudHMgb2YgbnVtYmVyIG9m
CisvLyBzdWNjZXNzZXMgYW5kIGZhaWx1cmVzLiBXaGVuIHRoZSB0b3RhbCBudW1iZXIgb2YgdHJp
YWxzIGFyZSBsYXJnZSwgY29uc2lkZXIKKy8vIGFwcHJveGltYXRpbmcgYSBiZXRhIGRpc3RyaWJ1
dGlvbiB3aXRoIGEgR2F1c3NpYW4gZGlzdHJpYnV0aW9uIHdpdGggdGhlIHNhbWUKKy8vIG1lYW4g
YW5kIHZhcmlhbmNlLiBPbmUgY291bGQgdXNlIHRoZSBza2V3bmVzcywgd2hpY2ggZGVwZW5kcyBv
bmx5IG9uIHRoZQorLy8gc21hbGxlciBvZiBhbHBoYSBhbmQgYmV0YSB3aGVuIHRoZSBudW1iZXIg
b2YgdHJpYWxzIGFyZSBzdWZmaWNpZW50bHkgbGFyZ2UsCisvLyB0byBxdWFudGlmeSBob3cgZmFy
IGEgYmV0YSBkaXN0cmlidXRpb24gaXMgZnJvbSB0aGUgbm9ybWFsIGRpc3RyaWJ1dGlvbi4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlwZSA9IGRvdWJsZT4KK2NsYXNzIGJldGFfZGlzdHJpYnV0
aW9uIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gUmVhbFR5cGU7CisKKyAgY2xh
c3MgcGFyYW1fdHlwZSB7CisgICBwdWJsaWM6CisgICAgdXNpbmcgZGlzdHJpYnV0aW9uX3R5cGUg
PSBiZXRhX2Rpc3RyaWJ1dGlvbjsKKworICAgIGV4cGxpY2l0IHBhcmFtX3R5cGUocmVzdWx0X3R5
cGUgYWxwaGEsIHJlc3VsdF90eXBlIGJldGEpCisgICAgICAgIDogYWxwaGFfKGFscGhhKSwgYmV0
YV8oYmV0YSkgeworICAgICAgYXNzZXJ0KGFscGhhID49IDApOworICAgICAgYXNzZXJ0KGJldGEg
Pj0gMCk7CisgICAgICBhc3NlcnQoYWxwaGEgPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0
X3R5cGU+OjptYXgpKCkpOworICAgICAgYXNzZXJ0KGJldGEgPD0gKHN0ZDo6bnVtZXJpY19saW1p
dHM8cmVzdWx0X3R5cGU+OjptYXgpKCkpOworICAgICAgaWYgKGFscGhhID09IDAgfHwgYmV0YSA9
PSAwKSB7CisgICAgICAgIG1ldGhvZF8gPSBERUdFTkVSQVRFX1NNQUxMOworICAgICAgICB4XyA9
IChhbHBoYSA+PSBiZXRhKSA/IDEgOiAwOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAg
ICAvLyBhXyA9IG1pbihiZXRhLCBhbHBoYSksIGJfID0gbWF4KGJldGEsIGFscGhhKS4KKyAgICAg
IGlmIChiZXRhIDwgYWxwaGEpIHsKKyAgICAgICAgaW52ZXJ0ZWRfID0gdHJ1ZTsKKyAgICAgICAg
YV8gPSBiZXRhOworICAgICAgICBiXyA9IGFscGhhOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
aW52ZXJ0ZWRfID0gZmFsc2U7CisgICAgICAgIGFfID0gYWxwaGE7CisgICAgICAgIGJfID0gYmV0
YTsKKyAgICAgIH0KKyAgICAgIGlmIChhXyA8PSAxICYmIGJfID49IFRocmVzaG9sZEZvckxhcmdl
QSgpKSB7CisgICAgICAgIG1ldGhvZF8gPSBERUdFTkVSQVRFX1NNQUxMOworICAgICAgICB4XyA9
IGludmVydGVkXyA/IHJlc3VsdF90eXBlKDEpIDogcmVzdWx0X3R5cGUoMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICAgIH0KKyAgICAgIC8vIEZvciB0aHJlc2hvbGQgdmFsdWVzLCBzZWUgYWxzbzoK
KyAgICAgIC8vIEV2YWx1YXRpb24gb2YgQmV0YSBHZW5lcmF0aW9uIEFsZ29yaXRobXMsIFlpbmct
Q2hhbyBIdW5nLCBldC4gYWwuCisgICAgICAvLyBGZWJydWFyeSwgMjAwOS4KKyAgICAgIGlmICgo
Yl8gPCAxLjAgJiYgYV8gKyBiXyA8PSAxLjIpIHx8IGFfIDw9IFRocmVzaG9sZEZvclNtYWxsQSgp
KSB7CisgICAgICAgIC8vIENob29zZSBKb2Vobmsgb3ZlciBDaGVuZyB3aGVuIGl0J3MgZmFzdGVy
IG9yIHdoZW4gQ2hlbmcgZW5jb3VudGVycworICAgICAgICAvLyBudW1lcmljYWwgaXNzdWVzLgor
ICAgICAgICBtZXRob2RfID0gSk9FSE5LOworICAgICAgICBhXyA9IHJlc3VsdF90eXBlKDEpIC8g
YWxwaGFfOworICAgICAgICBiXyA9IHJlc3VsdF90eXBlKDEpIC8gYmV0YV87CisgICAgICAgIGlm
IChzdGQ6OmlzaW5mKGFfKSB8fCBzdGQ6OmlzaW5mKGJfKSkgeworICAgICAgICAgIG1ldGhvZF8g
PSBERUdFTkVSQVRFX1NNQUxMOworICAgICAgICAgIHhfID0gaW52ZXJ0ZWRfID8gcmVzdWx0X3R5
cGUoMSkgOiByZXN1bHRfdHlwZSgwKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAg
ICB9CisgICAgICBpZiAoYV8gPj0gVGhyZXNob2xkRm9yTGFyZ2VBKCkpIHsKKyAgICAgICAgbWV0
aG9kXyA9IERFR0VORVJBVEVfTEFSR0U7CisgICAgICAgIC8vIE5vdGU6IG9uIFBQQyBmb3IgbG9u
ZyBkb3VibGUsIGV2YWx1YXRpbmcKKyAgICAgICAgLy8gYHN0ZDo6bnVtZXJpY19saW1pdHM6Om1h
eCgpIC8gVGhyZXNob2xkRm9yTGFyZ2VBYCByZXN1bHRzIGluIE5hTi4KKyAgICAgICAgcmVzdWx0
X3R5cGUgciA9IGFfIC8gYl87CisgICAgICAgIHhfID0gKGludmVydGVkXyA/IHJlc3VsdF90eXBl
KDEpIDogcikgLyAoMSArIHIpOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICB4XyA9
IGFfICsgYl87CisgICAgICBsb2dfeF8gPSBzdGQ6OmxvZyh4Xyk7CisgICAgICBpZiAoYV8gPD0g
MSkgeworICAgICAgICBtZXRob2RfID0gQ0hFTkdfQkE7CisgICAgICAgIHlfID0gcmVzdWx0X3R5
cGUoMSkgLyBhXzsKKyAgICAgICAgZ2FtbWFfID0gYV8gKyBhXzsKKyAgICAgICAgcmV0dXJuOwor
ICAgICAgfQorICAgICAgbWV0aG9kXyA9IENIRU5HX0JCOworICAgICAgcmVzdWx0X3R5cGUgciA9
IChhXyAtIDEpIC8gKGJfIC0gMSk7CisgICAgICB5XyA9IHN0ZDo6c3FydCgoMSArIHIpIC8gKGJf
ICogciAqIDIgLSByICsgMSkpOworICAgICAgZ2FtbWFfID0gYV8gKyByZXN1bHRfdHlwZSgxKSAv
IHlfOworICAgIH0KKworICAgIHJlc3VsdF90eXBlIGFscGhhKCkgY29uc3QgeyByZXR1cm4gYWxw
aGFfOyB9CisgICAgcmVzdWx0X3R5cGUgYmV0YSgpIGNvbnN0IHsgcmV0dXJuIGJldGFfOyB9CisK
KyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBh
cmFtX3R5cGUmIGIpIHsKKyAgICAgIHJldHVybiBhLmFscGhhXyA9PSBiLmFscGhhXyAmJiBhLmJl
dGFfID09IGIuYmV0YV87CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICByZXR1cm4gIShh
ID09IGIpOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgYmV0YV9kaXN0
cmlidXRpb247CisKKyNpZmRlZiBDT01QSUxFUl9NU1ZDCisgICAgLy8gTVNWQyBkb2VzIG5vdCBo
YXZlIGNvbnN0ZXhwciBpbXBsZW1lbnRhdGlvbnMgZm9yIHN0ZDo6bG9nIGFuZCBzdGQ6OmV4cAor
ICAgIC8vIHNvIHRoZXkgYXJlIGNvbXB1dGVkIGF0IHJ1bnRpbWUuCisjZGVmaW5lIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX0xPR19FWFBfQ09OU1RFWFBSCisjZWxzZQorI2RlZmluZSBBQlNMX1JBTkRP
TV9JTlRFUk5BTF9MT0dfRVhQX0NPTlNURVhQUiBjb25zdGV4cHIKKyNlbmRpZgorCisgICAgLy8g
VGhlIHRocmVzaG9sZCBmb3Igd2hldGhlciBzdGQ6OmV4cCgxL2EpIGlzIGZpbml0ZS4KKyAgICAv
LyBOb3RlIHRoYXQgdGhpcyB2YWx1ZSBpcyBxdWl0ZSBsYXJnZSwgYW5kIGEgc21hbGxlciBhXyBp
cyBOT1QgYWJub3JtYWwuCisgICAgc3RhdGljIEFCU0xfUkFORE9NX0lOVEVSTkFMX0xPR19FWFBf
Q09OU1RFWFBSIHJlc3VsdF90eXBlCisgICAgVGhyZXNob2xkRm9yU21hbGxBKCkgeworICAgICAg
cmV0dXJuIHJlc3VsdF90eXBlKDEpIC8KKyAgICAgICAgICAgICBzdGQ6OmxvZygoc3RkOjpudW1l
cmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCkoKSk7CisgICAgfQorCisgICAgLy8gVGhlIHRo
cmVzaG9sZCBmb3Igd2hldGhlciBhICogc3RkOjpsb2coYSkgaXMgZmluaXRlLgorICAgIHN0YXRp
YyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9MT0dfRVhQX0NPTlNURVhQUiByZXN1bHRfdHlwZQorICAg
IFRocmVzaG9sZEZvckxhcmdlQSgpIHsKKyAgICAgIHJldHVybiBzdGQ6OmV4cCgKKyAgICAgICAg
ICBzdGQ6OmxvZygoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCkoKSkgLQor
ICAgICAgICAgIHN0ZDo6bG9nKHN0ZDo6bG9nKChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90
eXBlPjo6bWF4KSgpKSkgLQorICAgICAgICAgIFRocmVzaG9sZFBhZGRpbmcoKSk7CisgICAgfQor
CisjdW5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfTE9HX0VYUF9DT05TVEVYUFIKKworICAgIC8v
IFBhZCB0aGUgdGhyZXNob2xkIGZvciBsYXJnZSBBIGZvciBsb25nIGRvdWJsZSBvbiBQUEMuIFRo
aXMgaXMgZG9uZSB2aWEgYQorICAgIC8vIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGJlbG93Lgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUgVGhyZXNob2xkUGFkZGluZygpIHsgcmV0
dXJuIDA7IH0KKworICAgIGVudW0gTWV0aG9kIHsKKyAgICAgIEpPRUhOSywgICAgLy8gVXNlcyBh
bGdvcml0aG0gSm9laG5rCisgICAgICBDSEVOR19CQSwgIC8vIFVzZXMgYWxnb3JpdGhtIEJBIGlu
IENoZW5nCisgICAgICBDSEVOR19CQiwgIC8vIFVzZXMgYWxnb3JpdGhtIEJCIGluIENoZW5nCisK
KyAgICAgIC8vIE5vdGU6IFNlZSBhbHNvOgorICAgICAgLy8gICBIdW5nIGV0IGFsLiBFdmFsdWF0
aW9uIG9mIGJldGEgZ2VuZXJhdGlvbiBhbGdvcml0aG1zLiBDb21tdW5pY2F0aW9ucworICAgICAg
Ly8gICBpbiBTdGF0aXN0aWNzLVNpbXVsYXRpb24gYW5kIENvbXB1dGF0aW9uIDM4LjQgKDIwMDkp
OiA3NTAtNzcwLgorICAgICAgLy8gZXNwZWNpYWxseToKKyAgICAgIC8vICAgWmVjaG5lciwgSGVp
bnosIGFuZCBFcm5zdCBTdGFkbG9iZXIuIEdlbmVyYXRpbmcgYmV0YSB2YXJpYXRlcyB2aWEKKyAg
ICAgIC8vICAgcGF0Y2h3b3JrIHJlamVjdGlvbi4gQ29tcHV0aW5nIDUwLjEgKDE5OTMpOiAxLTE4
LgorCisgICAgICBERUdFTkVSQVRFX1NNQUxMLCAgLy8gYV8gaXMgYWJub3JtYWxseSBzbWFsbC4K
KyAgICAgIERFR0VORVJBVEVfTEFSR0UsICAvLyBhXyBpcyBhYm5vcm1hbGx5IGxhcmdlLgorICAg
IH07CisKKyAgICByZXN1bHRfdHlwZSBhbHBoYV87CisgICAgcmVzdWx0X3R5cGUgYmV0YV87CisK
KyAgICByZXN1bHRfdHlwZSBhXzsgIC8vIHRoZSBzbWFsbGVyIG9mIHthbHBoYSwgYmV0YX0sIG9y
IDEuMC9hbHBoYV8gaW4gSk9FSE5LCisgICAgcmVzdWx0X3R5cGUgYl87ICAvLyB0aGUgbGFyZ2Vy
IG9mIHthbHBoYSwgYmV0YX0sIG9yIDEuMC9iZXRhXyBpbiBKT0VITksKKyAgICByZXN1bHRfdHlw
ZSB4XzsgIC8vIGFscGhhICsgYmV0YSwgb3IgdGhlIHJlc3VsdCBpbiBkZWdlbmVyYXRlIGNhc2Vz
CisgICAgcmVzdWx0X3R5cGUgbG9nX3hfOyAgLy8gbG9nKHhfKQorICAgIHJlc3VsdF90eXBlIHlf
OyAgICAgIC8vICJiZXRhIiBpbiBDaGVuZworICAgIHJlc3VsdF90eXBlIGdhbW1hXzsgIC8vICJn
YW1tYSIgaW4gQ2hlbmcKKworICAgIE1ldGhvZCBtZXRob2RfOworCisgICAgLy8gUGxhY2luZyB0
aGlzIGxhc3QgZm9yIG9wdGltYWwgYWxpZ25tZW50LgorICAgIC8vIFdoZXRoZXIgYWxwaGFfICE9
IGFfLCBpLmUuIHRydWUgaWZmIGFscGhhXyA+IGJldGFfLgorICAgIGJvb2wgaW52ZXJ0ZWRfOwor
CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFJlYWxUeXBlPjo6dmFs
dWUsCisgICAgICAgICAgICAgICAgICAiQ2xhc3MtdGVtcGxhdGUgYWJzbDo6YmV0YV9kaXN0cmli
dXRpb248PiBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJpemVkIHVzaW5n
IGEgZmxvYXRpbmctcG9pbnQgdHlwZS4iKTsKKyAgfTsKKworICBiZXRhX2Rpc3RyaWJ1dGlvbigp
IDogYmV0YV9kaXN0cmlidXRpb24oMSkge30KKworICBleHBsaWNpdCBiZXRhX2Rpc3RyaWJ1dGlv
bihyZXN1bHRfdHlwZSBhbHBoYSwgcmVzdWx0X3R5cGUgYmV0YSA9IDEpCisgICAgICA6IHBhcmFt
XyhhbHBoYSwgYmV0YSkge30KKworICBleHBsaWNpdCBiZXRhX2Rpc3RyaWJ1dGlvbihjb25zdCBw
YXJhbV90eXBlJiBwKSA6IHBhcmFtXyhwKSB7fQorCisgIHZvaWQgcmVzZXQoKSB7fQorCisgIC8v
IEdlbmVyYXRpbmcgZnVuY3Rpb25zCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1
bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5j
ZXMpCisgICAgcmV0dXJuICgqdGhpcykoZywgcGFyYW1fKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcsICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBh
cmFtX3R5cGUmIHApOworCisgIHBhcmFtX3R5cGUgcGFyYW0oKSBjb25zdCB7IHJldHVybiBwYXJh
bV87IH0KKyAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBwKSB7IHBhcmFtXyA9IHA7IH0K
KworICByZXN1bHRfdHlwZShtaW4pKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICByZXN1bHRfdHlw
ZShtYXgpKCkgY29uc3QgeyByZXR1cm4gMTsgfQorCisgIHJlc3VsdF90eXBlIGFscGhhKCkgY29u
c3QgeyByZXR1cm4gcGFyYW1fLmFscGhhKCk7IH0KKyAgcmVzdWx0X3R5cGUgYmV0YSgpIGNvbnN0
IHsgcmV0dXJuIHBhcmFtXy5iZXRhKCk7IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IGJldGFfZGlzdHJpYnV0aW9uJiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGJldGFfZGlzdHJpYnV0aW9uJiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fID09IGIucGFyYW1f
OworICB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgYmV0YV9kaXN0cmlidXRpb24m
IGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmV0YV9kaXN0cmlidXRpb24mIGIp
IHsKKyAgICByZXR1cm4gYS5wYXJhbV8gIT0gYi5wYXJhbV87CisgIH0KKworIHByaXZhdGU6Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBBbGdvcml0aG1Kb2Vobmso
VVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBwKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgQWxnb3JpdGhtQ2hlbmcoVVJCRyYgZywgIC8vIE5PTElO
VChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHBhcmFtX3R5cGUmIHApOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRf
dHlwZSBEZWdlbmVyYXRlQ2FzZShVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNl
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgcCkgewor
ICAgIGlmIChwLm1ldGhvZF8gPT0gcGFyYW1fdHlwZTo6REVHRU5FUkFURV9TTUFMTCAmJiBwLmFs
cGhhXyA9PSBwLmJldGFfKSB7CisgICAgICAvLyBSZXR1cm5zIDAgb3IgMSB3aXRoIGVxdWFsIHBy
b2JhYmlsaXR5LgorICAgICAgcmFuZG9tX2ludGVybmFsOjpGYXN0VW5pZm9ybUJpdHM8dWludDhf
dD4gZmFzdF91ODsKKyAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oKGZhc3Rf
dTgoZykgJiAweDEwKSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
KTsgIC8vIHBpY2sgYW55IHNpbmdsZSBiaXQuCisgICAgfQorICAgIHJldHVybiBwLnhfOworICB9
CisKKyAgcGFyYW1fdHlwZSBwYXJhbV87CisgIHJhbmRvbV9pbnRlcm5hbDo6RmFzdFVuaWZvcm1C
aXRzPHVpbnQ2NF90PiBmYXN0X3U2NF87Cit9OworCisjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f
KSB8fCBkZWZpbmVkKF9fUFBDNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgXAorICAg
IGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX1BQQ19fKQorLy8gUFBDIG5lZWRzIGEgbW9y
ZSBzdHJpbmdlbnQgYm91bmRhcnkgZm9yIGxvbmcgZG91YmxlLgordGVtcGxhdGUgPD4KK2NvbnN0
ZXhwciBsb25nIGRvdWJsZQorYmV0YV9kaXN0cmlidXRpb248bG9uZyBkb3VibGU+OjpwYXJhbV90
eXBlOjpUaHJlc2hvbGRQYWRkaW5nKCkgeworICByZXR1cm4gMTA7Cit9CisjZW5kaWYKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0eXBl
bmFtZSBiZXRhX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46OnJlc3VsdF90eXBlCitiZXRhX2Rpc3Ry
aWJ1dGlvbjxSZWFsVHlwZT46OkFsZ29yaXRobUpvZWhuaygKKyAgICBVUkJHJiBnLCAgLy8gTk9M
SU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBjb25zdCBwYXJhbV90eXBlJiBwKSB7CisgIC8v
IEJhc2VkIG9uIEpvZWhuaywgTS4gRC4gRXJ6ZXVndW5nIHZvbiBiZXRhdmVydGVpbHRlbiB1bmQg
Z2FtbWF2ZXJ0ZWlsdGVuCisgIC8vIFp1ZmFsbHN6YWhsZW4uIE1ldHJpa2EgOC4xICgxOTY0KTog
NS0xNS4KKyAgLy8gVGhpcyBtZXRob2QgaXMgZGVzY3JpYmVkIGluIEtudXRoLCBWb2wgMiAoVGhp
cmQgRWRpdGlvbiksIHBwIDEzNC4KKyAgdXNpbmcgUmFuZFU2NFRvUmVhbCA9IHR5cGVuYW1lIHJh
bmRvbV9pbnRlcm5hbDo6UmFuZFU2NFRvUmVhbDxyZXN1bHRfdHlwZT47CisgIHVzaW5nIHJhbmRv
bV9pbnRlcm5hbDo6UG9zaXRpdmVWYWx1ZVQ7CisgIHJlc3VsdF90eXBlIHUsIHYsIHgsIHksIHo7
CisgIGZvciAoOzspIHsKKyAgICB1ID0gUmFuZFU2NFRvUmVhbDo6dGVtcGxhdGUgVmFsdWU8UG9z
aXRpdmVWYWx1ZVQsIGZhbHNlPihmYXN0X3U2NF8oZykpOworICAgIHYgPSBSYW5kVTY0VG9SZWFs
Ojp0ZW1wbGF0ZSBWYWx1ZTxQb3NpdGl2ZVZhbHVlVCwgZmFsc2U+KGZhc3RfdTY0XyhnKSk7CisK
KyAgICAvLyBEaXJlY3QgbWV0aG9kLiBzdGQ6OnBvdyBpcyBzbG93IGZvciBmbG9hdCwgc28gcmVs
eSBvbiB0aGUgb3B0aW1pemVyIHRvCisgICAgLy8gcmVtb3ZlIHRoZSBzdGQ6OnBvdygpIHBhdGgg
Zm9yIHRoYXQgY2FzZS4KKyAgICBpZiAoIXN0ZDo6aXNfc2FtZTxmbG9hdCwgcmVzdWx0X3R5cGU+
Ojp2YWx1ZSkgeworICAgICAgeCA9IHN0ZDo6cG93KHUsIHAuYV8pOworICAgICAgeSA9IHN0ZDo6
cG93KHYsIHAuYl8pOworICAgICAgeiA9IHggKyB5OworICAgICAgaWYgKHogPiAxKSB7CisgICAg
ICAgIC8vIFJlamVjdCBpZiBhbmQgb25seSBpZiBgeCArIHkgPiAxLjBgCisgICAgICAgIGNvbnRp
bnVlOworICAgICAgfQorICAgICAgaWYgKHogPiAwKSB7CisgICAgICAgIC8vIFdoZW4gYm90aCBh
bHBoYSBhbmQgYmV0YSBhcmUgc21hbGwsIHggYW5kIHkgYXJlIGJvdGggY2xvc2UgdG8gMCwgc28K
KyAgICAgICAgLy8gZGl2aWRlIGJ5ICh4K3kpIGRpcmVjdGx5IG1heSByZXN1bHQgaW4gbmFuLgor
ICAgICAgICByZXR1cm4geCAvIHo7CisgICAgICB9CisgICAgfQorCisgICAgLy8gTG9nIHRyYW5z
Zm9ybS4KKyAgICAvLyB4ID0gbG9nKCBwb3codSwgcC5hXykgKSwgeSA9IGxvZyggcG93KHYsIHAu
Yl8pICkKKyAgICAvLyBzaW5jZSB1LCB2IDw9IDEuMCwgIHgsIHkgPCAwLgorICAgIHggPSBzdGQ6
OmxvZyh1KSAqIHAuYV87CisgICAgeSA9IHN0ZDo6bG9nKHYpICogcC5iXzsKKyAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUoeCkgfHwgIXN0ZDo6aXNmaW5pdGUoeSkpIHsKKyAgICAgIGNvbnRpbnVlOwor
ICAgIH0KKyAgICAvLyB6ID0gbG9nKCBwb3codSwgYSkgKyBwb3codiwgYikgKQorICAgIHogPSB4
ID4geSA/ICh4ICsgc3RkOjpsb2coMSArIHN0ZDo6ZXhwKHkgLSB4KSkpCisgICAgICAgICAgICAg
IDogKHkgKyBzdGQ6OmxvZygxICsgc3RkOjpleHAoeCAtIHkpKSk7CisgICAgLy8gUmVqZWN0IGlm
ZiBsb2coeCt5KSA+IDAuCisgICAgaWYgKHogPiAwKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9
CisgICAgcmV0dXJuIHN0ZDo6ZXhwKHggLSB6KTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgUmVhbFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIGJldGFfZGlz
dHJpYnV0aW9uPFJlYWxUeXBlPjo6cmVzdWx0X3R5cGUKK2JldGFfZGlzdHJpYnV0aW9uPFJlYWxU
eXBlPjo6QWxnb3JpdGhtQ2hlbmcoCisgICAgVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3Jl
ZmVyZW5jZXMpCisgICAgY29uc3QgcGFyYW1fdHlwZSYgcCkgeworICAvLyBCYXNlZCBvbiBDaGVu
ZywgUnVzc2VsbCBDSC4gR2VuZXJhdGluZyBiZXRhIHZhcmlhdGVzIHdpdGggbm9uaW50ZWdyYWwK
KyAgLy8gc2hhcGUgcGFyYW1ldGVycy4gQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSAyMS40ICgx
OTc4KTogMzE3LTMyMi4KKyAgLy8gKGh0dHBzOi8vZGwuYWNtLm9yZy9jaXRhdGlvbi5jZm0/aWQ9
MzU5NDgyKS4KKyAgdXNpbmcgUmFuZFU2NFRvUmVhbCA9IHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5h
bDo6UmFuZFU2NFRvUmVhbDxyZXN1bHRfdHlwZT47CisgIHVzaW5nIHJhbmRvbV9pbnRlcm5hbDo6
UG9zaXRpdmVWYWx1ZVQ7CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBrTG9nRm91
ciA9CisgICAgICByZXN1bHRfdHlwZSgxLjM4NjI5NDM2MTExOTg5MDYxODgzNDQ2NDI0MjkxNjM1
MzEzNjEpOyAgLy8gbG9nKDQpCisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUga1MgPQor
ICAgICAgcmVzdWx0X3R5cGUoMi42MDk0Mzc5MTI0MzQxMDAzNzQ2MDA3NTkzMzMyMjYxODc2KTsg
IC8vIDErbG9nKDUpCisKKyAgY29uc3QgYm9vbCB1c2VfYWxnb3JpdGhtX2JhID0gKHAubWV0aG9k
XyA9PSBwYXJhbV90eXBlOjpDSEVOR19CQSk7CisgIHJlc3VsdF90eXBlIHUxLCB1Miwgdiwgdywg
eiwgciwgcywgdCwgYndfaW52LCBsaHM7CisgIGZvciAoOzspIHsKKyAgICB1MSA9IFJhbmRVNjRU
b1JlYWw6OnRlbXBsYXRlIFZhbHVlPFBvc2l0aXZlVmFsdWVULCBmYWxzZT4oZmFzdF91NjRfKGcp
KTsKKyAgICB1MiA9IFJhbmRVNjRUb1JlYWw6OnRlbXBsYXRlIFZhbHVlPFBvc2l0aXZlVmFsdWVU
LCBmYWxzZT4oZmFzdF91NjRfKGcpKTsKKyAgICB2ID0gcC55XyAqIHN0ZDo6bG9nKHUxIC8gKDEg
LSB1MSkpOworICAgIHcgPSBwLmFfICogc3RkOjpleHAodik7CisgICAgYndfaW52ID0gcmVzdWx0
X3R5cGUoMSkgLyAocC5iXyArIHcpOworICAgIHIgPSBwLmdhbW1hXyAqIHYgLSBrTG9nRm91cjsK
KyAgICBzID0gcC5hXyArIHIgLSB3OworICAgIHogPSB1MSAqIHUxICogdTI7CisgICAgaWYgKCF1
c2VfYWxnb3JpdGhtX2JhICYmIHMgKyBrUyA+PSA1ICogeikgeworICAgICAgYnJlYWs7CisgICAg
fQorICAgIHQgPSBzdGQ6OmxvZyh6KTsKKyAgICBpZiAoIXVzZV9hbGdvcml0aG1fYmEgJiYgcyA+
PSB0KSB7CisgICAgICBicmVhazsKKyAgICB9CisgICAgbGhzID0gcC54XyAqIChwLmxvZ194XyAr
IHN0ZDo6bG9nKGJ3X2ludikpICsgcjsKKyAgICBpZiAobGhzID49IHQpIHsKKyAgICAgIGJyZWFr
OworICAgIH0KKyAgfQorICByZXR1cm4gcC5pbnZlcnRlZF8gPyAoMSAtIHcgKiBid19pbnYpIDog
dyAqIGJ3X2ludjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlPgordGVtcGxhdGUg
PHR5cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSBiZXRhX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46OnJl
c3VsdF90eXBlCitiZXRhX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46Om9wZXJhdG9yKCkoVVJCRyYg
ZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgcCkgeworICBzd2l0Y2ggKHAubWV0
aG9kXykgeworICAgIGNhc2UgcGFyYW1fdHlwZTo6Sk9FSE5LOgorICAgICAgcmV0dXJuIEFsZ29y
aXRobUpvZWhuayhnLCBwKTsKKyAgICBjYXNlIHBhcmFtX3R5cGU6OkNIRU5HX0JBOgorICAgICAg
QUJTTF9GQUxMVEhST1VHSF9JTlRFTkRFRDsKKyAgICBjYXNlIHBhcmFtX3R5cGU6OkNIRU5HX0JC
OgorICAgICAgcmV0dXJuIEFsZ29yaXRobUNoZW5nKGcsIHApOworICAgIGRlZmF1bHQ6CisgICAg
ICByZXR1cm4gRGVnZW5lcmF0ZUNhc2UoZywgcCk7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFJlYWxUeXBlPgorc3RkOjpiYXNp
Y19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0
cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICAgIGNvbnN0IGJldGFfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPiYgeCkgeworICBhdXRvIHNhdmVy
ID0gcmFuZG9tX2ludGVybmFsOjptYWtlX29zdHJlYW1fc3RhdGVfc2F2ZXIob3MpOworICBvcy5w
cmVjaXNpb24ocmFuZG9tX2ludGVybmFsOjpzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjxSZWFsVHlw
ZT46OmtQcmVjaXNpb24pOworICBvcyA8PCB4LmFscGhhKCkgPDwgb3MuZmlsbCgpIDw8IHguYmV0
YSgpOworICByZXR1cm4gb3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBSZWFsVHlwZT4KK3N0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwg
VHJhaXRzPiYgb3BlcmF0b3I+PigKKyAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0
cz4mIGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBiZXRhX2Rpc3RyaWJ1
dGlvbjxSZWFsVHlwZT4mIHgpIHsgICAgICAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykK
KyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSBiZXRhX2Rpc3RyaWJ1dGlvbjxSZWFsVHlw
ZT46OnJlc3VsdF90eXBlOworICB1c2luZyBwYXJhbV90eXBlID0gdHlwZW5hbWUgYmV0YV9kaXN0
cmlidXRpb248UmVhbFR5cGU+OjpwYXJhbV90eXBlOworICByZXN1bHRfdHlwZSBhbHBoYSwgYmV0
YTsKKworICBhdXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjptYWtlX2lzdHJlYW1fc3RhdGVf
c2F2ZXIoaXMpOworICBhbHBoYSA9IHJhbmRvbV9pbnRlcm5hbDo6cmVhZF9mbG9hdGluZ19wb2lu
dDxyZXN1bHRfdHlwZT4oaXMpOworICBpZiAoaXMuZmFpbCgpKSByZXR1cm4gaXM7CisgIGJldGEg
PSByYW5kb21faW50ZXJuYWw6OnJlYWRfZmxvYXRpbmdfcG9pbnQ8cmVzdWx0X3R5cGU+KGlzKTsK
KyAgaWYgKCFpcy5mYWlsKCkpIHsKKyAgICB4LnBhcmFtKHBhcmFtX3R5cGUoYWxwaGEsIGJldGEp
KTsKKyAgfQorICByZXR1cm4gaXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRp
ZiAgLy8gQUJTTF9SQU5ET01fQkVUQV9ESVNUUklCVVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9iZXRhX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2JldGFfZGlz
dHJpYnV0aW9uX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
Ljk2NmFkMDhiNWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2JldGFfZGlzdHJp
YnV0aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSw2MTQgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vYmV0YV9kaXN0cmlidXRp
b24uaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1
ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8cmFuZG9tPgorI2lu
Y2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHVub3JkZXJlZF9t
YXA+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9n
Z2luZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuaCIKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsLmgiCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VxdWVuY2VfdXJiZy5oIgorI2luY2x1ZGUg
ImFic2wvcmFuZG9tL3JhbmRvbS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0Lmgi
CisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3Mvc3RyX3JlcGxhY2UuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaXAuaCIKKwor
bmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CitjbGFzcyBCZXRhRGlz
dHJpYnV0aW9uSW50ZXJmYWNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3Vz
aW5nIFJlYWxUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8ZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3Vi
bGU+OworVFlQRURfVEVTVF9DQVNFKEJldGFEaXN0cmlidXRpb25JbnRlcmZhY2VUZXN0LCBSZWFs
VHlwZXMpOworCitUWVBFRF9URVNUKEJldGFEaXN0cmlidXRpb25JbnRlcmZhY2VUZXN0LCBTZXJp
YWxpemVUZXN0KSB7CisgIC8vIFRoZSB0aHJlc2hvbGQgZm9yIHdoZXRoZXIgc3RkOjpleHAoMS9h
KSBpcyBmaW5pdGUuCisgIGNvbnN0IFR5cGVQYXJhbSBrU21hbGxBID0KKyAgICAgIDEuMGYgLyBz
dGQ6OmxvZygoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgpKCkpOworICAvLyBU
aGUgdGhyZXNob2xkIGZvciB3aGV0aGVyIGEgKiBzdGQ6OmxvZyhhKSBpcyBmaW5pdGUuCisgIGNv
bnN0IFR5cGVQYXJhbSBrTGFyZ2VBID0KKyAgICAgIHN0ZDo6ZXhwKHN0ZDo6bG9nKChzdGQ6Om51
bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCkoKSkgLQorICAgICAgICAgICAgICAgc3RkOjps
b2coc3RkOjpsb2coKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWF4KSgpKSkpOwor
ICBjb25zdCBUeXBlUGFyYW0ga0xhcmdlQVBQQyA9IHN0ZDo6ZXhwKAorICAgICAgc3RkOjpsb2co
KHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWF4KSgpKSAtCisgICAgICBzdGQ6Omxv
ZyhzdGQ6OmxvZygoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgpKCkpKSAtIDEw
LjBmKTsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1lIGFic2w6OmJldGFfZGlzdHJpYnV0
aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7CisKKyAgY29uc3RleHByIGludCBrQ291bnQgPSAx
MDAwOworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47CisgIGNvbnN0IFR5cGVQYXJhbSBrVmFs
dWVzW10gPSB7CisgICAgICBUeXBlUGFyYW0oMWUtMjApLCBUeXBlUGFyYW0oMWUtMTIpLCBUeXBl
UGFyYW0oMWUtOCksIFR5cGVQYXJhbSgxZS00KSwKKyAgICAgIFR5cGVQYXJhbSgxZS0zKSwgVHlw
ZVBhcmFtKDAuMSksIFR5cGVQYXJhbSgwLjI1KSwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKFR5cGVQ
YXJhbSgwLjUpLCBUeXBlUGFyYW0oMCkpLCAgLy8gMC41IC0gZXBzaWxvbgorICAgICAgc3RkOjpu
ZXh0YWZ0ZXIoVHlwZVBhcmFtKDAuNSksIFR5cGVQYXJhbSgxKSksICAvLyAwLjUgKyBlcHNpbG9u
CisgICAgICBUeXBlUGFyYW0oMC41KSwgVHlwZVBhcmFtKDEuMCksICAgICAgICAgICAgICAgIC8v
CisgICAgICBzdGQ6Om5leHRhZnRlcihUeXBlUGFyYW0oMSksIFR5cGVQYXJhbSgwKSksICAgIC8v
IDEgLSBlcHNpbG9uCisgICAgICBzdGQ6Om5leHRhZnRlcihUeXBlUGFyYW0oMSksIFR5cGVQYXJh
bSgyKSksICAgIC8vIDEgKyBlcHNpbG9uCisgICAgICBUeXBlUGFyYW0oMTIuNSksIFR5cGVQYXJh
bSgxZTIpLCBUeXBlUGFyYW0oMWU4KSwgVHlwZVBhcmFtKDFlMTIpLAorICAgICAgVHlwZVBhcmFt
KDFlMjApLCAgICAgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICBrU21hbGxBLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKGtTbWFsbEEs
IFR5cGVQYXJhbSgwKSksICAvLworICAgICAgc3RkOjpuZXh0YWZ0ZXIoa1NtYWxsQSwgVHlwZVBh
cmFtKDEpKSwgIC8vCisgICAgICBrTGFyZ2VBLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKGtMYXJnZUEsIFR5cGVQYXJhbSgwKSksICAvLwor
ICAgICAgc3RkOjpuZXh0YWZ0ZXIoa0xhcmdlQSwgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFy
YW0+OjptYXgoKSksCisgICAgICBrTGFyZ2VBUFBDLCAgLy8KKyAgICAgIHN0ZDo6bmV4dGFmdGVy
KGtMYXJnZUFQUEMsIFR5cGVQYXJhbSgwKSksCisgICAgICBzdGQ6Om5leHRhZnRlcihrTGFyZ2VB
UFBDLCBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpKSwKKyAgICAgIC8vIEJv
dW5kYXJ5IGNhc2VzLgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgo
KSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6ZXBzaWxvbigpLAorICAg
ICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSwK
KyAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbSgxKSksICAgICAgICAgICAgICAgICAgLy8g
bWluICsgZXBzaWxvbgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4o
KSwgICAgICAgICAvLyBzbWFsbGVzdCBub3JtYWwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
VHlwZVBhcmFtPjo6ZGVub3JtX21pbigpLCAgLy8gc21hbGxlc3QgZGVub3JtCisgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1pbigpIC8gMiwgICAgIC8vIGRlbm9ybQorICAg
ICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSwK
KyAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbSgwKSksICAvLyBkZW5vcm1fbWF4CisgIH07
CisgIGZvciAoVHlwZVBhcmFtIGFscGhhIDoga1ZhbHVlcykgeworICAgIGZvciAoVHlwZVBhcmFt
IGJldGEgOiBrVmFsdWVzKSB7CisgICAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAgICAgICBJ
TkZPLCBhYnNsOjpTdHJGb3JtYXQoIlNtb2tlIHRlc3QgZm9yIEJldGEoJWYsICVmKSIsIGFscGhh
LCBiZXRhKSk7CisKKyAgICAgIHBhcmFtX3R5cGUgcGFyYW0oYWxwaGEsIGJldGEpOworICAgICAg
YWJzbDo6YmV0YV9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBiZWZvcmUoYWxwaGEsIGJldGEpOwor
ICAgICAgRVhQRUNUX0VRKGJlZm9yZS5hbHBoYSgpLCBwYXJhbS5hbHBoYSgpKTsKKyAgICAgIEVY
UEVDVF9FUShiZWZvcmUuYmV0YSgpLCBwYXJhbS5iZXRhKCkpOworCisgICAgICB7CisgICAgICAg
IGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gdmlhX3BhcmFtKHBhcmFtKTsKKyAg
ICAgICAgRVhQRUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAgICAgICAgRVhQRUNUX0VRKHZp
YV9wYXJhbS5wYXJhbSgpLCBiZWZvcmUucGFyYW0oKSk7CisgICAgICB9CisKKyAgICAgIC8vIFNt
b2tlIHRlc3QuCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtDb3VudDsgKytpKSB7CisgICAg
ICAgIGF1dG8gc2FtcGxlID0gYmVmb3JlKGdlbik7CisgICAgICAgIEVYUEVDVF9UUlVFKHN0ZDo6
aXNmaW5pdGUoc2FtcGxlKSk7CisgICAgICAgIEVYUEVDVF9HRShzYW1wbGUsIGJlZm9yZS5taW4o
KSk7CisgICAgICAgIEVYUEVDVF9MRShzYW1wbGUsIGJlZm9yZS5tYXgoKSk7CisgICAgICB9CisK
KyAgICAgIC8vIFZhbGlkYXRlIHN0cmVhbSBzZXJpYWxpemF0aW9uLgorICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gc3M7CisgICAgICBzcyA8PCBiZWZvcmU7CisgICAgICBhYnNsOjpiZXRhX2Rpc3Ry
aWJ1dGlvbjxUeXBlUGFyYW0+IGFmdGVyKDMuOGYsIDEuNDNmKTsKKyAgICAgIEVYUEVDVF9ORShi
ZWZvcmUuYWxwaGEoKSwgYWZ0ZXIuYWxwaGEoKSk7CisgICAgICBFWFBFQ1RfTkUoYmVmb3JlLmJl
dGEoKSwgYWZ0ZXIuYmV0YSgpKTsKKyAgICAgIEVYUEVDVF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0
ZXIucGFyYW0oKSk7CisgICAgICBFWFBFQ1RfTkUoYmVmb3JlLCBhZnRlcik7CisKKyAgICAgIHNz
ID4+IGFmdGVyOworCisjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSB8fCBkZWZpbmVkKF9fUFBD
NjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgXAorICAgIGRlZmluZWQoX19wcGNfXykg
fHwgZGVmaW5lZChfX1BQQ19fKQorICAgICAgaWYgKHN0ZDo6aXNfc2FtZTxUeXBlUGFyYW0sIGxv
bmcgZG91YmxlPjo6dmFsdWUpIHsKKyAgICAgICAgLy8gUm91bmR0cmlwcGluZyBmbG9hdGluZyBw
b2ludCB2YWx1ZXMgcmVxdWlyZXMgc3VmZmljaWVudCBwcmVjaXNpb24KKyAgICAgICAgLy8gdG8g
cmVjb25zdHJ1Y3QgdGhlIGV4YWN0IHZhbHVlLiBJdCB0dXJucyBvdXQgdGhhdCBsb25nIGRvdWJs
ZQorICAgICAgICAvLyBoYXMgc29tZSBlcnJvcnMgZG9pbmcgdGhpcyBvbiBwcGMuCisgICAgICAg
IGlmIChhbHBoYSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpICYmCisgICAg
ICAgICAgICBhbHBoYSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpKSB7
CisgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGRvdWJsZT4oYmVmb3JlLmFscGhhKCkp
LAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KGFmdGVyLmFscGhhKCkp
KQorICAgICAgICAgICAgICA8PCBzcy5zdHIoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYmV0
YSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpICYmCisgICAgICAgICAgICBi
ZXRhID49IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCkpIHsKKyAgICAgICAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8ZG91YmxlPihiZWZvcmUuYmV0YSgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihhZnRlci5iZXRhKCkpKQorICAgICAgICAg
ICAgICA8PCBzcy5zdHIoKTsKKyAgICAgICAgfQorICAgICAgICBjb250aW51ZTsKKyAgICAgIH0K
KyNlbmRpZgorCisgICAgICBFWFBFQ1RfRVEoYmVmb3JlLmFscGhhKCksIGFmdGVyLmFscGhhKCkp
OworICAgICAgRVhQRUNUX0VRKGJlZm9yZS5iZXRhKCksIGFmdGVyLmJldGEoKSk7CisgICAgICBF
WFBFQ1RfRVEoYmVmb3JlLCBhZnRlcikgICAgICAgICAgIC8vCisgICAgICAgICAgPDwgc3Muc3Ry
KCkgPDwgIiAiICAgICAgICAgICAgIC8vCisgICAgICAgICAgPDwgKHNzLmdvb2QoKSA/ICJnb29k
ICIgOiAiIikgIC8vCisgICAgICAgICAgPDwgKHNzLmJhZCgpID8gImJhZCAiIDogIiIpICAgIC8v
CisgICAgICAgICAgPDwgKHNzLmVvZigpID8gImVvZiAiIDogIiIpICAgIC8vCisgICAgICAgICAg
PDwgKHNzLmZhaWwoKSA/ICJmYWlsICIgOiAiIik7CisgICAgfQorICB9Cit9CisKK1RZUEVEX1RF
U1QoQmV0YURpc3RyaWJ1dGlvbkludGVyZmFjZVRlc3QsIERlZ2VuZXJhdGVDYXNlcykgeworICAv
LyBFeHRyZW1lIGNhc2VzIHdoZW4gdGhlIHBhcmFtcyBhcmUgYWJub3JtYWwuCisgIGFic2w6Oklu
c2VjdXJlQml0R2VuIGdlbjsKKyAgY29uc3RleHByIGludCBrQ291bnQgPSAxMDAwOworICBjb25z
dCBUeXBlUGFyYW0ga1NtYWxsVmFsdWVzW10gPSB7CisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRz
PFR5cGVQYXJhbT46Om1pbigpLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+
OjpkZW5vcm1fbWluKCksCisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRz
PFR5cGVQYXJhbT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtKDApKSwg
IC8vIGRlbm9ybV9tYXgKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6ZXBz
aWxvbigpLAorICB9OworICBjb25zdCBUeXBlUGFyYW0ga0xhcmdlVmFsdWVzW10gPSB7CisgICAg
ICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpICogc3RhdGljX2Nhc3Q8VHlw
ZVBhcmFtPigwLjk5OTkpLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+Ojpt
YXgoKSAtIDEsCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpLAor
ICB9OworICB7CisgICAgLy8gU21hbGwgYWxwaGEgYW5kIGJldGEuCisgICAgLy8gVXNlZnVsIFdv
bGZyYW1BbHBoYSBwbG90czoKKyAgICAvLyAgICogcGxvdCBJbnZlcnNlQmV0YVJlZ3VsYXJpemVk
W3gsIDAuMDAwMSwgMC4wMDAxXSBmcm9tIDAuNDk1IHRvIDAuNTA1CisgICAgLy8gICAqIEJldGFb
MS4wLCAwLjAwMDAwMDEsIDAuMDAwMDAwMV0KKyAgICAvLyAgICogQmV0YVswLjk5OTksIDAuMDAw
MDAwMSwgMC4wMDAwMDAxXQorICAgIGZvciAoVHlwZVBhcmFtIGFscGhhIDoga1NtYWxsVmFsdWVz
KSB7CisgICAgICBmb3IgKFR5cGVQYXJhbSBiZXRhIDoga1NtYWxsVmFsdWVzKSB7CisgICAgICAg
IGludCB6ZXJvcyA9IDA7CisgICAgICAgIGludCBvbmVzID0gMDsKKyAgICAgICAgYWJzbDo6YmV0
YV9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBkKGFscGhhLCBiZXRhKTsKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBrQ291bnQ7ICsraSkgeworICAgICAgICAgIFR5cGVQYXJhbSB4ID0gZChn
ZW4pOworICAgICAgICAgIGlmICh4ID09IDAuMCkgeworICAgICAgICAgICAgemVyb3MrKzsKKyAg
ICAgICAgICB9IGVsc2UgaWYgKHggPT0gMS4wKSB7CisgICAgICAgICAgICBvbmVzKys7CisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUShvbmVzICsgemVyb3MsIGtDb3Vu
dCk7CisgICAgICAgIGlmIChhbHBoYSA9PSBiZXRhKSB7CisgICAgICAgICAgRVhQRUNUX05FKG9u
ZXMsIDApOworICAgICAgICAgIEVYUEVDVF9ORSh6ZXJvcywgMCk7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisgIH0KKyAgeworICAgIC8vIFNtYWxsIGFscGhhLCBsYXJnZSBiZXRhLgorICAg
IC8vIFVzZWZ1bCBXb2xmcmFtQWxwaGEgcGxvdHM6CisgICAgLy8gICAqIHBsb3QgSW52ZXJzZUJl
dGFSZWd1bGFyaXplZFt4LCAwLjAwMDEsIDEwMDAwXSBmcm9tIDAuOTk1IHRvIDEKKyAgICAvLyAg
ICogQmV0YVswLCAwLjAwMDAwMDEsIDEwMDAwMDBdCisgICAgLy8gICAqIEJldGFbMC4wMDEsIDAu
MDAwMDAwMSwgMTAwMDAwMF0KKyAgICAvLyAgICogQmV0YVsxLCAwLjAwMDAwMDEsIDEwMDAwMDBd
CisgICAgZm9yIChUeXBlUGFyYW0gYWxwaGEgOiBrU21hbGxWYWx1ZXMpIHsKKyAgICAgIGZvciAo
VHlwZVBhcmFtIGJldGEgOiBrTGFyZ2VWYWx1ZXMpIHsKKyAgICAgICAgYWJzbDo6YmV0YV9kaXN0
cmlidXRpb248VHlwZVBhcmFtPiBkKGFscGhhLCBiZXRhKTsKKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBrQ291bnQ7ICsraSkgeworICAgICAgICAgIEVYUEVDVF9FUShkKGdlbiksIDAuMCk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKyAgeworICAgIC8vIExhcmdlIGFscGhh
LCBzbWFsbCBiZXRhLgorICAgIC8vIFVzZWZ1bCBXb2xmcmFtQWxwaGEgcGxvdHM6CisgICAgLy8g
ICAqIHBsb3QgSW52ZXJzZUJldGFSZWd1bGFyaXplZFt4LCAxMDAwMCwgMC4wMDAxXSBmcm9tIDAg
dG8gMC4wMDEKKyAgICAvLyAgICogQmV0YVswLjk5LCAxMDAwMDAwLCAwLjAwMDAwMDFdCisgICAg
Ly8gICAqIEJldGFbMSwgMTAwMDAwMCwgMC4wMDAwMDAxXQorICAgIGZvciAoVHlwZVBhcmFtIGFs
cGhhIDoga0xhcmdlVmFsdWVzKSB7CisgICAgICBmb3IgKFR5cGVQYXJhbSBiZXRhIDoga1NtYWxs
VmFsdWVzKSB7CisgICAgICAgIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZChh
bHBoYSwgYmV0YSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga0NvdW50OyArK2kpIHsK
KyAgICAgICAgICBFWFBFQ1RfRVEoZChnZW4pLCAxLjApOworICAgICAgICB9CisgICAgICB9Cisg
ICAgfQorICB9CisgIHsKKyAgICAvLyBMYXJnZSBhbHBoYSBhbmQgYmV0YS4KKyAgICBhYnNsOjpi
ZXRhX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGQoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFy
YW0+OjptYXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSk7CisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBrQ291bnQ7ICsraSkgeworICAgICAgRVhQRUNUX0VRKGQoZ2VuKSwgMC41KTsKKyAgICB9
CisgIH0KKyAgeworICAgIC8vIExhcmdlIGFscGhhIGFuZCBiZXRhIGJ1dCB1bmVxdWFsLgorICAg
IGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZCgKKyAgICAgICAgc3RkOjpudW1l
cmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSwKKyAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czxUeXBlUGFyYW0+OjptYXgoKSAqIDAuOTk5OSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBr
Q291bnQ7ICsraSkgeworICAgICAgVHlwZVBhcmFtIHggPSBkKGdlbik7CisgICAgICBFWFBFQ1Rf
TkUoeCwgMC41Zik7CisgICAgICBFWFBFQ1RfRkxPQVRfRVEoeCwgMC41MDAwMjVmKTsKKyAgICB9
CisgIH0KK30KKworY2xhc3MgQmV0YURpc3RyaWJ1dGlvbk1vZGVsIHsKKyBwdWJsaWM6CisgIGV4
cGxpY2l0IEJldGFEaXN0cmlidXRpb25Nb2RlbCg6OnRlc3Rpbmc6OnR1cGxlPGRvdWJsZSwgZG91
YmxlPiBwKQorICAgICAgOiBhbHBoYV8oOjp0ZXN0aW5nOjpnZXQ8MD4ocCkpLCBiZXRhXyg6OnRl
c3Rpbmc6OmdldDwxPihwKSkge30KKworICBkb3VibGUgTWVhbigpIGNvbnN0IHsgcmV0dXJuIGFs
cGhhXyAvIChhbHBoYV8gKyBiZXRhXyk7IH0KKworICBkb3VibGUgVmFyaWFuY2UoKSBjb25zdCB7
CisgICAgcmV0dXJuIGFscGhhXyAqIGJldGFfIC8gKGFscGhhXyArIGJldGFfICsgMSkgLyAoYWxw
aGFfICsgYmV0YV8pIC8KKyAgICAgICAgICAgKGFscGhhXyArIGJldGFfKTsKKyAgfQorCisgIGRv
dWJsZSBLdXJ0b3NpcygpIGNvbnN0IHsKKyAgICByZXR1cm4gMyArIDYgKgorICAgICAgICAgICAg
ICAgICAgICgoYWxwaGFfIC0gYmV0YV8pICogKGFscGhhXyAtIGJldGFfKSAqIChhbHBoYV8gKyBi
ZXRhXyArIDEpIC0KKyAgICAgICAgICAgICAgICAgICAgYWxwaGFfICogYmV0YV8gKiAoMiArIGFs
cGhhXyArIGJldGFfKSkgLworICAgICAgICAgICAgICAgICAgIGFscGhhXyAvIGJldGFfIC8gKGFs
cGhhXyArIGJldGFfICsgMikgLyAoYWxwaGFfICsgYmV0YV8gKyAzKTsKKyAgfQorCisgcHJvdGVj
dGVkOgorICBjb25zdCBkb3VibGUgYWxwaGFfOworICBjb25zdCBkb3VibGUgYmV0YV87Cit9Owor
CitjbGFzcyBCZXRhRGlzdHJpYnV0aW9uVGVzdAorICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVz
dFdpdGhQYXJhbTw6OnRlc3Rpbmc6OnR1cGxlPGRvdWJsZSwgZG91YmxlPj4sCisgICAgICBwdWJs
aWMgQmV0YURpc3RyaWJ1dGlvbk1vZGVsIHsKKyBwdWJsaWM6CisgIEJldGFEaXN0cmlidXRpb25U
ZXN0KCkgOiBCZXRhRGlzdHJpYnV0aW9uTW9kZWwoR2V0UGFyYW0oKSkge30KKworIHByb3RlY3Rl
ZDoKKyAgdGVtcGxhdGUgPGNsYXNzIEQ+CisgIGJvb2wgU2luZ2xlWlRlc3RPbk1lYW5BbmRWYXJp
YW5jZShkb3VibGUgcCwgc2l6ZV90IHNhbXBsZXMpOworCisgIHRlbXBsYXRlIDxjbGFzcyBEPgor
ICBib29sIFNpbmdsZUNoaVNxdWFyZWRUZXN0KGRvdWJsZSBwLCBzaXplX3Qgc2FtcGxlcywgc2l6
ZV90IGJ1Y2tldHMpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZ187Cit9OworCit0ZW1w
bGF0ZSA8Y2xhc3MgRD4KK2Jvb2wgQmV0YURpc3RyaWJ1dGlvblRlc3Q6OlNpbmdsZVpUZXN0T25N
ZWFuQW5kVmFyaWFuY2UoZG91YmxlIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzYW1wbGVzKSB7CisgIEQgZGlzKGFscGhh
XywgYmV0YV8pOworCisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gZGF0YTsKKyAgZGF0YS5yZXNlcnZl
KHNhbXBsZXMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbXBsZXM7IGkrKykgeworICAg
IGNvbnN0IGRvdWJsZSB2YXJpYXRlID0gZGlzKHJuZ18pOworICAgIEVYUEVDVF9GQUxTRShzdGQ6
OmlzbmFuKHZhcmlhdGUpKTsKKyAgICAvLyBOb3RlIHRoYXQgZXF1YWxpdHkgaXMgYWxsb3dlZCBv
biBib3RoIHNpZGVzLgorICAgIEVYUEVDVF9HRSh2YXJpYXRlLCAwLjApOworICAgIEVYUEVDVF9M
RSh2YXJpYXRlLCAxLjApOworICAgIGRhdGEucHVzaF9iYWNrKHZhcmlhdGUpOworICB9CisKKyAg
Ly8gV2UgdmFsaWRhdGUgdGhhdCB0aGUgc2FtcGxlIG1lYW4gYW5kIHNhbXBsZSB2YXJpYW5jZSBh
cmUgaW5kZWVkIGZyb20gYQorICAvLyBCZXRhIGRpc3RyaWJ1dGlvbiB3aXRoIHRoZSBnaXZlbiBz
aGFwZSBwYXJhbWV0ZXJzLgorICBjb25zdCBhdXRvIG0gPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OkNvbXB1dGVEaXN0cmlidXRpb25Nb21lbnRzKGRhdGEpOworCisgIC8vIFRoZSB2YXJpYW5jZSBv
ZiB0aGUgc2FtcGxlIG1lYW4gaXMgdmFyaWFuY2UgLyBuLgorICBjb25zdCBkb3VibGUgbWVhbl9z
dGRkZXYgPSBzdGQ6OnNxcnQoVmFyaWFuY2UoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obS5uKSk7
CisKKyAgLy8gVGhlIHZhcmlhbmNlIG9mIHRoZSBzYW1wbGUgdmFyaWFuY2UgaXMgKGFwcHJveGlt
YXRlbHkpOgorICAvLyAgIChrdXJ0b3NpcyAtIDEpICogdmFyaWFuY2VeMiAvIG4KKyAgY29uc3Qg
ZG91YmxlIHZhcmlhbmNlX3N0ZGRldiA9IHN0ZDo6c3FydCgKKyAgICAgIChLdXJ0b3NpcygpIC0g
MSkgKiBWYXJpYW5jZSgpICogVmFyaWFuY2UoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obS5uKSk7
CisgIC8vIHogc2NvcmUgZm9yIHRoZSBzYW1wbGUgdmFyaWFuY2UuCisgIGNvbnN0IGRvdWJsZSB6
X3ZhcmlhbmNlID0gKG0udmFyaWFuY2UgLSBWYXJpYW5jZSgpKSAvIHZhcmlhbmNlX3N0ZGRldjsK
KworICBjb25zdCBkb3VibGUgbWF4X2VyciA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6TWF4RXJy
b3JUb2xlcmFuY2UocCk7CisgIGNvbnN0IGRvdWJsZSB6X21lYW4gPSBhYnNsOjpyYW5kb21faW50
ZXJuYWw6OlpTY29yZShNZWFuKCksIG0pOworICBjb25zdCBib29sIHBhc3MgPQorICAgICAgYWJz
bDo6cmFuZG9tX2ludGVybmFsOjpOZWFyKCJ6Iiwgel9tZWFuLCAwLjAsIG1heF9lcnIpICYmCisg
ICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok5lYXIoInpfdmFyaWFuY2UiLCB6X3ZhcmlhbmNl
LCAwLjAsIG1heF9lcnIpOworICBpZiAoIXBhc3MpIHsKKyAgICBBQlNMX0lOVEVSTkFMX0xPRygK
KyAgICAgICAgSU5GTywKKyAgICAgICAgYWJzbDo6U3RyRm9ybWF0KAorICAgICAgICAgICAgIkJl
dGEoJWYsICVmKSwgIgorICAgICAgICAgICAgIm1lYW46IHNhbXBsZSAlZiwgZXhwZWN0ICVmLCB3
aGljaCBpcyAlZiBzdGRkZXZzIGF3YXksICIKKyAgICAgICAgICAgICJ2YXJpYW5jZTogc2FtcGxl
ICVmLCBleHBlY3QgJWYsIHdoaWNoIGlzICVmIHN0ZGRldnMgYXdheS4iLAorICAgICAgICAgICAg
YWxwaGFfLCBiZXRhXywgbS5tZWFuLCBNZWFuKCksCisgICAgICAgICAgICBzdGQ6OmFicyhtLm1l
YW4gLSBNZWFuKCkpIC8gbWVhbl9zdGRkZXYsIG0udmFyaWFuY2UsIFZhcmlhbmNlKCksCisgICAg
ICAgICAgICBzdGQ6OmFicyhtLnZhcmlhbmNlIC0gVmFyaWFuY2UoKSkgLyB2YXJpYW5jZV9zdGRk
ZXYpKTsKKyAgfQorICByZXR1cm4gcGFzczsKK30KKwordGVtcGxhdGUgPGNsYXNzIEQ+Citib29s
IEJldGFEaXN0cmlidXRpb25UZXN0OjpTaW5nbGVDaGlTcXVhcmVkVGVzdChkb3VibGUgcCwgc2l6
ZV90IHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgYnVja2V0cykgeworICBjb25zdGV4cHIgZG91YmxlIGtFcnIgPSAxZS03Owor
ICBzdGQ6OnZlY3Rvcjxkb3VibGU+IGN1dG9mZnMsIGV4cGVjdGVkOworICBjb25zdCBkb3VibGUg
YnVja2V0X3dpZHRoID0gMS4wIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihidWNrZXRzKTsKKyAgaW50
IGkgPSAxOworICBpbnQgdW5tZXJnZWRfYnVja2V0cyA9IDA7CisgIGZvciAoOyBpIDwgYnVja2V0
czsgKytpKSB7CisgICAgY29uc3QgZG91YmxlIHAgPSBidWNrZXRfd2lkdGggKiBzdGF0aWNfY2Fz
dDxkb3VibGU+KGkpOworICAgIGNvbnN0IGRvdWJsZSBib3VuZGFyeSA9CisgICAgICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6QmV0YUluY29tcGxldGVJbnYoYWxwaGFfLCBiZXRhXywgcCk7Cisg
ICAgLy8gVGhlIGludGVudGlvbiBpcyB0byBhZGQgYGJvdW5kYXJ5YCB0byB0aGUgbGlzdCBvZiBg
Y3V0b2Zmc2AuIEl0IGJlY29tZXMKKyAgICAvLyBwcm9ibGVtYXRpYywgaG93ZXZlciwgd2hlbiB0
aGUgYm91bmRhcnkgdmFsdWVzIGFyZSBub3QgbW9ub3RvbmUsIGR1ZSB0bworICAgIC8vIG51bWVy
aWNhbCBpc3N1ZXMgd2hlbiBjb21wdXRpbmcgdGhlIGludmVyc2UgcmVndWxhcml6ZWQgaW5jb21w
bGV0ZQorICAgIC8vIEJldGEgZnVuY3Rpb24uIEluIHRoZXNlIGNhc2VzLCB3ZSBtZXJnZSB0aGF0
IGJ1Y2tldCB3aXRoIGl0cyBwcmV2aW91cworICAgIC8vIG5laWdoYm9yIGFuZCBtZXJnZSB0aGVp
ciBleHBlY3RlZCBjb3VudHMuCisgICAgaWYgKChjdXRvZmZzLmVtcHR5KCkgJiYgYm91bmRhcnkg
PCBrRXJyKSB8fAorICAgICAgICAoIWN1dG9mZnMuZW1wdHkoKSAmJiBib3VuZGFyeSA8PSBjdXRv
ZmZzLmJhY2soKSkpIHsKKyAgICAgIHVubWVyZ2VkX2J1Y2tldHMrKzsKKyAgICAgIGNvbnRpbnVl
OworICAgIH0KKyAgICBpZiAoYm91bmRhcnkgPj0gMS4wIC0gMWUtMTApIHsKKyAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjdXRvZmZzLnB1c2hfYmFjayhib3VuZGFyeSk7CisgICAgZXhwZWN0ZWQu
cHVzaF9iYWNrKHN0YXRpY19jYXN0PGRvdWJsZT4oMSArIHVubWVyZ2VkX2J1Y2tldHMpICoKKyAg
ICAgICAgICAgICAgICAgICAgICAgYnVja2V0X3dpZHRoICogc3RhdGljX2Nhc3Q8ZG91YmxlPihz
YW1wbGVzKSk7CisgICAgdW5tZXJnZWRfYnVja2V0cyA9IDA7CisgIH0KKyAgY3V0b2Zmcy5wdXNo
X2JhY2soc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKKyAgLy8gTWVy
Z2UgYWxsIHJlbWFpbmluZyBidWNrZXRzLgorICBleHBlY3RlZC5wdXNoX2JhY2soc3RhdGljX2Nh
c3Q8ZG91YmxlPihidWNrZXRzIC0gaSArIDEpICogYnVja2V0X3dpZHRoICoKKyAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oc2FtcGxlcykpOworICAvLyBNYWtlIHN1cmUg
dGhhdCB3ZSBkb24ndCBtZXJnZSBhbGwgdGhlIGJ1Y2tldHMsIG1ha2luZyB0aGlzIHRlc3QKKyAg
Ly8gbWVhbmluZ2xlc3MuCisgIEVYUEVDVF9HRShjdXRvZmZzLnNpemUoKSwgMykgPDwgYWxwaGFf
IDw8ICIsICIgPDwgYmV0YV87CisKKyAgRCBkaXMoYWxwaGFfLCBiZXRhXyk7CisKKyAgc3RkOjp2
ZWN0b3I8aW50MzJfdD4gY291bnRzKGN1dG9mZnMuc2l6ZSgpLCAwKTsKKyAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzYW1wbGVzOyBpKyspIHsKKyAgICBjb25zdCBkb3VibGUgeCA9IGRpcyhybmdfKTsK
KyAgICBhdXRvIGl0ID0gc3RkOjp1cHBlcl9ib3VuZChjdXRvZmZzLmJlZ2luKCksIGN1dG9mZnMu
ZW5kKCksIHgpOworICAgIGNvdW50c1tzdGQ6OmRpc3RhbmNlKGN1dG9mZnMuYmVnaW4oKSwgaXQp
XSsrOworICB9CisKKyAgLy8gTnVsbC1oeXBvdGhlc2lzIGlzIHRoYXQgdGhlIGRpc3RyaWJ1dGlv
biBpcyBiZXRhIGRpc3RyaWJ1dGVkIHdpdGggdGhlCisgIC8vIHByb3ZpZGVkIGFscGhhLCBiZXRh
IHBhcmFtcyAobm90IGVzdGltYXRlZCBmcm9tIHRoZSBkYXRhKS4KKyAgY29uc3QgaW50IGRvZiA9
IGN1dG9mZnMuc2l6ZSgpIC0gMTsKKworICBjb25zdCBkb3VibGUgY2hpX3NxdWFyZSA9IGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlKAorICAgICAgY291bnRzLmJlZ2luKCksIGNvdW50
cy5lbmQoKSwgZXhwZWN0ZWQuYmVnaW4oKSwgZXhwZWN0ZWQuZW5kKCkpOworICBjb25zdCBib29s
IHBhc3MgPQorICAgICAgKGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlUFZhbHVlKGNo
aV9zcXVhcmUsIGRvZikgPj0gcCk7CisgIGlmICghcGFzcykgeworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY3V0b2Zmcy5zaXplKCk7IGkrKykgeworICAgICAgQUJTTF9JTlRFUk5BTF9MT0coCisg
ICAgICAgICAgSU5GTywgYWJzbDo6U3RyRm9ybWF0KCJjdXRvZmZbJWRdID0gJWYsIGFjdHVhbCBj
b3VudCAlZCwgZXhwZWN0ZWQgJWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
LCBjdXRvZmZzW2ldLCBjb3VudHNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludD4oZXhwZWN0ZWRbaV0pKSk7CisgICAgfQorCisgICAgQUJTTF9JTlRF
Uk5BTF9MT0coCisgICAgICAgIElORk8sIGFic2w6OlN0ckZvcm1hdCgKKyAgICAgICAgICAgICAg
ICAgICJCZXRhKCVmLCAlZikgJXMgJWYsIHAgPSAlZiIsIGFscGhhXywgYmV0YV8sCisgICAgICAg
ICAgICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OmtDaGlTcXVhcmVkLCBjaGlfc3F1YXJl
LAorICAgICAgICAgICAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVQVmFs
dWUoY2hpX3NxdWFyZSwgZG9mKSkpOworICB9CisgIHJldHVybiBwYXNzOworfQorCitURVNUX1Ao
QmV0YURpc3RyaWJ1dGlvblRlc3QsIFRlc3RTYW1wbGVTdGF0aXN0aWNzKSB7CisgIHN0YXRpYyBj
b25zdGV4cHIgaW50IGtSdW5zID0gMjA7CisgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGtQRmFp
bCA9IDAuMDI7CisgIGNvbnN0IGRvdWJsZSBwID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6UmVxdWlyZWRTdWNjZXNzUHJvYmFiaWxpdHkoa1BGYWlsLCBrUnVucyk7CisgIHN0YXRpYyBj
b25zdGV4cHIgaW50IGtTYW1wbGVDb3VudCA9IDEwMDAwOworICBzdGF0aWMgY29uc3RleHByIGlu
dCBrQnVja2V0Q291bnQgPSAxMDA7CisgIGludCBmYWlsZWQgPSAwOworICBmb3IgKGludCBpID0g
MDsgaSA8IGtSdW5zOyArK2kpIHsKKyAgICBpZiAoIVNpbmdsZVpUZXN0T25NZWFuQW5kVmFyaWFu
Y2U8YWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZG91YmxlPj4oCisgICAgICAgICAgICBwLCBrU2Ft
cGxlQ291bnQpKSB7CisgICAgICBmYWlsZWQrKzsKKyAgICB9CisgICAgaWYgKCFTaW5nbGVDaGlT
cXVhcmVkVGVzdDxhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxkb3VibGU+PigKKyAgICAgICAgICAg
IDAuMDA1LCBrU2FtcGxlQ291bnQsIGtCdWNrZXRDb3VudCkpIHsKKyAgICAgIGZhaWxlZCsrOwor
ICAgIH0KKyAgfQorICAvLyBTZXQgc28gdGhhdCB0aGUgdGVzdCBpcyBub3QgZmxha3kgYXQgLS1y
dW5zX3Blcl90ZXN0PTEwMDAwCisgIEVYUEVDVF9MRShmYWlsZWQsIDUpOworfQorCitzdGQ6OnN0
cmluZyBQYXJhbU5hbWUoCisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPDo6dGVz
dGluZzo6dHVwbGU8ZG91YmxlLCBkb3VibGU+PiYgaW5mbykgeworICBzdGQ6OnN0cmluZyBuYW1l
ID0gYWJzbDo6U3RyQ2F0KCJhbHBoYV8iLCA6OnRlc3Rpbmc6OmdldDwwPihpbmZvLnBhcmFtKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19iZXRhXyIsIDo6dGVzdGluZzo6
Z2V0PDE+KGluZm8ucGFyYW0pKTsKKyAgcmV0dXJuIGFic2w6OlN0clJlcGxhY2VBbGwobmFtZSwg
e3siKyIsICJfIn0sIHsiLSIsICJfIn0sIHsiLiIsICJfIn19KTsKK30KKworSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoCisgICAgVGVzdFNhbXBsZVN0YXRpc3RpY3NDb21iaW5hdGlvbnMsIEJldGFE
aXN0cmlidXRpb25UZXN0LAorICAgIDo6dGVzdGluZzo6Q29tYmluZSg6OnRlc3Rpbmc6OlZhbHVl
cygwLjEsIDAuMiwgMC45LCAxLjEsIDIuNSwgMTAuMCwgMTIzLjQpLAorICAgICAgICAgICAgICAg
ICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygwLjEsIDAuMiwgMC45LCAxLjEsIDIuNSwgMTAuMCwg
MTIzLjQpKSwKKyAgICBQYXJhbU5hbWUpOworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgKKyAg
ICBUZXN0U2FtcGxlU3RhdGlzdGljc19TZWxlY3RlZFBhaXJzLCBCZXRhRGlzdHJpYnV0aW9uVGVz
dCwKKyAgICA6OnRlc3Rpbmc6OlZhbHVlcyhzdGQ6Om1ha2VfcGFpcigwLjUsIDEwMDApLCBzdGQ6
Om1ha2VfcGFpcigxMDAwLCAwLjUpLAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9w
YWlyKDkwMCwgMTAwMCksIHN0ZDo6bWFrZV9wYWlyKDEwMDAwLCAyMDAwMCksCisgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIoNGU1LCAyZTcpLCBzdGQ6Om1ha2VfcGFpcigxZTcs
IDFlNSkpLAorICAgIFBhcmFtTmFtZSk7CisKKy8vIE5PVEU6IGFic2w6OmJldGFfZGlzdHJpYnV0
aW9uIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4KK1RFU1QoQmV0YURpc3RyaWJ1dGlv
blRlc3QsIFN0YWJpbGl0eVRlc3QpIHsKKyAgLy8gYWJzbDo6YmV0YV9kaXN0cmlidXRpb24gc3Rh
YmlsaXR5IHJlbGllcyBvbiB0aGUgc3RhYmlsaXR5IG9mCisgIC8vIGFic2w6OnJhbmRvbV9pbnRl
cm5hOjpSYW5kVTY0VG9Eb3VibGUsIHN0ZDo6ZXhwLCBzdGQ6OmxvZywgc3RkOjpwb3csCisgIC8v
IGFuZCBzdGQ6OnNxcnQuCisgIC8vCisgIC8vIFRoaXMgdGVzdCBhbHNvIGRlcGVuZHMgb24gdGhl
IHN0YWJpbGl0eSBvZiBzdGQ6OmZyZXhwLgorICB1c2luZyB0ZXN0aW5nOjpFbGVtZW50c0FyZTsK
KyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoeworICAgICAgMHhm
ZmZmMDAwMDAwMDBlNmM4dWxsLCAweGZmZmYwMDAwMDAwMDA2Yzh1bGwsIDB4ODAwMDAzNzY2Mjk1
Q0ZBOXVsbCwKKyAgICAgIDB4MTFDODE5Njg0RTczNEE0MXVsbCwgMHg4MzI2MDM3NjYyOTVDRkE5
dWxsLCAweDdmYmU3NmM4YjQzOTU4MDB1bGwsCisgICAgICAweEIzNDcyRENBN0IxNEE5NEF1bGws
IDB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHhGRkNFQTUwRkRCMkY5NTNCdWxsLAorICAgICAgMHgx
M0NDQTgzMEVCNjFCRDk2dWxsLCAweDAzMzRGRTFFQUEwMzYzQ0Z1bGwsIDB4MDAwMzVDOTA0Qzcw
QTIzOXVsbCwKKyAgICAgIDB4MDAwMDlFMEJDQkFBREUxNHVsbCwgMHgwMDAwMDAwMDAwNjIyQ0E3
dWxsLCAweDQ4NjRmMjJjMDU5YmYyOWV1bGwsCisgICAgICAweDI0Nzg1NmQ4Yjg2MjY2NWN1bGws
IDB4ZTQ2ZTg2ZTlhMTMzN2UxMHVsbCwgMHhkOGM4NTQxZjM1MTliMTMzdWxsLAorICAgICAgMHhm
ZmU3NWI1MmM1NjdiOWU0dWxsLCAweGZmZmZmNzMyZTU3MDljNWJ1bGwsIDB4ZmYxZjdmMGI5ODM1
MzJhY3VsbCwKKyAgICAgIDB4MWVjMmU4OTg2ZDIzNjJjYXVsbCwgMHhDMzMyRERFRkJFNkM1QUE1
dWxsLCAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsCisgICAgICAweDJBRUY3REFENUI2RTJGODR1bGws
IDB4MTUyMUI2MjgyOTA3NjE3MHVsbCwgMHhFQ0RENDc3NTYxOUYxNTEwdWxsLAorICAgICAgMHg4
MTRjOGUzNWZlOWE5NjFhdWxsLCAweDBjM2NkNTljOWI2MzhhMDJ1bGwsIDB4Y2IzYmI2NDc4YTA3
NzE1Y3VsbCwKKyAgICAgIDB4MTIyNGU2MmM5NzhiYmM3ZnVsbCwgMHg2NzFlZjJjYjA0ZTgxZjZl
dWxsLCAweDNjMWNiZDgxMWVhZjE4MDh1bGwsCisgICAgICAweDFiYmMyM2NmYThmYWM3MjF1bGws
IDB4YTRjMmNkYTY1ZTU5NmE1MXVsbCwgMHhiNzcyMTZmYWQzN2FkZjkxdWxsLAorICAgICAgMHg4
MzZkNzk0NDU3YzA4ODQ5dWxsLCAweGUwODNkZjAzNDc1ZjQ5ZDd1bGwsIDB4YmM5ZmViNTEyZTZi
MGQ2Y3VsbCwKKyAgICAgIDB4YjEyZDc0ZmRkNzE4YzhjNXVsbCwgMHgxMmZmMDk2NTNiZmJlNGNh
dWxsLCAweDhkZDAzYTEwNWJjNGVlN2V1bGwsCisgICAgICAweDU3MzgzNDEwNDViYTBkODV1bGws
IDB4ZjNmZDcyMmRjNjVhZDA5ZXVsbCwgMHhmYTE0ZmQyMWVhMmE1NzA1dWxsLAorICAgICAgMHhm
ZmU2ZWE0ZDZlZGIwYzczdWxsLCAweEQwN0U5RUZFMkJGMTFGQjR1bGwsIDB4OTVEQkRBNERBRTkw
OTE5OHVsbCwKKyAgICAgIDB4RUFBRDhFNzE2QjkzRDVBMHVsbCwgMHhEMDhFRDFEMEFGQzcyNUUw
dWxsLCAweDhFM0M1QjJGOEU3NTk0Qjd1bGwsCisgICAgICAweDhGRjZFMkZCRjIxMjJCNjR1bGws
IDB4ODg4OEI4MTI5MDBERjAxQ3VsbCwgMHg0RkFENUVBMDY4OEZDMzFDdWxsLAorICAgICAgMHhE
MUNGRjE5MUIzQThDMUFEdWxsLCAweDJGMkYyMjE4QkUwRTE3Nzd1bGwsIDB4RUE3NTJERkU4QjAy
MUZBMXVsbCwKKyAgfSk7CisKKyAgLy8gQ29udmVydCB0aGUgcmVhbC12YWx1ZWQgcmVzdWx0IGlu
dG8gYSB1bml0NjQgd2hlcmUgd2UgY29tcGFyZQorICAvLyA1IChmbG9hdCkgb3IgMTAgKGRvdWJs
ZSkgZGVjaW1hbCBkaWdpdHMgcGx1cyB0aGUgYmFzZS0yIGV4cG9uZW50LgorICBhdXRvIGZsb2F0
X3RvX3U2NCA9IFtdKGZsb2F0IGQpIHsKKyAgICBpbnQgZXhwID0gMDsKKyAgICBhdXRvIGYgPSBz
dGQ6OmZyZXhwKGQsICZleHApOworICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDFl
NSAqIGYpICogMTAwMDApICsgc3RkOjphYnMoZXhwKTsKKyAgfTsKKyAgYXV0byBkb3VibGVfdG9f
dTY0ID0gW10oZG91YmxlIGQpIHsKKyAgICBpbnQgZXhwID0gMDsKKyAgICBhdXRvIGYgPSBzdGQ6
OmZyZXhwKGQsICZleHApOworICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDFlMTAg
KiBmKSAqIDEwMDAwKSArIHN0ZDo6YWJzKGV4cCk7CisgIH07CisKKyAgc3RkOjp2ZWN0b3I8dWlu
dDY0X3Q+IG91dHB1dCgyMCk7CisgIHsKKyAgICAvLyBBbGdvcml0aG0gSm9laG5rIChmbG9hdCkK
KyAgICBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxmbG9hdD4gZGlzdCgwLjFmLCAwLjJmKTsKKyAg
ICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwKKyAg
ICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBmbG9hdF90b191NjQoZGlzdCh1cmJnKSk7IH0p
OworICAgIEVYUEVDVF9FUSg0NCwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfVEhB
VChvdXRwdXQsICAvLworICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKAorICAg
ICAgICAgICAgICAgICAgICA5OTgzNDAwMDAsIDYxOTAzMDAwNCwgNTAwMDAwMDAxLCA5OTk5OTAw
MDAsIDk5NjI4MDAwMCwKKyAgICAgICAgICAgICAgICAgICAgNTAwMDAwMDAxLCA4NDQ3NDAwMDQs
IDg0NzIxMDAwMSwgOTk5OTcwMDAwLCA4NzIzMjAwMDAsCisgICAgICAgICAgICAgICAgICAgIDU4
NTQ4MDAwNywgOTMzMjgwMDAwLCA4NjkwODAwNDIsIDY0NzY3MDAzMSwgNTI4MjQwMDA0LAorICAg
ICAgICAgICAgICAgICAgICA5Njk5ODAwMDQsIDYyNjA1MDAwOCwgOTE1OTMwMDAyLCA4MzM0NDAw
MzMsIDg3ODA0MDAxNSkpOworICB9CisKKyAgdXJiZy5yZXNldCgpOworICB7CisgICAgLy8gQWxn
b3JpdGhtIEpvZWhuayAoZG91YmxlKQorICAgIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPGRvdWJs
ZT4gZGlzdCgwLjEsIDAuMik7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91dHB1dCks
IHN0ZDo6ZW5kKG91dHB1dCksCisgICAgICAgICAgICAgICAgICBbJl0geyByZXR1cm4gZG91Ymxl
X3RvX3U2NChkaXN0KHVyYmcpKTsgfSk7CisgICAgRVhQRUNUX0VRKDQ0LCB1cmJnLmludm9jYXRp
b25zKCkpOworICAgIEVYUEVDVF9USEFUKAorICAgICAgICBvdXRwdXQsICAvLworICAgICAgICB0
ZXN0aW5nOjpFbGVtZW50c0FyZSgKKyAgICAgICAgICAgIDk5ODM0NzEzMDAwMDAwLCA2MTkwMzM1
Njg3MDAwNCwgNTAwMDAwMDAwMDAwMDEsIDk5OTk5NzIxMTcwMDAwLAorICAgICAgICAgICAgOTk2
MjgzNzQ3NzAwMDAsIDk5OTk5OTk5OTkwMDAwLCA4NDQ3NDM5Nzg2MDAwNCwgODQ3MjEyNzYyNDAw
MDEsCisgICAgICAgICAgICA5OTk5NzQwNzQ5MDAwMCwgODcyMzI1MjgxMjAwMDAsIDU4NTQ4MzY0
NzgwMDA3LCA5MzMyODkzMjkxMDAwMCwKKyAgICAgICAgICAgIDg2OTA4MjM3NzcwMDQyLCA2NDc2
NzkxNzkzMDAzMSwgNTI4MjQ1ODE5NzAwMDQsIDk2OTk4NTQ0MTQwMDA0LAorICAgICAgICAgICAg
NjI2MDU5NDYyNzAwMDgsIDkxNTkzNjA0MzgwMDAyLCA4MzM0NTAzMTc0MDAzMywgODc4MDQzOTcy
MzAwMTUpKTsKKyAgfQorCisgIHVyYmcucmVzZXQoKTsKKyAgeworICAgIC8vIEFsZ29yaXRobSBD
aGVuZyAxCisgICAgYWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZG91YmxlPiBkaXN0KDAuOSwgMi4w
KTsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0
KSwKKyAgICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBkb3VibGVfdG9fdTY0KGRpc3QodXJi
ZykpOyB9KTsKKyAgICBFWFBFQ1RfRVEoNjIsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQ
RUNUX1RIQVQoCisgICAgICAgIG91dHB1dCwgIC8vCisgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRz
QXJlKAorICAgICAgICAgICAgNjIwNjkwMDQ3ODAwMDEsIDY0NDMzMjA0NDUwMDAxLCA1MzYwNzQx
NjU2MDAwMCwgODk2NDQyOTU0MzAwMDgsCisgICAgICAgICAgICA2MTQzNDU4NjMxMDAxOSwgNTUx
NzI2MTU4OTAwMDIsIDYyMTg3MTYxNDkwMDAwLCA1NjQzMzY4NDgxMDAwMywKKyAgICAgICAgICAg
IDgwNDU0NjIyMDUwMDA1LCA4NjQxODU1ODcxMDAwMywgOTI5MjA1MTQ3MDAwMDEsIDY0NjQ1MTg0
NjgwMDAxLAorICAgICAgICAgICAgNTg1NDkxODMzODAwMDAsIDg0ODgxMjgzNjUwMDA1LCA3MTA3
ODcyODU5MDAwMiwgNjk5NDk2OTQ5NzAwMDAsCisgICAgICAgICAgICA3MzE1NzQ2MTcxMDAwMSwg
Njg1OTIxOTEzMDAwMDEsIDcwNzQ3NjIzOTAwMDAwLCA3ODU4NDY5NjkzMDAwNSkpOworICB9CisK
KyAgdXJiZy5yZXNldCgpOworICB7CisgICAgLy8gQWxnb3JpdGhtIENoZW5nIDIKKyAgICBhYnNs
OjpiZXRhX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IGRpc3QoMS41LCAyLjUpOworICAgIHN0ZDo6Z2Vu
ZXJhdGUoc3RkOjpiZWdpbihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLAorICAgICAgICAgICAg
ICAgICAgWyZdIHsgcmV0dXJuIGRvdWJsZV90b191NjQoZGlzdCh1cmJnKSk7IH0pOworICAgIEVY
UEVDVF9FUSg1NCwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfVEhBVCgKKyAgICAg
ICAgb3V0cHV0LCAgLy8KKyAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUoCisgICAgICAgICAg
ICA3NTAwMDAyOTI1MDAwMSwgNzY3NTE0ODI4NjAwMDEsIDUzMjY0NTc1MjIwMDAwLCA2OTE5MzEz
MzY1MDAwNSwKKyAgICAgICAgICAgIDc4MDI4MzI0NDcwMDEzLCA5MTU3MzU4NzU2MDAwMiwgNTkx
Njc1MjM3NzAwMDAsIDYwNjU4NjE4NTYwMDAyLAorICAgICAgICAgICAgODAwNzU4NzA1NDAwMDAs
IDk0MTQxMzIwNDYwMDA0LCA2MzE5NjU5Mjc3MDAwMywgNzg4ODM5MDYzMDAwMDIsCisgICAgICAg
ICAgICA5Njc5Nzk5MjU5MDAwMSwgNzY5MDc1ODc4MDAwMDEsIDU2NjQ1MTY3NTYwMDAwLCA2NTQw
ODMwMjI4MDAwMywKKyAgICAgICAgICAgIDUzNDAxMTU2MzIwMDAxLCA2NDczMTIzODU3MDAwMCwg
ODMwNjU1NzM3NTAwMDEsIDc5Nzg4MzMzODIwMDAxKSk7CisgIH0KK30KKworLy8gVGhpcyBpcyBh
biBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyB0ZXN0LiBJZiBhbnkgcGFydCBvZiB0aGUgaW1wbGVt
ZW50YXRpb24KKy8vIGNoYW5nZXMsIHRoZW4gaXQgaXMgbGlrZWx5IHRoYXQgdGhpcyB0ZXN0IHdp
bGwgY2hhbmdlIGFzIHdlbGwuICBBbHNvLCBpZgorLy8gZGVwZW5kZW5jaWVzIG9mIHRoZSBkaXN0
cmlidXRpb24gY2hhbmdlLCBzdWNoIGFzIFJhbmRVNjRUb0RvdWJsZSwgdGhlbiB0aGlzCisvLyBp
cyBhbHNvIGxpa2VseSB0byBjaGFuZ2UuCitURVNUKEJldGFEaXN0cmlidXRpb25UZXN0LCBBbGdv
cml0aG1Cb3VuZHMpIHsKKyAgeworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2Vf
dXJiZyB1cmJnKAorICAgICAgICB7MHg3ZmJlNzZjOGI0Mzk1ODAwdWxsLCAweDgwMDAwMDAwMDAw
MDAwMDB1bGx9KTsKKyAgICAvLyB1PTAuNDk5LCB2PTAuNQorICAgIGFic2w6OmJldGFfZGlzdHJp
YnV0aW9uPGRvdWJsZT4gZGlzdCgxZS00LCAxZS00KTsKKyAgICBkb3VibGUgYSA9IGRpc3QodXJi
Zyk7CisgICAgRVhQRUNUX0VRKGEsIDIuMDIwMjg2MDg2MTU2NzEwODUyOWUtMDkpOworICAgIEVY
UEVDVF9FUSgyLCB1cmJnLmludm9jYXRpb25zKCkpOworICB9CisKKyAgLy8gVGVzdCB0aGF0IGJv
dGggdGhlIGZsb2F0ICYgZG91YmxlIGFsZ29yaXRobXMgYXBwcm9wcmlhdGVseSByZWplY3QgdGhl
CisgIC8vIGluaXRpYWwgZHJhdy4KKyAgeworICAgIC8vIDEvYWxwaGEgPSAxL2JldGEgPSAyLgor
ICAgIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPGZsb2F0PiBkaXN0KDAuNSwgMC41KTsKKworICAg
IC8vIGZpcnN0IHR3byBvdXRwdXRzIGFyZSBjbG9zZSB0byAxLjAgLSBlcHNpbG9uLAorICAgIC8v
IHRodXM6ICAodSBeIDIgKyB2IF4gMikgPiAxLjAKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAgICAgICAgezB4ZmZmZjAwMDAwMDA2ZTZjOHVsbCwgMHhm
ZmZmMDAwMDAwMDdjN2M4dWxsLCAweDgwMDAwMzc2NjI5NUNGQTl1bGwsCisgICAgICAgICAweDEx
QzgxOTY4NEU3MzRBNDF1bGx9KTsKKyAgICB7CisgICAgICBkb3VibGUgeSA9IGFic2w6OmJldGFf
ZGlzdHJpYnV0aW9uPGRvdWJsZT4oMC41LCAwLjUpKHVyYmcpOworICAgICAgRVhQRUNUX0VRKDQs
IHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgICBFWFBFQ1RfRVEoeSwgMC45ODEwNjY4OTUyNjMz
ODYyKSA8PCB5OworICAgIH0KKworICAgIC8vIC4uLmFuZDogIGxvZyh1KSAqIGEgfj0gbG9nKHYp
ICogYiB+PSAtMC4wMgorICAgIC8vIHRodXMgeiB+PSAtMC4wMiArIGxvZygxICsgZSh+MCkpCisg
ICAgLy8gICAgICAgIH49IC0wLjAyICsgMC42OQorICAgIC8vIHRodXMgeiA+IDAKKyAgICB1cmJn
LnJlc2V0KCk7CisgICAgeworICAgICAgZmxvYXQgeCA9IGFic2w6OmJldGFfZGlzdHJpYnV0aW9u
PGZsb2F0PigwLjUsIDAuNSkodXJiZyk7CisgICAgICBFWFBFQ1RfRVEoNCwgdXJiZy5pbnZvY2F0
aW9ucygpKTsKKyAgICAgIEVYUEVDVF9ORUFSKDAuOTgxMDY2ODgyNjEwMzIxMDQsIHgsIDAuMDAw
MDAwNSkgPDwgeCA8PCAiZiI7CisgICAgfQorICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc2NyZXRlX2Rpc3RyaWJ1dGlvbi5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9kaXNjcmV0ZV9kaXN0cmlidXRpb24uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmU2YzA5YzUxODBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2Rpc2NyZXRlX2Rpc3RyaWJ1dGlvbi5jYwpAQCAtMCwwICsxLDk2IEBACisvLyBDb3B5cmlnaHQg
MjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2Rpc2Ny
ZXRlX2Rpc3RyaWJ1dGlvbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9t
X2ludGVybmFsIHsKKworLy8gSW5pdGlhbGl6ZXMgdGhlIGRpc3RyaWJ1dGlvbiB0YWJsZSBmb3Ig
V2Fsa2VyJ3MgQWxpYXNpbmcgYWxnb3JpdGhtLCBkZXNjcmliZWQKKy8vIGluIEtudXRoLCBWb2wg
Mi4gYXMgd2VsbCBhcyBpbiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGlhc19tZXRo
b2QKK3N0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIHNpemVfdD4+IEluaXREaXNjcmV0ZURp
c3RyaWJ1dGlvbigKKyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+KiBwcm9iYWJpbGl0aWVzKSB7Cisg
IC8vIFRoZSBlbXB0eS1jYXNlIHNob3VsZCBhbHJlYWR5IGJlIGhhbmRsZWQgYnkgdGhlIGNvbnN0
cnVjdG9yLgorICBhc3NlcnQocHJvYmFiaWxpdGllcyk7CisgIGFzc2VydCghcHJvYmFiaWxpdGll
cy0+ZW1wdHkoKSk7CisKKyAgLy8gU3RlcCAxLiBOb3JtYWxpemUgdGhlIGlucHV0IHByb2JhYmls
aXRpZXMgdG8gMS4wLgorICBkb3VibGUgc3VtID0gc3RkOjphY2N1bXVsYXRlKHN0ZDo6YmVnaW4o
KnByb2JhYmlsaXRpZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5k
KCpwcm9iYWJpbGl0aWVzKSwgMC4wKTsKKyAgaWYgKHN0ZDo6ZmFicyhzdW0gLSAxLjApID4gMWUt
NikgeworICAgIC8vIFNjYWxlIGBwcm9iYWJpbGl0aWVzYCBvbmx5IHdoZW4gdGhlIHN1bSBpcyB0
b28gZmFyIGZyb20gMS4wLiAgU2NhbGluZworICAgIC8vIHVuY29uZGl0aW9uYWxseSB3aWxsIGFs
dGVyIHRoZSBwcm9iYWJpbGl0aWVzIHNsaWdodGx5LgorICAgIGZvciAoZG91YmxlJiBpdGVtIDog
KnByb2JhYmlsaXRpZXMpIHsKKyAgICAgIGl0ZW0gPSBpdGVtIC8gc3VtOworICAgIH0KKyAgfQor
CisgIC8vIFN0ZXAgMi4gQXQgdGhpcyBwb2ludCBgcHJvYmFiaWxpdGllc2AgaXMgc2V0IHRvIHRo
ZSBjb25kaXRpb25hbAorICAvLyBwcm9iYWJpbGl0aWVzIG9mIGVhY2ggZWxlbWVudCB3aGljaCBz
dW0gdG8gMS4wLCB0byB3aXRoaW4gcmVhc29uYWJsZSBlcnJvci4KKyAgLy8gVGhlc2UgdmFsdWVz
IGFyZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgcHJvcG9ydGlvbmFsIHByb2JhYmlsaXR5IHRhYmxl
cyBmb3IKKyAgLy8gdGhlIHNlbGVjdGlvbiBwaGFzZXMgb2YgV2Fsa2VyJ3MgQWxpYXNpbmcgYWxn
b3JpdGhtLgorICAvLworICAvLyBUbyBjb25zdHJ1Y3QgdGhlIHRhYmxlLCBwaWNrIGFuIGVsZW1l
bnQgd2hpY2ggaXMgdW5kZXItZnVsbCAoaS5lLiwgYW4KKyAgLy8gZWxlbWVudCBmb3Igd2hpY2gg
YCgqcHJvYmFiaWxpdGllcylbaV0gPCAxLjAvbmApLCBhbmQgcGFpciBpdCB3aXRoIGFuCisgIC8v
IGVsZW1lbnQgd2hpY2ggaXMgb3Zlci1mdWxsIChpLmUuLCBhbiBlbGVtZW50IGZvciB3aGljaAor
ICAvLyBgKCpwcm9iYWJpbGl0aWVzKVtpXSA+IDEuMC9uYCkuIFRoZSBzbWFsbGVyIHZhbHVlIGNh
biBhbHdheXMgYmUgcmV0aXJlZC4KKyAgLy8gVGhlIGxhcmdlciBtYXkgc3RpbGwgYmUgZ3JlYXRl
ciB0aGFuIDEuMC9uLCBvciBtYXkgbm93IGJlIGxlc3MgdGhhbiAxLjAvbiwKKyAgLy8gYW5kIHB1
dCBiYWNrIG9udG8gdGhlIGFwcHJvcHJpYXRlIGNvbGxlY3Rpb24uCisgIGNvbnN0IHNpemVfdCBu
ID0gcHJvYmFiaWxpdGllcy0+c2l6ZSgpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8ZG91Ymxl
LCBzaXplX3Q+PiBxOworICBxLnJlc2VydmUobik7CisKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBv
dmVyOworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IHVuZGVyOworICBzaXplX3QgaWR4ID0gMDsKKyAg
Zm9yIChjb25zdCBkb3VibGUgaXRlbSA6ICpwcm9iYWJpbGl0aWVzKSB7CisgICAgYXNzZXJ0KGl0
ZW0gPj0gMCk7CisgICAgY29uc3QgZG91YmxlIHYgPSBpdGVtICogbjsKKyAgICBxLmVtcGxhY2Vf
YmFjayh2LCAwKTsKKyAgICBpZiAodiA8IDEuMCkgeworICAgICAgdW5kZXIucHVzaF9iYWNrKGlk
eCsrKTsKKyAgICB9IGVsc2UgeworICAgICAgb3Zlci5wdXNoX2JhY2soaWR4KyspOworICAgIH0K
KyAgfQorICB3aGlsZSAoIW92ZXIuZW1wdHkoKSAmJiAhdW5kZXIuZW1wdHkoKSkgeworICAgIGF1
dG8gbG8gPSB1bmRlci5iYWNrKCk7CisgICAgdW5kZXIucG9wX2JhY2soKTsKKyAgICBhdXRvIGhp
ID0gb3Zlci5iYWNrKCk7CisgICAgb3Zlci5wb3BfYmFjaygpOworCisgICAgcVtsb10uc2Vjb25k
ID0gaGk7CisgICAgY29uc3QgZG91YmxlIHIgPSBxW2hpXS5maXJzdCAtICgxLjAgLSBxW2xvXS5m
aXJzdCk7CisgICAgcVtoaV0uZmlyc3QgPSByOworICAgIGlmIChyIDwgMS4wKSB7CisgICAgICB1
bmRlci5wdXNoX2JhY2soaGkpOworICAgIH0gZWxzZSB7CisgICAgICBvdmVyLnB1c2hfYmFjayho
aSk7CisgICAgfQorICB9CisKKyAgLy8gRHVlIHRvIHJvdW5kaW5nIGVycm9ycywgdGhlcmUgbWF5
IGJlIHVuLXBhaXJlZCBlbGVtZW50cyBpbiBlaXRoZXIKKyAgLy8gY29sbGVjdGlvbjsgdGhlc2Ug
c2hvdWxkIGFsbCBiZSB2YWx1ZXMgbmVhciAxLjAuICBGb3IgdGhlc2UgdmFsdWVzLCBzZXQgYHFg
CisgIC8vIHRvIDEuMCBhbmQgc2V0IHRoZSBhbHRlcm5hdGUgdG8gdGhlIGlkZW50aXR5LgorICBm
b3IgKGF1dG8gaSA6IG92ZXIpIHsKKyAgICBxW2ldID0gezEuMCwgaX07CisgIH0KKyAgZm9yIChh
dXRvIGkgOiB1bmRlcikgeworICAgIHFbaV0gPSB7MS4wLCBpfTsKKyAgfQorICByZXR1cm4gcTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFi
c2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXNjcmV0ZV9kaXN0cmlidXRpb24uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9kaXNjcmV0ZV9kaXN0cmlidXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMTU2MGYwM2M1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vZGlzY3JldGVfZGlzdHJpYnV0aW9uLmgKQEAgLTAsMCArMSwyNDUgQEAKKy8vIENvcHly
aWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0RJ
U0NSRVRFX0RJU1RSSUJVVElPTl9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9ESVNDUkVURV9ESVNU
UklCVVRJT05fSF8KKworI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8Y21hdGg+CisjaW5j
bHVkZSA8aXN0cmVhbT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bnVtZXJpYz4KKyNp
bmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rv
cj4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2Jlcm5vdWxsaV9kaXN0cmlidXRpb24uaCIKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oIgorCituYW1lc3Bh
Y2UgYWJzbCB7CisKKy8vIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbgorLy8KKy8vIEEgZGlz
Y3JldGUgZGlzdHJpYnV0aW9uIHByb2R1Y2VzIHJhbmRvbSBpbnRlZ2VycyBpLCB3aGVyZSAwIDw9
IGkgPCBuCisvLyBkaXN0cmlidXRlZCBhY2NvcmRpbmcgdG8gdGhlIGRpc2NyZXRlIHByb2JhYmls
aXR5IGZ1bmN0aW9uOgorLy8KKy8vICAgICBQKGl8cDAsLi4uLHBu4oiSMSk9cGkKKy8vCisvLyBU
aGlzIGNsYXNzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbiAo
c2VlCisvLyBbcmFuZC5kaXN0LnNhbXAuZGlzY3JldGVdKS4KKy8vCisvLyBUaGUgYWxnb3JpdGht
IHVzZWQgaXMgV2Fsa2VyJ3MgQWxpYXNpbmcgYWxnb3JpdGhtLCBkZXNjcmliZWQgaW4gS251dGgs
IFZvbCAyLgorLy8gYWJzbDo6ZGlzY3JldGVfZGlzdHJpYnV0aW9uIHRha2VzIE8oTikgdGltZSB0
byBwcmVjb21wdXRlIHRoZSBwcm9iYWJpbGl0aWVzCisvLyAod2hlcmUgTiBpcyB0aGUgbnVtYmVy
IG9mIHBvc3NpYmxlIG91dGNvbWVzIGluIHRoZSBkaXN0cmlidXRpb24pIGF0CisvLyBjb25zdHJ1
Y3Rpb24sIGFuZCB0aGVuIHRha2VzIE8oMSkgdGltZSBmb3IgZWFjaCB2YXJpYXRlIGdlbmVyYXRp
b24uICBNYW55CisvLyBvdGhlciBpbXBsZW1lbnRhdGlvbnMgYWxzbyB0YWtlIE8oTikgdGltZSB0
byBjb25zdHJ1Y3QgYW4gb3JkZXJlZCBzZXF1ZW5jZSBvZgorLy8gcGFydGlhbCBzdW1zLCBwbHVz
IE8obG9nIE4pIHRpbWUgcGVyIHZhcmlhdGUgdG8gYmluYXJ5IHNlYXJjaC4KKy8vCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgSW50VHlwZSA9IGludD4KK2NsYXNzIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbiB7
CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IEludFR5cGU7CisKKyAgY2xhc3MgcGFy
YW1fdHlwZSB7CisgICBwdWJsaWM6CisgICAgdXNpbmcgZGlzdHJpYnV0aW9uX3R5cGUgPSBkaXNj
cmV0ZV9kaXN0cmlidXRpb247CisKKyAgICBwYXJhbV90eXBlKCkgeyBpbml0KCk7IH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIGV4cGxpY2l0IHBhcmFtX3R5
cGUoSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQpCisgICAgICAgIDogcF8o
YmVnaW4sIGVuZCkgeworICAgICAgaW5pdCgpOworICAgIH0KKworICAgIGV4cGxpY2l0IHBhcmFt
X3R5cGUoc3RkOjppbml0aWFsaXplcl9saXN0PGRvdWJsZT4gd2VpZ2h0cykgOiBwXyh3ZWlnaHRz
KSB7CisgICAgICBpbml0KCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFVuYXJ5T3Bl
cmF0aW9uPgorICAgIGV4cGxpY2l0IHBhcmFtX3R5cGUoc2l6ZV90IG53LCBkb3VibGUgeG1pbiwg
ZG91YmxlIHhtYXgsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmFyeU9wZXJhdGlvbiBmdykg
eworICAgICAgaWYgKG53ID4gMCkgeworICAgICAgICBwXy5yZXNlcnZlKG53KTsKKyAgICAgICAg
ZG91YmxlIGRlbHRhID0gKHhtYXggLSB4bWluKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obncpOwor
ICAgICAgICBhc3NlcnQoZGVsdGEgPiAwKTsKKyAgICAgICAgZG91YmxlIHQgPSBkZWx0YSAqIDAu
NTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudzsgKytpKSB7CisgICAgICAgICAg
cF8ucHVzaF9iYWNrKGZ3KHhtaW4gKyBpICogZGVsdGEgKyB0KSk7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjxkb3VibGU+
JiBwcm9iYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gcF87IH0KKyAgICBzaXplX3QgbigpIGNv
bnN0IHsgcmV0dXJuIHBfLnNpemUoKSAtIDE7IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
PT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0
dXJuIGEucHJvYmFiaWxpdGllcygpID09IGIucHJvYmFiaWxpdGllcygpOworICAgIH0KKworICAg
IGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29uc3QgcGFyYW1f
dHlwZSYgYikgeworICAgICAgcmV0dXJuICEoYSA9PSBiKTsKKyAgICB9CisKKyAgIHByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjsKKworICAgIHZvaWQgaW5p
dCgpOworCisgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBwXzsgICAgICAgICAgICAgICAgICAgICAv
LyBub3JtYWxpemVkIHByb2JhYmlsaXRpZXMKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8ZG91
YmxlLCBzaXplX3Q+PiBxXzsgIC8vIChhY2NlcHRhbmNlLCBhbHRlcm5hdGUpIHBhaXJzCisKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8cmVzdWx0X3R5cGU+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICJDbGFzcy10ZW1wbGF0ZSBhYnNsOjpkaXNjcmV0ZV9kaXN0cmlidXRp
b248PiBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJpemVkIHVzaW5nIGFu
IGludGVncmFsIHR5cGUuIik7CisgIH07CisKKyAgZGlzY3JldGVfZGlzdHJpYnV0aW9uKCkgOiBw
YXJhbV8oKSB7fQorCisgIGV4cGxpY2l0IGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJh
bV90eXBlJiBwKSA6IHBhcmFtXyhwKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0
ZXJhdG9yPgorICBleHBsaWNpdCBkaXNjcmV0ZV9kaXN0cmlidXRpb24oSW5wdXRJdGVyYXRvciBi
ZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQpCisgICAgICA6IHBhcmFtXyhiZWdpbiwgZW5kKSB7fQor
CisgIGV4cGxpY2l0IGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
ZG91YmxlPiB3ZWlnaHRzKQorICAgICAgOiBwYXJhbV8od2VpZ2h0cykge30KKworICB0ZW1wbGF0
ZSA8Y2xhc3MgVW5hcnlPcGVyYXRpb24+CisgIGV4cGxpY2l0IGRpc2NyZXRlX2Rpc3RyaWJ1dGlv
bihzaXplX3QgbncsIGRvdWJsZSB4bWluLCBkb3VibGUgeG1heCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuYXJ5T3BlcmF0aW9uIGZ3KQorICAgICAgOiBwYXJhbV8obncsIHht
aW4sIHhtYXgsIHN0ZDo6bW92ZShmdykpIHt9CisKKyAgdm9pZCByZXNldCgpIHt9CisKKyAgLy8g
Z2VuZXJhdGluZyBmdW5jdGlvbnMKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3Vs
dF90eXBlIG9wZXJhdG9yKCkoVVJCRyYgZykgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNl
cykKKyAgICByZXR1cm4gKCp0aGlzKShnLCBwYXJhbV8pOworICB9CisKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVVJCRyYgZywgIC8vIE5PTElO
VChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFy
YW1fdHlwZSYgcCk7CisKKyAgY29uc3QgcGFyYW1fdHlwZSYgcGFyYW0oKSBjb25zdCB7IHJldHVy
biBwYXJhbV87IH0KKyAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBwKSB7IHBhcmFtXyA9
IHA7IH0KKworICByZXN1bHRfdHlwZShtaW4pKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICByZXN1
bHRfdHlwZShtYXgpKCkgY29uc3QgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxyZXN1bHRfdHlw
ZT4ocGFyYW1fLm4oKSk7CisgIH0gIC8vIGluY2x1c2l2ZQorCisgIC8vIE5PVEUgW3JhbmQuZGlz
dC5zYW1wbGUuZGlzY3JldGVdIHJldHVybnMgYSBzdGQ6OnZlY3Rvcjxkb3VibGU+IG5vdCBhCisg
IC8vIGNvbnN0IHN0ZDo6dmVjdG9yPGRvdWJsZT4mLgorICBjb25zdCBzdGQ6OnZlY3Rvcjxkb3Vi
bGU+JiBwcm9iYWJpbGl0aWVzKCkgY29uc3QgeworICAgIHJldHVybiBwYXJhbV8ucHJvYmFiaWxp
dGllcygpOworICB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBkaXNjcmV0ZV9k
aXN0cmlidXRpb24mIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzY3JldGVf
ZGlzdHJpYnV0aW9uJiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fID09IGIucGFyYW1fOworICB9
CisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgZGlzY3JldGVfZGlzdHJpYnV0aW9uJiBh
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbiYg
YikgeworICAgIHJldHVybiBhLnBhcmFtXyAhPSBiLnBhcmFtXzsKKyAgfQorCisgcHJpdmF0ZToK
KyAgcGFyYW1fdHlwZSBwYXJhbV87Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gSW1w
bGVtZW50YXRpb24gZGV0YWlscyBvbmx5IGJlbG93CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitu
YW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gVXNpbmcgdGhlIHZlY3RvciBgKnByb2Jh
YmlsaXRpZXNgLCB3aG9zZSB2YWx1ZXMgYXJlIHRoZSB3ZWlnaHRzIG9yCisvLyBwcm9iYWJpbGl0
aWVzIG9mIGFuIGVsZW1lbnQgYmVpbmcgc2VsZWN0ZWQsIGNvbnN0cnVjdHMgdGhlIHByb3BvcnRp
b25hbAorLy8gcHJvYmFiaWxpdGllcyB1c2VkIGJ5IHRoZSBkaXNjcmV0ZSBkaXN0cmlidXRpb24u
ICBgKnByb2JhYmlsaXRpZXNgIHdpbGwgYmUKKy8vIHNjYWxlZCwgaWYgbmVjZXNzYXJ5LCBzbyB0
aGF0IGl0cyBlbnRyaWVzIHN1bSB0byBhIHZhbHVlIHN1ZmZpY2llbnRseSBjbG9zZQorLy8gdG8g
MS4wLgorc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgc2l6ZV90Pj4gSW5pdERpc2NyZXRl
RGlzdHJpYnV0aW9uKAorICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4qIHByb2JhYmlsaXRpZXMpOwor
Cit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJ
bnRUeXBlPgordm9pZCBkaXNjcmV0ZV9kaXN0cmlidXRpb248SW50VHlwZT46OnBhcmFtX3R5cGU6
OmluaXQoKSB7CisgIGlmIChwXy5lbXB0eSgpKSB7CisgICAgcF8ucHVzaF9iYWNrKDEuMCk7Cisg
ICAgcV8uZW1wbGFjZV9iYWNrKDEuMCwgMCk7CisgIH0gZWxzZSB7CisgICAgYXNzZXJ0KG4oKSA8
PSAoc3RkOjpudW1lcmljX2xpbWl0czxJbnRUeXBlPjo6bWF4KSgpKTsKKyAgICBxXyA9IHJhbmRv
bV9pbnRlcm5hbDo6SW5pdERpc2NyZXRlRGlzdHJpYnV0aW9uKCZwXyk7CisgIH0KK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIEludFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3R5cGVu
YW1lIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6cmVzdWx0X3R5cGUKK2Rpc2NyZXRl
X2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6b3BlcmF0b3IoKSgKKyAgICBVUkJHJiBnLCAgLy8gTk9M
SU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBjb25zdCBwYXJhbV90eXBlJiBwKSB7CisgIGNv
bnN0IGF1dG8gaWR4ID0gYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBl
PigwLCBwLm4oKSkoZyk7CisgIGNvbnN0IGF1dG8mIHEgPSBwLnFfW2lkeF07CisgIGNvbnN0IGJv
b2wgc2VsZWN0ZWQgPSBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uKHEuZmlyc3QpKGcpOwor
ICByZXR1cm4gc2VsZWN0ZWQgPyBpZHggOiBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4ocS5zZWNv
bmQpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgSW50VHlwZT4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0
b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9zLCAgLy8gTk9M
SU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBjb25zdCBkaXNjcmV0ZV9kaXN0cmlidXRpb248
SW50VHlwZT4mIHgpIHsKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9vc3Ry
ZWFtX3N0YXRlX3NhdmVyKG9zKTsKKyAgY29uc3QgYXV0byYgcHJvYmFiaWxpdGllcyA9IHgucGFy
YW0oKS5wcm9iYWJpbGl0aWVzKCk7CisgIG9zIDw8IHByb2JhYmlsaXRpZXMuc2l6ZSgpOworCisg
IG9zLnByZWNpc2lvbihyYW5kb21faW50ZXJuYWw6OnN0cmVhbV9wcmVjaXNpb25faGVscGVyPGRv
dWJsZT46OmtQcmVjaXNpb24pOworICBmb3IgKGNvbnN0IGF1dG8mIHAgOiBwcm9iYWJpbGl0aWVz
KSB7CisgICAgb3MgPDwgb3MuZmlsbCgpIDw8IHA7CisgIH0KKyAgcmV0dXJuIG9zOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgSW50VHlw
ZT4KK3N0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0b3I+PigKKyAgICBz
dGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUv
cmVmZXJlbmNlcykKKyAgICBkaXNjcmV0ZV9kaXN0cmlidXRpb248SW50VHlwZT4mIHgpIHsgICAg
Ly8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVu
YW1lIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6cGFyYW1fdHlwZTsKKyAgYXV0byBz
YXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9pc3RyZWFtX3N0YXRlX3NhdmVyKGlzKTsKKwor
ICBzaXplX3QgbjsKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBwOworCisgIGlzID4+IG47CisgIGlm
IChpcy5mYWlsKCkpIHJldHVybiBpczsKKyAgaWYgKG4gPiAwKSB7CisgICAgcC5yZXNlcnZlKG4p
OworICAgIGZvciAoSW50VHlwZSBpID0gMDsgaSA8IG4gJiYgIWlzLmZhaWwoKTsgKytpKSB7Cisg
ICAgICBhdXRvIHRtcCA9IHJhbmRvbV9pbnRlcm5hbDo6cmVhZF9mbG9hdGluZ19wb2ludDxkb3Vi
bGU+KGlzKTsKKyAgICAgIGlmIChpcy5mYWlsKCkpIHJldHVybiBpczsKKyAgICAgIHAucHVzaF9i
YWNrKHRtcCk7CisgICAgfQorICB9CisgIHgucGFyYW0ocGFyYW1fdHlwZShwLmJlZ2luKCksIHAu
ZW5kKCkpKTsKKyAgcmV0dXJuIGlzOworfQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5k
aWYgIC8vIEFCU0xfUkFORE9NX0RJU0NSRVRFX0RJU1RSSUJVVElPTl9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2Rpc2NyZXRlX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2Rpc2NyZXRlX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi43Mjk2ZjBhYzIyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9kaXNjcmV0ZV9kaXN0cmlidXRpb25fdGVzdC5jYwpAQCAtMCwwICsxLDI0NiBAQAorLy8gQ29w
eXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9kaXNjcmV0ZV9kaXN0cmlidXRpb24uaCIKKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUg
PGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNs
dWRlIDxudW1lcmljPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgorI2lu
Y2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJnbW9jay9nbW9j
ay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVy
bmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3Nx
dWFyZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0
X3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgi
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaXAuaCIKKworbmFtZXNwYWNl
IHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CitjbGFzcyBEaXNjcmV0ZURpc3RyaWJ1
dGlvblR5cGVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKwordXNpbmcgSW50VHlw
ZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPGludDhfdCwgdWludDhfdCwgaW50MTZfdCwgdWludDE2X3Qs
IGludDMyX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QsIGlu
dDY0X3QsIHVpbnQ2NF90PjsKK1RZUEVEX1RFU1RfU1VJVEUoRGlzY3JldGVEaXN0cmlidXRpb25U
eXBlVGVzdCwgSW50VHlwZXMpOworCitUWVBFRF9URVNUKERpc2NyZXRlRGlzdHJpYnV0aW9uVHlw
ZVRlc3QsIFBhcmFtU2VyaWFsaXplVGVzdCkgeworICB1c2luZyBwYXJhbV90eXBlID0KKyAgICAg
IHR5cGVuYW1lIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+OjpwYXJhbV90
eXBlOworCisgIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGVtcHR5Owor
ICBFWFBFQ1RfVEhBVChlbXB0eS5wcm9iYWJpbGl0aWVzKCksIHRlc3Rpbmc6OkVsZW1lbnRzQXJl
KDEuMCkpOworCisgIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGJlZm9y
ZSh7MS4wLCAyLjAsIDEuMH0pOworCisgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHByb2JhYmlsaXRp
ZXMgc3VtIHRvIDEuMC4gV2UgcGlja2VkIHZhbHVlcyB3aGljaAorICAvLyBjYW4gYmUgcmVwcmVz
ZW50ZWQgZXhhY3RseSB0byBhdm9pZCBmbG9hdGluZy1wb2ludCByb3VuZG9mZiBlcnJvci4KKyAg
ZG91YmxlIHMgPSAwOworICBmb3IgKGNvbnN0IGF1dG8mIHggOiBiZWZvcmUucHJvYmFiaWxpdGll
cygpKSB7CisgICAgcyArPSB4OworICB9CisgIEVYUEVDVF9FUShzLCAxLjApOworICBFWFBFQ1Rf
VEhBVChiZWZvcmUucHJvYmFiaWxpdGllcygpLCB0ZXN0aW5nOjpFbGVtZW50c0FyZSgwLjI1LCAw
LjUsIDAuMjUpKTsKKworICAvLyBWYWxpZGF0ZSB0aGUgc2FtZSBkYXRhIHZpYSBhbiBpbml0aWFs
aXplciBsaXN0LgorICB7CisgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBkYXRhKHsxLjAsIDIuMCwg
MS4wfSk7CisKKyAgICBhYnNsOjpkaXNjcmV0ZV9kaXN0cmlidXRpb248VHlwZVBhcmFtPiB2aWFf
cGFyYW17CisgICAgICAgIHBhcmFtX3R5cGUoc3RkOjpiZWdpbihkYXRhKSwgc3RkOjplbmQoZGF0
YSkpfTsKKworICAgIEVYUEVDVF9FUSh2aWFfcGFyYW0sIGJlZm9yZSk7CisgIH0KKworICBzdGQ6
OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwgYmVmb3JlOworICBhYnNsOjpkaXNjcmV0ZV9kaXN0
cmlidXRpb248VHlwZVBhcmFtPiBhZnRlcjsKKworICBFWFBFQ1RfTkUoYmVmb3JlLCBhZnRlcik7
CisKKyAgc3MgPj4gYWZ0ZXI7CisKKyAgRVhQRUNUX0VRKGJlZm9yZSwgYWZ0ZXIpOworfQorCitU
WVBFRF9URVNUKERpc2NyZXRlRGlzdHJpYnV0aW9uVHlwZVRlc3QsIENvbnN0cnVjdG9yKSB7Cisg
IGF1dG8gZm4gPSBbXShkb3VibGUgeCkgeyByZXR1cm4geDsgfTsKKyAgeworICAgIGFic2w6OmRp
c2NyZXRlX2Rpc3RyaWJ1dGlvbjxpbnQ+IHVuYXJ5KDAsIDEuMCwgOS4wLCBmbik7CisgICAgRVhQ
RUNUX1RIQVQodW5hcnkucHJvYmFiaWxpdGllcygpLCB0ZXN0aW5nOjpFbGVtZW50c0FyZSgxLjAp
KTsKKyAgfQorCisgIHsKKyAgICBhYnNsOjpkaXNjcmV0ZV9kaXN0cmlidXRpb248aW50PiB1bmFy
eSgyLCAxLjAsIDkuMCwgZm4pOworICAgIC8vID0+IGZuKDEuMCArIDAgKiA0ICsgMikgPT4gMwor
ICAgIC8vID0+IGZuKDEuMCArIDEgKiA0ICsgMikgPT4gNworICAgIEVYUEVDVF9USEFUKHVuYXJ5
LnByb2JhYmlsaXRpZXMoKSwgdGVzdGluZzo6RWxlbWVudHNBcmUoMC4zLCAwLjcpKTsKKyAgfQor
fQorCitURVNUKERpc2NyZXRlRGlzdHJpYnV0aW9uVGVzdCwgSW5pdERpc2NyZXRlRGlzdHJpYnV0
aW9uKSB7CisgIHVzaW5nIHRlc3Rpbmc6OlBhaXI7CisKKyAgeworICAgIHN0ZDo6dmVjdG9yPGRv
dWJsZT4gcCh7MS4wLCAyLjAsIDMuMH0pOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxkb3Vi
bGUsIHNpemVfdD4+IHEgPQorICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkluaXREaXNj
cmV0ZURpc3RyaWJ1dGlvbigmcCk7CisKKyAgICBFWFBFQ1RfVEhBVChwLCB0ZXN0aW5nOjpFbGVt
ZW50c0FyZSgxIC8gNi4wLCAyIC8gNi4wLCAzIC8gNi4wKSk7CisKKyAgICAvLyBFYWNoIGJ1Y2tl
dCBpcyBwPTEvMywgc28gYnVja2V0IDAgd2lsbCBzZW5kIGhhbGYgaXQncyB0cmFmZmljCisgICAg
Ly8gdG8gYnVja2V0IDIsIHdoaWxlIHRoZSByZXN0IHdpbGwgcmV0YWluIGFsbCBvZiB0aGVpciB0
cmFmZmljLgorICAgIEVYUEVDVF9USEFUKHEsIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKFBhaXIoMC41
LCAyKSwgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcigx
LjAsIDEpLCAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWly
KDEuMCwgMikpKTsKKyAgfQorCisgIHsKKyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHAoezEuMCwg
Mi4wLCAzLjAsIDUuMCwgMi4wfSk7CisKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8ZG91Ymxl
LCBzaXplX3Q+PiBxID0KKyAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpJbml0RGlzY3Jl
dGVEaXN0cmlidXRpb24oJnApOworCisgICAgRVhQRUNUX1RIQVQocCwgdGVzdGluZzo6RWxlbWVu
dHNBcmUoMSAvIDEzLjAsIDIgLyAxMy4wLCAzIC8gMTMuMCwgNSAvIDEzLjAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAvIDEzLjApKTsKKworICAgIC8vIEEgbW9y
ZSBjb21wbGV4IGJ1Y2tldGluZyBzb2x1dGlvbjogRWFjaCBidWNrZXQgaGFzIHA9MC4yCisgICAg
Ly8gU28gYnVja2V0cyAwLCAxLCA0IHdpbGwgc2VuZCB0aGVpciBhbHRlcm5hdGUgdHJhZmZpYyBl
bHNld2hlcmUsIHdoaWNoCisgICAgLy8gaGFwcGVucyB0byBiZSBidWNrZXQgMy4KKyAgICAvLyBI
b3dldmVyLCBzdW1taW5nIHVwIHRoYXQgYWx0ZXJuYXRlIHRyYWZmaWMgZ2l2ZXMgYnVja2V0IDMg
dG9vIG11Y2gKKyAgICAvLyB0cmFmZmljLCBzbyBpdCB3aWxsIHNlbmQgc29tZSB0cmFmZmljIHRv
IGJ1Y2tldCAyLgorICAgIGNvbnN0ZXhwciBkb3VibGUgYjAgPSAxLjAgLyAxMy4wIC8gMC4yOwor
ICAgIGNvbnN0ZXhwciBkb3VibGUgYjEgPSAyLjAgLyAxMy4wIC8gMC4yOworICAgIGNvbnN0ZXhw
ciBkb3VibGUgYjMgPSAoNS4wIC8gMTMuMCAvIDAuMikgLSAoKDEgLSBiMCkgKyAoMSAtIGIxKSAr
ICgxIC0gYjEpKTsKKworICAgIEVYUEVDVF9USEFUKHEsIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKFBh
aXIoYjAsIDMpLCAgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFpcihiMSwgMyksICAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYWlyKDEuMCwgMiksICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhaXIoYjMsIDIpLCAgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFpcihiMSwgMykpKTsKKyAgfQorfQorCitURVNUKERpc2NyZXRlRGlzdHJpYnV0aW9u
VGVzdCwgQ2hpU3F1YXJlZFRlc3Q1MCkgeworICB1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OmtDaGlTcXVhcmVkOworCisgIGNvbnN0ZXhwciBzaXplX3Qga1RyaWFscyA9IDEwMDAwOworICBj
b25zdGV4cHIgaW50IGtCdWNrZXRzID0gNTA7ICAvLyBpbmNsdXNpdmUsIHNvIGFjdGFsbHkgKzEK
KworICAvLyAxLWluLTEwMDAwMCB0aHJlc2hvbGQsIGJ1dCByZW1lbWJlciwgdGhlcmUgYXJlIGFi
b3V0IDggdGVzdHMKKyAgLy8gaW4gdGhpcyBmaWxlLiBBbmQgdGhlIHRlc3QgY291bGQgZmFpbCBm
b3Igb3RoZXIgcmVhc29ucy4KKyAgLy8gRW1waXJpY2FsbHkgdmFsaWRhdGVkIHdpdGggLS1ydW5z
X3Blcl90ZXN0PTEwMDAwLgorICBjb25zdCBpbnQga1RocmVzaG9sZCA9CisgICAgICBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVZhbHVlKGtCdWNrZXRzLCAwLjk5OTk5KTsKKworICBz
dGQ6OnZlY3Rvcjxkb3VibGU+IHdlaWdodHMoa0J1Y2tldHMsIDApOworICBzdGQ6OmlvdGEoc3Rk
OjpiZWdpbih3ZWlnaHRzKSwgc3RkOjplbmQod2VpZ2h0cyksIDEpOworICBhYnNsOjpkaXNjcmV0
ZV9kaXN0cmlidXRpb248aW50PiBkaXN0KHN0ZDo6YmVnaW4od2VpZ2h0cyksIHN0ZDo6ZW5kKHdl
aWdodHMpKTsKKworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBybmc7CisKKyAgc3RkOjp2ZWN0b3I8
aW50MzJfdD4gY291bnRzKGtCdWNrZXRzLCAwKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBr
VHJpYWxzOyBpKyspIHsKKyAgICBhdXRvIHggPSBkaXN0KHJuZyk7CisgICAgY291bnRzW3hdKys7
CisgIH0KKworICAvLyBTY2FsZSB3ZWlnaHRzLgorICBkb3VibGUgc3VtID0gMDsKKyAgZm9yIChk
b3VibGUgeCA6IHdlaWdodHMpIHsKKyAgICBzdW0gKz0geDsKKyAgfQorICBmb3IgKGRvdWJsZSYg
eCA6IHdlaWdodHMpIHsKKyAgICB4ID0ga1RyaWFscyAqICh4IC8gc3VtKTsKKyAgfQorCisgIGRv
dWJsZSBjaGlfc3F1YXJlID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJl
KHN0ZDo6YmVnaW4oY291bnRzKSwgc3RkOjplbmQoY291bnRzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmVnaW4od2VpZ2h0cyksIHN0ZDo6ZW5kKHdlaWdo
dHMpKTsKKworICBpZiAoY2hpX3NxdWFyZSA+IGtUaHJlc2hvbGQpIHsKKyAgICBkb3VibGUgcF92
YWx1ZSA9CisgICAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlUFZhbHVlKGNo
aV9zcXVhcmUsIGtCdWNrZXRzKTsKKworICAgIC8vIENoaS1zcXVhcmVkIHRlc3QgZmFpbGVkLiBP
dXRwdXQgZG9lcyBub3QgYXBwZWFyIHRvIGJlIHVuaWZvcm0uCisgICAgc3RkOjpzdHJpbmcgbXNn
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnRzLnNpemUoKTsgaSsrKSB7CisgICAg
ICBhYnNsOjpTdHJBcHBlbmQoJm1zZywgaSwgIjogIiwgY291bnRzW2ldLCAiIHZzICIsIHdlaWdo
dHNbaV0sICJcbiIpOworICAgIH0KKyAgICBhYnNsOjpTdHJBcHBlbmQoJm1zZywga0NoaVNxdWFy
ZWQsICIgcC12YWx1ZSAiLCBwX3ZhbHVlLCAiXG4iKTsKKyAgICBhYnNsOjpTdHJBcHBlbmQoJm1z
ZywgIkhpZ2ggIiwga0NoaVNxdWFyZWQsICIgdmFsdWU6ICIsIGNoaV9zcXVhcmUsICIgPiAiLAor
ICAgICAgICAgICAgICAgICAgICBrVGhyZXNob2xkKTsKKyAgICBBQlNMX1JBV19MT0coSU5GTywg
IiVzIiwgbXNnLmNfc3RyKCkpOworICAgIEZBSUwoKSA8PCBtc2c7CisgIH0KK30KKworVEVTVChE
aXNjcmV0ZURpc3RyaWJ1dGlvblRlc3QsIFN0YWJpbGl0eVRlc3QpIHsKKyAgLy8gYWJzbDo6ZGlz
Y3JldGVfZGlzdHJpYnV0aW9uIHN0YWJpbGl0aXkgcmVsaWVzIG9uCisgIC8vIGFic2w6OnVuaWZv
cm1faW50X2Rpc3RyaWJ1dGlvbiBhbmQgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbi4KKyAg
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisgICAgICB7MHgwMDAz
ZWI3NmY2ZjdmNzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGwsIDB4QzMzMkRERUZCRTZDNUFB
NXVsbCwKKyAgICAgICAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4MkFFRjdEQUQ1QjZFMkY4NHVs
bCwgMHgxNTIxQjYyODI5MDc2MTcwdWxsLAorICAgICAgIDB4RUNERDQ3NzU2MTlGMTUxMHVsbCwg
MHgxM0NDQTgzMEVCNjFCRDk2dWxsLCAweDAzMzRGRTFFQUEwMzYzQ0Z1bGwsCisgICAgICAgMHhC
NTczNUM5MDRDNzBBMjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1bGwsIDB4RUVDQzg2QkM2MDYy
MkNBN3VsbH0pOworCisgIHN0ZDo6dmVjdG9yPGludD4gb3V0cHV0KDYpOworCisgIHsKKyAgICBh
YnNsOjpkaXNjcmV0ZV9kaXN0cmlidXRpb248aW50MzJfdD4gZGlzdCh7MS4wLCAyLjAsIDMuMCwg
NS4wLCAyLjB9KTsKKyAgICBFWFBFQ1RfRVEoMCwgZGlzdC5taW4oKSk7CisgICAgRVhQRUNUX0VR
KDQsIGRpc3QubWF4KCkpOworICAgIGZvciAoYXV0byYgdiA6IG91dHB1dCkgeworICAgICAgdiA9
IGRpc3QodXJiZyk7CisgICAgfQorICAgIEVYUEVDVF9FUSgxMiwgdXJiZy5pbnZvY2F0aW9ucygp
KTsKKyAgfQorCisgIC8vIFdpdGggMTIgY2FsbHMgdG8gdXJiZywgZWFjaCBjYWxsIGludG8gZGlz
Y3JldGVfZGlzdHJpYnV0aW9uIGNvbnN1bWVzCisgIC8vIHByZWNpc2VseSAyIHZhbHVlczogb25l
IGZvciB0aGUgdW5pZm9ybSBjYWxsLCBhbmQgYSBzZWNvbmQgZm9yIHRoZQorICAvLyBiZXJub3Vs
bGkuCisgIC8vCisgIC8vIEdpdmVuIHRoZSBhbHQgbWFwcGluZzogMD0+MywgMT0+MywgMj0+Miwg
Mz0+MiwgND0+Mywgd2UgY2FuCisgIC8vCisgIC8vIHVuaWZvcm06ICAgICAgNDQzMjEwMTQzMTMx
CisgIC8vIGJlcm5vdWxsaTogYjAgMDAwMDExMTAwMTAxCisgIC8vIGJlcm5vdWxsaTogYjEgMDAx
MTExMTAxMTAxCisgIC8vIGJlcm5vdWxsaTogYjIgMTExMTExMTExMTExCisgIC8vIGJlcm5vdWxs
aTogYjMgMDAxMTExMTAxMTExCisgIC8vIGJlcm5vdWxsaTogYjQgMDAxMTExMTAxMTAxCisgIC8v
IC4uLgorICBFWFBFQ1RfVEhBVChvdXRwdXQsIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKDMsIDMsIDEs
IDMsIDMsIDMpKTsKKworICB7CisgICAgdXJiZy5yZXNldCgpOworICAgIGFic2w6OmRpc2NyZXRl
X2Rpc3RyaWJ1dGlvbjxpbnQ2NF90PiBkaXN0KHsxLjAsIDIuMCwgMy4wLCA1LjAsIDIuMH0pOwor
ICAgIEVYUEVDVF9FUSgwLCBkaXN0Lm1pbigpKTsKKyAgICBFWFBFQ1RfRVEoNCwgZGlzdC5tYXgo
KSk7CisgICAgZm9yIChhdXRvJiB2IDogb3V0cHV0KSB7CisgICAgICB2ID0gZGlzdCh1cmJnKTsK
KyAgICB9CisgICAgRVhQRUNUX0VRKDEyLCB1cmJnLmludm9jYXRpb25zKCkpOworICB9CisgIEVY
UEVDVF9USEFUKG91dHB1dCwgdGVzdGluZzo6RWxlbWVudHNBcmUoMywgMywgMCwgMywgMCwgNCkp
OworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXN0cmli
dXRpb25fZm9ybWF0X3RyYWl0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbl9mb3JtYXRf
dHJhaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNmMjhjOTA2
OTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbl9mb3JtYXRf
dHJhaXRzLmgKQEAgLTAsMCArMSwyNDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJz
ZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisjaWZuZGVmIEFCU0xfUkFORE9NX0RJU1RSSUJVVElPTl9GT1JN
QVRfVFJBSVRTX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0RJU1RSSUJVVElPTl9GT1JNQVRfVFJB
SVRTX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8
dHlwZWluZm8+CisKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9y
YW5kb20vYmV0YV9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9leHBvbmVu
dGlhbF9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0
cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9sb2dfdW5pZm9ybV9pbnRfZGlzdHJp
YnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRpb24uaCIK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS91bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIKKyNpbmNs
dWRlICJhYnNsL3JhbmRvbS91bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vemlwZl9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
c3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfam9pbi5oIgorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvc3Bhbi5o
IgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8g
U2NhbGFyVHlwZU5hbWUgZGVmaW5lcyBhIHByZWZlcnJlZCBoaWVyYXJjaHkgb2YgcHJlZmVycmVk
IHR5cGUgbmFtZXMgZm9yCisvLyBzY2FsYXJzLCBhbmQgaXMgZXZhbHVhdGVkIGF0IGNvbXBpbGUg
dGltZSBmb3IgdGhlIHNwZWNpZmljIHR5cGUKKy8vIHNwZWNpYWxpemF0aW9uLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgY29uc3QgY2hhciogU2NhbGFyVHlwZU5hbWUoKSB7Cisg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxUPigpIHx8IHN0ZDo6aXNfZmxvYXRpbmdf
cG9pbnQ8VD4oKSwgIiIpOworICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgcmV0dXJuCisgICAg
ICAgIHN0ZDo6aXNfc2FtZTxULCBmbG9hdD46OnZhbHVlID8gImZsb2F0IiA6CisgICAgICAgIHN0
ZDo6aXNfc2FtZTxULCBkb3VibGU+Ojp2YWx1ZSA/ICJkb3VibGUiIDoKKyAgICAgICAgc3RkOjpp
c19zYW1lPFQsIGxvbmcgZG91YmxlPjo6dmFsdWUgPyAibG9uZyBkb3VibGUiIDoKKyAgICAgICAg
c3RkOjppc19zYW1lPFQsIGJvb2w+Ojp2YWx1ZSA/ICJib29sIiA6CisgICAgICAgIHN0ZDo6aXNf
c2lnbmVkPFQ+Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gMSA/ICJpbnQ4X3QiIDoKKyAgICAgICAg
c3RkOjppc19zaWduZWQ8VD46OnZhbHVlICYmIHNpemVvZihUKSA9PSAyID8gImludDE2X3QiIDoK
KyAgICAgICAgc3RkOjppc19zaWduZWQ8VD46OnZhbHVlICYmIHNpemVvZihUKSA9PSA0ID8gImlu
dDMyX3QiIDoKKyAgICAgICAgc3RkOjppc19zaWduZWQ8VD46OnZhbHVlICYmIHNpemVvZihUKSA9
PSA4ID8gImludDY0X3QiIDoKKyAgICAgICAgc3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUgJiYg
c2l6ZW9mKFQpID09IDEgPyAidWludDhfdCIgOgorICAgICAgICBzdGQ6OmlzX3Vuc2lnbmVkPFQ+
Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gMiA/ICJ1aW50MTZfdCIgOgorICAgICAgICBzdGQ6Omlz
X3Vuc2lnbmVkPFQ+Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gNCA/ICJ1aW50MzJfdCIgOgorICAg
ICAgICBzdGQ6OmlzX3Vuc2lnbmVkPFQ+Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gOCA/ICJ1aW50
NjRfdCIgOgorICAgICAgICAgICAgInVuZGVmaW5lZCI7CisgIC8vIGNsYW5nLWZvcm1hdCBvbgor
CisgIC8vIE5PVEU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHR5cGVpZChUKS5uYW1lKCksIGJ1
dCB0aGF0J3MgYW4KKyAgLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZCBhdHRyaWJ1dGUgd2hpY2gg
ZG9lcyBub3QgbmVjZXNzYXJpbHkKKyAgLy8gY29ycmVzcG9uZCB0byBhIG5hbWUuIFdlIGNvdWxk
IHBvdGVudGlhbGx5IGRlbWFuZ2xlIGl0CisgIC8vIHVzaW5nLCBlLmcuIGFiaTo6X19jeGFfZGVt
YW5nbGUuCit9CisKKy8vIERpc3RyaWJ1dGlvbiB0cmFpdHMgdXNlZCBieSBEaXN0cmlidXRpb25D
YWxsZXIgYW5kIGludGVybmFsIGltcGxlbWVudGF0aW9uCisvLyBkZXRhaWxzIG9mIHRoZSBtb2Nr
aW5nIGZyYW1ld29yay4KKy8qCitzdHJ1Y3QgRGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzIHsKKyAg
IC8vIFJldHVybnMgdGhlIHBhcmFtZXRlcml6ZWQgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uIGZ1
bmN0aW9uLgorICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBGdW5jdGlvbk5hbWUoKQor
ICAgLy8gRm9ybWF0IERpc3RyVCBwYXJhbWV0ZXJzLgorICAgc3RhdGljIHN0ZDo6c3RyaW5nIEZv
cm1hdEFyZ3MoRGlzdHJUJiBkaXN0KTsKKyAgIC8vIEZvcm1hdCBEaXN0clQ6OnJlc3VsdF90eXBl
IHJlc3VsdHMuCisgICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0UmVzdWx0cyhEaXN0clQmIGRp
c3QpOworfTsKKyovCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGlzdHJUPgorc3RydWN0IERpc3RyaWJ1
dGlvbkZvcm1hdFRyYWl0czsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFI+CitzdHJ1Y3QgRGlzdHJp
YnV0aW9uRm9ybWF0VHJhaXRzPGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxSPj4gewor
ICB1c2luZyBkaXN0cmlidXRpb25fdCA9IGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxS
PjsKKyAgdXNpbmcgcmVzdWx0X3QgPSB0eXBlbmFtZSBkaXN0cmlidXRpb25fdDo6cmVzdWx0X3R5
cGU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBOYW1lKCkgeyByZXR1cm4gIlVu
aWZvcm0iOyB9CisKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZ1bmN0aW9uTmFtZSgpIHsKKyAgICBy
ZXR1cm4gYWJzbDo6U3RyQ2F0KE5hbWUoKSwgIjwiLCBTY2FsYXJUeXBlTmFtZTxSPigpLCAiPiIp
OworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRBcmdzKGNvbnN0IGRpc3RyaWJ1dGlv
bl90JiBkKSB7CisgICAgcmV0dXJuIGFic2w6OlN0ckNhdCgiYWJzbDo6SW50ZXJ2YWxDbG9zZWRD
bG9zZWQsICIsIChkLm1pbikoKSwgIiwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIChkLm1h
eCkoKSk7CisgIH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFJlc3VsdHMoYWJzbDo6U3Bh
bjxjb25zdCByZXN1bHRfdD4gcmVzdWx0cykgeworICAgIHJldHVybiBhYnNsOjpTdHJKb2luKHJl
c3VsdHMsICIsICIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KK3N0cnVjdCBE
aXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8YWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxS
Pj4geworICB1c2luZyBkaXN0cmlidXRpb25fdCA9IGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb248Uj47CisgIHVzaW5nIHJlc3VsdF90ID0gdHlwZW5hbWUgZGlzdHJpYnV0aW9uX3Q6OnJl
c3VsdF90eXBlOworCisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogTmFtZSgpIHsgcmV0
dXJuICJVbmlmb3JtIjsgfQorCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGdW5jdGlvbk5hbWUoKSB7
CisgICAgcmV0dXJuIGFic2w6OlN0ckNhdChOYW1lKCksICI8IiwgU2NhbGFyVHlwZU5hbWU8Uj4o
KSwgIj4iKTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0QXJncyhjb25zdCBkaXN0
cmlidXRpb25fdCYgZCkgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoKGQubWluKSgpLCAiLCAi
LCAoZC5tYXgpKCkpOworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRSZXN1bHRzKGFi
c2w6OlNwYW48Y29uc3QgcmVzdWx0X3Q+IHJlc3VsdHMpIHsKKyAgICByZXR1cm4gYWJzbDo6U3Ry
Sm9pbihyZXN1bHRzLCAiLCAiKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFI+Citz
dHJ1Y3QgRGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzPGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1
dGlvbjxSPj4geworICB1c2luZyBkaXN0cmlidXRpb25fdCA9IGFic2w6OmV4cG9uZW50aWFsX2Rp
c3RyaWJ1dGlvbjxSPjsKKyAgdXNpbmcgcmVzdWx0X3QgPSB0eXBlbmFtZSBkaXN0cmlidXRpb25f
dDo6cmVzdWx0X3R5cGU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBOYW1lKCkg
eyByZXR1cm4gIkV4cG9uZW50aWFsIjsgfQorCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGdW5jdGlv
bk5hbWUoKSB7CisgICAgcmV0dXJuIGFic2w6OlN0ckNhdChOYW1lKCksICI8IiwgU2NhbGFyVHlw
ZU5hbWU8Uj4oKSwgIj4iKTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0QXJncyhj
b25zdCBkaXN0cmlidXRpb25fdCYgZCkgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoZC5sYW1i
ZGEoKSk7CisgIH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFJlc3VsdHMoYWJzbDo6U3Bh
bjxjb25zdCByZXN1bHRfdD4gcmVzdWx0cykgeworICAgIHJldHVybiBhYnNsOjpTdHJKb2luKHJl
c3VsdHMsICIsICIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KK3N0cnVjdCBE
aXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8YWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248Uj4+IHsK
KyAgdXNpbmcgZGlzdHJpYnV0aW9uX3QgPSBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxSPjsK
KyAgdXNpbmcgcmVzdWx0X3QgPSB0eXBlbmFtZSBkaXN0cmlidXRpb25fdDo6cmVzdWx0X3R5cGU7
CisKKyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBOYW1lKCkgeyByZXR1cm4gIlBvaXNz
b24iOyB9CisKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZ1bmN0aW9uTmFtZSgpIHsKKyAgICByZXR1
cm4gYWJzbDo6U3RyQ2F0KE5hbWUoKSwgIjwiLCBTY2FsYXJUeXBlTmFtZTxSPigpLCAiPiIpOwor
ICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRBcmdzKGNvbnN0IGRpc3RyaWJ1dGlvbl90
JiBkKSB7CisgICAgcmV0dXJuIGFic2w6OlN0ckNhdChkLm1lYW4oKSk7CisgIH0KKyAgc3RhdGlj
IHN0ZDo6c3RyaW5nIEZvcm1hdFJlc3VsdHMoYWJzbDo6U3Bhbjxjb25zdCByZXN1bHRfdD4gcmVz
dWx0cykgeworICAgIHJldHVybiBhYnNsOjpTdHJKb2luKHJlc3VsdHMsICIsICIpOworICB9Cit9
OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IERpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxhYnNsOjpi
ZXJub3VsbGlfZGlzdHJpYnV0aW9uPiB7CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gYWJzbDo6
YmVybm91bGxpX2Rpc3RyaWJ1dGlvbjsKKyAgdXNpbmcgcmVzdWx0X3QgPSB0eXBlbmFtZSBkaXN0
cmlidXRpb25fdDo6cmVzdWx0X3R5cGU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBOYW1lKCkgeyByZXR1cm4gIkJlcm5vdWxsaSI7IH0KKworICBzdGF0aWMgY29uc3RleHByIGNv
bnN0IGNoYXIqIEZ1bmN0aW9uTmFtZSgpIHsgcmV0dXJuIE5hbWUoKTsgfQorICBzdGF0aWMgc3Rk
OjpzdHJpbmcgRm9ybWF0QXJncyhjb25zdCBkaXN0cmlidXRpb25fdCYgZCkgeworICAgIHJldHVy
biBhYnNsOjpTdHJDYXQoZC5wKCkpOworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRS
ZXN1bHRzKGFic2w6OlNwYW48Y29uc3QgcmVzdWx0X3Q+IHJlc3VsdHMpIHsKKyAgICByZXR1cm4g
YWJzbDo6U3RySm9pbihyZXN1bHRzLCAiLCAiKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFI+CitzdHJ1Y3QgRGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzPGFic2w6OmJldGFfZGlzdHJp
YnV0aW9uPFI+PiB7CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gYWJzbDo6YmV0YV9kaXN0cmli
dXRpb248Uj47CisgIHVzaW5nIHJlc3VsdF90ID0gdHlwZW5hbWUgZGlzdHJpYnV0aW9uX3Q6OnJl
c3VsdF90eXBlOworCisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogTmFtZSgpIHsgcmV0
dXJuICJCZXRhIjsgfQorCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGdW5jdGlvbk5hbWUoKSB7Cisg
ICAgcmV0dXJuIGFic2w6OlN0ckNhdChOYW1lKCksICI8IiwgU2NhbGFyVHlwZU5hbWU8Uj4oKSwg
Ij4iKTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0QXJncyhjb25zdCBkaXN0cmli
dXRpb25fdCYgZCkgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoZC5hbHBoYSgpLCAiLCAiLCBk
LmJldGEoKSk7CisgIH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFJlc3VsdHMoYWJzbDo6
U3Bhbjxjb25zdCByZXN1bHRfdD4gcmVzdWx0cykgeworICAgIHJldHVybiBhYnNsOjpTdHJKb2lu
KHJlc3VsdHMsICIsICIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KK3N0cnVj
dCBEaXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8YWJzbDo6emlwZl9kaXN0cmlidXRpb248Uj4+IHsK
KyAgdXNpbmcgZGlzdHJpYnV0aW9uX3QgPSBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjxSPjsKKyAg
dXNpbmcgcmVzdWx0X3QgPSB0eXBlbmFtZSBkaXN0cmlidXRpb25fdDo6cmVzdWx0X3R5cGU7CisK
KyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBOYW1lKCkgeyByZXR1cm4gIlppcGYiOyB9
CisKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZ1bmN0aW9uTmFtZSgpIHsKKyAgICByZXR1cm4gYWJz
bDo6U3RyQ2F0KE5hbWUoKSwgIjwiLCBTY2FsYXJUeXBlTmFtZTxSPigpLCAiPiIpOworICB9Cisg
IHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRBcmdzKGNvbnN0IGRpc3RyaWJ1dGlvbl90JiBkKSB7
CisgICAgcmV0dXJuIGFic2w6OlN0ckNhdChkLmsoKSwgIiwgIiwgZC52KCksICIsICIsIGQucSgp
KTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0UmVzdWx0cyhhYnNsOjpTcGFuPGNv
bnN0IHJlc3VsdF90PiByZXN1bHRzKSB7CisgICAgcmV0dXJuIGFic2w6OlN0ckpvaW4ocmVzdWx0
cywgIiwgIik7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSPgorc3RydWN0IERpc3Ry
aWJ1dGlvbkZvcm1hdFRyYWl0czxhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb248Uj4+IHsKKyAg
dXNpbmcgZGlzdHJpYnV0aW9uX3QgPSBhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb248Uj47Cisg
IHVzaW5nIHJlc3VsdF90ID0gdHlwZW5hbWUgZGlzdHJpYnV0aW9uX3Q6OnJlc3VsdF90eXBlOwor
CisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogTmFtZSgpIHsgcmV0dXJuICJHYXVzc2lh
biI7IH0KKworICBzdGF0aWMgc3RkOjpzdHJpbmcgRnVuY3Rpb25OYW1lKCkgeworICAgIHJldHVy
biBhYnNsOjpTdHJDYXQoTmFtZSgpLCAiPCIsIFNjYWxhclR5cGVOYW1lPFI+KCksICI+Iik7Cisg
IH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEFyZ3MoY29uc3QgZGlzdHJpYnV0aW9uX3Qm
IGQpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RySm9pbihzdGQ6Om1ha2VfdHVwbGUoZC5tZWFuKCks
IGQuc3RkZGV2KCkpLCAiLCAiKTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0UmVz
dWx0cyhhYnNsOjpTcGFuPGNvbnN0IHJlc3VsdF90PiByZXN1bHRzKSB7CisgICAgcmV0dXJuIGFi
c2w6OlN0ckpvaW4ocmVzdWx0cywgIiwgIik7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBSPgorc3RydWN0IERpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxhYnNsOjpsb2dfdW5pZm9ybV9p
bnRfZGlzdHJpYnV0aW9uPFI+PiB7CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gYWJzbDo6bG9n
X3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxSPjsKKyAgdXNpbmcgcmVzdWx0X3QgPSB0eXBlbmFt
ZSBkaXN0cmlidXRpb25fdDo6cmVzdWx0X3R5cGU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBjaGFyKiBOYW1lKCkgeyByZXR1cm4gIkxvZ1VuaWZvcm0iOyB9CisKKyAgc3RhdGljIHN0ZDo6
c3RyaW5nIEZ1bmN0aW9uTmFtZSgpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RyQ2F0KE5hbWUoKSwg
IjwiLCBTY2FsYXJUeXBlTmFtZTxSPigpLCAiPiIpOworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBGb3JtYXRBcmdzKGNvbnN0IGRpc3RyaWJ1dGlvbl90JiBkKSB7CisgICAgcmV0dXJuIGFic2w6
OlN0ckpvaW4oc3RkOjptYWtlX3R1cGxlKChkLm1pbikoKSwgKGQubWF4KSgpLCBkLmJhc2UoKSks
ICIsICIpOworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRSZXN1bHRzKGFic2w6OlNw
YW48Y29uc3QgcmVzdWx0X3Q+IHJlc3VsdHMpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RySm9pbihy
ZXN1bHRzLCAiLCAiKTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5h
bAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9ESVNUUklC
VVRJT05fRk9STUFUX1RSQUlUU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc3RyaWJ1
dGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXN0cmlidXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ4YmEzY2RiZTg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbnMuaApAQCAtMCwwICsxLDQ0MiBAQAorLy8gQ29weXJpZ2h0
IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vIEZpbGU6IGRpc3RyaWJ1dGlvbnMuaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBUaGlzIGhlYWRlciBkZWZpbmVzIGZ1bmN0aW9ucyByZXByZXNlbnRpbmcgZGlzdHJpYnV0aW9u
cywgd2hpY2ggeW91IHVzZSBpbgorLy8gY29tYmluYXRpb24gd2l0aCBhbiBBYnNlaWwgcmFuZG9t
IGJpdCBnZW5lcmF0b3IgdG8gcHJvZHVjZSByYW5kb20gdmFsdWVzCisvLyBhY2NvcmRpbmcgdG8g
dGhlIHJ1bGVzIG9mIHRoYXQgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRoZSBBYnNlaWwgcmFuZG9t
IGxpYnJhcnkgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGRpc3RyaWJ1dGlvbnMgd2l0aGluIHRoaXMK
Ky8vIGZpbGU6CisvLworLy8gICAqIGBhYnNsOjpVbmlmb3JtYCBmb3IgdW5pZm9ybSAoY29uc3Rh
bnQpIGRpc3RyaWJ1dGlvbnMgaGF2aW5nIGNvbnN0YW50CisvLyAgICAgcHJvYmFiaWxpdHkKKy8v
ICAgKiBgYWJzbDo6QmVybm91bGxpYCBmb3IgZGlzY3JldGUgZGlzdHJpYnV0aW9ucyBoYXZpbmcg
ZXhhY3RseSB0d28gb3V0Y29tZXMKKy8vICAgKiBgYWJzbDo6QmV0YWAgZm9yIGNvbnRpbnVvdXMg
ZGlzdHJpYnV0aW9ucyBwYXJhbWV0ZXJpemVkIHRocm91Z2ggdHdvCisvLyAgICAgZnJlZSBwYXJh
bWV0ZXJzCisvLyAgICogYGFic2w6OkV4cG9uZW50aWFsYCBmb3IgZGlzY3JldGUgZGlzdHJpYnV0
aW9ucyBvZiBldmVudHMgb2NjdXJyaW5nCisvLyAgICAgY29udGludW91c2x5IGFuZCBpbmRlcGVu
ZGVudGx5IGF0IGEgY29uc3RhbnQgYXZlcmFnZSByYXRlCisvLyAgICogYGFic2w6OkdhdXNzaWFu
YCAoYWxzbyBrbm93biBhcyAibm9ybWFsIGRpc3RyaWJ1dGlvbnMiKSBmb3IgY29udGludW91cwor
Ly8gICAgIGRpc3RyaWJ1dGlvbnMgdXNpbmcgYW4gYXNzb2NpYXRlZCBxdWFkcmF0aWMgZnVuY3Rp
b24KKy8vICAgKiBgYWJzbDo6TG9nVW5pZm9ybWAgZm9yIGNvbnRpbnVvdXMgdW5pZm9ybSBkaXN0
cmlidXRpb25zIHdoZXJlIHRoZSBsb2cKKy8vICAgICB0byB0aGUgZ2l2ZW4gYmFzZSBvZiBhbGwg
dmFsdWVzIGlzIHVuaWZvcm0KKy8vICAgKiBgYWJzbDo6UG9pc3NvbmAgZm9yIGRpc2NyZXRlIHBy
b2JhYmlsaXR5IGRpc3RyaWJ1dGlvbnMgdGhhdCBleHByZXNzIHRoZQorLy8gICAgIHByb2JhYmls
aXR5IG9mIGEgZ2l2ZW4gbnVtYmVyIG9mIGV2ZW50cyBvY2N1cnJpbmcgd2l0aGluIGEgZml4ZWQg
aW50ZXJ2YWwKKy8vICAgKiBgYWJzbDo6WmlwZmAgZm9yIGRpc2NyZXRlIHByb2JhYmlsaXR5IGRp
c3RyaWJ1dGlvbnMgY29tbW9ubHkgdXNlZCBmb3IKKy8vICAgICBtb2RlbGxpbmcgb2YgcmFyZSBl
dmVudHMKKy8vCisvLyBQcmVmZXIgdXNlIG9mIHRoZXNlIGRpc3RyaWJ1dGlvbiBmdW5jdGlvbiBj
bGFzc2VzIG92ZXIgbWFudWFsIGNvbnN0cnVjdGlvbiBvZgorLy8geW91ciBvd24gZGlzdHJpYnV0
aW9uIGNsYXNzZXMsIGFzIGl0IGFsbG93cyBsaWJyYXJ5IG1haW50YWluZXJzIGdyZWF0ZXIKKy8v
IGZsZXhpYmlsaXR5IHRvIGNoYW5nZSB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBpbiB0
aGUgZnV0dXJlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0RJU1RSSUJVVElPTlNfSF8KKyNkZWZp
bmUgQUJTTF9SQU5ET01fRElTVFJJQlVUSU9OU19IXworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxyYW5kb20+Cisj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvaW5s
aW5lX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vYmVybm91bGxpX2Rpc3RyaWJ1
dGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2JldGFfZGlzdHJpYnV0aW9uLmgiCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vZGlzdHJpYnV0aW9uX2Zvcm1hdF90cmFpdHMuaCIKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS9leHBvbmVudGlhbF9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNs
L3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9p
bnRlcm5hbC9kaXN0cmlidXRpb25zLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvdW5pZm9ybV9oZWxwZXIuaCIgIC8vIElXWVUgcHJhZ21h
OiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9sb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0
aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRpb24uaCIKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS91bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS91bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vemlwZl9kaXN0cmlidXRpb24uaCIKKworbmFtZXNwYWNlIGFic2wgeworCitBQlNM
X0lOVEVSTkFMX0lOTElORV9DT05TVEVYUFIocmFuZG9tX2ludGVybmFsOjpJbnRlcnZhbENsb3Nl
ZENsb3NlZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJ2YWxDbG9zZWRD
bG9zZWQsIHt9KTsKK0FCU0xfSU5URVJOQUxfSU5MSU5FX0NPTlNURVhQUihyYW5kb21faW50ZXJu
YWw6OkludGVydmFsQ2xvc2VkQ2xvc2VkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRlcnZhbENsb3NlZCwge30pOworQUJTTF9JTlRFUk5BTF9JTkxJTkVfQ09OU1RFWFBSKHJh
bmRvbV9pbnRlcm5hbDo6SW50ZXJ2YWxDbG9zZWRPcGVuVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnRlcnZhbENsb3NlZE9wZW4sIHt9KTsKK0FCU0xfSU5URVJOQUxfSU5MSU5F
X0NPTlNURVhQUihyYW5kb21faW50ZXJuYWw6OkludGVydmFsT3Blbk9wZW5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEludGVydmFsT3Blbk9wZW4sIHt9KTsKK0FCU0xfSU5URVJO
QUxfSU5MSU5FX0NPTlNURVhQUihyYW5kb21faW50ZXJuYWw6OkludGVydmFsT3Blbk9wZW5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVydmFsT3Blbiwge30pOworQUJTTF9J
TlRFUk5BTF9JTkxJTkVfQ09OU1RFWFBSKHJhbmRvbV9pbnRlcm5hbDo6SW50ZXJ2YWxPcGVuQ2xv
c2VkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnZhbE9wZW5DbG9zZWQs
IHt9KTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6OlVuaWZvcm08VD4odGFn
LCBiaXRnZW4sIGxvLCBoaSkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gYGFic2w6
OlVuaWZvcm0oKWAgcHJvZHVjZXMgcmFuZG9tIHZhbHVlcyBvZiB0eXBlIGBUYCB1bmlmb3JtbHkg
ZGlzdHJpYnV0ZWQgaW4KKy8vIGEgZGVmaW5lZCBpbnRlcnZhbCB7bG8sIGhpfS4gVGhlIGludGVy
dmFsIGB0YWdgIGRlZmluZXMgdGhlIHR5cGUgb2YgaW50ZXJ2YWwKKy8vIHdoaWNoIHNob3VsZCBi
ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwb3NzaWJsZSB2YWx1ZXM6CisvLworLy8gICAqIGBhYnNs
OjpJbnRlcnZhbE9wZW5PcGVuYAorLy8gICAqIGBhYnNsOjpJbnRlcnZhbE9wZW5DbG9zZWRgCisv
LyAgICogYGFic2w6OkludGVydmFsQ2xvc2VkT3BlbmAKKy8vICAgKiBgYWJzbDo6SW50ZXJ2YWxD
bG9zZWRDbG9zZWRgCisvLworLy8gd2hlcmUgIm9wZW4iIHJlZmVycyB0byBhbiBleGNsdXNpdmUg
dmFsdWUgKGV4Y2x1ZGVkKSBmcm9tIHRoZSBvdXRwdXQsIHdoaWxlCisvLyAiY2xvc2VkIiByZWZl
cnMgdG8gYW4gaW5jbHVzaXZlIHZhbHVlIChpbmNsdWRlZCkgZnJvbSB0aGUgb3V0cHV0LgorLy8K
Ky8vIEluIHRoZSBhYnNlbmNlIG9mIGFuIGV4cGxpY2l0IHJldHVybiB0eXBlIGBUYCwgYGFic2w6
OlVuaWZvcm0oKWAgd2lsbCBkZWR1Y2UKKy8vIHRoZSByZXR1cm4gdHlwZSBiYXNlZCBvbiB0aGUg
cHJvdmlkZWQgZW5kcG9pbnQgYXJndW1lbnRzIHtBIGxvLCBCIGhpfS4KKy8vIEdpdmVuIHRoZXNl
IGVuZHBvaW50cywgb25lIG9mIHtBLCBCfSB3aWxsIGJlIGNob3NlbiBhcyB0aGUgcmV0dXJuIHR5
cGUsIGlmCisvLyBhIHR5cGUgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIGludG8gdGhlIG90
aGVyIGluIGEgbG9zc2xlc3Mgd2F5LiBUaGUKKy8vIGxhY2sgb2YgYW55IHN1Y2ggaW1wbGNpdCBj
b252ZXJzaW9uIGJldHdlZW4ge0EsIEJ9IHdpbGwgcHJvZHVjZSBhCisvLyBjb21waWxlLXRpbWUg
ZXJyb3IKKy8vCisvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pZm9ybV9k
aXN0cmlidXRpb25fKGNvbnRpbnVvdXMpCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6
OkJpdEdlbiBiaXRnZW47CisvLworLy8gICAvLyBQcm9kdWNlIGEgcmFuZG9tIGZsb2F0IHZhbHVl
IGJldHdlZW4gMC4wIGFuZCAxLjAsIGluY2x1c2l2ZQorLy8gICBhdXRvIHggPSBhYnNsOjpVbmlm
b3JtKGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2VkLCBiaXRnZW4sIDAuMGYsIDEuMGYpOworLy8K
Ky8vICAgLy8gVGhlIG1vc3QgY29tbW9uIGludGVydmFsIG9mIGBhYnNsOjpJbnRlcnZhbENsb3Nl
ZE9wZW5gIGlzIGF2YWlsYWJsZSBieQorLy8gICAvLyBkZWZhdWx0OgorLy8KKy8vICAgYXV0byB4
ID0gYWJzbDo6VW5pZm9ybShiaXRnZW4sIDAuMGYsIDEuMGYpOworLy8KKy8vICAgLy8gUmV0dXJu
LXR5cGVzIGFyZSB0eXBpY2FsbHkgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLCBob3dldmVy
IGNhbGxlcnMKKy8vICAgLy8gY2FuIG9wdGlvbmFsbHkgcHJvdmlkZSBhbiBleHBsaWNpdCByZXR1
cm4tdHlwZSB0byB0aGUgdGVtcGxhdGUuCisvLworLy8gICBhdXRvIHggPSBhYnNsOjpVbmlmb3Jt
PGZsb2F0PihiaXRnZW4sIDAsIDEpOworLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBSID0gdm9pZCwg
dHlwZW5hbWUgVGFnVHlwZSwgdHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9p
Zl90PCFzdGQ6OmlzX3NhbWU8Uiwgdm9pZD46OnZhbHVlLCBSPiAgLy8KK1VuaWZvcm0oVGFnVHlw
ZSB0YWcsCisgICAgICAgIFVSQkcmJiB1cmJnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNl
cykKKyAgICAgICAgUiBsbywgUiBoaSkgeworICB1c2luZyBnZW5fdCA9IGFic2w6OmRlY2F5X3Q8
VVJCRz47CisgIHJldHVybiByYW5kb21faW50ZXJuYWw6OlVuaWZvcm1JbXBsPFIsIFRhZ1R5cGUs
IGdlbl90Pih0YWcsIHVyYmcsIGxvLCBoaSk7Cit9CisKKy8vIGFic2w6OlVuaWZvcm08VD4oYml0
Z2VuLCBsbywgaGkpCisvLworLy8gT3ZlcmxvYWQgb2YgYFVuaWZvcm0oKWAgdXNpbmcgdGhlIGRl
ZmF1bHQgY2xvc2VkLW9wZW4gaW50ZXJ2YWwgb2YgW2xvLCBoaSksCisvLyBhbmQgcmV0dXJuaW5n
IHZhbHVlcyBvZiB0eXBlIGBUYAordGVtcGxhdGUgPHR5cGVuYW1lIFIgPSB2b2lkLCB0eXBlbmFt
ZSBVUkJHPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxSLCB2b2lk
Pjo6dmFsdWUsIFI+ICAvLworVW5pZm9ybShVUkJHJiYgdXJiZywgIC8vIE5PTElOVChydW50aW1l
L3JlZmVyZW5jZXMpCisgICAgICAgIFIgbG8sIFIgaGkpIHsKKyAgY29uc3RleHByIGF1dG8gdGFn
ID0gYWJzbDo6SW50ZXJ2YWxDbG9zZWRPcGVuOworICB1c2luZyB0YWdfdCA9IGRlY2x0eXBlKHRh
Zyk7CisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsKKworICByZXR1cm4gcmFu
ZG9tX2ludGVybmFsOjpVbmlmb3JtSW1wbDxSLCB0YWdfdCwgZ2VuX3Q+KHRhZywgdXJiZywgbG8s
IGhpKTsKK30KKworLy8gYWJzbDo6VW5pZm9ybSh0YWcsIGJpdGdlbiwgbG8sIGhpKQorLy8KKy8v
IE92ZXJsb2FkIG9mIGBVbmlmb3JtKClgIHVzaW5nIGRpZmZlcmVudCAoYnV0IGNvbXBhdGlibGUp
IGxvLCBoaSB0eXBlcy4gTm90ZQorLy8gdGhhdCBhIGNvbXBpbGUtZXJyb3Igd2lsbCByZXN1bHQg
aWYgdGhlIHJldHVybiB0eXBlIGNhbm5vdCBiZSBkZWR1Y2VkCisvLyBjb3JyZWN0bHkgZnJvbSB0
aGUgcGFzc2VkIHR5cGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFIgPSB2b2lkLCB0eXBlbmFtZSBU
YWdUeXBlLCB0eXBlbmFtZSBVUkJHLCB0eXBlbmFtZSBBLAorICAgICAgICAgIHR5cGVuYW1lIEI+
Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Uiwgdm9pZD46OnZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2ludGVybmFsOjp1bmlmb3JtX2lu
ZmVycmVkX3JldHVybl90PEEsIEI+PgorVW5pZm9ybShUYWdUeXBlIHRhZywKKyAgICAgICAgVVJC
RyYmIHVyYmcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICBBIGxvLCBC
IGhpKSB7CisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsKKyAgdXNpbmcgcmV0
dXJuX3QgPSB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OnVuaWZvcm1faW5mZXJyZWRfcmV0dXJu
X3Q8QSwgQj47CisKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6VW5pZm9ybUltcGw8cmV0dXJu
X3QsIFRhZ1R5cGUsIGdlbl90Pih0YWcsIHVyYmcsIGxvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpKTsKK30KKworLy8g
YWJzbDo6VW5pZm9ybShiaXRnZW4sIGxvLCBoaSkKKy8vCisvLyBPdmVybG9hZCBvZiBgVW5pZm9y
bSgpYCB1c2luZyBkaWZmZXJlbnQgKGJ1dCBjb21wYXRpYmxlKSBsbywgaGkgdHlwZXMgYW5kIHRo
ZQorLy8gZGVmYXVsdCBjbG9zZWQtb3BlbiBpbnRlcnZhbCBvZiBbbG8sIGhpKS4gTm90ZSB0aGF0
IGEgY29tcGlsZS1lcnJvciB3aWxsCisvLyByZXN1bHQgaWYgdGhlIHJldHVybiB0eXBlIGNhbm5v
dCBiZSBkZWR1Y2VkIGNvcnJlY3RseSBmcm9tIHRoZSBwYXNzZWQgdHlwZXMuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUiA9IHZvaWQsIHR5cGVuYW1lIFVSQkcsIHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+
Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Uiwgdm9pZD46OnZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2ludGVybmFsOjp1bmlmb3JtX2lu
ZmVycmVkX3JldHVybl90PEEsIEI+PgorVW5pZm9ybShVUkJHJiYgdXJiZywgIC8vIE5PTElOVChy
dW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgIEEgbG8sIEIgaGkpIHsKKyAgY29uc3RleHByIGF1
dG8gdGFnID0gYWJzbDo6SW50ZXJ2YWxDbG9zZWRPcGVuOworICB1c2luZyB0YWdfdCA9IGRlY2x0
eXBlKHRhZyk7CisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsKKyAgdXNpbmcg
cmV0dXJuX3QgPSB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OnVuaWZvcm1faW5mZXJyZWRfcmV0
dXJuX3Q8QSwgQj47CisKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6VW5pZm9ybUltcGw8cmV0
dXJuX3QsIHRhZ190LCBnZW5fdD4odGFnLCB1cmJnLCBsbywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGkpOworfQorCisvLyBh
YnNsOjpVbmlmb3JtPHVuc2lnbmVkIFQ+KGJpdGdlbikKKy8vCisvLyBPdmVybG9hZCBvZiBVbmlm
b3JtKCkgdXNpbmcgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIG9mIGEgZ2l2ZW4gdHlw
ZQorLy8gYFRgICh3aGljaCBtdXN0IGJlIHVuc2lnbmVkKSwgcmV0dXJuaW5nIGEgdmFsdWUgb2Yg
dHlwZSBgdW5zaWduZWQgVGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBVUkJHPgor
dHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2lnbmVkPFI+Ojp2YWx1ZSwgUj4g
IC8vCitVbmlmb3JtKFVSQkcmJiB1cmJnKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2Vz
KQorICBjb25zdGV4cHIgYXV0byB0YWcgPSBhYnNsOjpJbnRlcnZhbENsb3NlZENsb3NlZDsKKyAg
Y29uc3RleHByIGF1dG8gbG8gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFI+Ojpsb3dlc3QoKTsKKyAg
Y29uc3RleHByIGF1dG8gaGkgPSAoc3RkOjpudW1lcmljX2xpbWl0czxSPjo6bWF4KSgpOworICB1
c2luZyB0YWdfdCA9IGRlY2x0eXBlKHRhZyk7CisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlf
dDxVUkJHPjsKKworICByZXR1cm4gcmFuZG9tX2ludGVybmFsOjpVbmlmb3JtSW1wbDxSLCB0YWdf
dCwgZ2VuX3Q+KHRhZywgdXJiZywgbG8sIGhpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vIGFic2w6OkJlcm5vdWxsaShiaXRnZW4sIHApCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIGBhYnNsOjpCZXJub3VsbGlgIHByb2R1Y2VzIGEgcmFuZG9tIGJvb2xlYW4gdmFs
dWUsIHdpdGggcHJvYmFiaWxpdHkgYHBgCisvLyAod2hlcmUgMC4wIDw9IHAgPD0gMS4wKSBlcXVh
bGluZyBgdHJ1ZWAuCisvLworLy8gUHJlZmVyIGBhYnNsOjpCZXJub3VsbGlgIHRvIHByb2R1Y2Ug
Ym9vbGVhbiB2YWx1ZXMgb3ZlciBvdGhlciBhbHRlcm5hdGl2ZXMKKy8vIHN1Y2ggYXMgY29tcGFy
aW5nIGFuIGBhYnNsOjpVbmlmb3JtKClgIHZhbHVlIHRvIGEgc3BlY2lmaWMgb3V0cHV0LgorLy8K
Ky8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CZXJub3VsbGlfZGlzdHJpYnV0
aW9uCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkJpdEdlbiBiaXRnZW47CisvLyAg
IC4uLgorLy8gICBpZiAoYWJzbDo6QmVybm91bGxpKGJpdGdlbiwgMS4wLzM3MjEuMCkpIHsKKy8v
ICAgICBzdGQ6OmNvdXQgPDwgIkFzdGVyb2lkIGZpZWxkIG5hdmlnYXRpb24gc3VjY2Vzc2Z1bC4i
OworLy8gICB9CisvLwordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Citib29sIEJlcm5vdWxsaShV
UkJHJiYgdXJiZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAg
ICBkb3VibGUgcCkgeworICB1c2luZyBnZW5fdCA9IGFic2w6OmRlY2F5X3Q8VVJCRz47CisgIHVz
aW5nIGRpc3RyaWJ1dGlvbl90ID0gYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbjsKKyAgdXNp
bmcgZm9ybWF0X3QgPSByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxk
aXN0cmlidXRpb25fdD47CisKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9u
Q2FsbGVyPGdlbl90Pjo6dGVtcGxhdGUgQ2FsbDwKKyAgICAgIGRpc3RyaWJ1dGlvbl90LCBmb3Jt
YXRfdD4oJnVyYmcsIHApOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6
QmV0YTxUPihiaXRnZW4sIGFscGhhLCBiZXRhKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
CisvLyBgYWJzbDo6QmV0YWAgcHJvZHVjZXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgZGlzdHJp
YnV0ZWQgaW4gdGhlIGNsb3NlZAorLy8gaW50ZXJ2YWwgWzAsMV0gYW5kIHBhcmFtZXRlcml6ZWQg
YnkgdHdvIHZhbHVlcyBgYWxwaGFgIGFuZCBgYmV0YWAgYXMgcGVyIGEKKy8vIEJldGEgZGlzdHJp
YnV0aW9uLiBgVGAgbXVzdCBiZSBhIGZsb2F0aW5nIHBvaW50IHR5cGUsIGJ1dCBtYXkgYmUgaW5m
ZXJyZWQKKy8vIGZyb20gdGhlIHR5cGVzIG9mIGBhbHBoYWAgYW5kIGBiZXRhYC4KKy8vCisvLyBT
ZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmV0YV9kaXN0cmlidXRpb24uCisvLwor
Ly8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkJpdEdlbiBiaXRnZW47CisvLyAgIC4uLgorLy8g
ICBkb3VibGUgc2FtcGxlID0gYWJzbDo6QmV0YShiaXRnZW4sIDMuMCwgMi4wKTsKKy8vCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGUsIHR5cGVuYW1lIFVSQkc+CitSZWFsVHlwZSBCZXRhKFVS
QkcmJiB1cmJnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAg
UmVhbFR5cGUgYWxwaGEsIFJlYWxUeXBlIGJldGEpIHsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAg
IHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8UmVhbFR5cGU+Ojp2YWx1ZSwKKyAgICAgICJUZW1wbGF0
ZS1hcmd1bWVudCAnUmVhbFR5cGUnIG11c3QgYmUgYSBmbG9hdGluZy1wb2ludCB0eXBlLCBpbiAi
CisgICAgICAiYWJzbDo6QmV0YTxSZWFsVHlwZSwgVVJCRz4oLi4uKSIpOworCisgIHVzaW5nIGdl
bl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsKKyAgdXNpbmcgZGlzdHJpYnV0aW9uX3QgPSB0eXBl
bmFtZSBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT47CisgIHVzaW5nIGZvcm1hdF90
ID0gcmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8ZGlzdHJpYnV0aW9u
X3Q+OworCisgIHJldHVybiByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkNhbGxlcjxnZW5f
dD46OnRlbXBsYXRlIENhbGw8CisgICAgICBkaXN0cmlidXRpb25fdCwgZm9ybWF0X3Q+KCZ1cmJn
LCBhbHBoYSwgYmV0YSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNsOjpF
eHBvbmVudGlhbDxUPihiaXRnZW4sIGxhbWJkYSA9IDEpCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIGBhYnNsOjpFeHBvbmVudGlhbGAgcHJvZHVjZXMgYSBmbG9hdGluZyBwb2ludCBu
dW1iZXIgZm9yIGRpc2NyZXRlCisvLyBkaXN0cmlidXRpb25zIG9mIGV2ZW50cyBvY2N1cnJpbmcg
Y29udGludW91c2x5IGFuZCBpbmRlcGVuZGVudGx5IGF0IGEKKy8vIGNvbnN0YW50IGF2ZXJhZ2Ug
cmF0ZS4gYFRgIG11c3QgYmUgYSBmbG9hdGluZyBwb2ludCB0eXBlLCBidXQgbWF5IGJlIGluZmVy
cmVkCisvLyBmcm9tIHRoZSB0eXBlIG9mIGBsYW1iZGFgLgorLy8KKy8vIFNlZSBodHRwczovL2Vu
Lndpa2lwZWRpYS5vcmcvd2lraS9FeHBvbmVudGlhbF9kaXN0cmlidXRpb24uCisvLworLy8gRXhh
bXBsZToKKy8vCisvLyAgIGFic2w6OkJpdEdlbiBiaXRnZW47CisvLyAgIC4uLgorLy8gICBkb3Vi
bGUgY2FsbF9sZW5ndGggPSBhYnNsOjpFeHBvbmVudGlhbChiaXRnZW4sIDcuMCk7CisvLwordGVt
cGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlLCB0eXBlbmFtZSBVUkJHPgorUmVhbFR5cGUgRXhwb25l
bnRpYWwoVVJCRyYmIHVyYmcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAg
ICAgICAgICAgICAgICAgUmVhbFR5cGUgbGFtYmRhID0gMSkgeworICBzdGF0aWNfYXNzZXJ0KAor
ICAgICAgc3RkOjppc19mbG9hdGluZ19wb2ludDxSZWFsVHlwZT46OnZhbHVlLAorICAgICAgIlRl
bXBsYXRlLWFyZ3VtZW50ICdSZWFsVHlwZScgbXVzdCBiZSBhIGZsb2F0aW5nLXBvaW50IHR5cGUs
IGluICIKKyAgICAgICJhYnNsOjpFeHBvbmVudGlhbDxSZWFsVHlwZSwgVVJCRz4oLi4uKSIpOwor
CisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsKKyAgdXNpbmcgZGlzdHJpYnV0
aW9uX3QgPSB0eXBlbmFtZSBhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248UmVhbFR5cGU+
OworICB1c2luZyBmb3JtYXRfdCA9IHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9uRm9ybWF0
VHJhaXRzPGRpc3RyaWJ1dGlvbl90PjsKKworICByZXR1cm4gcmFuZG9tX2ludGVybmFsOjpEaXN0
cmlidXRpb25DYWxsZXI8Z2VuX3Q+Ojp0ZW1wbGF0ZSBDYWxsPAorICAgICAgZGlzdHJpYnV0aW9u
X3QsIGZvcm1hdF90PigmdXJiZywgbGFtYmRhKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vIGFic2w6OkdhdXNzaWFuPFQ+KGJpdGdlbiwgbWVhbiA9IDAsIHN0ZGRldiA9IDEpCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIGBhYnNsOjpHYXVzc2lhbmAgcHJvZHVjZXMg
YSBmbG9hdGluZyBwb2ludCBudW1iZXIgc2VsZWN0ZWQgZnJvbSB0aGUgR2F1c3NpYW4KKy8vIChp
ZS4gIk5vcm1hbCIpIGRpc3RyaWJ1dGlvbi4gYFRgIG11c3QgYmUgYSBmbG9hdGluZyBwb2ludCB0
eXBlLCBidXQgbWF5IGJlCisvLyBpbmZlcnJlZCBmcm9tIHRoZSB0eXBlcyBvZiBgbWVhbmAgYW5k
IGBzdGRkZXZgLgorLy8KKy8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3Jt
YWxfZGlzdHJpYnV0aW9uCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkJpdEdlbiBi
aXRnZW47CisvLyAgIC4uLgorLy8gICBkb3VibGUgZ2lyYWZmZV9oZWlnaHQgPSBhYnNsOjpHYXVz
c2lhbihiaXRnZW4sIDE2LjMsIDMuMyk7CisvLwordGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBl
LCB0eXBlbmFtZSBVUkJHPgorUmVhbFR5cGUgR2F1c3NpYW4oVVJCRyYmIHVyYmcsICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgUmVhbFR5cGUgbWVhbiA9
IDAsIFJlYWxUeXBlIHN0ZGRldiA9IDEpIHsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIHN0ZDo6
aXNfZmxvYXRpbmdfcG9pbnQ8UmVhbFR5cGU+Ojp2YWx1ZSwKKyAgICAgICJUZW1wbGF0ZS1hcmd1
bWVudCAnUmVhbFR5cGUnIG11c3QgYmUgYSBmbG9hdGluZy1wb2ludCB0eXBlLCBpbiAiCisgICAg
ICAiYWJzbDo6R2F1c3NpYW48UmVhbFR5cGUsIFVSQkc+KC4uLikiKTsKKworICB1c2luZyBnZW5f
dCA9IGFic2w6OmRlY2F5X3Q8VVJCRz47CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gdHlwZW5h
bWUgYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjsKKyAgdXNpbmcgZm9ybWF0
X3QgPSByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxkaXN0cmlidXRp
b25fdD47CisKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9uQ2FsbGVyPGdl
bl90Pjo6dGVtcGxhdGUgQ2FsbDwKKyAgICAgIGRpc3RyaWJ1dGlvbl90LCBmb3JtYXRfdD4oJnVy
YmcsIG1lYW4sIHN0ZGRldik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNs
OjpMb2dVbmlmb3JtPFQ+KGJpdGdlbiwgbG8sIGhpLCBiYXNlID0gMikKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gYGFic2w6OkxvZ1VuaWZvcm1gIHByb2R1Y2VzIHJhbmRvbSB2YWx1
ZXMgZGlzdHJpYnV0ZWQgd2hlcmUgdGhlIGxvZyB0byBhCisvLyBnaXZlbiBiYXNlIG9mIGFsbCB2
YWx1ZXMgaXMgdW5pZm9ybSBpbiBhIGNsb3NlZCBpbnRlcnZhbCBbbG8sIGhpXS4gYFRgIG11c3QK
Ky8vIGJlIGFuIGludGVncmFsIHR5cGUsIGJ1dCBtYXkgYmUgaW5mZXJyZWQgZnJvbSB0aGUgdHlw
ZXMgb2YgYGxvYCBhbmQgYGhpYC4KKy8vCisvLyBJLmUuLCBgTG9nVW5pZm9ybSgwLCBuLCBiKWAg
aXMgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFjcm9zcyBidWNrZXRzCisvLyBbMF0sIFsxLCBiLTFd
LCBbYiwgYl4yLTFdIC4uIFtiXihrLTEpLCAoYl5rKS0xXSAuLiBbYl5mbG9vcihsb2cobiwgYikp
LCBuXQorLy8gYW5kIGlzIHVuaWZvcm1seSBkaXN0cmlidXRlZCB3aXRoaW4gZWFjaCBidWNrZXQu
CisvLworLy8gVGhlIHJlc3VsdGluZyBwcm9iYWJpbGl0eSBkZW5zaXR5IGlzIGludmVyc2VseSBy
ZWxhdGVkIHRvIGJ1Y2tldCBzaXplLCB0aG91Z2gKKy8vIHZhbHVlcyBpbiB0aGUgZmluYWwgYnVj
a2V0IG1heSBiZSBtb3JlIGxpa2VseSB0aGFuIHByZXZpb3VzIHZhbHVlcy4gKEluIHRoZQorLy8g
ZXh0cmVtZSBjYXNlIHdoZXJlIG4gPSBiXmkgdGhlIGZpbmFsIHZhbHVlIHdpbGwgYmUgdGllZCB3
aXRoIHplcm8gYXMgdGhlIG1vc3QKKy8vIHByb2JhYmxlIHJlc3VsdC4KKy8vCisvLyBJZiBgbG9g
IGlzIG5vbnplcm8gdGhlbiB0aGlzIGRpc3RyaWJ1dGlvbiBpcyBzaGlmdGVkIHRvIHRoZSBkZXNp
cmVkIGludGVydmFsLAorLy8gc28gTG9nVW5pZm9ybShsbywgaGksIGIpIGlzIGVxdWl2YWxlbnQg
dG8gTG9nVW5pZm9ybSgwLCBoaS1sbywgYikrbG8uCisvLworLy8gU2VlIGh0dHA6Ly9lY29sZWdv
LmZhY2lsaWEuc2UvZWNvbGVnby9zaG93L0xvZy1Vbmlmb3JtJTIwRGlzdHJpYnV0aW9uCisvLwor
Ly8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkJpdEdlbiBiaXRnZW47CisvLyAgIC4uLgorLy8g
ICBpbnQgdiA9IGFic2w6OkxvZ1VuaWZvcm0oYml0Z2VuLCAwLCAxMDAwKTsKKy8vCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgSW50VHlwZSwgdHlwZW5hbWUgVVJCRz4KK0ludFR5cGUgTG9nVW5pZm9ybShV
UkJHJiYgdXJiZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAg
ICAgICAgSW50VHlwZSBsbywgSW50VHlwZSBoaSwgSW50VHlwZSBiYXNlID0gMikgeworICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT46OnZhbHVlLAorICAgICAgICAgICAg
ICAgICJUZW1wbGF0ZS1hcmd1bWVudCAnSW50VHlwZScgbXVzdCBiZSBhbiBpbnRlZ3JhbCB0eXBl
LCBpbiAiCisgICAgICAgICAgICAgICAgImFic2w6OkxvZ1VuaWZvcm08SW50VHlwZSwgVVJCRz4o
Li4uKSIpOworCisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsKKyAgdXNpbmcg
ZGlzdHJpYnV0aW9uX3QgPSB0eXBlbmFtZSBhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0
aW9uPEludFR5cGU+OworICB1c2luZyBmb3JtYXRfdCA9IHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJp
YnV0aW9uRm9ybWF0VHJhaXRzPGRpc3RyaWJ1dGlvbl90PjsKKworICByZXR1cm4gcmFuZG9tX2lu
dGVybmFsOjpEaXN0cmlidXRpb25DYWxsZXI8Z2VuX3Q+Ojp0ZW1wbGF0ZSBDYWxsPAorICAgICAg
ZGlzdHJpYnV0aW9uX3QsIGZvcm1hdF90PigmdXJiZywgbG8sIGhpLCBiYXNlKTsKK30KKworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6OlBvaXNzb248VD4oYml0Z2VuLCBtZWFuID0g
MSkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gYGFic2w6OlBvaXNzb25gIHByb2R1
Y2VzIGRpc2NyZXRlIHByb2JhYmlsaXRpZXMgZm9yIGEgZ2l2ZW4gbnVtYmVyIG9mIGV2ZW50cwor
Ly8gb2NjdXJyaW5nIHdpdGhpbiBhIGZpeGVkIGludGVydmFsIHdpdGhpbiB0aGUgY2xvc2VkIGlu
dGVydmFsIFswLCBtYXhdLiBgVGAKKy8vIG11c3QgYmUgYW4gaW50ZWdyYWwgdHlwZS4KKy8vCisv
LyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUG9pc3Nvbl9kaXN0cmlidXRpb24K
Ky8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Qml0R2VuIGJpdGdlbjsKKy8vICAgLi4u
CisvLyAgIGludCByZXF1ZXN0c19wZXJfbWludXRlID0gYWJzbDo6UG9pc3NvbjxpbnQ+KGJpdGdl
biwgMy4yKTsKKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSwgdHlwZW5hbWUgVVJCRz4K
K0ludFR5cGUgUG9pc3NvbihVUkJHJiYgdXJiZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5j
ZXMpCisgICAgICAgICAgICAgICAgZG91YmxlIG1lYW4gPSAxLjApIHsKKyAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2ludGVncmFsPEludFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiVGVt
cGxhdGUtYXJndW1lbnQgJ0ludFR5cGUnIG11c3QgYmUgYW4gaW50ZWdyYWwgdHlwZSwgaW4gIgor
ICAgICAgICAgICAgICAgICJhYnNsOjpQb2lzc29uPEludFR5cGUsIFVSQkc+KC4uLikiKTsKKwor
ICB1c2luZyBnZW5fdCA9IGFic2w6OmRlY2F5X3Q8VVJCRz47CisgIHVzaW5nIGRpc3RyaWJ1dGlv
bl90ID0gdHlwZW5hbWUgYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248SW50VHlwZT47CisgIHVz
aW5nIGZvcm1hdF90ID0gcmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8
ZGlzdHJpYnV0aW9uX3Q+OworCisgIHJldHVybiByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlv
bkNhbGxlcjxnZW5fdD46OnRlbXBsYXRlIENhbGw8CisgICAgICBkaXN0cmlidXRpb25fdCwgZm9y
bWF0X3Q+KCZ1cmJnLCBtZWFuKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFi
c2w6OlppcGY8VD4oYml0Z2VuLCBoaSA9IG1heCwgcSA9IDIsIHYgPSAxKQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBgYWJzbDo6WmlwZmAgcHJvZHVjZXMgZGlzY3JldGUgcHJvYmFi
aWxpdGllcyBjb21tb25seSB1c2VkIGZvciBtb2RlbGxpbmcgb2YKKy8vIHJhcmUgZXZlbnRzIG92
ZXIgdGhlIGNsb3NlZCBpbnRlcnZhbCBbMCwgaGldLiBUaGUgcGFyYW1ldGVycyBgdmAgYW5kIGBx
YAorLy8gZGV0ZXJtaW5lIHRoZSBza2V3IG9mIHRoZSBkaXN0cmlidXRpb24uIGBUYCAgbXVzdCBi
ZSBhbiBpbnRlZ3JhbCB0eXBlLCBidXQKKy8vIG1heSBiZSBpbmZlcnJlZCBmcm9tIHRoZSB0eXBl
IG9mIGBoaWAuCisvLworLy8gU2VlIGh0dHA6Ly9tYXRod29ybGQud29sZnJhbS5jb20vWmlwZkRp
c3RyaWJ1dGlvbi5odG1sCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkJpdEdlbiBi
aXRnZW47CisvLyAgIC4uLgorLy8gICBpbnQgdGVybV9yYW5rID0gYWJzbDo6WmlwZjxpbnQ+KGJp
dGdlbik7CisvLwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGUsIHR5cGVuYW1lIFVSQkc+CitJ
bnRUeXBlIFppcGYoVVJCRyYmIHVyYmcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICAgICAgICAgICAgIEludFR5cGUgaGkgPSAoc3RkOjpudW1lcmljX2xpbWl0czxJbnRUeXBlPjo6
bWF4KSgpLCBkb3VibGUgcSA9IDIuMCwKKyAgICAgICAgICAgICBkb3VibGUgdiA9IDEuMCkgewor
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT46OnZhbHVlLAorICAgICAg
ICAgICAgICAgICJUZW1wbGF0ZS1hcmd1bWVudCAnSW50VHlwZScgbXVzdCBiZSBhbiBpbnRlZ3Jh
bCB0eXBlLCBpbiAiCisgICAgICAgICAgICAgICAgImFic2w6OlppcGY8SW50VHlwZSwgVVJCRz4o
Li4uKSIpOworCisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsKKyAgdXNpbmcg
ZGlzdHJpYnV0aW9uX3QgPSB0eXBlbmFtZSBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjxJbnRUeXBl
PjsKKyAgdXNpbmcgZm9ybWF0X3QgPSByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkZvcm1h
dFRyYWl0czxkaXN0cmlidXRpb25fdD47CisKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6RGlz
dHJpYnV0aW9uQ2FsbGVyPGdlbl90Pjo6dGVtcGxhdGUgQ2FsbDwKKyAgICAgIGRpc3RyaWJ1dGlv
bl90LCBmb3JtYXRfdD4oJnVyYmcsIGhpLCBxLCB2KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFi
c2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9ESVNUUklCVVRJT05TX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vZGlzdHJpYnV0aW9uc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc3Ry
aWJ1dGlvbnNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
ZWI4Mjg2OGQ1MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZGlzdHJpYnV0aW9u
c190ZXN0LmNjCkBAIC0wLDAgKzEsNDk0IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbnMuaCIKKwor
I2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8cmFuZG9tPgor
I2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5oIgorI2luY2x1ZGUg
ImFic2wvcmFuZG9tL3JhbmRvbS5oIgorCituYW1lc3BhY2UgeworCitjb25zdGV4cHIgaW50IGtT
aXplID0gNDAwMDAwOworCitjbGFzcyBSYW5kb21EaXN0cmlidXRpb25zVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHt9OworCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0aW9uc1Rlc3QsIFVuaWZv
cm1Cb3VuZEZ1bmN0aW9ucykgeworICB1c2luZyBhYnNsOjpJbnRlcnZhbENsb3NlZENsb3NlZDsK
KyAgdXNpbmcgYWJzbDo6SW50ZXJ2YWxDbG9zZWRPcGVuOworICB1c2luZyBhYnNsOjpJbnRlcnZh
bE9wZW5DbG9zZWQ7CisgIHVzaW5nIGFic2w6OkludGVydmFsT3Blbk9wZW47CisgIHVzaW5nIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbDo6dW5pZm9ybV9sb3dlcl9ib3VuZDsKKyAgdXNpbmcgYWJzbDo6
cmFuZG9tX2ludGVybmFsOjp1bmlmb3JtX3VwcGVyX2JvdW5kOworCisgIC8vIGFic2w6OnVuaWZv
cm1faW50X2Rpc3RyaWJ1dGlvbiBuYXRpdmVseSBhc3N1bWVzIEludGVydmFsQ2xvc2VkQ2xvc2Vk
CisgIC8vIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24gbmF0aXZlbHkgYXNzdW1lcyBJ
bnRlcnZhbENsb3NlZE9wZW4KKworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZChJbnRl
cnZhbE9wZW5DbG9zZWQsIDAsIDEwMCksIDEpOworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9i
b3VuZChJbnRlcnZhbE9wZW5PcGVuLCAwLCAxMDApLCAxKTsKKyAgRVhQRUNUX0dUKHVuaWZvcm1f
bG93ZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsT3BlbkNsb3NlZCwgMCwgMS4wKSwgMCk7CisgIEVY
UEVDVF9HVCh1bmlmb3JtX2xvd2VyX2JvdW5kPGZsb2F0PihJbnRlcnZhbE9wZW5PcGVuLCAwLCAx
LjApLCAwKTsKKyAgRVhQRUNUX0dUKHVuaWZvcm1fbG93ZXJfYm91bmQ8ZG91YmxlPihJbnRlcnZh
bE9wZW5DbG9zZWQsIDAsIDEuMCksIDApOworICBFWFBFQ1RfR1QodW5pZm9ybV9sb3dlcl9ib3Vu
ZDxkb3VibGU+KEludGVydmFsT3Blbk9wZW4sIDAsIDEuMCksIDApOworCisgIEVYUEVDVF9FUSh1
bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsQ2xvc2VkQ2xvc2VkLCAwLCAxMDApLCAwKTsKKyAg
RVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRPcGVuLCAwLCAxMDAp
LCAwKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsQ2xv
c2VkQ2xvc2VkLCAwLCAxLjApLCAwKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91bmQ8
ZmxvYXQ+KEludGVydmFsQ2xvc2VkT3BlbiwgMCwgMS4wKSwgMCk7CisgIEVYUEVDVF9FUSh1bmlm
b3JtX2xvd2VyX2JvdW5kPGRvdWJsZT4oSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIDAsIDEuMCksIDAp
OworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZDxkb3VibGU+KEludGVydmFsQ2xvc2Vk
T3BlbiwgMCwgMS4wKSwgMCk7CisKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQoSW50
ZXJ2YWxPcGVuT3BlbiwgMCwgMTAwKSwgOTkpOworICBFWFBFQ1RfRVEodW5pZm9ybV91cHBlcl9i
b3VuZChJbnRlcnZhbENsb3NlZE9wZW4sIDAsIDEwMCksIDk5KTsKKyAgRVhQRUNUX0VRKHVuaWZv
cm1fdXBwZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsT3Blbk9wZW4sIDAsIDEuMCksIDEuMCk7Cisg
IEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kPGZsb2F0PihJbnRlcnZhbENsb3NlZE9wZW4s
IDAsIDEuMCksIDEuMCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kPGRvdWJsZT4o
SW50ZXJ2YWxPcGVuT3BlbiwgMCwgMS4wKSwgMS4wKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBw
ZXJfYm91bmQ8ZG91YmxlPihJbnRlcnZhbENsb3NlZE9wZW4sIDAsIDEuMCksIDEuMCk7CisKKyAg
RVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxPcGVuQ2xvc2VkLCAwLCAxMDAp
LCAxMDApOworICBFWFBFQ1RfRVEodW5pZm9ybV91cHBlcl9ib3VuZChJbnRlcnZhbENsb3NlZENs
b3NlZCwgMCwgMTAwKSwgMTAwKTsKKyAgRVhQRUNUX0dUKHVuaWZvcm1fdXBwZXJfYm91bmQ8Zmxv
YXQ+KEludGVydmFsT3BlbkNsb3NlZCwgMCwgMS4wKSwgMS4wKTsKKyAgRVhQRUNUX0dUKHVuaWZv
cm1fdXBwZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsQ2xvc2VkQ2xvc2VkLCAwLCAxLjApLCAxLjAp
OworICBFWFBFQ1RfR1QodW5pZm9ybV91cHBlcl9ib3VuZDxkb3VibGU+KEludGVydmFsT3BlbkNs
b3NlZCwgMCwgMS4wKSwgMS4wKTsKKyAgRVhQRUNUX0dUKHVuaWZvcm1fdXBwZXJfYm91bmQ8ZG91
YmxlPihJbnRlcnZhbENsb3NlZENsb3NlZCwgMCwgMS4wKSwgMS4wKTsKKworICAvLyBOZWdhdGl2
ZSB2YWx1ZSB0ZXN0cworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZChJbnRlcnZhbE9w
ZW5DbG9zZWQsIC0xMDAsIC0xKSwgLTk5KTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91
bmQoSW50ZXJ2YWxPcGVuT3BlbiwgLTEwMCwgLTEpLCAtOTkpOworICBFWFBFQ1RfR1QodW5pZm9y
bV9sb3dlcl9ib3VuZDxmbG9hdD4oSW50ZXJ2YWxPcGVuQ2xvc2VkLCAtMi4wLCAtMS4wKSwgLTIu
MCk7CisgIEVYUEVDVF9HVCh1bmlmb3JtX2xvd2VyX2JvdW5kPGZsb2F0PihJbnRlcnZhbE9wZW5P
cGVuLCAtMi4wLCAtMS4wKSwgLTIuMCk7CisgIEVYUEVDVF9HVCh1bmlmb3JtX2xvd2VyX2JvdW5k
PGRvdWJsZT4oSW50ZXJ2YWxPcGVuQ2xvc2VkLCAtMi4wLCAtMS4wKSwgLTIuMCk7CisgIEVYUEVD
VF9HVCh1bmlmb3JtX2xvd2VyX2JvdW5kPGRvdWJsZT4oSW50ZXJ2YWxPcGVuT3BlbiwgLTIuMCwg
LTEuMCksIC0yLjApOworCisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFs
Q2xvc2VkQ2xvc2VkLCAtMTAwLCAtMSksIC0xMDApOworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dl
cl9ib3VuZChJbnRlcnZhbENsb3NlZE9wZW4sIC0xMDAsIC0xKSwgLTEwMCk7CisgIEVYUEVDVF9F
USh1bmlmb3JtX2xvd2VyX2JvdW5kPGZsb2F0PihJbnRlcnZhbENsb3NlZENsb3NlZCwgLTIuMCwg
LTEuMCksIC0yLjApOworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZDxmbG9hdD4oSW50
ZXJ2YWxDbG9zZWRPcGVuLCAtMi4wLCAtMS4wKSwgLTIuMCk7CisgIEVYUEVDVF9FUSh1bmlmb3Jt
X2xvd2VyX2JvdW5kPGRvdWJsZT4oSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIC0yLjAsIC0xLjApLAor
ICAgICAgICAgICAgLTIuMCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kPGRvdWJs
ZT4oSW50ZXJ2YWxDbG9zZWRPcGVuLCAtMi4wLCAtMS4wKSwgLTIuMCk7CisKKyAgRVhQRUNUX0VR
KHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxPcGVuT3BlbiwgLTEwMCwgLTEpLCAtMik7Cisg
IEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kKEludGVydmFsQ2xvc2VkT3BlbiwgLTEwMCwg
LTEpLCAtMik7CisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kPGZsb2F0PihJbnRlcnZh
bE9wZW5PcGVuLCAtMi4wLCAtMS4wKSwgLTEuMCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVy
X2JvdW5kPGZsb2F0PihJbnRlcnZhbENsb3NlZE9wZW4sIC0yLjAsIC0xLjApLCAtMS4wKTsKKyAg
RVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQ8ZG91YmxlPihJbnRlcnZhbE9wZW5PcGVuLCAt
Mi4wLCAtMS4wKSwgLTEuMCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kPGRvdWJs
ZT4oSW50ZXJ2YWxDbG9zZWRPcGVuLCAtMi4wLCAtMS4wKSwgLTEuMCk7CisKKyAgRVhQRUNUX0VR
KHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxPcGVuQ2xvc2VkLCAtMTAwLCAtMSksIC0xKTsK
KyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIC0x
MDAsIC0xKSwgLTEpOworICBFWFBFQ1RfR1QodW5pZm9ybV91cHBlcl9ib3VuZDxmbG9hdD4oSW50
ZXJ2YWxPcGVuQ2xvc2VkLCAtMi4wLCAtMS4wKSwgLTEuMCk7CisgIEVYUEVDVF9HVCh1bmlmb3Jt
X3VwcGVyX2JvdW5kPGZsb2F0PihJbnRlcnZhbENsb3NlZENsb3NlZCwgLTIuMCwgLTEuMCksIC0x
LjApOworICBFWFBFQ1RfR1QodW5pZm9ybV91cHBlcl9ib3VuZDxkb3VibGU+KEludGVydmFsT3Bl
bkNsb3NlZCwgLTIuMCwgLTEuMCksIC0xLjApOworICBFWFBFQ1RfR1QodW5pZm9ybV91cHBlcl9i
b3VuZDxkb3VibGU+KEludGVydmFsQ2xvc2VkQ2xvc2VkLCAtMi4wLCAtMS4wKSwKKyAgICAgICAg
ICAgIC0xLjApOworCisgIC8vIEVkZ2UgY2FzZXM6IHRoZSBuZXh0IHZhbHVlIHRvd2FyZCBpdHNl
bGYgaXMgaXRzZWxmLgorICBjb25zdCBkb3VibGUgZCA9IDEuMDsKKyAgY29uc3QgZmxvYXQgZiA9
IDEuMDsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxPcGVuQ2xvc2Vk
LCBkLCBkKSwgZCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsT3Bl
bkNsb3NlZCwgZiwgZiksIGYpOworCisgIEVYUEVDVF9HVCh1bmlmb3JtX2xvd2VyX2JvdW5kKElu
dGVydmFsT3BlbkNsb3NlZCwgMS4wLCAyLjApLCAxLjApOworICBFWFBFQ1RfTFQodW5pZm9ybV9s
b3dlcl9ib3VuZChJbnRlcnZhbE9wZW5DbG9zZWQsIDEuMCwgKzAuMCksIDEuMCk7CisgIEVYUEVD
VF9MVCh1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsT3BlbkNsb3NlZCwgMS4wLCAtMC4wKSwg
MS4wKTsKKyAgRVhQRUNUX0xUKHVuaWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxPcGVuQ2xvc2Vk
LCAxLjAsIC0xLjApLCAxLjApOworCisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kKElu
dGVydmFsQ2xvc2VkQ2xvc2VkLCAwLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpLAorICAgICAgICAgICAgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJf
Ym91bmQoSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIDAuMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSksCisgICAgICAgICAg
ICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKK30KKworc3RydWN0IEludmFs
aWQge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBCPgorYXV0byBJbmZlcnJl
ZFVuaWZvcm1SZXR1cm5UKGludCkKKyAgICAtPiBkZWNsdHlwZShhYnNsOjpVbmlmb3JtKHN0ZDo6
ZGVjbHZhbDxhYnNsOjpJbnNlY3VyZUJpdEdlbiY+KCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmRlY2x2YWw8QT4oKSwgc3RkOjpkZWNsdmFsPEI+KCkpKTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lLCB0eXBlbmFtZT4KK0ludmFsaWQgSW5mZXJyZWRVbmlmb3JtUmV0dXJuVCgu
Li4pOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFnVHlwZSwgdHlwZW5hbWUgQSwgdHlwZW5hbWUg
Qj4KK2F1dG8gSW5mZXJyZWRUYWdnZWRVbmlmb3JtUmV0dXJuVChpbnQpCisgICAgLT4gZGVjbHR5
cGUoYWJzbDo6VW5pZm9ybShzdGQ6OmRlY2x2YWw8VGFnVHlwZT4oKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxhYnNsOjpJbnNlY3VyZUJpdEdlbiY+KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8QT4oKSwgc3RkOjpkZWNs
dmFsPEI+KCkpKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWU+CitJ
bnZhbGlkIEluZmVycmVkVGFnZ2VkVW5pZm9ybVJldHVyblQoLi4uKTsKKworLy8gR2l2ZW4gdHlw
ZXMgPEEsIEIsIEV4cGVjdD4sIENoZWNrQXJnc0luZmVyVHlwZSgpIHZlcmlmaWVzIHRoYXQKKy8v
CisvLyAgIGFic2w6OlVuaWZvcm0oZ2VuLCBBe30sIEJ7fSkKKy8vCisvLyByZXR1cm5zIHRoZSB0
eXBlICJFeHBlY3QiLgorLy8KKy8vIFRoaXMgaW50ZXJmYWNlIGNhbiBhbHNvIGJlIHVzZWQgdG8g
YXNzZXJ0IHRoYXQgYSBnaXZlbiBhYnNsOjpVbmlmb3JtKCkKKy8vIG92ZXJsb2FkIGRvZXMgbm90
IGV4aXN0IC8gd2lsbCBub3QgY29tcGlsZS4gR2l2ZW4gdHlwZXMgPEEsIEI+LCB0aGUKKy8vIGV4
cHJlc3Npb24KKy8vCisvLyAgIGRlY2x0eXBlKGFic2w6OlVuaWZvcm0oLi4uLCBzdGQ6OmRlY2x2
YWw8QT4oKSwgc3RkOjpkZWNsdmFsPEI+KCkpKQorLy8KKy8vIHdpbGwgbm90IGNvbXBpbGUsIGxl
YXZpbmcgdGhlIGRlZmluaXRpb24gb2YgSW5mZXJyZWRVbmlmb3JtUmV0dXJuVDxBLCBCPiB0bwor
Ly8gcmVzb2x2ZSAodmlhIFNGSU5BRSkgdG8gdGhlIG92ZXJsb2FkIHdoaWNoIHJldHVybnMgdHlw
ZSAiSW52YWxpZCIuIFRoaXMKKy8vIGFsbG93cyB0ZXN0cyB0byBhc3NlcnQgdGhhdCBhbiBpbnZv
Y2F0aW9uIHN1Y2ggYXMKKy8vCisvLyAgIGFic2w6OlVuaWZvcm0oZ2VuLCAxLjIzZiwgc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSAtIDEpCisvLworLy8gc2hvdWxkIG5vdCBjb21waWxl
LCBzaW5jZSBuZWl0aGVyIHR5cGUsIGZsb2F0IG5vciBpbnQsIGNhbiBwcmVjaXNlbHkKKy8vIHJl
cHJlc2VudCBib3RoIGVuZHBvaW50LXZhbHVlcy4gV3JpdGluZzoKKy8vCisvLyAgIENoZWNrQXJn
c0luZmVyVHlwZTxmbG9hdCwgaW50LCBJbnZhbGlkPigpCisvLworLy8gd2lsbCBhc3NlcnQgdGhh
dCB0aGlzIG92ZXJsb2FkIGRvZXMgbm90IGV4aXN0LgordGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5
cGVuYW1lIEIsIHR5cGVuYW1lIEV4cGVjdD4KK3ZvaWQgQ2hlY2tBcmdzSW5mZXJUeXBlKCkgewor
ICBzdGF0aWNfYXNzZXJ0KAorICAgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgICAgc3Rk
Ojppc19zYW1lPEV4cGVjdCwgZGVjbHR5cGUoSW5mZXJyZWRVbmlmb3JtUmV0dXJuVDxBLCBCPigw
KSk+LAorICAgICAgICAgIHN0ZDo6aXNfc2FtZTxFeHBlY3QsCisgICAgICAgICAgICAgICAgICAg
ICAgIGRlY2x0eXBlKEluZmVycmVkVW5pZm9ybVJldHVyblQ8QiwgQT4oMCkpPj46OnZhbHVlLAor
ICAgICAgIiIpOworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgYWJzbDo6Y29uanVuY3Rpb248Cisg
ICAgICAgICAgc3RkOjppc19zYW1lPEV4cGVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgZGVj
bHR5cGUoSW5mZXJyZWRUYWdnZWRVbmlmb3JtUmV0dXJuVDwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpJbnRlcnZhbE9wZW5PcGVuVCwgQSwg
Qj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAwKSk+LAorICAgICAgICAgIHN0ZDo6aXNf
c2FtZTxFeHBlY3QsCisgICAgICAgICAgICAgICAgICAgICAgIGRlY2x0eXBlKEluZmVycmVkVGFn
Z2VkVW5pZm9ybVJldHVyblQ8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6SW50ZXJ2YWxPcGVuT3BlblQsIEIsIEE+KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCkpPj46OnZhbHVlLAorICAgICAgIiIpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQSwgdHlwZW5hbWUgQiwgdHlwZW5hbWUgRXhwbGljaXRSZXQ+CithdXRvIEV4cGxp
Y2l0VW5pZm9ybVJldHVyblQoaW50KSAtPiBkZWNsdHlwZSgKKyAgICBhYnNsOjpVbmlmb3JtPEV4
cGxpY2l0UmV0Pigqc3RkOjpkZWNsdmFsPGFic2w6Okluc2VjdXJlQml0R2VuKj4oKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8QT4oKSwgc3RkOjpkZWNsdmFs
PEI+KCkpKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUgRXhwbGlj
aXRSZXQ+CitJbnZhbGlkIEV4cGxpY2l0VW5pZm9ybVJldHVyblQoLi4uKTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFRhZ1R5cGUsIHR5cGVuYW1lIEEsIHR5cGVuYW1lIEIsIHR5cGVuYW1lIEV4cGxp
Y2l0UmV0PgorYXV0byBFeHBsaWNpdFRhZ2dlZFVuaWZvcm1SZXR1cm5UKGludCkgLT4gZGVjbHR5
cGUoYWJzbDo6VW5pZm9ybTxFeHBsaWNpdFJldD4oCisgICAgc3RkOjpkZWNsdmFsPFRhZ1R5cGU+
KCksICpzdGQ6OmRlY2x2YWw8YWJzbDo6SW5zZWN1cmVCaXRHZW4qPigpLAorICAgIHN0ZDo6ZGVj
bHZhbDxBPigpLCBzdGQ6OmRlY2x2YWw8Qj4oKSkpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5
cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUgRXhwbGljaXRSZXQ+CitJbnZhbGlkIEV4cGxpY2l0
VGFnZ2VkVW5pZm9ybVJldHVyblQoLi4uKTsKKworLy8gR2l2ZW4gdHlwZXMgPEEsIEIsIEV4cGVj
dD4sIENoZWNrQXJnc1JldHVybkV4cGVjdGVkVHlwZSgpIHZlcmlmaWVzIHRoYXQKKy8vCisvLyAg
IGFic2w6OlVuaWZvcm08RXhwZWN0PihnZW4sIEF7fSwgQnt9KQorLy8KKy8vIHJldHVybnMgdGhl
IHR5cGUgIkV4cGVjdCIsIGFuZCB0aGF0IHRoZSBmdW5jdGlvbi1vdmVybG9hZCBoYXMgdGhlIHNp
Z25hdHVyZQorLy8KKy8vICAgRXhwZWN0KFVSQkcmLCBFeHBlY3QsIEV4cGVjdCkKK3RlbXBsYXRl
IDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBCLCB0eXBlbmFtZSBFeHBlY3Q+Cit2b2lkIENoZWNrQXJn
c1JldHVybkV4cGVjdGVkVHlwZSgpIHsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIGFic2w6OmNv
bmp1bmN0aW9uPAorICAgICAgICAgIHN0ZDo6aXNfc2FtZTxFeHBlY3QsCisgICAgICAgICAgICAg
ICAgICAgICAgIGRlY2x0eXBlKEV4cGxpY2l0VW5pZm9ybVJldHVyblQ8QSwgQiwgRXhwZWN0Pigw
KSk+LAorICAgICAgICAgIHN0ZDo6aXNfc2FtZTxFeHBlY3QsIGRlY2x0eXBlKEV4cGxpY2l0VW5p
Zm9ybVJldHVyblQ8QiwgQSwgRXhwZWN0PigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCkpPj46OnZhbHVlLAorICAgICAgIiIpOworICBzdGF0aWNfYXNzZXJ0KAorICAgICAg
YWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgICAgc3RkOjppc19zYW1lPEV4cGVjdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgZGVjbHR5cGUoRXhwbGljaXRUYWdnZWRVbmlmb3JtUmV0dXJuVDwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpJ
bnRlcnZhbE9wZW5PcGVuVCwgQSwgQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RXhwZWN0PigwKSk+LAorICAgICAgICAgIHN0ZDo6aXNfc2FtZTxFeHBlY3QsCisgICAgICAgICAg
ICAgICAgICAgICAgIGRlY2x0eXBlKEV4cGxpY2l0VGFnZ2VkVW5pZm9ybVJldHVyblQ8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6SW50ZXJ2
YWxPcGVuT3BlblQsIEIsIEEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVj
dD4oMCkpPj46OnZhbHVlLAorICAgICAgIiIpOworfQorCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0
aW9uc1Rlc3QsIFVuaWZvcm1UeXBlSW5mZXJlbmNlKSB7CisgIC8vIEluZmVycyBjb21tb24gdHlw
ZXMuCisgIENoZWNrQXJnc0luZmVyVHlwZTx1aW50MTZfdCwgdWludDE2X3QsIHVpbnQxNl90Pigp
OworICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdD4oKTsK
KyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3Q+KCk7Cisg
IENoZWNrQXJnc0luZmVyVHlwZTxpbnQxNl90LCBpbnQxNl90LCBpbnQxNl90PigpOworICBDaGVj
a0FyZ3NJbmZlclR5cGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4oKTsKKyAgQ2hlY2tBcmdz
SW5mZXJUeXBlPGludDY0X3QsIGludDY0X3QsIGludDY0X3Q+KCk7CisgIENoZWNrQXJnc0luZmVy
VHlwZTxmbG9hdCwgZmxvYXQsIGZsb2F0PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8ZG91Ymxl
LCBkb3VibGUsIGRvdWJsZT4oKTsKKworICAvLyBFeHBsaWNpdGx5LXNwZWNpZmllZCByZXR1cm4t
dmFsdWVzIG92ZXJyaWRlIGluZmVyZW5jZXMuCisgIENoZWNrQXJnc1JldHVybkV4cGVjdGVkVHlw
ZTxpbnQxNl90LCBpbnQxNl90LCBpbnQzMl90PigpOworICBDaGVja0FyZ3NSZXR1cm5FeHBlY3Rl
ZFR5cGU8dWludDE2X3QsIHVpbnQxNl90LCBpbnQzMl90PigpOworICBDaGVja0FyZ3NSZXR1cm5F
eHBlY3RlZFR5cGU8aW50MTZfdCwgaW50MTZfdCwgaW50NjRfdD4oKTsKKyAgQ2hlY2tBcmdzUmV0
dXJuRXhwZWN0ZWRUeXBlPGludDE2X3QsIGludDMyX3QsIGludDY0X3Q+KCk7CisgIENoZWNrQXJn
c1JldHVybkV4cGVjdGVkVHlwZTxpbnQxNl90LCBpbnQzMl90LCBkb3VibGU+KCk7CisgIENoZWNr
QXJnc1JldHVybkV4cGVjdGVkVHlwZTxmbG9hdCwgZmxvYXQsIGRvdWJsZT4oKTsKKyAgQ2hlY2tB
cmdzUmV0dXJuRXhwZWN0ZWRUeXBlPGludCwgaW50LCBpbnQxNl90PigpOworCisgIC8vIFByb3Bl
cmx5IHByb21vdGVzIHVpbnQxNl90LgorICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDE2X3QsIHVp
bnQzMl90LCB1aW50MzJfdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQxNl90LCB1aW50
NjRfdCwgdWludDY0X3Q+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTx1aW50MTZfdCwgaW50MzJf
dCwgaW50MzJfdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQxNl90LCBpbnQ2NF90LCBp
bnQ2NF90PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDE2X3QsIGZsb2F0LCBmbG9hdD4o
KTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQxNl90LCBkb3VibGUsIGRvdWJsZT4oKTsKKwor
ICAvLyBQcm9wZXJseSBwcm9tb3RlcyBpbnQxNl90LgorICBDaGVja0FyZ3NJbmZlclR5cGU8aW50
MTZfdCwgaW50MzJfdCwgaW50MzJfdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGludDE2X3Qs
IGludDY0X3QsIGludDY0X3Q+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQxNl90LCBmbG9h
dCwgZmxvYXQ+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQxNl90LCBkb3VibGUsIGRvdWJs
ZT4oKTsKKworICAvLyBJbnZhbGlkICh1KWludDE2X3QtcGFpcmluZ3MgZG8gbm90IGNvbXBpbGUu
CisgIC8vIFNlZSAiQ2hlY2tBcmdzSW5mZXJUeXBlIiBjb21tZW50cyBhYm92ZSwgZm9yIGhvdyB0
aGlzIGlzIGFjaGlldmVkLgorICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDE2X3QsIGludDE2X3Qs
IEludmFsaWQ+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQxNl90LCB1aW50MzJfdCwgSW52
YWxpZD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGludDE2X3QsIHVpbnQ2NF90LCBJbnZhbGlk
PigpOworCisgIC8vIFByb3Blcmx5IHByb21vdGVzIHVpbnQzMl90LgorICBDaGVja0FyZ3NJbmZl
clR5cGU8dWludDMyX3QsIHVpbnQ2NF90LCB1aW50NjRfdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJU
eXBlPHVpbnQzMl90LCBpbnQ2NF90LCBpbnQ2NF90PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8
dWludDMyX3QsIGRvdWJsZSwgZG91YmxlPigpOworCisgIC8vIFByb3Blcmx5IHByb21vdGVzIGlu
dDMyX3QuCisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQzMl90LCBpbnQ2NF90LCBpbnQ2NF90Pigp
OworICBDaGVja0FyZ3NJbmZlclR5cGU8aW50MzJfdCwgZG91YmxlLCBkb3VibGU+KCk7CisKKyAg
Ly8gSW52YWxpZCAodSlpbnQzMl90LXBhaXJpbmdzIGRvIG5vdCBjb21waWxlLgorICBDaGVja0Fy
Z3NJbmZlclR5cGU8dWludDMyX3QsIGludDMyX3QsIEludmFsaWQ+KCk7CisgIENoZWNrQXJnc0lu
ZmVyVHlwZTxpbnQzMl90LCB1aW50NjRfdCwgSW52YWxpZD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJU
eXBlPGludDMyX3QsIGZsb2F0LCBJbnZhbGlkPigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8dWlu
dDMyX3QsIGZsb2F0LCBJbnZhbGlkPigpOworCisgIC8vIEludmFsaWQgKHUpaW50NjRfdC1wYWly
aW5ncyBkbyBub3QgY29tcGlsZS4KKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQ2NF90LCBpbnQ2
NF90LCBJbnZhbGlkPigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8aW50NjRfdCwgZmxvYXQsIElu
dmFsaWQ+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQ2NF90LCBkb3VibGUsIEludmFsaWQ+
KCk7CisKKyAgLy8gUHJvcGVybHkgcHJvbW90ZXMgZmxvYXQuCisgIENoZWNrQXJnc0luZmVyVHlw
ZTxmbG9hdCwgZG91YmxlLCBkb3VibGU+KCk7CisKKyAgLy8gRXhhbXBsZXMuCisgIGFic2w6Oklu
c2VjdXJlQml0R2VuIGdlbjsKKyAgRVhQRUNUX05FKDEsIGFic2w6OlVuaWZvcm0oZ2VuLCBzdGF0
aWNfY2FzdDx1aW50MTZfdD4oMCksIDEuMGYpKTsKKyAgRVhQRUNUX05FKDEsIGFic2w6OlVuaWZv
cm0oZ2VuLCAwLCAxLjApKTsKKyAgRVhQRUNUX05FKDEsIGFic2w6OlVuaWZvcm0oYWJzbDo6SW50
ZXJ2YWxPcGVuT3BlbiwgZ2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDx1aW50MTZfdD4oMCksIDEuMGYpKTsKKyAgRVhQRUNUX05FKDEsIGFic2w6OlVuaWZvcm0o
YWJzbDo6SW50ZXJ2YWxPcGVuT3BlbiwgZ2VuLCAwLCAxLjApKTsKKyAgRVhQRUNUX05FKDEsIGFi
c2w6OlVuaWZvcm0oYWJzbDo6SW50ZXJ2YWxPcGVuT3BlbiwgZ2VuLCAtMSwgMS4wKSk7CisgIEVY
UEVDVF9ORSgxLCBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oYWJzbDo6SW50ZXJ2YWxPcGVuT3Blbiwg
Z2VuLCAtMSwgMSkpOworICBFWFBFQ1RfTkUoMSwgYWJzbDo6VW5pZm9ybTxmbG9hdD4oYWJzbDo6
SW50ZXJ2YWxPcGVuT3BlbiwgZ2VuLCAwLCAxKSk7CisgIEVYUEVDVF9ORSgxLCBhYnNsOjpVbmlm
b3JtPGZsb2F0PihnZW4sIDAsIDEpKTsKK30KKworVEVTVF9GKFJhbmRvbURpc3RyaWJ1dGlvbnNU
ZXN0LCBVbmlmb3JtTm9Cb3VuZHMpIHsKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworCisg
IGFic2w6OlVuaWZvcm08dWludDhfdD4oZ2VuKTsKKyAgYWJzbDo6VW5pZm9ybTx1aW50MTZfdD4o
Z2VuKTsKKyAgYWJzbDo6VW5pZm9ybTx1aW50MzJfdD4oZ2VuKTsKKyAgYWJzbDo6VW5pZm9ybTx1
aW50NjRfdD4oZ2VuKTsKK30KKworLy8gVE9ETyhsYXIpOiBWYWxpZGF0ZSBwcm9wZXJ0aWVzIG9m
IG5vbi1kZWZhdWx0IGludGVydmFsLXNlbWFudGljcy4KK1RFU1RfRihSYW5kb21EaXN0cmlidXRp
b25zVGVzdCwgVW5pZm9ybVJlYWwpIHsKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiB2YWx1ZXMoa1Np
emUpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdlbjsKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVzW2ldID0gYWJzbDo6VW5pZm9ybShnZW4sIDAsIDEu
MCk7CisgIH0KKworICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJzbDo6cmFuZG9tX2lu
dGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICBFWFBFQ1RfTkVB
UigwLjUsIG1vbWVudHMubWVhbiwgMC4wMik7CisgIEVYUEVDVF9ORUFSKDEgLyAxMi4wLCBtb21l
bnRzLnZhcmlhbmNlLCAwLjAyKTsKKyAgRVhQRUNUX05FQVIoMC4wLCBtb21lbnRzLnNrZXduZXNz
LCAwLjAyKTsKKyAgRVhQRUNUX05FQVIoOSAvIDUuMCwgbW9tZW50cy5rdXJ0b3NpcywgMC4wMik7
Cit9CisKK1RFU1RfRihSYW5kb21EaXN0cmlidXRpb25zVGVzdCwgVW5pZm9ybUludCkgeworICBz
dGQ6OnZlY3Rvcjxkb3VibGU+IHZhbHVlcyhrU2l6ZSk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRH
ZW4gZ2VuOworICBmb3IgKGludCBpID0gMDsgaSA8IGtTaXplOyBpKyspIHsKKyAgICBjb25zdCBp
bnQ2NF90IGtNYXggPSAxMDAwMDAwMDAwMDAwbGw7CisgICAgaW50NjRfdCBqID0gYWJzbDo6VW5p
Zm9ybShhYnNsOjpJbnRlcnZhbENsb3NlZENsb3NlZCwgZ2VuLCAwLCBrTWF4KTsKKyAgICAvLyBj
b252ZXJ0IHRvIGRvdWJsZS4KKyAgICB2YWx1ZXNbaV0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KGop
IC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihrTWF4KTsKKyAgfQorCisgIGNvbnN0IGF1dG8gbW9tZW50
cyA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNvbXB1dGVEaXN0cmlidXRpb25Nb21l
bnRzKHZhbHVlcyk7CisgIEVYUEVDVF9ORUFSKDAuNSwgbW9tZW50cy5tZWFuLCAwLjAyKTsKKyAg
RVhQRUNUX05FQVIoMSAvIDEyLjAsIG1vbWVudHMudmFyaWFuY2UsIDAuMDIpOworICBFWFBFQ1Rf
TkVBUigwLjAsIG1vbWVudHMuc2tld25lc3MsIDAuMDIpOworICBFWFBFQ1RfTkVBUig5IC8gNS4w
LCBtb21lbnRzLmt1cnRvc2lzLCAwLjAyKTsKKworICAvKgorICAvLyBOT1RFOiBUaGVzZSBhcmUg
bm90IHN1cHBvcnRlZCBieSBhYnNsOjpVbmlmb3JtLCB3aGljaCBpcyBzcGVjaWFsaXplZAorICAv
LyBvbiBpbnRlZ2VyIGFuZCByZWFsIHZhbHVlZCB0eXBlcy4KKworICBlbnVtIEUgeyBFMCwgRTEg
fTsgICAgLy8gZW51bQorICBlbnVtIFMgOiBpbnQgeyBTMCwgUzEgfTsgICAgLy8gc2lnbmVkIGVu
dW0KKyAgZW51bSBVIDogdW5zaWduZWQgaW50IHsgVTAsIFUxIH07ICAvLyB1bnNpZ25lZCBlbnVt
CisKKyAgYWJzbDo6VW5pZm9ybShnZW4sIEUwLCBFMSk7CisgIGFic2w6OlVuaWZvcm0oZ2VuLCBT
MCwgUzEpOworICBhYnNsOjpVbmlmb3JtKGdlbiwgVTAsIFUxKTsKKyAgKi8KK30KKworVEVTVF9G
KFJhbmRvbURpc3RyaWJ1dGlvbnNUZXN0LCBFeHBvbmVudGlhbCkgeworICBzdGQ6OnZlY3Rvcjxk
b3VibGU+IHZhbHVlcyhrU2l6ZSk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBm
b3IgKGludCBpID0gMDsgaSA8IGtTaXplOyBpKyspIHsKKyAgICB2YWx1ZXNbaV0gPSBhYnNsOjpF
eHBvbmVudGlhbDxkb3VibGU+KGdlbik7CisgIH0KKworICBjb25zdCBhdXRvIG1vbWVudHMgPQor
ICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2
YWx1ZXMpOworICBFWFBFQ1RfTkVBUigxLjAsIG1vbWVudHMubWVhbiwgMC4wMik7CisgIEVYUEVD
VF9ORUFSKDEuMCwgbW9tZW50cy52YXJpYW5jZSwgMC4wMjUpOworICBFWFBFQ1RfTkVBUigyLjAs
IG1vbWVudHMuc2tld25lc3MsIDAuMSk7CisgIEVYUEVDVF9MVCg1LjAsIG1vbWVudHMua3VydG9z
aXMpOworfQorCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0aW9uc1Rlc3QsIFBvaXNzb25EZWZhdWx0
KSB7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdmFsdWVzKGtTaXplKTsKKworICBhYnNsOjpJbnNl
Y3VyZUJpdEdlbiBnZW47CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1NpemU7IGkrKykgeworICAg
IHZhbHVlc1tpXSA9IGFic2w6OlBvaXNzb248aW50NjRfdD4oZ2VuKTsKKyAgfQorCisgIGNvbnN0
IGF1dG8gbW9tZW50cyA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNvbXB1dGVEaXN0
cmlidXRpb25Nb21lbnRzKHZhbHVlcyk7CisgIEVYUEVDVF9ORUFSKDEuMCwgbW9tZW50cy5tZWFu
LCAwLjAyKTsKKyAgRVhQRUNUX05FQVIoMS4wLCBtb21lbnRzLnZhcmlhbmNlLCAwLjAyKTsKKyAg
RVhQRUNUX05FQVIoMS4wLCBtb21lbnRzLnNrZXduZXNzLCAwLjAyNSk7CisgIEVYUEVDVF9MVCgy
LjAsIG1vbWVudHMua3VydG9zaXMpOworfQorCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0aW9uc1Rl
c3QsIFBvaXNzb25MYXJnZSkgeworICBjb25zdGV4cHIgZG91YmxlIGtNZWFuID0gMTAwMDAwMDAw
LjA7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdmFsdWVzKGtTaXplKTsKKworICBhYnNsOjpJbnNl
Y3VyZUJpdEdlbiBnZW47CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1NpemU7IGkrKykgeworICAg
IHZhbHVlc1tpXSA9IGFic2w6OlBvaXNzb248aW50NjRfdD4oZ2VuLCBrTWVhbik7CisgIH0KKwor
ICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDb21w
dXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICBFWFBFQ1RfTkVBUihrTWVhbiwgbW9t
ZW50cy5tZWFuLCBrTWVhbiAqIDAuMDE1KTsKKyAgRVhQRUNUX05FQVIoa01lYW4sIG1vbWVudHMu
dmFyaWFuY2UsIGtNZWFuICogMC4wMTUpOworICBFWFBFQ1RfTkVBUihzdGQ6OnNxcnQoa01lYW4p
LCBtb21lbnRzLnNrZXduZXNzLCBrTWVhbiAqIDAuMDIpOworICBFWFBFQ1RfTFQoMi4wLCBtb21l
bnRzLmt1cnRvc2lzKTsKK30KKworVEVTVF9GKFJhbmRvbURpc3RyaWJ1dGlvbnNUZXN0LCBCZXJu
b3VsbGkpIHsKKyAgY29uc3RleHByIGRvdWJsZSBrUCA9IDAuNTE1MTUxNTE1MTsKKyAgc3RkOjp2
ZWN0b3I8ZG91YmxlPiB2YWx1ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdl
bjsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVzW2ldID0g
YWJzbDo6QmVybm91bGxpKGdlbiwga1ApOworICB9CisKKyAgY29uc3QgYXV0byBtb21lbnRzID0K
KyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1vbWVudHMo
dmFsdWVzKTsKKyAgRVhQRUNUX05FQVIoa1AsIG1vbWVudHMubWVhbiwgMC4wMSk7Cit9CisKK1RF
U1RfRihSYW5kb21EaXN0cmlidXRpb25zVGVzdCwgQmV0YSkgeworICBjb25zdGV4cHIgZG91Ymxl
IGtBbHBoYSA9IDIuMDsKKyAgY29uc3RleHByIGRvdWJsZSBrQmV0YSA9IDMuMDsKKyAgc3RkOjp2
ZWN0b3I8ZG91YmxlPiB2YWx1ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdl
bjsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVzW2ldID0g
YWJzbDo6QmV0YShnZW4sIGtBbHBoYSwga0JldGEpOworICB9CisKKyAgY29uc3QgYXV0byBtb21l
bnRzID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1v
bWVudHModmFsdWVzKTsKKyAgRVhQRUNUX05FQVIoMC40LCBtb21lbnRzLm1lYW4sIDAuMDEpOwor
fQorCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0aW9uc1Rlc3QsIFppcGYpIHsKKyAgc3RkOjp2ZWN0
b3I8ZG91YmxlPiB2YWx1ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdlbjsK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVzW2ldID0gYWJz
bDo6WmlwZjxpbnQ2NF90PihnZW4sIDEwMCk7CisgIH0KKworICAvLyBUaGUgbWVhbiBvZiBhIHpp
cGYgZGlzdHJpYnV0aW9uIGlzOiBIKE4sIHMtMSkgLyBIKE4scykuCisgIC8vIEdpdmVuIHRoZSBw
YXJhbWV0ZXIgdiA9IDEsIHRoaXMgZ2l2ZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbjoKKyAgLy8g
KEhuKDEwMCwgMSkgLSBIbigxLDEpKSAvIChIbigxMDAsMikgLSBIbigxLDIpKSA9IDYuNTk0NAor
ICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDb21w
dXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICBFWFBFQ1RfTkVBUig2LjU5NDQsIG1v
bWVudHMubWVhbiwgMjAwMCkgPDwgbW9tZW50czsKK30KKworVEVTVF9GKFJhbmRvbURpc3RyaWJ1
dGlvbnNUZXN0LCBHYXVzc2lhbikgeworICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHZhbHVlcyhrU2l6
ZSk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBmb3IgKGludCBpID0gMDsgaSA8
IGtTaXplOyBpKyspIHsKKyAgICB2YWx1ZXNbaV0gPSBhYnNsOjpHYXVzc2lhbjxkb3VibGU+KGdl
bik7CisgIH0KKworICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJzbDo6cmFuZG9tX2lu
dGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICBFWFBFQ1RfTkVB
UigwLjAsIG1vbWVudHMubWVhbiwgMC4wMik7CisgIEVYUEVDVF9ORUFSKDEuMCwgbW9tZW50cy52
YXJpYW5jZSwgMC4wNCk7CisgIEVYUEVDVF9ORUFSKDAsIG1vbWVudHMuc2tld25lc3MsIDAuMik7
CisgIEVYUEVDVF9ORUFSKDMuMCwgbW9tZW50cy5rdXJ0b3NpcywgMC41KTsKK30KKworVEVTVF9G
KFJhbmRvbURpc3RyaWJ1dGlvbnNUZXN0LCBMb2dVbmlmb3JtKSB7CisgIHN0ZDo6dmVjdG9yPGRv
dWJsZT4gdmFsdWVzKGtTaXplKTsKKworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47CisgIGZv
ciAoaW50IGkgPSAwOyBpIDwga1NpemU7IGkrKykgeworICAgIHZhbHVlc1tpXSA9IGFic2w6Okxv
Z1VuaWZvcm08aW50NjRfdD4oZ2VuLCAwLCAoMSA8PCAxMCkgLSAxKTsKKyAgfQorCisgIC8vIFRo
ZSBtZWFuIGlzIHRoZSBzdW0gb2YgdGhlIGZyYWN0aW9uYWwgbWVhbnMgb2YgdGhlIHVuaWZvcm0g
ZGlzdHJpYnV0aW9uczoKKyAgLy8gWzAuLjBdWzEuLjFdWzIuLjNdWzQuLjddWzguLjE1XVsxNi4u
MzFdWzMyLi42M10KKyAgLy8gWzY0Li4xMjddWzEyOC4uMjU1XVsyNTYuLjUxMV1bNTEyLi4xMDIz
XQorICBjb25zdCBkb3VibGUgbWVhbiA9ICgwICsgMSArIDEgKyAyICsgMyArIDQgKyA3ICsgOCAr
IDE1ICsgMTYgKyAzMSArIDMyICsgNjMgKworICAgICAgICAgICAgICAgICAgICAgICA2NCArIDEy
NyArIDEyOCArIDI1NSArIDI1NiArIDUxMSArIDUxMiArIDEwMjMpIC8KKyAgICAgICAgICAgICAg
ICAgICAgICAoMi4wICogMTEuMCk7CisKKyAgY29uc3QgYXV0byBtb21lbnRzID0KKyAgICAgIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1vbWVudHModmFsdWVzKTsK
KyAgRVhQRUNUX05FQVIobWVhbiwgbW9tZW50cy5tZWFuLCAyKSA8PCBtb21lbnRzOworfQorCit9
ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9leGFtcGxlc190ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2V4YW1wbGVzX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjFkY2I1MTQ2ZjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2V4YW1wbGVzX3Rlc3QuY2MKQEAgLTAsMCArMSw5OSBAQAorLy8gQ29weXJpZ2h0IDIwMTcg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxjaW50dHlwZXM+CisjaW5jbHVkZSA8
cmFuZG9tPgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9yYW5kb20uaCIKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVzZShUKSB7fQorCitURVNUKEV4YW1wbGVzLCBCYXNp
YykgeworICBhYnNsOjpCaXRHZW4gZ2VuOworICBzdGQ6OnZlY3RvcjxpbnQ+IG9ianMgPSB7MTAs
IDIwLCAzMCwgNDAsIDUwfTsKKworICAvLyBDaG9vc2UgYW4gZWxlbWVudCBmcm9tIGEgc2V0Lgor
ICBhdXRvIGVsZW0gPSBvYmpzW2Fic2w6OlVuaWZvcm0oZ2VuLCAwdSwgb2Jqcy5zaXplKCkpXTsK
KyAgVXNlKGVsZW0pOworCisgIC8vIEdlbmVyYXRlIGEgdW5pZm9ybSB2YWx1ZSBiZXR3ZWVuIDEg
YW5kIDYuCisgIGF1dG8gZGljZV9yb2xsID0gYWJzbDo6VW5pZm9ybTxpbnQ+KGFic2w6OkludGVy
dmFsQ2xvc2VkQ2xvc2VkLCBnZW4sIDEsIDYpOworICBVc2UoZGljZV9yb2xsKTsKKworICAvLyBH
ZW5lcmF0ZSBhIHJhbmRvbSBieXRlLgorICBhdXRvIGJ5dGUgPSBhYnNsOjpVbmlmb3JtPHVpbnQ4
X3Q+KGdlbik7CisgIFVzZShieXRlKTsKKworICAvLyBHZW5lcmF0ZSBhIGZyYWN0aW9uYWwgdmFs
dWUgZnJvbSBbMGYsIDFmKS4KKyAgYXV0byBmcmFjdGlvbiA9IGFic2w6OlVuaWZvcm08ZmxvYXQ+
KGdlbiwgMCwgMSk7CisgIFVzZShmcmFjdGlvbik7CisKKyAgLy8gVG9zcyBhIGZhaXIgY29pbjsg
NTAvNTAgcHJvYmFiaWxpdHkuCisgIGJvb2wgY29pbl90b3NzID0gYWJzbDo6QmVybm91bGxpKGdl
biwgMC41KTsKKyAgVXNlKGNvaW5fdG9zcyk7CisKKyAgLy8gU2VsZWN0IGEgZmlsZSBzaXplIGJl
dHdlZW4gMWsgYW5kIDEwTUIsIGJpYXNlZCB0b3dhcmRzIHNtYWxsZXIgZmlsZSBzaXplcy4KKyAg
YXV0byBmaWxlX3NpemUgPSBhYnNsOjpMb2dVbmlmb3JtPHNpemVfdD4oZ2VuLCAxMDAwLCAxMCAq
IDEwMDAgKiAxMDAwKTsKKyAgVXNlKGZpbGVfc2l6ZSk7CisKKyAgLy8gUmFuZG9taXplIChzaHVm
ZmxlKSBhIGNvbGxlY3Rpb24uCisgIHN0ZDo6c2h1ZmZsZShzdGQ6OmJlZ2luKG9ianMpLCBzdGQ6
OmVuZChvYmpzKSwgZ2VuKTsKK30KKworVEVTVChFeGFtcGxlcywgQ3JlYXRlaW5nQ29ycmVsYXRl
ZFZhcmlhdGVTZXF1ZW5jZXMpIHsKKyAgLy8gVW5leHBlY3RlZCBQUk5HIGNvcnJlbGF0aW9uIGlz
IG9mdGVuIGEgc291cmNlIG9mIGJ1Z3MsCisgIC8vIHNvIHdoZW4gdXNpbmcgYWJzbDo6Qml0R2Vu
IGl0IG11c3QgYmUgYW4gaW50ZW50aW9uYWwgY2hvaWNlLgorICAvLyBOT1RFOiBBbGwgb2YgdGhl
c2Ugb25seSBleGhpYml0IHByb2Nlc3MtbGV2ZWwgc3RhYmlsaXR5LgorCisgIC8vIENyZWF0ZSBh
IGNvcnJlbGF0ZWQgc2VxdWVuY2UgZnJvbSBzeXN0ZW0gZW50cm9weS4KKyAgeworICAgIGF1dG8g
bXlfc2VlZCA9IGFic2w6Ok1ha2VTZWVkU2VxKCk7CisKKyAgICBhYnNsOjpCaXRHZW4gZ2VuXzEo
bXlfc2VlZCk7CisgICAgYWJzbDo6Qml0R2VuIGdlbl8yKG15X3NlZWQpOyAgLy8gUHJvZHVjZXMg
c2FtZSB2YXJpYXRlcyBhcyBnZW5fMS4KKworICAgIEVYUEVDVF9FUShhYnNsOjpCZXJub3VsbGko
Z2VuXzEsIDAuNSksIGFic2w6OkJlcm5vdWxsaShnZW5fMiwgMC41KSk7CisgICAgRVhQRUNUX0VR
KGFic2w6OlVuaWZvcm08dWludDMyX3Q+KGdlbl8xKSwgYWJzbDo6VW5pZm9ybTx1aW50MzJfdD4o
Z2VuXzIpKTsKKyAgfQorCisgIC8vIENyZWF0ZSBhIGNvcnJlbGF0ZWQgc2VxdWVuY2UgZnJvbSBh
biBleGlzdGluZyBVUkJHLgorICB7CisgICAgYWJzbDo6Qml0R2VuIGdlbjsKKworICAgIGF1dG8g
bXlfc2VlZCA9IGFic2w6OkNyZWF0ZVNlZWRTZXFGcm9tKCZnZW4pOworICAgIGFic2w6OkJpdEdl
biBnZW5fMShteV9zZWVkKTsKKyAgICBhYnNsOjpCaXRHZW4gZ2VuXzIobXlfc2VlZCk7CisKKyAg
ICBFWFBFQ1RfRVEoYWJzbDo6QmVybm91bGxpKGdlbl8xLCAwLjUpLCBhYnNsOjpCZXJub3VsbGko
Z2VuXzIsIDAuNSkpOworICAgIEVYUEVDVF9FUShhYnNsOjpVbmlmb3JtPHVpbnQzMl90PihnZW5f
MSksIGFic2w6OlVuaWZvcm08dWludDMyX3Q+KGdlbl8yKSk7CisgIH0KKworICAvLyBBbiBhbHRl
cm5hdGUgY29uc3RydWN0aW9uIHdoaWNoIHVzZXMgdXNlci1zdXBwbGllZCBkYXRhCisgIC8vIGlu
c3RlYWQgb2YgYSByYW5kb20gc2VlZC4KKyAgeworICAgIGNvbnN0IGNoYXIga0RhdGFbXSA9ICJB
IHNpbXBsZSBzZWVkIHN0cmluZyI7CisgICAgc3RkOjpzZWVkX3NlcSBteV9zZWVkKHN0ZDo6YmVn
aW4oa0RhdGEpLCBzdGQ6OmVuZChrRGF0YSkpOworCisgICAgYWJzbDo6Qml0R2VuIGdlbl8xKG15
X3NlZWQpOworICAgIGFic2w6OkJpdEdlbiBnZW5fMihteV9zZWVkKTsKKworICAgIEVYUEVDVF9F
UShhYnNsOjpCZXJub3VsbGkoZ2VuXzEsIDAuNSksIGFic2w6OkJlcm5vdWxsaShnZW5fMiwgMC41
KSk7CisgICAgRVhQRUNUX0VRKGFic2w6OlVuaWZvcm08dWludDMyX3Q+KGdlbl8xKSwgYWJzbDo6
VW5pZm9ybTx1aW50MzJfdD4oZ2VuXzIpKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZXhwb25lbnRp
YWxfZGlzdHJpYnV0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmM4YWYxOTc1NzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2V4cG9uZW50aWFs
X2Rpc3RyaWJ1dGlvbi5oCkBAIC0wLDAgKzEsMTU3IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9FWFBPTkVOVElBTF9ESVNU
UklCVVRJT05fSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fRVhQT05FTlRJQUxfRElTVFJJQlVUSU9O
X0hfCisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGlz
dHJlYW0+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGwuaCIKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oIgorI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyLmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKKworLy8gYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uOgorLy8gR2VuZXJhdGVz
IGEgbnVtYmVyIGNvbmZvcm1pbmcgdG8gYW4gZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uIGFuZCBp
cworLy8gZXF1aXZhbGVudCB0byB0aGUgc3RhbmRhcmQgW3JhbmQuZGlzdC5wb2lzLmV4cF0gZGlz
dHJpYnV0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlID0gZG91YmxlPgorY2xhc3Mg
ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBl
ID0gUmVhbFR5cGU7CisKKyAgY2xhc3MgcGFyYW1fdHlwZSB7CisgICBwdWJsaWM6CisgICAgdXNp
bmcgZGlzdHJpYnV0aW9uX3R5cGUgPSBleHBvbmVudGlhbF9kaXN0cmlidXRpb247CisKKyAgICBl
eHBsaWNpdCBwYXJhbV90eXBlKHJlc3VsdF90eXBlIGxhbWJkYSA9IDEpIDogbGFtYmRhXyhsYW1i
ZGEpIHsKKyAgICAgIGFzc2VydChsYW1iZGEgPiAwKTsKKyAgICAgIG5lZ19pbnZfbGFtYmRhXyA9
IC1yZXN1bHRfdHlwZSgxKSAvIGxhbWJkYV87CisgICAgfQorCisgICAgcmVzdWx0X3R5cGUgbGFt
YmRhKCkgY29uc3QgeyByZXR1cm4gbGFtYmRhXzsgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICBy
ZXR1cm4gYS5sYW1iZGFfID09IGIubGFtYmRhXzsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAg
ICAgIHJldHVybiAhKGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBleHBvbmVudGlhbF9kaXN0cmlidXRpb247CisKKyAgICByZXN1bHRfdHlwZSBsYW1iZGFf
OworICAgIHJlc3VsdF90eXBlIG5lZ19pbnZfbGFtYmRhXzsKKworICAgIHN0YXRpY19hc3NlcnQo
CisgICAgICAgIHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8UmVhbFR5cGU+Ojp2YWx1ZSwKKyAgICAg
ICAgIkNsYXNzLXRlbXBsYXRlIGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjw+IG11c3Qg
YmUgcGFyYW1ldGVyaXplZCAiCisgICAgICAgICJ1c2luZyBhIGZsb2F0aW5nLXBvaW50IHR5cGUu
Iik7CisgIH07CisKKyAgZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uKCkgOiBleHBvbmVudGlhbF9k
aXN0cmlidXRpb24oMSkge30KKworICBleHBsaWNpdCBleHBvbmVudGlhbF9kaXN0cmlidXRpb24o
cmVzdWx0X3R5cGUgbGFtYmRhKSA6IHBhcmFtXyhsYW1iZGEpIHt9CisKKyAgZXhwbGljaXQgZXhw
b25lbnRpYWxfZGlzdHJpYnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUmIHApIDogcGFyYW1fKHApIHt9
CisKKyAgdm9pZCByZXNldCgpIHt9CisKKyAgLy8gR2VuZXJhdGluZyBmdW5jdGlvbnMKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVVJCRyYgZykg
eyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICByZXR1cm4gKCp0aGlzKShnLCBw
YXJhbV8pOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBl
IG9wZXJhdG9yKCkoVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgcCk7CisKKyAgcGFyYW1fdHlw
ZSBwYXJhbSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXzsgfQorICB2b2lkIHBhcmFtKGNvbnN0IHBh
cmFtX3R5cGUmIHApIHsgcGFyYW1fID0gcDsgfQorCisgIHJlc3VsdF90eXBlKG1pbikoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgIHJlc3VsdF90eXBlKG1heCkoKSBjb25zdCB7CisgICAgcmV0dXJu
IHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjppbmZpbml0eSgpOworICB9CisKKyAg
cmVzdWx0X3R5cGUgbGFtYmRhKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fLmxhbWJkYSgpOyB9CisK
KyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBvbmVudGlhbF9kaXN0cmlidXRpb24m
IGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwb25lbnRpYWxfZGlzdHJpYnV0
aW9uJiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fID09IGIucGFyYW1fOworICB9CisgIGZyaWVu
ZCBib29sIG9wZXJhdG9yIT0oY29uc3QgZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uJiBhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbiYgYikg
eworICAgIHJldHVybiBhLnBhcmFtXyAhPSBiLnBhcmFtXzsKKyAgfQorCisgcHJpdmF0ZToKKyAg
cGFyYW1fdHlwZSBwYXJhbV87CisgIHJhbmRvbV9pbnRlcm5hbDo6RmFzdFVuaWZvcm1CaXRzPHVp
bnQ2NF90PiBmYXN0X3U2NF87Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gSW1wbGVt
ZW50YXRpb24gZGV0YWlscyBmb2xsb3cKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBSZWFsVHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordHlwZW5hbWUg
ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjo6cmVzdWx0X3R5cGUKK2V4cG9uZW50
aWFsX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46Om9wZXJhdG9yKCkoCisgICAgVVJCRyYgZywgIC8v
IE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgY29uc3QgcGFyYW1fdHlwZSYgcCkgewor
ICB1c2luZyByYW5kb21faW50ZXJuYWw6Ok5lZ2F0aXZlVmFsdWVUOworICBjb25zdCByZXN1bHRf
dHlwZSB1ID0gcmFuZG9tX2ludGVybmFsOjpSYW5kVTY0VG9SZWFsPAorICAgICAgcmVzdWx0X3R5
cGU+Ojp0ZW1wbGF0ZSBWYWx1ZTxOZWdhdGl2ZVZhbHVlVCwgZmFsc2U+KGZhc3RfdTY0XyhnKSk7
CisgIC8vIGxvZzFwKC14KSBpcyBtYXRoZW1hdGljYWxseSBlcXVpdmFsZW50IHRvIGxvZygxIC0g
eCkgYnV0IGhhcyBtb3JlCisgIC8vIGFjY3VyYWN5IGZvciB4IG5lYXIgemVyby4KKyAgcmV0dXJu
IHAubmVnX2ludl9sYW1iZGFfICogc3RkOjpsb2cxcCh1KTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFJlYWxUeXBlPgorc3RkOjpiYXNp
Y19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0
cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICAgIGNvbnN0IGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT4mIHgpIHsKKyAgYXV0
byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKG9zKTsK
KyAgb3MucHJlY2lzaW9uKHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8
UmVhbFR5cGU+OjprUHJlY2lzaW9uKTsKKyAgb3MgPDwgeC5sYW1iZGEoKTsKKyAgcmV0dXJuIG9z
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgUmVhbFR5cGU+CitzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9y
Pj4oCisgICAgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBpcywgICAgLy8gTk9M
SU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBleHBvbmVudGlhbF9kaXN0cmlidXRpb248UmVh
bFR5cGU+JiB4KSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICB1c2luZyByZXN1
bHRfdHlwZSA9IHR5cGVuYW1lIGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46OnJl
c3VsdF90eXBlOworICB1c2luZyBwYXJhbV90eXBlID0gdHlwZW5hbWUgZXhwb25lbnRpYWxfZGlz
dHJpYnV0aW9uPFJlYWxUeXBlPjo6cGFyYW1fdHlwZTsKKyAgcmVzdWx0X3R5cGUgbGFtYmRhOwor
CisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2VfaXN0cmVhbV9zdGF0ZV9zYXZl
cihpcyk7CisgIGxhbWJkYSA9IHJhbmRvbV9pbnRlcm5hbDo6cmVhZF9mbG9hdGluZ19wb2ludDxy
ZXN1bHRfdHlwZT4oaXMpOworICBpZiAoIWlzLmZhaWwoKSkgeworICAgIHgucGFyYW0ocGFyYW1f
dHlwZShsYW1iZGEpKTsKKyAgfQorICByZXR1cm4gaXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fRVhQT05FTlRJQUxfRElTVFJJQlVUSU9OX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uX3Rlc3QuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZmODg2NWMyNTk5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2V4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCkBA
IC0wLDAgKzEsNDIyIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KworI2luY2x1ZGUgImFic2wvcmFuZG9tL2V4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbi5oIgorCisj
aW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRkZWY+
CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxsaW1p
dHM+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3Ry
aW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1
ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFj
cm9zLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaCIKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgiCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIK
KyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oIgorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9zdHJfcmVwbGFjZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpcC5oIgorCitu
YW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OmtDaGlTcXVhcmVkOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGU+CitjbGFzcyBFeHBvbmVudGlhbERpc3RyaWJ1
dGlvblR5cGVkVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3VzaW5nIFJlYWxU
eXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8ZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3VibGU+OworVFlQ
RURfVEVTVF9DQVNFKEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVHlwZWRUZXN0LCBSZWFsVHlwZXMp
OworCitUWVBFRF9URVNUKEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVHlwZWRUZXN0LCBTZXJpYWxp
emVUZXN0KSB7CisgIHVzaW5nIHBhcmFtX3R5cGUgPQorICAgICAgdHlwZW5hbWUgYWJzbDo6ZXhw
b25lbnRpYWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7CisKKyAgY29uc3Qg
VHlwZVBhcmFtIGtQYXJhbXNbXSA9IHsKKyAgICAgIC8vIENhc2VzIGFyb3VuZCAxLgorICAgICAg
MSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgIHN0
ZDo6bmV4dGFmdGVyKFR5cGVQYXJhbSgxKSwgVHlwZVBhcmFtKDApKSwgIC8vIDEgLSBlcHNpbG9u
CisgICAgICBzdGQ6Om5leHRhZnRlcihUeXBlUGFyYW0oMSksIFR5cGVQYXJhbSgyKSksICAvLyAx
ICsgZXBzaWxvbgorICAgICAgLy8gVHlwaWNhbCBjYXNlcy4KKyAgICAgIFR5cGVQYXJhbSgxZS04
KSwgVHlwZVBhcmFtKDFlLTQpLCBUeXBlUGFyYW0oMSksIFR5cGVQYXJhbSgyKSwKKyAgICAgIFR5
cGVQYXJhbSgxZTQpLCBUeXBlUGFyYW0oMWU4KSwgVHlwZVBhcmFtKDFlMjApLCBUeXBlUGFyYW0o
Mi41KSwKKyAgICAgIC8vIEJvdW5kYXJ5IGNhc2VzLgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czxUeXBlUGFyYW0+OjptYXgoKSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFt
Pjo6ZXBzaWxvbigpLAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxU
eXBlUGFyYW0+OjptaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbSgxKSksICAg
ICAgICAgICAvLyBtaW4gKyBlcHNpbG9uCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQ
YXJhbT46Om1pbigpLCAgLy8gc21hbGxlc3Qgbm9ybWFsCisgICAgICAvLyBUaGVyZSBhcmUgc29t
ZSBlcnJvcnMgZGVhbGluZyB3aXRoIGRlbm9ybXMgb24gYXBwbGUgcGxhdGZvcm1zLgorICAgICAg
c3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjpkZW5vcm1fbWluKCksICAvLyBzbWFsbGVz
dCBkZW5vcm0KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWluKCkgLyAy
LCAgICAgLy8gZGVub3JtCisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRz
PFR5cGVQYXJhbT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtKDApKSwg
IC8vIGRlbm9ybV9tYXgKKyAgfTsKKworICBjb25zdGV4cHIgaW50IGtDb3VudCA9IDEwMDA7Cisg
IGFic2w6Okluc2VjdXJlQml0R2VuIGdlbjsKKworICBmb3IgKGNvbnN0IFR5cGVQYXJhbSBsYW1i
ZGEgOiBrUGFyYW1zKSB7CisgICAgLy8gU29tZSB2YWx1ZXMgbWF5IGJlIGludmFsaWQ7IHNraXAg
dGhvc2UuCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGxhbWJkYSkpIGNvbnRpbnVlOworICAgIEFC
U0xfQVNTRVJUKGxhbWJkYSA+IDApOworCisgICAgY29uc3QgcGFyYW1fdHlwZSBwYXJhbShsYW1i
ZGEpOworCisgICAgYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gYmVm
b3JlKGxhbWJkYSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5sYW1iZGEoKSwgcGFyYW0ubGFtYmRh
KCkpOworCisgICAgeworICAgICAgYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPFR5cGVQ
YXJhbT4gdmlhX3BhcmFtKHBhcmFtKTsKKyAgICAgIEVYUEVDVF9FUSh2aWFfcGFyYW0sIGJlZm9y
ZSk7CisgICAgICBFWFBFQ1RfRVEodmlhX3BhcmFtLnBhcmFtKCksIGJlZm9yZS5wYXJhbSgpKTsK
KyAgICB9CisKKyAgICAvLyBTbW9rZSB0ZXN0LgorICAgIGF1dG8gc2FtcGxlX21pbiA9IGJlZm9y
ZS5tYXgoKTsKKyAgICBhdXRvIHNhbXBsZV9tYXggPSBiZWZvcmUubWluKCk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBrQ291bnQ7IGkrKykgeworICAgICAgYXV0byBzYW1wbGUgPSBiZWZvcmUo
Z2VuKTsKKyAgICAgIEVYUEVDVF9HRShzYW1wbGUsIGJlZm9yZS5taW4oKSkgPDwgYmVmb3JlOwor
ICAgICAgRVhQRUNUX0xFKHNhbXBsZSwgYmVmb3JlLm1heCgpKSA8PCBiZWZvcmU7CisgICAgICBp
ZiAoc2FtcGxlID4gc2FtcGxlX21heCkgc2FtcGxlX21heCA9IHNhbXBsZTsKKyAgICAgIGlmIChz
YW1wbGUgPCBzYW1wbGVfbWluKSBzYW1wbGVfbWluID0gc2FtcGxlOworICAgIH0KKyAgICBpZiAo
IXN0ZDo6aXNfc2FtZTxUeXBlUGFyYW0sIGxvbmcgZG91YmxlPjo6dmFsdWUpIHsKKyAgICAgIEFC
U0xfSU5URVJOQUxfTE9HKElORk8sCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTdHJG
b3JtYXQoIlJhbmdlIHslZn06ICVmLCAlZiwgbGFtYmRhPSVmIiwgbGFtYmRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9taW4sIHNhbXBsZV9tYXgsIGxh
bWJkYSkpOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgIHNzIDw8IGJl
Zm9yZTsKKworICAgIGlmICghc3RkOjppc2Zpbml0ZShsYW1iZGEpKSB7CisgICAgICAvLyBTdHJl
YW1zIGRvIG5vdCBkZXNlcmlhbGl6ZSBpbmYvbmFuIGNvcnJlY3RseS4KKyAgICAgIGNvbnRpbnVl
OworICAgIH0KKyAgICAvLyBWYWxpZGF0ZSBzdHJlYW0gc2VyaWFsaXphdGlvbi4KKyAgICBhYnNs
OjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBhZnRlcigzNC41NmYpOworCisg
ICAgRVhQRUNUX05FKGJlZm9yZS5sYW1iZGEoKSwgYWZ0ZXIubGFtYmRhKCkpOworICAgIEVYUEVD
VF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgICAgRVhQRUNUX05FKGJlZm9y
ZSwgYWZ0ZXIpOworCisgICAgc3MgPj4gYWZ0ZXI7CisKKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0
X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBcCisg
ICAgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBDX18pCisgICAgaWYgKHN0ZDo6aXNf
c2FtZTxUeXBlUGFyYW0sIGxvbmcgZG91YmxlPjo6dmFsdWUpIHsKKyAgICAgIC8vIFJvdW5kdHJp
cHBpbmcgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIHJlcXVpcmVzIHN1ZmZpY2llbnQgcHJlY2lzaW9u
IHRvCisgICAgICAvLyByZWNvbnN0cnVjdCB0aGUgZXhhY3QgdmFsdWUuIEl0IHR1cm5zIG91dCB0
aGF0IGxvbmcgZG91YmxlIGhhcyBzb21lCisgICAgICAvLyBlcnJvcnMgZG9pbmcgdGhpcyBvbiBw
cGMsIHBhcnRpY3VsYXJseSBmb3IgdmFsdWVzCisgICAgICAvLyBuZWFyIHsxLjAgKy8tIGVwc2ls
b259LgorICAgICAgaWYgKGxhbWJkYSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1h
eCgpICYmCisgICAgICAgICAgbGFtYmRhID49IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
bG93ZXN0KCkpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGRvdWJsZT4oYmVmb3Jl
LmxhbWJkYSgpKSwKKyAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oYWZ0ZXIu
bGFtYmRhKCkpKQorICAgICAgICAgICAgPDwgc3Muc3RyKCk7CisgICAgICB9CisgICAgICBjb250
aW51ZTsKKyAgICB9CisjZW5kaWYKKworICAgIEVYUEVDVF9FUShiZWZvcmUubGFtYmRhKCksIGFm
dGVyLmxhbWJkYSgpKSAgLy8KKyAgICAgICAgPDwgc3Muc3RyKCkgPDwgIiAiICAgICAgICAgICAg
ICAgICAgICAgIC8vCisgICAgICAgIDw8IChzcy5nb29kKCkgPyAiZ29vZCAiIDogIiIpICAgICAg
ICAgICAvLworICAgICAgICA8PCAoc3MuYmFkKCkgPyAiYmFkICIgOiAiIikgICAgICAgICAgICAg
Ly8KKyAgICAgICAgPDwgKHNzLmVvZigpID8gImVvZiAiIDogIiIpICAgICAgICAgICAgIC8vCisg
ICAgICAgIDw8IChzcy5mYWlsKCkgPyAiZmFpbCAiIDogIiIpOworICB9Cit9CisKKy8vIGh0dHA6
Ly93d3cuaXRsLm5pc3QuZ292L2Rpdjg5OC9oYW5kYm9vay9lZGEvc2VjdGlvbjMvZWRhMzY2Ny5o
dG0KKworY2xhc3MgRXhwb25lbnRpYWxNb2RlbCB7CisgcHVibGljOgorICBleHBsaWNpdCBFeHBv
bmVudGlhbE1vZGVsKGRvdWJsZSBsYW1iZGEpCisgICAgICA6IGxhbWJkYV8obGFtYmRhKSwgYmV0
YV8oMS4wIC8gbGFtYmRhKSB7fQorCisgIGRvdWJsZSBsYW1iZGEoKSBjb25zdCB7IHJldHVybiBs
YW1iZGFfOyB9CisKKyAgZG91YmxlIG1lYW4oKSBjb25zdCB7IHJldHVybiBiZXRhXzsgfQorICBk
b3VibGUgdmFyaWFuY2UoKSBjb25zdCB7IHJldHVybiBiZXRhXyAqIGJldGFfOyB9CisgIGRvdWJs
ZSBzdGRkZXYoKSBjb25zdCB7IHJldHVybiBzdGQ6OnNxcnQodmFyaWFuY2UoKSk7IH0KKyAgZG91
YmxlIHNrZXcoKSBjb25zdCB7IHJldHVybiAyOyB9CisgIGRvdWJsZSBrdXJ0b3NpcygpIGNvbnN0
IHsgcmV0dXJuIDYuMDsgfQorCisgIGRvdWJsZSBDREYoZG91YmxlIHgpIHsgcmV0dXJuIDEuMCAt
IHN0ZDo6ZXhwKC1sYW1iZGFfICogeCk7IH0KKworICAvLyBUaGUgaW52ZXJzZSBDREYsIG9yIFBl
cmNlbnRQb2ludCBmdW5jdGlvbiBvZiB0aGUgZGlzdHJpYnV0aW9uCisgIGRvdWJsZSBJbnZlcnNl
Q0RGKGRvdWJsZSBwKSB7CisgICAgQUJTTF9BU1NFUlQocCA+PSAwLjApOworICAgIEFCU0xfQVNT
RVJUKHAgPCAxLjApOworICAgIHJldHVybiAtYmV0YV8gKiBzdGQ6OmxvZygxLjAgLSBwKTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgY29uc3QgZG91YmxlIGxhbWJkYV87CisgIGNvbnN0IGRvdWJsZSBi
ZXRhXzsKK307CisKK3N0cnVjdCBQYXJhbSB7CisgIGRvdWJsZSBsYW1iZGE7CisgIGRvdWJsZSBw
X2ZhaWw7CisgIGludCB0cmlhbHM7Cit9OworCitjbGFzcyBFeHBvbmVudGlhbERpc3RyaWJ1dGlv
blRlc3RzIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08UGFyYW0+LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBFeHBvbmVudGlhbE1vZGVsIHsKKyBw
dWJsaWM6CisgIEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVGVzdHMoKSA6IEV4cG9uZW50aWFsTW9k
ZWwoR2V0UGFyYW0oKS5sYW1iZGEpIHt9CisKKyAgLy8gU2luZ2xlWlRlc3QgcHJvdmlkZXMgYSBi
YXNpYyB6LXNxdWFyZWQgdGVzdCBvZiB0aGUgbWVhbiB2cy4gZXhwZWN0ZWQKKyAgLy8gbWVhbiBm
b3IgZGF0YSBnZW5lcmF0ZWQgYnkgdGhlIHBvaXNzb24gZGlzdHJpYnV0aW9uLgorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRD4KKyAgYm9vbCBTaW5nbGVaVGVzdChjb25zdCBkb3VibGUgcCwgY29uc3Qg
c2l6ZV90IHNhbXBsZXMpOworCisgIC8vIFNpbmdsZUNoaVNxdWFyZWRUZXN0IHByb3ZpZGVzIGEg
YmFzaWMgY2hpLXNxdWFyZWQgdGVzdCBvZiB0aGUgbm9ybWFsCisgIC8vIGRpc3RyaWJ1dGlvbi4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEQ+CisgIGRvdWJsZSBTaW5nbGVDaGlTcXVhcmVkVGVzdCgp
OworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZ187Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRD4KK2Jvb2wgRXhwb25lbnRpYWxEaXN0cmlidXRpb25UZXN0czo6U2luZ2xlWlRlc3QoY29u
c3QgZG91YmxlIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHNpemVfdCBzYW1wbGVzKSB7CisgIEQgZGlzKGxhbWJkYSgpKTsKKworICBzdGQ6
OnZlY3Rvcjxkb3VibGU+IGRhdGE7CisgIGRhdGEucmVzZXJ2ZShzYW1wbGVzKTsKKyAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzYW1wbGVzOyBpKyspIHsKKyAgICBjb25zdCBkb3VibGUgeCA9IGRp
cyhybmdfKTsKKyAgICBkYXRhLnB1c2hfYmFjayh4KTsKKyAgfQorCisgIGNvbnN0IGF1dG8gbSA9
IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1vbWVudHMoZGF0YSk7
CisgIGNvbnN0IGRvdWJsZSBtYXhfZXJyID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpNYXhFcnJv
clRvbGVyYW5jZShwKTsKKyAgY29uc3QgZG91YmxlIHogPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OlpTY29yZShtZWFuKCksIG0pOworICBjb25zdCBib29sIHBhc3MgPSBhYnNsOjpyYW5kb21faW50
ZXJuYWw6Ok5lYXIoInoiLCB6LCAwLjAsIG1heF9lcnIpOworCisgIGlmICghcGFzcykgeworICAg
IEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAgICBJTkZPLCBhYnNsOjpTdHJGb3JtYXQoInA9JWYg
bWF4X2Vycj0lZlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBsYW1iZGE9JWZc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgbWVhbj0lZiB2cy4gJWZcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3RkZGV2PSVmIHZzLiAlZlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiBza2V3bmVzcz0lZiB2cy4gJWZcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIga3VydG9zaXM9JWYgdnMuICVmXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIHo9JWYgdnMuIDAiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcCwgbWF4X2VyciwgbGFtYmRhKCksIG0ubWVhbiwgbWVhbigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjpzcXJ0KG0udmFyaWFuY2UpLCBzdGRkZXYoKSwgbS5z
a2V3bmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrZXcoKSwgbS5rdXJ0b3Np
cywga3VydG9zaXMoKSwgeikpOworICB9CisgIHJldHVybiBwYXNzOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRD4KK2RvdWJsZSBFeHBvbmVudGlhbERpc3RyaWJ1dGlvblRlc3RzOjpTaW5nbGVD
aGlTcXVhcmVkVGVzdCgpIHsKKyAgY29uc3Qgc2l6ZV90IGtTYW1wbGVzID0gMTAwMDA7CisgIGNv
bnN0IGludCBrQnVja2V0cyA9IDUwOworCisgIC8vIFRoZSBJbnZlcnNlQ0RGIGlzIHRoZSBwZXJj
ZW50IHBvaW50IGZ1bmN0aW9uIG9mIHRoZSBkaXN0cmlidXRpb24sIGFuZCBjYW4KKyAgLy8gYmUg
dXNlZCB0byBhc3NpZ24gYnVja2V0cyByb3VnaGx5IHVuaWZvcm1seS4KKyAgc3RkOjp2ZWN0b3I8
ZG91YmxlPiBjdXRvZmZzOworICBjb25zdCBkb3VibGUga0luYyA9IDEuMCAvIHN0YXRpY19jYXN0
PGRvdWJsZT4oa0J1Y2tldHMpOworICBmb3IgKGRvdWJsZSBwID0ga0luYzsgcCA8IDEuMDsgcCAr
PSBrSW5jKSB7CisgICAgY3V0b2Zmcy5wdXNoX2JhY2soSW52ZXJzZUNERihwKSk7CisgIH0KKyAg
aWYgKGN1dG9mZnMuYmFjaygpICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKSkgeworICAgIGN1dG9mZnMucHVzaF9iYWNrKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6aW5maW5pdHkoKSk7CisgIH0KKworICBEIGRpcyhsYW1iZGEoKSk7CisKKyAgc3RkOjp2ZWN0
b3I8aW50MzJfdD4gY291bnRzKGN1dG9mZnMuc2l6ZSgpLCAwKTsKKyAgZm9yIChpbnQgaiA9IDA7
IGogPCBrU2FtcGxlczsgaisrKSB7CisgICAgY29uc3QgZG91YmxlIHggPSBkaXMocm5nXyk7Cisg
ICAgYXV0byBpdCA9IHN0ZDo6dXBwZXJfYm91bmQoY3V0b2Zmcy5iZWdpbigpLCBjdXRvZmZzLmVu
ZCgpLCB4KTsKKyAgICBjb3VudHNbc3RkOjpkaXN0YW5jZShjdXRvZmZzLmJlZ2luKCksIGl0KV0r
KzsKKyAgfQorCisgIC8vIE51bGwtaHlwb3RoZXNpcyBpcyB0aGF0IHRoZSBkaXN0cmlidXRpb24g
aXMgZXhwb25lbnRpYWxseSBkaXN0cmlidXRlZAorICAvLyB3aXRoIHRoZSBwcm92aWRlZCBsYW1i
ZGEgKG5vdCBlc3RpbWF0ZWQgZnJvbSB0aGUgZGF0YSkuCisgIGNvbnN0IGludCBkb2YgPSBzdGF0
aWNfY2FzdDxpbnQ+KGNvdW50cy5zaXplKCkpIC0gMTsKKworICAvLyBPdXIgdGhyZXNob2xkIGZv
ciBsb2dnaW5nIGlzIDEtaW4tNTAuCisgIGNvbnN0IGRvdWJsZSB0aHJlc2hvbGQgPSBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVZhbHVlKGRvZiwgMC45OCk7CisKKyAgY29uc3QgZG91
YmxlIGV4cGVjdGVkID0KKyAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oa1NhbXBsZXMpIC8gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihjb3VudHMuc2l6ZSgpKTsKKworICBkb3VibGUgY2hpX3NxdWFyZSA9
IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlV2l0aEV4cGVjdGVkKAorICAgICAgc3Rk
OjpiZWdpbihjb3VudHMpLCBzdGQ6OmVuZChjb3VudHMpLCBleHBlY3RlZCk7CisgIGRvdWJsZSBw
ID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVQVmFsdWUoY2hpX3NxdWFyZSwgZG9m
KTsKKworICBpZiAoY2hpX3NxdWFyZSA+IHRocmVzaG9sZCkgeworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY3V0b2Zmcy5zaXplKCk7IGkrKykgeworICAgICAgQUJTTF9JTlRFUk5BTF9MT0coCisg
ICAgICAgICAgSU5GTywgYWJzbDo6U3RyRm9ybWF0KCIlZCA6ICglZikgPSAlZCIsIGksIGN1dG9m
ZnNbaV0sIGNvdW50c1tpXSkpOworICAgIH0KKworICAgIEFCU0xfSU5URVJOQUxfTE9HKElORk8s
CisgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6U3RyQ2F0KCJsYW1iZGEgIiwgbGFtYmRhKCks
ICJcbiIsICAgICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGV4cGVj
dGVkICIsIGV4cGVjdGVkLCAiXG4iLCAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga0NoaVNxdWFyZWQsICIgIiwgY2hpX3NxdWFyZSwgIiAoIiwgcCwgIilcbiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDaGlTcXVhcmVkLCAiIEAgMC45OCA9ICIs
IHRocmVzaG9sZCkpOworICB9CisgIHJldHVybiBwOworfQorCitURVNUX1AoRXhwb25lbnRpYWxE
aXN0cmlidXRpb25UZXN0cywgWlRlc3QpIHsKKyAgY29uc3Qgc2l6ZV90IGtTYW1wbGVzID0gMTAw
MDA7CisgIGNvbnN0IGF1dG8mIHBhcmFtID0gR2V0UGFyYW0oKTsKKyAgY29uc3QgaW50IGV4cGVj
dGVkX2ZhaWx1cmVzID0KKyAgICAgIHN0ZDo6bWF4KDEsIHN0YXRpY19jYXN0PGludD4oc3RkOjpj
ZWlsKHBhcmFtLnRyaWFscyAqIHBhcmFtLnBfZmFpbCkpKTsKKyAgY29uc3QgZG91YmxlIHAgPSBh
YnNsOjpyYW5kb21faW50ZXJuYWw6OlJlcXVpcmVkU3VjY2Vzc1Byb2JhYmlsaXR5KAorICAgICAg
cGFyYW0ucF9mYWlsLCBwYXJhbS50cmlhbHMpOworCisgIGludCBmYWlsdXJlcyA9IDA7CisgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcGFyYW0udHJpYWxzOyBpKyspIHsKKyAgICBmYWlsdXJlcyArPSBT
aW5nbGVaVGVzdDxhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248ZG91YmxlPj4ocCwga1Nh
bXBsZXMpCisgICAgICAgICAgICAgICAgICAgID8gMAorICAgICAgICAgICAgICAgICAgICA6IDE7
CisgIH0KKyAgRVhQRUNUX0xFKGZhaWx1cmVzLCBleHBlY3RlZF9mYWlsdXJlcyk7Cit9CisKK1RF
U1RfUChFeHBvbmVudGlhbERpc3RyaWJ1dGlvblRlc3RzLCBDaGlTcXVhcmVkVGVzdCkgeworICBj
b25zdCBpbnQga1RyaWFscyA9IDIwOworICBpbnQgZmFpbHVyZXMgPSAwOworCisgIGZvciAoaW50
IGkgPSAwOyBpIDwga1RyaWFsczsgaSsrKSB7CisgICAgZG91YmxlIHBfdmFsdWUgPQorICAgICAg
ICBTaW5nbGVDaGlTcXVhcmVkVGVzdDxhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248ZG91
YmxlPj4oKTsKKyAgICBpZiAocF92YWx1ZSA8IDAuMDA1KSB7ICAvLyAxLzIwMAorICAgICAgZmFp
bHVyZXMrKzsKKyAgICB9CisgIH0KKworICAvLyBUaGVyZSBpcyBhIDAuMTAlIGNoYW5jZSBvZiBw
cm9kdWNpbmcgYXQgbGVhc3Qgb25lIGZhaWx1cmUsIHNvIHJhaXNlIHRoZQorICAvLyBmYWlsdXJl
IHRocmVzaG9sZCBoaWdoIGVub3VnaCB0byBhbGxvdyBmb3IgYSBmbGFrZSByYXRlIDwgMTAsMDAw
LgorICBFWFBFQ1RfTEUoZmFpbHVyZXMsIDQpOworfQorCitzdGQ6OnZlY3RvcjxQYXJhbT4gR2Vu
UGFyYW1zKCkgeworICByZXR1cm4geworICAgICAgUGFyYW17MS4wLCAwLjAyLCAxMDB9LAorICAg
ICAgUGFyYW17Mi41LCAwLjAyLCAxMDB9LAorICAgICAgUGFyYW17MTAsIDAuMDIsIDEwMH0sCisg
ICAgICAvLyBsYXJnZQorICAgICAgUGFyYW17MWU0LCAwLjAyLCAxMDB9LAorICAgICAgUGFyYW17
MWU5LCAwLjAyLCAxMDB9LAorICAgICAgLy8gc21hbGwKKyAgICAgIFBhcmFtezAuMSwgMC4wMiwg
MTAwfSwKKyAgICAgIFBhcmFtezFlLTMsIDAuMDIsIDEwMH0sCisgICAgICBQYXJhbXsxZS01LCAw
LjAyLCAxMDB9LAorICB9OworfQorCitzdGQ6OnN0cmluZyBQYXJhbU5hbWUoY29uc3QgOjp0ZXN0
aW5nOjpUZXN0UGFyYW1JbmZvPFBhcmFtPiYgaW5mbykgeworICBjb25zdCBhdXRvJiBwID0gaW5m
by5wYXJhbTsKKyAgc3RkOjpzdHJpbmcgbmFtZSA9IGFic2w6OlN0ckNhdCgibGFtYmRhXyIsIGFi
c2w6OlNpeERpZ2l0cyhwLmxhbWJkYSkpOworICByZXR1cm4gYWJzbDo6U3RyUmVwbGFjZUFsbChu
YW1lLCB7eyIrIiwgIl8ifSwgeyItIiwgIl8ifSwgeyIuIiwgIl8ifX0pOworfQorCitJTlNUQU5U
SUFURV9URVNUX0NBU0VfUCgsIEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVGVzdHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKEdlblBhcmFtcygpKSwgUGFyYW1O
YW1lKTsKKworLy8gTk9URTogYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uIGlzIG5vdCBn
dWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4KK1RFU1QoRXhwb25lbnRpYWxEaXN0cmlidXRpb25UZXN0
LCBTdGFiaWxpdHlUZXN0KSB7CisgIC8vIGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbiBz
dGFiaWxpdHkgcmVsaWVzIG9uIHN0ZDo6bG9nMXAgYW5kCisgIC8vIGFic2w6OnVuaWZvcm1fcmVh
bF9kaXN0cmlidXRpb24uCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1
cmJnKAorICAgICAgezB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHhGRkNFQTUwRkRCMkY5NTNCdWxs
LCAweEMzMzJEREVGQkU2QzVBQTV1bGwsCisgICAgICAgMHg2NTU4MjE4NTY4QUI5NzAydWxsLCAw
eDJBRUY3REFENUI2RTJGODR1bGwsIDB4MTUyMUI2MjgyOTA3NjE3MHVsbCwKKyAgICAgICAweEVD
REQ0Nzc1NjE5RjE1MTB1bGwsIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbCwgMHgwMzM0RkUxRUFBMDM2
M0NGdWxsLAorICAgICAgIDB4QjU3MzVDOTA0QzcwQTIzOXVsbCwgMHhENTlFOUUwQkNCQUFERTE0
dWxsLCAweEVFQ0M4NkJDNjA2MjJDQTd1bGx9KTsKKworICBzdGQ6OnZlY3RvcjxpbnQ+IG91dHB1
dCgxNCk7CisKKyAgeworICAgIGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+
IGRpc3Q7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91dHB1dCksIHN0ZDo6ZW5kKG91
dHB1dCksCisgICAgICAgICAgICAgICAgICBbJl0geyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pigx
MDAwMC4wICogZGlzdCh1cmJnKSk7IH0pOworCisgICAgRVhQRUNUX0VRKDE0LCB1cmJnLmludm9j
YXRpb25zKCkpOworICAgIEVYUEVDVF9USEFUKG91dHB1dCwKKyAgICAgICAgICAgICAgICB0ZXN0
aW5nOjpFbGVtZW50c0FyZSgwLCA3MTkxMywgMTQzNzUsIDUwMzksIDE4MzUsIDg2MSwgMjU5MzYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODA0LCAxMjYsIDEyMzM3LCAx
Nzk4NCwgMjcwMDIsIDAsIDcxOTEzKSk7CisgIH0KKworICB1cmJnLnJlc2V0KCk7CisgIHsKKyAg
ICBhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248ZmxvYXQ+IGRpc3Q7CisgICAgc3RkOjpn
ZW5lcmF0ZShzdGQ6OmJlZ2luKG91dHB1dCksIHN0ZDo6ZW5kKG91dHB1dCksCisgICAgICAgICAg
ICAgICAgICBbJl0geyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PigxMDAwMC4wZiAqIGRpc3QodXJi
ZykpOyB9KTsKKworICAgIEVYUEVDVF9FUSgxNCwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBF
WFBFQ1RfVEhBVChvdXRwdXQsCisgICAgICAgICAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUo
MCwgNzE5MTMsIDE0Mzc1LCA1MDM5LCAxODM1LCA4NjEsIDI1OTM2LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDgwNCwgMTI2LCAxMjMzNywgMTc5ODQsIDI3MDAyLCAwLCA3
MTkxMykpOworICB9Cit9CisKK1RFU1QoRXhwb25lbnRpYWxEaXN0cmlidXRpb25UZXN0LCBBbGdv
cml0aG1Cb3VuZHMpIHsKKyAgLy8gUmVsaWVzIG9uIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb24sIHNvIHNvbWUgb2YgdGhlc2UgY29tbWVudHMKKyAgLy8gcmVmZXJlbmNlIHRoYXQuCisg
IGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IGRpc3Q7CisKKyAgeworICAg
IC8vIFRoaXMgcmV0dXJucyB0aGUgc21hbGxlc3QgdmFsdWUgPjAgZnJvbSBhYnNsOjp1bmlmb3Jt
X3JlYWxfZGlzdHJpYnV0aW9uLgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2Vf
dXJiZyB1cmJnKHsweDAwMDAwMDAwMDAwMDAwMDF1bGx9KTsKKyAgICBkb3VibGUgYSA9IGRpc3Qo
dXJiZyk7CisgICAgRVhQRUNUX0VRKGEsIDUuNDIxMDEwODYyNDI3NTIyMTcwMDRlLTIwKTsKKyAg
fQorCisgIHsKKyAgICAvLyBUaGlzIHJldHVybnMgYSB2YWx1ZSB2ZXJ5IG5lYXIgMC41IGZyb20g
YWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi4KKyAgICBhYnNsOjpyYW5kb21faW50ZXJu
YWw6OnNlcXVlbmNlX3VyYmcgdXJiZyh7MHg3ZmZmZmZmZmZmZmZmZmVmdWxsfSk7CisgICAgZG91
YmxlIGEgPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9FUShhLCAwLjY5MzE0NzE4MDU1OTk0NTE3
NTIwNCk7CisgIH0KKworICB7CisgICAgLy8gVGhpcyByZXR1cm5zIHRoZSBsYXJnZXN0IHZhbHVl
IDwxIGZyb20gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi4KKyAgICAvLyBXb2xmcmFt
QWxwaGE6IH4zOS4xNDM5NDY1ODA4OTg3NzY2MjgzMDU4NTQ3Mjk2MzQxOTE1MjkyMTg3MjUzCisg
ICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoezB4RkZGRkZGRkZG
RkZGRkZlRnVsbH0pOworICAgIGRvdWJsZSBhID0gZGlzdCh1cmJnKTsKKyAgICBFWFBFQ1RfRVEo
YSwgMzYuNzM2ODAwNTY5Njc3MTAwNzI1MSk7CisgIH0KKyAgeworICAgIC8vIFRoaXMgKkFMU08q
IHJldHVybnMgdGhlIGxhcmdlc3QgdmFsdWUgPDEuCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpzZXF1ZW5jZV91cmJnIHVyYmcoezB4RkZGRkZGRkZGRkZGRkZGRnVsbH0pOworICAgIGRvdWJs
ZSBhID0gZGlzdCh1cmJnKTsKKyAgICBFWFBFQ1RfRVEoYSwgMzYuNzM2ODAwNTY5Njc3MTAwNzI1
MSk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
Z2F1c3NpYW5fZGlzdHJpYnV0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2dhdXNzaWFuX2Rpc3RyaWJ1
dGlvbi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWRkODQ2MTk0
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9u
LmNjCkBAIC0wLDAgKzEsMTAyIEBACisvLyBCRUdJTiBHRU5FUkFURUQgQ09ERTsgRE8gTk9UIEVE
SVQKKy8vIGNsYW5nLWZvcm1hdCBvZmYKKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2dhdXNzaWFu
X2Rpc3RyaWJ1dGlvbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2lu
dGVybmFsIHsKKworY29uc3QgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2Jhc2U6OlRhYmxlcworICAg
IGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlOjp6Z18gPSB7CisgICAgezMuNzEzMDg2MjQ2NzQy
NTUwNSwgMy40NDI2MTk4NTU4OTkwMDAyMTQsIDMuMjIzMDg0OTg0NTgxMTQxNTY1LAorICAgICAz
LjA4MzIyODg1ODIxNjg2ODMxOCwgMi45Nzg2OTYyNTI2NDc3Nzk4MTksIDIuODk0MzQ0MDA3MDIx
NTI4OTQyLAorICAgICAyLjgyMzEyNTM1MDU0ODkxMDQ1LCAyLjc2MTE2OTM3MjM4NzE3Njg1Nywg
Mi43MDYxMTM1NzMxMjE4MTk1NDksCisgICAgIDIuNjU2NDA2NDExMjYxMzU5Njc5LCAyLjYxMDk3
MjI0ODQzMTg0NzM4NywgMi41NjkwMzM2MjU5MjQ5Mzc3OCwKKyAgICAgMi41MzAwMDk2NzIzODg4
Mjc0NTcsIDIuNDkzNDU0NTIyMDk1MzcyMTA2LCAyLjQ1OTAxODE3NzQxMTgzMDQ4NiwKKyAgICAg
Mi40MjY0MjA2NDU1MzM3NDk4MDksIDIuMzk1NDM0Mjc4MDExMDYyNDU3LCAyLjM2NTg3MTM3MDEx
NzYzODU5NSwKKyAgICAgMi4zMzc1NzUyNDEzMzkyMzY3NzYsIDIuMzEwNDEzNjgzNjk4NzYyOTg4
LCAyLjI4NDI3NDA1OTY3NzQ3MTc2OSwKKyAgICAgMi4yNTkwNTk1NzM4NjkxOTgwOSwgMi4yMzQ2
ODYzOTU1OTA5NzkwMzYsIDIuMjExMDgxNDA4ODc4NzAyOTcsCisgICAgIDIuMTg4MTgwNDMyMDc2
MDQ4NzMxLCAyLjE2NTkyNjc5Mzc0ODkyMTQ5NywgMi4xNDQyNzAxODIzNjAzOTQ5MDUsCisgICAg
IDIuMTIzMTY1NzA4NjczOTc2MTM4LCAyLjEwMjU3MzEzNTE4OTIzNzYwOCwgMi4wODI0NTYyMzc5
OTIwMTU5NTcsCisgICAgIDIuMDYyNzgyMjc0NTA4MzA3OTc4LCAyLjA0MzUyMTUzNjY1NTA2NzE5
NCwgMi4wMjQ2NDY5NzMzNzczODQ2NCwKKyAgICAgMi4wMDYxMzM4Njk5NjM0NzEyMDYsIDEuOTg3
OTU5NTc0MTI3NjE5MDMzLCAxLjk3MDEwMzI2MDg1NDMyNTYzMywKKyAgICAgMS45NTI1NDU3Mjk1
NTM1NTU3NjQsIDEuOTM1MjY5MjI4Mjk2NjIxOTU3LCAxLjkxODI1NzMwMDg2NDUwODk2MywKKyAg
ICAgMS45MDE0OTQ2NTMxMDUxNTA0MjMsIDEuODg0OTY3MDM1NzA3NzU4MTQzLCAxLjg2ODY2MTE0
MDk5NDQ4Nzc2OCwKKyAgICAgMS44NTI1NjQ1MTE3MjgwOTAwMDIsIDEuODM2NjY1NDYwMjU4NDQ0
OTA0LCAxLjgyMDk1Mjk5NjU5NjEyNDQxOCwKKyAgICAgMS44MDU0MTY3NjQyMTkyMjczNjYsIDEu
NzkwMDQ2OTgyNTk5ODU3NTA2LCAxLjc3NDgzNDM5NTU4NjA2ODM3LAorICAgICAxLjc1OTc3MDIy
NDg5OTU5MjMzOSwgMS43NDQ4NDYxMjgxMTM3OTkyNDQsIDEuNzMwMDU0MTYwNTYzNzI5MTgyLAor
ICAgICAxLjcxNTM4Njc0MDcxMzY2NjQ4LCAxLjcwMDgzNjYxODU2OTkxNTc0OCwgMS42ODYzOTY4
NDY3NzkxNjcwMTQsCisgICAgIDEuNjcyMDYwNzU0MDk3NTk5OCwgMS42NTc4MjE5MjA5NTQwMjMy
NTQsIDEuNjQzNjc0MTU2ODYyODY3NDQxLAorICAgICAxLjYyOTYxMTQ3OTQ3MDYzMzU2MiwgMS42
MTU2MjgwOTUwNDMxNTk2MjksIDEuNjAxNzE4MzgwMjIxMzc2NTgxLAorICAgICAxLjU4Nzg3Njg2
NDg5MDU3NDU1OCwgMS41NzQwOTgyMTYwMjI5OTkyNjQsIDEuNTYwMzc3MjIyMzY2MTY3MzgyLAor
ICAgICAxLjU0NjcwODc3OTg1OTkwODg0NCwgMS41MzMwODc4Nzc2NzQwNDE3NTUsIDEuNTE5NTA5
NTg0NzY1OTM4NTU5LAorICAgICAxLjUwNTk2OTAzNjg2MzIwMTkzNywgMS40OTI0NjE0MjM3ODEz
NTI3MTQsIDEuNDc4OTgxOTc2OTg5OTIyODQyLAorICAgICAxLjQ2NTUyNTk1NzM0MjcwOTI5Niwg
MS40NTIwODg2NDI4ODkyMjI3OTIsIDEuNDM4NjY1MzE2Njg0NTYxNTQ2LAorICAgICAxLjQyNTI1
MTI1NDUxNDA1ODMxOSwgMS40MTE4NDE3MTI0NDcwNTU5MTksIDEuMzk4NDMxOTE0MTMxMDAzNTM5
LAorICAgICAxLjM4NTAxNzAzNzczMjY1MDA1OCwgMS4zNzE1OTIyMDI0MjczNDA4MTIsIDEuMzU4
MTUyNDU0MzMwMTQxNTM0LAorICAgICAxLjM0NDY5Mjc1MTc1MzU0NTE5LCAxLjMzMTIwNzk0OTY2
NTYyNTI3OSwgMS4zMTc2OTI3ODMyMDk0MTIyOTksCisgICAgIDEuMzA0MTQxODUwMTI4NjE1MDU0
LCAxLjI5MDU0OTU5MTkyNjE5NDg5NCwgMS4yNzY5MTAyNzM1NjAxNTM2MywKKyAgICAgMS4yNjMy
MTc5NjE0NTQ2MTkyODcsIDEuMjQ5NDY2NDk5NTczMDY2NDM2LCAxLjIzNTY0OTQ4MzI2MzM2MDY2
LAorICAgICAxLjIyMTc2MDIzMDUzOTk5NDM4NSwgMS4yMDc3OTE3NTA0MTU5NDc2NjIsIDEuMTkz
NzM2NzA3ODMzMTI2NDY1LAorICAgICAxLjE3OTU4NzM4NDY2Mzk4NjE2LCAxLjE2NTMzNTYzNjE2
NDc1MDIyMiwgMS4xNTA5NzI4NDIxNDg4NjU0MTYsCisgICAgIDEuMTM2NDg5ODUyMDEzMTU4Nzc0
LCAxLjEyMTg3NjkyMjU4MjU0MDIzNywgMS4xMDcxMjM2NDc1MzQwMzQwMjgsCisgICAgIDEuMDky
MjE4ODc2OTA3Mjc1MzcxLCAxLjA3NzE1MDYyNDg5Mjg5MzQ4MiwgMS4wNjE5MDU5NjM2OTQ4MjIw
NDIsCisgICAgIDEuMDQ2NDcwOTAwNzY0MDQyOTIyLCAxLjAzMDgzMDIzNjA2ODE5MjkwNywgMS4w
MTQ5NjczOTUyNTEzMjc4NDIsCisgICAgIDAuOTk4ODY0MjMzNDkyOTgwODEzMSwgMC45ODI1MDA4
MDM1MTU0MjYzNDY0LCAwLjk2NTg1NTA3OTQwMTE0NzAwOTgsCisgICAgIDAuOTQ4OTAyNjI1NTEx
MzAzNDQzNiwgMC45MzE2MTYxOTY2MTUxNDc5NDAxLCAwLjkxMzk2NTI1MTAyMzAyOTI3OTIsCisg
ICAgIDAuODk1OTE1MzUyNTgwOTM0Njg3NCwgMC44Nzc0Mjc0MjkxMTI5MjA0ODcyLCAwLjg1ODQ1
Njg0MzE5MzgwOTk5MzEsCisgICAgIDAuODM4OTUyMjE0Mjk3NTc0MTYxNCwgMC44MTg4NTM5MDY3
MDAzNTM4NTA3LCAwLjc5ODA5MjA2MDY0NDA1MzQ2OTMsCisgICAgIDAuNzc2NTgzOTg3ODk0NzU2
MzU1NywgMC43NTQyMzA2NjQ0NTQwNTIwNjg4LCAwLjczMDkxMTkxMDY0MjQ4NTA2MzEsCisgICAg
IDAuNzA2NDc5NjExMzM1NDMyNTc3OSwgMC42ODA3NDc5MTg2NjkxNTA1MjAyLCAwLjY1MzQ3ODYz
ODczOTk3MTAyOTUsCisgICAgIDAuNjI0MzU4NTk3MzM2MDQ2MTUwNSwgMC41OTI5NjI5NDI0NzE0
NDM0MzI3LCAwLjU1ODY5MjE3ODQwODE3OTg2MjUsCisgICAgIDAuNTIwNjU2MDM4NzYyMDU0Njg0
OCwgMC40Nzc0Mzc4MzcyOTY2ODMwNDMxLCAwLjQyNjU0Nzk4NjM1NTQxNTI0MjksCisgICAgIDAu
MzYyODcxNDMxMDk3MDIxMTkwOSwgMC4yNzIzMjA4NjQ4MTM5NDc3Mzg0LCAwfSwKKyAgICB7MC4w
MDEwMTQzNTI1NjQxMjAzNzc0MTMsIDAuMDAyNjY5NjI5MDgzODgwOTIyNzkzLCAwLjAwNTU0ODk5
NTIyMDc3MTM0NTc5MiwKKyAgICAgMC4wMDg2MjQ0ODQ0MTI4NTk4ODg2MDcsIDAuMDExODM5NDc4
NjU3ODg0ODY4NjEsIDAuMDE1MTY3Mjk4MDEwNTQ2NTY5NzYsCisgICAgIDAuMDE4NTkyMTAyNzM3
MDExMjkxNTEsIDAuMDIyMTAzMzA0NjE1OTI3MDk0NzUsIDAuMDI1NjkzMjkxOTM1OTM0MjgxNTEs
CisgICAgIDAuMDI5MzU2MzE3NDQwMDA2ODUwMjMsIDAuMDMzMDg3ODg2MTQ2MjI1NzU3NTgsIDAu
MDM2ODg0Mzg4Nzg2NjU2MjE2NDUsCisgICAgIDAuMDQwNzQyODY4MDc0NDQ0MTc0NTgsIDAuMDQ0
NjYwODYyMjAwNDkxNDMxNTcsIDAuMDQ4NjM2Mjk1ODU5ODY3ODA0OTYsCisgICAgIDAuMDUyNjY3
NDAxOTAzMDUxMDA0NjEsIDAuMDU2NzUyNjYzNDgxMDQ5ODQ3NTksIDAuMDYwODkwNzcwMzQ4MDQw
NDEyNzcsCisgICAgIDAuMDY1MDgwNTg1MjEzMDY4MDQ1NjcsIDAuMDY5MzIxMTE3MzkzNTc3OTIx
NzksIDAuMDczNjExNTAxODg0MTEzNDE3MjIsCisgICAgIDAuMDc3OTUwOTgyNTEzOTczNDYzMDEs
IDAuMDgyMzM4ODk4MjQyMjM1NzUyOTMsIDAuMDg2Nzc0NjcxODk0NzgwMjg5MTksCisgICAgIDAu
MDkxMjU3ODAwODI2ODMwMzY4MDksIDAuMDk1Nzg3ODQ5MTIxNzMxNTIyLCAwLjEwMDM2NDQ0MTAy
ODY1NTk5MjksCisgICAgIDAuMTA0OTg3MjU1NDA5NDIxNDI4OSwgMC4xMDk2NTYwMjEwMTQ4NDA0
NTQ2LCAwLjExNDM3MDUxMjQ0ODg2NjEzMjMsCisgICAgIDAuMTE5MTMwNTQ2NzA3NjUwOTU1Niwg
MC4xMjM5MzU5ODAyMDI4Njc5NzM2LCAwLjEyODc4NjcwNjE5NTk0MzQwMTIsCisgICAgIDAuMTMz
NjgyNjUyNTgzNDM5NjE1MSwgMC4xMzg2MjM3Nzk5ODQ1OTQ4ODA0LCAwLjE0MzYxMDA4MDA5MDYy
ODAzMzksCisgICAgIDAuMTQ4NjQxNTc0MjQyMzQyNTA1NywgMC4xNTM3MTgzMTIyMDgxODE5Mzk3
LCAwLjE1ODg0MDM3MTEzOTQ3OTU3NDgsCisgICAgIDAuMTY0MDA3ODU0NjgzNDIwNjM0MSwgMC4x
NjkyMjA4OTIyMzczNjUzMDU3LCAwLjE3NDQ3OTYzODMzMDc4OTgzMjQsCisgICAgIDAuMTc5Nzg0
MjcyMTIzMjk1ODQwNywgMC4xODUxMzQ5OTcwMDg5OTI2MDc4LCAwLjE5MDUzMjA0MDMxOTEzNzU2
MzMsCisgICAgIDAuMTk1OTc1NjUzMTE2Mjc4MTUzNCwgMC4yMDE0NjYxMTAwNzQzMTQwODY1LCAw
LjIwNzAwMzcwOTQzOTkyNjkzNjIsCisgICAgIDAuMjEyNTg4NzczMDcxNzMwNzEzNCwgMC4yMTgy
MjE2NDY1NTQzMDU4NDI2LCAwLjIyMzkwMjY5OTM4NTAwODg5NjUsCisgICAgIDAuMjI5NjMyMzI1
MjMyMTE2NjAyLCAwLjIzNTQxMDk0MjI2MzQ3OTU1NTYsIDAuMjQxMjM4OTkzNTQ1NDQwMjg4OSwK
KyAgICAgMC4yNDcxMTY5NDc1MTIzMjE4NTUxLCAwLjI1MzA0NTI5ODUwNzMyNjE1NTEsIDAuMjU5
MDI0NTY3Mzk2MjA1Mjc0MiwKKyAgICAgMC4yNjUwNTUzMDIyNTU1ODk3MDg3LCAwLjI3MTEzODA3
OTEzODM4NTIyNCwgMC4yNzcyNzM1MDI5MTkxODg3ODU3LAorICAgICAwLjI4MzQ2MjIwODIyMzIz
MzY0NzEsIDAuMjg5NzA0ODYwNDQyOTYwNTY1NiwgMC4yOTYwMDIxNTY4NDY5MzM3MDYxLAorICAg
ICAwLjMwMjM1NDgyNzc4NjQ4NDI1OTMsIDAuMzA4NzYzNjM4MDA2MTgxODM5NywgMC4zMTUyMjkz
ODgwNjUwMTE2MDY1LAorICAgICAwLjMyMTc1MjkxNTg3NTk4NTU5MDEsIDAuMzI4MzM1MDk4Mzcy
ODUwOTY0MiwgMC4zMzQ5NzY4NTMzMTM1ODk5NTA2LAorICAgICAwLjM0MTY3OTE0MTIzMTU1MTI5
NzcsIDAuMzQ4NDQyOTY3NTQ2MzI3NDc1NiwgMC4zNTUyNjkzODQ4NDc5MTgwMzUsCisgICAgIDAu
MzYyMTU5NDk1MzY5MzE4NDYyNiwgMC4zNjkxMTQ0NTM2NjQ0NzMxNTIyLCAwLjM3NjEzNTQ2OTUx
MDU2MzUzNiwKKyAgICAgMC4zODMyMjM4MTEwNTU5MDIxNDE2LCAwLjM5MDM4MDgwODIzNzMxNTU3
OTcsIDAuMzk3NjA3ODU2NDkzODc0MzY3NiwKKyAgICAgMC40MDQ5MDY0MjA4MDcyMjM5OTksIDAu
NDEyMjc4MDQwMTAyNjYyMDU3OCwgMC40MTk3MjQzMzIwNDk1NzUzNzcxLAorICAgICAwLjQyNzI0
Njk5ODMwNDk5NzA3MjEsIDAuNDM0ODQ3ODMwMjQ5OTkxODUxMywgMC40NDI1Mjg3MTUyNzU0Njk0
OTc1LAorICAgICAwLjQ1MDI5MTY0MzY4MjA0MDI3NjgsIDAuNDU4MTM4NzE2MjY3ODczMTE0LCAw
LjQ2NjA3MjE1MjY4OTQ1NzIzMDksCisgICAgIDAuNDc0MDk0MzAwNjkzMDE4MDU1OSwgMC40ODIy
MDc2NDYzMjk0ODYzNzI0LCAwLjQ5MDQxNDgyNTI4Mzg0NTMzNDgsCisgICAgIDAuNDk4NzE4NjM1
NDcwOTgwNzIwMSwgMC41MDcxMjIwNTEwNzU1NzAxNzk0LCAwLjUxNTYyODIzODI0NDAwMzA1NjUs
CisgICAgIDAuNTI0MjQwNTcyNjcyOTg1Mjk0NCwgMC41MzI5NjI2NTkzODM4MzczNTYxLCAwLjU0
MTc5ODM1NTAyNTQyNjYxNDUsCisgICAgIDAuNTUwNzUxNzkzMTE0NjA1NzU4OCwgMC41NTk4Mjc0
MTI3MDQwODgyMDA5LCAwLjU2OTAyOTk5MTA2Nzk1MjM3ODcsCisgICAgIDAuNTc4MzY0NjgxMTE5
NzY0Njg5OCwgMC41ODc4MzcwNTQ0MzQ3MDgxMjgzLCAwLjU5NzQ1MzE1MDk0NDUxODM0MDgsCisg
ICAgIDAuNjA3MjE5NTM2NjI1MTIxOTU4NCwgMC42MTcxNDMzNzA4MTg4ODI1OTczLCAwLjYyNzIz
MjQ4NTI0OTkyOTAyODIsCisgICAgIDAuNjM3NDk1NDc3MzM1MDQ0MDgwNiwgMC42NDc5NDE4MjEx
MTAyMjQyNDc1LCAwLjY1ODU4MjAwMDA1MDA4OTgyMTksCisgICAgIDAuNjY5NDI3NjY3MzQ4ODky
MTQxNCwgMC42ODA0OTE4NDA5OTczMzU4Mzk1LCAwLjY5MTc4OTE0MzQzNjY3Njk2NzYsCisgICAg
IDAuNzAzMzM2MDk5MDE2MTYwMDEwMSwgMC43MTUxNTE1MDc0MTA1MDA1OTc2LCAwLjcyNzI1Njkx
ODM0NDE4NjgyMDEsCisgICAgIDAuNzM5Njc3MjQzNjcyNjQ5MzA5NCwgMC43NTI0NDE1NTkxNzQ2
MTM0MTY5LCAwLjc2NTU4NDE3Mzg5NzcwNjYxMDIsCisgICAgIDAuNzc5MTQ2MDg1OTI5Njg5ODEz
NCwgMC43OTMxNzcwMTE3NzEzMDcyODMyLCAwLjgwNzczODI5NDY4Mjk2Mjc2NTIsCisgICAgIDAu
ODIyOTA3MjExMzgxNDExMzE4NywgMC44Mzg3ODM2MDUyOTU5OTIwNTE5LCAwLjg1NTUwMDYwNzg2
OTQ1MzE0NDYsCisgICAgIDAuODczMjQzMDQ4OTEwMDcyMjA2LCAwLjg5MjI4MTY1MDc4NDAyODk5
MDEsIDAuOTEzMDQzNjQ3OTcxNzQzNDIxNywKKyAgICAgMC45MzYyODI2ODE2ODUwNjMyMzM5LCAw
Ljk2MzU5OTY5MzEyNzA5MDU5NTIsIDF9fTsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRl
cm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworLy8gY2xhbmctZm9ybWF0IG9uCisvLyBFTkQg
R0VORVJBVEVEIENPREUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmli
dXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWQxMzQ3YmNlMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmgKQEAgLTAsMCArMSwyNjAg
QEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFC
U0xfUkFORE9NX0dBVVNTSUFOX0RJU1RSSUJVVElPTl9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9H
QVVTU0lBTl9ESVNUUklCVVRJT05fSF8KKworLy8gYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9u
IGltcGxlbWVudHMgdGhlIFppZ2d1cmF0IGFsZ29yaXRobQorLy8gZm9yIGdlbmVyYXRpbmcgcmFu
ZG9tIGdhdXNzaWFuIG51bWJlcnMuCisvLworLy8gSW1wbGVtZW50YXRpb24gYmFzZWQgb24gIlRo
ZSBaaWdndXJhdCBNZXRob2QgZm9yIEdlbmVyYXRpbmcgUmFuZG9tIFZhcmlhYmxlcyIKKy8vIGJ5
IEdlb3JnZSBNYXJzYWdsaWEgYW5kIFdhaSBXYW4gVHNhbmc6IGh0dHA6Ly93d3cuanN0YXRzb2Z0
Lm9yZy92MDUvaTA4LworLy8KKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRpbnQ+
CisjaW5jbHVkZSA8aXN0cmVhbT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlwZV90
cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25faW1w
bC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzLmgi
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCIK
KworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKKy8vIGFi
c2w6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlIGltcGxlbWVudHMgdGhlIHVuZGVybHlpbmcg
emlnZ3VyYXQgYWxnb3JpdGhtCisvLyB1c2luZyB0aGUgemlnZ3VyYXQgdGFibGVzIGdlbmVyYXRl
ZCBieSB0aGUgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2dlbnRhYmxlcworLy8gYmluYXJ5LgorLy8K
Ky8vIFRoZSBzcGVjaWZpYyBhbGdvcml0aG0gaGFzIHNvbWUgb2YgdGhlIGltcHJvdmVtZW50cyBz
dWdnZXN0ZWQgYnkgdGhlCisvLyAyMDA1IHBhcGVyLCAiQW4gSW1wcm92ZWQgWmlnZ3VyYXQgTWV0
aG9kIHRvIEdlbmVyYXRlIE5vcm1hbCBSYW5kb20gU2FtcGxlcyIsCisvLyBKdXJnZW4gQSBEb29y
bmlrLiAgKGh0dHBzOi8vd3d3LmRvb3JuaWsuY29tL3Jlc2VhcmNoL3ppZ2d1cmF0LnBkZikKK2Ns
YXNzIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlIHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBVUkJHPgorICBpbmxpbmUgZG91YmxlIHppZ25vcihVUkJHJiBnKTsgIC8vIE5PTElO
VChydW50aW1lL3JlZmVyZW5jZXMpCisKKyBwcml2YXRlOgorICBmcmllbmQgY2xhc3MgVGFibGVH
ZW5lcmF0b3I7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIGlubGluZSBkb3VibGUg
emlnbm9yX2ZhbGxiYWNrKFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5lZyk7CisKKyAgLy8gQ29uc3Rh
bnRzIHVzZWQgZm9yIHRoZSBnYXVzc2lhbiBkaXN0cmlidXRpb24uCisgIHN0YXRpYyBjb25zdGV4
cHIgZG91YmxlIGtSID0gMy40NDI2MTk4NTU4OTk7ICAvLyBTdGFydCBvZiB0aGUgdGFpbC4KKyAg
c3RhdGljIGNvbnN0ZXhwciBkb3VibGUga1JJbnYgPSAwLjI5MDQ3NjQ1MTYxNDc0MzE3OyAgLy8g
fj0gKDEuMCAvIGtSKSAuCisgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGtWID0gOS45MTI1NjMw
MzUyNjIxN2UtMzsKKyAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBrTWFzayA9IDB4MDdmOwor
CisgIC8vIFRoZSB6aWdndXJhdCB0YWJsZXMgc3RvcmUgdGhlIHBkZihmKSBhbmQgaW52ZXJzZS1w
ZGYoeCkgZm9yIGVxdWFsLWFyZWEKKyAgLy8gcG9pbnRzIG9uIG9uZS1oYWxmIG9mIHRoZSBub3Jt
YWwgZGlzdHJpYnV0aW9uLCB3aGVyZSB0aGUgcGRmIGZ1bmN0aW9uLAorICAvLyBwZGYgPSBlIF4g
KC0xLzIgKnheMiksIGFzc3VtZXMgdGhhdCB0aGUgbWVhbiA9IDAgJiBzdGRkZXYgPSAxLgorICAv
LworICAvLyBUaGVzZSB0YWJsZXMgYXJlIGp1c3Qgb3ZlciAya2IgaW4gc2l6ZTsgbGFyZ2VyIHRh
YmxlcyBtaWdodCBpbXByb3ZlIHRoZQorICAvLyBkaXN0cmlidXRpb25zLCBidXQgYWxzbyBsZWFk
IHRvIG1vcmUgY2FjaGUgcG9sbHV0aW9uLgorICAvLworICAvLyB4ID0gezMuNzEzMDgsIDMuNDQy
NjEsIDMuMjIzMDgsIC4uLiwgMH0KKyAgLy8gZiA9IHswLjAwMTAxLCAwLjAwMjY2LCAwLjAwNTU0
LCAuLi4sIDF9CisgIHN0cnVjdCBUYWJsZXMgeworICAgIGRvdWJsZSB4W2tNYXNrICsgMl07Cisg
ICAgZG91YmxlIGZba01hc2sgKyAyXTsKKyAgfTsKKyAgc3RhdGljIGNvbnN0IFRhYmxlcyB6Z187
CisgIHJhbmRvbV9pbnRlcm5hbDo6RmFzdFVuaWZvcm1CaXRzPHVpbnQ2NF90PiBmYXN0X3U2NF87
Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCisKKy8vIGFic2w6OmdhdXNz
aWFuX2Rpc3RyaWJ1dGlvbjoKKy8vIEdlbmVyYXRlcyBhIG51bWJlciBjb25mb3JtaW5nIHRvIGEg
R2F1c3NpYW4gZGlzdHJpYnV0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlID0gZG91
YmxlPgorY2xhc3MgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uIDogcmFuZG9tX2ludGVybmFsOjpnYXVz
c2lhbl9kaXN0cmlidXRpb25fYmFzZSB7CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9
IFJlYWxUeXBlOworCisgIGNsYXNzIHBhcmFtX3R5cGUgeworICAgcHVibGljOgorICAgIHVzaW5n
IGRpc3RyaWJ1dGlvbl90eXBlID0gZ2F1c3NpYW5fZGlzdHJpYnV0aW9uOworCisgICAgZXhwbGlj
aXQgcGFyYW1fdHlwZShyZXN1bHRfdHlwZSBtZWFuID0gMCwgcmVzdWx0X3R5cGUgc3RkZGV2ID0g
MSkKKyAgICAgICAgOiBtZWFuXyhtZWFuKSwgc3RkZGV2XyhzdGRkZXYpIHt9CisKKyAgICAvLyBS
ZXR1cm5zIHRoZSBtZWFuIGRpc3RyaWJ1dGlvbiBwYXJhbWV0ZXIuICBUaGUgbWVhbiBzcGVjaWZp
ZXMgdGhlIGxvY2F0aW9uCisgICAgLy8gb2YgdGhlIHBlYWsuICBUaGUgZGVmYXVsdCB2YWx1ZSBp
cyAwLjAuCisgICAgcmVzdWx0X3R5cGUgbWVhbigpIGNvbnN0IHsgcmV0dXJuIG1lYW5fOyB9CisK
KyAgICAvLyBSZXR1cm5zIHRoZSBkZXZpYXRpb24gZGlzdHJpYnV0aW9uIHBhcmFtZXRlci4gIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzIDEuMC4KKyAgICByZXN1bHRfdHlwZSBzdGRkZXYoKSBjb25zdCB7
IHJldHVybiBzdGRkZXZfOyB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBh
cmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAgICAgIHJldHVybiBhLm1lYW5f
ID09IGIubWVhbl8gJiYgYS5zdGRkZXZfID09IGIuc3RkZGV2XzsKKyAgICB9CisKKyAgICBmcmll
bmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUm
IGIpIHsKKyAgICAgIHJldHVybiAhKGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgorICAg
IHJlc3VsdF90eXBlIG1lYW5fOworICAgIHJlc3VsdF90eXBlIHN0ZGRldl87CisKKyAgICBzdGF0
aWNfYXNzZXJ0KAorICAgICAgICBzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFJlYWxUeXBlPjo6dmFs
dWUsCisgICAgICAgICJDbGFzcy10ZW1wbGF0ZSBhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb248
PiBtdXN0IGJlIHBhcmFtZXRlcml6ZWQgIgorICAgICAgICAidXNpbmcgYSBmbG9hdGluZy1wb2lu
dCB0eXBlLiIpOworICB9OworCisgIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbigpIDogZ2F1c3NpYW5f
ZGlzdHJpYnV0aW9uKDApIHt9CisKKyAgZXhwbGljaXQgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uKHJl
c3VsdF90eXBlIG1lYW4sIHJlc3VsdF90eXBlIHN0ZGRldiA9IDEpCisgICAgICA6IHBhcmFtXyht
ZWFuLCBzdGRkZXYpIHt9CisKKyAgZXhwbGljaXQgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uKGNvbnN0
IHBhcmFtX3R5cGUmIHApIDogcGFyYW1fKHApIHt9CisKKyAgdm9pZCByZXNldCgpIHt9CisKKyAg
Ly8gR2VuZXJhdGluZyBmdW5jdGlvbnMKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJl
c3VsdF90eXBlIG9wZXJhdG9yKCkoVVJCRyYgZykgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJl
bmNlcykKKyAgICByZXR1cm4gKCp0aGlzKShnLCBwYXJhbV8pOworICB9CisKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVVJCRyYgZywgIC8vIE5P
TElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cGFyYW1fdHlwZSYgcCk7CisKKyAgcGFyYW1fdHlwZSBwYXJhbSgpIGNvbnN0IHsgcmV0dXJuIHBh
cmFtXzsgfQorICB2b2lkIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIHApIHsgcGFyYW1fID0gcDsg
fQorCisgIHJlc3VsdF90eXBlKG1pbikoKSBjb25zdCB7CisgICAgcmV0dXJuIC1zdGQ6Om51bWVy
aWNfbGltaXRzPHJlc3VsdF90eXBlPjo6aW5maW5pdHkoKTsKKyAgfQorICByZXN1bHRfdHlwZSht
YXgpKCkgY29uc3QgeworICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBl
Pjo6aW5maW5pdHkoKTsKKyAgfQorCisgIHJlc3VsdF90eXBlIG1lYW4oKSBjb25zdCB7IHJldHVy
biBwYXJhbV8ubWVhbigpOyB9CisgIHJlc3VsdF90eXBlIHN0ZGRldigpIGNvbnN0IHsgcmV0dXJu
IHBhcmFtXy5zdGRkZXYoKTsgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgZ2F1
c3NpYW5fZGlzdHJpYnV0aW9uJiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdh
dXNzaWFuX2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiBhLnBhcmFtXyA9PSBiLnBhcmFt
XzsKKyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGdhdXNzaWFuX2Rpc3RyaWJ1
dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnYXVzc2lhbl9kaXN0cmli
dXRpb24mIGIpIHsKKyAgICByZXR1cm4gYS5wYXJhbV8gIT0gYi5wYXJhbV87CisgIH0KKworIHBy
aXZhdGU6CisgIHBhcmFtX3R5cGUgcGFyYW1fOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vIEltcGxlbWVudGF0aW9uIGRldGFpbHMgb25seSBiZWxvdworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKwordGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIFVS
Qkc+Cit0eXBlbmFtZSBnYXVzc2lhbl9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpyZXN1bHRfdHlw
ZQorZ2F1c3NpYW5fZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjo6b3BlcmF0b3IoKSgKKyAgICBVUkJH
JiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBjb25zdCBwYXJhbV90eXBl
JiBwKSB7CisgIHJldHVybiBwLm1lYW4oKSArIHAuc3RkZGV2KCkgKiBzdGF0aWNfY2FzdDxyZXN1
bHRfdHlwZT4oemlnbm9yKGcpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIFJlYWxUeXBlPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXJU
LCBUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJh
aXRzPiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0IGdhdXNz
aWFuX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT4mIHgpIHsKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9p
bnRlcm5hbDo6bWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKG9zKTsKKyAgb3MucHJlY2lzaW9uKHJh
bmRvbV9pbnRlcm5hbDo6c3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8UmVhbFR5cGU+OjprUHJlY2lz
aW9uKTsKKyAgb3MgPDwgeC5tZWFuKCkgPDwgb3MuZmlsbCgpIDw8IHguc3RkZGV2KCk7CisgIHJl
dHVybiBvczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIFJlYWxUeXBlPgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBv
cGVyYXRvcj4+KAorICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAv
LyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbjxS
ZWFsVHlwZT4mIHgpIHsgICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICB1c2luZyBy
ZXN1bHRfdHlwZSA9IHR5cGVuYW1lIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46OnJl
c3VsdF90eXBlOworICB1c2luZyBwYXJhbV90eXBlID0gdHlwZW5hbWUgZ2F1c3NpYW5fZGlzdHJp
YnV0aW9uPFJlYWxUeXBlPjo6cGFyYW1fdHlwZTsKKworICBhdXRvIHNhdmVyID0gcmFuZG9tX2lu
dGVybmFsOjptYWtlX2lzdHJlYW1fc3RhdGVfc2F2ZXIoaXMpOworICBhdXRvIG1lYW4gPSByYW5k
b21faW50ZXJuYWw6OnJlYWRfZmxvYXRpbmdfcG9pbnQ8cmVzdWx0X3R5cGU+KGlzKTsKKyAgaWYg
KGlzLmZhaWwoKSkgcmV0dXJuIGlzOworICBhdXRvIHN0ZGRldiA9IHJhbmRvbV9pbnRlcm5hbDo6
cmVhZF9mbG9hdGluZ19wb2ludDxyZXN1bHRfdHlwZT4oaXMpOworICBpZiAoIWlzLmZhaWwoKSkg
eworICAgIHgucGFyYW0ocGFyYW1fdHlwZShtZWFuLCBzdGRkZXYpKTsKKyAgfQorICByZXR1cm4g
aXM7Cit9CisKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVVJCRz4KK2lubGluZSBkb3VibGUgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2Jhc2U6OnppZ25v
cl9mYWxsYmFjayhVUkJHJiBnLCBib29sIG5lZykgeworICAvLyBUaGlzIGZhbGxiYWNrIHBhdGgg
aGFwcGVucyBhcHByb3hpbWF0ZWx5IDAuMDUlIG9mIHRoZSB0aW1lLgorICBkb3VibGUgeCwgeTsK
KyAgZG8geworICAgIC8vIGtSSW52ID0gMS9yLCBVKDAsIDEpCisgICAgeCA9IGtSSW52ICogc3Rk
Ojpsb2coUmFuZFU2NFRvRG91YmxlPFBvc2l0aXZlVmFsdWVULCBmYWxzZT4oZmFzdF91NjRfKGcp
KSk7CisgICAgeSA9IC1zdGQ6OmxvZyhSYW5kVTY0VG9Eb3VibGU8UG9zaXRpdmVWYWx1ZVQsIGZh
bHNlPihmYXN0X3U2NF8oZykpKTsKKyAgfSB3aGlsZSAoKHkgKyB5KSA8ICh4ICogeCkpOworICBy
ZXR1cm4gbmVnID8gKHggLSBrUikgOiAoa1IgLSB4KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFVSQkc+CitpbmxpbmUgZG91YmxlIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlOjp6aWdub3Io
CisgICAgVVJCRyYgZykgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgd2hpbGUg
KHRydWUpIHsKKyAgICAvLyBXZSB1c2UgYSBzaW5nbGUgdWludDY0X3QgdG8gZ2VuZXJhdGUgYm90
aCBhIGRvdWJsZSBhbmQgYSBzdHJpcC4KKyAgICAvLyBUaGVzZSBiaXRzIGFyZSB1bnVzZWQgd2hl
biB0aGUgZ2VuZXJhdGVkIGRvdWJsZSBpcyA+IDEvMl41LgorICAgIC8vIFRoaXMgbWF5IGludHJv
ZHVjZSBzb21lIGJpYXMgZnJvbSB0aGUgZHVwbGljYXRlZCBsb3cgYml0cyBvZiBzbWFsbAorICAg
IC8vIHZhbHVlcyAodGhvc2Ugc21hbGxlciB0aGFuIDEvMl41LCB3aGljaCBhbGwgZW5kIHVwIG9u
IHRoZSBsZWZ0IHRhaWwpLgorICAgIHVpbnQ2NF90IGJpdHMgPSBmYXN0X3U2NF8oZyk7CisgICAg
aW50IGkgPSBzdGF0aWNfY2FzdDxpbnQ+KGJpdHMgJiBrTWFzayk7ICAvLyBwaWNrIGEgcmFuZG9t
IHN0cmlwCisgICAgZG91YmxlIGogPSBSYW5kVTY0VG9Eb3VibGU8U2lnbmVkVmFsdWVULCBmYWxz
ZT4oYml0cyk7ICAvLyBVKC0xLCAxKQorICAgIGNvbnN0IGRvdWJsZSB4ID0gaiAqIHpnXy54W2ld
OworCisgICAgLy8gUmV0YW5ndWxhciBib3guIEhhbmRsZXMgPjk3JSBvZiBhbGwgY2FzZXMuCisg
ICAgLy8gRm9yIGFueSBnaXZlbiBib3gsIHRoaXMgaGFuZGxlcyBiZXR3ZWVuIDc1JSBhbmQgOTkl
IG9mIHZhbHVlcy4KKyAgICAvLyBFcXVpdmFsZW50IHRvIFUoMDEpIDwgKHhbaSsxXSAvIHhbaV0p
LCBhbmQgd2hlbiBpID09IDAsIH45My41JQorICAgIGlmIChzdGQ6OmFicyh4KSA8IHpnXy54W2kg
KyAxXSkgeworICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgLy8gaSA9PSAwOiBCYXNlIGJv
eC4gU2FtcGxlIHVzaW5nIGEgcmF0aW8gb2YgdW5pZm9ybXMuCisgICAgaWYgKGkgPT0gMCkgewor
ICAgICAgLy8gVGhpcyBwYXRoIGhhcHBlbnMgYWJvdXQgMC4wNSUgb2YgdGhlIHRpbWUuCisgICAg
ICByZXR1cm4gemlnbm9yX2ZhbGxiYWNrKGcsIGogPCAwKTsKKyAgICB9CisKKyAgICAvLyBpID4g
MDogV2VkZ2Ugc2FtcGxlcyB1c2luZyBwcmVjb21wdXRlZCB2YWx1ZXMuCisgICAgZG91YmxlIHYg
PSBSYW5kVTY0VG9Eb3VibGU8UG9zaXRpdmVWYWx1ZVQsIGZhbHNlPihmYXN0X3U2NF8oZykpOyAg
Ly8gVSgwLCAxKQorICAgIGlmICgoemdfLmZbaSArIDFdICsgdiAqICh6Z18uZltpXSAtIHpnXy5m
W2kgKyAxXSkpIDwKKyAgICAgICAgc3RkOjpleHAoLTAuNSAqIHggKiB4KSkgeworICAgICAgcmV0
dXJuIHg7CisgICAgfQorCisgICAgLy8gVGhlIHdlZGdlIHdhcyBtaXNzZWQ7IHJlamVjdCB0aGUg
dmFsdWUgYW5kIHRyeSBhZ2Fpbi4KKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2lu
dGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0dB
VVNTSUFOX0RJU1RSSUJVVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2dhdXNzaWFu
X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2dhdXNzaWFuX2Rpc3RyaWJ1dGlv
bl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40N2MyOTg5
ZDM0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRp
b25fdGVzdC5jYwpAQCAtMCwwICsxLDU3MyBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRp
b24uaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRl
IDxjc3RkZGVmPgorI2luY2x1ZGUgPGlvcz4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRl
IDxyYW5kb20+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1
ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFj
cm9zLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaCIKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgiCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIK
KyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oIgorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9zdHJfcmVwbGFjZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpcC5oIgorCitu
YW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OmtDaGlTcXVhcmVkOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGU+CitjbGFzcyBHYXVzc2lhbkRpc3RyaWJ1dGlv
bkludGVyZmFjZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCit1c2luZyBSZWFs
VHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPGZsb2F0LCBkb3VibGUsIGxvbmcgZG91YmxlPjsKK1RZ
UEVEX1RFU1RfQ0FTRShHYXVzc2lhbkRpc3RyaWJ1dGlvbkludGVyZmFjZVRlc3QsIFJlYWxUeXBl
cyk7CisKK1RZUEVEX1RFU1QoR2F1c3NpYW5EaXN0cmlidXRpb25JbnRlcmZhY2VUZXN0LCBTZXJp
YWxpemVUZXN0KSB7CisgIHVzaW5nIHBhcmFtX3R5cGUgPQorICAgICAgdHlwZW5hbWUgYWJzbDo6
Z2F1c3NpYW5fZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7CisKKyAgY29uc3Qg
VHlwZVBhcmFtIGtQYXJhbXNbXSA9IHsKKyAgICAgIC8vIENhc2VzIGFyb3VuZCAxLgorICAgICAg
MSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgIHN0
ZDo6bmV4dGFmdGVyKFR5cGVQYXJhbSgxKSwgVHlwZVBhcmFtKDApKSwgIC8vIDEgLSBlcHNpbG9u
CisgICAgICBzdGQ6Om5leHRhZnRlcihUeXBlUGFyYW0oMSksIFR5cGVQYXJhbSgyKSksICAvLyAx
ICsgZXBzaWxvbgorICAgICAgLy8gQXJiaXRyYXJ5IHZhbHVlcy4KKyAgICAgIFR5cGVQYXJhbSgx
ZS04KSwgVHlwZVBhcmFtKDFlLTQpLCBUeXBlUGFyYW0oMiksIFR5cGVQYXJhbSgxZTQpLAorICAg
ICAgVHlwZVBhcmFtKDFlOCksIFR5cGVQYXJhbSgxZTIwKSwgVHlwZVBhcmFtKDIuNSksCisgICAg
ICAvLyBCb3VuZGFyeSBjYXNlcy4KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFt
Pjo6aW5maW5pdHkoKSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWF4
KCksCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46OmVwc2lsb24oKSwKKyAg
ICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWluKCks
CisgICAgICAgICAgICAgICAgICAgICBUeXBlUGFyYW0oMSkpLCAgICAgICAgICAgLy8gbWluICsg
ZXBzaWxvbgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSwgIC8v
IHNtYWxsZXN0IG5vcm1hbAorICAgICAgLy8gVGhlcmUgYXJlIHNvbWUgZXJyb3JzIGRlYWxpbmcg
d2l0aCBkZW5vcm1zIG9uIGFwcGxlIHBsYXRmb3Jtcy4KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8VHlwZVBhcmFtPjo6ZGVub3JtX21pbigpLCAgLy8gc21hbGxlc3QgZGVub3JtCisgICAgICBz
dGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1pbigpIC8gMiwKKyAgICAgIHN0ZDo6bmV4
dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWluKCksCisgICAgICAgICAg
ICAgICAgICAgICBUeXBlUGFyYW0oMCkpLCAgLy8gZGVub3JtX21heAorICB9OworCisgIGNvbnN0
ZXhwciBpbnQga0NvdW50ID0gMTAwMDsKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworCisg
IC8vIFVzZSBhIGxvb3AgdG8gZ2VuZXJhdGUgdGhlIGNvbWJpbmF0aW9ucyBvZiB7Ky8teCwgKy8t
eX0sIGFuZCBhc3NpZ24geCwgeSB0bworICAvLyBhbGwgdmFsdWVzIGluIGtQYXJhbXMsCisgIGZv
ciAoY29uc3QgYXV0byBtb2QgOiB7MCwgMSwgMiwgM30pIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8g
eCA6IGtQYXJhbXMpIHsKKyAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSkgY29udGludWU7Cisg
ICAgICBmb3IgKGNvbnN0IGF1dG8geSA6IGtQYXJhbXMpIHsKKyAgICAgICAgY29uc3QgVHlwZVBh
cmFtIG1lYW4gPSAobW9kICYgMHgxKSA/IC14IDogeDsKKyAgICAgICAgY29uc3QgVHlwZVBhcmFt
IHN0ZGRldiA9IChtb2QgJiAweDIpID8gLXkgOiB5OworICAgICAgICBjb25zdCBwYXJhbV90eXBl
IHBhcmFtKG1lYW4sIHN0ZGRldik7CisKKyAgICAgICAgYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0
aW9uPFR5cGVQYXJhbT4gYmVmb3JlKG1lYW4sIHN0ZGRldik7CisgICAgICAgIEVYUEVDVF9FUShi
ZWZvcmUubWVhbigpLCBwYXJhbS5tZWFuKCkpOworICAgICAgICBFWFBFQ1RfRVEoYmVmb3JlLnN0
ZGRldigpLCBwYXJhbS5zdGRkZXYoKSk7CisKKyAgICAgICAgeworICAgICAgICAgIGFic2w6Omdh
dXNzaWFuX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IHZpYV9wYXJhbShwYXJhbSk7CisgICAgICAg
ICAgRVhQRUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAgICAgICAgICBFWFBFQ1RfRVEodmlh
X3BhcmFtLnBhcmFtKCksIGJlZm9yZS5wYXJhbSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFNtb2tlIHRlc3QuCisgICAgICAgIGF1dG8gc2FtcGxlX21pbiA9IGJlZm9yZS5tYXgoKTsKKyAg
ICAgICAgYXV0byBzYW1wbGVfbWF4ID0gYmVmb3JlLm1pbigpOworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGtDb3VudDsgaSsrKSB7CisgICAgICAgICAgYXV0byBzYW1wbGUgPSBiZWZvcmUo
Z2VuKTsKKyAgICAgICAgICBpZiAoc2FtcGxlID4gc2FtcGxlX21heCkgc2FtcGxlX21heCA9IHNh
bXBsZTsKKyAgICAgICAgICBpZiAoc2FtcGxlIDwgc2FtcGxlX21pbikgc2FtcGxlX21pbiA9IHNh
bXBsZTsKKyAgICAgICAgICBFWFBFQ1RfR0Uoc2FtcGxlLCBiZWZvcmUubWluKCkpIDw8IGJlZm9y
ZTsKKyAgICAgICAgICBFWFBFQ1RfTEUoc2FtcGxlLCBiZWZvcmUubWF4KCkpIDw8IGJlZm9yZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIXN0ZDo6aXNfc2FtZTxUeXBlUGFyYW0sIGxvbmcgZG91
YmxlPjo6dmFsdWUpIHsKKyAgICAgICAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAgICAgICAg
ICAgSU5GTywgYWJzbDo6U3RyRm9ybWF0KCJSYW5nZXslZiwgJWZ9OiAlZiwgJWYiLCBtZWFuLCBz
dGRkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfbWluLCBz
YW1wbGVfbWF4KSk7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsK
KyAgICAgICAgc3MgPDwgYmVmb3JlOworCisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShtZWFu
KSB8fCAhc3RkOjppc2Zpbml0ZShzdGRkZXYpKSB7CisgICAgICAgICAgLy8gU3RyZWFtcyBkbyBu
b3QgcGFyc2UgaW5mL25hbi4KKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFZhbGlkYXRlIHN0cmVhbSBzZXJpYWxpemF0aW9uLgorICAgICAgICBhYnNsOjpnYXVz
c2lhbl9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBhZnRlcigtMC41M2YsIDIuMzQ1NmYpOworCisg
ICAgICAgIEVYUEVDVF9ORShiZWZvcmUubWVhbigpLCBhZnRlci5tZWFuKCkpOworICAgICAgICBF
WFBFQ1RfTkUoYmVmb3JlLnN0ZGRldigpLCBhZnRlci5zdGRkZXYoKSk7CisgICAgICAgIEVYUEVD
VF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgICAgICAgIEVYUEVDVF9ORShi
ZWZvcmUsIGFmdGVyKTsKKworICAgICAgICBzcyA+PiBhZnRlcjsKKworI2lmIGRlZmluZWQoX19w
b3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX1BQQzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18p
IHx8IFwKKyAgICBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19QUENfXykKKyAgICAgICAg
aWYgKHN0ZDo6aXNfc2FtZTxUeXBlUGFyYW0sIGxvbmcgZG91YmxlPjo6dmFsdWUpIHsKKyAgICAg
ICAgICAvLyBSb3VuZHRyaXBwaW5nIGZsb2F0aW5nIHBvaW50IHZhbHVlcyByZXF1aXJlcyBzdWZm
aWNpZW50IHByZWNpc2lvbgorICAgICAgICAgIC8vIHRvIHJlY29uc3RydWN0IHRoZSBleGFjdCB2
YWx1ZS4gIEl0IHR1cm5zIG91dCB0aGF0IGxvbmcgZG91YmxlCisgICAgICAgICAgLy8gaGFzIHNv
bWUgZXJyb3JzIGRvaW5nIHRoaXMgb24gcHBjLCBwYXJ0aWN1bGFybHkgZm9yIHZhbHVlcworICAg
ICAgICAgIC8vIG5lYXIgezEuMCArLy0gZXBzaWxvbn0uCisgICAgICAgICAgaWYgKG1lYW4gPD0g
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSAmJgorICAgICAgICAgICAgICBtZWFu
ID49IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCkpIHsKKyAgICAgICAgICAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDxkb3VibGU+KGJlZm9yZS5tZWFuKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oYWZ0ZXIubWVhbigpKSkKKyAgICAgICAg
ICAgICAgICA8PCBzcy5zdHIoKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHN0ZGRldiA8
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpICYmCisgICAgICAgICAgICAgIHN0
ZGRldiA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpKSB7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8ZG91YmxlPihiZWZvcmUuc3RkZGV2KCkpLAorICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oYWZ0ZXIuc3RkZGV2KCkpKQor
ICAgICAgICAgICAgICAgIDw8IHNzLnN0cigpOworICAgICAgICAgIH0KKyAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgRVhQRUNUX0VRKGJlZm9yZS5tZWFu
KCksIGFmdGVyLm1lYW4oKSk7CisgICAgICAgIEVYUEVDVF9FUShiZWZvcmUuc3RkZGV2KCksIGFm
dGVyLnN0ZGRldigpKSAgLy8KKyAgICAgICAgICAgIDw8IHNzLnN0cigpIDw8ICIgIiAgICAgICAg
ICAgICAgICAgICAgICAvLworICAgICAgICAgICAgPDwgKHNzLmdvb2QoKSA/ICJnb29kICIgOiAi
IikgICAgICAgICAgIC8vCisgICAgICAgICAgICA8PCAoc3MuYmFkKCkgPyAiYmFkICIgOiAiIikg
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIDw8IChzcy5lb2YoKSA/ICJlb2YgIiA6ICIiKSAg
ICAgICAgICAgICAvLworICAgICAgICAgICAgPDwgKHNzLmZhaWwoKSA/ICJmYWlsICIgOiAiIik7
CisgICAgICB9CisgICAgfQorICB9Cit9CisKKy8vIGh0dHA6Ly93d3cuaXRsLm5pc3QuZ292L2Rp
djg5OC9oYW5kYm9vay9lZGEvc2VjdGlvbjMvZWRhMzY2MS5odG0KKworY2xhc3MgR2F1c3NpYW5N
b2RlbCB7CisgcHVibGljOgorICBHYXVzc2lhbk1vZGVsKGRvdWJsZSBtZWFuLCBkb3VibGUgc3Rk
ZGV2KSA6IG1lYW5fKG1lYW4pLCBzdGRkZXZfKHN0ZGRldikge30KKworICBkb3VibGUgbWVhbigp
IGNvbnN0IHsgcmV0dXJuIG1lYW5fOyB9CisgIGRvdWJsZSB2YXJpYW5jZSgpIGNvbnN0IHsgcmV0
dXJuIHN0ZGRldigpICogc3RkZGV2KCk7IH0KKyAgZG91YmxlIHN0ZGRldigpIGNvbnN0IHsgcmV0
dXJuIHN0ZGRldl87IH0KKyAgZG91YmxlIHNrZXcoKSBjb25zdCB7IHJldHVybiAwOyB9CisgIGRv
dWJsZSBrdXJ0b3NpcygpIGNvbnN0IHsgcmV0dXJuIDMuMDsgfQorCisgIC8vIFRoZSBpbnZlcnNl
IENERiwgb3IgUGVyY2VudFBvaW50IGZ1bmN0aW9uLgorICBkb3VibGUgSW52ZXJzZUNERihkb3Vi
bGUgcCkgeworICAgIEFCU0xfQVNTRVJUKHAgPj0gMC4wKTsKKyAgICBBQlNMX0FTU0VSVChwIDwg
MS4wKTsKKyAgICByZXR1cm4gbWVhbigpICsgc3RkZGV2KCkgKiAtYWJzbDo6cmFuZG9tX2ludGVy
bmFsOjpJbnZlcnNlTm9ybWFsU3Vydml2YWwocCk7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0
IGRvdWJsZSBtZWFuXzsKKyAgY29uc3QgZG91YmxlIHN0ZGRldl87Cit9OworCitzdHJ1Y3QgUGFy
YW0geworICBkb3VibGUgbWVhbjsKKyAgZG91YmxlIHN0ZGRldjsKKyAgZG91YmxlIHBfZmFpbDsg
IC8vIFotVGVzdCBwcm9iYWJpbGl0eSBvZiBmYWlsdXJlLgorICBpbnQgdHJpYWxzOyAgICAgLy8g
Wi1UZXN0IHRyaWFscy4KK307CisKKy8vIEdhdXNzaWFuRGlzdHJpYnV0aW9uVGVzdHMgaW1wbGVt
ZW50cyBhIHotdGVzdCBmb3IgdGhlIGdhdXNzaWFuCisvLyBkaXN0cmlidXRpb24uCitjbGFzcyBH
YXVzc2lhbkRpc3RyaWJ1dGlvblRlc3RzIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
UGFyYW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBHYXVzc2lh
bk1vZGVsIHsKKyBwdWJsaWM6CisgIEdhdXNzaWFuRGlzdHJpYnV0aW9uVGVzdHMoKQorICAgICAg
OiBHYXVzc2lhbk1vZGVsKEdldFBhcmFtKCkubWVhbiwgR2V0UGFyYW0oKS5zdGRkZXYpIHt9CisK
KyAgLy8gU2luZ2xlWlRlc3QgcHJvdmlkZXMgYSBiYXNpYyB6LXNxdWFyZWQgdGVzdCBvZiB0aGUg
bWVhbiB2cy4gZXhwZWN0ZWQKKyAgLy8gbWVhbiBmb3IgZGF0YSBnZW5lcmF0ZWQgYnkgdGhlIHBv
aXNzb24gZGlzdHJpYnV0aW9uLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRD4KKyAgYm9vbCBTaW5n
bGVaVGVzdChjb25zdCBkb3VibGUgcCwgY29uc3Qgc2l6ZV90IHNhbXBsZXMpOworCisgIC8vIFNp
bmdsZUNoaVNxdWFyZWRUZXN0IHByb3ZpZGVzIGEgYmFzaWMgY2hpLXNxdWFyZWQgdGVzdCBvZiB0
aGUgbm9ybWFsCisgIC8vIGRpc3RyaWJ1dGlvbi4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEQ+Cisg
IGRvdWJsZSBTaW5nbGVDaGlTcXVhcmVkVGVzdCgpOworCisgIGFic2w6Okluc2VjdXJlQml0R2Vu
IHJuZ187Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRD4KK2Jvb2wgR2F1c3NpYW5EaXN0cmli
dXRpb25UZXN0czo6U2luZ2xlWlRlc3QoY29uc3QgZG91YmxlIHAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzYW1wbGVzKSB7CisgIEQg
ZGlzKG1lYW4oKSwgc3RkZGV2KCkpOworCisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gZGF0YTsKKyAg
ZGF0YS5yZXNlcnZlKHNhbXBsZXMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbXBsZXM7
IGkrKykgeworICAgIGNvbnN0IGRvdWJsZSB4ID0gZGlzKHJuZ18pOworICAgIGRhdGEucHVzaF9i
YWNrKHgpOworICB9CisKKyAgY29uc3QgZG91YmxlIG1heF9lcnIgPSBhYnNsOjpyYW5kb21faW50
ZXJuYWw6Ok1heEVycm9yVG9sZXJhbmNlKHApOworICBjb25zdCBhdXRvIG0gPSBhYnNsOjpyYW5k
b21faW50ZXJuYWw6OkNvbXB1dGVEaXN0cmlidXRpb25Nb21lbnRzKGRhdGEpOworICBjb25zdCBk
b3VibGUgeiA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6WlNjb3JlKG1lYW4oKSwgbSk7CisgIGNv
bnN0IGJvb2wgcGFzcyA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6TmVhcigieiIsIHosIDAuMCwg
bWF4X2Vycik7CisKKyAgLy8gTk9URTogSW5mb3JtYXRpb25hbCBzdGF0aXN0aWNhbCB0ZXN0Ogor
ICAvLworICAvLyBDb21wdXRlIHRoZSBKYXJxdWUtQmVyYSB0ZXN0IHN0YXRpc3RpYyBnaXZlbiB0
aGUgZXhjZXNzIHNrZXduZXNzCisgIC8vIGFuZCBrdXJ0b3Npcy4gVGhlIHN0YXRpc3RpYyBpcyBk
cmF3biBmcm9tIGEgY2hpLXNxdWFyZSgyKSBkaXN0cmlidXRpb24uCisgIC8vIGh0dHBzOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL0phcnF1ZSVFMiU4MCU5M0JlcmFfdGVzdAorICAvLworICAvLyBU
aGUgbnVsbC1oeXBvdGhlc2lzIChub3JtYWwgZGlzdHJpYnV0aW9uKSBpcyByZWplY3RlZCB3aGVu
CisgIC8vIChwID0gMC4wNSA9PiBqYiA+IDUuOTkpCisgIC8vIChwID0gMC4wMSA9PiBqYiA+IDku
MjEpCisgIC8vIE5PVEU6IEpCIGhhcyBhIGxhcmdlIHR5cGUtSSBlcnJvciByYXRlLCBzbyBpdCB3
aWxsIHJlamVjdCB0aGUKKyAgLy8gbnVsbC1oeXBvdGhlc2lzIGV2ZW4gd2hlbiBpdCBpcyB0cnVl
IG1vcmUgb2Z0ZW4gdGhhbiB0aGUgei10ZXN0LgorICAvLworICBjb25zdCBkb3VibGUgamIgPQor
ICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtLm4pIC8gNi4wICoKKyAgICAgIChzdGQ6OnBvdyht
LnNrZXduZXNzLCAyLjApICsgc3RkOjpwb3cobS5rdXJ0b3NpcyAtIDMuMCwgMi4wKSAvIDQuMCk7
CisKKyAgaWYgKCFwYXNzIHx8IGpiID4gOS4yMSkgeworICAgIEFCU0xfSU5URVJOQUxfTE9HKAor
ICAgICAgICBJTkZPLCBhYnNsOjpTdHJGb3JtYXQoInA9JWYgbWF4X2Vycj0lZlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiBtZWFuPSVmIHZzLiAlZlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiBzdGRkZXY9JWYgdnMuICVmXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiIHNrZXduZXNzPSVmIHZzLiAlZlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiBrdXJ0b3Npcz0lZiB2cy4gJWZcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgej0lZiB2cy4gMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiBqYj0lZiB2cy4gOS4yMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLCBtYXhf
ZXJyLCBtLm1lYW4sIG1lYW4oKSwgc3RkOjpzcXJ0KG0udmFyaWFuY2UpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkZGV2KCksIG0uc2tld25lc3MsIHNrZXcoKSwgbS5rdXJ0b3Np
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt1cnRvc2lzKCksIHosIGpiKSk7Cisg
IH0KKyAgcmV0dXJuIHBhc3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEPgorZG91YmxlIEdh
dXNzaWFuRGlzdHJpYnV0aW9uVGVzdHM6OlNpbmdsZUNoaVNxdWFyZWRUZXN0KCkgeworICBjb25z
dCBzaXplX3Qga1NhbXBsZXMgPSAxMDAwMDsKKyAgY29uc3QgaW50IGtCdWNrZXRzID0gNTA7CisK
KyAgLy8gVGhlIEludmVyc2VDREYgaXMgdGhlIHBlcmNlbnQgcG9pbnQgZnVuY3Rpb24gb2YgdGhl
CisgIC8vIGRpc3RyaWJ1dGlvbiwgYW5kIGNhbiBiZSB1c2VkIHRvIGFzc2lnbiBidWNrZXRzCisg
IC8vIHJvdWdobHkgdW5pZm9ybWx5LgorICBzdGQ6OnZlY3Rvcjxkb3VibGU+IGN1dG9mZnM7Cisg
IGNvbnN0IGRvdWJsZSBrSW5jID0gMS4wIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihrQnVja2V0cyk7
CisgIGZvciAoZG91YmxlIHAgPSBrSW5jOyBwIDwgMS4wOyBwICs9IGtJbmMpIHsKKyAgICBjdXRv
ZmZzLnB1c2hfYmFjayhJbnZlcnNlQ0RGKHApKTsKKyAgfQorICBpZiAoY3V0b2Zmcy5iYWNrKCkg
IT0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSB7CisgICAgY3V0b2Zm
cy5wdXNoX2JhY2soc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKKyAg
fQorCisgIEQgZGlzKG1lYW4oKSwgc3RkZGV2KCkpOworCisgIHN0ZDo6dmVjdG9yPGludDMyX3Q+
IGNvdW50cyhjdXRvZmZzLnNpemUoKSwgMCk7CisgIGZvciAoaW50IGogPSAwOyBqIDwga1NhbXBs
ZXM7IGorKykgeworICAgIGNvbnN0IGRvdWJsZSB4ID0gZGlzKHJuZ18pOworICAgIGF1dG8gaXQg
PSBzdGQ6OnVwcGVyX2JvdW5kKGN1dG9mZnMuYmVnaW4oKSwgY3V0b2Zmcy5lbmQoKSwgeCk7Cisg
ICAgY291bnRzW3N0ZDo6ZGlzdGFuY2UoY3V0b2Zmcy5iZWdpbigpLCBpdCldKys7CisgIH0KKwor
ICAvLyBOdWxsLWh5cG90aGVzaXMgaXMgdGhhdCB0aGUgZGlzdHJpYnV0aW9uIGlzIGEgZ2F1c3Np
YW4gZGlzdHJpYnV0aW9uCisgIC8vIHdpdGggdGhlIHByb3ZpZGVkIG1lYW4gYW5kIHN0ZGRldiAo
bm90IGVzdGltYXRlZCBmcm9tIHRoZSBkYXRhKS4KKyAgY29uc3QgaW50IGRvZiA9IHN0YXRpY19j
YXN0PGludD4oY291bnRzLnNpemUoKSkgLSAxOworCisgIC8vIE91ciB0aHJlc2hvbGQgZm9yIGxv
Z2dpbmcgaXMgMS1pbi01MC4KKyAgY29uc3QgZG91YmxlIHRocmVzaG9sZCA9IGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6Q2hpU3F1YXJlVmFsdWUoZG9mLCAwLjk4KTsKKworICBjb25zdCBkb3VibGUg
ZXhwZWN0ZWQgPQorICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihrU2FtcGxlcykgLyBzdGF0aWNf
Y2FzdDxkb3VibGU+KGNvdW50cy5zaXplKCkpOworCisgIGRvdWJsZSBjaGlfc3F1YXJlID0gYWJz
bDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVXaXRoRXhwZWN0ZWQoCisgICAgICBzdGQ6OmJl
Z2luKGNvdW50cyksIHN0ZDo6ZW5kKGNvdW50cyksIGV4cGVjdGVkKTsKKyAgZG91YmxlIHAgPSBh
YnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVBWYWx1ZShjaGlfc3F1YXJlLCBkb2YpOwor
CisgIC8vIExvZyBpZiB0aGUgY2hpX3NxdWFyZSB2YWx1ZSBpcyBhYm92ZSB0aGUgdGhyZXNob2xk
LgorICBpZiAoY2hpX3NxdWFyZSA+IHRocmVzaG9sZCkgeworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY3V0b2Zmcy5zaXplKCk7IGkrKykgeworICAgICAgQUJTTF9JTlRFUk5BTF9MT0coCisgICAg
ICAgICAgSU5GTywgYWJzbDo6U3RyRm9ybWF0KCIlZCA6ICglZikgPSAlZCIsIGksIGN1dG9mZnNb
aV0sIGNvdW50c1tpXSkpOworICAgIH0KKworICAgIEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAg
ICBJTkZPLCBhYnNsOjpTdHJDYXQoIm1lYW49IiwgbWVhbigpLCAiIHN0ZGRldj0iLCBzdGRkZXYo
KSwgIlxuIiwgICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBleHBlY3RlZCAiLCBl
eHBlY3RlZCwgIlxuIiwgICAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAga0NoaVNxdWFyZWQsICIgIiwgY2hpX3NxdWFyZSwgIiAoIiwgcCwgIilcbiIsICAvLwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAga0NoaVNxdWFyZWQsICIgQCAwLjk4ID0gIiwgdGhy
ZXNob2xkKSk7CisgIH0KKyAgcmV0dXJuIHA7Cit9CisKK1RFU1RfUChHYXVzc2lhbkRpc3RyaWJ1
dGlvblRlc3RzLCBaVGVzdCkgeworICAvLyBUT0RPKGFic2wtdGVhbSk6IFJ1biB0aGVzZSB0ZXN0
cyBhZ2FpbnN0IHN0ZDo6bm9ybWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+CisgIC8vIHRvIHZhbGlk
YXRlIG91dGNvbWVzIGFyZSBzaW1pbGFyLgorICBjb25zdCBzaXplX3Qga1NhbXBsZXMgPSAxMDAw
MDsKKyAgY29uc3QgYXV0byYgcGFyYW0gPSBHZXRQYXJhbSgpOworICBjb25zdCBpbnQgZXhwZWN0
ZWRfZmFpbHVyZXMgPQorICAgICAgc3RkOjptYXgoMSwgc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmNl
aWwocGFyYW0udHJpYWxzICogcGFyYW0ucF9mYWlsKSkpOworICBjb25zdCBkb3VibGUgcCA9IGFi
c2w6OnJhbmRvbV9pbnRlcm5hbDo6UmVxdWlyZWRTdWNjZXNzUHJvYmFiaWxpdHkoCisgICAgICBw
YXJhbS5wX2ZhaWwsIHBhcmFtLnRyaWFscyk7CisKKyAgaW50IGZhaWx1cmVzID0gMDsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCBwYXJhbS50cmlhbHM7IGkrKykgeworICAgIGZhaWx1cmVzICs9Cisg
ICAgICAgIFNpbmdsZVpUZXN0PGFic2w6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbjxkb3VibGU+Pihw
LCBrU2FtcGxlcykgPyAwIDogMTsKKyAgfQorICBFWFBFQ1RfTEUoZmFpbHVyZXMsIGV4cGVjdGVk
X2ZhaWx1cmVzKTsKK30KKworVEVTVF9QKEdhdXNzaWFuRGlzdHJpYnV0aW9uVGVzdHMsIENoaVNx
dWFyZWRUZXN0KSB7CisgIGNvbnN0IGludCBrVHJpYWxzID0gMjA7CisgIGludCBmYWlsdXJlcyA9
IDA7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVHJpYWxzOyBpKyspIHsKKyAgICBkb3VibGUg
cF92YWx1ZSA9CisgICAgICAgIFNpbmdsZUNoaVNxdWFyZWRUZXN0PGFic2w6OmdhdXNzaWFuX2Rp
c3RyaWJ1dGlvbjxkb3VibGU+PigpOworICAgIGlmIChwX3ZhbHVlIDwgMC4wMDI1KSB7ICAvLyAx
LzQwMAorICAgICAgZmFpbHVyZXMrKzsKKyAgICB9CisgIH0KKyAgLy8gVGhlcmUgaXMgYSAwLjA1
JSBjaGFuY2Ugb2YgcHJvZHVjaW5nIGF0IGxlYXN0IG9uZSBmYWlsdXJlLCBzbyByYWlzZSB0aGUK
KyAgLy8gZmFpbHVyZSB0aHJlc2hvbGQgaGlnaCBlbm91Z2ggdG8gYWxsb3cgZm9yIGEgZmxha2Ug
cmF0ZSBvZiBsZXNzIHRoYW4gb25lIGluCisgIC8vIDEwLDAwMC4KKyAgRVhQRUNUX0xFKGZhaWx1
cmVzLCA0KTsKK30KKworc3RkOjp2ZWN0b3I8UGFyYW0+IEdlblBhcmFtcygpIHsKKyAgcmV0dXJu
IHsKKyAgICAgIC8vIE1lYW4gYXJvdW5kIDAuCisgICAgICBQYXJhbXswLjAsIDEuMCwgMC4wMSwg
MTAwfSwKKyAgICAgIFBhcmFtezAuMCwgMWUyLCAwLjAxLCAxMDB9LAorICAgICAgUGFyYW17MC4w
LCAxZTQsIDAuMDEsIDEwMH0sCisgICAgICBQYXJhbXswLjAsIDFlOCwgMC4wMSwgMTAwfSwKKyAg
ICAgIFBhcmFtezAuMCwgMWUxNiwgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezAuMCwgMWUtMywg
MC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezAuMCwgMWUtNSwgMC4wMSwgMTAwfSwKKyAgICAgIFBh
cmFtezAuMCwgMWUtOSwgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezAuMCwgMWUtMTcsIDAuMDEs
IDEwMH0sCisKKyAgICAgIC8vIE1lYW4gYXJvdW5kIDEuCisgICAgICBQYXJhbXsxLjAsIDEuMCwg
MC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezEuMCwgMWUyLCAwLjAxLCAxMDB9LAorICAgICAgUGFy
YW17MS4wLCAxZS0yLCAwLjAxLCAxMDB9LAorCisgICAgICAvLyBNZWFuIGFyb3VuZCAxMDAgLyAt
MTAwCisgICAgICBQYXJhbXsxZTIsIDEuMCwgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtey0xZTIs
IDEuMCwgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezFlMiwgMWU2LCAwLjAxLCAxMDB9LAorICAg
ICAgUGFyYW17LTFlMiwgMWU2LCAwLjAxLCAxMDB9LAorCisgICAgICAvLyBNb3JlIGV4dHJlbWUK
KyAgICAgIFBhcmFtezFlNCwgMWU0LCAwLjAxLCAxMDB9LAorICAgICAgUGFyYW17MWU4LCAxZTQs
IDAuMDEsIDEwMH0sCisgICAgICBQYXJhbXsxZTEyLCAxZTQsIDAuMDEsIDEwMH0sCisgIH07Cit9
CisKK3N0ZDo6c3RyaW5nIFBhcmFtTmFtZShjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88
UGFyYW0+JiBpbmZvKSB7CisgIGNvbnN0IGF1dG8mIHAgPSBpbmZvLnBhcmFtOworICBzdGQ6OnN0
cmluZyBuYW1lID0gYWJzbDo6U3RyQ2F0KCJtZWFuXyIsIGFic2w6OlNpeERpZ2l0cyhwLm1lYW4p
LCAiX19zdGRkZXZfIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpT
aXhEaWdpdHMocC5zdGRkZXYpKTsKKyAgcmV0dXJuIGFic2w6OlN0clJlcGxhY2VBbGwobmFtZSwg
e3siKyIsICJfIn0sIHsiLSIsICJfIn0sIHsiLiIsICJfIn19KTsKK30KKworSU5TVEFOVElBVEVf
VEVTVF9TVUlURV9QKCwgR2F1c3NpYW5EaXN0cmlidXRpb25UZXN0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKEdlblBhcmFtcygpKSwgUGFyYW1OYW1lKTsK
KworLy8gTk9URTogYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uIGlzIG5vdCBndWFyYW50ZWVk
IHRvIGJlIHN0YWJsZS4KK1RFU1QoR2F1c3NpYW5EaXN0cmlidXRpb25UZXN0LCBTdGFiaWxpdHlU
ZXN0KSB7CisgIC8vIGFic2w6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbiBzdGFiaWxpdHkgcmVsaWVz
IG9uIHRoZSB1bmRlcmx5aW5nIHppZ25vcgorICAvLyBkYXRhLCBhYnNsOjpyYW5kb21faW50ZXJu
YTo6UmFuZFU2NFRvRG91YmxlLCBzdGQ6OmV4cCwgc3RkOjpsb2csIGFuZAorICAvLyBzdGQ6OmFi
cy4KKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisgICAgICB7
MHgwMDAzZWI3NmY2ZjdmNzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGwsIDB4QzMzMkRERUZC
RTZDNUFBNXVsbCwKKyAgICAgICAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4MkFFRjdEQUQ1QjZF
MkY4NHVsbCwgMHgxNTIxQjYyODI5MDc2MTcwdWxsLAorICAgICAgIDB4RUNERDQ3NzU2MTlGMTUx
MHVsbCwgMHgxM0NDQTgzMEVCNjFCRDk2dWxsLCAweDAzMzRGRTFFQUEwMzYzQ0Z1bGwsCisgICAg
ICAgMHhCNTczNUM5MDRDNzBBMjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1bGwsIDB4RUVDQzg2
QkM2MDYyMkNBN3VsbH0pOworCisgIHN0ZDo6dmVjdG9yPGludD4gb3V0cHV0KDExKTsKKworICB7
CisgICAgYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uPGRvdWJsZT4gZGlzdDsKKyAgICBzdGQ6
OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwKKyAgICAgICAg
ICAgICAgICAgIFsmXSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDEwMDAwMDAwLjAgKiBkaXN0
KHVyYmcpKTsgfSk7CisKKyAgICBFWFBFQ1RfRVEoMTMsIHVyYmcuaW52b2NhdGlvbnMoKSk7Cisg
ICAgRVhQRUNUX1RIQVQob3V0cHV0LCAgLy8KKyAgICAgICAgICAgICAgICB0ZXN0aW5nOjpFbGVt
ZW50c0FyZSgxNDk0LCAyNTUxODg0MSwgOTk5MTU1MCwgMTM1MTg1NiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtMjAzNzMyMzgsIDM0NTY2ODIsIDMzMzUzMCwgLTY4MDQ5
ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTE1Mjc5NTgwLCAtMTY0
NTk2NTQsIDE0OTQpKTsKKyAgfQorCisgIHVyYmcucmVzZXQoKTsKKyAgeworICAgIGFic2w6Omdh
dXNzaWFuX2Rpc3RyaWJ1dGlvbjxmbG9hdD4gZGlzdDsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6
YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwKKyAgICAgICAgICAgICAgICAgIFsmXSB7
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDEwMDAwMDAuMGYgKiBkaXN0KHVyYmcpKTsgfSk7CisK
KyAgICBFWFBFQ1RfRVEoMTMsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQRUNUX1RIQVQo
CisgICAgICAgIG91dHB1dCwgIC8vCisgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKDE0OSwg
MjU1MTg4NCwgOTk5MTU1LCAxMzUxODUsIC0yMDM3MzIzLCAzNDU2NjgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMzMzUzLCAtNjgwNDk4LCAtMTUyNzk1OCwgLTE2NDU5NjUsIDE0OSkp
OworICB9Cit9CisKKy8vIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgdGVzdC4g
SWYgYW55IHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uCisvLyBjaGFuZ2VzLCB0aGVuIGl0IGlz
IGxpa2VseSB0aGF0IHRoaXMgdGVzdCB3aWxsIGNoYW5nZSBhcyB3ZWxsLgorLy8gQWxzbywgaWYg
ZGVwZW5kZW5jaWVzIG9mIHRoZSBkaXN0cmlidXRpb24gY2hhbmdlLCBzdWNoIGFzIFJhbmRVNjRU
b0RvdWJsZSwKKy8vIHRoZW4gdGhpcyBpcyBhbHNvIGxpa2VseSB0byBjaGFuZ2UuCitURVNUKEdh
dXNzaWFuRGlzdHJpYnV0aW9uVGVzdCwgQWxnb3JpdGhtQm91bmRzKSB7CisgIGFic2w6OmdhdXNz
aWFuX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IGRpc3Q7CisKKyAgLy8gSW4gfjk1JSBvZiBjYXNlcywg
YSBzaW5nbGUgdmFsdWUgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgb3V0cHV0LgorICAvLyBmb3Ig
YWxsIGlucHV0cyB3aGVyZSB8eHwgPCAwLjc1MDQ2MTAyMTM4OSB0aGlzIHNob3VsZCBiZSB0aGUg
Y2FzZS4KKyAgLy8KKyAgLy8gVGhlIGV4YWN0IGNvbnN0cmFpbnRzIGFyZSBiYXNlZCBvbiB0aGUg
emlnZ3VyYXQgdGFibGVzLCBhbmQgYW55CisgIC8vIGNoYW5nZXMgdG8gdGhlIHppZ2d1cmF0IHRh
YmxlcyBtYXkgcmVxdWlyZSBhZGp1c3RpbmcgdGhlc2UgYm91bmRzLgorICAvLworICAvLyBmb3Ig
aSBpbiByYW5nZSgwLCBsZW4oWCktMSk6CisgIC8vICAgcHJpbnQgaSwgWFtpKzFdL1hbaV0sIChY
W2krMV0vWFtpXSA+IDAuOTg0Mzc1KQorICAvLworICAvLyAwLjEyNSA8PSB8dmFsdWVzfCA8PSAw
Ljc1CisgIGNvbnN0IHVpbnQ2NF90IGtWYWx1ZXNbXSA9IHsKKyAgICAgIDB4MTAwMDAwMDAwMDAw
MDEwMHVsbCwgMHgyMDAwMDAwMDAwMDAwMTAwdWxsLCAweDMwMDAwMDAwMDAwMDAxMDB1bGwsCisg
ICAgICAweDQwMDAwMDAwMDAwMDAxMDB1bGwsIDB4NTAwMDAwMDAwMDAwMDEwMHVsbCwgMHg2MDAw
MDAwMDAwMDAwMTAwdWxsLAorICAgICAgLy8gbmVnYXRpdmUgdmFsdWVzCisgICAgICAweDkwMDAw
MDAwMDAwMDAxMDB1bGwsIDB4YTAwMDAwMDAwMDAwMDEwMHVsbCwgMHhiMDAwMDAwMDAwMDAwMTAw
dWxsLAorICAgICAgMHhjMDAwMDAwMDAwMDAwMTAwdWxsLCAweGQwMDAwMDAwMDAwMDAxMDB1bGws
IDB4ZTAwMDAwMDAwMDAwMDEwMHVsbH07CisKKyAgLy8gMC44NzUgPD0gfHZhbHVlc3wgPD0gMC45
ODQzNzUKKyAgY29uc3QgdWludDY0X3Qga0V4dHJhVmFsdWVzW10gPSB7CisgICAgICAweDcwMDAw
MDAwMDAwMDAxMDB1bGwsIDB4NzgwMDAwMDAwMDAwMDEwMHVsbCwgIC8vCisgICAgICAweDdjMDAw
MDAwMDAwMDAxMDB1bGwsIDB4N2UwMDAwMDAwMDAwMDEwMHVsbCwgIC8vCisgICAgICAvLyBuZWdh
dGl2ZSB2YWx1ZXMKKyAgICAgIDB4ZjAwMDAwMDAwMDAwMDEwMHVsbCwgMHhmODAwMDAwMDAwMDAw
MTAwdWxsLCAgLy8KKyAgICAgIDB4ZmMwMDAwMDAwMDAwMDEwMHVsbCwgMHhmZTAwMDAwMDAwMDAw
MTAwdWxsfTsKKworICBhdXRvIG1ha2VfYm94ID0gW10odWludDY0X3QgdiwgdWludDY0X3QgYm94
KSB7CisgICAgcmV0dXJuICh2ICYgMHhmZmZmZmZmZmZmZmZmZjgwdWxsKSB8IGJveDsKKyAgfTsK
KworICAvLyBUaGUgYm94IGlzIHRoZSBsb3dlciA3IGJpdHMgb2YgdGhlIHZhbHVlLiBXaGVuIHRo
ZSBib3ggPT0gMCwgdGhlbgorICAvLyB0aGUgYWxnb3JpdGhtIHVzZXMgYW4gZXNjYXBlIGhhdGNo
IHRvIHNlbGVjdCB0aGUgcmVzdWx0IGZvciBsYXJnZQorICAvLyBvdXRwdXRzLgorICBmb3IgKHVp
bnQ2NF90IGJveCA9IDA7IGJveCA8IDB4N2Y7IGJveCsrKSB7CisgICAgZm9yIChjb25zdCB1aW50
NjRfdCB2IDoga1ZhbHVlcykgeworICAgICAgLy8gRXh0cmEgdmFsdWVzIGFyZSBhZGRlZCB0byB0
aGUgc2VxdWVuY2UgdG8gYXR0ZW1wdCB0byBhdm9pZAorICAgICAgLy8gaW5maW5pdGUgbG9vcHMg
ZnJvbSByZWplY3Rpb24gc2FtcGxpbmcgb24gYnVncy9lcnJvcnMuCisgICAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAgICAgICAgICB7bWFrZV9ib3godiwg
Ym94KSwgMHgwMDAzZWI3NmY2ZjdmNzU1dWxsLCAweDVGQ0VBNTBGREIyRjk1M0J1bGx9KTsKKwor
ICAgICAgYXV0byBhID0gZGlzdCh1cmJnKTsKKyAgICAgIEVYUEVDVF9FUSgxLCB1cmJnLmludm9j
YXRpb25zKCkpIDw8IGJveCA8PCAiICIgPDwgc3RkOjpoZXggPDwgdjsKKyAgICAgIGlmICh2ICYg
MHg4MDAwMDAwMDAwMDAwMDAwdWxsKSB7CisgICAgICAgIEVYUEVDVF9MVChhLCAwLjApIDw8IGJv
eCA8PCAiICIgPDwgc3RkOjpoZXggPDwgdjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEVYUEVD
VF9HVChhLCAwLjApIDw8IGJveCA8PCAiICIgPDwgc3RkOjpoZXggPDwgdjsKKyAgICAgIH0KKyAg
ICB9CisgICAgaWYgKGJveCA+IDEwICYmIGJveCA8IDEwMCkgeworICAgICAgLy8gVGhlIGNlbnRl
ciBib3hlcyB1c2UgdGhlIGZhc3QgYWxnb3JpdGhtIGZvciBtb3JlCisgICAgICAvLyB0aGFuIDk4
LjQzNzUlIG9mIHZhbHVlcy4KKyAgICAgIGZvciAoY29uc3QgdWludDY0X3QgdiA6IGtFeHRyYVZh
bHVlcykgeworICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJi
ZygKKyAgICAgICAgICAgIHttYWtlX2JveCh2LCBib3gpLCAweDAwMDNlYjc2ZjZmN2Y3NTV1bGws
IDB4NUZDRUE1MEZEQjJGOTUzQnVsbH0pOworCisgICAgICAgIGF1dG8gYSA9IGRpc3QodXJiZyk7
CisgICAgICAgIEVYUEVDVF9FUSgxLCB1cmJnLmludm9jYXRpb25zKCkpIDw8IGJveCA8PCAiICIg
PDwgc3RkOjpoZXggPDwgdjsKKyAgICAgICAgaWYgKHYgJiAweDgwMDAwMDAwMDAwMDAwMDB1bGwp
IHsKKyAgICAgICAgICBFWFBFQ1RfTFQoYSwgMC4wKSA8PCBib3ggPDwgIiAiIDw8IHN0ZDo6aGV4
IDw8IHY7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgRVhQRUNUX0dUKGEsIDAuMCkgPDwg
Ym94IDw8ICIgIiA8PCBzdGQ6OmhleCA8PCB2OworICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICB9CisKKyAgLy8gV2hlbiB0aGUgYm94ID09IDAsIHRoZSBmYWxsYmFjayBhbGdvcml0aG0gdXNl
cyBhIHJhdGlvIG9mIHVuaWZvcm1zLAorICAvLyB3aGljaCBjb25zdW1lcyAyIGFkZGl0aW9uYWwg
dmFsdWVzIGZyb20gdGhlIHVyYmcuCisgIC8vIEZhbGxiYWNrIGFsc28gcmVxdWlyZXMgdGhhdCB0
aGUgaW5pdGlhbCB2YWx1ZSBiZSA+IDAuOTI3MTU4NjAyNjA5NjY4MS4KKyAgYXV0byBtYWtlX2Zh
bGxiYWNrID0gW10odWludDY0X3QgdikgeyByZXR1cm4gKHYgJiAweGZmZmZmZmZmZmZmZmZmODB1
bGwpOyB9OworCisgIGRvdWJsZSB0YWlsWzJdOworICB7CisgICAgLy8gMC45Mzc1CisgICAgYWJz
bDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisgICAgICAgIHttYWtlX2Zh
bGxiYWNrKDB4NzgwMDAwMDAwMDAwMDAwMHVsbCksIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbCwKKyAg
ICAgICAgIDB4MDAwMDAwNzZmNmY3Zjc1NXVsbH0pOworICAgIHRhaWxbMF0gPSBkaXN0KHVyYmcp
OworICAgIEVYUEVDVF9FUSgzLCB1cmJnLmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9HVCh0
YWlsWzBdLCAwKTsKKyAgfQorICB7CisgICAgLy8gLTAuOTM3NQorICAgIGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKAorICAgICAgICB7bWFrZV9mYWxsYmFjaygweGY4
MDAwMDAwMDAwMDAwMDB1bGwpLCAweDEzQ0NBODMwRUI2MUJEOTZ1bGwsCisgICAgICAgICAweDAw
MDAwMDc2ZjZmN2Y3NTV1bGx9KTsKKyAgICB0YWlsWzFdID0gZGlzdCh1cmJnKTsKKyAgICBFWFBF
Q1RfRVEoMywgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfTFQodGFpbFsxXSwgMCk7
CisgIH0KKyAgRVhQRUNUX0VRKHRhaWxbMF0sIC10YWlsWzFdKTsKKyAgRVhQRUNUX0VRKDQxODYx
MCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGFpbFswXSAqIDEwMDAwMC4wKSk7CisKKyAgLy8gV2hl
biB0aGUgYm94ICE9IDAsIHRoZSBmYWxsYmFjayBhbGdvcml0aG0gY29tcHV0ZXMgYSB3ZWRnZSBm
dW5jdGlvbi4KKyAgLy8gRGVwZW5kaW5nIG9uIHRoZSBib3gsIHRoZSB0aHJlc2hvbGQgZm9yIHZh
cmllcyBhcyBoaWdoIGFzCisgIC8vIDAuOTkxNTIyNDgwMjI4LgorICB7CisgICAgLy8gMC45OTIx
ODc1LCAwLjg3NQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJn
KAorICAgICAgICB7bWFrZV9ib3goMHg3ZjAwMDAwMDAwMDAwMDAwdWxsLCAxMjApLCAweGUwMDAw
MDAwMDAwMDAwMDF1bGwsCisgICAgICAgICAweDEzQ0NBODMwRUI2MUJEOTZ1bGx9KTsKKyAgICB0
YWlsWzBdID0gZGlzdCh1cmJnKTsKKyAgICBFWFBFQ1RfRVEoMiwgdXJiZy5pbnZvY2F0aW9ucygp
KTsKKyAgICBFWFBFQ1RfR1QodGFpbFswXSwgMCk7CisgIH0KKyAgeworICAgIC8vIC0wLjk5MjE4
NzUsIDAuODc1CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmco
CisgICAgICAgIHttYWtlX2JveCgweGZmMDAwMDAwMDAwMDAwMDB1bGwsIDEyMCksIDB4ZTAwMDAw
MDAwMDAwMDAwMXVsbCwKKyAgICAgICAgIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbH0pOworICAgIHRh
aWxbMV0gPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9FUSgyLCB1cmJnLmludm9jYXRpb25zKCkp
OworICAgIEVYUEVDVF9MVCh0YWlsWzFdLCAwKTsKKyAgfQorICBFWFBFQ1RfRVEodGFpbFswXSwg
LXRhaWxbMV0pOworICBFWFBFQ1RfRVEoNjE5NDgsIHN0YXRpY19jYXN0PGludDY0X3Q+KHRhaWxb
MF0gKiAxMDAwMDAuMCkpOworCisgIC8vIEZhbGxiYWNrIHJlamVjdGVkLCB0cnkgYWdhaW4uCisg
IHsKKyAgICAvLyAtMC45OTIxODc1LCAwLjA2MjUKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAgICAgICAge21ha2VfYm94KDB4ZmYwMDAwMDAwMDAwMDAw
MHVsbCwgMTIwKSwgMHgxMDAwMDAwMDAwMDAwMDAxLAorICAgICAgICAgbWFrZV9ib3goMHgxMDAw
MDAwMDAwMDAwMTAwdWxsLCA1MCksIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbH0pOworICAgIGRpc3Qo
dXJiZyk7CisgICAgRVhQRUNUX0VRKDMsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgIH0KK30KKwor
fSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZ2VuZXJhdG9yc190ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL2dlbmVyYXRvcnNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uNDE3MjVmMTM5Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vZ2VuZXJhdG9yc190ZXN0LmNjCkBAIC0wLDAgKzEsMTc5IEBACisvLyBDb3B5cmln
aHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5j
bHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8dmVjdG9yPgorCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9kaXN0cmlidXRp
b25zLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisKK25hbWVzcGFjZSB7CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordm9pZCBUZXN0VW5pZm9ybShVUkJHKiBnZW4pIHsK
KyAgLy8gW2EsIGIpIGRlZmF1bHQtc2VtYW50aWNzLCBpbmZlcnJlZCB0eXBlcy4KKyAgYWJzbDo6
VW5pZm9ybSgqZ2VuLCAwLCAxMDApOyAgICAgLy8gaW50CisgIGFic2w6OlVuaWZvcm0oKmdlbiwg
MCwgMS4wKTsgICAgIC8vIFByb21vdGVkIHRvIGRvdWJsZQorICBhYnNsOjpVbmlmb3JtKCpnZW4s
IDAuMGYsIDEuMCk7ICAvLyBQcm9tb3RlZCB0byBkb3VibGUKKyAgYWJzbDo6VW5pZm9ybSgqZ2Vu
LCAwLjAsIDEuMCk7ICAgLy8gZG91YmxlCisgIGFic2w6OlVuaWZvcm0oKmdlbiwgLTEsIDFMKTsg
ICAgIC8vIFByb21vdGVkIHRvIGxvbmcKKworICAvLyBSb2xsIGEgZGllLgorICBhYnNsOjpVbmlm
b3JtKGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2VkLCAqZ2VuLCAxLCA2KTsKKworICAvLyBHZXQg
YSBmcmFjdGlvbi4KKyAgYWJzbDo6VW5pZm9ybShhYnNsOjpJbnRlcnZhbE9wZW5PcGVuLCAqZ2Vu
LCAwLjAsIDEuMCk7CisKKyAgLy8gQXNzaWduIGEgdmFsdWUgdG8gYSByYW5kb20gZWxlbWVudC4K
KyAgc3RkOjp2ZWN0b3I8aW50PiBlbGVtcyA9IHsxMCwgMjAsIDMwLCA0MCwgNTB9OworICBlbGVt
c1thYnNsOjpVbmlmb3JtKCpnZW4sIDB1LCBlbGVtcy5zaXplKCkpXSA9IDU7CisgIGVsZW1zW2Fi
c2w6OlVuaWZvcm08c2l6ZV90PigqZ2VuLCAwLCBlbGVtcy5zaXplKCkpXSA9IDM7CisKKyAgLy8g
Q2hvb3NlIHNvbWUgZXBzaWxvbiBhcm91bmQgemVyby4KKyAgYWJzbDo6VW5pZm9ybShhYnNsOjpJ
bnRlcnZhbE9wZW5PcGVuLCAqZ2VuLCAtMS4wLCAxLjApOworCisgIC8vIChhLCBiKSBzZW1hbnRp
Y3MsIGluZmVycmVkIHR5cGVzLgorICBhYnNsOjpVbmlmb3JtKGFic2w6OkludGVydmFsT3Blbk9w
ZW4sICpnZW4sIDAsIDEuMCk7ICAvLyBQcm9tb3RlZCB0byBkb3VibGUKKworICAvLyBFeHBsaWN0
IG92ZXJyaWRpbmcgb2YgdHlwZXMuCisgIGFic2w6OlVuaWZvcm08aW50PigqZ2VuLCAwLCAxMDAp
OworICBhYnNsOjpVbmlmb3JtPGludDhfdD4oKmdlbiwgMCwgMTAwKTsKKyAgYWJzbDo6VW5pZm9y
bTxpbnQxNl90PigqZ2VuLCAwLCAxMDApOworICBhYnNsOjpVbmlmb3JtPHVpbnQxNl90PigqZ2Vu
LCAwLCAxMDApOworICBhYnNsOjpVbmlmb3JtPGludDMyX3Q+KCpnZW4sIDAsIDEgPDwgMTApOwor
ICBhYnNsOjpVbmlmb3JtPHVpbnQzMl90PigqZ2VuLCAwLCAxIDw8IDEwKTsKKyAgYWJzbDo6VW5p
Zm9ybTxpbnQ2NF90PigqZ2VuLCAwLCAxIDw8IDEwKTsKKyAgYWJzbDo6VW5pZm9ybTx1aW50NjRf
dD4oKmdlbiwgMCwgMSA8PCAxMCk7CisKKyAgYWJzbDo6VW5pZm9ybTxmbG9hdD4oKmdlbiwgMC4w
LCAxLjApOworICBhYnNsOjpVbmlmb3JtPGZsb2F0PigqZ2VuLCAwLCAxKTsKKyAgYWJzbDo6VW5p
Zm9ybTxmbG9hdD4oKmdlbiwgLTEsIDEpOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oKmdlbiwg
MC4wLCAxLjApOworCisgIGFic2w6OlVuaWZvcm08ZmxvYXQ+KCpnZW4sIC0xLjAsIDApOworICBh
YnNsOjpVbmlmb3JtPGRvdWJsZT4oKmdlbiwgLTEuMCwgMCk7CisKKyAgLy8gVGFnZ2VkCisgIGFi
c2w6OlVuaWZvcm08ZG91YmxlPihhYnNsOjpJbnRlcnZhbENsb3NlZENsb3NlZCwgKmdlbiwgMCwg
MSk7CisgIGFic2w6OlVuaWZvcm08ZG91YmxlPihhYnNsOjpJbnRlcnZhbENsb3NlZE9wZW4sICpn
ZW4sIDAsIDEpOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oYWJzbDo6SW50ZXJ2YWxPcGVuT3Bl
biwgKmdlbiwgMCwgMSk7CisgIGFic2w6OlVuaWZvcm08ZG91YmxlPihhYnNsOjpJbnRlcnZhbE9w
ZW5DbG9zZWQsICpnZW4sIDAsIDEpOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oYWJzbDo6SW50
ZXJ2YWxDbG9zZWRDbG9zZWQsICpnZW4sIDAsIDEpOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4o
YWJzbDo6SW50ZXJ2YWxPcGVuT3BlbiwgKmdlbiwgMCwgMSk7CisKKyAgYWJzbDo6VW5pZm9ybTxp
bnQ+KGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2VkLCAqZ2VuLCAwLCAxMDApOworICBhYnNsOjpV
bmlmb3JtPGludD4oYWJzbDo6SW50ZXJ2YWxDbG9zZWRPcGVuLCAqZ2VuLCAwLCAxMDApOworICBh
YnNsOjpVbmlmb3JtPGludD4oYWJzbDo6SW50ZXJ2YWxPcGVuT3BlbiwgKmdlbiwgMCwgMTAwKTsK
KyAgYWJzbDo6VW5pZm9ybTxpbnQ+KGFic2w6OkludGVydmFsT3BlbkNsb3NlZCwgKmdlbiwgMCwg
MTAwKTsKKyAgYWJzbDo6VW5pZm9ybTxpbnQ+KGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2VkLCAq
Z2VuLCAwLCAxMDApOworICBhYnNsOjpVbmlmb3JtPGludD4oYWJzbDo6SW50ZXJ2YWxPcGVuT3Bl
biwgKmdlbiwgMCwgMTAwKTsKKworICAvLyBXaXRoICpnZW5lcmF0b3IgYXMgYW4gUi12YWx1ZSBy
ZWZlcmVuY2UuCisgIGFic2w6OlVuaWZvcm08aW50PihVUkJHKCksIDAsIDEwMCk7CisgIGFic2w6
OlVuaWZvcm08ZG91YmxlPihVUkJHKCksIDAuMCwgMS4wKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFVSQkc+Cit2b2lkIFRlc3RFeHBvbmVudGlhbChVUkJHKiBnZW4pIHsKKyAgYWJzbDo6RXhw
b25lbnRpYWw8ZmxvYXQ+KCpnZW4pOworICBhYnNsOjpFeHBvbmVudGlhbDxkb3VibGU+KCpnZW4p
OworICBhYnNsOjpFeHBvbmVudGlhbDxkb3VibGU+KFVSQkcoKSk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBVUkJHPgordm9pZCBUZXN0UG9pc3NvbihVUkJHKiBnZW4pIHsKKyAgLy8gW3JhbmQu
ZGlzdC5wb2lzXSBJbmRpY2F0ZXMgdGhhdCB0aGUgc3RkOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbgor
ICAvLyBpcyBwYXJhbWV0ZXJpemVkIGJ5IEludFR5cGUsIGhvd2V2ZXIgTVNWQyBkb2VzIG5vdCBh
bGxvdyA4LWJpdAorICAvLyB0eXBlcy4KKyAgYWJzbDo6UG9pc3NvbjxpbnQ+KCpnZW4pOworICBh
YnNsOjpQb2lzc29uPGludDE2X3Q+KCpnZW4pOworICBhYnNsOjpQb2lzc29uPHVpbnQxNl90Pigq
Z2VuKTsKKyAgYWJzbDo6UG9pc3NvbjxpbnQzMl90PigqZ2VuKTsKKyAgYWJzbDo6UG9pc3Nvbjx1
aW50MzJfdD4oKmdlbik7CisgIGFic2w6OlBvaXNzb248aW50NjRfdD4oKmdlbik7CisgIGFic2w6
OlBvaXNzb248dWludDY0X3Q+KCpnZW4pOworICBhYnNsOjpQb2lzc29uPHVpbnQ2NF90PihVUkJH
KCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3ZvaWQgVGVzdEJlcm5vdWxsaShV
UkJHKiBnZW4pIHsKKyAgYWJzbDo6QmVybm91bGxpKCpnZW4sIDAuNSk7CisgIGFic2w6OkJlcm5v
dWxsaSgqZ2VuLCAwLjUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3ZvaWQgVGVz
dFppcGYoVVJCRyogZ2VuKSB7CisgIGFic2w6OlppcGY8aW50PigqZ2VuLCAxMDApOworICBhYnNs
OjpaaXBmPGludDhfdD4oKmdlbiwgMTAwKTsKKyAgYWJzbDo6WmlwZjxpbnQxNl90PigqZ2VuLCAx
MDApOworICBhYnNsOjpaaXBmPHVpbnQxNl90PigqZ2VuLCAxMDApOworICBhYnNsOjpaaXBmPGlu
dDMyX3Q+KCpnZW4sIDEgPDwgMTApOworICBhYnNsOjpaaXBmPHVpbnQzMl90PigqZ2VuLCAxIDw8
IDEwKTsKKyAgYWJzbDo6WmlwZjxpbnQ2NF90PigqZ2VuLCAxIDw8IDEwKTsKKyAgYWJzbDo6Wmlw
Zjx1aW50NjRfdD4oKmdlbiwgMSA8PCAxMCk7CisgIGFic2w6OlppcGY8dWludDY0X3Q+KFVSQkco
KSwgMSA8PCAxMCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordm9pZCBUZXN0R2F1
c3NpYW4oVVJCRyogZ2VuKSB7CisgIGFic2w6OkdhdXNzaWFuPGZsb2F0PigqZ2VuLCAxLjAsIDEu
MCk7CisgIGFic2w6OkdhdXNzaWFuPGRvdWJsZT4oKmdlbiwgMS4wLCAxLjApOworICBhYnNsOjpH
YXVzc2lhbjxkb3VibGU+KFVSQkcoKSwgMS4wLCAxLjApOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVVJCRz4KK3ZvaWQgVGVzdExvZ05vcm1hbChVUkJHKiBnZW4pIHsKKyAgYWJzbDo6TG9nVW5p
Zm9ybTxpbnQ+KCpnZW4sIDAsIDEwMCk7CisgIGFic2w6OkxvZ1VuaWZvcm08aW50OF90PigqZ2Vu
LCAwLCAxMDApOworICBhYnNsOjpMb2dVbmlmb3JtPGludDE2X3Q+KCpnZW4sIDAsIDEwMCk7Cisg
IGFic2w6OkxvZ1VuaWZvcm08dWludDE2X3Q+KCpnZW4sIDAsIDEwMCk7CisgIGFic2w6OkxvZ1Vu
aWZvcm08aW50MzJfdD4oKmdlbiwgMCwgMSA8PCAxMCk7CisgIGFic2w6OkxvZ1VuaWZvcm08dWlu
dDMyX3Q+KCpnZW4sIDAsIDEgPDwgMTApOworICBhYnNsOjpMb2dVbmlmb3JtPGludDY0X3Q+KCpn
ZW4sIDAsIDEgPDwgMTApOworICBhYnNsOjpMb2dVbmlmb3JtPHVpbnQ2NF90PigqZ2VuLCAwLCAx
IDw8IDEwKTsKKyAgYWJzbDo6TG9nVW5pZm9ybTx1aW50NjRfdD4oVVJCRygpLCAwLCAxIDw8IDEw
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit2b2lkIENvbXBhdGliaWxpdHlUZXN0
KCkgeworICBVUkJHIGdlbjsKKworICBUZXN0VW5pZm9ybSgmZ2VuKTsKKyAgVGVzdEV4cG9uZW50
aWFsKCZnZW4pOworICBUZXN0UG9pc3NvbigmZ2VuKTsKKyAgVGVzdEJlcm5vdWxsaSgmZ2VuKTsK
KyAgVGVzdFppcGYoJmdlbik7CisgIFRlc3RHYXVzc2lhbigmZ2VuKTsKKyAgVGVzdExvZ05vcm1h
bCgmZ2VuKTsKK30KKworVEVTVChzdGRfbXQxOTkzN182NCwgQ29tcGF0aWJpbGl0eSkgeworICAv
LyBWYWxpZGF0ZSB3aXRoIHN0ZDo6bXQxOTkzN182NAorICBDb21wYXRpYmlsaXR5VGVzdDxzdGQ6
Om10MTk5MzdfNjQ+KCk7Cit9CisKK1RFU1QoQml0R2VuLCBDb21wYXRpYmlsaXR5KSB7CisgIC8v
IFZhbGlkYXRlIHdpdGggYWJzbDo6Qml0R2VuCisgIENvbXBhdGliaWxpdHlUZXN0PGFic2w6OkJp
dEdlbj4oKTsKK30KKworVEVTVChJbnNlY3VyZUJpdEdlbiwgQ29tcGF0aWJpbGl0eSkgeworICAv
LyBWYWxpZGF0ZSB3aXRoIGFic2w6Okluc2VjdXJlQml0R2VuCisgIENvbXBhdGliaWxpdHlUZXN0
PGFic2w6Okluc2VjdXJlQml0R2VuPigpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRl
cm5hbC9CVUlMRC5iYXplbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
ZmQ1NDcxYTYxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvQlVJ
TEQuYmF6ZWwKQEAgLTAsMCArMSw2NTggQEAKKyMgSW50ZXJuYWwtb25seSBpbXBsZW1lbnRhdGlv
biBjbGFzc2VzIGZvciBBYnNlaWwgUmFuZG9tCitsb2FkKAorICAgICIvL2Fic2w6Y29wdHMvY29u
ZmlndXJlX2NvcHRzLmJ6bCIsCisgICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCisgICAgIkFCU0xf
REVGQVVMVF9MSU5LT1BUUyIsCisgICAgIkFCU0xfUkFORE9NX1JBTkRFTl9DT1BUUyIsCisgICAg
IkFCU0xfVEVTVF9DT1BUUyIsCisgICAgImFic2xfcmFuZG9tX3JhbmRlbl9jb3B0c19pbml0IiwK
KykKKworcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbCisgICAgIi8vYWJzbC9yYW5kb206
X19wa2dfXyIsCitdKQorCitsaWNlbnNlcyhbIm5vdGljZSJdKSAgIyBBcGFjaGUgMi4wCisKK2Nj
X2xpYnJhcnkoCisgICAgbmFtZSA9ICJ0cmFpdHMiLAorICAgIGhkcnMgPSBbInRyYWl0cy5oIl0s
CisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RF
RkFVTFRfTElOS09QVFMsCisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbC9yYW5k
b206X19wa2dfXyIsCisgICAgXSwKKyAgICBkZXBzID0gWyIvL2Fic2wvYmFzZTpjb25maWciXSwK
KykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImRpc3RyaWJ1dGlvbl9jYWxsZXIiLAorICAg
IGhkcnMgPSBbImRpc3RyaWJ1dGlvbl9jYWxsZXIuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZB
VUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZp
c2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2wvcmFuZG9tOl9fcGtnX18iLAorICAgIF0sCisp
CisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJkaXN0cmlidXRpb25zIiwKKyAgICBoZHJzID0g
WworICAgICAgICAiZGlzdHJpYnV0aW9ucy5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9E
RUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAg
IGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9uX2NhbGxlciIsCisgICAgICAgICI6ZmFz
dF91bmlmb3JtX2JpdHMiLAorICAgICAgICAiOmZhc3RtYXRoIiwKKyAgICAgICAgIjp0cmFpdHMi
LAorICAgICAgICAiOnVuaWZvcm1faGVscGVyIiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVf
dHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC90eXBl
czpzcGFuIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiZmFzdF91bmlm
b3JtX2JpdHMiLAorICAgIGhkcnMgPSBbCisgICAgICAgICJmYXN0X3VuaWZvcm1fYml0cy5oIiwK
KyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fi
c2wvcmFuZG9tOl9fcGtnX18iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9
ICJzZWVkX21hdGVyaWFsIiwKKyAgICBzcmNzID0gWworICAgICAgICAic2VlZF9tYXRlcmlhbC5j
YyIsCisgICAgXSwKKyAgICBoZHJzID0gWworICAgICAgICAic2VlZF9tYXRlcmlhbC5oIiwKKyAg
ICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZmFzdF91bmlmb3Jt
X2JpdHMiLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29y
ZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC90
eXBlczpvcHRpb25hbCIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6c3BhbiIsCisgICAgXSwKKykK
KworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInBvb2xfdXJiZyIsCisgICAgc3JjcyA9IFsKKyAg
ICAgICAgInBvb2xfdXJiZy5jYyIsCisgICAgXSwKKyAgICBoZHJzID0gWworICAgICAgICAicG9v
bF91cmJnLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAg
bGlua29wdHMgPSBzZWxlY3QoeworICAgICAgICAiLy9hYnNsOndpbmRvd3MiOiBbXSwKKyAgICAg
ICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItcHRocmVhZCJdLAorICAgIH0pICsgQUJTTF9E
RUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6cmFuZGVuIiwKKyAgICAg
ICAgIjpzZWVkX21hdGVyaWFsIiwKKyAgICAgICAgIjp0cmFpdHMiLAorICAgICAgICAiLy9hYnNs
L2Jhc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKKyAgICAgICAgIi8vYWJzbC9i
YXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvYmFzZTplbmRpYW4iLAorICAgICAg
ICAiLy9hYnNsL3JhbmRvbTpzZWVkX2dlbl9leGNlcHRpb24iLAorICAgICAgICAiLy9hYnNsL3R5
cGVzOnNwYW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJleHBsaWNp
dF9zZWVkX3NlcSIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBbCisgICAgICAgICJl
eHBsaWNpdF9zZWVkX3NlcS5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorKQorCitjY19saWJy
YXJ5KAorICAgIG5hbWUgPSAic2VxdWVuY2VfdXJiZyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAg
IGhkcnMgPSBbCisgICAgICAgICJzZXF1ZW5jZV91cmJnLmgiLAorICAgIF0sCisgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJzYWx0ZWRfc2VlZF9zZXEiLAorICAg
IGhkcnMgPSBbCisgICAgICAgICJzYWx0ZWRfc2VlZF9zZXEuaCIsCisgICAgXSwKKyAgICBjb3B0
cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOnNlZWRfbWF0ZXJpYWwiLAorICAgICAgICAi
Ly9hYnNsL2NvbnRhaW5lcjppbmxpbmVkX3ZlY3RvciIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0
eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICAgICAgICAi
Ly9hYnNsL3R5cGVzOnNwYW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9
ICJpb3N0cmVhbV9zdGF0ZV9zYXZlciIsCisgICAgaGRycyA9IFsiaW9zdHJlYW1fc3RhdGVfc2F2
ZXIuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICIvL2Fic2wvbWV0
YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wvbnVtZXJpYzppbnQxMjgiLAorICAgIF0s
CispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJkaXN0cmlidXRpb25faW1wbCIsCisgICAg
aGRycyA9IFsKKyAgICAgICAgImRpc3RyaWJ1dGlvbl9pbXBsLmgiLAorICAgIF0sCisgICAgY29w
dHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpmYXN0bWF0aCIsCisgICAgICAgICI6dHJh
aXRzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmJpdHMiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6
Y29uZmlnIiwKKyAgICAgICAgIi8vYWJzbC9udW1lcmljOmludDEyOCIsCisgICAgXSwKKykKKwor
Y2NfbGlicmFyeSgKKyAgICBuYW1lID0gImZhc3RtYXRoIiwKKyAgICBoZHJzID0gWworICAgICAg
ICAiZmFzdG1hdGguaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWyIvL2Fi
c2wvYmFzZTpiaXRzIl0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJub25zZWN1cmVf
YmFzZSIsCisgICAgaGRycyA9IFsibm9uc2VjdXJlX2Jhc2UuaCJdLAorICAgIGNvcHRzID0gQUJT
TF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6cG9vbF91cmJnIiwKKyAgICAgICAgIjpzYWx0ZWRfc2Vl
ZF9zZXEiLAorICAgICAgICAiOnNlZWRfbWF0ZXJpYWwiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6
Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAg
ICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpvcHRpb25hbCIsCisg
ICAgICAgICIvL2Fic2wvdHlwZXM6c3BhbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAg
ICBuYW1lID0gInBjZ19lbmdpbmUiLAorICAgIGhkcnMgPSBbInBjZ19lbmdpbmUuaCJdLAorICAg
IGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZmFzdG1hdGgiLAorICAgICAgICAi
Omlvc3RyZWFtX3N0YXRlX3NhdmVyIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCisg
ICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wvbnVtZXJp
YzppbnQxMjgiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJyYW5kZW5f
ZW5naW5lIiwKKyAgICBoZHJzID0gWyJyYW5kZW5fZW5naW5lLmgiXSwKKyAgICBjb3B0cyA9IEFC
U0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
KyAgICBkZXBzID0gWworICAgICAgICAiOmlvc3RyZWFtX3N0YXRlX3NhdmVyIiwKKyAgICAgICAg
IjpyYW5kZW4iLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgIF0sCisp
CisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJwbGF0Zm9ybSIsCisgICAgaGRycyA9IFsKKyAg
ICAgICAgInJhbmRlbl90cmFpdHMuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVM
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB0ZXh0
dWFsX2hkcnMgPSBbCisgICAgICAgICJyYW5kZW4ta2V5cy5pbmMiLAorICAgICAgICAicGxhdGZv
cm0uaCIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInJhbmRlbiIsCisg
ICAgc3JjcyA9IFsKKyAgICAgICAgInJhbmRlbi5jYyIsCisgICAgXSwKKyAgICBoZHJzID0gWwor
ICAgICAgICAicmFuZGVuLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsK
KyAgICAgICAgIjpwbGF0Zm9ybSIsCisgICAgICAgICI6cmFuZGVuX2h3YWVzIiwKKyAgICAgICAg
IjpyYW5kZW5fc2xvdyIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgXSwKKykKKworY2Nf
bGlicmFyeSgKKyAgICBuYW1lID0gInJhbmRlbl9zbG93IiwKKyAgICBzcmNzID0gWyJyYW5kZW5f
c2xvdy5jYyJdLAorICAgIGhkcnMgPSBbInJhbmRlbl9zbG93LmgiXSwKKyAgICBjb3B0cyA9IEFC
U0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
KyAgICBkZXBzID0gWworICAgICAgICAiOnBsYXRmb3JtIiwKKyAgICBdLAorKQorCithYnNsX3Jh
bmRvbV9yYW5kZW5fY29wdHNfaW5pdCgpCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJyYW5k
ZW5faHdhZXMiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJyYW5kZW5fZGV0ZWN0LmNjIiwKKyAg
ICBdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJyYW5kZW5fZGV0ZWN0LmgiLAorICAgICAgICAi
cmFuZGVuX2h3YWVzLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAg
ICAgICAgIjpwbGF0Zm9ybSIsCisgICAgICAgICI6cmFuZGVuX2h3YWVzX2ltcGwiLAorICAgIF0s
CispCisKKyMgYnVpbGQgd2l0aCAtLXNhdmVfdGVtcHMgdG8gc2VlIGFzc2VtYmx5IGxhbmd1YWdl
IG91dHB1dC4KK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJyYW5kZW5faHdhZXNfaW1wbCIsCisg
ICAgc3JjcyA9IFsKKyAgICAgICAgInJhbmRlbl9od2Flcy5jYyIsCisgICAgICAgICJyYW5kZW5f
aHdhZXMuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUyArIEFCU0xf
UkFORE9NX1JBTkRFTl9DT1BUUyArIHNlbGVjdCh7CisgICAgICAgICIvL2Fic2w6d2luZG93cyI6
IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi1Xbm8tcGFzcy1mYWlsZWQi
XSwKKyAgICB9KSwKKyAgICAjIGNvcHRzIGluIFJBTkRFTl9IV0FFU19DT1BUUyBjYW4gbWFrZSB0
aGlzIHRhcmdldCB1bnVzYWJsZSBhcyBhIG1vZHVsZQorICAgICMgbGVhZGluZyB0byBhIENsYW5n
IGRpYWdub3N0aWMuIEZ1cnRoZXJtb3JlLCBpdCBvbmx5IGhhcyBhIHByaXZhdGUgaGVhZGVyCisg
ICAgIyBhbnl3YXkgYW5kIHRodXMgdGhlcmUgd291bGRuJ3QgYmUgYW55IGdhaW4gZnJvbSB1c2lu
ZyBpdCBhcyBhIG1vZHVsZS4KKyAgICBmZWF0dXJlcyA9IFsiLWhlYWRlcl9tb2R1bGVzIl0sCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsiOnBsYXRm
b3JtIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdhdXNzaWFuX2Rpc3RyaWJ1dGlv
bl9nZW50YWJsZXMiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJnYXVzc2lhbl9kaXN0cmlidXRp
b25fZ2VudGFibGVzLmNjIiwKKyAgICBdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMi
LAorICAgICAgICAiLy9hYnNsL3JhbmRvbTpkaXN0cmlidXRpb25zIiwKKyAgICBdLAorKQorCitj
Y19saWJyYXJ5KAorICAgIG5hbWUgPSAiZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgdGVz
dG9ubHkgPSAxLAorICAgIHNyY3MgPSBbCisgICAgICAgICJjaGlfc3F1YXJlLmNjIiwKKyAgICAg
ICAgImRpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuY2MiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAg
ICAgICAgImNoaV9zcXVhcmUuaCIsCisgICAgICAgICJkaXN0cmlidXRpb25fdGVzdF91dGlsLmgi
LAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9i
YXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fi
c2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5nczpzdHJfZm9ybWF0IiwKKyAgICAg
ICAgIi8vYWJzbC90eXBlczpzcGFuIiwKKyAgICBdLAorKQorCisjIENvbW1vbiB0YWdzIGZvciB0
ZXN0cywgZXRjLgorQUJTTF9SQU5ET01fTk9OUE9SVEFCTEVfVEFHUyA9IFsKKyAgICAibm9fdGVz
dF9hbmRyb2lkX2FybSIsCisgICAgIm5vX3Rlc3RfYW5kcm9pZF9hcm02NCIsCisgICAgIm5vX3Rl
c3RfYW5kcm9pZF94ODYiLAorICAgICJub190ZXN0X2Rhcndpbl94ODZfNjQiLAorICAgICJub190
ZXN0X2lvc194ODZfNjQiLAorICAgICJub190ZXN0X2xvb25peCIsCisgICAgIm5vX3Rlc3RfbXN2
Y194NjQiLAorICAgICJub190ZXN0X3dhc20iLAorXQorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
dHJhaXRzX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbInRyYWl0c190
ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBB
QlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjp0cmFpdHMiLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCisp
CisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJkaXN0cmlidXRpb25faW1wbF90ZXN0IiwKKyAgICBz
aXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJkaXN0cmlidXRpb25faW1wbF90ZXN0LmNjIl0s
CisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25faW1wbCIs
CisgICAgICAgICIvL2Fic2wvYmFzZTpiaXRzIiwKKyAgICAgICAgIi8vYWJzbC9mbGFnczpmbGFn
IiwKKyAgICAgICAgIi8vYWJzbC9udW1lcmljOmludDEyOCIsCisgICAgICAgICJAY29tX2dvb2ds
ZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBu
YW1lID0gImRpc3RyaWJ1dGlvbl90ZXN0X3V0aWxfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIs
CisgICAgc3JjcyA9IFsiZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbF90ZXN0LmNjIl0sCisgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25fdGVzdF91dGlsIiwKKyAg
ICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQor
CitjY190ZXN0KAorICAgIG5hbWUgPSAiZmFzdG1hdGhfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFs
bCIsCisgICAgc3JjcyA9IFsiZmFzdG1hdGhfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRl
cHMgPSBbCisgICAgICAgICI6ZmFzdG1hdGgiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xl
dGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJl
eHBsaWNpdF9zZWVkX3NlcV90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0g
WyJleHBsaWNpdF9zZWVkX3NlcV90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsK
KyAgICAgICAgIjpleHBsaWNpdF9zZWVkX3NlcSIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tOnNl
ZWRfc2VxdWVuY2VzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9t
YWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAic2FsdGVkX3NlZWRfc2Vx
X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbInNhbHRlZF9zZWVkX3Nl
cV90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpzYWx0ZWRf
c2VlZF9zZXEiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4i
LAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJjaGlfc3F1YXJlX3Rlc3QiLAor
ICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJjaGlfc3F1YXJlX3Rl
c3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0
cmlidXRpb25fdGVzdF91dGlsIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIs
CisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwK
KykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImZhc3RfdW5pZm9ybV9iaXRzX3Rlc3QiLAorICAg
IHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJmYXN0X3VuaWZvcm1fYml0
c190ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxp
bmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6
ZmFzdF91bmlmb3JtX2JpdHMiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0
ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJub25zZWN1cmVf
YmFzZV90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAi
bm9uc2VjdXJlX2Jhc2VfdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0g
WworICAgICAgICAiOm5vbnNlY3VyZV9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20iLAor
ICAgICAgICAiLy9hYnNsL3JhbmRvbTpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIi8vYWJzbC9y
YW5kb206c2VlZF9zZXF1ZW5jZXMiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAg
ICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2Nj
X3Rlc3QoCisgICAgbmFtZSA9ICJzZWVkX21hdGVyaWFsX3Rlc3QiLAorICAgIHNpemUgPSAic21h
bGwiLAorICAgIHNyY3MgPSBbInNlZWRfbWF0ZXJpYWxfdGVzdC5jYyJdLAorICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6c2VlZF9tYXRlcmlhbCIsCisgICAgICAgICJAY29tX2dv
b2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAg
ICBuYW1lID0gInBvb2xfdXJiZ190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNz
ID0gWworICAgICAgICAicG9vbF91cmJnX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpwb29sX3VyYmciLAorICAgICAgICAiLy9hYnNsL21ldGE6
dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOnNwYW4iLAorICAgICAgICAiQGNv
bV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3Qo
CisgICAgbmFtZSA9ICJwY2dfZW5naW5lX3Rlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwgICMg
VHJ5aW5nIHRvIG1lYXN1cmUgYWNjdXJhY3kuCisgICAgc3JjcyA9IFsicGNnX2VuZ2luZV90ZXN0
LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZmxha3kgPSAxLAorICAg
IGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAg
ICI6ZXhwbGljaXRfc2VlZF9zZXEiLAorICAgICAgICAiOnBjZ19lbmdpbmUiLAorICAgICAgICAi
Ly9hYnNsL3RpbWUiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21h
aW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJyYW5kZW5fZW5naW5lX3Rl
c3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWworICAgICAgICAicmFuZGVu
X2VuZ2luZV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAor
ICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAg
ICAgICI6ZXhwbGljaXRfc2VlZF9zZXEiLAorICAgICAgICAiOnJhbmRlbl9lbmdpbmUiLAorICAg
ICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAi
Ly9hYnNsL3RpbWUiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21h
aW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJyYW5kZW5fdGVzdCIsCisg
ICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsicmFuZGVuX3Rlc3QuY2MiXSwKKyAgICBj
b3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOnJhbmRlbiIsCisgICAgICAgICIvL2Fic2wv
bWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rl
c3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInJhbmRlbl9zbG93
X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbInJhbmRlbl9zbG93X3Rl
c3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOnJhbmRlbl9zbG93
IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBd
LAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAicmFuZGVuX2h3YWVzX3Rlc3QiLAorICAgIHNp
emUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbInJhbmRlbl9od2Flc190ZXN0LmNjIl0sCisgICAg
Y29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCisgICAgdGFncyA9IEFCU0xfUkFORE9NX05PTlBPUlRBQkxFX1RBR1MsCisgICAgZGVw
cyA9IFsKKyAgICAgICAgIjpwbGF0Zm9ybSIsCisgICAgICAgICI6cmFuZGVuX2h3YWVzIiwKKyAg
ICAgICAgIjpyYW5kZW5faHdhZXNfaW1wbCIsICAjIGJ1aWxkX2NsZWFuZXI6IGtlZXAKKyAgICAg
ICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzOnN0cl9mb3JtYXQiLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0IiwKKyAgICBdLAorKQorCitj
Y19saWJyYXJ5KAorICAgIG5hbWUgPSAibmFub2JlbmNobWFyayIsCisgICAgc3JjcyA9IFsibmFu
b2JlbmNobWFyay5jYyJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAor
ICAgIHRleHR1YWxfaGRycyA9IFsibmFub2JlbmNobWFyay5oIl0sCisgICAgZGVwcyA9IFsKKyAg
ICAgICAgIjpwbGF0Zm9ybSIsCisgICAgICAgICI6cmFuZGVuX2VuZ2luZSIsCisgICAgICAgICIv
L2Fic2wvYmFzZSIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInVuaWZv
cm1faGVscGVyIiwKKyAgICBoZHJzID0gWyJ1bmlmb3JtX2hlbHBlci5oIl0sCisgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25faW1wbCIsCisgICAgICAg
ICI6ZmFzdF91bmlmb3JtX2JpdHMiLAorICAgICAgICAiOmlvc3RyZWFtX3N0YXRlX3NhdmVyIiwK
KyAgICAgICAgIjp0cmFpdHMiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
KyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICBdLAorKQorCitjY190ZXN0
KAorICAgIG5hbWUgPSAibmFub2JlbmNobWFya190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwK
KyAgICBzcmNzID0gWyJuYW5vYmVuY2htYXJrX3Rlc3QuY2MiXSwKKyAgICBmbGFreSA9IDEsCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgdGFncyA9IFsKKyAgICAg
ICAgImJlbmNobWFyayIsCisgICAgICAgICJub190ZXN0X2lvc194ODZfNjQiLAorICAgICAgICAi
bm9fdGVzdF9sb29uaXgiLCAgIyBDcmFzaGluZy4KKyAgICBdLAorICAgIGRlcHMgPSBbCisgICAg
ICAgICI6bmFub2JlbmNobWFyayIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIv
L2Fic2wvc3RyaW5ncyIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInJhbmRl
bl9iZW5jaG1hcmtzIiwKKyAgICBzaXplID0gIm1lZGl1bSIsCisgICAgc3JjcyA9IFsicmFuZGVu
X2JlbmNobWFya3MuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfUkFO
RE9NX1JBTkRFTl9DT1BUUywKKyAgICBmbGFreSA9IDEsCisgICAgbGlua29wdHMgPSBBQlNMX0RF
RkFVTFRfTElOS09QVFMsCisgICAgdGFncyA9IEFCU0xfUkFORE9NX05PTlBPUlRBQkxFX1RBR1Mg
KyBbImJlbmNobWFyayJdLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6bmFub2JlbmNobWFyayIs
CisgICAgICAgICI6cGxhdGZvcm0iLAorICAgICAgICAiOnJhbmRlbiIsCisgICAgICAgICI6cmFu
ZGVuX2VuZ2luZSIsCisgICAgICAgICI6cmFuZGVuX2h3YWVzIiwKKyAgICAgICAgIjpyYW5kZW5f
aHdhZXNfaW1wbCIsCisgICAgICAgICI6cmFuZGVuX3Nsb3ciLAorICAgICAgICAiLy9hYnNsL2Jh
c2UiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisg
ICAgbmFtZSA9ICJpb3N0cmVhbV9zdGF0ZV9zYXZlcl90ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gWyJpb3N0cmVhbV9zdGF0ZV9zYXZlcl90ZXN0LmNjIl0sCisgICAgbGlu
a29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpp
b3N0cmVhbV9zdGF0ZV9zYXZlciIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9CVUlMRC5nbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDA0ODBmNDMzOGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvQlVJTEQuZ24KQEAgLTAsMCArMSw0NTkgQEAKKyMgQ29w
eXJpZ2h0IDIwMTggVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworaW1wb3J0KCIv
L2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQorCisjIFVzYWdlIG9mIEFic2VpbCBpbiBDaHJv
bWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRk
aW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1
bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGluZm9ybWF0aW9uIGNhbiBi
ZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1B
M3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQoraWYgKGJ1aWxkX3dpdGhfY2hy
b21pdW0pIHsKKyAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCisgICAg
Ii8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
KiIsCisgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCisgICAgIi8vdGhpcmRf
cGFydHkvb3BlbnNjcmVlbi8qIiwKKyAgXQorfSBlbHNlIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioi
IF0KK30KKworc291cmNlX3NldCgidHJhaXRzIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQv
Y29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2Nv
bmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIg
XQorICBwdWJsaWMgPSBbCisgICAgInRyYWl0cy5oIiwKKyAgXQorICB2aXNpYmlsaXR5ID0gW10K
KyAgdmlzaWJpbGl0eSArPSBbICIuLi8uLi9yYW5kb20vKiIgXQorICBkZXBzID0gWworICAgICIu
Li8uLi9iYXNlOmNvbmZpZyIsCisgIF0KK30KKworc291cmNlX3NldCgiZGlzdHJpYnV0aW9uX2Nh
bGxlciIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1
bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpu
b19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVm
YXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJk
aXN0cmlidXRpb25fY2FsbGVyLmgiLAorICBdCisgIHZpc2liaWxpdHkgPSBbXQorICB2aXNpYmls
aXR5ICs9IFsgIi4uLy4uL3JhbmRvbS8qIiBdCit9CisKK3NvdXJjZV9zZXQoImRpc3RyaWJ1dGlv
bnMiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1f
Y29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9f
Y2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1
bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiZGlz
dHJpYnV0aW9ucy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6ZGlzdHJpYnV0aW9uX2NhbGxl
ciIsCisgICAgIjpmYXN0X3VuaWZvcm1fYml0cyIsCisgICAgIjpmYXN0bWF0aCIsCisgICAgIjp0
cmFpdHMiLAorICAgICI6dW5pZm9ybV9oZWxwZXIiLAorICAgICIuLi8uLi9tZXRhOnR5cGVfdHJh
aXRzIiwKKyAgICAiLi4vLi4vc3RyaW5ncyIsCisgICAgIi4uLy4uL3R5cGVzOnNwYW4iLAorICBd
Cit9CisKK3NvdXJjZV9zZXQoImZhc3RfdW5pZm9ybV9iaXRzIikgeworICBjb25maWdzIC09IFsg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBb
CisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAg
cHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRl
X2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImZhc3RfdW5pZm9ybV9iaXRzLmgiLAorICBd
CisgIHZpc2liaWxpdHkgPSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIi4uLy4uL3JhbmRvbS8qIiBd
Cit9CisKK3NvdXJjZV9zZXQoInNlZWRfbWF0ZXJpYWwiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAg
ICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJs
aWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29u
ZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAic2VlZF9tYXRlcmlhbC5oIiwKKyAgXQorICBzb3Vy
Y2VzID0gWworICAgICJzZWVkX21hdGVyaWFsLmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICI6
ZmFzdF91bmlmb3JtX2JpdHMiLAorICAgICIuLi8uLi9iYXNlIiwKKyAgICAiLi4vLi4vYmFzZTpj
b3JlX2hlYWRlcnMiLAorICAgICIuLi8uLi9zdHJpbmdzIiwKKyAgICAiLi4vLi4vdHlwZXM6b3B0
aW9uYWwiLAorICAgICIuLi8uLi90eXBlczpzcGFuIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJw
b29sX3VyYmciKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hy
b21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGls
ZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNs
X2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAg
ICAicG9vbF91cmJnLmgiLAorICBdCisgIHNvdXJjZXMgPSBbCisgICAgInBvb2xfdXJiZy5jYyIs
CisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOnJhbmRlbiIsCisgICAgIjpzZWVkX21hdGVyaWFsIiwK
KyAgICAiOnRyYWl0cyIsCisgICAgIi4uLy4uL2Jhc2UiLAorICAgICIuLi8uLi9iYXNlOmNvbmZp
ZyIsCisgICAgIi4uLy4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vLi4vYmFzZTplbmRp
YW4iLAorICAgICIuLi8uLi9yYW5kb206c2VlZF9nZW5fZXhjZXB0aW9uIiwKKyAgICAiLi4vLi4v
dHlwZXM6c3BhbiIsCisgIF0KK30KKworc291cmNlX3NldCgiZXhwbGljaXRfc2VlZF9zZXEiKSB7
CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBp
bGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmln
L2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMg
PSBbCisgICAgImV4cGxpY2l0X3NlZWRfc2VxLmgiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInNl
cXVlbmNlX3VyYmciKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVp
bGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGlj
X2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZp
ZyIgXQorICBwdWJsaWMgPSBbCisgICAgInNlcXVlbmNlX3VyYmcuaCIsCisgIF0KK30KKworc291
cmNlX3NldCgic2FsdGVkX3NlZWRfc2VxIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29u
ZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVp
bGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZp
Z3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQor
ICBwdWJsaWMgPSBbCisgICAgInNhbHRlZF9zZWVkX3NlcS5oIiwKKyAgXQorICBkZXBzID0gWwor
ICAgICI6c2VlZF9tYXRlcmlhbCIsCisgICAgIi4uLy4uL2NvbnRhaW5lcjppbmxpbmVkX3ZlY3Rv
ciIsCisgICAgIi4uLy4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi8uLi90eXBlczpvcHRp
b25hbCIsCisgICAgIi4uLy4uL3R5cGVzOnNwYW4iLAorICBdCit9CisKK3NvdXJjZV9zZXQoImlv
c3RyZWFtX3N0YXRlX3NhdmVyIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2Nv
bXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29u
ZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBb
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJs
aWMgPSBbCisgICAgImlvc3RyZWFtX3N0YXRlX3NhdmVyLmgiLAorICBdCisgIGRlcHMgPSBbCisg
ICAgIi4uLy4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi8uLi9udW1lcmljOmludDEyOCIs
CisgIF0KK30KKworc291cmNlX3NldCgiZGlzdHJpYnV0aW9uX2ltcGwiKSB7CisgIGNvbmZpZ3Mg
LT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdz
ICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAg
XQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2lu
Y2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiZGlzdHJpYnV0aW9uX2ltcGwuaCIs
CisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmZhc3RtYXRoIiwKKyAgICAiOnRyYWl0cyIsCisgICAg
Ii4uLy4uL2Jhc2U6Yml0cyIsCisgICAgIi4uLy4uL2Jhc2U6Y29uZmlnIiwKKyAgICAiLi4vLi4v
bnVtZXJpYzppbnQxMjgiLAorICBdCit9CisKK3NvdXJjZV9zZXQoImZhc3RtYXRoIikgeworICBj
b25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAg
Y29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2Nv
ZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19j
YyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6
YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImZhc3RtYXRoLmgiLAor
ICBdCisgIGRlcHMgPSBbCisgICAgIi4uLy4uL2Jhc2U6Yml0cyIsCisgIF0KK30KKworc291cmNl
X3NldCgibm9uc2VjdXJlX2Jhc2UiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9j
b25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9
IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1
YmxpYyA9IFsKKyAgICAibm9uc2VjdXJlX2Jhc2UuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAi
OnBvb2xfdXJiZyIsCisgICAgIjpzYWx0ZWRfc2VlZF9zZXEiLAorICAgICI6c2VlZF9tYXRlcmlh
bCIsCisgICAgIi4uLy4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vLi4vbWV0YTp0eXBl
X3RyYWl0cyIsCisgICAgIi4uLy4uL3N0cmluZ3MiLAorICAgICIuLi8uLi90eXBlczpvcHRpb25h
bCIsCisgICAgIi4uLy4uL3R5cGVzOnNwYW4iLAorICBdCit9CisKK3NvdXJjZV9zZXQoInBjZ19l
bmdpbmUiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21p
dW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6
bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2Rl
ZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAi
cGNnX2VuZ2luZS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6ZmFzdG1hdGgiLAorICAgICI6
aW9zdHJlYW1fc3RhdGVfc2F2ZXIiLAorICAgICIuLi8uLi9iYXNlOmNvbmZpZyIsCisgICAgIi4u
Ly4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi8uLi9udW1lcmljOmludDEyOCIsCisgIF0K
K30KKworc291cmNlX3NldCgicmFuZGVuX2VuZ2luZSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1
aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAg
ICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1Ymxp
Y19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25m
aWciIF0KKyAgcHVibGljID0gWworICAgICJyYW5kZW5fZW5naW5lLmgiLAorICBdCisgIGRlcHMg
PSBbCisgICAgIjppb3N0cmVhbV9zdGF0ZV9zYXZlciIsCisgICAgIjpyYW5kZW4iLAorICAgICIu
Li8uLi9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJwbGF0Zm9ybSIp
IHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2Rl
IiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJv
bWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9j
ZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJwbGF0Zm9y
bS5oIiwKKyAgICAicmFuZGVuLWtleXMuaW5jIiwKKyAgICAicmFuZGVuX3RyYWl0cy5oIiwKKyAg
XQorfQorCitzb3VyY2Vfc2V0KCJyYW5kZW4iKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9j
b25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29u
ZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBd
CisgIHB1YmxpYyA9IFsKKyAgICAicmFuZGVuLmgiLAorICBdCisgIHNvdXJjZXMgPSBbCisgICAg
InJhbmRlbi5jYyIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOnBsYXRmb3JtIiwKKyAgICAiOnJh
bmRlbl9od2FlcyIsCisgICAgIjpyYW5kZW5fc2xvdyIsCisgICAgIi4uLy4uL2Jhc2UiLAorICBd
Cit9CisKK3NvdXJjZV9zZXQoInJhbmRlbl9zbG93IikgeworICBjb25maWdzIC09IFsgIi8vYnVp
bGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGlj
X2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZp
ZyIgXQorICBwdWJsaWMgPSBbCisgICAgInJhbmRlbl9zbG93LmgiLAorICBdCisgIHNvdXJjZXMg
PSBbCisgICAgInJhbmRlbl9zbG93LmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICI6cGxhdGZv
cm0iLAorICBdCit9CisKK3NvdXJjZV9zZXQoInJhbmRlbl9od2FlcyIpIHsKKyAgY29uZmlncyAt
PSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3Mg
Kz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBd
CisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5j
bHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJyYW5kZW5fZGV0ZWN0LmgiLAorICAg
ICJyYW5kZW5faHdhZXMuaCIsCisgIF0KKyAgc291cmNlcyA9IFsKKyAgICAicmFuZGVuX2RldGVj
dC5jYyIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOnBsYXRmb3JtIiwKKyAgICAiOnJhbmRlbl9o
d2Flc19pbXBsIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJyYW5kZW5faHdhZXNfaW1wbCIpIHsK
KyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBd
CisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1
bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxh
Z3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAicmFuZGVuX2h3
YWVzLmNjIiwKKyAgICAicmFuZGVuX2h3YWVzLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpw
bGF0Zm9ybSIsCisgIF0KK30KKworZXhlY3V0YWJsZSgiZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2dl
bnRhYmxlcyIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv
bWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
ZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAg
ICAiZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2dlbnRhYmxlcy5jYyIsCisgIF0KKyAgZGVwcyA9IFsK
KyAgICAiLi4vLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi8uLi9yYW5kb206ZGlzdHJp
YnV0aW9ucyIsCisgIF0KK30KKworc291cmNlX3NldCgiZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIp
IHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1Ymxp
YyA9IFsKKyAgICAiY2hpX3NxdWFyZS5oIiwKKyAgICAiZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5o
IiwKKyAgXQorICBzb3VyY2VzID0gWworICAgICJjaGlfc3F1YXJlLmNjIiwKKyAgICAiZGlzdHJp
YnV0aW9uX3Rlc3RfdXRpbC5jYyIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vLi4vYmFzZSIs
CisgICAgIi4uLy4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vLi4vc3RyaW5ncyIsCisg
ICAgIi4uLy4uL3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisgICAgIi4uLy4uL3R5cGVzOnNwYW4iLAor
ICBdCit9CisKK3NvdXJjZV9zZXQoIm5hbm9iZW5jaG1hcmsiKSB7CisgIGNvbmZpZ3MgLT0gWyAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsK
KyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBw
dWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVf
Y29uZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgIm5hbm9iZW5jaG1hcmsuY2MiLAorICBdCisg
IGRlcHMgPSBbCisgICAgIjpwbGF0Zm9ybSIsCisgICAgIjpyYW5kZW5fZW5naW5lIiwKKyAgICAi
Li4vLi4vYmFzZSIsCisgIF0KK30KKworc291cmNlX3NldCgidW5pZm9ybV9oZWxwZXIiKSB7Cisg
IGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQor
ICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1f
Y29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdz
X2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAidW5pZm9ybV9oZWxw
ZXIuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmRpc3RyaWJ1dGlvbl9pbXBsIiwKKyAgICAi
OmZhc3RfdW5pZm9ybV9iaXRzIiwKKyAgICAiOmlvc3RyZWFtX3N0YXRlX3NhdmVyIiwKKyAgICAi
OnRyYWl0cyIsCisgICAgIi4uLy4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vLi4vbWV0
YTp0eXBlX3RyYWl0cyIsCisgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC9jaGlfc3F1YXJlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMwYWNjOTQ3Nzg4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuY2MKQEAgLTAsMCAr
MSwyMzAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorCisjaW5jbHVkZSA8Y21h
dGg+CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91
dGlsLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgewor
bmFtZXNwYWNlIHsKKworI2lmIGRlZmluZWQoX19FTVNDUklQVEVOX18pCisvLyBXb3JrYXJvdW5k
IF9fRU1TQ1JJUFRFTl9fIGVycm9yOiBsbHZtX2ZtYV9mNjQgbm90IGZvdW5kLgoraW5saW5lIGRv
dWJsZSBmbWEoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgeworICByZXR1cm4gKHggKiB5
KSArIHo7Cit9CisjZW5kaWYKKworLy8gVXNlIEhvcm5lcidzIG1ldGhvZCB0byBldmFsdWF0ZSBh
IHBvbHlub21pYWwuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQgTj4KK2lubGluZSBU
IEV2YWx1YXRlUG9seW5vbWlhbChUIHgsIGNvbnN0IFQgKCZwb2x5KVtOXSkgeworI2lmICFkZWZp
bmVkKF9fRU1TQ1JJUFRFTl9fKQorICB1c2luZyBzdGQ6OmZtYTsKKyNlbmRpZgorICBUIHAgPSBw
b2x5W04gLSAxXTsKKyAgZm9yICh1bnNpZ25lZCBpID0gMjsgaSA8PSBOOyBpKyspIHsKKyAgICBw
ID0gZm1hKHAsIHgsIHBvbHlbTiAtIGldKTsKKyAgfQorICByZXR1cm4gcDsKK30KKworc3RhdGlj
IGNvbnN0ZXhwciBpbnQga0xhcmdlRE9GID0gMTUwOworCisvLyBSZXR1cm5zIHRoZSBwcm9iYWJp
bGl0eSBvZiBhIG5vcm1hbCB6LXZhbHVlLgorLy8KKy8vIEFkYXB0ZWQgZnJvbSB0aGUgUE9aIGZ1
bmN0aW9uIGluOgorLy8gICAgIEliYmV0c29uIEQsIEFsZ29yaXRobSAyMDkKKy8vICAgICBDb2xs
ZWN0ZWQgQWxnb3JpdGhtcyBvZiB0aGUgQ0FDTSAxOTYzIHAuIDYxNgorLy8KK2RvdWJsZSBQT1oo
ZG91YmxlIHopIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga1AxW10gPSB7CisgICAgICAw
Ljc5Nzg4NDU2MDU5MywgIC0wLjUzMTkyMzAwNzMwMCwgMC4zMTkxNTI5MzI2OTQsCisgICAgICAt
MC4xNTE5Njg3NTEzNjQsIDAuMDU5MDU0MDM1NjQyLCAgLTAuMDE5MTk4MjkyMDA0LAorICAgICAg
MC4wMDUxOTg3NzUwMTksICAtMC4wMDEwNzUyMDQwNDcsIDAuMDAwMTI0ODE4OTg3LAorICB9Owor
ICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrUDJbXSA9IHsKKyAgICAgIDAuOTk5OTM2NjU3NTI0
LCAgMC4wMDA1MzUzMTA4NDksICAtMC4wMDIxNDEyNjg3NDEsIDAuMDA1MzUzNTc5MTA4LAorICAg
ICAgLTAuMDA5Mjc5NDUzMzQxLCAwLjAxMTYzMDQ0NzMxOSwgIC0wLjAxMDU1NzYyNTAwNiwgMC4w
MDY1NDk3OTEyMTQsCisgICAgICAtMC4wMDIwMzQyNTQ4NzQsIC0wLjAwMDc5NDYyMDgyMCwgMC4w
MDEzOTA2MDQyODQsICAtMC4wMDA2NzY5MDQ5ODYsCisgICAgICAtMC4wMDAwMTk1MzgxMzIsIDAu
MDAwMTUyNTI5MjkwLCAgLTAuMDAwMDQ1MjU1NjU5LAorICB9OworCisgIGNvbnN0IGRvdWJsZSBr
Wk1heCA9IDYuMDsgIC8vIE1heGltdW0gbWVhbmluZ2Z1bCB6LXZhbHVlLgorICBpZiAoeiA9PSAw
LjApIHsKKyAgICByZXR1cm4gMC41OworICB9CisgIGRvdWJsZSB4OworICBkb3VibGUgeSA9IDAu
NSAqIHN0ZDo6ZmFicyh6KTsKKyAgaWYgKHkgPj0gKGtaTWF4ICogMC41KSkgeworICAgIHggPSAx
LjA7CisgIH0gZWxzZSBpZiAoeSA8IDEuMCkgeworICAgIGRvdWJsZSB3ID0geSAqIHk7CisgICAg
eCA9IEV2YWx1YXRlUG9seW5vbWlhbCh3LCBrUDEpICogeSAqIDIuMDsKKyAgfSBlbHNlIHsKKyAg
ICB5IC09IDIuMDsKKyAgICB4ID0gRXZhbHVhdGVQb2x5bm9taWFsKHksIGtQMik7CisgIH0KKyAg
cmV0dXJuIHogPiAwLjAgPyAoKHggKyAxLjApICogMC41KSA6ICgoMS4wIC0geCkgKiAwLjUpOwor
fQorCisvLyBBcHByb3hpbWF0ZXMgdGhlIHN1cnZpdmFsIGZ1bmN0aW9uIG9mIHRoZSBub3JtYWwg
ZGlzdHJpYnV0aW9uLgorLy8KKy8vIEFsZ29yaXRobSAyNi4yLjE4LCBmcm9tOgorLy8gW0FicmFt
b3dpdHogYW5kIFN0ZWd1biwgSGFuZGJvb2sgb2YgTWF0aGVtYXRpY2FsIEZ1bmN0aW9ucyxwLjkz
Ml0KKy8vIGh0dHA6Ly9wZW9wbGUubWF0aC5zZnUuY2EvfmNibS9hYW5kcy9hYnJhbW93aXR6X2Fu
ZF9zdGVndW4ucGRmCisvLworZG91YmxlIG5vcm1hbF9zdXJ2aXZhbChkb3VibGUgeikgeworICAv
LyBNYXliZSByZXBsYWNlIHdpdGggdGhlIGFsdGVybmF0ZSBmb3JtdWxhdGlvbi4KKyAgLy8gMC41
ICogZXJmYygoeCAtIG1lYW4pLyhzcXJ0KDIpICogc2lnbWEpKQorICBzdGF0aWMgY29uc3RleHBy
IGRvdWJsZSBrUltdID0geworICAgICAgMS4wLCAwLjE5Njg1NCwgMC4xMTUxOTQsIDAuMDAwMzQ0
LCAwLjAxOTUyNywKKyAgfTsKKyAgZG91YmxlIHIgPSBFdmFsdWF0ZVBvbHlub21pYWwoeiwga1Ip
OworICByICo9IHI7CisgIHJldHVybiAwLjUgLyAociAqIHIpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UKKworLy8gQ2FsY3VsYXRlcyB0aGUgY3JpdGljYWwgY2hpLXNxdWFyZSB2YWx1ZSBnaXZlbiBk
ZWdyZWVzLW9mLWZyZWVkb20gYW5kIGEKKy8vIHAtdmFsdWUsIHVzdWFsbHkgdXNpbmcgYmlzZWN0
aW9uLiBBbHNvIGtub3duIGJ5IHRoZSBuYW1lIENSSVRDSEkuCitkb3VibGUgQ2hpU3F1YXJlVmFs
dWUoaW50IGRvZiwgZG91YmxlIHApIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga0NoaUVw
c2lsb24gPQorICAgICAgMC4wMDAwMDE7ICAvLyBBY2N1cmFjeSBvZiB0aGUgYXBwcm94aW1hdGlv
bi4KKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga0NoaU1heCA9CisgICAgICA5OTk5OS4wOyAg
Ly8gTWF4aW11bSBjaGktc3F1YXJlZCB2YWx1ZS4KKworICBjb25zdCBkb3VibGUgcF92YWx1ZSA9
IDEuMCAtIHA7CisgIGlmIChkb2YgPCAxIHx8IHBfdmFsdWUgPiAxLjApIHsKKyAgICByZXR1cm4g
MC4wOworICB9CisKKyAgaWYgKGRvZiA+IGtMYXJnZURPRikgeworICAgIC8vIEZvciBsYXJnZSBk
ZWdyZWVzIG9mIGZyZWVkb20sIHVzZSB0aGUgbm9ybWFsIGFwcHJveGltYXRpb24gYnkKKyAgICAv
LyAgICAgV2lsc29uLCBFLiBCLiBhbmQgSGlsZmVydHksIE0uIE0uICgxOTMxKQorICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgY2hpXjIgLSBtZWFuCisgICAgLy8gICAgICAgICAgICAgICAgWiA9
IC0tLS0tLS0tLS0tLS0tCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICBzdGRkZXYKKyAg
ICBjb25zdCBkb3VibGUgeiA9IEludmVyc2VOb3JtYWxTdXJ2aXZhbChwX3ZhbHVlKTsKKyAgICBj
b25zdCBkb3VibGUgbWVhbiA9IDEgLSAyLjAgLyAoOSAqIGRvZik7CisgICAgY29uc3QgZG91Ymxl
IHZhcmlhbmNlID0gMi4wIC8gKDkgKiBkb2YpOworICAgIC8vIENhbm5vdCB1c2UgdGhpcyBtZXRo
b2QgaWYgdGhlIHZhcmlhbmNlIGlzIDAuCisgICAgaWYgKHZhcmlhbmNlICE9IDApIHsKKyAgICAg
IHJldHVybiBzdGQ6OnBvdyh6ICogc3RkOjpzcXJ0KHZhcmlhbmNlKSArIG1lYW4sIDMuMCkgKiBk
b2Y7CisgICAgfQorICB9CisKKyAgaWYgKHBfdmFsdWUgPD0gMC4wKSByZXR1cm4ga0NoaU1heDsK
KworICAvLyBPdGhlcndpc2Ugc2VhcmNoIGZvciB0aGUgcCB2YWx1ZSBieSBiaXNlY3Rpb24KKyAg
ZG91YmxlIG1pbl9jaGlzcSA9IDAuMDsKKyAgZG91YmxlIG1heF9jaGlzcSA9IGtDaGlNYXg7Cisg
IGRvdWJsZSBjdXJyZW50ID0gZG9mIC8gc3RkOjpzcXJ0KHBfdmFsdWUpOworICB3aGlsZSAoKG1h
eF9jaGlzcSAtIG1pbl9jaGlzcSkgPiBrQ2hpRXBzaWxvbikgeworICAgIGlmIChDaGlTcXVhcmVQ
VmFsdWUoY3VycmVudCwgZG9mKSA8IHBfdmFsdWUpIHsKKyAgICAgIG1heF9jaGlzcSA9IGN1cnJl
bnQ7CisgICAgfSBlbHNlIHsKKyAgICAgIG1pbl9jaGlzcSA9IGN1cnJlbnQ7CisgICAgfQorICAg
IGN1cnJlbnQgPSAobWF4X2NoaXNxICsgbWluX2NoaXNxKSAqIDAuNTsKKyAgfQorICByZXR1cm4g
Y3VycmVudDsKK30KKworLy8gQ2FsY3VsYXRlcyB0aGUgcC12YWx1ZSAocHJvYmFiaWxpdHkpIG9m
IGEgZ2l2ZW4gY2hpLXNxdWFyZSB2YWx1ZQorLy8gYW5kIGRlZ3JlZXMgb2YgZnJlZWRvbS4KKy8v
CisvLyBBZGFwdGVkIGZyb20gdGhlIFBPQ0hJU1EgZnVuY3Rpb24gZnJvbToKKy8vICAgICBIaWxs
LCBJLiBELiBhbmQgUGlrZSwgTS4gQy4gIEFsZ29yaXRobSAyOTkKKy8vICAgICBDb2xsZWN0ZWQg
QWxnb3JpdGhtcyBvZiB0aGUgQ0FDTSAxOTYzIHAuIDI0MworLy8KK2RvdWJsZSBDaGlTcXVhcmVQ
VmFsdWUoZG91YmxlIGNoaV9zcXVhcmUsIGludCBkb2YpIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBk
b3VibGUga0xvZ1NxcnRQaSA9CisgICAgICAwLjU3MjM2NDk0MjkyNDcwMDA4NzA3MTcxMzU7ICAv
LyBMb2dbU3FydFtQaV1dCisgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGtJbnZlcnNlU3FydFBp
ID0KKyAgICAgIDAuNTY0MTg5NTgzNTQ3NzU2Mjg2OTQ4MDc5NTsgIC8vIDEvKFNxcnRbUGldKQor
CisgIC8vIEZvciBsYXJnZSBkZWdyZWVzIG9mIGZyZWVkb20sIHVzZSB0aGUgbm9ybWFsIGFwcHJv
eGltYXRpb24gYnkKKyAgLy8gICAgIFdpbHNvbiwgRS4gQi4gYW5kIEhpbGZlcnR5LCBNLiBNLiAo
MTkzMSkKKyAgLy8gVmlhIFdpa2lwZWRpYToKKyAgLy8gICBCeSB0aGUgQ2VudHJhbCBMaW1pdCBU
aGVvcmVtLCBiZWNhdXNlIHRoZSBjaGktc3F1YXJlIGRpc3RyaWJ1dGlvbiBpcyB0aGUKKyAgLy8g
ICBzdW0gb2YgayBpbmRlcGVuZGVudCByYW5kb20gdmFyaWFibGVzIHdpdGggZmluaXRlIG1lYW4g
YW5kIHZhcmlhbmNlLCBpdAorICAvLyAgIGNvbnZlcmdlcyB0byBhIG5vcm1hbCBkaXN0cmlidXRp
b24gZm9yIGxhcmdlIGsuCisgIGlmIChkb2YgPiBrTGFyZ2VET0YpIHsKKyAgICAvLyBSZS1zY2Fs
ZSBldmVyeXRoaW5nLgorICAgIGNvbnN0IGRvdWJsZSBjaGlfc3F1YXJlX3NjYWxlZCA9IHN0ZDo6
cG93KGNoaV9zcXVhcmUgLyBkb2YsIDEuMCAvIDMpOworICAgIGNvbnN0IGRvdWJsZSBtZWFuID0g
MSAtIDIuMCAvICg5ICogZG9mKTsKKyAgICBjb25zdCBkb3VibGUgdmFyaWFuY2UgPSAyLjAgLyAo
OSAqIGRvZik7CisgICAgLy8gSWYgdmFyaWFuY2UgaXMgMCwgdGhpcyBtZXRob2QgY2Fubm90IGJl
IHVzZWQuCisgICAgaWYgKHZhcmlhbmNlICE9IDApIHsKKyAgICAgIGNvbnN0IGRvdWJsZSB6ID0g
KGNoaV9zcXVhcmVfc2NhbGVkIC0gbWVhbikgLyBzdGQ6OnNxcnQodmFyaWFuY2UpOworICAgICAg
aWYgKHogPiAwKSB7CisgICAgICAgIHJldHVybiBub3JtYWxfc3Vydml2YWwoeik7CisgICAgICB9
IGVsc2UgaWYgKHogPCAwKSB7CisgICAgICAgIHJldHVybiAxLjAgLSBub3JtYWxfc3Vydml2YWwo
LXopOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDAuNTsKKyAgICAgIH0KKyAgICB9
CisgIH0KKworICAvLyBUaGUgY2hpIHNxdWFyZSBmdW5jdGlvbiBpcyA+PSAwIGZvciBhbnkgZGVn
cmVlcyBvZiBmcmVlZG9tLgorICAvLyBJbiBvdGhlciB3b3JkcywgcHJvYmFiaWxpdHkgdGhhdCB0
aGUgY2hpIHNxdWFyZSBmdW5jdGlvbiA+PSAwIGlzIDEuCisgIGlmIChjaGlfc3F1YXJlIDw9IDAu
MCkgcmV0dXJuIDEuMDsKKworICAvLyBJZiB0aGUgZGVncmVlcyBvZiBmcmVlZG9tIGlzIHplcm8s
IHRoZSBjaGkgc3F1YXJlIGZ1bmN0aW9uIGlzIGFsd2F5cyAwIGJ5CisgIC8vIGRlZmluaXRpb24u
IEluIG90aGVyIHdvcmRzLCB0aGUgcHJvYmFiaWxpdHkgdGhhdCB0aGUgY2hpIHNxdWFyZSBmdW5j
dGlvbgorICAvLyBpcyA+IDAgaXMgemVybyAoY2hpIHNxdWFyZSB2YWx1ZXMgPD0gMCBoYXZlIGJl
ZW4gZmlsdGVyZWQgYWJvdmUpLgorICBpZiAoZG9mIDwgMSkgcmV0dXJuIDA7CisKKyAgYXV0byBj
YXBwZWRfZXhwID0gW10oZG91YmxlIHgpIHsgcmV0dXJuIHggPCAtMjAgPyAwLjAgOiBzdGQ6OmV4
cCh4KTsgfTsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga0JpZ1ggPSAyMDsKKworICBkb3Vi
bGUgYSA9IDAuNSAqIGNoaV9zcXVhcmU7CisgIGNvbnN0IGJvb2wgZXZlbiA9ICEoZG9mICYgMSk7
ICAvLyBUcnVlIGlmIGRvZiBpcyBhbiBldmVuIG51bWJlci4KKyAgY29uc3QgZG91YmxlIHkgPSBj
YXBwZWRfZXhwKC1hKTsKKyAgZG91YmxlIHMgPSBldmVuID8geSA6ICgyLjAgKiBQT1ooLXN0ZDo6
c3FydChjaGlfc3F1YXJlKSkpOworCisgIGlmIChkb2YgPD0gMikgeworICAgIHJldHVybiBzOwor
ICB9CisKKyAgY2hpX3NxdWFyZSA9IDAuNSAqIChkb2YgLSAxLjApOworICBkb3VibGUgeiA9IChl
dmVuID8gMS4wIDogMC41KTsKKyAgaWYgKGEgPiBrQmlnWCkgeworICAgIGRvdWJsZSBlID0gKGV2
ZW4gPyAwLjAgOiBrTG9nU3FydFBpKTsKKyAgICBkb3VibGUgYyA9IHN0ZDo6bG9nKGEpOworICAg
IHdoaWxlICh6IDw9IGNoaV9zcXVhcmUpIHsKKyAgICAgIGUgPSBzdGQ6OmxvZyh6KSArIGU7Cisg
ICAgICBzICs9IGNhcHBlZF9leHAoYyAqIHogLSBhIC0gZSk7CisgICAgICB6ICs9IDEuMDsKKyAg
ICB9CisgICAgcmV0dXJuIHM7CisgIH0KKworICBkb3VibGUgZSA9IChldmVuID8gMS4wIDogKGtJ
bnZlcnNlU3FydFBpIC8gc3RkOjpzcXJ0KGEpKSk7CisgIGRvdWJsZSBjID0gMC4wOworICB3aGls
ZSAoeiA8PSBjaGlfc3F1YXJlKSB7CisgICAgZSA9IGUgKiAoYSAvIHopOworICAgIGMgPSBjICsg
ZTsKKyAgICB6ICs9IDEuMDsKKyAgfQorICByZXR1cm4gYyAqIHkgKyBzOworfQorCit9ICAvLyBu
YW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRl
cm5hbC9jaGlfc3F1YXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmZhODY0NmYyNzRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2No
aV9zcXVhcmUuaApAQCAtMCwwICsxLDg1IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9DSElfU1FVQVJFX0hf
CisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0NISV9TUVVBUkVfSF8KKworLy8gVGhlIGNo
aS1zcXVhcmUgc3RhdGlzdGljLgorLy8KKy8vIFVzZWZ1bCBmb3IgZXZhbHVhdGluZyBpZiBgRGAg
aW5kZXBlbmRlbnQgcmFuZG9tIHZhcmlhYmxlcyBhcmUgYmVoYXZpbmcgYXMKKy8vIGV4cGVjdGVk
LCBvciBpZiB0d28gZGlzdHJpYnV0aW9ucyBhcmUgc2ltaWxhci4gIChgRGAgaXMgdGhlIGRlZ3Jl
ZXMgb2YKKy8vIGZyZWVkb20pLgorLy8KKy8vIEVhY2ggYnVja2V0IHNob3VsZCBoYXZlIGFuIGV4
cGVjdGVkIGNvdW50IG9mIDEwIG9yIG1vcmUgZm9yIHRoZSBjaGkgc3F1YXJlIHRvCisvLyBiZSBt
ZWFuaW5nZnVsLgorCisjaW5jbHVkZSA8Y2Fzc2VydD4KKworbmFtZXNwYWNlIGFic2wgeworbmFt
ZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKK2NvbnN0ZXhwciBjb25zdCBjaGFyIGtDaGlTcXVh
cmVkW10gPSAiY2hpLXNxdWFyZWQiOworCisvLyBSZXR1cm5zIHRoZSBtZWFzdXJlZCBjaGkgc3F1
YXJlIHZhbHVlLCB1c2luZyBhIHNpbmdsZSBleHBlY3RlZCB2YWx1ZS4gIFRoaXMKKy8vIGFzc3Vt
ZXMgdGhhdCB0aGUgdmFsdWVzIGluIFtiZWdpbiwgZW5kKSBhcmUgdW5pZm9ybWx5IGRpc3RyaWJ1
dGVkLgordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgorZG91YmxlIENoaVNxdWFyZVdpdGhF
eHBlY3RlZChJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kLCBkb3VibGUgZXhwZWN0ZWQpIHsK
KyAgLy8gQ29tcHV0ZSB0aGUgc3VtIGFuZCB0aGUgbnVtYmVyIG9mIGJ1Y2tldHMuCisgIGFzc2Vy
dChleHBlY3RlZCA+PSAxMCk7ICAvLyByZXF1aXJlIGF0IGxlYXN0IDEwIHNhbXBsZXMgcGVyIGJ1
Y2tldC4KKyAgZG91YmxlIGNoaV9zcXVhcmUgPSAwOworICBmb3IgKGF1dG8gaXQgPSBiZWdpbjsg
aXQgIT0gZW5kOyBpdCsrKSB7CisgICAgZG91YmxlIGQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KCpp
dCkgLSBleHBlY3RlZDsKKyAgICBjaGlfc3F1YXJlICs9IGQgKiBkOworICB9CisgIGNoaV9zcXVh
cmUgPSBjaGlfc3F1YXJlIC8gZXhwZWN0ZWQ7CisgIHJldHVybiBjaGlfc3F1YXJlOworfQorCisv
LyBSZXR1cm5zIHRoZSBtZWFzdXJlZCBjaGkgc3F1YXJlIHZhbHVlLCB0YWtpbmcgdGhlIGFjdHVh
bCB2YWx1ZSBvZiBlYWNoIGJ1Y2tldAorLy8gZnJvbSB0aGUgZmlyc3Qgc2V0IG9mIGl0ZXJhdG9y
cywgYW5kIHRoZSBleHBlY3RlZCB2YWx1ZSBvZiBlYWNoIGJ1Y2tldCBmcm9tCisvLyB0aGUgc2Vj
b25kIHNldCBvZiBpdGVyYXRvcnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVu
YW1lIEV4cGVjdGVkPgorZG91YmxlIENoaVNxdWFyZShJdGVyYXRvciBpdCwgSXRlcmF0b3IgZW5k
LCBFeHBlY3RlZCBlaXQsIEV4cGVjdGVkIGVlbmQpIHsKKyAgZG91YmxlIGNoaV9zcXVhcmUgPSAw
OworICBmb3IgKDsgaXQgIT0gZW5kICYmIGVpdCAhPSBlZW5kOyArK2l0LCArK2VpdCkgeworICAg
IGlmICgqaXQgPiAwKSB7CisgICAgICBhc3NlcnQoKmVpdCA+IDApOworICAgIH0KKyAgICBkb3Vi
bGUgZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oKmVpdCk7CisgICAgZG91YmxlIGQgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KCppdCAtICplaXQpOworICAgIGlmIChkICE9IDApIHsKKyAgICAgIGFzc2Vy
dChlID4gMCk7CisgICAgICBjaGlfc3F1YXJlICs9IChkICogZCkgLyBlOworICAgIH0KKyAgfQor
ICBhc3NlcnQoaXQgPT0gZW5kICYmIGVpdCA9PSBlZW5kKTsKKyAgcmV0dXJuIGNoaV9zcXVhcmU7
Cit9CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUg
dXNlZCBmb3IgYW4gYXJiaXRyYXJ5IHNpZ25pZmljYW5jZSBsZXZlbC4KKy8vCisKKy8vIENhbGN1
bGF0ZXMgY3JpdGljYWwgY2hpLXNxdWFyZSB2YWx1ZXMgdG8gcHJvZHVjZSB0aGUgZ2l2ZW4gcC12
YWx1ZSB1c2luZyBhCisvLyBiaXNlY3Rpb24gc2VhcmNoIGZvciBhIHZhbHVlIHdpdGhpbiBlcHNp
bG9uLCByZWx5aW5nIG9uIHRoZSBtb25vdG9uaWNpdHkgb2YKKy8vIENoaVNxdWFyZVBWYWx1ZSgp
LgorZG91YmxlIENoaVNxdWFyZVZhbHVlKGludCBkb2YsIGRvdWJsZSBwKTsKKworLy8gQ2FsY3Vs
YXRlcyB0aGUgcC12YWx1ZSAocHJvYmFiaWxpdHkpIG9mIGEgZ2l2ZW4gY2hpLXNxdWFyZSB2YWx1
ZS4KK2RvdWJsZSBDaGlTcXVhcmVQVmFsdWUoZG91YmxlIGNoaV9zcXVhcmUsIGludCBkb2YpOwor
Cit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAor
CisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX0NISV9TUVVBUkVfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9jaGlfc3F1YXJlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vaW50ZXJuYWwvY2hpX3NxdWFyZV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi41MDI1ZGVmYWMxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9jaGlfc3F1YXJlX3Rlc3QuY2MKQEAgLTAsMCArMSwzNjUgQEAKKy8vIENvcHly
aWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20v
aW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNs
dWRlIDxudW1lcmljPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgorCit1c2luZyBhYnNsOjpyYW5kb21f
aW50ZXJuYWw6OkNoaVNxdWFyZTsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1
YXJlUFZhbHVlOwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVWYWx1ZTsK
K3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlV2l0aEV4cGVjdGVkOworCitu
YW1lc3BhY2UgeworCitURVNUKENoaVNxdWFyZSwgVmFsdWUpIHsKKyAgc3RydWN0IHsKKyAgICBp
bnQgbGluZTsKKyAgICBkb3VibGUgY2hpX3NxdWFyZTsKKyAgICBpbnQgZGY7CisgICAgZG91Ymxl
IGNvbmZpZGVuY2U7CisgIH0gY29uc3Qgc3BlY3NbXSA9IHsKKyAgICAgIC8vIFRlc3RpbmcgbG9v
a3VwIGF0IDElIGNvbmZpZGVuY2UKKyAgICAgIHtfX0xJTkVfXywgMCwgMCwgMC4wMX0sCisgICAg
ICB7X19MSU5FX18sIDAuMDAwMTYsIDEsIDAuMDF9LAorICAgICAge19fTElORV9fLCAxLjY0NjUw
LCA4LCAwLjAxfSwKKyAgICAgIHtfX0xJTkVfXywgNS44MTIyMSwgMTYsIDAuMDF9LAorICAgICAg
e19fTElORV9fLCAxNTYuNDMxOSwgMjAwLCAwLjAxfSwKKyAgICAgIHtfX0xJTkVfXywgMTEyMS4z
Nzg0LCAxMjM0LCAwLjAxfSwKKyAgICAgIHtfX0xJTkVfXywgNTM1NTcuMTYyOSwgNTQzMjEsIDAu
MDF9LAorICAgICAge19fTElORV9fLCA2NTE2NjIuNjY0NywgNjU0MzIxLCAwLjAxfSwKKworICAg
ICAgLy8gVGVzdGluZyBsb29rdXAgYXQgOTklIGNvbmZpZGVuY2UKKyAgICAgIHtfX0xJTkVfXywg
MCwgMCwgMC45OX0sCisgICAgICB7X19MSU5FX18sIDYuNjM1LCAxLCAwLjk5fSwKKyAgICAgIHtf
X0xJTkVfXywgMjAuMDkwLCA4LCAwLjk5fSwKKyAgICAgIHtfX0xJTkVfXywgMzIuMDAwLCAxNiwg
MC45OX0sCisgICAgICB7X19MSU5FX18sIDI0OS40NDU2LCAyMDAsIDAuOTl9LAorICAgICAge19f
TElORV9fLCAxMTMxLjE1NzMsIDEwMjMsIDAuOTl9LAorICAgICAge19fTElORV9fLCAxMzUyLjUw
MzgsIDEyMzQsIDAuOTl9LAorICAgICAge19fTElORV9fLCA1NTA5MC43MzU2LCA1NDMyMSwgMC45
OX0sCisgICAgICB7X19MSU5FX18sIDY1Njk4NS4xNTE0LCA2NTQzMjEsIDAuOTl9LAorCisgICAg
ICAvLyBUZXN0aW5nIGxvb2t1cCBhdCA5OS45JSBjb25maWRlbmNlCisgICAgICB7X19MSU5FX18s
IDE2LjI2NTksIDMsIDAuOTk5fSwKKyAgICAgIHtfX0xJTkVfXywgMjIuNDU4MCwgNiwgMC45OTl9
LAorICAgICAge19fTElORV9fLCAyNjcuNTQwOSwgMjAwLCAwLjk5OX0sCisgICAgICB7X19MSU5F
X18sIDExNjguNTAzMywgMTAyMywgMC45OTl9LAorICAgICAge19fTElORV9fLCA1NTM0NS4xNzQx
LCA1NDMyMSwgMC45OTl9LAorICAgICAge19fTElORV9fLCA2NTc4NjEuNzI4NCwgNjU0MzIxLCAw
Ljk5OX0sCisgICAgICB7X19MSU5FX18sIDUxLjE3NzIsIDI0LCAwLjk5OX0sCisgICAgICB7X19M
SU5FX18sIDU5LjcwMDMsIDMwLCAwLjk5OX0sCisgICAgICB7X19MSU5FX18sIDM3LjY5ODQsIDE1
LCAwLjk5OX0sCisgICAgICB7X19MSU5FX18sIDI5LjU4OTgsIDEwLCAwLjk5OX0sCisgICAgICB7
X19MSU5FX18sIDI3Ljg3NzYsIDksIDAuOTk5fSwKKworICAgICAgLy8gVGVzdGluZyBsb29rdXAg
YXQgcmFuZG9tIGNvbmZpZGVuY2VzCisgICAgICB7X19MSU5FX18sIDAuMDAwMTU3MDg4LCAxLCAw
LjAxfSwKKyAgICAgIHtfX0xJTkVfXywgNS4zMTg1MiwgMiwgMC45M30sCisgICAgICB7X19MSU5F
X18sIDEuOTIyNTYsIDQsIDAuMjV9LAorICAgICAge19fTElORV9fLCAxMC43NzA5LCAxMywgMC4z
N30sCisgICAgICB7X19MSU5FX18sIDI2LjI1MTQsIDE3LCAwLjkzfSwKKyAgICAgIHtfX0xJTkVf
XywgMzYuNDc5OSwgMjksIDAuODR9LAorICAgICAge19fTElORV9fLCAyNS44MTgsIDMxLCAwLjI3
fSwKKyAgICAgIHtfX0xJTkVfXywgNjMuMzM0NiwgNjQsIDAuNTB9LAorICAgICAge19fTElORV9f
LCAxOTYuMjExLCAxMjgsIDAuOTk5OX0sCisgICAgICB7X19MSU5FX18sIDIxNS4yMSwgMjQzLCAw
LjEwfSwKKyAgICAgIHtfX0xJTkVfXywgMjg1LjM5MywgMjU2LCAwLjkwfSwKKyAgICAgIHtfX0xJ
TkVfXywgOTg0LjUwNCwgMTAyNCwgMC4xOTIzfSwKKyAgICAgIHtfX0xJTkVfXywgMjA0My44NSwg
MjA0OCwgMC40NzgzfSwKKyAgICAgIHtfX0xJTkVfXywgNDgwMDQuNiwgNDgyNzMsIDAuMTk0fSwK
KyAgfTsKKyAgZm9yIChjb25zdCBhdXRvJiBzcGVjIDogc3BlY3MpIHsKKyAgICBTQ09QRURfVFJB
Q0Uoc3BlYy5saW5lKTsKKyAgICAvLyBWZXJpZnkgYWxsIHZhbHVlcyBhcmUgaGF2ZSBhdCBtb3N0
IGEgMSUgcmVsYXRpdmUgZXJyb3IuCisgICAgY29uc3QgZG91YmxlIHZhbCA9IENoaVNxdWFyZVZh
bHVlKHNwZWMuZGYsIHNwZWMuY29uZmlkZW5jZSk7CisgICAgY29uc3QgZG91YmxlIGVyciA9IHN0
ZDo6bWF4KDVlLTYsIHNwZWMuY2hpX3NxdWFyZSAvIDVlMyk7ICAvLyAxIHBhcnQgaW4gNTAwMAor
ICAgIEVYUEVDVF9ORUFSKHNwZWMuY2hpX3NxdWFyZSwgdmFsLCBlcnIpIDw8IHNwZWMubGluZTsK
KyAgfQorCisgIC8vIFJlbGF4ZWQgdGVzdCBmb3IgZXh0cmVtZSB2YWx1ZXMsIGZyb20KKyAgLy8g
IGh0dHA6Ly93d3cuY2lwaGVyc2J5cml0dGVyLmNvbS9KQVZBU0NSUC9OT1JNQ0hJSy5IVE0jQ2hp
U3F1YXJlCisgIEVYUEVDVF9ORUFSKDQ5LjI2ODAsIENoaVNxdWFyZVZhbHVlKDEwMCwgMWUtNiks
IDUpOyAgLy8gMC4wMDAnMDA1IG1hcmsKKyAgRVhQRUNUX05FQVIoMTIzLjQ5OSwgQ2hpU3F1YXJl
VmFsdWUoMjAwLCAxZS02KSwgNSk7ICAvLyAwLjAwMCcwMDUgbWFyaworCisgIEVYUEVDVF9ORUFS
KDE0OS40NDksIENoaVNxdWFyZVZhbHVlKDEwMCwgMC45OTkpLCAwLjAxKTsKKyAgRVhQRUNUX05F
QVIoMTYxLjMxOCwgQ2hpU3F1YXJlVmFsdWUoMTAwLCAwLjk5OTkpLCAwLjAxKTsKKyAgRVhQRUNU
X05FQVIoMTcyLjA5OCwgQ2hpU3F1YXJlVmFsdWUoMTAwLCAwLjk5OTk5KSwgMC4wMSk7CisKKyAg
RVhQRUNUX05FQVIoMzgxLjQyNiwgQ2hpU3F1YXJlVmFsdWUoMzAwLCAwLjk5OSksIDAuMDUpOwor
ICBFWFBFQ1RfTkVBUigzOTkuNzU2LCBDaGlTcXVhcmVWYWx1ZSgzMDAsIDAuOTk5OSksIDAuMSk7
CisgIEVYUEVDVF9ORUFSKDQxNi4xMjYsIENoaVNxdWFyZVZhbHVlKDMwMCwgMC45OTk5OSksIDAu
Mik7Cit9CisKK1RFU1QoQ2hpU3F1YXJlVGVzdCwgUFZhbHVlKSB7CisgIHN0cnVjdCB7CisgICAg
aW50IGxpbmU7CisgICAgZG91YmxlIHB2YWw7CisgICAgZG91YmxlIGNoaV9zcXVhcmU7CisgICAg
aW50IGRmOworICB9IHN0YXRpYyBjb25zdCBzcGVjc1tdID0geworICAgICAge19fTElORV9fLCAx
LCAwLCAwfSwKKyAgICAgIHtfX0xJTkVfXywgMCwgMC4wMDEsIDB9LAorICAgICAge19fTElORV9f
LCAxLjAwMCwgMCwgNDUzfSwKKyAgICAgIHtfX0xJTkVfXywgMC4xMzQ0NzEsIDc5NzIuNTIsIDc4
MzR9LAorICAgICAge19fTElORV9fLCAwLjIwMzkyMiwgMjguMzIsIDIzfSwKKyAgICAgIHtfX0xJ
TkVfXywgMC43MzcxNzEsIDQ4Mjc0LCA0ODQ3Mn0sCisgICAgICB7X19MSU5FX18sIDAuNDQ0MTQ2
LCA1ODMuMTIzNCwgNTc5fSwKKyAgICAgIHtfX0xJTkVfXywgMC4yOTQ4MTQsIDEzOC4yLCAxMzB9
LAorICAgICAge19fTElORV9fLCAwLjA4MTY1MzIsIDEyLjYzLCA3fSwKKyAgICAgIHtfX0xJTkVf
XywgMCwgNjgyLjMyLCA2N30sCisgICAgICB7X19MSU5FX18sIDAuNDk0MDUsIDk5OSwgOTk5fSwK
KyAgICAgIHtfX0xJTkVfXywgMS4wMDAsIDAsIDk5OTl9LAorICAgICAge19fTElORV9fLCAwLjk5
NzQ3NywgMC4wMDAwMSwgMX0sCisgICAgICB7X19MSU5FX18sIDAsIDU4MjMuMjEsIDUwNDB9LAor
ICB9OworICBmb3IgKGNvbnN0IGF1dG8mIHNwZWMgOiBzcGVjcykgeworICAgIFNDT1BFRF9UUkFD
RShzcGVjLmxpbmUpOworICAgIGNvbnN0IGRvdWJsZSBwdmFsID0gQ2hpU3F1YXJlUFZhbHVlKHNw
ZWMuY2hpX3NxdWFyZSwgc3BlYy5kZik7CisgICAgRVhQRUNUX05FQVIoc3BlYy5wdmFsLCBwdmFs
LCAxZS0zKTsKKyAgfQorfQorCitURVNUKENoaVNxdWFyZVRlc3QsIENhbGNDaGlTcXVhcmUpIHsK
KyAgc3RydWN0IHsKKyAgICBpbnQgbGluZTsKKyAgICBzdGQ6OnZlY3RvcjxpbnQ+IGV4cGVjdGVk
OworICAgIHN0ZDo6dmVjdG9yPGludD4gYWN0dWFsOworICB9IGNvbnN0IHNwZWNzW10gPSB7Cisg
ICAgICB7X19MSU5FX18sCisgICAgICAgezU2LCAyMzQsIDc2LCAxLCA1NDYsIDEsIDg3LCAzNDUs
IDEsIDIzNH0sCisgICAgICAgezIsIDEzMiwgNCwgNDMsIDIzNCwgOCwgMzQ1LCA4LCAyMzYsIDU2
fX0sCisgICAgICB7X19MSU5FX18sCisgICAgICAgezEyMywgMzYsIDIzNCwgMzY3LCAzNDUsIDIs
IDQ1NiwgNTY3LCAyMzQsIDU2N30sCisgICAgICAgezEyMywgNTYsIDIzNDUsIDgsIDM0NSwgOCwg
MjM0NSwgMjMsIDQ4LCAyNjd9fSwKKyAgICAgIHtfX0xJTkVfXywKKyAgICAgICB7MTIzLCAyMzQs
IDM0NSwgNDU2LCA1NjcsIDY3OCwgNzg5LCA4OTAsIDk4LCA3Nn0sCisgICAgICAgezEyMywgMjM0
LCAzNDUsIDQ1NiwgNTY3LCA2NzgsIDc4OSwgODkwLCA5OCwgNzZ9fSwKKyAgICAgIHtfX0xJTkVf
XywgezMsIDY3NSwgMjMsIDg2LCAyLCA4LCAyfSwgezQ1NiwgNjc1LCAyMywgODYsIDIzLCA2NSwg
Mn19LAorICAgICAge19fTElORV9fLCB7MX0sIHsyM319LAorICB9OworICBmb3IgKGNvbnN0IGF1
dG8mIHNwZWMgOiBzcGVjcykgeworICAgIFNDT1BFRF9UUkFDRShzcGVjLmxpbmUpOworICAgIGRv
dWJsZSBjaGlfc3F1YXJlID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNwZWMuZXhwZWN0
ZWQuc2l6ZSgpOyArK2kpIHsKKyAgICAgIGNvbnN0IGRvdWJsZSBkaWZmID0gc3BlYy5hY3R1YWxb
aV0gLSBzcGVjLmV4cGVjdGVkW2ldOworICAgICAgY2hpX3NxdWFyZSArPSAoZGlmZiAqIGRpZmYp
IC8gc3BlYy5leHBlY3RlZFtpXTsKKyAgICB9CisgICAgRVhQRUNUX05FQVIoY2hpX3NxdWFyZSwK
KyAgICAgICAgICAgICAgICBDaGlTcXVhcmUoc3RkOjpiZWdpbihzcGVjLmFjdHVhbCksIHN0ZDo6
ZW5kKHNwZWMuYWN0dWFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpiZWdpbihz
cGVjLmV4cGVjdGVkKSwgc3RkOjplbmQoc3BlYy5leHBlY3RlZCkpLAorICAgICAgICAgICAgICAg
IDFlLTUpOworICB9Cit9CisKK1RFU1QoQ2hpU3F1YXJlVGVzdCwgQ2FsY0NoaVNxdWFyZUludDY0
KSB7CisgIGNvbnN0IGludDY0X3QgZGF0YVszXSA9IHs5MTAyOTM0ODcsIDkxMDI5MjQ5MSwgOTEw
MjE2NzgwfTsKKyAgLy8gJCBweXRob24gLWMgImltcG9ydCBzY2lweS5zdGF0cworICAvLyA+IHBy
aW50IHNjaXB5LnN0YXRzLmNoaXNxdWFyZShbOTEwMjkzNDg3LCA5MTAyOTI0OTEsIDkxMDIxNjc4
MF0pWzBdIgorICAvLyA0LjI1NDEwMTIzNTI0CisgIGRvdWJsZSBzdW0gPSBzdGQ6OmFjY3VtdWxh
dGUoc3RkOjpiZWdpbihkYXRhKSwgc3RkOjplbmQoZGF0YSksIGRvdWJsZXswfSk7CisgIHNpemVf
dCBuID0gc3RkOjpkaXN0YW5jZShzdGQ6OmJlZ2luKGRhdGEpLCBzdGQ6OmVuZChkYXRhKSk7Cisg
IGRvdWJsZSBhID0gQ2hpU3F1YXJlV2l0aEV4cGVjdGVkKHN0ZDo6YmVnaW4oZGF0YSksIHN0ZDo6
ZW5kKGRhdGEpLCBzdW0gLyBuKTsKKyAgRVhQRUNUX05FQVIoNC4yNTQxMDEsIGEsIDFlLTYpOwor
CisgIC8vIC4uLiBPciB3aXRoIGtub3duIHZhbHVlcy4KKyAgZG91YmxlIGIgPQorICAgICAgQ2hp
U3F1YXJlV2l0aEV4cGVjdGVkKHN0ZDo6YmVnaW4oZGF0YSksIHN0ZDo6ZW5kKGRhdGEpLCA5MTAy
Njc1ODYuMCk7CisgIEVYUEVDVF9ORUFSKDQuMjU0MTAxLCBiLCAxZS02KTsKK30KKworVEVTVChD
aGlTcXVhcmVUZXN0LCBUYWJsZURhdGEpIHsKKyAgLy8gVGVzdCBkYXRhIGZyb20KKyAgLy8gaHR0
cDovL3d3dy5pdGwubmlzdC5nb3YvZGl2ODk4L2hhbmRib29rL2VkYS9zZWN0aW9uMy9lZGEzNjc0
Lmh0bQorICAvLyAgICAwLjkwICAgICAgMC45NSAgICAgMC45NzUgICAgICAwLjk5ICAgICAwLjk5
OQorICBjb25zdCBkb3VibGUgZGF0YVsxMDBdWzVdID0geworICAgICAgLyogMSovIHsyLjcwNiwg
My44NDEsIDUuMDI0LCA2LjYzNSwgMTAuODI4fSwKKyAgICAgIC8qIDIqLyB7NC42MDUsIDUuOTkx
LCA3LjM3OCwgOS4yMTAsIDEzLjgxNn0sCisgICAgICAvKiAzKi8gezYuMjUxLCA3LjgxNSwgOS4z
NDgsIDExLjM0NSwgMTYuMjY2fSwKKyAgICAgIC8qIDQqLyB7Ny43NzksIDkuNDg4LCAxMS4xNDMs
IDEzLjI3NywgMTguNDY3fSwKKyAgICAgIC8qIDUqLyB7OS4yMzYsIDExLjA3MCwgMTIuODMzLCAx
NS4wODYsIDIwLjUxNX0sCisgICAgICAvKiA2Ki8gezEwLjY0NSwgMTIuNTkyLCAxNC40NDksIDE2
LjgxMiwgMjIuNDU4fSwKKyAgICAgIC8qIDcqLyB7MTIuMDE3LCAxNC4wNjcsIDE2LjAxMywgMTgu
NDc1LCAyNC4zMjJ9LAorICAgICAgLyogOCovIHsxMy4zNjIsIDE1LjUwNywgMTcuNTM1LCAyMC4w
OTAsIDI2LjEyNX0sCisgICAgICAvKiA5Ki8gezE0LjY4NCwgMTYuOTE5LCAxOS4wMjMsIDIxLjY2
NiwgMjcuODc3fSwKKyAgICAgIC8qMTAqLyB7MTUuOTg3LCAxOC4zMDcsIDIwLjQ4MywgMjMuMjA5
LCAyOS41ODh9LAorICAgICAgLyoxMSovIHsxNy4yNzUsIDE5LjY3NSwgMjEuOTIwLCAyNC43MjUs
IDMxLjI2NH0sCisgICAgICAvKjEyKi8gezE4LjU0OSwgMjEuMDI2LCAyMy4zMzcsIDI2LjIxNywg
MzIuOTEwfSwKKyAgICAgIC8qMTMqLyB7MTkuODEyLCAyMi4zNjIsIDI0LjczNiwgMjcuNjg4LCAz
NC41Mjh9LAorICAgICAgLyoxNCovIHsyMS4wNjQsIDIzLjY4NSwgMjYuMTE5LCAyOS4xNDEsIDM2
LjEyM30sCisgICAgICAvKjE1Ki8gezIyLjMwNywgMjQuOTk2LCAyNy40ODgsIDMwLjU3OCwgMzcu
Njk3fSwKKyAgICAgIC8qMTYqLyB7MjMuNTQyLCAyNi4yOTYsIDI4Ljg0NSwgMzIuMDAwLCAzOS4y
NTJ9LAorICAgICAgLyoxNyovIHsyNC43NjksIDI3LjU4NywgMzAuMTkxLCAzMy40MDksIDQwLjc5
MH0sCisgICAgICAvKjE4Ki8gezI1Ljk4OSwgMjguODY5LCAzMS41MjYsIDM0LjgwNSwgNDIuMzEy
fSwKKyAgICAgIC8qMTkqLyB7MjcuMjA0LCAzMC4xNDQsIDMyLjg1MiwgMzYuMTkxLCA0My44MjB9
LAorICAgICAgLyoyMCovIHsyOC40MTIsIDMxLjQxMCwgMzQuMTcwLCAzNy41NjYsIDQ1LjMxNX0s
CisgICAgICAvKjIxKi8gezI5LjYxNSwgMzIuNjcxLCAzNS40NzksIDM4LjkzMiwgNDYuNzk3fSwK
KyAgICAgIC8qMjIqLyB7MzAuODEzLCAzMy45MjQsIDM2Ljc4MSwgNDAuMjg5LCA0OC4yNjh9LAor
ICAgICAgLyoyMyovIHszMi4wMDcsIDM1LjE3MiwgMzguMDc2LCA0MS42MzgsIDQ5LjcyOH0sCisg
ICAgICAvKjI0Ki8gezMzLjE5NiwgMzYuNDE1LCAzOS4zNjQsIDQyLjk4MCwgNTEuMTc5fSwKKyAg
ICAgIC8qMjUqLyB7MzQuMzgyLCAzNy42NTIsIDQwLjY0NiwgNDQuMzE0LCA1Mi42MjB9LAorICAg
ICAgLyoyNiovIHszNS41NjMsIDM4Ljg4NSwgNDEuOTIzLCA0NS42NDIsIDU0LjA1Mn0sCisgICAg
ICAvKjI3Ki8gezM2Ljc0MSwgNDAuMTEzLCA0My4xOTUsIDQ2Ljk2MywgNTUuNDc2fSwKKyAgICAg
IC8qMjgqLyB7MzcuOTE2LCA0MS4zMzcsIDQ0LjQ2MSwgNDguMjc4LCA1Ni44OTJ9LAorICAgICAg
LyoyOSovIHszOS4wODcsIDQyLjU1NywgNDUuNzIyLCA0OS41ODgsIDU4LjMwMX0sCisgICAgICAv
KjMwKi8gezQwLjI1NiwgNDMuNzczLCA0Ni45NzksIDUwLjg5MiwgNTkuNzAzfSwKKyAgICAgIC8q
MzEqLyB7NDEuNDIyLCA0NC45ODUsIDQ4LjIzMiwgNTIuMTkxLCA2MS4wOTh9LAorICAgICAgLyoz
MiovIHs0Mi41ODUsIDQ2LjE5NCwgNDkuNDgwLCA1My40ODYsIDYyLjQ4N30sCisgICAgICAvKjMz
Ki8gezQzLjc0NSwgNDcuNDAwLCA1MC43MjUsIDU0Ljc3NiwgNjMuODcwfSwKKyAgICAgIC8qMzQq
LyB7NDQuOTAzLCA0OC42MDIsIDUxLjk2NiwgNTYuMDYxLCA2NS4yNDd9LAorICAgICAgLyozNSov
IHs0Ni4wNTksIDQ5LjgwMiwgNTMuMjAzLCA1Ny4zNDIsIDY2LjYxOX0sCisgICAgICAvKjM2Ki8g
ezQ3LjIxMiwgNTAuOTk4LCA1NC40MzcsIDU4LjYxOSwgNjcuOTg1fSwKKyAgICAgIC8qMzcqLyB7
NDguMzYzLCA1Mi4xOTIsIDU1LjY2OCwgNTkuODkzLCA2OS4zNDd9LAorICAgICAgLyozOCovIHs0
OS41MTMsIDUzLjM4NCwgNTYuODk2LCA2MS4xNjIsIDcwLjcwM30sCisgICAgICAvKjM5Ki8gezUw
LjY2MCwgNTQuNTcyLCA1OC4xMjAsIDYyLjQyOCwgNzIuMDU1fSwKKyAgICAgIC8qNDAqLyB7NTEu
ODA1LCA1NS43NTgsIDU5LjM0MiwgNjMuNjkxLCA3My40MDJ9LAorICAgICAgLyo0MSovIHs1Mi45
NDksIDU2Ljk0MiwgNjAuNTYxLCA2NC45NTAsIDc0Ljc0NX0sCisgICAgICAvKjQyKi8gezU0LjA5
MCwgNTguMTI0LCA2MS43NzcsIDY2LjIwNiwgNzYuMDg0fSwKKyAgICAgIC8qNDMqLyB7NTUuMjMw
LCA1OS4zMDQsIDYyLjk5MCwgNjcuNDU5LCA3Ny40MTl9LAorICAgICAgLyo0NCovIHs1Ni4zNjks
IDYwLjQ4MSwgNjQuMjAxLCA2OC43MTAsIDc4Ljc1MH0sCisgICAgICAvKjQ1Ki8gezU3LjUwNSwg
NjEuNjU2LCA2NS40MTAsIDY5Ljk1NywgODAuMDc3fSwKKyAgICAgIC8qNDYqLyB7NTguNjQxLCA2
Mi44MzAsIDY2LjYxNywgNzEuMjAxLCA4MS40MDB9LAorICAgICAgLyo0NyovIHs1OS43NzQsIDY0
LjAwMSwgNjcuODIxLCA3Mi40NDMsIDgyLjcyMH0sCisgICAgICAvKjQ4Ki8gezYwLjkwNywgNjUu
MTcxLCA2OS4wMjMsIDczLjY4MywgODQuMDM3fSwKKyAgICAgIC8qNDkqLyB7NjIuMDM4LCA2Ni4z
MzksIDcwLjIyMiwgNzQuOTE5LCA4NS4zNTF9LAorICAgICAgLyo1MCovIHs2My4xNjcsIDY3LjUw
NSwgNzEuNDIwLCA3Ni4xNTQsIDg2LjY2MX0sCisgICAgICAvKjUxKi8gezY0LjI5NSwgNjguNjY5
LCA3Mi42MTYsIDc3LjM4NiwgODcuOTY4fSwKKyAgICAgIC8qNTIqLyB7NjUuNDIyLCA2OS44MzIs
IDczLjgxMCwgNzguNjE2LCA4OS4yNzJ9LAorICAgICAgLyo1MyovIHs2Ni41NDgsIDcwLjk5Mywg
NzUuMDAyLCA3OS44NDMsIDkwLjU3M30sCisgICAgICAvKjU0Ki8gezY3LjY3MywgNzIuMTUzLCA3
Ni4xOTIsIDgxLjA2OSwgOTEuODcyfSwKKyAgICAgIC8qNTUqLyB7NjguNzk2LCA3My4zMTEsIDc3
LjM4MCwgODIuMjkyLCA5My4xNjh9LAorICAgICAgLyo1NiovIHs2OS45MTksIDc0LjQ2OCwgNzgu
NTY3LCA4My41MTMsIDk0LjQ2MX0sCisgICAgICAvKjU3Ki8gezcxLjA0MCwgNzUuNjI0LCA3OS43
NTIsIDg0LjczMywgOTUuNzUxfSwKKyAgICAgIC8qNTgqLyB7NzIuMTYwLCA3Ni43NzgsIDgwLjkz
NiwgODUuOTUwLCA5Ny4wMzl9LAorICAgICAgLyo1OSovIHs3My4yNzksIDc3LjkzMSwgODIuMTE3
LCA4Ny4xNjYsIDk4LjMyNH0sCisgICAgICAvKjYwKi8gezc0LjM5NywgNzkuMDgyLCA4My4yOTgs
IDg4LjM3OSwgOTkuNjA3fSwKKyAgICAgIC8qNjEqLyB7NzUuNTE0LCA4MC4yMzIsIDg0LjQ3Niwg
ODkuNTkxLCAxMDAuODg4fSwKKyAgICAgIC8qNjIqLyB7NzYuNjMwLCA4MS4zODEsIDg1LjY1NCwg
OTAuODAyLCAxMDIuMTY2fSwKKyAgICAgIC8qNjMqLyB7NzcuNzQ1LCA4Mi41MjksIDg2LjgzMCwg
OTIuMDEwLCAxMDMuNDQyfSwKKyAgICAgIC8qNjQqLyB7NzguODYwLCA4My42NzUsIDg4LjAwNCwg
OTMuMjE3LCAxMDQuNzE2fSwKKyAgICAgIC8qNjUqLyB7NzkuOTczLCA4NC44MjEsIDg5LjE3Nywg
OTQuNDIyLCAxMDUuOTg4fSwKKyAgICAgIC8qNjYqLyB7ODEuMDg1LCA4NS45NjUsIDkwLjM0OSwg
OTUuNjI2LCAxMDcuMjU4fSwKKyAgICAgIC8qNjcqLyB7ODIuMTk3LCA4Ny4xMDgsIDkxLjUxOSwg
OTYuODI4LCAxMDguNTI2fSwKKyAgICAgIC8qNjgqLyB7ODMuMzA4LCA4OC4yNTAsIDkyLjY4OSwg
OTguMDI4LCAxMDkuNzkxfSwKKyAgICAgIC8qNjkqLyB7ODQuNDE4LCA4OS4zOTEsIDkzLjg1Niwg
OTkuMjI4LCAxMTEuMDU1fSwKKyAgICAgIC8qNzAqLyB7ODUuNTI3LCA5MC41MzEsIDk1LjAyMywg
MTAwLjQyNSwgMTEyLjMxN30sCisgICAgICAvKjcxKi8gezg2LjYzNSwgOTEuNjcwLCA5Ni4xODks
IDEwMS42MjEsIDExMy41Nzd9LAorICAgICAgLyo3MiovIHs4Ny43NDMsIDkyLjgwOCwgOTcuMzUz
LCAxMDIuODE2LCAxMTQuODM1fSwKKyAgICAgIC8qNzMqLyB7ODguODUwLCA5My45NDUsIDk4LjUx
NiwgMTA0LjAxMCwgMTE2LjA5Mn0sCisgICAgICAvKjc0Ki8gezg5Ljk1NiwgOTUuMDgxLCA5OS42
NzgsIDEwNS4yMDIsIDExNy4zNDZ9LAorICAgICAgLyo3NSovIHs5MS4wNjEsIDk2LjIxNywgMTAw
LjgzOSwgMTA2LjM5MywgMTE4LjU5OX0sCisgICAgICAvKjc2Ki8gezkyLjE2NiwgOTcuMzUxLCAx
MDEuOTk5LCAxMDcuNTgzLCAxMTkuODUwfSwKKyAgICAgIC8qNzcqLyB7OTMuMjcwLCA5OC40ODQs
IDEwMy4xNTgsIDEwOC43NzEsIDEyMS4xMDB9LAorICAgICAgLyo3OCovIHs5NC4zNzQsIDk5LjYx
NywgMTA0LjMxNiwgMTA5Ljk1OCwgMTIyLjM0OH0sCisgICAgICAvKjc5Ki8gezk1LjQ3NiwgMTAw
Ljc0OSwgMTA1LjQ3MywgMTExLjE0NCwgMTIzLjU5NH0sCisgICAgICAvKjgwKi8gezk2LjU3OCwg
MTAxLjg3OSwgMTA2LjYyOSwgMTEyLjMyOSwgMTI0LjgzOX0sCisgICAgICAvKjgxKi8gezk3LjY4
MCwgMTAzLjAxMCwgMTA3Ljc4MywgMTEzLjUxMiwgMTI2LjA4M30sCisgICAgICAvKjgyKi8gezk4
Ljc4MCwgMTA0LjEzOSwgMTA4LjkzNywgMTE0LjY5NSwgMTI3LjMyNH0sCisgICAgICAvKjgzKi8g
ezk5Ljg4MCwgMTA1LjI2NywgMTEwLjA5MCwgMTE1Ljg3NiwgMTI4LjU2NX0sCisgICAgICAvKjg0
Ki8gezEwMC45ODAsIDEwNi4zOTUsIDExMS4yNDIsIDExNy4wNTcsIDEyOS44MDR9LAorICAgICAg
Lyo4NSovIHsxMDIuMDc5LCAxMDcuNTIyLCAxMTIuMzkzLCAxMTguMjM2LCAxMzEuMDQxfSwKKyAg
ICAgIC8qODYqLyB7MTAzLjE3NywgMTA4LjY0OCwgMTEzLjU0NCwgMTE5LjQxNCwgMTMyLjI3N30s
CisgICAgICAvKjg3Ki8gezEwNC4yNzUsIDEwOS43NzMsIDExNC42OTMsIDEyMC41OTEsIDEzMy41
MTJ9LAorICAgICAgLyo4OCovIHsxMDUuMzcyLCAxMTAuODk4LCAxMTUuODQxLCAxMjEuNzY3LCAx
MzQuNzQ2fSwKKyAgICAgIC8qODkqLyB7MTA2LjQ2OSwgMTEyLjAyMiwgMTE2Ljk4OSwgMTIyLjk0
MiwgMTM1Ljk3OH0sCisgICAgICAvKjkwKi8gezEwNy41NjUsIDExMy4xNDUsIDExOC4xMzYsIDEy
NC4xMTYsIDEzNy4yMDh9LAorICAgICAgLyo5MSovIHsxMDguNjYxLCAxMTQuMjY4LCAxMTkuMjgy
LCAxMjUuMjg5LCAxMzguNDM4fSwKKyAgICAgIC8qOTIqLyB7MTA5Ljc1NiwgMTE1LjM5MCwgMTIw
LjQyNywgMTI2LjQ2MiwgMTM5LjY2Nn0sCisgICAgICAvKjkzKi8gezExMC44NTAsIDExNi41MTEs
IDEyMS41NzEsIDEyNy42MzMsIDE0MC44OTN9LAorICAgICAgLyo5NCovIHsxMTEuOTQ0LCAxMTcu
NjMyLCAxMjIuNzE1LCAxMjguODAzLCAxNDIuMTE5fSwKKyAgICAgIC8qOTUqLyB7MTEzLjAzOCwg
MTE4Ljc1MiwgMTIzLjg1OCwgMTI5Ljk3MywgMTQzLjM0NH0sCisgICAgICAvKjk2Ki8gezExNC4x
MzEsIDExOS44NzEsIDEyNS4wMDAsIDEzMS4xNDEsIDE0NC41Njd9LAorICAgICAgLyo5NyovIHsx
MTUuMjIzLCAxMjAuOTkwLCAxMjYuMTQxLCAxMzIuMzA5LCAxNDUuNzg5fSwKKyAgICAgIC8qOTgq
LyB7MTE2LjMxNSwgMTIyLjEwOCwgMTI3LjI4MiwgMTMzLjQ3NiwgMTQ3LjAxMH0sCisgICAgICAv
Kjk5Ki8gezExNy40MDcsIDEyMy4yMjUsIDEyOC40MjIsIDEzNC42NDIsIDE0OC4yMzB9LAorICAg
ICAgLyoxMDAqLyB7MTE4LjQ5OCwgMTI0LjM0MiwgMTI5LjU2MSwgMTM1LjgwNywgMTQ5LjQ0OX0K
KyAgICAgIC8qKi99OworCisgIC8vICAgIDAuOTAgICAgICAwLjk1ICAgICAwLjk3NSAgICAgIDAu
OTkgICAgIDAuOTk5CisgIGZvciAoaW50IGkgPSAwOyBpIDwgQUJTTF9BUlJBWVNJWkUoZGF0YSk7
IGkrKykgeworICAgIGNvbnN0IGRvdWJsZSBFID0gMC4wMDAxOworICAgIEVYUEVDVF9ORUFSKENo
aVNxdWFyZVBWYWx1ZShkYXRhW2ldWzBdLCBpICsgMSksIDAuMTAsIEUpCisgICAgICAgIDw8IGkg
PDwgIiAiIDw8IGRhdGFbaV1bMF07CisgICAgRVhQRUNUX05FQVIoQ2hpU3F1YXJlUFZhbHVlKGRh
dGFbaV1bMV0sIGkgKyAxKSwgMC4wNSwgRSkKKyAgICAgICAgPDwgaSA8PCAiICIgPDwgZGF0YVtp
XVsxXTsKKyAgICBFWFBFQ1RfTkVBUihDaGlTcXVhcmVQVmFsdWUoZGF0YVtpXVsyXSwgaSArIDEp
LCAwLjAyNSwgRSkKKyAgICAgICAgPDwgaSA8PCAiICIgPDwgZGF0YVtpXVsyXTsKKyAgICBFWFBF
Q1RfTkVBUihDaGlTcXVhcmVQVmFsdWUoZGF0YVtpXVszXSwgaSArIDEpLCAwLjAxLCBFKQorICAg
ICAgICA8PCBpIDw8ICIgIiA8PCBkYXRhW2ldWzNdOworICAgIEVYUEVDVF9ORUFSKENoaVNxdWFy
ZVBWYWx1ZShkYXRhW2ldWzRdLCBpICsgMSksIDAuMDAxLCBFKQorICAgICAgICA8PCBpIDw8ICIg
IiA8PCBkYXRhW2ldWzRdOworCisgICAgY29uc3QgZG91YmxlIEYgPSAwLjE7CisgICAgRVhQRUNU
X05FQVIoQ2hpU3F1YXJlVmFsdWUoaSArIDEsIDAuOTApLCBkYXRhW2ldWzBdLCBGKSA8PCBpOwor
ICAgIEVYUEVDVF9ORUFSKENoaVNxdWFyZVZhbHVlKGkgKyAxLCAwLjk1KSwgZGF0YVtpXVsxXSwg
RikgPDwgaTsKKyAgICBFWFBFQ1RfTkVBUihDaGlTcXVhcmVWYWx1ZShpICsgMSwgMC45NzUpLCBk
YXRhW2ldWzJdLCBGKSA8PCBpOworICAgIEVYUEVDVF9ORUFSKENoaVNxdWFyZVZhbHVlKGkgKyAx
LCAwLjk5KSwgZGF0YVtpXVszXSwgRikgPDwgaTsKKyAgICBFWFBFQ1RfTkVBUihDaGlTcXVhcmVW
YWx1ZShpICsgMSwgMC45OTkpLCBkYXRhW2ldWzRdLCBGKSA8PCBpOworICB9Cit9CisKK1RFU1Qo
Q2hpU3F1YXJlVGVzdCwgQ2hpU3F1YXJlVHdvSXRlcmF0b3IpIHsKKyAgLy8gVGVzdCBkYXRhIGZy
b20gaHR0cDovL3d3dy5zdGF0LnlhbGUuZWR1L0NvdXJzZXMvMTk5Ny05OC8xMDEvY2hpZ2YuaHRt
CisgIC8vIE51bGwtaHlwb3RoZXNpczogVGhpcyBkYXRhIGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVk
LgorICBjb25zdCBpbnQgY291bnRzWzEwXSA9IHs2LCA2LCAxOCwgMzMsIDM4LCAzOCwgMjgsIDIx
LCA5LCAzfTsKKyAgY29uc3QgZG91YmxlIGV4cGVjdGVkWzEwXSA9IHs0LjYsICA4LjgsICAxOC40
LCAzMC4wLCAzOC4yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4LjIsIDMwLjAs
IDE4LjQsIDguOCwgIDQuNn07CisgIGRvdWJsZSBjaGlfc3F1YXJlID0gQ2hpU3F1YXJlKHN0ZDo6
YmVnaW4oY291bnRzKSwgc3RkOjplbmQoY291bnRzKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpiZWdpbihleHBlY3RlZCksIHN0ZDo6ZW5kKGV4cGVjdGVkKSk7CisgIEVY
UEVDVF9ORUFSKGNoaV9zcXVhcmUsIDIuNjksIDAuMDAxKTsKKworICAvLyBEZWdyZWVzIG9mIGZy
ZWVkb206IDEwIGJpbnMuIHR3byBlc3RpbWF0ZWQgcGFyYW1ldGVycy4gPSAxMCAtIDIgLSAxLgor
ICBjb25zdCBpbnQgZG9mID0gNzsKKyAgLy8gVGhlIGNyaXRpY2FsIHZhbHVlIG9mIDcsIDk1JSA9
PiAxNC4wNjcgKHNlZSBhYm92ZSB0ZXN0KQorICBkb3VibGUgcF92YWx1ZV8wNSA9IENoaVNxdWFy
ZVBWYWx1ZSgxNC4wNjcsIGRvZik7CisgIEVYUEVDVF9ORUFSKHBfdmFsdWVfMDUsIDAuMDUsIDAu
MDAxKTsgIC8vIDk1JS1pbGUgcC12YWx1ZQorCisgIGRvdWJsZSBwX2FjdHVhbCA9IENoaVNxdWFy
ZVBWYWx1ZShjaGlfc3F1YXJlLCBkb2YpOworICBFWFBFQ1RfR1QocF9hY3R1YWwsIDAuMDUpOyAg
Ly8gQWNjZXB0IHRoZSBudWxsIGh5cG90aGVzaXMuCit9CisKK1RFU1QoQ2hpU3F1YXJlVGVzdCwg
RGljZVJvbGxzKSB7CisgIC8vIEFzc3VtZSB3ZSBhcmUgdGVzdGluZyAxMDIgZmFpciBkaWNlIHJv
bGxzLgorICAvLyBOdWxsLWh5cG90aGVzaXM6IFRoaXMgZGF0YSBpcyBmYWlybHkgZGlzdHJpYnV0
ZWQuCisgIC8vCisgIC8vIFRoZSBkb2YgdmFsdWUgb2YgNCwgQDk1JSA9IDkuNDg4IChzZWUgYWJv
dmUgdGVzdCkKKyAgLy8gVGhlIGRvZiB2YWx1ZSBvZiA1LCBAOTUlID0gMTEuMDcwCisgIGNvbnN0
IGludCByb2xsc1s2XSA9IHsyMiwgMTEsIDE3LCAxNCwgMjAsIDE4fTsKKyAgZG91YmxlIHN1bSA9
IHN0ZDo6YWNjdW11bGF0ZShzdGQ6OmJlZ2luKHJvbGxzKSwgc3RkOjplbmQocm9sbHMpLCBkb3Vi
bGV7MH0pOworICBzaXplX3QgbiA9IHN0ZDo6ZGlzdGFuY2Uoc3RkOjpiZWdpbihyb2xscyksIHN0
ZDo6ZW5kKHJvbGxzKSk7CisKKyAgZG91YmxlIGEgPSBDaGlTcXVhcmVXaXRoRXhwZWN0ZWQoc3Rk
OjpiZWdpbihyb2xscyksIHN0ZDo6ZW5kKHJvbGxzKSwgc3VtIC8gbik7CisgIEVYUEVDVF9ORUFS
KGEsIDQuNzA1ODgsIDFlLTUpOworICBFWFBFQ1RfTFQoYSwgQ2hpU3F1YXJlVmFsdWUoNCwgMC45
NSkpOworCisgIGRvdWJsZSBwX2EgPSBDaGlTcXVhcmVQVmFsdWUoYSwgNCk7CisgIEVYUEVDVF9O
RUFSKHBfYSwgMC4zMTg4MjgsIDFlLTUpOyAgLy8gQWNjZXB0IHRoZSBudWxsIGh5cG90aGVzaXMu
CisKKyAgZG91YmxlIGIgPSBDaGlTcXVhcmVXaXRoRXhwZWN0ZWQoc3RkOjpiZWdpbihyb2xscyks
IHN0ZDo6ZW5kKHJvbGxzKSwgMTcuMCk7CisgIEVYUEVDVF9ORUFSKGIsIDQuNzA1ODgsIDFlLTUp
OworICBFWFBFQ1RfTFQoYiwgQ2hpU3F1YXJlVmFsdWUoNSwgMC45NSkpOworCisgIGRvdWJsZSBw
X2IgPSBDaGlTcXVhcmVQVmFsdWUoYiwgNSk7CisgIEVYUEVDVF9ORUFSKHBfYiwgMC40NTI4MTgw
LCAxZS01KTsgIC8vIEFjY2VwdCB0aGUgbnVsbCBoeXBvdGhlc2lzLgorfQorCit9ICAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fY2Fs
bGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2NhbGxlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMzE4ZTFmODA3MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fY2FsbGVyLmgKQEAg
LTAsMCArMSw1NiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9ESVNUUklCVVRJT05fQ0FMTEVS
X0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTl9DQUxMRVJfSF8K
KworI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5k
b21faW50ZXJuYWwgeworCisvLyBEaXN0cmlidXRpb25DYWxsZXIgcHJvdmlkZXMgYW4gb3Bwb3J0
dW5pdHkgdG8gb3ZlcmxvYWQgdGhlIGdlbmVyYWwKKy8vIG1lY2hhbmlzbSBmb3IgY2FsbGluZyBh
IGRpc3RyaWJ1dGlvbiwgYWxsb3dpbmcgZm9yIG1vY2stUk5HIGNsYXNzZXMKKy8vIHRvIGludGVy
Y2VwdCBzdWNoIGNhbGxzLgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CitzdHJ1Y3QgRGlzdHJp
YnV0aW9uQ2FsbGVyIHsKKyAgLy8gQ2FsbCB0aGUgcHJvdmlkZWQgZGlzdHJpYnV0aW9uIHR5cGUu
IFRoZSBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZAorICAvLyB0byBiZSBleHBsaWNpdGx5IHNwZWNp
ZmllZC4KKyAgLy8gRGlzdHJUIGlzIHRoZSBkaXN0cmlidXRpb24gdHlwZS4KKyAgLy8gRm9ybWF0
VCBpcyB0aGUgZm9ybWF0dGVyIHR5cGU6CisgIC8vCisgIC8vIHN0cnVjdCBGb3JtYXRUIHsKKyAg
Ly8gICB1c2luZyByZXN1bHRfdHlwZSA9IGRpc3RyaWJ1dGlvbl90OjpyZXN1bHRfdHlwZTsKKyAg
Ly8gICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0Q2FsbCgKKyAgLy8gICAgICAgY29uc3QgZGlz
dHJpYnV0aW9uX3QmIGRpc3RyLAorICAvLyAgICAgICBhYnNsOjpTcGFuPGNvbnN0IHJlc3VsdF90
eXBlPik7CisgIC8vCisgIC8vICAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEV4cGVjdGF0aW9u
KAorICAvLyAgICAgICBhYnNsOjpzdHJpbmdfdmlldyBtYXRjaF9hcmdzLAorICAvLyAgICAgICBh
YnNsOjpTcGFuPGNvbnN0IHJlc3VsdF90PiByZXN1bHRzKTsKKyAgLy8gfQorICAvLworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRGlzdHJULCB0eXBlbmFtZSBGb3JtYXRULCB0eXBlbmFtZS4uLiBBcmdz
PgorICBzdGF0aWMgdHlwZW5hbWUgRGlzdHJUOjpyZXN1bHRfdHlwZSBDYWxsKFVSQkcqIHVyYmcs
IEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgRGlzdHJUIGRpc3Qoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKKyAgICByZXR1cm4gZGlzdCgqdXJiZyk7CisgIH0KK307CisKK30gIC8vIG5hbWVz
cGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8g
QUJTTF9SQU5ET01fSU5URVJOQUxfRElTVFJJQlVUSU9OX0NBTExFUl9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
aW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uOWI2ZmZiMGZiNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
aW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGwuaApAQCAtMCwwICsxLDI2MCBAQAorLy8gQ29weXJp
Z2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5U
RVJOQUxfRElTVFJJQlVUSU9OX0lNUExfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxf
RElTVFJJQlVUSU9OX0lNUExfSF8KKworLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHNvbWUgaW1wbGVt
ZW50YXRpb24gZGV0YWlscyB3aGljaCBhcmUgdXNlZCBieSBvbmUgb3IgbW9yZQorLy8gb2YgdGhl
IGFic2wgcmFuZG9tIG51bWJlciBkaXN0cmlidXRpb25zLgorCisjaW5jbHVkZSA8Y2Zsb2F0Pgor
I2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RyaW5n
PgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2lmIChkZWZp
bmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpKSAmJiBkZWZpbmVkKF9NX0lBNjQpCisjaW5j
bHVkZSA8aW50cmluLmg+ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZV9vcmRlcikKKyNwcmFnbWEg
aW50cmluc2ljKF91bXVsMTI4KQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VTRV9VTVVMMTI4IDEK
KyNlbmRpZgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbmZpZy5oIgorI2luY2x1ZGUgImFic2wv
YmFzZS9pbnRlcm5hbC9iaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9udW1lcmljL2ludDEyOC5oIgor
I2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RtYXRoLmgiCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vaW50ZXJuYWwvdHJhaXRzLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFj
ZSByYW5kb21faW50ZXJuYWwgeworCisvLyBDcmVhdGVzIGEgZG91YmxlIGZyb20gYGJpdHNgLCB3
aXRoIHRoZSB0ZW1wbGF0ZSBmaWVsZHMgY29udHJvbGxpbmcgdGhlCisvLyBvdXRwdXQuCisvLwor
Ly8gUmFuZFU2NFRvIGlzIGJvdGggbW9yZSBlZmZpY2llbnQgYW5kIGdlbmVyYXRlcyBtb3JlIHVu
aXF1ZSB2YWx1ZXMgaW4gdGhlCisvLyByZXN1bHQgaW50ZXJ2YWwgdGhhbiBrbm93biBpbXBsZW1l
bnRhdGlvbnMgb2Ygc3RkOjpnZW5lcmF0ZV9jYW5vbmljYWwoKS4KKy8vCisvLyBUaGUgYFNpZ25l
ZGAgcGFyYW1ldGVyIGNvbnRyb2xzIHdoZXRoZXIgcG9zaXRpdmUsIG5lZ2F0aXZlLCBvciBib3Ro
IGFyZQorLy8gcmV0dXJuZWQgKHRodXMgYWZmZWN0aW5nIHRoZSBvdXRwdXQgaW50ZXJ2YWwpLgor
Ly8gICBXaGVuIFNpZ25lZCA9PSBTaWduZWRWYWx1ZVQsIHJhbmdlIGlzIFUoLTEsIDEpCisvLyAg
IFdoZW4gU2lnbmVkID09IE5lZ2F0aXZlVmFsdWVULCByYW5nZSBpcyBVKC0xLCAwKQorLy8gICBX
aGVuIFNpZ25lZCA9PSBQb3NpdGl2ZVZhbHVlVCwgcmFuZ2UgaXMgVSgwLCAxKQorLy8KKy8vIFdo
ZW4gdGhlIGBJbmNsdWRlWmVyb2AgcGFyYW1ldGVyIGlzIHRydWUsIHRoZSBmdW5jdGlvbiBtYXkg
cmV0dXJuIDAgZm9yIHNvbWUKKy8vIGlucHV0cywgb3RoZXJ3aXNlIGl0IG5ldmVyIHJldHVybnMg
MC4KKy8vCisvLyBUaGUgYEV4cG9uZW50Qmlhc2AgcGFyYW1ldGVyIGRldGVybWluZXMgdGhlIHNj
YWxlIG9mIHRoZSBvdXRwdXQgcmFuZ2UgYnkKKy8vIGFkanVzdGluZyB0aGUgZXhwb25lbnQuCisv
LworLy8gV2hlbiBhIHZhbHVlIGluIFUoMCwxKSBpcyByZXF1aXJlZCwgdXNlOgorLy8gICBSYW5k
VTY0VG9Eb3VibGU8UG9zaXRpdmVWYWx1ZVQsIHRydWUsIDA+KCk7CisvLworLy8gV2hlbiBhIHZh
bHVlIGluIFUoLTEsMSkgaXMgcmVxdWlyZWQsIHVzZToKKy8vICAgUmFuZFU2NFRvRG91YmxlPFNp
Z25lZFZhbHVlVCwgZmFsc2UsIDA+KCkgPT4gVSgtMSwgMSkKKy8vIFRoaXMgZ2VuZXJhdGVzIG1v
cmUgZGlzdGluY3QgdmFsdWVzIHRoYW4gdGhlIG1hdGhlbWF0aWNhbGx5IGVxdWl2YWxlbnQKKy8v
IGV4cHJlc3Npb24gYFUoMCwgMSkgKiAyLjAgLSAxLjBgLCBhbmQgaXMgcHJlZmVyYWJsZS4KKy8v
CisvLyBTY2FsaW5nIHRoZSByZXN1bHQgYnkgcG93ZXJzIG9mIDIgKGFuZCBhdm9pZGluZyBhIG11
bHRpcGx5KSBpcyBhbHNvIHBvc3NpYmxlOgorLy8gICBSYW5kVTY0VG9Eb3VibGU8UG9zaXRpdmVW
YWx1ZVQsIGZhbHNlLCAxPigpOyAgPT4gVSgwLCAyKQorLy8gICBSYW5kVTY0VG9Eb3VibGU8UG9z
aXRpdmVWYWx1ZVQsIGZhbHNlLCAtMT4oKTsgID0+IFUoMCwgMC41KQorLy8KKworLy8gVHJpc3Rh
dGUgdHlwZXMgY29udHJvbGxpbmcgdGhlIG91dHB1dC4KK3N0cnVjdCBQb3NpdGl2ZVZhbHVlVCB7
fTsKK3N0cnVjdCBOZWdhdGl2ZVZhbHVlVCB7fTsKK3N0cnVjdCBTaWduZWRWYWx1ZVQge307CisK
Ky8vIFJhbmRVNjRUb0RvdWJsZSBpcyB0aGUgZG91YmxlLXJlc3VsdCB2YXJpYW50IG9mIFJhbmRV
NjRUbywgZGVzY3JpYmVkIGFib3ZlLgordGVtcGxhdGUgPHR5cGVuYW1lIFNpZ25lZCwgYm9vbCBJ
bmNsdWRlWmVybywgaW50IEV4cG9uZW50QmlhcyA9IDA+CitpbmxpbmUgZG91YmxlIFJhbmRVNjRU
b0RvdWJsZSh1aW50NjRfdCBiaXRzKSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPFNp
Z25lZCwgUG9zaXRpdmVWYWx1ZVQ+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAgICAgICBzdGQ6
OmlzX3NhbWU8U2lnbmVkLCBOZWdhdGl2ZVZhbHVlVD46OnZhbHVlIHx8CisgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6aXNfc2FtZTxTaWduZWQsIFNpZ25lZFZhbHVlVD46OnZhbHVlLAorICAgICAg
ICAgICAgICAgICIiKTsKKworICAvLyBNYXliZSB1c2UgdGhlIGxlZnQtbW9zdCBiaXQgZm9yIGEg
c2lnbiBiaXQuCisgIHVpbnQ2NF90IHNpZ24gPSBzdGQ6OmlzX3NhbWU8U2lnbmVkLCBOZWdhdGl2
ZVZhbHVlVD46OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgPyAweDgwMDAwMDAwMDAwMDAw
MDB1bGwKKyAgICAgICAgICAgICAgICAgICAgICA6IDA7ICAvLyBTaWduIGJpdHMuCisKKyAgaWYg
KHN0ZDo6aXNfc2FtZTxTaWduZWQsIFNpZ25lZFZhbHVlVD46OnZhbHVlKSB7CisgICAgc2lnbiA9
IGJpdHMgJiAweDgwMDAwMDAwMDAwMDAwMDB1bGw7CisgICAgYml0cyA9IGJpdHMgJiAweDdGRkZG
RkZGRkZGRkZGRkZ1bGw7CisgIH0KKyAgaWYgKEluY2x1ZGVaZXJvKSB7CisgICAgaWYgKGJpdHMg
PT0gMHUpIHJldHVybiAwOworICB9CisKKyAgLy8gTnVtYmVyIG9mIGxlYWRpbmcgemVyb3MgaXMg
bWFwcGVkIHRvIHRoZSBleHBvbmVudDogMl4tY2x6CisgIGludCBjbHogPSBiYXNlX2ludGVybmFs
OjpDb3VudExlYWRpbmdaZXJvczY0KGJpdHMpOworICAvLyBTaGlmdCBudW1iZXIgbGVmdCB0byBl
cmFzZSBsZWFkaW5nIHplcm9zLgorICBiaXRzIDw8PSBJbmNsdWRlWmVybyA/IGNseiA6IChjbHog
JiA2Myk7CisKKyAgLy8gU2hpZnQgbnVtYmVyIHJpZ2h0IHRvIHJlbW92ZSBiaXRzIHRoYXQgb3Zl
cmZsb3cgZG91YmxlIG1hbnRpc3NhLiAgVGhlCisgIC8vIGRpcmVjdGlvbiBvZiB0aGUgc2hpZnQg
ZGVwZW5kcyBvbiBgY2x6YC4KKyAgYml0cyA+Pj0gKDY0IC0gREJMX01BTlRfRElHKTsKKworICAv
LyBDb21wdXRlIElFRUUgNzU0IGRvdWJsZSBleHBvbmVudC4KKyAgLy8gSW4gdGhlIFNpZ25lZCBj
YXNlLCBiaXRzIGlzIGEgNjMtYml0IG51bWJlciB3aXRoIGEgMCBtc2IuICBBZGp1c3QgdGhlCisg
IC8vIGV4cG9uZW50IHRvIGFjY291bnQgZm9yIHRoYXQuCisgIGNvbnN0IHVpbnQ2NF90IGV4cCA9
CisgICAgICAoc3RkOjppc19zYW1lPFNpZ25lZCwgU2lnbmVkVmFsdWVUPjo6dmFsdWUgPyAxMDIz
VSA6IDEwMjJVKSArCisgICAgICBzdGF0aWNfY2FzdDx1aW50NjRfdD4oRXhwb25lbnRCaWFzIC0g
Y2x6KTsKKyAgY29uc3RleHByIGludCBrRXhwID0gREJMX01BTlRfRElHIC0gMTsKKyAgLy8gQ29u
c3RydWN0IElFRUUgNzU0IGRvdWJsZSBmcm9tIGV4cG9uZW50IGFuZCBtYW50aXNzYS4KKyAgY29u
c3QgdWludDY0X3QgdmFsID0gc2lnbiB8IChleHAgPDwga0V4cCkgfCAoYml0cyAmICgoMVVMTCA8
PCBrRXhwKSAtIDFVKSk7CisKKyAgZG91YmxlIHJlczsKKyAgc3RhdGljX2Fzc2VydChzaXplb2Yo
cmVzKSA9PSBzaXplb2YodmFsKSwgImRvdWJsZSBpcyBub3QgNjQgYml0Iik7CisgIC8vIE1lbWNw
eSB2YWx1ZSBmcm9tICJ2YWwiIHRvICJyZXMiIHRvIGF2b2lkIGFsaWFzaW5nIHByb2JsZW1zLiAg
QXNzdW1lcyB0aGF0CisgIC8vIGVuZGlhbi1uZXNzIGlzIHNhbWUgZm9yIGRvdWJsZSBhbmQgdWlu
dDY0X3QuCisgIHN0ZDo6bWVtY3B5KCZyZXMsICZ2YWwsIHNpemVvZihyZXMpKTsKKworICByZXR1
cm4gcmVzOworfQorCisvLyBSYW5kVTY0VG9GbG9hdCBpcyB0aGUgZmxvYXQtcmVzdWx0IHZhcmlh
bnQgb2YgUmFuZFU2NFRvLCBkZXNjcmliZWQgYWJvdmUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU2ln
bmVkLCBib29sIEluY2x1ZGVaZXJvLCBpbnQgRXhwb25lbnRCaWFzID0gMD4KK2lubGluZSBmbG9h
dCBSYW5kVTY0VG9GbG9hdCh1aW50NjRfdCBiaXRzKSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lPFNpZ25lZCwgUG9zaXRpdmVWYWx1ZVQ+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmlzX3NhbWU8U2lnbmVkLCBOZWdhdGl2ZVZhbHVlVD46OnZhbHVlIHx8CisgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTxTaWduZWQsIFNpZ25lZFZhbHVlVD46OnZhbHVl
LAorICAgICAgICAgICAgICAgICIiKTsKKworICAvLyBNYXliZSB1c2UgdGhlIGxlZnQtbW9zdCBi
aXQgZm9yIGEgc2lnbiBiaXQuCisgIHVpbnQ2NF90IHNpZ24gPSBzdGQ6OmlzX3NhbWU8U2lnbmVk
LCBOZWdhdGl2ZVZhbHVlVD46OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgPyAweDgwMDAw
MDAwdWwKKyAgICAgICAgICAgICAgICAgICAgICA6IDA7ICAvLyBTaWduIGJpdHMuCisKKyAgaWYg
KHN0ZDo6aXNfc2FtZTxTaWduZWQsIFNpZ25lZFZhbHVlVD46OnZhbHVlKSB7CisgICAgdWludDY0
X3QgYSA9IGJpdHMgJiAweDgwMDAwMDAwMDAwMDAwMDB1bGw7CisgICAgc2lnbiA9IHN0YXRpY19j
YXN0PHVpbnQzMl90PihhID4+IDMyKTsKKyAgICBiaXRzID0gYml0cyAmIDB4N0ZGRkZGRkZGRkZG
RkZGRnVsbDsKKyAgfQorICBpZiAoSW5jbHVkZVplcm8pIHsKKyAgICBpZiAoYml0cyA9PSAwdSkg
cmV0dXJuIDA7CisgIH0KKworICAvLyBOdW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBpcyBtYXBwZWQg
dG8gdGhlIGV4cG9uZW50OiAyXi1jbHoKKyAgaW50IGNseiA9IGJhc2VfaW50ZXJuYWw6OkNvdW50
TGVhZGluZ1plcm9zNjQoYml0cyk7CisgIC8vIFNoaWZ0IG51bWJlciBsZWZ0IHRvIGVyYXNlIGxl
YWRpbmcgemVyb3MuCisgIGJpdHMgPDw9IEluY2x1ZGVaZXJvID8gY2x6IDogKGNseiAmIDYzKTsK
KyAgLy8gU2hpZnQgbnVtYmVyIHJpZ2h0IHRvIHJlbW92ZSBiaXRzIHRoYXQgb3ZlcmZsb3cgZG91
YmxlIG1hbnRpc3NhLiAgVGhlCisgIC8vIGRpcmVjdGlvbiBvZiB0aGUgc2hpZnQgZGVwZW5kcyBv
biBgY2x6YC4KKyAgYml0cyA+Pj0gKDY0IC0gRkxUX01BTlRfRElHKTsKKworICAvLyBDb25zdHJ1
Y3QgSUVFRSA3NTQgZmxvYXQgZXhwb25lbnQuCisgIC8vIEluIHRoZSBTaWduZWQgY2FzZSwgYml0
cyBpcyBhIDYzLWJpdCBudW1iZXIgd2l0aCBhIDAgbXNiLiAgQWRqdXN0IHRoZQorICAvLyBleHBv
bmVudCB0byBhY2NvdW50IGZvciB0aGF0LgorICBjb25zdCB1aW50MzJfdCBleHAgPQorICAgICAg
KHN0ZDo6aXNfc2FtZTxTaWduZWQsIFNpZ25lZFZhbHVlVD46OnZhbHVlID8gMTI3VSA6IDEyNlUp
ICsKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihFeHBvbmVudEJpYXMgLSBjbHopOworICBj
b25zdGV4cHIgaW50IGtFeHAgPSBGTFRfTUFOVF9ESUcgLSAxOworICBjb25zdCB1aW50MzJfdCB2
YWwgPSBzaWduIHwgKGV4cCA8PCBrRXhwKSB8IChiaXRzICYgKCgxVSA8PCBrRXhwKSAtIDFVKSk7
CisKKyAgZmxvYXQgcmVzOworICBzdGF0aWNfYXNzZXJ0KHNpemVvZihyZXMpID09IHNpemVvZih2
YWwpLCAiZmxvYXQgaXMgbm90IDMyIGJpdCIpOworICAvLyBBc3N1bWVzIHRoYXQgZW5kaWFuLW5l
c3MgaXMgc2FtZSBmb3IgZmxvYXQgYW5kIHVpbnQzMl90LgorICBzdGQ6Om1lbWNweSgmcmVzLCAm
dmFsLCBzaXplb2YocmVzKSk7CisKKyAgcmV0dXJuIHJlczsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFJlc3VsdD4KK3N0cnVjdCBSYW5kVTY0VG9SZWFsIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFNpZ25lZCwgYm9vbCBJbmNsdWRlWmVybywgaW50IEV4cG9uZW50QmlhcyA9IDA+CisgIHN0YXRp
YyBpbmxpbmUgUmVzdWx0IFZhbHVlKHVpbnQ2NF90IGJpdHMpIHsKKyAgICByZXR1cm4gUmFuZFU2
NFRvRG91YmxlPFNpZ25lZCwgSW5jbHVkZVplcm8sIEV4cG9uZW50Qmlhcz4oYml0cyk7CisgIH0K
K307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgUmFuZFU2NFRvUmVhbDxmbG9hdD4geworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgU2lnbmVkLCBib29sIEluY2x1ZGVaZXJvLCBpbnQgRXhwb25lbnRCaWFz
ID0gMD4KKyAgc3RhdGljIGlubGluZSBmbG9hdCBWYWx1ZSh1aW50NjRfdCBiaXRzKSB7CisgICAg
cmV0dXJuIFJhbmRVNjRUb0Zsb2F0PFNpZ25lZCwgSW5jbHVkZVplcm8sIEV4cG9uZW50Qmlhcz4o
Yml0cyk7CisgIH0KK307CisKK2lubGluZSB1aW50MTI4IE11bHRpcGx5VTY0VG9VMTI4KHVpbnQ2
NF90IGEsIHVpbnQ2NF90IGIpIHsKKyNpZiBkZWZpbmVkKEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5U
MTI4KQorICByZXR1cm4gdWludDEyOChzdGF0aWNfY2FzdDxfX3VpbnQxMjhfdD4oYSkgKiBiKTsK
KyNlbGlmIGRlZmluZWQoQUJTTF9JTlRFUk5BTF9VU0VfVU1VTDEyOCkKKyAgLy8gdWludDY0X3Qg
KiB1aW50NjRfdCA9PiB1aW50MTI4IG11bHRpcGx5IHVzaW5nIGltdWwgaW50cmluc2ljIG9uIE1T
VkMuCisgIHVpbnQ2NF90IGhpZ2ggPSAwOworICBjb25zdCB1aW50NjRfdCBsb3cgPSBfdW11bDEy
OChhLCBiLCAmaGlnaCk7CisgIHJldHVybiBhYnNsOjpNYWtlVWludDEyOChoaWdoLCBsb3cpOwor
I2Vsc2UKKyAgLy8gdWludDEyOChhKSAqIHVpbnQxMjgoYikgaW4gZW11bGF0ZWQgbW9kZSBjb21w
dXRlcyBhIGZ1bGwgMTI4LWJpdCB4IDEyOC1iaXQKKyAgLy8gbXVsdGlwbHkuICBIb3dldmVyIHRo
ZXJlIGFyZSBtYW55IGNhc2VzIHdoZXJlIHRoYXQgaXMgbm90IG5lY2Vzc2FyeSwgYW5kIGl0Cisg
IC8vIGlzIG9ubHkgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgYSA2NC1iaXQgeCA2NC1iaXQgPSAxMjgt
Yml0IG11bHRpcGx5LiAgVGhpcyBpcworICAvLyBmb3IgdGhvc2UgY2FzZXMuCisgIGNvbnN0IHVp
bnQ2NF90IGEwMCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihhKTsKKyAgY29uc3QgdWludDY0X3Qg
YTMyID0gYSA+PiAzMjsKKyAgY29uc3QgdWludDY0X3QgYjAwID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGIpOworICBjb25zdCB1aW50NjRfdCBiMzIgPSBiID4+IDMyOworCisgIGNvbnN0IHVpbnQ2
NF90IGMwMCA9IGEwMCAqIGIwMDsKKyAgY29uc3QgdWludDY0X3QgYzMyYSA9IGEwMCAqIGIzMjsK
KyAgY29uc3QgdWludDY0X3QgYzMyYiA9IGEzMiAqIGIwMDsKKyAgY29uc3QgdWludDY0X3QgYzY0
ID0gYTMyICogYjMyOworCisgIGNvbnN0IHVpbnQzMl90IGNhcnJ5ID0KKyAgICAgIHN0YXRpY19j
YXN0PHVpbnQzMl90PigoKGMwMCA+PiAzMikgKyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYzMyYSkg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYzMy
YikpID4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIpOworCisgIHJldHVybiBhYnNs
OjpNYWtlVWludDEyOChjNjQgKyAoYzMyYSA+PiAzMikgKyAoYzMyYiA+PiAzMikgKyBjYXJyeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwMCArIChjMzJhIDw8IDMyKSArIChjMzJiIDw8
IDMyKSk7CisjZW5kaWYKK30KKworLy8gd2lkZV9tdWx0aXBseTxUPiBtdWx0aXBsaWVzIHR3byBO
LWJpdCB2YWx1ZXMgdG8gYSAyTi1iaXQgcmVzdWx0LgordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRU
eXBlPgorc3RydWN0IHdpZGVfbXVsdGlwbHkgeworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBr
TiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VUludFR5cGU+OjpkaWdpdHM7CisgIHVzaW5nIGlucHV0
X3R5cGUgPSBVSW50VHlwZTsKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSByYW5kb21f
aW50ZXJuYWw6OnVuc2lnbmVkX2JpdHM8a04gKiAyPjo6dHlwZTsKKworICBzdGF0aWMgcmVzdWx0
X3R5cGUgbXVsdGlwbHkoaW5wdXRfdHlwZSBhLCBpbnB1dF90eXBlIGIpIHsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KGEpICogYjsKKyAgfQorCisgIHN0YXRpYyBpbnB1dF90
eXBlIGhpKHJlc3VsdF90eXBlIHIpIHsgcmV0dXJuIHIgPj4ga047IH0KKyAgc3RhdGljIGlucHV0
X3R5cGUgbG8ocmVzdWx0X3R5cGUgcikgeyByZXR1cm4gcjsgfQorCisgIHN0YXRpY19hc3NlcnQo
c3RkOjppc191bnNpZ25lZDxVSW50VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJDbGFz
cy10ZW1wbGF0ZSB3aWRlX211bHRpcGx5PD4gYXJndW1lbnQgbXVzdCBiZSB1bnNpZ25lZC4iKTsK
K307CisKKyNpZm5kZWYgQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgKK3RlbXBsYXRlIDw+Citz
dHJ1Y3Qgd2lkZV9tdWx0aXBseTx1aW50NjRfdD4geworICB1c2luZyBpbnB1dF90eXBlID0gdWlu
dDY0X3Q7CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdWludDEyODsKKworICBzdGF0aWMgcmVzdWx0
X3R5cGUgbXVsdGlwbHkodWludDY0X3QgYSwgdWludDY0X3QgYikgeworICAgIHJldHVybiBNdWx0
aXBseVU2NFRvVTEyOChhLCBiKTsKKyAgfQorCisgIHN0YXRpYyB1aW50NjRfdCBoaShyZXN1bHRf
dHlwZSByKSB7IHJldHVybiBVaW50MTI4SGlnaDY0KHIpOyB9CisgIHN0YXRpYyB1aW50NjRfdCBs
byhyZXN1bHRfdHlwZSByKSB7IHJldHVybiBVaW50MTI4TG93NjQocik7IH0KK307CisjZW5kaWYK
KworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
KworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9ESVNUUklCVVRJT05fSU1QTF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGxfdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDllN2EzMThjY2MKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGxfdGVzdC5j
YwpAQCAtMCwwICsxLDUwNiBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25faW1wbC5o
IgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJu
YWwvYml0cy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvZmxhZy5oIgorI2luY2x1ZGUgImFic2wv
bnVtZXJpYy9pbnQxMjguaCIKKworQUJTTF9GTEFHKGludDY0X3QsIGFic2xfcmFuZG9tX3Rlc3Rf
dHJpYWxzLCA1MDAwMCwKKyAgICAgICAgICAiTnVtYmVyIG9mIHRyaWFscyBmb3IgdGhlIHByb2Jh
YmlsaXR5IHRlc3RzLiIpOworCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok5lZ2F0aXZl
VmFsdWVUOwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpQb3NpdGl2ZVZhbHVlVDsKK3Vz
aW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmFuZFU2NFRvRG91YmxlOwordXNpbmcgYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpSYW5kVTY0VG9GbG9hdDsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRl
cm5hbDo6U2lnbmVkVmFsdWVUOworCituYW1lc3BhY2UgeworCitURVNUKERpc3RyaWJ1dGlvbklt
cGxUZXN0LCBVNjRUb0Zsb2F0X1Bvc2l0aXZlX05vWmVyb19UZXN0KSB7CisgIGF1dG8gVG9GbG9h
dCA9IFtdKHVpbnQ2NF90IGEpIHsKKyAgICByZXR1cm4gUmFuZFU2NFRvRmxvYXQ8UG9zaXRpdmVW
YWx1ZVQsIGZhbHNlPihhKTsKKyAgfTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHgwMDAwMDAwMDAw
MDAwMDAwKSwgMi43MTA1MDU0MzFlLTIwZik7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4MDAwMDAw
MDAwMDAwMDAwMSksIDUuNDIxMDEwODYyZS0yMGYpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgw
MDAwMDAwMDAwMDAwMDApLCAwLjUpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweEZGRkZGRkZGRkZG
RkZGRkYpLCAwLjk5OTk5OTk0MDRmKTsKK30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwg
VTY0VG9GbG9hdF9Qb3NpdGl2ZV9aZXJvX1Rlc3QpIHsKKyAgYXV0byBUb0Zsb2F0ID0gW10odWlu
dDY0X3QgYSkgeworICAgIHJldHVybiBSYW5kVTY0VG9GbG9hdDxQb3NpdGl2ZVZhbHVlVCwgdHJ1
ZT4oYSk7CisgIH07CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMCksIDAu
MCk7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMSksIDUuNDIxMDEwODYy
ZS0yMGYpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgwMDAwMDAwMDAwMDAwMDApLCAwLjUpOwor
ICBFWFBFQ1RfRVEoVG9GbG9hdCgweEZGRkZGRkZGRkZGRkZGRkYpLCAwLjk5OTk5OTk0MDRmKTsK
K30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwgVTY0VG9GbG9hdF9OZWdhdGl2ZV9Ob1pl
cm9fVGVzdCkgeworICBhdXRvIFRvRmxvYXQgPSBbXSh1aW50NjRfdCBhKSB7CisgICAgcmV0dXJu
IFJhbmRVNjRUb0Zsb2F0PE5lZ2F0aXZlVmFsdWVULCBmYWxzZT4oYSk7CisgIH07CisgIEVYUEVD
VF9FUShUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMCksIC0yLjcxMDUwNTQzMWUtMjBmKTsKKyAg
RVhQRUNUX0VRKFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAxKSwgLTUuNDIxMDEwODYyZS0yMGYp
OworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgwMDAwMDAwMDAwMDAwMDApLCAtMC41KTsKKyAgRVhQ
RUNUX0VRKFRvRmxvYXQoMHhGRkZGRkZGRkZGRkZGRkZGKSwgLTAuOTk5OTk5OTQwNGYpOworfQor
CitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRUb0Zsb2F0X1NpZ25lZF9Ob1plcm9fVGVz
dCkgeworICBhdXRvIFRvRmxvYXQgPSBbXSh1aW50NjRfdCBhKSB7CisgICAgcmV0dXJuIFJhbmRV
NjRUb0Zsb2F0PFNpZ25lZFZhbHVlVCwgZmFsc2U+KGEpOworICB9OworICBFWFBFQ1RfRVEoVG9G
bG9hdCgweDAwMDAwMDAwMDAwMDAwMDApLCA1LjQyMTAxMDg2MmUtMjBmKTsKKyAgRVhQRUNUX0VR
KFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAxKSwgMS4wODQyMDIxNzJlLTE5Zik7CisgIEVYUEVD
VF9FUShUb0Zsb2F0KDB4N0ZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5OTQwNGYpOworICBFWFBF
Q1RfRVEoVG9GbG9hdCgweDgwMDAwMDAwMDAwMDAwMDApLCAtNS40MjEwMTA4NjJlLTIwZik7Cisg
IEVYUEVDVF9FUShUb0Zsb2F0KDB4ODAwMDAwMDAwMDAwMDAwMSksIC0xLjA4NDIwMjE3MmUtMTlm
KTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHhGRkZGRkZGRkZGRkZGRkZGKSwgLTAuOTk5OTk5OTQw
NGYpOworfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRUb0Zsb2F0X1NpZ25lZF9a
ZXJvX1Rlc3QpIHsKKyAgYXV0byBUb0Zsb2F0ID0gW10odWludDY0X3QgYSkgeworICAgIHJldHVy
biBSYW5kVTY0VG9GbG9hdDxTaWduZWRWYWx1ZVQsIHRydWU+KGEpOworICB9OworICBFWFBFQ1Rf
RVEoVG9GbG9hdCgweDAwMDAwMDAwMDAwMDAwMDApLCAwKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQo
MHgwMDAwMDAwMDAwMDAwMDAxKSwgMS4wODQyMDIxNzJlLTE5Zik7CisgIEVYUEVDVF9FUShUb0Zs
b2F0KDB4N0ZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5OTQwNGYpOworICBFWFBFQ1RfRVEoVG9G
bG9hdCgweDgwMDAwMDAwMDAwMDAwMDApLCAwKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHg4MDAw
MDAwMDAwMDAwMDAxKSwgLTEuMDg0MjAyMTcyZS0xOWYpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgw
eEZGRkZGRkZGRkZGRkZGRkYpLCAtMC45OTk5OTk5NDA0Zik7Cit9CisKK1RFU1QoRGlzdHJpYnV0
aW9uSW1wbFRlc3QsIFU2NFRvRmxvYXRfU2lnbmVkX0JpYXNfVGVzdCkgeworICBhdXRvIFRvRmxv
YXQgPSBbXSh1aW50NjRfdCBhKSB7CisgICAgcmV0dXJuIFJhbmRVNjRUb0Zsb2F0PFNpZ25lZFZh
bHVlVCwgdHJ1ZSwgMT4oYSk7CisgIH07CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4MDAwMDAwMDAw
MDAwMDAwMCksIDApOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDAwMDAwMDAwMDAwMDAwMDEpLCAy
ICogMS4wODQyMDIxNzJlLTE5Zik7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4N0ZGRkZGRkZGRkZG
RkZGRiksIDIgKiAwLjk5OTk5OTk0MDRmKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHg4MDAwMDAw
MDAwMDAwMDAwKSwgMCk7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4ODAwMDAwMDAwMDAwMDAwMSks
IDIgKiAtMS4wODQyMDIxNzJlLTE5Zik7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4RkZGRkZGRkZG
RkZGRkZGRiksIDIgKiAtMC45OTk5OTk5NDA0Zik7Cit9CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1w
bFRlc3QsIFU2NFRvRmxvYXRUZXN0KSB7CisgIGF1dG8gVG9GbG9hdCA9IFtdKHVpbnQ2NF90IGEp
IC0+IGZsb2F0IHsKKyAgICByZXR1cm4gUmFuZFU2NFRvRmxvYXQ8UG9zaXRpdmVWYWx1ZVQsIHRy
dWU+KGEpOworICB9OworCisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMCks
IDAuMGYpOworCisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4ODAwMDAwMDAwMDAwMDAwMCksIDAuNWYp
OworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgwMDAwMDAwMDAwMDAwMDEpLCAwLjVmKTsKKyAgRVhQ
RUNUX0VRKFRvRmxvYXQoMHg4MDAwMDBGRkZGRkZGRkZGKSwgMC41Zik7CisgIEVYUEVDVF9FUShU
b0Zsb2F0KDB4RkZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5OTQwNGYpOworCisgIEVYUEVDVF9H
VChUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMSksIDAuMGYpOworCisgIEVYUEVDVF9ORShUb0Zs
b2F0KDB4N0ZGRkZGMDAwMDAwMDAwMCksIFRvRmxvYXQoMHg3RkZGRkVGRkZGRkZGRkZGKSk7CisK
KyAgRVhQRUNUX0xUKFRvRmxvYXQoMHhGRkZGRkZGRkZGRkZGRkZGKSwgMS4wZik7CisgIGludDMy
X3QgdHdvX3RvXzI0ID0gMSA8PCAyNDsKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludDMyX3Q+
KFRvRmxvYXQoMHhGRkZGRkZGRkZGRkZGRkZGKSAqIHR3b190b18yNCksCisgICAgICAgICAgICB0
d29fdG9fMjQgLSAxKTsKKyAgRVhQRUNUX05FKHN0YXRpY19jYXN0PGludDMyX3Q+KFRvRmxvYXQo
MHhGRkZGRkZGRkZGRkZGRkZGKSAqIHR3b190b18yNCAqIDIpLAorICAgICAgICAgICAgdHdvX3Rv
XzI0ICogMiAtIDEpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweEZGRkZGRkZGRkZGRkZGRkYpLCBU
b0Zsb2F0KDB4RkZGRkZGMDAwMDAwMDAwMCkpOworICBFWFBFQ1RfTkUoVG9GbG9hdCgweEZGRkZG
RkZGRkZGRkZGRkYpLCBUb0Zsb2F0KDB4RkZGRkZFRkZGRkZGRkZGRikpOworICBFWFBFQ1RfRVEo
VG9GbG9hdCgweDdGRkZGRkZGRkZGRkZGRkYpLCBUb0Zsb2F0KDB4N0ZGRkZGODAwMDAwMDAwMCkp
OworICBFWFBFQ1RfTkUoVG9GbG9hdCgweDdGRkZGRkZGRkZGRkZGRkYpLCBUb0Zsb2F0KDB4N0ZG
RkZGN0ZGRkZGRkZGRikpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDNGRkZGRkZGRkZGRkZGRkYp
LCBUb0Zsb2F0KDB4M0ZGRkZGQzAwMDAwMDAwMCkpOworICBFWFBFQ1RfTkUoVG9GbG9hdCgweDNG
RkZGRkZGRkZGRkZGRkYpLCBUb0Zsb2F0KDB4M0ZGRkZGQkZGRkZGRkZGRikpOworCisgIC8vIEZv
ciB2YWx1ZXMgd2hlcmUgZXZlcnkgYml0IGNvdW50cywgdGhlIHZhbHVlcyBzY2FsZSBhcyBtdWx0
aXBsZXMgb2YgdGhlCisgIC8vIGlucHV0LgorICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgKytp
KSB7CisgICAgRVhQRUNUX0VRKGkgKiBUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMSksIFRvRmxv
YXQoaSkpOworICB9CisKKyAgLy8gRm9yIGVhY2ggaTogdmFsdWUgZ2VuZXJhdGVkIGZyb20gKDEg
PDwgaSkuCisgIGZsb2F0IGV4cF92YWx1ZXNbNjRdOworICBleHBfdmFsdWVzWzYzXSA9IDAuNWY7
CisgIGZvciAoaW50IGkgPSA2MjsgaSA+PSAwOyAtLWkpIGV4cF92YWx1ZXNbaV0gPSAwLjVmICog
ZXhwX3ZhbHVlc1tpICsgMV07CisgIGNvbnN0ZXhwciB1aW50NjRfdCBvbmUgPSAxOworICBmb3Ig
KGludCBpID0gMDsgaSA8IDY0OyArK2kpIHsKKyAgICBFWFBFQ1RfRVEoVG9GbG9hdChvbmUgPDwg
aSksIGV4cF92YWx1ZXNbaV0pOworICAgIGZvciAoaW50IGogPSAxOyBqIDwgRkxUX01BTlRfRElH
ICYmIGkgLSBqID49IDA7ICsraikgeworICAgICAgRVhQRUNUX05FKGV4cF92YWx1ZXNbaV0gKyBl
eHBfdmFsdWVzW2kgLSBqXSwgZXhwX3ZhbHVlc1tpXSk7CisgICAgICBFWFBFQ1RfRVEoVG9GbG9h
dCgob25lIDw8IGkpICsgKG9uZSA8PCAoaSAtIGopKSksCisgICAgICAgICAgICAgICAgZXhwX3Zh
bHVlc1tpXSArIGV4cF92YWx1ZXNbaSAtIGpdKTsKKyAgICB9CisgICAgZm9yIChpbnQgaiA9IEZM
VF9NQU5UX0RJRzsgaSAtIGogPj0gMDsgKytqKSB7CisgICAgICBFWFBFQ1RfRVEoZXhwX3ZhbHVl
c1tpXSArIGV4cF92YWx1ZXNbaSAtIGpdLCBleHBfdmFsdWVzW2ldKTsKKyAgICAgIEVYUEVDVF9F
UShUb0Zsb2F0KChvbmUgPDwgaSkgKyAob25lIDw8IChpIC0gaikpKSwgZXhwX3ZhbHVlc1tpXSk7
CisgICAgfQorICB9Cit9CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1wbFRlc3QsIFU2NFRvRG91Ymxl
X1Bvc2l0aXZlX05vWmVyb19UZXN0KSB7CisgIGF1dG8gVG9Eb3VibGUgPSBbXSh1aW50NjRfdCBh
KSB7CisgICAgcmV0dXJuIFJhbmRVNjRUb0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgZmFsc2U+KGEp
OworICB9OworCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDApLCAyLjcx
MDUwNTQzMTIxMzc2MTA4NWUtMjApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAw
MDAwMDAxKSwgNS40MjEwMTA4NjI0Mjc1MjIxNzAwNGUtMjApOworICBFWFBFQ1RfRVEoVG9Eb3Vi
bGUoMHgwMDAwMDAwMDAwMDAwMDAyKSwgMS4wODQyMDIxNzI0ODU1MDQ0MzRlLTE5KTsKKyAgRVhQ
RUNUX0VRKFRvRG91YmxlKDB4ODAwMDAwMDAwMDAwMDAwMCksIDAuNSk7CisgIEVYUEVDVF9FUShU
b0RvdWJsZSgweEZGRkZGRkZGRkZGRkZGRkYpLCAwLjk5OTk5OTk5OTk5OTk5OTg4ODk3OCk7Cit9
CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1wbFRlc3QsIFU2NFRvRG91YmxlX1Bvc2l0aXZlX1plcm9f
VGVzdCkgeworICBhdXRvIFRvRG91YmxlID0gW10odWludDY0X3QgYSkgeworICAgIHJldHVybiBS
YW5kVTY0VG9Eb3VibGU8UG9zaXRpdmVWYWx1ZVQsIHRydWU+KGEpOworICB9OworCisgIEVYUEVD
VF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDApLCAwLjApOworICBFWFBFQ1RfRVEoVG9E
b3VibGUoMHgwMDAwMDAwMDAwMDAwMDAxKSwgNS40MjEwMTA4NjI0Mjc1MjIxNzAwNGUtMjApOwor
ICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAwKSwgMC41KTsKKyAgRVhQRUNU
X0VRKFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5OTk5OTk5OTk5ODg4OTc4
KTsKK30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwgVTY0VG9Eb3VibGVfTmVnYXRpdmVf
Tm9aZXJvX1Rlc3QpIHsKKyAgYXV0byBUb0RvdWJsZSA9IFtdKHVpbnQ2NF90IGEpIHsKKyAgICBy
ZXR1cm4gUmFuZFU2NFRvRG91YmxlPE5lZ2F0aXZlVmFsdWVULCBmYWxzZT4oYSk7CisgIH07CisK
KyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMCksIC0yLjcxMDUwNTQzMTIx
Mzc2MTA4NWUtMjApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAxKSwg
LTUuNDIxMDEwODYyNDI3NTIyMTcwMDRlLTIwKTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MDAw
MDAwMDAwMDAwMDAwMiksIC0xLjA4NDIwMjE3MjQ4NTUwNDQzNGUtMTkpOworICBFWFBFQ1RfRVEo
VG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAwKSwgLTAuNSk7CisgIEVYUEVDVF9FUShUb0RvdWJs
ZSgweEZGRkZGRkZGRkZGRkZGRkYpLCAtMC45OTk5OTk5OTk5OTk5OTk4ODg5NzgpOworfQorCitU
RVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRUb0RvdWJsZV9TaWduZWRfTm9aZXJvX1Rlc3Qp
IHsKKyAgYXV0byBUb0RvdWJsZSA9IFtdKHVpbnQ2NF90IGEpIHsKKyAgICByZXR1cm4gUmFuZFU2
NFRvRG91YmxlPFNpZ25lZFZhbHVlVCwgZmFsc2U+KGEpOworICB9OworCisgIEVYUEVDVF9FUShU
b0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDApLCA1LjQyMTAxMDg2MjQyNzUyMjE3MDA0ZS0yMCk7
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDEpLCAxLjA4NDIwMjE3MjQ4
NTUwNDQzNGUtMTkpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg3RkZGRkZGRkZGRkZGRkZGKSwg
MC45OTk5OTk5OTk5OTk5OTk4ODg5NzgpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAw
MDAwMDAwMDAwKSwgLTUuNDIxMDEwODYyNDI3NTIyMTcwMDRlLTIwKTsKKyAgRVhQRUNUX0VRKFRv
RG91YmxlKDB4ODAwMDAwMDAwMDAwMDAwMSksIC0xLjA4NDIwMjE3MjQ4NTUwNDQzNGUtMTkpOwor
ICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZGKSwgLTAuOTk5OTk5OTk5OTk5
OTk5ODg4OTc4KTsKK30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwgVTY0VG9Eb3VibGVf
U2lnbmVkX1plcm9fVGVzdCkgeworICBhdXRvIFRvRG91YmxlID0gW10odWludDY0X3QgYSkgewor
ICAgIHJldHVybiBSYW5kVTY0VG9Eb3VibGU8U2lnbmVkVmFsdWVULCB0cnVlPihhKTsKKyAgfTsK
KyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMCksIDApOworICBFWFBFQ1Rf
RVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAxKSwgMS4wODQyMDIxNzI0ODU1MDQ0MzRlLTE5
KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5OTk5
OTk5OTk5ODg4OTc4KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4ODAwMDAwMDAwMDAwMDAwMCks
IDApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAxKSwgLTEuMDg0MjAy
MTcyNDg1NTA0NDM0ZS0xOSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZG
RkYpLCAtMC45OTk5OTk5OTk5OTk5OTk4ODg5NzgpOworfQorCitURVNUKERpc3RyaWJ1dGlvbklt
cGxUZXN0LCBVNjRUb0RvdWJsZV9TaWduZWRfQmlhc19UZXN0KSB7CisgIGF1dG8gVG9Eb3VibGUg
PSBbXSh1aW50NjRfdCBhKSB7CisgICAgcmV0dXJuIFJhbmRVNjRUb0RvdWJsZTxTaWduZWRWYWx1
ZVQsIHRydWUsIC0xPihhKTsKKyAgfTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAw
MDAwMDAwMCksIDApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAxKSwg
MS4wODQyMDIxNzI0ODU1MDQ0MzRlLTE5IC8gMik7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDdG
RkZGRkZGRkZGRkZGRkYpLCAwLjk5OTk5OTk5OTk5OTk5OTg4ODk3OCAvIDIpOworICBFWFBFQ1Rf
RVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAwKSwgMCk7CisgIEVYUEVDVF9FUShUb0RvdWJs
ZSgweDgwMDAwMDAwMDAwMDAwMDEpLCAtMS4wODQyMDIxNzI0ODU1MDQ0MzRlLTE5IC8gMik7Cisg
IEVYUEVDVF9FUShUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZGRkYpLCAtMC45OTk5OTk5OTk5OTk5
OTk4ODg5NzggLyAyKTsKK30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwgVTY0VG9Eb3Vi
bGVUZXN0KSB7CisgIGF1dG8gVG9Eb3VibGUgPSBbXSh1aW50NjRfdCBhKSB7CisgICAgcmV0dXJu
IFJhbmRVNjRUb0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgdHJ1ZT4oYSk7CisgIH07CisKKyAgRVhQ
RUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMCksIDAuMCk7CisgIEVYUEVDVF9FUShU
b0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDApLCAwLjApOworCisgIEVYUEVDVF9FUShUb0RvdWJs
ZSgweDAwMDAwMDAwMDAwMDAwMDEpLCA1LjQyMTAxMDg2MjQyNzUyMjE3MDA0ZS0yMCk7CisgIEVY
UEVDVF9FUShUb0RvdWJsZSgweDdmZmZmZmZmZmZmZmZmZWYpLCAwLjQ5OTk5OTk5OTk5OTk5OTk0
NDQ4OSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDgwMDAwMDAwMDAwMDAwMDApLCAwLjUpOwor
CisgIC8vIEZvciB2YWx1ZXMgPiAwLjUsIFJhbmRVNjRUb0RvdWJsZSBkaXNjYXJkcyB1cCB0byAx
MSBiaXRzLiAoNjQtNTMpLgorICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAx
KSwgMC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4ODAwMDAwMDAwMDAwMDdGRiksIDAuNSk7
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZGRkYpLCAwLjk5OTk5OTk5OTk5
OTk5OTg4ODk3OCk7CisgIEVYUEVDVF9ORShUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkY4MDApLCBU
b0RvdWJsZSgweDdGRkZGRkZGRkZGRkY3RkYpKTsKKworICBFWFBFQ1RfTFQoVG9Eb3VibGUoMHhG
RkZGRkZGRkZGRkZGRkZGKSwgMS4wKTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4RkZGRkZGRkZG
RkZGRkZGRiksIFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRjgwMCkpOworICBFWFBFQ1RfTkUoVG9E
b3VibGUoMHhGRkZGRkZGRkZGRkZGRkZGKSwgVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGN0ZGKSk7
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkZGRkYpLCBUb0RvdWJsZSgweDdG
RkZGRkZGRkZGRkZDMDApKTsKKyAgRVhQRUNUX05FKFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRkZG
RiksIFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRkJGRikpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUo
MHgzRkZGRkZGRkZGRkZGRkZGKSwgVG9Eb3VibGUoMHgzRkZGRkZGRkZGRkZGRTAwKSk7CisgIEVY
UEVDVF9ORShUb0RvdWJsZSgweDNGRkZGRkZGRkZGRkZGRkYpLCBUb0RvdWJsZSgweDNGRkZGRkZG
RkZGRkZERkYpKTsKKworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgxMDAwMDAwMDAwMDAwMDAxKSwg
MC4wNjI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MjAwMDAwMDAwMDAwMDAwMSksIDAuMTI1
KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MzAwMDAwMDAwMDAwMDAwMSksIDAuMTg3NSk7Cisg
IEVYUEVDVF9FUShUb0RvdWJsZSgweDQwMDAwMDAwMDAwMDAwMDEpLCAwLjI1KTsKKyAgRVhQRUNU
X0VRKFRvRG91YmxlKDB4NTAwMDAwMDAwMDAwMDAwMSksIDAuMzEyNSk7CisgIEVYUEVDVF9FUShU
b0RvdWJsZSgweDYwMDAwMDAwMDAwMDAwMDEpLCAwLjM3NSk7CisgIEVYUEVDVF9FUShUb0RvdWJs
ZSgweDcwMDAwMDAwMDAwMDAwMDEpLCAwLjQzNzUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4
MDAwMDAwMDAwMDAwMDAxKSwgMC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4OTAwMDAwMDAw
MDAwMDAwMSksIDAuNTYyNSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweGEwMDAwMDAwMDAwMDAw
MDEpLCAwLjYyNSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweGIwMDAwMDAwMDAwMDAwMDEpLCAw
LjY4NzUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhjMDAwMDAwMDAwMDAwMDAxKSwgMC43NSk7
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweGQwMDAwMDAwMDAwMDAwMDEpLCAwLjgxMjUpOworICBF
WFBFQ1RfRVEoVG9Eb3VibGUoMHhlMDAwMDAwMDAwMDAwMDAxKSwgMC44NzUpOworICBFWFBFQ1Rf
RVEoVG9Eb3VibGUoMHhmMDAwMDAwMDAwMDAwMDAxKSwgMC45Mzc1KTsKKworICAvLyBMYXJnZSBw
b3dlcnMgb2YgMi4KKyAgaW50NjRfdCB0d29fdG9fNTMgPSBpbnQ2NF90ezF9IDw8IDUzOworICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50NjRfdD4oVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZG
KSAqIHR3b190b181MyksCisgICAgICAgICAgICB0d29fdG9fNTMgLSAxKTsKKyAgRVhQRUNUX05F
KHN0YXRpY19jYXN0PGludDY0X3Q+KFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGRikgKiB0d29f
dG9fNTMgKiAyKSwKKyAgICAgICAgICAgIHR3b190b181MyAqIDIgLSAxKTsKKworICAvLyBGb3Ig
dmFsdWVzIHdoZXJlIGV2ZXJ5IGJpdCBjb3VudHMsIHRoZSB2YWx1ZXMgc2NhbGUgYXMgbXVsdGlw
bGVzIG9mIHRoZQorICAvLyBpbnB1dC4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkg
eworICAgIEVYUEVDVF9FUShpICogVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAxKSwgVG9Eb3Vi
bGUoaSkpOworICB9CisKKyAgLy8gRm9yIGVhY2ggaTogdmFsdWUgZ2VuZXJhdGVkIGZyb20gKDEg
PDwgaSkuCisgIGRvdWJsZSBleHBfdmFsdWVzWzY0XTsKKyAgZXhwX3ZhbHVlc1s2M10gPSAwLjU7
CisgIGZvciAoaW50IGkgPSA2MjsgaSA+PSAwOyAtLWkpIGV4cF92YWx1ZXNbaV0gPSAwLjUgKiBl
eHBfdmFsdWVzW2kgKyAxXTsKKyAgY29uc3RleHByIHVpbnQ2NF90IG9uZSA9IDE7CisgIGZvciAo
aW50IGkgPSAwOyBpIDwgNjQ7ICsraSkgeworICAgIEVYUEVDVF9FUShUb0RvdWJsZShvbmUgPDwg
aSksIGV4cF92YWx1ZXNbaV0pOworICAgIGZvciAoaW50IGogPSAxOyBqIDwgREJMX01BTlRfRElH
ICYmIGkgLSBqID49IDA7ICsraikgeworICAgICAgRVhQRUNUX05FKGV4cF92YWx1ZXNbaV0gKyBl
eHBfdmFsdWVzW2kgLSBqXSwgZXhwX3ZhbHVlc1tpXSk7CisgICAgICBFWFBFQ1RfRVEoVG9Eb3Vi
bGUoKG9uZSA8PCBpKSArIChvbmUgPDwgKGkgLSBqKSkpLAorICAgICAgICAgICAgICAgIGV4cF92
YWx1ZXNbaV0gKyBleHBfdmFsdWVzW2kgLSBqXSk7CisgICAgfQorICAgIGZvciAoaW50IGogPSBE
QkxfTUFOVF9ESUc7IGkgLSBqID49IDA7ICsraikgeworICAgICAgRVhQRUNUX0VRKGV4cF92YWx1
ZXNbaV0gKyBleHBfdmFsdWVzW2kgLSBqXSwgZXhwX3ZhbHVlc1tpXSk7CisgICAgICBFWFBFQ1Rf
RVEoVG9Eb3VibGUoKG9uZSA8PCBpKSArIChvbmUgPDwgKGkgLSBqKSkpLCBleHBfdmFsdWVzW2ld
KTsKKyAgICB9CisgIH0KK30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwgVTY0VG9Eb3Vi
bGVTaWduZWRUZXN0KSB7CisgIGF1dG8gVG9Eb3VibGUgPSBbXSh1aW50NjRfdCBhKSB7CisgICAg
cmV0dXJuIFJhbmRVNjRUb0RvdWJsZTxTaWduZWRWYWx1ZVQsIGZhbHNlPihhKTsKKyAgfTsKKwor
ICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAwKSwgNS40MjEwMTA4NjI0Mjc1
MjIxNzAwNGUtMjApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAxKSwg
MS4wODQyMDIxNzI0ODU1MDQ0MzRlLTE5KTsKKworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAw
MDAwMDAwMDAwMDAwKSwgLTUuNDIxMDEwODYyNDI3NTIyMTcwMDRlLTIwKTsKKyAgRVhQRUNUX0VR
KFRvRG91YmxlKDB4ODAwMDAwMDAwMDAwMDAwMSksIC0xLjA4NDIwMjE3MjQ4NTUwNDQzNGUtMTkp
OworCisgIGNvbnN0IGRvdWJsZSBlX3BsdXMgPSBUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDEp
OworICBjb25zdCBkb3VibGUgZV9taW51cyA9IFRvRG91YmxlKDB4ODAwMDAwMDAwMDAwMDAwMSk7
CisgIEVYUEVDVF9FUShlX3BsdXMsIDEuMDg0MjAyMTcyNDg1NTA0NDM0ZS0xOSk7CisgIEVYUEVD
VF9FUShlX21pbnVzLCAtMS4wODQyMDIxNzI0ODU1MDQ0MzRlLTE5KTsKKworICBFWFBFQ1RfRVEo
VG9Eb3VibGUoMHgzZmZmZmZmZmZmZmZmZmVmKSwgMC40OTk5OTk5OTk5OTk5OTk5NDQ0ODkpOwor
ICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhiZmZmZmZmZmZmZmZmZmVmKSwgLTAuNDk5OTk5OTk5OTk5
OTk5OTQ0NDg5KTsKKworICAvLyBGb3IgdmFsdWVzID4gMC41LCBSYW5kVTY0VG9Eb3VibGUgZGlz
Y2FyZHMgdXAgdG8gMTAgYml0cy4gKDYzLTUzKS4KKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4NDAw
MDAwMDAwMDAwMDAwMCksIDAuNSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDQwMDAwMDAwMDAw
MDAwMDEpLCAwLjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg0MDAwMDAwMDAwMDAwM0ZGKSwg
MC41KTsKKworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhDMDAwMDAwMDAwMDAwMDAwKSwgLTAuNSk7
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEMwMDAwMDAwMDAwMDAwMDEpLCAtMC41KTsKKyAgRVhQ
RUNUX0VRKFRvRG91YmxlKDB4QzAwMDAwMDAwMDAwMDNGRiksIC0wLjUpOworCisgIEVYUEVDVF9F
UShUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkZGRmUpLCAwLjk5OTk5OTk5OTk5OTk5OTg4ODk3OCk7
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZGRmUpLCAtMC45OTk5OTk5OTk5
OTk5OTk4ODg5NzgpOworCisgIEVYUEVDVF9ORShUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkY4MDAp
LCBUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkY3RkYpKTsKKworICBFWFBFQ1RfTFQoVG9Eb3VibGUo
MHg3RkZGRkZGRkZGRkZGRkZGKSwgMS4wKTsKKyAgRVhQRUNUX0dUKFRvRG91YmxlKDB4N0ZGRkZG
RkZGRkZGRkZGRiksIDAuOTk5OTk5OTk5OSk7CisKKyAgRVhQRUNUX0dUKFRvRG91YmxlKDB4RkZG
RkZGRkZGRkZGRkZGZSksIC0xLjApOworICBFWFBFQ1RfTFQoVG9Eb3VibGUoMHhGRkZGRkZGRkZG
RkZGRkZlKSwgLTAuOTk5OTk5OTk5KTsKKworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhGRkZGRkZG
RkZGRkZGRkZlKSwgVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGQzAwKSk7CisgIEVYUEVDVF9FUShU
b0RvdWJsZSgweDdGRkZGRkZGRkZGRkZGRkYpLCBUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkZDMDAp
KTsKKyAgRVhQRUNUX05FKFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGZSksIFRvRG91YmxlKDB4
RkZGRkZGRkZGRkZGRjNGRikpOworICBFWFBFQ1RfTkUoVG9Eb3VibGUoMHg3RkZGRkZGRkZGRkZG
RkZGKSwgVG9Eb3VibGUoMHg3RkZGRkZGRkZGRkZGM0ZGKSk7CisKKyAgRVhQRUNUX0VRKFRvRG91
YmxlKDB4MTAwMDAwMDAwMDAwMDAwMSksIDAuMTI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4
MjAwMDAwMDAwMDAwMDAwMSksIDAuMjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgzMDAwMDAw
MDAwMDAwMDAxKSwgMC4zNzUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg0MDAwMDAwMDAwMDAw
MDAxKSwgMC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4NTAwMDAwMDAwMDAwMDAwMSksIDAu
NjI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4NjAwMDAwMDAwMDAwMDAwMSksIDAuNzUpOwor
ICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg3MDAwMDAwMDAwMDAwMDAxKSwgMC44NzUpOworICBFWFBF
Q1RfRVEoVG9Eb3VibGUoMHg3ODAwMDAwMDAwMDAwMDAxKSwgMC45Mzc1KTsKKyAgRVhQRUNUX0VR
KFRvRG91YmxlKDB4N2MwMDAwMDAwMDAwMDAwMSksIDAuOTY4NzUpOworICBFWFBFQ1RfRVEoVG9E
b3VibGUoMHg3ZTAwMDAwMDAwMDAwMDAxKSwgMC45ODQzNzUpOworICBFWFBFQ1RfRVEoVG9Eb3Vi
bGUoMHg3ZjAwMDAwMDAwMDAwMDAxKSwgMC45OTIxODc1KTsKKworICAvLyAweDgwMDAwMDAwMDAw
MDAwMDAgfj0gMAorICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg5MDAwMDAwMDAwMDAwMDAxKSwgLTAu
MTI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4YTAwMDAwMDAwMDAwMDAwMSksIC0wLjI1KTsK
KyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4YjAwMDAwMDAwMDAwMDAwMSksIC0wLjM3NSk7CisgIEVY
UEVDVF9FUShUb0RvdWJsZSgweGMwMDAwMDAwMDAwMDAwMDEpLCAtMC41KTsKKyAgRVhQRUNUX0VR
KFRvRG91YmxlKDB4ZDAwMDAwMDAwMDAwMDAwMSksIC0wLjYyNSk7CisgIEVYUEVDVF9FUShUb0Rv
dWJsZSgweGUwMDAwMDAwMDAwMDAwMDEpLCAtMC43NSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgw
eGYwMDAwMDAwMDAwMDAwMDEpLCAtMC44NzUpOworCisgIC8vIExhcmdlIHBvd2VycyBvZiAyLgor
ICBpbnQ2NF90IHR3b190b181MyA9IGludDY0X3R7MX0gPDwgNTM7CisgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxpbnQ2NF90PihUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkZGRkYpICogdHdvX3RvXzUz
KSwKKyAgICAgICAgICAgIHR3b190b181MyAtIDEpOworICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
aW50NjRfdD4oVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZGKSAqIHR3b190b181MyksCisgICAg
ICAgICAgICAtKHR3b190b181MyAtIDEpKTsKKworICBFWFBFQ1RfTkUoc3RhdGljX2Nhc3Q8aW50
NjRfdD4oVG9Eb3VibGUoMHg3RkZGRkZGRkZGRkZGRkZGKSAqIHR3b190b181MyAqIDIpLAorICAg
ICAgICAgICAgdHdvX3RvXzUzICogMiAtIDEpOworCisgIC8vIEZvciB2YWx1ZXMgd2hlcmUgZXZl
cnkgYml0IGNvdW50cywgdGhlIHZhbHVlcyBzY2FsZSBhcyBtdWx0aXBsZXMgb2YgdGhlCisgIC8v
IGlucHV0LgorICBmb3IgKGludCBpID0gMTsgaSA8IDEwMDsgKytpKSB7CisgICAgRVhQRUNUX0VR
KGkgKiBlX3BsdXMsIFRvRG91YmxlKGkpKSA8PCBpOworICAgIEVYUEVDVF9FUShpICogZV9taW51
cywgVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAwIHwgaSkpIDw8IGk7CisgIH0KK30KKworVEVT
VChEaXN0cmlidXRpb25JbXBsVGVzdCwgRXhoYXVzdGl2ZUZsb2F0KSB7CisgIHVzaW5nIGFic2w6
OmJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQ7CisgIGF1dG8gVG9GbG9hdCA9IFtd
KHVpbnQ2NF90IGEpIHsKKyAgICByZXR1cm4gUmFuZFU2NFRvRmxvYXQ8UG9zaXRpdmVWYWx1ZVQs
IHRydWU+KGEpOworICB9OworCisgIC8vIFJlbHkgb24gUmFuZFU2NFRvRmxvYXQgZ2VuZXJhdGlu
ZyB2YWx1ZXMgZnJvbSBncmVhdGVzdCB0byBsZWFzdCB3aGVuCisgIC8vIHN1cHBsaWVkIHdpdGgg
dWludDY0X3QgdmFsdWVzIGZyb20gZ3JlYXRlc3QgKDB4ZmZmLi4uKSB0byBsZWFzdCAoMHgwKS4g
IFRodXMsCisgIC8vIHRoaXMgYWxnb3JpdGhtIHN0b3JlcyB0aGUgcHJldmlvdXMgdmFsdWUsIGFu
ZCBpZiB0aGUgbmV3IHZhbHVlIGlzIGF0CisgIC8vIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0
aGUgcHJldmlvdXMgdmFsdWUsIHRoZW4gdGhlcmUgaXMgYSBjb2xsaXNpb24gaW4KKyAgLy8gdGhl
IGdlbmVyYXRpb24gYWxnb3JpdGhtLgorICAvLworICAvLyBVc2UgdGhlIGNvbXB1dGF0aW9uIGJl
bG93IHRvIGNvbnZlcnQgdGhlIHJhbmRvbSB2YWx1ZSBpbnRvIGEgcmVzdWx0OgorICAvLyAgIGRv
dWJsZSByZXMgPSBhKCkgKiAoMS4wZiAtIHNhbXBsZSkgKyBiKCkgKiBzYW1wbGU7CisgIGZsb2F0
IGxhc3RfZiA9IDEuMCwgbGFzdF9nID0gMi4wOworICB1aW50NjRfdCBmX2NvbGxpc2lvbnMgPSAw
LCBnX2NvbGxpc2lvbnMgPSAwOworICB1aW50NjRfdCBmX3VuaXF1ZSA9IDAsIGdfdW5pcXVlID0g
MDsKKyAgdWludDY0X3QgdG90YWwgPSAwOworICBhdXRvIGNvdW50ID0gWyZdKGNvbnN0IGZsb2F0
IHIpIHsKKyAgICB0b3RhbCsrOworICAgIC8vIGBmYCBpcyBtYXBwZWQgdG8gdGhlIHJhbmdlIFsw
LCAxKSAoZGVmYXVsdCkKKyAgICBjb25zdCBmbG9hdCBmID0gMC4wZiAqICgxLjBmIC0gcikgKyAx
LjBmICogcjsKKyAgICBpZiAoZiA+PSBsYXN0X2YpIHsKKyAgICAgIGZfY29sbGlzaW9ucysrOwor
ICAgIH0gZWxzZSB7CisgICAgICBmX3VuaXF1ZSsrOworICAgICAgbGFzdF9mID0gZjsKKyAgICB9
CisgICAgLy8gYGdgIGlzIG1hcHBlZCB0byB0aGUgcmFuZ2UgWzEsIDIpCisgICAgY29uc3QgZmxv
YXQgZyA9IDEuMGYgKiAoMS4wZiAtIHIpICsgMi4wZiAqIHI7CisgICAgaWYgKGcgPj0gbGFzdF9n
KSB7CisgICAgICBnX2NvbGxpc2lvbnMrKzsKKyAgICB9IGVsc2UgeworICAgICAgZ191bmlxdWUr
KzsKKyAgICAgIGxhc3RfZyA9IGc7CisgICAgfQorICB9OworCisgIHNpemVfdCBsaW1pdCA9IGFi
c2w6OkdldEZsYWcoRkxBR1NfYWJzbF9yYW5kb21fdGVzdF90cmlhbHMpOworCisgIC8vIEdlbmVy
YXRlIGFsbCB1aW50NjRfdCB3aGljaCBoYXZlIHVuaXF1ZSBmbG9hdGluZyBwb2ludCB2YWx1ZXMu
CisgIC8vIENvdW50aW5nIGRvd24gZnJvbSAweEZGRkZGRkZGRkZGRkZGRkZ1IC4uLiAweDB1Cisg
IHVpbnQ2NF90IHggPSB+dWludDY0X3QoMCk7CisgIGZvciAoOyB4ICE9IDAgJiYgbGltaXQgPiAw
OykgeworICAgIGNvbnN0ZXhwciBpbnQga0RpZyA9ICg2NCAtIEZMVF9NQU5UX0RJRyk7CisgICAg
Ly8gU2V0IGEgZGVjcmVtZW50IHZhbHVlICYgdGhlIG5leHQgcG9pbnQgYXQgd2hpY2ggdG8gY2hh
bmdlCisgICAgLy8gdGhlIGRlY3JlbWVudCB2YWx1ZS4gQnkgZGVmYXVsdCB0aGVzZSBhcmUgMSwg
MC4KKyAgICB1aW50NjRfdCBkZWMgPSAxOworICAgIHVpbnQ2NF90IGNoayA9IDA7CisKKyAgICAv
LyBBZGp1c3QgZGVjcmVtZW50IGFuZCBjaGVjayB2YWx1ZSBiYXNlZCBvbiBob3cgbWFueSBsZWFk
aW5nIDAKKyAgICAvLyBiaXRzIGFyZSBzZXQgaW4gdGhlIGN1cnJlbnQgdmFsdWUuCisgICAgY29u
c3QgaW50IGNseiA9IENvdW50TGVhZGluZ1plcm9zNjQoeCk7CisgICAgaWYgKGNseiA8IGtEaWcp
IHsKKyAgICAgIGRlYyA8PD0gKGtEaWcgLSBjbHopOworICAgICAgY2hrID0gKH51aW50NjRfdCgw
KSkgPj4gKGNseiArIDEpOworICAgIH0KKyAgICBmb3IgKDsgeCA+IGNoayAmJiBsaW1pdCA+IDA7
IHggLT0gZGVjKSB7CisgICAgICBjb3VudChUb0Zsb2F0KHgpKTsKKyAgICAgIC0tbGltaXQ7Cisg
ICAgfQorICB9CisKKyAgc3RhdGljX2Fzc2VydChGTFRfTUFOVF9ESUcgPT0gMjQsCisgICAgICAg
ICAgICAgICAgIlRoZSBmbG9hdCB0eXBlIGlzIGV4cGVjdGVkIHRvIGhhdmUgYSAyNCBiaXQgbWFu
dGlzc2EuIik7CisKKyAgaWYgKGxpbWl0ICE9IDApIHsKKyAgICAvLyBUaGVyZSBhcmUgYmV0d2Vl
biAyXjI4IGFuZCAyXjI5IHVuaXF1ZSB2YWx1ZXMgaW4gdGhlIHJhbmdlIFswLCAxKS4gIEZvcgor
ICAgIC8vIHRoZSBsb3cgdmFsdWVzIG9mIHgsIHRoZXJlIGFyZSAyXjI0IC0xIHVuaXF1ZSB2YWx1
ZXMuICBPbmNlIHggPiAyXjI0LAorICAgIC8vIHRoZXJlIGFyZSA0MCAqIDJeMjQgdW5pcXVlIHZh
bHVlcy4gVGh1czoKKyAgICAvLyAoMiArIDQgKyA4IC4uLiArIDJeMjMpICsgNDAgKiAyXjIzCisg
ICAgRVhQRUNUX0xUKDEgPDwgMjgsIGZfdW5pcXVlKTsKKyAgICBFWFBFQ1RfRVEoKDEgPDwgMjQp
ICsgNDAgKiAoMSA8PCAyMykgLSAxLCBmX3VuaXF1ZSk7CisgICAgRVhQRUNUX0VRKHRvdGFsLCBm
X3VuaXF1ZSk7CisgICAgRVhQRUNUX0VRKDAsIGZfY29sbGlzaW9ucyk7CisKKyAgICAvLyBFeHBl
Y3QgYXQgbGVhc3QgMl4yMyB1bmlxdWUgdmFsdWVzIGZvciB0aGUgcmFuZ2UgWzEsIDIpCisgICAg
RVhQRUNUX0xFKDEgPDwgMjMsIGdfdW5pcXVlKTsKKyAgICBFWFBFQ1RfRVEodG90YWwgLSBnX3Vu
aXF1ZSwgZ19jb2xsaXNpb25zKTsKKyAgfQorfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0
LCBNdWx0aXBseVU2NFRvVTEyOFRlc3QpIHsKKyAgdXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpNdWx0aXBseVU2NFRvVTEyODsKKyAgY29uc3RleHByIHVpbnQ2NF90IGsxID0gMTsKKyAgY29u
c3RleHByIHVpbnQ2NF90IGtNYXggPSB+c3RhdGljX2Nhc3Q8dWludDY0X3Q+KDApOworCisgIEVY
UEVDVF9FUShhYnNsOjp1aW50MTI4KDApLCBNdWx0aXBseVU2NFRvVTEyOCgwLCAwKSk7CisKKyAg
Ly8gTWF4IHVpbnQ2NAorICBFWFBFQ1RfRVEoTXVsdGlwbHlVNjRUb1UxMjgoa01heCwga01heCks
CisgICAgICAgICAgICBhYnNsOjpNYWtlVWludDEyOCgweGZmZmZmZmZmZmZmZmZmZmUsIDB4MDAw
MDAwMDAwMDAwMDAwMSkpOworICBFWFBFQ1RfRVEoYWJzbDo6TWFrZVVpbnQxMjgoMCwga01heCks
IE11bHRpcGx5VTY0VG9VMTI4KGtNYXgsIDEpKTsKKyAgRVhQRUNUX0VRKGFic2w6Ok1ha2VVaW50
MTI4KDAsIGtNYXgpLCBNdWx0aXBseVU2NFRvVTEyOCgxLCBrTWF4KSk7CisgIGZvciAoaW50IGkg
PSAwOyBpIDwgNjQ7ICsraSkgeworICAgIEVYUEVDVF9FUShhYnNsOjpNYWtlVWludDEyOCgwLCBr
TWF4KSA8PCBpLAorICAgICAgICAgICAgICBNdWx0aXBseVU2NFRvVTEyOChrTWF4LCBrMSA8PCBp
KSk7CisgICAgRVhQRUNUX0VRKGFic2w6Ok1ha2VVaW50MTI4KDAsIGtNYXgpIDw8IGksCisgICAg
ICAgICAgICAgIE11bHRpcGx5VTY0VG9VMTI4KGsxIDw8IGksIGtNYXgpKTsKKyAgfQorCisgIC8v
IDEtYml0IHggMS1iaXQuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7ICsraSkgeworICAgIGZv
ciAoaW50IGogPSAwOyBqIDwgNjQ7ICsraikgeworICAgICAgRVhQRUNUX0VRKGFic2w6Ok1ha2VV
aW50MTI4KDAsIDEpIDw8IChpICsgaiksCisgICAgICAgICAgICAgICAgTXVsdGlwbHlVNjRUb1Ux
MjgoazEgPDwgaSwgazEgPDwgaikpOworICAgICAgRVhQRUNUX0VRKGFic2w6Ok1ha2VVaW50MTI4
KDAsIDEpIDw8IChpICsgaiksCisgICAgICAgICAgICAgICAgTXVsdGlwbHlVNjRUb1UxMjgoazEg
PDwgaSwgazEgPDwgaikpOworICAgIH0KKyAgfQorCisgIC8vIFZlcmlmaWVkIG11bHRpcGxpZXMK
KyAgRVhQRUNUX0VRKE11bHRpcGx5VTY0VG9VMTI4KDB4ZmZmZmVlZWVkZGRkY2NjYywgMHhiYmJi
YWFhYTk5OTk4ODg4KSwKKyAgICAgICAgICAgIGFic2w6Ok1ha2VVaW50MTI4KDB4YmJiYjllMjY5
MmM1ZGRkYywgMHhjMjhmNzUzMTA0OGQyYzYwKSk7CisgIEVYUEVDVF9FUShNdWx0aXBseVU2NFRv
VTEyOCgweDAxMjM0NTY3ODlhYmNkZWYsIDB4ZmVkY2JhOTg3NjU0MzIxMCksCisgICAgICAgICAg
ICBhYnNsOjpNYWtlVWludDEyOCgweDAxMjFmYTAwYWQ3N2Q3NDIsIDB4MjIzNmQ4OGZlNTYxOGNm
MCkpOworICBFWFBFQ1RfRVEoTXVsdGlwbHlVNjRUb1UxMjgoMHgwMTIzNDU2Nzg5YWJjZGVmLCAw
eGZkYjk3NTMxZWNhODY0MjApLAorICAgICAgICAgICAgYWJzbDo6TWFrZVVpbnQxMjgoMHgwMTIw
YWU5OWQyNjcyNWZjLCAweGNlMTk3ZjBlY2FjMzE5ZTApKTsKKyAgRVhQRUNUX0VRKE11bHRpcGx5
VTY0VG9VMTI4KDB4OTdhODdmNGYyNjFiYTNmMiwgMHhmZWRjYmE5ODc2NTQzMjEwKSwKKyAgICAg
ICAgICAgIGFic2w6Ok1ha2VVaW50MTI4KDB4OTZmYmYxYThhZTc4ZDBiYSwgMHg1YTZkZDRiNzFm
Mjc4MzIwKSk7CisgIEVYUEVDVF9FUShNdWx0aXBseVU2NFRvVTEyOCgweGZlZGNiYTk4NzY1NDMy
MTAsIDB4ZmRiOTc1MzFlY2E4NjQyMCksCisgICAgICAgICAgICBhYnNsOjpNYWtlVWludDEyOCgw
eGZjOThjNjk4MWE0MTNlMjIsIDB4MzQyZDBiYmY0ODk0ODIwMCkpOworfQorCit9ICAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVz
dF91dGlsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg1YzhkNTk2ZWJmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0
X3V0aWwuY2MKQEAgLTAsMCArMSw0MTYgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9u
X3Rlc3RfdXRpbC5oIgorCisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjbWF0aD4KKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9iYXNl
L2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cl9mb3JtYXQuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRl
cm5hbCB7CituYW1lc3BhY2UgeworCisjaWYgZGVmaW5lZChfX0VNU0NSSVBURU5fXykKKy8vIFdv
cmthcm91bmQgX19FTVNDUklQVEVOX18gZXJyb3I6IGxsdm1fZm1hX2Y2NCBub3QgZm91bmQuCitp
bmxpbmUgZG91YmxlIGZtYShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KSB7IHJldHVybiAo
eCAqIHkpICsgejsgfQorI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQorCitEaXN0cmlidXRpb25N
b21lbnRzIENvbXB1dGVEaXN0cmlidXRpb25Nb21lbnRzKAorICAgIGFic2w6OlNwYW48Y29uc3Qg
ZG91YmxlPiBkYXRhX3BvaW50cykgeworICBEaXN0cmlidXRpb25Nb21lbnRzIHJlc3VsdDsKKwor
ICAvLyBDb21wdXRlIG0xCisgIGZvciAoZG91YmxlIHggOiBkYXRhX3BvaW50cykgeworICAgIHJl
c3VsdC5uKys7CisgICAgcmVzdWx0Lm1lYW4gKz0geDsKKyAgfQorICByZXN1bHQubWVhbiAvPSBz
dGF0aWNfY2FzdDxkb3VibGU+KHJlc3VsdC5uKTsKKworICAvLyBDb21wdXRlIG0yLCBtMywgbTQK
KyAgZm9yIChkb3VibGUgeCA6IGRhdGFfcG9pbnRzKSB7CisgICAgZG91YmxlIHYgPSB4IC0gcmVz
dWx0Lm1lYW47CisgICAgcmVzdWx0LnZhcmlhbmNlICs9IHYgKiB2OworICAgIHJlc3VsdC5za2V3
bmVzcyArPSB2ICogdiAqIHY7CisgICAgcmVzdWx0Lmt1cnRvc2lzICs9IHYgKiB2ICogdiAqIHY7
CisgIH0KKyAgcmVzdWx0LnZhcmlhbmNlIC89IHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0Lm4g
LSAxKTsKKworICByZXN1bHQuc2tld25lc3MgLz0gc3RhdGljX2Nhc3Q8ZG91YmxlPihyZXN1bHQu
bik7CisgIHJlc3VsdC5za2V3bmVzcyAvPSBzdGQ6OnBvdyhyZXN1bHQudmFyaWFuY2UsIDEuNSk7
CisKKyAgcmVzdWx0Lmt1cnRvc2lzIC89IHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0Lm4pOwor
ICByZXN1bHQua3VydG9zaXMgLz0gc3RkOjpwb3cocmVzdWx0LnZhcmlhbmNlLCAyLjApOworICBy
ZXR1cm4gcmVzdWx0OworCisgIC8vIFdoZW4gdmFsaWRhdGluZyB0aGUgbWluL21heCBjb3VudCwg
dGhlIGZvbGxvd2luZyBjb25maWRlbmNlIGludGVydmFscyBtYXkKKyAgLy8gYmUgb2YgdXNlOgor
ICAvLyAzLjI5MSAqIHN0ZGRldiA9IDk5LjklIENJCisgIC8vIDIuNTc2ICogc3RkZGV2ID0gOTkl
IENJCisgIC8vIDEuOTYgKiBzdGRkZXYgID0gOTUlIENJCisgIC8vIDEuNjUgKiBzdGRkZXYgID0g
OTAlIENJCit9CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBj
b25zdCBEaXN0cmlidXRpb25Nb21lbnRzJiBtb21lbnRzKSB7CisgIHJldHVybiBvcyA8PCBhYnNs
OjpTdHJGb3JtYXQoIm1lYW49JWYsIHN0ZGRldj0lZiwgc2tld25lc3M9JWYsIGt1cnRvc2lzPSVm
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb21lbnRzLm1lYW4sIHN0ZDo6c3Fy
dChtb21lbnRzLnZhcmlhbmNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb21l
bnRzLnNrZXduZXNzLCBtb21lbnRzLmt1cnRvc2lzKTsKK30KKworZG91YmxlIEludmVyc2VOb3Jt
YWxTdXJ2aXZhbChkb3VibGUgeCkgeworICAvLyBpbnZfc2YodSkgPSAtc3FydCgyKSAqIGVyZmlu
digydS0xKQorICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrU3FydDIgPSAxLjQxNDIxMzU2MjM3
MzA5NTA0ODg7CisgIHJldHVybiAta1NxcnQyICogYWJzbDo6cmFuZG9tX2ludGVybmFsOjplcmZp
bnYoMiAqIHggLSAxLjApOworfQorCitib29sIE5lYXIoYWJzbDo6c3RyaW5nX3ZpZXcgbXNnLCBk
b3VibGUgYWN0dWFsLCBkb3VibGUgZXhwZWN0ZWQsIGRvdWJsZSBib3VuZCkgeworICBhc3NlcnQo
Ym91bmQgPiAwLjApOworICBkb3VibGUgZGVsdGEgPSBmYWJzKGV4cGVjdGVkIC0gYWN0dWFsKTsK
KyAgaWYgKGRlbHRhIDwgYm91bmQpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIHN0ZDo6
c3RyaW5nIGZvcm1hdHRlZCA9IGFic2w6OlN0ckNhdCgKKyAgICAgIG1zZywgIiBhY3R1YWw9Iiwg
YWN0dWFsLCAiIGV4cGVjdGVkPSIsIGV4cGVjdGVkLCAiIGVycj0iLCBkZWx0YSAvIGJvdW5kKTsK
KyAgQUJTTF9SQVdfTE9HKElORk8sICIlcyIsIGZvcm1hdHRlZC5jX3N0cigpKTsKKyAgcmV0dXJu
IGZhbHNlOworfQorCisvLyBUT0RPKGFic2wtdGVhbSk6IFJlcGxhY2Ugd2l0aCBhbiAiQUJTTF9I
QVZFX1NQRUNJQUxfTUFUSCIgYW5kIHRyeQorLy8gdG8gdXNlIHN0ZDo6YmV0YSgpLiAgQXMgb2Yg
dGhpcyB3cml0aW5nIFAwMjI2UjEgaXMgbm90IGltcGxlbWVudGVkCisvLyBpbiBsaWJjKys6IGh0
dHA6Ly9saWJjeHgubGx2bS5vcmcvY3h4MXpfc3RhdHVzLmh0bWwKK2RvdWJsZSBiZXRhKGRvdWJs
ZSBwLCBkb3VibGUgcSkgeworICAvLyBCZXRhKHgsIHkpID0gR2FtbWEoeCkgKiBHYW1tYSh5KSAv
IEdhbW1hKHgreSkKKyAgZG91YmxlIGxiZXRhID0gc3RkOjpsZ2FtbWEocCkgKyBzdGQ6OmxnYW1t
YShxKSAtIHN0ZDo6bGdhbW1hKHAgKyBxKTsKKyAgcmV0dXJuIHN0ZDo6ZXhwKGxiZXRhKTsKK30K
KworLy8gQXBwcm94aW1hdGlvbiB0byBpbnZlcnNlIG9mIHRoZSBFcnJvciBGdW5jdGlvbiBpbiBk
b3VibGUgcHJlY2lzaW9uLgorLy8gKGh0dHA6Ly9wZW9wbGUubWF0aHMub3guYWMudWsvZ2lsZXNt
L2ZpbGVzL2dlbXNfZXJmaW52LnBkZikKK2RvdWJsZSBlcmZpbnYoZG91YmxlIHgpIHsKKyNpZiAh
ZGVmaW5lZChfX0VNU0NSSVBURU5fXykKKyAgdXNpbmcgc3RkOjpmbWE7CisjZW5kaWYKKworICBk
b3VibGUgdyA9IDAuMDsKKyAgZG91YmxlIHAgPSAwLjA7CisgIHcgPSAtc3RkOjpsb2coKDEuMCAt
IHgpICogKDEuMCArIHgpKTsKKyAgaWYgKHcgPCA2LjI1MDAwMCkgeworICAgIHcgPSB3IC0gMy4x
MjUwMDA7CisgICAgcCA9IC0zLjY0NDQxMjA2NDAxNzgxOTY5OTZlLTIxOworICAgIHAgPSBmbWEo
cCwgdywgLTEuNjg1MDU5MTM4MTgyMDE2NTg5ZS0xOSk7CisgICAgcCA9IGZtYShwLCB3LCAxLjI4
NTg0ODA3MTUyNTY0MDAxNjdlLTE4KTsKKyAgICBwID0gZm1hKHAsIHcsIDEuMTE1Nzg3NzY3ODAy
NTE4MDk2ZS0xNyk7CisgICAgcCA9IGZtYShwLCB3LCAtMS4zMzMxNzE2NjI4NTQ2MjA5MDZlLTE2
KTsKKyAgICBwID0gZm1hKHAsIHcsIDIuMDk3Mjc2Nzg3NTk2ODU2MTYzN2UtMTcpOworICAgIHAg
PSBmbWEocCwgdywgNi42Mzc2MzgxMzQzNTgzMjM4MzI1ZS0xNSk7CisgICAgcCA9IGZtYShwLCB3
LCAtNC4wNTQ1NjYyNzI5NzUyMDY4NjM5ZS0xNCk7CisgICAgcCA9IGZtYShwLCB3LCAtOC4xNTE5
MzQxOTc2MDU0NzIxNTIyZS0xNCk7CisgICAgcCA9IGZtYShwLCB3LCAyLjYzMzUwOTMxNTMwODIz
MjI5NzdlLTEyKTsKKyAgICBwID0gZm1hKHAsIHcsIC0xLjI5NzUxMzMyNTM0NTM1MzI0OThlLTEx
KTsKKyAgICBwID0gZm1hKHAsIHcsIC01LjQxNTQxMjA1NDI5NDYyNzkzMTdlLTExKTsKKyAgICBw
ID0gZm1hKHAsIHcsIDEuMDUxMjEyMjczMzIxNTMyMjg1ZS0wOSk7CisgICAgcCA9IGZtYShwLCB3
LCAtNC4xMTI2MzM5ODAzNDY5ODM2OTc2ZS0wOSk7CisgICAgcCA9IGZtYShwLCB3LCAtMi45MDcw
MzY5OTU3ODgyMDA1MDg2ZS0wOCk7CisgICAgcCA9IGZtYShwLCB3LCA0LjIzNDc4Nzc4Mjc5MzI0
MDM1MThlLTA3KTsKKyAgICBwID0gZm1hKHAsIHcsIC0xLjM2NTQ2OTIwMDA4MzQ2Nzg2NDVlLTA2
KTsKKyAgICBwID0gZm1hKHAsIHcsIC0xLjM4ODI1MjMzNjI3ODY0Njg3MTllLTA1KTsKKyAgICBw
ID0gZm1hKHAsIHcsIDAuMDAwMTg2NzM0MjA4MDM0MDU3MTM1Mik7CisgICAgcCA9IGZtYShwLCB3
LCAtMC4wMDA3NDA3MDI1MzQxNjYyNjY5NzUxMik7CisgICAgcCA9IGZtYShwLCB3LCAtMC4wMDYw
MzM2NzA4NzE0MzAxNDkwNTMzKTsKKyAgICBwID0gZm1hKHAsIHcsIDAuMjQwMTU4MTgyNDI1NTg5
NjE2OTMpOworICAgIHAgPSBmbWEocCwgdywgMS42NTM2NTQ1NjI2ODMxMDI3MzU2KTsKKyAgfSBl
bHNlIGlmICh3IDwgMTYuMDAwMDAwKSB7CisgICAgdyA9IHN0ZDo6c3FydCh3KSAtIDMuMjUwMDAw
OworICAgIHAgPSAyLjIxMzczNzY5MjE3NzU3ODcwNDllLTA5OworICAgIHAgPSBmbWEocCwgdywg
OS4wNzU2NTYxOTM4ODg1MzkwOTc5ZS0wOCk7CisgICAgcCA9IGZtYShwLCB3LCAtMi43NTE3NDA2
Mjk3MDY0NTQ1NDI4ZS0wNyk7CisgICAgcCA9IGZtYShwLCB3LCAxLjgyMzk2MjkyMTQzODkyMjc3
NTVlLTA4KTsKKyAgICBwID0gZm1hKHAsIHcsIDEuNTAyNzQwMzk2ODkwOTgyNzYyN2UtMDYpOwor
ICAgIHAgPSBmbWEocCwgdywgLTQuMDEzODY3NTI2OTgxNTQ1OTY5ZS0wNik7CisgICAgcCA9IGZt
YShwLCB3LCAyLjkyMzQ0NDkwODk5NTU0NDYwNDRlLTA2KTsKKyAgICBwID0gZm1hKHAsIHcsIDEu
MjQ3NTMwNDQ4MTY3MTc3ODcyM2UtMDUpOworICAgIHAgPSBmbWEocCwgdywgLTQuNzMxODIyOTAw
OTA1NTczMzk4MWUtMDUpOworICAgIHAgPSBmbWEocCwgdywgNi44Mjg0ODUxNDU5NTczMTc1NDQ4
ZS0wNSk7CisgICAgcCA9IGZtYShwLCB3LCAyLjQwMzExMTAzODcwOTc4OTM5OTllLTA1KTsKKyAg
ICBwID0gZm1hKHAsIHcsIC0wLjAwMDM1NTAzNzUyMDM2Mjg0NzQ3OTYpOworICAgIHAgPSBmbWEo
cCwgdywgMC4wMDA5NTMyODkzNzk3MzczODA0OTcwMyk7CisgICAgcCA9IGZtYShwLCB3LCAtMC4w
MDE2ODgyNzU1NTYwMjM1MDQ3MzEzKTsKKyAgICBwID0gZm1hKHAsIHcsIDAuMDAyNDkxNDQyMDk2
MTA3ODUwODA2Nik7CisgICAgcCA9IGZtYShwLCB3LCAtMC4wMDM3NTEyMDg1MDc1NjkyNDEyMTA3
KTsKKyAgICBwID0gZm1hKHAsIHcsIDAuMDA1MzcwOTE0NTUzNTkwMDYzNjE3KTsKKyAgICBwID0g
Zm1hKHAsIHcsIDEuMDA1MjU4OTY3Njk0MTU5MjMzNCk7CisgICAgcCA9IGZtYShwLCB3LCAzLjA4
Mzg4NTYxMDQ5MjIyMDc2MzUpOworICB9IGVsc2UgeworICAgIHcgPSBzdGQ6OnNxcnQodykgLSA1
LjAwMDAwMDsKKyAgICBwID0gLTIuNzEwOTkyMDYxNjQzODU3MzI0M2UtMTE7CisgICAgcCA9IGZt
YShwLCB3LCAtMi41NTU2NDE4MTY5OTY1MjUyMDU1ZS0xMCk7CisgICAgcCA9IGZtYShwLCB3LCAx
LjUwNzY1NzI2OTM1MDA1NDgwODNlLTA5KTsKKyAgICBwID0gZm1hKHAsIHcsIC0zLjc4OTQ2NTQ0
MDEyNjczNjk5MzdlLTA5KTsKKyAgICBwID0gZm1hKHAsIHcsIDcuNjE1NzAxMjA4MDc4MzM5Mzgw
NGUtMDkpOworICAgIHAgPSBmbWEocCwgdywgLTEuNDk2MDAyNjYyNzE0OTI0MDQ3OGUtMDgpOwor
ICAgIHAgPSBmbWEocCwgdywgMi45MTQ3OTUzNDUwOTAxMDgwODI2ZS0wOCk7CisgICAgcCA9IGZt
YShwLCB3LCAtNi43NzExOTk3NzU4NDUyMzM5NDk4ZS0wOCk7CisgICAgcCA9IGZtYShwLCB3LCAy
LjI5MDA0ODIyMjgwMjY2NTQ3MTdlLTA3KTsKKyAgICBwID0gZm1hKHAsIHcsIC05LjkyOTgyNzI5
NDIzMTcwMDI1MzllLTA3KTsKKyAgICBwID0gZm1hKHAsIHcsIDQuNTI2MDYyNTk3MjIzMTUzNzAz
OWUtMDYpOworICAgIHAgPSBmbWEocCwgdywgLTEuOTY4MTc3ODEwNTUzMTY3MDU2N2UtMDUpOwor
ICAgIHAgPSBmbWEocCwgdywgNy41OTk1Mjc3MDMwMDE3NzYxMTM5ZS0wNSk7CisgICAgcCA9IGZt
YShwLCB3LCAtMC4wMDAyMTUwMzAxMTkzMDA0NDQ3NzM0Nyk7CisgICAgcCA9IGZtYShwLCB3LCAt
MC4wMDAxMzg3MTkzMTgzMzYyMzEyMjAyNik7CisgICAgcCA9IGZtYShwLCB3LCAxLjAxMDMwMDQ2
NDg2NDUzNDM5NzcpOworICAgIHAgPSBmbWEocCwgdywgNC44NDk5MDY0MDE0MDg1ODQ0MjIxKTsK
KyAgfQorICByZXR1cm4gcCAqIHg7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIERpcmVjdCBpbXBs
ZW1lbnRhdGlvbiBvZiBBUzYzLCBCRVRBSU4oKQorLy8gaHR0cHM6Ly93d3cuanN0b3Iub3JnL3N0
YWJsZS8yMzQ2Nzk3P3NlcT0zI3BhZ2Vfc2Nhbl90YWJfY29udGVudHMuCisvLworLy8gQkVUQUlO
KHgsIHAsIHEsIGJldGEpCisvLyAgeDogICAgIHRoZSB2YWx1ZSBvZiB0aGUgdXBwZXIgbGltaXQg
eC4KKy8vICBwOiAgICAgdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgcC4KKy8vICBxOiAgICAg
dGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgcS4KKy8vICBiZXRhOiAgdGhlIHZhbHVlIG9mIGxu
IEIocCwgcSkKKy8vCitkb3VibGUgQmV0YUluY29tcGxldGVJbXBsKGNvbnN0IGRvdWJsZSB4LCBj
b25zdCBkb3VibGUgcCwgY29uc3QgZG91YmxlIHEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGRvdWJsZSBiZXRhKSB7CisgIGlmIChwIDwgKHAgKyBxKSAqIHgpIHsKKyAgICAvLyBJ
bmNvbXBsZXRlIGJldGEgZnVuY3Rpb24gaXMgc3ltbWV0cmljYWwsIHNvIHJldHVybiB0aGUgY29t
cGxlbWVudC4KKyAgICByZXR1cm4gMS4gLSBCZXRhSW5jb21wbGV0ZUltcGwoMS4wIC0geCwgcSwg
cCwgYmV0YSk7CisgIH0KKworICBkb3VibGUgcHNxID0gcCArIHE7CisgIGNvbnN0IGRvdWJsZSBr
RXJyID0gMWUtMTQ7CisgIGNvbnN0IGRvdWJsZSB4YyA9IDEuIC0geDsKKyAgY29uc3QgZG91Ymxl
IHByZSA9CisgICAgICBzdGQ6OmV4cChwICogc3RkOjpsb2coeCkgKyAocSAtIDEuKSAqIHN0ZDo6
bG9nKHhjKSAtIGJldGEpIC8gcDsKKworICBkb3VibGUgdGVybSA9IDEuOworICBkb3VibGUgYWkg
PSAxLjsKKyAgZG91YmxlIHJlc3VsdCA9IDEuOworICBpbnQgbnMgPSBzdGF0aWNfY2FzdDxpbnQ+
KHEgKyB4YyAqIHBzcSk7CisKKyAgLy8gVXNlIHRoZSBzb3BlciByZWR1Y3Rpb24gZm9ydW1sYS4K
KyAgZG91YmxlIHJ4ID0gKG5zID09IDApID8geCA6IHggLyB4YzsKKyAgZG91YmxlIHRlbXAgPSBx
IC0gYWk7CisgIGZvciAoOzspIHsKKyAgICB0ZXJtID0gdGVybSAqIHRlbXAgKiByeCAvIChwICsg
YWkpOworICAgIHJlc3VsdCA9IHJlc3VsdCArIHRlcm07CisgICAgdGVtcCA9IHN0ZDo6ZmFicyh0
ZXJtKTsKKyAgICBpZiAodGVtcCA8IGtFcnIgJiYgdGVtcCA8IGtFcnIgKiByZXN1bHQpIHsKKyAg
ICAgIHJldHVybiByZXN1bHQgKiBwcmU7CisgICAgfQorICAgIGFpID0gYWkgKyAxLjsKKyAgICAt
LW5zOworICAgIGlmIChucyA+PSAwKSB7CisgICAgICB0ZW1wID0gcSAtIGFpOworICAgICAgaWYg
KG5zID09IDApIHsKKyAgICAgICAgcnggPSB4OworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICB0ZW1wID0gcHNxOworICAgICAgcHNxID0gcHNxICsgMS47CisgICAgfQorICB9CisKKyAgLy8g
Tk9URTogU2VlIGFsc28gVE9NUyBBbG9ncml0aG0gNzA4LgorICAvLyBodHRwOi8vd3d3Lm5ldGxp
Yi5vcmcvdG9tcy9pbmRleC5odG1sCisgIC8vCisgIC8vIE5PVEU6IFRoZSBOV1NDIGxpYnJhcnkg
YWxzbyBpbmNsdWRlcyBCUkFUSU8gLyBJU1VCWCAocDg3KQorICAvLyBodHRwczovL2FyY2hpdmUu
b3JnL2RldGFpbHMvRFRJQ19BREEyNjE1MTEvcGFnZS9uNzUKK30KKworLy8gRGlyZWN0IGltcGxl
bWVudGF0aW9uIG9mIEFTMTA5LCBYSU5CVEEocCwgcSwgYmV0YSwgYWxwaGEpCisvLyBodHRwczov
L3d3dy5qc3Rvci5vcmcvc3RhYmxlLzIzNDY3OTg/cmVhZC1ub3c9MSZzZXE9NCNwYWdlX3NjYW5f
dGFiX2NvbnRlbnRzCisvLyBodHRwczovL3d3dy5qc3Rvci5vcmcvc3RhYmxlLzIzNDY4ODc/c2Vx
PTEjcGFnZV9zY2FuX3RhYl9jb250ZW50cworLy8KKy8vIFhJTkJUQShwLCBxLCBiZXRhLCBhbGhw
YSkKKy8vICBwOiAgICAgdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgcC4KKy8vICBxOiAgICAg
dGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgcS4KKy8vICBiZXRhOiAgdGhlIHZhbHVlIG9mIGxu
IEIocCwgcSkKKy8vICBhbHBoYTogdGhlIHZhbHVlIG9mIHRoZSBsb3dlciB0YWlsIGFyZWEuCisv
LworZG91YmxlIEJldGFJbmNvbXBsZXRlSW52SW1wbChjb25zdCBkb3VibGUgcCwgY29uc3QgZG91
YmxlIHEsIGNvbnN0IGRvdWJsZSBiZXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBkb3VibGUgYWxwaGEpIHsKKyAgaWYgKGFscGhhIDwgMC41KSB7CisgICAgLy8gSW52ZXJz
ZSBJbmNvbXBsZXRlIGJldGEgZnVuY3Rpb24gaXMgc3ltbWV0cmljYWwsIHJldHVybiB0aGUgY29t
cGxlbWVudC4KKyAgICByZXR1cm4gMS4gLSBCZXRhSW5jb21wbGV0ZUludkltcGwocSwgcCwgYmV0
YSwgMS4gLSBhbHBoYSk7CisgIH0KKyAgY29uc3QgZG91YmxlIGtFcnIgPSAxZS0xNDsKKyAgZG91
YmxlIHZhbHVlID0ga0VycjsKKworICAvLyBDb21wdXRlIHRoZSBpbml0aWFsIGVzdGltYXRlLgor
ICB7CisgICAgZG91YmxlIHIgPSBzdGQ6OnNxcnQoLXN0ZDo6bG9nKGFscGhhICogYWxwaGEpKTsK
KyAgICBkb3VibGUgeSA9CisgICAgICAgIHIgLSBmbWEociwgMC4yNzA2MSwgMi4zMDc1MykgLyBm
bWEociwgZm1hKHIsIDAuMDQ0ODEsIDAuOTkyMjkpLCAxLjApOworICAgIGlmIChwID4gMS4gJiYg
cSA+IDEuKSB7CisgICAgICByID0gKHkgKiB5IC0gMy4pIC8gNi47CisgICAgICBkb3VibGUgcyA9
IDEuIC8gKHAgKyBwIC0gMS4pOworICAgICAgZG91YmxlIHQgPSAxLiAvIChxICsgcSAtIDEuKTsK
KyAgICAgIGRvdWJsZSBoID0gMi4gLyBzICsgdDsKKyAgICAgIGRvdWJsZSB3ID0KKyAgICAgICAg
ICB5ICogc3RkOjpzcXJ0KGggKyByKSAvIGggLSAodCAtIHMpICogKHIgKyA1LiAvIDYuIC0gdCAv
ICgzLiAqIGgpKTsKKyAgICAgIHZhbHVlID0gcCAvIChwICsgcSAqIHN0ZDo6ZXhwKHcgKyB3KSk7
CisgICAgfSBlbHNlIHsKKyAgICAgIHIgPSBxICsgcTsKKyAgICAgIGRvdWJsZSB0ID0gMS4wIC8g
KDkuICogcSk7CisgICAgICBkb3VibGUgdSA9IDEuMCAtIHQgKyB5ICogc3RkOjpzcXJ0KHQpOwor
ICAgICAgdCA9IHIgKiAodSAqIHUgKiB1KTsKKyAgICAgIGlmICh0IDw9IDApIHsKKyAgICAgICAg
dmFsdWUgPSAxLjAgLSBzdGQ6OmV4cCgoc3RkOjpsb2coKDEuMCAtIGFscGhhKSAqIHEpICsgYmV0
YSkgLyBxKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHQgPSAoNC4wICogcCArIHIgLSAyLjAp
IC8gdDsKKyAgICAgICAgaWYgKHQgPD0gMSkgeworICAgICAgICAgIHZhbHVlID0gc3RkOjpleHAo
KHN0ZDo6bG9nKGFscGhhICogcCkgKyBiZXRhKSAvIHApOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgIHZhbHVlID0gMS4wIC0gMi4wIC8gKHQgKyAxLjApOworICAgICAgICB9CisgICAgICB9
CisgICAgfQorICB9CisKKyAgLy8gU29sdmUgZm9yIHggdXNpbmcgYSBtb2RpZmllZCBuZXd0b24t
cmFwaHNvbiBtZXRob2QgdXNpbmcgdGhlIGZ1bmN0aW9uCisgIC8vIEJldGFJbmNvbXBsZXRlLgor
ICB7CisgICAgdmFsdWUgPSBzdGQ6Om1heCh2YWx1ZSwga0Vycik7CisgICAgdmFsdWUgPSBzdGQ6
Om1pbih2YWx1ZSwgMS4wIC0ga0Vycik7CisKKyAgICBjb25zdCBkb3VibGUgciA9IDEuMCAtIHA7
CisgICAgY29uc3QgZG91YmxlIHQgPSAxLjAgLSBxOworICAgIGRvdWJsZSB5OworICAgIGRvdWJs
ZSB5cHJldiA9IDA7CisgICAgZG91YmxlIHNxID0gMTsKKyAgICBkb3VibGUgcHJldiA9IDE7Cisg
ICAgZm9yICg7OykgeworICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDEuMCkgeworICAg
ICAgICAvLyBFcnJvciBjYXNlOyB2YWx1ZSB3ZW50IGluZmluaXRlLgorICAgICAgICByZXR1cm4g
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworICAgICAgfSBlbHNlIGlm
ICh2YWx1ZSA9PSAwIHx8IHZhbHVlID09IDEpIHsKKyAgICAgICAgeSA9IHZhbHVlOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgeSA9IEJldGFJbmNvbXBsZXRlSW1wbCh2YWx1ZSwgcCwgcSwgYmV0
YSk7CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh5KSkgeworICAgICAgICAgIHJldHVybiB5
OworICAgICAgICB9CisgICAgICB9CisgICAgICB5ID0gKHkgLSBhbHBoYSkgKgorICAgICAgICAg
IHN0ZDo6ZXhwKGJldGEgKyByICogc3RkOjpsb2codmFsdWUpICsgdCAqIHN0ZDo6bG9nKDEuMCAt
IHZhbHVlKSk7CisgICAgICBpZiAoeSAqIHlwcmV2IDw9IDApIHsKKyAgICAgICAgcHJldiA9IHN0
ZDo6bWF4KHNxLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpKTsKKyAgICAgIH0K
KyAgICAgIGRvdWJsZSBnID0gMS4wOworICAgICAgZm9yICg7OykgeworICAgICAgICBjb25zdCBk
b3VibGUgYWRqID0gZyAqIHk7CisgICAgICAgIGNvbnN0IGRvdWJsZSBhZGpfc3EgPSBhZGogKiBh
ZGo7CisgICAgICAgIGlmIChhZGpfc3EgPj0gcHJldikgeworICAgICAgICAgIGcgPSBnIC8gMy4w
OworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGRvdWJsZSB0
eCA9IHZhbHVlIC0gYWRqOworICAgICAgICBpZiAodHggPCAwIHx8IHR4ID4gMSkgeworICAgICAg
ICAgIGcgPSBnIC8gMy4wOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmIChwcmV2IDwga0VycikgeworICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoeSAqIHkgPCBrRXJyKSB7CisgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
ICAgICB9CisgICAgICAgIGlmICh0eCA9PSB2YWx1ZSkgeworICAgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHggPT0gMCB8fCB0eCA9PSAxKSB7CisgICAgICAg
ICAgZyA9IGcgLyAzLjA7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
dmFsdWUgPSB0eDsKKyAgICAgICAgeXByZXYgPSB5OworICAgICAgICBicmVhazsKKyAgICAgIH0K
KyAgICB9CisgIH0KKworICAvLyBOT1RFUzogU2VlIGFsc286IEFzeW1wdG90aWMgaW52ZXJzaW9u
IG9mIHRoZSBpbmNvbXBsZXRlIGJldGEgZnVuY3Rpb24uCisgIC8vIGh0dHBzOi8vY29yZS5hYy51
ay9kb3dubG9hZC9wZGYvODIxNDA3MjMucGRmCisgIC8vCisgIC8vIE5PVEU6IFNlZSB0aGUgQm9v
c3QgbGlicmFyeSBkb2N1bWVudGF0aW9uIGFzIHdlbGw6CisgIC8vIGh0dHBzOi8vd3d3LmJvb3N0
Lm9yZy9kb2MvbGlicy8xXzUyXzAvbGlicy9tYXRoL2RvYy9zZl9hbmRfZGlzdC9odG1sL21hdGhf
dG9vbGtpdC9zcGVjaWFsL3NmX2JldGEvaWJldGFfZnVuY3Rpb24uaHRtbAorfQorCit9ICAvLyBu
YW1lc3BhY2UKKworZG91YmxlIEJldGFJbmNvbXBsZXRlKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBk
b3VibGUgcCwgY29uc3QgZG91YmxlIHEpIHsKKyAgLy8gRXJyb3IgY2FzZXMuCisgIGlmIChwIDwg
MCB8fCBxIDwgMCB8fCB4IDwgMCB8fCB4ID4gMS4wKSB7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgfQorICBpZiAoeCA9PSAwIHx8IHggPT0g
MSkgeworICAgIHJldHVybiB4OworICB9CisgIC8vIGxuKEJldGEocCwgcSkpCisgIGRvdWJsZSBi
ZXRhID0gc3RkOjpsZ2FtbWEocCkgKyBzdGQ6OmxnYW1tYShxKSAtIHN0ZDo6bGdhbW1hKHAgKyBx
KTsKKyAgcmV0dXJuIEJldGFJbmNvbXBsZXRlSW1wbCh4LCBwLCBxLCBiZXRhKTsKK30KKworZG91
YmxlIEJldGFJbmNvbXBsZXRlSW52KGNvbnN0IGRvdWJsZSBwLCBjb25zdCBkb3VibGUgcSwgY29u
c3QgZG91YmxlIGFscGhhKSB7CisgIC8vIEVycm9yIGNhc2VzLgorICBpZiAocCA8IDAgfHwgcSA8
IDAgfHwgYWxwaGEgPCAwIHx8IGFscGhhID4gMS4wKSB7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgfQorICBpZiAoYWxwaGEgPT0gMCB8fCBh
bHBoYSA9PSAxKSB7CisgICAgcmV0dXJuIGFscGhhOworICB9CisgIC8vIGxuKEJldGEocCwgcSkp
CisgIGRvdWJsZSBiZXRhID0gc3RkOjpsZ2FtbWEocCkgKyBzdGQ6OmxnYW1tYShxKSAtIHN0ZDo6
bGdhbW1hKHAgKyBxKTsKKyAgcmV0dXJuIEJldGFJbmNvbXBsZXRlSW52SW1wbChwLCBxLCBiZXRh
LCBhbHBoYSk7Cit9CisKKy8vIEdpdmVuIGBudW1fdHJpYWxzYCB0cmlhbHMgZWFjaCB3aXRoIHBy
b2JhYmlsaXR5IGBwYCBvZiBzdWNjZXNzLCB0aGUKKy8vIHByb2JhYmlsaXR5IG9mIG5vIGZhaWx1
cmVzIGlzIGBwXmtgLiBUbyBlbnN1cmUgdGhlIHByb2JhYmlsaXR5IG9mIGEgZmFpbHVyZQorLy8g
aXMgbm8gbW9yZSB0aGFuIGBwX2ZhaWxgLCBpdCBtdXN0IGJlIHRoYXQgYHBeayA9PSAxIC0gcF9m
YWlsYC4gVGhpcyBmdW5jdGlvbgorLy8gY29tcHV0ZXMgYHBgIGZyb20gdGhhdCBlcXVhdGlvbi4K
K2RvdWJsZSBSZXF1aXJlZFN1Y2Nlc3NQcm9iYWJpbGl0eShjb25zdCBkb3VibGUgcF9mYWlsLCBj
b25zdCBpbnQgbnVtX3RyaWFscykgeworICBkb3VibGUgcCA9IHN0ZDo6ZXhwKHN0ZDo6bG9nKDEu
MCAtIHBfZmFpbCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KG51bV90cmlhbHMpKTsKKyAgQUJTTF9B
U1NFUlQocCA+IDApOworICByZXR1cm4gcDsKK30KKworZG91YmxlIFpTY29yZShkb3VibGUgZXhw
ZWN0ZWRfbWVhbiwgY29uc3QgRGlzdHJpYnV0aW9uTW9tZW50cyYgbW9tZW50cykgeworICByZXR1
cm4gKG1vbWVudHMubWVhbiAtIGV4cGVjdGVkX21lYW4pIC8KKyAgICAgICAgIChzdGQ6OnNxcnQo
bW9tZW50cy52YXJpYW5jZSkgLworICAgICAgICAgIHN0ZDo6c3FydChzdGF0aWNfY2FzdDxkb3Vi
bGU+KG1vbWVudHMubikpKTsKK30KKworZG91YmxlIE1heEVycm9yVG9sZXJhbmNlKGRvdWJsZSBh
Y2NlcHRhbmNlX3Byb2JhYmlsaXR5KSB7CisgIGRvdWJsZSBvbmVfc2lkZWRfcHZhbHVlID0gMC41
ICogKDEuMCAtIGFjY2VwdGFuY2VfcHJvYmFiaWxpdHkpOworICBjb25zdCBkb3VibGUgbWF4X2Vy
ciA9IEludmVyc2VOb3JtYWxTdXJ2aXZhbChvbmVfc2lkZWRfcHZhbHVlKTsKKyAgQUJTTF9BU1NF
UlQobWF4X2VyciA+IDApOworICByZXR1cm4gbWF4X2VycjsKK30KKworfSAgLy8gbmFtZXNwYWNl
IHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
aW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi5iNWJhNDlmYTdlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsLmgKQEAgLTAsMCArMSwxMTEgQEAK
Ky8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xf
UkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTl9URVNUX1VUSUxfSF8KKyNkZWZpbmUgQUJTTF9S
QU5ET01fSU5URVJOQUxfRElTVFJJQlVUSU9OX1RFU1RfVVRJTF9IXworCisjaW5jbHVkZSA8Y3N0
ZGRlZj4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRl
ICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL3NwYW4u
aCIKKworLy8gTk9URTogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIHRlc3Qgb25seSwg
YW5kIGFyZSBzaG91bGQgbm90IGJlIHVzZWQgaW4KKy8vIG5vbi10ZXN0IGNvZGUuCisKK25hbWVz
cGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBodHRwOi8vd2Vi
c3BhY2Uuc2hpcC5lZHUvcGdtYXJyL0dlbzQ0MS9MZWN0dXJlcy9MZWMlMjA1JTIwLSUyME5vcm1h
bGl0eSUyMFRlc3RpbmcucGRmCisKKy8vIENvbXB1dGUgdGhlIDFzdCB0byA0dGggc3RhbmRhcmQg
bW9tZW50czoKKy8vIG1lYW4sIHZhcmlhbmNlLCBza2V3bmVzcywgYW5kIGt1cnRvc2lzLgorLy8g
aHR0cDovL3d3dy5pdGwubmlzdC5nb3YvZGl2ODk4L2hhbmRib29rL2VkYS9zZWN0aW9uMy9lZGEz
NWIuaHRtCitzdHJ1Y3QgRGlzdHJpYnV0aW9uTW9tZW50cyB7CisgIHNpemVfdCBuID0gMDsKKyAg
ZG91YmxlIG1lYW4gPSAwLjA7CisgIGRvdWJsZSB2YXJpYW5jZSA9IDAuMDsKKyAgZG91YmxlIHNr
ZXduZXNzID0gMC4wOworICBkb3VibGUga3VydG9zaXMgPSAwLjA7Cit9OworRGlzdHJpYnV0aW9u
TW9tZW50cyBDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cygKKyAgICBhYnNsOjpTcGFuPGNvbnN0
IGRvdWJsZT4gZGF0YV9wb2ludHMpOworCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpv
c3RyZWFtJiBvcywgY29uc3QgRGlzdHJpYnV0aW9uTW9tZW50cyYgbW9tZW50cyk7CisKKy8vIENv
bXB1dGVzIHRoZSBaLXNjb3JlIGZvciBhIHNldCBvZiBkYXRhIHdpdGggdGhlIGdpdmVuIGRpc3Ry
aWJ1dGlvbiBtb21lbnRzCisvLyBjb21wYXJlZCBhZ2FpbnN0IGBleHBlY3RlZF9tZWFuYC4KK2Rv
dWJsZSBaU2NvcmUoZG91YmxlIGV4cGVjdGVkX21lYW4sIGNvbnN0IERpc3RyaWJ1dGlvbk1vbWVu
dHMmIG1vbWVudHMpOworCisvLyBSZXR1cm5zIHRoZSBwcm9iYWJpbGl0eSBvZiBzdWNjZXNzIHJl
cXVpcmVkIGZvciBhIHNpbmdsZSB0cmlhbCB0byBlbnN1cmUgdGhhdAorLy8gYWZ0ZXIgYG51bV90
cmlhbHNgIHRyaWFscywgdGhlIHByb2JhYmlsaXR5IG9mIGF0IGxlYXN0IG9uZSBmYWlsdXJlIGlz
IG5vIG1vcmUKKy8vIHRoYW4gYHBfZmFpbGAuCitkb3VibGUgUmVxdWlyZWRTdWNjZXNzUHJvYmFi
aWxpdHkoZG91YmxlIHBfZmFpbCwgaW50IG51bV90cmlhbHMpOworCisvLyBDb21wdXRlcyB0aGUg
bWF4aW11bSBkaXN0YW5jZSBmcm9tIHRoZSBtZWFuIHRvbGVyYWJsZSwgZm9yIFotVGVzdHMgdGhh
dCBhcmUKKy8vIGV4cGVjdGVkIHRvIHBhc3Mgd2l0aCBgYWNjZXB0YW5jZV9wcm9iYWJpbGl0eWAu
IFdpbGwgdGVybWluYXRlIGlmIHRoZQorLy8gcmVzdWx0aW5nIHRvbGVyYW5jZSBpcyB6ZXJvIChk
dWUgdG8gcGFzc2luZyBpbiAwLjAgZm9yCisvLyBgYWNjZXB0YW5jZV9wcm9iYWJpbGl0eWAgb3Ig
cm91bmRpbmcgZXJyb3JzKS4KKy8vCisvLyBGb3IgZXhhbXBsZSwKKy8vIE1heEVycm9yVG9sZXJh
bmNlKDAuMDAxKSA9IDAuMAorLy8gTWF4RXJyb3JUb2xlcmFuY2UoMC41KSA9IH4wLjQ3CisvLyBN
YXhFcnJvclRvbGVyYW5jZSgxLjApID0gaW5mCitkb3VibGUgTWF4RXJyb3JUb2xlcmFuY2UoZG91
YmxlIGFjY2VwdGFuY2VfcHJvYmFiaWxpdHkpOworCisvLyBBcHByb3hpbWF0aW9uIHRvIGludmVy
c2Ugb2YgdGhlIEVycm9yIEZ1bmN0aW9uIGluIGRvdWJsZSBwcmVjaXNpb24uCisvLyAoaHR0cDov
L3Blb3BsZS5tYXRocy5veC5hYy51ay9naWxlc20vZmlsZXMvZ2Vtc19lcmZpbnYucGRmKQorZG91
YmxlIGVyZmludihkb3VibGUgeCk7CisKKy8vIEJldGEocCwgcSkgPSBHYW1tYShwKSAqIEdhbW1h
KHEpIC8gR2FtbWEocCtxKQorZG91YmxlIGJldGEoZG91YmxlIHAsIGRvdWJsZSBxKTsKKworLy8g
VGhlIGludmVyc2Ugb2YgdGhlIG5vcm1hbCBzdXJ2aXZhbCBmdW5jdGlvbi4KK2RvdWJsZSBJbnZl
cnNlTm9ybWFsU3Vydml2YWwoZG91YmxlIHgpOworCisvLyBSZXR1cm5zIHdoZXRoZXIgYWN0dWFs
IGlzICJuZWFyIiBleHBlY3RlZCwgYmFzZWQgb24gdGhlIGJvdW5kLgorYm9vbCBOZWFyKGFic2w6
OnN0cmluZ192aWV3IG1zZywgZG91YmxlIGFjdHVhbCwgZG91YmxlIGV4cGVjdGVkLCBkb3VibGUg
Ym91bmQpOworCisvLyBJbXBsZW1lbnRzIHRoZSBpbmNvbXBsZXRlIHJlZ3VsYXJpemVkIGJldGEg
ZnVuY3Rpb24sIEFTNjMsIEJFVEFJTi4KKy8vICAgIGh0dHBzOi8vd3d3LmpzdG9yLm9yZy9zdGFi
bGUvMjM0Njc5NworLy8KKy8vIEJldGFJbmNvbXBsZXRlKHgsIHAsIHEpLCB3aGVyZQorLy8gICBg
eGAgaXMgdGhlIHZhbHVlIG9mIHRoZSB1cHBlciBsaW1pdAorLy8gICBgcGAgaXMgYmV0YSBwYXJh
bWV0ZXIgcCwgYHFgIGlzIGJldGEgcGFyYW1ldGVyIHEuCisvLworLy8gTk9URTogVGhpcyBpcyBh
IHRlc3Qtb25seSBmdW5jdGlvbiB3aGljaCBpcyBvbmx5IGFjY3VyYXRlIHRvIHdpdGhpbiwgYXQg
bW9zdCwKKy8vIDFlLTEzIG9mIHRoZSBhY3R1YWwgdmFsdWUuCisvLworZG91YmxlIEJldGFJbmNv
bXBsZXRlKGRvdWJsZSB4LCBkb3VibGUgcCwgZG91YmxlIHEpOworCisvLyBJbXBsZW1lbnRzIHRo
ZSBpbnZlcnNlIG9mIHRoZSBpbmNvbXBsZXRlIHJlZ3VsYXJpemVkIGJldGEgZnVuY3Rpb24sIEFT
MTA5LAorLy8gWElOQlRBLgorLy8gICBodHRwczovL3d3dy5qc3Rvci5vcmcvc3RhYmxlLzIzNDY3
OTgKKy8vICAgaHR0cHM6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS8yMzQ2ODg3CisvLworLy8gQmV0
YUluY29tcGxldGVJbnYocCwgcSwgYmV0YSwgYWxocGEpCisvLyAgIGBwYCBpcyBiZXRhIHBhcmFt
ZXRlciBwLCBgcWAgaXMgYmV0YSBwYXJhbWV0ZXIgcS4KKy8vICAgYGFscGhhYCBpcyB0aGUgdmFs
dWUgb2YgdGhlIGxvd2VyIHRhaWwgYXJlYS4KKy8vCisvLyBOT1RFOiBUaGlzIGlzIGEgdGVzdC1v
bmx5IGZ1bmN0aW9uIGFuZCwgd2hlbiBzdWNjZXNzZnVsLCBpcyBvbmx5IGFjY3VyYXRlIHRvCisv
LyB3aXRoaW4gfjFlLTYgb2YgdGhlIGFjdHVhbCB2YWx1ZTsgdGhlcmUgYXJlIHNvbWUgY2FzZXMg
d2hlcmUgaXQgZGl2ZXJnZXMgZnJvbQorLy8gdGhlIGFjdHVhbCB2YWx1ZSBieSBtdWNoIG1vcmUg
dGhhbiB0aGF0LiAgVGhlIGZ1bmN0aW9uIHVzZXMgTmV3dG9uJ3MgbWV0aG9kLAorLy8gYW5kIHRo
dXMgdGhlIHJ1bnRpbWUgaXMgaGlnaGx5IHZhcmlhYmxlLgorZG91YmxlIEJldGFJbmNvbXBsZXRl
SW52KGRvdWJsZSBwLCBkb3VibGUgcSwgZG91YmxlIGFscGhhKTsKKworfSAgLy8gbmFtZXNwYWNl
IHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9ESVNUUklCVVRJT05fVEVTVF9VVElMX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbF90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWxfdGVzdC5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzQ5ZDQ0ZmI0NzkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbF90ZXN0
LmNjCkBAIC0wLDAgKzEsMTkzIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhv
cnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0
X3V0aWwuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK1RF
U1QoVGVzdFV0aWwsIEludmVyc2VFcmYpIHsKKyAgY29uc3Qgc3RydWN0IHsKKyAgICBjb25zdCBk
b3VibGUgejsKKyAgICBjb25zdCBkb3VibGUgdmFsdWU7CisgIH0ga0VyZkludlRhYmxlW10gPSB7
CisgICAgICB7MC4wMDAwMDAxLCA4Ljg2MjI3ZS04fSwKKyAgICAgIHswLjAwMDAxLCA4Ljg2MjI3
ZS02fSwKKyAgICAgIHswLjUsIDAuNDc2OTM2Mjc2MjA0NH0sCisgICAgICB7MC42LCAwLjU5NTEx
NjA4MTQ0OTl9LAorICAgICAgezAuOTk5OTksIDMuMTIzNDEzMjc0M30sCisgICAgICB7MC45OTk5
OTk5LCAzLjc2NjU2MjU4MTZ9LAorICAgICAgezAuOTk5OTk5OTQ0LCAzLjg0MDM4NTA2OTA1NjY5
ODV9LCAgLy8gPSBsb2coKDEteCkgKiAoMSt4KSkgPX4gMTYuMDA0CisgICAgICB7MC45OTk5OTk5
OTksIDQuMzIwMDA1Mzg0OTEzNDQ1Mn0sCisgIH07CisKKyAgZm9yIChjb25zdCBhdXRvJiBkYXRh
IDoga0VyZkludlRhYmxlKSB7CisgICAgYXV0byB2YWx1ZSA9IGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6ZXJmaW52KGRhdGEueik7CisKKyAgICAvLyBMb2cgdXNpbmcgdGhlIFdvbGZyYW0tYWxwaGEg
ZnVuY3Rpb24gbmFtZSAmIHBhcmFtZXRlcnMuCisgICAgRVhQRUNUX05FQVIodmFsdWUsIGRhdGEu
dmFsdWUsIDFlLTgpCisgICAgICAgIDw8ICIgSW52ZXJzZUVyZlsiIDw8IGRhdGEueiA8PCAiXSAg
KGV4cGVjdGVkPSIgPDwgZGF0YS52YWx1ZSA8PCAiKSAgLT4gIgorICAgICAgICA8PCB2YWx1ZTsK
KyAgfQorfQorCitjb25zdCBzdHJ1Y3QgeworICBjb25zdCBkb3VibGUgcDsKKyAgY29uc3QgZG91
YmxlIHE7CisgIGNvbnN0IGRvdWJsZSB4OworICBjb25zdCBkb3VibGUgYWxwaGE7Cit9IGtCZXRh
VGFibGVbXSA9IHsKKyAgICB7MC41LCAwLjUsIDAuMDEsIDAuMDYzNzY4NTYwODU4NTE5ODV9LAor
ICAgIHswLjUsIDAuNSwgMC4xLCAwLjIwNDgzMjc2NDY5OTEzMzV9LAorICAgIHswLjUsIDAuNSwg
MSwgMX0sCisgICAgezEsIDAuNSwgMCwgMH0sCisgICAgezEsIDAuNSwgMC4wMSwgMC4wMDUwMTI1
NjI4OTMzODAwNDV9LAorICAgIHsxLCAwLjUsIDAuMSwgMC4wNTEzMTY3MDE5NDk0ODYyfSwKKyAg
ICB7MSwgMC41LCAwLjUsIDAuMjkyODkzMjE4ODEzNDUyNX0sCisgICAgezEsIDEsIDAuNSwgMC41
fSwKKyAgICB7MiwgMiwgMC4xLCAwLjAyOH0sCisgICAgezIsIDIsIDAuMiwgMC4xMDR9LAorICAg
IHsyLCAyLCAwLjMsIDAuMjE2fSwKKyAgICB7MiwgMiwgMC40LCAwLjM1Mn0sCisgICAgezIsIDIs
IDAuNSwgMC41fSwKKyAgICB7MiwgMiwgMC42LCAwLjY0OH0sCisgICAgezIsIDIsIDAuNywgMC43
ODR9LAorICAgIHsyLCAyLCAwLjgsIDAuODk2fSwKKyAgICB7MiwgMiwgMC45LCAwLjk3Mn0sCisg
ICAgezUuNSwgNSwgMC41LCAwLjQzNjE5MDg4NTA1NTk3Nzd9LAorICAgIHsxMCwgMC41LCAwLjks
IDAuMTUxNjQwOTA5NjM0Njk3OX0sCisgICAgezEwLCA1LCAwLjUsIDAuMDg5NzgyNzE0ODQzNzV9
LAorICAgIHsxMCwgNSwgMSwgMX0sCisgICAgezEwLCAxMCwgMC41LCAwLjV9LAorICAgIHsyMCwg
NSwgMC44LCAwLjQ1OTg3NzMyOTc1NzU3OTF9LAorICAgIHsyMCwgMTAsIDAuNiwgMC4yMTQ2ODE2
MTAyMzcxNzM5fSwKKyAgICB7MjAsIDEwLCAwLjgsIDAuOTUwNzM2NDgyNjk1Nzg3NX0sCisgICAg
ezIwLCAyMCwgMC41LCAwLjV9LAorICAgIHsyMCwgMjAsIDAuNiwgMC44OTc5NDEzNjg3MTA1OTE4
fSwKKyAgICB7MzAsIDEwLCAwLjcsIDAuMjI0MTI5NzQ5MTgwODM2Nn0sCisgICAgezMwLCAxMCwg
MC44LCAwLjc1ODY0MDU0ODcxOTIwODZ9LAorICAgIHs0MCwgMjAsIDAuNywgMC43MDAxNzgzMjQ3
NDc3MDY5fSwKKyAgICB7MSwgMC41LCAwLjEsIDAuMDUxMzE2NzAxOTQ5NDg2Mn0sCisgICAgezEs
IDAuNSwgMC4yLCAwLjEwNTU3MjgwOTAwMDA4NDF9LAorICAgIHsxLCAwLjUsIDAuMywgMC4xNjMz
Mzk5NzM0NjU5MjQ1fSwKKyAgICB7MSwgMC41LCAwLjQsIDAuMjI1NDAzMzMwNzU4NTE2Nn0sCisg
ICAgezEsIDIsIDAuMiwgMC4zNn0sCisgICAgezEsIDMsIDAuMiwgMC40ODh9LAorICAgIHsxLCA0
LCAwLjIsIDAuNTkwNH0sCisgICAgezEsIDUsIDAuMiwgMC42NzIzMn0sCisgICAgezIsIDIsIDAu
MywgMC4yMTZ9LAorICAgIHszLCAyLCAwLjMsIDAuMDgzN30sCisgICAgezQsIDIsIDAuMywgMC4w
MzA3OH0sCisgICAgezUsIDIsIDAuMywgMC4wMTA5MzV9LAorCisgICAgLy8gVGhlc2UgdmFsdWVz
IHRlc3Qgc21hbGwgJiBsYXJnZSBwb2ludHMgYWxvbmcgdGhlIHJhbmdlIG9mIHRoZSBCZXRhCisg
ICAgLy8gZnVuY3Rpb24uCisgICAgLy8KKyAgICAvLyBXaGVuIHNlbGVjdGluZyB0ZXN0IHBvaW50
cywgcmVtZW1iZXIgdGhhdCBpZiBCZXRhSW5jb21wbGV0ZSh4LCBwLCBxKQorICAgIC8vIHJldHVy
bnMgdGhlIHNhbWUgdmFsdWUgdG8gd2l0aGluIHRoZSBsaW1pdHMgb2YgcHJlY2lzaW9uIG92ZXIg
YSBsYXJnZQorICAgIC8vIGRvbWFpbiBvZiB0aGUgaW5wdXQsIHgsIHRoZW4gQmV0YUluY29tcGxl
dGVJbnYoYWxwaGEsIHAsIHEpIG1heSByZXR1cm4gYW4KKyAgICAvLyBlc3NlbnRpYWxseSBhcmJp
dHJhcnkgdmFsdWUgd2hlcmUgQmV0YUluY29tcGxldGUoeCwgcCwgcSkgPX4gYWxwaGEuCisKKyAg
ICAvLyBCZXRhUmVndWxhcml6ZWRbeCwgMC4wMDAwMSwgMC4wMDAwMV0sCisgICAgLy8gRm9yIHgg
aW4ge34wLjAwMSAuLi4gfjAuOTk5fSwgPT4gfjAuNQorICAgIHsxZS01LCAxZS01LCAxZS01LCAw
LjQ5OTk0MjQzODgxODQ2MzgzMTF9LAorICAgIHsxZS01LCAxZS01LCAoMS4wIC0gMWUtOCksIDAu
NTAwMDkyMDk0ODM4OTIzMjk2NH0sCisKKyAgICAvLyBCZXRhUmVndWxhcml6ZWRbeCwgMC4wMDAw
MSwgMTAwMDBdLgorICAgIC8vIEZvciB4IGluIHt+ZXBzaWxvbiAuLi4gMS4wfSwgPT4gfjEKKyAg
ICB7MWUtNSwgMWU1LCAxZS02LCAwLjk5OTk4MTc3MDgxMzAwNjY5MzZ9LAorICAgIHsxZS01LCAx
ZTUsICgxLjAgLSAxZS03KSwgMS4wfSwKKworICAgIC8vIEJldGFSZWd1bGFyaXplZFt4LCAxMDAw
MCwgMC4wMDAwMV0uCisgICAgLy8gRm9yIHggaW4gezAgLi4gMS1lcHNpbG9ufSwgPT4gfjAKKyAg
ICB7MWU1LCAxZS01LCAxZS02LCAwfSwKKyAgICB7MWU1LCAxZS01LCAoMS4wIC0gMWUtNiksIDEu
ODIyOTE4Njk5MzMwNjM2OWUtNX0sCit9OworCitURVNUKEJldGFUZXN0LCBCZXRhSW5jb21wbGV0
ZSkgeworICBmb3IgKGNvbnN0IGF1dG8mIGRhdGEgOiBrQmV0YVRhYmxlKSB7CisgICAgYXV0byB2
YWx1ZSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6QmV0YUluY29tcGxldGUoZGF0YS54LCBkYXRh
LnAsIGRhdGEucSk7CisKKyAgICAvLyBMb2cgdXNpbmcgdGhlIFdvbGZyYW0tYWxwaGEgZnVuY3Rp
b24gbmFtZSAmIHBhcmFtZXRlcnMuCisgICAgRVhQRUNUX05FQVIodmFsdWUsIGRhdGEuYWxwaGEs
IDFlLTEyKQorICAgICAgICA8PCAiIEJldGFSZWd1bGFyaXplZFsiIDw8IGRhdGEueCA8PCAiLCAi
IDw8IGRhdGEucCA8PCAiLCAiIDw8IGRhdGEucQorICAgICAgICA8PCAiXSAgKGV4cGVjdGVkPSIg
PDwgZGF0YS5hbHBoYSA8PCAiKSAgLT4gIiA8PCB2YWx1ZTsKKyAgfQorfQorCitURVNUKEJldGFU
ZXN0LCBCZXRhSW5jb21wbGV0ZUludikgeworICBmb3IgKGNvbnN0IGF1dG8mIGRhdGEgOiBrQmV0
YVRhYmxlKSB7CisgICAgYXV0byB2YWx1ZSA9CisgICAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6QmV0YUluY29tcGxldGVJbnYoZGF0YS5wLCBkYXRhLnEsIGRhdGEuYWxwaGEpOworCisgICAg
Ly8gTG9nIHVzaW5nIHRoZSBXb2xmcmFtLWFscGhhIGZ1bmN0aW9uIG5hbWUgJiBwYXJhbWV0ZXJz
LgorICAgIEVYUEVDVF9ORUFSKHZhbHVlLCBkYXRhLngsIDFlLTYpCisgICAgICAgIDw8ICIgSW52
ZXJzZUJldGFSZWd1bGFyaXplZFsiIDw8IGRhdGEuYWxwaGEgPDwgIiwgIiA8PCBkYXRhLnAgPDwg
IiwgIgorICAgICAgICA8PCBkYXRhLnEgPDwgIl0gIChleHBlY3RlZD0iIDw8IGRhdGEueCA8PCAi
KSAgLT4gIiA8PCB2YWx1ZTsKKyAgfQorfQorCitURVNUKE1heEVycm9yVG9sZXJhbmNlLCBNYXhF
cnJvclRvbGVyYW5jZSkgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+
PiBjYXNlcyA9IHsKKyAgICAgIHswLjAwMDAwMDEsIDguODYyMjdlLTggKiAxLjQxNDIxMzU2MjM3
fSwKKyAgICAgIHswLjAwMDAxLCA4Ljg2MjI3ZS02ICogMS40MTQyMTM1NjIzN30sCisgICAgICB7
MC41LCAwLjQ3NjkzNjI3NjIwNDQgKiAxLjQxNDIxMzU2MjM3fSwKKyAgICAgIHswLjYsIDAuNTk1
MTE2MDgxNDQ5OSAqIDEuNDE0MjEzNTYyMzd9LAorICAgICAgezAuOTk5OTksIDMuMTIzNDEzMjc0
MyAqIDEuNDE0MjEzNTYyMzd9LAorICAgICAgezAuOTk5OTk5OSwgMy43NjY1NjI1ODE2ICogMS40
MTQyMTM1NjIzN30sCisgICAgICB7MC45OTk5OTk5NDQsIDMuODQwMzg1MDY5MDU2Njk4NSAqIDEu
NDE0MjEzNTYyMzd9LAorICAgICAgezAuOTk5OTk5OTk5LCA0LjMyMDAwNTM4NDkxMzQ0NTIgKiAx
LjQxNDIxMzU2MjM3fX07CisgIGZvciAoYXV0byBlbnRyeSA6IGNhc2VzKSB7CisgICAgRVhQRUNU
X05FQVIoYWJzbDo6cmFuZG9tX2ludGVybmFsOjpNYXhFcnJvclRvbGVyYW5jZShlbnRyeS5maXJz
dCksCisgICAgICAgICAgICAgICAgZW50cnkuc2Vjb25kLCAxZS04KTsKKyAgfQorfQorCitURVNU
KFpTY29yZSwgV2l0aFNhbWVNZWFuKSB7CisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6RGlzdHJp
YnV0aW9uTW9tZW50cyBtOworICBtLm4gPSAxMDA7CisgIG0ubWVhbiA9IDU7CisgIG0udmFyaWFu
Y2UgPSAxOworICBFWFBFQ1RfTkVBUihhYnNsOjpyYW5kb21faW50ZXJuYWw6OlpTY29yZSg1LCBt
KSwgMCwgMWUtMTIpOworCisgIG0ubiA9IDE7CisgIG0ubWVhbiA9IDA7CisgIG0udmFyaWFuY2Ug
PSAxOworICBFWFBFQ1RfTkVBUihhYnNsOjpyYW5kb21faW50ZXJuYWw6OlpTY29yZSgwLCBtKSwg
MCwgMWUtMTIpOworCisgIG0ubiA9IDEwMDAwOworICBtLm1lYW4gPSAtNTsKKyAgbS52YXJpYW5j
ZSA9IDEwMDsKKyAgRVhQRUNUX05FQVIoYWJzbDo6cmFuZG9tX2ludGVybmFsOjpaU2NvcmUoLTUs
IG0pLCAwLCAxZS0xMik7Cit9CisKK1RFU1QoWlNjb3JlLCBEaWZmZXJlbnRNZWFuKSB7CisgIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9uTW9tZW50cyBtOworICBtLm4gPSAxMDA7
CisgIG0ubWVhbiA9IDU7CisgIG0udmFyaWFuY2UgPSAxOworICBFWFBFQ1RfTkVBUihhYnNsOjpy
YW5kb21faW50ZXJuYWw6OlpTY29yZSg0LCBtKSwgMTAsIDFlLTEyKTsKKworICBtLm4gPSAxOwor
ICBtLm1lYW4gPSAwOworICBtLnZhcmlhbmNlID0gMTsKKyAgRVhQRUNUX05FQVIoYWJzbDo6cmFu
ZG9tX2ludGVybmFsOjpaU2NvcmUoLTEsIG0pLCAxLCAxZS0xMik7CisKKyAgbS5uID0gMTAwMDA7
CisgIG0ubWVhbiA9IC01OworICBtLnZhcmlhbmNlID0gMTAwOworICBFWFBFQ1RfTkVBUihhYnNs
OjpyYW5kb21faW50ZXJuYWw6OlpTY29yZSgtNCwgbSksIC0xMCwgMWUtMTIpOworfQorfSAgLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9u
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbnMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzRkYjNiMzI2ZjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9ucy5oCkBAIC0wLDAgKzEsODIgQEAK
Ky8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xf
UkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTlNfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5U
RVJOQUxfRElTVFJJQlVUSU9OU19IXworCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNs
dWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRl
cm5hbC9kaXN0cmlidXRpb25fY2FsbGVyLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJu
YWwvdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvdW5pZm9ybV9oZWxw
ZXIuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRD4KK3N0cnVjdCBEaXN0cmlidXRpb25Gb3JtYXRUcmFpdHM7CisK
Ky8vIFVuaWZvcm1JbXBsIGltcGxlbWVudHMgdGhlIGNvcmUgbG9naWMgb2YgdGhlIFVuaWZvcm08
VD4gY2FsbCwgd2hpY2ggaXMgdG8KKy8vIHNlbGVjdCB0aGUgY29ycmVjdCBkaXN0cmlidXRpb24g
dHlwZSwgY29tcHV0ZSB0aGUgYm91bmRzIGJhc2VkIG9uIHRoZQorLy8gaW50ZXJ2YWwgdGFnLCBh
bmQgdGhlbiBnZW5lcmF0ZSBhIHZhbHVlLgordGVtcGxhdGUgPHR5cGVuYW1lIE51bVR5cGUsIHR5
cGVuYW1lIFRhZ1R5cGUsIHR5cGVuYW1lIFVSQkc+CitOdW1UeXBlIFVuaWZvcm1JbXBsKFRhZ1R5
cGUgdGFnLAorICAgICAgICAgICAgICAgICAgICBVUkJHJiB1cmJnLCAgLy8gTk9MSU5UKHJ1bnRp
bWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAgTnVtVHlwZSBsbywgTnVtVHlwZSBo
aSkgeworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgc3RkOjppc19hcml0aG1ldGljPE51bVR5cGU+
Ojp2YWx1ZSwKKyAgICAgICJhYnNsOjpVbmlmb3JtPFQ+KCkgbXVzdCB1c2UgYW4gaW50ZWdlciBv
ciByZWFsIHBhcmFtZXRlciB0eXBlLiIpOworCisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0KKyAg
ICAgIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19pbnRlZ3JhbDxOdW1UeXBlPjo6
dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnVuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbjxOdW1UeXBlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxOdW1UeXBlPj46OnR5cGU7CisgIHVzaW5n
IGZvcm1hdF90ID0gcmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8ZGlz
dHJpYnV0aW9uX3Q+OworCisgIGF1dG8gYSA9IHJhbmRvbV9pbnRlcm5hbDo6dW5pZm9ybV9sb3dl
cl9ib3VuZDxOdW1UeXBlPih0YWcsIGxvLCBoaSk7CisgIGF1dG8gYiA9IHJhbmRvbV9pbnRlcm5h
bDo6dW5pZm9ybV91cHBlcl9ib3VuZDxOdW1UeXBlPih0YWcsIGxvLCBoaSk7CisgIC8vIFRPRE8o
bGFyKTogaXQgZG9lc24ndCBtYWtlIGEgbG90IG9mIHNlbnNlIHRvIGFzayBmb3IgYSByYW5kb20g
bnVtYmVyIGluIGFuCisgIC8vIGVtcHR5IHJhbmdlLiAgUmlnaHQgbm93IHdlIGp1c3QgcmV0dXJu
IGEgYm91bmRhcnktLWV2ZW4gdGhvdWdoIHRoYXQKKyAgLy8gYm91bmRhcnkgaXMgbm90IGFuIGFj
Y2VwdGFibGUgdmFsdWUhICBJcyB0aGVyZSBzb21ldGhpbmcgYmV0dGVyIHdlIGNhbiBkbworICAv
LyBoZXJlPworCisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsKKyAgaWYgKGEg
PiBiKSByZXR1cm4gYTsKKyAgcmV0dXJuIERpc3RyaWJ1dGlvbkNhbGxlcjxnZW5fdD46OnRlbXBs
YXRlIENhbGw8ZGlzdHJpYnV0aW9uX3QsIGZvcm1hdF90PigKKyAgICAgICZ1cmJnLCBhLCBiKTsK
K30KKworLy8gSW4gdGhlIGFic2VuY2Ugb2YgYW4gZXhwbGljaXRseSBwcm92aWRlZCByZXR1cm4t
dHlwZSwgdGhlIHRlbXBsYXRlCisvLyAidW5pZm9ybV9pbmZlcnJlZF9yZXR1cm5fdDxBLCBCPiIg
aXMgdXNlZCB0byBkZXJpdmUgYSBzdWl0YWJsZSB0eXBlLCBiYXNlZCBvbgorLy8gdGhlIGRhdGEt
dHlwZXMgb2YgdGhlIGVuZHBvaW50LWFyZ3VtZW50cyB7QSBsbywgQiBoaX0uCisvLworLy8gR2l2
ZW4gZW5kcG9pbnRzIHtBIGxvLCBCIGhpfSwgb25lIG9mIHtBLCBCfSB3aWxsIGJlIGNob3NlbiBh
cyB0aGUKKy8vIHJldHVybi10eXBlLCBpZiBvbmUgdHlwZSBjYW4gYmUgaW1wbGljaXRseSBjb252
ZXJ0ZWQgaW50byB0aGUgb3RoZXIsIGluIGEKKy8vIGxvc3NsZXNzIHdheS4gVGhlIHRlbXBsYXRl
ICJpc193aWRlbmluZ19jb252ZXJ0aWJsZSIgaW1wbGVtZW50cyB0aGUKKy8vIGNvbXBpbGUtdGlt
ZSBsb2dpYyBmb3IgZGVjaWRpbmcgaWYgc3VjaCBhIGNvbnZlcnNpb24gaXMgcG9zc2libGUuCisv
LworLy8gSWYgbm8gc3VjaCBjb252ZXJzaW9uIGJldHdlZW4ge0EsIEJ9IGV4aXN0cywgdGhlbiB0
aGUgb3ZlcmxvYWQgZm9yCisvLyBhYnNsOjpVbmlmb3JtKCkgd2lsbCBiZSBkaXNjYXJkZWQsIGFu
ZCB0aGUgY2FsbCB3aWxsIGJlIGlsbC1mb3JtZWQuCisvLyBSZXR1cm4tdHlwZSBmb3IgYWJzbDo6
VW5pZm9ybSgpIHdoZW4gdGhlIHJldHVybi10eXBlIGlzIGluZmVycmVkLgordGVtcGxhdGUgPHR5
cGVuYW1lIEEsIHR5cGVuYW1lIEI+Cit1c2luZyB1bmlmb3JtX2luZmVycmVkX3JldHVybl90ID0K
KyAgICBhYnNsOjplbmFibGVfaWZfdDxhYnNsOjpkaXNqdW5jdGlvbjxpc193aWRlbmluZ19jb252
ZXJ0aWJsZTxBLCBCPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
c193aWRlbmluZ19jb252ZXJ0aWJsZTxCLCBBPj46OnZhbHVlLAorICAgICAgICAgICAgICAgICAg
ICAgIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8CisgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzX3dpZGVuaW5nX2NvbnZlcnRpYmxlPEEsIEI+Ojp2YWx1ZSwgQiwgQT46OnR5cGU+OworCit9
ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
ZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTlNfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL2V4cGxpY2l0X3NlZWRfc2VxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmI2NjBlY2U1MDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL2V4cGxpY2l0X3NlZWRfc2VxLmgKQEAgLTAsMCArMSw4NyBAQAorLy8gQ29w
eXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01f
SU5URVJOQUxfRVhQTElDSVRfU0VFRF9TRVFfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJO
QUxfRVhQTElDSVRfU0VFRF9TRVFfSF8KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRl
IDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlz
dD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBUaGlzIGNsYXNzIGNvbmZv
cm1zIHRvIHRoZSBDKysgU3RhbmRhcmQgIlNlZWQgU2VxdWVuY2UiIGNvbmNlcHQKKy8vIFtyYW5k
LnJlcS5zZWVkc2VxXS4KKy8vCisvLyBBbiAiRXhwbGljaXRTZWVkU2VxIiBpcyBtZWFudCB0byBw
cm92aWRlIGEgY29uZm9ybWFudCBpbnRlcmZhY2UgZm9yCisvLyBmb3J3YXJkaW5nIHByZS1jb21w
dXRlZCBzZWVkIG1hdGVyaWFsIHRvIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGNsYXNzCisvLyBjb25m
b3JtaW5nIHRvIHRoZSAiVW5pZm9ybSBSYW5kb20gQml0IEdlbmVyYXRvciIgY29uY2VwdC4gVGhp
cyBjbGFzcyBtYWtlcyBubworLy8gYXR0ZW1wdCB0byBtdXRhdGUgdGhlIHN0YXRlIHByb3ZpZGVk
IGJ5IGl0cyBjb25zdHJ1Y3RvciwgYW5kIHJldHVybnMgaXQKKy8vIGRpcmVjdGx5IHZpYSBFeHBs
aWNpdFNlZWRTZXE6OmdlbmVyYXRlKCkuCisvLworLy8gSWYgdGhpcyBjbGFzcyBpcyBhc2tlZCB0
byBnZW5lcmF0ZSBtb3JlIHNlZWQgbWF0ZXJpYWwgdGhhbiB3YXMgcHJvdmlkZWQgdG8KKy8vIHRo
ZSBjb25zdHJ1Y3RvciwgdGhlbiB0aGUgcmVtYWluaW5nIGJ5dGVzIHdpbGwgYmUgZmlsbGVkIHdp
dGggZGV0ZXJtaW5pc3RpYywKKy8vIG5vbnJhbmRvbSBkYXRhLgorY2xhc3MgRXhwbGljaXRTZWVk
U2VxIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdWludDMyX3Q7CisKKyAgRXhw
bGljaXRTZWVkU2VxKCkgOiBzdGF0ZV8oKSB7fQorCisgIC8vIENvcHkgYW5kIG1vdmUgYm90aCBh
bGxvd2VkLgorICBFeHBsaWNpdFNlZWRTZXEoY29uc3QgRXhwbGljaXRTZWVkU2VxJiBvdGhlcikg
PSBkZWZhdWx0OworICBFeHBsaWNpdFNlZWRTZXEmIG9wZXJhdG9yPShjb25zdCBFeHBsaWNpdFNl
ZWRTZXEmIG90aGVyKSA9IGRlZmF1bHQ7CisgIEV4cGxpY2l0U2VlZFNlcShFeHBsaWNpdFNlZWRT
ZXEmJiBvdGhlcikgPSBkZWZhdWx0OworICBFeHBsaWNpdFNlZWRTZXEmIG9wZXJhdG9yPShFeHBs
aWNpdFNlZWRTZXEmJiBvdGhlcikgPSBkZWZhdWx0OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJ
dGVyYXRvcj4KKyAgRXhwbGljaXRTZWVkU2VxKEl0ZXJhdG9yIGJlZ2luLCBJdGVyYXRvciBlbmQp
IHsKKyAgICBmb3IgKGF1dG8gaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyBpdCsrKSB7CisgICAgICBz
dGF0ZV8ucHVzaF9iYWNrKCppdCAmIDB4ZmZmZmZmZmYpOworICAgIH0KKyAgfQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBFeHBsaWNpdFNlZWRTZXEoc3RkOjppbml0aWFsaXplcl9saXN0
PFQ+IGlsKQorICAgICAgOiBFeHBsaWNpdFNlZWRTZXEoaWwuYmVnaW4oKSwgaWwuZW5kKCkpIHt9
CisKKyAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBzdGF0ZV8uc2l6ZSgpOyB9CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIE91dEl0ZXJhdG9yPgorICB2b2lkIHBhcmFtKE91dEl0ZXJhdG9y
IG91dCkgY29uc3QgeworICAgIHN0ZDo6Y29weShzdGQ6OmJlZ2luKHN0YXRlXyksIHN0ZDo6ZW5k
KHN0YXRlXyksIG91dCk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0SXRlcmF0b3I+
CisgIHZvaWQgZ2VuZXJhdGUoT3V0SXRlcmF0b3IgYmVnaW4sIE91dEl0ZXJhdG9yIGVuZCkgewor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgYmVnaW4gIT0gZW5kOyBiZWdpbisrKSB7CisgICAg
ICAqYmVnaW4gPSBzdGF0ZV8uZW1wdHkoKSA/IDAgOiBzdGF0ZV9baW5kZXgrK107CisgICAgICBp
ZiAoaW5kZXggPj0gc3RhdGVfLnNpemUoKSkgeworICAgICAgICBpbmRleCA9IDA7CisgICAgICB9
CisgICAgfQorICB9CisKKyBwcm90ZWN0ZWQ6CisgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzdGF0
ZV87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX0VYUExJQ0lUX1NFRURf
U0VRX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZXhwbGljaXRfc2VlZF9z
ZXFfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcV90ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNTVhZDczOTQ4Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3Nl
cV90ZXN0LmNjCkBAIC0wLDAgKzEsMjA0IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2V4cGxpY2l0X3Nl
ZWRfc2VxLmgiCisKKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5j
bHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9zZWVkX3NlcXVlbmNlcy5oIgorCitu
YW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3NlcT4KK2Jvb2wgQ29uZm9ybXNUb0lu
dGVyZmFjZSgpIHsKKyAgLy8gQ2hlY2sgdGhhdCB0aGUgU2VlZFNlcXVlbmNlIGNhbiBiZSBkZWZh
dWx0LWNvbnN0cnVjdGVkLgorICB7IFNzZXEgZGVmYXVsdF9jb25zdHJ1Y3RlZF9zZXE7IH0KKyAg
Ly8gQ2hlY2sgdGhhdCB0aGUgU2VlZFNlcXVlbmNlIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIHR3
byBpdGVyYXRvcnMuCisgIHsKKyAgICB1aW50MzJfdCBpbml0X2FycmF5W10gPSB7MSwgMywgNSwg
NywgOX07CisgICAgU3NlcSBpdGVyYXRvcl9jb25zdHJ1Y3RlZF9zZXEoaW5pdF9hcnJheSwgJmlu
aXRfYXJyYXlbNV0pOworICB9CisgIC8vIENoZWNrIHRoYXQgdGhlIFNlZWRTZXF1ZW5jZSBjYW4g
YmUgc3RkOjppbml0aWFsaXplcl9saXN0LWNvbnN0cnVjdGVkLgorICB7IFNzZXEgbGlzdF9jb25z
dHJ1Y3RlZF9zZXEgPSB7MSwgMywgNSwgNywgOSwgMTEsIDEzfTsgfQorICAvLyBDaGVjayB0aGF0
IHBhcmFtKCkgYW5kIHNpemUoKSByZXR1cm4gc3RhdGUgcHJvdmlkZWQgdG8gY29uc3RydWN0b3Iu
CisgIHsKKyAgICB1aW50MzJfdCBpbml0X2FycmF5W10gPSB7MSwgMiwgMywgNCwgNX07CisgICAg
U3NlcSBzZXEoaW5pdF9hcnJheSwgJmluaXRfYXJyYXlbQUJTTF9BUlJBWVNJWkUoaW5pdF9hcnJh
eSldKTsKKyAgICBFWFBFQ1RfRVEoc2VxLnNpemUoKSwgQUJTTF9BUlJBWVNJWkUoaW5pdF9hcnJh
eSkpOworCisgICAgdWludDMyX3Qgc3RhdGVfYXJyYXlbQUJTTF9BUlJBWVNJWkUoaW5pdF9hcnJh
eSldOworICAgIHNlcS5wYXJhbShzdGF0ZV9hcnJheSk7CisKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IEFCU0xfQVJSQVlTSVpFKHN0YXRlX2FycmF5KTsgaSsrKSB7CisgICAgICBFWFBFQ1RfRVEo
c3RhdGVfYXJyYXlbaV0sIGkgKyAxKTsKKyAgICB9CisgIH0KKyAgLy8gQ2hlY2sgZm9yIHByZXNl
bmNlIG9mIGdlbmVyYXRlKCkgbWV0aG9kLgorICB7CisgICAgU3NlcSBzZXE7CisgICAgdWludDMy
X3Qgc2VlZHNbNV07CisKKyAgICBzZXEuZ2VuZXJhdGUoc2VlZHMsICZzZWVkc1tBQlNMX0FSUkFZ
U0laRShzZWVkcyldKTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KK30gIC8vIG5hbWVzcGFjZQor
CitURVNUKFNlZWRTZXF1ZW5jZXMsIENoZWNrSW50ZXJmYWNlcykgeworICAvLyBDb250cm9sIGNh
c2UKKyAgRVhQRUNUX1RSVUUoQ29uZm9ybXNUb0ludGVyZmFjZTxzdGQ6OnNlZWRfc2VxPigpKTsK
KworICAvLyBBYnNlaWwgY2xhc3NlcworICBFWFBFQ1RfVFJVRShDb25mb3Jtc1RvSW50ZXJmYWNl
PGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6RXhwbGljaXRTZWVkU2VxPigpKTsKK30KKworVEVTVChF
eHBsaWNpdFNlZWRTZXEsIERlZmF1bHRDb25zdHJ1Y3RvckdlbmVyYXRlc1plcm9zKSB7CisgIGNv
bnN0IHNpemVfdCBrTnVtQmxvY2tzID0gMTI4OworCisgIHVpbnQzMl90IG91dHB1dHNba051bUJs
b2Nrc107CisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6RXhwbGljaXRTZWVkU2VxIHNlcTsKKyAg
c2VxLmdlbmVyYXRlKG91dHB1dHMsICZvdXRwdXRzW2tOdW1CbG9ja3NdKTsKKworICBmb3IgKHVp
bnQzMl90JiBzZWVkIDogb3V0cHV0cykgeworICAgIEVYUEVDVF9FUShzZWVkLCAwKTsKKyAgfQor
fQorCitURVNUKEV4cGxpY2l0U2VlcVNlcSwgU2VlZE1hdGVyaWFsSXNGb3J3YXJkZWRJZGVudGlj
YWxseSkgeworICBjb25zdCBzaXplX3Qga051bUJsb2NrcyA9IDEyODsKKworICB1aW50MzJfdCBz
ZWVkX21hdGVyaWFsW2tOdW1CbG9ja3NdOworICBzdGQ6OnJhbmRvbV9kZXZpY2UgdXJhbmRvbXsi
L2Rldi91cmFuZG9tIn07CisgIGZvciAodWludDMyX3QmIHNlZWQgOiBzZWVkX21hdGVyaWFsKSB7
CisgICAgc2VlZCA9IHVyYW5kb20oKTsKKyAgfQorICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkV4
cGxpY2l0U2VlZFNlcSBzZXEoc2VlZF9tYXRlcmlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZzZWVkX21hdGVyaWFsW2tOdW1CbG9ja3NdKTsKKworICAv
LyBDaGVjayB0aGF0IG91dHB1dCBpcyBzYW1lIGFzIHNlZWQtbWF0ZXJpYWwgcHJvdmlkZWQgdG8g
Y29uc3RydWN0b3IuCisgIHsKKyAgICBjb25zdCBzaXplX3Qga051bUdlbmVyYXRlZCA9IGtOdW1C
bG9ja3MgLyAyOworICAgIHVpbnQzMl90IG91dHB1dHNba051bUdlbmVyYXRlZF07CisgICAgc2Vx
LmdlbmVyYXRlKG91dHB1dHMsICZvdXRwdXRzW2tOdW1HZW5lcmF0ZWRdKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGtOdW1HZW5lcmF0ZWQ7IGkrKykgeworICAgICAgRVhQRUNUX0VRKG91
dHB1dHNbaV0sIHNlZWRfbWF0ZXJpYWxbaV0pOworICAgIH0KKyAgfQorICAvLyBDaGVjayB0aGF0
IFNlZWRTZXF1ZW5jZSBpcyBzdGF0ZWxlc3MgYmV0d2VlbiBpbnZvY2F0aW9uczogRGVzcGl0ZSB0
aGUgbGFzdAorICAvLyBpbnZvY2F0aW9uIG9mIGdlbmVyYXRlKCkgb25seSBjb25zdW1pbmcgaGFs
ZiBvZiB0aGUgaW5wdXQtZW50cm9weSwgdGhlIHNhbWUKKyAgLy8gZW50cm9weSB3aWxsIGJlIHJl
Y3ljbGVkIGZvciB0aGUgbmV4dCBpbnZvY2F0aW9uLgorICB7CisgICAgY29uc3Qgc2l6ZV90IGtO
dW1HZW5lcmF0ZWQgPSBrTnVtQmxvY2tzOworICAgIHVpbnQzMl90IG91dHB1dHNba051bUdlbmVy
YXRlZF07CisgICAgc2VxLmdlbmVyYXRlKG91dHB1dHMsICZvdXRwdXRzW2tOdW1HZW5lcmF0ZWRd
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1HZW5lcmF0ZWQ7IGkrKykgeworICAg
ICAgRVhQRUNUX0VRKG91dHB1dHNbaV0sIHNlZWRfbWF0ZXJpYWxbaV0pOworICAgIH0KKyAgfQor
ICAvLyBDaGVjayB0aGF0IHdoZW4gbW9yZSBzZWVkLW1hdGVyaWFsIGlzIGFza2VkIGZvciB0aGFu
IGlzIHByb3ZpZGVkLCBub256ZXJvCisgIC8vIHZhbHVlcyBhcmUgc3RpbGwgd3JpdHRlbi4KKyAg
eworICAgIGNvbnN0IHNpemVfdCBrTnVtR2VuZXJhdGVkID0ga051bUJsb2NrcyAqIDI7CisgICAg
dWludDMyX3Qgb3V0cHV0c1trTnVtR2VuZXJhdGVkXTsKKyAgICBzZXEuZ2VuZXJhdGUob3V0cHV0
cywgJm91dHB1dHNba051bUdlbmVyYXRlZF0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
a051bUdlbmVyYXRlZDsgaSsrKSB7CisgICAgICBFWFBFQ1RfRVEob3V0cHV0c1tpXSwgc2VlZF9t
YXRlcmlhbFtpICUga051bUJsb2Nrc10pOworICAgIH0KKyAgfQorfQorCitURVNUKEV4cGxpY2l0
U2VlZFNlcSwgQ29weUFuZE1vdmVDb25zdHJ1Y3RvcnMpIHsKKyAgdXNpbmcgdGVzdGluZzo6RWFj
aDsKKyAgdXNpbmcgdGVzdGluZzo6RXE7CisgIHVzaW5nIHRlc3Rpbmc6Ok5vdDsKKyAgdXNpbmcg
dGVzdGluZzo6UG9pbnR3aXNlOworCisgIHVpbnQzMl90IGVudHJvcHlbNF07CisgIHN0ZDo6cmFu
ZG9tX2RldmljZSB1cmFuZG9tKCIvZGV2L3VyYW5kb20iKTsKKyAgZm9yICh1aW50MzJfdCYgZW50
cnkgOiBlbnRyb3B5KSB7CisgICAgZW50cnkgPSB1cmFuZG9tKCk7CisgIH0KKyAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsOjpFeHBsaWNpdFNlZWRTZXEgc2VxX2Zyb21fZW50cm9weShzdGQ6OmJlZ2lu
KGVudHJvcHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6ZW5kKGVudHJvcHkpKTsKKyAgLy8gQ29weSBjb25zdHJ1Y3Rvci4K
KyAgeworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6RXhwbGljaXRTZWVkU2VxIHNlcV9jb3B5
KHNlcV9mcm9tX2VudHJvcHkpOworICAgIEVYUEVDVF9FUShzZXFfY29weS5zaXplKCksIHNlcV9m
cm9tX2VudHJvcHkuc2l6ZSgpKTsKKworICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVkc18x
OworICAgIHNlZWRzXzEucmVzaXplKDEwMDAsIDApOworICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90
PiBzZWVkc18yOworICAgIHNlZWRzXzIucmVzaXplKDEwMDAsIDEpOworCisgICAgc2VxX2Zyb21f
ZW50cm9weS5nZW5lcmF0ZShzZWVkc18xLmJlZ2luKCksIHNlZWRzXzEuZW5kKCkpOworICAgIHNl
cV9jb3B5LmdlbmVyYXRlKHNlZWRzXzIuYmVnaW4oKSwgc2VlZHNfMi5lbmQoKSk7CisKKyAgICBF
WFBFQ1RfVEhBVChzZWVkc18xLCBQb2ludHdpc2UoRXEoKSwgc2VlZHNfMikpOworICB9CisgIC8v
IEFzc2lnbm1lbnQgb3BlcmF0b3IuCisgIHsKKyAgICBmb3IgKHVpbnQzMl90JiBlbnRyeSA6IGVu
dHJvcHkpIHsKKyAgICAgIGVudHJ5ID0gdXJhbmRvbSgpOworICAgIH0KKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWw6OkV4cGxpY2l0U2VlZFNlcSBhbm90aGVyX3NlcShzdGQ6OmJlZ2luKGVudHJv
cHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6ZW5kKGVudHJvcHkpKTsKKworICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVk
c18xOworICAgIHNlZWRzXzEucmVzaXplKDEwMDAsIDApOworICAgIHN0ZDo6dmVjdG9yPHVpbnQz
Ml90PiBzZWVkc18yOworICAgIHNlZWRzXzIucmVzaXplKDEwMDAsIDApOworCisgICAgc2VxX2Zy
b21fZW50cm9weS5nZW5lcmF0ZShzZWVkc18xLmJlZ2luKCksIHNlZWRzXzEuZW5kKCkpOworICAg
IGFub3RoZXJfc2VxLmdlbmVyYXRlKHNlZWRzXzIuYmVnaW4oKSwgc2VlZHNfMi5lbmQoKSk7CisK
KyAgICAvLyBBc3NlcnQgcHJlY29uZGl0aW9uOiBTZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5IHNlZWQt
c2VxdWVuY2VzIGFyZSBub3QgZXF1YWwuCisgICAgRVhQRUNUX1RIQVQoc2VlZHNfMSwgTm90KFBv
aW50d2lzZShFcSgpLCBzZWVkc18yKSkpOworCisgICAgLy8gQXBwbHkgdGhlIGFzc2lnbm1lbnQt
b3BlcmF0b3IuCisgICAgYW5vdGhlcl9zZXEgPSBzZXFfZnJvbV9lbnRyb3B5OworCisgICAgLy8g
UmUtZ2VuZXJhdGUgc2VlZHMuCisgICAgc2VxX2Zyb21fZW50cm9weS5nZW5lcmF0ZShzZWVkc18x
LmJlZ2luKCksIHNlZWRzXzEuZW5kKCkpOworICAgIGFub3RoZXJfc2VxLmdlbmVyYXRlKHNlZWRz
XzIuYmVnaW4oKSwgc2VlZHNfMi5lbmQoKSk7CisKKyAgICAvLyBTZWVkcyBnZW5lcmF0ZWQgYnkg
c2VlZC1zZXF1ZW5jZXMgc2hvdWxkIG5vdyBiZSBlcXVhbC4KKyAgICBFWFBFQ1RfVEhBVChzZWVk
c18xLCBQb2ludHdpc2UoRXEoKSwgc2VlZHNfMikpOworICB9CisgIC8vIE1vdmUgY29uc3RydWN0
b3IuCisgIHsKKyAgICAvLyBHZXQgc2VlZHMgZnJvbSBzZWVkLXNlcXVlbmNlIGNvbnN0cnVjdGVk
IGZyb20gZW50cm9weS4KKyAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gc2VlZHNfMTsKKyAgICBz
ZWVkc18xLnJlc2l6ZSgxMDAwLCAwKTsKKyAgICBzZXFfZnJvbV9lbnRyb3B5LmdlbmVyYXRlKHNl
ZWRzXzEuYmVnaW4oKSwgc2VlZHNfMS5lbmQoKSk7CisKKyAgICAvLyBBcHBseSBtb3ZlLWNvbnN0
cnVjdG9yIG1vdmUgdGhlIHNlcXVlbmNlIHRvIGFub3RoZXIgaW5zdGFuY2UuCisgICAgYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpFeHBsaWNpdFNlZWRTZXEgbW92ZWRfc2VxKAorICAgICAgICBzdGQ6
Om1vdmUoc2VxX2Zyb21fZW50cm9weSkpOworICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVk
c18yOworICAgIHNlZWRzXzIucmVzaXplKDEwMDAsIDEpOworICAgIG1vdmVkX3NlcS5nZW5lcmF0
ZShzZWVkc18yLmJlZ2luKCksIHNlZWRzXzIuZW5kKCkpOworICAgIC8vIFZlcmlmeSB0aGF0IHNl
ZWRzIHByb2R1Y2VkIGJ5IG1vdmVkLWluc3RhbmNlIGFyZSB0aGUgc2FtZSBhcyBvcmlnaW5hbC4K
KyAgICBFWFBFQ1RfVEhBVChzZWVkc18xLCBQb2ludHdpc2UoRXEoKSwgc2VlZHNfMikpOworCisg
ICAgLy8gVmVyaWZ5IHRoYXQgdGhlIG1vdmVkLWZyb20gaW5zdGFuY2Ugbm93IGJlaGF2ZXMgbGlr
ZSBhCisgICAgLy8gZGVmYXVsdC1jb25zdHJ1Y3RlZCBpbnN0YW5jZS4KKyAgICBFWFBFQ1RfRVEo
c2VxX2Zyb21fZW50cm9weS5zaXplKCksIDApOworICAgIHNlcV9mcm9tX2VudHJvcHkuZ2VuZXJh
dGUoc2VlZHNfMS5iZWdpbigpLCBzZWVkc18xLmVuZCgpKTsKKyAgICBFWFBFQ1RfVEhBVChzZWVk
c18xLCBFYWNoKEVxKDApKSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRl
cm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5p
Zm9ybV9iaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU4ZGY5
MmYzZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5p
Zm9ybV9iaXRzLmgKQEAgLTAsMCArMSwyNjAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX0ZBU1RfVU5JRk9S
TV9CSVRTX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0ZBU1RfVU5JRk9STV9CSVRT
X0hfCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgaW5wdXQgdmFs
dWUgaXMgemVybyBvciBhIHBvd2VyIG9mIHR3by4gVXNlZnVsIGZvcgorLy8gZGV0ZXJtaW5pbmcg
aWYgdGhlIHJhbmdlIG9mIG91dHB1dCB2YWx1ZXMgaW4gYSBVUkJHCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVUludFR5cGU+Citjb25zdGV4cHIgYm9vbCBJc1Bvd2VyT2ZUd29Pclplcm8oVUludFR5cGUg
bikgeworICByZXR1cm4gKG4gPT0gMCkgfHwgKChuICYgKG4gLSAxKSkgPT0gMCk7Cit9CisKKy8v
IENvbXB1dGVzIHRoZSBsZW5ndGggb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBwcm9kdWNpYmxlIGJ5
IHRoZSBVUkJHLCBvciByZXR1cm5zCisvLyB6ZXJvIGlmIHRoYXQgd291bGQgZW5jb21wYXNzIHRo
ZSBlbnRpcmUgcmFuZ2Ugb2YgcmVwcmVzZW50YWJsZSB2YWx1ZXMgaW4KKy8vIFVSQkc6OnJlc3Vs
dF90eXBlLgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Citjb25zdGV4cHIgdHlwZW5hbWUgVVJC
Rzo6cmVzdWx0X3R5cGUgUmFuZ2VTaXplKCkgeworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVu
YW1lIFVSQkc6OnJlc3VsdF90eXBlOworICByZXR1cm4gKChVUkJHOjptYXgpKCkgPT0gKHN0ZDo6
bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCkgJiYKKyAgICAgICAgICAoVVJCRzo6
bWluKSgpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+Ojpsb3dlc3QoKSkKKyAg
ICAgICAgICAgICA/IHJlc3VsdF90eXBlezB9CisgICAgICAgICAgICAgOiAoVVJCRzo6bWF4KSgp
IC0gKFVSQkc6Om1pbikoKSArIHJlc3VsdF90eXBlezF9OworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVUludFR5cGU+Citjb25zdGV4cHIgVUludFR5cGUgTGFyZ2VzdFBvd2VyT2ZUd29MZXNzVGhh
bk9yRXF1YWxUbyhVSW50VHlwZSBuKSB7CisgIHJldHVybiBuIDwgMiA/IG4gOiAyICogTGFyZ2Vz
dFBvd2VyT2ZUd29MZXNzVGhhbk9yRXF1YWxUbyhuIC8gMik7Cit9CisKKy8vIEdpdmVuIGEgVVJC
RyBnZW5lcmF0aW5nIHZhbHVlcyBpbiB0aGUgY2xvc2VkIGludGVydmFsIFtMbywgSGldLCByZXR1
cm5zIHRoZQorLy8gbGFyZ2VzdCBwb3dlciBvZiB0d28gbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBI
aSAtIExvICsgMWAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK2NvbnN0ZXhwciB0eXBlbmFt
ZSBVUkJHOjpyZXN1bHRfdHlwZSBQb3dlck9mVHdvU3ViUmFuZ2VTaXplKCkgeworICByZXR1cm4g
TGFyZ2VzdFBvd2VyT2ZUd29MZXNzVGhhbk9yRXF1YWxUbyhSYW5nZVNpemU8VVJCRz4oKSk7Cit9
CisKKy8vIENvbXB1dGVzIHRoZSBmbG9vciBvZiB0aGUgbG9nLiAoaS5lLiwgc3RkOjpmbG9vcihz
dGQ6OmxvZzIoTikpOwordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgorY29uc3RleHByIFVJ
bnRUeXBlIEludGVnZXJMb2cyKFVJbnRUeXBlIG4pIHsKKyAgcmV0dXJuIChuIDw9IDEpID8gMCA6
IDEgKyBJbnRlZ2VyTG9nMihuIC8gMik7Cit9CisKKy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBi
aXRzIG9mIHJhbmRvbW5lc3MgcmV0dXJuZWQgdGhyb3VnaAorLy8gYFBvd2VyT2ZUd29WYXJpYXRl
KHVyYmcpYC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorY29uc3RleHByIHNpemVfdCBOdW1C
aXRzKCkgeworICByZXR1cm4gUmFuZ2VTaXplPFVSQkc+KCkgPT0gMAorICAgICAgICAgICAgID8g
c3RkOjpudW1lcmljX2xpbWl0czx0eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlwZT46OmRpZ2l0cwor
ICAgICAgICAgICAgIDogSW50ZWdlckxvZzIoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxVUkJHPigp
KTsKK30KKworLy8gR2l2ZW4gYSBzaGlmdCB2YWx1ZSBgbmAsIGNvbnN0cnVjdHMgYSBtYXNrIHdp
dGggZXhhY3RseSB0aGUgbG93IGBuYCBiaXRzIHNldC4KKy8vIElmIGBuID09IDBgLCBhbGwgYml0
cyBhcmUgc2V0LgordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgorY29uc3RleHByIFVJbnRU
eXBlIE1hc2tGcm9tU2hpZnQoVUludFR5cGUgbikgeworICByZXR1cm4gKChuICUgc3RkOjpudW1l
cmljX2xpbWl0czxVSW50VHlwZT46OmRpZ2l0cykgPT0gMCkKKyAgICAgICAgICAgICA/IH5VSW50
VHlwZXswfQorICAgICAgICAgICAgIDogKFVJbnRUeXBlezF9IDw8IG4pIC0gVUludFR5cGV7MX07
Cit9CisKKy8vIEZhc3RVbmlmb3JtQml0cyBpbXBsZW1lbnRzIGEgZmFzdCBwYXRoIHRvIGFjcXVp
cmUgdW5pZm9ybSBpbmRlcGVuZGVudCBiaXRzCisvLyBmcm9tIGEgdHlwZSB3aGljaCBjb25mb3Jt
cyB0byB0aGUgW3JhbmQucmVxLnVyYmddIGNvbmNlcHQuCisvLyBQYXJhbWV0ZXJpemVkIGJ5Ogor
Ly8gIGBVSW50VHlwZWA6IHRoZSByZXN1bHQgKG91dHB1dCkgdHlwZQorLy8KKy8vIFRoZSBzdGQ6
OmluZGVwZW5kZW50X2JpdHNfZW5naW5lIFtyYW5kLmFkYXB0LmliaXRzXSBhZGFwdG9yIGNhbiBi
ZQorLy8gaW5zdGFudGlhdGVkIGZyb20gYW4gZXhpc3RpbmcgZ2VuZXJhdG9yIHRocm91Z2ggYSBj
b3B5IG9yIGEgbW92ZS4gSXQgZG9lcworLy8gbm90LCBob3dldmVyLCBmYWNpbGl0YXRlIHRoZSBw
cm9kdWN0aW9uIG9mIHBzZXVkb3JhbmRvbSBiaXRzIGZyb20gYW4gdW4tb3duZWQKKy8vIGdlbmVy
YXRvciB0aGF0IHdpbGwgb3V0bGl2ZSB0aGUgc3RkOjppbmRlcGVuZGVudF9iaXRzX2VuZ2luZSBp
bnN0YW5jZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVSW50VHlwZSA9IHVpbnQ2NF90PgorY2xhc3Mg
RmFzdFVuaWZvcm1CaXRzIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gVUludFR5
cGU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZShtaW4pKCkgeyByZXR1cm4gMDsg
fQorICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1heCkoKSB7CisgICAgcmV0dXJuIChz
dGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpOworICB9CisKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVVJCRyYgZyk7ICAv
LyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorCisgcHJpdmF0ZToKKyAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3Vuc2lnbmVkPFVJbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIkNs
YXNzLXRlbXBsYXRlIEZhc3RVbmlmb3JtQml0czw+IG11c3QgYmUgcGFyYW1ldGVyaXplZCB1c2lu
ZyAiCisgICAgICAgICAgICAgICAgImFuIHVuc2lnbmVkIHR5cGUuIik7CisKKyAgLy8gUG93ZXJP
ZlR3b1ZhcmlhdGUoKSBnZW5lcmF0ZXMgYSBzaW5nbGUgcmFuZG9tIHZhcmlhdGUsIGFsd2F5cyBy
ZXR1cm5pbmcgYQorICAvLyB2YWx1ZSBpbiB0aGUgaGFsZi1vcGVuIGludGVydmFsIGBbMCwgUG93
ZXJPZlR3b1N1YlJhbmdlU2l6ZTxVUkJHPigpKWAuIElmCisgIC8vIHRoZSBVUkJHIGFscmVhZHkg
Z2VuZXJhdGVzIHZhbHVlcyBpbiBhIHBvd2VyLW9mLXR3byByYW5nZSwgdGhlIGdlbmVyYXRvcgor
ICAvLyBpdHNlbGYgaXMgdXNlZC4gT3RoZXJ3aXNlLCB3ZSB1c2UgcmVqZWN0aW9uIHNhbXBsaW5n
IG9uIHRoZSBsYXJnZXN0CisgIC8vIHBvc3NpYmxlIHBvd2VyLW9mLXR3by1zaXplZCBzdWJyYW5n
ZS4KKyAgc3RydWN0IFBvd2VyT2ZUd29UYWcge307CisgIHN0cnVjdCBSZWplY3Rpb25TYW1wbGlu
Z1RhZyB7fTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHN0YXRpYyB0eXBlbmFtZSBV
UkJHOjpyZXN1bHRfdHlwZSBQb3dlck9mVHdvVmFyaWF0ZSgKKyAgICAgIFVSQkcmIGcpIHsgIC8v
IE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgdXNpbmcgdGFnID0KKyAgICAgICAgdHlw
ZW5hbWUgc3RkOjpjb25kaXRpb25hbDxJc1Bvd2VyT2ZUd29Pclplcm8oUmFuZ2VTaXplPFVSQkc+
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvd2VyT2ZUd29UYWcsIFJl
amVjdGlvblNhbXBsaW5nVGFnPjo6dHlwZTsKKyAgICByZXR1cm4gUG93ZXJPZlR3b1ZhcmlhdGUo
ZywgdGFne30pOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHN0YXRpYyB0
eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlwZSBQb3dlck9mVHdvVmFyaWF0ZSgKKyAgICAgIFVSQkcm
IGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgUG93ZXJPZlR3b1RhZykg
eworICAgIHJldHVybiBnKCkgLSAoVVJCRzo6bWluKSgpOworICB9CisKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFVSQkc+CisgIHN0YXRpYyB0eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlwZSBQb3dlck9m
VHdvVmFyaWF0ZSgKKyAgICAgIFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2Vz
KQorICAgICAgUmVqZWN0aW9uU2FtcGxpbmdUYWcpIHsKKyAgICAvLyBVc2UgcmVqZWN0aW9uIHNh
bXBsaW5nIHRvIGVuc3VyZSB1bmlmb3JtaXR5IGFjcm9zcyB0aGUgcmFuZ2UuCisgICAgdHlwZW5h
bWUgVVJCRzo6cmVzdWx0X3R5cGUgdTsKKyAgICBkbyB7CisgICAgICB1ID0gZygpIC0gKFVSQkc6
Om1pbikoKTsKKyAgICB9IHdoaWxlICh1ID49IFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8VVJCRz4o
KSk7CisgICAgcmV0dXJuIHU7CisgIH0KKworICAvLyBHZW5lcmF0ZSgpIGdlbmVyYXRlcyBhIHJh
bmRvbSB2YWx1ZSwgZGlzcGF0Y2hlZCBvbiB3aGV0aGVyCisgIC8vIHRoZSB1bmRlcmx5aW5nIFVS
QkcgbXVzdCBsb29wIG92ZXIgbXVsdGlwbGUgY2FsbHMgb3Igbm90LgorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgR2VuZXJhdGUoVVJCRyYgZywgIC8vIE5PTElOVChy
dW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dHJ1ZV90eXBl
IC8qIGF2b2lkX2xvb3BpbmcgKi8pOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICBy
ZXN1bHRfdHlwZSBHZW5lcmF0ZShVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNl
cykKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmYWxzZV90eXBlIC8qIGF2b2lkX2xvb3Bp
bmcgKi8pOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgordGVtcGxhdGUgPHR5
cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSBGYXN0VW5pZm9ybUJpdHM8VUludFR5cGU+OjpyZXN1bHRf
dHlwZQorRmFzdFVuaWZvcm1CaXRzPFVJbnRUeXBlPjo6b3BlcmF0b3IoKShVUkJHJiBnKSB7ICAv
LyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAvLyBrUmFuZ2VNYXNrIGlzIHRoZSBtYXNr
IHVzZWQgd2hlbiBzYW1wbGluZyB2YXJpYXRlcyBmcm9tIHRoZSBVUkJHIHdoZW4gdGhlCisgIC8v
IHdpZHRoIG9mIHRoZSBVUkJHIHJhbmdlIGlzIG5vdCBhIHBvd2VyIG9mIDIuCisgIC8vIFkgPSAo
MiBeIGtSYW5nZSkgLSAxCisgIHN0YXRpY19hc3NlcnQoKFVSQkc6Om1heCkoKSA+IChVUkJHOjpt
aW4pKCksCisgICAgICAgICAgICAgICAgIlVSQkc6Om1heCBhbmQgVVJCRzo6bWluIG1heSBub3Qg
YmUgZXF1YWwuIik7CisgIHVzaW5nIHVyYmdfcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSBVUkJHOjpy
ZXN1bHRfdHlwZTsKKyAgY29uc3RleHByIHVyYmdfcmVzdWx0X3R5cGUga1JhbmdlTWFzayA9Cisg
ICAgICBSYW5nZVNpemU8VVJCRz4oKSA9PSAwCisgICAgICAgICAgPyAoc3RkOjpudW1lcmljX2xp
bWl0czx1cmJnX3Jlc3VsdF90eXBlPjo6bWF4KSgpCisgICAgICAgICAgOiBzdGF0aWNfY2FzdDx1
cmJnX3Jlc3VsdF90eXBlPihQb3dlck9mVHdvU3ViUmFuZ2VTaXplPFVSQkc+KCkgLSAxKTsKKyAg
cmV0dXJuIEdlbmVyYXRlKGcsIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKGtSYW5nZU1h
c2sgPj0gKG1heCkoKSk+e30pOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVUludFR5cGU+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIEZhc3RVbmlmb3JtQml0czxVSW50VHlw
ZT46OnJlc3VsdF90eXBlCitGYXN0VW5pZm9ybUJpdHM8VUludFR5cGU+OjpHZW5lcmF0ZShVUkJH
JiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dHJ1ZV90eXBlIC8qIGF2b2lkX2xvb3BpbmcgKi8pIHsKKyAg
Ly8gVGhlIHdpZHRoIG9mIHRoZSByZXN1bHRfdHlwZSBpcyBsZXNzIHRoYW4gdGhhbiB0aGUgd2lk
dGggb2YgdGhlIHJhbmRvbSBiaXRzCisgIC8vIHByb3ZpZGVkIGJ5IFVSQkcuICBUaHVzLCBnZW5l
cmF0ZSBhIHNpbmdsZSB2YWx1ZSBhbmQgdGhlbiBzaW1wbHkgbWFzayBvZmYKKyAgLy8gdGhlIHJl
cXVpcmVkIGJpdHMuCisKKyAgcmV0dXJuIFBvd2VyT2ZUd29WYXJpYXRlKGcpICYgKG1heCkoKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIFVS
Qkc+Cit0eXBlbmFtZSBGYXN0VW5pZm9ybUJpdHM8VUludFR5cGU+OjpyZXN1bHRfdHlwZQorRmFz
dFVuaWZvcm1CaXRzPFVJbnRUeXBlPjo6R2VuZXJhdGUoVVJCRyYgZywgIC8vIE5PTElOVChydW50
aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OmZhbHNlX3R5cGUgLyogYXZvaWRfbG9vcGluZyAqLykgeworICAvLyBTZWUgW3JhbmQuYWRhcHQu
aWJpdHNdIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGNvbnN0YW50cyBjYWxjdWxhdGVkIGJlbG93
LgorICAvLworICAvLyBJdCBpcyBwcmVmZXJhYmxlIHRvIHVzZSByb3VnaGx5IHRoZSBzYW1lIG51
bWJlciBvZiBiaXRzIGZyb20gZWFjaCBnZW5lcmF0b3IKKyAgLy8gY2FsbCwgaG93ZXZlciB0aGlz
IGlzIG9ubHkgcG9zc2libGUgd2hlbiB0aGUgbnVtYmVyIG9mIGJpdHMgcHJvdmlkZWQgYnkgdGhl
CisgIC8vIFVSQkcgaXMgYSBkaXZpc29yIG9mIHRoZSBudW1iZXIgb2YgYml0cyBpbiBgcmVzdWx0
X3R5cGVgLiBJbiBhbGwgb3RoZXIKKyAgLy8gY2FzZXMsIHRoZSBudW1iZXIgb2YgYml0cyB1c2Vk
IGNhbm5vdCBhbHdheXMgYmUgdGhlIHNhbWUsIGJ1dCBpdCBjYW4gYmUKKyAgLy8gZ3VhcmFudGVl
ZCB0byBiZSBvZmYgYnkgYXQgbW9zdCAxLiBUaHVzIHdlIHJ1biB0d28gbG9vcHMsIG9uZSB3aXRo
IGEKKyAgLy8gc21hbGxlciBiaXQtd2lkdGggc2l6ZSAoYGtTbWFsbFdpZHRoYCkgYW5kIG9uZSB3
aXRoIGEgbGFyZ2VyIHdpZHRoIHNpemUKKyAgLy8gKHNhdGlzZnlpbmcgYGtMYXJnZVdpZHRoID09
IGtTbWFsbFdpZHRoICsgMWApLiBUaGUgbG9vcHMgYXJlIHJ1bgorICAvLyBga1NtYWxsSXRlcnNg
IGFuZCBga0xhcmdlSXRlcnNgIHRpbWVzIHJlc3BlY3RpdmVseSBzdWNoCisgIC8vIHRoYXQKKyAg
Ly8KKyAgLy8gICAgYGtUb3RhbFdpZHRoID09IGtTbWFsbEl0ZXJzICoga1NtYWxsV2lkdGgKKyAg
Ly8gICAgICAgICAgICAgICAgICAgICsga0xhcmdlSXRlcnMgKiBrTGFyZ2VXaWR0aGAKKyAgLy8K
KyAgLy8gd2hlcmUgYGtUb3RhbFdpZHRoYCBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGJpdHMgaW4g
YHJlc3VsdF90eXBlYC4KKyAgLy8KKyAgY29uc3RleHByIHNpemVfdCBrVG90YWxXaWR0aCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjpkaWdpdHM7CisgIGNvbnN0ZXhwciBzaXpl
X3Qga1VyYmdXaWR0aCA9IE51bUJpdHM8VVJCRz4oKTsKKyAgY29uc3RleHByIHNpemVfdCBrVG90
YWxJdGVycyA9CisgICAgICBrVG90YWxXaWR0aCAvIGtVcmJnV2lkdGggKyAoa1RvdGFsV2lkdGgg
JSBrVXJiZ1dpZHRoICE9IDApOworICBjb25zdGV4cHIgc2l6ZV90IGtTbWFsbFdpZHRoID0ga1Rv
dGFsV2lkdGggLyBrVG90YWxJdGVyczsKKyAgY29uc3RleHByIHNpemVfdCBrTGFyZ2VXaWR0aCA9
IGtTbWFsbFdpZHRoICsgMTsKKyAgLy8KKyAgLy8gQmVjYXVzZSBga0xhcmdlV2lkdGggPT0ga1Nt
YWxsV2lkdGggKyAxYCwgaXQgZm9sbG93cyB0aGF0CisgIC8vCisgIC8vICAgICBga1RvdGFsV2lk
dGggPT0ga1RvdGFsSXRlcnMgKiBrU21hbGxXaWR0aCArIGtMYXJnZUl0ZXJzYAorICAvLworICAv
LyBhbmQgdGhlcmVmb3JlCisgIC8vCisgIC8vICAgICBga0xhcmdlSXRlcnMgPT0ga1RvdGFsV2lk
dGggJSBrU21hbGxXaWR0aGAKKyAgLy8KKyAgLy8gSW50dWl0aXZlbHksIGVhY2ggaXRlcmF0aW9u
IHdpdGggdGhlIGxhcmdlIHdpZHRoIGFjY291bnRzIGZvciBvbmUgdW5pdAorICAvLyBvZiB0aGUg
cmVtYWluZGVyIHdoZW4gYGtUb3RhbFdpZHRoYCBpcyBkaXZpZGVkIGJ5IGBrU21hbGxXaWR0aGAu
IEFzCisgIC8vIG1lbnRpb25lZCBhYm92ZSwgaWYgdGhlIFVSQkcgd2lkdGggaXMgYSBkaXZpc29y
IG9mIGBrVG90YWxXaWR0aGAsIHRoZW4KKyAgLy8gdGhlcmUgd291bGQgYmUgbm8gbmVlZCBmb3Ig
YW55IGxhcmdlIGl0ZXJhdGlvbnMgKGkuZS4sIG9uZSBsb29wIHdvdWxkCisgIC8vIHN1ZmZpY2Up
LCBhbmQgaW5kZWVkLCBpbiB0aGlzIGNhc2UsIGBrTGFyZ2VJdGVyc2Agd291bGQgYmUgemVyby4K
KyAgY29uc3RleHByIHNpemVfdCBrTGFyZ2VJdGVycyA9IGtUb3RhbFdpZHRoICUga1NtYWxsV2lk
dGg7CisgIGNvbnN0ZXhwciBzaXplX3Qga1NtYWxsSXRlcnMgPQorICAgICAgKGtUb3RhbFdpZHRo
IC0gKGtMYXJnZVdpZHRoICoga0xhcmdlSXRlcnMpKSAvIGtTbWFsbFdpZHRoOworCisgIHN0YXRp
Y19hc3NlcnQoCisgICAgICBrVG90YWxXaWR0aCA9PSBrU21hbGxJdGVycyAqIGtTbWFsbFdpZHRo
ICsga0xhcmdlSXRlcnMgKiBrTGFyZ2VXaWR0aCwKKyAgICAgICJFcnJvciBpbiBsb29waW5nIGNv
bnN0YW50IGNhbGN1bGF0aW9ucy4iKTsKKworICByZXN1bHRfdHlwZSBzID0gMDsKKworICBjb25z
dGV4cHIgc2l6ZV90IGtTbWFsbFNoaWZ0ID0ga1NtYWxsV2lkdGggJSBrVG90YWxXaWR0aDsKKyAg
Y29uc3RleHByIHJlc3VsdF90eXBlIGtTbWFsbE1hc2sgPSBNYXNrRnJvbVNoaWZ0KHJlc3VsdF90
eXBle2tTbWFsbFNoaWZ0fSk7CisgIGZvciAoc2l6ZV90IG4gPSAwOyBuIDwga1NtYWxsSXRlcnM7
ICsrbikgeworICAgIHMgPSAocyA8PCBrU21hbGxTaGlmdCkgKworICAgICAgICAoc3RhdGljX2Nh
c3Q8cmVzdWx0X3R5cGU+KFBvd2VyT2ZUd29WYXJpYXRlKGcpKSAmIGtTbWFsbE1hc2spOworICB9
CisKKyAgY29uc3RleHByIHNpemVfdCBrTGFyZ2VTaGlmdCA9IGtMYXJnZVdpZHRoICUga1RvdGFs
V2lkdGg7CisgIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBrTGFyZ2VNYXNrID0gTWFza0Zyb21TaGlm
dChyZXN1bHRfdHlwZXtrTGFyZ2VTaGlmdH0pOworICBmb3IgKHNpemVfdCBuID0gMDsgbiA8IGtM
YXJnZUl0ZXJzOyArK24pIHsKKyAgICBzID0gKHMgPDwga0xhcmdlU2hpZnQpICsKKyAgICAgICAg
KHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPihQb3dlck9mVHdvVmFyaWF0ZShnKSkgJiBrTGFyZ2VN
YXNrKTsKKyAgfQorCisgIHN0YXRpY19hc3NlcnQoCisgICAgICBrTGFyZ2VTaGlmdCA9PSBrU21h
bGxTaGlmdCArIDEgfHwKKyAgICAgICAgICAoa0xhcmdlU2hpZnQgPT0gMCAmJgorICAgICAgICAg
ICBrU21hbGxTaGlmdCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6ZGlnaXRz
IC0gMSksCisgICAgICAiRXJyb3IgaW4gbG9vcGluZyBjb25zdGFudCBjYWxjdWxhdGlvbnMiKTsK
KworICByZXR1cm4gczsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9GQVNU
X1VOSUZPUk1fQklUU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Zhc3Rf
dW5pZm9ybV9iaXRzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdF91bmlmb3Jt
X2JpdHNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWYy
ZTgyNjg3ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdF91
bmlmb3JtX2JpdHNfdGVzdC5jYwpAQCAtMCwwICsxLDI3MiBAQAorLy8gQ29weXJpZ2h0IDIwMTcg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9m
YXN0X3VuaWZvcm1fYml0cy5oIgorCisjaW5jbHVkZSA8cmFuZG9tPgorCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5h
bCB7CituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK2NsYXNzIEZh
c3RVbmlmb3JtQml0c1R5cGVkVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3Vz
aW5nIEludFR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczx1aW50OF90LCB1aW50MTZfdCwgdWludDMy
X3QsIHVpbnQ2NF90PjsKKworVFlQRURfVEVTVF9TVUlURShGYXN0VW5pZm9ybUJpdHNUeXBlZFRl
c3QsIEludFR5cGVzKTsKKworVFlQRURfVEVTVChGYXN0VW5pZm9ybUJpdHNUeXBlZFRlc3QsIEJh
c2ljVGVzdCkgeworICB1c2luZyBMaW1pdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJh
bT47CisgIHVzaW5nIEZhc3RCaXRzID0gRmFzdFVuaWZvcm1CaXRzPFR5cGVQYXJhbT47CisKKyAg
RVhQRUNUX0VRKDAsIEZhc3RCaXRzOjptaW4oKSk7CisgIEVYUEVDVF9FUShMaW1pdHM6Om1heCgp
LCBGYXN0Qml0czo6bWF4KCkpOworCisgIGNvbnN0ZXhwciBpbnQga0l0ZXJzID0gMTAwMDA7Cisg
IHN0ZDo6cmFuZG9tX2RldmljZSByZDsKKyAgc3RkOjptdDE5OTM3IGdlbihyZCgpKTsKKyAgRmFz
dEJpdHMgZmFzdDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrSXRlcnM7IGkrKykgeworICAgIGNv
bnN0IGF1dG8gdiA9IGZhc3QoZ2VuKTsKKyAgICBFWFBFQ1RfTEUodiwgRmFzdEJpdHM6Om1heCgp
KTsKKyAgICBFWFBFQ1RfR0UodiwgRmFzdEJpdHM6Om1pbigpKTsKKyAgfQorfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVUludFR5cGUsIFVJbnRUeXBlIExvLCBVSW50VHlwZSBIaSwgVUludFR5cGUg
VmFsID0gTG8+CitzdHJ1Y3QgRmFrZVVyYmcgeworICB1c2luZyByZXN1bHRfdHlwZSA9IFVJbnRU
eXBlOworCisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUobWF4KSgpIHsgcmV0dXJuIEhp
OyB9CisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUobWluKSgpIHsgcmV0dXJuIExvOyB9
CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKSB7IHJldHVybiBWYWw7IH0KK307CisKK3VzaW5n
IFVybmdPZGRiaXRzID0gRmFrZVVyYmc8dWludDhfdCwgMSwgMHhmZSwgMHg3Mz47Cit1c2luZyBV
cm5nNGJpdHMgPSBGYWtlVXJiZzx1aW50OF90LCAxLCAweDEwLCAyPjsKK3VzaW5nIFVybmczMWJp
dHMgPSBGYWtlVXJiZzx1aW50MzJfdCwgMSwgMHhmZmZmZmZmZSwgMHg2MDA3MGYwMz47Cit1c2lu
ZyBVcm5nMzJiaXRzID0gRmFrZVVyYmc8dWludDMyX3QsIDAsIDB4ZmZmZmZmZmYsIDB4NzQwMTBm
MDE+OworCitURVNUKEZhc3RVbmlmb3JtQml0c1Rlc3QsIElzUG93ZXJPZlR3b09yWmVybykgewor
ICBFWFBFQ1RfVFJVRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDhfdHswfSkpOworICBFWFBFQ1Rf
VFJVRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDhfdHsxfSkpOworICBFWFBFQ1RfVFJVRShJc1Bv
d2VyT2ZUd29Pclplcm8odWludDhfdHsyfSkpOworICBFWFBFQ1RfRkFMU0UoSXNQb3dlck9mVHdv
T3JaZXJvKHVpbnQ4X3R7M30pKTsKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVp
bnQ4X3R7MTZ9KSk7CisgIEVYUEVDVF9GQUxTRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDhfdHsx
N30pKTsKKyAgRVhQRUNUX0ZBTFNFKElzUG93ZXJPZlR3b09yWmVybygoc3RkOjpudW1lcmljX2xp
bWl0czx1aW50OF90Pjo6bWF4KSgpKSk7CisKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3Ja
ZXJvKHVpbnQxNl90ezB9KSk7CisgIEVYUEVDVF9UUlVFKElzUG93ZXJPZlR3b09yWmVybyh1aW50
MTZfdHsxfSkpOworICBFWFBFQ1RfVFJVRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDE2X3R7Mn0p
KTsKKyAgRVhQRUNUX0ZBTFNFKElzUG93ZXJPZlR3b09yWmVybyh1aW50MTZfdHszfSkpOworICBF
WFBFQ1RfVFJVRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDE2X3R7MTZ9KSk7CisgIEVYUEVDVF9G
QUxTRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDE2X3R7MTd9KSk7CisgIEVYUEVDVF9GQUxTRShJ
c1Bvd2VyT2ZUd29Pclplcm8oKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgpKCkp
KTsKKworICBFWFBFQ1RfVFJVRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDMyX3R7MH0pKTsKKyAg
RVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQzMl90ezF9KSk7CisgIEVYUEVDVF9U
UlVFKElzUG93ZXJPZlR3b09yWmVybyh1aW50MzJfdHsyfSkpOworICBFWFBFQ1RfRkFMU0UoSXNQ
b3dlck9mVHdvT3JaZXJvKHVpbnQzMl90ezN9KSk7CisgIEVYUEVDVF9UUlVFKElzUG93ZXJPZlR3
b09yWmVybyh1aW50MzJfdHszMn0pKTsKKyAgRVhQRUNUX0ZBTFNFKElzUG93ZXJPZlR3b09yWmVy
byh1aW50MzJfdHsxN30pKTsKKyAgRVhQRUNUX0ZBTFNFKElzUG93ZXJPZlR3b09yWmVybygoc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCkoKSkpOworCisgIEVYUEVDVF9UUlVFKElz
UG93ZXJPZlR3b09yWmVybyh1aW50NjRfdHswfSkpOworICBFWFBFQ1RfVFJVRShJc1Bvd2VyT2ZU
d29Pclplcm8odWludDY0X3R7MX0pKTsKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJv
KHVpbnQ2NF90ezJ9KSk7CisgIEVYUEVDVF9GQUxTRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDY0
X3R7M30pKTsKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQ2NF90ezY0fSkp
OworICBFWFBFQ1RfRkFMU0UoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQ2NF90ezE3fSkpOworICBF
WFBFQ1RfRkFMU0UoSXNQb3dlck9mVHdvT3JaZXJvKChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KSgpKSk7Cit9CisKK1RFU1QoRmFzdFVuaWZvcm1CaXRzVGVzdCwgSW50ZWdlckxv
ZzIpIHsKKyAgRVhQRUNUX0VRKEludGVnZXJMb2cyKHVpbnQxNl90ezB9KSwgMCk7CisgIEVYUEVD
VF9FUShJbnRlZ2VyTG9nMih1aW50MTZfdHsxfSksIDApOworICBFWFBFQ1RfRVEoSW50ZWdlckxv
ZzIodWludDE2X3R7Mn0pLCAxKTsKKyAgRVhQRUNUX0VRKEludGVnZXJMb2cyKHVpbnQxNl90ezN9
KSwgMSk7CisgIEVYUEVDVF9FUShJbnRlZ2VyTG9nMih1aW50MTZfdHs0fSksIDIpOworICBFWFBF
Q1RfRVEoSW50ZWdlckxvZzIodWludDE2X3R7NX0pLCAyKTsKKyAgRVhQRUNUX0VRKEludGVnZXJM
b2cyKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSksIDYzKTsKK30KKworVEVT
VChGYXN0VW5pZm9ybUJpdHNUZXN0LCBSYW5nZVNpemUpIHsKKyAgRVhQRUNUX0VRKChSYW5nZVNp
emU8RmFrZVVyYmc8dWludDhfdCwgMCwgMz4+KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChSYW5nZVNp
emU8RmFrZVVyYmc8dWludDhfdCwgMiwgMj4+KCkpLCAxKTsKKyAgRVhQRUNUX0VRKChSYW5nZVNp
emU8RmFrZVVyYmc8dWludDhfdCwgMiwgNT4+KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChSYW5nZVNp
emU8RmFrZVVyYmc8dWludDhfdCwgMiwgNj4+KCkpLCA1KTsKKyAgRVhQRUNUX0VRKChSYW5nZVNp
emU8RmFrZVVyYmc8dWludDhfdCwgMiwgMTA+PigpKSwgOSk7CisgIEVYUEVDVF9FUSgKKyAgICAg
IChSYW5nZVNpemU8RmFrZVVyYmc8dWludDhfdCwgMCwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50
OF90Pjo6bWF4KCk+PigpKSwKKyAgICAgIDApOworCisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZh
a2VVcmJnPHVpbnQxNl90LCAwLCAzPj4oKSksIDQpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxG
YWtlVXJiZzx1aW50MTZfdCwgMiwgMj4+KCkpLCAxKTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8
RmFrZVVyYmc8dWludDE2X3QsIDIsIDU+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXpl
PEZha2VVcmJnPHVpbnQxNl90LCAyLCA2Pj4oKSksIDUpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6
ZTxGYWtlVXJiZzx1aW50MTZfdCwgMTAwMCwgMTAxNz4+KCkpLCAxOCk7CisgIEVYUEVDVF9FUSgo
UmFuZ2VTaXplPAorICAgICAgICAgICAgICAgIEZha2VVcmJnPHVpbnQxNl90LCAwLCBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCk+PigpKSwKKyAgICAgICAgICAgIDApOworCisg
IEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAwLCAzPj4oKSksIDQpOwor
ICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MzJfdCwgMiwgMj4+KCkpLCAxKTsK
KyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDMyX3QsIDIsIDU+PigpKSwgNCk7
CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAyLCA2Pj4oKSksIDUp
OworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MzJfdCwgMTAwMCwgMTAxNz4+
KCkpLCAxOCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAwLCAw
eGZmZmZmZmZmPj4oKSksIDApOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50
MzJfdCwgMSwgMHhmZmZmZmZmZj4+KCkpLCAweGZmZmZmZmZmKTsKKyAgRVhQRUNUX0VRKChSYW5n
ZVNpemU8RmFrZVVyYmc8dWludDMyX3QsIDEsIDB4ZmZmZmZmZmU+PigpKSwgMHhmZmZmZmZmZSk7
CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAyLCAweGZmZmZmZmZl
Pj4oKSksIDB4ZmZmZmZmZmQpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTwKKyAgICAgICAgICAg
ICAgICBGYWtlVXJiZzx1aW50MzJfdCwgMCwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpPj4oKSksCisgICAgICAgICAgICAwKTsKKworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxG
YWtlVXJiZzx1aW50NjRfdCwgMCwgMz4+KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8
RmFrZVVyYmc8dWludDY0X3QsIDIsIDI+PigpKSwgMSk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXpl
PEZha2VVcmJnPHVpbnQ2NF90LCAyLCA1Pj4oKSksIDQpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6
ZTxGYWtlVXJiZzx1aW50NjRfdCwgMiwgNj4+KCkpLCA1KTsKKyAgRVhQRUNUX0VRKChSYW5nZVNp
emU8RmFrZVVyYmc8dWludDY0X3QsIDEwMDAsIDEwMTc+PigpKSwgMTgpOworICBFWFBFQ1RfRVEo
KFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMCwgMHhmZmZmZmZmZj4+KCkpLCAweDEwMDAw
MDAwMHVsbCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAxLCAw
eGZmZmZmZmZmPj4oKSksIDB4ZmZmZmZmZmZ1bGwpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxG
YWtlVXJiZzx1aW50NjRfdCwgMSwgMHhmZmZmZmZmZT4+KCkpLCAweGZmZmZmZmZldWxsKTsKKyAg
RVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDIsIDB4ZmZmZmZmZmU+Pigp
KSwgMHhmZmZmZmZmZHVsbCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2
NF90LCAwLCAweGZmZmZmZmZmZmZmZmZmZmZ1bGw+PigpKSwgMHVsbCk7CisgIEVYUEVDVF9FUSgo
UmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAxLCAweGZmZmZmZmZmZmZmZmZmZmZ1bGw+Pigp
KSwKKyAgICAgICAgICAgIDB4ZmZmZmZmZmZmZmZmZmZmZnVsbCk7CisgIEVYUEVDVF9FUSgoUmFu
Z2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAxLCAweGZmZmZmZmZmZmZmZmZmZmV1bGw+PigpKSwK
KyAgICAgICAgICAgIDB4ZmZmZmZmZmZmZmZmZmZmZXVsbCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VT
aXplPEZha2VVcmJnPHVpbnQ2NF90LCAyLCAweGZmZmZmZmZmZmZmZmZmZmV1bGw+PigpKSwKKyAg
ICAgICAgICAgIDB4ZmZmZmZmZmZmZmZmZmZmZHVsbCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXpl
PAorICAgICAgICAgICAgICAgIEZha2VVcmJnPHVpbnQ2NF90LCAwLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCk+PigpKSwKKyAgICAgICAgICAgIDApOworfQorCitURVNUKEZh
c3RVbmlmb3JtQml0c1Rlc3QsIFBvd2VyT2ZUd29TdWJSYW5nZVNpemUpIHsKKyAgRVhQRUNUX0VR
KChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ4X3QsIDAsIDM+PigpKSwgNCk7
CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90LCAy
LCAyPj4oKSksIDEpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVy
Ymc8dWludDhfdCwgMiwgNT4+KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFu
Z2VTaXplPEZha2VVcmJnPHVpbnQ4X3QsIDIsIDY+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUG93
ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90LCAyLCAxMD4+KCkpLCA4KTsKKyAg
RVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPAorICAgICAgICAgICAgICAgIEZha2VV
cmJnPHVpbnQ4X3QsIDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgpPj4oKSks
CisgICAgICAgICAgICAwKTsKKworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8
RmFrZVVyYmc8dWludDE2X3QsIDAsIDM+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3
b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MTZfdCwgMiwgMj4+KCkpLCAxKTsKKyAgRVhQRUNU
X0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQxNl90LCAyLCA1Pj4oKSks
IDQpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDE2
X3QsIDIsIDY+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxG
YWtlVXJiZzx1aW50MTZfdCwgMTAwMCwgMTAxNz4+KCkpLCAxNik7CisgIEVYUEVDVF9FUSgoUG93
ZXJPZlR3b1N1YlJhbmdlU2l6ZTwKKyAgICAgICAgICAgICAgICBGYWtlVXJiZzx1aW50MTZfdCwg
MCwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpPj4oKSksCisgICAgICAgICAg
ICAwKTsKKworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWlu
dDMyX3QsIDAsIDM+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6
ZTxGYWtlVXJiZzx1aW50MzJfdCwgMiwgMj4+KCkpLCAxKTsKKyAgRVhQRUNUX0VRKChQb3dlck9m
VHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAyLCA1Pj4oKSksIDQpOworICBFWFBF
Q1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDMyX3QsIDIsIDY+Pigp
KSwgNCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50
MzJfdCwgMTAwMCwgMTAxNz4+KCkpLCAxNik7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJh
bmdlU2l6ZTxGYWtlVXJiZzx1aW50MzJfdCwgMCwgMHhmZmZmZmZmZj4+KCkpLCAwKTsKKyAgRVhQ
RUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAxLCAweGZm
ZmZmZmZmPj4oKSksCisgICAgICAgICAgICAweDgwMDAwMDAwKTsKKyAgRVhQRUNUX0VRKChQb3dl
ck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAxLCAweGZmZmZmZmZlPj4oKSks
CisgICAgICAgICAgICAweDgwMDAwMDAwKTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFu
Z2VTaXplPAorICAgICAgICAgICAgICAgIEZha2VVcmJnPHVpbnQzMl90LCAwLCBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk+PigpKSwKKyAgICAgICAgICAgIDApOworCisgIEVY
UEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMCwgMz4+
KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVp
bnQ2NF90LCAyLCAyPj4oKSksIDEpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNp
emU8RmFrZVVyYmc8dWludDY0X3QsIDIsIDU+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUG93ZXJP
ZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMiwgNj4+KCkpLCA0KTsKKyAgRVhQ
RUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAxMDAwLCAx
MDE3Pj4oKSksIDE2KTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VV
cmJnPHVpbnQ2NF90LCAwLCAweGZmZmZmZmZmPj4oKSksCisgICAgICAgICAgICAweDEwMDAwMDAw
MHVsbCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50
NjRfdCwgMSwgMHhmZmZmZmZmZj4+KCkpLAorICAgICAgICAgICAgMHg4MDAwMDAwMHVsbCk7Cisg
IEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMSwg
MHhmZmZmZmZmZT4+KCkpLAorICAgICAgICAgICAgMHg4MDAwMDAwMHVsbCk7CisgIEVYUEVDVF9F
USgKKyAgICAgIChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAwLCAw
eGZmZmZmZmZmZmZmZmZmZmZ1bGw+PigpKSwKKyAgICAgIDApOworICBFWFBFQ1RfRVEoCisgICAg
ICAoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMSwgMHhmZmZmZmZm
ZmZmZmZmZmZmdWxsPj4oKSksCisgICAgICAweDgwMDAwMDAwMDAwMDAwMDB1bGwpOworICBFWFBF
Q1RfRVEoCisgICAgICAoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwg
MSwgMHhmZmZmZmZmZmZmZmZmZmZldWxsPj4oKSksCisgICAgICAweDgwMDAwMDAwMDAwMDAwMDB1
bGwpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8CisgICAgICAgICAgICAg
ICAgRmFrZVVyYmc8dWludDY0X3QsIDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgoKT4+KCkpLAorICAgICAgICAgICAgMCk7Cit9CisKK1RFU1QoRmFzdFVuaWZvcm1CaXRzVGVz
dCwgVXJuZzRfVmFyaW91c091dHB1dHMpIHsKKyAgLy8gVGVzdHMgdGhhdCBob3cgdmFsdWVzIGFy
ZSBjb21wb3NlZDsgdGhlIHNpbmdsZS1iaXQgZGVsdGFzIHNob3VsZCBiZSBzcHJlYWQKKyAgLy8g
YWNyb3NzIGVhY2ggaW52b2NhdGlvbi4KKyAgVXJuZzRiaXRzIHVybmc0OworICBVcm5nMzFiaXRz
IHVybmczMTsKKyAgVXJuZzMyYml0cyB1cm5nMzI7CisKKyAgLy8gOC1iaXQgdHlwZXMKKyAgewor
ICAgIEZhc3RVbmlmb3JtQml0czx1aW50OF90PiBmYXN0ODsKKyAgICBFWFBFQ1RfRVEoMHgxMSwg
ZmFzdDgodXJuZzQpKTsKKyAgICBFWFBFQ1RfRVEoMHgyLCBmYXN0OCh1cm5nMzEpKTsKKyAgICBF
WFBFQ1RfRVEoMHgxLCBmYXN0OCh1cm5nMzIpKTsKKyAgfQorCisgIC8vIDE2LWJpdCB0eXBlcwor
ICB7CisgICAgRmFzdFVuaWZvcm1CaXRzPHVpbnQxNl90PiBmYXN0MTY7CisgICAgRVhQRUNUX0VR
KDB4MTExMSwgZmFzdDE2KHVybmc0KSk7CisgICAgRVhQRUNUX0VRKDB4ZjAyLCBmYXN0MTYodXJu
ZzMxKSk7CisgICAgRVhQRUNUX0VRKDB4ZjAxLCBmYXN0MTYodXJuZzMyKSk7CisgIH0KKworICAv
LyAzMi1iaXQgdHlwZXMKKyAgeworICAgIEZhc3RVbmlmb3JtQml0czx1aW50MzJfdD4gZmFzdDMy
OworICAgIEVYUEVDVF9FUSgweDExMTExMTExLCBmYXN0MzIodXJuZzQpKTsKKyAgICBFWFBFQ1Rf
RVEoMHgwZjAyMGYwMiwgZmFzdDMyKHVybmczMSkpOworICAgIEVYUEVDVF9FUSgweDc0MDEwZjAx
LCBmYXN0MzIodXJuZzMyKSk7CisgIH0KKworICAvLyA2NC1iaXQgdHlwZXMKKyAgeworICAgIEZh
c3RVbmlmb3JtQml0czx1aW50NjRfdD4gZmFzdDY0OworICAgIEVYUEVDVF9FUSgweDExMTExMTEx
MTExMTExMTEsIGZhc3Q2NCh1cm5nNCkpOworICAgIEVYUEVDVF9FUSgweDM4NzgxMWMzYzA4NzBm
MDIsIGZhc3Q2NCh1cm5nMzEpKTsKKyAgICBFWFBFQ1RfRVEoMHg3NDAxMGYwMTc0MDEwZjAxLCBm
YXN0NjQodXJuZzMyKSk7CisgIH0KK30KKworVEVTVChGYXN0VW5pZm9ybUJpdHNUZXN0LCBVUkJH
MzJiaXRSZWdyZXNzaW9uKSB7CisgIC8vIFZhbGlkYXRlIHdpdGggZGV0ZXJtaW5pc3RpYyAzMi1i
aXQgc3RkOjptaW5zdGRfcmFuZAorICAvLyB0byBlbnN1cmUgdGhhdCBvcGVyYXRvcigpIHBlcmZv
cm1zIGFzIGV4cGVjdGVkLgorICBzdGQ6Om1pbnN0ZF9yYW5kIGdlbigxKTsKKyAgRmFzdFVuaWZv
cm1CaXRzPHVpbnQ2NF90PiBmYXN0NjQ7CisKKyAgRVhQRUNUX0VRKDB4MDVlNDcwOTVmODQ3YzEy
MnVsbCwgZmFzdDY0KGdlbikpOworICBFWFBFQ1RfRVEoMHg4ZjgyYzFiYTMwYjY0ZDIydWxsLCBm
YXN0NjQoZ2VuKSk7CisgIEVYUEVDVF9FUSgweDNiOTcxYTM1NTgxNTUwMzl1bGwsIGZhc3Q2NChn
ZW4pKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVy
bmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVy
bmFsL2Zhc3RtYXRoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1hdGguaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGJkMTg0MTA1MzkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1hdGguaApAQCAtMCwwICsxLDcyIEBA
CisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9GQVNUTUFUSF9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5B
TF9GQVNUTUFUSF9IXworCisvLyBUaGlzIGZpbGUgY29udGFpbnMgZmFzdCBtYXRoIGZ1bmN0aW9u
cyAoYml0d2lzZSBvcHMgYXMgd2VsbCBhcyBzb21lIG90aGVycykKKy8vIHdoaWNoIGFyZSBpbXBs
ZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHZhcmlvdXMgYWJzbCByYW5kb20gbnVtYmVyIGRpc3RyaWJ1
dGlvbnMuCisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUg
PGNzdGRpbnQ+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvYml0cy5oIgorCituYW1l
c3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gUmV0dXJucyB0
aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGJpdCBzZXQuCitpbmxpbmUgaW50IExlYWRpbmdTZXRC
aXQodWludDY0X3QgbikgeworICByZXR1cm4gNjQgLSBiYXNlX2ludGVybmFsOjpDb3VudExlYWRp
bmdaZXJvczY0KG4pOworfQorCisvLyBDb21wdXRlIGxvZzIobikgdXNpbmcgaW50ZWdlciBvcGVy
YXRpb25zLgorLy8gV2hpbGUgc3RkOjpsb2cyIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBzdGQ6Omxv
ZyhuKSAvIHN0ZDo6bG9nKDIpLCBmb3IKKy8vIHZlcnkgbGFyZ2UgbnVtYmVycy0tdGhvc2UgY2xv
c2UgdG8gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0gMiwKKy8vIGZvciBp
bnN0YW5jZS0tc3RkOjpsb2cyIHJvdW5kcyB1cCByYXRoZXIgdGhhbiBkb3duLCB3aGljaCBpbnRy
b2R1Y2VzCisvLyBkZWZpbml0ZSBza2V3IGluIHRoZSByZXN1bHRzLgoraW5saW5lIGludCBJbnRM
b2cyRmxvb3IodWludDY0X3QgbikgeworICByZXR1cm4gKG4gPD0gMSkgPyAwIDogKDYzIC0gYmFz
ZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChuKSk7Cit9CitpbmxpbmUgaW50IEludExv
ZzJDZWlsKHVpbnQ2NF90IG4pIHsKKyAgcmV0dXJuIChuIDw9IDEpID8gMCA6ICg2NCAtIGJhc2Vf
aW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQobiAtIDEpKTsKK30KKworaW5saW5lIGRvdWJs
ZSBTdGlybGluZ0xvZ0ZhY3RvcmlhbChkb3VibGUgbikgeworICBhc3NlcnQobiA+PSAxKTsKKyAg
Ly8gVXNpbmcgU3RpcmxpbmcncyBhcHByb3hpbWF0aW9uLgorICBjb25zdGV4cHIgZG91YmxlIGtM
b2cyUEkgPSAxLjgzNzg3NzA2NjQwOTM0NTQ4MzU2OworICBjb25zdCBkb3VibGUgbG9nbiA9IHN0
ZDo6bG9nKG4pOworICBjb25zdCBkb3VibGUgbmludiA9IDEuMCAvIHN0YXRpY19jYXN0PGRvdWJs
ZT4obik7CisgIHJldHVybiBuICogbG9nbiAtIG4gKyAwLjUgKiAoa0xvZzJQSSArIGxvZ24pICsg
KDEuMCAvIDEyLjApICogbmludiAtCisgICAgICAgICAoMS4wIC8gMzYwLjApICogbmludiAqIG5p
bnYgKiBuaW52OworfQorCisvLyBSb3RhdGUgdmFsdWUgcmlnaHQuCisvLworLy8gV2Ugb25seSBp
bXBsZW1lbnQgdGhlIHVpbnQzMl90IC8gdWludDY0X3QgdmVyc2lvbnMgYmVjYXVzZQorLy8gMSkg
dGhvc2UgYXJlIHRoZSBvbmx5IG9uZXMgd2UgdXNlLCBhbmQKKy8vIDIpIHRob3NlIGFyZSB0aGUg
b25seSBvbmVzIHdoZXJlIGNsYW5nIGRldGVjdHMgdGhlIHJvdGF0ZSBpZGlvbSBjb3JyZWN0bHku
CitpbmxpbmUgY29uc3RleHByIHVpbnQzMl90IHJvdHIodWludDMyX3QgdmFsdWUsIHVpbnQ4X3Qg
Yml0cykgeworICByZXR1cm4gKHZhbHVlID4+IChiaXRzICYgMzEpKSB8ICh2YWx1ZSA8PCAoKC1i
aXRzKSAmIDMxKSk7Cit9CitpbmxpbmUgY29uc3RleHByIHVpbnQ2NF90IHJvdHIodWludDY0X3Qg
dmFsdWUsIHVpbnQ4X3QgYml0cykgeworICByZXR1cm4gKHZhbHVlID4+IChiaXRzICYgNjMpKSB8
ICh2YWx1ZSA8PCAoKC1iaXRzKSAmIDYzKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21f
aW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01f
SU5URVJOQUxfRkFTVE1BVEhfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9m
YXN0bWF0aF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RtYXRoX3Rlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY1ODU5YzI1ZGU0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RtYXRoX3Rlc3QuY2MKQEAg
LTAsMCArMSwxMTAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1hdGguaCIKKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSB8fCBkZWZp
bmVkKF9fRU1TQ1JJUFRFTl9fKQorLy8gTkFDTCBoYXMgYSBsZXNzIGFjY3VyYXRlIGltcGxlbWVu
dGF0aW9uIG9mIHN0ZDo6bG9nMiB0aGFuIG1vc3Qgb2YKKy8vIHRoZSBvdGhlciBwbGF0Zm9ybXMu
IEZvciBzb21lIHZhbHVlcyB3aGljaCBzaG91bGQgaGF2ZSBpbnRlZ3JhbCByZXN1bHRzLAorLy8g
c29tZXRpbWVzIE5BQ0wgcmV0dXJucyBzbGlnaHRseSBsYXJnZXIgdmFsdWVzLgorLy8KKy8vIFRo
ZSBNVVNMIGxpYmMgdXNlZCBieSBlbXNjcmlwdGVuIGFsc28gaGFzIGEgc2ltaWxhciBidWcuCisj
ZGVmaW5lIEFCU0xfUkFORE9NX0lOQUNDVVJBVEVfTE9HMgorI2VuZGlmCisKK25hbWVzcGFjZSB7
CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1wbFRlc3QsIExlYWRpbmdTZXRCaXQpIHsKKyAgdXNpbmcg
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpMZWFkaW5nU2V0Qml0OworICBjb25zdGV4cHIgdWludDY0
X3Qga1plcm8gPSAwOworICBFWFBFQ1RfRVEoMCwgTGVhZGluZ1NldEJpdChrWmVybykpOworICBF
WFBFQ1RfRVEoNjQsIExlYWRpbmdTZXRCaXQofmtaZXJvKSk7CisKKyAgZm9yIChpbnQgaW5kZXgg
PSAwOyBpbmRleCA8IDY0OyBpbmRleCsrKSB7CisgICAgdWludDY0X3QgeCA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PigxKSA8PCBpbmRleDsKKyAgICBFWFBFQ1RfRVEoaW5kZXggKyAxLCBMZWFkaW5n
U2V0Qml0KHgpKSA8PCBpbmRleDsKKyAgICBFWFBFQ1RfRVEoaW5kZXggKyAxLCBMZWFkaW5nU2V0
Qml0KHggKyB4IC0gMSkpIDw8IGluZGV4OworICB9Cit9CisKK1RFU1QoRmFzdE1hdGhUZXN0LCBJ
bnRMb2cyRmxvb3JUZXN0KSB7CisgIHVzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6SW50TG9n
MkZsb29yOworICBjb25zdGV4cHIgdWludDY0X3Qga1plcm8gPSAwOworICBFWFBFQ1RfRVEoMCwg
SW50TG9nMkZsb29yKDApKTsgIC8vIGJvdW5kYXJ5LiByZXR1cm4gMC4KKyAgRVhQRUNUX0VRKDAs
IEludExvZzJGbG9vcigxKSk7CisgIEVYUEVDVF9FUSgxLCBJbnRMb2cyRmxvb3IoMikpOworICBF
WFBFQ1RfRVEoNjMsIEludExvZzJGbG9vcih+a1plcm8pKTsKKworICAvLyBBIGJvdW5kYXJ5IGNh
c2U6IENvbnZlcnRpbmcgMHhmZmZmZmZmZmZmZmZmZmZmIHJlcXVpcmVzID4gNTMKKyAgLy8gYml0
cyBvZiBwcmVjaXNpb24sIHNvIHRoZSBjb252ZXJzaW9uIHRvIGRvdWJsZSByb3VuZHMgdXAsCisg
IC8vIGFuZCB0aGUgcmVzdWx0IG9mIHN0ZDo6bG9nMih4KSA+IEludExvZzJGbG9vcih4KS4KKyAg
RVhQRUNUX0xUKEludExvZzJGbG9vcih+a1plcm8pLCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bG9n
Mih+a1plcm8pKSk7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA2NDsgaSsrKSB7CisgICAgY29u
c3QgdWludDY0X3QgaV9wb3dfMiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSA8PCBpOworICAg
IEVYUEVDVF9FUShpLCBJbnRMb2cyRmxvb3IoaV9wb3dfMikpOworICAgIEVYUEVDVF9FUShpLCBz
dGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bG9nMihpX3Bvd18yKSkpOworCisgICAgdWludDY0X3QgeSA9
IGlfcG93XzI7CisgICAgZm9yIChpbnQgaiA9IGkgLSAxOyBqID4gMDsgLS1qKSB7CisgICAgICB5
ID0geSB8IChpX3Bvd18yID4+IGopOworICAgICAgRVhQRUNUX0VRKGksIEludExvZzJGbG9vcih5
KSk7CisgICAgfQorICB9Cit9CisKK1RFU1QoRmFzdE1hdGhUZXN0LCBJbnRMb2cyQ2VpbFRlc3Qp
IHsKKyAgdXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpJbnRMb2cyQ2VpbDsKKyAgY29uc3Rl
eHByIHVpbnQ2NF90IGtaZXJvID0gMDsKKyAgRVhQRUNUX0VRKDAsIEludExvZzJDZWlsKDApKTsg
IC8vIGJvdW5kYXJ5LiByZXR1cm4gMC4KKyAgRVhQRUNUX0VRKDAsIEludExvZzJDZWlsKDEpKTsK
KyAgRVhQRUNUX0VRKDEsIEludExvZzJDZWlsKDIpKTsKKyAgRVhQRUNUX0VRKDY0LCBJbnRMb2cy
Q2VpbCh+a1plcm8pKTsKKworICAvLyBBIGJvdW5kYXJ5IGNhc2U6IENvbnZlcnRpbmcgMHhmZmZm
ZmZmZmZmZmZmZmZmIHJlcXVpcmVzID4gNTMKKyAgLy8gYml0cyBvZiBwcmVjaXNpb24sIHNvIHRo
ZSBjb252ZXJzaW9uIHRvIGRvdWJsZSByb3VuZHMgdXAsCisgIC8vIGFuZCB0aGUgcmVzdWx0IG9m
IHN0ZDo6bG9nMih4KSA+IEludExvZzJGbG9vcih4KS4KKyAgRVhQRUNUX0xFKEludExvZzJDZWls
KH5rWmVybyksIHN0YXRpY19jYXN0PGludD4oc3RkOjpsb2cyKH5rWmVybykpKTsKKworICBmb3Ig
KGludCBpID0gMDsgaSA8IDY0OyBpKyspIHsKKyAgICBjb25zdCB1aW50NjRfdCBpX3Bvd18yID0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IGk7CisgICAgRVhQRUNUX0VRKGksIEludExvZzJD
ZWlsKGlfcG93XzIpKTsKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5BQ0NVUkFURV9MT0cyCisgICAg
RVhQRUNUX0VRKGksIHN0YXRpY19jYXN0PGludD4oc3RkOjpjZWlsKHN0ZDo6bG9nMihpX3Bvd18y
KSkpKTsKKyNlbmRpZgorCisgICAgdWludDY0X3QgeSA9IGlfcG93XzI7CisgICAgZm9yIChpbnQg
aiA9IGkgLSAxOyBqID4gMDsgLS1qKSB7CisgICAgICB5ID0geSB8IChpX3Bvd18yID4+IGopOwor
ICAgICAgRVhQRUNUX0VRKGkgKyAxLCBJbnRMb2cyQ2VpbCh5KSk7CisgICAgfQorICB9Cit9CisK
K1RFU1QoRmFzdE1hdGhUZXN0LCBTdGlybGluZ0xvZ0ZhY3RvcmlhbCkgeworICB1c2luZyBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OlN0aXJsaW5nTG9nRmFjdG9yaWFsOworCisgIEVYUEVDVF9ORUFS
KFN0aXJsaW5nTG9nRmFjdG9yaWFsKDEuMCksIDAsIDFlLTMpOworICBFWFBFQ1RfTkVBUihTdGly
bGluZ0xvZ0ZhY3RvcmlhbCgxLjUwKSwgMC4yODQ2ODMsIDFlLTMpOworICBFWFBFQ1RfTkVBUihT
dGlybGluZ0xvZ0ZhY3RvcmlhbCgyLjApLCAwLjY5MzE0NzE4MDU2LCAxZS00KTsKKworICBmb3Ig
KGludCBpID0gMjsgaSA8IDUwOyBpKyspIHsKKyAgICBkb3VibGUgZCA9IHN0YXRpY19jYXN0PGRv
dWJsZT4oaSk7CisgICAgRVhQRUNUX05FQVIoU3RpcmxpbmdMb2dGYWN0b3JpYWwoZCksIHN0ZDo6
bGdhbW1hKGQgKyAxKSwgM2UtNSk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2dlbnRhYmxl
cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9nYXVzc2lhbl9kaXN0cmlidXRpb25fZ2VudGFi
bGVzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNmEyM2NiMmY5
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9nYXVzc2lhbl9kaXN0
cmlidXRpb25fZ2VudGFibGVzLmNjCkBAIC0wLDAgKzEsMTQ1IEBACisvLyBDb3B5cmlnaHQgMjAx
NyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworLy8gR2VuZXJhdGVzIGdhdXNzaWFuX2Rpc3RyaWJ1
dGlvbi5jYworLy8KKy8vICQgYmxhemUgcnVuIDpnYXVzc2lhbl9kaXN0cmlidXRpb25fZ2VudGFi
bGVzID4gZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmNjCisvLworI2luY2x1ZGUgImFic2wvcmFuZG9t
L2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8
Y3N0ZGRlZj4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVk
ZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgorCituYW1lc3BhY2Ug
YWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3ZvaWQgRm9ybWF0QXJyYXlDb250ZW50cyhzdGQ6
Om9zdHJlYW0qIG9zLCBUICgmZGF0YSlbTl0pIHsKKyAgaWYgKCFzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+Ojppc19leGFjdCkgeworICAgIC8vIE5vdGU6IFQgaXMgZWl0aGVyIGFuIGludGVnZXIgb3Ig
YSBmbG9hdC4KKyAgICAvLyBmbG9hdCByZXF1aXJlcyBoaWdoZXIgcHJlY2lzaW9uIHRvIGVuc3Vy
ZSB0aGF0IHZhbHVlcyBhcmUKKyAgICAvLyByZXByb2R1Y2VkIGV4YWN0bHkuCisgICAgLy8gVHJp
dmlhOiBDOTkgaGFzIGhleGFkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzLCBidXQgQysr
MTEgZG9lcyBub3QuCisgICAgLy8gVXNpbmcgdGhlbSB3b3VsZCByZW1vdmUgYWxsIGNvbmNlcm4g
b2YgcHJlY2lzaW9uIGxvc3MuCisgICAgb3MtPnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjptYXhfZGlnaXRzMTAgKyAyKTsKKyAgfQorICAqb3MgPDwgIiAgICB7IjsKKyAgc3RkOjpz
dHJpbmcgc2VwYXJhdG9yID0gIiI7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7
CisgICAgKm9zIDw8IHNlcGFyYXRvciA8PCBkYXRhW2ldOworICAgIGlmICgoaSArIDEpICUgMyAh
PSAwKSB7CisgICAgICBzZXBhcmF0b3IgPSAiLCAiOworICAgIH0gZWxzZSB7CisgICAgICBzZXBh
cmF0b3IgPSAiLFxuICAgICAiOworICAgIH0KKyAgfQorICAqb3MgPDwgIn0iOworfQorCit9ICAv
LyBuYW1lc3BhY2UKKworY2xhc3MgVGFibGVHZW5lcmF0b3IgOiBwdWJsaWMgZ2F1c3NpYW5fZGlz
dHJpYnV0aW9uX2Jhc2UgeworIHB1YmxpYzoKKyAgVGFibGVHZW5lcmF0b3IoKTsKKyAgdm9pZCBQ
cmludChzdGQ6Om9zdHJlYW0qIG9zKTsKKworICB1c2luZyBnYXVzc2lhbl9kaXN0cmlidXRpb25f
YmFzZTo6a01hc2s7CisgIHVzaW5nIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlOjprUjsKKyAg
dXNpbmcgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2Jhc2U6OmtWOworCisgcHJpdmF0ZToKKyAgVGFi
bGVzIHRhYmxlc187Cit9OworCisvLyBaaWdndXJhdCBnYXVzc2lhbiBpbml0aWFsaXphdGlvbi4g
IEZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGUgYWxnb3JpdGhtLCBzZWUKKy8vIHRoZSBNYXJzYWds
aWEgcGFwZXIsICJUaGUgWmlnZ3VyYXQgTWV0aG9kIGZvciBHZW5lcmF0aW5nIFJhbmRvbSBWYXJp
YWJsZXMiLgorLy8gICBodHRwOi8vd3d3LmpzdGF0c29mdC5vcmcvdjA1L2kwOC8KKy8vCisvLyBG
dXJ0aGVyIGRldGFpbHMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgRG9vcm5payBwYXBlcgorLy8gICBo
dHRwczovL3d3dy5kb29ybmlrLmNvbS9yZXNlYXJjaC96aWdndXJhdC5wZGYKKy8vCitUYWJsZUdl
bmVyYXRvcjo6VGFibGVHZW5lcmF0b3IoKSB7CisgIC8vIFRoZSBjb25zdGFudHMgaGVyZSBzaG91
bGQgbWF0Y2ggdGhlIHZhbHVlcyBpbiBnYXVzc2lhbl9kaXN0cmlidXRpb24uaAorICBzdGF0aWMg
Y29uc3RleHByIGludCBrQyA9IGtNYXNrICsgMTsKKworICBzdGF0aWNfYXNzZXJ0KChBQlNMX0FS
UkFZU0laRSh0YWJsZXNfLngpID09IGtDICsgMSksCisgICAgICAgICAgICAgICAgInhBcnJheSBt
dXN0IGJlIGxlbmd0aCBrTWFzayArIDIiKTsKKworICBzdGF0aWNfYXNzZXJ0KChBQlNMX0FSUkFZ
U0laRSh0YWJsZXNfLngpID09IEFCU0xfQVJSQVlTSVpFKHRhYmxlc18uZikpLAorICAgICAgICAg
ICAgICAgICJmeCBhbmQgeCBhcnJheXMgbXVzdCBiZSBpZGVudGljYWwgbGVuZ3RoIik7CisKKyAg
YXV0byBmID0gW10oZG91YmxlIHgpIHsgcmV0dXJuIHN0ZDo6ZXhwKC0wLjUgKiB4ICogeCk7IH07
CisgIGF1dG8gZl9pbnYgPSBbXShkb3VibGUgeCkgeyByZXR1cm4gc3RkOjpzcXJ0KC0yLjAgKiBz
dGQ6OmxvZyh4KSk7IH07CisKKyAgdGFibGVzXy54WzBdID0ga1YgLyBmKGtSKTsKKyAgdGFibGVz
Xy5mWzBdID0gZih0YWJsZXNfLnhbMF0pOworCisgIHRhYmxlc18ueFsxXSA9IGtSOworICB0YWJs
ZXNfLmZbMV0gPSBmKHRhYmxlc18ueFsxXSk7CisKKyAgdGFibGVzXy54W2tDXSA9IDAuMDsKKyAg
dGFibGVzXy5mW2tDXSA9IGYodGFibGVzXy54W2tDXSk7ICAvLyAxLjAKKworICBmb3IgKGludCBp
ID0gMjsgaSA8IGtDOyBpKyspIHsKKyAgICBkb3VibGUgdiA9IChrViAvIHRhYmxlc18ueFtpIC0g
MV0pICsgdGFibGVzXy5mW2kgLSAxXTsKKyAgICB0YWJsZXNfLnhbaV0gPSBmX2ludih2KTsKKyAg
ICB0YWJsZXNfLmZbaV0gPSB2OworICB9Cit9CisKK3ZvaWQgVGFibGVHZW5lcmF0b3I6OlByaW50
KHN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICIvLyBCRUdJTiBHRU5FUkFURUQgQ09ERTsg
RE8gTk9UIEVESVRcbiIKKyAgICAgICAgICIvLyBjbGFuZy1mb3JtYXQgb2ZmXG4iCisgICAgICAg
ICAiXG4iCisgICAgICAgICAiI2luY2x1ZGUgXCJhYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmli
dXRpb24uaFwiXG4iCisgICAgICAgICAiXG4iCisgICAgICAgICAvLyAibmFtZXNwYWNlICIgYW5k
ICJhYnNsIiBhcmUgYnJva2VuIGFwYXJ0IHNvIGFzIG5vdCB0byBjb25mbGljdCB3aXRoCisgICAg
ICAgICAvLyBzY3JpcHQgdGhhdCBhZGRzIHRoZSBMVFMgaW5saW5lIG5hbWVzcGFjZS4KKyAgICAg
ICAgICJuYW1lc3BhY2UgIgorICAgICAgICAgImFic2wge1xuIgorICAgICAgICAgIm5hbWVzcGFj
ZSAiCisgICAgICAgICAicmFuZG9tX2ludGVybmFsIHtcbiIKKyAgICAgICAgICJcbiIKKyAgICAg
ICAgICJjb25zdCBnYXVzc2lhbl9kaXN0cmlidXRpb25fYmFzZTo6VGFibGVzXG4iCisgICAgICAg
ICAiICAgIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlOjp6Z18gPSB7XG4iOworICBGb3JtYXRB
cnJheUNvbnRlbnRzKG9zLCB0YWJsZXNfLngpOworICAqb3MgPDwgIixcbiI7CisgIEZvcm1hdEFy
cmF5Q29udGVudHMob3MsIHRhYmxlc18uZik7CisgICpvcyA8PCAifTtcbiIKKyAgICAgICAgICJc
biIKKyAgICAgICAgICJ9ICAvLyBuYW1lc3BhY2UgIgorICAgICAgICAgInJhbmRvbV9pbnRlcm5h
bFxuIgorICAgICAgICAgIn0gIC8vIG5hbWVzcGFjZSAiCisgICAgICAgICAiYWJzbFxuIgorICAg
ICAgICAgIlxuIgorICAgICAgICAgIi8vIGNsYW5nLWZvcm1hdCBvblxuIgorICAgICAgICAgIi8v
IEVORCBHRU5FUkFURUQgQ09ERSI7CisgICpvcyA8PCBzdGQ6OmVuZGw7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKK2ludCBtYWlu
KGludCwgY2hhcioqKSB7CisgIHN0ZDo6Y2VyciA8PCAiXG5Db3B5IHRoZSBvdXRwdXQgdG8gZ2F1
c3NpYW5fZGlzdHJpYnV0aW9uLmNjIiA8PCBzdGQ6OmVuZGw7CisgIGFic2w6OnJhbmRvbV9pbnRl
cm5hbDo6VGFibGVHZW5lcmF0b3IgZ2VuZXJhdG9yOworICBnZW5lcmF0b3IuUHJpbnQoJnN0ZDo6
Y291dCk7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFs
L2lvc3RyZWFtX3N0YXRlX3NhdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJlYW1f
c3RhdGVfc2F2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGY4
OGZhNzZiY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJl
YW1fc3RhdGVfc2F2ZXIuaApAQCAtMCwwICsxLDI0MyBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfSU9TVFJF
QU1fU1RBVEVfU0FWRVJfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfSU9TVFJFQU1f
U1RBVEVfU0FWRVJfSF8KKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGlvc3RyZWFtPgor
I2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFi
c2wvbWV0YS90eXBlX3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wvbnVtZXJpYy9pbnQxMjguaCIK
KworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKKy8vIFRo
ZSBudWxsX3N0YXRlX3NhdmVyIGRvZXMgbm90aGluZy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Y2xhc3MgbnVsbF9zdGF0ZV9zYXZlciB7CisgcHVibGljOgorICB1c2luZyBzdHJlYW1fdHlwZSA9
IFQ7CisgIHVzaW5nIGZsYWdzX3R5cGUgPSBzdGQ6Omlvc19iYXNlOjpmbXRmbGFnczsKKworICBu
dWxsX3N0YXRlX3NhdmVyKFQmLCBmbGFnc190eXBlKSB7fQorICB+bnVsbF9zdGF0ZV9zYXZlcigp
IHt9Cit9OworCisvLyBvc3RyZWFtX3N0YXRlX3NhdmVyIGlzIGEgUkFJSSBvYmplY3QgdG8gc2F2
ZSBhbmQgcmVzdG9yZSB0aGUgY29tbW9uCisvLyBiYXNpY19vc3RyZWFtIGZsYWdzIHVzZWQgd2hl
biBpbXBsZW1lbnRpbmcgYG9wZXJhdG9yIDw8KClgIG9uIGFueSBvZgorLy8gdGhlIGFic2wgcmFu
ZG9tIGRpc3RyaWJ1dGlvbnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT1N0cmVhbT4KK2NsYXNzIG9z
dHJlYW1fc3RhdGVfc2F2ZXIgeworIHB1YmxpYzoKKyAgdXNpbmcgb3N0cmVhbV90eXBlID0gT1N0
cmVhbTsKKyAgdXNpbmcgZmxhZ3NfdHlwZSA9IHN0ZDo6aW9zX2Jhc2U6OmZtdGZsYWdzOworICB1
c2luZyBmaWxsX3R5cGUgPSB0eXBlbmFtZSBvc3RyZWFtX3R5cGU6OmNoYXJfdHlwZTsKKyAgdXNp
bmcgcHJlY2lzaW9uX3R5cGUgPSBzdGQ6OnN0cmVhbXNpemU7CisKKyAgb3N0cmVhbV9zdGF0ZV9z
YXZlcihvc3RyZWFtX3R5cGUmIG9zLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAg
ICAgICAgICAgICAgICAgICAgICBmbGFnc190eXBlIGZsYWdzLCBmaWxsX3R5cGUgZmlsbCkKKyAg
ICAgIDogb3NfKG9zKSwKKyAgICAgICAgZmxhZ3NfKG9zLmZsYWdzKGZsYWdzKSksCisgICAgICAg
IGZpbGxfKG9zLmZpbGwoZmlsbCkpLAorICAgICAgICBwcmVjaXNpb25fKG9zLnByZWNpc2lvbigp
KSB7CisgICAgLy8gU2F2ZSBzdGF0ZSBpbiBpbml0aWFsaXplZCB2YXJpYWJsZXMuCisgIH0KKwor
ICB+b3N0cmVhbV9zdGF0ZV9zYXZlcigpIHsKKyAgICAvLyBSZXN0b3JlIHNhdmVkIHN0YXRlLgor
ICAgIG9zXy5wcmVjaXNpb24ocHJlY2lzaW9uXyk7CisgICAgb3NfLmZpbGwoZmlsbF8pOworICAg
IG9zXy5mbGFncyhmbGFnc18pOworICB9CisKKyBwcml2YXRlOgorICBvc3RyZWFtX3R5cGUmIG9z
XzsKKyAgY29uc3QgZmxhZ3NfdHlwZSBmbGFnc187CisgIGNvbnN0IGZpbGxfdHlwZSBmaWxsXzsK
KyAgY29uc3QgcHJlY2lzaW9uX3R5cGUgcHJlY2lzaW9uXzsKK307CisKKyNpZiBkZWZpbmVkKF9f
TkRLX01BSk9SX18pICYmIF9fTkRLX01BSk9SX18gPCAxNgorI2RlZmluZSBBQlNMX1JBTkRPTV9J
TlRFUk5BTF9JT1NUUkVBTV9IRVhGTE9BVCAxCisjZWxzZQorI2RlZmluZSBBQlNMX1JBTkRPTV9J
TlRFUk5BTF9JT1NUUkVBTV9IRVhGTE9BVCAwCisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJULCB0eXBlbmFtZSBUcmFpdHM+Citvc3RyZWFtX3N0YXRlX3NhdmVyPHN0ZDo6YmFzaWNf
b3N0cmVhbTxDaGFyVCwgVHJhaXRzPj4gbWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKAorICAgIHN0
ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9y
ZWZlcmVuY2VzKQorICAgIHN0ZDo6aW9zX2Jhc2U6OmZtdGZsYWdzIGZsYWdzID0gc3RkOjppb3Nf
YmFzZTo6ZGVjIHwgc3RkOjppb3NfYmFzZTo6bGVmdCB8CisjaWYgQUJTTF9SQU5ET01fSU5URVJO
QUxfSU9TVFJFQU1fSEVYRkxPQVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6aW9zX2Jhc2U6OmZpeGVkIHwKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjppb3NfYmFzZTo6c2NpZW50aWZpYykgeworICB1c2luZyByZXN1bHRf
dHlwZSA9IG9zdHJlYW1fc3RhdGVfc2F2ZXI8c3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFp
dHM+PjsKKyAgcmV0dXJuIHJlc3VsdF90eXBlKG9zLCBmbGFncywgb3Mud2lkZW4oJyAnKSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8IXN0
ZDo6aXNfYmFzZV9vZjxzdGQ6Omlvc19iYXNlLCBUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxsX3N0YXRlX3NhdmVyPFQ+PgorbWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVy
KFQmIGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Omlvc19iYXNlOjpmbXRmbGFncyBmbGFncyA9IHN0ZDo6aW9zX2Jhc2U6OmRl
YykgeworICBzdGQ6OmNlcnIgPDwgIm51bGxfc3RhdGVfc2F2ZXIiOworICB1c2luZyByZXN1bHRf
dHlwZSA9IG51bGxfc3RhdGVfc2F2ZXI8VD47CisgIHJldHVybiByZXN1bHRfdHlwZShpcywgZmxh
Z3MpOworfQorCisvLyBzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjx0eXBlPjo6a1ByZWNpc2lvbiBy
ZXR1cm5zIHRoZSBiYXNlIDEwIHByZWNpc2lvbgorLy8gcmVxdWlyZWQgdG8gc3RyZWFtIGFuZCBy
ZWNvbnN0cnVjdCBhIHJlYWwgdHlwZSBleGFjdCBiaW5hcnkgdmFsdWUgdGhyb3VnaAorLy8gYSBi
aW5hcnktPmRlY2ltYWwtPmJpbmFyeSB0cmFuc2l0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdHJ1Y3Qgc3RyZWFtX3ByZWNpc2lvbl9oZWxwZXIgeworICAvLyBtYXhfZGlnaXRzMTAgbWF5
IGJlIDAgb24gTVNWQzsgaWYgc28sIHVzZSBkaWdpdHMxMCArIDMuCisgIHN0YXRpYyBjb25zdGV4
cHIgaW50IGtQcmVjaXNpb24gPQorICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heF9k
aWdpdHMxMCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0czEwKQorICAgICAgICAgID8g
c3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4X2RpZ2l0czEwCisgICAgICAgICAgOiAoc3RkOjpu
dW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzMTAgKyAzKTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1
Y3Qgc3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8ZmxvYXQ+IHsKKyAgc3RhdGljIGNvbnN0ZXhwciBp
bnQga1ByZWNpc2lvbiA9IDk7Cit9OwordGVtcGxhdGUgPD4KK3N0cnVjdCBzdHJlYW1fcHJlY2lz
aW9uX2hlbHBlcjxkb3VibGU+IHsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga1ByZWNpc2lvbiA9
IDE3OworfTsKK3RlbXBsYXRlIDw+CitzdHJ1Y3Qgc3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8bG9u
ZyBkb3VibGU+IHsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga1ByZWNpc2lvbiA9IDM2OyAgLy8g
YXNzdW1pbmcgZnAxMjgKK307CisKKy8vIGlzdHJlYW1fc3RhdGVfc2F2ZXIgaXMgYSBSQUlJIG9i
amVjdCB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBjb21tb24KKy8vIHN0ZDo6YmFzaWNfaXN0cmVh
bTw+IGZsYWdzIHVzZWQgd2hlbiBpbXBsZW1lbnRpbmcgYG9wZXJhdG9yID4+KClgIG9uIGFueSBv
ZgorLy8gdGhlIGFic2wgcmFuZG9tIGRpc3RyaWJ1dGlvbnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
SVN0cmVhbT4KK2NsYXNzIGlzdHJlYW1fc3RhdGVfc2F2ZXIgeworIHB1YmxpYzoKKyAgdXNpbmcg
aXN0cmVhbV90eXBlID0gSVN0cmVhbTsKKyAgdXNpbmcgZmxhZ3NfdHlwZSA9IHN0ZDo6aW9zX2Jh
c2U6OmZtdGZsYWdzOworCisgIGlzdHJlYW1fc3RhdGVfc2F2ZXIoaXN0cmVhbV90eXBlJiBpcywg
IC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgZmxh
Z3NfdHlwZSBmbGFncykKKyAgICAgIDogaXNfKGlzKSwgZmxhZ3NfKGlzLmZsYWdzKGZsYWdzKSkg
e30KKworICB+aXN0cmVhbV9zdGF0ZV9zYXZlcigpIHsgaXNfLmZsYWdzKGZsYWdzXyk7IH0KKwor
IHByaXZhdGU6CisgIGlzdHJlYW1fdHlwZSYgaXNfOworICBmbGFnc190eXBlIGZsYWdzXzsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzPgoraXN0cmVhbV9z
dGF0ZV9zYXZlcjxzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4+IG1ha2VfaXN0cmVh
bV9zdGF0ZV9zYXZlcigKKyAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlz
LCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBzdGQ6Omlvc19iYXNlOjpmbXRm
bGFncyBmbGFncyA9IHN0ZDo6aW9zX2Jhc2U6OmRlYyB8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Omlvc19iYXNlOjpzY2llbnRpZmljIHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aW9zX2Jhc2U6OnNraXB3cykgeworICB1c2luZyBy
ZXN1bHRfdHlwZSA9IGlzdHJlYW1fc3RhdGVfc2F2ZXI8c3RkOjpiYXNpY19pc3RyZWFtPENoYXJU
LCBUcmFpdHM+PjsKKyAgcmV0dXJuIHJlc3VsdF90eXBlKGlzLCBmbGFncyk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfYmFz
ZV9vZjxzdGQ6Omlvc19iYXNlLCBUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxsX3N0YXRlX3NhdmVyPFQ+PgorbWFrZV9pc3RyZWFtX3N0YXRlX3NhdmVyKFQmIGlzLCAg
Ly8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Omlvc19iYXNlOjpmbXRmbGFncyBmbGFncyA9IHN0ZDo6aW9zX2Jhc2U6OmRlYykgeworICB1
c2luZyByZXN1bHRfdHlwZSA9IG51bGxfc3RhdGVfc2F2ZXI8VD47CisgIHJldHVybiByZXN1bHRf
dHlwZShpcywgZmxhZ3MpOworfQorCisvLyBzdHJlYW1fZm9ybWF0X3R5cGU8VD4gaXMgYSBoZWxw
ZXIgc3RydWN0IHRvIGNvbnZlcnQgdHlwZXMgd2hpY2gKKy8vIGJhc2ljX2lvc3RyZWFtIGNhbm5v
dCBvdXRwdXQgYXMgZGVjaW1hbCBudW1iZXJzIGludG8gdHlwZXMgd2hpY2gKKy8vIGJhc2ljX2lv
c3RyZWFtIGNhbiBvdXRwdXQgYXMgZGVjaW1hbCBudW1iZXJzLiBTcGVjaWZpY2FsbHk6CisvLyAq
IHNpZ25lZC91bnNpZ25lZCBjaGFyLXdpZHRoIHR5cGVzIGFyZSBjb252ZXJ0ZWQgdG8gaW50Lgor
Ly8gKiBUT0RPKGxhcik6IF9faW50MTI4ID0+IHVpbnQxMjgsIGV4Y2VwdCB0aGVyZSBpcyBubyBv
cGVyYXRvciA8PCB5ZXQuCisvLwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qgc3RyZWFt
X2Zvcm1hdF90eXBlCisgICAgOiBwdWJsaWMgc3RkOjpjb25kaXRpb25hbDwoc2l6ZW9mKFQpID09
IHNpemVvZihjaGFyKSksIGludCwgVD4ge307CisKKy8vIHN0cmVhbV91MTI4X2hlbHBlciBhbGxv
d3MgdXMgdG8gd3JpdGUgb3V0IGVpdGhlciBhYnNsOjp1aW50MTI4IG9yCisvLyBfX3VpbnQxMjhf
dCB0eXBlcyBpbiB0aGUgc2FtZSB3YXksIHdoaWNoIGVuYWJsZXMgdGhlaXIgdXNlIGFzIGludGVy
bmFsCisvLyBzdGF0ZSBvZiBQUk5HIGVuZ2luZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0
cnVjdCBzdHJlYW1fdTEyOF9oZWxwZXI7CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3Qgc3RyZWFtX3Ux
MjhfaGVscGVyPGFic2w6OnVpbnQxMjg+IHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElTdHJlYW0+
CisgIGlubGluZSBhYnNsOjp1aW50MTI4IHJlYWQoSVN0cmVhbSYgaW4pIHsKKyAgICB1aW50NjRf
dCBoID0gMDsKKyAgICB1aW50NjRfdCBsID0gMDsKKyAgICBpbiA+PiBoID4+IGw7CisgICAgcmV0
dXJuIGFic2w6Ok1ha2VVaW50MTI4KGgsIGwpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IE9TdHJlYW0+CisgIGlubGluZSB2b2lkIHdyaXRlKGFic2w6OnVpbnQxMjggdmFsLCBPU3RyZWFt
JiBvdXQpIHsKKyAgICB1aW50NjRfdCBoID0gVWludDEyOEhpZ2g2NCh2YWwpOworICAgIHVpbnQ2
NF90IGwgPSBVaW50MTI4TG93NjQodmFsKTsKKyAgICBvdXQgPDwgaCA8PCBvdXQuZmlsbCgpIDw8
IGw7CisgIH0KK307CisKKyNpZmRlZiBBQlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOAordGVtcGxh
dGUgPD4KK3N0cnVjdCBzdHJlYW1fdTEyOF9oZWxwZXI8X191aW50MTI4X3Q+IHsKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIElTdHJlYW0+CisgIGlubGluZSBfX3VpbnQxMjhfdCByZWFkKElTdHJlYW0m
IGluKSB7CisgICAgdWludDY0X3QgaCA9IDA7CisgICAgdWludDY0X3QgbCA9IDA7CisgICAgaW4g
Pj4gaCA+PiBsOworICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8X191aW50MTI4X3Q+KGgpIDw8IDY0
KSB8IGw7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT1N0cmVhbT4KKyAgaW5saW5lIHZv
aWQgd3JpdGUoX191aW50MTI4X3QgdmFsLCBPU3RyZWFtJiBvdXQpIHsKKyAgICB1aW50NjRfdCBo
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbCA+PiA2NHUpOworICAgIHVpbnQ2NF90IGwgPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4odmFsKTsKKyAgICBvdXQgPDwgaCA8PCBvdXQuZmlsbCgpIDw8
IGw7CisgIH0KK307CisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0VHlwZSwgdHlw
ZW5hbWUgSVN0cmVhbT4KK2lubGluZSBGbG9hdFR5cGUgcmVhZF9mbG9hdGluZ19wb2ludChJU3Ry
ZWFtJiBpcykgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8RmxvYXRU
eXBlPjo6dmFsdWUsICIiKTsKKyAgRmxvYXRUeXBlIGRlc3Q7CisgIGlzID4+IGRlc3Q7CisgIC8v
IFBhcnNpbmcgYSBkb3VibGUgdmFsdWUgbWF5IHJlcG9ydCBhIHN1Ym5vcm1hbCB2YWx1ZSBhcyBh
biBlcnJvcgorICAvLyBkZXNwaXRlIGJlaW5nIGFibGUgdG8gcmVwcmVzZW50IGl0LgorICAvLyBT
ZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzUyNDEwOTMxLzMyODY2NTMKKyAgLy8gSXQg
bWF5IGFsc28gcmVwb3J0IGFuIHVuZGVyZmxvdyB3aGVuIHBhcnNpbmcgRE9VQkxFX01JTiBhcyBh
bgorICAvLyBFUkFOR0UgZXJyb3IsIGFzIHRoZSBwYXJzZWQgdmFsdWUgbWF5IGJlIHNtYWxsZXIg
dGhhbiBET1VCTEVfTUlOCisgIC8vIGFuZCByb3VuZGVkIHVwLgorICAvLyBTZWU6IGh0dHBzOi8v
c3RhY2tvdmVyZmxvdy5jb20vcS80MjAwNTQ2MgorICBpZiAoaXMuZmFpbCgpICYmCisgICAgICAo
c3RkOjpmYWJzKGRlc3QpID09IChzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1pbiko
KSB8fAorICAgICAgIHN0ZDo6ZnBjbGFzc2lmeShkZXN0KSA9PSBGUF9TVUJOT1JNQUwpKSB7Cisg
ICAgaXMuY2xlYXIoaXMucmRzdGF0ZSgpICYgKH5zdGQ6Omlvc19iYXNlOjpmYWlsYml0KSk7Cisg
IH0KKyAgcmV0dXJuIGRlc3Q7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwK
K30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxf
SU9TVFJFQU1fU1RBVEVfU0FWRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC9pb3N0cmVhbV9zdGF0ZV9zYXZlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2lv
c3RyZWFtX3N0YXRlX3NhdmVyX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjJlY2JhYWMxNDNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyX3Rlc3QuY2MKQEAgLTAsMCArMSwzNjkgQEAKKy8v
IENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9y
YW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCIKKworI2luY2x1ZGUgPHNzdHJl
YW0+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFt
ZXNwYWNlIHsKKwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjptYWtlX2lzdHJlYW1fc3Rh
dGVfc2F2ZXI7Cit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6Om1ha2Vfb3N0cmVhbV9zdGF0
ZV9zYXZlcjsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX3ByZWNpc2lvbl9o
ZWxwZXI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+ICAvLworU3RyZWFtUm91bmRUcmlwKFQg
dCkgeworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgeworICAgIGF1dG8gc2F2ZXIgPSBtYWtl
X29zdHJlYW1fc3RhdGVfc2F2ZXIoc3MpOworICAgIHNzLnByZWNpc2lvbihzdHJlYW1fcHJlY2lz
aW9uX2hlbHBlcjxUPjo6a1ByZWNpc2lvbik7CisgICAgc3MgPDwgdDsKKyAgfQorICBUIHJlc3Vs
dCA9IDA7CisgIHsKKyAgICBhdXRvIHNhdmVyID0gbWFrZV9pc3RyZWFtX3N0YXRlX3NhdmVyKHNz
KTsKKyAgICBzcyA+PiByZXN1bHQ7CisgIH0KKyAgRVhQRUNUX0ZBTFNFKHNzLmZhaWwoKSkgICAg
ICAgICAgICAvLworICAgICAgPDwgc3Muc3RyKCkgPDwgIiAiICAgICAgICAgICAgIC8vCisgICAg
ICA8PCAoc3MuZ29vZCgpID8gImdvb2QgIiA6ICIiKSAgLy8KKyAgICAgIDw8IChzcy5iYWQoKSA/
ICJiYWQgIiA6ICIiKSAgICAvLworICAgICAgPDwgKHNzLmVvZigpID8gImVvZiAiIDogIiIpICAg
IC8vCisgICAgICA8PCAoc3MuZmFpbCgpID8gImZhaWwgIiA6ICIiKTsKKworICByZXR1cm4gcmVz
dWx0OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPiAgLy8KK1N0cmVhbVJvdW5k
VHJpcChUIHQpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHsKKyAgICBhdXRvIHNhdmVy
ID0gbWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKHNzKTsKKyAgICBzcy5wcmVjaXNpb24oc3RyZWFt
X3ByZWNpc2lvbl9oZWxwZXI8VD46OmtQcmVjaXNpb24pOworICAgIHNzIDw8IHQ7CisgIH0KKyAg
VCByZXN1bHQgPSAwOworICB7CisgICAgYXV0byBzYXZlciA9IG1ha2VfaXN0cmVhbV9zdGF0ZV9z
YXZlcihzcyk7CisgICAgcmVzdWx0ID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpyZWFkX2Zsb2F0
aW5nX3BvaW50PFQ+KHNzKTsKKyAgfQorICBFWFBFQ1RfRkFMU0Uoc3MuZmFpbCgpKSAgICAgICAg
ICAgIC8vCisgICAgICA8PCBzcy5zdHIoKSA8PCAiICIgICAgICAgICAgICAgLy8KKyAgICAgIDw8
IChzcy5nb29kKCkgPyAiZ29vZCAiIDogIiIpICAvLworICAgICAgPDwgKHNzLmJhZCgpID8gImJh
ZCAiIDogIiIpICAgIC8vCisgICAgICA8PCAoc3MuZW9mKCkgPyAiZW9mICIgOiAiIikgICAgLy8K
KyAgICAgIDw8IChzcy5mYWlsKCkgPyAiZmFpbCAiIDogIiIpOworCisgIHJldHVybiByZXN1bHQ7
Cit9CisKK1RFU1QoSU9TdHJlYW1TdGF0ZVNhdmVyLCBCYXNpY1NhdmVyU3RhdGUpIHsKKyAgc3Rk
OjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzLnByZWNpc2lvbigyKTsKKyAgc3MuZmlsbCgneCcpOwor
ICBzcy5mbGFncyhzdGQ6Omlvc19iYXNlOjpkZWMgfCBzdGQ6Omlvc19iYXNlOjpyaWdodCk7CisK
KyAgeworICAgIGF1dG8gc2F2ZXIgPSBtYWtlX29zdHJlYW1fc3RhdGVfc2F2ZXIoc3MpOworICAg
IHNzLnByZWNpc2lvbigxMCk7CisgICAgRVhQRUNUX05FKCd4Jywgc3MuZmlsbCgpKTsKKyAgICBF
WFBFQ1RfRVEoMTAsIHNzLnByZWNpc2lvbigpKTsKKyAgICBFWFBFQ1RfTkUoc3RkOjppb3NfYmFz
ZTo6ZGVjIHwgc3RkOjppb3NfYmFzZTo6cmlnaHQsIHNzLmZsYWdzKCkpOworCisgICAgc3MgPDwg
MS4yMzsKKyAgfQorCisgIEVYUEVDVF9FUSgneCcsIHNzLmZpbGwoKSk7CisgIEVYUEVDVF9FUSgy
LCBzcy5wcmVjaXNpb24oKSk7CisgIEVYUEVDVF9FUShzdGQ6Omlvc19iYXNlOjpkZWMgfCBzdGQ6
Omlvc19iYXNlOjpyaWdodCwgc3MuZmxhZ3MoKSk7Cit9CisKK1RFU1QoSU9TdHJlYW1TdGF0ZVNh
dmVyLCBSb3VuZFRyaXBJbnRzKSB7CisgIGNvbnN0IHVpbnQ2NF90IGtVaW50VmFsdWVzW10gPSB7
CisgICAgICAwLAorICAgICAgMSwKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PigtMSksCisg
ICAgICAyLAorICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0yKSwKKworICAgICAgMSA8PCA3
LAorICAgICAgMSA8PCA4LAorICAgICAgMSA8PCAxNiwKKyAgICAgIDF1bGwgPDwgMzIsCisgICAg
ICAxdWxsIDw8IDUwLAorICAgICAgMXVsbCA8PCA2MiwKKyAgICAgIDF1bGwgPDwgNjMsCisKKyAg
ICAgICgxIDw8IDcpIC0gMSwKKyAgICAgICgxIDw8IDgpIC0gMSwKKyAgICAgICgxIDw8IDE2KSAt
IDEsCisgICAgICAoMXVsbCA8PCAzMikgLSAxLAorICAgICAgKDF1bGwgPDwgNTApIC0gMSwKKyAg
ICAgICgxdWxsIDw8IDYyKSAtIDEsCisgICAgICAoMXVsbCA8PCA2MykgLSAxLAorCisgICAgICBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oLSgxIDw8IDgpKSwKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2
NF90PigtKDEgPDwgMTYpKSwKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKDFsbCA8PCAz
MikpLAorICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0oMWxsIDw8IDUwKSksCisgICAgICBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oLSgxbGwgPDwgNjIpKSwKKworICAgICAgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KC0oMSA8PCA4KSAtIDEpLAorICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0o
MSA8PCAxNikgLSAxKSwKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKDFsbCA8PCAzMikg
LSAxKSwKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKDFsbCA8PCA1MCkgLSAxKSwKKyAg
ICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKDFsbCA8PCA2MikgLSAxKSwKKyAgfTsKKworICBm
b3IgKGNvbnN0IHVpbnQ2NF90IHUgOiBrVWludFZhbHVlcykgeworICAgIEVYUEVDVF9FUSh1LCBT
dHJlYW1Sb3VuZFRyaXA8dWludDY0X3Q+KHUpKTsKKworICAgIGludDY0X3QgeCA9IHN0YXRpY19j
YXN0PGludDY0X3Q+KHUpOworICAgIEVYUEVDVF9FUSh4LCBTdHJlYW1Sb3VuZFRyaXA8aW50NjRf
dD4oeCkpOworCisgICAgZG91YmxlIGQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHgpOworICAgIEVY
UEVDVF9FUShkLCBTdHJlYW1Sb3VuZFRyaXA8ZG91YmxlPihkKSk7CisKKyAgICBmbG9hdCBmID0g
ZDsKKyAgICBFWFBFQ1RfRVEoZiwgU3RyZWFtUm91bmRUcmlwPGZsb2F0PihmKSk7CisgIH0KK30K
KworVEVTVChJT1N0cmVhbVN0YXRlU2F2ZXIsIFJvdW5kVHJpcEZsb2F0cykgeworICBzdGF0aWNf
YXNzZXJ0KAorICAgICAgc3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8ZmxvYXQ+OjprUHJlY2lzaW9u
ID49IDksCisgICAgICAic3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8ZmxvYXQ+OjprUHJlY2lzaW9u
IHNob3VsZCBiZSBhdCBsZWFzdCA5Iik7CisKKyAgY29uc3QgZmxvYXQga1ZhbHVlc1tdID0gewor
ICAgICAgMSwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKDEuMGYsIDAuMGYpLCAgLy8gMSAtIGVwc2ls
b24KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKDEuMGYsIDIuMGYpLCAgLy8gMSArIGVwc2lsb24KKwor
ICAgICAgMS4wZSsxZiwKKyAgICAgIDEuMGUtMWYsCisgICAgICAxLjBlKzJmLAorICAgICAgMS4w
ZS0yZiwKKyAgICAgIDEuMGUrMTBmLAorICAgICAgMS4wZS0xMGYsCisKKyAgICAgIDAuMDAwMDAw
NTExMTAwMDAxMTEzMTExMTExMTFmLAorICAgICAgLTAuMDAwMDAwNTExMTAwMDAxMTEyMTExMTEx
MTFmLAorCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NWUrNmYsCisgICAgICAxLjIzNDY3
ODkxMjM0NTY3ODkxMjM0NWUtNmYsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NWUrMzBm
LAorICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlLTMwZiwKKyAgICAgIDEuMjM0Njc4OTEy
MzQ1Njc4OTEyMzQ1ZSszOGYsCisgICAgICAxLjAyMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlLTM4ZiwK
KworICAgICAgLy8gQm91bmRhcnkgY2FzZXMuCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6bWF4KCksCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bG93ZXN0KCks
CisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6ZXBzaWxvbigpLAorICAgICAgc3Rk
OjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1pbigpLAorICAgICAgICAg
ICAgICAgICAgICAgMS4wZiksICAgICAgICAgICAgICAgLy8gbWluICsgZXBzaWxvbgorICAgICAg
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1pbigpLCAgLy8gc21hbGxlc3Qgbm9ybWFsCisg
ICAgICAvLyBUaGVyZSBhcmUgc29tZSBlcnJvcnMgZGVhbGluZyB3aXRoIGRlbm9ybXMgb24gYXBw
bGUgcGxhdGZvcm1zLgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmRlbm9ybV9t
aW4oKSwgIC8vIHNtYWxsZXN0IGRlbm9ybQorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46Om1pbigpIC8gMiwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjptaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgIDAuMGYpLCAgLy8gZGVub3JtX21h
eAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmRlbm9y
bV9taW4oKSwgMS4wZiksCisgIH07CisKKyAgZm9yIChjb25zdCBmbG9hdCBmIDoga1ZhbHVlcykg
eworICAgIEVYUEVDVF9FUShmLCBTdHJlYW1Sb3VuZFRyaXA8ZmxvYXQ+KGYpKTsKKyAgICBFWFBF
Q1RfRVEoLWYsIFN0cmVhbVJvdW5kVHJpcDxmbG9hdD4oLWYpKTsKKworICAgIGRvdWJsZSBkID0g
ZjsKKyAgICBFWFBFQ1RfRVEoZCwgU3RyZWFtUm91bmRUcmlwPGRvdWJsZT4oZCkpOworICAgIEVY
UEVDVF9FUSgtZCwgU3RyZWFtUm91bmRUcmlwPGRvdWJsZT4oLWQpKTsKKworICAgIC8vIEF2b2lk
IHVuZGVmaW5lZCBiZWhhdmlvciAob3ZlcmZsb3cvdW5kZXJmbG93KS4KKyAgICBpZiAoZCA8PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSAmJgorICAgICAgICBkID49IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Omxvd2VzdCgpKSB7CisgICAgICBpbnQ2NF90IHggPSBz
dGF0aWNfY2FzdDxpbnQ2NF90PihmKTsKKyAgICAgIEVYUEVDVF9FUSh4LCBTdHJlYW1Sb3VuZFRy
aXA8aW50NjRfdD4oeCkpOworICAgIH0KKyAgfQorfQorCitURVNUKElPU3RyZWFtU3RhdGVTYXZl
ciwgUm91bmRUcmlwRG91YmxlcykgeworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgc3RyZWFtX3By
ZWNpc2lvbl9oZWxwZXI8ZG91YmxlPjo6a1ByZWNpc2lvbiA+PSAxNywKKyAgICAgICJzdHJlYW1f
cHJlY2lzaW9uX2hlbHBlcjxkb3VibGU+OjprUHJlY2lzaW9uIHNob3VsZCBiZSBhdCBsZWFzdCAx
NyIpOworCisgIGNvbnN0IGRvdWJsZSBrVmFsdWVzW10gPSB7CisgICAgICAxLAorICAgICAgc3Rk
OjpuZXh0YWZ0ZXIoMS4wLCAwLjApLCAgLy8gMSAtIGVwc2lsb24KKyAgICAgIHN0ZDo6bmV4dGFm
dGVyKDEuMCwgMi4wKSwgIC8vIDEgKyBlcHNpbG9uCisKKyAgICAgIDEuMGUrMSwKKyAgICAgIDEu
MGUtMSwKKyAgICAgIDEuMGUrMiwKKyAgICAgIDEuMGUtMiwKKyAgICAgIDEuMGUrMTAsCisgICAg
ICAxLjBlLTEwLAorCisgICAgICAwLjAwMDAwMDUxMTEwMDAwMTExMzExMTExMTExLAorICAgICAg
LTAuMDAwMDAwNTExMTAwMDAxMTEyMTExMTExMTEsCisKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4
OTEyMzQ1ZSs2LAorICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlLTYsCisgICAgICAxLjIz
NDY3ODkxMjM0NTY3ODkxMjM0NWUrMzAsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NWUt
MzAsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NWUrMzgsCisgICAgICAxLjAyMzQ2Nzg5
MTIzNDU2Nzg5MTIzNDVlLTM4LAorCisgICAgICAxLjBlKzEwMCwKKyAgICAgIDEuMGUtMTAwLAor
ICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlKzMwOCwKKyAgICAgIDEuMDIzNDY3ODkxMjM0
NTY3ODkxMjM0NWUtMzA4LAorICAgICAgMi4yMjUwNzM4NTg1MDcyMDEzOGUtMzA4LAorCisgICAg
ICAvLyBCb3VuZGFyeSBjYXNlcy4KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
bWF4KCksCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLAorICAg
ICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjplcHNpbG9uKCksCisgICAgICBzdGQ6Om5l
eHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpLAorICAgICAgICAgICAg
ICAgICAgICAgMS4wKSwgICAgICAgICAgICAgICAgIC8vIG1pbiArIGVwc2lsb24KKyAgICAgIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWluKCksICAvLyBzbWFsbGVzdCBub3JtYWwKKyAg
ICAgIC8vIFRoZXJlIGFyZSBzb21lIGVycm9ycyBkZWFsaW5nIHdpdGggZGVub3JtcyBvbiBhcHBs
ZSBwbGF0Zm9ybXMuCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRlbm9ybV9t
aW4oKSwgIC8vIHNtYWxsZXN0IGRlbm9ybQorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptaW4oKSAvIDIsCisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAgMC4wKSwgIC8vIGRlbm9ybV9t
YXgKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGVu
b3JtX21pbigpLCAxLjBmKSwKKyAgfTsKKworICBmb3IgKGNvbnN0IGRvdWJsZSBkIDoga1ZhbHVl
cykgeworICAgIEVYUEVDVF9FUShkLCBTdHJlYW1Sb3VuZFRyaXA8ZG91YmxlPihkKSk7CisgICAg
RVhQRUNUX0VRKC1kLCBTdHJlYW1Sb3VuZFRyaXA8ZG91YmxlPigtZCkpOworCisgICAgLy8gQXZv
aWQgdW5kZWZpbmVkIGJlaGF2aW9yIChvdmVyZmxvdy91bmRlcmZsb3cpLgorICAgIGlmIChkIDw9
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAmJgorICAgICAgICBkID49IHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpsb3dlc3QoKSkgeworICAgICAgZmxvYXQgZiA9IHN0YXRp
Y19jYXN0PGZsb2F0PihkKTsKKyAgICAgIEVYUEVDVF9FUShmLCBTdHJlYW1Sb3VuZFRyaXA8Zmxv
YXQ+KGYpKTsKKyAgICB9CisKKyAgICAvLyBBdm9pZCB1bmRlZmluZWQgYmVoYXZpb3IgKG92ZXJm
bG93L3VuZGVyZmxvdykuCisgICAgaWYgKGQgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KCkgJiYKKyAgICAgICAgZCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojps
b3dlc3QoKSkgeworICAgICAgaW50NjRfdCB4ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oZCk7Cisg
ICAgICBFWFBFQ1RfRVEoeCwgU3RyZWFtUm91bmRUcmlwPGludDY0X3Q+KHgpKTsKKyAgICB9Cisg
IH0KK30KKworVEVTVChJT1N0cmVhbVN0YXRlU2F2ZXIsIFJvdW5kVHJpcExvbmdEb3VibGVzKSB7
CisgIC8vIFRlY2huaWNhbGx5LCBDKysgb25seSBndWFyYW50ZWVzIHRoYXQgbG9uZyBkb3VibGUg
aXMgYXQgbGVhc3QgYXMgbGFyZ2UgYXMgYQorICAvLyBkb3VibGUuICBQcmFjdGljYWxseSBpdCB2
YXJpZXMgZnJvbSA2NC1iaXRzIHRvIDEyOC1iaXRzLgorICAvLworICAvLyBTbyBpdCBpcyBiZXN0
IHRvIGNvbnNpZGVyIGxvbmcgZG91YmxlIGEgYmVzdC1lZmZvcnQgZXh0ZW5kZWQgcHJlY2lzaW9u
CisgIC8vIHR5cGUuCisKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIHN0cmVhbV9wcmVjaXNpb25f
aGVscGVyPGxvbmcgZG91YmxlPjo6a1ByZWNpc2lvbiA+PSAzNiwKKyAgICAgICJzdHJlYW1fcHJl
Y2lzaW9uX2hlbHBlcjxsb25nIGRvdWJsZT46OmtQcmVjaXNpb24gc2hvdWxkIGJlIGF0IGxlYXN0
IDM2Iik7CisKKyAgdXNpbmcgcmVhbF90eXBlID0gbG9uZyBkb3VibGU7CisgIGNvbnN0IHJlYWxf
dHlwZSBrVmFsdWVzW10gPSB7CisgICAgICAxLAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoMS4wLCAw
LjApLCAgLy8gMSAtIGVwc2lsb24KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKDEuMCwgMi4wKSwgIC8v
IDEgKyBlcHNpbG9uCisKKyAgICAgIDEuMGUrMSwKKyAgICAgIDEuMGUtMSwKKyAgICAgIDEuMGUr
MiwKKyAgICAgIDEuMGUtMiwKKyAgICAgIDEuMGUrMTAsCisgICAgICAxLjBlLTEwLAorCisgICAg
ICAwLjAwMDAwMDUxMTEwMDAwMTExMzExMTExMTExLAorICAgICAgLTAuMDAwMDAwNTExMTAwMDAx
MTEyMTExMTExMTEsCisKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4
OWUrNiwKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OWUtNiwKKyAg
ICAgIDEuMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OWUrMzAsCisgICAgICAxLjIz
NDY3ODkxMjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODllLTMwLAorICAgICAgMS4yMzQ2Nzg5MTIz
NDU2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5ZSszOCwKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4OTEy
MzQ1Njc4OTEyMzQ1Njc4OWUtMzgsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NTY3ODkx
MjM0NTY3ODllKzMwOCwKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4
OWUtMzA4LAorCisgICAgICAxLjBlKzEwMCwKKyAgICAgIDEuMGUtMTAwLAorICAgICAgMS4yMzQ2
Nzg5MTIzNDU2Nzg5MTIzNDVlKzMwOCwKKyAgICAgIDEuMDIzNDY3ODkxMjM0NTY3ODkxMjM0NWUt
MzA4LAorCisgICAgICAvLyBCb3VuZGFyeSBjYXNlcy4KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8cmVhbF90eXBlPjo6bWF4KCksCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHJlYWxfdHlw
ZT46Omxvd2VzdCgpLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxyZWFsX3R5cGU+OjplcHNp
bG9uKCksCisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRzPHJlYWxfdHlw
ZT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAgcmVhbF90eXBlKDEpKSwgICAgICAgICAg
IC8vIG1pbiArIGVwc2lsb24KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVhbF90eXBlPjo6
bWluKCksICAvLyBzbWFsbGVzdCBub3JtYWwKKyAgICAgIC8vIFRoZXJlIGFyZSBzb21lIGVycm9y
cyBkZWFsaW5nIHdpdGggZGVub3JtcyBvbiBhcHBsZSBwbGF0Zm9ybXMuCisgICAgICBzdGQ6Om51
bWVyaWNfbGltaXRzPHJlYWxfdHlwZT46OmRlbm9ybV9taW4oKSwgIC8vIHNtYWxsZXN0IGRlbm9y
bQorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxyZWFsX3R5cGU+OjptaW4oKSAvIDIsCisgICAg
ICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRzPHJlYWxfdHlwZT46Om1pbigpLAor
ICAgICAgICAgICAgICAgICAgICAgMC4wKSwgIC8vIGRlbm9ybV9tYXgKKyAgICAgIHN0ZDo6bmV4
dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVhbF90eXBlPjo6ZGVub3JtX21pbigpLCAxLjBm
KSwKKyAgfTsKKworICBpbnQgaW5kZXggPSAtMTsKKyAgZm9yIChjb25zdCBsb25nIGRvdWJsZSBk
ZCA6IGtWYWx1ZXMpIHsKKyAgICBpbmRleCsrOworICAgIEVYUEVDVF9FUShkZCwgU3RyZWFtUm91
bmRUcmlwPHJlYWxfdHlwZT4oZGQpKSA8PCBpbmRleDsKKyAgICBFWFBFQ1RfRVEoLWRkLCBTdHJl
YW1Sb3VuZFRyaXA8cmVhbF90eXBlPigtZGQpKSA8PCBpbmRleDsKKworICAgIC8vIEF2b2lkIHVu
ZGVmaW5lZCBiZWhhdmlvciAob3ZlcmZsb3cvdW5kZXJmbG93KS4KKyAgICBpZiAoZGQgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSAmJgorICAgICAgICBkZCA+PSBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpKSB7CisgICAgICBkb3VibGUgZCA9IHN0YXRp
Y19jYXN0PGRvdWJsZT4oZGQpOworICAgICAgRVhQRUNUX0VRKGQsIFN0cmVhbVJvdW5kVHJpcDxk
b3VibGU+KGQpKTsKKyAgICB9CisKKyAgICAvLyBBdm9pZCB1bmRlZmluZWQgYmVoYXZpb3IgKG92
ZXJmbG93L3VuZGVyZmxvdykuCisgICAgaWYgKGRkIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
NjRfdD46Om1heCgpICYmCisgICAgICAgIGRkID49IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRf
dD46Omxvd2VzdCgpKSB7CisgICAgICBpbnQ2NF90IHggPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihk
ZCk7CisgICAgICBFWFBFQ1RfRVEoeCwgU3RyZWFtUm91bmRUcmlwPGludDY0X3Q+KHgpKTsKKyAg
ICB9CisgIH0KK30KKworVEVTVChTdHJUb0RUZXN0LCBEb3VibGVNaW4pIHsKKyAgY29uc3QgY2hh
ciBrVltdID0gIjIuMjI1MDczODU4NTA3MjAxMzhlLTMwOCI7CisgIGNoYXIqIGVuZDsKKyAgZG91
YmxlIHggPSBzdGQ6OnN0cnRvZChrViwgJmVuZCk7CisgIEVYUEVDVF9FUShzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46Om1pbigpLCB4KTsKKyAgLy8gZXJybm8gbWF5IGVxdWFsIEVSQU5HRS4K
K30KKworVEVTVChTdHJUb0RUZXN0LCBEb3VibGVEZW5vcm1NaW4pIHsKKyAgY29uc3QgY2hhciBr
VltdID0gIjQuOTQwNjU2NDU4NDEyNDY1NDRlLTMyNCI7CisgIGNoYXIqIGVuZDsKKyAgZG91Ymxl
IHggPSBzdGQ6OnN0cnRvZChrViwgJmVuZCk7CisgIEVYUEVDVF9FUShzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OmRlbm9ybV9taW4oKSwgeCk7CisgIC8vIGVycm5vIG1heSBlcXVhbCBFUkFO
R0UuCit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVy
bmFsL25hbWVkX2dlbmVyYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9uYW1lZF9nZW5l
cmF0b3IuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxNjhhMjVi
ZTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25hbWVkX2dlbmVy
YXRvci5jYwpAQCAtMCwwICsxLDMwIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS9yYW5kb20uaCIKKworLy8gVGhpcyBwcm9ncmFtIGlzIHVzZWQg
aW4gaW50ZWdyYXRpb24gdGVzdHMuCisKK2ludCBtYWluKCkgeworICBhdXRvIHNlZWRfc2VxID0g
YWJzbDo6TWFrZVRhZ2dlZFNlZWRTZXEoIlRFU1RfR0VORVJBVE9SIiwgc3RkOjpjZXJyKTsKKyAg
YWJzbDo6Qml0R2VuIHJuZyhzZWVkX3NlcSk7CisgIGNvbnN0ZXhwciBzaXplX3Qga1NlcXVlbmNl
TGVuZ3RoID0gODsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrU2VxdWVuY2VMZW5ndGg7IGkr
KykgeworICAgIHN0ZDo6Y291dCA8PCBybmcoKSA8PCAiXG4iOworICB9CisgIHJldHVybiAwOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmsuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vaW50ZXJuYWwvbmFub2JlbmNobWFyay5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uN2YzNzgwMGM2ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vaW50ZXJuYWwvbmFub2JlbmNobWFyay5jYwpAQCAtMCwwICsxLDgxMCBAQAorLy8g
Q29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNs
dWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9uYW5vYmVuY2htYXJrLmgiCisKKyNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKworI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIHNvcnQKKyNpbmNsdWRlIDxh
dG9taWM+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUg
PGNzdGRsaWI+CisjaW5jbHVkZSA8Y3N0cmluZz4gIC8vIG1lbWNweQorI2luY2x1ZGUgPGxpbWl0
cz4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0
b3I+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNs
dWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9wbGF0Zm9ybS5oIgorI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2ludGVybmFsL3JhbmRlbl9lbmdpbmUuaCIKKworLy8gT1MKKyNpZiBkZWZpbmVkKF9XSU4z
MikgfHwgZGVmaW5lZChfV0lONjQpCisjZGVmaW5lIEFCU0xfT1NfV0lOCisjaW5jbHVkZSA8d2lu
ZG93cy5oPiAgLy8gTk9MSU5UCisKKyNlbGlmIGRlZmluZWQoX19BTkRST0lEX18pCisjZGVmaW5l
IEFCU0xfT1NfQU5EUk9JRAorCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKKyNkZWZpbmUgQUJT
TF9PU19MSU5VWAorI2luY2x1ZGUgPHNjaGVkLmg+ICAgICAgICAvLyBOT0xJTlQKKyNpbmNsdWRl
IDxzeXMvc3lzY2FsbC5oPiAgLy8gTk9MSU5UCisjZW5kaWYKKworI2lmIGRlZmluZWQoQUJTTF9B
UkNIX1g4Nl82NCkgJiYgIWRlZmluZWQoQUJTTF9PU19XSU4pCisjaW5jbHVkZSA8Y3B1aWQuaD4g
IC8vIE5PTElOVAorI2VuZGlmCisKKy8vIF9fcHBjX2dldF90aW1lYmFzZV9mcmVxCisjaWYgZGVm
aW5lZChBQlNMX0FSQ0hfUFBDKQorI2luY2x1ZGUgPHN5cy9wbGF0Zm9ybS9wcGMuaD4gIC8vIE5P
TElOVAorI2VuZGlmCisKKy8vIGNsb2NrX2dldHRpbWUKKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9B
Uk0pIHx8IGRlZmluZWQoQUJTTF9BUkNIX0FBUkNINjQpCisjaW5jbHVkZSA8dGltZS5oPiAgLy8g
Tk9MSU5UCisjZW5kaWYKKworLy8gQUJTTF9IQVZFX0FUVFJJQlVURQorI2lmICFkZWZpbmVkKEFC
U0xfSEFWRV9BVFRSSUJVVEUpCisjaWZkZWYgX19oYXNfYXR0cmlidXRlCisjZGVmaW5lIEFCU0xf
SEFWRV9BVFRSSUJVVEUoeCkgX19oYXNfYXR0cmlidXRlKHgpCisjZWxzZQorI2RlZmluZSBBQlNM
X0hBVkVfQVRUUklCVVRFKHgpIDAKKyNlbmRpZgorI2VuZGlmCisKKy8vIEFCU0xfUkFORE9NX0lO
VEVSTkFMX0FUVFJJQlVURV9ORVZFUl9JTkxJTkUgcHJldmVudHMgaW5saW5pbmcgb2YgdGhlIG1l
dGhvZC4KKyNpZiBBQlNMX0hBVkVfQVRUUklCVVRFKG5vaW5saW5lKSB8fCAoZGVmaW5lZChfX0dO
VUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKSkKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJO
QUxfQVRUUklCVVRFX05FVkVSX0lOTElORSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCisjZWxp
ZiBkZWZpbmVkKF9NU0NfVkVSKQorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJV
VEVfTkVWRVJfSU5MSU5FIF9fZGVjbHNwZWMobm9pbmxpbmUpCisjZWxzZQorI2RlZmluZSBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfTkVWRVJfSU5MSU5FCisjZW5kaWYKKworbmFtZXNw
YWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbF9uYW5vYmVuY2htYXJrIHsKK25h
bWVzcGFjZSB7CisKKy8vIEZvciBjb2RlIGZvbGRpbmcuCituYW1lc3BhY2UgcGxhdGZvcm0gewor
I2lmIGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkKKworLy8gVE9ETyhqYW53YXMpOiBNZXJnZSB3
aXRoIHRoZSBvbmUgaW4gcmFuZGVuX2h3YWVzLmNjPwordm9pZCBDcHVpZChjb25zdCB1aW50MzJf
dCBsZXZlbCwgY29uc3QgdWludDMyX3QgY291bnQsCisgICAgICAgICAgIHVpbnQzMl90KiBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBhYmNkKSB7CisjaWYgZGVmaW5lZChBQlNMX09TX1dJ
TikKKyAgaW50IHJlZ3NbNF07CisgIF9fY3B1aWRleChyZWdzLCBsZXZlbCwgY291bnQpOworICBm
b3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgIGFiY2RbaV0gPSByZWdzW2ldOworICB9
CisjZWxzZQorICB1aW50MzJfdCBhLCBiLCBjLCBkOworICBfX2NwdWlkX2NvdW50KGxldmVsLCBj
b3VudCwgYSwgYiwgYywgZCk7CisgIGFiY2RbMF0gPSBhOworICBhYmNkWzFdID0gYjsKKyAgYWJj
ZFsyXSA9IGM7CisgIGFiY2RbM10gPSBkOworI2VuZGlmCit9CisKK3N0ZDo6c3RyaW5nIEJyYW5k
U3RyaW5nKCkgeworICBjaGFyIGJyYW5kX3N0cmluZ1s0OV07CisgIHVpbnQzMl90IGFiY2RbNF07
CisKKyAgLy8gQ2hlY2sgaWYgYnJhbmQgc3RkOjpzdHJpbmcgaXMgc3VwcG9ydGVkIChpdCBpcyBv
biBhbGwgcmVhc29uYWJsZSBJbnRlbC9BTUQpCisgIENwdWlkKDB4ODAwMDAwMDBVLCAwLCBhYmNk
KTsKKyAgaWYgKGFiY2RbMF0gPCAweDgwMDAwMDA0VSkgeworICAgIHJldHVybiBzdGQ6OnN0cmlu
ZygpOworICB9CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICBDcHVpZCgw
eDgwMDAwMDAyVSArIGksIDAsIGFiY2QpOworICAgIG1lbWNweShicmFuZF9zdHJpbmcgKyBpICog
MTYsICZhYmNkLCBzaXplb2YoYWJjZCkpOworICB9CisgIGJyYW5kX3N0cmluZ1s0OF0gPSAwOwor
ICByZXR1cm4gYnJhbmRfc3RyaW5nOworfQorCisvLyBSZXR1cm5zIHRoZSBmcmVxdWVuY3kgcXVv
dGVkIGluc2lkZSB0aGUgYnJhbmQgc3RyaW5nLiBUaGlzIGRvZXMgbm90CisvLyBhY2NvdW50IGZv
ciB0aHJvdHRsaW5nIG5vciBUdXJibyBCb29zdC4KK2RvdWJsZSBOb21pbmFsQ2xvY2tSYXRlKCkg
eworICBjb25zdCBzdGQ6OnN0cmluZyYgYnJhbmRfc3RyaW5nID0gQnJhbmRTdHJpbmcoKTsKKyAg
Ly8gQnJhbmQgc3RyaW5ncyBpbmNsdWRlIHRoZSBtYXhpbXVtIGNvbmZpZ3VyZWQgZnJlcXVlbmN5
LiBUaGVzZSBwcmVmaXhlcyBhcmUKKyAgLy8gZGVmaW5lZCBieSBJbnRlbCBDUFVJRCBkb2N1bWVu
dGF0aW9uLgorICBjb25zdCBjaGFyKiBwcmVmaXhlc1szXSA9IHsiTUh6IiwgIkdIeiIsICJUSHoi
fTsKKyAgY29uc3QgZG91YmxlIG11bHRpcGxpZXJzWzNdID0gezFFNiwgMUU5LCAxRTEyfTsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICBjb25zdCBzaXplX3QgcG9zX3By
ZWZpeCA9IGJyYW5kX3N0cmluZy5maW5kKHByZWZpeGVzW2ldKTsKKyAgICBpZiAocG9zX3ByZWZp
eCAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgY29uc3Qgc2l6ZV90IHBvc19zcGFjZSA9
IGJyYW5kX3N0cmluZy5yZmluZCgnICcsIHBvc19wcmVmaXggLSAxKTsKKyAgICAgIGlmIChwb3Nf
c3BhY2UgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
ZGlnaXRzID0KKyAgICAgICAgICAgIGJyYW5kX3N0cmluZy5zdWJzdHIocG9zX3NwYWNlICsgMSwg
cG9zX3ByZWZpeCAtIHBvc19zcGFjZSAtIDEpOworICAgICAgICByZXR1cm4gc3RkOjpzdG9kKGRp
Z2l0cykgKiBtdWx0aXBsaWVyc1tpXTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICByZXR1cm4g
MC4wOworfQorCisjZW5kaWYgIC8vIEFCU0xfQVJDSF9YODZfNjQKK30gIC8vIG5hbWVzcGFjZSBw
bGF0Zm9ybQorCisvLyBQcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbSBlbGlkaW5nIHRoZSBjb21w
dXRhdGlvbnMgdGhhdCBsZWQgdG8gIm91dHB1dCIuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2lubGlu
ZSB2b2lkIFByZXZlbnRFbGlzaW9uKFQmJiBvdXRwdXQpIHsKKyNpZm5kZWYgQUJTTF9PU19XSU4K
KyAgLy8gV29ya3MgYnkgaW5kaWNhdGluZyB0byB0aGUgY29tcGlsZXIgdGhhdCAib3V0cHV0IiBp
cyBiZWluZyByZWFkIGFuZAorICAvLyBtb2RpZmllZC4gVGhlICtyIGNvbnN0cmFpbnQgYXZvaWRz
IHVubmVjZXNzYXJ5IHdyaXRlcyB0byBtZW1vcnksIGJ1dCBvbmx5CisgIC8vIHdvcmtzIGZvciBi
dWlsdC1pbiB0eXBlcyAodHlwaWNhbGx5IEZ1bmNPdXRwdXQpLgorICBhc20gdm9sYXRpbGUoIiIg
OiAiK3IiKG91dHB1dCkgOiA6ICJtZW1vcnkiKTsKKyNlbHNlCisgIC8vIE1TVkMgZG9lcyBub3Qg
c3VwcG9ydCBpbmxpbmUgYXNzZW1ibHkgYW55bW9yZSAoYW5kIG5ldmVyIHN1cHBvcnRlZCBHQ0Mn
cworICAvLyBSVEwgY29uc3RyYWludHMpLiBTZWxmLWFzc2lnbm1lbnQgd2l0aCAjcHJhZ21hIG9w
dGltaXplKCJvZmYiKSBtaWdodCBiZQorICAvLyBleHBlY3RlZCB0byBwcmV2ZW50IGVsaXNpb24s
IGJ1dCBpdCBkb2VzIG5vdCB3aXRoIE1TVkMgMjAxNS4gVHlwZS1wdW5uaW5nCisgIC8vIHdpdGgg
dm9sYXRpbGUgcG9pbnRlcnMgZ2VuZXJhdGVzIGluZWZmaWNpZW50IGNvZGUgb24gTVNWQyAyMDE3
LgorICBzdGF0aWMgc3RkOjphdG9taWM8VD4gZHVtbXkoVHt9KTsKKyAgZHVtbXkuc3RvcmUob3V0
cHV0LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyNlbmRpZgorfQorCituYW1lc3BhY2Ug
dGltZXIgeworCisvLyBTdGFydC9TdG9wIHJldHVybiBhYnNvbHV0ZSB0aW1lc3RhbXBzIGFuZCBt
dXN0IGJlIHBsYWNlZCBpbW1lZGlhdGVseSBiZWZvcmUKKy8vIGFuZCBhZnRlciB0aGUgcmVnaW9u
IHRvIG1lYXN1cmUuIFdlIHByb3ZpZGUgc2VwYXJhdGUgU3RhcnQvU3RvcCBmdW5jdGlvbnMKKy8v
IGJlY2F1c2UgdGhleSB1c2UgZGlmZmVyZW50IGZlbmNlcy4KKy8vCisvLyBCYWNrZ3JvdW5kOiBS
RFRTQyBpcyBub3QgJ3NlcmlhbGl6aW5nJzsgZWFybGllciBpbnN0cnVjdGlvbnMgbWF5IGNvbXBs
ZXRlCisvLyBhZnRlciBpdCwgYW5kL29yIGxhdGVyIGluc3RydWN0aW9ucyBtYXkgY29tcGxldGUg
YmVmb3JlIGl0LiAnRmVuY2VzJyBlbnN1cmUKKy8vIHJlZ2lvbnMnIGVsYXBzZWQgdGltZXMgYXJl
IGluZGVwZW5kZW50IG9mIHN1Y2ggcmVvcmRlcmluZy4gVGhlIG9ubHkKKy8vIGRvY3VtZW50ZWQg
dW5wcml2aWxlZ2VkIHNlcmlhbGl6aW5nIGluc3RydWN0aW9uIGlzIENQVUlELCB3aGljaCBhY3Rz
IGFzIGEKKy8vIGZ1bGwgZmVuY2UgKG5vIHJlb3JkZXJpbmcgYWNyb3NzIGl0IGluIGVpdGhlciBk
aXJlY3Rpb24pLiBVbmZvcnR1bmF0ZWx5CisvLyB0aGUgbGF0ZW5jeSBvZiBDUFVJRCB2YXJpZXMg
d2lsZGx5IChwZXJoYXBzIG1hZGUgd29yc2UgYnkgbm90IGluaXRpYWxpemluZworLy8gaXRzIEVB
WCBpbnB1dCkuIEJlY2F1c2UgaXQgY2Fubm90IHJlbGlhYmx5IGJlIGRlZHVjdGVkIGZyb20gdGhl
IHJlZ2lvbidzCisvLyBlbGFwc2VkIHRpbWUsIGl0IG11c3Qgbm90IGJlIGluY2x1ZGVkIGluIHRo
ZSByZWdpb24gdG8gbWVhc3VyZSAoaS5lLgorLy8gYmV0d2VlbiB0aGUgdHdvIFJEVFNDKS4KKy8v
CisvLyBUaGUgbmV3ZXIgUkRUU0NQIGlzIHNvbWV0aW1lcyBkZXNjcmliZWQgYXMgc2VyaWFsaXpp
bmcsIGJ1dCBpdCBhY3R1YWxseQorLy8gb25seSBzZXJ2ZXMgYXMgYSBoYWxmLWZlbmNlIHdpdGgg
cmVsZWFzZSBzZW1hbnRpY3MuIEFsdGhvdWdoIGFsbAorLy8gaW5zdHJ1Y3Rpb25zIGluIHRoZSBy
ZWdpb24gd2lsbCBjb21wbGV0ZSBiZWZvcmUgdGhlIGZpbmFsIHRpbWVzdGFtcCBpcworLy8gY2Fw
dHVyZWQsIHN1YnNlcXVlbnQgaW5zdHJ1Y3Rpb25zIG1heSBsZWFrIGludG8gdGhlIHJlZ2lvbiBh
bmQgaW5jcmVhc2UgdGhlCisvLyBlbGFwc2VkIHRpbWUuIEluc2VydGluZyBhbm90aGVyIGZlbmNl
IGFmdGVyIHRoZSBmaW5hbCBSRFRTQ1Agd291bGQgcHJldmVudAorLy8gc3VjaCByZW9yZGVyaW5n
IHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBtZWFzdXJlZCByZWdpb24uCisvLworLy8gRm9ydHVuYXRl
bHksIHN1Y2ggYSBmZW5jZSBleGlzdHMuIFRoZSBMRkVOQ0UgaW5zdHJ1Y3Rpb24gaXMgb25seSBk
b2N1bWVudGVkCisvLyB0byBkZWxheSBsYXRlciBsb2FkcyB1bnRpbCBlYXJsaWVyIGxvYWRzIGFy
ZSB2aXNpYmxlLiBIb3dldmVyLCBJbnRlbCdzCisvLyByZWZlcmVuY2UgbWFudWFsIHNheXMgaXQg
YWN0cyBhcyBhIGZ1bGwgZmVuY2UgKHdhaXRpbmcgdW50aWwgYWxsIGVhcmxpZXIKKy8vIGluc3Ry
dWN0aW9ucyBoYXZlIGNvbXBsZXRlZCwgYW5kIGRlbGF5aW5nIGxhdGVyIGluc3RydWN0aW9ucyB1
bnRpbCBpdAorLy8gY29tcGxldGVzKS4gQU1EIGFzc2lnbnMgdGhlIHNhbWUgYmVoYXZpb3IgdG8g
TUZFTkNFLgorLy8KKy8vIFdlIG5lZWQgYSBmZW5jZSBiZWZvcmUgdGhlIGluaXRpYWwgUkRUU0Mg
dG8gcHJldmVudCBlYXJsaWVyIGluc3RydWN0aW9ucworLy8gZnJvbSBsZWFraW5nIGludG8gdGhl
IHJlZ2lvbiwgYW5kIGFyZ3VhYmx5IGFub3RoZXIgYWZ0ZXIgUkRUU0MgdG8gYXZvaWQKKy8vIHJl
Z2lvbiBpbnN0cnVjdGlvbnMgZnJvbSBjb21wbGV0aW5nIGJlZm9yZSB0aGUgdGltZXN0YW1wIGlz
IHJlY29yZGVkLgorLy8gV2hlbiBzdXJyb3VuZGVkIGJ5IGZlbmNlcywgdGhlIGFkZGl0aW9uYWwg
UkRUU0NQIGhhbGYtZmVuY2UgcHJvdmlkZXMgbm8KKy8vIGJlbmVmaXQsIHNvIHRoZSBpbml0aWFs
IHRpbWVzdGFtcCBjYW4gYmUgcmVjb3JkZWQgdmlhIFJEVFNDLCB3aGljaCBoYXMKKy8vIGxvd2Vy
IG92ZXJoZWFkIHRoYW4gUkRUU0NQIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVhZCBUU0NfQVVYLiBJ
biBzdW1tYXJ5LAorLy8gd2UgZGVmaW5lIFN0YXJ0ID0gTEZFTkNFL1JEVFNDL0xGRU5DRTsgU3Rv
cCA9IFJEVFNDUC9MRkVOQ0UuCisvLworLy8gVXNpbmcgU3RhcnQrU3RhcnQgbGVhZHMgdG8gaGln
aGVyIHZhcmlhbmNlIGFuZCBvdmVyaGVhZCB0aGFuIFN0b3ArU3RvcC4KKy8vIEhvd2V2ZXIsIFN0
b3ArU3RvcCBpbmNsdWRlcyBhbiBMRkVOQ0UgaW4gdGhlIHJlZ2lvbiBtZWFzdXJlbWVudHMsIHdo
aWNoCisvLyBhZGRzIGEgZGVsYXkgZGVwZW5kZW50IG9uIGVhcmxpZXIgbG9hZHMuIFRoZSBjb21i
aW5hdGlvbiBvZiBTdGFydCtTdG9wCisvLyBpcyBmYXN0ZXIgdGhhbiBTdGFydCtTdGFydCBhbmQg
bW9yZSBjb25zaXN0ZW50IHRoYW4gU3RvcCtTdG9wIGJlY2F1c2UKKy8vIHRoZSBmaXJzdCBMRkVO
Q0UgYWxyZWFkeSBkZWxheWVkIHN1YnNlcXVlbnQgbG9hZHMgYmVmb3JlIHRoZSBtZWFzdXJlZAor
Ly8gcmVnaW9uLiBUaGlzIGNvbWJpbmF0aW9uIHNlZW1zIG5vdCB0byBoYXZlIGJlZW4gY29uc2lk
ZXJlZCBpbiBwcmlvciB3b3JrOgorLy8gaHR0cDovL2FrYXJvcy5jcy5iZXJrZWxleS5lZHUvbHhy
L2FrYXJvcy9rZXJuL2FyY2gveDg2L3JkdHNjX3Rlc3QuYworLy8KKy8vIE5vdGU6IHBlcmZvcm1h
bmNlIGNvdW50ZXJzIGNhbiBtZWFzdXJlICdleGFjdCcgaW5zdHJ1Y3Rpb25zLXJldGlyZWQgb3IK
Ky8vICh1bmhhbHRlZCkgY3ljbGUgY291bnRzLiBUaGUgUkRQTUMgaW5zdHJ1Y3Rpb24gaXMgbm90
IHNlcmlhbGl6aW5nIGFuZCBhbHNvCisvLyByZXF1aXJlcyBmZW5jZXMuIFVuZm9ydHVuYXRlbHks
IGl0IGlzIG5vdCBhY2Nlc3NpYmxlIG9uIGFsbCBPU2VzIGFuZCB3ZQorLy8gcHJlZmVyIHRvIGF2
b2lkIGtlcm5lbC1tb2RlIGRyaXZlcnMuIFBlcmZvcm1hbmNlIGNvdW50ZXJzIGFyZSBhbHNvIGFm
ZmVjdGVkCisvLyBieSBzZXZlcmFsIHVuZGVyL292ZXItY291bnQgZXJyYXRhLCBzbyB3ZSB1c2Ug
dGhlIFRTQyBpbnN0ZWFkLgorCisvLyBSZXR1cm5zIGEgNjQtYml0IHRpbWVzdGFtcCBpbiB1bml0
IG9mICd0aWNrcyc7IHRvIGNvbnZlcnQgdG8gc2Vjb25kcywKKy8vIGRpdmlkZSBieSBJbnZhcmlh
bnRUaWNrc1BlclNlY29uZC4KK2lubGluZSB1aW50NjRfdCBTdGFydDY0KCkgeworICB1aW50NjRf
dCB0OworI2lmIGRlZmluZWQoQUJTTF9BUkNIX1BQQykKKyAgYXNtIHZvbGF0aWxlKCJtZnNwciAl
MCwgJTEiIDogIj1yIih0KSA6ICJpIigyNjgpKTsKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNIX1g4
Nl82NCkKKyNpZiBkZWZpbmVkKEFCU0xfT1NfV0lOKQorICBfUmVhZFdyaXRlQmFycmllcigpOwor
ICBfbW1fbGZlbmNlKCk7CisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7CisgIHQgPSBfX3JkdHNjKCk7
CisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7CisgIF9tbV9sZmVuY2UoKTsKKyAgX1JlYWRXcml0ZUJh
cnJpZXIoKTsKKyNlbHNlCisgIGFzbSB2b2xhdGlsZSgKKyAgICAgICJsZmVuY2Vcblx0IgorICAg
ICAgInJkdHNjXG5cdCIKKyAgICAgICJzaGwgJDMyLCAlJXJkeFxuXHQiCisgICAgICAib3IgJSVy
ZHgsICUwXG5cdCIKKyAgICAgICJsZmVuY2UiCisgICAgICA6ICI9YSIodCkKKyAgICAgIDoKKyAg
ICAgIC8vICJtZW1vcnkiIGF2b2lkcyByZW9yZGVyaW5nLiByZHggPSBUU0MgPj4gMzIuCisgICAg
ICAvLyAiY2MiID0gZmxhZ3MgbW9kaWZpZWQgYnkgU0hMLgorICAgICAgOiAicmR4IiwgIm1lbW9y
eSIsICJjYyIpOworI2VuZGlmCisjZWxzZQorICAvLyBGYWxsIGJhY2sgdG8gT1MgLSB1bnN1cmUg
aG93IHRvIHJlbGlhYmx5IHF1ZXJ5IGNudHZjdF9lbDAgZnJlcXVlbmN5LgorICB0aW1lc3BlYyB0
czsKKyAgY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKTsKKyAgdCA9IHRzLnR2X3Nl
YyAqIDEwMDAwMDAwMDBMTCArIHRzLnR2X25zZWM7CisjZW5kaWYKKyAgcmV0dXJuIHQ7Cit9CisK
K2lubGluZSB1aW50NjRfdCBTdG9wNjQoKSB7CisgIHVpbnQ2NF90IHQ7CisjaWYgZGVmaW5lZChB
QlNMX0FSQ0hfWDg2XzY0KQorI2lmIGRlZmluZWQoQUJTTF9PU19XSU4pCisgIF9SZWFkV3JpdGVC
YXJyaWVyKCk7CisgIHVuc2lnbmVkIGF1eDsKKyAgdCA9IF9fcmR0c2NwKCZhdXgpOworICBfUmVh
ZFdyaXRlQmFycmllcigpOworICBfbW1fbGZlbmNlKCk7CisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7
CisjZWxzZQorICAvLyBVc2UgaW5saW5lIGFzbSBiZWNhdXNlIF9fcmR0c2NwIGdlbmVyYXRlcyBj
b2RlIHRvIHN0b3JlIFRTQ19BVVggKGVjeCkuCisgIGFzbSB2b2xhdGlsZSgKKyAgICAgICJyZHRz
Y3Bcblx0IgorICAgICAgInNobCAkMzIsICUlcmR4XG5cdCIKKyAgICAgICJvciAlJXJkeCwgJTBc
blx0IgorICAgICAgImxmZW5jZSIKKyAgICAgIDogIj1hIih0KQorICAgICAgOgorICAgICAgLy8g
Im1lbW9yeSIgYXZvaWRzIHJlb3JkZXJpbmcuIHJjeCA9IFRTQ19BVVguIHJkeCA9IFRTQyA+PiAz
Mi4KKyAgICAgIC8vICJjYyIgPSBmbGFncyBtb2RpZmllZCBieSBTSEwuCisgICAgICA6ICJyY3gi
LCAicmR4IiwgIm1lbW9yeSIsICJjYyIpOworI2VuZGlmCisjZWxzZQorICB0ID0gU3RhcnQ2NCgp
OworI2VuZGlmCisgIHJldHVybiB0OworfQorCisvLyBSZXR1cm5zIGEgMzItYml0IHRpbWVzdGFt
cCB3aXRoIGFib3V0IDQgY3ljbGVzIGxlc3Mgb3ZlcmhlYWQgdGhhbgorLy8gU3RhcnQ2NC4gT25s
eSBzdWl0YWJsZSBmb3IgbWVhc3VyaW5nIHZlcnkgc2hvcnQgcmVnaW9ucyBiZWNhdXNlIHRoZQor
Ly8gdGltZXN0YW1wIG92ZXJmbG93cyBhYm91dCBvbmNlIGEgc2Vjb25kLgoraW5saW5lIHVpbnQz
Ml90IFN0YXJ0MzIoKSB7CisgIHVpbnQzMl90IHQ7CisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfWDg2
XzY0KQorI2lmIGRlZmluZWQoQUJTTF9PU19XSU4pCisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7Cisg
IF9tbV9sZmVuY2UoKTsKKyAgX1JlYWRXcml0ZUJhcnJpZXIoKTsKKyAgdCA9IHN0YXRpY19jYXN0
PHVpbnQzMl90PihfX3JkdHNjKCkpOworICBfUmVhZFdyaXRlQmFycmllcigpOworICBfbW1fbGZl
bmNlKCk7CisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7CisjZWxzZQorICBhc20gdm9sYXRpbGUoCisg
ICAgICAibGZlbmNlXG5cdCIKKyAgICAgICJyZHRzY1xuXHQiCisgICAgICAibGZlbmNlIgorICAg
ICAgOiAiPWEiKHQpCisgICAgICA6CisgICAgICAvLyAibWVtb3J5IiBhdm9pZHMgcmVvcmRlcmlu
Zy4gcmR4ID0gVFNDID4+IDMyLgorICAgICAgOiAicmR4IiwgIm1lbW9yeSIpOworI2VuZGlmCisj
ZWxzZQorICB0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFN0YXJ0NjQoKSk7CisjZW5kaWYKKyAg
cmV0dXJuIHQ7Cit9CisKK2lubGluZSB1aW50MzJfdCBTdG9wMzIoKSB7CisgIHVpbnQzMl90IHQ7
CisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzY0KQorI2lmIGRlZmluZWQoQUJTTF9PU19XSU4p
CisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7CisgIHVuc2lnbmVkIGF1eDsKKyAgdCA9IHN0YXRpY19j
YXN0PHVpbnQzMl90PihfX3JkdHNjcCgmYXV4KSk7CisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7Cisg
IF9tbV9sZmVuY2UoKTsKKyAgX1JlYWRXcml0ZUJhcnJpZXIoKTsKKyNlbHNlCisgIC8vIFVzZSBp
bmxpbmUgYXNtIGJlY2F1c2UgX19yZHRzY3AgZ2VuZXJhdGVzIGNvZGUgdG8gc3RvcmUgVFNDX0FV
WCAoZWN4KS4KKyAgYXNtIHZvbGF0aWxlKAorICAgICAgInJkdHNjcFxuXHQiCisgICAgICAibGZl
bmNlIgorICAgICAgOiAiPWEiKHQpCisgICAgICA6CisgICAgICAvLyAibWVtb3J5IiBhdm9pZHMg
cmVvcmRlcmluZy4gcmN4ID0gVFNDX0FVWC4gcmR4ID0gVFNDID4+IDMyLgorICAgICAgOiAicmN4
IiwgInJkeCIsICJtZW1vcnkiKTsKKyNlbmRpZgorI2Vsc2UKKyAgdCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PihTdG9wNjQoKSk7CisjZW5kaWYKKyAgcmV0dXJuIHQ7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSB0aW1lcgorCituYW1lc3BhY2Ugcm9idXN0X3N0YXRpc3RpY3MgeworCisvLyBTb3J0cyBp
bnRlZ3JhbCB2YWx1ZXMgaW4gYXNjZW5kaW5nIG9yZGVyIChlLmcuIGZvciBNb2RlKS4gQWJvdXQg
M3ggZmFzdGVyCisvLyB0aGFuIHN0ZDo6c29ydCBmb3IgaW5wdXQgZGlzdHJpYnV0aW9ucyB3aXRo
IHZlcnkgZmV3IHVuaXF1ZSB2YWx1ZXMuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3ZvaWQgQ291bnRp
bmdTb3J0KFQqIHZhbHVlcywgc2l6ZV90IG51bV92YWx1ZXMpIHsKKyAgLy8gVW5pcXVlIHZhbHVl
cyBhbmQgdGhlaXIgZnJlcXVlbmN5IChzaW1pbGFyIHRvIGZsYXRfbWFwKS4KKyAgdXNpbmcgVW5p
cXVlID0gc3RkOjpwYWlyPFQsIGludD47CisgIHN0ZDo6dmVjdG9yPFVuaXF1ZT4gdW5pcXVlOwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV92YWx1ZXM7ICsraSkgeworICAgIGNvbnN0IFQg
dmFsdWUgPSB2YWx1ZXNbaV07CisgICAgY29uc3QgYXV0byBwb3MgPQorICAgICAgICBzdGQ6OmZp
bmRfaWYodW5pcXVlLmJlZ2luKCksIHVuaXF1ZS5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAg
IFt2YWx1ZV0oY29uc3QgVW5pcXVlIHUpIHsgcmV0dXJuIHUuZmlyc3QgPT0gdmFsdWU7IH0pOwor
ICAgIGlmIChwb3MgPT0gdW5pcXVlLmVuZCgpKSB7CisgICAgICB1bmlxdWUucHVzaF9iYWNrKHN0
ZDo6bWFrZV9wYWlyKHZhbHVlLCAxKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICsrcG9zLT5zZWNv
bmQ7CisgICAgfQorICB9CisKKyAgLy8gU29ydCBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgdmFsdWUg
KHBhaXIuZmlyc3QpLgorICBzdGQ6OnNvcnQodW5pcXVlLmJlZ2luKCksIHVuaXF1ZS5lbmQoKSk7
CisKKyAgLy8gV3JpdGUgdGhhdCBtYW55IGNvcGllcyBvZiBlYWNoIHVuaXF1ZSB2YWx1ZSB0byB0
aGUgYXJyYXkuCisgIFQqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHAgPSB2YWx1ZXM7
CisgIGZvciAoY29uc3QgYXV0byYgdmFsdWVfY291bnQgOiB1bmlxdWUpIHsKKyAgICBzdGQ6OmZp
bGwocCwgcCArIHZhbHVlX2NvdW50LnNlY29uZCwgdmFsdWVfY291bnQuZmlyc3QpOworICAgIHAg
Kz0gdmFsdWVfY291bnQuc2Vjb25kOworICB9CisgIEFCU0xfUkFXX0NIRUNLKHAgPT0gdmFsdWVz
ICsgbnVtX3ZhbHVlcywgIkRpZCBub3QgcHJvZHVjZSBlbm91Z2ggb3V0cHV0Iik7Cit9CisKKy8v
IEByZXR1cm4gaSBpbiBbaWR4X2JlZ2luLCBpZHhfYmVnaW4gKyBoYWxmX2NvdW50KSB0aGF0IG1p
bmltaXplcworLy8gc29ydGVkW2kgKyBoYWxmX2NvdW50XSAtIHNvcnRlZFtpXS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc2l6ZV90IE1pblJhbmdlKGNvbnN0IFQqIGNvbnN0IEFCU0xfUkFORE9N
X0lOVEVSTkFMX1JFU1RSSUNUIHNvcnRlZCwKKyAgICAgICAgICAgICAgICBjb25zdCBzaXplX3Qg
aWR4X2JlZ2luLCBjb25zdCBzaXplX3QgaGFsZl9jb3VudCkgeworICBUIG1pbl9yYW5nZSA9IChz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCk7CisgIHNpemVfdCBtaW5faWR4ID0gMDsKKwor
ICBmb3IgKHNpemVfdCBpZHggPSBpZHhfYmVnaW47IGlkeCA8IGlkeF9iZWdpbiArIGhhbGZfY291
bnQ7ICsraWR4KSB7CisgICAgQUJTTF9SQVdfQ0hFQ0soc29ydGVkW2lkeF0gPD0gc29ydGVkW2lk
eCArIGhhbGZfY291bnRdLCAiTm90IHNvcnRlZCIpOworICAgIGNvbnN0IFQgcmFuZ2UgPSBzb3J0
ZWRbaWR4ICsgaGFsZl9jb3VudF0gLSBzb3J0ZWRbaWR4XTsKKyAgICBpZiAocmFuZ2UgPCBtaW5f
cmFuZ2UpIHsKKyAgICAgIG1pbl9yYW5nZSA9IHJhbmdlOworICAgICAgbWluX2lkeCA9IGlkeDsK
KyAgICB9CisgIH0KKworICByZXR1cm4gbWluX2lkeDsKK30KKworLy8gUmV0dXJucyBhbiBlc3Rp
bWF0ZSBvZiB0aGUgbW9kZSBieSBjYWxsaW5nIE1pblJhbmdlIG9uIHN1Y2Nlc3NpdmVseQorLy8g
aGFsdmVkIGludGVydmFscy4gInNvcnRlZCIgbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIuIFRo
aXMgaXMgdGhlCisvLyBIYWxmIFNhbXBsZSBNb2RlIGVzdGltYXRvciBwcm9wb3NlZCBieSBCaWNr
ZWwgaW4gIk9uIGEgZmFzdCwgcm9idXN0CisvLyBlc3RpbWF0b3Igb2YgdGhlIG1vZGUiLCB3aXRo
IGNvbXBsZXhpdHkgTyhOIGxvZyBOKS4gVGhlIG1vZGUgaXMgbGVzcworLy8gYWZmZWN0ZWQgYnkg
b3V0bGllcnMgaW4gaGlnaGx5LXNrZXdlZCBkaXN0cmlidXRpb25zIHRoYW4gdGhlIG1lZGlhbi4K
Ky8vIFRoZSBhdmVyYWdpbmcgb3BlcmF0aW9uIGJlbG93IGFzc3VtZXMgIlQiIGlzIGFuIHVuc2ln
bmVkIGludGVnZXIgdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBNb2RlT2ZTb3J0ZWQo
Y29uc3QgVCogY29uc3QgQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc29ydGVkLAorICAg
ICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bV92YWx1ZXMpIHsKKyAgc2l6ZV90IGlkeF9iZWdp
biA9IDA7CisgIHNpemVfdCBoYWxmX2NvdW50ID0gbnVtX3ZhbHVlcyAvIDI7CisgIHdoaWxlICho
YWxmX2NvdW50ID4gMSkgeworICAgIGlkeF9iZWdpbiA9IE1pblJhbmdlKHNvcnRlZCwgaWR4X2Jl
Z2luLCBoYWxmX2NvdW50KTsKKyAgICBoYWxmX2NvdW50ID4+PSAxOworICB9CisKKyAgY29uc3Qg
VCB4ID0gc29ydGVkW2lkeF9iZWdpbiArIDBdOworICBpZiAoaGFsZl9jb3VudCA9PSAwKSB7Cisg
ICAgcmV0dXJuIHg7CisgIH0KKyAgQUJTTF9SQVdfQ0hFQ0soaGFsZl9jb3VudCA9PSAxLCAiU2hv
dWxkIHN0b3AgYXQgaGFsZl9jb3VudD0xIik7CisgIGNvbnN0IFQgYXZlcmFnZSA9ICh4ICsgc29y
dGVkW2lkeF9iZWdpbiArIDFdICsgMSkgLyAyOworICByZXR1cm4gYXZlcmFnZTsKK30KKworLy8g
UmV0dXJucyB0aGUgbW9kZS4gU2lkZSBlZmZlY3Q6IHNvcnRzICJ2YWx1ZXMiLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitUIE1vZGUoVCogdmFsdWVzLCBjb25zdCBzaXplX3QgbnVtX3ZhbHVlcykg
eworICBDb3VudGluZ1NvcnQodmFsdWVzLCBudW1fdmFsdWVzKTsKKyAgcmV0dXJuIE1vZGVPZlNv
cnRlZCh2YWx1ZXMsIG51bV92YWx1ZXMpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6
ZV90IE4+CitUIE1vZGUoVCAoJnZhbHVlcylbTl0pIHsKKyAgcmV0dXJuIE1vZGUoJnZhbHVlc1sw
XSwgTik7Cit9CisKKy8vIFJldHVybnMgdGhlIG1lZGlhbiB2YWx1ZS4gU2lkZSBlZmZlY3Q6IHNv
cnRzICJ2YWx1ZXMiLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitUIE1lZGlhbihUKiB2YWx1ZXMs
IGNvbnN0IHNpemVfdCBudW1fdmFsdWVzKSB7CisgIEFCU0xfUkFXX0NIRUNLKG51bV92YWx1ZXMg
IT0gMCwgIkVtcHR5IGlucHV0Iik7CisgIHN0ZDo6c29ydCh2YWx1ZXMsIHZhbHVlcyArIG51bV92
YWx1ZXMpOworICBjb25zdCBzaXplX3QgaGFsZiA9IG51bV92YWx1ZXMgLyAyOworICAvLyBPZGQg
Y291bnQ6IHJldHVybiBtaWRkbGUKKyAgaWYgKG51bV92YWx1ZXMgJSAyKSB7CisgICAgcmV0dXJu
IHZhbHVlc1toYWxmXTsKKyAgfQorICAvLyBFdmVuIGNvdW50OiByZXR1cm4gYXZlcmFnZSBvZiBt
aWRkbGUgdHdvLgorICByZXR1cm4gKHZhbHVlc1toYWxmXSArIHZhbHVlc1toYWxmIC0gMV0gKyAx
KSAvIDI7Cit9CisKKy8vIFJldHVybnMgYSByb2J1c3QgbWVhc3VyZSBvZiB2YXJpYWJpbGl0eS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBNZWRpYW5BYnNvbHV0ZURldmlhdGlvbihjb25zdCBU
KiB2YWx1ZXMsIGNvbnN0IHNpemVfdCBudW1fdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUIG1lZGlhbikgeworICBBQlNMX1JBV19DSEVDSyhudW1fdmFsdWVzICE9IDAs
ICJFbXB0eSBpbnB1dCIpOworICBzdGQ6OnZlY3RvcjxUPiBhYnNfZGV2aWF0aW9uczsKKyAgYWJz
X2RldmlhdGlvbnMucmVzZXJ2ZShudW1fdmFsdWVzKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1fdmFsdWVzOyArK2kpIHsKKyAgICBjb25zdCBpbnQ2NF90IGFicyA9IHN0ZDo6YWJzKGlu
dDY0X3QodmFsdWVzW2ldKSAtIGludDY0X3QobWVkaWFuKSk7CisgICAgYWJzX2RldmlhdGlvbnMu
cHVzaF9iYWNrKHN0YXRpY19jYXN0PFQ+KGFicykpOworICB9CisgIHJldHVybiBNZWRpYW4oYWJz
X2RldmlhdGlvbnMuZGF0YSgpLCBudW1fdmFsdWVzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJv
YnVzdF9zdGF0aXN0aWNzCisKKy8vIFRpY2tzIDo9IHBsYXRmb3JtLXNwZWNpZmljIHRpbWVyIHZh
bHVlcyAoQ1BVIGN5Y2xlcyBvbiB4ODYpLiBNdXN0IGJlCisvLyB1bnNpZ25lZCB0byBndWFyYW50
ZWUgd3JhcGFyb3VuZCBvbiBvdmVyZmxvdy4gMzIgYml0IHRpbWVycyBhcmUgZmFzdGVyIHRvCisv
LyByZWFkIHRoYW4gNjQgYml0LgordXNpbmcgVGlja3MgPSB1aW50MzJfdDsKKworLy8gUmV0dXJu
cyB0aW1lciBvdmVyaGVhZCAvIG1pbmltdW0gbWVhc3VyYWJsZSBkaWZmZXJlbmNlLgorVGlja3Mg
VGltZXJSZXNvbHV0aW9uKCkgeworICAvLyBOZXN0ZWQgbG9vcCBhdm9pZHMgZXhjZWVkaW5nIHN0
YWNrL0wxIGNhcGFjaXR5LgorICBUaWNrcyByZXBldGl0aW9uc1tQYXJhbXM6OmtUaW1lclNhbXBs
ZXNdOworICBmb3IgKHNpemVfdCByZXAgPSAwOyByZXAgPCBQYXJhbXM6OmtUaW1lclNhbXBsZXM7
ICsrcmVwKSB7CisgICAgVGlja3Mgc2FtcGxlc1tQYXJhbXM6OmtUaW1lclNhbXBsZXNdOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgUGFyYW1zOjprVGltZXJTYW1wbGVzOyArK2kpIHsKKyAg
ICAgIGNvbnN0IFRpY2tzIHQwID0gdGltZXI6OlN0YXJ0MzIoKTsKKyAgICAgIGNvbnN0IFRpY2tz
IHQxID0gdGltZXI6OlN0b3AzMigpOworICAgICAgc2FtcGxlc1tpXSA9IHQxIC0gdDA7CisgICAg
fQorICAgIHJlcGV0aXRpb25zW3JlcF0gPSByb2J1c3Rfc3RhdGlzdGljczo6TW9kZShzYW1wbGVz
KTsKKyAgfQorICByZXR1cm4gcm9idXN0X3N0YXRpc3RpY3M6Ok1vZGUocmVwZXRpdGlvbnMpOwor
fQorCitzdGF0aWMgY29uc3QgVGlja3MgdGltZXJfcmVzb2x1dGlvbiA9IFRpbWVyUmVzb2x1dGlv
bigpOworCisvLyBFc3RpbWF0ZXMgdGhlIGV4cGVjdGVkIHZhbHVlIG9mICJsYW1iZGEiIHZhbHVl
cyB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mCisvLyBzYW1wbGVzIHVudGlsIHRoZSB2YXJpYWJp
bGl0eSAicmVsX21hZCIgaXMgbGVzcyB0aGFuICJtYXhfcmVsX21hZCIuCit0ZW1wbGF0ZSA8Y2xh
c3MgTGFtYmRhPgorVGlja3MgU2FtcGxlVW50aWxTdGFibGUoY29uc3QgZG91YmxlIG1heF9yZWxf
bWFkLCBkb3VibGUqIHJlbF9tYWQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXJh
bXMmIHAsIGNvbnN0IExhbWJkYSYgbGFtYmRhKSB7CisgIGF1dG8gbWVhc3VyZV9kdXJhdGlvbiA9
IFsmbGFtYmRhXSgpIC0+IFRpY2tzIHsKKyAgICBjb25zdCBUaWNrcyB0MCA9IHRpbWVyOjpTdGFy
dDMyKCk7CisgICAgbGFtYmRhKCk7CisgICAgY29uc3QgVGlja3MgdDEgPSB0aW1lcjo6U3RvcDMy
KCk7CisgICAgcmV0dXJuIHQxIC0gdDA7CisgIH07CisKKyAgLy8gQ2hvb3NlIGluaXRpYWwgc2Ft
cGxlc19wZXJfZXZhbCBiYXNlZCBvbiBhIHNpbmdsZSBlc3RpbWF0ZWQgZHVyYXRpb24uCisgIFRp
Y2tzIGVzdCA9IG1lYXN1cmVfZHVyYXRpb24oKTsKKyAgc3RhdGljIGNvbnN0IGRvdWJsZSB0aWNr
c19wZXJfc2Vjb25kID0gSW52YXJpYW50VGlja3NQZXJTZWNvbmQoKTsKKyAgY29uc3Qgc2l6ZV90
IHRpY2tzX3Blcl9ldmFsID0gdGlja3NfcGVyX3NlY29uZCAqIHAuc2Vjb25kc19wZXJfZXZhbDsK
KyAgc2l6ZV90IHNhbXBsZXNfcGVyX2V2YWwgPSB0aWNrc19wZXJfZXZhbCAvIGVzdDsKKyAgc2Ft
cGxlc19wZXJfZXZhbCA9IChzdGQ6Om1heCkoc2FtcGxlc19wZXJfZXZhbCwgcC5taW5fc2FtcGxl
c19wZXJfZXZhbCk7CisKKyAgc3RkOjp2ZWN0b3I8VGlja3M+IHNhbXBsZXM7CisgIHNhbXBsZXMu
cmVzZXJ2ZSgxICsgc2FtcGxlc19wZXJfZXZhbCk7CisgIHNhbXBsZXMucHVzaF9iYWNrKGVzdCk7
CisKKyAgLy8gUGVyY2VudGFnZSBpcyB0b28gc3RyaWN0IGZvciB0aW55IGRpZmZlcmVuY2VzLCBz
byBhbHNvIGFsbG93IGEgc21hbGwKKyAgLy8gYWJzb2x1dGUgIm1lZGlhbiBhYnNvbHV0ZSBkZXZp
YXRpb24iLgorICBjb25zdCBUaWNrcyBtYXhfYWJzX21hZCA9ICh0aW1lcl9yZXNvbHV0aW9uICsg
OTkpIC8gMTAwOworICAqcmVsX21hZCA9IDAuMDsgIC8vIGVuc3VyZSBpbml0aWFsaXplZAorCisg
IGZvciAoc2l6ZV90IGV2YWwgPSAwOyBldmFsIDwgcC5tYXhfZXZhbHM7ICsrZXZhbCwgc2FtcGxl
c19wZXJfZXZhbCAqPSAyKSB7CisgICAgc2FtcGxlcy5yZXNlcnZlKHNhbXBsZXMuc2l6ZSgpICsg
c2FtcGxlc19wZXJfZXZhbCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW1wbGVzX3Bl
cl9ldmFsOyArK2kpIHsKKyAgICAgIGNvbnN0IFRpY2tzIHIgPSBtZWFzdXJlX2R1cmF0aW9uKCk7
CisgICAgICBzYW1wbGVzLnB1c2hfYmFjayhyKTsKKyAgICB9CisKKyAgICBpZiAoc2FtcGxlcy5z
aXplKCkgPj0gcC5taW5fbW9kZV9zYW1wbGVzKSB7CisgICAgICBlc3QgPSByb2J1c3Rfc3RhdGlz
dGljczo6TW9kZShzYW1wbGVzLmRhdGEoKSwgc2FtcGxlcy5zaXplKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAvLyBGb3IgImZldyIgKGRlcGVuZHMgYWxzbyBvbiB0aGUgdmFyaWFuY2UpIHNhbXBs
ZXMsIE1lZGlhbiBpcyBzYWZlci4KKyAgICAgIGVzdCA9IHJvYnVzdF9zdGF0aXN0aWNzOjpNZWRp
YW4oc2FtcGxlcy5kYXRhKCksIHNhbXBsZXMuc2l6ZSgpKTsKKyAgICB9CisgICAgQUJTTF9SQVdf
Q0hFQ0soZXN0ICE9IDAsICJFc3RpbWF0b3IgcmV0dXJuZWQgemVybyBkdXJhdGlvbiIpOworCisg
ICAgLy8gTWVkaWFuIGFic29sdXRlIGRldmlhdGlvbiAobWFkKSBpcyBhIHJvYnVzdCBtZWFzdXJl
IG9mICd2YXJpYWJpbGl0eScuCisgICAgY29uc3QgVGlja3MgYWJzX21hZCA9IHJvYnVzdF9zdGF0
aXN0aWNzOjpNZWRpYW5BYnNvbHV0ZURldmlhdGlvbigKKyAgICAgICAgc2FtcGxlcy5kYXRhKCks
IHNhbXBsZXMuc2l6ZSgpLCBlc3QpOworICAgICpyZWxfbWFkID0gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihzdGF0aWNfY2FzdDxpbnQ+KGFic19tYWQpKSAvIGVzdDsKKworICAgIGlmICgqcmVsX21hZCA8
PSBtYXhfcmVsX21hZCB8fCBhYnNfbWFkIDw9IG1heF9hYnNfbWFkKSB7CisgICAgICBpZiAocC52
ZXJib3NlKSB7CisgICAgICAgIEFCU0xfUkFXX0xPRyhJTkZPLAorICAgICAgICAgICAgICAgICAg
ICAgIiU2enUgc2FtcGxlcyA9PiAlNXUgKGFic19tYWQ9JTR1LCByZWxfbWFkPSU0LjJmJSUpXG4i
LAorICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy5zaXplKCksIGVzdCwgYWJzX21hZCwgKnJl
bF9tYWQgKiAxMDAuMCk7CisgICAgICB9CisgICAgICByZXR1cm4gZXN0OworICAgIH0KKyAgfQor
CisgIGlmIChwLnZlcmJvc2UpIHsKKyAgICBBQlNMX1JBV19MT0coV0FSTklORywKKyAgICAgICAg
ICAgICAgICAgInJlbF9tYWQ9JTQuMmYlJSBzdGlsbCBleGNlZWRzICU0LjJmJSUgYWZ0ZXIgJTZ6
dSBzYW1wbGVzLlxuIiwKKyAgICAgICAgICAgICAgICAgKnJlbF9tYWQgKiAxMDAuMCwgbWF4X3Jl
bF9tYWQgKiAxMDAuMCwgc2FtcGxlcy5zaXplKCkpOworICB9CisgIHJldHVybiBlc3Q7Cit9CisK
K3VzaW5nIElucHV0VmVjID0gc3RkOjp2ZWN0b3I8RnVuY0lucHV0PjsKKworLy8gUmV0dXJucyB2
ZWN0b3Igb2YgdW5pcXVlIGlucHV0IHZhbHVlcy4KK0lucHV0VmVjIFVuaXF1ZUlucHV0cyhjb25z
dCBGdW5jSW5wdXQqIGlucHV0cywgY29uc3Qgc2l6ZV90IG51bV9pbnB1dHMpIHsKKyAgSW5wdXRW
ZWMgdW5pcXVlKGlucHV0cywgaW5wdXRzICsgbnVtX2lucHV0cyk7CisgIHN0ZDo6c29ydCh1bmlx
dWUuYmVnaW4oKSwgdW5pcXVlLmVuZCgpKTsKKyAgdW5pcXVlLmVyYXNlKHN0ZDo6dW5pcXVlKHVu
aXF1ZS5iZWdpbigpLCB1bmlxdWUuZW5kKCkpLCB1bmlxdWUuZW5kKCkpOworICByZXR1cm4gdW5p
cXVlOworfQorCisvLyBSZXR1cm5zIGhvdyBvZnRlbiB3ZSBuZWVkIHRvIGNhbGwgZnVuYyBmb3Ig
c3VmZmljaWVudCBwcmVjaXNpb24sIG9yIHplcm8KKy8vIG9uIGZhaWx1cmUgKGUuZy4gdGhlIGVs
YXBzZWQgdGltZSBpcyB0b28gbG9uZyBmb3IgYSAzMi1iaXQgdGljayBjb3VudCkuCitzaXplX3Qg
TnVtU2tpcChjb25zdCBGdW5jIGZ1bmMsIGNvbnN0IHZvaWQqIGFyZywgY29uc3QgSW5wdXRWZWMm
IHVuaXF1ZSwKKyAgICAgICAgICAgICAgIGNvbnN0IFBhcmFtcyYgcCkgeworICAvLyBNaW4gZWxh
cHNlZCB0aWNrcyBmb3IgYW55IGlucHV0LgorICBUaWNrcyBtaW5fZHVyYXRpb24gPSB+MHU7CisK
KyAgZm9yIChjb25zdCBGdW5jSW5wdXQgaW5wdXQgOiB1bmlxdWUpIHsKKyAgICAvLyBNYWtlIHN1
cmUgYSAzMi1iaXQgdGltZXIgaXMgc3VmZmljaWVudC4KKyAgICBjb25zdCB1aW50NjRfdCB0MCA9
IHRpbWVyOjpTdGFydDY0KCk7CisgICAgUHJldmVudEVsaXNpb24oZnVuYyhhcmcsIGlucHV0KSk7
CisgICAgY29uc3QgdWludDY0X3QgdDEgPSB0aW1lcjo6U3RvcDY0KCk7CisgICAgY29uc3QgdWlu
dDY0X3QgZWxhcHNlZCA9IHQxIC0gdDA7CisgICAgaWYgKGVsYXBzZWQgPj0gKDFVTEwgPDwgMzAp
KSB7CisgICAgICBBQlNMX1JBV19MT0coV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAiTWVh
c3VyZW1lbnQgZmFpbGVkOiBuZWVkIDY0LWJpdCB0aW1lciBmb3IgaW5wdXQ9JXp1XG4iLAorICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oaW5wdXQpKTsKKyAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIGRvdWJsZSByZWxfbWFkOworICAgIGNvbnN0IFRpY2tzIHRvdGFs
ID0gU2FtcGxlVW50aWxTdGFibGUoCisgICAgICAgIHAudGFyZ2V0X3JlbF9tYWQsICZyZWxfbWFk
LCBwLAorICAgICAgICBbZnVuYywgYXJnLCBpbnB1dF0oKSB7IFByZXZlbnRFbGlzaW9uKGZ1bmMo
YXJnLCBpbnB1dCkpOyB9KTsKKyAgICBtaW5fZHVyYXRpb24gPSAoc3RkOjptaW4pKG1pbl9kdXJh
dGlvbiwgdG90YWwgLSB0aW1lcl9yZXNvbHV0aW9uKTsKKyAgfQorCisgIC8vIE51bWJlciBvZiBy
ZXBldGl0aW9ucyByZXF1aXJlZCB0byByZWFjaCB0aGUgdGFyZ2V0IHJlc29sdXRpb24uCisgIGNv
bnN0IHNpemVfdCBtYXhfc2tpcCA9IHAucHJlY2lzaW9uX2Rpdmlzb3I7CisgIC8vIE51bWJlciBv
ZiByZXBldGl0aW9ucyBnaXZlbiB0aGUgZXN0aW1hdGVkIGR1cmF0aW9uLgorICBjb25zdCBzaXpl
X3QgbnVtX3NraXAgPQorICAgICAgbWluX2R1cmF0aW9uID09IDAgPyAwIDogKG1heF9za2lwICsg
bWluX2R1cmF0aW9uIC0gMSkgLyBtaW5fZHVyYXRpb247CisgIGlmIChwLnZlcmJvc2UpIHsKKyAg
ICBBQlNMX1JBV19MT0coSU5GTywgInJlcz0ldSBtYXhfc2tpcD0lenUgbWluX2R1cj0ldSBudW1f
c2tpcD0lenVcbiIsCisgICAgICAgICAgICAgICAgIHRpbWVyX3Jlc29sdXRpb24sIG1heF9za2lw
LCBtaW5fZHVyYXRpb24sIG51bV9za2lwKTsKKyAgfQorICByZXR1cm4gbnVtX3NraXA7Cit9CisK
Ky8vIFJlcGxpY2F0ZXMgaW5wdXRzIHVudGlsIHdlIGNhbiBvbWl0ICJudW1fc2tpcCIgb2NjdXJy
ZW5jZXMgb2YgYW4gaW5wdXQuCitJbnB1dFZlYyBSZXBsaWNhdGVJbnB1dHMoY29uc3QgRnVuY0lu
cHV0KiBpbnB1dHMsIGNvbnN0IHNpemVfdCBudW1faW5wdXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHNpemVfdCBudW1fdW5pcXVlLCBjb25zdCBzaXplX3QgbnVtX3NraXAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFyYW1zJiBwKSB7CisgIElucHV0VmVjIGZ1
bGw7CisgIGlmIChudW1fdW5pcXVlID09IDEpIHsKKyAgICBmdWxsLmFzc2lnbihwLnN1YnNldF9y
YXRpbyAqIG51bV9za2lwLCBpbnB1dHNbMF0pOworICAgIHJldHVybiBmdWxsOworICB9CisKKyAg
ZnVsbC5yZXNlcnZlKHAuc3Vic2V0X3JhdGlvICogbnVtX3NraXAgKiBudW1faW5wdXRzKTsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwLnN1YnNldF9yYXRpbyAqIG51bV9za2lwOyArK2kpIHsK
KyAgICBmdWxsLmluc2VydChmdWxsLmVuZCgpLCBpbnB1dHMsIGlucHV0cyArIG51bV9pbnB1dHMp
OworICB9CisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTx1aW50MzJfdD4g
cm5nOworICBzdGQ6OnNodWZmbGUoZnVsbC5iZWdpbigpLCBmdWxsLmVuZCgpLCBybmcpOworICBy
ZXR1cm4gZnVsbDsKK30KKworLy8gQ29waWVzIHRoZSAiZnVsbCIgdG8gInN1YnNldCIgaW4gdGhl
IHNhbWUgb3JkZXIsIGJ1dCB3aXRoICJudW1fc2tpcCIKKy8vIHJhbmRvbWx5IHNlbGVjdGVkIG9j
Y3VycmVuY2VzIG9mICJpbnB1dF90b19za2lwIiByZW1vdmVkLgordm9pZCBGaWxsU3Vic2V0KGNv
bnN0IElucHV0VmVjJiBmdWxsLCBjb25zdCBGdW5jSW5wdXQgaW5wdXRfdG9fc2tpcCwKKyAgICAg
ICAgICAgICAgICBjb25zdCBzaXplX3QgbnVtX3NraXAsIElucHV0VmVjKiBzdWJzZXQpIHsKKyAg
Y29uc3Qgc2l6ZV90IGNvdW50ID0gc3RkOjpjb3VudChmdWxsLmJlZ2luKCksIGZ1bGwuZW5kKCks
IGlucHV0X3RvX3NraXApOworICAvLyBHZW5lcmF0ZSBudW1fc2tpcCByYW5kb20gaW5kaWNlczog
d2hpY2ggb2NjdXJyZW5jZSB0byBza2lwLgorICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gb21pdDsK
KyAgLy8gUmVwbGFjZW1lbnQgZm9yIHN0ZDo6aW90YSwgbm90IHlldCBhdmFpbGFibGUgaW4gTVNW
QyBidWlsZHMuCisgIG9taXQucmVzZXJ2ZShjb3VudCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgeworICAgIG9taXQucHVzaF9iYWNrKGkpOworICB9CisgIC8vIG9taXRb
XSBpcyB0aGUgc2FtZSBvbiBldmVyeSBjYWxsLCBidXQgdGhhdCdzIE9LIGJlY2F1c2UgdGhleSBp
ZGVudGlmeSB0aGUKKyAgLy8gTnRoIGluc3RhbmNlIG9mIGlucHV0X3RvX3NraXAsIHNvIHRoZSBw
b3NpdGlvbiB3aXRoaW4gZnVsbFtdIGRpZmZlcnMuCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6
cmFuZGVuX2VuZ2luZTx1aW50MzJfdD4gcm5nOworICBzdGQ6OnNodWZmbGUob21pdC5iZWdpbigp
LCBvbWl0LmVuZCgpLCBybmcpOworICBvbWl0LnJlc2l6ZShudW1fc2tpcCk7CisgIHN0ZDo6c29y
dChvbWl0LmJlZ2luKCksIG9taXQuZW5kKCkpOworCisgIHVpbnQzMl90IG9jY3VycmVuY2UgPSB+
MHU7ICAvLyAwIGFmdGVyIHByZWluY3JlbWVudAorICBzaXplX3QgaWR4X29taXQgPSAwOyAgICAg
ICAgLy8gY3Vyc29yIHdpdGhpbiBvbWl0W10KKyAgc2l6ZV90IGlkeF9zdWJzZXQgPSAwOyAgICAg
IC8vIGN1cnNvciB3aXRoaW4gKnN1YnNldAorICBmb3IgKGNvbnN0IEZ1bmNJbnB1dCBuZXh0IDog
ZnVsbCkgeworICAgIGlmIChuZXh0ID09IGlucHV0X3RvX3NraXApIHsKKyAgICAgICsrb2NjdXJy
ZW5jZTsKKyAgICAgIC8vIEhhdmVuJ3QgcmVtb3ZlZCBlbm91Z2ggYWxyZWFkeQorICAgICAgaWYg
KGlkeF9vbWl0IDwgbnVtX3NraXApIHsKKyAgICAgICAgLy8gVGhpcyBvbmUgaXMgdXAgZm9yIHJl
bW92YWwKKyAgICAgICAgaWYgKG9jY3VycmVuY2UgPT0gb21pdFtpZHhfb21pdF0pIHsKKyAgICAg
ICAgICArK2lkeF9vbWl0OworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICB9
CisgICAgfQorICAgIGlmIChpZHhfc3Vic2V0IDwgc3Vic2V0LT5zaXplKCkpIHsKKyAgICAgICgq
c3Vic2V0KVtpZHhfc3Vic2V0KytdID0gbmV4dDsKKyAgICB9CisgIH0KKyAgQUJTTF9SQVdfQ0hF
Q0soaWR4X3N1YnNldCA9PSBzdWJzZXQtPnNpemUoKSwgImlkeF9zdWJzZXQgbm90IGF0IGVuZCIp
OworICBBQlNMX1JBV19DSEVDSyhpZHhfb21pdCA9PSBvbWl0LnNpemUoKSwgImlkeF9vbWl0IG5v
dCBhdCBlbmQiKTsKKyAgQUJTTF9SQVdfQ0hFQ0sob2NjdXJyZW5jZSA9PSBjb3VudCAtIDEsICJv
Y2N1cnJlbmNlIG5vdCBhdCBlbmQiKTsKK30KKworLy8gUmV0dXJucyB0b3RhbCB0aWNrcyBlbGFw
c2VkIGZvciBhbGwgaW5wdXRzLgorVGlja3MgVG90YWxEdXJhdGlvbihjb25zdCBGdW5jIGZ1bmMs
IGNvbnN0IHZvaWQqIGFyZywgY29uc3QgSW5wdXRWZWMqIGlucHV0cywKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUGFyYW1zJiBwLCBkb3VibGUqIG1heF9yZWxfbWFkKSB7CisgIGRvdWJsZSBy
ZWxfbWFkOworICBjb25zdCBUaWNrcyBkdXJhdGlvbiA9CisgICAgICBTYW1wbGVVbnRpbFN0YWJs
ZShwLnRhcmdldF9yZWxfbWFkLCAmcmVsX21hZCwgcCwgW2Z1bmMsIGFyZywgaW5wdXRzXSgpIHsK
KyAgICAgICAgZm9yIChjb25zdCBGdW5jSW5wdXQgaW5wdXQgOiAqaW5wdXRzKSB7CisgICAgICAg
ICAgUHJldmVudEVsaXNpb24oZnVuYyhhcmcsIGlucHV0KSk7CisgICAgICAgIH0KKyAgICAgIH0p
OworICAqbWF4X3JlbF9tYWQgPSAoc3RkOjptYXgpKCptYXhfcmVsX21hZCwgcmVsX21hZCk7Cisg
IHJldHVybiBkdXJhdGlvbjsKK30KKworLy8gKE5lYXJseSkgZW1wdHkgRnVuYyBmb3IgbWVhc3Vy
aW5nIHRpbWVyIG92ZXJoZWFkL3Jlc29sdXRpb24uCitBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRS
SUJVVEVfTkVWRVJfSU5MSU5FIEZ1bmNPdXRwdXQKK0VtcHR5RnVuYyhjb25zdCB2b2lkKiBhcmcs
IGNvbnN0IEZ1bmNJbnB1dCBpbnB1dCkgeworICByZXR1cm4gaW5wdXQ7Cit9CisKKy8vIFJldHVy
bnMgb3ZlcmhlYWQgb2YgYWNjZXNzaW5nIGlucHV0c1tdIGFuZCBjYWxsaW5nIGEgZnVuY3Rpb247
IHRoaXMgd2lsbAorLy8gYmUgZGVkdWN0ZWQgZnJvbSBmdXR1cmUgVG90YWxEdXJhdGlvbiByZXR1
cm4gdmFsdWVzLgorVGlja3MgT3ZlcmhlYWQoY29uc3Qgdm9pZCogYXJnLCBjb25zdCBJbnB1dFZl
YyogaW5wdXRzLCBjb25zdCBQYXJhbXMmIHApIHsKKyAgZG91YmxlIHJlbF9tYWQ7CisgIC8vIFpl
cm8gdG9sZXJhbmNlIGJlY2F1c2UgcmVwZWF0YWJpbGl0eSBpcyBjcnVjaWFsIGFuZCBFbXB0eUZ1
bmMgaXMgZmFzdC4KKyAgcmV0dXJuIFNhbXBsZVVudGlsU3RhYmxlKDAuMCwgJnJlbF9tYWQsIHAs
IFthcmcsIGlucHV0c10oKSB7CisgICAgZm9yIChjb25zdCBGdW5jSW5wdXQgaW5wdXQgOiAqaW5w
dXRzKSB7CisgICAgICBQcmV2ZW50RWxpc2lvbihFbXB0eUZ1bmMoYXJnLCBpbnB1dCkpOworICAg
IH0KKyAgfSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCit2b2lkIFBpblRocmVhZFRvQ1BVKGlu
dCBjcHUpIHsKKyAgLy8gV2UgbWlnaHQgbWlncmF0ZSB0byBhbm90aGVyIENQVSBiZWZvcmUgcGlu
bmluZyBiZWxvdywgYnV0IGF0IGxlYXN0IGNwdQorICAvLyB3aWxsIGJlIG9uZSBvZiB0aGUgQ1BV
cyBvbiB3aGljaCB0aGlzIHRocmVhZCByYW4uCisjaWYgZGVmaW5lZChBQlNMX09TX1dJTikKKyAg
aWYgKGNwdSA8IDApIHsKKyAgICBjcHUgPSBzdGF0aWNfY2FzdDxpbnQ+KEdldEN1cnJlbnRQcm9j
ZXNzb3JOdW1iZXIoKSk7CisgICAgQUJTTF9SQVdfQ0hFQ0soY3B1ID49IDAsICJQaW5UaHJlYWRU
b0NQVSBkZXRlY3QgZmFpbGVkIik7CisgICAgaWYgKGNwdSA+PSA2NCkgeworICAgICAgLy8gTk9U
RTogT24gd2luZSwgYXQgbGVhc3QsIEdldEN1cnJlbnRQcm9jZXNzb3JOdW1iZXIoKSBzb21ldGlt
ZXMgcmV0dXJucworICAgICAgLy8gYSB2YWx1ZSA+IDY0LCB3aGljaCBpcyBvdXQgb2YgcmFuZ2Uu
IFdoZW4gdGhpcyBoYXBwZW5zLCBsb2cgYSBtZXNzYWdlCisgICAgICAvLyBhbmQgZG9uJ3Qgc2V0
IGEgY3B1IGFmZmluaXR5LgorICAgICAgQUJTTF9SQVdfTE9HKEVSUk9SLCAiSW52YWxpZCBDUFUg
bnVtYmVyOiAlZCIsIGNwdSk7CisgICAgICByZXR1cm47CisgICAgfQorICB9IGVsc2UgaWYgKGNw
dSA+PSA2NCkgeworICAgIC8vIFVzZXIgc3BlY2lmaWVkIGFuIGV4cGxpY2l0IENQVSBhZmZpbml0
eSA+IHRoZSB2YWxpZCByYW5nZS4KKyAgICBBQlNMX1JBV19MT0coRkFUQUwsICJJbnZhbGlkIENQ
VSBudW1iZXI6ICVkIiwgY3B1KTsKKyAgfQorICBjb25zdCBEV09SRF9QVFIgcHJldiA9IFNldFRo
cmVhZEFmZmluaXR5TWFzayhHZXRDdXJyZW50VGhyZWFkKCksIDFVTEwgPDwgY3B1KTsKKyAgQUJT
TF9SQVdfQ0hFQ0socHJldiAhPSAwLCAiU2V0QWZmaW5pdHkgZmFpbGVkIik7CisjZWxpZiBkZWZp
bmVkKEFCU0xfT1NfTElOVVgpICYmICFkZWZpbmVkKEFCU0xfT1NfQU5EUk9JRCkKKyAgaWYgKGNw
dSA8IDApIHsKKyAgICBjcHUgPSBzY2hlZF9nZXRjcHUoKTsKKyAgICBBQlNMX1JBV19DSEVDSyhj
cHUgPj0gMCwgIlBpblRocmVhZFRvQ1BVIGRldGVjdCBmYWlsZWQiKTsKKyAgfQorICBjb25zdCBw
aWRfdCBwaWQgPSAwOyAgLy8gY3VycmVudCB0aHJlYWQKKyAgY3B1X3NldF90IHNldDsKKyAgQ1BV
X1pFUk8oJnNldCk7CisgIENQVV9TRVQoY3B1LCAmc2V0KTsKKyAgY29uc3QgaW50IGVyciA9IHNj
aGVkX3NldGFmZmluaXR5KHBpZCwgc2l6ZW9mKHNldCksICZzZXQpOworICBBQlNMX1JBV19DSEVD
SyhlcnIgPT0gMCwgIlNldEFmZmluaXR5IGZhaWxlZCIpOworI2VuZGlmCit9CisKKy8vIFJldHVy
bnMgdGljayByYXRlLiBJbnZhcmlhbnQgbWVhbnMgdGhlIHRpY2sgY291bnRlciBmcmVxdWVuY3kg
aXMgaW5kZXBlbmRlbnQKKy8vIG9mIENQVSB0aHJvdHRsaW5nIG9yIHNsZWVwLiBNYXkgYmUgZXhw
ZW5zaXZlLCBjYWxsZXIgc2hvdWxkIGNhY2hlIHRoZSByZXN1bHQuCitkb3VibGUgSW52YXJpYW50
VGlja3NQZXJTZWNvbmQoKSB7CisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQorICByZXR1cm4g
X19wcGNfZ2V0X3RpbWViYXNlX2ZyZXEoKTsKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82
NCkKKyAgLy8gV2UgYXNzdW1lIHRoZSBUU0MgaXMgaW52YXJpYW50OyBpdCBpcyBvbiBhbGwgcmVj
ZW50IEludGVsL0FNRCBDUFVzLgorICByZXR1cm4gcGxhdGZvcm06Ok5vbWluYWxDbG9ja1JhdGUo
KTsKKyNlbHNlCisgIC8vIEZhbGwgYmFjayB0byBjbG9ja19nZXR0aW1lIG5hbm9zZWNvbmRzLgor
ICByZXR1cm4gMUU5OworI2VuZGlmCit9CisKK3NpemVfdCBNZWFzdXJlSW1wbChjb25zdCBGdW5j
IGZ1bmMsIGNvbnN0IHZvaWQqIGFyZywgY29uc3Qgc2l6ZV90IG51bV9za2lwLAorICAgICAgICAg
ICAgICAgICAgIGNvbnN0IElucHV0VmVjJiB1bmlxdWUsIGNvbnN0IElucHV0VmVjJiBmdWxsLAor
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhcmFtcyYgcCwgUmVzdWx0KiByZXN1bHRzKSB7Cisg
IGNvbnN0IGZsb2F0IG11bCA9IDEuMGYgLyBzdGF0aWNfY2FzdDxpbnQ+KG51bV9za2lwKTsKKwor
ICBJbnB1dFZlYyBzdWJzZXQoZnVsbC5zaXplKCkgLSBudW1fc2tpcCk7CisgIGNvbnN0IFRpY2tz
IG92ZXJoZWFkID0gT3ZlcmhlYWQoYXJnLCAmZnVsbCwgcCk7CisgIGNvbnN0IFRpY2tzIG92ZXJo
ZWFkX3NraXAgPSBPdmVyaGVhZChhcmcsICZzdWJzZXQsIHApOworICBpZiAob3ZlcmhlYWQgPCBv
dmVyaGVhZF9za2lwKSB7CisgICAgQUJTTF9SQVdfTE9HKFdBUk5JTkcsICJNZWFzdXJlbWVudCBm
YWlsZWQ6IG92ZXJoZWFkICV1IDwgJXVcbiIsIG92ZXJoZWFkLAorICAgICAgICAgICAgICAgICBv
dmVyaGVhZF9za2lwKTsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIGlmIChwLnZlcmJvc2UpIHsK
KyAgICBBQlNMX1JBV19MT0coSU5GTywgIiNpbnB1dHM9JTV6dSwlNXp1IG92ZXJoZWFkPSU1dSwl
NXVcbiIsIGZ1bGwuc2l6ZSgpLAorICAgICAgICAgICAgICAgICBzdWJzZXQuc2l6ZSgpLCBvdmVy
aGVhZCwgb3ZlcmhlYWRfc2tpcCk7CisgIH0KKworICBkb3VibGUgbWF4X3JlbF9tYWQgPSAwLjA7
CisgIGNvbnN0IFRpY2tzIHRvdGFsID0gVG90YWxEdXJhdGlvbihmdW5jLCBhcmcsICZmdWxsLCBw
LCAmbWF4X3JlbF9tYWQpOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW5pcXVlLnNpemUo
KTsgKytpKSB7CisgICAgRmlsbFN1YnNldChmdWxsLCB1bmlxdWVbaV0sIG51bV9za2lwLCAmc3Vi
c2V0KTsKKyAgICBjb25zdCBUaWNrcyB0b3RhbF9za2lwID0gVG90YWxEdXJhdGlvbihmdW5jLCBh
cmcsICZzdWJzZXQsIHAsICZtYXhfcmVsX21hZCk7CisKKyAgICBpZiAodG90YWwgPCB0b3RhbF9z
a2lwKSB7CisgICAgICBBQlNMX1JBV19MT0coV0FSTklORywgIk1lYXN1cmVtZW50IGZhaWxlZDog
dG90YWwgJXUgPCAldVxuIiwgdG90YWwsCisgICAgICAgICAgICAgICAgICAgdG90YWxfc2tpcCk7
CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb25zdCBUaWNrcyBkdXJhdGlvbiA9ICh0
b3RhbCAtIG92ZXJoZWFkKSAtICh0b3RhbF9za2lwIC0gb3ZlcmhlYWRfc2tpcCk7CisgICAgcmVz
dWx0c1tpXS5pbnB1dCA9IHVuaXF1ZVtpXTsKKyAgICByZXN1bHRzW2ldLnRpY2tzID0gZHVyYXRp
b24gKiBtdWw7CisgICAgcmVzdWx0c1tpXS52YXJpYWJpbGl0eSA9IG1heF9yZWxfbWFkOworICB9
CisKKyAgcmV0dXJuIHVuaXF1ZS5zaXplKCk7Cit9CisKK3NpemVfdCBNZWFzdXJlKGNvbnN0IEZ1
bmMgZnVuYywgY29uc3Qgdm9pZCogYXJnLCBjb25zdCBGdW5jSW5wdXQqIGlucHV0cywKKyAgICAg
ICAgICAgICAgIGNvbnN0IHNpemVfdCBudW1faW5wdXRzLCBSZXN1bHQqIHJlc3VsdHMsIGNvbnN0
IFBhcmFtcyYgcCkgeworICBBQlNMX1JBV19DSEVDSyhudW1faW5wdXRzICE9IDAsICJObyBpbnB1
dHMiKTsKKworICBjb25zdCBJbnB1dFZlYyB1bmlxdWUgPSBVbmlxdWVJbnB1dHMoaW5wdXRzLCBu
dW1faW5wdXRzKTsKKyAgY29uc3Qgc2l6ZV90IG51bV9za2lwID0gTnVtU2tpcChmdW5jLCBhcmcs
IHVuaXF1ZSwgcCk7ICAvLyBuZXZlciAwCisgIGlmIChudW1fc2tpcCA9PSAwKSByZXR1cm4gMDsg
IC8vIE51bVNraXAgYWxyZWFkeSBwcmludGVkIGVycm9yIG1lc3NhZ2UKKworICBjb25zdCBJbnB1
dFZlYyBmdWxsID0KKyAgICAgIFJlcGxpY2F0ZUlucHV0cyhpbnB1dHMsIG51bV9pbnB1dHMsIHVu
aXF1ZS5zaXplKCksIG51bV9za2lwLCBwKTsKKworICAvLyBNZWFzdXJlSW1wbCBtYXkgZmFpbCB1
cCB0byBwLm1heF9tZWFzdXJlX3JldHJpZXMgdGltZXMuCisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcC5tYXhfbWVhc3VyZV9yZXRyaWVzOyBpKyspIHsKKyAgICBhdXRvIHJlc3VsdCA9IE1lYXN1
cmVJbXBsKGZ1bmMsIGFyZywgbnVtX3NraXAsIHVuaXF1ZSwgZnVsbCwgcCwgcmVzdWx0cyk7Cisg
ICAgaWYgKHJlc3VsdCAhPSAwKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgfQor
ICAvLyBBbGwgcmV0cmllcyBmYWlsZWQuIChVbnVzdWFsKQorICByZXR1cm4gMDsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbF9uYW5vYmVuY2htYXJrCit9ICAvLyBuYW1lc3Bh
Y2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmsu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9uYW5vYmVuY2htYXJrLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMyYjY1MGQxOTFiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmsuaApAQCAtMCwwICsxLDE2OCBAQAor
Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNp
Zm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfTkFOT0JFTkNITUFSS19IXworI2RlZmluZSBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9OQU5PQkVOQ0hNQVJLX0hfCisKKy8vIEJlbmNobWFya3MgZnVuY3Rp
b25zIG9mIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgd2l0aCByZWFsaXN0aWMgYnJhbmNoCisv
LyBwcmVkaWN0aW9uIGhpdCByYXRlcy4gVXNlcyBhIHJvYnVzdCBlc3RpbWF0b3IgdG8gc3VtbWFy
aXplIHRoZSBtZWFzdXJlbWVudHMuCisvLyBUaGUgcHJlY2lzaW9uIGlzIGFib3V0IDAuMiUuCisv
LworLy8gRXhhbXBsZXM6IHNlZSBuYW5vYmVuY2htYXJrX3Rlc3QuY2MuCisvLworLy8gQmFja2dy
b3VuZDogTWljcm9iZW5jaG1hcmtzIHN1Y2ggYXMgaHR0cDovL2dpdGh1Yi5jb20vZ29vZ2xlL2Jl
bmNobWFyaworLy8gY2FuIG1lYXN1cmUgZWxhcHNlZCB0aW1lcyBvbiB0aGUgb3JkZXIgb2YgYSBt
aWNyb3NlY29uZC4gU2hvcnRlciBmdW5jdGlvbnMKKy8vIGFyZSB0eXBpY2FsbHkgbWVhc3VyZWQg
YnkgcmVwZWF0aW5nIHRoZW0gdGhvdXNhbmRzIG9mIHRpbWVzIGFuZCBkaXZpZGluZworLy8gdGhl
IHRvdGFsIGVsYXBzZWQgdGltZSBieSB0aGlzIGNvdW50LiBVbmZvcnR1bmF0ZWx5LCByZXBldGl0
aW9uIChlc3BlY2lhbGx5CisvLyB3aXRoIHRoZSBzYW1lIGlucHV0IHBhcmFtZXRlciEpIGluZmx1
ZW5jZXMgdGhlIHJ1bnRpbWUuIEluIHRpbWUtY3JpdGljYWwKKy8vIGNvZGUsIGl0IGlzIHJlYXNv
bmFibGUgdG8gZXhwZWN0IHdhcm0gaW5zdHJ1Y3Rpb24vZGF0YSBjYWNoZXMgYW5kIFRMQnMsCisv
LyBidXQgYSBwZXJmZWN0IHJlY29yZCBvZiB3aGljaCBicmFuY2hlcyB3aWxsIGJlIHRha2VuIGlz
IHVucmVhbGlzdGljLgorLy8gVW5sZXNzIHRoZSBhcHBsaWNhdGlvbiBhbHNvIHJlcGVhdGVkbHkg
aW52b2tlcyB0aGUgbWVhc3VyZWQgZnVuY3Rpb24gd2l0aAorLy8gdGhlIHNhbWUgcGFyYW1ldGVy
LCB0aGUgYmVuY2htYXJrIGlzIG1lYXN1cmluZyBzb21ldGhpbmcgdmVyeSBkaWZmZXJlbnQgLQor
Ly8gYSBiZXN0LWNhc2UgcmVzdWx0LCBhbG1vc3QgYXMgaWYgdGhlIHBhcmFtZXRlciB3ZXJlIG1h
ZGUgYSBjb21waWxlLXRpbWUKKy8vIGNvbnN0YW50LiBUaGlzIG1heSBsZWFkIHRvIGVycm9uZW91
cyBjb25jbHVzaW9ucyBhYm91dCBicmFuY2gtaGVhdnkKKy8vIGFsZ29yaXRobXMgb3V0cGVyZm9y
bWluZyBicmFuY2gtZnJlZSBhbHRlcm5hdGl2ZXMuCisvLworLy8gT3VyIGFwcHJvYWNoIGRpZmZl
cnMgaW4gdGhyZWUgd2F5cy4gQWRkaW5nIGZlbmNlcyB0byB0aGUgdGltZXIgZnVuY3Rpb25zCisv
LyByZWR1Y2VzIHZhcmlhYmlsaXR5IGR1ZSB0byBpbnN0cnVjdGlvbiByZW9yZGVyaW5nLCBpbXBy
b3ZpbmcgdGhlIHRpbWVyCisvLyByZXNvbHV0aW9uIHRvIGFib3V0IDQwIENQVSBjeWNsZXMuIEhv
d2V2ZXIsIHNob3J0ZXIgZnVuY3Rpb25zIG11c3Qgc3RpbGwKKy8vIGJlIGludm9rZWQgcmVwZWF0
ZWRseS4gRm9yIG1vcmUgcmVhbGlzdGljIGJyYW5jaCBwcmVkaWN0aW9uIHBlcmZvcm1hbmNlLAor
Ly8gd2UgdmFyeSB0aGUgaW5wdXQgcGFyYW1ldGVyIGFjY29yZGluZyB0byBhIHVzZXItc3BlY2lm
aWVkIGRpc3RyaWJ1dGlvbi4KKy8vIFRodXMsIGluc3RlYWQgb2YgVmFyeUlucHV0cyhNZWFzdXJl
KFJlcGVhdChmdW5jKSkpLCB3ZSBjaGFuZ2UgdGhlCisvLyBsb29wIG5lc3RpbmcgdG8gTWVhc3Vy
ZShSZXBlYXQoVmFyeUlucHV0cyhmdW5jKSkpLiBXZSBhbHNvIGVzdGltYXRlIHRoZQorLy8gY2Vu
dHJhbCB0ZW5kZW5jeSBvZiB0aGUgbWVhc3VyZW1lbnQgc2FtcGxlcyB3aXRoIHRoZSAiaGFsZiBz
YW1wbGUgbW9kZSIsCisvLyB3aGljaCBpcyBtb3JlIHJvYnVzdCB0byBvdXRsaWVycyBhbmQgc2tl
d2VkIGRhdGEgdGhhbiB0aGUgbWVhbiBvciBtZWRpYW4uCisKKy8vIE5PVEU6IGZvciBjb21wYXRp
YmlsaXR5IHdpdGggbXVsdGlwbGUgdHJhbnNsYXRpb24gdW5pdHMgY29tcGlsZWQgd2l0aAorLy8g
ZGlzdGluY3QgZmxhZ3MsIGF2b2lkICNpbmNsdWRpbmcgaGVhZGVycyB0aGF0IGRlZmluZSBmdW5j
dGlvbnMuCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworbmFt
ZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbF9uYW5vYmVuY2htYXJrIHsK
KworLy8gSW5wdXQgaW5mbHVlbmNpbmcgdGhlIGZ1bmN0aW9uIGJlaW5nIG1lYXN1cmVkIChlLmcu
IG51bWJlciBvZiBieXRlcyB0byBjb3B5KS4KK3VzaW5nIEZ1bmNJbnB1dCA9IHNpemVfdDsKKwor
Ly8gIlByb29mIG9mIHdvcmsiIHJldHVybmVkIGJ5IEZ1bmMgdG8gZW5zdXJlIHRoZSBjb21waWxl
ciBkb2VzIG5vdCBlbGlkZSBpdC4KK3VzaW5nIEZ1bmNPdXRwdXQgPSB1aW50NjRfdDsKKworLy8g
RnVuY3Rpb24gdG8gbWVhc3VyZTogZWl0aGVyIDEpIGEgY2FwdHVyZWxlc3MgbGFtYmRhIG9yIGZ1
bmN0aW9uIHdpdGggdHdvCisvLyBhcmd1bWVudHMgb3IgMikgYSBsYW1iZGEgd2l0aCBjYXB0dXJl
LCBpbiB3aGljaCBjYXNlIHRoZSBmaXJzdCBhcmd1bWVudAorLy8gaXMgcmVzZXJ2ZWQgZm9yIHVz
ZSBieSBNZWFzdXJlQ2xvc3VyZS4KK3VzaW5nIEZ1bmMgPSBGdW5jT3V0cHV0ICgqKShjb25zdCB2
b2lkKiwgRnVuY0lucHV0KTsKKworLy8gSW50ZXJuYWwgcGFyYW1ldGVycyB0aGF0IGRldGVybWlu
ZSBwcmVjaXNpb24vcmVzb2x1dGlvbi9tZWFzdXJpbmcgdGltZS4KK3N0cnVjdCBQYXJhbXMgewor
ICAvLyBGb3IgbWVhc3VyaW5nIHRpbWVyIG92ZXJoZWFkL3Jlc29sdXRpb24uIFVzZWQgaW4gYSBu
ZXN0ZWQgbG9vcCA9PgorICAvLyBxdWFkcmF0aWMgdGltZSwgYWNjZXB0YWJsZSBiZWNhdXNlIHdl
IGtub3cgdGltZXIgb3ZlcmhlYWQgaXMgImxvdyIuCisgIC8vIGNvbnN0ZXhwciBiZWNhdXNlIHRo
aXMgaXMgdXNlZCB0byBkZWZpbmUgYXJyYXkgYm91bmRzLgorICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBrVGltZXJTYW1wbGVzID0gMjU2OworCisgIC8vIEJlc3QtY2FzZSBwcmVjaXNpb24sIGV4
cHJlc3NlZCBhcyBhIGRpdmlzb3Igb2YgdGhlIHRpbWVyIHJlc29sdXRpb24uCisgIC8vIExhcmdl
ciA9PiBtb3JlIGNhbGxzIHRvIEZ1bmMgYW5kIGhpZ2hlciBwcmVjaXNpb24uCisgIHNpemVfdCBw
cmVjaXNpb25fZGl2aXNvciA9IDEwMjQ7CisKKyAgLy8gUmF0aW8gYmV0d2VlbiBmdWxsIGFuZCBz
dWJzZXQgaW5wdXQgZGlzdHJpYnV0aW9uIHNpemVzLiBDYW5ub3QgYmUgbGVzcworICAvLyB0aGFu
IDI7IGxhcmdlciB2YWx1ZXMgaW5jcmVhc2UgbWVhc3VyZW1lbnQgdGltZSBidXQgbW9yZSBmYWl0
aGZ1bGx5CisgIC8vIG1vZGVsIHRoZSBnaXZlbiBpbnB1dCBkaXN0cmlidXRpb24uCisgIHNpemVf
dCBzdWJzZXRfcmF0aW8gPSAyOworCisgIC8vIFRvZ2V0aGVyIHdpdGggdGhlIGVzdGltYXRlZCBG
dW5jIGR1cmF0aW9uLCBkZXRlcm1pbmVzIGhvdyBtYW55IHRpbWVzIHRvCisgIC8vIGNhbGwgRnVu
YyBiZWZvcmUgY2hlY2tpbmcgdGhlIHNhbXBsZSB2YXJpYWJpbGl0eS4gTGFyZ2VyIHZhbHVlcyBp
bmNyZWFzZQorICAvLyBtZWFzdXJlbWVudCB0aW1lLCBtZW1vcnkvY2FjaGUgdXNlIGFuZCBwcmVj
aXNpb24uCisgIGRvdWJsZSBzZWNvbmRzX3Blcl9ldmFsID0gNEUtMzsKKworICAvLyBUaGUgbWlu
aW11bSBudW1iZXIgb2Ygc2FtcGxlcyBiZWZvcmUgZXN0aW1hdGluZyB0aGUgY2VudHJhbCB0ZW5k
ZW5jeS4KKyAgc2l6ZV90IG1pbl9zYW1wbGVzX3Blcl9ldmFsID0gNzsKKworICAvLyBUaGUgbW9k
ZSBpcyBiZXR0ZXIgdGhhbiBtZWRpYW4gZm9yIGVzdGltYXRpbmcgdGhlIGNlbnRyYWwgdGVuZGVu
Y3kgb2YKKyAgLy8gc2tld2VkL2ZhdC10YWlsZWQgZGlzdHJpYnV0aW9ucywgYnV0IGl0IHJlcXVp
cmVzIHN1ZmZpY2llbnQgc2FtcGxlcworICAvLyByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgaGFs
Zi1yYW5nZXMuCisgIHNpemVfdCBtaW5fbW9kZV9zYW1wbGVzID0gNjQ7CisKKyAgLy8gTWF4aW11
bSBwZXJtaXNzaWJsZSB2YXJpYWJpbGl0eSAoPSBtZWRpYW4gYWJzb2x1dGUgZGV2aWF0aW9uIC8g
Y2VudGVyKS4KKyAgZG91YmxlIHRhcmdldF9yZWxfbWFkID0gMC4wMDI7CisKKyAgLy8gQWJvcnQg
YWZ0ZXIgdGhpcyBtYW55IGV2YWxzIHdpdGhvdXQgcmVhY2hpbmcgdGFyZ2V0X3JlbF9tYWQuIFRo
aXMKKyAgLy8gcHJldmVudHMgaW5maW5pdGUgbG9vcHMuCisgIHNpemVfdCBtYXhfZXZhbHMgPSA5
OworCisgIC8vIFJldHJ5IHRoZSBtZWFzdXJlIGxvb3AgdXAgdG8gdGhpcyBtYW55IHRpbWVzLgor
ICBzaXplX3QgbWF4X21lYXN1cmVfcmV0cmllcyA9IDI7CisKKyAgLy8gV2hldGhlciB0byBwcmlu
dCBhZGRpdGlvbmFsIHN0YXRpc3RpY3MgdG8gc3Rkb3V0LgorICBib29sIHZlcmJvc2UgPSB0cnVl
OworfTsKKworLy8gTWVhc3VyZW1lbnQgcmVzdWx0IGZvciBlYWNoIHVuaXF1ZSBpbnB1dC4KK3N0
cnVjdCBSZXN1bHQgeworICBGdW5jSW5wdXQgaW5wdXQ7CisKKyAgLy8gUm9idXN0IGVzdGltYXRl
IChtb2RlIG9yIG1lZGlhbikgb2YgZHVyYXRpb24uCisgIGZsb2F0IHRpY2tzOworCisgIC8vIE1l
YXN1cmUgb2YgdmFyaWFiaWxpdHkgKG1lZGlhbiBhYnNvbHV0ZSBkZXZpYXRpb24gcmVsYXRpdmUg
dG8gInRpY2tzIikuCisgIGZsb2F0IHZhcmlhYmlsaXR5OworfTsKKworLy8gRW5zdXJlcyB0aGUg
dGhyZWFkIGlzIHJ1bm5pbmcgb24gdGhlIHNwZWNpZmllZCBjcHUsIGFuZCBubyBvdGhlcnMuCisv
LyBSZWR1Y2VzIG5vaXNlIGR1ZSB0byBkZXN5bmNocm9uaXplZCBzb2NrZXQgUkRUU0MgYW5kIGNv
bnRleHQgc3dpdGNoZXMuCisvLyBJZiAiY3B1IiBpcyBuZWdhdGl2ZSwgcGluIHRvIHRoZSBjdXJy
ZW50bHkgcnVubmluZyBjb3JlLgordm9pZCBQaW5UaHJlYWRUb0NQVShjb25zdCBpbnQgY3B1ID0g
LTEpOworCisvLyBSZXR1cm5zIHRpY2sgcmF0ZSwgdXNlZnVsIGZvciBjb252ZXJ0aW5nIG1lYXN1
cmVtZW50cyB0byBzZWNvbmRzLiBJbnZhcmlhbnQKKy8vIG1lYW5zIHRoZSB0aWNrIGNvdW50ZXIg
ZnJlcXVlbmN5IGlzIGluZGVwZW5kZW50IG9mIENQVSB0aHJvdHRsaW5nIG9yIHNsZWVwLgorLy8g
VGhpcyBjYWxsIG1heSBiZSBleHBlbnNpdmUsIGNhbGxlcnMgc2hvdWxkIGNhY2hlIHRoZSByZXN1
bHQuCitkb3VibGUgSW52YXJpYW50VGlja3NQZXJTZWNvbmQoKTsKKworLy8gUHJlY2lzZWx5IG1l
YXN1cmVzIHRoZSBudW1iZXIgb2YgdGlja3MgZWxhcHNlZCB3aGVuIGNhbGxpbmcgImZ1bmMiIHdp
dGggdGhlCisvLyBnaXZlbiBpbnB1dHMsIHNodWZmbGVkIHRvIGVuc3VyZSByZWFsaXN0aWMgYnJh
bmNoIHByZWRpY3Rpb24gaGl0IHJhdGVzLgorLy8KKy8vICJmdW5jIiByZXR1cm5zIGEgJ3Byb29m
IG9mIHdvcmsnIHRvIGVuc3VyZSBpdHMgY29tcHV0YXRpb25zIGFyZSBub3QgZWxpZGVkLgorLy8g
ImFyZyIgaXMgcGFzc2VkIHRvIEZ1bmMsIG9yIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UgYnkg
TWVhc3VyZUNsb3N1cmUuCisvLyAiaW5wdXRzIiBpcyBhbiBhcnJheSBvZiAibnVtX2lucHV0cyIg
KG5vdCBuZWNlc3NhcmlseSB1bmlxdWUpIGFyZ3VtZW50cyB0bworLy8gICAiZnVuYyIuIFRoZSB2
YWx1ZXMgc2hvdWxkIGJlIGNob3NlbiB0byBtYXhpbWl6ZSBjb3ZlcmFnZSBvZiAiZnVuYyIuIFRo
aXMKKy8vICAgcmVwcmVzZW50cyBhIGRpc3RyaWJ1dGlvbiwgc28gYSB2YWx1ZSdzIGZyZXF1ZW5j
eSBzaG91bGQgcmVmbGVjdCBpdHMKKy8vICAgcHJvYmFiaWxpdHkgaW4gdGhlIHJlYWwgYXBwbGlj
YXRpb24uIE9yZGVyIGRvZXMgbm90IG1hdHRlcjsgZm9yIGV4YW1wbGUsIGEKKy8vICAgdW5pZm9y
bSBkaXN0cmlidXRpb24gb3ZlciBbMCwgNCkgY291bGQgYmUgcmVwcmVzZW50ZWQgYXMgezMsMCwy
LDF9LgorLy8gUmV0dXJucyBob3cgbWFueSBSZXN1bHQgd2VyZSB3cml0dGVuIHRvICJyZXN1bHRz
Ijogb25lIHBlciB1bmlxdWUgaW5wdXQsIG9yCisvLyAgIHplcm8gaWYgdGhlIG1lYXN1cmVtZW50
IGZhaWxlZCAoYW4gZXJyb3IgbWVzc2FnZSBnb2VzIHRvIHN0ZGVycikuCitzaXplX3QgTWVhc3Vy
ZShjb25zdCBGdW5jIGZ1bmMsIGNvbnN0IHZvaWQqIGFyZywgY29uc3QgRnVuY0lucHV0KiBpbnB1
dHMsCisgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgbnVtX2lucHV0cywgUmVzdWx0KiByZXN1
bHRzLAorICAgICAgICAgICAgICAgY29uc3QgUGFyYW1zJiBwID0gUGFyYW1zKCkpOworCisvLyBD
YWxscyBvcGVyYXRvcigpIG9mIHRoZSBnaXZlbiBjbG9zdXJlIChsYW1iZGEgZnVuY3Rpb24pLgor
dGVtcGxhdGUgPGNsYXNzIENsb3N1cmU+CitzdGF0aWMgRnVuY091dHB1dCBDYWxsQ2xvc3VyZShj
b25zdCB2b2lkKiBmLCBjb25zdCBGdW5jSW5wdXQgaW5wdXQpIHsKKyAgcmV0dXJuICgqcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBDbG9zdXJlKj4oZikpKGlucHV0KTsKK30KKworLy8gU2FtZSBhcyBN
ZWFzdXJlLCBleGNlcHQgImNsb3N1cmUiIGlzIHR5cGljYWxseSBhIGxhbWJkYSBmdW5jdGlvbiBv
ZgorLy8gRnVuY0lucHV0IC0+IEZ1bmNPdXRwdXQgd2l0aCBhIGNhcHR1cmUgbGlzdC4KK3RlbXBs
YXRlIDxjbGFzcyBDbG9zdXJlPgorc3RhdGljIGlubGluZSBzaXplX3QgTWVhc3VyZUNsb3N1cmUo
Y29uc3QgQ2xvc3VyZSYgY2xvc3VyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZ1bmNJbnB1dCogaW5wdXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc2l6ZV90IG51bV9pbnB1dHMsIFJlc3VsdCogcmVzdWx0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhcmFtcyYgcCA9IFBhcmFtcygp
KSB7CisgIHJldHVybiBNZWFzdXJlKHJlaW50ZXJwcmV0X2Nhc3Q8RnVuYz4oJkNhbGxDbG9zdXJl
PENsb3N1cmU+KSwKKyAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oJmNsb3N1cmUpLCBpbnB1dHMsIG51bV9pbnB1dHMsCisgICAgICAgICAgICAgICAgIHJlc3Vs
dHMsIHApOworfQorCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsX25hbm9iZW5jaG1h
cmsKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJO
QUxfTkFOT0JFTkNITUFSS19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25h
bm9iZW5jaG1hcmtfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9uYW5vYmVuY2htYXJr
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM4MzM0NWE4
YjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1h
cmtfdGVzdC5jYwpAQCAtMCwwICsxLDc1IEBACisvLyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFs
L25hbm9iZW5jaG1hcmsuaCIKKworI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9n
Z2luZy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9udW1iZXJzLmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWxfbmFub2JlbmNobWFyayB7CituYW1lc3Bh
Y2UgeworCit1aW50NjRfdCBEaXYoY29uc3Qgdm9pZCosIEZ1bmNJbnB1dCBpbikgeworICAvLyBI
ZXJlIHdlJ3JlIG1lYXN1cmluZyB0aGUgdGhyb3VnaHB1dCBiZWNhdXNlIGJlbmNobWFyayBpbnZv
Y2F0aW9ucyBhcmUKKyAgLy8gaW5kZXBlbmRlbnQuCisgIGNvbnN0IGludDY0X3QgZDEgPSAweEZG
RkZGRkZGRkZsbCAvIGludDY0X3QoaW4pOyAgLy8gSURJVgorICByZXR1cm4gZDE7Cit9CisKK3Rl
bXBsYXRlIDxzaXplX3QgTj4KK3ZvaWQgTWVhc3VyZURpdihjb25zdCBGdW5jSW5wdXQgKCZpbnB1
dHMpW05dKSB7CisgIFJlc3VsdCByZXN1bHRzW05dOworICBQYXJhbXMgcGFyYW1zOworICBwYXJh
bXMubWF4X2V2YWxzID0gNjsgIC8vIGF2b2lkIHRlc3QgdGltZW91dAorICBjb25zdCBzaXplX3Qg
bnVtX3Jlc3VsdHMgPSBNZWFzdXJlKCZEaXYsIG51bGxwdHIsIGlucHV0cywgTiwgcmVzdWx0cywg
cGFyYW1zKTsKKyAgaWYgKG51bV9yZXN1bHRzID09IDApIHsKKyAgICBBQlNMX1JBV19MT0coCisg
ICAgICAgIFdBUk5JTkcsCisgICAgICAgICJXQVJOSU5HOiBNZWFzdXJlbWVudCBmYWlsZWQsIHNo
b3VsZCBub3QgaGFwcGVuIHdoZW4gdXNpbmcgIgorICAgICAgICAiUGluVGhyZWFkVG9DUFUgdW5s
ZXNzIHRoZSByZWdpb24gdG8gbWVhc3VyZSB0YWtlcyA+IDEgc2Vjb25kLlxuIik7CisgICAgcmV0
dXJuOworICB9CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX3Jlc3VsdHM7ICsraSkgewor
ICAgIEFCU0xfUkFXX0xPRyhJTkZPLCAiJTV6dTogJTYuMmYgdGlja3M7IE1BRD0lNC4yZiUlXG4i
LCByZXN1bHRzW2ldLmlucHV0LAorICAgICAgICAgICAgICAgICByZXN1bHRzW2ldLnRpY2tzLCBy
ZXN1bHRzW2ldLnZhcmlhYmlsaXR5ICogMTAwLjApOworICAgIEFCU0xfUkFXX0NIRUNLKHJlc3Vs
dHNbaV0udGlja3MgIT0gMC4wZiwgIlplcm8gZHVyYXRpb24iKTsKKyAgfQorfQorCit2b2lkIFJ1
bkFsbChjb25zdCBpbnQgYXJnYywgY2hhciogYXJndltdKSB7CisgIC8vIEF2b2lkIG1pZ3JhdGlu
ZyBiZXR3ZWVuIGNvcmVzIC0gaW1wb3J0YW50IG9uIG11bHRpLXNvY2tldCBzeXN0ZW1zLgorICBp
bnQgY3B1ID0gLTE7CisgIGlmIChhcmdjID09IDIpIHsKKyAgICBpZiAoIVNpbXBsZUF0b2koYXJn
dlsxXSwgJmNwdSkpIHsKKyAgICAgIEFCU0xfUkFXX0xPRyhGQVRBTCwgIlRoZSBvcHRpb25hbCBh
cmd1bWVudCBtdXN0IGJlIGEgQ1BVIG51bWJlciA+PSAwLlxuIik7CisgICAgfQorICB9CisgIFBp
blRocmVhZFRvQ1BVKGNwdSk7CisKKyAgLy8gdW5wcmVkaWN0YWJsZSA9PSAxIGJ1dCB0aGUgY29t
cGlsZXIgZG9lc24ndCBrbm93IHRoYXQuCisgIGNvbnN0IEZ1bmNJbnB1dCB1bnByZWRpY3RhYmxl
ID0gYXJnYyAhPSA5OTk7CisgIHN0YXRpYyBjb25zdCBGdW5jSW5wdXQgaW5wdXRzW10gPSB7dW5w
cmVkaWN0YWJsZSAqIDEwLCB1bnByZWRpY3RhYmxlICogMTAwfTsKKworICBNZWFzdXJlRGl2KGlu
cHV0cyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRl
cm5hbF9uYW5vYmVuY2htYXJrCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhciogYXJndltdKSB7CisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9uYW5vYmVuY2ht
YXJrOjpSdW5BbGwoYXJnYywgYXJndik7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL25vbnNlY3VyZV9iYXNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJu
YWwvbm9uc2VjdXJlX2Jhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uODg0N2U3NGJlZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwv
bm9uc2VjdXJlX2Jhc2UuaApAQCAtMCwwICsxLDE0OCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfTk9OU0VD
VVJFX0JBU0VfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfTk9OU0VDVVJFX0JBU0Vf
SF8KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUg
PGlvc3RyZWFtPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNs
dWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dmVjdG9yPgor
CisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBl
X3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZy5oIgor
I2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3NhbHRlZF9zZWVkX3NlcS5oIgorI2luY2x1
ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWwuaCIKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9zcGFuLmgiCisKK25hbWVz
cGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBFYWNoIGluc3Rh
bmNlIG9mIE5vbnNlY3VyZVVSQkdCYXNlPFVSQkc+IHdpbGwgYmUgc2VlZGVkIGJ5IHZhcmlhdGVz
IHByb2R1Y2VkCisvLyBieSBhIHRocmVhZC11bmlxdWUgVVJCRy1pbnN0YW5jZS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBVUkJHPgorY2xhc3MgTm9uc2VjdXJlVVJCR0Jhc2UgeworIHB1YmxpYzoKKyAg
dXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlwZTsKKworICAvLyBE
ZWZhdWx0IGNvbnN0cnVjdG9yCisgIE5vbnNlY3VyZVVSQkdCYXNlKCkgOiB1cmJnXyhDb25zdHJ1
Y3RVUkJHKCkpIHt9CisKKyAgLy8gQ29weSBkaXNhbGxvd2VkLCBtb3ZlIGFsbG93ZWQuCisgIE5v
bnNlY3VyZVVSQkdCYXNlKGNvbnN0IE5vbnNlY3VyZVVSQkdCYXNlJikgPSBkZWxldGU7CisgIE5v
bnNlY3VyZVVSQkdCYXNlJiBvcGVyYXRvcj0oY29uc3QgTm9uc2VjdXJlVVJCR0Jhc2UmKSA9IGRl
bGV0ZTsKKyAgTm9uc2VjdXJlVVJCR0Jhc2UoTm9uc2VjdXJlVVJCR0Jhc2UmJikgPSBkZWZhdWx0
OworICBOb25zZWN1cmVVUkJHQmFzZSYgb3BlcmF0b3I9KE5vbnNlY3VyZVVSQkdCYXNlJiYpID0g
ZGVmYXVsdDsKKworICAvLyBDb25zdHJ1Y3RvciB1c2luZyBhIHNlZWQKKyAgdGVtcGxhdGUgPGNs
YXNzIFNTZXEsIHR5cGVuYW1lID0gdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIXN0ZDo6aXNfc2FtZTxTU2VxLCBOb25zZWN1cmVVUkJHQmFz
ZT46OnZhbHVlPj4KKyAgZXhwbGljaXQgTm9uc2VjdXJlVVJCR0Jhc2UoU1NlcSYmIHNlcSkKKyAg
ICAgIDogdXJiZ18oQ29uc3RydWN0VVJCRyhzdGQ6OmZvcndhcmQ8U1NlcT4oc2VxKSkpIHt9CisK
KyAgLy8gTm90ZTogb24gTVNWQywgbWluKCkgb3IgbWF4KCkgY2FuIGJlIGludGVycHJldGVkIGFz
IE1JTigpIG9yIE1BWCgpLCBzbyB3ZQorICAvLyBlbmNsb3NlIG1pbigpIG9yIG1heCgpIGluIHBh
cmVucyBhcyAobWluKSgpIGFuZCAobWF4KSgpLgorICAvLyBBZGRpdGlvbmFsbHksIGNsYW5nLWZv
cm1hdCByZXF1aXJlcyBubyBzcGFjZSBiZWZvcmUgdGhpcyBjb25zdHJ1Y3Rpb24uCisKKyAgLy8g
Tm9uc2VjdXJlVVJCR0Jhc2U6Om1pbigpCisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUo
bWluKSgpIHsgcmV0dXJuIChVUkJHOjptaW4pKCk7IH0KKworICAvLyBOb25zZWN1cmVVUkJHQmFz
ZTo6bWF4KCkKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZShtYXgpKCkgeyByZXR1cm4g
KFVSQkc6Om1heCkoKTsgfQorCisgIC8vIE5vbnNlY3VyZVVSQkdCYXNlOjpvcGVyYXRvcigpKCkK
KyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpIHsgcmV0dXJuIHVyYmdfKCk7IH0KKworICAvLyBO
b25zZWN1cmVVUkJHQmFzZTo6ZGlzY2FyZCgpCisgIHZvaWQgZGlzY2FyZCh1bnNpZ25lZCBsb25n
IGxvbmcgdmFsdWVzKSB7ICAvLyBOT0xJTlQocnVudGltZS9pbnQpCisgICAgdXJiZ18uZGlzY2Fy
ZCh2YWx1ZXMpOworICB9CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vbnNlY3VyZVVSQkdC
YXNlJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB1cmJnXyA9PSBvdGhlci51cmJnXzsKKyAg
fQorCisgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb25zZWN1cmVVUkJHQmFzZSYgb3RoZXIpIGNv
bnN0IHsKKyAgICByZXR1cm4gISh1cmJnXyA9PSBvdGhlci51cmJnXyk7CisgIH0KKworIHByaXZh
dGU6CisgIC8vIFNlZWRlciBpcyBhIGN1c3RvbSBzZWVkIHNlcXVlbmNlIHR5cGUgd2hlcmUgZ2Vu
ZXJhdGUoKSBmaWxscyB0aGUgcHJvdmlkZWQKKyAgLy8gYnVmZmVyIHZpYSB0aGUgUmFuZGVuUG9v
bCBlbnRyb3B5IHNvdXJjZS4KKyAgc3RydWN0IFNlZWRlciB7CisgICAgdXNpbmcgcmVzdWx0X3R5
cGUgPSB1aW50MzJfdDsKKworICAgIHNpemVfdCBzaXplKCkgeyByZXR1cm4gMDsgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIE91dEl0ZXJhdG9yPgorICAgIHZvaWQgcGFyYW0oT3V0SXRlcmF0
b3IpIGNvbnN0IHt9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0
b3I+CisgICAgdm9pZCBnZW5lcmF0ZShSYW5kb21BY2Nlc3NJdGVyYXRvciBiZWdpbiwgUmFuZG9t
QWNjZXNzSXRlcmF0b3IgZW5kKSB7CisgICAgICBpZiAoYmVnaW4gIT0gZW5kKSB7CisgICAgICAg
IC8vIGJlZ2luLCBlbmQgbXVzdCBiZSByYW5kb20gYWNjZXNzIGl0ZXJhdG9ycyBhc3NpZ25hYmxl
IGZyb20gdWludDMyX3QuCisgICAgICAgIGdlbmVyYXRlX2ltcGwoCisgICAgICAgICAgICBzdGQ6
OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHNpemVvZigqYmVnaW4pID09IHNpemVvZih1aW50MzJf
dCk+e30sCisgICAgICAgICAgICBiZWdpbiwgZW5kKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAv
LyBDb21tb25seSwgZ2VuZXJhdGUgaXMgaW52b2tlZCB3aXRoIGEgcG9pbnRlciB0byBhIGJ1ZmZl
ciB3aGljaAorICAgIC8vIGNhbiBiZSBjYXN0IHRvIGEgdWludDMyX3QuCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgorICAgIHZvaWQgZ2VuZXJhdGVfaW1wbChz
dGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+LAorICAgICAgICAgICAgICAgICAgICAg
ICBSYW5kb21BY2Nlc3NJdGVyYXRvciBiZWdpbiwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgZW5kKSB7
CisgICAgICBhdXRvIGJ1ZmZlciA9IGFic2w6Ok1ha2VTcGFuKGJlZ2luLCBlbmQpOworICAgICAg
YXV0byB0YXJnZXQgPSBhYnNsOjpNYWtlU3BhbihyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4o
YnVmZmVyLmRhdGEoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZl
ci5zaXplKCkpOworICAgICAgUmFuZGVuUG9vbDx1aW50MzJfdD46OkZpbGwodGFyZ2V0KTsKKyAg
ICB9CisKKyAgICAvLyBUaGUgbm9uLXVpbnQzMl90IGNhc2Ugc2hvdWxkIGJlIHVuY29tbW9uLCBh
bmQgaW52b2x2ZXMgYW4gZXh0cmEgY29weSwKKyAgICAvLyBmaWxsaW5nIHRoZSB1aW50MzJfdCBi
dWZmZXIgYW5kIHRoZW4gbWl4aW5nIGludG8gdGhlIG91dHB1dC4KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3I+CisgICAgdm9pZCBnZW5lcmF0ZV9pbXBsKHN0ZDo6
aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+LAorICAgICAgICAgICAgICAgICAgICAgICBS
YW5kb21BY2Nlc3NJdGVyYXRvciBiZWdpbiwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgZW5kKSB7Cisg
ICAgICBjb25zdCBzaXplX3QgbiA9IHN0ZDo6ZGlzdGFuY2UoYmVnaW4sIGVuZCk7CisgICAgICBh
YnNsOjpJbmxpbmVkVmVjdG9yPHVpbnQzMl90LCA4PiBkYXRhKG4sIDApOworICAgICAgUmFuZGVu
UG9vbDx1aW50MzJfdD46OkZpbGwoYWJzbDo6TWFrZVNwYW4oZGF0YS5iZWdpbigpLCBkYXRhLmVu
ZCgpKSk7CisgICAgICBzdGQ6OmNvcHkoc3RkOjpiZWdpbihkYXRhKSwgc3RkOjplbmQoZGF0YSks
IGJlZ2luKTsKKyAgICB9CisgIH07CisKKyAgc3RhdGljIFVSQkcgQ29uc3RydWN0VVJCRygpIHsK
KyAgICBTZWVkZXIgc2VlZGVyOworICAgIHJldHVybiBVUkJHKHNlZWRlcik7CisgIH0KKworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgU1NlcT4KKyAgc3RhdGljIFVSQkcgQ29uc3RydWN0VVJCRyhTU2Vx
JiYgc2VxKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGF1dG8gc2FsdGVk
X3NlcSA9CisgICAgICAgIHJhbmRvbV9pbnRlcm5hbDo6TWFrZVNhbHRlZFNlZWRTZXEoc3RkOjpm
b3J3YXJkPFNTZXE+KHNlcSkpOworICAgIHJldHVybiBVUkJHKHNhbHRlZF9zZXEpOworICB9CisK
KyAgVVJCRyB1cmJnXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30g
IC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfTk9O
U0VDVVJFX0JBU0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9ub25zZWN1
cmVfYmFzZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25vbnNlY3VyZV9iYXNlX3Rl
c3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ5ZGU5OTAxOWNl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25vbnNlY3VyZV9iYXNl
X3Rlc3QuY2MKQEAgLTAsMCArMSwyNDQgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvbm9uc2VjdXJlX2Jh
c2UuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNzdHJlYW0+CisKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2Rpc3RyaWJ1dGlv
bnMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9yYW5kb20uaCIKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3Mvc3RyX2NhdC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyBFeGFtcGxlTm9uc2VjdXJl
VVJCRyA9CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpOb25zZWN1cmVVUkJHQmFzZTxzdGQ6
Om10MTk5Mzc+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVXNlKGNvbnN0IFQmKSB7
fQorCit9ICAvLyBuYW1lc3BhY2UKKworVEVTVChOb25zZWN1cmVVUkJHQmFzZSwgRGVmYXVsdENv
bnN0cnVjdG9ySXNWYWxpZCkgeworICBFeGFtcGxlTm9uc2VjdXJlVVJCRyB1cmJnOworfQorCisv
LyBFbnN1cmUgdGhhdCB0aGUgcmVjb21tZW5kZWQgdGVtcGxhdGUtaW5zdGFudGlhdGlvbnMgYXJl
IHZhbGlkLgorVEVTVChSZWNvbW1lbmRlZFRlbXBsYXRlcywgQ2FuQmVDb25zdHJ1Y3RlZCkgewor
ICBhYnNsOjpCaXRHZW4gZGVmYXVsdF9nZW5lcmF0b3I7CisgIGFic2w6Okluc2VjdXJlQml0R2Vu
IGluc2VjdXJlX2dlbmVyYXRvcjsKK30KKworVEVTVChSZWNvbW1lbmRlZFRlbXBsYXRlcywgQ2Fu
RGlzY2FyZFZhbHVlcykgeworICBhYnNsOjpCaXRHZW4gZGVmYXVsdF9nZW5lcmF0b3I7CisgIGFi
c2w6Okluc2VjdXJlQml0R2VuIGluc2VjdXJlX2dlbmVyYXRvcjsKKworICBkZWZhdWx0X2dlbmVy
YXRvci5kaXNjYXJkKDUpOworICBpbnNlY3VyZV9nZW5lcmF0b3IuZGlzY2FyZCg1KTsKK30KKwor
VEVTVChOb25zZWN1cmVVUkJHQmFzZSwgU3RhbmRhcmRJbnRlcmZhY2UpIHsKKyAgLy8gTmFtZXMg
YWZ0ZXIgZGVmaW5pdGlvbiBvZiBbcmFuZC5yZXEudXJiZ10gaW4gQysrIHN0YW5kYXJkLgorICAv
LyBlIHVzIGEgdmFsdWUgb2YgRQorICAvLyB2IGlzIGEgbHZhbHVlIG9mIEUKKyAgLy8geCwgeSBh
cmUgcG9zc2libHkgY29uc3QgdmFsdWVzIG9mIEUKKyAgLy8gcyBpcyBhIHZhbHVlIG9mIFQKKyAg
Ly8gcSBpcyBhIHZhbHVlIHNhdGlzZnlpbmcgcmVxdWlyZW1lbnRzIG9mIHNlZWRfc2VxdWVuY2UK
KyAgLy8geiBpcyBhIHZhbHVlIG9mIHR5cGUgdW5zaWduZWQgbG9uZyBsb25nCisgIC8vIG9zIGlz
IGEgc29tZSBzcGVjaWFsaXphdGlvbiBvZiBiYXNpY19vc3RyZWFtCisgIC8vIGlzIGlzIGEgc29t
ZSBzcGVjaWFsaXphdGlvbiBvZiBiYXNpY19pc3RyZWFtCisKKyAgdXNpbmcgRSA9IGFic2w6OnJh
bmRvbV9pbnRlcm5hbDo6Tm9uc2VjdXJlVVJCR0Jhc2U8c3RkOjptaW5zdGRfcmFuZD47CisKKyAg
dXNpbmcgVCA9IHR5cGVuYW1lIEU6OnJlc3VsdF90eXBlOworCisgIHN0YXRpY19hc3NlcnQoIXN0
ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiTm9u
c2VjdXJlVVJCR0Jhc2Ugc2hvdWxkIG5vdCBiZSBjb3B5IGNvbnN0cnVjdGlibGUiKTsKKworICBz
dGF0aWNfYXNzZXJ0KCFhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8RT46OnZhbHVlLAorICAgICAg
ICAgICAgICAgICJOb25zZWN1cmVVUkJHQmFzZSBzaG91bGQgbm90IGJlIGNvcHkgYXNzaWduYWJs
ZSIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8RT46OnZh
bHVlLAorICAgICAgICAgICAgICAgICJOb25zZWN1cmVVUkJHQmFzZSBzaG91bGQgYmUgbW92ZSBj
b25zdHJ1Y3RpYmxlIik7CisKKyAgc3RhdGljX2Fzc2VydChhYnNsOjppc19tb3ZlX2Fzc2lnbmFi
bGU8RT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJOb25zZWN1cmVVUkJHQmFzZSBzaG91bGQg
YmUgbW92ZSBhc3NpZ25hYmxlIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVj
bHR5cGUoc3RkOjpkZWNsdmFsPEU+KCkoKSksIFQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAi
cmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3IoKSBtdXN0IGJlIHJlc3VsdF90eXBlIik7CisKKyAgewor
ICAgIGNvbnN0IEUgeCwgeTsKKyAgICBVc2UoeCk7CisgICAgVXNlKHkpOworCisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoeCA9PSB5KSwgYm9vbD46OnZhbHVlLAorICAg
ICAgICAgICAgICAgICAgInJldHVybiB0eXBlIG9mIG9wZXJhdG9yPT0gbXVzdCBiZSBib29sIik7
CisKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZSh4ICE9IHkpLCBib29s
Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3I9PSBt
dXN0IGJlIGJvb2wiKTsKKyAgfQorCisgIEUgZTsKKyAgc3RkOjpzZWVkX3NlcSBxezEsIDIsIDN9
OworCisgIEV7fTsKKyAgRXtxfTsKKworICAvLyBDb3B5IGNvbnN0cnVjdG9yIG5vdCBzdXBwb3J0
ZWQuCisgIC8vIEV7eH07CisKKyAgLy8gcmVzdWx0X3R5cGUgc2VlZCBjb25zdHJ1Y3RvciBub3Qg
c3VwcG9ydGVkLgorICAvLyBFe1R7MX19OworCisgIC8vIE1vdmUgY29uc3RydWN0b3JzIGFyZSBz
dXBwb3J0ZWQuCisgIHsKKyAgICBFIHRtcChxKTsKKyAgICBFIG0gPSBzdGQ6Om1vdmUodG1wKTsK
KyAgICBFIG4oc3RkOjptb3ZlKG0pKTsKKyAgICBFWFBFQ1RfVFJVRShlICE9IG4pOworICB9CisK
KyAgLy8gQ29tcGFyaXNvbnMgd29yay4KKyAgeworICAgIC8vIE1TVkMgZW1pdHMgZXJyb3IgMjcx
OCB3aGVuIHVzaW5nIEVYUEVDVF9FUShlLCB4KQorICAgIC8vICAqIGFjdHVhbCBwYXJhbWV0ZXIg
d2l0aCBfX2RlY2xzcGVjKGFsaWduKCcjJykpIHdvbid0IGJlIGFsaWduZWQKKyAgICBFIGEocSk7
CisgICAgRSBiKHEpOworCisgICAgRVhQRUNUX1RSVUUoYSAhPSBlKTsKKyAgICBFWFBFQ1RfVFJV
RShhID09IGIpOworCisgICAgYSgpOworICAgIEVYUEVDVF9UUlVFKGEgIT0gYik7CisgIH0KKwor
ICAvLyBlLnNlZWQocykgbm90IHN1cHBvcnRlZC4KKworICAvLyBbcmFuZC5yZXEuZW5nXSBzcGVj
aWZpZXMgdGhlIHBhcmFtZXRlciBhcyAndW5zaWduZWQgbG9uZyBsb25nJworICAvLyBlLmRpc2Nh
cmQodW5zaWduZWQgbG9uZyBsb25nKSBpcyBzdXBwb3J0ZWQuCisgIHVuc2lnbmVkIGxvbmcgbG9u
ZyB6ID0gMTsgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgZS5kaXNjYXJkKHopOworfQorCitU
RVNUKE5vbnNlY3VyZVVSQkdCYXNlLCBTZWVkU2VxQ29uc3RydWN0b3JJc1ZhbGlkKSB7CisgIHN0
ZDo6c2VlZF9zZXEgc2VxOworICBFeGFtcGxlTm9uc2VjdXJlVVJCRyByYmcoc2VxKTsKK30KKwor
VEVTVChOb25zZWN1cmVVUkJHQmFzZSwgQ29tcGF0aWJsZVdpdGhEaXN0cmlidXRpb25VdGlscykg
eworICBFeGFtcGxlTm9uc2VjdXJlVVJCRyByYmc7CisKKyAgYWJzbDo6VW5pZm9ybShyYmcsIDAs
IDEwMCk7CisgIGFic2w6OlVuaWZvcm0ocmJnLCAwLjUsIDAuNyk7CisgIGFic2w6OlBvaXNzb248
dWludDMyX3Q+KHJiZyk7CisgIGFic2w6OkV4cG9uZW50aWFsPGZsb2F0PihyYmcpOworfQorCitU
RVNUKE5vbnNlY3VyZVVSQkdCYXNlLCBDb21wYXRpYmxlV2l0aFN0ZERpc3RyaWJ1dGlvbnMpIHsK
KyAgRXhhbXBsZU5vbnNlY3VyZVVSQkcgcmJnOworCisgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJp
YnV0aW9uPHVpbnQzMl90PigwLCAxMDApKHJiZyk7CisgIHN0ZDo6dW5pZm9ybV9yZWFsX2Rpc3Ry
aWJ1dGlvbjxmbG9hdD4oKShyYmcpOworICBzdGQ6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24oMC4y
KShyYmcpOworfQorCitURVNUKE5vbnNlY3VyZVVSQkdCYXNlLCBDb25zZWN1dGl2ZURlZmF1bHRJ
bnN0YW5jZXNZaWVsZFVuaXF1ZVZhcmlhdGVzKSB7CisgIGNvbnN0IHNpemVfdCBrTnVtU2FtcGxl
cyA9IDEyODsKKworICBFeGFtcGxlTm9uc2VjdXJlVVJCRyByYmcxOworICBFeGFtcGxlTm9uc2Vj
dXJlVVJCRyByYmcyOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bVNhbXBsZXM7IGkr
KykgeworICAgIEVYUEVDVF9ORShyYmcxKCksIHJiZzIoKSk7CisgIH0KK30KKworVEVTVChOb25z
ZWN1cmVVUkJHQmFzZSwgRXF1YWxTZWVkU2VxdWVuY2VzWWllbGRFcXVhbFZhcmlhdGVzKSB7Cisg
IHN0ZDo6c2VlZF9zZXEgc2VxOworCisgIEV4YW1wbGVOb25zZWN1cmVVUkJHIHJiZzEoc2VxKTsK
KyAgRXhhbXBsZU5vbnNlY3VyZVVSQkcgcmJnMihzZXEpOworCisgIC8vIEV4YW1wbGVOb25zZWN1
cmVVUkJHIHJiZzMoezEsIDIsIDN9KTsgIC8vIFNob3VsZCBub3QgY29tcGlsZS4KKworICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgRVhQRUNUX0VRKHJiZzEoKSwg
cmJnMigpKTsKKyAgfQorCisgIHJiZzEuZGlzY2FyZCgxMDApOworICByYmcyLmRpc2NhcmQoMTAw
KTsKKworICAvLyBUaGUgc2VxdWVuY2VzIHNob3VsZCBjb250aW51ZSBhZnRlciBkaXNjYXJkaW5n
CisgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICBFWFBFQ1RfRVEo
cmJnMSgpLCByYmcyKCkpOworICB9Cit9CisKKy8vIFRoaXMgaXMgYSBQUk5HLWNvbXBhdGlibGUg
dHlwZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gdGVzdAorLy8gdGhhdCBOb25zZWN1cmVVUkJH
QmFzZTo6U2VlZGVyIGNhbiBjb3JyZWN0bHkgaGFuZGxlIGl0ZXJhdG9ycworLy8gdG8gYXJiaXRy
YXJ5IG5vbi11aW50MzJfdCBzaXplIHR5cGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1
Y3QgU2VlZGVyVGVzdEVuZ2luZSB7CisgIHVzaW5nIHJlc3VsdF90eXBlID0gVDsKKworICBzdGF0
aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1pbikoKSB7CisgICAgcmV0dXJuIChzdGQ6Om51bWVy
aWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWluKSgpOworICB9CisgIHN0YXRpYyBjb25zdGV4cHIg
cmVzdWx0X3R5cGUobWF4KSgpIHsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVz
dWx0X3R5cGU+OjptYXgpKCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgU2VlZFNlcXVlbmNl
LAorICAgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwKKyAg
ICAgICAgICAgICAgICAhc3RkOjppc19zYW1lPFNlZWRTZXF1ZW5jZSwgU2VlZGVyVGVzdEVuZ2lu
ZT46OnZhbHVlPj4KKyAgZXhwbGljaXQgU2VlZGVyVGVzdEVuZ2luZShTZWVkU2VxdWVuY2UmJiBz
ZXEpIHsKKyAgICBzZWVkKHNlcSk7CisgIH0KKworICBTZWVkZXJUZXN0RW5naW5lKGNvbnN0IFNl
ZWRlclRlc3RFbmdpbmUmKSA9IGRlZmF1bHQ7CisgIFNlZWRlclRlc3RFbmdpbmUmIG9wZXJhdG9y
PShjb25zdCBTZWVkZXJUZXN0RW5naW5lJikgPSBkZWZhdWx0OworICBTZWVkZXJUZXN0RW5naW5l
KFNlZWRlclRlc3RFbmdpbmUmJikgPSBkZWZhdWx0OworICBTZWVkZXJUZXN0RW5naW5lJiBvcGVy
YXRvcj0oU2VlZGVyVGVzdEVuZ2luZSYmKSA9IGRlZmF1bHQ7CisKKyAgcmVzdWx0X3R5cGUgb3Bl
cmF0b3IoKSgpIHsgcmV0dXJuIHN0YXRlWzBdOyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFNlZWRT
ZXF1ZW5jZT4KKyAgdm9pZCBzZWVkKFNlZWRTZXF1ZW5jZSYmIHNlcSkgeworICAgIHN0ZDo6Zmls
bChzdGQ6OmJlZ2luKHN0YXRlKSwgc3RkOjplbmQoc3RhdGUpLCBUKDApKTsKKyAgICBzZXEuZ2Vu
ZXJhdGUoc3RkOjpiZWdpbihzdGF0ZSksIHN0ZDo6ZW5kKHN0YXRlKSk7CisgIH0KKworICBUIHN0
YXRlWzJdOworfTsKKworVEVTVChOb25zZWN1cmVVUkJHQmFzZSwgU2VlZGVyV29ya3NGb3JVMzIp
IHsKKyAgdXNpbmcgVTMyID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Tm9uc2VjdXJl
VVJCR0Jhc2U8U2VlZGVyVGVzdEVuZ2luZTx1aW50MzJfdD4+OworICBVMzIgeDsKKyAgRVhQRUNU
X05FKDAsIHgoKSk7Cit9CisKK1RFU1QoTm9uc2VjdXJlVVJCR0Jhc2UsIFNlZWRlcldvcmtzRm9y
VTY0KSB7CisgIHVzaW5nIFU2NCA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok5vbnNl
Y3VyZVVSQkdCYXNlPFNlZWRlclRlc3RFbmdpbmU8dWludDY0X3Q+PjsKKworICBVNjQgeDsKKyAg
RVhQRUNUX05FKDAsIHgoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwv
cGNnX2VuZ2luZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3BjZ19lbmdpbmUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjVkZjRlYWZmZmEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcGNnX2VuZ2luZS5oCkBAIC0wLDAgKzEsMzA1
IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9QQ0dfRU5HSU5FX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lO
VEVSTkFMX1BDR19FTkdJTkVfSF8KKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVk
ZSAiYWJzbC9iYXNlL2NvbmZpZy5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5o
IgorI2luY2x1ZGUgImFic2wvbnVtZXJpYy9pbnQxMjguaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9mYXN0bWF0aC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lv
c3RyZWFtX3N0YXRlX3NhdmVyLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5k
b21faW50ZXJuYWwgeworCisvLyBwY2dfZW5naW5lIGlzIGEgc2ltcGxpZmllZCBpbXBsZW1lbnRh
dGlvbiBvZiBNZWxpc3NhIE8nTmVpbCdzIFBDRyBlbmdpbmUgaW4KKy8vIEMrKy4gIFBDRyBjb21i
aW5lcyBhIGxpbmVhciBjb25ncnVlbnRpYWwgZ2VuZXJhdG9yIChMQ0cpIHdpdGggb3V0cHV0IHN0
YXRlCisvLyBtaXhpbmcgZnVuY3Rpb25zIHRvIGdlbmVyYXRlIGVhY2ggcmFuZG9tIHZhcmlhdGUu
ICBwY2dfZW5naW5lIHN1cHBvcnRzIG9ubHkgYQorLy8gc2luZ2xlIHNlcXVlbmNlIChvbmVzZXEp
LCBhbmQgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1zLgorLy8KKy8vIHBjZ19lbmdpbmUgaXMgcGFy
YW1ldGVyaXplZCBieSB0d28gdHlwZXM6CisvLyAgIFBhcmFtcywgd2hpY2ggcHJvdmlkZXMgdGhl
IG11bHRpcGxpZXIgYW5kIGluY3JlbWVudCB2YWx1ZXM7CisvLyAgIE1peCwgd2hpY2ggbWl4ZXMg
dGhlIHN0YXRlIGludG8gdGhlIHJlc3VsdC4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1z
LCB0eXBlbmFtZSBNaXg+CitjbGFzcyBwY2dfZW5naW5lIHsKKyAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWU8dHlwZW5hbWUgUGFyYW1zOjpzdGF0ZV90eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlbmFtZSBNaXg6OnN0YXRlX3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAg
ICAgICAiQ2xhc3MtdGVtcGxhdGUgYWJzbDo6cGNnX2VuZ2luZSBtdXN0IGJlIHBhcmFtZXRlcml6
ZWQgYnkgIgorICAgICAgICAgICAgICAgICJQYXJhbXMgYW5kIE1peCB3aXRoIGlkZW50aWNhbCBz
dGF0ZV90eXBlIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Vuc2lnbmVkPHR5cGVuYW1l
IE1peDo6cmVzdWx0X3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiQ2xhc3MtdGVtcGxh
dGUgYWJzbDo6cGNnX2VuZ2luZSBtdXN0IGJlIHBhcmFtZXRlcml6ZWQgYnkgIgorICAgICAgICAg
ICAgICAgICJhbiB1bnNpZ25lZCBNaXg6OnJlc3VsdF90eXBlIik7CisKKyAgdXNpbmcgcGFyYW1z
X3R5cGUgPSBQYXJhbXM7CisgIHVzaW5nIG1peF90eXBlID0gTWl4OworICB1c2luZyBzdGF0ZV90
eXBlID0gdHlwZW5hbWUgTWl4OjpzdGF0ZV90eXBlOworCisgcHVibGljOgorICAvLyBDKysxMSBV
UkJHIGludGVyZmFjZToKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSBNaXg6OnJlc3Vs
dF90eXBlOworCisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUobWluKSgpIHsKKyAgICBy
ZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptaW4pKCk7CisgIH0KKwor
ICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1heCkoKSB7CisgICAgcmV0dXJuIChzdGQ6
Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpOworICB9CisKKyAgZXhwbGljaXQg
cGNnX2VuZ2luZSh1aW50NjRfdCBzZWVkX3ZhbHVlID0gMCkgeyBzZWVkKHNlZWRfdmFsdWUpOyB9
CisKKyAgdGVtcGxhdGUgPGNsYXNzIFNlZWRTZXF1ZW5jZSwKKyAgICAgICAgICAgIHR5cGVuYW1l
ID0gdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICAgICAgICAgIXN0ZDo6aXNf
c2FtZTxTZWVkU2VxdWVuY2UsIHBjZ19lbmdpbmU+Ojp2YWx1ZT4+CisgIGV4cGxpY2l0IHBjZ19l
bmdpbmUoU2VlZFNlcXVlbmNlJiYgc2VxKSB7CisgICAgc2VlZChzZXEpOworICB9CisKKyAgcGNn
X2VuZ2luZShjb25zdCBwY2dfZW5naW5lJikgPSBkZWZhdWx0OworICBwY2dfZW5naW5lJiBvcGVy
YXRvcj0oY29uc3QgcGNnX2VuZ2luZSYpID0gZGVmYXVsdDsKKyAgcGNnX2VuZ2luZShwY2dfZW5n
aW5lJiYpID0gZGVmYXVsdDsKKyAgcGNnX2VuZ2luZSYgb3BlcmF0b3I9KHBjZ19lbmdpbmUmJikg
PSBkZWZhdWx0OworCisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKSB7CisgICAgLy8gQWR2YW5j
ZSB0aGUgTENHIHN0YXRlLCBhbHdheXMgdXNpbmcgdGhlIG5ldyB2YWx1ZSB0byBnZW5lcmF0ZSB0
aGUgb3V0cHV0LgorICAgIHN0YXRlXyA9IGxjZyhzdGF0ZV8pOworICAgIHJldHVybiBNaXh7fShz
dGF0ZV8pOworICB9CisKKyAgdm9pZCBzZWVkKHVpbnQ2NF90IHNlZWRfdmFsdWUgPSAwKSB7Cisg
ICAgc3RhdGVfdHlwZSB0bXAgPSBzZWVkX3ZhbHVlOworICAgIHN0YXRlXyA9IGxjZyh0bXAgKyBQ
YXJhbXM6OmluY3JlbWVudCgpKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBTZWVkU2VxdWVu
Y2U+CisgIHR5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PAorICAgICAgIXN0ZDo6aXNfY29udmVy
dGlibGU8U2VlZFNlcXVlbmNlLCB1aW50NjRfdD46OnZhbHVlLCB2b2lkPgorICBzZWVkKFNlZWRT
ZXF1ZW5jZSYmIHNlcSkgeworICAgIHJlc2VlZChzZXEpOworICB9CisKKyAgdm9pZCBkaXNjYXJk
KHVpbnQ2NF90IGNvdW50KSB7IHN0YXRlXyA9IGFkdmFuY2Uoc3RhdGVfLCBjb3VudCk7IH0KKwor
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgcGNnX2VuZ2luZSYgb3RoZXIpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gc3RhdGVfID09IG90aGVyLnN0YXRlXzsKKyAgfQorCisgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBwY2dfZW5naW5lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KKyAgZnJpZW5kIHR5
cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PChzaXplb2Yoc3RhdGVfdHlwZSkgPT0gMTYpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJU
LCBUcmFpdHM+Jj4KKyAgb3BlcmF0b3I8PCgKKyAgICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFy
VCwgVHJhaXRzPiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgY29u
c3QgcGNnX2VuZ2luZSYgZW5naW5lKSB7CisgICAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5h
bDo6bWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKG9zKTsKKyAgICByYW5kb21faW50ZXJuYWw6OnN0
cmVhbV91MTI4X2hlbHBlcjxzdGF0ZV90eXBlPiBoZWxwZXI7CisgICAgaGVscGVyLndyaXRlKHBj
Z19lbmdpbmU6OnBhcmFtc190eXBlOjptdWx0aXBsaWVyKCksIG9zKTsKKyAgICBvcyA8PCBvcy5m
aWxsKCk7CisgICAgaGVscGVyLndyaXRlKHBjZ19lbmdpbmU6OnBhcmFtc190eXBlOjppbmNyZW1l
bnQoKSwgb3MpOworICAgIG9zIDw8IG9zLmZpbGwoKTsKKyAgICBoZWxwZXIud3JpdGUoZW5naW5l
LnN0YXRlXywgb3MpOworICAgIHJldHVybiBvczsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBD
aGFyVCwgY2xhc3MgVHJhaXRzPgorICBmcmllbmQgdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8
KHNpemVvZihzdGF0ZV90eXBlKSA8PSA4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiY+CisgIG9wZXJhdG9yPDwo
CisgICAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9zLCAgLy8gTk9MSU5U
KHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgIGNvbnN0IHBjZ19lbmdpbmUmIGVuZ2luZSkgewor
ICAgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZl
cihvcyk7CisgICAgb3MgPDwgcGNnX2VuZ2luZTo6cGFyYW1zX3R5cGU6Om11bHRpcGxpZXIoKSA8
PCBvcy5maWxsKCk7CisgICAgb3MgPDwgcGNnX2VuZ2luZTo6cGFyYW1zX3R5cGU6OmluY3JlbWVu
dCgpIDw8IG9zLmZpbGwoKTsKKyAgICBvcyA8PCBlbmdpbmUuc3RhdGVfOworICAgIHJldHVybiBv
czsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgorICBmcmll
bmQgdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8KHNpemVvZihzdGF0ZV90eXBlKSA9PSAxNiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX2lzdHJlYW08
Q2hhclQsIFRyYWl0cz4mPgorICBvcGVyYXRvcj4+KAorICAgICAgc3RkOjpiYXNpY19pc3RyZWFt
PENoYXJULCBUcmFpdHM+JiBpcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAg
ICBwY2dfZW5naW5lJiBlbmdpbmUpIHsgICAgICAgICAgICAgICAgICAgLy8gTk9MSU5UKHJ1bnRp
bWUvcmVmZXJlbmNlcykKKyAgICByYW5kb21faW50ZXJuYWw6OnN0cmVhbV91MTI4X2hlbHBlcjxz
dGF0ZV90eXBlPiBoZWxwZXI7CisgICAgYXV0byBtdWx0ID0gaGVscGVyLnJlYWQoaXMpOworICAg
IGF1dG8gaW5jID0gaGVscGVyLnJlYWQoaXMpOworICAgIGF1dG8gdG1wID0gaGVscGVyLnJlYWQo
aXMpOworICAgIGlmIChtdWx0ICE9IHBjZ19lbmdpbmU6OnBhcmFtc190eXBlOjptdWx0aXBsaWVy
KCkgfHwKKyAgICAgICAgaW5jICE9IHBjZ19lbmdpbmU6OnBhcmFtc190eXBlOjppbmNyZW1lbnQo
KSkgeworICAgICAgLy8gc2lnbmFsIGZhaWx1cmUgYnkgc2V0dGluZyB0aGUgZmFpbGJpdC4KKyAg
ICAgIGlzLnNldHN0YXRlKGlzLnJkc3RhdGUoKSB8IHN0ZDo6aW9zX2Jhc2U6OmZhaWxiaXQpOwor
ICAgIH0KKyAgICBpZiAoIWlzLmZhaWwoKSkgeworICAgICAgZW5naW5lLnN0YXRlXyA9IHRtcDsK
KyAgICB9CisgICAgcmV0dXJuIGlzOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIENoYXJULCBj
bGFzcyBUcmFpdHM+CisgIGZyaWVuZCB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwoc2l6ZW9m
KHN0YXRlX3R5cGUpIDw9IDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+Jj4KKyAgb3BlcmF0b3I+PigKKyAgICAg
IHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAvLyBOT0xJTlQocnVudGlt
ZS9yZWZlcmVuY2VzKQorICAgICAgcGNnX2VuZ2luZSYgZW5naW5lKSB7ICAgICAgICAgICAgICAg
ICAgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgc3RhdGVfdHlwZSBtdWx0e30s
IGluY3t9LCB0bXB7fTsKKyAgICBpcyA+PiBtdWx0ID4+IGluYyA+PiB0bXA7CisgICAgaWYgKG11
bHQgIT0gcGNnX2VuZ2luZTo6cGFyYW1zX3R5cGU6Om11bHRpcGxpZXIoKSB8fAorICAgICAgICBp
bmMgIT0gcGNnX2VuZ2luZTo6cGFyYW1zX3R5cGU6OmluY3JlbWVudCgpKSB7CisgICAgICAvLyBz
aWduYWwgZmFpbHVyZSBieSBzZXR0aW5nIHRoZSBmYWlsYml0LgorICAgICAgaXMuc2V0c3RhdGUo
aXMucmRzdGF0ZSgpIHwgc3RkOjppb3NfYmFzZTo6ZmFpbGJpdCk7CisgICAgfQorICAgIGlmICgh
aXMuZmFpbCgpKSB7CisgICAgICBlbmdpbmUuc3RhdGVfID0gdG1wOworICAgIH0KKyAgICByZXR1
cm4gaXM7CisgIH0KKworIHByaXZhdGU6CisgIHN0YXRlX3R5cGUgc3RhdGVfOworCisgIC8vIFJl
dHVybnMgdGhlIGxpbmVhci1jb25ncnVlbnRpYWwgZ2VuZXJhdG9yIG5leHQgc3RhdGUuCisgIHN0
YXRpYyBpbmxpbmUgY29uc3RleHByIHN0YXRlX3R5cGUgbGNnKHN0YXRlX3R5cGUgcykgeworICAg
IHJldHVybiBzICogUGFyYW1zOjptdWx0aXBsaWVyKCkgKyBQYXJhbXM6OmluY3JlbWVudCgpOwor
ICB9CisKKyAgLy8gUmV0dXJucyB0aGUgbGluZWFyLWNvbmdydWVudGlhbCBhcmJpdHJhcnkgc2Vl
ayBzdGF0ZS4KKyAgaW5saW5lIHN0YXRlX3R5cGUgYWR2YW5jZShzdGF0ZV90eXBlIHMsIHVpbnQ2
NF90IG4pIGNvbnN0IHsKKyAgICBzdGF0ZV90eXBlIG11bHQgPSBQYXJhbXM6Om11bHRpcGxpZXIo
KTsKKyAgICBzdGF0ZV90eXBlIGluYyA9IFBhcmFtczo6aW5jcmVtZW50KCk7CisgICAgc3RhdGVf
dHlwZSBtID0gMTsKKyAgICBzdGF0ZV90eXBlIGkgPSAwOworICAgIHdoaWxlIChuID4gMCkgewor
ICAgICAgaWYgKG4gJiAxKSB7CisgICAgICAgIG0gKj0gbXVsdDsKKyAgICAgICAgaSA9IGkgKiBt
dWx0ICsgaW5jOworICAgICAgfQorICAgICAgaW5jID0gKG11bHQgKyAxKSAqIGluYzsKKyAgICAg
IG11bHQgKj0gbXVsdDsKKyAgICAgIG4gPj49IDE7CisgICAgfQorICAgIHJldHVybiBtICogcyAr
IGk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgU2VlZFNlcXVlbmNlPgorICB2b2lkIHJlc2Vl
ZChTZWVkU2VxdWVuY2UmIHNlcSkgeworICAgIHVzaW5nIHNlcXVlbmNlX3Jlc3VsdF90eXBlID0g
dHlwZW5hbWUgU2VlZFNlcXVlbmNlOjpyZXN1bHRfdHlwZTsKKyAgICBjb25zdGV4cHIgc2l6ZV90
IGtCdWZmZXJTaXplID0KKyAgICAgICAgc2l6ZW9mKHN0YXRlX3R5cGUpIC8gc2l6ZW9mKHNlcXVl
bmNlX3Jlc3VsdF90eXBlKTsKKyAgICBzZXF1ZW5jZV9yZXN1bHRfdHlwZSBidWZmZXJba0J1ZmZl
clNpemVdOworICAgIHNlcS5nZW5lcmF0ZShzdGQ6OmJlZ2luKGJ1ZmZlciksIHN0ZDo6ZW5kKGJ1
ZmZlcikpOworICAgIC8vIENvbnZlcnQgdGhlIHNlZWQgb3V0cHV0IHRvIGEgc2luZ2xlIHN0YXRl
IHZhbHVlLgorICAgIHN0YXRlX3R5cGUgdG1wID0gYnVmZmVyWzBdOworICAgIGZvciAoc2l6ZV90
IGkgPSAxOyBpIDwga0J1ZmZlclNpemU7IGkrKykgeworICAgICAgdG1wIDw8PSAoc2l6ZW9mKHNl
cXVlbmNlX3Jlc3VsdF90eXBlKSAqIDgpOworICAgICAgdG1wIHw9IGJ1ZmZlcltpXTsKKyAgICB9
CisgICAgc3RhdGVfID0gbGNnKHRtcCArIHBhcmFtc190eXBlOjppbmNyZW1lbnQoKSk7CisgIH0K
K307CisKKy8vIFBhcmFtZXRlcml6ZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBDRyAxMjgtYml0
IG9uZXNlcSBzdGF0ZS4KKy8vIFRoaXMgcHJvdmlkZXMgc3RhdGVfdHlwZSwgbXVsdGlwbGllciwg
YW5kIGluY3JlbWVudCBmb3IgcGNnX2VuZ2luZS4KK3RlbXBsYXRlIDx1aW50NjRfdCBrTXVsdEEs
IHVpbnQ2NF90IGtNdWx0QiwgdWludDY0X3Qga0luY0EsIHVpbnQ2NF90IGtJbmNCPgorY2xhc3Mg
cGNnMTI4X3BhcmFtcyB7CisgcHVibGljOgorI2lmIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4
CisgIHVzaW5nIHN0YXRlX3R5cGUgPSBfX3VpbnQxMjhfdDsKKyAgc3RhdGljIGlubGluZSBjb25z
dGV4cHIgc3RhdGVfdHlwZSBtYWtlX3UxMjgodWludDY0X3QgYSwgdWludDY0X3QgYikgeworICAg
IHJldHVybiAoc3RhdGljX2Nhc3Q8X191aW50MTI4X3Q+KGEpIDw8IDY0KSB8IGI7CisgIH0KKyNl
bHNlCisgIHVzaW5nIHN0YXRlX3R5cGUgPSBhYnNsOjp1aW50MTI4OworICBzdGF0aWMgaW5saW5l
IGNvbnN0ZXhwciBzdGF0ZV90eXBlIG1ha2VfdTEyOCh1aW50NjRfdCBhLCB1aW50NjRfdCBiKSB7
CisgICAgcmV0dXJuIGFic2w6Ok1ha2VVaW50MTI4KGEsIGIpOworICB9CisjZW5kaWYKKworICBz
dGF0aWMgaW5saW5lIGNvbnN0ZXhwciBzdGF0ZV90eXBlIG11bHRpcGxpZXIoKSB7CisgICAgcmV0
dXJuIG1ha2VfdTEyOChrTXVsdEEsIGtNdWx0Qik7CisgIH0KKyAgc3RhdGljIGlubGluZSBjb25z
dGV4cHIgc3RhdGVfdHlwZSBpbmNyZW1lbnQoKSB7CisgICAgcmV0dXJuIG1ha2VfdTEyOChrSW5j
QSwga0luY0IpOworICB9Cit9OworCisvLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgUENHIHhzbF9y
cl8xMjhfNjQgMTI4LWJpdCBtaXhpbmcgZnVuY3Rpb24sIHdoaWNoCisvLyBhY2NlcHRzIGFuIGlu
cHV0IG9mIHN0YXRlX3R5cGUgYW5kIG1peGVzIGl0IGludG8gYW4gb3V0cHV0IG9mIHJlc3VsdF90
eXBlLgorc3RydWN0IHBjZ194c2xfcnJfMTI4XzY0IHsKKyNpZiBBQlNMX0hBVkVfSU5UUklOU0lD
X0lOVDEyOAorICB1c2luZyBzdGF0ZV90eXBlID0gX191aW50MTI4X3Q7CisjZWxzZQorICB1c2lu
ZyBzdGF0ZV90eXBlID0gYWJzbDo6dWludDEyODsKKyNlbmRpZgorICB1c2luZyByZXN1bHRfdHlw
ZSA9IHVpbnQ2NF90OworCisgIGlubGluZSB1aW50NjRfdCBvcGVyYXRvcigpKHN0YXRlX3R5cGUg
c3RhdGUpIHsKKyAgICAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIHhzbF9ycl8xMjhfNjQg
bWl4aW5nIGZ1bmN0aW9uLgorI2lmIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4CisgICAgdWlu
dDY0X3Qgcm90YXRlID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRlID4+IDEyMnUpOworICAg
IHN0YXRlIF49IHN0YXRlID4+IDY0OworICAgIHVpbnQ2NF90IHMgPSBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oc3RhdGUpOworI2Vsc2UKKyAgICB1aW50NjRfdCBoID0gVWludDEyOEhpZ2g2NChzdGF0
ZSk7CisgICAgdWludDY0X3Qgcm90YXRlID0gaCA+PiA1OHU7CisgICAgdWludDY0X3QgcyA9IFVp
bnQxMjhMb3c2NChzdGF0ZSkgXiBoOworI2VuZGlmCisgICAgcmV0dXJuIHJhbmRvbV9pbnRlcm5h
bDo6cm90cihzLCByb3RhdGUpOworICB9Cit9OworCisvLyBQYXJhbWV0ZXJpemVkIGltcGxlbWVu
dGF0aW9uIG9mIHRoZSBQQ0cgNjQtYml0IG9uZXNlcSBzdGF0ZS4KKy8vIFRoaXMgcHJvdmlkZXMg
c3RhdGVfdHlwZSwgbXVsdGlwbGllciwgYW5kIGluY3JlbWVudCBmb3IgcGNnX2VuZ2luZS4KK3Rl
bXBsYXRlIDx1aW50NjRfdCBrTXVsdCwgdWludDY0X3Qga0luYz4KK2NsYXNzIHBjZzY0X3BhcmFt
cyB7CisgcHVibGljOgorICB1c2luZyBzdGF0ZV90eXBlID0gdWludDY0X3Q7CisgIHN0YXRpYyBp
bmxpbmUgY29uc3RleHByIHN0YXRlX3R5cGUgbXVsdGlwbGllcigpIHsgcmV0dXJuIGtNdWx0OyB9
CisgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIHN0YXRlX3R5cGUgaW5jcmVtZW50KCkgeyByZXR1
cm4ga0luYzsgfQorfTsKKworLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIFBDRyB4c2hfcnJfNjRf
MzIgNjQtYml0IG1peGluZyBmdW5jdGlvbiwgd2hpY2ggYWNjZXB0cworLy8gYW4gaW5wdXQgb2Yg
c3RhdGVfdHlwZSBhbmQgbWl4ZXMgaXQgaW50byBhbiBvdXRwdXQgb2YgcmVzdWx0X3R5cGUuCitz
dHJ1Y3QgcGNnX3hzaF9ycl82NF8zMiB7CisgIHVzaW5nIHN0YXRlX3R5cGUgPSB1aW50NjRfdDsK
KyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB1aW50MzJfdDsKKyAgaW5saW5lIHVpbnQzMl90IG9wZXJh
dG9yKCkodWludDY0X3Qgc3RhdGUpIHsKKyAgICByZXR1cm4gcmFuZG9tX2ludGVybmFsOjpyb3Ry
KAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKChzdGF0ZSA+PiAxOCkgXiBzdGF0ZSkg
Pj4gMjcpLCBzdGF0ZSA+PiA1OSk7CisgIH0KK307CisKKy8vIFN0YWJsZSBwY2dfZW5naW5lIGlt
cGxlbWVudGF0aW9uczoKKy8vIFRoaXMgaXMgYSA2NC1iaXQgZ2VuZXJhdG9yIHVzaW5nIDEyOC1i
aXRzIG9mIHN0YXRlLgorLy8gVGhlIG91dHB1dCBzZXF1ZW5jZSBpcyBlcXVpdmFsZW50IHRvIE1l
bGlzc2EgTydOZWlsJ3MgcGNnNjRfb25lc2VxLgordXNpbmcgcGNnNjRfMjAxOF9lbmdpbmUgPSBw
Y2dfZW5naW5lPAorICAgIHJhbmRvbV9pbnRlcm5hbDo6cGNnMTI4X3BhcmFtczwweDIzNjBlZDA1
MWZjNjVkYTR1bGwsIDB4NDM4NWRmNjQ5ZmNjZjY0NXVsbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg1ODUxZjQyZDRjOTU3ZjJkLCAweDE0MDU3YjdlZjc2NzgxNGY+LAor
ICAgIHJhbmRvbV9pbnRlcm5hbDo6cGNnX3hzbF9ycl8xMjhfNjQ+OworCisvLyBUaGlzIGlzIGEg
MzItYml0IGdlbmVyYXRvciB1c2luZyA2NC1iaXRzIG9mIHN0YXRlLgorLy8gVGhpcyBpcyBlcXVp
dmFsZW50IHRvIE1lbGlzc2EgTydOZWlsJ3MgcGNnMzJfb25lc2VxLgordXNpbmcgcGNnMzJfMjAx
OF9lbmdpbmUgPSBwY2dfZW5naW5lPAorICAgIHJhbmRvbV9pbnRlcm5hbDo6cGNnNjRfcGFyYW1z
PDB4NTg1MWY0MmQ0Yzk1N2YyZHVsbCwgMHgxNDA1N2I3ZWY3Njc4MTRmdWxsPiwKKyAgICByYW5k
b21faW50ZXJuYWw6OnBjZ194c2hfcnJfNjRfMzI+OworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9t
X2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9N
X0lOVEVSTkFMX1BDR19FTkdJTkVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC9wY2dfZW5naW5lX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcGNnX2VuZ2luZV90
ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZDc2M2U4OWVi
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wY2dfZW5naW5lX3Rl
c3QuY2MKQEAgLTAsMCArMSw2MzggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcGNnX2VuZ2luZS5oIgor
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGJpdHNldD4KKyNpbmNsdWRlIDxyYW5k
b20+CisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9leHBs
aWNpdF9zZWVkX3NlcS5oIgorI2luY2x1ZGUgImFic2wvdGltZS9jbG9jay5oIgorCisjZGVmaW5l
IFVQREFURV9HT0xERU4gMAorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpyYW5kb21faW50
ZXJuYWw6OkV4cGxpY2l0U2VlZFNlcTsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cGNn
MzJfMjAxOF9lbmdpbmU7Cit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnBjZzY0XzIwMThf
ZW5naW5lOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lVHlwZT4KK2NsYXNzIFBDR0VuZ2lu
ZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCit1c2luZyBFbmdpbmVUeXBlcyA9
IDo6dGVzdGluZzo6VHlwZXM8cGNnNjRfMjAxOF9lbmdpbmUsIHBjZzMyXzIwMThfZW5naW5lPjsK
KworVFlQRURfVEVTVF9TVUlURShQQ0dFbmdpbmVUZXN0LCBFbmdpbmVUeXBlcyk7CisKK1RZUEVE
X1RFU1QoUENHRW5naW5lVGVzdCwgVmVyaWZ5UmVzZWVkQ2hhbmdlc0FsbFZhbHVlcykgeworICB1
c2luZyBlbmdpbmVfdHlwZSA9IFR5cGVQYXJhbTsKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBl
bmFtZSBlbmdpbmVfdHlwZTo6cmVzdWx0X3R5cGU7CisKKyAgY29uc3Qgc2l6ZV90IGtOdW1PdXRw
dXRzID0gMTY7CisgIGVuZ2luZV90eXBlIGVuZ2luZTsKKworICAvLyBNU1ZDIGVtaXRzIGVycm9y
IDI3MTkgd2l0aG91dCB0aGUgdXNlIG9mIHN0ZDo6cmVmIGJlbG93LgorICAvLyAgKiBmb3JtYWwg
cGFyYW1ldGVyIHdpdGggX19kZWNsc3BlYyhhbGlnbignIycpKSB3b24ndCBiZSBhbGlnbmVkCisK
KyAgeworICAgIHN0ZDo6c2VlZF9zZXEgc2VxMXsxLCAyLCAzLCA0LCA1LCA2LCA3fTsKKyAgICBl
bmdpbmUuc2VlZChzZXExKTsKKyAgfQorICByZXN1bHRfdHlwZSBhW2tOdW1PdXRwdXRzXTsKKyAg
c3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKGEpLCBzdGQ6OmVuZChhKSwgc3RkOjpyZWYoZW5naW5l
KSk7CisKKyAgeworICAgIHN0ZDo6cmFuZG9tX2RldmljZSByZDsKKyAgICBzdGQ6OnNlZWRfc2Vx
IHNlcTJ7cmQoKSwgcmQoKSwgcmQoKX07CisgICAgZW5naW5lLnNlZWQoc2VxMik7CisgIH0KKyAg
cmVzdWx0X3R5cGUgYltrTnVtT3V0cHV0c107CisgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdpbihi
KSwgc3RkOjplbmQoYiksIHN0ZDo6cmVmKGVuZ2luZSkpOworCisgIC8vIFZlcmlmeSB0aGF0IHR3
byB1bmNvcnJlbGF0ZWQgdmFsdWVzIGhhdmUgfjUwJSBvZiB0aGVyZSBiaXRzIGluIGNvbW1vbi4g
VXNlCisgIC8vIGEgMTAlIG1hcmdpbi1vZi1lcnJvciB0byByZWR1Y2UgZmxha2luZXNzLgorICBz
aXplX3QgY2hhbmdlZF9iaXRzID0gMDsKKyAgc2l6ZV90IHVuY2hhbmdlZF9iaXRzID0gMDsKKyAg
c2l6ZV90IHRvdGFsX3NldCA9IDA7CisgIHNpemVfdCB0b3RhbF9iaXRzID0gMDsKKyAgc2l6ZV90
IGVxdWFsX2NvdW50ID0gMDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtT3V0cHV0czsg
KytpKSB7CisgICAgZXF1YWxfY291bnQgKz0gKGFbaV0gPT0gYltpXSkgPyAxIDogMDsKKyAgICBz
dGQ6OmJpdHNldDxzaXplb2YocmVzdWx0X3R5cGUpICogOD4gYml0c2V0KGFbaV0gXiBiW2ldKTsK
KyAgICBjaGFuZ2VkX2JpdHMgKz0gYml0c2V0LmNvdW50KCk7CisgICAgdW5jaGFuZ2VkX2JpdHMg
Kz0gYml0c2V0LnNpemUoKSAtIGJpdHNldC5jb3VudCgpOworCisgICAgc3RkOjpiaXRzZXQ8c2l6
ZW9mKHJlc3VsdF90eXBlKSAqIDg+IGFfc2V0KGFbaV0pOworICAgIHN0ZDo6Yml0c2V0PHNpemVv
ZihyZXN1bHRfdHlwZSkgKiA4PiBiX3NldChiW2ldKTsKKyAgICB0b3RhbF9zZXQgKz0gYV9zZXQu
Y291bnQoKSArIGJfc2V0LmNvdW50KCk7CisgICAgdG90YWxfYml0cyArPSAyICogOCAqIHNpemVv
ZihyZXN1bHRfdHlwZSk7CisgIH0KKyAgLy8gT24gYXZlcmFnZSwgaGFsZiB0aGUgYml0cyBhcmUg
Y2hhbmdlZCBiZXR3ZWVuIHR3byBjYWxscy4KKyAgRVhQRUNUX0xFKGNoYW5nZWRfYml0cywgMC42
MCAqIChjaGFuZ2VkX2JpdHMgKyB1bmNoYW5nZWRfYml0cykpOworICBFWFBFQ1RfR0UoY2hhbmdl
ZF9iaXRzLCAwLjQwICogKGNoYW5nZWRfYml0cyArIHVuY2hhbmdlZF9iaXRzKSk7CisKKyAgLy8g
dmVyaWZ5IHVzaW5nIGEgcXVpY2sgbm9ybWFsLWFwcHJveGltYXRpb24gdG8gdGhlIGJpbm9taWFs
LgorICBFWFBFQ1RfTkVBUih0b3RhbF9zZXQsIHRvdGFsX2JpdHMgKiAwLjUsIDQgKiBzdGQ6OnNx
cnQodG90YWxfYml0cykpCisgICAgICA8PCAiQCIgPDwgdG90YWxfc2V0IC8gc3RhdGljX2Nhc3Q8
ZG91YmxlPih0b3RhbF9iaXRzKTsKKworICAvLyBBbHNvLCBBW2ldID09IEJbaV0gd2l0aCBwcm9i
YWJpbGl0eSAoMS9yYW5nZSkgKiBOLgorICAvLyBHaXZlIHRoaXMgYSBwcmV0dHkgd2lkZSBsYXRp
dHVkZSwgdGhvdWdoLgorICBjb25zdCBkb3VibGUga0V4cGVjdGVkID0ga051bU91dHB1dHMgLyAo
MS4wICogc2l6ZW9mKHJlc3VsdF90eXBlKSAqIDgpOworICBFWFBFQ1RfTEUoZXF1YWxfY291bnQs
IDEuMCArIGtFeHBlY3RlZCk7Cit9CisKKy8vIE51bWJlciBvZiB2YWx1ZXMgdGhhdCBuZWVkcyB0
byBiZSBjb25zdW1lZCB0byBjbGVhbiB0d28gc2l6ZXMgb2YgYnVmZmVyCisvLyBhbmQgdHJpZ2dl
ciB0aGlyZCByZWZyZXNoLiAoc2xpZ2h0bHkgb3ZlcmVzdGltYXRlcyB0aGUgYWN0dWFsIHN0YXRl
IHNpemUpLgorY29uc3RleHByIHNpemVfdCBrVHdvQnVmZmVyVmFsdWVzID0gMTY7CisKK1RZUEVE
X1RFU1QoUENHRW5naW5lVGVzdCwgVmVyaWZ5RGlzY2FyZCkgeworICB1c2luZyBlbmdpbmVfdHlw
ZSA9IFR5cGVQYXJhbTsKKworICBmb3IgKHNpemVfdCBudW1fdXNlZCA9IDA7IG51bV91c2VkIDwg
a1R3b0J1ZmZlclZhbHVlczsgKytudW1fdXNlZCkgeworICAgIGVuZ2luZV90eXBlIGVuZ2luZV91
c2VkOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX3VzZWQ7ICsraSkgeworICAgICAg
ZW5naW5lX3VzZWQoKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBudW1fZGlzY2FyZCA9IDA7
IG51bV9kaXNjYXJkIDwga1R3b0J1ZmZlclZhbHVlczsKKyAgICAgICAgICsrbnVtX2Rpc2NhcmQp
IHsKKyAgICAgIGVuZ2luZV90eXBlIGVuZ2luZTEgPSBlbmdpbmVfdXNlZDsKKyAgICAgIGVuZ2lu
ZV90eXBlIGVuZ2luZTIgPSBlbmdpbmVfdXNlZDsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtX2Rpc2NhcmQ7ICsraSkgeworICAgICAgICBlbmdpbmUxKCk7CisgICAgICB9CisgICAg
ICBlbmdpbmUyLmRpc2NhcmQobnVtX2Rpc2NhcmQpOworICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBrVHdvQnVmZmVyVmFsdWVzOyArK2kpIHsKKyAgICAgICAgY29uc3QgYXV0byByMSA9IGVu
Z2luZTEoKTsKKyAgICAgICAgY29uc3QgYXV0byByMiA9IGVuZ2luZTIoKTsKKyAgICAgICAgQVNT
RVJUX0VRKHIxLCByMikgPDwgInVzZWQ9IiA8PCBudW1fdXNlZCA8PCAiIGRpc2NhcmQ9IiA8PCBu
dW1fZGlzY2FyZDsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworVFlQRURfVEVTVChQQ0dFbmdp
bmVUZXN0LCBTdHJlYW1PcGVyYXRvcnNSZXN1bHQpIHsKKyAgdXNpbmcgZW5naW5lX3R5cGUgPSBU
eXBlUGFyYW07CisKKyAgc3RkOjp3b3N0cmluZ3N0cmVhbSBvczsKKyAgc3RkOjp3aXN0cmluZ3N0
cmVhbSBpczsKKyAgZW5naW5lX3R5cGUgZW5naW5lOworCisgIEVYUEVDVF9FUSgmKG9zIDw8IGVu
Z2luZSksICZvcyk7CisgIEVYUEVDVF9FUSgmKGlzID4+IGVuZ2luZSksICZpcyk7Cit9CisKK1RZ
UEVEX1RFU1QoUENHRW5naW5lVGVzdCwgU3RyZWFtU2VyaWFsaXphdGlvbikgeworICB1c2luZyBl
bmdpbmVfdHlwZSA9IFR5cGVQYXJhbTsKKworICBmb3IgKHNpemVfdCBkaXNjYXJkID0gMDsgZGlz
Y2FyZCA8IGtUd29CdWZmZXJWYWx1ZXM7ICsrZGlzY2FyZCkgeworICAgIEV4cGxpY2l0U2VlZFNl
cSBzZWVkX3NlcXVlbmNlezEyLCAzNCwgNTZ9OworICAgIGVuZ2luZV90eXBlIGVuZ2luZShzZWVk
X3NlcXVlbmNlKTsKKyAgICBlbmdpbmUuZGlzY2FyZChkaXNjYXJkKTsKKworICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIHN0cmVhbTsKKyAgICBzdHJlYW0gPDwgZW5naW5lOworCisgICAgZW5naW5lX3R5
cGUgbmV3X2VuZ2luZTsKKyAgICBzdHJlYW0gPj4gbmV3X2VuZ2luZTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IDY0OyArK2kpIHsKKyAgICAgIEVYUEVDVF9FUShlbmdpbmUoKSwgbmV3X2Vu
Z2luZSgpKSA8PCAiICIgPDwgaTsKKyAgICB9CisgIH0KK30KKworY29uc3RleHByIHNpemVfdCBr
TnVtR29sZGVuT3V0cHV0cyA9IDEyNzsKKworLy8gVGhpcyB0ZXN0IGlzIGNoZWNraW5nIGlmIHJh
bmRlbl9lbmdpbmUgaXMgbWVldHMgaW50ZXJmYWNlIHJlcXVpcmVtZW50cworLy8gZGVmaW5lZCBp
biBbcmFuZC5yZXEudXJiZ10uCitUWVBFRF9URVNUKFBDR0VuZ2luZVRlc3QsIFJhbmRvbU51bWJl
ckVuZ2luZUludGVyZmFjZSkgeworICB1c2luZyBlbmdpbmVfdHlwZSA9IFR5cGVQYXJhbTsKKwor
ICB1c2luZyBFID0gZW5naW5lX3R5cGU7CisgIHVzaW5nIFQgPSB0eXBlbmFtZSBFOjpyZXN1bHRf
dHlwZTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPEU+Ojp2
YWx1ZSwKKyAgICAgICAgICAgICAgICAiZW5naW5lX3R5cGUgbXVzdCBiZSBjb3B5IGNvbnN0cnVj
dGlibGUiKTsKKworICBzdGF0aWNfYXNzZXJ0KGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxFPjo6
dmFsdWUsCisgICAgICAgICAgICAgICAgImVuZ2luZV90eXBlIG11c3QgYmUgY29weSBhc3NpZ25h
YmxlIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxFPjo6
dmFsdWUsCisgICAgICAgICAgICAgICAgImVuZ2luZV90eXBlIG11c3QgYmUgbW92ZSBjb25zdHJ1
Y3RpYmxlIik7CisKKyAgc3RhdGljX2Fzc2VydChhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8RT46
OnZhbHVlLAorICAgICAgICAgICAgICAgICJlbmdpbmVfdHlwZSBtdXN0IGJlIG1vdmUgYXNzaWdu
YWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKHN0ZDo6ZGVj
bHZhbDxFPigpKCkpLCBUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgInJldHVybiB0eXBlIG9m
IG9wZXJhdG9yKCkgbXVzdCBiZSByZXN1bHRfdHlwZSIpOworCisgIC8vIE5hbWVzIGFmdGVyIGRl
ZmluaXRpb24gb2YgW3JhbmQucmVxLnVyYmddIGluIEMrKyBzdGFuZGFyZC4KKyAgLy8gZSB1cyBh
IHZhbHVlIG9mIEUKKyAgLy8gdiBpcyBhIGx2YWx1ZSBvZiBFCisgIC8vIHgsIHkgYXJlIHBvc3Np
Ymx5IGNvbnN0IHZhbHVlcyBvZiBFCisgIC8vIHMgaXMgYSB2YWx1ZSBvZiBUCisgIC8vIHEgaXMg
YSB2YWx1ZSBzYXRpc2Z5aW5nIHJlcXVpcmVtZW50cyBvZiBzZWVkX3NlcXVlbmNlCisgIC8vIHog
aXMgYSB2YWx1ZSBvZiB0eXBlIHVuc2lnbmVkIGxvbmcgbG9uZworICAvLyBvcyBpcyBhIHNvbWUg
c3BlY2lhbGl6YXRpb24gb2YgYmFzaWNfb3N0cmVhbQorICAvLyBpcyBpcyBhIHNvbWUgc3BlY2lh
bGl6YXRpb24gb2YgYmFzaWNfaXN0cmVhbQorCisgIEUgZSwgdjsKKyAgY29uc3QgRSB4LCB5Owor
ICBUIHMgPSAxOworICBzdGQ6OnNlZWRfc2VxIHF7MSwgMiwgM307CisgIHVuc2lnbmVkIGxvbmcg
bG9uZyB6ID0gMTsgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgc3RkOjp3b3N0cmluZ3N0cmVh
bSBvczsKKyAgc3RkOjp3aXN0cmluZ3N0cmVhbSBpczsKKworICBFe307CisgIEV7eH07CisgIEV7
c307CisgIEV7cX07CisKKyAgZS5zZWVkKCk7CisKKyAgLy8gTVNWQyBlbWl0cyBlcnJvciAyNzE4
IHdoZW4gdXNpbmcgRVhQRUNUX0VRKGUsIHgpCisgIC8vICAqIGFjdHVhbCBwYXJhbWV0ZXIgd2l0
aCBfX2RlY2xzcGVjKGFsaWduKCcjJykpIHdvbid0IGJlIGFsaWduZWQKKyAgRVhQRUNUX1RSVUUo
ZSA9PSB4KTsKKworICBlLnNlZWQocSk7CisgIHsKKyAgICBFIHRtcChxKTsKKyAgICBFWFBFQ1Rf
VFJVRShlID09IHRtcCk7CisgIH0KKworICBlKCk7CisgIHsKKyAgICBFIHRtcChxKTsKKyAgICBF
WFBFQ1RfVFJVRShlICE9IHRtcCk7CisgIH0KKworICBlLmRpc2NhcmQoeik7CisKKyAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoeCA9PSB5KSwgYm9vbD46OnZhbHVlLAorICAg
ICAgICAgICAgICAgICJyZXR1cm4gdHlwZSBvZiBvcGVyYXRvcj09IG11c3QgYmUgYm9vbCIpOwor
CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKHggIT0geSksIGJvb2w+Ojp2
YWx1ZSwKKyAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3I9PSBtdXN0IGJl
IGJvb2wiKTsKK30KKworVFlQRURfVEVTVChQQ0dFbmdpbmVUZXN0LCBSYW5kZW5FbmdpbmVTRklO
QUVUZXN0KSB7CisgIHVzaW5nIGVuZ2luZV90eXBlID0gVHlwZVBhcmFtOworICB1c2luZyByZXN1
bHRfdHlwZSA9IHR5cGVuYW1lIGVuZ2luZV90eXBlOjpyZXN1bHRfdHlwZTsKKworICB7CisgICAg
ZW5naW5lX3R5cGUgZW5naW5lKHJlc3VsdF90eXBlKDEpKTsKKyAgICBlbmdpbmUuc2VlZChyZXN1
bHRfdHlwZSgxKSk7CisgIH0KKworICB7CisgICAgcmVzdWx0X3R5cGUgbiA9IDE7CisgICAgZW5n
aW5lX3R5cGUgZW5naW5lKG4pOworICAgIGVuZ2luZS5zZWVkKG4pOworICB9CisKKyAgeworICAg
IGVuZ2luZV90eXBlIGVuZ2luZSgxKTsKKyAgICBlbmdpbmUuc2VlZCgxKTsKKyAgfQorCisgIHsK
KyAgICBpbnQgbiA9IDE7CisgICAgZW5naW5lX3R5cGUgZW5naW5lKG4pOworICAgIGVuZ2luZS5z
ZWVkKG4pOworICB9CisKKyAgeworICAgIHN0ZDo6c2VlZF9zZXEgc2VlZF9zZXE7CisgICAgZW5n
aW5lX3R5cGUgZW5naW5lKHNlZWRfc2VxKTsKKyAgICBlbmdpbmUuc2VlZChzZWVkX3NlcSk7Cisg
IH0KKworICB7CisgICAgZW5naW5lX3R5cGUgZW5naW5le3N0ZDo6c2VlZF9zZXEoKX07CisgICAg
ZW5naW5lLnNlZWQoc3RkOjpzZWVkX3NlcSgpKTsKKyAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IFN0YWJpbGl0eSB0ZXN0cyBmb3IgcGNnNjRfMjAxOF9lbmdpbmUKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVEVT
VChQQ0c2NDIwMThFbmdpbmVUZXN0LCBWZXJpZnlHb2xkZW4pIHsKKyAgY29uc3RleHByIHVpbnQ2
NF90IGtHb2xkZW5ba051bUdvbGRlbk91dHB1dHNdID0geworICAgICAgMHgwMTA3MDE5NmU2OTVm
OGYxLCAweDcwM2VjODQwYzU5ZjQ0OTMsIDB4ZTU0OTU0OTE0YjNhNDRmYSwKKyAgICAgIDB4OTYx
MzBmZjIwNGI5Mjg1ZSwgMHg3ZDlmZGVmNTM1Y2ViMjFhLCAweDY2NmZlZWQ0MmUxMjE5YTAsCisg
ICAgICAweDk4MWY2ODU3MjFjODMyNmYsIDB4YWQ4MDcxMGQ2ZWFiNGRkYSwgMHhlMjAyYzQ4MGIw
MzdhMDI5LAorICAgICAgMHg1ZDMzOTBlYWVkZDkwN2UyLCAweDA3NTZiZWZiMzljNmI4YWEsIDB4
MWZiNDRiYTY2MzRkNjJhMywKKyAgICAgIDB4OGQyMDQyMzY2MjQyNjY0MiwgMHgzNGVhOTEwMTY3
YTM5ZmI0LCAweDkzMDEwYjQzYTgwZDBhYjYsCisgICAgICAweDY2M2RiMDhhOThmYzU2OGEsIDB4
NzIwYjBhMTMzNTk1NmZhZSwgMHgyYzM1NDgzZTMxZTFkM2JhLAorICAgICAgMHg0MjlmMzk3NzYz
Mzc0MDlkLCAweGI0NmQ5OWU2Mzg2ODczNDQsIDB4MTA1MzcwYjk2YWVkY2FlZSwKKyAgICAgIDB4
Mzk5OWU5MmY4MTFjZmY3MSwgMHhkMjMwZjhiY2I1OTFjZmM5LCAweDBkY2UzZGIyYmE3YmRlYTUs
CisgICAgICAweGNmMmY1MmM5MWVlYzk5YWYsIDB4MmJjN2MyNGE4Yjk5OGEzOSwgMHhiZDhhZjFi
MGQ1OTlhMTljLAorICAgICAgMHg1NmJjNDVhYmM2NjA1OWY1LCAweDE3MGE0NmRjMTcwZjdmMWUs
IDB4YzI1ZGFmNTI3N2I4NWZhZCwKKyAgICAgIDB4ZTYyOWMyZTBjOTQ4ZWFkYiwgMHgxNzIwYTc5
NjkxNTU0MmVkLCAweDIyZmIwY2FhNGY5MDk5NTEsCisgICAgICAweDdlMGMwZjQxNzVhY2Q4M2Qs
IDB4ZDlmY2FiMzdmZjJhODYwYywgMHhhYjIyODBmYjIwNTRiYWQxLAorICAgICAgMHg1OGU4YTA2
ZjM3ZmE5ZTk5LCAweGMzYTUyYTMwYjA2NTI4YzcsIDB4MDE3NWY3NzNhMTNmYzFiZCwKKyAgICAg
IDB4NzMxY2ZjNTg0YjAwZTg0MCwgMHg0MDRjYzdiMjY0ODA2OWNiLCAweDViYzI5MTUzYjBiN2Y3
ODMsCisgICAgICAweDc3MTMxMGEzOGNjOTk5ZDEsIDB4NzY2YTU3MmYwYTcxYTkxNiwgMHg5MGY0
NTBmYjRmYzQ4MzQ4LAorICAgICAgMHhmMDgwZWEzZTFjN2IxYTBkLCAweDE1NDcxYTQ1MDdkNjZh
NDQsIDB4N2Q1OGU1NWE3OGYzZGY2OSwKKyAgICAgIDB4MDEzMGEwOTQ1NzZhYzk5YywgMHg0NjY2
OWNiMmQwNGIxZDg3LCAweDE3YWI1YmVkMjAxOTE4NDAsCisgICAgICAweDk1YjE3N2QyNjBhZGZm
M2UsIDB4MDI1ZmI2MjRiNmVlNGMwNywgMHhiMzVkZTQzMzAxNTRhOTVmLAorICAgICAgMHhlODUx
MGZmZjY3ZTI0Yzc5LCAweDEzMmMzY2JjZDc2ZWQyZDMsIDB4MzVlN2NjMTQ1YTA5MzkwNCwKKyAg
ICAgIDB4OWY1YjViNWY4MTU4M2I3OSwgMHgzZWU3NDlhNTMzOTY2MjMzLCAweDRhZjg1ODg2Y2Rl
ZGE4Y2QsCisgICAgICAweDBjYTUzODBlY2IzZWYzYWEsIDB4NGY2NzRlYjc2NjFkMzE5MiwgMHg4
OGEyOWFhZDAwY2Q3NzMzLAorICAgICAgMHg3MGI2MjdjYTA0NWZmYWM2LCAweDU5MTJiNDNlYTg4
NzYyM2QsIDB4OTVkYzlmYzZmNjJjZjIyMSwKKyAgICAgIDB4OTI2MDgxYTEyYTVjOTA1YiwgMHg5
YzU3ZDRjZDdkZmNlNjUxLCAweDg1YWIyY2JmMjNlM2JiNWQsCisgICAgICAweGM1Y2Q2NjlmNjMw
MjMxNTIsIDB4MzA2N2JlMGZhZDVkODk4ZSwgMHgxMmI1NmY0NDRjYjUzZDA1LAorICAgICAgMHhi
YzJlNWE2NDBjMzQzNGZjLCAweDkyODBiZmYwZTQ2MTNmZTEsIDB4OTg4MTkwOTRjNTI4NzQzZSwK
KyAgICAgIDB4OTk5ZDFjOThkODI5ZGYzMywgMHg5ZmY4MmEwMTJkYzg5MjQyLCAweGY5OTE4M2Vk
MzljOGJlOTQsCisgICAgICAweGYwZjU5MTYxY2Q0MjFjNTUsIDB4M2M3MDU3MzBjMmY2YzQ4ZCwg
MHg2NmFkODVjNmU5Mjc4YTYxLAorICAgICAgMHgyYTM0MjhlNGE0MjhkNWQwLCAweDc5MjA3ZDY4
ZmQwNDk0MGQsIDB4ZWE3ZjJiNDAyZWRjODQzMCwKKyAgICAgIDB4YTA2YjQxOWFjODU3ZjYzYiwg
MHhjYjFkZDBlNmZiYzQ3ZTFjLCAweDRmNTUyMjkyMDBhZGE2YTQsCisgICAgICAweDk2NDdiNWU2
MzU5YzkyN2YsIDB4MzBiZjhmOTE5N2M3ZWZlNSwgMHhhNzk1MTk1MjljYzM4NGQwLAorICAgICAg
MHhiYjIyYzRmMzM5YWQ2NDk3LCAweGQ3Yjk3ODJmNTlkMTQxNzUsIDB4MGRmZjEyZmZmMmVjMDEx
OCwKKyAgICAgIDB4YTMzMWFkODMwNTM0M2E3YywgMHg0OGRhZDdlM2YxN2UwODYyLCAweDMyNGM2
ZmIzZmQzYzk2NjUsCisgICAgICAweGYwZTQzNTBlNzkzM2RmYzQsIDB4N2NjZGEyZjMwYjhiMDNi
NiwgMHhhMGFmYzYxNzkwMDVkZTQwLAorICAgICAgMHhlZTY1ZGE2ZDA2M2IzYTMwLCAweGI5NTA2
ZjQyZjJiZmU4N2EsIDB4YzlhMmUyNmIwZWY1YmFhMCwKKyAgICAgIDB4MzlmYTlkNGY0OTUwMTFk
NiwgMHhiZWNjMjFhNDVkMDIzOTQ4LCAweDZiZjQ4NGM2NTkzZjczN2YsCisgICAgICAweDgwNjVl
MDA3MGNhZGMzYjcsIDB4OWVmNjE3ZWQ4ZDQxOTc5OSwgMHhhYzY5MmNmOGMyMzNkZDE1LAorICAg
ICAgMHhkMmVkODc1ODNjNGViYjk4LCAweGFkOTViYTFiZWJmZWRjNjIsIDB4OWI2MGIxNjBhODI2
NGU0MywKKyAgICAgIDB4MGJjOGM0NWY3MWZjZjI1YiwgMHg0YTc4MDM1Y2RmMWM5OTMxLCAweDQ2
MDJkYzEwNjY2N2UwMjksCisgICAgICAweGIzMzVhM2MyNTA0OThhYzgsIDB4MDI1NmViYzRkZjIw
Y2FiOCwgMHgwYzYxZWZkMTUzZjBjOGQ5LAorICAgICAgMHhlNWQwMTUwYTRmODA2Zjg4LCAweDk5
ZDY1MjFkMzUxZTdkODcsIDB4OGQ0ODg4YzlmODBmNDMyNSwKKyAgICAgIDB4MTA2YzU3MzVjMWJh
ODY4ZCwgMHg3MzQxNDg4MWI4ODBhODc4LCAweDgwOGE5YTU4YTMwNjQ3NTEsCisgICAgICAweDMz
OWEyOWYzNzQ2ZGUzZDUsIDB4NTQxMGQ3ZmE0Zjg3Mzg5NiwgMHhkODQ2MjNjODFkN2I4YTAzLAor
ICAgICAgMHgxZjdjN2U3YTdmNDdmNDYyLAorICB9OworCisgIHBjZzY0XzIwMThfZW5naW5lIGVu
Z2luZSgwKTsKKyNpZiBVUERBVEVfR09MREVOCisgICh2b2lkKWtHb2xkZW47ICAvLyBTaWxlbmNl
IHdhcm5pbmcuCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUdvbGRlbk91dHB1dHM7ICsr
aSkgeworICAgIHByaW50ZigiMHglMDE2bHgsICIsIGVuZ2luZSgpKTsKKyAgICBpZiAoaSAlIDMg
PT0gMikgeworICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKyAgfQorICBwcmludGYoIlxuXG5c
biIpOworI2Vsc2UKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVY
UEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyAgZW5naW5lLnNlZWQoKTsKKyAgZm9yIChj
b25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUo
KSk7CisgIH0KKyNlbmRpZgorfQorCitURVNUKFBDRzY0MjAxOEVuZ2luZVRlc3QsIFZlcmlmeUdv
bGRlblNlZWRlZCkgeworICBjb25zdGV4cHIgdWludDY0X3Qga0dvbGRlbltrTnVtR29sZGVuT3V0
cHV0c10gPSB7CisgICAgICAweGIwMzk4OGYxZTM5NjkxZWUsIDB4YmQyYTFlYjVhYzMxZTk3YSwg
MHg4ZjAwZDZkNDMzNjM0ZDAyLAorICAgICAgMHgxODIzYzI4ZDQ4M2Q1Nzc2LCAweDAwMGMzZWUz
ZTFhZWI3NGEsIDB4ZmE4MmVmMjdhNGYzZGY5YywKKyAgICAgIDB4YzZmMzgyMzA4NjU0ZTQ1NCwg
MHg0MTRhZmIxYTIzODk5NmMyLCAweDQ3MDNhNGJjMjUyZWI0MTEsCisgICAgICAweDk5ZDY0ZjYy
YzhmN2Y2NTQsIDB4YmIwN2ViZTExYTM0ZmE0NCwgMHg3OWViMDZhMzYzYzA2MTMxLAorICAgICAg
MHhmNjZhZDM3NTZmMWM2YjIxLCAweDEzMGMwMWQ1ZTg2OWY0NTcsIDB4NWNhMmI5OTYzYWVjYmM4
MSwKKyAgICAgIDB4ZmVmN2JlYmMxZGUyN2U2YywgMHgxZDE3NGZhYTVlZDJjZGJmLCAweGQ3NWI3
YTc3M2YyYmI4ODksCisgICAgICAweGMzNWM4NzIzMjdhMTcwYTUsIDB4NDZkYTZkODg2NDZhNDJm
ZSwgMHg0NjIyOTg1ZTA0NDJkYWUyLAorICAgICAgMHhiZTNjYmQ2NzI5N2YxZjliLCAweGU3YzM3
YjRhNDc5OGJmZDEsIDB4MTczZDVkZmFkMTVhMjVjMywKKyAgICAgIDB4MGViNjg0OWJhMjk2MTUy
MiwgMHhiMGZmNzI0NmU2NzAwZDczLCAweDg4Y2I5YzQyZDNhZmE1NzcsCisgICAgICAweGI2MDk3
MzFkYmQ5NGQ5MTcsIDB4ZDM5NDFjZGEwNGI0MDA4MSwgMHgyOGQxNDBmNzQwOWJlYTNhLAorICAg
ICAgMHgzYzk2Njk5YTkyMGExMjRhLCAweGRiMjhiZTUyMTk1OGIyZmQsIDB4MGEzZjQ0ZGIzZDRj
NTEyNCwKKyAgICAgIDB4N2FjOGU2MGJhMTNiNzBkMiwgMHg3NWYwM2E0MWRlZDUxOTVhLCAweGFl
ZDEwYWM3YzRlNDgyNWQsCisgICAgICAweGI5MmEzYjE4YWFkYjdhZGMsIDB4ZGE0NWUwMDgxZjJi
Y2E0NiwgMHg3NGQzOWFiMzc1MzE0M2ZjLAorICAgICAgMHhiNjg2MDM4MDE4ZmFjOWNhLCAweDRj
YzMwOWZlOTk1NDJkYmIsIDB4ZjNlMWE0ZmNiMzExMDk3YywKKyAgICAgIDB4NTg3NjNkNmZhNjk4
ZDY5ZCwgMHhkMTFjMzY1ZGJlY2Q4ZDYwLCAweDJjMTVkNTU3MjViMWRlZTcsCisgICAgICAweDg5
ODA1ZjI1NGQ4NTY1OGMsIDB4MjM3NGM0NGRmYzYyMTU4YiwgMHg5YTgzNTBmYTc5OTUzMjhkLAor
ICAgICAgMHgxOThmODM4OTcwY2Y5MWRhLCAweDk2YWZmNTY5NTYyYzBlNTMsIDB4ZDc2YzhjNTJi
N2VjNmUzZiwKKyAgICAgIDB4MjNhMDFjZDlhZTRiYWE4MSwgMHgzYWRiMzY2YjZkMDJhODkzLCAw
eGIzMzEzZTJhNGM1YjMzM2YsCisgICAgICAweDA0YzExMjMwYjk2YTU0MjUsIDB4MWY3ZjdhZjA0
Nzg3ZDU3MSwgMHhhZGRiMDE5MzY1Mjc1ZWM3LAorICAgICAgMHg1Yzk2MDQ2OGNjYjA5ZjQyLCAw
eDg0MzhkYjY5OGM2OWE0NGEsIDB4NDkyYmUxZTQ2MTExNjM3ZSwKKyAgICAgIDB4OWM2YzAxZTE4
MTAwYzYxMCwgMHhiZmU0OGU3NWI3ZDBhY2ViLCAweGI1ZTBiODllYzFjZTZhMDAsCisgICAgICAw
eDlkMjgwZWNiYzJmZTg5OTcsIDB4MjkwZDllOTkxYmE1ZmNhYiwgMHhlZWM1YmVjN2Q5ZDJhNGYw
LAorICAgICAgMHg3MjZlODE0ODhmMTkxNTBlLCAweDFhNmRmNzk1NWE3ZTQ2MmMsIDB4MzdhMTJk
MTc0YmE0NmJiNSwKKyAgICAgIDB4M2NkY2RmZmQ5NmIxYjVjNSwgMHgyYzVkNWFjMTA2NjFhMjZl
LCAweGE3NDJlZDE4ZjIyZTUwYzQsCisgICAgICAweDAwZTBlZDg4ZmYwZDhhMzUsIDB4M2QzYzE3
MThjYjFlZmMwYiwgMHgxZDcwYzUxZmZiY2NiZjExLAorICAgICAgMHhmYmJiODk1MTMyYTQwOTJm
LCAweDYxOWQyN2YyZmIwOTVmMjQsIDB4NjlhZjY4MjAwOTg1ZTVjNCwKKyAgICAgIDB4YmVlNDg4
NWY1NzM3M2Y4ZCwgMHgxMGI3YTZiZmUwNTg3ZTQwLCAweGE4ODVlNmNmMmY3ZTVmMGEsCisgICAg
ICAweDU5Zjg3OTQ2NGY3Njc1NTAsIDB4MjRlODA1ZDY5MDU2OTkwZCwgMHg4NjA5NzBiOTExMDk1
ODkxLAorICAgICAgMHhjYTMxODk5NTRmODQxNzBkLCAweDY2NTJhNWVkZDQ1OTAxMzQsIDB4NWUx
MDA4Y2VmNzYxNzRiZiwKKyAgICAgIDB4Y2JkNDE3ODgxZjJiY2ZlNSwgMHhmZDQ5ZmM5ZDcwNmVj
ZDE3LCAweGVlYmY1NDAyMjFlYmQwNjYsCisgICAgICAweDQ2YWY3Njc5NDY0NTA0Y2IsIDB4ZDQw
Mjg0ODY5NDY5NTZmMSwgMHhkNGY0MTg2NGI4NmMyMTAzLAorICAgICAgMHg3YWYwOTBlNzUxNTgz
MzcyLCAweDk4Y2RhYTA5Mjc4Y2I2NDIsIDB4ZmZkNDJiOTIxMjE1NjAyZiwKKyAgICAgIDB4MWQw
NWJlYzg0NjZiMTc0MCwgMHhmMDM2ZmE3OGEwMTMyMDQ0LCAweDc4Nzg4MDU4OWQxZWNjNzgsCisg
ICAgICAweDU2NDQ1NTJjZmVmMzMyMzAsIDB4MGE5N2UyNzVmZTA2ODg0YiwgMHg5NmQxYjEzMzMz
ZDQ3MGI1LAorICAgICAgMHhjOGIzY2RhZDUyZDNiMDM0LCAweDA5MTM1N2I5ZGI3Mzc2ZmQsIDB4
YTVmZTQyMzI1NTVlZGY4YywKKyAgICAgIDB4MzM3MWJjM2I2YWRhNzZiNSwgMHg3ZGVlYjIzMDA0
NzdjOTk1LCAweDZmYzZkNDI0NGYyODQ5YzEsCisgICAgICAweDc1MGU4Y2M3OTdjYTM0MGEsIDB4
ODE3Mjg2MTNjZDc5ODk5ZiwgMHgzNDY3ZjRlZTZmOWFlYjkzLAorICAgICAgMHg1ZWYwYTkwNWY1
OGM2NDBmLCAweDQzMmRiODVlNTEwMWM5OGEsIDB4NjQ4OGU5NmY0NmFjODBjMiwKKyAgICAgIDB4
MjJmZGRiMjgyNjI1MDQ4YywgMHgxNWIyODdhMGJjMmQ0YzVkLCAweGE3ZTIzNDNlZjFmMjhiY2Us
CisgICAgICAweGM4N2VlMWFhODliZWQwOWUsIDB4MjIwNjEwMTA3ODEyYzVlOSwgMHhjYmRhYjZm
Y2Q2NDBmNTg2LAorICAgICAgMHg4ZDQxMDQ3OTcwOTI4Nzg0LCAweDFhYTQzMTUwOWVjMWFkZTAs
IDB4YWMzZjBiZTUzZjUxOGRkYywKKyAgICAgIDB4MTZmNDQyOGFkODFkMGNiYiwgMHg2NzViMTNj
MjczNmZjNGJiLCAweDZkYjA3M2FmZGQ4N2UzMmQsCisgICAgICAweDU3MmYzY2EyZjFhMDc4YzYs
CisgIH07CisKKyAgRXhwbGljaXRTZWVkU2VxIHNlZWRfc2VxdWVuY2V7MTIsIDM0LCA1Nn07Cisg
IHBjZzY0XzIwMThfZW5naW5lIGVuZ2luZShzZWVkX3NlcXVlbmNlKTsKKyNpZiBVUERBVEVfR09M
REVOCisgICh2b2lkKWtHb2xkZW47ICAvLyBTaWxlbmNlIHdhcm5pbmcuCisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwga051bUdvbGRlbk91dHB1dHM7ICsraSkgeworICAgIHByaW50ZigiMHglMDE2
bHgsICIsIGVuZ2luZSgpKTsKKyAgICBpZiAoaSAlIDMgPT0gMikgeworICAgICAgcHJpbnRmKCJc
biIpOworICAgIH0KKyAgfQorICBwcmludGYoIlxuXG5cbiIpOworI2Vsc2UKKyAgZm9yIChjb25z
dCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7
CisgIH0KKyAgZW5naW5lLnNlZWQoc2VlZF9zZXF1ZW5jZSk7CisgIGZvciAoY29uc3QgYXV0byYg
ZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOworICB9Cisj
ZW5kaWYKK30KKworVEVTVChQQ0c2NDIwMThFbmdpbmVUZXN0LCBWZXJpZnlHb2xkZW5Gcm9tRGVz
ZXJpYWxpemVkRW5naW5lKSB7CisgIGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW2tOdW1Hb2xk
ZW5PdXRwdXRzXSA9IHsKKyAgICAgIDB4ZGQ0MjViNDdiNDExM2RlYSwgMHgxYjA3MTc2NDc5ZDQ0
NGIwLCAweDZiMzkxMDI3NTg2ZjJlNDIsCisgICAgICAweGExNjZmMmIxNWY0YTIxNDMsIDB4ZmZi
NmRiZDdhMTc5ZWU5NywgMHhiMmMwMDAzNTM2NWJmMGIxLAorICAgICAgMHg4ZmJiNTE4YjQ1ODU1
NTIxLCAweGZjNzg5YTU1ZGRmODdjM2IsIDB4NDI5NTMxZjBmMTdmZjM1NSwKKyAgICAgIDB4YmU3
MDg1NjBkNjAzZDI4MywgMHg1YmZmNDE1MTc1YzVjYjZiLCAweGU4MTM0OTFmNGFkNDUzOTQsCisg
ICAgICAweGE4NTNmNDUwNmQ1NTg4MGQsIDB4N2U1Mzg0NTNlNTY4MTcyZSwgMHhlMTAxZjFlMDk4
ZGRkMGVjLAorICAgICAgMHg2ZWUzMTI2NmVlNGM3NjZkLCAweGE4Nzg2ZDkyZDY2YjM5ZDcsIDB4
ZmVlNjIyYTJhY2Y1ZTViMCwKKyAgICAgIDB4NWZlOGU4MmMxMDJmYTdiMywgMHgwMWYxMGJlNGNk
YjUzYzlkLCAweGJlMDU0NTM2NmY4NTcwMjIsCisgICAgICAweDEyZTc0ZjAxMGEzMzliY2EsIDB4
YjEwZDg1Y2E0MGQ1Y2UzNCwgMHhlODBkNmZlYmE1MDU0ODc1LAorICAgICAgMHgyYjdjMWVlNmQ1
NjdkNGVlLCAweDJhOWNkMDQzYmZkMDNiNjYsIDB4NWNmYzUzMWJkMjM5ZjNmMSwKKyAgICAgIDB4
MWM0NzM0ZTQ2NDdkNzBmNSwgMHg4NWE4ZjYwZjAwNmI1NzYwLCAweDZhNDIzOWNlNzZkY2EzODcs
CisgICAgICAweDhkYTBmODZkNzMzOTMzNWMsIDB4ZjA1NWIwNDY4NTUxMzc0ZCwgMHg0ODZlODU2
N2U5YmVhOWEwLAorICAgICAgMHg0Y2I1MzFiODQwNTE5MmRkLCAweGY4MTNiMWVlMzE1NzExMGIs
IDB4MjE0YzJhNjY0YTg3NWQ4ZSwKKyAgICAgIDB4NzQ1MzEyMzdiMjliMzVmNywgMHhhNmYwMjY3
YmI3N2E3NzFlLCAweDY0YjU1MmJmZjU0MTg0YTQsCisgICAgICAweGEyZDZmN2FmMmQ3NWI2ZmMs
IDB4NDYwYTEwMDE4ZTAzYjVhYiwgMHg3NmZkMWZkY2I4MWQwODAwLAorICAgICAgMHg3NmY1Zjgx
ODA1MDcwZDlkLCAweDFmYjc1Y2IxYTcwYjI4OWEsIDB4OWRmZDI1YTAyMmM0YjI3ZiwKKyAgICAg
IDB4OWEzMWExNGE4MDUyOGU5ZSwgMHg5MTBkYzU2NWRkYzI1ODIwLCAweGQ2YWVmOGUyYjA5MzZj
MTAsCisgICAgICAweGUxNzczYzUwN2ZlNzAyMjUsIDB4ZTAyN2ZkN2FhZGQ2MzJiYywgMHhjMWZl
Y2I0MjcwODljOGI4LAorICAgICAgMHhiNWM3NGM2OWZhOWRiZjI2LCAweDcxYmY5YjBlNDY3MDIy
N2QsIDB4MjVmNDhmYWQyMDVkY2ZkZCwKKyAgICAgIDB4OTA1MjQ4ZWM0ZDY4OWM1NiwgMHg1YzJi
NzYzMWIwZGU1YzlkLCAweDlmMmVlMGY4ZjQ4NTAzNmMsCisgICAgICAweGZkNmNlNGViYjkwYmY3
ZWEsIDB4ZDQzNWQyMDA0NjA4NTU3NCwgMHg2YjdlYWRjYjA2MjVmOTg2LAorICAgICAgMHg2Nzlk
N2Q0NGI0OGJlODllLCAweDQ5NjgzYjhlMWNkYzQ5ZGUsIDB4NDM2NmNmNzZlOWEyZjRjYSwKKyAg
ICAgIDB4NTQwMjZlYzFjZGFkN2JlZCwgMHhhOWEwNDM4NTIwN2YyOGQzLCAweGM4ZTY2ZGU0ZWJh
MDc0YjIsCisgICAgICAweDQwYjA4YzQyZGUwZjRjYzAsIDB4MWQ0YzVlMGU5M2M1YmJjMCwgMHgx
OWI4MDc5MmU0NzBhZTJkLAorICAgICAgMHg2ZmNhYWVhYTRjMmE1YmQ5LCAweGE5MmNiMDdjNDIz
ODQzOGUsIDB4OGJiNWM5MThhMDA3ZTI5OCwKKyAgICAgIDB4N2NkNjcxZTk0NDg3NGNmNCwgMHg4
ODE2NjQ3MGIxYmEzY2FjLCAweGQwMTNkNDc2ZWFlZWFkZTYsCisgICAgICAweGNlZTQxNjk0NzE4
OWIzYzMsIDB4NWQ3YzE2YWIwZGNlNjA4OCwgMHhkMzU3OGE1YzMyYjEzZDI3LAorICAgICAgMHgz
ODc1ZGI1YWRjOWNjOTczLCAweGZiZGFiYTAxYzViNWRjNTYsIDB4ZmZjNGZkZDM5MWIyMzFjMywK
KyAgICAgIDB4MjMzNDUyMGVjYjE2NGZlYywgMHgzNjFjMTE1ZTdiNmRlMWZhLCAweGVlZTU4MTA2
Y2MzNTYzZDcsCisgICAgICAweDhiN2YzNWE4ZGIyNWViYjgsIDB4YjI5ZDAwMjExZTJjYWZhNiwg
MHgyMmEzOWZlNDYxNGI2NDZiLAorICAgICAgMHg5MmNhNmRlOGI5OTg1MDZkLCAweDQwOTIyZmUz
ZDM4OGQxZGIsIDB4OWRhNDdmMWU1NDBmODAyYSwKKyAgICAgIDB4ODExZGNlZWJmMTZhMjVkYiwg
MHhmNjUyNGFlMjJlMGU1M2E5LCAweDUyZDllNzgwYTE2ZWI5OWQsCisgICAgICAweDRmNTA0Mjg2
YmI4MzAyMDcsIDB4ZjY2NTRkNDc4NmJkNWNjMywgMHgwMGJkOTgzMTYwMDNhN2UxLAorICAgICAg
MHhlZmRhMDU0YTZhYjhmNWYzLCAweDQ2Y2ZiMGY0YzE4NzI4MjcsIDB4YzIyYjMxNjk2NWMwZjNi
MiwKKyAgICAgIDB4ZDFhMjgwODdjN2U3NTYyYSwgMHhhYTRmNmEwOTRiN2Y1Y2ZmLCAweGZlMmJj
ODUzYTA0MWY3ZGEsCisgICAgICAweGU5ZDUzMTQwMmE4M2MzYmEsIDB4ZTU0NWQ4NjYzZDNjZTRk
ZCwgMHhmYTJkY2Q3ZDkxYTEzZmE4LAorICAgICAgMHhkYTFhMDgwZTUyYTEyN2I4LCAweDE5Yzk4
ZjFmODA5YzNkODQsIDB4MmNlZjEwOWFmNDY3OGM4OCwKKyAgICAgIDB4NTM0NjJhY2NhYjNiOTEz
MiwgMHgxNzZiMTNhODA0MTUzOTRlLCAweGVhNzAwNDdlZjZiYzE3OGIsCisgICAgICAweDU3YmNh
ODA1MDZkNmRjZGYsIDB4ZDg1M2JhMDlmZjA5ZjVjNCwgMHg3NWY0ZGYzYTdkZGQ0Nzc1LAorICAg
ICAgMHgyMDljMzY3YWRlNjJmNGZlLCAweGE5YTBiYmM3NGQ1ZjQ2ODIsIDB4NWRmZTM0YmFkYTg2
YzIxYSwKKyAgICAgIDB4YzJjMDViYmNkMzg1NjZkMSwgMHg2ZGU4MDg4ZTM0OGM5MTZhLCAweDZh
NzAwMWM2MDAwYzIxOTYsCisgICAgICAweGQ5ZmI1MTg2NWZjNGEzNjcsIDB4MTJmMzIwZTQ0NGVj
ZThmZiwgMHg2ZDU2ZjdmNzkzZDY1MDM1LAorICAgICAgMHgxMzhmMzFiN2E4NjVmOGFhLCAweDU4
ZmM2OGI0MDI2YjlhZGYsIDB4Y2Q0ODk1NGI3OWZiNjQzNiwKKyAgICAgIDB4MjdkZmNlNGEwMjMy
YWY4NywKKyAgfTsKKworI2lmIFVQREFURV9HT0xERU4KKyAgKHZvaWQpa0dvbGRlbjsgIC8vIFNp
bGVuY2Ugd2FybmluZy4KKyAgc3RkOjpzZWVkX3NlcSBzZWVkX3NlcXVlbmNlezEsIDIsIDN9Owor
ICBwY2c2NF8yMDE4X2VuZ2luZSBlbmdpbmUoc2VlZF9zZXF1ZW5jZSk7CisgIHN0ZDo6b3N0cmlu
Z3N0cmVhbSBzdHJlYW07CisgIHN0cmVhbSA8PCBlbmdpbmU7CisgIGF1dG8gc3RyID0gc3RyZWFt
LnN0cigpOworICBwcmludGYoIiVzXG5cbiIsIHN0ci5jX3N0cigpKTsKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBrTnVtR29sZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwMTZs
eCwgIiwgZW5naW5lKCkpOworICAgIGlmIChpICUgMyA9PSAyKSB7CisgICAgICBwcmludGYoIlxu
Iik7CisgICAgfQorICB9CisgIHByaW50ZigiXG5cblxuIik7CisjZWxzZQorICBwY2c2NF8yMDE4
X2VuZ2luZSBlbmdpbmU7CisgIHN0ZDo6aXN0cmluZ3N0cmVhbSBzdHJlYW0oCisgICAgICAiMjU0
OTI5Nzk5NTM1NTQxMzkyNCA0ODY1NTQwNTk1NzE0NDIyMzQxIDYzNjQxMzYyMjM4NDY3OTMwMDUg
IgorICAgICAgIjE0NDI2OTUwNDA4ODg5NjM0MDcgMTgwODg1MTk5NTc1NjUzMzY5OTUgNDg0NTM2
OTM2ODE1ODgyNjcwOCIpOworICBzdHJlYW0gPj4gZW5naW5lOworICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW0gOiBrR29sZGVuKSB7CisgICAgRVhQRUNUX0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQor
I2VuZGlmCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gU3RhYmlsaXR5IHRlc3RzIGZvciBwY2czMl8y
MDE4X2VuZ2luZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitURVNUKFBDRzMyMjAxOEVuZ2luZVRlc3QsIFZlcmlm
eUdvbGRlbikgeworICBjb25zdGV4cHIgdWludDMyX3Qga0dvbGRlbltrTnVtR29sZGVuT3V0cHV0
c10gPSB7CisgICAgICAweDdhN2VjYmQ5LCAweDg5ZmQ2YzA2LCAweGFlNjQ2YWE4LCAweGNkM2Nm
OTQ1LCAweDYyMDRiMzAzLCAweDE5OGM4NTg1LAorICAgICAgMHg0OWZjZTYxMSwgMHhkMWU5Mjk3
YSwgMHgxNDJkOTQ0MCwgMHhlZTc1ZjU2YiwgMHg0NzNhOTExNywgMHhlM2E0NTkwMywKKyAgICAg
IDB4YmNlODA3YTEsIDB4ZTU0ZTVmNGQsIDB4NDk3ZDZjNTEsIDB4NjE4MjkxNjYsIDB4YTc0MDQ3
NGIsIDB4MDMxOTEyYTgsCisgICAgICAweDlkZTNkZWZhLCAweGQyNjZkYmYxLCAweDBmMzhiZWJi
LCAweGVjM2M0ZjY1LCAweDA3YzUwNTdkLCAweGJiY2UwM2M4LAorICAgICAgMHhmZDJhYzdhOCwg
MHhmZmNmNDc3MywgMHg1YjEwYWZmYiwgMHhlZGUxYzg0MiwgMHhlMjJiMDFiNywgMHhkYTEzM2M4
YywKKyAgICAgIDB4YWY4OWIwZjQsIDB4MjVkMWI4YmMsIDB4OWY2MjU0ODIsIDB4N2JmZDY4ODIs
IDB4MmUyMjEwYzAsIDB4MmM4ZmI5YTYsCisgICAgICAweDQyY2IzYjgzLCAweDQwY2UwZGFiLCAw
eDY0NGEzNTEwLCAweDM2MjMwZWYyLCAweGUyY2I2ZDQzLCAweDEwMTJiMzQzLAorICAgICAgMHg3
NDZjNmM5ZiwgMHgzNjcxNGNmOCwgMHhlZDFmNTAyNiwgMHg4YmJiZjgzZSwgMHhlOTg3MTBmNCwg
MHg4YTJhZmEzNiwKKyAgICAgIDB4MDkwMzUzNDksIDB4NmRjMWE0ODcsIDB4NjgyYjYzNGIsIDB4
YzEwNjc5NGYsIDB4N2RkNzhiZWIsIDB4NjI4YzI2MmIsCisgICAgICAweDg1MmZiMjMyLCAweGIx
NTNhYzRjLCAweDRmMTY5ZDFiLCAweGE2OWFiNzc0LCAweDRiZDRiNmYyLCAweGRjMzUxZGQzLAor
ICAgICAgMHg5M2ZmM2M4YywgMHhhMzA4MTlhYiwgMHhmZjA3NzU4YywgMHg1YWIxM2M2MiwgMHhk
MTZkN2ZiNSwgMHhjNDk1MGZmYSwKKyAgICAgIDB4ZDMwOWFlNDksIDB4Yjk2NzdhODcsIDB4NDQ2
NGUzMTcsIDB4OTBkYzQ0ZjEsIDB4YzY5NGMxZDQsIDB4MWQ1ZTExNjgsCisgICAgICAweGFkZjM3
YTJkLCAweGRhMzg5OTBkLCAweDFlYzRiZDMzLCAweDM2Y2EyNWNlLCAweGZhMGRjNzZhLCAweDk2
OGE5ZDQzLAorICAgICAgMHg2OTUwYWMzOSwgMHhkZDMyNzZiYywgMHgwNmQ1YTcxZSwgMHgxZjZm
MjgyZCwgMHg1YzYyNmM2MiwgMHhkZGUzZmMzMSwKKyAgICAgIDB4MTUyMTk0Y2UsIDB4YzM1ZWQx
NGMsIDB4YjFmNzIyNGUsIDB4NDdmNzZiYjgsIDB4YjM0ZmRkMDgsIDB4NzAxMTM5NWUsCisgICAg
ICAweDE2MmQyYTQ5LCAweDBkMWJmMDlmLCAweDk0MjhhOTUyLCAweDAzYzVjMzQ0LCAweGQzNTI1
NjE2LCAweDc4MTZmZmYzLAorICAgICAgMHg2YmNlYjhhOCwgMHg4MzQ1YTA4MSwgMHgzNjY0MjBm
ZCwgMHgxODJhYmVkYSwgMHg3MGY4Mjc0NSwgMHhhZjE1ZGVkOCwKKyAgICAgIDB4YzdmNTJjYTIs
IDB4YTk4ZGI5YzUsIDB4OTE5ZDk5YmEsIDB4OWMzNzZjMWMsIDB4ZWQ4ZDM0YzIsIDB4NzE2YWU5
ZjUsCisgICAgICAweGVmMDYyZmE1LCAweGVlM2I2YzU2LCAweDUyMzI1NjU4LCAweDYxYWZhOWMz
LCAweGZkYWYwMmYwLCAweDk2MWNmM2FiLAorICAgICAgMHg5ZjI5MTU2NSwgMHg0ZmJmMzA0NSwg
MHgwNTkwYzg5OSwgMHhkZTkwMTM4NSwgMHg0NTAwNWZmYiwgMHg1MDlkYjE2MiwKKyAgICAgIDB4
MjYyZmE5NDEsIDB4NGM0MjE2NTMsIDB4NGIxN2MyMWUsIDB4ZWEwZDE1MzAsIDB4ZGU4MDM4NDUs
IDB4NjFiZmQ1MTUsCisgICAgICAweDQzODUyM2VmLAorICB9OworCisgIHBjZzMyXzIwMThfZW5n
aW5lIGVuZ2luZSgwKTsKKyNpZiBVUERBVEVfR09MREVOCisgICh2b2lkKWtHb2xkZW47ICAvLyBT
aWxlbmNlIHdhcm5pbmcuCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUdvbGRlbk91dHB1
dHM7ICsraSkgeworICAgIHByaW50ZigiMHglMDh4LCAiLCBlbmdpbmUoKSk7CisgICAgaWYgKGkg
JSA2ID09IDUpIHsKKyAgICAgIHByaW50ZigiXG4iKTsKKyAgICB9CisgIH0KKyAgcHJpbnRmKCJc
blxuXG4iKTsKKyNlbHNlCisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAg
ICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOworICB9CisgIGVuZ2luZS5zZWVkKCk7CisgIGZv
ciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5n
aW5lKCkpOworICB9CisjZW5kaWYKK30KKworVEVTVChQQ0czMjIwMThFbmdpbmVUZXN0LCBWZXJp
ZnlHb2xkZW5TZWVkZWQpIHsKKyAgY29uc3RleHByIHVpbnQzMl90IGtHb2xkZW5ba051bUdvbGRl
bk91dHB1dHNdID0geworICAgICAgMHg2MGI1YTY0YywgMHg5Nzg1MDJmOSwgMHg4MGE3NWY2MCwg
MHgyNDFmMTE1OCwgMHhhNGNkMWRiYiwgMHhlNzI4NDAxNywKKyAgICAgIDB4M2I2NzhkYTUsIDB4
NTIyM2VjOTksIDB4ZTRiZGQ1ZDksIDB4NzIxOTBlNmQsIDB4ZTZlNzAyYzksIDB4ZmY4MGM3Njgs
CisgICAgICAweGNmMTI2ZWQzLCAweDFmYmQyMGFiLCAweDYwOTgwNDg5LCAweGJjNzJiZjg5LCAw
eDQwN2FjNmMwLCAweDAwYmYzYzUxLAorICAgICAgMHhmOTA4Nzg5NywgMHgxNzJlNGViNiwgMHhl
OWU0ZjQ0MywgMHgxYTYwOThiZiwgMHhiZjQ0ZjhjMiwgMHhkZDg0YTBlNSwKKyAgICAgIDB4ZDlh
NTIzNjQsIDB4YzBlMmU3ODYsIDB4MDYxYWUyYmEsIDB4OWZhY2I4ZTMsIDB4NjEwOTQzMmQsIDB4
ZDRlMGEwMTMsCisgICAgICAweGJkOGViOWE2LCAweDdlODZjM2I2LCAweDYyOWMwZTY4LCAweDA1
MzM3NDMwLCAweGI0OTViOWY0LCAweDExY2NkNjVkLAorICAgICAgMHhiNTc4ZGIyNSwgMHg2NmYx
MjQ2ZCwgMHg2ZWYyMGE3ZiwgMHg1ZTQyOTgxMiwgMHgxMTc3MjEzMCwgMHhiOTQ0YjVjMiwKKyAg
ICAgIDB4MDE2MjQxMjgsIDB4YTIzODVhYjcsIDB4ZDNlMTBkMzUsIDB4YmU1NzBlYzMsIDB4Yzk1
MTY1NmYsIDB4YmU4OTQ0YTAsCisgICAgICAweDdiZTQxMDYyLCAweDU3MDlmOTE5LCAweGQ3NDVm
ZWRhLCAweDk4NzBiOWFlLCAweGI0NGI4MTY4LCAweDE5ZTc2ODNiLAorICAgICAgMHhkZWQ4MDE3
ZiwgMHhjNmU0ZDU0NCwgMHg5MWFlNDIyNSwgMHhkNjc0NWZiYSwgMHhiOTkyZjI4NCwgMHg2NWIx
MmIzMywKKyAgICAgIDB4YTlkNWZkYjQsIDB4ZjEwNWNlMWEsIDB4MzVjYTFhNmUsIDB4MmZmNzBk
ZDAsIDB4ZDgzMzVlNDksIDB4ZmI3MWRkZjIsCisgICAgICAweGNhZWFiYjg5LCAweDVjNmY1Zjg0
LCAweDlhODExYTdkLCAweGJjZWNiYmQxLCAweDBmNjYxYmEwLCAweDlhZDkzYjlkLAorICAgICAg
MHhlZGQyM2UwYiwgMHg0MjA2MmY0OCwgMHhkMzhkZDdlNCwgMHg2Y2Q2M2M5YywgMHg2NDBiOThh
ZSwgMHg0YmZmNTY1MywKKyAgICAgIDB4MTI2MjYzNzEsIDB4MTMyNjYwMTcsIDB4ZTdhNjk4ZDgs
IDB4MzljNzQ2NjcsIDB4ZThmZGYyZTMsIDB4NTI4MDNiZjgsCisgICAgICAweDJhZjY4OTViLCAw
eDkxMzM1YjdiLCAweDY5OWU0OTYxLCAweDAwYTQwZmZmLCAweDI1M2ZmMmI2LCAweDRhNmNmNjcy
LAorICAgICAgMHg5NTg0ZTg1ZiwgMHhmMmE1MDAwYywgMHg0ZDU4YWJhOCwgMHhiODUxM2U2YSwg
MHg3NjdmYWQ2NSwgMHg4ZTMyNmY5ZSwKKyAgICAgIDB4MTgyZjE1YTEsIDB4MTYzZGFiNTIsIDB4
ZGY5OWM3ODAsIDB4MDQ3MjgyYTEsIDB4ZWU0ZjkwZGQsIDB4ZDUwMzk0YWUsCisgICAgICAweDZj
OWZkNWYwLCAweGIwNmE5MTk0LCAweDM4N2UzODQwLCAweDA0YTk0ODdiLCAweGY2NzhhNGMyLCAw
eGQwYTc4ODEwLAorICAgICAgMHhkNTAyYzk3ZSwgMHhkNmE5YjEyYSwgMHg0YWNjYzVkYywgMHg0
MTZlZDUzZSwgMHg1MDQxMTUzNiwgMHhlZWI4OWMyNCwKKyAgICAgIDB4ODEzYTc5MDIsIDB4MDM0
ZWJjYTYsIDB4ZmZhNTJlN2MsIDB4N2VjZDNkMGUsIDB4ZmEzN2EwZDIsIDB4YjFmYmUyYzEsCisg
ICAgICAweGI3ZWZjNmQxLCAweGVmYTRjY2VlLCAweGY2ZjgwNDI0LCAweDIyODNmM2Q5LCAweDY4
NzMyMjg0LCAweDk0ZjNiNWM4LAorICAgICAgMHhiYmRlY2ViOSwKKyAgfTsKKworICBFeHBsaWNp
dFNlZWRTZXEgc2VlZF9zZXF1ZW5jZXsxMiwgMzQsIDU2fTsKKyAgcGNnMzJfMjAxOF9lbmdpbmUg
ZW5naW5lKHNlZWRfc2VxdWVuY2UpOworI2lmIFVQREFURV9HT0xERU4KKyAgKHZvaWQpa0dvbGRl
bjsgIC8vIFNpbGVuY2Ugd2FybmluZy4KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtR29s
ZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwOHgsICIsIGVuZ2luZSgpKTsKKyAg
ICBpZiAoaSAlIDYgPT0gNSkgeworICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKyAgfQorICBw
cmludGYoIlxuXG5cbiIpOworI2Vsc2UKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRl
bikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyAgZW5naW5lLnNlZWQo
c2VlZF9zZXF1ZW5jZSk7CisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAg
ICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOworICB9CisjZW5kaWYKK30KKworVEVTVChQQ0cz
MjIwMThFbmdpbmVUZXN0LCBWZXJpZnlHb2xkZW5Gcm9tRGVzZXJpYWxpemVkRW5naW5lKSB7Cisg
IGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW2tOdW1Hb2xkZW5PdXRwdXRzXSA9IHsKKyAgICAg
IDB4NzgwZjcwNDIsIDB4YmExMzcyMTUsIDB4NDNhYjZmMjIsIDB4MGNiNTVmNDYsIDB4NDRiMjYy
N2QsIDB4ODM1NTk3YWYsCisgICAgICAweGVhOTczZWExLCAweDBkMmFiZDM1LCAweDRmZGQ2MDFj
LCAweGFjNDM0MmZlLCAweDdkYjdlOTNjLCAweGU1NmViY2FmLAorICAgICAgMHgzNTk2NDcwYSwg
MHg3NzcwYTlhZCwgMHg5Yjg5MzMyMCwgMHg1N2RiMzQxNSwgMHhiNDMyZGU1NCwgMHhhMDJiYWY3
MSwKKyAgICAgIDB4YTI1NmFhZGIsIDB4ODg5MjFmYzcsIDB4YTM1ZmE2YjMsIDB4ZGUzZWNhNDYs
IDB4NjA1NzM5YTcsIDB4YTg5MGI4MmIsCisgICAgICAweGU0NTdiN2FkLCAweDMzNWZiOTAzLCAw
eGViMDY3OTBjLCAweGIzYzU0YmY2LCAweDYxNDFlNDQyLCAweGE1OTlhNDgyLAorICAgICAgMHhi
Nzg5ODdjYywgMHhjNjFkZmU5ZCwgMHgwZjFkNmFjZSwgMHgxNzQ2MDU5NCwgMHg4ZjZhNTA2MSwg
MHgwODNkYzM1NCwKKyAgICAgIDB4ZTljMzM3ZmIsIDB4Y2ZkMTA1ZjcsIDB4OTI2NzY0YjYsIDB4
NjM4ZDI0ZGMsIDB4ZWFhYzY1MGEsIDB4NjdkMmNiOWMsCisgICAgICAweGQ4MDc3MzNjLCAweDIw
NWZjNTJlLCAweGY1Mzk5ZTJlLCAweDZjNDZkZGNjLCAweGI2MDNlODc1LCAweGNlMTEzYTI1LAor
ICAgICAgMHgzYzhkNDgxMywgMHhmYjU4NGRiOCwgMHhmNmQyNTVmZiwgMHhlYTgwOTU0ZiwgMHg0
MmU4YmU4NSwgMHhiMmZlZWU3MiwKKyAgICAgIDB4NjJiZDhkMTYsIDB4MWJlNGExNDIsIDB4OTdk
Y2ExYTQsIDB4ZGQ2ZTczMzMsIDB4YjJjYWEyMGUsIDB4YTEyYjE1ODgsCisgICAgICAweGViM2E1
YTFhLCAweDZmYTViYTg5LCAweDA3N2VhOTMxLCAweDhkZGIxNzEzLCAweDBkZDAzMDc5LCAweDJj
MmJhOTY1LAorICAgICAgMHhhNzdmYWMxNywgMHhjODMyNTc0MiwgMHg4YmI4OTNiZiwgMHhjMjMx
NTc0MSwgMHhlYWNlZWU5MiwgMHg4MWRkMmVlMiwKKyAgICAgIDB4ZTUyMTQyMTYsIDB4MWI5Yjhm
YjIsIDB4MDE2NDZkMDMsIDB4MjRmYWNjMjUsIDB4ZDhjMGUwYmIsIDB4YTMzZmUxMDYsCisgICAg
ICAweGYzNGZlOTc2LCAweGIzYjRiNDRlLCAweDY1NjE4ZmVkLCAweDAzMmM2MTkyLCAweGE5ZGQ3
MmNlLCAweGYzOTE4ODdiLAorICAgICAgMHhmNDFjNmE2ZSwgMHgwNWM0YmQ2ZCwgMHgzN2ZhMjYw
ZSwgMHg0NmIwNTY1OSwgMHhiNWY2MzQ4YSwgMHg2MmQyNmQ4OSwKKyAgICAgIDB4MzlmNjQ1MmQs
IDB4YjE3YjMwYTIsIDB4YmRkODI3NDMsIDB4MzhlY2FlM2IsIDB4ZmU5MGYwYTIsIDB4Y2IyZDIy
NmQsCisgICAgICAweGNmOGEwYjFjLCAweDBlZWQzZDRkLCAweGExZjY5Y2ZjLCAweGQ3YWMzYmE1
LCAweGNlOWQ5YTZiLCAweDEyMWRlYjRjLAorICAgICAgMHg0YTBkMDNmMywgMHhjMTgyMWVkMSwg
MHg1OWMyNDlhYywgMHhjMGFiYjQ3NCwgMHgyODE0OTk4NSwgMHhmZDlhODJiYSwKKyAgICAgIDB4
NTk2MGMzYjIsIDB4ZWZmMDBjYmEsIDB4NjA3M2FhMTcsIDB4MjVkYzA5MTksIDB4OTk3NjYyNmUs
IDB4ZGQyY2NjMzMsCisgICAgICAweDM5ZWNiNmVjLCAweGM2ZTE1ZDEzLCAweGZhYzk0Y2ZkLCAw
eDI4Y2ZkMzRmLCAweGYyZDJjMzJkLCAweDUxYzIzZDA4LAorICAgICAgMHg0ZmRiMmY0OCwgMHg5
N2JhYTgwNywgMHhmMmMxMDA0YywgMHhjNGFlODEzNiwgMHg3MWYzMWM5NCwgMHg4YzkyZDYwMSwK
KyAgICAgIDB4MzZjYWY1Y2QsCisgIH07CisKKyNpZiBVUERBVEVfR09MREVOCisgICh2b2lkKWtH
b2xkZW47ICAvLyBTaWxlbmNlIHdhcm5pbmcuCisgIHN0ZDo6c2VlZF9zZXEgc2VlZF9zZXF1ZW5j
ZXsxLCAyLCAzfTsKKyAgcGNnMzJfMjAxOF9lbmdpbmUgZW5naW5lKHNlZWRfc2VxdWVuY2UpOwor
ICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgZW5naW5lOworICBhdXRv
IHN0ciA9IHN0cmVhbS5zdHIoKTsKKyAgcHJpbnRmKCIlc1xuXG4iLCBzdHIuY19zdHIoKSk7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUdvbGRlbk91dHB1dHM7ICsraSkgeworICAgIHBy
aW50ZigiMHglMDh4LCAiLCBlbmdpbmUoKSk7CisgICAgaWYgKGkgJSA2ID09IDUpIHsKKyAgICAg
IHByaW50ZigiXG4iKTsKKyAgICB9CisgIH0KKyAgcHJpbnRmKCJcblxuXG4iKTsKKworICBFWFBF
Q1RfRkFMU0UodHJ1ZSk7CisjZWxzZQorICBwY2czMl8yMDE4X2VuZ2luZSBlbmdpbmU7CisgIHN0
ZDo6aXN0cmluZ3N0cmVhbSBzdHJlYW0oCisgICAgICAiNjM2NDEzNjIyMzg0Njc5MzAwNSAxNDQy
Njk1MDQwODg4OTYzNDA3IDY1MzcwMjgxNTcyNzA2NTk4OTQiKTsKKyAgc3RyZWFtID4+IGVuZ2lu
ZTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShl
bGVtLCBlbmdpbmUoKSk7CisgIH0KKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wbGF0Zm9ybS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3BsYXRmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmE1YTQyY2JiODBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3Bs
YXRmb3JtLmgKQEAgLTAsMCArMSwxNzAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX1BMQVRGT1JNX0hfCisj
ZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1BMQVRGT1JNX0hfCisKKy8vIEhFUk1FVElDIE5P
VEU6IFRoZSByYW5kZW5faHdhZXMgdGFyZ2V0IG11c3Qgbm90IGludHJvZHVjZSBkdXBsaWNhdGUK
Ky8vIHN5bWJvbHMgZnJvbSBhcmJpdHJhcnkgc3lzdGVtIGFuZCBvdGhlciBoZWFkZXJzLCBzaW5j
ZSBpdCBtYXkgYmUgYnVpbHQKKy8vIHdpdGggZGlmZmVyZW50IGZsYWdzIGZyb20gb3RoZXIgdGFy
Z2V0cywgdXNpbmcgZGlmZmVyZW50IGxldmVscyBvZgorLy8gb3B0aW1pemF0aW9uLCBwb3RlbnRp
YWxseSBpbnRyb2R1Y2luZyBPRFIgdmlvbGF0aW9ucy4KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vIFBsYXRmb3JtIEZlYXR1cmUgQ2hlY2tzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisvLyBDdXJyZW50bHkgc3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1zIGFuZCBhc3NvY2lhdGVk
IHByZXByb2Nlc3NvcgorLy8gc3ltYm9sczoKKy8vCisvLyAgIExpbnV4IGFuZCBMaW51eC1kZXJp
dmVkICAgICAgICAgICBfX2xpbnV4X18KKy8vICAgQW5kcm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fQU5EUk9JRF9fIChpbXBsaWVzIF9fbGludXhfXykKKy8vICAgTGludXggKG5vbi1B
bmRyb2lkKSAgICAgICAgICAgICAgIF9fbGludXhfXyAmJiAhX19BTkRST0lEX18KKy8vICAgRGFy
d2luIChtYWNPUyBhbmQgaU9TKSAgICAgICAgICAgIF9fQVBQTEVfXworLy8gICBBa2Fyb3MgKGh0
dHA6Ly9ha2Fyb3Mub3JnKSAgICAgICAgX19yb3NfXworLy8gICBXaW5kb3dzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX1dJTjMyCisvLyAgIE5hQ0wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX25hdGl2ZV9jbGllbnRfXworLy8gICBBc21KUyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19hc21qc19fCisvLyAgIFdlYkFzc2VtYmx5ICAgICAgICAgICAgICAgICAgICAgICBf
X3dhc21fXworLy8gICBGdWNoc2lhICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GdWNoc2lh
X18KKy8vCisvLyBOb3RlIHRoYXQgc2luY2UgQW5kcm9pZCBkZWZpbmVzIGJvdGggX19BTkRST0lE
X18gYW5kIF9fbGludXhfXywgb25lCisvLyBtYXkgcHJvYmUgZm9yIGVpdGhlciBMaW51eCBvciBB
bmRyb2lkIGJ5IHNpbXBseSB0ZXN0aW5nIGZvciBfX2xpbnV4X18uCisvLworLy8gTk9URTogRm9y
IF9fQVBQTEVfXyBwbGF0Zm9ybXMsIHdlIHVzZSAjaW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxz
Lmg+CisvLyB0byBkaXN0aW5ndWlzaCBvcyB2YXJpYW50cy4KKy8vCisvLyBodHRwOi8vbmFkZWF1
c29mdHdhcmUuY29tL2FydGljbGVzLzIwMTIvMDEvY19jX3RpcF9ob3dfdXNlX2NvbXBpbGVyX3By
ZWRlZmluZWRfbWFjcm9zX2RldGVjdF9vcGVyYXRpbmdfc3lzdGVtCisKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKyNlbmRpZgorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQXJjaGl0ZWN0dXJlIENoZWNrcworLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworLy8gVGhlc2UgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgYXJlIHRyeWlu
ZyB0byBkZXRlcm1pbmUgQ1BVIGFyY2hpdGVjdHVyZSwKKy8vIGluY2x1ZGluZyBuZWNlc3Nhcnkg
aGVhZGVycyB0byBzdXBwb3J0IGhhcmR3YXJlIEFFUy4KKy8vCisvLyBBQlNMX0FSQ0hfe1g4Ni9Q
UEMvQVJNfSBtYWNyb3MgZGV0ZXJtaW5lIHRoZSBwbGF0Zm9ybS4KKyNpZiBkZWZpbmVkKF9feDg2
XzY0X18pIHx8IGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX01fQU1ENjQpIHx8IFwKKyAg
ICBkZWZpbmVkKF9NX1g2NCkKKyNkZWZpbmUgQUJTTF9BUkNIX1g4Nl82NAorI2VsaWYgZGVmaW5l
ZChfX2kzODYpIHx8IGRlZmluZWQoX01fSVg4NikKKyNkZWZpbmUgQUJTTF9BUkNIX1g4Nl8zMgor
I2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmlu
ZWQoX01fQVJNNjQpCisjZGVmaW5lIEFCU0xfQVJDSF9BQVJDSDY0CisjZWxpZiBkZWZpbmVkKF9f
YXJtX18pIHx8IGRlZmluZWQoX19BUk1FTF9fKSB8fCBkZWZpbmVkKF9NX0FSTSkKKyNkZWZpbmUg
QUJTTF9BUkNIX0FSTQorI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSB8fCBkZWZpbmVkKF9f
UFBDNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgXAorICAgIGRlZmluZWQoX19wcGNf
XykgfHwgZGVmaW5lZChfX1BQQ19fKQorI2RlZmluZSBBQlNMX0FSQ0hfUFBDCisjZWxzZQorLy8g
VW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgorLy8gICogaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQv
cC9wcmVkZWYvd2lraS9BcmNoaXRlY3R1cmVzLworLy8gICogaHR0cHM6Ly9tc2RuLm1pY3Jvc29m
dC5jb20vZW4tdXMvbGlicmFyeS9iMDA4NGtheS5hc3B4CisvLyAgKiBmb3IgZ2NjLCBjbGFuZzog
ImVjaG8gfCBnY2MgLUUgLWRNIC0iCisjZW5kaWYKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vIEF0dHJpYnV0ZSBDaGVja3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEFCU0xf
UkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIGFubm90YXRlcyB3aGV0aGVyIHBvaW50ZXJzIG1heSBi
ZSBjb25zaWRlcmVkCisvLyB0byBiZSB1bmFsaWFzZWQuCisjaWYgZGVmaW5lZChfX2NsYW5nX18p
IHx8IGRlZmluZWQoX19HTlVDX18pCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RS
SUNUIF9fcmVzdHJpY3RfXworI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgQUJTTF9S
QU5ET01fSU5URVJOQUxfUkVTVFJJQ1QgX19yZXN0cmljdAorI2Vsc2UKKyNkZWZpbmUgQUJTTF9S
QU5ET01fSU5URVJOQUxfUkVTVFJJQ1QKKyNlbmRpZgorCisvLyBBQlNMX0hBVkVfQUNDRUxFUkFU
RURfQUVTIGluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW50bHkgYWN0aXZlIGNvbXBpbGVyCisv
LyBmbGFncyAoZS5nLiAtbWFlcykgYWxsb3cgdXNpbmcgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgQUVT
IGluc3RydWN0aW9ucywgd2hpY2gKKy8vIGltcGxpZXMgdXMgYXNzdW1pbmcgdGhhdCB0aGUgdGFy
Z2V0IHBsYXRmb3JtIHN1cHBvcnRzIHRoZW0uCisjZGVmaW5lIEFCU0xfSEFWRV9BQ0NFTEVSQVRF
RF9BRVMgMAorCisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzY0KQorCisjaWYgZGVmaW5lZChf
X0FFU19fKSB8fCBkZWZpbmVkKF9fQVZYX18pCisjdW5kZWYgQUJTTF9IQVZFX0FDQ0VMRVJBVEVE
X0FFUworI2RlZmluZSBBQlNMX0hBVkVfQUNDRUxFUkFURURfQUVTIDEKKyNlbmRpZgorCisjZWxp
ZiBkZWZpbmVkKEFCU0xfQVJDSF9QUEMpCisKKy8vIFJlbHkgb24gVlNYIGFuZCBDUllQVE8gZXh0
ZW5zaW9ucyBmb3IgdmNpcGhlciBvbiBQb3dlclBDLgorI2lmIChkZWZpbmVkKF9fVkVDX18pIHx8
IGRlZmluZWQoX19BTFRJVkVDX18pKSAmJiBkZWZpbmVkKF9fVlNYX18pICYmIFwKKyAgICBkZWZp
bmVkKF9fQ1JZUFRPX18pCisjdW5kZWYgQUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUworI2RlZmlu
ZSBBQlNMX0hBVkVfQUNDRUxFUkFURURfQUVTIDEKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKEFC
U0xfQVJDSF9BUk0pIHx8IGRlZmluZWQoQUJTTF9BUkNIX0FBUkNINjQpCisKKy8vIGh0dHA6Ly9p
bmZvY2VudGVyLmFybS5jb20vaGVscC90b3BpYy9jb20uYXJtLmRvYy5paGkwMDUzYy9JSEkwMDUz
Q19hY2xlXzJfMC5wZGYKKy8vIFJlbHkgb24gTkVPTitDUllQVE8gZXh0ZW5zaW9ucyBmb3IgQVJN
LgorI2lmIGRlZmluZWQoX19BUk1fTkVPTikgJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0NSWVBU
TykKKyN1bmRlZiBBQlNMX0hBVkVfQUNDRUxFUkFURURfQUVTCisjZGVmaW5lIEFCU0xfSEFWRV9B
Q0NFTEVSQVRFRF9BRVMgMQorI2VuZGlmCisKKyNlbmRpZgorCisvLyBOYUNsIGRvZXMgbm90IGFs
bG93IEFFUy4KKyNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQorI3VuZGVmIEFCU0xfSEFW
RV9BQ0NFTEVSQVRFRF9BRVMKKyNkZWZpbmUgQUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUyAwCisj
ZW5kaWYKKworLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENIIGluZGljYXRlcyB3
aGV0aGVyIHRoZSBjdXJyZW50bHkgYWN0aXZlCisvLyBwbGF0Zm9ybSBoYXMsIG9yIHNob3VsZCB1
c2UgcnVuLXRpbWUgZGlzcGF0Y2ggZm9yIHNlbGVjdGluZyB0aGUKKy8vIGFjY2xlcmF0ZWQgUmFu
ZGVuIGltcGxlbWVudGF0aW9uLgorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElT
UEFUQ0ggMAorCisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzY0KQorLy8gRGlzcGF0Y2ggaXMg
YXZhaWxhYmxlIG9uIHg4Nl82NAorI3VuZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQ
QVRDSAorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0ggMQorI2VsaWYg
ZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoQUJTTF9BUkNIX1BQQykKKy8vIE9yIHdoZW4g
cnVubmluZyBsaW51eCBQUEMKKyN1bmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFU
Q0gKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENIIDEKKyNlbGlmIGRl
ZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKEFCU0xfQVJDSF9BQVJDSDY0KQorLy8gT3Igd2hl
biBydW5uaW5nIGxpbnV4IEFBcmNoNjQKKyN1bmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNf
RElTUEFUQ0gKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENIIDEKKyNl
bGlmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKEFCU0xfQVJDSF9BUk0pICYmIChfX0FS
TV9BUkNIID49IDgpCisvLyBPciB3aGVuIHJ1bm5pbmcgbGludXggQVJNIHY4IG9yIGhpZ2hlci4K
Ky8vIChUaGlzIGNhcHR1cmVzIGEgbG90IG9mIEFuZHJvaWQgY29uZmlndXJhdGlvbnMuKQorI3Vu
ZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSAorI2RlZmluZSBBQlNMX1JBTkRP
TV9JTlRFUk5BTF9BRVNfRElTUEFUQ0ggMQorI2VuZGlmCisKKy8vIE5hQ2wgZG9lcyBub3QgYWxs
b3cgZGlzcGF0Y2guCisjaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKKyN1bmRlZiBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0gKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJO
QUxfQUVTX0RJU1BBVENIIDAKKyNlbmRpZgorCisvLyBpT1MgZG9lcyBub3Qgc3VwcG9ydCBkaXNw
YXRjaCwgZXZlbiBvbiB4ODYsIHNpbmNlIGFwcGxpY2F0aW9ucworLy8gc2hvdWxkIGJlIGJ1bmRs
ZWQgYXMgZmF0IGJpbmFyaWVzLCB3aXRoIGEgZGlmZmVyZW50IGJ1aWxkIHRhaWxvcmVkIGZvcgor
Ly8gZWFjaCBzcGVjaWZpYyBzdXBwb3J0ZWQgcGxhdGZvcm0vYXJjaGl0ZWN0dXJlLgorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAoVEFSR0VUX09TX0lQSE9ORSB8fCBUQVJHRVRfT1NfSVBIT05F
X1NJTVVMQVRPUikKKyN1bmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0gKKyNk
ZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENIIDAKKyNlbmRpZgorCisjZW5k
aWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1BMQVRGT1JNX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3Bv
b2xfdXJiZy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjJlMWMx
ZjZmZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJn
LmNjCkBAIC0wLDAgKzEsMjUyIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhv
cnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZy5oIgorCisj
aW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDxjc3RkaW50
PgorI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9jYWxsX29uY2UuaCIK
KyNpbmNsdWRlICJhYnNsL2Jhc2UvY29uZmlnLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVy
bmFsL2VuZGlhbi5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5o
IgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9jay5oIgorI2luY2x1ZGUgImFi
c2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFs
L3VuYWxpZ25lZF9hY2Nlc3MuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgi
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuLmgiCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRlcmlhbC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9t
L3NlZWRfZ2VuX2V4Y2VwdGlvbi5oIgorCit1c2luZyBhYnNsOjpiYXNlX2ludGVybmFsOjpTcGlu
TG9jazsKK3VzaW5nIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNwaW5Mb2NrSG9sZGVyOworCituYW1l
c3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisK
Ky8vIFJhbmRlblBvb2xFbnRyeSBpcyBhIHRocmVhZC1zYWZlIHBzZXVkb3JhbmRvbSBiaXQgZ2Vu
ZXJhdG9yLCBpbXBsZW1lbnRpbmcgYQorLy8gc2luZ2xlIGdlbmVyYXRvciB3aXRoaW4gYSBSYW5k
ZW5Qb29sPFQ+LiBJdCBpcyBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbgorLy8gZGV0YWlsLCBh
bmQgZG9lcyBub3QgYWltIHRvIGNvbmZvcm0gdG8gW3JhbmQucmVxLnVybmddLgorLy8KKy8vIE5P
VEU6IFRoZXJlIGFyZSBhbGlnbm1lbnQgaXNzdWVzIHdoZW4gdXNlZCBvbiBBUk0sIGZvciBpbnN0
YW5jZS4KKy8vIFNlZSB0aGUgYWxsb2NhdGlvbiBjb2RlIGluIFBvb2xBbGlnbmVkQWxsb2MoKS4K
K2NsYXNzIFJhbmRlblBvb2xFbnRyeSB7CisgcHVibGljOgorICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBrU3RhdGUgPSBSYW5kZW5UcmFpdHM6OmtTdGF0ZUJ5dGVzIC8gc2l6ZW9mKHVpbnQzMl90
KTsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga0NhcGFjaXR5ID0KKyAgICAgIFJhbmRlblRy
YWl0czo6a0NhcGFjaXR5Qnl0ZXMgLyBzaXplb2YodWludDMyX3QpOworCisgIHZvaWQgSW5pdChh
YnNsOjpTcGFuPGNvbnN0IHVpbnQzMl90PiBkYXRhKSB7CisgICAgU3BpbkxvY2tIb2xkZXIgbCgm
bXVfKTsgIC8vIEFsd2F5cyB1bmNvbnRlc3RlZC4KKyAgICBzdGQ6OmNvcHkoZGF0YS5iZWdpbigp
LCBkYXRhLmVuZCgpLCBzdGQ6OmJlZ2luKHN0YXRlXykpOworICAgIG5leHRfID0ga1N0YXRlOwor
ICB9CisKKyAgLy8gQ29weSBieXRlcyBpbnRvIG91dC4KKyAgdm9pZCBGaWxsKHVpbnQ4X3QqIG91
dCwgc2l6ZV90IGJ5dGVzKSBBQlNMX0xPQ0tTX0VYQ0xVREVEKG11Xyk7CisKKyAgLy8gUmV0dXJu
cyByYW5kb20gYml0cyBmcm9tIHRoZSBidWZmZXIgaW4gdW5pdHMgb2YgVC4KKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgIGlubGluZSBUIEdlbmVyYXRlKCkgQUJTTF9MT0NLU19FWENMVURFRCht
dV8pOworCisgIGlubGluZSB2b2lkIE1heWJlUmVmaWxsKCkgQUJTTF9FWENMVVNJVkVfTE9DS1Nf
UkVRVUlSRUQobXVfKSB7CisgICAgaWYgKG5leHRfID49IGtTdGF0ZSkgeworICAgICAgbmV4dF8g
PSBrQ2FwYWNpdHk7CisgICAgICBpbXBsXy5HZW5lcmF0ZShzdGF0ZV8pOworICAgIH0KKyAgfQor
CisgcHJpdmF0ZToKKyAgLy8gUmFuZGVuIFVSQkcgc3RhdGUuCisgIHVpbnQzMl90IHN0YXRlX1tr
U3RhdGVdIEFCU0xfR1VBUkRFRF9CWShtdV8pOyAgLy8gRmlyc3QgdG8gc2F0aXNmeSBhbGlnbm1l
bnQuCisgIFNwaW5Mb2NrIG11XzsKKyAgY29uc3QgUmFuZGVuIGltcGxfOworICBzaXplX3QgbmV4
dF8gQUJTTF9HVUFSREVEX0JZKG11Xyk7Cit9OworCit0ZW1wbGF0ZSA8PgoraW5saW5lIHVpbnQ4
X3QgUmFuZGVuUG9vbEVudHJ5OjpHZW5lcmF0ZTx1aW50OF90PigpIHsKKyAgU3BpbkxvY2tIb2xk
ZXIgbCgmbXVfKTsKKyAgTWF5YmVSZWZpbGwoKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHN0YXRlX1tuZXh0XysrXSk7Cit9CisKK3RlbXBsYXRlIDw+CitpbmxpbmUgdWludDE2X3Qg
UmFuZGVuUG9vbEVudHJ5OjpHZW5lcmF0ZTx1aW50MTZfdD4oKSB7CisgIFNwaW5Mb2NrSG9sZGVy
IGwoJm11Xyk7CisgIE1heWJlUmVmaWxsKCk7CisgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MTZf
dD4oc3RhdGVfW25leHRfKytdKTsKK30KKwordGVtcGxhdGUgPD4KK2lubGluZSB1aW50MzJfdCBS
YW5kZW5Qb29sRW50cnk6OkdlbmVyYXRlPHVpbnQzMl90PigpIHsKKyAgU3BpbkxvY2tIb2xkZXIg
bCgmbXVfKTsKKyAgTWF5YmVSZWZpbGwoKTsKKyAgcmV0dXJuIHN0YXRlX1tuZXh0XysrXTsKK30K
KwordGVtcGxhdGUgPD4KK2lubGluZSB1aW50NjRfdCBSYW5kZW5Qb29sRW50cnk6OkdlbmVyYXRl
PHVpbnQ2NF90PigpIHsKKyAgU3BpbkxvY2tIb2xkZXIgbCgmbXVfKTsKKyAgaWYgKG5leHRfID49
IGtTdGF0ZSAtIDEpIHsKKyAgICBuZXh0XyA9IGtDYXBhY2l0eTsKKyAgICBpbXBsXy5HZW5lcmF0
ZShzdGF0ZV8pOworICB9CisgIGF1dG8gcCA9IHN0YXRlXyArIG5leHRfOworICBuZXh0XyArPSAy
OworCisgIHVpbnQ2NF90IHJlc3VsdDsKKyAgc3RkOjptZW1jcHkoJnJlc3VsdCwgcCwgc2l6ZW9m
KHJlc3VsdCkpOworICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFJhbmRlblBvb2xFbnRyeTo6
RmlsbCh1aW50OF90KiBvdXQsIHNpemVfdCBieXRlcykgeworICBTcGluTG9ja0hvbGRlciBsKCZt
dV8pOworICB3aGlsZSAoYnl0ZXMgPiAwKSB7CisgICAgTWF5YmVSZWZpbGwoKTsKKyAgICBzaXpl
X3QgcmVtYWluaW5nID0gKGtTdGF0ZSAtIG5leHRfKSAqIHNpemVvZihzdGF0ZV9bMF0pOworICAg
IHNpemVfdCB0b19jb3B5ID0gc3RkOjptaW4oYnl0ZXMsIHJlbWFpbmluZyk7CisgICAgc3RkOjpt
ZW1jcHkob3V0LCAmc3RhdGVfW25leHRfXSwgdG9fY29weSk7CisgICAgb3V0ICs9IHRvX2NvcHk7
CisgICAgYnl0ZXMgLT0gdG9fY29weTsKKyAgICBuZXh0XyArPSAodG9fY29weSArIHNpemVvZihz
dGF0ZV9bMF0pIC0gMSkgLyBzaXplb2Yoc3RhdGVfWzBdKTsKKyAgfQorfQorCisvLyBOdW1iZXIg
b2YgcG9vbGVkIHVyYmcgZW50cmllcy4KK3N0YXRpYyBjb25zdGV4cHIgaW50IGtQb29sU2l6ZSA9
IDg7CisKKy8vIFNoYXJlZCBwb29sIGVudHJpZXMuCitzdGF0aWMgYWJzbDo6b25jZV9mbGFnIHBv
b2xfb25jZTsKK0FCU0xfQ0FDSEVMSU5FX0FMSUdORUQgc3RhdGljIFJhbmRlblBvb2xFbnRyeSog
c2hhcmVkX3Bvb2xzW2tQb29sU2l6ZV07CisKKy8vIFJldHVybnMgYW4gaWQgaW4gdGhlIHJhbmdl
IFswIC4uLiBrUG9vbFNpemUpLCB3aGljaCBpbmRleGVzIGludG8gdGhlCisvLyBwb29sIG9mIHJh
bmRvbSBlbmdpbmVzLgorLy8KKy8vIEVhY2ggdGhyZWFkIHRvIGFjY2VzcyB0aGUgcG9vbCBpcyBh
c3NpZ25lZCBhIHNlcXVlbnRpYWwgSUQgKHdpdGhvdXQgcmV1c2UpCisvLyBmcm9tIHRoZSBwb29s
LWlkIHNwYWNlOyB0aGUgaWQgaXMgY2FjaGVkIGluIGEgdGhyZWFkX2xvY2FsIHZhcmlhYmxlLgor
Ly8gVGhpcyBpZCBpcyBhc3NpZ25lZCBiYXNlZCBvbiB0aGUgYXJyaXZhbC1vcmRlciBvZiB0aGUg
dGhyZWFkIHRvIHRoZQorLy8gR2V0UG9vbElEIGNhbGw7IHRoaXMgaGFzIG5vIGJpbmFyeSwgQ0ws
IG9yIHJ1bnRpbWUgc3RhYmlsaXR5IGJlY2F1c2UKKy8vIG9uIHN1YnNlcXVlbnQgcnVucyB0aGUg
b3JkZXIgd2l0aGluIHRoZSBzYW1lIHByb2dyYW0gbWF5IGJlIHNpZ25pZmljYW50bHkKKy8vIGRp
ZmZlcmVudC4gSG93ZXZlciwgYXMgb3RoZXIgdGhyZWFkIElEcyBhcmUgbm90IGFzc2lnbmVkIHNl
cXVlbnRpYWxseSwKKy8vIHRoaXMgaXMgbm90IGV4cGVjdGVkIHRvIG1hdHRlci4KK2ludCBHZXRQ
b29sSUQoKSB7CisgIHN0YXRpY19hc3NlcnQoa1Bvb2xTaXplID49IDEsCisgICAgICAgICAgICAg
ICAgIkF0IGxlYXN0IG9uZSB1cmJnIGluc3RhbmNlIGlzIHJlcXVpcmVkIGZvciBQb29sVVJCRyIp
OworCisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgc3RkOjphdG9taWM8aW50NjRfdD4gc2VxdWVu
Y2V7MH07CisKKyNpZmRlZiBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMCisgIHN0YXRpYyB0aHJlYWRf
bG9jYWwgaW50IG15X3Bvb2xfaWQgPSAtMTsKKyAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShteV9w
b29sX2lkIDwgMCkpIHsKKyAgICBteV9wb29sX2lkID0gKHNlcXVlbmNlKysgJSBrUG9vbFNpemUp
OworICB9CisgIHJldHVybiBteV9wb29sX2lkOworI2Vsc2UKKyAgc3RhdGljIHB0aHJlYWRfa2V5
X3QgdGlkX2tleSA9IFtdIHsKKyAgICBwdGhyZWFkX2tleV90IHRtcF9rZXk7CisgICAgaW50IGVy
ciA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgmdG1wX2tleSwgbnVsbHB0cik7CisgICAgaWYgKGVycikg
eworICAgICAgQUJTTF9SQVdfTE9HKEZBVEFMLCAicHRocmVhZF9rZXlfY3JlYXRlIGZhaWxlZCB3
aXRoICVkIiwgZXJyKTsKKyAgICB9CisgICAgcmV0dXJuIHRtcF9rZXk7CisgIH0oKTsKKworICAv
LyBTdG9yZSB0aGUgdmFsdWUgaW4gdGhlIHB0aHJlYWRfe2dldC9zZXR9c3BlY2lmaWMuIEhvd2V2
ZXIgYW4gdW5pbml0aWFsaXplZAorICAvLyB2YWx1ZSBpcyAwLCBzbyBhZGQgKzEgdG8gZGlzdGlu
Z3Vpc2ggZnJvbSB0aGUgbnVsbCB2YWx1ZS4KKyAgaW50cHRyX3QgbXlfcG9vbF9pZCA9CisgICAg
ICByZWludGVycHJldF9jYXN0PGludHB0cl90PihwdGhyZWFkX2dldHNwZWNpZmljKHRpZF9rZXkp
KTsKKyAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShteV9wb29sX2lkID09IDApKSB7CisgICAgLy8g
Tm8gYWxsb2NhdGVkIElELCBhbGxvY2F0ZSB0aGUgbmV4dCB2YWx1ZSwgY2FjaGUgaXQsIGFuZCBy
ZXR1cm4uCisgICAgbXlfcG9vbF9pZCA9IChzZXF1ZW5jZSsrICUga1Bvb2xTaXplKSArIDE7Cisg
ICAgaW50IGVyciA9IHB0aHJlYWRfc2V0c3BlY2lmaWModGlkX2tleSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4obXlfcG9vbF9pZCkpOworICAgIGlmIChlcnIpIHsKKyAgICAgIEFCU0xfUkFXX0xP
RyhGQVRBTCwgInB0aHJlYWRfc2V0c3BlY2lmaWMgZmFpbGVkIHdpdGggJWQiLCBlcnIpOworICAg
IH0KKyAgfQorICByZXR1cm4gbXlfcG9vbF9pZCAtIDE7CisjZW5kaWYKK30KKworLy8gQWxsb2Nh
dGUgYSBSYW5kZW5Qb29sRW50cnkgd2l0aCBhdCBsZWFzdCAzMi1ieXRlIGFsaWdubWVudCwgd2hp
Y2ggaXMgcmVxdWlyZWQKKy8vIGJ5IEFSTSBwbGF0Zm9ybSBjb2RlLgorUmFuZGVuUG9vbEVudHJ5
KiBQb29sQWxpZ25lZEFsbG9jKCkgeworICBjb25zdGV4cHIgc2l6ZV90IGtBbGlnbm1lbnQgPQor
ICAgICAgQUJTTF9DQUNIRUxJTkVfU0laRSA+IDMyID8gQUJTTF9DQUNIRUxJTkVfU0laRSA6IDMy
OworCisgIC8vIE5vdCBhbGwgdGhlIHBsYXRmb3JtcyB0aGF0IHdlIGJ1aWxkIGZvciBoYXZlIHN0
ZDo6YWxpZ25lZF9hbGxvYywgaG93ZXZlcgorICAvLyBzaW5jZSB3ZSBuZXZlciBmcmVlIHRoZXNl
IG9iamVjdHMsIHdlIGNhbiBvdmVyIGFsbG9jYXRlIGFuZCBtdW5nZSB0aGUKKyAgLy8gcG9pbnRl
cnMgdG8gdGhlIGNvcnJlY3QgYWxpZ25tZW50LgorICB2b2lkKiBtZW1vcnkgPSBzdGQ6Om1hbGxv
YyhzaXplb2YoUmFuZGVuUG9vbEVudHJ5KSArIGtBbGlnbm1lbnQpOworICBhdXRvIHggPSByZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihtZW1vcnkpOworICBhdXRvIHkgPSB4ICUga0FsaWdubWVu
dDsKKyAgdm9pZCogYWxpZ25lZCA9CisgICAgICAoeSA9PSAwKSA/IG1lbW9yeSA6IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHggKyBrQWxpZ25tZW50IC0geSk7CisgIHJldHVybiBuZXcgKGFsaWdu
ZWQpIFJhbmRlblBvb2xFbnRyeSgpOworfQorCisvLyBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBr
UG9vbFNpemUgb2JqZWN0cyBvZiB0eXBlIFJhbmRlblBvb2xFbnRyeS4KKy8vCisvLyBUaGUgaW5p
dGlhbGl6YXRpb24gc3RyYXRlZ3kgaXMgdG8gaW5pdGlhbGl6ZSBvbmUgb2JqZWN0IGRpcmVjdGx5
IGZyb20KKy8vIE9TIGVudHJvcHksIHRoZW4gdG8gdXNlIHRoYXQgb2JqZWN0IHRvIHNlZWQgYWxs
IG9mIHRoZSBpbmRpdmlkdWFsCisvLyBwb29sIGluc3RhbmNlcy4KK3ZvaWQgSW5pdFBvb2xVUkJH
KCkgeworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU2VlZFNpemUgPQorICAgICAgUmFuZGVu
VHJhaXRzOjprU3RhdGVCeXRlcyAvIHNpemVvZih1aW50MzJfdCk7CisgIC8vIFJlYWQgdGhlIHNl
ZWQgZGF0YSBmcm9tIE9TIGVudHJvcHkgb25jZS4KKyAgdWludDMyX3Qgc2VlZF9tYXRlcmlhbFtr
UG9vbFNpemUgKiBrU2VlZFNpemVdOworICBpZiAoIXJhbmRvbV9pbnRlcm5hbDo6UmVhZFNlZWRN
YXRlcmlhbEZyb21PU0VudHJvcHkoCisgICAgICAgICAgYWJzbDo6TWFrZVNwYW4oc2VlZF9tYXRl
cmlhbCkpKSB7CisgICAgcmFuZG9tX2ludGVybmFsOjpUaHJvd1NlZWRHZW5FeGNlcHRpb24oKTsK
KyAgfQorICBmb3IgKGludCBpID0gMDsgaSA8IGtQb29sU2l6ZTsgaSsrKSB7CisgICAgc2hhcmVk
X3Bvb2xzW2ldID0gUG9vbEFsaWduZWRBbGxvYygpOworICAgIHNoYXJlZF9wb29sc1tpXS0+SW5p
dCgKKyAgICAgICAgYWJzbDo6TWFrZVNwYW4oJnNlZWRfbWF0ZXJpYWxbaSAqIGtTZWVkU2l6ZV0s
IGtTZWVkU2l6ZSkpOworICB9Cit9CisKKy8vIFJldHVybnMgdGhlIHBvb2wgZW50cnkgZm9yIHRo
ZSBjdXJyZW50IHRocmVhZC4KK1JhbmRlblBvb2xFbnRyeSogR2V0UG9vbEZvckN1cnJlbnRUaHJl
YWQoKSB7CisgIGFic2w6OmNhbGxfb25jZShwb29sX29uY2UsIEluaXRQb29sVVJCRyk7CisgIHJl
dHVybiBzaGFyZWRfcG9vbHNbR2V0UG9vbElEKCldOworfQorCit9ICAvLyBuYW1lc3BhY2UKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBSYW5kZW5Qb29sPFQ+OjpyZXN1bHRfdHlw
ZSBSYW5kZW5Qb29sPFQ+OjpHZW5lcmF0ZSgpIHsKKyAgYXV0byogcG9vbCA9IEdldFBvb2xGb3JD
dXJyZW50VGhyZWFkKCk7CisgIHJldHVybiBwb29sLT5HZW5lcmF0ZTxUPigpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUmFuZGVuUG9vbDxUPjo6RmlsbChhYnNsOjpTcGFuPHJl
c3VsdF90eXBlPiBkYXRhKSB7CisgIGF1dG8qIHBvb2wgPSBHZXRQb29sRm9yQ3VycmVudFRocmVh
ZCgpOworICBwb29sLT5GaWxsKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgp
KSwKKyAgICAgICAgICAgICBkYXRhLnNpemUoKSAqIHNpemVvZihyZXN1bHRfdHlwZSkpOworfQor
Cit0ZW1wbGF0ZSBjbGFzcyBSYW5kZW5Qb29sPHVpbnQ4X3Q+OwordGVtcGxhdGUgY2xhc3MgUmFu
ZGVuUG9vbDx1aW50MTZfdD47Cit0ZW1wbGF0ZSBjbGFzcyBSYW5kZW5Qb29sPHVpbnQzMl90PjsK
K3RlbXBsYXRlIGNsYXNzIFJhbmRlblBvb2w8dWludDY0X3Q+OworCit9ICAvLyBuYW1lc3BhY2Ug
cmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3Bvb2xf
dXJiZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45YjJkZDRiZmNl
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmcuaApA
QCAtMCwwICsxLDEyOSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfUE9PTF9VUkJHX0hfCisjZGVmaW5lIEFC
U0xfUkFORE9NX0lOVEVSTkFMX1BPT0xfVVJCR19IXworCisjaW5jbHVkZSA8Y2ludHR5cGVzPgor
I2luY2x1ZGUgPGxpbWl0cz4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0
cy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvc3Bhbi5oIgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gUmFuZGVuUG9vbCBpcyBhIHRocmVhZC1z
YWZlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIFtyYW5kb20ucmVxLnVyYmddIHRoYXQKKy8vIHVz
ZXMgYW4gdW5kZXJseWluZyBwb29sIG9mIFJhbmRlbiBnZW5lcmF0b3JzIHRvIGdlbmVyYXRlIHZh
bHVlcy4gIEVhY2ggdGhyZWFkCisvLyBoYXMgYWZmaW5pdHkgdG8gb25lIGluc3RhbmNlIG9mIHRo
ZSB1bmRlcmx5aW5nIHBvb2wgZ2VuZXJhdG9ycy4gIENvbmN1cnJlbnQKKy8vIGFjY2VzcyBpcyBn
dWFyZGVkIGJ5IGEgc3Bpbi1sb2NrLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBSYW5k
ZW5Qb29sIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gVDsKKyAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3Vuc2lnbmVkPHJlc3VsdF90eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAg
ICAgIlJhbmRlblBvb2wgdGVtcGxhdGUgYXJndW1lbnQgbXVzdCBiZSBhIGJ1aWx0LWluIHVuc2ln
bmVkICIKKyAgICAgICAgICAgICAgICAiaW50ZWdlciB0eXBlIik7CisKKyAgc3RhdGljIGNvbnN0
ZXhwciByZXN1bHRfdHlwZShtaW4pKCkgeworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0
czxyZXN1bHRfdHlwZT46Om1pbikoKTsKKyAgfQorCisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0
X3R5cGUobWF4KSgpIHsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5
cGU+OjptYXgpKCk7CisgIH0KKworICBSYW5kZW5Qb29sKCkge30KKworICAvLyBSZXR1cm5zIGEg
c2luZ2xlIHZhbHVlLgorICBpbmxpbmUgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpIHsgcmV0dXJu
IEdlbmVyYXRlKCk7IH0KKworICAvLyBGaWxsIGRhdGEgd2l0aCByYW5kb20gdmFsdWVzLgorICBz
dGF0aWMgdm9pZCBGaWxsKGFic2w6OlNwYW48cmVzdWx0X3R5cGU+IGRhdGEpOworCisgcHJvdGVj
dGVkOgorICAvLyBHZW5lcmF0ZSByZXR1cm5zIGEgc2luZ2xlIHZhbHVlLgorICBzdGF0aWMgcmVz
dWx0X3R5cGUgR2VuZXJhdGUoKTsKK307CisKK2V4dGVybiB0ZW1wbGF0ZSBjbGFzcyBSYW5kZW5Q
b29sPHVpbnQ4X3Q+OworZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIFJhbmRlblBvb2w8dWludDE2X3Q+
OworZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIFJhbmRlblBvb2w8dWludDMyX3Q+OworZXh0ZXJuIHRl
bXBsYXRlIGNsYXNzIFJhbmRlblBvb2w8dWludDY0X3Q+OworCisvLyBQb29sVVJCRyB1c2VzIGFu
IHVuZGVybHlpbmcgcG9vbCBvZiByYW5kb20gZ2VuZXJhdG9ycyB0byBpbXBsZW1lbnQgYQorLy8g
dGhyZWFkLWNvbXBhdGlibGUgW3JhbmRvbS5yZXEudXJiZ10gaW50ZXJmYWNlIHdpdGggYW4gaW50
ZXJuYWwgY2FjaGUgb2YKKy8vIHZhbHVlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
a0J1ZmZlclNpemU+CitjbGFzcyBQb29sVVJCRyB7CisgIC8vIEluaGVyaXRhbmNlIHRvIGFjY2Vz
cyB0aGUgcHJvdGVjdGVkIHN0YXRpYyBtZW1iZXJzIG9mIFJhbmRlblBvb2wuCisgIHVzaW5nIHVu
c2lnbmVkX3R5cGUgPSB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkX2JpdHM8VD46OnR5cGU7CisgIHVz
aW5nIFBvb2xUeXBlID0gUmFuZGVuUG9vbDx1bnNpZ25lZF90eXBlPjsKKyAgdXNpbmcgU3BhblR5
cGUgPSBhYnNsOjpTcGFuPHVuc2lnbmVkX3R5cGU+OworCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IGtJbml0aWFsQnVmZmVyID0ga0J1ZmZlclNpemUgKyAxOworICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBrSGFsZkJ1ZmZlciA9IGtCdWZmZXJTaXplIC8gMjsKKworIHB1YmxpYzoKKyAgdXNp
bmcgcmVzdWx0X3R5cGUgPSBUOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc191bnNpZ25lZDxy
ZXN1bHRfdHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJQb29sVVJCRyBtdXN0IGJlIHBh
cmFtZXRlcml6ZWQgYnkgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIik7CisKKyAgc3RhdGljX2Fz
c2VydChrQnVmZmVyU2l6ZSA+IDEsCisgICAgICAgICAgICAgICAgIlBvb2xVUkJHIG11c3QgYmUg
cGFyYW1ldGVyaXplZCBieSBhIGJ1ZmZlci1zaXplID4gMSIpOworCisgIHN0YXRpY19hc3NlcnQo
a0J1ZmZlclNpemUgPD0gMjU2LAorICAgICAgICAgICAgICAgICJQb29sVVJCRyBtdXN0IGJlIHBh
cmFtZXRlcml6ZWQgYnkgYSBidWZmZXItc2l6ZSA8PSAyNTYiKTsKKworICBzdGF0aWMgY29uc3Rl
eHByIHJlc3VsdF90eXBlKG1pbikoKSB7CisgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRz
PHJlc3VsdF90eXBlPjo6bWluKSgpOworICB9CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRf
dHlwZShtYXgpKCkgeworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlw
ZT46Om1heCkoKTsKKyAgfQorCisgIFBvb2xVUkJHKCkgOiBuZXh0XyhrSW5pdGlhbEJ1ZmZlcikg
e30KKworICAvLyBjb3B5LWNvbnN0cnVjdG9yIGRvZXMgbm90IGNvcHkgY2FjaGUuCisgIFBvb2xV
UkJHKGNvbnN0IFBvb2xVUkJHJikgOiBuZXh0XyhrSW5pdGlhbEJ1ZmZlcikge30KKyAgY29uc3Qg
UG9vbFVSQkcmIG9wZXJhdG9yPShjb25zdCBQb29sVVJCRyYpIHsKKyAgICBuZXh0XyA9IGtJbml0
aWFsQnVmZmVyOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIC8vIG1vdmUtY29uc3RydWN0
b3IgZG9lcyBtb3ZlIGNhY2hlLgorICBQb29sVVJCRyhQb29sVVJCRyYmKSA9IGRlZmF1bHQ7Cisg
IFBvb2xVUkJHJiBvcGVyYXRvcj0oUG9vbFVSQkcmJikgPSBkZWZhdWx0OworCisgIGlubGluZSBy
ZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkgeworICAgIGlmIChuZXh0XyA+PSBrQnVmZmVyU2l6ZSkg
eworICAgICAgbmV4dF8gPSAoa0J1ZmZlclNpemUgPiAyICYmIG5leHRfID4ga0J1ZmZlclNpemUp
ID8ga0hhbGZCdWZmZXIgOiAwOworICAgICAgUG9vbFR5cGU6OkZpbGwoU3BhblR5cGUocmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZF90eXBlKj4oc3RhdGVfICsgbmV4dF8pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0J1ZmZlclNpemUgLSBuZXh0XykpOworICAgIH0KKyAgICByZXR1
cm4gc3RhdGVfW25leHRfKytdOworICB9CisKKyBwcml2YXRlOgorICAvLyBCdWZmZXIgc2l6ZS4K
KyAgc2l6ZV90IG5leHRfOyAgLy8gaW5kZXggd2l0aGluIHN0YXRlXworICByZXN1bHRfdHlwZSBz
dGF0ZV9ba0J1ZmZlclNpemVdOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5h
bAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5B
TF9QT09MX1VSQkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3Vy
YmdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmdfdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTNmNGVhY2YxNmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJnX3Rlc3QuY2MKQEAgLTAs
MCArMSwxODIgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJnLmgiCisKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8Yml0c2V0PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUg
PGNzdGRpbnQ+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wvdHlw
ZXMvc3Bhbi5oIgorCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlBvb2xVUkJHOwordXNp
bmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSYW5kZW5Qb29sOworCituYW1lc3BhY2UgeworCisv
LyBpc19yYW5kZW5fcG9vbCB0cmFpdCBpcyB0cnVlIHdoZW4gcGFyYW1ldGVyaXplZCBieSBhbiBS
YW5kZW5Qb29sCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIGlzX3JhbmRlbl9wb29sID0g
dHlwZW5hbWUgYWJzbDo6ZGlzanVuY3Rpb248ICAvLworICAgIHN0ZDo6aXNfc2FtZTxULCBSYW5k
ZW5Qb29sPHVpbnQ4X3Q+PiwgICAgICAgICAgIC8vCisgICAgc3RkOjppc19zYW1lPFQsIFJhbmRl
blBvb2w8dWludDE2X3Q+PiwgICAgICAgICAgLy8KKyAgICBzdGQ6OmlzX3NhbWU8VCwgUmFuZGVu
UG9vbDx1aW50MzJfdD4+LCAgICAgICAgICAvLworICAgIHN0ZDo6aXNfc2FtZTxULCBSYW5kZW5Q
b29sPHVpbnQ2NF90Pj4+OyAgICAgICAgIC8vCisKKy8vIE15RmlsbCBlaXRoZXIgY2FsbHMgUmFu
ZGVuUG9vbDo6RmlsbCgpIG9yIHN0ZDo6Z2VuZXJhdGUoLi4uLCBybmcpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVj4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PGFic2w6Om5l
Z2F0aW9uPGlzX3JhbmRlbl9wb29sPFQ+Pjo6dmFsdWUsIHZvaWQ+ICAvLworTXlGaWxsKFQmIHJu
ZywgYWJzbDo6U3BhbjxWPiBkYXRhKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4oZGF0YSksIHN0ZDo6ZW5kKGRhdGEpLCBybmcpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KK3R5cGVuYW1lIGFic2w6OmVu
YWJsZV9pZl90PGlzX3JhbmRlbl9wb29sPFQ+Ojp2YWx1ZSwgdm9pZD4gIC8vCitNeUZpbGwoVCYg
cm5nLCBhYnNsOjpTcGFuPFY+IGRhdGEpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMp
CisgIHJuZy5GaWxsKGRhdGEpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lVHlwZT4K
K2NsYXNzIFBvb2xVUkJHVHlwZWRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKwor
dXNpbmcgRW5naW5lVHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPCAgLy8KKyAgICBSYW5kZW5Qb29s
PHVpbnQ4X3Q+LCAgICAgICAgICAgICAgIC8vCisgICAgUmFuZGVuUG9vbDx1aW50MTZfdD4sICAg
ICAgICAgICAgICAvLworICAgIFJhbmRlblBvb2w8dWludDMyX3Q+LCAgICAgICAgICAgICAgLy8K
KyAgICBSYW5kZW5Qb29sPHVpbnQ2NF90PiwgICAgICAgICAgICAgIC8vCisgICAgUG9vbFVSQkc8
dWludDhfdCwgMj4sICAgICAgICAgICAgICAvLworICAgIFBvb2xVUkJHPHVpbnQxNl90LCAyPiwg
ICAgICAgICAgICAgLy8KKyAgICBQb29sVVJCRzx1aW50MzJfdCwgMj4sICAgICAgICAgICAgIC8v
CisgICAgUG9vbFVSQkc8dWludDY0X3QsIDI+LCAgICAgICAgICAgICAvLworICAgIFBvb2xVUkJH
PHVuc2lnbmVkIGludCwgOD4sICAgICAgICAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorICAgIFBv
b2xVUkJHPHVuc2lnbmVkIGxvbmcsIDg+LCAgICAgICAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQor
ICAgIFBvb2xVUkJHPHVuc2lnbmVkIGxvbmcgaW50LCA0PiwgICAgLy8gTk9MSU5UKHJ1bnRpbWUv
aW50KQorICAgIFBvb2xVUkJHPHVuc2lnbmVkIGxvbmcgbG9uZywgND4+OyAgLy8gTk9MSU5UKHJ1
bnRpbWUvaW50KQorCitUWVBFRF9URVNUX1NVSVRFKFBvb2xVUkJHVHlwZWRUZXN0LCBFbmdpbmVU
eXBlcyk7CisKKy8vIFRoaXMgdGVzdCBpcyBjaGVja3MgdGhhdCB0aGUgZW5naW5lcyBtZWV0IHRo
ZSBVUkJHIGludGVyZmFjZSByZXF1aXJlbWVudHMKKy8vIGRlZmluZWQgaW4gW3JhbmQucmVxLnVy
YmddLgorVFlQRURfVEVTVChQb29sVVJCR1R5cGVkVGVzdCwgVVJCR0ludGVyZmFjZSkgeworICB1
c2luZyBFID0gVHlwZVBhcmFtOworICB1c2luZyBUID0gdHlwZW5hbWUgRTo6cmVzdWx0X3R5cGU7
CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxFPjo6dmFsdWUs
CisgICAgICAgICAgICAgICAgImVuZ2luZSBtdXN0IGJlIGNvcHkgY29uc3RydWN0aWJsZSIpOwor
CisgIHN0YXRpY19hc3NlcnQoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPEU+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAiZW5naW5lIG11c3QgYmUgY29weSBhc3NpZ25hYmxlIik7CisKKyAgRSBl
OworICBjb25zdCBFIHg7CisKKyAgZSgpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PGRlY2x0eXBlKGUoKSksIFQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGUg
b2Ygb3BlcmF0b3IoKSBtdXN0IGJlIHJlc3VsdF90eXBlIik7CisKKyAgRSB1MCh4KTsKKyAgdTAo
KTsKKworICBFIHUxID0gZTsKKyAgdTEoKTsKK30KKworLy8gVGhpcyB2YWxpZGF0ZXMgdGhhdCBz
ZXF1ZW5jZXMgYXJlIGluZGVwZW5kZW50LgorVFlQRURfVEVTVChQb29sVVJCR1R5cGVkVGVzdCwg
VmVyaWZ5U2VxdWVuY2VzKSB7CisgIHVzaW5nIEUgPSBUeXBlUGFyYW07CisgIHVzaW5nIHJlc3Vs
dF90eXBlID0gdHlwZW5hbWUgRTo6cmVzdWx0X3R5cGU7CisKKyAgRSBybmc7CisgICh2b2lkKXJu
ZygpOyAgLy8gRGlzY2FyZCBvbmUgdmFsdWUuCisKKyAgY29uc3RleHByIGludCBrTnVtT3V0cHV0
cyA9IDY0OworICByZXN1bHRfdHlwZSBhW2tOdW1PdXRwdXRzXTsKKyAgcmVzdWx0X3R5cGUgYltr
TnVtT3V0cHV0c107CisgIHN0ZDo6ZmlsbChzdGQ6OmJlZ2luKGIpLCBzdGQ6OmVuZChiKSwgMCk7
CisKKyAgLy8gRmlsbCBhIHVzaW5nIEZpbGwgb3IgZ2VuZXJhdGUsIGRlcGVuZGluZyBvbiB0aGUg
ZW5naW5lIHR5cGUuCisgIHsKKyAgICBFIHggPSBybmc7CisgICAgTXlGaWxsKHgsIGFic2w6Ok1h
a2VTcGFuKGEpKTsKKyAgfQorCisgIC8vIEZpbGwgYiB1c2luZyBzdGQ6OmdlbmVyYXRlKCkuCisg
IHsKKyAgICBFIHggPSBybmc7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKGIpLCBzdGQ6
OmVuZChiKSwgeCk7CisgIH0KKworICAvLyBUZXN0IHRoYXQgZ2VuZXJhdGVkIHNlcXVlbmNlIGNo
YW5nZWQgYXMgc2VxdWVuY2Ugb2YgYml0cywgaS5lLiBpZiBhYm91dAorICAvLyBoYWxmIG9mIHRo
ZSBiaXRlcyB3ZXJlIGZsaXBwZWQgYmV0d2VlbiB0d28gbm9uLWNvcnJlbGF0ZWQgdmFsdWVzLgor
ICBzaXplX3QgY2hhbmdlZF9iaXRzID0gMDsKKyAgc2l6ZV90IHVuY2hhbmdlZF9iaXRzID0gMDsK
KyAgc2l6ZV90IHRvdGFsX3NldCA9IDA7CisgIHNpemVfdCB0b3RhbF9iaXRzID0gMDsKKyAgc2l6
ZV90IGVxdWFsX2NvdW50ID0gMDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtT3V0cHV0
czsgKytpKSB7CisgICAgZXF1YWxfY291bnQgKz0gKGFbaV0gPT0gYltpXSkgPyAxIDogMDsKKyAg
ICBzdGQ6OmJpdHNldDxzaXplb2YocmVzdWx0X3R5cGUpICogOD4gYml0c2V0KGFbaV0gXiBiW2ld
KTsKKyAgICBjaGFuZ2VkX2JpdHMgKz0gYml0c2V0LmNvdW50KCk7CisgICAgdW5jaGFuZ2VkX2Jp
dHMgKz0gYml0c2V0LnNpemUoKSAtIGJpdHNldC5jb3VudCgpOworCisgICAgc3RkOjpiaXRzZXQ8
c2l6ZW9mKHJlc3VsdF90eXBlKSAqIDg+IGFfc2V0KGFbaV0pOworICAgIHN0ZDo6Yml0c2V0PHNp
emVvZihyZXN1bHRfdHlwZSkgKiA4PiBiX3NldChiW2ldKTsKKyAgICB0b3RhbF9zZXQgKz0gYV9z
ZXQuY291bnQoKSArIGJfc2V0LmNvdW50KCk7CisgICAgdG90YWxfYml0cyArPSAyICogOCAqIHNp
emVvZihyZXN1bHRfdHlwZSk7CisgIH0KKyAgLy8gT24gYXZlcmFnZSwgaGFsZiB0aGUgYml0cyBh
cmUgY2hhbmdlZCBiZXR3ZWVuIHR3byBjYWxscy4KKyAgRVhQRUNUX0xFKGNoYW5nZWRfYml0cywg
MC42MCAqIChjaGFuZ2VkX2JpdHMgKyB1bmNoYW5nZWRfYml0cykpOworICBFWFBFQ1RfR0UoY2hh
bmdlZF9iaXRzLCAwLjQwICogKGNoYW5nZWRfYml0cyArIHVuY2hhbmdlZF9iaXRzKSk7CisKKyAg
Ly8gdmVyaWZ5IHVzaW5nIGEgcXVpY2sgbm9ybWFsLWFwcHJveGltYXRpb24gdG8gdGhlIGJpbm9t
aWFsLgorICBFWFBFQ1RfTkVBUih0b3RhbF9zZXQsIHRvdGFsX2JpdHMgKiAwLjUsIDQgKiBzdGQ6
OnNxcnQodG90YWxfYml0cykpCisgICAgICA8PCAiQCIgPDwgdG90YWxfc2V0IC8gc3RhdGljX2Nh
c3Q8ZG91YmxlPih0b3RhbF9iaXRzKTsKKworICAvLyBBbHNvLCBBW2ldID09IEJbaV0gd2l0aCBw
cm9iYWJpbGl0eSAoMS9yYW5nZSkgKiBOLgorICAvLyBHaXZlIHRoaXMgYSBwcmV0dHkgd2lkZSBs
YXRpdHVkZSwgdGhvdWdoLgorICBjb25zdCBkb3VibGUga0V4cGVjdGVkID0ga051bU91dHB1dHMg
LyAoMS4wICogc2l6ZW9mKHJlc3VsdF90eXBlKSAqIDgpOworICBFWFBFQ1RfTEUoZXF1YWxfY291
bnQsIDEuMCArIGtFeHBlY3RlZCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCisvKgorJCBuYW5v
YmVuY2htYXJrcyAxIFJhbmRlblBvb2wgY29uc3RydWN0CiskIG5hbm9iZW5jaG1hcmtzIDEgUG9v
bFVSQkcgY29uc3RydWN0CisKK1JhbmRlblBvb2w8dWludDMyX3Q+IHwgMSAgICB8IDEwMDAgfCAg
ICA0ODQ4Mi4wMCB0aWNrcyB8IDQ4LjQ4IHRpY2tzIHwgMTMuOSBucworUmFuZGVuUG9vbDx1aW50
MzJfdD4gfCAxMCAgIHwgMjAwMCB8ICAxMDI4Nzk1LjAwIHRpY2tzIHwgNTEuNDQgdGlja3MgfCAx
NC43IG5zCitSYW5kZW5Qb29sPHVpbnQzMl90PiB8IDEwMCAgfCAxMDAwIHwgIDUxMTk5NjguMDAg
dGlja3MgfCA1MS4yMCB0aWNrcyB8IDE0LjYgbnMKK1JhbmRlblBvb2w8dWludDMyX3Q+IHwgMTAw
MCB8ICA1MDAgfCAyNTg2NzkzNi4wMCB0aWNrcyB8IDUxLjc0IHRpY2tzIHwgMTQuOCBucworCitS
YW5kZW5Qb29sPHVpbnQ2NF90PiB8IDEgICAgfCAxMDAwIHwgICAgNDk5MjEuMDAgdGlja3MgfCA0
OS45MiB0aWNrcyB8IDE0LjMgbnMKK1JhbmRlblBvb2w8dWludDY0X3Q+IHwgMTAgICB8IDIwMDAg
fCAgMTIwODI2OS4wMCB0aWNrcyB8IDYwLjQxIHRpY2tzIHwgMTcuMyBucworUmFuZGVuUG9vbDx1
aW50NjRfdD4gfCAxMDAgIHwgMTAwMCB8ICA1ODQ0OTU1LjAwIHRpY2tzIHwgNTguNDUgdGlja3Mg
fCAxNi43IG5zCitSYW5kZW5Qb29sPHVpbnQ2NF90PiB8IDEwMDAgfCAgNTAwIHwgMjg3Njc0MDQu
MDAgdGlja3MgfCA1Ny41MyB0aWNrcyB8IDE2LjQgbnMKKworUG9vbFVSQkc8dWludDMyX3QsOD4g
fCAxICAgIHwgMTAwMCB8ICAgIDg2NDMxLjAwIHRpY2tzIHwgODYuNDMgdGlja3MgfCAyNC43IG5z
CitQb29sVVJCRzx1aW50MzJfdCw4PiB8IDEwICAgfCAxMDAwIHwgICAyMDYxOTEuMDAgdGlja3Mg
fCAyMC42MiB0aWNrcyB8ICA1LjkgbnMKK1Bvb2xVUkJHPHVpbnQzMl90LDg+IHwgMTAwICB8IDEw
MDAgfCAgMTUxNjA0OS4wMCB0aWNrcyB8IDE1LjE2IHRpY2tzIHwgIDQuMyBucworUG9vbFVSQkc8
dWludDMyX3QsOD4gfCAxMDAwIHwgIDUwMCB8ICA3NjEzOTM2LjAwIHRpY2tzIHwgMTUuMjMgdGlj
a3MgfCAgNC40IG5zCisKK1Bvb2xVUkJHPHVpbnQ2NF90LDQ+IHwgMSAgICB8IDEwMDAgfCAgICA5
NjY2OC4wMCB0aWNrcyB8IDk2LjY3IHRpY2tzIHwgMjcuNiBucworUG9vbFVSQkc8dWludDY0X3Qs
ND4gfCAxMCAgIHwgMTAwMCB8ICAgMjgyNDIzLjAwIHRpY2tzIHwgMjguMjQgdGlja3MgfCAgOC4x
IG5zCitQb29sVVJCRzx1aW50NjRfdCw0PiB8IDEwMCAgfCAxMDAwIHwgIDI2MDk1ODcuMDAgdGlj
a3MgfCAyNi4xMCB0aWNrcyB8ICA3LjUgbnMKK1Bvb2xVUkJHPHVpbnQ2NF90LDQ+IHwgMTAwMCB8
ICA1MDAgfCAxMjQwODc1Ny4wMCB0aWNrcyB8IDI0LjgyIHRpY2tzIHwgIDcuMSBucworCisqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbi1rZXlzLmluYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4ta2V5cy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmZhNGIxNjY4MzUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL3JhbmRlbi1rZXlzLmluYwpAQCAtMCwwICsxLDIwNyBAQAorLy8gQ29weXJp
Z2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5U
RVJOQUxfUkFOREVOX0tFWVNfSU5DXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SQU5E
RU5fS0VZU19JTkNfCisKKy8vIFRleHR1YWwgaGVhZGVyIHRvIGluY2x1ZGUgdGhlIHJhbmRlbl9r
ZXlzIHdoZXJlIG5lY2Vzc2FyeS4KKy8vIFJFUVVJUkVTOiBzdHJ1Y3QgdTY0eDJ7fQorLy8KKy8v
IFBST1ZJREVTOiBrS2V5cworLy8gUFJPVklERVM6IHJvdW5kX2tleXNbXQorCisvLyAiTm90aGlu
ZyB1cCBteSBzbGVldmUiIG51bWJlcnMgZnJvbSB0aGUgZmlyc3QgaGV4IGRpZ2l0cyBvZiBQaSwg
b2J0YWluZWQKKy8vIGZyb20gaHR0cDovL2hleHBpLnNvdXJjZWZvcmdlLm5ldC8uIFRoZSBhcnJh
eSB3YXMgZ2VuZXJhdGVkIGJ5IGZvbGxvd2luZworLy8gUHl0aG9uIHNjcmlwdDoKKy8qCitweXRo
b24gPDwgRU9GCisiIiJHZW5lcmF0ZXMgUmFuZGVuIHJvdW5kIGtleXMgYXJyYXkgZnJvbSBwaS1o
ZXguNjI1MDAudHh0IGZpbGUuIiIiCitpbXBvcnQgYmluYXNjaWkKKworS0VZUyA9IDEzNgorCitk
ZWYgY2h1bmtzKGwsIG4pOgorICAgICIiIllpZWxkIHN1Y2Nlc3NpdmUgbi1zaXplZCBjaHVua3Mg
ZnJvbSBsLiIiIgorICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihsKSwgbik6CisgICAgICAgIHlp
ZWxkIGxbaTppICsgbl0KKworZGVmIHBhaXJ3aXNlKHQpOgorICAgICIiIlRyYW5zZm9ybXMgc2Vx
dWVuY2UgaW50byBzZXF1ZW5jZSBvZiBwYWlycy4iIiIKKyAgICBpdCA9IGl0ZXIodCkKKyAgICBy
ZXR1cm4gemlwKGl0LGl0KQorCitkZWYgZGlnaXRzX2Zyb21fcGkoKToKKyAgIiIiUmVhZHMgZGln
aXRzIGZyb20gaGV4cGkuc291cmNlZm9yZ2UubmV0IGZpbGUuIiIiCisgIHdpdGggb3BlbigicGkt
aGV4LjYyNTAwLnR4dCIpIGFzIGZpbGU6CisgICAgcmV0dXJuIGZpbGUucmVhZCgpCisKK2RlZiBk
aWdpdHNfZnJvbV91cmFuZG9tKCk6CisgICIiIlJlYWRzIGRpZ2l0cyBmcm9tIC9kZXYvdXJhbmRv
bS4iIiIKKyAgd2l0aCBvcGVuKCIvZGV2L3VyYW5kb20iKSBhcyBmaWxlOgorICAgIHJldHVybiBi
aW5hc2NpaS5oZXhsaWZ5KGZpbGUucmVhZChLRVlTICogMTYpKQorCitkaWdpdHMgPSBkaWdpdHNf
ZnJvbV9waSgpCitwcmludCgic3RhdGljIGNvbnN0ZXhwciBjb25zdCBzaXplX3Qga1JvdW5kS2V5
cyA9IHswfTtcbiIuZm9ybWF0KEtFWVMpKQorcHJpbnQoImFsaWduYXMoMTYpIGNvbnN0ZXhwciBj
b25zdCB1NjR4MiByb3VuZF9rZXlzW2tSb3VuZEtleXNdID0geyIpCisKK2ZvciBpLCAoaGksIGxv
KSBpbiB6aXAocmFuZ2UoS0VZUyksIHBhaXJ3aXNlKGNodW5rcyhkaWdpdHMsIDE2KSkpOgorICBo
aSA9ICIweHswfXVsbCIuZm9ybWF0KGhpKQorICBsbyA9ICIweHswfXVsbCIuZm9ybWF0KGxvKQor
ICBwcmludCgiICB1NjR4Mih7MH0sIHsxfSl7Mn0iLmZvcm1hdChoaSwgbG8sICcsJyBpZiBpKzEg
PCBLRVlTIGVsc2UgJycpKQorCitwcmludCgifTsiKQorRU9GCisqLworCitzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IHNpemVfdCBrUm91bmRLZXlzID0gMTM2OworCithbGlnbmFzKDE2KSBjb25zdGV4
cHIgdTY0eDIgcm91bmRfa2V5c1trUm91bmRLZXlzXSA9IHsKKyAgICB1NjR4MigweDI0M0Y2QTg4
ODVBMzA4RDN1bGwsIDB4MTMxOThBMkUwMzcwNzM0NHVsbCksCisgICAgdTY0eDIoMHhBNDA5Mzgy
MjI5OUYzMUQwdWxsLCAweDA4MkVGQTk4RUM0RTZDODl1bGwpLAorICAgIHU2NHgyKDB4NDUyODIx
RTYzOEQwMTM3N3VsbCwgMHhCRTU0NjZDRjM0RTkwQzZDdWxsKSwKKyAgICB1NjR4MigweEMwQUMy
OUI3Qzk3QzUwRER1bGwsIDB4M0Y4NEQ1QjVCNTQ3MDkxN3VsbCksCisgICAgdTY0eDIoMHg5MjE2
RDVEOTg5NzlGQjFCdWxsLCAweEQxMzEwQkE2OThERkI1QUN1bGwpLAorICAgIHU2NHgyKDB4MkZG
RDcyREJEMDFBREZCN3VsbCwgMHhCOEUxQUZFRDZBMjY3RTk2dWxsKSwKKyAgICB1NjR4MigweEJB
N0M5MDQ1RjEyQzdGOTl1bGwsIDB4MjRBMTk5NDdCMzkxNkNGN3VsbCksCisgICAgdTY0eDIoMHgw
ODAxRjJFMjg1OEVGQzE2dWxsLCAweDYzNjkyMEQ4NzE1NzRFNjl1bGwpLAorICAgIHU2NHgyKDB4
QTQ1OEZFQTNGNDkzM0Q3RXVsbCwgMHgwRDk1NzQ4RjcyOEVCNjU4dWxsKSwKKyAgICB1NjR4Migw
eDcxOEJDRDU4ODIxNTRBRUV1bGwsIDB4N0I1NEE0MURDMjVBNTlCNXVsbCksCisgICAgdTY0eDIo
MHg5QzMwRDUzOTJBRjI2MDEzdWxsLCAweEM1RDFCMDIzMjg2MDg1RjB1bGwpLAorICAgIHU2NHgy
KDB4Q0E0MTc5MThCOERCMzhFRnVsbCwgMHg4RTc5RENCMDYwM0ExODBFdWxsKSwKKyAgICB1NjR4
MigweDZDOUUwRThCQjAxRThBM0V1bGwsIDB4RDcxNTc3QzFCRDMxNEIyN3VsbCksCisgICAgdTY0
eDIoMHg3OEFGMkZEQTU1NjA1QzYwdWxsLCAweEU2NTUyNUYzQUE1NUFCOTR1bGwpLAorICAgIHU2
NHgyKDB4NTc0ODk4NjI2M0U4MTQ0MHVsbCwgMHg1NUNBMzk2QTJBQUIxMEI2dWxsKSwKKyAgICB1
NjR4MigweEI0Q0M1QzM0MTE0MUU4Q0V1bGwsIDB4QTE1NDg2QUY3QzcyRTk5M3VsbCksCisgICAg
dTY0eDIoMHhCM0VFMTQxMTYzNkZCQzJBdWxsLCAweDJCQTlDNTVENzQxODMxRjZ1bGwpLAorICAg
IHU2NHgyKDB4Q0U1QzNFMTY5Qjg3OTMxRXVsbCwgMHhBRkQ2QkEzMzZDMjRDRjVDdWxsKSwKKyAg
ICB1NjR4MigweDdBMzI1MzgxMjg5NTg2Nzd1bGwsIDB4M0I4RjQ4OTg2QjRCQjlBRnVsbCksCisg
ICAgdTY0eDIoMHhDNEJGRTgxQjY2MjgyMTkzdWxsLCAweDYxRDgwOUNDRkIyMUE5OTF1bGwpLAor
ICAgIHU2NHgyKDB4NDg3Q0FDNjA1REVDODAzMnVsbCwgMHhFRjg0NUQ1REU5ODU3NUIxdWxsKSwK
KyAgICB1NjR4MigweERDMjYyMzAyRUI2NTFCODh1bGwsIDB4MjM4OTNFODFEMzk2QUNDNXVsbCks
CisgICAgdTY0eDIoMHgwRjZENkZGMzgzRjQ0MjM5dWxsLCAweDJFMEI0NDgyQTQ4NDIwMDR1bGwp
LAorICAgIHU2NHgyKDB4NjlDOEYwNEE5RTFGOUI1RXVsbCwgMHgyMUM2Njg0MkY2RTk2QzlBdWxs
KSwKKyAgICB1NjR4MigweDY3MEM5QzYxQUJEMzg4RjB1bGwsIDB4NkE1MUEwRDJEODU0MkY2OHVs
bCksCisgICAgdTY0eDIoMHg5NjBGQTcyOEFCNTEzM0EzdWxsLCAweDZFRUYwQjZDMTM3QTNCRTR1
bGwpLAorICAgIHU2NHgyKDB4QkEzQkYwNTA3RUZCMkE5OHVsbCwgMHhBMUYxNjUxRDM5QUYwMTc2
dWxsKSwKKyAgICB1NjR4MigweDY2Q0E1OTNFODI0MzBFODh1bGwsIDB4OENFRTg2MTk0NTZGOUZC
NHVsbCksCisgICAgdTY0eDIoMHg3RDg0QTVDMzNCOEI1RUJFdWxsLCAweEUwNkY3NUQ4ODVDMTIw
NzN1bGwpLAorICAgIHU2NHgyKDB4NDAxQTQ0OUY1NkMxNkFBNnVsbCwgMHg0RUQzQUE2MjM2M0Y3
NzA2dWxsKSwKKyAgICB1NjR4MigweDFCRkVERjcyNDI5QjAyM0R1bGwsIDB4MzdEMEQ3MjREMDBB
MTI0OHVsbCksCisgICAgdTY0eDIoMHhEQjBGRUFEMzQ5RjFDMDlCdWxsLCAweDA3NTM3MkM5ODA5
OTFCN0J1bGwpLAorICAgIHU2NHgyKDB4MjVENDc5RDhGNkU4REVGN3VsbCwgMHhFM0ZFNTAxQUI2
Nzk0QzNCdWxsKSwKKyAgICB1NjR4MigweDk3NkNFMEJEMDRDMDA2QkF1bGwsIDB4QzFBOTRGQjY0
MDlGNjBDNHVsbCksCisgICAgdTY0eDIoMHg1RTVDOUVDMjE5NkEyNDYzdWxsLCAweDY4RkI2RkFG
M0U2QzUzQjV1bGwpLAorICAgIHU2NHgyKDB4MTMzOUIyRUIzQjUyRUM2RnVsbCwgMHg2REZDNTEx
RjlCMzA5NTJDdWxsKSwKKyAgICB1NjR4MigweENDODE0NTQ0QUY1RUJEMDl1bGwsIDB4QkVFM0Qw
MDRERTMzNEFGRHVsbCksCisgICAgdTY0eDIoMHg2NjBGMjgwNzE5MkU0QkIzdWxsLCAweEMwQ0JB
ODU3NDVDODc0MEZ1bGwpLAorICAgIHU2NHgyKDB4RDIwQjVGMzlCOUQzRkJEQnVsbCwgMHg1NTc5
QzBCRDFBNjAzMjBBdWxsKSwKKyAgICB1NjR4MigweEQ2QTEwMEM2NDAyQzcyNzl1bGwsIDB4Njc5
RjI1RkVGQjFGQTNDQ3VsbCksCisgICAgdTY0eDIoMHg4RUE1RTlGOERCMzIyMkY4dWxsLCAweDND
NzUxNkRGRkQ2MTZCMTV1bGwpLAorICAgIHU2NHgyKDB4MkY1MDFFQzhBRDA1NTJBQnVsbCwgMHgz
MjNEQjVGQUZEMjM4NzYwdWxsKSwKKyAgICB1NjR4MigweDUzMzE3QjQ4M0UwMERGODJ1bGwsIDB4
OUU1QzU3QkJDQTZGOENBMHVsbCksCisgICAgdTY0eDIoMHgxQTg3NTYyRURGMTc2OURCdWxsLCAw
eEQ1NDJBOEY2Mjg3RUZGQzN1bGwpLAorICAgIHU2NHgyKDB4QUM2NzMyQzY4QzRGNTU3M3VsbCwg
MHg2OTVCMjdCMEJCQ0E1OEM4dWxsKSwKKyAgICB1NjR4MigweEUxRkZBMzVEQjhGMDExQTB1bGws
IDB4MTBGQTNEOThGRDIxODNCOHVsbCksCisgICAgdTY0eDIoMHg0QUZDQjU2QzJERDFEMzVCdWxs
LCAweDlBNTNFNDc5QjZGODQ1NjV1bGwpLAorICAgIHU2NHgyKDB4RDI4RTQ5QkM0QkZCOTc5MHVs
bCwgMHhFMURERjJEQUE0Q0I3RTMzdWxsKSwKKyAgICB1NjR4MigweDYyRkIxMzQxQ0VFNEM2RTh1
bGwsIDB4RUYyMENBREEzNjc3NEMwMXVsbCksCisgICAgdTY0eDIoMHhEMDdFOUVGRTJCRjExRkI0
dWxsLCAweDk1REJEQTREQUU5MDkxOTh1bGwpLAorICAgIHU2NHgyKDB4RUFBRDhFNzE2QjkzRDVB
MHVsbCwgMHhEMDhFRDFEMEFGQzcyNUUwdWxsKSwKKyAgICB1NjR4MigweDhFM0M1QjJGOEU3NTk0
Qjd1bGwsIDB4OEZGNkUyRkJGMjEyMkI2NHVsbCksCisgICAgdTY0eDIoMHg4ODg4QjgxMjkwMERG
MDFDdWxsLCAweDRGQUQ1RUEwNjg4RkMzMUN1bGwpLAorICAgIHU2NHgyKDB4RDFDRkYxOTFCM0E4
QzFBRHVsbCwgMHgyRjJGMjIxOEJFMEUxNzc3dWxsKSwKKyAgICB1NjR4MigweEVBNzUyREZFOEIw
MjFGQTF1bGwsIDB4RTVBMENDMEZCNTZGNzRFOHVsbCksCisgICAgdTY0eDIoMHgxOEFDRjNENkNF
ODlFMjk5dWxsLCAweEI0QTg0RkUwRkQxM0UwQjd1bGwpLAorICAgIHU2NHgyKDB4N0NDNDNCODFE
MkFEQThEOXVsbCwgMHgxNjVGQTI2NjgwOTU3NzA1dWxsKSwKKyAgICB1NjR4MigweDkzQ0M3MzE0
MjExQTE0Nzd1bGwsIDB4RTZBRDIwNjU3N0I1RkE4NnVsbCksCisgICAgdTY0eDIoMHhDNzU0NDJG
NUZCOUQzNUNGdWxsLCAweEVCQ0RBRjBDN0IzRTg5QTB1bGwpLAorICAgIHU2NHgyKDB4RDY0MTFC
RDNBRTFFN0U0OXVsbCwgMHgwMDI1MEUyRDIwNzFCMzVFdWxsKSwKKyAgICB1NjR4MigweDIyNjgw
MEJCNTdCOEUwQUZ1bGwsIDB4MjQ2NDM2OUJGMDA5QjkxRXVsbCksCisgICAgdTY0eDIoMHg1NTYz
OTExRDU5REZBNkFBdWxsLCAweDc4QzE0Mzg5RDk1QTUzN0Z1bGwpLAorICAgIHU2NHgyKDB4MjA3
RDVCQTIwMkU1QjlDNXVsbCwgMHg4MzI2MDM3NjYyOTVDRkE5dWxsKSwKKyAgICB1NjR4MigweDEx
QzgxOTY4NEU3MzRBNDF1bGwsIDB4QjM0NzJEQ0E3QjE0QTk0QXVsbCksCisgICAgdTY0eDIoMHgx
QjUxMDA1MjlBNTMyOTE1dWxsLCAweEQ2MEY1NzNGQkM5QkM2RTR1bGwpLAorICAgIHU2NHgyKDB4
MkI2MEE0NzY4MUU2NzQwMHVsbCwgMHgwOEJBNkZCNTU3MUJFOTFGdWxsKSwKKyAgICB1NjR4Migw
eEYyOTZFQzZCMkEwREQ5MTV1bGwsIDB4QjY2MzY1MjFFN0I5RjlCNnVsbCksCisgICAgdTY0eDIo
MHhGRjM0MDUyRUM1ODU1NjY0dWxsLCAweDUzQjAyRDVEQTk5RjhGQTF1bGwpLAorICAgIHU2NHgy
KDB4MDhCQTQ3OTk2RTg1MDc2QXVsbCwgMHg0QjdBNzBFOUI1QjMyOTQ0dWxsKSwKKyAgICB1NjR4
MigweERCNzUwOTJFQzQxOTI2MjN1bGwsIDB4QUQ2RUE2QjA0OUE3REY3RHVsbCksCisgICAgdTY0
eDIoMHg5Q0VFNjBCODhGRURCMjY2dWxsLCAweEVDQUE4QzcxNjk5QTE4RkZ1bGwpLAorICAgIHU2
NHgyKDB4NTY2NDUyNkNDMkIxOUVFMXVsbCwgMHgxOTM2MDJBNTc1MDk0QzI5dWxsKSwKKyAgICB1
NjR4MigweEEwNTkxMzQwRTQxODNBM0V1bGwsIDB4M0Y1NDk4OUE1QjQyOUQ2NXVsbCksCisgICAg
dTY0eDIoMHg2QjhGRTRENjk5RjczRkQ2dWxsLCAweEExRDI5QzA3RUZFODMwRjV1bGwpLAorICAg
IHU2NHgyKDB4NEQyRDM4RTZGMDI1NURDMXVsbCwgMHg0Q0REMjA4Njg0NzBFQjI2dWxsKSwKKyAg
ICB1NjR4MigweDYzODJFOUM2MDIxRUNDNUV1bGwsIDB4MDk2ODZCM0YzRUJBRUZDOXVsbCksCisg
ICAgdTY0eDIoMHgzQzk3MTgxNDZCNkE3MEExdWxsLCAweDY4N0YzNTg0NTJBMEUyODZ1bGwpLAor
ICAgIHU2NHgyKDB4Qjc5QzUzMDVBQTUwMDczN3VsbCwgMHgzRTA3ODQxQzdGREVBRTVDdWxsKSwK
KyAgICB1NjR4MigweDhFN0Q0NEVDNTcxNkYyQjh1bGwsIDB4QjAzQURBMzdGMDUwMEMwRHVsbCks
CisgICAgdTY0eDIoMHhGMDFDMUYwNDAyMDBCM0ZGdWxsLCAweEFFMENGNTFBM0NCNTc0QjJ1bGwp
LAorICAgIHU2NHgyKDB4MjU4MzdBNThEQzA5MjFCRHVsbCwgMHhEMTkxMTNGOTdDQTkyRkY2dWxs
KSwKKyAgICB1NjR4MigweDk0MzI0NzczMjJGNTQ3MDF1bGwsIDB4M0FFNUU1ODEzN0MyREFEQ3Vs
bCksCisgICAgdTY0eDIoMHhDOEI1NzYzNDlBRjNEREE3dWxsLCAweEE5NDQ2MTQ2MEZEMDAzMEV1
bGwpLAorICAgIHU2NHgyKDB4RUNDOEM3M0VBNDc1MUU0MXVsbCwgMHhFMjM4Q0Q5OTNCRUEwRTJG
dWxsKSwKKyAgICB1NjR4MigweDMyODBCQkExMTgzRUIzMzF1bGwsIDB4NEU1NDhCMzg0RjZEQjkw
OHVsbCksCisgICAgdTY0eDIoMHg2RjQyMEQwM0Y2MEEwNEJGdWxsLCAweDJDQjgxMjkwMjQ5NzdD
Nzl1bGwpLAorICAgIHU2NHgyKDB4NTY3OUIwNzJCQ0FGODlBRnVsbCwgMHhERTlBNzcxRkQ5OTMw
ODEwdWxsKSwKKyAgICB1NjR4MigweEIzOEJBRTEyRENDRjNGMkV1bGwsIDB4NTUxMjcyMUYyRTZC
NzEyNHVsbCksCisgICAgdTY0eDIoMHg1MDFBRERFNjlGODRDRDg3dWxsLCAweDdBNTg0NzE4NzQw
OERBMTd1bGwpLAorICAgIHU2NHgyKDB4QkM5RjlBQkNFOTRCN0Q4Q3VsbCwgMHhFQzdBRUMzQURC
ODUxREZBdWxsKSwKKyAgICB1NjR4MigweDYzMDk0MzY2QzQ2NEMzRDJ1bGwsIDB4RUYxQzE4NDcz
MjE1RDgwOHVsbCksCisgICAgdTY0eDIoMHhERDQzM0IzNzI0QzJCQTE2dWxsLCAweDEyQTE0RDQz
MkE2NUM0NTF1bGwpLAorICAgIHU2NHgyKDB4NTA5NDAwMDIxMzNBRTRERHVsbCwgMHg3MURGRjg5
RTEwMzE0RTU1dWxsKSwKKyAgICB1NjR4MigweDgxQUM3N0Q2NUYxMTE5OUJ1bGwsIDB4MDQzNTU2
RjFEN0EzQzc2QnVsbCksCisgICAgdTY0eDIoMHgzQzExMTgzQjU5MjRBNTA5dWxsLCAweEYyOEZF
NkVEOTdGMUZCRkF1bGwpLAorICAgIHU2NHgyKDB4OUVCQUJGMkMxRTE1M0M2RXVsbCwgMHg4NkUz
NDU3MEVBRTk2RkIxdWxsKSwKKyAgICB1NjR4MigweDg2MEU1RTBBNUEzRTJBQjN1bGwsIDB4Nzcx
RkU3MUM0RTNEMDZGQXVsbCksCisgICAgdTY0eDIoMHgyOTY1RENCOTk5RTcxRDBGdWxsLCAweDgw
M0U4OUQ2NTI2NkM4MjV1bGwpLAorICAgIHU2NHgyKDB4MkU0Q0M5Nzg5QzEwQjM2QXVsbCwgMHhD
NjE1MEVCQTk0RTJFQTc4dWxsKSwKKyAgICB1NjR4MigweEE2RkMzQzUzMUUwQTJERjR1bGwsIDB4
RjJGNzRFQTczNjFEMkIzRHVsbCksCisgICAgdTY0eDIoMHgxOTM5MjYwRjE5QzI3OTYwdWxsLCAw
eDUyMjNBNzA4RjcxMzEyQjZ1bGwpLAorICAgIHU2NHgyKDB4RUJBREZFNkVFQUMzMUY2NnVsbCwg
MHhFM0JDNDU5NUE2N0JDODgzdWxsKSwKKyAgICB1NjR4MigweEIxN0YzN0QxMDE4Q0ZGMjh1bGws
IDB4QzMzMkRERUZCRTZDNUFBNXVsbCksCisgICAgdTY0eDIoMHg2NTU4MjE4NTY4QUI5NzAydWxs
LCAweEVFQ0VBNTBGREIyRjk1M0J1bGwpLAorICAgIHU2NHgyKDB4MkFFRjdEQUQ1QjZFMkY4NHVs
bCwgMHgxNTIxQjYyODI5MDc2MTcwdWxsKSwKKyAgICB1NjR4MigweEVDREQ0Nzc1NjE5RjE1MTB1
bGwsIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbCksCisgICAgdTY0eDIoMHgwMzM0RkUxRUFBMDM2M0NG
dWxsLCAweEI1NzM1QzkwNEM3MEEyMzl1bGwpLAorICAgIHU2NHgyKDB4RDU5RTlFMEJDQkFBREUx
NHVsbCwgMHhFRUNDODZCQzYwNjIyQ0E3dWxsKSwKKyAgICB1NjR4MigweDlDQUI1Q0FCQjJGMzg0
NkV1bGwsIDB4NjQ4QjFFQUYxOUJERjBDQXVsbCksCisgICAgdTY0eDIoMHhBMDIzNjlCOTY1NUFC
QjUwdWxsLCAweDQwNjg1QTMyM0MyQUI0QjN1bGwpLAorICAgIHU2NHgyKDB4MzE5RUU5RDVDMDIx
QjhGN3VsbCwgMHg5QjU0MEIxOTg3NUZBMDk5dWxsKSwKKyAgICB1NjR4MigweDk1Rjc5OTdFNjIz
RDdEQTh1bGwsIDB4RjgzNzg4OUE5N0UzMkQ3N3VsbCksCisgICAgdTY0eDIoMHgxMUVEOTM1RjE2
NjgxMjgxdWxsLCAweDBFMzU4ODI5QzdFNjFGRDZ1bGwpLAorICAgIHU2NHgyKDB4OTZERURGQTE3
ODU4QkE5OXVsbCwgMHg1N0Y1ODRBNTFCMjI3MjYzdWxsKSwKKyAgICB1NjR4MigweDlCODNDM0ZG
MUFDMjQ2OTZ1bGwsIDB4Q0RCMzBBRUI1MzJFMzA1NHVsbCksCisgICAgdTY0eDIoMHg4RkQ5NDhF
NDZEQkMzMTI4dWxsLCAweDU4RUJGMkVGMzRDNkZGRUF1bGwpLAorICAgIHU2NHgyKDB4RkUyOEVE
NjFFRTdDM0M3M3VsbCwgMHg1RDRBMTREOUU4NjRCN0UzdWxsKSwKKyAgICB1NjR4MigweDQyMTA1
RDE0MjAzRTEzRTB1bGwsIDB4NDVFRUUyQjZBM0FBQUJFQXVsbCksCisgICAgdTY0eDIoMHhEQjZD
NEYxNUZBQ0I0RkQwdWxsLCAweEM3NDJGNDQyRUY2QUJCQjV1bGwpLAorICAgIHU2NHgyKDB4NjU0
RjNCMUQ0MUNEMjEwNXVsbCwgMHhEODFFNzk5RTg2ODU0REM3dWxsKSwKKyAgICB1NjR4MigweEU0
NEI0NzZBM0Q4MTYyNTB1bGwsIDB4Q0Y2MkExRjI1QjhEMjY0NnVsbCksCisgICAgdTY0eDIoMHhG
Qzg4ODNBMEMxQzdCNkEzdWxsLCAweDdGMTUyNEMzNjlDQjc0OTJ1bGwpLAorICAgIHU2NHgyKDB4
NDc4NDhBMEI1NjkyQjI4NXVsbCwgMHgwOTVCQkYwMEFEMTk0ODlEdWxsKSwKKyAgICB1NjR4Migw
eDE0NjJCMTc0MjM4MjBEMDB1bGwsIDB4NTg0MjhEMkEwQzU1RjVFQXVsbCksCisgICAgdTY0eDIo
MHgxREFERjQzRTIzM0Y3MDYxdWxsLCAweDMzNzJGMDkyOEQ5MzdFNDF1bGwpLAorICAgIHU2NHgy
KDB4RDY1RkVDRjE2QzIyM0JEQnVsbCwgMHg3Q0RFMzc1OUNCRUU3NDYwdWxsKSwKKyAgICB1NjR4
MigweDQwODVGMkE3Q0U3NzMyNkV1bGwsIDB4QTYwNzgwODQxOUY4NTA5RXVsbCksCisgICAgdTY0
eDIoMHhFOEVGRDg1NTYxRDk5NzM1dWxsLCAweEE5NjlBN0FBQzUwQzA2QzJ1bGwpLAorICAgIHU2
NHgyKDB4NUEwNEFCRkM4MDBCQ0FEQ3VsbCwgMHg5RTQ0N0EyRUMzNDUzNDg0dWxsKSwKKyAgICB1
NjR4MigweEZERDU2NzA1MEUxRTlFQzl1bGwsIDB4REI3M0RCRDMxMDU1ODhDRHVsbCksCisgICAg
dTY0eDIoMHg2NzVGREE3OUUzNjc0MzQwdWxsLCAweEM1QzQzNDY1NzEzRTM4RDh1bGwpLAorICAg
IHU2NHgyKDB4M0QyOEY4OUVGMTZERkYyMHVsbCwgMHgxNTNFMjFFNzhGQjAzRDRBdWxsKSwKKyAg
ICB1NjR4MigweEU2RTM5RjJCREI4M0FERjd1bGwsIDB4RTkzRDVBNjg5NDgxNDBGN3VsbCksCisg
ICAgdTY0eDIoMHhGNjRDMjYxQzk0NjkyOTM0dWxsLCAweDQxMTUyMEY3NzYwMkQ0Rjd1bGwpLAor
ICAgIHU2NHgyKDB4QkNGNDZCMkVENEExMDA2OHVsbCwgMHhENDA4MjQ3MTMzMjBGNDZBdWxsKSwK
KyAgICB1NjR4MigweDQzQjdENEI3NTAwMDYxQUZ1bGwsIDB4MUUzOUY2MkU5NzI0NDU0NnVsbCl9
OworCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9LRVlTX0lOQ18KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
aW50ZXJuYWwvcmFuZGVuLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5iYWI4MDc1YTU0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9y
YW5kZW4uY2MKQEAgLTAsMCArMSw4OSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBB
dXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4uaCIKKwor
I2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9kZXRlY3QuaCIKKworLy8gUkFORGVuID0gUkFORG9t
IGdlbmVyYXRvciBvciBiZWV0cm9vdHMgaW4gU3dpc3MgR2VybWFuLgorLy8gJ1N0cm9uZycgKHdl
bGwtZGlzdHJpYnV0ZWQsIHVucHJlZGljdGFibGUsIGJhY2t0cmFja2luZy1yZXNpc3RhbnQpIHJh
bmRvbQorLy8gZ2VuZXJhdG9yLCBmYXN0ZXIgaW4gc29tZSBiZW5jaG1hcmtzIHRoYW4gc3RkOjpt
dDE5OTM3XzY0IGFuZCBwY2c2NF9jMzIuCisvLworLy8gSGlnaC1sZXZlbCBzdW1tYXJ5OgorLy8g
MSkgUmV2ZXJpZSAoc2VlICJBIFJvYnVzdCBhbmQgU3BvbmdlLUxpa2UgUFJORyB3aXRoIEltcHJv
dmVkIEVmZmljaWVuY3kiKSBpcworLy8gICAgYSBzcG9uZ2UtbGlrZSByYW5kb20gZ2VuZXJhdG9y
IHRoYXQgcmVxdWlyZXMgYSBjcnlwdG9ncmFwaGljIHBlcm11dGF0aW9uLgorLy8gICAgSXQgaW1w
cm92ZXMgdXBvbiAiUHJvdmFibHkgUm9idXN0IFNwb25nZS1CYXNlZCBQUk5HcyBhbmQgS0RGcyIg
YnkKKy8vICAgIGFjaGlldmluZyBiYWNrdHJhY2tpbmcgcmVzaXN0YW5jZSB3aXRoIG9ubHkgb25l
IFBlcm11dGUoKSBwZXIgYnVmZmVyLgorLy8KKy8vIDIpICJTaW1waXJhIHYyOiBBIEZhbWlseSBv
ZiBFZmZpY2llbnQgUGVybXV0YXRpb25zIFVzaW5nIHRoZSBBRVMgUm91bmQKKy8vICAgIEZ1bmN0
aW9uIiBjb25zdHJ1Y3RzIHVwIHRvIDEwMjQtYml0IHBlcm11dGF0aW9ucyB1c2luZyBhbiBpbXBy
b3ZlZAorLy8gICAgR2VuZXJhbGl6ZWQgRmVpc3RlbCBuZXR3b3JrIHdpdGggMi1yb3VuZCBBRVMt
MTI4IGZ1bmN0aW9ucy4gVGhpcyBGZWlzdGVsCisvLyAgICBibG9jayBzaHVmZmxlIGFjaGlldmVz
IGRpZmZ1c2lvbiBmYXN0ZXIgYW5kIGlzIGxlc3MgdnVsbmVyYWJsZSB0bworLy8gICAgc2xpY2Vk
LWJpY2xpcXVlIGF0dGFja3MgdGhhbiB0aGUgVHlwZS0yIGN5Y2xpYyBzaHVmZmxlLgorLy8KKy8v
IDMpICJJbXByb3ZpbmcgdGhlIEdlbmVyYWxpemVkIEZlaXN0ZWwiIGFuZCAiTmV3IGNyaXRlcmlv
biBmb3IgZGlmZnVzaW9uCisvLyAgICBwcm9wZXJ0eSIgZXh0ZW5kcyB0aGUgc2FtZSBraW5kIG9m
IGltcHJvdmVkIEZlaXN0ZWwgYmxvY2sgc2h1ZmZsZSB0byAxNgorLy8gICAgYnJhbmNoZXMsIHdo
aWNoIGVuYWJsZXMgYSAyMDQ4LWJpdCBwZXJtdXRhdGlvbi4KKy8vCisvLyBXZSBjb21iaW5lIHRo
ZXNlIHRocmVlIGlkZWFzIGFuZCBhbHNvIGNoYW5nZSBTaW1waXJhJ3Mgc3Vicm91bmQga2V5cyBm
cm9tCisvLyBzdHJ1Y3R1cmVkL2xvdy1lbnRyb3B5IGNvdW50ZXJzIHRvIGRpZ2l0cyBvZiBQaS4K
KworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CituYW1lc3Bh
Y2UgeworCitzdHJ1Y3QgUmFuZGVuU3RhdGUgeworICBjb25zdCB2b2lkKiBrZXlzOworICBib29s
IGhhc19jcnlwdG87Cit9OworCitSYW5kZW5TdGF0ZSBHZXRSYW5kZW5TdGF0ZSgpIHsKKyAgc3Rh
dGljIGNvbnN0IFJhbmRlblN0YXRlIHN0YXRlID0gW10oKSB7CisgICAgUmFuZGVuU3RhdGUgdG1w
OworI2lmIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSAorICAgIC8vIEhXIEFFUyBE
aXNwYXRjaC4KKyAgICBpZiAoSGFzUmFuZGVuSHdBZXNJbXBsZW1lbnRhdGlvbigpICYmIENQVVN1
cHBvcnRzUmFuZGVuSHdBZXMoKSkgeworICAgICAgdG1wLmhhc19jcnlwdG8gPSB0cnVlOworICAg
ICAgdG1wLmtleXMgPSBSYW5kZW5Id0Flczo6R2V0S2V5cygpOworICAgIH0gZWxzZSB7CisgICAg
ICB0bXAuaGFzX2NyeXB0byA9IGZhbHNlOworICAgICAgdG1wLmtleXMgPSBSYW5kZW5TbG93OjpH
ZXRLZXlzKCk7CisgICAgfQorI2VsaWYgQUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUworICAgIC8v
IEhXIEFFUyBpcyBlbmFibGVkLgorICAgIHRtcC5oYXNfY3J5cHRvID0gdHJ1ZTsKKyAgICB0bXAu
a2V5cyA9IFJhbmRlbkh3QWVzOjpHZXRLZXlzKCk7CisjZWxzZQorICAgIC8vIEhXIEFFUyBpcyBk
aXNhYmxlZC4KKyAgICB0bXAuaGFzX2NyeXB0byA9IGZhbHNlOworICAgIHRtcC5rZXlzID0gUmFu
ZGVuU2xvdzo6R2V0S2V5cygpOworI2VuZGlmCisgICAgcmV0dXJuIHRtcDsKKyAgfSgpOworICBy
ZXR1cm4gc3RhdGU7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitSYW5kZW46OlJhbmRlbigpIHsK
KyAgYXV0byB0bXAgPSBHZXRSYW5kZW5TdGF0ZSgpOworICBrZXlzXyA9IHRtcC5rZXlzOworI2lm
IEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSAorICBoYXNfY3J5cHRvXyA9IHRtcC5o
YXNfY3J5cHRvOworI2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwK
K30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwv
cmFuZGVuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE0ZmYyNTQ1OTY4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbi5oCkBAIC0wLDAgKzEsMTAwIEBACisvLyBDb3B5
cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9J
TlRFUk5BTF9SQU5ERU5fSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0hf
CisKKyNpbmNsdWRlIDxjc3RkZGVmPgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwv
cGxhdGZvcm0uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMu
aCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fc2xvdy5oIgorI2luY2x1
ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl90cmFpdHMuaCIKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKKy8vIFJBTkRlbiA9IFJBTkRvbSBn
ZW5lcmF0b3Igb3IgYmVldHJvb3RzIGluIFN3aXNzIEdlcm1hbi4KKy8vICdTdHJvbmcnICh3ZWxs
LWRpc3RyaWJ1dGVkLCB1bnByZWRpY3RhYmxlLCBiYWNrdHJhY2tpbmctcmVzaXN0YW50KSByYW5k
b20KKy8vIGdlbmVyYXRvciwgZmFzdGVyIGluIHNvbWUgYmVuY2htYXJrcyB0aGFuIHN0ZDo6bXQx
OTkzN182NCBhbmQgcGNnNjRfYzMyLgorLy8KKy8vIFJhbmRlbiBpbXBsZW1lbnRzIHRoZSBiYXNp
YyBzdGF0ZSBtYW5pcHVsYXRpb24gbWV0aG9kcy4KK2NsYXNzIFJhbmRlbiB7CisgcHVibGljOgor
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3RhdGVCeXRlcyA9IFJhbmRlblRyYWl0czo6a1N0
YXRlQnl0ZXM7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtDYXBhY2l0eUJ5dGVzID0gUmFu
ZGVuVHJhaXRzOjprQ2FwYWNpdHlCeXRlczsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1Nl
ZWRCeXRlcyA9IFJhbmRlblRyYWl0czo6a1NlZWRCeXRlczsKKworICB+UmFuZGVuKCkgPSBkZWZh
dWx0OworCisgIFJhbmRlbigpOworCisgIC8vIEdlbmVyYXRlIHVwZGF0ZXMgdGhlIHJhbmRlbiBz
cG9uZ2UuIFRoZSBvdXRlciBwb3J0aW9uIG9mIHRoZSBzcG9uZ2UKKyAgLy8gKGtDYXBhY2l0eUJ5
dGVzIC4uIGtTdGF0ZUJ5dGVzKSBtYXkgYmUgY29uc3VtZWQgYXMgUFJORyBzdGF0ZS4KKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorICB2b2lkIEdlbmVyYXRlKFQgKCZzdGF0ZSlb
Tl0pIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KE4gKiBzaXplb2YoVCkgPT0ga1N0YXRlQnl0
ZXMsCisgICAgICAgICAgICAgICAgICAiUmFuZGVuOjpHZW5lcmF0ZSgpIHJlcXVpcmVzIGtTdGF0
ZUJ5dGVzIG9mIHN0YXRlIik7CisjaWYgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENI
CisgICAgLy8gSFcgQUVTIERpc3BhdGNoLgorICAgIGlmIChoYXNfY3J5cHRvXykgeworICAgICAg
UmFuZGVuSHdBZXM6OkdlbmVyYXRlKGtleXNfLCBzdGF0ZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
IFJhbmRlblNsb3c6OkdlbmVyYXRlKGtleXNfLCBzdGF0ZSk7CisgICAgfQorI2VsaWYgQUJTTF9I
QVZFX0FDQ0VMRVJBVEVEX0FFUworICAgIC8vIEhXIEFFUyBpcyBlbmFibGVkLgorICAgIFJhbmRl
bkh3QWVzOjpHZW5lcmF0ZShrZXlzXywgc3RhdGUpOworI2Vsc2UKKyAgICAvLyBIVyBBRVMgaXMg
ZGlzYWJsZWQuCisgICAgUmFuZGVuU2xvdzo6R2VuZXJhdGUoa2V5c18sIHN0YXRlKTsKKyNlbmRp
ZgorICB9CisKKyAgLy8gQWJzb3JiIGluY29ycG9yYXRlcyBhZGRpdGlvbmFsIHNlZWQgbWF0ZXJp
YWwgaW50byB0aGUgcmFuZGVuIHNwb25nZS4gIEFmdGVyCisgIC8vIGFic29yYiByZXR1cm5zLCBH
ZW5lcmF0ZSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgdGhlIHN0YXRlIG1heSBiZSBjb25zdW1lZC4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFMsIHNpemVfdCBNLCB0eXBlbmFtZSBULCBzaXplX3QgTj4K
KyAgdm9pZCBBYnNvcmIoY29uc3QgUyAoJnNlZWQpW01dLCBUICgmc3RhdGUpW05dKSBjb25zdCB7
CisgICAgc3RhdGljX2Fzc2VydChNICogc2l6ZW9mKFMpID09IFJhbmRlblRyYWl0czo6a1NlZWRC
eXRlcywKKyAgICAgICAgICAgICAgICAgICJSYW5kZW46OkFic29yYigpIHJlcXVpcmVzIGtTZWVk
Qnl0ZXMgb2Ygc2VlZCIpOworCisgICAgc3RhdGljX2Fzc2VydChOICogc2l6ZW9mKFQpID09IFJh
bmRlblRyYWl0czo6a1N0YXRlQnl0ZXMsCisgICAgICAgICAgICAgICAgICAiUmFuZGVuOjpBYnNv
cmIoKSByZXF1aXJlcyBrU3RhdGVCeXRlcyBvZiBzdGF0ZSIpOworI2lmIEFCU0xfUkFORE9NX0lO
VEVSTkFMX0FFU19ESVNQQVRDSAorICAgIC8vIEhXIEFFUyBEaXNwYXRjaC4KKyAgICBpZiAoaGFz
X2NyeXB0b18pIHsKKyAgICAgIFJhbmRlbkh3QWVzOjpBYnNvcmIoc2VlZCwgc3RhdGUpOworICAg
IH0gZWxzZSB7CisgICAgICBSYW5kZW5TbG93OjpBYnNvcmIoc2VlZCwgc3RhdGUpOworICAgIH0K
KyNlbGlmIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMKKyAgICAvLyBIVyBBRVMgaXMgZW5hYmxl
ZC4KKyAgICBSYW5kZW5Id0Flczo6QWJzb3JiKHNlZWQsIHN0YXRlKTsKKyNlbHNlCisgICAgLy8g
SFcgQUVTIGlzIGRpc2FibGVkLgorICAgIFJhbmRlblNsb3c6OkFic29yYihzZWVkLCBzdGF0ZSk7
CisjZW5kaWYKKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3Qgdm9pZCoga2V5c187CisjaWYgQUJT
TF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENICisgIGJvb2wgaGFzX2NyeXB0b187CisjZW5k
aWYKK307CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFj
ZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2JlbmNobWFya3MuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2JlbmNobWFya3MuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY1ODkxNzJjMDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9iZW5jaG1hcmtzLmNjCkBAIC0wLDAgKzEsMTc0IEBA
CisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuLmgiCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2lu
Y2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDxjc3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9iYXNl
L2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwv
bmFub2JlbmNobWFyay5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3BsYXRmb3Jt
LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2VuZ2luZS5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9od2Flcy5oIgorI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9zbG93LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L251bWJlcnMuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpSYW5kZW47Cit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJhbmRlbkh3QWVzOwordXNp
bmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSYW5kZW5TbG93OworCit1c2luZyBhYnNsOjpyYW5k
b21faW50ZXJuYWxfbmFub2JlbmNobWFyazo6RnVuY0lucHV0OwordXNpbmcgYWJzbDo6cmFuZG9t
X2ludGVybmFsX25hbm9iZW5jaG1hcms6OkZ1bmNPdXRwdXQ7Cit1c2luZyBhYnNsOjpyYW5kb21f
aW50ZXJuYWxfbmFub2JlbmNobWFyazo6SW52YXJpYW50VGlja3NQZXJTZWNvbmQ7Cit1c2luZyBh
YnNsOjpyYW5kb21faW50ZXJuYWxfbmFub2JlbmNobWFyazo6TWVhc3VyZUNsb3N1cmU7Cit1c2lu
ZyBhYnNsOjpyYW5kb21faW50ZXJuYWxfbmFub2JlbmNobWFyazo6UGFyYW1zOwordXNpbmcgYWJz
bDo6cmFuZG9tX2ludGVybmFsX25hbm9iZW5jaG1hcms6OlBpblRocmVhZFRvQ1BVOwordXNpbmcg
YWJzbDo6cmFuZG9tX2ludGVybmFsX25hbm9iZW5jaG1hcms6OlJlc3VsdDsKKworLy8gTG9jYWwg
c3RhdGUgcGFyYW1ldGVycy4KK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTdGF0ZVNpemVUID0g
UmFuZGVuOjprU3RhdGVCeXRlcyAvIHNpemVvZih1aW50NjRfdCk7CitzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBrU2VlZFNpemVUID0gUmFuZGVuOjprU2VlZEJ5dGVzIC8gc2l6ZW9mKHVpbnQzMl90
KTsKKworLy8gUmFuZGVuIGltcGxlbWVudGF0aW9uIGJlbmNobWFya3MuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBBYnNvcmJGbiA6IHB1YmxpYyBUIHsKKyAgbXV0YWJsZSB1aW50NjRf
dCBzdGF0ZVtrU3RhdGVTaXplVF0gPSB7fTsKKyAgbXV0YWJsZSB1aW50MzJfdCBzZWVkW2tTZWVk
U2l6ZVRdID0ge307CisKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgYnl0ZXMoKSB7IHJldHVy
biBzaXplb2Yoc2VlZCk7IH0KKworICBGdW5jT3V0cHV0IG9wZXJhdG9yKCkoY29uc3QgRnVuY0lu
cHV0IG51bV9pdGVycykgY29uc3QgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2l0
ZXJzOyArK2kpIHsKKyAgICAgIHRoaXMtPkFic29yYihzZWVkLCBzdGF0ZSk7CisgICAgfQorICAg
IHJldHVybiBzdGF0ZVswXTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1
Y3QgR2VuZXJhdGVGbiA6IHB1YmxpYyBUIHsKKyAgbXV0YWJsZSB1aW50NjRfdCBzdGF0ZVtrU3Rh
dGVTaXplVF07CisgIEdlbmVyYXRlRm4oKSB7IHN0ZDo6bWVtc2V0KHN0YXRlLCAwLCBzaXplb2Yo
c3RhdGUpKTsgfQorCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGJ5dGVzKCkgeyByZXR1cm4g
c2l6ZW9mKHN0YXRlKTsgfQorCisgIEZ1bmNPdXRwdXQgb3BlcmF0b3IoKShjb25zdCBGdW5jSW5w
dXQgbnVtX2l0ZXJzKSBjb25zdCB7CisgICAgY29uc3QgYXV0byoga2V5cyA9IHRoaXMtPkdldEtl
eXMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9pdGVyczsgKytpKSB7CisgICAg
ICB0aGlzLT5HZW5lcmF0ZShrZXlzLCBzdGF0ZSk7CisgICAgfQorICAgIHJldHVybiBzdGF0ZVsw
XTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnQ+CitzdHJ1Y3QgRW5naW5lIHsK
KyAgbXV0YWJsZSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnJhbmRlbl9lbmdpbmU8VUludD4gcm5n
OworCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGJ5dGVzKCkgeyByZXR1cm4gc2l6ZW9mKFVJ
bnQpOyB9CisKKyAgRnVuY091dHB1dCBvcGVyYXRvcigpKGNvbnN0IEZ1bmNJbnB1dCBudW1faXRl
cnMpIGNvbnN0IHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9pdGVycyAtIDE7ICsr
aSkgeworICAgICAgcm5nKCk7CisgICAgfQorICAgIHJldHVybiBybmcoKTsKKyAgfQorfTsKKwor
dGVtcGxhdGUgPHNpemVfdCBOPgordm9pZCBQcmludChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBz
aXplX3QgbiwgY29uc3QgUmVzdWx0ICgmcmVzdWx0cylbTl0sCisgICAgICAgICAgIGNvbnN0IHNp
emVfdCBieXRlcykgeworICBpZiAobiA9PSAwKSB7CisgICAgQUJTTF9SQVdfTE9HKAorICAgICAg
ICBXQVJOSU5HLAorICAgICAgICAiV0FSTklORzogTWVhc3VyZW1lbnQgZmFpbGVkLCBzaG91bGQg
bm90IGhhcHBlbiB3aGVuIHVzaW5nICIKKyAgICAgICAgIlBpblRocmVhZFRvQ1BVIHVubGVzcyB0
aGUgcmVnaW9uIHRvIG1lYXN1cmUgdGFrZXMgPiAxIHNlY29uZC5cbiIpOworICAgIHJldHVybjsK
KyAgfQorCisgIHN0YXRpYyBjb25zdCBkb3VibGUgbnNfcGVyX3RpY2sgPSAxZTkgLyBJbnZhcmlh
bnRUaWNrc1BlclNlY29uZCgpOworICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGRvdWJsZSBrTnNQ
ZXJTID0gMWU5OyAgICAgICAgICAgICAgICAgLy8gbnMvcworICBzdGF0aWMgY29uc3RleHByIGNv
bnN0IGRvdWJsZSBrTUJQZXJCeXRlID0gMS4wIC8gMTA0ODU3Ni4wOyAgLy8gTWIgLyBiCisgIHN0
YXRpYyBhdXRvIGhlYWRlciA9IFtdIHsKKyAgICByZXR1cm4gcHJpbnRmKCIlMjBzICU4czogJTEy
cyB0aWNrczsgJTlzICAoJTlzKSAlOHNcbiIsICJOYW1lIiwgIkNvdW50IiwKKyAgICAgICAgICAg
ICAgICAgICJUb3RhbCIsICJWYXJpYW5jZSIsICJUaW1lIiwgImJ5dGVzL3MiKTsKKyAgfSgpOwor
ICAodm9pZCloZWFkZXI7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAg
ICBjb25zdCBkb3VibGUgdGlja3NfcGVyX2NhbGwgPSByZXN1bHRzW2ldLnRpY2tzIC8gcmVzdWx0
c1tpXS5pbnB1dDsKKyAgICBjb25zdCBkb3VibGUgbnNfcGVyX2NhbGwgPSBuc19wZXJfdGljayAq
IHRpY2tzX3Blcl9jYWxsOworICAgIGNvbnN0IGRvdWJsZSBieXRlc19wZXJfbnMgPSBieXRlcyAv
IG5zX3Blcl9jYWxsOworICAgIGNvbnN0IGRvdWJsZSBtYl9wZXJfcyA9IGJ5dGVzX3Blcl9ucyAq
IGtOc1BlclMgKiBrTUJQZXJCeXRlOworICAgIC8vIE91dHB1dAorICAgIHByaW50ZigiJTIwcyAl
OHp1OiAlMTIuMmYgdGlja3M7IE1BRD0lNC4yZiUlICAoJTYuMWYgbnMpICU4LjFmIE1iL3NcbiIs
CisgICAgICAgICAgIG5hbWUsIHJlc3VsdHNbaV0uaW5wdXQsIHJlc3VsdHNbaV0udGlja3MsCisg
ICAgICAgICAgIHJlc3VsdHNbaV0udmFyaWFiaWxpdHkgKiAxMDAuMCwgbnNfcGVyX2NhbGwsIG1i
X3Blcl9zKTsKKyAgfQorfQorCisvLyBGYWlscyBoZXJlCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT3As
IHNpemVfdCBOPgordm9pZCBNZWFzdXJlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEZ1bmNJbnB1
dCAoJmlucHV0cylbTl0pIHsKKyAgT3Agb3A7CisKKyAgUmVzdWx0IHJlc3VsdHNbTl07CisgIFBh
cmFtcyBwYXJhbXM7CisgIHBhcmFtcy52ZXJib3NlID0gZmFsc2U7CisgIHBhcmFtcy5tYXhfZXZh
bHMgPSA2OyAgLy8gYXZvaWQgdGVzdCB0aW1lb3V0CisgIGNvbnN0IHNpemVfdCBudW1fcmVzdWx0
cyA9IE1lYXN1cmVDbG9zdXJlKG9wLCBpbnB1dHMsIE4sIHJlc3VsdHMsIHBhcmFtcyk7CisgIFBy
aW50KG5hbWUsIG51bV9yZXN1bHRzLCByZXN1bHRzLCBvcC5ieXRlcygpKTsKK30KKworLy8gdW5w
cmVkaWN0YWJsZSA9PSAxIGJ1dCB0aGUgY29tcGlsZXIgZG9lcyBub3Qga25vdyB0aGF0Lgordm9p
ZCBSdW5BbGwoY29uc3QgaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworICBpZiAoYXJnYyA9PSAy
KSB7CisgICAgaW50IGNwdSA9IC0xOworICAgIGlmICghYWJzbDo6U2ltcGxlQXRvaShhcmd2WzFd
LCAmY3B1KSkgeworICAgICAgQUJTTF9SQVdfTE9HKEZBVEFMLCAiVGhlIG9wdGlvbmFsIGFyZ3Vt
ZW50IG11c3QgYmUgYSBDUFUgbnVtYmVyID49IDAuXG4iKTsKKyAgICB9CisgICAgUGluVGhyZWFk
VG9DUFUoY3B1KTsKKyAgfQorCisgIC8vIFRoZSBjb21waWxlciBjYW5ub3QgcmVkdWNlIHRoaXMg
dG8gYSBjb25zdGFudC4KKyAgY29uc3QgRnVuY0lucHV0IHVucHJlZGljdGFibGUgPSAoYXJnYyAh
PSA5OTkpOworICBzdGF0aWMgY29uc3QgRnVuY0lucHV0IGlucHV0c1tdID0ge3VucHJlZGljdGFi
bGUgKiAxMDAsIHVucHJlZGljdGFibGUgKiAxMDAwfTsKKworI2lmICFkZWZpbmVkKEFCU0xfSU5U
RVJOQUxfRElTQUJMRV9BRVMpICYmIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMKKyAgTWVhc3Vy
ZTxBYnNvcmJGbjxSYW5kZW5Id0Flcz4+KCJBYnNvcmIgKEh3QWVzKSIsIGlucHV0cyk7CisjZW5k
aWYKKyAgTWVhc3VyZTxBYnNvcmJGbjxSYW5kZW5TbG93Pj4oIkFic29yYiAoU2xvdykiLCBpbnB1
dHMpOworCisjaWYgIWRlZmluZWQoQUJTTF9JTlRFUk5BTF9ESVNBQkxFX0FFUykgJiYgQUJTTF9I
QVZFX0FDQ0VMRVJBVEVEX0FFUworICBNZWFzdXJlPEdlbmVyYXRlRm48UmFuZGVuSHdBZXM+Pigi
R2VuZXJhdGUgKEh3QWVzKSIsIGlucHV0cyk7CisjZW5kaWYKKyAgTWVhc3VyZTxHZW5lcmF0ZUZu
PFJhbmRlblNsb3c+PigiR2VuZXJhdGUgKFNsb3cpIiwgaW5wdXRzKTsKKworICAvLyBNZWFzdXJl
IHRoZSBwcm9kdWN0aW9uIGVuZ2luZS4KKyAgc3RhdGljIGNvbnN0IEZ1bmNJbnB1dCBpbnB1dHMx
W10gPSB7dW5wcmVkaWN0YWJsZSAqIDEwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVucHJlZGljdGFibGUgKiAxMDAwMH07CisgIE1lYXN1cmU8RW5naW5lPHVpbnQ2
NF90Pj4oInJhbmRlbl9lbmdpbmU8dWludDY0X3Q+IiwgaW5wdXRzMSk7CisgIE1lYXN1cmU8RW5n
aW5lPHVpbnQzMl90Pj4oInJhbmRlbl9lbmdpbmU8dWludDMyX3Q+IiwgaW5wdXRzMSk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7Cisg
IFJ1bkFsbChhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvcmFuZGVuX2RldGVjdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9y
YW5kZW5fZGV0ZWN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5k
NTk0NmIyMTljYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5k
ZW5fZGV0ZWN0LmNjCkBAIC0wLDAgKzEsMjE5IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJz
ZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisKKy8vIEhFUk1FVElDIE5PVEU6IFRoZSByYW5kZW5faHdhZXMgdGFyZ2V0
IG11c3Qgbm90IGludHJvZHVjZSBkdXBsaWNhdGUKKy8vIHN5bWJvbHMgZnJvbSBhcmJpdHJhcnkg
c3lzdGVtIGFuZCBvdGhlciBoZWFkZXJzLCBzaW5jZSBpdCBtYXkgYmUgYnVpbHQKKy8vIHdpdGgg
ZGlmZmVyZW50IGZsYWdzIGZyb20gb3RoZXIgdGFyZ2V0cywgdXNpbmcgZGlmZmVyZW50IGxldmVs
cyBvZgorLy8gb3B0aW1pemF0aW9uLCBwb3RlbnRpYWxseSBpbnRyb2R1Y2luZyBPRFIgdmlvbGF0
aW9ucy4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9kZXRlY3QuaCIK
KworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL3BsYXRmb3JtLmgiCisKKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9Y
ODZfNjQpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVVNFX1g4Nl9DUFVJRAorI2VsaWYgZGVmaW5l
ZChBQlNMX0FSQ0hfUFBDKSB8fCBkZWZpbmVkKEFCU0xfQVJDSF9BUk0pIHx8IFwKKyAgICBkZWZp
bmVkKEFCU0xfQVJDSF9BQVJDSDY0KQorI2lmIGRlZmluZWQoX19BTkRST0lEX18pCisjZGVmaW5l
IEFCU0xfSU5URVJOQUxfVVNFX0FORFJPSURfR0VUQVVYVkFMCisjZGVmaW5lIEFCU0xfSU5URVJO
QUxfVVNFX0dFVEFVWFZBTAorI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCisjZGVmaW5lIEFCU0xf
SU5URVJOQUxfVVNFX0xJTlVYX0dFVEFVWFZBTAorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VTRV9H
RVRBVVhWQUwKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEFCU0xfSU5URVJOQUxfVVNF
X1g4Nl9DUFVJRCkKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCisjaW5j
bHVkZSA8aW50cmluLmg+ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZV9vcmRlcikKKyNwcmFnbWEg
aW50cmluc2ljKF9fY3B1aWQpCisjZWxzZQorLy8gTVNWQy1lcXVpdmFsZW50IF9fY3B1aWQgaW50
cmluc2ljIGZ1bmN0aW9uLgorc3RhdGljIHZvaWQgX19jcHVpZChpbnQgY3B1X2luZm9bNF0sIGlu
dCBpbmZvX3R5cGUpIHsKKyAgX19hc21fXyB2b2xhdGlsZSgiY3B1aWQgXG5cdCIKKyAgICAgICAg
ICAgICAgICAgICA6ICI9YSIoY3B1X2luZm9bMF0pLCAiPWIiKGNwdV9pbmZvWzFdKSwgIj1jIihj
cHVfaW5mb1syXSksCisgICAgICAgICAgICAgICAgICAgICAiPWQiKGNwdV9pbmZvWzNdKQorICAg
ICAgICAgICAgICAgICAgIDogImEiKGluZm9fdHlwZSksICJjIigwKSk7Cit9CisjZW5kaWYKKyNl
bmRpZiAgLy8gQUJTTF9JTlRFUk5BTF9VU0VfWDg2X0NQVUlECisKKy8vIE9uIGxpbnV4LCBqdXN0
IHVzZSB0aGUgYy1saWJyYXJ5IGdldGF1eHZhbCBjYWxsLgorI2lmIGRlZmluZWQoQUJTTF9JTlRF
Uk5BTF9VU0VfTElOVVhfR0VUQVVYVkFMKQorCitleHRlcm4gIkMiIHVuc2lnbmVkIGxvbmcgZ2V0
YXV4dmFsKHVuc2lnbmVkIGxvbmcgdHlwZSk7ICAvLyBOT0xJTlQocnVudGltZS9pbnQpCisKK3N0
YXRpYyB1aW50MzJfdCBHZXRBdXh2YWwodWludDMyX3QgaHdjYXBfdHlwZSkgeworICByZXR1cm4g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdldGF1eHZhbChod2NhcF90eXBlKSk7Cit9CisKKyNlbmRp
ZgorCisvLyBPbiBhbmRyb2lkLCBwcm9iZSB0aGUgc3lzdGVtJ3MgQyBsaWJyYXJ5IGZvciBnZXRh
dXh2YWwoKS4KKy8vIFRoaXMgaXMgdGhlIHNhbWUgdGVjaG5pcXVlIHVzZWQgYnkgdGhlIGFuZHJv
aWQgTkRLIGNwdSBmZWF0dXJlcyBsaWJyYXJ5CisvLyBhcyB3ZWxsIGFzIHRoZSBnb29nbGUgb3Bl
bi1zb3VyY2UgY3B1X2ZlYXR1cmVzIGxpYnJhcnkuCisvLworLy8gVE9ETyhhYnNsLXRlYW0pOiBD
b25zaWRlciBpbXBsZW1lbnRpbmcgYSBmYWxsYmFjayBvZiBkaXJlY3RseSByZWFkaW5nCisvLyAv
cHJvYy9zZWxmL2F1eHZhbC4KKyNpZiBkZWZpbmVkKEFCU0xfSU5URVJOQUxfVVNFX0FORFJPSURf
R0VUQVVYVkFMKQorI2luY2x1ZGUgPGRsZmNuLmg+CisKK3N0YXRpYyB1aW50MzJfdCBHZXRBdXh2
YWwodWludDMyX3QgaHdjYXBfdHlwZSkgeworICAvLyBOT0xJTlRORVhUTElORShydW50aW1lL2lu
dCkKKyAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICgqZ2V0YXV4dmFsX2Z1bmNfdCkodW5zaWduZWQg
bG9uZyk7CisKKyAgZGxlcnJvcigpOyAgLy8gQ2xlYW5pbmcgZXJyb3Igc3RhdGUgYmVmb3JlIGNh
bGxpbmcgZGxvcGVuLgorICB2b2lkKiBsaWJjX2hhbmRsZSA9IGRsb3BlbigibGliYy5zbyIsIFJU
TERfTk9XKTsKKyAgaWYgKCFsaWJjX2hhbmRsZSkgeworICAgIHJldHVybiAwOworICB9CisgIHVp
bnQzMl90IHJlc3VsdCA9IDA7CisgIHZvaWQqIHN5bSA9IGRsc3ltKGxpYmNfaGFuZGxlLCAiZ2V0
YXV4dmFsIik7CisgIGlmIChzeW0pIHsKKyAgICBnZXRhdXh2YWxfZnVuY190IGZ1bmM7CisgICAg
bWVtY3B5KCZmdW5jLCAmc3ltLCBzaXplb2YoZnVuYykpOworICAgIHJlc3VsdCA9IHN0YXRpY19j
YXN0PHVpbnQzMl90PigoKmZ1bmMpKGh3Y2FwX3R5cGUpKTsKKyAgfQorICBkbGNsb3NlKGxpYmNf
aGFuZGxlKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmCisKK25hbWVzcGFjZSBhYnNs
IHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBUaGUgZGVmYXVsdCByZXR1cm4g
YXQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24gbWlnaHQgYmUgdW5yZWFjaGFibGUgZGVwZW5kaW5n
CisvLyBvbiB0aGUgY29uZmlndXJhdGlvbi4gSWdub3JlIHRoYXQgd2FybmluZy4KKyNpZiBkZWZp
bmVkKF9fY2xhbmdfXykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnJlYWNoYWJsZS1jb2RlLXJldHVybiIKKyNlbmRp
ZgorCisvLyBDUFVTdXBwb3J0c1JhbmRlbkh3QWVzIHJldHVybnMgd2hldGhlciB0aGUgQ1BVIGlz
IGEgbWljcm9hcmNoaXRlY3R1cmUKKy8vIHdoaWNoIHN1cHBvcnRzIHRoZSBjcnB5dG8vYWVzIGlu
c3RydWN0aW9ucyBvciBleHRlbnNpb25zIG5lY2Vzc2FyeSB0byB1c2UgdGhlCisvLyBhY2NlbGVy
YXRlZCBSYW5kZW5Id0FlcyBpbXBsZW1lbnRhdGlvbi4KKy8vCisvLyAxLiBGb3IgeDg2IGl0IGlz
IHN1ZmZpY2llbnQgdG8gdXNlIHRoZSBDUFVJRCBpbnN0cnVjdGlvbiB0byBkZXRlY3Qgd2hldGhl
cgorLy8gICAgdGhlIGNwdSBzdXBwb3J0cyBBRVMgaW5zdHJ1Y3Rpb25zLiBEb25lLgorLy8KKy8v
IEZvbiBub24teDg2IGl0IGlzIG11Y2ggbW9yZSBjb21wbGljYXRlZC4KKy8vCisvLyAyLiBXaGVu
IEFCU0xfSU5URVJOQUxfVVNFX0dFVEFVWFZBTCBpcyBkZWZpbmVkLCB1c2UgZ2V0YXV4dmFsKCkg
KGVpdGhlcgorLy8gICAgdGhlIGRpcmVjdCBjLWxpYnJhcnkgdmVyc2lvbiwgb3IgdGhlIGFuZHJv
aWQgcHJvYmluZyB2ZXJzaW9uIHdoaWNoIGxvYWRzCisvLyAgICBsaWJjKSwgYW5kIHJlYWQgdGhl
IGhhcmR3YXJlIGNhcGFiaWxpdHkgYml0cy4KKy8vICAgIFRoaXMgaXMgYmFzZWQgb24gdGhlIHRl
Y2huaXF1ZSB1c2VkIGJ5IGJvcmluZ3NzbCB1c2VzIHRvIGRldGVjdAorLy8gICAgY3B1IGNhcGFi
aWxpdGllcywgYW5kIHNob3VsZCBhbGxvdyB1cyB0byBlbmFibGUgY3J5cHRvIGluIHRoZSBhbmRy
b2lkCisvLyAgICBidWlsZHMgd2hlcmUgaXQgaXMgc3VwcG9ydGVkLgorLy8KKy8vIDMuIFVzZSB0
aGUgZGVmYXVsdCBmb3IgdGhlIGNvbXBpbGVyIGFyY2hpdGVjdHVyZS4KKy8vCisKK2Jvb2wgQ1BV
U3VwcG9ydHNSYW5kZW5Id0FlcygpIHsKKyNpZiBkZWZpbmVkKEFCU0xfSU5URVJOQUxfVVNFX1g4
Nl9DUFVJRCkKKyAgLy8gMS4gRm9yIHg4NjogVXNlIENQVUlEIHRvIGRldGVjdCB0aGUgcmVxdWly
ZWQgQUVTIGluc3RydWN0aW9uIHNldC4KKyAgaW50IHJlZ3NbNF07CisgIF9fY3B1aWQocmVpbnRl
cnByZXRfY2FzdDxpbnQqPihyZWdzKSwgMSk7CisgIHJldHVybiByZWdzWzJdICYgKDEgPDwgMjUp
OyAgLy8gQUVTCisKKyNlbGlmIGRlZmluZWQoQUJTTF9JTlRFUk5BTF9VU0VfR0VUQVVYVkFMKQor
ICAvLyAyLiBVc2UgZ2V0YXV4dmFsKCkgdG8gcmVhZCB0aGUgaGFyZHdhcmUgYml0cyBhbmQgZGV0
ZXJtaW5lCisgIC8vIGNwdSBjYXBhYmlsaXRpZXMuCisKKyNkZWZpbmUgQVRfSFdDQVAgMTYKKyNk
ZWZpbmUgQVRfSFdDQVAyIDI2CisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQorICAvLyBGb3Ig
UG93ZXIgLyBQUEM6IEV4cGVjdCB0aGF0IHRoZSBjcHUgc3VwcG9ydHMgVkNSWVBUTworICAvLyBT
ZWUgaHR0cHM6Ly9tZW1iZXJzLm9wZW5wb3dlcmZvdW5kYXRpb24ub3JnL2RvY3VtZW50L2RsLzU3
NgorICAvLyBWQ1JZUFRPIHNob3VsZCBiZSBwcmVzZW50IGluIFBPV0VSOCA+PSAyLjA3LgorICAv
LyBVc2VzIExpbnV4IGtlcm5lbCBjb25zdGFudHMgZnJvbSBhcmNoL3Bvd2VycGMvaW5jbHVkZS91
YXBpL2FzbS9jcHV0YWJsZS5oCisgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrVkNSWVBUTyA9IDB4
MDIwMDAwMDA7CisgIGNvbnN0IHVpbnQzMl90IGh3Y2FwID0gR2V0QXV4dmFsKEFUX0hXQ0FQMik7
CisgIHJldHVybiAoaHdjYXAgJiBrVkNSWVBUTykgIT0gMDsKKworI2VsaWYgZGVmaW5lZChBQlNM
X0FSQ0hfQVJNKQorICAvLyBGb3IgQVJNOiBSZXF1aXJlIGNyeXB0bytuZW9uCisgIC8vIGh0dHA6
Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC9pbmRleC5qc3A/dG9waWM9L2NvbS5hcm0uZG9jLmRk
aTA1MDBmL0NJSEJJQkJBLmh0bWwKKyAgLy8gVXNlcyBMaW51eCBrZXJuZWwgY29uc3RhbnRzIGZy
b20gYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od2NhcC5oCisgIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBrTkVPTiA9IDEgPDwgMTI7CisgIHVpbnQzMl90IGh3Y2FwID0gR2V0QXV4dmFsKEFUX0hXQ0FQ
KTsKKyAgaWYgKChod2NhcCAmIGtORU9OKSA9PSAwKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9
CisKKyAgLy8gQW5kIHVzZSBpdCBhZ2FpbiB0byBkZXRlY3QgQUVTLgorICBzdGF0aWMgY29uc3Qg
dWludDMyX3Qga0FFUyA9IDEgPDwgMDsKKyAgY29uc3QgdWludDMyX3QgaHdjYXAyID0gR2V0QXV4
dmFsKEFUX0hXQ0FQMik7CisgIHJldHVybiAoaHdjYXAyICYga0FFUykgIT0gMDsKKworI2VsaWYg
ZGVmaW5lZChBQlNMX0FSQ0hfQUFSQ0g2NCkKKyAgLy8gRm9yIEFBUkNINjQ6IFJlcXVpcmUgY3J5
cHRvK25lb24KKyAgLy8gaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL2luZGV4LmpzcD90
b3BpYz0vY29tLmFybS5kb2MuZGRpMDUwMGYvQ0lIQklCQkEuaHRtbAorICBzdGF0aWMgY29uc3Qg
dWludDMyX3Qga05FT04gPSAxIDw8IDE7CisgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrQUVTID0g
MSA8PCAzOworICBjb25zdCB1aW50MzJfdCBod2NhcCA9IEdldEF1eHZhbChBVF9IV0NBUCk7Cisg
IHJldHVybiAoKGh3Y2FwICYga05FT04pICE9IDApICYmICgoaHdjYXAgJiBrQUVTKSAhPSAwKTsK
KyNlbmRpZgorCisjZWxzZSAgLy8gQUJTTF9JTlRFUk5BTF9VU0VfR0VUQVVYVkFMCisgIC8vIDMu
IEJ5IGRlZmF1bHQsIGFzc3VtZSB0aGF0IHRoZSBjb21waWxlciBkZWZhdWx0LgorICByZXR1cm4g
QUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUyA/IHRydWUgOiBmYWxzZTsKKworI2VuZGlmCisgIC8v
IE5PVEU6IFRoZXJlIGFyZSBzb21lIG90aGVyIHRlY2huaXF1ZXMgdGhhdCBtYXkgYmUgd29ydGgg
dHJ5aW5nOgorICAvLworICAvLyAqIFVzZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZTogQUJTTF9S
QU5ET01fVVNFX0hXQUVTCisgIC8vCisgIC8vICogUmVseSBvbiBjb21waWxlci1nZW5lcmF0ZWQg
dGFyZ2V0LWJhc2VkIGRpc3BhdGNoLgorICAvLyBVc2luZyB4ODYvZ2NjIGl0IG1pZ2h0IGxvb2sg
c29tZXRoaW5nIGxpa2UgdGhpczoKKyAgLy8KKyAgLy8gaW50IF9fYXR0cmlidXRlX18oKHRhcmdl
dCgiYWVzIikpKSBIYXNBZXMoKSB7IHJldHVybiAxOyB9CisgIC8vIGludCBfX2F0dHJpYnV0ZV9f
KCh0YXJnZXQoImRlZmF1bHQiKSkpIEhhc0FlcygpIHsgcmV0dXJuIDA7IH0KKyAgLy8KKyAgLy8g
VGhpcyBkb2VzIG5vdCB3b3JrIG9uIGFsbCBhcmNoaXRlY3R1cmUvY29tcGlsZXIgY29tYmluYXRp
b25zLgorICAvLworICAvLyAqIE9uIExpbnV4IGNvbnNpZGVyIHJlYWRpbmcgL3Byb2MvY3B1aW5m
byBhbmQvb3IgL3Byb2Mvc2VsZi9hdXh2LgorICAvLyBUaGVzZSBmaWxlcyBoYXZlIGxpbmVzIHdo
aWNoIGFyZSBlYXN5IHRvIHBhcnNlOyBmb3IgQVJNL0FBUkNINjQgaXQgaXMgcXVpdGUKKyAgLy8g
ZWFzeSB0byBmaW5kIHRoZSBGZWF0dXJlczogbGluZSBhbmQgZXh0cmFjdCBhZXMgLyBuZW9uLiBM
aWtld2lzZSBmb3IKKyAgLy8gUFBDLgorICAvLworICAvLyAqIEZvcmsgYSBwcm9jZXNzIGFuZCB0
ZXN0IGZvciBTSUdJTEw6CisgIC8vCisgIC8vICogTWFueSBhcmNoaXRlY3R1cmVzIGhhdmUgaW5z
dHJ1Y3Rpb25zIHRvIHJlYWQgdGhlIElTQS4gVW5mb3J0dW5hdGVseQorICAvLyAgIG1vc3Qgb2Yg
dGhvc2UgcmVxdWlyZSB0aGF0IHRoZSBjb2RlIGlzIHJ1bm5pbmcgaW4gcmluZyAwIC8KKyAgLy8g
ICBwcm90ZWN0ZWQtbW9kZS4KKyAgLy8KKyAgLy8gICBUaGVyZSBhcmUgc2V2ZXJhbCBleGFtcGxl
cy4gZS5nLiBWYWxncmluZCBkZXRlY3RzIFBQQyBJU0EgMi4wNzoKKyAgLy8gICBodHRwczovL2dp
dGh1Yi5jb20vbHUtemVyby92YWxncmluZC9ibG9iL21hc3Rlci9ub25lL3Rlc3RzL3BwYzY0L3Rl
c3RfaXNhXzJfMDdfcGFydDEuYworICAvLworICAvLyAgIE1SUyA8WHQ+LCBJRF9BQTY0SVNBUjBf
RUwxIDsgUmVhZCBJRF9BQTY0SVNBUjBfRUwxIGludG8gWHQKKyAgLy8KKyAgLy8gICB1aW50NjRf
dCB2YWw7CisgIC8vICAgX19hc20gX192b2xhdGlsZSgibXJzICUwLCBpZF9hYTY0aXNhcjBfZWwx
IiA6Ij0mciIgKHZhbCkpOworICAvLworICAvLyAqIFVzZSBhIENQVUlELXN0eWxlIGhldXJpc3Rp
YyBkYXRhYmFzZS4KKyAgLy8KKyAgLy8gKiBPbiBBcHBsZSAoX19BUFBMRV9fKSwgQUVTIGlzIGF2
YWlsYWJsZSBvbiBBcm0gdjguCisgIC8vICAgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVz
dGlvbnMvNDU2Mzc4ODgvaG93LXRvLWRldGVybWluZS1hcm12OC1mZWF0dXJlcy1hdC1ydW50aW1l
LW9uLWlvcworfQorCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcG9wCisjZW5kaWYKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5k
ZW5fZGV0ZWN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2RldGVjdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40NGM1YzY2NzIzOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZGV0ZWN0LmgKQEAgLTAsMCAr
MSwyOSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5k
ZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0RFVEVDVF9IXworI2RlZmluZSBBQlNMX1JB
TkRPTV9JTlRFUk5BTF9SQU5ERU5fREVURUNUX0hfCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGN1cnJlbnQg
Q1BVIHN1cHBvcnRzIFJhbmRlbkh3QWVzIGltcGxlbWVudGF0aW9uLgorLy8gVGhpcyB0eXBpY2Fs
bHkgaW52b2x2ZXMgc3VwcG9ydGluZyBjcnlwdG9ncmFwaGljIGV4dGVuc2lvbnMgb24gd2hpY2hl
dmVyCisvLyBwbGF0Zm9ybSBpcyBjdXJyZW50bHkgcnVubmluZy4KK2Jvb2wgQ1BVU3VwcG9ydHNS
YW5kZW5Id0FlcygpOworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9E
RVRFQ1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZW5naW5l
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2VuZ2luZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMjIxMmExMzdjMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZW5naW5lLmgKQEAgLTAsMCArMSwyMjggQEAK
Ky8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xf
UkFORE9NX0lOVEVSTkFMX1JBTkRFTl9FTkdJTkVfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5U
RVJOQUxfUkFOREVOX0VOR0lORV9IXworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGNpbnR0eXBlcz4KKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2lu
Y2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KKworI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wv
cmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyLmgiCisjaW5jbHVkZSAiYWJzbC9y
YW5kb20vaW50ZXJuYWwvcmFuZGVuLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBy
YW5kb21faW50ZXJuYWwgeworCisvLyBEZXRlcm1pbmlzdGljIHBzZXVkb3JhbmRvbSBieXRlIGdl
bmVyYXRvciB3aXRoIGJhY2t0cmFja2luZyByZXNpc3RhbmNlCisvLyAobGVha2luZyB0aGUgc3Rh
dGUgZG9lcyBub3QgY29tcHJvbWlzZSBwcmlvciBvdXRwdXRzKS4gQmFzZWQgb24gUmV2ZXJpZQor
Ly8gKHNlZSAiQSBSb2J1c3QgYW5kIFNwb25nZS1MaWtlIFBSTkcgd2l0aCBJbXByb3ZlZCBFZmZp
Y2llbmN5IikgaW5zdGFudGlhdGVkCisvLyB3aXRoIGFuIGltcHJvdmVkIFNpbXBpcmEtbGlrZSBw
ZXJtdXRhdGlvbi4KKy8vIFJldHVybnMgdmFsdWVzIG9mIHR5cGUgIlQiIChtdXN0IGJlIGEgYnVp
bHQtaW4gdW5zaWduZWQgaW50ZWdlciB0eXBlKS4KKy8vCisvLyBSQU5EZW4gPSBSQU5Eb20gZ2Vu
ZXJhdG9yIG9yIGJlZXRyb290cyBpbiBTd2lzcyBIaWdoIEdlcm1hbi4KKy8vICdTdHJvbmcnICh3
ZWxsLWRpc3RyaWJ1dGVkLCB1bnByZWRpY3RhYmxlLCBiYWNrdHJhY2tpbmctcmVzaXN0YW50KSBy
YW5kb20KKy8vIGdlbmVyYXRvciwgZmFzdGVyIGluIHNvbWUgYmVuY2htYXJrcyB0aGFuIHN0ZDo6
bXQxOTkzN182NCBhbmQgcGNnNjRfYzMyLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBh
bGlnbmFzKDE2KSByYW5kZW5fZW5naW5lIHsKKyBwdWJsaWM6CisgIC8vIEMrKzExIFVSQkcgaW50
ZXJmYWNlOgorICB1c2luZyByZXN1bHRfdHlwZSA9IFQ7CisgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c191bnNpZ25lZDxyZXN1bHRfdHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJyYW5kZW5f
ZW5naW5lIHRlbXBsYXRlIGFyZ3VtZW50IG11c3QgYmUgYSBidWlsdC1pbiB1bnNpZ25lZCAiCisg
ICAgICAgICAgICAgICAgImludGVnZXIgdHlwZSIpOworCisgIHN0YXRpYyBjb25zdGV4cHIgcmVz
dWx0X3R5cGUobWluKSgpIHsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0
X3R5cGU+OjptaW4pKCk7CisgIH0KKworICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1h
eCkoKSB7CisgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4
KSgpOworICB9CisKKyAgZXhwbGljaXQgcmFuZGVuX2VuZ2luZShyZXN1bHRfdHlwZSBzZWVkX3Zh
bHVlID0gMCkgeyBzZWVkKHNlZWRfdmFsdWUpOyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFNlZWRT
ZXF1ZW5jZSwKKyAgICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lm
X3Q8CisgICAgICAgICAgICAgICAgIXN0ZDo6aXNfc2FtZTxTZWVkU2VxdWVuY2UsIHJhbmRlbl9l
bmdpbmU+Ojp2YWx1ZT4+CisgIGV4cGxpY2l0IHJhbmRlbl9lbmdpbmUoU2VlZFNlcXVlbmNlJiYg
c2VxKSB7CisgICAgc2VlZChzZXEpOworICB9CisKKyAgcmFuZGVuX2VuZ2luZShjb25zdCByYW5k
ZW5fZW5naW5lJikgPSBkZWZhdWx0OworCisgIC8vIFJldHVybnMgcmFuZG9tIGJpdHMgZnJvbSB0
aGUgYnVmZmVyIGluIHVuaXRzIG9mIHJlc3VsdF90eXBlLgorICByZXN1bHRfdHlwZSBvcGVyYXRv
cigpKCkgeworICAgIC8vIFJlZmlsbCB0aGUgYnVmZmVyIGlmIG5lZWRlZCAodW5saWtlbHkpLgor
ICAgIGlmIChuZXh0XyA+PSBrU3RhdGVTaXplVCkgeworICAgICAgbmV4dF8gPSBrQ2FwYWNpdHlU
OworICAgICAgaW1wbF8uR2VuZXJhdGUoc3RhdGVfKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3Rh
dGVfW25leHRfKytdOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFNlZWRTZXF1ZW5jZT4KKyAg
dHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICAhc3RkOjppc19jb252ZXJ0aWJsZTxT
ZWVkU2VxdWVuY2UsIHJlc3VsdF90eXBlPjo6dmFsdWU+CisgIHNlZWQoU2VlZFNlcXVlbmNlJiYg
c2VxKSB7CisgICAgLy8gWmVyb2VzIHRoZSBzdGF0ZS4KKyAgICBzZWVkKCk7CisgICAgcmVzZWVk
KHNlcSk7CisgIH0KKworICB2b2lkIHNlZWQocmVzdWx0X3R5cGUgc2VlZF92YWx1ZSA9IDApIHsK
KyAgICBuZXh0XyA9IGtTdGF0ZVNpemVUOworICAgIC8vIFplcm9lcyB0aGUgaW5uZXIgc3RhdGUg
YW5kIGZpbGxzIHRoZSBvdXRlciBzdGF0ZSB3aXRoIHNlZWRfdmFsdWUgdG8KKyAgICAvLyBtaW1p
Y3MgYmVoYXZpb3VyIG9mIHJlc2VlZAorICAgIHN0ZDo6ZmlsbChzdGQ6OmJlZ2luKHN0YXRlXyks
IHN0ZDo6YmVnaW4oc3RhdGVfKSArIGtDYXBhY2l0eVQsIDApOworICAgIHN0ZDo6ZmlsbChzdGQ6
OmJlZ2luKHN0YXRlXykgKyBrQ2FwYWNpdHlULCBzdGQ6OmVuZChzdGF0ZV8pLCBzZWVkX3ZhbHVl
KTsKKyAgfQorCisgIC8vIEluc2VydHMgZW50cm9weSBpbnRvIChwYXJ0IG9mKSB0aGUgc3RhdGUu
IENhbGxpbmcgdGhpcyBwZXJpb2RpY2FsbHkgd2l0aAorICAvLyBzdWZmaWNpZW50IGVudHJvcHkg
ZW5zdXJlcyBwcmVkaWN0aW9uIHJlc2lzdGFuY2UgKGF0dGFja2VycyBjYW5ub3QgcHJlZGljdAor
ICAvLyBmdXR1cmUgb3V0cHV0cyBldmVuIGlmIHN0YXRlIGlzIGNvbXByb21pc2VkKS4KKyAgdGVt
cGxhdGUgPGNsYXNzIFNlZWRTZXF1ZW5jZT4KKyAgdm9pZCByZXNlZWQoU2VlZFNlcXVlbmNlJiBz
ZXEpIHsKKyAgICB1c2luZyBzZXF1ZW5jZV9yZXN1bHRfdHlwZSA9IHR5cGVuYW1lIFNlZWRTZXF1
ZW5jZTo6cmVzdWx0X3R5cGU7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yoc2VxdWVuY2VfcmVz
dWx0X3R5cGUpID09IDQsCisgICAgICAgICAgICAgICAgICAiU2VlZFNlcXVlbmNlOjpyZXN1bHRf
dHlwZSBtdXN0IGJlIDMyLWJpdCIpOworCisgICAgY29uc3RleHByIHNpemVfdCBrQnVmZmVyU2l6
ZSA9CisgICAgICAgIFJhbmRlbjo6a1NlZWRCeXRlcyAvIHNpemVvZihzZXF1ZW5jZV9yZXN1bHRf
dHlwZSk7CisgICAgYWxpZ25hcygxNikgc2VxdWVuY2VfcmVzdWx0X3R5cGUgYnVmZmVyW2tCdWZm
ZXJTaXplXTsKKworICAgIC8vIFJhbmRlbjo6QWJzb3JiIFhPUnMgdGhlIHNlZWQgaW50byBzdGF0
ZSwgd2hpY2ggaXMgdGhlbiBtaXhlZCBieSBhIGNhbGwKKyAgICAvLyB0byBSYW5kZW46OkdlbmVy
YXRlLiBTZWVkaW5nIHdpdGggb25seSB0aGUgcHJvdmlkZWQgZW50cm9weSBpcyBwcmVmZXJyZWQK
KyAgICAvLyB0byB1c2luZyBhbiBhcmJpdHJhcnkgZ2VuZXJhdGUoKSBjYWxsLCBzbyB1c2UgW3Jh
bmQucmVxLnNlZWRfc2VxXQorICAgIC8vIHNpemUgYXMgYSBwcm94eSBmb3IgdGhlIG51bWJlciBv
ZiBlbnRyb3B5IHVuaXRzIHRoYXQgY2FuIGJlIGdlbmVyYXRlZAorICAgIC8vIHdpdGhvdXQgcmVs
eWluZyBvbiBzZWVkIHNlcXVlbmNlIG1peGluZy4uLgorICAgIGNvbnN0IHNpemVfdCBlbnRyb3B5
X3NpemUgPSBzZXEuc2l6ZSgpOworICAgIGlmIChlbnRyb3B5X3NpemUgPCBrQnVmZmVyU2l6ZSkg
eworICAgICAgLy8gLi4uIGFuZCBvbmx5IHJlcXVlc3QgdGhhdCBtYW55IHZhbHVlcywgb3IgMjU2
LWJpdHMsIHdoZW4gdW5zcGVjaWZpZWQuCisgICAgICBjb25zdCBzaXplX3QgcmVxdWVzdGVkX2Vu
dHJvcHkgPSAoZW50cm9weV9zaXplID09IDApID8gOHUgOiBlbnRyb3B5X3NpemU7CisgICAgICBz
dGQ6OmZpbGwoc3RkOjpiZWdpbihidWZmZXIpICsgcmVxdWVzdGVkX2VudHJvcHksIHN0ZDo6ZW5k
KGJ1ZmZlciksIDApOworICAgICAgc2VxLmdlbmVyYXRlKHN0ZDo6YmVnaW4oYnVmZmVyKSwgc3Rk
OjpiZWdpbihidWZmZXIpICsgcmVxdWVzdGVkX2VudHJvcHkpOworICAgICAgLy8gVGhlIFJhbmRl
biBwYXBlciBzdWdnZXN0cyBwcmVmZXJlbnRpYWxseSBpbml0aWFsaXppbmcgZXZlbi1udW1iZXJl
ZAorICAgICAgLy8gMTI4LWJpdCB2ZWN0b3JzIG9mIHRoZSByYW5kZW4gc3RhdGUgKHRoZXJlIGFy
ZSAxNiBzdWNoIHZlY3RvcnMpLgorICAgICAgLy8gVGhlIHNlZWQgZGF0YSBpcyBtZXJnZWQgaW50
byB0aGUgc3RhdGUgb2Zmc2V0IGJ5IDEyOC1iaXRzLCB3aGljaAorICAgICAgLy8gaW1wbGllcyBw
cmVmZXJpbmcgc2VlZCBieXRlcyBbMTYuLjMxLCAuLi4sIDIwOC4uMjIzXS4gU2luY2UgdGhlCisg
ICAgICAvLyBidWZmZXIgaXMgMzItYml0IHZhbHVlcywgd2Ugc3dhcCB0aGUgY29ycmVzcG9uZGlu
ZyBidWZmZXIgcG9zaXRpb25zIGluCisgICAgICAvLyAxMjgtYml0IGNodW5rcy4KKyAgICAgIHNp
emVfdCBkc3QgPSBrQnVmZmVyU2l6ZTsKKyAgICAgIHdoaWxlIChkc3QgPiA3KSB7CisgICAgICAg
IC8vIGxlYXZlIHRoZSBvZGQgYnVja2V0IGFzLWlzLgorICAgICAgICBkc3QgLT0gNDsKKyAgICAg
ICAgc2l6ZV90IHNyYyA9IGRzdCA+PiAxOworICAgICAgICAvLyBzd2FwIDEyOC1iaXRzIGludG8g
dGhlIGV2ZW4gYnVja2V0CisgICAgICAgIHN0ZDo6c3dhcChidWZmZXJbLS1kc3RdLCBidWZmZXJb
LS1zcmNdKTsKKyAgICAgICAgc3RkOjpzd2FwKGJ1ZmZlclstLWRzdF0sIGJ1ZmZlclstLXNyY10p
OworICAgICAgICBzdGQ6OnN3YXAoYnVmZmVyWy0tZHN0XSwgYnVmZmVyWy0tc3JjXSk7CisgICAg
ICAgIHN0ZDo6c3dhcChidWZmZXJbLS1kc3RdLCBidWZmZXJbLS1zcmNdKTsKKyAgICAgIH0KKyAg
ICB9IGVsc2UgeworICAgICAgc2VxLmdlbmVyYXRlKHN0ZDo6YmVnaW4oYnVmZmVyKSwgc3RkOjpl
bmQoYnVmZmVyKSk7CisgICAgfQorICAgIGltcGxfLkFic29yYihidWZmZXIsIHN0YXRlXyk7CisK
KyAgICAvLyBHZW5lcmF0ZSB3aWxsIGJlIGNhbGxlZCB3aGVuIG9wZXJhdG9yKCkgaXMgY2FsbGVk
CisgICAgbmV4dF8gPSBrU3RhdGVTaXplVDsKKyAgfQorCisgIHZvaWQgZGlzY2FyZCh1aW50NjRf
dCBjb3VudCkgeworICAgIHVpbnQ2NF90IHN0ZXAgPSBzdGQ6Om1pbjx1aW50NjRfdD4oa1N0YXRl
U2l6ZVQgLSBuZXh0XywgY291bnQpOworICAgIGNvdW50IC09IHN0ZXA7CisKKyAgICBjb25zdGV4
cHIgdWludDY0X3Qga1JhdGVUID0ga1N0YXRlU2l6ZVQgLSBrQ2FwYWNpdHlUOworICAgIHdoaWxl
IChjb3VudCA+IDApIHsKKyAgICAgIG5leHRfID0ga0NhcGFjaXR5VDsKKyAgICAgIGltcGxfLkdl
bmVyYXRlKHN0YXRlXyk7CisgICAgICBzdGVwID0gc3RkOjptaW48dWludDY0X3Q+KGtSYXRlVCwg
Y291bnQpOworICAgICAgY291bnQgLT0gc3RlcDsKKyAgICB9CisgICAgbmV4dF8gKz0gc3RlcDsK
KyAgfQorCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCByYW5kZW5fZW5naW5lJiBvdGhlcikgY29u
c3QgeworICAgIHJldHVybiBuZXh0XyA9PSBvdGhlci5uZXh0XyAmJgorICAgICAgICAgICBzdGQ6
OmVxdWFsKHN0ZDo6YmVnaW4oc3RhdGVfKSwgc3RkOjplbmQoc3RhdGVfKSwKKyAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmJlZ2luKG90aGVyLnN0YXRlXykpOworICB9CisKKyAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IHJhbmRlbl9lbmdpbmUmIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIENoYXJULCBjbGFzcyBU
cmFpdHM+CisgIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJh
dG9yPDwoCisgICAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9zLCAgLy8g
Tk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgIGNvbnN0IHJhbmRlbl9lbmdpbmU8VD4m
IGVuZ2luZSkgeyAgICAgICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHVzaW5n
IG51bWVyaWNfdHlwZSA9CisgICAgICAgIHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFt
X2Zvcm1hdF90eXBlPHJlc3VsdF90eXBlPjo6dHlwZTsKKyAgICBhdXRvIHNhdmVyID0gcmFuZG9t
X2ludGVybmFsOjptYWtlX29zdHJlYW1fc3RhdGVfc2F2ZXIob3MpOworICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbSA6IGVuZ2luZS5zdGF0ZV8pIHsKKyAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQg
YGVsZW1gIGlzIGB1aW50OF90YCwgaXQgbXVzdCBiZSBjYXN0IHRvIHNvbWV0aGluZworICAgICAg
Ly8gbGFyZ2VyIHNvIHRoYXQgaXQgcHJpbnRzIGFzIGFuIGludGVnZXIgcmF0aGVyIHRoYW4gYSBj
aGFyYWN0ZXIuIEZvcgorICAgICAgLy8gc2ltcGxpY2l0eSwgYXBwbHkgdGhlIGNhc3QgYWxsIGNp
cmN1bXN0YW5jZXMuCisgICAgICBvcyA8PCBzdGF0aWNfY2FzdDxudW1lcmljX3R5cGU+KGVsZW0p
IDw8IG9zLmZpbGwoKTsKKyAgICB9CisgICAgb3MgPDwgZW5naW5lLm5leHRfOworICAgIHJldHVy
biBvczsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgorICBm
cmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcj4+KAorICAg
ICAgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBpcywgIC8vIE5PTElOVChydW50
aW1lL3JlZmVyZW5jZXMpCisgICAgICByYW5kZW5fZW5naW5lPFQ+JiBlbmdpbmUpIHsgICAgICAg
ICAgICAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICB1c2luZyBudW1lcmljX3R5
cGUgPQorICAgICAgICB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OnN0cmVhbV9mb3JtYXRfdHlw
ZTxyZXN1bHRfdHlwZT46OnR5cGU7CisgICAgcmVzdWx0X3R5cGUgc3RhdGVba1N0YXRlU2l6ZVRd
OworICAgIHNpemVfdCBuZXh0OworICAgIGZvciAoYXV0byYgZWxlbSA6IHN0YXRlKSB7CisgICAg
ICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gcmVhZCB1aW50OF90IGZyb20gd2lkZSBzdHJlYW1z
LCBzbyBpdCBpcworICAgICAgLy8gbmVjZXNzYXJ5IHRvIHJlYWQgYSB3aWRlciB0eXBlIGFuZCB0
aGVuIGNhc3QgaXQgdG8gdWludDhfdC4KKyAgICAgIG51bWVyaWNfdHlwZSB2YWx1ZTsKKyAgICAg
IGlzID4+IHZhbHVlOworICAgICAgZWxlbSA9IHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPih2YWx1
ZSk7CisgICAgfQorICAgIGlzID4+IG5leHQ7CisgICAgaWYgKGlzLmZhaWwoKSkgeworICAgICAg
cmV0dXJuIGlzOworICAgIH0KKyAgICBzdGQ6Om1lbWNweShlbmdpbmUuc3RhdGVfLCBzdGF0ZSwg
c2l6ZW9mKGVuZ2luZS5zdGF0ZV8pKTsKKyAgICBlbmdpbmUubmV4dF8gPSBuZXh0OworICAgIHJl
dHVybiBpczsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N0
YXRlU2l6ZVQgPQorICAgICAgUmFuZGVuOjprU3RhdGVCeXRlcyAvIHNpemVvZihyZXN1bHRfdHlw
ZSk7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtDYXBhY2l0eVQgPQorICAgICAgUmFuZGVu
OjprQ2FwYWNpdHlCeXRlcyAvIHNpemVvZihyZXN1bHRfdHlwZSk7CisKKyAgLy8gRmlyc3Qga0Nh
cGFjaXR5VCBhcmUgYGlubmVyJywgdGhlIG90aGVycyBhcmUgYWNjZXNzaWJsZSByYW5kb20gYml0
cy4KKyAgYWxpZ25hcygxNikgcmVzdWx0X3R5cGUgc3RhdGVfW2tTdGF0ZVNpemVUXTsKKyAgc2l6
ZV90IG5leHRfOyAgLy8gaW5kZXggd2l0aGluIHN0YXRlXworICBSYW5kZW4gaW1wbF87Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAor
CisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9FTkdJTkVfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZW5naW5lX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2VuZ2luZV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jOGU3Njg1YmRkYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZW5naW5lX3Rlc3QuY2MKQEAgLTAsMCArMSw2NTYg
QEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2VuZ2luZS5oIgorCisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPGJpdHNldD4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3N0
cmVhbT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcS5oIgorI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC90aW1lL2Nsb2NrLmgiCisKKyNk
ZWZpbmUgVVBEQVRFX0dPTERFTiAwCisKK3VzaW5nIHJhbmRlbl91NjQgPSBhYnNsOjpyYW5kb21f
aW50ZXJuYWw6OnJhbmRlbl9lbmdpbmU8dWludDY0X3Q+OwordXNpbmcgcmFuZGVuX3UzMiA9IGFi
c2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTx1aW50MzJfdD47Cit1c2luZyBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OkV4cGxpY2l0U2VlZFNlcTsKKworbmFtZXNwYWNlIHsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgorY2xhc3MgUmFuZGVuRW5naW5lVHlwZWRUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKwordXNpbmcgVUludFR5cGVzID0gOjp0ZXN0aW5n
OjpUeXBlczx1aW50OF90LCB1aW50MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90PjsKKworVFlQRURf
VEVTVF9TVUlURShSYW5kZW5FbmdpbmVUeXBlZFRlc3QsIFVJbnRUeXBlcyk7CisKK1RZUEVEX1RF
U1QoUmFuZGVuRW5naW5lVHlwZWRUZXN0LCBWZXJpZnlSZXNlZWRDaGFuZ2VzQWxsVmFsdWVzKSB7
CisgIHVzaW5nIHJhbmRlbiA9IHR5cGVuYW1lIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVu
X2VuZ2luZTxUeXBlUGFyYW0+OworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIHJhbmRl
bjo6cmVzdWx0X3R5cGU7CisKKyAgY29uc3Qgc2l6ZV90IGtOdW1PdXRwdXRzID0gKHNpemVvZihy
YW5kZW4pICogMiAvIHNpemVvZihUeXBlUGFyYW0pKSArIDE7CisgIHJhbmRlbiBlbmdpbmU7CisK
KyAgLy8gTVNWQyBlbWl0cyBlcnJvciAyNzE5IHdpdGhvdXQgdGhlIHVzZSBvZiBzdGQ6OnJlZiBi
ZWxvdy4KKyAgLy8gICogZm9ybWFsIHBhcmFtZXRlciB3aXRoIF9fZGVjbHNwZWMoYWxpZ24oJyMn
KSkgd29uJ3QgYmUgYWxpZ25lZAorCisgIHsKKyAgICBzdGQ6OnNlZWRfc2VxIHNlcTF7MSwgMiwg
MywgNCwgNSwgNiwgN307CisgICAgZW5naW5lLnNlZWQoc2VxMSk7CisgIH0KKyAgcmVzdWx0X3R5
cGUgYVtrTnVtT3V0cHV0c107CisgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdpbihhKSwgc3RkOjpl
bmQoYSksIHN0ZDo6cmVmKGVuZ2luZSkpOworCisgIHsKKyAgICBzdGQ6OnJhbmRvbV9kZXZpY2Ug
cmQ7CisgICAgc3RkOjpzZWVkX3NlcSBzZXEye3JkKCksIHJkKCksIHJkKCl9OworICAgIGVuZ2lu
ZS5zZWVkKHNlcTIpOworICB9CisgIHJlc3VsdF90eXBlIGJba051bU91dHB1dHNdOworICBzdGQ6
OmdlbmVyYXRlKHN0ZDo6YmVnaW4oYiksIHN0ZDo6ZW5kKGIpLCBzdGQ6OnJlZihlbmdpbmUpKTsK
KworICAvLyBUZXN0IHRoYXQgZ2VuZXJhdGVkIHNlcXVlbmNlIGNoYW5nZWQgYXMgc2VxdWVuY2Ug
b2YgYml0cywgaS5lLiBpZiBhYm91dAorICAvLyBoYWxmIG9mIHRoZSBiaXRlcyB3ZXJlIGZsaXBw
ZWQgYmV0d2VlbiB0d28gbm9uLWNvcnJlbGF0ZWQgdmFsdWVzLgorICBzaXplX3QgY2hhbmdlZF9i
aXRzID0gMDsKKyAgc2l6ZV90IHVuY2hhbmdlZF9iaXRzID0gMDsKKyAgc2l6ZV90IHRvdGFsX3Nl
dCA9IDA7CisgIHNpemVfdCB0b3RhbF9iaXRzID0gMDsKKyAgc2l6ZV90IGVxdWFsX2NvdW50ID0g
MDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtT3V0cHV0czsgKytpKSB7CisgICAgZXF1
YWxfY291bnQgKz0gKGFbaV0gPT0gYltpXSkgPyAxIDogMDsKKyAgICBzdGQ6OmJpdHNldDxzaXpl
b2YocmVzdWx0X3R5cGUpICogOD4gYml0c2V0KGFbaV0gXiBiW2ldKTsKKyAgICBjaGFuZ2VkX2Jp
dHMgKz0gYml0c2V0LmNvdW50KCk7CisgICAgdW5jaGFuZ2VkX2JpdHMgKz0gYml0c2V0LnNpemUo
KSAtIGJpdHNldC5jb3VudCgpOworCisgICAgc3RkOjpiaXRzZXQ8c2l6ZW9mKHJlc3VsdF90eXBl
KSAqIDg+IGFfc2V0KGFbaV0pOworICAgIHN0ZDo6Yml0c2V0PHNpemVvZihyZXN1bHRfdHlwZSkg
KiA4PiBiX3NldChiW2ldKTsKKyAgICB0b3RhbF9zZXQgKz0gYV9zZXQuY291bnQoKSArIGJfc2V0
LmNvdW50KCk7CisgICAgdG90YWxfYml0cyArPSAyICogOCAqIHNpemVvZihyZXN1bHRfdHlwZSk7
CisgIH0KKyAgLy8gT24gYXZlcmFnZSwgaGFsZiB0aGUgYml0cyBhcmUgY2hhbmdlZCBiZXR3ZWVu
IHR3byBjYWxscy4KKyAgRVhQRUNUX0xFKGNoYW5nZWRfYml0cywgMC42MCAqIChjaGFuZ2VkX2Jp
dHMgKyB1bmNoYW5nZWRfYml0cykpOworICBFWFBFQ1RfR0UoY2hhbmdlZF9iaXRzLCAwLjQwICog
KGNoYW5nZWRfYml0cyArIHVuY2hhbmdlZF9iaXRzKSk7CisKKyAgLy8gVmVyaWZ5IHVzaW5nIGEg
cXVpY2sgbm9ybWFsLWFwcHJveGltYXRpb24gdG8gdGhlIGJpbm9taWFsLgorICBFWFBFQ1RfTkVB
Uih0b3RhbF9zZXQsIHRvdGFsX2JpdHMgKiAwLjUsIDQgKiBzdGQ6OnNxcnQodG90YWxfYml0cykp
CisgICAgICA8PCAiQCIgPDwgdG90YWxfc2V0IC8gc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbF9i
aXRzKTsKKworICAvLyBBbHNvLCBBW2ldID09IEJbaV0gd2l0aCBwcm9iYWJpbGl0eSAoMS9yYW5n
ZSkgKiBOLgorICAvLyBHaXZlIHRoaXMgYSBwcmV0dHkgd2lkZSBsYXRpdHVkZSwgdGhvdWdoLgor
ICBjb25zdCBkb3VibGUga0V4cGVjdGVkID0ga051bU91dHB1dHMgLyAoMS4wICogc2l6ZW9mKHJl
c3VsdF90eXBlKSAqIDgpOworICBFWFBFQ1RfTEUoZXF1YWxfY291bnQsIDEuMCArIGtFeHBlY3Rl
ZCk7Cit9CisKKy8vIE51bWJlciBvZiB2YWx1ZXMgdGhhdCBuZWVkcyB0byBiZSBjb25zdW1lZCB0
byBjbGVhbiB0d28gc2l6ZXMgb2YgYnVmZmVyCisvLyBhbmQgdHJpZ2dlciB0aGlyZCByZWZyZXNo
LiAoc2xpZ2h0bHkgb3ZlcmVzdGltYXRlcyB0aGUgYWN0dWFsIHN0YXRlIHNpemUpLgorY29uc3Rl
eHByIHNpemVfdCBrVHdvQnVmZmVyVmFsdWVzID0gc2l6ZW9mKHJhbmRlbl91NjQpIC8gc2l6ZW9m
KHVpbnQxNl90KSArIDE7CisKK1RZUEVEX1RFU1QoUmFuZGVuRW5naW5lVHlwZWRUZXN0LCBWZXJp
ZnlEaXNjYXJkKSB7CisgIHVzaW5nIHJhbmRlbiA9IHR5cGVuYW1lIGFic2w6OnJhbmRvbV9pbnRl
cm5hbDo6cmFuZGVuX2VuZ2luZTxUeXBlUGFyYW0+OworCisgIGZvciAoc2l6ZV90IG51bV91c2Vk
ID0gMDsgbnVtX3VzZWQgPCBrVHdvQnVmZmVyVmFsdWVzOyArK251bV91c2VkKSB7CisgICAgcmFu
ZGVuIGVuZ2luZV91c2VkOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX3VzZWQ7ICsr
aSkgeworICAgICAgZW5naW5lX3VzZWQoKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBudW1f
ZGlzY2FyZCA9IDA7IG51bV9kaXNjYXJkIDwga1R3b0J1ZmZlclZhbHVlczsKKyAgICAgICAgICsr
bnVtX2Rpc2NhcmQpIHsKKyAgICAgIHJhbmRlbiBlbmdpbmUxID0gZW5naW5lX3VzZWQ7CisgICAg
ICByYW5kZW4gZW5naW5lMiA9IGVuZ2luZV91c2VkOworICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1fZGlzY2FyZDsgKytpKSB7CisgICAgICAgIGVuZ2luZTEoKTsKKyAgICAgIH0KKyAg
ICAgIGVuZ2luZTIuZGlzY2FyZChudW1fZGlzY2FyZCk7CisgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGtUd29CdWZmZXJWYWx1ZXM7ICsraSkgeworICAgICAgICBjb25zdCBhdXRvIHIxID0g
ZW5naW5lMSgpOworICAgICAgICBjb25zdCBhdXRvIHIyID0gZW5naW5lMigpOworICAgICAgICBB
U1NFUlRfRVEocjEsIHIyKSA8PCAidXNlZD0iIDw8IG51bV91c2VkIDw8ICIgZGlzY2FyZD0iIDw8
IG51bV9kaXNjYXJkOworICAgICAgfQorICAgIH0KKyAgfQorfQorCitUWVBFRF9URVNUKFJhbmRl
bkVuZ2luZVR5cGVkVGVzdCwgU3RyZWFtT3BlcmF0b3JzUmVzdWx0KSB7CisgIHVzaW5nIHJhbmRl
biA9IHR5cGVuYW1lIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTxUeXBlUGFy
YW0+OworICBzdGQ6Ondvc3RyaW5nc3RyZWFtIG9zOworICBzdGQ6Ondpc3RyaW5nc3RyZWFtIGlz
OworICByYW5kZW4gZW5naW5lOworCisgIEVYUEVDVF9FUSgmKG9zIDw8IGVuZ2luZSksICZvcyk7
CisgIEVYUEVDVF9FUSgmKGlzID4+IGVuZ2luZSksICZpcyk7Cit9CisKK1RZUEVEX1RFU1QoUmFu
ZGVuRW5naW5lVHlwZWRUZXN0LCBTdHJlYW1TZXJpYWxpemF0aW9uKSB7CisgIHVzaW5nIHJhbmRl
biA9IHR5cGVuYW1lIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTxUeXBlUGFy
YW0+OworCisgIGZvciAoc2l6ZV90IGRpc2NhcmQgPSAwOyBkaXNjYXJkIDwga1R3b0J1ZmZlclZh
bHVlczsgKytkaXNjYXJkKSB7CisgICAgRXhwbGljaXRTZWVkU2VxIHNlZWRfc2VxdWVuY2V7MTIs
IDM0LCA1Nn07CisgICAgcmFuZGVuIGVuZ2luZShzZWVkX3NlcXVlbmNlKTsKKyAgICBlbmdpbmUu
ZGlzY2FyZChkaXNjYXJkKTsKKworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgICBz
dHJlYW0gPDwgZW5naW5lOworCisgICAgcmFuZGVuIG5ld19lbmdpbmU7CisgICAgc3RyZWFtID4+
IG5ld19lbmdpbmU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA2NDsgKytpKSB7CisgICAg
ICBFWFBFQ1RfRVEoZW5naW5lKCksIG5ld19lbmdpbmUoKSkgPDwgIiAiIDw8IGk7CisgICAgfQor
ICB9Cit9CisKK2NvbnN0ZXhwciBzaXplX3Qga051bUdvbGRlbk91dHB1dHMgPSAxMjc7CisKKy8v
IFRoaXMgdGVzdCBpcyBjaGVja2luZyBpZiByYW5kZW5fZW5naW5lIGlzIG1lZXRzIGludGVyZmFj
ZSByZXF1aXJlbWVudHMKKy8vIGRlZmluZWQgaW4gW3JhbmQucmVxLnVyYmddLgorVFlQRURfVEVT
VChSYW5kZW5FbmdpbmVUeXBlZFRlc3QsIFJhbmRvbU51bWJlckVuZ2luZUludGVyZmFjZSkgewor
ICB1c2luZyByYW5kZW4gPSB0eXBlbmFtZSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnJhbmRlbl9l
bmdpbmU8VHlwZVBhcmFtPjsKKworICB1c2luZyBFID0gcmFuZGVuOworICB1c2luZyBUID0gdHlw
ZW5hbWUgRTo6cmVzdWx0X3R5cGU7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvcHlfY29u
c3RydWN0aWJsZTxFPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgInJhbmRlbl9lbmdpbmUgbXVz
dCBiZSBjb3B5IGNvbnN0cnVjdGlibGUiKTsKKworICBzdGF0aWNfYXNzZXJ0KGFic2w6OmlzX2Nv
cHlfYXNzaWduYWJsZTxFPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgInJhbmRlbl9lbmdpbmUg
bXVzdCBiZSBjb3B5IGFzc2lnbmFibGUiKTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbW92
ZV9jb25zdHJ1Y3RpYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAicmFuZGVuX2VuZ2lu
ZSBtdXN0IGJlIG1vdmUgY29uc3RydWN0aWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoYWJzbDo6
aXNfbW92ZV9hc3NpZ25hYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAicmFuZGVuX2Vu
Z2luZSBtdXN0IGJlIG1vdmUgYXNzaWduYWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxFPigpKCkpLCBUPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgInJldHVybiB0eXBlIG9mIG9wZXJhdG9yKCkgbXVzdCBiZSByZXN1bHRfdHlwZSIp
OworCisgIC8vIE5hbWVzIGFmdGVyIGRlZmluaXRpb24gb2YgW3JhbmQucmVxLnVyYmddIGluIEMr
KyBzdGFuZGFyZC4KKyAgLy8gZSB1cyBhIHZhbHVlIG9mIEUKKyAgLy8gdiBpcyBhIGx2YWx1ZSBv
ZiBFCisgIC8vIHgsIHkgYXJlIHBvc3NpYmx5IGNvbnN0IHZhbHVlcyBvZiBFCisgIC8vIHMgaXMg
YSB2YWx1ZSBvZiBUCisgIC8vIHEgaXMgYSB2YWx1ZSBzYXRpc2Z5aW5nIHJlcXVpcmVtZW50cyBv
ZiBzZWVkX3NlcXVlbmNlCisgIC8vIHogaXMgYSB2YWx1ZSBvZiB0eXBlIHVuc2lnbmVkIGxvbmcg
bG9uZworICAvLyBvcyBpcyBhIHNvbWUgc3BlY2lhbGl6YXRpb24gb2YgYmFzaWNfb3N0cmVhbQor
ICAvLyBpcyBpcyBhIHNvbWUgc3BlY2lhbGl6YXRpb24gb2YgYmFzaWNfaXN0cmVhbQorCisgIEUg
ZSwgdjsKKyAgY29uc3QgRSB4LCB5OworICBUIHMgPSAxOworICBzdGQ6OnNlZWRfc2VxIHF7MSwg
MiwgM307CisgIHVuc2lnbmVkIGxvbmcgbG9uZyB6ID0gMTsgIC8vIE5PTElOVChydW50aW1lL2lu
dCkKKyAgc3RkOjp3b3N0cmluZ3N0cmVhbSBvczsKKyAgc3RkOjp3aXN0cmluZ3N0cmVhbSBpczsK
KworICBFe307CisgIEV7eH07CisgIEV7c307CisgIEV7cX07CisKKyAgZS5zZWVkKCk7CisKKyAg
Ly8gTVNWQyBlbWl0cyBlcnJvciAyNzE4IHdoZW4gdXNpbmcgRVhQRUNUX0VRKGUsIHgpCisgIC8v
ICAqIGFjdHVhbCBwYXJhbWV0ZXIgd2l0aCBfX2RlY2xzcGVjKGFsaWduKCcjJykpIHdvbid0IGJl
IGFsaWduZWQKKyAgRVhQRUNUX1RSVUUoZSA9PSB4KTsKKworICBlLnNlZWQocSk7CisgIHsKKyAg
ICBFIHRtcChxKTsKKyAgICBFWFBFQ1RfVFJVRShlID09IHRtcCk7CisgIH0KKworICBlKCk7Cisg
IHsKKyAgICBFIHRtcChxKTsKKyAgICBFWFBFQ1RfVFJVRShlICE9IHRtcCk7CisgIH0KKworICBl
LmRpc2NhcmQoeik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoeCA9
PSB5KSwgYm9vbD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZSBvZiBvcGVy
YXRvcj09IG11c3QgYmUgYm9vbCIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRl
Y2x0eXBlKHggIT0geSksIGJvb2w+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAicmV0dXJuIHR5
cGUgb2Ygb3BlcmF0b3I9PSBtdXN0IGJlIGJvb2wiKTsKK30KKworVFlQRURfVEVTVChSYW5kZW5F
bmdpbmVUeXBlZFRlc3QsIFJhbmRlbkVuZ2luZVNGSU5BRVRlc3QpIHsKKyAgdXNpbmcgcmFuZGVu
ID0gdHlwZW5hbWUgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpyYW5kZW5fZW5naW5lPFR5cGVQYXJh
bT47CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgcmFuZGVuOjpyZXN1bHRfdHlwZTsK
KworICB7CisgICAgcmFuZGVuIGVuZ2luZShyZXN1bHRfdHlwZSgxKSk7CisgICAgZW5naW5lLnNl
ZWQocmVzdWx0X3R5cGUoMSkpOworICB9CisKKyAgeworICAgIHJlc3VsdF90eXBlIG4gPSAxOwor
ICAgIHJhbmRlbiBlbmdpbmUobik7CisgICAgZW5naW5lLnNlZWQobik7CisgIH0KKworICB7Cisg
ICAgcmFuZGVuIGVuZ2luZSgxKTsKKyAgICBlbmdpbmUuc2VlZCgxKTsKKyAgfQorCisgIHsKKyAg
ICBpbnQgbiA9IDE7CisgICAgcmFuZGVuIGVuZ2luZShuKTsKKyAgICBlbmdpbmUuc2VlZChuKTsK
KyAgfQorCisgIHsKKyAgICBzdGQ6OnNlZWRfc2VxIHNlZWRfc2VxOworICAgIHJhbmRlbiBlbmdp
bmUoc2VlZF9zZXEpOworICAgIGVuZ2luZS5zZWVkKHNlZWRfc2VxKTsKKyAgfQorCisgIHsKKyAg
ICByYW5kZW4gZW5naW5le3N0ZDo6c2VlZF9zZXEoKX07CisgICAgZW5naW5lLnNlZWQoc3RkOjpz
ZWVkX3NlcSgpKTsKKyAgfQorfQorCitURVNUKFJhbmRlblRlc3QsIFZlcmlmeUdvbGRlblJhbmRl
bjY0RGVmYXVsdCkgeworICBjb25zdGV4cHIgdWludDY0X3Qga0dvbGRlbltrTnVtR29sZGVuT3V0
cHV0c10gPSB7CisgICAgICAweGMzYzE0ZjEzNGU0MzM5NzcsIDB4ZGRhOWY0N2NkOTA0MTBlZSwg
MHg4ODdiZjMwODdmZDhjYTEwLAorICAgICAgMHhmMGI3ODBmNTQ1YzcyOTEyLCAweDE1ZGJiMWQz
NzY5NjU5OWYsIDB4MzBlYzYzYmFmZjNjNmQ1OSwKKyAgICAgIDB4YjI5ZjczNjA2ZjdmMjBhNiwg
MHgwMjgwOGEzMTZmNDlhNTRjLCAweDNiOGZlYWY5ZDVjOGU1MGUsCisgICAgICAweDljYmY2MDVl
M2ZkOWRlOGEsIDB4Yzk3MGFlMWE3ODE4M2JiYiwgMHhkOGIyZmZkMzU2MzAxZWQ1LAorICAgICAg
MHhmNGIzMjdmZTBmYzczYzM3LCAweGNkZmQ4ZDc2ZWI4ZjlhMTksIDB4YzNhNTA2ZWI5MTQyMGM5
ZCwKKyAgICAgIDB4ZDVhZjA1ZGQzZWZmOTU1NiwgMHg0OGRiMWJiNzhmODNjNGExLCAweDcwMjM5
MjBlMGQ2YmZlOGMsCisgICAgICAweDU4ZDM1NzU4MzQ5NTZkNDIsIDB4ZWQxZWY0YzI2Yjg3Yjg0
MCwgMHg4ZWVmMzJhMjNlMGIyZGYzLAorICAgICAgMHg0OTdjYWJmMzQzMTE1NGZjLCAweDRlMjQz
NzA1NzAwMjlhOGIsIDB4ZDg4YjU3NDlmMDkwZTVlYSwKKyAgICAgIDB4YzY1MWE1ODJhOTcwNjky
ZiwgMHg3OGZjZWMyY2JiNjM0MmY1LCAweDQ2M2NiNzQ1NjEyZjU1ZGIsCisgICAgICAweDM1MmVl
NGFkMTgxNmFmZTMsIDB4MDI2ZmYzNzRjMTAxZGE3ZSwgMHg4MTFlZjA4MjFjM2RlODUxLAorICAg
ICAgMHg2ZjdlNjE2NzA0YzRmYTU5LCAweGEwNjYwMzc5OTkyZDU4ZmMsIDB4MDRiMGEzNzRhM2I3
OTVjNywKKyAgICAgIDB4OTE1ZjM0NDU2ODVkYTc5OCwgMHgyNjgwMmE4YWM3NjU3MWNlLCAweDQ2
NjMzNTI1MzNjZTE4ODIsCisgICAgICAweGI5ZmRlZmI0YTI0ZGM3MzgsIDB4NTU4OGJhM2E0ZDZl
NmM1MSwgMHhhMjEwMWE0MmQzNWYxOTU2LAorICAgICAgMHg2MDcxOTVhNWUyMDBmNWZkLCAweDdl
MTAwMzA4ZjMyOTA3NjQsIDB4ZTFlNWUwM2M3NTljMDcwOSwKKyAgICAgIDB4MDgyNTcyY2M1ZGE2
NjA2ZiwgMHhjYmNmNTg1Mzk5ZTQzMmYxLCAweGU4YTJiZTRmODMzNWQ4ZjEsCisgICAgICAweDA5
MDQ0NjlhY2JmZWU4ZjIsIDB4ZjA4YmQzMWI2ZGFlY2Q1MSwgMHgwOGU4YTFmMWE2OWRhNjlhLAor
ICAgICAgMHg2NTQyYTIwYWFkNTdiZmY1LCAweDJlOTcwNWJiMDUzZDZiNDYsIDB4ZGEyZmM5ZGIw
NzEzYzM5MSwKKyAgICAgIDB4NzhlM2E4MTAyMTNiNmZmYiwgMHhkYzE2YTU5Y2RkODVmOGE2LCAw
eGMwOTMyNzE4Y2Q1NTc4MWYsCisgICAgICAweGI5YmZiMjljMmIyMGJmZTUsIDB4Yjk3Mjg5YzFi
ZTBmMmY5YywgMHhjMGEyYTBlNDAzYTg5MmQ0LAorICAgICAgMHg1NTI0YmI4MzQ3NzE0MzViLCAw
eDgyNjVkYTNkMzlkMWE3NTAsIDB4ZmY0YWYzYWI4ZDFiNzhjNSwKKyAgICAgIDB4ZjBlYzVmNDI0
YmNhZDc3ZiwgMHg2NmU0NTVmNjI3NDk1MTg5LCAweGM4MmQzMTIwYjU3ZTMyNzAsCisgICAgICAw
eDM0MjRlNDdkYzIyNTk2ZTMsIDB4YmMwYzk1MTI5Y2NlZGNkZCwgMHhjMTkxYzU5NWFmYzRkY2Jm
LAorICAgICAgMHgxMjAzOTJiZDJiYjcwOTM5LCAweDdmOTA2NTBlYTZjZDZhYjQsIDB4NzI4NzQ5
MTgzMjY5NWFkMywKKyAgICAgIDB4YTdjOGZhYzVhNzkxN2ViMCwgMHhkMDg4Y2I5NDE4YmUwMzYx
LCAweDdjMWJmOTgzOWM3YzFjZTUsCisgICAgICAweGUyZTk5MWZhNThlMWU3OWUsIDB4Nzg1NjVj
ZGVmZDI4YzRhZCwgMHg3MzUxYjlmZWY5OGJhZmFkLAorICAgICAgMHgyYTllYWMyOGIwOGM5NmJm
LCAweDZjNGYxNzk2OTZjYjIyMjUsIDB4MTNhNjg1ODYxYmFiODdlMCwKKyAgICAgIDB4NjRjNmRl
NWFhMDUwMTk3MSwgMHgzMDUzNzQyNWNhYzcwOTkxLCAweDAxNTkwZDlkYzZjNTMyYjcsCisgICAg
ICAweDdlMDVlM2FhOGVjNzIwZGMsIDB4NzRhMDdkOWM1NGUzZTYzZiwgMHg3MzgxODQzODhmM2Jj
MWQyLAorICAgICAgMHgyNmZmZGM1MDY3YmUzYWNiLCAweDZiY2RmMTg1NTYxZjI1NWYsIDB4YTBl
YWYyZTFjZjk5YjFjNiwKKyAgICAgIDB4MTcxZGY4MTkzNGY2ODYwNCwgMHg3ZWE1YTIxNjY1Njgz
ZTVhLCAweDVkMWNiMDIwNzViYTFjZWEsCisgICAgICAweDk1N2YzOGNiZDIxMjNmZGYsIDB4YmE2
MzY0ZWZmODBkZTAyZiwgMHg2MDZlMGEwZTQxZDQ1MmVlLAorICAgICAgMHg4OTJkODMxN2RlODJm
N2EyLCAweGU3MDdiMWRiNTBmN2I0M2UsIDB4NGViMjg4MjY3NjZmY2Y1YiwKKyAgICAgIDB4NWEz
NjJkNTZlODBhMDk1MSwgMHg2ZWUyMTdkZjE2NTI3ZDc4LCAweGY2NzM3OTYyYmE2YjIzZGQsCisg
ICAgICAweDQ0M2U2Mzg1N2Q0MDc2Y2EsIDB4NzkwZDlhNWYwNDhhZGZlYiwgMHhkNzk2YjA1MjE1
MWVlOTRkLAorICAgICAgMHgwMzNlZDk1YzEyYjA0YTAzLCAweDhiODMzZmY4NDg5M2RhNWQsIDB4
M2Q2NzI0YjFiYjE1ZWFiOSwKKyAgICAgIDB4OTg3N2M0MjI1MDYxY2E3NiwgMHhkNjhkNjgxMGFk
Zjc0ZmIzLCAweDQyZTUzNTJmZTMwY2U5ODksCisgICAgICAweDI2NWI1NjVhNzQzMWZkZTcsIDB4
M2NkYmY3ZTM1OGRmNGI4YiwgMHgyOTIyYTQ3ZjZkM2U4Nzc5LAorICAgICAgMHg1MmQyMjQyZjY1
YjM3Zjg4LCAweDVkODM2ZDZlMjk1OGQ2YjUsIDB4MjlkNDBmMDA1NjZkNWUyNiwKKyAgICAgIDB4
Mjg4ZGIwZTExMjRiMTRhMCwgMHg2YzA1NjYwOGI3ZDljMWI2LCAweDBiOTQ3MWJkYjhmMTlkMzIs
CisgICAgICAweDhmYjk0NjUwNGZhYTZjOWQsIDB4ODk0M2E5NDY0NTQwMjUxYywgMHhmZDFmZTI3
ZDE0NGEwOWUwLAorICAgICAgMHhlYTZhYzQ1OGRhMTQxYmRhLCAweDgwNDhmMjE3NjMzZmNlMzYs
IDB4ZmVkYTEzODRhZGU3NGQzMSwKKyAgICAgIDB4NDMzNGI4YjAyZmY3NjEyZiwgMHhkYmM4NDQx
ZjUyMjdlMjE2LCAweDA5NmQxMTlhMzYwNWM4NWIsCisgICAgICAweDJiNzJiMzFjMjFiN2Q3ZDB9
OworCisgIHJhbmRlbl91NjQgZW5naW5lOworI2lmIFVQREFURV9HT0xERU4KKyAgKHZvaWQpa0dv
bGRlbjsgIC8vIFNpbGVuY2Ugd2FybmluZy4KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVt
R29sZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwMTZseCwgIiwgZW5naW5lKCkp
OworICAgIGlmIChpICUgMyA9PSAyKSB7CisgICAgICBwcmludGYoIlxuIik7CisgICAgfQorICB9
CisgIHByaW50ZigiXG5cblxuIik7CisjZWxzZQorICBmb3IgKGNvbnN0IGF1dG8mIGVsZW0gOiBr
R29sZGVuKSB7CisgICAgRVhQRUNUX0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQorICBlbmdpbmUu
c2VlZCgpOworICBmb3IgKGNvbnN0IGF1dG8mIGVsZW0gOiBrR29sZGVuKSB7CisgICAgRVhQRUNU
X0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQorI2VuZGlmCit9CisKK1RFU1QoUmFuZGVuVGVzdCwg
VmVyaWZ5R29sZGVuUmFuZGVuNjRTZWVkZWQpIHsKKyAgY29uc3RleHByIHVpbnQ2NF90IGtHb2xk
ZW5ba051bUdvbGRlbk91dHB1dHNdID0geworICAgICAgMHg4M2E5ZTU4Zjk0ZDNkY2Q1LCAweDcw
YmJkZmYzZDk3OTQ5ZmIsIDB4MDQzODQ4MWY3NDcxYzFiNCwKKyAgICAgIDB4MzRmZGM1OGVlNWZi
NTkzMCwgMHhjZWVlNGYyZDJhOTM3ZDE3LCAweGI1YTI2YTY4ZTQzMmFlYTksCisgICAgICAweDhi
NjQ3NzRhM2ZiNTE3NDAsIDB4ZDg5YWMxZmM3NDI0OWM3NCwgMHgwMzkxMGQxZDIzZmMzZmRmLAor
ICAgICAgMHhkMzhmNjMwODc4YWE4OTdmLCAweDBlZThmMGY1NjE1ZjdlNDQsIDB4OThmNWE1M2Rm
ODI3OWQ1MiwKKyAgICAgIDB4YjQwM2Y1MmMyNTkzOGQwZSwgMHgyNDAwNzI5OTZlYTZlODM4LCAw
eGQzYTc5MTI0NjE5MGZhNjEsCisgICAgICAweGFhZWRkM2RmN2E3YjRmODAsIDB4YzZlYWNhYmUw
NWRlYWY2ZSwgMHhiNzk2N2RkODc5MGVkZjRkLAorICAgICAgMHg5YTBhOGU2N2UwNDlkMjc5LCAw
eDA0OTRmNjA2YWViYzIzZTcsIDB4NTk4ZGNkNjg3YmMzZTBlZSwKKyAgICAgIDB4MDEwYWM4MTgw
MmQ0NTJhMSwgMHg2NDA3Yzg3MTYwYWEyODQyLCAweDVhNTZlMjc2NDg2ZjkzYTAsCisgICAgICAw
eGM4ODdhMzk5ZDQ2YThmMDIsIDB4OWUxZTYxMDBmZTkzYjc0MCwgMHgxMmQwMmUzMzBmODkwMWY2
LAorICAgICAgMHhjMzljYTUyYjQ3ZTc5MGI3LCAweGIwYjBhMmZhMTFlODJlNjEsIDB4MTU0MmQ4
NDFhMzAzODA2YSwKKyAgICAgIDB4MWZlNjU5ZmQ3ZDZlOWQ4NiwgMHhiOGM5MGQ4MDc0NjU0MWFj
LCAweDIzOWQ1NmE1NjY5ZGRjOTQsCisgICAgICAweGQ0MGRiNTdjODEyM2QxM2MsIDB4M2FiYzI0
MTQxNTNhMGRiMCwgMHg5YmFkNjY1NjMwY2I4ZDYxLAorICAgICAgMHgwYmQxZmI5MGVlM2Y0YmJj
LCAweDhmMGI0ZDdlMDc5YjRlNDIsIDB4ZmEwZmIwZTBlZTU5ZTc5MywKKyAgICAgIDB4NTEwODBi
MjgzZTA3MTEwMCwgMHgyYzRiOWU3MTUwODFjYzE1LCAweGJlMTBlZDQ5ZGU0OTQxZGYsCisgICAg
ICAweGY4ZWFhYzlkNGIxYjBkMzcsIDB4NGJjY2U0YjU0NjA1ZTEzOSwgMHhhNjQ3MjJiNzY3NjVk
ZGE2LAorICAgICAgMHhiOTM3N2Q3MzhjYTI4YWI1LCAweDc3OWZhZDgxYThjY2MxYWYsIDB4NjVj
YjNlZTYxZmZkM2JhNywKKyAgICAgIDB4ZDc0ZTc5MDg3ODYyODM2ZiwgMHhkMDViOWM1ODRjM2Yy
NWJmLCAweDJiYTkzYTQ2OTM1Nzk4MjcsCisgICAgICAweGQ4MTUzMGFmZjA1NDIwY2UsIDB4ZWMw
NmNlYTIxNTQ3ODYyMSwgMHg0YjE3OThhNjc5NmQ2NWFkLAorICAgICAgMHhmMTQyZjNmYjNhNmY2
ZmE2LCAweDAwMmI3YmY3ZTIzN2I1NjAsIDB4ZjQ3ZjI2MDVlZjY1YjRmOCwKKyAgICAgIDB4OTgw
NGVjNTUxN2VmZmMxOCwgMHhhZWQzZDdmOGI3ZDQ4MWNkLCAweDU2NTFjMjRjMWNlMzM4ZDEsCisg
ICAgICAweDNlN2EzODIwOGJmMGEzYzYsIDB4Njc5NmE3YjYxNDUzNGFlZCwgMHgwZDBmM2I4NDgz
NTg0NjBmLAorICAgICAgMHgwZmE1ZmU3NjAwYjE5NTI0LCAweDJiMGNmMzgyNTNmYWFlZGMsIDB4
MTBkZjkxODgyMzNhOWZkNiwKKyAgICAgIDB4M2ExMDAzMzg4MDEzOGI1OSwgMHg1ZmIwYjBkMjM5
NDhlODBmLCAweDllNzZmN2IwMmZiZjUzNTAsCisgICAgICAweDA4MTYwNTIzMDRiMWE5ODUsIDB4
MzBjOTg4MGRiNDFmZDIxOCwgMHgxNGFhMzk5YjY1ZTIwZjI4LAorICAgICAgMHhlMTQ1NGE4Y2Fj
ZTc4N2I0LCAweDMyNWFjOTcxYjZjNmYwZjUsIDB4NzE2YjFhYTI3ODRmM2QzNiwKKyAgICAgIDB4
M2Q1Y2UxNGFjY2ZkMTQ0ZiwgMHg2YzBjOTc3MTBmNjUxNzkyLCAweGJjNWIwZjU5ZmIzMzM1MzIs
CisgICAgICAweDJhOTBhN2QyMTQwNDcwYmMsIDB4OGRhMjY5ZjU1YzFlMWM4ZCwgMHhjZmMzNzE0
Mzg5NTc5MmNhLAorICAgICAgMHhiZTIxZWFiMWYzMGIyMzhmLCAweDhjNDcyMjlkZWU0ZDY1ZmQs
IDB4NTc0MzYxNGVkMWVkN2Q1NCwKKyAgICAgIDB4MzUxMzcyYTk5ZTljNDc2ZSwgMHgyYmQ1ZWEx
NWU1ZGIwODVmLCAweDY5MjVmZGU0NmUwYWY0Y2EsCisgICAgICAweGVkM2VkYTJiZGMxZjQ1YmQs
IDB4ZGVmNjhjNjhkNDYwZmE2ZSwgMHhlNDJhMGRlNzYyNTNlMmI1LAorICAgICAgMHg0ZTUxNzZk
Y2JjMjljMzA1LCAweGJmZDg1ZmJhOWY4MTBmNmUsIDB4NzZhNWEyYTliZWI4MTVjNiwKKyAgICAg
IDB4MDFlZGM0ZGRjZWFmNDE0YywgMHhhNGU5ODkwNGI0YmIzYjRiLCAweDAwYmQ2M2FjN2QyZjFk
ZGQsCisgICAgICAweGI4NDkxZmU2ZTk5OGRkYmIsIDB4YjM4NmEzNDYzZGRhNjgwMCwgMHgwMDgx
ODg3Njg4ODcxNjE5LAorICAgICAgMHgzM2QzOTRiMzM0NGU5YTM4LCAweDgxNWRiYTY1YTNhOGJh
ZjksIDB4NDIzMmY2ZWMwMmMyZmQxYSwKKyAgICAgIDB4YjVjZmY2MDNlZGQyMDgzNCwgMHg1ODAx
ODkyNDNmNjg3NjYzLCAweGE4ZDVhMmNiZGMyN2ZlOTksCisgICAgICAweDcyNWQ4ODE2OTNmYTAx
MzEsIDB4YTJiZTJjMTNkYjJjN2FjNSwgMHg3YjZhOTYxNGI1MDlmZDc4LAorICAgICAgMHhiNmIx
MzZkNzFlNzE3NjM2LCAweDY2MGYxYTcxYWZmMDQ2ZWEsIDB4MGJhMTBhZTM0NmM4ZWM5ZSwKKyAg
ICAgIDB4ZTY2ZGRlNTNlMzE0NWI0MSwgMHgzYjE4Mjg4Yzg4YzI2YmU2LCAweDRkOWQ5ZDJmZjAy
ZGI5MzMsCisgICAgICAweDQxNjdkYThjNzBmNDZlOGEsIDB4ZjE4M2JlZWY4YzYzMThiNCwgMHg0
ZDg4OWUxZTcxZWVlZWYxLAorICAgICAgMHg3MTc1YzcxYWQ2Njg5YjZiLCAweGZiOWU0MmJlYWNk
MWI3ZGQsIDB4YzMzZDBlOTFiMjliNWUwZCwKKyAgICAgIDB4ZDM5YjgzMjkxY2U0NzkyMiwgMHhj
NGQ1NzBmYjg0OTNkMTJlLCAweDIzZDVhNTcyNGY0MjRhZTYsCisgICAgICAweDUyNDVmMTYxODc2
YjY2MTYsIDB4MzhkNzdkYmQyMWFiNTc4ZCwgMHg5YzM0MjMzMTFmNGVjYmZlLAorICAgICAgMHg3
NmZlMzEzODliYWNkOWQ1LAorICB9OworCisgIEV4cGxpY2l0U2VlZFNlcSBzZWVkX3NlcXVlbmNl
ezEyLCAzNCwgNTZ9OworICByYW5kZW5fdTY0IGVuZ2luZShzZWVkX3NlcXVlbmNlKTsKKyNpZiBV
UERBVEVfR09MREVOCisgICh2b2lkKWtHb2xkZW47ICAvLyBTaWxlbmNlIHdhcm5pbmcuCisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUdvbGRlbk91dHB1dHM7ICsraSkgeworICAgIHByaW50
ZigiMHglMDE2bHgsICIsIGVuZ2luZSgpKTsKKyAgICBpZiAoaSAlIDMgPT0gMikgeworICAgICAg
cHJpbnRmKCJcbiIpOworICAgIH0KKyAgfQorICBwcmludGYoIlxuXG5cbiIpOworI2Vsc2UKKyAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBl
bmdpbmUoKSk7CisgIH0KKyAgZW5naW5lLnNlZWQoc2VlZF9zZXF1ZW5jZSk7CisgIGZvciAoY29u
c3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkp
OworICB9CisjZW5kaWYKK30KKworVEVTVChSYW5kZW5UZXN0LCBWZXJpZnlHb2xkZW5SYW5kZW4z
MkRlZmF1bHQpIHsKKyAgY29uc3RleHByIHVpbnQ2NF90IGtHb2xkZW5bMiAqIGtOdW1Hb2xkZW5P
dXRwdXRzXSA9IHsKKyAgICAgIDB4NGU0MzM5NzcsIDB4YzNjMTRmMTMsIDB4ZDkwNDEwZWUsIDB4
ZGRhOWY0N2MsIDB4N2ZkOGNhMTAsIDB4ODg3YmYzMDgsCisgICAgICAweDQ1YzcyOTEyLCAweGYw
Yjc4MGY1LCAweDc2OTY1OTlmLCAweDE1ZGJiMWQzLCAweGZmM2M2ZDU5LCAweDMwZWM2M2JhLAor
ICAgICAgMHg2ZjdmMjBhNiwgMHhiMjlmNzM2MCwgMHg2ZjQ5YTU0YywgMHgwMjgwOGEzMSwgMHhk
NWM4ZTUwZSwgMHgzYjhmZWFmOSwKKyAgICAgIDB4M2ZkOWRlOGEsIDB4OWNiZjYwNWUsIDB4Nzgx
ODNiYmIsIDB4Yzk3MGFlMWEsIDB4NTYzMDFlZDUsIDB4ZDhiMmZmZDMsCisgICAgICAweDBmYzcz
YzM3LCAweGY0YjMyN2ZlLCAweGViOGY5YTE5LCAweGNkZmQ4ZDc2LCAweDkxNDIwYzlkLCAweGMz
YTUwNmViLAorICAgICAgMHgzZWZmOTU1NiwgMHhkNWFmMDVkZCwgMHg4ZjgzYzRhMSwgMHg0OGRi
MWJiNywgMHgwZDZiZmU4YywgMHg3MDIzOTIwZSwKKyAgICAgIDB4MzQ5NTZkNDIsIDB4NThkMzU3
NTgsIDB4NmI4N2I4NDAsIDB4ZWQxZWY0YzIsIDB4M2UwYjJkZjMsIDB4OGVlZjMyYTIsCisgICAg
ICAweDQzMTE1NGZjLCAweDQ5N2NhYmYzLCAweDcwMDI5YThiLCAweDRlMjQzNzA1LCAweGYwOTBl
NWVhLCAweGQ4OGI1NzQ5LAorICAgICAgMHhhOTcwNjkyZiwgMHhjNjUxYTU4MiwgMHhiYjYzNDJm
NSwgMHg3OGZjZWMyYywgMHg2MTJmNTVkYiwgMHg0NjNjYjc0NSwKKyAgICAgIDB4MTgxNmFmZTMs
IDB4MzUyZWU0YWQsIDB4YzEwMWRhN2UsIDB4MDI2ZmYzNzQsIDB4MWMzZGU4NTEsIDB4ODExZWYw
ODIsCisgICAgICAweDA0YzRmYTU5LCAweDZmN2U2MTY3LCAweDk5MmQ1OGZjLCAweGEwNjYwMzc5
LCAweGEzYjc5NWM3LCAweDA0YjBhMzc0LAorICAgICAgMHg2ODVkYTc5OCwgMHg5MTVmMzQ0NSwg
MHhjNzY1NzFjZSwgMHgyNjgwMmE4YSwgMHgzM2NlMTg4MiwgMHg0NjYzMzUyNSwKKyAgICAgIDB4
YTI0ZGM3MzgsIDB4YjlmZGVmYjQsIDB4NGQ2ZTZjNTEsIDB4NTU4OGJhM2EsIDB4ZDM1ZjE5NTYs
IDB4YTIxMDFhNDIsCisgICAgICAweGUyMDBmNWZkLCAweDYwNzE5NWE1LCAweGYzMjkwNzY0LCAw
eDdlMTAwMzA4LCAweDc1OWMwNzA5LCAweGUxZTVlMDNjLAorICAgICAgMHg1ZGE2NjA2ZiwgMHgw
ODI1NzJjYywgMHg5OWU0MzJmMSwgMHhjYmNmNTg1MywgMHg4MzM1ZDhmMSwgMHhlOGEyYmU0ZiwK
KyAgICAgIDB4Y2JmZWU4ZjIsIDB4MDkwNDQ2OWEsIDB4NmRhZWNkNTEsIDB4ZjA4YmQzMWIsIDB4
YTY5ZGE2OWEsIDB4MDhlOGExZjEsCisgICAgICAweGFkNTdiZmY1LCAweDY1NDJhMjBhLCAweDA1
M2Q2YjQ2LCAweDJlOTcwNWJiLCAweDA3MTNjMzkxLCAweGRhMmZjOWRiLAorICAgICAgMHgyMTNi
NmZmYiwgMHg3OGUzYTgxMCwgMHhkZDg1ZjhhNiwgMHhkYzE2YTU5YywgMHhjZDU1NzgxZiwgMHhj
MDkzMjcxOCwKKyAgICAgIDB4MmIyMGJmZTUsIDB4YjliZmIyOWMsIDB4YmUwZjJmOWMsIDB4Yjk3
Mjg5YzEsIDB4MDNhODkyZDQsIDB4YzBhMmEwZTQsCisgICAgICAweDQ3NzE0MzViLCAweDU1MjRi
YjgzLCAweDM5ZDFhNzUwLCAweDgyNjVkYTNkLCAweDhkMWI3OGM1LCAweGZmNGFmM2FiLAorICAg
ICAgMHg0YmNhZDc3ZiwgMHhmMGVjNWY0MiwgMHgyNzQ5NTE4OSwgMHg2NmU0NTVmNiwgMHhiNTdl
MzI3MCwgMHhjODJkMzEyMCwKKyAgICAgIDB4YzIyNTk2ZTMsIDB4MzQyNGU0N2QsIDB4OWNjZWRj
ZGQsIDB4YmMwYzk1MTIsIDB4YWZjNGRjYmYsIDB4YzE5MWM1OTUsCisgICAgICAweDJiYjcwOTM5
LCAweDEyMDM5MmJkLCAweGE2Y2Q2YWI0LCAweDdmOTA2NTBlLCAweDMyNjk1YWQzLCAweDcyODc0
OTE4LAorICAgICAgMHhhNzkxN2ViMCwgMHhhN2M4ZmFjNSwgMHgxOGJlMDM2MSwgMHhkMDg4Y2I5
NCwgMHg5YzdjMWNlNSwgMHg3YzFiZjk4MywKKyAgICAgIDB4NThlMWU3OWUsIDB4ZTJlOTkxZmEs
IDB4ZmQyOGM0YWQsIDB4Nzg1NjVjZGUsIDB4Zjk4YmFmYWQsIDB4NzM1MWI5ZmUsCisgICAgICAw
eGIwOGM5NmJmLCAweDJhOWVhYzI4LCAweDk2Y2IyMjI1LCAweDZjNGYxNzk2LCAweDFiYWI4N2Uw
LCAweDEzYTY4NTg2LAorICAgICAgMHhhMDUwMTk3MSwgMHg2NGM2ZGU1YSwgMHhjYWM3MDk5MSwg
MHgzMDUzNzQyNSwgMHhjNmM1MzJiNywgMHgwMTU5MGQ5ZCwKKyAgICAgIDB4OGVjNzIwZGMsIDB4
N2UwNWUzYWEsIDB4NTRlM2U2M2YsIDB4NzRhMDdkOWMsIDB4OGYzYmMxZDIsIDB4NzM4MTg0Mzgs
CisgICAgICAweDY3YmUzYWNiLCAweDI2ZmZkYzUwLCAweDU2MWYyNTVmLCAweDZiY2RmMTg1LCAw
eGNmOTliMWM2LCAweGEwZWFmMmUxLAorICAgICAgMHgzNGY2ODYwNCwgMHgxNzFkZjgxOSwgMHg2
NTY4M2U1YSwgMHg3ZWE1YTIxNiwgMHg3NWJhMWNlYSwgMHg1ZDFjYjAyMCwKKyAgICAgIDB4ZDIx
MjNmZGYsIDB4OTU3ZjM4Y2IsIDB4ZjgwZGUwMmYsIDB4YmE2MzY0ZWYsIDB4NDFkNDUyZWUsIDB4
NjA2ZTBhMGUsCisgICAgICAweGRlODJmN2EyLCAweDg5MmQ4MzE3LCAweDUwZjdiNDNlLCAweGU3
MDdiMWRiLCAweDc2NmZjZjViLCAweDRlYjI4ODI2LAorICAgICAgMHhlODBhMDk1MSwgMHg1YTM2
MmQ1NiwgMHgxNjUyN2Q3OCwgMHg2ZWUyMTdkZiwgMHhiYTZiMjNkZCwgMHhmNjczNzk2MiwKKyAg
ICAgIDB4N2Q0MDc2Y2EsIDB4NDQzZTYzODUsIDB4MDQ4YWRmZWIsIDB4NzkwZDlhNWYsIDB4MTUx
ZWU5NGQsIDB4ZDc5NmIwNTIsCisgICAgICAweDEyYjA0YTAzLCAweDAzM2VkOTVjLCAweDQ4OTNk
YTVkLCAweDhiODMzZmY4LCAweGJiMTVlYWI5LCAweDNkNjcyNGIxLAorICAgICAgMHg1MDYxY2E3
NiwgMHg5ODc3YzQyMiwgMHhhZGY3NGZiMywgMHhkNjhkNjgxMCwgMHhlMzBjZTk4OSwgMHg0MmU1
MzUyZiwKKyAgICAgIDB4NzQzMWZkZTcsIDB4MjY1YjU2NWEsIDB4NThkZjRiOGIsIDB4M2NkYmY3
ZTMsIDB4NmQzZTg3NzksIDB4MjkyMmE0N2YsCisgICAgICAweDY1YjM3Zjg4LCAweDUyZDIyNDJm
LCAweDI5NThkNmI1LCAweDVkODM2ZDZlLCAweDU2NmQ1ZTI2LCAweDI5ZDQwZjAwLAorICAgICAg
MHgxMjRiMTRhMCwgMHgyODhkYjBlMSwgMHhiN2Q5YzFiNiwgMHg2YzA1NjYwOCwgMHhiOGYxOWQz
MiwgMHgwYjk0NzFiZCwKKyAgICAgIDB4NGZhYTZjOWQsIDB4OGZiOTQ2NTAsIDB4NDU0MDI1MWMs
IDB4ODk0M2E5NDYsIDB4MTQ0YTA5ZTAsIDB4ZmQxZmUyN2QsCisgICAgICAweGRhMTQxYmRhLCAw
eGVhNmFjNDU4LCAweDYzM2ZjZTM2LCAweDgwNDhmMjE3LCAweGFkZTc0ZDMxLCAweGZlZGExMzg0
LAorICAgICAgMHgyZmY3NjEyZiwgMHg0MzM0YjhiMCwgMHg1MjI3ZTIxNiwgMHhkYmM4NDQxZiwg
MHgzNjA1Yzg1YiwgMHgwOTZkMTE5YSwKKyAgICAgIDB4MjFiN2Q3ZDAsIDB4MmI3MmIzMWN9Owor
CisgIHJhbmRlbl91MzIgZW5naW5lOworI2lmIFVQREFURV9HT0xERU4KKyAgKHZvaWQpa0dvbGRl
bjsgIC8vIFNpbGVuY2Ugd2FybmluZy4KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyICoga051
bUdvbGRlbk91dHB1dHM7ICsraSkgeworICAgIHByaW50ZigiMHglMDh4LCAiLCBlbmdpbmUoKSk7
CisgICAgaWYgKGkgJSA2ID09IDUpIHsKKyAgICAgIHByaW50ZigiXG4iKTsKKyAgICB9CisgIH0K
KyAgcHJpbnRmKCJcblxuXG4iKTsKKyNlbHNlCisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtH
b2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOworICB9CisgIGVuZ2luZS5z
ZWVkKCk7CisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1Rf
RVEoZWxlbSwgZW5naW5lKCkpOworICB9CisjZW5kaWYKK30KKworVEVTVChSYW5kZW5UZXN0LCBW
ZXJpZnlHb2xkZW5SYW5kZW4zMlNlZWRlZCkgeworICBjb25zdGV4cHIgdWludDY0X3Qga0dvbGRl
blsyICoga051bUdvbGRlbk91dHB1dHNdID0geworICAgICAgMHg5NGQzZGNkNSwgMHg4M2E5ZTU4
ZiwgMHhkOTc5NDlmYiwgMHg3MGJiZGZmMywgMHg3NDcxYzFiNCwgMHgwNDM4NDgxZiwKKyAgICAg
IDB4ZTVmYjU5MzAsIDB4MzRmZGM1OGUsIDB4MmE5MzdkMTcsIDB4Y2VlZTRmMmQsIDB4ZTQzMmFl
YTksIDB4YjVhMjZhNjgsCisgICAgICAweDNmYjUxNzQwLCAweDhiNjQ3NzRhLCAweDc0MjQ5Yzc0
LCAweGQ4OWFjMWZjLCAweDIzZmMzZmRmLCAweDAzOTEwZDFkLAorICAgICAgMHg3OGFhODk3Ziwg
MHhkMzhmNjMwOCwgMHg2MTVmN2U0NCwgMHgwZWU4ZjBmNSwgMHhmODI3OWQ1MiwgMHg5OGY1YTUz
ZCwKKyAgICAgIDB4MjU5MzhkMGUsIDB4YjQwM2Y1MmMsIDB4NmVhNmU4MzgsIDB4MjQwMDcyOTks
IDB4NjE5MGZhNjEsIDB4ZDNhNzkxMjQsCisgICAgICAweDdhN2I0ZjgwLCAweGFhZWRkM2RmLCAw
eDA1ZGVhZjZlLCAweGM2ZWFjYWJlLCAweDc5MGVkZjRkLCAweGI3OTY3ZGQ4LAorICAgICAgMHhl
MDQ5ZDI3OSwgMHg5YTBhOGU2NywgMHhhZWJjMjNlNywgMHgwNDk0ZjYwNiwgMHg3YmMzZTBlZSwg
MHg1OThkY2Q2OCwKKyAgICAgIDB4MDJkNDUyYTEsIDB4MDEwYWM4MTgsIDB4NjBhYTI4NDIsIDB4
NjQwN2M4NzEsIDB4NDg2ZjkzYTAsIDB4NWE1NmUyNzYsCisgICAgICAweGQ0NmE4ZjAyLCAweGM4
ODdhMzk5LCAweGZlOTNiNzQwLCAweDllMWU2MTAwLCAweDBmODkwMWY2LCAweDEyZDAyZTMzLAor
ICAgICAgMHg0N2U3OTBiNywgMHhjMzljYTUyYiwgMHgxMWU4MmU2MSwgMHhiMGIwYTJmYSwgMHhh
MzAzODA2YSwgMHgxNTQyZDg0MSwKKyAgICAgIDB4N2Q2ZTlkODYsIDB4MWZlNjU5ZmQsIDB4NzQ2
NTQxYWMsIDB4YjhjOTBkODAsIDB4NjY5ZGRjOTQsIDB4MjM5ZDU2YTUsCisgICAgICAweDgxMjNk
MTNjLCAweGQ0MGRiNTdjLCAweDE1M2EwZGIwLCAweDNhYmMyNDE0LCAweDMwY2I4ZDYxLCAweDli
YWQ2NjU2LAorICAgICAgMHhlZTNmNGJiYywgMHgwYmQxZmI5MCwgMHgwNzliNGU0MiwgMHg4ZjBi
NGQ3ZSwgMHhlZTU5ZTc5MywgMHhmYTBmYjBlMCwKKyAgICAgIDB4M2UwNzExMDAsIDB4NTEwODBi
MjgsIDB4NTA4MWNjMTUsIDB4MmM0YjllNzEsIDB4ZGU0OTQxZGYsIDB4YmUxMGVkNDksCisgICAg
ICAweDRiMWIwZDM3LCAweGY4ZWFhYzlkLCAweDQ2MDVlMTM5LCAweDRiY2NlNGI1LCAweDY3NjVk
ZGE2LCAweGE2NDcyMmI3LAorICAgICAgMHg4Y2EyOGFiNSwgMHhiOTM3N2Q3MywgMHhhOGNjYzFh
ZiwgMHg3NzlmYWQ4MSwgMHgxZmZkM2JhNywgMHg2NWNiM2VlNiwKKyAgICAgIDB4Nzg2MjgzNmYs
IDB4ZDc0ZTc5MDgsIDB4NGMzZjI1YmYsIDB4ZDA1YjljNTgsIDB4OTM1Nzk4MjcsIDB4MmJhOTNh
NDYsCisgICAgICAweGYwNTQyMGNlLCAweGQ4MTUzMGFmLCAweDE1NDc4NjIxLCAweGVjMDZjZWEy
LCAweDc5NmQ2NWFkLCAweDRiMTc5OGE2LAorICAgICAgMHgzYTZmNmZhNiwgMHhmMTQyZjNmYiwg
MHhlMjM3YjU2MCwgMHgwMDJiN2JmNywgMHhlZjY1YjRmOCwgMHhmNDdmMjYwNSwKKyAgICAgIDB4
MTdlZmZjMTgsIDB4OTgwNGVjNTUsIDB4YjdkNDgxY2QsIDB4YWVkM2Q3ZjgsIDB4MWNlMzM4ZDEs
IDB4NTY1MWMyNGMsCisgICAgICAweDhiZjBhM2M2LCAweDNlN2EzODIwLCAweDE0NTM0YWVkLCAw
eDY3OTZhN2I2LCAweDgzNTg0NjBmLCAweDBkMGYzYjg0LAorICAgICAgMHgwMGIxOTUyNCwgMHgw
ZmE1ZmU3NiwgMHg1M2ZhYWVkYywgMHgyYjBjZjM4MiwgMHgyMzNhOWZkNiwgMHgxMGRmOTE4OCwK
KyAgICAgIDB4ODAxMzhiNTksIDB4M2ExMDAzMzgsIDB4Mzk0OGU4MGYsIDB4NWZiMGIwZDIsIDB4
MmZiZjUzNTAsIDB4OWU3NmY3YjAsCisgICAgICAweDA0YjFhOTg1LCAweDA4MTYwNTIzLCAweGI0
MWZkMjE4LCAweDMwYzk4ODBkLCAweDY1ZTIwZjI4LCAweDE0YWEzOTliLAorICAgICAgMHhhY2U3
ODdiNCwgMHhlMTQ1NGE4YywgMHhiNmM2ZjBmNSwgMHgzMjVhYzk3MSwgMHg3ODRmM2QzNiwgMHg3
MTZiMWFhMiwKKyAgICAgIDB4Y2NmZDE0NGYsIDB4M2Q1Y2UxNGEsIDB4MGY2NTE3OTIsIDB4NmMw
Yzk3NzEsIDB4ZmIzMzM1MzIsIDB4YmM1YjBmNTksCisgICAgICAweDE0MDQ3MGJjLCAweDJhOTBh
N2QyLCAweDVjMWUxYzhkLCAweDhkYTI2OWY1LCAweDg5NTc5MmNhLCAweGNmYzM3MTQzLAorICAg
ICAgMHhmMzBiMjM4ZiwgMHhiZTIxZWFiMSwgMHhlZTRkNjVmZCwgMHg4YzQ3MjI5ZCwgMHhkMWVk
N2Q1NCwgMHg1NzQzNjE0ZSwKKyAgICAgIDB4OWU5YzQ3NmUsIDB4MzUxMzcyYTksIDB4ZTVkYjA4
NWYsIDB4MmJkNWVhMTUsIDB4NmUwYWY0Y2EsIDB4NjkyNWZkZTQsCisgICAgICAweGRjMWY0NWJk
LCAweGVkM2VkYTJiLCAweGQ0NjBmYTZlLCAweGRlZjY4YzY4LCAweDYyNTNlMmI1LCAweGU0MmEw
ZGU3LAorICAgICAgMHhiYzI5YzMwNSwgMHg0ZTUxNzZkYywgMHg5ZjgxMGY2ZSwgMHhiZmQ4NWZi
YSwgMHhiZWI4MTVjNiwgMHg3NmE1YTJhOSwKKyAgICAgIDB4Y2VhZjQxNGMsIDB4MDFlZGM0ZGQs
IDB4YjRiYjNiNGIsIDB4YTRlOTg5MDQsIDB4N2QyZjFkZGQsIDB4MDBiZDYzYWMsCisgICAgICAw
eGU5OThkZGJiLCAweGI4NDkxZmU2LCAweDNkZGE2ODAwLCAweGIzODZhMzQ2LCAweDg4ODcxNjE5
LCAweDAwODE4ODc2LAorICAgICAgMHgzNDRlOWEzOCwgMHgzM2QzOTRiMywgMHhhM2E4YmFmOSwg
MHg4MTVkYmE2NSwgMHgwMmMyZmQxYSwgMHg0MjMyZjZlYywKKyAgICAgIDB4ZWRkMjA4MzQsIDB4
YjVjZmY2MDMsIDB4M2Y2ODc2NjMsIDB4NTgwMTg5MjQsIDB4ZGMyN2ZlOTksIDB4YThkNWEyY2Is
CisgICAgICAweDkzZmEwMTMxLCAweDcyNWQ4ODE2LCAweGRiMmM3YWM1LCAweGEyYmUyYzEzLCAw
eGI1MDlmZDc4LCAweDdiNmE5NjE0LAorICAgICAgMHgxZTcxNzYzNiwgMHhiNmIxMzZkNywgMHhh
ZmYwNDZlYSwgMHg2NjBmMWE3MSwgMHg0NmM4ZWM5ZSwgMHgwYmExMGFlMywKKyAgICAgIDB4ZTMx
NDViNDEsIDB4ZTY2ZGRlNTMsIDB4ODhjMjZiZTYsIDB4M2IxODI4OGMsIDB4ZjAyZGI5MzMsIDB4
NGQ5ZDlkMmYsCisgICAgICAweDcwZjQ2ZThhLCAweDQxNjdkYThjLCAweDhjNjMxOGI0LCAweGYx
ODNiZWVmLCAweDcxZWVlZWYxLCAweDRkODg5ZTFlLAorICAgICAgMHhkNjY4OWI2YiwgMHg3MTc1
YzcxYSwgMHhhY2QxYjdkZCwgMHhmYjllNDJiZSwgMHhiMjliNWUwZCwgMHhjMzNkMGU5MSwKKyAg
ICAgIDB4MWNlNDc5MjIsIDB4ZDM5YjgzMjksIDB4ODQ5M2QxMmUsIDB4YzRkNTcwZmIsIDB4NGY0
MjRhZTYsIDB4MjNkNWE1NzIsCisgICAgICAweDg3NmI2NjE2LCAweDUyNDVmMTYxLCAweDIxYWI1
NzhkLCAweDM4ZDc3ZGJkLCAweDFmNGVjYmZlLCAweDljMzQyMzMxLAorICAgICAgMHg5YmFjZDlk
NSwgMHg3NmZlMzEzOCwKKyAgfTsKKworICBFeHBsaWNpdFNlZWRTZXEgc2VlZF9zZXF1ZW5jZXsx
MiwgMzQsIDU2fTsKKyAgcmFuZGVuX3UzMiBlbmdpbmUoc2VlZF9zZXF1ZW5jZSk7CisjaWYgVVBE
QVRFX0dPTERFTgorICAodm9pZClrR29sZGVuOyAgLy8gU2lsZW5jZSB3YXJuaW5nLgorICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDIgKiBrTnVtR29sZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJp
bnRmKCIweCUwOHgsICIsIGVuZ2luZSgpKTsKKyAgICBpZiAoaSAlIDYgPT0gNSkgeworICAgICAg
cHJpbnRmKCJcbiIpOworICAgIH0KKyAgfQorICBwcmludGYoIlxuXG5cbiIpOworI2Vsc2UKKyAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBl
bmdpbmUoKSk7CisgIH0KKyAgZW5naW5lLnNlZWQoc2VlZF9zZXF1ZW5jZSk7CisgIGZvciAoY29u
c3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkp
OworICB9CisjZW5kaWYKK30KKworVEVTVChSYW5kZW5UZXN0LCBWZXJpZnlHb2xkZW5Gcm9tRGVz
ZXJpYWxpemVkRW5naW5lKSB7CisgIGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW2tOdW1Hb2xk
ZW5PdXRwdXRzXSA9IHsKKyAgICAgIDB4MDY3ZjlmOWFiOTE5NjU3YSwgMHgwNTM0NjA1OTEyOTg4
NTgzLCAweDhhMzAzZjcyZmVhYTY3M2YsCisgICAgICAweDc3YjdmZDc0NzkwOTE4NWMsIDB4ZDlh
ZjkwNDAzYzU2ZDg5MSwgMHhkOTM5YzZjYjIwNGQxNGI1LAorICAgICAgMHg3ZmJlNmI5NTRhNDdi
NDgzLCAweDhiMzFhNDdjYzM0Yzc2OGQsIDB4M2E5ZTU0NmRhMjcwMWE5YywKKyAgICAgIDB4NTI0
NjUzOTA0NjI1M2U3MSwgMHg0MTcxOTFmZmIyYTg0OGExLCAweDdiMWM3YmY1YTUwMDFkMDksCisg
ICAgICAweDk0ODliMTVkMTk0ZjIzNjEsIDB4ZmNlYmRlZWEzYmNkMjQ2MSwgMHhkNjQzMDI3Yzg1
NGNlYzk3LAorICAgICAgMHg1ODg1Mzk3ZjkxZTBkMjFjLCAweDUzMTczYjBlZmFlMzBkNTgsIDB4
MWM5YzcxMTY4NDQ5ZmFjMSwKKyAgICAgIDB4ZTM1ODIwMmI3MTFlZDhhYSwgMHg5NGUzOTE4ZWQx
ZDgyMjdjLCAweDViYjRlMjUxNDUwMTQ0Y2YsCisgICAgICAweGI1YzdhNTE5YjQ4OWFmM2IsIDB4
NmY4YjU2MGIxZjdiMzQ2OSwgMHhmZGUxMWRkNGExYzc0ZWVmLAorICAgICAgMHgzMzM4M2QyZjc2
NDU3ZGNmLCAweDMwNjBjMGVjNmRiOWZjZTEsIDB4MThmNDUxZmNkZGVlYzc2NiwKKyAgICAgIDB4
ZTczYzVkNmI5ZjI2ZGEyYSwgMHg4ZDRjYzU2NjY3MWIzMmE0LCAweGI4MTg5YjczNzc2YmM5ZmYs
CisgICAgICAweDQ5N2E3MGY5Y2FmMGJjMjMsIDB4MjNhZmNjNTA5NzkxZGNlYSwgMHgxOGFmNzBk
YzRiMjdkMzA2LAorICAgICAgMHhkMzg1M2Y5NTVhMGNlNWI5LCAweDQ0MWRiNmMwMWEwYWZiMTcs
IDB4ZDAxMzZjM2ZiOGUxZjEzZiwKKyAgICAgIDB4NWU0ZmQ2ZmMyZjMzNzgzYywgMHhlMGQyNDU0
OGFkYjVkYTUxLCAweDBmNGQ4MzYyYTdkMzQ4NWEsCisgICAgICAweDlmNTcyZDY4MjcwZmE1NjMs
IDB4NjM1MWZiYzgyMzAyNDM5MywgMHhhNjZkYmZjNjE4MTBlOWFiLAorICAgICAgMHgwZmYxN2Zj
MTRiNjUxYWY4LCAweGQ3NGM1NWRhZmI5OWU2MjMsIDB4MzYzMDNiYzFhZDg1YzZjMiwKKyAgICAg
IDB4NDkyMGNkNmEyYWY3ZTg5NywgMHgwYjg4NDhhZGRjMzBmZWNkLCAweDllMTU2MmVkYTY0ODhl
OTMsCisgICAgICAweDE5NzU1MzgwN2Q2MDc4MjgsIDB4YmVmNWVhZWRhNWUyMTIzNSwgMHgxOGQ5
MWQyNjE2YWNhNTI3LAorICAgICAgMHhiNzgyMTkzN2Y1Yzg3M2NkLCAweDJjZDRhZTU2NTBkYmVl
ZmMsIDB4YjM1YTY0Mzc2Zjc1ZmZkZiwKKyAgICAgIDB4OTIyNmQ0MTRkNjQ3ZmUwNywgMHg2NjNm
M2RiNDU1YmJiMzVlLCAweGE4MjllZWFkNmFlOTMyNDcsCisgICAgICAweDdmZDY5YzIwNGRkMGQy
NWYsIDB4YmUxNDExZjg5MWM5YWNiMSwgMHhkNDc2ZjM0YTUwNmQ1ZjExLAorICAgICAgMHhmNDIz
ZDI4MzE2NDljNWNhLCAweDFlNTAzOTYyOTUxYWJkNzUsIDB4ZWNjYzllOGIxZTM0YjUzNywKKyAg
ICAgIDB4YjExYTE0NzI5NDA0NDg1NCwgMHhjNGNmMjdmMGFiZjQ5MjlkLCAweGU5MTkzYWJmNmZh
MjRjOGMsCisgICAgICAweGE5NGEyNTllM2FiYTg4MDgsIDB4MjFkYzQxNDE5N2RlZmZhMywgMHhh
MmFlMjExZDFmZjYyMmFlLAorICAgICAgMHhmZTM5OTVjNDZiZTVhNGY0LCAweGU5OTg0YzI4NGJm
MTExMjgsIDB4Y2IxY2U5ZDJmMDg1MWE4MCwKKyAgICAgIDB4NDJmZWUxNzk3MWQ4N2NkOCwgMHhh
Yzc2YTk4ZDE3N2FkYzg4LCAweGEwOTczYjNkZWRjNGFmNmYsCisgICAgICAweGRmNTZkNmJiY2Ix
YjhlODYsIDB4ZjFlNjQ4NWY0MDdiMTFjOSwgMHgyYzYzZGU0ZGVjY2IxNWMwLAorICAgICAgMHg2
ZmU2OWRiMzJlZDRmYWQ3LCAweGFhNTFhNjVmODRiY2ExZjEsIDB4MjQyZjJlZTgxZDYwOGFmYywK
KyAgICAgIDB4OGViODhiMmI2OWZjMTUzYiwgMHgyMmMyMDA5OGJhZjczZmQxLCAweDU3NzU5NDY2
ZjU3NjQ4OGMsCisgICAgICAweDA3NWNhNTYyY2VhMWJlOWQsIDB4OWE3NDgxNGQ3M2QyODg5MSwg
MHg3M2QxNTU1ZmMwMmY0ZDNkLAorICAgICAgMHhjMTdmOGYyMTBlZTg5MzM3LCAweDQ2Y2NhNzk5
OWVhZWFmZDQsIDB4NWRiOGQ2YTMyN2EwZDhhYywKKyAgICAgIDB4Yjc5YjRmOTNjNzM4ZDdhMSwg
MHg5OTk0NTEyZjAwMzZkZWQxLCAweGQzODgzMDI2ZjM4NzQ3ZjQsCisgICAgICAweGYzMWY3NDU4
MDc4ZDA5N2MsIDB4NzM2Y2U0ZDQ4MDY4MDY2OSwgMHg3YTQ5NmY0YzdlMTAzM2UzLAorICAgICAg
MHhlY2Y4NWJmMjk3ZmJjNjhjLCAweDllMzdlMWQwZjI0ZjNjNGUsIDB4MTViNmUwNjdjYTA3NDZm
YywKKyAgICAgIDB4ZGQ0YTM5OTA1YzVkYjgxYywgMHhiNWRmYWZhN2JjZmRmN2RhLCAweGNhNjY0
NmZiNmY5MmEyNzYsCisgICAgICAweDFjNmIzNWYzNjNlZjBlZmQsIDB4NmEzM2QwNjAzN2FkOWY3
NiwgMHg0NTU0NDI0MWFmZDhmODBmLAorICAgICAgMHg4M2Y4ZDgzZjg1OWM5MGM1LCAweDIyYWVh
OWM1MzY1ZThjMTksIDB4ZmFjMzViMTFmMjBiNmE2YSwKKyAgICAgIDB4ZDFhY2Y0OWQxYTI3ZGQy
ZiwgMHhmMjgxY2QwOWM0ZmVkNDA1LCAweDA3NjAwMGE0MmNkMzhlNGYsCisgICAgICAweDZhY2Uz
MDA1NjUwNzA0NDUsIDB4NDYzYTYyNzgxYmRkYzRkYiwgMHgxNDc3MTI2YjQ2YjU2OWFjLAorICAg
ICAgMHgxMjdmMmJiMTUwMzVmYmI4LCAweGRmYTMwOTQ2MDQ5YzA0YTgsIDB4ODkwNzJhNTg2YmE4
ZGQzZSwKKyAgICAgIDB4NjJjODA5NTgyYmI3ZTc0ZCwgMHgyMmMwYzM2NDE0MDZjMjhiLCAweDli
NjZlMzZjNDdmZjAwNGQsCisgICAgICAweGI5Y2QyYzc1MTk2NTMzMzAsIDB4MTg2MDhkNzljZDdh
NTk4ZCwgMHg5MmMwYmQxMzIzZTUzZTMyLAorICAgICAgMHg4ODdmZjAwZGU4NTI0YWE1LCAweGEw
NzQ0MTBiNzg3YWJkMTAsIDB4MThhYjQxYjgwNTdhMjA2MywKKyAgICAgIDB4MTU2MGFiZjI2YmM1
Zjk4N307CisKKyNpZiBVUERBVEVfR09MREVOCisgICh2b2lkKWtHb2xkZW47ICAvLyBTaWxlbmNl
IHdhcm5pbmcuCisgIHN0ZDo6c2VlZF9zZXEgc2VlZF9zZXF1ZW5jZXsxLCAyLCAzLCA0LCA1fTsK
KyAgcmFuZGVuX3U2NCBlbmdpbmUoc2VlZF9zZXF1ZW5jZSk7CisgIHN0ZDo6b3N0cmluZ3N0cmVh
bSBzdHJlYW07CisgIHN0cmVhbSA8PCBlbmdpbmU7CisgIGF1dG8gc3RyID0gc3RyZWFtLnN0cigp
OworICBwcmludGYoIiVzXG5cbiIsIHN0ci5jX3N0cigpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBrTnVtR29sZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwMTZseCwgIiwg
ZW5naW5lKCkpOworICAgIGlmIChpICUgMyA9PSAyKSB7CisgICAgICBwcmludGYoIlxuIik7Cisg
ICAgfQorICB9CisgIHByaW50ZigiXG5cblxuIik7CisjZWxzZQorICByYW5kZW5fdTY0IGVuZ2lu
ZTsKKyAgc3RkOjppc3RyaW5nc3RyZWFtIHN0cmVhbSgKKyAgICAgICIwIDAgOTgyNDUwMTQzOTg4
NzI4NzQ3OSAzMjQyMjg0Mzk1MzUyMzk0Nzg1IDI0MzgzNjUzMDc3NDkzMzc3NyAiCisgICAgICAi
NDA0Nzk0MTgwNDcwODM2NTU5NiAxNzE2NTQ2ODEyNzI5ODM4NTgwMiA5NDkyNzYxMDM2NDU4ODky
NTUgIgorICAgICAgIjEwNjU5OTcwMzk0OTk4NjU3OTIxIDE2NTc1NzA4MzY4MTA5Mjk3ODcgMTE2
OTc3NDYyNjY2NjgwNTE0NTIgIgorICAgICAgIjk5NjcyMDk5NjkyOTk5MDUyMzAgMTQxNDAzOTAz
MzExNjE1MjQ0MzAgNzM4MzAxNDEyNDE4MzI3MTY4NCAiCisgICAgICAiMTMxNDY3MTkxMjc3MDIz
Mzc4NTIgMTM5ODMxNTUyMjAyOTU4MDcxNzEgMTExMjExMjU1ODc1NDIzNTkyNjQgIgorICAgICAg
IjE5NTc1NzgxMDk5MzI1MjY5NSAxNzEzODU4MDI0MzEwMzE3ODQ5MiAxMTMyNjAzMDc0NzI2MDky
MDUwMSAiCisgICAgICAiODU4NTA5NzMyMjQ3NDk2NTU5MCAxODM0MjU4MjgzOTMyODM1MDk5NSAx
NTA1Mjk4MjgyNDIwOTcyNDYzNCAiCisgICAgICAiNzMyMTg2MTM0Mzg3NDY4MzYwOSAxODA2Nzg2
OTExNzc4NzY3ODI2IDEwMTAwODUwODQyNjY1NTcyOTU1ICIKKyAgICAgICI5MjQ5MzI4OTUwNjUz
OTg1MDc4IDEzNjAwNjI0ODM1MzI2OTA5NzU5IDExMTM3OTYwMDYwOTQzODYwMjUxICIKKyAgICAg
ICIxMDIwODc4MTM0MTc5MjMyOTYyOSA5MjgyNzIzOTcxNDcxNTI1NTc3IDE2MzczMjcxNjE5NDg2
ODExMDMyIDMyIik7CisgIHN0cmVhbSA+PiBlbmdpbmU7CisgIGZvciAoY29uc3QgYXV0byYgZWxl
bSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOworICB9CisjZW5k
aWYKK30KKworVEVTVChSYW5kZW5UZXN0LCBJc0Zhc3RPclNsb3cpIHsKKyAgLy8gcmFuZGVuX2Vu
Z2luZSB0eXBpY2FsbHkgY29zdHMgfjVucyBwZXIgdmFsdWUgZm9yIHRoZSBvcHRpbWl6ZWQgY29k
ZSBwYXRocywKKyAgLy8gYW5kIHRoZSB+MTAwMG5zIHBlciB2YWx1ZSBmb3Igc2xvdyBjb2RlIHBh
dGhzLiAgSG93ZXZlciB3aGVuIHJ1bm5pbmcgdW5kZXIKKyAgLy8gbXNhbiwgYXNhbiwgZXRjLiBp
dCBjYW4gdGFrZSBtdWNoIGxvbmdlci4KKyAgLy8KKyAgLy8gVGhlIGVzdGltYXRlZCBvcGVyYXRp
b24gdGltZSBpcyBzb21ldGhpbmcgbGlrZToKKyAgLy8KKyAgLy8gbGludXgsIG9wdGltaXplZCB+
NW5zCisgIC8vIHBwYywgb3B0aW1pemVkIH43bnMKKyAgLy8gbmFjbCAoc2xvdyksIH4xMTAwbnMK
KyAgLy8KKyAgLy8gYGtDb3VudGAgaXMgY2hvc2VuIGJlbG93IHNvIHRoYXQsIGluIGRlYnVnIGJ1
aWxkcyBhbmQgd2l0aG91dCBoYXJkd2FyZQorICAvLyBhY2NlbGVyYXRpb24sIHRoZSB0ZXN0IChh
c3N1bWluZyB+MXVzIHBlciBjYWxsKSBzaG91bGQgZmluaXNoIGluIH4wLjFzCisgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IGtDb3VudCA9IDEwMDAwMDsKKyAgcmFuZGVuX3U2NCBlbmdpbmU7Cisg
IHJhbmRlbl91NjQ6OnJlc3VsdF90eXBlIHN1bSA9IDA7CisgIGF1dG8gc3RhcnQgPSBhYnNsOjpH
ZXRDdXJyZW50VGltZU5hbm9zKCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga0NvdW50OyBpKysp
IHsKKyAgICBzdW0gKz0gZW5naW5lKCk7CisgIH0KKyAgYXV0byBkdXJhdGlvbiA9IGFic2w6Okdl
dEN1cnJlbnRUaW1lTmFub3MoKSAtIHN0YXJ0OworCisgIEFCU0xfSU5URVJOQUxfTE9HKElORk8s
IGFic2w6OlN0ckNhdChzdGF0aWNfY2FzdDxkb3VibGU+KGR1cmF0aW9uKSAvCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihrQ291
bnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5zIikpOworCisg
IEVYUEVDVF9HVChzdW0sIDApOworICBFWFBFQ1RfR0UoZHVyYXRpb24sIGtDb3VudCk7ICAvLyBT
aG91bGQgYmUgc2xvd2VyIHRoYW4gMW5zIHBlciBjYWxsLgorfQorCit9ICAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2h3YWVzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi42YjgyZDFkMDdhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMuY2MKQEAgLTAsMCArMSw3MDAgQEAKKy8vIENvcHly
aWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisvLyBIRVJNRVRJQyBOT1RFOiBUaGUg
cmFuZGVuX2h3YWVzIHRhcmdldCBtdXN0IG5vdCBpbnRyb2R1Y2UgZHVwbGljYXRlCisvLyBzeW1i
b2xzIGZyb20gYXJiaXRyYXJ5IHN5c3RlbSBhbmQgb3RoZXIgaGVhZGVycywgc2luY2UgaXQgbWF5
IGJlIGJ1aWx0CisvLyB3aXRoIGRpZmZlcmVudCBmbGFncyBmcm9tIG90aGVyIHRhcmdldHMsIHVz
aW5nIGRpZmZlcmVudCBsZXZlbHMgb2YKKy8vIG9wdGltaXphdGlvbiwgcG90ZW50aWFsbHkgaW50
cm9kdWNpbmcgT0RSIHZpb2xhdGlvbnMuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5h
bC9yYW5kZW5faHdhZXMuaCIKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0cmlu
Zz4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3BsYXRmb3JtLmgiCisKKy8vIEFC
U0xfSEFWRV9BVFRSSUJVVEUKKyNpZiAhZGVmaW5lZChBQlNMX0hBVkVfQVRUUklCVVRFKQorI2lm
ZGVmIF9faGFzX2F0dHJpYnV0ZQorI2RlZmluZSBBQlNMX0hBVkVfQVRUUklCVVRFKHgpIF9faGFz
X2F0dHJpYnV0ZSh4KQorI2Vsc2UKKyNkZWZpbmUgQUJTTF9IQVZFX0FUVFJJQlVURSh4KSAwCisj
ZW5kaWYKKyNlbmRpZgorCisjaWYgQUJTTF9IQVZFX0FUVFJJQlVURShhbHdheXNfaW5saW5lKSB8
fCBcCisgICAgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fY2xhbmdfXykpCisjZGVm
aW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFwKKyAgX19h
dHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8g
V2UgY2FuIGFjaGlldmUgc29tZXRoaW5nIHNpbWlsYXIgdG8gYXR0cmlidXRlKChhbHdheXNfaW5s
aW5lKSkgd2l0aCBNU1ZDIGJ5CisvLyB1c2luZyB0aGUgX19mb3JjZWlubGluZSBrZXl3b3JkLCBo
b3dldmVyIHRoaXMgaXMgbm90IHBlcmZlY3QuIE1TVkMgaXMKKy8vIG11Y2ggbGVzcyBhZ2dyZXNz
aXZlIGFib3V0IGlubGluaW5nLCBhbmQgZXZlbiB3aXRoIHRoZSBfX2ZvcmNlaW5saW5lIGtleXdv
cmQuCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5F
IF9fZm9yY2VpbmxpbmUKKyNlbHNlCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJ
QlVURV9BTFdBWVNfSU5MSU5FCisjZW5kaWYKKworLy8gQUJTTF9BVFRSSUJVVEVfRkxBVFRFTiBl
bmFibGVzIG11Y2ggbW9yZSBhZ2dyZXNzaXZlIGlubGluaW5nIHdpdGhpbgorLy8gdGhlIGluZGlj
YXRlZCBmdW5jdGlvbi4KKyN1bmRlZiBBQlNMX0FUVFJJQlVURV9GTEFUVEVOCisjaWYgQUJTTF9I
QVZFX0FUVFJJQlVURShmbGF0dGVuKSB8fCAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQo
X19jbGFuZ19fKSkKKyNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfRkxBVFRFTiBfX2F0dHJpYnV0ZV9f
KChmbGF0dGVuKSkKKyNlbHNlCisjZGVmaW5lIEFCU0xfQVRUUklCVVRFX0ZMQVRURU4KKyNlbmRp
ZgorCisvLyBBQlNMX1JBTkRFTl9IV0FFU19JTVBMIGluZGljYXRlcyB3aGV0aGVyIHRoaXMgZmls
ZSB3aWxsIGNvbnRhaW4KKy8vIGEgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgaW1wbGVtZW50YXRpb24g
b2YgcmFuZGVuLCBvciB3aGV0aGVyIGl0CisvLyB3aWxsIGNvbnRhaW4gc3R1YnMgdGhhdCBleGl0
IHRoZSBwcm9jZXNzLgorI2lmIGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkgfHwgZGVmaW5lZChB
QlNMX0FSQ0hfWDg2XzMyKQorLy8gVGhlIHBsYXRmb3JtLmggZGlyZWN0aXZlcyBhcmUgc3VmZmlj
aWVudCB0byBpbmRpY2F0ZSB3aGV0aGVyCisvLyB3ZSBzaG91bGQgYnVpbGQgYWNjZWxlcmF0ZWQg
aW1wbGVtZW50YXRpb25zIGZvciB4ODYuCisjaWYgKEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMg
fHwgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENIKQorI2RlZmluZSBBQlNMX1JBTkRF
Tl9IV0FFU19JTVBMIDEKKyNlbmRpZgorI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQorLy8g
VGhlIHBsYXRmb3JtLmggZGlyZWN0aXZlcyBhcmUgc3VmZmljaWVudCB0byBpbmRpY2F0ZSB3aGV0
aGVyCisvLyB3ZSBzaG91bGQgYnVpbGQgYWNjZWxlcmF0ZWQgaW1wbGVtZW50YXRpb25zIGZvciBQ
UEMuCisvLworLy8gTk9URTogVGhpcyBoYXMgbW9zdGx5IGJlZW4gdGVzdGVkIG9uIDY0LWJpdCBQ
b3dlciB2YXJpYW50cywKKy8vIGFuZCBub3QgZW1iZWRkZWQgY3B1cyBzdWNoIGFzIHBvd2VycGMz
Mi04NTQwCisjaWYgQUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUworI2RlZmluZSBBQlNMX1JBTkRF
Tl9IV0FFU19JTVBMIDEKKyNlbmRpZgorI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfQVJNKSB8fCBk
ZWZpbmVkKEFCU0xfQVJDSF9BQVJDSDY0KQorLy8gQVJNIGlzIHNvbWV3aGF0IG1vcmUgY29tcGxp
Y2F0ZWQuIFdlIG1pZ2h0IHN1cHBvcnQgY3J5cHRvIG5hdGl2ZWx5Li4uCisjaWYgQUJTTF9IQVZF
X0FDQ0VMRVJBVEVEX0FFUyB8fCBcCisgICAgKGRlZmluZWQoX19BUk1fTkVPTikgJiYgZGVmaW5l
ZChfX0FSTV9GRUFUVVJFX0NSWVBUTykpCisjZGVmaW5lIEFCU0xfUkFOREVOX0hXQUVTX0lNUEwg
MQorCisjZWxpZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0ggJiYgIWRlZmluZWQo
X19BUFBMRV9fKSAmJiBcCisgICAgKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID4gNCB8
fCBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID4gOSkKKy8vIC4uLm9yLCBvbiBHQ0Ms
IHdlIGNhbiB1c2UgYW4gQVNNIGRpcmVjdGl2ZSB0bworLy8gaW5zdHJ1Y3QgdGhlIGFzc2VtYmVy
IHRvIGFsbG93IGNyeXB0byBpbnN0cnVjdGlvbnMuCisjZGVmaW5lIEFCU0xfUkFOREVOX0hXQUVT
X0lNUEwgMQorI2RlZmluZSBBQlNMX1JBTkRFTl9IV0FFU19JTVBMX0NSWVBUT19ESVJFQ1RJVkUg
MQorI2VuZGlmCisjZWxzZQorLy8gSFdBRVMgaXMgdW5zdXBwb3J0ZWQgYnkgdGhlc2UgYXJjaGl0
ZWN0dXJlcyAvIHBsYXRmb3JtczoKKy8vICAgX19teXJpYWQyX18KKy8vICAgX19taXBzX18KKy8v
CisvLyBPdGhlciBhcmNoaXRlY3R1cmVzIC8gcGxhdGZvcm1zIGFyZSB1bmtub3duLgorLy8KKy8v
IFNlZSB0aGUgQWJzZWlsIGRvY3VtZW50YXRpb24gb24gc3VwcG9ydGVkIG1hY3JvcyBhdDoKKy8v
IGh0dHBzOi8vYWJzZWlsLmlvL2RvY3MvY3BwL3BsYXRmb3Jtcy9tYWNyb3MKKyNlbmRpZgorCisj
aWYgIWRlZmluZWQoQUJTTF9SQU5ERU5fSFdBRVNfSU1QTCkKKy8vIE5vIGFjY2VsZXJhdGVkIGlt
cGxlbWVudGF0aW9uIGlzIHN1cHBvcnRlZC4KKy8vIFRoZSBSYW5kZW5Id0FlcyBmdW5jdGlvbnMg
YXJlIHN0dWJzIHRoYXQgcHJpbnQgYW4gZXJyb3IgYW5kIGV4aXQuCisKKyNpbmNsdWRlIDxjc3Rk
aW8+CisjaW5jbHVkZSA8Y3N0ZGxpYj4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJh
bmRvbV9pbnRlcm5hbCB7CisKKy8vIE5vIGFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9uLgorYm9v
bCBIYXNSYW5kZW5Id0Flc0ltcGxlbWVudGF0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKworLy8g
Tk9MSU5UTkVYVExJTkUKK2NvbnN0IHZvaWQqIFJhbmRlbkh3QWVzOjpHZXRLZXlzKCkgeworICAv
LyBBdHRlbXB0ZWQgdG8gZGlzcGF0Y2ggdG8gYW4gdW5zdXBwb3J0ZWQgZGlzcGF0Y2ggdGFyZ2V0
LgorICBjb25zdCBpbnQgZCA9IEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSDsKKyAg
ZnByaW50ZihzdGRlcnIsICJBRVMgSGFyZHdhcmUgZGV0ZWN0aW9uIGZhaWxlZCAoJWQpLlxuIiwg
ZCk7CisgIGV4aXQoMSk7CisgIHJldHVybiBudWxscHRyOworfQorCisvLyBOT0xJTlRORVhUTElO
RQordm9pZCBSYW5kZW5Id0Flczo6QWJzb3JiKGNvbnN0IHZvaWQqLCB2b2lkKikgeworICAvLyBB
dHRlbXB0ZWQgdG8gZGlzcGF0Y2ggdG8gYW4gdW5zdXBwb3J0ZWQgZGlzcGF0Y2ggdGFyZ2V0Lgor
ICBjb25zdCBpbnQgZCA9IEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSDsKKyAgZnBy
aW50ZihzdGRlcnIsICJBRVMgSGFyZHdhcmUgZGV0ZWN0aW9uIGZhaWxlZCAoJWQpLlxuIiwgZCk7
CisgIGV4aXQoMSk7Cit9CisKKy8vIE5PTElOVE5FWFRMSU5FCit2b2lkIFJhbmRlbkh3QWVzOjpH
ZW5lcmF0ZShjb25zdCB2b2lkKiwgdm9pZCopIHsKKyAgLy8gQXR0ZW1wdGVkIHRvIGRpc3BhdGNo
IHRvIGFuIHVuc3VwcG9ydGVkIGRpc3BhdGNoIHRhcmdldC4KKyAgY29uc3QgaW50IGQgPSBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0g7CisgIGZwcmludGYoc3RkZXJyLCAiQUVTIEhh
cmR3YXJlIGRldGVjdGlvbiBmYWlsZWQgKCVkKS5cbiIsIGQpOworICBleGl0KDEpOworfQorCit9
ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
ZWxzZSAgLy8gZGVmaW5lZChBQlNMX1JBTkRFTl9IV0FFU19JTVBMKQorLy8KKy8vIEFjY2VsZXJh
dGVkIGltcGxlbWVudGF0aW9ucyBhcmUgc3VwcG9ydGVkLgorLy8gV2UgbmVlZCB0aGUgcGVyLWFy
Y2hpdGVjdHVyZSBpbmNsdWRlcyBhbmQgZGVmaW5lcy4KKy8vCisKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9yYW5kZW5fdHJhaXRzLmgiCisKKy8vIEFCU0xfRlVOQ1RJT05fQUxJR04z
MiBkZWZpbmVzIGEgMzItYnl0ZSBhbGlnbm1lbnQgYXR0cmlidXRlCisvLyBmb3IgdGhlIGZ1bmN0
aW9ucyBpbiB0aGlzIGZpbGUuCisvLworLy8gTk9URTogRGV0ZXJtaW5lIHdoZXRoZXIgd2UgYWN0
dWFsbHkgaGF2ZSBhbnkgd2lucyBmcm9tIEFMSUdOMzIKKy8vIHVzaW5nIG1pY3JvYmVuY2htYXJr
cy4gSWYgbm90LCByZW1vdmUuCisjdW5kZWYgQUJTTF9GVU5DVElPTl9BTElHTjMyCisjaWYgQUJT
TF9IQVZFX0FUVFJJQlVURShhbGlnbmVkKSB8fCAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmlu
ZWQoX19jbGFuZ19fKSkKKyNkZWZpbmUgQUJTTF9GVU5DVElPTl9BTElHTjMyIF9fYXR0cmlidXRl
X18oKGFsaWduZWQoMzIpKSkKKyNlbHNlCisjZGVmaW5lIEFCU0xfRlVOQ1RJT05fQUxJR04zMgor
I2VuZGlmCisKKy8vIFRBUkdFVF9DUllQVE8gZGVmaW5lcyBhIGNyeXB0byBhdHRyaWJ1dGUgZm9y
IGVhY2ggYXJjaGl0ZWN0dXJlLgorLy8KKy8vIE5PVEU6IEV2YWx1YXRlIHdoZXRoZXIgd2Ugc2hv
dWxkIGVsaW1pbmF0ZSBBQlNMX1RBUkdFVF9DUllQVE8uCisjaWYgKGRlZmluZWQoX19jbGFuZ19f
KSB8fCBkZWZpbmVkKF9fR05VQ19fKSkKKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9YODZfNjQpIHx8
IGRlZmluZWQoQUJTTF9BUkNIX1g4Nl8zMikKKyNkZWZpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPIF9f
YXR0cmlidXRlX18oKHRhcmdldCgiYWVzIikpKQorI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBD
KQorI2RlZmluZSBBQlNMX1RBUkdFVF9DUllQVE8gX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJjcnlw
dG8iKSkpCisjZWxzZQorI2RlZmluZSBBQlNMX1RBUkdFVF9DUllQVE8KKyNlbmRpZgorI2Vsc2UK
KyNkZWZpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPCisjZW5kaWYKKworI2lmIGRlZmluZWQoQUJTTF9B
UkNIX1BQQykKKy8vIE5PVEU6IEtlZXAgaW4gbWluZCB0aGF0IFBQQyBjYW4gb3BlcmF0ZSBpbiBs
aXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gbW9kZSwKKy8vIGhvd2V2ZXIgdGhlIFBQQyBhbHRp
dmVjIHZlY3RvciByZWdpc3RlcnMgKGFuZCB0aHVzIHRoZSBBRVMgaW5zdHJ1Y3Rpb25zKQorLy8g
YWx3YXlzIG9wZXJhdGUgaW4gYmlnLWVuZGlhbiBtb2RlLgorCisjaW5jbHVkZSA8YWx0aXZlYy5o
PgorLy8gPGFsdGl2ZWMuaD4gI2RlZmluZXMgdmVjdG9yIF9fdmVjdG9yOyBpbiBDKyssIHRoaXMg
aXMgYmFkIGZvcm0uCisjdW5kZWYgdmVjdG9yCisKKy8vIFJlbHkgb24gdGhlIFBvd2VyUEMgQWx0
aVZlYyB2ZWN0b3Igb3BlcmF0aW9ucyBmb3IgYWNjZWxlcmF0ZWQgQUVTCisvLyBpbnN0cnVjdGlv
bnMuIEdDQyBzdXBwb3J0IG9mIHRoZSBQUEMgdmVjdG9yIHR5cGVzIGlzIGRlc2NyaWJlZCBpbjoK
Ky8vIGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC45LjAvZ2NjL1Bvd2VyUEMt
QWx0aVZlY18wMDJmVlNYLUJ1aWx0LWluLUZ1bmN0aW9ucy5odG1sCisvLworLy8gQWxyZWFkeSBw
cm92aWRlcyBvcGVyYXRvcl49LgordXNpbmcgVmVjdG9yMTI4ID0gX192ZWN0b3IgdW5zaWduZWQg
bG9uZyBsb25nOyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorCituYW1lc3BhY2UgeworCitpbmxp
bmUgQUJTTF9UQVJHRVRfQ1JZUFRPIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdB
WVNfSU5MSU5FIFZlY3RvcjEyOAorUmV2ZXJzZUJ5dGVzKGNvbnN0IFZlY3RvcjEyOCYgdikgewor
ICAvLyBSZXZlcnNlcyB0aGUgYnl0ZXMgb2YgdGhlIHZlY3Rvci4KKyAgY29uc3QgX192ZWN0b3Ig
dW5zaWduZWQgY2hhciBwZXJtID0gezE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LCAgNiwgIDUsICA0LCAgMywgIDIs
ICAxLCAwfTsKKyAgcmV0dXJuIHZlY19wZXJtKHYsIHYsIHBlcm0pOworfQorCisvLyBXQVJOSU5H
OiB0aGVzZSBsb2FkL3N0b3JlIGluIG5hdGl2ZSBieXRlIG9yZGVyLiBJdCBpcyBPSyB0byBsb2Fk
IGFuZCB0aGVuCisvLyBzdG9yZSBhbiB1bmNoYW5nZWQgdmVjdG9yLCBidXQgaW50ZXJwcmV0aW5n
IHRoZSBiaXRzIGFzIGEgbnVtYmVyIG9yIGlucHV0CisvLyB0byBBRVMgd2lsbCBoYXZlIHVuZGVm
aW5lZCByZXN1bHRzLgoraW5saW5lIEFCU0xfVEFSR0VUX0NSWVBUTyBBQlNMX1JBTkRPTV9JTlRF
Uk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBWZWN0b3IxMjgKK1ZlY3RvcjEyOExvYWQoY29u
c3Qgdm9pZCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1QgZnJvbSkgeworICByZXR1cm4g
dmVjX3ZzeF9sZCgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFZlY3RvcjEyOCo+KGZyb20pKTsK
K30KKworaW5saW5lIEFCU0xfVEFSR0VUX0NSWVBUTyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRS
SUJVVEVfQUxXQVlTX0lOTElORSB2b2lkCitWZWN0b3IxMjhTdG9yZShjb25zdCBWZWN0b3IxMjgm
IHYsIHZvaWQqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHRvKSB7CisgIHZlY192c3hf
c3QodiwgMCwgcmVpbnRlcnByZXRfY2FzdDxWZWN0b3IxMjgqPih0bykpOworfQorCisvLyBPbmUg
cm91bmQgb2YgQUVTLiAicm91bmRfa2V5IiBpcyBhIHB1YmxpYyBjb25zdGFudCBmb3IgYnJlYWtp
bmcgdGhlCisvLyBzeW1tZXRyeSBvZiBBRVMgKGVuc3VyZXMgcHJldmlvdXNseSBlcXVhbCBjb2x1
bW5zIGRpZmZlciBhZnRlcndhcmRzKS4KK2lubGluZSBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9S
QU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgVmVjdG9yMTI4CitBZXNSb3Vu
ZChjb25zdCBWZWN0b3IxMjgmIHN0YXRlLCBjb25zdCBWZWN0b3IxMjgmIHJvdW5kX2tleSkgewor
ICByZXR1cm4gVmVjdG9yMTI4KF9fYnVpbHRpbl9jcnlwdG9fdmNpcGhlcihzdGF0ZSwgcm91bmRf
a2V5KSk7Cit9CisKKy8vIEVuYWJsZXMgbmF0aXZlIGxvYWRzIGluIHRoZSByb3VuZCBsb29wIGJ5
IHByZS1zd2FwcGluZy4KK2lubGluZSBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9SQU5ET01fSU5U
RVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgdm9pZAorU3dhcEVuZGlhbih1aW50NjRfdCog
QUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc3RhdGUpIHsKKyAgdXNpbmcgYWJzbDo6cmFu
ZG9tX2ludGVybmFsOjpSYW5kZW5UcmFpdHM7CisgIGNvbnN0ZXhwciBzaXplX3Qga0xhbmVzID0g
MjsKKyAgY29uc3RleHByIHNpemVfdCBrRmVpc3RlbEJsb2NrcyA9IFJhbmRlblRyYWl0czo6a0Zl
aXN0ZWxCbG9ja3M7CisKKyAgZm9yICh1aW50MzJfdCBicmFuY2ggPSAwOyBicmFuY2ggPCBrRmVp
c3RlbEJsb2NrczsgKyticmFuY2gpIHsKKyAgICBjb25zdCBWZWN0b3IxMjggdiA9IFJldmVyc2VC
eXRlcyhWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogYnJhbmNoKSk7CisgICAgVmVjdG9y
MTI4U3RvcmUodiwgc3RhdGUgKyBrTGFuZXMgKiBicmFuY2gpOworICB9Cit9CisKK30gIC8vIG5h
bWVzcGFjZQorCisjZWxpZiBkZWZpbmVkKEFCU0xfQVJDSF9BUk0pIHx8IGRlZmluZWQoQUJTTF9B
UkNIX0FBUkNINjQpCisKKy8vIFRoaXMgYXNtIGRpcmVjdGl2ZSB3aWxsIGNhdXNlIHRoZSBmaWxl
IHRvIGJlIGNvbXBpbGVkIHdpdGggY3J5cHRvIGV4dGVuc2lvbnMKKy8vIHdoZXRoZXIgb3Igbm90
IHRoZSBjcHUtYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIGl0LgorI2lmIEFCU0xfUkFOREVOX0hXQUVT
X0lNUExfQ1JZUFRPX0RJUkVDVElWRQorYXNtKCIuYXJjaF9leHRlbnNpb24gIGNyeXB0b1xuIik7
CisKKy8vIE92ZXJyaWRlIG1pc3NpbmcgZGVmaW5lcy4KKyNpZiAhZGVmaW5lZChfX0FSTV9ORU9O
KQorI2RlZmluZSBfX0FSTV9ORU9OIDEKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoX19BUk1fRkVB
VFVSRV9DUllQVE8pCisjZGVmaW5lIF9fQVJNX0ZFQVRVUkVfQ1JZUFRPIDEKKyNlbmRpZgorCisj
ZW5kaWYKKworLy8gUmVseSBvbiB0aGUgQVJNIE5FT04rQ3J5cHRvIGFkdmFuY2VkIHNpbWQgdHlw
ZXMsIGRlZmluZWQgaW4gPGFybV9uZW9uLmg+LgorLy8gdWludDh4MTZfdCBpcyB0aGUgdXNlciBh
bGlhcyBmb3IgdW5kZXJseWluZyBfX3NpbWQxMjhfdWludDhfdCB0eXBlLgorLy8gaHR0cDovL2lu
Zm9jZW50ZXIuYXJtLmNvbS9oZWxwL3RvcGljL2NvbS5hcm0uZG9jLmloaTAwNzNhL0lISTAwNzNB
X2FybV9uZW9uX2ludHJpbnNpY3NfcmVmLnBkZgorLy8KKy8vIDxhcm1fbmVvbj4gZGVmaW5lcyB0
aGUgZm9sbG93aW5nCisvLworLy8gdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3ZlY3Rvcl90
eXBlKDE2KSkpIHVpbnQ4X3QgdWludDh4MTZfdDsKKy8vIHR5cGVkZWYgX19hdHRyaWJ1dGVfXygo
bmVvbl92ZWN0b3JfdHlwZSgxNikpKSBpbnQ4X3QgaW50OHgxNl90OworLy8gdHlwZWRlZiBfX2F0
dHJpYnV0ZV9fKChuZW9uX3BvbHl2ZWN0b3JfdHlwZSgxNikpKSBpbnQ4X3QgcG9seTh4MTZfdDsK
Ky8vCisvLyB2bGQxcV92CisvLyB2c3QxcV92CisvLyB2YWVzZXFfdgorLy8gdmFlc21jcV92Cisj
aW5jbHVkZSA8YXJtX25lb24uaD4KKworLy8gQWxyZWFkeSBwcm92aWRlcyBvcGVyYXRvcl49Lgor
dXNpbmcgVmVjdG9yMTI4ID0gdWludDh4MTZfdDsKKworbmFtZXNwYWNlIHsKKworaW5saW5lIEFC
U0xfVEFSR0VUX0NSWVBUTyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lO
TElORSBWZWN0b3IxMjgKK1ZlY3RvcjEyOExvYWQoY29uc3Qgdm9pZCogQUJTTF9SQU5ET01fSU5U
RVJOQUxfUkVTVFJJQ1QgZnJvbSkgeworICByZXR1cm4gdmxkMXFfdTgocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZnJvbSkpOworfQorCitpbmxpbmUgQUJTTF9UQVJHRVRfQ1JZUFRP
IEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIHZvaWQKK1ZlY3Rv
cjEyOFN0b3JlKGNvbnN0IFZlY3RvcjEyOCYgdiwgdm9pZCogQUJTTF9SQU5ET01fSU5URVJOQUxf
UkVTVFJJQ1QgdG8pIHsKKyAgdnN0MXFfdTgocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odG8p
LCB2KTsKK30KKworLy8gT25lIHJvdW5kIG9mIEFFUy4gInJvdW5kX2tleSIgaXMgYSBwdWJsaWMg
Y29uc3RhbnQgZm9yIGJyZWFraW5nIHRoZQorLy8gc3ltbWV0cnkgb2YgQUVTIChlbnN1cmVzIHBy
ZXZpb3VzbHkgZXF1YWwgY29sdW1ucyBkaWZmZXIgYWZ0ZXJ3YXJkcykuCitpbmxpbmUgQUJTTF9U
QVJHRVRfQ1JZUFRPIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5F
IFZlY3RvcjEyOAorQWVzUm91bmQoY29uc3QgVmVjdG9yMTI4JiBzdGF0ZSwgY29uc3QgVmVjdG9y
MTI4JiByb3VuZF9rZXkpIHsKKyAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGFsd2F5cyB1c2UgdGhl
IGZ1bGwgcm91bmQgZnVuY3Rpb24gLSBvbWl0dGluZyB0aGUKKyAgLy8gZmluYWwgTWl4Q29sdW1u
cyByZWR1Y2VzIHNlY3VyaXR5IFtodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEwLzA0MS5wZGZd
CisgIC8vIGFuZCBkb2VzIG5vdCBoZWxwIGJlY2F1c2Ugd2UgbmV2ZXIgZGVjcnlwdC4KKyAgLy8K
KyAgLy8gTm90ZSB0aGF0IEFSTSBkaXZpZGVzIEFFUyBpbnN0cnVjdGlvbnMgZGlmZmVyZW50bHkg
dGhhbiB4ODYgLyBQUEMsCisgIC8vIEFuZCB3ZSBuZWVkIHRvIHNraXAgdGhlIGZpcnN0IEFkZFJv
dW5kS2V5IHN0ZXAgYW5kIGFkZCBhbiBleHRyYQorICAvLyBBZGRSb3VuZEtleSBzdGVwIHRvIHRo
ZSBlbmQuIEx1Y2t5IGZvciB1cyB0aGlzIGlzIGp1c3QgWE9SLgorICByZXR1cm4gdmFlc21jcV91
OCh2YWVzZXFfdTgoc3RhdGUsIHVpbnQ4eDE2X3R7fSkpIF4gcm91bmRfa2V5OworfQorCitpbmxp
bmUgQUJTTF9UQVJHRVRfQ1JZUFRPIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdB
WVNfSU5MSU5FIHZvaWQKK1N3YXBFbmRpYW4odWludDY0X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFM
X1JFU1RSSUNUKSB7fQorCit9ICAvLyBuYW1lc3BhY2UKKworI2VsaWYgZGVmaW5lZChBQlNMX0FS
Q0hfWDg2XzY0KSB8fCBkZWZpbmVkKEFCU0xfQVJDSF9YODZfMzIpCisvLyBPbiB4ODYgd2UgcmVs
eSBvbiB0aGUgYWVzbmkgaW5zdHJ1Y3Rpb25zCisjaW5jbHVkZSA8d21taW50cmluLmg+CisKK25h
bWVzcGFjZSB7CisKKy8vIFZlY3RvcjEyOCBjbGFzcyBpcyBvbmx5IHdyYXBwZXIgZm9yIF9fbTEy
OGksIGJlbmNobWFyayBpbmRpY2F0ZXMgdGhhdCBpdCdzCisvLyBmYXN0ZXIgdGhhbiB1c2luZyBf
X20xMjhpIGRpcmVjdGx5LgorY2xhc3MgVmVjdG9yMTI4IHsKKyBwdWJsaWM6CisgIC8vIENvbnZl
cnQgZnJvbS90byBpbnRyaW5zaWNzLgorICBpbmxpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQVRU
UklCVVRFX0FMV0FZU19JTkxJTkUgZXhwbGljaXQgVmVjdG9yMTI4KAorICAgICAgY29uc3QgX19t
MTI4aSYgVmVjdG9yMTI4KQorICAgICAgOiBkYXRhXyhWZWN0b3IxMjgpIHt9CisKKyAgaW5saW5l
IEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIF9fbTEyOGkgZGF0
YSgpIGNvbnN0IHsKKyAgICByZXR1cm4gZGF0YV87CisgIH0KKworICBpbmxpbmUgQUJTTF9SQU5E
T01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgVmVjdG9yMTI4JiBvcGVyYXRvcl49
KAorICAgICAgY29uc3QgVmVjdG9yMTI4JiBvdGhlcikgeworICAgIGRhdGFfID0gX21tX3hvcl9z
aTEyOChkYXRhXywgb3RoZXIuZGF0YSgpKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworIHBy
aXZhdGU6CisgIF9fbTEyOGkgZGF0YV87Cit9OworCitpbmxpbmUgQUJTTF9UQVJHRVRfQ1JZUFRP
IEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFZlY3RvcjEyOAor
VmVjdG9yMTI4TG9hZChjb25zdCB2b2lkKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBm
cm9tKSB7CisgIHJldHVybiBWZWN0b3IxMjgoX21tX2xvYWRfc2kxMjgocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBfX20xMjhpKj4oZnJvbSkpKTsKK30KKworaW5saW5lIEFCU0xfVEFSR0VUX0NSWVBU
TyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSB2b2lkCitWZWN0
b3IxMjhTdG9yZShjb25zdCBWZWN0b3IxMjgmIHYsIHZvaWQqIEFCU0xfUkFORE9NX0lOVEVSTkFM
X1JFU1RSSUNUIHRvKSB7CisgIF9tbV9zdG9yZV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEy
OGkgKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVD4odG8pLAorICAgICAgICAgICAgICAg
ICAgdi5kYXRhKCkpOworfQorCisvLyBPbmUgcm91bmQgb2YgQUVTLiAicm91bmRfa2V5IiBpcyBh
IHB1YmxpYyBjb25zdGFudCBmb3IgYnJlYWtpbmcgdGhlCisvLyBzeW1tZXRyeSBvZiBBRVMgKGVu
c3VyZXMgcHJldmlvdXNseSBlcXVhbCBjb2x1bW5zIGRpZmZlciBhZnRlcndhcmRzKS4KK2lubGlu
ZSBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZ
U19JTkxJTkUgVmVjdG9yMTI4CitBZXNSb3VuZChjb25zdCBWZWN0b3IxMjgmIHN0YXRlLCBjb25z
dCBWZWN0b3IxMjgmIHJvdW5kX2tleSkgeworICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gYWx3YXlz
IHVzZSB0aGUgZnVsbCByb3VuZCBmdW5jdGlvbiAtIG9taXR0aW5nIHRoZQorICAvLyBmaW5hbCBN
aXhDb2x1bW5zIHJlZHVjZXMgc2VjdXJpdHkgW2h0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTAv
MDQxLnBkZl0KKyAgLy8gYW5kIGRvZXMgbm90IGhlbHAgYmVjYXVzZSB3ZSBuZXZlciBkZWNyeXB0
LgorICByZXR1cm4gVmVjdG9yMTI4KF9tbV9hZXNlbmNfc2kxMjgoc3RhdGUuZGF0YSgpLCByb3Vu
ZF9rZXkuZGF0YSgpKSk7Cit9CisKK2lubGluZSBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9SQU5E
T01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgdm9pZAorU3dhcEVuZGlhbih1aW50
NjRfdCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1QpIHt9CisKK30gIC8vIG5hbWVzcGFj
ZQorCisjZW5kaWYKKworbmFtZXNwYWNlIHsKKworLy8gdTY0eDIgaXMgYSAxMjgtYml0LCAoMiB4
IHVpbnQ2NF90IGxhbmVzKSBzdHJ1Y3QgdXNlZCB0byBzdG9yZQorLy8gdGhlIHJhbmRlbl9rZXlz
Lgorc3RydWN0IGFsaWduYXMoMTYpIHU2NHgyIHsKKyAgY29uc3RleHByIHU2NHgyKHVpbnQ2NF90
IGhpLCB1aW50NjRfdCBsbykKKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9QUEMpCisgICAgICAvLyBU
aGlzIGhhcyBiZWVuIHRlc3RlZCB3aXRoIFBQQyBydW5uaW5nIGluIGxpdHRsZS1lbmRpYW4gbW9k
ZTsKKyAgICAgIC8vIFdlIGJ5dGUtc3dhcCB0aGUgdTY0eDIgc3RydWN0dXJlIGZyb20gbGl0dGxl
LWVuZGlhbiB0byBiaWctZW5kaWFuCisgICAgICAvLyBiZWNhdXNlIGFsdGl2ZWMgYWx3YXlzIHJ1
bnMgaW4gYmlnLWVuZGlhbiBtb2RlLgorICAgICAgOiB2e19fYnVpbHRpbl9ic3dhcDY0KGhpKSwg
X19idWlsdGluX2Jzd2FwNjQobG8pfSB7CisjZWxzZQorICAgICAgOiB2e2xvLCBoaX0geworI2Vu
ZGlmCisgIH0KKworICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHU2NHgyJiBvdGhl
cikgY29uc3QgeworICAgIHJldHVybiB2WzBdID09IG90aGVyLnZbMF0gJiYgdlsxXSA9PSBvdGhl
ci52WzFdOworICB9CisKKyAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCB1NjR4MiYg
b3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgIH0KKworICB1
aW50NjRfdCB2WzJdOworfTsgIC8vIG5hbWVzcGFjZQorCisjaWZkZWYgX19jbGFuZ19fCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI2VuZGlmCisKKy8vIEF0IHRoaXMgcG9pbnQsIGFsbCBv
ZiB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgZmVhdHVyZXMgaGF2ZSBiZWVuIGRlZmluZWQgLworLy8g
aW1wbGVtZW50ZWQuCisvLworLy8gUkVRVUlSRVM6IHVzaW5nIHU2NHgyID0gLi4uCisvLyBSRVFV
SVJFUzogdXNpbmcgVmVjdG9yMTI4ID0gLi4uCisvLyBSRVFVSVJFUzogVmVjdG9yMTI4IFZlY3Rv
cjEyOExvYWQodm9pZCopIHsuLi59CisvLyBSRVFVSVJFUzogdm9pZCBWZWN0b3IxMjhTdG9yZShW
ZWN0b3IxMjgsIHZvaWQqKSB7Li4ufQorLy8gUkVRVUlSRVM6IFZlY3RvcjEyOCBBZXNSb3VuZChW
ZWN0b3IxMjgsIFZlY3RvcjEyOCkgey4uLn0KKy8vIFJFUVVJUkVTOiB2b2lkIFN3YXBFbmRpYW4o
dWludDY0X3QqKSB7Li4ufQorLy8KKy8vIFBST1ZJREVTOiBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OlJhbmRlbkh3QWVzOjpBYnNvcmIKKy8vIFBST1ZJREVTOiBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OlJhbmRlbkh3QWVzOjpHZW5lcmF0ZQorCisvLyBSQU5EZW4gPSBSQU5Eb20gZ2VuZXJhdG9yIG9y
IGJlZXRyb290cyBpbiBTd2lzcyBHZXJtYW4uCisvLyAnU3Ryb25nJyAod2VsbC1kaXN0cmlidXRl
ZCwgdW5wcmVkaWN0YWJsZSwgYmFja3RyYWNraW5nLXJlc2lzdGFudCkgcmFuZG9tCisvLyBnZW5l
cmF0b3IsIGZhc3RlciBpbiBzb21lIGJlbmNobWFya3MgdGhhbiBzdGQ6Om10MTk5MzdfNjQgYW5k
IHBjZzY0X2MzMi4KKy8vCisvLyBIaWdoLWxldmVsIHN1bW1hcnk6CisvLyAxKSBSZXZlcmllIChz
ZWUgIkEgUm9idXN0IGFuZCBTcG9uZ2UtTGlrZSBQUk5HIHdpdGggSW1wcm92ZWQgRWZmaWNpZW5j
eSIpIGlzCisvLyAgICBhIHNwb25nZS1saWtlIHJhbmRvbSBnZW5lcmF0b3IgdGhhdCByZXF1aXJl
cyBhIGNyeXB0b2dyYXBoaWMgcGVybXV0YXRpb24uCisvLyAgICBJdCBpbXByb3ZlcyB1cG9uICJQ
cm92YWJseSBSb2J1c3QgU3BvbmdlLUJhc2VkIFBSTkdzIGFuZCBLREZzIiBieQorLy8gICAgYWNo
aWV2aW5nIGJhY2t0cmFja2luZyByZXNpc3RhbmNlIHdpdGggb25seSBvbmUgUGVybXV0ZSgpIHBl
ciBidWZmZXIuCisvLworLy8gMikgIlNpbXBpcmEgdjI6IEEgRmFtaWx5IG9mIEVmZmljaWVudCBQ
ZXJtdXRhdGlvbnMgVXNpbmcgdGhlIEFFUyBSb3VuZAorLy8gICAgRnVuY3Rpb24iIGNvbnN0cnVj
dHMgdXAgdG8gMTAyNC1iaXQgcGVybXV0YXRpb25zIHVzaW5nIGFuIGltcHJvdmVkCisvLyAgICBH
ZW5lcmFsaXplZCBGZWlzdGVsIG5ldHdvcmsgd2l0aCAyLXJvdW5kIEFFUy0xMjggZnVuY3Rpb25z
LiBUaGlzIEZlaXN0ZWwKKy8vICAgIGJsb2NrIHNodWZmbGUgYWNoaWV2ZXMgZGlmZnVzaW9uIGZh
c3RlciBhbmQgaXMgbGVzcyB2dWxuZXJhYmxlIHRvCisvLyAgICBzbGljZWQtYmljbGlxdWUgYXR0
YWNrcyB0aGFuIHRoZSBUeXBlLTIgY3ljbGljIHNodWZmbGUuCisvLworLy8gMykgIkltcHJvdmlu
ZyB0aGUgR2VuZXJhbGl6ZWQgRmVpc3RlbCIgYW5kICJOZXcgY3JpdGVyaW9uIGZvciBkaWZmdXNp
b24KKy8vICAgIHByb3BlcnR5IiBleHRlbmRzIHRoZSBzYW1lIGtpbmQgb2YgaW1wcm92ZWQgRmVp
c3RlbCBibG9jayBzaHVmZmxlIHRvIDE2CisvLyAgICBicmFuY2hlcywgd2hpY2ggZW5hYmxlcyBh
IDIwNDgtYml0IHBlcm11dGF0aW9uLgorLy8KKy8vIFdlIGNvbWJpbmUgdGhlc2UgdGhyZWUgaWRl
YXMgYW5kIGFsc28gY2hhbmdlIFNpbXBpcmEncyBzdWJyb3VuZCBrZXlzIGZyb20KKy8vIHN0cnVj
dHVyZWQvbG93LWVudHJvcHkgY291bnRlcnMgdG8gZGlnaXRzIG9mIFBpLgorCisvLyBSYW5kZW4g
Y29uc3RhbnRzLgordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSYW5kZW5UcmFpdHM7Citj
b25zdGV4cHIgc2l6ZV90IGtTdGF0ZUJ5dGVzID0gUmFuZGVuVHJhaXRzOjprU3RhdGVCeXRlczsK
K2NvbnN0ZXhwciBzaXplX3Qga0NhcGFjaXR5Qnl0ZXMgPSBSYW5kZW5UcmFpdHM6OmtDYXBhY2l0
eUJ5dGVzOworY29uc3RleHByIHNpemVfdCBrRmVpc3RlbEJsb2NrcyA9IFJhbmRlblRyYWl0czo6
a0ZlaXN0ZWxCbG9ja3M7Citjb25zdGV4cHIgc2l6ZV90IGtGZWlzdGVsUm91bmRzID0gUmFuZGVu
VHJhaXRzOjprRmVpc3RlbFJvdW5kczsKK2NvbnN0ZXhwciBzaXplX3Qga0ZlaXN0ZWxGdW5jdGlv
bnMgPSBSYW5kZW5UcmFpdHM6OmtGZWlzdGVsRnVuY3Rpb25zOworCisvLyBJbmRlcGVuZGVudCBr
ZXlzICgyNzIgPSAyLjEgS2lCKSBmb3IgdGhlIGZpcnN0IEFFUyBzdWJyb3VuZCBvZiBlYWNoIGZ1
bmN0aW9uLgorY29uc3RleHByIHNpemVfdCBrS2V5cyA9IGtGZWlzdGVsUm91bmRzICoga0ZlaXN0
ZWxGdW5jdGlvbnM7CisKKy8vIElOQ0xVREUga2V5cy4KKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9p
bnRlcm5hbC9yYW5kZW4ta2V5cy5pbmMiCisKK3N0YXRpY19hc3NlcnQoa0tleXMgPT0ga1JvdW5k
S2V5cywgImtLZXlzIGFuZCBrUm91bmRLZXlzIG11c3QgYmUgZXF1YWwiKTsKK3N0YXRpY19hc3Nl
cnQocm91bmRfa2V5c1trS2V5cyAtIDFdICE9IHU2NHgyKDAsIDApLAorICAgICAgICAgICAgICAi
VG9vIGZldyByb3VuZF9rZXlzIGluaXRpYWxpemVycyIpOworCisvLyBOdW1iZXIgb2YgdWludDY0
X3QgbGFuZXMgcGVyIDEyOC1iaXQgdmVjdG9yOworY29uc3RleHByIHNpemVfdCBrTGFuZXMgPSAy
OworCisvLyBCbG9jayBzaHVmZmxlcyBhcHBsaWVzIGEgc2h1ZmZsZSB0byB0aGUgZW50aXJlIHN0
YXRlIGJldHdlZW4gQUVTIHJvdW5kcy4KKy8vIEltcHJvdmVkIG9kZC1ldmVuIHNodWZmbGUgZnJv
bSAiTmV3IGNyaXRlcmlvbiBmb3IgZGlmZnVzaW9uIHByb3BlcnR5Ii4KK2lubGluZSBBQlNMX1JB
TkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBBQlNMX1RBUkdFVF9DUllQVE8g
dm9pZAorQmxvY2tTaHVmZmxlKHVpbnQ2NF90KiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklD
VCBzdGF0ZSkgeworICBzdGF0aWNfYXNzZXJ0KGtGZWlzdGVsQmxvY2tzID09IDE2LCAiRXhwZWN0
aW5nIDE2IEZlaXN0ZWxCbG9ja3MuIik7CisKKyAgY29uc3RleHByIHNpemVfdCBzaHVmZmxlW2tG
ZWlzdGVsQmxvY2tzXSA9IHs3LCAgMiwgMTMsIDQsICAxMSwgOCwgIDMsIDYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUsIDAsIDksICAxMCwgMSwgIDE0
LCA1LCAxMn07CisKKyAgLy8gVGhlIGZ1bGx5IHVucm9sbGVkIGxvb3Agd2l0aG91dCB0aGUgbWVt
Y3B5IGltcHJvdmVzIHRoZSBzcGVlZCBieSBhYm91dAorICAvLyAzMCUgb3ZlciB0aGUgZXF1aXZh
bGVudCBsb29wLgorICBjb25zdCBWZWN0b3IxMjggdjAgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsg
a0xhbmVzICogc2h1ZmZsZVswXSk7CisgIGNvbnN0IFZlY3RvcjEyOCB2MSA9IFZlY3RvcjEyOExv
YWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzFdKTsKKyAgY29uc3QgVmVjdG9yMTI4IHYyID0g
VmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIHNodWZmbGVbMl0pOworICBjb25zdCBWZWN0
b3IxMjggdjMgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogc2h1ZmZsZVszXSk7Cisg
IGNvbnN0IFZlY3RvcjEyOCB2NCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVm
ZmxlWzRdKTsKKyAgY29uc3QgVmVjdG9yMTI4IHY1ID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtM
YW5lcyAqIHNodWZmbGVbNV0pOworICBjb25zdCBWZWN0b3IxMjggdjYgPSBWZWN0b3IxMjhMb2Fk
KHN0YXRlICsga0xhbmVzICogc2h1ZmZsZVs2XSk7CisgIGNvbnN0IFZlY3RvcjEyOCB2NyA9IFZl
Y3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzddKTsKKyAgY29uc3QgVmVjdG9y
MTI4IHcwID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIHNodWZmbGVbOF0pOworICBj
b25zdCBWZWN0b3IxMjggdzEgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogc2h1ZmZs
ZVs5XSk7CisgIGNvbnN0IFZlY3RvcjEyOCB3MiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFu
ZXMgKiBzaHVmZmxlWzEwXSk7CisgIGNvbnN0IFZlY3RvcjEyOCB3MyA9IFZlY3RvcjEyOExvYWQo
c3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzExXSk7CisgIGNvbnN0IFZlY3RvcjEyOCB3NCA9IFZl
Y3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzEyXSk7CisgIGNvbnN0IFZlY3Rv
cjEyOCB3NSA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzEzXSk7Cisg
IGNvbnN0IFZlY3RvcjEyOCB3NiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVm
ZmxlWzE0XSk7CisgIGNvbnN0IFZlY3RvcjEyOCB3NyA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBr
TGFuZXMgKiBzaHVmZmxlWzE1XSk7CisKKyAgVmVjdG9yMTI4U3RvcmUodjAsIHN0YXRlICsga0xh
bmVzICogMCk7CisgIFZlY3RvcjEyOFN0b3JlKHYxLCBzdGF0ZSArIGtMYW5lcyAqIDEpOworICBW
ZWN0b3IxMjhTdG9yZSh2Miwgc3RhdGUgKyBrTGFuZXMgKiAyKTsKKyAgVmVjdG9yMTI4U3RvcmUo
djMsIHN0YXRlICsga0xhbmVzICogMyk7CisgIFZlY3RvcjEyOFN0b3JlKHY0LCBzdGF0ZSArIGtM
YW5lcyAqIDQpOworICBWZWN0b3IxMjhTdG9yZSh2NSwgc3RhdGUgKyBrTGFuZXMgKiA1KTsKKyAg
VmVjdG9yMTI4U3RvcmUodjYsIHN0YXRlICsga0xhbmVzICogNik7CisgIFZlY3RvcjEyOFN0b3Jl
KHY3LCBzdGF0ZSArIGtMYW5lcyAqIDcpOworICBWZWN0b3IxMjhTdG9yZSh3MCwgc3RhdGUgKyBr
TGFuZXMgKiA4KTsKKyAgVmVjdG9yMTI4U3RvcmUodzEsIHN0YXRlICsga0xhbmVzICogOSk7Cisg
IFZlY3RvcjEyOFN0b3JlKHcyLCBzdGF0ZSArIGtMYW5lcyAqIDEwKTsKKyAgVmVjdG9yMTI4U3Rv
cmUodzMsIHN0YXRlICsga0xhbmVzICogMTEpOworICBWZWN0b3IxMjhTdG9yZSh3NCwgc3RhdGUg
KyBrTGFuZXMgKiAxMik7CisgIFZlY3RvcjEyOFN0b3JlKHc1LCBzdGF0ZSArIGtMYW5lcyAqIDEz
KTsKKyAgVmVjdG9yMTI4U3RvcmUodzYsIHN0YXRlICsga0xhbmVzICogMTQpOworICBWZWN0b3Ix
MjhTdG9yZSh3Nywgc3RhdGUgKyBrTGFuZXMgKiAxNSk7Cit9CisKKy8vIEZlaXN0ZWwgcm91bmQg
ZnVuY3Rpb24gdXNpbmcgdHdvIEFFUyBzdWJyb3VuZHMuIFZlcnkgc2ltaWxhciB0byBGKCkKKy8v
IGZyb20gU2ltcGlyYSB2MiwgYnV0IHdpdGggaW5kZXBlbmRlbnQgc3Vicm91bmQga2V5cy4gVXNl
cyAxNyBBRVMgcm91bmRzCisvLyBwZXIgMTYgYnl0ZXMgKHZzLiAxMCBmb3IgQUVTLUNUUikuIENv
bXB1dGluZyBlaWdodCByb3VuZCBmdW5jdGlvbnMgaW4KKy8vIHBhcmFsbGVsIGhpZGVzIHRoZSA3
LWN5Y2xlIEFFU05JIGxhdGVuY3kgb24gSFNXLiBOb3RlIHRoYXQgdGhlIEZlaXN0ZWwKKy8vIFhP
UnMgYXJlICdmcmVlJyAoaW5jbHVkZWQgaW4gdGhlIHNlY29uZCBBRVMgaW5zdHJ1Y3Rpb24pLgor
aW5saW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIEFCU0xf
VEFSR0VUX0NSWVBUTyBjb25zdAorICAgIHU2NHgyKgorICAgIEZlaXN0ZWxSb3VuZCh1aW50NjRf
dCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc3RhdGUsCisgICAgICAgICAgICAgICAg
IGNvbnN0IHU2NHgyKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBrZXlzKSB7CisgIHN0
YXRpY19hc3NlcnQoa0ZlaXN0ZWxCbG9ja3MgPT0gMTYsICJFeHBlY3RpbmcgMTYgRmVpc3RlbEJs
b2Nrcy4iKTsKKworICAvLyBNU1ZDIGRvZXMgYSBob3JyaWJsZSBqb2IgYXQgdW5yb2xsaW5nIGxv
b3BzLgorICAvLyBTbyB3ZSB1bnJvbGwgdGhlIGxvb3AgYnkgaGFuZCB0byBpbXByb3ZlIHRoZSBw
ZXJmb3JtYW5jZS4KKyAgY29uc3QgVmVjdG9yMTI4IHMwID0gVmVjdG9yMTI4TG9hZChzdGF0ZSAr
IGtMYW5lcyAqIDApOworICBjb25zdCBWZWN0b3IxMjggczEgPSBWZWN0b3IxMjhMb2FkKHN0YXRl
ICsga0xhbmVzICogMSk7CisgIGNvbnN0IFZlY3RvcjEyOCBzMiA9IFZlY3RvcjEyOExvYWQoc3Rh
dGUgKyBrTGFuZXMgKiAyKTsKKyAgY29uc3QgVmVjdG9yMTI4IHMzID0gVmVjdG9yMTI4TG9hZChz
dGF0ZSArIGtMYW5lcyAqIDMpOworICBjb25zdCBWZWN0b3IxMjggczQgPSBWZWN0b3IxMjhMb2Fk
KHN0YXRlICsga0xhbmVzICogNCk7CisgIGNvbnN0IFZlY3RvcjEyOCBzNSA9IFZlY3RvcjEyOExv
YWQoc3RhdGUgKyBrTGFuZXMgKiA1KTsKKyAgY29uc3QgVmVjdG9yMTI4IHM2ID0gVmVjdG9yMTI4
TG9hZChzdGF0ZSArIGtMYW5lcyAqIDYpOworICBjb25zdCBWZWN0b3IxMjggczcgPSBWZWN0b3Ix
MjhMb2FkKHN0YXRlICsga0xhbmVzICogNyk7CisgIGNvbnN0IFZlY3RvcjEyOCBzOCA9IFZlY3Rv
cjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiA4KTsKKyAgY29uc3QgVmVjdG9yMTI4IHM5ID0gVmVj
dG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIDkpOworICBjb25zdCBWZWN0b3IxMjggczEwID0g
VmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIDEwKTsKKyAgY29uc3QgVmVjdG9yMTI4IHMx
MSA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxMSk7CisgIGNvbnN0IFZlY3RvcjEy
OCBzMTIgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMTIpOworICBjb25zdCBWZWN0
b3IxMjggczEzID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIDEzKTsKKyAgY29uc3Qg
VmVjdG9yMTI4IHMxNCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxNCk7CisgIGNv
bnN0IFZlY3RvcjEyOCBzMTUgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMTUpOwor
CisgIC8vIEVuY29kZSBldmVuIGJsb2NrcyB3aXRoIGtleXMuCisgIGNvbnN0IFZlY3RvcjEyOCBl
MCA9IEFlc1JvdW5kKHMwLCBWZWN0b3IxMjhMb2FkKGtleXMgKyAwKSk7CisgIGNvbnN0IFZlY3Rv
cjEyOCBlMiA9IEFlc1JvdW5kKHMyLCBWZWN0b3IxMjhMb2FkKGtleXMgKyAxKSk7CisgIGNvbnN0
IFZlY3RvcjEyOCBlNCA9IEFlc1JvdW5kKHM0LCBWZWN0b3IxMjhMb2FkKGtleXMgKyAyKSk7Cisg
IGNvbnN0IFZlY3RvcjEyOCBlNiA9IEFlc1JvdW5kKHM2LCBWZWN0b3IxMjhMb2FkKGtleXMgKyAz
KSk7CisgIGNvbnN0IFZlY3RvcjEyOCBlOCA9IEFlc1JvdW5kKHM4LCBWZWN0b3IxMjhMb2FkKGtl
eXMgKyA0KSk7CisgIGNvbnN0IFZlY3RvcjEyOCBlMTAgPSBBZXNSb3VuZChzMTAsIFZlY3RvcjEy
OExvYWQoa2V5cyArIDUpKTsKKyAgY29uc3QgVmVjdG9yMTI4IGUxMiA9IEFlc1JvdW5kKHMxMiwg
VmVjdG9yMTI4TG9hZChrZXlzICsgNikpOworICBjb25zdCBWZWN0b3IxMjggZTE0ID0gQWVzUm91
bmQoczE0LCBWZWN0b3IxMjhMb2FkKGtleXMgKyA3KSk7CisKKyAgLy8gRW5jb2RlIG9kZCBibG9j
a3Mgd2l0aCBldmVuIG91dHB1dCBmcm9tIGFib3ZlLgorICBjb25zdCBWZWN0b3IxMjggbzEgPSBB
ZXNSb3VuZChlMCwgczEpOworICBjb25zdCBWZWN0b3IxMjggbzMgPSBBZXNSb3VuZChlMiwgczMp
OworICBjb25zdCBWZWN0b3IxMjggbzUgPSBBZXNSb3VuZChlNCwgczUpOworICBjb25zdCBWZWN0
b3IxMjggbzcgPSBBZXNSb3VuZChlNiwgczcpOworICBjb25zdCBWZWN0b3IxMjggbzkgPSBBZXNS
b3VuZChlOCwgczkpOworICBjb25zdCBWZWN0b3IxMjggbzExID0gQWVzUm91bmQoZTEwLCBzMTEp
OworICBjb25zdCBWZWN0b3IxMjggbzEzID0gQWVzUm91bmQoZTEyLCBzMTMpOworICBjb25zdCBW
ZWN0b3IxMjggbzE1ID0gQWVzUm91bmQoZTE0LCBzMTUpOworCisgIC8vIFN0b3JlIG9kZCBibG9j
a3MuIChUaGVzZSB3aWxsIGJlIHNodWZmbGVkIGxhdGVyKS4KKyAgVmVjdG9yMTI4U3RvcmUobzEs
IHN0YXRlICsga0xhbmVzICogMSk7CisgIFZlY3RvcjEyOFN0b3JlKG8zLCBzdGF0ZSArIGtMYW5l
cyAqIDMpOworICBWZWN0b3IxMjhTdG9yZShvNSwgc3RhdGUgKyBrTGFuZXMgKiA1KTsKKyAgVmVj
dG9yMTI4U3RvcmUobzcsIHN0YXRlICsga0xhbmVzICogNyk7CisgIFZlY3RvcjEyOFN0b3JlKG85
LCBzdGF0ZSArIGtMYW5lcyAqIDkpOworICBWZWN0b3IxMjhTdG9yZShvMTEsIHN0YXRlICsga0xh
bmVzICogMTEpOworICBWZWN0b3IxMjhTdG9yZShvMTMsIHN0YXRlICsga0xhbmVzICogMTMpOwor
ICBWZWN0b3IxMjhTdG9yZShvMTUsIHN0YXRlICsga0xhbmVzICogMTUpOworCisgIHJldHVybiBr
ZXlzICsgODsKK30KKworLy8gQ3J5cHRvZ3JhcGhpYyBwZXJtdXRhdGlvbiBiYXNlZCB2aWEgdHlw
ZS0yIEdlbmVyYWxpemVkIEZlaXN0ZWwgTmV0d29yay4KKy8vIEluZGlzdGluZ3Vpc2hhYmxlIGZy
b20gaWRlYWwgYnkgY2hvc2VuLWNpcGhlcnRleHQgYWR2ZXJzYXJpZXMgdXNpbmcgbGVzcyB0aGFu
CisvLyAyXjY0IHF1ZXJpZXMgaWYgdGhlIHJvdW5kIGZ1bmN0aW9uIGlzIGEgUFJGLiBUaGlzIGlz
IHNpbWlsYXIgdG8gdGhlIGI9OCBjYXNlCisvLyBvZiBTaW1waXJhIHYyLCBidXQgbW9yZSBlZmZp
Y2llbnQgdGhhbiBpdHMgZ2VuZXJpYyBjb25zdHJ1Y3Rpb24gZm9yIGI9MTYuCitpbmxpbmUgQUJT
TF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgQUJTTF9UQVJHRVRfQ1JZ
UFRPIHZvaWQKK1Blcm11dGUoY29uc3Qgdm9pZCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJ
Q1Qga2V5cywKKyAgICAgICAgdWludDY0X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNU
IHN0YXRlKSB7CisgIGNvbnN0IHU2NHgyKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBr
ZXlzMTI4ID0KKyAgICAgIHN0YXRpY19jYXN0PGNvbnN0IHU2NHgyKj4oa2V5cyk7CisKKyAgLy8g
KFN1Y2Nlc3NmdWxseSB1bnJvbGxlZDsgdGhlIGZpcnN0IGl0ZXJhdGlvbiBqdW1wcyBpbnRvIHRo
ZSBzZWNvbmQgaGFsZikKKyNpZmRlZiBfX2NsYW5nX18KKyNwcmFnbWEgY2xhbmcgbG9vcCB1bnJv
bGxfY291bnQoMikKKyNlbmRpZgorICBmb3IgKHNpemVfdCByb3VuZCA9IDA7IHJvdW5kIDwga0Zl
aXN0ZWxSb3VuZHM7ICsrcm91bmQpIHsKKyAgICBrZXlzMTI4ID0gRmVpc3RlbFJvdW5kKHN0YXRl
LCBrZXlzMTI4KTsKKyAgICBCbG9ja1NodWZmbGUoc3RhdGUpOworICB9Cit9CisKK30gIC8vIG5h
bWVzcGFjZQorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsK
KworYm9vbCBIYXNSYW5kZW5Id0Flc0ltcGxlbWVudGF0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfQor
Citjb25zdCB2b2lkKiBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9GVU5DVElPTl9BTElHTjMyIEFC
U0xfQVRUUklCVVRFX0ZMQVRURU4KK1JhbmRlbkh3QWVzOjpHZXRLZXlzKCkgeworICAvLyBSb3Vu
ZCBrZXlzIGZvciBvbmUgQUVTIHBlciBGZWlzdGVsIHJvdW5kIGFuZCBicmFuY2guCisgIC8vIFRo
ZSBjYW5vbmljYWwgaW1wbGVtZW50YXRpb24gdXNlcyBmaXJzdCBkaWdpdHMgb2YgUGkuCisgIHJl
dHVybiByb3VuZF9rZXlzOworfQorCisvLyBOT0xJTlRORVhUTElORQordm9pZCBBQlNMX1RBUkdF
VF9DUllQVE8gQUJTTF9GVU5DVElPTl9BTElHTjMyIEFCU0xfQVRUUklCVVRFX0ZMQVRURU4KK1Jh
bmRlbkh3QWVzOjpBYnNvcmIoY29uc3Qgdm9pZCogc2VlZF92b2lkLCB2b2lkKiBzdGF0ZV92b2lk
KSB7CisgIHVpbnQ2NF90KiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBzdGF0ZSA9Cisg
ICAgICByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4oc3RhdGVfdm9pZCk7CisgIGNvbnN0IHVp
bnQ2NF90KiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBzZWVkID0KKyAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDY0X3QqPihzZWVkX3ZvaWQpOworCisgIGNvbnN0ZXhwciBz
aXplX3Qga0NhcGFjaXR5QmxvY2tzID0ga0NhcGFjaXR5Qnl0ZXMgLyBzaXplb2YoVmVjdG9yMTI4
KTsKKyAgY29uc3RleHByIHNpemVfdCBrU3RhdGVCbG9ja3MgPSBrU3RhdGVCeXRlcyAvIHNpemVv
ZihWZWN0b3IxMjgpOworCisgIHN0YXRpY19hc3NlcnQoa0NhcGFjaXR5QmxvY2tzICogc2l6ZW9m
KFZlY3RvcjEyOCkgPT0ga0NhcGFjaXR5Qnl0ZXMsCisgICAgICAgICAgICAgICAgIk5vdCBpKlYi
KTsKKyAgc3RhdGljX2Fzc2VydChrQ2FwYWNpdHlCbG9ja3MgPT0gMSwgIlVuZXhwZWN0ZWQgUmFu
ZGVuIGtDYXBhY2l0eUJsb2NrcyIpOworICBzdGF0aWNfYXNzZXJ0KGtTdGF0ZUJsb2NrcyA9PSAx
NiwgIlVuZXhwZWN0ZWQgUmFuZGVuIGtTdGF0ZUJsb2NrcyIpOworCisgIFZlY3RvcjEyOCBiMSA9
IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxKTsKKyAgYjEgXj0gVmVjdG9yMTI4TG9h
ZChzZWVkICsga0xhbmVzICogMCk7CisgIFZlY3RvcjEyOFN0b3JlKGIxLCBzdGF0ZSArIGtMYW5l
cyAqIDEpOworCisgIFZlY3RvcjEyOCBiMiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMg
KiAyKTsKKyAgYjIgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogMSk7CisgIFZlY3Rv
cjEyOFN0b3JlKGIyLCBzdGF0ZSArIGtMYW5lcyAqIDIpOworCisgIFZlY3RvcjEyOCBiMyA9IFZl
Y3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAzKTsKKyAgYjMgXj0gVmVjdG9yMTI4TG9hZChz
ZWVkICsga0xhbmVzICogMik7CisgIFZlY3RvcjEyOFN0b3JlKGIzLCBzdGF0ZSArIGtMYW5lcyAq
IDMpOworCisgIFZlY3RvcjEyOCBiNCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiA0
KTsKKyAgYjQgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogMyk7CisgIFZlY3RvcjEy
OFN0b3JlKGI0LCBzdGF0ZSArIGtMYW5lcyAqIDQpOworCisgIFZlY3RvcjEyOCBiNSA9IFZlY3Rv
cjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiA1KTsKKyAgYjUgXj0gVmVjdG9yMTI4TG9hZChzZWVk
ICsga0xhbmVzICogNCk7CisgIFZlY3RvcjEyOFN0b3JlKGI1LCBzdGF0ZSArIGtMYW5lcyAqIDUp
OworCisgIFZlY3RvcjEyOCBiNiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiA2KTsK
KyAgYjYgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogNSk7CisgIFZlY3RvcjEyOFN0
b3JlKGI2LCBzdGF0ZSArIGtMYW5lcyAqIDYpOworCisgIFZlY3RvcjEyOCBiNyA9IFZlY3RvcjEy
OExvYWQoc3RhdGUgKyBrTGFuZXMgKiA3KTsKKyAgYjcgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsg
a0xhbmVzICogNik7CisgIFZlY3RvcjEyOFN0b3JlKGI3LCBzdGF0ZSArIGtMYW5lcyAqIDcpOwor
CisgIFZlY3RvcjEyOCBiOCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiA4KTsKKyAg
YjggXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogNyk7CisgIFZlY3RvcjEyOFN0b3Jl
KGI4LCBzdGF0ZSArIGtMYW5lcyAqIDgpOworCisgIFZlY3RvcjEyOCBiOSA9IFZlY3RvcjEyOExv
YWQoc3RhdGUgKyBrTGFuZXMgKiA5KTsKKyAgYjkgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xh
bmVzICogOCk7CisgIFZlY3RvcjEyOFN0b3JlKGI5LCBzdGF0ZSArIGtMYW5lcyAqIDkpOworCisg
IFZlY3RvcjEyOCBiMTAgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMTApOworICBi
MTAgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogOSk7CisgIFZlY3RvcjEyOFN0b3Jl
KGIxMCwgc3RhdGUgKyBrTGFuZXMgKiAxMCk7CisKKyAgVmVjdG9yMTI4IGIxMSA9IFZlY3RvcjEy
OExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxMSk7CisgIGIxMSBePSBWZWN0b3IxMjhMb2FkKHNlZWQg
KyBrTGFuZXMgKiAxMCk7CisgIFZlY3RvcjEyOFN0b3JlKGIxMSwgc3RhdGUgKyBrTGFuZXMgKiAx
MSk7CisKKyAgVmVjdG9yMTI4IGIxMiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAx
Mik7CisgIGIxMiBePSBWZWN0b3IxMjhMb2FkKHNlZWQgKyBrTGFuZXMgKiAxMSk7CisgIFZlY3Rv
cjEyOFN0b3JlKGIxMiwgc3RhdGUgKyBrTGFuZXMgKiAxMik7CisKKyAgVmVjdG9yMTI4IGIxMyA9
IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxMyk7CisgIGIxMyBePSBWZWN0b3IxMjhM
b2FkKHNlZWQgKyBrTGFuZXMgKiAxMik7CisgIFZlY3RvcjEyOFN0b3JlKGIxMywgc3RhdGUgKyBr
TGFuZXMgKiAxMyk7CisKKyAgVmVjdG9yMTI4IGIxNCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBr
TGFuZXMgKiAxNCk7CisgIGIxNCBePSBWZWN0b3IxMjhMb2FkKHNlZWQgKyBrTGFuZXMgKiAxMyk7
CisgIFZlY3RvcjEyOFN0b3JlKGIxNCwgc3RhdGUgKyBrTGFuZXMgKiAxNCk7CisKKyAgVmVjdG9y
MTI4IGIxNSA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxNSk7CisgIGIxNSBePSBW
ZWN0b3IxMjhMb2FkKHNlZWQgKyBrTGFuZXMgKiAxNCk7CisgIFZlY3RvcjEyOFN0b3JlKGIxNSwg
c3RhdGUgKyBrTGFuZXMgKiAxNSk7Cit9CisKKy8vIE5PTElOVE5FWFRMSU5FCit2b2lkIEFCU0xf
VEFSR0VUX0NSWVBUTyBBQlNMX0ZVTkNUSU9OX0FMSUdOMzIgQUJTTF9BVFRSSUJVVEVfRkxBVFRF
TgorUmFuZGVuSHdBZXM6OkdlbmVyYXRlKGNvbnN0IHZvaWQqIGtleXMsIHZvaWQqIHN0YXRlX3Zv
aWQpIHsKKyAgc3RhdGljX2Fzc2VydChrQ2FwYWNpdHlCeXRlcyA9PSBzaXplb2YoVmVjdG9yMTI4
KSwgIkNhcGFjaXR5IG1pc21hdGNoIik7CisKKyAgdWludDY0X3QqIEFCU0xfUkFORE9NX0lOVEVS
TkFMX1JFU1RSSUNUIHN0YXRlID0KKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihz
dGF0ZV92b2lkKTsKKworICBjb25zdCBWZWN0b3IxMjggcHJldl9pbm5lciA9IFZlY3RvcjEyOExv
YWQoc3RhdGUpOworCisgIFN3YXBFbmRpYW4oc3RhdGUpOworCisgIFBlcm11dGUoa2V5cywgc3Rh
dGUpOworCisgIFN3YXBFbmRpYW4oc3RhdGUpOworCisgIC8vIEVuc3VyZSBiYWNrdHJhY2tpbmcg
cmVzaXN0YW5jZS4KKyAgVmVjdG9yMTI4IGlubmVyID0gVmVjdG9yMTI4TG9hZChzdGF0ZSk7Cisg
IGlubmVyIF49IHByZXZfaW5uZXI7CisgIFZlY3RvcjEyOFN0b3JlKGlubmVyLCBzdGF0ZSk7Cit9
CisKKyNpZmRlZiBfX2NsYW5nX18KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRp
ZgorCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJz
bAorCisjZW5kaWYgIC8vIChBQlNMX1JBTkRFTl9IV0FFU19JTVBMKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9od2Flcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFs
L3JhbmRlbl9od2Flcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5k
OGU2MDU1ZjAxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5k
ZW5faHdhZXMuaApAQCAtMCwwICsxLDQ2IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SQU5ERU5fSFdBRVNf
SF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0hXQUVTX0hfCisKKy8vIEhF
Uk1FVElDIE5PVEU6IFRoZSByYW5kZW5faHdhZXMgdGFyZ2V0IG11c3Qgbm90IGludHJvZHVjZSBk
dXBsaWNhdGUKKy8vIHN5bWJvbHMgZnJvbSBhcmJpdHJhcnkgc3lzdGVtIGFuZCBvdGhlciBoZWFk
ZXJzLCBzaW5jZSBpdCBtYXkgYmUgYnVpbHQKKy8vIHdpdGggZGlmZmVyZW50IGZsYWdzIGZyb20g
b3RoZXIgdGFyZ2V0cywgdXNpbmcgZGlmZmVyZW50IGxldmVscyBvZgorLy8gb3B0aW1pemF0aW9u
LCBwb3RlbnRpYWxseSBpbnRyb2R1Y2luZyBPRFIgdmlvbGF0aW9ucy4KKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKKy8vIFJBTkRlbiA9IFJBTkRvbSBn
ZW5lcmF0b3Igb3IgYmVldHJvb3RzIGluIFN3aXNzIEdlcm1hbi4KKy8vICdTdHJvbmcnICh3ZWxs
LWRpc3RyaWJ1dGVkLCB1bnByZWRpY3RhYmxlLCBiYWNrdHJhY2tpbmctcmVzaXN0YW50KSByYW5k
b20KKy8vIGdlbmVyYXRvciwgZmFzdGVyIGluIHNvbWUgYmVuY2htYXJrcyB0aGFuIHN0ZDo6bXQx
OTkzN182NCBhbmQgcGNnNjRfYzMyLgorLy8KKy8vIFJhbmRlbkh3QWVzIGltcGxlbWVudHMgdGhl
IGJhc2ljIHN0YXRlIG1hbmlwdWxhdGlvbiBtZXRob2RzLgorY2xhc3MgUmFuZGVuSHdBZXMgewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgR2VuZXJhdGUoY29uc3Qgdm9pZCoga2V5cywgdm9pZCog
c3RhdGVfdm9pZCk7CisgIHN0YXRpYyB2b2lkIEFic29yYihjb25zdCB2b2lkKiBzZWVkX3ZvaWQs
IHZvaWQqIHN0YXRlX3ZvaWQpOworICBzdGF0aWMgY29uc3Qgdm9pZCogR2V0S2V5cygpOworfTsK
KworLy8gSGFzUmFuZGVuSHdBZXNJbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRydWUgd2hlbiB0aGVy
ZSBpcyBhbiBhY2NlbGVyYXRlZAorLy8gaW1wbGVtZW50YXRpb24sIGFuZCBmYWxzZSBvdGhlcndp
c2UuICBJZiB0aGVyZSBpcyBubyBpbXBsZW1lbnRhdGlvbiwKKy8vIHRoZW4gYXR0ZW1wdGluZyB0
byB1c2UgaXQgd2lsbCBhYm9ydCB0aGUgcHJvZ3JhbS4KK2Jvb2wgSGFzUmFuZGVuSHdBZXNJbXBs
ZW1lbnRhdGlvbigpOworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9I
V0FFU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9od2Flc190
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9od2Flc190ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hN2NiZDQ2YjJkZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXNfdGVzdC5jYwpAQCAt
MCwwICsxLDEwMiBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMuaCIKKworI2luY2x1
ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9p
bnRlcm5hbC9wbGF0Zm9ybS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3JhbmRl
bl9kZXRlY3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fdHJhaXRz
LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaCIKKworbmFtZXNwYWNlIHsK
KwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSYW5kZW5Id0FlczsKK3VzaW5nIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6UmFuZGVuVHJhaXRzOworCitzdHJ1Y3QgcmFuZGVuIHsKKyAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3Qga1N0YXRlU2l6ZVQgPQorICAgICAgUmFuZGVuVHJhaXRzOjpr
U3RhdGVCeXRlcyAvIHNpemVvZih1aW50NjRfdCk7CisgIHVpbnQ2NF90IHN0YXRlW2tTdGF0ZVNp
emVUXTsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1NlZWRTaXplVCA9CisgICAgICBSYW5k
ZW5UcmFpdHM6OmtTZWVkQnl0ZXMgLyBzaXplb2YodWludDMyX3QpOworICB1aW50MzJfdCBzZWVk
W2tTZWVkU2l6ZVRdOworfTsKKworVEVTVChSYW5kZW5Id0Flc1Rlc3QsIERlZmF1bHQpIHsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDUFVTdXBwb3J0c1JhbmRlbkh3QWVz
KCkpOworCisgIGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW10gPSB7CisgICAgICAweDZjNjUz
NDA5MGVlNmQzZWUsIDB4MDQ0ZTJiOWI5ZDUzMzNjNiwgMHhjM2MxNGYxMzRlNDMzOTc3LAorICAg
ICAgMHhkZGE5ZjQ3Y2Q5MDQxMGVlLCAweDg4N2JmMzA4N2ZkOGNhMTAsIDB4ZjBiNzgwZjU0NWM3
MjkxMiwKKyAgICAgIDB4MTVkYmIxZDM3Njk2NTk5ZiwgMHgzMGVjNjNiYWZmM2M2ZDU5LCAweGIy
OWY3MzYwNmY3ZjIwYTYsCisgICAgICAweDAyODA4YTMxNmY0OWE1NGMsIDB4M2I4ZmVhZjlkNWM4
ZTUwZSwgMHg5Y2JmNjA1ZTNmZDlkZThhLAorICAgICAgMHhjOTcwYWUxYTc4MTgzYmJiLCAweGQ4
YjJmZmQzNTYzMDFlZDUsIDB4ZjRiMzI3ZmUwZmM3M2MzNywKKyAgICAgIDB4Y2RmZDhkNzZlYjhm
OWExOSwgMHhjM2E1MDZlYjkxNDIwYzlkLCAweGQ1YWYwNWRkM2VmZjk1NTYsCisgICAgICAweDQ4
ZGIxYmI3OGY4M2M0YTEsIDB4NzAyMzkyMGUwZDZiZmU4YywgMHg1OGQzNTc1ODM0OTU2ZDQyLAor
ICAgICAgMHhlZDFlZjRjMjZiODdiODQwLCAweDhlZWYzMmEyM2UwYjJkZjMsIDB4NDk3Y2FiZjM0
MzExNTRmYywKKyAgICAgIDB4NGUyNDM3MDU3MDAyOWE4YiwgMHhkODhiNTc0OWYwOTBlNWVhLCAw
eGM2NTFhNTgyYTk3MDY5MmYsCisgICAgICAweDc4ZmNlYzJjYmI2MzQyZjUsIDB4NDYzY2I3NDU2
MTJmNTVkYiwgMHgzNTJlZTRhZDE4MTZhZmUzLAorICAgICAgMHgwMjZmZjM3NGMxMDFkYTdlLCAw
eDgxMWVmMDgyMWMzZGU4NTEsCisgIH07CisKKyAgYWxpZ25hcygxNikgcmFuZGVuIGQ7CisgIG1l
bXNldChkLnN0YXRlLCAwLCBzaXplb2YoZC5zdGF0ZSkpOworICBSYW5kZW5Id0Flczo6R2VuZXJh
dGUoUmFuZGVuSHdBZXM6OkdldEtleXMoKSwgZC5zdGF0ZSk7CisKKyAgdWludDY0X3QqIGlkID0g
ZC5zdGF0ZTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIGF1dG8g
YSA9IGFic2w6OlN0ckZvcm1hdCgiJSN4IiwgZWxlbSk7CisgICAgYXV0byBiID0gYWJzbDo6U3Ry
Rm9ybWF0KCIlI3giLCAqaWQrKyk7CisgICAgRVhQRUNUX0VRKGEsIGIpOworICB9Cit9CisKK30g
IC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CisgIHRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICBBQlNMX1JBV19MT0coSU5G
TywgIkFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVM9JWQiLCBBQlNMX0hBVkVfQUNDRUxFUkFURURf
QUVTKTsKKyAgQUJTTF9SQVdfTE9HKElORk8sICJBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElT
UEFUQ0g9JWQiLAorICAgICAgICAgICAgICAgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BB
VENIKTsKKworI2lmIGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkKKyAgQUJTTF9SQVdfTE9HKElO
Rk8sICJBQlNMX0FSQ0hfWDg2XzY0Iik7CisjZWxpZiBkZWZpbmVkKEFCU0xfQVJDSF9YODZfMzIp
CisgIEFCU0xfUkFXX0xPRyhJTkZPLCAiQUJTTF9BUkNIX1g4Nl8zMiIpOworI2VsaWYgZGVmaW5l
ZChBQlNMX0FSQ0hfQUFSQ0g2NCkKKyAgQUJTTF9SQVdfTE9HKElORk8sICJBQlNMX0FSQ0hfQUFS
Q0g2NCIpOworI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfQVJNKQorICBBQlNMX1JBV19MT0coSU5G
TywgIkFCU0xfQVJDSF9BUk0iKTsKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNIX1BQQykKKyAgQUJT
TF9SQVdfTE9HKElORk8sICJBQlNMX0FSQ0hfUFBDIik7CisjZWxzZQorICBBQlNMX1JBV19MT0co
SU5GTywgIkFSQ0ggVW5rbm93biIpOworI2VuZGlmCisKKyAgaW50IHggPSBhYnNsOjpyYW5kb21f
aW50ZXJuYWw6Okhhc1JhbmRlbkh3QWVzSW1wbGVtZW50YXRpb24oKTsKKyAgQUJTTF9SQVdfTE9H
KElORk8sICJIYXNSYW5kZW5Id0Flc0ltcGxlbWVudGF0aW9uID0gJWQiLCB4KTsKKworICBpbnQg
eSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q1BVU3VwcG9ydHNSYW5kZW5Id0FlcygpOworICBB
QlNMX1JBV19MT0coSU5GTywgIkNQVVN1cHBvcnRzUmFuZGVuSHdBZXMgPSAlZCIsIHgpOworCisg
IGlmICgheCB8fCAheSkgeworICAgIEFCU0xfUkFXX0xPRyhJTkZPLCAiU2tpcHBpbmcgUmFuZGVu
IEhXQUVTIHRlc3RzLiIpOworICAgIHJldHVybiAwOworICB9CisgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Nsb3cu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Nsb3cuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdhMmUyZGFhNTNmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9zbG93LmNjCkBAIC0wLDAgKzEsNTEyIEBACisv
LyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wv
cmFuZG9tL2ludGVybmFsL3JhbmRlbl9zbG93LmgiCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2lu
Y2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2ludGVybmFsL3BsYXRmb3JtLmgiCisKKy8vIEFCU0xfSEFWRV9BVFRSSUJVVEUKKyNpZiAh
ZGVmaW5lZChBQlNMX0hBVkVfQVRUUklCVVRFKQorI2lmZGVmIF9faGFzX2F0dHJpYnV0ZQorI2Rl
ZmluZSBBQlNMX0hBVkVfQVRUUklCVVRFKHgpIF9faGFzX2F0dHJpYnV0ZSh4KQorI2Vsc2UKKyNk
ZWZpbmUgQUJTTF9IQVZFX0FUVFJJQlVURSh4KSAwCisjZW5kaWYKKyNlbmRpZgorCisjaWYgQUJT
TF9IQVZFX0FUVFJJQlVURShhbHdheXNfaW5saW5lKSB8fCBcCisgICAgKGRlZmluZWQoX19HTlVD
X18pICYmICFkZWZpbmVkKF9fY2xhbmdfXykpCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFM
X0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFwKKyAgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGlu
ZSkpCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8gV2UgY2FuIGFjaGlldmUgc29tZXRoaW5n
IHNpbWlsYXIgdG8gYXR0cmlidXRlKChhbHdheXNfaW5saW5lKSkgd2l0aCBNU1ZDIGJ5CisvLyB1
c2luZyB0aGUgX19mb3JjZWlubGluZSBrZXl3b3JkLCBob3dldmVyIHRoaXMgaXMgbm90IHBlcmZl
Y3QuIE1TVkMgaXMKKy8vIG11Y2ggbGVzcyBhZ2dyZXNzaXZlIGFib3V0IGlubGluaW5nLCBhbmQg
ZXZlbiB3aXRoIHRoZSBfX2ZvcmNlaW5saW5lIGtleXdvcmQuCisjZGVmaW5lIEFCU0xfUkFORE9N
X0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIF9fZm9yY2VpbmxpbmUKKyNlbHNlCisj
ZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCisjZW5k
aWYKKworbmFtZXNwYWNlIHsKKworLy8gQUVTIHBvcnRpb25zIGJhc2VkIG9uIHJpam5kYWVsLWFs
Zy1mc3QuYywKKy8vIGh0dHBzOi8vZmFzdGNyeXB0by5vcmcvZnJvbnQvbWlzYy9yaWpuZGFlbC1h
bGctZnN0LmMKKy8vCisvLyBJbXBsZW1lbnRhdGlvbiBvZgorLy8gaHR0cDovL3d3dy5jc3JjLm5p
c3QuZ292L3B1YmxpY2F0aW9ucy9maXBzL2ZpcHMxOTcvZmlwcy0xOTcucGRmCitjb25zdGV4cHIg
dWludDMyX3QgdGUwWzI1Nl0gPSB7CisgICAgMHhjNjYzNjNhNSwgMHhmODdjN2M4NCwgMHhlZTc3
Nzc5OSwgMHhmNjdiN2I4ZCwgMHhmZmYyZjIwZCwgMHhkNjZiNmJiZCwKKyAgICAweGRlNmY2ZmIx
LCAweDkxYzVjNTU0LCAweDYwMzAzMDUwLCAweDAyMDEwMTAzLCAweGNlNjc2N2E5LCAweDU2MmIy
YjdkLAorICAgIDB4ZTdmZWZlMTksIDB4YjVkN2Q3NjIsIDB4NGRhYmFiZTYsIDB4ZWM3Njc2OWEs
IDB4OGZjYWNhNDUsIDB4MWY4MjgyOWQsCisgICAgMHg4OWM5Yzk0MCwgMHhmYTdkN2Q4NywgMHhl
ZmZhZmExNSwgMHhiMjU5NTllYiwgMHg4ZTQ3NDdjOSwgMHhmYmYwZjAwYiwKKyAgICAweDQxYWRh
ZGVjLCAweGIzZDRkNDY3LCAweDVmYTJhMmZkLCAweDQ1YWZhZmVhLCAweDIzOWM5Y2JmLCAweDUz
YTRhNGY3LAorICAgIDB4ZTQ3MjcyOTYsIDB4OWJjMGMwNWIsIDB4NzViN2I3YzIsIDB4ZTFmZGZk
MWMsIDB4M2Q5MzkzYWUsIDB4NGMyNjI2NmEsCisgICAgMHg2YzM2MzY1YSwgMHg3ZTNmM2Y0MSwg
MHhmNWY3ZjcwMiwgMHg4M2NjY2M0ZiwgMHg2ODM0MzQ1YywgMHg1MWE1YTVmNCwKKyAgICAweGQx
ZTVlNTM0LCAweGY5ZjFmMTA4LCAweGUyNzE3MTkzLCAweGFiZDhkODczLCAweDYyMzEzMTUzLCAw
eDJhMTUxNTNmLAorICAgIDB4MDgwNDA0MGMsIDB4OTVjN2M3NTIsIDB4NDYyMzIzNjUsIDB4OWRj
M2MzNWUsIDB4MzAxODE4MjgsIDB4Mzc5Njk2YTEsCisgICAgMHgwYTA1MDUwZiwgMHgyZjlhOWFi
NSwgMHgwZTA3MDcwOSwgMHgyNDEyMTIzNiwgMHgxYjgwODA5YiwgMHhkZmUyZTIzZCwKKyAgICAw
eGNkZWJlYjI2LCAweDRlMjcyNzY5LCAweDdmYjJiMmNkLCAweGVhNzU3NTlmLCAweDEyMDkwOTFi
LCAweDFkODM4MzllLAorICAgIDB4NTgyYzJjNzQsIDB4MzQxYTFhMmUsIDB4MzYxYjFiMmQsIDB4
ZGM2ZTZlYjIsIDB4YjQ1YTVhZWUsIDB4NWJhMGEwZmIsCisgICAgMHhhNDUyNTJmNiwgMHg3NjNi
M2I0ZCwgMHhiN2Q2ZDY2MSwgMHg3ZGIzYjNjZSwgMHg1MjI5Mjk3YiwgMHhkZGUzZTMzZSwKKyAg
ICAweDVlMmYyZjcxLCAweDEzODQ4NDk3LCAweGE2NTM1M2Y1LCAweGI5ZDFkMTY4LCAweDAwMDAw
MDAwLCAweGMxZWRlZDJjLAorICAgIDB4NDAyMDIwNjAsIDB4ZTNmY2ZjMWYsIDB4NzliMWIxYzgs
IDB4YjY1YjViZWQsIDB4ZDQ2YTZhYmUsIDB4OGRjYmNiNDYsCisgICAgMHg2N2JlYmVkOSwgMHg3
MjM5Mzk0YiwgMHg5NDRhNGFkZSwgMHg5ODRjNGNkNCwgMHhiMDU4NThlOCwgMHg4NWNmY2Y0YSwK
KyAgICAweGJiZDBkMDZiLCAweGM1ZWZlZjJhLCAweDRmYWFhYWU1LCAweGVkZmJmYjE2LCAweDg2
NDM0M2M1LCAweDlhNGQ0ZGQ3LAorICAgIDB4NjYzMzMzNTUsIDB4MTE4NTg1OTQsIDB4OGE0NTQ1
Y2YsIDB4ZTlmOWY5MTAsIDB4MDQwMjAyMDYsIDB4ZmU3ZjdmODEsCisgICAgMHhhMDUwNTBmMCwg
MHg3ODNjM2M0NCwgMHgyNTlmOWZiYSwgMHg0YmE4YThlMywgMHhhMjUxNTFmMywgMHg1ZGEzYTNm
ZSwKKyAgICAweDgwNDA0MGMwLCAweDA1OGY4ZjhhLCAweDNmOTI5MmFkLCAweDIxOWQ5ZGJjLCAw
eDcwMzgzODQ4LCAweGYxZjVmNTA0LAorICAgIDB4NjNiY2JjZGYsIDB4NzdiNmI2YzEsIDB4YWZk
YWRhNzUsIDB4NDIyMTIxNjMsIDB4MjAxMDEwMzAsIDB4ZTVmZmZmMWEsCisgICAgMHhmZGYzZjMw
ZSwgMHhiZmQyZDI2ZCwgMHg4MWNkY2Q0YywgMHgxODBjMGMxNCwgMHgyNjEzMTMzNSwgMHhjM2Vj
ZWMyZiwKKyAgICAweGJlNWY1ZmUxLCAweDM1OTc5N2EyLCAweDg4NDQ0NGNjLCAweDJlMTcxNzM5
LCAweDkzYzRjNDU3LCAweDU1YTdhN2YyLAorICAgIDB4ZmM3ZTdlODIsIDB4N2EzZDNkNDcsIDB4
Yzg2NDY0YWMsIDB4YmE1ZDVkZTcsIDB4MzIxOTE5MmIsIDB4ZTY3MzczOTUsCisgICAgMHhjMDYw
NjBhMCwgMHgxOTgxODE5OCwgMHg5ZTRmNGZkMSwgMHhhM2RjZGM3ZiwgMHg0NDIyMjI2NiwgMHg1
NDJhMmE3ZSwKKyAgICAweDNiOTA5MGFiLCAweDBiODg4ODgzLCAweDhjNDY0NmNhLCAweGM3ZWVl
ZTI5LCAweDZiYjhiOGQzLCAweDI4MTQxNDNjLAorICAgIDB4YTdkZWRlNzksIDB4YmM1ZTVlZTIs
IDB4MTYwYjBiMWQsIDB4YWRkYmRiNzYsIDB4ZGJlMGUwM2IsIDB4NjQzMjMyNTYsCisgICAgMHg3
NDNhM2E0ZSwgMHgxNDBhMGExZSwgMHg5MjQ5NDlkYiwgMHgwYzA2MDYwYSwgMHg0ODI0MjQ2Yywg
MHhiODVjNWNlNCwKKyAgICAweDlmYzJjMjVkLCAweGJkZDNkMzZlLCAweDQzYWNhY2VmLCAweGM0
NjI2MmE2LCAweDM5OTE5MWE4LCAweDMxOTU5NWE0LAorICAgIDB4ZDNlNGU0MzcsIDB4ZjI3OTc5
OGIsIDB4ZDVlN2U3MzIsIDB4OGJjOGM4NDMsIDB4NmUzNzM3NTksIDB4ZGE2ZDZkYjcsCisgICAg
MHgwMThkOGQ4YywgMHhiMWQ1ZDU2NCwgMHg5YzRlNGVkMiwgMHg0OWE5YTllMCwgMHhkODZjNmNi
NCwgMHhhYzU2NTZmYSwKKyAgICAweGYzZjRmNDA3LCAweGNmZWFlYTI1LCAweGNhNjU2NWFmLCAw
eGY0N2E3YThlLCAweDQ3YWVhZWU5LCAweDEwMDgwODE4LAorICAgIDB4NmZiYWJhZDUsIDB4ZjA3
ODc4ODgsIDB4NGEyNTI1NmYsIDB4NWMyZTJlNzIsIDB4MzgxYzFjMjQsIDB4NTdhNmE2ZjEsCisg
ICAgMHg3M2I0YjRjNywgMHg5N2M2YzY1MSwgMHhjYmU4ZTgyMywgMHhhMWRkZGQ3YywgMHhlODc0
NzQ5YywgMHgzZTFmMWYyMSwKKyAgICAweDk2NGI0YmRkLCAweDYxYmRiZGRjLCAweDBkOGI4Yjg2
LCAweDBmOGE4YTg1LCAweGUwNzA3MDkwLCAweDdjM2UzZTQyLAorICAgIDB4NzFiNWI1YzQsIDB4
Y2M2NjY2YWEsIDB4OTA0ODQ4ZDgsIDB4MDYwMzAzMDUsIDB4ZjdmNmY2MDEsIDB4MWMwZTBlMTIs
CisgICAgMHhjMjYxNjFhMywgMHg2YTM1MzU1ZiwgMHhhZTU3NTdmOSwgMHg2OWI5YjlkMCwgMHgx
Nzg2ODY5MSwgMHg5OWMxYzE1OCwKKyAgICAweDNhMWQxZDI3LCAweDI3OWU5ZWI5LCAweGQ5ZTFl
MTM4LCAweGViZjhmODEzLCAweDJiOTg5OGIzLCAweDIyMTExMTMzLAorICAgIDB4ZDI2OTY5YmIs
IDB4YTlkOWQ5NzAsIDB4MDc4ZThlODksIDB4MzM5NDk0YTcsIDB4MmQ5YjliYjYsIDB4M2MxZTFl
MjIsCisgICAgMHgxNTg3ODc5MiwgMHhjOWU5ZTkyMCwgMHg4N2NlY2U0OSwgMHhhYTU1NTVmZiwg
MHg1MDI4Mjg3OCwgMHhhNWRmZGY3YSwKKyAgICAweDAzOGM4YzhmLCAweDU5YTFhMWY4LCAweDA5
ODk4OTgwLCAweDFhMGQwZDE3LCAweDY1YmZiZmRhLCAweGQ3ZTZlNjMxLAorICAgIDB4ODQ0MjQy
YzYsIDB4ZDA2ODY4YjgsIDB4ODI0MTQxYzMsIDB4Mjk5OTk5YjAsIDB4NWEyZDJkNzcsIDB4MWUw
ZjBmMTEsCisgICAgMHg3YmIwYjBjYiwgMHhhODU0NTRmYywgMHg2ZGJiYmJkNiwgMHgyYzE2MTYz
YSwKK307CisKK2NvbnN0ZXhwciB1aW50MzJfdCB0ZTFbMjU2XSA9IHsKKyAgICAweGE1YzY2MzYz
LCAweDg0Zjg3YzdjLCAweDk5ZWU3Nzc3LCAweDhkZjY3YjdiLCAweDBkZmZmMmYyLCAweGJkZDY2
YjZiLAorICAgIDB4YjFkZTZmNmYsIDB4NTQ5MWM1YzUsIDB4NTA2MDMwMzAsIDB4MDMwMjAxMDEs
IDB4YTljZTY3NjcsIDB4N2Q1NjJiMmIsCisgICAgMHgxOWU3ZmVmZSwgMHg2MmI1ZDdkNywgMHhl
NjRkYWJhYiwgMHg5YWVjNzY3NiwgMHg0NThmY2FjYSwgMHg5ZDFmODI4MiwKKyAgICAweDQwODlj
OWM5LCAweDg3ZmE3ZDdkLCAweDE1ZWZmYWZhLCAweGViYjI1OTU5LCAweGM5OGU0NzQ3LCAweDBi
ZmJmMGYwLAorICAgIDB4ZWM0MWFkYWQsIDB4NjdiM2Q0ZDQsIDB4ZmQ1ZmEyYTIsIDB4ZWE0NWFm
YWYsIDB4YmYyMzljOWMsIDB4Zjc1M2E0YTQsCisgICAgMHg5NmU0NzI3MiwgMHg1YjliYzBjMCwg
MHhjMjc1YjdiNywgMHgxY2UxZmRmZCwgMHhhZTNkOTM5MywgMHg2YTRjMjYyNiwKKyAgICAweDVh
NmMzNjM2LCAweDQxN2UzZjNmLCAweDAyZjVmN2Y3LCAweDRmODNjY2NjLCAweDVjNjgzNDM0LCAw
eGY0NTFhNWE1LAorICAgIDB4MzRkMWU1ZTUsIDB4MDhmOWYxZjEsIDB4OTNlMjcxNzEsIDB4NzNh
YmQ4ZDgsIDB4NTM2MjMxMzEsIDB4M2YyYTE1MTUsCisgICAgMHgwYzA4MDQwNCwgMHg1Mjk1Yzdj
NywgMHg2NTQ2MjMyMywgMHg1ZTlkYzNjMywgMHgyODMwMTgxOCwgMHhhMTM3OTY5NiwKKyAgICAw
eDBmMGEwNTA1LCAweGI1MmY5YTlhLCAweDA5MGUwNzA3LCAweDM2MjQxMjEyLCAweDliMWI4MDgw
LCAweDNkZGZlMmUyLAorICAgIDB4MjZjZGViZWIsIDB4Njk0ZTI3MjcsIDB4Y2Q3ZmIyYjIsIDB4
OWZlYTc1NzUsIDB4MWIxMjA5MDksIDB4OWUxZDgzODMsCisgICAgMHg3NDU4MmMyYywgMHgyZTM0
MWExYSwgMHgyZDM2MWIxYiwgMHhiMmRjNmU2ZSwgMHhlZWI0NWE1YSwgMHhmYjViYTBhMCwKKyAg
ICAweGY2YTQ1MjUyLCAweDRkNzYzYjNiLCAweDYxYjdkNmQ2LCAweGNlN2RiM2IzLCAweDdiNTIy
OTI5LCAweDNlZGRlM2UzLAorICAgIDB4NzE1ZTJmMmYsIDB4OTcxMzg0ODQsIDB4ZjVhNjUzNTMs
IDB4NjhiOWQxZDEsIDB4MDAwMDAwMDAsIDB4MmNjMWVkZWQsCisgICAgMHg2MDQwMjAyMCwgMHgx
ZmUzZmNmYywgMHhjODc5YjFiMSwgMHhlZGI2NWI1YiwgMHhiZWQ0NmE2YSwgMHg0NjhkY2JjYiwK
KyAgICAweGQ5NjdiZWJlLCAweDRiNzIzOTM5LCAweGRlOTQ0YTRhLCAweGQ0OTg0YzRjLCAweGU4
YjA1ODU4LCAweDRhODVjZmNmLAorICAgIDB4NmJiYmQwZDAsIDB4MmFjNWVmZWYsIDB4ZTU0ZmFh
YWEsIDB4MTZlZGZiZmIsIDB4YzU4NjQzNDMsIDB4ZDc5YTRkNGQsCisgICAgMHg1NTY2MzMzMywg
MHg5NDExODU4NSwgMHhjZjhhNDU0NSwgMHgxMGU5ZjlmOSwgMHgwNjA0MDIwMiwgMHg4MWZlN2Y3
ZiwKKyAgICAweGYwYTA1MDUwLCAweDQ0NzgzYzNjLCAweGJhMjU5ZjlmLCAweGUzNGJhOGE4LCAw
eGYzYTI1MTUxLCAweGZlNWRhM2EzLAorICAgIDB4YzA4MDQwNDAsIDB4OGEwNThmOGYsIDB4YWQz
ZjkyOTIsIDB4YmMyMTlkOWQsIDB4NDg3MDM4MzgsIDB4MDRmMWY1ZjUsCisgICAgMHhkZjYzYmNi
YywgMHhjMTc3YjZiNiwgMHg3NWFmZGFkYSwgMHg2MzQyMjEyMSwgMHgzMDIwMTAxMCwgMHgxYWU1
ZmZmZiwKKyAgICAweDBlZmRmM2YzLCAweDZkYmZkMmQyLCAweDRjODFjZGNkLCAweDE0MTgwYzBj
LCAweDM1MjYxMzEzLCAweDJmYzNlY2VjLAorICAgIDB4ZTFiZTVmNWYsIDB4YTIzNTk3OTcsIDB4
Y2M4ODQ0NDQsIDB4MzkyZTE3MTcsIDB4NTc5M2M0YzQsIDB4ZjI1NWE3YTcsCisgICAgMHg4MmZj
N2U3ZSwgMHg0NzdhM2QzZCwgMHhhY2M4NjQ2NCwgMHhlN2JhNWQ1ZCwgMHgyYjMyMTkxOSwgMHg5
NWU2NzM3MywKKyAgICAweGEwYzA2MDYwLCAweDk4MTk4MTgxLCAweGQxOWU0ZjRmLCAweDdmYTNk
Y2RjLCAweDY2NDQyMjIyLCAweDdlNTQyYTJhLAorICAgIDB4YWIzYjkwOTAsIDB4ODMwYjg4ODgs
IDB4Y2E4YzQ2NDYsIDB4MjljN2VlZWUsIDB4ZDM2YmI4YjgsIDB4M2MyODE0MTQsCisgICAgMHg3
OWE3ZGVkZSwgMHhlMmJjNWU1ZSwgMHgxZDE2MGIwYiwgMHg3NmFkZGJkYiwgMHgzYmRiZTBlMCwg
MHg1NjY0MzIzMiwKKyAgICAweDRlNzQzYTNhLCAweDFlMTQwYTBhLCAweGRiOTI0OTQ5LCAweDBh
MGMwNjA2LCAweDZjNDgyNDI0LCAweGU0Yjg1YzVjLAorICAgIDB4NWQ5ZmMyYzIsIDB4NmViZGQz
ZDMsIDB4ZWY0M2FjYWMsIDB4YTZjNDYyNjIsIDB4YTgzOTkxOTEsIDB4YTQzMTk1OTUsCisgICAg
MHgzN2QzZTRlNCwgMHg4YmYyNzk3OSwgMHgzMmQ1ZTdlNywgMHg0MzhiYzhjOCwgMHg1OTZlMzcz
NywgMHhiN2RhNmQ2ZCwKKyAgICAweDhjMDE4ZDhkLCAweDY0YjFkNWQ1LCAweGQyOWM0ZTRlLCAw
eGUwNDlhOWE5LCAweGI0ZDg2YzZjLCAweGZhYWM1NjU2LAorICAgIDB4MDdmM2Y0ZjQsIDB4MjVj
ZmVhZWEsIDB4YWZjYTY1NjUsIDB4OGVmNDdhN2EsIDB4ZTk0N2FlYWUsIDB4MTgxMDA4MDgsCisg
ICAgMHhkNTZmYmFiYSwgMHg4OGYwNzg3OCwgMHg2ZjRhMjUyNSwgMHg3MjVjMmUyZSwgMHgyNDM4
MWMxYywgMHhmMTU3YTZhNiwKKyAgICAweGM3NzNiNGI0LCAweDUxOTdjNmM2LCAweDIzY2JlOGU4
LCAweDdjYTFkZGRkLCAweDljZTg3NDc0LCAweDIxM2UxZjFmLAorICAgIDB4ZGQ5NjRiNGIsIDB4
ZGM2MWJkYmQsIDB4ODYwZDhiOGIsIDB4ODUwZjhhOGEsIDB4OTBlMDcwNzAsIDB4NDI3YzNlM2Us
CisgICAgMHhjNDcxYjViNSwgMHhhYWNjNjY2NiwgMHhkODkwNDg0OCwgMHgwNTA2MDMwMywgMHgw
MWY3ZjZmNiwgMHgxMjFjMGUwZSwKKyAgICAweGEzYzI2MTYxLCAweDVmNmEzNTM1LCAweGY5YWU1
NzU3LCAweGQwNjliOWI5LCAweDkxMTc4Njg2LCAweDU4OTljMWMxLAorICAgIDB4MjczYTFkMWQs
IDB4YjkyNzllOWUsIDB4MzhkOWUxZTEsIDB4MTNlYmY4ZjgsIDB4YjMyYjk4OTgsIDB4MzMyMjEx
MTEsCisgICAgMHhiYmQyNjk2OSwgMHg3MGE5ZDlkOSwgMHg4OTA3OGU4ZSwgMHhhNzMzOTQ5NCwg
MHhiNjJkOWI5YiwgMHgyMjNjMWUxZSwKKyAgICAweDkyMTU4Nzg3LCAweDIwYzllOWU5LCAweDQ5
ODdjZWNlLCAweGZmYWE1NTU1LCAweDc4NTAyODI4LCAweDdhYTVkZmRmLAorICAgIDB4OGYwMzhj
OGMsIDB4Zjg1OWExYTEsIDB4ODAwOTg5ODksIDB4MTcxYTBkMGQsIDB4ZGE2NWJmYmYsIDB4MzFk
N2U2ZTYsCisgICAgMHhjNjg0NDI0MiwgMHhiOGQwNjg2OCwgMHhjMzgyNDE0MSwgMHhiMDI5OTk5
OSwgMHg3NzVhMmQyZCwgMHgxMTFlMGYwZiwKKyAgICAweGNiN2JiMGIwLCAweGZjYTg1NDU0LCAw
eGQ2NmRiYmJiLCAweDNhMmMxNjE2LAorfTsKKworY29uc3RleHByIHVpbnQzMl90IHRlMlsyNTZd
ID0geworICAgIDB4NjNhNWM2NjMsIDB4N2M4NGY4N2MsIDB4Nzc5OWVlNzcsIDB4N2I4ZGY2N2Is
IDB4ZjIwZGZmZjIsIDB4NmJiZGQ2NmIsCisgICAgMHg2ZmIxZGU2ZiwgMHhjNTU0OTFjNSwgMHgz
MDUwNjAzMCwgMHgwMTAzMDIwMSwgMHg2N2E5Y2U2NywgMHgyYjdkNTYyYiwKKyAgICAweGZlMTll
N2ZlLCAweGQ3NjJiNWQ3LCAweGFiZTY0ZGFiLCAweDc2OWFlYzc2LCAweGNhNDU4ZmNhLCAweDgy
OWQxZjgyLAorICAgIDB4Yzk0MDg5YzksIDB4N2Q4N2ZhN2QsIDB4ZmExNWVmZmEsIDB4NTllYmIy
NTksIDB4NDdjOThlNDcsIDB4ZjAwYmZiZjAsCisgICAgMHhhZGVjNDFhZCwgMHhkNDY3YjNkNCwg
MHhhMmZkNWZhMiwgMHhhZmVhNDVhZiwgMHg5Y2JmMjM5YywgMHhhNGY3NTNhNCwKKyAgICAweDcy
OTZlNDcyLCAweGMwNWI5YmMwLCAweGI3YzI3NWI3LCAweGZkMWNlMWZkLCAweDkzYWUzZDkzLCAw
eDI2NmE0YzI2LAorICAgIDB4MzY1YTZjMzYsIDB4M2Y0MTdlM2YsIDB4ZjcwMmY1ZjcsIDB4Y2M0
ZjgzY2MsIDB4MzQ1YzY4MzQsIDB4YTVmNDUxYTUsCisgICAgMHhlNTM0ZDFlNSwgMHhmMTA4Zjlm
MSwgMHg3MTkzZTI3MSwgMHhkODczYWJkOCwgMHgzMTUzNjIzMSwgMHgxNTNmMmExNSwKKyAgICAw
eDA0MGMwODA0LCAweGM3NTI5NWM3LCAweDIzNjU0NjIzLCAweGMzNWU5ZGMzLCAweDE4MjgzMDE4
LCAweDk2YTEzNzk2LAorICAgIDB4MDUwZjBhMDUsIDB4OWFiNTJmOWEsIDB4MDcwOTBlMDcsIDB4
MTIzNjI0MTIsIDB4ODA5YjFiODAsIDB4ZTIzZGRmZTIsCisgICAgMHhlYjI2Y2RlYiwgMHgyNzY5
NGUyNywgMHhiMmNkN2ZiMiwgMHg3NTlmZWE3NSwgMHgwOTFiMTIwOSwgMHg4MzllMWQ4MywKKyAg
ICAweDJjNzQ1ODJjLCAweDFhMmUzNDFhLCAweDFiMmQzNjFiLCAweDZlYjJkYzZlLCAweDVhZWVi
NDVhLCAweGEwZmI1YmEwLAorICAgIDB4NTJmNmE0NTIsIDB4M2I0ZDc2M2IsIDB4ZDY2MWI3ZDYs
IDB4YjNjZTdkYjMsIDB4Mjk3YjUyMjksIDB4ZTMzZWRkZTMsCisgICAgMHgyZjcxNWUyZiwgMHg4
NDk3MTM4NCwgMHg1M2Y1YTY1MywgMHhkMTY4YjlkMSwgMHgwMDAwMDAwMCwgMHhlZDJjYzFlZCwK
KyAgICAweDIwNjA0MDIwLCAweGZjMWZlM2ZjLCAweGIxYzg3OWIxLCAweDViZWRiNjViLCAweDZh
YmVkNDZhLCAweGNiNDY4ZGNiLAorICAgIDB4YmVkOTY3YmUsIDB4Mzk0YjcyMzksIDB4NGFkZTk0
NGEsIDB4NGNkNDk4NGMsIDB4NThlOGIwNTgsIDB4Y2Y0YTg1Y2YsCisgICAgMHhkMDZiYmJkMCwg
MHhlZjJhYzVlZiwgMHhhYWU1NGZhYSwgMHhmYjE2ZWRmYiwgMHg0M2M1ODY0MywgMHg0ZGQ3OWE0
ZCwKKyAgICAweDMzNTU2NjMzLCAweDg1OTQxMTg1LCAweDQ1Y2Y4YTQ1LCAweGY5MTBlOWY5LCAw
eDAyMDYwNDAyLCAweDdmODFmZTdmLAorICAgIDB4NTBmMGEwNTAsIDB4M2M0NDc4M2MsIDB4OWZi
YTI1OWYsIDB4YThlMzRiYTgsIDB4NTFmM2EyNTEsIDB4YTNmZTVkYTMsCisgICAgMHg0MGMwODA0
MCwgMHg4ZjhhMDU4ZiwgMHg5MmFkM2Y5MiwgMHg5ZGJjMjE5ZCwgMHgzODQ4NzAzOCwgMHhmNTA0
ZjFmNSwKKyAgICAweGJjZGY2M2JjLCAweGI2YzE3N2I2LCAweGRhNzVhZmRhLCAweDIxNjM0MjIx
LCAweDEwMzAyMDEwLCAweGZmMWFlNWZmLAorICAgIDB4ZjMwZWZkZjMsIDB4ZDI2ZGJmZDIsIDB4
Y2Q0YzgxY2QsIDB4MGMxNDE4MGMsIDB4MTMzNTI2MTMsIDB4ZWMyZmMzZWMsCisgICAgMHg1ZmUx
YmU1ZiwgMHg5N2EyMzU5NywgMHg0NGNjODg0NCwgMHgxNzM5MmUxNywgMHhjNDU3OTNjNCwgMHhh
N2YyNTVhNywKKyAgICAweDdlODJmYzdlLCAweDNkNDc3YTNkLCAweDY0YWNjODY0LCAweDVkZTdi
YTVkLCAweDE5MmIzMjE5LCAweDczOTVlNjczLAorICAgIDB4NjBhMGMwNjAsIDB4ODE5ODE5ODEs
IDB4NGZkMTllNGYsIDB4ZGM3ZmEzZGMsIDB4MjI2NjQ0MjIsIDB4MmE3ZTU0MmEsCisgICAgMHg5
MGFiM2I5MCwgMHg4ODgzMGI4OCwgMHg0NmNhOGM0NiwgMHhlZTI5YzdlZSwgMHhiOGQzNmJiOCwg
MHgxNDNjMjgxNCwKKyAgICAweGRlNzlhN2RlLCAweDVlZTJiYzVlLCAweDBiMWQxNjBiLCAweGRi
NzZhZGRiLCAweGUwM2JkYmUwLCAweDMyNTY2NDMyLAorICAgIDB4M2E0ZTc0M2EsIDB4MGExZTE0
MGEsIDB4NDlkYjkyNDksIDB4MDYwYTBjMDYsIDB4MjQ2YzQ4MjQsIDB4NWNlNGI4NWMsCisgICAg
MHhjMjVkOWZjMiwgMHhkMzZlYmRkMywgMHhhY2VmNDNhYywgMHg2MmE2YzQ2MiwgMHg5MWE4Mzk5
MSwgMHg5NWE0MzE5NSwKKyAgICAweGU0MzdkM2U0LCAweDc5OGJmMjc5LCAweGU3MzJkNWU3LCAw
eGM4NDM4YmM4LCAweDM3NTk2ZTM3LCAweDZkYjdkYTZkLAorICAgIDB4OGQ4YzAxOGQsIDB4ZDU2
NGIxZDUsIDB4NGVkMjljNGUsIDB4YTllMDQ5YTksIDB4NmNiNGQ4NmMsIDB4NTZmYWFjNTYsCisg
ICAgMHhmNDA3ZjNmNCwgMHhlYTI1Y2ZlYSwgMHg2NWFmY2E2NSwgMHg3YThlZjQ3YSwgMHhhZWU5
NDdhZSwgMHgwODE4MTAwOCwKKyAgICAweGJhZDU2ZmJhLCAweDc4ODhmMDc4LCAweDI1NmY0YTI1
LCAweDJlNzI1YzJlLCAweDFjMjQzODFjLCAweGE2ZjE1N2E2LAorICAgIDB4YjRjNzczYjQsIDB4
YzY1MTk3YzYsIDB4ZTgyM2NiZTgsIDB4ZGQ3Y2ExZGQsIDB4NzQ5Y2U4NzQsIDB4MWYyMTNlMWYs
CisgICAgMHg0YmRkOTY0YiwgMHhiZGRjNjFiZCwgMHg4Yjg2MGQ4YiwgMHg4YTg1MGY4YSwgMHg3
MDkwZTA3MCwgMHgzZTQyN2MzZSwKKyAgICAweGI1YzQ3MWI1LCAweDY2YWFjYzY2LCAweDQ4ZDg5
MDQ4LCAweDAzMDUwNjAzLCAweGY2MDFmN2Y2LCAweDBlMTIxYzBlLAorICAgIDB4NjFhM2MyNjEs
IDB4MzU1ZjZhMzUsIDB4NTdmOWFlNTcsIDB4YjlkMDY5YjksIDB4ODY5MTE3ODYsIDB4YzE1ODk5
YzEsCisgICAgMHgxZDI3M2ExZCwgMHg5ZWI5Mjc5ZSwgMHhlMTM4ZDllMSwgMHhmODEzZWJmOCwg
MHg5OGIzMmI5OCwgMHgxMTMzMjIxMSwKKyAgICAweDY5YmJkMjY5LCAweGQ5NzBhOWQ5LCAweDhl
ODkwNzhlLCAweDk0YTczMzk0LCAweDliYjYyZDliLCAweDFlMjIzYzFlLAorICAgIDB4ODc5MjE1
ODcsIDB4ZTkyMGM5ZTksIDB4Y2U0OTg3Y2UsIDB4NTVmZmFhNTUsIDB4Mjg3ODUwMjgsIDB4ZGY3
YWE1ZGYsCisgICAgMHg4YzhmMDM4YywgMHhhMWY4NTlhMSwgMHg4OTgwMDk4OSwgMHgwZDE3MWEw
ZCwgMHhiZmRhNjViZiwgMHhlNjMxZDdlNiwKKyAgICAweDQyYzY4NDQyLCAweDY4YjhkMDY4LCAw
eDQxYzM4MjQxLCAweDk5YjAyOTk5LCAweDJkNzc1YTJkLCAweDBmMTExZTBmLAorICAgIDB4YjBj
YjdiYjAsIDB4NTRmY2E4NTQsIDB4YmJkNjZkYmIsIDB4MTYzYTJjMTYsCit9OworCitjb25zdGV4
cHIgdWludDMyX3QgdGUzWzI1Nl0gPSB7CisgICAgMHg2MzYzYTVjNiwgMHg3YzdjODRmOCwgMHg3
Nzc3OTllZSwgMHg3YjdiOGRmNiwgMHhmMmYyMGRmZiwgMHg2YjZiYmRkNiwKKyAgICAweDZmNmZi
MWRlLCAweGM1YzU1NDkxLCAweDMwMzA1MDYwLCAweDAxMDEwMzAyLCAweDY3NjdhOWNlLCAweDJi
MmI3ZDU2LAorICAgIDB4ZmVmZTE5ZTcsIDB4ZDdkNzYyYjUsIDB4YWJhYmU2NGQsIDB4NzY3Njlh
ZWMsIDB4Y2FjYTQ1OGYsIDB4ODI4MjlkMWYsCisgICAgMHhjOWM5NDA4OSwgMHg3ZDdkODdmYSwg
MHhmYWZhMTVlZiwgMHg1OTU5ZWJiMiwgMHg0NzQ3Yzk4ZSwgMHhmMGYwMGJmYiwKKyAgICAweGFk
YWRlYzQxLCAweGQ0ZDQ2N2IzLCAweGEyYTJmZDVmLCAweGFmYWZlYTQ1LCAweDljOWNiZjIzLCAw
eGE0YTRmNzUzLAorICAgIDB4NzI3Mjk2ZTQsIDB4YzBjMDViOWIsIDB4YjdiN2MyNzUsIDB4ZmRm
ZDFjZTEsIDB4OTM5M2FlM2QsIDB4MjYyNjZhNGMsCisgICAgMHgzNjM2NWE2YywgMHgzZjNmNDE3
ZSwgMHhmN2Y3MDJmNSwgMHhjY2NjNGY4MywgMHgzNDM0NWM2OCwgMHhhNWE1ZjQ1MSwKKyAgICAw
eGU1ZTUzNGQxLCAweGYxZjEwOGY5LCAweDcxNzE5M2UyLCAweGQ4ZDg3M2FiLCAweDMxMzE1MzYy
LCAweDE1MTUzZjJhLAorICAgIDB4MDQwNDBjMDgsIDB4YzdjNzUyOTUsIDB4MjMyMzY1NDYsIDB4
YzNjMzVlOWQsIDB4MTgxODI4MzAsIDB4OTY5NmExMzcsCisgICAgMHgwNTA1MGYwYSwgMHg5YTlh
YjUyZiwgMHgwNzA3MDkwZSwgMHgxMjEyMzYyNCwgMHg4MDgwOWIxYiwgMHhlMmUyM2RkZiwKKyAg
ICAweGViZWIyNmNkLCAweDI3Mjc2OTRlLCAweGIyYjJjZDdmLCAweDc1NzU5ZmVhLCAweDA5MDkx
YjEyLCAweDgzODM5ZTFkLAorICAgIDB4MmMyYzc0NTgsIDB4MWExYTJlMzQsIDB4MWIxYjJkMzYs
IDB4NmU2ZWIyZGMsIDB4NWE1YWVlYjQsIDB4YTBhMGZiNWIsCisgICAgMHg1MjUyZjZhNCwgMHgz
YjNiNGQ3NiwgMHhkNmQ2NjFiNywgMHhiM2IzY2U3ZCwgMHgyOTI5N2I1MiwgMHhlM2UzM2VkZCwK
KyAgICAweDJmMmY3MTVlLCAweDg0ODQ5NzEzLCAweDUzNTNmNWE2LCAweGQxZDE2OGI5LCAweDAw
MDAwMDAwLCAweGVkZWQyY2MxLAorICAgIDB4MjAyMDYwNDAsIDB4ZmNmYzFmZTMsIDB4YjFiMWM4
NzksIDB4NWI1YmVkYjYsIDB4NmE2YWJlZDQsIDB4Y2JjYjQ2OGQsCisgICAgMHhiZWJlZDk2Nywg
MHgzOTM5NGI3MiwgMHg0YTRhZGU5NCwgMHg0YzRjZDQ5OCwgMHg1ODU4ZThiMCwgMHhjZmNmNGE4
NSwKKyAgICAweGQwZDA2YmJiLCAweGVmZWYyYWM1LCAweGFhYWFlNTRmLCAweGZiZmIxNmVkLCAw
eDQzNDNjNTg2LCAweDRkNGRkNzlhLAorICAgIDB4MzMzMzU1NjYsIDB4ODU4NTk0MTEsIDB4NDU0
NWNmOGEsIDB4ZjlmOTEwZTksIDB4MDIwMjA2MDQsIDB4N2Y3ZjgxZmUsCisgICAgMHg1MDUwZjBh
MCwgMHgzYzNjNDQ3OCwgMHg5ZjlmYmEyNSwgMHhhOGE4ZTM0YiwgMHg1MTUxZjNhMiwgMHhhM2Ez
ZmU1ZCwKKyAgICAweDQwNDBjMDgwLCAweDhmOGY4YTA1LCAweDkyOTJhZDNmLCAweDlkOWRiYzIx
LCAweDM4Mzg0ODcwLCAweGY1ZjUwNGYxLAorICAgIDB4YmNiY2RmNjMsIDB4YjZiNmMxNzcsIDB4
ZGFkYTc1YWYsIDB4MjEyMTYzNDIsIDB4MTAxMDMwMjAsIDB4ZmZmZjFhZTUsCisgICAgMHhmM2Yz
MGVmZCwgMHhkMmQyNmRiZiwgMHhjZGNkNGM4MSwgMHgwYzBjMTQxOCwgMHgxMzEzMzUyNiwgMHhl
Y2VjMmZjMywKKyAgICAweDVmNWZlMWJlLCAweDk3OTdhMjM1LCAweDQ0NDRjYzg4LCAweDE3MTcz
OTJlLCAweGM0YzQ1NzkzLCAweGE3YTdmMjU1LAorICAgIDB4N2U3ZTgyZmMsIDB4M2QzZDQ3N2Es
IDB4NjQ2NGFjYzgsIDB4NWQ1ZGU3YmEsIDB4MTkxOTJiMzIsIDB4NzM3Mzk1ZTYsCisgICAgMHg2
MDYwYTBjMCwgMHg4MTgxOTgxOSwgMHg0ZjRmZDE5ZSwgMHhkY2RjN2ZhMywgMHgyMjIyNjY0NCwg
MHgyYTJhN2U1NCwKKyAgICAweDkwOTBhYjNiLCAweDg4ODg4MzBiLCAweDQ2NDZjYThjLCAweGVl
ZWUyOWM3LCAweGI4YjhkMzZiLCAweDE0MTQzYzI4LAorICAgIDB4ZGVkZTc5YTcsIDB4NWU1ZWUy
YmMsIDB4MGIwYjFkMTYsIDB4ZGJkYjc2YWQsIDB4ZTBlMDNiZGIsIDB4MzIzMjU2NjQsCisgICAg
MHgzYTNhNGU3NCwgMHgwYTBhMWUxNCwgMHg0OTQ5ZGI5MiwgMHgwNjA2MGEwYywgMHgyNDI0NmM0
OCwgMHg1YzVjZTRiOCwKKyAgICAweGMyYzI1ZDlmLCAweGQzZDM2ZWJkLCAweGFjYWNlZjQzLCAw
eDYyNjJhNmM0LCAweDkxOTFhODM5LCAweDk1OTVhNDMxLAorICAgIDB4ZTRlNDM3ZDMsIDB4Nzk3
OThiZjIsIDB4ZTdlNzMyZDUsIDB4YzhjODQzOGIsIDB4MzczNzU5NmUsIDB4NmQ2ZGI3ZGEsCisg
ICAgMHg4ZDhkOGMwMSwgMHhkNWQ1NjRiMSwgMHg0ZTRlZDI5YywgMHhhOWE5ZTA0OSwgMHg2YzZj
YjRkOCwgMHg1NjU2ZmFhYywKKyAgICAweGY0ZjQwN2YzLCAweGVhZWEyNWNmLCAweDY1NjVhZmNh
LCAweDdhN2E4ZWY0LCAweGFlYWVlOTQ3LCAweDA4MDgxODEwLAorICAgIDB4YmFiYWQ1NmYsIDB4
Nzg3ODg4ZjAsIDB4MjUyNTZmNGEsIDB4MmUyZTcyNWMsIDB4MWMxYzI0MzgsIDB4YTZhNmYxNTcs
CisgICAgMHhiNGI0Yzc3MywgMHhjNmM2NTE5NywgMHhlOGU4MjNjYiwgMHhkZGRkN2NhMSwgMHg3
NDc0OWNlOCwgMHgxZjFmMjEzZSwKKyAgICAweDRiNGJkZDk2LCAweGJkYmRkYzYxLCAweDhiOGI4
NjBkLCAweDhhOGE4NTBmLCAweDcwNzA5MGUwLCAweDNlM2U0MjdjLAorICAgIDB4YjViNWM0NzEs
IDB4NjY2NmFhY2MsIDB4NDg0OGQ4OTAsIDB4MDMwMzA1MDYsIDB4ZjZmNjAxZjcsIDB4MGUwZTEy
MWMsCisgICAgMHg2MTYxYTNjMiwgMHgzNTM1NWY2YSwgMHg1NzU3ZjlhZSwgMHhiOWI5ZDA2OSwg
MHg4Njg2OTExNywgMHhjMWMxNTg5OSwKKyAgICAweDFkMWQyNzNhLCAweDllOWViOTI3LCAweGUx
ZTEzOGQ5LCAweGY4ZjgxM2ViLCAweDk4OThiMzJiLCAweDExMTEzMzIyLAorICAgIDB4Njk2OWJi
ZDIsIDB4ZDlkOTcwYTksIDB4OGU4ZTg5MDcsIDB4OTQ5NGE3MzMsIDB4OWI5YmI2MmQsIDB4MWUx
ZTIyM2MsCisgICAgMHg4Nzg3OTIxNSwgMHhlOWU5MjBjOSwgMHhjZWNlNDk4NywgMHg1NTU1ZmZh
YSwgMHgyODI4Nzg1MCwgMHhkZmRmN2FhNSwKKyAgICAweDhjOGM4ZjAzLCAweGExYTFmODU5LCAw
eDg5ODk4MDA5LCAweDBkMGQxNzFhLCAweGJmYmZkYTY1LCAweGU2ZTYzMWQ3LAorICAgIDB4NDI0
MmM2ODQsIDB4Njg2OGI4ZDAsIDB4NDE0MWMzODIsIDB4OTk5OWIwMjksIDB4MmQyZDc3NWEsIDB4
MGYwZjExMWUsCisgICAgMHhiMGIwY2I3YiwgMHg1NDU0ZmNhOCwgMHhiYmJiZDY2ZCwgMHgxNjE2
M2EyYywKK307CisKK3N0cnVjdCBhbGlnbmFzKDE2KSB1NjR4MiB7CisgIGNvbnN0ZXhwciB1NjR4
MigpIDogdnswLCAwfSB7fTsKKyAgY29uc3RleHByIHU2NHgyKHVpbnQ2NF90IGhpLCB1aW50NjRf
dCBsbykgOiB2e2xvLCBoaX0ge30KKworICB1aW50NjRfdCB2WzJdOworfTsKKworLy8gU29mdHdh
cmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFZlY3RvcjEyOCBjbGFzcywgdXNpbmcgdWludDMyX3QK
Ky8vIGFzIGFuIHVuZGVybHlpbmcgdmVjdG9yIHJlZ2lzdGVyLgorLy8KK3N0cnVjdCBWZWN0b3Ix
MjggeworICBpbmxpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJ
TkUgVmVjdG9yMTI4JiBvcGVyYXRvcl49KAorICAgICAgY29uc3QgVmVjdG9yMTI4JiBvdGhlcikg
eworICAgIHNbMF0gXj0gb3RoZXIuc1swXTsKKyAgICBzWzFdIF49IG90aGVyLnNbMV07CisgICAg
c1syXSBePSBvdGhlci5zWzJdOworICAgIHNbM10gXj0gb3RoZXIuc1szXTsKKyAgICByZXR1cm4g
KnRoaXM7CisgIH0KKworICB1aW50MzJfdCBzWzRdOworfTsKKworaW5saW5lIEFCU0xfUkFORE9N
X0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFZlY3RvcjEyOAorVmVjdG9yMTI4TG9h
ZChjb25zdCB2b2lkKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBmcm9tKSB7CisgIFZl
Y3RvcjEyOCByZXN1bHQ7CisgIGNvbnN0IHVpbnQ4X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JF
U1RSSUNUIHNyYyA9CisgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcm9t
KTsKKworICByZXN1bHQuc1swXSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmNbMF0pIDw8IDI0
IHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjWzFdKSA8PCAxNiB8
CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1syXSkgPDwgOCB8Cisg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1szXSk7CisgIHJlc3VsdC5z
WzFdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1s0XSkgPDwgMjQgfAorICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmNbNV0pIDw8IDE2IHwKKyAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjWzZdKSA8PCA4IHwKKyAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjWzddKTsKKyAgcmVzdWx0LnNbMl0gPSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oc3JjWzhdKSA8PCAyNCB8CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHNyY1s5XSkgPDwgMTYgfAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVp
bnQzMl90PihzcmNbMTBdKSA8PCA4IHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oc3JjWzExXSk7CisgIHJlc3VsdC5zWzNdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNy
Y1sxMl0pIDw8IDI0IHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Jj
WzEzXSkgPDwgMTYgfAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmNb
MTRdKSA8PCA4IHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjWzE1
XSk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2lubGluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9B
VFRSSUJVVEVfQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjEyOFN0b3JlKAorICAgIGNvbnN0IFZl
Y3RvcjEyOCYgdiwgdm9pZCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1QgdG8pIHsKKyAg
dWludDhfdCogZHN0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odG8pOworICBkc3RbMF0g
PSBzdGF0aWNfY2FzdDx1aW50OF90Pih2LnNbMF0gPj4gMjQpOworICBkc3RbMV0gPSBzdGF0aWNf
Y2FzdDx1aW50OF90Pih2LnNbMF0gPj4gMTYpOworICBkc3RbMl0gPSBzdGF0aWNfY2FzdDx1aW50
OF90Pih2LnNbMF0gPj4gOCk7CisgIGRzdFszXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1sw
XSk7CisgIGRzdFs0XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1sxXSA+PiAyNCk7CisgIGRz
dFs1XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1sxXSA+PiAxNik7CisgIGRzdFs2XSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1sxXSA+PiA4KTsKKyAgZHN0WzddID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4odi5zWzFdKTsKKyAgZHN0WzhdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odi5zWzJd
ID4+IDI0KTsKKyAgZHN0WzldID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odi5zWzJdID4+IDE2KTsK
KyAgZHN0WzEwXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1syXSA+PiA4KTsKKyAgZHN0WzEx
XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1syXSk7CisgIGRzdFsxMl0gPSBzdGF0aWNfY2Fz
dDx1aW50OF90Pih2LnNbM10gPj4gMjQpOworICBkc3RbMTNdID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4odi5zWzNdID4+IDE2KTsKKyAgZHN0WzE0XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1sz
XSA+PiA4KTsKKyAgZHN0WzE1XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1szXSk7Cit9CisK
Ky8vIE9uZSByb3VuZCBvZiBBRVMuICJyb3VuZF9rZXkiIGlzIGEgcHVibGljIGNvbnN0YW50IGZv
ciBicmVha2luZyB0aGUKKy8vIHN5bW1ldHJ5IG9mIEFFUyAoZW5zdXJlcyBwcmV2aW91c2x5IGVx
dWFsIGNvbHVtbnMgZGlmZmVyIGFmdGVyd2FyZHMpLgoraW5saW5lIEFCU0xfUkFORE9NX0lOVEVS
TkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFZlY3RvcjEyOAorQWVzUm91bmQoY29uc3QgVmVj
dG9yMTI4JiBzdGF0ZSwgY29uc3QgVmVjdG9yMTI4JiByb3VuZF9rZXkpIHsKKyAgLy8gY2xhbmct
Zm9ybWF0IG9mZgorICBWZWN0b3IxMjggcmVzdWx0OworICByZXN1bHQuc1swXSA9IHJvdW5kX2tl
eS5zWzBdIF4KKyAgICAgICAgICAgICAgICB0ZTBbdWludDhfdChzdGF0ZS5zWzBdID4+IDI0KV0g
XgorICAgICAgICAgICAgICAgIHRlMVt1aW50OF90KHN0YXRlLnNbMV0gPj4gMTYpXSBeCisgICAg
ICAgICAgICAgICAgdGUyW3VpbnQ4X3Qoc3RhdGUuc1syXSA+PiA4KV0gXgorICAgICAgICAgICAg
ICAgIHRlM1t1aW50OF90KHN0YXRlLnNbM10pXTsKKyAgcmVzdWx0LnNbMV0gPSByb3VuZF9rZXku
c1sxXSBeCisgICAgICAgICAgICAgICAgdGUwW3VpbnQ4X3Qoc3RhdGUuc1sxXSA+PiAyNCldIF4K
KyAgICAgICAgICAgICAgICB0ZTFbdWludDhfdChzdGF0ZS5zWzJdID4+IDE2KV0gXgorICAgICAg
ICAgICAgICAgIHRlMlt1aW50OF90KHN0YXRlLnNbM10gPj4gOCldIF4KKyAgICAgICAgICAgICAg
ICB0ZTNbdWludDhfdChzdGF0ZS5zWzBdKV07CisgIHJlc3VsdC5zWzJdID0gcm91bmRfa2V5LnNb
Ml0gXgorICAgICAgICAgICAgICAgIHRlMFt1aW50OF90KHN0YXRlLnNbMl0gPj4gMjQpXSBeCisg
ICAgICAgICAgICAgICAgdGUxW3VpbnQ4X3Qoc3RhdGUuc1szXSA+PiAxNildIF4KKyAgICAgICAg
ICAgICAgICB0ZTJbdWludDhfdChzdGF0ZS5zWzBdID4+IDgpXSBeCisgICAgICAgICAgICAgICAg
dGUzW3VpbnQ4X3Qoc3RhdGUuc1sxXSldOworICByZXN1bHQuc1szXSA9IHJvdW5kX2tleS5zWzNd
IF4KKyAgICAgICAgICAgICAgICB0ZTBbdWludDhfdChzdGF0ZS5zWzNdID4+IDI0KV0gXgorICAg
ICAgICAgICAgICAgIHRlMVt1aW50OF90KHN0YXRlLnNbMF0gPj4gMTYpXSBeCisgICAgICAgICAg
ICAgICAgdGUyW3VpbnQ4X3Qoc3RhdGUuc1sxXSA+PiA4KV0gXgorICAgICAgICAgICAgICAgIHRl
M1t1aW50OF90KHN0YXRlLnNbMl0pXTsKKyAgcmV0dXJuIHJlc3VsdDsKKyAgLy8gY2xhbmctZm9y
bWF0IG9uCit9CisKKy8vIFJBTkRlbiA9IFJBTkRvbSBnZW5lcmF0b3Igb3IgYmVldHJvb3RzIGlu
IFN3aXNzIEdlcm1hbi4KKy8vICdTdHJvbmcnICh3ZWxsLWRpc3RyaWJ1dGVkLCB1bnByZWRpY3Rh
YmxlLCBiYWNrdHJhY2tpbmctcmVzaXN0YW50KSByYW5kb20KKy8vIGdlbmVyYXRvciwgZmFzdGVy
IGluIHNvbWUgYmVuY2htYXJrcyB0aGFuIHN0ZDo6bXQxOTkzN182NCBhbmQgcGNnNjRfYzMyLgor
Ly8KKy8vIEhpZ2gtbGV2ZWwgc3VtbWFyeToKKy8vIDEpIFJldmVyaWUgKHNlZSAiQSBSb2J1c3Qg
YW5kIFNwb25nZS1MaWtlIFBSTkcgd2l0aCBJbXByb3ZlZCBFZmZpY2llbmN5IikgaXMKKy8vICAg
IGEgc3BvbmdlLWxpa2UgcmFuZG9tIGdlbmVyYXRvciB0aGF0IHJlcXVpcmVzIGEgY3J5cHRvZ3Jh
cGhpYyBwZXJtdXRhdGlvbi4KKy8vICAgIEl0IGltcHJvdmVzIHVwb24gIlByb3ZhYmx5IFJvYnVz
dCBTcG9uZ2UtQmFzZWQgUFJOR3MgYW5kIEtERnMiIGJ5CisvLyAgICBhY2hpZXZpbmcgYmFja3Ry
YWNraW5nIHJlc2lzdGFuY2Ugd2l0aCBvbmx5IG9uZSBQZXJtdXRlKCkgcGVyIGJ1ZmZlci4KKy8v
CisvLyAyKSAiU2ltcGlyYSB2MjogQSBGYW1pbHkgb2YgRWZmaWNpZW50IFBlcm11dGF0aW9ucyBV
c2luZyB0aGUgQUVTIFJvdW5kCisvLyAgICBGdW5jdGlvbiIgY29uc3RydWN0cyB1cCB0byAxMDI0
LWJpdCBwZXJtdXRhdGlvbnMgdXNpbmcgYW4gaW1wcm92ZWQKKy8vICAgIEdlbmVyYWxpemVkIEZl
aXN0ZWwgbmV0d29yayB3aXRoIDItcm91bmQgQUVTLTEyOCBmdW5jdGlvbnMuIFRoaXMgRmVpc3Rl
bAorLy8gICAgYmxvY2sgc2h1ZmZsZSBhY2hpZXZlcyBkaWZmdXNpb24gZmFzdGVyIGFuZCBpcyBs
ZXNzIHZ1bG5lcmFibGUgdG8KKy8vICAgIHNsaWNlZC1iaWNsaXF1ZSBhdHRhY2tzIHRoYW4gdGhl
IFR5cGUtMiBjeWNsaWMgc2h1ZmZsZS4KKy8vCisvLyAzKSAiSW1wcm92aW5nIHRoZSBHZW5lcmFs
aXplZCBGZWlzdGVsIiBhbmQgIk5ldyBjcml0ZXJpb24gZm9yIGRpZmZ1c2lvbgorLy8gICAgcHJv
cGVydHkiIGV4dGVuZHMgdGhlIHNhbWUga2luZCBvZiBpbXByb3ZlZCBGZWlzdGVsIGJsb2NrIHNo
dWZmbGUgdG8gMTYKKy8vICAgIGJyYW5jaGVzLCB3aGljaCBlbmFibGVzIGEgMjA0OC1iaXQgcGVy
bXV0YXRpb24uCisvLworLy8gQ29tYmluZSB0aGVzZSB0aHJlZSBpZGVhcyBhbmQgYWxzbyBjaGFu
Z2UgU2ltcGlyYSdzIHN1YnJvdW5kIGtleXMgZnJvbQorLy8gc3RydWN0dXJlZC9sb3ctZW50cm9w
eSBjb3VudGVycyB0byBkaWdpdHMgb2YgUGkuCisKKy8vIFJhbmRlbiBjb25zdGFudHMuCitjb25z
dGV4cHIgc2l6ZV90IGtGZWlzdGVsQmxvY2tzID0gMTY7Citjb25zdGV4cHIgc2l6ZV90IGtGZWlz
dGVsRnVuY3Rpb25zID0ga0ZlaXN0ZWxCbG9ja3MgLyAyOyAgLy8gPSA4Citjb25zdGV4cHIgc2l6
ZV90IGtGZWlzdGVsUm91bmRzID0gMTYgKyAxOyAgLy8gPiA0ICogbG9nMihrRmVpc3RlbEJsb2Nr
cykKK2NvbnN0ZXhwciBzaXplX3Qga0tleXMgPSBrRmVpc3RlbFJvdW5kcyAqIGtGZWlzdGVsRnVu
Y3Rpb25zOworCisvLyBJTkNMVURFIGtleXMuCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJu
YWwvcmFuZGVuLWtleXMuaW5jIgorCitzdGF0aWNfYXNzZXJ0KGtLZXlzID09IGtSb3VuZEtleXMs
ICJrS2V5cyBhbmQga1JvdW5kS2V5cyBtdXN0IGJlIGVxdWFsIik7CisKKy8vIDIgdWludDY0X3Qg
bGFuZXMgcGVyIFZlY3RvcjEyOAorc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga0xhbmVzID0gMjsK
KworLy8gVGhlIGltcHJvdmVkIEZlaXN0ZWwgYmxvY2sgc2h1ZmZsZSBmdW5jdGlvbiBmb3IgMTYg
YmxvY2tzLgoraW5saW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5M
SU5FIHZvaWQgQmxvY2tTaHVmZmxlKAorICAgIHVpbnQ2NF90KiBBQlNMX1JBTkRPTV9JTlRFUk5B
TF9SRVNUUklDVCBzdGF0ZV91NjQpIHsKKyAgc3RhdGljX2Fzc2VydChrRmVpc3RlbEJsb2NrcyA9
PSAxNiwKKyAgICAgICAgICAgICAgICAiRmVpc3RlbCBibG9jayBzaHVmZmxlIG9ubHkgd29ya3Mg
Zm9yIDE2IGJsb2Nrcy4iKTsKKworICBjb25zdGV4cHIgc2l6ZV90IHNodWZmbGVba0ZlaXN0ZWxC
bG9ja3NdID0gezcsICAyLCAxMywgNCwgIDExLCA4LCAgMywgNiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNSwgMCwgOSwgIDEwLCAxLCAgMTQsIDUsIDEy
fTsKKworICB1NjR4MiogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc3RhdGUgPQorICAg
ICAgcmVpbnRlcnByZXRfY2FzdDx1NjR4Mio+KHN0YXRlX3U2NCk7CisKKyAgLy8gVGhlIGZ1bGx5
IHVucm9sbGVkIGxvb3Agd2l0aG91dCB0aGUgbWVtY3B5IGltcHJvdmVzIHRoZSBzcGVlZCBieSBh
Ym91dAorICAvLyAzMCUgb3ZlciB0aGUgZXF1aXZhbGVudCAobGVhdmluZyBjb2RlIGhlcmUgYXMg
YSBjb21tZW50KToKKyAgaWYgKGZhbHNlKSB7CisgICAgdTY0eDIgc291cmNlW2tGZWlzdGVsQmxv
Y2tzXTsKKyAgICBzdGQ6Om1lbWNweShzb3VyY2UsIHN0YXRlLCBzaXplb2Yoc291cmNlKSk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrRmVpc3RlbEJsb2NrczsgaSsrKSB7CisgICAgICBj
b25zdCB1NjR4MiB2MCA9IHNvdXJjZVtzaHVmZmxlW2ldXTsKKyAgICAgIHN0YXRlW2ldID0gdjA7
CisgICAgfQorICB9CisKKyAgY29uc3QgdTY0eDIgdjAgPSBzdGF0ZVtzaHVmZmxlWzBdXTsKKyAg
Y29uc3QgdTY0eDIgdjEgPSBzdGF0ZVtzaHVmZmxlWzFdXTsKKyAgY29uc3QgdTY0eDIgdjIgPSBz
dGF0ZVtzaHVmZmxlWzJdXTsKKyAgY29uc3QgdTY0eDIgdjMgPSBzdGF0ZVtzaHVmZmxlWzNdXTsK
KyAgY29uc3QgdTY0eDIgdjQgPSBzdGF0ZVtzaHVmZmxlWzRdXTsKKyAgY29uc3QgdTY0eDIgdjUg
PSBzdGF0ZVtzaHVmZmxlWzVdXTsKKyAgY29uc3QgdTY0eDIgdjYgPSBzdGF0ZVtzaHVmZmxlWzZd
XTsKKyAgY29uc3QgdTY0eDIgdjcgPSBzdGF0ZVtzaHVmZmxlWzddXTsKKyAgY29uc3QgdTY0eDIg
dzAgPSBzdGF0ZVtzaHVmZmxlWzhdXTsKKyAgY29uc3QgdTY0eDIgdzEgPSBzdGF0ZVtzaHVmZmxl
WzldXTsKKyAgY29uc3QgdTY0eDIgdzIgPSBzdGF0ZVtzaHVmZmxlWzEwXV07CisgIGNvbnN0IHU2
NHgyIHczID0gc3RhdGVbc2h1ZmZsZVsxMV1dOworICBjb25zdCB1NjR4MiB3NCA9IHN0YXRlW3No
dWZmbGVbMTJdXTsKKyAgY29uc3QgdTY0eDIgdzUgPSBzdGF0ZVtzaHVmZmxlWzEzXV07CisgIGNv
bnN0IHU2NHgyIHc2ID0gc3RhdGVbc2h1ZmZsZVsxNF1dOworICBjb25zdCB1NjR4MiB3NyA9IHN0
YXRlW3NodWZmbGVbMTVdXTsKKyAgc3RhdGVbMF0gPSB2MDsKKyAgc3RhdGVbMV0gPSB2MTsKKyAg
c3RhdGVbMl0gPSB2MjsKKyAgc3RhdGVbM10gPSB2MzsKKyAgc3RhdGVbNF0gPSB2NDsKKyAgc3Rh
dGVbNV0gPSB2NTsKKyAgc3RhdGVbNl0gPSB2NjsKKyAgc3RhdGVbN10gPSB2NzsKKyAgc3RhdGVb
OF0gPSB3MDsKKyAgc3RhdGVbOV0gPSB3MTsKKyAgc3RhdGVbMTBdID0gdzI7CisgIHN0YXRlWzEx
XSA9IHczOworICBzdGF0ZVsxMl0gPSB3NDsKKyAgc3RhdGVbMTNdID0gdzU7CisgIHN0YXRlWzE0
XSA9IHc2OworICBzdGF0ZVsxNV0gPSB3NzsKK30KKworLy8gRmVpc3RlbCByb3VuZCBmdW5jdGlv
biB1c2luZyB0d28gQUVTIHN1YnJvdW5kcy4gVmVyeSBzaW1pbGFyIHRvIEYoKQorLy8gZnJvbSBT
aW1waXJhIHYyLCBidXQgd2l0aCBpbmRlcGVuZGVudCBzdWJyb3VuZCBrZXlzLiBVc2VzIDE3IEFF
UyByb3VuZHMKKy8vIHBlciAxNiBieXRlcyAodnMuIDEwIGZvciBBRVMtQ1RSKS4gQ29tcHV0aW5n
IGVpZ2h0IHJvdW5kIGZ1bmN0aW9ucyBpbgorLy8gcGFyYWxsZWwgaGlkZXMgdGhlIDctY3ljbGUg
QUVTTkkgbGF0ZW5jeSBvbiBIU1cuIE5vdGUgdGhhdCB0aGUgRmVpc3RlbAorLy8gWE9ScyBhcmUg
J2ZyZWUnIChpbmNsdWRlZCBpbiB0aGUgc2Vjb25kIEFFUyBpbnN0cnVjdGlvbikuCitpbmxpbmUg
QUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgY29uc3QgdTY0eDIq
IEZlaXN0ZWxSb3VuZCgKKyAgICB1aW50NjRfdCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJ
Q1Qgc3RhdGUsCisgICAgY29uc3QgdTY0eDIqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNU
IGtleXMpIHsKKyAgZm9yIChzaXplX3QgYnJhbmNoID0gMDsgYnJhbmNoIDwga0ZlaXN0ZWxCbG9j
a3M7IGJyYW5jaCArPSA0KSB7CisgICAgY29uc3QgVmVjdG9yMTI4IHMwID0gVmVjdG9yMTI4TG9h
ZChzdGF0ZSArIGtMYW5lcyAqIGJyYW5jaCk7CisgICAgY29uc3QgVmVjdG9yMTI4IHMxID0gVmVj
dG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIChicmFuY2ggKyAxKSk7CisgICAgY29uc3QgVmVj
dG9yMTI4IGYwID0gQWVzUm91bmQoczAsIFZlY3RvcjEyOExvYWQoa2V5cykpOworICAgIGtleXMr
KzsKKyAgICBjb25zdCBWZWN0b3IxMjggbzEgPSBBZXNSb3VuZChmMCwgczEpOworICAgIFZlY3Rv
cjEyOFN0b3JlKG8xLCBzdGF0ZSArIGtMYW5lcyAqIChicmFuY2ggKyAxKSk7CisKKyAgICAvLyBN
YW51YWxseSB1bnJvbGwgdGhpcyBsb29wIG9uY2UuIGFib3V0IDEwJSBiZXR0ZXIgdGhhbiBub3Qg
dW5yb2xsZWQuCisgICAgY29uc3QgVmVjdG9yMTI4IHMyID0gVmVjdG9yMTI4TG9hZChzdGF0ZSAr
IGtMYW5lcyAqIChicmFuY2ggKyAyKSk7CisgICAgY29uc3QgVmVjdG9yMTI4IHMzID0gVmVjdG9y
MTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIChicmFuY2ggKyAzKSk7CisgICAgY29uc3QgVmVjdG9y
MTI4IGYyID0gQWVzUm91bmQoczIsIFZlY3RvcjEyOExvYWQoa2V5cykpOworICAgIGtleXMrKzsK
KyAgICBjb25zdCBWZWN0b3IxMjggbzMgPSBBZXNSb3VuZChmMiwgczMpOworICAgIFZlY3RvcjEy
OFN0b3JlKG8zLCBzdGF0ZSArIGtMYW5lcyAqIChicmFuY2ggKyAzKSk7CisgIH0KKyAgcmV0dXJu
IGtleXM7Cit9CisKKy8vIENyeXB0b2dyYXBoaWMgcGVybXV0YXRpb24gYmFzZWQgdmlhIHR5cGUt
MiBHZW5lcmFsaXplZCBGZWlzdGVsIE5ldHdvcmsuCisvLyBJbmRpc3Rpbmd1aXNoYWJsZSBmcm9t
IGlkZWFsIGJ5IGNob3Nlbi1jaXBoZXJ0ZXh0IGFkdmVyc2FyaWVzIHVzaW5nIGxlc3MgdGhhbgor
Ly8gMl42NCBxdWVyaWVzIGlmIHRoZSByb3VuZCBmdW5jdGlvbiBpcyBhIFBSRi4gVGhpcyBpcyBz
aW1pbGFyIHRvIHRoZSBiPTggY2FzZQorLy8gb2YgU2ltcGlyYSB2MiwgYnV0IG1vcmUgZWZmaWNp
ZW50IHRoYW4gaXRzIGdlbmVyaWMgY29uc3RydWN0aW9uIGZvciBiPTE2LgoraW5saW5lIEFCU0xf
UkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIHZvaWQgUGVybXV0ZSgKKyAg
ICBjb25zdCB2b2lkKiBrZXlzLCB1aW50NjRfdCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJ
Q1Qgc3RhdGUpIHsKKyAgY29uc3QgdTY0eDIqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNU
IGtleXMxMjggPQorICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgdTY0eDIqPihrZXlzKTsKKyAgZm9y
IChzaXplX3Qgcm91bmQgPSAwOyByb3VuZCA8IGtGZWlzdGVsUm91bmRzOyArK3JvdW5kKSB7Cisg
ICAga2V5czEyOCA9IEZlaXN0ZWxSb3VuZChzdGF0ZSwga2V5czEyOCk7CisgICAgQmxvY2tTaHVm
ZmxlKHN0YXRlKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIGFic2wg
eworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKK2NvbnN0IHZvaWQqIFJhbmRlblNsb3c6
OkdldEtleXMoKSB7CisgIC8vIFJvdW5kIGtleXMgZm9yIG9uZSBBRVMgcGVyIEZlaXN0ZWwgcm91
bmQgYW5kIGJyYW5jaC4KKyAgLy8gVGhlIGNhbm9uaWNhbCBpbXBsZW1lbnRhdGlvbiB1c2VzIGZp
cnN0IGRpZ2l0cyBvZiBQaS4KKyAgcmV0dXJuIHJvdW5kX2tleXM7Cit9CisKK3ZvaWQgUmFuZGVu
U2xvdzo6QWJzb3JiKGNvbnN0IHZvaWQqIHNlZWRfdm9pZCwgdm9pZCogc3RhdGVfdm9pZCkgewor
ICB1aW50NjRfdCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc3RhdGUgPQorICAgICAg
cmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KHN0YXRlX3ZvaWQpOworICBjb25zdCB1aW50NjRf
dCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc2VlZCA9CisgICAgICByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ2NF90Kj4oc2VlZF92b2lkKTsKKworICBjb25zdGV4cHIgc2l6ZV90
IGtDYXBhY2l0eUJsb2NrcyA9IGtDYXBhY2l0eUJ5dGVzIC8gc2l6ZW9mKHVpbnQ2NF90KTsKKyAg
c3RhdGljX2Fzc2VydChrQ2FwYWNpdHlCbG9ja3MgKiBzaXplb2YodWludDY0X3QpID09IGtDYXBh
Y2l0eUJ5dGVzLAorICAgICAgICAgICAgICAgICJOb3QgaSpWIik7CisgIGZvciAoc2l6ZV90IGkg
PSBrQ2FwYWNpdHlCbG9ja3M7IGkgPCBrU3RhdGVCeXRlcyAvIHNpemVvZih1aW50NjRfdCk7ICsr
aSkgeworICAgIHN0YXRlW2ldIF49IHNlZWRbaSAtIGtDYXBhY2l0eUJsb2Nrc107CisgIH0KK30K
Kwordm9pZCBSYW5kZW5TbG93OjpHZW5lcmF0ZShjb25zdCB2b2lkKiBrZXlzLCB2b2lkKiBzdGF0
ZV92b2lkKSB7CisgIHN0YXRpY19hc3NlcnQoa0NhcGFjaXR5Qnl0ZXMgPT0gc2l6ZW9mKFZlY3Rv
cjEyOCksICJDYXBhY2l0eSBtaXNtYXRjaCIpOworCisgIHVpbnQ2NF90KiBBQlNMX1JBTkRPTV9J
TlRFUk5BTF9SRVNUUklDVCBzdGF0ZSA9CisgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ2NF90
Kj4oc3RhdGVfdm9pZCk7CisKKyAgY29uc3QgVmVjdG9yMTI4IHByZXZfaW5uZXIgPSBWZWN0b3Ix
MjhMb2FkKHN0YXRlKTsKKworICBQZXJtdXRlKGtleXMsIHN0YXRlKTsKKworICAvLyBFbnN1cmUg
YmFja3RyYWNraW5nIHJlc2lzdGFuY2UuCisgIFZlY3RvcjEyOCBpbm5lciA9IFZlY3RvcjEyOExv
YWQoc3RhdGUpOworICBpbm5lciBePSBwcmV2X2lubmVyOworICBWZWN0b3IxMjhTdG9yZShpbm5l
ciwgc3RhdGUpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9z
bG93LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Nsb3cuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzA1ODYxMzA4MDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Nsb3cuaApAQCAtMCwwICsxLDQzIEBACisv
LyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JB
TkRPTV9JTlRFUk5BTF9SQU5ERU5fU0xPV19IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5B
TF9SQU5ERU5fU0xPV19IXworCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKworbmFtZXNwYWNlIGFic2wg
eworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKKy8vIFJBTkRlbiA9IFJBTkRvbSBnZW5l
cmF0b3Igb3IgYmVldHJvb3RzIGluIFN3aXNzIEdlcm1hbi4KKy8vIFJhbmRlblNsb3cgaW1wbGVt
ZW50cyB0aGUgYmFzaWMgc3RhdGUgbWFuaXB1bGF0aW9uIG1ldGhvZHMgZm9yCisvLyBhcmNoaXRl
Y3R1cmVzIGxhY2tpbmcgQUVTIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpbnRyaW5zaWNzLgorY2xh
c3MgUmFuZGVuU2xvdyB7CisgcHVibGljOgorICAvLyBTaXplIG9mIHRoZSBlbnRpcmUgc3Bvbmdl
IC8gc3RhdGUgZm9yIHRoZSByYW5kZW4gUFJORy4KKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
a1N0YXRlQnl0ZXMgPSAyNTY7ICAvLyAyMDQ4LWJpdAorCisgIC8vIFNpemUgb2YgdGhlICdpbm5l
cicgKGluYWNjZXNzaWJsZSkgcGFydCBvZiB0aGUgc3BvbmdlLiBMYXJnZXIgdmFsdWVzIHdvdWxk
CisgIC8vIHJlcXVpcmUgbW9yZSBmcmVxdWVudCBjYWxscyB0byBSYW5kZW5HZW5lcmF0ZS4KKyAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga0NhcGFjaXR5Qnl0ZXMgPSAxNjsgIC8vIDEyOC1iaXQK
KworICBzdGF0aWMgdm9pZCBHZW5lcmF0ZShjb25zdCB2b2lkKiBrZXlzLCB2b2lkKiBzdGF0ZV92
b2lkKTsKKyAgc3RhdGljIHZvaWQgQWJzb3JiKGNvbnN0IHZvaWQqIHNlZWRfdm9pZCwgdm9pZCog
c3RhdGVfdm9pZCk7CisgIHN0YXRpYyBjb25zdCB2b2lkKiBHZXRLZXlzKCk7Cit9OworCit9ICAv
LyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5k
aWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9TTE9XX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Nsb3dfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9p
bnRlcm5hbC9yYW5kZW5fc2xvd190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5jMDcxNTVkOGRkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9p
bnRlcm5hbC9yYW5kZW5fc2xvd190ZXN0LmNjCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENvcHlyaWdo
dCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50
ZXJuYWwvcmFuZGVuX3Nsb3cuaCIKKworI2luY2x1ZGUgPGNzdHJpbmc+CisKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJu
YWw6OlJhbmRlblNsb3c7CisKKy8vIExvY2FsIHN0YXRlIHBhcmFtZXRlcnMuCitjb25zdGV4cHIg
c2l6ZV90IGtTZWVkQnl0ZXMgPQorICAgIFJhbmRlblNsb3c6OmtTdGF0ZUJ5dGVzIC0gUmFuZGVu
U2xvdzo6a0NhcGFjaXR5Qnl0ZXM7Citjb25zdGV4cHIgc2l6ZV90IGtTdGF0ZVNpemVUID0gUmFu
ZGVuU2xvdzo6a1N0YXRlQnl0ZXMgLyBzaXplb2YodWludDY0X3QpOworY29uc3RleHByIHNpemVf
dCBrU2VlZFNpemVUID0ga1NlZWRCeXRlcyAvIHNpemVvZih1aW50MzJfdCk7CisKK3N0cnVjdCBy
YW5kZW4geworICB1aW50NjRfdCBzdGF0ZVtrU3RhdGVTaXplVF07CisgIHVpbnQzMl90IHNlZWRb
a1NlZWRTaXplVF07Cit9OworCitURVNUKFJhbmRlblNsb3dUZXN0LCBEZWZhdWx0KSB7CisgIGNv
bnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW10gPSB7CisgICAgICAweDZjNjUzNDA5MGVlNmQzZWUs
IDB4MDQ0ZTJiOWI5ZDUzMzNjNiwgMHhjM2MxNGYxMzRlNDMzOTc3LAorICAgICAgMHhkZGE5ZjQ3
Y2Q5MDQxMGVlLCAweDg4N2JmMzA4N2ZkOGNhMTAsIDB4ZjBiNzgwZjU0NWM3MjkxMiwKKyAgICAg
IDB4MTVkYmIxZDM3Njk2NTk5ZiwgMHgzMGVjNjNiYWZmM2M2ZDU5LCAweGIyOWY3MzYwNmY3ZjIw
YTYsCisgICAgICAweDAyODA4YTMxNmY0OWE1NGMsIDB4M2I4ZmVhZjlkNWM4ZTUwZSwgMHg5Y2Jm
NjA1ZTNmZDlkZThhLAorICAgICAgMHhjOTcwYWUxYTc4MTgzYmJiLCAweGQ4YjJmZmQzNTYzMDFl
ZDUsIDB4ZjRiMzI3ZmUwZmM3M2MzNywKKyAgICAgIDB4Y2RmZDhkNzZlYjhmOWExOSwgMHhjM2E1
MDZlYjkxNDIwYzlkLCAweGQ1YWYwNWRkM2VmZjk1NTYsCisgICAgICAweDQ4ZGIxYmI3OGY4M2M0
YTEsIDB4NzAyMzkyMGUwZDZiZmU4YywgMHg1OGQzNTc1ODM0OTU2ZDQyLAorICAgICAgMHhlZDFl
ZjRjMjZiODdiODQwLCAweDhlZWYzMmEyM2UwYjJkZjMsIDB4NDk3Y2FiZjM0MzExNTRmYywKKyAg
ICAgIDB4NGUyNDM3MDU3MDAyOWE4YiwgMHhkODhiNTc0OWYwOTBlNWVhLCAweGM2NTFhNTgyYTk3
MDY5MmYsCisgICAgICAweDc4ZmNlYzJjYmI2MzQyZjUsIDB4NDYzY2I3NDU2MTJmNTVkYiwgMHgz
NTJlZTRhZDE4MTZhZmUzLAorICAgICAgMHgwMjZmZjM3NGMxMDFkYTdlLCAweDgxMWVmMDgyMWMz
ZGU4NTEsCisgIH07CisKKyAgYWxpZ25hcygxNikgcmFuZGVuIGQ7CisgIHN0ZDo6bWVtc2V0KGQu
c3RhdGUsIDAsIHNpemVvZihkLnN0YXRlKSk7CisgIFJhbmRlblNsb3c6OkdlbmVyYXRlKFJhbmRl
blNsb3c6OkdldEtleXMoKSwgZC5zdGF0ZSk7CisKKyAgdWludDY0X3QqIGlkID0gZC5zdGF0ZTsK
KyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVt
LCAqaWQrKyk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvcmFuZGVuX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFu
ZGVuX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMxODZm
ZTBkNjg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl90
ZXN0LmNjCkBAIC0wLDAgKzEsNzAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuLmgiCisKKyNp
bmNsdWRlIDxjc3RyaW5nPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJh
YnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgYWJzbDo6cmFu
ZG9tX2ludGVybmFsOjpSYW5kZW47CisKKy8vIExvY2FsIHN0YXRlIHBhcmFtZXRlcnMuCitjb25z
dGV4cHIgc2l6ZV90IGtTdGF0ZVNpemVUID0gUmFuZGVuOjprU3RhdGVCeXRlcyAvIHNpemVvZih1
aW50NjRfdCk7CisKK1RFU1QoUmFuZGVuVGVzdCwgQ29weUFuZE1vdmUpIHsKKyAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxSYW5kZW4+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAiUmFuZGVuIG11c3QgYmUgY29weSBjb25zdHJ1Y3RpYmxlIik7CisKKyAgc3RhdGlj
X2Fzc2VydChhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8UmFuZGVuPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgIlJhbmRlbiBtdXN0IGJlIGNvcHkgYXNzaWduYWJsZSIpOworCisgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8UmFuZGVuPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgIlJhbmRlbiBtdXN0IGJlIG1vdmUgY29uc3RydWN0aWJsZSIpOworCisgIHN0YXRp
Y19hc3NlcnQoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPFJhbmRlbj46OnZhbHVlLAorICAgICAg
ICAgICAgICAgICJSYW5kZW4gbXVzdCBiZSBtb3ZlIGFzc2lnbmFibGUiKTsKK30KKworVEVTVChS
YW5kZW5UZXN0LCBEZWZhdWx0KSB7CisgIGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW10gPSB7
CisgICAgICAweDZjNjUzNDA5MGVlNmQzZWUsIDB4MDQ0ZTJiOWI5ZDUzMzNjNiwgMHhjM2MxNGYx
MzRlNDMzOTc3LAorICAgICAgMHhkZGE5ZjQ3Y2Q5MDQxMGVlLCAweDg4N2JmMzA4N2ZkOGNhMTAs
IDB4ZjBiNzgwZjU0NWM3MjkxMiwKKyAgICAgIDB4MTVkYmIxZDM3Njk2NTk5ZiwgMHgzMGVjNjNi
YWZmM2M2ZDU5LCAweGIyOWY3MzYwNmY3ZjIwYTYsCisgICAgICAweDAyODA4YTMxNmY0OWE1NGMs
IDB4M2I4ZmVhZjlkNWM4ZTUwZSwgMHg5Y2JmNjA1ZTNmZDlkZThhLAorICAgICAgMHhjOTcwYWUx
YTc4MTgzYmJiLCAweGQ4YjJmZmQzNTYzMDFlZDUsIDB4ZjRiMzI3ZmUwZmM3M2MzNywKKyAgICAg
IDB4Y2RmZDhkNzZlYjhmOWExOSwgMHhjM2E1MDZlYjkxNDIwYzlkLCAweGQ1YWYwNWRkM2VmZjk1
NTYsCisgICAgICAweDQ4ZGIxYmI3OGY4M2M0YTEsIDB4NzAyMzkyMGUwZDZiZmU4YywgMHg1OGQz
NTc1ODM0OTU2ZDQyLAorICAgICAgMHhlZDFlZjRjMjZiODdiODQwLCAweDhlZWYzMmEyM2UwYjJk
ZjMsIDB4NDk3Y2FiZjM0MzExNTRmYywKKyAgICAgIDB4NGUyNDM3MDU3MDAyOWE4YiwgMHhkODhi
NTc0OWYwOTBlNWVhLCAweGM2NTFhNTgyYTk3MDY5MmYsCisgICAgICAweDc4ZmNlYzJjYmI2MzQy
ZjUsIDB4NDYzY2I3NDU2MTJmNTVkYiwgMHgzNTJlZTRhZDE4MTZhZmUzLAorICAgICAgMHgwMjZm
ZjM3NGMxMDFkYTdlLCAweDgxMWVmMDgyMWMzZGU4NTEsCisgIH07CisKKyAgYWxpZ25hcygxNikg
dWludDY0X3Qgc3RhdGVba1N0YXRlU2l6ZVRdOworICBzdGQ6Om1lbXNldChzdGF0ZSwgMCwgc2l6
ZW9mKHN0YXRlKSk7CisKKyAgUmFuZGVuIHI7CisgIHIuR2VuZXJhdGUoc3RhdGUpOworCisgIGF1
dG8gaWQgPSBzdGQ6OmJlZ2luKHN0YXRlKTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dv
bGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCAqaWQrKyk7CisgIH0KK30KKworfSAgLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3RyYWl0cy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl90cmFpdHMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGYxZjQwOGQxOTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3RyYWl0cy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8v
IENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX1JBTkRFTl9UUkFJVFNfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJO
QUxfUkFOREVOX1RSQUlUU19IXworCisvLyBIRVJNRVRJQyBOT1RFOiBUaGUgcmFuZGVuX2h3YWVz
IHRhcmdldCBtdXN0IG5vdCBpbnRyb2R1Y2UgZHVwbGljYXRlCisvLyBzeW1ib2xzIGZyb20gYXJi
aXRyYXJ5IHN5c3RlbSBhbmQgb3RoZXIgaGVhZGVycywgc2luY2UgaXQgbWF5IGJlIGJ1aWx0Cisv
LyB3aXRoIGRpZmZlcmVudCBmbGFncyBmcm9tIG90aGVyIHRhcmdldHMsIHVzaW5nIGRpZmZlcmVu
dCBsZXZlbHMgb2YKKy8vIG9wdGltaXphdGlvbiwgcG90ZW50aWFsbHkgaW50cm9kdWNpbmcgT0RS
IHZpb2xhdGlvbnMuCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gUkFORGVuID0gUkFORG9tIGdlbmVyYXRv
ciBvciBiZWV0cm9vdHMgaW4gU3dpc3MgR2VybWFuLgorLy8gJ1N0cm9uZycgKHdlbGwtZGlzdHJp
YnV0ZWQsIHVucHJlZGljdGFibGUsIGJhY2t0cmFja2luZy1yZXNpc3RhbnQpIHJhbmRvbQorLy8g
Z2VuZXJhdG9yLCBmYXN0ZXIgaW4gc29tZSBiZW5jaG1hcmtzIHRoYW4gc3RkOjptdDE5OTM3XzY0
IGFuZCBwY2c2NF9jMzIuCisvLworLy8gUmFuZGVuVHJhaXRzIGNvbnRhaW5zIHRoZSBiYXNpYyBh
bGdvcml0aG0gdHJhaXRzLCBzdWNoIGFzIHRoZSBzaXplIG9mIHRoZQorLy8gc3RhdGUsIHNlZWQs
IHNwb25nZSwgZXRjLgorc3RydWN0IFJhbmRlblRyYWl0cyB7CisgIC8vIFNpemUgb2YgdGhlIGVu
dGlyZSBzcG9uZ2UgLyBzdGF0ZSBmb3IgdGhlIHJhbmRlbiBQUk5HLgorICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBrU3RhdGVCeXRlcyA9IDI1NjsgIC8vIDIwNDgtYml0CisKKyAgLy8gU2l6ZSBv
ZiB0aGUgJ2lubmVyJyAoaW5hY2Nlc3NpYmxlKSBwYXJ0IG9mIHRoZSBzcG9uZ2UuIExhcmdlciB2
YWx1ZXMgd291bGQKKyAgLy8gcmVxdWlyZSBtb3JlIGZyZXF1ZW50IGNhbGxzIHRvIFJhbmRlbkdl
bmVyYXRlLgorICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrQ2FwYWNpdHlCeXRlcyA9IDE2OyAg
Ly8gMTI4LWJpdAorCisgIC8vIFNpemUgb2YgdGhlIGRlZmF1bHQgc2VlZCBjb25zdW1lZCBieSB0
aGUgc3BvbmdlLgorICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU2VlZEJ5dGVzID0ga1N0YXRl
Qnl0ZXMgLSBrQ2FwYWNpdHlCeXRlczsKKworICAvLyBMYXJnZXN0IHNpemUgZm9yIHdoaWNoIHNl
Y3VyaXR5IHByb29mcyBhcmUga25vd24uCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtGZWlz
dGVsQmxvY2tzID0gMTY7CisKKyAgLy8gVHlwZS0yIGdlbmVyYWxpemVkIEZlaXN0ZWwgPT4gb25l
IHJvdW5kIGZ1bmN0aW9uIGZvciBldmVyeSB0d28gYmxvY2tzLgorICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBrRmVpc3RlbEZ1bmN0aW9ucyA9IGtGZWlzdGVsQmxvY2tzIC8gMjsgIC8vID0gOAor
CisgIC8vIEVuc3VyZXMgU1BSUCBzZWN1cml0eSBhbmQgdHdvIGZ1bGwgc3ViYmxvY2sgZGlmZnVz
aW9ucy4KKyAgLy8gTXVzdCBiZSA+IDQgKiBsb2cyKGtGZWlzdGVsQmxvY2tzKS4KKyAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3Qga0ZlaXN0ZWxSb3VuZHMgPSAxNiArIDE7Cit9OworCit9ICAvLyBu
YW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYg
IC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9UUkFJVFNfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9pbnRlcm5hbC9zYWx0ZWRfc2VlZF9zZXEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRl
cm5hbC9zYWx0ZWRfc2VlZF9zZXEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uODY0ODcwMDY5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJu
YWwvc2FsdGVkX3NlZWRfc2VxLmgKQEAgLTAsMCArMSwxNjUgQEAKKy8vIENvcHlyaWdodCAyMDE3
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX1NB
TFRFRF9TRUVEX1NFUV9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9TQUxURURfU0VF
RF9TRVFfSF8KKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNs
dWRlIDxpbml0aWFsaXplcl9saXN0PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPG1l
bW9yeT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaCIKKyNpbmNsdWRlICJhYnNsL21l
dGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX21h
dGVyaWFsLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFi
c2wvdHlwZXMvc3Bhbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2lu
dGVybmFsIHsKKworLy8gVGhpcyBjbGFzcyBjb25mb3JtcyB0byB0aGUgQysrIFN0YW5kYXJkICJT
ZWVkIFNlcXVlbmNlIiBjb25jZXB0CisvLyBbcmFuZC5yZXEuc2VlZHNlcV0uCisvLworLy8gQSBg
U2FsdGVkU2VlZFNlcWAgaXMgbWVhbnQgdG8gd3JhcCBhbiBleGlzdGluZyBzZWVkIHNlcXVlbmNl
IGFuZCBtb2RpZnkKKy8vIGdlbmVyYXRlZCBzZXF1ZW5jZSBieSBtaXhpbmcgd2l0aCBleHRyYSBl
bnRyb3B5LiBUaGlzIGVudHJvcHkgbWF5IGJlCisvLyBidWlsZC1kZXBlbmRlbnQgb3IgcHJvY2Vz
cy1kZXBlbmRlbnQuIFRoZSBpbXBsZW1lbnRhdGlvbiBtYXkgY2hhbmdlIHRvIGJlCisvLyBoYXZl
IGVpdGhlciBvciBib3RoIGtpbmRzIG9mIGVudHJvcHkuIElmIHNhbHQgaXMgbm90IGF2YWlsYWJs
ZSBzZXF1ZW5jZSBpcworLy8gbm90IG1vZGlmaWVkLgordGVtcGxhdGUgPHR5cGVuYW1lIFNTZXE+
CitjbGFzcyBTYWx0ZWRTZWVkU2VxIHsKKyBwdWJsaWM6CisgIHVzaW5nIGlubmVyX3NlcXVlbmNl
X3R5cGUgPSBTU2VxOworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIFNTZXE6OnJlc3Vs
dF90eXBlOworCisgIFNhbHRlZFNlZWRTZXEoKSA6IHNlcV8oYWJzbDo6bWFrZV91bmlxdWU8U1Nl
cT4oKSkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+CisgIFNhbHRlZFNlZWRT
ZXEoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKKyAgICAgIDogc2VxXyhhYnNsOjptYWtl
X3VuaXF1ZTxTU2VxPihiZWdpbiwgZW5kKSkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgU2FsdGVkU2VlZFNlcShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaWwpCisgICAgICA6IFNh
bHRlZFNlZWRTZXEoaWwuYmVnaW4oKSwgaWwuZW5kKCkpIHt9CisKKyAgU2FsdGVkU2VlZFNlcShj
b25zdCBTYWx0ZWRTZWVkU2VxJikgPSBkZWxldGU7CisgIFNhbHRlZFNlZWRTZXEmIG9wZXJhdG9y
PShjb25zdCBTYWx0ZWRTZWVkU2VxJikgPSBkZWxldGU7CisKKyAgU2FsdGVkU2VlZFNlcShTYWx0
ZWRTZWVkU2VxJiYpID0gZGVmYXVsdDsKKyAgU2FsdGVkU2VlZFNlcSYgb3BlcmF0b3I9KFNhbHRl
ZFNlZWRTZXEmJikgPSBkZWZhdWx0OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nl
c3NJdGVyYXRvcj4KKyAgdm9pZCBnZW5lcmF0ZShSYW5kb21BY2Nlc3NJdGVyYXRvciBiZWdpbiwg
UmFuZG9tQWNjZXNzSXRlcmF0b3IgZW5kKSB7CisgICAgLy8gVGhlIGNvbW1vbiBjYXNlIGlzIHRo
YXQgZ2VuZXJhdGUgaXMgY2FsbGVkIHdpdGggQ29udGlndW91c0l0ZXJhdG9ycworICAgIC8vIHRv
IHVpbnQgYXJyYXlzLiBTdWNoIGNvbnRpZ3VvdXMgbWVtb3J5IHJlZ2lvbnMgbWF5IGJlIG9wdGlt
aXplZCwKKyAgICAvLyB3aGljaCB3ZSBkZXRlY3QgaGVyZS4KKyAgICB1c2luZyB0YWcgPSBhYnNs
Ojpjb25kaXRpb25hbF90PAorICAgICAgICAoc3RkOjppc19wb2ludGVyPFJhbmRvbUFjY2Vzc0l0
ZXJhdG9yPjo6dmFsdWUgJiYKKyAgICAgICAgIHN0ZDo6aXNfc2FtZTxhYnNsOjpkZWNheV90PGRl
Y2x0eXBlKCpiZWdpbik+LCB1aW50MzJfdD46OnZhbHVlKSwKKyAgICAgICAgQ29udGlndW91c0Fu
ZFVpbnQzMlRhZywgRGVmYXVsdFRhZz47CisgICAgaWYgKGJlZ2luICE9IGVuZCkgeworICAgICAg
Z2VuZXJhdGVfaW1wbChiZWdpbiwgZW5kLCB0YWd7fSk7CisgICAgfQorICB9CisKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIE91dEl0ZXJhdG9yPgorICB2b2lkIHBhcmFtKE91dEl0ZXJhdG9yIG91dCkg
Y29uc3QgeworICAgIHNlcV8tPnBhcmFtKG91dCk7CisgIH0KKworICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHNlcV8tPnNpemUoKTsgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0IENvbnRp
Z3VvdXNBbmRVaW50MzJUYWcge307CisgIHN0cnVjdCBEZWZhdWx0VGFnIHt9OworCisgIC8vIEdl
bmVyYXRlIHdoaWNoIHJlcXVpcmVzIHRoZSBpdGVyYXRvcnMgYXJlIGNvbnRpZ3VvdXMgcG9pbnRl
cnMgdG8gdWludDMyX3QuCisgIHZvaWQgZ2VuZXJhdGVfaW1wbCh1aW50MzJfdCogYmVnaW4sIHVp
bnQzMl90KiBlbmQsIENvbnRpZ3VvdXNBbmRVaW50MzJUYWcpIHsKKyAgICBnZW5lcmF0ZV9jb250
aWd1b3VzKGFic2w6Ok1ha2VTcGFuKGJlZ2luLCBlbmQpKTsKKyAgfQorCisgIC8vIFRoZSB1bmNv
bW1vbiBjYXNlIGZvciBnZW5lcmF0ZSBpcyB0aGF0IGl0IGlzIGNhbGxlZCB3aXRoIGl0ZXJhdG9y
cyBvdmVyCisgIC8vIHNvbWUgb3RoZXIgYnVmZmVyIHR5cGUgd2hpY2ggaXMgYXNzaWduYWJsZSBm
cm9tIGEgMzItYml0IHZhbHVlLiBJbiB0aGlzCisgIC8vIGNhc2Ugd2UgYWxsb2NhdGUgYSB0ZW1w
b3JhcnkgMzItYml0IGJ1ZmZlciBhbmQgdGhlbiBjb3B5LWFzc2lnbiBiYWNrCisgIC8vIHRvIHRo
ZSBpbml0aWFsIGlucHV0cy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJh
dG9yPgorICB2b2lkIGdlbmVyYXRlX2ltcGwoUmFuZG9tQWNjZXNzSXRlcmF0b3IgYmVnaW4sIFJh
bmRvbUFjY2Vzc0l0ZXJhdG9yIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRUYWcp
IHsKKyAgICByZXR1cm4gZ2VuZXJhdGVfYW5kX2NvcHkoc3RkOjpkaXN0YW5jZShiZWdpbiwgZW5k
KSwgYmVnaW4pOworICB9CisKKyAgLy8gRmlsbHMgdGhlIGluaXRpYWwgc2VlZCBidWZmZXIgdGhl
IHVuZGVybHlpbmcgU1NlcTo6Z2VuZXJhdGUoKSBjYWxsLAorICAvLyBtaXhpbmcgaW4gdGhlIHNh
bHQgbWF0ZXJpYWwuCisgIHZvaWQgZ2VuZXJhdGVfY29udGlndW91cyhhYnNsOjpTcGFuPHVpbnQz
Ml90PiBidWZmZXIpIHsKKyAgICBzZXFfLT5nZW5lcmF0ZShidWZmZXIuYmVnaW4oKSwgYnVmZmVy
LmVuZCgpKTsKKyAgICBjb25zdCB1aW50MzJfdCBzYWx0ID0gYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpHZXRTYWx0TWF0ZXJpYWwoKS52YWx1ZV9vcigwKTsKKyAgICBNaXhJbnRvU2VlZE1hdGVyaWFs
KGFic2w6Ok1ha2VDb25zdFNwYW4oJnNhbHQsIDEpLCBidWZmZXIpOworICB9CisKKyAgLy8gQWxs
b2NhdGVzIGEgc2VlZCBidWZmZXIgb2YgYG5gIGVsZW1lbnRzLCBnZW5lcmF0ZXMgdGhlIHNlZWQs
IHRoZW4KKyAgLy8gY29waWVzIHRoZSByZXN1bHQgaW50byB0aGUgYG91dGAgaXRlcmF0b3IuCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KKyAgdm9pZCBnZW5lcmF0ZV9hbmRfY29weShz
aXplX3QgbiwgSXRlcmF0b3Igb3V0KSB7CisgICAgLy8gQWxsb2NhdGUgYSB0ZW1wb3JhcnkgYnVm
ZmVyLCBnZW5lcmF0ZSwgYW5kIHRoZW4gY29weS4KKyAgICBhYnNsOjpJbmxpbmVkVmVjdG9yPHVp
bnQzMl90LCA4PiBkYXRhKG4sIDApOworICAgIGdlbmVyYXRlX2NvbnRpZ3VvdXMoYWJzbDo6TWFr
ZVNwYW4oZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CisgICAgc3RkOjpjb3B5KGRhdGEuYmVn
aW4oKSwgZGF0YS5lbmQoKSwgb3V0KTsKKyAgfQorCisgIC8vIEJlY2F1c2UgW3JhbmQucmVxLnNl
ZWRzZXFdIGlzIG5vdCByZXF1aXJlZCB0byBiZSBjb3B5LWNvbnN0cnVjdGlibGUsCisgIC8vIGNv
cHktYXNzaWduYWJsZSBub3IgbW92YWJsZSwgd2Ugd3JhcCBpdCB3aXRoIHVuaXF1ZSBwb2ludGVy
IHRvIGJlIGFibGUKKyAgLy8gdG8gbW92ZSBTYWx0ZWRTZWVkU2VxLgorICBzdGQ6OnVuaXF1ZV9w
dHI8U1NlcT4gc2VxXzsKK307CisKKy8vIGlzX3NhbHRlZF9zZWVkX3NlcSBpbmRpY2F0ZXMgd2hl
dGhlciB0aGUgdHlwZSBpcyBhIFNhbHRlZFNlZWRTZXEuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgPSB2b2lkPgorc3RydWN0IGlzX3NhbHRlZF9zZWVkX3NlcSA6IHB1YmxpYyBzdGQ6
OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX3NhbHRl
ZF9zZWVkX3NlcTwKKyAgICBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8
CisgICAgICAgICAgIFQsIFNhbHRlZFNlZWRTZXE8dHlwZW5hbWUgVDo6aW5uZXJfc2VxdWVuY2Vf
dHlwZT4+Ojp2YWx1ZT46OnR5cGU+CisgICAgOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUge307CisK
Ky8vIE1ha2VTYWx0ZWRTZWVkU2VxIHJldHVybnMgYSBzYWx0ZWQgdmFyaWFudCBvZiB0aGUgc2Vl
ZCBzZXF1ZW5jZS4KKy8vIFdoZW4gcHJvdmlkZWQgd2l0aCBhbiBleGlzdGluZyBTYWx0ZWRTZWVk
U2VxLCByZXR1cm5zIHRoZSBpbnB1dCBwYXJhbWV0ZXIsCisvLyBvdGhlcndpc2UgY29uc3RydWN0
cyBhIG5ldyBTYWx0ZWRTZWVkU2VxIHdoaWNoIGVtYm9kaWVzIHRoZSBvcmlnaW5hbAorLy8gbm9u
LXNhbHRlZCBzZWVkIHBhcmFtZXRlcnMuCit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgU1NlcSwg
IC8vCisgICAgdHlwZW5hbWUgRW5hYmxlSWYgPSBhYnNsOjplbmFibGVfaWZfdDxpc19zYWx0ZWRf
c2VlZF9zZXE8U1NlcT46OnZhbHVlPj4KK1NTZXEgTWFrZVNhbHRlZFNlZWRTZXEoU1NlcSYmIHNl
cSkgeworICByZXR1cm4gU1NlcShzdGQ6OmZvcndhcmQ8U1NlcT4oc2VxKSk7Cit9CisKK3RlbXBs
YXRlIDwKKyAgICB0eXBlbmFtZSBTU2VxLCAgLy8KKyAgICB0eXBlbmFtZSBFbmFibGVJZiA9IGFi
c2w6OmVuYWJsZV9pZl90PCFpc19zYWx0ZWRfc2VlZF9zZXE8U1NlcT46OnZhbHVlPj4KK1NhbHRl
ZFNlZWRTZXE8dHlwZW5hbWUgc3RkOjpkZWNheTxTU2VxPjo6dHlwZT4gTWFrZVNhbHRlZFNlZWRT
ZXEoU1NlcSYmIHNlcSkgeworICB1c2luZyBzc2VxX3R5cGUgPSB0eXBlbmFtZSBzdGQ6OmRlY2F5
PFNTZXE+Ojp0eXBlOworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIHNzZXFfdHlwZTo6
cmVzdWx0X3R5cGU7CisKKyAgYWJzbDo6SW5saW5lZFZlY3RvcjxyZXN1bHRfdHlwZSwgOD4gZGF0
YTsKKyAgc2VxLnBhcmFtKHN0ZDo6YmFja19pbnNlcnRlcihkYXRhKSk7CisgIHJldHVybiBTYWx0
ZWRTZWVkU2VxPHNzZXFfdHlwZT4oZGF0YS5iZWdpbigpLCBkYXRhLmVuZCgpKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2Vu
ZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9TQUxURURfU0VFRF9TRVFfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zYWx0ZWRfc2VlZF9zZXFfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC9zYWx0ZWRfc2VlZF9zZXFfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGJmMTlhNjNlZjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vaW50ZXJuYWwvc2FsdGVkX3NlZWRfc2VxX3Rlc3QuY2MKQEAgLTAsMCArMSwx
NjggQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2FsdGVkX3NlZWRfc2VxLmgiCisKKyNpbmNsdWRlIDxp
dGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx2ZWN0b3I+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6R2V0U2FsdE1hdGVyaWFsOwor
dXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpNYWtlU2FsdGVkU2VlZFNlcTsKK3VzaW5nIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbDo6U2FsdGVkU2VlZFNlcTsKK3VzaW5nIHRlc3Rpbmc6OkVxOwor
dXNpbmcgdGVzdGluZzo6UG9pbnR3aXNlOworCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU3NlcT4KK3ZvaWQgQ29uZm9ybXNUb0ludGVyZmFjZSgpIHsKKyAgLy8gQ2hlY2sgdGhh
dCB0aGUgU2VlZFNlcXVlbmNlIGNhbiBiZSBkZWZhdWx0LWNvbnN0cnVjdGVkLgorICB7IFNzZXEg
ZGVmYXVsdF9jb25zdHJ1Y3RlZF9zZXE7IH0KKyAgLy8gQ2hlY2sgdGhhdCB0aGUgU2VlZFNlcXVl
bmNlIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIHR3byBpdGVyYXRvcnMuCisgIHsKKyAgICB1aW50
MzJfdCBpbml0X2FycmF5W10gPSB7MSwgMywgNSwgNywgOX07CisgICAgU3NlcSBpdGVyYXRvcl9j
b25zdHJ1Y3RlZF9zZXEoc3RkOjpiZWdpbihpbml0X2FycmF5KSwgc3RkOjplbmQoaW5pdF9hcnJh
eSkpOworICB9CisgIC8vIENoZWNrIHRoYXQgdGhlIFNlZWRTZXF1ZW5jZSBjYW4gYmUgc3RkOjpp
bml0aWFsaXplcl9saXN0LWNvbnN0cnVjdGVkLgorICB7IFNzZXEgbGlzdF9jb25zdHJ1Y3RlZF9z
ZXEgPSB7MSwgMywgNSwgNywgOSwgMTEsIDEzfTsgfQorICAvLyBDaGVjayB0aGF0IHBhcmFtKCkg
YW5kIHNpemUoKSByZXR1cm4gc3RhdGUgcHJvdmlkZWQgdG8gY29uc3RydWN0b3IuCisgIHsKKyAg
ICB1aW50MzJfdCBpbml0X2FycmF5W10gPSB7MSwgMiwgMywgNCwgNX07CisgICAgU3NlcSBzZXEo
c3RkOjpiZWdpbihpbml0X2FycmF5KSwgc3RkOjplbmQoaW5pdF9hcnJheSkpOworICAgIEVYUEVD
VF9FUShzZXEuc2l6ZSgpLCBBQlNMX0FSUkFZU0laRShpbml0X2FycmF5KSk7CisKKyAgICBzdGQ6
OnZlY3Rvcjx1aW50MzJfdD4gc3RhdGVfdmVjdG9yOworICAgIHNlcS5wYXJhbShzdGQ6OmJhY2tf
aW5zZXJ0ZXIoc3RhdGVfdmVjdG9yKSk7CisKKyAgICBFWFBFQ1RfRVEoc3RhdGVfdmVjdG9yLnNp
emUoKSwgQUJTTF9BUlJBWVNJWkUoaW5pdF9hcnJheSkpOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc3RhdGVfdmVjdG9yLnNpemUoKTsgaSsrKSB7CisgICAgICBFWFBFQ1RfRVEoc3RhdGVfdmVj
dG9yW2ldLCBpICsgMSk7CisgICAgfQorICB9CisgIC8vIENoZWNrIGZvciBwcmVzZW5jZSBvZiBn
ZW5lcmF0ZSgpIG1ldGhvZC4KKyAgeworICAgIFNzZXEgc2VxOworICAgIHVpbnQzMl90IHNlZWRz
WzVdOworCisgICAgc2VxLmdlbmVyYXRlKHN0ZDo6YmVnaW4oc2VlZHMpLCBzdGQ6OmVuZChzZWVk
cykpOworICB9Cit9CisKK1RFU1QoU2FsdGVkU2VlZFNlcSwgQ2hlY2tJbnRlcmZhY2VzKSB7Cisg
IC8vIENvbnRyb2wgY2FzZQorICBDb25mb3Jtc1RvSW50ZXJmYWNlPHN0ZDo6c2VlZF9zZXE+KCk7
CisKKyAgLy8gQWJzZWlsIGNsYXNzZXMKKyAgQ29uZm9ybXNUb0ludGVyZmFjZTxTYWx0ZWRTZWVk
U2VxPHN0ZDo6c2VlZF9zZXE+PigpOworfQorCitURVNUKFNhbHRlZFNlZWRTZXEsIENoZWNrQ29u
c3RydWN0aW5nRnJvbU90aGVyU2VxdWVuY2UpIHsKKyAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHNl
ZWRfdmFsdWVzKDEwLCAxKTsKKyAgc3RkOjpzZWVkX3NlcSBzZXEoc2VlZF92YWx1ZXMuYmVnaW4o
KSwgc2VlZF92YWx1ZXMuZW5kKCkpOworICBhdXRvIHNhbHRlZF9zZXEgPSBNYWtlU2FsdGVkU2Vl
ZFNlcShzdGQ6Om1vdmUoc2VxKSk7CisKKyAgRVhQRUNUX0VRKHNlcS5zaXplKCksIHNhbHRlZF9z
ZXEuc2l6ZSgpKTsKKworICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gcGFyYW1fcmVzdWx0OworICBz
ZXEucGFyYW0oc3RkOjpiYWNrX2luc2VydGVyKHBhcmFtX3Jlc3VsdCkpOworCisgIEVYUEVDVF9F
UShzZWVkX3ZhbHVlcywgcGFyYW1fcmVzdWx0KTsKK30KKworVEVTVChTYWx0ZWRTZWVkU2VxLCBT
YWx0ZWRTYWx0ZWRTZWVkU2VxSXNOb3REb3VibGVTYWx0ZWQpIHsKKyAgdWludDMyX3QgaW5pdFtd
ID0gezEsIDMsIDUsIDcsIDl9OworCisgIHN0ZDo6c2VlZF9zZXEgc2VxKHN0ZDo6YmVnaW4oaW5p
dCksIHN0ZDo6ZW5kKGluaXQpKTsKKworICAvLyBUaGUgZmlyc3Qgc2FsdGluZy4KKyAgU2FsdGVk
U2VlZFNlcTxzdGQ6OnNlZWRfc2VxPiBzYWx0ZWRfc2VxID0gTWFrZVNhbHRlZFNlZWRTZXEoc3Rk
Ojptb3ZlKHNlcSkpOworICB1aW50MzJfdCBhWzE2XTsKKyAgc2FsdGVkX3NlcS5nZW5lcmF0ZShz
dGQ6OmJlZ2luKGEpLCBzdGQ6OmVuZChhKSk7CisKKyAgLy8gVGhlIHNlY29uZCBzYWx0aW5nLgor
ICBTYWx0ZWRTZWVkU2VxPHN0ZDo6c2VlZF9zZXE+IHNhbHRlZF9zYWx0ZWRfc2VxID0KKyAgICAg
IE1ha2VTYWx0ZWRTZWVkU2VxKHN0ZDo6bW92ZShzYWx0ZWRfc2VxKSk7CisgIHVpbnQzMl90IGJb
MTZdOworICBzYWx0ZWRfc2FsdGVkX3NlcS5nZW5lcmF0ZShzdGQ6OmJlZ2luKGIpLCBzdGQ6OmVu
ZChiKSk7CisKKyAgLy8gLi4uIGJvdGggc2hvdWxkIGJlIGVxdWFsLgorICBFWFBFQ1RfVEhBVChi
LCBQb2ludHdpc2UoRXEoKSwgYSkpIDw8ICJhWzBdICIgPDwgYVswXTsKK30KKworVEVTVChTYWx0
ZWRTZWVkU2VxLCBTZWVkTWF0ZXJpYWxJc1NhbHRlZCkgeworICBjb25zdCBzaXplX3Qga051bUJs
b2NrcyA9IDE2OworCisgIHVpbnQzMl90IHNlZWRfbWF0ZXJpYWxba051bUJsb2Nrc107CisgIHN0
ZDo6cmFuZG9tX2RldmljZSB1cmFuZG9teyIvZGV2L3VyYW5kb20ifTsKKyAgZm9yICh1aW50MzJf
dCYgc2VlZCA6IHNlZWRfbWF0ZXJpYWwpIHsKKyAgICBzZWVkID0gdXJhbmRvbSgpOworICB9CisK
KyAgc3RkOjpzZWVkX3NlcSBzZXEoc3RkOjpiZWdpbihzZWVkX21hdGVyaWFsKSwgc3RkOjplbmQo
c2VlZF9tYXRlcmlhbCkpOworICBTYWx0ZWRTZWVkU2VxPHN0ZDo6c2VlZF9zZXE+IHNhbHRlZF9z
ZXEoc3RkOjpiZWdpbihzZWVkX21hdGVyaWFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6ZW5kKHNlZWRfbWF0ZXJpYWwpKTsKKworICBib29sIHNhbHRf
aXNfYXZhaWxhYmxlID0gR2V0U2FsdE1hdGVyaWFsKCkuaGFzX3ZhbHVlKCk7CisKKyAgLy8gSWYg
c2FsdCBpcyBhdmFpbGFibGUgZ2VuZXJhdGVkIHNlcXVlbmNlIHNob3VsZCBiZSBkaWZmZXJlbnQu
CisgIGlmIChzYWx0X2lzX2F2YWlsYWJsZSkgeworICAgIHVpbnQzMl90IG91dHB1dHNba051bUJs
b2Nrc107CisgICAgdWludDMyX3Qgc2FsdGVkX291dHB1dHNba051bUJsb2Nrc107CisKKyAgICBz
ZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihvdXRwdXRzKSwgc3RkOjplbmQob3V0cHV0cykpOworICAg
IHNhbHRlZF9zZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihzYWx0ZWRfb3V0cHV0cyksIHN0ZDo6ZW5k
KHNhbHRlZF9vdXRwdXRzKSk7CisKKyAgICBFWFBFQ1RfVEhBVChvdXRwdXRzLCBQb2ludHdpc2Uo
dGVzdGluZzo6TmUoKSwgc2FsdGVkX291dHB1dHMpKTsKKyAgfQorfQorCitURVNUKFNhbHRlZFNl
ZWRTZXEsIEdlbmVyYXRlQWNjZXB0c0RpZmZlcmVudFR5cGVzKSB7CisgIGNvbnN0IHNpemVfdCBr
TnVtQmxvY2tzID0gNDsKKworICBTYWx0ZWRTZWVkU2VxPHN0ZDo6c2VlZF9zZXE+IHNlcSh7MSwg
MiwgM30pOworCisgIHVpbnQzMl90IGV4cGVjdGVkW2tOdW1CbG9ja3NdOworICBzZXEuZ2VuZXJh
dGUoc3RkOjpiZWdpbihleHBlY3RlZCksIHN0ZDo6ZW5kKGV4cGVjdGVkKSk7CisKKyAgLy8gMzIt
Yml0IG91dHB1dHMKKyAgeworICAgIHVuc2lnbmVkIGxvbmcgc2VlZF9tYXRlcmlhbFtrTnVtQmxv
Y2tzXTsgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgICBzZXEuZ2VuZXJhdGUoc3RkOjpiZWdp
bihzZWVkX21hdGVyaWFsKSwgc3RkOjplbmQoc2VlZF9tYXRlcmlhbCkpOworICAgIEVYUEVDVF9U
SEFUKHNlZWRfbWF0ZXJpYWwsIFBvaW50d2lzZShFcSgpLCBleHBlY3RlZCkpOworICB9CisgIHsK
KyAgICB1bnNpZ25lZCBpbnQgc2VlZF9tYXRlcmlhbFtrTnVtQmxvY2tzXTsgIC8vIE5PTElOVChy
dW50aW1lL2ludCkKKyAgICBzZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihzZWVkX21hdGVyaWFsKSwg
c3RkOjplbmQoc2VlZF9tYXRlcmlhbCkpOworICAgIEVYUEVDVF9USEFUKHNlZWRfbWF0ZXJpYWws
IFBvaW50d2lzZShFcSgpLCBleHBlY3RlZCkpOworICB9CisKKyAgLy8gNjQtYml0IG91dHB1dHMu
CisgIHsKKyAgICB1aW50NjRfdCBzZWVkX21hdGVyaWFsW2tOdW1CbG9ja3NdOworICAgIHNlcS5n
ZW5lcmF0ZShzdGQ6OmJlZ2luKHNlZWRfbWF0ZXJpYWwpLCBzdGQ6OmVuZChzZWVkX21hdGVyaWFs
KSk7CisgICAgRVhQRUNUX1RIQVQoc2VlZF9tYXRlcmlhbCwgUG9pbnR3aXNlKEVxKCksIGV4cGVj
dGVkKSk7CisgIH0KKyAgeworICAgIGludDY0X3Qgc2VlZF9tYXRlcmlhbFtrTnVtQmxvY2tzXTsK
KyAgICBzZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihzZWVkX21hdGVyaWFsKSwgc3RkOjplbmQoc2Vl
ZF9tYXRlcmlhbCkpOworICAgIEVYUEVDVF9USEFUKHNlZWRfbWF0ZXJpYWwsIFBvaW50d2lzZShF
cSgpLCBleHBlY3RlZCkpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50
ZXJuYWwvc2VlZF9tYXRlcmlhbC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uODVkZDUzNWY5YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJu
YWwvc2VlZF9tYXRlcmlhbC5jYwpAQCAtMCwwICsxLDIwNSBAQAorLy8gQ29weXJpZ2h0IDIwMTcg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9z
ZWVkX21hdGVyaWFsLmgiCisKKyNpbmNsdWRlIDxmY250bC5oPgorCisjaWZuZGVmIF9XSU4zMgor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2Vsc2UKKyNpbmNsdWRlIDxpby5oPgorI2VuZGlmCisKKyNp
bmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y2Vycm5vPgorI2luY2x1ZGUgPGNzdGRpbnQ+
CisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxjc3RyaW5nPgorCisjaW5jbHVkZSAiYWJz
bC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2Fz
Y2lpLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmgiCisjaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmlwLmgi
CisKKyNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQorCisjaW5jbHVkZSA8bmFjbC9uYWNs
X3JhbmRvbS5oPgorI2RlZmluZSBBQlNMX1JBTkRPTV9VU0VfTkFDTF9TRUNVUkVfUkFORE9NIDEK
KworI2VsaWYgZGVmaW5lZChfV0lOMzIpCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZGVmaW5l
IEFCU0xfUkFORE9NX1VTRV9CQ1JZUFQgMQorI3ByYWdtYSBjb21tZW50KGxpYiwgImJjcnlwdC5s
aWIiKQorCisjZW5kaWYKKworI2lmIGRlZmluZWQoQUJTTF9SQU5ET01fVVNFX0JDUllQVCkKKyNp
bmNsdWRlIDxiY3J5cHQuaD4KKworI2lmbmRlZiBCQ1JZUFRfU1VDQ0VTUworI2RlZmluZSBCQ1JZ
UFRfU1VDQ0VTUyhTdGF0dXMpICgoKE5UU1RBVFVTKShTdGF0dXMpKSA+PSAwKQorI2VuZGlmCisv
LyBBbHNvIGxpbmsgYmNyeXB0OyB0aGlzIGNhbiBiZSBkb25lIHZpYSBsaW5rZXIgb3B0aW9ucyBv
cjoKKy8vICNwcmFnbWEgY29tbWVudChsaWIsICJiY3J5cHQubGliIikKKyNlbmRpZgorCituYW1l
c3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisK
Ky8vIFJlYWQgT1MgRW50cm9weSBmb3IgcmFuZG9tIG51bWJlciBzZWVkcy4KKy8vIFRPRE8oYWJz
bC10ZWFtKTogUG9zc2libHkgcGxhY2UgYSBjYXAgb24gaG93IG11Y2ggZW50cm9weSBtYXkgYmUg
cmVhZCBhdCBhCisvLyB0aW1lLgorCisjaWYgZGVmaW5lZChBQlNMX1JBTkRPTV9VU0VfQkNSWVBU
KQorCisvLyBPbiBXaW5kb3dzIHBvdGVudGlhbGx5IHVzZSB0aGUgQkNSWVBUIENORyBBUEkgdG8g
cmVhZCBhdmFpbGFibGUgZW50cm9weS4KK2Jvb2wgUmVhZFNlZWRNYXRlcmlhbEZyb21PU0VudHJv
cHlJbXBsKGFic2w6OlNwYW48dWludDMyX3Q+IHZhbHVlcykgeworICBCQ1JZUFRfQUxHX0hBTkRM
RSBoUHJvdmlkZXI7CisgIE5UU1RBVFVTIHJldDsKKyAgcmV0ID0gQkNyeXB0T3BlbkFsZ29yaXRo
bVByb3ZpZGVyKCZoUHJvdmlkZXIsIEJDUllQVF9STkdfQUxHT1JJVEhNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTVNfUFJJTUlUSVZFX1BST1ZJREVSLCAwKTsKKyAgaWYg
KCEoQkNSWVBUX1NVQ0NFU1MocmV0KSkpIHsKKyAgICBBQlNMX1JBV19MT0coRVJST1IsICJGYWls
ZWQgdG8gb3BlbiBjcnlwdG8gcHJvdmlkZXIuIik7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cisg
IHJldCA9IEJDcnlwdEdlblJhbmRvbSgKKyAgICAgIGhQcm92aWRlciwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm92aWRlcgorICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxVQ0hBUio+KHZhbHVlcy5kYXRhKCkpLCAgICAgICAgICAgICAgIC8vIGJ1ZmZlcgor
ICAgICAgc3RhdGljX2Nhc3Q8VUxPTkc+KHNpemVvZih1aW50MzJfdCkgKiB2YWx1ZXMuc2l6ZSgp
KSwgIC8vIGJ5dGVzCisgICAgICAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZmxhZ3MKKyAgQkNyeXB0Q2xvc2VBbGdvcml0aG1Qcm92aWRl
cihoUHJvdmlkZXIsIDApOworICByZXR1cm4gQkNSWVBUX1NVQ0NFU1MocmV0KTsKK30KKworI2Vs
aWYgZGVmaW5lZChBQlNMX1JBTkRPTV9VU0VfTkFDTF9TRUNVUkVfUkFORE9NKQorCisvLyBPbiBO
YUNMIHVzZSBuYWNsX3NlY3VyZV9yYW5kb20gdG8gYWNxdWlyZSBieXRlcy4KK2Jvb2wgUmVhZFNl
ZWRNYXRlcmlhbEZyb21PU0VudHJvcHlJbXBsKGFic2w6OlNwYW48dWludDMyX3Q+IHZhbHVlcykg
eworICBhdXRvIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZhbHVlcy5kYXRh
KCkpOworICBzaXplX3QgYnVmZmVyX3NpemUgPSBzaXplb2YodWludDMyX3QpICogdmFsdWVzLnNp
emUoKTsKKworICB1aW50OF90KiBvdXRwdXRfcHRyID0gYnVmZmVyOworICB3aGlsZSAoYnVmZmVy
X3NpemUgPiAwKSB7CisgICAgc2l6ZV90IG5yZWFkID0gMDsKKyAgICBjb25zdCBpbnQgZXJyb3Ig
PSBuYWNsX3NlY3VyZV9yYW5kb20ob3V0cHV0X3B0ciwgYnVmZmVyX3NpemUsICZucmVhZCk7Cisg
ICAgaWYgKGVycm9yICE9IDAgfHwgbnJlYWQgPiBidWZmZXJfc2l6ZSkgeworICAgICAgQUJTTF9S
QVdfTE9HKEVSUk9SLCAiRmFpbGVkIHRvIHJlYWQgc2VjdXJlX3JhbmRvbSBzZWVkIGRhdGE6ICVk
IiwgZXJyb3IpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBvdXRwdXRfcHRyICs9
IG5yZWFkOworICAgIGJ1ZmZlcl9zaXplIC09IG5yZWFkOworICB9CisgIHJldHVybiB0cnVlOwor
fQorCisjZWxzZQorCisvLyBPbiAqbml4LCByZWFkIGVudHJvcHkgZnJvbSAvZGV2L3VyYW5kb20u
Citib29sIFJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5SW1wbChhYnNsOjpTcGFuPHVpbnQz
Ml90PiB2YWx1ZXMpIHsKKyAgY29uc3QgY2hhciBrRW50cm9weUZpbGVbXSA9ICIvZGV2L3VyYW5k
b20iOworCisgIGF1dG8gYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odmFsdWVz
LmRhdGEoKSk7CisgIHNpemVfdCBidWZmZXJfc2l6ZSA9IHNpemVvZih1aW50MzJfdCkgKiB2YWx1
ZXMuc2l6ZSgpOworCisgIGludCBkZXZfdXJhbmRvbSA9IG9wZW4oa0VudHJvcHlGaWxlLCBPX1JE
T05MWSk7CisgIGJvb2wgc3VjY2VzcyA9ICgtMSAhPSBkZXZfdXJhbmRvbSk7CisgIGlmICghc3Vj
Y2VzcykgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHdoaWxlIChzdWNjZXNzICYmIGJ1
ZmZlcl9zaXplID4gMCkgeworICAgIGludCBieXRlc19yZWFkID0gcmVhZChkZXZfdXJhbmRvbSwg
YnVmZmVyLCBidWZmZXJfc2l6ZSk7CisgICAgaW50IHJlYWRfZXJyb3IgPSBlcnJubzsKKyAgICBz
dWNjZXNzID0gKGJ5dGVzX3JlYWQgPiAwKTsKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgYnVm
ZmVyICs9IGJ5dGVzX3JlYWQ7CisgICAgICBidWZmZXJfc2l6ZSAtPSBieXRlc19yZWFkOworICAg
IH0gZWxzZSBpZiAoYnl0ZXNfcmVhZCA9PSAtMSAmJiByZWFkX2Vycm9yID09IEVJTlRSKSB7Cisg
ICAgICBzdWNjZXNzID0gdHJ1ZTsgIC8vIE5lZWQgdG8gdHJ5IGFnYWluLgorICAgIH0KKyAgfQor
ICBjbG9zZShkZXZfdXJhbmRvbSk7CisgIHJldHVybiBzdWNjZXNzOworfQorCisjZW5kaWYKKwor
fSAgLy8gbmFtZXNwYWNlCisKK2Jvb2wgUmVhZFNlZWRNYXRlcmlhbEZyb21PU0VudHJvcHkoYWJz
bDo6U3Bhbjx1aW50MzJfdD4gdmFsdWVzKSB7CisgIGFzc2VydCh2YWx1ZXMuZGF0YSgpICE9IG51
bGxwdHIpOworICBpZiAodmFsdWVzLmRhdGEoKSA9PSBudWxscHRyKSB7CisgICAgcmV0dXJuIGZh
bHNlOworICB9CisgIGlmICh2YWx1ZXMuZW1wdHkoKSkgeworICAgIHJldHVybiB0cnVlOworICB9
CisgIHJldHVybiBSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weUltcGwodmFsdWVzKTsKK30K
Kwordm9pZCBNaXhJbnRvU2VlZE1hdGVyaWFsKGFic2w6OlNwYW48Y29uc3QgdWludDMyX3Q+IHNl
cXVlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48dWludDMyX3Q+IHNl
ZWRfbWF0ZXJpYWwpIHsKKyAgLy8gQWxnb3JpdGhtIGlzIGJhc2VkIG9uIGNvZGUgYXZhaWxhYmxl
IGF0CisgIC8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2ltbmVtZS81NDA4MjkyNjU0NjllNjcz
ZDA0NQorICBjb25zdGV4cHIgdWludDMyX3Qga0luaXRWYWwgPSAweDQzYjBkN2U1OworICBjb25z
dGV4cHIgdWludDMyX3Qga0hhc2hNdWwgPSAweDkzMWU4ODc1OworICBjb25zdGV4cHIgdWludDMy
X3Qga01peE11bEwgPSAweGNhMDFmOWRkOworICBjb25zdGV4cHIgdWludDMyX3Qga01peE11bFIg
PSAweDQ5NzNmNzE1OworICBjb25zdGV4cHIgdWludDMyX3Qga1NoaWZ0U2l6ZSA9IHNpemVvZih1
aW50MzJfdCkgKiA4IC8gMjsKKworICB1aW50MzJfdCBoYXNoX2NvbnN0ID0ga0luaXRWYWw7Cisg
IGF1dG8gaGFzaCA9IFsmXSh1aW50MzJfdCB2YWx1ZSkgeworICAgIHZhbHVlIF49IGhhc2hfY29u
c3Q7CisgICAgaGFzaF9jb25zdCAqPSBrSGFzaE11bDsKKyAgICB2YWx1ZSAqPSBoYXNoX2NvbnN0
OworICAgIHZhbHVlIF49IHZhbHVlID4+IGtTaGlmdFNpemU7CisgICAgcmV0dXJuIHZhbHVlOwor
ICB9OworCisgIGF1dG8gbWl4ID0gWyZdKHVpbnQzMl90IHgsIHVpbnQzMl90IHkpIHsKKyAgICB1
aW50MzJfdCByZXN1bHQgPSBrTWl4TXVsTCAqIHggLSBrTWl4TXVsUiAqIHk7CisgICAgcmVzdWx0
IF49IHJlc3VsdCA+PiBrU2hpZnRTaXplOworICAgIHJldHVybiByZXN1bHQ7CisgIH07CisKKyAg
Zm9yIChjb25zdCBhdXRvJiBzZXFfdmFsIDogc2VxdWVuY2UpIHsKKyAgICBmb3IgKGF1dG8mIGVs
ZW0gOiBzZWVkX21hdGVyaWFsKSB7CisgICAgICBlbGVtID0gbWl4KGVsZW0sIGhhc2goc2VxX3Zh
bCkpOworICAgIH0KKyAgfQorfQorCithYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gR2V0U2FsdE1h
dGVyaWFsKCkgeworICAvLyBTYWx0IG11c3QgYmUgY29tbW9uIGZvciBhbGwgZ2VuZXJhdG9ycyB3
aXRoaW4gdGhlIHNhbWUgcHJvY2VzcyBzbyByZWFkIGl0CisgIC8vIG9ubHkgb25jZSBhbmQgc3Rv
cmUgaW4gc3RhdGljIHZhcmlhYmxlLgorICBzdGF0aWMgY29uc3QgYXV0byBzYWx0X21hdGVyaWFs
ID0gW10oKSAtPiBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4geworICAgIHVpbnQzMl90IHNhbHRf
dmFsdWUgPSAwOworCisgICAgaWYgKHJhbmRvbV9pbnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZy
b21PU0VudHJvcHkoCisgICAgICAgICAgICBNYWtlU3Bhbigmc2FsdF92YWx1ZSwgMSkpKSB7Cisg
ICAgICByZXR1cm4gc2FsdF92YWx1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9w
dDsKKyAgfSgpOworCisgIHJldHVybiBzYWx0X21hdGVyaWFsOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC9zZWVkX21hdGVyaWFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjU3ZGU4YTI0ZDVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3Nl
ZWRfbWF0ZXJpYWwuaApAQCAtMCwwICsxLDEwMiBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFi
c2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfU0VFRF9NQVRF
UklBTF9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9TRUVEX01BVEVSSUFMX0hfCisK
KyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0ZGxp
Yj4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJz
bC9iYXNlL2F0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0
X3VuaWZvcm1fYml0cy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNs
dWRlICJhYnNsL3R5cGVzL3NwYW4uaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJh
bmRvbV9pbnRlcm5hbCB7CisKKy8vIFJldHVybnMgdGhlIG51bWJlciBvZiAzMi1iaXQgYmxvY2tz
IG5lZWRlZCB0byBjb250YWluIHRoZSBnaXZlbiBudW1iZXIgb2YKKy8vIGJpdHMuCitjb25zdGV4
cHIgc2l6ZV90IFNlZWRCaXRzVG9CbG9ja3Moc2l6ZV90IHNlZWRfc2l6ZSkgeworICByZXR1cm4g
KHNlZWRfc2l6ZSArIDMxKSAvIDMyOworfQorCisvLyBBbW91bnQgb2YgZW50cm9weSAobWVhc3Vy
ZWQgaW4gYml0cykgdXNlZCB0byBpbnN0YW50aWF0ZSBhIFNlZWQgU2VxdWVuY2UsCisvLyB3aXRo
IHdoaWNoIHRvIGNyZWF0ZSBhIFVSQkcuCitjb25zdGV4cHIgc2l6ZV90IGtFbnRyb3B5Qml0c05l
ZWRlZCA9IDI1NjsKKworLy8gQW1vdW50IG9mIGVudHJvcHkgKG1lYXN1cmVkIGluIDMyLWJpdCBi
bG9ja3MpIHVzZWQgdG8gaW5zdGFudGlhdGUgYSBTZWVkCisvLyBTZXF1ZW5jZSwgd2l0aCB3aGlj
aCB0byBjcmVhdGUgYSBVUkJHLgorY29uc3RleHByIHNpemVfdCBrRW50cm9weUJsb2Nrc05lZWRl
ZCA9CisgICAgcmFuZG9tX2ludGVybmFsOjpTZWVkQml0c1RvQmxvY2tzKGtFbnRyb3B5Qml0c05l
ZWRlZCk7CisKK3N0YXRpY19hc3NlcnQoa0VudHJvcHlCbG9ja3NOZWVkZWQgPiAwLAorICAgICAg
ICAgICAgICAiRW50cm9weSB1c2VkIHRvIHNlZWQgVVJCR3MgbXVzdCBiZSBub256ZXJvLiIpOwor
CisvLyBBdHRlbXB0cyB0byBmaWxsIGEgc3BhbiBvZiB1aW50MzJfdC12YWx1ZXMgdXNpbmcgYW4g
T1MtcHJvdmlkZWQgc291cmNlIG9mCisvLyB0cnVlIGVudHJvcHkgKGVnLiAvZGV2L3VyYW5kb20p
IGludG8gYW4gYXJyYXkgb2YgdWludDMyX3QgYmxvY2tzIG9mIGRhdGEuIFRoZQorLy8gcmVzdWx0
aW5nIGFycmF5IG1heSBiZSB1c2VkIHRvIGluaXRpYWxpemUgYW4gaW5zdGFuY2Ugb2YgYSBjbGFz
cyBjb25mb3JtaW5nCisvLyB0byB0aGUgQysrIFN0YW5kYXJkICJTZWVkIFNlcXVlbmNlIiBjb25j
ZXB0IFtyYW5kLnJlcS5zZWVkc2VxXS4KKy8vCisvLyBJZiB2YWx1ZXMuZGF0YSgpID09IG51bGxw
dHIsIHRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQuCitBQlNMX01VU1RfVVNFX1JFU1VMVAorYm9v
bCBSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weShhYnNsOjpTcGFuPHVpbnQzMl90PiB2YWx1
ZXMpOworCisvLyBBdHRlbXB0cyB0byBmaWxsIGEgc3BhbiBvZiB1aW50MzJfdC12YWx1ZXMgdXNp
bmcgdmFyaWF0ZXMgZ2VuZXJhdGVkIGJ5IGFuCisvLyBleGlzdGluZyBpbnN0YW5jZSBvZiBhIGNs
YXNzIGNvbmZvcm1pbmcgdG8gdGhlIEMrKyBTdGFuZGFyZCAiVW5pZm9ybSBSYW5kb20KKy8vIEJp
dCBHZW5lcmF0b3IiIGNvbmNlcHQgW3JhbmQucmVxLnVybmddLiBUaGUgcmVzdWx0aW5nIGRhdGEg
bWF5IGJlIHVzZWQgdG8KKy8vIGluaXRpYWxpemUgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyBjb25m
b3JtaW5nIHRvIHRoZSBDKysgU3RhbmRhcmQKKy8vICJTZWVkIFNlcXVlbmNlIiBjb25jZXB0IFty
YW5kLnJlcS5zZWVkc2VxXS4KKy8vCisvLyBJZiB1cmJnID09IG51bGxwdHIgb3IgdmFsdWVzLmRh
dGEoKSA9PSBudWxscHRyLCB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgordGVtcGxhdGUgPHR5
cGVuYW1lIFVSQkc+CitBQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFJlYWRTZWVkTWF0ZXJpYWxG
cm9tVVJCRygKKyAgICBVUkJHKiB1cmJnLCBhYnNsOjpTcGFuPHVpbnQzMl90PiB2YWx1ZXMpIHsK
KyAgcmFuZG9tX2ludGVybmFsOjpGYXN0VW5pZm9ybUJpdHM8dWludDMyX3Q+IGRpc3RyOworCisg
IGFzc2VydCh1cmJnICE9IG51bGxwdHIgJiYgdmFsdWVzLmRhdGEoKSAhPSBudWxscHRyKTsKKyAg
aWYgKHVyYmcgPT0gbnVsbHB0ciB8fCB2YWx1ZXMuZGF0YSgpID09IG51bGxwdHIpIHsKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIH0KKworICBmb3IgKHVpbnQzMl90JiBzZWVkX3ZhbHVlIDogdmFsdWVz
KSB7CisgICAgc2VlZF92YWx1ZSA9IGRpc3RyKCp1cmJnKTsKKyAgfQorICByZXR1cm4gdHJ1ZTsK
K30KKworLy8gTWl4ZXMgZ2l2ZW4gc2VxdWVuY2Ugb2YgdmFsdWVzIHdpdGggaW50byBnaXZlbiBz
ZXF1ZW5jZSBvZiBzZWVkIG1hdGVyaWFsLgorLy8gVGltZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVu
Y3Rpb24gaXMgTyhzZXF1ZW5jZS5zaXplKCkgKgorLy8gc2VlZF9tYXRlcmlhbC5zaXplKCkpLgor
Ly8KKy8vIEFsZ29yaXRobSBpcyBiYXNlZCBvbiBjb2RlIGF2YWlsYWJsZSBhdAorLy8gaHR0cHM6
Ly9naXN0LmdpdGh1Yi5jb20vaW1uZW1lLzU0MDgyOTI2NTQ2OWU2NzNkMDQ1CisvLyBieSBNZWxp
c3NhIE8nTmVpbGwuCit2b2lkIE1peEludG9TZWVkTWF0ZXJpYWwoYWJzbDo6U3Bhbjxjb25zdCB1
aW50MzJfdD4gc2VxdWVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjx1
aW50MzJfdD4gc2VlZF9tYXRlcmlhbCk7CisKKy8vIFJldHVybnMgc2FsdCB2YWx1ZS4KKy8vCisv
LyBTYWx0IGlzIG9idGFpbmVkIG9ubHkgb25jZSBhbmQgc3RvcmVkIGluIHN0YXRpYyB2YXJpYWJs
ZS4KKy8vCisvLyBNYXkgcmV0dXJuIGVtcHR5IHZhbHVlIGlmIG9wdGFpbmluZyB0aGUgc2FsdCB3
YXMgbm90IHBvc3NpYmxlLgorYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IEdldFNhbHRNYXRlcmlh
bCgpOworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1NFRURfTUFURVJJQUxfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX21hdGVyaWFsX3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRlcmlhbF90ZXN0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZGIyODIwZWM3MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX21hdGVyaWFsX3Rlc3QuY2MKQEAgLTAsMCAr
MSwyMDIgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRlcmlhbC5oIgorCisjaW5jbHVkZSA8
Yml0c2V0PgorI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRl
IDxyYW5kb20+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKKyNpZmRlZiBfX0FORFJPSURfXworLy8gQW5kcm9pZCBhc3NlcnQgbWVzc2FnZXMg
b25seSBnbyB0byBzeXN0ZW0gbG9nLCBzbyBkZWF0aCB0ZXN0cyBjYW5ub3QgaW5zcGVjdAorLy8g
dGhlIG1lc3NhZ2UgZm9yIG1hdGNoaW5nLgorI2RlZmluZSBBQlNMX0VYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KHN0YXRlbWVudCwgIi4qIikKKyNlbHNlCisjZGVmaW5lIEFCU0xfRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQo
c3RhdGVtZW50LCByZWdleCkKKyNlbmRpZgorCituYW1lc3BhY2UgeworCit1c2luZyB0ZXN0aW5n
OjpFYWNoOwordXNpbmcgdGVzdGluZzo6RWxlbWVudHNBcmU7Cit1c2luZyB0ZXN0aW5nOjpFcTsK
K3VzaW5nIHRlc3Rpbmc6Ok5lOwordXNpbmcgdGVzdGluZzo6UG9pbnR3aXNlOworCitURVNUKFNl
ZWRCaXRzVG9CbG9ja3MsIFZlcmlmeUNhc2VzKSB7CisgIEVYUEVDVF9FUSgwLCBhYnNsOjpyYW5k
b21faW50ZXJuYWw6OlNlZWRCaXRzVG9CbG9ja3MoMCkpOworICBFWFBFQ1RfRVEoMSwgYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpTZWVkQml0c1RvQmxvY2tzKDEpKTsKKyAgRVhQRUNUX0VRKDEsIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbDo6U2VlZEJpdHNUb0Jsb2NrcygzMSkpOworICBFWFBFQ1RfRVEo
MSwgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpTZWVkQml0c1RvQmxvY2tzKDMyKSk7CisgIEVYUEVD
VF9FUSgyLCBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlNlZWRCaXRzVG9CbG9ja3MoMzMpKTsKKyAg
RVhQRUNUX0VRKDQsIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U2VlZEJpdHNUb0Jsb2NrcygxMjcp
KTsKKyAgRVhQRUNUX0VRKDQsIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U2VlZEJpdHNUb0Jsb2Nr
cygxMjgpKTsKKyAgRVhQRUNUX0VRKDUsIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U2VlZEJpdHNU
b0Jsb2NrcygxMjkpKTsKK30KKworVEVTVChSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weSwg
U3VjY2Vzc2l2ZVJlYWRzQXJlRGlzdGluY3QpIHsKKyAgY29uc3RleHByIHNpemVfdCBrU2VlZE1h
dGVyaWFsU2l6ZSA9IDY0OworICB1aW50MzJfdCBzZWVkX21hdGVyaWFsXzFba1NlZWRNYXRlcmlh
bFNpemVdID0ge307CisgIHVpbnQzMl90IHNlZWRfbWF0ZXJpYWxfMltrU2VlZE1hdGVyaWFsU2l6
ZV0gPSB7fTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVk
TWF0ZXJpYWxGcm9tT1NFbnRyb3B5KAorICAgICAgYWJzbDo6U3Bhbjx1aW50MzJfdD4oc2VlZF9t
YXRlcmlhbF8xLCBrU2VlZE1hdGVyaWFsU2l6ZSkpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6cmFu
ZG9tX2ludGVybmFsOjpSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weSgKKyAgICAgIGFic2w6
OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWxfMiwga1NlZWRNYXRlcmlhbFNpemUpKSk7CisK
KyAgRVhQRUNUX1RIQVQoc2VlZF9tYXRlcmlhbF8xLCBQb2ludHdpc2UoTmUoKSwgc2VlZF9tYXRl
cmlhbF8yKSk7Cit9CisKK1RFU1QoUmVhZFNlZWRNYXRlcmlhbEZyb21PU0VudHJvcHksIFJlYWRa
ZXJvQnl0ZXNJc05vT3ApIHsKKyAgdWludDMyX3Qgc2VlZF9tYXRlcmlhbFszMl0gPSB7fTsKKyAg
c3RkOjptZW1zZXQoc2VlZF9tYXRlcmlhbCwgMHhBQSwgc2l6ZW9mKHNlZWRfbWF0ZXJpYWwpKTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSZWFkU2VlZE1hdGVyaWFsRnJv
bU9TRW50cm9weSgKKyAgICAgIGFic2w6OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWwsIDAp
KSk7CisKKyAgRVhQRUNUX1RIQVQoc2VlZF9tYXRlcmlhbCwgRWFjaChFcSgweEFBQUFBQUFBKSkp
OworfQorCitURVNUKFJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5LCBOdWxsUHRyVmVjdG9y
QXJndW1lbnQpIHsKKyNpZmRlZiBOREVCVUcKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21PU0VudHJvcHkoCisgICAgICBhYnNsOjpTcGFu
PHVpbnQzMl90PihudWxscHRyLCAzMikpKTsKKyNlbHNlCisgIGJvb2wgcmVzdWx0OworICBBQlNM
X0VYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCisgICAgICByZXN1bHQgPSBhYnNsOjpyYW5kb21f
aW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5KAorICAgICAgICAgIGFic2w6
OlNwYW48dWludDMyX3Q+KG51bGxwdHIsIDMyKSksCisgICAgICAiIT0gbnVsbHB0ciIpOworICAo
dm9pZClyZXN1bHQ7ICAvLyBzdXBwcmVzcyB1bnVzZWQtdmFyaWFibGUgd2FybmluZworI2VuZGlm
Cit9CisKK1RFU1QoUmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHLCBTZWVkTWF0ZXJpYWxFcXVhbHNW
YXJpYXRlU2VxdWVuY2UpIHsKKyAgLy8gVHdvIGRlZmF1bHQtY29uc3RydWN0ZWQgaW5zdGFuY2Vz
IG9mIHN0ZDo6bXQxOTkzN182NCBhcmUgZ3VhcmFudGVlZCB0bworICAvLyBwcm9kdWNlIGVxdWFs
IHZhcmlhdGUtc2VxdWVuY2VzLgorICBzdGQ6Om10MTk5MzcgdXJiZ18xOworICBzdGQ6Om10MTk5
MzcgdXJiZ18yOworICBjb25zdGV4cHIgc2l6ZV90IGtTZWVkTWF0ZXJpYWxTaXplID0gMTAyNDsK
KyAgdWludDMyX3Qgc2VlZF9tYXRlcmlhbFtrU2VlZE1hdGVyaWFsU2l6ZV0gPSB7fTsKKworICBF
WFBFQ1RfVFJVRShhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9tVVJC
RygKKyAgICAgICZ1cmJnXzEsIGFic2w6OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWwsIGtT
ZWVkTWF0ZXJpYWxTaXplKSkpOworICBmb3IgKHVpbnQzMl90IHNlZWQgOiBzZWVkX21hdGVyaWFs
KSB7CisgICAgRVhQRUNUX0VRKHNlZWQsIHVyYmdfMigpKTsKKyAgfQorfQorCitURVNUKFJlYWRT
ZWVkTWF0ZXJpYWxGcm9tVVJCRywgUmVhZFplcm9CeXRlc0lzTm9PcCkgeworICBzdGQ6Om10MTk5
MzdfNjQgdXJiZzsKKyAgdWludDMyX3Qgc2VlZF9tYXRlcmlhbFszMl07CisgIHN0ZDo6bWVtc2V0
KHNlZWRfbWF0ZXJpYWwsIDB4QUEsIHNpemVvZihzZWVkX21hdGVyaWFsKSk7CisgIEVYUEVDVF9U
UlVFKGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHKAorICAg
ICAgJnVyYmcsIGFic2w6OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWwsIDApKSk7CisKKyAg
RVhQRUNUX1RIQVQoc2VlZF9tYXRlcmlhbCwgRWFjaChFcSgweEFBQUFBQUFBKSkpOworfQorCitU
RVNUKFJlYWRTZWVkTWF0ZXJpYWxGcm9tVVJCRywgTnVsbFVyYmdBcmd1bWVudCkgeworICBjb25z
dGV4cHIgc2l6ZV90IGtTZWVkTWF0ZXJpYWxTaXplID0gMzI7CisgIHVpbnQzMl90IHNlZWRfbWF0
ZXJpYWxba1NlZWRNYXRlcmlhbFNpemVdOworI2lmZGVmIE5ERUJVRworICBFWFBFQ1RfRkFMU0Uo
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpSZWFkU2VlZE1hdGVyaWFsRnJvbVVSQkc8c3RkOjptdDE5
OTM3XzY0PigKKyAgICAgIG51bGxwdHIsIGFic2w6OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJp
YWwsIGtTZWVkTWF0ZXJpYWxTaXplKSkpOworI2Vsc2UKKyAgYm9vbCByZXN1bHQ7CisgIEFCU0xf
RVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCgKKyAgICAgIHJlc3VsdCA9IGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHPHN0ZDo6bXQxOTkzN182ND4oCisgICAg
ICAgICAgbnVsbHB0ciwgYWJzbDo6U3Bhbjx1aW50MzJfdD4oc2VlZF9tYXRlcmlhbCwga1NlZWRN
YXRlcmlhbFNpemUpKSwKKyAgICAgICIhPSBudWxscHRyIik7CisgICh2b2lkKXJlc3VsdDsgIC8v
IHN1cHByZXNzIHVudXNlZC12YXJpYWJsZSB3YXJuaW5nCisjZW5kaWYKK30KKworVEVTVChSZWFk
U2VlZE1hdGVyaWFsRnJvbVVSQkcsIE51bGxQdHJWZWN0b3JBcmd1bWVudCkgeworICBzdGQ6Om10
MTk5MzdfNjQgdXJiZzsKKyNpZmRlZiBOREVCVUcKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHKAorICAgICAgJnVyYmcsIGFic2w6
OlNwYW48dWludDMyX3Q+KG51bGxwdHIsIDMyKSkpOworI2Vsc2UKKyAgYm9vbCByZXN1bHQ7Cisg
IEFCU0xfRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCgKKyAgICAgIHJlc3VsdCA9IGFic2w6OnJh
bmRvbV9pbnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHKAorICAgICAgICAgICZ1cmJn
LCBhYnNsOjpTcGFuPHVpbnQzMl90PihudWxscHRyLCAzMikpLAorICAgICAgIiE9IG51bGxwdHIi
KTsKKyAgKHZvaWQpcmVzdWx0OyAgLy8gc3VwcHJlc3MgdW51c2VkLXZhcmlhYmxlIHdhcm5pbmcK
KyNlbmRpZgorfQorCisvLyBUaGUgYXZhbGFuY2hlIGVmZmVjdCBpcyBhIGRlc2lyYWJsZSBjcnlw
dG9ncmFwaGljIHByb3BlcnR5IG9mIGhhc2hlcyBpbiB3aGljaAorLy8gY2hhbmdpbmcgYSBzaW5n
bGUgYml0IGluIHRoZSBpbnB1dCBjYXVzZXMgZWFjaCBiaXQgb2YgdGhlIG91dHB1dCB0byBiZQor
Ly8gY2hhbmdlZCB3aXRoIHByb2JhYmlsaXR5IG5lYXIgNTAlLgorLy8KKy8vIGh0dHBzOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL0F2YWxhbmNoZV9lZmZlY3QKKworVEVTVChNaXhTZXF1ZW5jZUlu
dG9TZWVkTWF0ZXJpYWwsIEF2YWxhbmNoZUVmZmVjdFRlc3RPbmVCaXRMb25nKSB7CisgIHN0ZDo6
dmVjdG9yPHVpbnQzMl90PiBzZWVkX21hdGVyaWFsID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDh9
OworCisgIC8vIEZvciBldmVyeSAzMi1iaXQgbnVtYmVyIHdpdGggZXhhY3RseSBvbmUgYml0IHNl
dCwgdmVyaWZ5IHRoZSBhdmFsYW5jaGUKKyAgLy8gZWZmZWN0IGhvbGRzLiAgSW4gb3JkZXIgdG8g
cmVkdWNlIGZsYWtpbmVzcyBvZiB0ZXN0cywgYWNjZXB0IHZhbHVlcworICAvLyBhbnl3aGVyZSBp
biB0aGUgcmFuZ2Ugb2YgMzAlLTcwJS4KKyAgZm9yICh1aW50MzJfdCB2ID0gMTsgdiAhPSAwOyB2
IDw8PSAxKSB7CisgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHNlZWRfbWF0ZXJpYWxfY29weSA9
IHNlZWRfbWF0ZXJpYWw7CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpNaXhJbnRvU2VlZE1h
dGVyaWFsKAorICAgICAgICBhYnNsOjpTcGFuPHVpbnQzMl90PigmdiwgMSksCisgICAgICAgIGFi
c2w6OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWxfY29weS5kYXRhKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlZWRfbWF0ZXJpYWxfY29weS5zaXplKCkpKTsKKworICAgIHVp
bnQzMl90IGNoYW5nZWRfYml0cyA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWVk
X21hdGVyaWFsLnNpemUoKTsgaSsrKSB7CisgICAgICBzdGQ6OmJpdHNldDxzaXplb2YodWludDMy
X3QpICogOD4gYml0c2V0KHNlZWRfbWF0ZXJpYWxbaV0gXgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkX21hdGVyaWFsX2NvcHlbaV0pOworICAgICAg
Y2hhbmdlZF9iaXRzICs9IGJpdHNldC5jb3VudCgpOworICAgIH0KKworICAgIEVYUEVDVF9MRShj
aGFuZ2VkX2JpdHMsIDAuNyAqIHNpemVvZih1aW50MzJfdCkgKiA4ICogc2VlZF9tYXRlcmlhbC5z
aXplKCkpOworICAgIEVYUEVDVF9HRShjaGFuZ2VkX2JpdHMsIDAuMyAqIHNpemVvZih1aW50MzJf
dCkgKiA4ICogc2VlZF9tYXRlcmlhbC5zaXplKCkpOworICB9Cit9CisKK1RFU1QoTWl4U2VxdWVu
Y2VJbnRvU2VlZE1hdGVyaWFsLCBBdmFsYW5jaGVFZmZlY3RUZXN0T25lQml0U2hvcnQpIHsKKyAg
c3RkOjp2ZWN0b3I8dWludDMyX3Q+IHNlZWRfbWF0ZXJpYWwgPSB7MX07CisKKyAgLy8gRm9yIGV2
ZXJ5IDMyLWJpdCBudW1iZXIgd2l0aCBleGFjdGx5IG9uZSBiaXQgc2V0LCB2ZXJpZnkgdGhlIGF2
YWxhbmNoZQorICAvLyBlZmZlY3QgaG9sZHMuICBJbiBvcmRlciB0byByZWR1Y2UgZmxha2luZXNz
IG9mIHRlc3RzLCBhY2NlcHQgdmFsdWVzCisgIC8vIGFueXdoZXJlIGluIHRoZSByYW5nZSBvZiAz
MCUtNzAlLgorICBmb3IgKHVpbnQzMl90IHYgPSAxOyB2ICE9IDA7IHYgPDw9IDEpIHsKKyAgICBz
dGQ6OnZlY3Rvcjx1aW50MzJfdD4gc2VlZF9tYXRlcmlhbF9jb3B5ID0gc2VlZF9tYXRlcmlhbDsK
KyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok1peEludG9TZWVkTWF0ZXJpYWwoCisgICAgICAg
IGFic2w6OlNwYW48dWludDMyX3Q+KCZ2LCAxKSwKKyAgICAgICAgYWJzbDo6U3Bhbjx1aW50MzJf
dD4oc2VlZF9tYXRlcmlhbF9jb3B5LmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VlZF9tYXRlcmlhbF9jb3B5LnNpemUoKSkpOworCisgICAgdWludDMyX3QgY2hhbmdlZF9i
aXRzID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlZWRfbWF0ZXJpYWwuc2l6ZSgp
OyBpKyspIHsKKyAgICAgIHN0ZDo6Yml0c2V0PHNpemVvZih1aW50MzJfdCkgKiA4PiBiaXRzZXQo
c2VlZF9tYXRlcmlhbFtpXSBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlZWRfbWF0ZXJpYWxfY29weVtpXSk7CisgICAgICBjaGFuZ2VkX2JpdHMgKz0g
Yml0c2V0LmNvdW50KCk7CisgICAgfQorCisgICAgRVhQRUNUX0xFKGNoYW5nZWRfYml0cywgMC43
ICogc2l6ZW9mKHVpbnQzMl90KSAqIDggKiBzZWVkX21hdGVyaWFsLnNpemUoKSk7CisgICAgRVhQ
RUNUX0dFKGNoYW5nZWRfYml0cywgMC4zICogc2l6ZW9mKHVpbnQzMl90KSAqIDggKiBzZWVkX21h
dGVyaWFsLnNpemUoKSk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9zYWx0aW5nX3NlcXVlbmNlX2dlbmVyYXRvci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX3NhbHRpbmdfc2VxdWVuY2VfZ2VuZXJhdG9yLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMWZkY2ZlMWRiNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX3NhbHRpbmdfc2VxdWVu
Y2VfZ2VuZXJhdG9yLmNjCkBAIC0wLDAgKzEsMzAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8cmFuZG9t
PgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisKKy8vIFRoaXMgcHJvZ3JhbSBp
cyB1c2VkIGluIGludGVncmF0aW9uIHRlc3RzLgorCitpbnQgbWFpbigpIHsKKyAgc3RkOjpzZWVk
X3NlcSBzZWVkX3NlcXsxMjM0fTsKKyAgYWJzbDo6Qml0R2VuIHJuZyhzZWVkX3NlcSk7CisgIGNv
bnN0ZXhwciBzaXplX3Qga1NlcXVlbmNlTGVuZ3RoID0gODsKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBrU2VxdWVuY2VMZW5ndGg7IGkrKykgeworICAgIHN0ZDo6Y291dCA8PCBybmcoKSA8PCAi
XG4iOworICB9CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVy
bmFsL3NlZWRfc2FsdGluZ19zZXF1ZW5jZV9nZW5lcmF0b3JfZW1wdHlfc2VxdWVuY2UuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9zYWx0aW5nX3NlcXVlbmNlX2dlbmVyYXRvcl9lbXB0
eV9zZXF1ZW5jZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODc5
N2UyZTdhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9z
YWx0aW5nX3NlcXVlbmNlX2dlbmVyYXRvcl9lbXB0eV9zZXF1ZW5jZS5jYwpAQCAtMCwwICsxLDMw
IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUg
PGlvc3RyZWFtPgorI2luY2x1ZGUgPHJhbmRvbT4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL3Jh
bmRvbS5oIgorCisvLyBUaGlzIHByb2dyYW0gaXMgdXNlZCBpbiBpbnRlZ3JhdGlvbiB0ZXN0cy4K
KworaW50IG1haW4oKSB7CisgIHN0ZDo6c2VlZF9zZXEgc2VlZF9zZXF7fTsKKyAgYWJzbDo6Qml0
R2VuIHJuZyhzZWVkX3NlcSk7CisgIGNvbnN0ZXhwciBzaXplX3Qga1NlcXVlbmNlTGVuZ3RoID0g
ODsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrU2VxdWVuY2VMZW5ndGg7IGkrKykgeworICAg
IHN0ZDo6Y291dCA8PCBybmcoKSA8PCAiXG4iOworICB9CisgIHJldHVybiAwOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3NlcXVlbmNlX3VyYmcuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjlhOWI1NzczOGRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3NlcXVlbmNlX3VyYmcuaApAQCAtMCwwICsxLDU2IEBACisvLyBDb3B5cmlnaHQgMjAx
NyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9T
RVFVRU5DRV9VUkJHX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1NFUVVFTkNFX1VS
QkdfSF8KKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dmVjdG9yPgorCitu
YW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gYHNlcXVl
bmNlX3VyYmdgIGlzIGEgc2ltcGxlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHdoaWNoIG1lZXRz
IHRoZQorLy8gcmVxdWlyZW1lbnRzIG9mIFtyYW5kLnJlcS51cmJnXSwgYW5kIGlzIHNvbGVseSBm
b3IgdGVzdGluZyBhYnNsCisvLyBkaXN0cmlidXRpb25zLgorY2xhc3Mgc2VxdWVuY2VfdXJiZyB7
CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IHVpbnQ2NF90OworCisgIHN0YXRpYyBj
b25zdGV4cHIgcmVzdWx0X3R5cGUobWluKSgpIHsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8cmVzdWx0X3R5cGU+OjptaW4pKCk7CisgIH0KKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1
bHRfdHlwZShtYXgpKCkgeworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRf
dHlwZT46Om1heCkoKTsKKyAgfQorCisgIHNlcXVlbmNlX3VyYmcoc3RkOjppbml0aWFsaXplcl9s
aXN0PHJlc3VsdF90eXBlPiBkYXRhKSA6IGlfKDApLCBkYXRhXyhkYXRhKSB7fQorICB2b2lkIHJl
c2V0KCkgeyBpXyA9IDA7IH0KKworICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkgeyByZXR1cm4g
ZGF0YV9baV8rKyAlIGRhdGFfLnNpemUoKV07IH0KKworICBzaXplX3QgaW52b2NhdGlvbnMoKSBj
b25zdCB7IHJldHVybiBpXzsgfQorCisgcHJpdmF0ZToKKyAgc2l6ZV90IGlfOworICBzdGQ6OnZl
Y3RvcjxyZXN1bHRfdHlwZT4gZGF0YV87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2lu
dGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lO
VEVSTkFMX1NFUVVFTkNFX1VSQkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC90cmFpdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC90cmFpdHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDBlYjAxMWYxOTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvdHJhaXRzLmgKQEAgLTAsMCArMSw5OSBAQAorLy8gQ29w
eXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01f
SU5URVJOQUxfVFJBSVRTX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1RSQUlUU19I
XworCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlw
ZV90cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvY29uZmlnLmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyByYW5kb21faW50ZXJuYWw6
OmlzX3dpZGVuaW5nX2NvbnZlcnRpYmxlPEEsIEI+CisvLworLy8gUmV0dXJucyB3aGV0aGVyIGEg
dHlwZSBBIGlzIHdpZGVuaW5nLWNvbnZlcnRpYmxlIHRvIGEgdHlwZSBCLgorLy8KKy8vIEEgaXMg
d2lkZW5pbmctY29udmVydGlibGUgdG8gQiBtZWFuczoKKy8vICAgQSBhID0gPGFueSBudW1iZXI+
OworLy8gICBCIGIgPSBhOworLy8gICBBIGMgPSBiOworLy8gICBFWFBFQ1RfRVEoYSwgYyk7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4KK2NsYXNzIGlzX3dpZGVuaW5nX2NvbnZl
cnRpYmxlIHsKKyAgLy8gQXMgbG9uZyBhcyB0aGVyZSBhcmUgZW5vdWdoIGJpdHMgaW4gdGhlIGV4
YWN0IHBhcnQgb2YgYSBudW1iZXI6CisgIC8vIC0gdW5zaWduZWQgY2FuIGZpdCBpbiBmbG9hdCwg
c2lnbmVkLCB1bnNpZ25lZAorICAvLyAtIHNpZ25lZCBjYW4gZml0IGluIGZsb2F0LCBzaWduZWQK
KyAgLy8gLSBmbG9hdCBjYW4gZml0IGluIGZsb2F0CisgIC8vIFNvIHdlIGRlZmluZSByYW5rIHRv
IGJlOgorICAvLyAtIHJhbmsoZmxvYXQpIC0+IDIKKyAgLy8gLSByYW5rKHNpZ25lZCkgLT4gMQor
ICAvLyAtIHJhbmsodW5zaWduZWQpIC0+IDAKKyAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgIHN0YXRp
YyBjb25zdGV4cHIgaW50IHJhbmsoKSB7CisgICAgcmV0dXJuICFzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+Ojppc19pbnRlZ2VyICsKKyAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNf
c2lnbmVkOworICB9CisKKyBwdWJsaWM6CisgIC8vIElmIGFuIGFyaXRobWV0aWMtdHlwZSBCIGNh
biByZXByZXNlbnQgYXQgbGVhc3QgYXMgbWFueSBkaWdpdHMgYXMgYSB0eXBlIEEsCisgIC8vIGFu
ZCBCIGJlbG9uZ3MgdG8gYSByYW5rIG5vIGxvd2VyIHRoYW4gQSwgdGhlbiBBIGNhbiBiZSBzYWZl
bHkgcmVwcmVzZW50ZWQKKyAgLy8gYnkgQiB0aHJvdWdoIGEgd2lkZW5pbmctY29udmVyc2lvbi4K
KyAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8QT46OmRpZ2l0cyA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPEI+OjpkaWdpdHMgJiYKKyAgICAg
IHJhbms8QT4oKSA8PSByYW5rPEI+KCk7Cit9OworCisvLyB1bnNpZ25lZF9iaXRzPE4+Ojp0eXBl
IHJldHVybnMgdGhlIHVuc2lnbmVkIGludCB0eXBlIHdpdGggdGhlIGluZGljYXRlZAorLy8gbnVt
YmVyIG9mIGJpdHMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4+CitzdHJ1Y3QgdW5zaWduZWRfYml0czsK
KwordGVtcGxhdGUgPD4KK3N0cnVjdCB1bnNpZ25lZF9iaXRzPDg+IHsKKyAgdXNpbmcgdHlwZSA9
IHVpbnQ4X3Q7Cit9OwordGVtcGxhdGUgPD4KK3N0cnVjdCB1bnNpZ25lZF9iaXRzPDE2PiB7Cisg
IHVzaW5nIHR5cGUgPSB1aW50MTZfdDsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IHVuc2lnbmVk
X2JpdHM8MzI+IHsKKyAgdXNpbmcgdHlwZSA9IHVpbnQzMl90OworfTsKK3RlbXBsYXRlIDw+Citz
dHJ1Y3QgdW5zaWduZWRfYml0czw2ND4geworICB1c2luZyB0eXBlID0gdWludDY0X3Q7Cit9Owor
CisjaWZkZWYgQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgKK3RlbXBsYXRlIDw+CitzdHJ1Y3Qg
dW5zaWduZWRfYml0czwxMjg+IHsKKyAgdXNpbmcgdHlwZSA9IF9fdWludDEyOF90OworfTsKKyNl
bmRpZgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK3N0cnVjdCBtYWtlX3Vuc2lnbmVk
X2JpdHMgeworICB1c2luZyB0eXBlID0gdHlwZW5hbWUgdW5zaWduZWRfYml0czxzdGQ6Om51bWVy
aWNfbGltaXRzPAorICAgICAgdHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPEludFR5cGU+Ojp0
eXBlPjo6ZGlnaXRzPjo6dHlwZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJu
YWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJO
QUxfVFJBSVRTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvdHJhaXRzX3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvdHJhaXRzX3Rlc3QuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE4NDQ4ODdkM2U0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0c190ZXN0LmNjCkBAIC0wLDAgKzEsMTI2IEBA
CisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL3RyYWl0cy5oIgorCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFj
ZSB7CisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6aXNfd2lkZW5pbmdfY29udmVydGli
bGU7CisKKy8vIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvU2VsZjxUMSwgVDIsIC4uLj4oKQorLy8K
Ky8vIEZvciBlYWNoIHR5cGUgVCwgY2hlY2tzOgorLy8gLSBUIElTIHdpZGVuaW5nLWNvbnZlcnRp
YmxlIHRvIGl0c2VsZi4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgQ2hlY2tXaWRl
bmluZ0NvbnZlcnRzVG9TZWxmKCkgeworICBzdGF0aWNfYXNzZXJ0KGlzX3dpZGVuaW5nX2NvbnZl
cnRpYmxlPFQsIFQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiVHlwZSBpcyBub3QgY29udmVy
dGlibGUgdG8gc2VsZiEiKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE5l
eHQsIHR5cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvU2VsZigp
IHsKKyAgQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG9TZWxmPFQ+KCk7CisgIENoZWNrV2lkZW5pbmdD
b252ZXJ0c1RvU2VsZjxOZXh0LCBBcmdzLi4uPigpOworfQorCisvLyBDaGVja05vdFdpZGVuaW5n
Q29udmVydGlibGVXaXRoU2lnbmVkPFQxLCBUMiwgLi4uPigpCisvLworLy8gRm9yIGVhY2ggdW5z
aWduZWQtdHlwZSBULCBjaGVja3MgdGhhdDoKKy8vIC0gVCBpcyBOT1Qgd2lkZW5pbmctY29udmVy
dGlibGUgdG8gU2lnbmVkKFQpCisvLyAtIFNpZ25lZChUKSBpcyBOT1Qgd2lkZW5pbmctY29udmVy
dGlibGUgdG8gVAorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBDaGVja05vdFdpZGVu
aW5nQ29udmVydGlibGVXaXRoU2lnbmVkKCkgeworICB1c2luZyBzaWduZWRfdCA9IHR5cGVuYW1l
IHN0ZDo6bWFrZV9zaWduZWQ8VD46OnR5cGU7CisKKyAgc3RhdGljX2Fzc2VydCghaXNfd2lkZW5p
bmdfY29udmVydGlibGU8VCwgc2lnbmVkX3Q+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiVW5z
aWduZWQgdHlwZSBpcyBjb252ZXJ0aWJsZSB0byBzYW1lLXNpemVkIHNpZ25lZC10eXBlISIpOwor
ICBzdGF0aWNfYXNzZXJ0KCFpc193aWRlbmluZ19jb252ZXJ0aWJsZTxzaWduZWRfdCwgVD46OnZh
bHVlLAorICAgICAgICAgICAgICAgICJTaWduZWQgdHlwZSBpcyBjb252ZXJ0aWJsZSB0byBzYW1l
LXNpemVkIHVuc2lnbmVkLXR5cGUhIik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBOZXh0LCB0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBDaGVja05vdFdpZGVuaW5nQ29udmVy
dGlibGVXaXRoU2lnbmVkKCkgeworICBDaGVja05vdFdpZGVuaW5nQ29udmVydGlibGVXaXRoU2ln
bmVkPFQ+KCk7CisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvU2VsZjxOZXh0LCBBcmdzLi4uPigp
OworfQorCisvLyBDaGVja1dpZGVuaW5nQ29udmVydHNUb0xhcmdlclR5cGU8VDEsIFQyLCAuLi4+
KCkKKy8vCisvLyBGb3IgZWFjaCBzdWNjZXNzaXZlIHVuc2lnbmVkLXR5cGVzIHtUaSwgVGkrMX0s
IGNoZWNrcyB0aGF0OgorLy8gLSBUaSBJUyB3aWRlbmluZy1jb252ZXJ0aWJsZSB0byBUaSsxCisv
LyAtIFRpIElTIHdpZGVuaW5nLWNvbnZlcnRpYmxlIHRvIFNpZ25lZChUaSsxKQorLy8gLSBTaWdu
ZWQoVGkpIGlzIE5PVCB3aWRlbmluZy1jb252ZXJ0aWJsZSB0byBUaQorLy8gLSBTaWduZWQoVGkp
IElTIHdpZGVuaW5nLWNvbnZlcnRpYmxlIHRvIFRpKzEKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBIaWdoZXI+Cit2b2lkIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvTGFyZ2VyVHlwZXMo
KSB7CisgIHVzaW5nIHNpZ25lZF90ID0gdHlwZW5hbWUgc3RkOjptYWtlX3NpZ25lZDxUPjo6dHlw
ZTsKKyAgdXNpbmcgaGlnaGVyX3QgPSBIaWdoZXI7CisgIHVzaW5nIHNpZ25lZF9oaWdoZXJfdCA9
IHR5cGVuYW1lIHN0ZDo6bWFrZV9zaWduZWQ8SGlnaGVyPjo6dHlwZTsKKworICBzdGF0aWNfYXNz
ZXJ0KGlzX3dpZGVuaW5nX2NvbnZlcnRpYmxlPFQsIGhpZ2hlcl90Pjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgIlR5cGUgbm90IGVtYmVkZGFibGUgaW50byBsYXJnZXIgdHlwZSEiKTsKKyAgc3Rh
dGljX2Fzc2VydChpc193aWRlbmluZ19jb252ZXJ0aWJsZTxULCBzaWduZWRfaGlnaGVyX3Q+Ojp2
YWx1ZSwKKyAgICAgICAgICAgICAgICAiVHlwZSBub3QgZW1iZWRkYWJsZSBpbnRvIGxhcmdlciBz
aWduZWQgdHlwZSEiKTsKKyAgc3RhdGljX2Fzc2VydCghaXNfd2lkZW5pbmdfY29udmVydGlibGU8
c2lnbmVkX3QsIGhpZ2hlcl90Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIlNpZ25lZCB0eXBl
IGlzIGVtYmVkZGFibGUgaW50byBsYXJnZXIgdW5zaWduZWQgdHlwZSEiKTsKKyAgc3RhdGljX2Fz
c2VydChpc193aWRlbmluZ19jb252ZXJ0aWJsZTxzaWduZWRfdCwgc2lnbmVkX2hpZ2hlcl90Pjo6
dmFsdWUsCisgICAgICAgICAgICAgICAgIlNpZ25lZCB0eXBlIG5vdCBlbWJlZGRhYmxlIGludG8g
bGFyZ2VyIHNpZ25lZCB0eXBlISIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgSGlnaGVyLCB0eXBlbmFtZSBOZXh0LCB0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBDaGVja1dp
ZGVuaW5nQ29udmVydHNUb0xhcmdlclR5cGVzKCkgeworICBDaGVja1dpZGVuaW5nQ29udmVydHNU
b0xhcmdlclR5cGVzPFQsIEhpZ2hlcj4oKTsKKyAgQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG9MYXJn
ZXJUeXBlczxIaWdoZXIsIE5leHQsIEFyZ3MuLi4+KCk7Cit9CisKKy8vIENoZWNrV2lkZW5pbmdD
b252ZXJ0c1RvPFQsIFUsIFtleHBlY3RdPgorLy8KKy8vIENoZWNrcyB0aGF0IFQgRE9FUyB3aWRl
bmluZy1jb252ZXJ0IHRvIFUuCisvLyBJZiAiZXhwZWN0IiBpcyBmYWxzZSwgdGhlbiBhc3NlcnRz
IHRoYXQgVCBkb2VzIE5PVCB3aWRlbmluZy1jb252ZXJ0IHRvIFUuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgYm9vbCBleHBlY3QgPSB0cnVlPgordm9pZCBDaGVja1dpZGVuaW5n
Q29udmVydHNUbygpIHsKKyAgc3RhdGljX2Fzc2VydChpc193aWRlbmluZ19jb252ZXJ0aWJsZTxU
LCBVPjo6dmFsdWUgPT0gZXhwZWN0LAorICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIHJlc3Vs
dCBmb3IgaXNfd2lkZW5pbmdfY29udmVydGlibGU8VCwgVT4hIik7Cit9CisKK1RFU1QoVHJhaXRz
VGVzdCwgSXNXaWRlbmluZ0NvbnZlcnRpYmxlVGVzdCkgeworICBjb25zdGV4cHIgYm9vbCBrSW52
YWxpZCA9IGZhbHNlOworCisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvU2VsZjwKKyAgICAgIHVp
bnQ4X3QsIHVpbnQxNl90LCB1aW50MzJfdCwgdWludDY0X3QsCisgICAgICBpbnQ4X3QsICBpbnQx
Nl90LCAgaW50MzJfdCwgIGludDY0X3QsCisgICAgICBmbG9hdCwgICBkb3VibGU+KCk7CisgIENo
ZWNrTm90V2lkZW5pbmdDb252ZXJ0aWJsZVdpdGhTaWduZWQ8CisgICAgICB1aW50OF90LCB1aW50
MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90PigpOworICBDaGVja1dpZGVuaW5nQ29udmVydHNUb0xh
cmdlclR5cGVzPAorICAgICAgdWludDhfdCwgdWludDE2X3QsIHVpbnQzMl90LCB1aW50NjRfdD4o
KTsKKworICBDaGVja1dpZGVuaW5nQ29udmVydHNUbzxmbG9hdCwgZG91YmxlPigpOworICBDaGVj
a1dpZGVuaW5nQ29udmVydHNUbzx1aW50MTZfdCwgZmxvYXQ+KCk7CisgIENoZWNrV2lkZW5pbmdD
b252ZXJ0c1RvPHVpbnQzMl90LCBkb3VibGU+KCk7CisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1Rv
PHVpbnQ2NF90LCBkb3VibGUsIGtJbnZhbGlkPigpOworICBDaGVja1dpZGVuaW5nQ29udmVydHNU
bzxkb3VibGUsIGZsb2F0LCBrSW52YWxpZD4oKTsKKworICBDaGVja1dpZGVuaW5nQ29udmVydHNU
bzxib29sLCBpbnQ+KCk7CisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvPGJvb2wsIGZsb2F0Pigp
OworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC91bmlmb3JtX2hlbHBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3VuaWZvcm1faGVscGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIxNjQ2NDg5NjQzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3VuaWZvcm1faGVscGVyLmgK
QEAgLTAsMCArMSwxNTAgQEAKKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfVU5JRk9STV9IRUxQRVJfSF8KKyNk
ZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfVU5JRk9STV9IRUxQRVJfSF8KKworI2luY2x1ZGUg
PGNtYXRoPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2lu
Y2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorCituYW1lc3BhY2UgYWJzbCB7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK2NsYXNzIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlPgorY2xhc3MgdW5pZm9ybV9yZWFsX2Rpc3Ry
aWJ1dGlvbjsKKworLy8gSW50ZXJ2YWwgdGFnIHR5cGVzIHdoaWNoIHNwZWNpZnkgd2hldGhlciB0
aGUgaW50ZXJ2YWwgaXMgb3BlbiBvciBjbG9zZWQKKy8vIG9uIGVpdGhlciBib3VuZGFyeS4KK25h
bWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworc3RydWN0IEludGVydmFsQ2xvc2VkQ2xvc2VkVCB7
fTsKK3N0cnVjdCBJbnRlcnZhbENsb3NlZE9wZW5UIHt9Oworc3RydWN0IEludGVydmFsT3BlbkNs
b3NlZFQge307CitzdHJ1Y3QgSW50ZXJ2YWxPcGVuT3BlblQge307Cit9ICAvLyBuYW1lc3BhY2Ug
cmFuZG9tX2ludGVybmFsCisKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBUaGUg
ZnVuY3Rpb25zCisvLyAgICB1bmlmb3JtX2xvd2VyX2JvdW5kKHRhZywgYSwgYikKKy8vIGFuZAor
Ly8gICAgdW5pZm9ybV91cHBlcl9ib3VuZCh0YWcsIGEsIGIpCisvLyBhcmUgdXNlZCBhcyBpbXBs
ZW1lbnRhdGlvbi1kZXRhaWxzIGZvciBhYnNsOjpVbmlmb3JtKCkuCisvLworLy8gQ29uY2VwdHVh
bGx5LAorLy8gICAgW2EsIGJdID09IFt1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsQ2xvc2Vk
Q2xvc2VkLCBhLCBiKSwKKy8vICAgICAgICAgICAgICAgdW5pZm9ybV91cHBlcl9ib3VuZChJbnRl
cnZhbENsb3NlZENsb3NlZCwgYSwgYildCisvLyAgICAoYSwgYikgPT0gW3VuaWZvcm1fbG93ZXJf
Ym91bmQoSW50ZXJ2YWxPcGVuT3BlbiwgYSwgYiksCisvLyAgICAgICAgICAgICAgIHVuaWZvcm1f
dXBwZXJfYm91bmQoSW50ZXJ2YWxPcGVuT3BlbiwgYSwgYildCisvLyAgICBbYSwgYikgPT0gW3Vu
aWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRPcGVuLCBhLCBiKSwKKy8vICAgICAgICAg
ICAgICAgdW5pZm9ybV91cHBlcl9ib3VuZChJbnRlcnZhbENsb3NlZE9wZW4sIGEsIGIpXQorLy8g
ICAgKGEsIGJdID09IFt1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsT3BlbkNsb3NlZCwgYSwg
YiksCisvLyAgICAgICAgICAgICAgIHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxPcGVuQ2xv
c2VkLCBhLCBiKV0KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSwgdHlwZW5hbWUgVGFn
PgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgYWJzbDo6Y29uanVuY3Rpb248Cisg
ICAgICAgIHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT4sCisgICAgICAgIGFic2w6OmRpc2p1bmN0
aW9uPHN0ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsT3BlbkNsb3NlZFQ+LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbE9wZW5PcGVuVD4+Pjo6dmFs
dWUsCisgICAgSW50VHlwZT4KK3VuaWZvcm1fbG93ZXJfYm91bmQoVGFnLCBJbnRUeXBlIGEsIElu
dFR5cGUpIHsKKyAgcmV0dXJuIGEgKyAxOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXRU
eXBlLCB0eXBlbmFtZSBUYWc+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICBhYnNs
Ojpjb25qdW5jdGlvbjwKKyAgICAgICAgc3RkOjppc19mbG9hdGluZ19wb2ludDxGbG9hdFR5cGU+
LAorICAgICAgICBhYnNsOjpkaXNqdW5jdGlvbjxzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbE9w
ZW5DbG9zZWRUPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPFRhZywg
SW50ZXJ2YWxPcGVuT3BlblQ+Pj46OnZhbHVlLAorICAgIEZsb2F0VHlwZT4KK3VuaWZvcm1fbG93
ZXJfYm91bmQoVGFnLCBGbG9hdFR5cGUgYSwgRmxvYXRUeXBlIGIpIHsKKyAgcmV0dXJuIHN0ZDo6
bmV4dGFmdGVyKGEsIGIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTnVtVHlwZSwgdHlwZW5h
bWUgVGFnPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgYWJzbDo6ZGlzanVuY3Rp
b248c3RkOjppc19zYW1lPFRhZywgSW50ZXJ2YWxDbG9zZWRDbG9zZWRUPiwKKyAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbENsb3NlZE9wZW5UPj46OnZhbHVl
LAorICAgIE51bVR5cGU+Cit1bmlmb3JtX2xvd2VyX2JvdW5kKFRhZywgTnVtVHlwZSBhLCBOdW1U
eXBlKSB7CisgIHJldHVybiBhOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSwgdHlw
ZW5hbWUgVGFnPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgYWJzbDo6Y29uanVu
Y3Rpb248CisgICAgICAgIHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT4sCisgICAgICAgIGFic2w6
OmRpc2p1bmN0aW9uPHN0ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsQ2xvc2VkT3BlblQ+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbE9wZW5PcGVu
VD4+Pjo6dmFsdWUsCisgICAgSW50VHlwZT4KK3VuaWZvcm1fdXBwZXJfYm91bmQoVGFnLCBJbnRU
eXBlLCBJbnRUeXBlIGIpIHsKKyAgcmV0dXJuIGIgLSAxOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRmxvYXRUeXBlLCB0eXBlbmFtZSBUYWc+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwK
KyAgICBhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAgc3RkOjppc19mbG9hdGluZ19wb2ludDxG
bG9hdFR5cGU+LAorICAgICAgICBhYnNsOjpkaXNqdW5jdGlvbjxzdGQ6OmlzX3NhbWU8VGFnLCBJ
bnRlcnZhbENsb3NlZE9wZW5UPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19z
YW1lPFRhZywgSW50ZXJ2YWxPcGVuT3BlblQ+Pj46OnZhbHVlLAorICAgIEZsb2F0VHlwZT4KK3Vu
aWZvcm1fdXBwZXJfYm91bmQoVGFnLCBGbG9hdFR5cGUsIEZsb2F0VHlwZSBiKSB7CisgIHJldHVy
biBiOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSwgdHlwZW5hbWUgVGFnPgordHlw
ZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAg
IHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT4sCisgICAgICAgIGFic2w6OmRpc2p1bmN0aW9uPHN0
ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsQ2xvc2VkQ2xvc2VkVD4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsT3BlbkNsb3NlZFQ+Pj46OnZhbHVl
LAorICAgIEludFR5cGU+Cit1bmlmb3JtX3VwcGVyX2JvdW5kKFRhZywgSW50VHlwZSwgSW50VHlw
ZSBiKSB7CisgIHJldHVybiBiOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXRUeXBlLCB0
eXBlbmFtZSBUYWc+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICBhYnNsOjpjb25q
dW5jdGlvbjwKKyAgICAgICAgc3RkOjppc19mbG9hdGluZ19wb2ludDxGbG9hdFR5cGU+LAorICAg
ICAgICBhYnNsOjpkaXNqdW5jdGlvbjxzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbENsb3NlZENs
b3NlZFQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VGFnLCBJbnRl
cnZhbE9wZW5DbG9zZWRUPj4+Ojp2YWx1ZSwKKyAgICBGbG9hdFR5cGU+Cit1bmlmb3JtX3VwcGVy
X2JvdW5kKFRhZywgRmxvYXRUeXBlLCBGbG9hdFR5cGUgYikgeworICByZXR1cm4gc3RkOjpuZXh0
YWZ0ZXIoYiwgKHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6bWF4KSgpKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE51bVR5cGU+Cit1c2luZyBVbmlmb3JtRGlzdHJpYnV0aW9uID0K
KyAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfaW50ZWdyYWw8TnVtVHlwZT46
OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uPE51bVR5cGU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxOdW1UeXBlPj46OnR5cGU7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUYWdUeXBlLCB0eXBlbmFtZSBOdW1UeXBlPgorc3RydWN0IFVuaWZvcm1EaXN0
cmlidXRpb25XcmFwcGVyIDogcHVibGljIFVuaWZvcm1EaXN0cmlidXRpb248TnVtVHlwZT4gewor
ICBleHBsaWNpdCBVbmlmb3JtRGlzdHJpYnV0aW9uV3JhcHBlcihOdW1UeXBlIGxvLCBOdW1UeXBl
IGhpKQorICAgICAgOiBVbmlmb3JtRGlzdHJpYnV0aW9uPE51bVR5cGU+KAorICAgICAgICAgICAg
dW5pZm9ybV9sb3dlcl9ib3VuZDxOdW1UeXBlPihUYWdUeXBle30sIGxvLCBoaSksCisgICAgICAg
ICAgICB1bmlmb3JtX3VwcGVyX2JvdW5kPE51bVR5cGU+KFRhZ1R5cGV7fSwgbG8sIGhpKSkge30K
K307CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfVU5JRk9STV9IRUxQRVJfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9sb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYzQzNDE2ZWU1NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9sb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgKQEAgLTAsMCAr
MSwyNTAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZu
ZGVmIEFCU0xfUkFORE9NX0xPR19VTklGT1JNX0lOVF9ESVNUUklCVVRJT05fSF8KKyNkZWZpbmUg
QUJTTF9SQU5ET01fTE9HX1VOSUZPUk1fSU5UX0RJU1RSSUJVVElPTl9IXworCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVk
ZSA8aXN0cmVhbT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8b3N0cmVhbT4KKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3Ry
aWJ1dGlvbl9pbXBsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1hdGgu
aCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5o
IgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0cy5oIgorI2luY2x1ZGUgImFi
c2wvcmFuZG9tL3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oIgorCituYW1lc3BhY2UgYWJzbCB7
CisKKy8vIGxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb246CisvLworLy8gUmV0dXJucyBhIHJh
bmRvbSB2YXJpYXRlIFIgaW4gcmFuZ2UgW21pbiwgbWF4XSBzdWNoIHRoYXQKKy8vIGZsb29yKGxv
ZyhSLW1pbiwgYmFzZSkpIGlzIHVuaWZvcm1seSBkaXN0cmlidXRlZC4KKy8vIFdlIGVuc3VyZSB1
bmlmb3JtaXR5IGJ5IGRpc2NyZXRpemF0aW9uIHVzaW5nIHRoZQorLy8gYm91bmRhcnkgc2V0cyBb
MCwgMSwgYmFzZSwgYmFzZSAqIGJhc2UsIC4uLiBtaW4oYmFzZSpuLCBtYXgpXQorLy8KK3RlbXBs
YXRlIDx0eXBlbmFtZSBJbnRUeXBlID0gaW50PgorY2xhc3MgbG9nX3VuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbiB7CisgcHJpdmF0ZToKKyAgdXNpbmcgdW5zaWduZWRfdHlwZSA9CisgICAgICB0eXBl
bmFtZSByYW5kb21faW50ZXJuYWw6Om1ha2VfdW5zaWduZWRfYml0czxJbnRUeXBlPjo6dHlwZTsK
KworIHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSBJbnRUeXBlOworCisgIGNsYXNzIHBh
cmFtX3R5cGUgeworICAgcHVibGljOgorICAgIHVzaW5nIGRpc3RyaWJ1dGlvbl90eXBlID0gbG9n
X3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjsKKworICAgIGV4cGxpY2l0IHBhcmFtX3R5cGUoCisg
ICAgICAgIHJlc3VsdF90eXBlIG1pbiA9IDAsCisgICAgICAgIHJlc3VsdF90eXBlIG1heCA9IChz
dGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpLAorICAgICAgICByZXN1bHRf
dHlwZSBiYXNlID0gMikKKyAgICAgICAgOiBtaW5fKG1pbiksCisgICAgICAgICAgbWF4XyhtYXgp
LAorICAgICAgICAgIGJhc2VfKGJhc2UpLAorICAgICAgICAgIHJhbmdlXyhzdGF0aWNfY2FzdDx1
bnNpZ25lZF90eXBlPihtYXhfKSAtCisgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkX3R5cGU+KG1pbl8pKSwKKyAgICAgICAgICBsb2dfcmFuZ2VfKDApIHsKKyAgICAgIGFzc2Vy
dChtYXhfID49IG1pbl8pOworICAgICAgYXNzZXJ0KGJhc2VfID4gMSk7CisKKyAgICAgIGlmIChi
YXNlXyA9PSAyKSB7CisgICAgICAgIC8vIERldGVybWluZSB3aGVyZSB0aGUgZmlyc3Qgc2V0IGJp
dCBpcyBvbiByYW5nZSgpLCBnaXZpbmcgYSBsb2cyKHJhbmdlKQorICAgICAgICAvLyB2YWx1ZSB3
aGljaCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYm91bmRzLgorICAgICAgICBsb2dfcmFuZ2Vf
ID0gKHN0ZDo6bWluKShyYW5kb21faW50ZXJuYWw6OkxlYWRpbmdTZXRCaXQocmFuZ2UoKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWRfdHlwZT46OmRpZ2l0cyk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBOT1RFOiBDb21w
dXRpbmcgdGhlIGxvZ04oeCkgaW50cm9kdWNlcyBlcnJvciBmcm9tIDIgc291cmNlczoKKyAgICAg
ICAgLy8gMS4gQ29udmVyc2lvbiBvZiBpbnQgdG8gZG91YmxlIGxvc2VzIHByZWNpc2lvbiBmb3Ig
dmFsdWVzID49CisgICAgICAgIC8vIDJeNTMsIHdoaWNoIG1heSBjYXVzZSBzb21lIGxvZygpIGNv
bXB1dGF0aW9ucyB0byBvcGVyYXRlIG9uCisgICAgICAgIC8vIGRpZmZlcmVudCB2YWx1ZXMuCisg
ICAgICAgIC8vIDIuIFRoZSBlcnJvciBpbnRyb2R1Y2VkIGJ5IHRoZSBkaXZpc2lvbiB3aWxsIGNh
dXNlIHRoZSByZXN1bHQKKyAgICAgICAgLy8gdG8gZGlmZmVyIGZyb20gdGhlIGV4cGVjdGVkIHZh
bHVlLgorICAgICAgICAvLworICAgICAgICAvLyBUaHVzIGEgcmVzdWx0IHdoaWNoIHNob3VsZCBl
cXVhbCBLIG1heSBlcXVhbCBLICsvLSBlcHNpbG9uLAorICAgICAgICAvLyB3aGljaCBjYW4gZWxp
bWluYXRlIHNvbWUgdmFsdWVzIGRlcGVuZGluZyBvbiB3aGVyZSB0aGUgYm91bmRzIGZhbGwuCisg
ICAgICAgIGNvbnN0IGRvdWJsZSBpbnZfbG9nX2Jhc2UgPSAxLjAgLyBzdGQ6OmxvZyhiYXNlXyk7
CisgICAgICAgIGNvbnN0IGRvdWJsZSBsb2dfcmFuZ2UgPSBzdGQ6OmxvZyhzdGF0aWNfY2FzdDxk
b3VibGU+KHJhbmdlKCkpICsgMC41KTsKKyAgICAgICAgbG9nX3JhbmdlXyA9IHN0YXRpY19jYXN0
PGludD4oc3RkOjpjZWlsKGludl9sb2dfYmFzZSAqIGxvZ19yYW5nZSkpOworICAgICAgfQorICAg
IH0KKworICAgIHJlc3VsdF90eXBlKG1pbikoKSBjb25zdCB7IHJldHVybiBtaW5fOyB9CisgICAg
cmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsgcmV0dXJuIG1heF87IH0KKyAgICByZXN1bHRfdHlw
ZSBiYXNlKCkgY29uc3QgeyByZXR1cm4gYmFzZV87IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJh
dG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAg
cmV0dXJuIGEubWluXyA9PSBiLm1pbl8gJiYgYS5tYXhfID09IGIubWF4XyAmJiBhLmJhc2VfID09
IGIuYmFzZV87CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXJh
bV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICByZXR1cm4gIShhID09IGIp
OworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgbG9nX3VuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbjsKKworICAgIGludCBsb2dfcmFuZ2UoKSBjb25zdCB7IHJldHVybiBsb2df
cmFuZ2VfOyB9CisgICAgdW5zaWduZWRfdHlwZSByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdl
XzsgfQorCisgICAgcmVzdWx0X3R5cGUgbWluXzsKKyAgICByZXN1bHRfdHlwZSBtYXhfOworICAg
IHJlc3VsdF90eXBlIGJhc2VfOworICAgIHVuc2lnbmVkX3R5cGUgcmFuZ2VfOyAgLy8gbWF4IC0g
bWluCisgICAgaW50IGxvZ19yYW5nZV87ICAgICAgICAvLyBjZWlsKGxvZ04ocmFuZ2VfKSkKKwor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxJbnRUeXBlPjo6dmFsdWUsCisgICAg
ICAgICAgICAgICAgICAiQ2xhc3MtdGVtcGxhdGUgYWJzbDo6bG9nX3VuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbjw+IG11c3QgYmUgIgorICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcml6ZWQgdXNp
bmcgYW4gaW50ZWdyYWwgdHlwZS4iKTsKKyAgfTsKKworICBsb2dfdW5pZm9ybV9pbnRfZGlzdHJp
YnV0aW9uKCkgOiBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uKDApIHt9CisKKyAgZXhwbGlj
aXQgbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbigKKyAgICAgIHJlc3VsdF90eXBlIG1pbiwK
KyAgICAgIHJlc3VsdF90eXBlIG1heCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBl
Pjo6bWF4KSgpLAorICAgICAgcmVzdWx0X3R5cGUgYmFzZSA9IDIpCisgICAgICA6IHBhcmFtXyht
aW4sIG1heCwgYmFzZSkge30KKworICBleHBsaWNpdCBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0
aW9uKGNvbnN0IHBhcmFtX3R5cGUmIHApIDogcGFyYW1fKHApIHt9CisKKyAgdm9pZCByZXNldCgp
IHt9CisKKyAgLy8gZ2VuZXJhdGluZyBmdW5jdGlvbnMKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVS
Qkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVVJCRyYgZykgeyAgLy8gTk9MSU5UKHJ1bnRp
bWUvcmVmZXJlbmNlcykKKyAgICByZXR1cm4gKCp0aGlzKShnLCBwYXJhbV8pOworICB9CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVVJCRyYg
ZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcGFyYW1fdHlwZSYgcCkgeworICAgIHJldHVybiAocC5taW4pKCkgKyBHZW5lcmF0
ZShnLCBwKTsKKyAgfQorCisgIHJlc3VsdF90eXBlKG1pbikoKSBjb25zdCB7IHJldHVybiAocGFy
YW1fLm1pbikoKTsgfQorICByZXN1bHRfdHlwZShtYXgpKCkgY29uc3QgeyByZXR1cm4gKHBhcmFt
Xy5tYXgpKCk7IH0KKyAgcmVzdWx0X3R5cGUgYmFzZSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXy5i
YXNlKCk7IH0KKworICBwYXJhbV90eXBlIHBhcmFtKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fOyB9
CisgIHZvaWQgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgcCkgeyBwYXJhbV8gPSBwOyB9CisKKyAg
ZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9u
JiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvZ191bmlmb3JtX2ludF9kaXN0
cmlidXRpb24mIGIpIHsKKyAgICByZXR1cm4gYS5wYXJhbV8gPT0gYi5wYXJhbV87CisgIH0KKyAg
ZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9u
JiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvZ191bmlmb3JtX2ludF9kaXN0
cmlidXRpb24mIGIpIHsKKyAgICByZXR1cm4gYS5wYXJhbV8gIT0gYi5wYXJhbV87CisgIH0KKwor
IHByaXZhdGU6CisgIC8vIFJldHVybnMgYSBsb2ctdW5pZm9ybSB2YXJpYXRlIGluIHRoZSByYW5n
ZSBbMCwgcC5yYW5nZSgpXS4gVGhlIGNhbGxlcgorICAvLyBzaG91bGQgYWRkIG1pbigpIHRvIHNo
aWZ0IHRoZSByZXN1bHQgdG8gdGhlIGNvcnJlY3QgcmFuZ2UuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVUk5HPgorICB1bnNpZ25lZF90eXBlIEdlbmVyYXRlKFVSTkcmIGcsICAvLyBOT0xJTlQocnVu
dGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtX3R5
cGUmIHApOworCisgIHBhcmFtX3R5cGUgcGFyYW1fOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IEludFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIGxvZ191bmlmb3Jt
X2ludF9kaXN0cmlidXRpb248SW50VHlwZT46OnVuc2lnbmVkX3R5cGUKK2xvZ191bmlmb3JtX2lu
dF9kaXN0cmlidXRpb248SW50VHlwZT46OkdlbmVyYXRlKAorICAgIFVSQkcmIGcsICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0IHBhcmFtX3R5cGUmIHApIHsKKyAgLy8g
c2FtcGxlIGUgb3ZlciBbMCwgbG9nX3JhbmdlXS4gTWFwIHRoZSByZXN1bHRzIG9mIGUgdG8gdGhp
czoKKyAgLy8gMCA9PiAwCisgIC8vIDEgPT4gWzEsIGItMV0KKyAgLy8gMiA9PiBbYiwgKGJeMikt
MV0KKyAgLy8gbiA9PiBbYl4obi0xKS4uKGJebiktMV0KKyAgY29uc3QgaW50IGUgPSBhYnNsOjp1
bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50PigwLCBwLmxvZ19yYW5nZSgpKShnKTsKKyAgaWYg
KGUgPT0gMCkgeworICAgIHJldHVybiAwOworICB9CisgIGNvbnN0IGludCBkID0gZSAtIDE7CisK
KyAgdW5zaWduZWRfdHlwZSBiYXNlX2UsIHRvcF9lOworICBpZiAocC5iYXNlKCkgPT0gMikgewor
ICAgIGJhc2VfZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkX3R5cGU+KDEpIDw8IGQ7CisKKyAgICB0
b3BfZSA9IChlID49IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWRfdHlwZT46OmRpZ2l0cykK
KyAgICAgICAgICAgICAgICA/IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkX3R5cGU+Ojpt
YXgpKCkKKyAgICAgICAgICAgICAgICA6IChzdGF0aWNfY2FzdDx1bnNpZ25lZF90eXBlPigxKSA8
PCBlKSAtIDE7CisgIH0gZWxzZSB7CisgICAgY29uc3QgZG91YmxlIHIgPSBzdGQ6OnBvdyhwLmJh
c2UoKSwgZCk7CisgICAgY29uc3QgZG91YmxlIHMgPSAociAqIHAuYmFzZSgpKSAtIDEuMDsKKwor
ICAgIGJhc2VfZSA9IChyID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWRfdHlwZT46Om1h
eCkoKSkKKyAgICAgICAgICAgICAgICAgPyAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZF90
eXBlPjo6bWF4KSgpCisgICAgICAgICAgICAgICAgIDogc3RhdGljX2Nhc3Q8dW5zaWduZWRfdHlw
ZT4ocik7CisKKyAgICB0b3BfZSA9IChzID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWRf
dHlwZT46Om1heCkoKSkKKyAgICAgICAgICAgICAgICA/IChzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkX3R5cGU+OjptYXgpKCkKKyAgICAgICAgICAgICAgICA6IHN0YXRpY19jYXN0PHVuc2ln
bmVkX3R5cGU+KHMpOworICB9CisKKyAgY29uc3QgdW5zaWduZWRfdHlwZSBsbyA9IChiYXNlX2Ug
Pj0gcC5yYW5nZSgpKSA/IHAucmFuZ2UoKSA6IGJhc2VfZTsKKyAgY29uc3QgdW5zaWduZWRfdHlw
ZSBoaSA9ICh0b3BfZSA+PSBwLnJhbmdlKCkpID8gcC5yYW5nZSgpIDogdG9wX2U7CisKKyAgLy8g
Y2hvb3NlIHVuaWZvcm1seSBvdmVyIFtsbywgaGldCisgIHJldHVybiBhYnNsOjp1bmlmb3JtX2lu
dF9kaXN0cmlidXRpb248cmVzdWx0X3R5cGU+KGxvLCBoaSkoZyk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBJbnRUeXBlPgorc3RkOjpi
YXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNf
b3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2Vz
KQorICAgIGNvbnN0IGxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248SW50VHlwZT4mIHgpIHsK
KyAgdXNpbmcgc3RyZWFtX3R5cGUgPQorICAgICAgdHlwZW5hbWUgcmFuZG9tX2ludGVybmFsOjpz
dHJlYW1fZm9ybWF0X3R5cGU8SW50VHlwZT46OnR5cGU7CisgIGF1dG8gc2F2ZXIgPSByYW5kb21f
aW50ZXJuYWw6Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZlcihvcyk7CisgIG9zIDw8IHN0YXRpY19j
YXN0PHN0cmVhbV90eXBlPigoeC5taW4pKCkpIDw8IG9zLmZpbGwoKQorICAgICA8PCBzdGF0aWNf
Y2FzdDxzdHJlYW1fdHlwZT4oKHgubWF4KSgpKSA8PCBvcy5maWxsKCkKKyAgICAgPDwgc3RhdGlj
X2Nhc3Q8c3RyZWFtX3R5cGU+KHguYmFzZSgpKTsKKyAgcmV0dXJuIG9zOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgSW50VHlwZT4KK3N0
ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0b3I+PigKKyAgICBzdGQ6OmJh
c2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzLCAgICAgICAvLyBOT0xJTlQocnVudGltZS9y
ZWZlcmVuY2VzKQorICAgIGxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248SW50VHlwZT4mIHgp
IHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgIHVzaW5nIHBhcmFtX3R5cGUgPSB0
eXBlbmFtZSBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBl
OworICB1c2luZyByZXN1bHRfdHlwZSA9CisgICAgICB0eXBlbmFtZSBsb2dfdW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uPEludFR5cGU+OjpyZXN1bHRfdHlwZTsKKyAgdXNpbmcgc3RyZWFtX3R5cGUg
PQorICAgICAgdHlwZW5hbWUgcmFuZG9tX2ludGVybmFsOjpzdHJlYW1fZm9ybWF0X3R5cGU8SW50
VHlwZT46OnR5cGU7CisKKyAgc3RyZWFtX3R5cGUgbWluOworICBzdHJlYW1fdHlwZSBtYXg7Cisg
IHN0cmVhbV90eXBlIGJhc2U7CisKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFr
ZV9pc3RyZWFtX3N0YXRlX3NhdmVyKGlzKTsKKyAgaXMgPj4gbWluID4+IG1heCA+PiBiYXNlOwor
ICBpZiAoIWlzLmZhaWwoKSkgeworICAgIHgucGFyYW0ocGFyYW1fdHlwZShzdGF0aWNfY2FzdDxy
ZXN1bHRfdHlwZT4obWluKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cmVz
dWx0X3R5cGU+KG1heCksCisgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHJlc3Vs
dF90eXBlPihiYXNlKSkpOworICB9CisgIHJldHVybiBpczsKK30KKworfSAgLy8gbmFtZXNwYWNl
IGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9MT0dfVU5JRk9STV9JTlRfRElTVFJJQlVU
SU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1
dGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2xvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb25f
dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGZmNGMzMmQ5
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbl90ZXN0LmNjCkBAIC0wLDAgKzEsMjc3IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2xvZ191bmlmb3JtX2lu
dF9kaXN0cmlidXRpb24uaCIKKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGlu
dD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3N0
cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAi
Z21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wv
YmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVy
bmFsL2NoaV9zcXVhcmUuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmli
dXRpb25fdGVzdF91dGlsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VxdWVu
Y2VfdXJiZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3JhbmRvbS5oIgorI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQu
aCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2UuaCIKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3Mvc3RyaXAuaCIKKworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIElu
dFR5cGU+CitjbGFzcyBMb2dVbmlmb3JtSW50RGlzdHJpYnV0aW9uVHlwZVRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHt9OworCit1c2luZyBJbnRUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8
aW50OF90LCBpbnQxNl90LCBpbnQzMl90LCBpbnQ2NF90LCAgLy8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90LCB1aW50MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90PjsK
K1RZUEVEX1RFU1RfQ0FTRShMb2dVbmlmb3JtSW50RGlzdHJpYnV0aW9uVHlwZVRlc3QsIEludFR5
cGVzKTsKKworVFlQRURfVEVTVChMb2dVbmlmb3JtSW50RGlzdHJpYnV0aW9uVHlwZVRlc3QsIFNl
cmlhbGl6ZVRlc3QpIHsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9CisgICAgICB0eXBlbmFtZSBhYnNs
Ojpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7Cisg
IHVzaW5nIExpbWl0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjsKKworICBjb25z
dGV4cHIgaW50IGtDb3VudCA9IDEwMDA7CisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdlbjsKKyAg
Zm9yIChjb25zdCBhdXRvJiBwYXJhbSA6IHsKKyAgICAgICAgICAgcGFyYW1fdHlwZSgwLCAxKSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgIHBhcmFtX3R5cGUoMCwg
MiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAgICBwYXJhbV90eXBl
KDAsIDIsIDEwKSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgcGFyYW1f
dHlwZSg5LCAzMiwgNCksICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgIHBh
cmFtX3R5cGUoMSwgMTAxLCAxMCksICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAg
ICBwYXJhbV90eXBlKDEsIExpbWl0czo6bWF4KCkgLyAyKSwgICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgcGFyYW1fdHlwZSgwLCBMaW1pdHM6Om1heCgpIC0gMSksICAgICAgICAgICAgIC8vCisg
ICAgICAgICAgIHBhcmFtX3R5cGUoMCwgTGltaXRzOjptYXgoKSwgMiksICAgICAgICAgICAgICAv
LworICAgICAgICAgICBwYXJhbV90eXBlKDAsIExpbWl0czo6bWF4KCksIDEwKSwgICAgICAgICAg
ICAgLy8KKyAgICAgICAgICAgcGFyYW1fdHlwZShMaW1pdHM6Om1pbigpLCAwKSwgICAgICAgICAg
ICAgICAgIC8vCisgICAgICAgICAgIHBhcmFtX3R5cGUoTGltaXRzOjpsb3dlc3QoKSwgTGltaXRz
OjptYXgoKSksICAvLworICAgICAgICAgICBwYXJhbV90eXBlKExpbWl0czo6bWluKCksIExpbWl0
czo6bWF4KCkpLCAgICAgLy8KKyAgICAgICB9KSB7CisgICAgLy8gVmFsaWRhdGUgcGFyYW1ldGVy
cy4KKyAgICBjb25zdCBhdXRvIG1pbiA9IHBhcmFtLm1pbigpOworICAgIGNvbnN0IGF1dG8gbWF4
ID0gcGFyYW0ubWF4KCk7CisgICAgY29uc3QgYXV0byBiYXNlID0gcGFyYW0uYmFzZSgpOworICAg
IGFic2w6OmxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBiZWZvcmUobWlu
LCBtYXgsIGJhc2UpOworICAgIEVYUEVDVF9FUShiZWZvcmUubWluKCksIHBhcmFtLm1pbigpKTsK
KyAgICBFWFBFQ1RfRVEoYmVmb3JlLm1heCgpLCBwYXJhbS5tYXgoKSk7CisgICAgRVhQRUNUX0VR
KGJlZm9yZS5iYXNlKCksIHBhcmFtLmJhc2UoKSk7CisKKyAgICB7CisgICAgICBhYnNsOjpsb2df
dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gdmlhX3BhcmFtKHBhcmFtKTsKKyAg
ICAgIEVYUEVDVF9FUSh2aWFfcGFyYW0sIGJlZm9yZSk7CisgICAgfQorCisgICAgLy8gVmFsaWRh
dGUgc3RyZWFtIHNlcmlhbGl6YXRpb24uCisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgICAg
c3MgPDwgYmVmb3JlOworCisgICAgYWJzbDo6bG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxU
eXBlUGFyYW0+IGFmdGVyKDMsIDYsIDE3KTsKKworICAgIEVYUEVDVF9ORShiZWZvcmUubWF4KCks
IGFmdGVyLm1heCgpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLmJhc2UoKSwgYWZ0ZXIuYmFzZSgp
KTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLnBhcmFtKCksIGFmdGVyLnBhcmFtKCkpOworICAgIEVY
UEVDVF9ORShiZWZvcmUsIGFmdGVyKTsKKworICAgIHNzID4+IGFmdGVyOworCisgICAgRVhQRUNU
X0VRKGJlZm9yZS5taW4oKSwgYWZ0ZXIubWluKCkpOworICAgIEVYUEVDVF9FUShiZWZvcmUubWF4
KCksIGFmdGVyLm1heCgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLmJhc2UoKSwgYWZ0ZXIuYmFz
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLnBhcmFtKCksIGFmdGVyLnBhcmFtKCkpOworICAg
IEVYUEVDVF9FUShiZWZvcmUsIGFmdGVyKTsKKworICAgIC8vIFNtb2tlIHRlc3QuCisgICAgYXV0
byBzYW1wbGVfbWluID0gYWZ0ZXIubWF4KCk7CisgICAgYXV0byBzYW1wbGVfbWF4ID0gYWZ0ZXIu
bWluKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQ291bnQ7IGkrKykgeworICAgICAgYXV0
byBzYW1wbGUgPSBhZnRlcihnZW4pOworICAgICAgRVhQRUNUX0dFKHNhbXBsZSwgYWZ0ZXIubWlu
KCkpOworICAgICAgRVhQRUNUX0xFKHNhbXBsZSwgYWZ0ZXIubWF4KCkpOworICAgICAgaWYgKHNh
bXBsZSA+IHNhbXBsZV9tYXgpIHNhbXBsZV9tYXggPSBzYW1wbGU7CisgICAgICBpZiAoc2FtcGxl
IDwgc2FtcGxlX21pbikgc2FtcGxlX21pbiA9IHNhbXBsZTsKKyAgICB9CisgICAgQUJTTF9JTlRF
Uk5BTF9MT0coSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTdHJDYXQoIlJhbmdl
OiAiLCArc2FtcGxlX21pbiwgIiwgIiwgK3NhbXBsZV9tYXgpKTsKKyAgfQorfQorCit1c2luZyBs
b2dfdW5pZm9ybV9pMzIgPSBhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDMy
X3Q+OworCitjbGFzcyBMb2dVbmlmb3JtSW50Q2hpU3F1YXJlZFRlc3QKKyAgICA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGxvZ191bmlmb3JtX2kzMjo6cGFyYW1fdHlwZT4geworIHB1
YmxpYzoKKyAgLy8gVGhlIENoaVNxdWFyZWRUZXN0SW1wbCBwcm92aWRlcyBhIGNoaS1zcXVhcmVk
IGdvb2RuZXNzIG9mIGZpdCB0ZXN0IGZvcgorICAvLyBkYXRhIGdlbmVyYXRlZCBieSB0aGUgbG9n
LXVuaWZvcm0taW50IGRpc3RyaWJ1dGlvbi4KKyAgZG91YmxlIENoaVNxdWFyZWRUZXN0SW1wbCgp
OworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZ187Cit9OworCitkb3VibGUgTG9nVW5pZm9y
bUludENoaVNxdWFyZWRUZXN0OjpDaGlTcXVhcmVkVGVzdEltcGwoKSB7CisgIHVzaW5nIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6a0NoaVNxdWFyZWQ7CisKKyAgY29uc3QgYXV0byYgcGFyYW0gPSBH
ZXRQYXJhbSgpOworCisgIC8vIENoZWNrIHRoZSBkaXN0cmlidXRpb24gb2YgTD1sb2cobG9nX3Vu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbiwgYmFzZSksCisgIC8vIGV4cGVjdGluZyB0aGF0IEwgaXMg
cm91Z2hseSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQsIHRoYXQgaXM6CisgIC8vCisgIC8vICAgUFtM
PTBdIH49IFBbTD0xXSB+PSAuLi4gfj0gUFtMPWxvZyhtYXgpXQorICAvLworICAvLyBGb3IgYSB0
b3RhbCBvZiBYIGVudHJpZXMsIGVhY2ggYnVja2V0IHNob3VsZCBjb250YWluIHNvbWUgbnVtYmVy
IG9mIHNhbXBsZXMKKyAgLy8gaW4gdGhlIGludGVydmFsIFtYL2sgLSBhLCBYL2sgKyBhXS4KKyAg
Ly8KKyAgLy8gV2hlcmUgYGFgIGlzIGFwcHJveGltYXRlbHkgc3FydChYL2spLiBUaGlzIGlzIHZh
bGlkYXRlZCBieSBidWNrZXRpbmcKKyAgLy8gYWNjb3JkaW5nIHRvIHRoZSBsb2cgZnVuY3Rpb24g
YW5kIHVzaW5nIGEgY2hpLXNxdWFyZWQgdGVzdCBmb3IgdW5pZm9ybWl0eS4KKworICBjb25zdCBi
b29sIGlzXzIgPSAocGFyYW0uYmFzZSgpID09IDIpOworICBjb25zdCBkb3VibGUgYmFzZV9sb2cg
PSAxLjAgLyBzdGQ6OmxvZyhwYXJhbS5iYXNlKCkpOworICBjb25zdCBhdXRvIGJ1Y2tldF9pbmRl
eCA9IFtiYXNlX2xvZywgaXNfMiwgJnBhcmFtXShpbnQzMl90IHgpIHsKKyAgICB1aW50NjRfdCB5
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHgpIC0gcGFyYW0ubWluKCk7CisgICAgcmV0dXJuICh5
ID09IDApID8gMAorICAgICAgICAgICAgICAgICAgICA6IGlzXzIgPyBzdGF0aWNfY2FzdDxpbnQ+
KDEgKyBzdGQ6OmxvZzIoeSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0YXRpY19j
YXN0PGludD4oMSArIHN0ZDo6bG9nKHkpICogYmFzZV9sb2cpOworICB9OworICBjb25zdCBpbnQg
bWF4X2J1Y2tldCA9IGJ1Y2tldF9pbmRleChwYXJhbS5tYXgoKSk7ICAvLyBpbmNsdXNpdmUKKyAg
Y29uc3Qgc2l6ZV90IHRyaWFscyA9IDE1ICsgKG1heF9idWNrZXQgKyAxKSAqIDEwOworCisgIGxv
Z191bmlmb3JtX2kzMiBkaXN0KHBhcmFtKTsKKworICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiBidWNr
ZXRzKG1heF9idWNrZXQgKyAxKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmlhbHM7ICsr
aSkgeworICAgIGNvbnN0IGF1dG8gc2FtcGxlID0gZGlzdChybmdfKTsKKyAgICAvLyBDaGVjayB0
aGUgYm91bmRzLgorICAgIEFCU0xfQVNTRVJUKHNhbXBsZSA8PSBkaXN0Lm1heCgpKTsKKyAgICBB
QlNMX0FTU0VSVChzYW1wbGUgPj0gZGlzdC5taW4oKSk7CisgICAgLy8gQ29udmVydCB0aGUgb3V0
cHV0IG9mIHRoZSBnZW5lcmF0b3IgdG8gb25lIG9mIG51bV9idWNrZXQgYnVja2V0cy4KKyAgICBp
bnQgYnVja2V0ID0gYnVja2V0X2luZGV4KHNhbXBsZSk7CisgICAgQUJTTF9BU1NFUlQoYnVja2V0
IDw9IG1heF9idWNrZXQpOworICAgICsrYnVja2V0c1tidWNrZXRdOworICB9CisKKyAgLy8gVGhl
IG51bGwtaHlwb3RoZXNpcyBpcyB0aGF0IHRoZSBkaXN0cmlidXRpb24gaXMgdW5pZm9ybSB3aXRo
IHJlc3BlY3QgdG8KKyAgLy8gbG9nLXVuaWZvcm0taW50IGJ1Y2tldGl6YXRpb24uCisgIGNvbnN0
IGludCBkb2YgPSBidWNrZXRzLnNpemUoKSAtIDE7CisgIGNvbnN0IGRvdWJsZSBleHBlY3RlZCA9
IHRyaWFscyAvIHN0YXRpY19jYXN0PGRvdWJsZT4oYnVja2V0cy5zaXplKCkpOworCisgIGNvbnN0
IGRvdWJsZSB0aHJlc2hvbGQgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVZhbHVl
KGRvZiwgMC45OCk7CisKKyAgZG91YmxlIGNoaV9zcXVhcmUgPSBhYnNsOjpyYW5kb21faW50ZXJu
YWw6OkNoaVNxdWFyZVdpdGhFeHBlY3RlZCgKKyAgICAgIHN0ZDo6YmVnaW4oYnVja2V0cyksIHN0
ZDo6ZW5kKGJ1Y2tldHMpLCBleHBlY3RlZCk7CisKKyAgY29uc3QgZG91YmxlIHAgPSBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVBWYWx1ZShjaGlfc3F1YXJlLCBkb2YpOworCisgIGlm
IChjaGlfc3F1YXJlID4gdGhyZXNob2xkKSB7CisgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywg
InZhbHVlcyIpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYnVja2V0cy5zaXplKCk7IGkr
KykgeworICAgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywgYWJzbDo6U3RyQ2F0KGksICI6ICIs
IGJ1Y2tldHNbaV0pKTsKKyAgICB9CisgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywKKyAgICAg
ICAgICAgICAgICAgICAgICBhYnNsOjpTdHJGb3JtYXQoInRyaWFscz0lZFxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMoZGF0YSwgJWQpID0gJWYgKCVmKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgQCAwLjk4ID0gJWYiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlhbHMsIGtDaGlTcXVhcmVk
LCBkb2YsIGNoaV9zcXVhcmUsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtDaGlTcXVhcmVkLCB0aHJlc2hvbGQpKTsKKyAgfQorICByZXR1cm4gcDsKK30KKworVEVT
VF9QKExvZ1VuaWZvcm1JbnRDaGlTcXVhcmVkVGVzdCwgTXVsdGlUZXN0KSB7CisgIGNvbnN0IGlu
dCBrVHJpYWxzID0gNTsKKworICBpbnQgZmFpbHVyZXMgPSAwOworICBmb3IgKGludCBpID0gMDsg
aSA8IGtUcmlhbHM7IGkrKykgeworICAgIGRvdWJsZSBwX3ZhbHVlID0gQ2hpU3F1YXJlZFRlc3RJ
bXBsKCk7CisgICAgaWYgKHBfdmFsdWUgPCAwLjAwNSkgeworICAgICAgZmFpbHVyZXMrKzsKKyAg
ICB9CisgIH0KKworICAvLyBUaGVyZSBpcyBhIDAuMTAlIGNoYW5jZSBvZiBwcm9kdWNpbmcgYXQg
bGVhc3Qgb25lIGZhaWx1cmUsIHNvIHJhaXNlIHRoZQorICAvLyBmYWlsdXJlIHRocmVzaG9sZCBo
aWdoIGVub3VnaCB0byBhbGxvdyBmb3IgYSBmbGFrZSByYXRlIDwgMTAsMDAwLgorICBFWFBFQ1Rf
TEUoZmFpbHVyZXMsIDQpOworfQorCisvLyBHZW5lcmF0ZSB0aGUgcGFyYW1ldGVycyBmb3IgdGhl
IHRlc3QuCitzdGQ6OnZlY3Rvcjxsb2dfdW5pZm9ybV9pMzI6OnBhcmFtX3R5cGU+IEdlblBhcmFt
cygpIHsKKyAgdXNpbmcgUGFyYW0gPSBsb2dfdW5pZm9ybV9pMzI6OnBhcmFtX3R5cGU7CisgIHVz
aW5nIExpbWl0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD47CisKKyAgcmV0dXJuIHN0
ZDo6dmVjdG9yPFBhcmFtPnsKKyAgICAgIFBhcmFtezAsIDEsIDJ9LAorICAgICAgUGFyYW17MSwg
MSwgMn0sCisgICAgICBQYXJhbXswLCAyLCAyfSwKKyAgICAgIFBhcmFtezAsIDMsIDJ9LAorICAg
ICAgUGFyYW17MCwgNCwgMn0sCisgICAgICBQYXJhbXswLCA5LCAxMH0sCisgICAgICBQYXJhbXsw
LCAxMCwgMTB9LAorICAgICAgUGFyYW17MCwgMTEsIDEwfSwKKyAgICAgIFBhcmFtezEsIDEwLCAx
MH0sCisgICAgICBQYXJhbXswLCAoMSA8PCA4KSAtIDEsIDJ9LAorICAgICAgUGFyYW17MCwgKDEg
PDwgOCksIDJ9LAorICAgICAgUGFyYW17MCwgKDEgPDwgMzApIC0gMSwgMn0sCisgICAgICBQYXJh
bXstMTAwMCwgMTAwMCwgMTB9LAorICAgICAgUGFyYW17MCwgTGltaXRzOjptYXgoKSwgMn0sCisg
ICAgICBQYXJhbXswLCBMaW1pdHM6Om1heCgpLCAzfSwKKyAgICAgIFBhcmFtezAsIExpbWl0czo6
bWF4KCksIDEwfSwKKyAgICAgIFBhcmFte0xpbWl0czo6bWluKCksIDB9LAorICAgICAgUGFyYW17
TGltaXRzOjptaW4oKSwgTGltaXRzOjptYXgoKSwgMn0sCisgIH07Cit9CisKK3N0ZDo6c3RyaW5n
IFBhcmFtTmFtZSgKKyAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88bG9nX3VuaWZv
cm1faTMyOjpwYXJhbV90eXBlPiYgaW5mbykgeworICBjb25zdCBhdXRvJiBwID0gaW5mby5wYXJh
bTsKKyAgc3RkOjpzdHJpbmcgbmFtZSA9CisgICAgICBhYnNsOjpTdHJDYXQoIm1pbl8iLCBwLm1p
bigpLCAiX19tYXhfIiwgcC5tYXgoKSwgIl9fYmFzZV8iLCBwLmJhc2UoKSk7CisgIHJldHVybiBh
YnNsOjpTdHJSZXBsYWNlQWxsKG5hbWUsIHt7IisiLCAiXyJ9LCB7Ii0iLCAiXyJ9LCB7Ii4iLCAi
XyJ9fSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCgsIExvZ1VuaWZvcm1JbnRDaGlT
cXVhcmVkVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0lu
KEdlblBhcmFtcygpKSwgUGFyYW1OYW1lKTsKKworLy8gTk9URTogYWJzbDo6bG9nX3VuaWZvcm1f
aW50X2Rpc3RyaWJ1dGlvbiBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuCitURVNUKExv
Z1VuaWZvcm1JbnREaXN0cmlidXRpb25UZXN0LCBTdGFiaWxpdHlUZXN0KSB7CisgIHVzaW5nIHRl
c3Rpbmc6OkVsZW1lbnRzQXJlOworICAvLyBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb24g
c3RhYmlsaXR5IHJlbGllcyBvbgorICAvLyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkxlYWRpbmdT
ZXRCaXQsIHN0ZDo6bG9nLCBzdGQ6OnBvdy4KKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1
ZW5jZV91cmJnIHVyYmcoCisgICAgICB7MHgwMDAzZWI3NmY2ZjdmNzU1dWxsLCAweEZGQ0VBNTBG
REIyRjk1M0J1bGwsIDB4QzMzMkRERUZCRTZDNUFBNXVsbCwKKyAgICAgICAweDY1NTgyMTg1NjhB
Qjk3MDJ1bGwsIDB4MkFFRjdEQUQ1QjZFMkY4NHVsbCwgMHgxNTIxQjYyODI5MDc2MTcwdWxsLAor
ICAgICAgIDB4RUNERDQ3NzU2MTlGMTUxMHVsbCwgMHgxM0NDQTgzMEVCNjFCRDk2dWxsLCAweDAz
MzRGRTFFQUEwMzYzQ0Z1bGwsCisgICAgICAgMHhCNTczNUM5MDRDNzBBMjM5dWxsLCAweEQ1OUU5
RTBCQ0JBQURFMTR1bGwsIDB4RUVDQzg2QkM2MDYyMkNBN3VsbH0pOworCisgIHN0ZDo6dmVjdG9y
PGludD4gb3V0cHV0KDYpOworCisgIHsKKyAgICBhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJp
YnV0aW9uPGludDMyX3Q+IGRpc3QoMCwgMjU2KTsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVn
aW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwKKyAgICAgICAgICAgICAgICAgIFsmXSB7IHJl
dHVybiBkaXN0KHVyYmcpOyB9KTsKKyAgICBFWFBFQ1RfVEhBVChvdXRwdXQsIEVsZW1lbnRzQXJl
KDI1NiwgNjYsIDQsIDYsIDU3LCAxMDMpKTsKKyAgfQorICB1cmJnLnJlc2V0KCk7CisgIHsKKyAg
ICBhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDMyX3Q+IGRpc3QoMCwgMjU2
LCAxMCk7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91dHB1dCksIHN0ZDo6ZW5kKG91
dHB1dCksCisgICAgICAgICAgICAgICAgICBbJl0geyByZXR1cm4gZGlzdCh1cmJnKTsgfSk7Cisg
ICAgRVhQRUNUX1RIQVQob3V0cHV0LCBFbGVtZW50c0FyZSg4LCA0LCAwLCAwLCAwLCA2OSkpOwor
ICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3BvaXNz
b25fZGlzdHJpYnV0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzc1MGIxYzliYTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRpb24uaApAQCAtMCww
ICsxLDI1NCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNp
Zm5kZWYgQUJTTF9SQU5ET01fUE9JU1NPTl9ESVNUUklCVVRJT05fSF8KKyNkZWZpbmUgQUJTTF9S
QU5ET01fUE9JU1NPTl9ESVNUUklCVVRJT05fSF8KKworI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5j
bHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8aXN0cmVhbT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5j
bHVkZSA8b3N0cmVhbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wv
cmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvZmFzdF91bmlmb3JtX2JpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9p
bnRlcm5hbC9mYXN0bWF0aC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lvc3Ry
ZWFtX3N0YXRlX3NhdmVyLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKKworLy8gYWJzbDo6cG9pc3Nv
bl9kaXN0cmlidXRpb246CisvLyBHZW5lcmF0ZXMgZGlzY3JldGUgdmFyaWF0ZXMgY29uZm9ybWlu
ZyB0byBhIFBvaXNzb24gZGlzdHJpYnV0aW9uLgorLy8gICBwKG4pID0gKG1lYW5ebiAvIG4hKSBl
eHAoLW1lYW4pCisvLworLy8gRGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXIsIHRoZSBkaXN0cmli
dXRpb24gc2VsZWN0cyBvbmUgb2YgdGhlIGZvbGxvd2luZworLy8gYWxnb3JpdGhtczoKKy8vICog
VGhlIHN0YW5kYXJkIGFsZ29yaXRobSwgYXR0cmlidXRlZCB0byBLbnV0aCwgZXh0ZW5kZWQgdXNp
bmcgYSBzcGxpdCBtZXRob2QKKy8vIGZvciBsYXJnZXIgdmFsdWVzCisvLyAqIFRoZSAiUmF0aW8g
b2YgVW5pZm9ybXMgYXMgYSBjb252ZW5pZW50IG1ldGhvZCBmb3Igc2FtcGxpbmcgZnJvbSBjbGFz
c2ljYWwKKy8vIGRpc2NyZXRlIGRpc3RyaWJ1dGlvbnMiLCBTdGFkbG9iZXIsIDE5ODkuCisvLyBo
dHRwOi8vd3d3LnNjaWVuY2VkaXJlY3QuY29tL3NjaWVuY2UvYXJ0aWNsZS9waWkvMDM3NzA0Mjc5
MDkwMzQ5NQorLy8KKy8vIE5PVEU6IHBhcmFtX3R5cGUubWVhbigpIGlzIGEgZG91YmxlLCB3aGlj
aCBwZXJtaXRzIHZhbHVlcyBsYXJnZXIgdGhhbgorLy8gcG9pc3Nvbl9kaXN0cmlidXRpb248SW50
VHlwZT46Om1heCgpLCBob3dldmVyIHRoaXMgc2hvdWxkIGJlIGF2b2lkZWQgYW5kCisvLyB0aGUg
ZGlzdHJpYnV0aW9uIHJlc3VsdHMgYXJlIGxpbWl0ZWQgdG8gdGhlIG1heCgpIHZhbHVlLgorLy8K
Ky8vIFRoZSBnb2FscyBvZiB0aGlzIGltcGxlbWVudGF0aW9uIGFyZSB0byBwcm92aWRlIGdvb2Qg
cGVyZm9ybWFuY2Ugd2hpbGUgc3RpbGwKKy8vIGJlaWcgdGhyZWFkLXNhZmU6IFRoaXMgbGltaXRz
IHRoZSBpbXBsZW1lbnRhdGlvbiB0byBub3QgdXNpbmcgbGdhbW1hIHByb3ZpZGVkCisvLyBieSA8
bWF0aC5oPi4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSA9IGludD4KK2NsYXNzIHBv
aXNzb25fZGlzdHJpYnV0aW9uIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gSW50
VHlwZTsKKworICBjbGFzcyBwYXJhbV90eXBlIHsKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBkaXN0
cmlidXRpb25fdHlwZSA9IHBvaXNzb25fZGlzdHJpYnV0aW9uOworICAgIGV4cGxpY2l0IHBhcmFt
X3R5cGUoZG91YmxlIG1lYW4gPSAxLjApOworCisgICAgZG91YmxlIG1lYW4oKSBjb25zdCB7IHJl
dHVybiBtZWFuXzsgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXJhbV90
eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICByZXR1cm4gYS5tZWFuXyA9PSBi
Lm1lYW5fOworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcGFyYW1f
dHlwZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuICEoYSA9PSBiKTsK
KyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIHBvaXNzb25fZGlzdHJpYnV0
aW9uOworCisgICAgZG91YmxlIG1lYW5fOworICAgIGRvdWJsZSBlbXVfOyAgLy8gZSBeIC1tZWFu
XworICAgIGRvdWJsZSBsbXVfOyAgLy8gbG4obWVhbl8pCisgICAgZG91YmxlIHNfOworICAgIGRv
dWJsZSBsb2dfa187CisgICAgaW50IHNwbGl0XzsKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19pbnRlZ3JhbDxJbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAiQ2xhc3MtdGVt
cGxhdGUgYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248PiBtdXN0IGJlICIKKyAgICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXJpemVkIHVzaW5nIGFuIGludGVncmFsIHR5cGUuIik7CisgIH07CisK
KyAgcG9pc3Nvbl9kaXN0cmlidXRpb24oKSA6IHBvaXNzb25fZGlzdHJpYnV0aW9uKDEuMCkge30K
KworICBleHBsaWNpdCBwb2lzc29uX2Rpc3RyaWJ1dGlvbihkb3VibGUgbWVhbikgOiBwYXJhbV8o
bWVhbikge30KKworICBleHBsaWNpdCBwb2lzc29uX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90
eXBlJiBwKSA6IHBhcmFtXyhwKSB7fQorCisgIHZvaWQgcmVzZXQoKSB7fQorCisgIC8vIGdlbmVy
YXRpbmcgZnVuY3Rpb25zCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlw
ZSBvcGVyYXRvcigpKFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisg
ICAgcmV0dXJuICgqdGhpcykoZywgcGFyYW1fKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVUkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcsICAvLyBOT0xJTlQocnVu
dGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtX3R5
cGUmIHApOworCisgIHBhcmFtX3R5cGUgcGFyYW0oKSBjb25zdCB7IHJldHVybiBwYXJhbV87IH0K
KyAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBwKSB7IHBhcmFtXyA9IHA7IH0KKworICBy
ZXN1bHRfdHlwZShtaW4pKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICByZXN1bHRfdHlwZShtYXgp
KCkgY29uc3QgeyByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgp
KCk7IH0KKworICBkb3VibGUgbWVhbigpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXy5tZWFuKCk7IH0K
KworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBvaXNzb25fZGlzdHJpYnV0aW9uJiBh
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvaXNzb25fZGlzdHJpYnV0aW9uJiBi
KSB7CisgICAgcmV0dXJuIGEucGFyYW1fID09IGIucGFyYW1fOworICB9CisgIGZyaWVuZCBib29s
IG9wZXJhdG9yIT0oY29uc3QgcG9pc3Nvbl9kaXN0cmlidXRpb24mIGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcG9pc3Nvbl9kaXN0cmlidXRpb24mIGIpIHsKKyAgICByZXR1cm4g
YS5wYXJhbV8gIT0gYi5wYXJhbV87CisgIH0KKworIHByaXZhdGU6CisgIHBhcmFtX3R5cGUgcGFy
YW1fOworICByYW5kb21faW50ZXJuYWw6OkZhc3RVbmlmb3JtQml0czx1aW50NjRfdD4gZmFzdF91
NjRfOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEltcGxlbWVudGF0aW9uIGRl
dGFpbHMgZm9sbG93CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgSW50VHlwZT4KK3BvaXNzb25fZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOjpw
YXJhbV90eXBlKGRvdWJsZSBtZWFuKQorICAgIDogbWVhbl8obWVhbiksIHNwbGl0XygwKSB7Cisg
IGFzc2VydChtZWFuID49IDApOworICBhc3NlcnQobWVhbiA8PSAoc3RkOjpudW1lcmljX2xpbWl0
czxyZXN1bHRfdHlwZT46Om1heCkoKSk7CisgIC8vIEFzIGEgZGVmZW5zaXZlIG1lYXN1cmUsIGF2
b2lkIGxhcmdlIHZhbHVlcyBvZiB0aGUgbWVhbi4gIFRoZSByZWplY3Rpb24KKyAgLy8gYWxnb3Jp
dGhtIHVzZWQgZG9lcyBub3Qgc3VwcG9ydCB2ZXJ5IGxhcmdlIHZhbHVlcyB3ZWxsLiAgSXQgbXkg
YmUgd29ydGgKKyAgLy8gY2hhbmdpbmcgYWxnb3JpdGhtcyB0byBiZXR0ZXIgZGVhbCB3aXRoIHRo
ZXNlIGNhc2VzLgorICBhc3NlcnQobWVhbiA8PSAxZTEwKTsKKyAgaWYgKG1lYW5fIDwgMTApIHsK
KyAgICAvLyBGb3Igc21hbGwgbGFtYmRhLCB1c2UgdGhlIGtudXRoIG1ldGhvZC4KKyAgICBzcGxp
dF8gPSAxOworICAgIGVtdV8gPSBzdGQ6OmV4cCgtbWVhbl8pOworICB9IGVsc2UgaWYgKG1lYW5f
IDw9IDUwKSB7CisgICAgLy8gVXNlIHNwbGl0LWtudXRoIG1ldGhvZC4KKyAgICBzcGxpdF8gPSAx
ICsgc3RhdGljX2Nhc3Q8aW50PihtZWFuXyAvIDEwLjApOworICAgIGVtdV8gPSBzdGQ6OmV4cCgt
bWVhbl8gLyBzdGF0aWNfY2FzdDxkb3VibGU+KHNwbGl0XykpOworICB9IGVsc2UgeworICAgIC8v
IFVzZSByYXRpbyBvZiB1bmlmb3JtcyBtZXRob2QuCisgICAgY29uc3RleHByIGRvdWJsZSBrMkUg
PSAwLjczNTc1ODg4MjM0Mjg4NDY7CisgICAgY29uc3RleHByIGRvdWJsZSBrU0EgPSAwLjQ0OTQ1
ODA4MTAyOTQ0OTM7CisKKyAgICBsbXVfID0gc3RkOjpsb2cobWVhbl8pOworICAgIGRvdWJsZSBh
ID0gbWVhbl8gKyAwLjU7CisgICAgc18gPSBrU0EgKyBzdGQ6OnNxcnQoazJFICogYSk7CisgICAg
Y29uc3QgZG91YmxlIG1vZGUgPSBzdGQ6OmNlaWwobWVhbl8pIC0gMTsKKyAgICBsb2dfa18gPSBs
bXVfICogbW9kZSAtIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U3RpcmxpbmdMb2dGYWN0b3JpYWwo
bW9kZSk7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIHBvaXNzb25fZGlzdHJpYnV0aW9uPEludFR5cGU+Ojpy
ZXN1bHRfdHlwZQorcG9pc3Nvbl9kaXN0cmlidXRpb248SW50VHlwZT46Om9wZXJhdG9yKCkoCisg
ICAgVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgY29uc3QgcGFy
YW1fdHlwZSYgcCkgeworICB1c2luZyByYW5kb21faW50ZXJuYWw6OlBvc2l0aXZlVmFsdWVUOwor
ICB1c2luZyByYW5kb21faW50ZXJuYWw6OlJhbmRVNjRUb0RvdWJsZTsKKyAgdXNpbmcgcmFuZG9t
X2ludGVybmFsOjpTaWduZWRWYWx1ZVQ7CisKKyAgaWYgKHAuc3BsaXRfICE9IDApIHsKKyAgICAv
LyBVc2UgS251dGgncyBhbGdvcml0aG0gd2l0aCByYW5nZSBzcGxpdHRpbmcgdG8gYXZvaWQgZmxv
YXRpbmctcG9pbnQKKyAgICAvLyBlcnJvcnMuIEtudXRoJ3MgYWxnb3JpdGhtIGlzOiBVaSBpcyBh
IHNlcXVlbmNlIG9mIHVuaWZvcm0gdmFyaWF0ZXMgb24KKyAgICAvLyAoMCwxKTsgcmV0dXJuIHRo
ZSBudW1iZXIgb2YgdmFyaWF0ZXMgcmVxdWlyZWQgZm9yIHByb2R1Y3QoVWkpIDwKKyAgICAvLyBl
eHAoLWxhbWJkYSkuCisgICAgLy8KKyAgICAvLyBUaGUgZXhwZWN0ZWQgbnVtYmVyIG9mIHZhcmlh
dGVzIHJlcXVpcmVkIGZvciBLbnV0aCdzIG1ldGhvZCBjYW4gYmUKKyAgICAvLyBjb21wdXRlZCBh
cyBmb2xsb3dzOgorICAgIC8vIFRoZSBleHBlY3RlZCB2YWx1ZSBvZiBVIGlzIDAuNSwgc28gc29s
dmluZyBmb3IgMC41Xm4gPCBleHAoLWxhbWJkYSkgZ2l2ZXMKKyAgICAvLyB0aGUgZXhwZWN0ZWQg
bnVtYmVyIG9mIHVuaWZvcm0gdmFyaWF0ZXMKKyAgICAvLyByZXF1aXJlZCBmb3IgYSBnaXZlbiBs
YW1iZGEsIHdoaWNoIGlzOgorICAgIC8vICBsYW1iZGEgPSBbMiwgNSwgIDksIDEwLCAxMSwgMTIs
IDEzLCAxNCwgMTUsIDE2LCAxN10KKyAgICAvLyAgbiAgICAgID0gWzMsIDgsIDEzLCAxNSwgMTYs
IDE4LCAxOSwgMjEsIDIyLCAyNCwgMjVdCisgICAgLy8KKyAgICByZXN1bHRfdHlwZSBuID0gMDsK
KyAgICBmb3IgKGludCBzcGxpdCA9IHAuc3BsaXRfOyBzcGxpdCA+IDA7IC0tc3BsaXQpIHsKKyAg
ICAgIGRvdWJsZSByID0gMS4wOworICAgICAgZG8geworICAgICAgICByICo9IFJhbmRVNjRUb0Rv
dWJsZTxQb3NpdGl2ZVZhbHVlVCwgdHJ1ZT4oZmFzdF91NjRfKGcpKTsKKyAgICAgICAgKytuOwor
ICAgICAgfSB3aGlsZSAociA+IHAuZW11Xyk7CisgICAgICAtLW47CisgICAgfQorICAgIHJldHVy
biBuOworICB9CisKKyAgLy8gVXNlIHJhdGlvIG9mIHVuaWZvcm1zIG1ldGhvZC4KKyAgLy8KKyAg
Ly8gTGV0IHUgfiBVbmlmb3JtKDAsIDEpLCB2IH4gVW5pZm9ybSgtMSwgMSksCisgIC8vICAgICBh
ID0gbGFtYmRhICsgMS8yLAorICAvLyAgICAgcyA9IDEuNSAtIHNxcnQoMy9lKSArIHNxcnQoMihs
YW1iZGEgKyAxLzIpL2UpLAorICAvLyAgICAgeCA9IHMgKiB2L3UgKyBhLgorICAvLyBQKGZsb29y
KHgpID0gayB8IHVeMiA8IGYoZmxvb3IoeCkpL2spLCB3aGVyZQorICAvLyBmKG0pID0gbGFtYmRh
Xm0gZXhwKC1sYW1iZGEpLyBtISwgZm9yIDAgPD0gbSwgYW5kIGYobSkgPSAwIG90aGVyd2lzZSwK
KyAgLy8gYW5kIGsgPSBtYXgoZikuCisgIGNvbnN0IGRvdWJsZSBhID0gcC5tZWFuXyArIDAuNTsK
KyAgZm9yICg7OykgeworICAgIGNvbnN0IGRvdWJsZSB1ID0KKyAgICAgICAgUmFuZFU2NFRvRG91
YmxlPFBvc2l0aXZlVmFsdWVULCBmYWxzZT4oZmFzdF91NjRfKGcpKTsgIC8vICgwLCAxKQorICAg
IGNvbnN0IGRvdWJsZSB2ID0KKyAgICAgICAgUmFuZFU2NFRvRG91YmxlPFNpZ25lZFZhbHVlVCwg
ZmFsc2U+KGZhc3RfdTY0XyhnKSk7ICAvLyAoLTEsIDEpCisgICAgY29uc3QgZG91YmxlIHggPSBz
dGQ6OmZsb29yKHAuc18gKiB2IC8gdSArIGEpOworICAgIGlmICh4IDwgMCkgY29udGludWU7ICAv
LyBmKG5lZ2F0aXZlKSA9IDAKKyAgICBjb25zdCBkb3VibGUgcmhzID0geCAqIHAubG11XzsKKyAg
ICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgZG91YmxlIHMgPSAoeCA8PSAxLjApID8gMC4wCisg
ICAgICAgICAgICAgOiAoeCA9PSAyLjApID8gMC42OTMxNDcxODA1NTk5NDUKKyAgICAgICAgICAg
ICA6IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U3RpcmxpbmdMb2dGYWN0b3JpYWwoeCk7CisgICAg
Ly8gY2xhbmctZm9ybWF0IG9uCisgICAgY29uc3QgZG91YmxlIGxocyA9IDIuMCAqIHN0ZDo6bG9n
KHUpICsgcC5sb2dfa18gKyBzOworICAgIGlmIChsaHMgPCByaHMpIHsKKyAgICAgIHJldHVybiB4
ID4gKG1heCkoKSA/IChtYXgpKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0YXRpY19j
YXN0PHJlc3VsdF90eXBlPih4KTsgIC8vIGYoeCkvayA+PSB1XjIKKyAgICB9CisgIH0KK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEludFR5
cGU+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAg
c3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcywgIC8vIE5PTElOVChydW50aW1l
L3JlZmVyZW5jZXMpCisgICAgY29uc3QgcG9pc3Nvbl9kaXN0cmlidXRpb248SW50VHlwZT4mIHgp
IHsKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9vc3RyZWFtX3N0YXRlX3Nh
dmVyKG9zKTsKKyAgb3MucHJlY2lzaW9uKHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX3ByZWNpc2lv
bl9oZWxwZXI8ZG91YmxlPjo6a1ByZWNpc2lvbik7CisgIG9zIDw8IHgubWVhbigpOworICByZXR1
cm4gb3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBJbnRUeXBlPgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVy
YXRvcj4+KAorICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAvLyBO
T0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHBvaXNzb25fZGlzdHJpYnV0aW9uPEludFR5
cGU+JiB4KSB7ICAgICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICB1c2luZyBwYXJh
bV90eXBlID0gdHlwZW5hbWUgcG9pc3Nvbl9kaXN0cmlidXRpb248SW50VHlwZT46OnBhcmFtX3R5
cGU7CisKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9pc3RyZWFtX3N0YXRl
X3NhdmVyKGlzKTsKKyAgZG91YmxlIG1lYW4gPSByYW5kb21faW50ZXJuYWw6OnJlYWRfZmxvYXRp
bmdfcG9pbnQ8ZG91YmxlPihpcyk7CisgIGlmICghaXMuZmFpbCgpKSB7CisgICAgeC5wYXJhbShw
YXJhbV90eXBlKG1lYW4pKTsKKyAgfQorICByZXR1cm4gaXM7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fUE9JU1NPTl9ESVNUUklCVVRJT05fSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9wb2lzc29uX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL3BvaXNzb25fZGlzdHJpYnV0aW9uX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZkNjg5OTlhM2M1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL3BvaXNzb25fZGlzdHJpYnV0aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSw1NjUg
QEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRpb24uaCIKKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8aXRl
cmF0b3I+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8
c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3
X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvZmxhdF9oYXNoX21hcC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVy
bmFsL2NoaV9zcXVhcmUuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmli
dXRpb25fdGVzdF91dGlsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VxdWVu
Y2VfdXJiZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3JhbmRvbS5oIgorI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQu
aCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2UuaCIKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3Mvc3RyaXAuaCIKKworLy8gTm90ZXMgYWJvdXQgZ2VuZXJhdGluZyBwb2lzc29uIHZh
cmlhdGVzOgorLy8KKy8vIEl0IGlzIHVubGlrZWx5IHRoYXQgYW55IGltcGxlbWVudGF0aW9uIG9m
IHN0ZDo6cG9pc3Nvbl9kaXN0cmlidXRpb24KKy8vIHdpbGwgYmUgc3RhYmxlIG92ZXIgdGltZSBh
bmQgYWNyb3NzIGxpYnJhcnkgaW1wbGVtZW50YXRpb25zLiBGb3IgaW5zdGFuY2UKKy8vIHRoZSB0
aHJlZSBkaWZmZXJlbnQgcG9pc3NvbiB2YXJpYXRlIGdlbmVyYXRvcnMgbGlzdGVkIGJlbG93IGFs
bCBkaWZmZXI6CisvLworLy8gaHR0cHM6Ly9naXRodWIuY29tL2FtcGwvZ3NsL3RyZWUvbWFzdGVy
L3JhbmRpc3QvcG9pc3Nvbi5jCisvLyAqIEdTTCB1c2VzIGEgZ2FtbWEgKyBiaW5vbWlhbCArIGtu
dXRoIG1ldGhvZCB0byBjb21wdXRlIHBvaXNzb24gdmFyaWF0ZXMuCisvLworLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2djYy1taXJyb3IvZ2NjL2Jsb2IvbWFzdGVyL2xpYnN0ZGMlMkIlMkItdjMvaW5j
bHVkZS9iaXRzL3JhbmRvbS50Y2MKKy8vICogR0NDIHVzZXMgdGhlIERldnJveWUgcmVqZWN0aW9u
IGFsZ29yaXRobSwgYmFzZWQgb24KKy8vIERldnJveWUsIEwuIE5vbi1Vbmlmb3JtIFJhbmRvbSBW
YXJpYXRlcyBHZW5lcmF0aW9uLiBTcHJpbmdlci1WZXJsYWcsCisvLyBOZXcgWW9yaywgMTk4Niwg
Q2guIFgsIFNlY3RzLiAzLjMgJiAzLjQgKCsgRXJyYXRhISksIH5wLjUxMQorLy8gICBodHRwOi8v
d3d3Lm5yYm9vay5jb20vZGV2cm95ZS8KKy8vCisvLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS1t
aXJyb3IvbGliY3h4L2Jsb2IvbWFzdGVyL2luY2x1ZGUvcmFuZG9tCisvLyAqIENMQU5HIHVzZXMg
YSBkaWZmZXJlbnQgcmVqZWN0aW9uIG1ldGhvZCwgd2hpY2ggYXBwZWFycyB0byBpbmNsdWRlIGEK
Ky8vIG5vcm1hbC1kaXN0cmlidXRpb24gYXBwcm94aW1hdGlvbiBhbmQgYW4gZXhwb25lbnRpYWwg
ZGlzdHJpYnV0aW9uIHRvCisvLyBjb21wdXRlIHRoZSB0aHJlc2hvbGQsIGluY2x1ZGluZyBhIHNp
bWlsYXIgZmFjdG9yaWFsIGFwcHJveGltYXRpb24gdG8gdGhpcworLy8gb25lLCBidXQgaXQgaXMg
dW5jbGVhciB3aGVyZSB0aGUgYWxnb3JpdGhtIGNvbWVzIGZyb20sIGV4YWN0bHkuCisvLworCitu
YW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OmtDaGlTcXVhcmVkOwor
CisvLyBUaGUgUG9pc3NvbkRpc3RyaWJ1dGlvbkludGVyZmFjZVRlc3QgcHJvdmlkZXMgYSBiYXNp
YyB0ZXN0IHRoYXQKKy8vIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uIGNvbmZvcm1zIHRvIHRo
ZSBpbnRlcmZhY2UgYW5kIHNlcmlhbGl6YXRpb24KKy8vIHJlcXVpcmVtZW50cyBpbXBvc2VkIGJ5
IFtyYW5kLnJlcS5kaXN0XSBmb3IgdGhlIGNvbW1vbiBpbnRlZ2VyIHR5cGVzLgorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgSW50VHlwZT4KK2NsYXNzIFBvaXNzb25EaXN0cmlidXRpb25JbnRlcmZhY2VU
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKwordXNpbmcgSW50VHlwZXMgPSA6OnRl
c3Rpbmc6OlR5cGVzPGludCwgaW50OF90LCBpbnQxNl90LCBpbnQzMl90LCBpbnQ2NF90LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QsIHVpbnQxNl90LCB1aW50MzJf
dCwgdWludDY0X3Q+OworVFlQRURfVEVTVF9DQVNFKFBvaXNzb25EaXN0cmlidXRpb25JbnRlcmZh
Y2VUZXN0LCBJbnRUeXBlcyk7CisKK1RZUEVEX1RFU1QoUG9pc3NvbkRpc3RyaWJ1dGlvbkludGVy
ZmFjZVRlc3QsIFNlcmlhbGl6ZVRlc3QpIHsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1l
IGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7CisgIGNv
bnN0IGRvdWJsZSBrTWF4ID0KKyAgICAgIHN0ZDo6bWluKDFlMTAgLyogYXNzZXJ0aW9uIGxpbWl0
ICovLAorICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGlt
aXRzPFR5cGVQYXJhbT46Om1heCgpKSk7CisKKyAgY29uc3QgZG91YmxlIGtQYXJhbXNbXSA9IHsK
KyAgICAgIC8vIENhc2VzIGFyb3VuZCAxLgorICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKDEuMCwgMC4wKSwgIC8vIDEgLSBlcHNpbG9uCisg
ICAgICBzdGQ6Om5leHRhZnRlcigxLjAsIDIuMCksICAvLyAxICsgZXBzaWxvbgorICAgICAgLy8g
QXJiaXRyYXJ5IHZhbHVlcy4KKyAgICAgIDFlLTgsIDFlLTQsCisgICAgICAwLjAwMDAwMDUsICAv
LyB+Ny4yZS03CisgICAgICAwLjIsICAgICAgICAvLyB+MC4yeAorICAgICAgMC41LCAgICAgICAg
Ly8gMC43MgorICAgICAgMiwgICAgICAgICAgLy8gfjIuOAorICAgICAgMjAsICAgICAgICAgLy8g
M3ggfjkuNgorICAgICAgMTAwLCAxZTQsIDFlOCwgMS41ZTksIDFlMjAsCisgICAgICAvLyBCb3Vu
ZGFyeSBjYXNlcy4KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCksCisg
ICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSwKKyAgICAgIHN0ZDo6
bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWluKCksCisgICAgICAgICAg
ICAgICAgICAgICAxLjApLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbiArIGVwc2lsb24K
KyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWluKCksICAgICAgICAgLy8gc21h
bGxlc3Qgbm9ybWFsCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRlbm9ybV9t
aW4oKSwgIC8vIHNtYWxsZXN0IGRlbm9ybQorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptaW4oKSAvIDIsICAgICAvLyBkZW5vcm0KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWluKCksCisgICAgICAgICAgICAgICAgICAgICAwLjAp
LCAgLy8gZGVub3JtX21heAorICB9OworCisKKyAgY29uc3RleHByIGludCBrQ291bnQgPSAxMDAw
OworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47CisgIGZvciAoY29uc3QgZG91YmxlIG0gOiBr
UGFyYW1zKSB7CisgICAgY29uc3QgZG91YmxlIG1lYW4gPSBzdGQ6Om1pbihrTWF4LCBtKTsKKyAg
ICBjb25zdCBwYXJhbV90eXBlIHBhcmFtKG1lYW4pOworCisgICAgLy8gVmFsaWRhdGUgcGFyYW1l
dGVycy4KKyAgICBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGJlZm9yZSht
ZWFuKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLm1lYW4oKSwgcGFyYW0ubWVhbigpKTsKKworICAg
IHsKKyAgICAgIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gdmlhX3BhcmFt
KHBhcmFtKTsKKyAgICAgIEVYUEVDVF9FUSh2aWFfcGFyYW0sIGJlZm9yZSk7CisgICAgICBFWFBF
Q1RfRVEodmlhX3BhcmFtLnBhcmFtKCksIGJlZm9yZS5wYXJhbSgpKTsKKyAgICB9CisKKyAgICAv
LyBTbW9rZSB0ZXN0LgorICAgIGF1dG8gc2FtcGxlX21pbiA9IGJlZm9yZS5tYXgoKTsKKyAgICBh
dXRvIHNhbXBsZV9tYXggPSBiZWZvcmUubWluKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBr
Q291bnQ7IGkrKykgeworICAgICAgYXV0byBzYW1wbGUgPSBiZWZvcmUoZ2VuKTsKKyAgICAgIEVY
UEVDVF9HRShzYW1wbGUsIGJlZm9yZS5taW4oKSk7CisgICAgICBFWFBFQ1RfTEUoc2FtcGxlLCBi
ZWZvcmUubWF4KCkpOworICAgICAgaWYgKHNhbXBsZSA+IHNhbXBsZV9tYXgpIHNhbXBsZV9tYXgg
PSBzYW1wbGU7CisgICAgICBpZiAoc2FtcGxlIDwgc2FtcGxlX21pbikgc2FtcGxlX21pbiA9IHNh
bXBsZTsKKyAgICB9CisKKyAgICBBQlNMX0lOVEVSTkFMX0xPRyhJTkZPLCBhYnNsOjpTdHJDYXQo
IlJhbmdlIHsiLCBwYXJhbS5tZWFuKCksICJ9OiAiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICArc2FtcGxlX21pbiwgIiwgIiwgK3NhbXBsZV9tYXgpKTsKKworICAg
IC8vIFZhbGlkYXRlIHN0cmVhbSBzZXJpYWxpemF0aW9uLgorICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IHNzOworICAgIHNzIDw8IGJlZm9yZTsKKworICAgIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9u
PFR5cGVQYXJhbT4gYWZ0ZXIoMy44KTsKKworICAgIEVYUEVDVF9ORShiZWZvcmUubWVhbigpLCBh
ZnRlci5tZWFuKCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0o
KSk7CisgICAgRVhQRUNUX05FKGJlZm9yZSwgYWZ0ZXIpOworCisgICAgc3MgPj4gYWZ0ZXI7CisK
KyAgICBFWFBFQ1RfRVEoYmVmb3JlLm1lYW4oKSwgYWZ0ZXIubWVhbigpKSAgLy8KKyAgICAgICAg
PDwgc3Muc3RyKCkgPDwgIiAiICAgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgPDwgKHNzLmdv
b2QoKSA/ICJnb29kICIgOiAiIikgICAgICAgLy8KKyAgICAgICAgPDwgKHNzLmJhZCgpID8gImJh
ZCAiIDogIiIpICAgICAgICAgLy8KKyAgICAgICAgPDwgKHNzLmVvZigpID8gImVvZiAiIDogIiIp
ICAgICAgICAgLy8KKyAgICAgICAgPDwgKHNzLmZhaWwoKSA/ICJmYWlsICIgOiAiIik7CisgIH0K
K30KKworLy8gU2VlIGh0dHA6Ly93d3cuaXRsLm5pc3QuZ292L2Rpdjg5OC9oYW5kYm9vay9lZGEv
c2VjdGlvbjMvZWRhMzY2ai5odG0KKworY2xhc3MgUG9pc3Nvbk1vZGVsIHsKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IFBvaXNzb25Nb2RlbChkb3VibGUgbWVhbikgOiBtZWFuXyhtZWFuKSB7fQorCisg
IGRvdWJsZSBtZWFuKCkgY29uc3QgeyByZXR1cm4gbWVhbl87IH0KKyAgZG91YmxlIHZhcmlhbmNl
KCkgY29uc3QgeyByZXR1cm4gbWVhbl87IH0KKyAgZG91YmxlIHN0ZGRldigpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6c3FydCh2YXJpYW5jZSgpKTsgfQorICBkb3VibGUgc2tldygpIGNvbnN0IHsgcmV0
dXJuIDEuMCAvIG1lYW5fOyB9CisgIGRvdWJsZSBrdXJ0b3NpcygpIGNvbnN0IHsgcmV0dXJuIDMu
MCArIDEuMCAvIG1lYW5fOyB9CisKKyAgLy8gSW5pdENERigpIGluaXRpYWxpemVzIHRoZSBDREYg
Zm9yIHRoZSBkaXN0cmlidXRpb24gcGFyYW1ldGVycy4KKyAgdm9pZCBJbml0Q0RGKCk7CisKKyAg
Ly8gVGhlIEludmVyc2VDREYsIG9yIHRoZSBQZXJjZW50LXBvaW50IGZ1bmN0aW9uIHJldHVybnMg
eCwgUCh4KSA8IHYuCisgIHN0cnVjdCBDREYgeworICAgIHNpemVfdCBpbmRleDsKKyAgICBkb3Vi
bGUgcG1mOworICAgIGRvdWJsZSBjZGY7CisgIH07CisgIENERiBJbnZlcnNlQ0RGKGRvdWJsZSBw
KSB7CisgICAgQ0RGIHRhcmdldHswLCAwLCBwfTsKKyAgICBhdXRvIGl0ID0gc3RkOjp1cHBlcl9i
b3VuZCgKKyAgICAgICAgc3RkOjpiZWdpbihjZGZfKSwgc3RkOjplbmQoY2RmXyksIHRhcmdldCwK
KyAgICAgICAgW10oY29uc3QgQ0RGJiBhLCBjb25zdCBDREYmIGIpIHsgcmV0dXJuIGEuY2RmIDwg
Yi5jZGY7IH0pOworICAgIHJldHVybiAqaXQ7CisgIH0KKworICB2b2lkIExvZ0NERigpIHsKKyAg
ICBBQlNMX0lOVEVSTkFMX0xPRyhJTkZPLCBhYnNsOjpTdHJDYXQoIkNERiAobWVhbiA9ICIsIG1l
YW5fLCAiKSIpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gYyA6IGNkZl8pIHsKKyAgICAgIEFCU0xf
SU5URVJOQUxfTE9HKElORk8sCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTdHJDYXQo
Yy5pbmRleCwgIjogcG1mPSIsIGMucG1mLCAiIGNkZj0iLCBjLmNkZikpOworICAgIH0KKyAgfQor
CisgcHJpdmF0ZToKKyAgY29uc3QgZG91YmxlIG1lYW5fOworCisgIHN0ZDo6dmVjdG9yPENERj4g
Y2RmXzsKK307CisKKy8vIFRoZSBnb2FsIGlzIHRvIGNvbXB1dGUgYW4gSW52ZXJzZUNERiBmdW5j
dGlvbiwgb3IgcGVyY2VudCBwb2ludCBmdW5jdGlvbiBmb3IKKy8vIHRoZSBwb2lzc29uIGRpc3Ry
aWJ1dGlvbiwgYW5kIHVzZSB0aGF0IHRvIHBhcnRpdGlvbiBvdXIgb3V0cHV0IGludG8gZXF1YWwK
Ky8vIHJhbmdlIGJ1Y2tldHMuICBIb3dldmVyIHRoZXJlIGlzIG5vIGNsb3NlZCBmb3JtIHNvbHV0
aW9uIGZvciB0aGUgaW52ZXJzZSBjZGYKKy8vIGZvciBwb2lzc29uIGRpc3RyaWJ1dGlvbnMgKHRo
ZSBjbG9zZXN0IGlzIHRoZSBpbmNvbXBsZXRlIGdhbW1hIGZ1bmN0aW9uKS4KKy8vIEluc3RlYWQs
IGBJbml0Q0RGYCBpdGVyYXRpdmVseSBjb21wdXRlcyB0aGUgUE1GIGFuZCB0aGUgQ0RGLiBUaGlz
IGVuYWJsZXMKKy8vIHNlYXJjaGluZyBmb3IgdGhlIGJ1Y2tldCBwb2ludHMuCit2b2lkIFBvaXNz
b25Nb2RlbDo6SW5pdENERigpIHsKKyAgaWYgKCFjZGZfLmVtcHR5KCkpIHsKKyAgICAvLyBTdGF0
ZSBhbHJlYWR5IGluaXRpYWxpemVkLgorICAgIHJldHVybjsKKyAgfQorICBBQlNMX0FTU0VSVCht
ZWFuXyA8IDIwMS4wKTsKKworICBjb25zdCBzaXplX3QgbWF4X2kgPSA1MCAqIHN0ZGRldigpICsg
bWVhbigpOworICBjb25zdCBkb3VibGUgZV9uZWdfbWVhbiA9IHN0ZDo6ZXhwKC1tZWFuKCkpOwor
ICBBQlNMX0FTU0VSVChlX25lZ19tZWFuID4gMCk7CisKKyAgZG91YmxlIGQgPSAxOworICBkb3Vi
bGUgbGFzdF9yZXN1bHQgPSBlX25lZ19tZWFuOworICBkb3VibGUgY3VtdWxhdGl2ZSA9IGVfbmVn
X21lYW47CisgIGlmIChlX25lZ19tZWFuID4gMWUtMTApIHsKKyAgICBjZGZfLnB1c2hfYmFjayh7
MCwgZV9uZWdfbWVhbiwgY3VtdWxhdGl2ZX0pOworICB9CisgIGZvciAoc2l6ZV90IGkgPSAxOyBp
IDwgbWF4X2k7IGkrKykgeworICAgIGQgKj0gKG1lYW4oKSAvIGkpOworICAgIGRvdWJsZSByZXN1
bHQgPSBlX25lZ19tZWFuICogZDsKKyAgICBjdW11bGF0aXZlICs9IHJlc3VsdDsKKyAgICBpZiAo
cmVzdWx0IDwgMWUtMTAgJiYgcmVzdWx0IDwgbGFzdF9yZXN1bHQgJiYgY3VtdWxhdGl2ZSA+IDAu
OTk5OTk5KSB7CisgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHJlc3VsdCA+IDFlLTcpIHsK
KyAgICAgIGNkZl8ucHVzaF9iYWNrKHtpLCByZXN1bHQsIGN1bXVsYXRpdmV9KTsKKyAgICB9Cisg
ICAgbGFzdF9yZXN1bHQgPSByZXN1bHQ7CisgIH0KKyAgQUJTTF9BU1NFUlQoIWNkZl8uZW1wdHko
KSk7Cit9CisKKy8vIFBvaXNzb25EaXN0cmlidXRpb25aVGVzdCBpbXBsZW1lbnRzIGEgei10ZXN0
IGZvciB0aGUgcG9pc3NvbiBkaXN0cmlidXRpb24uCisKK3N0cnVjdCBaUGFyYW0geworICBkb3Vi
bGUgbWVhbjsKKyAgZG91YmxlIHBfZmFpbDsgICAvLyBaLVRlc3QgcHJvYmFiaWxpdHkgb2YgZmFp
bHVyZS4KKyAgaW50IHRyaWFsczsgICAgICAvLyBaLVRlc3QgdHJpYWxzLgorICBzaXplX3Qgc2Ft
cGxlczsgIC8vIFotVGVzdCBzYW1wbGVzLgorfTsKKworY2xhc3MgUG9pc3NvbkRpc3RyaWJ1dGlv
blpUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08WlBhcmFtPiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBQb2lzc29uTW9kZWwgeworIHB1YmxpYzoK
KyAgUG9pc3NvbkRpc3RyaWJ1dGlvblpUZXN0KCkgOiBQb2lzc29uTW9kZWwoR2V0UGFyYW0oKS5t
ZWFuKSB7fQorCisgIC8vIFpUZXN0SW1wbCBwcm92aWRlcyBhIGJhc2ljIHotc3F1YXJlZCB0ZXN0
IG9mIHRoZSBtZWFuIHZzLiBleHBlY3RlZAorICAvLyBtZWFuIGZvciBkYXRhIGdlbmVyYXRlZCBi
eSB0aGUgcG9pc3NvbiBkaXN0cmlidXRpb24uCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBEPgorICBi
b29sIFNpbmdsZVpUZXN0KGNvbnN0IGRvdWJsZSBwLCBjb25zdCBzaXplX3Qgc2FtcGxlcyk7CisK
KyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gcm5nXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBE
PgorYm9vbCBQb2lzc29uRGlzdHJpYnV0aW9uWlRlc3Q6OlNpbmdsZVpUZXN0KGNvbnN0IGRvdWJs
ZSBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNp
emVfdCBzYW1wbGVzKSB7CisgIEQgZGlzKG1lYW4oKSk7CisKKyAgYWJzbDo6ZmxhdF9oYXNoX21h
cDxpbnQzMl90LCBpbnQ+IGJ1Y2tldHM7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gZGF0YTsKKyAg
ZGF0YS5yZXNlcnZlKHNhbXBsZXMpOworICBmb3IgKGludCBqID0gMDsgaiA8IHNhbXBsZXM7IGor
KykgeworICAgIGNvbnN0IGF1dG8geCA9IGRpcyhybmdfKTsKKyAgICBidWNrZXRzW3hdKys7Cisg
ICAgZGF0YS5wdXNoX2JhY2soeCk7CisgIH0KKworICAvLyBUaGUgbnVsbC1oeXBvdGhlc2lzIGlz
IHRoYXQgdGhlIGRpc3RyaWJ1dGlvbiBpcyBhIHBvaXNzb24gZGlzdHJpYnV0aW9uIHdpdGgKKyAg
Ly8gdGhlIHByb3ZpZGVkIG1lYW4gKG5vdCBlc3RpbWF0ZWQgZnJvbSB0aGUgZGF0YSkuCisgIGNv
bnN0IGF1dG8gbSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1v
bWVudHMoZGF0YSk7CisgIGNvbnN0IGRvdWJsZSBtYXhfZXJyID0gYWJzbDo6cmFuZG9tX2ludGVy
bmFsOjpNYXhFcnJvclRvbGVyYW5jZShwKTsKKyAgY29uc3QgZG91YmxlIHogPSBhYnNsOjpyYW5k
b21faW50ZXJuYWw6OlpTY29yZShtZWFuKCksIG0pOworICBjb25zdCBib29sIHBhc3MgPSBhYnNs
OjpyYW5kb21faW50ZXJuYWw6Ok5lYXIoInoiLCB6LCAwLjAsIG1heF9lcnIpOworCisgIGlmICgh
cGFzcykgeworICAgIEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAgICBJTkZPLCBhYnNsOjpTdHJG
b3JtYXQoInA9JWYgbWF4X2Vycj0lZlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiBtZWFuPSVmIHZzLiAlZlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzdGRk
ZXY9JWYgdnMuICVmXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNrZXduZXNz
PSVmIHZzLiAlZlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBrdXJ0b3Npcz0l
ZiB2cy4gJWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgej0lZiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwLCBtYXhfZXJyLCBtLm1lYW4sIG1lYW4oKSwgc3Rk
OjpzcXJ0KG0udmFyaWFuY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZGV2
KCksIG0uc2tld25lc3MsIHNrZXcoKSwgbS5rdXJ0b3NpcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGt1cnRvc2lzKCksIHopKTsKKyAgfQorICByZXR1cm4gcGFzczsKK30KKworVEVT
VF9QKFBvaXNzb25EaXN0cmlidXRpb25aVGVzdCwgQWJzbFBvaXNzb25EaXN0cmlidXRpb24pIHsK
KyAgY29uc3QgYXV0byYgcGFyYW0gPSBHZXRQYXJhbSgpOworICBjb25zdCBpbnQgZXhwZWN0ZWRf
ZmFpbHVyZXMgPQorICAgICAgc3RkOjptYXgoMSwgc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmNlaWwo
cGFyYW0udHJpYWxzICogcGFyYW0ucF9mYWlsKSkpOworICBjb25zdCBkb3VibGUgcCA9IGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6UmVxdWlyZWRTdWNjZXNzUHJvYmFiaWxpdHkoCisgICAgICBwYXJh
bS5wX2ZhaWwsIHBhcmFtLnRyaWFscyk7CisKKyAgaW50IGZhaWx1cmVzID0gMDsKKyAgZm9yIChp
bnQgaSA9IDA7IGkgPCBwYXJhbS50cmlhbHM7IGkrKykgeworICAgIGZhaWx1cmVzICs9CisgICAg
ICAgIFNpbmdsZVpUZXN0PGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPGludDMyX3Q+PihwLCBw
YXJhbS5zYW1wbGVzKSA/IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMTsKKyAgfQorICBFWFBFQ1Rf
TEUoZmFpbHVyZXMsIGV4cGVjdGVkX2ZhaWx1cmVzKTsKK30KKworc3RkOjp2ZWN0b3I8WlBhcmFt
PiBHZXRaUGFyYW1zKCkgeworICAvLyBUaGVzZSB2YWx1ZXMgaGF2ZSBiZWVuIGFkanVzdGVkIGZy
b20gdGhlICJleGFjdCIgY29tcHV0ZWQgdmFsdWVzIHRvIHJlZHVjZQorICAvLyBmYWlsdXJlIHJh
dGVzLgorICAvLworICAvLyBJdCB0dXJucyBvdXQgdGhhdCB0aGUgYWN0dWFsIHZhbHVlcyBhcmUg
bm90IGFzIGNsb3NlIHRvIHRoZSBleHBlY3RlZCB2YWx1ZXMKKyAgLy8gYXMgd291bGQgYmUgaWRl
YWwuCisgIHJldHVybiBzdGQ6OnZlY3RvcjxaUGFyYW0+KHsKKyAgICAgIC8vIEtudXRoIG1ldGhv
ZC4KKyAgICAgIFpQYXJhbXswLjUsIDAuMDEsIDEwMCwgMTAwMH0sCisgICAgICBaUGFyYW17MS4w
LCAwLjAxLCAxMDAsIDEwMDB9LAorICAgICAgWlBhcmFtezEwLjAsIDAuMDEsIDEwMCwgNTAwMH0s
CisgICAgICAvLyBTcGxpdC1rbnV0aCBtZXRob2QuCisgICAgICBaUGFyYW17MjAuMCwgMC4wMSwg
MTAwLCAxMDAwMH0sCisgICAgICBaUGFyYW17NTAuMCwgMC4wMSwgMTAwLCAxMDAwMH0sCisgICAg
ICAvLyBSYXRpbyBvZiBnYXVzc2lhbnMgbWV0aG9kLgorICAgICAgWlBhcmFtezUxLjAsIDAuMDEs
IDEwMCwgMTAwMDB9LAorICAgICAgWlBhcmFtezIwMC4wLCAwLjA1LCAxMCwgMTAwMDAwfSwKKyAg
ICAgIFpQYXJhbXsxMDAwMDAuMCwgMC4wNSwgMTAsIDEwMDAwMDB9LAorICB9KTsKK30KKworc3Rk
OjpzdHJpbmcgWlBhcmFtTmFtZShjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88WlBhcmFt
PiYgaW5mbykgeworICBjb25zdCBhdXRvJiBwID0gaW5mby5wYXJhbTsKKyAgc3RkOjpzdHJpbmcg
bmFtZSA9IGFic2w6OlN0ckNhdCgibWVhbl8iLCBhYnNsOjpTaXhEaWdpdHMocC5tZWFuKSk7Cisg
IHJldHVybiBhYnNsOjpTdHJSZXBsYWNlQWxsKG5hbWUsIHt7IisiLCAiXyJ9LCB7Ii0iLCAiXyJ9
LCB7Ii4iLCAiXyJ9fSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCgsIFBvaXNzb25E
aXN0cmlidXRpb25aVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZh
bHVlc0luKEdldFpQYXJhbXMoKSksIFpQYXJhbU5hbWUpOworCisvLyBUaGUgUG9pc3NvbkRpc3Ry
aWJ1dGlvbkNoaVNxdWFyZWRUZXN0IGNsYXNzIHByb3ZpZGVzIGEgYmFzaWMgdGVzdCBmcmFtZXdv
cmsKKy8vIGZvciB2YXJpYXRlcyBnZW5lcmF0ZWQgYnkgYSBjb25mb3JtaW5nIHBvaXNzb25fZGlz
dHJpYnV0aW9uLgorY2xhc3MgUG9pc3NvbkRpc3RyaWJ1dGlvbkNoaVNxdWFyZWRUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08ZG91YmxlPiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBQb2lzc29uTW9kZWwgeworIHB1YmxpYzoKKyAg
UG9pc3NvbkRpc3RyaWJ1dGlvbkNoaVNxdWFyZWRUZXN0KCkgOiBQb2lzc29uTW9kZWwoR2V0UGFy
YW0oKSkge30KKworICAvLyBUaGUgQ2hpU3F1YXJlZFRlc3RJbXBsIHByb3ZpZGVzIGEgY2hpLXNx
dWFyZWQgZ29vZG5lc3Mgb2YgZml0IHRlc3QgZm9yIGRhdGEKKyAgLy8gZ2VuZXJhdGVkIGJ5IHRo
ZSBwb2lzc29uIGRpc3RyaWJ1dGlvbi4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEQ+CisgIGRvdWJs
ZSBDaGlTcXVhcmVkVGVzdEltcGwoKTsKKworIHByaXZhdGU6CisgIHZvaWQgSW5pdENoaVNxdWFy
ZWRUZXN0KGNvbnN0IGRvdWJsZSBidWNrZXRzKTsKKworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBy
bmdfOworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IGN1dG9mZnNfOworICBzdGQ6OnZlY3Rvcjxkb3Vi
bGU+IGV4cGVjdGVkXzsKK307CisKK3ZvaWQgUG9pc3NvbkRpc3RyaWJ1dGlvbkNoaVNxdWFyZWRU
ZXN0OjpJbml0Q2hpU3F1YXJlZFRlc3QoCisgICAgY29uc3QgZG91YmxlIGJ1Y2tldHMpIHsKKyAg
aWYgKCFjdXRvZmZzXy5lbXB0eSgpICYmICFleHBlY3RlZF8uZW1wdHkoKSkgeworICAgIHJldHVy
bjsKKyAgfQorICBJbml0Q0RGKCk7CisKKyAgLy8gVGhlIGNvZGUgYmVsb3cgZmluZHMgY3V0dG9m
ZnMgdGhhdCB5aWVsZCBhcHByb3hpbWF0ZWx5IGVxdWFsbHktc2l6ZWQKKyAgLy8gYnVja2V0cyB0
byB0aGUgZXh0ZW50IHRoYXQgaXQgaXMgcG9zc2libGUuIEhvd2V2ZXIgZm9yIHBvaXNzb24KKyAg
Ly8gZGlzdHJpYnV0aW9ucyB0aGlzIGlzIHBhcnRpY3VsYXJseSBjaGFsbGVuZ2luZyBmb3Igc21h
bGwgbWVhbiBwYXJhbWV0ZXJzLgorICAvLyBUcmFjayB0aGUgZXhwZWN0ZWQgcHJvcG9ydGlvbiBv
ZiBpdGVtcyBpbiBlYWNoIGJ1Y2tldC4KKyAgZG91YmxlIGxhc3RfY2RmID0gMDsKKyAgY29uc3Qg
ZG91YmxlIGluYyA9IDEuMCAvIGJ1Y2tldHM7CisgIGZvciAoZG91YmxlIHAgPSBpbmM7IHAgPD0g
MS4wOyBwICs9IGluYykgeworICAgIGF1dG8gcmVzdWx0ID0gSW52ZXJzZUNERihwKTsKKyAgICBp
ZiAoIWN1dG9mZnNfLmVtcHR5KCkgJiYgY3V0b2Zmc18uYmFjaygpID09IHJlc3VsdC5pbmRleCkg
eworICAgICAgY29udGludWU7CisgICAgfQorICAgIGRvdWJsZSBkID0gcmVzdWx0LmNkZiAtIGxh
c3RfY2RmOworICAgIGN1dG9mZnNfLnB1c2hfYmFjayhyZXN1bHQuaW5kZXgpOworICAgIGV4cGVj
dGVkXy5wdXNoX2JhY2soZCk7CisgICAgbGFzdF9jZGYgPSByZXN1bHQuY2RmOworICB9CisgIGN1
dG9mZnNfLnB1c2hfYmFjayhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAg
ZXhwZWN0ZWRfLnB1c2hfYmFjayhzdGQ6Om1heCgwLjAsIDEuMCAtIGxhc3RfY2RmKSk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBEPgorZG91YmxlIFBvaXNzb25EaXN0cmlidXRpb25DaGlTcXVh
cmVkVGVzdDo6Q2hpU3F1YXJlZFRlc3RJbXBsKCkgeworICBjb25zdCBpbnQga1NhbXBsZXMgPSAy
MDAwOworICBjb25zdCBpbnQga0J1Y2tldHMgPSA1MDsKKworICAvLyBUaGUgcG9pc3NvbiBDREYg
ZmFpbHMgZm9yIGxhcmdlIG1lYW4gdmFsdWVzLCBzaW5jZSBlXi1tZWFuIGV4Y2VlZHMgdGhlCisg
IC8vIG1hY2hpbmUgcHJlY2lzaW9uLiBGb3IgdGhlc2UgY2FzZXMsIHVzaW5nIGEgbm9ybWFsIGFw
cHJveGltYXRpb24gd291bGQgYmUKKyAgLy8gYXBwcm9wcmlhdGUuCisgIEFCU0xfQVNTRVJUKG1l
YW4oKSA8PSAyMDApOworICBJbml0Q2hpU3F1YXJlZFRlc3Qoa0J1Y2tldHMpOworCisgIEQgZGlz
KG1lYW4oKSk7CisKKyAgc3RkOjp2ZWN0b3I8aW50MzJfdD4gY291bnRzKGN1dG9mZnNfLnNpemUo
KSwgMCk7CisgIGZvciAoaW50IGogPSAwOyBqIDwga1NhbXBsZXM7IGorKykgeworICAgIGNvbnN0
IHNpemVfdCB4ID0gZGlzKHJuZ18pOworICAgIGF1dG8gaXQgPSBzdGQ6Omxvd2VyX2JvdW5kKHN0
ZDo6YmVnaW4oY3V0b2Zmc18pLCBzdGQ6OmVuZChjdXRvZmZzXyksIHgpOworICAgIGNvdW50c1tz
dGQ6OmRpc3RhbmNlKGN1dG9mZnNfLmJlZ2luKCksIGl0KV0rKzsKKyAgfQorCisgIC8vIE5vcm1h
bGl6ZSB0aGUgY291bnRzLgorICBzdGQ6OnZlY3RvcjxpbnQzMl90PiBlKGV4cGVjdGVkXy5zaXpl
KCksIDApOworICBmb3IgKGludCBpID0gMDsgaSA8IGUuc2l6ZSgpOyBpKyspIHsKKyAgICBlW2ld
ID0ga1NhbXBsZXMgKiBleHBlY3RlZF9baV07CisgIH0KKworICAvLyBUaGUgbnVsbC1oeXBvdGhl
c2lzIGlzIHRoYXQgdGhlIGRpc3RyaWJ1dGlvbiBpcyBhIHBvaXNzb24gZGlzdHJpYnV0aW9uIHdp
dGgKKyAgLy8gdGhlIHByb3ZpZGVkIG1lYW4gKG5vdCBlc3RpbWF0ZWQgZnJvbSB0aGUgZGF0YSku
CisgIGNvbnN0IGludCBkb2YgPSBzdGF0aWNfY2FzdDxpbnQ+KGNvdW50cy5zaXplKCkpIC0gMTsK
KworICAvLyBUaGUgdGhyZXNob2xkIGZvciBsb2dnaW5nIGlzIDEtaW4tNTAuCisgIGNvbnN0IGRv
dWJsZSB0aHJlc2hvbGQgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVZhbHVlKGRv
ZiwgMC45OCk7CisKKyAgY29uc3QgZG91YmxlIGNoaV9zcXVhcmUgPSBhYnNsOjpyYW5kb21faW50
ZXJuYWw6OkNoaVNxdWFyZSgKKyAgICAgIHN0ZDo6YmVnaW4oY291bnRzKSwgc3RkOjplbmQoY291
bnRzKSwgc3RkOjpiZWdpbihlKSwgc3RkOjplbmQoZSkpOworCisgIGNvbnN0IGRvdWJsZSBwID0g
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVQVmFsdWUoY2hpX3NxdWFyZSwgZG9mKTsK
KworICAvLyBMb2cgaWYgdGhlIGNoaV9zcXVhcmVkIHZhbHVlIGlzIGFib3ZlIHRoZSB0aHJlc2hv
bGQuCisgIGlmIChjaGlfc3F1YXJlID4gdGhyZXNob2xkKSB7CisgICAgTG9nQ0RGKCk7CisKKyAg
ICBBQlNMX0lOVEVSTkFMX0xPRyhJTkZPLCBhYnNsOjpTdHJDYXQoIlZBTFVFUyAgYnVja2V0cz0i
LCBjb3VudHMuc2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICBzYW1wbGVzPSIsIGtTYW1wbGVzKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3VudHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAgICAg
IElORk8sIGFic2w6OlN0ckNhdChjdXRvZmZzX1tpXSwgIjogIiwgY291bnRzW2ldLCAiIHZzLiBF
PSIsIGVbaV0pKTsKKyAgICB9CisKKyAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAgICAgSU5G
TywKKyAgICAgICAgYWJzbDo6U3RyQ2F0KGtDaGlTcXVhcmVkLCAiKGRhdGEsIGRvZj0iLCBkb2Ys
ICIpID0gIiwgY2hpX3NxdWFyZSwgIiAoIiwKKyAgICAgICAgICAgICAgICAgICAgIHAsICIpXG4i
LCAiIHZzLlxuIiwga0NoaVNxdWFyZWQsICIgQCAwLjk4ID0gIiwgdGhyZXNob2xkKSk7CisgIH0K
KyAgcmV0dXJuIHA7Cit9CisKK1RFU1RfUChQb2lzc29uRGlzdHJpYnV0aW9uQ2hpU3F1YXJlZFRl
c3QsIEFic2xQb2lzc29uRGlzdHJpYnV0aW9uKSB7CisgIGNvbnN0IGludCBrVHJpYWxzID0gMjA7
CisKKyAgLy8gTGFyZ2UgdmFsdWVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCAtLSB0aGlzIHJlcXVp
cmVzIGVzdGltYXRpbmcgdGhlIGNkZgorICAvLyB1c2luZyB0aGUgbm9ybWFsIGRpc3RyaWJ1dGlv
biBpbnN0ZWFkIG9mIHRoZSBwb2lzc29uIGluIHRoaXMgY2FzZS4KKyAgQVNTRVJUX0xFKG1lYW4o
KSwgMjAwLjApOworICBpZiAobWVhbigpID4gMjAwLjApIHsKKyAgICByZXR1cm47CisgIH0KKwor
ICBpbnQgZmFpbHVyZXMgPSAwOworICBmb3IgKGludCBpID0gMDsgaSA8IGtUcmlhbHM7IGkrKykg
eworICAgIGRvdWJsZSBwX3ZhbHVlID0gQ2hpU3F1YXJlZFRlc3RJbXBsPGFic2w6OnBvaXNzb25f
ZGlzdHJpYnV0aW9uPGludDMyX3Q+PigpOworICAgIGlmIChwX3ZhbHVlIDwgMC4wMDUpIHsKKyAg
ICAgIGZhaWx1cmVzKys7CisgICAgfQorICB9CisgIC8vIFRoZXJlIGlzIGEgMC4xMCUgY2hhbmNl
IG9mIHByb2R1Y2luZyBhdCBsZWFzdCBvbmUgZmFpbHVyZSwgc28gcmFpc2UgdGhlCisgIC8vIGZh
aWx1cmUgdGhyZXNob2xkIGhpZ2ggZW5vdWdoIHRvIGFsbG93IGZvciBhIGZsYWtlIHJhdGUgPCAx
MCwwMDAuCisgIEVYUEVDVF9MRShmYWlsdXJlcywgNCk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1Rf
U1VJVEVfUCgsIFBvaXNzb25EaXN0cmlidXRpb25DaGlTcXVhcmVkVGVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygwLjUsIDEuMCwgMi4wLCAxMC4wLCA1MC4w
LCA1MS4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMC4w
KSk7CisKKy8vIE5PVEU6IGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uIGlzIG5vdCBndWFyYW50
ZWVkIHRvIGJlIHN0YWJsZS4KK1RFU1QoUG9pc3NvbkRpc3RyaWJ1dGlvblRlc3QsIFN0YWJpbGl0
eVRlc3QpIHsKKyAgdXNpbmcgdGVzdGluZzo6RWxlbWVudHNBcmU7CisgIC8vIGFic2w6OnBvaXNz
b25fZGlzdHJpYnV0aW9uIHN0YWJpbGl0eSByZWxpZXMgb24gc3RhYmlsaXR5IG9mCisgIC8vIHN0
ZDo6ZXhwLCBzdGQ6OmxvZywgc3RkOjpzcXJ0LCBzdGQ6OmNlaWwsIHN0ZDo6Zmxvb3IsIGFuZAor
ICAvLyBhYnNsOjpGYXN0VW5pZm9ybUJpdHMsIGFic2w6OlN0aXJsaW5nTG9nRmFjdG9yaWFsLCBh
YnNsOjpSYW5kVTY0VG9Eb3VibGUuCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2Vf
dXJiZyB1cmJnKHsKKyAgICAgIDB4MDM1YjBkYzdlMGExOGFjZnVsbCwgMHgwNmNlYmUwZDI2NTM2
ODJldWxsLCAweDAwNjFlOWIyMzg2MTU5NmJ1bGwsCisgICAgICAweDAwMDNlYjc2ZjZmN2Y3NTV1
bGwsIDB4RkZDRUE1MEZEQjJGOTUzQnVsbCwgMHhDMzMyRERFRkJFNkM1QUE1dWxsLAorICAgICAg
MHg2NTU4MjE4NTY4QUI5NzAydWxsLCAweDJBRUY3REFENUI2RTJGODR1bGwsIDB4MTUyMUI2Mjgy
OTA3NjE3MHVsbCwKKyAgICAgIDB4RUNERDQ3NzU2MTlGMTUxMHVsbCwgMHgxM0NDQTgzMEVCNjFC
RDk2dWxsLCAweDAzMzRGRTFFQUEwMzYzQ0Z1bGwsCisgICAgICAweEI1NzM1QzkwNEM3MEEyMzl1
bGwsIDB4RDU5RTlFMEJDQkFBREUxNHVsbCwgMHhFRUNDODZCQzYwNjIyQ0E3dWxsLAorICAgICAg
MHg0ODY0ZjIyYzA1OWJmMjlldWxsLCAweDI0Nzg1NmQ4Yjg2MjY2NWN1bGwsIDB4ZTQ2ZTg2ZTlh
MTMzN2UxMHVsbCwKKyAgICAgIDB4ZDhjODU0MWYzNTE5YjEzM3VsbCwgMHhlNzViNTE2MmM1Njdi
OWU0dWxsLCAweGY3MzJlNWRlZDcwMDljNWJ1bGwsCisgICAgICAweGIxNzBiOTgzNTMxMjFlYWN1
bGwsIDB4MWVjMmU4OTg2ZDIzNjJjYXVsbCwgMHg4MTRjOGUzNWZlOWE5NjFhdWxsLAorICAgICAg
MHgwYzNjZDU5YzliNjM4YTAydWxsLCAweGNiM2JiNjQ3OGEwNzcxNWN1bGwsIDB4MTIyNGU2MmM5
NzhiYmM3ZnVsbCwKKyAgICAgIDB4NjcxZWYyY2IwNGU4MWY2ZXVsbCwgMHgzYzFjYmQ4MTFlYWYx
ODA4dWxsLCAweDFiYmMyM2NmYThmYWM3MjF1bGwsCisgICAgICAweGE0YzJjZGE2NWU1OTZhNTF1
bGwsIDB4Yjc3MjE2ZmFkMzdhZGY5MXVsbCwgMHg4MzZkNzk0NDU3YzA4ODQ5dWxsLAorICAgICAg
MHhlMDgzZGYwMzQ3NWY0OWQ3dWxsLCAweGJjOWZlYjUxMmU2YjBkNmN1bGwsIDB4YjEyZDc0ZmRk
NzE4YzhjNXVsbCwKKyAgICAgIDB4MTJmZjA5NjUzYmZiZTRjYXVsbCwgMHg4ZGQwM2ExMDViYzRl
ZTdldWxsLCAweDU3MzgzNDEwNDViYTBkODV1bGwsCisgICAgICAweGYzZmQ3MjJkYzY1YWQwOWV1
bGwsIDB4ZmExNGZkMjFlYTJhNTcwNXVsbCwgMHhmZmU2ZWE0ZDZlZGIwYzczdWxsLAorICAgICAg
MHhEMDdFOUVGRTJCRjExRkI0dWxsLCAweDk1REJEQTREQUU5MDkxOTh1bGwsIDB4RUFBRDhFNzE2
QjkzRDVBMHVsbCwKKyAgICAgIDB4RDA4RUQxRDBBRkM3MjVFMHVsbCwgMHg4RTNDNUIyRjhFNzU5
NEI3dWxsLCAweDhGRjZFMkZCRjIxMjJCNjR1bGwsCisgICAgICAweDg4ODhCODEyOTAwREYwMUN1
bGwsIDB4NEZBRDVFQTA2ODhGQzMxQ3VsbCwgMHhEMUNGRjE5MUIzQThDMUFEdWxsLAorICAgICAg
MHgyRjJGMjIxOEJFMEUxNzc3dWxsLCAweEVBNzUyREZFOEIwMjFGQTF1bGwsIDB4RTVBMENDMEZC
NTZGNzRFOHVsbCwKKyAgICAgIDB4MThBQ0YzRDZDRTg5RTI5OXVsbCwgMHhCNEE4NEZFMEZEMTNF
MEI3dWxsLCAweDdDQzQzQjgxRDJBREE4RDl1bGwsCisgICAgICAweDE2NUZBMjY2ODA5NTc3MDV1
bGwsIDB4OTNDQzczMTQyMTFBMTQ3N3VsbCwgMHhFNkFEMjA2NTc3QjVGQTg2dWxsLAorICAgICAg
MHhDNzU0NDJGNUZCOUQzNUNGdWxsLCAweEVCQ0RBRjBDN0IzRTg5QTB1bGwsIDB4RDY0MTFCRDNB
RTFFN0U0OXVsbCwKKyAgICAgIDB4MDAyNTBFMkQyMDcxQjM1RXVsbCwgMHgyMjY4MDBCQjU3QjhF
MEFGdWxsLCAweDI0NjQzNjlCRjAwOUI5MUV1bGwsCisgICAgICAweDU1NjM5MTFENTlERkE2QUF1
bGwsIDB4NzhDMTQzODlEOTVBNTM3RnVsbCwgMHgyMDdENUJBMjAyRTVCOUM1dWxsLAorICAgICAg
MHg4MzI2MDM3NjYyOTVDRkE5dWxsLCAweDExQzgxOTY4NEU3MzRBNDF1bGwsIDB4QjM0NzJEQ0E3
QjE0QTk0QXVsbCwKKyAgfSk7CisKKyAgc3RkOjp2ZWN0b3I8aW50PiBvdXRwdXQoMTApOworCisg
IC8vIE1ldGhvZCAxLgorICB7CisgICAgYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248aW50PiBk
aXN0KDUpOworICAgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdpbihvdXRwdXQpLCBzdGQ6OmVuZChv
dXRwdXQpLAorICAgICAgICAgICAgICAgICAgWyZdIHsgcmV0dXJuIGRpc3QodXJiZyk7IH0pOwor
ICB9CisgIEVYUEVDVF9USEFUKG91dHB1dCwgIC8vIG1lYW4gPSA0LjIKKyAgICAgICAgICAgICAg
RWxlbWVudHNBcmUoMSwgMCwgMCwgNCwgMiwgMTAsIDMsIDMsIDcsIDEyKSk7CisKKyAgLy8gTWV0
aG9kIDIuCisgIHsKKyAgICB1cmJnLnJlc2V0KCk7CisgICAgYWJzbDo6cG9pc3Nvbl9kaXN0cmli
dXRpb248aW50PiBkaXN0KDI1KTsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0
KSwgc3RkOjplbmQob3V0cHV0KSwKKyAgICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBkaXN0
KHVyYmcpOyB9KTsKKyAgfQorICBFWFBFQ1RfVEhBVChvdXRwdXQsICAvLyBtZWFuID0gMTkuOAor
ICAgICAgICAgICAgICBFbGVtZW50c0FyZSg5LCAzNSwgMTgsIDEwLCAzNSwgMTgsIDEwLCAzNSwg
MTgsIDEwKSk7CisKKyAgLy8gTWV0aG9kIDMuCisgIHsKKyAgICB1cmJnLnJlc2V0KCk7CisgICAg
YWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248aW50PiBkaXN0KDEyMSk7CisgICAgc3RkOjpnZW5l
cmF0ZShzdGQ6OmJlZ2luKG91dHB1dCksIHN0ZDo6ZW5kKG91dHB1dCksCisgICAgICAgICAgICAg
ICAgICBbJl0geyByZXR1cm4gZGlzdCh1cmJnKTsgfSk7CisgIH0KKyAgRVhQRUNUX1RIQVQob3V0
cHV0LCAgLy8gbWVhbiA9IDEyNC4xCisgICAgICAgICAgICAgIEVsZW1lbnRzQXJlKDE2MSwgMTIy
LCAxMjksIDEyNCwgMTEyLCAxMTIsIDExNywgMTIwLCAxMzAsIDExNCkpOworfQorCitURVNUKFBv
aXNzb25EaXN0cmlidXRpb25UZXN0LCBBbGdvcml0aG1FeHBlY3RlZFZhbHVlXzEpIHsKKyAgLy8g
VGhpcyB0ZXN0cyBzbWFsbCB2YWx1ZXMgb2YgdGhlIEtudXRoIG1ldGhvZC4KKyAgLy8gVGhlIHVu
ZGVybHlpbmcgdW5pZm9ybSBkaXN0cmlidXRpb24gd2lsbCBnZW5lcmF0ZSBleGFjdGx5IDAuNS4K
KyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoezB4ODAwMDAwMDAw
MDAwMDAwMXVsbH0pOworICBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxpbnQ+IGRpc3QoNSk7
CisgIEVYUEVDVF9FUSg3LCBkaXN0KHVyYmcpKTsKK30KKworVEVTVChQb2lzc29uRGlzdHJpYnV0
aW9uVGVzdCwgQWxnb3JpdGhtRXhwZWN0ZWRWYWx1ZV8yKSB7CisgIC8vIFRoaXMgdGVzdHMgbGFy
Z2VyIHZhbHVlcyBvZiB0aGUgS251dGggbWV0aG9kLgorICAvLyBUaGUgdW5kZXJseWluZyB1bmlm
b3JtIGRpc3RyaWJ1dGlvbiB3aWxsIGdlbmVyYXRlIGV4YWN0bHkgMC41LgorICBhYnNsOjpyYW5k
b21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZyh7MHg4MDAwMDAwMDAwMDAwMDAxdWxsfSk7
CisgIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPGludD4gZGlzdCgyNSk7CisgIEVYUEVDVF9F
USgzNiwgZGlzdCh1cmJnKSk7Cit9CisKK1RFU1QoUG9pc3NvbkRpc3RyaWJ1dGlvblRlc3QsIEFs
Z29yaXRobUV4cGVjdGVkVmFsdWVfMykgeworICAvLyBUaGlzIHZhcmlhbnQgdXNlcyB0aGUgcmF0
aW8gb2YgdW5pZm9ybXMgbWV0aG9kLgorICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNl
X3VyYmcgdXJiZygKKyAgICAgIHsweDdmZmZmZmZmZmZmZmZmZmZ1bGwsIDB4ODAwMDAwMDAwMDAw
MDAwMHVsbH0pOworCisgIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPGludD4gZGlzdCgxMjEp
OworICBFWFBFQ1RfRVEoMTIxLCBkaXN0KHVyYmcpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcmFuZG9tLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcmFuZG9tLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRjNjg1MmY0YWRmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3JhbmRvbS5oCkBAIC0wLDAgKzEsMTg3IEBACisv
LyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8gRmlsZTogcmFuZG9tLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyB0aGUgcmVjb21tZW5kZWQgVW5pZm9ybSBSYW5kb20g
Qml0IEdlbmVyYXRvciAoVVJCRykKKy8vIHR5cGVzIGZvciB1c2Ugd2l0aGluIHRoZSBBYnNlaWwg
UmFuZG9tIGxpYnJhcnkuIFRoZXNlIHR5cGVzIGFyZSBub3QKKy8vIHN1aXRhYmxlIGZvciBzZWN1
cml0eS1yZWxhdGVkIHVzZS1jYXNlcywgYnV0IHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IG90aGVy
CisvLyB1c2VzIG9mIGdlbmVyYXRpbmcgcmFuZG9tIHZhbHVlcy4KKy8vCisvLyBUaGUgQWJzZWls
IHJhbmRvbSBsaWJyYXJ5IHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgVVJCRyB0eXBlczoKKy8vCisv
LyAgICogQml0R2VuLCBhIGdvb2QgZ2VuZXJhbC1wdXJwb3NlIGJpdCBnZW5lcmF0b3IsIG9wdGlt
aXplZCBmb3IgZ2VuZXJhdGluZworLy8gICAgIHJhbmRvbSAoYnV0IG5vdCBjcnlwdG9ncmFwaGlj
YWxseSBzZWN1cmUpIHZhbHVlcworLy8gICAqIEluc2VjdXJlQml0R2VuLCBhIHNsaWdodGx5IGZh
c3RlciwgdGhvdWdoIGxlc3MgcmFuZG9tLCBiaXQgZ2VuZXJhdG9yLCBmb3IKKy8vICAgICBjYXNl
cyB3aGVyZSB0aGUgZXhpc3RpbmcgQml0R2VuIGlzIGEgZHJhZyBvbiBwZXJmb3JtYW5jZS4KKwor
I2lmbmRlZiBBQlNMX1JBTkRPTV9SQU5ET01fSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fUkFORE9N
X0hfCisKKyNpbmNsdWRlIDxyYW5kb20+CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9kaXN0cmli
dXRpb25zLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9yYW5kb20v
aW50ZXJuYWwvbm9uc2VjdXJlX2Jhc2UuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNs
dWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9wY2dfZW5naW5lLmgiICAvLyBJV1lVIHByYWdtYTog
ZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJnLmgiCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2VuZ2luZS5oIgorI2luY2x1ZGUgImFi
c2wvcmFuZG9tL3NlZWRfc2VxdWVuY2VzLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisKK25h
bWVzcGFjZSBhYnNsIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6OkJpdEdl
bgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBgYWJzbDo6Qml0R2VuYCBpcyBhIGdl
bmVyYWwtcHVycG9zZSByYW5kb20gYml0IGdlbmVyYXRvciBmb3IgZ2VuZXJhdGluZworLy8gcmFu
ZG9tIHZhbHVlcyBmb3IgdXNlIHdpdGhpbiB0aGUgQWJzZWlsIHJhbmRvbSBsaWJyYXJ5LiBUeXBp
Y2FsbHksIHlvdSB1c2UgYQorLy8gYml0IGdlbmVyYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGEg
ZGlzdHJpYnV0aW9uIHRvIHByb3ZpZGUgcmFuZG9tIHZhbHVlcy4KKy8vCisvLyBFeGFtcGxlOgor
Ly8KKy8vICAgLy8gQ3JlYXRlIGFuIGFic2w6OkJpdEdlbi4gVGhlcmUgaXMgbm8gbmVlZCB0byBz
ZWVkIHRoaXMgYml0IGdlbmVyYXRvci4KKy8vICAgYWJzbDo6Qml0R2VuIGdlbjsKKy8vCisvLyAg
IC8vIEdlbmVyYXRlIGFuIGludGVnZXIgdmFsdWUgaW4gdGhlIGNsb3NlZCBpbnRlcnZhbCBbMSw2
XQorLy8gICBpbnQgZGllX3JvbGwgPSBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50
PigxLCA2KShnZW4pOworLy8KKy8vIGBhYnNsOjpCaXRHZW5gIGlzIHNlZWRlZCBieSBkZWZhdWx0
IHdpdGggbm9uLWRldGVybWluaXN0aWMgZGF0YSB0byBwcm9kdWNlCisvLyBkaWZmZXJlbnQgc2Vx
dWVuY2VzIG9mIHJhbmRvbSB2YWx1ZXMgYWNyb3NzIGRpZmZlcmVudCBpbnN0YW5jZXMsIGluY2x1
ZGluZworLy8gZGlmZmVyZW50IGJpbmFyeSBpbnZvY2F0aW9ucy4gVGhpcyBiZWhhdmlvciBpcyBk
aWZmZXJlbnQgdGhhbiB0aGUgc3RhbmRhcmQKKy8vIGxpYnJhcnkgYml0IGdlbmVyYXRvcnMsIHdo
aWNoIHVzZSBnb2xkZW4gdmFsdWVzIGFzIHRoZWlyIHNlZWRzLiBEZWZhdWx0CisvLyBjb25zdHJ1
Y3Rpb24gaW50ZW50aW9uYWxseSBwcm92aWRlcyBubyBzdGFiaWxpdHkgZ3VhcmFudGVlcywgdG8g
YXZvaWQKKy8vIGFjY2lkZW50YWwgZGVwZW5kZW5jZSBvbiBzdWNoIGEgcHJvcGVydHkuCisvLwor
Ly8gYGFic2w6OkJpdEdlbmAgbWF5IGJlIGNvbnN0cnVjdGVkIHdpdGggYW4gb3B0aW9uYWwgc2Vl
ZCBzZXF1ZW5jZSB0eXBlLAorLy8gY29uZm9ybWluZyB0byBbcmFuZC5yZXEuc2VlZF9zZXFdLCB3
aGljaCB3aWxsIGJlIG1peGVkIHdpdGggYWRkaXRpb25hbAorLy8gbm9uLWRldGVybWluaXN0aWMg
ZGF0YS4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAvLyBDcmVhdGUgYW4gYWJzbDo6Qml0R2Vu
IHVzaW5nIGFuIHN0ZDo6c2VlZF9zZXEgc2VlZCBzZXF1ZW5jZQorLy8gIHN0ZDo6c2VlZF9zZXEg
c2VxezEsMiwzfTsKKy8vICBhYnNsOjpCaXRHZW4gZ2VuX3dpdGhfc2VlZChzZXEpOworLy8KKy8v
ICAvLyBHZW5lcmF0ZSBhbiBpbnRlZ2VyIHZhbHVlIGluIHRoZSBjbG9zZWQgaW50ZXJ2YWwgWzEs
Nl0KKy8vICBpbnQgZGllX3JvbGwyID0gYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGlu
dD4oMSwgNikoZ2VuX3dpdGhfc2VlZCk7CisvLworLy8gYGFic2w6OkJpdEdlbmAgbWVldHMgdGhl
IHJlcXVpcmVtZW50cyBvZiB0aGUgVW5pZm9ybSBSYW5kb20gQml0IEdlbmVyYXRvcgorLy8gKFVS
QkcpIGNvbmNlcHQgYXMgcGVyIHRoZSBDKysxNyBzdGFuZGFyZCBbcmFuZC5yZXEudXJuZ10gdGhv
dWdoIGRpZmZlcnMKKy8vIHNsaWdodGx5IHdpdGggW3JhbmQucmVxLmVuZ10uIExpa2UgaXRzIHN0
YW5kYXJkIGxpYnJhcnkgZXF1aXZhbGVudHMgKGUuZy4KKy8vIGBzdGQ6Om1lcnNlbm5lX3R3aXN0
ZXJfZW5naW5lYCkgYGFic2w6OkJpdEdlbmAgaXMgbm90IGNyeXB0b2dyYXBoaWNhbGx5CisvLyBz
ZWN1cmUuCisvLworLy8gQ29uc3RydWN0aW5nIHR3byBgYWJzbDo6Qml0R2VuYHMgd2l0aCB0aGUg
c2FtZSBzZWVkIHNlcXVlbmNlIGluIHRoZSBzYW1lCisvLyBiaW5hcnkgd2lsbCBwcm9kdWNlIHRo
ZSBzYW1lIHNlcXVlbmNlIG9mIHZhcmlhdGVzIHdpdGhpbiB0aGUgc2FtZSBiaW5hcnksIGJ1dAor
Ly8gbmVlZCBub3QgZG8gc28gYWNyb3NzIG11bHRpcGxlIGJpbmFyeSBpbnZvY2F0aW9ucy4KKy8v
CisvLyBUaGlzIHR5cGUgaGFzIGJlZW4gb3B0aW1pemVkIHRvIHBlcmZvcm0gYmV0dGVyIHRoYW4g
TWVyc2VubmUgVHdpc3RlcgorLy8gKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lcnNl
bm5lX1R3aXN0ZXIpIGFuZCBtYW55IG90aGVyIGNvbXBsZXggVVJCRworLy8gdHlwZXMgb24gbW9k
ZXJuIHg4NiwgQVJNLCBhbmQgUFBDIGFyY2hpdGVjdHVyZXMuCisvLworLy8gVGhpcyB0eXBlIGlz
IHRocmVhZC1jb21wYXRpYmxlLCBidXQgbm90IHRocmVhZC1zYWZlLgorCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vIGFic2w6OkJpdEdlbiBtZW1iZXIgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworLy8gYWJzbDo6Qml0R2VuOjpvcGVyYXRvcigpKCkKKy8vCisvLyBDYWxscyB0
aGUgQml0R2VuLCByZXR1cm5pbmcgYSBnZW5lcmF0ZWQgdmFsdWUuCisKKy8vIGFic2w6OkJpdEdl
bjo6bWluKCkKKy8vCisvLyBSZXR1cm5zIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSB2YWx1ZSBmcm9t
IHRoaXMgYml0IGdlbmVyYXRvci4KKworLy8gYWJzbDo6Qml0R2VuOjptYXgoKQorLy8KKy8vIFJl
dHVybnMgdGhlIGxhcmdlc3QgcG9zc2libGUgdmFsdWUgZnJvbSB0aGlzIGJpdCBnZW5lcmF0b3Iu
LCBhbmQKKworLy8gYWJzbDo6Qml0R2VuOjpkaXNjYXJkKG51bSkKKy8vCisvLyBBZHZhbmNlcyB0
aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhpcyBiaXQgZ2VuZXJhdG9yIGJ5IGBudW1gIHRpbWVzLCBh
bmQKKy8vIGRpc2NhcmRzIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0cy4KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCit1c2luZyBCaXRHZW4gPSByYW5kb21faW50ZXJuYWw6Ok5vbnNlY3VyZVVSQkdC
YXNlPAorICAgIHJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTx1aW50NjRfdD4+OworCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6SW5zZWN1cmVCaXRHZW4KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gYGFic2w6Okluc2VjdXJlQml0R2VuYCBpcyBhbiBlZmZp
Y2llbnQgcmFuZG9tIGJpdCBnZW5lcmF0b3IgZm9yIGdlbmVyYXRpbmcKKy8vIHJhbmRvbSB2YWx1
ZXMsIHJlY29tbWVuZGVkIG9ubHkgZm9yIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSB1c2UgY2FzZXMg
d2hlcmUKKy8vIGBhYnNsOjpCaXRHZW5gIGlzIG5vdCBzYXRpc2ZhY3Rvcnkgd2hlbiBjb21wdXRl
LWJvdW5kZWQgYnkgYml0IGdlbmVyYXRpb24KKy8vIGNvc3RzLgorLy8KKy8vIEV4YW1wbGU6Cisv
LworLy8gICAvLyBDcmVhdGUgYW4gYWJzbDo6SW5zZWN1cmVCaXRHZW4KKy8vICAgYWJzbDo6SW5z
ZWN1cmVCaXRHZW4gZ2VuOworLy8gICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDAwMDA7IGkr
KykgeworLy8KKy8vICAgICAvLyBHZW5lcmF0ZSBhIGJ1bmNoIG9mIHJhbmRvbSB2YWx1ZXMgZnJv
bSBzb21lIGNvbXBsZXggZGlzdHJpYnV0aW9uCisvLyAgICAgYXV0byBteV9ybmQgPSBzb21lX2Rp
c3RyaWJ1dGlvbihnZW4sIDEsIDEwMDApOworLy8gICB9CisvLworLy8gTGlrZSBgYWJzbDo6Qml0
R2VuYCwgYGFic2w6Okluc2VjdXJlQml0R2VuYCBpcyBzZWVkZWQgYnkgZGVmYXVsdCB3aXRoCisv
LyBub24tZGV0ZXJtaW5pc3RpYyBkYXRhIHRvIHByb2R1Y2UgZGlmZmVyZW50IHNlcXVlbmNlcyBv
ZiByYW5kb20gdmFsdWVzIGFjcm9zcworLy8gZGlmZmVyZW50IGluc3RhbmNlcywgaW5jbHVkaW5n
IGRpZmZlcmVudCBiaW5hcnkgaW52b2NhdGlvbnMuIChUaGlzIGJlaGF2aW9yCisvLyBpcyBkaWZm
ZXJlbnQgdGhhbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBiaXQgZ2VuZXJhdG9ycywgd2hpY2ggdXNl
IGdvbGRlbgorLy8gdmFsdWVzIGFzIHRoZWlyIHNlZWRzLikKKy8vCisvLyBgYWJzbDo6SW5zZWN1
cmVCaXRHZW5gIG1heSBiZSBjb25zdHJ1Y3RlZCB3aXRoIGFuIG9wdGlvbmFsIHNlZWQgc2VxdWVu
Y2UKKy8vIHR5cGUsIGNvbmZvcm1pbmcgdG8gW3JhbmQucmVxLnNlZWRfc2VxXSwgd2hpY2ggd2ls
bCBiZSBtaXhlZCB3aXRoIGFkZGl0aW9uYWwKKy8vIG5vbi1kZXRlcm1pbmlzdGljIGRhdGEuIChT
ZWUgc3RkX3NlZWRfc2VxLmggZm9yIG1vcmUgaW5mb3JtYXRpb24uKQorLy8KKy8vIGBhYnNsOjpJ
bnNlY3VyZUJpdEdlbmAgbWVldHMgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgVW5pZm9ybSBSYW5k
b20gQml0CisvLyBHZW5lcmF0b3IgKFVSQkcpIGNvbmNlcHQgYXMgcGVyIHRoZSBDKysxNyBzdGFu
ZGFyZCBbcmFuZC5yZXEudXJuZ10gdGhvdWdoCisvLyBpdHMgaW1wbGVtZW50YXRpb24gZGlmZmVy
cyBzbGlnaHRseSB3aXRoIFtyYW5kLnJlcS5lbmddLiBMaWtlIGl0cyBzdGFuZGFyZAorLy8gbGli
cmFyeSBlcXVpdmFsZW50cyAoZS5nLiBgc3RkOjptZXJzZW5uZV90d2lzdGVyX2VuZ2luZWApCisv
LyBgYWJzbDo6SW5zZWN1cmVCaXRHZW5gIGlzIG5vdCBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUu
CisvLworLy8gUHJlZmVyIGBhYnNsOjpCaXRHZW5gIG92ZXIgYGFic2w6Okluc2VjdXJlQml0R2Vu
YCBhcyB0aGUgZ2VuZXJhbCB0eXBlIGlzCisvLyBvZnRlbiBmYXN0IGVub3VnaCBmb3IgdGhlIHZh
c3QgbWFqb3JpdHkgb2YgYXBwbGljYXRpb25zLgorCit1c2luZyBJbnNlY3VyZUJpdEdlbiA9Cisg
ICAgcmFuZG9tX2ludGVybmFsOjpOb25zZWN1cmVVUkJHQmFzZTxyYW5kb21faW50ZXJuYWw6OnBj
ZzY0XzIwMThfZW5naW5lPjsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNsOjpJbnNl
Y3VyZUJpdEdlbiBtZW1iZXIgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8g
YWJzbDo6SW5zZWN1cmVCaXRHZW46Om9wZXJhdG9yKCkoKQorLy8KKy8vIENhbGxzIHRoZSBJbnNl
Y3VyZUJpdEdlbiwgcmV0dXJuaW5nIGEgZ2VuZXJhdGVkIHZhbHVlLgorCisvLyBhYnNsOjpJbnNl
Y3VyZUJpdEdlbjo6bWluKCkKKy8vCisvLyBSZXR1cm5zIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSB2
YWx1ZSBmcm9tIHRoaXMgYml0IGdlbmVyYXRvci4KKworLy8gYWJzbDo6SW5zZWN1cmVCaXRHZW46
Om1heCgpCisvLworLy8gUmV0dXJucyB0aGUgbGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSBmcm9tIHRo
aXMgYml0IGdlbmVyYXRvci4KKworLy8gYWJzbDo6SW5zZWN1cmVCaXRHZW46OmRpc2NhcmQobnVt
KQorLy8KKy8vIEFkdmFuY2VzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGlzIGJpdCBnZW5lcmF0
b3IgYnkgYG51bWAgdGltZXMsIGFuZAorLy8gZGlzY2FyZHMgdGhlIGludGVybWVkaWF0ZSByZXN1
bHRzLgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNl
bmRpZiAgLy8gQUJTTF9SQU5ET01fUkFORE9NX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
c2VlZF9nZW5fZXhjZXB0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3NlZWRfZ2VuX2V4Y2VwdGlvbi5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTQyNzFiYWFhMDcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9nZW5fZXhjZXB0aW9uLmNjCkBAIC0w
LDAgKzEsNDQgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vc2VlZF9nZW5fZXhjZXB0aW9uLmgiCisKKyNpbmNsdWRlIDxp
b3N0cmVhbT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKKworbmFtZXNwYWNlIGFi
c2wgeworCitzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIga0V4Y2VwdGlvbk1lc3NhZ2VbXSA9
CisgICAgIkZhaWxlZCBnZW5lcmF0aW5nIHNlZWQtbWF0ZXJpYWwgZm9yIFVSQkcuIjsKKworU2Vl
ZEdlbkV4Y2VwdGlvbjo6flNlZWRHZW5FeGNlcHRpb24oKSA9IGRlZmF1bHQ7CisKK2NvbnN0IGNo
YXIqIFNlZWRHZW5FeGNlcHRpb246OndoYXQoKSBjb25zdCBub2V4Y2VwdCB7CisgIHJldHVybiBr
RXhjZXB0aW9uTWVzc2FnZTsKK30KKworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKK3Zv
aWQgVGhyb3dTZWVkR2VuRXhjZXB0aW9uKCkgeworI2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJT05T
CisgIHRocm93IGFic2w6OlNlZWRHZW5FeGNlcHRpb24oKTsKKyNlbHNlCisgIHN0ZDo6Y2VyciA8
PCBrRXhjZXB0aW9uTWVzc2FnZSA8PCBzdGQ6OmVuZGw7CisgIHN0ZDo6dGVybWluYXRlKCk7Cisj
ZW5kaWYKK30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNw
YWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9zZWVkX2dlbl9leGNlcHRpb24uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9zZWVkX2dlbl9leGNlcHRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uYjQ2NGQ1MmZiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vc2VlZF9nZW5fZXhjZXB0aW9uLmgKQEAgLTAsMCArMSw1MSBAQAorLy8gQ29weXJpZ2h0
IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vIEZpbGU6IHNlZWRfZ2VuX2V4Y2VwdGlvbi5oCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIFRoaXMgaGVhZGVyIGRlZmluZXMgYW4gZXhjZXB0aW9uIGNsYXNzIHdoaWNoIG1heSBi
ZSB0aHJvd24gaWYgdW5wcmVkaWN0YWJsZQorLy8gZXZlbnRzIHByZXZlbnQgdGhlIGRlcml2YXRp
b24gb2Ygc3VpdGFibGUgc2VlZC1tYXRlcmlhbCBmb3IgY29uc3RydWN0aW5nIGEKKy8vIGJpdCBn
ZW5lcmF0b3IgY29uZm9ybWluZyB0byBbcmFuZC5yZXEudXJuZ10gKGVnLiBlbnRyb3B5IGNhbm5v
dCBiZSByZWFkIGZyb20KKy8vIC9kZXYvdXJhbmRvbSBvbiBhIFVuaXgtYmFzZWQgc3lzdGVtKS4K
Ky8vCisvLyBOb3RlOiBpZiBleGNlcHRpb25zIGFyZSBkaXNhYmxlZCwgYHN0ZDo6dGVybWluYXRl
KClgIGlzIGNhbGxlZCBpbnN0ZWFkLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX1NFRURfR0VOX0VY
Q0VQVElPTl9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9TRUVEX0dFTl9FWENFUFRJT05fSF8KKwor
I2luY2x1ZGUgPGV4Y2VwdGlvbj4KKworbmFtZXNwYWNlIGFic2wgeworCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8gU2VlZEdlbkV4Y2VwdGlvbgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K2NsYXNzIFNlZWRHZW5FeGNlcHRpb24gOiBwdWJsaWMgc3RkOjpleGNlcHRpb24geworIHB1Ymxp
YzoKKyAgU2VlZEdlbkV4Y2VwdGlvbigpID0gZGVmYXVsdDsKKyAgflNlZWRHZW5FeGNlcHRpb24o
KSBvdmVycmlkZTsKKyAgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IG5vZXhjZXB0IG92ZXJyaWRl
OworfTsKKworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKKy8vIHRocm93IGRlbGVnYXRv
cgorW1tub3JldHVybl1dIHZvaWQgVGhyb3dTZWVkR2VuRXhjZXB0aW9uKCk7CisKK30gIC8vIG5h
bWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAg
Ly8gQUJTTF9SQU5ET01fU0VFRF9HRU5fRVhDRVBUSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vc2VlZF9zZXF1ZW5jZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXMuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjlmMzE5NjE1Mjg5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3NlZWRfc2VxdWVuY2VzLmNjCkBAIC0wLDAgKzEs
MjcgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXMuaCIKKworI2luY2x1ZGUgImFic2wvcmFuZG9t
L2ludGVybmFsL3Bvb2xfdXJiZy5oIgorCituYW1lc3BhY2UgYWJzbCB7CisKK1NlZWRTZXEgTWFr
ZVNlZWRTZXEoKSB7CisgIFNlZWRTZXE6OnJlc3VsdF90eXBlIHNlZWRfbWF0ZXJpYWxbOF07Cisg
IHJhbmRvbV9pbnRlcm5hbDo6UmFuZGVuUG9vbDx1aW50MzJfdD46OkZpbGwoYWJzbDo6TWFrZVNw
YW4oc2VlZF9tYXRlcmlhbCkpOworICByZXR1cm4gU2VlZFNlcShzdGQ6OmJlZ2luKHNlZWRfbWF0
ZXJpYWwpLCBzdGQ6OmVuZChzZWVkX21hdGVyaWFsKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9zZWVkX3NlcXVlbmNlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi42MzFkMWVjZDRlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9zZWVkX3Nl
cXVlbmNlcy5oCkBAIC0wLDAgKzEsMTA4IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogc2VlZF9z
ZXF1ZW5jZXMuaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlzIGhlYWRlciBj
b250YWlucyB1dGlsaXRpZXMgZm9yIGNyZWF0aW5nIGFuZCB3b3JraW5nIHdpdGggc2VlZCBzZXF1
ZW5jZXMKKy8vIGNvbmZvcm1pbmcgdG8gW3JhbmQucmVxLnNlZWRzZXFdLiBJbiBnZW5lcmFsLCBk
aXJlY3QgY29uc3RydWN0aW9uIG9mIHNlZWQKKy8vIHNlcXVlbmNlcyBpcyBkaXNjb3VyYWdlZCwg
YnV0IHVzZS1jYXNlcyBmb3IgY29uc3RydWN0aW9uIG9mIGlkZW50aWNhbCBiaXQKKy8vIGdlbmVy
YXRvcnMgKHVzaW5nIHRoZSBzYW1lIHNlZWQgc2VxdWVuY2UpIG1heSBiZSBoZWxwZnVsIChlLmcu
IHJlcGxheWluZyBhCisvLyBzaW11bGF0aW9uIHdob3NlIHN0YXRlIGlzIGRlcml2ZWQgZnJvbSB2
YXJpYXRlcyBvZiBhIGJpdCBnZW5lcmF0b3IpLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX1NFRURf
U0VRVUVOQ0VTX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX1NFRURfU0VRVUVOQ0VTX0hfCisKKyNp
bmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5kb20+CisKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9zYWx0ZWRfc2VlZF9zZXEuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9p
bnRlcm5hbC9zZWVkX21hdGVyaWFsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vc2VlZF9nZW5f
ZXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9zcGFuLmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6OlNlZWRTZXEKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gYGFic2w6OlNlZWRTZXFgIGNvbnN0cnVjdHMgYSBz
ZWVkIHNlcXVlbmNlIGFjY29yZGluZyB0byBbcmFuZC5yZXEuc2VlZHNlcV0KKy8vIGZvciB1c2Ug
d2l0aGluIGJpdCBnZW5lcmF0b3JzLiBgYWJzbDo6U2VlZFNlcWAsIHVubGlrZSBgc3RkOjpzZWVk
X3NlcWAKKy8vIGFkZGl0aW9uYWxseSBzYWx0cyB0aGUgZ2VuZXJhdGVkIHNlZWRzIHdpdGggZXh0
cmEgaW1wbGVtZW50YXRpb24tZGVmaW5lZAorLy8gZW50cm9weS4gRm9yIHRoYXQgcmVhc29uLCB5
b3UgY2FuIHVzZSBgYWJzbDo6U2VlZFNlcWAgaW4gY29tYmluYXRpb24gd2l0aAorLy8gc3RhbmRh
cmQgbGlicmFyeSBiaXQgZ2VuZXJhdG9ycyAoZS5nLiBgc3RkOjptdDE5OTM3YCkgdG8gaW50cm9k
dWNlCisvLyBub24tZGV0ZXJtaW5pc20gaW4geW91ciBzZWVkcy4KKy8vCisvLyBFeGFtcGxlOgor
Ly8KKy8vICAgYWJzbDo6U2VlZFNlcSBteV9zZWVkX3NlcSh7YSwgYiwgY30pOworLy8gICBzdGQ6
Om10MTk5MzcgbXlfYml0Z2VuKG15X3NlZWRfc2VxKTsKKy8vCit1c2luZyBTZWVkU2VxID0gcmFu
ZG9tX2ludGVybmFsOjpTYWx0ZWRTZWVkU2VxPHN0ZDo6c2VlZF9zZXE+OworCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6Q3JlYXRlU2VlZFNlcUZyb20oYml0Z2VuKikKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQ29uc3RydWN0cyBhIHNlZWQgc2VxdWVuY2UgY29u
Zm9ybWluZyB0byBbcmFuZC5yZXEuc2VlZHNlcV0gdXNpbmcgdmFyaWF0ZXMKKy8vIHByb2R1Y2Vk
IGJ5IGEgcHJvdmlkZWQgYml0IGdlbmVyYXRvci4KKy8vCisvLyBZb3Ugc2hvdWxkIGdlbmVyYWxs
eSBhdm9pZCBkaXJlY3QgY29uc3RydWN0aW9uIG9mIHNlZWQgc2VxdWVuY2VzLCBidXQKKy8vIHVz
ZS1jYXNlcyBmb3IgcmV1c2Ugb2YgYSBzZWVkIHNlcXVlbmNlIHRvIGNvbnN0cnVjdCBpZGVudGlj
YWwgYml0IGdlbmVyYXRvcnMKKy8vIG1heSBiZSBoZWxwZnVsIChlZy4gcmVwbGF5aW5nIGEgc2lt
dWxhdGlvbiB3aG9zZSBzdGF0ZSBpcyBkZXJpdmVkIGZyb20gYml0CisvLyBnZW5lcmF0b3IgdmFs
dWVzKS4KKy8vCisvLyBJZiBiaXRnZW4gPT0gbnVsbHB0ciwgdGhlbiBiZWhhdmlvciBpcyB1bmRl
ZmluZWQuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkJpdEdlbiBteV9iaXRnZW47
CisvLyAgIGF1dG8gc2VlZF9zZXEgPSBhYnNsOjpDcmVhdGVTZWVkU2VxRnJvbSgmbXlfYml0Z2Vu
KTsKKy8vICAgYWJzbDo6Qml0R2VuIG5ld19lbmdpbmUoc2VlZF9zZXEpOyAvLyBkZXJpdmVkIGZy
b20gbXlfYml0Z2VuLCBidXQgbm90CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY29ycmVsYXRlZC4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK1NlZWRT
ZXEgQ3JlYXRlU2VlZFNlcUZyb20oVVJCRyogdXJiZykgeworICBTZWVkU2VxOjpyZXN1bHRfdHlw
ZQorICAgICAgc2VlZF9tYXRlcmlhbFtyYW5kb21faW50ZXJuYWw6OmtFbnRyb3B5QmxvY2tzTmVl
ZGVkXTsKKworICBpZiAoIXJhbmRvbV9pbnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21VUkJH
KAorICAgICAgICAgIHVyYmcsIGFic2w6Ok1ha2VTcGFuKHNlZWRfbWF0ZXJpYWwpKSkgeworICAg
IHJhbmRvbV9pbnRlcm5hbDo6VGhyb3dTZWVkR2VuRXhjZXB0aW9uKCk7CisgIH0KKyAgcmV0dXJu
IFNlZWRTZXEoc3RkOjpiZWdpbihzZWVkX21hdGVyaWFsKSwgc3RkOjplbmQoc2VlZF9tYXRlcmlh
bCkpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6TWFrZVNlZWRTZXEo
KQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBDb25zdHJ1Y3RzIGFuIGBhYnNsOjpT
ZWVkU2VxYCBzYWx0aW5nIHRoZSBnZW5lcmF0ZWQgdmFsdWVzIHVzaW5nCisvLyBpbXBsZW1lbnRh
dGlvbi1kZWZpbmVkIGVudHJvcHkuIFRoZSByZXR1cm5lZCBzZXF1ZW5jZSBjYW4gYmUgdXNlZCB0
byBjcmVhdGUKKy8vIGVxdWl2YWxlbnQgYml0IGdlbmVyYXRvcnMgY29ycmVsYXRlZCB1c2luZyB0
aGlzIHNlcXVlbmNlLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhdXRvIG15X3NlZWRfc2Vx
ID0gYWJzbDo6TWFrZVNlZWRTZXEoKTsKKy8vICAgc3RkOjptdDE5OTM3IHJuZzEobXlfc2VlZF9z
ZXEpOworLy8gICBzdGQ6Om10MTk5Mzcgcm5nMihteV9zZWVkX3NlcSk7CisvLyAgIEVYUEVDVF9F
UShybmcxKCksIHJuZzIoKSk7CisvLworU2VlZFNlcSBNYWtlU2VlZFNlcSgpOworCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX1NFRURfU0VRVUVOQ0VTX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXNfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9zZWVkX3NlcXVlbmNlc190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi4yY2M4YjBlNmYyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9zZWVkX3NlcXVlbmNlc190ZXN0LmNjCkBAIC0wLDAgKzEsMTI3IEBACisvLyBDb3B5cmlnaHQg
MjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL3NlZWRf
c2VxdWVuY2VzLmgiCisKKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5kb20+CisK
KyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvbm9uc2VjdXJlX2Jhc2UuaCIKKyNpbmNsdWRlICJh
YnNsL3JhbmRvbS9yYW5kb20uaCIKK25hbWVzcGFjZSB7CisKK1RFU1QoU2VlZFNlcXVlbmNlcywg
RXhhbXBsZXMpIHsKKyAgeworICAgIGFic2w6OlNlZWRTZXEgc2VlZF9zZXEoezEsIDIsIDN9KTsK
KyAgICBhYnNsOjpCaXRHZW4gYml0Z2VuKHNlZWRfc2VxKTsKKworICAgIEVYUEVDVF9ORSgwLCBi
aXRnZW4oKSk7CisgIH0KKyAgeworICAgIGFic2w6OkJpdEdlbiBlbmdpbmU7CisgICAgYXV0byBz
ZWVkX3NlcSA9IGFic2w6OkNyZWF0ZVNlZWRTZXFGcm9tKCZlbmdpbmUpOworICAgIGFic2w6OkJp
dEdlbiBiaXRnZW4oc2VlZF9zZXEpOworCisgICAgRVhQRUNUX05FKGVuZ2luZSgpLCBiaXRnZW4o
KSk7CisgIH0KKyAgeworICAgIGF1dG8gc2VlZF9zZXEgPSBhYnNsOjpNYWtlU2VlZFNlcSgpOwor
ICAgIHN0ZDo6bXQxOTkzNyByYW5kb20oc2VlZF9zZXEpOworCisgICAgRVhQRUNUX05FKDAsIHJh
bmRvbSgpKTsKKyAgfQorfQorCitURVNUKENyZWF0ZVNlZWRTZXFGcm9tLCBDb21wYXRpYmxlV2l0
aFN0ZFR5cGVzKSB7CisgIHVzaW5nIEV4YW1wbGVOb25zZWN1cmVVUkJHID0KKyAgICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6Tm9uc2VjdXJlVVJCR0Jhc2U8c3RkOjptaW5zdGRfcmFuZDA+Owor
CisgIC8vIENvbnN0cnVjdCBhIFVSQkcgaW5zdGFuY2UuCisgIEV4YW1wbGVOb25zZWN1cmVVUkJH
IHJuZzsKKworICAvLyBDb25zdHJ1Y3QgYSBTZWVkIFNlcXVlbmNlIGZyb20gaXRzIHZhcmlhdGVz
LgorICBhdXRvIHNlcV9mcm9tX3JuZyA9IGFic2w6OkNyZWF0ZVNlZWRTZXFGcm9tKCZybmcpOwor
CisgIC8vIEVuc3VyZSB0aGF0IGFub3RoZXIgVVJCRyBjYW4gYmUgdmFsaWRseSBjb25zdHJ1Y3Rl
ZCBmcm9tIHRoZSBTZWVkIFNlcXVlbmNlLgorICBzdGQ6Om10MTk5MzdfNjR7c2VxX2Zyb21fcm5n
fTsKK30KKworVEVTVChDcmVhdGVTZWVkU2VxRnJvbSwgQ29tcGF0aWJsZVdpdGhCaXRHZW5lcmF0
b3IpIHsKKyAgLy8gQ29uc3RydWN0IGEgVVJCRyBpbnN0YW5jZS4KKyAgYWJzbDo6Qml0R2VuIHJu
ZzsKKworICAvLyBDb25zdHJ1Y3QgYSBTZWVkIFNlcXVlbmNlIGZyb20gaXRzIHZhcmlhdGVzLgor
ICBhdXRvIHNlcV9mcm9tX3JuZyA9IGFic2w6OkNyZWF0ZVNlZWRTZXFGcm9tKCZybmcpOworCisg
IC8vIEVuc3VyZSB0aGF0IGFub3RoZXIgVVJCRyBjYW4gYmUgdmFsaWRseSBjb25zdHJ1Y3RlZCBm
cm9tIHRoZSBTZWVkIFNlcXVlbmNlLgorICBzdGQ6Om10MTk5MzdfNjR7c2VxX2Zyb21fcm5nfTsK
K30KKworVEVTVChDcmVhdGVTZWVkU2VxRnJvbSwgQ29tcGF0aWJsZVdpdGhJbnNlY3VyZUJpdEdl
bikgeworICAvLyBDb25zdHJ1Y3QgYSBVUkJHIGluc3RhbmNlLgorICBhYnNsOjpJbnNlY3VyZUJp
dEdlbiBybmc7CisKKyAgLy8gQ29uc3RydWN0IGEgU2VlZCBTZXF1ZW5jZSBmcm9tIGl0cyB2YXJp
YXRlcy4KKyAgYXV0byBzZXFfZnJvbV9ybmcgPSBhYnNsOjpDcmVhdGVTZWVkU2VxRnJvbSgmcm5n
KTsKKworICAvLyBFbnN1cmUgdGhhdCBhbm90aGVyIFVSQkcgY2FuIGJlIHZhbGlkbHkgY29uc3Ry
dWN0ZWQgZnJvbSB0aGUgU2VlZCBTZXF1ZW5jZS4KKyAgc3RkOjptdDE5OTM3XzY0e3NlcV9mcm9t
X3JuZ307Cit9CisKK1RFU1QoQ3JlYXRlU2VlZFNlcUZyb20sIENvbXBhdGlibGVXaXRoUmF3VVJC
RykgeworICAvLyBDb25zdHJ1Y3QgYSBVUkJHIGluc3RhbmNlLgorICBzdGQ6OnJhbmRvbV9kZXZp
Y2UgdXJhbmRvbTsKKworICAvLyBDb25zdHJ1Y3QgYSBTZWVkIFNlcXVlbmNlIGZyb20gaXRzIHZh
cmlhdGVzLCB1c2luZyA2NGIgb2Ygc2VlZC1tYXRlcmlhbC4KKyAgYXV0byBzZXFfZnJvbV9ybmcg
PSBhYnNsOjpDcmVhdGVTZWVkU2VxRnJvbSgmdXJhbmRvbSk7CisKKyAgLy8gRW5zdXJlIHRoYXQg
YW5vdGhlciBVUkJHIGNhbiBiZSB2YWxpZGx5IGNvbnN0cnVjdGVkIGZyb20gdGhlIFNlZWQgU2Vx
dWVuY2UuCisgIHN0ZDo6bXQxOTkzN182NHtzZXFfZnJvbV9ybmd9OworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVVJCRz4KK3ZvaWQgVGVzdFJlcHJvZHVjaWJsZVZhcmlhdGVTZXF1ZW5jZXNGb3JO
b25zZWN1cmVVUkJHKCkgeworICBjb25zdCBzaXplX3Qga051bVZhcmlhdGVzID0gMTAwMDsKKwor
ICAvLyBNYXN0ZXIgUk5HIGluc3RhbmNlLgorICBVUkJHIHJuZzsKKyAgLy8gUmV1c2VkIGZvciBi
b3RoIFJORyBpbnN0YW5jZXMuCisgIGF1dG8gcmV1c2FibGVfc2VlZCA9IGFic2w6OkNyZWF0ZVNl
ZWRTZXFGcm9tKCZybmcpOworCisgIHR5cGVuYW1lIFVSQkc6OnJlc3VsdF90eXBlIHZhcmlhdGVz
W2tOdW1WYXJpYXRlc107CisgIHsKKyAgICBVUkJHIGNoaWxkKHJldXNhYmxlX3NlZWQpOworICAg
IGZvciAoYXV0byYgdmFyaWF0ZSA6IHZhcmlhdGVzKSB7CisgICAgICB2YXJpYXRlID0gY2hpbGQo
KTsKKyAgICB9CisgIH0KKyAgLy8gRW5zdXJlIHRoYXQgdmFyaWF0ZS1zZXF1ZW5jZSBjYW4gYmUg
InJlcGxheWVkIiBieSBpZGVudGljYWwgUk5HLgorICB7CisgICAgVVJCRyBjaGlsZChyZXVzYWJs
ZV9zZWVkKTsKKyAgICBmb3IgKGF1dG8mIHZhcmlhdGUgOiB2YXJpYXRlcykgeworICAgICAgQVNT
RVJUX0VRKHZhcmlhdGUsIGNoaWxkKCkpOworICAgIH0KKyAgfQorfQorCitURVNUKENyZWF0ZVNl
ZWRTZXFGcm9tLCBSZXByb2R1Y2VzVmFyaWF0ZVNlcXVlbmNlc0Zvckluc2VjdXJlQml0R2VuKSB7
CisgIFRlc3RSZXByb2R1Y2libGVWYXJpYXRlU2VxdWVuY2VzRm9yTm9uc2VjdXJlVVJCRzxhYnNs
OjpJbnNlY3VyZUJpdEdlbj4oKTsKK30KKworVEVTVChDcmVhdGVTZWVkU2VxRnJvbSwgUmVwcm9k
dWNlc1ZhcmlhdGVTZXF1ZW5jZXNGb3JCaXRHZW5lcmF0b3IpIHsKKyAgVGVzdFJlcHJvZHVjaWJs
ZVZhcmlhdGVTZXF1ZW5jZXNGb3JOb25zZWN1cmVVUkJHPGFic2w6OkJpdEdlbj4oKTsKK30KK30g
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3VuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40OTcwNDg2YTU2MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaApAQCAtMCww
ICsxLDI3MyBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
bi5oCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgaGVhZGVyIGRlZmluZXMg
YSBjbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEgdW5pZm9ybSBpbnRlZ2VyIGRpc3RyaWJ1dGlvbgor
Ly8gb3ZlciB0aGUgY2xvc2VkIChpbmNsdXNpdmUpIGludGVydmFsIFthLGJdLiBZb3UgdXNlIHRo
aXMgZGlzdHJpYnV0aW9uIGluCisvLyBjb21iaW5hdGlvbiB3aXRoIGFuIEFic2VpbCByYW5kb20g
Yml0IGdlbmVyYXRvciB0byBwcm9kdWNlIHJhbmRvbSB2YWx1ZXMKKy8vIGFjY29yZGluZyB0byB0
aGUgcnVsZXMgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBgYWJzbDo6dW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uYCBpcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIHRoZSBDKysxMQorLy8g
YHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uYCBbcmFuZC5kaXN0LnVuaS5pbnRdIGJ1dCBp
cyBjb25zaWRlcmFibHkKKy8vIGZhc3RlciB0aGFuIHRoZSBsaWJzdGRjKysgaW1wbGVtZW50YXRp
b24uCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fVU5JRk9STV9JTlRfRElTVFJJQlVUSU9OX0hfCisj
ZGVmaW5lIEFCU0xfUkFORE9NX1VOSUZPUk1fSU5UX0RJU1RSSUJVVElPTl9IXworCisjaW5jbHVk
ZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxpc3RyZWFtPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9vcHRpbWl6YXRpb24uaCIK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25faW1wbC5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzLmgiCisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCIKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS9pbnRlcm5hbC90cmFpdHMuaCIKKworbmFtZXNwYWNlIGFic2wgeworCisv
LyBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248VD4KKy8vCisvLyBUaGlzIGRpc3RyaWJ1
dGlvbiBwcm9kdWNlcyByYW5kb20gaW50ZWdlciB2YWx1ZXMgdW5pZm9ybWx5IGRpc3RyaWJ1dGVk
IGluIHRoZQorLy8gY2xvc2VkIChpbmNsdXNpdmUpIGludGVydmFsIFthLCBiXS4KKy8vCisvLyBF
eGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Qml0R2VuIGdlbjsKKy8vCisvLyAgIC8vIFVzZSB0aGUg
ZGlzdHJpYnV0aW9uIHRvIHByb2R1Y2UgYSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDYsIGluY2x1c2l2
ZS4KKy8vICAgaW50IGRpZV9yb2xsID0gYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGlu
dD4oMSwgNikoZ2VuKTsKKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSA9IGludD4KK2Ns
YXNzIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiB7CisgcHJpdmF0ZToKKyAgdXNpbmcgdW5zaWdu
ZWRfdHlwZSA9CisgICAgICB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6Om1ha2VfdW5zaWduZWRf
Yml0czxJbnRUeXBlPjo6dHlwZTsKKworIHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSBJ
bnRUeXBlOworCisgIGNsYXNzIHBhcmFtX3R5cGUgeworICAgcHVibGljOgorICAgIHVzaW5nIGRp
c3RyaWJ1dGlvbl90eXBlID0gdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uOworCisgICAgZXhwbGlj
aXQgcGFyYW1fdHlwZSgKKyAgICAgICAgcmVzdWx0X3R5cGUgbG8gPSAwLAorICAgICAgICByZXN1
bHRfdHlwZSBoaSA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpKQor
ICAgICAgICA6IGxvXyhsbyksCisgICAgICAgICAgcmFuZ2VfKHN0YXRpY19jYXN0PHVuc2lnbmVk
X3R5cGU+KGhpKSAtCisgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkX3R5cGU+
KGxvKSkgeworICAgICAgLy8gW3JhbmQuZGlzdC51bmkuaW50XSBwcmVjb25kaXRpb24gMgorICAg
ICAgYXNzZXJ0KGxvIDw9IGhpKTsKKyAgICB9CisKKyAgICByZXN1bHRfdHlwZSBhKCkgY29uc3Qg
eyByZXR1cm4gbG9fOyB9CisgICAgcmVzdWx0X3R5cGUgYigpIGNvbnN0IHsKKyAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oc3RhdGljX2Nhc3Q8dW5zaWduZWRfdHlwZT4obG9f
KSArIHJhbmdlXyk7CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBw
YXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICByZXR1cm4gYS5sb18g
PT0gYi5sb18gJiYgYS5yYW5nZV8gPT0gYi5yYW5nZV87CisgICAgfQorCisgICAgZnJpZW5kIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7
CisgICAgICByZXR1cm4gIShhID09IGIpOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uOworICAgIHVuc2lnbmVkX3R5cGUgcmFu
Z2UoKSBjb25zdCB7IHJldHVybiByYW5nZV87IH0KKworICAgIHJlc3VsdF90eXBlIGxvXzsKKyAg
ICB1bnNpZ25lZF90eXBlIHJhbmdlXzsKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRl
Z3JhbDxyZXN1bHRfdHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIkNsYXNzLXRlbXBs
YXRlIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjw+IG11c3QgYmUgIgorICAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcml6ZWQgdXNpbmcgYW4gaW50ZWdyYWwgdHlwZS4iKTsKKyAgfTsg
IC8vIHBhcmFtX3R5cGUKKworICB1bmlmb3JtX2ludF9kaXN0cmlidXRpb24oKSA6IHVuaWZvcm1f
aW50X2Rpc3RyaWJ1dGlvbigwKSB7fQorCisgIGV4cGxpY2l0IHVuaWZvcm1faW50X2Rpc3RyaWJ1
dGlvbigKKyAgICAgIHJlc3VsdF90eXBlIGxvLAorICAgICAgcmVzdWx0X3R5cGUgaGkgPSAoc3Rk
OjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCkoKSkKKyAgICAgIDogcGFyYW1fKGxv
LCBoaSkge30KKworICBleHBsaWNpdCB1bmlmb3JtX2ludF9kaXN0cmlidXRpb24oY29uc3QgcGFy
YW1fdHlwZSYgcGFyYW0pIDogcGFyYW1fKHBhcmFtKSB7fQorCisgIC8vIHVuaWZvcm1faW50X2Rp
c3RyaWJ1dGlvbjxUPjo6cmVzZXQoKQorICAvLworICAvLyBSZXNldHMgdGhlIHVuaWZvcm0gaW50
IGRpc3RyaWJ1dGlvbi4gTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaGFzIG5vIGVmZmVjdAorICAv
LyBiZWNhdXNlIHRoZSBkaXN0cmlidXRpb24gYWxyZWFkeSBwcm9kdWNlcyBpbmRlcGVuZGVudCB2
YWx1ZXMuCisgIHZvaWQgcmVzZXQoKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgor
ICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGdlbikgeyAgLy8gTk9MSU5UKHJ1bnRpbWUv
cmVmZXJlbmNlcykKKyAgICByZXR1cm4gKCp0aGlzKShnZW4sIHBhcmFtKCkpOworICB9CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoCisgICAg
ICBVUkJHJiBnZW4sIGNvbnN0IHBhcmFtX3R5cGUmIHBhcmFtKSB7ICAvLyBOT0xJTlQocnVudGlt
ZS9yZWZlcmVuY2VzKQorICAgIHJldHVybiBwYXJhbS5hKCkgKyBHZW5lcmF0ZShnZW4sIHBhcmFt
LnJhbmdlKCkpOworICB9CisKKyAgcmVzdWx0X3R5cGUgYSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFt
Xy5hKCk7IH0KKyAgcmVzdWx0X3R5cGUgYigpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXy5iKCk7IH0K
KworICBwYXJhbV90eXBlIHBhcmFtKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQg
cGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgcGFyYW1zKSB7IHBhcmFtXyA9IHBhcmFtczsgfQorCisg
IHJlc3VsdF90eXBlKG1pbikoKSBjb25zdCB7IHJldHVybiBhKCk7IH0KKyAgcmVzdWx0X3R5cGUo
bWF4KSgpIGNvbnN0IHsgcmV0dXJuIGIoKTsgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uJiBhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiBhLnBh
cmFtXyA9PSBiLnBhcmFtXzsKKyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1bmlmb3JtX2ludF9kaXN0cmlidXRpb24mIGIpIHsKKyAgICByZXR1cm4gIShhID09IGIpOwor
ICB9CisKKyBwcml2YXRlOgorICAvLyBHZW5lcmF0ZXMgYSB2YWx1ZSBpbiB0aGUgKmNsb3NlZCog
aW50ZXJ2YWwgWzAsIFJdCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICB1bnNpZ25lZF90
eXBlIEdlbmVyYXRlKFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkX3R5cGUgUik7CisgIHBhcmFtX3R5cGUgcGFy
YW1fOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEltcGxlbWVudGF0aW9uIGRl
dGFpbHMgZm9sbG93CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEludFR5cGU+CitzdGQ6OmJhc2ljX29z
dHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3RkOjpiYXNpY19vc3RyZWFt
PENoYXJULCBUcmFpdHM+JiBvcywKKyAgICBjb25zdCB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248
SW50VHlwZT4mIHgpIHsKKyAgdXNpbmcgc3RyZWFtX3R5cGUgPQorICAgICAgdHlwZW5hbWUgcmFu
ZG9tX2ludGVybmFsOjpzdHJlYW1fZm9ybWF0X3R5cGU8SW50VHlwZT46OnR5cGU7CisgIGF1dG8g
c2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZlcihvcyk7Cisg
IG9zIDw8IHN0YXRpY19jYXN0PHN0cmVhbV90eXBlPih4LmEoKSkgPDwgb3MuZmlsbCgpCisgICAg
IDw8IHN0YXRpY19jYXN0PHN0cmVhbV90eXBlPih4LmIoKSk7CisgIHJldHVybiBvczsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEludFR5
cGU+CitzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPj4oCisgICAg
c3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBpcywKKyAgICB1bmlmb3JtX2ludF9k
aXN0cmlidXRpb248SW50VHlwZT4mIHgpIHsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1l
IHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6cGFyYW1fdHlwZTsKKyAgdXNpbmcg
cmVzdWx0X3R5cGUgPSB0eXBlbmFtZSB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248SW50VHlwZT46
OnJlc3VsdF90eXBlOworICB1c2luZyBzdHJlYW1fdHlwZSA9CisgICAgICB0eXBlbmFtZSByYW5k
b21faW50ZXJuYWw6OnN0cmVhbV9mb3JtYXRfdHlwZTxJbnRUeXBlPjo6dHlwZTsKKworICBzdHJl
YW1fdHlwZSBhOworICBzdHJlYW1fdHlwZSBiOworCisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50
ZXJuYWw6Om1ha2VfaXN0cmVhbV9zdGF0ZV9zYXZlcihpcyk7CisgIGlzID4+IGEgPj4gYjsKKyAg
aWYgKCFpcy5mYWlsKCkpIHsKKyAgICB4LnBhcmFtKAorICAgICAgICBwYXJhbV90eXBlKHN0YXRp
Y19jYXN0PHJlc3VsdF90eXBlPihhKSwgc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KGIpKSk7Cisg
IH0KKyAgcmV0dXJuIGlzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBVUkJHPgordHlwZW5hbWUgcmFuZG9tX2ludGVybmFsOjptYWtlX3Vuc2ln
bmVkX2JpdHM8SW50VHlwZT46OnR5cGUKK3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxJbnRUeXBl
Pjo6R2VuZXJhdGUoCisgICAgVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMp
CisgICAgdHlwZW5hbWUgcmFuZG9tX2ludGVybmFsOjptYWtlX3Vuc2lnbmVkX2JpdHM8SW50VHlw
ZT46OnR5cGUgUikgeworICAgIHJhbmRvbV9pbnRlcm5hbDo6RmFzdFVuaWZvcm1CaXRzPHVuc2ln
bmVkX3R5cGU+IGZhc3RfYml0czsKKyAgdW5zaWduZWRfdHlwZSBiaXRzID0gZmFzdF9iaXRzKGcp
OworICBjb25zdCB1bnNpZ25lZF90eXBlIExpbSA9IFIgKyAxOworICBpZiAoKFIgJiBMaW0pID09
IDApIHsKKyAgICAvLyBJZiB0aGUgaW50ZXJ2YWwncyBsZW5ndGggaXMgYSBwb3dlciBvZiB0d28g
cmFuZ2UsIGp1c3QgdGFrZSB0aGUgbG93IGJpdHMuCisgICAgcmV0dXJuIGJpdHMgJiBSOworICB9
CisKKyAgLy8gR2VuZXJhdGVzIGEgdW5pZm9ybSB2YXJpYXRlIG9uIFswLCBMaW0pIHVzaW5nIGZp
eGVkLXBvaW50IG11bHRpcGxpY2F0aW9uLgorICAvLyBUaGUgYWJvdmUgZmFzdC1wYXRoIGd1YXJh
bnRlZXMgdGhhdCBMaW0gaXMgcmVwcmVzZW50YWJsZSBpbiB1bnNpZ25lZF90eXBlLgorICAvLwor
ICAvLyBBbGdvcml0aG0gYWRhcHRlZCBmcm9tCisgIC8vIGh0dHA6Ly9sZW1pcmUubWUvYmxvZy8y
MDE2LzA2LzMwL2Zhc3QtcmFuZG9tLXNodWZmbGluZy8sIHdpdGggYWRkZWQKKyAgLy8gZXhwbGFu
YXRpb24uCisgIC8vCisgIC8vIFRoZSBhbGdvcml0aG0gY3JlYXRlcyBhIHVuaWZvcm0gdmFyaWF0
ZSBgYml0c2AgaW4gdGhlIGludGVydmFsIFswLCAyXk4pLAorICAvLyBhbmQgdHJlYXRzIGl0IGFz
IHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgYSBmaXhlZC1wb2ludCByZWFsIHZhbHVlIGluIFswLCAx
KSwKKyAgLy8gbXVsdGlwbGllZCBieSAyXk4uICBGb3IgZXhhbXBsZSwgMC4yNSB3b3VsZCBiZSBy
ZXByZXNlbnRlZCBhcyAyXihOIC0gMiksCisgIC8vIGJlY2F1c2UgMl5OICogMC4yNSA9PSAyXihO
IC0gMikuCisgIC8vCisgIC8vIE5leHQsIGBiaXRzYCBhbmQgYExpbWAgYXJlIG11bHRpcGxpZWQg
d2l0aCBhIHdpZGUtbXVsdGlwbHkgdG8gYnJpbmcgdGhlCisgIC8vIHZhbHVlIGludG8gdGhlIHJh
bmdlIFswLCBMaW0pLiAgVGhlIGludGVncmFsIHBhcnQgKHRoZSBoaWdoIHdvcmQgb2YgdGhlCisg
IC8vIG11bHRpcGxpY2F0aW9uIHJlc3VsdCkgaXMgdGhlbiB2ZXJ5IG5lYXJseSB0aGUgZGVzaXJl
ZCByZXN1bHQuICBIb3dldmVyLAorICAvLyB0aGlzIGlzIG5vdCBxdWl0ZSBhY2N1cmF0ZTsgdmll
d2luZyB0aGUgbXVsdGlwbGljYXRpb24gcmVzdWx0IGFzIG9uZQorICAvLyBkb3VibGUtd2lkdGgg
aW50ZWdlciwgdGhlIHJlc3VsdGluZyB2YWx1ZXMgZm9yIHRoZSBzYW1wbGUgYXJlIG1hcHBlZCBh
cworICAvLyBmb2xsb3dzOgorICAvLworICAvLyBJZiB0aGUgcmVzdWx0IGxpZXMgaW4gdGhpcyBp
bnRlcnZhbDogICAgICAgUmV0dXJuIHRoaXMgdmFsdWU6CisgIC8vICAgICAgICBbMCwgMl5OKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAgLy8gICAgICAgIFsyXk4sIDIg
KiAyXk4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorICAvLyAgICAgICAgLi4uICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgLy8gICAgICAgIFtL
ICogMl5OLCAoSyArIDEpICogMl5OKSAgICAgICAgICAgICAgICAgICAgSworICAvLyAgICAgICAg
Li4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgLy8gICAg
ICAgIFsoTGltIC0gMSkgKiAyXk4sIExpbSAqIDJeTikgICAgICAgICAgICAgICAgTGltIC0gMQor
ICAvLworICAvLyBXaGlsZSBhbGwgb2YgdGhlc2UgaW50ZXJ2YWxzIGhhdmUgdGhlIHNhbWUgc2l6
ZSwgdGhlIHJlc3VsdCBvZiBgYml0cyAqIExpbWAKKyAgLy8gbXVzdCBiZSBhIG11bHRpcGxlIG9m
IGBMaW1gLCBhbmQgbm90IGFsbCBvZiB0aGVzZSBpbnRlcnZhbHMgY29udGFpbiB0aGUKKyAgLy8g
c2FtZSBudW1iZXIgb2YgbXVsdGlwbGVzIG9mIGBMaW1gLiAgSW4gcGFydGljdWxhciwgc29tZSBj
b250YWluCisgIC8vIGBGID0gZmxvb3IoMl5OIC8gTGltKWAgYW5kIHNvbWUgY29udGFpbiBgRiAr
IDEgPSBjZWlsKDJeTiAvIExpbSlgLiAgVGhpcworICAvLyBkaWZmZXJlbmNlIHByb2R1Y2VzIGEg
c21hbGwgbm9udW5pZm9ybWl0eSwgd2hpY2ggaXMgY29ycmVjdGVkIGJ5IGFwcGx5aW5nCisgIC8v
IHJlamVjdGlvbiBzYW1wbGluZyB0byBvbmUgb2YgdGhlIHZhbHVlcyBpbiB0aGUgImxhcmdlciBp
bnRlcnZhbHMiIChpLmUuLAorICAvLyB0aGUgaW50ZXJ2YWxzIGNvbnRhaW5pbmcgYEYgKyAxYCBt
dWx0aXBsZXMgb2YgYExpbWAuCisgIC8vCisgIC8vIEFuIGludGVydmFsIGNvbnRhaW5zIGBGICsg
MWAgbXVsdGlwbGVzIG9mIGBMaW1gIGlmIGFuZCBvbmx5IGlmIGl0cyBzbWFsbGVzdAorICAvLyB2
YWx1ZSBtb2R1bG8gMl5OIGlzIGxlc3MgdGhhbiBgMl5OICUgTGltYC4gIFRoZSB1bmlxdWUgdmFs
dWUgc2F0aXNmeWluZworICAvLyB0aGlzIHByb3BlcnR5IGlzIHVzZWQgYXMgdGhlIG9uZSBmb3Ig
cmVqZWN0aW9uLiAgVGhhdCBpcywgYSB2YWx1ZSBvZgorICAvLyBgYml0cyAqIExpbWAgaXMgcmVq
ZWN0ZWQgaWYgYChiaXQgKiBMaW0pICUgMl5OIDwgKDJeTiAlIExpbSlgLgorCisgIHVzaW5nIGhl
bHBlciA9IHJhbmRvbV9pbnRlcm5hbDo6d2lkZV9tdWx0aXBseTx1bnNpZ25lZF90eXBlPjsKKyAg
YXV0byBwcm9kdWN0ID0gaGVscGVyOjptdWx0aXBseShiaXRzLCBMaW0pOworCisgIC8vIFR3byBv
cHRpbWl6YXRpb25zIGhlcmU6CisgIC8vICogUmVqZWN0aW9uIG9jY3VycyB3aXRoIHNvbWUgcHJv
YmFiaWxpdHkgbGVzcyB0aGFuIDEvMiwgYW5kIGZvciByZWFzb25hYmxlCisgIC8vICAgcmFuZ2Vz
IGNvbnNpZGVyYWJseSBsZXNzIChpbiBwYXJ0aWN1bGFyLCBsZXNzIHRoYW4gMS8oRisxKSksIHNv
CisgIC8vICAgQUJTTF9QUkVESUNUX0ZBTFNFIGlzIGFwdC4KKyAgLy8gKiBgTGltYCBpcyBhbiBv
dmVyZXN0aW1hdGUgb2YgYHRocmVzaG9sZGAsIGFuZCBkb2Vzbid0IHJlcXVpcmUgYSBkaXZpZGUu
CisgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoaGVscGVyOjpsbyhwcm9kdWN0KSA8IExpbSkpIHsK
KyAgICAvLyBUaGlzIHF1YW50aXR5IGlzIGV4YWN0bHkgZXF1YWwgdG8gYDJeTiAlIExpbWAsIGJ1
dCBkb2VzIG5vdCByZXF1aXJlIGhpZ2gKKyAgICAvLyBwcmVjaXNpb24gY2FsY3VsYXRpb25zOiBg
Ml5OICUgTGltYCBpcyBjb25ncnVlbnQgdG8gYCgyXk4gLSBMaW0pICUgTGltYC4KKyAgICAvLyBJ
ZGVhbGx5IHRoaXMgY291bGQgYmUgZXhwcmVzc2VkIHNpbXBseSBhcyBgLVhgIHJhdGhlciB0aGFu
IGAyXk4gLSBYYCwgYnV0CisgICAgLy8gZm9yIHR5cGVzIHNtYWxsZXIgdGhhbiBpbnQsIHRoaXMg
Y2FsY3VsYXRpb24gaXMgaW5jb3JyZWN0IGR1ZSB0byBpbnRlZ2VyCisgICAgLy8gcHJvbW90aW9u
IHJ1bGVzLgorICAgIGNvbnN0IHVuc2lnbmVkX3R5cGUgdGhyZXNob2xkID0KKyAgICAgICAgKChz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkX3R5cGU+OjptYXgpKCkgLSBMaW0gKyAxKSAlIExp
bTsKKyAgICB3aGlsZSAoaGVscGVyOjpsbyhwcm9kdWN0KSA8IHRocmVzaG9sZCkgeworICAgICAg
Yml0cyA9IGZhc3RfYml0cyhnKTsKKyAgICAgIHByb2R1Y3QgPSBoZWxwZXI6Om11bHRpcGx5KGJp
dHMsIExpbSk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGhlbHBlcjo6aGkocHJvZHVjdCk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fVU5JRk9S
TV9JTlRfRElTVFJJQlVUSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vdW5pZm9ybV9p
bnRfZGlzdHJpYnV0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vdW5pZm9ybV9pbnRfZGlzdHJp
YnV0aW9uX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFh
Y2ZmODhkMzg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3VuaWZvcm1faW50X2Rp
c3RyaWJ1dGlvbl90ZXN0LmNjCkBAIC0wLDAgKzEsMjUwIEBACisvLyBDb3B5cmlnaHQgMjAxNyBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL3VuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbi5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8Y3N0ZGludD4K
KyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3N0cmVh
bT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dn
aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaCIKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgiCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIK
KworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CitjbGFzcyBVbmlm
b3JtSW50RGlzdHJpYnV0aW9uVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3Vz
aW5nIEludFR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczxpbnQ4X3QsIHVpbnQ4X3QsIGludDE2X3Qs
IHVpbnQxNl90LCBpbnQzMl90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90LCBpbnQ2NF90LCB1aW50NjRfdD47CitUWVBFRF9URVNUX1NVSVRFKFVuaWZvcm1JbnRE
aXN0cmlidXRpb25UZXN0LCBJbnRUeXBlcyk7CisKK1RZUEVEX1RFU1QoVW5pZm9ybUludERpc3Ry
aWJ1dGlvblRlc3QsIFBhcmFtU2VyaWFsaXplVGVzdCkgeworICAvLyBUaGlzIHRlc3QgZXNzZW50
aWFsbHkgZW5zdXJlcyB0aGF0IHRoZSBwYXJhbWV0ZXJzIHNlcmlhbGl6ZSwKKyAgLy8gbm90IHRo
YXQgdGhlIHZhbHVlcyBnZW5lcmF0ZWQgY292ZXIgdGhlIGZ1bGwgcmFuZ2UuCisgIHVzaW5nIExp
bWl0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjsKKyAgdXNpbmcgcGFyYW1fdHlw
ZSA9CisgICAgICB0eXBlbmFtZSBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248VHlwZVBh
cmFtPjo6cGFyYW1fdHlwZTsKKyAgY29uc3QgVHlwZVBhcmFtIGtNaW4gPSBzdGQ6OmlzX3Vuc2ln
bmVkPFR5cGVQYXJhbT46OnZhbHVlID8gMzcgOiAtMTA1OworICBjb25zdCBUeXBlUGFyYW0ga05l
Z09uZU9yWmVybyA9IHN0ZDo6aXNfdW5zaWduZWQ8VHlwZVBhcmFtPjo6dmFsdWUgPyAwIDogLTE7
CisKKyAgY29uc3RleHByIGludCBrQ291bnQgPSAxMDAwOworICBhYnNsOjpJbnNlY3VyZUJpdEdl
biBnZW47CisgIGZvciAoY29uc3QgYXV0byYgcGFyYW0gOiB7CisgICAgICAgICAgIHBhcmFtX3R5
cGUoKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZSgyLCAyKSwgIC8vIFNhbWUKKyAgICAgICAgICAg
cGFyYW1fdHlwZSg5LCAzMiksCisgICAgICAgICAgIHBhcmFtX3R5cGUoa01pbiwgMTE1KSwKKyAg
ICAgICAgICAgcGFyYW1fdHlwZShrTmVnT25lT3JaZXJvLCBMaW1pdHM6Om1heCgpKSwKKyAgICAg
ICAgICAgcGFyYW1fdHlwZShMaW1pdHM6Om1pbigpLCBMaW1pdHM6Om1heCgpKSwKKyAgICAgICAg
ICAgcGFyYW1fdHlwZShMaW1pdHM6Omxvd2VzdCgpLCBMaW1pdHM6Om1heCgpKSwKKyAgICAgICAg
ICAgcGFyYW1fdHlwZShMaW1pdHM6Om1pbigpICsgMSwgTGltaXRzOjptYXgoKSAtIDEpLAorICAg
ICAgIH0pIHsKKyAgICBjb25zdCBhdXRvIGEgPSBwYXJhbS5hKCk7CisgICAgY29uc3QgYXV0byBi
ID0gcGFyYW0uYigpOworICAgIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUeXBlUGFy
YW0+IGJlZm9yZShhLCBiKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLmEoKSwgcGFyYW0uYSgpKTsK
KyAgICBFWFBFQ1RfRVEoYmVmb3JlLmIoKSwgcGFyYW0uYigpKTsKKworICAgIHsKKyAgICAgIC8v
IEluaXRpYWxpemUgdmlhIHBhcmFtX3R5cGUKKyAgICAgIGFic2w6OnVuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbjxUeXBlUGFyYW0+IHZpYV9wYXJhbShwYXJhbSk7CisgICAgICBFWFBFQ1RfRVEodmlh
X3BhcmFtLCBiZWZvcmUpOworICAgIH0KKworICAgIC8vIEluaXRpYWxpemUgdmlhIGlvc3RyZWFt
cworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgIHNzIDw8IGJlZm9yZTsKKworICAgIGFi
c2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGFmdGVyKExpbWl0czo6bWlu
KCkgKyAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExpbWl0czo6bWF4KCkgLSA1KTsKKworICAgIEVYUEVDVF9ORShiZWZvcmUuYSgpLCBhZnRl
ci5hKCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUuYigpLCBhZnRlci5iKCkpOworICAgIEVYUEVD
VF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgICAgRVhQRUNUX05FKGJlZm9y
ZSwgYWZ0ZXIpOworCisgICAgc3MgPj4gYWZ0ZXI7CisKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLmEo
KSwgYWZ0ZXIuYSgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLmIoKSwgYWZ0ZXIuYigpKTsKKyAg
ICBFWFBFQ1RfRVEoYmVmb3JlLnBhcmFtKCksIGFmdGVyLnBhcmFtKCkpOworICAgIEVYUEVDVF9F
UShiZWZvcmUsIGFmdGVyKTsKKworICAgIC8vIFNtb2tlIHRlc3QuCisgICAgYXV0byBzYW1wbGVf
bWluID0gYWZ0ZXIubWF4KCk7CisgICAgYXV0byBzYW1wbGVfbWF4ID0gYWZ0ZXIubWluKCk7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQ291bnQ7IGkrKykgeworICAgICAgYXV0byBzYW1wbGUg
PSBhZnRlcihnZW4pOworICAgICAgRVhQRUNUX0dFKHNhbXBsZSwgYWZ0ZXIubWluKCkpOworICAg
ICAgRVhQRUNUX0xFKHNhbXBsZSwgYWZ0ZXIubWF4KCkpOworICAgICAgaWYgKHNhbXBsZSA+IHNh
bXBsZV9tYXgpIHsKKyAgICAgICAgc2FtcGxlX21heCA9IHNhbXBsZTsKKyAgICAgIH0KKyAgICAg
IGlmIChzYW1wbGUgPCBzYW1wbGVfbWluKSB7CisgICAgICAgIHNhbXBsZV9taW4gPSBzYW1wbGU7
CisgICAgICB9CisgICAgfQorICAgIHN0ZDo6c3RyaW5nIG1zZyA9IGFic2w6OlN0ckNhdCgiUmFu
Z2U6ICIsICtzYW1wbGVfbWluLCAiLCAiLCArc2FtcGxlX21heCk7CisgICAgQUJTTF9SQVdfTE9H
KElORk8sICIlcyIsIG1zZy5jX3N0cigpKTsKKyAgfQorfQorCitUWVBFRF9URVNUKFVuaWZvcm1J
bnREaXN0cmlidXRpb25UZXN0LCBWaW9sYXRlc1ByZWNvbmRpdGlvbnNEZWF0aFRlc3QpIHsKKyNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorICAvLyBIaSA8IExvCisgIEVYUEVDVF9ERUJVR19ERUFU
SCh7IGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGRpc3QoMTAsIDEp
OyB9LAorICAgICAgICAgICAgICAgICAgICAgIiIpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfREVB
VEhfVEVTVAorI2lmIGRlZmluZWQoTkRFQlVHKQorICAvLyBvcHQtbW9kZSwgZm9yIGludmFsaWQg
cGFyYW1ldGVycywgd2lsbCBnZW5lcmF0ZSBhIGdhcmJhZ2UgdmFsdWUsCisgIC8vIGJ1dCBzaG91
bGQgbm90IGVudGVyIGFuIGluZmluaXRlIGxvb3AuCisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdl
bjsKKyAgYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZGlzdCgxMCwg
MSk7CisgIGF1dG8geCA9IGRpc3QoZ2VuKTsKKworICAvLyBBbnkgdmFsdWUgd2lsbCBnZW5lcmF0
ZSBhIG5vbi1lbXB0eSBzdGQ6OnN0cmluZy4KKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlN0ckNhdCgr
eCkuZW1wdHkoKSkgPDwgeDsKKyNlbmRpZiAgLy8gTkRFQlVHCit9CisKK1RZUEVEX1RFU1QoVW5p
Zm9ybUludERpc3RyaWJ1dGlvblRlc3QsIFRlc3RNb21lbnRzKSB7CisgIGNvbnN0ZXhwciBpbnQg
a1NpemUgPSAxMDAwMDA7CisgIHVzaW5nIExpbWl0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlw
ZVBhcmFtPjsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9CisgICAgICB0eXBlbmFtZSBhYnNsOjp1bmlm
b3JtX2ludF9kaXN0cmlidXRpb248VHlwZVBhcmFtPjo6cGFyYW1fdHlwZTsKKworICBhYnNsOjpJ
bnNlY3VyZUJpdEdlbiBybmc7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdmFsdWVzKGtTaXplKTsK
KyAgZm9yIChjb25zdCBhdXRvJiBwYXJhbSA6CisgICAgICAge3BhcmFtX3R5cGUoMCwgTGltaXRz
OjptYXgoKSksIHBhcmFtX3R5cGUoMTMsIDEyNyl9KSB7CisgICAgYWJzbDo6dW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZGlzdChwYXJhbSk7CisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgICBjb25zdCBhdXRvIHNhbXBsZSA9IGRpc3Qocm5nKTsK
KyAgICAgIEFTU0VSVF9MRShkaXN0LnBhcmFtKCkuYSgpLCBzYW1wbGUpOworICAgICAgQVNTRVJU
X0dFKGRpc3QucGFyYW0oKS5iKCksIHNhbXBsZSk7CisgICAgICB2YWx1ZXNbaV0gPSBzYW1wbGU7
CisgICAgfQorCisgICAgYXV0byBtb21lbnRzID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDb21w
dXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICAgIGNvbnN0IGRvdWJsZSBhID0gZGlz
dC5wYXJhbSgpLmEoKTsKKyAgICBjb25zdCBkb3VibGUgYiA9IGRpc3QucGFyYW0oKS5iKCk7Cisg
ICAgY29uc3QgZG91YmxlIG4gPSAoYiAtIGEgKyAxKTsKKyAgICBjb25zdCBkb3VibGUgbWVhbiA9
IChhICsgYikgLyAyOworICAgIGNvbnN0IGRvdWJsZSB2YXIgPSAoKGIgLSBhICsgMSkgKiAoYiAt
IGEgKyAxKSAtIDEpIC8gMTI7CisgICAgY29uc3QgZG91YmxlIGt1cnRvc2lzID0gMyAtIDYgKiAo
biAqIG4gKyAxKSAvICg1ICogKG4gKiBuIC0gMSkpOworCisgICAgLy8gVE9ETyhhaGgpOiB0aGlz
IGlzIG5vdCB0aGUgcmlnaHQgYm91bmQKKyAgICAvLyBlbXBpcmljYWxseSB2YWxpZGF0ZWQgd2l0
aCAtLXJ1bnNfcGVyX3Rlc3Q9MTAwMDAuCisgICAgRVhQRUNUX05FQVIobWVhbiwgbW9tZW50cy5t
ZWFuLCAwLjAxICogdmFyKTsKKyAgICBFWFBFQ1RfTkVBUih2YXIsIG1vbWVudHMudmFyaWFuY2Us
IDAuMDE1ICogdmFyKTsKKyAgICBFWFBFQ1RfTkVBUigwLjAsIG1vbWVudHMuc2tld25lc3MsIDAu
MDI1KTsKKyAgICBFWFBFQ1RfTkVBUihrdXJ0b3NpcywgbW9tZW50cy5rdXJ0b3NpcywgMC4wMiAq
IGt1cnRvc2lzKTsKKyAgfQorfQorCitUWVBFRF9URVNUKFVuaWZvcm1JbnREaXN0cmlidXRpb25U
ZXN0LCBDaGlTcXVhcmVkVGVzdDUwKSB7CisgIHVzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6
a0NoaVNxdWFyZWQ7CisKKyAgY29uc3RleHByIHNpemVfdCBrVHJpYWxzID0gMTAwMDsKKyAgY29u
c3RleHByIGludCBrQnVja2V0cyA9IDUwOyAgLy8gaW5jbHVzaXZlLCBzbyBhY3RhbGx5ICsxCisg
IGNvbnN0ZXhwciBkb3VibGUga0V4cGVjdGVkID0KKyAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4o
a1RyaWFscykgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGtCdWNrZXRzKTsKKworICAvLyBFbXBpcmlj
YWxseSB2YWxpZGF0ZWQgd2l0aCAtLXJ1bnNfcGVyX3Rlc3Q9MTAwMDAuCisgIGNvbnN0IGludCBr
VGhyZXNob2xkID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlVmFsdWUo
a0J1Y2tldHMsIDAuOTk5OTk5KTsKKworICBjb25zdCBUeXBlUGFyYW0gbWluID0gc3RkOjppc191
bnNpZ25lZDxUeXBlUGFyYW0+Ojp2YWx1ZSA/IDM3IDogLTM3OworICBjb25zdCBUeXBlUGFyYW0g
bWF4ID0gbWluICsga0J1Y2tldHM7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gcm5nOworICBh
YnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBkaXN0KG1pbiwgbWF4KTsK
KworICBzdGQ6OnZlY3RvcjxpbnQzMl90PiBjb3VudHMoa0J1Y2tldHMgKyAxLCAwKTsKKyAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBrVHJpYWxzOyBpKyspIHsKKyAgICBhdXRvIHggPSBkaXN0KHJu
Zyk7CisgICAgY291bnRzW3ggLSBtaW5dKys7CisgIH0KKyAgZG91YmxlIGNoaV9zcXVhcmUgPSBh
YnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVdpdGhFeHBlY3RlZCgKKyAgICAgIHN0ZDo6
YmVnaW4oY291bnRzKSwgc3RkOjplbmQoY291bnRzKSwga0V4cGVjdGVkKTsKKyAgaWYgKGNoaV9z
cXVhcmUgPiBrVGhyZXNob2xkKSB7CisgICAgZG91YmxlIHBfdmFsdWUgPQorICAgICAgICBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVBWYWx1ZShjaGlfc3F1YXJlLCBrQnVja2V0cyk7
CisKKyAgICAvLyBDaGktc3F1YXJlZCB0ZXN0IGZhaWxlZC4gT3V0cHV0IGRvZXMgbm90IGFwcGVh
ciB0byBiZSB1bmlmb3JtLgorICAgIHN0ZDo6c3RyaW5nIG1zZzsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGEgOiBjb3VudHMpIHsKKyAgICAgIGFic2w6OlN0ckFwcGVuZCgmbXNnLCBhLCAiXG4iKTsK
KyAgICB9CisgICAgYWJzbDo6U3RyQXBwZW5kKCZtc2csIGtDaGlTcXVhcmVkLCAiIHAtdmFsdWUg
IiwgcF92YWx1ZSwgIlxuIik7CisgICAgYWJzbDo6U3RyQXBwZW5kKCZtc2csICJIaWdoICIsIGtD
aGlTcXVhcmVkLCAiIHZhbHVlOiAiLCBjaGlfc3F1YXJlLCAiID4gIiwKKyAgICAgICAgICAgICAg
ICAgICAga1RocmVzaG9sZCk7CisgICAgQUJTTF9SQVdfTE9HKElORk8sICIlcyIsIG1zZy5jX3N0
cigpKTsKKyAgICBGQUlMKCkgPDwgbXNnOworICB9Cit9CisKK1RFU1QoVW5pZm9ybUludERpc3Ry
aWJ1dGlvblRlc3QsIFN0YWJpbGl0eVRlc3QpIHsKKyAgLy8gYWJzbDo6dW5pZm9ybV9pbnRfZGlz
dHJpYnV0aW9uIHN0YWJpbGl0eSByZWxpZXMgb25seSBvbiBpbnRlZ2VyIG9wZXJhdGlvbnMuCisg
IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKAorICAgICAgezB4MDAw
M2ViNzZmNmY3Zjc1NXVsbCwgMHhGRkNFQTUwRkRCMkY5NTNCdWxsLCAweEMzMzJEREVGQkU2QzVB
QTV1bGwsCisgICAgICAgMHg2NTU4MjE4NTY4QUI5NzAydWxsLCAweDJBRUY3REFENUI2RTJGODR1
bGwsIDB4MTUyMUI2MjgyOTA3NjE3MHVsbCwKKyAgICAgICAweEVDREQ0Nzc1NjE5RjE1MTB1bGws
IDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbCwgMHgwMzM0RkUxRUFBMDM2M0NGdWxsLAorICAgICAgIDB4
QjU3MzVDOTA0QzcwQTIzOXVsbCwgMHhENTlFOUUwQkNCQUFERTE0dWxsLCAweEVFQ0M4NkJDNjA2
MjJDQTd1bGx9KTsKKworICBzdGQ6OnZlY3RvcjxpbnQ+IG91dHB1dCgxMik7CisKKyAgeworICAg
IGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQzMl90PiBkaXN0KDAsIDQpOworICAg
IGZvciAoYXV0byYgdiA6IG91dHB1dCkgeworICAgICAgdiA9IGRpc3QodXJiZyk7CisgICAgfQor
ICB9CisgIEVYUEVDVF9FUSgxMiwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgRVhQRUNUX1RIQVQo
b3V0cHV0LCB0ZXN0aW5nOjpFbGVtZW50c0FyZSg0LCA0LCAzLCAyLCAxLCAwLCAxLCA0LCAzLCAx
LCAzLCAxKSk7CisKKyAgeworICAgIHVyYmcucmVzZXQoKTsKKyAgICBhYnNsOjp1bmlmb3JtX2lu
dF9kaXN0cmlidXRpb248aW50MzJfdD4gZGlzdCgwLCAxMDApOworICAgIGZvciAoYXV0byYgdiA6
IG91dHB1dCkgeworICAgICAgdiA9IGRpc3QodXJiZyk7CisgICAgfQorICB9CisgIEVYUEVDVF9F
USgxMiwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgRVhQRUNUX1RIQVQob3V0cHV0LCB0ZXN0aW5n
OjpFbGVtZW50c0FyZSg5NywgODYsIDc1LCA0MSwgMzYsIDE2LCAzOCwgOTIsIDY3LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLCA4MCwgMzgpKTsKKworICB7
CisgICAgdXJiZy5yZXNldCgpOworICAgIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxp
bnQzMl90PiBkaXN0KDAsIDEwMDAwKTsKKyAgICBmb3IgKGF1dG8mIHYgOiBvdXRwdXQpIHsKKyAg
ICAgIHYgPSBkaXN0KHVyYmcpOworICAgIH0KKyAgfQorICBFWFBFQ1RfRVEoMTIsIHVyYmcuaW52
b2NhdGlvbnMoKSk7CisgIEVYUEVDVF9USEFUKG91dHB1dCwgdGVzdGluZzo6RWxlbWVudHNBcmUo
OTY0OCwgODU2MiwgNzQzOSwgNDA4OSwgMzU3MSwgMTYwMiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzODEzLCA5MTk1LCA2NjQxLCAyOTg2LCA3OTU2LCAzNzY1
KSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3VuaWZv
cm1fcmVhbF9kaXN0cmlidXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3JtX3JlYWxfZGlzdHJp
YnV0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYwMGY5MTVi
NjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3VuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb24uaApAQCAtMCwwICsxLDE5MyBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBB
dXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IHVuaWZvcm1f
cmVhbF9kaXN0cmlidXRpb24uaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlz
IGhlYWRlciBkZWZpbmVzIGEgY2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIHVuaWZvcm0gZmxvYXRp
bmctcG9pbnQKKy8vIGRpc3RyaWJ1dGlvbiBvdmVyIGEgaGFsZi1vcGVuIGludGVydmFsIFthLGIp
LiBZb3UgdXNlIHRoaXMgZGlzdHJpYnV0aW9uIGluCisvLyBjb21iaW5hdGlvbiB3aXRoIGFuIEFi
c2VpbCByYW5kb20gYml0IGdlbmVyYXRvciB0byBwcm9kdWNlIHJhbmRvbSB2YWx1ZXMKKy8vIGFj
Y29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBgYWJzbDo6
dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbmAgaXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciB0
aGUgQysrMTEKKy8vIGBzdGQ6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb25gIFtyYW5kLmRpc3Qu
dW5pLnJlYWxdIGJ1dCBpcyBjb25zaWRlcmFibHkKKy8vIGZhc3RlciB0aGFuIHRoZSBsaWJzdGRj
KysgaW1wbGVtZW50YXRpb24uCisvLworLy8gTm90ZTogdGhlIHN0YW5kYXJkLWxpYnJhcnkgdmVy
c2lvbiBtYXkgb2NjYXNpb25hbGx5IHJldHVybiBgMS4wYCB3aGVuCisvLyBkZWZhdWx0LWluaXRp
YWxpemVkLiBTZWUgaHR0cHM6Ly9idWdzLmxsdm0ub3JnLy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NjcK
Ky8vIGBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uYCBkb2VzIG5vdCBleGhpYml0IHRo
aXMgYmVoYXZpb3IuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fVU5JRk9STV9SRUFMX0RJU1RSSUJV
VElPTl9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9VTklGT1JNX1JFQUxfRElTVFJJQlVUSU9OX0hf
CisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRp
bnQ+CisjaW5jbHVkZSA8aXN0cmVhbT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlw
ZV90cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25f
aW1wbC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRz
LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIu
aCIKKworbmFtZXNwYWNlIGFic2wgeworCisvLyBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0
aW9uPFQ+CisvLworLy8gVGhpcyBkaXN0cmlidXRpb24gcHJvZHVjZXMgcmFuZG9tIGZsb2F0aW5n
LXBvaW50IHZhbHVlcyB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQKKy8vIG92ZXIgdGhlIGhhbGYtb3Bl
biBpbnRlcnZhbCBbYSwgYikuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkJpdEdl
biBnZW47CisvLworLy8gICAvLyBVc2UgdGhlIGRpc3RyaWJ1dGlvbiB0byBwcm9kdWNlIGEgdmFs
dWUgYmV0d2VlbiAwLjAgKGluY2x1c2l2ZSkKKy8vICAgLy8gYW5kIDEuMCAoZXhjbHVzaXZlKS4K
Ky8vICAgaW50IHZhbHVlID0gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+
KDAsIDEpKGdlbik7CisvLwordGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlID0gZG91YmxlPgor
Y2xhc3MgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbiB7CisgcHVibGljOgorICB1c2luZyByZXN1
bHRfdHlwZSA9IFJlYWxUeXBlOworCisgIGNsYXNzIHBhcmFtX3R5cGUgeworICAgcHVibGljOgor
ICAgIHVzaW5nIGRpc3RyaWJ1dGlvbl90eXBlID0gdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjsK
KworICAgIGV4cGxpY2l0IHBhcmFtX3R5cGUocmVzdWx0X3R5cGUgbG8gPSAwLCByZXN1bHRfdHlw
ZSBoaSA9IDEpCisgICAgICAgIDogbG9fKGxvKSwgaGlfKGhpKSwgcmFuZ2VfKGhpIC0gbG8pIHsK
KyAgICAgIC8vIFtyYW5kLmRpc3QudW5pLnJlYWxdIHByZWNvbmRpdGlvbnMgMiAmIDMKKyAgICAg
IGFzc2VydChsbyA8PSBoaSk7CisgICAgICAvLyBOT1RFOiBGb3IgaW50ZWdyYWwgdHlwZXMsIHdl
IGNhbiBwcm9tb3RlIHRoZSByYW5nZSB0byBhbiB1bnNpZ25lZCB0eXBlLAorICAgICAgLy8gd2hp
Y2ggZ2l2ZXMgZnVsbCB3aWR0aCBvZiB0aGUgcmFuZ2UuIEhvd2V2ZXIgZm9yIHJlYWwgKGZwKSB0
eXBlcywgdGhpcworICAgICAgLy8gaXMgbm90IHBvc3NpYmxlLCBzbyB2YWx1ZSBnZW5lcmF0aW9u
IGNhbm5vdCB1c2UgdGhlIGZ1bGwgcmFuZ2Ugb2YgdGhlCisgICAgICAvLyByZWFsIHR5cGUuCisg
ICAgICBhc3NlcnQocmFuZ2VfIDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6
bWF4KSgpKTsKKyAgICB9CisKKyAgICByZXN1bHRfdHlwZSBhKCkgY29uc3QgeyByZXR1cm4gbG9f
OyB9CisgICAgcmVzdWx0X3R5cGUgYigpIGNvbnN0IHsgcmV0dXJuIGhpXzsgfQorCisgICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBl
JiBiKSB7CisgICAgICByZXR1cm4gYS5sb18gPT0gYi5sb18gJiYgYS5oaV8gPT0gYi5oaV87Cisg
ICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXJhbV90eXBlJiBhLCBj
b25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICByZXR1cm4gIShhID09IGIpOworICAgIH0KKwor
ICAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjsK
KyAgICByZXN1bHRfdHlwZSBsb18sIGhpXywgcmFuZ2VfOworCisgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFJlYWxUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAg
ICAiQ2xhc3MtdGVtcGxhdGUgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjw+IG11c3Qg
YmUgIgorICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcml6ZWQgdXNpbmcgYSBmbG9hdGluZy1w
b2ludCB0eXBlLiIpOworICB9OworCisgIHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24oKSA6IHVu
aWZvcm1fcmVhbF9kaXN0cmlidXRpb24oMCkge30KKworICBleHBsaWNpdCB1bmlmb3JtX3JlYWxf
ZGlzdHJpYnV0aW9uKHJlc3VsdF90eXBlIGxvLCByZXN1bHRfdHlwZSBoaSA9IDEpCisgICAgICA6
IHBhcmFtXyhsbywgaGkpIHt9CisKKyAgZXhwbGljaXQgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlv
bihjb25zdCBwYXJhbV90eXBlJiBwYXJhbSkgOiBwYXJhbV8ocGFyYW0pIHt9CisKKyAgLy8gdW5p
Zm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxUPjo6cmVzZXQoKQorICAvLworICAvLyBSZXNldHMgdGhl
IHVuaWZvcm0gcmVhbCBkaXN0cmlidXRpb24uIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGhhcyBu
byBlZmZlY3QKKyAgLy8gYmVjYXVzZSB0aGUgZGlzdHJpYnV0aW9uIGFscmVhZHkgcHJvZHVjZXMg
aW5kZXBlbmRlbnQgdmFsdWVzLgorICB2b2lkIHJlc2V0KCkge30KKworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShVUkJHJiBnZW4pIHsgIC8vIE5P
TElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgcmV0dXJuIG9wZXJhdG9yKCkoZ2VuLCBwYXJh
bV8pOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9w
ZXJhdG9yKCkoVVJCRyYgZ2VuLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBwKTsKKworICByZXN1bHRfdHlw
ZSBhKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fLmEoKTsgfQorICByZXN1bHRfdHlwZSBiKCkgY29u
c3QgeyByZXR1cm4gcGFyYW1fLmIoKTsgfQorCisgIHBhcmFtX3R5cGUgcGFyYW0oKSBjb25zdCB7
IHJldHVybiBwYXJhbV87IH0KKyAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBwYXJhbXMp
IHsgcGFyYW1fID0gcGFyYW1zOyB9CisKKyAgcmVzdWx0X3R5cGUobWluKSgpIGNvbnN0IHsgcmV0
dXJuIGEoKTsgfQorICByZXN1bHRfdHlwZShtYXgpKCkgY29uc3QgeyByZXR1cm4gYigpOyB9CisK
KyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9u
JiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb24mIGIpIHsKKyAgICByZXR1cm4gYS5wYXJhbV8gPT0gYi5wYXJhbV87CisgIH0KKyAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uJiBhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24m
IGIpIHsKKyAgICByZXR1cm4gYS5wYXJhbV8gIT0gYi5wYXJhbV87CisgIH0KKworIHByaXZhdGU6
CisgIHBhcmFtX3R5cGUgcGFyYW1fOworICByYW5kb21faW50ZXJuYWw6OkZhc3RVbmlmb3JtQml0
czx1aW50NjRfdD4gZmFzdF91NjRfOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IEltcGxlbWVudGF0aW9uIGRldGFpbHMgZm9sbG93CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
dGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0
eXBlbmFtZSB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjo6cmVzdWx0X3R5cGUK
K3VuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpvcGVyYXRvcigpKAorICAgIFVS
QkcmIGdlbiwgY29uc3QgcGFyYW1fdHlwZSYgcCkgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJl
bmNlcykKKyAgdXNpbmcgcmFuZG9tX2ludGVybmFsOjpQb3NpdGl2ZVZhbHVlVDsKKyAgd2hpbGUg
KHRydWUpIHsKKyAgICBjb25zdCByZXN1bHRfdHlwZSBzYW1wbGUgPSByYW5kb21faW50ZXJuYWw6
OlJhbmRVNjRUb1JlYWw8CisgICAgICAgIHJlc3VsdF90eXBlPjo6dGVtcGxhdGUgVmFsdWU8UG9z
aXRpdmVWYWx1ZVQsIHRydWU+KGZhc3RfdTY0XyhnZW4pKTsKKyAgICBjb25zdCByZXN1bHRfdHlw
ZSByZXMgPSBwLmEoKSArIChzYW1wbGUgKiBwLnJhbmdlXyk7CisgICAgaWYgKHJlcyA8IHAuYigp
IHx8IHAucmFuZ2VfIDw9IDAgfHwgIXN0ZDo6aXNmaW5pdGUocC5yYW5nZV8pKSB7CisgICAgICBy
ZXR1cm4gcmVzOworICAgIH0KKyAgICAvLyBlbHNlIHNhbXBsZSByZWplY3RlZCwgdHJ5IGFnYWlu
LgorICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBSZWFsVHlwZT4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3Bl
cmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9zLCAgLy8g
Tk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBjb25zdCB1bmlmb3JtX3JlYWxfZGlzdHJp
YnV0aW9uPFJlYWxUeXBlPiYgeCkgeworICBhdXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjpt
YWtlX29zdHJlYW1fc3RhdGVfc2F2ZXIob3MpOworICBvcy5wcmVjaXNpb24ocmFuZG9tX2ludGVy
bmFsOjpzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjxSZWFsVHlwZT46OmtQcmVjaXNpb24pOworICBv
cyA8PCB4LmEoKSA8PCBvcy5maWxsKCkgPDwgeC5iKCk7CisgIHJldHVybiBvczsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFJlYWxUeXBl
Pgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcj4+KAorICAgIHN0
ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAgICAvLyBOT0xJTlQocnVudGlt
ZS9yZWZlcmVuY2VzKQorICAgIHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248UmVhbFR5cGU+JiB4
KSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICB1c2luZyBwYXJhbV90eXBlID0g
dHlwZW5hbWUgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46OnBhcmFtX3R5cGU7
CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlv
bjxSZWFsVHlwZT46OnJlc3VsdF90eXBlOworICBhdXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFs
OjptYWtlX2lzdHJlYW1fc3RhdGVfc2F2ZXIoaXMpOworICBhdXRvIGEgPSByYW5kb21faW50ZXJu
YWw6OnJlYWRfZmxvYXRpbmdfcG9pbnQ8cmVzdWx0X3R5cGU+KGlzKTsKKyAgaWYgKGlzLmZhaWwo
KSkgcmV0dXJuIGlzOworICBhdXRvIGIgPSByYW5kb21faW50ZXJuYWw6OnJlYWRfZmxvYXRpbmdf
cG9pbnQ8cmVzdWx0X3R5cGU+KGlzKTsKKyAgaWYgKCFpcy5mYWlsKCkpIHsKKyAgICB4LnBhcmFt
KHBhcmFtX3R5cGUoYSwgYikpOworICB9CisgIHJldHVybiBpczsKK30KK30gIC8vIG5hbWVzcGFj
ZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fVU5JRk9STV9SRUFMX0RJU1RSSUJVVElP
Tl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3VuaWZvcm1fcmVhbF9kaXN0cmlidXRpb25f
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uX3Rlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU5N2YwZWU1ZWZhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3VuaWZvcm1fcmVhbF9kaXN0cmlidXRpb25fdGVz
dC5jYwpAQCAtMCwwICsxLDMyMiBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS91bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9u
LmgiCisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGl0
ZXJhdG9yPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUg
PHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jh
d19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5o
IgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwu
aCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgiCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9j
YXQuaCIKKworLy8gTk9URVM6CisvLyAqIFNvbWUgZG9jdW1lbnRhdGlvbiBvbiBnZW5lcmF0aW5n
IHJhbmRvbSByZWFsIHZhbHVlcyBzdWdnZXN0cyB0aGF0CisvLyAgIGl0IGlzIHBvc3NpYmxlIHRv
IHVzZSBzdGQ6Om5leHRhZnRlcihiLCBEQkxfTUFYKSB0byBnZW5lcmF0ZSBhIHZhbHVlIG9uCisv
LyAgIHRoZSBjbG9zZWQgcmFuZ2UgW2EsIGJdLiBVbmZvcnR1bmF0ZWx5LCB0aGF0IHRlY2huaXF1
ZSBpcyBub3QgdW5pdmVyc2FsbHkKKy8vICAgcmVsaWFibGUgZHVlIHRvIGZsb2F0aW5nIHBvaW50
IHF1YW50aXphdGlvbi4KKy8vCisvLyAqIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248
ZmxvYXQ+IGdlbmVyYXRlcyBiZXR3ZWVuIDJeMjggYW5kIDJeMjkKKy8vICAgZGlzdGluY3QgZmxv
YXRpbmcgcG9pbnQgdmFsdWVzIGluIHRoZSByYW5nZSBbMCwgMSkuCisvLworLy8gKiBhYnNsOjp1
bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGZsb2F0PiBnZW5lcmF0ZXMgYXQgbGVhc3QgMl4yMyBk
aXN0aW5jdAorLy8gICBmbG9hdGluZyBwb2ludCB2YWx1ZXMgaW4gdGhlIHJhbmdlIFsxLCAyKS4g
VGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgYXMKKy8vICAgYW55IG90aGVyIHJhbmdlIGNvdmVyZWQg
YnkgYSBzaW5nbGUgZXhwb25lbnQgaW4gSUVFRSA3NTQuCisvLworLy8gKiBhYnNsOjp1bmlmb3Jt
X3JlYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4gZ2VuZXJhdGVzIG1vcmUgdGhhbiAyXjUyIGRpc3Rp
bmN0CisvLyAgIHZhbHVlcyBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhbmQgc2hvdWxkIGdlbmVyYXRl
IGF0IGxlYXN0IDJeNTIgZGlzdGluY3QKKy8vICAgdmFsdWVzIGluIHRoZSByYW5nZSBvZiBbMSwg
MikuCisvLworCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGU+Citj
bGFzcyBVbmlmb3JtUmVhbERpc3RyaWJ1dGlvblRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHt9OworCit1c2luZyBSZWFsVHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPGZsb2F0LCBkb3VibGUs
IGxvbmcgZG91YmxlPjsKK1RZUEVEX1RFU1RfU1VJVEUoVW5pZm9ybVJlYWxEaXN0cmlidXRpb25U
ZXN0LCBSZWFsVHlwZXMpOworCitUWVBFRF9URVNUKFVuaWZvcm1SZWFsRGlzdHJpYnV0aW9uVGVz
dCwgUGFyYW1TZXJpYWxpemVUZXN0KSB7CisgIHVzaW5nIHBhcmFtX3R5cGUgPQorICAgICAgdHlw
ZW5hbWUgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+OjpwYXJhbV90
eXBlOworCisgIGNvbnN0ZXhwciBjb25zdCBUeXBlUGFyYW0gYXsxMTUyOTIxNTA0NjA2ODQ2OTc2
fTsKKworICBjb25zdGV4cHIgaW50IGtDb3VudCA9IDEwMDA7CisgIGFic2w6Okluc2VjdXJlQml0
R2VuIGdlbjsKKyAgZm9yIChjb25zdCBhdXRvJiBwYXJhbSA6IHsKKyAgICAgICAgICAgcGFyYW1f
dHlwZSgpLAorICAgICAgICAgICBwYXJhbV90eXBlKFR5cGVQYXJhbSgyLjApLCBUeXBlUGFyYW0o
Mi4wKSksICAvLyBTYW1lCisgICAgICAgICAgIHBhcmFtX3R5cGUoVHlwZVBhcmFtKC0wLjEpLCBU
eXBlUGFyYW0oMC4xKSksCisgICAgICAgICAgIHBhcmFtX3R5cGUoVHlwZVBhcmFtKDAuMDUpLCBU
eXBlUGFyYW0oMC4xMikpLAorICAgICAgICAgICBwYXJhbV90eXBlKFR5cGVQYXJhbSgtMC4wNSks
IFR5cGVQYXJhbSgwLjEzKSksCisgICAgICAgICAgIHBhcmFtX3R5cGUoVHlwZVBhcmFtKC0wLjA1
KSwgVHlwZVBhcmFtKC0wLjAyKSksCisgICAgICAgICAgIC8vIGRvdWJsZSByYW5nZSA9IDAKKyAg
ICAgICAgICAgLy8gMl42MCAsIDJeNjAgKyAyXjYKKyAgICAgICAgICAgcGFyYW1fdHlwZShhLCBU
eXBlUGFyYW0oMTE1MjkyMTUwNDYwNjg0NzA0MCkpLAorICAgICAgICAgICAvLyAyXjYwICwgMl42
MCArIDJeNworICAgICAgICAgICBwYXJhbV90eXBlKGEsIFR5cGVQYXJhbSgxMTUyOTIxNTA0NjA2
ODQ3MTA0KSksCisgICAgICAgICAgIC8vIGRvdWJsZSByYW5nZSA9IDJeOAorICAgICAgICAgICAv
LyAyXjYwICwgMl42MCArIDJeOAorICAgICAgICAgICBwYXJhbV90eXBlKGEsIFR5cGVQYXJhbSgx
MTUyOTIxNTA0NjA2ODQ3MjMyKSksCisgICAgICAgICAgIC8vIGZsb2F0IHJhbmdlID0gMAorICAg
ICAgICAgICAvLyAyXjYwICwgMl42MCArIDJeMzYKKyAgICAgICAgICAgcGFyYW1fdHlwZShhLCBU
eXBlUGFyYW0oMTE1MjkyMTU3MzMyNjMyMzcxMikpLAorICAgICAgICAgICAvLyAyXjYwICwgMl42
MCArIDJeMzcKKyAgICAgICAgICAgcGFyYW1fdHlwZShhLCBUeXBlUGFyYW0oMTE1MjkyMTY0MjA0
NTgwMDQ0OCkpLAorICAgICAgICAgICAvLyBmbG9hdCByYW5nZSA9IDJeMzgKKyAgICAgICAgICAg
Ly8gMl42MCAsIDJeNjAgKyAyXjM4CisgICAgICAgICAgIHBhcmFtX3R5cGUoYSwgVHlwZVBhcmFt
KDExNTI5MjE3Nzk0ODQ3NTM5MjApKSwKKyAgICAgICAgICAgLy8gTGltaXRzCisgICAgICAgICAg
IHBhcmFtX3R5cGUoMCwgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSksCisg
ICAgICAgICAgIHBhcmFtX3R5cGUoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+Ojpsb3dl
c3QoKSwgMCksCisgICAgICAgICAgIHBhcmFtX3R5cGUoMCwgc3RkOjpudW1lcmljX2xpbWl0czxU
eXBlUGFyYW0+OjplcHNpbG9uKCkpLAorICAgICAgICAgICBwYXJhbV90eXBlKC1zdGQ6Om51bWVy
aWNfbGltaXRzPFR5cGVQYXJhbT46OmVwc2lsb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46OmVwc2lsb24oKSksCisgICAgICAgICAgIHBh
cmFtX3R5cGUoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjplcHNpbG9uKCksCisgICAg
ICAgICAgICAgICAgICAgICAgMiAqIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6ZXBz
aWxvbigpKSwKKyAgICAgICB9KSB7CisgICAgLy8gVmFsaWRhdGUgcGFyYW1ldGVycy4KKyAgICBj
b25zdCBhdXRvIGEgPSBwYXJhbS5hKCk7CisgICAgY29uc3QgYXV0byBiID0gcGFyYW0uYigpOwor
ICAgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBiZWZvcmUoYSwg
Yik7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5hKCksIHBhcmFtLmEoKSk7CisgICAgRVhQRUNUX0VR
KGJlZm9yZS5iKCksIHBhcmFtLmIoKSk7CisKKyAgICB7CisgICAgICBhYnNsOjp1bmlmb3JtX3Jl
YWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gdmlhX3BhcmFtKHBhcmFtKTsKKyAgICAgIEVYUEVD
VF9FUSh2aWFfcGFyYW0sIGJlZm9yZSk7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmdzdHJlYW0g
c3M7CisgICAgc3MgPDwgYmVmb3JlOworICAgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRp
b248VHlwZVBhcmFtPiBhZnRlcihUeXBlUGFyYW0oMS4wKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtKDMuMSkpOworCisgICAg
RVhQRUNUX05FKGJlZm9yZS5hKCksIGFmdGVyLmEoKSk7CisgICAgRVhQRUNUX05FKGJlZm9yZS5i
KCksIGFmdGVyLmIoKSk7CisgICAgRVhQRUNUX05FKGJlZm9yZS5wYXJhbSgpLCBhZnRlci5wYXJh
bSgpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLCBhZnRlcik7CisKKyAgICBzcyA+PiBhZnRlcjsK
KworICAgIEVYUEVDVF9FUShiZWZvcmUuYSgpLCBhZnRlci5hKCkpOworICAgIEVYUEVDVF9FUShi
ZWZvcmUuYigpLCBhZnRlci5iKCkpOworICAgIEVYUEVDVF9FUShiZWZvcmUucGFyYW0oKSwgYWZ0
ZXIucGFyYW0oKSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZSwgYWZ0ZXIpOworCisgICAgLy8gU21v
a2UgdGVzdC4KKyAgICBhdXRvIHNhbXBsZV9taW4gPSBhZnRlci5tYXgoKTsKKyAgICBhdXRvIHNh
bXBsZV9tYXggPSBhZnRlci5taW4oKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGtDb3VudDsg
aSsrKSB7CisgICAgICBhdXRvIHNhbXBsZSA9IGFmdGVyKGdlbik7CisgICAgICAvLyBGYWlsdXJl
IGhlcmUgaW5kaWNhdGVzIGEgYnVnIGluIHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb246Om9wZXJh
dG9yKCksCisgICAgICAvLyBvciBiYWQgcGFyYW1ldGVycy0tcmFuZ2UgdG9vIGxhcmdlLCBldGMu
CisgICAgICBpZiAoYWZ0ZXIubWluKCkgPT0gYWZ0ZXIubWF4KCkpIHsKKyAgICAgICAgRVhQRUNU
X0VRKHNhbXBsZSwgYWZ0ZXIubWluKCkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgRVhQRUNU
X0dFKHNhbXBsZSwgYWZ0ZXIubWluKCkpOworICAgICAgICBFWFBFQ1RfTFQoc2FtcGxlLCBhZnRl
ci5tYXgoKSk7CisgICAgICB9CisgICAgICBpZiAoc2FtcGxlID4gc2FtcGxlX21heCkgeworICAg
ICAgICBzYW1wbGVfbWF4ID0gc2FtcGxlOworICAgICAgfQorICAgICAgaWYgKHNhbXBsZSA8IHNh
bXBsZV9taW4pIHsKKyAgICAgICAgc2FtcGxlX21pbiA9IHNhbXBsZTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoIXN0ZDo6aXNfc2FtZTxUeXBlUGFyYW0sIGxvbmcgZG91YmxlPjo6dmFsdWUp
IHsKKyAgICAgIC8vIHN0YXRpY19jYXN0PGRvdWJsZT4obG9uZyBkb3VibGUpIGNhbiBvdmVyZmxv
dy4KKyAgICAgIHN0ZDo6c3RyaW5nIG1zZyA9IGFic2w6OlN0ckNhdCgiUmFuZ2U6ICIsIHN0YXRp
Y19jYXN0PGRvdWJsZT4oc2FtcGxlX21pbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiwgIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzYW1wbGVfbWF4KSk7CisgICAgICBB
QlNMX1JBV19MT0coSU5GTywgIiVzIiwgbXNnLmNfc3RyKCkpOworICAgIH0KKyAgfQorfQorCitU
WVBFRF9URVNUKFVuaWZvcm1SZWFsRGlzdHJpYnV0aW9uVGVzdCwgVmlvbGF0ZXNQcmVjb25kaXRp
b25zRGVhdGhUZXN0KSB7CisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAgLy8gSGkgPCBMbwor
ICBFWFBFQ1RfREVCVUdfREVBVEgoCisgICAgICB7IGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb248VHlwZVBhcmFtPiBkaXN0KDEwLjAsIDEuMCk7IH0sICIiKTsKKworICAvLyBIaSAtIExv
ID4gbnVtZXJpY19saW1pdHM8Pjo6bWF4KCkKKyAgRVhQRUNUX0RFQlVHX0RFQVRIKAorICAgICAg
eworICAgICAgICBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZGlz
dCgKKyAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bG93ZXN0KCks
CisgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpKTsKKyAg
ICAgIH0sCisgICAgICAiIik7CisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisjaWYg
ZGVmaW5lZChOREVCVUcpCisgIC8vIG9wdC1tb2RlLCBmb3IgaW52YWxpZCBwYXJhbWV0ZXJzLCB3
aWxsIGdlbmVyYXRlIGEgZ2FyYmFnZSB2YWx1ZSwKKyAgLy8gYnV0IHNob3VsZCBub3QgZW50ZXIg
YW4gaW5maW5pdGUgbG9vcC4KKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICB7CisgICAg
YWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGRpc3QoMTAuMCwgMS4w
KTsKKyAgICBhdXRvIHggPSBkaXN0KGdlbik7CisgICAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNuYW4o
eCkpIDw8IHg7CisgIH0KKyAgeworICAgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248
VHlwZVBhcmFtPiBkaXN0KAorICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46
Omxvd2VzdCgpLAorICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgp
KTsKKyAgICBhdXRvIHggPSBkaXN0KGdlbik7CisgICAgLy8gSW5maW5pdGUgcmVzdWx0LgorICAg
IEVYUEVDVF9GQUxTRShzdGQ6OmlzZmluaXRlKHgpKSA8PCB4OworICB9CisjZW5kaWYgIC8vIE5E
RUJVRworfQorCitUWVBFRF9URVNUKFVuaWZvcm1SZWFsRGlzdHJpYnV0aW9uVGVzdCwgVGVzdE1v
bWVudHMpIHsKKyAgY29uc3RleHByIGludCBrU2l6ZSA9IDEwMDAwMDA7CisgIHN0ZDo6dmVjdG9y
PGRvdWJsZT4gdmFsdWVzKGtTaXplKTsKKworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBybmc7Cisg
IGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBkaXN0OworICBmb3Ig
KGludCBpID0gMDsgaSA8IGtTaXplOyBpKyspIHsKKyAgICB2YWx1ZXNbaV0gPSBkaXN0KHJuZyk7
CisgIH0KKworICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVy
bmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICBFWFBFQ1RfTkVBUigw
LjUsIG1vbWVudHMubWVhbiwgMC4wMSk7CisgIEVYUEVDVF9ORUFSKDEgLyAxMi4wLCBtb21lbnRz
LnZhcmlhbmNlLCAwLjAxNSk7CisgIEVYUEVDVF9ORUFSKDAuMCwgbW9tZW50cy5za2V3bmVzcywg
MC4wMik7CisgIEVYUEVDVF9ORUFSKDkgLyA1LjAsIG1vbWVudHMua3VydG9zaXMsIDAuMDE1KTsK
K30KKworVFlQRURfVEVTVChVbmlmb3JtUmVhbERpc3RyaWJ1dGlvblRlc3QsIENoaVNxdWFyZWRU
ZXN0NTApIHsKKyAgdXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjprQ2hpU3F1YXJlZDsKKyAg
dXNpbmcgcGFyYW1fdHlwZSA9CisgICAgICB0eXBlbmFtZSBhYnNsOjp1bmlmb3JtX3JlYWxfZGlz
dHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7CisKKyAgY29uc3RleHByIHNpemVfdCBr
VHJpYWxzID0gMTAwMDAwOworICBjb25zdGV4cHIgaW50IGtCdWNrZXRzID0gNTA7CisgIGNvbnN0
ZXhwciBkb3VibGUga0V4cGVjdGVkID0KKyAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oa1RyaWFs
cykgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGtCdWNrZXRzKTsKKworICAvLyAxLWluLTEwMDAwMCB0
aHJlc2hvbGQsIGJ1dCByZW1lbWJlciwgdGhlcmUgYXJlIGFib3V0IDggdGVzdHMKKyAgLy8gaW4g
dGhpcyBmaWxlLiBBbmQgdGhlIHRlc3QgY291bGQgZmFpbCBmb3Igb3RoZXIgcmVhc29ucy4KKyAg
Ly8gRW1waXJpY2FsbHkgdmFsaWRhdGVkIHdpdGggLS1ydW5zX3Blcl90ZXN0PTEwMDAwLgorICBj
b25zdCBpbnQga1RocmVzaG9sZCA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNx
dWFyZVZhbHVlKGtCdWNrZXRzIC0gMSwgMC45OTk5OTkpOworCisgIGFic2w6Okluc2VjdXJlQml0
R2VuIHJuZzsKKyAgZm9yIChjb25zdCBhdXRvJiBwYXJhbSA6IHtwYXJhbV90eXBlKDAsIDEpLCBw
YXJhbV90eXBlKDUsIDEyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV90eXBl
KC01LCAxMyksIHBhcmFtX3R5cGUoLTUsIC0yKX0pIHsKKyAgICBjb25zdCBkb3VibGUgbWluX3Zh
bCA9IHBhcmFtLmEoKTsKKyAgICBjb25zdCBkb3VibGUgbWF4X3ZhbCA9IHBhcmFtLmIoKTsKKyAg
ICBjb25zdCBkb3VibGUgZmFjdG9yID0ga0J1Y2tldHMgLyAobWF4X3ZhbCAtIG1pbl92YWwpOwor
CisgICAgc3RkOjp2ZWN0b3I8aW50MzJfdD4gY291bnRzKGtCdWNrZXRzLCAwKTsKKyAgICBhYnNs
Ojp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZGlzdChwYXJhbSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBrVHJpYWxzOyBpKyspIHsKKyAgICAgIGF1dG8geCA9IGRp
c3Qocm5nKTsKKyAgICAgIGF1dG8gYnVja2V0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigoeCAtIG1p
bl92YWwpICogZmFjdG9yKTsKKyAgICAgIGNvdW50c1tidWNrZXRdKys7CisgICAgfQorCisgICAg
ZG91YmxlIGNoaV9zcXVhcmUgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVdpdGhF
eHBlY3RlZCgKKyAgICAgICAgc3RkOjpiZWdpbihjb3VudHMpLCBzdGQ6OmVuZChjb3VudHMpLCBr
RXhwZWN0ZWQpOworICAgIGlmIChjaGlfc3F1YXJlID4ga1RocmVzaG9sZCkgeworICAgICAgZG91
YmxlIHBfdmFsdWUgPQorICAgICAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJl
UFZhbHVlKGNoaV9zcXVhcmUsIGtCdWNrZXRzKTsKKworICAgICAgLy8gQ2hpLXNxdWFyZWQgdGVz
dCBmYWlsZWQuIE91dHB1dCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgdW5pZm9ybS4KKyAgICAgIHN0
ZDo6c3RyaW5nIG1zZzsKKyAgICAgIGZvciAoY29uc3QgYXV0byYgYSA6IGNvdW50cykgeworICAg
ICAgICBhYnNsOjpTdHJBcHBlbmQoJm1zZywgYSwgIlxuIik7CisgICAgICB9CisgICAgICBhYnNs
OjpTdHJBcHBlbmQoJm1zZywga0NoaVNxdWFyZWQsICIgcC12YWx1ZSAiLCBwX3ZhbHVlLCAiXG4i
KTsKKyAgICAgIGFic2w6OlN0ckFwcGVuZCgmbXNnLCAiSGlnaCAiLCBrQ2hpU3F1YXJlZCwgIiB2
YWx1ZTogIiwgY2hpX3NxdWFyZSwgIiA+ICIsCisgICAgICAgICAgICAgICAgICAgICAga1RocmVz
aG9sZCk7CisgICAgICBBQlNMX1JBV19MT0coSU5GTywgIiVzIiwgbXNnLmNfc3RyKCkpOworICAg
ICAgRkFJTCgpIDw8IG1zZzsKKyAgICB9CisgIH0KK30KKworVFlQRURfVEVTVChVbmlmb3JtUmVh
bERpc3RyaWJ1dGlvblRlc3QsIFN0YWJpbGl0eVRlc3QpIHsKKyAgLy8gYWJzbDo6dW5pZm9ybV9y
ZWFsX2Rpc3RyaWJ1dGlvbiBzdGFiaWxpdHkgcmVsaWVzIG9ubHkgb24KKyAgLy8gcmFuZG9tX2lu
dGVybmFsOjpSYW5kVTY0VG9Eb3VibGUgYW5kIHJhbmRvbV9pbnRlcm5hbDo6UmFuZFU2NFRvRmxv
YXQuCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKAorICAgICAg
ezB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHhGRkNFQTUwRkRCMkY5NTNCdWxsLCAweEMzMzJEREVG
QkU2QzVBQTV1bGwsCisgICAgICAgMHg2NTU4MjE4NTY4QUI5NzAydWxsLCAweDJBRUY3REFENUI2
RTJGODR1bGwsIDB4MTUyMUI2MjgyOTA3NjE3MHVsbCwKKyAgICAgICAweEVDREQ0Nzc1NjE5RjE1
MTB1bGwsIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbCwgMHgwMzM0RkUxRUFBMDM2M0NGdWxsLAorICAg
ICAgIDB4QjU3MzVDOTA0QzcwQTIzOXVsbCwgMHhENTlFOUUwQkNCQUFERTE0dWxsLCAweEVFQ0M4
NkJDNjA2MjJDQTd1bGx9KTsKKworICBzdGQ6OnZlY3RvcjxpbnQ+IG91dHB1dCgxMik7CisKKyAg
YWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGRpc3Q7CisgIHN0ZDo6
Z2VuZXJhdGUoc3RkOjpiZWdpbihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLCBbJl0geworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KFR5cGVQYXJhbSgxMDAwMDAwKSAqIGRpc3QodXJiZykp
OworICB9KTsKKworICBFWFBFQ1RfVEhBVCgKKyAgICAgIG91dHB1dCwgIC8vCisgICAgICB0ZXN0
aW5nOjpFbGVtZW50c0FyZSg1OSwgOTk5MjQ2LCA3NjI0OTQsIDM5NTg3NiwgMTY3NzE2LCA4MjU0
NSwgOTI1MjUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgNzczNDEsIDEyNTI3LCA3MDg3
OTEsIDgzNDQ1MSwgOTMyODA4KSk7Cit9CisKK1RFU1QoVW5pZm9ybVJlYWxEaXN0cmlidXRpb25U
ZXN0LCBBbGdvcml0aG1Cb3VuZHMpIHsKKyAgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlv
bjxkb3VibGU+IGRpc3Q7CisKKyAgeworICAgIC8vIFRoaXMgcmV0dXJucyB0aGUgc21hbGxlc3Qg
dmFsdWUgPjAgZnJvbSBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLgorICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKHsweDAwMDAwMDAwMDAwMDAwMDF1
bGx9KTsKKyAgICBkb3VibGUgYSA9IGRpc3QodXJiZyk7CisgICAgRVhQRUNUX0VRKGEsIDUuNDIx
MDEwODYyNDI3NTIyMTcwMDRlLTIwKTsKKyAgfQorCisgIHsKKyAgICAvLyBUaGlzIHJldHVybnMg
YSB2YWx1ZSB2ZXJ5IG5lYXIgMC41IGZyb20gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlv
bi4KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZyh7MHg3ZmZm
ZmZmZmZmZmZmZmVmdWxsfSk7CisgICAgZG91YmxlIGEgPSBkaXN0KHVyYmcpOworICAgIEVYUEVD
VF9FUShhLCAwLjQ5OTk5OTk5OTk5OTk5OTk0NDQ4OSk7CisgIH0KKyAgeworICAgIC8vIFRoaXMg
cmV0dXJucyBhIHZhbHVlIHZlcnkgbmVhciAwLjUgZnJvbSBhYnNsOjp1bmlmb3JtX3JlYWxfZGlz
dHJpYnV0aW9uLgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJn
KHsweDgwMDAwMDAwMDAwMDAwMDB1bGx9KTsKKyAgICBkb3VibGUgYSA9IGRpc3QodXJiZyk7Cisg
ICAgRVhQRUNUX0VRKGEsIDAuNSk7CisgIH0KKworICB7CisgICAgLy8gVGhpcyByZXR1cm5zIHRo
ZSBsYXJnZXN0IHZhbHVlIDwxIGZyb20gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi4K
KyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZyh7MHhGRkZGRkZG
RkZGRkZGRkVGdWxsfSk7CisgICAgZG91YmxlIGEgPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9F
UShhLCAwLjk5OTk5OTk5OTk5OTk5OTg4ODk3OCk7CisgIH0KKyAgeworICAgIC8vIFRoaXMgKkFM
U08qIHJldHVybnMgdGhlIGxhcmdlc3QgdmFsdWUgPDEuCisgICAgYWJzbDo6cmFuZG9tX2ludGVy
bmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoezB4RkZGRkZGRkZGRkZGRkZGRnVsbH0pOworICAgIGRv
dWJsZSBhID0gZGlzdCh1cmJnKTsKKyAgICBFWFBFQ1RfRVEoYSwgMC45OTk5OTk5OTk5OTk5OTk4
ODg5NzgpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL3ppcGZfZGlzdHJpYnV0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vemlwZl9kaXN0cmlidXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDdiNGFjMzhlZGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vemlwZl9kaXN0cmlidXRpb24uaApAQCAtMCww
ICsxLDI2OSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNp
Zm5kZWYgQUJTTF9SQU5ET01fWklQRl9ESVNUUklCVVRJT05fSF8KKyNkZWZpbmUgQUJTTF9SQU5E
T01fWklQRl9ESVNUUklCVVRJT05fSF8KKworI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8
Y21hdGg+CisjaW5jbHVkZSA8aXN0cmVhbT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8
b3N0cmVhbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvcmFuZG9t
L2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20v
dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIGFi
c2w6OnppcGZfZGlzdHJpYnV0aW9uIHByb2R1Y2VzIHJhbmRvbSBpbnRlZ2VyLXZhbHVlcyBpbiB0
aGUgcmFuZ2UgWzAsIGtdLAorLy8gZGlzdHJpYnV0ZWQgYWNjb3JkaW5nIHRvIHRoZSBkaXNjcmV0
ZSBwcm9iYWJpbGl0eSBmdW5jdGlvbjoKKy8vCisvLyAgUCh4KSA9ICh2ICsgeCkgXiAtcQorLy8K
Ky8vIFRoZSBwYXJhbWV0ZXIgYHZgIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAgYW5kIHRoZSBwYXJh
bWV0ZXIgYHFgIG11c3QgYmUKKy8vIGdyZWF0ZXIgdGhhbiAxLiBJZiBlaXRoZXIgb2YgdGhlc2Ug
cGFyYW1ldGVycyB0YWtlIGludmFsaWQgdmFsdWVzIHRoZW4gdGhlCisvLyBiZWhhdmlvciBpcyB1
bmRlZmluZWQuCisvLworLy8gSW50VHlwZSBpcyB0aGUgcmVzdWx0X3R5cGUgZ2VuZXJhdGVkIGJ5
IHRoZSBnZW5lcmF0b3IuIEl0IG11c3QgYmUgb2YgaW50ZWdyYWwKKy8vIHR5cGU7IGEgc3RhdGlj
X2Fzc2VydCBlbnN1cmVzIHRoaXMgaXMgdGhlIGNhc2UuCisvLworLy8gVGhlIGltcGxlbWVudGF0
aW9uIGlzIGJhc2VkIG9uIFcuSG9ybWFubiwgRy5EZXJmbGluZ2VyOgorLy8KKy8vICJSZWplY3Rp
b24tSW52ZXJzaW9uIHRvIEdlbmVyYXRlIFZhcmlhdGVzIGZyb20gTW9ub3RvbmUgRGlzY3JldGUK
Ky8vIERpc3RyaWJ1dGlvbnMiCisvLworLy8gaHR0cDovL2VleW9yZS53dS13aWVuLmFjLmF0L3Bh
cGVycy85Ni0wNC0wNC53aC1kZXIucHMuZ3oKKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlw
ZSA9IGludD4KK2NsYXNzIHppcGZfZGlzdHJpYnV0aW9uIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJl
c3VsdF90eXBlID0gSW50VHlwZTsKKworICBjbGFzcyBwYXJhbV90eXBlIHsKKyAgIHB1YmxpYzoK
KyAgICB1c2luZyBkaXN0cmlidXRpb25fdHlwZSA9IHppcGZfZGlzdHJpYnV0aW9uOworCisgICAg
Ly8gUHJlY29uZGl0aW9uczogayA+IDAsIHYgPiAwLCBxID4gMQorICAgIC8vIFRoZSBwcmVjb25k
aWR0aW9ucyBhcmUgdmFsaWRhdGVkIHdoZW4gTkRFQlVHIGlzIG5vdCBkZWZpbmVkIHZpYQorICAg
IC8vIGEgcGFpciBvZiBhc3NlcnQoKSBkaXJlY3RpdmVzLgorICAgIC8vIElmIE5ERUJVRyBpcyBk
ZWZpbmVkIGFuZCBlaXRoZXIgb3IgYm90aCBvZiB0aGVzZSBwYXJhbWV0ZXJzIHRha2UgaW52YWxp
ZAorICAgIC8vIHZhbHVlcywgdGhlIGJlaGF2aW9yIG9mIHRoZSBjbGFzcyBpcyB1bmRlZmluZWQu
CisgICAgZXhwbGljaXQgcGFyYW1fdHlwZShyZXN1bHRfdHlwZSBrID0gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8SW50VHlwZT46Om1heCkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBx
ID0gMi4wLCBkb3VibGUgdiA9IDEuMCk7CisKKyAgICByZXN1bHRfdHlwZSBrKCkgY29uc3QgeyBy
ZXR1cm4ga187IH0KKyAgICBkb3VibGUgcSgpIGNvbnN0IHsgcmV0dXJuIHFfOyB9CisgICAgZG91
YmxlIHYoKSBjb25zdCB7IHJldHVybiB2XzsgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICByZXR1
cm4gYS5rXyA9PSBiLmtfICYmIGEucV8gPT0gYi5xXyAmJiBhLnZfID09IGIudl87CisgICAgfQor
ICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29uc3QgcGFy
YW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuICEoYSA9PSBiKTsKKyAgICB9CisKKyAgIHByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIHppcGZfZGlzdHJpYnV0aW9uOworICAgIGlubGluZSBkb3Vi
bGUgaChkb3VibGUgeCkgY29uc3Q7CisgICAgaW5saW5lIGRvdWJsZSBoaW52KGRvdWJsZSB4KSBj
b25zdDsKKyAgICBpbmxpbmUgZG91YmxlIGNvbXB1dGVfcygpIGNvbnN0OworICAgIGlubGluZSBk
b3VibGUgcG93X25lZ2F0aXZlX3EoZG91YmxlIHgpIGNvbnN0OworCisgICAgLy8gUGFyYW1ldGVy
cyBoZXJlIGFyZSBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBwYXJhbWV0ZXJzIG9mIEFsZ29yaXRo
bSBaUkkKKyAgICAvLyBpbiB0aGUgcGFwZXIuCisgICAgSW50VHlwZSBrXzsKKyAgICBkb3VibGUg
cV87CisgICAgZG91YmxlIHZfOworCisgICAgZG91YmxlIG9uZV9taW51c19xXzsgIC8vIDEtcQor
ICAgIGRvdWJsZSBzXzsKKyAgICBkb3VibGUgb25lX21pbnVzX3FfaW52XzsgIC8vIDEgLyAxLXEK
KyAgICBkb3VibGUgaHhtXzsgICAgICAgICAgICAgIC8vIGgoayArIDAuNSkKKyAgICBkb3VibGUg
aHgwX21pbnVzX2h4bV87ICAgIC8vIGgoeDApIC0gaChrICsgMC41KQorCisgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2ludGVncmFsPEludFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICJDbGFzcy10ZW1wbGF0ZSBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjw+IG11c3QgYmUgIgorICAg
ICAgICAgICAgICAgICAgInBhcmFtZXRlcml6ZWQgdXNpbmcgYW4gaW50ZWdyYWwgdHlwZS4iKTsK
KyAgfTsKKworICB6aXBmX2Rpc3RyaWJ1dGlvbigpCisgICAgICA6IHppcGZfZGlzdHJpYnV0aW9u
KChzdGQ6Om51bWVyaWNfbGltaXRzPEludFR5cGU+OjptYXgpKCkpIHt9CisKKyAgZXhwbGljaXQg
emlwZl9kaXN0cmlidXRpb24ocmVzdWx0X3R5cGUgaywgZG91YmxlIHEgPSAyLjAsIGRvdWJsZSB2
ID0gMS4wKQorICAgICAgOiBwYXJhbV8oaywgcSwgdikge30KKworICBleHBsaWNpdCB6aXBmX2Rp
c3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBwKSA6IHBhcmFtXyhwKSB7fQorCisgIHZvaWQg
cmVzZXQoKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBv
cGVyYXRvcigpKFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAg
cmV0dXJuICgqdGhpcykoZywgcGFyYW1fKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
UkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGlt
ZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtX3R5cGUm
IHApOworCisgIHJlc3VsdF90eXBlIGsoKSBjb25zdCB7IHJldHVybiBwYXJhbV8uaygpOyB9Cisg
IGRvdWJsZSBxKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fLnEoKTsgfQorICBkb3VibGUgdigpIGNv
bnN0IHsgcmV0dXJuIHBhcmFtXy52KCk7IH0KKworICBwYXJhbV90eXBlIHBhcmFtKCkgY29uc3Qg
eyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgcCkgeyBw
YXJhbV8gPSBwOyB9CisKKyAgcmVzdWx0X3R5cGUobWluKSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgcmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsgcmV0dXJuIGsoKTsgfQorCisgIGZyaWVuZCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgemlwZl9kaXN0cmlidXRpb24mIGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgemlwZl9kaXN0cmlidXRpb24mIGIpIHsKKyAgICByZXR1cm4gYS5w
YXJhbV8gPT0gYi5wYXJhbV87CisgIH0KKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCB6
aXBmX2Rpc3RyaWJ1dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB6aXBm
X2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiBhLnBhcmFtXyAhPSBiLnBhcmFtXzsKKyAg
fQorCisgcHJpdmF0ZToKKyAgcGFyYW1fdHlwZSBwYXJhbV87Cit9OworCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gSW1wbGVtZW50YXRpb24gZGV0YWlscyBmb2xsb3cKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgoremlwZl9kaXN0cmlidXRpb248
SW50VHlwZT46OnBhcmFtX3R5cGU6OnBhcmFtX3R5cGUoCisgICAgdHlwZW5hbWUgemlwZl9kaXN0
cmlidXRpb248SW50VHlwZT46OnJlc3VsdF90eXBlIGssIGRvdWJsZSBxLCBkb3VibGUgdikKKyAg
ICA6IGtfKGspLCBxXyhxKSwgdl8odiksIG9uZV9taW51c19xXygxIC0gcSkgeworICBhc3NlcnQo
cSA+IDEpOworICBhc3NlcnQodiA+IDApOworICBhc3NlcnQoayA+IDApOworICBvbmVfbWludXNf
cV9pbnZfID0gMSAvIG9uZV9taW51c19xXzsKKworICAvLyBTZXR1cCBmb3IgdGhlIFpSSSBhbGdv
cml0aG0gKHBnIDE3IG9mIHRoZSBwYXBlcikuCisgIC8vIENvbXB1dGU6IGgoaSBtYXgpID0+IGgo
ayArIDAuNSkKKyAgY29uc3RleHByIGRvdWJsZSBrTWF4ID0gMTg0NDY3NDQwNzM3MDk1NDk1Njgu
MDsKKyAgZG91YmxlIGtkID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihrKTsKKyAgLy8gVE9ETyhhYnNs
LXRlYW0pOiBEZXRlcm1pbmUgaWYgdGhpcyBjaGVjayBpcyBuZWVkZWQsIGFuZCBpZiBzbywgYWRk
IGEgdGVzdAorICAvLyB0aGF0IGZhaWxzIGZvciBrID4ga01heAorICBpZiAoa2QgPiBrTWF4KSB7
CisgICAgLy8gRW5zdXJlIHRoYXQgb3VyIG1heGltdW0gdmFsdWUgaXMgY2FwcGVkIHRvIGEgdmFs
dWUgd2hpY2ggd2lsbAorICAgIC8vIHJvdW5kLXRyaXAgYmFjayB0aHJvdWdoIGRvdWJsZS4KKyAg
ICBrZCA9IGtNYXg7CisgIH0KKyAgaHhtXyA9IGgoa2QgKyAwLjUpOworCisgIC8vIENvbXB1dGU6
IGgoMCkKKyAgY29uc3QgYm9vbCB1c2VfcHJlY29tcHV0ZWQgPSAodiA9PSAxLjAgJiYgcSA9PSAy
LjApOworICBjb25zdCBkb3VibGUgaDB4NSA9IHVzZV9wcmVjb21wdXRlZCA/ICgtMS4wIC8gMS41
KSAgLy8gZXhwKC1sb2coMS41KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBoKDAuNSk7CisgIGNvbnN0IGRvdWJsZSBlbG9ndl9xID0gKHZfID09IDEuMCkgPyAxIDog
cG93X25lZ2F0aXZlX3Eodl8pOworCisgIC8vIGgoMCkgPSBoKDAuNSkgLSBleHAobG9nKHYpICog
LXEpCisgIGh4MF9taW51c19oeG1fID0gKGgweDUgLSBlbG9ndl9xKSAtIGh4bV87CisKKyAgLy8g
QW5kIHMKKyAgc18gPSB1c2VfcHJlY29tcHV0ZWQgPyAwLjQ2MTUzODQ2MTUzODQ2MTIzIDogY29t
cHV0ZV9zKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgorZG91YmxlIHppcGZf
ZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOjpoKGRvdWJsZSB4KSBjb25zdCB7Cisg
IC8vIHN0ZDo6ZXhwKG9uZV9taW51c19xXyAqIHN0ZDo6bG9nKHZfICsgeCkpICogb25lX21pbnVz
X3FfaW52XzsKKyAgeCArPSB2XzsKKyAgcmV0dXJuIChvbmVfbWludXNfcV8gPT0gLTEuMCkKKyAg
ICAgICAgICAgICA/ICgtMS4wIC8geCkgIC8vIC1leHAoLWxvZyh4KSkKKyAgICAgICAgICAgICA6
IChzdGQ6OmV4cChzdGQ6OmxvZyh4KSAqIG9uZV9taW51c19xXykgKiBvbmVfbWludXNfcV9pbnZf
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+Citkb3VibGUgemlwZl9kaXN0cmli
dXRpb248SW50VHlwZT46OnBhcmFtX3R5cGU6OmhpbnYoZG91YmxlIHgpIGNvbnN0IHsKKyAgLy8g
c3RkOjpleHAob25lX21pbnVzX3FfaW52XyAqIHN0ZDo6bG9nKG9uZV9taW51c19xXyAqIHgpKSAt
IHZfOworICByZXR1cm4gLXZfICsgKChvbmVfbWludXNfcV8gPT0gLTEuMCkKKyAgICAgICAgICAg
ICAgICAgICAgPyAoLTEuMCAvIHgpICAvLyBleHAoLWxvZygteCkpCisgICAgICAgICAgICAgICAg
ICAgIDogc3RkOjpleHAob25lX21pbnVzX3FfaW52XyAqIHN0ZDo6bG9nKG9uZV9taW51c19xXyAq
IHgpKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgorZG91YmxlIHppcGZfZGlz
dHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOjpjb21wdXRlX3MoKSBjb25zdCB7CisgIC8v
IDEgLSBoaW52KGgoMS41KSAtIHN0ZDo6ZXhwKHN0ZDo6bG9nKHZfICsgMSkgKiAtcV8pKTsKKyAg
cmV0dXJuIDEuMCAtIGhpbnYoaCgxLjUpIC0gcG93X25lZ2F0aXZlX3Eodl8gKyAxLjApKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+Citkb3VibGUgemlwZl9kaXN0cmlidXRpb248
SW50VHlwZT46OnBhcmFtX3R5cGU6OnBvd19uZWdhdGl2ZV9xKGRvdWJsZSB4KSBjb25zdCB7Cisg
IC8vIHN0ZDo6ZXhwKHN0ZDo6bG9nKHgpICogLXFfKTsKKyAgcmV0dXJuIHFfID09IDIuMCA/ICgx
LjAgLyAoeCAqIHgpKSA6IHN0ZDo6ZXhwKHN0ZDo6bG9nKHgpICogLXFfKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIEludFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1l
IHppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpyZXN1bHRfdHlwZQoremlwZl9kaXN0cmlidXRp
b248SW50VHlwZT46Om9wZXJhdG9yKCkoCisgICAgVVJCRyYgZywgY29uc3QgcGFyYW1fdHlwZSYg
cCkgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgYWJzbDo6dW5pZm9ybV9yZWFs
X2Rpc3RyaWJ1dGlvbjxkb3VibGU+IHVuaWZvcm1fZG91YmxlOworICBkb3VibGUgazsKKyAgZm9y
ICg7OykgeworICAgIGNvbnN0IGRvdWJsZSB2ID0gdW5pZm9ybV9kb3VibGUoZyk7CisgICAgY29u
c3QgZG91YmxlIHUgPSBwLmh4bV8gKyB2ICogcC5oeDBfbWludXNfaHhtXzsKKyAgICBjb25zdCBk
b3VibGUgeCA9IHAuaGludih1KTsKKyAgICBrID0gcmludCh4KTsgICAgICAgICAgICAgIC8vIHN0
ZDo6Zmxvb3IoeCArIDAuNSk7CisgICAgaWYgKGsgPiBwLmsoKSkgY29udGludWU7ICAvLyByZWpl
Y3QgayA+IG1heF9rCisgICAgaWYgKGsgLSB4IDw9IHAuc18pIGJyZWFrOworICAgIGNvbnN0IGRv
dWJsZSBoID0gcC5oKGsgKyAwLjUpOworICAgIGNvbnN0IGRvdWJsZSByID0gcC5wb3dfbmVnYXRp
dmVfcShwLnZfICsgayk7CisgICAgaWYgKHUgPj0gaCAtIHIpIGJyZWFrOworICB9CisgIEludFR5
cGUga2kgPSBzdGF0aWNfY2FzdDxJbnRUeXBlPihrKTsKKyAgYXNzZXJ0KGtpIDw9IHAua18pOwor
ICByZXR1cm4ga2k7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBJbnRUeXBlPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+
JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3Ms
ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0IHppcGZfZGlzdHJpYnV0
aW9uPEludFR5cGU+JiB4KSB7CisgIHVzaW5nIHN0cmVhbV90eXBlID0KKyAgICAgIHR5cGVuYW1l
IHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX2Zvcm1hdF90eXBlPEludFR5cGU+Ojp0eXBlOworICBh
dXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjptYWtlX29zdHJlYW1fc3RhdGVfc2F2ZXIob3Mp
OworICBvcy5wcmVjaXNpb24ocmFuZG9tX2ludGVybmFsOjpzdHJlYW1fcHJlY2lzaW9uX2hlbHBl
cjxkb3VibGU+OjprUHJlY2lzaW9uKTsKKyAgb3MgPDwgc3RhdGljX2Nhc3Q8c3RyZWFtX3R5cGU+
KHguaygpKSA8PCBvcy5maWxsKCkgPDwgeC5xKCkgPDwgb3MuZmlsbCgpCisgICAgIDw8IHgudigp
OworICByZXR1cm4gb3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBJbnRUeXBlPgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFp
dHM+JiBvcGVyYXRvcj4+KAorICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYg
aXMsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHppcGZfZGlzdHJpYnV0aW9u
PEludFR5cGU+JiB4KSB7ICAgICAgICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICB1
c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIHppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+Ojpy
ZXN1bHRfdHlwZTsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1lIHppcGZfZGlzdHJpYnV0
aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOworICB1c2luZyBzdHJlYW1fdHlwZSA9CisgICAgICB0
eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OnN0cmVhbV9mb3JtYXRfdHlwZTxJbnRUeXBlPjo6dHlw
ZTsKKyAgc3RyZWFtX3R5cGUgazsKKyAgZG91YmxlIHE7CisgIGRvdWJsZSB2OworCisgIGF1dG8g
c2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2VfaXN0cmVhbV9zdGF0ZV9zYXZlcihpcyk7Cisg
IGlzID4+IGsgPj4gcSA+PiB2OworICBpZiAoIWlzLmZhaWwoKSkgeworICAgIHgucGFyYW0ocGFy
YW1fdHlwZShzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oayksIHEsIHYpKTsKKyAgfQorICByZXR1
cm4gaXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5E
T01fWklQRl9ESVNUUklCVVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS96aXBmX2Rp
c3RyaWJ1dGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3ppcGZfZGlzdHJpYnV0aW9uX3Rlc3Qu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRkNGEwZmNmNzkzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3ppcGZfZGlzdHJpYnV0aW9uX3Rlc3QuY2MK
QEAgLTAsMCArMSw0MjMgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vemlwZl9kaXN0cmlidXRpb24uaCIKKworI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+Cisj
aW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHN0cmluZz4K
KyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImdtb2Nr
L2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2Uv
aW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9j
aGlfc3F1YXJlLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VxdWVuY2VfdXJi
Zy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3JhbmRvbS5oIgorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmgiCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmlwLmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6
YWJzbDo6cmFuZG9tX2ludGVybmFsOjprQ2hpU3F1YXJlZDsKK3VzaW5nIDo6dGVzdGluZzo6RWxl
bWVudHNBcmU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgorY2xhc3MgWmlwZkRpc3Ry
aWJ1dGlvblR5cGVkVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3VzaW5nIElu
dFR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczxpbnQsIGludDhfdCwgaW50MTZfdCwgaW50MzJfdCwg
aW50NjRfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90LCB1aW50
MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90PjsKK1RZUEVEX1RFU1RfQ0FTRShaaXBmRGlzdHJpYnV0
aW9uVHlwZWRUZXN0LCBJbnRUeXBlcyk7CisKK1RZUEVEX1RFU1QoWmlwZkRpc3RyaWJ1dGlvblR5
cGVkVGVzdCwgU2VyaWFsaXplVGVzdCkgeworICB1c2luZyBwYXJhbV90eXBlID0gdHlwZW5hbWUg
YWJzbDo6emlwZl9kaXN0cmlidXRpb248VHlwZVBhcmFtPjo6cGFyYW1fdHlwZTsKKworICBjb25z
dGV4cHIgaW50IGtDb3VudCA9IDEwMDA7CisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdlbjsKKyAg
Zm9yIChjb25zdCBhdXRvJiBwYXJhbSA6IHsKKyAgICAgICAgICAgcGFyYW1fdHlwZSgpLAorICAg
ICAgICAgICBwYXJhbV90eXBlKDMyKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZSgxMDAsIDMsIDIp
LAorICAgICAgICAgICBwYXJhbV90eXBlKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6
bWF4KCksIDQsIDMpLAorICAgICAgICAgICBwYXJhbV90eXBlKHN0ZDo6bnVtZXJpY19saW1pdHM8
VHlwZVBhcmFtPjo6bWF4KCkgLyAyKSwKKyAgICAgICB9KSB7CisgICAgLy8gVmFsaWRhdGUgcGFy
YW1ldGVycy4KKyAgICBjb25zdCBhdXRvIGsgPSBwYXJhbS5rKCk7CisgICAgY29uc3QgYXV0byBx
ID0gcGFyYW0ucSgpOworICAgIGNvbnN0IGF1dG8gdiA9IHBhcmFtLnYoKTsKKworICAgIGFic2w6
OnppcGZfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gYmVmb3JlKGssIHEsIHYpOworICAgIEVYUEVD
VF9FUShiZWZvcmUuaygpLCBwYXJhbS5rKCkpOworICAgIEVYUEVDVF9FUShiZWZvcmUucSgpLCBw
YXJhbS5xKCkpOworICAgIEVYUEVDVF9FUShiZWZvcmUudigpLCBwYXJhbS52KCkpOworCisgICAg
eworICAgICAgYWJzbDo6emlwZl9kaXN0cmlidXRpb248VHlwZVBhcmFtPiB2aWFfcGFyYW0ocGFy
YW0pOworICAgICAgRVhQRUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAgICB9CisKKyAgICAv
LyBWYWxpZGF0ZSBzdHJlYW0gc2VyaWFsaXphdGlvbi4KKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBz
czsKKyAgICBzcyA8PCBiZWZvcmU7CisgICAgYWJzbDo6emlwZl9kaXN0cmlidXRpb248VHlwZVBh
cmFtPiBhZnRlcig0LCA1LjUsIDQuNCk7CisKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLmsoKSwgYWZ0
ZXIuaygpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLnEoKSwgYWZ0ZXIucSgpKTsKKyAgICBFWFBF
Q1RfTkUoYmVmb3JlLnYoKSwgYWZ0ZXIudigpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLnBhcmFt
KCksIGFmdGVyLnBhcmFtKCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUsIGFmdGVyKTsKKworICAg
IHNzID4+IGFmdGVyOworCisgICAgRVhQRUNUX0VRKGJlZm9yZS5rKCksIGFmdGVyLmsoKSk7Cisg
ICAgRVhQRUNUX0VRKGJlZm9yZS5xKCksIGFmdGVyLnEoKSk7CisgICAgRVhQRUNUX0VRKGJlZm9y
ZS52KCksIGFmdGVyLnYoKSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5wYXJhbSgpLCBhZnRlci5w
YXJhbSgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLCBhZnRlcik7CisKKyAgICAvLyBTbW9rZSB0
ZXN0LgorICAgIGF1dG8gc2FtcGxlX21pbiA9IGFmdGVyLm1heCgpOworICAgIGF1dG8gc2FtcGxl
X21heCA9IGFmdGVyLm1pbigpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwga0NvdW50OyBpKysp
IHsKKyAgICAgIGF1dG8gc2FtcGxlID0gYWZ0ZXIoZ2VuKTsKKyAgICAgIEVYUEVDVF9HRShzYW1w
bGUsIGFmdGVyLm1pbigpKTsKKyAgICAgIEVYUEVDVF9MRShzYW1wbGUsIGFmdGVyLm1heCgpKTsK
KyAgICAgIGlmIChzYW1wbGUgPiBzYW1wbGVfbWF4KSBzYW1wbGVfbWF4ID0gc2FtcGxlOworICAg
ICAgaWYgKHNhbXBsZSA8IHNhbXBsZV9taW4pIHNhbXBsZV9taW4gPSBzYW1wbGU7CisgICAgfQor
ICAgIEFCU0xfSU5URVJOQUxfTE9HKElORk8sCisgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
U3RyQ2F0KCJSYW5nZTogIiwgK3NhbXBsZV9taW4sICIsICIsICtzYW1wbGVfbWF4KSk7CisgIH0K
K30KKworY2xhc3MgWmlwZk1vZGVsIHsKKyBwdWJsaWM6CisgIFppcGZNb2RlbChzaXplX3Qgaywg
ZG91YmxlIHEsIGRvdWJsZSB2KSA6IGtfKGspLCBxXyhxKSwgdl8odikge30KKworICBkb3VibGUg
bWVhbigpIGNvbnN0IHsgcmV0dXJuIG1lYW5fOyB9CisKKyAgLy8gRm9yIHRoZSBvdGhlciBtb21l
bnRzIG9mIHRoZSBaaXBmIGRpc3RyaWJ1dGlvbiwgc2VlLCBmb3IgZXhhbXBsZSwKKyAgLy8gaHR0
cDovL21hdGh3b3JsZC53b2xmcmFtLmNvbS9aaXBmRGlzdHJpYnV0aW9uLmh0bWwKKworICAvLyBQ
TUYoaykgPSAoMSAvIGtecykgLyBIKE4scykKKyAgLy8gUmV0dXJucyB0aGUgcHJvYmFiaWxpdHkg
dGhhdCBhbnkgc2luZ2xlIGludm9jYXRpb24gcmV0dXJucyBrLgorICBkb3VibGUgUE1GKHNpemVf
dCBpKSB7IHJldHVybiBpID49IGhucV8uc2l6ZSgpID8gMC4wIDogaG5xX1tpXSAvIHN1bV9obnFf
OyB9CisKKyAgLy8gQ0RGID0gSChrLCBzKSAvIEgoTixzKQorICBkb3VibGUgQ0RGKHNpemVfdCBp
KSB7CisgICAgaWYgKGkgPj0gaG5xXy5zaXplKCkpIHsKKyAgICAgIHJldHVybiAxLjA7CisgICAg
fQorICAgIGF1dG8gaXQgPSBzdGQ6OmJlZ2luKGhucV8pOworICAgIGRvdWJsZSBoID0gMC4wOwor
ICAgIGZvciAoY29uc3QgYXV0byBlbmQgPSBpdDsgaXQgIT0gZW5kOyBpdCsrKSB7CisgICAgICBo
ICs9ICppdDsKKyAgICB9CisgICAgcmV0dXJuIGggLyBzdW1faG5xXzsKKyAgfQorCisgIC8vIFRo
ZSBJbnZlcnNlQ0RGIHJldHVybnMgdGhlIGsgdmFsdWVzIHdoaWNoIGJvdW5kIHAgb24gdGhlIHVw
cGVyIGFuZCBsb3dlcgorICAvLyBib3VuZC4gU2luY2UgdGhlcmUgaXMgbm8gY2xvc2VkLWZvcm0g
c29sdXRpb24sIHRoaXMgaXMgaW1wbGVtZW50ZWQgYXMgYQorICAvLyBiaXNjdGlvbiBvZiB0aGUg
Y2RmLgorICBzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+IEludmVyc2VDREYoZG91YmxlIHApIHsK
KyAgICBzaXplX3QgbWluID0gMDsKKyAgICBzaXplX3QgbWF4ID0gaG5xXy5zaXplKCk7CisgICAg
d2hpbGUgKG1heCA+IG1pbiArIDEpIHsKKyAgICAgIHNpemVfdCB0YXJnZXQgPSAobWF4ICsgbWlu
KSA+PiAxOworICAgICAgZG91YmxlIHggPSBDREYodGFyZ2V0KTsKKyAgICAgIGlmICh4ID4gcCkg
eworICAgICAgICBtYXggPSB0YXJnZXQ7CisgICAgICB9IGVsc2UgeworICAgICAgICBtaW4gPSB0
YXJnZXQ7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiB7bWluLCBtYXh9OworICB9CisKKyAg
Ly8gQ29tcHV0ZSB0aGUgcHJvYmFiaWxpdHkgdG90YWxzLCB3aGljaCBhcmUgYmFzZWQgb24gdGhl
IGdlbmVyYWxpemVkIGhhcm1vbmljCisgIC8vIG51bWJlciwgSChOLHMpLgorICAvLyAgIEgoTixz
KSA9PSBTVU0oaz0xLi5OLCAxIC8ga15zKQorICAvLworICAvLyBJbiB0aGUgbGltaXQsIEgoTixz
KSA9PSB6ZXRhYyhzKSArIDEuCisgIC8vCisgIC8vIE5PVEU6IFRoZSBtZWFuIG9mIGEgemlwZiBk
aXN0cmlidXRpb24gY291bGQgYmUgY29tcHV0ZWQgaGVyZSBhcyB3ZWxsLgorICAvLyBNZWFuIDo9
ICBIKE4sIHMtMSkgLyBIKE4scykuCisgIC8vIEdpdmVuIHRoZSBwYXJhbWV0ZXIgdiA9IDEsIHRo
aXMgZ2l2ZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbjoKKyAgLy8gKEhuKDEwMCwgMSkgLSBIbigx
LDEpKSAvIChIbigxMDAsMikgLSBIbigxLDIpKSA9IDYuNTk0NAorICAvLworICB2b2lkIEluaXQo
KSB7CisgICAgaWYgKCFobnFfLmVtcHR5KCkpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aG5xXy5jbGVhcigpOworICAgIGhucV8ucmVzZXJ2ZShzdGQ6Om1pbihrXywgc2l6ZV90ezEwMDB9
KSk7CisKKyAgICBzdW1faG5xXyA9IDA7CisgICAgZG91YmxlIHFtMSA9IHFfIC0gMS4wOworICAg
IGRvdWJsZSBzdW1faG5xX20xID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtfOyBp
KyspIHsKKyAgICAgIC8vIFBhcnRpYWwgbi10aCBnZW5lcmFsaXplZCBoYXJtb25pYyBudW1iZXIK
KyAgICAgIGNvbnN0IGRvdWJsZSB4ID0gdl8gKyBpOworCisgICAgICAvLyBIKG4sIHEtMSkKKyAg
ICAgIGNvbnN0IGRvdWJsZSBobnFtMSA9CisgICAgICAgICAgKHFfID09IDIuMCkgPyAoMS4wIC8g
eCkKKyAgICAgICAgICAgICAgICAgICAgICA6IChxXyA9PSAzLjApID8gKDEuMCAvICh4ICogeCkp
IDogc3RkOjpwb3coeCwgLXFtMSk7CisgICAgICBzdW1faG5xX20xICs9IGhucW0xOworCisgICAg
ICAvLyBIKG4sIHEpCisgICAgICBjb25zdCBkb3VibGUgaG5xID0KKyAgICAgICAgICAocV8gPT0g
Mi4wKSA/ICgxLjAgLyAoeCAqIHgpKQorICAgICAgICAgICAgICAgICAgICAgIDogKHFfID09IDMu
MCkgPyAoMS4wIC8gKHggKiB4ICogeCkpIDogc3RkOjpwb3coeCwgLXFfKTsKKyAgICAgIHN1bV9o
bnFfICs9IGhucTsKKyAgICAgIGhucV8ucHVzaF9iYWNrKGhucSk7CisgICAgICBpZiAoaSA+IDEw
MDAgJiYgaG5xIDw9IDFlLTEwKSB7CisgICAgICAgIC8vIFRoZSBoYXJtb25pYyBudW1iZXIgaXMg
dG9vIHNtYWxsLgorICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KHN1
bV9obnFfID4gMCk7CisgICAgbWVhbl8gPSBzdW1faG5xX20xIC8gc3VtX2hucV87CisgIH0KKwor
IHByaXZhdGU6CisgIGNvbnN0IHNpemVfdCBrXzsKKyAgY29uc3QgZG91YmxlIHFfOworICBjb25z
dCBkb3VibGUgdl87CisKKyAgZG91YmxlIG1lYW5fOworICBzdGQ6OnZlY3Rvcjxkb3VibGU+IGhu
cV87CisgIGRvdWJsZSBzdW1faG5xXzsKK307CisKK3VzaW5nIHppcGZfdTY0ID0gYWJzbDo6emlw
Zl9kaXN0cmlidXRpb248dWludDY0X3Q+OworCitjbGFzcyBaaXBmVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPHppcGZfdTY0OjpwYXJhbV90eXBlPiwKKyAgICAgICAgICAgICAg
ICAgcHVibGljIFppcGZNb2RlbCB7CisgcHVibGljOgorICBaaXBmVGVzdCgpIDogWmlwZk1vZGVs
KEdldFBhcmFtKCkuaygpLCBHZXRQYXJhbSgpLnEoKSwgR2V0UGFyYW0oKS52KCkpIHt9CisKKyAg
YWJzbDo6SW5zZWN1cmVCaXRHZW4gcm5nXzsKK307CisKK1RFU1RfUChaaXBmVGVzdCwgQ2hpU3F1
YXJlZFRlc3QpIHsKKyAgY29uc3QgYXV0byYgcGFyYW0gPSBHZXRQYXJhbSgpOworICBJbml0KCk7
CisKKyAgc2l6ZV90IHRyaWFscyA9IDEwMDAwOworCisgIC8vIEZpbmQgdGhlIHNwbGl0LXBvaW50
cyBmb3IgdGhlIGJ1Y2tldHMuCisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gcG9pbnRzOworICBzdGQ6
OnZlY3Rvcjxkb3VibGU+IGV4cGVjdGVkOworICB7CisgICAgZG91YmxlIGxhc3RfY2RmID0gMC4w
OworICAgIGRvdWJsZSBtaW5fcCA9IDEuMDsKKyAgICBmb3IgKGRvdWJsZSBwID0gMC4wMTsgcCA8
IDEuMDsgcCArPSAwLjAxKSB7CisgICAgICBhdXRvIHggPSBJbnZlcnNlQ0RGKHApOworICAgICAg
aWYgKHBvaW50cy5lbXB0eSgpIHx8IHBvaW50cy5iYWNrKCkgPCB4LnNlY29uZCkgeworICAgICAg
ICBjb25zdCBkb3VibGUgcCA9IENERih4LnNlY29uZCk7CisgICAgICAgIHBvaW50cy5wdXNoX2Jh
Y2soeC5zZWNvbmQpOworICAgICAgICBkb3VibGUgcSA9IHAgLSBsYXN0X2NkZjsKKyAgICAgICAg
ZXhwZWN0ZWQucHVzaF9iYWNrKHEpOworICAgICAgICBsYXN0X2NkZiA9IHA7CisgICAgICAgIGlm
IChxIDwgbWluX3ApIHsKKyAgICAgICAgICBtaW5fcCA9IHE7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9CisgICAgaWYgKGxhc3RfY2RmIDwgMC45OTkpIHsKKyAgICAgIHBvaW50cy5wdXNoX2Jh
Y2soc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICBkb3VibGUgcSA9
IDEuMCAtIGxhc3RfY2RmOworICAgICAgZXhwZWN0ZWQucHVzaF9iYWNrKHEpOworICAgICAgaWYg
KHEgPCBtaW5fcCkgeworICAgICAgICBtaW5fcCA9IHE7CisgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgIHBvaW50cy5iYWNrKCkgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
OworICAgICAgZXhwZWN0ZWQuYmFjaygpICs9ICgxLjAgLSBsYXN0X2NkZik7CisgICAgfQorICAg
IC8vIFRoZSBDaGktU3F1YXJlZCBzY29yZSBpcyBub3QgY29tcGxldGVseSBzY2FsZS1pbnZhcmlh
bnQ7IGl0IHdvcmtzIGJlc3QKKyAgICAvLyB3aGVuIHRoZSBzbWFsbCB2YWx1ZXMgYXJlIGluIHRo
ZSBzbWFsbCBkaWdpdHMuCisgICAgdHJpYWxzID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pig4LjAgLyBt
aW5fcCk7CisgIH0KKyAgQVNTRVJUX0dUKHBvaW50cy5zaXplKCksIDApOworCisgIC8vIEdlbmVy
YXRlIG4gdmFyaWF0ZXMgYW5kIGZpbGwgdGhlIGNvdW50cyB2ZWN0b3Igd2l0aCB0aGUgY291bnQg
b2YgdGhlaXIKKyAgLy8gb2NjdXJyZW5jZXMuCisgIHN0ZDo6dmVjdG9yPGludDY0X3Q+IGJ1Y2tl
dHMocG9pbnRzLnNpemUoKSwgMCk7CisgIGRvdWJsZSBhdmcgPSAwOworICB7CisgICAgemlwZl91
NjQgZGlzKHBhcmFtKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyaWFsczsgaSsrKSB7
CisgICAgICB1aW50NjRfdCB4ID0gZGlzKHJuZ18pOworICAgICAgQVNTRVJUX0xFKHgsIGRpcy5t
YXgoKSk7CisgICAgICBBU1NFUlRfR0UoeCwgZGlzLm1pbigpKTsKKyAgICAgIGF2ZyArPSBzdGF0
aWNfY2FzdDxkb3VibGU+KHgpOworICAgICAgYXV0byBpdCA9IHN0ZDo6dXBwZXJfYm91bmQoc3Rk
OjpiZWdpbihwb2ludHMpLCBzdGQ6OmVuZChwb2ludHMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90Pih4KSk7CisgICAgICBidWNrZXRzW3N0ZDo6
ZGlzdGFuY2Uoc3RkOjpiZWdpbihwb2ludHMpLCBpdCldKys7CisgICAgfQorICAgIGF2ZyA9IGF2
ZyAvIHN0YXRpY19jYXN0PGRvdWJsZT4odHJpYWxzKTsKKyAgfQorCisgIC8vIFZhbGlkYXRlIHRo
ZSBvdXRwdXQgdXNpbmcgdGhlIENoaS1TcXVhcmVkIHRlc3QuCisgIGZvciAoYXV0byYgZSA6IGV4
cGVjdGVkKSB7CisgICAgZSAqPSB0cmlhbHM7CisgIH0KKworICAvLyBUaGUgbnVsbC1oeXBvdGhl
c2lzIGlzIHRoYXQgdGhlIGRpc3RyaWJ1dGlvbiBpcyBhIHBvaXNzb24gZGlzdHJpYnV0aW9uIHdp
dGgKKyAgLy8gdGhlIHByb3ZpZGVkIG1lYW4gKG5vdCBlc3RpbWF0ZWQgZnJvbSB0aGUgZGF0YSku
CisgIGNvbnN0IGludCBkb2YgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4cGVjdGVkLnNpemUoKSkgLSAx
OworCisgIC8vIE5PVEU6IFRoaXMgdGVzdCBydW5zIGFib3V0IDE1eCBwZXIgaW52b2NhdGlvbiwg
c28gYSB2YWx1ZSBvZiAwLjk5OTUgaXMKKyAgLy8gYXBwcm94aW1hdGVseSBjb3JyZWN0IGZvciBh
IHRlc3Qgc3VpdGUgZmFpbHVyZSByYXRlIG9mIDEgaW4gMTAwLiAgSW4KKyAgLy8gcHJhY3RpY2Ug
d2Ugc2VlIGZhaWx1cmVzIHNsaWdodGx5IGhpZ2hlciB0aGFuIHRoYXQuCisgIGNvbnN0IGRvdWJs
ZSB0aHJlc2hvbGQgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVZhbHVlKGRvZiwg
MC45OTk5KTsKKworICBjb25zdCBkb3VibGUgY2hpX3NxdWFyZSA9IGFic2w6OnJhbmRvbV9pbnRl
cm5hbDo6Q2hpU3F1YXJlKAorICAgICAgc3RkOjpiZWdpbihidWNrZXRzKSwgc3RkOjplbmQoYnVj
a2V0cyksIHN0ZDo6YmVnaW4oZXhwZWN0ZWQpLAorICAgICAgc3RkOjplbmQoZXhwZWN0ZWQpKTsK
KworICBjb25zdCBkb3VibGUgcF9hY3R1YWwgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpDaGlTcXVhcmVQVmFsdWUoY2hpX3NxdWFyZSwgZG9mKTsKKworICAvLyBMb2cgaWYgdGhlIGNo
aV9zcXVhcmVkIHZhbHVlIGlzIGFib3ZlIHRoZSB0aHJlc2hvbGQuCisgIGlmIChjaGlfc3F1YXJl
ID4gdGhyZXNob2xkKSB7CisgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywgInZhbHVlcyIpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhwZWN0ZWQuc2l6ZSgpOyBpKyspIHsKKyAgICAg
IEFCU0xfSU5URVJOQUxfTE9HKElORk8sIGFic2w6OlN0ckNhdChwb2ludHNbaV0sICI6ICIsIGJ1
Y2tldHNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB2
cy4gRT0iLCBleHBlY3RlZFtpXSkpOworICAgIH0KKyAgICBBQlNMX0lOVEVSTkFMX0xPRyhJTkZP
LCBhYnNsOjpTdHJDYXQoInRyaWFscyAiLCB0cmlhbHMpKTsKKyAgICBBQlNMX0lOVEVSTkFMX0xP
RyhJTkZPLAorICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlN0ckNhdCgibWVhbiAiLCBhdmcs
ICIgdnMuIGV4cGVjdGVkICIsIG1lYW4oKSkpOworICAgIEFCU0xfSU5URVJOQUxfTE9HKElORk8s
IGFic2w6OlN0ckNhdChrQ2hpU3F1YXJlZCwgIihkYXRhLCAiLCBkb2YsICIpID0gIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpX3NxdWFyZSwgIiAoIiwgcF9h
Y3R1YWwsICIpIikpOworICAgIEFCU0xfSU5URVJOQUxfTE9HKElORk8sCisgICAgICAgICAgICAg
ICAgICAgICAgYWJzbDo6U3RyQ2F0KGtDaGlTcXVhcmVkLCAiIEAgMC45OTk1ID0gIiwgdGhyZXNo
b2xkKSk7CisgICAgRkFJTCgpIDw8IGtDaGlTcXVhcmVkIDw8ICIgdmFsdWUgb2YgIiA8PCBjaGlf
c3F1YXJlCisgICAgICAgICAgIDw8ICIgaXMgYWJvdmUgdGhlIHRocmVzaG9sZC4iOworICB9Cit9
CisKK3N0ZDo6dmVjdG9yPHppcGZfdTY0OjpwYXJhbV90eXBlPiBHZW5QYXJhbXMoKSB7CisgIHVz
aW5nIHBhcmFtID0gemlwZl91NjQ6OnBhcmFtX3R5cGU7CisgIGNvbnN0IGF1dG8gayA9IHBhcmFt
KCkuaygpOworICBjb25zdCBhdXRvIHEgPSBwYXJhbSgpLnEoKTsKKyAgY29uc3QgYXV0byB2ID0g
cGFyYW0oKS52KCk7CisgIGNvbnN0IHVpbnQ2NF90IGsyID0gMSA8PCAxMDsKKyAgcmV0dXJuIHN0
ZDo6dmVjdG9yPHppcGZfdTY0OjpwYXJhbV90eXBlPnsKKyAgICAgIC8vIERlZmF1bHQKKyAgICAg
IHBhcmFtKGssIHEsIHYpLAorICAgICAgLy8gdmFyeSBLCisgICAgICBwYXJhbSg0LCBxLCB2KSwg
cGFyYW0oMSA8PCA0LCBxLCB2KSwgcGFyYW0oazIsIHEsIHYpLAorICAgICAgLy8gdmFyeSBWCisg
ICAgICBwYXJhbShrMiwgcSwgMC41KSwgcGFyYW0oazIsIHEsIDEuNSksIHBhcmFtKGsyLCBxLCAy
LjUpLCBwYXJhbShrMiwgcSwgMTApLAorICAgICAgLy8gdmFyeSBRCisgICAgICBwYXJhbShrMiwg
MS41LCB2KSwgcGFyYW0oazIsIDMsIHYpLCBwYXJhbShrMiwgNSwgdiksIHBhcmFtKGsyLCAxMCwg
diksCisgICAgICAvLyBWYXJ5IFYgJiBRCisgICAgICBwYXJhbShrMiwgMS41LCAwLjUpLCBwYXJh
bShrMiwgMywgMS41KSwgcGFyYW0oaywgMTAsIDEwKX07Cit9CisKK3N0ZDo6c3RyaW5nIFBhcmFt
TmFtZSgKKyAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88emlwZl91NjQ6OnBhcmFt
X3R5cGU+JiBpbmZvKSB7CisgIGNvbnN0IGF1dG8mIHAgPSBpbmZvLnBhcmFtOworICBzdGQ6OnN0
cmluZyBuYW1lID0gYWJzbDo6U3RyQ2F0KCJrXyIsIHAuaygpLCAiX19xXyIsIGFic2w6OlNpeERp
Z2l0cyhwLnEoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fdl8iLCBh
YnNsOjpTaXhEaWdpdHMocC52KCkpKTsKKyAgcmV0dXJuIGFic2w6OlN0clJlcGxhY2VBbGwobmFt
ZSwge3siKyIsICJfIn0sIHsiLSIsICJfIn0sIHsiLiIsICJfIn19KTsKK30KKworSU5TVEFOVElB
VEVfVEVTVF9TVUlURV9QKEFsbCwgWmlwZlRlc3QsIDo6dGVzdGluZzo6VmFsdWVzSW4oR2VuUGFy
YW1zKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZSk7CisKKy8vIE5PVEU6
IGFic2w6OnppcGZfZGlzdHJpYnV0aW9uIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4K
K1RFU1QoWmlwZkRpc3RyaWJ1dGlvblRlc3QsIFN0YWJpbGl0eVRlc3QpIHsKKyAgLy8gYWJzbDo6
emlwZl9kaXN0cmlidXRpb24gc3RhYmlsaXR5IHJlbGllcyBvbgorICAvLyBhYnNsOjp1bmlmb3Jt
X3JlYWxfZGlzdHJpYnV0aW9uLCBzdGQ6OmxvZywgc3RkOjpleHAsIHN0ZDo6bG9nMXAKKyAgYWJz
bDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisgICAgICB7MHgwMDAzZWI3
NmY2ZjdmNzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGwsIDB4QzMzMkRERUZCRTZDNUFBNXVs
bCwKKyAgICAgICAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4MkFFRjdEQUQ1QjZFMkY4NHVsbCwg
MHgxNTIxQjYyODI5MDc2MTcwdWxsLAorICAgICAgIDB4RUNERDQ3NzU2MTlGMTUxMHVsbCwgMHgx
M0NDQTgzMEVCNjFCRDk2dWxsLCAweDAzMzRGRTFFQUEwMzYzQ0Z1bGwsCisgICAgICAgMHhCNTcz
NUM5MDRDNzBBMjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1bGwsIDB4RUVDQzg2QkM2MDYyMkNB
N3VsbH0pOworCisgIHN0ZDo6dmVjdG9yPGludD4gb3V0cHV0KDEwKTsKKworICB7CisgICAgYWJz
bDo6emlwZl9kaXN0cmlidXRpb248aW50MzJfdD4gZGlzdDsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0
ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwKKyAgICAgICAgICAgICAgICAgIFsm
XSB7IHJldHVybiBkaXN0KHVyYmcpOyB9KTsKKyAgICBFWFBFQ1RfVEhBVChvdXRwdXQsIEVsZW1l
bnRzQXJlKDEwMDMxLCAwLCAwLCAzLCA2LCAwLCA3LCA0NywgMCwgMCkpOworICB9CisgIHVyYmcu
cmVzZXQoKTsKKyAgeworICAgIGFic2w6OnppcGZfZGlzdHJpYnV0aW9uPGludDMyX3Q+IGRpc3Qo
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjMpOworICAgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdp
bihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLAorICAgICAgICAgICAgICAgICAgWyZdIHsgcmV0
dXJuIGRpc3QodXJiZyk7IH0pOworICAgIEVYUEVDVF9USEFUKG91dHB1dCwgRWxlbWVudHNBcmUo
NDQsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDMsIDApKTsKKyAgfQorfQorCitURVNUKFppcGZEaXN0
cmlidXRpb25UZXN0LCBBbGdvcml0aG1Cb3VuZHMpIHsKKyAgYWJzbDo6emlwZl9kaXN0cmlidXRp
b248aW50MzJfdD4gZGlzdDsKKworICAvLyBTbWFsbCB2YWx1ZXMgZnJvbSBhYnNsOjp1bmlmb3Jt
X3JlYWxfZGlzdHJpYnV0aW9uIG1hcCB0byBsYXJnZXIgWmlwZgorICAvLyBkaXN0cmlidXRpb24g
dmFsdWVzLgorICBjb25zdCBzdGQ6OnBhaXI8dWludDY0X3QsIGludDMyX3Q+IGtJbnB1dHNbXSA9
IHsKKyAgICAgIHsweGZmZmZmZmZmZmZmZmZmZmYsIDB4MH0sIHsweDdmZmZmZmZmZmZmZmZmZmYs
IDB4MH0sCisgICAgICB7MHgzZmZmZmZmZmZmZmZmZmZiLCAweDF9LCB7MHgxZmZmZmZmZmZmZmZm
ZmZkLCAweDR9LAorICAgICAgezB4ZmZmZmZmZmZmZmZmZmZlLCAweDl9LCAgezB4N2ZmZmZmZmZm
ZmZmZmZmLCAweDEyfSwKKyAgICAgIHsweDNmZmZmZmZmZmZmZmZmZiwgMHgyNX0sIHsweDFmZmZm
ZmZmZmZmZmZmZiwgMHg0Y30sCisgICAgICB7MHhmZmZmZmZmZmZmZmZmZiwgMHg5OX0sICB7MHg3
ZmZmZmZmZmZmZmZmZiwgMHgxMzJ9LAorICAgICAgezB4M2ZmZmZmZmZmZmZmZmYsIDB4MjY1fSwg
ezB4MWZmZmZmZmZmZmZmZmYsIDB4NGNjfSwKKyAgICAgIHsweGZmZmZmZmZmZmZmZmYsIDB4OTk5
fSwgIHsweDdmZmZmZmZmZmZmZmYsIDB4MTMzMn0sCisgICAgICB7MHgzZmZmZmZmZmZmZmZmLCAw
eDI2NjV9LCB7MHgxZmZmZmZmZmZmZmZmLCAweDRjY2N9LAorICAgICAgezB4ZmZmZmZmZmZmZmZm
LCAweDk5OTh9LCAgezB4N2ZmZmZmZmZmZmZmLCAweDEzMzJmfSwKKyAgICAgIHsweDNmZmZmZmZm
ZmZmZiwgMHgyNjY1YX0sIHsweDFmZmZmZmZmZmZmZiwgMHg0Y2M5ZX0sCisgICAgICB7MHhmZmZm
ZmZmZmZmZiwgMHg5OThlMH0sICB7MHg3ZmZmZmZmZmZmZiwgMHgxMzMwNTF9LAorICAgICAgezB4
M2ZmZmZmZmZmZmYsIDB4MjY1YWU0fSwgezB4MWZmZmZmZmZmZmYsIDB4NGM5ZWQzfSwKKyAgICAg
IHsweGZmZmZmZmZmZmYsIDB4OThlMjIzfSwgIHsweDdmZmZmZmZmZmYsIDB4MTMwNThjNH0sCisg
ICAgICB7MHgzZmZmZmZmZmZmLCAweDI1YjE3OGV9LCB7MHgxZmZmZmZmZmZmLCAweDRhMDYyYjJ9
LAorICAgICAgezB4ZmZmZmZmZmZmLCAweDhlZTIzYjh9LCAgezB4N2ZmZmZmZmZmLCAweDEwYjIx
NjQyfSwKKyAgICAgIHsweDNmZmZmZmZmZiwgMHgxZDg5ZDg5ZH0sIHsweDFmZmZmZmZmZiwgMHgy
ZmZmZmZmZn0sCisgICAgICB7MHhmZmZmZmZmZiwgMHg0NWQxNzQ1ZH0sICB7MHg3ZmZmZmZmZiwg
MHg1YTVhNWE1YX0sCisgICAgICB7MHgzZmZmZmZmZiwgMHg2OWVlNTg0Nn0sICB7MHgxZmZmZmZm
ZiwgMHg3M2VjYWRlM30sCisgICAgICB7MHhmZmZmZmZmLCAweDc5YTlkMjYwfSwgICB7MHg3ZmZm
ZmZmLCAweDdjYzA1MzJifSwKKyAgICAgIHsweDNmZmZmZmYsIDB4N2U1YWQxNDZ9LCAgIHsweDFm
ZmZmZmYsIDB4N2YyYzBiZWN9LAorICAgICAgezB4ZmZmZmZmLCAweDdmOTVhZGVmfSwgICAgezB4
N2ZmZmZmLCAweDdmY2FjMGRhfSwKKyAgICAgIHsweDNmZmZmZiwgMHg3ZmU1NWFlMn0sICAgIHsw
eDFmZmZmZiwgMHg3ZmYyYWMwZX0sCisgICAgICB7MHhmZmZmZiwgMHg3ZmY5NTVhZX0sICAgICB7
MHg3ZmZmZiwgMHg3ZmZjYWFjMX0sCisgICAgICB7MHgzZmZmZiwgMHg3ZmZlNTU1Yn0sICAgICB7
MHgxZmZmZiwgMHg3ZmZmMmFhY30sCisgICAgICB7MHhmZmZmLCAweDdmZmY5NTU2fSwgICAgICB7
MHg3ZmZmLCAweDdmZmZjYWFifSwKKyAgICAgIHsweDNmZmYsIDB4N2ZmZmU1NTV9LCAgICAgIHsw
eDFmZmYsIDB4N2ZmZmYyYWJ9LAorICAgICAgezB4ZmZmLCAweDdmZmZmOTU1fSwgICAgICAgezB4
N2ZmLCAweDdmZmZmY2FifSwKKyAgICAgIHsweDNmZiwgMHg3ZmZmZmU1NX0sICAgICAgIHsweDFm
ZiwgMHg3ZmZmZmYyYn0sCisgICAgICB7MHhmZiwgMHg3ZmZmZmY5NX0sICAgICAgICB7MHg3Ziwg
MHg3ZmZmZmZjYn0sCisgICAgICB7MHgzZiwgMHg3ZmZmZmZlNX0sICAgICAgICB7MHgxZiwgMHg3
ZmZmZmZmM30sCisgICAgICB7MHhmLCAweDdmZmZmZmY5fSwgICAgICAgICB7MHg3LCAweDdmZmZm
ZmZkfSwKKyAgICAgIHsweDMsIDB4N2ZmZmZmZmV9LCAgICAgICAgIHsweDEsIDB4N2ZmZmZmZmZ9
LAorICB9OworCisgIGZvciAoY29uc3QgYXV0byYgaW5zdGFuY2UgOiBrSW5wdXRzKSB7CisgICAg
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoe2luc3RhbmNlLmZpcnN0
fSk7CisgICAgRVhQRUNUX0VRKGluc3RhbmNlLnNlY29uZCwgZGlzdCh1cmJnKSk7CisgIH0KK30K
KworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmJhemVs
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5iYXplbAppbmRleCA2ZDdjMjYxOWE1My4uMjA1MTFhMzU2
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9CVUlMRC5iYXplbApAQCAtNSwyMSArNSwyMCBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogIyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KICMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KLSMKIAogbG9hZCgKLSAgICAiLy9hYnNsOmNvcHRzLmJ6bCIsCisgICAgIi8vYWJzbDpj
b3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKICAgICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKLSAg
ICAiQUJTTF9URVNUX0NPUFRTIiwKICAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUciLAogICAgICJB
QlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyIsCisgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiAp
CiAKIHBhY2thZ2UoCkBAIC00MDUsNyArNDA0LDcgQEAgY2NfdGVzdCgKIAogY2NfdGVzdCgKICAg
ICBuYW1lID0gIm51bWJlcnNfdGVzdCIsCi0gICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc2l6ZSA9
ICJtZWRpdW0iLAogICAgIHNyY3MgPSBbCiAgICAgICAgICJpbnRlcm5hbC9udW1iZXJzX3Rlc3Rf
Y29tbW9uLmgiLAogICAgICAgICAibnVtYmVyc190ZXN0LmNjIiwKQEAgLTQxMyw2ICs0MTIsNyBA
QCBjY190ZXN0KAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAogICAgIHZpc2liaWxpdHkg
PSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCiAgICAgZGVwcyA9IFsKKyAgICAgICAgIjpwb3cx
MF9oZWxwZXIiLAogICAgICAgICAiOnN0cmluZ3MiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLAog
ICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKQEAgLTQ3MSw2ICs0NzEsOCBAQCBj
Y190ZXN0KAogICAgIHNyY3MgPSBbImNoYXJjb252X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFC
U0xfVEVTVF9DT1BUUywKICAgICBkZXBzID0gWworICAgICAgICAiOnBvdzEwX2hlbHBlciIsCisg
ICAgICAgICI6c3RyX2Zvcm1hdCIsCiAgICAgICAgICI6c3RyaW5ncyIsCiAgICAgICAgICIvL2Fi
c2wvYmFzZSIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIs
CkBAIC01NTUsOCArNTU3LDggQEAgY2NfbGlicmFyeSgKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zp
c2liaWxpdHk6cHJpdmF0ZSJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3RyaW5ncyIsCisg
ICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9o
ZWFkZXJzIiwKLSAgICAgICAgIi8vYWJzbC9jb250YWluZXI6aW5saW5lZF92ZWN0b3IiLAogICAg
ICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAogICAgICAgICAiLy9hYnNsL251bWVyaWM6
aW50MTI4IiwKICAgICAgICAgIi8vYWJzbC90eXBlczpzcGFuIiwKQEAgLTYyNiw3ICs2MjgsNyBA
QCBjY190ZXN0KAogCiBjY190ZXN0KAogICAgIG5hbWUgPSAic3RyX2Zvcm1hdF9jb252ZXJ0X3Rl
c3QiLAotICAgIHNpemUgPSAic21hbGwiLAorICAgIHNpemUgPSAibWVkaXVtIiwKICAgICBzcmNz
ID0gWyJpbnRlcm5hbC9zdHJfZm9ybWF0L2NvbnZlcnRfdGVzdC5jYyJdLAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAogICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRl
Il0sCkBAIC02NTksMyArNjYxLDIzIEBAIGNjX3Rlc3QoCiAgICAgICAgICJAY29tX2dvb2dsZV9n
b29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAgICAgXSwKICkKKworY2NfbGlicmFyeSgKKyAgICBu
YW1lID0gInBvdzEwX2hlbHBlciIsCisgICAgdGVzdG9ubHkgPSBUcnVlLAorICAgIHNyY3MgPSBb
ImludGVybmFsL3BvdzEwX2hlbHBlci5jYyJdLAorICAgIGhkcnMgPSBbImludGVybmFsL3BvdzEw
X2hlbHBlci5oIl0sCisgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwK
KykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInBvdzEwX2hlbHBlcl90ZXN0IiwKKyAgICBzcmNz
ID0gWyJpbnRlcm5hbC9wb3cxMF9oZWxwZXJfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpwb3cxMF9oZWxwZXIiLAorICAgICAgICAiOnN0cl9mb3Jt
YXQiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAg
IF0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmduIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9CVUlMRC5nbgppbmRleCAyMGFmODNjMGU1MS4uZmMxZDk1NjI3NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5nbgpAQCAtNCwx
MSArNCwxOSBAQAogCiBpbXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCiAKKyMg
VXNhZ2Ugb2YgQWJzZWlsIGluIENocm9taXVtIGlzIGd1YXJkZWQgYnkgYW4gZXhwbGljaXQgb3B0
LWluIGxpc3QsIGJlZm9yZQorIyBhZGRpbmcgcHJvamVjdHMgdG8gdGhpcyBsaXN0IHBsZWFzZSBy
ZWFjaCBvdXQgdG8gY3h4QGNocm9taXVtLm9yZyBhbmQgQ0M6CisjIC0gaHR0cHM6Ly9jcy5jaHJv
bWl1bS5vcmcvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvT1dORVJTCisjCisj
IE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGF0OgorIyBodHRwczovL2RvY3MuZ29vZ2xl
LmNvbS9kb2N1bWVudC9kLzFEZ1MxLUEzcnpib1RManBmNG0xc3FrSmdXam5ZX1J1MmRva2sxWDF2
QkRVCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICB2aXNpYmlsaXR5ID0gWworICAgICIv
L2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS93ZWJydGMvKiIsCiAgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
Omd0ZXN0IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9vcGVuc2NyZWVuLyoiLAogICBdCiB9IGVsc2Ug
ewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQpAQCAtMTM3LDEwICsxNDUsMjggQEAgc291cmNlX3Nl
dCgic3RyX2Zvcm1hdF9pbnRlcm5hbCIpIHsKICAgdmlzaWJpbGl0eSArPSBbICI6KiIgXQogICBk
ZXBzID0gWwogICAgICI6c3RyaW5ncyIsCisgICAgIi4uL2Jhc2U6Y29uZmlnIiwKICAgICAiLi4v
YmFzZTpjb3JlX2hlYWRlcnMiLAotICAgICIuLi9jb250YWluZXI6aW5saW5lZF92ZWN0b3IiLAog
ICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKICAgICAiLi4vbnVtZXJpYzppbnQxMjgiLAogICAg
ICIuLi90eXBlczpzcGFuIiwKICAgXQogfQorCitzb3VyY2Vfc2V0KCJwb3cxMF9oZWxwZXIiKSB7
CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBp
bGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmln
L2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2Vz
ID0gWworICAgICJpbnRlcm5hbC9wb3cxMF9oZWxwZXIuY2MiLAorICBdCisgIHB1YmxpYyA9IFsK
KyAgICAiaW50ZXJuYWwvcG93MTBfaGVscGVyLmgiLAorICBdCisgIHZpc2liaWxpdHkgPSBbXQor
ICB2aXNpYmlsaXR5ICs9IFsgIjoqIiBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9DTWFrZUxpc3RzLnR4dAppbmRleCBmM2U0MTYy
Mzg3Zi4uZTYzZWVjMTkxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9DTWFrZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcgQEAKICMg
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMg
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTE0LDQ1MCArMTQsNTA3IEBACiAjIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgogIwogCi0KLWxpc3QoQVBQRU5EIFNUUklOR1NfUFVCTElDX0hFQURFUlMK
LSAgImFzY2lpLmgiCi0gICJjaGFyY29udi5oIgotICAiZXNjYXBpbmcuaCIKLSAgIm1hdGNoLmgi
Ci0gICJudW1iZXJzLmgiCi0gICJzdHJfY2F0LmgiCi0gICJzdHJpbmdfdmlldy5oIgotICAic3Ry
aXAuaCIKLSAgInN0cl9qb2luLmgiCi0gICJzdHJfcmVwbGFjZS5oIgotICAic3RyX3NwbGl0Lmgi
Ci0gICJzdWJzdGl0dXRlLmgiCi0pCi0KLQotbGlzdChBUFBFTkQgU1RSSU5HU19JTlRFUk5BTF9I
RUFERVJTCi0gICJpbnRlcm5hbC9jaGFyX21hcC5oIgotICAiaW50ZXJuYWwvY2hhcmNvbnZfYmln
aW50LmgiCi0gICJpbnRlcm5hbC9jaGFyY29udl9wYXJzZS5oIgotICAiaW50ZXJuYWwvbWVtdXRp
bC5oIgotICAiaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5oIgotICAiaW50ZXJuYWwvcmVzaXplX3Vu
aW5pdGlhbGl6ZWQuaCIKLSAgImludGVybmFsL3N0bF90eXBlX3RyYWl0cy5oIgotICAiaW50ZXJu
YWwvc3RyX2pvaW5faW50ZXJuYWwuaCIKLSAgImludGVybmFsL3N0cl9zcGxpdF9pbnRlcm5hbC5o
IgotICAiaW50ZXJuYWwvdXRmOC5oIgotKQotCi0KLQotIyBhZGQgc3RyaW5nIGxpYnJhcnkKLWxp
c3QoQVBQRU5EIFNUUklOR1NfU1JDCi0gICJhc2NpaS5jYyIKLSAgImNoYXJjb252LmNjIgotICAi
ZXNjYXBpbmcuY2MiCi0gICJpbnRlcm5hbC9jaGFyY29udl9iaWdpbnQuY2MiCi0gICJpbnRlcm5h
bC9jaGFyY29udl9wYXJzZS5jYyIKLSAgImludGVybmFsL21lbXV0aWwuY2MiCi0gICJpbnRlcm5h
bC9tZW11dGlsLmgiCi0gICJpbnRlcm5hbC91dGY4LmNjIgotICAiaW50ZXJuYWwvb3N0cmluZ3N0
cmVhbS5jYyIKLSAgIm1hdGNoLmNjIgotICAibnVtYmVycy5jYyIKLSAgInN0cl9jYXQuY2MiCi0g
ICJzdHJfcmVwbGFjZS5jYyIKLSAgInN0cl9zcGxpdC5jYyIKLSAgInN0cmluZ192aWV3LmNjIgot
ICAic3Vic3RpdHV0ZS5jYyIKLSAgJHtTVFJJTkdTX1BVQkxJQ19IRUFERVJTfQotICAke1NUUklO
R1NfSU5URVJOQUxfSEVBREVSU30KLSkKLXNldChTVFJJTkdTX1BVQkxJQ19MSUJSQVJJRVMgYWJz
bDo6YmFzZSBhYnNsX3Rocm93X2RlbGVnYXRlKQotCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAot
ICAgIGFic2xfc3RyaW5ncwotICBTT1VSQ0VTCi0gICAgJHtTVFJJTkdTX1NSQ30KLSAgUFVCTElD
X0xJQlJBUklFUwotICAgICR7U1RSSU5HU19QVUJMSUNfTElCUkFSSUVTfQotICBFWFBPUlRfTkFN
RQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCiAgICAgc3RyaW5ncwotKQotCi0jIGFkZCBzdHJf
Zm9ybWF0IGxpYnJhcnkKLWFic2xfaGVhZGVyX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xf
c3RyX2Zvcm1hdAotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgc3RyX2Zvcm1hdF9pbnRlcm5hbAot
ICBFWFBPUlRfTkFNRQotICAgIHN0cl9mb3JtYXQKLSkKLQotIyBzdHJfZm9ybWF0X2ludGVybmFs
Ci1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIHN0cl9mb3JtYXRfaW50ZXJuYWwKLSAgU09V
UkNFUwotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5jYyIKLSAgICAiaW50ZXJuYWwvc3Ry
X2Zvcm1hdC9iaW5kLmNjIgotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5jYyIK
LSAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9mbG9hdF9jb252ZXJzaW9uLmNjIgotICAgICJpbnRl
cm5hbC9zdHJfZm9ybWF0L291dHB1dC5jYyIKLSAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJz
ZXIuY2MiCi0gICAgImludGVybmFsL3N0cl9mb3JtYXQvYXJnLmgiCi0gICAgImludGVybmFsL3N0
cl9mb3JtYXQvYmluZC5oIgotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2NoZWNrZXIuaCIKLSAg
ICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uaCIKLSAgICAiaW50ZXJuYWwvc3RyX2Zv
cm1hdC9mbG9hdF9jb252ZXJzaW9uLmgiCi0gICAgImludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0
LmgiCi0gICAgImludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmgiCi0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICBzdHJfZm9ybWF0X2V4dGVuc2lvbl9pbnRlcm5hbAotICAgIGFic2w6OnN0cmluZ3MK
LSAgICBhYnNsOjpiYXNlCi0gICAgYWJzbDo6bnVtZXJpYwotICAgIGFic2w6OmNvbnRhaW5lcgot
ICAgIGFic2w6OnNwYW4KLSkKLQotIyBzdHJfZm9ybWF0X2V4dGVuc2lvbl9pbnRlcm5hbAotYWJz
bF9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBzdHJfZm9ybWF0X2V4dGVuc2lvbl9pbnRlcm5hbAot
ICBTT1VSQ0VTCi0gICAgImludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmNjIgotICAgICJp
bnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5oIgotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0
L291dHB1dC5jYyIKLSAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuaCIKLSAgUFVCTElD
X0xJQlJBUklFUworICBIRFJTCisgICAgImFzY2lpLmgiCisgICAgImNoYXJjb252LmgiCisgICAg
ImVzY2FwaW5nLmgiCisgICAgIm1hdGNoLmgiCisgICAgIm51bWJlcnMuaCIKKyAgICAic3RyX2Nh
dC5oIgorICAgICJzdHJfam9pbi5oIgorICAgICJzdHJfcmVwbGFjZS5oIgorICAgICJzdHJfc3Bs
aXQuaCIKKyAgICAic3RyaW5nX3ZpZXcuaCIKKyAgICAic3RyaXAuaCIKKyAgICAic3Vic3RpdHV0
ZS5oIgorICBTUkNTCisgICAgImFzY2lpLmNjIgorICAgICJjaGFyY29udi5jYyIKKyAgICAiZXNj
YXBpbmcuY2MiCisgICAgImludGVybmFsL2NoYXJjb252X2JpZ2ludC5jYyIKKyAgICAiaW50ZXJu
YWwvY2hhcmNvbnZfYmlnaW50LmgiCisgICAgImludGVybmFsL2NoYXJjb252X3BhcnNlLmNjIgor
ICAgICJpbnRlcm5hbC9jaGFyY29udl9wYXJzZS5oIgorICAgICJpbnRlcm5hbC9tZW11dGlsLmNj
IgorICAgICJpbnRlcm5hbC9tZW11dGlsLmgiCisgICAgImludGVybmFsL3N0bF90eXBlX3RyYWl0
cy5oIgorICAgICJpbnRlcm5hbC9zdHJfam9pbl9pbnRlcm5hbC5oIgorICAgICJpbnRlcm5hbC9z
dHJfc3BsaXRfaW50ZXJuYWwuaCIKKyAgICAibWF0Y2guY2MiCisgICAgIm51bWJlcnMuY2MiCisg
ICAgInN0cl9jYXQuY2MiCisgICAgInN0cl9yZXBsYWNlLmNjIgorICAgICJzdHJfc3BsaXQuY2Mi
CisgICAgInN0cmluZ192aWV3LmNjIgorICAgICJzdWJzdGl0dXRlLmNjIgorICBDT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5nc19pbnRlcm5h
bAogICAgIGFic2w6OmJhc2UKLSAgICBhYnNsOjpzdHJpbmdzCi0pCi0KLSMKLSMjIFRFU1RTCi0j
Ci0KLSMgdGVzdCBtYXRjaF90ZXN0Ci1zZXQoTUFUQ0hfVEVTVF9TUkMgIm1hdGNoX3Rlc3QuY2Mi
KQotc2V0KE1BVENIX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzKQotCi1hYnNs
X3Rlc3QoCi0gIFRBUkdFVAorICAgIGFic2w6OmJpdHMKKyAgICBhYnNsOjpjb25maWcKKyAgICBh
YnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjplbmRpYW4KKyAgICBhYnNsOjp0aHJvd19kZWxl
Z2F0ZQorICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAgYWJzbDo6
aW50MTI4CisgIFBVQkxJQworKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBzdHJp
bmdzX2ludGVybmFsCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvY2hhcl9tYXAuaCIKKyAgICAiaW50
ZXJuYWwvb3N0cmluZ3N0cmVhbS5oIgorICAgICJpbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXpl
ZC5oIgorICAgICJpbnRlcm5hbC91dGY4LmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvb3N0cmlu
Z3N0cmVhbS5jYyIKKyAgICAiaW50ZXJuYWwvdXRmOC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xf
REVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6
OmVuZGlhbgorICAgIGFic2w6OnR5cGVfdHJhaXRzCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQogICAgIG1hdGNoX3Rlc3QKLSAgU09VUkNFUwotICAgICR7TUFUQ0hfVEVTVF9TUkN9Ci0gIFBV
QkxJQ19MSUJSQVJJRVMKLSAgICAke01BVENIX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JD
UworICAgICJtYXRjaF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQor
ICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OmJhc2UKKyAgICBnbW9ja19tYWlu
CiApCiAKLQotIyB0ZXN0IGVzY2FwaW5nX3Rlc3QKLXNldChFU0NBUElOR19URVNUX1NSQyAiZXNj
YXBpbmdfdGVzdC5jYyIpCi1zZXQoRVNDQVBJTkdfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6
OnN0cmluZ3MgYWJzbDo6YmFzZSkKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVz
dCgKKyAgTkFNRQogICAgIGVzY2FwaW5nX3Rlc3QKLSAgU09VUkNFUwotICAgICR7RVNDQVBJTkdf
VEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0VTQ0FQSU5HX1RFU1RfUFVCTElD
X0xJQlJBUklFU30KKyAgU1JDUworICAgICJlc2NhcGluZ190ZXN0LmNjIgorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6
OmNvcmVfaGVhZGVycworICAgIGFic2w6OmZpeGVkX2FycmF5CisgICAgZ21vY2tfbWFpbgogKQog
Ci0KLSMgdGVzdCBhc2NpaV90ZXN0Ci1zZXQoQVNDSUlfVEVTVF9TUkMgImFzY2lpX3Rlc3QuY2Mi
KQotc2V0KEFTQ0lJX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzKQotCi1hYnNs
X3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgYXNjaWlfdGVzdAot
ICBTT1VSQ0VTCi0gICAgJHtBU0NJSV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAg
ICR7QVNDSUlfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgImFzY2lpX3Rlc3Qu
Y2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpz
dHJpbmdzCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMg
dGVzdCBtZW11dGlsX3Rlc3QKLXNldChNRU1VVElMX1RFU1RfU1JDICJpbnRlcm5hbC9tZW11dGls
X3Rlc3QuY2MiKQotc2V0KE1FTVVUSUxfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OnN0cmlu
Z3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBt
ZW11dGlsX3Rlc3QKLSAgU09VUkNFUwotICAgICR7TUVNVVRJTF9URVNUX1NSQ30KLSAgUFVCTElD
X0xJQlJBUklFUwotICAgICR7TUVNVVRJTF9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MK
KyAgICAiaW50ZXJuYWwvbWVtdXRpbC5oIgorICAgICJpbnRlcm5hbC9tZW11dGlsX3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJp
bmdzCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVz
dCB1dGY4X3Rlc3QKLXNldChVVEY4X1RFU1RfU1JDICJpbnRlcm5hbC91dGY4X3Rlc3QuY2MiKQot
c2V0KFVURjhfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MgYWJzbDo6YmFzZSkK
LQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHV0Zjhf
dGVzdAotICBTT1VSQ0VTCi0gICAgJHtVVEY4X1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVT
Ci0gICAgJHtVVEY4X1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJpbnRlcm5h
bC91dGY4X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpzdHJpbmdzX2ludGVybmFsCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNv
cmVfaGVhZGVycworICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRlc3Qgc3RyaW5nX3ZpZXdfdGVz
dAotc2V0KFNUUklOR19WSUVXX1RFU1RfU1JDICJzdHJpbmdfdmlld190ZXN0LmNjIikKLXNldChT
VFJJTkdfVklFV19URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3RyaW5ncyBhYnNsX3Rocm93
X2RlbGVnYXRlIGFic2w6OmJhc2UpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rl
c3QoCisgIE5BTUUKICAgICBzdHJpbmdfdmlld190ZXN0Ci0gIFNPVVJDRVMKLSAgICAke1NUUklO
R19WSUVXX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtTVFJJTkdfVklFV19U
RVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAic3RyaW5nX3ZpZXdfdGVzdC5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgICAke0FCU0xfRVhDRVBUSU9OU19G
TEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29y
ZV9oZWFkZXJzCisgICAgYWJzbDo6ZHluYW1pY19hbm5vdGF0aW9ucworICAgIGdtb2NrX21haW4K
ICkKIAotCi0jIHRlc3Qgc3Vic3RpdHV0ZV90ZXN0Ci1zZXQoU1VCU1RJVFVURV9URVNUX1NSQyAi
c3Vic3RpdHV0ZV90ZXN0LmNjIikKLXNldChTVUJTVElUVVRFX1RFU1RfUFVCTElDX0xJQlJBUklF
UyBhYnNsOjpzdHJpbmdzIGFic2w6OmJhc2UpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNs
X2NjX3Rlc3QoCisgIE5BTUUKICAgICBzdWJzdGl0dXRlX3Rlc3QKLSAgU09VUkNFUwotICAgICR7
U1VCU1RJVFVURV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7U1VCU1RJVFVU
RV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAic3Vic3RpdHV0ZV90ZXN0LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3Ry
aW5ncworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRl
c3Qgc3RyX3JlcGxhY2VfdGVzdAotc2V0KFNUUl9SRVBMQUNFX1RFU1RfU1JDICJzdHJfcmVwbGFj
ZV90ZXN0LmNjIikKLXNldChTVFJfUkVQTEFDRV9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6
c3RyaW5ncyBhYnNsOjpiYXNlIGFic2xfdGhyb3dfZGVsZWdhdGUpCi0KLWFic2xfdGVzdCgKLSAg
VEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBzdHJfcmVwbGFjZV90ZXN0Ci0gIFNP
VVJDRVMKLSAgICAke1NUUl9SRVBMQUNFX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0g
ICAgJHtTVFJfUkVQTEFDRV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAic3Ry
X3JlcGxhY2VfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQ
UworICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IHN0cl9z
cGxpdF90ZXN0Ci1zZXQoU1RSX1NQTElUX1RFU1RfU1JDICJzdHJfc3BsaXRfdGVzdC5jYyIpCi1z
ZXQoU1RSX1NQTElUX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzIGFic2w6OmJh
c2UgYWJzbF90aHJvd19kZWxlZ2F0ZSkKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2Nf
dGVzdCgKKyAgTkFNRQogICAgIHN0cl9zcGxpdF90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke1NUUl9T
UExJVF9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7U1RSX1NQTElUX1RFU1Rf
UFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJzdHJfc3BsaXRfdGVzdC5jYyIKKyAgQ09Q
VFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cmluZ3MKKyAg
ICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZHluYW1pY19h
bm5vdGF0aW9ucworICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRlc3Qgb3N0cmluZ3N0cmVhbV90
ZXN0Ci1zZXQoT1NUUklOR1NUUkVBTV9URVNUX1NSQyAiaW50ZXJuYWwvb3N0cmluZ3N0cmVhbV90
ZXN0LmNjIikKLXNldChPU1RSSU5HU1RSRUFNX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpz
dHJpbmdzKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAg
ICAgb3N0cmluZ3N0cmVhbV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke09TVFJJTkdTVFJFQU1fVEVT
VF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke09TVFJJTkdTVFJFQU1fVEVTVF9QVUJM
SUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgImludGVybmFsL29zdHJpbmdzdHJlYW1fdGVzdC5j
YyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0
cmluZ3NfaW50ZXJuYWwKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IHJlc2l6ZV91bmlu
aXRpYWxpemVkX3Rlc3QKLXNldChSRVNJWkVfVU5JTklUSUFMSVpFRF9URVNUX1NSQyAiaW50ZXJu
YWwvcmVzaXplX3VuaW5pdGlhbGl6ZWRfdGVzdC5jYyIpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VU
CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICByZXNpemVfdW5pbml0aWFsaXplZF90ZXN0Ci0g
IFNPVVJDRVMKLSAgICAke1JFU0laRV9VTklOSVRJQUxJWkVEX1RFU1RfU1JDfQorICBTUkNTCisg
ICAgImludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkLmgiCisgICAgImludGVybmFsL3Jlc2l6
ZV91bmluaXRpYWxpemVkX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJz
bDo6dHlwZV90cmFpdHMKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IHN0cl9qb2luX3Rl
c3QKLXNldChTVFJfSk9JTl9URVNUX1NSQyAic3RyX2pvaW5fdGVzdC5jYyIpCi1zZXQoU1RSX0pP
SU5fVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MpCi0KLWFic2xfdGVzdCgKLSAg
VEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBzdHJfam9pbl90ZXN0Ci0gIFNPVVJD
RVMKLSAgICAke1NUUl9KT0lOX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtT
VFJfSk9JTl9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAic3RyX2pvaW5fdGVz
dC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6
OnN0cmluZ3MKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJz
bDo6bWVtb3J5CisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBzdHJfY2F0X3Rlc3QKLXNl
dChTVFJfQ0FUX1RFU1RfU1JDICJzdHJfY2F0X3Rlc3QuY2MiKQotc2V0KFNUUl9DQVRfVEVTVF9Q
VUJMSUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBzdHJfY2F0X3Rlc3QKLSAgU09VUkNFUwotICAgICR7
U1RSX0NBVF9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7U1RSX0NBVF9URVNU
X1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAic3RyX2NhdF90ZXN0LmNjIgorICBDT1BU
UworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAg
IGFic2w6OmNvcmVfaGVhZGVycworICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRlc3QgbnVtYmVy
c190ZXN0Ci1zZXQoTlVNQkVSU19URVNUX1NSQyAibnVtYmVyc190ZXN0LmNjIikKLXNldChOVU1C
RVJTX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzKQotCi1hYnNsX3Rlc3QoCi0g
IFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgbnVtYmVyc190ZXN0Ci0gIFNPVVJD
RVMKLSAgICAke05VTUJFUlNfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke05V
TUJFUlNfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgImludGVybmFsL251bWJl
cnNfdGVzdF9jb21tb24uaCIKKyAgICAibnVtYmVyc190ZXN0LmNjIgorICBDT1BUUworICAgICR7
QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OmJh
c2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpwb3cxMF9oZWxwZXIKKyAgICBn
bW9ja19tYWluCiApCiAKLQotIyB0ZXN0IHN0cmlwX3Rlc3QKLXNldChTVFJJUF9URVNUX1NSQyAi
c3RyaXBfdGVzdC5jYyIpCi1zZXQoU1RSSVBfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OnN0
cmluZ3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAg
ICBzdHJpcF90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke1NUUklQX1RFU1RfU1JDfQotICBQVUJMSUNf
TElCUkFSSUVTCi0gICAgJHtTVFJJUF9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAg
ICAic3RyaXBfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQ
UworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpiYXNlCisgICAgZ21vY2tfbWFpbgogKQog
Ci0KLSMgdGVzdCBjaGFyX21hcF90ZXN0Ci1zZXQoQ0hBUl9NQVBfVEVTVF9TUkMgImludGVybmFs
L2NoYXJfbWFwX3Rlc3QuY2MiKQotc2V0KENIQVJfTUFQX1RFU1RfUFVCTElDX0xJQlJBUklFUyBh
YnNsOjpzdHJpbmdzKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBO
QU1FCiAgICAgY2hhcl9tYXBfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtDSEFSX01BUF9URVNUX1NS
Q30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7Q0hBUl9NQVBfVEVTVF9QVUJMSUNfTElCUkFS
SUVTfQorICBTUkNTCisgICAgImludGVybmFsL2NoYXJfbWFwX3Rlc3QuY2MiCisgIENPUFRTCisg
ICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzX2ludGVybmFs
CisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBjaGFyY29udl90ZXN0Ci1zZXQoQ0hBUkNP
TlZfVEVTVF9TUkMgImNoYXJjb252X3Rlc3QuY2MiKQotc2V0KENIQVJDT05WX1RFU1RfUFVCTElD
X0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9j
Y190ZXN0KAorICBOQU1FCiAgICAgY2hhcmNvbnZfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtDSEFS
Q09OVl9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7Q0hBUkNPTlZfVEVTVF9Q
VUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgImNoYXJjb252X3Rlc3QuY2MiCisgIENPUFRT
CisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAg
YWJzbDo6c3RyX2Zvcm1hdAorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpwb3cxMF9oZWxwZXIK
KyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IGNoYXJjb252X3BhcnNlX3Rlc3QKLXNldChD
SEFSQ09OVl9QQVJTRV9URVNUX1NSQyAiaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2VfdGVzdC5jYyIp
Ci1zZXQoQ0hBUkNPTlZfUEFSU0VfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3Mp
Ci0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBjaGFy
Y29udl9wYXJzZV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0NIQVJDT05WX1BBUlNFX1RFU1RfU1JD
fQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtDSEFSQ09OVl9QQVJTRV9URVNUX1BVQkxJQ19M
SUJSQVJJRVN9CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuaCIKKyAgICAi
aW50ZXJuYWwvY2hhcmNvbnZfcGFyc2VfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVT
VF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpiYXNlCisgICAg
Z21vY2tfbWFpbgogKQogCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBjaGFyY29udl9iaWdp
bnRfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL2NoYXJjb252X2JpZ2ludC5oIgorICAgICJp
bnRlcm5hbC9jaGFyY29udl9iaWdpbnRfdGVzdC5jYyIKKyAgICAiaW50ZXJuYWwvY2hhcmNvbnZf
cGFyc2UuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFi
c2w6OnN0cmluZ3MKKyAgICBhYnNsOjpiYXNlCisgICAgZ21vY2tfbWFpbgorKQogCi0jIHRlc3Qg
Y2hhcmNvbnZfYmlnaW50X3Rlc3QKLXNldChDSEFSQ09OVl9CSUdJTlRfVEVTVF9TUkMgImludGVy
bmFsL2NoYXJjb252X2JpZ2ludF90ZXN0LmNjIikKLXNldChDSEFSQ09OVl9CSUdJTlRfVEVTVF9Q
VUJMSUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MpCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUK
KyAgICBzdHJfZm9ybWF0CisgIEhEUlMKKyAgICAic3RyX2Zvcm1hdC5oIgorICBDT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyX2Zvcm1hdF9pbnRl
cm5hbAorICBQVUJMSUMKKykKIAotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBjaGFyY29udl9i
aWdpbnRfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtDSEFSQ09OVl9CSUdJTlRfVEVTVF9TUkN9Ci0g
IFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0NIQVJDT05WX0JJR0lOVF9URVNUX1BVQkxJQ19MSUJS
QVJJRVN9Ci0pCi0jIHRlc3Qgc3RyX2Zvcm1hdF90ZXN0Ci1hYnNsX3Rlc3QoCi0gIFRBUkdFVAor
YWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgc3RyX2Zvcm1hdF9pbnRlcm5hbAorICBIRFJT
CisgICAgImludGVybmFsL3N0cl9mb3JtYXQvYXJnLmgiCisgICAgImludGVybmFsL3N0cl9mb3Jt
YXQvYmluZC5oIgorICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2NoZWNrZXIuaCIKKyAgICAiaW50
ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uaCIKKyAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9m
bG9hdF9jb252ZXJzaW9uLmgiCisgICAgImludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0LmgiCisg
ICAgImludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwv
c3RyX2Zvcm1hdC9hcmcuY2MiCisgICAgImludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYyIKKyAg
ICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uY2MiCisgICAgImludGVybmFsL3N0cl9m
b3JtYXQvZmxvYXRfY29udmVyc2lvbi5jYyIKKyAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRw
dXQuY2MiCisgICAgImludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmNjIgorICBDT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFi
c2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnR5cGVfdHJhaXRz
CisgICAgYWJzbDo6aW50MTI4CisgICAgYWJzbDo6c3BhbgorKQorCithYnNsX2NjX3Rlc3QoCisg
IE5BTUUKICAgICBzdHJfZm9ybWF0X3Rlc3QKLSAgU09VUkNFUworICBTUkNTCiAgICAgInN0cl9m
b3JtYXRfdGVzdC5jYyIKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2w6OmJhc2UKKyAgQ09Q
VFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUwogICAgIGFic2w6OnN0cl9mb3JtYXQK
ICAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgZ21vY2tfbWFp
bgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBzdHJfZm9ybWF0X2V4dGVuc2lvbl90
ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb25fdGVzdC5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cl9m
b3JtYXQKKyAgICBhYnNsOjpzdHJfZm9ybWF0X2ludGVybmFsCisgICAgZ21vY2tfbWFpbgorKQor
CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBzdHJfZm9ybWF0X2FyZ190ZXN0CisgIFNSQ1MK
KyAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmdfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cl9mb3JtYXQKKyAgICBhYnNsOjpz
dHJfZm9ybWF0X2ludGVybmFsCisgICAgZ21vY2tfbWFpbgogKQogCi0jIHRlc3Qgc3RyX2Zvcm1h
dF9iaW5kX3Rlc3QKLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
ICAgICBzdHJfZm9ybWF0X2JpbmRfdGVzdAotICBTT1VSQ0VTCisgIFNSQ1MKICAgICAiaW50ZXJu
YWwvc3RyX2Zvcm1hdC9iaW5kX3Rlc3QuY2MiCi0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBzdHJf
Zm9ybWF0X2ludGVybmFsCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpzdHJfZm9ybWF0X2ludGVybmFsCisgICAgZ21vY2tfbWFpbgogKQogCi0jIHRl
c3Qgc3RyX2Zvcm1hdF9jaGVja2VyX3Rlc3QKLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2Nj
X3Rlc3QoCisgIE5BTUUKICAgICBzdHJfZm9ybWF0X2NoZWNrZXJfdGVzdAotICBTT1VSQ0VTCisg
IFNSQ1MKICAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9jaGVja2VyX3Rlc3QuY2MiCi0gIFBVQkxJ
Q19MSUJSQVJJRVMKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUwogICAg
IGFic2w6OnN0cl9mb3JtYXQKKyAgICBnbW9ja19tYWluCiApCiAKLSMgdGVzdCBzdHJfZm9ybWF0
X2NvbnZlcnRfdGVzdAotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQogICAgIHN0cl9mb3JtYXRfY29udmVydF90ZXN0Ci0gIFNPVVJDRVMKKyAgU1JDUwogICAgICJp
bnRlcm5hbC9zdHJfZm9ybWF0L2NvbnZlcnRfdGVzdC5jYyIKLSAgUFVCTElDX0xJQlJBUklFUwot
ICAgIHN0cl9mb3JtYXRfaW50ZXJuYWwKLSAgICBhYnNsOjpudW1lcmljCisgIENPUFRTCisgICAg
JHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJfZm9ybWF0X2ludGVybmFs
CisgICAgYWJzbDo6aW50MTI4CisgICAgZ21vY2tfbWFpbgogKQogCi0jIHRlc3Qgc3RyX2Zvcm1h
dF9vdXRwdXRfdGVzdAotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQogICAgIHN0cl9mb3JtYXRfb3V0cHV0X3Rlc3QKLSAgU09VUkNFUworICBTUkNTCiAgICAgImlu
dGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0X3Rlc3QuY2MiCi0gIFBVQkxJQ19MSUJSQVJJRVMKLSAg
ICBzdHJfZm9ybWF0X2V4dGVuc2lvbl9pbnRlcm5hbAorICBDT1BUUworICAgICR7QUJTTF9URVNU
X0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyX2Zvcm1hdF9pbnRlcm5hbAorICAgIGdtb2Nr
X21haW4KICkKIAotIyB0ZXN0IHN0cl9mb3JtYXRfcGFyc2VyX3Rlc3QKLWFic2xfdGVzdCgKLSAg
VEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBzdHJfZm9ybWF0X3BhcnNlcl90ZXN0
Ci0gIFNPVVJDRVMKKyAgU1JDUwogICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlcl90ZXN0
LmNjIgotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgc3RyX2Zvcm1hdF9pbnRlcm5hbAotICAgIGFi
c2w6OmJhc2UKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFi
c2w6OnN0cl9mb3JtYXRfaW50ZXJuYWwKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBnbW9j
a19tYWluCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHBvdzEwX2hlbHBlcgor
ICBIRFJTCisgICAgImludGVybmFsL3BvdzEwX2hlbHBlci5oIgorICBTUkNTCisgICAgImludGVy
bmFsL3BvdzEwX2hlbHBlci5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAg
VEVTVE9OTFkKKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcG93MTBfaGVscGVyX3Rl
c3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9wb3cxMF9oZWxwZXJfdGVzdC5jYyIKKyAgQ09QVFMK
KyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnBvdzEwX2hlbHBlcgor
ICAgIGFic2w6OnN0cl9mb3JtYXQKKyAgICBnbW9ja19tYWluCiApCi0KLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9hc2NpaS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuY2MKaW5kZXggYzk0
ODFlODg2NTQuLjNmN2M1ODFmMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvYXNjaWkuaAppbmRleCA0OGE5ZGEyMmU3Ni4uZjllNGZkMWRiY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpLmgKQEAg
LTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvYXNjaWlfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaV9iZW5jaG1h
cmsuY2MKaW5kZXggOGRlYTRiOGNmYmYuLmFjYTQ1OGM4MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2FzY2lpX2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpX2JlbmNo
bWFyay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaV90
ZXN0LmNjCmluZGV4IDk5MDNiMDQ5NmI3Li41ZWNkMjNmODY5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9hc2NpaV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWlfdGVzdC5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9jaGFyY29udi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnYuY2MKaW5kZXgg
YzdiOGM5OGIxYjQuLmJjMDdlN2FiOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJj
b252LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnYuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTU1MSw5ICs1NTEsMTAgQEAgQ2FsY3VsYXRlZEZs
b2F0IENhbGN1bGF0ZUZyb21QYXJzZWREZWNpbWFsKAogICBpbnQgYmluYXJ5X2V4cG9uZW50ID0g
UG93ZXIxMEV4cG9uZW50KHBhcnNlZF9kZWNpbWFsLmV4cG9uZW50KTsKIAogICAvLyBEaXNjYXJk
IGJpdHMgdGhhdCBhcmUgaW5hY2N1cmF0ZSBkdWUgdG8gdHJ1bmNhdGlvbiBlcnJvci4gIFRoZSBt
YWdpYwotICAvLyBgbWFudGlzc2Ffd2lkdGhgIGNvbnN0YW50cyBiZWxvdyBhcmUganVzdGlmaWVk
IGluIGNoYXJjb252X2FsZ29yaXRobS5tZC4KLSAgLy8gVGhleSByZXByZXNlbnQgdGhlIG51bWJl
ciBvZiBiaXRzIGluIGB3aWRlX2JpbmFyeV9tYW50aXNzYWAgdGhhdCBhcmUKLSAgLy8gZ3VhcmFu
dGVlZCB0byBiZSB1bmFmZmVjdGVkIGJ5IGVycm9yIHByb3BhZ2F0aW9uLgorICAvLyBgbWFudGlz
c2Ffd2lkdGhgIGNvbnN0YW50cyBiZWxvdyBhcmUganVzdGlmaWVkIGluCisgIC8vIGh0dHBzOi8v
YWJzZWlsLmlvL2Fib3V0L2Rlc2lnbi9jaGFyY29udi4gVGhleSByZXByZXNlbnQgdGhlIG51bWJl
ciBvZiBiaXRzCisgIC8vIGluIGB3aWRlX2JpbmFyeV9tYW50aXNzYWAgdGhhdCBhcmUgZ3VhcmFu
dGVlZCB0byBiZSB1bmFmZmVjdGVkIGJ5IGVycm9yCisgIC8vIHByb3BhZ2F0aW9uLgogICBib29s
IG1hbnRpc3NhX2V4YWN0OwogICBpbnQgbWFudGlzc2Ffd2lkdGg7CiAgIGlmIChwYXJzZWRfZGVj
aW1hbC5zdWJyYW5nZV9iZWdpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29u
di5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5oCmluZGV4IDA3MzUzODI5NjIzLi4zZjU4OTFi
YTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvY2hhcmNvbnYuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtNDksOSArNDksOSBAQCBzdHJ1Y3QgZnJvbV9jaGFyc19yZXN1bHQgewogLy8gdGhpcyBv
bmx5IHN1cHBvcnRzIHRoZSBgZG91YmxlYCBhbmQgYGZsb2F0YCB0eXBlcy4KIC8vCiAvLyBUaGlz
IGludGVyZmFjZSBpbmNvcnBvcmF0ZXMgdGhlIHByb3Bvc2VkIHJlc29sdXRpb25zIGZvciBsaWJy
YXJ5IGlzc3VlcwotLy8gRFIgMzgwMCBhbmQgRFIgMzgwMS4gIElmIHRoZXNlIGFyZSBhZG9wdGVk
IHdpdGggZGlmZmVyZW50IHdvcmRpbmcsCisvLyBEUiAzMDgwIGFuZCBEUiAzMDgxLiAgSWYgdGhl
c2UgYXJlIGFkb3B0ZWQgd2l0aCBkaWZmZXJlbnQgd29yZGluZywKIC8vIEFic2VpbCdzIGJlaGF2
aW9yIHdpbGwgY2hhbmdlIHRvIG1hdGNoIHRoZSBzdGFuZGFyZC4gIChUaGUgYmVoYXZpb3IgbW9z
dAotLy8gbGlrZWx5IHRvIGNoYW5nZSBpcyBmb3IgRFIgMzgwMSwgd2hpY2ggc2F5cyB3aGF0IGB2
YWx1ZWAgd2lsbCBiZSBzZXQgdG8gaW4KKy8vIGxpa2VseSB0byBjaGFuZ2UgaXMgZm9yIERSIDMw
ODEsIHdoaWNoIHNheXMgd2hhdCBgdmFsdWVgIHdpbGwgYmUgc2V0IHRvIGluCiAvLyB0aGUgY2Fz
ZSBvZiBvdmVyZmxvdyBhbmQgdW5kZXJmbG93LiAgQ29kZSB0aGF0IHdhbnRzIHRvIGF2b2lkIHBv
c3NpYmxlCiAvLyBicmVha2luZyBjaGFuZ2VzIGluIHRoaXMgYXJlYSBzaG91bGQgbm90IGRlcGVu
ZCBvbiBgdmFsdWVgIHdoZW4gdGhlIHJldHVybmVkCiAvLyBmcm9tX2NoYXJzX3Jlc3VsdCBpbmRp
Y2F0ZXMgYSByYW5nZSBlcnJvci4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252
X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnZfYmVuY2htYXJrLmNjCmluZGV4
IGZkODNmNDRlM2QwLi42NDRiMmFiZGY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFy
Y29udl9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udl9iZW5jaG1hcmsu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvY2hhcmNvbnZfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnZf
dGVzdC5jYwppbmRleCA4OTQxOGZlOTQ4Zi4uYjU4ZmFkMjY5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvY2hhcmNvbnZfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252X3Rl
c3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE5LDcg
KzE5LDkgQEAKIAogI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvcG93MTBfaGVscGVyLmgiCiAj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
c3RyX2Zvcm1hdC5oIgogCiAjaWZkZWYgX01TQ19GVUxMX1ZFUgogI2RlZmluZSBBQlNMX0NPTVBJ
TEVSX0RPRVNfRVhBQ1RfUk9VTkRJTkcgMApAQCAtMzEsNiArMzMsOCBAQAogCiBuYW1lc3BhY2Ug
ewogCit1c2luZyBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpQb3cxMDsKKwogI2lmIEFCU0xfQ09N
UElMRVJfRE9FU19FWEFDVF9ST1VORElORwogCiAvLyBUZXN0cyB0aGF0IHRoZSBnaXZlbiBzdHJp
bmcgaXMgYWNjZXB0ZWQgYnkgYWJzbDo6ZnJvbV9jaGFycywgYW5kIHRoYXQgaXQKQEAgLTI3NSw3
ICsyNzksOCBAQCB2b2lkIFRlc3RIYWxmd2F5VmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIG1hbnRp
c3NhLCBpbnQgZXhwb25lbnQsCiAgIGFic2w6OmZyb21fY2hhcnMobG93X3JlcC5kYXRhKCksIGxv
d19yZXAuZGF0YSgpICsgbG93X3JlcC5zaXplKCksIGFjdHVhbF9sb3cpOwogICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRfbG93LCBhY3R1YWxfbG93KTsKIAotICBzdGQ6OnN0cmluZyBoaWdoX3JlcCA9IGFi
c2w6OlN0ckNhdChtYW50aXNzYSwgc3RkOjpzdHJpbmcoMTAwMCwgJzAnKSwgIjFlIiwgZXhwb25l
bnQpOworICBzdGQ6OnN0cmluZyBoaWdoX3JlcCA9CisgICAgICBhYnNsOjpTdHJDYXQobWFudGlz
c2EsIHN0ZDo6c3RyaW5nKDEwMDAsICcwJyksICIxZSIsIGV4cG9uZW50KTsKICAgRmxvYXRUeXBl
IGFjdHVhbF9oaWdoID0gMDsKICAgYWJzbDo6ZnJvbV9jaGFycyhoaWdoX3JlcC5kYXRhKCksIGhp
Z2hfcmVwLmRhdGEoKSArIGhpZ2hfcmVwLnNpemUoKSwKICAgICAgICAgICAgICAgICAgICBhY3R1
YWxfaGlnaCk7CkBAIC02NzgsNyArNjgzLDggQEAgdm9pZCBUZXN0T3ZlcmZsb3dBbmRVbmRlcmZs
b3coCiAgICAgYXV0byByZXN1bHQgPQogICAgICAgICBhYnNsOjpmcm9tX2NoYXJzKGlucHV0LmRh
dGEoKSwgaW5wdXQuZGF0YSgpICsgaW5wdXQuc2l6ZSgpLCBhY3R1YWwpOwogICAgIEVYUEVDVF9F
UShyZXN1bHQuZWMsIHN0ZDo6ZXJyYygpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIGFjdHVh
bCk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAgIDw8IGFic2w6OlN0
ckZvcm1hdCgiJWEgdnMgJWEiLCBleHBlY3RlZCwgYWN0dWFsKTsKICAgfQogICAvLyB0ZXN0IGxl
Z2FsIHZhbHVlcyBuZWFyIHVwcGVyX2JvdW5kCiAgIGZvciAoaW5kZXggPSB1cHBlcl9ib3VuZCwg
c3RlcCA9IDE7IGluZGV4ID4gbG93ZXJfYm91bmQ7CkBAIC02OTAsNyArNjk2LDggQEAgdm9pZCBU
ZXN0T3ZlcmZsb3dBbmRVbmRlcmZsb3coCiAgICAgYXV0byByZXN1bHQgPQogICAgICAgICBhYnNs
Ojpmcm9tX2NoYXJzKGlucHV0LmRhdGEoKSwgaW5wdXQuZGF0YSgpICsgaW5wdXQuc2l6ZSgpLCBh
Y3R1YWwpOwogICAgIEVYUEVDVF9FUShyZXN1bHQuZWMsIHN0ZDo6ZXJyYygpKTsKLSAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWQsIGFjdHVhbCk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwp
CisgICAgICAgIDw8IGFic2w6OlN0ckZvcm1hdCgiJWEgdnMgJWEiLCBleHBlY3RlZCwgYWN0dWFs
KTsKICAgfQogICAvLyBUZXN0IHVuZGVyZmxvdyB2YWx1ZXMgYmVsb3cgbG93ZXJfYm91bmQKICAg
Zm9yIChpbmRleCA9IGxvd2VyX2JvdW5kIC0gMSwgc3RlcCA9IDE7IGluZGV4ID4gLTEwMDAwMDA7
CkBAIC03NDcsNyArNzU0LDcgQEAgVEVTVChGcm9tQ2hhcnMsIEhleGRlY2ltYWxGbG9hdExpbWl0
cykgewogLy8gYWNjZXB0YWJsZSBleHBvbmVudHMgaW4gdGhpcyB0ZXN0LgogVEVTVChGcm9tQ2hh
cnMsIERlY2ltYWxEb3VibGVMaW1pdHMpIHsKICAgYXV0byBpbnB1dF9nZW4gPSBbXShpbnQgaW5k
ZXgpIHsgcmV0dXJuIGFic2w6OlN0ckNhdCgiMS4wZSIsIGluZGV4KTsgfTsKLSAgYXV0byBleHBl
Y3RlZF9nZW4gPSBbXShpbnQgaW5kZXgpIHsgcmV0dXJuIHN0ZDo6cG93KDEwLjAsIGluZGV4KTsg
fTsKKyAgYXV0byBleHBlY3RlZF9nZW4gPSBbXShpbnQgaW5kZXgpIHsgcmV0dXJuIFBvdzEwKGlu
ZGV4KTsgfTsKICAgVGVzdE92ZXJmbG93QW5kVW5kZXJmbG93PGRvdWJsZT4oaW5wdXRfZ2VuLCBl
eHBlY3RlZF9nZW4sIC0zMjMsIDMwOCk7CiB9CiAKQEAgLTc1OSw3ICs3NjYsNyBAQCBURVNUKEZy
b21DaGFycywgRGVjaW1hbERvdWJsZUxpbWl0cykgewogLy8gYWNjZXB0YWJsZSBleHBvbmVudHMg
aW4gdGhpcyB0ZXN0LgogVEVTVChGcm9tQ2hhcnMsIERlY2ltYWxGbG9hdExpbWl0cykgewogICBh
dXRvIGlucHV0X2dlbiA9IFtdKGludCBpbmRleCkgeyByZXR1cm4gYWJzbDo6U3RyQ2F0KCIxLjBl
IiwgaW5kZXgpOyB9OwotICBhdXRvIGV4cGVjdGVkX2dlbiA9IFtdKGludCBpbmRleCkgeyByZXR1
cm4gc3RkOjpwb3coMTAuMCwgaW5kZXgpOyB9OworICBhdXRvIGV4cGVjdGVkX2dlbiA9IFtdKGlu
dCBpbmRleCkgeyByZXR1cm4gUG93MTAoaW5kZXgpOyB9OwogICBUZXN0T3ZlcmZsb3dBbmRVbmRl
cmZsb3c8ZmxvYXQ+KGlucHV0X2dlbiwgZXhwZWN0ZWRfZ2VuLCAtNDUsIDM4KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBp
bmcuY2MKaW5kZXggOGQ4YjAwYjIwMDEuLjBkMzM2ZTNmZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2VzY2FwaW5nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE3OSw3ICsxNzksOCBAQCBi
b29sIENVbmVzY2FwZUludGVybmFsKGFic2w6OnN0cmluZ192aWV3IHNvdXJjZSwgYm9vbCBsZWF2
ZV9udWxsc19lc2NhcGVkLAogICAgICAgICAgICAgY2ggPSAoY2ggPDwgNCkgKyBoZXhfZGlnaXRf
dG9faW50KCorK3ApOwogICAgICAgICAgIGlmIChjaCA+IDB4RkYpIHsKICAgICAgICAgICAgIGlm
IChlcnJvcikgewotICAgICAgICAgICAgICAqZXJyb3IgPSAiVmFsdWUgb2YgXFwiICsgc3RkOjpz
dHJpbmcoaGV4X3N0YXJ0LCBwICsgMSAtIGhleF9zdGFydCkgKworICAgICAgICAgICAgICAqZXJy
b3IgPSAiVmFsdWUgb2YgXFwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmco
aGV4X3N0YXJ0LCBwICsgMSAtIGhleF9zdGFydCkgKwogICAgICAgICAgICAgICAgICAgICAgICAi
IGV4Y2VlZHMgMHhmZiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yOTQsNyArMjk1LDcgQEAgYm9vbCBDVW5lc2NhcGVJbnRlcm5hbChhYnNsOjpzdHJpbmdf
dmlldyBzb3VyY2UsIGJvb2wgbGVhdmVfbnVsbHNfZXNjYXBlZCwKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC8vIENVbmVzY2FwZUludGVybmFsKCkKIC8vCi0vLyAgICBTYW1lIGFzIGFib3ZlIGJ1dCB1c2Vz
IGEgQysrIHN0cmluZyBmb3Igb3V0cHV0LiAnc291cmNlJyBhbmQgJ2Rlc3QnCisvLyAgICBTYW1l
IGFzIGFib3ZlIGJ1dCB1c2VzIGEgc3RkOjpzdHJpbmcgZm9yIG91dHB1dC4gJ3NvdXJjZScgYW5k
ICdkZXN0JwogLy8gICAgbWF5IGJlIHRoZSBzYW1lLgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYm9vbCBD
VW5lc2NhcGVJbnRlcm5hbChhYnNsOjpzdHJpbmdfdmlldyBzb3VyY2UsIGJvb2wgbGVhdmVfbnVs
bHNfZXNjYXBlZCwKQEAgLTMyNCw3ICszMjUsOCBAQCBib29sIENVbmVzY2FwZUludGVybmFsKGFi
c2w6OnN0cmluZ192aWV3IHNvdXJjZSwgYm9vbCBsZWF2ZV9udWxsc19lc2NhcGVkLAogLy8KIC8v
ICAgIEVzY2FwZWQgY2hhcnM6IFxuLCBcciwgXHQsICIsICcsIFwsIGFuZCAhYWJzbDo6YXNjaWlf
aXNwcmludCgpLgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotc3RkOjpzdHJpbmcgQ0VzY2FwZUludGVybmFs
KGFic2w6OnN0cmluZ192aWV3IHNyYywgYm9vbCB1c2VfaGV4LCBib29sIHV0Zjhfc2FmZSkgewor
c3RkOjpzdHJpbmcgQ0VzY2FwZUludGVybmFsKGFic2w6OnN0cmluZ192aWV3IHNyYywgYm9vbCB1
c2VfaGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXRmOF9zYWZlKSB7CiAg
IHN0ZDo6c3RyaW5nIGRlc3Q7CiAgIGJvb2wgbGFzdF9oZXhfZXNjYXBlID0gZmFsc2U7ICAvLyB0
cnVlIGlmIGxhc3Qgb3V0cHV0IGNoYXIgd2FzIFx4Tk4uCiAKQEAgLTc4Niw3ICs3ODgsNyBAQCBz
aXplX3QgQ2FsY3VsYXRlQmFzZTY0RXNjYXBlZExlbkludGVybmFsKHNpemVfdCBpbnB1dF9sZW4s
IGJvb2wgZG9fcGFkZGluZykgewogICAvLyBCYXNlNjQgZW5jb2RlcyB0aHJlZSBieXRlcyBvZiBp
bnB1dCBhdCBhIHRpbWUuIElmIHRoZSBpbnB1dCBpcyBub3QKICAgLy8gZGl2aXNpYmxlIGJ5IHRo
cmVlLCB3ZSBwYWQgYXMgYXBwcm9wcmlhdGUuCiAgIC8vCi0gIC8vIChmcm9tIGh0dHA6Ly90b29s
cy5pZXRmLm9yZy9odG1sL3JmYzM1NDgpCisgIC8vIChmcm9tIGh0dHBzOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmMzNTQ4KQogICAvLyBTcGVjaWFsIHByb2Nlc3NpbmcgaXMgcGVyZm9ybWVkIGlm
IGZld2VyIHRoYW4gMjQgYml0cyBhcmUgYXZhaWxhYmxlCiAgIC8vIGF0IHRoZSBlbmQgb2YgdGhl
IGRhdGEgYmVpbmcgZW5jb2RlZC4gIEEgZnVsbCBlbmNvZGluZyBxdWFudHVtIGlzCiAgIC8vIGFs
d2F5cyBjb21wbGV0ZWQgYXQgdGhlIGVuZCBvZiBhIHF1YW50aXR5LiAgV2hlbiBmZXdlciB0aGFu
IDI0IGlucHV0CkBAIC04MDAsMTIgKzgwMiwxMiBAQCBzaXplX3QgQ2FsY3VsYXRlQmFzZTY0RXNj
YXBlZExlbkludGVybmFsKHNpemVfdCBpbnB1dF9sZW4sIGJvb2wgZG9fcGFkZGluZykgewogICBz
aXplX3QgbGVuID0gKGlucHV0X2xlbiAvIDMpICogNDsKIAogICBpZiAoaW5wdXRfbGVuICUgMyA9
PSAwKSB7Ci0gICAgLy8gKGZyb20gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzU0OCkK
KyAgICAvLyAoZnJvbSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzU0OCkKICAgICAv
LyAoMSkgdGhlIGZpbmFsIHF1YW50dW0gb2YgZW5jb2RpbmcgaW5wdXQgaXMgYW4gaW50ZWdyYWwg
bXVsdGlwbGUgb2YgMjQKICAgICAvLyBiaXRzOyBoZXJlLCB0aGUgZmluYWwgdW5pdCBvZiBlbmNv
ZGVkIG91dHB1dCB3aWxsIGJlIGFuIGludGVncmFsCiAgICAgLy8gbXVsdGlwbGUgb2YgNCBjaGFy
YWN0ZXJzIHdpdGggbm8gIj0iIHBhZGRpbmcsCiAgIH0gZWxzZSBpZiAoaW5wdXRfbGVuICUgMyA9
PSAxKSB7Ci0gICAgLy8gKGZyb20gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzU0OCkK
KyAgICAvLyAoZnJvbSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzU0OCkKICAgICAv
LyAoMikgdGhlIGZpbmFsIHF1YW50dW0gb2YgZW5jb2RpbmcgaW5wdXQgaXMgZXhhY3RseSA4IGJp
dHM7IGhlcmUsIHRoZQogICAgIC8vIGZpbmFsIHVuaXQgb2YgZW5jb2RlZCBvdXRwdXQgd2lsbCBi
ZSB0d28gY2hhcmFjdGVycyBmb2xsb3dlZCBieSB0d28KICAgICAvLyAiPSIgcGFkZGluZyBjaGFy
YWN0ZXJzLCBvcgpAQCAtODE0LDcgKzgxNiw3IEBAIHNpemVfdCBDYWxjdWxhdGVCYXNlNjRFc2Nh
cGVkTGVuSW50ZXJuYWwoc2l6ZV90IGlucHV0X2xlbiwgYm9vbCBkb19wYWRkaW5nKSB7CiAgICAg
ICBsZW4gKz0gMjsKICAgICB9CiAgIH0gZWxzZSB7ICAvLyAoaW5wdXRfbGVuICUgMyA9PSAyKQot
ICAgIC8vIChmcm9tIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM1NDgpCisgICAgLy8g
KGZyb20gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM1NDgpCiAgICAgLy8gKDMpIHRo
ZSBmaW5hbCBxdWFudHVtIG9mIGVuY29kaW5nIGlucHV0IGlzIGV4YWN0bHkgMTYgYml0czsgaGVy
ZSwgdGhlCiAgICAgLy8gZmluYWwgdW5pdCBvZiBlbmNvZGVkIG91dHB1dCB3aWxsIGJlIHRocmVl
IGNoYXJhY3RlcnMgZm9sbG93ZWQgYnkgb25lCiAgICAgLy8gIj0iIHBhZGRpbmcgY2hhcmFjdGVy
LgpAQCAtODQzLDggKzg0NSw4IEBAIHNpemVfdCBCYXNlNjRFc2NhcGVJbnRlcm5hbChjb25zdCB1
bnNpZ25lZCBjaGFyKiBzcmMsIHNpemVfdCBzenNyYywgY2hhciogZGVzdCwKIAogICAvLyBUaHJl
ZSBieXRlcyBvZiBkYXRhIGVuY29kZXMgdG8gZm91ciBjaGFyYWN0ZXJzIG9mIGN5cGhlcnRleHQu
CiAgIC8vIFNvIHdlIGNhbiBwdW1wIHRocm91Z2ggdGhyZWUtYnl0ZSBjaHVua3MgYXRvbWljYWxs
eS4KLSAgaWYgKHN6c3JjID49IDMpIHsgIC8vICJsaW1pdF9zcmMgLSAzIiBpcyBVQiBpZiBzenNy
YyA8IDMKLSAgICB3aGlsZSAoY3VyX3NyYyA8IGxpbWl0X3NyYyAtIDMpIHsgIC8vIGFzIGxvbmcg
YXMgd2UgaGF2ZSA+PSAzMiBiaXRzCisgIGlmIChzenNyYyA+PSAzKSB7ICAvLyAibGltaXRfc3Jj
IC0gMyIgaXMgVUIgaWYgc3pzcmMgPCAzLgorICAgIHdoaWxlIChjdXJfc3JjIDwgbGltaXRfc3Jj
IC0gMykgeyAgLy8gV2hpbGUgd2UgaGF2ZSA+PSAzMiBiaXRzLgogICAgICAgdWludDMyX3QgaW4g
PSBhYnNsOjpiaWdfZW5kaWFuOjpMb2FkMzIoY3VyX3NyYykgPj4gODsKIAogICAgICAgY3VyX2Rl
c3RbMF0gPSBiYXNlNjRbaW4gPj4gMThdOwpAQCAtMTAxMSw3ICsxMDEzLDggQEAgdm9pZCBIZXhT
dHJpbmdUb0J5dGVzSW50ZXJuYWwoY29uc3QgY2hhciogZnJvbSwgVCB0bywgcHRyZGlmZl90IG51
bSkgewogICB9CiB9CiAKLS8vIFRoaXMgaXMgYSB0ZW1wbGF0ZWQgZnVuY3Rpb24gc28gdGhhdCBU
IGNhbiBiZSBlaXRoZXIgYSBjaGFyKiBvciBhIHN0cmluZy4KKy8vIFRoaXMgaXMgYSB0ZW1wbGF0
ZWQgZnVuY3Rpb24gc28gdGhhdCBUIGNhbiBiZSBlaXRoZXIgYSBjaGFyKiBvciBhCisvLyBzdGQ6
OnN0cmluZy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdm9pZCBCeXRlc1RvSGV4U3RyaW5nSW50
ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBUIGRlc3QsIHB0cmRpZmZfdCBudW0pIHsK
ICAgYXV0byBkZXN0X3B0ciA9ICZkZXN0WzBdOwpAQCAtMTAyOCw3ICsxMDMxLDggQEAgdm9pZCBC
eXRlc1RvSGV4U3RyaW5nSW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBUIGRlc3Qs
IHB0cmRpZmZfdCBudW0pIHsKIC8vCiAvLyBTZWUgQ1VuZXNjYXBlSW50ZXJuYWwoKSBmb3IgaW1w
bGVtZW50YXRpb24gZGV0YWlscy4KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWJvb2wgQ1VuZXNjYXBlKGFi
c2w6OnN0cmluZ192aWV3IHNvdXJjZSwgc3RkOjpzdHJpbmcqIGRlc3QsIHN0ZDo6c3RyaW5nKiBl
cnJvcikgeworYm9vbCBDVW5lc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc291cmNlLCBzdGQ6OnN0
cmluZyogZGVzdCwKKyAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnJvcikgewogICByZXR1
cm4gQ1VuZXNjYXBlSW50ZXJuYWwoc291cmNlLCBrVW5lc2NhcGVOdWxscywgZGVzdCwgZXJyb3Ip
OwogfQogCkBAIC0xMDUxLDEwICsxMDU1LDEwIEBAIHN0ZDo6c3RyaW5nIFV0ZjhTYWZlQ0hleEVz
Y2FwZShhYnNsOjpzdHJpbmdfdmlldyBzcmMpIHsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8g
cHRyZGlmZl90IEJhc2U2NFVuZXNjYXBlKCkgLSBiYXNlNjQgZGVjb2RlcgotLy8gcHRyZGlmZl90
IEJhc2U2NEVzY2FwZSgpIC0gYmFzZTY0IGVuY29kZXIKLS8vIHB0cmRpZmZfdCBXZWJTYWZlQmFz
ZTY0VW5lc2NhcGUoKSAtIEdvb2dsZSdzIHZhcmlhdGlvbiBvZiBiYXNlNjQgZGVjb2RlcgotLy8g
cHRyZGlmZl90IFdlYlNhZmVCYXNlNjRFc2NhcGUoKSAtIEdvb2dsZSdzIHZhcmlhdGlvbiBvZiBi
YXNlNjQgZW5jb2RlcgorLy8gQmFzZTY0VW5lc2NhcGUoKSAtIGJhc2U2NCBkZWNvZGVyCisvLyBC
YXNlNjRFc2NhcGUoKSAtIGJhc2U2NCBlbmNvZGVyCisvLyBXZWJTYWZlQmFzZTY0VW5lc2NhcGUo
KSAtIEdvb2dsZSdzIHZhcmlhdGlvbiBvZiBiYXNlNjQgZGVjb2RlcgorLy8gV2ViU2FmZUJhc2U2
NEVzY2FwZSgpIC0gR29vZ2xlJ3MgdmFyaWF0aW9uIG9mIGJhc2U2NCBlbmNvZGVyCiAvLwogLy8g
Q2hlY2sgb3V0CiAvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMDQ1IGZvciBmb3Jt
YWwgZGVzY3JpcHRpb24sIGJ1dCB3aGF0IHdlCkBAIC0xMDkyLDYgKzEwOTYsMjAgQEAgdm9pZCBX
ZWJTYWZlQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYywgc3RkOjpzdHJpbmcqIGRl
c3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3JjLnNpemUoKSwgZGVzdCwgZmFsc2UsIGtX
ZWJTYWZlQmFzZTY0Q2hhcnMpOwogfQogCitzdGQ6OnN0cmluZyBCYXNlNjRFc2NhcGUoYWJzbDo6
c3RyaW5nX3ZpZXcgc3JjKSB7CisgIHN0ZDo6c3RyaW5nIGRlc3Q7CisgIEJhc2U2NEVzY2FwZUlu
dGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHNyYy5kYXRhKCkp
LAorICAgICAgICAgICAgICAgICAgICAgICBzcmMuc2l6ZSgpLCAmZGVzdCwgdHJ1ZSwga0Jhc2U2
NENoYXJzKTsKKyAgcmV0dXJuIGRlc3Q7Cit9CisKK3N0ZDo6c3RyaW5nIFdlYlNhZmVCYXNlNjRF
c2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjKSB7CisgIHN0ZDo6c3RyaW5nIGRlc3Q7CisgIEJh
c2U2NEVzY2FwZUludGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+
KHNyYy5kYXRhKCkpLAorICAgICAgICAgICAgICAgICAgICAgICBzcmMuc2l6ZSgpLCAmZGVzdCwg
ZmFsc2UsIGtXZWJTYWZlQmFzZTY0Q2hhcnMpOworICByZXR1cm4gZGVzdDsKK30KKwogc3RkOjpz
dHJpbmcgSGV4U3RyaW5nVG9CeXRlcyhhYnNsOjpzdHJpbmdfdmlldyBmcm9tKSB7CiAgIHN0ZDo6
c3RyaW5nIHJlc3VsdDsKICAgY29uc3QgYXV0byBudW0gPSBmcm9tLnNpemUoKSAvIDI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5n
LmgKaW5kZXggMjk2NTk3MzA0ZTYuLjE5OGI5MzQ4NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2VzY2FwaW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZy5oCkBAIC01LDcgKzUs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOSw3ICsxOSw2IEBACiAvLwogLy8g
VGhpcyBoZWFkZXIgZmlsZSBjb250YWlucyBzdHJpbmcgdXRpbGl0aWVzIGludm9sdmVkIGluIGVz
Y2FwaW5nIGFuZAogLy8gdW5lc2NhcGluZyBzdHJpbmdzIGluIHZhcmlvdXMgd2F5cy4KLS8vCiAK
ICNpZm5kZWYgQUJTTF9TVFJJTkdTX0VTQ0FQSU5HX0hfCiAjZGVmaW5lIEFCU0xfU1RSSU5HU19F
U0NBUElOR19IXwpAQCAtMzgsNyArMzcsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyBDVW5lc2Nh
cGUoKQogLy8KIC8vIFVuZXNjYXBlcyBhIGBzb3VyY2VgIHN0cmluZyBhbmQgY29waWVzIGl0IGlu
dG8gYGRlc3RgLCByZXdyaXRpbmcgQy1zdHlsZQotLy8gZXNjYXBlIHNlcXVlbmNlcyAoaHR0cDov
L2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZXNjYXBlKSBpbnRvCisvLyBlc2Nh
cGUgc2VxdWVuY2VzIChodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2Uv
ZXNjYXBlKSBpbnRvCiAvLyB0aGVpciBwcm9wZXIgY29kZSBwb2ludCBlcXVpdmFsZW50cywgcmV0
dXJuaW5nIGB0cnVlYCBpZiBzdWNjZXNzZnVsLgogLy8KIC8vIFRoZSBmb2xsb3dpbmcgdW5lc2Nh
cGUgc2VxdWVuY2VzIGNhbiBiZSBoYW5kbGVkOgpAQCAtNTYsNyArNTUsNiBAQCBuYW1lc3BhY2Ug
YWJzbCB7CiAvLyAgICAgVVRGLTguIChFLmcuLCBgXHUyMDE5YCB1bmVzY2FwZXMgdG8gdGhlIHRo
cmVlIGJ5dGVzIDB4RTIsIDB4ODAsIGFuZAogLy8gICAgIDB4OTkpLgogLy8KLS8vCiAvLyBJZiBh
bnkgZXJyb3JzIGFyZSBlbmNvdW50ZXJlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWAs
IGxlYXZpbmcgdGhlCiAvLyBgZGVzdGAgb3V0cHV0IHBhcmFtZXRlciBpbiBhbiB1bnNwZWNpZmll
ZCBzdGF0ZSwgYW5kIHN0b3JlcyB0aGUgZmlyc3QKIC8vIGVuY291bnRlcmVkIGVycm9yIGluIGBl
cnJvcmAuIFRvIGRpc2FibGUgZXJyb3IgcmVwb3J0aW5nLCBzZXQgYGVycm9yYCB0bwpAQCAtODAs
NyArNzgsNyBAQCBpbmxpbmUgYm9vbCBDVW5lc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc291cmNl
LCBzdGQ6OnN0cmluZyogZGVzdCkgewogLy8gQ0VzY2FwZSgpCiAvLwogLy8gRXNjYXBlcyBhICdz
cmMnIHN0cmluZyB1c2luZyBDLXN0eWxlIGVzY2FwZXMgc2VxdWVuY2VzCi0vLyAoaHR0cDovL2Vu
LmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZXNjYXBlKSwgZXNjYXBpbmcgb3RoZXIK
Ky8vIChodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZXNjYXBlKSwg
ZXNjYXBpbmcgb3RoZXIKIC8vIG5vbi1wcmludGFibGUvbm9uLXdoaXRlc3BhY2UgYnl0ZXMgYXMg
b2N0YWwgc2VxdWVuY2VzIChlLmcuICJcMzc3IikuCiAvLwogLy8gRXhhbXBsZToKQEAgLTEzNCwx
NiArMTMyLDE4IEBAIGJvb2wgV2ViU2FmZUJhc2U2NFVuZXNjYXBlKGFic2w6OnN0cmluZ192aWV3
IHNyYywgc3RkOjpzdHJpbmcqIGRlc3QpOwogCiAvLyBCYXNlNjRFc2NhcGUoKQogLy8KLS8vIEVu
Y29kZXMgYSBgc3JjYCBzdHJpbmcgaW50byBhIGBkZXN0YCBidWZmZXIgdXNpbmcgYmFzZTY0IGVu
Y29kaW5nLCB3aXRoCi0vLyBwYWRkaW5nIGNoYXJhY3RlcnMuIFRoaXMgZnVuY3Rpb24gY29uZm9y
bXMgd2l0aCBSRkMgNDY0OCBzZWN0aW9uIDQgKGJhc2U2NCkuCisvLyBFbmNvZGVzIGEgYHNyY2Ag
c3RyaW5nIGludG8gYSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcsIHdpdGggcGFkZGluZyBjaGFyYWN0
ZXJzLgorLy8gVGhpcyBmdW5jdGlvbiBjb25mb3JtcyB3aXRoIFJGQyA0NjQ4IHNlY3Rpb24gNCAo
YmFzZTY0KS4KIHZvaWQgQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYywgc3RkOjpz
dHJpbmcqIGRlc3QpOworc3RkOjpzdHJpbmcgQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192aWV3
IHNyYyk7CiAKIC8vIFdlYlNhZmVCYXNlNjRFc2NhcGUoKQogLy8KLS8vIEVuY29kZXMgYSBgc3Jj
YCBzdHJpbmcgaW50byBhIGBkZXN0YCBidWZmZXIgdXNpbmcgJy0nIGluc3RlYWQgb2YgJysnIGFu
ZAotLy8gJ18nIGluc3RlYWQgb2YgJy8nLCBhbmQgd2l0aG91dCBwYWRkaW5nLiBUaGlzIGZ1bmN0
aW9uIGNvbmZvcm1zIHdpdGggUkZDIDQ2NDgKLS8vIHNlY3Rpb24gNSAoYmFzZTY0dXJsKS4KKy8v
IEVuY29kZXMgYSBgc3JjYCBzdHJpbmcgaW50byBhIGJhc2U2NC1saWtlIHN0cmluZywgdXNpbmcg
Jy0nIGluc3RlYWQgb2YgJysnCisvLyBhbmQgJ18nIGluc3RlYWQgb2YgJy8nLCBhbmQgd2l0aG91
dCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGNvbmZvcm1zIHdpdGggUkZDCisvLyA0NjQ4IHNlY3Rp
b24gNSAoYmFzZTY0dXJsKS4KIHZvaWQgV2ViU2FmZUJhc2U2NEVzY2FwZShhYnNsOjpzdHJpbmdf
dmlldyBzcmMsIHN0ZDo6c3RyaW5nKiBkZXN0KTsKK3N0ZDo6c3RyaW5nIFdlYlNhZmVCYXNlNjRF
c2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjKTsKIAogLy8gSGV4U3RyaW5nVG9CeXRlcygpCiAv
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZ19iZW5jaG1hcmsuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2VzY2FwaW5nX2JlbmNobWFyay5jYwppbmRleCAwZjc5MWY0ZTg3NS4uMTBkNWIw
MzNjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmdfYmVuY2htYXJrLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmdfYmVuY2htYXJrLmNjCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2Fw
aW5nX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nX3Rlc3QuY2MKaW5kZXggOWRjMjdm
M2Y4ZmEuLjE5Njc5NzViNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nX3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZ190ZXN0LmNjCkBAIC00LDcgKzQsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zNiwxOCArMzYsMTkgQEAgc3RydWN0IGVw
YWlyIHsKIAogVEVTVChDRXNjYXBlLCBFc2NhcGVBbmRVbmVzY2FwZSkgewogICBjb25zdCBzdGQ6
OnN0cmluZyBpbnB1dHNbXSA9IHsKLSAgICBzdGQ6OnN0cmluZygiZm9vXG54eFxyXGJcMDAyMyIp
LAotICAgIHN0ZDo6c3RyaW5nKCIiKSwKLSAgICBzdGQ6OnN0cmluZygiYWJjIiksCi0gICAgc3Rk
OjpzdHJpbmcoIlwxY2hhZF9ydWxlcyIpLAotICAgIHN0ZDo6c3RyaW5nKCJcMWFybmFyX2Ryb29s
cyIpLAotICAgIHN0ZDo6c3RyaW5nKCJ4eHh4XHJcdCdcIlxcIiksCi0gICAgc3RkOjpzdHJpbmco
IlwweHhcMCIsIDQpLAotICAgIHN0ZDo6c3RyaW5nKCJceDAxXHgzMSIpLAotICAgIHN0ZDo6c3Ry
aW5nKCJhYmNceGJceDQyXDE0MWJjIiksCi0gICAgc3RkOjpzdHJpbmcoIjEyM1wxXHgzMVx4MzJc
eDMzIiksCi0gICAgc3RkOjpzdHJpbmcoIlx4YzFceGNhXHgxYlx4NjJceDE5b1x4Y2NceDA0Iiks
Ci0gICAgc3RkOjpzdHJpbmcoIlxcXCJceGU4XHhiMFx4YjdceGU2XHhhZFx4OGNcXFwiIGlzIEdv
b2dsZVxcXCdzIENoaW5lc2UgbmFtZSIpLAorICAgICAgc3RkOjpzdHJpbmcoImZvb1xueHhcclxi
XDAwMjMiKSwKKyAgICAgIHN0ZDo6c3RyaW5nKCIiKSwKKyAgICAgIHN0ZDo6c3RyaW5nKCJhYmMi
KSwKKyAgICAgIHN0ZDo6c3RyaW5nKCJcMWNoYWRfcnVsZXMiKSwKKyAgICAgIHN0ZDo6c3RyaW5n
KCJcMWFybmFyX2Ryb29scyIpLAorICAgICAgc3RkOjpzdHJpbmcoInh4eHhcclx0J1wiXFwiKSwK
KyAgICAgIHN0ZDo6c3RyaW5nKCJcMHh4XDAiLCA0KSwKKyAgICAgIHN0ZDo6c3RyaW5nKCJceDAx
XHgzMSIpLAorICAgICAgc3RkOjpzdHJpbmcoImFiY1x4Ylx4NDJcMTQxYmMiKSwKKyAgICAgIHN0
ZDo6c3RyaW5nKCIxMjNcMVx4MzFceDMyXHgzMyIpLAorICAgICAgc3RkOjpzdHJpbmcoIlx4YzFc
eGNhXHgxYlx4NjJceDE5b1x4Y2NceDA0IiksCisgICAgICBzdGQ6OnN0cmluZygKKyAgICAgICAg
ICAiXFxcIlx4ZThceGIwXHhiN1x4ZTZceGFkXHg4Y1xcXCIgaXMgR29vZ2xlXFxcJ3MgQ2hpbmVz
ZSBuYW1lIiksCiAgIH07CiAgIC8vIERvIHRoaXMgdHdpY2UsIG9uY2UgZm9yIG9jdGFsIGVzY2Fw
ZXMgYW5kIG9uY2UgZm9yIGhleCBlc2NhcGVzLgogICBmb3IgKGludCBraW5kID0gMDsga2luZCA8
IDQ7IGtpbmQrKykgewpAQCAtNzEsNiArNzIsMTEgQEAgVEVTVChDRXNjYXBlLCBFc2NhcGVBbmRV
bmVzY2FwZSkgewogICAgICAgRVhQRUNUX1RSVUUoYWJzbDo6Q1VuZXNjYXBlKGVzY2FwZWQsICZ1
bmVzY2FwZWRfc3RyKSk7CiAgICAgICBFWFBFQ1RfRVEodW5lc2NhcGVkX3N0ciwgb3JpZ2luYWwp
OwogCisgICAgICB1bmVzY2FwZWRfc3RyLmVyYXNlKCk7CisgICAgICBzdGQ6OnN0cmluZyBlcnJv
cjsKKyAgICAgIEVYUEVDVF9UUlVFKGFic2w6OkNVbmVzY2FwZShlc2NhcGVkLCAmdW5lc2NhcGVk
X3N0ciwgJmVycm9yKSk7CisgICAgICBFWFBFQ1RfRVEoZXJyb3IsICIiKTsKKwogICAgICAgLy8g
Q2hlY2sgaW4tcGxhY2UgdW5lc2NhcGluZwogICAgICAgc3RkOjpzdHJpbmcgcyA9IGVzY2FwZWQ7
CiAgICAgICBFWFBFQ1RfVFJVRShhYnNsOjpDVW5lc2NhcGUocywgJnMpKTsKQEAgLTE0OSw3ICsx
NTUsOCBAQCBURVNUKENFc2NhcGUsIEJhc2ljRXNjYXBpbmcpIHsKIAogVEVTVChVbmVzY2FwZSwg
QmFzaWNGdW5jdGlvbikgewogICBlcGFpciB0ZXN0c1tdID0KLSAgICB7eyJcXHUwMDMwIiwgIjAi
fSwKKyAgICB7eyIiLCAiIn0sCisgICAgIHsiXFx1MDAzMCIsICIwIn0sCiAgICAgIHsiXFx1MDBB
MyIsICJceEMyXHhBMyJ9LAogICAgICB7IlxcdTIyRkQiLCAiXHhFMlx4OEJceEJEIn0sCiAgICAg
IHsiXFxVMDAwMTAwMDAiLCAiXHhGMFx4OTBceDgwXHg4MCJ9LApAQCAtMTU5LDIwICsxNjYsMjIg
QEAgVEVTVChVbmVzY2FwZSwgQmFzaWNGdW5jdGlvbikgewogICAgIEVYUEVDVF9UUlVFKGFic2w6
OkNVbmVzY2FwZSh2YWwuZXNjYXBlZCwgJm91dCkpOwogICAgIEVYUEVDVF9FUShvdXQsIHZhbC51
bmVzY2FwZWQpOwogICB9Ci0gIHN0ZDo6c3RyaW5nIGJhZFtdID0KLSAgICAgeyJcXHUxIiwgICAg
ICAgICAvLyB0b28gc2hvcnQKLSAgICAgICJcXFUxIiwgICAgICAgICAvLyB0b28gc2hvcnQKLSAg
ICAgICJcXFVmZmZmZmYiLCAgICAvLyBleGNlZWRzIDB4MTBmZmZmIChsYXJnZXN0IFVuaWNvZGUp
Ci0gICAgICAiXFxVMDAxMTAwMDAiLCAgLy8gZXhjZWVkcyAweDEwZmZmZiAobGFyZ2VzdCBVbmlj
b2RlKQotICAgICAgIlxcdUQ4MzUiLCAgICAgIC8vIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgKEQ4MDAt
REZGRikKLSAgICAgICJcXFUwMDAwREQwNCIsICAvLyBzdXJyb2dhdGUgY2hhcmFjdGVyIChEODAw
LURGRkYpCi0gICAgICAiXFw3NzciLCAgICAgICAgLy8gZXhjZWVkcyAweGZmCi0gICAgICAiXFx4
QUJDRCJ9OyAgICAgLy8gZXhjZWVkcyAweGZmCisgIHN0ZDo6c3RyaW5nIGJhZFtdID0geyJcXHUx
IiwgICAgICAgICAvLyB0b28gc2hvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIlxcVTEiLCAg
ICAgICAgIC8vIHRvbyBzaG9ydAorICAgICAgICAgICAgICAgICAgICAgICAiXFxVZmZmZmZmIiwg
ICAgLy8gZXhjZWVkcyAweDEwZmZmZiAobGFyZ2VzdCBVbmljb2RlKQorICAgICAgICAgICAgICAg
ICAgICAgICAiXFxVMDAxMTAwMDAiLCAgLy8gZXhjZWVkcyAweDEwZmZmZiAobGFyZ2VzdCBVbmlj
b2RlKQorICAgICAgICAgICAgICAgICAgICAgICAiXFx1RDgzNSIsICAgICAgLy8gc3Vycm9nYXRl
IGNoYXJhY3RlciAoRDgwMC1ERkZGKQorICAgICAgICAgICAgICAgICAgICAgICAiXFxVMDAwMERE
MDQiLCAgLy8gc3Vycm9nYXRlIGNoYXJhY3RlciAoRDgwMC1ERkZGKQorICAgICAgICAgICAgICAg
ICAgICAgICAiXFw3NzciLCAgICAgICAgLy8gZXhjZWVkcyAweGZmCisgICAgICAgICAgICAgICAg
ICAgICAgICJcXHhBQkNEIn07ICAgICAvLyBleGNlZWRzIDB4ZmYKICAgZm9yIChjb25zdCBzdGQ6
OnN0cmluZyYgZSA6IGJhZCkgewogICAgIHN0ZDo6c3RyaW5nIGVycm9yOwogICAgIHN0ZDo6c3Ry
aW5nIG91dDsKICAgICBFWFBFQ1RfRkFMU0UoYWJzbDo6Q1VuZXNjYXBlKGUsICZvdXQsICZlcnJv
cikpOwogICAgIEVYUEVDVF9GQUxTRShlcnJvci5lbXB0eSgpKTsKKworICAgIG91dC5lcmFzZSgp
OworICAgIEVYUEVDVF9GQUxTRShhYnNsOjpDVW5lc2NhcGUoZSwgJm91dCkpOwogICB9CiB9CiAK
QEAgLTI1OCw5ICsyNjcsMTEgQEAgVEVTVF9GKENVbmVzY2FwZVRlc3QsIFVuZXNjYXBlc011bHRp
cGxlT2N0YWxOdWxscykgewogICAvLyBBbGwgZXNjYXBlcywgaW5jbHVkaW5nIG5ld2xpbmVzIGFu
ZCBudWxsIGVzY2FwZXMsIHNob3VsZCBoYXZlIGJlZW4KICAgLy8gY29udmVydGVkIHRvIHRoZSBl
cXVpdmFsZW50IGNoYXJhY3RlcnMuCiAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZygiXDBcbiIKLSAg
ICAgICAgICAgICAgICAgICAiMFxuIgotICAgICAgICAgICAgICAgICAgICJcMFxuIgotICAgICAg
ICAgICAgICAgICAgICJcMCIsIDcpLCByZXN1bHRfc3RyaW5nXyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAiMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlwwXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAiXDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgNyksCisgICAgICAg
ICAgICByZXN1bHRfc3RyaW5nXyk7CiB9CiAKIApAQCAtMjY4LDE3ICsyNzksMjEgQEAgVEVTVF9G
KENVbmVzY2FwZVRlc3QsIFVuZXNjYXBlc011bHRpcGxlSGV4TnVsbHMpIHsKICAgc3RkOjpzdHJp
bmcgb3JpZ2luYWxfc3RyaW5nKGtTdHJpbmdXaXRoTXVsdGlwbGVIZXhOdWxscyk7CiAgIEVYUEVD
VF9UUlVFKGFic2w6OkNVbmVzY2FwZShvcmlnaW5hbF9zdHJpbmcsICZyZXN1bHRfc3RyaW5nXykp
OwogICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoIlwwXG4iCi0gICAgICAgICAgICAgICAgICAgIjBc
biIKLSAgICAgICAgICAgICAgICAgICAiXDBcbiIKLSAgICAgICAgICAgICAgICAgICAiXDAiLCA3
KSwgcmVzdWx0X3N0cmluZ18pOworICAgICAgICAgICAgICAgICAgICAgICAgIjBcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJcMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlwwIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIDcpLAorICAgICAgICAgICAgcmVzdWx0X3N0cmluZ18p
OwogfQogCiBURVNUX0YoQ1VuZXNjYXBlVGVzdCwgVW5lc2NhcGVzTXVsdGlwbGVVbmljb2RlTnVs
bHMpIHsKICAgc3RkOjpzdHJpbmcgb3JpZ2luYWxfc3RyaW5nKGtTdHJpbmdXaXRoTXVsdGlwbGVV
bmljb2RlTnVsbHMpOwogICBFWFBFQ1RfVFJVRShhYnNsOjpDVW5lc2NhcGUob3JpZ2luYWxfc3Ry
aW5nLCAmcmVzdWx0X3N0cmluZ18pKTsKICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCJcMFxuIgot
ICAgICAgICAgICAgICAgICAgICIwXG4iCi0gICAgICAgICAgICAgICAgICAgIlwwIiwgNSksIHJl
c3VsdF9zdHJpbmdfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICIwXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAiXDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgNSksCisgICAgICAg
ICAgICByZXN1bHRfc3RyaW5nXyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgewpAQCAtNTUwLDYgKzU2
NSw3IEBAIHZvaWQgVGVzdEVzY2FwZUFuZFVuZXNjYXBlKCkgewogICAgIFN0cmluZ1R5cGUgZW5j
b2RlZCgidGhpcyBqdW5rIHNob3VsZCBiZSBpZ25vcmVkIik7CiAgICAgYWJzbDo6QmFzZTY0RXNj
YXBlKHRjLnBsYWludGV4dCwgJmVuY29kZWQpOwogICAgIEVYUEVDVF9FUShlbmNvZGVkLCB0Yy5j
eXBoZXJ0ZXh0KTsKKyAgICBFWFBFQ1RfRVEoYWJzbDo6QmFzZTY0RXNjYXBlKHRjLnBsYWludGV4
dCksIHRjLmN5cGhlcnRleHQpOwogCiAgICAgU3RyaW5nVHlwZSBkZWNvZGVkKCJ0aGlzIGp1bmsg
c2hvdWxkIGJlIGlnbm9yZWQiKTsKICAgICBFWFBFQ1RfVFJVRShhYnNsOjpCYXNlNjRVbmVzY2Fw
ZShlbmNvZGVkLCAmZGVjb2RlZCkpOwpAQCAtNTY4LDYgKzU4NCw3IEBAIHZvaWQgVGVzdEVzY2Fw
ZUFuZFVuZXNjYXBlKCkgewogICAgIGVuY29kZWQgPSAidGhpcyBqdW5rIHNob3VsZCBiZSBpZ25v
cmVkIjsKICAgICBhYnNsOjpXZWJTYWZlQmFzZTY0RXNjYXBlKHRjLnBsYWludGV4dCwgJmVuY29k
ZWQpOwogICAgIEVYUEVDVF9FUShlbmNvZGVkLCB3ZWJzYWZlKTsKKyAgICBFWFBFQ1RfRVEoYWJz
bDo6V2ViU2FmZUJhc2U2NEVzY2FwZSh0Yy5wbGFpbnRleHQpLCB3ZWJzYWZlKTsKIAogICAgIC8v
IExldCdzIHRyeSB0aGUgc3RkOjpzdHJpbmcgdmVyc2lvbiBvZiB0aGUgZGVjb2RlcgogICAgIGRl
Y29kZWQgPSAidGhpcyBqdW5rIHNob3VsZCBiZSBpZ25vcmVkIjsKQEAgLTU4MCw2ICs1OTcsNyBA
QCB2b2lkIFRlc3RFc2NhcGVBbmRVbmVzY2FwZSgpIHsKICAgICBTdHJpbmdUeXBlIGJ1ZmZlcjsK
ICAgICBhYnNsOjpXZWJTYWZlQmFzZTY0RXNjYXBlKHRjLnBsYWludGV4dCwgJmJ1ZmZlcik7CiAg
ICAgRVhQRUNUX0VRKHRjLmN5cGhlcnRleHQsIGJ1ZmZlcik7CisgICAgRVhQRUNUX0VRKGFic2w6
OldlYlNhZmVCYXNlNjRFc2NhcGUodGMucGxhaW50ZXh0KSwgdGMuY3lwaGVydGV4dCk7CiAgIH0K
IAogICAvLyBWZXJpZnkgdGhlIGJlaGF2aW9yIHdoZW4gZGVjb2RpbmcgYmFkIGRhdGEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXAuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvY2hhcl9tYXAuaAppbmRleCA4ZDkyOTYzYTRkZS4uYjkxMDhiOGNkZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXAuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL2NoYXJfbWFwLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXBfYmVu
Y2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyX21hcF9iZW5jaG1hcmsuY2MK
aW5kZXggYzQ1ZjMxNTdjMjkuLjVjZWY5NjdiMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL2NoYXJfbWFwX2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL2NoYXJfbWFwX2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyX21hcF90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyX21hcF90ZXN0LmNjCmluZGV4IGMz
NjAxZTEwMWUyLi5kMzMwNjI0MWE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9jaGFyX21hcF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXBf
dGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9iaWdpbnQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL2NoYXJjb252X2JpZ2ludC5jYwppbmRleCAzZTcyOTZlNzA2OC4uOTVk
NDcxZDllMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfYmln
aW50LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50LmNjCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X2JpZ2ludC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9jaGFyY29udl9iaWdpbnQuaAppbmRleCBhYTcwYWYyYzI4OS4uN2RhOWE3ZTc1YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9iaWdpbnQuaApAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNTcsMTcgKzU3LDEwIEBAIGNsYXNzIEJpZ1Vu
c2lnbmVkIHsKICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgbWF4X3dvcmRzIHZhbHVlIik7
CiAKICAgQmlnVW5zaWduZWQoKSA6IHNpemVfKDApLCB3b3Jkc197fSB7fQotICBleHBsaWNpdCBC
aWdVbnNpZ25lZCh1aW50MzJfdCB2KSA6IHNpemVfKHYgPiAwID8gMSA6IDApLCB3b3Jkc197dn0g
e30KLSAgZXhwbGljaXQgQmlnVW5zaWduZWQodWludDY0X3QgdikKLSAgICAgIDogc2l6ZV8oMCks
Ci0gICAgICAgIHdvcmRzX3tzdGF0aWNfY2FzdDx1aW50MzJfdD4odiAmIDB4ZmZmZmZmZmYpLAot
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHYgPj4gMzIpfSB7Ci0gICAgaWYg
KHdvcmRzX1sxXSkgewotICAgICAgc2l6ZV8gPSAyOwotICAgIH0gZWxzZSBpZiAod29yZHNfWzBd
KSB7Ci0gICAgICBzaXplXyA9IDE7Ci0gICAgfQotICB9CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBC
aWdVbnNpZ25lZCh1aW50NjRfdCB2KQorICAgICAgOiBzaXplXygodiA+PiAzMikgPyAyIDogdiA/
IDEgOiAwKSwKKyAgICAgICAgd29yZHNfe3N0YXRpY19jYXN0PHVpbnQzMl90Pih2ICYgMHhmZmZm
ZmZmZnUpLAorICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHYgPj4gMzIpfSB7
fQogCiAgIC8vIENvbnN0cnVjdHMgYSBCaWdVbnNpZ25lZCBmcm9tIHRoZSBnaXZlbiBzdHJpbmdf
dmlldyBjb250YWluaW5nIGEgZGVjaW1hbAogICAvLyB2YWx1ZS4gIElmIHRoZSBpbnB1dCBzdGQ6
OnN0cmluZyBpcyBub3QgYSBkZWNpbWFsIGludGVnZXIsIGNvbnN0cnVjdHMgYSAwCkBAIC0xMTAs
MTIgKzEwMywxMiBAQCBjbGFzcyBCaWdVbnNpZ25lZCB7CiAgICAgICAgIFNldFRvWmVybygpOwog
ICAgICAgICByZXR1cm47CiAgICAgICB9Ci0gICAgICBzaXplXyA9IHN0ZDo6bWluKHNpemVfICsg
d29yZF9zaGlmdCwgbWF4X3dvcmRzKTsKKyAgICAgIHNpemVfID0gKHN0ZDo6bWluKShzaXplXyAr
IHdvcmRfc2hpZnQsIG1heF93b3Jkcyk7CiAgICAgICBjb3VudCAlPSAzMjsKICAgICAgIGlmIChj
b3VudCA9PSAwKSB7CiAgICAgICAgIHN0ZDo6Y29weV9iYWNrd2FyZCh3b3Jkc18sIHdvcmRzXyAr
IHNpemVfIC0gd29yZF9zaGlmdCwgd29yZHNfICsgc2l6ZV8pOwogICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgZm9yIChpbnQgaSA9IHN0ZDo6bWluKHNpemVfLCBtYXhfd29yZHMgLSAxKTsgaSA+IHdv
cmRfc2hpZnQ7IC0taSkgeworICAgICAgICBmb3IgKGludCBpID0gKHN0ZDo6bWluKShzaXplXywg
bWF4X3dvcmRzIC0gMSk7IGkgPiB3b3JkX3NoaWZ0OyAtLWkpIHsKICAgICAgICAgICB3b3Jkc19b
aV0gPSAod29yZHNfW2kgLSB3b3JkX3NoaWZ0XSA8PCBjb3VudCkgfAogICAgICAgICAgICAgICAg
ICAgICAgICh3b3Jkc19baSAtIHdvcmRfc2hpZnQgLSAxXSA+PiAoMzIgLSBjb3VudCkpOwogICAg
ICAgICB9CkBAIC0yNzQsNyArMjY3LDcgQEAgY2xhc3MgQmlnVW5zaWduZWQgewogICB2b2lkIE11
bHRpcGx5QnkoaW50IG90aGVyX3NpemUsIGNvbnN0IHVpbnQzMl90KiBvdGhlcl93b3Jkcykgewog
ICAgIGNvbnN0IGludCBvcmlnaW5hbF9zaXplID0gc2l6ZV87CiAgICAgY29uc3QgaW50IGZpcnN0
X3N0ZXAgPQotICAgICAgICBzdGQ6Om1pbihvcmlnaW5hbF9zaXplICsgb3RoZXJfc2l6ZSAtIDIs
IG1heF93b3JkcyAtIDEpOworICAgICAgICAoc3RkOjptaW4pKG9yaWdpbmFsX3NpemUgKyBvdGhl
cl9zaXplIC0gMiwgbWF4X3dvcmRzIC0gMSk7CiAgICAgZm9yIChpbnQgc3RlcCA9IGZpcnN0X3N0
ZXA7IHN0ZXAgPj0gMDsgLS1zdGVwKSB7CiAgICAgICBNdWx0aXBseVN0ZXAob3JpZ2luYWxfc2l6
ZSwgb3RoZXJfd29yZHMsIG90aGVyX3NpemUsIHN0ZXApOwogICAgIH0KQEAgLTI5Myw3ICsyODYs
NyBAQCBjbGFzcyBCaWdVbnNpZ25lZCB7CiAgICAgICAgICAgdmFsdWUgPSAwOwogICAgICAgICB9
CiAgICAgICB9Ci0gICAgICBzaXplXyA9IHN0ZDo6bWluKG1heF93b3Jkcywgc3RkOjptYXgoaW5k
ZXggKyAxLCBzaXplXykpOworICAgICAgc2l6ZV8gPSAoc3RkOjptaW4pKG1heF93b3JkcywgKHN0
ZDo6bWF4KShpbmRleCArIDEsIHNpemVfKSk7CiAgICAgfQogICB9CiAKQEAgLTMxNiw3ICszMDks
NyBAQCBjbGFzcyBCaWdVbnNpZ25lZCB7CiAgICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3Jt
YWxseSAzMi1iaXQgQWRkV2l0aENhcnJ5KCkgc2V0cyBzaXplXywgYnV0IHNpbmNlIHdlIGRvbid0
IGNhbGwKICAgICAgICAgLy8gaXQgd2hlbiBgaGlnaGAgaXMgMCwgZG8gaXQgb3Vyc2VsdmVzIGhl
cmUuCi0gICAgICAgIHNpemVfID0gc3RkOjptaW4obWF4X3dvcmRzLCBzdGQ6Om1heChpbmRleCAr
IDEsIHNpemVfKSk7CisgICAgICAgIHNpemVfID0gKHN0ZDo6bWluKShtYXhfd29yZHMsIChzdGQ6
Om1heCkoaW5kZXggKyAxLCBzaXplXykpOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMzU1LDcg
KzM0OCw3IEBAIGNsYXNzIEJpZ1Vuc2lnbmVkIHsKIC8vIFJldHVybnMgLTEgaWYgbGhzIDwgcmhz
LCAwIGlmIGxocyA9PSByaHMsIGFuZCAxIGlmIGxocyA+IHJocy4KIHRlbXBsYXRlIDxpbnQgTiwg
aW50IE0+CiBpbnQgQ29tcGFyZShjb25zdCBCaWdVbnNpZ25lZDxOPiYgbGhzLCBjb25zdCBCaWdV
bnNpZ25lZDxNPiYgcmhzKSB7Ci0gIGludCBsaW1pdCA9IHN0ZDo6bWF4KGxocy5zaXplKCksIHJo
cy5zaXplKCkpOworICBpbnQgbGltaXQgPSAoc3RkOjptYXgpKGxocy5zaXplKCksIHJocy5zaXpl
KCkpOwogICBmb3IgKGludCBpID0gbGltaXQgLSAxOyBpID49IDA7IC0taSkgewogICAgIGNvbnN0
IHVpbnQzMl90IGxoc193b3JkID0gbGhzLkdldFdvcmQoaSk7CiAgICAgY29uc3QgdWludDMyX3Qg
cmhzX3dvcmQgPSByaHMuR2V0V29yZChpKTsKQEAgLTM3MCw3ICszNjMsNyBAQCBpbnQgQ29tcGFy
ZShjb25zdCBCaWdVbnNpZ25lZDxOPiYgbGhzLCBjb25zdCBCaWdVbnNpZ25lZDxNPiYgcmhzKSB7
CiAKIHRlbXBsYXRlIDxpbnQgTiwgaW50IE0+CiBib29sIG9wZXJhdG9yPT0oY29uc3QgQmlnVW5z
aWduZWQ8Tj4mIGxocywgY29uc3QgQmlnVW5zaWduZWQ8TT4mIHJocykgewotICBpbnQgbGltaXQg
PSBzdGQ6Om1heChsaHMuc2l6ZSgpLCByaHMuc2l6ZSgpKTsKKyAgaW50IGxpbWl0ID0gKHN0ZDo6
bWF4KShsaHMuc2l6ZSgpLCByaHMuc2l6ZSgpKTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW1p
dDsgKytpKSB7CiAgICAgaWYgKGxocy5HZXRXb3JkKGkpICE9IHJocy5HZXRXb3JkKGkpKSB7CiAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2No
YXJjb252X2JpZ2ludF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9i
aWdpbnRfdGVzdC5jYwppbmRleCA5YjYzNTc4ODhmYi4uNzQ1NzE0YWNhMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50X3Rlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9iaWdpbnRfdGVzdC5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9jaGFyY29udl9wYXJzZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNv
bnZfcGFyc2UuY2MKaW5kZXggN2U0ZGFiYzIyNjIuLmYzYzcyMzI0MDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNv
bnZfcGFyc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuaAppbmRl
eCA3YTVjMDg3NGI4MC4uNDRkMDZiMmU5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvY2hhcmNvbnZfcGFyc2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJj
b252X3BhcnNlLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2VfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2VfdGVzdC5jYwppbmRleCBmNDhi
OWFlZTFhNS4uOTUxMWM5ODc0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
Y2hhcmNvbnZfcGFyc2VfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJj
b252X3BhcnNlX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvZXNjYXBpbmdfdGVzdF9jb21t
b24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvZXNjYXBpbmdfdGVzdF9jb21tb24uaAppbmRl
eCBjYzQxZjQzMTJjNy4uYmQ4MDMwMzE4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvZXNjYXBpbmdfdGVzdF9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L2VzY2FwaW5nX3Rlc3RfY29tbW9uLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5jYwppbmRleCBhMGRlNzBkZmZkYi4uNzdh
YTYzYzJjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWwuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvbWVtdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmgKaW5kZXggN2Rl
MzgzYjE5ZWMuLjdjMDcxYTgyMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L21lbXV0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWwuaApAQCAtNSw3
ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9tZW11dGlsX2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvbWVtdXRpbF9iZW5jaG1hcmsuY2MKaW5kZXggNzc5MTVhZGI5NTguLmRjOTVjM2U1ZTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWxfYmVuY2htYXJrLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbF9iZW5jaG1hcmsuY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvbWVtdXRpbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11
dGlsX3Rlc3QuY2MKaW5kZXggMDk0MjRkZTlhNDcuLmQ4NjgxZGRmNGUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWxfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL21lbXV0aWxfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9udW1iZXJzX3Rl
c3RfY29tbW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL251bWJlcnNfdGVzdF9jb21tb24u
aAppbmRleCAyMGUzYWY1MTE0MS4uMjgyNDcyMDVhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvbnVtYmVyc190ZXN0X2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvbnVtYmVyc190ZXN0X2NvbW1vbi5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC02NCwxMSArNjQsMTEgQEAgc3RydWN0IHVpbnQzMl90ZXN0X2Nhc2Ug
ewogCiBpbmxpbmUgY29uc3Qgc3RkOjphcnJheTx1aW50MzJfdGVzdF9jYXNlLCAyNz4mIHN0cnRv
dWludDMyX3Rlc3RfY2FzZXMoKSB7CiAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQzMl90
ZXN0X2Nhc2UsIDI3PiB0ZXN0X2Nhc2Vze3sKLSAgICAgIHsiMHhmZmZmZmZmZiIsIHRydWUsIDE2
LCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCl9LAorICAgICAgeyIweGZmZmZm
ZmZmIiwgdHJ1ZSwgMTYsIChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KSgpfSwK
ICAgICAgIHsiMHgzNDIzNDMyNCIsIHRydWUsIDE2LCAweDM0MjM0MzI0fSwKICAgICAgIHsiMzQy
MzQzMjQiLCB0cnVlLCAxNiwgMHgzNDIzNDMyNH0sCiAgICAgICB7IjAiLCB0cnVlLCAxNiwgMH0s
Ci0gICAgICB7IiBcdFxuIDB4ZmZmZmZmZmYiLCB0cnVlLCAxNiwgc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpfSwKKyAgICAgIHsiIFx0XG4gMHhmZmZmZmZmZiIsIHRydWUsIDE2
LCAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCkoKX0sCiAgICAgICB7IiBcZlx2
IDQ2IiwgdHJ1ZSwgMTAsIDQ2fSwgIC8vIG11c3QgYWNjZXB0IHdlaXJkIHdoaXRlc3BhY2UKICAg
ICAgIHsiIFx0XG4gNzI3MTcyMjIiLCB0cnVlLCA4LCAwNzI3MTcyMjJ9LAogICAgICAgeyIgXHRc
biAwNzI3MTcyMjIiLCB0cnVlLCA4LCAwNzI3MTcyMjJ9LApAQCAtNzcsNyArNzcsNyBAQCBpbmxp
bmUgY29uc3Qgc3RkOjphcnJheTx1aW50MzJfdGVzdF9jYXNlLCAyNz4mIHN0cnRvdWludDMyX3Rl
c3RfY2FzZXMoKSB7CiAKICAgICAgIC8vIEJhc2UtMTAgdmVyc2lvbi4KICAgICAgIHsiMzQyMzQz
MjQiLCB0cnVlLCAwLCAzNDIzNDMyNH0sCi0gICAgICB7IjQyOTQ5NjcyOTUiLCB0cnVlLCAwLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCl9LAorICAgICAgeyI0Mjk0OTY3Mjk1
IiwgdHJ1ZSwgMCwgKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgpKCl9LAogICAg
ICAgeyIzNDIzNDMyNCBcblx0IiwgdHJ1ZSwgMTAsIDM0MjM0MzI0fSwKIAogICAgICAgLy8gVW51
c3VhbCBiYXNlCkBAIC05Niw4ICs5Niw4IEBAIGlubGluZSBjb25zdCBzdGQ6OmFycmF5PHVpbnQz
Ml90ZXN0X2Nhc2UsIDI3PiYgc3RydG91aW50MzJfdGVzdF9jYXNlcygpIHsKICAgICAgIHsiIFx0
XG4gLTEyMyIsIGZhbHNlLCAwLCAwfSwKIAogICAgICAgLy8gT3V0IG9mIGJvdW5kcy4KLSAgICAg
IHsiNDI5NDk2NzI5NiIsIGZhbHNlLCAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6
bWF4KCl9LAotICAgICAgeyIweDEwMDAwMDAwMCIsIGZhbHNlLCAwLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCl9LAorICAgICAgeyI0Mjk0OTY3Mjk2IiwgZmFsc2UsIDAsIChz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KSgpfSwKKyAgICAgIHsiMHgxMDAwMDAw
MDAiLCBmYWxzZSwgMCwgKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgpKCl9LAog
ICAgICAge251bGxwdHIsIGZhbHNlLCAwLCAwfSwKICAgfX07CiAgIHJldHVybiB0ZXN0X2Nhc2Vz
OwpAQCAtMTE5LDcgKzExOSw3IEBAIGlubGluZSBjb25zdCBzdGQ6OmFycmF5PHVpbnQ2NF90ZXN0
X2Nhc2UsIDM0PiYgc3RydG91aW50NjRfdGVzdF9jYXNlcygpIHsKICAgICAgIHsiMDAwIiwgdHJ1
ZSwgMCwgMH0sCiAgICAgICB7IjAiLCB0cnVlLCAwLCAwfSwKICAgICAgIHsiIFx0XG4gMHhmZmZm
ZmZmZmZmZmZmZmZmIiwgdHJ1ZSwgMTYsCi0gICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50
NjRfdD46Om1heCgpfSwKKyAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCkoKX0sCiAKICAgICAgIHsiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0IiwgdHJ1ZSwgOCwgaW50NjRf
dHswMTIzNDU2NzAxMjM0NTY3MDEyMzR9fSwKICAgICAgIHsiMTIzNDU2NzAxMjM0NTY3MDEyMzQi
LCB0cnVlLCA4LCBpbnQ2NF90ezAxMjM0NTY3MDEyMzQ1NjcwMTIzNH19LApAQCAtMTMwLDcgKzEz
MCw3IEBAIGlubGluZSBjb25zdCBzdGQ6OmFycmF5PHVpbnQ2NF90ZXN0X2Nhc2UsIDM0PiYgc3Ry
dG91aW50NjRfdGVzdF9jYXNlcygpIHsKICAgICAgIHsiMzQyMzQzMjQ0ODc4MzQ0NjYiLCB0cnVl
LCAwLCBpbnQ2NF90ezM0MjM0MzI0NDg3ODM0NDY2fX0sCiAKICAgICAgIHsiIFx0XG4gMTg0NDY3
NDQwNzM3MDk1NTE2MTUiLCB0cnVlLCAwLAotICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDY0X3Q+OjptYXgoKX0sCisgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgpKCl9LAogCiAgICAgICB7IjM0MjM0MzI0NDg3ODM0NDY2IFxuXHQgIiwgdHJ1ZSwgMCwgaW50
NjRfdHszNDIzNDMyNDQ4NzgzNDQ2Nn19LAogCkBAIC0xNTYsMTIgKzE1NiwxMyBAQCBpbmxpbmUg
Y29uc3Qgc3RkOjphcnJheTx1aW50NjRfdGVzdF9jYXNlLCAzND4mIHN0cnRvdWludDY0X3Rlc3Rf
Y2FzZXMoKSB7CiAgICAgICAvLyBPdXQgb2YgYm91bmRzLgogICAgICAgeyIxODQ0Njc0NDA3Mzcw
OTU1MTYxNiIsIGZhbHNlLCAxMCwgMH0sCiAgICAgICB7IjE4NDQ2NzQ0MDczNzA5NTUxNjE2Iiwg
ZmFsc2UsIDAsIDB9LAotICAgICAgeyIweDEwMDAwMDAwMDAwMDAwMDAwIiwgZmFsc2UsIDE2LCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCl9LAorICAgICAgeyIweDEwMDAwMDAw
MDAwMDAwMDAwIiwgZmFsc2UsIDE2LAorICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KSgpfSwKICAgICAgIHsiMFgxMDAwMDAwMDAwMDAwMDAwMCIsIGZhbHNlLCAxNiwK
LSAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCl9LCAgLy8gMFggdmVy
c3VzIDB4LgotICAgICAgeyIweDEwMDAwMDAwMDAwMDAwMDAwIiwgZmFsc2UsIDAsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKX0sCisgICAgICAgKHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDY0X3Q+OjptYXgpKCl9LCAgLy8gMFggdmVyc3VzIDB4LgorICAgICAgeyIweDEwMDAw
MDAwMDAwMDAwMDAwIiwgZmFsc2UsIDAsIChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6
bWF4KSgpfSwKICAgICAgIHsiMFgxMDAwMDAwMDAwMDAwMDAwMCIsIGZhbHNlLCAwLAotICAgICAg
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKX0sICAvLyAwWCB2ZXJzdXMgMHgu
CisgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgpKCl9LCAgLy8gMFgg
dmVyc3VzIDB4LgogCiAgICAgICB7IjB4MTIzNCIsIHRydWUsIDE2LCAweDEyMzR9LAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW0uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW0uY2MKaW5kZXggNmVlMmIxMDkwODguLmQwZjBm
ODRiNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW0u
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmNjCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0
cmluZ3N0cmVhbS5oCmluZGV4IGU4MWE4OWFmZmVhLi4yMDc5MjAxNTFiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTI1LDE4ICsyNSwxOCBAQAogbmFtZXNwYWNlIGFic2wgewogbmFtZXNw
YWNlIHN0cmluZ3NfaW50ZXJuYWwgewogCi0vLyBUaGUgc2FtZSBhcyBzdGQ6Om9zdHJpbmdzdHJl
YW0gYnV0IGFwcGVuZHMgdG8gYSB1c2VyLXNwZWNpZmllZCBzdHJpbmcsCisvLyBUaGUgc2FtZSBh
cyBzdGQ6Om9zdHJpbmdzdHJlYW0gYnV0IGFwcGVuZHMgdG8gYSB1c2VyLXNwZWNpZmllZCBzdGQ6
OnN0cmluZywKIC8vIGFuZCBpcyBmYXN0ZXIuIEl0IGlzIH43MCUgZmFzdGVyIHRvIGNyZWF0ZSwg
fjUwJSBmYXN0ZXIgdG8gd3JpdGUgdG8sIGFuZAotLy8gY29tcGxldGVseSBmcmVlIHRvIGV4dHJh
Y3QgdGhlIHJlc3VsdCBzdHJpbmcuCisvLyBjb21wbGV0ZWx5IGZyZWUgdG8gZXh0cmFjdCB0aGUg
cmVzdWx0IHN0ZDo6c3RyaW5nLgogLy8KLS8vICAgc3RyaW5nIHM7CisvLyAgIHN0ZDo6c3RyaW5n
IHM7CiAvLyAgIE9TdHJpbmdTdHJlYW0gc3RybSgmcyk7CiAvLyAgIHN0cm0gPDwgNDIgPDwgJyAn
IDw8IDMuMTQ7ICAvLyBhcHBlbmRzIHRvIGBzYAogLy8KIC8vIFRoZSBzdHJlYW0gb2JqZWN0IGRv
ZXNuJ3QgaGF2ZSB0byBiZSBuYW1lZC4gU3RhcnRpbmcgZnJvbSBDKysxMSBvcGVyYXRvcjw8CiAv
LyB3b3JrcyB3aXRoIHJ2YWx1ZXMgb2Ygc3RkOjpvc3RyZWFtLgogLy8KLS8vICAgc3RyaW5nIHM7
CisvLyAgIHN0ZDo6c3RyaW5nIHM7CiAvLyAgIE9TdHJpbmdTdHJlYW0oJnMpIDw8IDQyIDw8ICcg
JyA8PCAzLjE0OyAgLy8gYXBwZW5kcyB0byBgc2AKIC8vCiAvLyBPU3RyaW5nU3RyZWFtIGlzIGZh
c3RlciB0byBjcmVhdGUgdGhhbiBzdGQ6Om9zdHJpbmdzdHJlYW0gYnV0IGl0J3Mgc3RpbGwKQEAg
LTQ1LDE0ICs0NSwxNCBAQCBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7CiAvLwogLy8gQ3Jl
YXRlcyB1bm5lY2Vzc2FyeSBpbnN0YW5jZXMgb2YgT1N0cmluZ1N0cmVhbTogc2xvdy4KIC8vCi0v
LyAgIHN0cmluZyBzOworLy8gICBzdGQ6OnN0cmluZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtKCZz
KSA8PCA0MjsKIC8vICAgT1N0cmluZ1N0cmVhbSgmcykgPDwgJyAnOwogLy8gICBPU3RyaW5nU3Ry
ZWFtKCZzKSA8PCAzLjE0OwogLy8KIC8vIENyZWF0ZXMgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgT1N0
cmluZ1N0cmVhbSBhbmQgcmV1c2VzIGl0OiBmYXN0LgogLy8KLS8vICAgc3RyaW5nIHM7CisvLyAg
IHN0ZDo6c3RyaW5nIHM7CiAvLyAgIE9TdHJpbmdTdHJlYW0gc3RybSgmcyk7CiAvLyAgIHN0cm0g
PDwgNDI7CiAvLyAgIHN0cm0gPDwgJyAnOwpAQCAtNjQsOCArNjQsOCBAQCBjbGFzcyBPU3RyaW5n
U3RyZWFtIDogcHJpdmF0ZSBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxjaGFyPiwgcHVibGljIHN0ZDo6
b3N0cmVhbSB7CiAgIC8vIFRoZSBhcmd1bWVudCBjYW4gYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSB5
b3UnbGwgbmVlZCB0byBjYWxsIHN0cihwKSB3aXRoIGEKICAgLy8gbm9uLW51bGwgYXJndW1lbnQg
YmVmb3JlIHlvdSBjYW4gd3JpdGUgdG8gdGhlIHN0cmVhbS4KICAgLy8KLSAgLy8gVGhlIGRlc3Ry
dWN0b3Igb2YgT1N0cmluZ1N0cmVhbSBkb2Vzbid0IHVzZSB0aGUgc3RkOjpzdHJpbmcuIEl0J3Mg
T0sgdG8gZGVzdHJveQotICAvLyB0aGUgc3RkOjpzdHJpbmcgYmVmb3JlIHRoZSBzdHJlYW0uCisg
IC8vIFRoZSBkZXN0cnVjdG9yIG9mIE9TdHJpbmdTdHJlYW0gZG9lc24ndCB1c2UgdGhlIHN0ZDo6
c3RyaW5nLiBJdCdzIE9LIHRvCisgIC8vIGRlc3Ryb3kgdGhlIHN0ZDo6c3RyaW5nIGJlZm9yZSB0
aGUgc3RyZWFtLgogICBleHBsaWNpdCBPU3RyaW5nU3RyZWFtKHN0ZDo6c3RyaW5nKiBzKSA6IHN0
ZDo6b3N0cmVhbSh0aGlzKSwgc18ocykge30KIAogICBzdGQ6OnN0cmluZyogc3RyKCkgeyByZXR1
cm4gc187IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVh
bV9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW1fYmVu
Y2htYXJrLmNjCmluZGV4IGM5M2Y5NjkwOWQ4Li41OTc5ZjE4MjM2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtX2JlbmNobWFyay5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW1fYmVuY2htYXJrLmNjCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL29zdHJpbmdzdHJlYW1fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
b3N0cmluZ3N0cmVhbV90ZXN0LmNjCmluZGV4IDA2OWEwZTFmYmJiLi4yODc5ZTUwZWIzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtX3Rlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtX3Rlc3QuY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvcG93MTBfaGVscGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9wb3cx
MF9oZWxwZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAzZWQ4
ZDA3Y2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9wb3cxMF9o
ZWxwZXIuY2MKQEAgLTAsMCArMSwxMjAgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBl
ci5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBz
dHJpbmdzX2ludGVybmFsIHsKKworbmFtZXNwYWNlIHsKKworLy8gVGhlIGV4YWN0IHZhbHVlIG9m
IDFlMjMgZmFsbHMgcHJlY2lzZWx5IGhhbGZ3YXkgYmV0d2VlbiB0d28gcmVwcmVzZW50YWJsZQor
Ly8gZG91Ymxlcy4gRnVydGhlcm1vcmUsIHRoZSByb3VuZGluZyBydWxlcyB3ZSBwcmVmZXIgKGJy
ZWFrIHRpZXMgYnkgcm91bmRpbmcKKy8vIHRvIHRoZSBuZWFyZXN0IGV2ZW4pIGRpY3RhdGUgaW4g
dGhpcyBjYXNlIHRoYXQgdGhlIG51bWJlciBzaG91bGQgYmUgcm91bmRlZAorLy8gZG93biwgYnV0
IHRoaXMgaXMgbm90IGNvbXBsZXRlbHkgc3BlY2lmaWVkIGZvciBmbG9hdGluZy1wb2ludCBsaXRl
cmFscyBpbgorLy8gQysrLiAoSXQganVzdCBzYXlzIHRvIHVzZSB0aGUgZGVmYXVsdCByb3VuZGlu
ZyBtb2RlIG9mIHRoZSBzdGFuZGFyZAorLy8gbGlicmFyeS4pIFdlIGVuc3VyZSB0aGUgcmVzdWx0
IHdlIHdhbnQgYnkgdXNpbmcgYSBudW1iZXIgdGhhdCBoYXMgYW4KKy8vIHVuYW1iaWd1b3VzIGNv
cnJlY3RseSByb3VuZGVkIGFuc3dlci4KK2NvbnN0ZXhwciBkb3VibGUgazFlMjMgPSA5OTk5OTk5
OTk5OTk5OTk5ZTc7CisKK2NvbnN0ZXhwciBkb3VibGUga1Bvd2Vyc09mVGVuW10gPSB7CisgICAg
MC4wLCAgICAxZS0zMjMsIDFlLTMyMiwgMWUtMzIxLCAxZS0zMjAsIDFlLTMxOSwgMWUtMzE4LCAx
ZS0zMTcsIDFlLTMxNiwKKyAgICAxZS0zMTUsIDFlLTMxNCwgMWUtMzEzLCAxZS0zMTIsIDFlLTMx
MSwgMWUtMzEwLCAxZS0zMDksIDFlLTMwOCwgMWUtMzA3LAorICAgIDFlLTMwNiwgMWUtMzA1LCAx
ZS0zMDQsIDFlLTMwMywgMWUtMzAyLCAxZS0zMDEsIDFlLTMwMCwgMWUtMjk5LCAxZS0yOTgsCisg
ICAgMWUtMjk3LCAxZS0yOTYsIDFlLTI5NSwgMWUtMjk0LCAxZS0yOTMsIDFlLTI5MiwgMWUtMjkx
LCAxZS0yOTAsIDFlLTI4OSwKKyAgICAxZS0yODgsIDFlLTI4NywgMWUtMjg2LCAxZS0yODUsIDFl
LTI4NCwgMWUtMjgzLCAxZS0yODIsIDFlLTI4MSwgMWUtMjgwLAorICAgIDFlLTI3OSwgMWUtMjc4
LCAxZS0yNzcsIDFlLTI3NiwgMWUtMjc1LCAxZS0yNzQsIDFlLTI3MywgMWUtMjcyLCAxZS0yNzEs
CisgICAgMWUtMjcwLCAxZS0yNjksIDFlLTI2OCwgMWUtMjY3LCAxZS0yNjYsIDFlLTI2NSwgMWUt
MjY0LCAxZS0yNjMsIDFlLTI2MiwKKyAgICAxZS0yNjEsIDFlLTI2MCwgMWUtMjU5LCAxZS0yNTgs
IDFlLTI1NywgMWUtMjU2LCAxZS0yNTUsIDFlLTI1NCwgMWUtMjUzLAorICAgIDFlLTI1MiwgMWUt
MjUxLCAxZS0yNTAsIDFlLTI0OSwgMWUtMjQ4LCAxZS0yNDcsIDFlLTI0NiwgMWUtMjQ1LCAxZS0y
NDQsCisgICAgMWUtMjQzLCAxZS0yNDIsIDFlLTI0MSwgMWUtMjQwLCAxZS0yMzksIDFlLTIzOCwg
MWUtMjM3LCAxZS0yMzYsIDFlLTIzNSwKKyAgICAxZS0yMzQsIDFlLTIzMywgMWUtMjMyLCAxZS0y
MzEsIDFlLTIzMCwgMWUtMjI5LCAxZS0yMjgsIDFlLTIyNywgMWUtMjI2LAorICAgIDFlLTIyNSwg
MWUtMjI0LCAxZS0yMjMsIDFlLTIyMiwgMWUtMjIxLCAxZS0yMjAsIDFlLTIxOSwgMWUtMjE4LCAx
ZS0yMTcsCisgICAgMWUtMjE2LCAxZS0yMTUsIDFlLTIxNCwgMWUtMjEzLCAxZS0yMTIsIDFlLTIx
MSwgMWUtMjEwLCAxZS0yMDksIDFlLTIwOCwKKyAgICAxZS0yMDcsIDFlLTIwNiwgMWUtMjA1LCAx
ZS0yMDQsIDFlLTIwMywgMWUtMjAyLCAxZS0yMDEsIDFlLTIwMCwgMWUtMTk5LAorICAgIDFlLTE5
OCwgMWUtMTk3LCAxZS0xOTYsIDFlLTE5NSwgMWUtMTk0LCAxZS0xOTMsIDFlLTE5MiwgMWUtMTkx
LCAxZS0xOTAsCisgICAgMWUtMTg5LCAxZS0xODgsIDFlLTE4NywgMWUtMTg2LCAxZS0xODUsIDFl
LTE4NCwgMWUtMTgzLCAxZS0xODIsIDFlLTE4MSwKKyAgICAxZS0xODAsIDFlLTE3OSwgMWUtMTc4
LCAxZS0xNzcsIDFlLTE3NiwgMWUtMTc1LCAxZS0xNzQsIDFlLTE3MywgMWUtMTcyLAorICAgIDFl
LTE3MSwgMWUtMTcwLCAxZS0xNjksIDFlLTE2OCwgMWUtMTY3LCAxZS0xNjYsIDFlLTE2NSwgMWUt
MTY0LCAxZS0xNjMsCisgICAgMWUtMTYyLCAxZS0xNjEsIDFlLTE2MCwgMWUtMTU5LCAxZS0xNTgs
IDFlLTE1NywgMWUtMTU2LCAxZS0xNTUsIDFlLTE1NCwKKyAgICAxZS0xNTMsIDFlLTE1MiwgMWUt
MTUxLCAxZS0xNTAsIDFlLTE0OSwgMWUtMTQ4LCAxZS0xNDcsIDFlLTE0NiwgMWUtMTQ1LAorICAg
IDFlLTE0NCwgMWUtMTQzLCAxZS0xNDIsIDFlLTE0MSwgMWUtMTQwLCAxZS0xMzksIDFlLTEzOCwg
MWUtMTM3LCAxZS0xMzYsCisgICAgMWUtMTM1LCAxZS0xMzQsIDFlLTEzMywgMWUtMTMyLCAxZS0x
MzEsIDFlLTEzMCwgMWUtMTI5LCAxZS0xMjgsIDFlLTEyNywKKyAgICAxZS0xMjYsIDFlLTEyNSwg
MWUtMTI0LCAxZS0xMjMsIDFlLTEyMiwgMWUtMTIxLCAxZS0xMjAsIDFlLTExOSwgMWUtMTE4LAor
ICAgIDFlLTExNywgMWUtMTE2LCAxZS0xMTUsIDFlLTExNCwgMWUtMTEzLCAxZS0xMTIsIDFlLTEx
MSwgMWUtMTEwLCAxZS0xMDksCisgICAgMWUtMTA4LCAxZS0xMDcsIDFlLTEwNiwgMWUtMTA1LCAx
ZS0xMDQsIDFlLTEwMywgMWUtMTAyLCAxZS0xMDEsIDFlLTEwMCwKKyAgICAxZS05OSwgIDFlLTk4
LCAgMWUtOTcsICAxZS05NiwgIDFlLTk1LCAgMWUtOTQsICAxZS05MywgIDFlLTkyLCAgMWUtOTEs
CisgICAgMWUtOTAsICAxZS04OSwgIDFlLTg4LCAgMWUtODcsICAxZS04NiwgIDFlLTg1LCAgMWUt
ODQsICAxZS04MywgIDFlLTgyLAorICAgIDFlLTgxLCAgMWUtODAsICAxZS03OSwgIDFlLTc4LCAg
MWUtNzcsICAxZS03NiwgIDFlLTc1LCAgMWUtNzQsICAxZS03MywKKyAgICAxZS03MiwgIDFlLTcx
LCAgMWUtNzAsICAxZS02OSwgIDFlLTY4LCAgMWUtNjcsICAxZS02NiwgIDFlLTY1LCAgMWUtNjQs
CisgICAgMWUtNjMsICAxZS02MiwgIDFlLTYxLCAgMWUtNjAsICAxZS01OSwgIDFlLTU4LCAgMWUt
NTcsICAxZS01NiwgIDFlLTU1LAorICAgIDFlLTU0LCAgMWUtNTMsICAxZS01MiwgIDFlLTUxLCAg
MWUtNTAsICAxZS00OSwgIDFlLTQ4LCAgMWUtNDcsICAxZS00NiwKKyAgICAxZS00NSwgIDFlLTQ0
LCAgMWUtNDMsICAxZS00MiwgIDFlLTQxLCAgMWUtNDAsICAxZS0zOSwgIDFlLTM4LCAgMWUtMzcs
CisgICAgMWUtMzYsICAxZS0zNSwgIDFlLTM0LCAgMWUtMzMsICAxZS0zMiwgIDFlLTMxLCAgMWUt
MzAsICAxZS0yOSwgIDFlLTI4LAorICAgIDFlLTI3LCAgMWUtMjYsICAxZS0yNSwgIDFlLTI0LCAg
MWUtMjMsICAxZS0yMiwgIDFlLTIxLCAgMWUtMjAsICAxZS0xOSwKKyAgICAxZS0xOCwgIDFlLTE3
LCAgMWUtMTYsICAxZS0xNSwgIDFlLTE0LCAgMWUtMTMsICAxZS0xMiwgIDFlLTExLCAgMWUtMTAs
CisgICAgMWUtOSwgICAxZS04LCAgIDFlLTcsICAgMWUtNiwgICAxZS01LCAgIDFlLTQsICAgMWUt
MywgICAxZS0yLCAgIDFlLTEsCisgICAgMWUrMCwgICAxZSsxLCAgIDFlKzIsICAgMWUrMywgICAx
ZSs0LCAgIDFlKzUsICAgMWUrNiwgICAxZSs3LCAgIDFlKzgsCisgICAgMWUrOSwgICAxZSsxMCwg
IDFlKzExLCAgMWUrMTIsICAxZSsxMywgIDFlKzE0LCAgMWUrMTUsICAxZSsxNiwgIDFlKzE3LAor
ICAgIDFlKzE4LCAgMWUrMTksICAxZSsyMCwgIDFlKzIxLCAgMWUrMjIsICBrMWUyMywgIDFlKzI0
LCAgMWUrMjUsICAxZSsyNiwKKyAgICAxZSsyNywgIDFlKzI4LCAgMWUrMjksICAxZSszMCwgIDFl
KzMxLCAgMWUrMzIsICAxZSszMywgIDFlKzM0LCAgMWUrMzUsCisgICAgMWUrMzYsICAxZSszNywg
IDFlKzM4LCAgMWUrMzksICAxZSs0MCwgIDFlKzQxLCAgMWUrNDIsICAxZSs0MywgIDFlKzQ0LAor
ICAgIDFlKzQ1LCAgMWUrNDYsICAxZSs0NywgIDFlKzQ4LCAgMWUrNDksICAxZSs1MCwgIDFlKzUx
LCAgMWUrNTIsICAxZSs1MywKKyAgICAxZSs1NCwgIDFlKzU1LCAgMWUrNTYsICAxZSs1NywgIDFl
KzU4LCAgMWUrNTksICAxZSs2MCwgIDFlKzYxLCAgMWUrNjIsCisgICAgMWUrNjMsICAxZSs2NCwg
IDFlKzY1LCAgMWUrNjYsICAxZSs2NywgIDFlKzY4LCAgMWUrNjksICAxZSs3MCwgIDFlKzcxLAor
ICAgIDFlKzcyLCAgMWUrNzMsICAxZSs3NCwgIDFlKzc1LCAgMWUrNzYsICAxZSs3NywgIDFlKzc4
LCAgMWUrNzksICAxZSs4MCwKKyAgICAxZSs4MSwgIDFlKzgyLCAgMWUrODMsICAxZSs4NCwgIDFl
Kzg1LCAgMWUrODYsICAxZSs4NywgIDFlKzg4LCAgMWUrODksCisgICAgMWUrOTAsICAxZSs5MSwg
IDFlKzkyLCAgMWUrOTMsICAxZSs5NCwgIDFlKzk1LCAgMWUrOTYsICAxZSs5NywgIDFlKzk4LAor
ICAgIDFlKzk5LCAgMWUrMTAwLCAxZSsxMDEsIDFlKzEwMiwgMWUrMTAzLCAxZSsxMDQsIDFlKzEw
NSwgMWUrMTA2LCAxZSsxMDcsCisgICAgMWUrMTA4LCAxZSsxMDksIDFlKzExMCwgMWUrMTExLCAx
ZSsxMTIsIDFlKzExMywgMWUrMTE0LCAxZSsxMTUsIDFlKzExNiwKKyAgICAxZSsxMTcsIDFlKzEx
OCwgMWUrMTE5LCAxZSsxMjAsIDFlKzEyMSwgMWUrMTIyLCAxZSsxMjMsIDFlKzEyNCwgMWUrMTI1
LAorICAgIDFlKzEyNiwgMWUrMTI3LCAxZSsxMjgsIDFlKzEyOSwgMWUrMTMwLCAxZSsxMzEsIDFl
KzEzMiwgMWUrMTMzLCAxZSsxMzQsCisgICAgMWUrMTM1LCAxZSsxMzYsIDFlKzEzNywgMWUrMTM4
LCAxZSsxMzksIDFlKzE0MCwgMWUrMTQxLCAxZSsxNDIsIDFlKzE0MywKKyAgICAxZSsxNDQsIDFl
KzE0NSwgMWUrMTQ2LCAxZSsxNDcsIDFlKzE0OCwgMWUrMTQ5LCAxZSsxNTAsIDFlKzE1MSwgMWUr
MTUyLAorICAgIDFlKzE1MywgMWUrMTU0LCAxZSsxNTUsIDFlKzE1NiwgMWUrMTU3LCAxZSsxNTgs
IDFlKzE1OSwgMWUrMTYwLCAxZSsxNjEsCisgICAgMWUrMTYyLCAxZSsxNjMsIDFlKzE2NCwgMWUr
MTY1LCAxZSsxNjYsIDFlKzE2NywgMWUrMTY4LCAxZSsxNjksIDFlKzE3MCwKKyAgICAxZSsxNzEs
IDFlKzE3MiwgMWUrMTczLCAxZSsxNzQsIDFlKzE3NSwgMWUrMTc2LCAxZSsxNzcsIDFlKzE3OCwg
MWUrMTc5LAorICAgIDFlKzE4MCwgMWUrMTgxLCAxZSsxODIsIDFlKzE4MywgMWUrMTg0LCAxZSsx
ODUsIDFlKzE4NiwgMWUrMTg3LCAxZSsxODgsCisgICAgMWUrMTg5LCAxZSsxOTAsIDFlKzE5MSwg
MWUrMTkyLCAxZSsxOTMsIDFlKzE5NCwgMWUrMTk1LCAxZSsxOTYsIDFlKzE5NywKKyAgICAxZSsx
OTgsIDFlKzE5OSwgMWUrMjAwLCAxZSsyMDEsIDFlKzIwMiwgMWUrMjAzLCAxZSsyMDQsIDFlKzIw
NSwgMWUrMjA2LAorICAgIDFlKzIwNywgMWUrMjA4LCAxZSsyMDksIDFlKzIxMCwgMWUrMjExLCAx
ZSsyMTIsIDFlKzIxMywgMWUrMjE0LCAxZSsyMTUsCisgICAgMWUrMjE2LCAxZSsyMTcsIDFlKzIx
OCwgMWUrMjE5LCAxZSsyMjAsIDFlKzIyMSwgMWUrMjIyLCAxZSsyMjMsIDFlKzIyNCwKKyAgICAx
ZSsyMjUsIDFlKzIyNiwgMWUrMjI3LCAxZSsyMjgsIDFlKzIyOSwgMWUrMjMwLCAxZSsyMzEsIDFl
KzIzMiwgMWUrMjMzLAorICAgIDFlKzIzNCwgMWUrMjM1LCAxZSsyMzYsIDFlKzIzNywgMWUrMjM4
LCAxZSsyMzksIDFlKzI0MCwgMWUrMjQxLCAxZSsyNDIsCisgICAgMWUrMjQzLCAxZSsyNDQsIDFl
KzI0NSwgMWUrMjQ2LCAxZSsyNDcsIDFlKzI0OCwgMWUrMjQ5LCAxZSsyNTAsIDFlKzI1MSwKKyAg
ICAxZSsyNTIsIDFlKzI1MywgMWUrMjU0LCAxZSsyNTUsIDFlKzI1NiwgMWUrMjU3LCAxZSsyNTgs
IDFlKzI1OSwgMWUrMjYwLAorICAgIDFlKzI2MSwgMWUrMjYyLCAxZSsyNjMsIDFlKzI2NCwgMWUr
MjY1LCAxZSsyNjYsIDFlKzI2NywgMWUrMjY4LCAxZSsyNjksCisgICAgMWUrMjcwLCAxZSsyNzEs
IDFlKzI3MiwgMWUrMjczLCAxZSsyNzQsIDFlKzI3NSwgMWUrMjc2LCAxZSsyNzcsIDFlKzI3OCwK
KyAgICAxZSsyNzksIDFlKzI4MCwgMWUrMjgxLCAxZSsyODIsIDFlKzI4MywgMWUrMjg0LCAxZSsy
ODUsIDFlKzI4NiwgMWUrMjg3LAorICAgIDFlKzI4OCwgMWUrMjg5LCAxZSsyOTAsIDFlKzI5MSwg
MWUrMjkyLCAxZSsyOTMsIDFlKzI5NCwgMWUrMjk1LCAxZSsyOTYsCisgICAgMWUrMjk3LCAxZSsy
OTgsIDFlKzI5OSwgMWUrMzAwLCAxZSszMDEsIDFlKzMwMiwgMWUrMzAzLCAxZSszMDQsIDFlKzMw
NSwKKyAgICAxZSszMDYsIDFlKzMwNywgMWUrMzA4LAorfTsKKworfSAgLy8gbmFtZXNwYWNlCisK
K2RvdWJsZSBQb3cxMChpbnQgZXhwKSB7CisgIGlmIChleHAgPCAtMzI0KSB7CisgICAgcmV0dXJu
IDAuMDsKKyAgfSBlbHNlIGlmIChleHAgPiAzMDgpIHsKKyAgICByZXR1cm4gSU5GSU5JVFk7Cisg
IH0gZWxzZSB7CisgICAgcmV0dXJuIGtQb3dlcnNPZlRlbltleHAgKyAzMjRdOworICB9Cit9CisK
K30gIC8vIG5hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9wb3cxMF9oZWxwZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvcG93MTBfaGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjlkMWFhNzEwZGI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9wb3cxMF9oZWxwZXIuaApAQCAtMCwwICsxLDM2IEBACisvLworLy8gQ29w
eXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gVGhpcyB0ZXN0IGhlbHBl
ciBsaWJyYXJ5IGNvbnRhaW5zIGEgdGFibGUgb2YgcG93ZXJzIG9mIDEwLCB0byBndWFyYW50ZWUK
Ky8vIHByZWNpc2UgdmFsdWVzIGFyZSBjb21wdXRlZCBhY3Jvc3MgdGhlIGZ1bGwgcmFuZ2Ugb2Yg
ZG91Ymxlcy4gV2UgY2FuJ3QgcmVseQorLy8gb24gdGhlIHBvdygpIGZ1bmN0aW9uLCBiZWNhdXNl
IG5vdCBhbGwgc3RhbmRhcmQgbGlicmFyaWVzIHNoaXAgYSB2ZXJzaW9uCisvLyB0aGF0IGlzIHBy
ZWNpc2UuCisjaWZuZGVmIEFCU0xfU1RSSU5HU19JTlRFUk5BTF9QT1cxMF9IRUxQRVJfSF8KKyNk
ZWZpbmUgQUJTTF9TVFJJTkdTX0lOVEVSTkFMX1BPVzEwX0hFTFBFUl9IXworCisjaW5jbHVkZSA8
dmVjdG9yPgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7
CisKKy8vIENvbXB1dGVzIHRoZSBwcmVjaXNlIHZhbHVlIG9mIDEwXmV4cC4gKEkuZS4gdGhlIG5l
YXJlc3QgcmVwcmVzZW50YWJsZQorLy8gZG91YmxlIHRvIHRoZSBleGFjdCB2YWx1ZSwgcm91bmRp
bmcgdG8gbmVhcmVzdC1ldmVuIGluIHRoZSAoc2luZ2xlKSBjYXNlIG9mCisvLyBiZWluZyBleGFj
dGx5IGhhbGZ3YXkgYmV0d2Vlbi4pCitkb3VibGUgUG93MTAoaW50IGV4cCk7CisKK30gIC8vIG5h
bWVzcGFjZSBzdHJpbmdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYg
IC8vIEFCU0xfU1RSSU5HU19JTlRFUk5BTF9QT1cxMF9IRUxQRVJfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvcG93MTBfaGVscGVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL3BvdzEwX2hlbHBlcl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5hNGE2OGI1ZGFiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvcG93MTBfaGVscGVyX3Rlc3QuY2MKQEAgLTAsMCArMSwxMjAgQEAKKy8vIENv
cHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL2ludGVybmFsL3BvdzEwX2hlbHBlci5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfZm9ybWF0Lmgi
CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFsIHsKKworbmFt
ZXNwYWNlIHsKKworc3RydWN0IFRlc3RDYXNlIHsKKyAgaW50IHBvd2VyOyAgICAgICAgICAgLy8g
VGVzdGluZyBQb3cxMChwb3dlcikKKyAgdWludDY0X3Qgc2lnbmlmaWNhbmQ7ICAvLyBSYXcgYml0
cyBvZiB0aGUgZXhwZWN0ZWQgdmFsdWUKKyAgaW50IHJhZGl4OyAgICAgICAgICAgLy8gc2lnbmlm
aWNhbmQgaXMgYWRqdXN0ZWQgYnkgMl5yYWRpeAorfTsKKworVEVTVChQb3cxMEhlbHBlclRlc3Qs
IFdvcmtzKSB7CisgIC8vIFRoZSBsb2dpYyBpbiBwb3cxMF9oZWxwZXIuY2MgaXMgc28gc2ltcGxl
IHRoYXQgdGhlb3JldGljYWxseSB3ZSBkb24ndCBldmVuCisgIC8vIG5lZWQgYSB0ZXN0LiBIb3dl
dmVyLCB3ZSdyZSBwYXJhbm9pZCBhbmQgYmVsaWV2ZSB0aGF0IHRoZXJlIG1heSBiZQorICAvLyBj
b21waWxlcnMgdGhhdCBkb24ndCByb3VuZCBmbG9hdGluZy1wb2ludCBsaXRlcmFscyBjb3JyZWN0
bHksIGV2ZW4gdGhvdWdoCisgIC8vIGl0IGlzIHNwZWNpZmllZCBieSB0aGUgc3RhbmRhcmQuIFdl
IGNoZWNrIHZhcmlvdXMgZWRnZSBjYXNlcywganVzdCB0byBiZQorICAvLyBzdXJlLgorICBjb25z
dGV4cHIgVGVzdENhc2Uga1Rlc3RDYXNlc1tdID0geworICAgICAgLy8gU3Vibm9ybWFscworICAg
ICAgey0zMjMsIDB4MiwgLTEwNzR9LAorICAgICAgey0zMjIsIDB4MTQsIC0xMDc0fSwKKyAgICAg
IHstMzIxLCAweGNhLCAtMTA3NH0sCisgICAgICB7LTMyMCwgMHg3ZTgsIC0xMDc0fSwKKyAgICAg
IHstMzE5LCAweDRmMTAsIC0xMDc0fSwKKyAgICAgIHstMzE4LCAweDMxNmEyLCAtMTA3NH0sCisg
ICAgICB7LTMxNywgMHgxZWUyNTcsIC0xMDc0fSwKKyAgICAgIHstMzE2LCAweDEzNGQ3NjEsIC0x
MDc0fSwKKyAgICAgIHstMzE1LCAweGMxMDY5Y2QsIC0xMDc0fSwKKyAgICAgIHstMzE0LCAweDc4
YTQyMjA1LCAtMTA3NH0sCisgICAgICB7LTMxMywgMHg0YjY2OTU0MzMsIC0xMDc0fSwKKyAgICAg
IHstMzEyLCAweDJmMjAxZDQ5ZmIsIC0xMDc0fSwKKyAgICAgIHstMzExLCAweDFkNzQxMjRlM2Qx
LCAtMTA3NH0sCisgICAgICB7LTMxMCwgMHgxMjY4OGI3MGU2MmIsIC0xMDc0fSwKKyAgICAgIHst
MzA5LCAweGI4MTU3MjY4ZmRhZiwgLTEwNzR9LAorICAgICAgey0zMDgsIDB4NzMwZDY3ODE5ZThk
MiwgLTEwNzR9LAorICAgICAgLy8gVmFsdWVzIHRoYXQgYXJlIHZlcnkgY2xvc2UgdG8gcm91bmRp
bmcgdGhlIG90aGVyIHdheS4KKyAgICAgIC8vIENvbW1lbnQgc2hvd3MgZGlmZmVyZW5jZSBvZiBz
aWduaWZpY2FuZCBmcm9tIHRoZSB0cnVlIHZhbHVlLgorICAgICAgey0zMDcsIDB4MTFmYTE4MmM0
MGM2MGQsIC0xMDcyfSwgIC8vIC0uNDU4OAorICAgICAgey0yOTAsIDB4MThmMmIwNjFhZWEwNzIs
IC0xMDE2fSwgIC8vICAuNDg1NAorICAgICAgey0yNzYsIDB4MTFCQTAzRjVCMjEwMDAsIC05Njl9
LCAgIC8vICAuNDcwOQorICAgICAgey0yNTksIDB4MTg5OUMyRjY3MzIyMTAsIC05MTN9LCAgIC8v
ICAuNDgzMAorICAgICAgey0yNTIsIDB4MUQ1Mzg0NEVFNDdERDEsIC04OTB9LCAgIC8vIC0uNDc0
MworICAgICAgey0yMjcsIDB4MUU1Mjk3Mjg3QzJGNDUsIC04MDd9LCAgIC8vIC0uNDcwOAorICAg
ICAgey0xOTgsIDB4MTMyMkUyMjBBNUIxN0UsIC03MTB9LCAgIC8vIC0uNDcxNAorICAgICAgey0x
OTUsIDB4MTJCMDEwRDNFMUNGNTYsIC03MDB9LCAgIC8vICAuNDkyOAorICAgICAgey0xOTIsIDB4
MTIzRkYwNkVFQTg0N0EsIC02OTB9LCAgIC8vICAuNDk2OAorICAgICAgey0xNjMsIDB4MTcwOEQw
Rjg0RDNERTcsIC01OTR9LCAgIC8vIC0uNDk3NworICAgICAgey0xNDUsIDB4MTNGQUFDM0UzRkEx
RjMsIC01MzR9LCAgIC8vIC0uNDc4NQorICAgICAgey0xMTEsIDB4MTMzRDQwMzJDMkM3RjUsIC00
MjF9LCAgIC8vICAuNDc3NAorICAgICAgey0xMDYsIDB4MUQ1QjU2MTU3NDc2NUIsIC00MDV9LCAg
IC8vIC0uNDg2OQorICAgICAgey0xMDQsIDB4MTZFRjVCNDBDMkZDNzcsIC0zOTh9LCAgIC8vIC0u
NDc0MQorICAgICAgey04OCwgMHgxOTc2ODNERjJGMjY4RCwgLTM0NX0sICAgIC8vIC0uNDczOAor
ICAgICAgey04NiwgMHgxM0U0OTcwNjVDRDYxRiwgLTMzOH0sICAgIC8vICAuNDczNgorICAgICAg
ey03NiwgMHgxNzI4OEUxMjcxRjUxMywgLTMwNX0sICAgIC8vIC0uNDc2MQorICAgICAgey02Mywg
MHgxQTUzRkM5NjMxRDEwRCwgLTI2Mn0sICAgIC8vICAuNDkyOQorICAgICAgey0zMCwgMHgxNDQ4
NEJGRUVCQzJBMCwgLTE1Mn0sICAgIC8vICAuNDc1OAorICAgICAgey0yMSwgMHgxMkUzQjQwQTBF
OUI0RiwgLTEyMn0sICAgIC8vIC0uNDkxNgorICAgICAgey01LCAweDE0RjhCNTg4RTM2OEYxLCAt
Njl9LCAgICAgIC8vICAuNDgyOQorICAgICAgezIzLCAweDE1MkQwMkM3RTE0QUY2LCAyNH0sICAg
ICAgIC8vIC0uNTAwMCAoZXhhY3RseSwgcm91bmQtdG8tZXZlbikKKyAgICAgIHsyOSwgMHgxNDMx
RTBGQUU2RDcyMSwgNDR9LCAgICAgICAvLyAtLjQ4NzAKKyAgICAgIHszNCwgMHgxRUQwOUJFQUQ4
N0MwMywgNjB9LCAgICAgICAvLyAtLjQ3MjEKKyAgICAgIHs3MCwgMHgxNzJFQkFENkREQzczRCwg
MTgwfSwgICAgICAvLyAgLjQ3MzMKKyAgICAgIHsxMDUsIDB4MUJFN0FCRDM3ODFFQ0EsIDI5Nn0s
ICAgICAvLyAtLjQ4NTAKKyAgICAgIHsxMjYsIDB4MTdBMkVDQzQxNEEwM0YsIDM2Nn0sICAgICAv
LyAtLjQ5OTkKKyAgICAgIHsxMzAsIDB4MUNEQTYyMDU1QjJEOUUsIDM3OX0sICAgICAvLyAgLjQ4
NTUKKyAgICAgIHsxNjUsIDB4MTE1RDg0N0FEMDAwODcsIDQ5Nn0sICAgICAvLyAtLjQ5MTMKKyAg
ICAgIHsxNzIsIDB4MTRCMzc4NDY5QjY3MzIsIDUxOX0sICAgICAvLyAgLjQ4MTgKKyAgICAgIHsx
ODcsIDB4MTI2MkRGRUVCQkIwRjksIDU2OX0sICAgICAvLyAtLjQ4MDUKKyAgICAgIHsyMTAsIDB4
MTg1NTdGMzEzMjZCQkIsIDY0NX0sICAgICAvLyAtLjQ5OTIKKyAgICAgIHsyMTIsIDB4MTMwMkNC
NUU2RjY0MkEsIDY1Mn0sICAgICAvLyAtLjQ4MzgKKyAgICAgIHsyMTUsIDB4MTI5MEJBOUEzOEM3
RDEsIDY2Mn0sICAgICAvLyAtLjQ4ODEKKyAgICAgIHsyMzYsIDB4MUY3MzZGOUIzNDk0RTksIDcz
MX0sICAgICAvLyAgLjQ3MDcKKyAgICAgIHsyNDQsIDB4MTc2RUM5ODk5NEY0ODksIDc1OH0sICAg
ICAvLyAgLjQ5MjQKKyAgICAgIHsyNTAsIDB4MTY1OEUzQUI3OTUyMDQsIDc3OH0sICAgICAvLyAt
LjQ5NjMKKyAgICAgIHsyNTIsIDB4MTE3NTcxRERGNkM4MTQsIDc4NX0sICAgICAvLyAgLjQ4NzMK
KyAgICAgIHsyNTQsIDB4MUI0NzgxRUFEMTk4OUUsIDc5MX0sICAgICAvLyAtLjQ4ODcKKyAgICAg
IHsyNjAsIDB4MUEwM0ZERTIxNENBRjEsIDgxMX0sICAgICAvLyAgLjQ3ODQKKyAgICAgIHsyODQs
IDB4MTU4NTA0MUIyQzQ3N0YsIDg5MX0sICAgICAvLyAgLjQ3OTgKKyAgICAgIHszMDQsIDB4MUQy
QTFCRTQwNDhGOTAsIDk1N30sICAgICAvLyAtLjQ5ODcKKyAgICAgIC8vIE91dC1vZi1yYW5nZSB2
YWx1ZXMKKyAgICAgIHstMzI0LCAweDAsIDB9LAorICAgICAgey0zMjUsIDB4MCwgMH0sCisgICAg
ICB7LTMyNiwgMHgwLCAwfSwKKyAgICAgIHszMDksIDEsIDIwMDB9LAorICAgICAgezMxMCwgMSwg
MjAwMH0sCisgICAgICB7MzExLCAxLCAyMDAwfSwKKyAgfTsKKyAgZm9yIChjb25zdCBUZXN0Q2Fz
ZSYgdGVzdF9jYXNlIDoga1Rlc3RDYXNlcykgeworICAgIEVYUEVDVF9FUShQb3cxMCh0ZXN0X2Nh
c2UucG93ZXIpLAorICAgICAgICAgICAgICBzdGQ6OmxkZXhwKHRlc3RfY2FzZS5zaWduaWZpY2Fu
ZCwgdGVzdF9jYXNlLnJhZGl4KSkKKyAgICAgICAgPDwgYWJzbDo6U3RyRm9ybWF0KCJGYWlsdXJl
IGZvciBQb3cxMCglZCk6ICVhIHZzICVhIiwgdGVzdF9jYXNlLnBvd2VyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUG93MTAodGVzdF9jYXNlLnBvd2VyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bGRleHAodGVzdF9jYXNlLnNpZ25pZmljYW5kLCB0ZXN0X2Nhc2UucmFk
aXgpKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBzdHJpbmdz
X2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9yZXNpemVfdW5pbml0aWFsaXplZC5oCmluZGV4IGE5NGUwNTQ3YjUwLi40Njk5NjJiMjc0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6ZWQuaApAQCAt
NSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTgsNiArMTgsNyBAQAog
I2RlZmluZSBBQlNMX1NUUklOR1NfSU5URVJOQUxfUkVTSVpFX1VOSU5JVElBTElaRURfSF8KIAog
I2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGls
aXR5PgogCiAjaW5jbHVkZSAiYWJzbC9iYXNlL3BvcnQuaCIKQEAgLTI3LDQwICsyOCw0MiBAQCBu
YW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7CiAKIC8vIElzIGEg
c3ViY2xhc3Mgb2YgdHJ1ZV90eXBlIG9yIGZhbHNlX3R5cGUsIGRlcGVuZGluZyBvbiB3aGV0aGVy
IG9yIG5vdAotLy8gVCBoYXMgYSByZXNpemVfdW5pbml0aWFsaXplZCBtZW1iZXIuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPgotc3RydWN0IEhhc1Jlc2l6ZVVuaW5pdGlh
bGl6ZWQgOiBzdGQ6OmZhbHNlX3R5cGUge307Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVj
dCBIYXNSZXNpemVVbmluaXRpYWxpemVkPAotICAgIFQsIGFic2w6OnZvaWRfdDxkZWNsdHlwZShz
dGQ6OmRlY2x2YWw8VD4oKS5yZXNpemVfdW5pbml0aWFsaXplZCgyMzcpKT4+Ci0gICAgOiBzdGQ6
OnRydWVfdHlwZSB7fTsKKy8vIFQgaGFzIGEgX19yZXNpemVfZGVmYXVsdF9pbml0IG1lbWJlci4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBzdHJpbmdfdHlwZSwgdHlwZW5hbWUgPSB2b2lkPgorc3RydWN0
IFJlc2l6ZVVuaW5pdGlhbGl6ZWRUcmFpdHMgeworICB1c2luZyBIYXNNZW1iZXIgPSBzdGQ6OmZh
bHNlX3R5cGU7CisgIHN0YXRpYyB2b2lkIFJlc2l6ZShzdHJpbmdfdHlwZSogcywgc2l6ZV90IG5l
d19zaXplKSB7IHMtPnJlc2l6ZShuZXdfc2l6ZSk7IH0KK307CiAKKy8vIF9fcmVzaXplX2RlZmF1
bHRfaW5pdCBpcyBwcm92aWRlZCBieSBsaWJjKysgPj0gOC4wIGFuZCBieSBHb29nbGUncyBpbnRl
cm5hbAorLy8gOjpzdHJpbmcgaW1wbGVtZW50YXRpb24uCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgc3Ry
aW5nX3R5cGU+Ci12b2lkIFJlc2l6ZVVuaW5pdChzdHJpbmdfdHlwZSogcywgc2l6ZV90IG5ld19z
aXplLCBzdGQ6OnRydWVfdHlwZSkgewotICBzLT5yZXNpemVfdW5pbml0aWFsaXplZChuZXdfc2l6
ZSk7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgc3RyaW5nX3R5cGU+Ci12b2lkIFJlc2l6ZVVuaW5p
dChzdHJpbmdfdHlwZSogcywgc2l6ZV90IG5ld19zaXplLCBzdGQ6OmZhbHNlX3R5cGUpIHsKLSAg
cy0+cmVzaXplKG5ld19zaXplKTsKLX0KK3N0cnVjdCBSZXNpemVVbmluaXRpYWxpemVkVHJhaXRz
PAorICAgIHN0cmluZ190eXBlLCBhYnNsOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPHN0
cmluZ190eXBlJj4oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC5fX3Jlc2l6ZV9kZWZhdWx0X2luaXQoMjM3KSk+ID4geworICB1c2luZyBIYXNNZW1iZXIgPSBz
dGQ6OnRydWVfdHlwZTsKKyAgc3RhdGljIHZvaWQgUmVzaXplKHN0cmluZ190eXBlKiBzLCBzaXpl
X3QgbmV3X3NpemUpIHsKKyAgICBzLT5fX3Jlc2l6ZV9kZWZhdWx0X2luaXQobmV3X3NpemUpOwor
ICB9Cit9OwogCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHN0cmluZyBpbXBsZW1lbnRhdGlvbiBz
dXBwb3J0cyBhIHJlc2l6ZSB3aGVyZQotLy8gdGhlIG5ldyBjaGFyYWN0ZXJzIGFkZGVkIHRvIHRo
ZSBzdHJpbmcgYXJlIGxlZnQgdW50b3VjaGVkLgorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdGQ6
OnN0cmluZyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBhIHJlc2l6ZSB3aGVyZQorLy8gdGhlIG5l
dyBjaGFyYWN0ZXJzIGFkZGVkIHRvIHRoZSBzdGQ6OnN0cmluZyBhcmUgbGVmdCB1bnRvdWNoZWQu
CiAvLwogLy8gKEEgYmV0dGVyIG5hbWUgbWlnaHQgYmUgIlNUTFN0cmluZ1N1cHBvcnRzVW5pbml0
aWFsaXplZFJlc2l6ZSIsIGFsbHVkaW5nIHRvCiAvLyB0aGUgcHJldmlvdXMgZnVuY3Rpb24uKQog
dGVtcGxhdGUgPHR5cGVuYW1lIHN0cmluZ190eXBlPgogaW5saW5lIGNvbnN0ZXhwciBib29sIFNU
TFN0cmluZ1N1cHBvcnRzTm9udHJhc2hpbmdSZXNpemUoc3RyaW5nX3R5cGUqKSB7Ci0gIHJldHVy
biBIYXNSZXNpemVVbmluaXRpYWxpemVkPHN0cmluZ190eXBlPigpOworICByZXR1cm4gUmVzaXpl
VW5pbml0aWFsaXplZFRyYWl0czxzdHJpbmdfdHlwZT46Okhhc01lbWJlcjo6dmFsdWU7CiB9CiAK
IC8vIExpa2Ugc3RyLT5yZXNpemUobmV3X3NpemUpLCBleGNlcHQgYW55IG5ldyBjaGFyYWN0ZXJz
IGFkZGVkIHRvICIqc3RyIiBhcyBhCiAvLyByZXN1bHQgb2YgcmVzaXppbmcgbWF5IGJlIGxlZnQg
dW5pbml0aWFsaXplZCwgcmF0aGVyIHRoYW4gYmVpbmcgZmlsbGVkIHdpdGgKIC8vICcwJyBieXRl
cy4gVHlwaWNhbGx5IHVzZWQgd2hlbiBjb2RlIGlzIHRoZW4gZ29pbmcgdG8gb3ZlcndyaXRlIHRo
ZSBiYWNraW5nCi0vLyBzdG9yZSBvZiB0aGUgc3RyaW5nIHdpdGgga25vd24gZGF0YS4gVXNlcyBh
IEdvb2dsZSBleHRlbnNpb24gdG8gOjpzdHJpbmcuCisvLyBzdG9yZSBvZiB0aGUgc3RkOjpzdHJp
bmcgd2l0aCBrbm93biBkYXRhLgogdGVtcGxhdGUgPHR5cGVuYW1lIHN0cmluZ190eXBlLCB0eXBl
bmFtZSA9IHZvaWQ+CiBpbmxpbmUgdm9pZCBTVExTdHJpbmdSZXNpemVVbmluaXRpYWxpemVkKHN0
cmluZ190eXBlKiBzLCBzaXplX3QgbmV3X3NpemUpIHsKLSAgUmVzaXplVW5pbml0KHMsIG5ld19z
aXplLCBIYXNSZXNpemVVbmluaXRpYWxpemVkPHN0cmluZ190eXBlPigpKTsKKyAgUmVzaXplVW5p
bml0aWFsaXplZFRyYWl0czxzdHJpbmdfdHlwZT46OlJlc2l6ZShzLCBuZXdfc2l6ZSk7CiB9CiAK
IH0gIC8vIG5hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkX3Rlc3QuY2MKaW5kZXggYWQyODJlZmNkOWIu
LmM1YmUwYjEyMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3Jlc2l6ZV91
bmluaXRpYWxpemVkX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVf
dW5pbml0aWFsaXplZF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCkBAIC0yNCw0NCArMjQsNDQgQEAgc3RydWN0IHJlc2l6YWJsZV9zdHJpbmcgewogICB2
b2lkIHJlc2l6ZShzaXplX3QpIHsgcmVzaXplX2NhbGxfY291bnQgKz0gMTsgfQogfTsKIAotaW50
IHJlc2l6ZV91bmluaXRpYWxpemVkX2NhbGxfY291bnQgPSAwOworaW50IHJlc2l6ZV9kZWZhdWx0
X2luaXRfY2FsbF9jb3VudCA9IDA7CiAKLXN0cnVjdCByZXNpemVfdW5pbml0aWFsaXphYmxlX3N0
cmluZyB7CitzdHJ1Y3QgcmVzaXplX2RlZmF1bHRfaW5pdF9zdHJpbmcgewogICB2b2lkIHJlc2l6
ZShzaXplX3QpIHsgcmVzaXplX2NhbGxfY291bnQgKz0gMTsgfQotICB2b2lkIHJlc2l6ZV91bmlu
aXRpYWxpemVkKHNpemVfdCkgeyByZXNpemVfdW5pbml0aWFsaXplZF9jYWxsX2NvdW50ICs9IDE7
IH0KKyAgdm9pZCBfX3Jlc2l6ZV9kZWZhdWx0X2luaXQoc2l6ZV90KSB7IHJlc2l6ZV9kZWZhdWx0
X2luaXRfY2FsbF9jb3VudCArPSAxOyB9CiB9OwogCiBURVNUKFJlc2l6ZVVuaW5pdCwgV2l0aEFu
ZFdpdGhvdXQpIHsKICAgcmVzaXplX2NhbGxfY291bnQgPSAwOwotICByZXNpemVfdW5pbml0aWFs
aXplZF9jYWxsX2NvdW50ID0gMDsKKyAgcmVzaXplX2RlZmF1bHRfaW5pdF9jYWxsX2NvdW50ID0g
MDsKICAgewogICAgIHJlc2l6YWJsZV9zdHJpbmcgcnM7CiAKICAgICBFWFBFQ1RfRVEocmVzaXpl
X2NhbGxfY291bnQsIDApOwotICAgIEVYUEVDVF9FUShyZXNpemVfdW5pbml0aWFsaXplZF9jYWxs
X2NvdW50LCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzaXplX2RlZmF1bHRfaW5pdF9jYWxsX2NvdW50
LCAwKTsKICAgICBFWFBFQ1RfRkFMU0UoCiAgICAgICAgIGFic2w6OnN0cmluZ3NfaW50ZXJuYWw6
OlNUTFN0cmluZ1N1cHBvcnRzTm9udHJhc2hpbmdSZXNpemUoJnJzKSk7CiAgICAgRVhQRUNUX0VR
KHJlc2l6ZV9jYWxsX2NvdW50LCAwKTsKLSAgICBFWFBFQ1RfRVEocmVzaXplX3VuaW5pdGlhbGl6
ZWRfY2FsbF9jb3VudCwgMCk7CisgICAgRVhQRUNUX0VRKHJlc2l6ZV9kZWZhdWx0X2luaXRfY2Fs
bF9jb3VudCwgMCk7CiAgICAgYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6U1RMU3RyaW5nUmVzaXpl
VW5pbml0aWFsaXplZCgmcnMsIDIzNyk7CiAgICAgRVhQRUNUX0VRKHJlc2l6ZV9jYWxsX2NvdW50
LCAxKTsKLSAgICBFWFBFQ1RfRVEocmVzaXplX3VuaW5pdGlhbGl6ZWRfY2FsbF9jb3VudCwgMCk7
CisgICAgRVhQRUNUX0VRKHJlc2l6ZV9kZWZhdWx0X2luaXRfY2FsbF9jb3VudCwgMCk7CiAgIH0K
IAogICByZXNpemVfY2FsbF9jb3VudCA9IDA7Ci0gIHJlc2l6ZV91bmluaXRpYWxpemVkX2NhbGxf
Y291bnQgPSAwOworICByZXNpemVfZGVmYXVsdF9pbml0X2NhbGxfY291bnQgPSAwOwogICB7Ci0g
ICAgcmVzaXplX3VuaW5pdGlhbGl6YWJsZV9zdHJpbmcgcnVzOworICAgIHJlc2l6ZV9kZWZhdWx0
X2luaXRfc3RyaW5nIHJ1czsKIAogICAgIEVYUEVDVF9FUShyZXNpemVfY2FsbF9jb3VudCwgMCk7
Ci0gICAgRVhQRUNUX0VRKHJlc2l6ZV91bmluaXRpYWxpemVkX2NhbGxfY291bnQsIDApOworICAg
IEVYUEVDVF9FUShyZXNpemVfZGVmYXVsdF9pbml0X2NhbGxfY291bnQsIDApOwogICAgIEVYUEVD
VF9UUlVFKAogICAgICAgICBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpTVExTdHJpbmdTdXBwb3J0
c05vbnRyYXNoaW5nUmVzaXplKCZydXMpKTsKICAgICBFWFBFQ1RfRVEocmVzaXplX2NhbGxfY291
bnQsIDApOwotICAgIEVYUEVDVF9FUShyZXNpemVfdW5pbml0aWFsaXplZF9jYWxsX2NvdW50LCAw
KTsKKyAgICBFWFBFQ1RfRVEocmVzaXplX2RlZmF1bHRfaW5pdF9jYWxsX2NvdW50LCAwKTsKICAg
ICBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpTVExTdHJpbmdSZXNpemVVbmluaXRpYWxpemVkKCZy
dXMsIDIzNyk7CiAgICAgRVhQRUNUX0VRKHJlc2l6ZV9jYWxsX2NvdW50LCAwKTsKLSAgICBFWFBF
Q1RfRVEocmVzaXplX3VuaW5pdGlhbGl6ZWRfY2FsbF9jb3VudCwgMSk7CisgICAgRVhQRUNUX0VR
KHJlc2l6ZV9kZWZhdWx0X2luaXRfY2FsbF9jb3VudCwgMSk7CiAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdGxfdHlwZV90cmFpdHMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RsX3R5cGVfdHJhaXRzLmgKaW5kZXggMDRjNGE1MzIzYjguLjIwMmFiMzc0
YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0bF90eXBlX3RyYWl0cy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RsX3R5cGVfdHJhaXRzLmgKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3Ry
X2Zvcm1hdC9hcmcuaAppbmRleCAzMzc2ZDQ4YWZkYS4uNWNiM2ExNGQ2ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJnLmgKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSA8
Y3N0ZGlvPgogI2luY2x1ZGUgPGlvbWFuaXA+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KQEAgLTM1LDEyICszNiwxNCBAQCBzdHJ1Y3QgSGFzVXNlckRlZmluZWRD
b252ZXJ0PAogICAgIFQsIHZvaWRfdDxkZWNsdHlwZShBYnNsRm9ybWF0Q29udmVydCgKICAgICAg
ICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IFQmPigpLCBzdGQ6OmRlY2x2YWw8Q29udmVyc2lvblNw
ZWM+KCksCiAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxGb3JtYXRTaW5rKj4oKSkpPj4gOiBzdGQ6
OnRydWVfdHlwZSB7fTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBTdHJlYW1lZFdy
YXBwZXI7CiAKIC8vIElmICd2JyBjYW4gYmUgY29udmVydGVkIChpbiB0aGUgcHJpbnRmIHNlbnNl
KSBhY2NvcmRpbmcgdG8gJ2NvbnYnLAogLy8gdGhlbiBjb252ZXJ0IGl0LCBhcHBlbmRpbmcgdG8g
YHNpbmtgIGFuZCByZXR1cm4gYHRydWVgLgogLy8gT3RoZXJ3aXNlIGZhaWwgYW5kIHJldHVybiBg
ZmFsc2VgLgorCiAvLyBSYXcgcG9pbnRlcnMuCiBzdHJ1Y3QgVm9pZFB0ciB7CiAgIFZvaWRQdHIo
KSA9IGRlZmF1bHQ7CkBAIC01NCw3ICs1Nyw4IEBAIENvbnZlcnRSZXN1bHQ8Q29udjo6cD4gRm9y
bWF0Q29udmVydEltcGwoVm9pZFB0ciB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7CiAK
IC8vIFN0cmluZ3MuCi1Db252ZXJ0UmVzdWx0PENvbnY6OnM+IEZvcm1hdENvbnZlcnRJbXBsKGNv
bnN0IHN0ZDo6c3RyaW5nJiB2LCBDb252ZXJzaW9uU3BlYyBjb252LAorQ29udmVydFJlc3VsdDxD
b252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBzdGQ6OnN0cmluZyYgdiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblNwZWMgY29udiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNp
bmspOwogQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChzdHJpbmdfdmll
dyB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7CkBAIC04MCw3ICs4NCw3IEBAIENvbnZl
cnRSZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29udmVydEltcGwoY29uc3QgQWJzbENvcmQmIHZhbHVl
LAogCiAgIGludCBwcmVjaXNpb24gPSBjb252LnByZWNpc2lvbigpOwogICBpZiAocHJlY2lzaW9u
ID49IDApCi0gICAgdG9fd3JpdGUgPSBzdGQ6Om1pbih0b193cml0ZSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihwcmVjaXNpb24pKTsKKyAgICB0b193cml0ZSA9IChzdGQ6Om1pbikodG9fd3JpdGUsIHN0
YXRpY19jYXN0PHNpemVfdD4ocHJlY2lzaW9uKSk7CiAKICAgc3BhY2VfcmVtYWluaW5nID0gRXhj
ZXNzKHRvX3dyaXRlLCBzcGFjZV9yZW1haW5pbmcpOwogCkBAIC0yODksNyArMjkzLDcgQEAgY2xh
c3MgRm9ybWF0QXJnSW1wbCB7CiAgIHN0cnVjdCBNYW5hZ2VyPFQsIEJ5UG9pbnRlcj4gewogICAg
IHN0YXRpYyBEYXRhIFNldFZhbHVlKGNvbnN0IFQmIHZhbHVlKSB7CiAgICAgICBEYXRhIGRhdGE7
Ci0gICAgICBkYXRhLnB0ciA9ICZ2YWx1ZTsKKyAgICAgIGRhdGEucHRyID0gc3RkOjphZGRyZXNz
b2YodmFsdWUpOwogICAgICAgcmV0dXJuIGRhdGE7CiAgICAgfQogCkBAIC0zMzUsMTIgKzMzOSwx
MiBAQCBjbGFzcyBGb3JtYXRBcmdJbXBsIHsKICAgICB1c2luZyBDb21tb25UeXBlID0gdHlwZW5h
bWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX3NpZ25lZDxUPjo6dmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCwgdWludDY0X3Q+
Ojp0eXBlOwogICAgIGlmIChzdGF0aWNfY2FzdDxDb21tb25UeXBlPih2YWwpID4KLSAgICAgICAg
c3RhdGljX2Nhc3Q8Q29tbW9uVHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkp
IHsKLSAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICAgICAg
ICBzdGF0aWNfY2FzdDxDb21tb25UeXBlPigoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgp
KCkpKSB7CisgICAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KSgpOwog
ICAgIH0gZWxzZSBpZiAoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlICYmCiAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxDb21tb25UeXBlPih2YWwpIDwKLSAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxDb21tb25UeXBlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKSkgewot
ICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7CisgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8Q29tbW9uVHlwZT4oKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWluKSgpKSkgeworICAgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1p
bikoKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmFsKTsKICAgfQpAQCAt
NDA5LDcgKzQxMyw3IEBAIGNsYXNzIEZvcm1hdEFyZ0ltcGwgewogICBBQlNMX0lOVEVSTkFMX0ZP
Uk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8oZG91YmxlLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAg
ICAgIFwKICAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGxvbmcg
ZG91YmxlLCBfX1ZBX0FSR1NfXyk7ICAgICAgICBcCiAgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJ
U1BBVENIX0lOU1RBTlRJQVRFXyhjb25zdCBjaGFyKiwgX19WQV9BUkdTX18pOyAgICAgICAgXAot
ICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8oc3RkOjpzdHJpbmcs
IF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQ
QVRDSF9JTlNUQU5USUFURV8oc3RkOjpzdHJpbmcsIF9fVkFfQVJHU19fKTsgICAgICAgIFwKICAg
QUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKHN0cmluZ192aWV3LCBf
X1ZBX0FSR1NfXykKIAogQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfT1ZFUkxPQURTX0VY
UEFORF8oZXh0ZXJuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zv
cm1hdC9hcmdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmdf
dGVzdC5jYwppbmRleCA4M2Q1OTA0OGVhMi4uMzQyMWZhYzExYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmdfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJnX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogI2luY2x1
ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmNjCmluZGV4IGM0ZWRkZDE3ZGRiLi5hMzE4NTll
Y2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuY2MKQEAgLTI1
LDEyICsyNSwxMiBAQCBjbGFzcyBBcmdDb250ZXh0IHsKICAgZXhwbGljaXQgQXJnQ29udGV4dChh
YnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IHBhY2spIDogcGFja18ocGFjaykge30KIAog
ICAvLyBGaWxsICdib3VuZCcgd2l0aCB0aGUgcmVzdWx0cyBvZiBhcHBseWluZyB0aGUgY29udGV4
dCdzIGFyZ3VtZW50IHBhY2sKLSAgLy8gdG8gdGhlIHNwZWNpZmllZCAncHJvcHMnLiBXZSBzeW50
aGVzaXplIGEgQm91bmRDb252ZXJzaW9uIGJ5CisgIC8vIHRvIHRoZSBzcGVjaWZpZWQgJ3VuYm91
bmQnLiBXZSBzeW50aGVzaXplIGEgQm91bmRDb252ZXJzaW9uIGJ5CiAgIC8vIGxpbmluZyB1cCBh
IFVuYm91bmRDb252ZXJzaW9uIHdpdGggYSB1c2VyIGFyZ3VtZW50LiBXZSBhbHNvCiAgIC8vIHJl
c29sdmUgYW55ICcqJyBzcGVjaWZpZXJzIGZvciB3aWR0aCBhbmQgcHJlY2lzaW9uLCBzbyBhZnRl
cgogICAvLyB0aGlzIGNhbGwsICdib3VuZCcgaGFzIGFsbCB0aGUgaW5mb3JtYXRpb24gaXQgbmVl
ZHMgdG8gYmUgZm9ybWF0dGVkLgogICAvLyBSZXR1cm5zIGZhbHNlIG9uIGZhaWx1cmUuCi0gIGJv
b2wgQmluZChjb25zdCBVbmJvdW5kQ29udmVyc2lvbiAqcHJvcHMsIEJvdW5kQ29udmVyc2lvbiAq
Ym91bmQpOworICBib29sIEJpbmQoY29uc3QgVW5ib3VuZENvbnZlcnNpb24qIHVuYm91bmQsIEJv
dW5kQ29udmVyc2lvbiogYm91bmQpOwogCiAgcHJpdmF0ZToKICAgYWJzbDo6U3Bhbjxjb25zdCBG
b3JtYXRBcmdJbXBsPiBwYWNrXzsKQEAgLTUzLDcgKzUzLDggQEAgaW5saW5lIGJvb2wgQXJnQ29u
dGV4dDo6QmluZChjb25zdCBVbmJvdW5kQ29udmVyc2lvbiogdW5ib3VuZCwKICAgICAgICAgLy8g
IkEgbmVnYXRpdmUgZmllbGQgd2lkdGggaXMgdGFrZW4gYXMgYSAnLScgZmxhZyBmb2xsb3dlZCBi
eSBhCiAgICAgICAgIC8vIHBvc2l0aXZlIGZpZWxkIHdpZHRoLiIKICAgICAgICAgZm9yY2VfbGVm
dCA9IHRydWU7Ci0gICAgICAgIHdpZHRoID0gLXdpZHRoOworICAgICAgICAvLyBNYWtlIHN1cmUg
d2UgZG9uJ3Qgb3ZlcmZsb3cgdGhlIHdpZHRoIHdoZW4gbmVnYXRpbmcgaXQuCisgICAgICAgIHdp
ZHRoID0gLXN0ZDo6bWF4KHdpZHRoLCAtc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7
CiAgICAgICB9CiAgICAgfQogCkBAIC0xNTksNyArMTYwLDcgQEAgYm9vbCBCaW5kV2l0aFBhY2so
Y29uc3QgVW5ib3VuZENvbnZlcnNpb24qIHByb3BzLAogfQogCiBzdGQ6OnN0cmluZyBTdW1tYXJp
emUoY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
YWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7CiAgIHR5cGVkZWYg
U3VtbWFyaXppbmdDb252ZXJ0ZXIgQ29udmVydGVyOwogICBzdGQ6OnN0cmluZyBvdXQ7CiAgIHsK
QEAgLTE4Nyw3ICsxODgsNyBAQCBzdGQ6Om9zdHJlYW0mIFN0cmVhbWFibGU6OlByaW50KHN0ZDo6
b3N0cmVhbSYgb3MpIGNvbnN0IHsKIH0KIAogc3RkOjpzdHJpbmcmIEFwcGVuZFBhY2soc3RkOjpz
dHJpbmcqIG91dCwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncykg
ewogICBzaXplX3Qgb3JpZyA9IG91dC0+c2l6ZSgpOwogICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNF
KCFGb3JtYXRVbnR5cGVkKG91dCwgZm9ybWF0LCBhcmdzKSkpIHsKICAgICBvdXQtPmVyYXNlKG9y
aWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmgKaW5kZXggMWI1MmRm
OWM3ZjUuLjdkZjE0MGE0MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0
cl9mb3JtYXQvYmluZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9i
aW5kLmgKQEAgLTcsNyArNyw2IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYWJz
bC9iYXNlL3BvcnQuaCIKLSNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5o
IgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oIgogI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2NoZWNrZXIuaCIKICNpbmNs
dWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuaCIKQEAgLTEzOCw3
ICsxMzcsMTcgQEAgY2xhc3MgU3RyZWFtYWJsZSB7CiAgcHVibGljOgogICBTdHJlYW1hYmxlKGNv
bnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAogICAgICAgICAgICAgIGFic2w6OlNw
YW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncykKLSAgICAgIDogZm9ybWF0Xyhmb3JtYXQpLCBh
cmdzXyhhcmdzLmJlZ2luKCksIGFyZ3MuZW5kKCkpIHt9CisgICAgICA6IGZvcm1hdF8oZm9ybWF0
KSB7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDw9IEFCU0xfQVJSQVlTSVpFKGZld19hcmdzXykpIHsK
KyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkgeworICAgICAg
ICBmZXdfYXJnc19baV0gPSBhcmdzW2ldOworICAgICAgfQorICAgICAgYXJnc18gPSBhYnNsOjpN
YWtlU3BhbihmZXdfYXJnc18sIGFyZ3Muc2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgbWFu
eV9hcmdzXy5hc3NpZ24oYXJncy5iZWdpbigpLCBhcmdzLmVuZCgpKTsKKyAgICAgIGFyZ3NfID0g
bWFueV9hcmdzXzsKKyAgICB9CisgIH0KIAogICBzdGQ6Om9zdHJlYW0mIFByaW50KHN0ZDo6b3N0
cmVhbSYgb3MpIGNvbnN0OwogCkBAIC0xNDgsMTIgKzE1NywxNyBAQCBjbGFzcyBTdHJlYW1hYmxl
IHsKIAogIHByaXZhdGU6CiAgIGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0XzsK
LSAgYWJzbDo6SW5saW5lZFZlY3RvcjxGb3JtYXRBcmdJbXBsLCA0PiBhcmdzXzsKKyAgYWJzbDo6
U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzXzsKKyAgLy8gaWYgYXJnc18uc2l6ZSgpIGlz
IDQgb3IgbGVzczoKKyAgRm9ybWF0QXJnSW1wbCBmZXdfYXJnc19bNF0gPSB7Rm9ybWF0QXJnSW1w
bCgwKSwgRm9ybWF0QXJnSW1wbCgwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Rm9ybWF0QXJnSW1wbCgwKSwgRm9ybWF0QXJnSW1wbCgwKX07CisgIC8vIGlmIGFyZ3NfLnNpemUo
KSBpcyBtb3JlIHRoYW4gNDoKKyAgc3RkOjp2ZWN0b3I8Rm9ybWF0QXJnSW1wbD4gbWFueV9hcmdz
XzsKIH07CiAKIC8vIGZvciB0ZXN0aW5nCiBzdGQ6OnN0cmluZyBTdW1tYXJpemUoVW50eXBlZEZv
cm1hdFNwZWNJbXBsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBG
b3JtYXRBcmdJbXBsPiBhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNv
bnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpOwogYm9vbCBCaW5kV2l0aFBhY2soY29uc3QgVW5ib3Vu
ZENvbnZlcnNpb24qIHByb3BzLAogICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBG
b3JtYXRBcmdJbXBsPiBwYWNrLCBCb3VuZENvbnZlcnNpb24qIGJvdW5kKTsKIApAQCAtMTYyLDEw
ICsxNzYsMTAgQEAgYm9vbCBGb3JtYXRVbnR5cGVkKEZvcm1hdFJhd1NpbmtJbXBsIHJhd19zaW5r
LAogICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJn
cyk7CiAKIHN0ZDo6c3RyaW5nJiBBcHBlbmRQYWNrKHN0ZDo6c3RyaW5nKiBvdXQsIFVudHlwZWRG
b3JtYXRTcGVjSW1wbCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25z
dCBGb3JtYXRBcmdJbXBsPiBhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlNw
YW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncyk7CiAKIGlubGluZSBzdGQ6OnN0cmluZyBGb3Jt
YXRQYWNrKGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+
IGFyZ3MpIHsKICAgc3RkOjpzdHJpbmcgb3V0OwogICBBcHBlbmRQYWNrKCZvdXQsIGZvcm1hdCwg
YXJncyk7CiAgIHJldHVybiBvdXQ7CkBAIC0xNzYsNyArMTkwLDcgQEAgaW50IEZwcmludEYoc3Rk
OjpGSUxFKiBvdXRwdXQsIFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCiBpbnQgU25wcmlu
dEYoY2hhciogb3V0cHV0LCBzaXplX3Qgc2l6ZSwgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1h
dCwKICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpOwog
Ci0vLyBSZXR1cm5lZCBieSBTdHJlYW1lZCh2KS4gQ29udmVydHMgdmlhICclcycgdG8gdGhlIHN0
cmluZyBjcmVhdGVkCisvLyBSZXR1cm5lZCBieSBTdHJlYW1lZCh2KS4gQ29udmVydHMgdmlhICcl
cycgdG8gdGhlIHN0ZDo6c3RyaW5nIGNyZWF0ZWQKIC8vIGJ5IHN0ZDo6b3N0cmVhbSA8PCB2Lgog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBTdHJlYW1lZFdyYXBwZXIgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmRfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kX3Rlc3QuY2MKaW5kZXggNDc1NzU3Mzli
YTEuLjI1NzQ4MDFhNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9m
b3JtYXQvYmluZF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9iaW5kX3Rlc3QuY2MKQEAgLTEsNiArMSw3IEBACiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2lu
dGVybmFsL3N0cl9mb3JtYXQvYmluZC5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8bGltaXRzPgogCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIApAQCAtOCwxNiArOSwxMSBA
QCBuYW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2Ugc3RyX2Zvcm1hdF9pbnRlcm5hbCB7CiBuYW1l
c3BhY2UgewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Ci1zaXplX3QgQXJyYXlT
aXplKFQgKCYpW05dKSB7Ci0gIHJldHVybiBOOwotfQotCiBjbGFzcyBGb3JtYXRCaW5kVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogIHB1YmxpYzoKICAgYm9vbCBFeHRyYWN0KGNvbnN0
IGNoYXIgKnMsIFVuYm91bmRDb252ZXJzaW9uICpwcm9wcywgaW50ICpuZXh0KSBjb25zdCB7Ci0g
ICAgYWJzbDo6c3RyaW5nX3ZpZXcgc3JjID0gczsKLSAgICByZXR1cm4gQ29uc3VtZVVuYm91bmRD
b252ZXJzaW9uKCZzcmMsIHByb3BzLCBuZXh0KSAmJiBzcmMuZW1wdHkoKTsKKyAgICByZXR1cm4g
Q29uc3VtZVVuYm91bmRDb252ZXJzaW9uKHMsIHMgKyBzdHJsZW4ocyksIHByb3BzLCBuZXh0KSA9
PQorICAgICAgICAgICBzICsgc3RybGVuKHMpOwogICB9CiB9OwogCkBAIC05MSw2ICs4NywyMCBA
QCBURVNUX0YoRm9ybWF0QmluZFRlc3QsIEJpbmRTaW5nbGUpIHsKICAgfQogfQogCitURVNUX0Yo
Rm9ybWF0QmluZFRlc3QsIFdpZHRoVW5kZXJmbG93UmVncmVzc2lvbikgeworICBVbmJvdW5kQ29u
dmVyc2lvbiBwcm9wczsKKyAgQm91bmRDb252ZXJzaW9uIGJvdW5kOworICBpbnQgbmV4dCA9IDA7
CisgIGNvbnN0IGludCBhcmdzX2lbXSA9IHtzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigp
LCAxN307CisgIGNvbnN0IEZvcm1hdEFyZ0ltcGwgYXJnc1tdID0ge0Zvcm1hdEFyZ0ltcGwoYXJn
c19pWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0QXJnSW1wbChh
cmdzX2lbMV0pfTsKKyAgQVNTRVJUX1RSVUUoRXh0cmFjdCgiKmQiLCAmcHJvcHMsICZuZXh0KSk7
CisgIEFTU0VSVF9UUlVFKEJpbmRXaXRoUGFjaygmcHJvcHMsIGFyZ3MsICZib3VuZCkpOworCisg
IEVYUEVDVF9FUShib3VuZC53aWR0aCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
KTsKKyAgRVhQRUNUX0VRKGJvdW5kLmFyZygpLCBhcmdzICsgMSk7Cit9CisKIFRFU1RfRihGb3Jt
YXRCaW5kVGVzdCwgRm9ybWF0UGFjaykgewogICBzdHJ1Y3QgRXhwZWN0YXRpb24gewogICAgIGlu
dCBsaW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2No
ZWNrZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9jaGVja2Vy
X3Rlc3QuY2MKaW5kZXggMTRkMTFlYThiZDMuLmMxZDhjNzY5ZWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvY2hlY2tlcl90ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9jaGVja2VyX3Rlc3QuY2MKQEAgLTYyLDMyICs2
MiwzMiBAQCBURVNUKFN0ckZvcm1hdENoZWNrZXIsIFZhbGlkRm9ybWF0KSB7CiAgICAgICBWYWxp
ZEZvcm1hdDxpbnQ+KCIlJSAlZCIpLCAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICBW
YWxpZEZvcm1hdDxpbnQ+KCIlbGQiKSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAg
ICBWYWxpZEZvcm1hdDxpbnQ+KCIlbGxkIiksICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0g
ICAgICBWYWxpZEZvcm1hdDxzdGQ6OnN0cmluZz4oIiVzIiksICAgICAgICAgICAgICAgICAgICAg
ICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PHN0ZDo6c3RyaW5nPigiJTEwcyIpLCAgICAgICAgICAg
ICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8c3RkOjpzdHJpbmc+KCIlcyIpLCAgICAg
ICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8c3RkOjpzdHJpbmc+KCIlMTBzIiks
ICAgICAgICAgICAgICAgICAvLwogICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJS4xMHgiKSwgICAg
ICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgVmFsaWRGb3JtYXQ8aW50LCBpbnQ+KCIlKi4z
eCIpLCAgICAgICAgICAgICAgICAgICAvLwogICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEuZCIp
LCAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJS5k
IiksICAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgVmFsaWRGb3JtYXQ8aW50LCBk
b3VibGU+KCIlZCAlZyIpLCAgICAgICAgICAgICAgICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50
LCBzdGQ6OnN0cmluZz4oIiUqcyIpLCAgICAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZv
cm1hdDxpbnQsIHN0ZDo6c3RyaW5nPigiJSpzIiksICAgICAgICAgICAgIC8vCiAgICAgICBWYWxp
ZEZvcm1hdDxpbnQsIGRvdWJsZT4oIiUuKmYiKSwgICAgICAgICAgICAgICAgIC8vCiAgICAgICBW
YWxpZEZvcm1hdDx2b2lkICgqKSgpLCB2b2xhdGlsZSBpbnQqPigiJXAgJXAiKSwgIC8vCiAgICAg
ICBWYWxpZEZvcm1hdDxzdHJpbmdfdmlldywgY29uc3QgY2hhciosIGRvdWJsZSwgdm9pZCo+KAog
ICAgICAgICAgICJzdHJpbmdfdmlldz0lcyBjb25zdCBjaGFyKj0lcyBkb3VibGU9JWYgdm9pZCo9
JXApIiksCiAKLSAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUlICUxJGQiKSwgICAgICAgICAgICAv
LwotICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEkbGQiKSwgICAgICAgICAgICAgIC8vCi0gICAg
ICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSRsbGQiKSwgICAgICAgICAgICAgLy8KLSAgICAgIFZhbGlk
Rm9ybWF0PHN0ZDo6c3RyaW5nPigiJTEkcyIpLCAgICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZv
cm1hdDxzdGQ6OnN0cmluZz4oIiUxJDEwcyIpLCAgICAgICAgICAvLwotICAgICAgVmFsaWRGb3Jt
YXQ8aW50PigiJTEkLjEweCIpLCAgICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQ+
KCIlMSQqMSQuKjEkZCIpLCAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGludCwgaW50Pigi
JTEkKjIkLjN4IiksICAgICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEkMS5kIiksICAg
ICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSQuZCIpLCAgICAgICAgICAg
ICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGRvdWJsZSwgaW50PigiJTIkZCAlMSRnIiksICAvLwot
ICAgICAgVmFsaWRGb3JtYXQ8aW50LCBzdGQ6OnN0cmluZz4oIiUyJCoxJHMiKSwgICAgLy8KLSAg
ICAgIFZhbGlkRm9ybWF0PGludCwgZG91YmxlPigiJTIkLioxJGYiKSwgICAvLworICAgICAgVmFs
aWRGb3JtYXQ8aW50PigiJSUgJTEkZCIpLCAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZv
cm1hdDxpbnQ+KCIlMSRsZCIpLCAgICAgICAgICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0
PGludD4oIiUxJGxsZCIpLCAgICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8c3Rk
OjpzdHJpbmc+KCIlMSRzIiksICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxzdGQ6OnN0
cmluZz4oIiUxJDEwcyIpLCAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUxJC4x
MHgiKSwgICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEkKjEkLiox
JGQiKSwgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQsIGludD4oIiUxJCoyJC4z
eCIpLCAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUxJDEuZCIpLCAgICAgICAg
ICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEkLmQiKSwgICAgICAgICAgICAg
ICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxkb3VibGUsIGludD4oIiUyJGQgJTEkZyIpLCAgICAg
Ly8KKyAgICAgIFZhbGlkRm9ybWF0PGludCwgc3RkOjpzdHJpbmc+KCIlMiQqMSRzIiksICAvLwor
ICAgICAgVmFsaWRGb3JtYXQ8aW50LCBkb3VibGU+KCIlMiQuKjEkZiIpLCAgICAgIC8vCiAgICAg
ICBWYWxpZEZvcm1hdDx2b2lkKiwgc3RyaW5nX3ZpZXcsIGNvbnN0IGNoYXIqLCBkb3VibGU+KAog
ICAgICAgICAgICJzdHJpbmdfdmlldz0lMiRzIGNvbnN0IGNoYXIqPSUzJHMgZG91YmxlPSU0JGYg
dm9pZCo9JTEkcCAiCiAgICAgICAgICAgInJlcGVhdD0lMyRzKSIpfTsKQEAgLTk5LDI1ICs5OSwy
NSBAQCBURVNUKFN0ckZvcm1hdENoZWNrZXIsIFZhbGlkRm9ybWF0KSB7CiAgIGNvbnN0ZXhwciBD
YXNlIGZhbHNlc1tdID0gewogICAgICAgVmFsaWRGb3JtYXQ8aW50PigiIiksICAvLwogCi0gICAg
ICBWYWxpZEZvcm1hdDxlPigiJXMiKSwgICAgICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0
PGUyPigiJXMiKSwgICAgICAgICAgICAvLwotICAgICAgVmFsaWRGb3JtYXQ8PigiJXMiKSwgICAg
ICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDw+KCIlciIpLCAgICAgICAgICAgICAgLy8K
LSAgICAgIFZhbGlkRm9ybWF0PGludD4oIiVzIiksICAgICAgICAgICAvLwotICAgICAgVmFsaWRG
b3JtYXQ8aW50PigiJS4xLmQiKSwgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIl
KjFkIiksICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUxLWQiKSwgICAgICAg
ICAvLworICAgICAgVmFsaWRGb3JtYXQ8ZT4oIiVzIiksICAgICAgICAgICAgICAgICAgLy8KKyAg
ICAgIFZhbGlkRm9ybWF0PGUyPigiJXMiKSwgICAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxp
ZEZvcm1hdDw+KCIlcyIpLCAgICAgICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8
PigiJXIiKSwgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGludD4oIiVz
IiksICAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlLjEuZCIpLCAg
ICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJSoxZCIpLCAgICAgICAgICAg
ICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUxLWQiKSwgICAgICAgICAgICAgIC8vCiAg
ICAgICBWYWxpZEZvcm1hdDxzdGQ6OnN0cmluZywgaW50PigiJSpzIiksICAvLwotICAgICAgVmFs
aWRGb3JtYXQ8aW50PigiJSpkIiksICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQ+
KCIlKmQiKSwgICAgICAgICAgICAgICAvLwogICAgICAgVmFsaWRGb3JtYXQ8c3RkOjpzdHJpbmc+
KCIlcCIpLCAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGludCAoKikoaW50KT4oIiVkIiks
ICAvLwotCi0gICAgICBWYWxpZEZvcm1hdDw+KCIlMyRkIiksICAgICAgICAgICAgICAgIC8vCi0g
ICAgICBWYWxpZEZvcm1hdDw+KCIlMSRyIiksICAgICAgICAgICAgICAgIC8vCi0gICAgICBWYWxp
ZEZvcm1hdDxpbnQ+KCIlMSRzIiksICAgICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxp
bnQ+KCIlMSQuMS5kIiksICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSQq
MiQxZCIpLCAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSQxLWQiKSwgICAg
ICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQgKCopKGludCk+KCIlZCIpLCAgICAgICAv
LworCisgICAgICBWYWxpZEZvcm1hdDw+KCIlMyRkIiksICAgICAgICAgICAgICAgICAgICAgLy8K
KyAgICAgIFZhbGlkRm9ybWF0PD4oIiUxJHIiKSwgICAgICAgICAgICAgICAgICAgICAvLworICAg
ICAgVmFsaWRGb3JtYXQ8aW50PigiJTEkcyIpLCAgICAgICAgICAgICAgICAgIC8vCisgICAgICBW
YWxpZEZvcm1hdDxpbnQ+KCIlMSQuMS5kIiksICAgICAgICAgICAgICAgLy8KKyAgICAgIFZhbGlk
Rm9ybWF0PGludD4oIiUxJCoyJDFkIiksICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3Jt
YXQ8aW50PigiJTEkMS1kIiksICAgICAgICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxz
dGQ6OnN0cmluZywgaW50PigiJTIkKjEkcyIpLCAgLy8KICAgICAgIFZhbGlkRm9ybWF0PHN0ZDo6
c3RyaW5nPigiJTEkcCIpLAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0
cl9mb3JtYXQvY29udmVydF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9y
bWF0L2NvbnZlcnRfdGVzdC5jYwppbmRleCAzMmY4YTBmOWFkMS4uODE0Y2NmNGM2NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9jb252ZXJ0X3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2NvbnZlcnRfdGVzdC5jYwpA
QCAtMSw2ICsxLDcgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgog
I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8Y2N0eXBlPgogI2luY2x1ZGUgPGNtYXRoPgog
I2luY2x1ZGUgPHN0cmluZz4KIApAQCAtMzIsNyArMzMsOSBAQCBzdGQ6OnN0cmluZyBMZW5ndGhN
b2RGb3IobG9uZyBsb25nKSB7IHJldHVybiAibGwiOyB9ICAgICAgICAgICAvLyBOT0xJTlQKIHN0
ZDo6c3RyaW5nIExlbmd0aE1vZEZvcih1bnNpZ25lZCBsb25nIGxvbmcpIHsgcmV0dXJuICJsbCI7
IH0gIC8vIE5PTElOVAogCiBzdGQ6OnN0cmluZyBFc2NDaGFySW1wbChpbnQgdikgewotICBpZiAo
aXNwcmludCh2KSkgcmV0dXJuIHN0ZDo6c3RyaW5nKDEsIHN0YXRpY19jYXN0PGNoYXI+KHYpKTsK
KyAgaWYgKHN0ZDo6aXNwcmludChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2KSkpIHsKKyAg
ICByZXR1cm4gc3RkOjpzdHJpbmcoMSwgc3RhdGljX2Nhc3Q8Y2hhcj4odikpOworICB9CiAgIGNo
YXIgYnVmWzY0XTsKICAgaW50IG4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiXFwlIy4y
eCIsCiAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYgJiAweGZmKSk7
CkBAIC0xNTUsNyArMTU4LDcgQEAgVEVTVF9GKEZvcm1hdENvbnZlcnRUZXN0LCBTdHJpbmdQcmVj
aXNpb24pIHsKIH0KIAogVEVTVF9GKEZvcm1hdENvbnZlcnRUZXN0LCBQb2ludGVyKSB7Ci0jaWYg
X01TQ19WRVIKKyNpZmRlZiBfTVNDX1ZFUgogICAvLyBNU1ZDJ3MgcHJpbnRmIGltcGxlbWVudGF0
aW9uIHByaW50cyBwb2ludGVycyBkaWZmZXJlbnRseS4gV2UgY2FuJ3QgZWFzaWx5CiAgIC8vIGNv
bXBhcmUgb3VyIGltcGxlbWVudGF0aW9uIHRvIHRoZWlycy4KICAgcmV0dXJuOwpAQCAtMjMyLDcg
KzIzNSw3IEBAIFRFU1RfRihGb3JtYXRDb252ZXJ0VGVzdCwgRW51bSkgewogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBjbGFzcyBUeXBlZEZvcm1hdENvbnZlcnRUZXN0IDogcHVibGljIEZvcm1hdENv
bnZlcnRUZXN0IHsgfTsKIAotVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRGb3JtYXRDb252ZXJ0VGVz
dCk7CitUWVBFRF9URVNUX1NVSVRFX1AoVHlwZWRGb3JtYXRDb252ZXJ0VGVzdCk7CiAKIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiBBbGxGbGFnQ29tYmluYXRpb25zKCkgewogICBjb25zdCBjaGFy
IGtGbGFnc1tdID0geyctJywgJyMnLCAnMCcsICcrJywgJyAnfTsKQEAgLTM2Myw2ICszNjYsMTgg
QEAgdHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPAogICAgIEFsbEludFR5cGVzOwogSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRGb3JtYXRDb252ZXJ0VGVzdFdpdGhBbGxJbnRUeXBl
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVkRm9ybWF0Q29udmVydFRlc3Qs
IEFsbEludFR5cGVzKTsKKworVEVTVF9GKEZvcm1hdENvbnZlcnRUZXN0LCBWZWN0b3JCb29sKSB7
CisgIC8vIE1ha2Ugc3VyZSB2ZWN0b3I8Ym9vbD4ncyB2YWx1ZXMgYmVoYXZlIGFzIGJvb2xzLgor
ICBzdGQ6OnZlY3Rvcjxib29sPiB2ID0ge3RydWUsIGZhbHNlfTsKKyAgY29uc3Qgc3RkOjp2ZWN0
b3I8Ym9vbD4gY3YgPSB7dHJ1ZSwgZmFsc2V9OworICBFWFBFQ1RfRVEoIjEsMCwxLDAiLAorICAg
ICAgICAgICAgRm9ybWF0UGFjayhVbnR5cGVkRm9ybWF0U3BlY0ltcGwoIiVkLCVkLCVkLCVkIiks
CisgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICB7Rm9ybWF0QXJnSW1wbCh2WzBdKSwgRm9ybWF0
QXJnSW1wbCh2WzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRBcmdJbXBs
KGN2WzBdKSwgRm9ybWF0QXJnSW1wbChjdlsxXSl9KSkpOworfQorCiBURVNUX0YoRm9ybWF0Q29u
dmVydFRlc3QsIFVpbnQxMjgpIHsKICAgYWJzbDo6dWludDEyOCB2ID0gc3RhdGljX2Nhc3Q8YWJz
bDo6dWludDEyOD4oMHgxMjM0NTY3ODkwYWJjZGVmKSAqIDE5Nzk7CiAgIGFic2w6OnVpbnQxMjgg
bWF4ID0gYWJzbDo6VWludDEyOE1heCgpOwpAQCAtMzg5LDcgKzQwNCw3IEBAIFRFU1RfRihGb3Jt
YXRDb252ZXJ0VGVzdCwgVWludDEyOCkgewogfQogCiBURVNUX0YoRm9ybWF0Q29udmVydFRlc3Qs
IEZsb2F0KSB7Ci0jaWYgX01TQ19WRVIKKyNpZmRlZiBfTVNDX1ZFUgogICAvLyBNU1ZDIGhhcyBh
IGRpZmZlcmVudCByb3VuZGluZyBwb2xpY3kgdGhhbiB1cyBzbyB3ZSBjYW4ndCB0ZXN0IG91cgog
ICAvLyBpbXBsZW1lbnRhdGlvbiBhZ2FpbnN0IHRoZSBuYXRpdmUgb25lIHRoZXJlLgogICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5z
aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5jYwpp
bmRleCBjMjE3NDcwM2MzZS4uZDdmNTgxNTlkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5jYwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
IC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9y
bWF0L2V4dGVuc2lvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVu
c2lvbi5oCmluZGV4IDExYjk5NmFlZmQzLi5lYjgxZjhhMTdjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTMsNyArMTMsNiBAQAogLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAvLwotLy8KICNpZm5kZWYgQUJTTF9TVFJJ
TkdTX0lOVEVSTkFMX1NUUl9GT1JNQVRfRVhURU5TSU9OX0hfCiAjZGVmaW5lIEFCU0xfU1RSSU5H
U19JTlRFUk5BTF9TVFJfRk9STUFUX0VYVEVOU0lPTl9IXwogCkBAIC0zNjAsNyArMzU5LDcgQEAg
ZW51bSBjbGFzcyBDb252IDogdWludDY0X3QgewogICBpbnRlZ3JhbCA9IGQgfCBpIHwgdSB8IG8g
fCB4IHwgWCwKICAgZmxvYXRpbmcgPSBhIHwgZSB8IGYgfCBnIHwgQSB8IEUgfCBGIHwgRywKICAg
bnVtZXJpYyA9IGludGVncmFsIHwgZmxvYXRpbmcsCi0gIHN0cmluZyA9IHMsICAvLyBhYnNsOmln
bm9yZShzdGQ6OnN0cmluZykKKyAgc3RyaW5nID0gcywKICAgcG9pbnRlciA9IHAKIH07CiAKQEAg
LTQwOSw0ICs0MDgsNCBAQCBpbmxpbmUgc2l6ZV90IEV4Y2VzcyhzaXplX3QgdXNlZCwgc2l6ZV90
IGNhcGFjaXR5KSB7CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKLSNlbmRpZiAgLy8gQUJTTF9T
VFJJTkdTX1NUUl9GT1JNQVRfRVhURU5TSU9OX0hfCisjZW5kaWYgIC8vIEFCU0xfU1RSSU5HU19J
TlRFUk5BTF9TVFJfRk9STUFUX0VYVEVOU0lPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbl90ZXN0LmNjCmluZGV4IDIyNGZjOTIzZDNlLi40
ZTIzZmVmYmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0
L2V4dGVuc2lvbl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9leHRlbnNpb25fdGVzdC5jYwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTgsNiArMTgsNyBAQAogCiAjaW5jbHVkZSA8cmFuZG9tPgogI2luY2x1ZGUgPHN0
cmluZz4KKwogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgiCiAKICNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJf
Zm9ybWF0L2Zsb2F0X2NvbnZlcnNpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9m
b3JtYXQvZmxvYXRfY29udmVyc2lvbi5jYwppbmRleCA2MTc2ZGI5Y2I1YS4uOTIzNmFjZGM3NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9mbG9hdF9jb252
ZXJzaW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9mbG9hdF9j
b252ZXJzaW9uLmNjCkBAIC02LDYgKzYsOCBAQAogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUg
PHN0cmluZz4KIAorI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKKwogbmFtZXNwYWNlIGFi
c2wgewogbmFtZXNwYWNlIHN0cl9mb3JtYXRfaW50ZXJuYWwgewogCkBAIC0zMzQsNyArMzM2LDcg
QEAgYm9vbCBGbG9hdFRvQnVmZmVyKERlY29tcG9zZWQ8RmxvYXQ+IGRlY29tcG9zZWQsIGludCBw
cmVjaXNpb24sIEJ1ZmZlciAqb3V0LAogICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6dWludDY0
X3Q+KGRlY29tcG9zZWQuZXhwb25lbnQpLCBwcmVjaXNpb24sIG91dCwgZXhwKSkKICAgICByZXR1
cm4gdHJ1ZTsKIAotI2lmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCisjaWYgZGVmaW5lZChB
QlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOCkKICAgLy8gSWYgdGhhdCBpcyBub3QgZW5vdWdoLCB0
cnkgd2l0aCBfX3VpbnQxMjhfdC4KICAgcmV0dXJuIENhbkZpdE1hbnRpc3NhPEZsb2F0LCBfX3Vp
bnQxMjhfdD4oKSAmJgogICAgICAgICAgRmxvYXRUb0J1ZmZlckltcGw8X191aW50MTI4X3QsIEZs
b2F0LCBtb2RlPigKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9vdXRwdXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0LmNj
CmluZGV4IDVjMzc5NWI3MzdjLi4zODk4N2I2Mzg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL3N0cl9mb3JtYXQvb3V0cHV0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0yMCw2ICsyMCwxNiBAQAogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNl
IHN0cl9mb3JtYXRfaW50ZXJuYWwgewogCituYW1lc3BhY2Ugeworc3RydWN0IENsZWFyRXJybm9H
dWFyZCB7CisgIENsZWFyRXJybm9HdWFyZCgpIDogb2xkX3ZhbHVlKGVycm5vKSB7IGVycm5vID0g
MDsgfQorICB+Q2xlYXJFcnJub0d1YXJkKCkgeworICAgIGlmICghZXJybm8pIGVycm5vID0gb2xk
X3ZhbHVlOworICB9CisgIGludCBvbGRfdmFsdWU7Cit9OworfSAgLy8gbmFtZXNwYWNlCisKIHZv
aWQgQnVmZmVyUmF3U2luazo6V3JpdGUoc3RyaW5nX3ZpZXcgdikgewogICBzaXplX3QgdG9fd3Jp
dGUgPSBzdGQ6Om1pbih2LnNpemUoKSwgc2l6ZV8pOwogICBzdGQ6Om1lbWNweShidWZmZXJfLCB2
LmRhdGEoKSwgdG9fd3JpdGUpOwpAQCAtMzAsMTQgKzQwLDI3IEBAIHZvaWQgQnVmZmVyUmF3U2lu
azo6V3JpdGUoc3RyaW5nX3ZpZXcgdikgewogCiB2b2lkIEZJTEVSYXdTaW5rOjpXcml0ZShzdHJp
bmdfdmlldyB2KSB7CiAgIHdoaWxlICghdi5lbXB0eSgpICYmICFlcnJvcl8pIHsKKyAgICAvLyBS
ZXNldCBlcnJubyB0byB6ZXJvIGluIGNhc2UgdGhlIGxpYmMgaW1wbGVtZW50YXRpb24gZG9lc24n
dCBzZXQgZXJybm8KKyAgICAvLyB3aGVuIGEgZmFpbHVyZSBvY2N1cnMuCisgICAgQ2xlYXJFcnJu
b0d1YXJkIGd1YXJkOworCiAgICAgaWYgKHNpemVfdCByZXN1bHQgPSBzdGQ6OmZ3cml0ZSh2LmRh
dGEoKSwgMSwgdi5zaXplKCksIG91dHB1dF8pKSB7CiAgICAgICAvLyBTb21lIHByb2dyZXNzIHdh
cyBtYWRlLgogICAgICAgY291bnRfICs9IHJlc3VsdDsKICAgICAgIHYucmVtb3ZlX3ByZWZpeChy
ZXN1bHQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAvLyBTb21lIGVycm9yIG9jY3VycmVkLgotICAg
ICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CisgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKKyAg
ICAgICAgY29udGludWU7CisgICAgICB9IGVsc2UgaWYgKGVycm5vKSB7CiAgICAgICAgIGVycm9y
XyA9IGVycm5vOworICAgICAgfSBlbHNlIGlmIChzdGQ6OmZlcnJvcihvdXRwdXRfKSkgeworICAg
ICAgICAvLyBOb24tUE9TSVggY29tcGxpYW50IGxpYmMgaW1wbGVtZW50YXRpb25zIG1heSBub3Qg
c2V0IGVycm5vLCBzbyB3ZQorICAgICAgICAvLyBoYXZlIGNoZWNrIHRoZSBzdHJlYW1zIGVycm9y
IGluZGljYXRvci4KKyAgICAgICAgZXJyb3JfID0gRUJBREY7CisgICAgICB9IGVsc2UgeworICAg
ICAgICAvLyBXZSdyZSBsaWtlbHkgb24gYSBub24tUE9TSVggc3lzdGVtIHRoYXQgZW5jb3VudGVy
ZWQgRUlOVFIgYnV0IGhhZCBubworICAgICAgICAvLyB3YXkgb2YgcmVwb3J0aW5nIGl0LgorICAg
ICAgICBjb250aW51ZTsKICAgICAgIH0KICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvc3RyX2Zvcm1hdC9vdXRwdXQuaAppbmRleCAxMmVjZDk5ZTY4MC4uNDJkYTY0MTdiZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0LmgKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvc3RyX2Zvcm1hdC9vdXRwdXRfdGVzdC5jYwppbmRleCBjYzNjNjE1NTU3Zi4uNmUwNGFiZWY0
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXRf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0X3Rl
c3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE3LDcg
KzE3LDYgQEAKICNpbmNsdWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHN0cmluZz4KIAotCiAjaW5j
bHVkZSAiZ21vY2svZ21vY2suaCIKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCkBAIC0yOCwx
MiArMjcsNiBAQCBURVNUKEludm9rZUZsdXNoLCBTdHJpbmcpIHsKICAgc3RkOjpzdHJpbmcgc3Ry
ID0gIkFCQyI7CiAgIHN0cl9mb3JtYXRfaW50ZXJuYWw6Okludm9rZUZsdXNoKCZzdHIsICJERUYi
KTsKICAgRVhQRUNUX0VRKHN0ciwgIkFCQ0RFRiIpOwotCi0jaWYgVVRJTF9GT1JNQVRfSEFTX0dM
T0JBTF9TVFJJTkcKLSAgc3RkOjpzdHJpbmcgc3RyMiA9ICJBQkMiOwotICBzdHJfZm9ybWF0X2lu
dGVybmFsOjpJbnZva2VGbHVzaCgmc3RyMiwgIkRFRiIpOwotICBFWFBFQ1RfRVEoc3RyMiwgIkFC
Q0RFRiIpOwotI2VuZGlmICAvLyBVVElMX0ZPUk1BVF9IQVNfR0xPQkFMX1NUUklORwogfQogCiBU
RVNUKEludm9rZUZsdXNoLCBTdHJlYW0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9m
b3JtYXQvcGFyc2VyLmNjCmluZGV4IDVlM2QwZDA1NDdkLi45ZWY1NjE1Y2M5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmNjCkBAIC0xNSw2ICsxNSw0NCBA
QAogCiBuYW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2Ugc3RyX2Zvcm1hdF9pbnRlcm5hbCB7CisK
K3VzaW5nIENDID0gQ29udmVyc2lvbkNoYXI6OklkOwordXNpbmcgTE0gPSBMZW5ndGhNb2Q6Oklk
OworQUJTTF9DT05TVF9JTklUIGNvbnN0IENvbnZUYWcga1RhZ3NbMjU2XSA9IHsKKyAgICB7fSwg
ICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyAw
MC0wNworICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAg
ICB7fSwgICAgIC8vIDA4LTBmCisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAg
ICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gMTAtMTcKKyAgICB7fSwgICAge30sICAgIHt9LCAg
ICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyAxOC0xZgorICAgIHt9LCAg
ICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIDIw
LTI3CisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAg
IHt9LCAgICAgLy8gMjgtMmYKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAg
IHt9LCAgICB7fSwgICAge30sICAgICAvLyAzMC0zNworICAgIHt9LCAgICB7fSwgICAge30sICAg
IHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIDM4LTNmCisgICAge30sICAg
IENDOjpBLCB7fSwgICAgQ0M6OkMsIHt9LCAgICBDQzo6RSwgQ0M6OkYsIENDOjpHLCAgLy8gQEFC
Q0RFRkcKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgTE06OkwsIHt9LCAgICB7fSwg
ICAge30sICAgICAvLyBISUpLTE1OTworICAgIHt9LCAgICB7fSwgICAge30sICAgIENDOjpTLCB7
fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIFBRUlNUVVZXCisgICAgQ0M6OlgsIHt9LCAg
ICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gWFlaW1xdXl8K
KyAgICB7fSwgICAgQ0M6OmEsIHt9LCAgICBDQzo6YywgQ0M6OmQsIENDOjplLCBDQzo6ZiwgQ0M6
OmcsICAvLyBgYWJjZGVmZworICAgIExNOjpoLCBDQzo6aSwgTE06OmosIHt9LCAgICBMTTo6bCwg
e30sICAgIENDOjpuLCBDQzo6bywgIC8vIGhpamtsbW5vCisgICAgQ0M6OnAsIExNOjpxLCB7fSwg
ICAgQ0M6OnMsIExNOjp0LCBDQzo6dSwge30sICAgIHt9LCAgICAgLy8gcHFyc3R1dncKKyAgICBD
Qzo6eCwge30sICAgIExNOjp6LCB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAv
LyB4eXp7fH0hCisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAg
e30sICAgIHt9LCAgICAgLy8gODAtODcKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAg
e30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyA4OC04ZgorICAgIHt9LCAgICB7fSwgICAg
e30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIDkwLTk3CisgICAg
e30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAg
Ly8gOTgtOWYKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7
fSwgICAge30sICAgICAvLyBhMC1hNworICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7
fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIGE4LWFmCisgICAge30sICAgIHt9LCAgICB7
fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gYjAtYjcKKyAgICB7
fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAv
LyBiOC1iZgorICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9
LCAgICB7fSwgICAgIC8vIGMwLWM3CisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9
LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gYzgtY2YKKyAgICB7fSwgICAge30sICAgIHt9
LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyBkMC1kNworICAgIHt9
LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8v
IGQ4LWRmCisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30s
ICAgIHt9LCAgICAgLy8gZTAtZTcKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30s
ICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyBlOC1lZgorICAgIHt9LCAgICB7fSwgICAge30s
ICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIGYwLWY3CisgICAge30s
ICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8g
ZjgtZmYKK307CisKIG5hbWVzcGFjZSB7CiAKIGJvb2wgQ2hlY2tGYXN0UGF0aFNldHRpbmcoY29u
c3QgVW5ib3VuZENvbnZlcnNpb24mIGNvbnYpIHsKQEAgLTM2LDYwICs3NCwxNyBAQCBib29sIENo
ZWNrRmFzdFBhdGhTZXR0aW5nKGNvbnN0IFVuYm91bmRDb252ZXJzaW9uJiBjb252KSB7CiAgIHJl
dHVybiBzaG91bGRfYmVfYmFzaWMgPT0gY29udi5mbGFncy5iYXNpYzsKIH0KIAotLy8gS2VlcCBh
IHNpbmdsZSB0YWJsZSBmb3IgYWxsIHRoZSBjb252ZXJzaW9uIGNoYXJzIGFuZCBsZW5ndGggbW9k
aWZpZXJzLgotLy8gV2UgaW52ZXJ0IHRoZSBsZW5ndGggbW9kaWZpZXJzIHRvIG1ha2UgdGhlbSBu
ZWdhdGl2ZSBzbyB0aGF0IHdlIGNhbiBlYXNpbHkKLS8vIHRlc3QgZm9yIHRoZW0uCi0vLyBFdmVy
eXRoaW5nIGVsc2UgaXMgYG5vbmVgLCB3aGljaCBpcyBhIG5lZ2F0aXZlIGNvbnN0YW50LgotdXNp
bmcgQ0MgPSBDb252ZXJzaW9uQ2hhcjo6SWQ7Ci11c2luZyBMTSA9IExlbmd0aE1vZDo6SWQ7Ci1z
dGF0aWMgY29uc3RleHByIHN0ZDo6aW50OF90IG5vbmUgPSAtMTI4Owotc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmludDhfdCBrSWRzW10gPSB7Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9u
ZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDAwLTA3Ci0gICAgbm9uZSwgICBu
b25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDA4
LTBmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5v
bmUsICBub25lLCAgIC8vIDEwLTE3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwg
IG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDE4LTFmCi0gICAgbm9uZSwgICBub25l
LCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDIwLTI3
Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUs
ICBub25lLCAgIC8vIDI4LTJmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5v
bmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDMwLTM3Ci0gICAgbm9uZSwgICBub25lLCAg
IG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDM4LTNmCi0g
ICAgbm9uZSwgICBDQzo6QSwgIG5vbmUsICAgQ0M6OkMsIG5vbmUsICAgQ0M6OkUsIENDOjpGLCBD
Qzo6RywgIC8vIEBBQkNERUZHCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIH5M
TTo6TCwgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIEhJSktMTU5PCi0gICAgbm9uZSwgICBub25l
LCAgIG5vbmUsICAgQ0M6OlMsIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIFBRUlNU
VVZXCi0gICAgQ0M6OlgsICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5v
bmUsICBub25lLCAgIC8vIFhZWltcXV5fCi0gICAgbm9uZSwgICBDQzo6YSwgIG5vbmUsICAgQ0M6
OmMsIENDOjpkLCAgQ0M6OmUsIENDOjpmLCBDQzo6ZywgIC8vIGBhYmNkZWZnCi0gICAgfkxNOjpo
LCBDQzo6aSwgIH5MTTo6aiwgbm9uZSwgIH5MTTo6bCwgbm9uZSwgIENDOjpuLCBDQzo6bywgIC8v
IGhpamtsbW5vCi0gICAgQ0M6OnAsICB+TE06OnEsIG5vbmUsICAgQ0M6OnMsIH5MTTo6dCwgQ0M6
OnUsIG5vbmUsICBub25lLCAgIC8vIHBxcnN0dXZ3Ci0gICAgQ0M6OngsICBub25lLCAgIH5MTTo6
eiwgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIHh5ent8fX4hCi0gICAg
bm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25l
LCAgIC8vIDgwLTg3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAg
bm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDg4LThmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUs
ICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDkwLTk3Ci0gICAgbm9u
ZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAg
IC8vIDk4LTlmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9u
ZSwgIG5vbmUsICBub25lLCAgIC8vIGEwLWE3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAg
bm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGE4LWFmCi0gICAgbm9uZSwg
ICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8v
IGIwLWI3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwg
IG5vbmUsICBub25lLCAgIC8vIGI4LWJmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9u
ZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGMwLWM3Ci0gICAgbm9uZSwgICBu
b25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGM4
LWNmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5v
bmUsICBub25lLCAgIC8vIGQwLWQ3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwg
IG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGQ4LWRmCi0gICAgbm9uZSwgICBub25l
LCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGUwLWU3
Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUs
ICBub25lLCAgIC8vIGU4LWVmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5v
bmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGYwLWY3Ci0gICAgbm9uZSwgICBub25lLCAg
IG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGY4LWZmCi19
OwotCiB0ZW1wbGF0ZSA8Ym9vbCBpc19wb3NpdGlvbmFsPgotYm9vbCBDb25zdW1lQ29udmVyc2lv
bihzdHJpbmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lvbiAqY29udiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgaW50ICpuZXh0X2FyZykgewotICBjb25zdCBjaGFyICpwb3MgPSBzcmMtPmRh
dGEoKTsKLSAgY29uc3QgY2hhciAqY29uc3QgZW5kID0gcG9zICsgc3JjLT5zaXplKCk7Citjb25z
dCBjaGFyICpDb25zdW1lQ29udmVyc2lvbihjb25zdCBjaGFyICpwb3MsIGNvbnN0IGNoYXIgKmNv
bnN0IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuYm91bmRDb252ZXJzaW9u
ICpjb252LCBpbnQgKm5leHRfYXJnKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IG9yaWdpbmFsX3Bv
cyA9IHBvczsKICAgY2hhciBjOwogICAvLyBSZWFkIHRoZSBuZXh0IGNoYXIgaW50byBgY2AgYW5k
IHVwZGF0ZSBgcG9zYC4gUmV0dXJucyBmYWxzZSBpZiB0aGVyZSBhcmUKICAgLy8gbm8gbW9yZSBj
aGFycyB0byByZWFkLgotI2RlZmluZSBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NI
QVIoKSAgICAgICAgXAotICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UocG9zID09IGVuZCkpIHJl
dHVybiBmYWxzZTsgXAotICAgIGMgPSAqcG9zKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorI2RlZmluZSBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NI
QVIoKSAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHBvcyA9PSBlbmQp
KSByZXR1cm4gbnVsbHB0cjsgXAorICAgIGMgPSAqcG9zKys7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgIH0gd2hpbGUgKDApCiAKICAgY29uc3QgYXV0byBwYXJz
ZV9kaWdpdHMgPSBbJl0gewpAQCAtOTksMTAgKzk0LDExIEBAIGJvb2wgQ29uc3VtZUNvbnZlcnNp
b24oc3RyaW5nX3ZpZXcgKnNyYywgVW5ib3VuZENvbnZlcnNpb24gKmNvbnYsCiAgICAgLy8gZGln
aXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgY2hhcmFjdGVycy4KICAgICBpbnQgbnVtX2Rp
Z2l0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6ZGlnaXRzMTA7CiAgICAgZm9yICg7Oykg
ewotICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShwb3MgPT0gZW5kIHx8ICFudW1fZGlnaXRz
KSkgYnJlYWs7CisgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHBvcyA9PSBlbmQpKSBicmVh
azsKICAgICAgIGMgPSAqcG9zKys7CiAgICAgICBpZiAoIXN0ZDo6aXNkaWdpdChjKSkgYnJlYWs7
CiAgICAgICAtLW51bV9kaWdpdHM7CisgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCFudW1f
ZGlnaXRzKSkgYnJlYWs7CiAgICAgICBkaWdpdHMgPSAxMCAqIGRpZ2l0cyArIGMgLSAnMCc7CiAg
ICAgfQogICAgIHJldHVybiBkaWdpdHM7CkBAIC0xMTAsMTAgKzEwNiwxMCBAQCBib29sIENvbnN1
bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpzcmMsIFVuYm91bmRDb252ZXJzaW9uICpjb252LAog
CiAgIGlmIChpc19wb3NpdGlvbmFsKSB7CiAgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFM
X0dFVF9DSEFSKCk7Ci0gICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMgPiAn
OScpKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjIDwgJzEnIHx8
IGMgPiAnOScpKSByZXR1cm4gbnVsbHB0cjsKICAgICBjb252LT5hcmdfcG9zaXRpb24gPSBwYXJz
ZV9kaWdpdHMoKTsKICAgICBhc3NlcnQoY29udi0+YXJnX3Bvc2l0aW9uID4gMCk7Ci0gICAgaWYg
KEFCU0xfUFJFRElDVF9GQUxTRShjICE9ICckJykpIHJldHVybiBmYWxzZTsKKyAgICBpZiAoQUJT
TF9QUkVESUNUX0ZBTFNFKGMgIT0gJyQnKSkgcmV0dXJuIG51bGxwdHI7CiAgIH0KIAogICBBQlNM
X0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKQEAgLTEyOCwxMCArMTI0LDkgQEAg
Ym9vbCBDb25zdW1lQ29udmVyc2lvbihzdHJpbmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lv
biAqY29udiwKICAgICBjb252LT5mbGFncy5iYXNpYyA9IGZhbHNlOwogCiAgICAgZm9yICg7IGMg
PD0gJzAnOykgewotICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IGJlIGFibGUgdG8gc3BlZWQgdGhp
cyB1cCByZXVzaW5nIHRoZSBrSWRzIGxvb2t1cCB0YWJsZQotICAgICAgLy8gZnJvbSBhYm92ZS4K
LSAgICAgIC8vIEl0IG1pZ2h0IHJlcXVpcmUgY2hhbmdpbmcgRmxhZ3MgdG8gYmUgYSBwbGFpbiBp
bnRlZ2VyIHdoZXJlIHdlIGNhbiB8PSBhCi0gICAgICAvLyB2YWx1ZS4KKyAgICAgIC8vIEZJWE1F
OiBXZSBtaWdodCBiZSBhYmxlIHRvIHNwZWVkIHRoaXMgdXAgcmV1c2luZyB0aGUgbG9va3VwIHRh
YmxlIGZyb20KKyAgICAgIC8vIGFib3ZlLiBJdCBtaWdodCByZXF1aXJlIGNoYW5naW5nIEZsYWdz
IHRvIGJlIGEgcGxhaW4gaW50ZWdlciB3aGVyZSB3ZQorICAgICAgLy8gY2FuIHw9IGEgdmFsdWUu
CiAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgY2FzZSAnLSc6CiAgICAgICAgICAgY29udi0+
ZmxhZ3MubGVmdCA9IHRydWU7CkBAIC0xNTksMjAgKzE1NCwyMCBAQCBmbGFnc19kb25lOgogICAg
ICAgaWYgKGMgPj0gJzAnKSB7CiAgICAgICAgIGludCBtYXliZV93aWR0aCA9IHBhcnNlX2RpZ2l0
cygpOwogICAgICAgICBpZiAoIWlzX3Bvc2l0aW9uYWwgJiYgYyA9PSAnJCcpIHsKLSAgICAgICAg
ICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCpuZXh0X2FyZyAhPSAwKSkgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoKm5leHRfYXJnICE9IDApKSByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgICAvLyBQb3NpdGlvbmFsIGNvbnZlcnNpb24uCiAgICAgICAgICAg
Km5leHRfYXJnID0gLTE7CiAgICAgICAgICAgY29udi0+ZmxhZ3MgPSBGbGFncygpOwogICAgICAg
ICAgIGNvbnYtPmZsYWdzLmJhc2ljID0gdHJ1ZTsKLSAgICAgICAgICByZXR1cm4gQ29uc3VtZUNv
bnZlcnNpb248dHJ1ZT4oc3JjLCBjb252LCBuZXh0X2FyZyk7CisgICAgICAgICAgcmV0dXJuIENv
bnN1bWVDb252ZXJzaW9uPHRydWU+KG9yaWdpbmFsX3BvcywgZW5kLCBjb252LCBuZXh0X2FyZyk7
CiAgICAgICAgIH0KICAgICAgICAgY29udi0+d2lkdGguc2V0X3ZhbHVlKG1heWJlX3dpZHRoKTsK
ICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnKicpIHsKICAgICAgICAgQUJTTF9GT1JNQVRfUEFSU0VS
X0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAgICAgICAgIGlmIChpc19wb3NpdGlvbmFsKSB7Ci0gICAg
ICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMgPiAnOScpKSByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMgPiAn
OScpKSByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICBjb252LT53aWR0aC5zZXRfZnJvbV9hcmco
cGFyc2VfZGlnaXRzKCkpOwotICAgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoYyAhPSAn
JCcpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjICE9
ICckJykpIHJldHVybiBudWxscHRyOwogICAgICAgICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRF
Uk5BTF9HRVRfQ0hBUigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgIGNvbnYtPndpZHRo
LnNldF9mcm9tX2FyZygrKypuZXh0X2FyZyk7CkBAIC0xODcsOSArMTgyLDkgQEAgZmxhZ3NfZG9u
ZToKICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnKicpIHsKICAgICAgICAgQUJTTF9GT1JNQVRfUEFS
U0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAgICAgICAgIGlmIChpc19wb3NpdGlvbmFsKSB7Ci0g
ICAgICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMgPiAnOScpKSByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMg
PiAnOScpKSByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICBjb252LT5wcmVjaXNpb24uc2V0X2Zy
b21fYXJnKHBhcnNlX2RpZ2l0cygpKTsKLSAgICAgICAgICBpZiAoYyAhPSAnJCcpIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICBpZiAoYyAhPSAnJCcpIHJldHVybiBudWxscHRyOwogICAgICAgICAg
IEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgIGNvbnYtPnByZWNpc2lvbi5zZXRfZnJvbV9hcmcoKysqbmV4dF9hcmcpOwpA
QCAtMjAwLDE0ICsxOTUsMTQgQEAgZmxhZ3NfZG9uZToKICAgICB9CiAgIH0KIAotICBzdGQ6Omlu
dDhfdCBpZCA9IGtJZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldOworICBhdXRvIHRh
ZyA9IEdldFRhZ0ZvckNoYXIoYyk7CiAKLSAgaWYgKGlkIDwgMCkgewotICAgIGlmIChBQlNMX1BS
RURJQ1RfRkFMU0UoaWQgPT0gbm9uZSkpIHJldHVybiBmYWxzZTsKKyAgaWYgKEFCU0xfUFJFRElD
VF9GQUxTRSghdGFnLmlzX2NvbnYoKSkpIHsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCF0
YWcuaXNfbGVuZ3RoKCkpKSByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEl0IGlzIGEgbGVuZ3Ro
IG1vZGlmaWVyLgogICAgIHVzaW5nIHN0cl9mb3JtYXRfaW50ZXJuYWw6Okxlbmd0aE1vZDsKLSAg
ICBMZW5ndGhNb2QgbGVuZ3RoX21vZCA9IExlbmd0aE1vZDo6RnJvbUlkKHN0YXRpY19jYXN0PExN
Pih+aWQpKTsKKyAgICBMZW5ndGhNb2QgbGVuZ3RoX21vZCA9IHRhZy5hc19sZW5ndGgoKTsKICAg
ICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICBpZiAoYyA9PSAn
aCcgJiYgbGVuZ3RoX21vZC5pZCgpID09IExlbmd0aE1vZDo6aCkgewogICAgICAgY29udi0+bGVu
Z3RoX21vZCA9IExlbmd0aE1vZDo6RnJvbUlkKExlbmd0aE1vZDo6aGgpOwpAQCAtMjE4LDI1ICsy
MTMsMjQgQEAgZmxhZ3NfZG9uZToKICAgICB9IGVsc2UgewogICAgICAgY29udi0+bGVuZ3RoX21v
ZCA9IGxlbmd0aF9tb2Q7CiAgICAgfQotICAgIGlkID0ga0lkc1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjKV07Ci0gICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShpZCA8IDApKSByZXR1cm4g
ZmFsc2U7CisgICAgdGFnID0gR2V0VGFnRm9yQ2hhcihjKTsKKyAgICBpZiAoQUJTTF9QUkVESUNU
X0ZBTFNFKCF0YWcuaXNfY29udigpKSkgcmV0dXJuIG51bGxwdHI7CiAgIH0KIAogICBhc3NlcnQo
Q2hlY2tGYXN0UGF0aFNldHRpbmcoKmNvbnYpKTsKICAgKHZvaWQpKCZDaGVja0Zhc3RQYXRoU2V0
dGluZyk7CiAKLSAgY29udi0+Y29udiA9IENvbnZlcnNpb25DaGFyOjpGcm9tSWQoc3RhdGljX2Nh
c3Q8Q0M+KGlkKSk7CisgIGNvbnYtPmNvbnYgPSB0YWcuYXNfY29udigpOwogICBpZiAoIWlzX3Bv
c2l0aW9uYWwpIGNvbnYtPmFyZ19wb3NpdGlvbiA9ICsrKm5leHRfYXJnOwotICAqc3JjID0gc3Ry
aW5nX3ZpZXcocG9zLCBlbmQgLSBwb3MpOwotICByZXR1cm4gdHJ1ZTsKKyAgcmV0dXJuIHBvczsK
IH0KIAogfSAgLy8gbmFtZXNwYWNlCiAKLWJvb2wgQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKHN0
cmluZ192aWV3ICpzcmMsIFVuYm91bmRDb252ZXJzaW9uICpjb252LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ICpuZXh0X2FyZykgewotICBpZiAoKm5leHRfYXJnIDwgMCkgcmV0
dXJuIENvbnN1bWVDb252ZXJzaW9uPHRydWU+KHNyYywgY29udiwgbmV4dF9hcmcpOwotICByZXR1
cm4gQ29uc3VtZUNvbnZlcnNpb248ZmFsc2U+KHNyYywgY29udiwgbmV4dF9hcmcpOworY29uc3Qg
Y2hhciAqQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIg
KmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmJvdW5kQ29udmVy
c2lvbiAqY29udiwgaW50ICpuZXh0X2FyZykgeworICBpZiAoKm5leHRfYXJnIDwgMCkgcmV0dXJu
IENvbnN1bWVDb252ZXJzaW9uPHRydWU+KHAsIGVuZCwgY29udiwgbmV4dF9hcmcpOworICByZXR1
cm4gQ29uc3VtZUNvbnZlcnNpb248ZmFsc2U+KHAsIGVuZCwgY29udiwgbmV4dF9hcmcpOwogfQog
CiBzdHJ1Y3QgUGFyc2VkRm9ybWF0QmFzZTo6UGFyc2VkRm9ybWF0Q29uc3VtZXIgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5oCmluZGV4IDEwMjJmMDYyOTdhLi5i
NzYxNGEwOWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0
L3BhcnNlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIu
aApAQCAtNjMsMTcgKzYzLDQ1IEBAIHN0cnVjdCBVbmJvdW5kQ29udmVyc2lvbiB7CiAgIENvbnZl
cnNpb25DaGFyIGNvbnY7CiB9OwogCi0vLyBDb25zdW1lIGNvbnZlcnNpb24gc3BlYyBwcmVmaXgg
KG5vdCBpbmNsdWRpbmcgJyUnKSBvZiAnKnNyYycgaWYgdmFsaWQuCisvLyBDb25zdW1lIGNvbnZl
cnNpb24gc3BlYyBwcmVmaXggKG5vdCBpbmNsdWRpbmcgJyUnKSBvZiBbcCwgZW5kKSBpZiB2YWxp
ZC4KIC8vIEV4YW1wbGVzIG9mIHZhbGlkIHNwZWNzIHdvdWxkIGJlIGUuZy46ICJzIiwgImQiLCAi
LTEyLjZmIi4KLS8vIElmIHZhbGlkLCB0aGUgZnJvbnQgb2Ygc3JjIGlzIGFkdmFuY2VkIHN1Y2gg
dGhhdCBzcmMgYmVjb21lcyB0aGUKLS8vIHBhcnQgZm9sbG93aW5nIHRoZSBjb252ZXJzaW9uIHNw
ZWMsIGFuZCB0aGUgc3BlYyBwYXJ0IGlzIGJyb2tlbiBkb3duIGFuZAotLy8gcmV0dXJuZWQgaW4g
J2NvbnYnLgotLy8gSWYgaW52YWxpZCwgcmV0dXJucyBmYWxzZSBhbmQgbGVhdmVzICdzcmMnIHVu
bW9kaWZpZWQuCi0vLyBGb3IgZXhhbXBsZToKLS8vICAgR2l2ZW4gImQ5IiwgcmV0dXJucyAiZCIs
IGFuZCBsZWF2ZXMgc3JjPSI5IiwKLS8vICAgR2l2ZW4gIiEiLCByZXR1cm5zICIiIGFuZCBsZWF2
ZXMgc3JjPSIhIi4KLWJvb2wgQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKHN0cmluZ192aWV3KiBz
cmMsIFVuYm91bmRDb252ZXJzaW9uKiBjb252LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50KiBuZXh0X2FyZyk7CisvLyBJZiB2YWxpZCwgaXQgcmV0dXJucyB0aGUgZmlyc3QgY2hh
cmFjdGVyIGZvbGxvd2luZyB0aGUgY29udmVyc2lvbiBzcGVjLAorLy8gYW5kIHRoZSBzcGVjIHBh
cnQgaXMgYnJva2VuIGRvd24gYW5kIHJldHVybmVkIGluICdjb252Jy4KKy8vIElmIGludmFsaWQs
IHJldHVybnMgbnVsbHB0ci4KK2NvbnN0IGNoYXIqIENvbnN1bWVVbmJvdW5kQ29udmVyc2lvbihj
b25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5ib3VuZENvbnZlcnNpb24qIGNvbnYsIGludCogbmV4dF9hcmcpOworCisv
LyBIZWxwZXIgdGFnIGNsYXNzIGZvciB0aGUgdGFibGUgYmVsb3cuCisvLyBJdCBhbGxvd3MgZmFz
dCBgY2hhciAtPiBDb252ZXJzaW9uQ2hhci9MZW5ndGhNb2RgIGNoZWNraW5nIGFuZCBjb252ZXJz
aW9ucy4KK2NsYXNzIENvbnZUYWcgeworIHB1YmxpYzoKKyAgY29uc3RleHByIENvbnZUYWcoQ29u
dmVyc2lvbkNoYXI6OklkIGlkKSA6IHRhZ18oaWQpIHt9ICAvLyBOT0xJTlQKKyAgLy8gV2UgaW52
ZXJ0IHRoZSBsZW5ndGggbW9kaWZpZXJzIHRvIG1ha2UgdGhlbSBuZWdhdGl2ZSBzbyB0aGF0IHdl
IGNhbiBlYXNpbHkKKyAgLy8gdGVzdCBmb3IgdGhlbS4KKyAgY29uc3RleHByIENvbnZUYWcoTGVu
Z3RoTW9kOjpJZCBpZCkgOiB0YWdfKH5pZCkge30gIC8vIE5PTElOVAorICAvLyBFdmVyeXRoaW5n
IGVsc2UgaXMgLTEyOCwgd2hpY2ggaXMgbmVnYXRpdmUgdG8gbWFrZSBpc19jb252KCkgc2ltcGxl
ci4KKyAgY29uc3RleHByIENvbnZUYWcoKSA6IHRhZ18oLTEyOCkge30KKworICBib29sIGlzX2Nv
bnYoKSBjb25zdCB7IHJldHVybiB0YWdfID49IDA7IH0KKyAgYm9vbCBpc19sZW5ndGgoKSBjb25z
dCB7IHJldHVybiB0YWdfIDwgMCAmJiB0YWdfICE9IC0xMjg7IH0KKyAgQ29udmVyc2lvbkNoYXIg
YXNfY29udigpIGNvbnN0IHsKKyAgICBhc3NlcnQoaXNfY29udigpKTsKKyAgICByZXR1cm4gQ29u
dmVyc2lvbkNoYXI6OkZyb21JZChzdGF0aWNfY2FzdDxDb252ZXJzaW9uQ2hhcjo6SWQ+KHRhZ18p
KTsKKyAgfQorICBMZW5ndGhNb2QgYXNfbGVuZ3RoKCkgY29uc3QgeworICAgIGFzc2VydChpc19s
ZW5ndGgoKSk7CisgICAgcmV0dXJuIExlbmd0aE1vZDo6RnJvbUlkKHN0YXRpY19jYXN0PExlbmd0
aE1vZDo6SWQ+KH50YWdfKSk7CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6aW50OF90IHRhZ187
Cit9OworCitleHRlcm4gY29uc3QgQ29udlRhZyBrVGFnc1syNTZdOworLy8gS2VlcCBhIHNpbmds
ZSB0YWJsZSBmb3IgYWxsIHRoZSBjb252ZXJzaW9uIGNoYXJzIGFuZCBsZW5ndGggbW9kaWZpZXJz
LgoraW5saW5lIENvbnZUYWcgR2V0VGFnRm9yQ2hhcihjaGFyIGMpIHsKKyAgcmV0dXJuIGtUYWdz
W3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsKK30KIAogLy8gUGFyc2UgdGhlIGZvcm1h
dCBzdHJpbmcgcHJvdmlkZWQgaW4gJ3NyYycgYW5kIHBhc3MgdGhlIGlkZW50aWZpZWQgaXRlbXMg
aW50bwogLy8gJ2NvbnN1bWVyJy4KQEAgLTg4LDUxICsxMTYsNTMgQEAgYm9vbCBDb25zdW1lVW5i
b3VuZENvbnZlcnNpb24oc3RyaW5nX3ZpZXcqIHNyYywgVW5ib3VuZENvbnZlcnNpb24qIGNvbnYs
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29uc3VtZXI+CiBib29sIFBhcnNlRm9ybWF0U3RyaW5nKHN0
cmluZ192aWV3IHNyYywgQ29uc3VtZXIgY29uc3VtZXIpIHsKICAgaW50IG5leHRfYXJnID0gMDsK
LSAgd2hpbGUgKCFzcmMuZW1wdHkoKSkgewotICAgIGNvbnN0IGNoYXIqIHBlcmNlbnQgPQotICAg
ICAgICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtY2hyKHNyYy5kYXRhKCksICclJywgc3Jj
LnNpemUoKSkpOworICBjb25zdCBjaGFyKiBwID0gc3JjLmRhdGEoKTsKKyAgY29uc3QgY2hhciog
Y29uc3QgZW5kID0gcCArIHNyYy5zaXplKCk7CisgIHdoaWxlIChwICE9IGVuZCkgeworICAgIGNv
bnN0IGNoYXIqIHBlcmNlbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtY2hyKHAsICcl
JywgZW5kIC0gcCkpOwogICAgIGlmICghcGVyY2VudCkgewogICAgICAgLy8gV2UgZm91bmQgdGhl
IGxhc3Qgc3Vic3RyaW5nLgotICAgICAgcmV0dXJuIGNvbnN1bWVyLkFwcGVuZChzcmMpOworICAg
ICAgcmV0dXJuIGNvbnN1bWVyLkFwcGVuZChzdHJpbmdfdmlldyhwLCBlbmQgLSBwKSk7CiAgICAg
fQogICAgIC8vIFdlIGZvdW5kIGEgcGVyY2VudCwgc28gcHVzaCB0aGUgdGV4dCBydW4gdGhlbiBw
cm9jZXNzIHRoZSBwZXJjZW50LgotICAgIHNpemVfdCBwZXJjZW50X2xvYyA9IHBlcmNlbnQgLSBz
cmMuZGF0YSgpOwotICAgIGlmICghY29uc3VtZXIuQXBwZW5kKHN0cmluZ192aWV3KHNyYy5kYXRh
KCksIHBlcmNlbnRfbG9jKSkpIHJldHVybiBmYWxzZTsKLSAgICBpZiAocGVyY2VudCArIDEgPj0g
c3JjLmRhdGEoKSArIHNyYy5zaXplKCkpIHJldHVybiBmYWxzZTsKLQotICAgIFVuYm91bmRDb252
ZXJzaW9uIGNvbnY7Ci0KLSAgICBzd2l0Y2ggKHBlcmNlbnRbMV0pIHsKLSAgICAgIGNhc2UgJyUn
OgotICAgICAgICBpZiAoIWNvbnN1bWVyLkFwcGVuZCgiJSIpKSByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHNyYy5yZW1vdmVfcHJlZml4KHBlcmNlbnRfbG9jICsgMik7Ci0gICAgICAgIGNvbnRpbnVl
OwotCi0jZGVmaW5lIFBBUlNFUl9DQVNFKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gIGNhc2UgI2NoWzBdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgc3JjLnJlbW92ZV9wcmVmaXgocGVyY2VudF9sb2MgKyAyKTsg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgY29udi5jb252ID0gQ29udmVyc2lvbkNoYXI6OkZy
b21JZChDb252ZXJzaW9uQ2hhcjo6Y2gpOyBcCi0gICAgY29udi5hcmdfcG9zaXRpb24gPSArK25l
eHRfYXJnOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYnJlYWs7Ci0gICAgICAgIEFC
U0xfQ09OVkVSU0lPTl9DSEFSU19FWFBBTkRfKFBBUlNFUl9DQVNFLCApOwotI3VuZGVmIFBBUlNF
Ul9DQVNFCi0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHNyYy5yZW1vdmVfcHJlZml4KHBlcmNl
bnRfbG9jICsgMSk7Ci0gICAgICAgIGlmICghQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKCZzcmMs
ICZjb252LCAmbmV4dF9hcmcpKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICBpZiAobmV4dF9hcmcgPT0gMCkgewotICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgYW4gZXJy
b3IgaW4gdGhlIGZvcm1hdCBzdGQ6OnN0cmluZy4KLSAgICAgIC8vIFRoZSBvbmx5IHdheSB0byBn
ZXQgbmV4dF9hcmcgPT0gMCBpcyB0byBoYXZlIGEgcG9zaXRpb25hbCBhcmd1bWVudAotICAgICAg
Ly8gZmlyc3Qgd2hpY2ggc2V0cyBuZXh0X2FyZyB0byAtMSBhbmQgdGhlbiBhIG5vbi1wb3NpdGlv
bmFsIGFyZ3VtZW50Ci0gICAgICAvLyB3aGljaCBkb2VzICsrbmV4dF9hcmcuCi0gICAgICAvLyBD
aGVja2luZyBoZXJlIHNlZW1zIHRvIGJlIHRoZSBjaGVhcGVhc3QgcGxhY2UgdG8gZG8gaXQuCisg
ICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRSghY29uc3VtZXIuQXBwZW5kKHN0cmluZ192aWV3KHAs
IHBlcmNlbnQgLSBwKSkpKSB7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICgh
Y29uc3VtZXIuQ29udmVydE9uZSgKLSAgICAgICAgICAgIGNvbnYsIHN0cmluZ192aWV3KHBlcmNl
bnQgKyAxLCBzcmMuZGF0YSgpIC0gKHBlcmNlbnQgKyAxKSkpKSB7Ci0gICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShwZXJjZW50ICsgMSA+PSBlbmQpKSByZXR1
cm4gZmFsc2U7CisKKyAgICBhdXRvIHRhZyA9IEdldFRhZ0ZvckNoYXIocGVyY2VudFsxXSk7Cisg
ICAgaWYgKHRhZy5pc19jb252KCkpIHsKKyAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UobmV4
dF9hcmcgPCAwKSkgeworICAgICAgICAvLyBUaGlzIGluZGljYXRlcyBhbiBlcnJvciBpbiB0aGUg
Zm9ybWF0IHN0ZDo6c3RyaW5nLgorICAgICAgICAvLyBUaGUgb25seSB3YXkgdG8gZ2V0IGBuZXh0
X2FyZyA8IDBgIGhlcmUgaXMgdG8gaGF2ZSBhIHBvc2l0aW9uYWwKKyAgICAgICAgLy8gYXJndW1l
bnQgZmlyc3Qgd2hpY2ggc2V0cyBuZXh0X2FyZyB0byAtMSBhbmQgdGhlbiBhIG5vbi1wb3NpdGlv
bmFsCisgICAgICAgIC8vIGFyZ3VtZW50LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9
CisgICAgICBwID0gcGVyY2VudCArIDI7CisKKyAgICAgIC8vIEtlZXAgdGhpcyBjYXNlIHNlcGFy
YXRlIGZyb20gdGhlIG9uZSBiZWxvdy4KKyAgICAgIC8vIENvbnZlcnRPbmUgaXMgbW9yZSBlZmZp
Y2llbnQgd2hlbiB0aGUgY29tcGlsZXIgY2FuIHNlZSB0aGF0IHRoZSBgYmFzaWNgCisgICAgICAv
LyBmbGFnIGlzIHNldC4KKyAgICAgIFVuYm91bmRDb252ZXJzaW9uIGNvbnY7CisgICAgICBjb252
LmNvbnYgPSB0YWcuYXNfY29udigpOworICAgICAgY29udi5hcmdfcG9zaXRpb24gPSArK25leHRf
YXJnOworICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRSgKKyAgICAgICAgICAgICAgIWNvbnN1
bWVyLkNvbnZlcnRPbmUoY29udiwgc3RyaW5nX3ZpZXcocGVyY2VudCArIDEsIDEpKSkpIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0gZWxzZSBpZiAocGVyY2VudFsxXSAh
PSAnJScpIHsKKyAgICAgIFVuYm91bmRDb252ZXJzaW9uIGNvbnY7CisgICAgICBwID0gQ29uc3Vt
ZVVuYm91bmRDb252ZXJzaW9uKHBlcmNlbnQgKyAxLCBlbmQsICZjb252LCAmbmV4dF9hcmcpOwor
ICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShwID09IG51bGxwdHIpKSByZXR1cm4gZmFsc2U7
CisgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCFjb25zdW1lci5Db252ZXJ0T25lKAorICAg
ICAgICAgIGNvbnYsIHN0cmluZ192aWV3KHBlcmNlbnQgKyAxLCBwIC0gKHBlcmNlbnQgKyAxKSkp
KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
IGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoIWNvbnN1bWVyLkFwcGVuZCgiJSIpKSkgcmV0dXJuIGZh
bHNlOworICAgICAgcCA9IHBlcmNlbnQgKyAyOworICAgICAgY29udGludWU7CiAgICAgfQogICB9
CiAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJf
Zm9ybWF0L3BhcnNlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0
L3BhcnNlcl90ZXN0LmNjCmluZGV4IGFlNDAyMDMxOTFiLi42ZDM1NjA5M2NlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlcl90ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXJfdGVzdC5jYwpAQCAtMSw2
ICsxLDggQEAKICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJz
ZXIuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIK
ICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIK
IApAQCAtOSw2ICsxMSw4IEBAIG5hbWVzcGFjZSBzdHJfZm9ybWF0X2ludGVybmFsIHsKIAogbmFt
ZXNwYWNlIHsKIAordXNpbmcgdGVzdGluZzo6UGFpcjsKKwogVEVTVChMZW5ndGhNb2RUZXN0LCBO
YW1lcykgewogICBzdHJ1Y3QgRXhwZWN0YXRpb24gewogICAgIGludCBsaW5lOwpAQCAtNjMsMjAg
KzY3LDIxIEBAIFRFU1QoQ29udmVyc2lvbkNoYXJUZXN0LCBOYW1lcykgewogCiBjbGFzcyBDb25z
dW1lVW5ib3VuZENvbnZlcnNpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgcHVi
bGljOgotICB0eXBlZGVmIFVuYm91bmRDb252ZXJzaW9uIFByb3BzOwotICBzdHJpbmdfdmlldyBD
b25zdW1lKHN0cmluZ192aWV3KiBzcmMpIHsKKyAgc3RkOjpwYWlyPHN0cmluZ192aWV3LCBzdHJp
bmdfdmlldz4gQ29uc3VtZShzdHJpbmdfdmlldyBzcmMpIHsKICAgICBpbnQgbmV4dCA9IDA7Ci0g
ICAgY29uc3QgY2hhciogcHJldl9iZWdpbiA9IHNyYy0+ZGF0YSgpOwogICAgIG8gPSBVbmJvdW5k
Q29udmVyc2lvbigpOyAgLy8gcmVmcmVzaAotICAgIENvbnN1bWVVbmJvdW5kQ29udmVyc2lvbihz
cmMsICZvLCAmbmV4dCk7Ci0gICAgcmV0dXJuIHtwcmV2X2JlZ2luLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNyYy0+ZGF0YSgpIC0gcHJldl9iZWdpbil9OworICAgIGNvbnN0IGNoYXIqIHAgPSBDb25z
dW1lVW5ib3VuZENvbnZlcnNpb24oCisgICAgICAgIHNyYy5kYXRhKCksIHNyYy5kYXRhKCkgKyBz
cmMuc2l6ZSgpLCAmbywgJm5leHQpOworICAgIGlmICghcCkgcmV0dXJuIHt7fSwgc3JjfTsKKyAg
ICByZXR1cm4ge3N0cmluZ192aWV3KHNyYy5kYXRhKCksIHAgLSBzcmMuZGF0YSgpKSwKKyAgICAg
ICAgICAgIHN0cmluZ192aWV3KHAsIHNyYy5kYXRhKCkgKyBzcmMuc2l6ZSgpIC0gcCl9OwogICB9
CiAKICAgYm9vbCBSdW4oY29uc3QgY2hhciAqZm10LCBib29sIGZvcmNlX3Bvc2l0aW9uYWwgPSBm
YWxzZSkgewotICAgIHN0cmluZ192aWV3IHNyYyA9IGZtdDsKICAgICBpbnQgbmV4dCA9IGZvcmNl
X3Bvc2l0aW9uYWwgPyAtMSA6IDA7CiAgICAgbyA9IFVuYm91bmRDb252ZXJzaW9uKCk7ICAvLyBy
ZWZyZXNoCi0gICAgcmV0dXJuIENvbnN1bWVVbmJvdW5kQ29udmVyc2lvbigmc3JjLCAmbywgJm5l
eHQpICYmIHNyYy5lbXB0eSgpOworICAgIHJldHVybiBDb25zdW1lVW5ib3VuZENvbnZlcnNpb24o
Zm10LCBmbXQgKyBzdHJsZW4oZm10KSwgJm8sICZuZXh0KSA9PQorICAgICAgICAgICBmbXQgKyBz
dHJsZW4oZm10KTsKICAgfQogICBVbmJvdW5kQ29udmVyc2lvbiBvOwogfTsKQEAgLTEwNCwxMSAr
MTA5LDcgQEAgVEVTVF9GKENvbnN1bWVVbmJvdW5kQ29udmVyc2lvblRlc3QsIENvbnN1bWVTcGVj
aWZpY2F0aW9uKSB7CiAgIH07CiAgIGZvciAoY29uc3QgYXV0byYgZSA6IGtFeHBlY3QpIHsKICAg
ICBTQ09QRURfVFJBQ0UoZS5saW5lKTsKLSAgICBzdHJpbmdfdmlldyBzcmMgPSBlLnNyYzsKLSAg
ICBFWFBFQ1RfRVEoZS5zcmMsIHNyYyk7Ci0gICAgc3RyaW5nX3ZpZXcgb3V0ID0gQ29uc3VtZSgm
c3JjKTsKLSAgICBFWFBFQ1RfRVEoZS5vdXQsIG91dCk7Ci0gICAgRVhQRUNUX0VRKGUuc3JjX3Bv
c3QsIHNyYyk7CisgICAgRVhQRUNUX1RIQVQoQ29uc3VtZShlLnNyYyksIFBhaXIoZS5vdXQsIGUu
c3JjX3Bvc3QpKTsKICAgfQogfQogCkBAIC0yNDYsNiArMjQ3LDggQEAgVEVTVF9GKENvbnN1bWVV
bmJvdW5kQ29udmVyc2lvblRlc3QsIFdpZHRoQW5kUHJlY2lzaW9uKSB7CiAKICAgRVhQRUNUX0ZB
TFNFKFJ1bigiMTAwMDAwMDAwMC45OTk5OTk5OTlkIikpOwogICBFWFBFQ1RfRkFMU0UoUnVuKCI5
OTk5OTk5OTkuMTAwMDAwMDAwMGQiKSk7CisgIEVYUEVDVF9GQUxTRShSdW4oIjk5OTk5OTk5OTlk
IikpOworICBFWFBFQ1RfRkFMU0UoUnVuKCIuOTk5OTk5OTk5OWQiKSk7CiB9CiAKIFRFU1RfRihD
b25zdW1lVW5ib3VuZENvbnZlcnNpb25UZXN0LCBGbGFncykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfam9pbl9pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9zdHJfam9pbl9pbnRlcm5hbC5oCmluZGV4IDAwNThmYzhhYTRkLi43YzM1ZjRkZTA1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfam9pbl9pbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2pvaW5faW50ZXJuYWwuaApAQCAtNSw3ICs1
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTkzLDcgKzE5Myw3IEBAIHN0cnVj
dCBEZWZhdWx0Rm9ybWF0dGVyPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVR5cGU+PgogLy8gYW5kIGZv
cm1hdHMgZWFjaCBlbGVtZW50IHVzaW5nIHRoZSBwcm92aWRlZCBGb3JtYXR0ZXIgb2JqZWN0Lgog
dGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0
cmluZyBKb2luQWxnb3JpdGhtKEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQsIGFic2w6OnN0
cmluZ192aWV3IHMsCi0gICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXImJiBmKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciYmIGYpIHsKICAgc3RkOjpzdHJpbmcgcmVz
dWx0OwogICBhYnNsOjpzdHJpbmdfdmlldyBzZXAoIiIpOwogICBmb3IgKEl0ZXJhdG9yIGl0ID0g
c3RhcnQ7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0ZDo6c3RyaW5n
IEpvaW5BbGdvcml0aG0oSXRlcmF0b3Igc3RhcnQsIEl0ZXJhdG9yIGVuZCwgYWJzbDo6c3RyaW5n
X3ZpZXcgcywKIC8vIFRoaXMgaXMgYW4gb3ZlcmxvYWQgb2YgdGhlIHByZXZpb3VzIEpvaW5BbGdv
cml0aG0oKSBmdW5jdGlvbi4gSGVyZSB0aGUKIC8vIEZvcm1hdHRlciBhcmd1bWVudCBpcyBvZiB0
eXBlIE5vRm9ybWF0dGVyLiBTaW5jZSBOb0Zvcm1hdHRlciBpcyBhbiBpbnRlcm5hbAogLy8gdHlw
ZSwgdGhpcyBvdmVybG9hZCBpcyBvbmx5IGludm9rZWQgd2hlbiBzdHJpbmdzOjpKb2luKCkgaXMg
Y2FsbGVkIHdpdGggYQotLy8gcmFuZ2Ugb2Ygc3RyaW5nLWxpa2Ugb2JqZWN0cyAoZS5nLiwgc3Ry
aW5nLCBhYnNsOjpzdHJpbmdfdmlldyksIGFuZCBhbgorLy8gcmFuZ2Ugb2Ygc3RyaW5nLWxpa2Ug
b2JqZWN0cyAoZS5nLiwgc3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3KSwgYW5kIGFuCiAv
LyBleHBsaWNpdCBGb3JtYXR0ZXIgYXJndW1lbnQgd2FzIE5PVCBzcGVjaWZpZWQuCiAvLwogLy8g
VGhlIG9wdGltaXphdGlvbiBpcyB0aGF0IHRoZSBuZWVkZWQgc3BhY2Ugd2lsbCBiZSByZXNlcnZl
ZCBpbiB0aGUgb3V0cHV0CkBAIC0yMjQsNyArMjI0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0
ZXJhdG9yLAogICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVy
YXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5LAogICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRl
cmF0b3JfdGFnPjo6dmFsdWU+Ojp0eXBlPgogc3RkOjpzdHJpbmcgSm9pbkFsZ29yaXRobShJdGVy
YXRvciBzdGFydCwgSXRlcmF0b3IgZW5kLCBhYnNsOjpzdHJpbmdfdmlldyBzLAotICAgICAgICAg
ICAgICAgICAgICAgTm9Gb3JtYXR0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTm9G
b3JtYXR0ZXIpIHsKICAgc3RkOjpzdHJpbmcgcmVzdWx0OwogICBpZiAoc3RhcnQgIT0gZW5kKSB7
CiAgICAgLy8gU3VtcyBzaXplCkBAIC0yNzYsMTQgKzI3NiwxNSBAQCBzdHJ1Y3QgSm9pblR1cGxl
TG9vcDxOLCBOPiB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBULCB0eXBlbmFtZSBGb3JtYXR0
ZXI+CiBzdGQ6OnN0cmluZyBKb2luQWxnb3JpdGhtKGNvbnN0IHN0ZDo6dHVwbGU8VC4uLj4mIHR1
cCwgYWJzbDo6c3RyaW5nX3ZpZXcgc2VwLAotICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVy
JiYgZm10KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciYmIGZtdCkgewog
ICBzdGQ6OnN0cmluZyByZXN1bHQ7CiAgIEpvaW5UdXBsZUxvb3A8MCwgc2l6ZW9mLi4uKFQpPigp
KCZyZXN1bHQsIHR1cCwgc2VwLCBmbXQpOwogICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSXRlcmF0b3I+Ci1zdGQ6OnN0cmluZyBKb2luUmFuZ2UoSXRlcmF0b3IgZmly
c3QsIEl0ZXJhdG9yIGxhc3QsIGFic2w6OnN0cmluZ192aWV3IHNlcGFyYXRvcikgeworc3RkOjpz
dHJpbmcgSm9pblJhbmdlKEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LAorICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3IHNlcGFyYXRvcikgewogICAvLyBObyBmb3Jt
YXR0ZXIgd2FzIGV4cGxpY2l0bHkgZ2l2ZW4sIHNvIGEgZGVmYXVsdCBtdXN0IGJlIGNob3Nlbi4K
ICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVl
X3R5cGUgVmFsdWVUeXBlOwogICB0eXBlZGVmIHR5cGVuYW1lIERlZmF1bHRGb3JtYXR0ZXI8VmFs
dWVUeXBlPjo6VHlwZSBGb3JtYXR0ZXI7CkBAIC0yOTIsNyArMjkzLDcgQEAgc3RkOjpzdHJpbmcg
Sm9pblJhbmdlKEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LCBhYnNsOjpzdHJpbmdfdmll
dyBzZXBhcmF0b3IKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmdlLCB0eXBlbmFtZSBGb3JtYXR0
ZXI+CiBzdGQ6OnN0cmluZyBKb2luUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLCBhYnNsOjpzdHJp
bmdfdmlldyBzZXBhcmF0b3IsCi0gICAgICAgICAgICAgICAgIEZvcm1hdHRlciYmIGZtdCkgewor
ICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciYmIGZtdCkgewogICB1c2luZyBzdGQ6OmJl
Z2luOwogICB1c2luZyBzdGQ6OmVuZDsKICAgcmV0dXJuIEpvaW5BbGdvcml0aG0oYmVnaW4ocmFu
Z2UpLCBlbmQocmFuZ2UpLCBzZXBhcmF0b3IsIGZtdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9zcGxpdF9pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfc3BsaXRfaW50ZXJuYWwuaAppbmRleCA4MWU4ZDU1NTQ0Ni4uNTJmNjIyMjYxNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX3NwbGl0X2ludGVybmFsLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfc3BsaXRfaW50ZXJuYWwuaApAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtOTYsOCArOTYsOCBAQCBDb252ZXJ0
aWJsZVRvU3RyaW5nVmlldyhzdGQ6OnN0cmluZyYmIHMpICAvLyBOT0xJTlQocnVudGltZS9leHBs
aWNpdCkKICAgICB9CiAgIH0KIAotICAvLyBIb2xkcyB0aGUgZGF0YSBtb3ZlZCBmcm9tIHRlbXBv
cmFyeSBzdGQ6OnN0cmluZyBhcmd1bWVudHMuIERlY2xhcmVkIGZpcnN0IHNvCi0gIC8vIHRoYXQg
J3ZhbHVlJyBjYW4gcmVmZXIgdG8gJ2NvcHlfJy4KKyAgLy8gSG9sZHMgdGhlIGRhdGEgbW92ZWQg
ZnJvbSB0ZW1wb3Jhcnkgc3RkOjpzdHJpbmcgYXJndW1lbnRzLiBEZWNsYXJlZCBmaXJzdAorICAv
LyBzbyB0aGF0ICd2YWx1ZScgY2FuIHJlZmVyIHRvICdjb3B5XycuCiAgIHN0ZDo6c3RyaW5nIGNv
cHlfOwogICBhYnNsOjpzdHJpbmdfdmlldyB2YWx1ZV87CiB9OwpAQCAtMzc2LDEwICszNzYsMTAg
QEAgY2xhc3MgU3BsaXR0ZXIgewogCiAgIC8vIFBhcnRpYWwgc3BlY2lhbGl6YXRpb24gZm9yIGEg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LgogICAvLwotICAvLyBPcHRpbWl6ZWQgZm9yIHRoZSBj
b21tb24gY2FzZSBvZiBzcGxpdHRpbmcgdG8gYSBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4uIElu
Ci0gIC8vIHRoaXMgY2FzZSB3ZSBmaXJzdCBzcGxpdCB0aGUgcmVzdWx0cyB0byBhIHN0ZDo6dmVj
dG9yPGFic2w6OnN0cmluZ192aWV3PiBzbwotICAvLyB0aGUgcmV0dXJuZWQgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IGNhbiBoYXZlIHNwYWNlIHJlc2VydmVkIHRvIGF2b2lkIHN0ZDo6c3RyaW5n
Ci0gIC8vIG1vdmVzLgorICAvLyBPcHRpbWl6ZWQgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBzcGxp
dHRpbmcgdG8gYSBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4uCisgIC8vIEluIHRoaXMgY2FzZSB3
ZSBmaXJzdCBzcGxpdCB0aGUgcmVzdWx0cyB0byBhIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192
aWV3PgorICAvLyBzbyB0aGUgcmV0dXJuZWQgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGNhbiBo
YXZlIHNwYWNlIHJlc2VydmVkIHRvIGF2b2lkCisgIC8vIHN0ZDo6c3RyaW5nIG1vdmVzLgogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQT4KICAgc3RydWN0IENvbnZlcnRUb0NvbnRhaW5lcjxzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZywgQT4sIHN0ZDo6c3RyaW5nLCBmYWxzZT4gewogICAgIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nLCBBPiBvcGVyYXRvcigpKGNvbnN0IFNwbGl0dGVyJiBzcGxpdHRlcikg
Y29uc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4LmNjCmluZGV4IDI0MTVjMmNjYzQ1Li44MmQzNmMyNGIz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvdXRmOC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL3V0ZjguaAppbmRleCBkMmMzYzBiMDEyMC4uMDQyMzYzMDQ3
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvdXRmOC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvdXRmOC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0xMyw3ICsxMyw2IEBACiAvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KIC8vCiAvLyBVVEY4IHV0aWxpdGllcywgaW1wbGVtZW50ZWQgdG8gcmVkdWNlIGRlcGVu
ZGVuY2llcy4KLS8vCiAKICNpZm5kZWYgQUJTTF9TVFJJTkdTX0lOVEVSTkFMX1VURjhfSF8KICNk
ZWZpbmUgQUJTTF9TVFJJTkdTX0lOVEVSTkFMX1VURjhfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvdXRmOF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4
X3Rlc3QuY2MKaW5kZXggNjRjZWM3MGRmN2UuLjg4ZGQ1MDM2ZTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3V0ZjhfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL3V0ZjhfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMjIsMTIgKzIyLDE3IEBACiAKIG5hbWVzcGFjZSB7CiAKKyNpZiAhZGVmaW5lZChfX2Nw
cF9jaGFyOF90KQorI2lmIGRlZmluZWQoX19jbGFuZ19fKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2MrKzJhLWNvbXBh
dCIKKyNlbmRpZgogVEVTVChFbmNvZGVVVEY4Q2hhciwgQmFzaWNGdW5jdGlvbikgewogICBzdGQ6
OnBhaXI8Y2hhcjMyX3QsIHN0ZDo6c3RyaW5nPiB0ZXN0c1tdID0ge3sweDAwMzAsIHU4Ilx1MDAz
MCJ9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MHgwMEEzLCB1
OCJcdTAwQTMifSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezB4
MDAwMTAwMDAsIHU4IlxVMDAwMTAwMDAifSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgezB4MDAwMEZGRkYsIHU4IlxVMDAwMEZGRkYifSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgezB4MDAxMEZGRkQsIHU4IlxVMDAxMEZGRkQifX07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezB4MDBBMywg
dTgiXHUwMEEzIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgezB4MDAwMTAwMDAsIHU4IlxVMDAwMTAwMDAifSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7MHgwMDAwRkZGRiwgdTgiXFUwMDAwRkZGRiJ9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsweDAwMTBGRkZELCB1
OCJcVTAwMTBGRkZEIn19OwogICBmb3IgKGF1dG8gJnRlc3QgOiB0ZXN0cykgewogICAgIGNoYXIg
YnVmMFs3XSA9IHsnXHgwMCcsICdceDAwJywgJ1x4MDAnLCAnXHgwMCcsICdceDAwJywgJ1x4MDAn
LCAnXHgwMCd9OwogICAgIGNoYXIgYnVmMVs3XSA9IHsnXHhGRicsICdceEZGJywgJ1x4RkYnLCAn
XHhGRicsICdceEZGJywgJ1x4RkYnLCAnXHhGRid9OwpAQCAtNTMsNSArNTgsOSBAQCBURVNUKEVu
Y29kZVVURjhDaGFyLCBCYXNpY0Z1bmN0aW9uKSB7CiAgIEVYUEVDVF9MRShhYnNsOjpzdHJpbmdz
X2ludGVybmFsOjpFbmNvZGVVVEY4Q2hhcihidWYyLCAtMSksCiAgICAgICAgICAgICBhYnNsOjpz
dHJpbmdzX2ludGVybmFsOjprTWF4RW5jb2RlZFVURjhTaXplKTsKIH0KKyNpZiBkZWZpbmVkKF9f
Y2xhbmdfXykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorI2VuZGlmICAv
LyAhZGVmaW5lZChfX2NwcF9jaGFyOF90KQogCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvbWF0Y2guY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmNjCmluZGV4IDNk
MTBjNTc3ODRlLi43YjI0MjQxYWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC0xOCwxNSArMTgsNiBAQAogCiBuYW1lc3BhY2UgYWJzbCB7CiAK
LW5hbWVzcGFjZSB7Ci1ib29sIENhc2VFcXVhbChhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTEsIGFi
c2w6OnN0cmluZ192aWV3IHBpZWNlMikgewotICByZXR1cm4gKHBpZWNlMS5zaXplKCkgPT0gcGll
Y2UyLnNpemUoKSAmJgotICAgICAgICAgIDAgPT0gc3RyaW5nc19pbnRlcm5hbDo6bWVtY2FzZWNt
cChwaWVjZTEuZGF0YSgpLCBwaWVjZTIuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwaWVjZTEuc2l6ZSgpKSk7Ci0gIC8vIG1lbWNhc2VjbXAgdXNl
cyBhc2NpaV90b2xvd2VyKCkuCi19Ci19ICAvLyBuYW1lc3BhY2UKLQogYm9vbCBFcXVhbHNJZ25v
cmVDYXNlKGFic2w6OnN0cmluZ192aWV3IHBpZWNlMSwgYWJzbDo6c3RyaW5nX3ZpZXcgcGllY2Uy
KSB7CiAgIHJldHVybiAocGllY2UxLnNpemUoKSA9PSBwaWVjZTIuc2l6ZSgpICYmCiAgICAgICAg
ICAgMCA9PSBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjptZW1jYXNlY21wKHBpZWNlMS5kYXRhKCks
IHBpZWNlMi5kYXRhKCksCkBAIC0zNiwxMiArMjcsMTIgQEAgYm9vbCBFcXVhbHNJZ25vcmVDYXNl
KGFic2w6OnN0cmluZ192aWV3IHBpZWNlMSwgYWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UyKSB7CiAK
IGJvb2wgU3RhcnRzV2l0aElnbm9yZUNhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgYWJzbDo6
c3RyaW5nX3ZpZXcgcHJlZml4KSB7CiAgIHJldHVybiAodGV4dC5zaXplKCkgPj0gcHJlZml4LnNp
emUoKSkgJiYKLSAgICAgICAgIENhc2VFcXVhbCh0ZXh0LnN1YnN0cigwLCBwcmVmaXguc2l6ZSgp
KSwgcHJlZml4KTsKKyAgICAgICAgIEVxdWFsc0lnbm9yZUNhc2UodGV4dC5zdWJzdHIoMCwgcHJl
Zml4LnNpemUoKSksIHByZWZpeCk7CiB9CiAKIGJvb2wgRW5kc1dpdGhJZ25vcmVDYXNlKGFic2w6
OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0cmluZ192aWV3IHN1ZmZpeCkgewogICByZXR1cm4g
KHRleHQuc2l6ZSgpID49IHN1ZmZpeC5zaXplKCkpICYmCi0gICAgICAgICBDYXNlRXF1YWwodGV4
dC5zdWJzdHIodGV4dC5zaXplKCkgLSBzdWZmaXguc2l6ZSgpKSwgc3VmZml4KTsKKyAgICAgICAg
IEVxdWFsc0lnbm9yZUNhc2UodGV4dC5zdWJzdHIodGV4dC5zaXplKCkgLSBzdWZmaXguc2l6ZSgp
KSwgc3VmZml4KTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvbWF0Y2guaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guaAppbmRleCA2ZThlZDEwZmM1
MC4uNzYyZjM1OWY3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL21hdGNoLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTYyLDggKzYyLDcgQEAgaW5saW5lIGJvb2wgRW5kc1dpdGgoYWJzbDo6c3RyaW5n
X3ZpZXcgdGV4dCwgYWJzbDo6c3RyaW5nX3ZpZXcgc3VmZml4KSB7CiAgIHJldHVybiBzdWZmaXgu
ZW1wdHkoKSB8fAogICAgICAgICAgKHRleHQuc2l6ZSgpID49IHN1ZmZpeC5zaXplKCkgJiYKICAg
ICAgICAgICBtZW1jbXAodGV4dC5kYXRhKCkgKyAodGV4dC5zaXplKCkgLSBzdWZmaXguc2l6ZSgp
KSwgc3VmZml4LmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgc3VmZml4LnNpemUoKSkgPT0gMAot
ICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgc3VmZml4LnNpemUoKSkgPT0gMCk7CiB9CiAK
IC8vIEVxdWFsc0lnbm9yZUNhc2UoKQpAQCAtNzQsMTMgKzczLDEzIEBAIGJvb2wgRXF1YWxzSWdu
b3JlQ2FzZShhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTEsIGFic2w6OnN0cmluZ192aWV3IHBpZWNl
Mik7CiAKIC8vIFN0YXJ0c1dpdGhJZ25vcmVDYXNlKCkKIC8vCi0vLyBSZXR1cm5zIHdoZXRoZXIg
YSBnaXZlbiBBU0NJSSBzdHJpbmcgYHRleHRgIHN0YXJ0cyB3aXRoIGBzdGFydHNfd2l0aGAsCisv
LyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBBU0NJSSBzdHJpbmcgYHRleHRgIHN0YXJ0cyB3aXRo
IGBwcmVmaXhgLAogLy8gaWdub3JpbmcgY2FzZSBpbiB0aGUgY29tcGFyaXNvbi4KIGJvb2wgU3Rh
cnRzV2l0aElnbm9yZUNhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgYWJzbDo6c3RyaW5nX3Zp
ZXcgcHJlZml4KTsKIAogLy8gRW5kc1dpdGhJZ25vcmVDYXNlKCkKIC8vCi0vLyBSZXR1cm5zIHdo
ZXRoZXIgYSBnaXZlbiBBU0NJSSBzdHJpbmcgYHRleHRgIGVuZHMgd2l0aCBgZW5kc193aXRoYCwg
aWdub3JpbmcKKy8vIFJldHVybnMgd2hldGhlciBhIGdpdmVuIEFTQ0lJIHN0cmluZyBgdGV4dGAg
ZW5kcyB3aXRoIGBzdWZmaXhgLCBpZ25vcmluZwogLy8gY2FzZSBpbiB0aGUgY29tcGFyaXNvbi4K
IGJvb2wgRW5kc1dpdGhJZ25vcmVDYXNlKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0
cmluZ192aWV3IHN1ZmZpeCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2hfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2hfdGVzdC5jYwppbmRleCBjMjFlMDBiZjgwNy4uNGMz
MTNkZGExNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2hfdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL21hdGNoX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTE5LDcgKzE5LDcgQEAKIG5hbWVzcGFjZSB7CiAKIFRFU1QoTWF0Y2hU
ZXN0LCBTdGFydHNXaXRoKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHMxKCIxMjMiICJcMCIgIjQ1
NiIsIDcpOworICBjb25zdCBzdGQ6OnN0cmluZyBzMSgiMTIzXDBhYmMiLCA3KTsKICAgY29uc3Qg
YWJzbDo6c3RyaW5nX3ZpZXcgYSgiZm9vYmFyIik7CiAgIGNvbnN0IGFic2w6OnN0cmluZ192aWV3
IGIoczEpOwogICBjb25zdCBhYnNsOjpzdHJpbmdfdmlldyBlOwpAQCAtMzYsNyArMzYsNyBAQCBU
RVNUKE1hdGNoVGVzdCwgU3RhcnRzV2l0aCkgewogfQogCiBURVNUKE1hdGNoVGVzdCwgRW5kc1dp
dGgpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgczEoIjEyMyIgIlwwIiAiNDU2IiwgNyk7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIHMxKCIxMjNcMGFiYyIsIDcpOwogICBjb25zdCBhYnNsOjpzdHJpbmdf
dmlldyBhKCJmb29iYXIiKTsKICAgY29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcgYihzMSk7CiAgIGNv
bnN0IGFic2w6OnN0cmluZ192aWV3IGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJl
cnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuY2MKaW5kZXggOTMwOWY5ZGE5ZGMuLjM4ZDE0
ODY5MGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9udW1iZXJzLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC0zNSwxNyArMzUsMTggQEAKICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvYXNjaWkuaCIK
ICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvY2hhcmNvbnYuaCIKICNpbmNsdWRlICJhYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvbWVtdXRpbC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgog
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKIAot
Ym9vbCBTaW1wbGVBdG9mKGFic2w6OnN0cmluZ192aWV3IHN0ciwgZmxvYXQqIHZhbHVlKSB7Ci0g
ICp2YWx1ZSA9IDAuMDsKK2Jvb2wgU2ltcGxlQXRvZihhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGZs
b2F0KiBvdXQpIHsKKyAgKm91dCA9IDAuMDsKICAgc3RyID0gU3RyaXBBc2NpaVdoaXRlc3BhY2Uo
c3RyKTsKICAgaWYgKCFzdHIuZW1wdHkoKSAmJiBzdHJbMF0gPT0gJysnKSB7CiAgICAgc3RyLnJl
bW92ZV9wcmVmaXgoMSk7CiAgIH0KLSAgYXV0byByZXN1bHQgPSBhYnNsOjpmcm9tX2NoYXJzKHN0
ci5kYXRhKCksIHN0ci5kYXRhKCkgKyBzdHIuc2l6ZSgpLCAqdmFsdWUpOworICBhdXRvIHJlc3Vs
dCA9IGFic2w6OmZyb21fY2hhcnMoc3RyLmRhdGEoKSwgc3RyLmRhdGEoKSArIHN0ci5zaXplKCks
ICpvdXQpOwogICBpZiAocmVzdWx0LmVjID09IHN0ZDo6ZXJyYzo6aW52YWxpZF9hcmd1bWVudCkg
ewogICAgIHJldHVybiBmYWxzZTsKICAgfQpAQCAtNTMsMjUgKzU0LDI1IEBAIGJvb2wgU2ltcGxl
QXRvZihhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGZsb2F0KiB2YWx1ZSkgewogICAgIC8vIG5vdCBh
bGwgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBjb25zdW1lZAogICAgIHJldHVybiBmYWxzZTsK
ICAgfQotICAvLyBmcm9tX2NoYXJzKCkgd2l0aCBEUiAzODAxJ3MgY3VycmVudCB3b3JkaW5nIHdp
bGwgcmV0dXJuIG1heCgpIG9uCisgIC8vIGZyb21fY2hhcnMoKSB3aXRoIERSIDMwODEncyBjdXJy
ZW50IHdvcmRpbmcgd2lsbCByZXR1cm4gbWF4KCkgb24KICAgLy8gb3ZlcmZsb3cuICBTaW1wbGVB
dG9mIHJldHVybnMgaW5maW5pdHkgaW5zdGVhZC4KICAgaWYgKHJlc3VsdC5lYyA9PSBzdGQ6OmVy
cmM6OnJlc3VsdF9vdXRfb2ZfcmFuZ2UpIHsKLSAgICBpZiAoKnZhbHVlID4gMS4wKSB7Ci0gICAg
ICAqdmFsdWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKLSAgICB9
IGVsc2UgaWYgKCp2YWx1ZSA8IC0xLjApIHsKLSAgICAgICp2YWx1ZSA9IC1zdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICBpZiAoKm91dCA+IDEuMCkgeworICAgICAg
Km91dCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAgIH0gZWxz
ZSBpZiAoKm91dCA8IC0xLjApIHsKKyAgICAgICpvdXQgPSAtc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCk7CiAgICAgfQogICB9CiAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFNpbXBsZUF0b2QoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBkb3VibGUqIHZhbHVlKSB7Ci0gICp2
YWx1ZSA9IDAuMDsKK2Jvb2wgU2ltcGxlQXRvZChhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGRvdWJs
ZSogb3V0KSB7CisgICpvdXQgPSAwLjA7CiAgIHN0ciA9IFN0cmlwQXNjaWlXaGl0ZXNwYWNlKHN0
cik7CiAgIGlmICghc3RyLmVtcHR5KCkgJiYgc3RyWzBdID09ICcrJykgewogICAgIHN0ci5yZW1v
dmVfcHJlZml4KDEpOwogICB9Ci0gIGF1dG8gcmVzdWx0ID0gYWJzbDo6ZnJvbV9jaGFycyhzdHIu
ZGF0YSgpLCBzdHIuZGF0YSgpICsgc3RyLnNpemUoKSwgKnZhbHVlKTsKKyAgYXV0byByZXN1bHQg
PSBhYnNsOjpmcm9tX2NoYXJzKHN0ci5kYXRhKCksIHN0ci5kYXRhKCkgKyBzdHIuc2l6ZSgpLCAq
b3V0KTsKICAgaWYgKHJlc3VsdC5lYyA9PSBzdGQ6OmVycmM6OmludmFsaWRfYXJndW1lbnQpIHsK
ICAgICByZXR1cm4gZmFsc2U7CiAgIH0KQEAgLTc5LDEzICs4MCwxMyBAQCBib29sIFNpbXBsZUF0
b2QoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBkb3VibGUqIHZhbHVlKSB7CiAgICAgLy8gbm90IGFs
bCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGNvbnN1bWVkCiAgICAgcmV0dXJuIGZhbHNlOwog
ICB9Ci0gIC8vIGZyb21fY2hhcnMoKSB3aXRoIERSIDM4MDEncyBjdXJyZW50IHdvcmRpbmcgd2ls
bCByZXR1cm4gbWF4KCkgb24KKyAgLy8gZnJvbV9jaGFycygpIHdpdGggRFIgMzA4MSdzIGN1cnJl
bnQgd29yZGluZyB3aWxsIHJldHVybiBtYXgoKSBvbgogICAvLyBvdmVyZmxvdy4gIFNpbXBsZUF0
b2QgcmV0dXJucyBpbmZpbml0eSBpbnN0ZWFkLgogICBpZiAocmVzdWx0LmVjID09IHN0ZDo6ZXJy
Yzo6cmVzdWx0X291dF9vZl9yYW5nZSkgewotICAgIGlmICgqdmFsdWUgPiAxLjApIHsKLSAgICAg
ICp2YWx1ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKLSAgICB9
IGVsc2UgaWYgKCp2YWx1ZSA8IC0xLjApIHsKLSAgICAgICp2YWx1ZSA9IC1zdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgaWYgKCpvdXQgPiAxLjApIHsKKyAgICAg
ICpvdXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgfSBl
bHNlIGlmICgqb3V0IDwgLTEuMCkgeworICAgICAgKm91dCA9IC1zdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmluZmluaXR5KCk7CiAgICAgfQogICB9CiAgIHJldHVybiB0cnVlOwpAQCAtOTMs
MTQgKzk0LDYgQEAgYm9vbCBTaW1wbGVBdG9kKGFic2w6OnN0cmluZ192aWV3IHN0ciwgZG91Ymxl
KiB2YWx1ZSkgewogCiBuYW1lc3BhY2UgewogCi0vLyBUT0RPKHJvZ2VlZmYpOiByZXBsYWNlIHdp
dGggdGhlIHJlYWwgcmVsZWFzZWQgdGhpbmcgb25jZSB3ZSBmaWd1cmUgb3V0IHdoYXQKLS8vIGl0
IGlzLgotaW5saW5lIGJvb2wgQ2FzZUVxdWFsKGFic2w6OnN0cmluZ192aWV3IHBpZWNlMSwgYWJz
bDo6c3RyaW5nX3ZpZXcgcGllY2UyKSB7Ci0gIHJldHVybiAocGllY2UxLnNpemUoKSA9PSBwaWVj
ZTIuc2l6ZSgpICYmCi0gICAgICAgICAgMCA9PSBzdHJpbmdzX2ludGVybmFsOjptZW1jYXNlY21w
KHBpZWNlMS5kYXRhKCksIHBpZWNlMi5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBpZWNlMS5zaXplKCkpKTsKLX0KLQogLy8gV3JpdGVzIGEgdHdv
LWNoYXJhY3RlciByZXByZXNlbnRhdGlvbiBvZiAnaScgdG8gJ2J1ZicuICdpJyBtdXN0IGJlIGlu
IHRoZQogLy8gcmFuZ2UgMCA8PSBpIDwgMTAwLCBhbmQgYnVmIG11c3QgaGF2ZSBzcGFjZSBmb3Ig
dHdvIGNoYXJhY3RlcnMuIEV4YW1wbGU6CiAvLyAgIGNoYXIgYnVmWzJdOwpAQCAtMTM2LDE4ICsx
MjksMTggQEAgaW5saW5lIHZvaWQgUHV0VHdvRGlnaXRzKHNpemVfdCBpLCBjaGFyKiBidWYpIHsK
IAogfSAgLy8gbmFtZXNwYWNlCiAKLWJvb2wgU2ltcGxlQXRvYihhYnNsOjpzdHJpbmdfdmlldyBz
dHIsIGJvb2wqIHZhbHVlKSB7Ci0gIEFCU0xfUkFXX0NIRUNLKHZhbHVlICE9IG51bGxwdHIsICJP
dXRwdXQgcG9pbnRlciBtdXN0IG5vdCBiZSBudWxscHRyLiIpOwotICBpZiAoQ2FzZUVxdWFsKHN0
ciwgInRydWUiKSB8fCBDYXNlRXF1YWwoc3RyLCAidCIpIHx8Ci0gICAgICBDYXNlRXF1YWwoc3Ry
LCAieWVzIikgfHwgQ2FzZUVxdWFsKHN0ciwgInkiKSB8fAotICAgICAgQ2FzZUVxdWFsKHN0ciwg
IjEiKSkgewotICAgICp2YWx1ZSA9IHRydWU7Citib29sIFNpbXBsZUF0b2IoYWJzbDo6c3RyaW5n
X3ZpZXcgc3RyLCBib29sKiBvdXQpIHsKKyAgQUJTTF9SQVdfQ0hFQ0sob3V0ICE9IG51bGxwdHIs
ICJPdXRwdXQgcG9pbnRlciBtdXN0IG5vdCBiZSBudWxscHRyLiIpOworICBpZiAoRXF1YWxzSWdu
b3JlQ2FzZShzdHIsICJ0cnVlIikgfHwgRXF1YWxzSWdub3JlQ2FzZShzdHIsICJ0IikgfHwKKyAg
ICAgIEVxdWFsc0lnbm9yZUNhc2Uoc3RyLCAieWVzIikgfHwgRXF1YWxzSWdub3JlQ2FzZShzdHIs
ICJ5IikgfHwKKyAgICAgIEVxdWFsc0lnbm9yZUNhc2Uoc3RyLCAiMSIpKSB7CisgICAgKm91dCA9
IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KLSAgaWYgKENhc2VFcXVhbChzdHIsICJmYWxz
ZSIpIHx8IENhc2VFcXVhbChzdHIsICJmIikgfHwKLSAgICAgIENhc2VFcXVhbChzdHIsICJubyIp
IHx8IENhc2VFcXVhbChzdHIsICJuIikgfHwKLSAgICAgIENhc2VFcXVhbChzdHIsICIwIikpIHsK
LSAgICAqdmFsdWUgPSBmYWxzZTsKKyAgaWYgKEVxdWFsc0lnbm9yZUNhc2Uoc3RyLCAiZmFsc2Ui
KSB8fCBFcXVhbHNJZ25vcmVDYXNlKHN0ciwgImYiKSB8fAorICAgICAgRXF1YWxzSWdub3JlQ2Fz
ZShzdHIsICJubyIpIHx8IEVxdWFsc0lnbm9yZUNhc2Uoc3RyLCAibiIpIHx8CisgICAgICBFcXVh
bHNJZ25vcmVDYXNlKHN0ciwgIjAiKSkgeworICAgICpvdXQgPSBmYWxzZTsKICAgICByZXR1cm4g
dHJ1ZTsKICAgfQogICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251
bWJlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVycy5oCmluZGV4IGY5YjJjY2VmOTRkLi4xMDA4
MzliMDQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9udW1iZXJzLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTQ0LDMzICs0NCwzOCBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyBDb252ZXJ0cyB0aGUg
Z2l2ZW4gc3RyaW5nIGludG8gYW4gaW50ZWdlciB2YWx1ZSwgcmV0dXJuaW5nIGB0cnVlYCBpZgog
Ly8gc3VjY2Vzc2Z1bC4gVGhlIHN0cmluZyBtdXN0IHJlZmxlY3QgYSBiYXNlLTEwIGludGVnZXIg
KG9wdGlvbmFsbHkgZm9sbG93ZWQgb3IKIC8vIHByZWNlZGVkIGJ5IEFTQ0lJIHdoaXRlc3BhY2Up
IHdob3NlIHZhbHVlIGZhbGxzIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgdGhlCi0vLyBpbnRlZ2VyIHR5
cGUuCisvLyBpbnRlZ2VyIHR5cGUuIElmIGFueSBlcnJvcnMgYXJlIGVuY291bnRlcmVkLCB0aGlz
IGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCwKKy8vIGxlYXZpbmcgYG91dGAgaW4gYW4gdW5zcGVj
aWZpZWQgc3RhdGUuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgaW50X3R5cGU+Ci1BQlNMX01VU1RfVVNF
X1JFU1VMVCBib29sIFNpbXBsZUF0b2koYWJzbDo6c3RyaW5nX3ZpZXcgcywgaW50X3R5cGUqIG91
dCk7CitBQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNpbXBsZUF0b2koYWJzbDo6c3RyaW5nX3Zp
ZXcgc3RyLCBpbnRfdHlwZSogb3V0KTsKIAogLy8gU2ltcGxlQXRvZigpCiAvLwogLy8gQ29udmVy
dHMgdGhlIGdpdmVuIHN0cmluZyAob3B0aW9uYWxseSBmb2xsb3dlZCBvciBwcmVjZWRlZCBieSBB
U0NJSQogLy8gd2hpdGVzcGFjZSkgaW50byBhIGZsb2F0LCB3aGljaCBtYXkgYmUgcm91bmRlZCBv
biBvdmVyZmxvdyBvciB1bmRlcmZsb3cuCi0vLyBTZWUgaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5j
b20vdy9jL3N0cmluZy9ieXRlL3N0cnRvZiBmb3IgZGV0YWlscyBhYm91dCB0aGUKLS8vIGFsbG93
ZWQgZm9ybWF0cyBmb3IgYHN0cmAuCi1BQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNpbXBsZUF0
b2YoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBmbG9hdCogdmFsdWUpOworLy8gU2VlIGh0dHBzOi8v
ZW4uY3BwcmVmZXJlbmNlLmNvbS93L2Mvc3RyaW5nL2J5dGUvc3RydG9mIGZvciBkZXRhaWxzIGFi
b3V0IHRoZQorLy8gYWxsb3dlZCBmb3JtYXRzIGZvciBgc3RyYC4gSWYgYW55IGVycm9ycyBhcmUg
ZW5jb3VudGVyZWQsIHRoaXMgZnVuY3Rpb24KKy8vIHJldHVybnMgYGZhbHNlYCwgbGVhdmluZyBg
b3V0YCBpbiBhbiB1bnNwZWNpZmllZCBzdGF0ZS4KK0FCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wg
U2ltcGxlQXRvZihhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGZsb2F0KiBvdXQpOwogCiAvLyBTaW1w
bGVBdG9kKCkKIC8vCiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nIChvcHRpb25hbGx5IGZv
bGxvd2VkIG9yIHByZWNlZGVkIGJ5IEFTQ0lJCiAvLyB3aGl0ZXNwYWNlKSBpbnRvIGEgZG91Ymxl
LCB3aGljaCBtYXkgYmUgcm91bmRlZCBvbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cuCi0vLyBTZWUg
aHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jL3N0cmluZy9ieXRlL3N0cnRvZiBmb3IgZGV0
YWlscyBhYm91dCB0aGUKLS8vIGFsbG93ZWQgZm9ybWF0cyBmb3IgYHN0cmAuCi1BQlNMX01VU1Rf
VVNFX1JFU1VMVCBib29sIFNpbXBsZUF0b2QoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBkb3VibGUq
IHZhbHVlKTsKKy8vIFNlZSBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jL3N0cmluZy9i
eXRlL3N0cnRvZiBmb3IgZGV0YWlscyBhYm91dCB0aGUKKy8vIGFsbG93ZWQgZm9ybWF0cyBmb3Ig
YHN0cmAuIElmIGFueSBlcnJvcnMgYXJlIGVuY291bnRlcmVkLCB0aGlzIGZ1bmN0aW9uCisvLyBy
ZXR1cm5zIGBmYWxzZWAsIGxlYXZpbmcgYG91dGAgaW4gYW4gdW5zcGVjaWZpZWQgc3RhdGUuCitB
QlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNpbXBsZUF0b2QoYWJzbDo6c3RyaW5nX3ZpZXcgc3Ry
LCBkb3VibGUqIG91dCk7CiAKIC8vIFNpbXBsZUF0b2IoKQogLy8KIC8vIENvbnZlcnRzIHRoZSBn
aXZlbiBzdHJpbmcgaW50byBhIGJvb2xlYW4sIHJldHVybmluZyBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1
bC4KIC8vIFRoZSBmb2xsb3dpbmcgY2FzZS1pbnNlbnNpdGl2ZSBzdHJpbmdzIGFyZSBpbnRlcnBy
ZXRlZCBhcyBib29sZWFuIGB0cnVlYDoKIC8vICJ0cnVlIiwgInQiLCAieWVzIiwgInkiLCAiMSIu
IFRoZSBmb2xsb3dpbmcgY2FzZS1pbnNlbnNpdGl2ZSBzdHJpbmdzCi0vLyBhcmUgaW50ZXJwcmV0
ZWQgYXMgYm9vbGVhbiBgZmFsc2VgOiAiZmFsc2UiLCAiZiIsICJubyIsICJuIiwgIjAiLgotQUJT
TF9NVVNUX1VTRV9SRVNVTFQgYm9vbCBTaW1wbGVBdG9iKGFic2w6OnN0cmluZ192aWV3IHN0ciwg
Ym9vbCogdmFsdWUpOworLy8gYXJlIGludGVycHJldGVkIGFzIGJvb2xlYW4gYGZhbHNlYDogImZh
bHNlIiwgImYiLCAibm8iLCAibiIsICIwIi4gSWYgYW55CisvLyBlcnJvcnMgYXJlIGVuY291bnRl
cmVkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCwgbGVhdmluZyBgb3V0YCBpbiBhbgor
Ly8gdW5zcGVjaWZpZWQgc3RhdGUuCitBQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNpbXBsZUF0
b2IoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBib29sKiBvdXQpOwogCiB9ICAvLyBuYW1lc3BhY2Ug
YWJzbAogCkBAIC0xNzUsOCArMTgwLDggQEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgYm9vbCBzYWZl
X3N0cnRvaV9iYXNlKGFic2w6OnN0cmluZ192aWV3IHMsIGludF90eXBlKiBvdXQsCiAvLyBwcmVj
ZWRlZCBieSBBU0NJSSB3aGl0ZXNwYWNlLCB3aXRoIGEgdmFsdWUgaW4gdGhlIHJhbmdlIG9mIHRo
ZSBjb3JyZXNwb25kaW5nCiAvLyBpbnRlZ2VyIHR5cGUuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgaW50
X3R5cGU+Ci1BQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNpbXBsZUF0b2koYWJzbDo6c3RyaW5n
X3ZpZXcgcywgaW50X3R5cGUqIG91dCkgewotICByZXR1cm4gbnVtYmVyc19pbnRlcm5hbDo6c2Fm
ZV9zdHJ0b2lfYmFzZShzLCBvdXQsIDEwKTsKK0FCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wgU2lt
cGxlQXRvaShhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGludF90eXBlKiBvdXQpIHsKKyAgcmV0dXJu
IG51bWJlcnNfaW50ZXJuYWw6OnNhZmVfc3RydG9pX2Jhc2Uoc3RyLCBvdXQsIDEwKTsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVyc19i
ZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfYmVuY2htYXJrLmNjCmluZGV4IDA1
NzBiNzU4NjMzLi41NGRiZWRkMzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJz
X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfYmVuY2htYXJrLmNjCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL251bWJlcnNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVyc190ZXN0LmNj
CmluZGV4IDM2ZmMwZDY0ZmQ1Li43N2Q3ZTc4MzViOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9udW1iZXJzX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzX3Rlc3QuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgogCiAjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL2ludGVybmFsL251bWJlcnNfdGVzdF9jb21tb24uaCIKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvcG93MTBfaGVscGVyLmgiCiAKIG5hbWVzcGFjZSB7CiAKQEAgLTE5MCw3ICsx
OTEsOCBAQCB2b2lkIENoZWNrVUludDY0KHVpbnQ2NF90IHgpIHsKICAgRVhQRUNUX0VRKGV4cGVj
dGVkLCBzdGQ6OnN0cmluZygmYnVmZmVyWzFdLCBhY3R1YWwpKSA8PCAiIElucHV0ICIgPDwgeDsK
IAogICBjaGFyKiBnZW5lcmljX2FjdHVhbCA9IGFic2w6Om51bWJlcnNfaW50ZXJuYWw6OkZhc3RJ
bnRUb0J1ZmZlcih4LCAmYnVmZmVyWzFdKTsKLSAgRVhQRUNUX0VRKGV4cGVjdGVkLCBzdGQ6OnN0
cmluZygmYnVmZmVyWzFdLCBnZW5lcmljX2FjdHVhbCkpIDw8ICIgSW5wdXQgIiA8PCB4OworICBF
WFBFQ1RfRVEoZXhwZWN0ZWQsIHN0ZDo6c3RyaW5nKCZidWZmZXJbMV0sIGdlbmVyaWNfYWN0dWFs
KSkKKyAgICAgIDw8ICIgSW5wdXQgIiA8PCB4OwogCiAgIGNoYXIqIG15X2FjdHVhbCA9CiAgICAg
ICBhYnNsOjpudW1iZXJzX2ludGVybmFsOjpGYXN0SW50VG9CdWZmZXIoTXlVSW50NjQoeCksICZi
dWZmZXJbMV0pOwpAQCAtNzExLDcgKzcxMyw3IEBAIFRFU1Qoc3RyaW5ndGVzdCwgc2FmZV9zdHJ0
b3U2NF9iYXNlX2xlbmd0aF9kZWxpbWl0ZWQpIHsKICAgfQogfQogCi0vLyBmZWVuYWJsZWV4Y2Vw
dCgpIGFuZCBmZWRpc2FibGVleGNlcHQoKSBhcmUgbWlzc2luZyBvbiBNYWMgT1MgWCwgTVNWQywK
Ky8vIGZlZW5hYmxlZXhjZXB0KCkgYW5kIGZlZGlzYWJsZWV4Y2VwdCgpIGFyZSBtaXNzaW5nIG9u
IG1hY09TLCBNU1ZDLAogLy8gYW5kIFdlYkFzc2VtYmx5LgogI2lmIGRlZmluZWQoX01TQ19WRVIp
IHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQogI2RlZmlu
ZSBBQlNMX01JU1NJTkdfRkVFTkFCTEVFWENFUFQgMQpAQCAtNzgzLDcgKzc4NSw3IEBAIHZvaWQg
RXhoYXVzdGl2ZUZsb2F0KHVpbnQzMl90IGNhc2VzLCBSJiYgcnVubmFibGUpIHsKICAgaWYgKGl0
ZXJzX3Blcl9mbG9hdCA9PSAwKSBpdGVyc19wZXJfZmxvYXQgPSAxOwogICBmb3IgKGZsb2F0IGYg
OiBmbG9hdHMpIHsKICAgICBpZiAoZiA9PSBsYXN0KSBjb250aW51ZTsKLSAgICBmbG9hdCB0ZXN0
ZiA9IG5leHRhZnRlcihsYXN0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwor
ICAgIGZsb2F0IHRlc3RmID0gc3RkOjpuZXh0YWZ0ZXIobGFzdCwgc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46Om1heCgpKTsKICAgICBydW5uYWJsZSh0ZXN0Zik7CiAgICAgcnVubmFibGUoLXRl
c3RmKTsKICAgICBsYXN0ID0gdGVzdGY7CkBAIC03OTcsNyArNzk5LDcgQEAgdm9pZCBFeGhhdXN0
aXZlRmxvYXQodWludDMyX3QgY2FzZXMsIFImJiBydW5uYWJsZSkgewogICAgICAgICBsYXN0ID0g
dGVzdGY7CiAgICAgICB9CiAgICAgfQotICAgIHRlc3RmID0gbmV4dGFmdGVyKGYsIDAuMGYpOwor
ICAgIHRlc3RmID0gc3RkOjpuZXh0YWZ0ZXIoZiwgMC4wZik7CiAgICAgaWYgKHRlc3RmID4gbGFz
dCkgewogICAgICAgcnVubmFibGUodGVzdGYpOwogICAgICAgcnVubmFibGUoLXRlc3RmKTsKQEAg
LTg3MSwxNSArODczLDE1IEBAIFRFU1RfRihTaW1wbGVEdG9hVGVzdCwgRXhoYXVzdGl2ZURvdWJs
ZVRvU2l4RGlnaXRzKSB7CiAgICAgfQogCiAgICAgZm9yIChpbnQgZXhwb25lbnQgPSAtMzI0OyBl
eHBvbmVudCA8PSAzMDg7ICsrZXhwb25lbnQpIHsKLSAgICAgIGRvdWJsZSBwb3d0ZW4gPSBwb3co
MTAuMCwgZXhwb25lbnQpOworICAgICAgZG91YmxlIHBvd3RlbiA9IGFic2w6OnN0cmluZ3NfaW50
ZXJuYWw6OlBvdzEwKGV4cG9uZW50KTsKICAgICAgIGlmIChwb3d0ZW4gPT0gMCkgcG93dGVuID0g
NWUtMzI0OwogICAgICAgaWYgKGtGbG9hdE51bUNhc2VzID49IDFlOSkgewogICAgICAgICAvLyBU
aGUgZXhoYXVzdGl2ZSB0ZXN0IHRha2VzIGEgdmVyeSBsb25nIHRpbWUsIHNvIGxvZyBwcm9ncmVz
cy4KICAgICAgICAgY2hhciBidWZba1NpeERpZ2l0c1RvQnVmZmVyU2l6ZV07CiAgICAgICAgIEFC
U0xfUkFXX0xPRygKICAgICAgICAgICAgIElORk8sICIlcyIsCi0gICAgICAgICAgICBhYnNsOjpT
dHJDYXQoIkV4cCAiLCBleHBvbmVudCwgIiBwb3d0ZW49IiwgcG93dGVuLCAiKCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcG93dGVuLCAiKSAoIiwKKyAgICAgICAgICAgIGFic2w6OlN0ckNh
dCgiRXhwICIsIGV4cG9uZW50LCAiIHBvd3Rlbj0iLCBwb3d0ZW4sICIoIiwgcG93dGVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICIpICgiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nKGJ1ZiwgU2l4RGlnaXRzVG9CdWZmZXIocG93dGVuLCBidWYpKSwgIikiKQogICAg
ICAgICAgICAgICAgIC5jX3N0cigpKTsKICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyX2NhdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5jYwppbmRleCBlZmE0ZmQ3M2Ri
YS4uZmZlOTlkYjgxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTc4LDkgKzc4LDkgQEAgQWxwaGFOdW06OkFscGhhTnVtKERlYyBkZWMp
IHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gU3RyQ2F0KCkKLS8vICAgIFRoaXMgbWVyZ2VzIHRo
ZSBnaXZlbiBzdHJpbmdzIG9yIGludGVnZXJzLCB3aXRoIG5vIGRlbGltaXRlci4gIFRoaXMKKy8v
ICAgIFRoaXMgbWVyZ2VzIHRoZSBnaXZlbiBzdHJpbmdzIG9yIGludGVnZXJzLCB3aXRoIG5vIGRl
bGltaXRlci4gVGhpcwogLy8gICAgaXMgZGVzaWduZWQgdG8gYmUgdGhlIGZhc3Rlc3QgcG9zc2li
bGUgd2F5IHRvIGNvbnN0cnVjdCBhIHN0cmluZyBvdXQKLS8vICAgIG9mIGEgbWl4IG9mIHJhdyBD
IHN0cmluZ3MsIFN0cmluZ1BpZWNlcywgc3RyaW5ncywgYW5kIGludGVnZXIgdmFsdWVzLgorLy8g
ICAgb2YgYSBtaXggb2YgcmF3IEMgc3RyaW5ncywgc3RyaW5nX3ZpZXdzLCBzdHJpbmdzLCBhbmQg
aW50ZWdlciB2YWx1ZXMuCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEFwcGVuZCBpcyBtZXJlbHkg
YSB2ZXJzaW9uIG9mIG1lbWNweSB0aGF0IHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIGJ5dGUK
QEAgLTg5LDcgKzg5LDkgQEAgc3RhdGljIGNoYXIqIEFwcGVuZChjaGFyKiBvdXQsIGNvbnN0IEFs
cGhhTnVtJiB4KSB7CiAgIC8vIG1lbWNweSBpcyBhbGxvd2VkIHRvIG92ZXJ3cml0ZSBhcmJpdHJh
cnkgbWVtb3J5LCBzbyBkb2luZyB0aGlzIGFmdGVyIHRoZQogICAvLyBjYWxsIHdvdWxkIGZvcmNl
IGFuIGV4dHJhIGZldGNoIG9mIHguc2l6ZSgpLgogICBjaGFyKiBhZnRlciA9IG91dCArIHguc2l6
ZSgpOwotICBtZW1jcHkob3V0LCB4LmRhdGEoKSwgeC5zaXplKCkpOworICBpZiAoeC5zaXplKCkg
IT0gMCkgeworICAgIG1lbWNweShvdXQsIHguZGF0YSgpLCB4LnNpemUoKSk7CisgIH0KICAgcmV0
dXJuIGFmdGVyOwogfQogCkBAIC0xMTksNyArMTIxLDcgQEAgc3RkOjpzdHJpbmcgU3RyQ2F0KGNv
bnN0IEFscGhhTnVtJiBhLCBjb25zdCBBbHBoYU51bSYgYiwgY29uc3QgQWxwaGFOdW0mIGMpIHsK
IH0KIAogc3RkOjpzdHJpbmcgU3RyQ2F0KGNvbnN0IEFscGhhTnVtJiBhLCBjb25zdCBBbHBoYU51
bSYgYiwgY29uc3QgQWxwaGFOdW0mIGMsCi0gICAgICAgICAgICAgIGNvbnN0IEFscGhhTnVtJiBk
KSB7CisgICAgICAgICAgICAgICAgICAgY29uc3QgQWxwaGFOdW0mIGQpIHsKICAgc3RkOjpzdHJp
bmcgcmVzdWx0OwogICBzdHJpbmdzX2ludGVybmFsOjpTVExTdHJpbmdSZXNpemVVbmluaXRpYWxp
emVkKAogICAgICAgJnJlc3VsdCwgYS5zaXplKCkgKyBiLnNpemUoKSArIGMuc2l6ZSgpICsgZC5z
aXplKCkpOwpAQCAtMTQ2LDggKzE0OCwxMCBAQCBzdGQ6OnN0cmluZyBDYXRQaWVjZXMoc3RkOjpp
bml0aWFsaXplcl9saXN0PGFic2w6OnN0cmluZ192aWV3PiBwaWVjZXMpIHsKICAgY2hhciogb3V0
ID0gYmVnaW47CiAgIGZvciAoY29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UgOiBwaWVjZXMp
IHsKICAgICBjb25zdCBzaXplX3QgdGhpc19zaXplID0gcGllY2Uuc2l6ZSgpOwotICAgIG1lbWNw
eShvdXQsIHBpZWNlLmRhdGEoKSwgdGhpc19zaXplKTsKLSAgICBvdXQgKz0gdGhpc19zaXplOwor
ICAgIGlmICh0aGlzX3NpemUgIT0gMCkgeworICAgICAgbWVtY3B5KG91dCwgcGllY2UuZGF0YSgp
LCB0aGlzX3NpemUpOworICAgICAgb3V0ICs9IHRoaXNfc2l6ZTsKKyAgICB9CiAgIH0KICAgYXNz
ZXJ0KG91dCA9PSBiZWdpbiArIHJlc3VsdC5zaXplKCkpOwogICByZXR1cm4gcmVzdWx0OwpAQCAt
MTc2LDggKzE4MCwxMCBAQCB2b2lkIEFwcGVuZFBpZWNlcyhzdGQ6OnN0cmluZyogZGVzdCwKICAg
Y2hhciogb3V0ID0gYmVnaW4gKyBvbGRfc2l6ZTsKICAgZm9yIChjb25zdCBhYnNsOjpzdHJpbmdf
dmlldyBwaWVjZSA6IHBpZWNlcykgewogICAgIGNvbnN0IHNpemVfdCB0aGlzX3NpemUgPSBwaWVj
ZS5zaXplKCk7Ci0gICAgbWVtY3B5KG91dCwgcGllY2UuZGF0YSgpLCB0aGlzX3NpemUpOwotICAg
IG91dCArPSB0aGlzX3NpemU7CisgICAgaWYgKHRoaXNfc2l6ZSAhPSAwKSB7CisgICAgICBtZW1j
cHkob3V0LCBwaWVjZS5kYXRhKCksIHRoaXNfc2l6ZSk7CisgICAgICBvdXQgKz0gdGhpc19zaXpl
OworICAgIH0KICAgfQogICBhc3NlcnQob3V0ID09IGJlZ2luICsgZGVzdC0+c2l6ZSgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJf
Y2F0LmgKaW5kZXggZGE5ZWQ5YTI2OWUuLmE5OWFhYzAxZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL3N0cl9jYXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQuaApAQCAtNSw3ICs1
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzcsMTIgKzM3LDEyIEBACiAvLyBh
dHRlbXB0IHRvIHBhc3MgJzonIGluc3RlYWQgb2YgIjoiIG1pZ2h0IHJlc3VsdCBpbiBhIDU4IGVu
ZGluZyB1cCBpbiB5b3VyCiAvLyByZXN1bHQuCiAvLwotLy8gQm9vbHMgY29udmVydCB0byAiMCIg
b3IgIjEiLgorLy8gQm9vbHMgY29udmVydCB0byAiMCIgb3IgIjEiLiBQb2ludGVycyB0byB0eXBl
cyBvdGhlciB0aGFuIGBjaGFyICpgIGFyZSBub3QKKy8vIHZhbGlkIGlucHV0cy4gTm8gb3V0cHV0
IGlzIGdlbmVyYXRlZCBmb3IgbnVsbCBgY2hhciAqYCBwb2ludGVycy4KIC8vCiAvLyBGbG9hdGlu
ZyBwb2ludCBudW1iZXJzIGFyZSBmb3JtYXR0ZWQgd2l0aCBzaXgtZGlnaXQgcHJlY2lzaW9uLCB3
aGljaCBpcwogLy8gdGhlIGRlZmF1bHQgZm9yICJzdGQ6OmNvdXQgPDwiIG9yIHByaW50ZiAiJWci
ICh0aGUgc2FtZSBhcyAiJS42ZyIpLgogLy8KLS8vCiAvLyBZb3UgY2FuIGNvbnZlcnQgdG8gaGV4
YWRlY2ltYWwgb3V0cHV0IHJhdGhlciB0aGFuIGRlY2ltYWwgb3V0cHV0IHVzaW5nIHRoZQogLy8g
YEhleGAgdHlwZSBjb250YWluZWQgaGVyZS4gVG8gZG8gc28sIHBhc3MgYEhleChteV9pbnQpYCBh
cyBhIHBhcmFtZXRlciB0bwogLy8gYFN0ckNhdCgpYCBvciBgU3RyQXBwZW5kKClgLiBZb3UgbWF5
IHNwZWNpZnkgYSBtaW5pbXVtIGhleCBmaWVsZCB3aWR0aCB1c2luZwpAQCAtNTcsNiArNTcsNyBA
QAogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHR5cGVf
dHJhaXRzPgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0Lmgi
CiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL251bWJlcnMuaCIKQEAgLTc4LDggKzc5LDggQEAgc3Ry
dWN0IEFscGhhTnVtQnVmZmVyIHsKIAogLy8gRW51bSB0aGF0IHNwZWNpZmllcyB0aGUgbnVtYmVy
IG9mIHNpZ25pZmljYW50IGRpZ2l0cyB0byByZXR1cm4gaW4gYSBgSGV4YCBvcgogLy8gYERlY2Ag
Y29udmVyc2lvbiBhbmQgZmlsbCBjaGFyYWN0ZXIgdG8gdXNlLiBBIGBrWmVyb1BhZDJgIHZhbHVl
LCBmb3IgZXhhbXBsZSwKLS8vIHdvdWxkIHByb2R1Y2UgaGV4YWRlY2ltYWwgc3RyaW5ncyBzdWNo
IGFzICIwQSIsIjBGIiBhbmQgYSAna1NwYWNlUGFkNScgdmFsdWUKLS8vIHdvdWxkIHByb2R1Y2Ug
aGV4YWRlY2ltYWwgc3RyaW5ncyBzdWNoIGFzICIgICAgQSIsIiAgICBGIi4KKy8vIHdvdWxkIHBy
b2R1Y2UgaGV4YWRlY2ltYWwgc3RyaW5ncyBzdWNoIGFzICIwYSIsIjBmIiBhbmQgYSAna1NwYWNl
UGFkNScgdmFsdWUKKy8vIHdvdWxkIHByb2R1Y2UgaGV4YWRlY2ltYWwgc3RyaW5ncyBzdWNoIGFz
ICIgICAgYSIsIiAgICBmIi4KIGVudW0gUGFkU3BlYyA6IHVpbnQ4X3QgewogICBrTm9QYWQgPSAx
LAogICBrWmVyb1BhZDIsCkBAIC05Nyw2ICs5OCwxMCBAQCBlbnVtIFBhZFNwZWMgOiB1aW50OF90
IHsKICAga1plcm9QYWQxNCwKICAga1plcm9QYWQxNSwKICAga1plcm9QYWQxNiwKKyAga1plcm9Q
YWQxNywKKyAga1plcm9QYWQxOCwKKyAga1plcm9QYWQxOSwKKyAga1plcm9QYWQyMCwKIAogICBr
U3BhY2VQYWQyID0ga1plcm9QYWQyICsgNjQsCiAgIGtTcGFjZVBhZDMsCkBAIC0xMTMsNiArMTE4
LDEwIEBAIGVudW0gUGFkU3BlYyA6IHVpbnQ4X3QgewogICBrU3BhY2VQYWQxNCwKICAga1NwYWNl
UGFkMTUsCiAgIGtTcGFjZVBhZDE2LAorICBrU3BhY2VQYWQxNywKKyAga1NwYWNlUGFkMTgsCisg
IGtTcGFjZVBhZDE5LAorICBrU3BhY2VQYWQyMCwKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkBAIC0yMzcsNiArMjQ2LDcgQEAgY2xhc3MgQWxwaGFOdW0gewogCiAgIEFscGhhTnVtKGNv
bnN0IGNoYXIqIGNfc3RyKSA6IHBpZWNlXyhjX3N0cikge30gIC8vIE5PTElOVChydW50aW1lL2V4
cGxpY2l0KQogICBBbHBoYU51bShhYnNsOjpzdHJpbmdfdmlldyBwYykgOiBwaWVjZV8ocGMpIHt9
ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKKwogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxs
b2NhdG9yPgogICBBbHBoYU51bSggIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0KQogICAgICAg
Y29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgQWxs
b2NhdG9yPiYgc3RyKQpAQCAtMjYwLDYgKzI3MCwxNyBAQCBjbGFzcyBBbHBoYU51bSB7CiAgIEFs
cGhhTnVtKFQgZSkgIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0KQogICAgICAgOiBBbHBoYU51
bShzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlwZT4oZSkp
IHt9CiAKKyAgLy8gdmVjdG9yPGJvb2w+OjpyZWZlcmVuY2UgYW5kIGNvbnN0X3JlZmVyZW5jZSBy
ZXF1aXJlIHNwZWNpYWwgaGVscCB0bworICAvLyBjb252ZXJ0IHRvIGBBbHBoYU51bWAgYmVjYXVz
ZSBpdCByZXF1aXJlcyB0d28gdXNlciBkZWZpbmVkIGNvbnZlcnNpb25zLgorICB0ZW1wbGF0ZSA8
CisgICAgICB0eXBlbmFtZSBULAorICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAg
ICAgICAgc3RkOjppc19jbGFzczxUPjo6dmFsdWUgJiYKKyAgICAgICAgICAoc3RkOjppc19zYW1l
PFQsIHN0ZDo6dmVjdG9yPGJvb2w+OjpyZWZlcmVuY2U+Ojp2YWx1ZSB8fAorICAgICAgICAgICBz
dGQ6OmlzX3NhbWU8VCwgc3RkOjp2ZWN0b3I8Ym9vbD46OmNvbnN0X3JlZmVyZW5jZT46OnZhbHVl
KT46OnR5cGUqID0KKyAgICAgICAgICBudWxscHRyPgorICBBbHBoYU51bShUIGUpIDogQWxwaGFO
dW0oc3RhdGljX2Nhc3Q8Ym9vbD4oZSkpIHt9ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkK
KwogIHByaXZhdGU6CiAgIGFic2w6OnN0cmluZ192aWV3IHBpZWNlXzsKICAgY2hhciBkaWdpdHNf
W251bWJlcnNfaW50ZXJuYWw6OmtGYXN0VG9CdWZmZXJTaXplXTsKQEAgLTMwOSwxNiArMzMwLDE1
IEBAIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBzdGQ6OnN0cmluZyBTdHJDYXQoY29uc3Qg
QWxwaGFOdW0mIGEpIHsKIAogQUJTTF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3RyQ2F0
KGNvbnN0IEFscGhhTnVtJiBhLCBjb25zdCBBbHBoYU51bSYgYik7CiBBQlNMX01VU1RfVVNFX1JF
U1VMVCBzdGQ6OnN0cmluZyBTdHJDYXQoY29uc3QgQWxwaGFOdW0mIGEsIGNvbnN0IEFscGhhTnVt
JiBiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBbHBoYU51bSYg
Yyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWxwaGFO
dW0mIGMpOwogQUJTTF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3RyQ2F0KGNvbnN0IEFs
cGhhTnVtJiBhLCBjb25zdCBBbHBoYU51bSYgYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQWxwaGFOdW0mIGMsIGNvbnN0IEFscGhhTnVtJiBkKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBbHBoYU51bSYgYywgY29uc3Qg
QWxwaGFOdW0mIGQpOwogCiAvLyBTdXBwb3J0IDUgb3IgbW9yZSBhcmd1bWVudHMKIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBVj4KLUFCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBzdGQ6OnN0cmlu
ZyBTdHJDYXQoY29uc3QgQWxwaGFOdW0mIGEsIGNvbnN0IEFscGhhTnVtJiBiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWxwaGFOdW0mIGMsIGNvbnN0
IEFscGhhTnVtJiBkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQWxwaGFOdW0mIGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBBViYuLi4gYXJncykgeworQUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIHN0
ZDo6c3RyaW5nIFN0ckNhdCgKKyAgICBjb25zdCBBbHBoYU51bSYgYSwgY29uc3QgQWxwaGFOdW0m
IGIsIGNvbnN0IEFscGhhTnVtJiBjLCBjb25zdCBBbHBoYU51bSYgZCwKKyAgICBjb25zdCBBbHBo
YU51bSYgZSwgY29uc3QgQVYmLi4uIGFyZ3MpIHsKICAgcmV0dXJuIHN0cmluZ3NfaW50ZXJuYWw6
OkNhdFBpZWNlcygKICAgICAgIHthLlBpZWNlKCksIGIuUGllY2UoKSwgYy5QaWVjZSgpLCBkLlBp
ZWNlKCksIGUuUGllY2UoKSwKICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBBbHBoYU51bSY+KGFy
Z3MpLlBpZWNlKCkuLi59KTsKQEAgLTMzNiwxOCArMzU2LDE4IEBAIEFCU0xfTVVTVF9VU0VfUkVT
VUxUIGlubGluZSBzdGQ6OnN0cmluZyBTdHJDYXQoY29uc3QgQWxwaGFOdW0mIGEsIGNvbnN0IEFs
cGhhTnVtCiAvLyBub3QgdHJ5IHRvIGNoZWNrIGVhY2ggb2YgaXRzIGlucHV0IGFyZ3VtZW50cyB0
byBiZSBzdXJlIHRoYXQgdGhleSBhcmUgbm90CiAvLyBhIHN1YnNldCBvZiB0aGUgc3RyaW5nIGJl
aW5nIGFwcGVuZGVkIHRvLiBUaGF0IGlzLCB3aGlsZSB0aGlzIHdpbGwgd29yazoKIC8vCi0vLyAg
IHN0cmluZyBzID0gImZvbyI7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSAiZm9vIjsKIC8vICAgcyAr
PSBzOwogLy8KIC8vIFRoaXMgb3V0cHV0IGlzIHVuZGVmaW5lZDoKIC8vCi0vLyAgIHN0cmluZyBz
ID0gImZvbyI7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSAiZm9vIjsKIC8vICAgU3RyQXBwZW5kKCZz
LCBzKTsKIC8vCiAvLyBUaGlzIG91dHB1dCBpcyB1bmRlZmluZWQgYXMgd2VsbCwgc2luY2UgYGFi
c2w6OnN0cmluZ192aWV3YCBkb2VzIG5vdCBvd24gaXRzCiAvLyBkYXRhOgogLy8KLS8vICAgc3Ry
aW5nIHMgPSAiZm9vYmFyIjsKKy8vICAgc3RkOjpzdHJpbmcgcyA9ICJmb29iYXIiOwogLy8gICBh
YnNsOjpzdHJpbmdfdmlldyBwID0gczsKIC8vICAgU3RyQXBwZW5kKCZzLCBwKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3RyX2NhdF9iZW5jaG1hcmsuY2MKaW5kZXggYjZkZjllMzA5YzQuLjE0YzYzYjNmYzlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXRfYmVuY2htYXJrLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3Mvc3RyX2NhdF9iZW5jaG1hcmsuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9zdHJfY2F0X3Rlc3QuY2MKaW5kZXggNTU1ZDhkYjNlYjguLjI5ZGI5YzAy
Mzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXRfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cl9jYXRfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtMTgsNiArMTgsNyBAQAogCiAjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNs
dWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5oIgpAQCAtMTA2LDExICsxMDcs
NyBAQCBURVNUKFN0ckNhdCwgRW51bXMpIHsKIFRFU1QoU3RyQ2F0LCBCYXNpY3MpIHsKICAgc3Rk
OjpzdHJpbmcgcmVzdWx0OwogCi0gIHN0ZDo6c3RyaW5nIHN0cnNbXSA9IHsKLSAgICAiSGVsbG8i
LAotICAgICJDcnVlbCIsCi0gICAgIldvcmxkIgotICB9OworICBzdGQ6OnN0cmluZyBzdHJzW10g
PSB7IkhlbGxvIiwgIkNydWVsIiwgIldvcmxkIn07CiAKICAgc3RkOjpzdHJpbmcgc3Rkc3Ryc1td
ID0gewogICAgICJzdGQ6OkhlbGxvIiwKQEAgLTE2NCw5ICsxNjEsMTAgQEAgVEVTVChTdHJDYXQs
IEJhc2ljcykgewogICByZXN1bHQgPSBhYnNsOjpTdHJDYXQodWk2NHNbMF0sICIsICIsIHVpNjRz
WzFdLCAiISIpOwogICBFWFBFQ1RfRVEocmVzdWx0LCAiMTIzNDU2Nzg5MTAsIDEwOTg3NjU0MzIx
ISIpOwogCi0gIHN0ZDo6c3RyaW5nIG9uZSA9ICIxIjsgIC8vIEFjdHVhbGx5LCBpdCdzIHRoZSBz
aXplIG9mIHRoaXMgc3RkOjpzdHJpbmcgdGhhdCB3ZSB3YW50OyBhCi0gICAgICAgICAgICAgICAg
ICAgICAvLyA2NC1iaXQgYnVpbGQgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHNpemVfdCBhbmQgdWlu
dDY0X3QsCi0gICAgICAgICAgICAgICAgICAgICAvLyBldmVuIHRob3VnaCB0aGV5J3JlIGJvdGgg
dW5zaWduZWQgNjQtYml0IHZhbHVlcy4KKyAgc3RkOjpzdHJpbmcgb25lID0KKyAgICAgICIxIjsg
IC8vIEFjdHVhbGx5LCBpdCdzIHRoZSBzaXplIG9mIHRoaXMgc3RkOjpzdHJpbmcgdGhhdCB3ZSB3
YW50OyBhCisgICAgICAgICAgICAvLyA2NC1iaXQgYnVpbGQgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVu
IHNpemVfdCBhbmQgdWludDY0X3QsCisgICAgICAgICAgICAvLyBldmVuIHRob3VnaCB0aGV5J3Jl
IGJvdGggdW5zaWduZWQgNjQtYml0IHZhbHVlcy4KICAgcmVzdWx0ID0gYWJzbDo6U3RyQ2F0KCJB
bmQgYSAiLCBvbmUuc2l6ZSgpLCAiIGFuZCBhICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAm
cmVzdWx0WzJdIC0gJnJlc3VsdFswXSwgIiBhbmQgYSAiLCBvbmUsICIgMiAzIDQiLCAiISIpOwog
ICBFWFBFQ1RfRVEocmVzdWx0LCAiQW5kIGEgMSBhbmQgYSAyIGFuZCBhIDEgMiAzIDQhIik7CkBA
IC0zMDYsMTEgKzMwNCw3IEBAIFRFU1QoU3RyQ2F0LCBNYXhBcmdzKSB7CiBURVNUKFN0ckFwcGVu
ZCwgQmFzaWNzKSB7CiAgIHN0ZDo6c3RyaW5nIHJlc3VsdCA9ICJleGlzdGluZyB0ZXh0IjsKIAot
ICBzdGQ6OnN0cmluZyBzdHJzW10gPSB7Ci0gICAgIkhlbGxvIiwKLSAgICAiQ3J1ZWwiLAotICAg
ICJXb3JsZCIKLSAgfTsKKyAgc3RkOjpzdHJpbmcgc3Ryc1tdID0geyJIZWxsbyIsICJDcnVlbCIs
ICJXb3JsZCJ9OwogCiAgIHN0ZDo6c3RyaW5nIHN0ZHN0cnNbXSA9IHsKICAgICAic3RkOjpIZWxs
byIsCkBAIC0zNjUsOSArMzU5LDEwIEBAIFRFU1QoU3RyQXBwZW5kLCBCYXNpY3MpIHsKICAgYWJz
bDo6U3RyQXBwZW5kKCZyZXN1bHQsIHVpNjRzWzBdLCAiLCAiLCB1aTY0c1sxXSwgIiEiKTsKICAg
RVhQRUNUX0VRKHJlc3VsdC5zdWJzdHIob2xkX3NpemUpLCAiMTIzNDU2Nzg5MTAsIDEwOTg3NjU0
MzIxISIpOwogCi0gIHN0ZDo6c3RyaW5nIG9uZSA9ICIxIjsgIC8vIEFjdHVhbGx5LCBpdCdzIHRo
ZSBzaXplIG9mIHRoaXMgc3RkOjpzdHJpbmcgdGhhdCB3ZSB3YW50OyBhCi0gICAgICAgICAgICAg
ICAgICAgICAvLyA2NC1iaXQgYnVpbGQgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHNpemVfdCBhbmQg
dWludDY0X3QsCi0gICAgICAgICAgICAgICAgICAgICAvLyBldmVuIHRob3VnaCB0aGV5J3JlIGJv
dGggdW5zaWduZWQgNjQtYml0IHZhbHVlcy4KKyAgc3RkOjpzdHJpbmcgb25lID0KKyAgICAgICIx
IjsgIC8vIEFjdHVhbGx5LCBpdCdzIHRoZSBzaXplIG9mIHRoaXMgc3RkOjpzdHJpbmcgdGhhdCB3
ZSB3YW50OyBhCisgICAgICAgICAgICAvLyA2NC1iaXQgYnVpbGQgZGlzdGluZ3Vpc2hlcyBiZXR3
ZWVuIHNpemVfdCBhbmQgdWludDY0X3QsCisgICAgICAgICAgICAvLyBldmVuIHRob3VnaCB0aGV5
J3JlIGJvdGggdW5zaWduZWQgNjQtYml0IHZhbHVlcy4KICAgb2xkX3NpemUgPSByZXN1bHQuc2l6
ZSgpOwogICBhYnNsOjpTdHJBcHBlbmQoJnJlc3VsdCwgIkFuZCBhICIsIG9uZS5zaXplKCksICIg
YW5kIGEgIiwKICAgICAgICAgICAgICAgICAgICZyZXN1bHRbMl0gLSAmcmVzdWx0WzBdLCAiIGFu
ZCBhICIsIG9uZSwgIiAyIDMgNCIsICIhIik7CkBAIC00MDEsNiArMzk2LDMyIEBAIFRFU1QoU3Ry
QXBwZW5kLCBCYXNpY3MpIHsKICAgICAgICAgICAgICJObyBsaW1pdCB0aGFua3MgdG8gQysrMTEn
cyB2YXJpYWRpYyB0ZW1wbGF0ZXMiKTsKIH0KIAorVEVTVChTdHJDYXQsIFZlY3RvckJvb2xSZWZl
cmVuY2VUeXBlcykgeworICBzdGQ6OnZlY3Rvcjxib29sPiB2OworICB2LnB1c2hfYmFjayh0cnVl
KTsKKyAgdi5wdXNoX2JhY2soZmFsc2UpOworICBzdGQ6OnZlY3Rvcjxib29sPiBjb25zdCYgY3Yg
PSB2OworICAvLyBUZXN0IHRoYXQgdmVjdG9yPGJvb2w+OjpyZWZlcmVuY2UgYW5kIHZlY3Rvcjxi
b29sPjo6Y29uc3RfcmVmZXJlbmNlCisgIC8vIGFyZSBoYW5kbGVkIGFzIGlmIHRoZSB3ZXJlIHJl
YWxseSBib29sIHR5cGVzIGFuZCBub3QgdGhlIHByb3h5IHR5cGVzCisgIC8vIHRoZXkgcmVhbGx5
IGFyZS4KKyAgc3RkOjpzdHJpbmcgcmVzdWx0ID0gYWJzbDo6U3RyQ2F0KHZbMF0sIHZbMV0sIGN2
WzBdLCBjdlsxXSk7IC8vIE5PTElOVAorICBFWFBFQ1RfRVEocmVzdWx0LCAiMTAxMCIpOworfQor
CisvLyBQYXNzaW5nIG51bGxwdHIgdG8gbWVtY3B5IGlzIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQg
dGhpcyB0ZXN0CisvLyBwcm92aWRlcyBjb3ZlcmFnZSBvZiBjb2RlcGF0aHMgdGhhdCBoYW5kbGUg
ZW1wdHkgc3RyaW5ncyB3aXRoIG51bGxwdHJzLgorVEVTVChTdHJDYXQsIEF2b2lkc01lbWNweVdp
dGhOdWxscHRyKSB7CisgIEVYUEVDVF9FUShhYnNsOjpTdHJDYXQoNDIsIGFic2w6OnN0cmluZ192
aWV3e30pLCAiNDIiKTsKKworICAvLyBDb3ZlciBDYXRQaWVjZXMgY29kZS4KKyAgRVhQRUNUX0VR
KGFic2w6OlN0ckNhdCgxLCAyLCAzLCA0LCA1LCBhYnNsOjpzdHJpbmdfdmlld3t9KSwgIjEyMzQ1
Iik7CisKKyAgLy8gQ292ZXIgQXBwZW5kUGllY2VzLgorICBzdGQ6OnN0cmluZyByZXN1bHQ7Cisg
IGFic2w6OlN0ckFwcGVuZCgmcmVzdWx0LCAxLCAyLCAzLCA0LCA1LCBhYnNsOjpzdHJpbmdfdmll
d3t9KTsKKyAgRVhQRUNUX0VRKHJlc3VsdCwgIjEyMzQ1Iik7Cit9CisKICNpZmRlZiBHVEVTVF9I
QVNfREVBVEhfVEVTVAogVEVTVChTdHJBcHBlbmQsIERlYXRoKSB7CiAgIHN0ZDo6c3RyaW5nIHMg
PSAic2VsZiI7CkBAIC00MjcsNyArNDQ4LDcgQEAgdm9pZCBDaGVja0hleChJbnRUeXBlIHYsIGNv
bnN0IGNoYXIqIG5vcGFkX2Zvcm1hdCwgY29uc3QgY2hhciogemVyb3BhZF9mb3JtYXQsCiAgIHNu
cHJpbnRmKGV4cGVjdGVkLCBzaXplb2YoZXhwZWN0ZWQpLCBub3BhZF9mb3JtYXQsIHYpOwogICBF
WFBFQ1RfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgPDwgIiBkZWNpbWFsIHZhbHVlICIgPDwgdjsKIAot
ICBmb3IgKGludCBzcGVjID0gYWJzbDo6a1plcm9QYWQyOyBzcGVjIDw9IGFic2w6OmtaZXJvUGFk
MTY7ICsrc3BlYykgeworICBmb3IgKGludCBzcGVjID0gYWJzbDo6a1plcm9QYWQyOyBzcGVjIDw9
IGFic2w6OmtaZXJvUGFkMjA7ICsrc3BlYykgewogICAgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9CiAg
ICAgICAgIGFic2w6OlN0ckNhdChhYnNsOjpIZXgodiwgc3RhdGljX2Nhc3Q8YWJzbDo6UGFkU3Bl
Yz4oc3BlYykpKTsKICAgICBzbnByaW50ZihleHBlY3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSwgemVy
b3BhZF9mb3JtYXQsCkBAIC00MzUsNyArNDU2LDcgQEAgdm9pZCBDaGVja0hleChJbnRUeXBlIHYs
IGNvbnN0IGNoYXIqIG5vcGFkX2Zvcm1hdCwgY29uc3QgY2hhciogemVyb3BhZF9mb3JtYXQsCiAg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwpIDw8ICIgZGVjaW1hbCB2YWx1ZSAiIDw8IHY7
CiAgIH0KIAotICBmb3IgKGludCBzcGVjID0gYWJzbDo6a1NwYWNlUGFkMjsgc3BlYyA8PSBhYnNs
OjprU3BhY2VQYWQxNjsgKytzcGVjKSB7CisgIGZvciAoaW50IHNwZWMgPSBhYnNsOjprU3BhY2VQ
YWQyOyBzcGVjIDw9IGFic2w6OmtTcGFjZVBhZDIwOyArK3NwZWMpIHsKICAgICBzdGQ6OnN0cmlu
ZyBhY3R1YWwgPQogICAgICAgICBhYnNsOjpTdHJDYXQoYWJzbDo6SGV4KHYsIHN0YXRpY19jYXN0
PGFic2w6OlBhZFNwZWM+KHNwZWMpKSk7CiAgICAgc25wcmludGYoZXhwZWN0ZWQsIHNpemVvZihl
eHBlY3RlZCksIHNwYWNlcGFkX2Zvcm1hdCwKQEAgLTQ1Myw3ICs0NzQsNyBAQCB2b2lkIENoZWNr
RGVjKEludFR5cGUgdiwgY29uc3QgY2hhciogbm9wYWRfZm9ybWF0LCBjb25zdCBjaGFyKiB6ZXJv
cGFkX2Zvcm1hdCwKICAgc25wcmludGYoZXhwZWN0ZWQsIHNpemVvZihleHBlY3RlZCksIG5vcGFk
X2Zvcm1hdCwgdik7CiAgIEVYUEVDVF9FUShleHBlY3RlZCwgYWN0dWFsKSA8PCAiIGRlY2ltYWwg
dmFsdWUgIiA8PCB2OwogCi0gIGZvciAoaW50IHNwZWMgPSBhYnNsOjprWmVyb1BhZDI7IHNwZWMg
PD0gYWJzbDo6a1plcm9QYWQxNjsgKytzcGVjKSB7CisgIGZvciAoaW50IHNwZWMgPSBhYnNsOjpr
WmVyb1BhZDI7IHNwZWMgPD0gYWJzbDo6a1plcm9QYWQyMDsgKytzcGVjKSB7CiAgICAgc3RkOjpz
dHJpbmcgYWN0dWFsID0KICAgICAgICAgYWJzbDo6U3RyQ2F0KGFic2w6OkRlYyh2LCBzdGF0aWNf
Y2FzdDxhYnNsOjpQYWRTcGVjPihzcGVjKSkpOwogICAgIHNucHJpbnRmKGV4cGVjdGVkLCBzaXpl
b2YoZXhwZWN0ZWQpLCB6ZXJvcGFkX2Zvcm1hdCwKQEAgLTQ2Myw3ICs0ODQsNyBAQCB2b2lkIENo
ZWNrRGVjKEludFR5cGUgdiwgY29uc3QgY2hhciogbm9wYWRfZm9ybWF0LCBjb25zdCBjaGFyKiB6
ZXJvcGFkX2Zvcm1hdCwKICAgICAgICAgPDwgIicgZGlnaXRzICIgPDwgKHNwZWMgLSBhYnNsOjpr
WmVyb1BhZDIgKyAyKTsKICAgfQogCi0gIGZvciAoaW50IHNwZWMgPSBhYnNsOjprU3BhY2VQYWQy
OyBzcGVjIDw9IGFic2w6OmtTcGFjZVBhZDE2OyArK3NwZWMpIHsKKyAgZm9yIChpbnQgc3BlYyA9
IGFic2w6OmtTcGFjZVBhZDI7IHNwZWMgPD0gYWJzbDo6a1NwYWNlUGFkMjA7ICsrc3BlYykgewog
ICAgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9CiAgICAgICAgIGFic2w6OlN0ckNhdChhYnNsOjpEZWMo
diwgc3RhdGljX2Nhc3Q8YWJzbDo6UGFkU3BlYz4oc3BlYykpKTsKICAgICBzbnByaW50ZihleHBl
Y3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSwgc3BhY2VwYWRfZm9ybWF0LApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9zdHJfZm9ybWF0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaAppbmRl
eCAyZDA3NzI1ZGUyMS4uNjA3ZTJiY2FhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Ry
X2Zvcm1hdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oCkBAIC01LDcgKzUsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yMCwxMSArMjAsMTMgQEAKIC8vIFRoZSBg
c3RyX2Zvcm1hdGAgbGlicmFyeSBpcyBhIHR5cGVzYWZlIHJlcGxhY2VtZW50IGZvciB0aGUgZmFt
aWx5IG9mCiAvLyBgcHJpbnRmKClgIHN0cmluZyBmb3JtYXR0aW5nIHJvdXRpbmVzIHdpdGhpbiB0
aGUgYDxjc3RkaW8+YCBzdGFuZGFyZCBsaWJyYXJ5CiAvLyBoZWFkZXIuIExpa2UgdGhlIGBwcmlu
dGZgIGZhbWlseSwgdGhlIGBzdHJfZm9ybWF0YCB1c2VzIGEgImZvcm1hdCBzdHJpbmciIHRvCi0v
LyBwZXJmb3JtIGFyZ3VtZW50IHN1YnN0aXR1dGlvbnMgYmFzZWQgb24gdHlwZXMuCisvLyBwZXJm
b3JtIGFyZ3VtZW50IHN1YnN0aXR1dGlvbnMgYmFzZWQgb24gdHlwZXMuIFNlZSB0aGUgYEZvcm1h
dFNwZWNgIHNlY3Rpb24KKy8vIGJlbG93IGZvciBmb3JtYXQgc3RyaW5nIGRvY3VtZW50YXRpb24u
CiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KCIl
cyAlcyBZb3UgaGF2ZSAkJWQhIiwgIkhlbGxvIiwgbmFtZSwgZG9sbGFycyk7CisvLyAgIHN0ZDo6
c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoCisvLyAgICAgICAgICAgICAgICAgICAgICAiJXMg
JXMgWW91IGhhdmUgJCVkISIsICJIZWxsbyIsIG5hbWUsIGRvbGxhcnMpOwogLy8KIC8vIFRoZSBs
aWJyYXJ5IGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgYmFzaWMgdXRpbGl0aWVzOgogLy8KQEAg
LTQ5LDcgKzUxLDcgQEAKIC8vICAgKiBBIGBQYXJzZWRGb3JtYXRgIGluc3RhbmNlLCB3aGljaCBl
bmNhcHN1bGF0ZXMgYSBzcGVjaWZpYywgcHJlLWNvbXBpbGVkCiAvLyAgICAgZm9ybWF0IHN0cmlu
ZyBmb3IgYSBzcGVjaWZpYyBzZXQgb2YgdHlwZShzKSwgYW5kIHdoaWNoIGNhbiBiZSBwYXNzZWQK
IC8vICAgICBiZXR3ZWVuIEFQSSBib3VuZGFyaWVzLiAoVGhlIGBGb3JtYXRTcGVjYCB0eXBlIHNo
b3VsZCBub3QgYmUgdXNlZAotLy8gICAgIGRpcmVjdGx5LikKKy8vICAgICBkaXJlY3RseSBleGNl
cHQgYXMgYW4gYXJndW1lbnQgdHlwZSBmb3Igd3JhcHBlciBmdW5jdGlvbnMuKQogLy8KIC8vIFRo
ZSBgc3RyX2Zvcm1hdGAgbGlicmFyeSBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBvdXRwdXQgaXRz
IGZvcm1hdCBzdHJpbmdzIHRvCiAvLyBhcmJpdHJhcnkgc2luayB0eXBlczoKQEAgLTY2LDYgKzY4
LDcgQEAKIC8vIEluIGFkZGl0aW9uLCB0aGUgYHN0cl9mb3JtYXRgIGxpYnJhcnkgcHJvdmlkZXMg
ZXh0ZW5zaW9uIHBvaW50cyBmb3IKIC8vIGF1Z21lbnRpbmcgZm9ybWF0dGluZyB0byBuZXcgdHlw
ZXMuIFRoZXNlIGV4dGVuc2lvbnMgYXJlIGZ1bGx5IGRvY3VtZW50ZWQKIC8vIHdpdGhpbiB0aGUg
YHN0cl9mb3JtYXRfZXh0ZW5zaW9uLmhgIGhlYWRlciBmaWxlLgorCiAjaWZuZGVmIEFCU0xfU1RS
SU5HU19TVFJfRk9STUFUX0hfCiAjZGVmaW5lIEFCU0xfU1RSSU5HU19TVFJfRk9STUFUX0hfCiAK
QEAgLTg5LDcgKzkyLDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gRXhhbXBsZToKIC8vCiAvLyAg
IGFic2w6OlVudHlwZWRGb3JtYXRTcGVjIGZvcm1hdCgiJWQiKTsKLS8vICAgc3RyaW5nIG91dDsK
Ky8vICAgc3RkOjpzdHJpbmcgb3V0OwogLy8gICBDSEVDSyhhYnNsOjpGb3JtYXRVbnR5cGVkKCZv
dXQsIGZvcm1hdCwge2Fic2w6OkZvcm1hdEFyZygxKX0pKTsKIGNsYXNzIFVudHlwZWRGb3JtYXRT
cGVjIHsKICBwdWJsaWM6CkBAIC0xMzUsOCArMTM4LDggQEAgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6
U3RyZWFtZWRXcmFwcGVyPFQ+IEZvcm1hdFN0cmVhbWVkKGNvbnN0IFQmIHYpIHsKIC8vIEV4YW1w
bGU6CiAvLwogLy8gICBpbnQgbiA9IDA7Ci0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0
KCIlcyVkJW4iLCAiaGVsbG8iLCAxMjMsCi0vLyAgICAgICAgICAgICAgICAgICBhYnNsOjpGb3Jt
YXRDb3VudENhcHR1cmUoJm4pKTsKKy8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckZvcm1h
dCgiJXMlZCVuIiwgImhlbGxvIiwgMTIzLAorLy8gICAgICAgICAgICAgICAgICAgICAgIGFic2w6
OkZvcm1hdENvdW50Q2FwdHVyZSgmbikpOwogLy8gICBFWFBFQ1RfRVEoOCwgbik7CiBjbGFzcyBG
b3JtYXRDb3VudENhcHR1cmUgewogIHB1YmxpYzoKQEAgLTE1NiwxMCArMTU5LDE1IEBAIGNsYXNz
IEZvcm1hdENvdW50Q2FwdHVyZSB7CiAvLyBGb3JtYXRTcGVjCiAvLwogLy8gVGhlIGBGb3JtYXRT
cGVjYCB0eXBlIGRlZmluZXMgdGhlIG1ha2V1cCBvZiBhIGZvcm1hdCBzdHJpbmcgd2l0aGluIHRo
ZQotLy8gYHN0cl9mb3JtYXRgIGxpYnJhcnkuIFlvdSBzaG91bGQgbm90IG5lZWQgdG8gdXNlIG9y
IG1hbmlwdWxhdGUgdGhpcyB0eXBlCi0vLyBkaXJlY3RseS4gQSBgRm9ybWF0U3BlY2AgaXMgYSB2
YXJpYWRpYyBjbGFzcyB0ZW1wbGF0ZSB0aGF0IGlzIGV2YWx1YXRlZCBhdAotLy8gY29tcGlsZS10
aW1lLCBhY2NvcmRpbmcgdG8gdGhlIGZvcm1hdCBzdHJpbmcgYW5kIGFyZ3VtZW50cyB0aGF0IGFy
ZSBwYXNzZWQKLS8vIHRvIGl0LgorLy8gYHN0cl9mb3JtYXRgIGxpYnJhcnkuIEl0IGlzIGEgdmFy
aWFkaWMgY2xhc3MgdGVtcGxhdGUgdGhhdCBpcyBldmFsdWF0ZWQgYXQKKy8vIGNvbXBpbGUtdGlt
ZSwgYWNjb3JkaW5nIHRvIHRoZSBmb3JtYXQgc3RyaW5nIGFuZCBhcmd1bWVudHMgdGhhdCBhcmUg
cGFzc2VkIHRvCisvLyBpdC4KKy8vCisvLyBZb3Ugc2hvdWxkIG5vdCBuZWVkIHRvIG1hbmlwdWxh
dGUgdGhpcyB0eXBlIGRpcmVjdGx5LiBZb3Ugc2hvdWxkIG9ubHkgbmFtZSBpdAorLy8gaWYgeW91
IGFyZSB3cml0aW5nIHdyYXBwZXIgZnVuY3Rpb25zIHdoaWNoIGFjY2VwdCBmb3JtYXQgYXJndW1l
bnRzIHRoYXQgd2lsbAorLy8gYmUgcHJvdmlkZWQgdW5tb2RpZmllZCB0byBmdW5jdGlvbnMgaW4g
dGhpcyBsaWJyYXJ5LiBTdWNoIGEgd3JhcHBlciBmdW5jdGlvbgorLy8gbWlnaHQgYmUgYSBjbGFz
cyBtZXRob2QgdGhhdCBwcm92aWRlcyBmb3JtYXQgYXJndW1lbnRzIGFuZC9vciBpbnRlcm5hbGx5
IHVzZXMKKy8vIHRoZSByZXN1bHQgb2YgZm9ybWF0dGluZy4KIC8vCiAvLyBGb3IgYSBgRm9ybWF0
U3BlY2AgdG8gYmUgdmFsaWQgYXQgY29tcGlsZS10aW1lLCBpdCBtdXN0IGJlIHByb3ZpZGVkIGFz
CiAvLyBlaXRoZXI6CkBAIC0xODYsNyArMTk0LDcgQEAgY2xhc3MgRm9ybWF0Q291bnRDYXB0dXJl
IHsKIC8vIEEgZm9ybWF0IHN0cmluZyBnZW5lcmFsbHkgZm9sbG93cyB0aGUgUE9TSVggc3ludGF4
IGFzIHVzZWQgd2l0aGluIHRoZSBQT1NJWAogLy8gYHByaW50ZmAgc3BlY2lmaWNhdGlvbi4KIC8v
Ci0vLyAoU2VlIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5
L3V0aWxpdGllcy9wcmludGYuaHRtbC4pCisvLyAoU2VlIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5v
cmcvb25saW5lcHVicy85Njk5OTE5Nzk5L2Z1bmN0aW9ucy9mcHJpbnRmLmh0bWwuKQogLy8KIC8v
IEluIHNwZWNpZmljLCB0aGUgYEZvcm1hdFNwZWNgIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgdHlw
ZSBzcGVjaWZpZXJzOgogLy8gICAqIGBjYCBmb3IgY2hhcmFjdGVycwpAQCAtMjA1LDYgKzIxMywx
MSBAQCBjbGFzcyBGb3JtYXRDb3VudENhcHR1cmUgewogLy8gICAgIHdyaXR0ZW4gdG8gdGhpcyBw
b2ludC4gVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGNhcHR1cmVkIHdpdGhpbiBhbgogLy8g
ICAgIGBhYnNsOjpGb3JtYXRDb3VudENhcHR1cmVgIHR5cGUuCiAvLworLy8gSW1wbGVtZW50YXRp
b24tZGVmaW5lZCBiZWhhdmlvcjoKKy8vICAgKiBBIG51bGwgcG9pbnRlciBwcm92aWRlZCB0byAi
JXMiIG9yICIlcCIgaXMgb3V0cHV0IGFzICIobmlsKSIuCisvLyAgICogQSBub24tbnVsbCBwb2lu
dGVyIHByb3ZpZGVkIHRvICIlcCIgaXMgb3V0cHV0IGluIGhleCBhcyBpZiBieSAlI3ggb3IKKy8v
ICAgICAlI2x4LgorLy8KIC8vIE5PVEU6IGBvYCwgYHhcWGAgYW5kIGB1YCB3aWxsIGNvbnZlcnQg
c2lnbmVkIHZhbHVlcyB0byB0aGVpciB1bnNpZ25lZAogLy8gY291bnRlcnBhcnQgYmVmb3JlIGZv
cm1hdHRpbmcuCiAvLwpAQCAtMjIwLDEwICsyMzMsMTAgQEAgY2xhc3MgRm9ybWF0Q291bnRDYXB0
dXJlIHsKIC8vICAgICAiJWUiLCAuMDEgICAgICAgICAgICAgICAgLT4gIjEuMDAwMDBlLTIiCiAv
LyAgICAgIiVhIiwgLTMuMCAgICAgICAgICAgICAgIC0+ICItMHgxLjhwKzEiCiAvLyAgICAgIiVn
IiwgLjAxICAgICAgICAgICAgICAgIC0+ICIxZS0yIgotLy8gICAgICIlcCIsICppbnQgICAgICAg
ICAgICAgICAtPiAiMHg3ZmZkZWI2YWQyYTQiCisvLyAgICAgIiVwIiwgKHZvaWQqKSZ2YWx1ZSAg
ICAgIC0+ICIweDdmZmRlYjZhZDJhNCIKIC8vCiAvLyAgICAgaW50IG4gPSAwOwotLy8gICAgIHN0
cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KAorLy8gICAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpT
dHJGb3JtYXQoCiAvLyAgICAgICAgICIlcyVkJW4iLCAiaGVsbG8iLCAxMjMsIGFic2w6OkZvcm1h
dENvdW50Q2FwdHVyZSgmbikpOwogLy8gICAgIEVYUEVDVF9FUSg4LCBuKTsKIC8vCkBAIC0yOTAs
MTQgKzMwMywxNCBAQCB1c2luZyBQYXJzZWRGb3JtYXQgPSBzdHJfZm9ybWF0X2ludGVybmFsOjpF
eHRlbmRlZFBhcnNlZEZvcm1hdDwKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgc3RyaW5nIHMg
PSBhYnNsOjpTdHJGb3JtYXQoCisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQo
CiAvLyAgICAgICAiV2VsY29tZSB0byAlcywgTnVtYmVyICVkISIsICJUaGUgVmlsbGFnZSIsIDYp
OwogLy8gICBFWFBFQ1RfRVEoIldlbGNvbWUgdG8gVGhlIFZpbGxhZ2UsIE51bWJlciA2ISIsIHMp
OwogLy8KIC8vIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGluIGNhc2Ugb2YgZXJyb3IuCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KIEFCU0xfTVVTVF9VU0VfUkVTVUxUIHN0ZDo6c3RyaW5n
IFN0ckZvcm1hdChjb25zdCBGb3JtYXRTcGVjPEFyZ3MuLi4+JiBmb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBcmdzJi4uLiBhcmdz
KSB7CiAgIHJldHVybiBzdHJfZm9ybWF0X2ludGVybmFsOjpGb3JtYXRQYWNrKAogICAgICAgc3Ry
X2Zvcm1hdF9pbnRlcm5hbDo6VW50eXBlZEZvcm1hdFNwZWNJbXBsOjpFeHRyYWN0KGZvcm1hdCks
CiAgICAgICB7c3RyX2Zvcm1hdF9pbnRlcm5hbDo6Rm9ybWF0QXJnSW1wbChhcmdzKS4uLn0pOwpA
QCAtMzExLDExICszMjQsMTIgQEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3Ry
Rm9ybWF0KGNvbnN0IEZvcm1hdFNwZWM8QXJncy4uLj4mIGZvcm1hdCwKIC8vCiAvLyBFeGFtcGxl
OgogLy8KLS8vICAgc3RyaW5nIG9yaWcoIkZvciBleGFtcGxlIFBJIGlzIGFwcHJveGltYXRlbHkg
Iik7CisvLyAgIHN0ZDo6c3RyaW5nIG9yaWcoIkZvciBleGFtcGxlIFBJIGlzIGFwcHJveGltYXRl
bHkgIik7CiAvLyAgIHN0ZDo6Y291dCA8PCBTdHJBcHBlbmRGb3JtYXQoJm9yaWcsICIlMTIuNmYi
LCAzLjE0KTsKIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotc3RkOjpzdHJpbmcmIFN0ckFw
cGVuZEZvcm1hdChzdGQ6OnN0cmluZyogZHN0LCBjb25zdCBGb3JtYXRTcGVjPEFyZ3MuLi4+JiBm
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBcmdzJi4uLiBhcmdzKSB7Citz
dGQ6OnN0cmluZyYgU3RyQXBwZW5kRm9ybWF0KHN0ZDo6c3RyaW5nKiBkc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcm1hdFNwZWM8QXJncy4uLj4mIGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXJncyYuLi4gYXJncykgewogICByZXR1
cm4gc3RyX2Zvcm1hdF9pbnRlcm5hbDo6QXBwZW5kUGFjaygKICAgICAgIGRzdCwgc3RyX2Zvcm1h
dF9pbnRlcm5hbDo6VW50eXBlZEZvcm1hdFNwZWNJbXBsOjpFeHRyYWN0KGZvcm1hdCksCiAgICAg
ICB7c3RyX2Zvcm1hdF9pbnRlcm5hbDo6Rm9ybWF0QXJnSW1wbChhcmdzKS4uLn0pOwpAQCAtNDM0
LDcgKzQ0OCw4IEBAIGNsYXNzIEZvcm1hdFJhd1NpbmsgewogLy8gYGFic2w6OkZvcm1hdFJhd1Np
bmtgIGludGVyZmFjZSksIHVzaW5nIGEgZm9ybWF0IHN0cmluZyBhbmQgemVybyBvciBtb3JlCiAv
LyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4KIC8vCi0vLyBCeSBkZWZhdWx0LCBgc3RyaW5nYCBhbmQg
YHN0ZDo6b3N0cmVhbWAgYXJlIHN1cHBvcnRlZCBhcyBkZXN0aW5hdGlvbiBvYmplY3RzLgorLy8g
QnkgZGVmYXVsdCwgYHN0ZDo6c3RyaW5nYCBhbmQgYHN0ZDo6b3N0cmVhbWAgYXJlIHN1cHBvcnRl
ZCBhcyBkZXN0aW5hdGlvbgorLy8gb2JqZWN0cy4gSWYgYSBgc3RkOjpzdHJpbmdgIGlzIHVzZWQg
dGhlIGZvcm1hdHRlZCBzdHJpbmcgaXMgYXBwZW5kZWQgdG8gaXQuCiAvLwogLy8gYGFic2w6OkZv
cm1hdCgpYCBpcyBhIGdlbmVyaWMgdmVyc2lvbiBvZiBgYWJzbDo6U3RyRm9ybWF0KCksIGZvciBj
dXN0b20KIC8vIHNpbmtzLiBUaGUgZm9ybWF0IHN0cmluZywgbGlrZSBmb3JtYXQgc3RyaW5ncyBm
b3IgYFN0ckZvcm1hdCgpYCwgaXMgY2hlY2tlZApAQCAtNDgzLDkgKzQ5OCwxMCBAQCB1c2luZyBG
b3JtYXRBcmcgPSBzdHJfZm9ybWF0X2ludGVybmFsOjpGb3JtYXRBcmdJbXBsOwogLy8KIC8vIEV4
YW1wbGU6CiAvLwotLy8gICBzdGQ6Om9wdGlvbmFsPHN0cmluZz4gRm9ybWF0RHluYW1pYyhjb25z
dCBzdHJpbmcmIGluX2Zvcm1hdCwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdmVjdG9yPHN0cmluZz4mIGluX2FyZ3MpIHsKLS8vICAgICBzdHJpbmcgb3V0
OworLy8gICBzdGQ6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBGb3JtYXREeW5hbWljKAorLy8gICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGluX2Zvcm1hdCwKKy8vICAgICAgIGNvbnN0IHZlY3Rvcjxz
dGQ6OnN0cmluZz4mIGluX2FyZ3MpIHsKKy8vICAgICBzdGQ6OnN0cmluZyBvdXQ7CiAvLyAgICAg
c3RkOjp2ZWN0b3I8YWJzbDo6Rm9ybWF0QXJnPiBhcmdzOwogLy8gICAgIGZvciAoY29uc3QgYXV0
byYgdiA6IGluX2FyZ3MpIHsKIC8vICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0ICd2JyBp
cyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0cyBpbiBpbl9hcmdzLgpAQCAtNTA5LDQgKzUyNSw1
IEBAIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBib29sIEZvcm1hdFVudHlwZWQoCiB9CiAK
IH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9TVFJJTkdTX1NUUl9GT1JN
QVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdF90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9zdHJfZm9ybWF0X3Rlc3QuY2MKaW5kZXggYWExNGUyMTE3MDkuLmNmZDgxYmIz
NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXRfdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL3N0cl9mb3JtYXRfdGVzdC5jYwpAQCAtMTMsNyArMTMsNyBAQCBuYW1lc3Bh
Y2UgYWJzbCB7CiBuYW1lc3BhY2UgewogdXNpbmcgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Rm9ybWF0
QXJnSW1wbDsKIAotY2xhc3MgRm9ybWF0RW50cnlQb2ludFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsgfTsKK3VzaW5nIEZvcm1hdEVudHJ5UG9pbnRUZXN0ID0gOjp0ZXN0aW5nOjpUZXN0
OwogCiBURVNUX0YoRm9ybWF0RW50cnlQb2ludFRlc3QsIEZvcm1hdCkgewogICBzdGQ6OnN0cmlu
ZyBzaW5rOwpAQCAtMzAsOCArMzAsOCBAQCBURVNUX0YoRm9ybWF0RW50cnlQb2ludFRlc3QsIFVu
dHlwZWRGb3JtYXQpIHsKICAgICAiIiwKICAgICAiYSIsCiAgICAgIiU4MGQiLAotI2lmICFkZWZp
bmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKLSAgICAvLyBNU1ZDIGFuZCBB
bmRyb2lkIGRvbid0IHN1cHBvcnQgcG9zaXRpb25hbCBzeW50YXguCisjaWYgIWRlZmluZWQoX01T
Q19WRVIpICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChfX25hdGl2ZV9jbGll
bnRfXykKKyAgICAvLyBNU1ZDLCBOYUNMIGFuZCBBbmRyb2lkIGRvbid0IHN1cHBvcnQgcG9zaXRp
b25hbCBzeW50YXguCiAgICAgImNvbXBsaWNhdGVkIG11bHRpcGFydCAlJSAlMSRkIGZvcm1hdCAl
MSQwOTk5ZCIsCiAjZW5kaWYgIC8vIF9NU0NfVkVSCiAgIH07CkBAIC0xNTMsMTcgKzE1MywyMCBA
QCBURVNUX0YoRm9ybWF0RW50cnlQb2ludFRlc3QsIFN0cmVhbSkgewogICAgICIiLAogICAgICJh
IiwKICAgICAiJTgwZCIsCi0jaWYgIWRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fQU5E
Uk9JRF9fKQotICAgIC8vIE1TVkMgZG9lc24ndCBzdXBwb3J0IHBvc2l0aW9uYWwgc3ludGF4Lgor
ICAgICIlZCAldSAlYyAlcyAlZiAlZyIsCisjaWYgIWRlZmluZWQoX01TQ19WRVIpICYmICFkZWZp
bmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKKyAgICAvLyBN
U1ZDLCBOYUNMIGFuZCBBbmRyb2lkIGRvbid0IHN1cHBvcnQgcG9zaXRpb25hbCBzeW50YXguCiAg
ICAgImNvbXBsaWNhdGVkIG11bHRpcGFydCAlJSAlMSRkIGZvcm1hdCAlMSQwODBkIiwKICNlbmRp
ZiAgLy8gX01TQ19WRVIKICAgfTsKICAgc3RkOjpzdHJpbmcgYnVmKDQwOTYsICdcMCcpOwogICBm
b3IgKGNvbnN0IGF1dG8mIGZtdCA6IGZvcm1hdHMpIHsKLSAgICBjb25zdCBhdXRvIHBhcnNlZCA9
IFBhcnNlZEZvcm1hdDwnZCc+OjpOZXdBbGxvd0lnbm9yZWQoZm10KTsKKyAgICBjb25zdCBhdXRv
IHBhcnNlZCA9CisgICAgICAgIFBhcnNlZEZvcm1hdDwnZCcsICd1JywgJ2MnLCAncycsICdmJywg
J2cnPjo6TmV3QWxsb3dJZ25vcmVkKGZtdCk7CiAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIG9zczsK
LSAgICBvc3MgPDwgU3RyZWFtRm9ybWF0KCpwYXJzZWQsIDEyMyk7Ci0gICAgaW50IGZtdF9yZXN1
bHQgPSBzbnByaW50ZigmKmJ1Zi5iZWdpbigpLCBidWYuc2l6ZSgpLCBmbXQuY19zdHIoKSwgMTIz
KTsKKyAgICBvc3MgPDwgU3RyZWFtRm9ybWF0KCpwYXJzZWQsIDEyMywgMywgNDksICJtdWx0aXN0
cmVhbWluZyEhISIsIDEuMDEsIDEuMDEpOworICAgIGludCBmbXRfcmVzdWx0ID0gc25wcmludGYo
JipidWYuYmVnaW4oKSwgYnVmLnNpemUoKSwgZm10LmNfc3RyKCksICAvLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTIzLCAzLCA0OSwgIm11bHRpc3RyZWFtaW5nISEhIiwgMS4w
MSwgMS4wMSk7CiAgICAgQVNTRVJUX1RSVUUob3NzKSA8PCBmbXQ7CiAgICAgQVNTRVJUX1RSVUUo
Zm10X3Jlc3VsdCA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4oZm10X3Jlc3VsdCkgPCBidWYu
c2l6ZSgpKQogICAgICAgICA8PCBmbXRfcmVzdWx0OwpAQCAtMjQyLDYgKzI0NSw3IEBAIGNsYXNz
IFRlbXBGaWxlIHsKICAgc3RkOjpzdHJpbmcgUmVhZEZpbGUoKSB7CiAgICAgc3RkOjpmc2Vlayhm
aWxlXywgMCwgU0VFS19FTkQpOwogICAgIGludCBzaXplID0gc3RkOjpmdGVsbChmaWxlXyk7Cisg
ICAgRVhQRUNUX0dUKHNpemUsIDApOwogICAgIHN0ZDo6cmV3aW5kKGZpbGVfKTsKICAgICBzdGQ6
OnN0cmluZyBzdHIoMiAqIHNpemUsICcgJyk7CiAgICAgaW50IHJlYWRfYnl0ZXMgPSBzdGQ6OmZy
ZWFkKCZzdHJbMF0sIDEsIHN0ci5zaXplKCksIGZpbGVfKTsKQEAgLTI3MCw3ICsyNzQsNyBAQCBU
RVNUX0YoRm9ybWF0RW50cnlQb2ludFRlc3QsIEZQcmludEZFcnJvcikgewogICBFWFBFQ1RfRVEo
ZXJybm8sIEVCQURGKTsKIH0KIAotI2lmIF9fR05VQ19fCisjaWZkZWYgX19HTElCQ19fCiBURVNU
X0YoRm9ybWF0RW50cnlQb2ludFRlc3QsIEZwcmludGZUb29MYXJnZSkgewogICBzdGQ6OkZJTEUq
IGYgPSBzdGQ6OmZvcGVuKCIvZGV2L251bGwiLCAidyIpOwogICBpbnQgd2lkdGggPSAyMDAwMDAw
MDAwOwpAQCAtMjk3LDcgKzMwMSw3IEBAIFRFU1RfRihGb3JtYXRFbnRyeVBvaW50VGVzdCwgUHJp
bnRGKSB7CiAgIEVYUEVDVF9FUShyZXN1bHQsIDMwKTsKICAgRVhQRUNUX0VRKHRtcC5SZWFkRmls
ZSgpLCAiU1RSSU5HOiBBQkMgTlVNQkVSOiAtMDAwMDAwMDE5Iik7CiB9Ci0jZW5kaWYgIC8vIF9f
R05VQ19fCisjZW5kaWYgIC8vIF9fR0xJQkNfXwogCiBURVNUX0YoRm9ybWF0RW50cnlQb2ludFRl
c3QsIFNOUHJpbnRGKSB7CiAgIGNoYXIgYnVmZmVyWzE2XTsKQEAgLTM0MCw3ICszNDQsNyBAQCBU
RVNUKFN0ckZvcm1hdCwgQmVoYXZlc0FzRG9jdW1lbnRlZCkgewogICBFWFBFQ1RfRVEoU3RyRm9y
bWF0KCIlYyIsIGludHsnYSd9KSwgImEiKTsKICAgRVhQRUNUX0VRKFN0ckZvcm1hdCgiJWMiLCBs
b25neydhJ30pLCAiYSIpOyAgLy8gTk9MSU5UCiAgIEVYUEVDVF9FUShTdHJGb3JtYXQoIiVjIiwg
dWludDY0X3R7J2EnfSksICJhIik7Ci0gIC8vICAgICAicyIgLSBzdGQ6OnN0cmluZyAgICAgICAg
ICAgICAgICAgIEVnOiAiQyIgLT4gIkMiLCBzdGQ6OnN0cmluZygiQysrIikgLT4gIkMrKyIKKyAg
Ly8gICAgICJzIiAtIHN0ZDo6c3RyaW5nICAgICAgIEVnOiAiQyIgLT4gIkMiLCBzdGQ6OnN0cmlu
ZygiQysrIikgLT4gIkMrKyIKICAgLy8gICAgICAgICAgIEZvcm1hdHMgc3RkOjpzdHJpbmcsIGNo
YXIqLCBzdHJpbmdfdmlldywgYW5kIENvcmQuCiAgIEVYUEVDVF9FUShTdHJGb3JtYXQoIiVzIiwg
IkMiKSwgIkMiKTsKICAgRVhQRUNUX0VRKFN0ckZvcm1hdCgiJXMiLCBzdGQ6OnN0cmluZygiQysr
IikpLCAiQysrIik7CkBAIC00NTcsNyArNDYxLDcgQEAgc3RkOjpzdHJpbmcgU3VtbWFyaXplUGFy
c2VkRm9ybWF0KGNvbnN0IFBhcnNlZEZvcm1hdEJhc2UmIHBjKSB7CiAgIHJldHVybiBvdXQ7CiB9
CiAKLWNsYXNzIFBhcnNlZEZvcm1hdFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7fTsKK3Vz
aW5nIFBhcnNlZEZvcm1hdFRlc3QgPSA6OnRlc3Rpbmc6OlRlc3Q7CiAKIFRFU1RfRihQYXJzZWRG
b3JtYXRUZXN0LCBTaW1wbGVDaGVja2VkKSB7CiAgIEVYUEVDVF9FUSgiW0FCQ117ZDoxJGR9W0RF
Rl0iLApAQCAtNTk5LDQxICs2MDMsNDUgQEAgVEVTVF9GKFBhcnNlZEZvcm1hdFRlc3QsIFJlZ3Jl
c3Npb25NaXhQb3NpdGlvbmFsKSB7CiAgIEVYUEVDVF9GQUxTRSgoRXh0ZW5kZWRQYXJzZWRGb3Jt
YXQ8Q29udjo6ZCwgQ29udjo6bz46Ok5ldygiJTEkZCAlbyIpKSk7CiB9CiAKK3VzaW5nIEZvcm1h
dFdyYXBwZXJUZXN0ID0gOjp0ZXN0aW5nOjpUZXN0OworCisvLyBQbGFpbiB3cmFwcGVyIGZvciBT
dHJGb3JtYXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KK3N0ZDo6c3RyaW5nIFdyYXBw
ZWRGb3JtYXQoY29uc3QgYWJzbDo6Rm9ybWF0U3BlYzxBcmdzLi4uPiYgZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBcmdzJi4uLiBhcmdzKSB7CisgIHJldHVybiBTdHJG
b3JtYXQoZm9ybWF0LCBhcmdzLi4uKTsKK30KKworVEVTVF9GKEZvcm1hdFdyYXBwZXJUZXN0LCBD
b25zdGV4cHJTdHJpbmdGb3JtYXQpIHsKKyAgRVhQRUNUX0VRKFdyYXBwZWRGb3JtYXQoIiVzIHRo
ZXJlIiwgImhlbGxvIiksICJoZWxsbyB0aGVyZSIpOworfQorCitURVNUX0YoRm9ybWF0V3JhcHBl
clRlc3QsIFBhcnNlZEZvcm1hdCkgeworICBQYXJzZWRGb3JtYXQ8J3MnPiBmb3JtYXQoIiVzIHRo
ZXJlIik7CisgIEVYUEVDVF9FUShXcmFwcGVkRm9ybWF0KGZvcm1hdCwgImhlbGxvIiksICJoZWxs
byB0aGVyZSIpOworfQorCiB9ICAvLyBuYW1lc3BhY2UKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAK
IC8vIFNvbWUgY29kZWdlbiB0aHVua3MgdGhhdCB3ZSBjYW4gdXNlIHRvIGVhc2lseSBkdW1wIHRo
ZSBnZW5lcmF0ZWQgYXNzZW1ibHkgZm9yCiAvLyBkaWZmZXJlbnQgU3RyRm9ybWF0IGNhbGxzLgog
Ci1pbmxpbmUgc3RkOjpzdHJpbmcgQ29kZWdlbkFic2xTdHJGb3JtYXRJbnQoaW50IGkpIHsKK3N0
ZDo6c3RyaW5nIENvZGVnZW5BYnNsU3RyRm9ybWF0SW50KGludCBpKSB7ICAvLyBOT0xJTlQKICAg
cmV0dXJuIGFic2w6OlN0ckZvcm1hdCgiJWQiLCBpKTsKIH0KIAotaW5saW5lIHN0ZDo6c3RyaW5n
IENvZGVnZW5BYnNsU3RyRm9ybWF0SW50U3RyaW5nSW50NjQoaW50IGksIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgaTY0KSB7CitzdGQ6OnN0cmluZyBDb2RlZ2VuQWJzbFN0ckZvcm1hdEludFN0cmlu
Z0ludDY0KGludCBpLCBjb25zdCBzdGQ6OnN0cmluZyYgcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBpNjQpIHsgIC8vIE5PTElOVAogICBy
ZXR1cm4gYWJzbDo6U3RyRm9ybWF0KCIlZCAlcyAlZCIsIGksIHMsIGk2NCk7CiB9CiAKLWlubGlu
ZSB2b2lkIENvZGVnZW5BYnNsU3RyQXBwZW5kRm9ybWF0SW50KHN0ZDo6c3RyaW5nKiBvdXQsIGlu
dCBpKSB7Cit2b2lkIENvZGVnZW5BYnNsU3RyQXBwZW5kRm9ybWF0SW50KHN0ZDo6c3RyaW5nKiBv
dXQsIGludCBpKSB7ICAvLyBOT0xJTlQKICAgYWJzbDo6U3RyQXBwZW5kRm9ybWF0KG91dCwgIiVk
IiwgaSk7CiB9CiAKLWlubGluZSB2b2lkIENvZGVnZW5BYnNsU3RyQXBwZW5kRm9ybWF0SW50U3Ry
aW5nSW50NjQoc3RkOjpzdHJpbmcqIG91dCwgaW50IGksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IGk2NCkgewordm9pZCBDb2RlZ2VuQWJzbFN0ckFwcGVuZEZvcm1hdEludFN0cmluZ0ludDY0KHN0
ZDo6c3RyaW5nKiBvdXQsIGludCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgaTY0KSB7ICAvLyBOT0xJTlQKICAgYWJz
bDo6U3RyQXBwZW5kRm9ybWF0KG91dCwgIiVkICVzICVkIiwgaSwgcywgaTY0KTsKIH0KLQotYXV0
byBhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29kZWdlbl9mdW5jcyA9IHN0ZDo6bWFr
ZV90dXBsZSgKLSAgICBDb2RlZ2VuQWJzbFN0ckZvcm1hdEludCwgQ29kZWdlbkFic2xTdHJGb3Jt
YXRJbnRTdHJpbmdJbnQ2NCwKLSAgICBDb2RlZ2VuQWJzbFN0ckFwcGVuZEZvcm1hdEludCwgQ29k
ZWdlbkFic2xTdHJBcHBlbmRGb3JtYXRJbnRTdHJpbmdJbnQ2NCk7Ci0KLWJvb2wgYWJzbF9pbnRl
cm5hbF9zdHJfZm9ybWF0X2ZvcmNlX2NvZGVnZW5fYWx3YXlzX2ZhbHNlOwotLy8gRm9yY2UgdGhl
IGNvbXBpbGVyIHRvIGdlbmVyYXRlIHRoZSBmdW5jdGlvbnMgYnkgbWFraW5nIGl0IGxvb2sgbGlr
ZSB3ZQotLy8gZXNjYXBlIHRoZSBmdW5jdGlvbiBwb2ludGVycy4KLS8vIEl0IGNhbid0IHN0YXRp
Y2FsbHkga25vdyB0aGF0Ci0vLyBhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29kZWdl
bl9hbHdheXNfZmFsc2UgaXMgbm90IGNoYW5nZWQgYnkgc29tZW9uZQotLy8gZWxzZS4KLWJvb2wg
YWJzbF9pbnRlcm5hbF9zdHJfZm9ybWF0X2ZvcmNlX2NvZGVnZW4gPQotICAgIGFic2xfaW50ZXJu
YWxfc3RyX2Zvcm1hdF9mb3JjZV9jb2RlZ2VuX2Fsd2F5c19mYWxzZSAmJgotICAgIHByaW50Zigi
JXAiLCAmYWJzbF9pbnRlcm5hbF9zdHJfZm9ybWF0X2ZvcmNlX2NvZGVnZW5fZnVuY3MpID09IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0
cl9qb2luLmgKaW5kZXggZjk2MTFhZDNiNDcuLjQ3NzJmNWQxN2M4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cl9qb2luLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfam9pbi5oCkBAIC01
LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOCwxMyArMTgsMTMgQEAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBjb250YWlu
cyBmdW5jdGlvbnMgZm9yIGpvaW5pbmcgYSByYW5nZSBvZiBlbGVtZW50cyBhbmQKLS8vIHJldHVy
bmluZyB0aGUgcmVzdWx0IGFzIGEgc3RyaW5nLiBTdHJKb2luIG9wZXJhdGlvbnMgYXJlIHNwZWNp
ZmllZCBieSBwYXNzaW5nCi0vLyBhIHJhbmdlLCBhIHNlcGFyYXRvciBzdHJpbmcgdG8gdXNlIGJl
dHdlZW4gdGhlIGVsZW1lbnRzIGpvaW5lZCwgYW5kIGFuCi0vLyBvcHRpb25hbCBGb3JtYXR0ZXIg
cmVzcG9uc2libGUgZm9yIGNvbnZlcnRpbmcgZWFjaCBhcmd1bWVudCBpbiB0aGUgcmFuZ2UgdG8g
YQotLy8gc3RyaW5nLiBJZiBvbWl0dGVkLCBhIGRlZmF1bHQgYEFscGhhTnVtRm9ybWF0dGVyKClg
IGlzIGNhbGxlZCBvbiB0aGUgZWxlbWVudHMKLS8vIHRvIGJlIGpvaW5lZCwgdXNpbmcgdGhlIHNh
bWUgZm9ybWF0dGluZyB0aGF0IGBhYnNsOjpTdHJDYXQoKWAgdXNlcy4gVGhpcwotLy8gcGFja2Fn
ZSBkZWZpbmVzIGEgbnVtYmVyIG9mIGRlZmF1bHQgZm9ybWF0dGVycywgYW5kIHlvdSBjYW4gZGVm
aW5lIHlvdXIgb3duCi0vLyBpbXBsZW1lbnRhdGlvbnMuCisvLyByZXR1cm5pbmcgdGhlIHJlc3Vs
dCBhcyBhIHN0ZDo6c3RyaW5nLiBTdHJKb2luIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmllZCBieQor
Ly8gcGFzc2luZyBhIHJhbmdlLCBhIHNlcGFyYXRvciBzdHJpbmcgdG8gdXNlIGJldHdlZW4gdGhl
IGVsZW1lbnRzIGpvaW5lZCwgYW5kCisvLyBhbiBvcHRpb25hbCBGb3JtYXR0ZXIgcmVzcG9uc2li
bGUgZm9yIGNvbnZlcnRpbmcgZWFjaCBhcmd1bWVudCBpbiB0aGUgcmFuZ2UKKy8vIHRvIGEgc3Ry
aW5nLiBJZiBvbWl0dGVkLCBhIGRlZmF1bHQgYEFscGhhTnVtRm9ybWF0dGVyKClgIGlzIGNhbGxl
ZCBvbiB0aGUKKy8vIGVsZW1lbnRzIHRvIGJlIGpvaW5lZCwgdXNpbmcgdGhlIHNhbWUgZm9ybWF0
dGluZyB0aGF0IGBhYnNsOjpTdHJDYXQoKWAgdXNlcy4KKy8vIFRoaXMgcGFja2FnZSBkZWZpbmVz
IGEgbnVtYmVyIG9mIGRlZmF1bHQgZm9ybWF0dGVycywgYW5kIHlvdSBjYW4gZGVmaW5lIHlvdXIK
Ky8vIG93biBpbXBsZW1lbnRhdGlvbnMuCiAvLwogLy8gUmFuZ2VzIGFyZSBzcGVjaWZpZWQgYnkg
cGFzc2luZyBhIGNvbnRhaW5lciB3aXRoIGBzdGQ6OmJlZ2luKClgIGFuZAogLy8gYHN0ZDo6ZW5k
KClgIGl0ZXJhdG9ycywgY29udGFpbmVyLXNwZWNpZmljIGBiZWdpbigpYCBhbmQgYGVuZCgpYCBp
dGVyYXRvcnMsIGEKQEAgLTM3LDggKzM3LDggQEAKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAg
c3RkOjp2ZWN0b3I8c3RyaW5nPiB2ID0geyJmb28iLCAiYmFyIiwgImJheiJ9OwotLy8gICBzdHJp
bmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+IHYgPSB7ImZvbyIsICJiYXIiLCAiYmF6In07CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNs
OjpTdHJKb2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiZm9vLWJhci1iYXoiLCBzKTsKIC8v
CiAvLyBTZWUgY29tbWVudHMgb24gdGhlIGBhYnNsOjpTdHJKb2luKClgIGZ1bmN0aW9uIGZvciBt
b3JlIGV4YW1wbGVzLgpAQCAtNjYsMTYgKzY2LDE2IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gQSBGb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvYmpl
Y3QgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgZm9ybWF0dGluZyBpdHMKLS8vIGFyZ3VtZW50IGFz
IGEgc3RyaW5nIGFuZCBhcHBlbmRpbmcgaXQgdG8gYSBnaXZlbiBvdXRwdXQgc3RyaW5nLiBGb3Jt
YXR0ZXJzCi0vLyBtYXkgYmUgaW1wbGVtZW50ZWQgYXMgZnVuY3Rpb24gb2JqZWN0cywgbGFtYmRh
cywgb3Igbm9ybWFsIGZ1bmN0aW9ucy4gWW91IG1heQotLy8gcHJvdmlkZSB5b3VyIG93biBGb3Jt
YXR0ZXIgdG8gZW5hYmxlIGBhYnNsOjpTdHJKb2luKClgIHRvIHdvcmsgd2l0aCBhcmJpdHJhcnkK
LS8vIHR5cGVzLgorLy8gYXJndW1lbnQgYXMgYSBzdHJpbmcgYW5kIGFwcGVuZGluZyBpdCB0byBh
IGdpdmVuIG91dHB1dCBzdGQ6OnN0cmluZy4KKy8vIEZvcm1hdHRlcnMgbWF5IGJlIGltcGxlbWVu
dGVkIGFzIGZ1bmN0aW9uIG9iamVjdHMsIGxhbWJkYXMsIG9yIG5vcm1hbAorLy8gZnVuY3Rpb25z
LiBZb3UgbWF5IHByb3ZpZGUgeW91ciBvd24gRm9ybWF0dGVyIHRvIGVuYWJsZSBgYWJzbDo6U3Ry
Sm9pbigpYCB0bworLy8gd29yayB3aXRoIGFyYml0cmFyeSB0eXBlcy4KIC8vCiAvLyBUaGUgZm9s
bG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgYSBjdXN0b20gRm9ybWF0dGVyIHRoYXQgc2ltcGx5IHVz
ZXMKLS8vIGBzdGQ6OnRvX3N0cmluZygpYCB0byBmb3JtYXQgYW4gaW50ZWdlciBhcyBhIHN0cmlu
Zy4KKy8vIGBzdGQ6OnRvX3N0cmluZygpYCB0byBmb3JtYXQgYW4gaW50ZWdlciBhcyBhIHN0ZDo6
c3RyaW5nLgogLy8KIC8vICAgc3RydWN0IE15Rm9ybWF0dGVyIHsKLS8vICAgICB2b2lkIG9wZXJh
dG9yKCkoc3RyaW5nKiBvdXQsIGludCBpKSBjb25zdCB7CisvLyAgICAgdm9pZCBvcGVyYXRvcigp
KHN0ZDo6c3RyaW5nKiBvdXQsIGludCBpKSBjb25zdCB7CiAvLyAgICAgICBvdXQtPmFwcGVuZChz
dGQ6OnRvX3N0cmluZyhpKSk7CiAvLyAgICAgfQogLy8gICB9OwpAQCAtODQsNyArODQsNyBAQCBu
YW1lc3BhY2UgYWJzbCB7CiAvLyBhcmd1bWVudCB0byBgYWJzbDo6U3RySm9pbigpYDoKIC8vCiAv
LyAgIHN0ZDo6dmVjdG9yPGludD4gdiA9IHsxLCAyLCAzLCA0fTsKLS8vICAgc3RyaW5nIHMgPSBh
YnNsOjpTdHJKb2luKHYsICItIiwgTXlGb3JtYXR0ZXIoKSk7CisvLyAgIHN0ZDo6c3RyaW5nIHMg
PSBhYnNsOjpTdHJKb2luKHYsICItIiwgTXlGb3JtYXR0ZXIoKSk7CiAvLyAgIEVYUEVDVF9FUSgi
MS0yLTMtNCIsIHMpOwogLy8KIC8vIFRoZSBmb2xsb3dpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBh
cmUgcHJvdmlkZWQgd2l0aGluIHRoaXMgZmlsZToKQEAgLTE1Niw3ICsxNTYsNyBAQCBEZXJlZmVy
ZW5jZUZvcm1hdHRlcigpIHsKIC8vIFN0ckpvaW4oKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC8vCi0vLyBKb2lucyBhIHJhbmdlIG9mIGVsZW1lbnRzIGFuZCByZXR1cm5zIHRoZSByZXN1bHQg
YXMgYSBzdHJpbmcuCisvLyBKb2lucyBhIHJhbmdlIG9mIGVsZW1lbnRzIGFuZCByZXR1cm5zIHRo
ZSByZXN1bHQgYXMgYSBzdGQ6OnN0cmluZy4KIC8vIGBhYnNsOjpTdHJKb2luKClgIHRha2VzIGEg
cmFuZ2UsIGEgc2VwYXJhdG9yIHN0cmluZyB0byB1c2UgYmV0d2VlbiB0aGUKIC8vIGVsZW1lbnRz
IGpvaW5lZCwgYW5kIGFuIG9wdGlvbmFsIEZvcm1hdHRlciByZXNwb25zaWJsZSBmb3IgY29udmVy
dGluZyBlYWNoCiAvLyBhcmd1bWVudCBpbiB0aGUgcmFuZ2UgdG8gYSBzdHJpbmcuCkBAIC0xNjcs
MjIgKzE2NywyMiBAQCBEZXJlZmVyZW5jZUZvcm1hdHRlcigpIHsKIC8vIEV4YW1wbGUgMToKIC8v
ICAgLy8gSm9pbnMgYSBjb2xsZWN0aW9uIG9mIHN0cmluZ3MuIFRoaXMgcGF0dGVybiBhbHNvIHdv
cmtzIHdpdGggYSBjb2xsZWN0aW9uCiAvLyAgIC8vIG9mIGBhYnNsOjpzdHJpbmdfdmlld2Agb3Ig
ZXZlbiBgY29uc3QgY2hhcipgLgotLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHYgPSB7ImZvbyIs
ICJiYXIiLCAiYmF6In07Ci0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOwor
Ly8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IHsiZm9vIiwgImJhciIsICJiYXoifTsK
Ky8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNU
X0VRKCJmb28tYmFyLWJheiIsIHMpOwogLy8KIC8vIEV4YW1wbGUgMjoKIC8vICAgLy8gSm9pbnMg
dGhlIHZhbHVlcyBpbiB0aGUgZ2l2ZW4gYHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDw+YCBzcGVjaWZp
ZWQgdXNpbmcKIC8vICAgLy8gYnJhY2UgaW5pdGlhbGl6YXRpb24uIFRoaXMgcGF0dGVybiBhbHNv
IHdvcmtzIHdpdGggYW4gaW5pdGlhbGl6ZXJfbGlzdAogLy8gICAvLyBvZiBpbnRzIG9yIGBhYnNs
OjpzdHJpbmdfdmlld2AgLS0gYW55IGBBbHBoYU51bWAtY29tcGF0aWJsZSB0eXBlLgotLy8gICBz
dHJpbmcgcyA9IGFic2w6OlN0ckpvaW4oeyJmb28iLCAiYmFyIiwgImJheiJ9LCAiLSIpOworLy8g
ICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RySm9pbih7ImZvbyIsICJiYXIiLCAiYmF6In0sICIt
Iik7CiAvLyAgIEVYUEVDVF9FUSgiZm9vLWJhci1iYXoiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDM6
CiAvLyAgIC8vIEpvaW5zIGEgY29sbGVjdGlvbiBvZiBpbnRzLiBUaGlzIHBhdHRlcm4gYWxzbyB3
b3JrcyB3aXRoIGZsb2F0cywKIC8vICAgLy8gZG91YmxlcywgaW50NjRzIC0tIGFueSBgU3RyQ2F0
KClgLWNvbXBhdGlibGUgdHlwZS4KIC8vICAgc3RkOjp2ZWN0b3I8aW50PiB2ID0gezEsIDIsIDMs
IC00fTsKLS8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CisvLyAgIHN0ZDo6
c3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiMS0yLTMt
LTQiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDQ6CkBAIC0xOTMsNyArMTkzLDcgQEAgRGVyZWZlcmVu
Y2VGb3JtYXR0ZXIoKSB7CiAvLyAgIC8vIGBzdGQ6OnZlY3RvcjxpbnQqPmAuCiAvLyAgIGludCB4
ID0gMSwgeSA9IDIsIHogPSAzOwogLy8gICBzdGQ6OnZlY3RvcjxpbnQqPiB2ID0geyZ4LCAmeSwg
Jnp9OwotLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RkOjpz
dHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMyIs
IHMpOwogLy8KIC8vIEV4YW1wbGUgNToKQEAgLTIwMiw2NSArMjAyLDY1IEBAIERlcmVmZXJlbmNl
Rm9ybWF0dGVyKCkgewogLy8gICB2LmVtcGxhY2VfYmFjayhuZXcgaW50KDEpKTsKIC8vICAgdi5l
bXBsYWNlX2JhY2sobmV3IGludCgyKSk7CiAvLyAgIHYuZW1wbGFjZV9iYWNrKG5ldyBpbnQoMykp
OwotLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RkOjpzdHJp
bmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMyIsIHMp
OwogLy8KIC8vIEV4YW1wbGUgNjoKIC8vICAgLy8gSm9pbnMgYSBgc3RkOjptYXBgLCB3aXRoIGVh
Y2gga2V5LXZhbHVlIHBhaXIgc2VwYXJhdGVkIGJ5IGFuIGVxdWFscwogLy8gICAvLyBzaWduLiBU
aGlzIHBhdHRlcm4gd291bGQgYWxzbyB3b3JrIHdpdGgsIHNheSwgYQogLy8gICAvLyBgc3RkOjp2
ZWN0b3I8c3RkOjpwYWlyPD4+YC4KLS8vICAgc3RkOjptYXA8c3RyaW5nLCBpbnQ+IG0gPSB7Cisv
LyAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IG0gPSB7CiAvLyAgICAgICBzdGQ6Om1ha2Vf
cGFpcigiYSIsIDEpLAogLy8gICAgICAgc3RkOjptYWtlX3BhaXIoImIiLCAyKSwKIC8vICAgICAg
IHN0ZDo6bWFrZV9wYWlyKCJjIiwgMyl9OwotLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4o
bSwgIiwiLCBhYnNsOjpQYWlyRm9ybWF0dGVyKCI9IikpOworLy8gICBzdGQ6OnN0cmluZyBzID0g
YWJzbDo6U3RySm9pbihtLCAiLCIsIGFic2w6OlBhaXJGb3JtYXR0ZXIoIj0iKSk7CiAvLyAgIEVY
UEVDVF9FUSgiYT0xLGI9MixjPTMiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDc6CiAvLyAgIC8vIFRo
ZXNlIGV4YW1wbGVzIHNob3cgaG93IGBhYnNsOjpTdHJKb2luKClgIGhhbmRsZXMgYSBmZXcgY29t
bW9uIGVkZ2UKIC8vICAgLy8gY2FzZXM6Ci0vLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdl9lbXB0
eTsKKy8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHZfZW1wdHk7CiAvLyAgIEVYUEVDVF9F
USgiIiwgYWJzbDo6U3RySm9pbih2X2VtcHR5LCAiLSIpKTsKIC8vCi0vLyAgIHN0ZDo6dmVjdG9y
PHN0cmluZz4gdl9vbmVfaXRlbSA9IHsiZm9vIn07CisvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiB2X29uZV9pdGVtID0geyJmb28ifTsKIC8vICAgRVhQRUNUX0VRKCJmb28iLCBhYnNsOjpT
dHJKb2luKHZfb25lX2l0ZW0sICItIikpOwogLy8KLS8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2
X2VtcHR5X3N0cmluZyA9IHsiIn07CisvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X2Vt
cHR5X3N0cmluZyA9IHsiIn07CiAvLyAgIEVYUEVDVF9FUSgiIiwgYWJzbDo6U3RySm9pbih2X2Vt
cHR5X3N0cmluZywgIi0iKSk7CiAvLwotLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHZfb25lX2l0
ZW1fZW1wdHlfc3RyaW5nID0geyJhIiwgIiJ9OworLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gdl9vbmVfaXRlbV9lbXB0eV9zdHJpbmcgPSB7ImEiLCAiIn07CiAvLyAgIEVYUEVDVF9FUSgi
YS0iLCBhYnNsOjpTdHJKb2luKHZfb25lX2l0ZW1fZW1wdHlfc3RyaW5nLCAiLSIpKTsKIC8vCi0v
LyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdl90d29fZW1wdHlfc3RyaW5nID0geyIiLCAiIn07Cisv
LyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X3R3b19lbXB0eV9zdHJpbmcgPSB7IiIsICIi
fTsKIC8vICAgRVhQRUNUX0VRKCItIiwgYWJzbDo6U3RySm9pbih2X3R3b19lbXB0eV9zdHJpbmcs
ICItIikpOwogLy8KIC8vIEV4YW1wbGUgODoKIC8vICAgLy8gSm9pbnMgYSBgc3RkOjp0dXBsZTxU
Li4uPmAgb2YgaGV0ZXJvZ2VuZW91cyB0eXBlcywgY29udmVydGluZyBlYWNoIHRvCi0vLyAgIC8v
IGEgc3RyaW5nIHVzaW5nIHRoZSBgYWJzbDo6QWxwaGFOdW1gIGNsYXNzLgotLy8gICBzdHJpbmcg
cyA9IGFic2w6OlN0ckpvaW4oc3RkOjptYWtlX3R1cGxlKDEyMywgImFiYyIsIDAuNDU2KSwgIi0i
KTsKKy8vICAgLy8gYSBzdGQ6OnN0cmluZyB1c2luZyB0aGUgYGFic2w6OkFscGhhTnVtYCBjbGFz
cy4KKy8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4oc3RkOjptYWtlX3R1cGxlKDEy
MywgImFiYyIsIDAuNDU2KSwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxMjMtYWJjLTAuNDU2Iiwg
cyk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgRm9ybWF0dGVyPgog
c3RkOjpzdHJpbmcgU3RySm9pbihJdGVyYXRvciBzdGFydCwgSXRlcmF0b3IgZW5kLCBhYnNsOjpz
dHJpbmdfdmlldyBzZXAsCi0gICAgICAgICAgICAgICBGb3JtYXR0ZXImJiBmbXQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgRm9ybWF0dGVyJiYgZm10KSB7CiAgIHJldHVybiBzdHJpbmdzX2ludGVy
bmFsOjpKb2luQWxnb3JpdGhtKHN0YXJ0LCBlbmQsIHNlcCwgZm10KTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFJhbmdlLCB0eXBlbmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0cmluZyBTdHJKb2lu
KGNvbnN0IFJhbmdlJiByYW5nZSwgYWJzbDo6c3RyaW5nX3ZpZXcgc2VwYXJhdG9yLAotICAgICAg
ICAgICAgICAgRm9ybWF0dGVyJiYgZm10KSB7CisgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRl
ciYmIGZtdCkgewogICByZXR1cm4gc3RyaW5nc19pbnRlcm5hbDo6Sm9pblJhbmdlKHJhbmdlLCBz
ZXBhcmF0b3IsIGZtdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBGb3Jt
YXR0ZXI+CiBzdGQ6OnN0cmluZyBTdHJKb2luKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbCwg
YWJzbDo6c3RyaW5nX3ZpZXcgc2VwYXJhdG9yLAotICAgICAgICAgICAgICAgRm9ybWF0dGVyJiYg
Zm10KSB7CisgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciYmIGZtdCkgewogICByZXR1cm4g
c3RyaW5nc19pbnRlcm5hbDo6Sm9pblJhbmdlKGlsLCBzZXBhcmF0b3IsIGZtdCk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBULCB0eXBlbmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0cmluZyBT
dHJKb2luKGNvbnN0IHN0ZDo6dHVwbGU8VC4uLj4mIHZhbHVlLCBhYnNsOjpzdHJpbmdfdmlldyBz
ZXBhcmF0b3IsCi0gICAgICAgICAgICAgICBGb3JtYXR0ZXImJiBmbXQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgRm9ybWF0dGVyJiYgZm10KSB7CiAgIHJldHVybiBzdHJpbmdzX2ludGVybmFsOjpK
b2luQWxnb3JpdGhtKHZhbHVlLCBzZXBhcmF0b3IsIGZtdCk7CiB9CiAKQEAgLTI3NSwxMiArMjc1
LDE0IEBAIHN0ZDo6c3RyaW5nIFN0ckpvaW4oY29uc3QgUmFuZ2UmIHJhbmdlLCBhYnNsOjpzdHJp
bmdfdmlldyBzZXBhcmF0b3IpIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGQ6OnN0
cmluZyBTdHJKb2luKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbCwgYWJzbDo6c3RyaW5nX3Zp
ZXcgc2VwYXJhdG9yKSB7CitzdGQ6OnN0cmluZyBTdHJKb2luKHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxUPiBpbCwKKyAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgc2VwYXJhdG9y
KSB7CiAgIHJldHVybiBzdHJpbmdzX2ludGVybmFsOjpKb2luUmFuZ2UoaWwsIHNlcGFyYXRvcik7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgotc3RkOjpzdHJpbmcgU3RySm9pbihjb25z
dCBzdGQ6OnR1cGxlPFQuLi4+JiB2YWx1ZSwgYWJzbDo6c3RyaW5nX3ZpZXcgc2VwYXJhdG9yKSB7
CitzdGQ6OnN0cmluZyBTdHJKb2luKGNvbnN0IHN0ZDo6dHVwbGU8VC4uLj4mIHZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldyBzZXBhcmF0b3IpIHsKICAgcmV0dXJu
IHN0cmluZ3NfaW50ZXJuYWw6OkpvaW5BbGdvcml0aG0odmFsdWUsIHNlcGFyYXRvciwgQWxwaGFO
dW1Gb3JtYXR0ZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW5f
YmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfam9pbl9iZW5jaG1hcmsuY2MKaW5kZXgg
N2ZiMGU0OTczY2IuLmQ2ZjY4OWZmMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9q
b2luX2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luX2JlbmNobWFyay5j
YwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNTgsNyArNTgs
OCBAQCB2b2lkIEJNX0pvaW4yX0tleXNBbmRWYWx1ZXMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUp
IHsKICAgY29uc3QgaW50IHN0cmluZ19sZW4gPSBzdGF0ZS5yYW5nZSgwKTsKICAgY29uc3QgaW50
IG51bV9wYWlycyA9IHN0YXRlLnJhbmdlKDEpOwogICBjb25zdCBzdGQ6OnN0cmluZyBzKHN0cmlu
Z19sZW4sICd4Jyk7Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywg
aW50Pj4gdihudW1fcGFpcnMsIHN0ZDo6bWFrZV9wYWlyKHMsIDQyKSk7CisgIGNvbnN0IHN0ZDo6
dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgaW50Pj4gdihudW1fcGFpcnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFp
cihzLCA0MikpOwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7CiAgICAgc3RkOjpzdHJpbmcgcyA9
IGFic2w6OlN0ckpvaW4odiwgIiwiLCBhYnNsOjpQYWlyRm9ybWF0dGVyKCI9IikpOwogICAgIGJl
bmNobWFyazo6RG9Ob3RPcHRpbWl6ZShzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Ry
X2pvaW5fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW5fdGVzdC5jYwppbmRleCBjOTQx
ZjljODBkNC4uOTIxZDljMmJmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW5f
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luX3Rlc3QuY2MKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTExOCw3ICsxMTgsNyBAQCBURVNUKFN0
ckpvaW4sIEFQSUV4YW1wbGVzKSB7CiAKICAgewogICAgIC8vIEEgc3RkOjptYXAsIHdoaWNoIGlz
IGEgY29sbGVjdGlvbiBvZiBzdGQ6OnBhaXI8PnMuCi0gICAgc3RkOjptYXA8c3RkOjpzdHJpbmcs
IGludD4gbSA9IHsgeyJhIiwgMX0sIHsiYiIsIDJ9LCB7ImMiLCAzfSB9OworICAgIHN0ZDo6bWFw
PHN0ZDo6c3RyaW5nLCBpbnQ+IG0gPSB7eyJhIiwgMX0sIHsiYiIsIDJ9LCB7ImMiLCAzfX07CiAg
ICAgRVhQRUNUX0VRKCJhPTEsYj0yLGM9MyIsIGFic2w6OlN0ckpvaW4obSwgIiwiLCBhYnNsOjpQ
YWlyRm9ybWF0dGVyKCI9IikpKTsKICAgfQogCkBAIC0xNDAsNyArMTQwLDggQEAgVEVTVChTdHJK
b2luLCBBUElFeGFtcGxlcykgewogICB9CiAKICAgewotICAgIC8vIEEgcmFuZ2Ugb2YgMSBlbGVt
ZW50IGdpdmVzIGEgc3RkOjpzdHJpbmcgd2l0aCB0aGF0IGVsZW1lbnQgYnV0IG5vIHNlcGFyYXRv
ci4KKyAgICAvLyBBIHJhbmdlIG9mIDEgZWxlbWVudCBnaXZlcyBhIHN0ZDo6c3RyaW5nIHdpdGgg
dGhhdCBlbGVtZW50IGJ1dCBubworICAgIC8vIHNlcGFyYXRvci4KICAgICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gdiA9IHsiZm9vIn07CiAgICAgRVhQRUNUX0VRKCJmb28iLCBhYnNsOjpTdHJK
b2luKHYsICItIikpOwogICB9CkBAIC0xNzMsOSArMTc0LDEwIEBAIFRFU1QoU3RySm9pbiwgQVBJ
RXhhbXBsZXMpIHsKIFRFU1QoU3RySm9pbiwgQ3VzdG9tRm9ybWF0dGVyKSB7CiAgIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiB2eyJPbmUiLCAiVHdvIiwgIlRocmVlIn07CiAgIHsKLSAgICBzdGQ6
OnN0cmluZyBqb2luZWQgPSBhYnNsOjpTdHJKb2luKHYsICIiLCBbXShzdGQ6OnN0cmluZyogb3V0
LCBjb25zdCBzdGQ6OnN0cmluZyYgaW4pIHsKLSAgICAgIGFic2w6OlN0ckFwcGVuZChvdXQsICIo
IiwgaW4sICIpIik7Ci0gICAgfSk7CisgICAgc3RkOjpzdHJpbmcgam9pbmVkID0KKyAgICAgICAg
YWJzbDo6U3RySm9pbih2LCAiIiwgW10oc3RkOjpzdHJpbmcqIG91dCwgY29uc3Qgc3RkOjpzdHJp
bmcmIGluKSB7CisgICAgICAgICAgYWJzbDo6U3RyQXBwZW5kKG91dCwgIigiLCBpbiwgIikiKTsK
KyAgICAgICAgfSk7CiAgICAgRVhQRUNUX0VRKCIoT25lKShUd28pKFRocmVlKSIsIGpvaW5lZCk7
CiAgIH0KICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2UuY2MKaW5kZXggNjllZmEzNTcxMzguLjI4MGY2M2QzMmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3Mvc3RyX3JlcGxhY2UuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTY4LDExICs2OCwxMiBAQCBpbnQgQXBwbHlTdWJzdGl0dXRpb25zKAogLy8gYXJl
bid0IGlubGluZWQuCiAKIHN0ZDo6c3RyaW5nIFN0clJlcGxhY2VBbGwoYWJzbDo6c3RyaW5nX3Zp
ZXcgcywKLSAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3NfaW50ZXJuYWw6OkZpeGVkTWFwcGlu
ZyByZXBsYWNlbWVudHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nc19pbnRl
cm5hbDo6Rml4ZWRNYXBwaW5nIHJlcGxhY2VtZW50cykgewogICByZXR1cm4gU3RyUmVwbGFjZUFs
bDxzdHJpbmdzX2ludGVybmFsOjpGaXhlZE1hcHBpbmc+KHMsIHJlcGxhY2VtZW50cyk7CiB9CiAK
LWludCBTdHJSZXBsYWNlQWxsKHN0cmluZ3NfaW50ZXJuYWw6OkZpeGVkTWFwcGluZyByZXBsYWNl
bWVudHMsIHN0ZDo6c3RyaW5nKiB0YXJnZXQpIHsKK2ludCBTdHJSZXBsYWNlQWxsKHN0cmluZ3Nf
aW50ZXJuYWw6OkZpeGVkTWFwcGluZyByZXBsYWNlbWVudHMsCisgICAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZyogdGFyZ2V0KSB7CiAgIHJldHVybiBTdHJSZXBsYWNlQWxsPHN0cmluZ3NfaW50
ZXJuYWw6OkZpeGVkTWFwcGluZz4ocmVwbGFjZW1lbnRzLCB0YXJnZXQpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBs
YWNlLmgKaW5kZXggM2JmZTRjNjFlYmQuLjMwNTQwZDAyY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL3N0cl9yZXBsYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5oCkBA
IC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yOSwxMiArMjksMTIg
QEAKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vIHN0cmluZyBodG1sX2VzY2FwZWQgPSBhYnNsOjpT
dHJSZXBsYWNlQWxsKHVzZXJfaW5wdXQsIHsKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsiJiIsICImYW1wOyJ9LAotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyI8IiwgIiZsdDsifSwKLS8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsiPiIsICImZ3Q7In0sCi0vLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IlwiIiwgIiZxdW90OyJ9LAotLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyInIiwgIiYjMzk7In19KTsKKy8v
IHN0ZDo6c3RyaW5nIGh0bWxfZXNjYXBlZCA9IGFic2w6OlN0clJlcGxhY2VBbGwodXNlcl9pbnB1
dCwgeworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
IiYiLCAiJmFtcDsifSwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeyI8IiwgIiZsdDsifSwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyI+IiwgIiZndDsifSwKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJcIiIsICImcXVvdDsifSwKKy8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyInIiwgIiYjMzk7In19KTsK
ICNpZm5kZWYgQUJTTF9TVFJJTkdTX1NUUl9SRVBMQUNFX0hfCiAjZGVmaW5lIEFCU0xfU1RSSU5H
U19TVFJfUkVQTEFDRV9IXwogCkBAIC01OCwxMCArNTgsMTEgQEAgbmFtZXNwYWNlIGFic2wgewog
Ly8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VBbGwo
IiR3aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhhbmtzICR3aG8hIiwKLS8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHt7IiRjb3VudCIsIGFic2w6OlN0ckNhdCg1KX0sCi0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyIkd2hvIiwgIkJvYiJ9LAotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiI05vdW4iLCAiQXBwbGVzIn19KTsKKy8v
ICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VBbGwoCisvLyAgICAgICAiJHdobyBi
b3VnaHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiLAorLy8gICAgICAge3siJGNvdW50Iiwg
YWJzbDo6U3RyQ2F0KDUpfSwKKy8vICAgICAgICB7IiR3aG8iLCAiQm9iIn0sCisvLyAgICAgICAg
eyIjTm91biIsICJBcHBsZXMifX0pOwogLy8gICBFWFBFQ1RfRVEoIkJvYiBib3VnaHQgNSBBcHBs
ZXMuIFRoYW5rcyBCb2IhIiwgcyk7CiBBQlNMX01VU1RfVVNFX1JFU1VMVCBzdGQ6OnN0cmluZyBT
dHJSZXBsYWNlQWxsKAogICAgIGFic2w6OnN0cmluZ192aWV3IHMsCkBAIC03OCwyMCArNzksMjIg
QEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3RyUmVwbGFjZUFsbCgKIC8vICAg
cmVwbGFjZW1lbnRzWyIkd2hvIl0gPSAiQm9iIjsKIC8vICAgcmVwbGFjZW1lbnRzWyIkY291bnQi
XSA9ICI1IjsKIC8vICAgcmVwbGFjZW1lbnRzWyIjTm91biJdID0gIkFwcGxlcyI7Ci0vLyAgIHN0
cmluZyBzID0gYWJzbDo6U3RyUmVwbGFjZUFsbCgiJHdobyBib3VnaHQgJGNvdW50ICNOb3VuLiBU
aGFua3MgJHdobyEiLAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFj
ZW1lbnRzKTsKKy8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VBbGwoCisvLyAg
ICAgICAiJHdobyBib3VnaHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiLAorLy8gICAgICAg
cmVwbGFjZW1lbnRzKTsKIC8vICAgRVhQRUNUX0VRKCJCb2IgYm91Z2h0IDUgQXBwbGVzLiBUaGFu
a3MgQm9iISIsIHMpOwogLy8KIC8vICAgLy8gQSBzdGQ6OnZlY3RvciBvZiBzdGQ6OnBhaXIgZWxl
bWVudHMgY2FuIGJlIG1vcmUgZWZmaWNpZW50LgotLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8
Y29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcsIHN0cmluZz4+IHJlcGxhY2VtZW50czsKKy8vICAgc3Rk
Ojp2ZWN0b3I8c3RkOjpwYWlyPGNvbnN0IGFic2w6OnN0cmluZ192aWV3LCBzdGQ6OnN0cmluZz4+
IHJlcGxhY2VtZW50czsKIC8vICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFjayh7IiYiLCAiJmFtcDsi
fSk7CiAvLyAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2soeyI8IiwgIiZsdDsifSk7CiAvLyAgIHJl
cGxhY2VtZW50cy5wdXNoX2JhY2soeyI+IiwgIiZndDsifSk7Ci0vLyAgIHN0cmluZyBzID0gYWJz
bDo6U3RyUmVwbGFjZUFsbCgiaWYgKHB0ciA8ICZmb28pIiwKKy8vICAgc3RkOjpzdHJpbmcgcyA9
IGFic2w6OlN0clJlcGxhY2VBbGwoImlmIChwdHIgPCAmZm9vKSIsCiAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMpOwogLy8gICBFWFBFQ1RfRVEoImlmIChw
dHIgJmx0OyAmYW1wO2ZvbykiLCBzKTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBTdHJUb1N0ck1hcHBp
bmc+Ci1zdGQ6OnN0cmluZyBTdHJSZXBsYWNlQWxsKGFic2w6OnN0cmluZ192aWV3IHMsIGNvbnN0
IFN0clRvU3RyTWFwcGluZyYgcmVwbGFjZW1lbnRzKTsKK3N0ZDo6c3RyaW5nIFN0clJlcGxhY2VB
bGwoYWJzbDo6c3RyaW5nX3ZpZXcgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyVG9TdHJNYXBwaW5nJiByZXBsYWNlbWVudHMpOwogCiAvLyBPdmVybG9hZCBvZiBgU3RyUmVw
bGFjZUFsbCgpYCB0byByZXBsYWNlIGNoYXJhY3RlciBzZXF1ZW5jZXMgd2l0aGluIGEgZ2l2ZW4K
IC8vIG91dHB1dCBzdHJpbmcgKmluIHBsYWNlKiB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZCB3
aXRoaW4gYW4gaW5pdGlhbGl6ZXIKQEAgLTk5LDcgKzEwMiw3IEBAIHN0ZDo6c3RyaW5nIFN0clJl
cGxhY2VBbGwoYWJzbDo6c3RyaW5nX3ZpZXcgcywgY29uc3QgU3RyVG9TdHJNYXBwaW5nJiByZXBs
YWNlbWVuCiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIHN0cmluZyBzID0gc3RkOjpzdHJpbmco
IiR3aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhhbmtzICR3aG8hIik7CisvLyAgIHN0ZDo6c3Ry
aW5nIHMgPSBzdGQ6OnN0cmluZygiJHdobyBib3VnaHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdo
byEiKTsKIC8vICAgaW50IGNvdW50OwogLy8gICBjb3VudCA9IGFic2w6OlN0clJlcGxhY2VBbGwo
e3siJGNvdW50IiwgYWJzbDo6U3RyQ2F0KDUpfSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsiJHdobyIsICJCb2IifSwKQEAgLTExNyw3ICsxMjAsNyBAQCBpbnQgU3RyUmVwbGFj
ZUFsbCgKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgc3RyaW5nIHMgPSBzdGQ6OnN0cmluZygi
aWYgKHB0ciA8ICZmb28pIik7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBzdGQ6OnN0cmluZygiaWYg
KHB0ciA8ICZmb28pIik7CiAvLyAgIGludCBjb3VudCA9IGFic2w6OlN0clJlcGxhY2VBbGwoe3si
JiIsICImYW1wOyJ9LAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ijwi
LCAiJmx0OyJ9LAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ij4iLCAi
Jmd0OyJ9fSwgJnMpOwpAQCAtMTg3LDcgKzE5MCw4IEBAIGludCBBcHBseVN1YnN0aXR1dGlvbnMo
YWJzbDo6c3RyaW5nX3ZpZXcgcywKIH0gIC8vIG5hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFsCiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBTdHJUb1N0ck1hcHBpbmc+Ci1zdGQ6OnN0cmluZyBTdHJSZXBs
YWNlQWxsKGFic2w6OnN0cmluZ192aWV3IHMsIGNvbnN0IFN0clRvU3RyTWFwcGluZyYgcmVwbGFj
ZW1lbnRzKSB7CitzdGQ6OnN0cmluZyBTdHJSZXBsYWNlQWxsKGFic2w6OnN0cmluZ192aWV3IHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0clRvU3RyTWFwcGluZyYgcmVwbGFj
ZW1lbnRzKSB7CiAgIGF1dG8gc3VicyA9IHN0cmluZ3NfaW50ZXJuYWw6OkZpbmRTdWJzdGl0dXRp
b25zKHMsIHJlcGxhY2VtZW50cyk7CiAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKICAgcmVzdWx0LnJl
c2VydmUocy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV9i
ZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlX2JlbmNobWFyay5jYwppbmRl
eCA4Mzg2ZjJlNmJmMS4uOTViMmRjMTA1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Ry
X3JlcGxhY2VfYmVuY2htYXJrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2VfYmVu
Y2htYXJrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC01
NCw3ICs1NCw3IEBAIHZvaWQgU2V0VXBTdHJpbmdzKCkgewogICAgIHNpemVfdCByID0gMDsKICAg
ICBiaWdfc3RyaW5nID0gbmV3IHN0ZDo6c3RyaW5nKDEwMDAgKiAxMDAwLCAnICcpOwogICAgIGZv
ciAoc3RkOjpzdHJpbmcgcGhyYXNlIDogeyJ0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVy
IHRoZSBsYXp5IGRvZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAicGFjayBteSBib3gg
d2l0aCB0aGUgZml2ZSBkb3plbiBsaXF1b3IganVncyJ9KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInBhY2sgbXkgYm94IHdpdGggdGhlIGZpdmUgZG96ZW4gbGlxdW9yIGp1Z3Mi
fSkgewogICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMCAqIDEwMDA7ICsraSkgewogICAgICAg
ICByID0gciAqIDIzNyArIDQxOyAgLy8gbm90IHZlcnkgcmFuZG9tLgogICAgICAgICBtZW1jcHko
JigqYmlnX3N0cmluZylbciAlIChiaWdfc3RyaW5nLT5zaXplKCkgLSBwaHJhc2Uuc2l6ZSgpKV0s
CkBAIC0xMDgsMTEgKzEwOCwxMSBAQCB2b2lkIEJNX1N0clJlcGxhY2VBbGwoYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKICAgc3RkOjpzdHJpbmcgc3JjID0gKmJpZ19zdHJpbmc7CiAgIGZvciAo
YXV0byBfIDogc3RhdGUpIHsKICAgICBzdGQ6OnN0cmluZyBkZXN0ID0gYWJzbDo6U3RyUmVwbGFj
ZUFsbChzcmMsIHt7InRoZSIsICJib3gifSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyJicm93biIsICJxdWljayJ9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7Imp1bXBlZCIsICJsaXF1b3JlZCJ9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImRvemVuIiwgImJyb3duIn0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsibGF6eSIsICJwYWNr
In0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsibGlxdW9y
IiwgInNoYWtlcyJ9fSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeyJicm93biIsICJxdWljayJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsianVtcGVkIiwgImxpcXVvcmVkIn0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJkb3plbiIsICJicm93biJ9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsibGF6
eSIsICJwYWNrIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyJsaXF1b3IiLCAic2hha2VzIn19KTsKICAgICBBQlNMX1JBV19DSEVDSyhkZXN0ID09
ICphZnRlcl9yZXBsYWNpbmdfbWFueSwKICAgICAgICAgICAgICAgICAgICAibm90IGJlbmNobWFy
a2luZyBpbnRlbmRlZCBiZWhhdmlvciIpOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9yZXBsYWNlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlX3Rlc3QuY2MK
aW5kZXggNWQwMDNhMjI0YTQuLjFjYTIzYWZmNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9yZXBsYWNlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV90ZXN0
LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgVEVTVChTdHJSZXBsYWNlQWxsLCBNYW55UmVwbGFjZW1lbnRzSW5NYXApIHsKICAg
cmVwbGFjZW1lbnRzWyIkY291bnQiXSA9ICI1IjsKICAgcmVwbGFjZW1lbnRzWyIjTm91biJdID0g
IkFwcGxlcyI7CiAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCIkd2hvIGJv
dWdodCAkY291bnQgI05vdW4uIFRoYW5rcyAkd2hvISIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXBsYWNlbWVudHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXBsYWNlbWVudHMpOwogICBFWFBFQ1RfRVEoIkJvYiBib3VnaHQgNSBBcHBsZXMu
IFRoYW5rcyBCb2IhIiwgcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3Nw
bGl0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuY2MKaW5kZXggMGE2OGM1MmQxNGYuLjI1
OTMxMzA3ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyX3NwbGl0LmgKaW5kZXggYzdlYjI4MGM0MTEuLjczMzMwNzg5MzhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Ry
X3NwbGl0LmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTcx
LDIzICs3MSwyMyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAgIC0gYEJ5TGVuZ3RoYAogLy8gICAt
IGBNYXhTcGxpdHNgCiAvLwotLy8KLS8vIEEgRGVsaW1pdGVyJ3MgRmluZCgpIG1lbWJlciBmdW5j
dGlvbiB3aWxsIGJlIHBhc3NlZCB0aGUgaW5wdXQgdGV4dCB0aGF0IGlzIHRvCi0vLyBiZSBzcGxp
dCBhbmQgdGhlIHBvc2l0aW9uIHRvIGJlZ2luIHNlYXJjaGluZyBmb3IgdGhlIG5leHQgZGVsaW1p
dGVyIGluIHRoZQotLy8gaW5wdXQgdGV4dC4gVGhlIHJldHVybmVkIGFic2w6OnN0cmluZ192aWV3
IHNob3VsZCByZWZlciB0byB0aGUgbmV4dAotLy8gb2NjdXJyZW5jZSAoYWZ0ZXIgcG9zKSBvZiB0
aGUgcmVwcmVzZW50ZWQgZGVsaW1pdGVyOyB0aGlzIHJldHVybmVkCi0vLyBhYnNsOjpzdHJpbmdf
dmlldyByZXByZXNlbnRzIHRoZSBuZXh0IGxvY2F0aW9uIHdoZXJlIHRoZSBpbnB1dCBzdHJpbmcg
c2hvdWxkCi0vLyBiZSBicm9rZW4uIFRoZSByZXR1cm5lZCBhYnNsOjpzdHJpbmdfdmlldyBtYXkg
YmUgemVyby1sZW5ndGggaWYgdGhlIERlbGltaXRlcgotLy8gZG9lcyBub3QgcmVwcmVzZW50IGEg
cGFydCBvZiB0aGUgc3RyaW5nIChlLmcuLCBhIGZpeGVkLWxlbmd0aCBkZWxpbWl0ZXIpLiBJZgot
Ly8gbm8gZGVsaW1pdGVyIGlzIGZvdW5kIGluIHRoZSBnaXZlbiB0ZXh0LCBhIHplcm8tbGVuZ3Ro
IGFic2w6OnN0cmluZ192aWV3Ci0vLyByZWZlcnJpbmcgdG8gdGV4dC5lbmQoKSBzaG91bGQgYmUg
cmV0dXJuZWQgKGUuZy4sCi0vLyBhYnNsOjpzdHJpbmdfdmlldyh0ZXh0LmVuZCgpLCAwKSkuIEl0
IGlzIGltcG9ydGFudCB0aGF0IHRoZSByZXR1cm5lZAotLy8gYWJzbDo6c3RyaW5nX3ZpZXcgYWx3
YXlzIGJlIHdpdGhpbiB0aGUgYm91bmRzIG9mIGlucHV0IHRleHQgZ2l2ZW4gYXMgYW4KKy8vIEEg
RGVsaW1pdGVyJ3MgYEZpbmQoKWAgbWVtYmVyIGZ1bmN0aW9uIHdpbGwgYmUgcGFzc2VkIGFuIGlu
cHV0IGB0ZXh0YCB0aGF0IGlzCisvLyB0byBiZSBzcGxpdCBhbmQgYSBwb3NpdGlvbiAoYHBvc2Ap
IHRvIGJlZ2luIHNlYXJjaGluZyBmb3IgdGhlIG5leHQgZGVsaW1pdGVyCisvLyBpbiBgdGV4dGAu
IFRoZSByZXR1cm5lZCBhYnNsOjpzdHJpbmdfdmlldyBzaG91bGQgcmVmZXIgdG8gdGhlIG5leHQg
b2NjdXJyZW5jZQorLy8gKGFmdGVyIGBwb3NgKSBvZiB0aGUgcmVwcmVzZW50ZWQgZGVsaW1pdGVy
OyB0aGlzIHJldHVybmVkIGFic2w6OnN0cmluZ192aWV3CisvLyByZXByZXNlbnRzIHRoZSBuZXh0
IGxvY2F0aW9uIHdoZXJlIHRoZSBpbnB1dCBgdGV4dGAgc2hvdWxkIGJlIGJyb2tlbi4KKy8vCisv
LyBUaGUgcmV0dXJuZWQgYWJzbDo6c3RyaW5nX3ZpZXcgbWF5IGJlIHplcm8tbGVuZ3RoIGlmIHRo
ZSBEZWxpbWl0ZXIgZG9lcyBub3QKKy8vIHJlcHJlc2VudCBhIHBhcnQgb2YgdGhlIHN0cmluZyAo
ZS5nLiwgYSBmaXhlZC1sZW5ndGggZGVsaW1pdGVyKS4gSWYgbm8KKy8vIGRlbGltaXRlciBpcyBm
b3VuZCBpbiB0aGUgaW5wdXQgYHRleHRgLCBhIHplcm8tbGVuZ3RoIGFic2w6OnN0cmluZ192aWV3
CisvLyByZWZlcnJpbmcgdG8gYHRleHQuZW5kKClgIHNob3VsZCBiZSByZXR1cm5lZCAoZS5nLiwK
Ky8vIGB0ZXh0LnN1YnN0cih0ZXh0LnNpemUoKSlgKS4gSXQgaXMgaW1wb3J0YW50IHRoYXQgdGhl
IHJldHVybmVkCisvLyBhYnNsOjpzdHJpbmdfdmlldyBhbHdheXMgYmUgd2l0aGluIHRoZSBib3Vu
ZHMgb2YgdGhlIGlucHV0IGB0ZXh0YCBnaXZlbiBhcyBhbgogLy8gYXJndW1lbnQtLWl0IG11c3Qg
bm90IHJlZmVyIHRvIGEgc3RyaW5nIHRoYXQgaXMgcGh5c2ljYWxseSBsb2NhdGVkIG91dHNpZGUg
b2YKIC8vIHRoZSBnaXZlbiBzdHJpbmcuCiAvLwogLy8gVGhlIGZvbGxvd2luZyBleGFtcGxlIGlz
IGEgc2ltcGxlIERlbGltaXRlciBvYmplY3QgdGhhdCBpcyBjcmVhdGVkIHdpdGggYQotLy8gc2lu
Z2xlIGNoYXIgYW5kIHdpbGwgbG9vayBmb3IgdGhhdCBjaGFyIGluIHRoZSB0ZXh0IHBhc3NlZCB0
byB0aGUgRmluZCgpCisvLyBzaW5nbGUgY2hhciBhbmQgd2lsbCBsb29rIGZvciB0aGF0IGNoYXIg
aW4gdGhlIHRleHQgcGFzc2VkIHRvIHRoZSBgRmluZCgpYAogLy8gZnVuY3Rpb246CiAvLwogLy8g
ICBzdHJ1Y3QgU2ltcGxlRGVsaW1pdGVyIHsKQEAgLTk2LDkgKzk2LDkgQEAgbmFtZXNwYWNlIGFi
c2wgewogLy8gICAgIGFic2w6OnN0cmluZ192aWV3IEZpbmQoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4
dCwgc2l6ZV90IHBvcykgewogLy8gICAgICAgYXV0byBmb3VuZCA9IHRleHQuZmluZChjXywgcG9z
KTsKIC8vICAgICAgIGlmIChmb3VuZCA9PSBhYnNsOjpzdHJpbmdfdmlldzo6bnBvcykKLS8vICAg
ICAgICAgcmV0dXJuIGFic2w6OnN0cmluZ192aWV3KHRleHQuZW5kKCksIDApOworLy8gICAgICAg
ICByZXR1cm4gdGV4dC5zdWJzdHIodGV4dC5zaXplKCkpOwogLy8KLS8vICAgICAgIHJldHVybiBh
YnNsOjpzdHJpbmdfdmlldyh0ZXh0LCBmb3VuZCwgMSk7CisvLyAgICAgICByZXR1cm4gdGV4dC5z
dWJzdHIoZm91bmQsIDEpOwogLy8gICAgIH0KIC8vICAgfTsKIApAQCAtMTMxLDggKzEzMSw3IEBA
IGNsYXNzIEJ5U3RyaW5nIHsKIC8vIEJ5Q2hhcgogLy8KIC8vIEEgc2luZ2xlIGNoYXJhY3RlciBk
ZWxpbWl0ZXIuIGBCeUNoYXJgIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGEKLS8vIDEt
Y2hhciBzdHJpbmcgd2l0aGluIGEgYEJ5U3RyaW5nYCBkZWxpbWl0ZXIsIGJ1dCBzbGlnaHRseSBt
b3JlCi0vLyBlZmZpY2llbnQuCisvLyAxLWNoYXIgc3RyaW5nIHdpdGhpbiBhIGBCeVN0cmluZ2Ag
ZGVsaW1pdGVyLCBidXQgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQuCiAvLwogLy8gRXhhbXBsZToK
IC8vCkBAIC00MTMsMTAgKzQxMiwxMCBAQCBzdHJ1Y3QgU2tpcFdoaXRlc3BhY2UgewogLy8KIC8v
IFRoZSBgU3RyU3BsaXQoKWAgZnVuY3Rpb24gYWRhcHRzIHRoZSByZXR1cm5lZCBjb2xsZWN0aW9u
IHRvIHRoZSBjb2xsZWN0aW9uCiAvLyBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlciAoZS5nLiBgc3Rk
Ojp2ZWN0b3JgIGFib3ZlKS4gVGhlIHJldHVybmVkIGNvbGxlY3Rpb25zCi0vLyBtYXkgY29udGFp
biBgc3RyaW5nYCwgYGFic2w6OnN0cmluZ192aWV3YCAoaW4gd2hpY2ggY2FzZSB0aGUgb3JpZ2lu
YWwgc3RyaW5nCi0vLyBiZWluZyBzcGxpdCBtdXN0IGVuc3VyZSB0aGF0IGl0IG91dGxpdmVzIHRo
ZSBjb2xsZWN0aW9uKSwgb3IgYW55IG9iamVjdCB0aGF0Ci0vLyBjYW4gYmUgZXhwbGljaXRseSBj
cmVhdGVkIGZyb20gYW4gYGFic2w6OnN0cmluZ192aWV3YC4gVGhpcyBiZWhhdmlvciB3b3Jrcwot
Ly8gZm9yOgorLy8gbWF5IGNvbnRhaW4gYHN0ZDo6c3RyaW5nYCwgYGFic2w6OnN0cmluZ192aWV3
YCAoaW4gd2hpY2ggY2FzZSB0aGUgb3JpZ2luYWwKKy8vIHN0cmluZyBiZWluZyBzcGxpdCBtdXN0
IGVuc3VyZSB0aGF0IGl0IG91dGxpdmVzIHRoZSBjb2xsZWN0aW9uKSwgb3IgYW55CisvLyBvYmpl
Y3QgdGhhdCBjYW4gYmUgZXhwbGljaXRseSBjcmVhdGVkIGZyb20gYW4gYGFic2w6OnN0cmluZ192
aWV3YC4gVGhpcworLy8gYmVoYXZpb3Igd29ya3MgZm9yOgogLy8KIC8vIDEpIEFsbCBzdGFuZGFy
ZCBTVEwgY29udGFpbmVycyBpbmNsdWRpbmcgYHN0ZDo6dmVjdG9yYCwgYHN0ZDo6bGlzdGAsCiAv
LyAgICBgc3RkOjpkZXF1ZWAsIGBzdGQ6OnNldGAsYHN0ZDo6bXVsdGlzZXRgLCAnc3RkOjptYXBg
LCBhbmQgYHN0ZDo6bXVsdGltYXBgCkBAIC00NjAsNyArNDU5LDcgQEAgc3RydWN0IFNraXBXaGl0
ZXNwYWNlIHsKIC8vIEV4YW1wbGU6CiAvLwogLy8gICAvLyBTdG9yZXMgZmlyc3QgdHdvIHNwbGl0
IHN0cmluZ3MgYXMgdGhlIG1lbWJlcnMgaW4gYSBzdGQ6OnBhaXIuCi0vLyAgIHN0ZDo6cGFpcjxz
dHJpbmcsIHN0cmluZz4gcCA9IGFic2w6OlN0clNwbGl0KCJhLGIsYyIsICcsJyk7CisvLyAgIHN0
ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IHAgPSBhYnNsOjpTdHJTcGxpdCgiYSxi
LGMiLCAnLCcpOwogLy8gICAvLyBwLmZpcnN0ID09ICJhIiwgcC5zZWNvbmQgPT0gImIiICAgICAg
IC8vICJjIiBpcyBvbWl0dGVkLgogLy8KIC8vIFRoZSBgU3RyU3BsaXQoKWAgZnVuY3Rpb24gY2Fu
IGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgdG8gcGVyZm9ybSBtb3JlCkBAIC00NzAsNyArNDY5LDcg
QEAgc3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIC8vCiAvLyAgIC8vIFRoZSBpbnB1dCBzdHJpbmcg
ImE9Yj1jLGQ9ZSxmPSxnIiBiZWNvbWVzCiAvLyAgIC8vIHsgImEiID0+ICJiPWMiLCAiZCIgPT4g
ImUiLCAiZiIgPT4gIiIsICJnIiA9PiAiIiB9Ci0vLyAgIHN0ZDo6bWFwPHN0cmluZywgc3RyaW5n
PiBtOworLy8gICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG07CiAvLyAgIGZv
ciAoYWJzbDo6c3RyaW5nX3ZpZXcgc3AgOiBhYnNsOjpTdHJTcGxpdCgiYT1iPWMsZD1lLGY9LGci
LCAnLCcpKSB7CiAvLyAgICAgbS5pbnNlcnQoYWJzbDo6U3RyU3BsaXQoc3AsIGFic2w6Ok1heFNw
bGl0cygnPScsIDEpKSk7CiAvLyAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3Nw
bGl0X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0X2JlbmNobWFyay5jYwpp
bmRleCAzMjZmZjc0NGViZC4uZjM4ZGZjZmU1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3RyX3NwbGl0X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdF9iZW5j
aG1hcmsuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM1
LDE2ICszNSwzOSBAQCBzdGQ6OnN0cmluZyBNYWtlVGVzdFN0cmluZyhpbnQgZGVzaXJlZF9sZW5n
dGgpIHsKICAgcmV0dXJuIHRlc3Q7CiB9CiAKLXZvaWQgQk1fU3BsaXQyU3RyaW5nUGllY2UoYmVu
Y2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fU3BsaXQyU3RyaW5nVmlldyhiZW5jaG1h
cms6OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6OnN0cmluZyB0ZXN0ID0gTWFrZVRlc3RTdHJpbmco
c3RhdGUucmFuZ2UoMCkpOwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7CiAgICAgc3RkOjp2ZWN0
b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IHJlc3VsdCA9IGFic2w6OlN0clNwbGl0KHRlc3QsICc7Jyk7
CiAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHJlc3VsdCk7CiAgIH0KIH0KLUJFTkNITUFS
S19SQU5HRShCTV9TcGxpdDJTdHJpbmdQaWVjZSwgMCwgMSA8PCAyMCk7CitCRU5DSE1BUktfUkFO
R0UoQk1fU3BsaXQyU3RyaW5nVmlldywgMCwgMSA8PCAyMCk7CiAKLXZvaWQgQk1fU3BsaXQyU3Ry
aW5nUGllY2VMaWZ0ZWQoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3N0YXRpYyBjb25zdCBh
YnNsOjpzdHJpbmdfdmlldyBrRGVsaW1pdGVycyA9ICI7OiwuIjsKKworc3RkOjpzdHJpbmcgTWFr
ZU11bHRpRGVsaW1pdGVyVGVzdFN0cmluZyhpbnQgZGVzaXJlZF9sZW5ndGgpIHsKKyAgc3RhdGlj
IGNvbnN0IGludCBrQXZlcmFnZVZhbHVlTGVuID0gMjU7CisgIHN0ZDo6c3RyaW5nIHRlc3QoZGVz
aXJlZF9sZW5ndGggKiBrQXZlcmFnZVZhbHVlTGVuLCAneCcpOworICBmb3IgKGludCBpID0gMDsg
aSAqIGtBdmVyYWdlVmFsdWVMZW4gPCB0ZXN0LnNpemUoKTsgKytpKSB7CisgICAgLy8gQ3ljbGUg
dGhyb3VnaCBhIHZhcmlldHkgb2YgZGVsaW1pdGVycy4KKyAgICB0ZXN0W2kgKiBrQXZlcmFnZVZh
bHVlTGVuXSA9IGtEZWxpbWl0ZXJzW2kgJSBrRGVsaW1pdGVycy5zaXplKCldOworICB9CisgIHJl
dHVybiB0ZXN0OworfQorCisvLyBNZWFzdXJlIFN0clNwbGl0IHdpdGggQnlBbnlDaGFyIHdpdGgg
Zm91ciBkZWxpbWl0ZXJzIHRvIGNob29zZSBmcm9tLgordm9pZCBCTV9TcGxpdDJTdHJpbmdWaWV3
QnlBbnlDaGFyKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHN0ZDo6c3RyaW5nIHRlc3Qg
PSBNYWtlTXVsdGlEZWxpbWl0ZXJUZXN0U3RyaW5nKHN0YXRlLnJhbmdlKDApKTsKKyAgZm9yIChh
dXRvIF8gOiBzdGF0ZSkgeworICAgIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiByZXN1
bHQgPQorICAgICAgICBhYnNsOjpTdHJTcGxpdCh0ZXN0LCBhYnNsOjpCeUFueUNoYXIoa0RlbGlt
aXRlcnMpKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocmVzdWx0KTsKKyAgfQorfQor
QkVOQ0hNQVJLX1JBTkdFKEJNX1NwbGl0MlN0cmluZ1ZpZXdCeUFueUNoYXIsIDAsIDEgPDwgMjAp
OworCit2b2lkIEJNX1NwbGl0MlN0cmluZ1ZpZXdMaWZ0ZWQoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKICAgc3RkOjpzdHJpbmcgdGVzdCA9IE1ha2VUZXN0U3RyaW5nKHN0YXRlLnJhbmdlKDAp
KTsKICAgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IHJlc3VsdDsKICAgZm9yIChhdXRv
IF8gOiBzdGF0ZSkgewpAQCAtNTIsNyArNzUsNyBAQCB2b2lkIEJNX1NwbGl0MlN0cmluZ1BpZWNl
TGlmdGVkKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIH0KICAgYmVuY2htYXJrOjpEb05v
dE9wdGltaXplKHJlc3VsdCk7CiB9Ci1CRU5DSE1BUktfUkFOR0UoQk1fU3BsaXQyU3RyaW5nUGll
Y2VMaWZ0ZWQsIDAsIDEgPDwgMjApOworQkVOQ0hNQVJLX1JBTkdFKEJNX1NwbGl0MlN0cmluZ1Zp
ZXdMaWZ0ZWQsIDAsIDEgPDwgMjApOwogCiB2b2lkIEJNX1NwbGl0MlN0cmluZyhiZW5jaG1hcms6
OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6OnN0cmluZyB0ZXN0ID0gTWFrZVRlc3RTdHJpbmcoc3Rh
dGUucmFuZ2UoMCkpOwpAQCAtNjksNyArOTIsOCBAQCBCRU5DSE1BUktfUkFOR0UoQk1fU3BsaXQy
U3RyaW5nLCAwLCAxIDw8IDIwKTsKIHZvaWQgQk1fU3BsaXQyU3BsaXRTdHJpbmdVc2luZyhiZW5j
aG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6OnN0cmluZyB0ZXN0ID0gTWFrZVRlc3RTdHJp
bmcoc3RhdGUucmFuZ2UoMCkpOwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+IHJlc3VsdCA9IGFic2w6OlN0clNwbGl0KHRlc3QsICc7JywgYWJz
bDo6U2tpcEVtcHR5KCkpOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiByZXN1bHQgPQor
ICAgICAgICBhYnNsOjpTdHJTcGxpdCh0ZXN0LCAnOycsIGFic2w6OlNraXBFbXB0eSgpKTsKICAg
ICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocmVzdWx0KTsKICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9zdHJfc3BsaXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0
X3Rlc3QuY2MKaW5kZXggNDEzYWQzMThiZjkuLjY1OGJjYTFhODY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cl9zcGxpdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0
X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQw
LDggKzQwLDggQEAgdXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsKIFRFU1Qo
U3BsaXQsIFRyYWl0c1Rlc3QpIHsKICAgc3RhdGljX2Fzc2VydCghYWJzbDo6c3RyaW5nc19pbnRl
cm5hbDo6U3BsaXR0ZXJJc0NvbnZlcnRpYmxlVG88aW50Pjo6dmFsdWUsCiAgICAgICAgICAgICAg
ICAgIiIpOwotICBzdGF0aWNfYXNzZXJ0KCFhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpTcGxpdHRl
cklzQ29udmVydGlibGVUbzxzdGQ6OnN0cmluZz46OnZhbHVlLAotICAgICAgICAgICAgICAgICIi
KTsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgICFhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpTcGxp
dHRlcklzQ29udmVydGlibGVUbzxzdGQ6OnN0cmluZz46OnZhbHVlLCAiIik7CiAgIHN0YXRpY19h
c3NlcnQoYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6U3BsaXR0ZXJJc0NvbnZlcnRpYmxlVG88CiAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPj46OnZhbHVlLAogICAg
ICAgICAgICAgICAgICIiKTsKQEAgLTcxLDggKzcxLDggQEAgVEVTVChTcGxpdCwgVHJhaXRzVGVz
dCkgewogLy8gbmFtZXNwYWNlcyBqdXN0IGxpa2UgY2FsbGVycyB3aWxsIG5lZWQgdG8gdXNlLgog
VEVTVChTcGxpdCwgQVBJRXhhbXBsZXMpIHsKICAgewotICAgIC8vIFBhc3NlcyBzdGQ6OnN0cmlu
ZyBkZWxpbWl0ZXIuIEFzc3VtZXMgdGhlIGRlZmF1bHQgb2YgTGl0ZXJhbC4KLSAgICBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gdiA9IGFic2w6OlN0clNwbGl0KCJhLGIsYyIsICcsJyk7CisgICAg
Ly8gUGFzc2VzIHN0ZDo6c3RyaW5nIGRlbGltaXRlci4gQXNzdW1lcyB0aGUgZGVmYXVsdCBvZiBC
eVN0cmluZy4KKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IGFic2w6OlN0clNwbGl0
KCJhLGIsYyIsICIsIik7ICAvLyBOT0xJTlQKICAgICBFWFBFQ1RfVEhBVCh2LCBFbGVtZW50c0Fy
ZSgiYSIsICJiIiwgImMiKSk7CiAKICAgICAvLyBFcXVpdmFsZW50IHRvLi4uCkBAIC05NiwxNyAr
OTYsNiBAQCBURVNUKFNwbGl0LCBBUElFeGFtcGxlcykgewogICAgIEVYUEVDVF9USEFUKHYsIEVs
ZW1lbnRzQXJlKCJhIiwgImIiLCAiYyIpKTsKICAgfQogCi0gIHsKLSAgICAvLyBTYW1lIGFzIGFi
b3ZlLCBidXQgdXNpbmcgc3RkOjpzdHJpbmcKLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
diA9IGFic2w6OlN0clNwbGl0KCJhLGIsYyIsICcsJyk7Ci0gICAgRVhQRUNUX1RIQVQodiwgRWxl
bWVudHNBcmUoImEiLCAiYiIsICJjIikpOwotCi0gICAgLy8gRXF1aXZhbGVudCB0by4uLgotICAg
IHVzaW5nIGFic2w6OkJ5Q2hhcjsKLSAgICB2ID0gYWJzbDo6U3RyU3BsaXQoImEsYixjIiwgQnlD
aGFyKCcsJykpOwotICAgIEVYUEVDVF9USEFUKHYsIEVsZW1lbnRzQXJlKCJhIiwgImIiLCAiYyIp
KTsKLSAgfQotCiAgIHsKICAgICAvLyBVc2VzIHRoZSBMaXRlcmFsIHN0ZDo6c3RyaW5nICI9PiIg
YXMgdGhlIGRlbGltaXRlci4KICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9
IGFic2w6OlN0clNwbGl0KCJhPT5iPT5jIiwgIj0+Iik7CkBAIC0xODIsNyArMTcxLDggQEAgVEVT
VChTcGxpdCwgQVBJRXhhbXBsZXMpIHsKICAgewogICAgIC8vIFVzZXMgdGhlIFNraXBXaGl0ZXNw
YWNlIHByZWRpY2F0ZS4KICAgICB1c2luZyBhYnNsOjpTa2lwV2hpdGVzcGFjZTsKLSAgICBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IGFic2w6OlN0clNwbGl0KCIgYSAsICwsYiwiLCAnLCcs
IFNraXBXaGl0ZXNwYWNlKCkpOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ID0KKyAg
ICAgICAgYWJzbDo6U3RyU3BsaXQoIiBhICwgLCxiLCIsICcsJywgU2tpcFdoaXRlc3BhY2UoKSk7
CiAgICAgRVhQRUNUX1RIQVQodiwgRWxlbWVudHNBcmUoIiBhICIsICJiIikpOwogICB9CiAKQEAg
LTIxNSw3ICsyMDUsOCBAQCBURVNUKFNwbGl0LCBBUElFeGFtcGxlcykgewogCiAgIHsKICAgICAv
LyBSZXN1bHRzIHN0b3JlZCBpbiBhIHN0ZDo6bXVsdGltYXAuCi0gICAgc3RkOjptdWx0aW1hcDxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG0gPSBhYnNsOjpTdHJTcGxpdCgiYSwxLGIsMixhLDMi
LCAnLCcpOworICAgIHN0ZDo6bXVsdGltYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBtID0K
KyAgICAgICAgYWJzbDo6U3RyU3BsaXQoImEsMSxiLDIsYSwzIiwgJywnKTsKICAgICBFWFBFQ1Rf
RVEoMywgbS5zaXplKCkpOwogICAgIGF1dG8gaXQgPSBtLmZpbmQoImEiKTsKICAgICBFWFBFQ1Rf
RVEoIjEiLCBpdC0+c2Vjb25kKTsKQEAgLTI3MSw3ICsyNjIsOCBAQCBURVNUKFNwbGl0SXRlcmF0
b3IsIEJhc2ljcykgewogICBFWFBFQ1RfRVEoImEiLCAqaXQpOyAgLy8gdGVzdHMgZGVyZWZlcmVu
Y2UKICAgKytpdDsgICAgICAgICAgICAgICAgIC8vIHRlc3RzIHByZWluY3JlbWVudAogICBFWFBF
Q1RfTkUoaXQsIGVuZCk7Ci0gIEVYUEVDVF9FUSgiYiIsIHN0ZDo6c3RyaW5nKGl0LT5kYXRhKCks
IGl0LT5zaXplKCkpKTsgIC8vIHRlc3RzIGRlcmVmZXJlbmNlIGFzIHB0cgorICBFWFBFQ1RfRVEo
ImIiLAorICAgICAgICAgICAgc3RkOjpzdHJpbmcoaXQtPmRhdGEoKSwgaXQtPnNpemUoKSkpOyAg
Ly8gdGVzdHMgZGVyZWZlcmVuY2UgYXMgcHRyCiAgIGl0Kys7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXN0cyBwb3N0aW5jcmVtZW50CiAgIEVYUEVDVF9F
UShpdCwgZW5kKTsKIH0KQEAgLTI5NSw3ICsyODcsOCBAQCBURVNUKFNwbGl0SXRlcmF0b3IsIFBy
ZWRpY2F0ZSkgewogICBFWFBFQ1RfRVEoImEiLCAqaXQpOyAgLy8gdGVzdHMgZGVyZWZlcmVuY2UK
ICAgKytpdDsgICAgICAgICAgICAgICAgIC8vIHRlc3RzIHByZWluY3JlbWVudCAtLSAiYiIgc2hv
dWxkIGJlIHNraXBwZWQgaGVyZS4KICAgRVhQRUNUX05FKGl0LCBlbmQpOwotICBFWFBFQ1RfRVEo
ImMiLCBzdGQ6OnN0cmluZyhpdC0+ZGF0YSgpLCBpdC0+c2l6ZSgpKSk7ICAvLyB0ZXN0cyBkZXJl
ZmVyZW5jZSBhcyBwdHIKKyAgRVhQRUNUX0VRKCJjIiwKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5n
KGl0LT5kYXRhKCksIGl0LT5zaXplKCkpKTsgIC8vIHRlc3RzIGRlcmVmZXJlbmNlIGFzIHB0cgog
ICBpdCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVz
dHMgcG9zdGluY3JlbWVudAogICBFWFBFQ1RfRVEoaXQsIGVuZCk7CiB9CkBAIC00MjEsMTAgKzQx
NCwxMyBAQCBURVNUKFNwbGl0dGVyLCBDb252ZXJzaW9uT3BlcmF0b3IpIHsKICAgVGVzdE1hcENv
bnZlcnNpb25PcGVyYXRvcjxzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PihzcGxp
dHRlcik7CiAgIFRlc3RNYXBDb252ZXJzaW9uT3BlcmF0b3I8CiAgICAgICBzdGQ6Om11bHRpbWFw
PGFic2w6OnN0cmluZ192aWV3LCBhYnNsOjpzdHJpbmdfdmlldz4+KHNwbGl0dGVyKTsKLSAgVGVz
dE1hcENvbnZlcnNpb25PcGVyYXRvcjxzdGQ6Om11bHRpbWFwPGFic2w6OnN0cmluZ192aWV3LCBz
dGQ6OnN0cmluZz4+KHNwbGl0dGVyKTsKLSAgVGVzdE1hcENvbnZlcnNpb25PcGVyYXRvcjxzdGQ6
Om11bHRpbWFwPHN0ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldz4+KHNwbGl0dGVyKTsKKyAg
VGVzdE1hcENvbnZlcnNpb25PcGVyYXRvcjxzdGQ6Om11bHRpbWFwPGFic2w6OnN0cmluZ192aWV3
LCBzdGQ6OnN0cmluZz4+KAorICAgICAgc3BsaXR0ZXIpOworICBUZXN0TWFwQ29udmVyc2lvbk9w
ZXJhdG9yPHN0ZDo6bXVsdGltYXA8c3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3Pj4oCisg
ICAgICBzcGxpdHRlcik7CiAgIFRlc3RNYXBDb252ZXJzaW9uT3BlcmF0b3I8c3RkOjptdWx0aW1h
cDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PihzcGxpdHRlcik7Ci0gIFRlc3RNYXBDb252ZXJz
aW9uT3BlcmF0b3I8c3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+
KHNwbGl0dGVyKTsKKyAgVGVzdE1hcENvbnZlcnNpb25PcGVyYXRvcjxzdGQ6OnVub3JkZXJlZF9t
YXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4oCisgICAgICBzcGxpdHRlcik7CiAKICAgLy8g
VGVzdHMgY29udmVyc2lvbiB0byBzdGQ6OnBhaXIKIApAQCAtNTY4LDEwICs1NjQsOSBAQCBURVNU
KFNwbGl0LCBBY2NlcHRzQ2VydGFpblRlbXBvcmFyaWVzKSB7CiB9CiAKIFRFU1QoU3BsaXQsIFRl
bXBvcmFyeSkgewotICAvLyBVc2UgYSBzdGQ6OnN0cmluZyBsb25nZXIgdGhhbiB0aGUgc21hbGwt
c3RkOjpzdHJpbmctb3B0aW1pemF0aW9uIGxlbmd0aCwgc28gdGhhdCB3aGVuCi0gIC8vIHRoZSB0
ZW1wb3JhcnkgaXMgZGVzdHJveWVkLCBpZiB0aGUgc3BsaXR0ZXIga2VlcHMgYSByZWZlcmVuY2Ug
dG8gdGhlCi0gIC8vIHN0ZDo6c3RyaW5nJ3MgY29udGVudHMsIGl0J2xsIHJlZmVyZW5jZSBmcmVl
ZCBtZW1vcnkgaW5zdGVhZCBvZiBqdXN0IGRlYWQKLSAgLy8gb24tc3RhY2sgbWVtb3J5LgorICAv
LyBVc2UgYSBzdGQ6OnN0cmluZyBsb25nZXIgdGhhbiB0aGUgU1NPIGxlbmd0aCwgc28gdGhhdCB3
aGVuIHRoZSB0ZW1wb3JhcnkgaXMKKyAgLy8gZGVzdHJveWVkLCBpZiB0aGUgc3BsaXR0ZXIga2Vl
cHMgYSByZWZlcmVuY2UgdG8gdGhlIHN0ZDo6c3RyaW5nJ3MgY29udGVudHMsCisgIC8vIGl0J2xs
IHJlZmVyZW5jZSBmcmVlZCBtZW1vcnkgaW5zdGVhZCBvZiBqdXN0IGRlYWQgb24tc3RhY2sgbWVt
b3J5LgogICBjb25zdCBjaGFyIGlucHV0W10gPSAiYSxiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxu
LG8scCxxLHIscyx0LHUiOwogICBFWFBFQ1RfTFQoc2l6ZW9mKHN0ZDo6c3RyaW5nKSwgQUJTTF9B
UlJBWVNJWkUoaW5wdXQpKQogICAgICAgPDwgIklucHV0IHNob3VsZCBiZSBsYXJnZXIgdGhhbiBm
aXRzIG9uIHRoZSBzdGFjay4iOwpAQCAtNjQ3LDYgKzY0MiwxMSBAQCBURVNUKFNwbGl0LCBTdHJp
bmdEZWxpbWl0ZXIpIHsKICAgfQogfQogCisjaWYgIWRlZmluZWQoX19jcHBfY2hhcjhfdCkKKyNp
ZiBkZWZpbmVkKF9fY2xhbmdfXykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdjKysyYS1jb21wYXQiCisjZW5kaWYKIFRF
U1QoU3BsaXQsIFVURjgpIHsKICAgLy8gVGVzdHMgc3BsaXR0aW5nIHV0Zjggc3RyaW5ncyBhbmQg
dXRmOCBkZWxpbWl0ZXJzLgogICBzdGQ6OnN0cmluZyB1dGY4X3N0cmluZyA9IHU4Ilx1MDNCQVx1
MUY3OVx1MDNDM1x1MDNCQ1x1MDNCNSI7CkBAIC02NzMsNiArNjczLDEwIEBAIFRFU1QoU3BsaXQs
IFVURjgpIHsKICAgICBFWFBFQ1RfVEhBVCh2LCBFbGVtZW50c0FyZSgiRm9vIiwgdTgiaFx1MDBF
NGxsbyIsIHU4InRoXHU0RTFFcmUiKSk7CiAgIH0KIH0KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorI2VuZGlmICAvLyAhZGVmaW5l
ZChfX2NwcF9jaGFyOF90KQogCiBURVNUKFNwbGl0LCBFbXB0eVN0cmluZ0RlbGltaXRlcikgewog
ICB7CkBAIC03ODIsNyArNzg2LDcgQEAgc3RhdGljIGJvb2wgSXNGb3VuZEF0KGFic2w6OnN0cmlu
Z192aWV3IHRleHQsIERlbGltaXRlciBkLCBpbnQgZXhwZWN0ZWRfcG9zKSB7CiB9CiAKIC8vCi0v
LyBUZXN0cyBmb3IgTGl0ZXJhbAorLy8gVGVzdHMgZm9yIEJ5U3RyaW5nCiAvLwogCiAvLyBUZXN0
cyB1c2luZyBhbnkgZGVsaW1pdGVyIHRoYXQgcmVwcmVzZW50cyBhIHNpbmdsZSBjb21tYS4KQEAg
LTgwMiw3ICs4MDYsNyBAQCB2b2lkIFRlc3RDb21tYShEZWxpbWl0ZXIgZCkgewogICBFWFBFQ1Rf
RkFMU0UoSXNGb3VuZEF0KCI7IiwgZCwgLTEpKTsKIH0KIAotVEVTVChEZWxpbWl0ZXIsIExpdGVy
YWwpIHsKK1RFU1QoRGVsaW1pdGVyLCBCeVN0cmluZykgewogICB1c2luZyBhYnNsOjpCeVN0cmlu
ZzsKICAgVGVzdENvbW1hKEJ5U3RyaW5nKCIsIikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL3N0cmluZ192aWV3LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5jYwppbmRleCA0
Y2VlYjZiZmY1OC4uZGMwMzRhODNlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5n
X3ZpZXcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNzcsMTggKzc3LDYgQEAgc3RkOjpvc3Ry
ZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgbywgc3RyaW5nX3ZpZXcgcGllY2UpIHsKICAg
cmV0dXJuIG87CiB9CiAKLXN0cmluZ192aWV3OjpzaXplX3R5cGUgc3RyaW5nX3ZpZXc6OmNvcHko
Y2hhciogYnVmLCBzaXplX3R5cGUgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90eXBlIHBvcykgY29uc3QgewotICBzaXplX3R5cGUgdWxlbiA9IGxlbmd0
aF87Ci0gIGFzc2VydChwb3MgPD0gdWxlbik7Ci0gIHNpemVfdHlwZSBybGVuID0gc3RkOjptaW4o
dWxlbiAtIHBvcywgbik7Ci0gIGlmIChybGVuID4gMCkgewotICAgIGNvbnN0IGNoYXIqIHN0YXJ0
ID0gcHRyXyArIHBvczsKLSAgICBzdGQ6OmNvcHkoc3RhcnQsIHN0YXJ0ICsgcmxlbiwgYnVmKTsK
LSAgfQotICByZXR1cm4gcmxlbjsKLX0KLQogc3RyaW5nX3ZpZXc6OnNpemVfdHlwZSBzdHJpbmdf
dmlldzo6ZmluZChzdHJpbmdfdmlldyBzLCBzaXplX3R5cGUgcG9zKSBjb25zdAogICAgIG5vZXhj
ZXB0IHsKICAgaWYgKGVtcHR5KCkgfHwgcG9zID4gbGVuZ3RoXykgewpAQCAtMjI4LDcgKzIxNiw3
IEBAIHN0cmluZ192aWV3OjpzaXplX3R5cGUgc3RyaW5nX3ZpZXc6OmZpbmRfbGFzdF9ub3Rfb2Yo
Y2hhciBjLAogLy8gbWVtYmVyIGRlZmluaXRpb25zIHRoYXQgYXJlIHJlcXVpcmVkIGJ5IHRoZSBD
Kysgc3RhbmRhcmQsIHJlc3VsdGluZyBpbgogLy8gTE5LMTE2OSAibXVsdGlwbHkgZGVmaW5lZCIg
ZXJyb3JzIGF0IGxpbmsgdGltZS4gX19kZWNsc3BlYyhzZWxlY3RhbnkpIGFza3MKIC8vIE1TVkMg
dG8gY2hvb3NlIG9ubHkgb25lIGRlZmluaXRpb24gZm9yIHRoZSBzeW1ib2wgaXQgZGVjb3JhdGVz
LiBTZWUgZGV0YWlscwotLy8gYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJy
YXJ5LzM0aDIzZGY4KHY9dnMuMTAwKS5hc3B4CisvLyBhdCBodHRwczovL21zZG4ubWljcm9zb2Z0
LmNvbS9lbi11cy9saWJyYXJ5LzM0aDIzZGY4KHY9dnMuMTAwKS5hc3B4CiAjaWZkZWYgX01TQ19W
RVIKICNkZWZpbmUgQUJTTF9TVFJJTkdfVklFV19TRUxFQ1RBTlkgX19kZWNsc3BlYyhzZWxlY3Rh
bnkpCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oCmluZGV4IGVjOWY2MmJlMTU3Li4yNWE0ZDFlZGVhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyaW5nX3ZpZXcuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMzIsNyArMzIsNyBAQAogCiAjaWZkZWYgQUJTTF9IQVZFX1NURF9TVFJJTkdfVklFVwog
Ci0jaW5jbHVkZSA8c3RyaW5nX3ZpZXc+CisjaW5jbHVkZSA8c3RyaW5nX3ZpZXc+ICAvLyBJV1lV
IHByYWdtYTogZXhwb3J0CiAKIG5hbWVzcGFjZSBhYnNsIHsKIHVzaW5nIHN0ZDo6c3RyaW5nX3Zp
ZXc7CkBAIC01MCw2ICs1MCw3IEBAIHVzaW5nIHN0ZDo6c3RyaW5nX3ZpZXc7CiAKICNpbmNsdWRl
ICJhYnNsL2Jhc2UvaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaCIKICNpbmNsdWRlICJhYnNsL2Jh
c2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL29wdGltaXphdGlvbi5oIgogI2luY2x1
ZGUgImFic2wvYmFzZS9wb3J0LmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKQEAgLTEwMSw3ICsxMDIs
NiBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyBleGFtcGxlLCB3aGVuIHNwbGl0dGluZyBhIHN0cmlu
ZywgYHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PmAgaXMgYQogLy8gbmF0dXJhbCBkYXRh
IHR5cGUgZm9yIHRoZSBvdXRwdXQuCiAvLwotLy8KIC8vIFdoZW4gY29uc3RydWN0ZWQgZnJvbSBh
IHNvdXJjZSB3aGljaCBpcyBudWwtdGVybWluYXRlZCwgdGhlIGBzdHJpbmdfdmlld2AKIC8vIGl0
c2VsZiB3aWxsIG5vdCBpbmNsdWRlIHRoZSBudWwtdGVybWluYXRvciB1bmxlc3MgYSBzcGVjaWZp
YyBzaXplIChpbmNsdWRpbmcKIC8vIHRoZSBudWwpIGlzIHBhc3NlZCB0byB0aGUgY29uc3RydWN0
b3IuIEFzIGEgcmVzdWx0LCBjb21tb24gaWRpb21zIHRoYXQgd29yawpAQCAtMTczLDE5ICsxNzMs
OSBAQCBjbGFzcyBzdHJpbmdfdmlldyB7CiAgIC8vIEltcGxpY2l0IGNvbnN0cnVjdG9yIG9mIGEg
YHN0cmluZ192aWV3YCBmcm9tIG51bC10ZXJtaW5hdGVkIGBzdHJgLiBXaGVuCiAgIC8vIGFjY2Vw
dGluZyBwb3NzaWJseSBudWxsIHN0cmluZ3MsIHVzZSBgYWJzbDo6TnVsbFNhZmVTdHJpbmdWaWV3
KHN0cilgCiAgIC8vIGluc3RlYWQgKHNlZSBiZWxvdykuCi0jaWYgQUJTTF9IQVZFX0JVSUxUSU4o
X19idWlsdGluX3N0cmxlbikgfHwgXAotICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5l
ZChfX2NsYW5nX18pKQotICAvLyBHQ0MgaGFzIF9fYnVpbHRpbl9zdHJsZW4gYWNjb3JkaW5nIHRv
Ci0gIC8vIGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC43LjAvZ2NjL090aGVy
LUJ1aWx0aW5zLmh0bWwsIGJ1dAotICAvLyBBQlNMX0hBVkVfQlVJTFRJTiBkb2Vzbid0IGRldGVj
dCB0aGF0LCBzbyB3ZSB1c2UgdGhlIGV4dHJhIGNoZWNrcyBhYm92ZS4KLSAgLy8gX19idWlsdGlu
X3N0cmxlbiBpcyBjb25zdGV4cHIuCiAgIGNvbnN0ZXhwciBzdHJpbmdfdmlldyhjb25zdCBjaGFy
KiBzdHIpICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKICAgICAgIDogcHRyXyhzdHIpLAot
ICAgICAgICBsZW5ndGhfKENoZWNrTGVuZ3RoSW50ZXJuYWwoc3RyID8gX19idWlsdGluX3N0cmxl
bihzdHIpIDogMCkpIHt9Ci0jZWxzZQotICBjb25zdGV4cHIgc3RyaW5nX3ZpZXcoY29uc3QgY2hh
ciogc3RyKSAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCi0gICAgICA6IHB0cl8oc3RyKSwg
bGVuZ3RoXyhDaGVja0xlbmd0aEludGVybmFsKHN0ciA/IHN0cmxlbihzdHIpIDogMCkpIHt9Ci0j
ZW5kaWYKKyAgICAgICAgbGVuZ3RoXyhzdHIgPyBDaGVja0xlbmd0aEludGVybmFsKFN0cmxlbklu
dGVybmFsKHN0cikpIDogMCkge30KIAogICAvLyBJbXBsaWNpdCBjb25zdHJ1Y3RvciBvZiBhIGBz
dHJpbmdfdmlld2AgZnJvbSBhIGBjb25zdCBjaGFyKmAgYW5kIGxlbmd0aC4KICAgY29uc3RleHBy
IHN0cmluZ192aWV3KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdHlwZSBsZW4pCkBAIC0yNzcsNyAr
MjY3LDcgQEAgY2xhc3Mgc3RyaW5nX3ZpZXcgewogICAvLyBDaGVja3MgaWYgdGhlIGBzdHJpbmdf
dmlld2AgaXMgZW1wdHkgKHJlZmVycyB0byBubyBjaGFyYWN0ZXJzKS4KICAgY29uc3RleHByIGJv
b2wgZW1wdHkoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBsZW5ndGhfID09IDA7IH0KIAotICAv
LyBzdGQ6OnN0cmluZzp2aWV3OjpvcGVyYXRvcltdCisgIC8vIHN0cmluZ192aWV3OjpvcGVyYXRv
cltdCiAgIC8vCiAgIC8vIFJldHVybnMgdGhlIGl0aCBlbGVtZW50IG9mIGFuIGBzdHJpbmdfdmll
d2AgdXNpbmcgdGhlIGFycmF5IG9wZXJhdG9yLgogICAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRv
ciBkb2VzIG5vdCBwZXJmb3JtIGFueSBib3VuZHMgY2hlY2tpbmcuCkBAIC0zNDUsNyArMzM1LDE3
IEBAIGNsYXNzIHN0cmluZ192aWV3IHsKICAgLy8KICAgLy8gQ29waWVzIHRoZSBjb250ZW50cyBv
ZiB0aGUgYHN0cmluZ192aWV3YCBhdCBvZmZzZXQgYHBvc2AgYW5kIGxlbmd0aCBgbmAKICAgLy8g
aW50byBgYnVmYC4KLSAgc2l6ZV90eXBlIGNvcHkoY2hhciogYnVmLCBzaXplX3R5cGUgbiwgc2l6
ZV90eXBlIHBvcyA9IDApIGNvbnN0OworICBzaXplX3R5cGUgY29weShjaGFyKiBidWYsIHNpemVf
dHlwZSBuLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3QgeworICAgIGlmIChBQlNMX1BSRURJQ1Rf
RkFMU0UocG9zID4gbGVuZ3RoXykpIHsKKyAgICAgIGJhc2VfaW50ZXJuYWw6OlRocm93U3RkT3V0
T2ZSYW5nZSgiYWJzbDo6c3RyaW5nX3ZpZXc6OmNvcHkiKTsKKyAgICB9CisgICAgc2l6ZV90eXBl
IHJsZW4gPSAoc3RkOjptaW4pKGxlbmd0aF8gLSBwb3MsIG4pOworICAgIGlmIChybGVuID4gMCkg
eworICAgICAgY29uc3QgY2hhciogc3RhcnQgPSBwdHJfICsgcG9zOworICAgICAgc3RkOjpjb3B5
KHN0YXJ0LCBzdGFydCArIHJsZW4sIGJ1Zik7CisgICAgfQorICAgIHJldHVybiBybGVuOworICB9
CiAKICAgLy8gc3RyaW5nX3ZpZXc6OnN1YnN0cigpCiAgIC8vCkBAIC0zNTUsNyArMzU1LDcgQEAg
Y2xhc3Mgc3RyaW5nX3ZpZXcgewogICBzdHJpbmdfdmlldyBzdWJzdHIoc2l6ZV90eXBlIHBvcywg
c2l6ZV90eXBlIG4gPSBucG9zKSBjb25zdCB7CiAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShw
b3MgPiBsZW5ndGhfKSkKICAgICAgIGJhc2VfaW50ZXJuYWw6OlRocm93U3RkT3V0T2ZSYW5nZSgi
YWJzbDo6c3RyaW5nX3ZpZXc6OnN1YnN0ciIpOwotICAgIG4gPSBzdGQ6Om1pbihuLCBsZW5ndGhf
IC0gcG9zKTsKKyAgICBuID0gKHN0ZDo6bWluKShuLCBsZW5ndGhfIC0gcG9zKTsKICAgICByZXR1
cm4gc3RyaW5nX3ZpZXcocHRyXyArIHBvcywgbik7CiAgIH0KIApAQCAtMzY4LDcgKzM2OCw3IEBA
IGNsYXNzIHN0cmluZ192aWV3IHsKICAgLy8gb24gdGhlIHJlc3BlY3RpdmUgc2l6ZXMgb2YgdGhl
IHR3byBgc3RyaW5nX3ZpZXdgcyB0byBkZXRlcm1pbmUgd2hpY2ggaXMKICAgLy8gc21hbGxlciwg
ZXF1YWwsIG9yIGdyZWF0ZXIuCiAgIGludCBjb21wYXJlKHN0cmluZ192aWV3IHgpIGNvbnN0IG5v
ZXhjZXB0IHsKLSAgICBhdXRvIG1pbl9sZW5ndGggPSBzdGQ6Om1pbihsZW5ndGhfLCB4Lmxlbmd0
aF8pOworICAgIGF1dG8gbWluX2xlbmd0aCA9IChzdGQ6Om1pbikobGVuZ3RoXywgeC5sZW5ndGhf
KTsKICAgICBpZiAobWluX2xlbmd0aCA+IDApIHsKICAgICAgIGludCByID0gbWVtY21wKHB0cl8s
IHgucHRyXywgbWluX2xlbmd0aCk7CiAgICAgICBpZiAociA8IDApIHJldHVybiAtMTsKQEAgLTQ5
MCwxMCArNDkwLDI4IEBAIGNsYXNzIHN0cmluZ192aWV3IHsKIAogIHByaXZhdGU6CiAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90eXBlIGtNYXhTaXplID0KLSAgICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZGlmZmVyZW5jZV90eXBlPjo6bWF4KCk7CisgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxk
aWZmZXJlbmNlX3R5cGU+OjptYXgpKCk7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUg
Q2hlY2tMZW5ndGhJbnRlcm5hbChzaXplX3R5cGUgbGVuKSB7Ci0gICAgcmV0dXJuIGxlbjsKKyAg
ICByZXR1cm4gQUJTTF9BU1NFUlQobGVuIDw9IGtNYXhTaXplKSwgbGVuOworICB9CisKKyAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3R5cGUgU3RybGVuSW50ZXJuYWwoY29uc3QgY2hhciogc3RyKSB7
CisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTkxMCAmJiAhZGVmaW5lZChf
X2NsYW5nX18pCisgICAgLy8gTVNWQyAyMDE3KyBjYW4gZXZhbHVhdGUgdGhpcyBhdCBjb21waWxl
LXRpbWUuCisgICAgY29uc3QgY2hhciogYmVnaW4gPSBzdHI7CisgICAgd2hpbGUgKCpzdHIgIT0g
J1wwJykgKytzdHI7CisgICAgcmV0dXJuIHN0ciAtIGJlZ2luOworI2VsaWYgQUJTTF9IQVZFX0JV
SUxUSU4oX19idWlsdGluX3N0cmxlbikgfHwgXAorICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiAh
ZGVmaW5lZChfX2NsYW5nX18pKQorICAgIC8vIEdDQyBoYXMgX19idWlsdGluX3N0cmxlbiBhY2Nv
cmRpbmcgdG8KKyAgICAvLyBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjLTQuNy4w
L2djYy9PdGhlci1CdWlsdGlucy5odG1sLCBidXQKKyAgICAvLyBBQlNMX0hBVkVfQlVJTFRJTiBk
b2Vzbid0IGRldGVjdCB0aGF0LCBzbyB3ZSB1c2UgdGhlIGV4dHJhIGNoZWNrcyBhYm92ZS4KKyAg
ICAvLyBfX2J1aWx0aW5fc3RybGVuIGlzIGNvbnN0ZXhwci4KKyAgICByZXR1cm4gX19idWlsdGlu
X3N0cmxlbihzdHIpOworI2Vsc2UKKyAgICByZXR1cm4gc3RyID8gc3RybGVuKHN0cikgOiAwOwor
I2VuZGlmCiAgIH0KIAogICBjb25zdCBjaGFyKiBwdHJfOwpAQCAtNTA4LDYgKzUyNiw3IEBAIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oc3RyaW5nX3ZpZXcgeCwgc3RyaW5nX3ZpZXcgeSkgbm9leGNl
cHQgewogICBpZiAobGVuICE9IHkuc2l6ZSgpKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CisK
ICAgcmV0dXJuIHguZGF0YSgpID09IHkuZGF0YSgpIHx8IGxlbiA8PSAwIHx8CiAgICAgICAgICBt
ZW1jbXAoeC5kYXRhKCksIHkuZGF0YSgpLCBsZW4pID09IDA7CiB9CkBAIC01MTcsNyArNTM2LDcg
QEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShzdHJpbmdfdmlldyB4LCBzdHJpbmdfdmlldyB5KSBu
b2V4Y2VwdCB7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yPChzdHJpbmdfdmlldyB4LCBzdHJp
bmdfdmlldyB5KSBub2V4Y2VwdCB7Ci0gIGF1dG8gbWluX3NpemUgPSBzdGQ6Om1pbih4LnNpemUo
KSwgeS5zaXplKCkpOworICBhdXRvIG1pbl9zaXplID0gKHN0ZDo6bWluKSh4LnNpemUoKSwgeS5z
aXplKCkpOwogICBjb25zdCBpbnQgciA9IG1pbl9zaXplID09IDAgPyAwIDogbWVtY21wKHguZGF0
YSgpLCB5LmRhdGEoKSwgbWluX3NpemUpOwogICByZXR1cm4gKHIgPCAwKSB8fCAociA9PSAwICYm
IHguc2l6ZSgpIDwgeS5zaXplKCkpOwogfQpAQCAtNTQ3LDcgKzU2Niw3IEBAIG5hbWVzcGFjZSBh
YnNsIHsKIC8vIFByb3ZpZGVkIGJlY2F1c2Ugc3RkOjpzdHJpbmdfdmlldzo6c3Vic3RyIHRocm93
cyBpZiBgcG9zID4gc2l6ZSgpYAogaW5saW5lIHN0cmluZ192aWV3IENsaXBwZWRTdWJzdHIoc3Ry
aW5nX3ZpZXcgcywgc2l6ZV90IHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBuID0gc3RyaW5nX3ZpZXc6Om5wb3MpIHsKLSAgcG9zID0gc3RkOjptaW4ocG9zLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHMuc2l6ZSgpKSk7CisgIHBvcyA9IChzdGQ6Om1pbikocG9zLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHMuc2l6ZSgpKSk7CiAgIHJldHVybiBzLnN1YnN0cihwb3MsIG4p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3X2JlbmNobWFyay5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXdfYmVuY2htYXJrLmNjCmluZGV4IGZiNDZkYjE4
YjNjLi40NjkwOWNiMDkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlld19i
ZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlld19iZW5jaG1hcmsuY2MK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1MSw3ICsxNTEs
NyBAQCB2b2lkIEJNX2ZpbmRfc3RyaW5nX3ZpZXdfbGVuX29uZShiZW5jaG1hcms6OlN0YXRlJiBz
dGF0ZSkgewogICBzdGQ6OnN0cmluZyBoYXlzdGFjayhzdGF0ZS5yYW5nZSgwKSwgJzAnKTsKICAg
YWJzbDo6c3RyaW5nX3ZpZXcgcyhoYXlzdGFjayk7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsK
LSAgICBzLmZpbmQoIngiKTsgIC8vIG5vdCBwcmVzZW50OyBsZW5ndGggMQorICAgIGJlbmNobWFy
azo6RG9Ob3RPcHRpbWl6ZShzLmZpbmQoIngiKSk7ICAvLyBub3QgcHJlc2VudDsgbGVuZ3RoIDEK
ICAgfQogfQogQkVOQ0hNQVJLKEJNX2ZpbmRfc3RyaW5nX3ZpZXdfbGVuX29uZSktPlJhbmdlKDEs
IDEgPDwgMjApOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgQk1fZmluZF9zdHJpbmdfdmlld19s
ZW5fdHdvKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIHN0ZDo6c3RyaW5nIGhheXN0YWNr
KHN0YXRlLnJhbmdlKDApLCAnMCcpOwogICBhYnNsOjpzdHJpbmdfdmlldyBzKGhheXN0YWNrKTsK
ICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIHMuZmluZCgieHgiKTsgIC8vIG5vdCBwcmVz
ZW50OyBsZW5ndGggMgorICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShzLmZpbmQoInh4Iikp
OyAgLy8gbm90IHByZXNlbnQ7IGxlbmd0aCAyCiAgIH0KIH0KIEJFTkNITUFSSyhCTV9maW5kX3N0
cmluZ192aWV3X2xlbl90d28pLT5SYW5nZSgxLCAxIDw8IDIwKTsKQEAgLTE2OSw3ICsxNjksNyBA
QCB2b2lkIEJNX2ZpbmRfb25lX2NoYXIoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgc3Rk
OjpzdHJpbmcgaGF5c3RhY2soc3RhdGUucmFuZ2UoMCksICcwJyk7CiAgIGFic2w6OnN0cmluZ192
aWV3IHMoaGF5c3RhY2spOwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgcy5maW5kKCd4
Jyk7ICAvLyBub3QgcHJlc2VudAorICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShzLmZpbmQo
J3gnKSk7ICAvLyBub3QgcHJlc2VudAogICB9CiB9CiBCRU5DSE1BUksoQk1fZmluZF9vbmVfY2hh
ciktPlJhbmdlKDEsIDEgPDwgMjApOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgQk1fcmZpbmRf
b25lX2NoYXIoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgc3RkOjpzdHJpbmcgaGF5c3Rh
Y2soc3RhdGUucmFuZ2UoMCksICcwJyk7CiAgIGFic2w6OnN0cmluZ192aWV3IHMoaGF5c3RhY2sp
OwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgcy5yZmluZCgneCcpOyAgLy8gbm90IHBy
ZXNlbnQKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocy5yZmluZCgneCcpKTsgIC8vIG5v
dCBwcmVzZW50CiAgIH0KIH0KIEJFTkNITUFSSyhCTV9yZmluZF9vbmVfY2hhciktPlJhbmdlKDEs
IDEgPDwgMjApOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgQk1fd29yc3RfY2FzZV9maW5kX2Zp
cnN0X29mKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlLCBpbnQgaGF5c3RhY2tfbGVuKSB7CiAKICAg
YWJzbDo6c3RyaW5nX3ZpZXcgcyhoYXlzdGFjayk7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsK
LSAgICBzLmZpbmRfZmlyc3Rfb2YobmVlZGxlKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1p
emUocy5maW5kX2ZpcnN0X29mKG5lZWRsZSkpOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyaW5nX3ZpZXdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXdf
dGVzdC5jYwppbmRleCBhOTRlODIyNTRlZS4uNDE5MzUzZjA4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyaW5nX3ZpZXdfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192
aWV3X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTI4NCw5ICsyODQsMTAgQEAgVEVTVChTdHJpbmdWaWV3VGVzdCwgQ29tcGFyaXNvbk9wZXJhdG9y
c0J5Q2hhcmFjdGVyUG9zaXRpb24pIHsKIH0KICN1bmRlZiBDT01QQVJFCiAKLS8vIFNhZGx5LCBv
dXIgdXNlcnMgb2Z0ZW4gY29uZnVzZSBzdHJpbmc6Om5wb3Mgd2l0aCBhYnNsOjpzdHJpbmdfdmll
dzo6bnBvczsKLS8vIFNvIG11Y2ggc28gdGhhdCB3ZSB0ZXN0IGhlcmUgdGhhdCB0aGV5IGFyZSB0
aGUgc2FtZS4gIFRoZXkgbmVlZCB0bwotLy8gYm90aCBiZSB1bnNpZ25lZCwgYW5kIGJvdGggYmUg
dGhlIG1heGltdW0tdmFsdWVkIGludGVnZXIgb2YgdGhlaXIgdHlwZS4KKy8vIFNhZGx5LCBvdXIg
dXNlcnMgb2Z0ZW4gY29uZnVzZSBzdGQ6OnN0cmluZzo6bnBvcyB3aXRoCisvLyBhYnNsOjpzdHJp
bmdfdmlldzo6bnBvczsgU28gbXVjaCBzbyB0aGF0IHdlIHRlc3QgaGVyZSB0aGF0IHRoZXkgYXJl
IHRoZSBzYW1lLgorLy8gVGhleSBuZWVkIHRvIGJvdGggYmUgdW5zaWduZWQsIGFuZCBib3RoIGJl
IHRoZSBtYXhpbXVtLXZhbHVlZCBpbnRlZ2VyIG9mCisvLyB0aGVpciB0eXBlLgogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc190eXBlIHsKQEAgLTM2OCw2ICszNjksMTEgQEAgVEVT
VChTdHJpbmdWaWV3VGVzdCwgU1RMMSkgewogICBFWFBFQ1RfRVEoYnVmWzFdLCBjWzFdKTsKICAg
RVhQRUNUX0VRKGJ1ZlsyXSwgY1syXSk7CiAgIEVYUEVDVF9FUShidWZbM10sIGFbM10pOworI2lm
ZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TCisgIEVYUEVDVF9USFJPVyhhLmNvcHkoYnVmLCAxLCAy
NyksIHN0ZDo6b3V0X29mX3JhbmdlKTsKKyNlbHNlCisgIEVYUEVDVF9ERUFUSChhLmNvcHkoYnVm
LCAxLCAyNyksICJhYnNsOjpzdHJpbmdfdmlldzo6Y29weSIpOworI2VuZGlmCiB9CiAKIC8vIFNl
cGFyYXRlZCBmcm9tIFNUTDEoKSBiZWNhdXNlIHNvbWUgY29tcGlsZXJzIHByb2R1Y2UgYW4gb3Zl
cmx5CkBAIC02NzgsOSArNjg0LDkgQEAgVEVTVChTdHJpbmdWaWV3VGVzdCwgU1RMMlN1YnN0cikg
ewogICBFWFBFQ1RfRVEoYS5zdWJzdHIoMjMsIGFic2w6OnN0cmluZ192aWV3OjpucG9zKSwgYyk7
CiAgIC8vIHRocm93IGV4Y2VwdGlvbgogI2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TCi0gIEVY
UEVDVF9USFJPVyhhLnN1YnN0cig5OSwgMiksIHN0ZDo6b3V0X29mX3JhbmdlKTsKKyAgRVhQRUNU
X1RIUk9XKCh2b2lkKWEuc3Vic3RyKDk5LCAyKSwgc3RkOjpvdXRfb2ZfcmFuZ2UpOwogI2Vsc2UK
LSAgRVhQRUNUX0RFQVRIKGEuc3Vic3RyKDk5LCAyKSwgImFic2w6OnN0cmluZ192aWV3OjpzdWJz
dHIiKTsKKyAgRVhQRUNUX0RFQVRIKCh2b2lkKWEuc3Vic3RyKDk5LCAyKSwgImFic2w6OnN0cmlu
Z192aWV3OjpzdWJzdHIiKTsKICNlbmRpZgogfQogCkBAIC03NTUsNyArNzYxLDYgQEAgVEVTVChT
dHJpbmdWaWV3VGVzdCwgUmVtb3ZlKSB7CiAgIHN0ZDo6c3RyaW5nIHMxKCIxMjMiKTsKICAgczEg
Kz0gJ1wwJzsKICAgczEgKz0gIjQ1NiI7Ci0gIGFic2w6OnN0cmluZ192aWV3IGIoczEpOwogICBh
YnNsOjpzdHJpbmdfdmlldyBlOwogICBzdGQ6OnN0cmluZyBzMjsKIApAQCAtOTQxLDYgKzk0Niwx
MSBAQCBURVNUKFN0cmluZ1ZpZXdUZXN0LCBDb25zdGV4cHJDb21waWxlcykgewogI2Vycm9yIEdD
Qy9jbGFuZyBzaG91bGQgaGF2ZSBjb25zdGV4cHIgc3RyaW5nX3ZpZXcuCiAjZW5kaWYKIAorLy8g
TVNWQyAyMDE3KyBzaG91bGQgYmUgYWJsZSB0byBjb25zdHJ1Y3QgYSBjb25zdGV4cHIgc3RyaW5n
X3ZpZXcgZnJvbSBhIGNzdHIuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0g
MTkxMAorI2RlZmluZSBBQlNMX0hBVkVfQ09OU1RFWFBSX1NUUklOR19WSUVXX0ZST01fQ1NUUiAx
CisjZW5kaWYKKwogI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX1NUUklOR19WSUVXCiAKICNpZmRl
ZiBBQlNMX0hBVkVfQ09OU1RFWFBSX1NUUklOR19WSUVXX0ZST01fQ1NUUgpAQCAtOTY5LDggKzk3
OSwxNiBAQCBURVNUKFN0cmluZ1ZpZXdUZXN0LCBDb25zdGV4cHJDb21waWxlcykgewogICBjb25z
dGV4cHIgYWJzbDo6c3RyaW5nX3ZpZXc6Oml0ZXJhdG9yIGNvbnN0X2VuZCA9IGNzdHJfbGVuLmVu
ZCgpOwogICBjb25zdGV4cHIgYWJzbDo6c3RyaW5nX3ZpZXc6OnNpemVfdHlwZSBjb25zdF9zaXpl
ID0gY3N0cl9sZW4uc2l6ZSgpOwogICBjb25zdGV4cHIgYWJzbDo6c3RyaW5nX3ZpZXc6OnNpemVf
dHlwZSBjb25zdF9sZW5ndGggPSBjc3RyX2xlbi5sZW5ndGgoKTsKKyAgc3RhdGljX2Fzc2VydChj
b25zdF9iZWdpbiArIGNvbnN0X3NpemUgPT0gY29uc3RfZW5kLAorICAgICAgICAgICAgICAgICJw
b2ludGVyIGFyaXRobWV0aWMgY2hlY2siKTsKKyAgc3RhdGljX2Fzc2VydChjb25zdF9iZWdpbiAr
IGNvbnN0X2xlbmd0aCA9PSBjb25zdF9lbmQsCisgICAgICAgICAgICAgICAgInBvaW50ZXIgYXJp
dGhtZXRpYyBjaGVjayIpOworI2lmbmRlZiBfTVNDX1ZFUgorICAvLyBNU1ZDIGhhcyBidWdzIGRv
aW5nIGNvbnN0ZXhwciBwb2ludGVyIGFyaXRobWV0aWMuCisgIC8vIGh0dHBzOi8vZGV2ZWxvcGVy
Y29tbXVuaXR5LnZpc3VhbHN0dWRpby5jb20vY29udGVudC9wcm9ibGVtLzQ4MjE5Mi9iYWQtcG9p
bnRlci1hcml0aG1ldGljLWluLWNvbnN0ZXB4ci0yMDE5LXJjMS1zdmMxLmh0bWwKICAgRVhQRUNU
X0VRKGNvbnN0X2JlZ2luICsgY29uc3Rfc2l6ZSwgY29uc3RfZW5kKTsKICAgRVhQRUNUX0VRKGNv
bnN0X2JlZ2luICsgY29uc3RfbGVuZ3RoLCBjb25zdF9lbmQpOworI2VuZGlmCiAKICAgY29uc3Rl
eHByIGJvb2wgaXNlbXB0eSA9IHNwLmVtcHR5KCk7CiAgIEVYUEVDVF9UUlVFKGlzZW1wdHkpOwpA
QCAtOTk1LDggKzEwMTMsOCBAQCBURVNUKFN0cmluZ1ZpZXdUZXN0LCBDb25zdGV4cHJDb21waWxl
cykgewogVEVTVChTdHJpbmdWaWV3VGVzdCwgTm9leGNlcHQpIHsKICAgRVhQRUNUX1RSVUUoKHN0
ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPGFic2w6OnN0cmluZ192aWV3LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmPjo6
dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICAoc3RkOjppc19ub3Rocm93X2NvbnN0cnVj
dGlibGU8YWJzbDo6c3RyaW5nX3ZpZXcsIGNvbnN0IHN0ZDo6c3RyaW5nJj46OnZhbHVlKSk7Cisg
IEVYUEVDVF9UUlVFKChzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxhYnNsOjpzdHJpbmdf
dmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJj46OnZhbHVlKSk7CiAgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbm90aHJvd19j
b25zdHJ1Y3RpYmxlPGFic2w6OnN0cmluZ192aWV3Pjo6dmFsdWUpOwogICBjb25zdGV4cHIgYWJz
bDo6c3RyaW5nX3ZpZXcgc3A7CiAgIEVYUEVDVF9UUlVFKG5vZXhjZXB0KHNwLmJlZ2luKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXAu
aAppbmRleCA4ZDBkN2M2YmZjMS4uZTEzNDFlMDhlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyaXAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwLmgKQEAgLTUsNyArNSw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXBf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXBfdGVzdC5jYwppbmRleCA0MGM0YzYwNzEyMS4u
ZTRlMDBjYjY2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXBfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N0cmlwX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTI3LDkgKzI3LDYgQEAKIAogbmFtZXNwYWNlIHsKIAotdXNpbmcg
dGVzdGluZzo6RWxlbWVudHNBcmU7Ci11c2luZyB0ZXN0aW5nOjpJc0VtcHR5OwotCiBURVNUKFN0
cmlwLCBDb25zdW1lUHJlZml4T25lQ2hhcikgewogICBhYnNsOjpzdHJpbmdfdmlldyBpbnB1dCgi
YWJjIik7CiAgIEVYUEVDVF9UUlVFKGFic2w6OkNvbnN1bWVQcmVmaXgoJmlucHV0LCAiYSIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3Vic3RpdHV0ZS5jYwppbmRleCAzYjIwMDU5NDUwOS4uYmMxNzY5NTBlNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1
dGUuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRl
LmgKaW5kZXggNGRlN2I0ZTc1ZmYuLjIzM2U5ZGNmOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL3N1YnN0aXR1dGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuaApAQCAtNSw3
ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzUsMTkgKzM1LDIxIEBACiAv
LyBhbmQgc2luZ2xlIGRpZ2l0IHBvc2l0aW9uYWwgaWRzIHRvIGluZGljYXRlIHdoaWNoIHN1YnN0
aXR1dGlvbiBhcmd1bWVudHMgdG8KIC8vIHVzZSBhdCB0aGF0IGxvY2F0aW9uIHdpdGhpbiB0aGUg
Zm9ybWF0IHN0cmluZy4KIC8vCisvLyBBICckJCcgc2VxdWVuY2UgaW4gdGhlIGZvcm1hdCBzdHJp
bmcgY2F1c2VzIGEgbGl0ZXJhbCAnJCcgY2hhcmFjdGVyIHRvIGJlCisvLyBvdXRwdXQuCisvLwog
Ly8gRXhhbXBsZSAxOgotLy8gICBzdHJpbmcgcyA9IFN1YnN0aXR1dGUoIiQxIHB1cmNoYXNlZCAk
MCAkMi4gVGhhbmtzICQxISIsCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICA1LCAiQm9iIiwg
IkFwcGxlcyIpOwotLy8gICBFWFBFQ1RfRVEoIkJvYiBwdXJjaGFzZWQgNSBBcHBsZXMuIFRoYW5r
cyBCb2IhIiwgcyk7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBTdWJzdGl0dXRlKCIkMSBwdXJjaGFz
ZWQgJDAgJDIgZm9yICQkMTAuIFRoYW5rcyAkMSEiLAorLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1LCAiQm9iIiwgIkFwcGxlcyIpOworLy8gICBFWFBFQ1RfRVEoIkJvYiBwdXJjaGFz
ZWQgNSBBcHBsZXMgZm9yICQxMC4gVGhhbmtzIEJvYiEiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDI6
Ci0vLyAgIHN0cmluZyBzID0gIkhpLiAiOworLy8gICBzdGQ6OnN0cmluZyBzID0gIkhpLiAiOwog
Ly8gICBTdWJzdGl0dXRlQW5kQXBwZW5kKCZzLCAiTXkgbmFtZSBpcyAkMCBhbmQgSSBhbSAkMSB5
ZWFycyBvbGQuIiwgIkJvYiIsIDUpOwogLy8gICBFWFBFQ1RfRVEoIkhpLiBNeSBuYW1lIGlzIEJv
YiBhbmQgSSBhbSA1IHllYXJzIG9sZC4iLCBzKTsKIC8vCi0vLwogLy8gU3VwcG9ydGVkIHR5cGVz
OgotLy8gICAqIGFic2w6OnN0cmluZ192aWV3LCBzdHJpbmcsIGNvbnN0IGNoYXIqIChudWxsIGlz
IGVxdWl2YWxlbnQgdG8gIiIpCisvLyAgICogYWJzbDo6c3RyaW5nX3ZpZXcsIHN0ZDo6c3RyaW5n
LCBjb25zdCBjaGFyKiAobnVsbCBpcyBlcXVpdmFsZW50IHRvICIiKQogLy8gICAqIGludDMyX3Qs
IGludDY0X3QsIHVpbnQzMl90LCB1aW50NjQKIC8vICAgKiBmbG9hdCwgZG91YmxlCiAvLyAgICog
Ym9vbCAoUHJpbnRlZCBhcyAidHJ1ZSIgb3IgImZhbHNlIikKQEAgLTcwLDYgKzcyLDggQEAKIAog
I2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIK
ICNpbmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIgpAQCAtMTUyLDYgKzE1NiwxNyBAQCBjbGFzcyBB
cmcgewogICBBcmcoSGV4IGhleCk7ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKICAgQXJn
KERlYyBkZWMpOyAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCiAKKyAgLy8gdmVjdG9yPGJv
b2w+OjpyZWZlcmVuY2UgYW5kIGNvbnN0X3JlZmVyZW5jZSByZXF1aXJlIHNwZWNpYWwgaGVscCB0
bworICAvLyBjb252ZXJ0IHRvIGBBbHBoYU51bWAgYmVjYXVzZSBpdCByZXF1aXJlcyB0d28gdXNl
ciBkZWZpbmVkIGNvbnZlcnNpb25zLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKKyAgICAgICAg
ICAgIGFic2w6OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgIHN0ZDo6aXNfY2xhc3M8VD46
OnZhbHVlICYmCisgICAgICAgICAgICAgICAgKHN0ZDo6aXNfc2FtZTxULCBzdGQ6OnZlY3Rvcjxi
b29sPjo6cmVmZXJlbmNlPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgc3RkOjppc19zYW1l
PFQsIHN0ZDo6dmVjdG9yPGJvb2w+Ojpjb25zdF9yZWZlcmVuY2U+Ojp2YWx1ZSk+KiA9CisgICAg
ICAgICAgICAgICAgbnVsbHB0cj4KKyAgQXJnKFQgdmFsdWUpICAvLyBOT0xJTlQoZ29vZ2xlLWV4
cGxpY2l0LWNvbnN0cnVjdG9yKQorICAgICAgOiBBcmcoc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUp
KSB7fQorCiAgIC8vIGB2b2lkKmAgdmFsdWVzLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYGNoYXIq
YCwgYXJlIHByaW50ZWQgYXMKICAgLy8gIjB4PGhleCB2YWx1ZT4iLiBIb3dldmVyLCBpbiB0aGUg
Y2FzZSBvZiBgbnVsbHB0cmAsICJOVUxMIiBpcyBwcmludGVkLgogICBBcmcoY29uc3Qgdm9pZCog
dmFsdWUpOyAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCkBAIC00NTYsNyArNDcxLDcgQEAg
dm9pZCBTdWJzdGl0dXRlQW5kQXBwZW5kKAogLy8gRXhhbXBsZToKIC8vICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gQXJncz4KIC8vICB2b2lkIFZhck1zZyhhYnNsOjpzdHJpbmdfdmlldyBmb3JtYXQs
IGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKLS8vICAgIHN0cmluZyBzID0gYWJzbDo6U3Vic3RpdHV0
ZShmb3JtYXQsIGFyZ3MuLi4pOworLy8gICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN1YnN0aXR1
dGUoZm9ybWF0LCBhcmdzLi4uKTsKIAogQUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIHN0ZDo6
c3RyaW5nIFN1YnN0aXR1dGUoYWJzbDo6c3RyaW5nX3ZpZXcgZm9ybWF0KSB7CiAgIHN0ZDo6c3Ry
aW5nIHJlc3VsdDsKQEAgLTU3NCw3MCArNTg5LDcwIEBAIHN0ZDo6c3RyaW5nIFN1YnN0aXR1dGUo
Y29uc3QgY2hhciogZm9ybWF0LCBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEwKQog
ICAgICAgICAgICAgICAgICAgICAgImNvbnRhaW5zIG9uZSBvZiAkMS0kOSIpOwogCiBzdGQ6OnN0
cmluZyBTdWJzdGl0dXRlKGNvbnN0IGNoYXIqIGZvcm1hdCwgY29uc3Qgc3Vic3RpdHV0ZV9pbnRl
cm5hbDo6QXJnJiBhMCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJu
YWw6OkFyZyYgYTEpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50
ZXJuYWw6OkFyZyYgYTEpCiAgICAgQUJTTF9CQURfQ0FMTF9JRihzdWJzdGl0dXRlX2ludGVybmFs
OjpQbGFjZWhvbGRlckJpdG1hc2soZm9ybWF0KSAhPSAzLAogICAgICAgICAgICAgICAgICAgICAg
IlRoZXJlIHdlcmUgMiBzdWJzdGl0dXRpb24gYXJndW1lbnRzIGdpdmVuLCBidXQgIgogICAgICAg
ICAgICAgICAgICAgICAgInRoaXMgZm9ybWF0IHN0ZDo6c3RyaW5nIGlzIGVpdGhlciBtaXNzaW5n
IGl0cyAkMC8kMSwgb3IgIgogICAgICAgICAgICAgICAgICAgICAgImNvbnRhaW5zIG9uZSBvZiAk
Mi0kOSIpOwogCiBzdGQ6OnN0cmluZyBTdWJzdGl0dXRlKGNvbnN0IGNoYXIqIGZvcm1hdCwgY29u
c3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0
IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEsCi0gICAgICAgICAgICAgICAgICBjb25zdCBz
dWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEyKQorICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGExLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEyKQogICAgIEFCU0xfQkFEX0NBTExfSUYo
c3Vic3RpdHV0ZV9pbnRlcm5hbDo6UGxhY2Vob2xkZXJCaXRtYXNrKGZvcm1hdCkgIT0gNywKICAg
ICAgICAgICAgICAgICAgICAgICJUaGVyZSB3ZXJlIDMgc3Vic3RpdHV0aW9uIGFyZ3VtZW50cyBn
aXZlbiwgYnV0ICIKICAgICAgICAgICAgICAgICAgICAgICJ0aGlzIGZvcm1hdCBzdGQ6OnN0cmlu
ZyBpcyBlaXRoZXIgbWlzc2luZyBpdHMgJDAvJDEvJDIsIG9yICIKICAgICAgICAgICAgICAgICAg
ICAgICJjb250YWlucyBvbmUgb2YgJDMtJDkiKTsKIAogc3RkOjpzdHJpbmcgU3Vic3RpdHV0ZShj
b25zdCBjaGFyKiBmb3JtYXQsIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTAsCi0g
ICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGExLAotICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMiwKLSAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTMpCisgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTIsCisg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTMp
CiAgICAgQUJTTF9CQURfQ0FMTF9JRihzdWJzdGl0dXRlX2ludGVybmFsOjpQbGFjZWhvbGRlckJp
dG1hc2soZm9ybWF0KSAhPSAxNSwKICAgICAgICAgICAgICAgICAgICAgICJUaGVyZSB3ZXJlIDQg
c3Vic3RpdHV0aW9uIGFyZ3VtZW50cyBnaXZlbiwgYnV0ICIKICAgICAgICAgICAgICAgICAgICAg
ICJ0aGlzIGZvcm1hdCBzdGQ6OnN0cmluZyBpcyBlaXRoZXIgbWlzc2luZyBpdHMgJDAtJDMsIG9y
ICIKICAgICAgICAgICAgICAgICAgICAgICJjb250YWlucyBvbmUgb2YgJDQtJDkiKTsKIAogc3Rk
OjpzdHJpbmcgU3Vic3RpdHV0ZShjb25zdCBjaGFyKiBmb3JtYXQsIGNvbnN0IHN1YnN0aXR1dGVf
aW50ZXJuYWw6OkFyZyYgYTAsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2lu
dGVybmFsOjpBcmcmIGExLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRl
cm5hbDo6QXJnJiBhMiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJu
YWw6OkFyZyYgYTMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFs
OjpBcmcmIGE0KQorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVy
bmFsOjpBcmcmIGExLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2lu
dGVybmFsOjpBcmcmIGEyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRl
X2ludGVybmFsOjpBcmcmIGEzLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0
dXRlX2ludGVybmFsOjpBcmcmIGE0KQogICAgIEFCU0xfQkFEX0NBTExfSUYoc3Vic3RpdHV0ZV9p
bnRlcm5hbDo6UGxhY2Vob2xkZXJCaXRtYXNrKGZvcm1hdCkgIT0gMzEsCiAgICAgICAgICAgICAg
ICAgICAgICAiVGhlcmUgd2VyZSA1IHN1YnN0aXR1dGlvbiBhcmd1bWVudHMgZ2l2ZW4sIGJ1dCAi
CiAgICAgICAgICAgICAgICAgICAgICAidGhpcyBmb3JtYXQgc3RkOjpzdHJpbmcgaXMgZWl0aGVy
IG1pc3NpbmcgaXRzICQwLSQ0LCBvciAiCiAgICAgICAgICAgICAgICAgICAgICAiY29udGFpbnMg
b25lIG9mICQ1LSQ5Iik7CiAKIHN0ZDo6c3RyaW5nIFN1YnN0aXR1dGUoY29uc3QgY2hhciogZm9y
bWF0LCBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEwLAotICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMSwKLSAgICAgICAgICAgICAgICAg
IGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTIsCi0gICAgICAgICAgICAgICAgICBj
b25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEzLAotICAgICAgICAgICAgICAgICAgY29u
c3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0
IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTUpCisgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEsCisgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTIsCisgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTMsCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTQsCisgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTUpCiAgICAgQUJTTF9C
QURfQ0FMTF9JRihzdWJzdGl0dXRlX2ludGVybmFsOjpQbGFjZWhvbGRlckJpdG1hc2soZm9ybWF0
KSAhPSA2MywKICAgICAgICAgICAgICAgICAgICAgICJUaGVyZSB3ZXJlIDYgc3Vic3RpdHV0aW9u
IGFyZ3VtZW50cyBnaXZlbiwgYnV0ICIKICAgICAgICAgICAgICAgICAgICAgICJ0aGlzIGZvcm1h
dCBzdGQ6OnN0cmluZyBpcyBlaXRoZXIgbWlzc2luZyBpdHMgJDAtJDUsIG9yICIKICAgICAgICAg
ICAgICAgICAgICAgICJjb250YWlucyBvbmUgb2YgJDYtJDkiKTsKIAogc3RkOjpzdHJpbmcgU3Vi
c3RpdHV0ZShjb25zdCBjaGFyKiBmb3JtYXQsIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFy
ZyYgYTAsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcm
IGExLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBh
MiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTMs
Ci0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGE0LAot
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNSwKLSAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTYpCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEsCisg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTIs
CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYg
YTMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFy
ZyYgYTQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6
OkFyZyYgYTUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJu
YWw6OkFyZyYgYTYpCiAgICAgQUJTTF9CQURfQ0FMTF9JRihzdWJzdGl0dXRlX2ludGVybmFsOjpQ
bGFjZWhvbGRlckJpdG1hc2soZm9ybWF0KSAhPSAxMjcsCiAgICAgICAgICAgICAgICAgICAgICAi
VGhlcmUgd2VyZSA3IHN1YnN0aXR1dGlvbiBhcmd1bWVudHMgZ2l2ZW4sIGJ1dCAiCiAgICAgICAg
ICAgICAgICAgICAgICAidGhpcyBmb3JtYXQgc3RkOjpzdHJpbmcgaXMgZWl0aGVyIG1pc3Npbmcg
aXRzICQwLSQ2LCBvciAiCiAgICAgICAgICAgICAgICAgICAgICAiY29udGFpbnMgb25lIG9mICQ3
LSQ5Iik7CiAKIHN0ZDo6c3RyaW5nIFN1YnN0aXR1dGUoY29uc3QgY2hhciogZm9ybWF0LCBjb25z
dCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEwLAotICAgICAgICAgICAgICAgICAgY29uc3Qg
c3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1
YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTIsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJz
dGl0dXRlX2ludGVybmFsOjpBcmcmIGEzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3Rp
dHV0ZV9pbnRlcm5hbDo6QXJnJiBhNCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1
dGVfaW50ZXJuYWw6OkFyZyYgYTUsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRl
X2ludGVybmFsOjpBcmcmIGE2LAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9p
bnRlcm5hbDo6QXJnJiBhNykKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0
ZV9pbnRlcm5hbDo6QXJnJiBhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3Rp
dHV0ZV9pbnRlcm5hbDo6QXJnJiBhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vi
c3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNSwKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNykKICAgICBBQlNMX0JBRF9DQUxM
X0lGKHN1YnN0aXR1dGVfaW50ZXJuYWw6OlBsYWNlaG9sZGVyQml0bWFzayhmb3JtYXQpICE9IDI1
NSwKICAgICAgICAgICAgICAgICAgICAgICJUaGVyZSB3ZXJlIDggc3Vic3RpdHV0aW9uIGFyZ3Vt
ZW50cyBnaXZlbiwgYnV0ICIKICAgICAgICAgICAgICAgICAgICAgICJ0aGlzIGZvcm1hdCBzdGQ6
OnN0cmluZyBpcyBlaXRoZXIgbWlzc2luZyBpdHMgJDAtJDcsIG9yICIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRl
X3Rlc3QuY2MKaW5kZXggMTQ0ZGYwMWVjMTguLmUyN2FiYjE3NzI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N1YnN0aXR1dGVfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1
dGVfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
MTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmgiCiAKICNp
bmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKQEAgLTE3Miw2ICsxNzMs
MTcgQEAgVEVTVChTdWJzdGl0dXRlVGVzdCwgU3Vic3RpdHV0ZUFuZEFwcGVuZCkgewogICBFWFBF
Q1RfRVEoImEgYiBjIGQgZSBmIGcgaCBpIGoiLCBzdHIpOwogfQogCitURVNUKFN1YnN0aXR1dGVU
ZXN0LCBWZWN0b3JCb29sUmVmKSB7CisgIHN0ZDo6dmVjdG9yPGJvb2w+IHYgPSB7dHJ1ZSwgZmFs
c2V9OworICBjb25zdCBhdXRvJiBjdiA9IHY7CisgIEVYUEVDVF9FUSgidHJ1ZSBmYWxzZSB0cnVl
IGZhbHNlIiwKKyAgICAgICAgICAgIGFic2w6OlN1YnN0aXR1dGUoIiQwICQxICQyICQzIiwgdlsw
XSwgdlsxXSwgY3ZbMF0sIGN2WzFdKSk7CisKKyAgc3RkOjpzdHJpbmcgc3RyID0gIkxvZ2ljIGJl
IGxpa2U6ICI7CisgIGFic2w6OlN1YnN0aXR1dGVBbmRBcHBlbmQoJnN0ciwgIiQwICQxICQyICQz
IiwgdlswXSwgdlsxXSwgY3ZbMF0sIGN2WzFdKTsKKyAgRVhQRUNUX0VRKCJMb2dpYyBiZSBsaWtl
OiB0cnVlIGZhbHNlIHRydWUgZmFsc2UiLCBzdHIpOworfQorCiAjaWZkZWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKIAogVEVTVChTdWJzdGl0dXRlRGVhdGhUZXN0LCBTdWJzdGl0dXRlRGVhdGgpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5iYXplbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9CVUlMRC5iYXplbAppbmRleCBmNTJlOWQ0MTY0NC4uZmNhOGNiNjk3YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5iYXplbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vQlVJTEQuYmF6ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
ICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCkBAIC0xNSw4ICsxNSw5IEBACiAjCiAKIGxvYWQoCi0gICAgIi8vYWJzbDpjb3B0cy5i
emwiLAorICAgICIvL2Fic2w6Y29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bCIsCiAgICAgIkFCU0xf
REVGQVVMVF9DT1BUUyIsCisgICAgIkFCU0xfREVGQVVMVF9MSU5LT1BUUyIsCiAgICAgIkFCU0xf
VEVTVF9DT1BUUyIsCiApCiAKQEAgLTM0LDYgKzM1LDcgQEAgY2NfbGlicmFyeSgKICAgICAgICAg
ImludGVybmFsL2dyYXBoY3ljbGVzLmgiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFV
TFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlz
aWJpbGl0eSA9IFsKICAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAogICAgIF0sCkBA
IC02OSw5ICs3MSwxNCBAQCBjY19saWJyYXJ5KAogICAgICAgICAibm90aWZpY2F0aW9uLmgiLAog
ICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBz
ZWxlY3QoeworICAgICAgICAiLy9hYnNsOndpbmRvd3MiOiBbXSwKKyAgICAgICAgIi8vY29uZGl0
aW9uczpkZWZhdWx0IjogWyItcHRocmVhZCJdLAorICAgIH0pICsgQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Z3JhcGhjeWNsZXNfaW50ZXJuYWwiLAogICAg
ICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6YXRvbWljX2hvb2siLAog
ICAgICAgICAiLy9hYnNsL2Jhc2U6YmFzZV9pbnRlcm5hbCIsCiAgICAgICAgICIvL2Fic2wvYmFz
ZTpjb25maWciLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKQEAgLTg4LDkg
Kzk1LDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJiYXJy
aWVyX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKLSAgICB0YWdzID0g
WwotICAgICAgICAibm9fdGVzdF93YXNtIiwKLSAgICBdLAorICAgIGxpbmtvcHRzID0gQUJTTF9E
RUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3luY2hyb25pemF0aW9u
IiwKICAgICAgICAgIi8vYWJzbC90aW1lIiwKQEAgLTEwMyw5ICsxMDgsNyBAQCBjY190ZXN0KAog
ICAgIHNpemUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbImJsb2NraW5nX2NvdW50ZXJfdGVzdC5j
YyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAotICAgIHRhZ3MgPSBbCi0gICAgICAg
ICJub190ZXN0X3dhc20iLAotICAgIF0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpzeW5jaHJvbml6YXRpb24iLAogICAgICAg
ICAiLy9hYnNsL3RpbWUiLApAQCAtMTE4LDYgKzEyMSw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9
ICJtZWRpdW0iLAogICAgIHNyY3MgPSBbImludGVybmFsL2dyYXBoY3ljbGVzX3Rlc3QuY2MiXSwK
ICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmdyYXBoY3ljbGVzX2ludGVybmFs
IiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAgLTEzMCw2ICsxMzQsNyBAQCBjY190ZXN0KAog
ICAgIG5hbWUgPSAiZ3JhcGhjeWNsZXNfYmVuY2htYXJrIiwKICAgICBzcmNzID0gWyJpbnRlcm5h
bC9ncmFwaGN5Y2xlc19iZW5jaG1hcmsuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0gWwog
ICAgICAgICAiYmVuY2htYXJrIiwKICAgICBdLApAQCAtMTQ0LDYgKzE0OSw3IEBAIGNjX2xpYnJh
cnkoCiAgICAgbmFtZSA9ICJ0aHJlYWRfcG9vbCIsCiAgICAgdGVzdG9ubHkgPSAxLAogICAgIGhk
cnMgPSBbImludGVybmFsL3RocmVhZF9wb29sLmgiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWwogICAgICAgICAiLy9hYnNsOl9fc3Vi
cGFja2FnZXNfXyIsCiAgICAgXSwKQEAgLTE1OCw2ICsxNjQsNyBAQCBjY190ZXN0KAogICAgIHNp
emUgPSAibGFyZ2UiLAogICAgIHNyY3MgPSBbIm11dGV4X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
ICAgICBzaGFyZF9jb3VudCA9IDI1LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3luY2hyb25p
emF0aW9uIiwKQEAgLTE3MCwxOCArMTc3LDMzIEBAIGNjX3Rlc3QoCiAgICAgXSwKICkKIAotY2Nf
dGVzdCgKLSAgICBuYW1lID0gIm11dGV4X2JlbmNobWFyayIsCitjY19saWJyYXJ5KAorICAgIG5h
bWUgPSAibXV0ZXhfYmVuY2htYXJrX2NvbW1vbiIsCisgICAgdGVzdG9ubHkgPSAxLAogICAgIHNy
Y3MgPSBbIm11dGV4X2JlbmNobWFyay5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRT
LAotICAgIHRhZ3MgPSBbImJlbmNobWFyayJdLAotICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJp
bGl0eTpwcml2YXRlIl0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisg
ICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb246X19wa2df
XyIsCisgICAgXSwKICAgICBkZXBzID0gWwogICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIsCiAg
ICAgICAgICI6dGhyZWFkX3Bvb2wiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLAogICAgICAgICAi
QGNvbV9naXRodWJfZ29vZ2xlX2JlbmNobWFyay8vOmJlbmNobWFya19tYWluIiwKICAgICBdLAor
ICAgIGFsd2F5c2xpbmsgPSAxLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJtdXRleF9i
ZW5jaG1hcmsiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB2aXNpYmls
aXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6
bXV0ZXhfYmVuY2htYXJrX2NvbW1vbiIsCisgICAgXSwKICkKIAogY2NfdGVzdCgKQEAgLTE4OSw2
ICsyMTEsNyBAQCBjY190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbIm5v
dGlmaWNhdGlvbl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAg
IjpzeW5jaHJvbml6YXRpb24iLAogICAgICAgICAiLy9hYnNsL3RpbWUiLApAQCAtMjAxLDYgKzIy
NCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgdGVzdG9ubHkgPSAxLAogICAgIHNyY3MgPSBbImludGVy
bmFsL3Blcl90aHJlYWRfc2VtX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwog
ICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCkBAIC0y
MTUsNyArMjM5LDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gInBlcl90aHJlYWRfc2VtX3Rlc3Qi
LAogICAgIHNpemUgPSAibWVkaXVtIiwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKLSAg
ICB0YWdzID0gWyJub190ZXN0X3dhc20iXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnBlcl90aHJlYWRfc2VtX3Rlc3RfY29t
bW9uIiwKICAgICAgICAgIjpzeW5jaHJvbml6YXRpb24iLApAQCAtMjMyLDEwICsyNTYsNyBAQCBj
Y190ZXN0KAogICAgICAgICAibGlmZXRpbWVfdGVzdC5jYyIsCiAgICAgXSwKICAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUywKLSAgICBsaW5rb3B0cyA9IHNlbGVjdCh7Ci0gICAgICAgICIvL2Fi
c2w6d2luZG93cyI6IFtdLAotICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi1wdGhy
ZWFkIl0sCi0gICAgfSksCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgdGFncyA9IFsibm9fdGVzdF9pb3NfeDg2XzY0Il0sCiAgICAgZGVwcyA9IFsKICAgICAgICAg
IjpzeW5jaHJvbml6YXRpb24iLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JV
SUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmduCmluZGV4IGU2Zjc2M2EwNjBi
Li5jZDYwMTgxZDQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmdu
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5nbgpAQCAtNCw4ICs0LDE1IEBACiAK
IGltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIikKIAorIyBVc2FnZSBvZiBBYnNl
aWwgaW4gQ2hyb21pdW0gaXMgZ3VhcmRlZCBieSBhbiBleHBsaWNpdCBvcHQtaW4gbGlzdCwgYmVm
b3JlCisjIGFkZGluZyBwcm9qZWN0cyB0byB0aGlzIGxpc3QgcGxlYXNlIHJlYWNoIG91dCB0byBj
eHhAY2hyb21pdW0ub3JnIGFuZCBDQzoKKyMgLSBodHRwczovL2NzLmNocm9taXVtLm9yZy9jaHJv
bWl1bS9zcmMvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9PV05FUlMKKyMKKyMgTW9yZSBpbmZvcm1h
dGlvbiBjYW4gYmUgZm91bmQgYXQ6CisjIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50
L2QvMURnUzEtQTNyemJvVExqcGY0bTFzcWtKZ1dqbllfUnUyZG9razFYMXZCRFUKIGlmIChidWls
ZF93aXRoX2Nocm9taXVtKSB7CiAgIHZpc2liaWxpdHkgPSBbCisgICAgIi8vbGliYXNzaXN0YW50
LyoiLAogICAgICIvL3RoaXJkX3BhcnR5L3dlYnJ0Yy8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Q6Z3Rlc3QiLApAQCAt
NjcsNiArNzQsNyBAQCBzb3VyY2Vfc2V0KCJzeW5jaHJvbml6YXRpb24iKSB7CiAgIGRlcHMgPSBb
CiAgICAgIjpncmFwaGN5Y2xlc19pbnRlcm5hbCIsCiAgICAgIi4uL2Jhc2UiLAorICAgICIuLi9i
YXNlOmF0b21pY19ob29rIiwKICAgICAiLi4vYmFzZTpiYXNlX2ludGVybmFsIiwKICAgICAiLi4v
YmFzZTpjb25maWciLAogICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zeW5jaHJvbml6YXRpb24vQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vQ01ha2VMaXN0cy50eHQKaW5kZXggZGUwZDdiN2Q0NTAuLjRiNzA4ODIzMTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3lu
Y2hyb25pemF0aW9uL0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAj
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTQsMTQyICsxNCwxODUgQEAKICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCiAjCiAKLWxpc3QoQVBQRU5EIFNZTkNIUk9OSVpBVElPTl9QVUJMSUNfSEVBREVSUwotICAi
YmFycmllci5oIgotICAiYmxvY2tpbmdfY291bnRlci5oIgotICAibXV0ZXguaCIKLSAgIm5vdGlm
aWNhdGlvbi5oIgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZ3JhcGhjeWNsZXNfaW50
ZXJuYWwKKyAgSERSUworICAgICJpbnRlcm5hbC9ncmFwaGN5Y2xlcy5oIgorICBTUkNTCisgICAg
ImludGVybmFsL2dyYXBoY3ljbGVzLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmJhc2VfaW50ZXJuYWwKKyAg
ICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjptYWxsb2NfaW50ZXJuYWwKICkKIAotCi1s
aXN0KEFQUEVORCBTWU5DSFJPTklaQVRJT05fSU5URVJOQUxfSEVBREVSUwotICAiaW50ZXJuYWwv
Y3JlYXRlX3RocmVhZF9pZGVudGl0eS5oIgotICAiaW50ZXJuYWwvZ3JhcGhjeWNsZXMuaCIKLSAg
ImludGVybmFsL2tlcm5lbF90aW1lb3V0LmgiCi0gICJpbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5o
IgotICAiaW50ZXJuYWwvdGhyZWFkX3Bvb2wuaCIKLSAgImludGVybmFsL3dhaXRlci5oIgotKQot
Ci0KLQotIyBzeW5jaHJvbml6YXRpb24gbGlicmFyeQotbGlzdChBUFBFTkQgU1lOQ0hST05JWkFU
SU9OX1NSQwotICAiYmFycmllci5jYyIKLSAgImJsb2NraW5nX2NvdW50ZXIuY2MiCi0gICJpbnRl
cm5hbC9jcmVhdGVfdGhyZWFkX2lkZW50aXR5LmNjIgotICAiaW50ZXJuYWwvcGVyX3RocmVhZF9z
ZW0uY2MiCi0gICJpbnRlcm5hbC93YWl0ZXIuY2MiCi0gICJpbnRlcm5hbC9ncmFwaGN5Y2xlcy5j
YyIKLSAgIm5vdGlmaWNhdGlvbi5jYyIKLSAgIm11dGV4LmNjIgotKQotCi1zZXQoU1lOQ0hST05J
WkFUSU9OX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSBhYnNsOjpzdGFja3RyYWNlIGFic2w6
OnN5bWJvbGl6ZSBhYnNsOjp0aW1lKQotCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFi
c2xfc3luY2hyb25pemF0aW9uCi0gIFNPVVJDRVMKLSAgICAke1NZTkNIUk9OSVpBVElPTl9TUkN9
Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1NZTkNIUk9OSVpBVElPTl9QVUJMSUNfTElCUkFS
SUVTfQotICBFWFBPUlRfTkFNRQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCiAgICAgc3luY2hy
b25pemF0aW9uCisgIEhEUlMKKyAgICAiYmFycmllci5oIgorICAgICJibG9ja2luZ19jb3VudGVy
LmgiCisgICAgImludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRlbnRpdHkuaCIKKyAgICAiaW50ZXJu
YWwva2VybmVsX3RpbWVvdXQuaCIKKyAgICAiaW50ZXJuYWwvbXV0ZXhfbm9ucHJvZC5pbmMiCisg
ICAgImludGVybmFsL3Blcl90aHJlYWRfc2VtLmgiCisgICAgImludGVybmFsL3dhaXRlci5oIgor
ICAgICJtdXRleC5oIgorICAgICJub3RpZmljYXRpb24uaCIKKyAgU1JDUworICAgICJiYXJyaWVy
LmNjIgorICAgICJibG9ja2luZ19jb3VudGVyLmNjIgorICAgICJpbnRlcm5hbC9jcmVhdGVfdGhy
ZWFkX2lkZW50aXR5LmNjIgorICAgICJpbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5jYyIKKyAgICAi
aW50ZXJuYWwvd2FpdGVyLmNjIgorICAgICJub3RpZmljYXRpb24uY2MiCisgICAgIm11dGV4LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6
Z3JhcGhjeWNsZXNfaW50ZXJuYWwKKyAgICBhYnNsOjphdG9taWNfaG9vaworICAgIGFic2w6OmJh
c2UKKyAgICBhYnNsOjpiYXNlX2ludGVybmFsCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6
Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZHluYW1pY19hbm5vdGF0aW9ucworICAgIGFic2w6Om1h
bGxvY19pbnRlcm5hbAorICAgIGFic2w6OnN0YWNrdHJhY2UKKyAgICBhYnNsOjpzeW1ib2xpemUK
KyAgICBhYnNsOjp0aW1lCisgICAgVGhyZWFkczo6VGhyZWFkcworICBQVUJMSUMKICkKIAotCi0j
Ci0jIyBURVNUUwotIwotCi0KLSMgdGVzdCBiYXJyaWVyX3Rlc3QKLXNldChCQVJSSUVSX1RFU1Rf
U1JDICJiYXJyaWVyX3Rlc3QuY2MiKQotc2V0KEJBUlJJRVJfVEVTVF9QVUJMSUNfTElCUkFSSUVT
IGFic2w6OnN5bmNocm9uaXphdGlvbikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2Nf
dGVzdCgKKyAgTkFNRQogICAgIGJhcnJpZXJfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtCQVJSSUVS
X1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtCQVJSSUVSX1RFU1RfUFVCTElD
X0xJQlJBUklFU30KKyAgU1JDUworICAgICJiYXJyaWVyX3Rlc3QuY2MiCisgIENPUFRTCisgICAg
JHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKyAg
ICBhYnNsOjp0aW1lCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBibG9ja2luZ19jb3Vu
dGVyX3Rlc3QKLXNldChCTE9DS0lOR19DT1VOVEVSX1RFU1RfU1JDICJibG9ja2luZ19jb3VudGVy
X3Rlc3QuY2MiKQotc2V0KEJMT0NLSU5HX0NPVU5URVJfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFi
c2w6OnN5bmNocm9uaXphdGlvbikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVz
dCgKKyAgTkFNRQogICAgIGJsb2NraW5nX2NvdW50ZXJfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtC
TE9DS0lOR19DT1VOVEVSX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtCTE9D
S0lOR19DT1VOVEVSX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJibG9ja2lu
Z19jb3VudGVyX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKyAgICBhYnNsOjp0aW1lCisgICAgZ21vY2tf
bWFpbgogKQogCi0KLSMgdGVzdCBncmFwaGN5Y2xlc190ZXN0Ci1zZXQoR1JBUEhDWUNMRVNfVEVT
VF9TUkMgImludGVybmFsL2dyYXBoY3ljbGVzX3Rlc3QuY2MiKQotc2V0KEdSQVBIQ1lDTEVTX1RF
U1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzeW5jaHJvbml6YXRpb24pCi0KLWFic2xfdGVzdCgK
LSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBncmFwaGN5Y2xlc190ZXN0Ci0g
IFNPVVJDRVMKLSAgICAke0dSQVBIQ1lDTEVTX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVT
Ci0gICAgJHtHUkFQSENZQ0xFU19URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAi
aW50ZXJuYWwvZ3JhcGhjeWNsZXNfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6OmdyYXBoY3ljbGVzX2ludGVybmFsCisgICAgYWJzbDo6
YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGdtb2NrX21haW4KICkKIAorYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgdGhyZWFkX3Bvb2wKKyAgSERSUworICAgICJpbnRlcm5h
bC90aHJlYWRfcG9vbC5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisg
IFRFU1RPTkxZCispCiAKLSMgdGVzdCBtdXRleF90ZXN0Ci1zZXQoTVVURVhfVEVTVF9TUkMgIm11
dGV4X3Rlc3QuY2MiKQotc2V0KE1VVEVYX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzeW5j
aHJvbml6YXRpb24pCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5B
TUUKICAgICBtdXRleF90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke01VVEVYX1RFU1RfU1JDfQotICBQ
VUJMSUNfTElCUkFSSUVTCi0gICAgJHtNVVRFWF9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNS
Q1MKKyAgICAibXV0ZXhfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorICAgIGFic2w6OnRocmVhZF9wb29s
CisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6Om1lbW9y
eQorICAgIGFic2w6OnRpbWUKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IG5vdGlmaWNh
dGlvbl90ZXN0Ci1zZXQoTk9USUZJQ0FUSU9OX1RFU1RfU1JDICJub3RpZmljYXRpb25fdGVzdC5j
YyIpCi1zZXQoTk9USUZJQ0FUSU9OX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzeW5jaHJv
bml6YXRpb24pCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
ICAgICBub3RpZmljYXRpb25fdGVzdAotICBTT1VSQ0VTCi0gICAgJHtOT1RJRklDQVRJT05fVEVT
VF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke05PVElGSUNBVElPTl9URVNUX1BVQkxJ
Q19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAibm90aWZpY2F0aW9uX3Rlc3QuY2MiCisgIENPUFRT
CisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRp
b24KKyAgICBhYnNsOjp0aW1lCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBwZXJfdGhy
ZWFkX3NlbV90ZXN0X2NvbW1vbgotc2V0KFBFUl9USFJFQURfU0VNX1RFU1RfQ09NTU9OX1NSQyAi
aW50ZXJuYWwvcGVyX3RocmVhZF9zZW1fdGVzdC5jYyIpCi1zZXQoUEVSX1RIUkVBRF9TRU1fVEVT
VF9DT01NT05fUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzeW5jaHJvbml6YXRpb24gYWJzbDo6c3Ry
aW5ncykKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQog
ICAgIHBlcl90aHJlYWRfc2VtX3Rlc3RfY29tbW9uCi0gIFNPVVJDRVMKLSAgICAke1BFUl9USFJF
QURfU0VNX1RFU1RfQ09NTU9OX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7UEVSX1RI
UkVBRF9TRU1fVEVTVF9DT01NT05fUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJpbnRl
cm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgYWJzbDo6YmFzZQor
ICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjp0aW1lCisgICAgZ21vY2sKKyAgVEVTVE9OTFkK
ICkKIAorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcGVyX3RocmVhZF9zZW1fdGVzdAorICBT
UkNTCisgICAgImludGVybmFsL3Blcl90aHJlYWRfc2VtX3Rlc3QuY2MiCisgIENPUFRTCisgICAg
JHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpwZXJfdGhyZWFkX3NlbV90ZXN0
X2NvbW1vbgorICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorICAgIGFic2w6OmJhc2UKKyAgICBh
YnNsOjpzdHJpbmdzCisgICAgYWJzbDo6dGltZQorICAgIGdtb2NrX21haW4KKykKIAotCi0KLQot
Ci0KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGxpZmV0aW1lX3Rlc3QKKyAgU1JDUworICAg
ICJsaWZldGltZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6
OmNvcmVfaGVhZGVycworKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2JhcnJp
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmFycmllci5jYwppbmRleCBhMWIzYWQ1YzIx
Ny4uYzJjNTM5YWM0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9iYXJyaWVy
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9iYXJyaWVyLmNjCkBAIC00LDcgKzQsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vYmFycmllci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2JhcnJpZXIuaAppbmRleCBm
ODM0ZmVlYzExZC4uY2I1ZDgyMWEyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlv
bi9iYXJyaWVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2JhcnJpZXIuaApAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNjksOCArNjksOCBAQCBjbGFz
cyBCYXJyaWVyIHsKIAogIHByaXZhdGU6CiAgIE11dGV4IGxvY2tfOwotICBpbnQgbnVtX3RvX2Js
b2NrXyBHVUFSREVEX0JZKGxvY2tfKTsKLSAgaW50IG51bV90b19leGl0XyBHVUFSREVEX0JZKGxv
Y2tfKTsKKyAgaW50IG51bV90b19ibG9ja18gQUJTTF9HVUFSREVEX0JZKGxvY2tfKTsKKyAgaW50
IG51bV90b19leGl0XyBBQlNMX0dVQVJERURfQlkobG9ja18pOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9iYXJyaWVyX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmFycmllcl90ZXN0LmNjCmluZGV4IGQ2Y2FiYWJk
ZjczLi5iZmM2Y2IxODgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2JhcnJp
ZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmFycmllcl90ZXN0LmNjCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9ibG9ja2luZ19jb3VudGVyLmNjCmluZGV4IDdlNjhlOTYwYmMzLi40ODFhMDZiMmQyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXIuY2MKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9u
aXphdGlvbi9ibG9ja2luZ19jb3VudGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmxvY2tp
bmdfY291bnRlci5oCmluZGV4IDU1N2VkMDI4ZmU1Li43NzU2MGZjMDU2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5j
aHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC04OCw4ICs4OCw4IEBAIGNsYXNzIEJsb2NraW5nQ291bnRlciB7
CiAKICBwcml2YXRlOgogICBNdXRleCBsb2NrXzsKLSAgaW50IGNvdW50XyBHVUFSREVEX0JZKGxv
Y2tfKTsKLSAgaW50IG51bV93YWl0aW5nXyBHVUFSREVEX0JZKGxvY2tfKTsKKyAgaW50IGNvdW50
XyBBQlNMX0dVQVJERURfQlkobG9ja18pOworICBpbnQgbnVtX3dhaXRpbmdfIEFCU0xfR1VBUkRF
RF9CWShsb2NrXyk7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNo
cm9uaXphdGlvbi9ibG9ja2luZ19jb3VudGVyX3Rlc3QuY2MKaW5kZXggZTgyMjNmODQxYTUuLmM2
M2UzMzkyNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291
bnRlcl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ibG9ja2luZ19jb3VudGVy
X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9jcmVhdGVfdGhyZWFkX2lkZW50
aXR5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRl
bnRpdHkuY2MKaW5kZXggZTdhNjVjZDg4NGEuLmNlMzY3NmE4ODQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5j
YwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzEsNyArMzEs
OCBAQCBuYW1lc3BhY2Ugc3luY2hyb25pemF0aW9uX2ludGVybmFsIHsKIAogLy8gVGhyZWFkSWRl
bnRpdHkgc3RvcmFnZSBpcyBwZXJzaXN0ZW50LCB3ZSBtYWludGFpbiBhIGZyZWUtbGlzdCBvZiBw
cmV2aW91c2x5CiAvLyByZWxlYXNlZCBUaHJlYWRJZGVudGl0eSBvYmplY3RzLgotc3RhdGljIGJh
c2VfaW50ZXJuYWw6OlNwaW5Mb2NrIGZyZWVsaXN0X2xvY2soYmFzZV9pbnRlcm5hbDo6a0xpbmtl
ckluaXRpYWxpemVkKTsKK3N0YXRpYyBiYXNlX2ludGVybmFsOjpTcGluTG9jayBmcmVlbGlzdF9s
b2NrKAorICAgIGJhc2VfaW50ZXJuYWw6OmtMaW5rZXJJbml0aWFsaXplZCk7CiBzdGF0aWMgYmFz
ZV9pbnRlcm5hbDo6VGhyZWFkSWRlbnRpdHkqIHRocmVhZF9pZGVudGl0eV9mcmVlbGlzdDsKIAog
Ly8gQSBwZXItdGhyZWFkIGRlc3RydWN0b3IgZm9yIHJlY2xhaW1pbmcgYXNzb2NpYXRlZCBUaHJl
YWRJZGVudGl0eSBvYmplY3RzLgpAQCAtNjcsNiArNjgsMzAgQEAgc3RhdGljIGludHB0cl90IFJv
dW5kVXAoaW50cHRyX3QgYWRkciwgaW50cHRyX3QgYWxpZ24pIHsKICAgcmV0dXJuIChhZGRyICsg
YWxpZ24gLSAxKSAmIH4oYWxpZ24gLSAxKTsKIH0KIAorc3RhdGljIHZvaWQgUmVzZXRUaHJlYWRJ
ZGVudGl0eShiYXNlX2ludGVybmFsOjpUaHJlYWRJZGVudGl0eSogaWRlbnRpdHkpIHsKKyAgYmFz
ZV9pbnRlcm5hbDo6UGVyVGhyZWFkU3luY2gqIHB0cyA9ICZpZGVudGl0eS0+cGVyX3RocmVhZF9z
eW5jaDsKKyAgcHRzLT5uZXh0ID0gbnVsbHB0cjsKKyAgcHRzLT5za2lwID0gbnVsbHB0cjsKKyAg
cHRzLT5tYXlfc2tpcCA9IGZhbHNlOworICBwdHMtPndhaXRwID0gbnVsbHB0cjsKKyAgcHRzLT5z
dXBwcmVzc19mYXRhbF9lcnJvcnMgPSBmYWxzZTsKKyAgcHRzLT5yZWFkZXJzID0gMDsKKyAgcHRz
LT5wcmlvcml0eSA9IDA7CisgIHB0cy0+bmV4dF9wcmlvcml0eV9yZWFkX2N5Y2xlcyA9IDA7Cisg
IHB0cy0+c3RhdGUuc3RvcmUoYmFzZV9pbnRlcm5hbDo6UGVyVGhyZWFkU3luY2g6OlN0YXRlOjpr
QXZhaWxhYmxlLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OworICBwdHMtPm1heWJlX3VubG9ja2luZyA9IGZhbHNlOworICBwdHMtPndha2UgPSBmYWxzZTsK
KyAgcHRzLT5jb25kX3dhaXRlciA9IGZhbHNlOworICBwdHMtPmFsbF9sb2NrcyA9IG51bGxwdHI7
CisgIGlkZW50aXR5LT53YWl0ZXJfc3RhdGUgPSB7fTsKKyAgaWRlbnRpdHktPmJsb2NrZWRfY291
bnRfcHRyID0gbnVsbHB0cjsKKyAgaWRlbnRpdHktPnRpY2tlci5zdG9yZSgwLCBzdGQ6Om1lbW9y
eV9vcmRlcl9yZWxheGVkKTsKKyAgaWRlbnRpdHktPndhaXRfc3RhcnQuc3RvcmUoMCwgc3RkOjpt
ZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGlkZW50aXR5LT5pc19pZGxlLnN0b3JlKGZhbHNlLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaWRlbnRpdHktPm5leHQgPSBudWxscHRyOwor
fQorCiBzdGF0aWMgYmFzZV9pbnRlcm5hbDo6VGhyZWFkSWRlbnRpdHkqIE5ld1RocmVhZElkZW50
aXR5KCkgewogICBiYXNlX2ludGVybmFsOjpUaHJlYWRJZGVudGl0eSogaWRlbnRpdHkgPSBudWxs
cHRyOwogCkBAIC05MCw3ICsxMTUsNyBAQCBzdGF0aWMgYmFzZV9pbnRlcm5hbDo6VGhyZWFkSWRl
bnRpdHkqIE5ld1RocmVhZElkZW50aXR5KCkgewogICAgICAgICBSb3VuZFVwKHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGFsbG9jYXRpb24pLAogICAgICAgICAgICAgICAgIGJhc2VfaW50ZXJu
YWw6OlBlclRocmVhZFN5bmNoOjprQWxpZ25tZW50KSk7CiAgIH0KLSAgbWVtc2V0KGlkZW50aXR5
LCAwLCBzaXplb2YoKmlkZW50aXR5KSk7CisgIFJlc2V0VGhyZWFkSWRlbnRpdHkoaWRlbnRpdHkp
OwogCiAgIHJldHVybiBpZGVudGl0eTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9pbnRlcm5hbC9jcmVhdGVfdGhyZWFkX2lkZW50aXR5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vaW50ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5oCmluZGV4IDFiYjg3ZGVlNjMw
Li5lYmIxNmM1NmE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFs
L2NyZWF0ZV90aHJlYWRfaWRlbnRpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50
ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5oCkBAIC01LDcgKzUsNyBAQAogICogeW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAgKgotICogICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogICoKICAqIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC01MCw0ICs1MCw1IEBAIGlubGluZSBiYXNlX2ludGVybmFsOjpU
aHJlYWRJZGVudGl0eSogR2V0T3JDcmVhdGVDdXJyZW50VGhyZWFkSWRlbnRpdHkoKSB7CiAKIH0g
IC8vIG5hbWVzcGFjZSBzeW5jaHJvbml6YXRpb25faW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBh
YnNsCisKICNlbmRpZiAgLy8gQUJTTF9TWU5DSFJPTklaQVRJT05fSU5URVJOQUxfQ1JFQVRFX1RI
UkVBRF9JREVOVElUWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVy
bmFsL2dyYXBoY3ljbGVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBo
Y3ljbGVzLmNjCmluZGV4IGQzODc4ZGUyYjY4Li4wYzhjNzU2NDQ4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlcy5jYwpAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9u
L2ludGVybmFsL2dyYXBoY3ljbGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwv
Z3JhcGhjeWNsZXMuaAppbmRleCAyZTY2ODZhNGMwNi4uZTViZGUwMDdjNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlcy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlcy5oCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vaW50ZXJuYWwvZ3JhcGhjeWNsZXNfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0
aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzX2JlbmNobWFyay5jYwppbmRleCBhMjM5YzI1YzNhOC4u
NTQ4MjNlMGJhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9n
cmFwaGN5Y2xlc19iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVy
bmFsL2dyYXBoY3ljbGVzX2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
IC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFs
L2dyYXBoY3ljbGVzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvZ3Jh
cGhjeWNsZXNfdGVzdC5jYwppbmRleCA5YTg1YjM5MDc0ZC4uNThlODQ3N2I2ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlc190ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlc190ZXN0LmNjCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwva2VybmVsX3RpbWVvdXQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNo
cm9uaXphdGlvbi9pbnRlcm5hbC9rZXJuZWxfdGltZW91dC5oCmluZGV4IGJiNzA4MDAwNGM3Li42
MWM3MmU3NWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2tl
cm5lbF90aW1lb3V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2tlcm5l
bF90aW1lb3V0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTUzLDYgKzUzLDcgQEAgY2xhc3MgS2VybmVsVGltZW91dCB7CiAKICAgLy8gV2UgZXhwbGljaXRs
eSBkbyBub3Qgc3VwcG9ydCBvdGhlciBjdXN0b20gZm9ybWF0czogdGltZXNwZWMsIGludDY0X3Qg
bmFub3MuCiAgIC8vIFVuaWZ5IG9uIHRoaXMgYW5kIGFic2w6OlRpbWUsIHBsZWFzZS4KKwogICBi
b29sIGhhc190aW1lb3V0KCkgY29uc3QgeyByZXR1cm4gbnNfICE9IDA7IH0KIAogIHByaXZhdGU6
CkBAIC03Niw3ICs3Nyw3IEBAIGNsYXNzIEtlcm5lbFRpbWVvdXQgewogICAgIGlmICh4IDw9IDAp
IHggPSAxOwogICAgIC8vIEEgdGltZSBsYXJnZXIgdGhhbiB3aGF0IGNhbiBiZSByZXByZXNlbnRl
ZCB0byB0aGUga2VybmVsIGlzIHRyZWF0ZWQKICAgICAvLyBhcyBubyB0aW1lb3V0LgotICAgIGlm
ICh4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKSB4ID0gMDsKKyAgICBp
ZiAoeCA9PSAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KSgpKSB4ID0gMDsKICAg
ICByZXR1cm4geDsKICAgfQogCkBAIC05MCw3ICs5MSw3IEBAIGNsYXNzIEtlcm5lbFRpbWVvdXQg
ewogICAgICAgICAgIEVSUk9SLAogICAgICAgICAgICJUcmllZCB0byBjcmVhdGUgYSB0aW1lc3Bl
YyBmcm9tIGEgbm9uLXRpbWVvdXQ7IG5ldmVyIGRvIHRoaXMuIik7CiAgICAgICAvLyBCdXQgd2Un
bGwgdHJ5IHRvIGNvbnRpbnVlIHNhbmVseS4gIG5vLXRpbWVvdXQgfj0gc2F0dXJhdGVkIHRpbWVv
dXQuCi0gICAgICBuID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7CisgICAg
ICBuID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCkoKTsKICAgICB9CiAKICAg
ICAvLyBLZXJuZWwgQVBJcyB2YWxpZGF0ZSB0aW1lc3BlY3MgYXMgYmVpbmcgYXQgb3IgYWZ0ZXIg
dGhlIGVwb2NoLApAQCAtMTAwLDggKzEwMSw4IEBAIGNsYXNzIEtlcm5lbFRpbWVvdXQgewogICAg
IGlmIChuIDwgMCkgbiA9IDA7CiAKICAgICBzdHJ1Y3QgdGltZXNwZWMgYWJzdGltZTsKLSAgICBp
bnQ2NF90IHNlY29uZHMgPSBzdGQ6Om1pbihuIC8ga05hbm9zUGVyU2Vjb25kLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90e3N0ZDo6bnVtZXJpY19saW1pdHM8dGltZV90Pjo6
bWF4KCl9KTsKKyAgICBpbnQ2NF90IHNlY29uZHMgPSAoc3RkOjptaW4pKG4gLyBrTmFub3NQZXJT
ZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdHsoc3RkOjpudW1l
cmljX2xpbWl0czx0aW1lX3Q+OjptYXgpKCl9KTsKICAgICBhYnN0aW1lLnR2X3NlYyA9IHN0YXRp
Y19jYXN0PHRpbWVfdD4oc2Vjb25kcyk7CiAgICAgYWJzdGltZS50dl9uc2VjID0KICAgICAgICAg
c3RhdGljX2Nhc3Q8ZGVjbHR5cGUoYWJzdGltZS50dl9uc2VjKT4obiAlIGtOYW5vc1BlclNlY29u
ZCk7CkBAIC0xMTksNyArMTIwLDcgQEAgY2xhc3MgS2VybmVsVGltZW91dCB7CiAgIC8vIDxpbnRz
YWZlLmg+IGFuZCA8V2luQmFzZS5oPi4KICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIERXb3JkOyAg
Ly8gTk9MSU5UCiAgIERXb3JkIEluTWlsbGlzZWNvbmRzRnJvbU5vdygpIGNvbnN0IHsKLSAgICBj
b25zdGV4cHIgRFdvcmQga0luZmluaXRlID0gc3RkOjpudW1lcmljX2xpbWl0czxEV29yZD46Om1h
eCgpOworICAgIGNvbnN0ZXhwciBEV29yZCBrSW5maW5pdGUgPSAoc3RkOjpudW1lcmljX2xpbWl0
czxEV29yZD46Om1heCkoKTsKICAgICBpZiAoIWhhc190aW1lb3V0KCkpIHsKICAgICAgIHJldHVy
biBrSW5maW5pdGU7CiAgICAgfQpAQCAtMTMwLDcgKzEzMSw3IEBAIGNsYXNzIEtlcm5lbFRpbWVv
dXQgewogICAgIGlmIChuc18gPj0gbm93KSB7CiAgICAgICAvLyBSb3VuZCB1cCBzbyB0aGF0IE5v
dygpICsgbXNfZnJvbV9ub3cgPj0gbnNfLgogICAgICAgY29uc3RleHByIHVpbnQ2NF90IG1heF9u
YW5vcyA9Ci0gICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkgLSA5
OTk5OTl1OworICAgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgpKCkg
LSA5OTk5OTl1OwogICAgICAgdWludDY0X3QgbXNfZnJvbV9ub3cgPQogICAgICAgICAgIChzdGQ6
Om1pbjx1aW50NjRfdD4obWF4X25hbm9zLCBuc18gLSBub3cpICsgOTk5OTk5dSkgLyAxMDAwMDAw
dTsKICAgICAgIGlmIChtc19mcm9tX25vdyA+IGtJbmZpbml0ZSkgewpAQCAtMTQ4LDQgKzE0OSw1
IEBAIGNsYXNzIEtlcm5lbFRpbWVvdXQgewogCiB9ICAvLyBuYW1lc3BhY2Ugc3luY2hyb25pemF0
aW9uX2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCiAjZW5kaWYgIC8vIEFCU0xfU1lO
Q0hST05JWkFUSU9OX0lOVEVSTkFMX0tFUk5FTF9USU1FT1VUX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvbXV0ZXhfbm9ucHJvZC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNo
cm9uaXphdGlvbi9pbnRlcm5hbC9tdXRleF9ub25wcm9kLmNjCmluZGV4IDQ1YzYwMzI2ZGJhLi4y
NjdkZWFmZmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL211
dGV4X25vbnByb2QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL211dGV4
X25vbnByb2QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9tdXRleF9ub25wcm9kLmlu
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9tdXRleF9ub25wcm9kLmluYwppbmRl
eCAwYWFiM2QxMzE0ZS4uYjhkNWFmNzlhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9pbnRlcm5hbC9tdXRleF9ub25wcm9kLmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vaW50ZXJuYWwvbXV0ZXhfbm9ucHJvZC5pbmMKQEAgLTIxNCw2ICsyMTQsOSBAQCBjbGFzcyBT
eW5jaHJvbml6YXRpb25TdG9yYWdlIHsKICAgLy8gc3RhY2spIHNob3VsZCB1c2UgdGhpcyBjb25z
dHJ1Y3Rvci4KICAgZXhwbGljaXQgU3luY2hyb25pemF0aW9uU3RvcmFnZShiYXNlX2ludGVybmFs
OjpMaW5rZXJJbml0aWFsaXplZCkge30KIAorICBjb25zdGV4cHIgZXhwbGljaXQgU3luY2hyb25p
emF0aW9uU3RvcmFnZShhYnNsOjpDb25zdEluaXRUeXBlKQorICAgICAgOiBpc19keW5hbWljXyhm
YWxzZSksIG9uY2VfKCksIHNwYWNlX3t7MH19IHt9CisKICAgU3luY2hyb25pemF0aW9uU3RvcmFn
ZShTeW5jaHJvbml6YXRpb25TdG9yYWdlJikgPSBkZWxldGU7CiAgIFN5bmNocm9uaXphdGlvblN0
b3JhZ2UmIG9wZXJhdG9yPShTeW5jaHJvbml6YXRpb25TdG9yYWdlJikgPSBkZWxldGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5jYwppbmRl
eCBjYWEyYmFmNjRiZC4uYjcwMTRmYjJiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vaW50ZXJuYWwvcGVyX3RocmVhZF9zZW0uY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTg5LDYgKzg5LDcgQEAgQUJTTF9BVFRSSUJVVEVfV0VBSyBib29s
IEFic2xJbnRlcm5hbFBlclRocmVhZFNlbVdhaXQoCiAgIGlmIChpZGVudGl0eS0+YmxvY2tlZF9j
b3VudF9wdHIgIT0gbnVsbHB0cikgewogICAgIGlkZW50aXR5LT5ibG9ja2VkX2NvdW50X3B0ci0+
ZmV0Y2hfc3ViKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogICB9CisKICAgaWRlbnRp
dHktPmlzX2lkbGUuc3RvcmUoZmFsc2UsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogICBp
ZGVudGl0eS0+d2FpdF9zdGFydC5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsK
ICAgcmV0dXJuICF0aW1lb3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2lu
dGVybmFsL3Blcl90aHJlYWRfc2VtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwv
cGVyX3RocmVhZF9zZW0uaAppbmRleCA2NzhiNjllNDg3YS4uZTdkYTA3MGJhNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5oCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMDQsNCArMTA0LDUgQEAgYm9v
bCBhYnNsOjpzeW5jaHJvbml6YXRpb25faW50ZXJuYWw6OlBlclRocmVhZFNlbTo6V2FpdCgKICAg
ICBhYnNsOjpzeW5jaHJvbml6YXRpb25faW50ZXJuYWw6Oktlcm5lbFRpbWVvdXQgdCkgewogICBy
ZXR1cm4gQWJzbEludGVybmFsUGVyVGhyZWFkU2VtV2FpdCh0KTsKIH0KKwogI2VuZGlmICAvLyBB
QlNMX1NZTkNIUk9OSVpBVElPTl9JTlRFUk5BTF9QRVJfVEhSRUFEX1NFTV9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3Blcl90aHJlYWRfc2VtX3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvcGVyX3RocmVhZF9zZW1fdGVzdC5jYwpp
bmRleCBjMjlkODQwM2RmNC4uZGJhNzIzOTBkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9u
aXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNo
cm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNjCkBAIC00LDcgKzQsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMTQsMTAgKzExNCw5IEBAIGNsYXNzIFBl
clRocmVhZFNlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICBtaW5fY3ljbGVz
ID0gc3RkOjptaW4obWluX2N5Y2xlcywgY3ljbGVzKTsKICAgICAgIHRvdGFsX2N5Y2xlcyArPSBj
eWNsZXM7CiAgICAgfQotICAgIHN0ZDo6c3RyaW5nIG91dCA9Ci0gICAgICAgIFN0ckNhdChtc2cs
ICJtaW4gY3ljbGUgY291bnQ9IiwgbWluX2N5Y2xlcywgIiBhdmcgY3ljbGUgY291bnQ9IiwKLSAg
ICAgICAgICAgICAgIGFic2w6OlNpeERpZ2l0cyhzdGF0aWNfY2FzdDxkb3VibGU+KHRvdGFsX2N5
Y2xlcykgLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtOdW1JdGVyYXRpb25zKSk7
CisgICAgc3RkOjpzdHJpbmcgb3V0ID0gU3RyQ2F0KAorICAgICAgICBtc2csICJtaW4gY3ljbGUg
Y291bnQ9IiwgbWluX2N5Y2xlcywgIiBhdmcgY3ljbGUgY291bnQ9IiwKKyAgICAgICAgYWJzbDo6
U2l4RGlnaXRzKHN0YXRpY19jYXN0PGRvdWJsZT4odG90YWxfY3ljbGVzKSAvIGtOdW1JdGVyYXRp
b25zKSk7CiAgICAgcHJpbnRmKCIlc1xuIiwgb3V0LmNfc3RyKCkpOwogCiAgICAgcGFydG5lcl90
aHJlYWQuam9pbigpOwpAQCAtMTUyLDEyICsxNTEsMTYgQEAgVEVTVF9GKFBlclRocmVhZFNlbVRl
c3QsIFdpdGhUaW1lb3V0KSB7CiB9CiAKIFRFU1RfRihQZXJUaHJlYWRTZW1UZXN0LCBUaW1lb3V0
cykgewotICBhYnNsOjpUaW1lIHRpbWVvdXQgPSBhYnNsOjpOb3coKSArIGFic2w6Ok1pbGxpc2Vj
b25kcyg1MCk7CisgIGNvbnN0IGFic2w6OkR1cmF0aW9uIGRlbGF5ID0gYWJzbDo6TWlsbGlzZWNv
bmRzKDUwKTsKKyAgY29uc3QgYWJzbDo6VGltZSBzdGFydCA9IGFic2w6Ok5vdygpOworICBFWFBF
Q1RfRkFMU0UoV2FpdChzdGFydCArIGRlbGF5KSk7CisgIGNvbnN0IGFic2w6OkR1cmF0aW9uIGVs
YXBzZWQgPSBhYnNsOjpOb3coKSAtIHN0YXJ0OwogICAvLyBBbGxvdyBmb3IgYSBzbGlnaHQgZWFy
bHkgcmV0dXJuLCB0byBhY2NvdW50IGZvciBxdWFsaXR5IG9mIGltcGxlbWVudGF0aW9uCiAgIC8v
IGlzc3VlcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4KICAgY29uc3QgYWJzbDo6RHVyYXRpb24gc2xv
cCA9IGFic2w6Ok1pY3Jvc2Vjb25kcygyMDApOwotICBFWFBFQ1RfRkFMU0UoV2FpdCh0aW1lb3V0
KSk7Ci0gIEVYUEVDVF9MRSh0aW1lb3V0LCBhYnNsOjpOb3coKSArIHNsb3ApOworICBFWFBFQ1Rf
TEUoZGVsYXkgLSBzbG9wLCBlbGFwc2VkKQorICAgICAgPDwgIldhaXQgcmV0dXJuZWQgIiA8PCBk
ZWxheSAtIGVsYXBzZWQKKyAgICAgIDw8ICIgZWFybHkgKHdpdGggIiA8PCBzbG9wIDw8ICIgc2xv
cCksIHN0YXJ0IHRpbWUgd2FzICIgPDwgc3RhcnQ7CiAKICAgYWJzbDo6VGltZSBuZWdhdGl2ZV90
aW1lb3V0ID0gYWJzbDo6VW5peEVwb2NoKCkgLSBhYnNsOjpNaWxsaXNlY29uZHMoMTAwKTsKICAg
RVhQRUNUX0ZBTFNFKFdhaXQobmVnYXRpdmVfdGltZW91dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL2ludGVybmFsL3RocmVhZF9wb29sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vaW50ZXJuYWwvdGhyZWFkX3Bvb2wuaAppbmRleCA4NDY0MDQyNzdhMC4uYTAwZjJiZThl
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC90aHJlYWRfcG9v
bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC90aHJlYWRfcG9vbC5oCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNiw2ICsxNiw3IEBA
CiAjZGVmaW5lIEFCU0xfU1lOQ0hST05JWkFUSU9OX0lOVEVSTkFMX1RIUkVBRF9QT09MX0hfCiAK
ICNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8ZnVuY3Rp
b25hbD4KICNpbmNsdWRlIDxxdWV1ZT4KICNpbmNsdWRlIDx0aHJlYWQ+ICAvLyBOT0xJTlQoYnVp
bGQvYysrMTEpCkBAIC00Miw3ICs0Myw3IEBAIGNsYXNzIFRocmVhZFBvb2wgewogICB+VGhyZWFk
UG9vbCgpIHsKICAgICB7CiAgICAgICBhYnNsOjpNdXRleExvY2sgbCgmbXVfKTsKLSAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgdGhyZWFkc18uc2l6ZSgpOyArK2kpIHsKKyAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdGhyZWFkc18uc2l6ZSgpOyBpKyspIHsKICAgICAgICAgcXVldWVfLnB1
c2gobnVsbHB0cik7ICAvLyBTaHV0ZG93biBzaWduYWwuCiAgICAgICB9CiAgICAgfQpAQCAtNTks
NyArNjAsNyBAQCBjbGFzcyBUaHJlYWRQb29sIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgYm9vbCBX
b3JrQXZhaWxhYmxlKCkgY29uc3QgRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKG11XykgeworICBi
b29sIFdvcmtBdmFpbGFibGUoKSBjb25zdCBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRCht
dV8pIHsKICAgICByZXR1cm4gIXF1ZXVlXy5lbXB0eSgpOwogICB9CiAKQEAgLTgwLDcgKzgxLDcg
QEAgY2xhc3MgVGhyZWFkUG9vbCB7CiAgIH0KIAogICBhYnNsOjpNdXRleCBtdV87Ci0gIHN0ZDo6
cXVldWU8c3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBxdWV1ZV8gR1VBUkRFRF9CWShtdV8pOworICBz
dGQ6OnF1ZXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gcXVldWVfIEFCU0xfR1VBUkRFRF9CWSht
dV8pOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnRocmVhZD4gdGhyZWFkc187CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvd2FpdGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3lu
Y2hyb25pemF0aW9uL2ludGVybmFsL3dhaXRlci5jYwppbmRleCA3NjhjNTIwODVjZC4uZjE3ZWE1
NmZkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC93YWl0ZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3dhaXRlci5jYwpAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDAsNiArNDAsOSBAQAogI2lu
Y2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNzdGRpbnQ+Cisj
aW5jbHVkZSA8bmV3PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCiAjaW5jbHVkZSAiYWJzbC9i
YXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFs
L3RocmVhZF9pZGVudGl0eS5oIgogI2luY2x1ZGUgImFic2wvYmFzZS9vcHRpbWl6YXRpb24uaCIK
QEAgLTgxLDYgKzg0LDcgQEAgc3RhdGljIHZvaWQgTWF5YmVCZWNvbWVJZGxlKCkgewogI2RlZmlu
ZSBGVVRFWF9CSVRTRVRfTUFUQ0hfQU5ZIDB4RkZGRkZGRkYKICNlbmRpZgogI2VuZGlmCisKIGNs
YXNzIEZ1dGV4IHsKICBwdWJsaWM6CiAgIHN0YXRpYyBpbnQgV2FpdFVudGlsKHN0ZDo6YXRvbWlj
PGludDMyX3Q+ICp2LCBpbnQzMl90IHZhbCwKQEAgLTMyNiw2ICszMzAsNDMgQEAgdm9pZCBXYWl0
ZXI6OlBva2UoKSB7CiAKICNlbGlmIEFCU0xfV0FJVEVSX01PREUgPT0gQUJTTF9XQUlURVJfTU9E
RV9XSU4zMgogCitjbGFzcyBXYWl0ZXI6OldpbkhlbHBlciB7CisgcHVibGljOgorICBzdGF0aWMg
U1JXTE9DSyAqR2V0TG9jayhXYWl0ZXIgKncpIHsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxTUldMT0NLICo+KCZ3LT5tdV9zdG9yYWdlXyk7CisgIH0KKworICBzdGF0aWMgQ09ORElUSU9O
X1ZBUklBQkxFICpHZXRDb25kKFdhaXRlciAqdykgeworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PENPTkRJVElPTl9WQVJJQUJMRSAqPigmdy0+Y3Zfc3RvcmFnZV8pOworICB9CisKKyAgc3Rh
dGljX2Fzc2VydChzaXplb2YoU1JXTE9DSykgPT0gc2l6ZW9mKFdhaXRlcjo6U1JXTG9ja1N0b3Jh
Z2UpLAorICAgICAgICAgICAgICAgICJTUldMb2NrU3RvcmFnZSBkb2VzIG5vdCBoYXZlIHRoZSBz
YW1lIHNpemUgYXMgU1JXTE9DSyIpOworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgYWxpZ25vZihT
UldMT0NLKSA9PSBhbGlnbm9mKFdhaXRlcjo6U1JXTG9ja1N0b3JhZ2UpLAorICAgICAgIlNSV0xv
Y2tTdG9yYWdlIGRvZXMgbm90IGhhdmUgdGhlIHNhbWUgYWxpZ25tZW50IGFzIFNSV0xPQ0siKTsK
KworICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDT05ESVRJT05fVkFSSUFCTEUpID09CisgICAgICAg
ICAgICAgICAgICAgIHNpemVvZihXYWl0ZXI6OkNvbmRpdGlvblZhcmlhYmxlU3RvcmFnZSksCisg
ICAgICAgICAgICAgICAgIkFCU0xfQ09ORElUSU9OX1ZBUklBQkxFX1NUT1JBR0UgZG9lcyBub3Qg
aGF2ZSB0aGUgc2FtZSBzaXplICIKKyAgICAgICAgICAgICAgICAiYXMgQ09ORElUSU9OX1ZBUklB
QkxFIik7CisgIHN0YXRpY19hc3NlcnQoYWxpZ25vZihDT05ESVRJT05fVkFSSUFCTEUpID09Cisg
ICAgICAgICAgICAgICAgICAgIGFsaWdub2YoV2FpdGVyOjpDb25kaXRpb25WYXJpYWJsZVN0b3Jh
Z2UpLAorICAgICAgICAgICAgICAgICJDb25kaXRpb25WYXJpYWJsZVN0b3JhZ2UgZG9lcyBub3Qg
aGF2ZSB0aGUgc2FtZSAiCisgICAgICAgICAgICAgICAgImFsaWdubWVudCBhcyBDT05ESVRJT05f
VkFSSUFCTEUiKTsKKworICAvLyBUaGUgU1JXTE9DSyBhbmQgQ09ORElUSU9OX1ZBUklBQkxFIHR5
cGVzIG11c3QgYmUgdHJpdmlhbGx5IGNvbnN0dWN0aWJsZQorICAvLyBhbmQgZGVzdHJ1Y3RpYmxl
IGJlY2F1c2Ugd2UgbmV2ZXIgY2FsbCB0aGVpciBjb25zdHJ1Y3RvcnMgb3IgZGVzdHJ1Y3RvcnMu
CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfY29uc3RydWN0aWJsZTxTUldMT0NL
Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIlRoZSBTUldMT0NLIHR5cGUgbXVzdCBiZSB0cml2
aWFsbHkgY29uc3RydWN0aWJsZSIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2NvbnN0cnVjdGlibGU8Q09ORElUSU9OX1ZBUklBQkxFPjo6dmFsdWUsCisgICAgICAgICAgICAg
ICAgIlRoZSBDT05ESVRJT05fVkFSSUFCTEUgdHlwZSBtdXN0IGJlIHRyaXZpYWxseSBjb25zdHJ1
Y3RpYmxlIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PFNSV0xPQ0s+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiVGhlIFNSV0xPQ0sgdHlwZSBtdXN0
IGJlIHRyaXZpYWxseSBkZXN0cnVjdGlibGUiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8Q09ORElUSU9OX1ZBUklBQkxFPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgIlRoZSBDT05ESVRJT05fVkFSSUFCTEUgdHlwZSBtdXN0IGJlIHRyaXZpYWxseSBk
ZXN0cnVjdGlibGUiKTsKK307CisKIGNsYXNzIExvY2tIb2xkZXIgewogIHB1YmxpYzoKICAgZXhw
bGljaXQgTG9ja0hvbGRlcihTUldMT0NLKiBtdSkgOiBtdV8obXUpIHsKQEAgLTM0NCwxNCArMzg1
LDE5IEBAIGNsYXNzIExvY2tIb2xkZXIgewogfTsKIAogdm9pZCBXYWl0ZXI6OkluaXQoKSB7Ci0g
IEluaXRpYWxpemVTUldMb2NrKCZtdV8pOwotICBJbml0aWFsaXplQ29uZGl0aW9uVmFyaWFibGUo
JmN2Xyk7CisgIGF1dG8gKm11ID0gOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQgKj4oJm11X3N0b3Jh
Z2VfKSkgU1JXTE9DSzsKKyAgYXV0byAqY3YgPSA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCAqPigm
Y3Zfc3RvcmFnZV8pKSBDT05ESVRJT05fVkFSSUFCTEU7CisgIEluaXRpYWxpemVTUldMb2NrKG11
KTsKKyAgSW5pdGlhbGl6ZUNvbmRpdGlvblZhcmlhYmxlKGN2KTsKICAgd2FpdGVyX2NvdW50Xy5z
dG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKICAgd2FrZXVwX2NvdW50Xy5zdG9y
ZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKIH0KIAogYm9vbCBXYWl0ZXI6OldhaXQo
S2VybmVsVGltZW91dCB0KSB7Ci0gIExvY2tIb2xkZXIgaCgmbXVfKTsKKyAgU1JXTE9DSyAqbXUg
PSBXaW5IZWxwZXI6OkdldExvY2sodGhpcyk7CisgIENPTkRJVElPTl9WQVJJQUJMRSAqY3YgPSBX
aW5IZWxwZXI6OkdldENvbmQodGhpcyk7CisKKyAgTG9ja0hvbGRlciBoKG11KTsKICAgd2FpdGVy
X2NvdW50Xy5mZXRjaF9hZGQoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiAKICAgLy8g
TG9vcCB1bnRpbCB3ZSBmaW5kIGEgd2FrZXVwIHRvIGNvbnN1bWUgb3IgdGltZW91dC4KQEAgLTM2
OSw4ICs0MTUsNyBAQCBib29sIFdhaXRlcjo6V2FpdChLZXJuZWxUaW1lb3V0IHQpIHsKICAgICB9
CiAKICAgICAvLyBObyB3YWtldXBzIGF2YWlsYWJsZSwgdGltZSB0byB3YWl0LgotICAgIGlmICgh
U2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVygKLSAgICAgICAgICAgICZjdl8sICZtdV8sIHQuSW5N
aWxsaXNlY29uZHNGcm9tTm93KCksIDApKSB7CisgICAgaWYgKCFTbGVlcENvbmRpdGlvblZhcmlh
YmxlU1JXKGN2LCBtdSwgdC5Jbk1pbGxpc2Vjb25kc0Zyb21Ob3coKSwgMCkpIHsKICAgICAgIC8v
IEdldExhc3RFcnJvcigpIHJldHVybnMgYSBXaW4zMiBEV09SRCwgYnV0IHdlIGFzc2lnbiB0bwog
ICAgICAgLy8gdW5zaWduZWQgbG9uZyB0byBzaW1wbGlmeSB0aGUgQUJTTF9SQVdfTE9HIGNhc2Ug
YmVsb3cuICBUaGUgdW5pZm9ybQogICAgICAgLy8gaW5pdGlhbGl6YXRpb24gZ3VhcmFudGVlcyB0
aGlzIGlzIG5vdCBhIG5hcnJvd2luZyBjb252ZXJzaW9uLgpAQCAtMzk3LDExICs0NDIsMTEgQEAg
dm9pZCBXYWl0ZXI6OlBva2UoKSB7CiAgICAgcmV0dXJuOwogICB9CiAgIC8vIFBvdGVudGlhbGx5
IGEgd2FrZXIuIFRha2UgdGhlIGxvY2sgYW5kIGNoZWNrIGFnYWluLgotICBMb2NrSG9sZGVyIGgo
Jm11Xyk7CisgIExvY2tIb2xkZXIgaChXaW5IZWxwZXI6OkdldExvY2sodGhpcykpOwogICBpZiAo
d2FpdGVyX2NvdW50Xy5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpID09IDApIHsKICAg
ICByZXR1cm47CiAgIH0KLSAgV2FrZUNvbmRpdGlvblZhcmlhYmxlKCZjdl8pOworICBXYWtlQ29u
ZGl0aW9uVmFyaWFibGUoV2luSGVscGVyOjpHZXRDb25kKHRoaXMpKTsKIH0KIAogI2Vsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC93YWl0ZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC93YWl0ZXIuaAppbmRleCAyMzE2NmY0YmZhMy4uYTNl
MzEyNGU0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC93YWl0
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvd2FpdGVyLmgKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE4LDkgKzE4LDcgQEAKIAog
I2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKIAotI2lmZGVmIF9XSU4zMgotI2luY2x1ZGUg
PHdpbmRvd3MuaD4KLSNlbHNlCisjaWZuZGVmIF9XSU4zMgogI2luY2x1ZGUgPHB0aHJlYWQuaD4K
ICNlbmRpZgogCkBAIC0xMjMsOCArMTIxLDIwIEBAIGNsYXNzIFdhaXRlciB7CiAgIC8vIHByaW1p
dml0aXZlcy4gIFdlIGFyZSB1c2luZyBTUldMT0NLIGFuZCBDT05ESVRJT05fVkFSSUFCTEUKICAg
Ly8gYmVjYXVzZSB0aGV5IGRvbid0IHJlcXVpcmUgYSBkZXN0cnVjdG9yIHRvIHJlbGVhc2Ugc3lz
dGVtCiAgIC8vIHJlc291cmNlcy4KLSAgU1JXTE9DSyBtdV87Ci0gIENPTkRJVElPTl9WQVJJQUJM
RSBjdl87CisgIC8vCisgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGluY2x1ZGUgV2luZG93cy5oIGlu
IG91ciBoZWFkZXJzLCBzbyB3ZSB1c2UgYWxpZ25lZAorICAvLyBzdG9yYWdlIGJ1ZmZlcnMgdG8g
ZGVmaW5lIHRoZSBzdG9yYWdlLgorICB1c2luZyBTUldMb2NrU3RvcmFnZSA9CisgICAgICB0eXBl
bmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2Yodm9pZCopLCBhbGlnbm9mKHZvaWQqKT46
OnR5cGU7CisgIHVzaW5nIENvbmRpdGlvblZhcmlhYmxlU3RvcmFnZSA9CisgICAgICB0eXBlbmFt
ZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2Yodm9pZCopLCBhbGlnbm9mKHZvaWQqKT46OnR5
cGU7CisKKyAgLy8gV2luSGVscGVyIC0gVXNlZCB0byBkZWZpbmUgdXRpbGl0aWVzIGZvciBhY2Nl
c3NpbmcgdGhlIGxvY2sgYW5kCisgIC8vIGNvbmRpdGlvbiB2YXJpYWJsZSBzdG9yYWdlIG9uY2Ug
dGhlIHR5cGVzIGFyZSBjb21wbGV0ZS4KKyAgY2xhc3MgV2luSGVscGVyOworCisgIFNSV0xvY2tT
dG9yYWdlIG11X3N0b3JhZ2VfOworICBDb25kaXRpb25WYXJpYWJsZVN0b3JhZ2UgY3Zfc3RvcmFn
ZV87CiAgIHN0ZDo6YXRvbWljPGludD4gd2FpdGVyX2NvdW50XzsKICAgc3RkOjphdG9taWM8aW50
PiB3YWtldXBfY291bnRfOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbGlm
ZXRpbWVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9saWZldGltZV90ZXN0LmNjCmlu
ZGV4IDkwYzkwMDliMThmLi4zNGI4ODc1YjRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25p
emF0aW9uL2xpZmV0aW1lX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2xpZmV0
aW1lX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogI2luY2x1ZGUgImFic2wv
YmFzZS9hdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbnN0X2luaXQuaCIKICNp
bmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKICNpbmNsdWRlICJhYnNs
L2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRp
b24vbXV0ZXguaCIKQEAgLTcyLDIzICs3MywxOSBAQCB2b2lkIFRocmVhZFR3byhhYnNsOjpNdXRl
eCogbXV0ZXgsIGFic2w6OkNvbmRWYXIqIGNvbmR2YXIsCiAvLyBMYXVuY2ggdGhyZWFkIDEgYW5k
IHRocmVhZCAyLCBhbmQgYmxvY2sgb24gdGhlaXIgY29tcGxldGlvbi4KIC8vIElmIGFueSBvZiAn
bXV0ZXgnLCAnY29uZHZhcicsIG9yICdub3RpZmljYXRpb24nIGlzIG51bGxwdHIsIHVzZSBhIGxv
Y2FsbHkKIC8vIGNvbnN0cnVjdGVkIGluc3RhbmNlIGluc3RlYWQuCi12b2lkIFJ1blRlc3RzKGFi
c2w6Ok11dGV4KiBtdXRleCwgYWJzbDo6Q29uZFZhciogY29uZHZhciwKLSAgICAgICAgICAgICAg
YWJzbDo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pIHsKK3ZvaWQgUnVuVGVzdHMoYWJzbDo6
TXV0ZXgqIG11dGV4LCBhYnNsOjpDb25kVmFyKiBjb25kdmFyKSB7CiAgIGFic2w6Ok11dGV4IGRl
ZmF1bHRfbXV0ZXg7CiAgIGFic2w6OkNvbmRWYXIgZGVmYXVsdF9jb25kdmFyOwotICBhYnNsOjpO
b3RpZmljYXRpb24gZGVmYXVsdF9ub3RpZmljYXRpb247CisgIGFic2w6Ok5vdGlmaWNhdGlvbiBu
b3RpZmljYXRpb247CiAgIGlmICghbXV0ZXgpIHsKICAgICBtdXRleCA9ICZkZWZhdWx0X211dGV4
OwogICB9CiAgIGlmICghY29uZHZhcikgewogICAgIGNvbmR2YXIgPSAmZGVmYXVsdF9jb25kdmFy
OwogICB9Ci0gIGlmICghbm90aWZpY2F0aW9uKSB7Ci0gICAgbm90aWZpY2F0aW9uID0gJmRlZmF1
bHRfbm90aWZpY2F0aW9uOwotICB9CiAgIGJvb2wgc3RhdGUgPSBmYWxzZTsKLSAgc3RkOjp0aHJl
YWQgdGhyZWFkX29uZShUaHJlYWRPbmUsIG11dGV4LCBjb25kdmFyLCBub3RpZmljYXRpb24sICZz
dGF0ZSk7Ci0gIHN0ZDo6dGhyZWFkIHRocmVhZF90d28oVGhyZWFkVHdvLCBtdXRleCwgY29uZHZh
ciwgbm90aWZpY2F0aW9uLCAmc3RhdGUpOworICBzdGQ6OnRocmVhZCB0aHJlYWRfb25lKFRocmVh
ZE9uZSwgbXV0ZXgsIGNvbmR2YXIsICZub3RpZmljYXRpb24sICZzdGF0ZSk7CisgIHN0ZDo6dGhy
ZWFkIHRocmVhZF90d28oVGhyZWFkVHdvLCBtdXRleCwgY29uZHZhciwgJm5vdGlmaWNhdGlvbiwg
JnN0YXRlKTsKICAgdGhyZWFkX29uZS5qb2luKCk7CiAgIHRocmVhZF90d28uam9pbigpOwogfQpA
QCAtOTYsMTAgKzkzLDEzIEBAIHZvaWQgUnVuVGVzdHMoYWJzbDo6TXV0ZXgqIG11dGV4LCBhYnNs
OjpDb25kVmFyKiBjb25kdmFyLAogdm9pZCBUZXN0TG9jYWxzKCkgewogICBhYnNsOjpNdXRleCBt
dXRleDsKICAgYWJzbDo6Q29uZFZhciBjb25kdmFyOwotICBhYnNsOjpOb3RpZmljYXRpb24gbm90
aWZpY2F0aW9uOwotICBSdW5UZXN0cygmbXV0ZXgsICZjb25kdmFyLCAmbm90aWZpY2F0aW9uKTsK
KyAgUnVuVGVzdHMoJm11dGV4LCAmY29uZHZhcik7CiB9CiAKKy8vIE5vcm1hbCBrQ29uc3RJbml0
IHVzYWdlCitBQlNMX0NPTlNUX0lOSVQgYWJzbDo6TXV0ZXggY29uc3RfaW5pdF9tdXRleChhYnNs
OjprQ29uc3RJbml0KTsKK3ZvaWQgVGVzdENvbnN0SW5pdEdsb2JhbCgpIHsgUnVuVGVzdHMoJmNv
bnN0X2luaXRfbXV0ZXgsIG51bGxwdHIpOyB9CisKIC8vIEdsb2JhbCB2YXJpYWJsZXMgZHVyaW5n
IHN0YXJ0IGFuZCB0ZXJtaW5hdGlvbgogLy8KIC8vIEluIGEgdHJhbnNsYXRpb24gdW5pdCwgc3Rh
dGljIHN0b3JhZ2UgZHVyYXRpb24gdmFyaWFibGVzIGFyZSBpbml0aWFsaXplZCBpbgpAQCAtMTIy
LDEwICsxMjIsNTMgQEAgY2xhc3MgT25EZXN0cnVjdGlvbiB7CiAgIEZ1bmN0aW9uIGZuXzsKIH07
CiAKKy8vIGtDb25zdEluaXQKKy8vIFRlc3QgZWFybHkgdXNhZ2UuICAoRGVjbGFyYXRpb24gY29t
ZXMgZmlyc3Q7IGRlZmluaXRpb25zIG11c3QgYXBwZWFyIGFmdGVyCisvLyB0aGUgdGVzdCBydW5u
ZXIuKQorZXh0ZXJuIGFic2w6Ok11dGV4IGVhcmx5X2NvbnN0X2luaXRfbXV0ZXg7CisvLyAoTm9y
bWFsbHkgSSdkIHdyaXRlIHRoaXMgK1tdLCB0byBtYWtlIHRoZSBjYXN0LXRvLWZ1bmN0aW9uLXBv
aW50ZXIgZXhwbGljaXQsCisvLyBidXQgaW4gc29tZSBNU1ZDIHNldHVwcyB3ZSBzdXBwb3J0LCBs
YW1iZGFzIHByb3ZpZGUgY29udmVyc2lvbiBvcGVyYXRvcnMgdG8KKy8vIGRpZmZlcmVudCBmbGF2
b3JzIG9mIGZ1bmN0aW9uIHBvaW50ZXJzLCBtYWtpbmcgdGhpcyB0cmljayBhbWJpZ3VvdXMuKQor
T25Db25zdHJ1Y3Rpb24gdGVzdF9lYXJseV9jb25zdF9pbml0KFtdIHsKKyAgUnVuVGVzdHMoJmVh
cmx5X2NvbnN0X2luaXRfbXV0ZXgsIG51bGxwdHIpOworfSk7CisvLyBUaGlzIGRlZmluaXRpb24g
YXBwZWFycyBiZWZvcmUgdGVzdF9lYXJseV9jb25zdF9pbml0LCBidXQgaXQgc2hvdWxkIGJlCisv
LyBpbml0aWFsaXplZCBmaXJzdCAoZHVlIHRvIGNvbnN0YW50IGluaXRpYWxpemF0aW9uKS4gIFRl
c3QgdGhhdCB0aGUgb2JqZWN0CisvLyBhY3R1YWxseSB3b3JrcyB3aGVuIGNvbnN0cnVjdGVkIHRo
aXMgd2F5LgorQUJTTF9DT05TVF9JTklUIGFic2w6Ok11dGV4IGVhcmx5X2NvbnN0X2luaXRfbXV0
ZXgoYWJzbDo6a0NvbnN0SW5pdCk7CisKKy8vIEZ1cnRoZXJtb3JlLCB0ZXN0IHRoYXQgdGhlIGNv
bnN0LWluaXQgYyd0b3IgZG9lc24ndCBzdG9tcCBvdmVyIHRoZSBzdGF0ZSBvZgorLy8gYSBNdXRl
eC4gIFJlYWxseSwgdGhpcyBpcyBhIHRlc3QgdGhhdCB0aGUgcGxhdGZvcm0gdW5kZXIgdGVzdCBj
b3JyZWN0bHkKKy8vIHN1cHBvcnRzIEMrKzExIGNvbnN0YW50IGluaXRpYWxpemF0aW9uLiAgKFRo
ZSBjb25zdGFudC1pbml0aWFsaXphdGlvbgorLy8gY29uc3RydWN0b3JzIG9mIGdsb2JhbHMgImhh
cHBlbiBhdCBsaW5rIHRpbWUiOyBtZW1vcnkgaXMgcHJlLWluaXRpYWxpemVkLAorLy8gYmVmb3Jl
IHRoZSBjb25zdHJ1Y3RvcnMgb2YgZWl0aGVyIGdyYWJfbG9jayBvciBjaGVja19zdGlsbF9sb2Nr
ZWQgYXJlIHJ1bi4pCitleHRlcm4gYWJzbDo6TXV0ZXggY29uc3RfaW5pdF9zYW5pdHlfbXV0ZXg7
CitPbkNvbnN0cnVjdGlvbiBncmFiX2xvY2soW10oKSBBQlNMX05PX1RIUkVBRF9TQUZFVFlfQU5B
TFlTSVMgeworICBjb25zdF9pbml0X3Nhbml0eV9tdXRleC5Mb2NrKCk7Cit9KTsKK0FCU0xfQ09O
U1RfSU5JVCBhYnNsOjpNdXRleCBjb25zdF9pbml0X3Nhbml0eV9tdXRleChhYnNsOjprQ29uc3RJ
bml0KTsKK09uQ29uc3RydWN0aW9uIGNoZWNrX3N0aWxsX2xvY2tlZChbXSgpIEFCU0xfTk9fVEhS
RUFEX1NBRkVUWV9BTkFMWVNJUyB7CisgIGNvbnN0X2luaXRfc2FuaXR5X211dGV4LkFzc2VydEhl
bGQoKTsKKyAgY29uc3RfaW5pdF9zYW5pdHlfbXV0ZXguVW5sb2NrKCk7Cit9KTsKKworLy8gVGVz
dCBzaHV0ZG93biB1c2FnZS4gIChEZWNsYXJhdGlvbnMgY29tZSBmaXJzdDsgZGVmaW5pdGlvbnMg
bXVzdCBhcHBlYXIgYWZ0ZXIKKy8vIHRoZSB0ZXN0IHJ1bm5lci4pCitleHRlcm4gYWJzbDo6TXV0
ZXggbGF0ZV9jb25zdF9pbml0X211dGV4OworLy8gT25EZXN0cnVjdGlvbiBpcyBiZWluZyB1c2Vk
IGhlcmUgYXMgYSBnbG9iYWwgdmFyaWFibGUsIGV2ZW4gdGhvdWdoIGl0IGhhcyBhCisvLyBub24t
dHJpdmlhbCBkZXN0cnVjdG9yLiAgVGhpcyBpcyBhZ2FpbnN0IHRoZSBzdHlsZSBndWlkZS4gIFdl
J3JlIHZpb2xhdGluZworLy8gdGhhdCBydWxlIGhlcmUgdG8gY2hlY2sgdGhhdCB0aGUgZXhjZXB0
aW9uIHdlIGFsbG93IGZvciBrQ29uc3RJbml0IGlzIHNhZmUuCisvLyBOT0xJTlRORVhUTElORQor
T25EZXN0cnVjdGlvbiB0ZXN0X2xhdGVfY29uc3RfaW5pdChbXSB7CisgIFJ1blRlc3RzKCZsYXRl
X2NvbnN0X2luaXRfbXV0ZXgsIG51bGxwdHIpOworfSk7CitBQlNMX0NPTlNUX0lOSVQgYWJzbDo6
TXV0ZXggbGF0ZV9jb25zdF9pbml0X211dGV4KGFic2w6OmtDb25zdEluaXQpOworCiB9ICAvLyBu
YW1lc3BhY2UKIAogaW50IG1haW4oKSB7CiAgIFRlc3RMb2NhbHMoKTsKKyAgVGVzdENvbnN0SW5p
dEdsb2JhbCgpOwogICAvLyBFeHBsaWNpdGx5IGNhbGwgZXhpdCgwKSBoZXJlLCB0byBtYWtlIGl0
IGNsZWFyIHRoYXQgd2UgaW50ZW5kIGZvciB0aGUKICAgLy8gYWJvdmUgZ2xvYmFsIG9iamVjdCBk
ZXN0cnVjdG9ycyB0byBydW4uCiAgIHN0ZDo6ZXhpdCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9tdXRleC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5jYwpp
bmRleCA5ZDU5YTc5ZDkyZC4uYWNhYzc0MDE2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9u
aXphdGlvbi9tdXRleC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTExOCw2ICsxMTgsMTAg
QEAgQUJTTF9DT05TVF9JTklUIGFic2w6OmJhc2VfaW50ZXJuYWw6OkF0b21pY0hvb2s8CiAKIH0g
IC8vIG5hbWVzcGFjZQogCitzdGF0aWMgaW5saW5lIGJvb2wgRXZhbENvbmRpdGlvbkFubm90YXRl
ZChjb25zdCBDb25kaXRpb24gKmNvbmQsIE11dGV4ICptdSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbG9ja2luZywgYm9vbCB0cnlsb2NrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZWFkX2xvY2spOworCiB2
b2lkIFJlZ2lzdGVyTXV0ZXhQcm9maWxlcih2b2lkICgqZm4pKGludDY0X3Qgd2FpdF90aW1lc3Rh
bXApKSB7CiAgIHN1Ym1pdF9wcm9maWxlX2RhdGEuU3RvcmUoZm4pOwogfQpAQCAtMTUwLDcgKzE1
NCw3IEBAIHN0YXRpYyBpbnQgRGVsYXkoaW50MzJfdCBjLCBEZWxheU1vZGUgbW9kZSkgewogICBp
ZiAoYyA8IGxpbWl0KSB7CiAgICAgYysrOyAgICAgICAgICAgICAgIC8vIHNwaW4KICAgfSBlbHNl
IHsKLSAgICBBQlNMX1RTQU5fTVVURVhfUFJFX0RJVkVSVCgwLCAwKTsKKyAgICBBQlNMX1RTQU5f
TVVURVhfUFJFX0RJVkVSVChudWxscHRyLCAwKTsKICAgICBpZiAoYyA9PSBsaW1pdCkgeyAgLy8g
eWllbGQgb25jZQogICAgICAgQWJzbEludGVybmFsTXV0ZXhZaWVsZCgpOwogICAgICAgYysrOwpA
QCAtMTU4LDcgKzE2Miw3IEBAIHN0YXRpYyBpbnQgRGVsYXkoaW50MzJfdCBjLCBEZWxheU1vZGUg
bW9kZSkgewogICAgICAgYWJzbDo6U2xlZXBGb3IoYWJzbDo6TWljcm9zZWNvbmRzKDEwKSk7CiAg
ICAgICBjID0gMDsKICAgICB9Ci0gICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfRElWRVJUKDAsIDAp
OworICAgIEFCU0xfVFNBTl9NVVRFWF9QT1NUX0RJVkVSVChudWxscHRyLCAwKTsKICAgfQogICBy
ZXR1cm4gKGMpOwogfQpAQCAtMjAzLDggKzIwNyw4IEBAIHN0YXRpYyBhYnNsOjpiYXNlX2ludGVy
bmFsOjpTcGluTG9jayBkZWFkbG9ja19ncmFwaF9tdSgKICAgICBhYnNsOjpiYXNlX2ludGVybmFs
OjprTGlua2VySW5pdGlhbGl6ZWQpOwogCiAvLyBncmFwaCB1c2VkIHRvIGRldGVjdCBkZWFkbG9j
a3MuCi1zdGF0aWMgR3JhcGhDeWNsZXMgKmRlYWRsb2NrX2dyYXBoIEdVQVJERURfQlkoZGVhZGxv
Y2tfZ3JhcGhfbXUpCi0gICAgUFRfR1VBUkRFRF9CWShkZWFkbG9ja19ncmFwaF9tdSk7CitzdGF0
aWMgR3JhcGhDeWNsZXMgKmRlYWRsb2NrX2dyYXBoIEFCU0xfR1VBUkRFRF9CWShkZWFkbG9ja19n
cmFwaF9tdSkKKyAgICBBQlNMX1BUX0dVQVJERURfQlkoZGVhZGxvY2tfZ3JhcGhfbXUpOwogCiAv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogLy8gQW4gZXZlbnQgbWVjaGFuaXNtIGZvciBkZWJ1Z2dpbmcgbXV0ZXggdXNl
LgpAQCAtMjMzLDE1ICsyMzcsMTQgQEAgZW51bSB7ICAgICAgIC8vIE11dGV4IGFuZCBDb25kVmFy
IGV2ZW50cyBwYXNzZWQgYXMgImV2IiB0byBQb3N0U3luY2hFdmVudAogICBTWU5DSF9FVl9TSUdO
QUxBTEwsCiB9OwogCi1lbnVtIHsgICAgICAgICAgICAgICAgIC8vIEV2ZW50IGZsYWdzCi0gIFNZ
TkNIX0ZfUiA9IDB4MDEsICAgIC8vIHJlYWRlciBldmVudAotICBTWU5DSF9GX0xDSyA9IDB4MDIs
ICAvLyBQb3N0U3luY2hFdmVudCBjYWxsZWQgd2l0aCBtdXRleCBoZWxkCi0gIFNZTkNIX0ZfQUNR
ID0gMHgwNCwgIC8vIGV2ZW50IGlzIGFuIGFjcXVpcmUKK2VudW0geyAgICAgICAgICAgICAgICAg
ICAgLy8gRXZlbnQgZmxhZ3MKKyAgU1lOQ0hfRl9SID0gMHgwMSwgICAgICAgLy8gcmVhZGVyIGV2
ZW50CisgIFNZTkNIX0ZfTENLID0gMHgwMiwgICAgIC8vIFBvc3RTeW5jaEV2ZW50IGNhbGxlZCB3
aXRoIG11dGV4IGhlbGQKKyAgU1lOQ0hfRl9UUlkgPSAweDA0LCAgICAgLy8gVHJ5TG9jayBvciBS
ZWFkZXJUcnlMb2NrCisgIFNZTkNIX0ZfVU5MT0NLID0gMHgwOCwgIC8vIFVubG9jayBvciBSZWFk
ZXJVbmxvY2sKIAogICBTWU5DSF9GX0xDS19XID0gU1lOQ0hfRl9MQ0ssCiAgIFNZTkNIX0ZfTENL
X1IgPSBTWU5DSF9GX0xDSyB8IFNZTkNIX0ZfUiwKLSAgU1lOQ0hfRl9BQ1FfVyA9IFNZTkNIX0Zf
QUNRLAotICBTWU5DSF9GX0FDUV9SID0gU1lOQ0hfRl9BQ1EgfCBTWU5DSF9GX1IsCiB9OwogfSAg
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQogCkBAIC0yNTAsMjEgKzI1MywyMiBAQCBzdGF0aWMgY29u
c3Qgc3RydWN0IHsKICAgaW50IGZsYWdzOwogICBjb25zdCBjaGFyICptc2c7CiB9IGV2ZW50X3By
b3BlcnRpZXNbXSA9IHsKLSAgeyBTWU5DSF9GX0xDS19XfFNZTkNIX0ZfQUNRX1csICJUcnlMb2Nr
IHN1Y2NlZWRlZCAiIH0sCi0gIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJ5TG9j
ayBmYWlsZWQgIiB9LAotICB7IFNZTkNIX0ZfTENLX1J8U1lOQ0hfRl9BQ1FfUiwgIlJlYWRlclRy
eUxvY2sgc3VjY2VlZGVkICIgfSwKLSAgeyAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICJS
ZWFkZXJUcnlMb2NrIGZhaWxlZCAiIH0sCi0gIHsgICAgICAgICAgICAgICBTWU5DSF9GX0FDUV9X
LCAiTG9jayBibG9ja2luZyAiIH0sCi0gIHsgU1lOQ0hfRl9MQ0tfVywgICAgICAgICAgICAgICAi
TG9jayByZXR1cm5pbmcgIiB9LAotICB7ICAgICAgICAgICAgICAgU1lOQ0hfRl9BQ1FfUiwgIlJl
YWRlckxvY2sgYmxvY2tpbmcgIiB9LAotICB7IFNZTkNIX0ZfTENLX1IsICAgICAgICAgICAgICAg
IlJlYWRlckxvY2sgcmV0dXJuaW5nICIgfSwKLSAgeyBTWU5DSF9GX0xDS19XLCAgICAgICAgICAg
ICAgICJVbmxvY2sgIiB9LAotICB7IFNZTkNIX0ZfTENLX1IsICAgICAgICAgICAgICAgIlJlYWRl
clVubG9jayAiIH0sCi0gIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2FpdCBvbiAi
IH0sCi0gIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2FpdCB1bmJsb2NrZWQgIiB9
LAotICB7IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNpZ25hbCBvbiAiIH0sCi0gIHsg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2lnbmFsQWxsIG9uICIgfSwKKyAgICB7U1lO
Q0hfRl9MQ0tfVyB8IFNZTkNIX0ZfVFJZLCAiVHJ5TG9jayBzdWNjZWVkZWQgIn0sCisgICAgezAs
ICJUcnlMb2NrIGZhaWxlZCAifSwKKyAgICB7U1lOQ0hfRl9MQ0tfUiB8IFNZTkNIX0ZfVFJZLCAi
UmVhZGVyVHJ5TG9jayBzdWNjZWVkZWQgIn0sCisgICAgezAsICJSZWFkZXJUcnlMb2NrIGZhaWxl
ZCAifSwKKyAgICB7MCwgIkxvY2sgYmxvY2tpbmcgIn0sCisgICAge1NZTkNIX0ZfTENLX1csICJM
b2NrIHJldHVybmluZyAifSwKKyAgICB7MCwgIlJlYWRlckxvY2sgYmxvY2tpbmcgIn0sCisgICAg
e1NZTkNIX0ZfTENLX1IsICJSZWFkZXJMb2NrIHJldHVybmluZyAifSwKKyAgICB7U1lOQ0hfRl9M
Q0tfVyB8IFNZTkNIX0ZfVU5MT0NLLCAiVW5sb2NrICJ9LAorICAgIHtTWU5DSF9GX0xDS19SIHwg
U1lOQ0hfRl9VTkxPQ0ssICJSZWFkZXJVbmxvY2sgIn0sCisgICAgezAsICJXYWl0IG9uICJ9LAor
ICAgIHswLCAiV2FpdCB1bmJsb2NrZWQgIn0sCisgICAgezAsICJTaWduYWwgb24gIn0sCisgICAg
ezAsICJTaWduYWxBbGwgb24gIn0sCiB9OworCiBzdGF0aWMgYWJzbDo6YmFzZV9pbnRlcm5hbDo6
U3BpbkxvY2sgc3luY2hfZXZlbnRfbXUoCiAgICAgYWJzbDo6YmFzZV9pbnRlcm5hbDo6a0xpbmtl
ckluaXRpYWxpemVkKTsKIC8vIHByb3RlY3RzIHN5bmNoX2V2ZW50CkBAIC0yNzUsMTAgKzI3OSwx
MCBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga05TeW5jaEV2ZW50ID0gMTAzMTsKIAogc3RhdGlj
IHN0cnVjdCBTeW5jaEV2ZW50IHsgICAgIC8vIHRoaXMgaXMgYSB0cml2aWFsIGhhc2ggdGFibGUg
Zm9yIHRoZSBldmVudHMKICAgLy8gc3RydWN0IGlzIGZyZWVkIHdoZW4gcmVmY291bnQgcmVhY2hl
cyAwCi0gIGludCByZWZjb3VudCBHVUFSREVEX0JZKHN5bmNoX2V2ZW50X211KTsKKyAgaW50IHJl
ZmNvdW50IEFCU0xfR1VBUkRFRF9CWShzeW5jaF9ldmVudF9tdSk7CiAKICAgLy8gYnVja2V0cyBo
YXZlIGxpbmVhciwgMC10ZXJtaW5hdGVkICBjaGFpbnMKLSAgU3luY2hFdmVudCAqbmV4dCBHVUFS
REVEX0JZKHN5bmNoX2V2ZW50X211KTsKKyAgU3luY2hFdmVudCAqbmV4dCBBQlNMX0dVQVJERURf
Qlkoc3luY2hfZXZlbnRfbXUpOwogCiAgIC8vIENvbnN0YW50IGFmdGVyIGluaXRpYWxpemF0aW9u
CiAgIHVpbnRwdHJfdCBtYXNrZWRfYWRkcjsgIC8vIG9iamVjdCBhdCB0aGlzIGFkZHJlc3MgaXMg
Y2FsbGVkICJuYW1lIgpAQCAtMjkyLDcgKzI5Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgU3luY2hFdmVu
dCB7ICAgICAvLyB0aGlzIGlzIGEgdHJpdmlhbCBoYXNoIHRhYmxlIGZvciB0aGUgZXZlbnRzCiAK
ICAgLy8gQ29uc3RhbnQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24KICAgY2hhciBuYW1lWzFdOyAgICAg
ICAgIC8vIGFjdHVhbGx5IGxvbmdlci0tLW51bGwtdGVybWluYXRlZCBzdGQ6OnN0cmluZwotfSAq
c3luY2hfZXZlbnRba05TeW5jaEV2ZW50XSBHVUFSREVEX0JZKHN5bmNoX2V2ZW50X211KTsKK30g
KnN5bmNoX2V2ZW50W2tOU3luY2hFdmVudF0gQUJTTF9HVUFSREVEX0JZKHN5bmNoX2V2ZW50X211
KTsKIAogLy8gRW5zdXJlIHRoYXQgdGhlIG9iamVjdCBhdCAiYWRkciIgaGFzIGEgU3luY2hFdmVu
dCBzdHJ1Y3QgYXNzb2NpYXRlZCB3aXRoIGl0LAogLy8gc2V0ICJiaXRzIiBpbiB0aGUgd29yZCB0
aGVyZSAod2FpdGluZyB1bnRpbCBsb2NrYml0IGlzIGNsZWFyIGJlZm9yZSBkb2luZwpAQCAtNDE0
LDkgKzQxOCwyNiBAQCBzdGF0aWMgdm9pZCBQb3N0U3luY2hFdmVudCh2b2lkICpvYmosIGludCBl
dikgewogICAgIEFCU0xfUkFXX0xPRyhJTkZPLCAiJXMlcCAlcyAlcyIsIGV2ZW50X3Byb3BlcnRp
ZXNbZXZdLm1zZywgb2JqLAogICAgICAgICAgICAgICAgICAoZSA9PSBudWxscHRyID8gIiIgOiBl
LT5uYW1lKSwgYnVmZmVyKTsKICAgfQotICBpZiAoKGV2ZW50X3Byb3BlcnRpZXNbZXZdLmZsYWdz
ICYgU1lOQ0hfRl9MQ0spICE9IDAgJiYgZSAhPSBudWxscHRyICYmCi0gICAgICBlLT5pbnZhcmlh
bnQgIT0gbnVsbHB0cikgewotICAgICgqZS0+aW52YXJpYW50KShlLT5hcmcpOworICBjb25zdCBp
bnQgZmxhZ3MgPSBldmVudF9wcm9wZXJ0aWVzW2V2XS5mbGFnczsKKyAgaWYgKChmbGFncyAmIFNZ
TkNIX0ZfTENLKSAhPSAwICYmIGUgIT0gbnVsbHB0ciAmJiBlLT5pbnZhcmlhbnQgIT0gbnVsbHB0
cikgeworICAgIC8vIENhbGxpbmcgdGhlIGludmFyaWFudCBhcyBpcyBjYXVzZXMgcHJvYmxlbXMg
dW5kZXIgVGhyZWFkU2FuaXRpemVyLgorICAgIC8vIFdlIGFyZSBjdXJyZW50bHkgaW5zaWRlIG9m
IE11dGV4IExvY2svVW5sb2NrIGFuZCBhcmUgaWdub3JpbmcgYWxsCisgICAgLy8gbWVtb3J5IGFj
Y2Vzc2VzIGFuZCBzeW5jaHJvbml6YXRpb24uIElmIHRoZSBpbnZhcmlhbnQgdHJhbnNpdGl2ZWx5
CisgICAgLy8gc3luY2hyb25pemVzIHNvbWV0aGluZyBlbHNlIGFuZCB3ZSBpZ25vcmUgdGhlIHN5
bmNocm9uaXphdGlvbiwgd2Ugd2lsbAorICAgIC8vIGdldCBmYWxzZSBwb3NpdGl2ZSByYWNlIHJl
cG9ydHMgbGF0ZXIuCisgICAgLy8gUmV1c2UgRXZhbENvbmRpdGlvbkFubm90YXRlZCB0byBwcm9w
ZXJseSBjYWxsIGludG8gdXNlciBjb2RlLgorICAgIHN0cnVjdCBsb2NhbCB7CisgICAgICBzdGF0
aWMgYm9vbCBwcmVkKFN5bmNoRXZlbnQgKmV2KSB7CisgICAgICAgICgqZXYtPmludmFyaWFudCko
ZXYtPmFyZyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9OworICAgIENv
bmRpdGlvbiBjb25kKCZsb2NhbDo6cHJlZCwgZSk7CisgICAgTXV0ZXggKm11ID0gc3RhdGljX2Nh
c3Q8TXV0ZXggKj4ob2JqKTsKKyAgICBjb25zdCBib29sIGxvY2tpbmcgPSAoZmxhZ3MgJiBTWU5D
SF9GX1VOTE9DSykgPT0gMDsKKyAgICBjb25zdCBib29sIHRyeWxvY2sgPSAoZmxhZ3MgJiBTWU5D
SF9GX1RSWSkgIT0gMDsKKyAgICBjb25zdCBib29sIHJlYWRfbG9jayA9IChmbGFncyAmIFNZTkNI
X0ZfUikgIT0gMDsKKyAgICBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKCZjb25kLCBtdSwgbG9ja2lu
ZywgdHJ5bG9jaywgcmVhZF9sb2NrKTsKICAgfQogICBVbnJlZlN5bmNoRXZlbnQoZSk7CiB9CkBA
IC04ODAsMTEgKzkwMSwxNSBAQCBzdGF0aWMgUGVyVGhyZWFkU3luY2ggKkVucXVldWUoUGVyVGhy
ZWFkU3luY2ggKmhlYWQsCiAgICAgICAvLyBiYXNlX2ludGVybmFsOjpDeWNsZUNsb2NrOjpOb3co
KSBpcyAwLjUlLgogICAgICAgaW50IHBvbGljeTsKICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBw
YXJhbTsKLSAgICAgIHB0aHJlYWRfZ2V0c2NoZWRwYXJhbShwdGhyZWFkX3NlbGYoKSwgJnBvbGlj
eSwgJnBhcmFtKTsKLSAgICAgIHMtPnByaW9yaXR5ID0gcGFyYW0uc2NoZWRfcHJpb3JpdHk7Ci0g
ICAgICBzLT5uZXh0X3ByaW9yaXR5X3JlYWRfY3ljbGVzID0KLSAgICAgICAgICBub3dfY3ljbGVz
ICsKLSAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ2NF90PihiYXNlX2ludGVybmFsOjpDeWNsZUNs
b2NrOjpGcmVxdWVuY3koKSk7CisgICAgICBjb25zdCBpbnQgZXJyID0gcHRocmVhZF9nZXRzY2hl
ZHBhcmFtKHB0aHJlYWRfc2VsZigpLCAmcG9saWN5LCAmcGFyYW0pOworICAgICAgaWYgKGVyciAh
PSAwKSB7CisgICAgICAgIEFCU0xfUkFXX0xPRyhFUlJPUiwgInB0aHJlYWRfZ2V0c2NoZWRwYXJh
bSBmYWlsZWQ6ICVkIiwgZXJyKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHMtPnByaW9yaXR5
ID0gcGFyYW0uc2NoZWRfcHJpb3JpdHk7CisgICAgICAgIHMtPm5leHRfcHJpb3JpdHlfcmVhZF9j
eWNsZXMgPQorICAgICAgICAgICAgbm93X2N5Y2xlcyArCisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihiYXNlX2ludGVybmFsOjpDeWNsZUNsb2NrOjpGcmVxdWVuY3koKSk7CisgICAg
ICB9CiAgICAgfQogICAgIGlmIChzLT5wcmlvcml0eSA+IGhlYWQtPnByaW9yaXR5KSB7ICAvLyBz
J3MgcHJpb3JpdHkgaXMgYWJvdmUgaGVhZCdzCiAgICAgICAvLyB0cnkgdG8gcHV0IHMgaW4gcHJp
b3JpdHktZmlmbyBvcmRlciwgb3IgZmFpbGluZyB0aGF0IGF0IHRoZSBmcm9udC4KQEAgLTEwNzks
NyArMTEwNCw3IEBAIHZvaWQgTXV0ZXg6OlRyeVJlbW92ZShQZXJUaHJlYWRTeW5jaCAqcykgewog
Ly8gaWYgdGhlIHdhaXQgZXh0ZW5kcyBwYXN0IHRoZSBhYnNvbHV0ZSB0aW1lIHNwZWNpZmllZCwg
ZXZlbiBpZiAicyIgaXMgc3RpbGwKIC8vIG9uIHRoZSBtdXRleCBxdWV1ZS4gIEluIHRoaXMgY2Fz
ZSwgcmVtb3ZlICJzIiBmcm9tIHRoZSBxdWV1ZSBhbmQgcmV0dXJuCiAvLyB0cnVlLCBvdGhlcndp
c2UgcmV0dXJuIGZhbHNlLgotdm9pZCBNdXRleDo6QmxvY2soUGVyVGhyZWFkU3luY2ggKnMpIHsK
K0FCU0xfWFJBWV9MT0dfQVJHUygxKSB2b2lkIE11dGV4OjpCbG9jayhQZXJUaHJlYWRTeW5jaCAq
cykgewogICB3aGlsZSAocy0+c3RhdGUubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSA9
PSBQZXJUaHJlYWRTeW5jaDo6a1F1ZXVlZCkgewogICAgIGlmICghRGVjcmVtZW50U3luY2hTZW0o
dGhpcywgcywgcy0+d2FpdHAtPnRpbWVvdXQpKSB7CiAgICAgICAvLyBBZnRlciBhIHRpbWVvdXQs
IHdlIGdvIGludG8gYSBzcGluIGxvb3AgdW50aWwgd2UgcmVtb3ZlIG91cnNlbHZlcwpAQCAtMTEx
OCw3ICsxMTQzLDcgQEAgUGVyVGhyZWFkU3luY2ggKk11dGV4OjpXYWtldXAoUGVyVGhyZWFkU3lu
Y2ggKncpIHsKIH0KIAogc3RhdGljIEdyYXBoSWQgR2V0R3JhcGhJZExvY2tlZChNdXRleCAqbXUp
Ci0gICAgRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGRlYWRsb2NrX2dyYXBoX211KSB7CisgICAg
QUJTTF9FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoZGVhZGxvY2tfZ3JhcGhfbXUpIHsKICAgaWYg
KCFkZWFkbG9ja19ncmFwaCkgeyAgLy8gKHJlKWNyZWF0ZSB0aGUgZGVhZGxvY2sgZ3JhcGguCiAg
ICAgZGVhZGxvY2tfZ3JhcGggPQogICAgICAgICBuZXcgKGJhc2VfaW50ZXJuYWw6Okxvd0xldmVs
QWxsb2M6OkFsbG9jKHNpemVvZigqZGVhZGxvY2tfZ3JhcGgpKSkKQEAgLTExMjcsNyArMTE1Miw3
IEBAIHN0YXRpYyBHcmFwaElkIEdldEdyYXBoSWRMb2NrZWQoTXV0ZXggKm11KQogICByZXR1cm4g
ZGVhZGxvY2tfZ3JhcGgtPkdldElkKG11KTsKIH0KIAotc3RhdGljIEdyYXBoSWQgR2V0R3JhcGhJ
ZChNdXRleCAqbXUpIExPQ0tTX0VYQ0xVREVEKGRlYWRsb2NrX2dyYXBoX211KSB7CitzdGF0aWMg
R3JhcGhJZCBHZXRHcmFwaElkKE11dGV4ICptdSkgQUJTTF9MT0NLU19FWENMVURFRChkZWFkbG9j
a19ncmFwaF9tdSkgewogICBkZWFkbG9ja19ncmFwaF9tdS5Mb2NrKCk7CiAgIEdyYXBoSWQgaWQg
PSBHZXRHcmFwaElkTG9ja2VkKG11KTsKICAgZGVhZGxvY2tfZ3JhcGhfbXUuVW5sb2NrKCk7CkBA
IC0xNTUyLDcgKzE1NzcsNyBAQCBib29sIE11dGV4OjpBd2FpdENvbW1vbihjb25zdCBDb25kaXRp
b24gJmNvbmQsIEtlcm5lbFRpbWVvdXQgdCkgewogICBBQlNMX1RTQU5fTVVURVhfUFJFX0xPQ0so
dGhpcywgVHNhbkZsYWdzKGhvdykpOwogICB0aGlzLT5Mb2NrU2xvd0xvb3AoJndhaXRwLCBmbGFn
cyk7CiAgIGJvb2wgcmVzID0gd2FpdHAuY29uZCAhPSBudWxscHRyIHx8ICAvLyA9PiBjb25kIGtu
b3duIHRydWUgZnJvbSBMb2NrU2xvd0xvb3AKLSAgICAgICAgICAgICBjb25kLkV2YWwoKTsKKyAg
ICAgICAgICAgICBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKCZjb25kLCB0aGlzLCB0cnVlLCBmYWxz
ZSwgaG93ID09IGtTaGFyZWQpOwogICBBQlNMX1RTQU5fTVVURVhfUE9TVF9MT0NLKHRoaXMsIFRz
YW5GbGFncyhob3cpLCAwKTsKICAgcmV0dXJuIHJlczsKIH0KQEAgLTE3MzAsMTIgKzE3NTUsMTcg
QEAgdm9pZCBNdXRleDo6TG9ja1Nsb3coTXVIb3cgaG93LCBjb25zdCBDb25kaXRpb24gKmNvbmQs
IGludCBmbGFncykgewogCiAvLyBDb21wdXRlIGNvbmQtPkV2YWwoKSBhbmQgdGVsbCByYWNlIGRl
dGVjdG9ycyB0aGF0IHdlIGRvIGl0IHVuZGVyIG11dGV4IG11Lgogc3RhdGljIGlubGluZSBib29s
IEV2YWxDb25kaXRpb25Bbm5vdGF0ZWQoY29uc3QgQ29uZGl0aW9uICpjb25kLCBNdXRleCAqbXUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvY2tpbmcs
IE11dGV4OjpNdUhvdyBob3cpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgbG9ja2luZywgYm9vbCB0cnlsb2NrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCByZWFkX2xvY2spIHsKICAgLy8gRGVsaWNhdGUgYW5u
b3RhdGlvbiBkYW5jZS4KICAgLy8gV2UgYXJlIGN1cnJlbnRseSBpbnNpZGUgb2YgcmVhZC93cml0
ZSBsb2NrL3VubG9jayBvcGVyYXRpb24uCiAgIC8vIEFsbCBtZW1vcnkgYWNjZXNzZXMgYXJlIGln
bm9yZWQgaW5zaWRlIG9mIG11dGV4IG9wZXJhdGlvbnMgKyBmb3IgdW5sb2NrCiAgIC8vIG9wZXJh
dGlvbiB0c2FuIGNvbnNpZGVycyB0aGF0IHdlJ3ZlIGFscmVhZHkgcmVsZWFzZWQgdGhlIG11dGV4
LgogICBib29sIHJlcyA9IGZhbHNlOworI2lmZGVmIFRIUkVBRF9TQU5JVElaRVIKKyAgY29uc3Qg
aW50IGZsYWdzID0gcmVhZF9sb2NrID8gX190c2FuX211dGV4X3JlYWRfbG9jayA6IDA7CisgIGNv
bnN0IGludCB0cnlmbGFncyA9IGZsYWdzIHwgKHRyeWxvY2sgPyBfX3RzYW5fbXV0ZXhfdHJ5X2xv
Y2sgOiAwKTsKKyNlbmRpZgogICBpZiAobG9ja2luZykgewogICAgIC8vIEZvciBsb2NrIHdlIHBy
ZXRlbmQgdGhhdCB3ZSBoYXZlIGZpbmlzaGVkIHRoZSBvcGVyYXRpb24sCiAgICAgLy8gZXZhbHVh
dGUgdGhlIHByZWRpY2F0ZSwgdGhlbiB1bmxvY2sgdGhlIG11dGV4IGFuZCBzdGFydCBsb2NraW5n
IGl0IGFnYWluCkBAIC0xNzQzLDI0ICsxNzczLDI2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBFdmFs
Q29uZGl0aW9uQW5ub3RhdGVkKGNvbnN0IENvbmRpdGlvbiAqY29uZCwgTXV0ZXggKm11LAogICAg
IC8vIE5vdGU6IHdlIGNhbid0IHNpbXBseSBkbyBQT1NUX0xPQ0ssIEV2YWwsIFBSRV9MT0NLLCBi
ZWNhdXNlIHRoZW4gdHNhbgogICAgIC8vIHdpbGwgdGhpbmsgdGhlIGxvY2sgYWNxdWlzaXRpb24g
aXMgcmVjdXJzaXZlIHdoaWNoIHdpbGwgdHJpZ2dlcgogICAgIC8vIGRlYWRsb2NrIGRldGVjdG9y
LgotICAgIEFCU0xfVFNBTl9NVVRFWF9QT1NUX0xPQ0sobXUsIFRzYW5GbGFncyhob3cpLCAwKTsK
KyAgICBBQlNMX1RTQU5fTVVURVhfUE9TVF9MT0NLKG11LCB0cnlmbGFncywgMCk7CiAgICAgcmVz
ID0gY29uZC0+RXZhbCgpOwotICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfVU5MT0NLKG11LCBUc2Fu
RmxhZ3MoaG93KSk7Ci0gICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfVU5MT0NLKG11LCBUc2FuRmxh
Z3MoaG93KSk7Ci0gICAgQUJTTF9UU0FOX01VVEVYX1BSRV9MT0NLKG11LCBUc2FuRmxhZ3MoaG93
KSk7CisgICAgLy8gVGhlcmUgaXMgbm8gInRyeSIgdmVyc2lvbiBvZiBVbmxvY2ssIHNvIHVzZSBm
bGFncyBpbnN0ZWFkIG9mIHRyeWZsYWdzLgorICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfVU5MT0NL
KG11LCBmbGFncyk7CisgICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfVU5MT0NLKG11LCBmbGFncyk7
CisgICAgQUJTTF9UU0FOX01VVEVYX1BSRV9MT0NLKG11LCB0cnlmbGFncyk7CiAgIH0gZWxzZSB7
CiAgICAgLy8gU2ltaWxhcmx5LCBmb3IgdW5sb2NrIHdlIHByZXRlbmQgdGhhdCB3ZSBoYXZlIHVu
bG9ja2VkIHRoZSBtdXRleCwKICAgICAvLyBsb2NrIHRoZSBtdXRleCwgZXZhbHVhdGUgdGhlIHBy
ZWRpY2F0ZSwgYW5kIHN0YXJ0IHVubG9ja2luZyBpdCBhZ2FpbgogICAgIC8vIHRvIG1hdGNoIHRo
ZSBhbm5vdGF0aW9uIGF0IHRoZSBlbmQgb2Ygb3V0ZXIgdW5sb2NrIG9wZXJhdGlvbi4KLSAgICBB
QlNMX1RTQU5fTVVURVhfUE9TVF9VTkxPQ0sobXUsIFRzYW5GbGFncyhob3cpKTsKLSAgICBBQlNM
X1RTQU5fTVVURVhfUFJFX0xPQ0sobXUsIFRzYW5GbGFncyhob3cpKTsKLSAgICBBQlNMX1RTQU5f
TVVURVhfUE9TVF9MT0NLKG11LCBUc2FuRmxhZ3MoaG93KSwgMCk7CisgICAgQUJTTF9UU0FOX01V
VEVYX1BPU1RfVU5MT0NLKG11LCBmbGFncyk7CisgICAgQUJTTF9UU0FOX01VVEVYX1BSRV9MT0NL
KG11LCBmbGFncyk7CisgICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfTE9DSyhtdSwgZmxhZ3MsIDAp
OwogICAgIHJlcyA9IGNvbmQtPkV2YWwoKTsKLSAgICBBQlNMX1RTQU5fTVVURVhfUFJFX1VOTE9D
SyhtdSwgVHNhbkZsYWdzKGhvdykpOworICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfVU5MT0NLKG11
LCBmbGFncyk7CiAgIH0KICAgLy8gUHJldmVudCB1bnVzZWQgcGFyYW0gd2FybmluZ3MgaW4gbm9u
LVRTQU4gYnVpbGRzLgogICBzdGF0aWNfY2FzdDx2b2lkPihtdSk7Ci0gIHN0YXRpY19jYXN0PHZv
aWQ+KGhvdyk7CisgIHN0YXRpY19jYXN0PHZvaWQ+KHRyeWxvY2spOworICBzdGF0aWNfY2FzdDx2
b2lkPihyZWFkX2xvY2spOwogICByZXR1cm4gcmVzOwogfQogCkBAIC0xODA2LDcgKzE4MzgsOCBA
QCBib29sIE11dGV4OjpMb2NrU2xvd1dpdGhEZWFkbGluZShNdUhvdyBob3csIGNvbnN0IENvbmRp
dGlvbiAqY29uZCwKICAgICAgICAgICB2LCAoaG93LT5mYXN0X29yIHwgKHYgJiB6YXBfZGVzaWdf
d2FrZXJbZmxhZ3MgJiBrTXVIYXNCbG9ja2VkXSkpICsKICAgICAgICAgICAgICAgICAgaG93LT5m
YXN0X2FkZCwKICAgICAgICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlLCBzdGQ6Om1lbW9y
eV9vcmRlcl9yZWxheGVkKSkgewotICAgIGlmIChjb25kID09IG51bGxwdHIgfHwgRXZhbENvbmRp
dGlvbkFubm90YXRlZChjb25kLCB0aGlzLCB0cnVlLCBob3cpKSB7CisgICAgaWYgKGNvbmQgPT0g
bnVsbHB0ciB8fAorICAgICAgICBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKGNvbmQsIHRoaXMsIHRy
dWUsIGZhbHNlLCBob3cgPT0ga1NoYXJlZCkpIHsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICB1bmxvY2sgPSB0cnVlOwpAQCAtMTgyNCw3ICsxODU3LDggQEAgYm9vbCBNdXRleDo6TG9j
a1Nsb3dXaXRoRGVhZGxpbmUoTXVIb3cgaG93LCBjb25zdCBDb25kaXRpb24gKmNvbmQsCiAgIH0K
ICAgdGhpcy0+TG9ja1Nsb3dMb29wKCZ3YWl0cCwgZmxhZ3MpOwogICByZXR1cm4gd2FpdHAuY29u
ZCAhPSBudWxscHRyIHx8ICAvLyA9PiBjb25kIGtub3duIHRydWUgZnJvbSBMb2NrU2xvd0xvb3AK
LSAgICAgICAgIGNvbmQgPT0gbnVsbHB0ciB8fCBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKGNvbmQs
IHRoaXMsIHRydWUsIGhvdyk7CisgICAgICAgICBjb25kID09IG51bGxwdHIgfHwKKyAgICAgICAg
IEV2YWxDb25kaXRpb25Bbm5vdGF0ZWQoY29uZCwgdGhpcywgdHJ1ZSwgZmFsc2UsIGhvdyA9PSBr
U2hhcmVkKTsKIH0KIAogLy8gUkFXX0NIRUNLX0ZNVCgpIHRha2VzIGEgY29uZGl0aW9uLCBhIHBy
aW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5nLCBhbmQKQEAgLTE4NDEsNyArMTg3NSw3IEBAIHN0YXRp
YyB2b2lkIENoZWNrRm9yTXV0ZXhDb3JydXB0aW9uKGludHB0cl90IHYsIGNvbnN0IGNoYXIqIGxh
YmVsKSB7CiAgIC8vIFRlc3QgZm9yIGVpdGhlciBvZiB0d28gc2l0dWF0aW9ucyB0aGF0IHNob3Vs
ZCBub3Qgb2NjdXIgaW4gdjoKICAgLy8gICBrTXVXcml0ZXIgYW5kIGtNdVJlYWRlcgogICAvLyAg
IGtNdVdyV2FpdCBhbmQgIWtNdVdhaXQKLSAgY29uc3QgaW50cHRyX3QgdyA9IHYgXiBrTXVXYWl0
OworICBjb25zdCB1aW50cHRyX3QgdyA9IHYgXiBrTXVXYWl0OwogICAvLyBCeSBmbGlwcGluZyB0
aGF0IGJpdCwgd2UgY2FuIG5vdyB0ZXN0IGZvcjoKICAgLy8gICBrTXVXcml0ZXIgYW5kIGtNdVJl
YWRlciBpbiB3CiAgIC8vICAga011V3JXYWl0IGFuZCBrTXVXYWl0IGluIHcKQEAgLTE4ODAsNyAr
MTkxNCw4IEBAIHZvaWQgTXV0ZXg6OkxvY2tTbG93TG9vcChTeW5jaFdhaXRQYXJhbXMgKndhaXRw
LCBpbnQgZmxhZ3MpIHsKICAgICAgICAgICAgICAgICAgICAgIHdhaXRwLT5ob3ctPmZhc3RfYWRk
LAogICAgICAgICAgICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlLCBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKSkgewogICAgICAgICBpZiAod2FpdHAtPmNvbmQgPT0gbnVsbHB0ciB8fAot
ICAgICAgICAgICAgRXZhbENvbmRpdGlvbkFubm90YXRlZCh3YWl0cC0+Y29uZCwgdGhpcywgdHJ1
ZSwgd2FpdHAtPmhvdykpIHsKKyAgICAgICAgICAgIEV2YWxDb25kaXRpb25Bbm5vdGF0ZWQod2Fp
dHAtPmNvbmQsIHRoaXMsIHRydWUsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3YWl0cC0+aG93ID09IGtTaGFyZWQpKSB7CiAgICAgICAgICAgYnJlYWs7ICAvLyB3
ZSB0aW1lZCBvdXQsIG9yIGNvbmRpdGlvbiB0cnVlLCBzbyByZXR1cm4KICAgICAgICAgfQogICAg
ICAgICB0aGlzLT5VbmxvY2tTbG93KHdhaXRwKTsgIC8vIGdvdCBsb2NrIGJ1dCBjb25kaXRpb24g
ZmFsc2UKQEAgLTE5MjMsNyArMTk1OCw4IEBAIHZvaWQgTXV0ZXg6OkxvY2tTbG93TG9vcChTeW5j
aFdhaXRQYXJhbXMgKndhaXRwLCBpbnQgZmxhZ3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpKTsKICAgICAgICAgICBpZiAod2FpdHAtPmNvbmQgPT0gbnVsbHB0ciB8fAotICAg
ICAgICAgICAgICBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKHdhaXRwLT5jb25kLCB0aGlzLCB0cnVl
LCB3YWl0cC0+aG93KSkgeworICAgICAgICAgICAgICBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKHdh
aXRwLT5jb25kLCB0aGlzLCB0cnVlLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3YWl0cC0+aG93ID09IGtTaGFyZWQpKSB7CiAgICAgICAgICAgICBicmVhazsg
IC8vIHdlIHRpbWVkIG91dCwgb3IgY29uZGl0aW9uIHRydWUsIHNvIHJldHVybgogICAgICAgICAg
IH0KICAgICAgICAgICB0aGlzLT5VbmxvY2tTbG93KHdhaXRwKTsgICAgICAgICAgIC8vIGdvdCBs
b2NrIGJ1dCBjb25kaXRpb24gZmFsc2UKQEAgLTI1NTEsNyArMjU4Nyw3IEBAIHZvaWQgQ29uZFZh
cjo6V2FrZXVwKFBlclRocmVhZFN5bmNoICp3KSB7CiB9CiAKIHZvaWQgQ29uZFZhcjo6U2lnbmFs
KCkgewotICBBQlNMX1RTQU5fTVVURVhfUFJFX1NJR05BTCgwLCAwKTsKKyAgQUJTTF9UU0FOX01V
VEVYX1BSRV9TSUdOQUwobnVsbHB0ciwgMCk7CiAgIGludHB0cl90IHY7CiAgIGludCBjID0gMDsK
ICAgZm9yICh2ID0gY3ZfLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7IHYgIT0gMDsK
QEAgLTI1ODAsMTcgKzI2MTYsMTcgQEAgdm9pZCBDb25kVmFyOjpTaWduYWwoKSB7CiAgICAgICBp
ZiAoKHYgJiBrQ3ZFdmVudCkgIT0gMCkgewogICAgICAgICBQb3N0U3luY2hFdmVudCh0aGlzLCBT
WU5DSF9FVl9TSUdOQUwpOwogICAgICAgfQotICAgICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfU0lH
TkFMKDAsIDApOworICAgICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfU0lHTkFMKG51bGxwdHIsIDAp
OwogICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSB7CiAgICAgICBjID0gRGVsYXkoYywgR0VOVExF
KTsKICAgICB9CiAgIH0KLSAgQUJTTF9UU0FOX01VVEVYX1BPU1RfU0lHTkFMKDAsIDApOworICBB
QlNMX1RTQU5fTVVURVhfUE9TVF9TSUdOQUwobnVsbHB0ciwgMCk7CiB9CiAKIHZvaWQgQ29uZFZh
cjo6U2lnbmFsQWxsICgpIHsKLSAgQUJTTF9UU0FOX01VVEVYX1BSRV9TSUdOQUwoMCwgMCk7Cisg
IEFCU0xfVFNBTl9NVVRFWF9QUkVfU0lHTkFMKG51bGxwdHIsIDApOwogICBpbnRwdHJfdCB2Owog
ICBpbnQgYyA9IDA7CiAgIGZvciAodiA9IGN2Xy5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4
ZWQpOyB2ICE9IDA7CkBAIC0yNjE3LDEzICsyNjUzLDEzIEBAIHZvaWQgQ29uZFZhcjo6U2lnbmFs
QWxsICgpIHsKICAgICAgIGlmICgodiAmIGtDdkV2ZW50KSAhPSAwKSB7CiAgICAgICAgIFBvc3RT
eW5jaEV2ZW50KHRoaXMsIFNZTkNIX0VWX1NJR05BTEFMTCk7CiAgICAgICB9Ci0gICAgICBBQlNM
X1RTQU5fTVVURVhfUE9TVF9TSUdOQUwoMCwgMCk7CisgICAgICBBQlNMX1RTQU5fTVVURVhfUE9T
VF9TSUdOQUwobnVsbHB0ciwgMCk7CiAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKICAgICAg
IGMgPSBEZWxheShjLCBHRU5UTEUpOyAgICAgICAgICAgLy8gdHJ5IGFnYWluIGFmdGVyIGEgZGVs
YXkKICAgICB9CiAgIH0KLSAgQUJTTF9UU0FOX01VVEVYX1BPU1RfU0lHTkFMKDAsIDApOworICBB
QlNMX1RTQU5fTVVURVhfUE9TVF9TSUdOQUwobnVsbHB0ciwgMCk7CiB9CiAKIHZvaWQgUmVsZWFz
YWJsZU11dGV4TG9jazo6UmVsZWFzZSgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9tdXRleC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmgKaW5kZXggYTM3ODE5
MDUzOGUuLmFmNzcwZTg1YjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0
ZXguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaApAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgPGNz
dGRpbnQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbnN0X2lu
aXQuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvaWRlbnRpdHkuaCIKICNpbmNsdWRl
ICJhYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmgiCiAjaW5jbHVkZSAiYWJzbC9i
YXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eS5oIgpAQCAtMTM0LDM2ICsxMzUsNTYgQEAgc3Ry
dWN0IFN5bmNoV2FpdFBhcmFtczsKIC8vCiAvLyBTZWUgYWxzbyBgTXV0ZXhMb2NrYCwgYmVsb3cs
IGZvciBzY29wZWQgYE11dGV4YCBhY3F1aXNpdGlvbi4KIAotY2xhc3MgTE9DS0FCTEUgTXV0ZXgg
eworY2xhc3MgQUJTTF9MT0NLQUJMRSBNdXRleCB7CiAgcHVibGljOgorICAvLyBDcmVhdGVzIGEg
YE11dGV4YCB0aGF0IGlzIG5vdCBoZWxkIGJ5IGFueW9uZS4gVGhpcyBjb25zdHJ1Y3RvciBpcwor
ICAvLyB0eXBpY2FsbHkgdXNlZCBmb3IgTXV0ZXhlcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAgb3Ig
dGhlIHN0YWNrLgorICAvLworICAvLyBUbyBjcmVhdGUgYE11dGV4YCBpbnN0YW5jZXMgd2l0aCBz
dGF0aWMgc3RvcmFnZSBkdXJhdGlvbgorICAvLyAoZS5nLiBhIG5hbWVzcGFjZS1zY29wZWQgb3Ig
Z2xvYmFsIHZhcmlhYmxlKSwgc2VlCisgIC8vIGBNdXRleDo6TXV0ZXgoYWJzbDo6a0NvbnN0SW5p
dClgIGJlbG93IGluc3RlYWQuCiAgIE11dGV4KCk7CisKKyAgLy8gQ3JlYXRlcyBhIG11dGV4IHdp
dGggc3RhdGljIHN0b3JhZ2UgZHVyYXRpb24uICBBIGdsb2JhbCB2YXJpYWJsZQorICAvLyBjb25z
dHJ1Y3RlZCB0aGlzIHdheSBhdm9pZHMgdGhlIGxpZmV0aW1lIGlzc3VlcyB0aGF0IGNhbiBvY2N1
ciBvbiBwcm9ncmFtCisgIC8vIHN0YXJ0dXAgYW5kIHNodXRkb3duLiAgKFNlZSBhYnNsL2Jhc2Uv
Y29uc3RfaW5pdC5oLikKKyAgLy8KKyAgLy8gRm9yIE11dGV4ZXMgYWxsb2NhdGVkIG9uIHRoZSBo
ZWFwIGFuZCBzdGFjaywgaW5zdGVhZCB1c2UgdGhlIGRlZmF1bHQKKyAgLy8gY29uc3RydWN0b3Is
IHdoaWNoIGNhbiBpbnRlcmFjdCBtb3JlIGZ1bGx5IHdpdGggdGhlIHRocmVhZCBzYW5pdGl6ZXIu
CisgIC8vCisgIC8vIEV4YW1wbGUgdXNhZ2U6CisgIC8vICAgbmFtZXNwYWNlIGZvbyB7CisgIC8v
ICAgQUJTTF9DT05TVF9JTklUIE11dGV4IG11KGFic2w6OmtDb25zdEluaXQpOworICAvLyAgIH0K
KyAgZXhwbGljaXQgY29uc3RleHByIE11dGV4KGFic2w6OkNvbnN0SW5pdFR5cGUpOworCiAgIH5N
dXRleCgpOwogCiAgIC8vIE11dGV4OjpMb2NrKCkKICAgLy8KICAgLy8gQmxvY2tzIHRoZSBjYWxs
aW5nIHRocmVhZCwgaWYgbmVjZXNzYXJ5LCB1bnRpbCB0aGlzIGBNdXRleGAgaXMgZnJlZSwgYW5k
CiAgIC8vIHRoZW4gYWNxdWlyZXMgaXQgZXhjbHVzaXZlbHkuIChUaGlzIGxvY2sgaXMgYWxzbyBr
bm93biBhcyBhICJ3cml0ZSBsb2NrLiIpCi0gIHZvaWQgTG9jaygpIEVYQ0xVU0lWRV9MT0NLX0ZV
TkNUSU9OKCk7CisgIHZvaWQgTG9jaygpIEFCU0xfRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKTsK
IAogICAvLyBNdXRleDo6VW5sb2NrKCkKICAgLy8KICAgLy8gUmVsZWFzZXMgdGhpcyBgTXV0ZXhg
IGFuZCByZXR1cm5zIGl0IGZyb20gdGhlIGV4Y2x1c2l2ZS93cml0ZSBzdGF0ZSB0byB0aGUKICAg
Ly8gZnJlZSBzdGF0ZS4gQ2FsbGVyIG11c3QgaG9sZCB0aGUgYE11dGV4YCBleGNsdXNpdmVseS4K
LSAgdm9pZCBVbmxvY2soKSBVTkxPQ0tfRlVOQ1RJT04oKTsKKyAgdm9pZCBVbmxvY2soKSBBQlNM
X1VOTE9DS19GVU5DVElPTigpOwogCiAgIC8vIE11dGV4OjpUcnlMb2NrKCkKICAgLy8KICAgLy8g
SWYgdGhlIG11dGV4IGNhbiBiZSBhY3F1aXJlZCB3aXRob3V0IGJsb2NraW5nLCBkb2VzIHNvIGV4
Y2x1c2l2ZWx5IGFuZAogICAvLyByZXR1cm5zIGB0cnVlYC4gT3RoZXJ3aXNlLCByZXR1cm5zIGBm
YWxzZWAuIFJldHVybnMgYHRydWVgIHdpdGggaGlnaAogICAvLyBwcm9iYWJpbGl0eSBpZiB0aGUg
YE11dGV4YCB3YXMgZnJlZS4KLSAgYm9vbCBUcnlMb2NrKCkgRVhDTFVTSVZFX1RSWUxPQ0tfRlVO
Q1RJT04odHJ1ZSk7CisgIGJvb2wgVHJ5TG9jaygpIEFCU0xfRVhDTFVTSVZFX1RSWUxPQ0tfRlVO
Q1RJT04odHJ1ZSk7CiAKICAgLy8gTXV0ZXg6OkFzc2VydEhlbGQoKQogICAvLwogICAvLyBSZXR1
cm4gaW1tZWRpYXRlbHkgaWYgdGhpcyB0aHJlYWQgaG9sZHMgdGhlIGBNdXRleGAgZXhjbHVzaXZl
bHkgKGluIHdyaXRlCiAgIC8vIG1vZGUpLiBPdGhlcndpc2UsIG1heSByZXBvcnQgYW4gZXJyb3Ig
KHR5cGljYWxseSBieSBjcmFzaGluZyB3aXRoIGEKICAgLy8gZGlhZ25vc3RpYyksIG9yIG1heSBy
ZXR1cm4gaW1tZWRpYXRlbHkuCi0gIHZvaWQgQXNzZXJ0SGVsZCgpIGNvbnN0IEFTU0VSVF9FWENM
VVNJVkVfTE9DSygpOworICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCBBQlNMX0FTU0VSVF9FWENM
VVNJVkVfTE9DSygpOwogCiAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAvLyBSZWFkZXItV3Jp
dGVyIExvY2tpbmcKQEAgLTIwNCwyOCArMjI1LDI4IEBAIGNsYXNzIExPQ0tBQkxFIE11dGV4IHsK
ICAgLy8gYFJlYWRlckxvY2soKWAgd2lsbCBibG9jayBpZiBzb21lIG90aGVyIHRocmVhZCBoYXMg
YW4gZXhjbHVzaXZlL3dyaXRlciBsb2NrCiAgIC8vIG9uIHRoZSBtdXRleC4KIAotICB2b2lkIFJl
YWRlckxvY2soKSBTSEFSRURfTE9DS19GVU5DVElPTigpOworICB2b2lkIFJlYWRlckxvY2soKSBB
QlNMX1NIQVJFRF9MT0NLX0ZVTkNUSU9OKCk7CiAKICAgLy8gTXV0ZXg6OlJlYWRlclVubG9jaygp
CiAgIC8vCiAgIC8vIFJlbGVhc2VzIGEgcmVhZCBzaGFyZSBvZiB0aGlzIGBNdXRleGAuIGBSZWFk
ZXJVbmxvY2tgIG1heSByZXR1cm4gYSBtdXRleCB0bwogICAvLyB0aGUgZnJlZSBzdGF0ZSBpZiB0
aGlzIHRocmVhZCBob2xkcyB0aGUgbGFzdCByZWFkZXIgbG9jayBvbiB0aGUgbXV0ZXguIE5vdGUK
ICAgLy8gdGhhdCB5b3UgY2Fubm90IGNhbGwgYFJlYWRlclVubG9jaygpYCBvbiBhIG11dGV4IGhl
bGQgaW4gd3JpdGUgbW9kZS4KLSAgdm9pZCBSZWFkZXJVbmxvY2soKSBVTkxPQ0tfRlVOQ1RJT04o
KTsKKyAgdm9pZCBSZWFkZXJVbmxvY2soKSBBQlNMX1VOTE9DS19GVU5DVElPTigpOwogCiAgIC8v
IE11dGV4OjpSZWFkZXJUcnlMb2NrKCkKICAgLy8KICAgLy8gSWYgdGhlIG11dGV4IGNhbiBiZSBh
Y3F1aXJlZCB3aXRob3V0IGJsb2NraW5nLCBhY3F1aXJlcyB0aGlzIG11dGV4IGZvcgogICAvLyBz
aGFyZWQgYWNjZXNzIGFuZCByZXR1cm5zIGB0cnVlYC4gT3RoZXJ3aXNlLCByZXR1cm5zIGBmYWxz
ZWAuIFJldHVybnMKICAgLy8gYHRydWVgIHdpdGggaGlnaCBwcm9iYWJpbGl0eSBpZiB0aGUgYE11
dGV4YCB3YXMgZnJlZSBvciBzaGFyZWQuCi0gIGJvb2wgUmVhZGVyVHJ5TG9jaygpIFNIQVJFRF9U
UllMT0NLX0ZVTkNUSU9OKHRydWUpOworICBib29sIFJlYWRlclRyeUxvY2soKSBBQlNMX1NIQVJF
RF9UUllMT0NLX0ZVTkNUSU9OKHRydWUpOwogCiAgIC8vIE11dGV4OjpBc3NlcnRSZWFkZXJIZWxk
KCkKICAgLy8KICAgLy8gUmV0dXJucyBpbW1lZGlhdGVseSBpZiB0aGlzIHRocmVhZCBob2xkcyB0
aGUgYE11dGV4YCBpbiBhdCBsZWFzdCBzaGFyZWQKICAgLy8gbW9kZSAocmVhZCBtb2RlKS4gT3Ro
ZXJ3aXNlLCBtYXkgcmVwb3J0IGFuIGVycm9yICh0eXBpY2FsbHkgYnkKICAgLy8gY3Jhc2hpbmcg
d2l0aCBhIGRpYWdub3N0aWMpLCBvciBtYXkgcmV0dXJuIGltbWVkaWF0ZWx5LgotICB2b2lkIEFz
c2VydFJlYWRlckhlbGQoKSBjb25zdCBBU1NFUlRfU0hBUkVEX0xPQ0soKTsKKyAgdm9pZCBBc3Nl
cnRSZWFkZXJIZWxkKCkgY29uc3QgQUJTTF9BU1NFUlRfU0hBUkVEX0xPQ0soKTsKIAogICAvLyBN
dXRleDo6V3JpdGVyTG9jaygpCiAgIC8vIE11dGV4OjpXcml0ZXJVbmxvY2soKQpAQCAtMjM2LDEx
ICsyNTcsMTEgQEAgY2xhc3MgTE9DS0FCTEUgTXV0ZXggewogICAvLyBUaGVzZSBtZXRob2RzIG1h
eSBiZSB1c2VkIChhbG9uZyB3aXRoIHRoZSBjb21wbGVtZW50YXJ5IGBSZWFkZXIqKClgCiAgIC8v
IG1ldGhvZHMpIHRvIGRpc3Rpbmdpc2ggc2ltcGxlIGV4Y2x1c2l2ZSBgTXV0ZXhgIHVzYWdlIChg
TG9jaygpYCwKICAgLy8gZXRjLikgZnJvbSByZWFkZXIvd3JpdGVyIGxvY2sgdXNhZ2UuCi0gIHZv
aWQgV3JpdGVyTG9jaygpIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCkgeyB0aGlzLT5Mb2NrKCk7
IH0KKyAgdm9pZCBXcml0ZXJMb2NrKCkgQUJTTF9FWENMVVNJVkVfTE9DS19GVU5DVElPTigpIHsg
dGhpcy0+TG9jaygpOyB9CiAKLSAgdm9pZCBXcml0ZXJVbmxvY2soKSBVTkxPQ0tfRlVOQ1RJT04o
KSB7IHRoaXMtPlVubG9jaygpOyB9CisgIHZvaWQgV3JpdGVyVW5sb2NrKCkgQUJTTF9VTkxPQ0tf
RlVOQ1RJT04oKSB7IHRoaXMtPlVubG9jaygpOyB9CiAKLSAgYm9vbCBXcml0ZXJUcnlMb2NrKCkg
RVhDTFVTSVZFX1RSWUxPQ0tfRlVOQ1RJT04odHJ1ZSkgeworICBib29sIFdyaXRlclRyeUxvY2so
KSBBQlNMX0VYQ0xVU0lWRV9UUllMT0NLX0ZVTkNUSU9OKHRydWUpIHsKICAgICByZXR1cm4gdGhp
cy0+VHJ5TG9jaygpOwogICB9CiAKQEAgLTI5NCwxMSArMzE1LDExIEBAIGNsYXNzIExPQ0tBQkxF
IE11dGV4IHsKICAgLy8gYmUgYWNxdWlyZWQsIHRoZW4gYXRvbWljYWxseSBhY3F1aXJlcyB0aGlz
IGBNdXRleGAuIGBMb2NrV2hlbigpYCBpcwogICAvLyBsb2dpY2FsbHkgZXF1aXZhbGVudCB0byBg
KkxvY2soKTsgQXdhaXQoKTtgIHRob3VnaCB0aGV5IG1heSBoYXZlIGRpZmZlcmVudAogICAvLyBw
ZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuCi0gIHZvaWQgTG9ja1doZW4oY29uc3QgQ29uZGl0
aW9uICZjb25kKSBFWENMVVNJVkVfTE9DS19GVU5DVElPTigpOworICB2b2lkIExvY2tXaGVuKGNv
bnN0IENvbmRpdGlvbiAmY29uZCkgQUJTTF9FWENMVVNJVkVfTE9DS19GVU5DVElPTigpOwogCi0g
IHZvaWQgUmVhZGVyTG9ja1doZW4oY29uc3QgQ29uZGl0aW9uICZjb25kKSBTSEFSRURfTE9DS19G
VU5DVElPTigpOworICB2b2lkIFJlYWRlckxvY2tXaGVuKGNvbnN0IENvbmRpdGlvbiAmY29uZCkg
QUJTTF9TSEFSRURfTE9DS19GVU5DVElPTigpOwogCi0gIHZvaWQgV3JpdGVyTG9ja1doZW4oY29u
c3QgQ29uZGl0aW9uICZjb25kKSBFWENMVVNJVkVfTE9DS19GVU5DVElPTigpIHsKKyAgdm9pZCBX
cml0ZXJMb2NrV2hlbihjb25zdCBDb25kaXRpb24gJmNvbmQpIEFCU0xfRVhDTFVTSVZFX0xPQ0tf
RlVOQ1RJT04oKSB7CiAgICAgdGhpcy0+TG9ja1doZW4oY29uZCk7CiAgIH0KIApAQCAtMzQwLDEx
ICszNjEsMTEgQEAgY2xhc3MgTE9DS0FCTEUgTXV0ZXggewogICAvLwogICAvLyBOZWdhdGl2ZSB0
aW1lb3V0cyBhcmUgZXF1aXZhbGVudCB0byBhIHplcm8gdGltZW91dC4KICAgYm9vbCBMb2NrV2hl
bldpdGhUaW1lb3V0KGNvbnN0IENvbmRpdGlvbiAmY29uZCwgYWJzbDo6RHVyYXRpb24gdGltZW91
dCkKLSAgICAgIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCk7CisgICAgICBBQlNMX0VYQ0xVU0lW
RV9MT0NLX0ZVTkNUSU9OKCk7CiAgIGJvb2wgUmVhZGVyTG9ja1doZW5XaXRoVGltZW91dChjb25z
dCBDb25kaXRpb24gJmNvbmQsIGFic2w6OkR1cmF0aW9uIHRpbWVvdXQpCi0gICAgICBTSEFSRURf
TE9DS19GVU5DVElPTigpOworICAgICAgQUJTTF9TSEFSRURfTE9DS19GVU5DVElPTigpOwogICBi
b29sIFdyaXRlckxvY2tXaGVuV2l0aFRpbWVvdXQoY29uc3QgQ29uZGl0aW9uICZjb25kLCBhYnNs
OjpEdXJhdGlvbiB0aW1lb3V0KQotICAgICAgRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKSB7Cisg
ICAgICBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCkgewogICAgIHJldHVybiB0aGlzLT5M
b2NrV2hlbldpdGhUaW1lb3V0KGNvbmQsIHRpbWVvdXQpOwogICB9CiAKQEAgLTM2MCwxMSArMzgx
LDExIEBAIGNsYXNzIExPQ0tBQkxFIE11dGV4IHsKICAgLy8KICAgLy8gRGVhZGxpbmVzIGluIHRo
ZSBwYXN0IGFyZSBlcXVpdmFsZW50IHRvIGFuIGltbWVkaWF0ZSBkZWFkbGluZS4KICAgYm9vbCBM
b2NrV2hlbldpdGhEZWFkbGluZShjb25zdCBDb25kaXRpb24gJmNvbmQsIGFic2w6OlRpbWUgZGVh
ZGxpbmUpCi0gICAgICBFWENMVVNJVkVfTE9DS19GVU5DVElPTigpOworICAgICAgQUJTTF9FWENM
VVNJVkVfTE9DS19GVU5DVElPTigpOwogICBib29sIFJlYWRlckxvY2tXaGVuV2l0aERlYWRsaW5l
KGNvbnN0IENvbmRpdGlvbiAmY29uZCwgYWJzbDo6VGltZSBkZWFkbGluZSkKLSAgICAgIFNIQVJF
RF9MT0NLX0ZVTkNUSU9OKCk7CisgICAgICBBQlNMX1NIQVJFRF9MT0NLX0ZVTkNUSU9OKCk7CiAg
IGJvb2wgV3JpdGVyTG9ja1doZW5XaXRoRGVhZGxpbmUoY29uc3QgQ29uZGl0aW9uICZjb25kLCBh
YnNsOjpUaW1lIGRlYWRsaW5lKQotICAgICAgRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKSB7Cisg
ICAgICBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCkgewogICAgIHJldHVybiB0aGlzLT5M
b2NrV2hlbldpdGhEZWFkbGluZShjb25kLCBkZWFkbGluZSk7CiAgIH0KIApAQCAtNTE0LDkgKzUz
NSw5IEBAIGNsYXNzIExPQ0tBQkxFIE11dGV4IHsKIC8vIHByaXZhdGU6CiAvLyAgIE11dGV4IGxv
Y2tfOwogLy8gfTsKLWNsYXNzIFNDT1BFRF9MT0NLQUJMRSBNdXRleExvY2sgeworY2xhc3MgQUJT
TF9TQ09QRURfTE9DS0FCTEUgTXV0ZXhMb2NrIHsKICBwdWJsaWM6Ci0gIGV4cGxpY2l0IE11dGV4
TG9jayhNdXRleCAqbXUpIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKG11KSA6IG11XyhtdSkgewor
ICBleHBsaWNpdCBNdXRleExvY2soTXV0ZXggKm11KSBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNU
SU9OKG11KSA6IG11XyhtdSkgewogICAgIHRoaXMtPm11Xy0+TG9jaygpOwogICB9CiAKQEAgLTUy
NSw3ICs1NDYsNyBAQCBjbGFzcyBTQ09QRURfTE9DS0FCTEUgTXV0ZXhMb2NrIHsKICAgTXV0ZXhM
b2NrJiBvcGVyYXRvcj0oY29uc3QgTXV0ZXhMb2NrJikgPSBkZWxldGU7CiAgIE11dGV4TG9jayYg
b3BlcmF0b3I9KE11dGV4TG9jayYmKSA9IGRlbGV0ZTsKIAotICB+TXV0ZXhMb2NrKCkgVU5MT0NL
X0ZVTkNUSU9OKCkgeyB0aGlzLT5tdV8tPlVubG9jaygpOyB9CisgIH5NdXRleExvY2soKSBBQlNM
X1VOTE9DS19GVU5DVElPTigpIHsgdGhpcy0+bXVfLT5VbmxvY2soKTsgfQogCiAgcHJpdmF0ZToK
ICAgTXV0ZXggKmNvbnN0IG11XzsKQEAgLTUzNSw5ICs1NTYsOSBAQCBjbGFzcyBTQ09QRURfTE9D
S0FCTEUgTXV0ZXhMb2NrIHsKIC8vCiAvLyBUaGUgYFJlYWRlck11dGV4TG9ja2AgaXMgYSBoZWxw
ZXIgY2xhc3MsIGxpa2UgYE11dGV4TG9ja2AsIHdoaWNoIGFjcXVpcmVzIGFuZAogLy8gcmVsZWFz
ZXMgYSBzaGFyZWQgbG9jayBvbiBhIGBNdXRleGAgdmlhIFJBSUkuCi1jbGFzcyBTQ09QRURfTE9D
S0FCTEUgUmVhZGVyTXV0ZXhMb2NrIHsKK2NsYXNzIEFCU0xfU0NPUEVEX0xPQ0tBQkxFIFJlYWRl
ck11dGV4TG9jayB7CiAgcHVibGljOgotICBleHBsaWNpdCBSZWFkZXJNdXRleExvY2soTXV0ZXgg
Km11KSBTSEFSRURfTE9DS19GVU5DVElPTihtdSkKKyAgZXhwbGljaXQgUmVhZGVyTXV0ZXhMb2Nr
KE11dGV4ICptdSkgQUJTTF9TSEFSRURfTE9DS19GVU5DVElPTihtdSkKICAgICAgIDogIG11Xyht
dSkgewogICAgIG11LT5SZWFkZXJMb2NrKCk7CiAgIH0KQEAgLTU0Nyw3ICs1NjgsNyBAQCBjbGFz
cyBTQ09QRURfTE9DS0FCTEUgUmVhZGVyTXV0ZXhMb2NrIHsKICAgUmVhZGVyTXV0ZXhMb2NrJiBv
cGVyYXRvcj0oY29uc3QgUmVhZGVyTXV0ZXhMb2NrJikgPSBkZWxldGU7CiAgIFJlYWRlck11dGV4
TG9jayYgb3BlcmF0b3I9KFJlYWRlck11dGV4TG9jayYmKSA9IGRlbGV0ZTsKIAotICB+UmVhZGVy
TXV0ZXhMb2NrKCkgVU5MT0NLX0ZVTkNUSU9OKCkgeworICB+UmVhZGVyTXV0ZXhMb2NrKCkgQUJT
TF9VTkxPQ0tfRlVOQ1RJT04oKSB7CiAgICAgdGhpcy0+bXVfLT5SZWFkZXJVbmxvY2soKTsKICAg
fQogCkBAIC01NTksOSArNTgwLDkgQEAgY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIFJlYWRlck11dGV4
TG9jayB7CiAvLwogLy8gVGhlIGBXcml0ZXJNdXRleExvY2tgIGlzIGEgaGVscGVyIGNsYXNzLCBs
aWtlIGBNdXRleExvY2tgLCB3aGljaCBhY3F1aXJlcyBhbmQKIC8vIHJlbGVhc2VzIGEgd3JpdGUg
KGV4Y2x1c2l2ZSkgbG9jayBvbiBhIGBNdXRleGAgdmlhIFJBSUkuCi1jbGFzcyBTQ09QRURfTE9D
S0FCTEUgV3JpdGVyTXV0ZXhMb2NrIHsKK2NsYXNzIEFCU0xfU0NPUEVEX0xPQ0tBQkxFIFdyaXRl
ck11dGV4TG9jayB7CiAgcHVibGljOgotICBleHBsaWNpdCBXcml0ZXJNdXRleExvY2soTXV0ZXgg
Km11KSBFWENMVVNJVkVfTE9DS19GVU5DVElPTihtdSkKKyAgZXhwbGljaXQgV3JpdGVyTXV0ZXhM
b2NrKE11dGV4ICptdSkgQUJTTF9FWENMVVNJVkVfTE9DS19GVU5DVElPTihtdSkKICAgICAgIDog
bXVfKG11KSB7CiAgICAgbXUtPldyaXRlckxvY2soKTsKICAgfQpAQCAtNTcxLDcgKzU5Miw3IEBA
IGNsYXNzIFNDT1BFRF9MT0NLQUJMRSBXcml0ZXJNdXRleExvY2sgewogICBXcml0ZXJNdXRleExv
Y2smIG9wZXJhdG9yPShjb25zdCBXcml0ZXJNdXRleExvY2smKSA9IGRlbGV0ZTsKICAgV3JpdGVy
TXV0ZXhMb2NrJiBvcGVyYXRvcj0oV3JpdGVyTXV0ZXhMb2NrJiYpID0gZGVsZXRlOwogCi0gIH5X
cml0ZXJNdXRleExvY2soKSBVTkxPQ0tfRlVOQ1RJT04oKSB7CisgIH5Xcml0ZXJNdXRleExvY2so
KSBBQlNMX1VOTE9DS19GVU5DVElPTigpIHsKICAgICB0aGlzLT5tdV8tPldyaXRlclVubG9jaygp
OwogICB9CiAKQEAgLTU4NCw3ICs2MDUsNyBAQCBjbGFzcyBTQ09QRURfTE9DS0FCTEUgV3JpdGVy
TXV0ZXhMb2NrIHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gQXMgbm90ZWQgYWJv
dmUsIGBNdXRleGAgY29udGFpbnMgYSBudW1iZXIgb2YgbWVtYmVyIGZ1bmN0aW9ucyB3aGljaCB0
YWtlIGEKLS8vIGBDb25kaXRpb25gIGFzIGEgYXJndW1lbnQ7IGNsaWVudHMgY2FuIHdhaXQgZm9y
IGNvbmRpdGlvbnMgdG8gYmVjb21lIGB0cnVlYAorLy8gYENvbmRpdGlvbmAgYXMgYW4gYXJndW1l
bnQ7IGNsaWVudHMgY2FuIHdhaXQgZm9yIGNvbmRpdGlvbnMgdG8gYmVjb21lIGB0cnVlYAogLy8g
YmVmb3JlIGF0dGVtcHRpbmcgdG8gYWNxdWlyZSB0aGUgbXV0ZXguIFRoZXNlIHNlY3Rpb25zIGFy
ZSBrbm93biBhcwogLy8gImNvbmRpdGlvbiBjcml0aWNhbCIgc2VjdGlvbnMuIFRvIHVzZSBhIGBD
b25kaXRpb25gLCB5b3Ugc2ltcGx5IG5lZWQgdG8KIC8vIGNvbnN0cnVjdCBpdCwgYW5kIHVzZSB3
aXRoaW4gYW4gYXBwcm9wcmlhdGUgYE11dGV4YCBtZW1iZXIgZnVuY3Rpb247CkBAIC02MTIsNyAr
NjMzLDcgQEAgY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIFdyaXRlck11dGV4TG9jayB7CiAvLyBFeGFt
cGxlOgogLy8KIC8vICAgLy8gYXNzdW1lIGNvdW50XyBpcyBub3QgaW50ZXJuYWwgcmVmZXJlbmNl
IGNvdW50Ci0vLyAgIGludCBjb3VudF8gR1VBUkRFRF9CWShtdV8pOworLy8gICBpbnQgY291bnRf
IEFCU0xfR1VBUkRFRF9CWShtdV8pOwogLy8KIC8vICAgbXVfLkxvY2tXaGVuKENvbmRpdGlvbigr
W10oaW50KiBjb3VudCkgeyByZXR1cm4gKmNvdW50ID09IDA7IH0sCiAvLyAgICAgICAgICZjb3Vu
dF8pKTsKQEAgLTgzOSwxMSArODYwLDExIEBAIGNsYXNzIENvbmRWYXIgewogLy8gTXV0ZXhMb2Nr
TWF5YmUKIC8vCiAvLyBNdXRleExvY2tNYXliZSBpcyBsaWtlIE11dGV4TG9jaywgYnV0IGlzIGEg
bm8tb3Agd2hlbiBtdSBpcyBudWxsLgotY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIE11dGV4TG9ja01h
eWJlIHsKK2NsYXNzIEFCU0xfU0NPUEVEX0xPQ0tBQkxFIE11dGV4TG9ja01heWJlIHsKICBwdWJs
aWM6Ci0gIGV4cGxpY2l0IE11dGV4TG9ja01heWJlKE11dGV4ICptdSkgRVhDTFVTSVZFX0xPQ0tf
RlVOQ1RJT04obXUpCisgIGV4cGxpY2l0IE11dGV4TG9ja01heWJlKE11dGV4ICptdSkgQUJTTF9F
WENMVVNJVkVfTE9DS19GVU5DVElPTihtdSkKICAgICAgIDogbXVfKG11KSB7IGlmICh0aGlzLT5t
dV8gIT0gbnVsbHB0cikgeyB0aGlzLT5tdV8tPkxvY2soKTsgfSB9Ci0gIH5NdXRleExvY2tNYXli
ZSgpIFVOTE9DS19GVU5DVElPTigpIHsKKyAgfk11dGV4TG9ja01heWJlKCkgQUJTTF9VTkxPQ0tf
RlVOQ1RJT04oKSB7CiAgICAgaWYgKHRoaXMtPm11XyAhPSBudWxscHRyKSB7IHRoaXMtPm11Xy0+
VW5sb2NrKCk7IH0KICAgfQogIHByaXZhdGU6CkBAIC04NTgsMTcgKzg3OSwxNyBAQCBjbGFzcyBT
Q09QRURfTE9DS0FCTEUgTXV0ZXhMb2NrTWF5YmUgewogLy8KIC8vIFJlbGVhc2FibGVNdXRleExv
Y2sgaXMgbGlrZSBNdXRleExvY2ssIGJ1dCBwZXJtaXRzIGBSZWxlYXNlKClgIG9mIGl0cwogLy8g
bXV0ZXggYmVmb3JlIGRlc3RydWN0aW9uLiBgUmVsZWFzZSgpYCBtYXkgYmUgY2FsbGVkIGF0IG1v
c3Qgb25jZS4KLWNsYXNzIFNDT1BFRF9MT0NLQUJMRSBSZWxlYXNhYmxlTXV0ZXhMb2NrIHsKK2Ns
YXNzIEFCU0xfU0NPUEVEX0xPQ0tBQkxFIFJlbGVhc2FibGVNdXRleExvY2sgewogIHB1YmxpYzoK
LSAgZXhwbGljaXQgUmVsZWFzYWJsZU11dGV4TG9jayhNdXRleCAqbXUpIEVYQ0xVU0lWRV9MT0NL
X0ZVTkNUSU9OKG11KQorICBleHBsaWNpdCBSZWxlYXNhYmxlTXV0ZXhMb2NrKE11dGV4ICptdSkg
QUJTTF9FWENMVVNJVkVfTE9DS19GVU5DVElPTihtdSkKICAgICAgIDogbXVfKG11KSB7CiAgICAg
dGhpcy0+bXVfLT5Mb2NrKCk7CiAgIH0KLSAgflJlbGVhc2FibGVNdXRleExvY2soKSBVTkxPQ0tf
RlVOQ1RJT04oKSB7CisgIH5SZWxlYXNhYmxlTXV0ZXhMb2NrKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJ
T04oKSB7CiAgICAgaWYgKHRoaXMtPm11XyAhPSBudWxscHRyKSB7IHRoaXMtPm11Xy0+VW5sb2Nr
KCk7IH0KICAgfQogCi0gIHZvaWQgUmVsZWFzZSgpIFVOTE9DS19GVU5DVElPTigpOworICB2b2lk
IFJlbGVhc2UoKSBBQlNMX1VOTE9DS19GVU5DVElPTigpOwogCiAgcHJpdmF0ZToKICAgTXV0ZXgg
Km11XzsKQEAgLTg3OSwxMSArOTAwLDE1IEBAIGNsYXNzIFNDT1BFRF9MT0NLQUJMRSBSZWxlYXNh
YmxlTXV0ZXhMb2NrIHsKIH07CiAKICNpZmRlZiBBQlNMX0lOVEVSTkFMX1VTRV9OT05QUk9EX01V
VEVYCitpbmxpbmUgY29uc3RleHByIE11dGV4OjpNdXRleChhYnNsOjpDb25zdEluaXRUeXBlKSA6
IGltcGxfKGFic2w6OmtDb25zdEluaXQpIHt9CisKICNlbHNlCiBpbmxpbmUgTXV0ZXg6Ok11dGV4
KCkgOiBtdV8oMCkgewogICBBQlNMX1RTQU5fTVVURVhfQ1JFQVRFKHRoaXMsIF9fdHNhbl9tdXRl
eF9ub3Rfc3RhdGljKTsKIH0KIAoraW5saW5lIGNvbnN0ZXhwciBNdXRleDo6TXV0ZXgoYWJzbDo6
Q29uc3RJbml0VHlwZSkgOiBtdV8oMCkge30KKwogaW5saW5lIENvbmRWYXI6OkNvbmRWYXIoKSA6
IGN2XygwKSB7fQogI2VuZGlmCiAKQEAgLTEwMjUsNCArMTA1MCw1IEBAIHZvaWQgU2V0TXV0ZXhE
ZWFkbG9ja0RldGVjdGlvbk1vZGUoT25EZWFkbG9ja0N5Y2xlIG1vZGUpOwogZXh0ZXJuICJDIiB7
CiB2b2lkIEFic2xJbnRlcm5hbE11dGV4WWllbGQoKTsKIH0gIC8vIGV4dGVybiAiQyIKKwogI2Vu
ZGlmICAvLyBBQlNMX1NZTkNIUk9OSVpBVElPTl9NVVRFWF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL211dGV4X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlv
bi9tdXRleF9iZW5jaG1hcmsuY2MKaW5kZXggMWUwMTllMDAxYWUuLmFiMTg4MDAxMmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXhfYmVuY2htYXJrLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N5bmNocm9uaXphdGlvbi9tdXRleF9iZW5jaG1hcmsuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEyLDE2ICsxMiwxNTQgQEAKIC8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogCisjaW5jbHVkZSA8Y3N0ZGlu
dD4KKyNpbmNsdWRlIDxtdXRleD4gIC8vIE5PTElOVChidWlsZC9jKysxMSkKICNpbmNsdWRlIDx2
ZWN0b3I+CiAKLSNpbmNsdWRlICJiZW5jaG1hcmsvYmVuY2htYXJrLmgiCi0jaW5jbHVkZSAiYWJz
bC9iYXNlL2ludGVybmFsL3N5c2luZm8uaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwv
Y3ljbGVjbG9jay5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9jay5oIgog
I2luY2x1ZGUgImFic2wvc3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXIuaCIKICNpbmNs
dWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC90aHJlYWRfcG9vbC5oIgogI2luY2x1
ZGUgImFic2wvc3luY2hyb25pemF0aW9uL211dGV4LmgiCisjaW5jbHVkZSAiYmVuY2htYXJrL2Jl
bmNobWFyay5oIgogCiBuYW1lc3BhY2UgewogCit2b2lkIEJNX011dGV4KGJlbmNobWFyazo6U3Rh
dGUmIHN0YXRlKSB7CisgIHN0YXRpYyBhYnNsOjpNdXRleCogbXUgPSBuZXcgYWJzbDo6TXV0ZXg7
CisgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKKyAgICBhYnNsOjpNdXRleExvY2sgbG9jayhtdSk7
CisgIH0KK30KK0JFTkNITUFSSyhCTV9NdXRleCktPlVzZVJlYWxUaW1lKCktPlRocmVhZHMoMSkt
PlRocmVhZFBlckNwdSgpOworCitzdGF0aWMgdm9pZCBEZWxheU5zKGludDY0X3QgbnMsIGludCog
ZGF0YSkgeworICBpbnQ2NF90IGVuZCA9IGFic2w6OmJhc2VfaW50ZXJuYWw6OkN5Y2xlQ2xvY2s6
Ok5vdygpICsKKyAgICAgICAgICAgICAgICBucyAqIGFic2w6OmJhc2VfaW50ZXJuYWw6OkN5Y2xl
Q2xvY2s6OkZyZXF1ZW5jeSgpIC8gMWU5OworICB3aGlsZSAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6
Q3ljbGVDbG9jazo6Tm93KCkgPCBlbmQpIHsKKyAgICArKygqZGF0YSk7CisgICAgYmVuY2htYXJr
OjpEb05vdE9wdGltaXplKCpkYXRhKTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTXV0
ZXhUeXBlPgorY2xhc3MgUmFpaUxvY2tlciB7CisgcHVibGljOgorICBleHBsaWNpdCBSYWlpTG9j
a2VyKE11dGV4VHlwZSogbXUpIDogbXVfKG11KSB7IG11Xy0+TG9jaygpOyB9CisgIH5SYWlpTG9j
a2VyKCkgeyBtdV8tPlVubG9jaygpOyB9CisgcHJpdmF0ZToKKyAgTXV0ZXhUeXBlKiBtdV87Cit9
OworCit0ZW1wbGF0ZSA8PgorY2xhc3MgUmFpaUxvY2tlcjxzdGQ6Om11dGV4PiB7CisgcHVibGlj
OgorICBleHBsaWNpdCBSYWlpTG9ja2VyKHN0ZDo6bXV0ZXgqIG11KSA6IG11XyhtdSkgeyBtdV8t
PmxvY2soKTsgfQorICB+UmFpaUxvY2tlcigpIHsgbXVfLT51bmxvY2soKTsgfQorIHByaXZhdGU6
CisgIHN0ZDo6bXV0ZXgqIG11XzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNdXRleFR5cGU+
Cit2b2lkIEJNX0NvbnRlbmRlZChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBzdHJ1Y3Qg
U2hhcmVkIHsKKyAgICBNdXRleFR5cGUgbXU7CisgICAgaW50IGRhdGEgPSAwOworICB9OworICBz
dGF0aWMgYXV0byogc2hhcmVkID0gbmV3IFNoYXJlZDsKKyAgaW50IGxvY2FsID0gMDsKKyAgZm9y
IChhdXRvIF8gOiBzdGF0ZSkgeworICAgIC8vIEhlcmUgd2UgbW9kZWwgYm90aCBsb2NhbCB3b3Jr
IG91dHNpZGUgb2YgdGhlIGNyaXRpY2FsIHNlY3Rpb24gYXMgd2VsbCBhcworICAgIC8vIHNvbWUg
d29yayBpbnNpZGUgb2YgdGhlIGNyaXRpY2FsIHNlY3Rpb24uIFRoZSBpZGVhIGlzIHRvIGNhcHR1
cmUgc29tZQorICAgIC8vIG1vcmUgb3IgbGVzcyByZWFsaXNpdGljIGNvbnRlbnRpb24gbGV2ZWxz
LgorICAgIC8vIElmIGNvbnRlbnRpb24gaXMgdG9vIGxvdywgdGhlIGJlbmNobWFyayB3b24ndCBt
ZWFzdXJlIGFueXRoaW5nIHVzZWZ1bC4KKyAgICAvLyBJZiBjb250ZW50aW9uIGlzIHVucmVhbGlz
dGljYWxseSBoaWdoLCB0aGUgYmVuY2htYXJrIHdpbGwgZmF2b3IKKyAgICAvLyBiYWQgbXV0ZXgg
aW1wbGVtZW50YXRpb25zIHRoYXQgYmxvY2sgYW5kIG90aGVyd2lzZSBkaXN0cmFjdCB0aHJlYWRz
CisgICAgLy8gZnJvbSB0aGUgbXV0ZXggYW5kIHNoYXJlZCBzdGF0ZSBmb3IgYXMgbXVjaCBhcyBw
b3NzaWJsZS4KKyAgICAvLyBUbyBhY2hpZXZlIHRoaXMgYW1vdW50IG9mIGxvY2FsIHdvcmsgaXMg
bXVsdGlwbGllZCBieSBudW1iZXIgb2YgdGhyZWFkcworICAgIC8vIHRvIGtlZXAgcmF0aW8gYmV0
d2VlbiBsb2NhbCB3b3JrIGFuZCBjcml0aWNhbCBzZWN0aW9uIGFwcHJveGltYXRlbHkKKyAgICAv
LyBlcXVhbCByZWdhcmRsZXNzIG9mIG51bWJlciBvZiB0aHJlYWRzLgorICAgIERlbGF5TnMoMTAw
ICogc3RhdGUudGhyZWFkcywgJmxvY2FsKTsKKyAgICBSYWlpTG9ja2VyPE11dGV4VHlwZT4gbG9j
a2VyKCZzaGFyZWQtPm11KTsKKyAgICBEZWxheU5zKHN0YXRlLnJhbmdlKDApLCAmc2hhcmVkLT5k
YXRhKTsKKyAgfQorfQorCitCRU5DSE1BUktfVEVNUExBVEUoQk1fQ29udGVuZGVkLCBhYnNsOjpN
dXRleCkKKyAgICAtPlVzZVJlYWxUaW1lKCkKKyAgICAvLyBUaHJlYWRQZXJDcHUgcG9vcmx5IGhh
bmRsZXMgbm9uLXBvd2VyLW9mLXR3byBDUFUgY291bnRzLgorICAgIC0+VGhyZWFkcygxKQorICAg
IC0+VGhyZWFkcygyKQorICAgIC0+VGhyZWFkcyg0KQorICAgIC0+VGhyZWFkcyg2KQorICAgIC0+
VGhyZWFkcyg4KQorICAgIC0+VGhyZWFkcygxMikKKyAgICAtPlRocmVhZHMoMTYpCisgICAgLT5U
aHJlYWRzKDI0KQorICAgIC0+VGhyZWFkcygzMikKKyAgICAtPlRocmVhZHMoNDgpCisgICAgLT5U
aHJlYWRzKDY0KQorICAgIC0+VGhyZWFkcyg5NikKKyAgICAtPlRocmVhZHMoMTI4KQorICAgIC0+
VGhyZWFkcygxOTIpCisgICAgLT5UaHJlYWRzKDI1NikKKyAgICAvLyBTb21lIGVtcGlyaWNhbGx5
IGNob3NlbiBhbW91bnRzIG9mIHdvcmsgaW4gY3JpdGljYWwgc2VjdGlvbi4KKyAgICAvLyAxIGlz
IGxvdyBjb250ZW50aW9uLCAyMDAgaXMgaGlnaCBjb250ZW50aW9uIGFuZCBmZXcgdmFsdWVzIGlu
IGJldHdlZW4uCisgICAgLT5BcmcoMSkKKyAgICAtPkFyZygyMCkKKyAgICAtPkFyZyg1MCkKKyAg
ICAtPkFyZygyMDApOworCitCRU5DSE1BUktfVEVNUExBVEUoQk1fQ29udGVuZGVkLCBhYnNsOjpi
YXNlX2ludGVybmFsOjpTcGluTG9jaykKKyAgICAtPlVzZVJlYWxUaW1lKCkKKyAgICAvLyBUaHJl
YWRQZXJDcHUgcG9vcmx5IGhhbmRsZXMgbm9uLXBvd2VyLW9mLXR3byBDUFUgY291bnRzLgorICAg
IC0+VGhyZWFkcygxKQorICAgIC0+VGhyZWFkcygyKQorICAgIC0+VGhyZWFkcyg0KQorICAgIC0+
VGhyZWFkcyg2KQorICAgIC0+VGhyZWFkcyg4KQorICAgIC0+VGhyZWFkcygxMikKKyAgICAtPlRo
cmVhZHMoMTYpCisgICAgLT5UaHJlYWRzKDI0KQorICAgIC0+VGhyZWFkcygzMikKKyAgICAtPlRo
cmVhZHMoNDgpCisgICAgLT5UaHJlYWRzKDY0KQorICAgIC0+VGhyZWFkcyg5NikKKyAgICAtPlRo
cmVhZHMoMTI4KQorICAgIC0+VGhyZWFkcygxOTIpCisgICAgLT5UaHJlYWRzKDI1NikKKyAgICAv
LyBTb21lIGVtcGlyaWNhbGx5IGNob3NlbiBhbW91bnRzIG9mIHdvcmsgaW4gY3JpdGljYWwgc2Vj
dGlvbi4KKyAgICAvLyAxIGlzIGxvdyBjb250ZW50aW9uLCAyMDAgaXMgaGlnaCBjb250ZW50aW9u
IGFuZCBmZXcgdmFsdWVzIGluIGJldHdlZW4uCisgICAgLT5BcmcoMSkKKyAgICAtPkFyZygyMCkK
KyAgICAtPkFyZyg1MCkKKyAgICAtPkFyZygyMDApOworCitCRU5DSE1BUktfVEVNUExBVEUoQk1f
Q29udGVuZGVkLCBzdGQ6Om11dGV4KQorICAgIC0+VXNlUmVhbFRpbWUoKQorICAgIC8vIFRocmVh
ZFBlckNwdSBwb29ybHkgaGFuZGxlcyBub24tcG93ZXItb2YtdHdvIENQVSBjb3VudHMuCisgICAg
LT5UaHJlYWRzKDEpCisgICAgLT5UaHJlYWRzKDIpCisgICAgLT5UaHJlYWRzKDQpCisgICAgLT5U
aHJlYWRzKDYpCisgICAgLT5UaHJlYWRzKDgpCisgICAgLT5UaHJlYWRzKDEyKQorICAgIC0+VGhy
ZWFkcygxNikKKyAgICAtPlRocmVhZHMoMjQpCisgICAgLT5UaHJlYWRzKDMyKQorICAgIC0+VGhy
ZWFkcyg0OCkKKyAgICAtPlRocmVhZHMoNjQpCisgICAgLT5UaHJlYWRzKDk2KQorICAgIC0+VGhy
ZWFkcygxMjgpCisgICAgLT5UaHJlYWRzKDE5MikKKyAgICAtPlRocmVhZHMoMjU2KQorICAgIC8v
IFNvbWUgZW1waXJpY2FsbHkgY2hvc2VuIGFtb3VudHMgb2Ygd29yayBpbiBjcml0aWNhbCBzZWN0
aW9uLgorICAgIC8vIDEgaXMgbG93IGNvbnRlbnRpb24sIDIwMCBpcyBoaWdoIGNvbnRlbnRpb24g
YW5kIGZldyB2YWx1ZXMgaW4gYmV0d2Vlbi4KKyAgICAtPkFyZygxKQorICAgIC0+QXJnKDIwKQor
ICAgIC0+QXJnKDUwKQorICAgIC0+QXJnKDIwMCk7CisKIC8vIE1lYXN1cmUgdGhlIG92ZXJoZWFk
IG9mIGNvbmRpdGlvbnMgb24gbXV0ZXggcmVsZWFzZSAod2hlbiB0aGV5IG11c3QgYmUKIC8vIGV2
YWx1YXRlZCkuICBNdXRleCBoYXMgKHNvbWUpIHN1cHBvcnQgZm9yIGVxdWl2YWxlbmNlIGNsYXNz
ZXMgYWxsb3dpbmcKIC8vIENvbmRpdGlvbnMgd2l0aCB0aGUgc2FtZSBmdW5jdGlvbi9hcmd1bWVu
dCB0byBwb3RlbnRpYWxseSBub3QgYmUgbXVsdGlwbHkKQEAgLTgyLDEzICsyMjAsNCBAQCBjb25z
dGV4cHIgaW50IGtNYXhDb25kaXRpb25XYWl0ZXJzID0gMTAyNDsKICNlbmRpZgogQkVOQ0hNQVJL
KEJNX0NvbmRpdGlvbldhaXRlcnMpLT5SYW5nZVBhaXIoMCwgMiwgMSwga01heENvbmRpdGlvbldh
aXRlcnMpOwogCi12b2lkIEJNX0NvbnRlbmRlZE11dGV4KGJlbmNobWFyazo6U3RhdGUmIHN0YXRl
KSB7Ci0gIHN0YXRpYyBhYnNsOjpNdXRleCogbXUgPSBuZXcgYWJzbDo6TXV0ZXg7Ci0gIGZvciAo
YXV0byBfIDogc3RhdGUpIHsKLSAgICBhYnNsOjpNdXRleExvY2sgbG9jayhtdSk7Ci0gIH0KLX0K
LUJFTkNITUFSSyhCTV9Db250ZW5kZWRNdXRleCktPlRocmVhZHMoMSk7Ci1CRU5DSE1BUksoQk1f
Q29udGVuZGVkTXV0ZXgpLT5UaHJlYWRQZXJDcHUoKTsKLQogfSAgLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXhfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNo
cm9uaXphdGlvbi9tdXRleF90ZXN0LmNjCmluZGV4IGIyODIwZTIwNjhkLi4zYzUwMTE5MjZkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4X3Rlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL211dGV4X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDcgKzE0LDcgQEAKIAogI2luY2x1ZGUgImFic2wvc3lu
Y2hyb25pemF0aW9uL211dGV4LmgiCiAKLSNpZmRlZiBXSU4zMgorI2lmZGVmIF9XSU4zMgogI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCkBAIC00MjUsMTAgKzQyNSwxMCBAQCBURVNUKE11
dGV4LCBDb25kVmFyV2FpdFNpZ25hbHNBd2FpdCkgewogICAvLyBVc2UgYSBzdHJ1Y3Qgc28gdGhl
IGxvY2sgYW5ub3RhdGlvbnMgYXBwbHkuCiAgIHN0cnVjdCB7CiAgICAgYWJzbDo6TXV0ZXggYmFy
cmllcl9tdTsKLSAgICBib29sIGJhcnJpZXIgR1VBUkRFRF9CWShiYXJyaWVyX211KSA9IGZhbHNl
OworICAgIGJvb2wgYmFycmllciBBQlNMX0dVQVJERURfQlkoYmFycmllcl9tdSkgPSBmYWxzZTsK
IAogICAgIGFic2w6Ok11dGV4IHJlbGVhc2VfbXU7Ci0gICAgYm9vbCByZWxlYXNlIEdVQVJERURf
QlkocmVsZWFzZV9tdSkgPSBmYWxzZTsKKyAgICBib29sIHJlbGVhc2UgQUJTTF9HVUFSREVEX0JZ
KHJlbGVhc2VfbXUpID0gZmFsc2U7CiAgICAgYWJzbDo6Q29uZFZhciByZWxlYXNlZF9jdjsKICAg
fSBzdGF0ZTsKIApAQCAtNDY2LDEwICs0NjYsMTAgQEAgVEVTVChNdXRleCwgQ29uZFZhcldhaXRX
aXRoVGltZW91dFNpZ25hbHNBd2FpdCkgewogICAvLyBVc2UgYSBzdHJ1Y3Qgc28gdGhlIGxvY2sg
YW5ub3RhdGlvbnMgYXBwbHkuCiAgIHN0cnVjdCB7CiAgICAgYWJzbDo6TXV0ZXggYmFycmllcl9t
dTsKLSAgICBib29sIGJhcnJpZXIgR1VBUkRFRF9CWShiYXJyaWVyX211KSA9IGZhbHNlOworICAg
IGJvb2wgYmFycmllciBBQlNMX0dVQVJERURfQlkoYmFycmllcl9tdSkgPSBmYWxzZTsKIAogICAg
IGFic2w6Ok11dGV4IHJlbGVhc2VfbXU7Ci0gICAgYm9vbCByZWxlYXNlIEdVQVJERURfQlkocmVs
ZWFzZV9tdSkgPSBmYWxzZTsKKyAgICBib29sIHJlbGVhc2UgQUJTTF9HVUFSREVEX0JZKHJlbGVh
c2VfbXUpID0gZmFsc2U7CiAgICAgYWJzbDo6Q29uZFZhciByZWxlYXNlZF9jdjsKICAgfSBzdGF0
ZTsKIApAQCAtNjEwLDkgKzYxMCw5IEBAIFRFU1RfUChDb25kVmFyV2FpdERlYWRsb2NrLCBUZXN0
KSB7CiAgIHdhaXRlcjIucmVzZXQoKTsgIC8vICJqb2luIiB3YWl0ZXIyCiB9CiAKLUlOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKENvbmRWYXJXYWl0RGVhZGxvY2tUZXN0LCBDb25kVmFyV2FpdERlYWRs
b2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpSYW5nZSgwLCA4KSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgp
KTsKK0lOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUChDb25kVmFyV2FpdERlYWRsb2NrVGVzdCwgQ29u
ZFZhcldhaXREZWFkbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlJh
bmdlKDAsIDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZ1BhcmFtTmFtZSgpKTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFRlc3QgZm9yIGZpeCBvZiBidWcgaW4gRGVxdWV1
ZUFsbFdha2VhYmxlKCkKQEAgLTc3MCw3ICs3NzAsNyBAQCBzdGF0aWMgdm9pZCBHZXRSZWFkTG9j
ayhSZWFkZXJEZWNyZW1lbnRCdWdTdHJ1Y3QgKngpIHsKIAogLy8gVGVzdCBmb3IgcmVhZGVyIGNv
dW50ZXIgYmVpbmcgZGVjcmVtZW50ZWQgaW5jb3JyZWN0bHkgYnkgd2FpdGVyCiAvLyB3aXRoIGZh
bHNlIGNvbmRpdGlvbi4KLVRFU1QoTXV0ZXgsIE11dGV4UmVhZGVyRGVjcmVtZW50QnVnKSBOT19U
SFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKK1RFU1QoTXV0ZXgsIE11dGV4UmVhZGVyRGVjcmVtZW50
QnVnKSBBQlNMX05PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgewogICBSZWFkZXJEZWNyZW1lbnRC
dWdTdHJ1Y3QgeDsKICAgeC5jb25kID0gZmFsc2U7CiAgIHgud2FpdGluZ19vbl9jb25kID0gZmFs
c2U7CkBAIC04MTUsNyArODE1LDEyIEBAIFRFU1QoTXV0ZXgsIE11dGV4UmVhZGVyRGVjcmVtZW50
QnVnKSBOT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKIAogLy8gVGVzdCB0aGF0IHdlIGNvcnJl
Y3RseSBoYW5kbGUgdGhlIHNpdHVhdGlvbiB3aGVuIGEgbG9jayBpcwogLy8gaGVsZCBhbmQgdGhl
biBkZXN0cm95ZWQgKHcvbyB1bmxvY2tpbmcpLgotVEVTVChNdXRleCwgTG9ja2VkTXV0ZXhEZXN0
cnVjdGlvbkJ1ZykgTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7CisjaWZkZWYgVEhSRUFEX1NB
TklUSVpFUgorLy8gVFNBTiByZXBvcnRzIGVycm9ycyB3aGVuIGxvY2tlZCBNdXRleGVzIGFyZSBk
ZXN0cm95ZWQuCitURVNUKE11dGV4LCBESVNBQkxFRF9Mb2NrZWRNdXRleERlc3RydWN0aW9uQnVn
KSBBQlNMX05PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeworI2Vsc2UKK1RFU1QoTXV0ZXgsIExv
Y2tlZE11dGV4RGVzdHJ1Y3Rpb25CdWcpIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7
CisjZW5kaWYKICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gMTA7IGkrKykgewogICAgIC8vIENyZWF0
ZSwgbG9jayBhbmQgZGVzdHJveSAxMCBsb2Nrcy4KICAgICBjb25zdCBpbnQga051bUxvY2tzID0g
MTA7CkBAIC0xMDMwLDExICsxMDM1LDExIEBAIFRFU1QoTXV0ZXgsIERlYWRsb2NrRGV0ZWN0b3Ip
IHsKIGNsYXNzIFNjb3BlZERpc2FibGVCYXplbFRlc3RXYXJuaW5ncyB7CiAgcHVibGljOgogICBT
Y29wZWREaXNhYmxlQmF6ZWxUZXN0V2FybmluZ3MoKSB7Ci0jaWZkZWYgV0lOMzIKKyNpZmRlZiBf
V0lOMzIKICAgICBjaGFyIGZpbGVbTUFYX1BBVEhdOwotICAgIGlmIChHZXRFbnZpcm9ubWVudFZh
cmlhYmxlKGtWYXJOYW1lLCBmaWxlLCBzaXplb2YoZmlsZSkpIDwgc2l6ZW9mKGZpbGUpKSB7Cisg
ICAgaWYgKEdldEVudmlyb25tZW50VmFyaWFibGVBKGtWYXJOYW1lLCBmaWxlLCBzaXplb2YoZmls
ZSkpIDwgc2l6ZW9mKGZpbGUpKSB7CiAgICAgICB3YXJuaW5nc19vdXRwdXRfZmlsZV8gPSBmaWxl
OwotICAgICAgU2V0RW52aXJvbm1lbnRWYXJpYWJsZShrVmFyTmFtZSwgbnVsbHB0cik7CisgICAg
ICBTZXRFbnZpcm9ubWVudFZhcmlhYmxlQShrVmFyTmFtZSwgbnVsbHB0cik7CiAgICAgfQogI2Vs
c2UKICAgICBjb25zdCBjaGFyICpmaWxlID0gZ2V0ZW52KGtWYXJOYW1lKTsKQEAgLTEwNDcsOCAr
MTA1Miw4IEBAIGNsYXNzIFNjb3BlZERpc2FibGVCYXplbFRlc3RXYXJuaW5ncyB7CiAKICAgflNj
b3BlZERpc2FibGVCYXplbFRlc3RXYXJuaW5ncygpIHsKICAgICBpZiAoIXdhcm5pbmdzX291dHB1
dF9maWxlXy5lbXB0eSgpKSB7Ci0jaWZkZWYgV0lOMzIKLSAgICAgIFNldEVudmlyb25tZW50VmFy
aWFibGUoa1Zhck5hbWUsIHdhcm5pbmdzX291dHB1dF9maWxlXy5jX3N0cigpKTsKKyNpZmRlZiBf
V0lOMzIKKyAgICAgIFNldEVudmlyb25tZW50VmFyaWFibGVBKGtWYXJOYW1lLCB3YXJuaW5nc19v
dXRwdXRfZmlsZV8uY19zdHIoKSk7CiAjZWxzZQogICAgICAgc2V0ZW52KGtWYXJOYW1lLCB3YXJu
aW5nc19vdXRwdXRfZmlsZV8uY19zdHIoKSwgMCk7CiAjZW5kaWYKQEAgLTEwNjIsNyArMTA2Nywx
MiBAQCBjbGFzcyBTY29wZWREaXNhYmxlQmF6ZWxUZXN0V2FybmluZ3MgewogY29uc3QgY2hhciBT
Y29wZWREaXNhYmxlQmF6ZWxUZXN0V2FybmluZ3M6OmtWYXJOYW1lW10gPQogICAgICJURVNUX1dB
Uk5JTkdTX09VVFBVVF9GSUxFIjsKIAorI2lmZGVmIFRIUkVBRF9TQU5JVElaRVIKKy8vIFRoaXMg
dGVzdCBpbnRlbnRpb25hbGx5IGNyZWF0ZXMgZGVhZGxvY2tzIHRvIHRlc3QgdGhlIGRlYWRsb2Nr
IGRldGVjdG9yLgorVEVTVChNdXRleCwgRElTQUJMRURfRGVhZGxvY2tEZXRlY3RvckJhemVsV2Fy
bmluZykgeworI2Vsc2UKIFRFU1QoTXV0ZXgsIERlYWRsb2NrRGV0ZWN0b3JCYXplbFdhcm5pbmcp
IHsKKyNlbmRpZgogICBhYnNsOjpTZXRNdXRleERlYWRsb2NrRGV0ZWN0aW9uTW9kZShhYnNsOjpP
bkRlYWRsb2NrQ3ljbGU6OmtSZXBvcnQpOwogCiAgIC8vIENhdXNlIGRlYWRsb2NrIGRldGVjdGlv
biB0byBkZXRlY3Qgc29tZXRoaW5nLCBpZiBpdCdzCkBAIC0xMDg3LDExICsxMDk3LDExIEBAIFRF
U1QoTXV0ZXgsIERlYWRsb2NrRGV0ZWN0b3JCYXplbFdhcm5pbmcpIHsKICAgYWJzbDo6U2V0TXV0
ZXhEZWFkbG9ja0RldGVjdGlvbk1vZGUoYWJzbDo6T25EZWFkbG9ja0N5Y2xlOjprQWJvcnQpOwog
fQogCi0vLyBUaGlzIHRlc3QgaXMgdGFnZ2VkIHdpdGggTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UyBiZWNhdXNlIHRoZQorLy8gVGhpcyB0ZXN0IGlzIHRhZ2dlZCB3aXRoIEFCU0xfTk9fVEhSRUFE
X1NBRkVUWV9BTkFMWVNJUyBiZWNhdXNlIHRoZQogLy8gYW5ub3RhdGlvbi1iYXNlZCBzdGF0aWMg
dGhyZWFkLXNhZmV0eSBhbmFseXNpcyBpcyBub3QgY3VycmVudGx5CiAvLyBwcmVkaWNhdGUtYXdh
cmUgYW5kIGNhbm5vdCB0ZWxsIGlmIHRoZSB0d28gZm9yLWxvb3BzIHRoYXQgYWNxdWlyZSBhbmQK
IC8vIHJlbGVhc2UgdGhlIGxvY2tzIGhhdmUgdGhlIHNhbWUgcHJlZGljYXRlcy4KLVRFU1QoTXV0
ZXgsIERlYWRsb2NrRGV0ZWN0b3JTdGVzc1Rlc3QpIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMg
eworVEVTVChNdXRleCwgRGVhZGxvY2tEZXRlY3RvclN0ZXNzVGVzdCkgQUJTTF9OT19USFJFQURf
U0FGRVRZX0FOQUxZU0lTIHsKICAgLy8gU3RyZXNzIHRlc3Q6IEhlcmUgd2UgY3JlYXRlIGEgbGFy
Z2UgbnVtYmVyIG9mIGxvY2tzIGFuZCB1c2UgYWxsIG9mIHRoZW0uCiAgIC8vIElmIGEgZGVhZGxv
Y2sgZGV0ZWN0b3Iga2VlcHMgYSBmdWxsIGdyYXBoIG9mIGxvY2sgYWNxdWlzaXRpb24gb3JkZXIs
CiAgIC8vIGl0IHdpbGwgbGlrZWx5IGJlIHRvbyBzbG93IGZvciB0aGlzIHRlc3QgdG8gcGFzcy4K
QEAgLTExMDksNyArMTExOSwxMiBAQCBURVNUKE11dGV4LCBEZWFkbG9ja0RldGVjdG9yU3Rlc3NU
ZXN0KSBOT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKICAgfQogfQogCi1URVNUKE11dGV4LCBE
ZWFkbG9ja0lkQnVnKSBOT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKKyNpZmRlZiBUSFJFQURf
U0FOSVRJWkVSCisvLyBUU0FOIHJlcG9ydHMgZXJyb3JzIHdoZW4gbG9ja2VkIE11dGV4ZXMgYXJl
IGRlc3Ryb3llZC4KK1RFU1QoTXV0ZXgsIERJU0FCTEVEX0RlYWRsb2NrSWRCdWcpIEFCU0xfTk9f
VEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7CisjZWxzZQorVEVTVChNdXRleCwgRGVhZGxvY2tJZEJ1
ZykgQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKKyNlbmRpZgogICAvLyBUZXN0IGEg
c2NlbmFyaW8gd2hlcmUgYSBjYWNoZWQgZGVhZGxvY2sgZ3JhcGggbm9kZSBpZCBpbiB0aGUKICAg
Ly8gbGlzdCBvZiBoZWxkIGxvY2tzIGlzIG5vdCBpbnZhbGlkYXRlZCB3aGVuIHRoZSBjb3JyZXNw
b25kaW5nCiAgIC8vIG11dGV4IGlzIGRlbGV0ZWQuCkBAIC0xMzY3LDggKzEzODIsOCBAQCBzdGQ6
OnZlY3RvcjxUaW1lb3V0VGVzdFBhcmFtPiBNYWtlVGltZW91dFRlc3RQYXJhbVZhbHVlcygpIHsK
IH0KIAogLy8gSW5zdGFudGlhdGUgYFRpbWVvdXRUZXN0YCB3aXRoIGBNYWtlVGltZW91dFRlc3RQ
YXJhbVZhbHVlcygpYC4KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbCwgVGltZW91dFRlc3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXNJbihNYWtlVGltZW91dFRl
c3RQYXJhbVZhbHVlcygpKSk7CitJTlNUQU5USUFURV9URVNUX1NVSVRFX1AoQWxsLCBUaW1lb3V0
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXNJbihNYWtlVGlt
ZW91dFRlc3RQYXJhbVZhbHVlcygpKSk7CiAKIFRFU1RfUChUaW1lb3V0VGVzdCwgQXdhaXQpIHsK
ICAgY29uc3QgVGltZW91dFRlc3RQYXJhbSBwYXJhbXMgPSBHZXRQYXJhbSgpOwpAQCAtMTU0OCw5
ICsxNTYzLDkgQEAgc3RhdGljIHN0ZDo6dmVjdG9yPGludD4gQWxsVGhyZWFkQ291bnRWYWx1ZXMo
KSB7CiBjbGFzcyBNdXRleFZhcmlhYmxlVGhyZWFkQ291bnRUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwogCiAvLyBJbnN0YW50aWF0ZSB0aGUgYWJvdmUgd2l0
aCBBbGxUaHJlYWRDb3VudE9wdGlvbnMoKS4KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFRocmVh
ZENvdW50cywgTXV0ZXhWYXJpYWJsZVRocmVhZENvdW50VGVzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4oQWxsVGhyZWFkQ291bnRWYWx1ZXMoKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSk7
CitJTlNUQU5USUFURV9URVNUX1NVSVRFX1AoVGhyZWFkQ291bnRzLCBNdXRleFZhcmlhYmxlVGhy
ZWFkQ291bnRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVz
SW4oQWxsVGhyZWFkQ291bnRWYWx1ZXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOwogCiAvLyBSZWR1Y2VzIGl0ZXJhdGlv
bnMgYnkgc29tZSBmYWN0b3IgZm9yIHNsb3cgcGxhdGZvcm1zCiAvLyAoZGV0ZXJtaW5lZCBlbXBp
cmljYWxseSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9u
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL25vdGlmaWNhdGlvbi5jYwppbmRleCBlZDhjYzkw
Njc3NC4uNTNhY2UwMDg3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3Rp
ZmljYXRpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL25vdGlmaWNhdGlvbi5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjIsNiArMjIsNyBA
QAogI2luY2x1ZGUgImFic2wvdGltZS90aW1lLmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKKwogdm9p
ZCBOb3RpZmljYXRpb246Ok5vdGlmeSgpIHsKICAgTXV0ZXhMb2NrIGwoJnRoaXMtPm11dGV4Xyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb24uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb24uaAppbmRleCAxMDc5MzJmMjkwOS4uODJk
MTExYTU0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb24u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uLmgKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTUyLDYgKzUyLDcgQEAKIAogI2luY2x1
ZGUgPGF0b21pYz4KIAorI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKICNpbmNsdWRlICJh
YnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgogI2luY2x1ZGUgImFic2wvdGltZS90aW1lLmgi
CiAKQEAgLTEwOSw0ICsxMTAsNSBAQCBjbGFzcyBOb3RpZmljYXRpb24gewogfTsKIAogfSAgLy8g
bmFtZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBBQlNMX1NZTkNIUk9OSVpBVElPTl9OT1RJRklD
QVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb25f
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb25fdGVzdC5jYwppbmRl
eCBkODcwOGQ1NTFhMS4uMDU5ZDRjZDI1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9ub3RpZmljYXRpb25fdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbm90
aWZpY2F0aW9uX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTcyLDEyICs3MiwxNiBAQCBzdGF0aWMgdm9pZCBCYXNpY1Rlc3RzKGJvb2wgbm90aWZ5
X2JlZm9yZV93YWl0aW5nLCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikgewogICBFWFBFQ1Rf
RkFMU0Uobm90aWZpY2F0aW9uLT5XYWl0Rm9yTm90aWZpY2F0aW9uV2l0aERlYWRsaW5lKGFic2w6
Ok5vdygpKSk7CiAKICAgY29uc3QgYWJzbDo6RHVyYXRpb24gZGVsYXkgPSBhYnNsOjpNaWxsaXNl
Y29uZHMoNTApOworICBjb25zdCBhYnNsOjpUaW1lIHN0YXJ0ID0gYWJzbDo6Tm93KCk7CisgIEVY
UEVDVF9GQUxTRShub3RpZmljYXRpb24tPldhaXRGb3JOb3RpZmljYXRpb25XaXRoVGltZW91dChk
ZWxheSkpOworICBjb25zdCBhYnNsOjpEdXJhdGlvbiBlbGFwc2VkID0gYWJzbDo6Tm93KCkgLSBz
dGFydDsKKwogICAvLyBBbGxvdyBmb3IgYSBzbGlnaHQgZWFybHkgcmV0dXJuLCB0byBhY2NvdW50
IGZvciBxdWFsaXR5IG9mIGltcGxlbWVudGF0aW9uCiAgIC8vIGlzc3VlcyBvbiB2YXJpb3VzIHBs
YXRmb3Jtcy4KICAgY29uc3QgYWJzbDo6RHVyYXRpb24gc2xvcCA9IGFic2w6Ok1pY3Jvc2Vjb25k
cygyMDApOwotICBhYnNsOjpUaW1lIHN0YXJ0ID0gYWJzbDo6Tm93KCk7Ci0gIEVYUEVDVF9GQUxT
RShub3RpZmljYXRpb24tPldhaXRGb3JOb3RpZmljYXRpb25XaXRoVGltZW91dChkZWxheSkpOwot
ICBFWFBFQ1RfTEUoc3RhcnQgKyBkZWxheSwgYWJzbDo6Tm93KCkgKyBzbG9wKTsKKyAgRVhQRUNU
X0xFKGRlbGF5IC0gc2xvcCwgZWxhcHNlZCkKKyAgICAgIDw8ICJXYWl0Rm9yTm90aWZpY2F0aW9u
V2l0aFRpbWVvdXQgcmV0dXJuZWQgIiA8PCBkZWxheSAtIGVsYXBzZWQKKyAgICAgIDw8ICIgZWFy
bHkgKHdpdGggIiA8PCBzbG9wIDw8ICIgc2xvcCksIHN0YXJ0IHRpbWUgd2FzICIgPDwgc3RhcnQ7
CiAKICAgVGhyZWFkU2FmZUNvdW50ZXIgcmVhZHlfY291bnRlcjsKICAgVGhyZWFkU2FmZUNvdW50
ZXIgZG9uZV9jb3VudGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9CVUlMRC5iYXplbCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvQlVJTEQuYmF6ZWwKaW5kZXggYzdjMTZkNDM3NmMuLjU1ZTgzYThjOGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL0JVSUxELmJhemVsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvQlVJTEQuYmF6
ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNSw4ICsxNSw5IEBACiAj
CiAKIGxvYWQoCi0gICAgIi8vYWJzbDpjb3B0cy5iemwiLAorICAgICIvL2Fic2w6Y29wdHMvY29u
ZmlndXJlX2NvcHRzLmJ6bCIsCiAgICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCisgICAgIkFCU0xf
REVGQVVMVF9MSU5LT1BUUyIsCiAgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiApCiAKQEAgLTI3LDYg
KzI4LDcgQEAgbGljZW5zZXMoWyJub3RpY2UiXSkgICMgQXBhY2hlIDIuMAogY2NfbGlicmFyeSgK
ICAgICBuYW1lID0gInRpbWUiLAogICAgIHNyY3MgPSBbCisgICAgICAgICJjaXZpbF90aW1lLmNj
IiwKICAgICAgICAgImNsb2NrLmNjIiwKICAgICAgICAgImR1cmF0aW9uLmNjIiwKICAgICAgICAg
ImZvcm1hdC5jYyIsCkBAIC0zNSwxMCArMzcsMTIgQEAgY2NfbGlicmFyeSgKICAgICAgICAgInRp
bWUuY2MiLAogICAgIF0sCiAgICAgaGRycyA9IFsKKyAgICAgICAgImNpdmlsX3RpbWUuaCIsCiAg
ICAgICAgICJjbG9jay5oIiwKICAgICAgICAgInRpbWUuaCIsCiAgICAgXSwKICAgICBjb3B0cyA9
IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2UiLAogICAgICAgICAiLy9hYnNs
L2Jhc2U6Y29yZV9oZWFkZXJzIiwKQEAgLTU4LDYgKzYyLDcgQEAgY2NfbGlicmFyeSgKICAgICBd
LAogICAgIGhkcnMgPSBbImludGVybmFsL3Rlc3RfdXRpbC5oIl0sCiAgICAgY29wdHMgPSBBQlNM
X0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgdmlzaWJpbGl0eSA9IFsKICAgICAgICAgIi8vYWJzbC90aW1lOl9fcGtnX18iLAogICAgIF0s
CkBAIC03MiwxNCArNzcsMTUgQEAgY2NfbGlicmFyeSgKIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJ0
aW1lX3Rlc3QiLAogICAgIHNyY3MgPSBbCisgICAgICAgICJjaXZpbF90aW1lX3Rlc3QuY2MiLAog
ICAgICAgICAiY2xvY2tfdGVzdC5jYyIsCiAgICAgICAgICJkdXJhdGlvbl90ZXN0LmNjIiwKICAg
ICAgICAgImZvcm1hdF90ZXN0LmNjIiwKLSAgICAgICAgInRpbWVfbm9ybV90ZXN0LmNjIiwKICAg
ICAgICAgInRpbWVfdGVzdC5jYyIsCiAgICAgICAgICJ0aW1lX3pvbmVfdGVzdC5jYyIsCiAgICAg
XSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnRlc3RfdXRpbCIsCiAgICAg
ICAgICI6dGltZSIsCkBAIC05NCwxMiArMTAwLDE0IEBAIGNjX3Rlc3QoCiBjY190ZXN0KAogICAg
IG5hbWUgPSAidGltZV9iZW5jaG1hcmsiLAogICAgIHNyY3MgPSBbCisgICAgICAgICJjaXZpbF90
aW1lX2JlbmNobWFyay5jYyIsCiAgICAgICAgICJjbG9ja19iZW5jaG1hcmsuY2MiLAogICAgICAg
ICAiZHVyYXRpb25fYmVuY2htYXJrLmNjIiwKICAgICAgICAgImZvcm1hdF9iZW5jaG1hcmsuY2Mi
LAogICAgICAgICAidGltZV9iZW5jaG1hcmsuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNM
X1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAg
dGFncyA9IFsKICAgICAgICAgImJlbmNobWFyayIsCiAgICAgXSwKQEAgLTEwNyw2ICsxMTUsOCBA
QCBjY190ZXN0KAogICAgICAgICAiOnRlc3RfdXRpbCIsCiAgICAgICAgICI6dGltZSIsCiAgICAg
ICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAor
ICAgICAgICAiLy9hYnNsL2hhc2giLAogICAgICAgICAiQGNvbV9naXRodWJfZ29vZ2xlX2JlbmNo
bWFyay8vOmJlbmNobWFya19tYWluIiwKICAgICBdLAogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvQlVJTEQuZ24KaW5kZXggNTc1OGU5ZGMxZTMuLjAxMzVj
ZGRjZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
QlVJTEQuZ24KQEAgLTQsOCArNCwxNSBAQAogCiBpbXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVzL2J1
aWxkLmduaSIpCiAKKyMgVXNhZ2Ugb2YgQWJzZWlsIGluIENocm9taXVtIGlzIGd1YXJkZWQgYnkg
YW4gZXhwbGljaXQgb3B0LWluIGxpc3QsIGJlZm9yZQorIyBhZGRpbmcgcHJvamVjdHMgdG8gdGhp
cyBsaXN0IHBsZWFzZSByZWFjaCBvdXQgdG8gY3h4QGNocm9taXVtLm9yZyBhbmQgQ0M6CisjIC0g
aHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvT1dORVJTCisjCisjIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGF0OgorIyBodHRw
czovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFEZ1MxLUEzcnpib1RManBmNG0xc3FrSmdX
am5ZX1J1MmRva2sxWDF2QkRVCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICB2aXNpYmls
aXR5ID0gWworICAgICIvL2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS93ZWJy
dGMvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKICAgICAiLy90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKQEAgLTIyLDYgKzI5LDcgQEAgc291cmNlX3NldCgidGlt
ZSIpIHsKICAgXQogICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCiAgIHNvdXJjZXMgPSBbCisgICAgImNpdmlsX3RpbWUu
Y2MiLAogICAgICJjbG9jay5jYyIsCiAgICAgImR1cmF0aW9uLmNjIiwKICAgICAiZm9ybWF0LmNj
IiwKQEAgLTMwLDYgKzM4LDcgQEAgc291cmNlX3NldCgidGltZSIpIHsKICAgICAidGltZS5jYyIs
CiAgIF0KICAgcHVibGljID0gWworICAgICJjaXZpbF90aW1lLmgiLAogICAgICJjbG9jay5oIiwK
ICAgICAidGltZS5oIiwKICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDYyNzIzNjRmMTQuLjU5MDk4MzIx
MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvQ01ha2VMaXN0cy50eHQKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0x
NCw4MyArMTQsMTE0IEBACiAjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogIwogCi1s
aXN0KEFQUEVORCBUSU1FX1BVQkxJQ19IRUFERVJTCi0gICJjbG9jay5oIgotICAidGltZS5oIgot
KQotCi0KLWxpc3QoQVBQRU5EIFRJTUVfSU5URVJOQUxfSEVBREVSUwotICAiaW50ZXJuYWwvdGVz
dF91dGlsLmgiCi0gICJpbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgiCi0g
ICJpbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lX2RldGFpbC5oIgotICAiaW50
ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmgiCi0gICJpbnRlcm5hbC9jY3R6L2lu
Y2x1ZGUvY2N0ei96b25lX2luZm9fc291cmNlLmgiCi0pCi0KLWxpc3QoQVBQRU5EIFRJTUVfU1JD
Ci0gICJ0aW1lLmNjIgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgdGltZQorICBIRFJT
CisgICAgImNpdmlsX3RpbWUuaCIKKyAgICAiY2xvY2suaCIKKyAgICAidGltZS5oIgorICBTUkNT
CisgICJjaXZpbF90aW1lLmNjIgogICAiY2xvY2suY2MiCiAgICJkdXJhdGlvbi5jYyIKICAgImZv
cm1hdC5jYyIKLSAgImludGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVfZGV0YWlsLmNjIgotICAi
aW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmNjIgotICAiaW50ZXJuYWwvY2N0ei9z
cmMvdGltZV96b25lX2ZpeGVkLmgiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZm9y
bWF0LmNjIgotICAiaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2lmLmNjIgotICAiaW50ZXJu
YWwvY2N0ei9zcmMvdGltZV96b25lX2lmLmgiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pv
bmVfaW1wbC5jYyIKLSAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbXBsLmgiCi0gICJp
bnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW5mby5jYyIKLSAgImludGVybmFsL2NjdHovc3Jj
L3RpbWVfem9uZV9pbmZvLmgiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbGliYy5j
YyIKLSAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmgiCi0gICJpbnRlcm5hbC9j
Y3R6L3NyYy90aW1lX3pvbmVfbG9va3VwLmNjIgotICAiaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96
b25lX3Bvc2l4LmNjIgotICAiaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX3Bvc2l4LmgiCi0g
ICJpbnRlcm5hbC9jY3R6L3NyYy90emZpbGUuaCIKLSAgImludGVybmFsL2NjdHovc3JjL3pvbmVf
aW5mb19zb3VyY2UuY2MiCi0gICR7VElNRV9QVUJMSUNfSEVBREVSU30KLSAgJHtUSU1FX0lOVEVS
TkFMX0hFQURFUlN9CisgICJpbnRlcm5hbC9nZXRfY3VycmVudF90aW1lX2Nocm9uby5pbmMiCisg
ICJpbnRlcm5hbC9nZXRfY3VycmVudF90aW1lX3Bvc2l4LmluYyIKKyAgInRpbWUuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisg
ICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6aW50MTI4CisgICAgYWJzbDo6c3RyaW5n
cworICAgIGFic2w6OmNpdmlsX3RpbWUKKyAgICBhYnNsOjp0aW1lX3pvbmUKKyAgUFVCTElDCiAp
Ci1zZXQoVElNRV9QVUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbDo6c3RhY2t0cmFjZSBh
YnNsOjppbnQxMjggYWJzbDo6c3RyaW5ncykKIAotYWJzbF9saWJyYXJ5KAotICBUQVJHRVQKLSAg
ICBhYnNsX3RpbWUKLSAgU09VUkNFUwotICAgICR7VElNRV9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICAke1RJTUVfUFVCTElDX0xJQlJBUklFU30KLSAgRVhQT1JUX05BTUUKLSAgICB0aW1l
CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBjaXZpbF90aW1lCisgIEhEUlMKKyAgICAi
aW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZS5oIgorICAgICJpbnRlcm5hbC9j
Y3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lX2RldGFpbC5oIgorICBTUkNTCisgICJpbnRlcm5h
bC9jY3R6L3NyYy9jaXZpbF90aW1lX2RldGFpbC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVG
QVVMVF9DT1BUU30KICkKIAoraWYoQVBQTEUpCisgIGZpbmRfbGlicmFyeShDb3JlRm91bmRhdGlv
biBDb3JlRm91bmRhdGlvbikKK2VuZGlmKCkKIAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisg
ICAgdGltZV96b25lCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGlt
ZV96b25lLmgiCisgICAgImludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3Vy
Y2UuaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZml4ZWQuY2Mi
CisgICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5oIgorICAgICJpbnRlcm5h
bC9jY3R6L3NyYy90aW1lX3pvbmVfZm9ybWF0LmNjIgorICAgICJpbnRlcm5hbC9jY3R6L3NyYy90
aW1lX3pvbmVfaWYuY2MiCisgICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pZi5oIgor
ICAgICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW1wbC5jYyIKKyAgICAiaW50ZXJuYWwv
Y2N0ei9zcmMvdGltZV96b25lX2ltcGwuaCIKKyAgICAiaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96
b25lX2luZm8uY2MiCisgICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmgiCisg
ICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmNjIgorICAgICJpbnRlcm5hbC9j
Y3R6L3NyYy90aW1lX3pvbmVfbGliYy5oIgorICAgICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pv
bmVfbG9va3VwLmNjIgorICAgICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguY2Mi
CisgICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5oIgorICAgICJpbnRlcm5h
bC9jY3R6L3NyYy90emZpbGUuaCIKKyAgICAiaW50ZXJuYWwvY2N0ei9zcmMvem9uZV9pbmZvX3Nv
dXJjZS5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAg
ICQ8JDxQTEFURk9STV9JRDpEYXJ3aW4+OiR7Q29yZUZvdW5kYXRpb259PgorKQogCi0jCi0jIyBU
RVNUUwotIwotCi0jIHRlc3QgdGltZV90ZXN0Ci1saXN0KEFQUEVORCBUSU1FX1RFU1RfU1JDCi0g
ICJ0aW1lX3Rlc3QuY2MiCi0gICJjbG9ja190ZXN0LmNjIgotICAiZHVyYXRpb25fdGVzdC5jYyIK
LSAgImZvcm1hdF90ZXN0LmNjIgotICAidGltZV9ub3JtX3Rlc3QuY2MiCi0gICJ0aW1lX3Rlc3Qu
Y2MiCi0gICJ0aW1lX3pvbmVfdGVzdC5jYyIKLSAgImludGVybmFsL3Rlc3RfdXRpbC5jYyIKK2Fi
c2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHRlc3RfdXRpbAorICBIRFJTCisgICAgImludGVy
bmFsL3Rlc3RfdXRpbC5oIgorICBTUkNTCisgICAgImludGVybmFsL3Rlc3RfdXRpbC5jYyIKKyAg
ICAiaW50ZXJuYWwvem9uZWluZm8uaW5jIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6dGltZQorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjp0
aW1lX3pvbmUKKyAgICBnbW9jaworICBURVNUT05MWQogKQotc2V0KFRJTUVfVEVTVF9QVUJMSUNf
TElCUkFSSUVTIGFic2w6OnRpbWUpCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rl
c3QoCisgIE5BTUUKICAgICB0aW1lX3Rlc3QKLSAgU09VUkNFUwotICAgICR7VElNRV9URVNUX1NS
Q30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7VElNRV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9
CisgIFNSQ1MKKyAgICAiY2l2aWxfdGltZV90ZXN0LmNjIgorICAgICJjbG9ja190ZXN0LmNjIgor
ICAgICJkdXJhdGlvbl90ZXN0LmNjIgorICAgICJmb3JtYXRfdGVzdC5jYyIKKyAgICAidGltZV90
ZXN0LmNjIgorICAgICJ0aW1lX3pvbmVfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVT
VF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnRlc3RfdXRpbAorICAgIGFic2w6OnRpbWUKKyAg
ICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisg
ICAgYWJzbDo6dGltZV96b25lCisgICAgZ21vY2tfbWFpbgogKQotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2NpdmlsX3RpbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2NpdmlsX3RpbWUuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc1MjdmYzExNzVjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9jaXZpbF90aW1lLmNjCkBAIC0wLDAgKzEsODMgQEAKKy8vIENvcHly
aWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC90aW1lL2Np
dmlsX3RpbWUuaCIKKworI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8c3RyaW5nPgorCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3RpbWUvdGlt
ZS5oIgorCituYW1lc3BhY2UgYWJzbCB7CisKK25hbWVzcGFjZSB7CisKKy8vIFNpbmNlIGEgY2l2
aWwgdGltZSBoYXMgYSBsYXJnZXIgeWVhciByYW5nZSB0aGFuIGFic2w6OlRpbWUgKDY0LWJpdCB5
ZWFycyB2cworLy8gNjQtYml0IHNlY29uZHMsIHJlc3BlY3RpdmVseSkgd2Ugbm9ybWFsaXplIHll
YXJzIHRvIHJvdWdobHkgKy8tIDQwMCB5ZWFycworLy8gYXJvdW5kIHRoZSB5ZWFyIDI0MDAsIHdo
aWNoIHdpbGwgcHJvZHVjZSBhbiBlcXVpdmFsZW50IHllYXIgaW4gYSByYW5nZSB0aGF0CisvLyBh
YnNsOjpUaW1lIGNhbiBoYW5kbGUuCitpbmxpbmUgY2l2aWxfeWVhcl90IE5vcm1hbGl6ZVllYXIo
Y2l2aWxfeWVhcl90IHllYXIpIHsKKyAgcmV0dXJuIDI0MDAgKyB5ZWFyICUgNDAwOworfQorCisv
LyBGb3JtYXRzIHRoZSBnaXZlbiBDaXZpbFNlY29uZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZv
cm1hdC4KK3N0ZDo6c3RyaW5nIEZvcm1hdFllYXJBbmQoc3RyaW5nX3ZpZXcgZm10LCBDaXZpbFNl
Y29uZCBjcykgeworICBjb25zdCBDaXZpbFNlY29uZCBuY3MoTm9ybWFsaXplWWVhcihjcy55ZWFy
KCkpLCBjcy5tb250aCgpLCBjcy5kYXkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNzLmhv
dXIoKSwgY3MubWludXRlKCksIGNzLnNlY29uZCgpKTsKKyAgY29uc3QgVGltZVpvbmUgdXRjID0g
VVRDVGltZVpvbmUoKTsKKyAgLy8gVE9ETyhhYnNsLXRlYW0pOiBBdm9pZCBjb252ZXJzaW9uIG9m
IGZtdCBzdGQ6OnN0cmluZy4KKyAgcmV0dXJuIFN0ckNhdChjcy55ZWFyKCksCisgICAgICAgICAg
ICAgICAgRm9ybWF0VGltZShzdGQ6OnN0cmluZyhmbXQpLCBGcm9tQ2l2aWwobmNzLCB1dGMpLCB1
dGMpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK3N0ZDo6c3RyaW5nIEZvcm1hdENpdmlsVGlt
ZShDaXZpbFNlY29uZCBjKSB7CisgIHJldHVybiBGb3JtYXRZZWFyQW5kKCItJW0tJWRUJUg6JU06
JVMiLCBjKTsKK30KK3N0ZDo6c3RyaW5nIEZvcm1hdENpdmlsVGltZShDaXZpbE1pbnV0ZSBjKSB7
CisgIHJldHVybiBGb3JtYXRZZWFyQW5kKCItJW0tJWRUJUg6JU0iLCBjKTsKK30KK3N0ZDo6c3Ry
aW5nIEZvcm1hdENpdmlsVGltZShDaXZpbEhvdXIgYykgeworICByZXR1cm4gRm9ybWF0WWVhckFu
ZCgiLSVtLSVkVCVIIiwgYyk7Cit9CitzdGQ6OnN0cmluZyBGb3JtYXRDaXZpbFRpbWUoQ2l2aWxE
YXkgYykgeyByZXR1cm4gRm9ybWF0WWVhckFuZCgiLSVtLSVkIiwgYyk7IH0KK3N0ZDo6c3RyaW5n
IEZvcm1hdENpdmlsVGltZShDaXZpbE1vbnRoIGMpIHsgcmV0dXJuIEZvcm1hdFllYXJBbmQoIi0l
bSIsIGMpOyB9CitzdGQ6OnN0cmluZyBGb3JtYXRDaXZpbFRpbWUoQ2l2aWxZZWFyIGMpIHsgcmV0
dXJuIEZvcm1hdFllYXJBbmQoIiIsIGMpOyB9CisKK25hbWVzcGFjZSB0aW1lX2ludGVybmFsIHsK
Kworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIENpdmlsWWVhciB5
KSB7CisgIHJldHVybiBvcyA8PCBGb3JtYXRDaXZpbFRpbWUoeSk7Cit9CitzdGQ6Om9zdHJlYW0m
IG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgQ2l2aWxNb250aCBtKSB7CisgIHJldHVybiBv
cyA8PCBGb3JtYXRDaXZpbFRpbWUobSk7Cit9CitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3Rk
Ojpvc3RyZWFtJiBvcywgQ2l2aWxEYXkgZCkgeworICByZXR1cm4gb3MgPDwgRm9ybWF0Q2l2aWxU
aW1lKGQpOworfQorc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIENp
dmlsSG91ciBoKSB7CisgIHJldHVybiBvcyA8PCBGb3JtYXRDaXZpbFRpbWUoaCk7Cit9CitzdGQ6
Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgQ2l2aWxNaW51dGUgbSkgewor
ICByZXR1cm4gb3MgPDwgRm9ybWF0Q2l2aWxUaW1lKG0pOworfQorc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIENpdmlsU2Vjb25kIHMpIHsKKyAgcmV0dXJuIG9zIDw8
IEZvcm1hdENpdmlsVGltZShzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRpbWVfaW50ZXJuYWwK
KworfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2l2aWxfdGlt
ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9jaXZpbF90aW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmJlYWY3ZDg5ODU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9j
aXZpbF90aW1lLmgKQEAgLTAsMCArMSw0ODUgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBjaXZp
bF90aW1lLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBoZWFkZXIgZmls
ZSBkZWZpbmVzIGFic3RyYWN0aW9ucyBmb3IgY29tcHV0aW5nIHdpdGggImNpdmlsIHRpbWUiLgor
Ly8gVGhlIHRlcm0gImNpdmlsIHRpbWUiIHJlZmVycyB0byB0aGUgbGVnYWxseSByZWNvZ25pemVk
IGh1bWFuLXNjYWxlIHRpbWUKKy8vIHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIHNpeCBmaWVs
ZHMgYFlZWVktTU0tREQgaGg6bW06c3NgLiBBICJkYXRlIgorLy8gaXMgcGVyaGFwcyB0aGUgbW9z
dCBjb21tb24gZXhhbXBsZSBvZiBhIGNpdmlsIHRpbWUgKHJlcHJlc2VudGVkIGhlcmUgYXMKKy8v
IGFuIGBhYnNsOjpDaXZpbERheWApLgorLy8KKy8vIE1vZGVybi1kYXkgY2l2aWwgdGltZSBmb2xs
b3dzIHRoZSBHcmVnb3JpYW4gQ2FsZW5kYXIgYW5kIGlzIGEKKy8vIHRpbWUtem9uZS1pbmRlcGVu
ZGVudCBjb25jZXB0OiBhIGNpdmlsIHRpbWUgb2YgIjIwMTUtMDYtMDEgMTI6MDA6MDAiLCBmb3IK
Ky8vIGV4YW1wbGUsIGlzIG5vdCB0aWVkIHRvIGEgdGltZSB6b25lLiBQdXQgYW5vdGhlciB3YXks
IGEgY2l2aWwgdGltZSBkb2VzIG5vdAorLy8gbWFwIHRvIGEgdW5pcXVlIHBvaW50IGluIHRpbWU7
IGEgY2l2aWwgdGltZSBtdXN0IGJlIG1hcHBlZCB0byBhbiBhYnNvbHV0ZQorLy8gdGltZSAqdGhy
b3VnaCogYSB0aW1lIHpvbmUuCisvLworLy8gQmVjYXVzZSBhIGNpdmlsIHRpbWUgaXMgd2hhdCBt
b3N0IHBlb3BsZSB0aGluayBvZiBhcyAidGltZSwiIGl0IGlzIGNvbW1vbiB0bworLy8gbWFwIGFi
c29sdXRlIHRpbWVzIHRvIGNpdmlsIHRpbWVzIHRvIHByZXNlbnQgdG8gdXNlcnMuCisvLworLy8g
VGltZSB6b25lcyBkZWZpbmUgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFic29sdXRlIGFuZCBj
aXZpbCB0aW1lcy4gR2l2ZW4gYW4KKy8vIGFic29sdXRlIG9yIGNpdmlsIHRpbWUgYW5kIGEgdGlt
ZSB6b25lLCB5b3UgY2FuIGNvbXB1dGUgdGhlIG90aGVyIHRpbWU6CisvLworLy8gICBDaXZpbCBU
aW1lID0gRihBYnNvbHV0ZSBUaW1lLCBUaW1lIFpvbmUpCisvLyAgIEFic29sdXRlIFRpbWUgPSBH
KENpdmlsIFRpbWUsIFRpbWUgWm9uZSkKKy8vCisvLyBUaGUgQWJzZWlsIHRpbWUgbGlicmFyeSBh
bGxvd3MgeW91IHRvIGNvbnN0cnVjdCBzdWNoIGNpdmlsIHRpbWVzIGZyb20KKy8vIGFic29sdXRl
IHRpbWVzOyBjb25zdWx0IHRpbWUuaCBmb3Igc3VjaCBmdW5jdGlvbmFsaXR5LgorLy8KKy8vIFRo
aXMgbGlicmFyeSBwcm92aWRlcyBzaXggY2xhc3NlcyBmb3IgY29uc3RydWN0aW5nIGNpdmlsLXRp
bWUgb2JqZWN0cywgYW5kCisvLyBwcm92aWRlcyBzZXZlcmFsIGhlbHBlciBmdW5jdGlvbnMgZm9y
IHJvdW5kaW5nLCBpdGVyYXRpbmcsIGFuZCBwZXJmb3JtaW5nCisvLyBhcml0aG1ldGljIG9uIGNp
dmlsLXRpbWUgb2JqZWN0cywgd2hpbGUgYXZvaWRpbmcgY29tcGxpY2F0aW9ucyBsaWtlCisvLyBk
YXlsaWdodC1zYXZpbmcgdGltZSAoRFNUKToKKy8vCisvLyAgICogYGFic2w6OkNpdmlsU2Vjb25k
YAorLy8gICAqIGBhYnNsOjpDaXZpbE1pbnV0ZWAKKy8vICAgKiBgYWJzbDo6Q2l2aWxIb3VyYAor
Ly8gICAqIGBhYnNsOjpDaXZpbERheWAKKy8vICAgKiBgYWJzbDo6Q2l2aWxNb250aGAKKy8vICAg
KiBgYWJzbDo6Q2l2aWxZZWFyYAorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICAvLyBDb25zdHJ1
Y3QgYSBjaXZpbC10aW1lIG9iamVjdCBmb3IgYSBzcGVjaWZpYyBkYXkKKy8vICAgY29uc3QgYWJz
bDo6Q2l2aWxEYXkgY2QoMTk2OSwgMDcsIDIwKTsKKy8vCisvLyAgIC8vIENvbnN0cnVjdCBhIGNp
dmlsLXRpbWUgb2JqZWN0IGZvciBhIHNwZWNpZmljIHNlY29uZAorLy8gICBjb25zdCBhYnNsOjpD
aXZpbFNlY29uZCBjZCgyMDE4LCA4LCAxLCAxMiwgMCwgMSk7CisvLworLy8gTm90ZTogSW4gQysr
MTQgYW5kIGxhdGVyLCB0aGlzIGxpYnJhcnkgaXMgdXNhYmxlIGluIGEgY29uc3RleHByIGNvbnRl
eHQuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIC8vIFZhbGlkIGluIEMrKzE0CisvLyAgIGNv
bnN0ZXhwciBhYnNsOjpDaXZpbERheSBjZCgxOTY5LCAwNywgMjApOworCisjaWZuZGVmIEFCU0xf
VElNRV9DSVZJTF9USU1FX0hfCisjZGVmaW5lIEFCU0xfVElNRV9DSVZJTF9USU1FX0hfCisKKyNp
bmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIK
KyNpbmNsdWRlICJhYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGlt
ZS5oIgorCituYW1lc3BhY2UgYWJzbCB7CisKK25hbWVzcGFjZSB0aW1lX2ludGVybmFsIHsKK3N0
cnVjdCBzZWNvbmRfdGFnIDogY2N0ejo6ZGV0YWlsOjpzZWNvbmRfdGFnIHt9Oworc3RydWN0IG1p
bnV0ZV90YWcgOiBzZWNvbmRfdGFnLCBjY3R6OjpkZXRhaWw6Om1pbnV0ZV90YWcge307CitzdHJ1
Y3QgaG91cl90YWcgOiBtaW51dGVfdGFnLCBjY3R6OjpkZXRhaWw6OmhvdXJfdGFnIHt9Oworc3Ry
dWN0IGRheV90YWcgOiBob3VyX3RhZywgY2N0ejo6ZGV0YWlsOjpkYXlfdGFnIHt9Oworc3RydWN0
IG1vbnRoX3RhZyA6IGRheV90YWcsIGNjdHo6OmRldGFpbDo6bW9udGhfdGFnIHt9Oworc3RydWN0
IHllYXJfdGFnIDogbW9udGhfdGFnLCBjY3R6OjpkZXRhaWw6OnllYXJfdGFnIHt9OworfSAgLy8g
bmFtZXNwYWNlIHRpbWVfaW50ZXJuYWwKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENp
dmlsU2Vjb25kLCBDaXZpbE1pbnV0ZSwgQ2l2aWxIb3VyLCBDaXZpbERheSwgQ2l2aWxNb250aCwg
Q2l2aWxZZWFyCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEVhY2ggb2YgdGhlc2Ug
Y2l2aWwtdGltZSB0eXBlcyBpcyBhIHNpbXBsZSB2YWx1ZSB0eXBlIHdpdGggdGhlIHNhbWUKKy8v
IGludGVyZmFjZSBmb3IgY29uc3RydWN0aW9uIGFuZCB0aGUgc2FtZSBzaXggYWNjZXNzb3JzIGZv
ciBlYWNoIG9mIHRoZSBjaXZpbAorLy8gdGltZSBmaWVsZHMgKHllYXIsIG1vbnRoLCBkYXksIGhv
dXIsIG1pbnV0ZSwgYW5kIHNlY29uZCwgYWthIFlNREhNUykuIFRoZXNlCisvLyBjbGFzc2VzIGRp
ZmZlciBvbmx5IGluIHRoZWlyIGFsaWdubWVudCwgd2hpY2ggaXMgaW5kaWNhdGVkIGJ5IHRoZSB0
eXBlIG5hbWUKKy8vIGFuZCBzcGVjaWZpZXMgdGhlIGZpZWxkIG9uIHdoaWNoIGFyaXRobWV0aWMg
b3BlcmF0ZXMuCisvLworLy8gQ09OU1RSVUNUSU9OCisvLworLy8gRWFjaCBvZiB0aGUgY2l2aWwt
dGltZSB0eXBlcyBjYW4gYmUgY29uc3RydWN0ZWQgaW4gdHdvIHdheXM6IGJ5IGRpcmVjdGx5Cisv
LyBwYXNzaW5nIHRvIHRoZSBjb25zdHJ1Y3RvciB1cCB0byBzaXggaW50ZWdlcnMgcmVwcmVzZW50
aW5nIHRoZSBZTURITVMgZmllbGRzLAorLy8gb3IgYnkgY29weWluZyB0aGUgWU1ESE1TIGZpZWxk
cyBmcm9tIGEgZGlmZmVyZW50bHkgYWxpZ25lZCBjaXZpbC10aW1lIHR5cGUuCisvLyBPbWl0dGVk
IGZpZWxkcyBhcmUgYXNzaWduZWQgdGhlaXIgbWluaW11bSB2YWxpZCB2YWx1ZS4gSG91cnMsIG1p
bnV0ZXMsIGFuZAorLy8gc2Vjb25kcyB3aWxsIGJlIHNldCB0byAwLCBtb250aCBhbmQgZGF5IHdp
bGwgYmUgc2V0IHRvIDEuIFNpbmNlIHRoZXJlIGlzIG5vCisvLyBtaW5pbXVtIHllYXIsIHRoZSBk
ZWZhdWx0IGlzIDE5NzAuCisvLworLy8gRXhhbXBsZXM6CisvLworLy8gICBhYnNsOjpDaXZpbERh
eSBkZWZhdWx0X3ZhbHVlOyAgICAgICAgICAgICAgIC8vIDE5NzAtMDEtMDEgMDA6MDA6MDAKKy8v
CisvLyAgIGFic2w6OkNpdmlsRGF5IGEoMjAxNSwgMiwgMyk7ICAgICAgICAgICAgICAgLy8gMjAx
NS0wMi0wMyAwMDowMDowMAorLy8gICBhYnNsOjpDaXZpbERheSBiKDIwMTUsIDIsIDMsIDQsIDUs
IDYpOyAgICAgIC8vIDIwMTUtMDItMDMgMDA6MDA6MDAKKy8vICAgYWJzbDo6Q2l2aWxEYXkgYygy
MDE1KTsgICAgICAgICAgICAgICAgICAgICAvLyAyMDE1LTAxLTAxIDAwOjAwOjAwCisvLworLy8g
ICBhYnNsOjpDaXZpbFNlY29uZCBzcygyMDE1LCAyLCAzLCA0LCA1LCA2KTsgIC8vIDIwMTUtMDIt
MDMgMDQ6MDU6MDYKKy8vICAgYWJzbDo6Q2l2aWxNaW51dGUgbW0oc3MpOyAgICAgICAgICAgICAg
ICAgICAvLyAyMDE1LTAyLTAzIDA0OjA1OjAwCisvLyAgIGFic2w6OkNpdmlsSG91ciBoaChtbSk7
ICAgICAgICAgICAgICAgICAgICAgLy8gMjAxNS0wMi0wMyAwNDowMDowMAorLy8gICBhYnNsOjpD
aXZpbERheSBkKGhoKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIDIwMTUtMDItMDMgMDA6MDA6
MDAKKy8vICAgYWJzbDo6Q2l2aWxNb250aCBtKGQpOyAgICAgICAgICAgICAgICAgICAgICAvLyAy
MDE1LTAyLTAxIDAwOjAwOjAwCisvLyAgIGFic2w6OkNpdmlsWWVhciB5KG0pOyAgICAgICAgICAg
ICAgICAgICAgICAgLy8gMjAxNS0wMS0wMSAwMDowMDowMAorLy8KKy8vICAgbSA9IGFic2w6OkNp
dmlsTW9udGgoeSk7ICAgICAgICAgICAgICAgICAgICAvLyAyMDE1LTAxLTAxIDAwOjAwOjAwCisv
LyAgIGQgPSBhYnNsOjpDaXZpbERheShtKTsgICAgICAgICAgICAgICAgICAgICAgLy8gMjAxNS0w
MS0wMSAwMDowMDowMAorLy8gICBoaCA9IGFic2w6OkNpdmlsSG91cihkKTsgICAgICAgICAgICAg
ICAgICAgIC8vIDIwMTUtMDEtMDEgMDA6MDA6MDAKKy8vICAgbW0gPSBhYnNsOjpDaXZpbE1pbnV0
ZShoaCk7ICAgICAgICAgICAgICAgICAvLyAyMDE1LTAxLTAxIDAwOjAwOjAwCisvLyAgIHNzID0g
YWJzbDo6Q2l2aWxTZWNvbmQobW0pOyAgICAgICAgICAgICAgICAgLy8gMjAxNS0wMS0wMSAwMDow
MDowMAorLy8KKy8vIEVhY2ggY2l2aWwtdGltZSBjbGFzcyBpcyBhbGlnbmVkIHRvIHRoZSBjaXZp
bC10aW1lIGZpZWxkIGluZGljYXRlZCBpbiB0aGUKKy8vIGNsYXNzJ3MgbmFtZSBhZnRlciBub3Jt
YWxpemF0aW9uLiBBbGlnbm1lbnQgaXMgcGVyZm9ybWVkIGJ5IHNldHRpbmcgYWxsIHRoZQorLy8g
aW5mZXJpb3IgZmllbGRzIHRvIHRoZWlyIG1pbmltdW0gdmFsaWQgdmFsdWUgKGFzIGRlc2NyaWJl
ZCBhYm92ZSkuIFRoZQorLy8gZm9sbG93aW5nIGFyZSBleGFtcGxlcyBvZiBob3cgZWFjaCBvZiB0
aGUgc2l4IHR5cGVzIHdvdWxkIGFsaWduIHRoZSBmaWVsZHMKKy8vIHJlcHJlc2VudGluZyBOb3Zl
bWJlciAyMiwgMjAxNSBhdCAxMjozNDo1NiBpbiB0aGUgYWZ0ZXJub29uLiAoTm90ZTogdGhlCisv
LyBzdHJpbmcgZm9ybWF0IHVzZWQgaGVyZSBpcyBub3QgaW1wb3J0YW50OyBpdCdzIGp1c3QgYSBz
aG9ydGhhbmQgd2F5IG9mCisvLyBzaG93aW5nIHRoZSBzaXggWU1ESE1TIGZpZWxkcy4pCisvLwor
Ly8gICBhYnNsOjpDaXZpbFNlY29uZCAgIDogMjAxNS0xMS0yMiAxMjozNDo1NgorLy8gICBhYnNs
OjpDaXZpbE1pbnV0ZSAgIDogMjAxNS0xMS0yMiAxMjozNDowMAorLy8gICBhYnNsOjpDaXZpbEhv
dXIgICAgIDogMjAxNS0xMS0yMiAxMjowMDowMAorLy8gICBhYnNsOjpDaXZpbERheSAgICAgIDog
MjAxNS0xMS0yMiAwMDowMDowMAorLy8gICBhYnNsOjpDaXZpbE1vbnRoICAgIDogMjAxNS0xMS0w
MSAwMDowMDowMAorLy8gICBhYnNsOjpDaXZpbFllYXIgICAgIDogMjAxNS0wMS0wMSAwMDowMDow
MAorLy8KKy8vIEVhY2ggY2l2aWwtdGltZSB0eXBlIHBlcmZvcm1zIGFyaXRobWV0aWMgb24gdGhl
IGZpZWxkIHRvIHdoaWNoIGl0IGlzCisvLyBhbGlnbmVkLiBUaGlzIG1lYW5zIHRoYXQgYWRkaW5n
IDEgdG8gYW4gYWJzbDo6Q2l2aWxEYXkgaW5jcmVtZW50cyB0aGUgZGF5CisvLyBmaWVsZCAobm9y
bWFsaXppbmcgYXMgbmVjZXNzYXJ5KSwgYW5kIHN1YnRyYWN0aW5nIDcgZnJvbSBhbiBhYnNsOjpD
aXZpbE1vbnRoCisvLyBvcGVyYXRlcyBvbiB0aGUgbW9udGggZmllbGQgKG5vcm1hbGl6aW5nIGFz
IG5lY2Vzc2FyeSkuIEFsbCBhcml0aG1ldGljCisvLyBwcm9kdWNlcyBhIHZhbGlkIGNpdmlsIHRp
bWUuIERpZmZlcmVuY2UgcmVxdWlyZXMgdHdvIHNpbWlsYXJseSBhbGlnbmVkCisvLyBjaXZpbC10
aW1lIG9iamVjdHMgYW5kIHJldHVybnMgdGhlIHNjYWxhciBhbnN3ZXIgaW4gdW5pdHMgb2YgdGhl
IG9iamVjdHMnCisvLyBhbGlnbm1lbnQuIEZvciBleGFtcGxlLCB0aGUgZGlmZmVyZW5jZSBiZXR3
ZWVuIHR3byBhYnNsOjpDaXZpbEhvdXIgb2JqZWN0cworLy8gd2lsbCBnaXZlIGFuIGFuc3dlciBp
biB1bml0cyBvZiBjaXZpbCBob3Vycy4KKy8vCisvLyBBTElHTk1FTlQgQ09OVkVSU0lPTgorLy8K
Ky8vIFRoZSBhbGlnbm1lbnQgb2YgYSBjaXZpbC10aW1lIG9iamVjdCBjYW5ub3QgY2hhbmdlLCBi
dXQgdGhlIG9iamVjdCBtYXkgYmUKKy8vIHVzZWQgdG8gY29uc3RydWN0IGEgbmV3IG9iamVjdCB3
aXRoIGEgZGlmZmVyZW50IGFsaWdubWVudC4gVGhpcyBpcyByZWZlcnJlZAorLy8gdG8gYXMgInJl
YWxpZ25pbmciLiBXaGVuIHJlYWxpZ25pbmcgdG8gYSB0eXBlIHdpdGggdGhlIHNhbWUgb3IgbW9y
ZQorLy8gcHJlY2lzaW9uIChlLmcuLCBhYnNsOjpDaXZpbERheSAtPiBhYnNsOjpDaXZpbFNlY29u
ZCksIHRoZSBjb252ZXJzaW9uIG1heSBiZQorLy8gcGVyZm9ybWVkIGltcGxpY2l0bHkgc2luY2Ug
bm8gaW5mb3JtYXRpb24gaXMgbG9zdC4gSG93ZXZlciwgaWYgaW5mb3JtYXRpb24KKy8vIGNvdWxk
IGJlIGRpc2NhcmRlZCAoZS5nLiwgQ2l2aWxTZWNvbmQgLT4gQ2l2aWxEYXkpLCB0aGUgY29udmVy
c2lvbiBtdXN0CisvLyBiZSBleHBsaWNpdCBhdCB0aGUgY2FsbCBzaXRlLgorLy8KKy8vIEV4YW1w
bGVzOgorLy8KKy8vICAgdm9pZCBVc2VEYXkoYWJzbDo6Q2l2aWxEYXkgZGF5KTsKKy8vCisvLyAg
IGFic2w6OkNpdmlsU2Vjb25kIGNzOworLy8gICBVc2VEYXkoY3MpOyAgICAgICAgICAgICAgICAg
IC8vIFdvbid0IGNvbXBpbGUgYmVjYXVzZSBkYXRhIG1heSBiZSBkaXNjYXJkZWQKKy8vICAgVXNl
RGF5KGFic2w6OkNpdmlsRGF5KGNzKSk7ICAvLyBPSzogZXhwbGljaXQgY29udmVyc2lvbgorLy8K
Ky8vICAgYWJzbDo6Q2l2aWxEYXkgY2Q7CisvLyAgIFVzZURheShjZCk7ICAgICAgICAgICAgICAg
ICAgLy8gT0s6IG5vIGNvbnZlcnNpb24gbmVlZGVkCisvLworLy8gICBhYnNsOjpDaXZpbE1vbnRo
IGNtOworLy8gICBVc2VEYXkoY20pOyAgICAgICAgICAgICAgICAgIC8vIE9LOiBpbXBsaWNpdCBj
b252ZXJzaW9uIHRvIGFic2w6OkNpdmlsRGF5CisvLworLy8gTk9STUFMSVpBVElPTgorLy8KKy8v
IE5vcm1hbGl6YXRpb24gdGFrZXMgaW52YWxpZCB2YWx1ZXMgYW5kIGFkanVzdHMgdGhlbSB0byBw
cm9kdWNlIHZhbGlkIHZhbHVlcy4KKy8vIFdpdGhpbiB0aGUgY2l2aWwtdGltZSBsaWJyYXJ5LCBp
bnRlZ2VyIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIENpdmlsKgorLy8gY29uc3RydWN0b3JzIG1h
eSBiZSBvdXQtb2YtcmFuZ2UsIGluIHdoaWNoIGNhc2UgdGhleSBhcmUgbm9ybWFsaXplZCBieQor
Ly8gY2Fycnlpbmcgb3ZlcmZsb3cgaW50byBhIGZpZWxkIG9mIGNvdXJzZXIgZ3JhbnVsYXJpdHkg
dG8gcHJvZHVjZSB2YWxpZAorLy8gY2l2aWwtdGltZSBvYmplY3RzLiBUaGlzIG5vcm1hbGl6YXRp
b24gZW5hYmxlcyBuYXR1cmFsIGFyaXRobWV0aWMgb24KKy8vIGNvbnN0cnVjdG9yIGFyZ3VtZW50
cyB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IHRoZSBmaWVsZCdzIHJhbmdlLgorLy8KKy8vIEV4YW1w
bGVzOgorLy8KKy8vICAgLy8gT3V0LW9mLXJhbmdlOyBub3JtYWxpemVkIHRvIDIwMTYtMTEtMDEK
Ky8vICAgYWJzbDo6Q2l2aWxEYXkgZCgyMDE2LCAxMCwgMzIpOworLy8gICAvLyBPdXQtb2YtcmFu
Z2UsIG5lZ2F0aXZlOiBub3JtYWxpemVkIHRvIDIwMTYtMTAtMzBUMjMKKy8vICAgYWJzbDo6Q2l2
aWxIb3VyIGgxKDIwMTYsIDEwLCAzMSwgLTEpOworLy8gICAvLyBOb3JtYWxpemF0aW9uIGlzIGN1
bXVsYXRpdmU6IG5vcm1hbGl6ZWQgdG8gMjAxNi0xMC0zMFQyMworLy8gICBhYnNsOjpDaXZpbEhv
dXIgaDIoMjAxNiwgMTAsIDMyLCAtMjUpOworLy8KKy8vIE5vdGU6IElmIG5vcm1hbGl6YXRpb24g
aXMgdW5kZXNpcmVkLCB5b3UgY2FuIHNpZ25hbCBhbiBlcnJvciBieSBjb21wYXJpbmcKKy8vIHRo
ZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgdG8gdGhlIG5vcm1hbGl6ZWQgdmFsdWVzIHJldHVybmVk
IGJ5IHRoZSBZTURITVMKKy8vIHByb3BlcnRpZXMuCisvLworLy8gQ09NUEFSSVNPTgorLy8KKy8v
IENvbXBhcmlzb24gYmV0d2VlbiBjaXZpbC10aW1lIG9iamVjdHMgY29uc2lkZXJzIGFsbCBzaXgg
WU1ESE1TIGZpZWxkcywKKy8vIHJlZ2FyZGxlc3Mgb2YgdGhlIHR5cGUncyBhbGlnbm1lbnQuIENv
bXBhcmlzb24gYmV0d2VlbiBkaWZmZXJlbnRseSBhbGlnbmVkCisvLyBjaXZpbC10aW1lIHR5cGVz
IGlzIGFsbG93ZWQuCisvLworLy8gRXhhbXBsZXM6CisvLworLy8gICBhYnNsOjpDaXZpbERheSBm
ZWJfMygyMDE1LCAyLCAzKTsgIC8vIDIwMTUtMDItMDMgMDA6MDA6MDAKKy8vICAgYWJzbDo6Q2l2
aWxEYXkgbWFyXzQoMjAxNSwgMywgNCk7ICAvLyAyMDE1LTAzLTA0IDAwOjAwOjAwCisvLyAgIC8v
IGZlYl8zIDwgbWFyXzQKKy8vICAgLy8gYWJzbDo6Q2l2aWxZZWFyKGZlYl8zKSA9PSBhYnNsOjpD
aXZpbFllYXIobWFyXzQpCisvLworLy8gICBhYnNsOjpDaXZpbFNlY29uZCBmZWJfM19ub29uKDIw
MTUsIDIsIDMsIDEyLCAwLCAwKTsgIC8vIDIwMTUtMDItMDMgMTI6MDA6MDAKKy8vICAgLy8gZmVi
XzMgPCBmZWJfM19ub29uCisvLyAgIC8vIGZlYl8zID09IGFic2w6OkNpdmlsRGF5KGZlYl8zX25v
b24pCisvLworLy8gICAvLyBJdGVyYXRlcyBhbGwgdGhlIGRheXMgb2YgRmVicnVhcnkgMjAxNS4K
Ky8vICAgZm9yIChhYnNsOjpDaXZpbERheSBkKDIwMTUsIDIsIDEpOyBkIDwgYWJzbDo6Q2l2aWxN
b250aCgyMDE1LCAzKTsgKytkKSB7CisvLyAgICAgLy8gLi4uCisvLyAgIH0KKy8vCisvLyBBUklU
SE1FVElDCisvLworLy8gQ2l2aWwtdGltZSB0eXBlcyBzdXBwb3J0IG5hdHVyYWwgYXJpdGhtZXRp
YyBvcGVyYXRvcnMgc3VjaCBhcyBhZGRpdGlvbiwKKy8vIHN1YnRyYWN0aW9uLCBhbmQgZGlmZmVy
ZW5jZS4gQXJpdGhtZXRpYyBvcGVyYXRlcyBvbiB0aGUgY2l2aWwtdGltZSBmaWVsZAorLy8gaW5k
aWNhdGVkIGluIHRoZSB0eXBlJ3MgbmFtZS4gRGlmZmVyZW5jZSBvcGVyYXRvcnMgcmVxdWlyZSBh
cmd1bWVudHMgd2l0aAorLy8gdGhlIHNhbWUgYWxpZ25tZW50IGFuZCByZXR1cm4gdGhlIGFuc3dl
ciBpbiB1bml0cyBvZiB0aGUgYWxpZ25tZW50LgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBh
YnNsOjpDaXZpbERheSBhKDIwMTUsIDIsIDMpOworLy8gICArK2E7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gMjAxNS0wMi0wNCAwMDowMDowMAorLy8gICAtLWE7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gMjAxNS0wMi0wMyAwMDowMDowMAorLy8gICBhYnNsOjpDaXZp
bERheSBiID0gYSArIDE7ICAgICAgICAgLy8gMjAxNS0wMi0wNCAwMDowMDowMAorLy8gICBhYnNs
OjpDaXZpbERheSBjID0gMSArIGI7ICAgICAgICAgLy8gMjAxNS0wMi0wNSAwMDowMDowMAorLy8g
ICBpbnQgbiA9IGMgLSBhOyAgICAgICAgICAgICAgICAgICAgLy8gbiA9IDIgKGNpdmlsIGRheXMp
CisvLyAgIGludCBtID0gYyAtIGFic2w6OkNpdmlsTW9udGgoYyk7ICAvLyBXb24ndCBjb21waWxl
OiBkaWZmZXJlbnQgdHlwZXMuCisvLworLy8gQUNDRVNTT1JTCisvLworLy8gRWFjaCBjaXZpbC10
aW1lIHR5cGUgaGFzIGFjY2Vzc29ycyBmb3IgYWxsIHNpeCBvZiB0aGUgY2l2aWwtdGltZSBmaWVs
ZHM6CisvLyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIGFuZCBzZWNvbmQuCisvLwor
Ly8gY2l2aWxfeWVhcl90IHllYXIoKQorLy8gaW50ICAgICAgICAgIG1vbnRoKCkKKy8vIGludCAg
ICAgICAgICBkYXkoKQorLy8gaW50ICAgICAgICAgIGhvdXIoKQorLy8gaW50ICAgICAgICAgIG1p
bnV0ZSgpCisvLyBpbnQgICAgICAgICAgc2Vjb25kKCkKKy8vCisvLyBSZWNhbGwgdGhhdCBmaWVs
ZHMgaW5mZXJpb3IgdG8gdGhlIHR5cGUncyBhbGlnbWVudCB3aWxsIGJlIHNldCB0byB0aGVpcgor
Ly8gbWluaW11bSB2YWxpZCB2YWx1ZS4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6
Q2l2aWxEYXkgZCgyMDE1LCA2LCAyOCk7CisvLyAgIC8vIGQueWVhcigpID09IDIwMTUKKy8vICAg
Ly8gZC5tb250aCgpID09IDYKKy8vICAgLy8gZC5kYXkoKSA9PSAyOAorLy8gICAvLyBkLmhvdXIo
KSA9PSAwCisvLyAgIC8vIGQubWludXRlKCkgPT0gMAorLy8gICAvLyBkLnNlY29uZCgpID09IDAK
Ky8vCisvLyBDQVNFIFNUVURZOiBBZGRpbmcgYSBtb250aCB0byBKYW51YXJ5IDMxLgorLy8KKy8v
IE9uZSBvZiB0aGUgY2xhc3NpYyBxdWVzdGlvbnMgdGhhdCBhcmlzZXMgd2hlbiBjb25zaWRlcmlu
ZyBhIGNpdmlsIHRpbWUKKy8vIGxpYnJhcnkgKG9yIGEgZGF0ZSBsaWJyYXJ5IG9yIGEgZGF0ZS90
aW1lIGxpYnJhcnkpIGlzIHRoaXM6CisvLyAgICJXaGF0IGlzIHRoZSByZXN1bHQgb2YgYWRkaW5n
IGEgbW9udGggdG8gSmFudWFyeSAzMT8iCisvLyBUaGlzIGlzIGFuIGludGVyZXN0aW5nIHF1ZXN0
aW9uIGJlY2F1c2UgaXQgaXMgdW5jbGVhciB3aGF0IGlzIG1lYW50IGJ5IGEKKy8vICJtb250aCIs
IGFuZCBzZXZlcmFsIGRpZmZlcmVudCBhbnN3ZXJzIGFyZSBwb3NzaWJsZSwgZGVwZW5kaW5nIG9u
IGNvbnRleHQ6CisvLworLy8gICAxLiBNYXJjaCAzIChvciAyIGlmIGEgbGVhcCB5ZWFyKSwgaWYg
ImFkZCBhIG1vbnRoIiBtZWFucyB0byBhZGQgYSBtb250aCB0bworLy8gICAgICB0aGUgY3VycmVu
dCBtb250aCwgYW5kIGFkanVzdCB0aGUgZGF0ZSB0byBvdmVyZmxvdyB0aGUgZXh0cmEgZGF5cyBp
bnRvCisvLyAgICAgIE1hcmNoLiBJbiB0aGlzIGNhc2UgdGhlIHJlc3VsdCBvZiAiRmVicnVhcnkg
MzEiIHdvdWxkIGJlIG5vcm1hbGl6ZWQgYXMKKy8vICAgICAgd2l0aGluIHRoZSBjaXZpbC10aW1l
IGxpYnJhcnkuCisvLyAgIDIuIEZlYnJ1YXJ5IDI4IChvciAyOSBpZiBhIGxlYXAgeWVhciksIGlm
ICJhZGQgYSBtb250aCIgbWVhbnMgdG8gYWRkIGEKKy8vICAgICAgbW9udGgsIGFuZCBhZGp1c3Qg
dGhlIGRhdGUgd2hpbGUgaG9sZGluZyB0aGUgcmVzdWx0aW5nIG1vbnRoIGNvbnN0YW50LgorLy8g
ICAgICBJbiB0aGlzIGNhc2UsIHRoZSByZXN1bHQgb2YgIkZlYnJ1YXJ5IDMxIiB3b3VsZCBiZSB0
cnVuY2F0ZWQgdG8gdGhlIGxhc3QKKy8vICAgICAgZGF5IGluIEZlYnJ1YXJ5LgorLy8gICAzLiBB
biBlcnJvci4gVGhlIGNhbGxlciBtYXkgZ2V0IHNvbWUgZXJyb3IsIGFuIGV4Y2VwdGlvbiwgYW4g
aW52YWxpZCBkYXRlCisvLyAgICAgIG9iamVjdCwgb3IgcGVyaGFwcyByZXR1cm4gYGZhbHNlYC4g
VGhpcyBtYXkgbWFrZSBzZW5zZSBiZWNhdXNlIHRoZXJlIGlzCisvLyAgICAgIG5vIHNpbmdsZSB1
bmFtYmlndW91c2x5IGNvcnJlY3QgYW5zd2VyIHRvIHRoZSBxdWVzdGlvbi4KKy8vCisvLyBQcmFj
dGljYWxseSBzcGVha2luZywgYW55IGFuc3dlciB0aGF0IGlzIG5vdCB3aGF0IHRoZSBwcm9ncmFt
bWVyIGludGVuZGVkCisvLyBpcyB0aGUgd3JvbmcgYW5zd2VyLgorLy8KKy8vIFRoZSBBYnNlaWwg
dGltZSBsaWJyYXJ5IGF2b2lkcyB0aGlzIHByb2JsZW0gYnkgbWFraW5nIGl0IGltcG9zc2libGUg
dG8KKy8vIGFzayBhbWJpZ3VvdXMgcXVlc3Rpb25zLiBBbGwgY2l2aWwtdGltZSBvYmplY3RzIGFy
ZSBhbGlnbmVkIHRvIGEgcGFydGljdWxhcgorLy8gY2l2aWwtZmllbGQgYm91bmRhcnkgKHN1Y2gg
YXMgYWxpZ25lZCB0byBhIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwKKy8vIG9yIHNl
Y29uZCksIGFuZCBhcml0aG1ldGljIG9wZXJhdGVzIG9uIHRoZSBmaWVsZCB0byB3aGljaCB0aGUg
b2JqZWN0IGlzCisvLyBhbGlnbmVkLiBUaGlzIG1lYW5zIHRoYXQgaW4gb3JkZXIgdG8gImFkZCBh
IG1vbnRoIiB0aGUgb2JqZWN0IG11c3QgZmlyc3QgYmUKKy8vIGFsaWduZWQgdG8gYSBtb250aCBi
b3VuZGFyeSwgd2hpY2ggaXMgZXF1aXZhbGVudCB0byB0aGUgZmlyc3QgZGF5IG9mIHRoYXQKKy8v
IG1vbnRoLgorLy8KKy8vIE9mIGNvdXJzZSwgdGhlcmUgYXJlIHdheXMgdG8gY29tcHV0ZSBhbiBh
bnN3ZXIgdGhlIHF1ZXN0aW9uIGF0IGhhbmQgdXNpbmcKKy8vIHRoaXMgQWJzZWlsIHRpbWUgbGli
cmFyeSwgYnV0IHRoZXkgcmVxdWlyZSB0aGUgcHJvZ3JhbW1lciB0byBiZSBleHBsaWNpdAorLy8g
YWJvdXQgdGhlIGFuc3dlciB0aGV5IGV4cGVjdC4gVG8gaWxsdXN0cmF0ZSwgbGV0J3Mgc2VlIGhv
dyB0byBjb21wdXRlIGFsbAorLy8gdGhyZWUgb2YgdGhlIGFib3ZlIHBvc3NpYmxlIGFuc3dlcnMg
dG8gdGhlIHF1ZXN0aW9uIG9mICJKYW4gMzEgcGx1cyAxCisvLyBtb250aCI6CisvLworLy8gRXhh
bXBsZToKKy8vCisvLyAgIGNvbnN0IGFic2w6OkNpdmlsRGF5IGQoMjAxNSwgMSwgMzEpOworLy8K
Ky8vICAgLy8gQW5zd2VyIDE6CisvLyAgIC8vIEFkZCAxIHRvIHRoZSBtb250aCBmaWVsZCBpbiB0
aGUgY29uc3RydWN0b3IsIGFuZCByZWx5IG9uIG5vcm1hbGl6YXRpb24uCisvLyAgIGNvbnN0IGF1
dG8gbm9ybWFsaXplZCA9IGFic2w6OkNpdmlsRGF5KGQueWVhcigpLCBkLm1vbnRoKCkgKyAxLCBk
LmRheSgpKTsKKy8vICAgLy8gbm9ybWFsaXplZCA9PSAyMDE1LTAzLTAzIChha2EgRmViIDMxKQor
Ly8KKy8vICAgLy8gQW5zd2VyIDI6CisvLyAgIC8vIEFkZCAxIHRvIG1vbnRoIGZpZWxkLCBjYXBw
aW5nIHRvIHRoZSBlbmQgb2YgbmV4dCBtb250aC4KKy8vICAgY29uc3QgYXV0byBuZXh0X21vbnRo
ID0gYWJzbDo6Q2l2aWxNb250aChkKSArIDE7CisvLyAgIGNvbnN0IGF1dG8gbGFzdF9kYXlfb2Zf
bmV4dF9tb250aCA9IGFic2w6OkNpdmlsRGF5KG5leHRfbW9udGggKyAxKSAtIDE7CisvLyAgIGNv
bnN0IGF1dG8gY2FwcGVkID0gc3RkOjptaW4obm9ybWFsaXplZCwgbGFzdF9kYXlfb2ZfbmV4dF9t
b250aCk7CisvLyAgIC8vIGNhcHBlZCA9PSAyMDE1LTAyLTI4CisvLworLy8gICAvLyBBbnN3ZXIg
MzoKKy8vICAgLy8gU2lnbmFsIGFuIGVycm9yIGlmIHRoZSBub3JtYWxpemVkIGFuc3dlciBpcyBu
b3QgaW4gbmV4dCBtb250aC4KKy8vICAgaWYgKGFic2w6OkNpdmlsTW9udGgobm9ybWFsaXplZCkg
IT0gbmV4dF9tb250aCkgeworLy8gICAgIC8vIGVycm9yLCBtb250aCBvdmVyZmxvdworLy8gICB9
CisvLwordXNpbmcgQ2l2aWxTZWNvbmQgPQorICAgIHRpbWVfaW50ZXJuYWw6OmNjdHo6OmRldGFp
bDo6Y2l2aWxfdGltZTx0aW1lX2ludGVybmFsOjpzZWNvbmRfdGFnPjsKK3VzaW5nIENpdmlsTWlu
dXRlID0KKyAgICB0aW1lX2ludGVybmFsOjpjY3R6OjpkZXRhaWw6OmNpdmlsX3RpbWU8dGltZV9p
bnRlcm5hbDo6bWludXRlX3RhZz47Cit1c2luZyBDaXZpbEhvdXIgPQorICAgIHRpbWVfaW50ZXJu
YWw6OmNjdHo6OmRldGFpbDo6Y2l2aWxfdGltZTx0aW1lX2ludGVybmFsOjpob3VyX3RhZz47Cit1
c2luZyBDaXZpbERheSA9CisgICAgdGltZV9pbnRlcm5hbDo6Y2N0ejo6ZGV0YWlsOjpjaXZpbF90
aW1lPHRpbWVfaW50ZXJuYWw6OmRheV90YWc+OwordXNpbmcgQ2l2aWxNb250aCA9CisgICAgdGlt
ZV9pbnRlcm5hbDo6Y2N0ejo6ZGV0YWlsOjpjaXZpbF90aW1lPHRpbWVfaW50ZXJuYWw6Om1vbnRo
X3RhZz47Cit1c2luZyBDaXZpbFllYXIgPQorICAgIHRpbWVfaW50ZXJuYWw6OmNjdHo6OmRldGFp
bDo6Y2l2aWxfdGltZTx0aW1lX2ludGVybmFsOjp5ZWFyX3RhZz47CisKKy8vIGNpdmlsX3llYXJf
dAorLy8KKy8vIFR5cGUgYWxpYXMgb2YgYSBjaXZpbC10aW1lIHllYXIgdmFsdWUuIFRoaXMgdHlw
ZSBpcyBndWFyYW50ZWVkIHRvIChhdCBsZWFzdCkKKy8vIHN1cHBvcnQgYW55IHllYXIgdmFsdWUg
c3VwcG9ydGVkIGJ5IGB0aW1lX3RgLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhYnNsOjpD
aXZpbFNlY29uZCBjcyA9IC4uLjsKKy8vICAgYWJzbDo6Y2l2aWxfeWVhcl90IHkgPSBjcy55ZWFy
KCk7CisvLyAgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoeSwgMSwgMSwgMCwgMCwgMCk7ICAvLyBD
aXZpbFNlY29uZChDaXZpbFllYXIoY3MpKQorLy8KK3VzaW5nIGNpdmlsX3llYXJfdCA9IHRpbWVf
aW50ZXJuYWw6OmNjdHo6OnllYXJfdDsKKworLy8gY2l2aWxfZGlmZl90CisvLworLy8gVHlwZSBh
bGlhcyBvZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBjaXZpbC10aW1lIHZhbHVlcy4KKy8v
IFRoaXMgdHlwZSBpcyB1c2VkIHRvIGluZGljYXRlIGFyZ3VtZW50cyB0aGF0IGFyZSBub3QKKy8v
IG5vcm1hbGl6ZWQgKHN1Y2ggYXMgcGFyYW1ldGVycyB0byB0aGUgY2l2aWwtdGltZSBjb25zdHJ1
Y3RvcnMpLCB0aGUgcmVzdWx0cworLy8gb2YgY2l2aWwtdGltZSBzdWJ0cmFjdGlvbiwgb3IgdGhl
IG9wZXJhbmQgdG8gY2l2aWwtdGltZSBhZGRpdGlvbi4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8v
ICAgYWJzbDo6Y2l2aWxfZGlmZl90IG5fc2VjID0gY3MxIC0gY3MyOyAgICAgICAgICAgICAvLyBj
czEgPT0gY3MyICsgbl9zZWM7CisvLwordXNpbmcgY2l2aWxfZGlmZl90ID0gdGltZV9pbnRlcm5h
bDo6Y2N0ejo6ZGlmZl90OworCisvLyBXZWVrZGF5Ojptb25kYXksIFdlZWtkYXk6OnR1ZXNkYXks
IFdlZWtkYXk6OndlZG5lc2RheSwgV2Vla2RheTo6dGh1cnNkYXksCisvLyBXZWVrZGF5Ojpmcmlk
YXksIFdlZWtkYXk6OnNhdHVyZGF5LCBXZWVrZGF5OjpzdW5kYXkKKy8vCisvLyBUaGUgV2Vla2Rh
eSBlbnVtIGNsYXNzIHJlcHJlc2VudHMgdGhlIGNpdmlsLXRpbWUgY29uY2VwdCBvZiBhICJ3ZWVr
ZGF5IiB3aXRoCisvLyBtZW1iZXJzIGZvciBhbGwgZGF5cyBvZiB0aGUgd2Vlay4KKy8vCisvLyAg
IGFic2w6OldlZWtkYXkgd2QgPSBhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheTsKKy8vCit1c2luZyBX
ZWVrZGF5ID0gdGltZV9pbnRlcm5hbDo6Y2N0ejo6d2Vla2RheTsKKworLy8gR2V0V2Vla2RheSgp
CisvLworLy8gUmV0dXJucyB0aGUgYWJzbDo6V2Vla2RheSBmb3IgdGhlIGdpdmVuIChyZWFsaWdu
ZWQpIGNpdmlsLXRpbWUgdmFsdWUuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkNp
dmlsRGF5IGEoMjAxNSwgOCwgMTMpOworLy8gICBhYnNsOjpXZWVrZGF5IHdkID0gYWJzbDo6R2V0
V2Vla2RheShhKTsgIC8vIHdkID09IGFic2w6OldlZWtkYXk6OnRodXJzZGF5CisvLworaW5saW5l
IFdlZWtkYXkgR2V0V2Vla2RheShDaXZpbFNlY29uZCBjcykgeworICByZXR1cm4gdGltZV9pbnRl
cm5hbDo6Y2N0ejo6Z2V0X3dlZWtkYXkoY3MpOworfQorCisvLyBOZXh0V2Vla2RheSgpCisvLyBQ
cmV2V2Vla2RheSgpCisvLworLy8gUmV0dXJucyB0aGUgYWJzbDo6Q2l2aWxEYXkgdGhhdCBzdHJp
Y3RseSBmb2xsb3dzIG9yIHByZWNlZGVzIGEgZ2l2ZW4KKy8vIGFic2w6OkNpdmlsRGF5LCBhbmQg
dGhhdCBmYWxscyBvbiB0aGUgZ2l2ZW4gYWJzbDo6V2Vla2RheS4KKy8vCisvLyBFeGFtcGxlLCBn
aXZlbiB0aGUgZm9sbG93aW5nIG1vbnRoOgorLy8KKy8vICAgICAgIEF1Z3VzdCAyMDE1CisvLyAg
IFN1IE1vIFR1IFdlIFRoIEZyIFNhCisvLyAgICAgICAgICAgICAgICAgICAgICAxCisvLyAgICAy
ICAzICA0ICA1ICA2ICA3ICA4CisvLyAgICA5IDEwIDExIDEyIDEzIDE0IDE1CisvLyAgIDE2IDE3
IDE4IDE5IDIwIDIxIDIyCisvLyAgIDIzIDI0IDI1IDI2IDI3IDI4IDI5CisvLyAgIDMwIDMxCisv
LworLy8gICBhYnNsOjpDaXZpbERheSBhKDIwMTUsIDgsIDEzKTsKKy8vICAgLy8gYWJzbDo6R2V0
V2Vla2RheShhKSA9PSBhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheQorLy8gICBhYnNsOjpDaXZpbERh
eSBiID0gYWJzbDo6TmV4dFdlZWtkYXkoYSwgYWJzbDo6V2Vla2RheTo6dGh1cnNkYXkpOworLy8g
ICAvLyBiID0gMjAxNS0wOC0yMAorLy8gICBhYnNsOjpDaXZpbERheSBjID0gYWJzbDo6UHJldldl
ZWtkYXkoYSwgYWJzbDo6V2Vla2RheTo6dGh1cnNkYXkpOworLy8gICAvLyBjID0gMjAxNS0wOC0w
NgorLy8KKy8vICAgYWJzbDo6Q2l2aWxEYXkgZCA9IC4uLgorLy8gICAvLyBHZXRzIHRoZSBmb2xs
b3dpbmcgVGh1cnNkYXkgaWYgZCBpcyBub3QgYWxyZWFkeSBUaHVyc2RheQorLy8gICBhYnNsOjpD
aXZpbERheSB0aHVyczEgPSBhYnNsOjpOZXh0V2Vla2RheShkIC0gMSwgYWJzbDo6V2Vla2RheTo6
dGh1cnNkYXkpOworLy8gICAvLyBHZXRzIHRoZSBwcmV2aW91cyBUaHVyc2RheSBpZiBkIGlzIG5v
dCBhbHJlYWR5IFRodXJzZGF5CisvLyAgIGFic2w6OkNpdmlsRGF5IHRodXJzMiA9IGFic2w6OlBy
ZXZXZWVrZGF5KGQgKyAxLCBhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSk7CisvLworaW5saW5lIENp
dmlsRGF5IE5leHRXZWVrZGF5KENpdmlsRGF5IGNkLCBXZWVrZGF5IHdkKSB7CisgIHJldHVybiBD
aXZpbERheSh0aW1lX2ludGVybmFsOjpjY3R6OjpuZXh0X3dlZWtkYXkoY2QsIHdkKSk7Cit9Citp
bmxpbmUgQ2l2aWxEYXkgUHJldldlZWtkYXkoQ2l2aWxEYXkgY2QsIFdlZWtkYXkgd2QpIHsKKyAg
cmV0dXJuIENpdmlsRGF5KHRpbWVfaW50ZXJuYWw6OmNjdHo6OnByZXZfd2Vla2RheShjZCwgd2Qp
KTsKK30KKworLy8gR2V0WWVhckRheSgpCisvLworLy8gUmV0dXJucyB0aGUgZGF5LW9mLXllYXIg
Zm9yIHRoZSBnaXZlbiAocmVhbGlnbmVkKSBjaXZpbC10aW1lIHZhbHVlLgorLy8KKy8vIEV4YW1w
bGU6CisvLworLy8gICBhYnNsOjpDaXZpbERheSBhKDIwMTUsIDEsIDEpOworLy8gICBpbnQgeWRf
amFuXzEgPSBhYnNsOjpHZXRZZWFyRGF5KGEpOyAgIC8vIHlkX2phbl8xID0gMQorLy8gICBhYnNs
OjpDaXZpbERheSBiKDIwMTUsIDEyLCAzMSk7CisvLyAgIGludCB5ZF9kZWNfMzEgPSBhYnNsOjpH
ZXRZZWFyRGF5KGIpOyAgLy8geWRfZGVjXzMxID0gMzY1CisvLworaW5saW5lIGludCBHZXRZZWFy
RGF5KENpdmlsU2Vjb25kIGNzKSB7CisgIHJldHVybiB0aW1lX2ludGVybmFsOjpjY3R6OjpnZXRf
eWVhcmRheShjcyk7Cit9CisKKy8vIEZvcm1hdENpdmlsVGltZSgpCisvLworLy8gRm9ybWF0cyB0
aGUgZ2l2ZW4gY2l2aWwtdGltZSB2YWx1ZSBpbnRvIGEgc3RyaW5nIHZhbHVlIG9mIHRoZSBmb2xs
b3dpbmcKKy8vIGZvcm1hdDoKKy8vCisvLyAgVHlwZSAgICAgICAgfCBGb3JtYXQKKy8vICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBDaXZpbFNlY29uZCB8IFlZWVktTU0t
RERUSEg6TU06U1MKKy8vICBDaXZpbE1pbnV0ZSB8IFlZWVktTU0tRERUSEg6TU0KKy8vICBDaXZp
bEhvdXIgICB8IFlZWVktTU0tRERUSEgKKy8vICBDaXZpbERheSAgICB8IFlZWVktTU0tREQKKy8v
ICBDaXZpbE1vbnRoICB8IFlZWVktTU0KKy8vICBDaXZpbFllYXIgICB8IFlZWVkKKy8vCisvLyBF
eGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Q2l2aWxEYXkgZCA9IGFic2w6OkNpdmlsRGF5KDE5Njks
IDcsIDIwKTsKKy8vICAgc3RkOjpzdHJpbmcgZGF5X3N0cmluZyA9IGFic2w6OkZvcm1hdENpdmls
VGltZShkKTsgIC8vICIxOTY5LTA3LTIwIgorLy8KK3N0ZDo6c3RyaW5nIEZvcm1hdENpdmlsVGlt
ZShDaXZpbFNlY29uZCBjKTsKK3N0ZDo6c3RyaW5nIEZvcm1hdENpdmlsVGltZShDaXZpbE1pbnV0
ZSBjKTsKK3N0ZDo6c3RyaW5nIEZvcm1hdENpdmlsVGltZShDaXZpbEhvdXIgYyk7CitzdGQ6OnN0
cmluZyBGb3JtYXRDaXZpbFRpbWUoQ2l2aWxEYXkgYyk7CitzdGQ6OnN0cmluZyBGb3JtYXRDaXZp
bFRpbWUoQ2l2aWxNb250aCBjKTsKK3N0ZDo6c3RyaW5nIEZvcm1hdENpdmlsVGltZShDaXZpbFll
YXIgYyk7CisKK25hbWVzcGFjZSB0aW1lX2ludGVybmFsIHsgIC8vIEZvciBmdW5jdGlvbnMgZm91
bmQgdmlhIEFETCBvbiBjaXZpbC10aW1lIHRhZ3MuCisKKy8vIFN0cmVhbWluZyBPcGVyYXRvcnMK
Ky8vCisvLyBFYWNoIGNpdmlsLXRpbWUgdHlwZSBtYXkgYmUgc2VudCB0byBhbiBvdXRwdXQgc3Ry
ZWFtIHVzaW5nIG9wZXJhdG9yPDwoKS4KKy8vIFRoZSByZXN1bHQgbWF0Y2hlcyB0aGUgc3RyaW5n
IHByb2R1Y2VkIGJ5IGBGb3JtYXRDaXZpbFRpbWUoKWAuCisvLworLy8gRXhhbXBsZToKKy8vCisv
LyAgIGFic2w6OkNpdmlsRGF5IGQgPSBhYnNsOjpDaXZpbERheSgiMTk2OS0wNy0yMCIpOworLy8g
ICBzdGQ6OmNvdXQgPDwgIkRhdGUgaXM6ICIgPDwgZCA8PCAiXG4iOworLy8KK3N0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBDaXZpbFllYXIgeSk7CitzdGQ6Om9zdHJl
YW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgQ2l2aWxNb250aCBtKTsKK3N0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBDaXZpbERheSBkKTsKK3N0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBDaXZpbEhvdXIgaCk7CitzdGQ6Om9z
dHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgQ2l2aWxNaW51dGUgbSk7CitzdGQ6
Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgQ2l2aWxTZWNvbmQgcyk7CisK
K30gIC8vIG5hbWVzcGFjZSB0aW1lX2ludGVybmFsCisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisK
KyNlbmRpZiAgLy8gQUJTTF9USU1FX0NJVklMX1RJTUVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvY2l2aWxfdGltZV9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2NpdmlsX3RpbWVfYmVuY2ht
YXJrLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40MDg2OTgzNWI3
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZV9iZW5jaG1hcmsuY2MK
QEAgLTAsMCArMSwxMDcgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC90aW1lL2NpdmlsX3RpbWUuaCIKKworI2luY2x1ZGUgPG51bWVy
aWM+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9oYXNoL2hhc2guaCIKKyNp
bmNsdWRlICJiZW5jaG1hcmsvYmVuY2htYXJrLmgiCisKK25hbWVzcGFjZSB7CisKKy8vIFJ1biBv
biAoMTIgWCAzNDkyIE1IeiBDUFVzKTsgMjAxOC0xMS0wNVQxMzo0NDoyOS44MTQyMzkxMDMtMDg6
MDAKKy8vIENQVTogSW50ZWwgSGFzd2VsbCB3aXRoIEh5cGVyVGhyZWFkaW5nICg2IGNvcmVzKSBk
TDE6MzJLQiBkTDI6MjU2S0IgZEwzOjE1TUIKKy8vIEJlbmNobWFyayAgICAgICAgICAgICAgICAg
VGltZShucykgICAgICAgIENQVShucykgICAgIEl0ZXJhdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEJN
X0RpZmZlcmVuY2VfRGF5cyAgICAgICAgICAgICAgMTQuNSAgICAgICAgICAgMTQuNSAgICAgNDg1
MzExMDUKKy8vIEJNX1N0ZXBfRGF5cyAgICAgICAgICAgICAgICAgICAgMTIuNiAgICAgICAgICAg
MTIuNiAgICAgNTQ4NzYwMDYKKy8vIEJNX0Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICA1ODcg
ICAgICAgICAgICA1ODcgICAgICAgIDEwMDAwMDAKKy8vIEJNX1BhcnNlICAgICAgICAgICAgICAg
ICAgICAgICA2OTIgICAgICAgICAgICA2OTIgICAgICAgIDEwMDAwMDAKKy8vIEJNX1JvdW5kVHJp
cEZvcm1hdFBhcnNlICAgICAgIDEzMDkgICAgICAgICAgIDEzMDkgICAgICAgICA1MzIwNzUKKy8v
IEJNX0NpdmlsWWVhckFic2xIYXNoICAgICAgICAgICAgIDAuNzEwICAgICAgICAgIDAuNzEwICA5
NzY0MDAwMDAKKy8vIEJNX0NpdmlsTW9udGhBYnNsSGFzaCAgICAgICAgICAgIDEuMTMgICAgICAg
ICAgIDEuMTMgICA2MTk1MDAwMDAKKy8vIEJNX0NpdmlsRGF5QWJzbEhhc2ggICAgICAgICAgICAg
IDEuNzAgICAgICAgICAgIDEuNzAgICA0MjYwMDAwMDAKKy8vIEJNX0NpdmlsSG91ckFic2xIYXNo
ICAgICAgICAgICAgIDIuNDUgICAgICAgICAgIDIuNDUgICAyODc2MDAwMDAKKy8vIEJNX0Npdmls
TWludXRlQWJzbEhhc2ggICAgICAgICAgIDMuMjEgICAgICAgICAgIDMuMjEgICAyMjYyMDAwMDAK
Ky8vIEJNX0NpdmlsU2Vjb25kQWJzbEhhc2ggICAgICAgICAgIDQuMTAgICAgICAgICAgIDQuMTAg
ICAxNzE4MDAwMDAKKwordm9pZCBCTV9EaWZmZXJlbmNlX0RheXMoYmVuY2htYXJrOjpTdGF0ZSYg
c3RhdGUpIHsKKyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgYygyMDE0LCA4LCAyMik7CisgIGNvbnN0
IGFic2w6OkNpdmlsRGF5IGVwb2NoKDE5NzAsIDEsIDEpOworICB3aGlsZSAoc3RhdGUuS2VlcFJ1
bm5pbmcoKSkgeworICAgIGNvbnN0IGFic2w6OmNpdmlsX2RpZmZfdCBuID0gYyAtIGVwb2NoOwor
ICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShuKTsKKyAgfQorfQorQkVOQ0hNQVJLKEJNX0Rp
ZmZlcmVuY2VfRGF5cyk7CisKK3ZvaWQgQk1fU3RlcF9EYXlzKGJlbmNobWFyazo6U3RhdGUmIHN0
YXRlKSB7CisgIGNvbnN0IGFic2w6OkNpdmlsRGF5IGtTdGFydCgyMDE0LCA4LCAyMik7CisgIGFi
c2w6OkNpdmlsRGF5IGMgPSBrU3RhcnQ7CisgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZygpKSB7
CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKCsrYyk7CisgIH0KK30KK0JFTkNITUFSSyhC
TV9TdGVwX0RheXMpOworCit2b2lkIEJNX0Zvcm1hdChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkg
eworICBjb25zdCBhYnNsOjpDaXZpbFNlY29uZCBjKDIwMTQsIDEsIDIsIDMsIDQsIDUpOworICB3
aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgeworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUoYyk7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHMp
OworICB9Cit9CitCRU5DSE1BUksoQk1fRm9ybWF0KTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cit2b2lkIEJNX0NpdmlsVGltZUFic2xIYXNoKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cisg
IGNvbnN0IGludCBrU2l6ZSA9IDEwMDAwMDsKKyAgc3RkOjp2ZWN0b3I8VD4gY2l2aWxfdGltZXMo
a1NpemUpOworICBzdGQ6OmlvdGEoY2l2aWxfdGltZXMuYmVnaW4oKSwgY2l2aWxfdGltZXMuZW5k
KCksIFQoMjAxOCkpOworCisgIGFic2w6Okhhc2g8VD4gYWJzbF9oYXNoZXI7CisgIHdoaWxlIChz
dGF0ZS5LZWVwUnVubmluZ0JhdGNoKGtTaXplKSkgeworICAgIGZvciAoY29uc3QgVCBjaXZpbF90
aW1lIDogY2l2aWxfdGltZXMpIHsKKyAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShhYnNs
X2hhc2hlcihjaXZpbF90aW1lKSk7CisgICAgfQorICB9Cit9Cit2b2lkIEJNX0NpdmlsWWVhckFi
c2xIYXNoKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIEJNX0NpdmlsVGltZUFic2xIYXNo
PGFic2w6OkNpdmlsWWVhcj4oc3RhdGUpOworfQordm9pZCBCTV9DaXZpbE1vbnRoQWJzbEhhc2go
YmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgQk1fQ2l2aWxUaW1lQWJzbEhhc2g8YWJzbDo6
Q2l2aWxNb250aD4oc3RhdGUpOworfQordm9pZCBCTV9DaXZpbERheUFic2xIYXNoKGJlbmNobWFy
azo6U3RhdGUmIHN0YXRlKSB7CisgIEJNX0NpdmlsVGltZUFic2xIYXNoPGFic2w6OkNpdmlsRGF5
PihzdGF0ZSk7Cit9Cit2b2lkIEJNX0NpdmlsSG91ckFic2xIYXNoKGJlbmNobWFyazo6U3RhdGUm
IHN0YXRlKSB7CisgIEJNX0NpdmlsVGltZUFic2xIYXNoPGFic2w6OkNpdmlsSG91cj4oc3RhdGUp
OworfQordm9pZCBCTV9DaXZpbE1pbnV0ZUFic2xIYXNoKGJlbmNobWFyazo6U3RhdGUmIHN0YXRl
KSB7CisgIEJNX0NpdmlsVGltZUFic2xIYXNoPGFic2w6OkNpdmlsTWludXRlPihzdGF0ZSk7Cit9
Cit2b2lkIEJNX0NpdmlsU2Vjb25kQWJzbEhhc2goYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
KyAgQk1fQ2l2aWxUaW1lQWJzbEhhc2g8YWJzbDo6Q2l2aWxTZWNvbmQ+KHN0YXRlKTsKK30KK0JF
TkNITUFSSyhCTV9DaXZpbFllYXJBYnNsSGFzaCk7CitCRU5DSE1BUksoQk1fQ2l2aWxNb250aEFi
c2xIYXNoKTsKK0JFTkNITUFSSyhCTV9DaXZpbERheUFic2xIYXNoKTsKK0JFTkNITUFSSyhCTV9D
aXZpbEhvdXJBYnNsSGFzaCk7CitCRU5DSE1BUksoQk1fQ2l2aWxNaW51dGVBYnNsSGFzaCk7CitC
RU5DSE1BUksoQk1fQ2l2aWxTZWNvbmRBYnNsSGFzaCk7CisKK30gIC8vIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9jaXZpbF90aW1lX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Npdmls
X3RpbWVfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDNj
ZDFmMTJkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2NpdmlsX3RpbWVfdGVzdC5j
YwpAQCAtMCwwICsxLDEwODUgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorCisjaW5jbHVkZSAiYWJzbC90aW1lL2NpdmlsX3RpbWUuaCIKKworI2luY2x1ZGUgPGxp
bWl0cz4KKyNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5j
bHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25h
bWVzcGFjZSB7CisKK1RFU1QoQ2l2aWxUaW1lLCBEZWZhdWx0Q29uc3RydWN0aW9uKSB7CisgIGFi
c2w6OkNpdmlsU2Vjb25kIHNzOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDA6MDAiLCBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUoc3MpKTsKKworICBhYnNsOjpDaXZpbE1pbnV0ZSBtbTsKKyAg
RVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1tKSk7
CisKKyAgYWJzbDo6Q2l2aWxIb3VyIGhoOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDAiLCBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUoaGgpKTsKKworICBhYnNsOjpDaXZpbERheSBkOworICBFWFBF
Q1RfRVEoIjE5NzAtMDEtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoZCkpOworCisgIGFic2w6
OkNpdmlsTW9udGggbTsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxIiwgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKG0pKTsKKworICBhYnNsOjpDaXZpbFllYXIgeTsKKyAgRVhQRUNUX0VRKCIxOTcwIiwgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKHkpKTsKK30KKworVEVTVChDaXZpbFRpbWUsIFN0cnVjdE1lbWJl
cikgeworICBzdHJ1Y3QgUyB7CisgICAgYWJzbDo6Q2l2aWxEYXkgZGF5OworICB9OworICBTIHMg
PSB7fTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsRGF5e30sIHMuZGF5KTsKK30KKworVEVTVChD
aXZpbFRpbWUsIEZpZWxkc0NvbnN0cnVjdGlvbikgeworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJU
MDM6MDQ6MDUiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmls
U2Vjb25kKDIwMTUsIDEsIDIsIDMsIDQsIDUpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQw
MzowNDowMCIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxT
ZWNvbmQoMjAxNSwgMSwgMiwgMywgNCkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjAw
OjAwIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFNlY29u
ZCgyMDE1LCAxLCAyLCAzKSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDA6MDA6MDAiLAor
ICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsU2Vjb25kKDIwMTUs
IDEsIDIpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMVQwMDowMDowMCIsCisgICAgICAgICAg
ICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNSwgMSkpKTsKKyAg
RVhQRUNUX0VRKCIyMDE1LTAxLTAxVDAwOjAwOjAwIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1h
dENpdmlsVGltZShhYnNsOjpDaXZpbFNlY29uZCgyMDE1KSkpOworCisgIEVYUEVDVF9FUSgiMjAx
NS0wMS0wMlQwMzowNCIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6
Q2l2aWxNaW51dGUoMjAxNSwgMSwgMiwgMywgNCwgNSkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAx
LTAyVDAzOjA0IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZp
bE1pbnV0ZSgyMDE1LCAxLCAyLCAzLCA0KSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6
MDAiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsTWludXRl
KDIwMTUsIDEsIDIsIDMpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMDowMCIsCisgICAg
ICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxNaW51dGUoMjAxNSwgMSwg
MikpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxVDAwOjAwIiwKKyAgICAgICAgICAgIGFic2w6
OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbE1pbnV0ZSgyMDE1LCAxKSkpOworICBFWFBFQ1Rf
RVEoIjIwMTUtMDEtMDFUMDA6MDAiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1l
KGFic2w6OkNpdmlsTWludXRlKDIwMTUpKSk7CisKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAz
IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbEhvdXIoMjAx
NSwgMSwgMiwgMywgNCwgNSkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwKKyAgICAg
ICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbEhvdXIoMjAxNSwgMSwgMiwg
MywgNCkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwKKyAgICAgICAgICAgIGFic2w6
OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbEhvdXIoMjAxNSwgMSwgMiwgMykpKTsKKyAgRVhQ
RUNUX0VRKCIyMDE1LTAxLTAyVDAwIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGlt
ZShhYnNsOjpDaXZpbEhvdXIoMjAxNSwgMSwgMikpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAx
VDAwIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbEhvdXIo
MjAxNSwgMSkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxVDAwIiwKKyAgICAgICAgICAgIGFi
c2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbEhvdXIoMjAxNSkpKTsKKworICBFWFBFQ1Rf
RVEoIjIwMTUtMDEtMDIiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6
OkNpdmlsRGF5KDIwMTUsIDEsIDIsIDMsIDQsIDUpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0w
MiIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxEYXkoMjAx
NSwgMSwgMiwgMywgNCkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyIiwKKyAgICAgICAgICAg
IGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbERheSgyMDE1LCAxLCAyLCAzKSkpOwor
ICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDIiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKGFic2w6OkNpdmlsRGF5KDIwMTUsIDEsIDIpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0w
MSIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxEYXkoMjAx
NSwgMSkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxIiwKKyAgICAgICAgICAgIGFic2w6OkZv
cm1hdENpdmlsVGltZShhYnNsOjpDaXZpbERheSgyMDE1KSkpOworCisgIEVYUEVDVF9FUSgiMjAx
NS0wMSIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxNb250
aCgyMDE1LCAxLCAyLCAzLCA0LCA1KSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEiLAorICAgICAg
ICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsTW9udGgoMjAxNSwgMSwgMiwg
MywgNCkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1h
dENpdmlsVGltZShhYnNsOjpDaXZpbE1vbnRoKDIwMTUsIDEsIDIsIDMpKSk7CisgIEVYUEVDVF9F
USgiMjAxNS0wMSIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2
aWxNb250aCgyMDE1LCAxLCAyKSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEiLAorICAgICAgICAg
ICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsTW9udGgoMjAxNSwgMSkpKTsKKyAg
RVhQRUNUX0VRKCIyMDE1LTAxIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShh
YnNsOjpDaXZpbE1vbnRoKDIwMTUpKSk7CisKKyAgRVhQRUNUX0VRKCIyMDE1IiwKKyAgICAgICAg
ICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFllYXIoMjAxNSwgMSwgMiwgMywg
NCwgNSkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENp
dmlsVGltZShhYnNsOjpDaXZpbFllYXIoMjAxNSwgMSwgMiwgMywgNCkpKTsKKyAgRVhQRUNUX0VR
KCIyMDE1IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFll
YXIoMjAxNSwgMSwgMiwgMykpKTsKKyAgRVhQRUNUX0VRKCIyMDE1IiwKKyAgICAgICAgICAgIGFi
c2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFllYXIoMjAxNSwgMSwgMikpKTsKKyAgRVhQ
RUNUX0VRKCIyMDE1IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpD
aXZpbFllYXIoMjAxNSwgMSkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1IiwKKyAgICAgICAgICAgIGFi
c2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFllYXIoMjAxNSkpKTsKK30KKworVEVTVChD
aXZpbFRpbWUsIEZpZWxkc0NvbnN0cnVjdGlvbkxpbWl0cykgeworICBjb25zdCBpbnQga0ludE1h
eCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgIEVYUEVDVF9FUSgiMjAzOC0w
MS0xOVQwMzoxNDowNyIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6
Q2l2aWxTZWNvbmQoCisgICAgICAgICAgICAgICAgMTk3MCwgMSwgMSwgMCwgMCwga0ludE1heCkp
KTsKKyAgRVhQRUNUX0VRKCI2MTIxLTAyLTExVDA1OjIxOjA3IiwKKyAgICAgICAgICAgIGFic2w6
OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFNlY29uZCgKKyAgICAgICAgICAgICAgICAxOTcw
LCAxLCAxLCAwLCBrSW50TWF4LCBrSW50TWF4KSkpOworICBFWFBFQ1RfRVEoIjI1MTEwNC0xMS0y
MFQxMjoyMTowNyIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2
aWxTZWNvbmQoCisgICAgICAgICAgICAgICAgMTk3MCwgMSwgMSwga0ludE1heCwga0ludE1heCwg
a0ludE1heCkpKTsKKyAgRVhQRUNUX0VRKCI2MTMwNzE1LTA1LTMwVDEyOjIxOjA3IiwKKyAgICAg
ICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFNlY29uZCgKKyAgICAgICAg
ICAgICAgICAxOTcwLCAxLCBrSW50TWF4LCBrSW50TWF4LCBrSW50TWF4LCBrSW50TWF4KSkpOwor
ICBFWFBFQ1RfRVEoIjE4NTA4NzY4NS0xMS0yNlQxMjoyMTowNyIsCisgICAgICAgICAgICBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoCisgICAgICAgICAgICAgICAgMTk3
MCwga0ludE1heCwga0ludE1heCwga0ludE1heCwga0ludE1heCwga0ludE1heCkpKTsKKworICBj
b25zdCBpbnQga0ludE1pbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7CisgIEVY
UEVDVF9FUSgiMTkwMS0xMi0xM1QyMDo0NTo1MiIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoCisgICAgICAgICAgICAgICAgMTk3MCwgMSwgMSwg
MCwgMCwga0ludE1pbikpKTsKKyAgRVhQRUNUX0VRKCItMjE4Mi0xMS0yMFQxODozNzo1MiIsCisg
ICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoCisgICAg
ICAgICAgICAgICAgMTk3MCwgMSwgMSwgMCwga0ludE1pbiwga0ludE1pbikpKTsKKyAgRVhQRUNU
X0VRKCItMjQ3MTY1LTAyLTExVDEwOjM3OjUyIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENp
dmlsVGltZShhYnNsOjpDaXZpbFNlY29uZCgKKyAgICAgICAgICAgICAgICAxOTcwLCAxLCAxLCBr
SW50TWluLCBrSW50TWluLCBrSW50TWluKSkpOworICBFWFBFQ1RfRVEoIi02MTI2Nzc2LTA4LTAx
VDEwOjM3OjUyIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZp
bFNlY29uZCgKKyAgICAgICAgICAgICAgICAxOTcwLCAxLCBrSW50TWluLCBrSW50TWluLCBrSW50
TWluLCBrSW50TWluKSkpOworICBFWFBFQ1RfRVEoIi0xODUwODM3NDctMTAtMzFUMTA6Mzc6NTIi
LAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsU2Vjb25kKAor
ICAgICAgICAgICAgICAgIDE5NzAsIGtJbnRNaW4sIGtJbnRNaW4sIGtJbnRNaW4sIGtJbnRNaW4s
IGtJbnRNaW4pKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBSYW5nZUxpbWl0cykgeworICBjb25z
dCBhYnNsOjpjaXZpbF95ZWFyX3Qga1llYXJNYXggPQorICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czxhYnNsOjpjaXZpbF95ZWFyX3Q+OjptYXgoKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsWWVh
cihrWWVhck1heCksCisgICAgICAgICAgICBhYnNsOjpDaXZpbFllYXI6Om1heCgpKTsKKyAgRVhQ
RUNUX0VRKGFic2w6OkNpdmlsTW9udGgoa1llYXJNYXgsIDEyKSwKKyAgICAgICAgICAgIGFic2w6
OkNpdmlsTW9udGg6Om1heCgpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsRGF5KGtZZWFyTWF4
LCAxMiwgMzEpLAorICAgICAgICAgICAgYWJzbDo6Q2l2aWxEYXk6Om1heCgpKTsKKyAgRVhQRUNU
X0VRKGFic2w6OkNpdmlsSG91cihrWWVhck1heCwgMTIsIDMxLCAyMyksCisgICAgICAgICAgICBh
YnNsOjpDaXZpbEhvdXI6Om1heCgpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsTWludXRlKGtZ
ZWFyTWF4LCAxMiwgMzEsIDIzLCA1OSksCisgICAgICAgICAgICBhYnNsOjpDaXZpbE1pbnV0ZTo6
bWF4KCkpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxTZWNvbmQoa1llYXJNYXgsIDEyLCAzMSwg
MjMsIDU5LCA1OSksCisgICAgICAgICAgICBhYnNsOjpDaXZpbFNlY29uZDo6bWF4KCkpOworCisg
IGNvbnN0IGFic2w6OmNpdmlsX3llYXJfdCBrWWVhck1pbiA9CisgICAgICBzdGQ6Om51bWVyaWNf
bGltaXRzPGFic2w6OmNpdmlsX3llYXJfdD46Om1pbigpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2
aWxZZWFyKGtZZWFyTWluKSwKKyAgICAgICAgICAgIGFic2w6OkNpdmlsWWVhcjo6bWluKCkpOwor
ICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxNb250aChrWWVhck1pbiwgMSksCisgICAgICAgICAgICBh
YnNsOjpDaXZpbE1vbnRoOjptaW4oKSk7CisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbERheShrWWVh
ck1pbiwgMSwgMSksCisgICAgICAgICAgICBhYnNsOjpDaXZpbERheTo6bWluKCkpOworICBFWFBF
Q1RfRVEoYWJzbDo6Q2l2aWxIb3VyKGtZZWFyTWluLCAxLCAxLCAwKSwKKyAgICAgICAgICAgIGFi
c2w6OkNpdmlsSG91cjo6bWluKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxNaW51dGUoa1ll
YXJNaW4sIDEsIDEsIDAsIDApLAorICAgICAgICAgICAgYWJzbDo6Q2l2aWxNaW51dGU6Om1pbigp
KTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsU2Vjb25kKGtZZWFyTWluLCAxLCAxLCAwLCAwLCAw
KSwKKyAgICAgICAgICAgIGFic2w6OkNpdmlsU2Vjb25kOjptaW4oKSk7Cit9CisKK1RFU1QoQ2l2
aWxUaW1lLCBJbXBsaWNpdENyb3NzQWxpZ25tZW50KSB7CisgIGFic2w6OkNpdmlsWWVhciB5ZWFy
KDIwMTUpOworICBhYnNsOjpDaXZpbE1vbnRoIG1vbnRoID0geWVhcjsKKyAgYWJzbDo6Q2l2aWxE
YXkgZGF5ID0gbW9udGg7CisgIGFic2w6OkNpdmlsSG91ciBob3VyID0gZGF5OworICBhYnNsOjpD
aXZpbE1pbnV0ZSBtaW51dGUgPSBob3VyOworICBhYnNsOjpDaXZpbFNlY29uZCBzZWNvbmQgPSBt
aW51dGU7CisKKyAgc2Vjb25kID0geWVhcjsKKyAgRVhQRUNUX0VRKHNlY29uZCwgeWVhcik7Cisg
IHNlY29uZCA9IG1vbnRoOworICBFWFBFQ1RfRVEoc2Vjb25kLCBtb250aCk7CisgIHNlY29uZCA9
IGRheTsKKyAgRVhQRUNUX0VRKHNlY29uZCwgZGF5KTsKKyAgc2Vjb25kID0gaG91cjsKKyAgRVhQ
RUNUX0VRKHNlY29uZCwgaG91cik7CisgIHNlY29uZCA9IG1pbnV0ZTsKKyAgRVhQRUNUX0VRKHNl
Y29uZCwgbWludXRlKTsKKworICBtaW51dGUgPSB5ZWFyOworICBFWFBFQ1RfRVEobWludXRlLCB5
ZWFyKTsKKyAgbWludXRlID0gbW9udGg7CisgIEVYUEVDVF9FUShtaW51dGUsIG1vbnRoKTsKKyAg
bWludXRlID0gZGF5OworICBFWFBFQ1RfRVEobWludXRlLCBkYXkpOworICBtaW51dGUgPSBob3Vy
OworICBFWFBFQ1RfRVEobWludXRlLCBob3VyKTsKKworICBob3VyID0geWVhcjsKKyAgRVhQRUNU
X0VRKGhvdXIsIHllYXIpOworICBob3VyID0gbW9udGg7CisgIEVYUEVDVF9FUShob3VyLCBtb250
aCk7CisgIGhvdXIgPSBkYXk7CisgIEVYUEVDVF9FUShob3VyLCBkYXkpOworCisgIGRheSA9IHll
YXI7CisgIEVYUEVDVF9FUShkYXksIHllYXIpOworICBkYXkgPSBtb250aDsKKyAgRVhQRUNUX0VR
KGRheSwgbW9udGgpOworCisgIG1vbnRoID0geWVhcjsKKyAgRVhQRUNUX0VRKG1vbnRoLCB5ZWFy
KTsKKworICAvLyBFbnN1cmVzIHVuc2FmZSBjb252ZXJzaW9ucyBhcmUgbm90IGFsbG93ZWQuCisg
IEVYUEVDVF9GQUxTRSgKKyAgICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxlPGFic2w6OkNpdmlsU2Vj
b25kLCBhYnNsOjpDaXZpbE1pbnV0ZT46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgKKyAgICAg
IChzdGQ6OmlzX2NvbnZlcnRpYmxlPGFic2w6OkNpdmlsU2Vjb25kLCBhYnNsOjpDaXZpbEhvdXI+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxh
YnNsOjpDaXZpbFNlY29uZCwgYWJzbDo6Q2l2aWxEYXk+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFM
U0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbFNlY29uZCwgYWJzbDo6
Q2l2aWxNb250aD46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIChzdGQ6OmlzX2Nv
bnZlcnRpYmxlPGFic2w6OkNpdmlsU2Vjb25kLCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1ZSkpOwor
CisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxlPGFic2w6OkNpdmls
TWludXRlLCBhYnNsOjpDaXZpbEhvdXI+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAg
ICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbE1pbnV0ZSwgYWJzbDo6Q2l2aWxEYXk+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxh
YnNsOjpDaXZpbE1pbnV0ZSwgYWJzbDo6Q2l2aWxNb250aD46OnZhbHVlKSk7CisgIEVYUEVDVF9G
QUxTRSgKKyAgICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxlPGFic2w6OkNpdmlsTWludXRlLCBhYnNs
OjpDaXZpbFllYXI+Ojp2YWx1ZSkpOworCisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIChzdGQ6Omlz
X2NvbnZlcnRpYmxlPGFic2w6OkNpdmlsSG91ciwgYWJzbDo6Q2l2aWxEYXk+Ojp2YWx1ZSkpOwor
ICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbEhv
dXIsIGFic2w6OkNpdmlsTW9udGg+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAo
c3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbEhvdXIsIGFic2w6OkNpdmlsWWVhcj46OnZh
bHVlKSk7CisKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgKHN0ZDo6aXNfY29udmVydGlibGU8YWJz
bDo6Q2l2aWxEYXksIGFic2w6OkNpdmlsTW9udGg+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0Uo
CisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbERheSwgYWJzbDo6Q2l2aWxZ
ZWFyPjo6dmFsdWUpKTsKKworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0
aWJsZTxhYnNsOjpDaXZpbE1vbnRoLCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1ZSkpOworfQorCitU
RVNUKENpdmlsVGltZSwgRXhwbGljaXRDcm9zc0FsaWdubWVudCkgeworICAvLworICAvLyBBc3Np
Z24gZnJvbSBzbWFsbGVyIHVuaXRzIC0+IGxhcmdlciB1bml0cworICAvLworCisgIGFic2w6OkNp
dmlsU2Vjb25kIHNlY29uZCgyMDE1LCAxLCAyLCAzLCA0LCA1KTsKKyAgRVhQRUNUX0VRKCIyMDE1
LTAxLTAyVDAzOjA0OjA1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHNlY29uZCkpOworCisgIGFi
c2w6OkNpdmlsTWludXRlIG1pbnV0ZShzZWNvbmQpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJU
MDM6MDQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobWludXRlKSk7CisKKyAgYWJzbDo6Q2l2aWxI
b3VyIGhvdXIobWludXRlKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKGhvdXIpKTsKKworICBhYnNsOjpDaXZpbERheSBkYXkoaG91cik7CisgIEVY
UEVDVF9FUSgiMjAxNS0wMS0wMiIsIGFic2w6OkZvcm1hdENpdmlsVGltZShkYXkpKTsKKworICBh
YnNsOjpDaXZpbE1vbnRoIG1vbnRoKGRheSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMSIsIGFic2w6
OkZvcm1hdENpdmlsVGltZShtb250aCkpOworCisgIGFic2w6OkNpdmlsWWVhciB5ZWFyKG1vbnRo
KTsKKyAgRVhQRUNUX0VRKCIyMDE1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHllYXIpKTsKKwor
ICAvLworICAvLyBOb3cgYXNzaWduIGZyb20gbGFyZ2VyIHVuaXRzIC0+IHNtYWxsZXIgdW5pdHMK
KyAgLy8KKworICBtb250aCA9IGFic2w6OkNpdmlsTW9udGgoeWVhcik7CisgIEVYUEVDVF9FUSgi
MjAxNS0wMSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtb250aCkpOworCisgIGRheSA9IGFic2w6
OkNpdmlsRGF5KG1vbnRoKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxIiwgYWJzbDo6Rm9ybWF0
Q2l2aWxUaW1lKGRheSkpOworCisgIGhvdXIgPSBhYnNsOjpDaXZpbEhvdXIoZGF5KTsKKyAgRVhQ
RUNUX0VRKCIyMDE1LTAxLTAxVDAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGhvdXIpKTsKKwor
ICBtaW51dGUgPSBhYnNsOjpDaXZpbE1pbnV0ZShob3VyKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAx
LTAxVDAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1pbnV0ZSkpOworCisgIHNlY29uZCA9
IGFic2w6OkNpdmlsU2Vjb25kKG1pbnV0ZSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMVQwMDow
MDowMCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShzZWNvbmQpKTsKK30KKworLy8gTWV0YWZ1bmN0
aW9uIHRvIHRlc3Qgd2hldGhlciBkaWZmZXJlbmNlIGlzIGFsbG93ZWQgYmV0d2VlbiB0d28gdHlw
ZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IEhhc0RpZmYg
eworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgorICBzdGF0aWMgc3RkOjpm
YWxzZV90eXBlIHRlc3QoLi4uKTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBV
Mj4KKyAgc3RhdGljIHN0ZDo6dHJ1ZV90eXBlIHRlc3QoZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFUx
PigpIC0gc3RkOjpkZWNsdmFsPFUyPigpKSk7CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1
ZSA9IGRlY2x0eXBlKHRlc3Q8VDEsIFQyPigwKSk6OnZhbHVlOworfTsKKworVEVTVChDaXZpbFRp
bWUsIERpc2FsbG93Q3Jvc3NBbGlnbmVkRGlmZmVyZW5jZSkgeworICAvLyBEaWZmZXJlbmNlIGlz
IGFsbG93ZWQgYmV0d2VlbiB0eXBlcyB3aXRoIHRoZSBzYW1lIGFsaWdubWVudC4KKyAgc3RhdGlj
X2Fzc2VydChIYXNEaWZmPGFic2w6OkNpdmlsU2Vjb25kLCBhYnNsOjpDaXZpbFNlY29uZD46OnZh
bHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoSGFzRGlmZjxhYnNsOjpDaXZpbE1pbnV0ZSwgYWJz
bDo6Q2l2aWxNaW51dGU+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KEhhc0RpZmY8YWJz
bDo6Q2l2aWxIb3VyLCBhYnNsOjpDaXZpbEhvdXI+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNz
ZXJ0KEhhc0RpZmY8YWJzbDo6Q2l2aWxEYXksIGFic2w6OkNpdmlsRGF5Pjo6dmFsdWUsICIiKTsK
KyAgc3RhdGljX2Fzc2VydChIYXNEaWZmPGFic2w6OkNpdmlsTW9udGgsIGFic2w6OkNpdmlsTW9u
dGg+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KEhhc0RpZmY8YWJzbDo6Q2l2aWxZZWFy
LCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1ZSwgIiIpOworCisgIC8vIERpZmZlcmVuY2UgaXMgZGlz
YWxsb3dlZCBiZXR3ZWVuIHR5cGVzIHdpdGggZGlmZmVyZW50IGFsaWdubWVudHMuCisgIHN0YXRp
Y19hc3NlcnQoIUhhc0RpZmY8YWJzbDo6Q2l2aWxTZWNvbmQsIGFic2w6OkNpdmlsTWludXRlPjo6
dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghSGFzRGlmZjxhYnNsOjpDaXZpbFNlY29uZCwg
YWJzbDo6Q2l2aWxIb3VyPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghSGFzRGlmZjxh
YnNsOjpDaXZpbFNlY29uZCwgYWJzbDo6Q2l2aWxEYXk+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNf
YXNzZXJ0KCFIYXNEaWZmPGFic2w6OkNpdmlsU2Vjb25kLCBhYnNsOjpDaXZpbE1vbnRoPjo6dmFs
dWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghSGFzRGlmZjxhYnNsOjpDaXZpbFNlY29uZCwgYWJz
bDo6Q2l2aWxZZWFyPjo6dmFsdWUsICIiKTsKKworICBzdGF0aWNfYXNzZXJ0KCFIYXNEaWZmPGFi
c2w6OkNpdmlsTWludXRlLCBhYnNsOjpDaXZpbEhvdXI+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNf
YXNzZXJ0KCFIYXNEaWZmPGFic2w6OkNpdmlsTWludXRlLCBhYnNsOjpDaXZpbERheT46OnZhbHVl
LCAiIik7CisgIHN0YXRpY19hc3NlcnQoIUhhc0RpZmY8YWJzbDo6Q2l2aWxNaW51dGUsIGFic2w6
OkNpdmlsTW9udGg+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KCFIYXNEaWZmPGFic2w6
OkNpdmlsTWludXRlLCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1ZSwgIiIpOworCisgIHN0YXRpY19h
c3NlcnQoIUhhc0RpZmY8YWJzbDo6Q2l2aWxIb3VyLCBhYnNsOjpDaXZpbERheT46OnZhbHVlLCAi
Iik7CisgIHN0YXRpY19hc3NlcnQoIUhhc0RpZmY8YWJzbDo6Q2l2aWxIb3VyLCBhYnNsOjpDaXZp
bE1vbnRoPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghSGFzRGlmZjxhYnNsOjpDaXZp
bEhvdXIsIGFic2w6OkNpdmlsWWVhcj46OnZhbHVlLCAiIik7CisKKyAgc3RhdGljX2Fzc2VydCgh
SGFzRGlmZjxhYnNsOjpDaXZpbERheSwgYWJzbDo6Q2l2aWxNb250aD46OnZhbHVlLCAiIik7Cisg
IHN0YXRpY19hc3NlcnQoIUhhc0RpZmY8YWJzbDo6Q2l2aWxEYXksIGFic2w6OkNpdmlsWWVhcj46
OnZhbHVlLCAiIik7CisKKyAgc3RhdGljX2Fzc2VydCghSGFzRGlmZjxhYnNsOjpDaXZpbE1vbnRo
LCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1ZSwgIiIpOworfQorCitURVNUKENpdmlsVGltZSwgVmFs
dWVTZW1hbnRpY3MpIHsKKyAgY29uc3QgYWJzbDo6Q2l2aWxIb3VyIGEoMjAxNSwgMSwgMiwgMyk7
CisgIGNvbnN0IGFic2w6OkNpdmlsSG91ciBiID0gYTsKKyAgY29uc3QgYWJzbDo6Q2l2aWxIb3Vy
IGMoYik7CisgIGFic2w6OkNpdmlsSG91ciBkOworICBkID0gYzsKKyAgRVhQRUNUX0VRKCIyMDE1
LTAxLTAyVDAzIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGQpKTsKK30KKworVEVTVChDaXZpbFRp
bWUsIFJlbGF0aW9uYWwpIHsKKyAgLy8gVGVzdHMgdGhhdCB0aGUgYWxpZ25tZW50IHVuaXQgaXMg
aWdub3JlZCBpbiBjb21wYXJpc29uLgorICBjb25zdCBhYnNsOjpDaXZpbFllYXIgeWVhcigyMDE0
KTsKKyAgY29uc3QgYWJzbDo6Q2l2aWxNb250aCBtb250aCh5ZWFyKTsKKyAgRVhQRUNUX0VRKHll
YXIsIG1vbnRoKTsKKworI2RlZmluZSBURVNUX1JFTEFUSU9OQUwoT0xERVIsIFlPVU5HRVIpIFwK
KyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZB
TFNFKE9MREVSIDwgT0xERVIpOyAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShPTERFUiA+IE9M
REVSKTsgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShPTERFUiA+PSBPTERFUik7ICAgICAgICBc
CisgICAgRVhQRUNUX1RSVUUoT0xERVIgPD0gT0xERVIpOyAgICAgICAgXAorICAgIEVYUEVDVF9G
QUxTRShZT1VOR0VSIDwgWU9VTkdFUik7ICAgIFwKKyAgICBFWFBFQ1RfRkFMU0UoWU9VTkdFUiA+
IFlPVU5HRVIpOyAgICBcCisgICAgRVhQRUNUX1RSVUUoWU9VTkdFUiA+PSBZT1VOR0VSKTsgICAg
XAorICAgIEVYUEVDVF9UUlVFKFlPVU5HRVIgPD0gWU9VTkdFUik7ICAgIFwKKyAgICBFWFBFQ1Rf
RVEoT0xERVIsIE9MREVSKTsgICAgICAgICAgICBcCisgICAgRVhQRUNUX05FKE9MREVSLCBZT1VO
R0VSKTsgICAgICAgICAgXAorICAgIEVYUEVDVF9MVChPTERFUiwgWU9VTkdFUik7ICAgICAgICAg
IFwKKyAgICBFWFBFQ1RfTEUoT0xERVIsIFlPVU5HRVIpOyAgICAgICAgICBcCisgICAgRVhQRUNU
X0dUKFlPVU5HRVIsIE9MREVSKTsgICAgICAgICAgXAorICAgIEVYUEVDVF9HRShZT1VOR0VSLCBP
TERFUik7ICAgICAgICAgIFwKKyAgfSB3aGlsZSAoMCkKKworICAvLyBBbGlnbm1lbnQgaXMgaWdu
b3JlZCBpbiBjb21wYXJpc29uICh2ZXJpZmllZCBhYm92ZSksIHNvIENpdmlsU2Vjb25kIGlzCisg
IC8vIHVzZWQgdG8gdGVzdCBjb21wYXJpc29uIGluIGFsbCBmaWVsZCBwb3NpdGlvbnMuCisgIFRF
U1RfUkVMQVRJT05BTChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCAxLCAwLCAwLCAwKSwKKyAg
ICAgICAgICAgICAgICAgIGFic2w6OkNpdmlsU2Vjb25kKDIwMTUsIDEsIDEsIDAsIDAsIDApKTsK
KyAgVEVTVF9SRUxBVElPTkFMKGFic2w6OkNpdmlsU2Vjb25kKDIwMTQsIDEsIDEsIDAsIDAsIDAp
LAorICAgICAgICAgICAgICAgICAgYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMiwgMSwgMCwgMCwg
MCkpOworICBURVNUX1JFTEFUSU9OQUwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMSwgMSwgMCwg
MCwgMCksCisgICAgICAgICAgICAgICAgICBhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCAyLCAw
LCAwLCAwKSk7CisgIFRFU1RfUkVMQVRJT05BTChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCAx
LCAwLCAwLCAwKSwKKyAgICAgICAgICAgICAgICAgIGFic2w6OkNpdmlsU2Vjb25kKDIwMTQsIDEs
IDEsIDEsIDAsIDApKTsKKyAgVEVTVF9SRUxBVElPTkFMKGFic2w6OkNpdmlsU2Vjb25kKDIwMTQs
IDEsIDEsIDEsIDAsIDApLAorICAgICAgICAgICAgICAgICAgYWJzbDo6Q2l2aWxTZWNvbmQoMjAx
NCwgMSwgMSwgMSwgMSwgMCkpOworICBURVNUX1JFTEFUSU9OQUwoYWJzbDo6Q2l2aWxTZWNvbmQo
MjAxNCwgMSwgMSwgMSwgMSwgMCksCisgICAgICAgICAgICAgICAgICBhYnNsOjpDaXZpbFNlY29u
ZCgyMDE0LCAxLCAxLCAxLCAxLCAxKSk7CisKKyAgLy8gVGVzdHMgdGhlIHJlbGF0aW9uYWwgb3Bl
cmF0b3JzIG9mIHR3byBkaWZmZXJlbnQgY2l2aWwtdGltZSB0eXBlcy4KKyAgVEVTVF9SRUxBVElP
TkFMKGFic2w6OkNpdmlsRGF5KDIwMTQsIDEsIDEpLAorICAgICAgICAgICAgICAgICAgYWJzbDo6
Q2l2aWxNaW51dGUoMjAxNCwgMSwgMSwgMSwgMSkpOworICBURVNUX1JFTEFUSU9OQUwoYWJzbDo6
Q2l2aWxEYXkoMjAxNCwgMSwgMSksCisgICAgICAgICAgICAgICAgICBhYnNsOjpDaXZpbE1vbnRo
KDIwMTQsIDIpKTsKKworI3VuZGVmIFRFU1RfUkVMQVRJT05BTAorfQorCitURVNUKENpdmlsVGlt
ZSwgQXJpdGhtZXRpYykgeworICBhYnNsOjpDaXZpbFNlY29uZCBzZWNvbmQoMjAxNSwgMSwgMiwg
MywgNCwgNSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNDowNiIsIGFic2w6OkZvcm1h
dENpdmlsVGltZShzZWNvbmQgKz0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQ6
MDciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc2Vjb25kICsgMSkpOworICBFWFBFQ1RfRVEoIjIw
MTUtMDEtMDJUMDM6MDQ6MDgiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoMiArIHNlY29uZCkpOwor
ICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQ6MDUiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUo
c2Vjb25kIC0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQ6MDUiLCBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoc2Vjb25kIC09IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAz
OjA0OjA1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHNlY29uZCsrKSk7CisgIEVYUEVDVF9FUSgi
MjAxNS0wMS0wMlQwMzowNDowNyIsIGFic2w6OkZvcm1hdENpdmlsVGltZSgrK3NlY29uZCkpOwor
ICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQ6MDciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUo
c2Vjb25kLS0pKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0OjA1IiwgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKC0tc2Vjb25kKSk7CisKKyAgYWJzbDo6Q2l2aWxNaW51dGUgbWludXRlKDIw
MTUsIDEsIDIsIDMsIDQpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDUiLCBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUobWludXRlICs9IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAz
OjA2IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1pbnV0ZSArIDEpKTsKKyAgRVhQRUNUX0VRKCIy
MDE1LTAxLTAyVDAzOjA3IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKDIgKyBtaW51dGUpKTsKKyAg
RVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1pbnV0
ZSAtIDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0IiwgYWJzbDo6Rm9ybWF0Q2l2
aWxUaW1lKG1pbnV0ZSAtPSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNCIsIGFi
c2w6OkZvcm1hdENpdmlsVGltZShtaW51dGUrKykpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJU
MDM6MDYiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoKyttaW51dGUpKTsKKyAgRVhQRUNUX0VRKCIy
MDE1LTAxLTAyVDAzOjA2IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1pbnV0ZS0tKSk7CisgIEVY
UEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZSgtLW1pbnV0
ZSkpOworCisgIGFic2w6OkNpdmlsSG91ciBob3VyKDIwMTUsIDEsIDIsIDMpOworICBFWFBFQ1Rf
RVEoIjIwMTUtMDEtMDJUMDQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoaG91ciArPSAxKSk7Cisg
IEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShob3VyICsg
MSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDYiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUo
MiArIGhvdXIpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwgYWJzbDo6Rm9ybWF0Q2l2
aWxUaW1lKGhvdXIgLSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMyIsIGFic2w6OkZv
cm1hdENpdmlsVGltZShob3VyIC09IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwg
YWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGhvdXIrKykpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJU
MDUiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoKytob3VyKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0w
MS0wMlQwNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShob3VyLS0pKTsKKyAgRVhQRUNUX0VRKCIy
MDE1LTAxLTAyVDAzIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKC0taG91cikpOworCisgIGFic2w6
OkNpdmlsRGF5IGRheSgyMDE1LCAxLCAyKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAzIiwgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKGRheSArPSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wNCIs
IGFic2w6OkZvcm1hdENpdmlsVGltZShkYXkgKyAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0w
NSIsIGFic2w6OkZvcm1hdENpdmlsVGltZSgyICsgZGF5KSk7CisgIEVYUEVDVF9FUSgiMjAxNS0w
MS0wMiIsIGFic2w6OkZvcm1hdENpdmlsVGltZShkYXkgLSAxKSk7CisgIEVYUEVDVF9FUSgiMjAx
NS0wMS0wMiIsIGFic2w6OkZvcm1hdENpdmlsVGltZShkYXkgLT0gMSkpOworICBFWFBFQ1RfRVEo
IjIwMTUtMDEtMDIiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoZGF5KyspKTsKKyAgRVhQRUNUX0VR
KCIyMDE1LTAxLTA0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKCsrZGF5KSk7CisgIEVYUEVDVF9F
USgiMjAxNS0wMS0wNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShkYXktLSkpOworICBFWFBFQ1Rf
RVEoIjIwMTUtMDEtMDIiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoLS1kYXkpKTsKKworICBhYnNs
OjpDaXZpbE1vbnRoIG1vbnRoKDIwMTUsIDEpOworICBFWFBFQ1RfRVEoIjIwMTUtMDIiLCBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUobW9udGggKz0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDMiLCBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUobW9udGggKyAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wNCIs
IGFic2w6OkZvcm1hdENpdmlsVGltZSgyICsgbW9udGgpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAx
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1vbnRoIC0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUt
MDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobW9udGggLT0gMSkpOworICBFWFBFQ1RfRVEoIjIw
MTUtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobW9udGgrKykpOworICBFWFBFQ1RfRVEoIjIw
MTUtMDMiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoKyttb250aCkpOworICBFWFBFQ1RfRVEoIjIw
MTUtMDMiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobW9udGgtLSkpOworICBFWFBFQ1RfRVEoIjIw
MTUtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoLS1tb250aCkpOworCisgIGFic2w6OkNpdmls
WWVhciB5ZWFyKDIwMTUpOworICBFWFBFQ1RfRVEoIjIwMTYiLCBhYnNsOjpGb3JtYXRDaXZpbFRp
bWUoeWVhciArPSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNyIsIGFic2w6OkZvcm1hdENpdmlsVGlt
ZSh5ZWFyICsgMSkpOworICBFWFBFQ1RfRVEoIjIwMTgiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUo
MiArIHllYXIpKTsKKyAgRVhQRUNUX0VRKCIyMDE1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHll
YXIgLSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh5ZWFy
IC09IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHllYXIr
KykpOworICBFWFBFQ1RfRVEoIjIwMTciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoKyt5ZWFyKSk7
CisgIEVYUEVDVF9FUSgiMjAxNyIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh5ZWFyLS0pKTsKKyAg
RVhQRUNUX0VRKCIyMDE1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKC0teWVhcikpOworfQorCitU
RVNUKENpdmlsVGltZSwgQXJpdGhtZXRpY0xpbWl0cykgeworICBjb25zdCBpbnQga0ludE1heCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgIGNvbnN0IGludCBrSW50TWluID0g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKTsKKworICBhYnNsOjpDaXZpbFNlY29uZCBz
ZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCk7CisgIHNlY29uZCArPSBrSW50TWF4OworICBFWFBF
Q1RfRVEoIjIwMzgtMDEtMTlUMDM6MTQ6MDciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc2Vjb25k
KSk7CisgIHNlY29uZCAtPSBrSW50TWF4OworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDA6
MDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc2Vjb25kKSk7CisgIHNlY29uZCArPSBrSW50TWlu
OworICBFWFBFQ1RfRVEoIjE5MDEtMTItMTNUMjA6NDU6NTIiLCBhYnNsOjpGb3JtYXRDaXZpbFRp
bWUoc2Vjb25kKSk7CisgIHNlY29uZCAtPSBrSW50TWluOworICBFWFBFQ1RfRVEoIjE5NzAtMDEt
MDFUMDA6MDA6MDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc2Vjb25kKSk7CisKKyAgYWJzbDo6
Q2l2aWxNaW51dGUgbWludXRlKDE5NzAsIDEsIDEsIDAsIDApOworICBtaW51dGUgKz0ga0ludE1h
eDsKKyAgRVhQRUNUX0VRKCI2MDUzLTAxLTIzVDAyOjA3IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1l
KG1pbnV0ZSkpOworICBtaW51dGUgLT0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAx
VDAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1pbnV0ZSkpOworICBtaW51dGUgKz0ga0lu
dE1pbjsKKyAgRVhQRUNUX0VRKCItMjExNC0xMi0wOFQyMTo1MiIsIGFic2w6OkZvcm1hdENpdmls
VGltZShtaW51dGUpKTsKKyAgbWludXRlIC09IGtJbnRNaW47CisgIEVYUEVDVF9FUSgiMTk3MC0w
MS0wMVQwMDowMCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtaW51dGUpKTsKKworICBhYnNsOjpD
aXZpbEhvdXIgaG91cigxOTcwLCAxLCAxLCAwKTsKKyAgaG91ciArPSBrSW50TWF4OworICBFWFBF
Q1RfRVEoIjI0Njk1My0xMC0wOVQwNyIsIGFic2w6OkZvcm1hdENpdmlsVGltZShob3VyKSk7Cisg
IGhvdXIgLT0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwIiwgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKGhvdXIpKTsKKyAgaG91ciArPSBrSW50TWluOworICBFWFBFQ1RfRVEoIi0y
NDMwMTQtMDMtMjRUMTYiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoaG91cikpOworICBob3VyIC09
IGtJbnRNaW47CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMCIsIGFic2w6OkZvcm1hdENpdmls
VGltZShob3VyKSk7CisKKyAgYWJzbDo6Q2l2aWxEYXkgZGF5KDE5NzAsIDEsIDEpOworICBkYXkg
Kz0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCI1ODgxNTgwLTA3LTExIiwgYWJzbDo6Rm9ybWF0Q2l2
aWxUaW1lKGRheSkpOworICBkYXkgLT0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAx
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGRheSkpOworICBkYXkgKz0ga0ludE1pbjsKKyAgRVhQ
RUNUX0VRKCItNTg3NzY0MS0wNi0yMyIsIGFic2w6OkZvcm1hdENpdmlsVGltZShkYXkpKTsKKyAg
ZGF5IC09IGtJbnRNaW47CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMSIsIGFic2w6OkZvcm1hdENp
dmlsVGltZShkYXkpKTsKKworICBhYnNsOjpDaXZpbE1vbnRoIG1vbnRoKDE5NzAsIDEpOworICBt
b250aCArPSBrSW50TWF4OworICBFWFBFQ1RfRVEoIjE3ODk1ODk0MC0wOCIsIGFic2w6OkZvcm1h
dENpdmlsVGltZShtb250aCkpOworICBtb250aCAtPSBrSW50TWF4OworICBFWFBFQ1RfRVEoIjE5
NzAtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobW9udGgpKTsKKyAgbW9udGggKz0ga0ludE1p
bjsKKyAgRVhQRUNUX0VRKCItMTc4OTU1MDAxLTA1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1v
bnRoKSk7CisgIG1vbnRoIC09IGtJbnRNaW47CisgIEVYUEVDVF9FUSgiMTk3MC0wMSIsIGFic2w6
OkZvcm1hdENpdmlsVGltZShtb250aCkpOworCisgIGFic2w6OkNpdmlsWWVhciB5ZWFyKDApOwor
ICB5ZWFyICs9IGtJbnRNYXg7CisgIEVYUEVDVF9FUSgiMjE0NzQ4MzY0NyIsIGFic2w6OkZvcm1h
dENpdmlsVGltZSh5ZWFyKSk7CisgIHllYXIgLT0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCIwIiwg
YWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHllYXIpKTsKKyAgeWVhciArPSBrSW50TWluOworICBFWFBF
Q1RfRVEoIi0yMTQ3NDgzNjQ4IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHllYXIpKTsKKyAgeWVh
ciAtPSBrSW50TWluOworICBFWFBFQ1RfRVEoIjAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoeWVh
cikpOworfQorCitURVNUKENpdmlsVGltZSwgRGlmZmVyZW5jZSkgeworICBhYnNsOjpDaXZpbFNl
Y29uZCBzZWNvbmQoMjAxNSwgMSwgMiwgMywgNCwgNSk7CisgIEVYUEVDVF9FUSgwLCBzZWNvbmQg
LSBzZWNvbmQpOworICBFWFBFQ1RfRVEoMTAsIChzZWNvbmQgKyAxMCkgLSBzZWNvbmQpOworICBF
WFBFQ1RfRVEoLTEwLCAoc2Vjb25kIC0gMTApIC0gc2Vjb25kKTsKKworICBhYnNsOjpDaXZpbE1p
bnV0ZSBtaW51dGUoMjAxNSwgMSwgMiwgMywgNCk7CisgIEVYUEVDVF9FUSgwLCBtaW51dGUgLSBt
aW51dGUpOworICBFWFBFQ1RfRVEoMTAsIChtaW51dGUgKyAxMCkgLSBtaW51dGUpOworICBFWFBF
Q1RfRVEoLTEwLCAobWludXRlIC0gMTApIC0gbWludXRlKTsKKworICBhYnNsOjpDaXZpbEhvdXIg
aG91cigyMDE1LCAxLCAyLCAzKTsKKyAgRVhQRUNUX0VRKDAsIGhvdXIgLSBob3VyKTsKKyAgRVhQ
RUNUX0VRKDEwLCAoaG91ciArIDEwKSAtIGhvdXIpOworICBFWFBFQ1RfRVEoLTEwLCAoaG91ciAt
IDEwKSAtIGhvdXIpOworCisgIGFic2w6OkNpdmlsRGF5IGRheSgyMDE1LCAxLCAyKTsKKyAgRVhQ
RUNUX0VRKDAsIGRheSAtIGRheSk7CisgIEVYUEVDVF9FUSgxMCwgKGRheSArIDEwKSAtIGRheSk7
CisgIEVYUEVDVF9FUSgtMTAsIChkYXkgLSAxMCkgLSBkYXkpOworCisgIGFic2w6OkNpdmlsTW9u
dGggbW9udGgoMjAxNSwgMSk7CisgIEVYUEVDVF9FUSgwLCBtb250aCAtIG1vbnRoKTsKKyAgRVhQ
RUNUX0VRKDEwLCAobW9udGggKyAxMCkgLSBtb250aCk7CisgIEVYUEVDVF9FUSgtMTAsIChtb250
aCAtIDEwKSAtIG1vbnRoKTsKKworICBhYnNsOjpDaXZpbFllYXIgeWVhcigyMDE1KTsKKyAgRVhQ
RUNUX0VRKDAsIHllYXIgLSB5ZWFyKTsKKyAgRVhQRUNUX0VRKDEwLCAoeWVhciArIDEwKSAtIHll
YXIpOworICBFWFBFQ1RfRVEoLTEwLCAoeWVhciAtIDEwKSAtIHllYXIpOworfQorCitURVNUKENp
dmlsVGltZSwgRGlmZmVyZW5jZUxpbWl0cykgeworICBjb25zdCBhYnNsOjpjaXZpbF9kaWZmX3Qg
a0RpZmZNYXggPQorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxhYnNsOjpjaXZpbF9kaWZmX3Q+
OjptYXgoKTsKKyAgY29uc3QgYWJzbDo6Y2l2aWxfZGlmZl90IGtEaWZmTWluID0KKyAgICAgIHN0
ZDo6bnVtZXJpY19saW1pdHM8YWJzbDo6Y2l2aWxfZGlmZl90Pjo6bWluKCk7CisKKyAgLy8gQ2hl
Y2sgZGF5IGFyaXRobWV0aWMgYXQgdGhlIGVuZCBvZiB0aGUgeWVhciByYW5nZS4KKyAgY29uc3Qg
YWJzbDo6Q2l2aWxEYXkgbWF4X2RheShrRGlmZk1heCwgMTIsIDMxKTsKKyAgRVhQRUNUX0VRKDEs
IG1heF9kYXkgLSAobWF4X2RheSAtIDEpKTsKKyAgRVhQRUNUX0VRKC0xLCAobWF4X2RheSAtIDEp
IC0gbWF4X2RheSk7CisKKyAgLy8gQ2hlY2sgZGF5IGFyaXRobWV0aWMgYXQgdGhlIHN0YXJ0IG9m
IHRoZSB5ZWFyIHJhbmdlLgorICBjb25zdCBhYnNsOjpDaXZpbERheSBtaW5fZGF5KGtEaWZmTWlu
LCAxLCAxKTsKKyAgRVhQRUNUX0VRKDEsIChtaW5fZGF5ICsgMSkgLSBtaW5fZGF5KTsKKyAgRVhQ
RUNUX0VRKC0xLCBtaW5fZGF5IC0gKG1pbl9kYXkgKyAxKSk7CisKKyAgLy8gQ2hlY2sgdGhlIGxp
bWl0cyBvZiB0aGUgcmV0dXJuIHZhbHVlLgorICBjb25zdCBhYnNsOjpDaXZpbERheSBkMSgxOTcw
LCAxLCAxKTsKKyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgZDIoMjUyNTI3MzQ5Mjc3Njg1MjQsIDcs
IDI3KTsKKyAgRVhQRUNUX0VRKGtEaWZmTWF4LCBkMiAtIGQxKTsKKyAgRVhQRUNUX0VRKGtEaWZm
TWluLCBkMSAtIChkMiArIDEpKTsKK30KKworVEVTVChDaXZpbFRpbWUsIFByb3BlcnRpZXMpIHsK
KyAgYWJzbDo6Q2l2aWxTZWNvbmQgc3MoMjAxNSwgMiwgMywgNCwgNSwgNik7CisgIEVYUEVDVF9F
USgyMDE1LCBzcy55ZWFyKCkpOworICBFWFBFQ1RfRVEoMiwgc3MubW9udGgoKSk7CisgIEVYUEVD
VF9FUSgzLCBzcy5kYXkoKSk7CisgIEVYUEVDVF9FUSg0LCBzcy5ob3VyKCkpOworICBFWFBFQ1Rf
RVEoNSwgc3MubWludXRlKCkpOworICBFWFBFQ1RfRVEoNiwgc3Muc2Vjb25kKCkpOworICBFWFBF
Q1RfRVEoYWJzbDo6V2Vla2RheTo6dHVlc2RheSwgYWJzbDo6R2V0V2Vla2RheShzcykpOworICBF
WFBFQ1RfRVEoMzQsIGFic2w6OkdldFllYXJEYXkoc3MpKTsKKworICBhYnNsOjpDaXZpbE1pbnV0
ZSBtbSgyMDE1LCAyLCAzLCA0LCA1LCA2KTsKKyAgRVhQRUNUX0VRKDIwMTUsIG1tLnllYXIoKSk7
CisgIEVYUEVDVF9FUSgyLCBtbS5tb250aCgpKTsKKyAgRVhQRUNUX0VRKDMsIG1tLmRheSgpKTsK
KyAgRVhQRUNUX0VRKDQsIG1tLmhvdXIoKSk7CisgIEVYUEVDVF9FUSg1LCBtbS5taW51dGUoKSk7
CisgIEVYUEVDVF9FUSgwLCBtbS5zZWNvbmQoKSk7CisgIEVYUEVDVF9FUShhYnNsOjpXZWVrZGF5
Ojp0dWVzZGF5LCBhYnNsOjpHZXRXZWVrZGF5KG1tKSk7CisgIEVYUEVDVF9FUSgzNCwgYWJzbDo6
R2V0WWVhckRheShtbSkpOworCisgIGFic2w6OkNpdmlsSG91ciBoaCgyMDE1LCAyLCAzLCA0LCA1
LCA2KTsKKyAgRVhQRUNUX0VRKDIwMTUsIGhoLnllYXIoKSk7CisgIEVYUEVDVF9FUSgyLCBoaC5t
b250aCgpKTsKKyAgRVhQRUNUX0VRKDMsIGhoLmRheSgpKTsKKyAgRVhQRUNUX0VRKDQsIGhoLmhv
dXIoKSk7CisgIEVYUEVDVF9FUSgwLCBoaC5taW51dGUoKSk7CisgIEVYUEVDVF9FUSgwLCBoaC5z
ZWNvbmQoKSk7CisgIEVYUEVDVF9FUShhYnNsOjpXZWVrZGF5Ojp0dWVzZGF5LCBhYnNsOjpHZXRX
ZWVrZGF5KGhoKSk7CisgIEVYUEVDVF9FUSgzNCwgYWJzbDo6R2V0WWVhckRheShoaCkpOworCisg
IGFic2w6OkNpdmlsRGF5IGQoMjAxNSwgMiwgMywgNCwgNSwgNik7CisgIEVYUEVDVF9FUSgyMDE1
LCBkLnllYXIoKSk7CisgIEVYUEVDVF9FUSgyLCBkLm1vbnRoKCkpOworICBFWFBFQ1RfRVEoMywg
ZC5kYXkoKSk7CisgIEVYUEVDVF9FUSgwLCBkLmhvdXIoKSk7CisgIEVYUEVDVF9FUSgwLCBkLm1p
bnV0ZSgpKTsKKyAgRVhQRUNUX0VRKDAsIGQuc2Vjb25kKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6
V2Vla2RheTo6dHVlc2RheSwgYWJzbDo6R2V0V2Vla2RheShkKSk7CisgIEVYUEVDVF9FUSgzNCwg
YWJzbDo6R2V0WWVhckRheShkKSk7CisKKyAgYWJzbDo6Q2l2aWxNb250aCBtKDIwMTUsIDIsIDMs
IDQsIDUsIDYpOworICBFWFBFQ1RfRVEoMjAxNSwgbS55ZWFyKCkpOworICBFWFBFQ1RfRVEoMiwg
bS5tb250aCgpKTsKKyAgRVhQRUNUX0VRKDEsIG0uZGF5KCkpOworICBFWFBFQ1RfRVEoMCwgbS5o
b3VyKCkpOworICBFWFBFQ1RfRVEoMCwgbS5taW51dGUoKSk7CisgIEVYUEVDVF9FUSgwLCBtLnNl
Y29uZCgpKTsKKyAgRVhQRUNUX0VRKGFic2w6OldlZWtkYXk6OnN1bmRheSwgYWJzbDo6R2V0V2Vl
a2RheShtKSk7CisgIEVYUEVDVF9FUSgzMiwgYWJzbDo6R2V0WWVhckRheShtKSk7CisKKyAgYWJz
bDo6Q2l2aWxZZWFyIHkoMjAxNSwgMiwgMywgNCwgNSwgNik7CisgIEVYUEVDVF9FUSgyMDE1LCB5
LnllYXIoKSk7CisgIEVYUEVDVF9FUSgxLCB5Lm1vbnRoKCkpOworICBFWFBFQ1RfRVEoMSwgeS5k
YXkoKSk7CisgIEVYUEVDVF9FUSgwLCB5LmhvdXIoKSk7CisgIEVYUEVDVF9FUSgwLCB5Lm1pbnV0
ZSgpKTsKKyAgRVhQRUNUX0VRKDAsIHkuc2Vjb25kKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6V2Vl
a2RheTo6dGh1cnNkYXksIGFic2w6OkdldFdlZWtkYXkoeSkpOworICBFWFBFQ1RfRVEoMSwgYWJz
bDo6R2V0WWVhckRheSh5KSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBGb3JtYXQpIHsKKyAgYWJz
bDo6Q2l2aWxTZWNvbmQgc3M7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDowMDowMCIsIGFi
c2w6OkZvcm1hdENpdmlsVGltZShzcykpOworCisgIGFic2w6OkNpdmlsTWludXRlIG1tOworICBF
WFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobW0pKTsK
KworICBhYnNsOjpDaXZpbEhvdXIgaGg7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMCIsIGFi
c2w6OkZvcm1hdENpdmlsVGltZShoaCkpOworCisgIGFic2w6OkNpdmlsRGF5IGQ7CisgIEVYUEVD
VF9FUSgiMTk3MC0wMS0wMSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShkKSk7CisKKyAgYWJzbDo6
Q2l2aWxNb250aCBtOworICBFWFBFQ1RfRVEoIjE5NzAtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRp
bWUobSkpOworCisgIGFic2w6OkNpdmlsWWVhciB5OworICBFWFBFQ1RfRVEoIjE5NzAiLCBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoeSkpOworfQorCitURVNUKENpdmlsVGltZSwgRm9ybWF0QW5kUGFy
c2VMZW5pZW50KSB7CisgIGFic2w6OkNpdmlsU2Vjb25kIHNzOworICBFWFBFQ1RfRVEoIjE5NzAt
MDEtMDFUMDA6MDA6MDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc3MpKTsKKworICBhYnNsOjpD
aXZpbE1pbnV0ZSBtbTsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAwIiwgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKG1tKSk7CisKKyAgYWJzbDo6Q2l2aWxIb3VyIGhoOworICBFWFBFQ1RfRVEo
IjE5NzAtMDEtMDFUMDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoaGgpKTsKKworICBhYnNsOjpD
aXZpbERheSBkOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRp
bWUoZCkpOworCisgIGFic2w6OkNpdmlsTW9udGggbTsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxIiwg
YWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG0pKTsKKworICBhYnNsOjpDaXZpbFllYXIgeTsKKyAgRVhQ
RUNUX0VRKCIxOTcwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHkpKTsKK30KKworVEVTVChDaXZp
bFRpbWUsIE91dHB1dFN0cmVhbSkgeworICBhYnNsOjpDaXZpbFNlY29uZCBjcygyMDE2LCAyLCAz
LCA0LCA1LCA2KTsKKyAgeworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgIHNzIDw8IHN0
ZDo6bGVmdCA8PCBzdGQ6OnNldGZpbGwoJy4nKTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykgPDwg
J1gnOworICAgIHNzIDw8IHN0ZDo6c2V0dygyMSkgPDwgYWJzbDo6Q2l2aWxZZWFyKGNzKTsKKyAg
ICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOworICAgIEVYUEVDVF9FUSgiWC4uMjAxNi4uLi4u
Li4uLi4uLi4uLi4uWC4uIiwgc3Muc3RyKCkpOworICB9CisgIHsKKyAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBzczsKKyAgICBzcyA8PCBzdGQ6OmxlZnQgPDwgc3RkOjpzZXRmaWxsKCcuJyk7CisgICAg
c3MgPDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMjEpIDw8IGFi
c2w6OkNpdmlsTW9udGgoY3MpOworICAgIHNzIDw8IHN0ZDo6c2V0dygzKSA8PCAnWCc7CisgICAg
RVhQRUNUX0VRKCJYLi4yMDE2LTAyLi4uLi4uLi4uLi4uLi5YLi4iLCBzcy5zdHIoKSk7CisgIH0K
KyAgeworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgIHNzIDw8IHN0ZDo6bGVmdCA8PCBz
dGQ6OnNldGZpbGwoJy4nKTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOworICAgIHNz
IDw8IHN0ZDo6c2V0dygyMSkgPDwgYWJzbDo6Q2l2aWxEYXkoY3MpOworICAgIHNzIDw8IHN0ZDo6
c2V0dygzKSA8PCAnWCc7CisgICAgRVhQRUNUX0VRKCJYLi4yMDE2LTAyLTAzLi4uLi4uLi4uLi5Y
Li4iLCBzcy5zdHIoKSk7CisgIH0KKyAgeworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAg
IHNzIDw8IHN0ZDo6bGVmdCA8PCBzdGQ6OnNldGZpbGwoJy4nKTsKKyAgICBzcyA8PCBzdGQ6OnNl
dHcoMykgPDwgJ1gnOworICAgIHNzIDw8IHN0ZDo6c2V0dygyMSkgPDwgYWJzbDo6Q2l2aWxIb3Vy
KGNzKTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOworICAgIEVYUEVDVF9FUSgiWC4u
MjAxNi0wMi0wM1QwNC4uLi4uLi4uWC4uIiwgc3Muc3RyKCkpOworICB9CisgIHsKKyAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBzczsKKyAgICBzcyA8PCBzdGQ6OmxlZnQgPDwgc3RkOjpzZXRmaWxsKCcu
Jyk7CisgICAgc3MgPDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsKKyAgICBzcyA8PCBzdGQ6OnNldHco
MjEpIDw8IGFic2w6OkNpdmlsTWludXRlKGNzKTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykgPDwg
J1gnOworICAgIEVYUEVDVF9FUSgiWC4uMjAxNi0wMi0wM1QwNDowNS4uLi4uWC4uIiwgc3Muc3Ry
KCkpOworICB9CisgIHsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBzcyA8PCBzdGQ6
OmxlZnQgPDwgc3RkOjpzZXRmaWxsKCcuJyk7CisgICAgc3MgPDwgc3RkOjpzZXR3KDMpIDw8ICdY
JzsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMjEpIDw8IGFic2w6OkNpdmlsU2Vjb25kKGNzKTsKKyAg
ICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOworICAgIEVYUEVDVF9FUSgiWC4uMjAxNi0wMi0w
M1QwNDowNTowNi4uWC4uIiwgc3Muc3RyKCkpOworICB9CisgIHsKKyAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBzczsKKyAgICBzcyA8PCBzdGQ6OmxlZnQgPDwgc3RkOjpzZXRmaWxsKCcuJyk7CisgICAg
c3MgPDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMjEpIDw8IGFi
c2w6OldlZWtkYXk6OndlZG5lc2RheTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOwor
ICAgIEVYUEVDVF9FUSgiWC4uV2VkbmVzZGF5Li4uLi4uLi4uLi4uWC4uIiwgc3Muc3RyKCkpOwor
ICB9Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBXZWVrZGF5KSB7CisgIGFic2w6OkNpdmlsRGF5IGQo
MTk3MCwgMSwgMSk7CisgIEVYUEVDVF9FUShhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSwgYWJzbDo6
R2V0V2Vla2RheShkKSkgPDwgZDsKKworICAvLyBXZSB1c2VkIHRvIGdldCB0aGlzIHdyb25nIGZv
ciB5ZWFycyA8IC0zMC4KKyAgZCA9IGFic2w6OkNpdmlsRGF5KC0zMSwgMTIsIDI0KTsKKyAgRVhQ
RUNUX0VRKGFic2w6OldlZWtkYXk6OndlZG5lc2RheSwgYWJzbDo6R2V0V2Vla2RheShkKSkgPDwg
ZDsKK30KKworVEVTVChDaXZpbFRpbWUsIE5leHRQcmV2V2Vla2RheSkgeworICAvLyBKYW4gMSwg
MTk3MCB3YXMgYSBUaHVyc2RheS4KKyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgdGh1cnNkYXkoMTk3
MCwgMSwgMSk7CisKKyAgLy8gVGh1cnNkYXkgLT4gVGh1cnNkYXkKKyAgYWJzbDo6Q2l2aWxEYXkg
ZCA9IGFic2w6Ok5leHRXZWVrZGF5KHRodXJzZGF5LCBhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSk7
CisgIEVYUEVDVF9FUSg3LCBkIC0gdGh1cnNkYXkpIDw8IGQ7CisgIEVYUEVDVF9FUShkIC0gMTQs
IGFic2w6OlByZXZXZWVrZGF5KHRodXJzZGF5LCBhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSkpOwor
CisgIC8vIFRodXJzZGF5IC0+IEZyaWRheQorICBkID0gYWJzbDo6TmV4dFdlZWtkYXkodGh1cnNk
YXksIGFic2w6OldlZWtkYXk6OmZyaWRheSk7CisgIEVYUEVDVF9FUSgxLCBkIC0gdGh1cnNkYXkp
IDw8IGQ7CisgIEVYUEVDVF9FUShkIC0gNywgYWJzbDo6UHJldldlZWtkYXkodGh1cnNkYXksIGFi
c2w6OldlZWtkYXk6OmZyaWRheSkpOworCisgIC8vIFRodXJzZGF5IC0+IFNhdHVyZGF5CisgIGQg
PSBhYnNsOjpOZXh0V2Vla2RheSh0aHVyc2RheSwgYWJzbDo6V2Vla2RheTo6c2F0dXJkYXkpOwor
ICBFWFBFQ1RfRVEoMiwgZCAtIHRodXJzZGF5KSA8PCBkOworICBFWFBFQ1RfRVEoZCAtIDcsIGFi
c2w6OlByZXZXZWVrZGF5KHRodXJzZGF5LCBhYnNsOjpXZWVrZGF5OjpzYXR1cmRheSkpOworCisg
IC8vIFRodXJzZGF5IC0+IFN1bmRheQorICBkID0gYWJzbDo6TmV4dFdlZWtkYXkodGh1cnNkYXks
IGFic2w6OldlZWtkYXk6OnN1bmRheSk7CisgIEVYUEVDVF9FUSgzLCBkIC0gdGh1cnNkYXkpIDw8
IGQ7CisgIEVYUEVDVF9FUShkIC0gNywgYWJzbDo6UHJldldlZWtkYXkodGh1cnNkYXksIGFic2w6
OldlZWtkYXk6OnN1bmRheSkpOworCisgIC8vIFRodXJzZGF5IC0+IE1vbmRheQorICBkID0gYWJz
bDo6TmV4dFdlZWtkYXkodGh1cnNkYXksIGFic2w6OldlZWtkYXk6Om1vbmRheSk7CisgIEVYUEVD
VF9FUSg0LCBkIC0gdGh1cnNkYXkpIDw8IGQ7CisgIEVYUEVDVF9FUShkIC0gNywgYWJzbDo6UHJl
dldlZWtkYXkodGh1cnNkYXksIGFic2w6OldlZWtkYXk6Om1vbmRheSkpOworCisgIC8vIFRodXJz
ZGF5IC0+IFR1ZXNkYXkKKyAgZCA9IGFic2w6Ok5leHRXZWVrZGF5KHRodXJzZGF5LCBhYnNsOjpX
ZWVrZGF5Ojp0dWVzZGF5KTsKKyAgRVhQRUNUX0VRKDUsIGQgLSB0aHVyc2RheSkgPDwgZDsKKyAg
RVhQRUNUX0VRKGQgLSA3LCBhYnNsOjpQcmV2V2Vla2RheSh0aHVyc2RheSwgYWJzbDo6V2Vla2Rh
eTo6dHVlc2RheSkpOworCisgIC8vIFRodXJzZGF5IC0+IFdlZG5lc2RheQorICBkID0gYWJzbDo6
TmV4dFdlZWtkYXkodGh1cnNkYXksIGFic2w6OldlZWtkYXk6OndlZG5lc2RheSk7CisgIEVYUEVD
VF9FUSg2LCBkIC0gdGh1cnNkYXkpIDw8IGQ7CisgIEVYUEVDVF9FUShkIC0gNywgYWJzbDo6UHJl
dldlZWtkYXkodGh1cnNkYXksIGFic2w6OldlZWtkYXk6OndlZG5lc2RheSkpOworfQorCisvLyBO
T1RFOiBSdW4gdGhpcyB3aXRoIC0tY29wdD0tZnRyYXB2IHRvIGRldGVjdCBvdmVyZmxvdyBwcm9i
bGVtcy4KK1RFU1QoQ2l2aWxUaW1lLCBEaWZmZXJlbmNlV2l0aEh1Z2VZZWFyKSB7CisgIGFic2w6
OkNpdmlsRGF5IGQxKDkyMjMzNzIwMzY4NTQ3NzU4MDcsIDEsIDEpOworICBhYnNsOjpDaXZpbERh
eSBkMig5MjIzMzcyMDM2ODU0Nzc1ODA3LCAxMiwgMzEpOworICBFWFBFQ1RfRVEoMzY0LCBkMiAt
IGQxKTsKKworICBkMSA9IGFic2w6OkNpdmlsRGF5KC05MjIzMzcyMDM2ODU0Nzc1ODA3IC0gMSwg
MSwgMSk7CisgIGQyID0gYWJzbDo6Q2l2aWxEYXkoLTkyMjMzNzIwMzY4NTQ3NzU4MDcgLSAxLCAx
MiwgMzEpOworICBFWFBFQ1RfRVEoMzY1LCBkMiAtIGQxKTsKKworICAvLyBDaGVjayB0aGUgbGlt
aXRzIG9mIHRoZSByZXR1cm4gdmFsdWUgYXQgdGhlIGVuZCBvZiB0aGUgeWVhciByYW5nZS4KKyAg
ZDEgPSBhYnNsOjpDaXZpbERheSg5MjIzMzcyMDM2ODU0Nzc1ODA3LCAxLCAxKTsKKyAgZDIgPSBh
YnNsOjpDaXZpbERheSg5MTk4MTE5MzAxOTI3MDA5MjUyLCA2LCA2KTsKKyAgRVhQRUNUX0VRKDky
MjMzNzIwMzY4NTQ3NzU4MDcsIGQxIC0gZDIpOworICBkMiA9IGQyIC0gMTsKKyAgRVhQRUNUX0VR
KC05MjIzMzcyMDM2ODU0Nzc1ODA3IC0gMSwgZDIgLSBkMSk7CisKKyAgLy8gQ2hlY2sgdGhlIGxp
bWl0cyBvZiB0aGUgcmV0dXJuIHZhbHVlIGF0IHRoZSBzdGFydCBvZiB0aGUgeWVhciByYW5nZS4K
KyAgZDEgPSBhYnNsOjpDaXZpbERheSgtOTIyMzM3MjAzNjg1NDc3NTgwNyAtIDEsIDEsIDEpOwor
ICBkMiA9IGFic2w6OkNpdmlsRGF5KC05MTk4MTE5MzAxOTI3MDA5MjU0LCA3LCAyOCk7CisgIEVY
UEVDVF9FUSg5MjIzMzcyMDM2ODU0Nzc1ODA3LCBkMiAtIGQxKTsKKyAgZDIgPSBkMiArIDE7Cisg
IEVYUEVDVF9FUSgtOTIyMzM3MjAzNjg1NDc3NTgwNyAtIDEsIGQxIC0gZDIpOworCisgIC8vIENo
ZWNrIHRoZSBsaW1pdHMgb2YgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGVpdGhlciBzaWRlIG9mIHll
YXIgMC4KKyAgZDEgPSBhYnNsOjpDaXZpbERheSgtMTI2MjYzNjc0NjM4ODMyNzgsIDksIDMpOwor
ICBkMiA9IGFic2w6OkNpdmlsRGF5KDEyNjI2MzY3NDYzODgzMjc3LCAzLCAyOCk7CisgIEVYUEVD
VF9FUSg5MjIzMzcyMDM2ODU0Nzc1ODA3LCBkMiAtIGQxKTsKKyAgZDIgPSBkMiArIDE7CisgIEVY
UEVDVF9FUSgtOTIyMzM3MjAzNjg1NDc3NTgwNyAtIDEsIGQxIC0gZDIpOworfQorCisvLyBOT1RF
OiBSdW4gdGhpcyB3aXRoIC0tY29wdD0tZnRyYXB2IHRvIGRldGVjdCBvdmVyZmxvdyBwcm9ibGVt
cy4KK1RFU1QoQ2l2aWxUaW1lLCBEaWZmZXJlbmNlTm9JbnRlcm1lZGlhdGVPdmVyZmxvdykgewor
ICAvLyBUaGUgZGlmZmVyZW5jZSB1cCB0byB0aGUgbWludXRlIGZpZWxkIHdvdWxkIGJlIGJlbG93
IHRoZSBtaW5pbXVtCisgIC8vIGludDY0X3QsIGJ1dCB0aGUgNTIgZXh0cmEgc2Vjb25kcyBicmlu
Z3MgdXMgYmFjayB0byB0aGUgbWluaW11bS4KKyAgYWJzbDo6Q2l2aWxTZWNvbmQgczEoLTI5MjI3
NzAyMjY1NywgMSwgMjcsIDgsIDI5IC0gMSwgNTIpOworICBhYnNsOjpDaXZpbFNlY29uZCBzMigx
OTcwLCAxLCAxLCAwLCAwIC0gMSwgMCk7CisgIEVYUEVDVF9FUSgtOTIyMzM3MjAzNjg1NDc3NTgw
NyAtIDEsIHMxIC0gczIpOworCisgIC8vIFRoZSBkaWZmZXJlbmNlIHVwIHRvIHRoZSBtaW51dGUg
ZmllbGQgd291bGQgYmUgYWJvdmUgdGhlIG1heGltdW0KKyAgLy8gaW50NjRfdCwgYnV0IHRoZSAt
NTMgZXh0cmEgc2Vjb25kcyBicmluZ3MgdXMgYmFjayB0byB0aGUgbWF4aW11bS4KKyAgczEgPSBh
YnNsOjpDaXZpbFNlY29uZCgyOTIyNzcwMjY1OTYsIDEyLCA0LCAxNSwgMzAsIDcgLSA3KTsKKyAg
czIgPSBhYnNsOjpDaXZpbFNlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwIC0gNyk7CisgIEVYUEVD
VF9FUSg5MjIzMzcyMDM2ODU0Nzc1ODA3LCBzMSAtIHMyKTsKK30KKworVEVTVChDaXZpbFRpbWUs
IE5vcm1hbGl6ZVNpbXBsZU92ZXJmbG93KSB7CisgIGFic2w6OkNpdmlsU2Vjb25kIGNzOworICBj
cyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAxNSwgMTYsIDMyLCA1OSArIDEpOworICBF
WFBFQ1RfRVEoIjIwMTMtMTEtMTVUMTY6MzM6MDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3Mp
KTsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMTUsIDE2LCA1OSArIDEsIDE0
KTsKKyAgRVhQRUNUX0VRKCIyMDEzLTExLTE1VDE3OjAwOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAyMyArIDEs
IDMyLCAxNCk7CisgIEVYUEVDVF9FUSgiMjAxMy0xMS0xNlQwMDozMjoxNCIsIGFic2w6OkZvcm1h
dENpdmlsVGltZShjcykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAzMCAr
IDEsIDE2LCAzMiwgMTQpOworICBFWFBFQ1RfRVEoIjIwMTMtMTItMDFUMTY6MzI6MTQiLCBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAx
MiArIDEsIDE1LCAxNiwgMzIsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDE0LTAxLTE1VDE2OjMyOjE0
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBOb3Jt
YWxpemVTaW1wbGVVbmRlcmZsb3cpIHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgY3M7CisgIGNzID0g
YWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAxNiwgMzIsIDAgLSAxKTsKKyAgRVhQRUNU
X0VRKCIyMDEzLTExLTE1VDE2OjMxOjU5IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7Cisg
IGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAxNiwgMCAtIDEsIDE0KTsKKyAg
RVhQRUNUX0VRKCIyMDEzLTExLTE1VDE1OjU5OjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNz
KSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAwIC0gMSwgMzIsIDE0
KTsKKyAgRVhQRUNUX0VRKCIyMDEzLTExLTE0VDIzOjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDEgLSAxLCAxNiwg
MzIsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDEzLTEwLTMxVDE2OjMyOjE0IiwgYWJzbDo6Rm9ybWF0
Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMSAtIDEsIDE1
LCAxNiwgMzIsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDEyLTEyLTE1VDE2OjMyOjE0IiwgYWJzbDo6
Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBOb3JtYWxpemVNdWx0
aXBsZU92ZXJmbG93KSB7CisgIGFic2w6OkNpdmlsU2Vjb25kIGNzKDIwMTMsIDEyLCAzMSwgMjMs
IDU5LCA1OSArIDEpOworICBFWFBFQ1RfRVEoIjIwMTQtMDEtMDFUMDA6MDA6MDAiLCBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoY3MpKTsKK30KKworVEVTVChDaXZpbFRpbWUsIE5vcm1hbGl6ZU11bHRp
cGxlVW5kZXJmbG93KSB7CisgIGFic2w6OkNpdmlsU2Vjb25kIGNzKDIwMTQsIDEsIDEsIDAsIDAs
IDAgLSAxKTsKKyAgRVhQRUNUX0VRKCIyMDEzLTEyLTMxVDIzOjU5OjU5IiwgYWJzbDo6Rm9ybWF0
Q2l2aWxUaW1lKGNzKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBOb3JtYWxpemVPdmVyZmxvd0xp
bWl0cykgeworICBhYnNsOjpDaXZpbFNlY29uZCBjczsKKworICBjb25zdCBpbnQga2ludG1heCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNv
bmQoMCwga2ludG1heCwga2ludG1heCwga2ludG1heCwga2ludG1heCwga2ludG1heCk7CisgIEVY
UEVDVF9FUSgiMTg1MDg1NzE1LTExLTI3VDEyOjIxOjA3IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1l
KGNzKSk7CisKKyAgY29uc3QgaW50IGtpbnRtaW4gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46
Om1pbigpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDAsIGtpbnRtaW4sIGtpbnRtaW4sIGtp
bnRtaW4sIGtpbnRtaW4sIGtpbnRtaW4pOworICBFWFBFQ1RfRVEoIi0xODUwODU3MTctMTAtMzFU
MTA6Mzc6NTIiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKK30KKworVEVTVChDaXZpbFRp
bWUsIE5vcm1hbGl6ZUNvbXBsZXhPdmVyZmxvdykgeworICBhYnNsOjpDaXZpbFNlY29uZCBjczsK
KyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMTUsIDE2LCAzMiwgMTQgKyAxMjM0
NTY3ODkpOworICBFWFBFQ1RfRVEoIjIwMTctMTAtMTRUMTQ6MDU6MjMiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUoY3MpKTsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMTUsIDE2
LCAzMiArIDEyMzQ1NjcsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDE2LTAzLTIyVDAwOjM5OjE0Iiwg
YWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAx
MywgMTEsIDE1LCAxNiArIDEyMzQ1NiwgMzIsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDI3LTEyLTE2
VDE2OjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2
aWxTZWNvbmQoMjAxMywgMTEsIDE1ICsgMTIzNCwgMTYsIDMyLCAxNCk7CisgIEVYUEVDVF9FUSgi
MjAxNy0wNC0wMlQxNjozMjoxNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOworICBjcyA9
IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExICsgMTIzLCAxNSwgMTYsIDMyLCAxNCk7CisgIEVY
UEVDVF9FUSgiMjAyNC0wMi0xNVQxNjozMjoxNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykp
OworfQorCitURVNUKENpdmlsVGltZSwgTm9ybWFsaXplQ29tcGxleFVuZGVyZmxvdykgeworICBh
YnNsOjpDaXZpbFNlY29uZCBjczsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgxOTk5LCAzLCAw
LCAwLCAwLCAwKTsgIC8vIHllYXIgNDAwCisgIEVYUEVDVF9FUSgiMTk5OS0wMi0yOFQwMDowMDow
MCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25k
KDIwMTMsIDExLCAxNSwgMTYsIDMyLCAxNCAtIDEyMzQ1Njc4OSk7CisgIEVYUEVDVF9FUSgiMjAw
OS0xMi0xN1QxODo1OTowNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOworICBjcyA9IGFi
c2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAxNSwgMTYsIDMyIC0gMTIzNDU2NywgMTQpOworICBF
WFBFQ1RfRVEoIjIwMTEtMDctMTJUMDg6MjU6MTQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3Mp
KTsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMTUsIDE2IC0gMTIzNDU2LCAz
MiwgMTQpOworICBFWFBFQ1RfRVEoIjE5OTktMTAtMTZUMTY6MzI6MTQiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUoY3MpKTsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMTUgLSAx
MjM0LCAxNiwgMzIsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDEwLTA2LTMwVDE2OjMyOjE0IiwgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywg
MTEgLSAxMjMsIDE1LCAxNiwgMzIsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDAzLTA4LTE1VDE2OjMy
OjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBO
b3JtYWxpemVNaXNobWFzaCkgeworICBhYnNsOjpDaXZpbFNlY29uZCBjczsKKyAgY3MgPSBhYnNs
OjpDaXZpbFNlY29uZCgyMDEzLCAxMSAtIDEyMywgMTUgKyAxMjM0LCAxNiAtIDEyMzQ1NiwgMzIg
KyAxMjM0NTY3LAorICAgICAgICAgICAgICAgICAgICAgICAgIDE0IC0gMTIzNDU2Nzg5KTsKKyAg
RVhQRUNUX0VRKCIxOTkxLTA1LTA5VDAzOjA2OjA1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNz
KSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEgKyAxMjMsIDE1IC0gMTIzNCwg
MTYgKyAxMjM0NTYsIDMyIC0gMTIzNDU2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAxNCAr
IDEyMzQ1Njc4OSk7CisgIEVYUEVDVF9FUSgiMjAzNi0wNS0yNFQwNTo1ODoyMyIsIGFic2w6OkZv
cm1hdENpdmlsVGltZShjcykpOworCisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEs
IC0xNDYwOTcgKyAxLCAxNiwgMzIsIDE0KTsKKyAgRVhQRUNUX0VRKCIxNjEzLTExLTAxVDE2OjMy
OjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNv
bmQoMjAxMywgMTEgKyA0MDAgKiAxMiwgLTE0NjA5NyArIDEsIDE2LCAzMiwgMTQpOworICBFWFBF
Q1RfRVEoIjIwMTMtMTEtMDFUMTY6MzI6MTQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsK
K30KKworLy8gQ29udmVydCBhbGwgdGhlIGRheXMgZnJvbSAxOTcwLTEtMSB0byAxOTcwLTEtMTQ2
MDk3IChha2EgMjM2OS0xMi0zMSkKKy8vIGFuZCBjaGVjayB0aGF0IHRoZXkgbm9ybWFsaXplIHRv
IHRoZSBleHBlY3RlZCB0aW1lLiAgMTQ2MDk3IGRheXMgc3BhbgorLy8gdGhlIDQwMC15ZWFyIEdy
ZWdvcmlhbiBjeWNsZSB1c2VkIGR1cmluZyBub3JtYWxpemF0aW9uLgorVEVTVChDaXZpbFRpbWUs
IE5vcm1hbGl6ZUFsbFRoZURheXMpIHsKKyAgYWJzbDo6Q2l2aWxEYXkgZXhwZWN0ZWQoMTk3MCwg
MSwgMSk7CisgIGZvciAoaW50IGRheSA9IDE7IGRheSA8PSAxNDYwOTc7ICsrZGF5KSB7CisgICAg
YWJzbDo6Q2l2aWxTZWNvbmQgY3MoMTk3MCwgMSwgZGF5LCAwLCAwLCAwKTsKKyAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWQsIGNzKTsKKyAgICArK2V4cGVjdGVkOworICB9Cit9CisKK1RFU1QoQ2l2aWxU
aW1lLCBOb3JtYWxpemVXaXRoSHVnZVllYXIpIHsKKyAgYWJzbDo6Q2l2aWxNb250aCBjKDkyMjMz
NzIwMzY4NTQ3NzU4MDcsIDEpOworICBFWFBFQ1RfRVEoIjkyMjMzNzIwMzY4NTQ3NzU4MDctMDEi
LCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYykpOworICBjID0gYyAtIDE7ICAvLyBDYXVzZXMgbm9y
bWFsaXphdGlvbgorICBFWFBFQ1RfRVEoIjkyMjMzNzIwMzY4NTQ3NzU4MDYtMTIiLCBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoYykpOworCisgIGMgPSBhYnNsOjpDaXZpbE1vbnRoKC05MjIzMzcyMDM2
ODU0Nzc1ODA3IC0gMSwgMSk7CisgIEVYUEVDVF9FUSgiLTkyMjMzNzIwMzY4NTQ3NzU4MDgtMDEi
LCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYykpOworICBjID0gYyArIDEyOyAgLy8gQ2F1c2VzIG5v
cm1hbGl6YXRpb24KKyAgRVhQRUNUX0VRKCItOTIyMzM3MjAzNjg1NDc3NTgwNy0wMSIsIGFic2w6
OkZvcm1hdENpdmlsVGltZShjKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBMZWFwWWVhcnMpIHsK
KyAgY29uc3QgYWJzbDo6Q2l2aWxTZWNvbmQgczEoMjAxMywgMiwgMjggKyAxLCAwLCAwLCAwKTsK
KyAgRVhQRUNUX0VRKCIyMDEzLTAzLTAxVDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1l
KHMxKSk7CisKKyAgY29uc3QgYWJzbDo6Q2l2aWxTZWNvbmQgczIoMjAxMiwgMiwgMjggKyAxLCAw
LCAwLCAwKTsKKyAgRVhQRUNUX0VRKCIyMDEyLTAyLTI5VDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0
Q2l2aWxUaW1lKHMyKSk7CisKKyAgY29uc3QgYWJzbDo6Q2l2aWxTZWNvbmQgczMoMTkwMCwgMiwg
MjggKyAxLCAwLCAwLCAwKTsKKyAgRVhQRUNUX0VRKCIxOTAwLTAzLTAxVDAwOjAwOjAwIiwgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKHMzKSk7CisKKyAgY29uc3Qgc3RydWN0IHsKKyAgICBpbnQgeWVh
cjsKKyAgICBpbnQgZGF5czsKKyAgICBzdHJ1Y3QgeworICAgICAgaW50IG1vbnRoOworICAgICAg
aW50IGRheTsKKyAgICB9IGxlYXBfZGF5OyAgLy8gVGhlIGRhdGUgb2YgdGhlIGRheSBhZnRlciBG
ZWIgMjguCisgIH0ga0xlYXBZZWFyVGFibGVbXXsKKyAgICAgIHsxOTAwLCAzNjUsIHszLCAxfX0s
CisgICAgICB7MTk5OSwgMzY1LCB7MywgMX19LAorICAgICAgezIwMDAsIDM2NiwgezIsIDI5fX0s
ICAvLyBsZWFwIHllYXIKKyAgICAgIHsyMDAxLCAzNjUsIHszLCAxfX0sCisgICAgICB7MjAwMiwg
MzY1LCB7MywgMX19LAorICAgICAgezIwMDMsIDM2NSwgezMsIDF9fSwKKyAgICAgIHsyMDA0LCAz
NjYsIHsyLCAyOX19LCAgLy8gbGVhcCB5ZWFyCisgICAgICB7MjAwNSwgMzY1LCB7MywgMX19LAor
ICAgICAgezIwMDYsIDM2NSwgezMsIDF9fSwKKyAgICAgIHsyMDA3LCAzNjUsIHszLCAxfX0sCisg
ICAgICB7MjAwOCwgMzY2LCB7MiwgMjl9fSwgIC8vIGxlYXAgeWVhcgorICAgICAgezIwMDksIDM2
NSwgezMsIDF9fSwKKyAgICAgIHsyMTAwLCAzNjUsIHszLCAxfX0sCisgIH07CisKKyAgZm9yIChp
bnQgaSA9IDA7IGkgPCBBQlNMX0FSUkFZU0laRShrTGVhcFllYXJUYWJsZSk7ICsraSkgeworICAg
IGNvbnN0IGludCB5ID0ga0xlYXBZZWFyVGFibGVbaV0ueWVhcjsKKyAgICBjb25zdCBpbnQgbSA9
IGtMZWFwWWVhclRhYmxlW2ldLmxlYXBfZGF5Lm1vbnRoOworICAgIGNvbnN0IGludCBkID0ga0xl
YXBZZWFyVGFibGVbaV0ubGVhcF9kYXkuZGF5OworICAgIGNvbnN0IGludCBuID0ga0xlYXBZZWFy
VGFibGVbaV0uZGF5czsKKworICAgIC8vIFRlc3RzIGluY3JlbWVudGluZyB0aHJvdWdoIHRoZSBs
ZWFwIGRheS4KKyAgICBjb25zdCBhYnNsOjpDaXZpbERheSBmZWIyOCh5LCAyLCAyOCk7CisgICAg
Y29uc3QgYWJzbDo6Q2l2aWxEYXkgbmV4dF9kYXkgPSBmZWIyOCArIDE7CisgICAgRVhQRUNUX0VR
KG0sIG5leHRfZGF5Lm1vbnRoKCkpOworICAgIEVYUEVDVF9FUShkLCBuZXh0X2RheS5kYXkoKSk7
CisKKyAgICAvLyBUZXN0cyBkaWZmZXJlbmNlIGluIGRheXMgb2YgbGVhcCB5ZWFycy4KKyAgICBj
b25zdCBhYnNsOjpDaXZpbFllYXIgeWVhcihmZWIyOCk7CisgICAgY29uc3QgYWJzbDo6Q2l2aWxZ
ZWFyIG5leHRfeWVhciA9IHllYXIgKyAxOworICAgIEVYUEVDVF9FUShuLCBhYnNsOjpDaXZpbERh
eShuZXh0X3llYXIpIC0gYWJzbDo6Q2l2aWxEYXkoeWVhcikpOworICB9Cit9CisKK1RFU1QoQ2l2
aWxUaW1lLCBGaXJzdFRodXJzZGF5SW5Nb250aCkgeworICBjb25zdCBhYnNsOjpDaXZpbERheSBu
b3YxKDIwMTQsIDExLCAxKTsKKyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgdGh1cnNkYXkgPQorICAg
ICAgYWJzbDo6TmV4dFdlZWtkYXkobm92MSAtIDEsIGFic2w6OldlZWtkYXk6OnRodXJzZGF5KTsK
KyAgRVhQRUNUX0VRKCIyMDE0LTExLTA2IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHRodXJzZGF5
KSk7CisKKyAgLy8gQm9udXM6IERhdGUgb2YgVGhhbmtzZ2l2aW5nIGluIHRoZSBVbml0ZWQgU3Rh
dGVzCisgIC8vIFJ1bGU6IEZvdXJ0aCBUaHVyc2RheSBvZiBOb3ZlbWJlcgorICBjb25zdCBhYnNs
OjpDaXZpbERheSB0aGFua3NnaXZpbmcgPSB0aHVyc2RheSArICA3ICogMzsKKyAgRVhQRUNUX0VR
KCIyMDE0LTExLTI3IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHRoYW5rc2dpdmluZykpOworfQor
CitURVNUKENpdmlsVGltZSwgRG9jdW1lbnRhdGlvbkV4YW1wbGUpIHsKKyAgYWJzbDo6Q2l2aWxT
ZWNvbmQgc2Vjb25kKDIwMTUsIDYsIDI4LCAxLCAyLCAzKTsgIC8vIDIwMTUtMDYtMjggMDE6MDI6
MDMKKyAgYWJzbDo6Q2l2aWxNaW51dGUgbWludXRlKHNlY29uZCk7ICAgICAgICAgICAgICAgIC8v
IDIwMTUtMDYtMjggMDE6MDI6MDAKKyAgYWJzbDo6Q2l2aWxEYXkgZGF5KG1pbnV0ZSk7ICAgICAg
ICAgICAgICAgICAgICAgIC8vIDIwMTUtMDYtMjggMDA6MDA6MDAKKworICBzZWNvbmQgLT0gMTsg
ICAgICAgICAgICAgICAgICAgIC8vIDIwMTUtMDYtMjggMDE6MDI6MDIKKyAgLS1zZWNvbmQ7ICAg
ICAgICAgICAgICAgICAgICAgICAvLyAyMDE1LTA2LTI4IDAxOjAyOjAxCisgIEVYUEVDVF9FUSht
aW51dGUsIHNlY29uZCAtIDEpOyAgLy8gQ29tcGFyaXNvbiBiZXR3ZWVuIHR5cGVzCisgIEVYUEVD
VF9MVChtaW51dGUsIHNlY29uZCk7CisKKyAgLy8gaW50IGRpZmYgPSBzZWNvbmQgLSBtaW51dGU7
ICAvLyBFUlJPUjogTWl4ZWQgdHlwZXMsIHdvbid0IGNvbXBpbGUKKworICBhYnNsOjpDaXZpbERh
eSBqdW5lXzEoMjAxNSwgNiwgMSk7ICAvLyBQYXNzIGZpZWxkcyB0byBjJ3Rvci4KKyAgaW50IGRp
ZmYgPSBkYXkgLSBqdW5lXzE7ICAgICAgICAgICAgLy8gTnVtIGRheXMgYmV0d2VlbiAnZGF5JyBh
bmQgSnVuZSAxCisgIEVYUEVDVF9FUSgyNywgZGlmZik7CisKKyAgLy8gRmllbGRzIHNtYWxsZXIg
dGhhbiBhbGlnbm1lbnQgYXJlIGZsb29yZWQgdG8gdGhlaXIgbWluaW11bSB2YWx1ZS4KKyAgYWJz
bDo6Q2l2aWxEYXkgZGF5X2Zsb29yKDIwMTUsIDEsIDIsIDksIDksIDkpOworICBFWFBFQ1RfRVEo
MCwgZGF5X2Zsb29yLmhvdXIoKSk7ICAvLyAwOTowOTowOSBpcyBmbG9vcmVkCisgIEVYUEVDVF9F
UShhYnNsOjpDaXZpbERheSgyMDE1LCAxLCAyKSwgZGF5X2Zsb29yKTsKKworICAvLyBVbnNwZWNp
ZmllZCBmaWVsZHMgZGVmYXVsdCB0byB0aGVpciBtaW5pdW0gdmFsdWUKKyAgYWJzbDo6Q2l2aWxE
YXkgZGF5X2RlZmF1bHQoMjAxNSk7ICAvLyBEZWZhdWx0cyB0byBKYW4gMQorICBFWFBFQ1RfRVEo
YWJzbDo6Q2l2aWxEYXkoMjAxNSwgMSwgMSksIGRheV9kZWZhdWx0KTsKKworICAvLyBJdGVyYXRl
cyBhbGwgdGhlIGRheXMgb2YgSnVuZS4KKyAgYWJzbDo6Q2l2aWxNb250aCBqdW5lKGRheSk7ICAv
LyBDaXZpbERheSAtPiBDaXZpbE1vbnRoCisgIGFic2w6OkNpdmlsTW9udGgganVseSA9IGp1bmUg
KyAxOworICBmb3IgKGFic2w6OkNpdmlsRGF5IGRheSA9IGp1bmVfMTsgZGF5IDwganVseTsgKytk
YXkpIHsKKyAgICAvLyAuLi4KKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvY2xvY2suY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Nsb2NrLmNjCmluZGV4IDc0ZWUxNDAx
Yjk4Li4zOTZjNTVmMjAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jbG9jay5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2Nsb2NrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC0zNzksMTMgKzM3OSwxMyBAQCBzdGF0aWMgdWludDY0X3QgVXBkYXRlTGFzdFNhbXBs
ZSgKIC8vCiAvLyBNYW51YWxseSBtYXJrIHRoaXMgJ25vaW5saW5lJyB0byBtaW5pbWl6ZSBzdGFj
ayBmcmFtZSBzaXplIG9mIHRoZSBmYXN0CiAvLyBwYXRoLiAgV2l0aG91dCB0aGlzLCBzb21ldGlt
ZXMgYSBjb21waWxlciBtYXkgaW5saW5lIHRoaXMgYmlnIGJsb2NrIG9mIGNvZGUKLS8vIGludG8g
dGhlIGZhc3QgcGFzdC4gIFRoYXQgY2F1c2VzIGxvdHMgb2YgcmVnaXN0ZXIgc3BpbGxzIGFuZCBy
ZWxvYWRzIHRoYXQKKy8vIGludG8gdGhlIGZhc3QgcGF0aC4gIFRoYXQgY2F1c2VzIGxvdHMgb2Yg
cmVnaXN0ZXIgc3BpbGxzIGFuZCByZWxvYWRzIHRoYXQKIC8vIGFyZSB1bm5lY2Vzc2FyeSB1bmxl
c3MgdGhlIHNsb3cgcGF0aCBpcyB0YWtlbi4KIC8vCiAvLyBUT0RPKGFic2wtdGVhbSk6IFJlbW92
ZSB0aGlzIGF0dHJpYnV0ZSB3aGVuIG91ciBjb21waWxlciBpcyBzbWFydCBlbm91Z2gKIC8vIHRv
IGRvIHRoZSByaWdodCB0aGluZy4KIEFCU0xfQVRUUklCVVRFX05PSU5MSU5FCi1zdGF0aWMgaW50
NjRfdCBHZXRDdXJyZW50VGltZU5hbm9zU2xvd1BhdGgoKSBMT0NLU19FWENMVURFRChsb2NrKSB7
CitzdGF0aWMgaW50NjRfdCBHZXRDdXJyZW50VGltZU5hbm9zU2xvd1BhdGgoKSBBQlNMX0xPQ0tT
X0VYQ0xVREVEKGxvY2spIHsKICAgLy8gU2VyaWFsaXplIGFjY2VzcyB0byBzbG93LXBhdGguICBG
YXN0LXBhdGggcmVhZGVycyBhcmUgbm90IGJsb2NrZWQgeWV0LCBhbmQKICAgLy8gY29kZSBiZWxv
dyBtdXN0IG5vdCBtb2RpZnkgbGFzdF9zYW1wbGUgdW50aWwgdGhlIHNlcWxvY2sgaXMgYWNxdWly
ZWQuCiAgIGxvY2suTG9jaygpOwpAQCAtNDMwLDcgKzQzMCw3IEBAIHN0YXRpYyBpbnQ2NF90IEdl
dEN1cnJlbnRUaW1lTmFub3NTbG93UGF0aCgpIExPQ0tTX0VYQ0xVREVEKGxvY2spIHsKIHN0YXRp
YyB1aW50NjRfdCBVcGRhdGVMYXN0U2FtcGxlKHVpbnQ2NF90IG5vd19jeWNsZXMsIHVpbnQ2NF90
IG5vd19ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRlbHRh
X2N5Y2xlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBU
aW1lU2FtcGxlICpzYW1wbGUpCi0gICAgRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGxvY2spIHsK
KyAgICBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChsb2NrKSB7CiAgIHVpbnQ2NF90IGVz
dGltYXRlZF9iYXNlX25zID0gbm93X25zOwogICB1aW50NjRfdCBsb2NrX3ZhbHVlID0gU2VxQWNx
dWlyZSgmc2VxKTsgIC8vIGFjcXVpcmUgc2VxbG9jayB0byBibG9jayByZWFkZXJzCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2suaAppbmRleCAzNzUz
ZDRlZTQzYS4uYmI1MmU0ZjZjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2suaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2Nsb2NrLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2tfYmVuY2htYXJrLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9jbG9ja19iZW5jaG1hcmsuY2MKaW5kZXggM2QzY2Q5ZDVjNDIuLmM1Yzc5NWVjYmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Nsb2NrX2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2Nsb2NrX2JlbmNobWFyay5jYwpAQCAtMyw3ICszLDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTUsNiArMTUsOCBAQAogCiAjaWYgIWRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUg
PHN5cy90aW1lLmg+CisjZWxzZQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAjZW5kaWYgIC8vIF9X
SU4zMgogI2luY2x1ZGUgPGNzdGRpbz4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jbG9ja190
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9jbG9ja190ZXN0LmNjCmluZGV4IDcwNzE2NmQwYzI4Li40YmNm
YzZiYzcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jbG9ja190ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvY2xvY2tfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVy
YXRpb24uY2MKaW5kZXggMjk1MGM3Y2RjNjMuLmEzYWM2MWE5MTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2R1cmF0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb24uY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQ5LDYgKzQ5LDEwIEBACiAvLwog
Ly8gQXJpdGhtZXRpYyBvdmVyZmxvd3MvdW5kZXJmbG93cyB0byArLy0gaW5maW5pdHkgYW5kIHNh
dHVyYXRlcy4KIAorI2lmIGRlZmluZWQoX01TQ19WRVIpCisjaW5jbHVkZSA8d2luc29jazIuaD4g
IC8vIGZvciB0aW1ldmFsCisjZW5kaWYKKwogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRl
IDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNjdHlwZT4KQEAgLTc4LDEwICs4MiwxNiBAQCBjb25zdGV4
cHIgaW50NjRfdCBraW50NjRtaW4gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4o
KTsKIAogLy8gQ2FuJ3QgdXNlIHN0ZDo6aXNpbmZpbml0ZSgpIGJlY2F1c2UgaXQgZG9lc24ndCBl
eGlzdCBvbiB3aW5kb3dzLgogaW5saW5lIGJvb2wgSXNGaW5pdGUoZG91YmxlIGQpIHsKKyAgaWYg
KHN0ZDo6aXNuYW4oZCkpIHJldHVybiBmYWxzZTsKICAgcmV0dXJuIGQgIT0gc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpICYmCiAgICAgICAgICBkICE9IC1zdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiB9CiAKK2lubGluZSBib29sIElzVmFsaWRE
aXZpc29yKGRvdWJsZSBkKSB7CisgIGlmIChzdGQ6OmlzbmFuKGQpKSByZXR1cm4gZmFsc2U7Cisg
IHJldHVybiBkICE9IDAuMDsKK30KKwogLy8gQ2FuJ3QgdXNlIHN0ZDo6cm91bmQoKSBiZWNhdXNl
IGl0IGlzIG9ubHkgYXZhaWxhYmxlIGluIEMrKzExLgogLy8gTm90ZSB0aGF0IHdlIGlnbm9yZSB0
aGUgcG9zc2liaWxpdHkgb2YgZmxvYXRpbmctcG9pbnQgb3Zlci91bmRlcmZsb3cuCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRG91YmxlPgpAQCAtNDU1LDcgKzQ2NSw3IEBAIER1cmF0aW9uJiBEdXJhdGlv
bjo6b3BlcmF0b3IvPShpbnQ2NF90IHIpIHsKIH0KIAogRHVyYXRpb24mIER1cmF0aW9uOjpvcGVy
YXRvci89KGRvdWJsZSByKSB7Ci0gIGlmICh0aW1lX2ludGVybmFsOjpJc0luZmluaXRlRHVyYXRp
b24oKnRoaXMpIHx8IHIgPT0gMC4wKSB7CisgIGlmICh0aW1lX2ludGVybmFsOjpJc0luZmluaXRl
RHVyYXRpb24oKnRoaXMpIHx8ICFJc1ZhbGlkRGl2aXNvcihyKSkgewogICAgIGNvbnN0IGJvb2wg
aXNfbmVnID0gKHN0ZDo6c2lnbmJpdChyKSAhPSAwKSAhPSAocmVwX2hpXyA8IDApOwogICAgIHJl
dHVybiAqdGhpcyA9IGlzX25lZyA/IC1JbmZpbml0ZUR1cmF0aW9uKCkgOiBJbmZpbml0ZUR1cmF0
aW9uKCk7CiAgIH0KQEAgLTc0Myw5ICs3NTMsOSBAQCB2b2lkIEFwcGVuZE51bWJlclVuaXQoc3Rk
OjpzdHJpbmcqIG91dCwgZG91YmxlIG4sIERpc3BsYXlVbml0IHVuaXQpIHsKIAogfSAgLy8gbmFt
ZXNwYWNlCiAKLS8vIEZyb20gR28ncyBkb2MgYXQgaHR0cDovL2dvbGFuZy5vcmcvcGtnL3RpbWUv
I0R1cmF0aW9uLlN0cmluZworLy8gRnJvbSBHbydzIGRvYyBhdCBodHRwczovL2dvbGFuZy5vcmcv
cGtnL3RpbWUvI0R1cmF0aW9uLlN0cmluZwogLy8gICBbRm9ybWF0RHVyYXRpb25dIHJldHVybnMg
YSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBkdXJhdGlvbiBpbiB0aGUKLS8vICAgZm9ybSAiNzJo
M20wLjVzIi4gIExlYWRpbmcgemVybyB1bml0cyBhcmUgb21pdHRlZC4gIEFzIGEgc3BlY2lhbAor
Ly8gICBmb3JtICI3MmgzbTAuNXMiLiBMZWFkaW5nIHplcm8gdW5pdHMgYXJlIG9taXR0ZWQuICBB
cyBhIHNwZWNpYWwKIC8vICAgY2FzZSwgZHVyYXRpb25zIGxlc3MgdGhhbiBvbmUgc2Vjb25kIGZv
cm1hdCB1c2UgYSBzbWFsbGVyIHVuaXQKIC8vICAgKG1pbGxpLSwgbWljcm8tLCBvciBuYW5vc2Vj
b25kcykgdG8gZW5zdXJlIHRoYXQgdGhlIGxlYWRpbmcgZGlnaXQKIC8vICAgaXMgbm9uLXplcm8u
ICBUaGUgemVybyBkdXJhdGlvbiBmb3JtYXRzIGFzIDAsIHdpdGggbm8gdW5pdC4KQEAgLTg0OSw4
ICs4NTksOCBAQCBib29sIENvbnN1bWVEdXJhdGlvblVuaXQoY29uc3QgY2hhcioqIHN0YXJ0LCBE
dXJhdGlvbiogdW5pdCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIAotLy8gRnJvbSBHbydzIGRvYyBh
dCBodHRwOi8vZ29sYW5nLm9yZy9wa2cvdGltZS8jUGFyc2VEdXJhdGlvbgotLy8gICBbUGFyc2VE
dXJhdGlvbl0gcGFyc2VzIGEgZHVyYXRpb24gc3RyaW5nLiAgQSBkdXJhdGlvbiBzdHJpbmcgaXMK
Ky8vIEZyb20gR28ncyBkb2MgYXQgaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy90aW1lLyNQYXJzZUR1
cmF0aW9uCisvLyAgIFtQYXJzZUR1cmF0aW9uXSBwYXJzZXMgYSBkdXJhdGlvbiBzdHJpbmcuIEEg
ZHVyYXRpb24gc3RyaW5nIGlzCiAvLyAgIGEgcG9zc2libHkgc2lnbmVkIHNlcXVlbmNlIG9mIGRl
Y2ltYWwgbnVtYmVycywgZWFjaCB3aXRoIG9wdGlvbmFsCiAvLyAgIGZyYWN0aW9uIGFuZCBhIHVu
aXQgc3VmZml4LCBzdWNoIGFzICIzMDBtcyIsICItMS41aCIgb3IgIjJoNDVtIi4KIC8vICAgVmFs
aWQgdGltZSB1bml0cyBhcmUgIm5zIiwgInVzIiAibXMiLCAicyIsICJtIiwgImgiLgpAQCAtODk1
LDYgKzkwNSw3IEBAIGJvb2wgUGFyc2VEdXJhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgZHVyX3N0
cmluZywgRHVyYXRpb24qIGQpIHsKICAgKmQgPSBkdXI7CiAgIHJldHVybiB0cnVlOwogfQorCiBi
b29sIFBhcnNlRmxhZyhjb25zdCBzdGQ6OnN0cmluZyYgdGV4dCwgRHVyYXRpb24qIGRzdCwgc3Rk
OjpzdHJpbmcqICkgewogICByZXR1cm4gUGFyc2VEdXJhdGlvbih0ZXh0LCBkc3QpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbl9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2R1
cmF0aW9uX2JlbmNobWFyay5jYwppbmRleCBkNTY1N2JkNTc2YS4uODNhODM2YzhjOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb25fYmVuY2htYXJrLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
ZHVyYXRpb25fYmVuY2htYXJrLmNjCkBAIC0zLDcgKzMsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8Y3RpbWU+CiAjaW5jbHVkZSA8c3Ry
aW5nPgogCisjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJhYnNs
L3RpbWUvdGltZS5oIgogI2luY2x1ZGUgImJlbmNobWFyay9iZW5jaG1hcmsuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbl90
ZXN0LmNjCmluZGV4IDdhZTI1ZGM2OGY5Li41ZGNlOWFjOGE1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9kdXJhdGlvbl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb25fdGVzdC5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTIsNiArMTIsMTAg
QEAKIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogCisj
aWYgZGVmaW5lZChfTVNDX1ZFUikKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPiAgLy8gZm9yIHRpbWV2
YWwKKyNlbmRpZgorCiAjaW5jbHVkZSA8Y2hyb25vPiAgLy8gTk9MSU5UKGJ1aWxkL2MrKzExKQog
I2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPGNzdGRpbnQ+CkBAIC01Niw2ICs2MCwxNyBAQCBN
QVRDSEVSX1AoVGltZXZhbE1hdGNoZXIsIHR2LCAiIikgewogICByZXR1cm4gZmFsc2U7CiB9CiAK
K1RFU1QoRHVyYXRpb24sIENvbnN0RXhwcikgeworICBjb25zdGV4cHIgYWJzbDo6RHVyYXRpb24g
ZDAgPSBhYnNsOjpaZXJvRHVyYXRpb24oKTsKKyAgc3RhdGljX2Fzc2VydChkMCA9PSBhYnNsOjpa
ZXJvRHVyYXRpb24oKSwgIlplcm9EdXJhdGlvbigpIik7CisgIGNvbnN0ZXhwciBhYnNsOjpEdXJh
dGlvbiBkMSA9IGFic2w6OlNlY29uZHMoMSk7CisgIHN0YXRpY19hc3NlcnQoZDEgPT0gYWJzbDo6
U2Vjb25kcygxKSwgIlNlY29uZHMoMSkiKTsKKyAgc3RhdGljX2Fzc2VydChkMSAhPSBhYnNsOjpa
ZXJvRHVyYXRpb24oKSwgIlNlY29uZHMoMSkiKTsKKyAgY29uc3RleHByIGFic2w6OkR1cmF0aW9u
IGQyID0gYWJzbDo6SW5maW5pdGVEdXJhdGlvbigpOworICBzdGF0aWNfYXNzZXJ0KGQyID09IGFi
c2w6OkluZmluaXRlRHVyYXRpb24oKSwgIkluZmluaXRlRHVyYXRpb24oKSIpOworICBzdGF0aWNf
YXNzZXJ0KGQyICE9IGFic2w6Olplcm9EdXJhdGlvbigpLCAiSW5maW5pdGVEdXJhdGlvbigpIik7
Cit9CisKIFRFU1QoRHVyYXRpb24sIFZhbHVlU2VtYW50aWNzKSB7CiAgIC8vIElmIHRoaXMgY29t
cGlsZXMsIHRoZSB0ZXN0IHBhc3Nlcy4KICAgY29uc3RleHByIGFic2w6OkR1cmF0aW9uIGE7ICAg
ICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3Rpb24KQEAgLTc5Miw2ICs4MDcsNDAgQEAgVEVTVChEdXJh
dGlvbiwgRGl2aXNpb25CeVplcm8pIHsKICAgRVhQRUNUX0VRKC1kYmxfaW5mLCBhYnNsOjpGRGl2
RHVyYXRpb24oLWFueV9kdXIsIHplcm8pKTsKIH0KIAorVEVTVChEdXJhdGlvbiwgTmFOKSB7Cisg
IC8vIE5vdGUgdGhhdCBJRUVFIDc1NCBkb2VzIG5vdCBkZWZpbmUgdGhlIGJlaGF2aW9yIG9mIGEg
bmFuJ3Mgc2lnbiB3aGVuIGl0IGlzCisgIC8vIGNvcGllZCwgc28gdGhlIGNvZGUgYmVsb3cgYWxs
b3dzIGZvciBlaXRoZXIgKyBvciAtIEluZmluaXRlRHVyYXRpb24uCisjZGVmaW5lIFRFU1RfTkFO
X0hBTkRMSU5HKE5BTUUsIE5BTikgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNvbnN0IGF1dG8gaW5mID0gYWJzbDo6SW5m
aW5pdGVEdXJhdGlvbigpOyBcCisgICAgYXV0byB4ID0gTkFNRShOQU4pOyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRSh4ID09IGluZiB8fCB4ID09IC1pbmYpOyAgICAg
ICAgXAorICAgIGF1dG8geSA9IE5BTUUoNDIpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgeSAqPSBOQU47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBF
Q1RfVFJVRSh5ID09IGluZiB8fCB5ID09IC1pbmYpOyAgICAgICAgXAorICAgIGF1dG8geiA9IE5B
TUUoNDIpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeiAvPSBOQU47ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRSh6ID09IGluZiB8fCB6
ID09IC1pbmYpOyAgICAgICAgXAorICB9IHdoaWxlICgwKQorCisgIGNvbnN0IGRvdWJsZSBuYW4g
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOworICBURVNUX05BTl9I
QU5ETElORyhhYnNsOjpOYW5vc2Vjb25kcywgbmFuKTsKKyAgVEVTVF9OQU5fSEFORExJTkcoYWJz
bDo6TWljcm9zZWNvbmRzLCBuYW4pOworICBURVNUX05BTl9IQU5ETElORyhhYnNsOjpNaWxsaXNl
Y29uZHMsIG5hbik7CisgIFRFU1RfTkFOX0hBTkRMSU5HKGFic2w6OlNlY29uZHMsIG5hbik7Cisg
IFRFU1RfTkFOX0hBTkRMSU5HKGFic2w6Ok1pbnV0ZXMsIG5hbik7CisgIFRFU1RfTkFOX0hBTkRM
SU5HKGFic2w6OkhvdXJzLCBuYW4pOworCisgIFRFU1RfTkFOX0hBTkRMSU5HKGFic2w6Ok5hbm9z
ZWNvbmRzLCAtbmFuKTsKKyAgVEVTVF9OQU5fSEFORExJTkcoYWJzbDo6TWljcm9zZWNvbmRzLCAt
bmFuKTsKKyAgVEVTVF9OQU5fSEFORExJTkcoYWJzbDo6TWlsbGlzZWNvbmRzLCAtbmFuKTsKKyAg
VEVTVF9OQU5fSEFORExJTkcoYWJzbDo6U2Vjb25kcywgLW5hbik7CisgIFRFU1RfTkFOX0hBTkRM
SU5HKGFic2w6Ok1pbnV0ZXMsIC1uYW4pOworICBURVNUX05BTl9IQU5ETElORyhhYnNsOjpIb3Vy
cywgLW5hbik7CisKKyN1bmRlZiBURVNUX05BTl9IQU5ETElORworfQorCiBURVNUKER1cmF0aW9u
LCBSYW5nZSkgewogICBjb25zdCBhYnNsOjpEdXJhdGlvbiByYW5nZSA9IEFwcHJveFllYXJzKDEw
MCAqIDFlOSk7CiAgIGNvbnN0IGFic2w6OkR1cmF0aW9uIHJhbmdlX2Z1dHVyZSA9IHJhbmdlOwpA
QCAtMTcyNiw3ICsxNzc1LDcgQEAgVEVTVChEdXJhdGlvbiwgUGFyc2VEdXJhdGlvbikgewogVEVT
VChEdXJhdGlvbiwgRm9ybWF0UGFyc2VSb3VuZFRyaXApIHsKICNkZWZpbmUgVEVTVF9QQVJTRV9S
T1VORFRSSVAoZCkgICAgICAgICAgICAgICAgXAogICBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OkZvcm1hdER1
cmF0aW9uKGQpOyAgICAgICAgXAorICAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpGb3JtYXREdXJh
dGlvbihkKTsgICBcCiAgICAgYWJzbDo6RHVyYXRpb24gZHVyOyAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUR1cmF0aW9uKHMsICZkdXIpKTsgXAog
ICAgIEVYUEVDVF9FUShkLCBkdXIpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2Zvcm1hdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0LmNjCmluZGV4IGVl
NTk3ZTQwN2E5Li5kNmNhODYwMDM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXQuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9mb3JtYXQuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTY3LDcgKzY3LDggQEAgYWJzbDo6VGltZSBKb2luKGNvbnN0IGNjdHpf
cGFydHMmIHBhcnRzKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1zdGQ6OnN0cmluZyBGb3JtYXRU
aW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGFic2w6OlRpbWUgdCwgYWJzbDo6VGltZVpv
bmUgdHopIHsKK3N0ZDo6c3RyaW5nIEZvcm1hdFRpbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1h
dCwgYWJzbDo6VGltZSB0LAorICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpUaW1lWm9uZSB0
eikgewogICBpZiAodCA9PSBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpKSByZXR1cm4ga0luZmluaXRl
RnV0dXJlU3RyOwogICBpZiAodCA9PSBhYnNsOjpJbmZpbml0ZVBhc3QoKSkgcmV0dXJuIGtJbmZp
bml0ZVBhc3RTdHI7CiAgIGNvbnN0IGF1dG8gcGFydHMgPSBTcGxpdCh0KTsKQEAgLTgzLDE1ICs4
NCwxNSBAQCBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lKGFic2w6OlRpbWUgdCkgewogICByZXR1cm4g
YWJzbDo6Rm9ybWF0VGltZShSRkMzMzM5X2Z1bGwsIHQsIGFic2w6OkxvY2FsVGltZVpvbmUoKSk7
CiB9CiAKLWJvb2wgUGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBpbnB1dCwgYWJzbDo6VGltZSogdGltZSwKLSAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nKiBlcnIpIHsKK2Jvb2wgUGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQs
IGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwKKyAgICAgICAgICAgICAgIGFic2w6OlRpbWUqIHRp
bWUsIHN0ZDo6c3RyaW5nKiBlcnIpIHsKICAgcmV0dXJuIGFic2w6OlBhcnNlVGltZShmb3JtYXQs
IGlucHV0LCBhYnNsOjpVVENUaW1lWm9uZSgpLCB0aW1lLCBlcnIpOwogfQogCiAvLyBJZiB0aGUg
aW5wdXQgc3RyaW5nIGRvZXMgbm90IGNvbnRhaW4gYW4gZXhwbGljaXQgVVRDIG9mZnNldCwgaW50
ZXJwcmV0CiAvLyB0aGUgZmllbGRzIHdpdGggcmVzcGVjdCB0byB0aGUgZ2l2ZW4gVGltZVpvbmUu
Ci1ib29sIFBhcnNlVGltZShjb25zdCBzdGQ6OnN0cmluZyYgZm9ybWF0LCBjb25zdCBzdGQ6OnN0
cmluZyYgaW5wdXQsIGFic2w6OlRpbWVab25lIHR6LAotICAgICAgICAgICAgICAgYWJzbDo6VGlt
ZSogdGltZSwgc3RkOjpzdHJpbmcqIGVycikgeworYm9vbCBQYXJzZVRpbWUoY29uc3Qgc3RkOjpz
dHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LAorICAgICAgICAgICAgICAg
YWJzbDo6VGltZVpvbmUgdHosIGFic2w6OlRpbWUqIHRpbWUsIHN0ZDo6c3RyaW5nKiBlcnIpIHsK
ICAgY29uc3QgY2hhciogZGF0YSA9IGlucHV0LmNfc3RyKCk7CiAgIHdoaWxlIChzdGQ6Omlzc3Bh
Y2UoKmRhdGEpKSArK2RhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0X2JlbmNo
bWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0X2JlbmNobWFyay5jYwppbmRleCBlZTUzZDcxYzY4
NS4uMjQ5YzUxZDg3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0X2JlbmNobWFyay5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2Zvcm1hdF9iZW5jaG1hcmsuY2MKQEAgLTMsNyArMyw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM4LDcgKzM4LDggQEAgdm9pZCBCTV9Gb3JtYXRf
Rm9ybWF0VGltZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBjb25zdCBhYnNsOjpUaW1l
Wm9uZSBsYXggPQogICAgICAgYWJzbDo6dGltZV9pbnRlcm5hbDo6TG9hZFRpbWVab25lKCJBbWVy
aWNhL0xvc19BbmdlbGVzIik7CiAgIGNvbnN0IGFic2w6OlRpbWUgdCA9Ci0gICAgICBhYnNsOjpG
cm9tRGF0ZVRpbWUoMTk3NywgNiwgMjgsIDksIDgsIDcsIGxheCkgKyBhYnNsOjpOYW5vc2Vjb25k
cygxKTsKKyAgICAgIGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgxOTc3LCA2LCAy
OCwgOSwgOCwgNyksIGxheCkgKworICAgICAgYWJzbDo6TmFub3NlY29uZHMoMSk7CiAgIHdoaWxl
IChzdGF0ZS5LZWVwUnVubmluZygpKSB7CiAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGFi
c2w6OkZvcm1hdFRpbWUoZm10LCB0LCBsYXgpLmxlbmd0aCgpKTsKICAgfQpAQCAtNTAsOCArNTEs
OCBAQCB2b2lkIEJNX0Zvcm1hdF9QYXJzZVRpbWUoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
ICAgc3RhdGUuU2V0TGFiZWwoZm10KTsKICAgY29uc3QgYWJzbDo6VGltZVpvbmUgbGF4ID0KICAg
ICAgIGFic2w6OnRpbWVfaW50ZXJuYWw6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxl
cyIpOwotICBhYnNsOjpUaW1lIHQgPQotICAgICAgYWJzbDo6RnJvbURhdGVUaW1lKDE5NzcsIDYs
IDI4LCA5LCA4LCA3LCBsYXgpICsgYWJzbDo6TmFub3NlY29uZHMoMSk7CisgIGFic2w6OlRpbWUg
dCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgxOTc3LCA2LCAyOCwgOSwgOCwg
NyksIGxheCkgKworICAgICAgICAgICAgICAgICBhYnNsOjpOYW5vc2Vjb25kcygxKTsKICAgY29u
c3Qgc3RkOjpzdHJpbmcgd2hlbiA9IGFic2w6OkZvcm1hdFRpbWUoZm10LCB0LCBsYXgpOwogICBz
dGQ6OnN0cmluZyBlcnI7CiAgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZygpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2Zvcm1hdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXRfdGVzdC5j
YwppbmRleCA3Yzg0YzMzZjFlYi4uYWIxZjMwNTk0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
Zm9ybWF0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXRfdGVzdC5jYwpAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjcsOCArMjcsOCBAQCBuYW1lc3Bh
Y2UgewogCiAvLyBBIGhlbHBlciB0aGF0IHRlc3RzIHRoZSBnaXZlbiBmb3JtYXQgc3BlY2lmaWVy
IGJ5IGl0c2VsZiwgYW5kIHdpdGggbGVhZGluZwogLy8gYW5kIHRyYWlsaW5nIGNoYXJhY3RlcnMu
ICBGb3IgZXhhbXBsZTogVGVzdEZvcm1hdFNwZWNpZmllcih0LCAiJWEiLCAiVGh1IikuCi12b2lk
IFRlc3RGb3JtYXRTcGVjaWZpZXIoYWJzbDo6VGltZSB0LCBhYnNsOjpUaW1lWm9uZSB0eiwgY29u
c3Qgc3RkOjpzdHJpbmcmIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgYW5zKSB7Cit2b2lkIFRlc3RGb3JtYXRTcGVjaWZpZXIoYWJzbDo6VGltZSB0LCBh
YnNsOjpUaW1lWm9uZSB0eiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgZm10LCBjb25zdCBzdGQ6OnN0cmluZyYgYW5zKSB7CiAgIEVYUEVDVF9FUShhbnMsIGFi
c2w6OkZvcm1hdFRpbWUoZm10LCB0LCB0eikpOwogICBFWFBFQ1RfRVEoInh4eCAiICsgYW5zLCBh
YnNsOjpGb3JtYXRUaW1lKCJ4eHggIiArIGZtdCwgdCwgdHopKTsKICAgRVhQRUNUX0VRKGFucyAr
ICIgeXl5IiwgYWJzbDo6Rm9ybWF0VGltZShmbXQgKyAiIHl5eSIsIHQsIHR6KSk7CkBAIC0xMTgs
NyArMTE4LDcgQEAgVEVTVChGb3JtYXRUaW1lLCBSRkMxMTIzRm9ybWF0UGFkc1llYXIpIHsgIC8v
IGxvY2FsZSBzcGVjaWZpYwogICBhYnNsOjpUaW1lWm9uZSB0eiA9IGFic2w6OlVUQ1RpbWVab25l
KCk7CiAKICAgLy8gQSB5ZWFyIG9mIDc3IHNob3VsZCBiZSBwYWRkZWQgdG8gMDA3Ny4KLSAgYWJz
bDo6VGltZSB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDc3LCA2LCAyOCwgOSwgOCwgNywgdHopOwor
ICBhYnNsOjpUaW1lIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoNzcsIDYs
IDI4LCA5LCA4LCA3KSwgdHopOwogICBFWFBFQ1RfRVEoIk1vbiwgMjggSnVuIDAwNzcgMDk6MDg6
MDcgKzAwMDAiLAogICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShhYnNsOjpSRkMxMTIzX2Z1
bGwsIHQsIHR6KSk7CiAgIEVYUEVDVF9FUSgiMjggSnVuIDAwNzcgMDk6MDg6MDcgKzAwMDAiLApA
QCAtMTU0LDkgKzE1NCw5IEBAIFRFU1QoUGFyc2VUaW1lLCBCYXNpY3MpIHsKICAgRVhQRUNUX1RS
VUUoYWJzbDo6UGFyc2VUaW1lKCIlWS0lbS0lZCAlSDolTTolUyAleiIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiMjAxMy0wNi0yOCAxOTowODowOSAtMDgwMCIsICZ0LCAmZXJyKSkK
ICAgICAgIDw8IGVycjsKLSAgYWJzbDo6VGltZTo6QnJlYWtkb3duIGJkID0gdC5JbihhYnNsOjpG
aXhlZFRpbWVab25lKC04ICogNjAgKiA2MCkpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1F
KGJkLCAyMDEzLCA2LCAyOCwgMTksIDgsIDksIC04ICogNjAgKiA2MCwgZmFsc2UpOwotICBFWFBF
Q1RfRVEoYWJzbDo6WmVyb0R1cmF0aW9uKCksIGJkLnN1YnNlY29uZCk7CisgIGNvbnN0IGF1dG8g
Y2kgPSBhYnNsOjpGaXhlZFRpbWVab25lKC04ICogNjAgKiA2MCkuQXQodCk7CisgIEVYUEVDVF9F
UShhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCA2LCAyOCwgMTksIDgsIDkpLCBjaS5jcyk7CisgIEVY
UEVDVF9FUShhYnNsOjpaZXJvRHVyYXRpb24oKSwgY2kuc3Vic2Vjb25kKTsKIH0KIAogVEVTVChQ
YXJzZVRpbWUsIE51bGxFcnJvclN0cmluZykgewpAQCAtMTc3LDE3ICsxNzcsMTcgQEAgVEVTVChQ
YXJzZVRpbWUsIFdpdGhUaW1lWm9uZSkgewogICBFWFBFQ1RfVFJVRSgKICAgICAgIGFic2w6OlBh
cnNlVGltZSgiJVktJW0tJWQgJUg6JU06JVMiLCAiMjAxMy0wNi0yOCAxOTowODowOSIsIHR6LCAm
dCwgJmUpKQogICAgICAgPDwgZTsKLSAgYWJzbDo6VGltZTo6QnJlYWtkb3duIGJkID0gdC5Jbih0
eik7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDYsIDI4LCAxOSwgOCwg
OSwgLTcgKiA2MCAqIDYwLCB0cnVlKTsKLSAgRVhQRUNUX0VRKGFic2w6Olplcm9EdXJhdGlvbigp
LCBiZC5zdWJzZWNvbmQpOworICBhdXRvIGNpID0gdHouQXQodCk7CisgIEVYUEVDVF9FUShhYnNs
OjpDaXZpbFNlY29uZCgyMDEzLCA2LCAyOCwgMTksIDgsIDkpLCBjaS5jcyk7CisgIEVYUEVDVF9F
UShhYnNsOjpaZXJvRHVyYXRpb24oKSwgY2kuc3Vic2Vjb25kKTsKIAogICAvLyBCdXQgdGhlIHRp
bWV6b25lIGlzIGlnbm9yZWQgd2hlbiBhIFVUQyBvZmZzZXQgaXMgcHJlc2VudC4KICAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VUaW1lKCIlWS0lbS0lZCAlSDolTTolUyAleiIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiMjAxMy0wNi0yOCAxOTowODowOSArMDgwMCIsIHR6LCAmdCwg
JmUpKQogICAgICAgPDwgZTsKLSAgYmQgPSB0LkluKGFic2w6OkZpeGVkVGltZVpvbmUoOCAqIDYw
ICogNjApKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxMywgNiwgMjgsIDE5
LCA4LCA5LCA4ICogNjAgKiA2MCwgZmFsc2UpOwotICBFWFBFQ1RfRVEoYWJzbDo6WmVyb0R1cmF0
aW9uKCksIGJkLnN1YnNlY29uZCk7CisgIGNpID0gYWJzbDo6Rml4ZWRUaW1lWm9uZSg4ICogNjAg
KiA2MCkuQXQodCk7CisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCA2LCAyOCwg
MTksIDgsIDkpLCBjaS5jcyk7CisgIEVYUEVDVF9FUShhYnNsOjpaZXJvRHVyYXRpb24oKSwgY2ku
c3Vic2Vjb25kKTsKIH0KIAogVEVTVChQYXJzZVRpbWUsIEVycm9yQ2FzZXMpIHsKQEAgLTIwMSw3
ICsyMDEsNyBAQCBURVNUKFBhcnNlVGltZSwgRXJyb3JDYXNlcykgewogICBlcnIuY2xlYXIoKTsK
ICAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlVGltZSgiJVEiLCAieCIsICZ0LCAmZXJyKSkgPDwg
ZXJyOwogICAvLyBFeGFjdCBjb250ZW50cyBvZiAiZXJyIiBhcmUgcGxhdGZvcm0tZGVwZW5kZW50
IGJlY2F1c2Ugb2YKLSAgLy8gZGlmZmVyZW5jZXMgaW4gdGhlIHN0cnB0aW1lIGltcGxlbWVudGF0
aW9uIGJldHdlZW4gT1NYIGFuZCBMaW51eC4KKyAgLy8gZGlmZmVyZW5jZXMgaW4gdGhlIHN0cnB0
aW1lIGltcGxlbWVudGF0aW9uIGJldHdlZW4gbWFjT1MgYW5kIExpbnV4LgogICBFWFBFQ1RfRkFM
U0UoZXJyLmVtcHR5KCkpOwogCiAgIC8vIEZhaWxzIGJlY2F1c2Ugb2YgdHJhaWxpbmcsIHVucGFy
c2VkIGRhdGEgImJsYWgiLgpAQCAtMzMyLDE1ICszMzIsMTUgQEAgVEVTVChQYXJzZVRpbWUsIElu
ZmluaXRlVGltZSkgewogICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZVRpbWUoImluZmluaXRlLWZ1
dHVyZSAlSDolTSIsICJpbmZpbml0ZS1mdXR1cmUgMDM6MDQiLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnQsICZlcnIpKTsKICAgRVhQRUNUX05FKGFic2w6OkluZmluaXRlRnV0dXJl
KCksIHQpOwotICBFWFBFQ1RfRVEoMywgdC5Jbih0eikuaG91cik7Ci0gIEVYUEVDVF9FUSg0LCB0
LkluKHR6KS5taW51dGUpOworICBFWFBFQ1RfRVEoMywgdHouQXQodCkuY3MuaG91cigpKTsKKyAg
RVhQRUNUX0VRKDQsIHR6LkF0KHQpLmNzLm1pbnV0ZSgpKTsKIAogICAvLyAiaW5maW5pdGUtcGFz
dCIgYXMgbGl0ZXJhbCBzdGQ6OnN0cmluZwogICBFWFBFQ1RfVFJVRSgKICAgICAgIGFic2w6OlBh
cnNlVGltZSgiaW5maW5pdGUtcGFzdCAlSDolTSIsICJpbmZpbml0ZS1wYXN0IDAzOjA0IiwgJnQs
ICZlcnIpKTsKICAgRVhQRUNUX05FKGFic2w6OkluZmluaXRlUGFzdCgpLCB0KTsKLSAgRVhQRUNU
X0VRKDMsIHQuSW4odHopLmhvdXIpOwotICBFWFBFQ1RfRVEoNCwgdC5Jbih0eikubWludXRlKTsK
KyAgRVhQRUNUX0VRKDMsIHR6LkF0KHQpLmNzLmhvdXIoKSk7CisgIEVYUEVDVF9FUSg0LCB0ei5B
dCh0KS5jcy5taW51dGUoKSk7CiAKICAgLy8gVGhlIGlucHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGZv
cm1hdC4KICAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlVGltZSgiaW5maW5pdGUtZnV0dXJlICVI
OiVNIiwgIjAzOjA0IiwgJnQsICZlcnIpKTsKQEAgLTM2NSwxNiArMzY1LDE4IEBAIFRFU1QoUGFy
c2VUaW1lLCBGYWlsc09uVW5yZXByZXNlbnRhYmxlVGltZSkgewogLy8KIAogVEVTVChGb3JtYXRQ
YXJzZSwgUm91bmRUcmlwKSB7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25lIGdzdCA9CisgIGNvbnN0
IGFic2w6OlRpbWVab25lIGxheCA9CiAgICAgICBhYnNsOjp0aW1lX2ludGVybmFsOjpMb2FkVGlt
ZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiKTsKLSAgY29uc3QgYWJzbDo6VGltZSBpbiA9IGFi
c2w6OkZyb21EYXRlVGltZSgxOTc3LCA2LCAyOCwgOSwgOCwgNywgZ3N0KTsKKyAgY29uc3QgYWJz
bDo6VGltZSBpbiA9CisgICAgICBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMTk3
NywgNiwgMjgsIDksIDgsIDcpLCBsYXgpOwogICBjb25zdCBhYnNsOjpEdXJhdGlvbiBzdWJzZWNv
bmRzID0gYWJzbDo6TmFub3NlY29uZHMoNjU0MzIxKTsKICAgc3RkOjpzdHJpbmcgZXJyOwogCiAg
IC8vIFJGQzMzMzksIHdoaWNoIHJlbmRlcnMgc3Vic2Vjb25kcy4KICAgewogICAgIGFic2w6OlRp
bWUgb3V0OwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpGb3JtYXRUaW1lKGFic2w6
OlJGQzMzMzlfZnVsbCwgaW4gKyBzdWJzZWNvbmRzLCBnc3QpOworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHMgPQorICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGFic2w6OlJGQzMzMzlfZnVsbCwgaW4g
KyBzdWJzZWNvbmRzLCBsYXgpOwogICAgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlVGltZShhYnNs
OjpSRkMzMzM5X2Z1bGwsIHMsICZvdXQsICZlcnIpKQogICAgICAgICA8PCBzIDw8ICI6ICIgPDwg
ZXJyOwogICAgIEVYUEVDVF9FUShpbiArIHN1YnNlY29uZHMsIG91dCk7ICAvLyBSRkMzMzM5X2Z1
bGwgaW5jbHVkZXMgJUV6CkBAIC0zODMsNyArMzg1LDcgQEAgVEVTVChGb3JtYXRQYXJzZSwgUm91
bmRUcmlwKSB7CiAgIC8vIFJGQzExMjMsIHdoaWNoIG9ubHkgZG9lcyB3aG9sZSBzZWNvbmRzLgog
ICB7CiAgICAgYWJzbDo6VGltZSBvdXQ7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9IGFic2w6
OkZvcm1hdFRpbWUoYWJzbDo6UkZDMTEyM19mdWxsLCBpbiwgZ3N0KTsKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyBzID0gYWJzbDo6Rm9ybWF0VGltZShhYnNsOjpSRkMxMTIzX2Z1bGwsIGluLCBsYXgp
OwogICAgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlVGltZShhYnNsOjpSRkMxMTIzX2Z1bGwsIHMs
ICZvdXQsICZlcnIpKQogICAgICAgICA8PCBzIDw8ICI6ICIgPDwgZXJyOwogICAgIEVYUEVDVF9F
UShpbiwgb3V0KTsgIC8vIFJGQzExMjNfZnVsbCBpbmNsdWRlcyAlegpAQCAtMzkzLDcgKzM5NSwx
MiBAQCBURVNUKEZvcm1hdFBhcnNlLCBSb3VuZFRyaXApIHsKICAgLy8gd29yay4gT24gV2luZG93
cywgYGFic2w6OlBhcnNlVGltZSgpYCBmYWxscyBiYWNrIHRvIHN0ZDo6Z2V0X3RpbWUoKSB3aGlj
aAogICAvLyBhcHBlYXJzIHRvIGZhaWwgb24gIiVjIiAob3IgYXQgbGVhc3Qgb24gdGhlICIlYyIg
dGV4dCBwcm9kdWNlZCBieQogICAvLyBgc3RyZnRpbWUoKWApLiBUaGlzIG1ha2VzIGl0IGZhaWwg
dGhlIHJvdW5kLXRyaXAgdGVzdC4KLSNpZm5kZWYgX01TQ19WRVIKKyAgLy8KKyAgLy8gVW5kZXIg
dGhlIGVtc2NyaXB0ZW4gY29tcGlsZXIgYGFic2w6OlBhcnNlVGltZSgpIGZhbGxzIGJhY2sgdG8K
KyAgLy8gYHN0cnB0aW1lKClgLCBidXQgdGhhdCBlbmRzIHVwIHVzaW5nIGEgZGlmZmVyZW50IGRl
ZmluaXRpb24gZm9yICIlYyIKKyAgLy8gY29tcGFyZWQgdG8gYHN0cmZ0aW1lKClgLCBhbHNvIGNh
dXNpbmcgdGhlIHJvdW5kLXRyaXAgdGVzdCB0byBmYWlsCisgIC8vIChzZWUgaHR0cHM6Ly9naXRo
dWIuY29tL2tyaXBrZW4vZW1zY3JpcHRlbi9wdWxsLzc0OTEpLgorI2lmICFkZWZpbmVkKF9NU0Nf
VkVSKSAmJiAhZGVmaW5lZChfX0VNU0NSSVBURU5fXykKICAgLy8gRXZlbiB0aG91Z2ggd2UgZG9u
J3Qga25vdyB3aGF0ICVjIHdpbGwgcHJvZHVjZSwgaXQgc2hvdWxkIHJvdW5kdHJpcCwKICAgLy8g
YnV0IG9ubHkgaW4gdGhlIDAtb2Zmc2V0IHRpbWV6b25lLgogICB7CkBAIC00MDIsNyArNDA5LDcg
QEAgVEVTVChGb3JtYXRQYXJzZSwgUm91bmRUcmlwKSB7CiAgICAgRVhQRUNUX1RSVUUoYWJzbDo6
UGFyc2VUaW1lKCIlYyIsIHMsICZvdXQsICZlcnIpKSA8PCBzIDw8ICI6ICIgPDwgZXJyOwogICAg
IEVYUEVDVF9FUShpbiwgb3V0KTsKICAgfQotI2VuZGlmICAvLyBfTVNDX1ZFUgorI2VuZGlmICAv
LyAhX01TQ19WRVIgJiYgIV9fRU1TQ1JJUFRFTl9fCiB9CiAKIFRFU1QoRm9ybWF0UGFyc2UsIFJv
dW5kVHJpcERpc3RhbnRGdXR1cmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9CVUlMRC5iYXplbApp
bmRleCA5ZjFiYTIxY2Y3ZS4uYjA1YzIzNDcxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovQlVJ
TEQuYmF6ZWwKQEAgLTQsNyArNCw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisjICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogIwogIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTIsOCArMTIsMjQg
QEAKICMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCiAjICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAK
K3BhY2thZ2UoZmVhdHVyZXMgPSBbIi1wYXJzZV9oZWFkZXJzIl0pCisKIGxpY2Vuc2VzKFsibm90
aWNlIl0pICAjIEFwYWNoZSBMaWNlbnNlCiAKK2NvbmZpZ19zZXR0aW5nKAorICAgIG5hbWUgPSAi
b3N4IiwKKyAgICBjb25zdHJhaW50X3ZhbHVlcyA9IFsKKyAgICAgICAgIkBiYXplbF90b29scy8v
cGxhdGZvcm1zOm9zeCIsCisgICAgXSwKKykKKworY29uZmlnX3NldHRpbmcoCisgICAgbmFtZSA9
ICJpb3MiLAorICAgIGNvbnN0cmFpbnRfdmFsdWVzID0gWworICAgICAgICAiQGJhemVsX3Rvb2xz
Ly9wbGF0Zm9ybXM6aW9zIiwKKyAgICBdLAorKQorCiAjIyMgbGlicmFyaWVzCiAKIGNjX2xpYnJh
cnkoCkBAIC02MCw2ICs3NiwxNSBAQCBjY19saWJyYXJ5KAogICAgICAgICAiaW5jbHVkZS9jY3R6
L3RpbWVfem9uZS5oIiwKICAgICAgICAgImluY2x1ZGUvY2N0ei96b25lX2luZm9fc291cmNlLmgi
LAogICAgIF0sCisgICAgbGlua29wdHMgPSBzZWxlY3QoeworICAgICAgICAiOm9zeCI6IFsKKyAg
ICAgICAgICAgICItZnJhbWV3b3JrIEZvdW5kYXRpb24iLAorICAgICAgICBdLAorICAgICAgICAi
OmlvcyI6IFsKKyAgICAgICAgICAgICItZnJhbWV3b3JrIEZvdW5kYXRpb24iLAorICAgICAgICBd
LAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbXSwKKyAgICB9KSwKICAgICB2aXNp
YmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0sCiAgICAgZGVwcyA9IFsiOmNpdmlsX3Rp
bWUiXSwKICkKQEAgLTk2LDYgKzEyMSw3IEBAIGNjX3Rlc3QoCiBjY190ZXN0KAogICAgIG5hbWUg
PSAidGltZV96b25lX2xvb2t1cF90ZXN0IiwKICAgICBzaXplID0gInNtYWxsIiwKKyAgICB0aW1l
b3V0ID0gIm1vZGVyYXRlIiwKICAgICBzcmNzID0gWyJzcmMvdGltZV96b25lX2xvb2t1cF90ZXN0
LmNjIl0sCiAgICAgZGF0YSA9IFsiOnpvbmVpbmZvIl0sCiAgICAgdGFncyA9IFsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei9CVUlMRC5nbgppbmRleCA4NjQxN2U3Y2UzYy4uNDRlMDE3OTE5ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovQlVJTEQuZ24KQEAgLTQsOCArNCwxNSBAQAogCiBpbXBvcnQoIi8vYnVpbGRf
b3ZlcnJpZGVzL2J1aWxkLmduaSIpCiAKKyMgVXNhZ2Ugb2YgQWJzZWlsIGluIENocm9taXVtIGlz
IGd1YXJkZWQgYnkgYW4gZXhwbGljaXQgb3B0LWluIGxpc3QsIGJlZm9yZQorIyBhZGRpbmcgcHJv
amVjdHMgdG8gdGhpcyBsaXN0IHBsZWFzZSByZWFjaCBvdXQgdG8gY3h4QGNocm9taXVtLm9yZyBh
bmQgQ0M6CisjIC0gaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvT1dORVJTCisjCisjIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5k
IGF0OgorIyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFEZ1MxLUEzcnpib1RM
anBmNG0xc3FrSmdXam5ZX1J1MmRva2sxWDF2QkRVCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkg
ewogICB2aXNpYmlsaXR5ID0gWworICAgICIvL2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90aGly
ZF9wYXJ0eS93ZWJydGMvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKICAg
ICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKQEAgLTY2LDYgKzczLDkgQEAgc291
cmNlX3NldCgidGltZV96b25lIikgewogICAgICJpbmNsdWRlL2NjdHovdGltZV96b25lLmgiLAog
ICAgICJpbmNsdWRlL2NjdHovem9uZV9pbmZvX3NvdXJjZS5oIiwKICAgXQorICBpZiAoaXNfbWFj
IHx8IGlzX2lvcykgeworICAgIGxpYnMgPSBbICJGb3VuZGF0aW9uLmZyYW1ld29yayIgXQorICB9
CiAgIGRlcHMgPSBbCiAgICAgIjpjaXZpbF90aW1lIiwKICAgXQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWUuaAppbmRleCAwODQyZmE0YTQ2
OC4uODVkMGQzZmZmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNs
dWRlL2NjdHovY2l2aWxfdGltZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNs
dWRlL2NjdHovY2l2aWxfdGltZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMjc5LDcgKzI3OSw3IEBAIHVzaW5nIGNpdmlsX3NlY29uZCA9IGRldGFpbDo6Y2l2
aWxfc2Vjb25kOwogLy8KIHVzaW5nIGRldGFpbDo6d2Vla2RheTsKIAotLy8gUmV0dXJucyB0aGUg
d2Vla2RheSBmb3IgdGhlIGdpdmVuIGNpdmlsX2RheS4KKy8vIFJldHVybnMgdGhlIHdlZWtkYXkg
Zm9yIHRoZSBnaXZlbiBjaXZpbC10aW1lIHZhbHVlLgogLy8KIC8vICAgY2l2aWxfZGF5IGEoMjAx
NSwgOCwgMTMpOwogLy8gICB3ZWVrZGF5IHdkID0gZ2V0X3dlZWtkYXkoYSk7ICAvLyB3ZCA9PSB3
ZWVrZGF5Ojp0aHVyc2RheQpAQCAtMzA2LDE0ICszMDYsMTQgQEAgdXNpbmcgZGV0YWlsOjpnZXRf
d2Vla2RheTsKIC8vCiAvLyAgIGNpdmlsX2RheSBkID0gLi4uCiAvLyAgIC8vIEdldHMgdGhlIGZv
bGxvd2luZyBUaHVyc2RheSBpZiBkIGlzIG5vdCBhbHJlYWR5IFRodXJzZGF5Ci0vLyAgIGNpdmls
X2RheSB0aHVyczEgPSBwcmV2X3dlZWtkYXkoZCwgd2Vla2RheTo6dGh1cnNkYXkpICsgNzsKKy8v
ICAgY2l2aWxfZGF5IHRodXJzMSA9IG5leHRfd2Vla2RheShkIC0gMSwgd2Vla2RheTo6dGh1cnNk
YXkpOwogLy8gICAvLyBHZXRzIHRoZSBwcmV2aW91cyBUaHVyc2RheSBpZiBkIGlzIG5vdCBhbHJl
YWR5IFRodXJzZGF5Ci0vLyAgIGNpdmlsX2RheSB0aHVyczIgPSBuZXh0X3dlZWtkYXkoZCwgd2Vl
a2RheTo6dGh1cnNkYXkpIC0gNzsKKy8vICAgY2l2aWxfZGF5IHRodXJzMiA9IHByZXZfd2Vla2Rh
eShkICsgMSwgd2Vla2RheTo6dGh1cnNkYXkpOwogLy8KIHVzaW5nIGRldGFpbDo6bmV4dF93ZWVr
ZGF5OwogdXNpbmcgZGV0YWlsOjpwcmV2X3dlZWtkYXk7CiAKLS8vIFJldHVybnMgdGhlIGRheS1v
Zi15ZWFyIGZvciB0aGUgZ2l2ZW4gY2l2aWxfZGF5LgorLy8gUmV0dXJucyB0aGUgZGF5LW9mLXll
YXIgZm9yIHRoZSBnaXZlbiBjaXZpbC10aW1lIHZhbHVlLgogLy8KIC8vICAgY2l2aWxfZGF5IGEo
MjAxNSwgMSwgMSk7CiAvLyAgIGludCB5ZF9qYW5fMSA9IGdldF95ZWFyZGF5KGEpOyAgIC8vIHlk
X2phbl8xID0gMQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUv
Y2N0ei9jaXZpbF90aW1lX2RldGFpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1
ZGUvY2N0ei9jaXZpbF90aW1lX2RldGFpbC5oCmluZGV4IGQ3ZjcyNzE3ZWNlLi40MzMwNzhhNzMw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZp
bF90aW1lX2RldGFpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2Nj
dHovY2l2aWxfdGltZV9kZXRhaWwuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogLy8gRGlz
YWJsZSBjb25zdGV4cHIgc3VwcG9ydCB1bmxlc3Mgd2UgYXJlIGluIEMrKzE0IG1vZGUuCi0jaWYg
X19jcHBfY29uc3RleHByID49IDIwMTMwNCB8fCBfTVNDX1ZFUiA+PSAxOTEwCisjaWYgX19jcHBf
Y29uc3RleHByID49IDIwMTMwNCB8fCAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0g
MTkxMCkKICNkZWZpbmUgQ09OU1RFWFBSX0QgY29uc3RleHByICAvLyBkYXRhCiAjZGVmaW5lIENP
TlNURVhQUl9GIGNvbnN0ZXhwciAgLy8gZnVuY3Rpb24KICNkZWZpbmUgQ09OU1RFWFBSX00gY29u
c3RleHByICAvLyBtZW1iZXIKQEAgLTMyNiw2ICszMjYsMzcgQEAgQ09OU1RFWFBSX0YgZmllbGRz
IGFsaWduKHllYXJfdGFnLCBmaWVsZHMgZikgbm9leGNlcHQgewogCiAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
IAorbmFtZXNwYWNlIGltcGwgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KK0ggQWJzbEhhc2hW
YWx1ZUltcGwoc2Vjb25kX3RhZywgSCBoLCBmaWVsZHMgZikgeworICByZXR1cm4gSDo6Y29tYmlu
ZShzdGQ6Om1vdmUoaCksIGYueSwgZi5tLCBmLmQsIGYuaGgsIGYubW0sIGYuc3MpOworfQordGVt
cGxhdGUgPHR5cGVuYW1lIEg+CitIIEFic2xIYXNoVmFsdWVJbXBsKG1pbnV0ZV90YWcsIEggaCwg
ZmllbGRzIGYpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBmLnksIGYubSwg
Zi5kLCBmLmhoLCBmLm1tKTsKK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBIPgorSCBBYnNsSGFzaFZh
bHVlSW1wbChob3VyX3RhZywgSCBoLCBmaWVsZHMgZikgeworICByZXR1cm4gSDo6Y29tYmluZShz
dGQ6Om1vdmUoaCksIGYueSwgZi5tLCBmLmQsIGYuaGgpOworfQordGVtcGxhdGUgPHR5cGVuYW1l
IEg+CitIIEFic2xIYXNoVmFsdWVJbXBsKGRheV90YWcsIEggaCwgZmllbGRzIGYpIHsKKyAgcmV0
dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBmLnksIGYubSwgZi5kKTsKK30KK3RlbXBsYXRl
IDx0eXBlbmFtZSBIPgorSCBBYnNsSGFzaFZhbHVlSW1wbChtb250aF90YWcsIEggaCwgZmllbGRz
IGYpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBmLnksIGYubSk7Cit9Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KK0ggQWJzbEhhc2hWYWx1ZUltcGwoeWVhcl90YWcsIEggaCwg
ZmllbGRzIGYpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBmLnkpOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgaW1wbAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBjbGFzcyBjaXZpbF90aW1lIHsKICBwdWJsaWM6CkBAIC0zNTUsMTIgKzM4Niwx
MiBAQCBjbGFzcyBjaXZpbF90aW1lIHsKICAgICAgIDogY2l2aWxfdGltZShjdC5mXykge30KIAog
ICAvLyBGYWN0b3JpZXMgZm9yIHRoZSBtYXhpbXVtL21pbmltdW0gcmVwcmVzZW50YWJsZSBjaXZp
bF90aW1lLgotICBzdGF0aWMgQ09OU1RFWFBSX0YgY2l2aWxfdGltZSBtYXgoKSB7Ci0gICAgY29u
c3QgYXV0byBtYXhfeWVhciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjppbnRfbGVhc3Q2NF90
Pjo6bWF4KCk7CisgIHN0YXRpYyBDT05TVEVYUFJfRiBjaXZpbF90aW1lIChtYXgpKCkgeworICAg
IGNvbnN0IGF1dG8gbWF4X3llYXIgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OmludF9sZWFz
dDY0X3Q+OjptYXgpKCk7CiAgICAgcmV0dXJuIGNpdmlsX3RpbWUobWF4X3llYXIsIDEyLCAzMSwg
MjMsIDU5LCA1OSk7CiAgIH0KLSAgc3RhdGljIENPTlNURVhQUl9GIGNpdmlsX3RpbWUgbWluKCkg
ewotICAgIGNvbnN0IGF1dG8gbWluX3llYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6aW50
X2xlYXN0NjRfdD46Om1pbigpOworICBzdGF0aWMgQ09OU1RFWFBSX0YgY2l2aWxfdGltZSAobWlu
KSgpIHsKKyAgICBjb25zdCBhdXRvIG1pbl95ZWFyID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c3Rk
OjppbnRfbGVhc3Q2NF90Pjo6bWluKSgpOwogICAgIHJldHVybiBjaXZpbF90aW1lKG1pbl95ZWFy
LCAxLCAxLCAwLCAwLCAwKTsKICAgfQogCkBAIC0zNzgsNyArNDA5LDcgQEAgY2xhc3MgY2l2aWxf
dGltZSB7CiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAgIENPTlNURVhQUl9NIGNpdmlsX3RpbWUm
IG9wZXJhdG9yLT0oZGlmZl90IG4pIG5vZXhjZXB0IHsKLSAgICBpZiAobiAhPSBzdGQ6Om51bWVy
aWNfbGltaXRzPGRpZmZfdD46Om1pbigpKSB7CisgICAgaWYgKG4gIT0gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZGlmZl90Pjo6bWluKSgpKSB7CiAgICAgICBmXyA9IHN0ZXAoVHt9LCBmXywgLW4pOwog
ICAgIH0gZWxzZSB7CiAgICAgICBmXyA9IHN0ZXAoVHt9LCBzdGVwKFR7fSwgZl8sIC0obiArIDEp
KSwgMSk7CkBAIC00MTgsOCArNDQ5LDcgQEAgY2xhc3MgY2l2aWxfdGltZSB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEg+CiAgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBjaXZpbF90aW1l
IGEpIHsKLSAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIGEuZl8ueSwgYS5mXy5t
LCBhLmZfLmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmZfLmhoLCBh
LmZfLm1tLCBhLmZfLnNzKTsKKyAgICByZXR1cm4gaW1wbDo6QWJzbEhhc2hWYWx1ZUltcGwoVHt9
LCBzdGQ6Om1vdmUoaCksIGEuZl8pOwogICB9CiAKICBwcml2YXRlOgpAQCAtNTA1LDM5ICs1MzUs
NzEgQEAgZW51bSBjbGFzcyB3ZWVrZGF5IHsKICAgc3VuZGF5LAogfTsKIAotQ09OU1RFWFBSX0Yg
d2Vla2RheSBnZXRfd2Vla2RheShjb25zdCBjaXZpbF9kYXkmIGNkKSBub2V4Y2VwdCB7Ci0gIENP
TlNURVhQUl9EIHdlZWtkYXkga193ZWVrZGF5X2J5X3N1bl9vZmZbN10gPSB7Ci0gICAgICB3ZWVr
ZGF5OjpzdW5kYXksICAgICB3ZWVrZGF5Ojptb25kYXksICAgIHdlZWtkYXk6OnR1ZXNkYXksCi0g
ICAgICB3ZWVrZGF5Ojp3ZWRuZXNkYXksICB3ZWVrZGF5Ojp0aHVyc2RheSwgIHdlZWtkYXk6OmZy
aWRheSwKK0NPTlNURVhQUl9GIHdlZWtkYXkgZ2V0X3dlZWtkYXkoY29uc3QgY2l2aWxfc2Vjb25k
JiBjcykgbm9leGNlcHQgeworICBDT05TVEVYUFJfRCB3ZWVrZGF5IGtfd2Vla2RheV9ieV9tb25f
b2ZmWzEzXSA9IHsKKyAgICAgIHdlZWtkYXk6Om1vbmRheSwgICAgd2Vla2RheTo6dHVlc2RheSwg
IHdlZWtkYXk6OndlZG5lc2RheSwKKyAgICAgIHdlZWtkYXk6OnRodXJzZGF5LCAgd2Vla2RheTo6
ZnJpZGF5LCAgIHdlZWtkYXk6OnNhdHVyZGF5LAorICAgICAgd2Vla2RheTo6c3VuZGF5LCAgICB3
ZWVrZGF5Ojptb25kYXksICAgd2Vla2RheTo6dHVlc2RheSwKKyAgICAgIHdlZWtkYXk6OndlZG5l
c2RheSwgd2Vla2RheTo6dGh1cnNkYXksIHdlZWtkYXk6OmZyaWRheSwKICAgICAgIHdlZWtkYXk6
OnNhdHVyZGF5LAogICB9OwogICBDT05TVEVYUFJfRCBpbnQga193ZWVrZGF5X29mZnNldHNbMSAr
IDEyXSA9IHsKICAgICAgIC0xLCAwLCAzLCAyLCA1LCAwLCAzLCA1LCAxLCA0LCA2LCAyLCA0LAog
ICB9OwotICB5ZWFyX3Qgd2QgPSAyNDAwICsgKGNkLnllYXIoKSAlIDQwMCkgLSAoY2QubW9udGgo
KSA8IDMpOworICB5ZWFyX3Qgd2QgPSAyNDAwICsgKGNzLnllYXIoKSAlIDQwMCkgLSAoY3MubW9u
dGgoKSA8IDMpOwogICB3ZCArPSB3ZCAvIDQgLSB3ZCAvIDEwMCArIHdkIC8gNDAwOwotICB3ZCAr
PSBrX3dlZWtkYXlfb2Zmc2V0c1tjZC5tb250aCgpXSArIGNkLmRheSgpOwotICByZXR1cm4ga193
ZWVrZGF5X2J5X3N1bl9vZmZbKHdkICUgNyArIDcpICUgN107CisgIHdkICs9IGtfd2Vla2RheV9v
ZmZzZXRzW2NzLm1vbnRoKCldICsgY3MuZGF5KCk7CisgIHJldHVybiBrX3dlZWtkYXlfYnlfbW9u
X29mZlt3ZCAlIDcgKyA2XTsKIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIENPTlNURVhQUl9GIGNp
dmlsX2RheSBuZXh0X3dlZWtkYXkoY2l2aWxfZGF5IGNkLCB3ZWVrZGF5IHdkKSBub2V4Y2VwdCB7
Ci0gIGRvIHsgY2QgKz0gMTsgfSB3aGlsZSAoZ2V0X3dlZWtkYXkoY2QpICE9IHdkKTsKLSAgcmV0
dXJuIGNkOworICBDT05TVEVYUFJfRCB3ZWVrZGF5IGtfd2Vla2RheXNfZm9yd1sxNF0gPSB7Cisg
ICAgICB3ZWVrZGF5Ojptb25kYXksICAgIHdlZWtkYXk6OnR1ZXNkYXksICB3ZWVrZGF5Ojp3ZWRu
ZXNkYXksCisgICAgICB3ZWVrZGF5Ojp0aHVyc2RheSwgIHdlZWtkYXk6OmZyaWRheSwgICB3ZWVr
ZGF5OjpzYXR1cmRheSwKKyAgICAgIHdlZWtkYXk6OnN1bmRheSwgICAgd2Vla2RheTo6bW9uZGF5
LCAgIHdlZWtkYXk6OnR1ZXNkYXksCisgICAgICB3ZWVrZGF5Ojp3ZWRuZXNkYXksIHdlZWtkYXk6
OnRodXJzZGF5LCB3ZWVrZGF5OjpmcmlkYXksCisgICAgICB3ZWVrZGF5OjpzYXR1cmRheSwgIHdl
ZWtkYXk6OnN1bmRheSwKKyAgfTsKKyAgd2Vla2RheSBiYXNlID0gZ2V0X3dlZWtkYXkoY2QpOwor
ICBmb3IgKGludCBpID0gMDs7ICsraSkgeworICAgIGlmIChiYXNlID09IGtfd2Vla2RheXNfZm9y
d1tpXSkgeworICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOzsgKytqKSB7CisgICAgICAgIGlmICh3
ZCA9PSBrX3dlZWtkYXlzX2Zvcndbal0pIHsKKyAgICAgICAgICByZXR1cm4gY2QgKyAoaiAtIGkp
OworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CiB9CiAKIENPTlNURVhQUl9GIGNpdmls
X2RheSBwcmV2X3dlZWtkYXkoY2l2aWxfZGF5IGNkLCB3ZWVrZGF5IHdkKSBub2V4Y2VwdCB7Ci0g
IGRvIHsgY2QgLT0gMTsgfSB3aGlsZSAoZ2V0X3dlZWtkYXkoY2QpICE9IHdkKTsKLSAgcmV0dXJu
IGNkOworICBDT05TVEVYUFJfRCB3ZWVrZGF5IGtfd2Vla2RheXNfYmFja1sxNF0gPSB7CisgICAg
ICB3ZWVrZGF5OjpzdW5kYXksICAgd2Vla2RheTo6c2F0dXJkYXksICB3ZWVrZGF5OjpmcmlkYXks
CisgICAgICB3ZWVrZGF5Ojp0aHVyc2RheSwgd2Vla2RheTo6d2VkbmVzZGF5LCB3ZWVrZGF5Ojp0
dWVzZGF5LAorICAgICAgd2Vla2RheTo6bW9uZGF5LCAgIHdlZWtkYXk6OnN1bmRheSwgICAgd2Vl
a2RheTo6c2F0dXJkYXksCisgICAgICB3ZWVrZGF5OjpmcmlkYXksICAgd2Vla2RheTo6dGh1cnNk
YXksICB3ZWVrZGF5Ojp3ZWRuZXNkYXksCisgICAgICB3ZWVrZGF5Ojp0dWVzZGF5LCAgd2Vla2Rh
eTo6bW9uZGF5LAorICB9OworICB3ZWVrZGF5IGJhc2UgPSBnZXRfd2Vla2RheShjZCk7CisgIGZv
ciAoaW50IGkgPSAwOzsgKytpKSB7CisgICAgaWYgKGJhc2UgPT0ga193ZWVrZGF5c19iYWNrW2ld
KSB7CisgICAgICBmb3IgKGludCBqID0gaSArIDE7OyArK2opIHsKKyAgICAgICAgaWYgKHdkID09
IGtfd2Vla2RheXNfYmFja1tqXSkgeworICAgICAgICAgIHJldHVybiBjZCAtIChqIC0gaSk7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KIH0KIAotQ09OU1RFWFBSX0YgaW50IGdldF95
ZWFyZGF5KGNvbnN0IGNpdmlsX2RheSYgY2QpIG5vZXhjZXB0IHsKK0NPTlNURVhQUl9GIGludCBn
ZXRfeWVhcmRheShjb25zdCBjaXZpbF9zZWNvbmQmIGNzKSBub2V4Y2VwdCB7CiAgIENPTlNURVhQ
Ul9EIGludCBrX21vbnRoX29mZnNldHNbMSArIDEyXSA9IHsKICAgICAgIC0xLCAwLCAzMSwgNTks
IDkwLCAxMjAsIDE1MSwgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNCwKICAgfTsKLSAgY29u
c3QgaW50IGZlYjI5ID0gKGNkLm1vbnRoKCkgPiAyICYmIGltcGw6OmlzX2xlYXBfeWVhcihjZC55
ZWFyKCkpKTsKLSAgcmV0dXJuIGtfbW9udGhfb2Zmc2V0c1tjZC5tb250aCgpXSArIGZlYjI5ICsg
Y2QuZGF5KCk7CisgIGNvbnN0IGludCBmZWIyOSA9IChjcy5tb250aCgpID4gMiAmJiBpbXBsOjpp
c19sZWFwX3llYXIoY3MueWVhcigpKSk7CisgIHJldHVybiBrX21vbnRoX29mZnNldHNbY3MubW9u
dGgoKV0gKyBmZWIyOSArIGNzLmRheSgpOwogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5oCmluZGV4IGYy
OGRhZDE3NTUwLi5lZjZjNGJhMTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L2luY2x1ZGUvY2N0ei90aW1lX3pvbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtNzIsNyArNzIsNyBAQCBzcGxpdF9zZWNvbmRzKGNvbnN0IHRpbWVfcG9p
bnQ8c2Vjb25kcz4mIHRwKSB7CiAvLwogLy8gU2VlIGFsc286CiAvLyAtIGh0dHA6Ly93d3cuaWFu
YS5vcmcvdGltZS16b25lcwotLy8gLSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1pvbmVp
bmZvCisvLyAtIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1pvbmVpbmZvCiBjbGFzcyB0
aW1lX3pvbmUgewogIHB1YmxpYzoKICAgdGltZV96b25lKCkgOiB0aW1lX3pvbmUobnVsbHB0cikg
e30gIC8vIEVxdWl2YWxlbnQgdG8gVVRDCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovaW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3VyY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei9pbmNsdWRlL2NjdHovem9uZV9pbmZvX3NvdXJjZS5oCmluZGV4IDIwYTc2OTc5Mzcw
Li4yYjg5OGQxODJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1
ZGUvY2N0ei96b25lX2luZm9fc291cmNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L2luY2x1ZGUvY2N0ei96b25lX2luZm9fc291cmNlLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3Jj
L2NjdHpfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jY3R6X2Jl
bmNobWFyay5jYwppbmRleCA0NDk4ZDdkMGI2Yi4uYTQwZjUwNGUwNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2N0el9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jY3R6X2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQ3LDYgKzQ3LDU2IEBAIHZvaWQgQk1fU3RlcF9E
YXlzKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiB9CiBCRU5DSE1BUksoQk1fU3RlcF9EYXlz
KTsKIAordm9pZCBCTV9HZXRXZWVrZGF5KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIGNv
bnN0IGNjdHo6OmNpdmlsX2RheSBjKDIwMTQsIDgsIDIyKTsKKyAgd2hpbGUgKHN0YXRlLktlZXBS
dW5uaW5nKCkpIHsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoY2N0ejo6Z2V0X3dlZWtk
YXkoYykpOworICB9Cit9CitCRU5DSE1BUksoQk1fR2V0V2Vla2RheSk7CisKK3ZvaWQgQk1fTmV4
dFdlZWtkYXkoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgY29uc3QgY2N0ejo6Y2l2aWxf
ZGF5IGtTdGFydCgyMDE0LCA4LCAyMik7CisgIGNvbnN0IGNjdHo6OmNpdmlsX2RheSBrRGF5c1s3
XSA9IHsKKyAgICAgIGtTdGFydCArIDAsIGtTdGFydCArIDEsIGtTdGFydCArIDIsIGtTdGFydCAr
IDMsCisgICAgICBrU3RhcnQgKyA0LCBrU3RhcnQgKyA1LCBrU3RhcnQgKyA2LAorICB9OworICBj
b25zdCBjY3R6Ojp3ZWVrZGF5IGtXZWVrZGF5c1s3XSA9IHsKKyAgICAgIGNjdHo6OndlZWtkYXk6
Om1vbmRheSwgICBjY3R6Ojp3ZWVrZGF5Ojp0dWVzZGF5LCBjY3R6Ojp3ZWVrZGF5Ojp3ZWRuZXNk
YXksCisgICAgICBjY3R6Ojp3ZWVrZGF5Ojp0aHVyc2RheSwgY2N0ejo6d2Vla2RheTo6ZnJpZGF5
LCAgY2N0ejo6d2Vla2RheTo6c2F0dXJkYXksCisgICAgICBjY3R6Ojp3ZWVrZGF5OjpzdW5kYXks
CisgIH07CisgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZ0JhdGNoKDcgKiA3KSkgeworICAgIGZv
ciAoY29uc3QgYXV0byBmcm9tIDoga0RheXMpIHsKKyAgICAgIGZvciAoY29uc3QgYXV0byB0byA6
IGtXZWVrZGF5cykgeworICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoY2N0ejo6bmV4
dF93ZWVrZGF5KGZyb20sIHRvKSk7CisgICAgICB9CisgICAgfQorICB9Cit9CitCRU5DSE1BUkso
Qk1fTmV4dFdlZWtkYXkpOworCit2b2lkIEJNX1ByZXZXZWVrZGF5KGJlbmNobWFyazo6U3RhdGUm
IHN0YXRlKSB7CisgIGNvbnN0IGNjdHo6OmNpdmlsX2RheSBrU3RhcnQoMjAxNCwgOCwgMjIpOwor
ICBjb25zdCBjY3R6OjpjaXZpbF9kYXkga0RheXNbN10gPSB7CisgICAgICBrU3RhcnQgKyAwLCBr
U3RhcnQgKyAxLCBrU3RhcnQgKyAyLCBrU3RhcnQgKyAzLAorICAgICAga1N0YXJ0ICsgNCwga1N0
YXJ0ICsgNSwga1N0YXJ0ICsgNiwKKyAgfTsKKyAgY29uc3QgY2N0ejo6d2Vla2RheSBrV2Vla2Rh
eXNbN10gPSB7CisgICAgICBjY3R6Ojp3ZWVrZGF5Ojptb25kYXksICAgY2N0ejo6d2Vla2RheTo6
dHVlc2RheSwgY2N0ejo6d2Vla2RheTo6d2VkbmVzZGF5LAorICAgICAgY2N0ejo6d2Vla2RheTo6
dGh1cnNkYXksIGNjdHo6OndlZWtkYXk6OmZyaWRheSwgIGNjdHo6OndlZWtkYXk6OnNhdHVyZGF5
LAorICAgICAgY2N0ejo6d2Vla2RheTo6c3VuZGF5LAorICB9OworICB3aGlsZSAoc3RhdGUuS2Vl
cFJ1bm5pbmdCYXRjaCg3ICogNykpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8gZnJvbSA6IGtEYXlz
KSB7CisgICAgICBmb3IgKGNvbnN0IGF1dG8gdG8gOiBrV2Vla2RheXMpIHsKKyAgICAgICAgYmVu
Y2htYXJrOjpEb05vdE9wdGltaXplKGNjdHo6OnByZXZfd2Vla2RheShmcm9tLCB0bykpOworICAg
ICAgfQorICAgIH0KKyAgfQorfQorQkVOQ0hNQVJLKEJNX1ByZXZXZWVrZGF5KTsKKwogY29uc3Qg
Y2hhciBSRkMzMzM5X2Z1bGxbXSA9ICIlWS0lbS0lZFQlSDolTTolRSpTJUV6IjsKIGNvbnN0IGNo
YXIgUkZDMzMzOV9zZWNbXSA9ICIlWS0lbS0lZFQlSDolTTolUyVFeiI7CiAKQEAgLTM1Nyw2ICs0
MDcsNyBAQCBjb25zdCBjaGFyKiBjb25zdCBrVGltZVpvbmVOYW1lc1tdID0gewogICAiQXNpYS9Q
b250aWFuYWsiLAogICAiQXNpYS9QeW9uZ3lhbmciLAogICAiQXNpYS9RYXRhciIsCisgICJBc2lh
L1Fvc3RhbmF5IiwKICAgIkFzaWEvUXl6eWxvcmRhIiwKICAgIkFzaWEvUmFuZ29vbiIsCiAgICJB
c2lhL1JpeWFkaCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2Np
dmlsX3RpbWVfZGV0YWlsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90
aW1lX2RldGFpbC5jYwppbmRleCA3ODBkNWM5NmU4Yi4uY2I0MGI2YmM1M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2l2aWxfdGltZV9kZXRhaWwuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90aW1lX2RldGFpbC5jYwpAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei9zcmMvY2l2aWxfdGltZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3NyYy9jaXZpbF90aW1lX3Rlc3QuY2MKaW5kZXggZmFmZmRlNDcwYWYuLjEwYTVmZmU1
ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVfdGVz
dC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM3LDcgKzM3
LDcgQEAgc3RkOjpzdHJpbmcgRm9ybWF0KGNvbnN0IFQmIHQpIHsKIAogfSAgLy8gbmFtZXNwYWNl
CiAKLSNpZiBfX2NwcF9jb25zdGV4cHIgPj0gMjAxMzA0IHx8IF9NU0NfVkVSID49IDE5MTAKKyNp
ZiBfX2NwcF9jb25zdGV4cHIgPj0gMjAxMzA0IHx8IChkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVND
X1ZFUiA+PSAxOTEwKQogLy8gQ29uc3RydWN0aW9uIGNvbnN0ZXhwciB0ZXN0cwogCiBURVNUKENp
dmlsVGltZSwgTm9ybWFsKSB7CkBAIC0zMTksNyArMzE5LDcgQEAgVEVTVChDaXZpbFRpbWUsIFll
YXJEYXkpIHsKICAgY29uc3RleHByIGludCB5ZCA9IGdldF95ZWFyZGF5KGNkKTsKICAgc3RhdGlj
X2Fzc2VydCh5ZCA9PSAyOCwgIlllYXJEYXkiKTsKIH0KLSNlbmRpZiAgLy8gX19jcHBfY29uc3Rl
eHByID49IDIwMTMwNCB8fCBfTVNDX1ZFUiA+PSAxOTEwCisjZW5kaWYgIC8vIF9fY3BwX2NvbnN0
ZXhwciA+PSAyMDEzMDQgfHwgKGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE5MTAp
CiAKIC8vIFRoZSByZW1haW5pbmcgdGVzdHMgZG8gbm90IHVzZSBjb25zdGV4cHIuCiAKQEAgLTgy
MSw2ICs4MjEsOCBAQCBURVNUKENpdmlsVGltZSwgUHJvcGVydGllcykgewogICBFWFBFQ1RfRVEo
NCwgc3MuaG91cigpKTsKICAgRVhQRUNUX0VRKDUsIHNzLm1pbnV0ZSgpKTsKICAgRVhQRUNUX0VR
KDYsIHNzLnNlY29uZCgpKTsKKyAgRVhQRUNUX0VRKHdlZWtkYXk6OnR1ZXNkYXksIGdldF93ZWVr
ZGF5KHNzKSk7CisgIEVYUEVDVF9FUSgzNCwgZ2V0X3llYXJkYXkoc3MpKTsKIAogICBjaXZpbF9t
aW51dGUgbW0oMjAxNSwgMiwgMywgNCwgNSwgNik7CiAgIEVYUEVDVF9FUSgyMDE1LCBtbS55ZWFy
KCkpOwpAQCAtODI5LDYgKzgzMSw4IEBAIFRFU1QoQ2l2aWxUaW1lLCBQcm9wZXJ0aWVzKSB7CiAg
IEVYUEVDVF9FUSg0LCBtbS5ob3VyKCkpOwogICBFWFBFQ1RfRVEoNSwgbW0ubWludXRlKCkpOwog
ICBFWFBFQ1RfRVEoMCwgbW0uc2Vjb25kKCkpOworICBFWFBFQ1RfRVEod2Vla2RheTo6dHVlc2Rh
eSwgZ2V0X3dlZWtkYXkobW0pKTsKKyAgRVhQRUNUX0VRKDM0LCBnZXRfeWVhcmRheShtbSkpOwog
CiAgIGNpdmlsX2hvdXIgaGgoMjAxNSwgMiwgMywgNCwgNSwgNik7CiAgIEVYUEVDVF9FUSgyMDE1
LCBoaC55ZWFyKCkpOwpAQCAtODM3LDYgKzg0MSw4IEBAIFRFU1QoQ2l2aWxUaW1lLCBQcm9wZXJ0
aWVzKSB7CiAgIEVYUEVDVF9FUSg0LCBoaC5ob3VyKCkpOwogICBFWFBFQ1RfRVEoMCwgaGgubWlu
dXRlKCkpOwogICBFWFBFQ1RfRVEoMCwgaGguc2Vjb25kKCkpOworICBFWFBFQ1RfRVEod2Vla2Rh
eTo6dHVlc2RheSwgZ2V0X3dlZWtkYXkoaGgpKTsKKyAgRVhQRUNUX0VRKDM0LCBnZXRfeWVhcmRh
eShoaCkpOwogCiAgIGNpdmlsX2RheSBkKDIwMTUsIDIsIDMsIDQsIDUsIDYpOwogICBFWFBFQ1Rf
RVEoMjAxNSwgZC55ZWFyKCkpOwpAQCAtODU1LDYgKzg2MSw4IEBAIFRFU1QoQ2l2aWxUaW1lLCBQ
cm9wZXJ0aWVzKSB7CiAgIEVYUEVDVF9FUSgwLCBtLmhvdXIoKSk7CiAgIEVYUEVDVF9FUSgwLCBt
Lm1pbnV0ZSgpKTsKICAgRVhQRUNUX0VRKDAsIG0uc2Vjb25kKCkpOworICBFWFBFQ1RfRVEod2Vl
a2RheTo6c3VuZGF5LCBnZXRfd2Vla2RheShtKSk7CisgIEVYUEVDVF9FUSgzMiwgZ2V0X3llYXJk
YXkobSkpOwogCiAgIGNpdmlsX3llYXIgeSgyMDE1LCAyLCAzLCA0LCA1LCA2KTsKICAgRVhQRUNU
X0VRKDIwMTUsIHkueWVhcigpKTsKQEAgLTg2Myw2ICs4NzEsOCBAQCBURVNUKENpdmlsVGltZSwg
UHJvcGVydGllcykgewogICBFWFBFQ1RfRVEoMCwgeS5ob3VyKCkpOwogICBFWFBFQ1RfRVEoMCwg
eS5taW51dGUoKSk7CiAgIEVYUEVDVF9FUSgwLCB5LnNlY29uZCgpKTsKKyAgRVhQRUNUX0VRKHdl
ZWtkYXk6OnRodXJzZGF5LCBnZXRfd2Vla2RheSh5KSk7CisgIEVYUEVDVF9FUSgxLCBnZXRfeWVh
cmRheSh5KSk7CiB9CiAKIFRFU1QoQ2l2aWxUaW1lLCBPdXRwdXRTdHJlYW0pIHsKQEAgLTEwMzUs
NyArMTA0NSw3IEBAIFRFU1QoQ2l2aWxUaW1lLCBMZWFwWWVhcnMpIHsKIAogVEVTVChDaXZpbFRp
bWUsIEZpcnN0VGh1cnNkYXlJbk1vbnRoKSB7CiAgIGNvbnN0IGNpdmlsX2RheSBub3YxKDIwMTQs
IDExLCAxKTsKLSAgY29uc3QgY2l2aWxfZGF5IHRodXJzZGF5ID0gcHJldl93ZWVrZGF5KG5vdjEs
IHdlZWtkYXk6OnRodXJzZGF5KSArIDc7CisgIGNvbnN0IGNpdmlsX2RheSB0aHVyc2RheSA9IG5l
eHRfd2Vla2RheShub3YxIC0gMSwgd2Vla2RheTo6dGh1cnNkYXkpOwogICBFWFBFQ1RfRVEoIjIw
MTQtMTEtMDYiLCBGb3JtYXQodGh1cnNkYXkpKTsKIAogICAvLyBCb251czogRGF0ZSBvZiBUaGFu
a3NnaXZpbmcgaW4gdGhlIFVuaXRlZCBTdGF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3NyYy90aW1lX3pvbmVfZml4ZWQuY2MKaW5kZXggZGI5YTQ3NWE5YjQuLmIwZDE1OWEyZTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhl
ZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5j
YwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI3LDcgKzI3LDcg
QEAgbmFtZXNwYWNlIGNjdHogewogbmFtZXNwYWNlIHsKIAogLy8gVGhlIHByZWZpeCB1c2VkIGZv
ciB0aGUgaW50ZXJuYWwgbmFtZXMgb2YgZml4ZWQtb2Zmc2V0IHpvbmVzLgotY29uc3QgY2hhciBr
Rml4ZWRPZmZzZXRQcmVmaXhbXSA9ICJGaXhlZC9VVEMiOworY29uc3QgY2hhciBrRml4ZWRab25l
UHJlZml4W10gPSAiRml4ZWQvVVRDIjsKIAogY29uc3QgY2hhciBrRGlnaXRzW10gPSAiMDEyMzQ1
Njc4OSI7CiAKQEAgLTU1LDExICs1NSwxMSBAQCBib29sIEZpeGVkT2Zmc2V0RnJvbU5hbWUoY29u
c3Qgc3RkOjpzdHJpbmcmIG5hbWUsIHNlY29uZHMqIG9mZnNldCkgewogICAgIHJldHVybiB0cnVl
OwogICB9CiAKLSAgY29uc3Qgc3RkOjpzaXplX3QgcHJlZml4X2xlbiA9IHNpemVvZihrRml4ZWRP
ZmZzZXRQcmVmaXgpIC0gMTsKLSAgY29uc3QgY2hhciogY29uc3QgZXAgPSBrRml4ZWRPZmZzZXRQ
cmVmaXggKyBwcmVmaXhfbGVuOworICBjb25zdCBzdGQ6OnNpemVfdCBwcmVmaXhfbGVuID0gc2l6
ZW9mKGtGaXhlZFpvbmVQcmVmaXgpIC0gMTsKKyAgY29uc3QgY2hhciogY29uc3QgZXAgPSBrRml4
ZWRab25lUHJlZml4ICsgcHJlZml4X2xlbjsKICAgaWYgKG5hbWUuc2l6ZSgpICE9IHByZWZpeF9s
ZW4gKyA5KSAgLy8gPHByZWZpeD4rOTk6OTk6OTkKICAgICByZXR1cm4gZmFsc2U7Ci0gIGlmICgh
c3RkOjplcXVhbChrRml4ZWRPZmZzZXRQcmVmaXgsIGVwLCBuYW1lLmJlZ2luKCkpKQorICBpZiAo
IXN0ZDo6ZXF1YWwoa0ZpeGVkWm9uZVByZWZpeCwgZXAsIG5hbWUuYmVnaW4oKSkpCiAgICAgcmV0
dXJuIGZhbHNlOwogICBjb25zdCBjaGFyKiBucCA9IG5hbWUuZGF0YSgpICsgcHJlZml4X2xlbjsK
ICAgaWYgKG5wWzBdICE9ICcrJyAmJiBucFswXSAhPSAnLScpCkBAIC0xMDIsOSArMTAyLDkgQEAg
c3RkOjpzdHJpbmcgRml4ZWRPZmZzZXRUb05hbWUoY29uc3Qgc2Vjb25kcyYgb2Zmc2V0KSB7CiAg
IH0KICAgaW50IGhvdXJzID0gbWludXRlcyAvIDYwOwogICBtaW51dGVzICU9IDYwOwotICBjaGFy
IGJ1ZltzaXplb2Yoa0ZpeGVkT2Zmc2V0UHJlZml4KSAtIDEgKyBzaXplb2YoIi0yNDowMDowMCIp
XTsKLSAgc3RkOjpzdHJjcHkoYnVmLCBrRml4ZWRPZmZzZXRQcmVmaXgpOwotICBjaGFyKiBlcCA9
IGJ1ZiArIHNpemVvZihrRml4ZWRPZmZzZXRQcmVmaXgpIC0gMTsKKyAgY29uc3Qgc3RkOjpzaXpl
X3QgcHJlZml4X2xlbiA9IHNpemVvZihrRml4ZWRab25lUHJlZml4KSAtIDE7CisgIGNoYXIgYnVm
W3ByZWZpeF9sZW4gKyBzaXplb2YoIi0yNDowMDowMCIpXTsKKyAgY2hhciogZXAgPSBzdGQ6OmNv
cHkoa0ZpeGVkWm9uZVByZWZpeCwga0ZpeGVkWm9uZVByZWZpeCArIHByZWZpeF9sZW4sIGJ1Zik7
CiAgICplcCsrID0gc2lnbjsKICAgZXAgPSBGb3JtYXQwMmQoZXAsIGhvdXJzKTsKICAgKmVwKysg
PSAnOic7CkBAIC0xMTgsNyArMTE4LDcgQEAgc3RkOjpzdHJpbmcgRml4ZWRPZmZzZXRUb05hbWUo
Y29uc3Qgc2Vjb25kcyYgb2Zmc2V0KSB7CiAKIHN0ZDo6c3RyaW5nIEZpeGVkT2Zmc2V0VG9BYmJy
KGNvbnN0IHNlY29uZHMmIG9mZnNldCkgewogICBzdGQ6OnN0cmluZyBhYmJyID0gRml4ZWRPZmZz
ZXRUb05hbWUob2Zmc2V0KTsKLSAgY29uc3Qgc3RkOjpzaXplX3QgcHJlZml4X2xlbiA9IHNpemVv
ZihrRml4ZWRPZmZzZXRQcmVmaXgpIC0gMTsKKyAgY29uc3Qgc3RkOjpzaXplX3QgcHJlZml4X2xl
biA9IHNpemVvZihrRml4ZWRab25lUHJlZml4KSAtIDE7CiAgIGlmIChhYmJyLnNpemUoKSA9PSBw
cmVmaXhfbGVuICsgOSkgeyAgICAgICAgIC8vIDxwcmVmaXg+Kzk5Ojk5Ojk5CiAgICAgYWJici5l
cmFzZSgwLCBwcmVmaXhfbGVuKTsgICAgICAgICAgICAgICAgIC8vICs5OTo5OTo5OQogICAgIGFi
YnIuZXJhc2UoNiwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyArOTk6OTk5OQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZml4ZWQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmgKaW5kZXggNDg5
Yjg1N2Q1ZGYuLjljMWY1ZTdkN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovc3JjL3RpbWVfem9uZV9maXhlZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9z
cmMvdGltZV96b25lX2ZpeGVkLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9m
b3JtYXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXQu
Y2MKaW5kZXggYTAyYjFlMzQxYWMuLjg0ZTI4MGIxMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZm9ybWF0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTMsMTMgKzEzLDIzIEBACiAvLyAgIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgogCiAjaWYgIWRlZmluZWQoSEFTX1NUUlBUSU1FKQotIyBpZiAh
ZGVmaW5lZChfTVNDX1ZFUikKKyMgaWYgIWRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9f
TUlOR1czMl9fKQogIyAgZGVmaW5lIEhBU19TVFJQVElNRSAxICAvLyBhc3N1bWUgZXZlcnlvbmUg
aGFzIHN0cnB0aW1lKCkgZXhjZXB0IHdpbmRvd3MKICMgZW5kaWYKICNlbmRpZgogCisjaWYgZGVm
aW5lZChIQVNfU1RSUFRJTUUpICYmIEhBU19TVFJQVElNRQorIyBpZiAhZGVmaW5lZChfWE9QRU5f
U09VUkNFKQorIyAgZGVmaW5lIF9YT1BFTl9TT1VSQ0UgIC8vIERlZmluZWRuZXNzIHN1ZmZpY2Vz
IGZvciBzdHJwdGltZS4KKyMgZW5kaWYKKyNlbmRpZgorCiAjaW5jbHVkZSAiYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5oIgogCisvLyBJbmNsdWRlIHRpbWUu
aCBkaXJlY3RseSBzaW5jZSwgYnkgQysrIHN0YW5kYXJkcywgY3RpbWUgZG9lc24ndCBoYXZlIHRv
CisvLyBkZWNsYXJlIHN0cnB0aW1lLgorI2luY2x1ZGUgPHRpbWUuaD4KKwogI2luY2x1ZGUgPGNj
dHlwZT4KICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KQEAgLTcyLDcgKzgy
LDcgQEAgc3RkOjp0bSBUb1RNKGNvbnN0IHRpbWVfem9uZTo6YWJzb2x1dGVfbG9va3VwJiBhbCkg
ewogICAgIHRtLnRtX3llYXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGFsLmNzLnllYXIoKSAtIDE5MDAp
OwogICB9CiAKLSAgc3dpdGNoIChnZXRfd2Vla2RheShjaXZpbF9kYXkoYWwuY3MpKSkgeworICBz
d2l0Y2ggKGdldF93ZWVrZGF5KGFsLmNzKSkgewogICAgIGNhc2Ugd2Vla2RheTo6c3VuZGF5Ogog
ICAgICAgdG0udG1fd2RheSA9IDA7CiAgICAgICBicmVhazsKQEAgLTk1LDcgKzEwNSw3IEBAIHN0
ZDo6dG0gVG9UTShjb25zdCB0aW1lX3pvbmU6OmFic29sdXRlX2xvb2t1cCYgYWwpIHsKICAgICAg
IHRtLnRtX3dkYXkgPSA2OwogICAgICAgYnJlYWs7CiAgIH0KLSAgdG0udG1feWRheSA9IGdldF95
ZWFyZGF5KGNpdmlsX2RheShhbC5jcykpIC0gMTsKKyAgdG0udG1feWRheSA9IGdldF95ZWFyZGF5
KGFsLmNzKSAtIDE7CiAgIHRtLnRtX2lzZHN0ID0gYWwuaXNfZHN0ID8gMSA6IDA7CiAgIHJldHVy
biB0bTsKIH0KQEAgLTE0OSwxNSArMTU5LDI1IEBAIGNoYXIqIEZvcm1hdE9mZnNldChjaGFyKiBl
cCwgaW50IG9mZnNldCwgY29uc3QgY2hhciogbW9kZSkgewogICAgIG9mZnNldCA9IC1vZmZzZXQ7
ICAvLyBib3VuZGVkIGJ5IDI0aCBzbyBubyBvdmVyZmxvdwogICAgIHNpZ24gPSAnLSc7CiAgIH0K
LSAgY2hhciBzZXAgPSBtb2RlWzBdOwotICBpZiAoc2VwICE9ICdcMCcgJiYgbW9kZVsxXSA9PSAn
KicpIHsKLSAgICBlcCA9IEZvcm1hdDAyZChlcCwgb2Zmc2V0ICUgNjApOworICBjb25zdCBpbnQg
c2Vjb25kcyA9IG9mZnNldCAlIDYwOworICBjb25zdCBpbnQgbWludXRlcyA9IChvZmZzZXQgLz0g
NjApICUgNjA7CisgIGNvbnN0IGludCBob3VycyA9IG9mZnNldCAvPSA2MDsKKyAgY29uc3QgY2hh
ciBzZXAgPSBtb2RlWzBdOworICBjb25zdCBib29sIGV4dCA9IChzZXAgIT0gJ1wwJyAmJiBtb2Rl
WzFdID09ICcqJyk7CisgIGNvbnN0IGJvb2wgY2NjID0gKGV4dCAmJiBtb2RlWzJdID09ICc6Jyk7
CisgIGlmIChleHQgJiYgKCFjY2MgfHwgc2Vjb25kcyAhPSAwKSkgeworICAgIGVwID0gRm9ybWF0
MDJkKGVwLCBzZWNvbmRzKTsKICAgICAqLS1lcCA9IHNlcDsKKyAgfSBlbHNlIHsKKyAgICAvLyBJ
ZiB3ZSdyZSBub3QgcmVuZGVyaW5nIHNlY29uZHMsIHN1Yi1taW51dGUgbmVnYXRpdmUgb2Zmc2V0
cworICAgIC8vIHNob3VsZCBnZXQgYSBwb3NpdGl2ZSBzaWduIChlLmcuLCBvZmZzZXQ9LTEwcyA9
PiAiKzAwOjAwIikuCisgICAgaWYgKGhvdXJzID09IDAgJiYgbWludXRlcyA9PSAwKSBzaWduID0g
JysnOworICB9CisgIGlmICghY2NjIHx8IG1pbnV0ZXMgIT0gMCB8fCBzZWNvbmRzICE9IDApIHsK
KyAgICBlcCA9IEZvcm1hdDAyZChlcCwgbWludXRlcyk7CisgICAgaWYgKHNlcCAhPSAnXDAnKSAq
LS1lcCA9IHNlcDsKICAgfQotICBpbnQgbWludXRlcyA9IG9mZnNldCAvIDYwOwotICBlcCA9IEZv
cm1hdDAyZChlcCwgbWludXRlcyAlIDYwKTsKLSAgaWYgKHNlcCAhPSAnXDAnKSAqLS1lcCA9IHNl
cDsKLSAgZXAgPSBGb3JtYXQwMmQoZXAsIG1pbnV0ZXMgLyA2MCk7CisgIGVwID0gRm9ybWF0MDJk
KGVwLCBob3Vycyk7CiAgICotLWVwID0gc2lnbjsKICAgcmV0dXJuIGVwOwogfQpAQCAtMzg0LDYg
KzQwNCw0NCBAQCBzdGQ6OnN0cmluZyBmb3JtYXQoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwg
Y29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiYgdHAsCiAgICAgICBjb250aW51ZTsKICAgICB9CiAK
KyAgICAvLyBNb3JlIGNvbXBsZXggc3BlY2lmaWVycyB0aGF0IHdlIGhhbmRsZSBvdXJzZWx2ZXMu
CisgICAgaWYgKCpjdXIgPT0gJzonICYmIGN1ciArIDEgIT0gZW5kKSB7CisgICAgICBpZiAoKihj
dXIgKyAxKSA9PSAneicpIHsKKyAgICAgICAgLy8gRm9ybWF0cyAlOnouCisgICAgICAgIGlmIChj
dXIgLSAxICE9IHBlbmRpbmcpIHsKKyAgICAgICAgICBGb3JtYXRUTSgmcmVzdWx0LCBzdGQ6OnN0
cmluZyhwZW5kaW5nLCBjdXIgLSAxKSwgdG0pOworICAgICAgICB9CisgICAgICAgIGJwID0gRm9y
bWF0T2Zmc2V0KGVwLCBhbC5vZmZzZXQsICI6Iik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoYnAs
IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihlcCAtIGJwKSk7CisgICAgICAgIHBlbmRpbmcgPSBj
dXIgKz0gMjsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAoKihjdXIgKyAx
KSA9PSAnOicgJiYgY3VyICsgMiAhPSBlbmQpIHsKKyAgICAgICAgaWYgKCooY3VyICsgMikgPT0g
J3onKSB7CisgICAgICAgICAgLy8gRm9ybWF0cyAlOjp6LgorICAgICAgICAgIGlmIChjdXIgLSAx
ICE9IHBlbmRpbmcpIHsKKyAgICAgICAgICAgIEZvcm1hdFRNKCZyZXN1bHQsIHN0ZDo6c3RyaW5n
KHBlbmRpbmcsIGN1ciAtIDEpLCB0bSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJwID0gRm9y
bWF0T2Zmc2V0KGVwLCBhbC5vZmZzZXQsICI6KiIpOworICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
YnAsIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihlcCAtIGJwKSk7CisgICAgICAgICAgcGVuZGlu
ZyA9IGN1ciArPSAzOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlm
ICgqKGN1ciArIDIpID09ICc6JyAmJiBjdXIgKyAzICE9IGVuZCkgeworICAgICAgICAgIGlmICgq
KGN1ciArIDMpID09ICd6JykgeworICAgICAgICAgICAgLy8gRm9ybWF0cyAlOjo6ei4KKyAgICAg
ICAgICAgIGlmIChjdXIgLSAxICE9IHBlbmRpbmcpIHsKKyAgICAgICAgICAgICAgRm9ybWF0VE0o
JnJlc3VsdCwgc3RkOjpzdHJpbmcocGVuZGluZywgY3VyIC0gMSksIHRtKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJwID0gRm9ybWF0T2Zmc2V0KGVwLCBhbC5vZmZzZXQsICI6KjoiKTsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnAsIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90Pihl
cCAtIGJwKSk7CisgICAgICAgICAgICBwZW5kaW5nID0gY3VyICs9IDQ7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKICAgICAv
LyBMb29wIGlmIHRoZXJlIGlzIG5vIEUgbW9kaWZpZXIuCiAgICAgaWYgKCpjdXIgIT0gJ0UnIHx8
ICsrY3VyID09IGVuZCkgY29udGludWU7CiAKQEAgLTY2OCwxNyArNzI2LDI3IEBAIGJvb2wgcGFy
c2UoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgJnBlcmNlbnRfcyk7CiAgICAgICAgIGlmIChkYXRhICE9
IG51bGxwdHIpIHNhd19wZXJjZW50X3MgPSB0cnVlOwogICAgICAgICBjb250aW51ZTsKKyAgICAg
IGNhc2UgJzonOgorICAgICAgICBpZiAoZm10WzBdID09ICd6JyB8fAorICAgICAgICAgICAgKGZt
dFswXSA9PSAnOicgJiYKKyAgICAgICAgICAgICAoZm10WzFdID09ICd6JyB8fCAoZm10WzFdID09
ICc6JyAmJiBmbXRbMl0gPT0gJ3onKSkpKSB7CisgICAgICAgICAgZGF0YSA9IFBhcnNlT2Zmc2V0
KGRhdGEsICI6IiwgJm9mZnNldCk7CisgICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbHB0cikgc2F3
X29mZnNldCA9IHRydWU7CisgICAgICAgICAgZm10ICs9IChmbXRbMF0gPT0gJ3onKSA/IDEgOiAo
Zm10WzFdID09ICd6JykgPyAyIDogMzsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKICAgICAgIGNhc2UgJyUnOgogICAgICAgICBkYXRhID0gKCpkYXRhID09
ICclJyA/IGRhdGEgKyAxIDogbnVsbHB0cik7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgY2Fz
ZSAnRSc6Ci0gICAgICAgIGlmICgqZm10ID09ICd6JyB8fCAoKmZtdCA9PSAnKicgJiYgKihmbXQg
KyAxKSA9PSAneicpKSB7CisgICAgICAgIGlmIChmbXRbMF0gPT0gJ3onIHx8IChmbXRbMF0gPT0g
JyonICYmIGZtdFsxXSA9PSAneicpKSB7CiAgICAgICAgICAgZGF0YSA9IFBhcnNlT2Zmc2V0KGRh
dGEsICI6IiwgJm9mZnNldCk7CiAgICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbHB0cikgc2F3X29m
ZnNldCA9IHRydWU7Ci0gICAgICAgICAgZm10ICs9ICgqZm10ID09ICd6JykgPyAxIDogMjsKKyAg
ICAgICAgICBmbXQgKz0gKGZtdFswXSA9PSAneicpID8gMSA6IDI7CiAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCpmbXQgPT0gJyonICYmICooZm10ICsgMSkgPT0g
J1MnKSB7CisgICAgICAgIGlmIChmbXRbMF0gPT0gJyonICYmIGZtdFsxXSA9PSAnUycpIHsKICAg
ICAgICAgICBkYXRhID0gUGFyc2VJbnQoZGF0YSwgMiwgMCwgNjAsICZ0bS50bV9zZWMpOwogICAg
ICAgICAgIGlmIChkYXRhICE9IG51bGxwdHIgJiYgKmRhdGEgPT0gJy4nKSB7CiAgICAgICAgICAg
ICBkYXRhID0gUGFyc2VTdWJTZWNvbmRzKGRhdGEgKyAxLCAmc3Vic2Vjb25kcyk7CkBAIC02ODYs
MTQgKzc1NCwxNCBAQCBib29sIHBhcnNlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0
IHN0ZDo6c3RyaW5nJiBpbnB1dCwKICAgICAgICAgICBmbXQgKz0gMjsKICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoKmZtdCA9PSAnKicgJiYgKihmbXQgKyAxKSA9
PSAnZicpIHsKKyAgICAgICAgaWYgKGZtdFswXSA9PSAnKicgJiYgZm10WzFdID09ICdmJykgewog
ICAgICAgICAgIGlmIChkYXRhICE9IG51bGxwdHIgJiYgc3RkOjppc2RpZ2l0KCpkYXRhKSkgewog
ICAgICAgICAgICAgZGF0YSA9IFBhcnNlU3ViU2Vjb25kcyhkYXRhLCAmc3Vic2Vjb25kcyk7CiAg
ICAgICAgICAgfQogICAgICAgICAgIGZtdCArPSAyOwogICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIGlmICgqZm10ID09ICc0JyAmJiAqKGZtdCArIDEpID09ICdZJykgewor
ICAgICAgICBpZiAoZm10WzBdID09ICc0JyAmJiBmbXRbMV0gPT0gJ1knKSB7CiAgICAgICAgICAg
Y29uc3QgY2hhciogYnAgPSBkYXRhOwogICAgICAgICAgIGRhdGEgPSBQYXJzZUludChkYXRhLCA0
LCB5ZWFyX3R7LTk5OX0sIHllYXJfdHs5OTk5fSwgJnllYXIpOwogICAgICAgICAgIGlmIChkYXRh
ICE9IG51bGxwdHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX2Zvcm1hdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90
aW1lX3pvbmVfZm9ybWF0X3Rlc3QuY2MKaW5kZXggNmI5OTI4ZWQzMmYuLjcwNWNjZGNkY2M0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXRf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3Jt
YXRfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTY0
LDE3ICs2NCw2IEBAIHZvaWQgVGVzdEZvcm1hdFNwZWNpZmllcih0aW1lX3BvaW50PEQ+IHRwLCB0
aW1lX3pvbmUgdHosIGNvbnN0IHN0ZDo6c3RyaW5nJiBmbXQsCiAgIEVYUEVDVF9FUSgieHh4ICIg
KyBhbnMgKyAiIHl5eSIsIGZvcm1hdCgieHh4ICIgKyBmbXQgKyAiIHl5eSIsIHRwLCB0eikpOwog
fQogCi0vLyBUaGVzZSB0ZXN0cyBzb21ldGltZXMgcnVuIG9uIHBsYXRmb3JtcyB0aGF0IGhhdmUg
em9uZWluZm8gZGF0YSBzbyBvbGQKLS8vIHRoYXQgdGhlIHRyYW5zaXRpb24gd2UgYXJlIGF0dGVt
cHRpbmcgdG8gY2hlY2sgZG9lcyBub3QgZXhpc3QsIG1vc3QKLS8vIG5vdGFibHkgQW5kcm9pZCBl
bXVsYXRvcnMuICBGb3J0dW5hdGVseSwgQW5kcm9pZFpvbmVJbmZvU291cmNlIHN1cHBvcnRzCi0v
LyB0aW1lX3pvbmU6OnZlcnNpb24oKSBzbywgaW4gY2FzZXMgd2hlcmUgd2UndmUgbGVhcm5lZCB0
aGF0IGl0IG1hdHRlcnMsCi0vLyB3ZSBjYW4gbWFrZSB0aGUgY2hlY2sgY29uZGl0aW9uYWxseS4K
LWludCBWZXJzaW9uQ21wKHRpbWVfem9uZSB0eiwgY29uc3Qgc3RkOjpzdHJpbmcmIHRhcmdldCkg
ewotICBzdGQ6OnN0cmluZyB2ZXJzaW9uID0gdHoudmVyc2lvbigpOwotICBpZiAodmVyc2lvbi5l
bXB0eSgpICYmICF0YXJnZXQuZW1wdHkoKSkgcmV0dXJuIDE7ICAvLyB1bmtub3duID4ga25vd24K
LSAgcmV0dXJuIHZlcnNpb24uY29tcGFyZSh0YXJnZXQpOwotfQotCiB9ICAvLyBuYW1lc3BhY2UK
IAogLy8KQEAgLTE3NCw3ICsxNjMsOSBAQCBURVNUKEZvcm1hdCwgUG9zaXhDb252ZXJzaW9ucykg
ewogICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVNIiwgIjAwIik7CiAgIFRlc3RGb3Jt
YXRTcGVjaWZpZXIodHAsIHR6LCAiJVMiLCAiMDAiKTsKICAgVGVzdEZvcm1hdFNwZWNpZmllcih0
cCwgdHosICIlVSIsICIwMCIpOworI2lmICFkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQogICBUZXN0
Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV3IiwgIjQiKTsgIC8vIDQ9VGh1cnNkYXkKKyNlbmRp
ZgogICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVXIiwgIjAwIik7CiAgIFRlc3RGb3Jt
YXRTcGVjaWZpZXIodHAsIHR6LCAiJXkiLCAiNzAiKTsKICAgVGVzdEZvcm1hdFNwZWNpZmllcih0
cCwgdHosICIlWSIsICIxOTcwIik7CkBAIC00MzYsNTEgKzQyNywxNjUgQEAgVEVTVChGb3JtYXQs
IENvbXBhcmVFeHRlbmRTZWNvbmRzVnNTdWJzZWNvbmRzKSB7CiB9CiAKIFRFU1QoRm9ybWF0LCBF
eHRlbmRlZE9mZnNldCkgewotICBhdXRvIHRwID0gY2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21f
dGltZV90KDApOworICBjb25zdCBhdXRvIHRwID0gY2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21f
dGltZV90KDApOwogCi0gIHRpbWVfem9uZSB0eiA9IHV0Y190aW1lX3pvbmUoKTsKKyAgYXV0byB0
eiA9IGZpeGVkX3RpbWVfem9uZShhYnNsOjp0aW1lX2ludGVybmFsOjpjY3R6OjpzZWNvbmRzOjp6
ZXJvKCkpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV6IiwgIiswMDAwIik7Cisg
IFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIiswMDowMCIpOwogICBUZXN0Rm9y
bWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICIrMDA6MDAiKTsKIAotICBFWFBFQ1RfVFJVRShs
b2FkX3RpbWVfem9uZSgiQW1lcmljYS9OZXdfWW9yayIsICZ0eikpOwotICBUZXN0Rm9ybWF0U3Bl
Y2lmaWVyKHRwLCB0eiwgIiVFeiIsICItMDU6MDAiKTsKLQotICBFWFBFQ1RfVFJVRShsb2FkX3Rp
bWVfem9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZ0eikpOwotICBUZXN0Rm9ybWF0U3BlY2lm
aWVyKHRwLCB0eiwgIiVFeiIsICItMDg6MDAiKTsKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hy
b25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXoiLCAi
KzAwMDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOnoiLCAiKzAwOjAwIik7
CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6IiwgIiswMDowMCIpOwogCi0gIEVY
UEVDVF9UUlVFKGxvYWRfdGltZV96b25lKCJBdXN0cmFsaWEvU3lkbmV5IiwgJnR6KSk7Ci0gIFRl
c3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6IiwgIisxMDowMCIpOworICB0eiA9IGZpeGVk
X3RpbWVfem9uZSgtY2hyb25vOjpzZWNvbmRzKDU2KSk7ICAvLyBOT1RFOiArMDA6MDAKKyAgVGVz
dEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIleiIsICIrMDAwMCIpOworICBUZXN0Rm9ybWF0U3Bl
Y2lmaWVyKHRwLCB0eiwgIiU6eiIsICIrMDA6MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0
cCwgdHosICIlRXoiLCAiKzAwOjAwIik7CiAKLSAgRVhQRUNUX1RSVUUobG9hZF90aW1lX3pvbmUo
IkFmcmljYS9Nb25yb3ZpYSIsICZ0eikpOwotICAvLyBUaGUgdHJ1ZSBvZmZzZXQgaXMgLTAwOjQ0
OjMwIGJ1dCAleiBvbmx5IGdpdmVzICh0cnVuY2F0ZWQpIG1pbnV0ZXMuCi0gIFRlc3RGb3JtYXRT
cGVjaWZpZXIodHAsIHR6LCAiJXoiLCAiLTAwNDQiKTsKLSAgVGVzdEZvcm1hdFNwZWNpZmllcih0
cCwgdHosICIlRXoiLCAiLTAwOjQ0Iik7CisgIHR6ID0gZml4ZWRfdGltZV96b25lKGNocm9ubzo6
bWludXRlcygzNCkpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV6IiwgIiswMDM0
Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIiswMDozNCIpOworICBU
ZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICIrMDA6MzQiKTsKKworICB0eiA9IGZp
eGVkX3RpbWVfem9uZSgtY2hyb25vOjptaW51dGVzKDM0KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZp
ZXIodHAsIHR6LCAiJXoiLCAiLTAwMzQiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHos
ICIlOnoiLCAiLTAwOjM0Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6Iiwg
Ii0wMDozNCIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKGNocm9ubzo6bWludXRlcygzNCkg
KyBjaHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIl
eiIsICIrMDAzNCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6eiIsICIrMDA6
MzQiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiKzAwOjM0Iik7CisK
KyAgdHogPSBmaXhlZF90aW1lX3pvbmUoLWNocm9ubzo6bWludXRlcygzNCkgLSBjaHJvbm86OnNl
Y29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIleiIsICItMDAzNCIp
OworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6eiIsICItMDA6MzQiKTsKKyAgVGVz
dEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiLTAwOjM0Iik7CisKKyAgdHogPSBmaXhl
ZF90aW1lX3pvbmUoY2hyb25vOjpob3VycygxMikpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiV6IiwgIisxMjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6
IiwgIisxMjowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICIrMTI6
MDAiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgtY2hyb25vOjpob3VycygxMikpOworICBU
ZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV6IiwgIi0xMjAwIik7CisgIFRlc3RGb3JtYXRT
cGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIi0xMjowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiVFeiIsICItMTI6MDAiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZShjaHJv
bm86OmhvdXJzKDEyKSArIGNocm9ubzo6c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0U3BlY2lm
aWVyKHRwLCB0eiwgIiV6IiwgIisxMjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6
LCAiJTp6IiwgIisxMjowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIs
ICIrMTI6MDAiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgtY2hyb25vOjpob3VycygxMikg
LSBjaHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIl
eiIsICItMTIwMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6eiIsICItMTI6
MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiLTEyOjAwIik7CisK
KyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hyb25vOjpob3VycygxMikgKyBjaHJvbm86Om1pbnV0
ZXMoMzQpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIleiIsICIrMTIzNCIpOwor
ICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6eiIsICIrMTI6MzQiKTsKKyAgVGVzdEZv
cm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiKzEyOjM0Iik7CisKKyAgdHogPSBmaXhlZF90
aW1lX3pvbmUoLWNocm9ubzo6aG91cnMoMTIpIC0gY2hyb25vOjptaW51dGVzKDM0KSk7CisgIFRl
c3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXoiLCAiLTEyMzQiKTsKKyAgVGVzdEZvcm1hdFNw
ZWNpZmllcih0cCwgdHosICIlOnoiLCAiLTEyOjM0Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIo
dHAsIHR6LCAiJUV6IiwgIi0xMjozNCIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKGNocm9u
bzo6aG91cnMoMTIpICsgY2hyb25vOjptaW51dGVzKDM0KSArCisgICAgICAgICAgICAgICAgICAg
ICAgIGNocm9ubzo6c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwg
IiV6IiwgIisxMjM0Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIisx
MjozNCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICIrMTI6MzQiKTsK
KworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgtY2hyb25vOjpob3VycygxMikgLSBjaHJvbm86Om1p
bnV0ZXMoMzQpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgY2hyb25vOjpzZWNvbmRzKDU2KSk7
CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXoiLCAiLTEyMzQiKTsKKyAgVGVzdEZv
cm1hdFNwZWNpZmllcih0cCwgdHosICIlOnoiLCAiLTEyOjM0Iik7CisgIFRlc3RGb3JtYXRTcGVj
aWZpZXIodHAsIHR6LCAiJUV6IiwgIi0xMjozNCIpOwogfQogCiBURVNUKEZvcm1hdCwgRXh0ZW5k
ZWRTZWNvbmRPZmZzZXQpIHsKLSAgY29uc3QgdGltZV96b25lIHV0YyA9IHV0Y190aW1lX3pvbmUo
KTsKLSAgdGltZV9wb2ludDxjaHJvbm86OnNlY29uZHM+IHRwOwotICB0aW1lX3pvbmUgdHo7Ci0K
LSAgRVhQRUNUX1RSVUUobG9hZF90aW1lX3pvbmUoIkFtZXJpY2EvTmV3X1lvcmsiLCAmdHopKTsK
LSAgdHAgPSBjb252ZXJ0KGNpdmlsX3NlY29uZCgxODgzLCAxMSwgMTgsIDE2LCA1OSwgNTkpLCB1
dGMpOwotICBpZiAodHoubG9va3VwKHRwKS5vZmZzZXQgPT0gLTUgKiA2MCAqIDYwKSB7Ci0gICAg
Ly8gSXQgbG9va3MgbGlrZSB0aGUgdHpkYXRhIGlzIG9ubHkgMzIgYml0IChwcm9iYWJseSBtYWNP
UyksCi0gICAgLy8gd2hpY2ggYm90dG9tcyBvdXQgYXQgMTkwMS0xMi0xM1QyMDo0NTo1MiswMDow
MC4KLSAgfSBlbHNlIHsKLSAgICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFKnoiLCAi
LTA0OjU2OjAyIik7Ci0gICAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiLTA0
OjU2Iik7Ci0gIH0KLSAgdHAgKz0gY2hyb25vOjpzZWNvbmRzKDEpOwotICBUZXN0Rm9ybWF0U3Bl
Y2lmaWVyKHRwLCB0eiwgIiVFKnoiLCAiLTA1OjAwOjAwIik7Ci0KLSAgRVhQRUNUX1RSVUUobG9h
ZF90aW1lX3pvbmUoIkV1cm9wZS9Nb3Njb3ciLCAmdHopKTsKLSAgdHAgPSBjb252ZXJ0KGNpdmls
X3NlY29uZCgxOTE5LCA2LCAzMCwgMjMsIDU5LCA1OSksIHV0Yyk7Ci0gIGlmIChWZXJzaW9uQ21w
KHR6LCAiMjAxNmciKSA+PSAwKSB7Ci0gICAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIl
RSp6IiwgIiswNDozMToxOSIpOwotICAgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6
IiwgIiswNDozMSIpOwotICB9Ci0gIHRwICs9IGNocm9ubzo6c2Vjb25kcygxKTsKLSAgVGVzdEZv
cm1hdFNwZWNpZmllcih0cCwgdHosICIlRSp6IiwgIiswNDowMDowMCIpOworICBjb25zdCBhdXRv
IHRwID0gY2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KDApOworCisgIGF1dG8gdHog
PSBmaXhlZF90aW1lX3pvbmUoYWJzbDo6dGltZV9pbnRlcm5hbDo6Y2N0ejo6c2Vjb25kczo6emVy
bygpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRSp6IiwgIiswMDowMDowMCIp
OworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6OnoiLCAiKzAwOjAwOjAwIik7Cisg
IFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6OnoiLCAiKzAwIik7CisKKyAgdHogPSBm
aXhlZF90aW1lX3pvbmUoY2hyb25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZp
ZXIodHAsIHR6LCAiJUUqeiIsICIrMDA6MDA6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0
cCwgdHosICIlOjp6IiwgIiswMDowMDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0
eiwgIiU6Ojp6IiwgIiswMDowMDo1NiIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJv
bm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRSp6Iiwg
Ii0wMDowMDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6OnoiLCAiLTAw
OjAwOjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6OnoiLCAiLTAwOjAw
OjU2Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hyb25vOjptaW51dGVzKDM0KSk7Cisg
IFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUUqeiIsICIrMDA6MzQ6MDAiKTsKKyAgVGVz
dEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOjp6IiwgIiswMDozNDowMCIpOworICBUZXN0Rm9y
bWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6Ojp6IiwgIiswMDozNCIpOworCisgIHR6ID0gZml4ZWRf
dGltZV96b25lKC1jaHJvbm86Om1pbnV0ZXMoMzQpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0
cCwgdHosICIlRSp6IiwgIi0wMDozNDowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0
eiwgIiU6OnoiLCAiLTAwOjM0OjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAi
JTo6OnoiLCAiLTAwOjM0Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hyb25vOjptaW51
dGVzKDM0KSArIGNocm9ubzo6c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiVFKnoiLCAiKzAwOjM0OjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6
LCAiJTo6eiIsICIrMDA6MzQ6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIl
Ojo6eiIsICIrMDA6MzQ6NTYiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgtY2hyb25vOjpt
aW51dGVzKDM0KSAtIGNocm9ubzo6c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiVFKnoiLCAiLTAwOjM0OjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAs
IHR6LCAiJTo6eiIsICItMDA6MzQ6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHos
ICIlOjo6eiIsICItMDA6MzQ6NTYiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZShjaHJvbm86
OmhvdXJzKDEyKSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUUqeiIsICIrMTI6
MDA6MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOjp6IiwgIisxMjowMDow
MCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6Ojp6IiwgIisxMiIpOworCisg
IHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJvbm86OmhvdXJzKDEyKSk7CisgIFRlc3RGb3JtYXRT
cGVjaWZpZXIodHAsIHR6LCAiJUUqeiIsICItMTI6MDA6MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNp
Zmllcih0cCwgdHosICIlOjp6IiwgIi0xMjowMDowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiU6Ojp6IiwgIi0xMiIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKGNocm9u
bzo6aG91cnMoMTIpICsgY2hyb25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZp
ZXIodHAsIHR6LCAiJUUqeiIsICIrMTI6MDA6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0
cCwgdHosICIlOjp6IiwgIisxMjowMDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0
eiwgIiU6Ojp6IiwgIisxMjowMDo1NiIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJv
bm86OmhvdXJzKDEyKSAtIGNocm9ubzo6c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0U3BlY2lm
aWVyKHRwLCB0eiwgIiVFKnoiLCAiLTEyOjAwOjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIo
dHAsIHR6LCAiJTo6eiIsICItMTI6MDA6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwg
dHosICIlOjo6eiIsICItMTI6MDA6NTYiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZShjaHJv
bm86OmhvdXJzKDEyKSArIGNocm9ubzo6bWludXRlcygzNCkpOworICBUZXN0Rm9ybWF0U3BlY2lm
aWVyKHRwLCB0eiwgIiVFKnoiLCAiKzEyOjM0OjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIo
dHAsIHR6LCAiJTo6eiIsICIrMTI6MzQ6MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwg
dHosICIlOjo6eiIsICIrMTI6MzQiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgtY2hyb25v
Ojpob3VycygxMikgLSBjaHJvbm86Om1pbnV0ZXMoMzQpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmll
cih0cCwgdHosICIlRSp6IiwgIi0xMjozNDowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiU6OnoiLCAiLTEyOjM0OjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6
LCAiJTo6OnoiLCAiLTEyOjM0Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hyb25vOjpo
b3VycygxMikgKyBjaHJvbm86Om1pbnV0ZXMoMzQpICsKKyAgICAgICAgICAgICAgICAgICAgICAg
Y2hyb25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUUq
eiIsICIrMTI6MzQ6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOjp6Iiwg
IisxMjozNDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6Ojp6IiwgIisx
MjozNDo1NiIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJvbm86OmhvdXJzKDEyKSAt
IGNocm9ubzo6bWludXRlcygzNCkgLQorICAgICAgICAgICAgICAgICAgICAgICBjaHJvbm86OnNl
Y29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRSp6IiwgIi0xMjoz
NDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6OnoiLCAiLTEyOjM0OjU2
Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6OnoiLCAiLTEyOjM0OjU2Iik7
CiB9CiAKIFRFU1QoRm9ybWF0LCBFeHRlbmRlZFllYXJzKSB7CkBAIC0xMTYwLDI1ICsxMjY1LDYg
QEAgVEVTVChQYXJzZSwgRXh0ZW5kZWRPZmZzZXQpIHsKICAgY29uc3QgdGltZV96b25lIHV0YyA9
IHV0Y190aW1lX3pvbmUoKTsKICAgdGltZV9wb2ludDxhYnNsOjp0aW1lX2ludGVybmFsOjpjY3R6
OjpzZWNvbmRzPiB0cDsKIAotICAvLyAleiBhZ2FpbnN0ICstSEhNTS4KLSAgRVhQRUNUX1RSVUUo
cGFyc2UoIiV6IiwgIiswMDAwIiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2
aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAsIDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVF
KHBhcnNlKCIleiIsICItMTIzNCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNp
dmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMzQsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9U
UlVFKHBhcnNlKCIleiIsICIrMTIzNCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0
KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDExLCAyNiwgMCksIHV0YyksIHRwKTsKLSAgRVhQ
RUNUX0ZBTFNFKHBhcnNlKCIleiIsICItMTIzIiwgdXRjLCAmdHApKTsKLQotICAvLyAleiBhZ2Fp
bnN0ICstSEguCi0gIEVYUEVDVF9UUlVFKHBhcnNlKCIleiIsICIrMDAiLCB1dGMsICZ0cCkpOwot
ICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0
YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiV6IiwgIi0xMiIsIHV0YywgJnRwKSk7Ci0g
IEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMCwgMCksIHV0
YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiV6IiwgIisxMiIsIHV0YywgJnRwKSk7Ci0g
IEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDEyLCAwLCAwKSwg
dXRjKSwgdHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2UoIiV6IiwgIi0xIiwgdXRjLCAmdHApKTsK
LQotICAvLyAlRXogYWdhaW5zdCArLUhIOk1NLgogICBFWFBFQ1RfVFJVRShwYXJzZSgiJUV6Iiwg
IiswMDowMCIsIHV0YywgJnRwKSk7CiAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgx
OTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOwogICBFWFBFQ1RfVFJVRShwYXJzZSgiJUV6
IiwgIi0xMjozNCIsIHV0YywgJnRwKSk7CkBAIC0xMTg3LDkxICsxMjczLDcwIEBAIFRFU1QoUGFy
c2UsIEV4dGVuZGVkT2Zmc2V0KSB7CiAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgx
OTY5LCAxMiwgMzEsIDExLCAyNiwgMCksIHV0YyksIHRwKTsKICAgRVhQRUNUX0ZBTFNFKHBhcnNl
KCIlRXoiLCAiLTEyOjMiLCB1dGMsICZ0cCkpOwogCi0gIC8vICVFeiBhZ2FpbnN0ICstSEhNTS4K
LSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFeiIsICIrMDAwMCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVD
VF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHAp
OwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUV6IiwgIi0xMjM0IiwgdXRjLCAmdHApKTsKLSAgRVhQ
RUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAzNCwgMCksIHV0Yyks
IHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFeiIsICIrMTIzNCIsIHV0YywgJnRwKSk7Ci0g
IEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDExLCAyNiwgMCks
IHV0YyksIHRwKTsKLSAgRVhQRUNUX0ZBTFNFKHBhcnNlKCIlRXoiLCAiLTEyMyIsIHV0YywgJnRw
KSk7Ci0KLSAgLy8gJUV6IGFnYWluc3QgKy1ISC4KLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFeiIs
ICIrMDAiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3
MCwgMSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFeiIs
ICItMTIiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3
MCwgMSwgMSwgMTIsIDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRXoi
LCAiKzEyIiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5
NjksIDEyLCAzMSwgMTIsIDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9GQUxTRShwYXJzZSgi
JUV6IiwgIi0xIiwgdXRjLCAmdHApKTsKKyAgZm9yIChhdXRvIGZtdCA6IHsiJUV6IiwgIiV6In0p
IHsKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMDAwMCIsIHV0YywgJnRwKSk7CisgICAg
RVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAsIDAsIDApLCB1dGMp
LCB0cCk7CisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10LCAiLTEyMzQiLCB1dGMsICZ0cCkpOwor
ICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMzQsIDAp
LCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10LCAiKzEyMzQiLCB1dGMsICZ0
cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDEx
LCAyNiwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfRkFMU0UocGFyc2UoZm10LCAiLTEyMyIs
IHV0YywgJnRwKSk7CisKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMDAiLCB1dGMsICZ0
cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAw
LCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwgIi0xMiIsIHV0Yywg
JnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDEy
LCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwgIisxMiIsIHV0
YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAz
MSwgMTIsIDAsIDApLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX0ZBTFNFKHBhcnNlKGZtdCwgIi0x
IiwgdXRjLCAmdHApKTsKKyAgfQogfQogCiBURVNUKFBhcnNlLCBFeHRlbmRlZFNlY29uZE9mZnNl
dCkgewogICBjb25zdCB0aW1lX3pvbmUgdXRjID0gdXRjX3RpbWVfem9uZSgpOwogICB0aW1lX3Bv
aW50PGFic2w6OnRpbWVfaW50ZXJuYWw6OmNjdHo6OnNlY29uZHM+IHRwOwogCi0gIC8vICVFeiBh
Z2FpbnN0ICstSEg6TU06U1MuCi0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRXoiLCAiKzAwOjAwOjAw
IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEs
IDEsIDAsIDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRXoiLCAiLTEy
OjM0OjU2IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5
NzAsIDEsIDEsIDEyLCAzNCwgNTYpLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIl
RXoiLCAiKzEyOjM0OjU2IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxf
c2Vjb25kKDE5NjksIDEyLCAzMSwgMTEsIDI1LCA0KSwgdXRjKSwgdHApOwotICBFWFBFQ1RfRkFM
U0UocGFyc2UoIiVFeiIsICItMTI6MzQ6NSIsIHV0YywgJnRwKSk7Ci0KLSAgLy8gJUV6IGFnYWlu
c3QgKy1ISE1NU1MuCi0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRXoiLCAiKzAwMDAwMCIsIHV0Yywg
JnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAw
LCAwKSwgdXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUV6IiwgIi0xMjM0NTYiLCB1
dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwg
MTIsIDM0LCA1NiksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFeiIsICIrMTIz
NDU2IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5Njks
IDEyLCAzMSwgMTEsIDI1LCA0KSwgdXRjKSwgdHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2UoIiVF
eiIsICItMTIzNDUiLCB1dGMsICZ0cCkpOwotCi0gIC8vICVFKnogYWdhaW5zdCArLUhIOk1NOlNT
LgotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUUqeiIsICIrMDA6MDA6MDAiLCB1dGMsICZ0cCkpOwot
ICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0
YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAiLTEyOjM0OjU2IiwgdXRjLCAm
dHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAz
NCwgNTYpLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIisxMjozNDo1
NiIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAx
MiwgMzEsIDExLCAyNSwgNCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX0ZBTFNFKHBhcnNlKCIlRSp6
IiwgIi0xMjozNDo1IiwgdXRjLCAmdHApKTsKLQotICAvLyAlRSp6IGFnYWluc3QgKy1ISE1NU1Mu
Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIiswMDAwMDAiLCB1dGMsICZ0cCkpOwotICBF
WFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0Yyks
IHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAiLTEyMzQ1NiIsIHV0YywgJnRwKSk7
Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMzQsIDU2
KSwgdXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUUqeiIsICIrMTIzNDU2IiwgdXRj
LCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwg
MTEsIDI1LCA0KSwgdXRjKSwgdHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2UoIiVFKnoiLCAiLTEy
MzQ1IiwgdXRjLCAmdHApKTsKLQotICAvLyAlRSp6IGFnYWluc3QgKy1ISDpNTS4KLSAgRVhQRUNU
X1RSVUUocGFyc2UoIiVFKnoiLCAiKzAwOjAwIiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNv
bnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAsIDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVY
UEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIi0xMjozNCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9F
UShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMzQsIDApLCB1dGMpLCB0cCk7
Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIisxMjozNCIsIHV0YywgJnRwKSk7Ci0gIEVY
UEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDExLCAyNiwgMCksIHV0
YyksIHRwKTsKLSAgRVhQRUNUX0ZBTFNFKHBhcnNlKCIlRSp6IiwgIi0xMjozIiwgdXRjLCAmdHAp
KTsKLQotICAvLyAlRSp6IGFnYWluc3QgKy1ISE1NLgotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUUq
eiIsICIrMDAwMCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29u
ZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgi
JUUqeiIsICItMTIzNCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3Nl
Y29uZCgxOTcwLCAxLCAxLCAxMiwgMzQsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBh
cnNlKCIlRSp6IiwgIisxMjM0IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2
aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTEsIDI2LCAwKSwgdXRjKSwgdHApOwotICBFWFBFQ1Rf
RkFMU0UocGFyc2UoIiVFKnoiLCAiLTEyMyIsIHV0YywgJnRwKSk7Ci0KLSAgLy8gJUUqeiBhZ2Fp
bnN0ICstSEguCi0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIiswMCIsIHV0YywgJnRwKSk7
Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwg
dXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUUqeiIsICItMTIiLCB1dGMsICZ0cCkp
OwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMTIsIDAsIDAp
LCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIisxMiIsIHV0YywgJnRw
KSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDEyLCAw
LCAwKSwgdXRjKSwgdHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2UoIiVFKnoiLCAiLTEiLCB1dGMs
ICZ0cCkpOworICBmb3IgKGF1dG8gZm10IDogeyIlRXoiLCAiJUUqeiIsICIlOnoiLCAiJTo6eiIs
ICIlOjo6eiJ9KSB7CisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10LCAiKzAwOjAwOjAwIiwgdXRj
LCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwg
MCwgMCwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICItMTI6MzQ6
NTYiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcw
LCAxLCAxLCAxMiwgMzQsIDU2KSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZt
dCwgIisxMjozNDo1NiIsIHV0YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxf
c2Vjb25kKDE5NjksIDEyLCAzMSwgMTEsIDI1LCA0KSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9G
QUxTRShwYXJzZShmbXQsICItMTI6MzQ6NSIsIHV0YywgJnRwKSk7CisKKyAgICBFWFBFQ1RfVFJV
RShwYXJzZShmbXQsICIrMDAwMDAwIiwgdXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVy
dChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBF
Q1RfVFJVRShwYXJzZShmbXQsICItMTIzNDU2IiwgdXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEo
Y29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMTIsIDM0LCA1NiksIHV0YyksIHRwKTsK
KyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMTIzNDU2IiwgdXRjLCAmdHApKTsKKyAgICBF
WFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk2OSwgMTIsIDMxLCAxMSwgMjUsIDQpLCB1
dGMpLCB0cCk7CisgICAgRVhQRUNUX0ZBTFNFKHBhcnNlKGZtdCwgIi0xMjM0NSIsIHV0YywgJnRw
KSk7CisKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMDA6MDAiLCB1dGMsICZ0cCkpOwor
ICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwg
dXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwgIi0xMjozNCIsIHV0YywgJnRw
KSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAz
NCwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMTI6MzQiLCB1
dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwg
MzEsIDExLCAyNiwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfRkFMU0UocGFyc2UoZm10LCAi
LTEyOjMiLCB1dGMsICZ0cCkpOworCisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10LCAiKzAwMDAi
LCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAx
LCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwgIi0x
MjM0IiwgdXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3
MCwgMSwgMSwgMTIsIDM0LCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZt
dCwgIisxMjM0IiwgdXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNv
bmQoMTk2OSwgMTIsIDMxLCAxMSwgMjYsIDApLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX0ZBTFNF
KHBhcnNlKGZtdCwgIi0xMjMiLCB1dGMsICZ0cCkpOworCisgICAgRVhQRUNUX1RSVUUocGFyc2Uo
Zm10LCAiKzAwIiwgdXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNv
bmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJz
ZShmbXQsICItMTIiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3Nl
Y29uZCgxOTcwLCAxLCAxLCAxMiwgMCwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfVFJVRShw
YXJzZShmbXQsICIrMTIiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmls
X3NlY29uZCgxOTY5LCAxMiwgMzEsIDEyLCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9G
QUxTRShwYXJzZShmbXQsICItMSIsIHV0YywgJnRwKSk7CisgIH0KIH0KIAogVEVTVChQYXJzZSwg
RXh0ZW5kZWRZZWFycykgewpAQCAtMTM5MCw2ICsxNDU1LDEwIEBAIFRFU1QoRm9ybWF0UGFyc2Us
IFJvdW5kVHJpcCkgewogI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkKICAg
Ly8gSW5pdGlhbCBpbnZlc3RpZ2F0aW9ucyBpbmRpY2F0ZSB0aGUgJWMgZG9lcyBub3Qgcm91bmR0
cmlwIG9uIFdpbmRvd3MuCiAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2hhdCBpcyBnb2luZyBvbiBo
ZXJlIChwZXJoYXBzIGEgbG9jYWxlIHByb2JsZW0pLgorI2VsaWYgZGVmaW5lZChfX0VNU0NSSVBU
RU5fXykKKyAgLy8gc3RyZnRpbWUoKSBhbmQgc3RycHRpbWUoKSB1c2UgZGlmZmVyZW50IGRlZmlu
dGlvbnMgZm9yICIlYyIgdW5kZXIKKyAgLy8gZW1zY3JpcHRlbiAoc2VlIGh0dHBzOi8vZ2l0aHVi
LmNvbS9rcmlwa2VuL2Vtc2NyaXB0ZW4vcHVsbC83NDkxKSwKKyAgLy8gY2F1c2luZyBpdHMgcm91
bmQtdHJpcCB0ZXN0IHRvIGZhaWwuCiAjZWxzZQogICAvLyBFdmVuIHRob3VnaCB3ZSBkb24ndCBr
bm93IHdoYXQgJWMgd2lsbCBwcm9kdWNlLCBpdCBzaG91bGQgcm91bmR0cmlwLAogICAvLyBidXQg
b25seSBpbiB0aGUgMC1vZmZzZXQgdGltZXpvbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pZi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei9zcmMvdGltZV96b25lX2lmLmNjCmluZGV4IDM4MDgzNGExNzJhLi4wOWFhZWU1ZmI0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaWYuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaWYuY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pZi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy90aW1lX3pvbmVfaWYuaAppbmRleCBlNGJkMzg2NmE4Ny4uZDAwMGI3YTVmNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2lmLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaWYuaApAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAg
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei9zcmMvdGltZV96b25lX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
c3JjL3RpbWVfem9uZV9pbXBsLmNjCmluZGV4IDMwNjJjY2QzY2ViLi4zY2JjNjc0NjUzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW1wbC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbXBsLmNjCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3NyYy90aW1lX3pvbmVfaW1wbC5oCmluZGV4IDE0OTY1ZWY1NGJmLi5iNzNmYWQ5YmI4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW1w
bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ltcGwuaApA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmNjCmluZGV4IDJjYjM1OGQwNDhlLi45ZGI3
MmUwYzUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pv
bmVfaW5mby5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9p
bmZvLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjUsNyAr
MjUsNyBAQAogLy8gYSBncmFpbiBvZiBzYWx0LgogLy8KIC8vIEZvciBtb3JlIGluZm9ybWF0aW9u
IHNlZSB0emZpbGUoNSksIGh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcywgb3IKLS8vIGh0
dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWm9uZWluZm8uCisvLyBodHRwczovL2VuLndpa2lw
ZWRpYS5vcmcvd2lraS9ab25laW5mby4KIC8vCiAvLyBOb3RlIHRoYXQgd2UgYXNzdW1lIHRoZSBw
cm9sZXB0aWMgR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCA2MC1zZWNvbmQKIC8vIG1pbnV0ZXMgdGhy
b3VnaG91dC4KQEAgLTIzOSw4ICsyMzksOCBAQCBib29sIFRpbWVab25lSW5mbzo6SGVhZGVyOjpC
dWlsZChjb25zdCB0emhlYWQmIHR6aCkgewogICBsZWFwY250ID0gc3RhdGljX2Nhc3Q8c3RkOjpz
aXplX3Q+KHYpOwogICBpZiAoKHYgPSBEZWNvZGUzMih0emgudHpoX3R0aXNzdGRjbnQpKSA8IDAp
IHJldHVybiBmYWxzZTsKICAgdHRpc3N0ZGNudCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90Pih2
KTsKLSAgaWYgKCh2ID0gRGVjb2RlMzIodHpoLnR6aF90dGlzZ210Y250KSkgPCAwKSByZXR1cm4g
ZmFsc2U7Ci0gIHR0aXNnbXRjbnQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4odik7CisgIGlm
ICgodiA9IERlY29kZTMyKHR6aC50emhfdHRpc3V0Y250KSkgPCAwKSByZXR1cm4gZmFsc2U7Cisg
IHR0aXN1dGNudCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90Pih2KTsKICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGQ6OnNpemVfdCBUaW1lWm9uZUluZm86OkhlYWRl
cjo6RGF0YUxlbmd0aChzdGQ6OnNpemVfdCB0aW1lX2xlbikgY29uc3QgewogICBsZW4gKz0gMSAq
IGNoYXJjbnQ7ICAgICAgICAgICAgICAgLy8gYWJicmV2aWF0aW9ucwogICBsZW4gKz0gKHRpbWVf
bGVuICsgNCkgKiBsZWFwY250OyAgLy8gbGVhcC10aW1lICsgVEFJLVVUQwogICBsZW4gKz0gMSAq
IHR0aXNzdGRjbnQ7ICAgICAgICAgICAgLy8gVVRDL2xvY2FsIGluZGljYXRvcnMKLSAgbGVuICs9
IDEgKiB0dGlzZ210Y250OyAgICAgICAgICAgIC8vIHN0YW5kYXJkL3dhbGwgaW5kaWNhdG9ycwor
ICBsZW4gKz0gMSAqIHR0aXN1dGNudDsgICAgICAgICAgICAgLy8gc3RhbmRhcmQvd2FsbCBpbmRp
Y2F0b3JzCiAgIHJldHVybiBsZW47CiB9CiAKQEAgLTQyNyw3ICs0MjcsNyBAQCBib29sIFRpbWVa
b25lSW5mbzo6TG9hZChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgWm9uZUluZm9Tb3VyY2UqIHpp
cCkgewogICB9CiAgIGlmIChoZHIudHRpc3N0ZGNudCAhPSAwICYmIGhkci50dGlzc3RkY250ICE9
IGhkci50eXBlY250KQogICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKGhkci50dGlzZ210Y250ICE9
IDAgJiYgaGRyLnR0aXNnbXRjbnQgIT0gaGRyLnR5cGVjbnQpCisgIGlmIChoZHIudHRpc3V0Y250
ICE9IDAgJiYgaGRyLnR0aXN1dGNudCAhPSBoZHIudHlwZWNudCkKICAgICByZXR1cm4gZmFsc2U7
CiAKICAgLy8gUmVhZCB0aGUgZGF0YSBpbnRvIGEgbG9jYWwgYnVmZmVyLgpAQCAtNDk4LDE2ICs0
OTgsMTYgQEAgYm9vbCBUaW1lWm9uZUluZm86OkxvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUs
IFpvbmVJbmZvU291cmNlKiB6aXApIHsKICAgLy8gdGhhdCBpc24ndCB0aGUgY2FzZSBoZXJlIChz
ZWUgInppYyAtcCIpLgogICBicCArPSAoOCArIDQpICogaGRyLmxlYXBjbnQ7ICAvLyBsZWFwLXRp
bWUgKyBUQUktVVRDCiAgIGJwICs9IDEgKiBoZHIudHRpc3N0ZGNudDsgICAgIC8vIFVUQy9sb2Nh
bCBpbmRpY2F0b3JzCi0gIGJwICs9IDEgKiBoZHIudHRpc2dtdGNudDsgICAgIC8vIHN0YW5kYXJk
L3dhbGwgaW5kaWNhdG9ycworICBicCArPSAxICogaGRyLnR0aXN1dGNudDsgICAgICAvLyBzdGFu
ZGFyZC93YWxsIGluZGljYXRvcnMKICAgYXNzZXJ0KGJwID09IHRidWYuZGF0YSgpICsgdGJ1Zi5z
aXplKCkpOwogCiAgIGZ1dHVyZV9zcGVjXy5jbGVhcigpOwogICBpZiAodHpoLnR6aF92ZXJzaW9u
WzBdICE9ICdcMCcpIHsKICAgICAvLyBTbmFyZiB1cCB0aGUgTkwtZW5jbG9zZWQgZnV0dXJlIFBP
U0lYIHNwZWMuIE5vdGUKICAgICAvLyB0aGF0IHZlcnNpb24gJzMnIGZpbGVzIHV0aWxpemUgYW4g
ZXh0ZW5kZWQgZm9ybWF0LgotICAgIGF1dG8gZ2V0X2NoYXIgPSBbXShab25lSW5mb1NvdXJjZSog
emlwKSAtPiBpbnQgeworICAgIGF1dG8gZ2V0X2NoYXIgPSBbXShab25lSW5mb1NvdXJjZSogYXpp
cCkgLT4gaW50IHsKICAgICAgIHVuc2lnbmVkIGNoYXIgY2g7ICAvLyBhbGwgbm9uLUVPRiByZXN1
bHRzIGFyZSBwb3NpdGl2ZQotICAgICAgcmV0dXJuICh6aXAtPlJlYWQoJmNoLCAxKSA9PSAxKSA/
IGNoIDogRU9GOworICAgICAgcmV0dXJuIChhemlwLT5SZWFkKCZjaCwgMSkgPT0gMSkgPyBjaCA6
IEVPRjsKICAgICB9OwogICAgIGlmIChnZXRfY2hhcih6aXApICE9ICdcbicpCiAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC02ODIsNyArNjgyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFpvbmVJbmZvU291
cmNlPiBBbmRyb2lkWm9uZUluZm9Tb3VyY2U6Ok9wZW4oCiAgIC8vIFVzZSBvZiB0aGUgImZpbGU6
IiBwcmVmaXggaXMgaW50ZW5kZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS4KICAgaWYgKG5h
bWUuY29tcGFyZSgwLCA1LCAiZmlsZToiKSA9PSAwKSByZXR1cm4gT3BlbihuYW1lLnN1YnN0cig1
KSk7CiAKLSNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQogICAvLyBTZWUgQW5kcm9pZCdzIGxpYmMv
dHpjb2RlL2Jpb25pYy5jcHAgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCiAgIGZvciAoY29u
c3QgY2hhciogdHpkYXRhIDogeyIvZGF0YS9taXNjL3pvbmVpbmZvL2N1cnJlbnQvdHpkYXRhIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9zeXN0ZW0vdXNyL3NoYXJlL3pvbmVpbmZv
L3R6ZGF0YSJ9KSB7CkBAIC03MTcsNyArNzE2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFpvbmVJbmZv
U291cmNlPiBBbmRyb2lkWm9uZUluZm9Tb3VyY2U6Ok9wZW4oCiAgICAgICB9CiAgICAgfQogICB9
Ci0jZW5kaWYgIC8vIF9fQU5EUk9JRF9fCisKICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTky
MSw3ICs5MjAsNyBAQCBib29sIFRpbWVab25lSW5mbzo6TmV4dFRyYW5zaXRpb24oY29uc3QgdGlt
ZV9wb2ludDxzZWNvbmRzPiYgdHAsCiAgICAgKytiZWdpbjsKICAgfQogICBzdGQ6OmludF9mYXN0
NjRfdCB1bml4X3RpbWUgPSBUb1VuaXhTZWNvbmRzKHRwKTsKLSAgY29uc3QgVHJhbnNpdGlvbiB0
YXJnZXQgPSB7IHVuaXhfdGltZSB9OworICBjb25zdCBUcmFuc2l0aW9uIHRhcmdldCA9IHt1bml4
X3RpbWUsIDAsIGNpdmlsX3NlY29uZCgpLCBjaXZpbF9zZWNvbmQoKX07CiAgIGNvbnN0IFRyYW5z
aXRpb24qIHRyID0gc3RkOjp1cHBlcl9ib3VuZChiZWdpbiwgZW5kLCB0YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uOjpCeVVuaXhUaW1l
KCkpOwogICBmb3IgKDsgdHIgIT0gZW5kOyArK3RyKSB7ICAvLyBza2lwIG5vLW9wIHRyYW5zaXRp
b25zCkBAIC05NTYsNyArOTU1LDcgQEAgYm9vbCBUaW1lWm9uZUluZm86OlByZXZUcmFuc2l0aW9u
KGNvbnN0IHRpbWVfcG9pbnQ8c2Vjb25kcz4mIHRwLAogICAgIH0KICAgICB1bml4X3RpbWUgKz0g
MTsgIC8vIGNlaWxzCiAgIH0KLSAgY29uc3QgVHJhbnNpdGlvbiB0YXJnZXQgPSB7IHVuaXhfdGlt
ZSB9OworICBjb25zdCBUcmFuc2l0aW9uIHRhcmdldCA9IHt1bml4X3RpbWUsIDAsIGNpdmlsX3Nl
Y29uZCgpLCBjaXZpbF9zZWNvbmQoKX07CiAgIGNvbnN0IFRyYW5zaXRpb24qIHRyID0gc3RkOjps
b3dlcl9ib3VuZChiZWdpbiwgZW5kLCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uOjpCeVVuaXhUaW1lKCkpOwogICBmb3IgKDsgdHIg
IT0gYmVnaW47IC0tdHIpIHsgIC8vIHNraXAgbm8tb3AgdHJhbnNpdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uaAppbmRleCA5NThlOWI2YmQ3NC4u
ODFjZDQwMmY5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGlt
ZV96b25lX2luZm8uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9u
ZV9pbmZvLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC04OCw3
ICs4OCw3IEBAIGNsYXNzIFRpbWVab25lSW5mbyA6IHB1YmxpYyBUaW1lWm9uZUlmIHsKICAgICBz
dGQ6OnNpemVfdCBjaGFyY250OyAgICAgLy8gem9uZSBhYmJyZXZpYXRpb24gY2hhcmFjdGVycwog
ICAgIHN0ZDo6c2l6ZV90IGxlYXBjbnQ7ICAgICAvLyBsZWFwIHNlY29uZHMgKHdlIGV4cGVjdCBu
b25lKQogICAgIHN0ZDo6c2l6ZV90IHR0aXNzdGRjbnQ7ICAvLyBVVEMvbG9jYWwgaW5kaWNhdG9y
cyAodW51c2VkKQotICAgIHN0ZDo6c2l6ZV90IHR0aXNnbXRjbnQ7ICAvLyBzdGFuZGFyZC93YWxs
IGluZGljYXRvcnMgKHVudXNlZCkKKyAgICBzdGQ6OnNpemVfdCB0dGlzdXRjbnQ7ICAgLy8gc3Rh
bmRhcmQvd2FsbCBpbmRpY2F0b3JzICh1bnVzZWQpCiAKICAgICBib29sIEJ1aWxkKGNvbnN0IHR6
aGVhZCYgdHpoKTsKICAgICBzdGQ6OnNpemVfdCBEYXRhTGVuZ3RoKHN0ZDo6c2l6ZV90IHRpbWVf
bGVuKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGlt
ZV96b25lX2xpYmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9s
aWJjLmNjCmluZGV4IDA3NGM4ZDBhNGE0Li42MDk1ZTc2NGRmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbGliYy5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmNjCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjAsNyArMjAsNyBAQAogCiAjaW5jbHVkZSA8Y2hyb25v
PgogI2luY2x1ZGUgPGN0aW1lPgotI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1ZGUgPGxpbWl0cz4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC90aW1lL2ludGVybmFsL2NjdHov
aW5jbHVkZS9jY3R6L2NpdmlsX3RpbWUuaCIKQEAgLTMyLDU5ICszMiwxNDcgQEAgbmFtZXNwYWNl
IGNjdHogewogCiBuYW1lc3BhY2UgewogCi0vLyAuZmlyc3QgaXMgc2Vjb25kcyBlYXN0IG9mIFVU
QzsgLnNlY29uZCBpcyB0aGUgdGltZS16b25lIGFiYnJldmlhdGlvbi4KLXVzaW5nIE9mZnNldEFi
YnIgPSBzdGQ6OnBhaXI8aW50LCBjb25zdCBjaGFyKj47Ci0KLS8vIERlZmluZXMgYSBmdW5jdGlv
biB0aGF0IGNhbiBiZSBjYWxsZWQgYXMgZm9sbG93czoKLS8vCi0vLyAgIHN0ZDo6dG0gdG0gPSAu
Li47Ci0vLyAgIE9mZnNldEFiYnIgb2ZmX2FiYnIgPSBnZXRfb2Zmc2V0X2FiYnIodG0pOwotLy8K
ICNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCiAvLyBVc2VzIHRoZSBnbG9i
YWxzOiAnX3RpbWV6b25lJywgJ19kc3RiaWFzJyBhbmQgJ190em5hbWUnLgotT2Zmc2V0QWJiciBn
ZXRfb2Zmc2V0X2FiYnIoY29uc3Qgc3RkOjp0bSYgdG0pIHsKK2F1dG8gdG1fZ210b2ZmKGNvbnN0
IHN0ZDo6dG0mIHRtKSAtPiBkZWNsdHlwZShfdGltZXpvbmUgKyBfZHN0YmlhcykgeworICBjb25z
dCBib29sIGlzX2RzdCA9IHRtLnRtX2lzZHN0ID4gMDsKKyAgcmV0dXJuIF90aW1lem9uZSArIChp
c19kc3QgPyBfZHN0YmlhcyA6IDApOworfQorYXV0byB0bV96b25lKGNvbnN0IHN0ZDo6dG0mIHRt
KSAtPiBkZWNsdHlwZShfdHpuYW1lWzBdKSB7CiAgIGNvbnN0IGJvb2wgaXNfZHN0ID0gdG0udG1f
aXNkc3QgPiAwOwotICBjb25zdCBpbnQgb2ZmID0gX3RpbWV6b25lICsgKGlzX2RzdCA/IF9kc3Ri
aWFzIDogMCk7Ci0gIGNvbnN0IGNoYXIqIGFiYnIgPSBfdHpuYW1lW2lzX2RzdF07Ci0gIHJldHVy
biB7b2ZmLCBhYmJyfTsKKyAgcmV0dXJuIF90em5hbWVbaXNfZHN0XTsKIH0KICNlbGlmIGRlZmlu
ZWQoX19zdW4pCiAvLyBVc2VzIHRoZSBnbG9iYWxzOiAndGltZXpvbmUnLCAnYWx0em9uZScgYW5k
ICd0em5hbWUnLgotT2Zmc2V0QWJiciBnZXRfb2Zmc2V0X2FiYnIoY29uc3Qgc3RkOjp0bSYgdG0p
IHsKK2F1dG8gdG1fZ210b2ZmKGNvbnN0IHN0ZDo6dG0mIHRtKSAtPiBkZWNsdHlwZSh0aW1lem9u
ZSkgeworICBjb25zdCBib29sIGlzX2RzdCA9IHRtLnRtX2lzZHN0ID4gMDsKKyAgcmV0dXJuIGlz
X2RzdCA/IGFsdHpvbmUgOiB0aW1lem9uZTsKK30KK2F1dG8gdG1fem9uZShjb25zdCBzdGQ6OnRt
JiB0bSkgLT4gZGVjbHR5cGUodHpuYW1lWzBdKSB7CiAgIGNvbnN0IGJvb2wgaXNfZHN0ID0gdG0u
dG1faXNkc3QgPiAwOwotICBjb25zdCBpbnQgb2ZmID0gaXNfZHN0ID8gYWx0em9uZSA6IHRpbWV6
b25lOwotICBjb25zdCBjaGFyKiBhYmJyID0gdHpuYW1lW2lzX2RzdF07Ci0gIHJldHVybiB7b2Zm
LCBhYmJyfTsKKyAgcmV0dXJuIHR6bmFtZVtpc19kc3RdOwogfQogI2VsaWYgZGVmaW5lZChfX25h
dGl2ZV9jbGllbnRfXykgfHwgZGVmaW5lZChfX215cmlhZDJfXykgfHwgXAogICAgIGRlZmluZWQo
X19FTVNDUklQVEVOX18pCiAvLyBVc2VzIHRoZSBnbG9iYWxzOiAndGltZXpvbmUnIGFuZCAndHpu
YW1lJy4KLU9mZnNldEFiYnIgZ2V0X29mZnNldF9hYmJyKGNvbnN0IHN0ZDo6dG0mIHRtKSB7Cith
dXRvIHRtX2dtdG9mZihjb25zdCBzdGQ6OnRtJiB0bSkgLT4gZGVjbHR5cGUoX3RpbWV6b25lICsg
MCkgeworICBjb25zdCBib29sIGlzX2RzdCA9IHRtLnRtX2lzZHN0ID4gMDsKKyAgcmV0dXJuIF90
aW1lem9uZSArIChpc19kc3QgPyA2MCAqIDYwIDogMCk7Cit9CithdXRvIHRtX3pvbmUoY29uc3Qg
c3RkOjp0bSYgdG0pIC0+IGRlY2x0eXBlKHR6bmFtZVswXSkgewogICBjb25zdCBib29sIGlzX2Rz
dCA9IHRtLnRtX2lzZHN0ID4gMDsKLSAgY29uc3QgaW50IG9mZiA9IF90aW1lem9uZSArIChpc19k
c3QgPyA2MCAqIDYwIDogMCk7Ci0gIGNvbnN0IGNoYXIqIGFiYnIgPSB0em5hbWVbaXNfZHN0XTsK
LSAgcmV0dXJuIHtvZmYsIGFiYnJ9OworICByZXR1cm4gdHpuYW1lW2lzX2RzdF07Cit9CisjZWxz
ZQorLy8gQWRhcHQgdG8gZGlmZmVyZW50IHNwZWxsaW5ncyBvZiB0aGUgc3RydWN0IHN0ZDo6dG0g
ZXh0ZW5zaW9uIGZpZWxkcy4KKyNpZiBkZWZpbmVkKHRtX2dtdG9mZikKK2F1dG8gdG1fZ210b2Zm
KGNvbnN0IHN0ZDo6dG0mIHRtKSAtPiBkZWNsdHlwZSh0bS50bV9nbXRvZmYpIHsKKyAgcmV0dXJu
IHRtLnRtX2dtdG9mZjsKK30KKyNlbGlmIGRlZmluZWQoX190bV9nbXRvZmYpCithdXRvIHRtX2dt
dG9mZihjb25zdCBzdGQ6OnRtJiB0bSkgLT4gZGVjbHR5cGUodG0uX190bV9nbXRvZmYpIHsKKyAg
cmV0dXJuIHRtLl9fdG1fZ210b2ZmOwogfQogI2Vsc2UKLS8vCi0vLyBSZXR1cm5zIGFuIE9mZnNl
dEFiYnIgdXNpbmcgc3RkOjp0bSBmaWVsZHMgd2l0aCB2YXJpb3VzIHNwZWxsaW5ncy4KLS8vCi0j
aWYgIWRlZmluZWQodG1fZ210b2ZmKSAmJiAhZGVmaW5lZCh0bV96b25lKQogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1PZmZzZXRBYmJyIGdldF9vZmZzZXRfYWJicihjb25zdCBUJiB0bSwgZGVjbHR5
cGUoJlQ6OnRtX2dtdG9mZikgPSBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVjbHR5cGUoJlQ6OnRtX3pvbmUpID0gbnVsbHB0cikgewotICByZXR1cm4ge3RtLnRtX2dtdG9m
ZiwgdG0udG1fem9uZX07CithdXRvIHRtX2dtdG9mZihjb25zdCBUJiB0bSkgLT4gZGVjbHR5cGUo
dG0udG1fZ210b2ZmKSB7CisgIHJldHVybiB0bS50bV9nbXRvZmY7CiB9Ci0jZW5kaWYgIC8vICFk
ZWZpbmVkKHRtX2dtdG9mZikgJiYgIWRlZmluZWQodG1fem9uZSkKLSNpZiAhZGVmaW5lZChfX3Rt
X2dtdG9mZikgJiYgIWRlZmluZWQoX190bV96b25lKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1P
ZmZzZXRBYmJyIGdldF9vZmZzZXRfYWJicihjb25zdCBUJiB0bSwgZGVjbHR5cGUoJlQ6Ol9fdG1f
Z210b2ZmKSA9IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsdHlwZSgm
VDo6X190bV96b25lKSA9IG51bGxwdHIpIHsKLSAgcmV0dXJuIHt0bS5fX3RtX2dtdG9mZiwgdG0u
X190bV96b25lfTsKK2F1dG8gdG1fZ210b2ZmKGNvbnN0IFQmIHRtKSAtPiBkZWNsdHlwZSh0bS5f
X3RtX2dtdG9mZikgeworICByZXR1cm4gdG0uX190bV9nbXRvZmY7Cit9CisjZW5kaWYgIC8vIHRt
X2dtdG9mZgorI2lmIGRlZmluZWQodG1fem9uZSkKK2F1dG8gdG1fem9uZShjb25zdCBzdGQ6OnRt
JiB0bSkgLT4gZGVjbHR5cGUodG0udG1fem9uZSkgeworICByZXR1cm4gdG0udG1fem9uZTsKK30K
KyNlbGlmIGRlZmluZWQoX190bV96b25lKQorYXV0byB0bV96b25lKGNvbnN0IHN0ZDo6dG0mIHRt
KSAtPiBkZWNsdHlwZSh0bS5fX3RtX3pvbmUpIHsKKyAgcmV0dXJuIHRtLl9fdG1fem9uZTsKIH0K
LSNlbmRpZiAgLy8gIWRlZmluZWQoX190bV9nbXRvZmYpICYmICFkZWZpbmVkKF9fdG1fem9uZSkK
KyNlbHNlCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2F1dG8gdG1fem9uZShjb25zdCBUJiB0bSkg
LT4gZGVjbHR5cGUodG0udG1fem9uZSkgeworICByZXR1cm4gdG0udG1fem9uZTsKK30KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorYXV0byB0bV96b25lKGNvbnN0IFQmIHRtKSAtPiBkZWNsdHlwZSh0
bS5fX3RtX3pvbmUpIHsKKyAgcmV0dXJuIHRtLl9fdG1fem9uZTsKK30KKyNlbmRpZiAgLy8gdG1f
em9uZQogI2VuZGlmCiAKK2lubGluZSBzdGQ6OnRtKiBnbV90aW1lKGNvbnN0IHN0ZDo6dGltZV90
ICp0aW1lcCwgc3RkOjp0bSAqcmVzdWx0KSB7CisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmlu
ZWQoX1dJTjY0KQorICAgIHJldHVybiBnbXRpbWVfcyhyZXN1bHQsIHRpbWVwKSA/IG51bGxwdHIg
OiByZXN1bHQ7CisjZWxzZQorICAgIHJldHVybiBnbXRpbWVfcih0aW1lcCwgcmVzdWx0KTsKKyNl
bmRpZgorfQorCitpbmxpbmUgc3RkOjp0bSogbG9jYWxfdGltZShjb25zdCBzdGQ6OnRpbWVfdCAq
dGltZXAsIHN0ZDo6dG0gKnJlc3VsdCkgeworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVk
KF9XSU42NCkKKyAgICByZXR1cm4gbG9jYWx0aW1lX3MocmVzdWx0LCB0aW1lcCkgPyBudWxscHRy
IDogcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4gbG9jYWx0aW1lX3IodGltZXAsIHJlc3VsdCk7
CisjZW5kaWYKK30KKworLy8gQ29udmVydHMgYSBjaXZpbCBzZWNvbmQgYW5kICJkc3QiIGZsYWcg
aW50byBhIHRpbWVfdCBhbmQgVVRDIG9mZnNldC4KKy8vIFJldHVybnMgZmFsc2UgaWYgdGltZV90
IGNhbm5vdCByZXByZXNlbnQgdGhlIHJlcXVlc3RlZCBjaXZpbCBzZWNvbmQuCisvLyBDYWxsZXIg
bXVzdCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IGNzLnllYXIoKSB3aWxsIGZpdCBpbnRvIGEg
dG1feWVhci4KK2Jvb2wgbWFrZV90aW1lKGNvbnN0IGNpdmlsX3NlY29uZCYgY3MsIGludCBpc19k
c3QsIHN0ZDo6dGltZV90KiB0LCBpbnQqIG9mZikgeworICBzdGQ6OnRtIHRtOworICB0bS50bV95
ZWFyID0gc3RhdGljX2Nhc3Q8aW50Pihjcy55ZWFyKCkgLSB5ZWFyX3R7MTkwMH0pOworICB0bS50
bV9tb24gPSBjcy5tb250aCgpIC0gMTsKKyAgdG0udG1fbWRheSA9IGNzLmRheSgpOworICB0bS50
bV9ob3VyID0gY3MuaG91cigpOworICB0bS50bV9taW4gPSBjcy5taW51dGUoKTsKKyAgdG0udG1f
c2VjID0gY3Muc2Vjb25kKCk7CisgIHRtLnRtX2lzZHN0ID0gaXNfZHN0OworICAqdCA9IHN0ZDo6
bWt0aW1lKCZ0bSk7CisgIGlmICgqdCA9PSBzdGQ6OnRpbWVfdHstMX0pIHsKKyAgICBzdGQ6OnRt
IHRtMjsKKyAgICBjb25zdCBzdGQ6OnRtKiB0bXAgPSBsb2NhbF90aW1lKHQsICZ0bTIpOworICAg
IGlmICh0bXAgPT0gbnVsbHB0ciB8fCB0bXAtPnRtX3llYXIgIT0gdG0udG1feWVhciB8fAorICAg
ICAgICB0bXAtPnRtX21vbiAhPSB0bS50bV9tb24gfHwgdG1wLT50bV9tZGF5ICE9IHRtLnRtX21k
YXkgfHwKKyAgICAgICAgdG1wLT50bV9ob3VyICE9IHRtLnRtX2hvdXIgfHwgdG1wLT50bV9taW4g
IT0gdG0udG1fbWluIHx8CisgICAgICAgIHRtcC0+dG1fc2VjICE9IHRtLnRtX3NlYykgeworICAg
ICAgLy8gQSB0cnVlIGVycm9yIChub3QganVzdCBvbmUgc2Vjb25kIGJlZm9yZSB0aGUgZXBvY2gp
LgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICAqb2ZmID0gc3RhdGljX2Nhc3Q8
aW50Pih0bV9nbXRvZmYodG0pKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEZpbmQgdGhlIGxl
YXN0IHRpbWVfdCBpbiBbbG86aGldIHdoZXJlIGxvY2FsIHRpbWUgbWF0Y2hlcyBvZmZzZXQsIGdp
dmVuOgorLy8gKDEpIGxvIGRvZXNuJ3QgbWF0Y2gsICgyKSBoaSBkb2VzLCBhbmQgKDMpIHRoZXJl
IGlzIG9ubHkgb25lIHRyYW5zaXRpb24uCitzdGQ6OnRpbWVfdCBmaW5kX3RyYW5zKHN0ZDo6dGlt
ZV90IGxvLCBzdGQ6OnRpbWVfdCBoaSwgaW50IG9mZnNldCkgeworICBzdGQ6OnRtIHRtOworICB3
aGlsZSAobG8gKyAxICE9IGhpKSB7CisgICAgY29uc3Qgc3RkOjp0aW1lX3QgbWlkID0gbG8gKyAo
aGkgLSBsbykgLyAyOworICAgIGlmIChzdGQ6OnRtKiB0bXAgPSBsb2NhbF90aW1lKCZtaWQsICZ0
bSkpIHsKKyAgICAgIGlmICh0bV9nbXRvZmYoKnRtcCkgPT0gb2Zmc2V0KSB7CisgICAgICAgIGhp
ID0gbWlkOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgbG8gPSBtaWQ7CisgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgIC8vIElmIHN0ZDo6dG0gY2Fubm90IGhvbGQgc29tZSByZXN1bHQgd2Ug
cmVzb3J0IHRvIGEgbGluZWFyIHNlYXJjaCwKKyAgICAgIC8vIGlnbm9yaW5nIGFsbCBmYWlsZWQg
Y29udmVyc2lvbnMuICBTbG93LCBidXQgbmV2ZXIgcmVhbGx5IGhhcHBlbnMuCisgICAgICB3aGls
ZSAoKytsbyAhPSBoaSkgeworICAgICAgICBpZiAoc3RkOjp0bSogdG1wID0gbG9jYWxfdGltZSgm
bG8sICZ0bSkpIHsKKyAgICAgICAgICBpZiAodG1fZ210b2ZmKCp0bXApID09IG9mZnNldCkgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBsbzsKKyAgICB9CisgIH0KKyAg
cmV0dXJuIGhpOworfQorCiB9ICAvLyBuYW1lc3BhY2UKIAogVGltZVpvbmVMaWJDOjpUaW1lWm9u
ZUxpYkMoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpCkBAIC05Myw1OSArMTgxLDExNiBAQCBUaW1l
Wm9uZUxpYkM6OlRpbWVab25lTGliQyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkKIHRpbWVfem9u
ZTo6YWJzb2x1dGVfbG9va3VwIFRpbWVab25lTGliQzo6QnJlYWtUaW1lKAogICAgIGNvbnN0IHRp
bWVfcG9pbnQ8c2Vjb25kcz4mIHRwKSBjb25zdCB7CiAgIHRpbWVfem9uZTo6YWJzb2x1dGVfbG9v
a3VwIGFsOwotICBzdGQ6OnRpbWVfdCB0ID0gVG9Vbml4U2Vjb25kcyh0cCk7CisgIGFsLm9mZnNl
dCA9IDA7CisgIGFsLmlzX2RzdCA9IGZhbHNlOworICBhbC5hYmJyID0gIi0wMCI7CisKKyAgY29u
c3Qgc3RkOjppbnRfZmFzdDY0X3QgcyA9IFRvVW5peFNlY29uZHModHApOworCisgIC8vIElmIHN0
ZDo6dGltZV90IGNhbm5vdCBob2xkIHRoZSBpbnB1dCB3ZSBzYXR1cmF0ZSB0aGUgb3V0cHV0Lgor
ICBpZiAocyA8IHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjp0aW1lX3Q+OjptaW4oKSkgeworICAg
IGFsLmNzID0gY2l2aWxfc2Vjb25kOjptaW4oKTsKKyAgICByZXR1cm4gYWw7CisgIH0KKyAgaWYg
KHMgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6dGltZV90Pjo6bWF4KCkpIHsKKyAgICBhbC5j
cyA9IGNpdmlsX3NlY29uZDo6bWF4KCk7CisgICAgcmV0dXJuIGFsOworICB9CisKKyAgY29uc3Qg
c3RkOjp0aW1lX3QgdCA9IHN0YXRpY19jYXN0PHN0ZDo6dGltZV90PihzKTsKICAgc3RkOjp0bSB0
bTsKLSAgaWYgKGxvY2FsXykgewotI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42
NCkKLSAgICBsb2NhbHRpbWVfcygmdG0sICZ0KTsKLSNlbHNlCi0gICAgbG9jYWx0aW1lX3IoJnQs
ICZ0bSk7Ci0jZW5kaWYKLSAgICBzdGQ6OnRpZShhbC5vZmZzZXQsIGFsLmFiYnIpID0gZ2V0X29m
ZnNldF9hYmJyKHRtKTsKLSAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5l
ZChfV0lONjQpCi0gICAgZ210aW1lX3MoJnRtLCAmdCk7Ci0jZWxzZQotICAgIGdtdGltZV9yKCZ0
LCAmdG0pOwotI2VuZGlmCi0gICAgYWwub2Zmc2V0ID0gMDsKLSAgICBhbC5hYmJyID0gIlVUQyI7
CisgIHN0ZDo6dG0qIHRtcCA9IGxvY2FsXyA/IGxvY2FsX3RpbWUoJnQsICZ0bSkgOiBnbV90aW1l
KCZ0LCAmdG0pOworCisgIC8vIElmIHN0ZDo6dG0gY2Fubm90IGhvbGQgdGhlIHJlc3VsdCB3ZSBz
YXR1cmF0ZSB0aGUgb3V0cHV0LgorICBpZiAodG1wID09IG51bGxwdHIpIHsKKyAgICBhbC5jcyA9
IChzIDwgMCkgPyBjaXZpbF9zZWNvbmQ6Om1pbigpIDogY2l2aWxfc2Vjb25kOjptYXgoKTsKKyAg
ICByZXR1cm4gYWw7CiAgIH0KLSAgYWwuY3MgPSBjaXZpbF9zZWNvbmQodG0udG1feWVhciArIDE5
MDAsIHRtLnRtX21vbiArIDEsIHRtLnRtX21kYXksCi0gICAgICAgICAgICAgICAgICAgICAgIHRt
LnRtX2hvdXIsIHRtLnRtX21pbiwgdG0udG1fc2VjKTsKLSAgYWwuaXNfZHN0ID0gdG0udG1faXNk
c3QgPiAwOworCisgIGNvbnN0IHllYXJfdCB5ZWFyID0gdG1wLT50bV95ZWFyICsgeWVhcl90ezE5
MDB9OworICBhbC5jcyA9IGNpdmlsX3NlY29uZCh5ZWFyLCB0bXAtPnRtX21vbiArIDEsIHRtcC0+
dG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgdG1wLT50bV9ob3VyLCB0bXAtPnRtX21p
biwgdG1wLT50bV9zZWMpOworICBhbC5vZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KHRtX2dtdG9m
ZigqdG1wKSk7CisgIGFsLmFiYnIgPSBsb2NhbF8gPyB0bV96b25lKCp0bXApIDogIlVUQyI7ICAv
LyBhcyBleHBlY3RlZCBieSBjY3R6CisgIGFsLmlzX2RzdCA9IHRtcC0+dG1faXNkc3QgPiAwOwog
ICByZXR1cm4gYWw7CiB9CiAKIHRpbWVfem9uZTo6Y2l2aWxfbG9va3VwIFRpbWVab25lTGliQzo6
TWFrZVRpbWUoY29uc3QgY2l2aWxfc2Vjb25kJiBjcykgY29uc3QgewotICB0aW1lX3pvbmU6OmNp
dmlsX2xvb2t1cCBjbDsKLSAgc3RkOjp0aW1lX3QgdDsKLSAgaWYgKGxvY2FsXykgewotICAgIC8v
IERvZXMgbm90IGhhbmRsZSBTS0lQUEVEL0FNQklHVU9VUyBvciBodWdlIHllYXJzLgotICAgIHN0
ZDo6dG0gdG07Ci0gICAgdG0udG1feWVhciA9IHN0YXRpY19jYXN0PGludD4oY3MueWVhcigpIC0g
MTkwMCk7Ci0gICAgdG0udG1fbW9uID0gY3MubW9udGgoKSAtIDE7Ci0gICAgdG0udG1fbWRheSA9
IGNzLmRheSgpOwotICAgIHRtLnRtX2hvdXIgPSBjcy5ob3VyKCk7Ci0gICAgdG0udG1fbWluID0g
Y3MubWludXRlKCk7Ci0gICAgdG0udG1fc2VjID0gY3Muc2Vjb25kKCk7Ci0gICAgdG0udG1faXNk
c3QgPSAtMTsKLSAgICB0ID0gc3RkOjpta3RpbWUoJnRtKTsKKyAgaWYgKCFsb2NhbF8pIHsKKyAg
ICAvLyBJZiB0aW1lX3BvaW50PHNlY29uZHM+IGNhbm5vdCBob2xkIHRoZSByZXN1bHQgd2Ugc2F0
dXJhdGUuCisgICAgc3RhdGljIGNvbnN0IGNpdmlsX3NlY29uZCBtaW5fdHBfY3MgPQorICAgICAg
ICBjaXZpbF9zZWNvbmQoKSArIFRvVW5peFNlY29uZHModGltZV9wb2ludDxzZWNvbmRzPjo6bWlu
KCkpOworICAgIHN0YXRpYyBjb25zdCBjaXZpbF9zZWNvbmQgbWF4X3RwX2NzID0KKyAgICAgICAg
Y2l2aWxfc2Vjb25kKCkgKyBUb1VuaXhTZWNvbmRzKHRpbWVfcG9pbnQ8c2Vjb25kcz46Om1heCgp
KTsKKyAgICBjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+IHRwID0KKyAgICAgICAgKGNzIDwgbWlu
X3RwX2NzKQorICAgICAgICAgICAgPyB0aW1lX3BvaW50PHNlY29uZHM+OjptaW4oKQorICAgICAg
ICAgICAgOiAoY3MgPiBtYXhfdHBfY3MpID8gdGltZV9wb2ludDxzZWNvbmRzPjo6bWF4KCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEZyb21Vbml4U2Vjb25kcyhjcyAtIGNpdmls
X3NlY29uZCgpKTsKKyAgICByZXR1cm4ge3RpbWVfem9uZTo6Y2l2aWxfbG9va3VwOjpVTklRVUUs
IHRwLCB0cCwgdHB9OworICB9CisKKyAgLy8gSWYgdG1feWVhciBjYW5ub3QgaG9sZCB0aGUgcmVx
dWVzdGVkIHllYXIgd2Ugc2F0dXJhdGUgdGhlIHJlc3VsdC4KKyAgaWYgKGNzLnllYXIoKSA8IDAp
IHsKKyAgICBpZiAoY3MueWVhcigpIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSAr
IHllYXJfdHsxOTAwfSkgeworICAgICAgY29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiB0cCA9IHRp
bWVfcG9pbnQ8c2Vjb25kcz46Om1pbigpOworICAgICAgcmV0dXJuIHt0aW1lX3pvbmU6OmNpdmls
X2xvb2t1cDo6VU5JUVVFLCB0cCwgdHAsIHRwfTsKKyAgICB9CiAgIH0gZWxzZSB7Ci0gICAgdCA9
IGNzIC0gY2l2aWxfc2Vjb25kKCk7CisgICAgaWYgKGNzLnllYXIoKSAtIHllYXJfdHsxOTAwfSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpIHsKKyAgICAgIGNvbnN0IHRpbWVfcG9p
bnQ8c2Vjb25kcz4gdHAgPSB0aW1lX3BvaW50PHNlY29uZHM+OjptYXgoKTsKKyAgICAgIHJldHVy
biB7dGltZV96b25lOjpjaXZpbF9sb29rdXA6OlVOSVFVRSwgdHAsIHRwLCB0cH07CisgICAgfQog
ICB9Ci0gIGNsLmtpbmQgPSB0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6VU5JUVVFOwotICBjbC5w
cmUgPSBjbC50cmFucyA9IGNsLnBvc3QgPSBGcm9tVW5peFNlY29uZHModCk7Ci0gIHJldHVybiBj
bDsKKworICAvLyBXZSBwcm9iZSB3aXRoICJpc19kc3QiIHZhbHVlcyBvZiAwIGFuZCAxIHRvIHRy
eSB0byBkaXN0aW5ndWlzaCB1bmlxdWUKKyAgLy8gY2l2aWwgc2Vjb25kcyBmcm9tIHNraXBwZWQg
b3IgcmVwZWF0ZWQgb25lcy4gIFRoaXMgaXMgbm90IGFsd2F5cyBwb3NzaWJsZQorICAvLyBob3dl
dmVyLCBhcyB0aGUgImRzdCIgZmxhZyBkb2VzIG5vdCBjaGFuZ2Ugb3ZlciBzb21lIG9mZnNldCB0
cmFuc2l0aW9ucy4KKyAgLy8gV2UgYXJlIGFsc28gc3ViamVjdCB0byB0aGUgdmFnYXJpZXMgb2Yg
bWt0aW1lKCkgaW1wbGVtZW50YXRpb25zLgorICBzdGQ6OnRpbWVfdCB0MCwgdDE7CisgIGludCBv
ZmZzZXQwLCBvZmZzZXQxOworICBpZiAobWFrZV90aW1lKGNzLCAwLCAmdDAsICZvZmZzZXQwKSAm
JiBtYWtlX3RpbWUoY3MsIDEsICZ0MSwgJm9mZnNldDEpKSB7CisgICAgaWYgKHQwID09IHQxKSB7
CisgICAgICAvLyBUaGUgY2l2aWwgdGltZSB3YXMgc2luZ3VsYXIgKHByZSA9PSB0cmFucyA9PSBw
b3N0KS4KKyAgICAgIGNvbnN0IHRpbWVfcG9pbnQ8c2Vjb25kcz4gdHAgPSBGcm9tVW5peFNlY29u
ZHModDApOworICAgICAgcmV0dXJuIHt0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6VU5JUVVFLCB0
cCwgdHAsIHRwfTsKKyAgICB9CisKKyAgICBpZiAodDAgPiB0MSkgeworICAgICAgc3RkOjpzd2Fw
KHQwLCB0MSk7CisgICAgICBzdGQ6OnN3YXAob2Zmc2V0MCwgb2Zmc2V0MSk7CisgICAgfQorICAg
IGNvbnN0IHN0ZDo6dGltZV90IHR0ID0gZmluZF90cmFucyh0MCwgdDEsIG9mZnNldDEpOworICAg
IGNvbnN0IHRpbWVfcG9pbnQ8c2Vjb25kcz4gdHJhbnMgPSBGcm9tVW5peFNlY29uZHModHQpOwor
CisgICAgaWYgKG9mZnNldDAgPCBvZmZzZXQxKSB7CisgICAgICAvLyBUaGUgY2l2aWwgdGltZSBk
aWQgbm90IGV4aXN0IChwcmUgPj0gdHJhbnMgPiBwb3N0KS4KKyAgICAgIGNvbnN0IHRpbWVfcG9p
bnQ8c2Vjb25kcz4gcHJlID0gRnJvbVVuaXhTZWNvbmRzKHQxKTsKKyAgICAgIGNvbnN0IHRpbWVf
cG9pbnQ8c2Vjb25kcz4gcG9zdCA9IEZyb21Vbml4U2Vjb25kcyh0MCk7CisgICAgICByZXR1cm4g
e3RpbWVfem9uZTo6Y2l2aWxfbG9va3VwOjpTS0lQUEVELCBwcmUsIHRyYW5zLCBwb3N0fTsKKyAg
ICB9CisKKyAgICAvLyBUaGUgY2l2aWwgdGltZSB3YXMgYW1iaWd1b3VzIChwcmUgPCB0cmFucyA8
PSBwb3N0KS4KKyAgICBjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+IHByZSA9IEZyb21Vbml4U2Vj
b25kcyh0MCk7CisgICAgY29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiBwb3N0ID0gRnJvbVVuaXhT
ZWNvbmRzKHQxKTsKKyAgICByZXR1cm4ge3RpbWVfem9uZTo6Y2l2aWxfbG9va3VwOjpSRVBFQVRF
RCwgcHJlLCB0cmFucywgcG9zdH07CisgIH0KKworICAvLyBtYWtlX3RpbWUoKSBmYWlsZWQgc29t
ZWhvdyBzbyB3ZSBzYXR1cmF0ZSB0aGUgcmVzdWx0LgorICBjb25zdCB0aW1lX3BvaW50PHNlY29u
ZHM+IHRwID0gKGNzIDwgY2l2aWxfc2Vjb25kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPyB0aW1lX3BvaW50PHNlY29uZHM+OjptaW4oKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogdGltZV9wb2ludDxzZWNvbmRzPjo6bWF4KCk7CisgIHJl
dHVybiB7dGltZV96b25lOjpjaXZpbF9sb29rdXA6OlVOSVFVRSwgdHAsIHRwLCB0cH07CiB9CiAK
LWJvb2wgVGltZVpvbmVMaWJDOjpOZXh0VHJhbnNpdGlvbihjb25zdCB0aW1lX3BvaW50PHNlY29u
ZHM+JiB0cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lX3pvbmU6OmNp
dmlsX3RyYW5zaXRpb24qIHRyYW5zKSBjb25zdCB7Citib29sIFRpbWVab25lTGliQzo6TmV4dFRy
YW5zaXRpb24oY29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGltZV96b25lOjpjaXZpbF90cmFuc2l0aW9uKikgY29uc3QgewogICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVGltZVpvbmVMaWJDOjpQcmV2VHJhbnNpdGlvbihjb25z
dCB0aW1lX3BvaW50PHNlY29uZHM+JiB0cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aW1lX3pvbmU6OmNpdmlsX3RyYW5zaXRpb24qIHRyYW5zKSBjb25zdCB7Citib29sIFRp
bWVab25lTGliQzo6UHJldlRyYW5zaXRpb24oY29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV96b25lOjpjaXZpbF90cmFuc2l0
aW9uKikgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2xpYmMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei9zcmMvdGltZV96b25lX2xpYmMuaAppbmRleCA0ZTQwYzYxYWIyNC4uMGQxOGU5YTdm
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2xp
YmMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmgK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9sb29rdXAuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9sb29rdXAuY2MKaW5kZXggZjJkMTUxZTRkNWUu
LjNjNTNkZDFhZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3Rp
bWVfem9uZV9sb29rdXAuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1l
X3pvbmVfbG9va3VwLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtMTYsMTAgKzE2LDE2IEBACiAKICNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQogI2luY2x1ZGUg
PHN5cy9zeXN0ZW1fcHJvcGVydGllcy5oPgotI2lmIF9fQU5EUk9JRF9BUElfXyA+PSAyMQorI2lm
IGRlZmluZWQoX19BTkRST0lEX0FQSV9fKSAmJiBfX0FORFJPSURfQVBJX18gPj0gMjEKICNpbmNs
dWRlIDxkbGZjbi5oPgogI2VuZGlmCiAjZW5kaWYKKworI2lmIGRlZmluZWQoX19BUFBMRV9fKQor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGVGltZVpvbmUuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisjZW5kaWYKKwogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNs
dWRlIDxzdHJpbmc+CkBAIC0zMSw3ICszNyw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFj
ZSB0aW1lX2ludGVybmFsIHsKIG5hbWVzcGFjZSBjY3R6IHsKIAotI2lmIGRlZmluZWQoX19BTkRS
T0lEX18pICYmIF9fQU5EUk9JRF9BUElfXyA+PSAyMQorI2lmIGRlZmluZWQoX19BTkRST0lEX18p
ICYmIGRlZmluZWQoX19BTkRST0lEX0FQSV9fKSAmJiBfX0FORFJPSURfQVBJX18gPj0gMjEKIG5h
bWVzcGFjZSB7CiAvLyBBbmRyb2lkICdMJyByZW1vdmVzIF9fc3lzdGVtX3Byb3BlcnR5X2dldCgp
IGZyb20gdGhlIE5ESywgaG93ZXZlcgogLy8gaXQgaXMgc3RpbGwgYSBoaWRkZW4gc3ltYm9sIGlu
IGxpYmMgc28gd2UgdXNlIGRsc3ltKCkgdG8gYWNjZXNzIGl0LgpAQCAtMTE2LDYgKzEyMiwyNSBA
QCB0aW1lX3pvbmUgZml4ZWRfdGltZV96b25lKGNvbnN0IHNlY29uZHMmIG9mZnNldCkgewogCiB0
aW1lX3pvbmUgbG9jYWxfdGltZV96b25lKCkgewogICBjb25zdCBjaGFyKiB6b25lID0gIjpsb2Nh
bHRpbWUiOworI2lmIGRlZmluZWQoX19BTkRST0lEX18pCisgIGNoYXIgc3lzcHJvcFtQUk9QX1ZB
TFVFX01BWF07CisgIGlmIChfX3N5c3RlbV9wcm9wZXJ0eV9nZXQoInBlcnNpc3Quc3lzLnRpbWV6
b25lIiwgc3lzcHJvcCkgPiAwKSB7CisgICAgem9uZSA9IHN5c3Byb3A7CisgIH0KKyNlbmRpZgor
I2lmIGRlZmluZWQoX19BUFBMRV9fKQorICBzdGQ6OnZlY3RvcjxjaGFyPiBidWZmZXI7CisgIENG
VGltZVpvbmVSZWYgdHpfZGVmYXVsdCA9IENGVGltZVpvbmVDb3B5RGVmYXVsdCgpOworICBpZiAo
Q0ZTdHJpbmdSZWYgdHpfbmFtZSA9IENGVGltZVpvbmVHZXROYW1lKHR6X2RlZmF1bHQpKSB7Cisg
ICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nVVRGODsKKyAg
ICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHR6X25hbWUpOworICAgIGJ1ZmZl
ci5yZXNpemUoQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6ZUZvckVuY29kaW5nKGxlbmd0aCwgZW5jb2Rp
bmcpICsgMSk7CisgICAgaWYgKENGU3RyaW5nR2V0Q1N0cmluZyh0el9uYW1lLCAmYnVmZmVyWzBd
LCBidWZmZXIuc2l6ZSgpLCBlbmNvZGluZykpIHsKKyAgICAgIHpvbmUgPSAmYnVmZmVyWzBdOwor
ICAgIH0KKyAgfQorICBDRlJlbGVhc2UodHpfZGVmYXVsdCk7CisjZW5kaWYKIAogICAvLyBBbGxv
dyAke1RafSB0byBvdmVycmlkZSB0byBkZWZhdWx0IHpvbmUuCiAgIGNoYXIqIHR6X2VudiA9IG51
bGxwdHI7CkBAIC0xMjMsMTIgKzE0OCw2IEBAIHRpbWVfem9uZSBsb2NhbF90aW1lX3pvbmUoKSB7
CiAgIF9kdXBlbnZfcygmdHpfZW52LCBudWxscHRyLCAiVFoiKTsKICNlbHNlCiAgIHR6X2VudiA9
IHN0ZDo6Z2V0ZW52KCJUWiIpOwotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FORFJPSURfXykKLSAg
Y2hhciBzeXNwcm9wW1BST1BfVkFMVUVfTUFYXTsKLSAgaWYgKHR6X2VudiA9PSBudWxscHRyKQot
ICAgIGlmIChfX3N5c3RlbV9wcm9wZXJ0eV9nZXQoInBlcnNpc3Quc3lzLnRpbWV6b25lIiwgc3lz
cHJvcCkgPiAwKQotICAgICAgdHpfZW52ID0gc3lzcHJvcDsKICNlbmRpZgogICBpZiAodHpfZW52
KSB6b25lID0gdHpfZW52OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
c3JjL3RpbWVfem9uZV9sb29rdXBfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9z
cmMvdGltZV96b25lX2xvb2t1cF90ZXN0LmNjCmluZGV4IDU1MTI5MmZiNTVlLi40MmRkNmQ1NTEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbG9v
a3VwX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVf
bG9va3VwX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBA
IC0xNiw3ICsxNiw5IEBACiAKICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4K
KyNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGZ1dHVyZT4KKyNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHRocmVhZD4KICNpbmNsdWRlIDx2ZWN0b3I+
CkBAIC0zMzUsNiArMzM3LDcgQEAgY29uc3QgY2hhciogY29uc3Qga1RpbWVab25lTmFtZXNbXSA9
IHsKICAgIkFzaWEvUG9udGlhbmFrIiwKICAgIkFzaWEvUHlvbmd5YW5nIiwKICAgIkFzaWEvUWF0
YXIiLAorICAiQXNpYS9Rb3N0YW5heSIsCiAgICJBc2lhL1F5enlsb3JkYSIsCiAgICJBc2lhL1Jh
bmdvb24iLAogICAiQXNpYS9SaXlhZGgiLApAQCAtNjY0LDYgKzY2Nyw3IEBAIGludCBWZXJzaW9u
Q21wKHRpbWVfem9uZSB0eiwgY29uc3Qgc3RkOjpzdHJpbmcmIHRhcmdldCkgewogCiB9ICAvLyBu
YW1lc3BhY2UKIAorI2lmICFkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQogVEVTVChUaW1lWm9uZXMs
IExvYWRab25lc0NvbmN1cnJlbnRseSkgewogICBzdGQ6OnByb21pc2U8dm9pZD4gcmVhZHlfcHJv
bWlzZTsKICAgc3RkOjpzaGFyZWRfZnV0dXJlPHZvaWQ+IHJlYWR5X2Z1dHVyZShyZWFkeV9wcm9t
aXNlLmdldF9mdXR1cmUoKSk7CkBAIC03MTEsNiArNzE1LDcgQEAgVEVTVChUaW1lWm9uZXMsIExv
YWRab25lc0NvbmN1cnJlbnRseSkgewogICB9CiAgIEVYUEVDVF9MRShmYWlsdXJlcy5zaXplKCks
IG1heF9mYWlsdXJlcykgPDwgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhmYWlsdXJlcyk7CiB9Cisj
ZW5kaWYKIAogVEVTVChUaW1lWm9uZSwgTmFtZWRUaW1lWm9uZXMpIHsKICAgY29uc3QgdGltZV96
b25lIHV0YyA9IHV0Y190aW1lX3pvbmUoKTsKQEAgLTgzMSw3ICs4MzYsNyBAQCBURVNUKEJyZWFr
VGltZSwgTG9jYWxUaW1lSW5VVEMpIHsKICAgY29uc3QgdGltZV96b25lIHR6ID0gdXRjX3RpbWVf
em9uZSgpOwogICBjb25zdCBhdXRvIHRwID0gY2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGlt
ZV90KDApOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMTk3MCwgMSwgMSwgMCwgMCwgMCwgMCwgZmFs
c2UsICJVVEMiKTsKLSAgRVhQRUNUX0VRKHdlZWtkYXk6OnRodXJzZGF5LCBnZXRfd2Vla2RheShj
aXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBFQ1RfRVEod2Vla2RheTo6dGh1cnNk
YXksIGdldF93ZWVrZGF5KGNvbnZlcnQodHAsIHR6KSkpOwogfQogCiBURVNUKEJyZWFrVGltZSwg
TG9jYWxUaW1lSW5VVENVbmFsaWduZWQpIHsKQEAgLTgzOSw3ICs4NDQsNyBAQCBURVNUKEJyZWFr
VGltZSwgTG9jYWxUaW1lSW5VVENVbmFsaWduZWQpIHsKICAgY29uc3QgYXV0byB0cCA9CiAgICAg
ICBjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoMCkgLSBjaHJvbm86Om1pbGxpc2Vj
b25kcyg1MDApOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMTk2OSwgMTIsIDMxLCAyMywgNTksIDU5
LCAwLCBmYWxzZSwgIlVUQyIpOwotICBFWFBFQ1RfRVEod2Vla2RheTo6d2VkbmVzZGF5LCBnZXRf
d2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBFQ1RfRVEod2Vla2Rh
eTo6d2VkbmVzZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRwLCB0eikpKTsKIH0KIAogVEVTVChC
cmVha1RpbWUsIExvY2FsVGltZVBvc2l4KSB7CkBAIC04NDcsNyArODUyLDcgQEAgVEVTVChCcmVh
a1RpbWUsIExvY2FsVGltZVBvc2l4KSB7CiAgIGNvbnN0IHRpbWVfem9uZSB0eiA9IHV0Y190aW1l
X3pvbmUoKTsKICAgY29uc3QgYXV0byB0cCA9IGNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3Rp
bWVfdCg1MzY0NTc1OTkpOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMTk4NiwgMTIsIDMxLCAyMywg
NTksIDU5LCAwLCBmYWxzZSwgIlVUQyIpOwotICBFWFBFQ1RfRVEod2Vla2RheTo6d2VkbmVzZGF5
LCBnZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBFQ1RfRVEo
d2Vla2RheTo6d2VkbmVzZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRwLCB0eikpKTsKIH0KIAog
VEVTVChUaW1lWm9uZUltcGwsIExvY2FsVGltZUluRml4ZWQpIHsKQEAgLTg1NywyOCArODYyLDI4
IEBAIFRFU1QoVGltZVpvbmVJbXBsLCBMb2NhbFRpbWVJbkZpeGVkKSB7CiAgIGNvbnN0IGF1dG8g
dHAgPSBjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoMCk7CiAgIEV4cGVjdFRpbWUo
dHAsIHR6LCAxOTY5LCAxMiwgMzEsIDE1LCAyNiwgMTMsIG9mZnNldC5jb3VudCgpLCBmYWxzZSwK
ICAgICAgICAgICAgICAiLTA4MzM0NyIpOwotICBFWFBFQ1RfRVEod2Vla2RheTo6d2VkbmVzZGF5
LCBnZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBFQ1RfRVEo
d2Vla2RheTo6d2VkbmVzZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRwLCB0eikpKTsKIH0KIAog
VEVTVChCcmVha1RpbWUsIExvY2FsVGltZUluTmV3WW9yaykgewogICBjb25zdCB0aW1lX3pvbmUg
dHogPSBMb2FkWm9uZSgiQW1lcmljYS9OZXdfWW9yayIpOwogICBjb25zdCBhdXRvIHRwID0gY2hy
b25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KDQ1KTsKICAgRXhwZWN0VGltZSh0cCwgdHos
IDE5NjksIDEyLCAzMSwgMTksIDAsIDQ1LCAtNSAqIDYwICogNjAsIGZhbHNlLCAiRVNUIik7Ci0g
IEVYUEVDVF9FUSh3ZWVrZGF5Ojp3ZWRuZXNkYXksIGdldF93ZWVrZGF5KGNpdmlsX2RheShjb252
ZXJ0KHRwLCB0eikpKSk7CisgIEVYUEVDVF9FUSh3ZWVrZGF5Ojp3ZWRuZXNkYXksIGdldF93ZWVr
ZGF5KGNvbnZlcnQodHAsIHR6KSkpOwogfQogCiBURVNUKEJyZWFrVGltZSwgTG9jYWxUaW1lSW5N
VFYpIHsKICAgY29uc3QgdGltZV96b25lIHR6ID0gTG9hZFpvbmUoIkFtZXJpY2EvTG9zX0FuZ2Vs
ZXMiKTsKICAgY29uc3QgYXV0byB0cCA9IGNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVf
dCgxMzgwODU1NzI5KTsKICAgRXhwZWN0VGltZSh0cCwgdHosIDIwMTMsIDEwLCAzLCAyMCwgMiwg
OSwgLTcgKiA2MCAqIDYwLCB0cnVlLCAiUERUIik7Ci0gIEVYUEVDVF9FUSh3ZWVrZGF5Ojp0aHVy
c2RheSwgZ2V0X3dlZWtkYXkoY2l2aWxfZGF5KGNvbnZlcnQodHAsIHR6KSkpKTsKKyAgRVhQRUNU
X0VRKHdlZWtkYXk6OnRodXJzZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRwLCB0eikpKTsKIH0K
IAogVEVTVChCcmVha1RpbWUsIExvY2FsVGltZUluU3lkbmV5KSB7CiAgIGNvbnN0IHRpbWVfem9u
ZSB0eiA9IExvYWRab25lKCJBdXN0cmFsaWEvU3lkbmV5Iik7CiAgIGNvbnN0IGF1dG8gdHAgPSBj
aHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoOTApOwogICBFeHBlY3RUaW1lKHRwLCB0
eiwgMTk3MCwgMSwgMSwgMTAsIDEsIDMwLCAxMCAqIDYwICogNjAsIGZhbHNlLCAiQUVTVCIpOwot
ICBFWFBFQ1RfRVEod2Vla2RheTo6dGh1cnNkYXksIGdldF93ZWVrZGF5KGNpdmlsX2RheShjb252
ZXJ0KHRwLCB0eikpKSk7CisgIEVYUEVDVF9FUSh3ZWVrZGF5Ojp0aHVyc2RheSwgZ2V0X3dlZWtk
YXkoY29udmVydCh0cCwgdHopKSk7CiB9CiAKIFRFU1QoTWFrZVRpbWUsIFRpbWVQb2ludFJlc29s
dXRpb24pIHsKQEAgLTkyNSw3ICs5MzAsNyBAQCBURVNUKE1ha2VUaW1lLCBOb3JtYWxpemF0aW9u
KSB7CiAgIEVYUEVDVF9FUSh0cCwgY29udmVydChjaXZpbF9zZWNvbmQoMjAwOSwgMiwgMTMsIDE4
LCAzMCwgOTApLCB0eikpOyAgIC8vIHNlY29uZAogfQogCi0vLyBOT1RFOiBSdW4gdGhpcyB3aXRo
IC0tY29wdD0tZnRyYXB2IHRvIGRldGVjdCBvdmVyZmxvdyBwcm9ibGVtcy4KKy8vIE5PVEU6IFJ1
biB0aGlzIHdpdGggLWZ0cmFwdiB0byBkZXRlY3Qgb3ZlcmZsb3cgcHJvYmxlbXMuCiBURVNUKE1h
a2VUaW1lLCBTeXNTZWNvbmRzTGltaXRzKSB7CiAgIGNvbnN0IGNoYXIgUkZDMzMzOVtdID0gICIl
WS0lbS0lZFQlSDolTTolUyVFeiI7CiAgIGNvbnN0IHRpbWVfem9uZSB1dGMgPSB1dGNfdGltZV96
b25lKCk7CkBAIC05OTAsNiArOTk1LDEwNiBAQCBURVNUKE1ha2VUaW1lLCBTeXNTZWNvbmRzTGlt
aXRzKSB7CiAgIEVYUEVDVF9FUSh0aW1lX3BvaW50PGFic2w6OnRpbWVfaW50ZXJuYWw6OmNjdHo6
OnNlY29uZHM+OjptaW4oKSwgdHApOwogICB0cCA9IGNvbnZlcnQoY2l2aWxfc2Vjb25kOjptaW4o
KSwgd2VzdCk7CiAgIEVYUEVDVF9FUSh0aW1lX3BvaW50PGFic2w6OnRpbWVfaW50ZXJuYWw6OmNj
dHo6OnNlY29uZHM+OjptaW4oKSwgdHApOworCisgIC8vIFNvbWUgc2ltaWxhciBjaGVja3MgZm9y
IHRoZSAibGliYyIgdGltZS16b25lIGltcGxlbWVudGF0aW9uLgorICBpZiAoc2l6ZW9mKHN0ZDo6
dGltZV90KSA+PSA4KSB7CisgICAgLy8gQ2hlY2tzIHRoYXQgInRtX3llYXIgKyAxOTAwIiwgYXMg
dXNlZCBieSB0aGUgImxpYmMiIGltcGxlbWVudGF0aW9uLAorICAgIC8vIGNhbiBwcm9kdWNlIHll
YXIgdmFsdWVzIGJleW9uZCB0aGUgcmFuZ2Ugb24gYW4gaW50IHdpdGhvdXQgb3ZlcmZsb3cuCisj
aWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KQorICAgIC8vIGxvY2FsdGltZV9z
KCkgYW5kIGdtdGltZV9zKCkgZG9uJ3QgYmVsaWV2ZSBpbiB5ZWFycyBvdXRzaWRlIFsxOTcwOjMw
MDBdLgorI2Vsc2UKKyAgICBjb25zdCB0aW1lX3pvbmUgdXRjID0gTG9hZFpvbmUoImxpYmM6VVRD
Iik7CisgICAgY29uc3QgeWVhcl90IG1heF90bV95ZWFyID0geWVhcl90e3N0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCl9ICsgMTkwMDsKKyAgICB0cCA9IGNvbnZlcnQoY2l2aWxfc2Vjb25k
KG1heF90bV95ZWFyLCAxMiwgMzEsIDIzLCA1OSwgNTkpLCB1dGMpOworICAgIEVYUEVDVF9FUSgi
MjE0NzQ4NTU0Ny0xMi0zMVQyMzo1OTo1OSswMDowMCIsIGZvcm1hdChSRkMzMzM5LCB0cCwgdXRj
KSk7CisgICAgY29uc3QgeWVhcl90IG1pbl90bV95ZWFyID0geWVhcl90e3N0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWluKCl9ICsgMTkwMDsKKyAgICB0cCA9IGNvbnZlcnQoY2l2aWxfc2Vjb25k
KG1pbl90bV95ZWFyLCAxLCAxLCAwLCAwLCAwKSwgdXRjKTsKKyAgICBFWFBFQ1RfRVEoIi0yMTQ3
NDgxNzQ4LTAxLTAxVDAwOjAwOjAwKzAwOjAwIiwgZm9ybWF0KFJGQzMzMzksIHRwLCB1dGMpKTsK
KyNlbmRpZgorICB9Cit9CisKK1RFU1QoTWFrZVRpbWUsIExvY2FsVGltZUxpYkMpIHsKKyAgLy8g
Q2hlY2tzIHRoYXQgY2N0eiBhbmQgbGliYyBhZ3JlZSBvbiB0cmFuc2l0aW9uIHBvaW50cyBpbiBb
MTk3MDoyMDM3XS4KKyAgLy8KKyAgLy8gV2UgbGltaXQgdGhpcyB0ZXN0IGNhc2UgdG8gZW52aXJv
bm1lbnRzIHdoZXJlOgorICAvLyAgMSkgd2Uga25vdyBob3cgdG8gY2hhbmdlIHRoZSB0aW1lIHpv
bmUgdXNlZCBieSBsb2NhbHRpbWUoKS9ta3RpbWUoKSwKKyAgLy8gIDIpIGNjdHogYW5kIGxvY2Fs
dGltZSgpL21rdGltZSgpIHdpbGwgdXNlIHNpbWlsYXItZW5vdWdoIHR6ZGF0YSwgYW5kCisgIC8v
ICAzKSB3ZSBoYXZlIHNvbWUgaWRlYSBhYm91dCBob3cgbWt0aW1lKCkgYmVoYXZlcyBkdXJpbmcg
dHJhbnNpdGlvbnMuCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fQU5EUk9J
RF9fKQorICBjb25zdCBjaGFyKiBjb25zdCBlcCA9IGdldGVudigiVFoiKTsKKyAgc3RkOjpzdHJp
bmcgdHpfbmFtZSA9IChlcCAhPSBudWxscHRyKSA/IGVwIDogIiI7CisgIGZvciAoY29uc3QgY2hh
ciogY29uc3QqIG5wID0ga1RpbWVab25lTmFtZXM7ICpucCAhPSBudWxscHRyOyArK25wKSB7Cisg
ICAgQVNTRVJUX0VRKDAsIHNldGVudigiVFoiLCAqbnAsIDEpKTsgIC8vIGNoYW5nZSB3aGF0ICJs
b2NhbHRpbWUiIG1lYW5zCisgICAgY29uc3QgYXV0byB6aSA9IGxvY2FsX3RpbWVfem9uZSgpOwor
ICAgIGNvbnN0IGF1dG8gbGMgPSBMb2FkWm9uZSgibGliYzpsb2NhbHRpbWUiKTsKKyAgICB0aW1l
X3pvbmU6OmNpdmlsX3RyYW5zaXRpb24gdHJhbnM7CisgICAgZm9yIChhdXRvIHRwID0gemkubG9v
a3VwKGNpdmlsX3NlY29uZCgpKS50cmFuczsKKyAgICAgICAgIHppLm5leHRfdHJhbnNpdGlvbih0
cCwgJnRyYW5zKTsKKyAgICAgICAgIHRwID0gemkubG9va3VwKHRyYW5zLnRvKS50cmFucykgewor
ICAgICAgY29uc3QgYXV0byBmY2wgPSB6aS5sb29rdXAodHJhbnMuZnJvbSk7CisgICAgICBjb25z
dCBhdXRvIHRjbCA9IHppLmxvb2t1cCh0cmFucy50byk7CisgICAgICBjaXZpbF9zZWNvbmQgY3M7
ICAvLyBjb21wYXJlIGNzIGluIHppIGFuZCBsYworICAgICAgaWYgKGZjbC5raW5kID09IHRpbWVf
em9uZTo6Y2l2aWxfbG9va3VwOjpVTklRVUUpIHsKKyAgICAgICAgaWYgKHRjbC5raW5kID09IHRp
bWVfem9uZTo6Y2l2aWxfbG9va3VwOjpVTklRVUUpIHsKKyAgICAgICAgICAvLyBCb3RoIHVuaXF1
ZTsgbXVzdCBiZSBhbiBpc19kc3Qgb3IgYWJiciBjaGFuZ2UuCisgICAgICAgICAgQVNTRVJUX0VR
KHRyYW5zLmZyb20sIHRyYW5zLnRvKTsKKyAgICAgICAgICBjb25zdCBhdXRvIHRyYW5zID0gZmNs
LnRyYW5zOworICAgICAgICAgIGNvbnN0IGF1dG8gdGFsID0gemkubG9va3VwKHRyYW5zKTsKKyAg
ICAgICAgICBjb25zdCBhdXRvIHRwcmV2ID0gdHJhbnMgLSBhYnNsOjp0aW1lX2ludGVybmFsOjpj
Y3R6OjpzZWNvbmRzKDEpOworICAgICAgICAgIGNvbnN0IGF1dG8gcGFsID0gemkubG9va3VwKHRw
cmV2KTsKKyAgICAgICAgICBpZiAocGFsLmlzX2RzdCA9PSB0YWwuaXNfZHN0KSB7CisgICAgICAg
ICAgICBBU1NFUlRfU1RSTkUocGFsLmFiYnIsIHRhbC5hYmJyKTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKHRpbWVfem9uZTo6
Y2l2aWxfbG9va3VwOjpSRVBFQVRFRCwgdGNsLmtpbmQpOworICAgICAgICBjcyA9IHRyYW5zLnRv
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUX0VRKHRpbWVfem9uZTo6Y2l2aWxfbG9v
a3VwOjpVTklRVUUsIHRjbC5raW5kKTsKKyAgICAgICAgQVNTRVJUX0VRKHRpbWVfem9uZTo6Y2l2
aWxfbG9va3VwOjpTS0lQUEVELCBmY2wua2luZCk7CisgICAgICAgIGNzID0gdHJhbnMuZnJvbTsK
KyAgICAgIH0KKyAgICAgIGlmIChjcy55ZWFyKCkgPiAyMDM3KSBicmVhazsgIC8vIGxpbWl0IHRl
c3QgdGltZSAoYW5kIHRvIDMyLWJpdCB0aW1lX3QpCisgICAgICBjb25zdCBhdXRvIGNsX3ppID0g
emkubG9va3VwKGNzKTsKKyAgICAgIGlmICh6aS5sb29rdXAoY2xfemkucHJlKS5pc19kc3QgPT0g
emkubG9va3VwKGNsX3ppLnBvc3QpLmlzX2RzdCkgeworICAgICAgICAvLyBUaGUgImxpYmMiIGlt
cGxlbWVudGF0aW9uIGNhbm5vdCBjb3JyZWN0bHkgY2xhc3NpZnkgdHJhbnNpdGlvbnMKKyAgICAg
ICAgLy8gdGhhdCBkb24ndCBjaGFuZ2UgdGhlICJ0bV9pc2RzdCIgZmxhZy4gIEluIEV1cm9wZS9W
b2xnb2dyYWQsIGZvcgorICAgICAgICAvLyBleGFtcGxlLCB0aGVyZSBpcyBhIFNLSVBQRUQgdHJh
bnNpdGlvbiBmcm9tICswMyB0byArMDQgd2l0aCBkc3Q9RgorICAgICAgICAvLyBvbiBib3RoIHNp
ZGVzIC4uLgorICAgICAgICAvLyAgIDE1NDA2ODExOTkgPSAyMDE4LTEwLTI4IDAxOjU5OjU5ICsw
MzowMDowMCBbZHN0PUYgb2ZmPTEwODAwXQorICAgICAgICAvLyAgIDE1NDA2ODEyMDAgPSAyMDE4
LTEwLTI4IDAzOjAwOjAwICswNDowMDowMCBbZHN0PUYgb2ZmPTE0NDAwXQorICAgICAgICAvLyBi
dXQgc3RkOjpta3RpbWUoMjAxOC0xMC0yOCAwMjowMDowMCwgdG1faXNkc3Q9MCkgZmFpbHMsIHVu
bGlrZSwKKyAgICAgICAgLy8gc2F5LCB0aGUgc2ltaWxhciBFdXJvcGUvQ2hpc2luYXUgdHJhbnNp
dGlvbiBmcm9tICswMiB0byArMDMgLi4uCisgICAgICAgIC8vICAgMTUyMTkzNTk5OSA9IDIwMTgt
MDMtMjUgMDE6NTk6NTkgKzAyOjAwOjAwIFtkc3Q9RiBvZmY9NzIwMF0KKyAgICAgICAgLy8gICAx
NTIxOTM2MDAwID0gMjAxOC0wMy0yNSAwMzowMDowMCArMDM6MDA6MDAgW2RzdD1UIG9mZj0xMDgw
MF0KKyAgICAgICAgLy8gd2hlcmUgc3RkOjpta3RpbWUoMjAxOC0wMy0yNSAwMjowMDowMCwgdG1f
aXNkc3Q9MCkgc3VjY2VlZHMgYW5kCisgICAgICAgIC8vIHJldHVybnMgMTUyMTkzNjAwMC4KKyAg
ICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAoY3MgPT0gY2l2aWxfc2Vjb25kKDIw
MzcsIDEwLCA0LCAyLCAwLCAwKSkgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0em5hbWUg
PSAqbnA7CisgICAgICAgIGlmICh0em5hbWUgPT0gIkFmcmljYS9DYXNhYmxhbmNhIiB8fCB0em5h
bWUgPT0gIkFmcmljYS9FbF9BYWl1biIpIHsKKyAgICAgICAgICAvLyBUaGUgImxpYmMiIGltcGxl
bWVudGF0aW9uIGdldHMgdGhpcyB0cmFuc2l0aW9uIHdyb25nIChhdCBsZWFzdAorICAgICAgICAg
IC8vIHVudGlsIDIwMThnIHdoZW4gaXQgd2FzIHJlbW92ZWQpLCByZXR1cm5pbmcgYW4gb2Zmc2V0
IG9mIDM2MDAKKyAgICAgICAgICAvLyBpbnN0ZWFkIG9mIDAuICBUT0RPOiBSZXZlcnQgdGhpcyB3
aGVuIDIwMThnIGlzIHViaXF1aXRvdXMuCisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGNvbnN0IGF1dG8gY2xfbGMgPSBsYy5sb29rdXAoY3MpOworICAgICAg
U0NPUEVEX1RSQUNFKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAiRm9yICIgPDwgY3MgPDwgIiBpbiAi
IDw8ICpucCk7CisgICAgICBFWFBFQ1RfRVEoY2xfemkua2luZCwgY2xfbGMua2luZCk7CisgICAg
ICBFWFBFQ1RfRVEoY2xfemkucHJlLCBjbF9sYy5wcmUpOworICAgICAgRVhQRUNUX0VRKGNsX3pp
LnRyYW5zLCBjbF9sYy50cmFucyk7CisgICAgICBFWFBFQ1RfRVEoY2xfemkucG9zdCwgY2xfbGMu
cG9zdCk7CisgICAgfQorICB9CisgIGlmIChlcCA9PSBudWxscHRyKSB7CisgICAgQVNTRVJUX0VR
KDAsIHVuc2V0ZW52KCJUWiIpKTsKKyAgfSBlbHNlIHsKKyAgICBBU1NFUlRfRVEoMCwgc2V0ZW52
KCJUWiIsIHR6X25hbWUuY19zdHIoKSwgMSkpOworICB9CisjZW5kaWYKIH0KIAogVEVTVChOZXh0
VHJhbnNpdGlvbiwgVVRDKSB7CkBAIC0xMTY5LDEwICsxMjc0LDEwIEBAIFRFU1QoVGltZVpvbmVF
ZGdlQ2FzZSwgUGFjaWZpY0FwaWEpIHsKICAgLy8gICAxMzI1MjM5MjAwID09IFNhdCwgMzEgRGVj
IDIwMTEgMDA6MDA6MDAgKzE0MDAgKCsxNCkKICAgYXV0byB0cCA9IGNvbnZlcnQoY2l2aWxfc2Vj
b25kKDIwMTEsIDEyLCAyOSwgMjMsIDU5LCA1OSksIHR6KTsKICAgRXhwZWN0VGltZSh0cCwgdHos
IDIwMTEsIDEyLCAyOSwgMjMsIDU5LCA1OSwgLTEwICogMzYwMCwgdHJ1ZSwgIi0xMCIpOwotICBF
WFBFQ1RfRVEoMzYzLCBnZXRfeWVhcmRheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOwor
ICBFWFBFQ1RfRVEoMzYzLCBnZXRfeWVhcmRheShjb252ZXJ0KHRwLCB0eikpKTsKICAgdHAgKz0g
YWJzbDo6dGltZV9pbnRlcm5hbDo6Y2N0ejo6c2Vjb25kcygxKTsKICAgRXhwZWN0VGltZSh0cCwg
dHosIDIwMTEsIDEyLCAzMSwgMCwgMCwgMCwgMTQgKiAzNjAwLCB0cnVlLCAiKzE0Iik7Ci0gIEVY
UEVDVF9FUSgzNjUsIGdldF95ZWFyZGF5KGNpdmlsX2RheShjb252ZXJ0KHRwLCB0eikpKSk7Cisg
IEVYUEVDVF9FUSgzNjUsIGdldF95ZWFyZGF5KGNvbnZlcnQodHAsIHR6KSkpOwogfQogCiBURVNU
KFRpbWVab25lRWRnZUNhc2UsIEFmcmljYUNhaXJvKSB7CkBAIC0xMjk0LDEwICsxMzk5LDEwIEBA
IFRFU1QoVGltZVpvbmVFZGdlQ2FzZSwgTmVnYXRpdmVZZWFyKSB7CiAgIGNvbnN0IHRpbWVfem9u
ZSB0eiA9IHV0Y190aW1lX3pvbmUoKTsKICAgYXV0byB0cCA9IGNvbnZlcnQoY2l2aWxfc2Vjb25k
KDAsIDEsIDEsIDAsIDAsIDApLCB0eik7CiAgIEV4cGVjdFRpbWUodHAsIHR6LCAwLCAxLCAxLCAw
LCAwLCAwLCAwICogMzYwMCwgZmFsc2UsICJVVEMiKTsKLSAgRVhQRUNUX0VRKHdlZWtkYXk6OnNh
dHVyZGF5LCBnZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBF
Q1RfRVEod2Vla2RheTo6c2F0dXJkYXksIGdldF93ZWVrZGF5KGNvbnZlcnQodHAsIHR6KSkpOwog
ICB0cCAtPSBhYnNsOjp0aW1lX2ludGVybmFsOjpjY3R6OjpzZWNvbmRzKDEpOwogICBFeHBlY3RU
aW1lKHRwLCB0eiwgLTEsIDEyLCAzMSwgMjMsIDU5LCA1OSwgMCAqIDM2MDAsIGZhbHNlLCAiVVRD
Iik7Ci0gIEVYUEVDVF9FUSh3ZWVrZGF5OjpmcmlkYXksIGdldF93ZWVrZGF5KGNpdmlsX2RheShj
b252ZXJ0KHRwLCB0eikpKSk7CisgIEVYUEVDVF9FUSh3ZWVrZGF5OjpmcmlkYXksIGdldF93ZWVr
ZGF5KGNvbnZlcnQodHAsIHR6KSkpOwogfQogCiBURVNUKFRpbWVab25lRWRnZUNhc2UsIFVUQzMy
Yml0TGltaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGlt
ZV96b25lX3Bvc2l4LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVf
cG9zaXguY2MKaW5kZXggNzVhZDhiY2JhOTMuLjAzODc0MGUxZDY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5jYwpAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEwMCw5ICsxMDAsOSBAQCBjb25zdCBjaGFyKiBQ
YXJzZURhdGVUaW1lKGNvbnN0IGNoYXIqIHAsIFBvc2l4VHJhbnNpdGlvbiogcmVzKSB7CiAgICAg
ICAgICAgaW50IHdlZWtkYXkgPSAwOwogICAgICAgICAgIGlmICgocCA9IFBhcnNlSW50KHAgKyAx
LCAwLCA2LCAmd2Vla2RheSkpICE9IG51bGxwdHIpIHsKICAgICAgICAgICAgIHJlcy0+ZGF0ZS5m
bXQgPSBQb3NpeFRyYW5zaXRpb246Ok07Ci0gICAgICAgICAgICByZXMtPmRhdGUubS5tb250aCA9
IHN0YXRpY19jYXN0PGludF9mYXN0OF90Pihtb250aCk7Ci0gICAgICAgICAgICByZXMtPmRhdGUu
bS53ZWVrID0gc3RhdGljX2Nhc3Q8aW50X2Zhc3Q4X3Q+KHdlZWspOwotICAgICAgICAgICAgcmVz
LT5kYXRlLm0ud2Vla2RheSA9IHN0YXRpY19jYXN0PGludF9mYXN0OF90Pih3ZWVrZGF5KTsKKyAg
ICAgICAgICAgIHJlcy0+ZGF0ZS5tLm1vbnRoID0gc3RhdGljX2Nhc3Q8c3RkOjppbnRfZmFzdDhf
dD4obW9udGgpOworICAgICAgICAgICAgcmVzLT5kYXRlLm0ud2VlayA9IHN0YXRpY19jYXN0PHN0
ZDo6aW50X2Zhc3Q4X3Q+KHdlZWspOworICAgICAgICAgICAgcmVzLT5kYXRlLm0ud2Vla2RheSA9
IHN0YXRpY19jYXN0PHN0ZDo6aW50X2Zhc3Q4X3Q+KHdlZWtkYXkpOwogICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgfQpAQCAtMTEwLDEzICsxMTAsMTMgQEAgY29uc3QgY2hhciogUGFyc2VE
YXRlVGltZShjb25zdCBjaGFyKiBwLCBQb3NpeFRyYW5zaXRpb24qIHJlcykgewogICAgICAgaW50
IGRheSA9IDA7CiAgICAgICBpZiAoKHAgPSBQYXJzZUludChwICsgMSwgMSwgMzY1LCAmZGF5KSkg
IT0gbnVsbHB0cikgewogICAgICAgICByZXMtPmRhdGUuZm10ID0gUG9zaXhUcmFuc2l0aW9uOjpK
OwotICAgICAgICByZXMtPmRhdGUuai5kYXkgPSBzdGF0aWNfY2FzdDxpbnRfZmFzdDE2X3Q+KGRh
eSk7CisgICAgICAgIHJlcy0+ZGF0ZS5qLmRheSA9IHN0YXRpY19jYXN0PHN0ZDo6aW50X2Zhc3Qx
Nl90PihkYXkpOwogICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICBpbnQgZGF5ID0gMDsKICAg
ICAgIGlmICgocCA9IFBhcnNlSW50KHAsIDAsIDM2NSwgJmRheSkpICE9IG51bGxwdHIpIHsKICAg
ICAgICAgcmVzLT5kYXRlLmZtdCA9IFBvc2l4VHJhbnNpdGlvbjo6TjsKLSAgICAgICAgcmVzLT5k
YXRlLmouZGF5ID0gc3RhdGljX2Nhc3Q8aW50X2Zhc3QxNl90PihkYXkpOworICAgICAgICByZXMt
PmRhdGUubi5kYXkgPSBzdGF0aWNfY2FzdDxzdGQ6OmludF9mYXN0MTZfdD4oZGF5KTsKICAgICAg
IH0KICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX3Bvc2l4LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9u
ZV9wb3NpeC5oCmluZGV4IDljY2Q0YThiNjhiLi42YTYwMDIyZmE3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5oCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNjgsMjUgKzY4LDM1IEBAIG5hbWVzcGFjZSBjY3R6
IHsKIC8vIGl0IHdvdWxkIHRha2UgdXMgdG8gYW5vdGhlciBkYXksIGFuZCBwZXJoYXBzIHdlZWss
IG9yIGV2ZW4gbW9udGguCiBzdHJ1Y3QgUG9zaXhUcmFuc2l0aW9uIHsKICAgZW51bSBEYXRlRm9y
bWF0IHsgSiwgTiwgTSB9OwotICBzdHJ1Y3QgeworCisgIHN0cnVjdCBEYXRlIHsKKyAgICBzdHJ1
Y3QgTm9uTGVhcERheSB7CisgICAgICBzdGQ6OmludF9mYXN0MTZfdCBkYXk7ICAvLyBkYXkgb2Yg
bm9uLWxlYXAgeWVhciBbMTozNjVdCisgICAgfTsKKyAgICBzdHJ1Y3QgRGF5IHsKKyAgICAgIHN0
ZDo6aW50X2Zhc3QxNl90IGRheTsgIC8vIGRheSBvZiB5ZWFyIFswOjM2NV0KKyAgICB9OworICAg
IHN0cnVjdCBNb250aFdlZWtXZWVrZGF5IHsKKyAgICAgIHN0ZDo6aW50X2Zhc3Q4X3QgbW9udGg7
ICAgIC8vIG1vbnRoIG9mIHllYXIgWzE6MTJdCisgICAgICBzdGQ6OmludF9mYXN0OF90IHdlZWs7
ICAgICAvLyB3ZWVrIG9mIG1vbnRoIFsxOjVdICg1PT1sYXN0KQorICAgICAgc3RkOjppbnRfZmFz
dDhfdCB3ZWVrZGF5OyAgLy8gMD09U3VuLCAuLi4sIDY9U2F0CisgICAgfTsKKwogICAgIERhdGVG
b3JtYXQgZm10OworCiAgICAgdW5pb24gewotICAgICAgc3RydWN0IHsKLSAgICAgICAgc3RkOjpp
bnRfZmFzdDE2X3QgZGF5OyAgLy8gZGF5IG9mIG5vbi1sZWFwIHllYXIgWzE6MzY1XQotICAgICAg
fSBqOwotICAgICAgc3RydWN0IHsKLSAgICAgICAgc3RkOjppbnRfZmFzdDE2X3QgZGF5OyAgLy8g
ZGF5IG9mIHllYXIgWzA6MzY1XQotICAgICAgfSBuOwotICAgICAgc3RydWN0IHsKLSAgICAgICAg
c3RkOjppbnRfZmFzdDhfdCBtb250aDsgICAgLy8gbW9udGggb2YgeWVhciBbMToxMl0KLSAgICAg
ICAgc3RkOjppbnRfZmFzdDhfdCB3ZWVrOyAgICAgLy8gd2VlayBvZiBtb250aCBbMTo1XSAoNT09
bGFzdCkKLSAgICAgICAgc3RkOjppbnRfZmFzdDhfdCB3ZWVrZGF5OyAgLy8gMD09U3VuLCAuLi4s
IDY9U2F0Ci0gICAgICB9IG07CisgICAgICBOb25MZWFwRGF5IGo7CisgICAgICBEYXkgbjsKKyAg
ICAgIE1vbnRoV2Vla1dlZWtkYXkgbTsKICAgICB9OwotICB9IGRhdGU7Ci0gIHN0cnVjdCB7Cisg
IH07CisKKyAgc3RydWN0IFRpbWUgewogICAgIHN0ZDo6aW50X2Zhc3QzMl90IG9mZnNldDsgIC8v
IHNlY29uZHMgYmVmb3JlL2FmdGVyIDAwOjAwOjAwCi0gIH0gdGltZTsKKyAgfTsKKworICBEYXRl
IGRhdGU7CisgIFRpbWUgdGltZTsKIH07CiAKIC8vIFRoZSBlbnRpcmV0eSBvZiBhIFBPU0lYLXN0
cmluZyBzcGVjaWZpZWQgdGltZS16b25lIHJ1bGUuIFRoZSBzdGFuZGFyZApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90emZpbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei9zcmMvdHpmaWxlLmgKaW5kZXggOTBjZmMwYzQyOTguLjUxYjFmMWYzZDgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3R6ZmlsZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdHpmaWxlLmgKQEAgLTEsMyArMSw1IEBACisvKiBMYXlv
dXQgYW5kIGxvY2F0aW9uIG9mIFRaaWYgZmlsZXMuICAqLworCiAjaWZuZGVmIFRaRklMRV9ICiAK
ICNkZWZpbmUgVFpGSUxFX0gKQEAgLTMxLDYgKzMzLDkgQEAKICNkZWZpbmUgVFpERUZSVUxFUwki
cG9zaXhydWxlcyIKICNlbmRpZiAvKiAhZGVmaW5lZCBUWkRFRlJVTEVTICovCiAKKworLyogU2Vl
IEludGVybmV0IFJGQyA4NTM2IGZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGZvbGxvd2luZyBm
b3JtYXQuICAqLworCiAvKgogKiogRWFjaCBmaWxlIGJlZ2lucyB3aXRoLiAuIC4KICovCkBAIC00
MSw3ICs0Niw3IEBAIHN0cnVjdCB0emhlYWQgewogCWNoYXIJdHpoX21hZ2ljWzRdOwkJLyogVFpf
TUFHSUMgKi8KIAljaGFyCXR6aF92ZXJzaW9uWzFdOwkJLyogJ1wwJyBvciAnMicgb3IgJzMnIGFz
IG9mIDIwMTMgKi8KIAljaGFyCXR6aF9yZXNlcnZlZFsxNV07CS8qIHJlc2VydmVkOyBtdXN0IGJl
IHplcm8gKi8KLQljaGFyCXR6aF90dGlzZ210Y250WzRdOwkvKiBjb2RlZCBudW1iZXIgb2YgdHJh
bnMuIHRpbWUgZmxhZ3MgKi8KKwljaGFyCXR6aF90dGlzdXRjbnRbNF07CS8qIGNvZGVkIG51bWJl
ciBvZiB0cmFucy4gdGltZSBmbGFncyAqLwogCWNoYXIJdHpoX3R0aXNzdGRjbnRbNF07CS8qIGNv
ZGVkIG51bWJlciBvZiB0cmFucy4gdGltZSBmbGFncyAqLwogCWNoYXIJdHpoX2xlYXBjbnRbNF07
CQkvKiBjb2RlZCBudW1iZXIgb2YgbGVhcCBzZWNvbmRzICovCiAJY2hhcgl0emhfdGltZWNudFs0
XTsJCS8qIGNvZGVkIG51bWJlciBvZiB0cmFuc2l0aW9uIHRpbWVzICovCkBAIC02NCwxNCArNjks
MTUgQEAgc3RydWN0IHR6aGVhZCB7CiAqKgkJb25lIChjaGFyIFs0XSkJCXRvdGFsIGNvcnJlY3Rp
b24gYWZ0ZXIgYWJvdmUKICoqCXR6aF90dGlzc3RkY250IChjaGFyKXMJCWluZGV4ZWQgYnkgdHlw
ZTsgaWYgMSwgdHJhbnNpdGlvbgogKioJCQkJCXRpbWUgaXMgc3RhbmRhcmQgdGltZSwgaWYgMCwK
LSoqCQkJCQl0cmFuc2l0aW9uIHRpbWUgaXMgd2FsbCBjbG9jayB0aW1lCi0qKgkJCQkJaWYgYWJz
ZW50LCB0cmFuc2l0aW9uIHRpbWVzIGFyZQotKioJCQkJCWFzc3VtZWQgdG8gYmUgd2FsbCBjbG9j
ayB0aW1lCi0qKgl0emhfdHRpc2dtdGNudCAoY2hhcilzCQlpbmRleGVkIGJ5IHR5cGU7IGlmIDEs
IHRyYW5zaXRpb24KLSoqCQkJCQl0aW1lIGlzIFVULCBpZiAwLAotKioJCQkJCXRyYW5zaXRpb24g
dGltZSBpcyBsb2NhbCB0aW1lCi0qKgkJCQkJaWYgYWJzZW50LCB0cmFuc2l0aW9uIHRpbWVzIGFy
ZQorKioJCQkJCXRyYW5zaXRpb24gdGltZSBpcyBsb2NhbCAod2FsbCBjbG9jaykKKyoqCQkJCQl0
aW1lOyBpZiBhYnNlbnQsIHRyYW5zaXRpb24gdGltZXMgYXJlCiAqKgkJCQkJYXNzdW1lZCB0byBi
ZSBsb2NhbCB0aW1lCisqKgl0emhfdHRpc3V0Y250IChjaGFyKXMJCWluZGV4ZWQgYnkgdHlwZTsg
aWYgMSwgdHJhbnNpdGlvbgorKioJCQkJCXRpbWUgaXMgVVQsIGlmIDAsIHRyYW5zaXRpb24gdGlt
ZSBpcworKioJCQkJCWxvY2FsIHRpbWU7IGlmIGFic2VudCwgdHJhbnNpdGlvbgorKioJCQkJCXRp
bWVzIGFyZSBhc3N1bWVkIHRvIGJlIGxvY2FsIHRpbWUuCisqKgkJCQkJV2hlbiB0aGlzIGlzIDEs
IHRoZSBjb3JyZXNwb25kaW5nCisqKgkJCQkJc3RkL3dhbGwgaW5kaWNhdG9yIG11c3QgYWxzbyBi
ZSAxLgogKi8KIAogLyoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMv
em9uZV9pbmZvX3NvdXJjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvem9uZV9p
bmZvX3NvdXJjZS5jYwppbmRleCBiZjJkMmQyZDJiNS4uNDJmNTBjNWU4ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvem9uZV9pbmZvX3NvdXJjZS5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3pvbmVfaW5mb19zb3VyY2UuY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC00Niw3ICs0NiwxMyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8YWJzbDo6dGltZV9pbnRlcm5hbDo6Y2N0ejo6Wm9uZUluZm9Tb3VyY2U+IERlZmF1
bHRGYWN0b3J5KAogLy8gQSAid2VhayIgZGVmaW5pdGlvbiBmb3IgY2N0el9leHRlbnNpb246Onpv
bmVfaW5mb19zb3VyY2VfZmFjdG9yeS4KIC8vIFRoZSB1c2VyIG1heSBvdmVycmlkZSB0aGlzIHdp
dGggdGhlaXIgb3duICJzdHJvbmciIGRlZmluaXRpb24gKHNlZQogLy8gem9uZV9pbmZvX3NvdXJj
ZS5oKS4KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2lmICFkZWZpbmVkKF9faGFzX2F0dHJpYnV0
ZSkKKyNkZWZpbmUgX19oYXNfYXR0cmlidXRlKHgpIDAKKyNlbmRpZgorI2lmIF9faGFzX2F0dHJp
YnV0ZSh3ZWFrKSB8fCBkZWZpbmVkKF9fR05VQ19fKQorWm9uZUluZm9Tb3VyY2VGYWN0b3J5IHpv
bmVfaW5mb19zb3VyY2VfZmFjdG9yeQorICAgIF9fYXR0cmlidXRlX18oKHdlYWspKSA9IERlZmF1
bHRGYWN0b3J5OworI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX0xJQkNQUF9W
RVJTSU9OKQogZXh0ZXJuIFpvbmVJbmZvU291cmNlRmFjdG9yeSB6b25lX2luZm9fc291cmNlX2Zh
Y3Rvcnk7CiBleHRlcm4gWm9uZUluZm9Tb3VyY2VGYWN0b3J5IGRlZmF1bHRfZmFjdG9yeTsKIFpv
bmVJbmZvU291cmNlRmFjdG9yeSBkZWZhdWx0X2ZhY3RvcnkgPSBEZWZhdWx0RmFjdG9yeTsKQEAg
LTU0LDI1ICs2MCwxNyBAQCBab25lSW5mb1NvdXJjZUZhY3RvcnkgZGVmYXVsdF9mYWN0b3J5ID0g
RGVmYXVsdEZhY3Rvcnk7CiAjcHJhZ21hIGNvbW1lbnQoIFwKICAgICBsaW5rZXIsICAgICAgXAog
ICAgICIvYWx0ZXJuYXRlbmFtZTo/em9uZV9pbmZvX3NvdXJjZV9mYWN0b3J5QGNjdHpfZXh0ZW5z
aW9uQHRpbWVfaW50ZXJuYWxAYWJzbEBAM1A2QT9BVj8kdW5pcXVlX3B0ckBWWm9uZUluZm9Tb3Vy
Y2VAY2N0ekB0aW1lX2ludGVybmFsQGFic2xAQFU/JGRlZmF1bHRfZGVsZXRlQFZab25lSW5mb1Nv
dXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAQHN0ZEBAQHN0ZEBAQUJWPyRiYXNpY19zdHJp
bmdARFU/JGNoYXJfdHJhaXRzQERAc3RkQEBWPyRhbGxvY2F0b3JAREAyQEA1QEFCVj8kZnVuY3Rp
b25AJCRBNkE/QVY/JHVuaXF1ZV9wdHJAVlpvbmVJbmZvU291cmNlQGNjdHpAdGltZV9pbnRlcm5h
bEBhYnNsQEBVPyRkZWZhdWx0X2RlbGV0ZUBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2ludGVy
bmFsQGFic2xAQEBzdGRAQEBzdGRAQEFCVj8kYmFzaWNfc3RyaW5nQERVPyRjaGFyX3RyYWl0c0BE
QHN0ZEBAVj8kYWxsb2NhdG9yQERAMkBAMkBAWkA1QEBaQT0/ZGVmYXVsdF9mYWN0b3J5QGNjdHpf
ZXh0ZW5zaW9uQHRpbWVfaW50ZXJuYWxAYWJzbEBAM1A2QT9BVj8kdW5pcXVlX3B0ckBWWm9uZUlu
Zm9Tb3VyY2VAY2N0ekB0aW1lX2ludGVybmFsQGFic2xAQFU/JGRlZmF1bHRfZGVsZXRlQFZab25l
SW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAQHN0ZEBAQHN0ZEBAQUJWPyRiYXNp
Y19zdHJpbmdARFU/JGNoYXJfdHJhaXRzQERAc3RkQEBWPyRhbGxvY2F0b3JAREAyQEA1QEFCVj8k
ZnVuY3Rpb25AJCRBNkE/QVY/JHVuaXF1ZV9wdHJAVlpvbmVJbmZvU291cmNlQGNjdHpAdGltZV9p
bnRlcm5hbEBhYnNsQEBVPyRkZWZhdWx0X2RlbGV0ZUBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1l
X2ludGVybmFsQGFic2xAQEBzdGRAQEBzdGRAQEFCVj8kYmFzaWNfc3RyaW5nQERVPyRjaGFyX3Ry
YWl0c0BEQHN0ZEBAVj8kYWxsb2NhdG9yQERAMkBAMkBAWkA1QEBaQSIpCi0jZWxpZiBkZWZpbmVk
KF9NX0lBXzY0KSB8fCBkZWZpbmVkKF9NX0FNRDY0KQorI2VsaWYgZGVmaW5lZChfTV9JQV82NCkg
fHwgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9BUk02NCkKICNwcmFnbWEgY29tbWVu
dCggXAogICAgIGxpbmtlciwgICAgICBcCiAgICAgIi9hbHRlcm5hdGVuYW1lOj96b25lX2luZm9f
c291cmNlX2ZhY3RvcnlAY2N0el9leHRlbnNpb25AdGltZV9pbnRlcm5hbEBhYnNsQEAzUDZBP0FW
PyR1bmlxdWVfcHRyQFZab25lSW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAVT8k
ZGVmYXVsdF9kZWxldGVAVlpvbmVJbmZvU291cmNlQGNjdHpAdGltZV9pbnRlcm5hbEBhYnNsQEBA
c3RkQEBAc3RkQEBBRUJWPyRiYXNpY19zdHJpbmdARFU/JGNoYXJfdHJhaXRzQERAc3RkQEBWPyRh
bGxvY2F0b3JAREAyQEA1QEFFQlY/JGZ1bmN0aW9uQCQkQTZBP0FWPyR1bmlxdWVfcHRyQFZab25l
SW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAVT8kZGVmYXVsdF9kZWxldGVAVlpv
bmVJbmZvU291cmNlQGNjdHpAdGltZV9pbnRlcm5hbEBhYnNsQEBAc3RkQEBAc3RkQEBBRUJWPyRi
YXNpY19zdHJpbmdARFU/JGNoYXJfdHJhaXRzQERAc3RkQEBWPyRhbGxvY2F0b3JAREAyQEAyQEBa
QDVAQFpFQT0/ZGVmYXVsdF9mYWN0b3J5QGNjdHpfZXh0ZW5zaW9uQHRpbWVfaW50ZXJuYWxAYWJz
bEBAM1A2QT9BVj8kdW5pcXVlX3B0ckBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2ludGVybmFs
QGFic2xAQFU/JGRlZmF1bHRfZGVsZXRlQFZab25lSW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJu
YWxAYWJzbEBAQHN0ZEBAQHN0ZEBAQUVCVj8kYmFzaWNfc3RyaW5nQERVPyRjaGFyX3RyYWl0c0BE
QHN0ZEBAVj8kYWxsb2NhdG9yQERAMkBANUBBRUJWPyRmdW5jdGlvbkAkJEE2QT9BVj8kdW5pcXVl
X3B0ckBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2ludGVybmFsQGFic2xAQFU/JGRlZmF1bHRf
ZGVsZXRlQFZab25lSW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAQHN0ZEBAQHN0
ZEBAQUVCVj8kYmFzaWNfc3RyaW5nQERVPyRjaGFyX3RyYWl0c0BEQHN0ZEBAVj8kYWxsb2NhdG9y
QERAMkBAMkBAWkA1QEBaRUEiKQogI2Vsc2UKICNlcnJvciBVbnN1cHBvcnRlZCBNU1ZDIHBsYXRm
b3JtCi0jZW5kaWYKLSNlbHNlICAvLyBfTVNDX1ZFUgotI2lmICFkZWZpbmVkKF9faGFzX2F0dHJp
YnV0ZSkKLSNkZWZpbmUgX19oYXNfYXR0cmlidXRlKHgpIDAKLSNlbmRpZgotI2lmIF9faGFzX2F0
dHJpYnV0ZSh3ZWFrKSB8fCBkZWZpbmVkKF9fR05VQ19fKQotWm9uZUluZm9Tb3VyY2VGYWN0b3J5
IHpvbmVfaW5mb19zb3VyY2VfZmFjdG9yeQotICAgIF9fYXR0cmlidXRlX18oKHdlYWspKSA9IERl
ZmF1bHRGYWN0b3J5OworI2VuZGlmICAvLyBfTV88UExBVEZPUk0+CiAjZWxzZQogLy8gTWFrZSBp
dCBhICJzdHJvbmciIGRlZmluaXRpb24gaWYgd2UgaGF2ZSBubyBvdGhlciBjaG9pY2UuCiBab25l
SW5mb1NvdXJjZUZhY3Rvcnkgem9uZV9pbmZvX3NvdXJjZV9mYWN0b3J5ID0gRGVmYXVsdEZhY3Rv
cnk7CiAjZW5kaWYKLSNlbmRpZiAgLy8gX01TQ19WRVIKIAogfSAgLy8gbmFtZXNwYWNlIGNjdHpf
ZXh0ZW5zaW9uCiB9ICAvLyBuYW1lc3BhY2UgdGltZV9pbnRlcm5hbApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3ZlcnNpb24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvdmVyc2lvbgppbmRleCBmZTg2YjVjYzg3Ny4uOGQ0YTQzYmFmNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS92ZXJzaW9uCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS92ZXJzaW9uCkBAIC0xICsxIEBA
Ci0yMDE4ZS0yLWc5OWRkNjk1CisyMDE5YgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9BYmlkamFuIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9BYmlkamFuCmluZGV4IDZmZDFhZjMy
ZGFlYzE5MzIzOWFiNmI0NzI1MjZmZDNkNmJkYjJmNzYuLjI4YjMyYWIyZTBiOTA1M2YzOWE5MWQ5
ZjI4YjYwNzJlNDE0MjM5NTQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDgKemNt
V0hFJTFrcTJ6elowR3ZQP2tDRzNuVlA1NjF1aHw1IWtrdi10UmlGdGBKODJubU0jMkxoWjFhUkUm
Oy1+c0AyCkNTUWw5VQoKbGl0ZXJhbCAxNzAKemNtV0hFJTFrcTJ6eU00QDVmQkNlN0BNTzMkZUh3
UGtfUTlofE5ubjFLdkY9ITteUH5fOzEwd2Y1Skd9IUtmcFF8ClE4MiRxUmVwOSlDI3Y1PH0wTSlA
NStXLUluCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FmcmljYS9BY2NyYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BZnJpY2EvQWNjcmEKaW5kZXggODcyNmU4MGRmMjdmOGQ2Nzk0YjI5NTY3NGExOGE3
MWM5Y2FiNGM4NS4uNjk3Yjk5MzNlYjcyZTkzYmUzYTE0NGZlNjEwMzU0MDc2YTUzZTUwYSAxMDA2
NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA4NQp6Y21YQGJ3dDtQZXhGYGI+JjxDPWFmdFlXaSFK
ZiQ8blJGLTFGZV49VlYjSnxuYX5XZD1CVE58Xm0lREY+MFQlIW8KQzl0fFlgCgpkZWx0YSAxMjAK
emNtZG5NYzhZQyt4Rmo8SjB8Tit5ZkJfSkwqbkFCQFZ4ckMtTXV5MWBuS1VQVlV9QnJoI2pMO3Y2
YTwwXjs8OHh2Clp7RDRSXlkpKXBaVV97bCkxQ2lvI19ZRT1OMHMjOFk1aVM0IwoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvQWRk
aXNfQWJhYmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZy
aWNhL0FkZGlzX0FiYWJhCmluZGV4IDM5NjMxZjIxNDg2YzYxYTE5NjM5ZDczZDc1NzFlZjA4NDAx
NzZiM2UuLjlhMjkxOGY0MDQwNDM0MGQ1NzZjZTg1MGYyOTUwYmFhZDc1MWY4YTggMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKZGVsdGEgODYKemNtYlFzXnFYO2x4R0RuQFU7KG1PZm1tZVl5SVgmQDlH
WjNFXyhiO2BafWxIdW5kb1JYdX5BJFVOaHQkZD9abUFMCk9LeHVYXlNIfT10Vj1lJWxAKVNxXwoK
ZGVsdGEgMTIxCnpjbWV5KElHMVVIeEUzbnwwfE4reTBFe2l0ME9WfFpjazlvVkwkZlglcFhoJCR0
XlVJKzM9e1g2YWVgRVYhTmZ1ZApoUyh0Sz0wRXtqMjEwdjViYWg/SnJOUSlxcDUyVXpVOVliYER4
ZDFybTdSdnd0CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FmcmljYS9BbGdpZXJzIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0FmcmljYS9BbGdpZXJzCmluZGV4IDJhMjVmM2FjMjY4ZmQ1YzYwNWM1OGQz
NjI2MDc1OWM4ZjhkMTI1YmMuLmFlMDQzNDIzMTMwYWFjMTlkN2Q4NTFjOWYwOTJmZWRiYjNkYmI2
OTggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTIKemNtZXl0ZFleVElJM3ZTRzI/NTNs
Oy1VO2R6eVR0RktuYUxKWV5sdkRpfkBga3gwSkFSSWxHNEY4Z2M7dUBzMD9pCgpkZWx0YSA4MAp6
Y21jYzVgaCNfWEkzdmVvMlMkO0pJKTZBQXBrUld5RVFrJWBEP2B+KktjTW9QTGxefVpDdkdtfmh3
PlM/b0x4aDcKRzRZPmRtellCVysKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0FzbWFyYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvQXNtYXJhCmluZGV4IDM5NjMxZjIxNDg2YzYx
YTE5NjM5ZDczZDc1NzFlZjA4NDAxNzZiM2UuLjlhMjkxOGY0MDQwNDM0MGQ1NzZjZTg1MGYyOTUw
YmFhZDc1MWY4YTggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODYKemNtYlFzXnFYO2x4
R0RuQFU7KG1PZm1tZVl5SVgmQDlHWjNFXyhiO2BafWxIdW5kb1JYdX5BJFVOaHQkZD9abUFMCk9L
eHVYXlNIfT10Vj1lJWxAKVNxXwoKZGVsdGEgMTIxCnpjbWV5KElHMVVIeEUzbnwwfE4reTBFe2l0
ME9WfFpjazlvVkwkZlglcFhoJCR0XlVJKzM9e1g2YWVgRVYhTmZ1ZApoUyh0Sz0wRXtqMjEwdjVi
YWg/SnJOUSlxcDUyVXpVOVliYER4ZDFybTdSdnd0CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9Bc21lcmEgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0FzbWVyYQppbmRleCAzOTYz
MWYyMTQ4NmM2MWExOTYzOWQ3M2Q3NTcxZWYwODQwMTc2YjNlLi45YTI5MThmNDA0MDQzNDBkNTc2
Y2U4NTBmMjk1MGJhYWQ3NTFmOGE4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDg2Cnpj
bWJRc15xWDtseEdEbkBVOyhtT2ZtbWVZeUlYJkA5R1ozRV8oYjtgWn1sSHVuZG9SWHV+QSRVTmh0
JGQ/Wm1BTApPS3h1WF5TSH09dFY9ZSVsQClTcV8KCmRlbHRhIDEyMQp6Y21leShJRzFVSHhFM258
MHxOK3kwRXtpdDBPVnxaY2s5b1ZMJGZYJXBYaCQkdF5VSSszPXtYNmFlYEVWIU5mdWQKaFModEs9
MEV7ajIxMHY1YmFoP0pyTlEpcXA1MlV6VTlZYmBEeGQxcm03UnZ3dAoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvQmFtYWtvIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9CYW1ha28K
aW5kZXggNmZkMWFmMzJkYWVjMTkzMjM5YWI2YjQ3MjUyNmZkM2Q2YmRiMmY3Ni4uMjhiMzJhYjJl
MGI5MDUzZjM5YTkxZDlmMjhiNjA3MmU0MTQyMzk1NCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDE0OAp6Y21XSEUlMWtxMnp6WjBHdlA/a0NHM25WUDU2MXVofDUha2t2LXRSaUZ0YEo4
Mm5tTSMyTGhaMWFSRSY7LX5zQDIKQ1NRbDlVCgpsaXRlcmFsIDE3MAp6Y21XSEUlMWtxMnp5TTRA
NWZCQ2U3QE1PMyRlSHdQa19ROWh8Tm5uMUt2Rj0hO15Qfl87MTB3ZjVKR30hS2ZwUXwKUTgyJHFS
ZXA5KUMjdjU8fTBNKUA1K1ctSW4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0Jhbmd1aSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvQmFuZ3VpCmluZGV4IGIxYzk3Y2M1YTc3ZWIx
ODdjYzhlYThhNDAzMWE0NWE5YmYxNTNiMzUuLjBjODAxMzdjNzQ4NjU4NDNiZGE0ZGU1NDRmYmQ3
MjY1MjJlYzM1MjEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDkKemNtV0hFJTFr
cTJ6elowR3ZQP2tDdWB1diswRmM5TTA4LTg7emApfDs4XlJGbzd7VS1qZis3RWIwSDtBKksrfCok
CkZ4ZDBSbTV0amV9CgpsaXRlcmFsIDE3MQp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRYT1dw
SWU+d1lmcX5mb0IqaURken5iV0AhVnZCbDBeJX0ra1lMJm0KVHVucT0+fDNIQT5SNCQ8THhgdGM7
STZNOz4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQWZyaWNhL0Jhbmp1bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BZnJpY2EvQmFuanVsCmluZGV4IDZmZDFhZjMyZGFlYzE5MzIzOWFiNmI0NzI1MjZm
ZDNkNmJkYjJmNzYuLjI4YjMyYWIyZTBiOTA1M2YzOWE5MWQ5ZjI4YjYwNzJlNDE0MjM5NTQgMTAw
NjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDgKemNtV0hFJTFrcTJ6elowR3ZQP2tDRzNu
VlA1NjF1aHw1IWtrdi10UmlGdGBKODJubU0jMkxoWjFhUkUmOy1+c0AyCkNTUWw5VQoKbGl0ZXJh
bCAxNzAKemNtV0hFJTFrcTJ6eU00QDVmQkNlN0BNTzMkZUh3UGtfUTlofE5ubjFLdkY9ITteUH5f
OzEwd2Y1Skd9IUtmcFF8ClE4MiRxUmVwOSlDI3Y1PH0wTSlANStXLUluCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9CaXNzYXUg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0Jpc3Nh
dQppbmRleCA4ZTMyYmUzZTZlODQzMzc5ZTY5MDAwMjczNTUyYWI4NTg4YzVjYTM0Li44MmVhNWFh
ZjBjNmFlMmIzZWM1ODIwMTNiNmQxNmU2ZDZmMjllYjBhIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDYzCnpjbWNiPmMhK1U9dkxGKSEwfFBTPF5HdGQrWDk4ej5xUUZFO1BmNTdvZTtAISEw
Mk1HbUItUGxzKzxpan54QnZ+KgpCNVlHU3IKCmxpdGVyYWwgMjA4CnpjbVdIRSUxa3EyenlRb1o1
ZkJDZTdATWE3JGVId1AmSUhjJUw7KGd5cnZMdnhyWjZ4NyRxeClIQWF4OEpLRTVGZwpseCgwPn0/
bShKPjVyamZXRiNaU0Y1UmklZ3xBVlhuYVk/WD4zdXZuVzdYVGQ/QiF2SX4KCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0JsYW50
eXJlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9C
bGFudHlyZQppbmRleCA1Yjg3MWRiYWE3YzI5NjlmNmI0ZGZjODU0MTg0YTI5MDEwYmZiMmNjLi41
Mjc1M2MwZjg3YmJmYTQ1N2FkYTg5ZDQwMDkwOGEzZDY1MzdhYzBlIDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenpaMEd2UD9rQyhkMmdZM3k+cSUxNXolZHpg
KXw7OF5ZbDE3e1UtamYrN0ViMEg7QSpLK3wtTQpGeEJ6en42Q01CbgoKbGl0ZXJhbCAxNzEKemNt
V0hFJTFrcTJ6eU00QDVmQkNlN0BNTzMkWjJ2cmBofGchZmtDYlpCcWdLM3p+YldAIXI8JX0wXiV9
K2tZTCZtClR1bnE9PnwzSEE+UjQkPEx4PCpfOHRoXk1VCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9CcmF6emF2aWxsZSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvQnJhenphdmls
bGUKaW5kZXggYjFjOTdjYzVhNzdlYjE4N2NjOGVhOGE0MDMxYTQ1YTliZjE1M2IzNS4uMGM4MDEz
N2M3NDg2NTg0M2JkYTRkZTU0NGZiZDcyNjUyMmVjMzUyMSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDE0OQp6Y21XSEUlMWtxMnp6WjBHdlA/a0N1YHV2KzBGYzlNMDgtODt6YCl8Ozhe
UkZvN3tVLWpmKzdFYjBIO0EqSyt8KiQKRnhkMFJtNXRqZX0KCmxpdGVyYWwgMTcxCnpjbVdIRSUx
a3EyenlNNEA1ZkJDZTdATU8zJFhPV3BJZT53WWZxfmZvQippRGR6fmJXQCFWdkJsMF4lfStrWUwm
bQpUdW5xPT58M0hBPlI0JDxMeGB0YztJNk07PgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvQnVqdW1idXJhIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9CdWp1bWJ1cmEKaW5kZXgg
NWI4NzFkYmFhN2MyOTY5ZjZiNGRmYzg1NDE4NGEyOTAxMGJmYjJjYy4uNTI3NTNjMGY4N2JiZmE0
NTdhZGE4OWQ0MDA5MDhhM2Q2NTM3YWMwZSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDE0OQp6Y21XSEUlMWtxMnp6WjBHdlA/a0MoZDJnWTN5PnElMTV6JWR6YCl8OzheWWwxN3tVLWpm
KzdFYjBIO0EqSyt8LU0KRnhCenp+NkNNQm4KCmxpdGVyYWwgMTcxCnpjbVdIRSUxa3EyenlNNEA1
ZkJDZTdATU8zJFoydnJgaHxnIWZrQ2JaQnFnSzN6fmJXQCFyPCV9MF4lfStrWUwmbQpUdW5xPT58
M0hBPlI0JDxMeDwqXzh0aF5NVQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvQ2Fpcm8gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0NhaXJvCmluZGV4IGJhMDk3NTA0NDU5NjczZTI1
NDgzMWVkZWE2ODljMmY4MTQzOTkwZGYuLmQzZjgxOTYyM2ZjOWVmOTBkMzI3MzgwZmFkMTUzNDFl
YzFhMGUyMDIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTMKemNtZG5Pem5GaTVJM3ZT
R2k1Kk42IzY9bF5mQ1dTVkt8SyhJKnUweExuMTMpJldAS04lJmdKU0ZxSER3ajAwPUF6CkFNRjBR
KgoKZGVsdGEgODAKemNtWjM/emxERS1JM3ZxT2k1Kk5WM192aEpUb3khdyorOUFoJUk1dDZXUHJm
dEtUSlFFODV0JVVGYT1Kd1hYMlJiClIla0l3JjY2YlB0NGJlNT8wc3N9VDRLRHh5CgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9D
YXNhYmxhbmNhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Fm
cmljYS9DYXNhYmxhbmNhCmluZGV4IDY1ZGUzNDQ1Nzk4NmVlNzU1ZmZkNjE0ZGU2Mzc4ZGJlZTk2
NWE2NGQuLjI0NWY0ZWJlMTgxMjdjMTBiMjM1OWQ2OGVjZGMwMzdkZDZlYTc0ZDYgMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyNDI5CnpjbWJgSWVAeFY2OUxFcEVMUDVKNGs7N0ZfMjNl
OD1vSWtQPmE8RWJaMW48QkQ1ZnpDYTBwbU8ha2l4aTJMNTQmIQp6MkJoNUJDeXwoZHp6Umo2IWp6
dzhxJXNDMUklWFBmZzxWWEM0ak1pMCYre0tgI2E3U2xfUFdwS2BgcV5hPE1yTkcKekFDVkJkUXVC
e3pyK2hrM2V3fDd9OSRQITdveX1jX1Q0VUdIbkVDcVdEe1ZKY3BWSGo4enN4cjJaaEJ8KDtfcFU+
CnojS1VIWCZTYWI4SnR2TFI/KVBqOWR3azd7M2RXNjNeQFcoViVQTmVuTzwhblVTZSM8cHhaeE1g
I0A0MEElYGR4Wgp6SGg8REBlMUdfWUliZz9LVl9AbGRiSV9gTStaSFFQdXRPXmFkIUc9JmFhOXpP
QGlCIUFlb3RISG1EQVJ3ZVdZN14KemZPS14payM2ezFwJGBiOShCfnA0Ry1FYEIqNFJfbj51VmAm
IWlUbyRqP2d3c3R1UT5SN2xye3I7bzw+PjgqfilACnphRSp2KW5uTXYyUjxZZ3YwJlZZS0VGeWRU
Q35fKVpNM3BzQVI4UE95V2lwNmVsdEl6SDlVP2wtT35raylRSCswfgp6XytaUmcjNGRTKjsjdz5z
P3ZEfFhRMX5oKHY7flU5eFRfK3VfeUh4YVVONGdPPzR9Z1FKQ3lSfmR8QDA0cH1wRCQKekdTeHA4
cmQhWGB7djR3SGpVNklZem1RVW9DUTx0R3ZtKUl2TD8xbWBEaF95QiNLR1BrSXlpTS1XTEVBS25T
STVTCnpXeDZHQHNASUQtYn44UzZYVXNGN15FfXNubVk/YkFNfFU4PkJDVlowc0J5cT00Z2E9dDJu
Zl9gSmlOVCsqR3JAUwp6Y1ZSbEB8NT0hNmNfMGw0YVhgcSFsbWRafTIhdSNYREg4fnhte0tZWkIq
a0oleGorYnAxSWEqJDIwfUl2IWh3KHUKemdtXmZSNH1eZUJESW98RW5ObWcmTFZ9UElncVJAWTFS
KkYwTnRzZXFyaiErZ3V1TGZ9Mnl2TkdVSndFXnJObTRyCnpHNjxQTDIrZnBJR297IWQ8WXIzMkt9
Z1AmcUp4bH5EVE4waUp5VkwkbD02Y3AwOF5GI0w9bCo+Mz9LQEBsJSlWcwp6NDVsbXhoPU1SPk5r
OX5aRGEhKClGaWNxKjVYQXZlOXVOZyQkYFhNbjU+dTg1TTRfMG5SM003UWw7cnxaRnMzWFMKemhA
eWNnODtIVSZXJDhjXmsxNUxzcUpUX1VMSiZueyR9KWx8QiMyVWlDPy0+dTZHVENvdlpOcjIlOUxk
VkV0fDU1CnpuTn1ecEx0PSR1a2ppO0BPITw9U3JnRy1BWnk/O3U4SVI/QXhyS0UrPWt9PGFkR1RT
cSZucj5oPG9vPXwmLTBVMgp6Jkh8P29jYG9vJUlZMGdSOE5QcSk9ezNBQlk7SU5AUlhLfX15dXgk
UXg3cDAlOWxiJiRQd34tbG89Wkw2OzwrP2gKejx2ZWI4b0E8fVBwNSo8QiE4flQhNkRwXiphKU17
O09fajRlTC19NF9lVG55XlErfF8wPHZjMEE7ezhkMyUyX2NICnpLXmwyWnhvN2RkdmJ+R3YkfDtx
enN3ez1+UlhzKCNLVyViUkIkY3pxX1lsdURzVmU2ZzdaMUxGIyh4WCU+d2RlPQp6dGFudjg4KE1z
TVpuemkyX3I1JGZzQFVlcGBeRzVNcXNDJkReVzNVUS1rO2tlX30rUVAzZE1DUVhZLUpqPU43SFgK
eio7P1BrX2dpbGNeWnVLaG9yO1lyWFBmUXsmdXRiUC19YFIpSzFJVzR5dVVheCF0KjZobTl4RCFt
LXA+Y3dZPX1GCnpeaT1GcUlsRTAocDFWKTBvUj5IR15abTxkQHd+dEM7OylLOUQoNFNsMkErR0RX
YihacStjaz5nWm9JISVuOVRGRgp6Wms0a3kta0pBKENGXitLQEFJYHtsRkIqWV5jdjN0ZWska1M/
Vz1yJE5jKWlZS1EqVC1qO2ZyKUlkXiM7SzBCWk8KZF9BMnstVXY5SH4zSTRaeHZ3d3Z5Y3c0P3Fl
TzdvY196T25HWHV0cGYKCmRlbHRhIDc5Nwp6Y21idTZLUy0ydTc9VkFATS1vWSRUfXckd0ZLRkFQ
Q3ReNntibWRVcEFQRzVtPVZ7JH1SKz9WPEZTWU5jYXVWZlEKek0yTDRXOTFuSDBIRkErN1hvLXhW
cGRrcGBqITVpJXpObzNLN3ZBckFmOCtOJjJkQk9zVXBpZjE8RDZyZXRTeHU2CnpYckpaU1VaQ2Zz
WiNTV1JLbDc1PmBYVDl9QytYRilyZ3o+LXxGaWQhPkhqMnxMYSRfV1A2eV96SXlsdU53Xkh4KQp6
X1RePkNjNVo5I1k9O2d0SmxDUGBBMD5aSylaeTFwXzBIYSktZCFLb2QjP2YrUy03VTdGOXpnKHso
X0RATnl2RWoKelJWbjFvJVkpWEtKblQ5dT9Hdz82T3R2KVk8bz49KSpWWDhCPCZEZ0lgPVhEXlRR
YS01cWpNYDJvbklUNSQxQHVtCno2aDI2PnhMUzZsYj87KVM7emo9S0NFeFM/IV43JWxgemFTVz1e
Y1VZN2BIcHxgQFd2K2FXfThyO00zejB3dHVHLQp6X3M9eG9na2BkfSt8ZXA4bzZWSH0oISYlRlk9
dHlxNU5pLX4yOFg/blcpTlojVmx0JUozfjVGb1J2fjV+YnxIbyMKem1TS1F1NHM/ZSE8cSspPF4k
YDcjMWR0NG42cCRRe0IjPG5TRz58LXlNMzc4fG9Ga1BUaiQ5IXY4Njthc085I21aCnJOZUlhWk5l
UmdiTmVhbXRAP1U5dHwwa2Bod2Myc0EkQzdRJD9hbEY2dk5hQXsrRz45UjlqVmUjCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9D
ZXV0YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2Ev
Q2V1dGEKaW5kZXggYWFhNjU3ZmZkZTc5MDg2MDBhM2VjNjZkZmYwM2NhNmU5MWJhMTNmNi4uODUw
YzhmMDZmYTc5MTg2ODRlNjdlOWFiODE5MmFjOTMzZGFjOTBiMyAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSA1OAp6Y21lQWNfYCpMeW5YenU3aXBqPjk+eGA1MipiaCRyJUIwTCQkSDJoQTQj
Wi1VSEpNe0pfY0JqbT00TkRLV01ZT3UKSHB0OEZGX2xwaVQKCmRlbHRhIDc4CnpjbWV5dS16X2pm
blghSk5pVjU/a2haOHIzLShYfjlvVUc2RU02aUtAZnFALX0jZU0oQDVTVDIoOTBPOWJ4dE10LQpW
R2NOLXA2QylFZDFjRWRpb1Aye18xXmBfbTZHaXw0CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9Db25ha3J5IGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9Db25ha3J5CmluZGV4IDZm
ZDFhZjMyZGFlYzE5MzIzOWFiNmI0NzI1MjZmZDNkNmJkYjJmNzYuLjI4YjMyYWIyZTBiOTA1M2Yz
OWE5MWQ5ZjI4YjYwNzJlNDE0MjM5NTQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAx
NDgKemNtV0hFJTFrcTJ6elowR3ZQP2tDRzNuVlA1NjF1aHw1IWtrdi10UmlGdGBKODJubU0jMkxo
WjFhUkUmOy1+c0AyCkNTUWw5VQoKbGl0ZXJhbCAxNzAKemNtV0hFJTFrcTJ6eU00QDVmQkNlN0BN
TzMkZUh3UGtfUTlofE5ubjFLdkY9ITteUH5fOzEwd2Y1Skd9IUtmcFF8ClE4MiRxUmVwOSlDI3Y1
PH0wTSlANStXLUluCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0FmcmljYS9EYWthciBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BZnJpY2EvRGFrYXIKaW5kZXggNmZkMWFmMzJkYWVjMTkzMjM5YWI2YjQ3
MjUyNmZkM2Q2YmRiMmY3Ni4uMjhiMzJhYjJlMGI5MDUzZjM5YTkxZDlmMjhiNjA3MmU0MTQyMzk1
NCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE0OAp6Y21XSEUlMWtxMnp6WjBHdlA/
a0NHM25WUDU2MXVofDUha2t2LXRSaUZ0YEo4Mm5tTSMyTGhaMWFSRSY7LX5zQDIKQ1NRbDlVCgps
aXRlcmFsIDE3MAp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRlSHdQa19ROWh8Tm5uMUt2Rj0h
O15Qfl87MTB3ZjVKR30hS2ZwUXwKUTgyJHFSZXA5KUMjdjU8fTBNKUA1K1ctSW4KCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0Rh
cl9lc19TYWxhYW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QWZyaWNhL0Rhcl9lc19TYWxhYW0KaW5kZXggMzk2MzFmMjE0ODZjNjFhMTk2MzlkNzNkNzU3MWVm
MDg0MDE3NmIzZS4uOWEyOTE4ZjQwNDA0MzQwZDU3NmNlODUwZjI5NTBiYWFkNzUxZjhhOCAxMDA2
NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA4Ngp6Y21iUXNecVg7bHhHRG5AVTsobU9mbW1lWXlJ
WCZAOUdaM0VfKGI7YFp9bEh1bmRvUlh1fkEkVU5odCRkP1ptQUwKT0t4dVheU0h9PXRWPWUlbEAp
U3FfCgpkZWx0YSAxMjEKemNtZXkoSUcxVUh4RTNufDB8Tit5MEV7aXQwT1Z8WmNrOW9WTCRmWCVw
WGgkJHReVUkrMz17WDZhZWBFViFOZnVkCmhTKHRLPTBFe2oyMTB2NWJhaD9Kck5RKXFwNTJVelU5
WWJgRHhkMXJtN1J2d3QKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQWZyaWNhL0RqaWJvdXRpIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9Eamlib3V0aQppbmRleCAzOTYzMWYyMTQ4NmM2MWEx
OTYzOWQ3M2Q3NTcxZWYwODQwMTc2YjNlLi45YTI5MThmNDA0MDQzNDBkNTc2Y2U4NTBmMjk1MGJh
YWQ3NTFmOGE4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDg2CnpjbWJRc15xWDtseEdE
bkBVOyhtT2ZtbWVZeUlYJkA5R1ozRV8oYjtgWn1sSHVuZG9SWHV+QSRVTmh0JGQ/Wm1BTApPS3h1
WF5TSH09dFY9ZSVsQClTcV8KCmRlbHRhIDEyMQp6Y21leShJRzFVSHhFM258MHxOK3kwRXtpdDBP
VnxaY2s5b1ZMJGZYJXBYaCQkdF5VSSszPXtYNmFlYEVWIU5mdWQKaFModEs9MEV7ajIxMHY1YmFo
P0pyTlEpcXA1MlV6VTlZYmBEeGQxcm03UnZ3dAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvRG91YWxhIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9Eb3VhbGEKaW5kZXggYjFjOTdj
YzVhNzdlYjE4N2NjOGVhOGE0MDMxYTQ1YTliZjE1M2IzNS4uMGM4MDEzN2M3NDg2NTg0M2JkYTRk
ZTU0NGZiZDcyNjUyMmVjMzUyMSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE0OQp6
Y21XSEUlMWtxMnp6WjBHdlA/a0N1YHV2KzBGYzlNMDgtODt6YCl8OzheUkZvN3tVLWpmKzdFYjBI
O0EqSyt8KiQKRnhkMFJtNXRqZX0KCmxpdGVyYWwgMTcxCnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdA
TU8zJFhPV3BJZT53WWZxfmZvQippRGR6fmJXQCFWdkJsMF4lfStrWUwmbQpUdW5xPT58M0hBPlI0
JDxMeGB0YztJNk07PgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BZnJpY2EvRWxfQWFpdW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0VsX0FhaXVuCmluZGV4IGY1ZjhmZmJjNjE3MTZkM2E0
MjFmNTU1ZmE5NjJhMmIzZTQ4OGQ3OGUuLmE5MWY2NWYyNDJkZjM5ZmFjNTJjN2FiMGJhMWZlODBj
YWVhMzBiN2MgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyMjk1CnpjbWNKUWVONUc1
Nz4waXM4VmJePjg4dXomJjlEIU4wbklja1ZOTzxQZlojZGMwZyk3bWtBIzhmZkR7TDBBVlZVVgp6
THNGVDBDTlUtYHUpK18oIVYoTTJOTWEwVj0kS2A9NiU5IzhFZ0hTfHtyK0Y5KV9abyZ3ZFhuU1Zm
ViYkQDheaDMKek8/dXc/K3ZDdlImZTNuJWdePStQX3VsNCU/emNUR2tGQnFiJitpVEBAR1BJbWU0
c0N+ITFpPWFYMnxMdjNxc2wjCnpYUmRwNHB8JFM0ez47fmhGQlhKdXpMZ25QYi1vfmNTPXNwZFlM
TilIYzhMZiRzdj9yPkJyQCtFaTUmYiZIcTFVUQp6OGA1QCllWl85RUgkRVp1O2E4Ty1HKWtmI2lJ
Yj9qNWYjPG9EJCZvYWttJClrKj1YTXs4dypiPD1mZSk9OThlT1kKej9uO2MpRTswOSh0SnJoMUJ6
Q2V8WkNZfHNIdVhRTTsoRkZkKypGRStLaGBZcS1UaTd5bVEhdCFKVl4rO3RQKm0oCnpSaWFtI0Ju
RFRnSF4meUpxKHZgRWEkQktGekI4Z3lFMXI/bWp4ZT03YElfMlpjfntiM1NmJGRwWkl1bDdBMCo/
WQp6eGhpdWdRZyt5eUM5Q09vbTM4QVcqO09wRXRMM3VGY0ZkUlQxOElgR15vK2BONCQwZlVFbXBo
ejNlfSNUWnJMO1MKemlgclllTCskT1dsPkRxNEQhK2J9YT1DQlRPa2NCSVhaVl8peyM3aCVkaXVf
fDwhVmA7SFd4U2taJDBxb3FDWSl0CnptUm8zOyF9OWVIdXpkTFR3O2NjTUslNCRLOWhsWSE5Xm1p
NjF5Y0tmMTFDVXUwbTJPc2V0PldVZ2VSblMxJXhsOAp6Yl9ScXVBbHcxcjQrd2BxY20lPkZRdXs8
fHIkQmZgWVBVZjZNUVg9RGN0JmQxTmJNVTQ9UmtOellXR08oOXwjOVkKej9JOCNrTiRuI0RDclJ4
azJzY1VYQyNmOTs7VkckSTE+cX5Ib2R3fTdzb2UkUEZSMnt7O1c0UlEySGBXUW9kKTRHCnpzb2Uo
UUh3ZWM7Y3VzMjlMSEpIOz1SdFQrWVdHMy1Qd0ViVT1tRHZfMEhPfmRJc3V7PXIweGNZZXZyQiZB
YkxYVAp6dTdLelpzWEdJckh6MndMcUNjZVc1UXJYO3g9U0dYTUN3an5nPT5xMSUmQXg0S0lMbHxa
Z1JkbVdfJjV+SGFVd3MKelJ9MWJIUGJCZVBOa3Q+KWw1VWY7RyRvcSooITw3XnZjTnoyZU9iRTZT
Pz0pYD1raGZzPWxrRDMjUU8meVQrViQoCnpZcGRhPyQkNG8xUT1BV2RUMH5aRT9vcE9MbD9Oc2BT
TlhpbXhobGNySm1QWWJgeT5BTWJBTlFPbHNxPWE8Z0JpcAp6PFhuQi08VUYyZGRfUGApaUY+Z2R6
b3BSUkpmU30zeylFJXl0ZUsxek9QPiN5PGExeCFgNmNKdERVLUFBU08paVgKei1He2g4bmROMERD
VEJ5P0tGJHI8Q2cqN3tBS3BKNXlxXjJVcFQ4eFc3TWgmUlo5JHh5Wnp1QkpNK1pqQEpLVlclCnpp
OG5vSnNXZHN5RjhoUH52KWRIIW9wLU0+VHhvSyk0JXMtaiotWHklcmdPYUNldG5xeFBtMTMjWSV3
YEk+e21IPQp6NnByKVdYRz9iKUl6UW40XlRgcDttOzZsNSZZbHdQSkV1LUB8MyQ1elZWfXZfbH52
OFQ+IWl0ZldvPEM7VSYlP34KentfNWpEOEhTc2pVeW5JQ19ibDRXZCo1X2doNztjMF9nMThIPyhI
JTtgJSlIZy0qPFE9X3gqdHY0QVZAYDBncT1uCno1M0RnYzJYOXtFe1VPXnU/IVJsekg1QGZMaGxf
Nzw5ekhXeXsqUHpTT3JLVCU/Y1RxNigjP0JDS2wxezgxTHBrJgpEUn1MYWIKCmRlbHRhIDY4MAp6
Y21afE1KeG1pfTd7S3hPczczO2pyVVBqTjJ+USRVNnU1Pm9WUE9Jc3p6KVZIOFV2LUVLIz95Zy09
RWhCb2RpND0KekwhIT9EYWtHNGtFLXBxRSh2WXdpSDZ7KmoxU2c1biNQP3FyQHNqdWNfckFCPnto
cHRwY2NwOUxEO0pEMEVVdFRZCnpAZl56OStqP1olKGB4QkZYd2xCIVkzYlZnQ0NSS0skJkgqUV9t
OENlYDZvJHJmMEk8XnVCM0VQZHpNYk1jY3c8fQp6Y1lWfGN0P1NhKXs4c3hibns9UytyNElifkQo
T0YyOXNLWkVBQWF1RHExU150e045dDFDbWxNdilneG8rSShAWCMKekJJQ0UoQ0RWVWhDWlo5VXlt
M2lsUT11fU1abiZuP0NucXUreXJ7R0pMeno0TnVKZ0cpU3ZjNiYjVFIqOSs4bWVWCnp4Z0dUflUm
TVI1a3UlU1ZZeUR2SFJlI2s5SVJRV0tnZXh4SmozLVE7OCNRO0BaWVMoNVZTbiU2d0hCXkE3dlN7
bAp6e2pPV289TS10UnpaeGhuZ0BBTCo7Sj5uYTItc1QmfDRwRldnTWQ4QDZiY0ZsZ0BuUkZwKClo
elA+M2lANmU8Y0EKemdeYT5ScGAtQkdjbV9sSlV+cl5aUWFtWjk2amxtdHBfWjNJVCZRS0hQKmI9
bTxQPiVhSiUhKHhwIzIwcDB9anJnCmNMK3QtXkQ2dkN2bk5CMyRTUmJvKkJrYHo5OHlaWGcwQG0t
bU1GMFEqCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FmcmljYS9GcmVldG93biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BZnJpY2EvRnJlZXRvd24KaW5kZXggNmZkMWFmMzJkYWVjMTkzMjM5YWI2YjQ3
MjUyNmZkM2Q2YmRiMmY3Ni4uMjhiMzJhYjJlMGI5MDUzZjM5YTkxZDlmMjhiNjA3MmU0MTQyMzk1
NCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE0OAp6Y21XSEUlMWtxMnp6WjBHdlA/
a0NHM25WUDU2MXVofDUha2t2LXRSaUZ0YEo4Mm5tTSMyTGhaMWFSRSY7LX5zQDIKQ1NRbDlVCgps
aXRlcmFsIDE3MAp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRlSHdQa19ROWh8Tm5uMUt2Rj0h
O15Qfl87MTB3ZjVKR30hS2ZwUXwKUTgyJHFSZXA5KUMjdjU8fTBNKUA1K1ctSW4KCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0dh
Ym9yb25lIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Fmcmlj
YS9HYWJvcm9uZQppbmRleCA1Yjg3MWRiYWE3YzI5NjlmNmI0ZGZjODU0MTg0YTI5MDEwYmZiMmNj
Li41Mjc1M2MwZjg3YmJmYTQ1N2FkYTg5ZDQwMDkwOGEzZDY1MzdhYzBlIDEwMDY0NApHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenpaMEd2UD9rQyhkMmdZM3k+cSUxNXol
ZHpgKXw7OF5ZbDE3e1UtamYrN0ViMEg7QSpLK3wtTQpGeEJ6en42Q01CbgoKbGl0ZXJhbCAxNzEK
emNtV0hFJTFrcTJ6eU00QDVmQkNlN0BNTzMkWjJ2cmBofGchZmtDYlpCcWdLM3p+YldAIXI8JX0w
XiV9K2tZTCZtClR1bnE9PnwzSEE+UjQkPEx4PCpfOHRoXk1VCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9IYXJhcmUgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0hhcmFyZQppbmRl
eCA1Yjg3MWRiYWE3YzI5NjlmNmI0ZGZjODU0MTg0YTI5MDEwYmZiMmNjLi41Mjc1M2MwZjg3YmJm
YTQ1N2FkYTg5ZDQwMDkwOGEzZDY1MzdhYzBlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMTQ5CnpjbVdIRSUxa3EyenpaMEd2UD9rQyhkMmdZM3k+cSUxNXolZHpgKXw7OF5ZbDE3e1Ut
amYrN0ViMEg7QSpLK3wtTQpGeEJ6en42Q01CbgoKbGl0ZXJhbCAxNzEKemNtV0hFJTFrcTJ6eU00
QDVmQkNlN0BNTzMkWjJ2cmBofGchZmtDYlpCcWdLM3p+YldAIXI8JX0wXiV9K2tZTCZtClR1bnE9
PnwzSEE+UjQkPEx4PCpfOHRoXk1VCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9Kb2hhbm5lc2J1cmcgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0pvaGFubmVzYnVyZwppbmRleCBk
ZGYzNjUyZTE1OWU0YzNjZDg0NGJkZWRmNDc4NGRjZDI5ZGEyM2M3Li5iMWM0MjVkYWNlZDQ1NGY1
M2Q3ZDE4ZmVhODA3YmY4ZDA4MWNmOTdlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU0
CndjbWVCWWBvPWd4b1J0OXRDZCY5djVFbGhBcCMmUntXJnZXKGlPVVRweH5Pdy0xdj5fWj1vKWJX
ME5gXjc4VU8kUQoKZGVsdGEgODEKemNtZXl5KnZ+WFVvUngpdmZxYFlCajZWbUUyNz9MV3ZTMllO
bW1OcmhfPyRuVzB1IWVqRmZ2UiR0fVghT0dqSWh2CksyOFpZeGFSQzV+KmFAIXkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0p1
YmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0p1
YmEKaW5kZXggOWZhNzExOTA0ZGZmNzUxOWQzMDYxZTFiYzgxNTI3ZjVkYmEwNzY5Yi4uNjI1YjFh
Y2NjZmE3ZmEyMDZiMzlmNjFhYWZhNjlkZmQ1ZDY1Y2ZjNCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApkZWx0YSA3Ngp2Y21aM0ArUkhqWVQkQkxgQzt7MGxLckFAWHBrczAlbFElQnUlP153TGozNVE8
VCZ8OEd5MmV9cFIjKnV4CgpkZWx0YSAxMjUKemNtZUJXVUNsWntUI3wpPmZkUGE7S3BCV1pZezNR
fkY7Uzwza3p1a1VsbDBeT0NicjJqT2o7YTNLYEB2Z0V7aiN5Clo1MipaUlpBSmtgUks1SUFERiFa
QSN9SGooRSZ6bkU0b0x0MgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvS2FtcGFsYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvS2FtcGFsYQppbmRleCAzOTYzMWYyMTQ4NmM2MWEx
OTYzOWQ3M2Q3NTcxZWYwODQwMTc2YjNlLi45YTI5MThmNDA0MDQzNDBkNTc2Y2U4NTBmMjk1MGJh
YWQ3NTFmOGE4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDg2CnpjbWJRc15xWDtseEdE
bkBVOyhtT2ZtbWVZeUlYJkA5R1ozRV8oYjtgWn1sSHVuZG9SWHV+QSRVTmh0JGQ/Wm1BTApPS3h1
WF5TSH09dFY9ZSVsQClTcV8KCmRlbHRhIDEyMQp6Y21leShJRzFVSHhFM258MHxOK3kwRXtpdDBP
VnxaY2s5b1ZMJGZYJXBYaCQkdF5VSSszPXtYNmFlYEVWIU5mdWQKaFModEs9MEV7ajIxMHY1YmFo
P0pyTlEpcXA1MlV6VTlZYmBEeGQxcm03UnZ3dAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvS2hhcnRvdW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0toYXJ0b3VtCmluZGV4IGYy
YzllMzAzNzk3Mzk2OTgxY2UxOTAwYzA2Y2I1MWU2NWY5NGI4MzAuLjhlZThjYjkyZTcyZDljNTA3
YWQwZWUwNmRjNmEzODQwNmFiMDZmMzQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODYK
emNtWEBmeH0wQF94RmBiPlB6SkpEZm1tPiZMQz9nNHZKKT9gT3VUMV5PVS02cU1oUWxeRHQwYnMj
fUhqM0UmejVYCkI1QyNBTQoKZGVsdGEgMTIxCnpjbVozXmRYamE1eEZqbkIwfE4reWZDPjxVKm4k
bH1WeG1xREJnNW5YQ2klJl5PdllTNTBWdFJ0RXtqI3E1MipaUgpXR2Uhd1VnaWItMkpfWklaWFU3
bS1CUTV8dTc3Wmw7CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0FmcmljYS9LaWdhbGkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQWZyaWNhL0tpZ2FsaQppbmRleCA1Yjg3MWRiYWE3YzI5NjlmNmI0ZGZj
ODU0MTg0YTI5MDEwYmZiMmNjLi41Mjc1M2MwZjg3YmJmYTQ1N2FkYTg5ZDQwMDkwOGEzZDY1Mzdh
YzBlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenpaMEd2
UD9rQyhkMmdZM3k+cSUxNXolZHpgKXw7OF5ZbDE3e1UtamYrN0ViMEg7QSpLK3wtTQpGeEJ6en42
Q01CbgoKbGl0ZXJhbCAxNzEKemNtV0hFJTFrcTJ6eU00QDVmQkNlN0BNTzMkWjJ2cmBofGchZmtD
YlpCcWdLM3p+YldAIXI8JX0wXiV9K2tZTCZtClR1bnE9PnwzSEE+UjQkPEx4PCpfOHRoXk1VCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Fm
cmljYS9LaW5zaGFzYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9BZnJpY2EvS2luc2hhc2EKaW5kZXggYjFjOTdjYzVhNzdlYjE4N2NjOGVhOGE0MDMxYTQ1YTli
ZjE1M2IzNS4uMGM4MDEzN2M3NDg2NTg0M2JkYTRkZTU0NGZiZDcyNjUyMmVjMzUyMSAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE0OQp6Y21XSEUlMWtxMnp6WjBHdlA/a0N1YHV2KzBG
YzlNMDgtODt6YCl8OzheUkZvN3tVLWpmKzdFYjBIO0EqSyt8KiQKRnhkMFJtNXRqZX0KCmxpdGVy
YWwgMTcxCnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdATU8zJFhPV3BJZT53WWZxfmZvQippRGR6fmJX
QCFWdkJsMF4lfStrWUwmbQpUdW5xPT58M0hBPlI0JDxMeGB0YztJNk07PgoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTGFnb3Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0xhZ29z
CmluZGV4IGIxYzk3Y2M1YTc3ZWIxODdjYzhlYThhNDAzMWE0NWE5YmYxNTNiMzUuLjBjODAxMzdj
NzQ4NjU4NDNiZGE0ZGU1NDRmYmQ3MjY1MjJlYzM1MjEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
bGl0ZXJhbCAxNDkKemNtV0hFJTFrcTJ6elowR3ZQP2tDdWB1diswRmM5TTA4LTg7emApfDs4XlJG
bzd7VS1qZis3RWIwSDtBKksrfCokCkZ4ZDBSbTV0amV9CgpsaXRlcmFsIDE3MQp6Y21XSEUlMWtx
Mnp5TTRANWZCQ2U3QE1PMyRYT1dwSWU+d1lmcX5mb0IqaURken5iV0AhVnZCbDBeJX0ra1lMJm0K
VHVucT0+fDNIQT5SNCQ8THhgdGM7STZNOz4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0xpYnJldmlsbGUgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0xpYnJldmlsbGUKaW5kZXgg
YjFjOTdjYzVhNzdlYjE4N2NjOGVhOGE0MDMxYTQ1YTliZjE1M2IzNS4uMGM4MDEzN2M3NDg2NTg0
M2JkYTRkZTU0NGZiZDcyNjUyMmVjMzUyMSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDE0OQp6Y21XSEUlMWtxMnp6WjBHdlA/a0N1YHV2KzBGYzlNMDgtODt6YCl8OzheUkZvN3tVLWpm
KzdFYjBIO0EqSyt8KiQKRnhkMFJtNXRqZX0KCmxpdGVyYWwgMTcxCnpjbVdIRSUxa3EyenlNNEA1
ZkJDZTdATU8zJFhPV3BJZT53WWZxfmZvQippRGR6fmJXQCFWdkJsMF4lfStrWUwmbQpUdW5xPT58
M0hBPlI0JDxMeGB0YztJNk07PgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTG9tZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTG9tZQppbmRleCA2ZmQxYWYzMmRhZWMxOTMyMzlh
YjZiNDcyNTI2ZmQzZDZiZGIyZjc2Li4yOGIzMmFiMmUwYjkwNTNmMzlhOTFkOWYyOGI2MDcyZTQx
NDIzOTU0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3Eyenpa
MEd2UD9rQ0czblZQNTYxdWh8NSFra3YtdFJpRnRgSjgybm1NIzJMaFoxYVJFJjstfnNAMgpDU1Fs
OVUKCmxpdGVyYWwgMTcwCnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdATU8zJGVId1BrX1E5aHxObm4x
S3ZGPSE7XlB+XzsxMHdmNUpHfSFLZnBRfApRODIkcVJlcDkpQyN2NTx9ME0pQDUrVy1JbgoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJp
Y2EvTHVhbmRhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Fm
cmljYS9MdWFuZGEKaW5kZXggYjFjOTdjYzVhNzdlYjE4N2NjOGVhOGE0MDMxYTQ1YTliZjE1M2Iz
NS4uMGM4MDEzN2M3NDg2NTg0M2JkYTRkZTU0NGZiZDcyNjUyMmVjMzUyMSAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDE0OQp6Y21XSEUlMWtxMnp6WjBHdlA/a0N1YHV2KzBGYzlNMDgt
ODt6YCl8OzheUkZvN3tVLWpmKzdFYjBIO0EqSyt8KiQKRnhkMFJtNXRqZX0KCmxpdGVyYWwgMTcx
CnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdATU8zJFhPV3BJZT53WWZxfmZvQippRGR6fmJXQCFWdkJs
MF4lfStrWUwmbQpUdW5xPT58M0hBPlI0JDxMeGB0YztJNk07PgoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTHVidW1iYXNoaSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTHVidW1i
YXNoaQppbmRleCA1Yjg3MWRiYWE3YzI5NjlmNmI0ZGZjODU0MTg0YTI5MDEwYmZiMmNjLi41Mjc1
M2MwZjg3YmJmYTQ1N2FkYTg5ZDQwMDkwOGEzZDY1MzdhYzBlIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenpaMEd2UD9rQyhkMmdZM3k+cSUxNXolZHpgKXw7
OF5ZbDE3e1UtamYrN0ViMEg7QSpLK3wtTQpGeEJ6en42Q01CbgoKbGl0ZXJhbCAxNzEKemNtV0hF
JTFrcTJ6eU00QDVmQkNlN0BNTzMkWjJ2cmBofGchZmtDYlpCcWdLM3p+YldAIXI8JX0wXiV9K2tZ
TCZtClR1bnE9PnwzSEE+UjQkPEx4PCpfOHRoXk1VCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9MdXNha2EgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL0x1c2FrYQppbmRleCA1Yjg3
MWRiYWE3YzI5NjlmNmI0ZGZjODU0MTg0YTI5MDEwYmZiMmNjLi41Mjc1M2MwZjg3YmJmYTQ1N2Fk
YTg5ZDQwMDkwOGEzZDY1MzdhYzBlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ5
CnpjbVdIRSUxa3EyenpaMEd2UD9rQyhkMmdZM3k+cSUxNXolZHpgKXw7OF5ZbDE3e1UtamYrN0Vi
MEg7QSpLK3wtTQpGeEJ6en42Q01CbgoKbGl0ZXJhbCAxNzEKemNtV0hFJTFrcTJ6eU00QDVmQkNl
N0BNTzMkWjJ2cmBofGchZmtDYlpCcWdLM3p+YldAIXI8JX0wXiV9K2tZTCZtClR1bnE9PnwzSEE+
UjQkPEx4PCpfOHRoXk1VCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0FmcmljYS9NYWxhYm8gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL01hbGFibwppbmRleCBiMWM5N2NjNWE3N2ViMTg3Y2M4
ZWE4YTQwMzFhNDVhOWJmMTUzYjM1Li4wYzgwMTM3Yzc0ODY1ODQzYmRhNGRlNTQ0ZmJkNzI2NTIy
ZWMzNTIxIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3Eyenpa
MEd2UD9rQ3VgdXYrMEZjOU0wOC04O3pgKXw7OF5SRm83e1UtamYrN0ViMEg7QSpLK3wqJApGeGQw
Um01dGplfQoKbGl0ZXJhbCAxNzEKemNtV0hFJTFrcTJ6eU00QDVmQkNlN0BNTzMkWE9XcEllPndZ
ZnF+Zm9CKmlEZHp+YldAIVZ2QmwwXiV9K2tZTCZtClR1bnE9PnwzSEE+UjQkPEx4YHRjO0k2TTs+
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FmcmljYS9NYXB1dG8gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQWZyaWNhL01hcHV0bwppbmRleCA1Yjg3MWRiYWE3YzI5NjlmNmI0ZGZjODU0MTg0YTI5MDEw
YmZiMmNjLi41Mjc1M2MwZjg3YmJmYTQ1N2FkYTg5ZDQwMDkwOGEzZDY1MzdhYzBlIDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenpaMEd2UD9rQyhkMmdZM3k+
cSUxNXolZHpgKXw7OF5ZbDE3e1UtamYrN0ViMEg7QSpLK3wtTQpGeEJ6en42Q01CbgoKbGl0ZXJh
bCAxNzEKemNtV0hFJTFrcTJ6eU00QDVmQkNlN0BNTzMkWjJ2cmBofGchZmtDYlpCcWdLM3p+YldA
IXI8JX0wXiV9K2tZTCZtClR1bnE9PnwzSEE+UjQkPEx4PCpfOHRoXk1VCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9NYXNlcnUg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL01hc2Vy
dQppbmRleCBkZGYzNjUyZTE1OWU0YzNjZDg0NGJkZWRmNDc4NGRjZDI5ZGEyM2M3Li5iMWM0MjVk
YWNlZDQ1NGY1M2Q3ZDE4ZmVhODA3YmY4ZDA4MWNmOTdlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDU0CndjbWVCWWBvPWd4b1J0OXRDZCY5djVFbGhBcCMmUntXJnZXKGlPVVRweH5Pdy0x
dj5fWj1vKWJXME5gXjc4VU8kUQoKZGVsdGEgODEKemNtZXl5KnZ+WFVvUngpdmZxYFlCajZWbUUy
Nz9MV3ZTMllObW1OcmhfPyRuVzB1IWVqRmZ2UiR0fVghT0dqSWh2CksyOFpZeGFSQzV+KmFAIXkK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QWZyaWNhL01iYWJhbmUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQWZyaWNhL01iYWJhbmUKaW5kZXggZGRmMzY1MmUxNTllNGMzY2Q4NDRiZGVkZjQ3ODRkY2Qy
OWRhMjNjNy4uYjFjNDI1ZGFjZWQ0NTRmNTNkN2QxOGZlYTgwN2JmOGQwODFjZjk3ZSAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1NAp3Y21lQllgbz1neG9SdDl0Q2QmOXY1RWxoQXAjJlJ7
VyZ2VyhpT1VUcHh+T3ctMXY+X1o9byliVzBOYF43OFVPJFEKCmRlbHRhIDgxCnpjbWV5eSp2flhV
b1J4KXZmcWBZQmo2Vm1FMjc/TFd2UzJZTm1tTnJoXz8kblcwdSFlakZmdlIkdH1YIU9HaklodgpL
MjhaWXhhUkM1fiphQCF5CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0FmcmljYS9Nb2dhZGlzaHUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL01vZ2FkaXNodQppbmRleCAzOTYzMWYyMTQ4NmM2
MWExOTYzOWQ3M2Q3NTcxZWYwODQwMTc2YjNlLi45YTI5MThmNDA0MDQzNDBkNTc2Y2U4NTBmMjk1
MGJhYWQ3NTFmOGE4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDg2CnpjbWJRc15xWDts
eEdEbkBVOyhtT2ZtbWVZeUlYJkA5R1ozRV8oYjtgWn1sSHVuZG9SWHV+QSRVTmh0JGQ/Wm1BTApP
S3h1WF5TSH09dFY9ZSVsQClTcV8KCmRlbHRhIDEyMQp6Y21leShJRzFVSHhFM258MHxOK3kwRXtp
dDBPVnxaY2s5b1ZMJGZYJXBYaCQkdF5VSSszPXtYNmFlYEVWIU5mdWQKaFModEs9MEV7ajIxMHY1
YmFoP0pyTlEpcXA1MlV6VTlZYmBEeGQxcm03UnZ3dAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTW9ucm92aWEgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL01vbnJvdmlhCmluZGV4
IGI0MzRjNjdmYTVhMzgwOGNlYTk3NGFhZWVjOWNiNGJlZmE5OWMzYmQuLjZkNjg4NTAyYTFjYTgw
ZjJlNTdhNmRlMjc5MGFjMzE5Mzg3OWQyNDggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
NjkKemNtYUZLYyE2PChJNGM3UE9xNmsrQWcmMiFMSjRMZCU+dStjfEE4UT9ZU3xuUnkmeWhrNG9I
NVlpOGRSVHlLamdBCkY3WFQ+cjVeP3xsCgpsaXRlcmFsIDIzMwp6Y21XSEUlMWtxMnp5S15qNWZC
Q2VXKmBRIWNeWkprZzd9O3slJWBJQTdAMyY9fE5yYGdmZE5kaTBMZSpFNElEbmMKdUFxPjdpPjwr
eyo1SksxKm4zWCZ+cHFsO3pLfiZZVUlVcEtqRWwzei1IM054dWF7KFA8enkkeih3S0pGaQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJp
Y2EvTmFpcm9iaSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
ZnJpY2EvTmFpcm9iaQppbmRleCAzOTYzMWYyMTQ4NmM2MWExOTYzOWQ3M2Q3NTcxZWYwODQwMTc2
YjNlLi45YTI5MThmNDA0MDQzNDBkNTc2Y2U4NTBmMjk1MGJhYWQ3NTFmOGE4IDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDg2CnpjbWJRc15xWDtseEdEbkBVOyhtT2ZtbWVZeUlYJkA5R1oz
RV8oYjtgWn1sSHVuZG9SWHV+QSRVTmh0JGQ/Wm1BTApPS3h1WF5TSH09dFY9ZSVsQClTcV8KCmRl
bHRhIDEyMQp6Y21leShJRzFVSHhFM258MHxOK3kwRXtpdDBPVnxaY2s5b1ZMJGZYJXBYaCQkdF5V
SSszPXtYNmFlYEVWIU5mdWQKaFModEs9MEV7ajIxMHY1YmFoP0pyTlEpcXA1MlV6VTlZYmBEeGQx
cm03UnZ3dAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BZnJpY2EvTmRqYW1lbmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQWZyaWNhL05kamFtZW5hCmluZGV4IGJiZmUxOWQ2MGE1ZmM4YjhkMWE1ZTUz
MTllNGQ2ODdlMmEyYjA3OGQuLmE5Njg4NDVlMjliOGIyYjQ3ZDRhNzNmNzRhZTA0ZWY2ODFkN2Q0
ODUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNjgKemNtYUZKYyR7JjlfezBKY1VmeE8x
OGQ4TVAzSlprUT9qPW1MUlJXN2peOE48YGtQSEo1Zk1oezVSMFRVJXhNUFR9CkdBcn1CfDNse3RV
CgpsaXRlcmFsIDIyNQp6Y21XSEUlMWtxMnp5UW9aNWZCQ2U3OWErKGNeaVBscS1QQiZMVFFCcyFm
Tip0NyNOdXQ4NXNDdmZXaSFYMHc4clYKdjNYQnsrejk5X1pqdnlReTArSW9PNUUzbDswbngobjl8
JUJ9ZncmK0dLe1FGMGFzZUhvWXNkdXZFRCMoUQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTmlhbWV5IGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9OaWFtZXkKaW5kZXggYjFjOTdj
YzVhNzdlYjE4N2NjOGVhOGE0MDMxYTQ1YTliZjE1M2IzNS4uMGM4MDEzN2M3NDg2NTg0M2JkYTRk
ZTU0NGZiZDcyNjUyMmVjMzUyMSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE0OQp6
Y21XSEUlMWtxMnp6WjBHdlA/a0N1YHV2KzBGYzlNMDgtODt6YCl8OzheUkZvN3tVLWpmKzdFYjBI
O0EqSyt8KiQKRnhkMFJtNXRqZX0KCmxpdGVyYWwgMTcxCnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdA
TU8zJFhPV3BJZT53WWZxfmZvQippRGR6fmJXQCFWdkJsMF4lfStrWUwmbQpUdW5xPT58M0hBPlI0
JDxMeGB0YztJNk07PgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BZnJpY2EvTm91YWtjaG90dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvTm91YWtjaG90dAppbmRleCA2ZmQxYWYzMmRhZWMx
OTMyMzlhYjZiNDcyNTI2ZmQzZDZiZGIyZjc2Li4yOGIzMmFiMmUwYjkwNTNmMzlhOTFkOWYyOGI2
MDcyZTQxNDIzOTU0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ4CnpjbVdIRSUx
a3EyenpaMEd2UD9rQ0czblZQNTYxdWh8NSFra3YtdFJpRnRgSjgybm1NIzJMaFoxYVJFJjstfnNA
MgpDU1FsOVUKCmxpdGVyYWwgMTcwCnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdATU8zJGVId1BrX1E5
aHxObm4xS3ZGPSE7XlB+XzsxMHdmNUpHfSFLZnBRfApRODIkcVJlcDkpQyN2NTx9ME0pQDUrVy1J
bgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9BZnJpY2EvT3VhZ2Fkb3Vnb3UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQWZyaWNhL091YWdhZG91Z291CmluZGV4IDZmZDFhZjMyZGFlYzE5MzIzOWFiNmI0
NzI1MjZmZDNkNmJkYjJmNzYuLjI4YjMyYWIyZTBiOTA1M2YzOWE5MWQ5ZjI4YjYwNzJlNDE0MjM5
NTQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDgKemNtV0hFJTFrcTJ6elowR3ZQ
P2tDRzNuVlA1NjF1aHw1IWtrdi10UmlGdGBKODJubU0jMkxoWjFhUkUmOy1+c0AyCkNTUWw5VQoK
bGl0ZXJhbCAxNzAKemNtV0hFJTFrcTJ6eU00QDVmQkNlN0BNTzMkZUh3UGtfUTlofE5ubjFLdkY9
ITteUH5fOzEwd2Y1Skd9IUtmcFF8ClE4MiRxUmVwOSlDI3Y1PH0wTSlANStXLUluCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9Q
b3J0by1Ob3ZvIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Fm
cmljYS9Qb3J0by1Ob3ZvCmluZGV4IGIxYzk3Y2M1YTc3ZWIxODdjYzhlYThhNDAzMWE0NWE5YmYx
NTNiMzUuLjBjODAxMzdjNzQ4NjU4NDNiZGE0ZGU1NDRmYmQ3MjY1MjJlYzM1MjEgMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDkKemNtV0hFJTFrcTJ6elowR3ZQP2tDdWB1diswRmM5
TTA4LTg7emApfDs4XlJGbzd7VS1qZis3RWIwSDtBKksrfCokCkZ4ZDBSbTV0amV9CgpsaXRlcmFs
IDE3MQp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRYT1dwSWU+d1lmcX5mb0IqaURken5iV0Ah
VnZCbDBeJX0ra1lMJm0KVHVucT0+fDNIQT5SNCQ8THhgdGM7STZNOz4KCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL1Nhb19Ub21l
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9TYW9f
VG9tZQppbmRleCBhNGVjZTdmZjJiN2FiYTdmOGU5OWZiOGVlNGRkYmUxZDQzOTA1NmNmLi41OWYz
NzU5YzQwOWExZmI1MGU2MzJlZjVlZjYxM2QzZmVlN2FmN2VmIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMjU0CnpjbVdIRSUxa3EyenlQZDM1ZkJDZTc5YSsoY15aSmtxLVQ4JVFKeChG
RjxRR1BGZnVVJTw9NnJrODI8bk5vKHotKAp6MGlYejwwMFJldj9jKkU1OzEweSRqdit0K012eCRv
MnFENEZ8M0RDRF5WYX1HZ1h7KHcwa1IpTlF7bzBMcHRCNlAKRTBRMElSZWdGVWYKCmxpdGVyYWwg
MjM0CnpjbVdIRSUxa3EyenlLXmo1ZkJDZVcqYFEhY15aSmtxLVQ4JVFKeChGajcmZ2J3ZzNpKHxO
cC15MUkwbEFzRUFMMQp6ZnkyaSlndXh3JSF5UTlfZntiN3NMZjlJWmx7YE57VyZ5IX1BYyhYMVlY
RzdfKWBHLTlSeF4takh5NiskeGB0YzsKRHEjYDhtCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9UaW1idWt0dSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BZnJpY2EvVGltYnVrdHUKaW5kZXgg
NmZkMWFmMzJkYWVjMTkzMjM5YWI2YjQ3MjUyNmZkM2Q2YmRiMmY3Ni4uMjhiMzJhYjJlMGI5MDUz
ZjM5YTkxZDlmMjhiNjA3MmU0MTQyMzk1NCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDE0OAp6Y21XSEUlMWtxMnp6WjBHdlA/a0NHM25WUDU2MXVofDUha2t2LXRSaUZ0YEo4Mm5tTSMy
TGhaMWFSRSY7LX5zQDIKQ1NRbDlVCgpsaXRlcmFsIDE3MAp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3
QE1PMyRlSHdQa19ROWh8Tm5uMUt2Rj0hO15Qfl87MTB3ZjVKR30hS2ZwUXwKUTgyJHFSZXA5KUMj
djU8fTBNKUA1K1ctSW4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQWZyaWNhL1RyaXBvbGkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL1RyaXBvbGkKaW5kZXggYjMyZTIyMDJmNTcyYjhjYTZl
ZjNjNWNmMWQ5ZTc4N2EyNGYyYzMyOC4uMDdiMzkzYmI3ZGIxNGNlZjFlOTA2ZWJlNjNjZmJiZThj
ZGRjNzlkNSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3NQp4Y21lQll7bTMjd1QkQkxg
QzstX2tLckFAWHBrZC1oJiZmPVRJT0c/YkYpeylidXllVihoVWdrYDBSVkJWM0gkJjYKCmRlbHRh
IDEwOAp6Y21leSEoJDZ8VVQjfCk+ZmRQYTtLb04qUll7M1F+RjtTPDFrenVrVGxQM3B8MHxwYnNX
d0VPTTBoTTJAJGpBdU0KUSFWZVc7O0Jze2goS1hAJTA5bjVaWjIkbE8KCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZyaWNhL1R1bmlzIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FmcmljYS9UdW5pcwpp
bmRleCA0YmQzODg1YTk2ZjYxYmJmOWMwZGI2YjQyOTU2YjAyZDZlMmJjY2M0Li40MjdmYTU2MzAz
M2ZkZDg1MzNhZTU2MzM3ZmEyMGJlZmU5NzE5YjQyIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRl
bHRhIDUxCnljbVhAY3h7LUIpSTN2U0VpSnVlMU1IenNBNE1ZSGU1KWd5ZmZ9NmI9MXNFcjhpRGw8
PGJgOC1yPE5eVHE8T3QzSAoKZGVsdGEgNzUKemNtZG5VZFc+fn5JM3dGY2lKdlNDS3JvcX5RQnN4
LSROKnN3UHpHV1VUa3I+bjJMempLODNoO184N0JLTyNxdlQjCkx4U1UtPmJQYyV4b08laDAKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQWZy
aWNhL1dpbmRob2VrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FmcmljYS9XaW5kaG9lawppbmRleCBmNWQ0MGJhZmMzOTEyZmU3YzY1ZjQ3Y2I2M2U1MmZjNmI5
YjkzMmMwLi5hYmVjZDEzN2IxZmMzMjIwNjM3YjIyZmZlYTBlNzI1NmE1OGU5Mzc3IDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU2CnljbWNiXnpNRmw1STRjN1BZP0tMTW9GRmE9Vzx2PjZB
azdCRTsrcj14dTMoKFJTaXNLWj49PmVKIzAzQlZgVXZDegoKZGVsdGEgOTEKemNtZG5aZXVzVTZJ
NGNfaTB8VlBlbkdpLUVBT2o5Mmh8N1d7cGFOejw4cElkPjBUdExoaGo5ZlhCZn0pZDAlNTJLCk5u
QnNERjRBQ3s+MHMhZnYzSVlIQwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0FkYWsgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9BZGFrCmluZGV4IDU2OTZlMGY4YmVkZWU3MjUx
NWM0M2Y2ODY4ODFhNTYxYWYzMzlkYjkuLjQzMjM2NDk4ZjY4MWNjMDZmNjRjYTJhZmE2MTM4ODAz
MzFmZTZmYmIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDgKemNtZGxodl8pdmNBMGAk
Q2hTaVRJRj9Wb0lXTUUrNjAlRkNAR25xU0JTUShqXlMocWpwYSk/Wn09VXwpYyRuZ2dOCkRPMT15
YAoKZGVsdGEgNTMKemNtZGxZdnt6YHVBRXdEMElIRCRwRiZoYV5WcWpxNDAlRkE8S21yNmRQaHs/
M1ZQanhxVnJGNVF0aVR+TipeMSpBCkUwRHpHVVNPNVMzCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdlIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdl
CmluZGV4IDZjOGJkZjIyNjkwMGQ3ZjRjNmE0ZDQ3MzM4ZTY3NDJkNGQ2NzQ3Y2QuLjliYmIyZmQz
YjM2MWVhOGFhNGMxMjZkMTRkZjVmYTM3MDM0M2E2M2YgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
ZGVsdGEgNDUKemNtWD5qYlhhSl5BMGAkQ2g5Zl5GRzUyIyRXTUUrNjAlREVMM3okMXRTUShqXlMo
cWpwYUw4PS07JFVJfjA1I1ZOCkFeWik8PQoKZGVsdGEgNDUKd2NtWD5zYlZne3lBMTBSbnxCRVhv
RzR+NWpWcWpxNDAlRENIS21yNmQmdFVGZ1ZQeDI+ekBmfHQwQTgmTzhVTyRRCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQW5n
dWlsbGEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9Bbmd1aWxsYQppbmRleCA0NDdlZmJlMmM5NjdjYzU2NDJiNThmNTFhZmY4NmI2NzA3MzEzNGZi
Li42OTdjZjViY2Y3ZjE1MWZmYzFjMWZjNDI0N2U0ZTljN2UzZmYwMWEzIDEwMDY0NApHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenpaMEd2UD9rQ0cxPVVCNGRlZyskM2hx
d3t7S0lJZlB1eHdILXkxNElEe2REMVZqRDwwWnhPcwpKZlRvI24wUldSKDlOXz19CgpsaXRlcmFs
IDE3MAp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRlQzx6eW9RMUN8Tm1ubDM9SUdPQTN3bXI7
XlB+Xzsxfj8jMHpuN34KVnJ1X2l4MEdhYXRLWW1sV2ZYMTZ9MFJTeSY5JUJGaQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0Fu
dGlndWEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9BbnRpZ3VhCmluZGV4IDQ0N2VmYmUyYzk2N2NjNTY0MmI1OGY1MWFmZjg2YjY3MDczMTM0ZmIu
LjY5N2NmNWJjZjdmMTUxZmZjMWMxZmM0MjQ3ZTRlOWM3ZTNmZjAxYTMgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAxNDgKemNtV0hFJTFrcTJ6elowR3ZQP2tDRzE9VUI0ZGVnKyQzaHF3
e3tLSUlmUHV4d0gteTE0SUR7ZEQxVmpEPDBaeE9zCkpmVG8jbjBSV1IoOU5fPX0KCmxpdGVyYWwg
MTcwCnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdATU8zJGVDPHp5b1ExQ3xObW5sMz1JR09BM3dtcjte
UH5fOzF+PyMwem43fgpWcnVfaXgwR2FhdEtZbWxXZlgxNn0wUlN5JjklQkZpCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJh
Z3VhaW5hIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJp
Y2EvQXJhZ3VhaW5hCmluZGV4IDhiMjk1YTk4YmFjMDcxZTM5NTUxOTQwNzA1ZWEwNTA4MzllMzdi
OWQuLjQ5MzgxYjQxMDhiMTgyN2YyNGFkN2QyYzE4MDY0YTIyNjI0MDkyZTcgMTAwNjQ0CkdJVCBi
aW5hcnkgcGF0Y2gKZGVsdGEgNzcKeGNtZUJVfEgzdndUJEJMYG07bCsjSytINEk7S0YxXiN2b2tN
bnxtMS1Gb0cwdGFNfGJAN34yX2gwUlYlUDNNYz5vCgpkZWx0YSAxMTIKemNtZXl1KjJnfFVUI31p
QWZkUGE7eiFabzxZQFAtbkY7VjlOQmZ9Jnt7bUkmbCU0fFNCNUtJdTQjajUtVk00RGw5ClY3Ml5V
JXhGJFlgRDNeX3tmdzclMjdYYV8wNEohWnUKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVz
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJn
ZW50aW5hL0J1ZW5vc19BaXJlcwppbmRleCBlNDg2NmNlMTc3OGZkMjY3OGE4NWRjNjc5MWE2YzFi
M2ZjYWE1ZDFlLi4yNjBmODZhOTE4MDY3N2Q4NmZjMzI4MGIwNmYwMWQ2YTZjZDkxYzk0IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU4CnpjbWNjMHY0dnhUSTRjN1BZP1BeRW9GRmE9Vzx2
PShBazdCRUJBYWg5ZXFmeGUhZFMrXld1dDNnWS1oe2AwM0x6fgpBdE47SzIKCmRlbHRhIDEwMgp6
Y21kbk9hZ30zJkk0Y19pMHxWUGVuTDApdUFPajkyaHw3V3twYVMrbDhwSWQqMFR0TU1qUFV+XzY5
ZVBxZ1VzQGkKWTlUPlNMS1ZiRnxmeSNqP0UqbzZ+Vj5ARm0wSmY0MXY7WTdBCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJn
ZW50aW5hL0NhdGFtYXJjYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2EKaW5kZXggOWZlOWFkNjQ3MDkzOWQ3OGQ1
ZGZkOTQyNzZmMGZmMzMyZjFhOTFlNi4uMGFlMjIyYTJmOGJiMmZiMWI3YWJlMTdkMDhlMDc2Njc0
YzUxNTQxZCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1OAp6Y21jYzB2NHZ4VEk0YzdQ
WT9QXkVvRkZhPVc8dj0oQWs3QkVCQWFoOWVxZnhlIWRTK15XdXQzZ1ktaHtgMDNMen4KQXROO0sy
CgpkZWx0YSAxMDIKemNtZG5PYWd9MyZJNGNfaTB8VlBlbkwwKXVBT2o5Mmh8N1d7cGFTK2w4cElk
KjBUdE1NalBVfl82OWVQcWdVc0BpClk5VD5TTEtWYkZ8Znkjaj9FKm82flY+QEZtMEpmNDF2O1k3
QQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9BbWVyaWNhL0FyZ2VudGluYS9Db21vZFJpdmFkYXZpYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0FyZ2VudGluYS9Db21vZFJpdmFkYXZpYQpp
bmRleCA5ZmU5YWQ2NDcwOTM5ZDc4ZDVkZmQ5NDI3NmYwZmYzMzJmMWE5MWU2Li4wYWUyMjJhMmY4
YmIyZmIxYjdhYmUxN2QwOGUwNzY2NzRjNTE1NDFkIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRl
bHRhIDU4CnpjbWNjMHY0dnhUSTRjN1BZP1BeRW9GRmE9Vzx2PShBazdCRUJBYWg5ZXFmeGUhZFMr
Xld1dDNnWS1oe2AwM0x6fgpBdE47SzIKCmRlbHRhIDEwMgp6Y21kbk9hZ30zJkk0Y19pMHxWUGVu
TDApdUFPajkyaHw3V3twYVMrbDhwSWQqMFR0TU1qUFV+XzY5ZVBxZ1VzQGkKWTlUPlNMS1ZiRnxm
eSNqP0UqbzZ+Vj5ARm0wSmY0MXY7WTdBCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJnZW50aW5hL0NvcmRvYmEgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9BcmdlbnRpbmEv
Q29yZG9iYQppbmRleCA4YzU4ZjhjMjNlYjBkNjZkODA3MTRhOTc4OWI1YzIwYWJmMDQzY2EyLi5k
YTRjMjNhNTQ1YjM2MDNiY2RkNDU1NWJhOGZlYmExMTc4MDJlN2I0IDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmRlbHRhIDU4CnpjbWNjMHY0dnhUSTRjN1BZP1BeRW9GRmE9Vzx2PShBazdCRUJBYWg5
ZXFmeGUhZFMrXld1dDNnWS1oe2AwM0x6fgpBdE47SzIKCmRlbHRhIDEwMgp6Y21kbk9hZ30zJkk0
Y19pMHxWUGVuTDApdUFPajkyaHw3V3twYVMrbDhwSWQqMFR0TU1qUFV+XzY5ZVBxZ1VzQGkKWTlU
PlNMS1ZiRnxmeSNqP0UqbzZ+Vj5ARm0wSmY0MXY7WTdBCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJnZW50aW5hL0p1anV5
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJn
ZW50aW5hL0p1anV5CmluZGV4IGE3NGJhMDQ2MjI2MDYwYTAxYzYyNTViNjcxNGE0MDIxMWY3Mzlh
MjQuLjYwNGI4NTY2MzY3MmQ4MzY1OGYzMzFhNjljYzhmNDFjZjJhMmI1YTEgMTAwNjQ0CkdJVCBi
aW5hcnkgcGF0Y2gKZGVsdGEgNTgKemNtZG5WRkBzfSpJNGM3UFk/TFdzb0ZGYT1XPHY9WkFrN0JF
QkFZS1RLNDZAQGstM0N9JVNQQTAqdl47PjAyTHEhCkErVy1JbgoKZGVsdGEgMTAyCnpjbWJRaXY2
RXdoSTRjX2kwfFZQZW5HIX1HQU9qOTJofDdXe3BhUWwpOHBJZCowVHROMWh3JVg7NjllTzlNTWwt
aApZMjg9OXwtNTkrQHBtSmJ9JVNQQTAqdl47PjBDVjtYMV5AczYKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9BcmdlbnRpbmEv
TGFfUmlvamEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1l
cmljYS9BcmdlbnRpbmEvTGFfUmlvamEKaW5kZXggY2IxODRkNmE4MGQzYzQ5NzZjYjc4ZDgyYjM3
NDA5MTkwZWRjNjVmMy4uMjIxOGUzNmJmZGI5NWVhMDQxYjE2NmYxODM4OTVhNmNhNDg3MWFiMSAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2OAp6Y21hRk5hZm9Bckk0YzdQWT9OdGNvRkZh
PVc8dj5rQWs3QkVCQWYzc3skT05lb05VT2JJTjU9YlZ7I0NxRjkoOzYKS3U3UjxnRiY2LWw0LTJG
SwoKZGVsdGEgMTAyCnpjbVhAYUB0OStSSTRjX2kwfFZQZW5QeF5GQU9qOTJofDdXe3BhS3ArOHBJ
ZCowVHRNTW4oK3JDNjllTzlMcV41UApZNHZaWD0tIWw3KEs7XiZgbXlORTB2N0lwJjBKTllEVWpQ
NkEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW1lcmljYS9BcmdlbnRpbmEvTWVuZG96YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0FyZ2VudGluYS9NZW5kb3phCmluZGV4IDVlOGM0NGM4
OTM0OTYwZTIwMTBlN2IwNTA1OTY2NzQ3Y2IyYzZlNTAuLmY5ZTY3N2YxNzFiMzkwMGRmZDk3OGVi
OGVhMmFhMjI2NTU3ZDJjNWIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTgKemNtY2Mw
djR2eFRJNGM3UFk/UF5Fb0ZGYT1XPHY9KEFrN0JFQkFhaDllcWZ4ZSFkUyteV3V0M2dZLWh7YDAz
THp+CkF0TjtLMgoKZGVsdGEgMTAyCnpjbWRuT2FnfTMmSTRjX2kwfFZQZW5MMCl1QU9qOTJofDdX
e3BhUytsOHBJZCowVHRNTWpQVX5fNjllUHFnVXNAaQpZOVQ+U0xLVmJGfGZ5I2o/RSpvNn5WPkBG
bTBKZjQxdjtZN0EKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW1lcmljYS9BcmdlbnRpbmEvUmlvX0dhbGxlZ29zIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJnZW50aW5hL1Jpb19HYWxs
ZWdvcwppbmRleCA5NjZhNTI5YmE5ZWQ4YTRmYzYzODUwNzdjZjE4OGY5NWQ0NzY2NWUzLi5jMzY1
ODdlMWMyOTI2NzNmYTUzN2NlY2Y3MjlmNGM4NzNkMzc1YzlhIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDU4CnpjbWNjMHY0dnhUSTRjN1BZP1BeRW9GRmE9Vzx2PShBazdCRUJBYWg5ZXFm
eGUhZFMrXld1dDNnWS1oe2AwM0x6fgpBdE47SzIKCmRlbHRhIDEwMgp6Y21kbk9hZ30zJkk0Y19p
MHxWUGVuTDApdUFPajkyaHw3V3twYVMrbDhwSWQqMFR0TU1qUFV+XzY5ZVBxZ1VzQGkKWTlUPlNM
S1ZiRnxmeSNqP0UqbzZ+Vj5ARm0wSmY0MXY7WTdBCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJnZW50aW5hL1NhbHRhIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJnZW50
aW5hL1NhbHRhCmluZGV4IGIxOWFhMjIyZjkxZDA3YzRmY2RjOGI1MDQ5NzI0NGM2NGYyZGYxYTIu
LjBlNzk3ZjIyMTVhYjM5OGJjNTliOGU0ZDYwZTUyNjBmY2IzNjVjM2IgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKZGVsdGEgNTgKemNtZG5WRkBzfSpJNGM3UFk/TFdzb0ZGYT1XPHY9WkFrN0JFQkFZ
S1RLNDZAQGstM0N9JVNQQTAqdl47PjAyTHEhCkErVy1JbgoKZGVsdGEgMTAyCnpjbWJRaXY2RXdo
STRjX2kwfFZQZW5HIX1HQU9qOTJofDdXe3BhUWwpOHBJZCowVHROMWh3JVg7NjllTzlNTWwtaApZ
Mjg9OXwtNTkrQHBtSmJ9JVNQQTAqdl47PjBDVjtYMV5AczYKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9BcmdlbnRpbmEvU2Fu
X0p1YW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9BcmdlbnRpbmEvU2FuX0p1YW4KaW5kZXggOWU1YWRlNjEwMGJiNGExMmU2MjgyN2E1OTZjMGZj
YzI5ZGY1MzkxNS4uMjY5ODQ5NWJiM2Y5NTM2ODVlNDVlZGI5MTY3OThjZDI0Zjc3MjY2NCAxMDA2
NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2OAp6Y21hRk5hZm9Bckk0YzdQWT9OdGNvRkZhPVc8
dj5rQWs3QkVCQWYzc3skT05lb05VT2JJTjU9YlZ7I0NxRjkoOzYKS3U3UjxnRiY2LWw0LTJGSwoK
ZGVsdGEgMTAyCnpjbVhAYUB0OStSSTRjX2kwfFZQZW5QeF5GQU9qOTJofDdXe3BhS3ArOHBJZCow
VHRNTW4oK3JDNjllTzlMcV41UApZNHZaWD0tIWw3KEs7XiZgbXlORTB2N0lwJjBKTllEVWpQNkEK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QW1lcmljYS9BcmdlbnRpbmEvU2FuX0x1aXMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9BcmdlbnRpbmEvU2FuX0x1aXMKaW5kZXggYWY4YWE5OTg2
MDExOWM5ZmQ0YWY3YjkzNTZmN2I1NDhiNzcxYWMxYi4uZmU1MGY2MjExY2ZmOTA4ZjIxMjU3Y2I0
MjI1OWZlMjY5MmFiZGM0ZSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1OAp6Y21leSZh
Z0preEk0YzdQWT9TRl9vRkZhPVc8dj5rQWs3Wk1CQWNIeHskUU5eZlZxfX4lU1BBMCp2Xjs+MDVf
RWkKQSVLIWlYCgpkZWx0YSAxMDYKemNtWEBkQHRJP1NJNGU1PzB8V2E7bk5DSk5BT2lfWjVTSWxA
TDRfUUVHPjkrcTExaGxqQkk2SDZDSS1nSWhLITFuClk5VCsoI2VgWEZBZ1VVZkVFKm82flY+QEZt
ME9vPVhvQiNqLQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BbWVyaWNhL0FyZ2VudGluYS9UdWN1bWFuIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJnZW50aW5hL1R1Y3VtYW4KaW5kZXgg
YmJiMDNhMGM3MDU2MjZkZDIyNzc2ODE4YjYxMDM1ZmY1MDFiNzkzMi4uYzk1NDAwMGJhOWIyODIw
NGNjMzIyMzYyOGQxM2U5ZGNmYTRiNmViMCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2
Nwp6Y21leSFhZS1ya0k0YzdQWT9TRj5vRkZhPVc8dj1GQWs3QkVCOCM2ZUdCR2t2SGVeKHQ/Nyt3
fW5WLWR2Z1VkJE8KSnp9VXsxM2psV0YzV1dkdwoKZGVsdGEgOTIKemNtY2I+QHNWU0tJNGNfaTB8
VlBlbkdReENBT2o5Mmh8N1d7cGFQQ1M4cElkKjBUb3okZnN1KWtWZSRwJDNLNklYCk9uQnViMEg4
OGRfPF5sajQxUGFMagoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BbWVyaWNhL0FyZ2VudGluYS9Vc2h1YWlhIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJnZW50aW5hL1VzaHVhaWEKaW5k
ZXggMDdlNGU5ZjBiZDVmODdhZTA2N2Y2MTNmNTJjZTQzMjdkYWU0Zjg4Mi4uMzY0MzYyOGEyNDcy
MzIzOWExM2Q2MWIyMjE1YzkwN2NkYmEwMzk4NSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0
YSA1OAp6Y21jYzB2NHZ4VEk0YzdQWT9QXkVvRkZhPVc8dj0oQWs3QkVCQWFoOWVxZnhlIWRTK15X
dXQzZ1ktaHtgMDNMen4KQXROO0syCgpkZWx0YSAxMDIKemNtZG5PYWd9MyZJNGNfaTB8VlBlbkww
KXVBT2o5Mmh8N1d7cGFTK2w4cElkKjBUdE1NalBVfl82OWVQcWdVc0BpClk5VD5TTEtWYkZ8Znkj
aj9FKm82flY+QEZtMEpmNDF2O1k3QQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0FydWJhIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXJ1YmEKaW5kZXggZDMwODMzNmJlYzlh
NTM5NzQyY2EzODg1YzQ0YTRkM2M1YTY3NDQ2My4uZjdhYjZlZmNjMGY1YmZkNWM0MTcyY2JlMzJj
MDNhOGUwOGIwMDk5YyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE4Ngp6Y21XSEUl
MWtxMnp6ZGp3dmRsb3RIKDU/a2BQKzspOSpqKT98TD4xd1ZFRig0enp6bk18Tm9DNFZCcXJjNFBu
cVYKZUZmbGVAYTEwSiUycUQ0THwzQ21UOEFLQ2pJdjNDaTZEfE8leiVDTzIKCmxpdGVyYWwgMjEy
CnpjbVdIRSUxa3EyenlRb1o1ZkJDZTdATXlGJGVBcHNyfkdaazh4SUNYcnZMeDwkMSpWZHw5QFp5
MUl6I2EjfTY9WQpyYFNed349byorOTghJEtxaGsmI0tLP24mSntENWN5bikmfWYkUlpGO2w0Vj4j
ZHJpMGltNjAhKgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BbWVyaWNhL0FzdW5jaW9uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXN1bmNpb24KaW5kZXggM2M2MWRkYjVhN2E5OTU2ZTI0
NDhlYzcxODVlZGVhNzVkZjA4YmQzZS4uMmYzYmJkYTZkMzU4NmEyZWY1Yjk0YmMyOGZmMzc5MDZm
YmM3NThmNSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1Mwp2Y21iTyRAUH5oYkk0YzdQ
WT9MfDJHKGxWeCUhVSQ4SyQ7RFIxdllDajMkUlEhVmNJdE5GU2BOJntJQ2d0CgpkZWx0YSA5OQp6
Y21leXZLVVpMYUk0Y19pMHxWUGVuUjg0JEtuNUk0NVNJbEBLbjBxQ0c+OStvMTFoanRqOUd3JWdA
S1dZZDlvcFUKVyo8Xm52aj4qZn1PfVV9NkFacWUkYzB+WXR1bmVnSAoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0F0aWtva2Fu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQXRp
a29rYW4KaW5kZXggNTcwOGI1NWFjNmJjYjc1ODA0OThiZWQ5NzIxYTQzZmJkNWExNzczZi4uNjI5
ZWQ0MjMxOTQ0MjU1YWFhMDcyNWY4MDc1MTdkZjQ4YjM5ZTEzNSAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSAyOQpqY21jYn5iYilFWUU+M21eMV9tfURtWThfalZ4b3NYODwlVHZoJCRCVWJS
aD5GCgpkZWx0YSAzMgppY21jYj5iZHpicUU8cHxrMV9tfURtaVBmQUt3I293M3IyPkN6ZTUzZnRP
dTA8CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FtZXJpY2EvQXRrYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BbWVyaWNhL0F0a2EKaW5kZXggNTY5NmUwZjhiZWRlZTcyNTE1YzQzZjY4Njg4MWE1NjFh
ZjMzOWRiOS4uNDMyMzY0OThmNjgxY2MwNmY2NGNhMmFmYTYxMzg4MDMzMWZlNmZiYiAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSA0OAp6Y21kbGh2Xyl2Y0EwYCRDaFNpVElGP1ZvSVdNRSs2
MCVGQ0BHbnFTQlNRKGpeUyhxanBhKT9afT1VfCljJG5nZ04KRE8xPXlgCgpkZWx0YSA1Mwp6Y21k
bFl2e3pgdUFFd0QwSUhEJHBGJmhhXlZxanE0MCVGQTxLbXI2ZFBoez8zVlBqeHFWckY1UXRpVH5O
Kl4xKkEKRTBEekdVU081UzMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9CYWhpYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0JhaGlhCmluZGV4IDYwMDhhNTc0OWQwMTg3NWE2
OTk1MTg5NzM1YWE4YjRlODc0N2QyNTAuLjE1ODA4ZDMwZmIxYmIyNTBjY2UxOTVhMDBhMmQ3ZGNh
MzIxZGY3ZDMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgOTMKemNtYlFtKFpEZjVUJEJM
YCphNndoSytINEk7S3lWYE0kXmQtajJ4NVNHUnh5cXdzfTl9MlMjTHQ5OSVaSzJGNztBCkZUbVlH
QDUyRkE4CgpkZWx0YSAxMTQKemNtWnFSbjhoKGNUI31pQWZkUGE7eiNmUH1ZQFAtbkY7VjlTQmc1
bmMlJEFke0dBcHdJMSVQMEp4R1l4bktPb1chClhvN1hVWVVffEtSZzl2bGs9byVRPzhGSyp1YVhB
bisKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW1lcmljYS9CYWhpYV9CYW5kZXJhcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BbWVyaWNhL0JhaGlhX0JhbmRlcmFzCmluZGV4IDIxZTJiNzE5ZjMzZDYx
OTVhNjVjYmNlODE3NjRhZGM5MjE2N2I5ODkuLjg5NmFmM2Y1NmFiZDcxMmUyZmE4NWQ2OTU5MmJk
MzNiODhkMzY0YmMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzUKdmNtZG5PKTVTQUVU
JEJMYCF+KXN1S3JGRypwb0RSOUtJe0MrS308TVFZO0kkRSEzMCghIXpLWCRqRytzJQoKZGVsdGEg
MTE4CnpjbWVDOyp9XmtIVCN9dUVmZFBhO0FQJEhAWT41VVN1fkRhbGsmJDhZMD49NCNLcHFtOUFU
RW5sKCt7WWMmRGwmWgpSbT5AY05rK2QtfE8jYTkhMj4+VHs0a2BjdQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0JhcmJhZG9z
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQmFy
YmFkb3MKaW5kZXggNjMzOTkzNjAxNDg2MmUxNDRmOGJlYjA0YjU1YjYxN2Y5ODM0YzNkYy4uOWI5
MGUzMDZhNjhjMzI4NWY2Y2QyZGUyNmQwMmNmOGU3MTA2YWU4ZSAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSA3MQpxY21jYj93Mk50aXhGYGI+LX56SClmTExJbmZ5VHMwQmI+NncxQXd3QFQj
bXNaQ1Jfa0cxcW4oMwoKZGVsdGEgMTA0CnpjbWRuUmJjMVB2eEZpYiQwfE4reTA1PWVXKmE4aGVW
eG89KUJnNGNIQk11LU4zP18pblZwYVNERG5EXmswOVhTYgpObCtWRUI3I3cyNDFwcVdWM2VOeGwK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QW1lcmljYS9CZWxlbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9BbWVyaWNhL0JlbGVtCmluZGV4IGI4ZTEzYjAyZmU5MzY3OTk0NjMzMWExNzM2OTQ1ZDAzM2Vh
ODI1MjUuLjYwYjU5MjRkYzEyZjE0YzI3NDA3M2IxZmU0Y2NjNTkwYjc0MmRhNWEgMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKZGVsdGEgODgKemNtY2JgYSk0IW14RmBiPmtPUSlyZnRZOGFMQisoNHE3
eDZXUDFhXm8jSEREbUptVXcxRGhANmlUPzFuflY9ZSReCkN5JDs5IwoKZGVsdGEgMTA5CnpjbVhA
V2EqSmh4eEZqPEowfE4reWZJSlhgKmdPcURWeG1xM0JmfSZuJCUlV0YqPz9SaW0+QDJUUnJMPnVH
e2E7YgpUI3QkJHBkPU4xJTgoamxxSjdYPlkqN0ZULQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0JlbGl6ZSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0JlbGl6ZQppbmRleCA3
ZGNjNGZjNWI3NzE1MWUwOTk3ZTQ2MjA0ZDU4NGRmYjZiNDY0YzMxLi44NTEwNTFhZTk0YTZlNTE4
ZDUyYjkzNDY0YmRhYWI1MWFhOWQxNDEzIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDkx
CnpjbWNiX3pKK34peEZgYj5GYkE/KGZMTGd2IUpXeTFqUVchbTcrRUdlRnpWcV93c3tyZjRufH4h
WStUTzRBIWJ8dgpEU0h1bW0KCmRlbHRhIDEyNAp6Y21kbk9ldTtnOHhGaWIkMHxOK3lmQ1VoUCpn
XzNKVnhyQytNdXkzTyU9KGlQbXt9JF9GemF5dTE7Sm9+eEdZdigKWktjTW9QciF3d2ZNQWdkJm0x
NXY+NGh9S24wc3MmazVYPUFvCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQmxhbmMtU2FibG9uIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQmxhbmMtU2FibG9uCmluZGV4IGFi
Y2RlN2Q5ODY5M2E5ZDU4MzkyOGM2ZjFhY2RmNDZiMTkwYTUwMGEuLmY5ZjEzYTE2NzlmYTljYTdj
ZWU2YTQxYmYwOTRhODYxZDRjNjgyNGEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMjkK
amNtZG5ZdzJFb01OPWBOZzFfbzlqN01aeHFWNHtsPzg8JTVuaHpTPH1YY0dwRAoKZGVsdGEgMzkK
cGNtWjMqdzMldGJOPG5yODFfbzlqN1dufXJLdyNufjE0ZjM0RT4zSipqPT49JlRtWVMrMlphQ3QK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QW1lcmljYS9Cb2FfVmlzdGEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQW1lcmljYS9Cb2FfVmlzdGEKaW5kZXggZjc3NjkwNDhjYjMzZTExZmIwYTE0ODY2OTY0
NzNlODgyMDY2NmJlOS4uOTc4YzMzMTAwZmIyZDliMTRjMWZhYTU4MTg5MGMxNmM4NzQ3YjQyYiAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA4Nwp6Y21iUWxgaCNWSHhGYGI+UHkoYDxmdFk4
YUxDM157a2BwZypPdVF3Sk9VLTZ1TWdjfitEaEA2aVQ+fSQ0NkR8T08KQ3lBUT95CgpkZWx0YSAx
MDYKemNtZXl0R0txRDl4Rmo8SjB8Tit5ZkhEdysqZ09xRFZ4bXE1QmcxM15DST5iazJNOHZKJVZK
Z2cxMHYwXlMlRmMyClM1dSQ/K0JFKTUqWWhZcSQhVVhfVWtxVnN2CgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQm9nb3RhIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQm9nb3Rh
CmluZGV4IGQ4OTM0NDY2YmI3MjhjODhiMjExZGJhMTcyMzY5ZjUxMDViNjMwMGUuLmIyNjQ3ZDdh
ODM3NjM3ZDNiODVkNGJjODVmODNjODg5ODI1OTdmYWYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
ZGVsdGEgNTQKdmNtZUJZYG89Z3hvUnQ5dENkdmQoNUVsaEFwIyhecjEmOVNFdUdFPDVwdiVFIXFp
Yk1sWFVZV3QtcVopaAoKZGVsdGEgODEKemNtZXl5KnZ+WFVvUngpdmZxYFlCT2R0bzQyNz9MV3ZT
MllObWttZ1JfeVJ3bTB1eUl5RmZ2UiRzNEQ+RkdqUTRICks4a3BMZGFzZEV+aTN3TiQKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9Cb2lzZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVy
aWNhL0JvaXNlCmluZGV4IGFkYTZkNjRiMWFmYzkzYjYyNDQ1ZmI4Njk3MDc1ZmQ2YmU2ZWQzYjYu
LmY4ZDU0ZTI3NDc5MTQ5ZDM1ZjZkZGZmMTJmNzA5MDk2ZjA4YmZhYzMgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKZGVsdGEgMjcKaGNtYURYYlczUSVHLWw0fTM9OW5IS3JGTClJcjkjZCU/VFhMaX53
P20yUE9hagoKZGVsdGEgNTIKemNtY2E1XmpLKWFHLWttVzM9OW5IS3JIaEVOUHhpUmBPR181STJv
ODJmc21EJVdwV30lP19ebyN1KnB1RzUmJHgpCkIzWighNQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0J1ZW5vc19BaXJlcyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0J1ZW5v
c19BaXJlcwppbmRleCBlNDg2NmNlMTc3OGZkMjY3OGE4NWRjNjc5MWE2YzFiM2ZjYWE1ZDFlLi4y
NjBmODZhOTE4MDY3N2Q4NmZjMzI4MGIwNmYwMWQ2YTZjZDkxYzk0IDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmRlbHRhIDU4CnpjbWNjMHY0dnhUSTRjN1BZP1BeRW9GRmE9Vzx2PShBazdCRUJBYWg5
ZXFmeGUhZFMrXld1dDNnWS1oe2AwM0x6fgpBdE47SzIKCmRlbHRhIDEwMgp6Y21kbk9hZ30zJkk0
Y19pMHxWUGVuTDApdUFPajkyaHw3V3twYVMrbDhwSWQqMFR0TU1qUFV+XzY5ZVBxZ1VzQGkKWTlU
PlNMS1ZiRnxmeSNqP0UqbzZ+Vj5ARm0wSmY0MXY7WTdBCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQ2FtYnJpZGdlX0JheSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0NhbWJy
aWRnZV9CYXkKaW5kZXggZDMyMmYwMWVkMWQxMTg1NmUwZjE3ZDFiYTVkNWY2Y2E4Njc1MzNjMy4u
ZjhkYjRiNmViZjViNjZkM2Q1NjZmYzM5NzVkNjE1MTc4M2Y2ZTY0NSAxMDA2NDQKR0lUIGJpbmFy
eSBwYXRjaApkZWx0YSA0OAp1Y21kbGF1dFo+akdHe2RkMHxQZUB0OE8lUyE/OzxOTnR6S013QXF2
UzJKPldEclhRMX5JM3hmN3RxUHcyCgpkZWx0YSA4OQp6Y21aMT91dHtLb0dIKHE3MHxQZUB0Mk98
TWpYR31fKiUrN15uVjRCN0Q+QTd9UEdEbDA/OEB7YDVVJUo0UCFSfWgKUXdxZEAoakgmWVVXRjhJ
KTBQTk5mcnZMeHwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW1lcmljYS9DYW1wb19HcmFuZGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9DYW1wb19HcmFuZGUKaW5kZXggZGU1MmJiNjgx
NDNkYjA4ZDM4MWU0NDFiYTI2YTg0YzYyMDQ4ZjBiNS4uODEyMDYyNDdkOWVmYTdkM2RkMTBkZDll
ODhjNjY5NzE4ZDg2Y2M1MCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxMDAKemNtYUZC
emwzeyZ4RmBiPmh5aypoZnRZOGJLQEtCSntyfl59Q21TK0ZHY3J4eSRSdmtMPjFJeW1KNHxTNUlr
Oz9lCko0TlVBenhCI35ZNmhpPDIKCmRlbHRhIDYwNgp6Y21ZayZ5LVB3LTlMRGpaa3dYTyRMRlEw
MjM4QzQhWTdgTjJYZWtJV0M8cjJaUUE4fXU2Y04rJXJHfn0/aGJTcjwKeitKZH4mUHp9WVV3SUNY
enE9dHMqS1BhQFItKlheSHhjNzVDKlRMc3woKWl3N0ZxLU5aVzRRM2kofW19ejlObyYrCnp1ckJN
cDhQe2U8UlglclEqWEVVYmJ6JDJoZEBYMEhLZDE9KiZtOWtwdzJIdUVPYndkOU02ZiltaDc4WGx2
PilZKgp6cEkyZmpITm5GVlB1bFd5QTczZTVYcHVvOVUpfFokcU5XOztNYmNXVl9SOFpQdU5KUmRe
VGE/KEJ5S0JldlZCRyoKelBydnpFKWdAQSFoaXoqNXJBd14pdmcqZEFVUyE0JmN5eytndTtRXzlz
I3d4PjdjPSNwMkt1WT9ESHVFY0ZXSTZhCnp4dWghSkdJbDwhZjc4bzNJS1UpYFNyRjQ4PTBRd15t
P0A+SDVPYnc4OERoNFNyYkVuXlFVWnQhNUdqWihMa31GRgp6Mn1CbyZIVn1PdjhiTmZEUVkobUZR
ZmRhI08tayhgYGJudUZMYE8oMT4zdShBPSFwWH5oM0U+PTdSdFY0JlhTU2UKb15MZUtJXnxxazU4
Tlh0elZXQHtZVH40fD9Udm9URCpjMlBAPHlOPWQ9RDxWNEZYRSU4IX5nJlEKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9DYW5j
dW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9D
YW5jdW4KaW5kZXggN2U2OWY3M2RlNDQ2OThiNjViNjEwMzhlYTQwOTcyZjFlN2M3YWZmYS4uZjkw
N2YwYTViYTc3YjllYzg0NWM0NTBjZDUzNWVlNTg5YjQ2YzVhZCAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSAxMDUKemNtZG5NKjJnd01UJEJMYFhhVSkqS3JBeFJVPEVyUEdaUDMtelFgbXFA
ZE1sQndAayprUkJ0WTMzfUQyZm97aF5qCklJSy0zLTAzVGZ1NComb0YKCmRlbHRhIDEwOAp6Y21l
QlUrclR6S1QjfVc2ZmRQYTtLcFRpYlk+QF5hRjtRcDU8a2R7RVR0RnJpT2MwbUZzYD58MWVzY19D
MDMlM2AKUDA4OXIxMUQ5KVhoJCRCVW83RF81CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQ2FyYWNhcyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0NhcmFjYXMKaW5kZXggYzhj
YWIxYWYyNmIwM2E3MDA4ZDM0MDc4ZWZkZjVhZTA5M2Y1MGMxMC4uZWVkZjcyNWU4ZGUxYTYxYzRk
Yjg4NmNlOGI4YjYwZmI0ZWU5MWM3NyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1NAp3
Y21aMzspV0l9Q29SdDl0Q2R4IWk1RWxoQXAjJlJ7VyZ2V01pNW08aXgpXlk5KzJ8VVcqcUx3djBN
Nk01aHlWWnAKCmRlbHRhIDgxCnpjbWVCUlRGNWoob1J4KXZmcWBZQk9hdXB6Mjc/TFd2UzJZTm1t
TnJoXyhESVIwdXZWKUZmdlRNVT8yZUhHalE0SApLOGtwRmJafip7d2kzdWhFCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQ2F0
YW1hcmNhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJp
Y2EvQ2F0YW1hcmNhCmluZGV4IDlmZTlhZDY0NzA5MzlkNzhkNWRmZDk0Mjc2ZjBmZjMzMmYxYTkx
ZTYuLjBhZTIyMmEyZjhiYjJmYjFiN2FiZTE3ZDA4ZTA3NjY3NGM1MTU0MWQgMTAwNjQ0CkdJVCBi
aW5hcnkgcGF0Y2gKZGVsdGEgNTgKemNtY2MwdjR2eFRJNGM3UFk/UF5Fb0ZGYT1XPHY9KEFrN0JF
QkFhaDllcWZ4ZSFkUyteV3V0M2dZLWh7YDAzTHp+CkF0TjtLMgoKZGVsdGEgMTAyCnpjbWRuT2Fn
fTMmSTRjX2kwfFZQZW5MMCl1QU9qOTJofDdXe3BhUytsOHBJZCowVHRNTWpQVX5fNjllUHFnVXNA
aQpZOVQ+U0xLVmJGfGZ5I2o/RSpvNn5WPkBGbTBKZjQxdjtZN0EKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9DYXllbm5lIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvQ2F5ZW5u
ZQppbmRleCA2ZGI2NDA5ODFmMmI4NDU3Njk4MzRlNTcxNDI4MTdkYThiYzYxYzMxLi5lNWJjMDZm
ZGJlNWEzMDYyZjkwMjc0YTZiNWNjNWM1NmUyZDc0ZDVmIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTk4CnpjbVdIRSUxa3Eyenpkanh2TE1WZUByKDleLS1rXlApY15uZ3BPSn5ffE5u
Q3o3I1JObEtZb0NMPF5UVnk3Wl5CdgpwZF94Iz80TlFSOG0/NEEmZ01zRyMyTkAyY0teQjBWUXg5
WWx3MW1xQlhxQkJZN1hXJlBIP1JOegoKbGl0ZXJhbCAyMjQKemNtV0hFJTFrcTJ6eVFvWjVmQkNl
NzlhKyhjXlpKayM0cCt0ZWpoZUhRMituYGUrRVYtcnZMeFhlUENldHxOcjtfCnoyQTJRLXVVPXJf
QGJMe3smXjBndFZxPjZzNUN8Y2Bqdm8qJEtva0d9MmlYT3BMSDI9IT53Iz15P2N9bG4rSFlzZgpG
MXB4aV5JV188UQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BbWVyaWNhL0NheW1hbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BbWVyaWNhL0NheW1hbgppbmRleCA1YzFjMDYzNzJjNmRjODYxMGZmZDE0
Zjc0ZTkyM2JkY2I5YjIxZDMxLi45OTY0YjlhMzM0NTJmNGI2MzZmNDM3MDNiN2NkZWM0ODkxY2Jk
YTVmIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDYxCnpjbVhAanhRJWd3STRjN1BPcTgq
aEFnJX56TEoxfXklPyFqbXxBOFIwVH09USlQYyU/cjw4bG9TRzM1ZFBiPXdhdAoKZGVsdGEgODcK
emNtZG5TYyQjczdJNGQmKTB8V0MhODRFVGI0Rm5VIV59ciQhOXNgV2NeOCtnSTl8JHRyKWRXQ3Zf
bXsqTTM9PTBQCk5ASWQ2YVQhVFlReGQ1d3o2SygoaQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0NoaWNhZ28gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9DaGljYWdvCmluZGV4
IDNkZDhmMGZhODJhNjA3MTBjMDcxMWYzNWRlZTkzZWY1MDEzY2E3OTYuLmE1YjE2MTdjN2Y3MGJm
Yzc3YjdkNTA0YWFhM2YyMzYwMzA4MmMzY2IgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
MzEKbGNtWnBhYDYwYypudzllbjB8TnMpNUtDPEtWTkdENEVYYm18YDRXI2xCTElVezJkKTRCCgpk
ZWx0YSA0MQpyY21ldyUtNipyY25wTjtFMHxOcyk1S0hfMzUrSmJJZypBYmxrenVrUml8WGMrSm89
MFAjMGR6VwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL0NoaWh1YWh1YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BbWVyaWNhL0NoaWh1YWh1YQppbmRleCBlM2FkYmRiZmIyNWI1NTdkYjJh
MmVkZmM3MjFjMzY1ZDkwNzA2MjMzLi44ZWQ1ZjkzYjAyMDAxYTYzY2U0M2RkMjIxZmY0OGNjNWZh
YTY3NTJlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDk0CnpjbWV5d2VUSTkyeEZgYj5o
eXQ/TmZMTFVzSz9kVnc4YGVwPDxUcXpDVTA/eiFrbF53UzRsKHoyM0ROTzIoS0ZPRApPKEQ1fWkm
QDxJRC1+c0BsclZvQXEKCmRlbHRhIDEzMQp6Y21YQFp7ZlQ+bXhGajBgMHxOK3lLcnw0OCpkaCU7
Vnh2dzU8NzdxRiR2aStkOTgzX0cjajQ+NFJLP35YclZDNlUKaVRgRiliS245bUBhRVE2RE9OZnJJ
aUpxYUpmc1VgQ2Z1NTxKMFQlIWhPQXpBIwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0NvcmFsX0hhcmJvdXIgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Db3JhbF9IYXJib3Vy
CmluZGV4IDU3MDhiNTVhYzZiY2I3NTgwNDk4YmVkOTcyMWE0M2ZiZDVhMTc3M2YuLjYyOWVkNDIz
MTk0NDI1NWFhYTA3MjVmODA3NTE3ZGY0OGIzOWUxMzUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
ZGVsdGEgMjkKamNtY2J+YmIpRVlFPjNtXjFfbX1EbVk4X2pWeG9zWDg8JVR2aCQkQlViUmg+RgoK
ZGVsdGEgMzIKaWNtY2I+YmR6YnFFPHB8azFfbX1EbWlQZkFLdyNvdzNyMj5DemU1M2Z0T3UwPAoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
bWVyaWNhL0NvcmRvYmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW1lcmljYS9Db3Jkb2JhCmluZGV4IDhjNThmOGMyM2ViMGQ2NmQ4MDcxNGE5Nzg5YjVjMjBh
YmYwNDNjYTIuLmRhNGMyM2E1NDViMzYwM2JjZGQ0NTU1YmE4ZmViYTExNzgwMmU3YjQgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTgKemNtY2MwdjR2eFRJNGM3UFk/UF5Fb0ZGYT1XPHY9
KEFrN0JFQkFhaDllcWZ4ZSFkUyteV3V0M2dZLWh7YDAzTHp+CkF0TjtLMgoKZGVsdGEgMTAyCnpj
bWRuT2FnfTMmSTRjX2kwfFZQZW5MMCl1QU9qOTJofDdXe3BhUytsOHBJZCowVHRNTWpQVX5fNjll
UHFnVXNAaQpZOVQ+U0xLVmJGfGZ5I2o/RSpvNn5WPkBGbTBKZjQxdjtZN0EKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Db3N0
YV9SaWNhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJp
Y2EvQ29zdGFfUmljYQppbmRleCBjMjQ3MTMzZTMzNGJlZTNiNzgwMjc0MTM4M2JkZGVkYjljZGY2
Y2MzLi4zN2NiODVlNGRiZmI3YWM5YzAxZWVjZjU4NGExYTcyMWVkMjUxZTkzIDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDUyCnVjbWNjMHcxO1ZlSTRjN1BPcTl1PEFUQTFLTEoyTSklPnUt
TjZBdVNXM144V29hdDtuTDt7cEtOZDxaSzUKCmRlbHRhIDc5CnpjbWRuUGJkX20+STRjVlMwfFUh
TW5RUlVxNEYoZyRXeC0tbEU7bzx7QGRiWkMxdHg5fFV9VHNXViQyOFNHaktUdgpJaG5SNXowRTFa
eEpwY2R6CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FtZXJpY2EvQ3Jlc3RvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BbWVyaWNhL0NyZXN0b24KaW5kZXggNzk4ZjYyN2E4MWUyNWY5NjU3YzEyOTA5
ZjRiMDg3OGY1NWVlYTlkMi4uY2E2NDg1NzNlNDgzYzg2YzFjYTA5ZDZkNWJlMTMxODc3Mzk4Yzhm
OSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2OQp6Y21hRktjITY8KEk0YzdQT3E2aytB
ZyYyIUxKNExkJT51K2N8QThSUndxT3M0b18pPWAwN09xVChQcmNGNEd1QnEKRjBzdk1zN0ZQZk8K
CmRlbHRhIDk4CnpjbWNiPl8+eXNnSTRjVlMwfFUhTThEfGI0NEYoZyRPfkdQTkV7eDZkMTFqKHoy
O3l1RF9KSFd3KlNyZnJedF8rZQpTMz1fPllfQEdKe3hPe157JSgoI1peQkdQNgoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0N1
aWFiYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNh
L0N1aWFiYQppbmRleCAxNDVjODllMGY4OGEyMTBkZDdmYTNkOTUzZDJmNjJhZjgwM2I2MmI5Li45
YmVhM2Q0MDc5ZjQ0NDlkNWJlZDIyYjgxNDA0YjVlZTJhYjYzOTRhIDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmRlbHRhIDEwMAp6Y21YQFktQCFkV1QkQkxgTDs9fiVLK0xuekFjY3tve3tSMn5sTVJf
NzhKUStHdSo+MDZ5N0BvVDg3NEhmOTklWksKSjF9MWhVVG1ZKmE2bz4hLQoKZGVsdGEgNjA2Cnpj
bVlrJnktUHctOUxEalprJUkqbExGUTAyeG56Mi03RDxHaHRzdW1ycnBSNzI1cW1SNSNJKEhIUWRA
I1U2eEJadgp6PGMpQEVDQCNeSzVEaWglOGpXcCpIdVpaQjFQUytrdUlEPVZlMFE3ZlRaJEhJMTdp
I3FKfU87IVpxQyF+K2BlY34KejFHblMpPzVNYClQRih1RFFxZE42ezM2KFByaUNKazI+bT9wQEpQ
RHxLUDl3Pz9NcDw/cj9qWilNTU13ZGVDZ3ZfCnpFTjNTOSVIeS1YSXo3UEclOW5hPCRpbW42NClu
T1MmSihlJG9+WGFecSg3aTF0MmFGNSQleGNsUlpEbHlpMWdfPAp6LT43Ki1YOFg4OSVmOXhBJjdp
N25UXlU3Zz8xLSFUP31DK0Q4eilMLUx0cDlCJn4yaT5OfXI7bz47SUFoOW15cCUKemBJZk5Aa0Zq
RXViOHZ1MzVWSWhyTENrfWcycipNaVF6N09gWCk/cllETlRvJUZRbyghODZaKitEbmt6KHBiMTE1
CnpoJkIqP0FSMGsqbDJSKihVUSVpWChNP00yQW9Ad0VBdykrPUUkUklyVzlXJGtHPT1DMihINj9T
V1dGfml6WlZLagpsfExnNVVaeVNFYW4wZEk1X2p+KjQ/KUtWIWlzRGNsK3t4YGVtJjEoKl5Ebyst
cnk+OVYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQW1lcmljYS9DdXJhY2FvIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FtZXJpY2EvQ3VyYWNhbwppbmRleCBkMzA4MzM2YmVjOWE1Mzk3NDJjYTM4ODVj
NDRhNGQzYzVhNjc0NDYzLi5mN2FiNmVmY2MwZjViZmQ1YzQxNzJjYmUzMmMwM2E4ZTA4YjAwOTlj
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTg2CnpjbVdIRSUxa3Eyenpkand2ZGxv
dEgoNT9rYFArOyk5KmopP3xMPjF3VkVGKDR6enpuTXxOb0M0VkJxcmM0UG5xVgplRmZsZUBhMTBK
JTJxRDRMfDNDbVQ4QUtDakl2M0NpNkR8TyV6JUNPMgoKbGl0ZXJhbCAyMTIKemNtV0hFJTFrcTJ6
eVFvWjVmQkNlN0BNeUYkZUFwc3J+R1prOHhJQ1hydkx4PCQxKlZkfDlAWnkxSXojYSN9Nj1ZCnJg
U153fj1vKis5OCEkS3FoayYjS0s/biZKe0Q1Y3luKSZ9ZiRSWkY7bDRWPiNkcmkwaW02MCEqCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Ft
ZXJpY2EvRGFubWFya3NoYXZuIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FtZXJpY2EvRGFubWFya3NoYXZuCmluZGV4IGFkNjhjNzIyZjhmNTZkMTRhMGE5YjNl
MmU5OGZlNTZlZTE3MjU2ZTguLjk1NDlhZGNiNjU3NTY5ZWEzMDQ1OTJhNDA3MGNlZWNiNDU1MGE0
ZGIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDYKcWNtWEBYeHtHeSFHTiUjKTB8T2Zu
M3JzWlZuNEd8ckcrQ012TnBRMTJxV35qTkkwRkZKdjxSZ0QKCmRlbHRhIDc4CnpjbWRuUmRWK089
R09zY04wfE9mbjNwNDxVaTg+dzM0MiYhajR+Un1ZJm8oKXEkI3Q/QXFwfjFlJHElM3M1WkxVKgpL
RDhQdUsmPkh8Kj8rPjg+CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvRGF3c29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvRGF3c29uCmluZGV4IDYxYzk2ODg5YjA3NGI3NTEz
ODZiYTA5MjNiMTgwZTRlZWNiZWEyMjYuLmRiOWNlYWRkOTYzZjNhZDdjZDM2NjRkODIxZTJjNWNk
OTY3NjQ2OWYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzAKa2NtWjIwdXRaPmtIWnh+
RTB8TnNHNUchdUJWZ0E4OVMlY31wV0tqK1kwQzRDQlF2ZCh9CgpkZWx0YSAzNgptY21aMT91dlRE
JEhuVSZAMHxOc0c1RyghdzUrSmJJZyF1PEVCZzE0Sl84JE89RCtpX2sKCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9EYXdzb25f
Q3JlZWsgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9EYXdzb25fQ3JlZWsKaW5kZXggNzhmOTA3NjMwODAxM2MyYzBiNDZmOGQxYjk3MDBhYmFlMmY0
MzVkMy4uZGI5ZTMzOTY1NTc2NTI3MDdjMGMyMjMyZTExOWUxM2EyZGQxNzJmYiAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApkZWx0YSAzMwpuY21aMz9GXmdsdlBEVn5FMV9sTjtBZVB2Q2l0eiZEV0Qm
K0RIWklAYjVPWGQ3ajVHKD0KCmRlbHRhIDU2CnpjbWJRbXY2eTRTUERWaiUxX2xOO0FlUSg2QnRU
JkVBO3RAZ1l6JDB7T3cyNWs2JlpDVj5vYW1wX0dSPkI8TUlzLQpIRzNOcFJJI34qaQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNh
L0RlbnZlciBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVy
aWNhL0RlbnZlcgppbmRleCA3ZmM2NjkxNzFmODhlOGUxZmIwYzE0ODNiYjgzZTc0NmU1ZjFjNzc5
Li41ZmJlMjZiMWQ5M2QxYWNiMjU2MWMzOTBjMWUwOTdkMDdmMWEyNjJlIDEwMDY0NApHSVQgYmlu
YXJ5IHBhdGNoCmRlbHRhIDMwCmxjbWJPIysjfGVVQXY1UFoxX2xPSkFRc3VZaVRNTXw8UndoRUNm
OU9HMDA0c30yPmJ2NQoKZGVsdGEgMzYKbmNtZUFYbytgWHlBK3o5bzFfbE9KQVF0JW5CdFQmRUQm
YEw/ajB9QCFhZU0qKm5Re28oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvRGV0cm9pdCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0RldHJvaXQKaW5kZXggZTNlYTVjM2VmMTIx
OWZkYzFiNmU2NjYzZDJiZjNhMzhjMjdkZjY4OS4uNWUwMjI2MDU3YWM1ZTE1NDkwMWIwZGViYjkw
NTQ3YzA5NmY5MDgzYSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3Mwp6Y21lQVh7M2tG
JG5YezlEZnFATihCe213VUZ0SVEpRnwkbGdXVThIOXp7RH42OSNifCNkVUYpQjJNZkJxJEsoPFkK
RjI+Pj9fNUI+bEUKCmRlbHRhIDYzCnpjbWV3LSY/N2lPbllXOTlmcUBOKEJeclJsTWphSTxNdXkx
Jk9rVmB5O3ktfW1BaDZrJipARmN2ZDJ3PFloWGVxTApDWlZXKkgKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Eb21pbmljYSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0RvbWlu
aWNhCmluZGV4IDQ0N2VmYmUyYzk2N2NjNTY0MmI1OGY1MWFmZjg2YjY3MDczMTM0ZmIuLjY5N2Nm
NWJjZjdmMTUxZmZjMWMxZmM0MjQ3ZTRlOWM3ZTNmZjAxYTMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAxNDgKemNtV0hFJTFrcTJ6elowR3ZQP2tDRzE9VUI0ZGVnKyQzaHF3e3tLSUlm
UHV4d0gteTE0SUR7ZEQxVmpEPDBaeE9zCkpmVG8jbjBSV1IoOU5fPX0KCmxpdGVyYWwgMTcwCnpj
bVdIRSUxa3EyenlNNEA1ZkJDZTdATU8zJGVDPHp5b1ExQ3xObW5sMz1JR09BM3dtcjteUH5fOzF+
PyMwem43fgpWcnVfaXgwR2FhdEtZbWxXZlgxNn0wUlN5JjklQkZpCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvRWRtb250b24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9FZG1v
bnRvbgppbmRleCBkMDJmYmNkNDdmODQ1YmQxMDFhN2VjOTcxNTBkZjc4MjFiODI2MzU3Li4zZmEw
NTc5ODkxYTk3NjJiN2MxMzFlYzVlY2U1ZDZkMDI0OTViZmMwIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDQ3CnRjbWFEUGJWWD1fR1VxRz8xX285ajdUSVchIThDYSQoQCV1Uj1FY2t4U2Ij
IztDVk8jODAwMVY5NDV0NzkKCmRlbHRhIDYzCnpjbWNhMl5oanVlR1ZnMiMxX285ajdISSR5OCs5
XzY3I1N2fmFhXjA2I2pHcHttLV8qZjFBKSFjbUBsd142fSRyZwpEeGRqZDAKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9FaXJ1
bmVwZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNh
L0VpcnVuZXBlCmluZGV4IDQxMDQ3ZjI5MDA0OWVlZDExMWE3ZTFjMGU2YzYwNTY2NmNkZWE1ZjEu
LjM5ZDZkYWViOWI2ZGQzYjIyNWIwZGRhY2NlYjY5ODRlODIwNGFjN2QgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKZGVsdGEgODEKemNtZG5RSSlRYjl4RmBiPlB5KGA5ZnRZOGFMQzNeezt1OX5KOyE/
MkxuTmZmZHFKKUZYTSVUZDkmWGZ4UDxNYSZJCgpkZWx0YSAxMjAKemNtYlFoeGB9bXl4RmpuQjB8
Tit5ZkhEdysqZ09xRFZ4bXE1QmcxM3xDaDNYaTRZYDFQRDN+QkZpJmVgSHNRaExmCldNZ2N+K01q
QENzMV9teDBUPzExKVEhVzVDKmJRKDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9FbF9TYWx2YWRvciBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0VsX1NhbHZhZG9yCmluZGV4
IDliOGJjN2E4Nzc4YTBiOGNhZWE0OTRjZDU5OTUzMThjYTMwZDRmYTguLmUyZjIyMzA0YWFkNTYw
NjJjZmI2NmQyM2YzYThjMjk2Njg5Mjg2ZWQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
NzEKcWNtZXl4XzwoVk94RmBiPlU8STw3ZnRZOGFmeWwodSR+YXtnWCNpIX14U1dHUyUod3RscDkk
cHYKCmRlbHRhIDExNgp6Y21hRkJfPXxDWnhFP2JEMHxOK3kwMj5nNCpnT3FEVik0fnczSlNDQ0pX
ITA4OWlVWFQ/fTQmU1oyLWVXMlc1flYKZUFlYk83aSZnNm5oJjAyKmVobyZEYXZsaHUlUS1tMmow
KnRnWSFlKi0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQW1lcmljYS9FbnNlbmFkYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BbWVyaWNhL0Vuc2VuYWRhCmluZGV4IDI5YzgzZTcxZmZhNmIwNzFjNTJi
MjM2MDI5NWJmNTUwMDljMDliNzYuLmFkYTZiZjc4YjI4MTVkM2Q5OWM5N2Q1MjFhYjlhNmIzNWM4
YWY4YzMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDcKc2NtZGxZdmBsRCVHVXJxVjFf
bX1EbWVePHohWmd7UTxMPX1uVytjKGcpMGtKVjBFTkUtMDAqUUNkSD9fYgoKZGVsdGEgNjMKemNt
WjFgdl8pdXdHVmU0NzFfbX1EbVNfTUg4K0FnTTcjU3VUYUA/STklZDlMMm0tXypmMUEpeiolcXYq
SDNjZG1XCkRsKSgocAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BbWVyaWNhL0ZvcnRfTmVsc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvRm9ydF9OZWxzb24KaW5kZXggNTkyM2NjNjg4
OGY4ODFjODY3MmQ5NmJlOWUyM2ZhYzcxNjZiMWMyMC4uNWEwYjdmMWNhMDMyYmUxYWRmOGJhOTFm
ODYzZTcyN2M1ZWM2YTAyNiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAyNgpnY21YPnBj
dENKTjU7SkUlMHxOc2E1S0MrPlgwQmtGe0QlRTUwQUtEMGUqZ2RnCgpkZWx0YSA1Ngp6Y21YPmdj
djVnZjYwX2gwMV9sTjtBZVEoNkJ0VCR1SGdnM0Y4dl8jfjZFbi0/TFo7VHE0Tk5TUHpjRzJUYXJw
Kl4KSG1+I09EUCskdz4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9Gb3J0X1dheW5lIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvRm9ydF9XYXluZQppbmRleCA0YTkyYzA2NTkz
ZDMzZDM5Njk3NTZmNDgyZTVkM2Q0Yjc3Mzk4NGVmLi4wOTUxMWNjZGNmOTdhNWJhYThlMWIwZWI3
NWUwNDBlZWU2YjZlMGM0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDI2CmdjbWVDP1pR
fFc5aUhTM3JmcXtWP2gtRWV9V3xDbEB5b2RFWDA4Klg/a3BLVnkKCmRlbHRhIDQwCnFjbVpxVD9k
SUp1aUFnWXBmcXtWP2gtSDJOMkB1I2tuQE5KMWt6dyk8I19mfXsqZHpkX2tPK25WCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2Ev
Rm9ydGFsZXphIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Ft
ZXJpY2EvRm9ydGFsZXphCmluZGV4IDIyMzk2YmI1MTUxYWE5MzQ1MTMzYjI4MzVhZWVkY2M0ZDhi
NDAxZDIuLmJlNTdkYzIwYjQ2MTQyNzg3Y2JkODIwZTBkMWM5MjdkMmYwMmYwNDYgMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzUKd2NtYUZIZFdMbV54RmBiPiY7WVdUZnRZOGEhR2Vody1F
aGZuNHJGdi0xaj0pOCsyfFM9K1psNUswR0RiQ144ZiQ8CgpkZWx0YSAxMTUKemNtWEBaYGl5bWd4
Rmo8SjB8Tit5ZkY9LXcqZ09xRFZ4ckNoTXV5MV5Pc2JPP0dieXFIMXNFNzYzbz1UYFYlNntpCmFF
WUhCTypeYmVINXV1Rl9CRnRyQFloWXw9JW1uflotNDE1fQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0dsYWNlX0JheSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0dsYWNlX0Jh
eQppbmRleCBmNTg1MjJiNjc0YzJlMDZmYjVhMTg0MTMwZmJjNDcwYWU5ZGI3MmRlLi40ODQxMmE0
Y2JmOTI0MWVhODM4ODc4NzZiMWI4YjIyYzM2N2ZmNGZkIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDQ3CnNjbWJPeUk2LWlOR0dgQTEwfFA0JWkpPUo3VjQ5ckJeY28/dUloSHdyMXRAZjRh
dk8mUDBRNThwIVQ8bU8KCmRlbHRhIDYzCnpjbWJPckk4U2hiR0gpKmYwfFA0JWkhPWE8alhETlFq
MH1ARXUlRFEkIW1LT15tLV8qZjFBKXh9JW4yLUQxckdwKApDTWh0b1kKCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Hb2R0aGFi
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvR29k
dGhhYgppbmRleCBlYTI5M2NjNDA2NmMwZTAxZmZhZmNjOThlMmRiOGE3MTA1OTY5OTdlLi4wMTYw
MzA4YmY2MzY5MGE2ZGVlNTFjM2M4ODQ5ZjQ5NGE0NzE4NmMyIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDY5CnpjbWFGRGNhM2o/R0dgZUIwfFA0JV5LM01AIU58bk9HRmd4KmNkYE4jK3ZH
Wj8yISFQMz1TJi16UURzZGhKRnpQUApFMDJZRHw0Z2RmRQoKZGVsdGEgNzUKemNtY2J7X2s/ZVBH
SCpFcDB8UDQlXkUzZDdqWEYwTm5IZDthQ1FvMz9wWnVINmFgSE1SV2tJLSNBM3psI3U9eTYjCkoy
NCpCPihFeF4pNXNDbCsKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9Hb29zZV9CYXkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Hb29zZV9CYXkKaW5kZXggYjRiOTQ1ZThkOGQy
NmZmMzAwYjU0OTE2YmNiZWEyNTc4MTdhZGRjZi4uYTNmMjk5MDc5YWViYjg1MjRiZjc3ZTdmOTJl
MGE3ZTZkMGE3YjZmYiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzMQpsY21iTyUqKEpI
KjJuKipLMV9sT2hBWGVPYmxfaH5+YX0yWDk8SyRgezI+XkB0MnRAekAKCmRlbHRhIDM3Cm5jbWVC
QG9HaUtGMiNlcloxX2xPaEFYZllWQnRUJkVTKFhHZ011eUcwK184KVJzUyplTgoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0dy
YW5kX1R1cmsgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1l
cmljYS9HcmFuZF9UdXJrCmluZGV4IDRjOGNhNmY3ZmU4ZTQzMmI2ZDBhMmY1MTFkNzk5MzU0NmYz
YTVjNjguLmI5YmIwNjNiNjI1YjJkODhmZjEzNTdiOTZhZDZhZDQ3NDM0ZGI3N2QgMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKZGVsdGEgNjMKemNtY2J+d31XcWpJNGM3UFk/U0Y/bmprSTtXPCFZKkFr
N0JFQkFaX0BFbnNHM29YcDdOSGhCUlglVmMrXiNMMTVBCkY1JiZNYzN5Sl4kCgpkZWx0YSA5Mwp6
Y21kbk5jYXZ7fEk0Y19pMHxWUGVuSTB3e0FPajkyaHw3V3twYVB7cDhwSWQqMFR0TU1nPXFtWjY5
ZU85TWtjcSgKUXlWKzg/cTJlSEZ2T0sjYTA2RT9aI1EqPlIKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9HcmVuYWRhIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvR3JlbmFkYQpp
bmRleCA0NDdlZmJlMmM5NjdjYzU2NDJiNThmNTFhZmY4NmI2NzA3MzEzNGZiLi42OTdjZjViY2Y3
ZjE1MWZmYzFjMWZjNDI0N2U0ZTljN2UzZmYwMWEzIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgMTQ4CnpjbVdIRSUxa3EyenpaMEd2UD9rQ0cxPVVCNGRlZyskM2hxd3t7S0lJZlB1eHdI
LXkxNElEe2REMVZqRDwwWnhPcwpKZlRvI24wUldSKDlOXz19CgpsaXRlcmFsIDE3MAp6Y21XSEUl
MWtxMnp5TTRANWZCQ2U3QE1PMyRlQzx6eW9RMUN8Tm1ubDM9SUdPQTN3bXI7XlB+Xzsxfj8jMHpu
N34KVnJ1X2l4MEdhYXRLWW1sV2ZYMTZ9MFJTeSY5JUJGaQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0d1YWRlbG91cGUgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9HdWFkZWxv
dXBlCmluZGV4IDQ0N2VmYmUyYzk2N2NjNTY0MmI1OGY1MWFmZjg2YjY3MDczMTM0ZmIuLjY5N2Nm
NWJjZjdmMTUxZmZjMWMxZmM0MjQ3ZTRlOWM3ZTNmZjAxYTMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAxNDgKemNtV0hFJTFrcTJ6elowR3ZQP2tDRzE9VUI0ZGVnKyQzaHF3e3tLSUlm
UHV4d0gteTE0SUR7ZEQxVmpEPDBaeE9zCkpmVG8jbjBSV1IoOU5fPX0KCmxpdGVyYWwgMTcwCnpj
bVdIRSUxa3EyenlNNEA1ZkJDZTdATU8zJGVDPHp5b1ExQ3xObW5sMz1JR09BM3dtcjteUH5fOzF+
PyMwem43fgpWcnVfaXgwR2FhdEtZbWxXZlgxNn0wUlN5JjklQkZpCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvR3VhdGVtYWxh
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvR3Vh
dGVtYWxhCmluZGV4IGFiZjk0M2JlMGZlMjc3Yzc0MzVhYzllNWQ1MTcxODAyOGVmMjE2YjIuLjQw
NzEzOGNhZjk0ZTQ2N2I1MmQ5MjVmOTZhZDgwYjUwNmUxNmQ5ZWMgMTAwNjQ0CkdJVCBiaW5hcnkg
cGF0Y2gKZGVsdGEgNzIKdGNtZG5RRz1waF54RmBiPi1+X1VuZnRZOGFmeSVgSD5KeXVBTnBKSDJP
MCNofTJaeHcoMFJVRXIzWUd1PgoKZGVsdGEgMTAwCnpjbWJRaXcyNWhneEZqPEowfE4reTAyZEkw
KmdPcURWeG89O0JnNGMxYnY3VXkycXVXalZwYU1CQkYhKnl1P0pXPQpONH17Tzw5MntjQzFweDJB
M08pYjsKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQW1lcmljYS9HdWF5YXF1aWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW1lcmljYS9HdWF5YXF1aWwKaW5kZXggOTJkZTM4YmVkNDA3ZDlkNzE1NGNk
Mzg3NWVkYmMyZTAxYzk5M2Y2Zi4uMDU1OWE3YTRhNDI4OGQ3ZTNjM2IxYmNmNDdjNTdhN2VhODJi
ZTJlZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1NAp2Y21lQllgbz1neG9SdDl0Q2R2
ZCg1RWxoQXAjKF5yMSY5U0V1R0U8NXB2JUUhcWliTWxYVVlXdC1xWiloCgpkZWx0YSA4MQp6Y21l
eXkqdn5YVW9SeCl2ZnFgWUJPZHRvNDI3P0xXdlMyWU5ta21nUl95UndtMHV5SXlGZnZSJHM0RD5G
R2pRNEgKSzhrcExkYXNkRX5pM3dOJAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0d1eWFuYSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0d1eWFuYQppbmRleCA3ZDI5ODc2Nzdk
MzIxZmE0NGZhZmI3MmExYTYwMzI0MzJkMGM2NGQ3Li5kNWRhYjE0OTY5MzA2NjkyYWU5NWExZTk0
MzQyNTI3MzdiNmM0YjlkIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDUyCnpjbWVCVGRj
IXpEZH01UGBwd050KWxedEJRVFdyK3BlO2ReUXxObm9ZcWFJaj5RRTF8NzF0NW9tJVNQQTAjTGsy
WgpFMDVtSFRJUkYzdgoKZGVsdGEgMTA4CnpjbWFGRSp1XndLZH0xJCQ1KDV5aDB4PTVeM3BEX1Y4
ODw2Q3hONWk5c01yNUNzUT5AfUtmXj5ESnIxQmE3PVpQTgplZnx6aFVLT2l5OzZRP09LZzQ3Qj9g
M3poKHgmfGg4Q1JfazhPJSZKdwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0hhbGlmYXggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9IYWxpZmF4CmluZGV4IGY4NmVjZTRjNDAz
MjYzNGIzNTI2MTg3YzVmODYzNjQwNzdiOWE5YjEuLjc1NjA5OWFiZTZjZWU0NDI5NWE1NTY2YWQ2
Y2QwYzM1MmZiODJlNjQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDkKdWNtYURTXisw
TlpHVXBRcDFfbzlqN1RJVnBmcUM7bVdAa28oJn1MQ3ExJExtQTBee1RgVUlfcF9vKHFjcgoKZGVs
dGEgNzIKemNtYURMXi1nTW5HVmZDYzFfbzlqN0hJJHk4KzlmeUdjcnY2JFpXWHpFd2QxI0FZQWVY
UCFhPy1iRmVDfkxzVSRECkwlbHYrXzJkQE1HYWdoLUAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9IYXZhbmEgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9IYXZhbmEKaW5kZXgg
MWE1OGZjZGM5ODhlYTZlYzFiYjY2MGNlYWJlODVlYTE5ZTViMDc3NC4uYjY5YWM0NTEwNzg0ZjIz
ZWU3OTRjZDZkMTFlNjIzMTVhNzMxOGU1ZSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1
OQp6Y21abl97dmIzI29STUxwTD1eSmBhWnZeIVU7YDBBRmI5WjFZPU87ZG0+O2soR0VRRXxXSCkm
TTJnfkZPOUZyJCEKSGE+QFZ6UyFOOVAKCmRlbHRhIDEwMgp6Y21ldyQpRzluZG9STXYjTD0tYXsw
fmt5WW1qJHQpSmNoWVl3IWphRkd7ZmUzJW53K1k3I0pydmF5VSVCJVFSSTkKaEJGXk87OUFmSjE1
fkFhNHRZQFRXcGxfaCNZaU91djJ4SipAMFJUe0s1cXwmeAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0hlcm1vc2lsbG8gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9IZXJtb3Np
bGxvCmluZGV4IGVjNDM1YzIzYmM0N2Y5MjViZDcwNzU0YjM4YmM4YjFkMmM0ZDM5NDMuLjc5MWE5
ZmEyYjM4NzI5ZmYxMDAzMmY5ZTFmMDIxNzU0Yzc2Yzg3ZjUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKZGVsdGEgNzEKcWNtWEBjeW51T3Z4RmBiPjswTG5WZkxMVXJmejhCUmNidXxjRHVBK1ZUKXgy
fT0zRD9pSnFpRS0KCmRlbHRhIDExMgp6Y21aMyRlMmpVNXhGajBgMHxOK3lmQitESypkaCU7Vnhv
PT5CZzRjRGNPRD1jNGtuMXBWJTZ7aXMkJH5wM2F9PDIKT3hERnRMJVFyYTBvQ15TaFp3cndDCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Ft
ZXJpY2EvSW5kaWFuYS9JbmRpYW5hcG9saXMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9JbmRpYW5hL0luZGlhbmFwb2xpcwppbmRleCA0YTkyYzA2
NTkzZDMzZDM5Njk3NTZmNDgyZTVkM2Q0Yjc3Mzk4NGVmLi4wOTUxMWNjZGNmOTdhNWJhYThlMWIw
ZWI3NWUwNDBlZWU2YjZlMGM0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDI2CmdjbWVD
P1pRfFc5aUhTM3JmcXtWP2gtRWV9V3xDbEB5b2RFWDA4Klg/a3BLVnkKCmRlbHRhIDQwCnFjbVpx
VD9kSUp1aUFnWXBmcXtWP2gtSDJOMkB1I2tuQE5KMWt6dyk8I19mfXsqZHpkX2tPK25WCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJp
Y2EvSW5kaWFuYS9Lbm94IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FtZXJpY2EvSW5kaWFuYS9Lbm94CmluZGV4IGNjNzg1ZGE5N2RlMGE1NjE0NjEzZjliYTZl
NTAyZDdkYzVmNTI1YjUuLmZjZDQwOGQ3NGRmNDMzMTBhOWE4NWM0NzVmODNkNTQ1ZjZkNzU5MTEg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzAKbGNtWm5fe3YpKHVBdjVQSjFfbE9wQWVQ
dj9pVE1KezxTOShBQ2cqWlcwMDR7TDJgdkJzCgpkZWx0YSAzNwpuY21ldygpR0VBVEErejlZMV9s
T3BBZVEoNkJ0VCZFRCZgOTtqMH5IcklHN2ojdHklfngKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9JbmRpYW5hL01hcmVuZ28g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9JbmRp
YW5hL01hcmVuZ28KaW5kZXggYTIzZDdiNzU5NmZjMzAxOWEyYjY4NDdhNzU5MzAwN2Y5ODVlN2Ux
My4uMWFiZjc1ZTdlODY0NjI1Yjk3NWZlZWJkZDBiMjMyZDBkZTYyNGIyNyAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApkZWx0YSAyNgpnY21YQGl5Tmg/akdBN1ArMV9sT3BBZVB5QG95bWZFQCgwJC0w
QVlGdWcjWjhtCgpkZWx0YSA0MApyY21kblJkemcyX0dBNitjMV9sT3BBZVErN0J0VCZFZEx8MklN
dXkySjc8VyV6IzNsZyV6bn0/QAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0luZGlhbmEvUGV0ZXJzYnVyZyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0luZGlhbmEvUGV0ZXJz
YnVyZwppbmRleCBmMTZjYjMwNDA2ZTNiMjhlODJhYjUyOGQwNzgxMjgwYWI1ZjEzYTU5Li4wMTMz
NTQ4ZWNhYzAxNGY0YjM3ZjBhYmNkNDcxYTVhNmI0ZTdlZDVmIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDMwCmxjbWV5I19rbk4yYjAqRmIxX2xPcEFlUHp1Z0p9V3Q8VWZvakNNVTg+MDA1
cFozSGtzNAoKZGVsdGEgMzYKbmNtZXlzX21na0tiMCkhMzFfbE9wQWVRKzdCdFQmRTJjYHdnajB9
P311c3J8KHhCPn4xCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0FtZXJpY2EvSW5kaWFuYS9UZWxsX0NpdHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9JbmRpYW5hL1RlbGxfQ2l0eQppbmRl
eCAwMjUwYmY5MGY4ZmM4NzE2YTc3MTYzZTdjMWI5MjY2M2ZjNmQ5NmY3Li40Y2U5NWMxNTJhM2Q4
OTc0ZmRjNjcwNzJmOTQ0ZWFlOTdiNTk5N2VjIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDMwCmxjbVhAa3lOYEZuOFlhJEUxX2xPQkFlUHlAbXF+K3BAJlUkXmxoP0NKMDA0dUoyJihgOQoK
ZGVsdGEgNDAKcmNtZG5UZHpeUX04WWFPczFfbE9CQWVRKzdCdFQmRVJ3Zk4qTXV5MTs3KjlASyN3
R3koIUI3ZEQKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQW1lcmljYS9JbmRpYW5hL1ZldmF5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvSW5kaWFuYS9WZXZheQppbmRleCBlOTM0ZGU2MWFk
YjM0MmQyMzg3ODljNWRhYjkxNTU0MDhmOGNkNzc4Li5kMjM2YjdjMDc3MjY4Mjg5ODRkM2FmYmZh
ODcyYjNhYmVhZTNlODA5IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDMwCmtjbWVDQFpz
WG95IU5lS0p6YCghYCM0PypibkwzeXo3Y2VmSlQrUyoxMEF1KEQ+aV9AJQoKZGVsdGEgNDAKcWNt
WnFVPyZzY00hNlg+T3pgKCFgIzQ8bUMxUEUrKVdhP21JV1NDc1F4TzgkSnN7e2EtcVgqbW8KCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1l
cmljYS9JbmRpYW5hL1ZpbmNlbm5lcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BbWVyaWNhL0luZGlhbmEvVmluY2VubmVzCmluZGV4IGFkYmRiZWVlNjI5ZWE2
MGI2MGMzMmQwNzQyYTlhNjlhYjU5OTBlYmEuLmM4MTg5MjlkMTliMmNhNTkyNWMxODE2OTZmMDJh
MmJhOTNhNzAwOWEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzAKa2NtWjNeSkNBcTY5
NDV8RzFfbE9wQWVQeUBtUHZ6b0AmVSUzbGwkMnUwQ183MjgyfHRQCgpkZWx0YSA0MApyY21iUW95
UFM4ITk0NWd1MV9sT3BBZVErN0J0VCZFUVlIOyVNdXkxOzc8VyE/VzBMPj92elE0QQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNh
L0luZGlhbmEvV2luYW1hYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BbWVyaWNhL0luZGlhbmEvV2luYW1hYwppbmRleCBiMzRmN2IyN2VlZTg4ODY3ZmQxMzFm
MGU5Yjg3YjRjM2I0YzA3MWM0Li42MzA5MzVjMWUxYThjMWE4N2U3MjhmYzFkY2M0YzkzMGU4MWIz
MGU5IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQyCnZjbWV5KGAteWtNRSspPXcxX2xP
cEFlUHlEbmtqO3JvcndfJG5PUD0zV1IjdSFoakk0ZyQ3flYrPyN+Tk4KCmRlbHRhIDM2Cm1jbWV5
d2A8ciplRSspWW8xX2xPcEFlUSs3QnRUJkVWV3RSWE11eTRLWX1XeS1hUl9TdwoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0lu
ZGlhbmFwb2xpcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
bWVyaWNhL0luZGlhbmFwb2xpcwppbmRleCA0YTkyYzA2NTkzZDMzZDM5Njk3NTZmNDgyZTVkM2Q0
Yjc3Mzk4NGVmLi4wOTUxMWNjZGNmOTdhNWJhYThlMWIwZWI3NWUwNDBlZWU2YjZlMGM0IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDI2CmdjbWVDP1pRfFc5aUhTM3JmcXtWP2gtRWV9V3xD
bEB5b2RFWDA4Klg/a3BLVnkKCmRlbHRhIDQwCnFjbVpxVD9kSUp1aUFnWXBmcXtWP2gtSDJOMkB1
I2tuQE5KMWt6dyk8I19mfXsqZHpkX2tPK25WCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvSW51dmlrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvSW51dmlrCmluZGV4IDEzODhl
OGE0ZDkzZGM4ZTA0NjgwYWEyYWE5ZTMzZjMyNDk1ZTI2ZmQuLjg3YmIzNTUyOTVhM2VmY2FjZDRi
YWVjYjVhOGJmYTNmYjljZTljNTQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzMKdGNt
ZUMrZjV0YUtUJEJMYFF+PXFtS3JGaF4tfnI9Z0w4akhYPFR3OWZJPX5FNEZ1OHpUMHN4UWQzP0tq
aQoKZGVsdGEgMTI0CnpjbWFGSCpURndRVCN9VzZmZFBhO3BjMDVkWXwjY0Z1fkZ2JUJNU28pQmh6
Ri1yc0J6eD81MTJtS2A1OVlFe2ojKQpYNTIqYSskNG0jOVE4YVZIdkAlVGdXdFJqMXdVaUc2Cgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Ft
ZXJpY2EvSXFhbHVpdCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9BbWVyaWNhL0lxYWx1aXQKaW5kZXggMDc4NWFjNTc2MTczZjdiN2E1ZTdjMjc0MGRmNWYxZjM0
OTJhNDk1MC4uYzgxMzhiZGJiM2NmMTQxYWQ0MmFjZTAzN2UxNDRiZWU5OGQ4MTQ4MSAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2NQp6Y21leXp8QUJ2a0dHYD9OMHxPVGpEe2VHKyFwT3FQ
JGl6SDNrViN7KjJLJkNyfEN4fWFIeWJtYlVgQ2R8MV8xV00KQjR4SW8xCgpkZWx0YSA2NAp6Y21l
eXN8QnJ1eUdIKD9GMHxPVGpEPmVYJGpYRjtsODV1U1VGITNAOSFYPHRIQnx1PWE4dUpOZU11eTEo
T3NeKjIKSFYzejtAcXxYZloKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9KYW1haWNhIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvSmFtYWljYQppbmRleCA3YWVkZDI2MmE1N2Yw
OTZjZGE0N2E4NTQyYjNiNjY2MzM1NjE2NDFkLi4yYTliN2ZkNTJkMzdhMWZmZTlmYzU4OWRhYTA0
ZDg4YzZjNzFhNmUwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDUyCnVjbWV5KHtEXnNp
STRjN1BPcTV3UkwwbEJmZ2M0I3ZuZ3hnakNqUSRudkJpIyElUVpOfWxuVmc7djxhMn4KCmRlbHRh
IDg0CnpjbWFGRntGYH0jSTRjVlMwfFUhTW5QdSFpOFUhWERsI202QkxBVlUhS3BNbXNfeUhBfF8t
K0ZlMUxOZHtqS1VMVgpQWHpAVj44TXNgN0xybDI8RjBjJT0KCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9KdWp1eSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0p1anV5CmluZGV4
IGE3NGJhMDQ2MjI2MDYwYTAxYzYyNTViNjcxNGE0MDIxMWY3MzlhMjQuLjYwNGI4NTY2MzY3MmQ4
MzY1OGYzMzFhNjljYzhmNDFjZjJhMmI1YTEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
NTgKemNtZG5WRkBzfSpJNGM3UFk/TFdzb0ZGYT1XPHY9WkFrN0JFQkFZS1RLNDZAQGstM0N9JVNQ
QTAqdl47PjAyTHEhCkErVy1JbgoKZGVsdGEgMTAyCnpjbWJRaXY2RXdoSTRjX2kwfFZQZW5HIX1H
QU9qOTJofDdXe3BhUWwpOHBJZCowVHROMWh3JVg7NjllTzlNTWwtaApZMjg9OXwtNTkrQHBtSmJ9
JVNQQTAqdl47PjBDVjtYMV5AczYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9KdW5lYXUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9KdW5lYXUKaW5kZXggZDAwNjY4YWQxODlj
Yzc2MjdiOTMwMWUwOGMwMGQ4NGYxNjg4YWI5Mi4uNDUxZjM0OTAwOTYzMzhmNDBlNjAxNjI4YWM3
MGYwNDExMmFjZTUxZCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA0NQp6Y21kbGJ2ezdp
b2NQMTdGaFJmQkhlPjMlUlBHRGVRLX53V2AlYD0lQlNYZGFEbXt9JChhRU5YOz0zcis4MDZFREUK
QTd5dGtPCgpkZWx0YSA0Ngp4Y21kbGV2YGM4aWNQNXRxe35MYyN7PntgWUlGVyZZZmVWUCRlZ0Z2
JipnVFFCZnJYSl92bWwyOEJMSTw0NE9hakYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9LZW50dWNreS9Mb3Vpc3ZpbGxlIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvS2VudHVj
a3kvTG91aXN2aWxsZQppbmRleCBmZGYyZTg4YjQ4Y2VjZGRmNGVhZmE2ZDhhNDFiYTczNjNlNDg3
NGQ2Li5mNGM0Y2Y5NjZmYTZhMDEzMGI5ZWU1ZmJkMDFmZTA3OTBmZThmMDAxIDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDMxCmxjbWNhQmRQUWBERURQcioxX2xPcEFlUHl6JDE7SSteQXsj
SSM+cSN5Qm1qbWUycm1FdAoKZGVsdGEgMzcKbmNtY2EyZFJLSVZFUXtifjFfbE9wQWVRKzdCdFQl
Wjhwe00kTXV5R1hJT1B9dHBoZ0ZmCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvS2VudHVja3kvTW9udGljZWxsbyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0tlbnR1Y2t5L01v
bnRpY2VsbG8KaW5kZXggNjA5OTFhYTM4ZjVjYTAxNmQ5Zjg3YmQ2Y2I1YjQzNmVjNzk5YTEwYy4u
NDM4ZTNlYWI0YTZlNTgxYzZmNWU3NjYxMDk4YmYwN2IxYTAwMDU5MyAxMDA2NDQKR0lUIGJpbmFy
eSBwYXRjaApkZWx0YSAzMAprY21kbGZ2X1dWP0oyVTRMMV9sT3BBZVB4WWdMd2hWPFFrP0lsTkM4
NzBEPVZ3TkJ7cjsKCmRlbHRhIDM2Cm1jbWRsV3Z7UHQ5SkcwPGExX2xPcEFlUSs3QnRUJkUxbSo9
U2owfXFuSTJadyVCP25MZAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0tub3hfSU4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Lbm94X0lOCmluZGV4IGNjNzg1ZGE5N2RlMGE1
NjE0NjEzZjliYTZlNTAyZDdkYzVmNTI1YjUuLmZjZDQwOGQ3NGRmNDMzMTBhOWE4NWM0NzVmODNk
NTQ1ZjZkNzU5MTEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzAKbGNtWm5fe3YpKHVB
djVQSjFfbE9wQWVQdj9pVE1KezxTOShBQ2cqWlcwMDR7TDJgdkJzCgpkZWx0YSAzNwpuY21ldygp
R0VBVEErejlZMV9sT3BBZVEoNkJ0VCZFRCZgOTtqMH5IcklHN2ojdHklfngKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9LcmFs
ZW5kaWprIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJp
Y2EvS3JhbGVuZGlqawppbmRleCBkMzA4MzM2YmVjOWE1Mzk3NDJjYTM4ODVjNDRhNGQzYzVhNjc0
NDYzLi5mN2FiNmVmY2MwZjViZmQ1YzQxNzJjYmUzMmMwM2E4ZTA4YjAwOTljIDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMTg2CnpjbVdIRSUxa3Eyenpkand2ZGxvdEgoNT9rYFArOyk5
KmopP3xMPjF3VkVGKDR6enpuTXxOb0M0VkJxcmM0UG5xVgplRmZsZUBhMTBKJTJxRDRMfDNDbVQ4
QUtDakl2M0NpNkR8TyV6JUNPMgoKbGl0ZXJhbCAyMTIKemNtV0hFJTFrcTJ6eVFvWjVmQkNlN0BN
eUYkZUFwc3J+R1prOHhJQ1hydkx4PCQxKlZkfDlAWnkxSXojYSN9Nj1ZCnJgU153fj1vKis5OCEk
S3FoayYjS0s/biZKe0Q1Y3luKSZ9ZiRSWkY7bDRWPiNkcmkwaW02MCEqCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTGFfUGF6
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTGFf
UGF6CmluZGV4IGJjM2RmNTIzNTE2ZDE5MTkxYWE5ZDliODhlY2M5N2MzZWExYWNkNGMuLmExMDEz
NzI0MzU3N2E4YjMxMmRjNDYzNTcxYzRjOTRlY2QzYmYxZjEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKZGVsdGEgNTQKdmNtWm88ZGNpbkJvUnQ5dENkJjlzNUVsaEFwIyUkJTI0UjdUT0I1I0I9eH1o
Xj1vKjtWblEjRkIqRkZjMgoKZGVsdGEgODEKemNtYUZDKnZLP05vUngpdmZxYFlCajFMRXAyNz9M
V3ZTMllObWxhNVpfeVJ3bTB1IWV3RmZ2VEUoR2hfMThNdGg4Cko0TlVBenhCengzMiUhSn4KCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1l
cmljYS9MaW1hIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Ft
ZXJpY2EvTGltYQppbmRleCA0NDI4MGE1YzEzODY2ZDA2ZTM0ODIxZjhkMjc2MTc4YjE0ZDk3ZjIx
Li4zYzY1MjliNzU2N2YwMzI4ODI4NjNmY2Q0OGI3OTBlMDk4ODI2MWJmIDEwMDY0NApHSVQgYmlu
YXJ5IHBhdGNoCmRlbHRhIDU0CndjbVozX0pkSnNSSTRjN1BPcUEpSUFUQTFLTEoyYDIlPnUrYzZD
Wlg9RUhMSFp2ZTdqI3dLTEBjME9wP3ZtO2U5KAoKZGVsdGEgODEKemNtYlFueXE8WjJJNGNWUzB8
VSFNbk5BS000RihnJFd4LS1sdGBMdzBAcCpuZzF0d25YVX1UdEJVQDhGUkdqUTRICks4a3BMZGFz
ZEY0ZDxtKW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQW1lcmljYS9Mb3NfQW5nZWxlcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0xvc19BbmdlbGVzCmluZGV4IGMwY2U0NDAyZjYwYTEz
NTAxN2Q0OTkzM2FmZGJlZTU1OTE2YjliZTMuLjlkYWQ0ZjRjNzViMzczNjM1Y2NiZTYzNDc5OGY4
ZDllNTg3ZTM2YzEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzAKa2NtYk8kSGJyY01F
KF8tXzFfbE9KQVFzdGQkOHYjbnZJejZIJCprTkcwQzgmdkttWSYkCgpkZWx0YSA1MQp6Y21iT3RI
ZGt6ZUV7b3U5MV9sT0pBUXQlbkJ0VCVaOE9zRyQ0aEFNaEFZXjhsRVhjS2Z2SF80anohZEBqYExZ
U2sKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW1lcmljYS9Mb3Vpc3ZpbGxlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FtZXJpY2EvTG91aXN2aWxsZQppbmRleCBmZGYyZTg4YjQ4Y2VjZGRmNGVhZmE2
ZDhhNDFiYTczNjNlNDg3NGQ2Li5mNGM0Y2Y5NjZmYTZhMDEzMGI5ZWU1ZmJkMDFmZTA3OTBmZThm
MDAxIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDMxCmxjbWNhQmRQUWBERURQcioxX2xP
cEFlUHl6JDE7SSteQXsjSSM+cSN5Qm1qbWUycm1FdAoKZGVsdGEgMzcKbmNtY2EyZFJLSVZFUXti
fjFfbE9wQWVRKzdCdFQlWjhwe00kTXV5R1hJT1B9dHBoZ0ZmCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTG93ZXJfUHJpbmNl
cyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL0xv
d2VyX1ByaW5jZXMKaW5kZXggZDMwODMzNmJlYzlhNTM5NzQyY2EzODg1YzQ0YTRkM2M1YTY3NDQ2
My4uZjdhYjZlZmNjMGY1YmZkNWM0MTcyY2JlMzJjMDNhOGUwOGIwMDk5YyAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDE4Ngp6Y21XSEUlMWtxMnp6ZGp3dmRsb3RIKDU/a2BQKzspOSpq
KT98TD4xd1ZFRig0enp6bk18Tm9DNFZCcXJjNFBucVYKZUZmbGVAYTEwSiUycUQ0THwzQ21UOEFL
Q2pJdjNDaTZEfE8leiVDTzIKCmxpdGVyYWwgMjEyCnpjbVdIRSUxa3EyenlRb1o1ZkJDZTdATXlG
JGVBcHNyfkdaazh4SUNYcnZMeDwkMSpWZHw5QFp5MUl6I2EjfTY9WQpyYFNed349byorOTghJEtx
aGsmI0tLP24mSntENWN5bikmfWYkUlpGO2w0Vj4jZHJpMGltNjAhKgoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01hY2VpbyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01hY2Vp
bwppbmRleCA1NDQ0MmRjNzM3ZWRlMmFhYjFiNTk3ZWU3MWExZGIzYWE4ZTMzYWExLi5iYzhiOTUx
ZDJlODgwMTgyYTM2OWNiYThmYWUxMjcwZTQwNjk0YWFhIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDg5CnpjbVpvLWQlLSRFVCRCTGBYYVUqR0srSDRJVjh6NlRpVzVJQE91b3RfazR3PyFY
dlAzV2dmYjI7OChqbHFKN1g+WQpEd0p7TFAKCmRlbHRhIDExOAp6Y21hRkMrUWM/TlQjfWlBZmRQ
YTtLcFRpYllAUC1uRjtRbSlCZzVuY09vfGlWYjQ+Z3omanU2JWYoaGNYU2F0az4KWk5IYzhxVTxf
YkgqMmYydDtJaCMqRnQjKTEwc3NpZDUrTUtwCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTWFuYWd1YSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01hbmFndWEKaW5kZXggYzU0
M2ZmZDQ3NWUzNzRiMzljNjgwMGZjYzY5YzNjMDZiNmViNWRkMy4uZTAyNDJiZmY2ZTVkZjQ1ZGU4
YjIzNWFiYjRhODQwNWZiYjhiYTZhNiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1Mgp1
Y21YQGx5cEROLUk0YzdQT3E3ezFMMGxCZmdjMVRrbmhsNldDVnB2e25CJjM1PHMyTWgjc3ZXN05D
QDhtCgpkZWx0YSA4OAp6Y21aMy1lNGNyTkk0Y19pMHxWUGNuSGZBbDhWKTlpJVl3ekIwKWp2cSMy
NUppNmAxJi1mc3RXeTA7N2l6UX4qcUkKS0lSfVRCYVJDNil0T0BpMAoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01hbmF1cyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01hbmF1
cwppbmRleCA4NTVjYjAyYzQwODI3MTlmM2E1MWM4NDAxMjg4YzAxM2VmZWZlNjgzLi42M2Q1OGY4
MGY1NTZlMWMzMTM1ZDZkYmNiMmEyZGZjNmY2MWI0ZmM5IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDc0CnVjbWV5eWEpKUp0eEZgYj5QeW4pLWZ0WThhTEJxdDJjRFE2MFljZXRkcjgmNTRi
UFlgR090PTduS01FVEYKCmRlbHRhIDEwOQp6Y21jYl5Ae01KSnhGajxKMHxOK3lmRmNscypnT3FE
VnhtcTFCZzRjRShpNHY+dmpNcTRGaE5gdnRMaCZSWEA8cE8KVGpFcGNYZD1OMSU4KGprdkl9PEpk
QUs0QzQKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQW1lcmljYS9NYXJpZ290IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FtZXJpY2EvTWFyaWdvdAppbmRleCA0NDdlZmJlMmM5NjdjYzU2NDJiNThmNTFh
ZmY4NmI2NzA3MzEzNGZiLi42OTdjZjViY2Y3ZjE1MWZmYzFjMWZjNDI0N2U0ZTljN2UzZmYwMWEz
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenpaMEd2UD9r
Q0cxPVVCNGRlZyskM2hxd3t7S0lJZlB1eHdILXkxNElEe2REMVZqRDwwWnhPcwpKZlRvI24wUldS
KDlOXz19CgpsaXRlcmFsIDE3MAp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRlQzx6eW9RMUN8
Tm1ubDM9SUdPQTN3bXI7XlB+Xzsxfj8jMHpuN34KVnJ1X2l4MEdhYXRLWW1sV2ZYMTZ9MFJTeSY5
JUJGaQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BbWVyaWNhL01hcnRpbmlxdWUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW1lcmljYS9NYXJ0aW5pcXVlCmluZGV4IGY5ZTIzOTljOWQyMjU0ZDVjNDQ3
ZmJkMGI2ZGM2YmUzMDM1NjkyNjIuLjhkZjQzZGNmMWM5ZjYzZDNlYTlmMDU2ZjA2MmVhOTdlNWM3
YzBiNTcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTMKdWNtWm88ZGNpbkJvUnQ5dENk
Jjl1RUVFPzd2IU1oRmtPcERGaUF4bkcrVVQteklSPU5BWn4qfF9ZWHslfQoKZGVsdGEgNzEKemNt
YUZDKnZLP05kfTBzQk0wcWFgMX1GZHZoPU1xKksrRlFmZjxIaCFBZWNCK2ZzdFhOalY+UkElZlBf
cDcjdzI0CkYxcHZrUTNhdFBECgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTWF0YW1vcm9zIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTWF0YW1vcm9zCmluZGV4IDU2NzFkMjU4
MTZkZTI2M2I1ZGUyZDMxMGJkOTc0ZmVkODgyMzg2MDUuLjA0Nzk2OGRmZmY0ZGJhMTk2ZDVjOTY5
NWU3OWNmMjgzOTVkOWEwYWEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODkKemNtZUMr
ZSNiUklUJEJMYGdhZ15rSytMbnpBY2tAQk04QEZCM205MUBgPkBMNFFuJVRMWCRLUnMhcFF9ITUm
JnhYCkI0P08/PwoKZGVsdGEgMTIzCnpjbWFGSSl4a1lNVCN9aUFmZFBhO0FPZVUlWUBQLW51fjg/
NmsmJDhZTHpZckRBUCkjOGh8Nk1DYH54RCp1dndGNwpqMk5PaHg5N0tyQUlYSn0zKihGNUIqSTNV
OyZwXmw1JmB7NCUmd3ZYNiZ3VVheCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTWF6YXRsYW4gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9NYXphdGxhbgppbmRleCBhZmE5NGMy
YWM1YzE2NzlkMzkxNDNlYWUwNjJiODEyMDcwODc2NDkyLi5lNGE3ODU3NDNkNzVmOTM5YzNlNDc5
OGViZTdjNzlkMzhlNGNmZDA4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDEyOAp6Y21i
UWteTm85Z3hGYGI+aHl9OVFmTExVc0s/eCVWQk5HQGhQdXxFRklRYWwwJWo1JkI3UHZIUXUzfnpA
Z2pJKEcKY212MzsweHZ4dXpqPDFRSHBgTCtgdWMzalNzaCRCQjBQX2VIPF5UV3kKCmRlbHRhIDEx
MAp6Y21leXlKJT93NHhGajBgMHxOK3lLcFlUKipkaCU7Vnh2dzg8SysyXyh8Q1l2SUc3K1ZpJmV1
OXNFVztyT2ZRJX4KUHkxM3o1NyNKcXNXdDlXfnt2UXJFCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTWVuZG96YSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01lbmRvemEKaW5k
ZXggNWU4YzQ0Yzg5MzQ5NjBlMjAxMGU3YjA1MDU5NjY3NDdjYjJjNmU1MC4uZjllNjc3ZjE3MWIz
OTAwZGZkOTc4ZWI4ZWEyYWEyMjY1NTdkMmM1YiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0
YSA1OAp6Y21jYzB2NHZ4VEk0YzdQWT9QXkVvRkZhPVc8dj0oQWs3QkVCQWFoOWVxZnhlIWRTK15X
dXQzZ1ktaHtgMDNMen4KQXROO0syCgpkZWx0YSAxMDIKemNtZG5PYWd9MyZJNGNfaTB8VlBlbkww
KXVBT2o5Mmh8N1d7cGFTK2w4cElkKjBUdE1NalBVfl82OWVQcWdVc0BpClk5VD5TTEtWYkZ8Znkj
aj9FKm82flY+QEZtMEpmNDF2O1k3QQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01lbm9taW5lZSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01lbm9taW5lZQppbmRleCA1NWQ2
ZTMyNjY5MmM4MWEzYTUyNmVlNjVmYTVlY2UwOTFiYTUxMDFlLi4zMTQ2MTM4NjZkZTUzZTE0NTdm
NmNiZjJmYjYxN2JlN2U0OTU1ZWRmIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDMwCmtj
bWFEWV8oKlU9N0JnbyowfE5zKTVLQztYWDBCa0ZvV1hRfEA/e1BRMEVpVWAoKk9WZgoKZGVsdGEg
MzYKbWNtYURQXyohczc3UEhfNDFfbE9wQWVRKDZCdFQkdUY+P2hBQmc1cF4/QjQ7U3U/WGg/Cgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Ft
ZXJpY2EvTWVyaWRhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FtZXJpY2EvTWVyaWRhCmluZGV4IGVjYzE4NTZlMWU1MTNiZWQ2YTA3YTgwYTAxZTBiOWQ5ZGM3
MDZjOGEuLmVhODUyZGEzM2E4MTQ3ODQzM2EzODllMmI0ZGEwM2I0MjVkOWY3NjQgMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTA4CnpjbWRuTS1OIXZhVCRCTGBnYWdeRUtyRkQpQWNtMk5r
IWtXbyNeQXx1dE9tSDBaNE99QyFHeHF2ZzNDRUwjTFU/eApWTTkwQGUmcnJgbSRKZnc2JnM1S1Yz
ampNdzVmbEliCgpkZWx0YSAxMzEKemNtZUM8LW9RT1VUI31XNmZkUGE7QU9lVSVZPUgoS3V+OD82
ayYkOFlOMHdHREFQKSpBaHw2TnRAQj1FcCpeKzRvCms2R1dGMU9iLUpDbXZlQjRuWF5sWGo8MVFI
cGBMK2B1YzNqU3NoJEJCMDJ3M15lRTxMZQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01ldGxha2F0bGEgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9NZXRsYWthdGxhCmluZGV4
IGMwMzM1OTcwNDQ4Y2Y0ZDQzM2I4NmUwOGQ3OWFlNGI5YTE2N2UxZjYuLjFlOTRiZTNkNTUyZWEw
ZDZlMjk4MjQ0Njk4NjZjMmE1MWExODdiZTkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
ODcKemNtZUM7PyZxR00lb3MzSFdpN0xkK2slTX40bHB1S3AxYFFpIW9ZQSVaTCRvamAoITMyXlVh
UC1wXlBCdSVAZGdvCm83K0R5Wm17fSVZVT1me3NwTXtOXm01RyYhalU1RDtDVnltNm9XI21EUyV8
ZCkwNEQoem4qYWErCgpkZWx0YSA3OQp6Y21lQ0A/JjYtSCU7LU4rVyRuYlBgeko0RjZySD8qa3Ez
eWBDZDt5VlBpQUtfPWxIPEAwaHtmWkxLISNEWDRZbjgKZFduZzR0V3xAM31NUk18ZTdQaVNCU2t4
IX4yaCFySzYjJT9qN1AkWmIKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9NZXhpY29fQ2l0eSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01leGljb19DaXR5CmluZGV4IGYxMWUz
ZDJkNjZhMmQ3YzIxZjQ5OGRmOTZjM2ZkMWRiM2EwZDg4MTcuLmU3ZmI2ZjI5NTNkMTIzZWZiYzI1
NTBmNDUwZGVjZDc5NGIwMTdkNGYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgOTQKemNt
Y2Jfdnc+JVZ4RmBiPk5DTDgxZm1tZHRLP21kSElqbUR+JCMzcHY1P31AP2tsPUMtNGwjM2YzRE5P
MihLRk9ECk8oRDV9aSZAPElELX5zQHBBUDw1NwoKZGVsdGEgMTYxCnpjbWRuTWJCU2t5eEZqbkIw
fE4reUtyI0A2KmRoJTtWeHZ3NkJNJD4zNjlfVGBBPE57MGpHPmM3bWB1MlVsMjktfgp3VG8kWVRB
NWkodEJ9QFgkU1BmQnY4TnRCNzxzMk1oPUlqIXA8Nz1YNHNBcigjWWlPV25zJU85ajBGeDBDKiNI
MGwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW1lcmljYS9NaXF1ZWxvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL01pcXVlbG9uCmluZGV4IDc1YmJjZjJiY2Y3MGViYzcwMGNiOTg1MjZk
MGYyYTFlNWNjY2M0MzguLmI5MjRiNzEwMDQzOGNmYWNmMjVjNTZjNDk0ZmQxYWJmM2YyNjIxMDAg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTEwCnpjbVozJCtyJkZUVCRCTGBXQ0diTkty
RkQpVTxvNTU8S3ojbCQmKVJhYmFBUUx5b2t3ejhLRiN1JVNQQTAqdj1TOApYOHJrWGk4dFdQOThS
KztMOHROSjk4RV5wcm5na0xiCgpkZWx0YSAxMzIKemNtWnFUVUJFaipUI3wpPmZkUGE7QVBhfj1Z
PUgoS3V+QkNVQk99QSkzeWMlbGZqa2hIb1dMWEBpJmd5KGh5c1NxCnB5LVhnPTVLU3NqQXFGbFJU
PzFuflY8MmZ7cntpbV5YUVhHSzw3O1RCWFEqZXUxcHJALTUtazcjCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTW9uY3RvbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01vbmN0
b24KaW5kZXggNTFjYjFiYTNkMmRlMGFkMTk0NTM3MDRlNGI3OTZkZmRmMGRkODQ2NC4uOWRmOGQw
ZjJlYzlmYzhmMTk3NGQ4M2NkZDgxNTVjNzkzNDAwMDdlZCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApkZWx0YSAzNwpxY21jYURhWTxzc0F7TmZgMz05bHhLckZGJkdmTT48QmplLS1YM0A9YyVzX0BT
anwyZThuRigoSQoKZGVsdGEgNDYKeGNtY2E0YWEmQDtBe04wNTM9OWx4S3JIYkNOUHhpUilocmNr
T2JtPlo5bDFwfSpEKjZQUFBYRWEwMDBYcDNNbHtwCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTW9udGVycmV5IGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTW9udGVycmV5Cmlu
ZGV4IGRjYWM5MmJhZDYwOWZhYzcyYzA0MDc3NzgyZGQwOGE5ODc2ZWVlYjkuLmE4OTI4YzhkYzk0
YWFlYmZhZjljZGViOTMwMTFkNDFiNDgyYTRjYzYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVs
dGEgODkKemNtZUMrZSNiUklUJEJMYGdhZ15rSytMbnpBY2tAQk04QEZCM205MUBgPkBMNFFuJVRM
WCRLUnMhcFF9ITUmJnhYCkI0P08/PwoKZGVsdGEgMTIzCnpjbWFGSSl4a1lNVCN9aUFmZFBhO0FP
ZVUlWUBQLW51fjg/NmsmJDhZTHpZckRBUCkjOGh8Nk1DYH54RCp1dndGNwpqMk5PaHg5N0tyQUlY
Sn0zKihGNUIqRj9geSZwXmw1Jl9LXnImd3ZYNiZ4c0w4CgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTW9udGV2aWRlbyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01vbnRldmlk
ZW8KaW5kZXggZjUyNGZkMjE5ZTc1MzExMWQxOGUyNmVhODkwYThlYTE2YjVlMDU2Ni4uMmYzNTdi
Y2Y1MGRhNzk0NTQxYTUxODUxMDc3N2JkNWM0NzBiOWI3NyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApkZWx0YSA5Mgp6Y21iUWteTmYzZl8rJFkjNzh2RlhYSkJDOTAlRW18MX5INkdqNyphIUdLeC0p
Vl9rJHgrMiVmYDlaWDItSUpqKGQKSjRVRnhLeGQzQ2w1P0JCTAoKZGVsdGEgMTA4CnpjbWFGSEol
P3c0eEZpPD8wfE4reUttLXRqKmxHPHhWeHZ3QkJPfUEpNCN1NjZnUDRTWEVDKGhEUyopc20wOUF2
KQpWPTNKJjdPYjlKTndPbHMzMkY3O0FUbVZhMjVGYEtxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTW9udHJlYWwgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Nb250cmVhbApp
bmRleCA3YjQ2ODJhMzllMmZjOTc0NTBjOTllZWQ0NTc2ZDJhNDYxNGJmMjk0Li42NzUyYzViMDUy
ODU2NzhiODZhZWExNzBmMDkyMWZjNWY1ZTU3NzM4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRl
bHRhIDMxCmxjbVoyNHktYSQ4MVN7dUQxX2xPSkFRc3VJJD9DenJgMnc+bDxLKmVRNSYoUlAyYWY7
JQoKZGVsdGEgNDQKdmNtWjFgeTxVMlExZ3FkSDFfbE9KQVF0JW5CdFQlWkJDN3tHQmc1b3tKYklK
PUZASy1qJDE0RTwrdkV6KAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL01vbnRzZXJyYXQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Nb250c2VycmF0CmluZGV4IDQ0N2VmYmUy
Yzk2N2NjNTY0MmI1OGY1MWFmZjg2YjY3MDczMTM0ZmIuLjY5N2NmNWJjZjdmMTUxZmZjMWMxZmM0
MjQ3ZTRlOWM3ZTNmZjAxYTMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDgKemNt
V0hFJTFrcTJ6elowR3ZQP2tDRzE9VUI0ZGVnKyQzaHF3e3tLSUlmUHV4d0gteTE0SUR7ZEQxVmpE
PDBaeE9zCkpmVG8jbjBSV1IoOU5fPX0KCmxpdGVyYWwgMTcwCnpjbVdIRSUxa3EyenlNNEA1ZkJD
ZTdATU8zJGVDPHp5b1ExQ3xObW5sMz1JR09BM3dtcjteUH5fOzF+PyMwem43fgpWcnVfaXgwR2Fh
dEtZbWxXZlgxNn0wUlN5JjklQkZpCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTmFzc2F1IGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTmFzc2F1CmluZGV4IGU1ZDAyODliNTEx
Zjg5ZTI3MzQzOGNjNDg3YjBkYWZhZDQ4MDkzZWUuLjMzY2M2YzYyNjU2NWNkODc3ZDgyOTU4NDMy
ODQ0MTFiYmI5NDBlYjMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTEwCnpjbWFET2N1
OD1BeEZgYj5tPG5WdzEyTkE9Z0FrXzRpWDhvdTdjajkrLW9QUDtPV28hbzxgcGMrM01JSClnRntT
UgpXVHwjdHhqckVONTQwTD1BNGZQRTU0N2RPX1JUUT1XCgpkZWx0YSAxMzkKemNtY2E0XyhwSm94
Rmo8SjB8Tit5eiUoRVJ2M1ZNUiM3M1BFQ1BzJElmKmpxRzYqI3lpJio2fGAxQndFezFhVm9jCnNu
dG5pfTg4Kmk9dVY2dmRERj4wX2F0I2hLYiMpMlJAaW8+bihsZ05VSDhqKlMpSEMxJDBCJkl3MHt7
UjMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW1lcmljYS9OZXdfWW9yayBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL05ld19Zb3JrCmluZGV4IDc1NTNmZWUzN2E1ZDAzZTkxNjNlZTE5YjFj
ZWQ3MzBhMDIzNDVjZmIuLjJmNzU0ODBlMDY5YjYwYjZjNThhOTEzN2M3ZWViZDQ3OTZmNzQyMjYg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzQKb2NtY2E5ZUw7R0lJeEZXSjFfbE9KQVFz
dGQhSjVFNlMmK3FXR0IzO2IkcD84UTBIMVVUNGdkZkUKCmRlbHRhIDQ0CnZjbWNhMGVOJWRhSTst
R1kxX2xPSkFRdCVuQnRUJVowYyEjfkJnMTR0N1FATkJFWi07WjtGU09YOz4hdkQKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9O
aXBpZ29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJp
Y2EvTmlwaWdvbgppbmRleCBmOGEwMjkyYjI1OTk5ZDQ3MjZjZWVkNTJkMWI1NWE0NzEzNzAwMDQ1
Li5mNmE4NTZlNjkzNDIwZDZkOTg5YzQ1YWNmZjJjNDhiNjBkYjY5MTg2IDEwMDY0NApHSVQgYmlu
YXJ5IHBhdGNoCmRlbHRhIDM3CnJjbWNhQ2E3dGk8OXk0YjwwfE5zcTVRfVdLWFNRSHJWYDV9dFdN
LUtoeipJbF5GTUFqT2wlNUNPCgpkZWx0YSAzNgptY21YPmxhOUxvMzk8eUt2MHxOc3E1UjNjKDUr
SmJJb1l7aGZrenNOXmApdlNAUTNxRTUKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Ob21lIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvTm9tZQppbmRleCBjODg2YzliYzBmNDZh
NjY3N2U5ODI0ZmIxODg3NjFiNmRiYzQxOGZmLi4xMDk5OGRmM2JiZTY3YWE4YTAyNjAyMzAxZDEw
ZWMyYjJjMzMwMDZiIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQ4CnpjbVg+aHZ8bmgk
QTBgJENoSFpKMW4wcS1WR0I3WjMwa1BXVmRDVk93dGMqO3xFS0hMUElIVj4hYUlqNEY7YGojdQpE
TDM8MWEKCmRlbHRhIDQ1CndjbWRsbGJWNnZ1QTEwUm58NU0mZ1YodH4zI0s2RzcxO2xEVWZDTENe
cDJwbjQhcE57JGp6Zl9WMEJUfGtadlglUQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL05vcm9uaGEgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Ob3JvbmhhCmluZGV4IDZkOTFm
OTE0NTJkMGM4NDc0ZjkxN2M0MWFkZDMzOTU4Mzg1MDRhYzYuLmYxNDA3MjZmMmE2OTQ1MzU3YjMy
NWYwYmI0NTJkY2U3NTU3YmJmZjcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzUKd2Nt
YUZIZFdMbV54RmBiPiY7WVdUZnRZOGEhR2Vody1FaGZuNHJGdi0xaj0pOCsyfFM9KiVAJkcwR0RK
NkBjO2stCgpkZWx0YSAxMTUKemNtWEBaYGl5bWd4Rmo8SjB8Tit5ZkY9LXcqZ09xRFZ4ckNoTXV5
MV5Pc2JPP0dieXFIMXNFNzYzbz1UYFYlNntpCmFFWUhCTypeYmVINXV1Rl9CRnRyQFloWXcmIzAz
Q1IqQThVPgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL05vcnRoX0Rha290YS9CZXVsYWggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Ob3J0aF9EYWtvdGEvQmV1bGFoCmluZGV4
IDgxNzRjODgyODg1MWE3YWM3MmFhNjVjYmQ1MTM1NjY0MTUyZTMxODIuLjI0NjM0NWRkZTdjYWRh
N2IwZGU4MWNjMjNmYWJjNjZiNjBkNTFlNzkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
MzAKbGNtY2FBYlZne3lMfXQhdTM9OW5IS3JGTCk1JVVJPyR0X0g7Q2ZqbUswMDRfSTIrUk5nCgpk
ZWx0YSAzNwpvY21YPmpiWDkxPkx9dFAxMz05bkhLckhoRU5QeGlSUzxEKyk3I1RLdWFXRjlnMElZ
fXkrNWk5bQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL05vcnRoX0Rha290YS9DZW50ZXIgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Ob3J0aF9EYWtvdGEvQ2VudGVyCmluZGV4
IDgwMzViMjRmYWZlZmY2ZmFkODMzMDk0ZjgxNDkwNTIxM2IyZjNhMGIuLjFmYTA3MDM3NzgwMzQ1
NTE0ODdiN2I1NWQ4MGQ0MWFkMjIwZjIxMDIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
MzAKbGNtY2FBYlZne3lMfXQhdTM9OW5IS3JGTCk1JVVJPyR0X0g7Q2ZqbUswMDRfSTIrUk5nCgpk
ZWx0YSAzNwpvY21YPmpiWDkxPkx9dFAxMz05bkhLckhoRU5QeGlSUzxEKyk3I1RLdWFXRjlnMElZ
fXkrNWk5bQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL05vcnRoX0Rha290YS9OZXdfU2FsZW0gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Ob3J0aF9EYWtvdGEvTmV3X1NhbGVt
CmluZGV4IDViNjMwZWU2NjcxNWQ2MGVlOTk0MDU3MDlkODZlMGU2YTBjOGIyOWMuLjEyM2YyYWVl
Y2ZjODhmMmU1NDNmOTlkNmE4NTllMDI3ODgxNzA4NTIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
ZGVsdGEgMzAKbGNtY2FBYlZne3lMfXQhdTM9OW5IS3JGTCk1JVVJPyR0X0g7Q2ZqbUswMDRfSTIr
Uk5nCgpkZWx0YSAzNwpvY21YPmpiWDkxPkx9dFAxMz05bkhLckhoRU5QeGlSUzxEKyk3I1RLdWFX
RjlnMElZfXkrNWk5bQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BbWVyaWNhL09qaW5hZ2EgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9PamluYWdhCmluZGV4IDE5MGM1Yzg2ZGQ4ZjFmMDBl
Y2MxMzQ0OGM2NDlhY2M5N2U5M2RmNTguLmZjNGEwM2UzNjkzMWJiY2E5YjAwZTAzNDRkMzY1OWU0
YWY3MDBiZTUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgOTQKemNtZXl3ZVRJOTJ4RmBi
Pmh5dD9OZkxMVXNLP2RWdzhgZXA8PFRxekNVMD96IWtsXndTNGwoejIzRE5PMiktJSNHCk8oRDV9
aSlIQnBHLX5zQGxuaCQjYgoKZGVsdGEgMTYzCnpjbVhAWntmVD5teEZqMGAwfE4reUtyfDQ4KmRo
JTtWeHZ3NUJSMnloNjlfVGA7cDdGM2V2e3VZVEpacW87OSFFZAp2RUxIPTRLdmlyR1YhRlZEJUBo
XjU1a0xsKVoqWWpZdVM8eEl1ZCR3eW9gSF85cGBvNmtvJmdzQ048fGQ+CgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvUGFuYW1h
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvUGFu
YW1hCmluZGV4IDVjMWMwNjM3MmM2ZGM4NjEwZmZkMTRmNzRlOTIzYmRjYjliMjFkMzEuLjk5NjRi
OWEzMzQ1MmY0YjYzNmY0MzcwM2I3Y2RlYzQ4OTFjYmRhNWYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKZGVsdGEgNjEKemNtWEBqeFElZ3dJNGM3UE9xOCpoQWclfnpMSjF9eSU/IWptfEE4UjBUfT1R
KVBjJT9yPDhsb1NHMzVkUGI9d2F0CgpkZWx0YSA4Nwp6Y21kblNjJCNzN0k0ZCYpMHxXQyE4NEVU
YjRGblUhXn1yJCE5c2BXY144K2dJOXwkdHIpZFdDdl9teypNMz09MFAKTkBJZDZhVCFUWVF4ZDV3
ejZLKChpCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FtZXJpY2EvUGFuZ25pcnR1bmcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9QYW5nbmlydHVuZwppbmRleCBkZjc4YjYyNjgyYTViMzc2
ZjZkN2NhODk0Yzg0MmY2YjNkNTdmMzYzLi4zZTRlMGRiNmFlMGE1YTcwNGY4Y2RkNTQ5MDcxY2M1
YjcxMjRlMmZkIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQ5CnRjbWRsWnV1Zm90R0dg
UzcwfE81YllpPX1uIU1JdEdvdGJnNjNeUzdPPF5iamslc19Fek1nUi1XM0gkJjYKCmRlbHRhIDgy
CnpjbVoxe3V0IzhtR0gqMmwwfE81YlljPkZoalhFekYqJSs3Xm5WNEI3RD44fDFIZWxqbjZvamt6
MGFPNzNvMUt8MgpRRmU1M09ZezJ3PHZLV1UxMDd+VyE+aV9AJQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1BhcmFtYXJpYm8g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9QYXJh
bWFyaWJvCmluZGV4IDFiNjA4YjNlNTc0NzljOGJhNDk3ODk0ODNlNGYxOWUwMzcwNThkOWEuLmJj
OGE2ZWRmMTMzMWI2OTEyYzI2ZTgxMDc4YjAwYzhlNWQ4N2ZmZGYgMTAwNjQ0CkdJVCBiaW5hcnkg
cGF0Y2gKZGVsdGEgNzMKcmNtWjMlKVckU0hUJEJMYHVtYWcyRUh1JFRXYTJ8cG9VJUpLZlUrRTFI
bzZBSmNFKCUpTGxfQ3IKCmRlbHRhIDEyNgp6Y21abztURVIzeVQjdUUzZmRQYTtmRE1SMllAcjRx
Rl9FPXokMzg5WkJiU25Od24qPFkrKUBBa3w5XiZ3NHlJZnsKaUlWaE1RRXtqJEI1MiphYWcmSz8/
RWtaQzIzPUNYMHgoM0V9IyN7aXR4KWg1NQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1Bob2VuaXggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9QaG9lbml4CmluZGV4IGFkZjI4
MjM2YTJmZWI2OGYxNzdmNWIwMDJlYTA2OGRiNTllZWE5OTcuLmFjNmJiMGM3ODI5MWYxZTM0MWY0
MmMzNDYzOTQ1OGZiMzg1YmY4ZWQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTMKdmNt
YUZKYmJASnVJNGM3UE9xOXU9QVRBMUtMSjRqbCU+dSolNk9UdHNSJHckezxNSXMtRzNOcFI9QTgm
RgoKZGVsdGEgNzgKemNtWEBYXnBJKFNJNGNWUzB8VSFNblMyZik0RihnJFd4LS1sRSlTM2ZAZGJX
QjF0eEJmbjlScCQhVXlGdGFRT3lACkhtfiNPRGYocj5QCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvUG9ydC1hdS1QcmluY2Ug
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Qb3J0
LWF1LVByaW5jZQppbmRleCA3MzA2Y2FlZmZhMGJhMWQxYjhhOWIzN2Q5NDU5ZWJhYWJhZWNkYjIw
Li4yODdmMTQzOTI2NjYzOWY5NTY0MTQ5ZDZlMTYyZmVhYmEzZmJlZDg2IDEwMDY0NApHSVQgYmlu
YXJ5IHBhdGNoCmRlbHRhIDY4CnpjbVozX0omU3ZTXysmak1qKmFyKTckR2NQMXxTRm5WbTJUYS0w
YVZeZm9YQ0o8M3RIQSpXZUlTU0M8ZVNVdD5LWgpQSnAmeklMcWsxN0pwKFFQRDBCfUgKCmRlbHRh
IDk1CnpjbWJRbXlgRm81XyskZW5tV3xUQzd9KiVXMDNzaj48dVFaPDF3bX1WOX1zRFYmNWxlUG0+
M3gqZWBKe2AyTkJ8TwpiNEd1QU5icVVlJkhQJG9JR3RsdWhHfUpUSEd2RVJNQkBHYVUKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9Qb3J0X29mX1NwYWluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FtZXJpY2EvUG9ydF9vZl9TcGFpbgppbmRleCA0NDdlZmJlMmM5NjdjYzU2NDJiNThmNTFh
ZmY4NmI2NzA3MzEzNGZiLi42OTdjZjViY2Y3ZjE1MWZmYzFjMWZjNDI0N2U0ZTljN2UzZmYwMWEz
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenpaMEd2UD9r
Q0cxPVVCNGRlZyskM2hxd3t7S0lJZlB1eHdILXkxNElEe2REMVZqRDwwWnhPcwpKZlRvI24wUldS
KDlOXz19CgpsaXRlcmFsIDE3MAp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRlQzx6eW9RMUN8
Tm1ubDM9SUdPQTN3bXI7XlB+Xzsxfj8jMHpuN34KVnJ1X2l4MEdhYXRLWW1sV2ZYMTZ9MFJTeSY5
JUJGaQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BbWVyaWNhL1BvcnRvX0FjcmUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW1lcmljYS9Qb3J0b19BY3JlCmluZGV4IGI2MTJhYzIzNTYyMTI2ZGI2YjBh
YTNjZTI2ZGVhNjc2MGMxNWJlMjQuLmEzNzRjYjQzZDk4YmZiZDA2YzgyY2EzMDZhNzRmOTY5OTNm
ZDU2NTcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzQKdWNtYlFuYGh7aEp4RmBiPlB5
bik3ZnRZOGFMQnF0MlVidGl6VFFWe05yOCY1NGJQWWBIT3R9RFhhdFo8ZgoKZGVsdGEgMTE5Cnpj
bWV5dUdMM2JEeEZqbkIwfE4reWZGY2xzKmdPcURWeG1xMUJnNGNFbDlSMk80N3FAT0QzfkJGaSZl
YEhzUWg5agpWTW48P2tBKCQ9KDF9KzwyMTUtT3dFJnd9SDRLKUEmCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvUG9ydG9fVmVs
aG8gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Q
b3J0b19WZWxobwppbmRleCAyNDIzZmMxOWE4YTBjMTU0NTE4NzZmMGY4ZjdjNDY5MTEyYzJkMDc4
Li4yZTg3M2E1YWE4NjhjNTYwNTQ0M2M0ODUxMDY0NmYxNDA4ZDU4YzRhIDEwMDY0NApHSVQgYmlu
YXJ5IHBhdGNoCmRlbHRhIDg4CnpjbWNiYGEpNCFteEZgYj5rT1EpcmZ0WThhTEIrKDRxN3g2V1Ax
YV5vI0hERG1KbVV3MURoQDZpVD59JDQ2RHxOfQpDIXckKi0KCmRlbHRhIDEwOQp6Y21YQFdhKkpo
eHhGajxKMHxOK3lmSUpYYCpnT3FEVnhtcTNCZn0mbiQlJVdGKj8/UmltPkAyVFJyTD51R3thO2IK
VCN0JCRwZD1OMSU4KGprdkl9PEpkKjcqJV8KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9QdWVydG9fUmljbyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1B1ZXJ0b19SaWNvCmlu
ZGV4IGQ0NTI1YTY4YTYwMzUxZjE5YTE2ZTBiNmY0ZjE0MjJiNzFmZjNmY2YuLmE2NjJhNTcxMzdi
NjllOGJhNDQ1ZTg5OTU2NjIyMmNkZDQyMmE3NjQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVs
dGEgMjkKaWNtZXkqXz5GUEdXS0k/YTFfbHJvbjdCaz9xS3lkfm10JH48Ml5SbyFoWCUrMQoKZGVs
dGEgMzIKaWNtZXl5X0A4bVlXSTxMMjFfbC0mN1dlQHFLdyNuPTF4QUw2ZCNuSV9Qek1xSwoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVy
aWNhL1B1bnRhX0FyZW5hcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BbWVyaWNhL1B1bnRhX0FyZW5hcwppbmRleCA0ZDg0ZWVkNGUyMzViZGNmYjNlZDhlYTQ1
N2UxYmVmMzcxN2RiM2JkLi5hNWE4YWY1MmMyZjI2YmFmNmY4NWExNzg2ZjY5NTkzNDkxYWQ1MTk1
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDI5CmpjbWV5KV9sfEdGOHojPEQxX2xOV0FR
c3ZEbXVVc19CJkwmLV5WdkI3a2M8ZmgKCmRlbHRhIDQ0CnZjbWFGSV9ubUxVOHojWHIxX2xOV0FR
dCVuQnRUJkVTRWQhcmowfV5RUEk3U0I9byVRPzhGSyp1MWlsSksKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9SYWlueV9SaXZl
ciBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1Jh
aW55X1JpdmVyCmluZGV4IDcwZGNkMmQ4MDE0YTNkY2NiOWMzY2RjZDgzMTU4YWYyNjJhZmU2YTIu
LmVhNjYwOTkxNTVjYTkzMDgxMDA2MmVlYmNmYmM3ZmM5OWU5NzA5N2YgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKZGVsdGEgMzcKcmNtY2FDYTd0aTw5eTRiPDB8TnNxNVF9V0tYU1FIclZgNX10V00t
S2h6KklsXkZNQWpPbCU1Q08KCmRlbHRhIDM2Cm1jbVg+bGE5TG8zOTx5S3YwfE5zcTVSM2MoNStK
YklvWXtoZmt6c05eYCl2U0BRM3FFNQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1Jhbmtpbl9JbmxldCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1Jhbmtpbl9JbmxldAppbmRl
eCA5ZjUwZjM2ZWY0NWEwMjEwYTBkYmNmZGExZmY3MzRmYWI3OWY4MTUzLi4zYTcwNTg3NDcyYzYz
M2FhYTE3OGM3Zjk3OWI4YjM4ODRkNjA0MzcyIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDg3CnpjbWVDO2Y1SkNHVCRCTGBsbXBwcEtyRmheOzBffWI2WFJxQENhdVlxT2Y5JlNaVGAhJmdC
ZU5QPFJXJG4wNWZTMApBQj4oXmIKCmRlbHRhIDEyNgp6Y21hRkQqVHB8VVQjfTd9ZmRQYTtwYU9f
Tll8I2NGdX5Gdl5CUXBhTjw3NVhXdDtyfFlUNmxuQmE0PG4hN09UYnwKWFAhKmU+RnpzTVEqM0F2
cSVEXnokbl9VdEJCe2RNZQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1JlY2lmZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1JlY2lmZQppbmRleCBmZTU1NzM5ZGQzNmU2ZGZl
YTVmMzQwZjJkMDk5YzMwNDI0YmE0ZTYyLi5kN2FiYjE2OGE3NDM0NTc5ODUyYjc1MzNmZTA2MmZl
ZDkyOTdlYzJiIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc1CndjbWFGSGRXTG1eeEZg
Yj4mO1lXVGZ0WThhIUdlaHctRWhmbjRyRnYtMWo9KTgrMnxTPStabDVLMEdEYkNeOGYkPAoKZGVs
dGEgMTE1CnpjbVhAWmBpeW1neEZqPEowfE4reWZGPS13KmdPcURWeHJDaE11eTFeT3NiTz9HYnlx
SDFzRTc2M289VGBWJTZ7aQphRVlIQk8qXmJlSDV1dUZfQkZ0ckBZaFl8PSVtbn5aLTQxNX0KCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1l
cmljYS9SZWdpbmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QW1lcmljYS9SZWdpbmEKaW5kZXggNWZlOGQ2YjYxOGUzNGM0Yzg3YTdlYWM0M2Y3YTI3YWY0MTE2
MWQwMi4uMjBjOWM4NGRmNDkxZTQwNzJlYzRjNWQyYzkzMWE3NDMzZDlmZDM5NCAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApkZWx0YSA1Nwp5Y21hRkZldWFJNEdOJm02MHxPZm5PSDRHbEdDN2YxYmd+
cDxIJHJncEhwVWY8UH5pK1ZGNlpEN0djRXZpeSRwRSgKCmRlbHRhIDYyCnpjbWNiQHspbH5vR09y
bH0wfE9mbk9FZHQ5aThAeXA4NzJvWipHe2Z3UjJHQ3d7UXlkVnp+K15WRDtVOEZuZ05VZgpCM3tl
MDgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW1lcmljYS9SZXNvbHV0ZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL1Jlc29sdXRlCmluZGV4IDg4NGIxZjY0NzBjNzhjNDgyZjBkYWEyODBi
ODVlMDEzMTJjNzY0ZGEuLjBhNzNiNzUzYmE1OTdmODljZDU3Y2MzODc1ZTc4NjlkYzEzMzc3OGMg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODcKemNtZUM7ZjVKQ0dUJEJMYGxtcHBwS3JG
aF47MF99YjZYV0RTQ2F1WXFPZjkmU1pUYCEmZ0JlTlA8UlckbjA1P2V2CkFNRjBRKgoKZGVsdGEg
MTI4CnpjbWFGRCpUcHxVVCN9N31mZFBhO3BhT19OWXwjY0Z1fkZ2XkJNU28pQmh6RkBDZTZ0dypq
amppZl5hWkZUbyRYJgpZQTVheVdwRF51VU0keWc8KlVQeyMqXyZNdzA2MzJqIXZGdlAKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9SaW9fQnJhbmNvIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FtZXJpY2EvUmlvX0JyYW5jbwppbmRleCBiNjEyYWMyMzU2MjEyNmRiNmIwYWEzY2UyNmRlYTY3
NjBjMTViZTI0Li5hMzc0Y2I0M2Q5OGJmYmQwNmM4MmNhMzA2YTc0Zjk2OTkzZmQ1NjU3IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc0CnVjbWJRbmBoe2hKeEZgYj5QeW4pN2Z0WThhTEJx
dDJVYnRpelRRVntOcjgmNTRiUFlgSE90fURYYXRaPGYKCmRlbHRhIDExOQp6Y21leXVHTDNiRHhG
am5CMHxOK3lmRmNscypnT3FEVnhtcTFCZzRjRWw5UjJPNDdxQE9EM35CRmkmZWBIc1FoOWoKVk1u
PD9rQSgkPSgxfSs8MjE1LU93RSZ3fUg0SylBJgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1Jvc2FyaW8gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9Sb3NhcmlvCmluZGV4IDhj
NThmOGMyM2ViMGQ2NmQ4MDcxNGE5Nzg5YjVjMjBhYmYwNDNjYTIuLmRhNGMyM2E1NDViMzYwM2Jj
ZGQ0NTU1YmE4ZmViYTExNzgwMmU3YjQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTgK
emNtY2MwdjR2eFRJNGM3UFk/UF5Fb0ZGYT1XPHY9KEFrN0JFQkFhaDllcWZ4ZSFkUyteV3V0M2dZ
LWh7YDAzTHp+CkF0TjtLMgoKZGVsdGEgMTAyCnpjbWRuT2FnfTMmSTRjX2kwfFZQZW5MMCl1QU9q
OTJofDdXe3BhUytsOHBJZCowVHRNTWpQVX5fNjllUHFnVXNAaQpZOVQ+U0xLVmJGfGZ5I2o/RSpv
Nn5WPkBGbTBKZjQxdjtZN0EKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TYW50YV9Jc2FiZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TYW50YV9Jc2FiZWwKaW5kZXggMjlj
ODNlNzFmZmE2YjA3MWM1MmIyMzYwMjk1YmY1NTAwOWMwOWI3Ni4uYWRhNmJmNzhiMjgxNWQzZDk5
Yzk3ZDUyMWFiOWE2YjM1YzhhZjhjMyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA0Nwpz
Y21kbFl2YGxEJUdVcnFWMV9tfURtZV48eiFaZ3tRPEw9fW5XK2MoZykwa0pWMEVORS0wMCpRQ2RI
P19iCgpkZWx0YSA2Mwp6Y21aMWB2Xyl1d0dWZTQ3MV9tfURtU19NSDgrQWdNNyNTdVRhQD9JOSVk
OUwybS1fKmYxQSl6KiVxdipIM2NkbVcKRGwpKChwCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU2FudGFyZW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TYW50YXJlbQppbmRl
eCBkNzc2YTQzODc3ZGM4NzJkYTViYzM3MGNiMmIxODZmN2IwODkwYjQ3Li5jMjhmMzYwNjNiZDI2
NGU5MzJhMTkxMDg2MWU4ODRkMmExNjY5YjAwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDg2CnpjbWV5dGEqSmh4eEZgYj5rTyM2XmZTNn5aTEN3VUNrYG9XR09neUVBT1UrfiojdmdEKzk5
JVpLMkY3O0FUbVgpVgpCNU1jbFMKCmRlbHRhIDExNwp6Y21jYmBAYEdpOXhGaWIkMHxOK3lmQzNQ
TSpnT3FEVnhtcUJCZzE0dENoNXNxT2QxP08wV2c+I0V7aiNpNTIqWlAKVmFtRjdBWjMwa0gxfSs8
MjE3a2E1RSZ2aT40Qmh8JAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1NhbnRpYWdvIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU2FudGlhZ28KaW5kZXggYWI3NjZhNDFiYzA2
ZGIyOTU2MTU0ZGE2ZTJmYjBkZmMzZTljMWIyYS4uODE2YTA0MjgxODhkOTlmNDM3MDA0MzEyZWU3
M2MzODYwZWUwZjU0ZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1MTMKemNtWFpZSjRp
eE45TE1wUzdHelhwM1gheEYxVk4kNGtYfCZMKXhvQXtoX2FWeFg0eS03bT9aPWEob3tBITFRRihU
CnokfmlhPzVlLTI+UV8jQGgob2g1cVFBX3RMNFZUWm9jbCFVblo7bkBvdlJnOFJoI0Y2JWJ1akIh
NlQ/QTA4U1BZNAp6S0I9ZXViIXhgaHJiOFZjRClkI1UhO1E1ZntMKDVUcFlMTSEkfHxGZTRgU31Q
Qng0dHNWbV5IPDdZPmRAZTVAY0IKelElV3JqPyN0IVRMJCVWTCpRKX53bThpPDxxLSNWYU9FSkNu
KTJHJk4wKCNAd3I4ZHR6eCshKHRFNEtGUkkoXnpLCnp3JlFOT3YtPk1ETGstMmVyS1E0bFZpLW9Y
YDhiUEQpX1dfcm5qWiVEQX56IzxCZXhePkJPOHolJGQ8Q145JU5IbAp6YX5IQT0qQHRYSWM0Q0lI
eWY3RlVqU05TfEJMUj5JTkMrZWI1KEo0LSkobkhoSz57ST5rV2VPR2dJTjNeNyFuTiQKZ2hyfmxP
cHYyc3s8dlZ3MHQ5U0lmejN2YFF4MzRTVWArdXdYMTNobj5CPiheYgoKZGVsdGEgNTIzCnpjbVha
WUtTJTttMExTckQ3aWx2QzN4YkAyQW9MfD1FeHtXYVlVdDA+NnFTbUltZjBUQEYpSk1sVDU3U0Rx
TiY8bQp6SU1gNWRWP2hsS3tlZ3lSWkhwUj0yN0JLfTJYfipsbzhJc0g/KX5zOGtGKWYmQmN7anE/
M3IzZCVtIUVPTk0lQXEKelRYJHV3b0t+QFZSPm1WXkQqaWt2Nkg9KGVNWlprP25ea2haT3tOOyhZ
QSpqUD1VKlJISV9rMyp1RD9WXntAOURCCno0YFJ2eFZsUXZpI0VOeGdYT2ptYWAqdmpLaEtuTTFi
MUN5WjZfcjBibG0kO2c2fUhSTHhBci11aW04fWZ6YUxaXgp6QlNVaVl5aER8YEk7JHRuYzhCTkt2
TWpnMFRrODczUmxSbEh4aX5XKW9FdGVpYSgtazN2SUUmLSlPKE9rTSFnSCEKelg0THpUallob18q
XjJETjV+RiF4STVIanlmSjh0LUFUZnwyTkVEK0VnVHlpRkt1OUVgNHUhLXI+UntUaU1LcGQ4Cms0
dkJ7Wkw/V1VORFVGUnJMJGBBfjlvflVKQz1kPllkYj55YXtAPEdaMFAja2xlKmdkZwoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNh
L1NhbnRvX0RvbWluZ28gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW1lcmljYS9TYW50b19Eb21pbmdvCmluZGV4IGNjMmNiZjJiMTIwOWI4MzA4NWRkNjNmM2Rm
OThlOGY1YzRmYzM5OTEuLjRmZTM2ZmQ0YzExZjk5OGJhM2Y2MjZjNWUyM2Q5N2JkODJkMTI3OTEg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTIKdWNtYUZPZTJSSTNJNGM3UE9xNXdOTDBs
QmZnYzU+NG5obDdoQ295KFJFQ151WmF0c2JKO1F8MlkyTTk/MwoKZGVsdGEgODcKemNtWEBie0Yt
QCFJNGNfaTB8VlBjbkkkfHg4Vik5aSVZd3pCMHp5QzwjRnpkNzZgMSZAZ09Pb2tLPiRiczQhOWhI
CkhMcmt+OzxWKkA+CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvCmluZGV4IDMwOGE1NDVjZTU5MzE5
MzlmYjYzNTNmYTQyNzNhZWRmMDBiNDkzNzIuLjEzZmYwODM4NjlhOWFjODQ3Njc3NTU4N2RlODQ3
NjY1NGExMDAwMTcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTAwCnpjbWFGQnpsM3sm
eEZgYj5oeWsqaGZ0WThiS0BLQkp7cn5efUNtUytGR2NyeHkkUnZrTD4xSXltSjR8UzVJazs/ZQpK
NFVGeEt4ZDY4VDZoUXowCgpkZWx0YSA2MDYKemNtWWsmSnhEQFA3ez45VlZVUHQ7TCpgSCVEMiZr
VFRwZnhDcGBaXjRhfTB0JEV1XyopNWl1Klo4WEFIVzlEO144CnpMYHloJHJKKlRAbVdZVUdpR3Fm
djNmaUs8bnRHb0RLXk59KlU1XmV2fEM4I00rTntNfCE1RzdoWW0wOFkqUUR1RAp6Yk9hNWxpQmk4
bEllZzVnaiN+OTt0dDRsNWBeMFJXbD5SYEFAYyYlIWA1fXstem5feDwrbldkITJqeFFMd09CYXgK
el5UcFNeU1Z8MT07TjZ1VDhnSnZ2ZztSWntyOzR2O19WbHB6Z0dXfEVkZ1N8LU19MG0kYGMmWXQ/
eDJXVy1wRnw0CnpzRUZzXmBDM19zI0NFMVp1MFBnYGpvR2w9SnBVNU9rJHMqemNuflpuNFAmezJw
KkAjMEhDTkpLcjdMU2Bgb0Ntewp6aj98S31gailZP2UmZSVJJkF8YUNMQ2tgZjF+Q3N9QkUoRTNP
QCl9TnF7JEdvbHs2aDx6TEY5XldQbklQcSFAYk8KejA4SnBlSyh2QUExSk1ZZ2xhZzlOXmlvbllo
O0ItMTJobVNTNEl3JjBZQUc0KFZobFpUZlRqPiNBPSpPS21yVUROCnEpI3Q3QnJ+Y1I1akB+eD5p
Wk9GPGhqNHFgXm1LVX5VUUtncVBTR2hHVVlGQzI3eE9PKGxjQ2xDCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU2NvcmVzYnlz
dW5kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2Ev
U2NvcmVzYnlzdW5kCmluZGV4IDhlMTM2NmNhMzlhODU2ZDE3YmYxNmQ1ZWIzMzFlMzA4ODkwYzdj
ZTguLmUyMGU5ZTFjNDI3MmFkYzQwYzA3NTYyYmIzZDY3NjdjYjA1NmI1NTAgMTAwNjQ0CkdJVCBi
aW5hcnkgcGF0Y2gKZGVsdGEgNzMKemNtZUM7fEhDJnluWGA8NmZxQC19MXZWUG9VfVJ4clZySDh4
JGRvJS1mcih7dTlhOWNNZGg+Nmw0YjE1Qm98Q2lLCkY2I3l8MTRfNSNICgpkZWx0YSA2Mwp6Y21l
eXYqVHB8VW5ZV3lRZnFALX0xc1pfRk14N2dzajB9X0t2RikzRGgpRyF4RjgyY3syTGhZbEY+UFE1
RTRUKiQKRCF9dCFICgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0FtZXJpY2EvU2hpcHJvY2sgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TaGlwcm9jawppbmRleCA3ZmM2NjkxNzFmODhlOGUx
ZmIwYzE0ODNiYjgzZTc0NmU1ZjFjNzc5Li41ZmJlMjZiMWQ5M2QxYWNiMjU2MWMzOTBjMWUwOTdk
MDdmMWEyNjJlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDMwCmxjbWJPIysjfGVVQXY1
UFoxX2xPSkFRc3VZaVRNTXw8UndoRUNmOU9HMDA0c30yPmJ2NQoKZGVsdGEgMzYKbmNtZUFYbytg
WHlBK3o5bzFfbE9KQVF0JW5CdFQmRUQmYEw/ajB9QCFhZU0qKm5Re28oCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU2l0a2Eg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TaXRr
YQppbmRleCA2NjJiOGI2N2U1ODFjYWI0MmFlMjUwYzY3MjU4MGJmMjI0YmQxN2U4Li4zMWY3MDYx
MzcxOTEwYWQ0MmU0MzEwYjdhNjQ2YmExYTk4YjZjYmE0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDE5OQp6Y21aMXtHKmY4OWNQMTdGaEQqeVF8N0khYDx6ISVCMEFVY0EwS18xKygmaz5+
MkEwV3U5TG5fXj5+d0A2TT0+emAKaXxLRiQlQktzUXtTU0R9YVA/KVVEdGpXIzUyeSEzQEZpc1pX
bG1oXzRQWiR2WgoKZGVsdGEgMjQ1CnpjbWJPIXZgJVFsY2MjZytJWUtBPEZzc09ORiklUUlGYkdU
cFZofiZIMlojcCpuX0hQMVNYZGJ0blY0QjczdiE0fQp6bWduSEM9ajVPeFdNSF9vb1BwdjB8My1C
WCsyNnB4R0k9P05mPVloX3FZT342ZkktcDZILXNTfDc+TDd4SH5AJVUKWUxLcUB9ezc5Rns0Pj1e
Njg1a0tSfEteWWIwMG9VRG07ZTkoCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU3RfQmFydGhlbGVteSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1N0X0JhcnRoZWxlbXkKaW5k
ZXggNDQ3ZWZiZTJjOTY3Y2M1NjQyYjU4ZjUxYWZmODZiNjcwNzMxMzRmYi4uNjk3Y2Y1YmNmN2Yx
NTFmZmMxYzFmYzQyNDdlNGU5YzdlM2ZmMDFhMyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDE0OAp6Y21XSEUlMWtxMnp6WjBHdlA/a0NHMT1VQjRkZWcrJDNocXd7e0tJSWZQdXh3SC15
MTRJRHtkRDFWakQ8MFp4T3MKSmZUbyNuMFJXUig5Tl89fQoKbGl0ZXJhbCAxNzAKemNtV0hFJTFr
cTJ6eU00QDVmQkNlN0BNTzMkZUM8enlvUTFDfE5tbmwzPUlHT0Ezd21yO15Qfl87MX4/IzB6bjd+
ClZydV9peDBHYWF0S1ltbFdmWDE2fTBSU3kmOSVCRmkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TdF9Kb2hucyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1N0X0pvaG5zCmlu
ZGV4IGExZDE0ODU0YWY2YjgyYmZlODE0ZjJjNjRhYWMwMWJjMDUzZDVmY2IuLjY1YTViMGM3MjBk
YWQxNTFmZmRjYmEzZGJlOTFjOGJkNjM4ODQ1YzYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVs
dGEgMzgKc2NtY2EwYjZqUmFHJU0kTzFfbE9CQWVQKm0hJjw+VWA2R3x5QndudH4rJF8zYGxURz1n
MG47VzQmO1M0YwoKZGVsdGEgNDUKd2NtWD51YjN0WjlHXl5rVDFfbE9CQWVRX0FCdFQkdTNUcCpC
Qmc1bmVKY15xK1NAYW52PituZWYwUT1HazQqJm9GCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU3RfS2l0dHMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TdF9LaXR0cwppbmRl
eCA0NDdlZmJlMmM5NjdjYzU2NDJiNThmNTFhZmY4NmI2NzA3MzEzNGZiLi42OTdjZjViY2Y3ZjE1
MWZmYzFjMWZjNDI0N2U0ZTljN2UzZmYwMWEzIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMTQ4CnpjbVdIRSUxa3EyenpaMEd2UD9rQ0cxPVVCNGRlZyskM2hxd3t7S0lJZlB1eHdILXkx
NElEe2REMVZqRDwwWnhPcwpKZlRvI24wUldSKDlOXz19CgpsaXRlcmFsIDE3MAp6Y21XSEUlMWtx
Mnp5TTRANWZCQ2U3QE1PMyRlQzx6eW9RMUN8Tm1ubDM9SUdPQTN3bXI7XlB+Xzsxfj8jMHpuN34K
VnJ1X2l4MEdhYXRLWW1sV2ZYMTZ9MFJTeSY5JUJGaQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1N0X0x1Y2lhIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU3RfTHVjaWEKaW5k
ZXggNDQ3ZWZiZTJjOTY3Y2M1NjQyYjU4ZjUxYWZmODZiNjcwNzMxMzRmYi4uNjk3Y2Y1YmNmN2Yx
NTFmZmMxYzFmYzQyNDdlNGU5YzdlM2ZmMDFhMyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDE0OAp6Y21XSEUlMWtxMnp6WjBHdlA/a0NHMT1VQjRkZWcrJDNocXd7e0tJSWZQdXh3SC15
MTRJRHtkRDFWakQ8MFp4T3MKSmZUbyNuMFJXUig5Tl89fQoKbGl0ZXJhbCAxNzAKemNtV0hFJTFr
cTJ6eU00QDVmQkNlN0BNTzMkZUM8enlvUTFDfE5tbmwzPUlHT0Ezd21yO15Qfl87MX4/IzB6bjd+
ClZydV9peDBHYWF0S1ltbFdmWDE2fTBSU3kmOSVCRmkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TdF9UaG9tYXMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TdF9UaG9tYXMK
aW5kZXggNDQ3ZWZiZTJjOTY3Y2M1NjQyYjU4ZjUxYWZmODZiNjcwNzMxMzRmYi4uNjk3Y2Y1YmNm
N2YxNTFmZmMxYzFmYzQyNDdlNGU5YzdlM2ZmMDFhMyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDE0OAp6Y21XSEUlMWtxMnp6WjBHdlA/a0NHMT1VQjRkZWcrJDNocXd7e0tJSWZQdXh3
SC15MTRJRHtkRDFWakQ8MFp4T3MKSmZUbyNuMFJXUig5Tl89fQoKbGl0ZXJhbCAxNzAKemNtV0hF
JTFrcTJ6eU00QDVmQkNlN0BNTzMkZUM8enlvUTFDfE5tbmwzPUlHT0Ezd21yO15Qfl87MX4/IzB6
bjd+ClZydV9peDBHYWF0S1ltbFdmWDE2fTBSU3kmOSVCRmkKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9TdF9WaW5jZW50IGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvU3RfVmlu
Y2VudAppbmRleCA0NDdlZmJlMmM5NjdjYzU2NDJiNThmNTFhZmY4NmI2NzA3MzEzNGZiLi42OTdj
ZjViY2Y3ZjE1MWZmYzFjMWZjNDI0N2U0ZTljN2UzZmYwMWEzIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenpaMEd2UD9rQ0cxPVVCNGRlZyskM2hxd3t7S0lJ
ZlB1eHdILXkxNElEe2REMVZqRDwwWnhPcwpKZlRvI24wUldSKDlOXz19CgpsaXRlcmFsIDE3MAp6
Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRlQzx6eW9RMUN8Tm1ubDM9SUdPQTN3bXI7XlB+Xzsx
fj8jMHpuN34KVnJ1X2l4MEdhYXRLWW1sV2ZYMTZ9MFJTeSY5JUJGaQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1N3aWZ0X0N1
cnJlbnQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmlj
YS9Td2lmdF9DdXJyZW50CmluZGV4IDRkYjEzMDBhMjZlZDRhZDIwYmVkOTE1MDIwZWIzYWY4YmE2
MzllMzMuLjhlOWVmMjU1ZWViMTE1MTViODQxMjZkOWVlNWMwYzZiM2M3MmYyYTAgMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDYKc2NtZG5UdlZtb1NHTig4TDB8T2ZuT0g0Rn5uYl9OZTs3
P1h5KyVkNT9ve2hebklLKyQjME5WJSZoNSFIbgoKZGVsdGEgNjAKemNtZG5Ndlg1bmdHT3EqITB8
T2ZuT0VkdDlpOD9XaTQza2VZIyFxfiVFQ2BxUjBoOXJPJC07fn56fHlHelU8d1B2CgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2Ev
VGVndWNpZ2FscGEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QW1lcmljYS9UZWd1Y2lnYWxwYQppbmRleCA3YWVhOGY5OTg5ZmJkZWRmMDUyN2ExNzJiNDE4NzFl
NzBkNDM5MDYwLi4yYWRhY2IyZTUwMGUyZjk2MjFiMmRlYmMxNzU2ZDMwODc0N2I2N2Y2IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDcxCnFjbWJRbl5vTWJSeEZgYj5VPGIwOWZ0WThhZnlf
aS1SaCtWR0VQJTNYVCtZRUVXP1RSKWJxTEc9CgpkZWx0YSAxMDAKemNtZXl2SUVgdDd4Rmo8SjB8
Tit5MDAkNioqZ09xRFZ4bz09Qmc0ZHRzJSRfdTVLSXU0I2o1bE5NNERtWk9iZjdiCk45dGZZeUlY
SnxPM2ppJHkzdGEjSgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BbWVyaWNhL1RodWxlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0FtZXJpY2EvVGh1bGUKaW5kZXggZGVlZmNjOGRmNWExMTExZmIxY2Nh
Y2QxZDY3ZjQ0MTY1ZDlhNzM2Yy4uNmY4MDJmMWMyYWNmOWNjNzM0ODFhZTg2YzllMDk5ZmNmYzI4
Y2YyNSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA4OQp6Y21leXRlVUUjQnhGYGI+aHpH
S25mdFk4YktASD5OamZ+Tmc0PX1QIT0zJGI8ckVZVHkoKz8oT2dfOXEhTiZvPCkKQ3hEYz1hCgpk
ZWx0YSAxMzkKemNtY2J8e2V5ZGd4Rmo8SjB8Tit5S21yaGgqZ09xRFZ4dndDQk99QSlLLVRjZDM5
S0JHU0ZwO2wwWSFtZWcxOVZKCnNPK08mZzQ0VlUpZWxWZnhsIUhpZElSPU5BSUokKUJfIXtkTz1e
NXp3OFhEPnU+S1NrVzBGaC1Dbmc5UioKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9UaHVuZGVyX0JheSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1RodW5kZXJfQmF5CmluZGV4
IGFhMWQ0ODYwOTc2ODlmNWM2ODZkMjRhYmJlZWEwODY4NjY3MTE4ZTYuLmU1MDRjOWFjZjE5OGZi
ZDQ0NzIyMWYxMjAzNTQ3NzRlNDZkYmJjYzAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
MzUKcGNtWjIxSTdASllBMlZrKzB8TnNhNUtDOzFYTzNXRFZQcy12blZpN1hKbFVRajFwdE18MlNA
K18KCmRlbHRhIDM2Cm1jbWJPd3hMOXo1QUcyVCYwfE5zYTVLSF8zNStKWlNvSD5HcGt6dytCX1NY
UTNKcU5NPwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL1RpanVhbmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW1lcmljYS9UaWp1YW5hCmluZGV4IDI5YzgzZTcxZmZhNmIwNzFjNTJiMjM2
MDI5NWJmNTUwMDljMDliNzYuLmFkYTZiZjc4YjI4MTVkM2Q5OWM5N2Q1MjFhYjlhNmIzNWM4YWY4
YzMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDcKc2NtZGxZdmBsRCVHVXJxVjFfbX1E
bWVePHohWmd7UTxMPX1uVytjKGcpMGtKVjBFTkUtMDAqUUNkSD9fYgoKZGVsdGEgNjMKemNtWjFg
dl8pdXdHVmU0NzFfbX1EbVNfTUg4K0FnTTcjU3VUYUA/STklZDlMMm0tXypmMUEpeiolcXYqSDNj
ZG1XCkRsKSgocAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BbWVyaWNhL1Rvcm9udG8gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW1lcmljYS9Ub3JvbnRvCmluZGV4IDdiNDY4MmEzOWUyZmM5NzQ1MGM5
OWVlZDQ1NzZkMmE0NjE0YmYyOTQuLjY3NTJjNWIwNTI4NTY3OGI4NmFlYTE3MGYwOTIxZmM1ZjVl
NTc3MzggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzEKbGNtWjI0eS1hJDgxU3t1RDFf
bE9KQVFzdUkkP0N6cmAydz5sPEsqZVE1JihSUDJhZjslCgpkZWx0YSA0NAp2Y21aMWB5PFUyUTFn
cWRIMV9sT0pBUXQlbkJ0VCVaQkM3e0dCZzVve0piSUo9RkBLLWokMTRFPCt2RXooCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FtZXJpY2Ev
VG9ydG9sYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVy
aWNhL1RvcnRvbGEKaW5kZXggNDQ3ZWZiZTJjOTY3Y2M1NjQyYjU4ZjUxYWZmODZiNjcwNzMxMzRm
Yi4uNjk3Y2Y1YmNmN2YxNTFmZmMxYzFmYzQyNDdlNGU5YzdlM2ZmMDFhMyAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDE0OAp6Y21XSEUlMWtxMnp6WjBHdlA/a0NHMT1VQjRkZWcrJDNo
cXd7e0tJSWZQdXh3SC15MTRJRHtkRDFWakQ8MFp4T3MKSmZUbyNuMFJXUig5Tl89fQoKbGl0ZXJh
bCAxNzAKemNtV0hFJTFrcTJ6eU00QDVmQkNlN0BNTzMkZUM8enlvUTFDfE5tbmwzPUlHT0Ezd21y
O15Qfl87MX4/IzB6bjd+ClZydV9peDBHYWF0S1ltbFdmWDE2fTBSU3kmOSVCRmkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9W
YW5jb3V2ZXIgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1l
cmljYS9WYW5jb3V2ZXIKaW5kZXggOWI1ZDkyNDE3M2U2ZTcxYzJjMGE3M2NmMmFjYTM2OGQzYWYw
MDJlNi4uMGY5ZjgzMjgyMWI2Y2ZmNDUxYjVlY2NjZDBiNmVhYzhlNTNhOTE5MCAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApkZWx0YSAzMAprY21jYUFjMUNRMkJNYXZ+MV9sT0pBUXNzaSNQV2Y0dklf
SUIkK3B9UTBFNUVfTkJ7cjsKCmRlbHRhIDQ1CndjbVg+amMyI1ZIQmE3Z0UxX2xPSkFRdCVuQnRU
JVo3dDA0JEhVPWd9Q1Q1biZqJEdSKGY4ej1SME9zLXZEZ1hjZwoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1ZpcmdpbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1Zpcmdpbgpp
bmRleCA0NDdlZmJlMmM5NjdjYzU2NDJiNThmNTFhZmY4NmI2NzA3MzEzNGZiLi42OTdjZjViY2Y3
ZjE1MWZmYzFjMWZjNDI0N2U0ZTljN2UzZmYwMWEzIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgMTQ4CnpjbVdIRSUxa3EyenpaMEd2UD9rQ0cxPVVCNGRlZyskM2hxd3t7S0lJZlB1eHdI
LXkxNElEe2REMVZqRDwwWnhPcwpKZlRvI24wUldSKDlOXz19CgpsaXRlcmFsIDE3MAp6Y21XSEUl
MWtxMnp5TTRANWZCQ2U3QE1PMyRlQzx6eW9RMUN8Tm1ubDM9SUdPQTN3bXI7XlB+Xzsxfj8jMHpu
N34KVnJ1X2l4MEdhYXRLWW1sV2ZYMTZ9MFJTeSY5JUJGaQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1doaXRlaG9yc2UgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9XaGl0ZWhv
cnNlCmluZGV4IDZiNjJlMmQzYzM5YTg0MDZjZGMwODdiMzg3ZmJkYWMwNzA5ZjkxNDEuLmZiM2Nk
NzFhNjllMzAzOGYwZDc3ZThkZGQzMjkwYTA4ZmI5NjBkOWMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKZGVsdGEgMzAKa2NtWjIwdXRaPmtIWnh+RTB8TnNHNUchdUJWZ0E4OVMlY31wV0tqK1kwQzRD
QlF2ZCh9CgpkZWx0YSAzNgptY21aMT91dlREJEhuVSZAMHxOc0c1RyghdzUrSmJJZyF1PEVCZzE0
Sl84JE89RCtpX2sKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW1lcmljYS9XaW5uaXBlZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1dpbm5pcGVnCmluZGV4IDJmZmUzZDhkOGUwMTI0NDVh
YTk2MWZjNTNiMzg5MzQ2ODFkZDJhMmMuLmFjNDAyOTlmNmIyNzA0M2U4ZjI0NTRhYzU5NGIwZWMx
ODRjMWEyMzcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNjkKemNtWD50d25jMSRHVUtq
fERqeWcoT0U2VjJQVHQ2NkhyYXJnWXd+azBwVUx0cCVBQzZ4NyNQQHJTWSZmQiVONkYkClFgVyR+
NEMrbCFrQSpvOU4wMDVtOE4mby09CgpkZWx0YSA5Mwp6Y21kbFljM056TEdVTSl6RGp5aEdvVlZ2
YypldD9TI1c7QiltO0t+KFR6LT9LU2Q8MCNGZmNIJTFGXl50QU9RbEsKaS1CXytMZ0IzM3A8Nno9
cVV9Nk1BV3xxa2xuSDQ4SGEwTmlNcnZVJjZ6Wm19agoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbWVyaWNhL1lha3V0YXQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW1lcmljYS9ZYWt1dGF0CmluZGV4
IDUyM2IwYTEwODFhZGUyZmViMmUxNjMyNzljMGI5OTYwZjg1NTAwOTkuLmRhMjA5ZjlmMGEwNzYy
NWVjODNkNGVjODQ5MTcyMTYzNDdmNTY4N2YgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
NTIKemNtZUFZWTgyWT1vciM1azthdWI3SVVNZWpvdFg3RkNvbktEWn4oRX49MEBmUTc4WFYoV3xx
a1U5SE51dUlvS3ZFCkhhPVppcFpHe1k3CgpkZWx0YSA1Ngp6Y21abl4+SnItVW9vUkFFaHhjU0JX
PDl9KTM9OWskS3JIdElOUHhpUk82Q1JAUnQ4MlVXfHFsfTlNWTJvSTlNamoKSGE2QVA3ZUR3PzEK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QW1lcmljYS9ZZWxsb3drbmlmZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbWVyaWNhL1llbGxvd2tuaWZlCmluZGV4IGQ5ZDZlZmY3MGQ3YWFkYzU1ZTIwMmI3
ZDMxY2NiMTM1OTg3MGI4MWEuLmU2YWZhMzkwZTg3OWY5N2NlZjM1MWUzODJhZTYyZGFmMTgzZThk
NzcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDcKc2NtZG5Qem05KWBHR2BTNzB8T2Zu
T0t2b0ghOHJMTCt1X01+bjI8eV8zb3VfYDFgNks+MDRuQVUyPjx7OQoKZGVsdGEgODkKemNtWjMt
emxWUTxHSCoybDB8T2ZuT0V2KEJqWEV6RiolKzdeblY0QjdEPkNJeUhlbGtJK3tjdDcydl90MnMw
YWkkClFHYyNYYyMjSEchY15iT30wT0czPHAjVDU/CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FudGFyY3RpY2EvQ2FzZXkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW50YXJjdGljYS9DYXNleQppbmRl
eCBkMGJiYWNjOGE5NjQ3ZDZkMzFiMzZhNTYxYzZiNTkyMmM3MWQ1MDVjLi5mMTAwZjQ3NDYxYWM4
ZTQ4YTRkZjAzYmVhMDQyOWU0NjRiMzBhMjJlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDQyCm5jbWRuYXczMkNwR0E5UUUwfE5eWF5HcX5RbT4zdzIjTlgqS0cwPGVQOXdSM0pxZWNoYwoK
ZGVsdGEgNTQKdmNtWjM8dzRHXiFHQX0wczB8Tl5YXkUzZDdpOD4wNTM9QDZBMT52R1VmVEFFVWFn
NzV8PThZYD89S1RwTwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BbnRhcmN0aWNhL0RhdmlzIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FudGFyY3RpY2EvRGF2aXMKaW5kZXggNDBhOTkyNjY0ZTJiMjI4
YjBmNmFiOTlhN2FhNjU1ZGY1MzAxNWRjZi4uOTE2ZjJjMjU5MjZiZjQ0NGI3YzM2NjExMGEyOWEz
ZmFmYjE3ZmJjMCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA0MgpuY21kbmF3MzJDcEdB
OVFFMHxOXlheR3F+UW0+M3cyI05YKktHMDxlUDl3UjNKcWVjaGMKCmRlbHRhIDU0CnZjbVozPHc0
R14hR0F9MHMwfE5eWF5FM2Q3aTg+MDUzPUA2QTE+dkdVZlRBRVVhZzc1fD04WWA/PUtUcE8KCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW50
YXJjdGljYS9EdW1vbnREVXJ2aWxsZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BbnRhcmN0aWNhL0R1bW9udERVcnZpbGxlCmluZGV4IDA2ODYzNTM0YzRjNzMz
ZjlhMWExMTgwMGI2MTRlYzkwMWU2NGNjNmMuLmE3MWIzOWMwMDQ2YjAyYzIwZTE3ZDMzZDMzM2U1
YWYwYjAxZWNlZDIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODgKemNtY2I/YyErVT14
R0RuQFU7KG4zZlNCWFRwMGI4fUNKNzE4Wkl+TUJ8TnM5IyhOU1c4eEcwaUoyRHM5UjZCVTU2ClBU
d0ZIVmg2Wi1KaDZZPiFGKHdnJAoKbGl0ZXJhbCAyMTYKemNtV0hFJTFrcTJ6eU00QDVmQkNlUnYt
cWtJVTBiKGx8NXcqX2U+SEpwNCVgciljXm5ncE1qQnFrcjV+azIwYVRICnlTYWJ+eDdfPCF5ITJB
I3I0RjNUJjE4Qy1ka1I+MSpXRCRyNFNxNzQ+MmVSPjYkWWxleCtEX05kZkN+VHxvR0sjIwoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbnRh
cmN0aWNhL01hY3F1YXJpZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BbnRhcmN0aWNhL01hY3F1YXJpZQppbmRleCBhZWEyYmU3N2NjY2I1MTg3ZWNhY2NhNTY3
M2NjNWI0MjU0M2RkM2M5Li42MTZhZmQ5YzgzZDc5OTJmODY0NzdmODY2OTI2ZDYxZDJmNjVjMjVi
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU4CnpjbVpxWWBNXkN2b1JNTHBnZmkxKUNu
ai1HMXxWUHU1a0w/RiMyfmlOPH0jKVNPcTFzQCZnYkg/KEthLSsoPXt+WQpGMHN0KmUzTiEhIQoK
ZGVsdGEgODEKemNtZXlzLU9lKlhvUk5LX2dmYkk1MHxaUEVtank5bCsqbH1FPW0lN09iMmAlbENQ
cyRJYX5TNmZMV1FfJnY8KGdJCkliUFd4OzBMTVRJYH5VeXwKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW50YXJjdGljYS9NYXdzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW50YXJjdGljYS9NYXdz
b24KaW5kZXggNTE5N2RkOTdiOWY4NzFmNTMzZmY0MThiMTg3MGU1OTM1MzBjZDUwMS4uYjMyZTdm
ZDZjNmEzZmFkZGFhOThkZWMwNmI4OGRjY2EzNTc0NDg2ZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDE5OQp6Y21XSEUlMWtxMnp6ZGp4dkxNWCFOV3JNVj56MHkze3J+Xn04SlU9MW5u
RHM3U1FyQEcwdklAUzRHYjh4NGF8VnAKZmxwJXghZ01zRyMyTkAxQjVvN15+Q2R2e244PXpIb3h+
NXpKMTxEK0sKCmxpdGVyYWwgMjI1CnpjbVdIRSUxa3EyenlRb1o1ZkJDZTc5YSsoY15aSmtCTCQt
ZHVVa3FFXzVjNj5YSkJNdjB0JGdhTkNIVG1UTDEleApydTdMckF3dCpRQ281SktzdTtUfCo1NzdB
a0FpRj9aa2JOTVU2ZyM8V2ZjRCR6bnNOYUVGTClqVQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbnRhcmN0aWNhL01jTXVyZG8gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW50YXJjdGljYS9NY011cmRv
CmluZGV4IGE1ZjViNmQ1ZTYwZjE1ZWJkYmI3NDcyMjgwMDZlOGZlMDZkZDRhMDEuLjY1NzVmZGNl
MzExODNkODIzOGIxOGYyZjMwYWI1YjkyMjdjNzA3MWMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
ZGVsdGEgNTYKemNtYk91KyR1YWxvUk1McEw8O2krYVp2XiFVPFZPRUZiOVoxWX5qdEBuSUV0KUYp
PmJGeiQ3dHc4YEg3TF5fO1EqCkRBbXN+JQoKZGVsdGEgODAKemNtWm5fbytDVSNvUk5LX0w8JSFJ
MHxaUEVtank5bCtfX007QERIZmA8YHY4alNlT31ANyQrfWFsOTtAVz1APVZDCkpWc2JqQzkwMWx6
NDE1M3AKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQW50YXJjdGljYS9QYWxtZXIgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQW50YXJjdGljYS9QYWxtZXIKaW5kZXggNDNhMDFkM2U2MmQ0NTQ1NmU1Zjcz
MTdkMmE5ZDE3YTVlNzQ2MDU4ZC4uM2RkODVmODRmZjQ4ZmI4NTUzYjRhOTY0NjU5ODcyYWUxZmI3
ZDMzZCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA0MwpwY21iUWktTmlqWW5LUEp5ZnE/
XnYxdlZQXkZpeCZ6SmNiYjI5S3RrJVk0VGZeKWQwU3kzOUE0QQoKZGVsdGEgNjMKemNtZUM7cDIw
bXFuS3kpaWZxP152MXNaX0ZNamFuVU11eTR2U3IkKjBXPk9ZfSVsIWIjZnh1PldyV3M2TjEqLXZa
CkNwJHNWaQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbnRhcmN0aWNhL1JvdGhlcmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQW50YXJjdGljYS9Sb3RoZXJhCmluZGV4IDU2OTEzZjhhMTBjYjYxMzA1
ZGRjNDAyNWM1MWY3MmU1NmIxOTU3ODEuLjhiMjQzMGEyMGViNDgxYjQ4OGZjY2Q1ZjFhOTY2ZDA2
YmZhMjE0YjkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNjQKemNtV0hFJTFrcTJ6
emRqd3ZMTVhDJWNSUnR8TnNBZ01uO0pHfE5wT0VVfGBXVEZrc0wlRmxHb0whNmNBPWtaQi0qCk4r
ZTl1S3B0KkwmVG1UYkw2fnE3bAoKbGl0ZXJhbCAxODYKemNtV0hFJTFrcTJ6eU00QDVmQkNlVypg
USFJVTBaakZPeDFxe3J+Xn04NWtMWEpSdGMwfExPJD43RmAxYTIzLVNWCmJ1dCozQU0qYVpuZkRq
O35MNGJocVRzQTw5PzJOZXBqKkF5WQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BbnRhcmN0aWNhL1NvdXRoX1BvbGUgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW50YXJjdGljYS9Tb3V0aF9Qb2xlCmlu
ZGV4IGE1ZjViNmQ1ZTYwZjE1ZWJkYmI3NDcyMjgwMDZlOGZlMDZkZDRhMDEuLjY1NzVmZGNlMzEx
ODNkODIzOGIxOGYyZjMwYWI1YjkyMjdjNzA3MWMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVs
dGEgNTYKemNtYk91KyR1YWxvUk1McEw8O2krYVp2XiFVPFZPRUZiOVoxWX5qdEBuSUV0KUYpPmJG
eiQ3dHc4YEg3TF5fO1EqCkRBbXN+JQoKZGVsdGEgODAKemNtWm5fbytDVSNvUk5LX0w8JSFJMHxa
UEVtank5bCtfX007QERIZmA8YHY4alNlT31ANyQrfWFsOTtAVz1APVZDCkpWc2JqQzkwMWx6NDE1
M3AKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQW50YXJjdGljYS9TeW93YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BbnRhcmN0aWNhL1N5b3dhCmluZGV4IDk0YTlkNWEyODJlYWI5MGZhZGQzOGUxNDRi
Mzk4N2JmNmY0ZTdkYTYuLjI1NGFmN2QxMmYzOGFmMGFiZDYzMDJhNGRmNTc0ZTQ1YjUwZDE4MDUg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNjUKemNtV0hFJTFrcTJ6emRqd3ZMTVh5
ZH05UGR7cn5efTg1dj5md0cwP29iUFdzYHY8LXxJTFAjKFBYdmx3JVgmYHt4Ck5MQHBia3hwdW43
VG1WK2A3UUZ4ZgoKbGl0ZXJhbCAxODcKemNtV0hFJTFrcTJ6eU00QDVmQkNlVypgUSFJVTBiKF5O
a1M8XzVjNj5YSkJMbV4xd2pMZlBxRVZ6PEAjOXohPU9BCmNBO0hLV1AmMHJne3MkUWkwdEFmYnZI
QENUcikkZ3cwTGg+aktMN3YjCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FudGFyY3RpY2EvVHJvbGwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQW50YXJjdGljYS9Ucm9sbAppbmRleCAzNzU3ZmFjY2Iy
ODJhOTc1ZTMxMzBlNWVkOWE4NGJjMGU1ODgxYTc5Li41ZTU2NWRhMmY2YjEzOGI3MDE3OWNiN2U3
MjM0NzE2M2FiNDRiNmFiIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQ3CnNjbWJRaSp+
S3xRbmJVPVZmcT9+eGN7VW1kRml2KTRvUXgzSntGRzZGMmBFJUJ4cnt7IzBMe0cjRCp5bGgKCmRl
bHRhIDczCnpjbWVDO29XVklrbmIoenBmcT9+eGNeWkprTWpaaTBDSTtyb2oqTkRic35KTkM7Z1Vh
cWt8NDE4MkJRS0tMV1NZdgpIMz5HQi14KHAxcwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbnRhcmN0aWNhL1Zvc3RvayBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BbnRhcmN0aWNhL1Zvc3RvawppbmRl
eCA5ZmEzMzVjNDQ3OGE4MjA1ZWNhY2I2NDVjNjM2ZWJjMDdhZDcxNGIwLi43MjgzMDUzMDVkZjNk
ODJmY2E3ODI5ZmYzZTk1ODE1ODM3NThkYmViIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMTY1CnpjbVdIRSUxa3Eyenpkand2TE1YeUdOUUFne3tSMn5qRXBlI0FxZm1EeCZ7VWUrNkhD
fUF0YWF0R35fP1hHPnwjQwpPUDJ7b3hucm8rUCNzdlZuNEh6KjEKCmxpdGVyYWwgMTg3CnpjbVdI
RSUxa3EyenlNNEA1ZkJDZVcqYFEhSVUwYiglWlNjfmB2M3BgR2NZbSZkMC1IZHpgJnd3VjhFYmxV
PFRvbgpiVkJgO3w4OSk+TmdOejFvMl5pMDExR0xDYSpOaDdRSmJAWHIKCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXJjdGljL0xvbmd5ZWFy
YnllbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BcmN0aWMv
TG9uZ3llYXJieWVuCmluZGV4IDIzOWMwMTc0ZDM2MWZmNTIwYzBjMzk0MzFmMjE1ODgzN2I4MmM2
ZTAuLjE1YTM0YzNjZWRiN2M5Y2E1MTljMTk1ZjVlYzBjZTlkOGQxODg1YTUgMTAwNjQ0CkdJVCBi
aW5hcnkgcGF0Y2gKZGVsdGEgNTgKemNtWD50eEo3VitHR3AmVm03SS1KVU5UTkBVQERyTiFRbnBI
b0xRTihtd3x6UzlmKX0rWEVVR0tZfGs9PmQyJE1xCklCdmVUPDA1dz89e3tSMzAKCmRlbHRhIDgy
CnpjbWRsWWN2XjZSR0dwSUZsXmhuS2JKSVU7b2JaeTdrIWtXbl9NKndKblgmfT84NWtKWWZ0ZEZQ
a058PG5hbTs3SApZM09CMjxFTVI3Mm40R3tRMzBMbnZjP08zSjBBJW5QO1EjO3QKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9BZGVu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQWRlbgpp
bmRleCBlNzFiYzRlODAyY2JkZmQ5ZjkwNTk4MDI5ZTBmZGEwNGM0MDc0YWIzLi4yYWVhMjVmOGMy
MTAzNjllMGI4MDVkMGRkNWYwZTg5OTE5MGMyMzQwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgMTY1CnpjbVdIRSUxa3Eyenpkand2TE1XSFJvWk16e3J+Xn04NXRRRXc5a09fWGM7aURg
MXBufVhkNChhZ3Bnbm8oMilOaQpTKD9EazZIaiZFKVhzKF5FRiY2O3h0UWtLNQoKbGl0ZXJhbCAx
ODcKemNtV0hFJTFrcTJ6eU00QDVmQkNlVypgUSFJVTBiKFJjVyY9XzVjNj5YSkJNeFY5LTdUNmsq
VVpVfHtqXzRQbnFXCmpGYX5pTUxQIyszMlVySUsxSkswKEFmcktDMD4qUk0wND1pOUhSYntVZjA3
ISgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQXNpYS9BbG1hdHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQXNpYS9BbG1hdHkKaW5kZXggNDlhNGI0ZGU3YjMxOTI0ZDEzOGE2ZTIyYWEwYTE2YWYxODY4
Y2YxYS4uYTRiMDA3NzkwMDU4MDNkNjY1ZDYxM2UzMjZiYjc3ZDg2ZjQ1ZWJkOCAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApkZWx0YSA3OAp6Y21acVljKjtJT1QkQkxfeEloRkRtO2Y8fEVpbHBHIWVt
Q3FFP20tXlBja2xHMVMjTzt2ZTdtJHYocSk+MHN4PCsKQjNtZ0NkCgpkZWx0YSAxMTMKemNtYUZM
LXAoO1dUI30xe2ZkUGE7eiFabzxZPUgoS0Y7VjlOQmc0YyRUYCk8WSY7KVQ9dGpkMT88dj9LYkNk
TEpmClVVYEBnaDBUOVYkcWl0WWpyKSRPcTA2S15jcCNUNT8KCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9BbW1hbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0FtbWFuCmluZGV4IGMzZjA5
OTRhNzUzMDEyMzdhZGNhZDA1Y2IxM2EwODVhNTkzNTljNzAuLmM5ZTg3MDc5MTJkNDVlYzBmOWVh
ZjU2ZDQ2ODc3ZmU5Mjg5ZDRhMTEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODkKemNt
Y2MweDBpMiV4RmBiPHUhMEM2QzxTNT1ufEd0WjZ+QFZlT2skSDR1PD1ZQCRKVUhYLVI4JGtFMH5j
TFBCdnFnCkYyTFB0SjVXTjVaCgpkZWx0YSAxMTcKemNtZG5YY2E/OH5fflpqakVUWElvNUtzb0JL
eTJPeUFoQSpCM0xfKUs8Vkg1QiRwVENxbFZgSXZMekZARU5NaCp1ClUwbmBIbW49ZGwwVjgqNiN2
SytmUzBOQWUtV2RIeUcKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9BbmFkeXIgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9BbmFkeXIKaW5kZXggMGU2MjNjZjc0NmIyOWJmNzM5ODlmZmVj
OTZmMjZjNDllNzM3Y2NjNy4uNmVkOGI3Y2IwNzYzNGI5ZDY2OWM2YzM2NDQ4ZmI4ZGYwZmRiMzJh
MyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3Mgp6Y21YQGN4ckIzcV9+Zl5ZOUp+eGI7
MFZOQUtyRkorZlE1MGdJTG1Cb2Erfj4+SUc4fF5Ud0ZIVmhETFV9aERLWmYKRHtYLTB9CgpkZWx0
YSAxMTcKemNtWjMmZDVtKnt4Rmk8PzB8Tit5ZkQ7Z2QqZGglO1Z4dFpWQk99OVAxSUYxZlhgdFcp
YWFwVnllZ05lX1ZEb29JClg0a21+JDVyX3pnPGcoRT1HX3VuKkd+eG1QO0syLW4KCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9BcXRh
dSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0FxdGF1
CmluZGV4IDU4MDNhM2QzZTNmYWM5OGVjOGJlYmY4YTdjY2U0MTRhNzllMTM3YTQuLmUyZDBmOTE5
NTQxZmM5ZDY0ZjAxZDhjNjEyOGM3ZTczYTk0ODY5Y2YgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
ZGVsdGEgNzYKemNtZXkjZXd9QFN4RmBiPGFEZk9RRmF9fX1UVlNIV25UZFpwYW1qOHohWj9Fd0Q5
XzFkcWl0WW5yKSRhdTBPUUNGCkFTXnhrNQoKZGVsdGEgMTE1CnpjbWNjNHsqISV6eEZpPD8wfE4r
eWZDJihUKmE4aGVWeHJDJk11diQkSSRAR1BwfjtQbTs8OHZaYH5iPj16fjs0IwpXR1o/fHpnZHFZ
VGxGTFRoenw+Q0hsblZmbVglQWB1CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQXF0b2JlIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQXF0b2JlCmluZGV4IDgwOGE1MDI2MTMzNWI0ODU5
OWYwYTc3ZTQ0OGRlMjNiMzAxZWE3OGEuLjA2ZjBhMTNhNjYyYWFjZmE3MGM0ODlkMmZlYzUyNzYz
NjI1NzYwODkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzgKemNtYlF2QHRKKnN4RmBi
PGFEeGFTRmFjcl5UVlNIV2d+XlBKNkxDcHp6UjArTTV1fHtWJVNQTTQpSzFydzNqbktaCkIzc0x8
OAoKZGVsdGEgMTE1CnpjbWV5JktBbUhOeEZrME4wfE4reWZHSDR6KmE4aGVWeHJDa011diVoQ2Mt
M3ZMSlNrY1d3RU9OMGc/b1Ele3YodgpWRm9KYzdLbUA9Zm15TmM4c2h6R1Y3WFY+KzQlej8hCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Fz
aWEvQXNoZ2FiYXQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QXNpYS9Bc2hnYWJhdAppbmRleCAwNDZjNDcyODI3ZWI0N2Q0NmUzMWNkNjk2MTFjZmYwNGU0NTQw
MGMwLi43Mzg5MWFmMWVlOTVhNGQ1ZDYwMjk2N2ZkNWE5NjVjOGE3ZWMxMzI3IDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDY5CnpjbWVCWGVhJGpLZTZrIVAyUUxFPE5DN2I/NURRRSskZTFq
XmwhO0Fodk9WSmtrUV50TWprYlpRb3Z0WXQwRm1xcQpBR1hNWXAKCmRlbHRhIDExMgp6Y21hRk8o
IzwrU1QjfVE0ZmRQYTtLcEtjYVk9SChLRjtPUmprencqciMhUSRqMUglTXlTKiolYDBGe0hsV0tH
NWsKVTVJc1Q9MFUqZ2BxaXRZbnIpJGF1ME9vbE9MalY4KAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0FzaGtoYWJhZCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0FzaGtoYWJhZAppbmRl
eCAwNDZjNDcyODI3ZWI0N2Q0NmUzMWNkNjk2MTFjZmYwNGU0NTQwMGMwLi43Mzg5MWFmMWVlOTVh
NGQ1ZDYwMjk2N2ZkNWE5NjVjOGE3ZWMxMzI3IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDY5CnpjbWVCWGVhJGpLZTZrIVAyUUxFPE5DN2I/NURRRSskZTFqXmwhO0Fodk9WSmtrUV50TWpr
YlpRb3Z0WXQwRm1xcQpBR1hNWXAKCmRlbHRhIDExMgp6Y21hRk8oIzwrU1QjfVE0ZmRQYTtLcEtj
YVk9SChLRjtPUmprencqciMhUSRqMUglTXlTKiolYDBGe0hsV0tHNWsKVTVJc1Q9MFUqZ2BxaXRZ
bnIpJGF1ME9vbE9MalY4KAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9Bc2lhL0F0eXJhdSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9Bc2lhL0F0eXJhdQppbmRleCAyNzA3MmViNTFjZDgzODcyNzIzM2Ri
MTJkZWU4NjZmYWUzYjgxOTY3Li44YjUxNTNlMDU0NWY1NTBjNmY5YjBkYTljZTEzNGE4YTdhNGVi
ZTM2IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc4CnpjbVpxVnhYKFU4VCRCTF94SWhG
RDd5fmhnRWklI0klO1pHb1VSPV9mUGNZNzQxUyNPO3ZlN20kd2JNMV8wc3lrQgpCMygpYG8KCmRl
bHRhIDExNQp6Y21jYzUtcERhUWVEVlREN0V2dysycnZPc0FodCpZa2VIfSpoTEteaUN2emBNN0FP
VyRGOXtRWXROI0klMUEpeU8KWDhEfXM7Yk99UjVLcVF4cXd0PWFndHw9RCkkUT0pZwoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0Jh
Z2hkYWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9C
YWdoZGFkCmluZGV4IDNhYWNkNzhiMWQ1MDNhM2FkZjdmZDNhOTA4NWQxYzFlZWQ5NGZhMTYuLmY3
MTYyZWRmOTNjMjgxOTM0MzZjYzM3OWMwZGZlNDE4NWUzNjhhNDIgMTAwNjQ0CkdJVCBiaW5hcnkg
cGF0Y2gKZGVsdGEgNTUKemNtYUZFZXd9QFNJM3ZTR2lBMlQ7Oy1VO2R6eT4wS3ojTkR7WT1PPDI4
RncmRiZTNVUoPGcoRT1GdCpiKjxebGpBCkNvQyhZVAoKZGVsdGEgODIKemNtY2M0eylUO21JM3dI
U2lIc3J9YiRsN3c3e0ZrSHhHYWJUPHVPPTUqI2JXeChoUXJJR1ZXa3hXU0FWd1Qqd2EqCk87PEN7
O0Z0KmIqPF5sakpJdCY1OwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9Bc2lhL0JhaHJhaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQXNpYS9CYWhyYWluCmluZGV4IGEwYzVmNjY5NjI4ZDhlY2Q2MWMz
OThiYzQ3NWNmMjQwNWQyMDAwMGIuLjYzMTg4YjI2OWQwNzdlMjlmNDhhNDJhMDNjMmE1MmFlZmRi
NjEzMjAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxOTkKemNtV0hFJTFrcTJ6emRq
eHZMTVd9QFk3cmFtYWEoJD5pX0AkJiZiNVl6K2V5bihyRHFwenswP3dXeCZBVTt+VD1ECmtaRDBi
IyN0YjFPN3p7TTtLZ2UqOVgmPyhnRypPbXQqI05Edyg+M00tMDI7ZD1PI2xEQAoKbGl0ZXJhbCAy
MjUKemNtV0hFJTFrcTJ6eVFvWjVmQkNlNzlhKyhjXlpKayFjVEp6U2heLTFzUT5AfUtMYUJaNjlh
PW0wOHA2MCFVM2RDCnklWWNFeSQyV3ZRK3JSe2ZqWEBHWDVKR3wtS09rQmRmWDRwXiojK1cpPjt1
dUgqdlZ4QndCSnRHbTxzQEdxYWYxJgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0Jha3UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9CYWt1CmluZGV4IGExN2QxYWQ4YzhlZjFmZTI1YzAz
M2NhMmZmODhiNzVkYTc2Mjc4MjguLmEwZGU3NGI5NThlNDJhZGU2ZjkzZWMwYzRiYzA2YWU3MTRk
NWM2MDYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTQxCnpjbWV5JGQ3NSpBR04mXkcw
fE9UajNyc1l+OzRxQjZEUFVCek1QVEJKSVdtbVFPYzJQemlVaXIlKjtxSUBDbHw2dgpqT3xFQ2pv
JjFVcyQlTSZyT2ptZTdNZ1dhdDAyI0JIa0oqQmU3PXl8SDFET2BVCgpkZWx0YSAxNjEKemNtWEBq
YElVMm1HT3JzMDB8T1RqM3A0PFVpOD5ocTJHM3B9RnBSd15Ve3RoNCEwMlNiZnIpZUdGZnZTKlhP
VXVOCno9SFEmMSRTNjZ2ZlJQSmBTdGVJOHdnfCR0e3tVKFNmeXdNbFM3Ym5EZkgpdj9LczNsS0Zi
eTxzXksmSyhNd30pbApQYSZwO2Q4PF5QWG5zNU9DRn51aXcKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9CYW5na29rIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQmFuZ2tvawppbmRleCA4
ZGI1ZThhNjFlZTllNjMxNjRjZTdmMDc5Njk1NTdmYWZhOTgyZGRlLi5jMjkyYWM1YjVmNDg5YTg4
YmYxMGExMjYzYjE0ZTc0MTI0NzlkOWU3IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc2
CnpjbWNiXmMkeyY5STRjN1BPcTgqbUFnJjgkTEo0TGQ0Wj1NQ2ZnbyZLPmskeVdDQGNMNE5XTEQo
cDE0TWxsZ21jaQpLen0heVBvQ15UcHRycmFkCgpkZWx0YSA5MAp6Y21YQGtjIXpPPF97MThIaVNr
eCMzfTY3fT5WY1JuSytGdXBKVT43QEFvdmRpVmNTfWRmYXBiOD18QDBmXip9Ym0KViNKUCg2QVB4
ZnFteU5jOHh0Kj4jN1hXQ3Y4WXV0KAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0Jhcm5hdWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9CYXJuYXVsCmluZGV4IDYwZWZiNDFiNDViYTFk
YzUxYWQ2N2Y2NWJlMDM2MTA4NWJhOWNiMmIuLjc1OTU5MmEyNTU0MDhjYWYzNTRkMGM0YTJlNDA2
ZWU1YTE2MzgxODEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzkKemNtYUZQZDZhWDR4
RmBiPGFEZk9RWn48WnZUVlNKczBPTXB3IyN5LUpIJWxAcEZvNl9zYUBsQWJuQV89XmF7Jk9JCkNA
KE5TewoKZGVsdGEgMTE2CnpjbVhAZ2BKOGl0eEZpPD8wfE4reWZHWkcjKmE4aGVWeHhgI0JPfTlQ
OF4mMk1YYHRXKWFhcFZ5ZWdOZV9VXjVldwpXMHV3fStGaG00SWFAbEFibkFfPV5heyZPfnJWSE55
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FzaWEvQmVpcnV0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FzaWEvQmVpcnV0CmluZGV4IDcyZjA4OTYzNDFhNzZlNmJlNjExZDA0ZTBiMWFhZWMyNmY2ZjRh
NDUuLmZiMjY2ZWRlMjI3OWI2YWZmOTEzNTM4ZDlkNWFhZTM5MzVlNTNhZWIgMTAwNjQ0CkdJVCBi
aW5hcnkgcGF0Y2gKZGVsdGEgNTkKemNtZXdfQEplOFVJNGM3UFk/UyVIRytCc1FUb2xaTTYxX20w
OEhqbHx5RD98NU95MD1lSl4zfTA7XmFnUUlSSUFVCkIzKlBfJAoKZGVsdGEgNzYKemNtYURRQEx5
bnBJNGQmKTB8V0MkbkdafkNLbjQmQDVTSWxETDNqKihLcE1wN3tRKHUmWXs4dHQhcEpaPWZvVG1a
CktTWkswMGhkY251OHclJEQKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQXNpYS9CaXNoa2VrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQmlzaGtlawppbmRleCBlM2Y4MWVlMzMyNzMwODEzMmI0
ZTk5MTBmZmZlZjU1ODg1MGQwY2U0Li5mNmUyMGRkM2E4NWVhZGQzZGNjMjhjZjU5ZjNhY2M1Yjk1
NTg0ZjBlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDE3OQp6Y21iUXJhaC1qRnhGYGI8
YURXSVBGYT1AfFRWU0hXbUM1RElOYG1aK1htSWk+Vzw4bVoxViRiby13KzBFMTUrUzIKazJWeWdq
WlUjbjFNaDA5YVphJkFqZilUZndzYCQrMHZIe3YpcikkT3EwS0lHIygqT1ZmCgpkZWx0YSAyNDMK
emNtY2M0Szl5c0Z4Rmk8PzB8Tit5ZkVmXmoqYThoZVZ4ckMhTXV5M08ldTBlQmpBKEZqMyR2YnlU
TDEkSzE0QnB4CnpCTSpwVjtQTFNkVmJDQCgxIThqYDF7dVlgeno3NmoyOSVmfUV7b05eQTVpKHRE
O1pZK2I+T3p1bUs8QlRZPUd7dQpJKD4zRCkwS14jP3ReZmM0CgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQnJ1bmVpIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQnJ1bmVpCmluZGV4IGNh
ZDE2YjBkZmVhMmVjMTIwNzRjOGNiNjc0Y2ZmZWRiYWMyN2IwYzYuLjNkYWIwYWJmNGVkOTUwZjQ2
YTIzMjgyYzU5ZjZmNmZhM2I2YmE3NTggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzAK
emNtYUZMYyQjczdfezJnSFVjUittT2ZJfDktODxfNHxObFNIUnY5Y1IkcF9eODJnIWhGa1NxZmIp
QzFXLTZgV2kpCkwrNkVTT3gpeGpqYUAtIU8KCmxpdGVyYWwgMjI5CnpjbVdIRSUxa3EyenlRb1o1
ZkJDZTc5YSsoYDVKKTQrQWIhU1VGcSV9XzVjNj5YSkJNdlZxblBMMH5CVit0Tl5KaQp6WGtnJi1A
ZU5fbkhaVjZmMEZvOVVESWY/VCFJbUVvRWV0Pmx7KTIxLShJNldeIXUzRWxAd1JmPTA5fDBHWXJ6
RW8KRGhWVW17CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FzaWEvQ2FsY3V0dGEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQXNpYS9DYWxjdXR0YQppbmRleCBiNTc5NzJkZDhhYjU1Nzg1ZDhjYjIxYjkw
YjUyNzdkOGZjODUwZmRjLi4wMDE0MDQ2ZDI5YTM4ZTliODAwNmY3NDZmZWE3OTRkN2Y3MWViNDc5
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDk2CnpjbWRuTkc/IV9ESTRjN1BPcTROSHpY
NCkreURfalpGISk5PWE0O31MWEU1XmtfPVlnfTA8bVhzMiFwblBuWHYpRwpoMWFWUTJMS3Q4TkdD
KmRDUDI2QkhAdWY4djdmX3xIc2c8ei03WGJmajU2dTdvCgpkZWx0YSAxMjQKemNtYlFzdzFhN2FJ
NGNWUzB8VSFNOEFKVUdLbjg9aTh2e19sSC1kcUtmZ3c3Qms7bFV+Z3V4ZXhKJWQ5U3Y8PUxSCng0
TTIqKFYxbD9URTA2KWdBT0tWa1d7ZHAqYX5UKldGMGYhXm4wVWlsMWorfGVUdEhLRk98NlUjeEJ6
USg1WEp4aQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9Bc2lhL0NoaXRhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FzaWEvQ2hpdGEKaW5kZXggOTVmNTY0NTZlNTI2NGIxMTI5NTI1MWY5NDExMTVhOWI4
NzdhNjRlOC4uYzQxNDljMDVjZTI2MzhjOTc2YWVjMGQxOGViNzU2N2M3Mjc2YmM4MCAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3OQp6Y21hRktkNmFYNHhGYGI8YUR4YVNhMFglIVRWU0lC
NTk0SDgjcyM/S0hfST9kRm82X3NhQGxBYlNsYTFZYXNkRkkKQ1A2fTU1CgpkZWx0YSAxMTgKemNt
WEBnYEkyKmp4RmswTjB8Tit5ZkN+X1YqYThoZVZ4dFpaQk99OVA4SX1id1hgbXAoMWFWb2NJKH5w
OGZuWU5XClhsTFFrKW4rUVklT21mKzE4KDctdVQ1PHNaPU50Pk8KCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9DaG9pYmFsc2FuIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQ2hvaWJhbHNh
bgppbmRleCAxNWIzNThmMmY0ZGRlYzhiMjU0M2Y4ODNhZGE4NmQyYWEzNzcxMTM2Li5lNDhkYWE4
MjQzNTA3OGEyYTczMTIyNWVlOTYzYjMwYTQ4Zjc4Y2UxIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDgwCnpjbWNjNXpMa0F+eEZgYj5GYWZnSmZtbWRzIUcrMDtqNzVfaDhGNDdzeXA/ZVFC
UztBK215TmM4Z2BLVmk3WFpXPApCM3c4aGkKCmRlbHRhIDEzMwp6Y21kbldleEg0VXhGa0NSMHxO
K3lmR0g0eipkaCU7VnhyQ2tXKEcjNE5zTDtQSDVsRmFmRmVqPmcxOVZKalgkN2oKYUhxVDtRej0p
KD45NyEqYiR6YEskVX0yfGchMzYtPmdib1k8CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQ2hvbmdxaW5nIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQ2hvbmdxaW5nCmluZGV4IGRiZDEz
MmYyYjBiY2M4YmVhYjA4ZTA0YjE4Mjc1MTc5NWM4NTMxMjcuLjNjMGJlZjIwNjEzZDIyZjM1N2Q2
YmY0NmJhMDFkNmU5YmY0YWQxMTAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1MzMK
emNtYnUqemJed305TE1vKil6OExvdT9pa1Z3UyZiVjUrYkZRTXA2czZGd35eZD9hYT5RTnRqcX14
OXx0fTJQRCF9CnopMiY3SXpqKUhrI1BAd1dpTVkjaXVpPSpHXlkpSiReO1AteG5ieUIpSihFXkhG
R25Ab24pblBfLURoYyErXy1qRgp6bCtNUE0+KXV9MipQVGNBd3dzbXJZU1o7TG9BTlBRNUJmNiQr
dXNofD85K2puWXV2PnF5MXQqXnlOdDdFNGAhaW8KejUtKFArJStnZm88KDV4UFpjeXtgVi09SXs2
dXFJO2tGVXNpUGo0Ym9vRWpEaHRjK0xwZUpQZG85UXh3X1ZiR1U4CnooT1JqMTNgNTJ4Pk9mPjxx
N0ZzSUI3PjM5JFoldmw1JigmU2doPHBGK0Ayc3Y2ZUo4MTJNTDVrTFA4PDJrWUlAIwpRNEdFWHtw
TGlLOXhVISE0MjNNRDt3ZzNQQwoKbGl0ZXJhbCA0MTQKemNtYSkleSQlNkU2b3YwMUFzZG5LMFJH
d0NoKDtrPVMmMHhUUTs4NF93aV8/NzxgRiFQQ3M7fn1ENz9mKEJedklUCnpsN2NoMmApemgrQys4
RT5WQVowcCNRNiZiJEAxVm10QHNobUVFUFErZEF3eFE9e0Q4Kkx6QGMwUDhQJEJEaC15aAp6SlJo
b3g9Z1ZxO098eyVZKlBRez8/X0tSQzh8MG9WSSVhKD1xVjFMTXJFcVUwaEBfJl9YZWBMQEBrfDZa
SU8yRTcKejkzTHwhQUxiOUQ3Yms0ezkqRU0wVHBVRHM1Q1MrMzI/UWJfV0l6YWtrT0NuRkxKb2wt
MnVWWDAxdER3NSF0fio1Ck0jcmBxMlMtI25eLTtwWDxUPnQ8OAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0NodW5na2luZyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0NodW5na2luZwpp
bmRleCBkYmQxMzJmMmIwYmNjOGJlYWIwOGUwNGIxODI3NTE3OTVjODUzMTI3Li4zYzBiZWYyMDYx
M2QyMmYzNTdkNmJmNDZiYTAxZDZlOWJmNGFkMTEwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgNTMzCnpjbWJ1KnpiXnd9OUxNbyopejhMb3U/aWtWd1MmYlY1K2JGUU1wNnM2Rnd+XmQ/
YWE+UU50anF9eDl8dH0yUEQhfQp6KTImN0l6ailIayNQQHdXaU1ZI2l1aT0qR15ZKUokXjtQLXhu
YnlCKUooRV5IRkduQG9uKW5QXy1EaGMhK18takYKemwrTVBNPil1fTIqUFRjQXd3c21yWVNaO0xv
QU5QUTVCZjYkK3VzaHw/OStqbll1dj5xeTF0Kl55TnQ3RTRgIWlvCno1LShQKyUrZ2ZvPCg1eFBa
Y3l7YFYtPUl7NnVxSTtrRlVzaVBqNGJvb0VqRGh0YytMcGVKUGRvOVF4d19WYkdVOAp6KE9SajEz
YDUyeD5PZj48cTdGc0lCNz4zOSRaJXZsNSYoJlNnaDxwRitAMnN2NmVKODEyTUw1a0xQODwya1lJ
QCMKUTRHRVh7cExpSzl4VSEhNDIzTUQ7d2czUEMKCmxpdGVyYWwgNDE0CnpjbWEpJXkkJTZFNm92
MDFBc2RuSzBSR3dDaCg7az1TJjB4VFE7ODRfd2lfPzc8YEYhUENzO359RDc/ZihCXnZJVAp6bDdj
aDJgKXpoK0MrOEU+VkFaMHAjUTYmYiRAMVZtdEBzaG1FRVBRK2RBd3hRPXtEOCpMekBjMFA4UCRC
RGgteWgKekpSaG94PWdWcTtPfHslWSpQUXs/P19LUkM4fDBvVkklYSg9cVYxTE1yRXFVMGhAXyZf
WGVgTEBAa3w2WklPMkU3Cno5M0x8IUFMYjlEN2JrNHs5KkVNMFRwVURzNUNTKzMyP1FiX1dJemFr
a09DbkZMSm9sLTJ1VlgwMXREdzUhdH4qNQpNI3JgcTJTLSNuXi07cFg8VD50PDgKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9Db2xv
bWJvIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvQ29s
b21ibwppbmRleCAyOGZlNDMwN2Q3NWRiMWQ1MDBkODE1YjQyNjljZmQ4MmRlN2NiZmU3Li42MmM2
NGQ4NWRmYmRjNDFhZThlNzhiYzgzMDRjZWIzNWIxNmI0MjU1IDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDYxCnpjbWJRc3tEbzxQSTRjN1BPcTZNenhLVWdiJSFVJTJLJC0pSEJfPS1nbT4z
WXEkN1EyIVV9fGgmcil6M3VZYF9IbwpEUEtGQUsKCmRlbHRhIDEwMwp6Y21leXVHPyNnVEk0Y0pP
MHxVb0luTzEldmpTTUMoa2RPdC1LP1MqaEc+OStwMTFkMV90T3B+KiNERzlLQz84STcKUyo9UVM+
OFhNVEBucHpuZlp+Knt6TkRIRj8KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9EYWNjYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0RhY2NhCmluZGV4IDk4ODgxZjA5M2FlNzY3NTNlODc1
N2RjM2ZhNTBmY2Y3ZmQxZjhiNjMuLmIxMWM5Mjg0MTA2OGMxMmE1ZDAxMDI0MDIxMjdmZjQ1Mzdh
NjY4OTkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTUKeGNtZXl3YmRoTy1JNGM3UE9x
OGpaQVRBMUtMSjFCYSU/ODlXNlIkVy1eenE+MnZlN20kdihxKT4wc3NOZzItRS1vCgpkZWx0YSA5
MAp6Y21jYn1eb2VQTEk0Y19pMHxWUGNuRjx+dDRGP20lV3g/VzUwWnQkZDs+LU1pM1FSb1V6e29J
KChMKXI8MlVBPSYKTCs2SEVKeEBLR2U7V3I3VwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0RhbWFzY3VzIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvRGFtYXNjdXMKaW5kZXggYWM0NTc2
NDZiYjAyMDVlYWJkZTk1MjZiZmY4YWU0MWQzM2RmNTUwYi4uZDkxMDRhN2FiOGNiMTNiNGM4N2Vi
MjVmZjYzM2IwM2VjMTJkZGQ4MSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA4OQp6Y21i
T3JeaTZQcnhGYGI+bT0wdCExMk9NTGdCWWdDNlBZR1lVY2tnTWA3RFAjRV9JdTBuUmw9dEUxZGpe
TGs8QUwKQ1p4VEJJCgpkZWx0YSAxMTgKemNtZXcrSTYtS0Z4Rmo8SjB8Tit5enppUzt2M1ZQUyM3
M1BNQ1BzJEk2UFdyWiZ1OE04RVlCPkAxezRLPzNGNUw/CllIVHs0e0dpPVVjLW9iKlpsTkJzQWA4
dE9AMFJJaldLTDd2IwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9Bc2lhL0RoYWthIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0FzaWEvRGhha2EKaW5kZXggOTg4ODFmMDkzYWU3Njc1M2U4NzU3ZGMzZmE1
MGZjZjdmZDFmOGI2My4uYjExYzkyODQxMDY4YzEyYTVkMDEwMjQwMjEyN2ZmNDUzN2E2Njg5OSAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1NQp4Y21leXdiZGhPLUk0YzdQT3E4alpBVEEx
S0xKMUJhJT84OVc2UiRXLV56cT4ydmU3bSR2KHEpPjBzc05nMi1FLW8KCmRlbHRhIDkwCnpjbWNi
fV5vZVBMSTRjX2kwfFZQY25GPH50NEY/bSVXeD9XNTBadCRkOz4tTWkzUVJvVXp7b0koKEwpcjwy
VUE9JgpMKzZIRUp4QEtHZTtXcjdXCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvRGlsaSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0RpbGkKaW5kZXggYzk0ZmE2MTBmOTUyOTgxYTg2NWFi
ZTRhOWQ5Y2JkYzI2OTQ2YWIzZi4uMzA5NDNiYmQwYTgyNTE0MDRjNDA3Y2RlODIyNDMyOTQwNzFi
YWYyMiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3NAp0Y21leSVfP1U1bXhGYGI+VTxJ
PDdmdFk4YWZ5bCh1JH5he2dYI2l6OHhvb3J6RWJWa0h4ZDN6QTNQSno/CgpkZWx0YSAxMTkKemNt
YUZOXz9Lfmx4RT9iRDB8Tit5MDI+ZzQqZ09xRFYkdzUtQmQyRT9lYyptJlArKW1AQ1BWJUl8Tmp7
I0l3KnFfCmgwbEBAdVMqJSlySyVeTmFfRz5WTGw9RE9RVHNHUFVtVWc8OVRtWjEmNj9neXUKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNp
YS9EdWJhaSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lh
L0R1YmFpCmluZGV4IGMxMmYzMWExNDFkYjdlNmUwMmY3Mjc0ZTExNGMxY2Q2YmUyZmYxZTYuLmZj
MGE1ODllMmIyMmFjZDlhNzZlNDAyZjBlN2VmM2M3YjA1NDcxNDggMTAwNjQ0CkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAxNjUKemNtV0hFJTFrcTJ6emRqd3ZMTVd7QFlCb3tfNWM2PlhKbGt4RnVu
b09XOHVLUzteUH5fcGx4OG41Skd9VUt0dWs2ClNPYXF5TCtlOXVLcHQqTHNDUl9saVAjYz43Cgps
aXRlcmFsIDE4Nwp6Y21XSEUlMWtxMnp5TTRANWZCQ2VXKmBRIUlVMGIoIWNRfC0pY15uZ3BNakIp
ZngtOSZQPXZ3NGZxfSl4SC10Z2sKanp5IW8pMnFENDlBN0M4fTNfdWhBZ056MW8yXmkwMTFHTENh
Kk10aUlQfT8wSAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9Bc2lhL0R1c2hhbmJlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0FzaWEvRHVzaGFuYmUKaW5kZXggNjdjNzcyYjRkOWQ3MTFkYmExNjZiODAy
YmZjNWUxZjY0YWUwMDRkYS4uODJkODViOGMxYjM4N2ZmYzU0YWNmNTA5YWM3NTIyMDQ2NWI2NGQ0
YyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3Nwp6Y21hRk1hLUw7XnhGYGI8YURXSVBr
T1gyN1RWU0Y9JUgtZFNpTVhVRTghP14kJCNaaHFYZDlUPz42JnJAMEpTUiUKQSVLIWlYCgpkZWx0
YSAxMDkKemNtWEBsQHxJPFN4RmlQeTB8Tit5ZkR7bWUqYThoZVZ4bXE4Qmc0Y0FpNy1pcWk2Nnlm
djh3KDdSMUVAP1dmQE9eClR3RnBBXjM9Q1gwKzZKYX14fjV6SkA1PkV2CgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvRmFtYWd1c3Rh
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvRmFtYWd1
c3RhCmluZGV4IDAyMWY4YTJkZDc4YTBhNDkzZjU4YWYyYWU0MTA3ZGZkZGI0ZjJkNDAuLjY1M2Ix
NDZhNjBlNWU1NjQxYTA3YmZjODJmOTU5MGRhZDFlZDY5ZjUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKZGVsdGEgNjMKemNtZXl4fEF2MnBHR2BxRjB8UHF7M3ZNKnshOHFCRk5uXjQtNlVYRjhyZDxl
YCVfX192bjMxSFdQcmshMDJMU21+CkI1QXB5MgoKZGVsdGEgNzkKemNtYUZFfEJIV3VHSCpRdDB8
UHF7M3BOMFdqWEZPVjg1dCVFdmEzeVlWQihyPSZPVXdlWWJJcXV4U0FoOEg2WEJBCkxvY1JNWWlv
JmVgeilLTVkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQXNpYS9HYXphIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0FzaWEvR2F6YQppbmRleCA2MGQwZGUwMGFkMjFjOGE3MjYwMDQ2ZGM0OWZkZmE5ZTA0
MDgzOGYxLi41OTJiNjMyNjA2NmRiY2JhM2FlNzcwNzYzZjAyNGRlN2ZlNzE4ZGQyIDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmRlbHRhIDY0OAp6Y21hTFVKNGpuJDc+RHUxZFB4PGZubjtSPHFGfGtw
WGlfWHYjMHhmS0J0PUtselRXUnErY2FvMlg2WUN1YXpkYU8KejJjPXk/SjdvfkozVXcpVCZpWENe
MyR+alU+RWR+VUlROShaX2lAaGpmNDt3c3NpdzVFLWVOeDB5diElRi07c017Cnp6c1Jlaj9WK35a
TTc0Ri1yVGdFYU16OGZLY3tyQCQha1dCSkprPlkzbHVFY3BDJD1MeCs0b0RRI3pRKllTdUhidAp6
ZXgwcWxrVTV0Xz1Tbnxoe0A9QU9vUFV3VWwza1dRQDUlRF9EX1BtZ1l2Zlo9UndGNTBgKjE0akJO
MlQmZUlXMD0KekEmdElGJG9tR3IjeWxUMl9RIzxjXjteMThedlVNJHVzKThUKmskWUlmTnAyNkI9
Tk9mY1ZiMEpYOFhsPldvdDlpCno2fEtlI1RiKiVNRj0mWGIhTn1NSygjfmMhLUVYQClIeTdkJCsq
VEpXYE9RKmZFd2IxK3VEbVF7dEE/eT48fERoMgp6P1p8JGwwbiEwIWYlSEl7QVlHNilOVDBIMUJj
djEzM2g5TU9xSCFQYDUpVFE4TF98VSZGX0VCMVIzdDFDN1lTVX0KempFc2FYWXNOLWBufExmbEh4
Q3hWQmtfPzdLclI5UWNNKHImMUEjRypLTSl1bGF8ZlMhZCVRaGUtUl97VCtkTXQqCkheM35ufiZ3
UzMpCgpkZWx0YSA2NDIKemNtYUxVSiFsaFEwRWg5KkJ+ZUhUam4pJEpxZ1defENhRnl8YmRZNHA2
Kj5lMmdPaURgbndZan5gKWJuP28zRXZJCnpYfX4waGc8PSojVHRxfU5idVZPKz07UzI0aXtLSitB
WFkmVD8+UVd0eW0wKlBCZ19BfSNfPUQ9bm5DeyZQMTg2egp6VENKJjA+cUY1Syt4ZSE8cjBZZmYq
YGsle058Q0tTa3ZCVUhDOSh5MXRGb2VRI34wK0M4Jl8zczspMlh5aUtfZj4KenpidT9OcCRlYWVh
YEQlcFRJIThoJVV7T0N5O2xTNHs9cytnVjdxVXZ5ITwzcUA0bUMtKjFtVytaKDVJWCYmQXNMCnpi
KnFASGl1S1g5K3o5V2ZqYlR4aXtBRT9AVXpkKnU4Rmd+PT9WSyNYUHBIYiVRP21NSVFxQFdedEcq
aS09MTJYVQp6KzBqb1EpbT5oR19JPClzZGNYfDA2TXg0dmdKPUpwKjAkJHlLbUw9VV9SJWY3TG9U
IURgUmM2Z3pWO2R9PUpKWmsKeiRaVFhmRzlPOFJXSSQzTklnbGlkYmB+VSFxbiFzeWdrKFplVlZ6
IUYmPHlFQHZfdHdLNFV2dldPUWF7IzZ6UGh6CnpiK3IyO2pVRGFJTk5ieWpNc0ZVXzlPO2c8TkJT
ZSpLPk9jRW5CcmZXPH0tfFJJQkZReih4S0ZCPFdlTHlKcmhkSgpLVCNRYGklSiZERlh+dGd3Cgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Fz
aWEvSGFyYmluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Fz
aWEvSGFyYmluCmluZGV4IGRiZDEzMmYyYjBiY2M4YmVhYjA4ZTA0YjE4Mjc1MTc5NWM4NTMxMjcu
LjNjMGJlZjIwNjEzZDIyZjM1N2Q2YmY0NmJhMDFkNmU5YmY0YWQxMTAgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCA1MzMKemNtYnUqemJed305TE1vKil6OExvdT9pa1Z3UyZiVjUrYkZR
TXA2czZGd35eZD9hYT5RTnRqcX14OXx0fTJQRCF9CnopMiY3SXpqKUhrI1BAd1dpTVkjaXVpPSpH
XlkpSiReO1AteG5ieUIpSihFXkhGR25Ab24pblBfLURoYyErXy1qRgp6bCtNUE0+KXV9MipQVGNB
d3dzbXJZU1o7TG9BTlBRNUJmNiQrdXNofD85K2puWXV2PnF5MXQqXnlOdDdFNGAhaW8KejUtKFAr
JStnZm88KDV4UFpjeXtgVi09SXs2dXFJO2tGVXNpUGo0Ym9vRWpEaHRjK0xwZUpQZG85UXh3X1Zi
R1U4CnooT1JqMTNgNTJ4Pk9mPjxxN0ZzSUI3PjM5JFoldmw1JigmU2doPHBGK0Ayc3Y2ZUo4MTJN
TDVrTFA4PDJrWUlAIwpRNEdFWHtwTGlLOXhVISE0MjNNRDt3ZzNQQwoKbGl0ZXJhbCA0MTQKemNt
YSkleSQlNkU2b3YwMUFzZG5LMFJHd0NoKDtrPVMmMHhUUTs4NF93aV8/NzxgRiFQQ3M7fn1ENz9m
KEJedklUCnpsN2NoMmApemgrQys4RT5WQVowcCNRNiZiJEAxVm10QHNobUVFUFErZEF3eFE9e0Q4
Kkx6QGMwUDhQJEJEaC15aAp6SlJob3g9Z1ZxO098eyVZKlBRez8/X0tSQzh8MG9WSSVhKD1xVjFM
TXJFcVUwaEBfJl9YZWBMQEBrfDZaSU8yRTcKejkzTHwhQUxiOUQ3Yms0ezkqRU0wVHBVRHM1Q1Mr
MzI/UWJfV0l6YWtrT0NuRkxKb2wtMnVWWDAxdER3NSF0fio1Ck0jcmBxMlMtI25eLTtwWDxUPnQ8
OAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9Bc2lhL0hlYnJvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9Bc2lhL0hlYnJvbgppbmRleCBhMmUxYjM2NGY5YjUwODE0NDY4YjViZjc2MjkwYmZlZWMyYmFj
MzdjLi5hZTgyZjliNTQ2NTdkZmU0MWJiZmU5MjFhNGMxMWFjOTRlMGY5MTVlIDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDY2NAp6Y21hKmtGLVRpYzZvQkV4bilubkhOZ3wye3V+NDBvbjUw
LWIqZ0RpS2YpYzQ/cWVxUn1ZTWFfTjRPVUlGSUkxV1kKejAtezJQN09HZSVXRHF3NlQ/RlQ+WEF1
PENPK2o0eHt2Z2kxNThpaXFaI3dAbXA1TEM4YGY3KUwrYFIwUVV3eUpzCno+cGswNlVyVkpuLWxu
eF8kKi0mWFk0aEI8bURfeCFpTmRyRFc/T1k9Vl5Ka2hwfkxlajlxQnlSKEttNVR3eip9agp6R3Bn
Z1JHbnclRmJtSF9fLXJuOGx5UTNZTUpvVT1kdVZzMEVjcjcyNnc+OTslQz84WGNJPSEkYnBaWmV6
SWtfJWgKekxVQiFaWFhSXjZSNVFVZiYwUDYocmd+MGlpVl52Q25iM3lXVTlaZllibUBIbFRDI3Mw
Pi1TN2lhYH41SGhPSEwhCnohZkc7Y3RHdUdqPkViYTVXaiFXcnh5QGd6WW8pJTkqJmIlUnp0PEhP
OXRFNiFyc1gjaUJVMi1qbzFPQkQhVmchIQp6bGlCJm17NzNfJjFKVk5OZml5dzdBWj9JN05GJF9F
TnhLISYzdSVVUSF5TklyNUQ8eG9naFhOQEw2TjlQU1JeaEkKejc+U0k4RUB7VWBmfHM8VEJqSWc9
NCZ2SnYyTWEpIWZHaCU4Mkw4YE5ueVheNWZuWVFpZHAhezdlSCFXcmIrbV5BCk55XiprZWQpNk1R
YFVnPnEmVV5wPgoKZGVsdGEgNjM0CnpjbVp3RVBpVF4xMExTckgrblA5SlU9RT53NnBTd0Urakw4
SWg8VlkwaGU0MmJZVzdxKl90IW1KRGxWczl2UCotdQp6SnJ6VkFCa0IrbHZjdjh7aFh+dUxRfUE0
WkVATGw1Vi1TcXE/QE5hY2QqJFd4PTxEVjhlYyQrJWU8U0VTWCY0NEsKem0pYWFeWis8UUgjMil8
QkQmY3pEZF5UZkViKT84UFRKbTsjVTVqaSUtZFFXXnlXPVQmQDc4c2xKQVlaYHVTSXFLCnokUmBW
RDFHP35pVShXbkYoNmdXVnQrXmtrI1FmXyRZdkpRPnZHfU5LNjw+VzVPVmJ9TGBFVy1wUGJoMDhf
ZnApeQp6UkpLWnF4K284OSR4OFR6dUkhZyYpbVBLaT9vR002SD5DcCktakIpSm0kK1ZnYSQ0NWtV
RFM8ZyV1KjNneXdDMEcKejwpZTFwRFclO1dfMVAydUgpMTFyPypCPG8/T0EqdUpZPUFLYnlfRHZG
MTZlOShePVdzPyM7TkUkcz92QmJDSm8mCnpZLUJuekE0en5AS3ZGb2BJZ2xpZGJgflRKa19TbklP
KihPKTcxOWY3aElCKlBBXm5oc05KcGU0KGkzVXdYbT5eMAp6SUAqMWEjeHx4d1hNVWhIKGk+QHhi
alJsTmFiZWllRlF8Oz8leUJQYWg8X1B8SDw/VV9xc2lvcmJaQnpLOTVyS0MKTkJCOUMxdXo4aH1f
YjstMSMxe1luCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FzaWEvSG9fQ2hpX01pbmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9Ib19DaGlfTWluaAppbmRleCA5MjY0MjY3OWM4ZjllNjhjMTI1
YThjNmZhNzQwZWJmNjFkZjgyNDE3Li5lMjkzNGUzNzFiNmQ1Y2Y4MDI0NGQ4ZDU1NTk0ZjcwOTRi
YzljYmI4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc2CnVjbVpvPXpSeHM0VCRCTGBa
fkB0REtyQX1aS3g0OGxxY2N3Rkl7X2VSUEEoZzUxOUxsRmIxbmMrO1IkQnwKCmRlbHRhIDExNQp6
Y21jYzUpWEY/VFQjfTd9ZmRQYTtmRSRRR1l8I2NGRjtQY0BrenJ6cEdZXm1yMk5UMyl2MTw0TVJX
YjIhMDljYksKUlRuQ1dCV3V0OWlabGBPYDFwdGVeM3JZWTAKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9Ib25nX0tvbmcgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9Ib25nX0tvbmcKaW5k
ZXggZGM5MDU4ZTRiNTc4Y2E4YzliYjk1NGFmMWJiZTI2YTk2NGVhZjQwOC4uMzc4YTM3ZjlmNzkz
NjUyZTgxOGU2NmI1MWI5Yjc3OTgwYmQ3NjQ2MSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0
YSA0NzgKemNtWjM9eHNyMiZjcD9LM3UhOUk3YTBPeHpUZCp9VmRCUTFRTHhXU2RDbVdwaEYwOG47
O05GREcrMURHY09wZSViCnopb0Z2cHdQTEZzKlg8bTQrfFY9SGFwUn11aiQzPnBKOHM+Uy1me2N3
dztnd097TX5XKT8yUjR3N0QtdiQtfWNwRgp6ViRCSSpNa1p6IU1rWkReQVlfOFYkJF5ZVVA3RG0k
VHApYEo4Vz5tQDgwc2M0YXhnSEljUjwoLXl2WDd7ejk5QEEKei1YSSh0IXIlcU9WOEY7WUxBKU5z
IXRsWD1BT1FJU00xeTwrcmgmY3ooSTZqelhwcFohR3t8UWw4c3N8PTRlfXZ+CnoyS2Y/MWdNMTMy
TEIwamtLcCVyPmtneHkkKjg/KHVVSXooKXlicSM1Sz4oc2IhMnFIYEs+P3ljIUxobFlYI3lqegpR
MFAmPGVLKThVUnEtKChpMEVaNjkqWj0/awoKZGVsdGEgNDUyCnpjbVozPHhzLUUpY3ElSWMwfE4r
eWZFeTVsKm4kbH1xQlMkPitzUmtxSjVKclFUNTtPRHFUIU5IUW8tZXs/R3slaQp6ZCMkK1l3ODcl
cXRlcT5hK2QxeUlwe0tJcSMhdCV+eEFAcHIrYDF7ZjxNIUpaRUFIKDB5V3tUSlEhRE4qbENycUoK
ekNSJEArI1IqbWhDUHBVYSQlJXxBbE8wJU9FZzJaSHhxeX4xKUo8U3lWUEdnfFZCaUY/OEYoUlZB
S3dyTDVBUj9RCno1eUlkRnEhRDAoY3MqN3B8OX5wXzQrSjJtZ0pfV1JLe1V0PEFSNlFpNURvR1Fo
ejVCRk0xI0JwcUN3c1EoSUJzWgp6WHByfG5He31vITh0QmRjfElQbVkybCo4dzBQLSkwMktnQzhn
WnZHbUw0RjYoQXBlN0NQI0EzUFd9M2k9OFZVfCUKTWhYTk5jVjAxMEcwUjB4bjAwMDAwCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEv
SG92ZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0hv
dmQKaW5kZXggZjM2N2E1NTBmZjlhZmZjMTQwYzExODA4MTkxN2VmZmFhMzFkMWYxMy4uNGNiODAw
YTkxODc5MDFhZmE5ODVmMWFlNjc1NjVkNjU0MDIxY2FiYyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApkZWx0YSA4OAp6Y21iUXF7K24lcnhGYGI+RmIxKyZmTExJbiE1SyF6TnNSaUZiczRwQnNvNlkq
YVJ3dD82KF5VQ3d0PX53dH5uT34KRDJePFVxCgpkZWx0YSAxMjkKemNtZXkoSGp7bVZ4RmliJDB8
Tit5ZkMmKFQqYThoZVZ4ckMmQ0ktZ0lqRXRJLTFzRkxkWWNYbmEwN2IhSWcxOVZKCmRaOWt5JG85
aHs4RnJzTXxndnYyKyo9UVM+K3YlRWYwUlkrJDQlaCR5CgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvSXJrdXRzayBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0lya3V0c2sKaW5kZXggODQx
MzYzNjZkMTc2Mjc5Y2FmNmI3YTU1YzBjYjFlMjcwYjQxZDMzNC4uNGRjYmJiN2VhMjFlMTkzY2Qy
ZTI1NzhhMTdiYzk1NWNhZWEyMjdhNCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1NQp6
Y21leXZkN0U+QkkzdlNHaVBNWXwjNj1sXmZDb2VYZmluPDsqZG0qaW5JeERkK3B3KFc8ZyhFPXUm
fnAkLX5zP0IKQ24rWl8+CgpkZWx0YSA5MAp6Y21jYzNgRzwzWUkzdiRTaVBNWmMzYGsmdHhHYWJk
NkxXI0dNU2VpbFowMldAVX05dkxZezlyJTZpRktjbXlOYzgKSmdgS1ZpN1hUJHEzVE9aVAoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lh
L0lzdGFuYnVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Fz
aWEvSXN0YW5idWwKaW5kZXggOWE1M2IzYTM5MDYzZTg2ODU5YjEyYWE3NTViNzhjZmIzOGEyNjcw
OS4uMTBkNGIyMWJmY2UxMmQwMjBmZGExYWY1MThkMWFhMDRhMmRlNjM4NSAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApkZWx0YSA2MQp6Y21ldythOT8xOEdHbyg1bHw3NztwRC1TcntHN2RRdkpTSHtY
QT1WaDEyKyYkWmNicCVWVi09MlozIWRlV0plfncKUSRySVEpQ1UwT2oxMWp0WDBFayk+QEJqYisK
CmRlbHRhIDkwCnpjbWNhRkBKKFFYR0dwXmJsfDc2c3R9fjF0T24kKDRrZGItdkxaKzMxRWVzM3sr
KDBiKDE0d3x0PTN3Uj1XezlmWQpqWSU3PTs3JC1ZMlgtI2ZtPWI0PCVXQ3FzTSM+cikpWkQ0R3RZ
cz5geipIOVJTCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FzaWEvSmFrYXJ0YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9Bc2lhL0pha2FydGEKaW5kZXggMzdiNGVkZGVkOGJjZDQ3MGYxYWZlYWIwMGFk
MTZiNmIxMDkwZWJkMy4uNWJhYTNhOGYyZWQyNGY2OGM0OWJkN2UzY2NkNDc3MmE4ZTczNDQxNCAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1NAp3Y21lQlJlI3xzTW9SdDl0Q2R4RVQ1RWxo
QXAjJXF6VyhRKTBpNFBubUQ+NFNMYkFAfDQ+NiZ1XjBPdDchUHloZWAKCmRlbHRhIDkyCnpjbWFG
TilXSk1Lb1J5dHtmcXtMWk9jTmlGTWdrTVdXeCtCfkF4PEMtO3ckYHMzUVJvWnp7b0pzQ3JBe15o
Zi1ZTwpKbz0mPnZUbWFWRzM3aH1gCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvSmF5YXB1cmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9KYXlhcHVyYQppbmRleCAzOWRkYzg0MzYzNzY4
YzZiNDA3ZGYxMDc3ZjY5YmE5ZGZjYTg0OTRjLi4zMDAyYzgyMDIyZjdlOWE0ZmYxYWQ1NDVlYTYx
NzEwNmExM2IyNGUwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjIxCnpjbVdIRSUx
a3Eyenpkanh2TWZMPnZgZyZaajArSnZLWVpEYEQxKHMrREJTITRxX0opU05WO19mMHwlSlI9aT9p
fgpucGx4Nlkhb34mKztockgzQXRZR3g5fCVBZWZvUENyQWV2K2d4cSFDblQ1PHNaPzcxK2wKCmxp
dGVyYWwgMjUxCnpjbVdIRSUxa3EyenlLXmo1ZkJDZTcrYV9UJGtgPSFhSz9wKm9nY256VTZqR1Yk
aSZSUihFSXxWc0JRdkNVRiFANgp6NGx0WH4kMld2UStyU2NwalNVI1dKd3JmPnojeFBLOC1HQ2N7
MDlQJSVeKF9OSkJUTFYxemJTcT12czBDMEY8MEUKQUh2ait0CgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvSmVydXNhbGVtIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvSmVydXNhbGVtCmlu
ZGV4IGRmNTExOTkzNWM1YjAxNjc2ZTYzZDFmYjFlZmQ3MjczYjhiNGI0NTIuLjQ0MGVmMDZiNWQ1
NWZiYThmMTQwNzE4NDc1N2UxNzg1YWVjMWZlOGUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVs
dGEgMTMxCnpjbWNhOV8oNT1qSTQ9VmRtXkBLc2opM3JzUlMhZklJM0d5O0VPe1deRUF3RkUwZHVD
dzB2cyVwRD55N0NoPklkQQp2WFA2QSt1bVEyPzxecENOTWo0UCFrVGdnKWh6Nk1lcUN1dT9wMX41
cEpvelBpS2dfN2ZkcFRxUGRKWjl2CgpkZWx0YSAxMzcKemNtZXckY3ZFbktJND5JbTB8Tit5Sz50
TFFJVTZzU0dmbjFadyZafmJMQzZXPnZkSFF0MDdYSDMoSH5Hbm4rdXFBCno3JnFAPkBuTDNVbXxW
ZnM0PkNYbERoSDt4SmNDMVlqWFlnS2JiTzhWTyFRM2pqbSZnPjRHcns2XiRmVEd1SEY/bgoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lh
L0thYnVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEv
S2FidWwKaW5kZXggODA0MjllYzQwODA0MGE0N2YwMmFkOGNlMzNmZDIwMzAxMzA3MWFjZi4uZDE5
YjliZDUxZDcwMWQ4YmZlN2IzZTk1YzlmNmYzYzczNmE5YWVlZSAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSA4Mgp6Y21hRkxjITY8KEk0YzdQT3E4Km9tPyo5Ylc8dj5QQVB2SE58QThSMFpQ
byUxZWN8VkkyYXRSe2tVZXBvRzlRPFgKUXd0PFBVZnR7fDJtOVlVQTBFdmtpMXBvajUKCmRlbHRh
IDk1CnpjbWNiPl8+XiZpX3sySm5pU2ptVjN9Njd9PlZjUm5LK0Z1cGRfTz11QW92ZGluUWdOY2Zh
blc5dVJET20+VmEmQQphaVN3MDNLcFh9SkUqb3RGNkpyQkFUQHghfjExPG14OHltdl8KCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9L
YW1jaGF0a2EgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNp
YS9LYW1jaGF0a2EKaW5kZXggZmFiMjdkZWZhZDBjYWNjMTExMGE1ZjUxMzY3MWRlZjg4NTgzZTBl
OS4uM2U4MGI0ZTA5Zjc5MmUzNzQyMmZmYWZlNDIzNTVhZWIzZTY5NDBlYiAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApkZWx0YSA4MAp6Y21aMy0qfmQ5U1QkQkxfSTYodnVJMDcrPEV3SXNtZz5mPUIl
TEg4Vm8wKnQ2bV9RMSt4Tk5peWpxRyN7amtvfUMKQzhWT0RTCgpkZWx0YSAxMTUKemNtZUM8VCpv
OzxUI31RNGZkUGE7enpLKiFZPUgoS3V+Q1BHayYkN3QwcGtSaUd5fXJ+YWFwWURlKm8ya3p+KG9N
Clg5ODNeUiFWblE0JHpgSyRYa0Ayclh2NzVvdlM8dD0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9LYXJhY2hpIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvS2FyYWNoaQppbmRleCBiN2Rj
YWFiOGYyMDY4YWRiZjY5Y2FlMGIxY2Q4MGY5OGU3YTJkYTEzLi5iYTY1YzBlOGQzMWNiMWQ1OTkz
NTg3OGFmMjliYWFjNzIyZjQ1OTM2IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDcyCnJj
bVozO3tGYFpseEZgYj47MENoVWZMTH4tZnpISE9BRHByO0JZPzgoVG1qeDh4fjV6SlBfcWdaCgpk
ZWx0YSAxMTMKemNtZXkodzIqbSV4RmowYDB8Tit5MDFwc0Aqcz17a1Z4bz0/Qmc0YzlBQ01wJU9j
MG1Gc15KR3ojbCNCe1VgQGhzCk85WTYrR2ZPbStsREhpfm5pM19GeAoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0thc2hnYXIgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9LYXNoZ2FyCmlu
ZGV4IGI0NGExZTE5ZTliMTIxMjU4NWU1NWJkNjViZTc3NjY1ZjRlY2Y2YjkuLmZhYTE0ZDkyZDU4
ZmE4ODNjNDIwMzAyMmUwOTFkYzkxNTRhYzkyZGMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAxNjUKemNtV0hFJTFrcTJ6emRqd3ZMTVd7O29xKjVgdjNwYEdjcXpUMWomSChnZHtNcWAx
cG59WGQ5UkBncGdubygyKU5pClMoP0RrNkhqJkUpWHMoXkU4NWFPPj5LZjRpCgpsaXRlcmFsIDE4
Nwp6Y21XSEUlMWtxMnp5TTRANWZCQ2VXKmBRIUlVMGIoaEpVK0s+aV9AJCYlbnNZenpgJEA2ayFO
U1V8e2pfNFBucVcKakZhdlFKTFAjKzMyVXJJSzFKSzAoQWZyS0MwPipSTTA0PWk5SFJBI1I1QXF5
UwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9Bc2lhL0thdGhtYW5kdSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9Bc2lhL0thdGhtYW5kdQppbmRleCAwY2JkMjk1MmJiNDgwZGQ0MDNiYzU2N2JkYzQxMmM1
ZDkyODEzYWYxLi5hNWQ1MTA3NTNmMDJkNWRlZGNmMWZmYWMxNTM1NTg0NjZkY2E5Yjk5IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU0CnpjbWFGSWMhaEMtX3szcm5VVigrNVlGcCRhM3w3
P3R8Tm5vWXR0d2NRUURFWDYyX1QxJCVTUE00KVdwPEkqVk18eQpHbG5WZXo5VEhSawoKbGl0ZXJh
bCAyMzgKemNtV0hFJTFrcTJ6eVFvWjVmQkNlNzlhKygxc1pfRiFjVm09YXVObkI+aV9AJCYlbnNV
I0s3U0gyUG4rbzh2Iy1tCnphRUYxKiQyV3ZRK3JaUz0wN1JPWWYrVD87Z2FtdGpLKHNJYnRAc2JK
NTV4dTgzOEcyMG0mKnExM09paj5ELSU7TApFMDVsJlo8cDJOeAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL0thdG1hbmR1IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvS2F0bWFuZHUKaW5k
ZXggMGNiZDI5NTJiYjQ4MGRkNDAzYmM1NjdiZGM0MTJjNWQ5MjgxM2FmMS4uYTVkNTEwNzUzZjAy
ZDVkZWRjZjFmZmFjMTUzNTU4NDY2ZGNhOWI5OSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0
YSA1NAp6Y21hRkljIWhDLV97M3JuVVYoKzVZRnAkYTN8Nz90fE5ub1l0dHdjUVFERVg2Ml9UMSQl
U1BNNClXcDxJKlZNfHkKR2xuVmV6OVRIUmsKCmxpdGVyYWwgMjM4CnpjbVdIRSUxa3EyenlRb1o1
ZkJDZTc5YSsoMXNaX0YhY1ZtPWF1Tm5CPmlfQCQmJW5zVSNLN1NIMlBuK284diMtbQp6YUVGMSok
Mld2UStyWlM9MDdST1lmK1Q/O2dhbXRqSyhzSWJ0QHNiSjU1eHU4MzhHMjBtJipxMTNPaWo+RC0l
O0wKRTA1bCZaPHAyTngKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9LaGFuZHlnYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9Bc2lhL0toYW5keWdhCmluZGV4IDkxODM2OTUzOWE1YjdkNTg3YmUz
ZWM4MjYwMTljN2JmYTBhMTNmMDkuLjcyYmVhNjRiYTgzNTQ2ZTcyZmY5ZDZhNGY5YTllNjRjYzJk
OTNiNDcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODEKemNtYlF3Xl9fRXF4RmBiPEBQ
WV4rWn48WnZUViRodzBPTXB3Iz82eCVuUSpBc1l8NW0tMVg5QXVXdXQ5aVh7VCQrCkYxcHV5JDNh
YkRCCgpkZWx0YSAxMjIKemNtZXkpSWlHOFN4Rmp6RjB8Tit5ZkdaRyMqZGglO1Z4eGAjQk99OVA4
XitCclhgbW53T2MwbUZzXjxxcG5xamp2ClhsTDhZJnFabXtPTFVHdz44KDctdVQ1PHNaOWUpZnQK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QXNpYS9Lb2xrYXRhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FzaWEvS29sa2F0YQppbmRleCBiNTc5NzJkZDhhYjU1Nzg1ZDhjYjIxYjkwYjUyNzdkOGZjODUw
ZmRjLi4wMDE0MDQ2ZDI5YTM4ZTliODAwNmY3NDZmZWE3OTRkN2Y3MWViNDc5IDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDk2CnpjbWRuTkc/IV9ESTRjN1BPcTROSHpYNCkreURfalpGISk5
PWE0O31MWEU1XmtfPVlnfTA8bVhzMiFwblBuWHYpRwpoMWFWUTJMS3Q4TkdDKmRDUDI2QkhAdWY4
djdmX3xIc2c8ei03WGJmajU2dTdvCgpkZWx0YSAxMjQKemNtYlFzdzFhN2FJNGNWUzB8VSFNOEFK
VUdLbjg9aTh2e19sSC1kcUtmZ3c3Qms7bFV+Z3V4ZXhKJWQ5U3Y8PUxSCng0TTIqKFYxbD9URTA2
KWdBT0tWa1d7ZHAqYX5UKldGMGYhXm4wVWlsMWorfGVUdEhLRk98NlUjeEJ6USg1WEp4aQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lh
L0tyYXNub3lhcnNrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FzaWEvS3Jhc25veWFyc2sKaW5kZXggZmFlYzM1ZDMwNDAzYjcwZmNjZmY2ZGU2YTUyM2FmODE0
NjcwMzZiOC4uMzBjNmYxNjUwNTJlZmE0ZmJjMTc2Y2JjZjE5YjYyNmIxNjE1ZDg4YiAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3OQp6Y21jYzN4dCgpQHhGYGI8YUR4YVNafnxmd1RWU0lC
MmpnVCojYChEOUg7WGR+Rm82X3NhQGxBYm5BXz1eYXsmTzcKQ3A5JmZQCgpkZWx0YSAxMTgKemNt
ZG5hZDdFPkJ4RmswTjB8Tit5ZkhNJC0qYThoZVZ4dFpSQk99OVBld08oI1hgbXAoMWFWb2NJKH5w
OGZuZjgwClhNZ2I7PkhXNyNqbkI9bjJIWlpyLUhSbDJWQEU7NmcKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9LdWFsYV9MdW1wdXIg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9LdWFsYV9M
dW1wdXIKaW5kZXggNWM5NWViY2RjMzc3MDg2YzhjNjQ2ZTI1MTU2OTc5MmZlMzYwMmM0ZC4uNjEy
YjAxZTcxY2Y4NzNiN2Y4YTgwZDI1ZDc5MDZkNzdhYTkxY2E1YyAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSA1NQp4Y21aMyV7R1Z4cEk0YzdQT3FBKUpBVEExS0xKM1lGJT5sIzs2V0BBRjQy
YjA5dmU3b011K3oyUjBzc1BRMkBlMU8KCmRlbHRhIDk4CnpjbWV5KncxUm5wSTRjSk8wfFVvSW5P
KkBQalJHYyElWXg7Z2Y/UGx2Izg+ek02X3xMe2dPT29rSyVedjs1MnZfbgpMdjwpb21iUz0wNUFz
LTRrCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FzaWEvS3VjaGluZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9Bc2lhL0t1Y2hpbmcKaW5kZXggNjJiNTM4OTIyOWFmNTIxNjY3MGI4OTk2NmEyZGRlYmU1
NjY5NTE1NC4uYzg2NzUwY2I3ZDUxMjk2NmIxYThiMTljYjQ0NTMxYTYxOGIwMDkzMCAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3NQp2Y21lQlZkQ1dYUFQkQkxgMm17JHtLckF1UXotTUJ1
S1E3dEhKZDg3ZCh3dG0yKzZFU094KXhqalZkZT9rCgpkZWx0YSAxMTcKemNtYUZOK3tyUlFUI303
fWZkUGE7S20+P0VZPjVVU0Y7VH5ka3pzTi1xZHlPajB8eWh0V3dHa2AwYVk+YV45K2JDClNRTWVX
JGdVZCRTemB7PH5mKHJvSnkkcUhCCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvS3V3YWl0IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvS3V3YWl0CmluZGV4IGU3MWJjNGU4MDJjYmRmZDlm
OTA1OTgwMjllMGZkYTA0YzQwNzRhYjMuLjJhZWEyNWY4YzIxMDM2OWUwYjgwNWQwZGQ1ZjBlODk5
MTkwYzIzNDAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNjUKemNtV0hFJTFrcTJ6
emRqd3ZMTVdIUm9aTXp7cn5efTg1dFFFdzlrT19YYztpRGAxcG59WGQ0KGFncGdubygyKU5pClMo
P0RrNkhqJkUpWHMoXkVGJjY7eHRRa0s1CgpsaXRlcmFsIDE4Nwp6Y21XSEUlMWtxMnp5TTRANWZC
Q2VXKmBRIUlVMGIoUmNXJj1fNWM2PlhKQk14VjktN1Q2aypVWlV8e2pfNFBucVcKakZhfmlNTFAj
KzMyVXJJSzFKSzAoQWZyS0MwPipSTTA0PWk5SFJie1VmMDchKAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL01hY2FvIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvTWFjYW8KaW5kZXggMmMy
MGEzMjY1MWQ5ZGExMGQxZDZmNjM0OTVjM2NmMWZkNTVjN2YxNi4uY2FjNjUwNjNkMGRiZjQ4ZTM3
YzU0N2ZiYTNiNjdmMzQxMTBkNWE5MCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEy
MjcKemNtZDdSUGU+RnwwTFNxKz8hUjAkTigjSWNNS0t8djE8YG0yT0AkQFc0MGEoWE8xKHNlKWUh
d1pFSlh4Q0JBeFVRCnpNSUN+JXM2JGFiQjBRRjRpRGxaZG5jNSRCKGJ7fk8rTiRPRHpDK3pTKVVB
MjJwVTEjbl9WP1kkJlc2M34ja14xOAp6X3VHKGBgO3YxRnlQNypnTV4pJGUpMWhheDU0Uyg+blhC
dSVlNypaK3tWQldXTUIwODtlb09Va3k9bkl5c1p5Xj8KeiF6eHgoc2JjOUZKRCU1VCQ3QjhXbzc0
bGxVJCl6Q3lHR1Qod1lWQyplQF9qYWQ4RlI4dzVzPHRZdClCaEMpTE5JCno5NXIwcVZrWmArUkk7
P3FOdjV+UmshMlUwa3l4UHwlXll3KCR2cFhhdSpPTlhqPiNfX2pwbz8jN2c5T2YlJiRBewp6JUpL
OFg9Q2B0TFlocXUlSWwyNmZINUhtTHpwc2l+PjgwVTxYPHdaK0otTU1eWDFMcyU5akpBRmJuVEhw
K2MhSU4Keng2NVNhJTFURXh1YUhMNj1WVHI5TzMmYDM8RT42ZVUmdzN2SCtyblY+VnozTXlVRUot
Y2JNNXpQcG58I2hNQ2pYCnpYNX5JXkc4YlBldkdOWiFJKSoxcEFIKGFMPU5TSUtLMEBxMiUrR0cw
N0c1RW10e014M2grWSlBZD5WYFh5eXNxMwp6OVQ2NGJoJHZpRkVERFFETGA3d1VGQUJwRGskPjFV
cWFTdWZ3c3FDfUF7ISQrQlU+WVRCYnlfO0Jpa2VVQk1sJU8KenhhdDs9OSRhLTNORWIqT05GUFdl
TkdDYHVOSDBoO05IPDczTkl5dEpOSnAtXkM4UUA7LTR4T2woaVlNZShpcVlpCnooaStrbShqM3dx
KGpMK3UoamR8eShqdzkkKHhqe0k1QHszWjZLTkZiNnh+KzImP31FXzdVJmpmN3dII2k4MGk+awpo
OFJeK29IO3JgZHNAcTJUTWpBJnRNX1J9S3RAb2gqQUZRPjR6V2BiYEpRQEgxCgpsaXRlcmFsIDc3
MQp6Y21jSk1LUCZATDlEdl9kVFVHVjEjSEpBdlVMO00jO15JJCZOLVdCdGk5fHZyTEAtbio3SE11
MDJAeEAxR0tuMDYKemZzJmh5bT9SZFhPXnU0OF57P0pucWxMbG1eNHxBeW1tQSpxZ0AmZGtuIzdO
PnQyWnBCS2BxVzZMdjNwYnBTWVg1Cnp3MzIzQHlkT05ZOXVeenJXQW5JP24pSiUyPkk0MGBDbmFD
Um1gSy1lQ29fJndKQFhXaHVReSUjK2paRHt6WmtKVAp6UENDdWN7U0dVO1JjbmZzOGNUfmdPazJj
bTxxaEFPX1RaNz5YeTElRntUb0pwVHxEV2tqRWUmMnhoIX0tKTdePFoKelMkTVVwZHJwXlMoZWFY
QXljM1puPnVzV1IhSXZ6WF4kRzd4WXFVSnZWcFF+M01NYSl3YGBzaE5edGAmMWhePWJzCnpoRVlT
ZnpXM2Y+TkNkam84Vks9T1Z9PEA7RCRRU052VDg1fXU/OF4qdT9Ifi11P1I1PHU/YUI+dT9qSEB2
NzRoWgp6NDZ6SWA0WTNVfDRzK0h5VjRoTC0wUjxveEFTRUMqQVZuWm1BWX53Ujd6Klg2RG5Vdj9Z
QyghWXN6SiZAPk08MEEKU1JBZVgjc1J7cURzOVdYcj4rVWFvVmV2KSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9NYWNhdSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL01hY2F1CmluZGV4
IDJjMjBhMzI2NTFkOWRhMTBkMWQ2ZjYzNDk1YzNjZjFmZDU1YzdmMTYuLmNhYzY1MDYzZDBkYmY0
OGUzN2M1NDdmYmEzYjY3ZjM0MTEwZDVhOTAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAxMjI3CnpjbWQ3UlBlPkZ8MExTcSs/IVIwJE4oI0ljTUtLfHYxPGBtMk9AJEBXNDBhKFhPMShz
ZSllIXdaRUpYeENCQXhVUQp6TUlDfiVzNiRhYkIwUUY0aURsWmRuYzUkQihie35PK04kT0R6Qyt6
UylVQTIycFUxI25fVj9ZJCZXNjN+I2teMTgKel91RyhgYDt2MUZ5UDcqZ01eKSRlKTFoYXg1NFMo
Pm5YQnUlZTcqWit7VkJXV01CMDg7ZW9PVWt5PW5JeXNaeV4/Cnohenh4KHNiYzlGSkQlNVQkN0I4
V283NGxsVSQpekN5R0dUKHdZVkMqZUBfamFkOEZSOHc1czx0WXQpQmhDKUxOSQp6OTVyMHFWa1pg
K1JJOz9xTnY1flJrITJVMGt5eFB8JV5ZdygkdnBYYXUqT05Yaj4jX19qcG8/IzdnOU9mJSYkQXsK
eiVKSzhYPUNgdExZaHF1JUlsMjZmSDVIbUx6cHNpfj44MFU8WDx3WitKLU1NXlgxTHMlOWpKQUZi
blRIcCtjIUlOCnp4NjVTYSUxVEV4dWFITDY9VlRyOU8zJmAzPEU+NmVVJnczdkgrcm5WPlZ6M015
VUVKLWNiTTV6UHBufCNoTUNqWAp6WDV+SV5HOGJQZXZHTlohSSkqMXBBSChhTD1OU0lLSzBAcTIl
K0dHMDdHNUVtdHtNeDNoK1kpQWQ+VmBYeXlzcTMKejlUNjRiaCR2aUZFRERRRExgN3dVRkFCcERr
JD4xVXFhU3Vmd3NxQ31BeyEkK0JVPllUQmJ5XztCaWtlVUJNbCVPCnp4YXQ7PTkkYS0zTkViKk9O
RlBXZU5HQ2B1TkgwaDtOSDw3M05JeXRKTkpwLV5DOFFAOy00eE9sKGlZTWUoaXFZaQp6KGkra20o
ajN3cShqTCt1KGpkfHkoanc5JCh4antJNUB7M1o2S05GYjZ4fisyJj99RV83VSZqZjd3SCNpODBp
PmsKaDhSXitvSDtyYGRzQHEyVE1qQSZ0TV9SfUt0QG9oKkFGUT40eldgYmBKUUBIMQoKbGl0ZXJh
bCA3NzEKemNtY0pNS1AmQEw5RHZfZFRVR1YxI0hKQXZVTDtNIzteSSQmTi1XQnRpOXx2ckxALW4q
N0hNdTAyQHhAMUdLbjA2CnpmcyZoeW0/UmRYT151NDheez9KbnFsTGxtXjR8QXltbUEqcWdAJmRr
biM3Tj50MlpwQktgcVc2THYzcGJwU1lYNQp6dzMyM0B5ZE9OWTl1XnpyV0FuST9uKUolMj5JNDBg
Q25hQ1JtYEstZUNvXyZ3SkBYV2h1UXklIytqWkR7elprSlQKelBDQ3Vje1NHVTtSY25mczhjVH5n
T2syY208cWhBT19UWjc+WHkxJUZ7VG9KcFR8RFdrakVlJjJ4aCF9LSk3XjxaCnpTJE1VcGRycF5T
KGVhWEF5YzNabj51c1dSIUl2elheJEc3eFlxVUp2VnBRfjNNTWEpd2Bgc2hOXnRgJjFoXj1icwp6
aEVZU2Z6VzNmPk5DZGpvOFZLPU9WfTxAO0QkUVNOdlQ4NX11PzheKnU/SH4tdT9SNTx1P2FCPnU/
akhAdjc0aFoKejQ2eklgNFkzVXw0cytIeVY0aEwtMFI8b3hBU0VDKkFWblptQVl+d1I3eipYNkRu
VXY/WUMoIVlzekomQD5NPDBBClNSQWVYI3NSe3FEczlXWHI+K1Vhb1ZldikpCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvTWFnYWRh
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL01hZ2Fk
YW4KaW5kZXggMmRiMDYzNTYwYzQ4YzY3ZjAyODAyMTJhMzIwYjE4M2Q0OWQ4Y2ZmZC4uYjRmY2Fj
MThlMzU0MGYwMjlmMDFiYmYyNzUxMDQ1YjM5ODNkOTZmYSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApkZWx0YSA4MAp6Y21hRkdkNW0qe3hGYGI8YUR4YVNhMFglIVRWU0lCNTk0SDgjcyM/S0hfST9k
Rm82X3Nhb0sxYThydGFeOGdjO3UKRHNidmEkCgpkZWx0YSAxMTkKemNtWEBjYEhGTGJ4RmswTjB8
Tit5ZkN+X1YqYThoZVZ4dFpaQk99OVA4SX1id1hgbXAoMWFWb2NJKH5wOGZuWU5XCllsTFFrKW48
enZDT21mKzE4eWVjXzhYOXJ8MFEyWXoqWj0/awoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL01ha2Fzc2FyIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvTWFrYXNzYXIKaW5kZXggM2E1ZGNi
MjcwMDdlMWEyZmZhNjdiYmYzYTMwMDk1MzAzYjVkNjdhMi4uNTU2YmE4NjY5MzNkMzdmM2NmY2Y4
MDQyMDQ1ZDY0ZTIwOWJhZTMwZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA4Nwp6Y21a
MyRecEEwWnhHRG5AVTsobU9mbW4zbXJgUVIqI0k4O18tNjdqPkRlUFVyTGBVPDlQMiE/Uk4qVW00
Q3ZIOyEKUE5eQHw5ZHhramJUNXRnWEhTWkViCgpkZWx0YSAxMjIKemNtZXl6eFBXUGJ4RTNufDB8
Tit5MEV7aSMwT1R6RTZneSM7KndxUUFKN2dPIWd9cDBhbjdINFozIzFBSENXeTx6CmdsIUY5ZFl8
JFQzYEhBeHQ3KHJUdXBuTT8zNzQ4fTBzQjZJbTBCJGBMUlI5MTAKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9NYW5pbGEgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9NYW5pbGEKaW5kZXgg
MDY4NTlhNzBkOWI2YTdhMTBhYmU4NWIzODc3NWI5NzMxOTQwOTYwOC4uZjRmNGIwNGVmYTJiNmE0
NDJkNDA3MmIzODk5ZjRkYWU2OWJkZDc3MSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAx
NTkKemNtYUZRYmJASnV4RmBiPi1+X1QrZm1tUm9qKjF4KkJOSDxhR2N4YEVGYUg2Z3NCUXV5M2o7
JHowfE4oJCZBPGE7CnpgfWxAMTFoQGNrYTByN31hTEJ9bzUtM0o7MFg0RkxqWFZ+PiQ7aXlhJW1U
enJsUWtMVDxnZ3BTenkmbCgqTWJXRwpEanxDWTcKCmRlbHRhIDE5OAp6Y21YQFhecXkmZ3hGezxG
MHxOK3kwMmRJMCpnTys7UkdqTW58TnFhIyRpeGk5ajcmQG40MjE8Q0MzTz1SU3JgfSEKejhXPWMw
WXo4UlgkMld2UStyU2N0RWtLSChWMWw/VDg7fVhZQWl4OH1BVTRrcjVEeTNAWlZuSXooSUFAYDdA
Myl2CmFTJTg+e2NgXl45b0NhUWxmaUFUSFQ0a3FlITM2KmxeJjBtOAoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL011c2NhdCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL011c2NhdAppbmRl
eCBjMTJmMzFhMTQxZGI3ZTZlMDJmNzI3NGUxMTRjMWNkNmJlMmZmMWU2Li5mYzBhNTg5ZTJiMjJh
Y2Q5YTc2ZTQwMmYwZTdlZjNjN2IwNTQ3MTQ4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMTY1CnpjbVdIRSUxa3Eyenpkand2TE1Xe0BZQm97XzVjNj5YSmxreEZ1bm9PVzh1S1M7XlB+
X3BseDhuNUpHfVVLdHVrNgpTT2FxeUwrZTl1S3B0KkxzQ1JfbGlQI2M+NwoKbGl0ZXJhbCAxODcK
emNtV0hFJTFrcTJ6eU00QDVmQkNlVypgUSFJVTBiKCFjUXwtKWNebmdwTWpCKWZ4LTkmUD12dzRm
cX0peEgtdGdrCmp6eSFvKTJxRDQ5QTdDOH0zX3VoQWdOejFvMl5pMDExR0xDYSpNdGlJUH0/MEgK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QXNpYS9OaWNvc2lhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0FzaWEvTmljb3NpYQppbmRleCAzZTY2M2IyMTUzMjdkODg5OWE0YjNmYmU0NjIzZjA2NjYzMGI5
N2IyLi5mN2YxMGFiNzY2NWU5NGNhNDRmZDhjZDk4YTM2MmNkNGIzMDRlZmYxIDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDYzCnpjbWFGQmV+RXZCR0d7I2wwfFA0JV5LTFp3ISNMVEhOb1RT
R0pJaUR7X0xqKkhuVUd7UmkhJVJVTXZgNngwUCVlZgpBRCp5bGgKCmRlbHRhIDYxCnpjbWNiX3xB
MnBqR0goTHwwfFA0JWdCY3Jqe3hDOCFPayY/TWAze3FeQVlBR1BQI3kjfWIxP3M0MkZZSW4wSCQq
ZApBOXs+T1YKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQXNpYS9Ob3Zva3V6bmV0c2sgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9Ob3Zva3V6bmV0c2sKaW5kZXggZWQ0YjI0ODI3NmRiYWJkNmI5
NDI0YmQ1ZjcyNTI3Mjk0MTk1NzBmMC4uZDk4MzI3NjExOWM5NTg3Mjg4MjU4OWE5ZmRkODI5ZWIx
Zjg2ZjYwNiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3OQp6Y21aMz4qfj5YV1QkQkxf
STYodnVJMDcrPEV3SXNtZz5mPUIlTEg4Vm8wKnQ2bV9RMFJ4b29yeiU8WGl8eGQzSnoKQjJfcGFp
CgpkZWx0YSAxMTQKemNtZUM+VCsyQkBUI31RNGZkUGE7enpLKiFZPUgoS3V+Q1BHayYkN3QwcGtS
aUd5fXJ+YWFwWURlKm8ya3p+KG9NClc5ODNeUkxKJCFrJHpgSyRVflo+dCZJSklhTSteNz4KCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNp
YS9Ob3Zvc2liaXJzayBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9Bc2lhL05vdm9zaWJpcnNrCmluZGV4IGE1ZDM5ZGZmYzExMDcwMGYzZjQyM2I3ZGRkMmY1MjVk
YzA5YjUwYmMuLmUwZWU1ZmNlYTk4MTAxMDAwOGI3YjlkYzNhZjFjZGQ1MzM2MzEyOGMgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzkKemNtYUZQZDZhWDR4RmBiPGFEZk9RWn48WnZUVlNK
czBPTXB3IyN5LUpIJWxAcEZvNl9zYUBsQWJuQV89XmF7Jk9JCkNAKE5TewoKZGVsdGEgMTE2Cnpj
bVhAZ2BKOGl0eEZpPD8wfE4reWZHWkcjKmE4aGVWeHhgI0JPfTlQOF4mMk1YYHRXKWFhcFZ5ZWdO
ZV9VXjVldwpXMHV3fStGaG00SWFAbEFibkFfPV5heyZPfnJWSE55CgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvT21zayBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL09tc2sKaW5kZXggNWUw
ZDliNjdhM2VlOWJmNDQ0MzU5YjAwNmIyZGE2ODc2MDRlZjE5MC4uYjI5Yjc2OTMxMThmYjFlZDIx
NGFkYjhhNGU2ODYxNzJkMDkxNGIyZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3OQp6
Y21jYzN4dCgpQHhGYGI8YUR4YVNafnxmd1RWU0lCMmpnVCojYChEOUg7WGR+Rm82X3NhQGxBYm5B
eiE/YVJDNjUKQ208a3ZHCgpkZWx0YSAxMTgKemNtZG5hZDdFPkJ4RmswTjB8Tit5ZkhNJC0qYTho
ZVZ4dFpSQk99OVBld08oI1hgbXAoMWFWb2NJKH5wOGZuZjgwClhNZ2I7PkhXNyNqbkI9bjJIWlpm
KEhSQSNSQEU4blgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQXNpYS9PcmFsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FzaWEvT3JhbAppbmRleCBiOGViNThkMTM1ZjYyMDU0ODY4NDczOTE0OTk0ZDI0
MmUxYjhiZTA3Li5hZDFmOWNhMWNhMzIxZjY4NTJkMWQ2NTRkMWZiMGIxNGM1NTYzMzBmIDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDcwCnpjbWVDQGMqe09QZURXR2I0cWdUekZhY3NOQVFx
V3VhQTdoZFY7P3JEJjFWQEdGb0dtR3hvb3J6T3ptX3t4ZDhwRQpCNFhPWUQKCmRlbHRhIDExMwp6
Y21hRk0tcD9eWFQjfTF7ZmRQYTt6IVpvPFk+QF5hRjtWOU5CZzRjJGVLMUwmJjspVD10amQxPzx2
P0tiSHBUXnYKVVVgQGdoMFQ5ViRxaXRZbnIpJGF1MDdZZEUhdkZ2UAoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1Bobm9tX1Blbmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9QaG5vbV9Q
ZW5oCmluZGV4IDhkYjVlOGE2MWVlOWU2MzE2NGNlN2YwNzk2OTU1N2ZhZmE5ODJkZGUuLmMyOTJh
YzViNWY0ODlhODhiZjEwYTEyNjNiMTRlNzQxMjQ3OWQ5ZTcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKZGVsdGEgNzYKemNtY2JeYyR7JjlJNGM3UE9xOCptQWcmOCRMSjRMZDRaPU1DZmdvJks+ayR5
V0NAY0w0TldMRChwMTRNbGxnbWNpCkt6fSF5UG9DXlRwdHJyYWQKCmRlbHRhIDkwCnpjbVhAa2Mh
ek88X3sxOEhpU2t4IzN9Njd9PlZjUm5LK0Z1cEpVPjdAQW92ZGlWY1N9ZGZhcGI4PXxAMGZeKn1i
bQpWI0pQKDZBUHhmcW15TmM4eHQqPiM3WFdDdjhZdXQoCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvUG9udGlhbmFrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvUG9udGlhbmFrCmluZGV4
IGVjOThjNjJiYWI4NmJjM2FmYmU1OGNhZWYwOTQ3MzQwMjI2MDBjODIuLjEyY2UyNGNiZWFlNDA0
ZWZlNjkyMTA4MWQyMTI4OWJlNDUyZmY4OGQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
NzIKcmNtZUJYZSNrVUlUJEJMYFp+KW90S3JCRGVLdylCRkFXcXBRNG5TRlV1NWVFJFUyYHF+SzNX
TioKCmRlbHRhIDExNwp6Y21hRkopWGg5V1QjfXVFZmRQYTtmRD8jOFoyMU50RjtQYz5renR9d0FS
bXk4MVNXe2ZWJTcya3MlR0x6MmUzOSMKUEJ0MVlUU0djRT50fm5Pfm9OKV59CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvUHlvbmd5
YW5nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvUHlv
bmd5YW5nCmluZGV4IGRjMjQ5MjZlODBmMjRiNTY0NjY5YjU5Nzk3MzZhMTkxMTE0YTk5OGQuLjdh
ZDdlMGIyY2Y4ZmE0ZmM4NDRmZThjYzljNThlNGYzMDE4Y2VhZDEgMTAwNjQ0CkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAyMzcKemNtV0hFJTFrcTJ6emJNYHZNZk4lKHwhSHBvSnI1YmVxN1F8RUNA
WnZSMW8jMXcxQU9gblVSQCtxNFd2SmkxSDRRCnohbnozejlBSntnJDJXdypKMi1eRjN5NEVWdTtA
UCFmR2gqaUFQWWU+JFdvOVVBZDVqWE50U1p+VTc+NXExcHB0NApCSE0wTiEKCmxpdGVyYWwgMjY3
CnpjbVdIRSUxa3EyenlLXmo1ZkJDZUhYc0pFY15aSTNfd3xvK0NPczRUYVk7WTFBb0x0bExEWlg/
M0k7fGRXPTNXUAp6aFNEY00xcXxnS0FrfXBmNyZ5UXJpO3ImemdMaU5VZ0JLOVBLbk14OHsoeCV3
NCtKM0ZLe1V0KEFSNlFma1RsMzgKUEFldWJhWn4+akNZc20hd003MXx0CgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvUWF0YXIgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9RYXRhcgppbmRl
eCBhMGM1ZjY2OTYyOGQ4ZWNkNjFjMzk4YmM0NzVjZjI0MDVkMjAwMDBiLi42MzE4OGIyNjlkMDc3
ZTI5ZjQ4YTQyYTAzYzJhNTJhZWZkYjYxMzIwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMTk5CnpjbVdIRSUxa3Eyenpkanh2TE1XfUBZN3JhbWFhKCQ+aV9AJCYmYjVZeitleW4ockRx
cHp7MD93V3gmQVU7flQ9RAprWkQwYiMjdGIxTzd6e007S2dlKjlYJj8oZ0cqT210KiNORHcoPjNN
LTAyO2Q9TyNsREAKCmxpdGVyYWwgMjI1CnpjbVdIRSUxa3EyenlRb1o1ZkJDZTc5YSsoY15aSmsh
Y1RKelNoXi0xc1E+QH1LTGFCWjY5YT1tMDhwNjAhVTNkQwp5JVljRXkkMld2UStyUntmalhAR1g1
Skd8LUtPa0JkZlg0cF4qIytXKT47dXVIKnZWeEJ3Qkp0R208c0BHcWFmMSYKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9Rb3N0YW5h
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1Fvc3Rh
bmF5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjczYjlkOTYzZWZjOTlmN2FmMTk2NzU1YTZiMmJlMDE1ZDljYjdhNjcK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEwMTEKemNtZDdRUGVfdy05TE1xQj1BWlYqTGxeVlVH
QHE8fCljTFBEJEo5QzNXcTQ1ZEFfRX5OPnxqRkJOZlpTSUF3fnBzCnp0NWJCNGxuJjhoTFkqcWAm
QHQkSEBGdj5ETzlVUk9pYGJhSV9oV30weF4heX4raVFFQ0BpNnhPPG5HKkNqRzRiYQp6IWhnPWp0
LVFiZHk1JiorLUY3K0M9c3FyOFkySV8xMD1ySnI+Q2RnXlokQztjMmQ+bGxkOUBWelB9SF9KRTg2
fkkKelFMakZrKH5nWlBiPyVTcXdTMkYzUERrezVzekdsPSVYJXwlcUZ2I3k+ZWh3RHtxPFlBa0l4
RHtZdWttTXtVaG85CnpeaEtnP19vUSFVU05mbTVsITQrPzhDKSpQKDg3d2BuJX5tYyh6Kl4kSmth
Pjt5cEZVbFhkKlZMaUU+dHhrLVFgaQp6eUxJI3xFbl49O0kpMzB0PlhqPUtAQk5afjc/akU5JENB
MUdVMlllUlpkTks0cFRETkkjJjNfaGBse25ucHoxXlEKejFeWWYyRy1pQjx8MFM2KndaPiR7MWRQ
Y1FkPTAhQmAmeFlfRD9XU207K3EjJmBSNFJZJlAwZGVfQm1wbzMydFZMCnomd0okbEElXnxeNkBu
bTl4Qz4jQkk3bEUqOHdtLTgjNnA1MChVNVJSSlJ+M3o1ZWJSSk0xbXF3ays0V3lCcnA9JAp6KH1x
VDNCZiZqd2JSO3x5OX5sNUwwJVFvdDc/NDNBcWQ8bSVpfnxgNkc3QEFjb15+d0FVXzkrO2tsYFRY
Sz9hMTMKZDJwSk1HQ1Mqe15zRX1kZHJmdUB5alZxTTBZZkpZaExnKGZMK3o5e3gKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9Bc2lhL1F5enlsb3JkYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9Bc2lhL1F5enlsb3JkYQppbmRleCAwZmM3ZmFkYTY5OTA4MWMxMmU2
NTMwMWI3ZGFhMjQwYWI1MzBhYjc5Li5jMmZlNGMxNDRjODJiMzAwZmYxMjZlZDQ0MDk4ZWUyYmY4
ZDc1MmQzIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDIyNwp6Y21iUXYoYTE0RFQkQkxf
eElxTEVtO3kwfkVpbHBHM2BkT2dqUnAxcHxObyFOJFNBP2NGP2t9aEBaPCV8RVVjXy0Kejk4NjQ7
bW9YYkBoYUBvWUZmZkU5RmFrLXAwMHNecC13KzBFMH1+KU4xITZPaGZlWnxjQWkjampwM041LT1Q
PmVzCldZeXpwcFhQWEhMd3NGfTJvbldWSCReYCZHbjxsdmMKCmRlbHRhIDE5OAp6Y21acVZuOWVh
bFQjfW9DZmRQYTt6IVpvPFk9SChLRjtWOVhZeUpRS3t+MERSTi0lT3haZSRpYFZQKWd3b0lJUF4K
ek5XajhAZnJXdH5CIVBoa0xeQVNCelJON2QlP1EqNDEoUFEtTzJ9ZTBgM0Y/Uj02I0hGNylkZjs2
dj0hQkUqb3RGCkpHZG89fkUmIXlVQUlBVXkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9SYW5nb29uIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvUmFuZ29vbgppbmRleCAzY2MyYWFmYWM0
ZTI3YmNiYjJkZTRiMDhjNjQ1MWMxYTU2NDUyODA4Li5kZDc3Mzk1YjA1YTg5Yjg3NTY4M2Y4YWE4
MjA2Mjc0OGYyZWQ1MDRjIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDYwCnpjbVozPClX
YkFFb1J0OXRDZHghazVFbGhBcCMoQEFnb1AkPCl8bHZFJUV4NytaRDN8PlY1ZShsV28qQyYwMGFP
QwpBI3NCflMKCmRlbHRhIDkxCnpjbWVCU1RGRXApb1J5VjxmcWB8Uk9lN2JPaEpwIz12UzNqdG1r
bWdSXyhESVIwdXZXJUZmdlNaRnFNR3ZmZlNkRwpRd3Q8PGtmdHt8SW05WVVBMEs4Qk0tVChqcQoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
c2lhL1JpeWFkaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
c2lhL1JpeWFkaAppbmRleCBlNzFiYzRlODAyY2JkZmQ5ZjkwNTk4MDI5ZTBmZGEwNGM0MDc0YWIz
Li4yYWVhMjVmOGMyMTAzNjllMGI4MDVkMGRkNWYwZTg5OTE5MGMyMzQwIDEwMDY0NApHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMTY1CnpjbVdIRSUxa3Eyenpkand2TE1XSFJvWk16e3J+Xn04NXRR
RXc5a09fWGM7aURgMXBufVhkNChhZ3Bnbm8oMilOaQpTKD9EazZIaiZFKVhzKF5FRiY2O3h0UWtL
NQoKbGl0ZXJhbCAxODcKemNtV0hFJTFrcTJ6eU00QDVmQkNlVypgUSFJVTBiKFJjVyY9XzVjNj5Y
SkJNeFY5LTdUNmsqVVpVfHtqXzRQbnFXCmpGYX5pTUxQIyszMlVySUsxSkswKEFmcktDMD4qUk0w
ND1pOUhSYntVZjA3ISgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9TYWlnb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9TYWlnb24KaW5kZXggOTI2NDI2NzljOGY5ZTY4YzEyNWE4YzZm
YTc0MGViZjYxZGY4MjQxNy4uZTI5MzRlMzcxYjZkNWNmODAyNDRkOGQ1NTU5NGY3MDk0YmM5Y2Ji
OCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3Ngp1Y21abz16UnhzNFQkQkxgWn5AdERL
ckF9Wkt4NDhscWNjd0ZJe19lUlBBKGc1MTlMbEZiMW5jKztSJEJ8CgpkZWx0YSAxMTUKemNtY2M1
KVhGP1RUI303fWZkUGE7ZkUkUUdZfCNjRkY7UGNAa3pyenBHWV5tcjJOVDMpdjE8NE1SV2IyITA5
Y2JLClJUbkNXQld1dDlpWmxgT2AxcHRlXjNyWVkwCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvU2FraGFsaW4gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9TYWtoYWxpbgppbmRleCA4ZDZi
NGRmZTIxNzIwZWIzMmFiZDE3ZmNkNjI3ZWU5NTY3ZjkzODM2Li40ODU0NTljZTAzOTc3ODdhMDk5
MDY0OTUyYzY2OTg5NzEyYWU3MDdmIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDcyCnpj
bWNiX3hydVh2X35pR0Q5Sn54YjswKGxeS3JGSitmUU5DaUUjb3c3YSs/TDFCJHo7d1R3RkhWaEs2
PiFoSzVgSwpENDtCcTEKCmRlbHRhIDExNQp6Y21kblFkNUxwXnhGamI3MHxOK3lmQ35fVipkaCU7
Vnh0WlpCT305UDMmdj9NWCRGUH47PDh4UHt7WDU3Zno3YGQKWEM3MitaZ2RyazhsRkxUaCg5bGxU
KDJ4ck47TFolVQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9Bc2lhL1NhbWFya2FuZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9Bc2lhL1NhbWFya2FuZAppbmRleCAxMGM3YWY3ZmVkOGIxMTE4YWViNTAy
Mjk2OTc2NTUwNTVhMDJkNWQ1Li4wMzBkNDdjZTA3ODVmM2JkYjc1MzE0ZTBkMDNmYjIwYzNlMDE3
MmQ1IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDg5CnpjbWFGT2EqJDwkXysmbXQ0cWdU
emtPWDNPQVFxVHRraWImXnxOczk8T2NJUSZsY2tzKHVfPkNZJnYqbj82KF5VQwpMd3Q9YWd0fD1E
KVVxS1RfCgpkZWx0YSAxMzgKemNtWEBlQHx0Q1d4RmtDUjB8Tit5ZkhWKzsqYThoZVZ4bXEwcilJ
KUZnWmxzZnwxKFVTQWk+MU1HO3lVUE96OHgxCmxTKiR2TDBDakBFV0hIN2d5ZGRvJDR5cTlYQVIh
PiZ2ZTdtJHdiTTFfMHN4TDw3e2RTbgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1Nlb3VsIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvU2VvdWwKaW5kZXggMzEyZWM0MGExMTJkNWFiNTRl
YTJkOTJkNzM1NzM1YmU0YjI3YTQ0ZC4uNzMxODJjZjZjOTE5MTQyYzY1YzAzNTNkNjBlYWM4MzQw
NjlkOTM1NiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3NQp1Y21iUXRAfEptbXhGYGI+
MENDdVdTWVY8LSRtSCNlcDE3blpeRChYZiQrTDVMMlohaWRhc2RFdGF0Y3JZCgpkZWx0YSAxMTMK
emNtYUZNSmVnJkp4RmowYDB8Tit5ZkVXO2kqYThoZVZ4bXE2Qmc0YzdQYVlyfTRrbjFwViU2e2lz
JCR+VDY8fCVtClBhMi1HZm12P1o4dHxiPSR3YkJmOQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1NoYW5naGFpIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvU2hhbmdoYWkKaW5kZXggZGJk
MTMyZjJiMGJjYzhiZWFiMDhlMDRiMTgyNzUxNzk1Yzg1MzEyNy4uM2MwYmVmMjA2MTNkMjJmMzU3
ZDZiZjQ2YmEwMWQ2ZTliZjRhZDExMCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDUz
Mwp6Y21idSp6Yl53fTlMTW8qKXo4TG91P2lrVndTJmJWNStiRlFNcDZzNkZ3fl5kP2FhPlFOdGpx
fXg5fHR9MlBEIX0KeikyJjdJemopSGsjUEB3V2lNWSNpdWk9KkdeWSlKJF47UC14bmJ5QilKKEVe
SEZHbkBvbiluUF8tRGhjIStfLWpGCnpsK01QTT4pdX0yKlBUY0F3d3NtcllTWjtMb0FOUFE1QmY2
JCt1c2h8Pzkram5ZdXY+cXkxdCpeeU50N0U0YCFpbwp6NS0oUCslK2dmbzwoNXhQWmN5e2BWLT1J
ezZ1cUk7a0ZVc2lQajRib29FakRodGMrTHBlSlBkbzlReHdfVmJHVTgKeihPUmoxM2A1Mng+T2Y+
PHE3RnNJQjc+MzkkWiV2bDUmKCZTZ2g8cEYrQDJzdjZlSjgxMk1MNWtMUDg8MmtZSUAjClE0R0VY
e3BMaUs5eFUhITQyM01EO3dnM1BDCgpsaXRlcmFsIDQxNAp6Y21hKSV5JCU2RTZvdjAxQXNkbksw
Ukd3Q2goO2s9UyYweFRROzg0X3dpXz83PGBGIVBDczt+fUQ3P2YoQl52SVQKemw3Y2gyYCl6aCtD
KzhFPlZBWjBwI1E2JmIkQDFWbXRAc2htRUVQUStkQXd4UT17RDgqTHpAYzBQOFAkQkRoLXloCnpK
UmhveD1nVnE7T3x7JVkqUFF7Pz9fS1JDOHwwb1ZJJWEoPXFWMUxNckVxVTBoQF8mX1hlYExAQGt8
NlpJTzJFNwp6OTNMfCFBTGI5RDdiazR7OSpFTTBUcFVEczVDUyszMj9RYl9XSXpha2tPQ25GTEpv
bC0ydVZYMDF0RHc1IXR+KjUKTSNyYHEyUy0jbl4tO3BYPFQ+dDw4CgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvU2luZ2Fwb3JlIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvU2luZ2Fwb3Jl
CmluZGV4IDc4NTgzNjY2Njk4YTAzMzJiODIyYzBjZDE1ZGFhNThhYmY2MGViMjcuLjIzNjRiMjE3
OGIwMzg1M2IxNzcxY2IzZjM0Yjk2NGZkYjgyZTJlOTEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
ZGVsdGEgNTUKeGNtWjMle0dWeHBJNGM3UE9xQSlKQVRBMUtMSjNZRiU+bCM7NldAQUY0MmIwOXZl
N29NdSt6MlIwc3NQUTJAZTFPCgpkZWx0YSA5OAp6Y21leSp3MVJucEk0Y0pPMHxVb0luTypAUGpS
R2MhJVl4O2dmP1BsdiM4PnpNNl98THtnT09va0slXnY7NTJ2X24KTHY8KW9tYlM9MDVBcy00awoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
c2lhL1NyZWRuZWtvbHltc2sgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQXNpYS9TcmVkbmVrb2x5bXNrCmluZGV4IDE2YjFjZDhmOTc1N2Q4NDVhNzk2NmFlODM1
NDM3NTBiZGZjNzllNjMuLjI2MWE5ODMyYjNlZTRiZGE3Yzk5MzViNTY2YTdmN2YwZTY0ODllOTcg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODAKemNtY2JeeHIxfHB4RmBiPGFEeGFTWn58
ZndUVlNJQjJqZ1QqI2AoRDlIO1hkfkZvNl9zYW9LMWE4cnRhXjhnYzt1CkRvcj8tWAoKZGVsdGEg
MTE5CnpjbWRuTmQ1M2Q/eEZrME4wfE4reWZITSQtKmE4aGVWeHRaUkJPfTlQZXdPKCNYYG1wKDFh
Vm9jSSh+cDhmbmY4MApZTWdiOz5IY15OT25CPW4ySFotKTtIOGtWYDBSNjJEaX5zLXQKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9U
YWlwZWkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9U
YWlwZWkKaW5kZXggNzQ4ODczYmVkOWExNjdkMDIyNmJhZDIyNDY1NTZjNDU0MzI4ODBkNi4uMjRj
NDM0NDRiNjc1MTM0M2QyOTE1ODQzZDAzZTU1NzUzZDRkNzM1OSAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSA1OAp6Y21iUW5fTEZzakk0YzdQWT9SPzxvTlVNX0UoKyNCMn44amtrYH55VSVJ
THYzQGpeSHxtdmVCNHRfMnFXeylQekMKCmRlbHRhIDg3CnpjbWV5I0kqbzBESTRkZ3kwfFY8dThF
IUB7QU9pe31ofDdZN3A8RkU+NGRNJkBmQ185NVg3cGZXV1NEcCVUbzVWKApNcV9+YGVMdiReOzBJ
e2tHd2czUEMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQXNpYS9UYXNoa2VudCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9Bc2lhL1Rhc2hrZW50CmluZGV4IDZmN2RlYTRhYmNhM2I3MDNkZTY3N2ViYTlh
ODhmZTAyNDM2YjFhZDUuLjMyYTlkN2QwYzljYmZhODQxY2M0ZTkyMmZkMWI0ODZhMzRiNTczNzAg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTM1CnpjbWV5KGEtTDteeEZgYjxhRFdJUGtP
WDI3VFZTRj1mXjdaJnxOan04bklNcGI2JCFHanZycFhZZmxLZFhiSCpiQwpRSEZJKj1YZDlUPz42
JnJAMDNleloxXkBzNgoKZGVsdGEgMTQzCnpjbVhAbEB8JElYeEZpUHkwfE4reWZIVis7KmE4aGVW
eG1xMHIpSSlGZ1psc2Z8MShVU0FpPjFRSVFidT0yVFUhKQpvI0U7XiNTVCs5dVk2Z01IdlchUH5L
Xy1BV1hyPjUpIzZXPHtNJSUjRFBTPXpSMEI4TGdvQiNqLQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1RiaWxpc2kgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9UYmlsaXNpCmluZGV4IDRi
MmQyZTI5NmU3NjI2YzI2YjhlZTU3MGI1OWQxNzFhOGYyZjcyYTkuLmI2MDhkNzk3NDg4ODRjNGE4
MjcxZTY5NWZlNGVkOTkyYTkxZmVhNjUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODAK
emNtZG5OKGFrWUlvUjxMenhJcUxFbWArczVvakEyKXZLKFhHMWFWUTIyd1ZvcjdNKjtYQCRCUmNP
dCZZcUZpTHtkClBhZE8jYzg8XlBYbnM1T0NMO252YgoKZGVsdGEgMTI0CnpjbWVDPyp1Z1BEb1Je
entmZFBhO3otKiNRRV8xQElmUWJgMjhKUSthR1M8TilLI34qMFdzJWpJMUJGMCooSHxnNQpsQWVl
bFpAaG5MNTxaaC0xajB9PylCX1QkTEt4RHhybXlOYzhpSmgocTdYWiUwNkQ8RyQKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9UZWhy
YW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9UZWhy
YW4KaW5kZXggMzE1N2Y4MDZiN2Q3ZmU2NTBlYzY3MjZmMzEzOTg4MjRjYWY4MmNlYy4uOGNlYzVh
ZDdkZTJmMmMxNGRkNGIwYTZjMzc1ZDcxOThlZjc0MjliNiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApkZWx0YSA5NDEKemNtWjlMWWUtWEo3PVZ3TjdmY0QjKG0qUDNRbFIxNWsreUNZOENlUmMxXlQx
eCRDOUtWZyRra1Qoc0d1bXNZX0UhCnomNjx8aW4lN3hzbk9iZ1hZRTh8WTg2fjhVNy1ZfjVZVWhD
PEkmaz5EPVJEOCplWk5rVlRiQFVqPVZJWlhDKVQhaQp6dmMyOTBkNnUxUyVwcTJ7I2N9KDhqcm5n
PVVwRyU/dVE/YUZlfXtCSlF0K2ZvVDlYeW9KPEB2SypWOERpN3U+dD8KekRVTTxJbCh9enM/Wj5u
RClSOG1yTVlCRDgkIU1UWXQ1VldtRXx8b3ByeXNePW9idGtGOXgwWipNenw3RiNEfWExCno5fHAz
NjF7bGEkNlVCZ1QjZURxTE1RUWs0SjAoOCVPQis3I0xvMGwzY3FeUldeX2prKUlnITR3K3l7Uj56
WEU/Rgp6SDV5LVpWJSs5NmY+MzxPJTc+RERZNmZuR0VvN2l7USFXRnl7RGJrZ216blQtdz93QERf
YitfZT5gJUQtZUcrX1UKekZvNkRVWENyK0BvZj09TXBUYndeXjY9R0taPFRidlA7PVp3UCNZSWNh
NCZpbmUxRTN9SG1IJnJzUGw4PyExfD8pCnpfeSpTdl89WD9UX3tOejhlQTlTNSt9dUEwOHsxM2lU
TVI0ZEFDd0g/QUxpXjtOJXNxX056TWRxJDEofXA0YGpmUAp6cVRKIWYrZDNITlA9O3tlNlc9Kn1y
YEpoKm0od2JJKll7ZHtfakM+WClHRVR5JTx0JVgrNzhtMnN5Kj1MO3pBOTwKel5OYkxKVVFIaUNV
cVViWkxjSlVBan0jYWYyLWVhTURuJEhDU3F1Sl5kbVBeNEZvVTt6e1I5dDk5ZmdOU21lWUB6Cnol
SUlHa191eGs+Nns3QGkzYlhgYz44PUZVKCtsQTdfLXkhWCV3YDVBIW47LWNTRjtXZ3goVH1fKCpH
ck0rMnwpMQpmTVMwTF9hbEkoRj9FYElsfDRgKyswN2FtR3NBOD5YVFY0SkQ7QUh1PgoKZGVsdGEg
MTQ3CnpjbWJPeHZXPDZ3eEZrQ1IwfE4reUtwR0goKmZJQDNWeCFJa00lTWNPfE5rPmctb3V6T1Mp
UiRBND05UVJDV3k7bwpuKSUqamhYN2VOXzY9cVp1YyMqVS1GaWlmKURiOGJJcGxfaCNXbl5aZVpA
PmlyfEtrfHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQXNpYS9UZWxfQXZpdiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9Bc2lhL1RlbF9Bdml2CmluZGV4IGRmNTExOTkzNWM1YjAxNjc2ZTYzZDFmYjFl
ZmQ3MjczYjhiNGI0NTIuLjQ0MGVmMDZiNWQ1NWZiYThmMTQwNzE4NDc1N2UxNzg1YWVjMWZlOGUg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTMxCnpjbWNhOV8oNT1qSTQ9VmRtXkBLc2op
M3JzUlMhZklJM0d5O0VPe1deRUF3RkUwZHVDdzB2cyVwRD55N0NoPklkQQp2WFA2QSt1bVEyPzxe
cENOTWo0UCFrVGdnKWh6Nk1lcUN1dT9wMX41cEpvelBpS2dfN2ZkcFRxUGRKWjl2CgpkZWx0YSAx
MzcKemNtZXckY3ZFbktJND5JbTB8Tit5Sz50TFFJVTZzU0dmbjFadyZafmJMQzZXPnZkSFF0MDdY
SDMoSH5Hbm4rdXFBCno3JnFAPkBuTDNVbXxWZnM0PkNYbERoSDt4SmNDMVlqWFlnS2JiTzhWTyFR
M2pqbSZnPjRHcns2XiRmVEd1SEY/bgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1RoaW1idSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1RoaW1idQppbmRleCBhOGJkZGI5ZmEzMzNkYTVj
NjBjNDgxMzI1MDc2ODdiMmRhNzQ0NzBhLi5mZTQwOWM3YTJhNDAyOTRhZjZiYWU0NTIzNDkyYmU4
OGQzOGE5N2JjIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDcwCnpjbWFGTGMkI3M3X3sy
Z0hVY1JmKExgeEpDZU9KYH58Tm5vWXR1azB0a2BLdUY1MFlVMzArMXwtaE58Rz92ZTdtJApKdihx
KT4wc3RmYzglNipDCgpsaXRlcmFsIDIyOQp6Y21XSEUlMWtxMnp5UW9aNWZCQ2U3OWErKGA1Sik0
KW59cTVpaXk0fT5pX0AkJiVuc1UjSn57MzB+QldQalIyXyYKek5ucWdlQGVOX25IWlYwZDBGcWBQ
RElmP1QhSW1Fb0VldD5seykyMS1hWH5oTVh3cSF1dkhgbGxQUz1iSjBNKyYoCkFhe3ZHVQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lh
L1RoaW1waHUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNp
YS9UaGltcGh1CmluZGV4IGE4YmRkYjlmYTMzM2RhNWM2MGM0ODEzMjUwNzY4N2IyZGE3NDQ3MGEu
LmZlNDA5YzdhMmE0MDI5NGFmNmJhZTQ1MjM0OTJiZTg4ZDM4YTk3YmMgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKZGVsdGEgNzAKemNtYUZMYyQjczdfezJnSFVjUmYoTGB4SkNlT0pgfnxObm9ZdHVr
MHRrYEt1RjUwWVUzMCsxfC1oTnxHP3ZlN20kCkp2KHEpPjBzdGZjOCU2KkMKCmxpdGVyYWwgMjI5
CnpjbVdIRSUxa3EyenlRb1o1ZkJDZTc5YSsoYDVKKTQpbn1xNWlpeTR9PmlfQCQmJW5zVSNKfnsz
MH5CV1BqUjJfJgp6Tm5xZ2VAZU5fbkhaVjBkMEZxYFBESWY/VCFJbUVvRWV0Pmx7KTIxLWFYfmhN
WHdxIXV2SGBsbFBTPWJKME0rJigKQWF7dkdVCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0FzaWEvVG9reW8gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9Ub2t5bwppbmRleCA4YWQ0NGJhOTgxYTJk
OTdkNDBkM2RlMmM4YmYyOTYwNmJlNTBhYTRiLi4yNmY0ZDM0ZDY3YjQ2NTEzNDkxZjI2YzJlNjYx
YzZlNjUzY2MxMzBkIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDEyOQp6Y21kblR3M1RV
c25OO001OCRXJigrJnBYajtXaihOaHVkcHFLaXFsdD0pPktme35zbT5MPERqJkZmZ3pIRzAlUz4K
eU5Ja1RxMDdQSDZWfWo2Y0JSXyFuQU9rPSYkUGY/Pkc2K2xxNEZsMDIxM0AmelAqWmo7dWl5fH1P
RCtKeFM1LTNyCgpkZWx0YSAxMTYKemNtZG5XdzJ4X21uVXdjfjgkVyYoKyZydU07NUl3TWh1ZHJV
QUtaRU49KT5LZmp9SW1XTDxuKipGZmd6SEcwelZtCnMwUmpeQGlXeiU5X3p3Z2laNkYkPzYtMHh5
Z0szfTxBUjEmMGh6MSRPRmZxViV2S31LbDBCfCF6V0I+cEYKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9Ub21zayBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1RvbXNrCmluZGV4IDkxOWIw
MDMxZDFjYzc4MmQ5Nzg5OTg0ZTAwZjA3NGZiNmYxN2M0ZTEuLjY3MGUyYWQyY2UyMmYwOGQ0OTZi
NDIzNjNjYWEyZTQyNDEyMWIyMGMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzkKemNt
YUZQZDZhWDR4RmBiPGFEZk9RWn48WnZUVlNKczBPTXB3IyN5LUpIJWxAcEZvNl9zYUBsQWJuQV89
XmF7Jk9JCkNAKE5TewoKZGVsdGEgMTE2CnpjbVhAZ2BKOGl0eEZpPD8wfE4reWZHWkcjKmE4aGVW
eHhgI0JPfTlQOF4mMk1YYHRXKWFhcFZ5ZWdOZV9VXjVldwpXMHV3fStGaG00SWFAbEFibkFfPV5h
eyZPfnJWSE55CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0FzaWEvVWp1bmdfUGFuZGFuZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9Bc2lhL1VqdW5nX1BhbmRhbmcKaW5kZXggM2E1ZGNiMjcwMDdlMWEy
ZmZhNjdiYmYzYTMwMDk1MzAzYjVkNjdhMi4uNTU2YmE4NjY5MzNkMzdmM2NmY2Y4MDQyMDQ1ZDY0
ZTIwOWJhZTMwZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA4Nwp6Y21aMyRecEEwWnhH
RG5AVTsobU9mbW4zbXJgUVIqI0k4O18tNjdqPkRlUFVyTGBVPDlQMiE/Uk4qVW00Q3ZIOyEKUE5e
QHw5ZHhramJUNXRnWEhTWkViCgpkZWx0YSAxMjIKemNtZXl6eFBXUGJ4RTNufDB8Tit5MEV7aSMw
T1R6RTZneSM7KndxUUFKN2dPIWd9cDBhbjdINFozIzFBSENXeTx6CmdsIUY5ZFl8JFQzYEhBeHQ3
KHJUdXBuTT8zNzQ4fTBzQjZJbTBCJGBMUlI5MTAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9VbGFhbmJhYXRhciBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1VsYWFuYmFhdGFyCmluZGV4
IDk0ZGRmZWE1ZjJkZjU5MmJlOTk2NzczNGMxNjU2M2M3MmU2M2IwMjEuLjJlMjBjYzNhNDM4YmIy
MDc2YmZjMTg1NjA0NTA3NWRkMDQxY2FkM2QgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
ODgKemNtYlFxeytuJXJ4RmBiPkZiMSsmZkxMSW4hNUshek5zUmlGYnM0cEJzbzZZKmFSd3Q/Nihe
VUN3dDxENnRfMnFXCkQyX3A7egoKZGVsdGEgMTI5CnpjbWV5KEhqe21WeEZpYiQwfE4reWZDJihU
KmE4aGVWeHJDJkNJLWdJakV0SS0xc0ZMZFljWG5hMDdiIUlnMTlWSgpkWjlreSRvOWh7OEZyc018
Z3Z2MisqPVFTQip5Jm51MFJZKy00JXo/IQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1VsYW5fQmF0b3IgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9VbGFuX0JhdG9yCmluZGV4IDk0ZGRm
ZWE1ZjJkZjU5MmJlOTk2NzczNGMxNjU2M2M3MmU2M2IwMjEuLjJlMjBjYzNhNDM4YmIyMDc2YmZj
MTg1NjA0NTA3NWRkMDQxY2FkM2QgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODgKemNt
YlFxeytuJXJ4RmBiPkZiMSsmZkxMSW4hNUshek5zUmlGYnM0cEJzbzZZKmFSd3Q/NiheVUN3dDxE
NnRfMnFXCkQyX3A7egoKZGVsdGEgMTI5CnpjbWV5KEhqe21WeEZpYiQwfE4reWZDJihUKmE4aGVW
eHJDJkNJLWdJakV0SS0xc0ZMZFljWG5hMDdiIUlnMTlWSgpkWjlreSRvOWh7OEZyc018Z3Z2Misq
PVFTQip5Jm51MFJZKy00JXo/IQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1VydW1xaSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1VydW1xaQppbmRleCBiNDRhMWUxOWU5YjEyMTI1ODVl
NTViZDY1YmU3NzY2NWY0ZWNmNmI5Li5mYWExNGQ5MmQ1OGZhODgzYzQyMDMwMjJlMDkxZGM5MTU0
YWM5MmRjIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTY1CnpjbVdIRSUxa3Eyenpk
and2TE1XeztvcSo1YHYzcGBHY3F6VDFqJkgoZ2R7TXFgMXBufVhkOVJAZ3Bnbm8oMilOaQpTKD9E
azZIaiZFKVhzKF5FODVhTz4+S2Y0aQoKbGl0ZXJhbCAxODcKemNtV0hFJTFrcTJ6eU00QDVmQkNl
VypgUSFJVTBiKGhKVStLPmlfQCQmJW5zWXp6YCRANmshTlNVfHtqXzRQbnFXCmpGYXZRSkxQIysz
MlVySUsxSkswKEFmcktDMD4qUk0wND1pOUhSQSNSNUFxeVMKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9Vc3QtTmVyYSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1VzdC1OZXJhCmluZGV4
IDc0MzFlYjk3ZmM0ZWFhZTRkOGI0YmQ5NDQ5ODIxZDRkMTFhNGIxODMuLjllNGE3OGY2YTU0N2Rl
MmE5MWU3MjhhYzRhYjVmZmE0ODg0MTA1YjQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
ODAKemNtZUM7ZGNyd0RUJEJMX2N0OFhZSTBHPz1Fd1J5bmhqRnFrPDlifjNue304Wm1fUTEreE5O
aXk0ZVdGYzRZJlpECkNWK3dsIQoKZGVsdGEgMTIxCnpjbWFGRCp+SytNVCN8PUBmZFBhO3p5Kmp3
WT41VVN1fkNQSWsmJDd0SHBfYUxHKkZPJVZTPjBVUnhMbGt2SjRFSApaZ18kSW5Bb3wzaExTVHhe
TSUmUTlQUz88WTNqcTRaMy18eTQKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9WaWVudGlhbmUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXNpYS9WaWVudGlhbmUKaW5kZXggOGRiNWU4YTYxZWU5
ZTYzMTY0Y2U3ZjA3OTY5NTU3ZmFmYTk4MmRkZS4uYzI5MmFjNWI1ZjQ4OWE4OGJmMTBhMTI2M2Ix
NGU3NDEyNDc5ZDllNyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3Ngp6Y21jYl5jJHsm
OUk0YzdQT3E4Km1BZyY4JExKNExkNFo9TUNmZ28mSz5rJHlXQ0BjTDROV0xEKHAxNE1sbGdtY2kK
S3p9IXlQb0NeVHB0cnJhZAoKZGVsdGEgOTAKemNtWEBrYyF6TzxfezE4SGlTa3gjM302N30+VmNS
bksrRnVwSlU+N0BBb3ZkaVZjU31kZmFwYjg9fEAwZl4qfWJtClYjSlAoNkFQeGZxbXlOYzh4dCo+
IzdYV0N2OFl1dCgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQXNpYS9WbGFkaXZvc3RvayBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9Bc2lhL1ZsYWRpdm9zdG9rCmluZGV4IDgwYjE3MGJjYTQxMDBjODkx
NWEwZWFiNjYwMjU4OWUyMmJjZTllZTMuLjhhYjI1M2NlNzM1NTVjYmJmNDJlYzY3YTg1NjBhY2Vm
MDgwZmM0ODAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODAKemNtY2JeeHIxfHB4RmBi
PGFEeGFTWn58ZndUVlNJQjJqZ1QqI2AoRDlIO1hkfkZvNl9zYW9LMWE4cmJPPzhnS3lzCkRvcjRO
TgoKZGVsdGEgMTE5CnpjbWRuTmQ1M2Q/eEZrME4wfE4reWZITSQtKmE4aGVWeHRaUkJPfTlQZXdP
KCNYYG1wKDFhVm9jSSh+cDhmbmY4MApZTWdiOz5IY15OT25CPW4ySFotdSlIOGtKPzBSNSM1aVUw
cnIKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQXNpYS9ZYWt1dHNrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FzaWEvWWFrdXRzawppbmRleCAyMjBhZDNkYjVmZThjMzZkMWMzMmI4OGZkNzg5ZmY5Yzcx
ZDNlOTRlLi5jODE1ZTk5YjFhOGYyZDRiOWJkNDVkM2E2ZjM5Yzk1ZGI1YmJmNTYzIDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc5CnpjbWNjM3h0KClAeEZgYjxhRHhhU1p+fGZ3VFZTSUIy
amdUKiNgKEQ5SDtYZH5GbzZfc2FAbEFiU2xhMVlhc2RGNgpDdHFMOWgKCmRlbHRhIDExOAp6Y21k
bmFkN0U+QnhGazBOMHxOK3lmSE0kLSphOGhlVnh0WlJCT305UGV3TygjWGBtcCgxYVZvY0kofnA4
Zm5mODAKWE1nYjs+SFc3I2puQj1uMkhuNm5Rd2Q0Vy1AR1Q1eQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1lhbmdvbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Bc2lhL1lhbmdvbgppbmRleCAz
Y2MyYWFmYWM0ZTI3YmNiYjJkZTRiMDhjNjQ1MWMxYTU2NDUyODA4Li5kZDc3Mzk1YjA1YTg5Yjg3
NTY4M2Y4YWE4MjA2Mjc0OGYyZWQ1MDRjIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDYw
CnpjbVozPClXYkFFb1J0OXRDZHghazVFbGhBcCMoQEFnb1AkPCl8bHZFJUV4NytaRDN8PlY1ZShs
V28qQyYwMGFPQwpBI3NCflMKCmRlbHRhIDkxCnpjbWVCU1RGRXApb1J5VjxmcWB8Uk9lN2JPaEpw
Iz12UzNqdG1rbWdSXyhESVIwdXZXJUZmdlNaRnFNR3ZmZlNkRwpRd3Q8PGtmdHt8SW05WVVBMEs4
Qk0tVChqcQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9Bc2lhL1lla2F0ZXJpbmJ1cmcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vQXNpYS9ZZWthdGVyaW5idXJnCmluZGV4IGMxYWJiOTM1YzY1NWFkNGE4
Mjg4YmMzYmQ5NDQ1ODQ3ZTgzMmYyNzAuLjY5NThkN2VkZGRiODVkMjk4YzVmMmI4OTBiMjFkOWNh
MjA1NmU5YzUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzkKemNtWnFWeTNJTDNUJEJM
X2N0OFhZSTBHPz1Fd2Emb2hqRnFhJVc3UW1uPkNtdW1fUTBSeG9vcnpPem1fe3hkNGwqCkIzT1dE
KQoKZGVsdGEgMTIwCnpjbWNjMyp+bTNQVCN8PUBmZFBhO3p5Kmp3WT5AXmF1fkNQSWsmJDd0MT48
VSVHKkZPJVZTPjBVUnhMbGt2SjRFSApZYEkjaGBBb0BoMUxTVHheTSUlI0RQUz16UjBPbSN1eSNO
M0oKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQXNpYS9ZZXJldmFuIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0FzaWEvWWVyZXZhbgppbmRleCA0YzRlMDQ1YmQzYTQ3ZWY3NDg4M2MwZWM3NDI2MWU4YzZh
NDFkYzFhLi4yNTBiZmUwMjBhZGE5MTI2NzFkNjcwZTc3NDAzYTI2OWM3NGI2NThlIDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmRlbHRhIDE4Mwp6Y21kblhgSlpFZ3hGYGI8YURmT1F1bUByZ1RWU0Y9
IV5BQ3grPGwxO3tNTTh3KWNebmdmM2hpfmYoJERRWmE2dVIKb0JAJmwkbzRKQCs3JD1Ke0tOSlI8
MnNFRG9XR2FYeitHSXtIOCpLdjxKNiNobDAwQWk7eGN+cUYKCmRlbHRhIDE5OAp6Y21leSp2NnBq
I3hGaTw/MHxOK3lmRDtnZCphOGhlVnhtcTFpX3l0fjB+Nk8yM2RvcmBgMVUwfUBMTi0hUTIrbmAK
emV9PjVxbkgzbkJDb3s2aDA3K1N2TlNGYVlaNDw8MHVeUmFVQzxnK1lVb3heVmYoQFNobElmYG8m
fTVKKCRhRH01Clh2SD9WNndNN150MHw4dCUrNkU/ZXgrWXV6b0lXWGUKCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXRsYW50aWMvQXpvcmVz
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F0bGFudGljL0F6
b3JlcwppbmRleCAxODk1ZTFiMWUxOTEyMDEyM2U2NzM2N2U1NWRlM2YyYTVkYWM5OWNiLi41NjU5
M2RiZmZmOWJjNTBiYjMyZTY0ZmYyODJkMDUwMmU3NTUyNmMwIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDMxCmxjbVoxfkp4NitqRGw2d2IxX2xPUkFlUHV7I2A9TTZeQWhHYiM+dVVgM0lL
eG8ydFdWOwoKZGVsdGEgMzcKbmNtYk91eTtPUkdEeSFncTFfbE9SQWVRKDZCdFQlWjlfdDQtTXV5
RkRKYXZvIW56eyM9CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0F0bGFudGljL0Jlcm11ZGEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQXRsYW50aWMvQmVybXVkYQppbmRleCA1NDhkOTc5YmQxZWNlODJj
ZTc2YzE4ZmZmOGE0ZDlhOTE5YmE1MzFjLi40MTljNjYwYmE3NmYzNDk0OTQyM2ZjMmNiZWJiOTgy
NDAwNzU4N2ZhIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDg5CnpjbWNiQHpsKG9AeEZg
Yj5YYXVzRWZ0WThiMFNuVilNZlVRXjBaZCR6WFJ5b1JRbiM2cG5TJXZjO3A5RSs1JiV4XgpCNG9t
PDUKCmRlbHRhIDExOAp6Y21kblJlfSNYN3hGajxKMHxOK3lLb2J5eSpnT3FEVnh0WlY2Qz1aOUxI
NlJ3M2hhRTdUaUU1O2ZUQlAhTDBsSEEKWXJYTFYjaFJ3ZzNJOU8xMXZWeF4xRkp6WWwwRmk0RDh2
cDxSCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0F0bGFudGljL0NhbmFyeSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BdGxhbnRpYy9DYW5hcnkKaW5kZXggNTQ0ZjQ0M2EwOTZkYzFlZGI0NDdmZjg1ZTcx
ZDBmMTdlNDBhMjI3ZS4uZjMxOTIxNTZmZjA0M2E1Mjk0NjFhYTkwMDRhOGRlOWRkYTMyNmY3ZCAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2Mwp6Y21leSlfbVhkZEdHYGVCMHxPZm4zdk0q
SCFOfDxXIzVgR21EU3ZWYFF3Qm4yXkIxTksldCV0TWxWak1XMG12SzwKQTNJRzVBCgpkZWx0YSA4
NQp6Y21hRktfbm1Lb0dIKkVwMHxPZm4zcE4wV2pYRjBOU3J7MFptP3NNfFdsbU9MOytvOU0/bF5m
amxkPlJPKiQ8I0gKTzVaTF5qWCMrRjUrODYtaTQtajwjCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F0bGFudGljL0NhcGVfVmVyZGUgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXRsYW50aWMvQ2FwZV9W
ZXJkZQppbmRleCA2YmRhNmRiNzYwNGMzMTZlZGY3ODIyNmVlZDJmNzg1ZWU1ZjhhZWNkLi5lMmE0
OWQyNDhkZTA4NjMwNmQyZGQxNmEyYjJkNDk3YTAwOGM4ZjA3IDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDQxCmtjbWJRaylXPFlJblVqQClmZFBiaENLYHhMeWxwd0w0cTBmRSM+Q3I+MEgm
JTQ8TnlFdwoKZGVsdGEgNzkKemNtZUJVbiFffGZTJjVCLWZxQGw+Y15aSmtxLVUhWm9TOGFEO1pq
TUIwSnIjZWh4LTVqfDEoVDxoIUtSVmBUPGwwClYwdXpeTkZhbCpQSWs7P2U0R2lySnhkM1RpNmY2
SiQKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQXRsYW50aWMvRmFlcm9lIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0F0bGFudGljL0ZhZXJvZQppbmRleCBjNDg2NTE4NmIwMzUwODFjNmYyMTZmNzU0ODYz
MTBlNzhmMDNjNzE2Li40ZGFiN2VmMDg1OWMyNDRiOTE2ZDYxYjc0ODlkNzM3MTg4MWUwY2EyIDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDY3CnpjbVozPUg9Uz5TR0d7UlowfE5eWF5LTFhh
IV5wQHV4c1dZcXZIJW0/PE5+R3VneHV6Zk9mIzVLQnl9ZnF1fWNGMApEP0h2dyoKCmRlbHRhIDcz
CnpjbWJRdngwRyohR0goZTMwfE5eWF5FTHA5alhHeC1uSFUlK0MkaTtES0Z3eDBjP09mUkFZOCFA
cGFLeHNlMXZIUgpJR2VWVVEwNVUyTSljXm5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F0bGFudGljL0Zhcm9lIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F0bGFudGljL0Zhcm9lCmluZGV4IGM0ODY1
MTg2YjAzNTA4MWM2ZjIxNmY3NTQ4NjMxMGU3OGYwM2M3MTYuLjRkYWI3ZWYwODU5YzI0NGI5MTZk
NjFiNzQ4OWQ3MzcxODgxZTBjYTIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNjcKemNt
WjM9SD1TPlNHR3tSWjB8Tl5YXktMWGEhXnBAdXhzV1lxdkglbT88Tn5HdWd4dXpmT2YjNUtCeX1m
cXV9Y0YwCkQ/SHZ3KgoKZGVsdGEgNzMKemNtYlF2eDBHKiFHSChlMzB8Tl5YXkVMcDlqWEd4LW5I
VSUrQyRpO0RLRnd4MGM/T2ZSQVk4IUBwYUt4c2UxdkhSCklHZVZVUTA1VTJNKWNebmgKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXRsYW50
aWMvSmFuX01heWVuIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0F0bGFudGljL0phbl9NYXllbgppbmRleCAyMzljMDE3NGQzNjFmZjUyMGMwYzM5NDMxZjIxNTg4
MzdiODJjNmUwLi4xNWEzNGMzY2VkYjdjOWNhNTE5YzE5NWY1ZWMwY2U5ZDhkMTg4NWE1IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU4CnpjbVg+dHhKN1YrR0dwJlZtN0ktSlVOVE5AVUBE
ck4hUW5wSG9MUU4obXd8elM5Zil9K1hFVUdLWXxrPT5kMiRNcQpJQnZlVDwwNXc/PXt7UjMwCgpk
ZWx0YSA4Mgp6Y21kbFljdl42UkdHcElGbF5obktiSklVO29iWnk3ayFrV25fTSp3Sm5YJn0/ODVr
SllmdGRGUGtOfDxuYW07N0gKWTNPQjI8RU1SNzJuNEd7UTMwTG52Yz9PM0owQSVuUDtRIzt0Cgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F0
bGFudGljL01hZGVpcmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQXRsYW50aWMvTWFkZWlyYQppbmRleCBlMjVmOGE1OTk2MjJjYjQ1Y2QyYWZkN2JmNzM5ZTRk
MWVkNWVkNTg5Li41MjEzNzYxZjg5MTMwM2Y5NWUxOTYyNTcwNTY4YWU2MmVkMzg3OTUwIDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDMxCmxjbWJPdUp6MDgjRGw2dyoxX2xPUkFlUDsxI2A9
UDdeOCk1MSM+dEptKGcxKj0ycTZGZgoKZGVsdGEgNDEKc2NtYk8lSng2K2pEeSFmPDFfbE9SQWVR
fEJCdFQlWjlfdEc+TXV5RGBuM0VWTVNNVyokMEtISE41JiFASQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdGxhbnRpYy9SZXlramF2aWsg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXRsYW50aWMvUmV5
a2phdmlrCmluZGV4IGRjNDljMzI0NzA5MDZmYjJmZjk0ZmM1OTljNzMxNDE1OTc0NDNmOTguLjEw
ZTBmYzgxOTBhNDAxZjY3Yjg2MWNlZDNiOGIxNjQwMTQzMmE1NjUgMTAwNjQ0CkdJVCBiaW5hcnkg
cGF0Y2gKZGVsdGEgNzYKeWNtWjMmKn5LfFFUJEJMXypneW1qeEJ4TVRFd0lyKmZOYD1UVjt3SH0l
fDk2eG1fUTJIeFpIaDE0N2RQYkRHQ3cqCgpkZWx0YSAxMDUKemNtZUM7VCo1ZylUI303fWZkUGE7
eiFpdT1ZPUgoS3V+QTJXayYkN3Q0UHpadGRWO3R0Uj5lUG5pYX11V0dlIWpfClBoej1mejIkI0VX
aHlmUD5PPXRefAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9BdGxhbnRpYy9Tb3V0aF9HZW9yZ2lhIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F0bGFudGljL1NvdXRoX0dlb3JnaWEKaW5kZXggNTZiMzgz
YjE2ZGIxZWM4Mzk0ZDMzZTMxODYzZTQ2OGVkNGJiYzlkYi4uNDQ2NjYwODYxMjI3YWE4Y2ViNzA4
NGY0OGMzYjI2NTRlYTY0ZjRkYyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2MAp6Y21k
bld4UCk8bkk0YzdQT3E5YF5BVDlASExKMX15NFo8QSVmZ3JRKD8qV0YxeTBSUXhIbzY4emMxQnpQ
TkllWFcKCmxpdGVyYWwgMTgxCnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdATU8zJGZeSlR8MzQkK3xO
bk9uRmZqYzh8TSZwfGk7ciZ6Z1JUTEBqMWE9NgpqRispd3tfeUpecTBNTmt5blFlYSRmWT4wQDhF
X2xWV2RwUngmV0g7RDJxLTBeCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0F0bGFudGljL1N0X0hlbGVuYSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdGxhbnRpYy9TdF9IZWxlbmEKaW5kZXggNmZkMWFm
MzJkYWVjMTkzMjM5YWI2YjQ3MjUyNmZkM2Q2YmRiMmY3Ni4uMjhiMzJhYjJlMGI5MDUzZjM5YTkx
ZDlmMjhiNjA3MmU0MTQyMzk1NCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE0OAp6
Y21XSEUlMWtxMnp6WjBHdlA/a0NHM25WUDU2MXVofDUha2t2LXRSaUZ0YEo4Mm5tTSMyTGhaMWFS
RSY7LX5zQDIKQ1NRbDlVCgpsaXRlcmFsIDE3MAp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRl
SHdQa19ROWh8Tm5uMUt2Rj0hO15Qfl87MTB3ZjVKR30hS2ZwUXwKUTgyJHFSZXA5KUMjdjU8fTBN
KUA1K1ctSW4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vQXRsYW50aWMvU3RhbmxleSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9BdGxhbnRpYy9TdGFubGV5CmluZGV4IDM2NDk0MTViZDE0YTMzNTY0MTll
ZmQ3MzQwYjQzMGU2NDU1MDllMGMuLjg4MDc3ZjExMDcxNWFjMWUzNDk3MDg4MjFhYzFlMDBmMzVi
ZjYzOTUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTgKemNtYUZOeHNQKiNJNGM3UFk/
UnJeSTYrKCMlIVUlfkskO3poTUs8I0BTdWpvWlV+SnshdmU3aiN3bG40ZTAybjw4CkF3RXpHQgoK
ZGVsdGEgOTcKemNtZG5UYEl2S3BJNGU1PzB8V2E7blQ/RW1LbjQ8K0FUQTQqZihtJjZYJUp1SjJV
S0E1UGV1elNNdXkzVEVVald0ClBBdD1SVnFpYk1uWFVxaXZMT3UkXwoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvQUNUIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9BQ1QK
aW5kZXggYWFlZDEyY2EyODRkNjllM2E4YmEyNTg5MTcwMTc5MGJkZTdmNjc0My4uNzYzNjU5MmFh
Nzc3M2ZhZDY4MTBhOTNiMzA1YzdkY2Q2ODhjZmYzNCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApk
ZWx0YSA0OQp3Y21aMjRJN2VgVEkzdlNHMzJ4Pkk7LVU7ZHp6UU9PcGJ2O2FZYClEZyVtcGx5UTwo
Tm9wMiM1dzBNMXx0KjhsKGoKCmRlbHRhIDcxCnpjbWJPdXhMJENBSTN3I3UzMnRVcTFgd0RhRSg+
Qm5JMUNLXlAmVkhXa1IlWG5fR2QwJlZQdSVScE01Xz4mRXpAYApGSVJJY0AzTX5LdAoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFs
aWEvQWRlbGFpZGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QXVzdHJhbGlhL0FkZWxhaWRlCmluZGV4IDRmMzMxYTg3ZGY0ZWQ3OGJlMGQwMGIxYTgyYjVjNjZj
NzczMDY5YzkuLjBiMTI1MmFiYjdlNGFiNDc4ZGEyNmViMGJlNTljNDViOWIxNWFiY2EgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTE3CnpjbWRsZHhLNDBfeEZgYjx1ITBDNj1tVE85bntU
N2UyYDJyPEh6MlhlRDtRWkE3K1BtQWEzWnNQZF94ITxvbjFnZwpqYTBvfmxCT314LUhWX1g4YGhn
aDQ9R3o+PlQpe0g9Qkt6XmxeRWVhJG0zUzFlCgpkZWx0YSAxMzUKemNtWjF7eEtENmB4Rns8RjB8
Tit5S3B6bDsqanlXUlBCMG5OTyNxMmFVY20/eVlNcF9+YzYxSTdWUV9TSTI+fVQrCnNHSjs1azNG
NU1CS25qRkcwSGhubD1LQkhTMGx7V308X1o9QGhSTWctazMtYz0/JkRBWjBFTDxxSz56PiUKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVz
dHJhbGlhL0JyaXNiYW5lIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0F1c3RyYWxpYS9CcmlzYmFuZQppbmRleCBhMzI3ZDgzYjc2OTZmMzljMDFhOWI1Y2RmZjFk
NGYwZmQ0YjFmOTRkLi4zMDIxYmRiNjE0NzM2MDNmNzgxMzhlMjM1ZDFkNjY0NzJiNGUzZDA0IDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDUxCnljbVhAWXlwZWY9STN2U0VpQ0dpR01IenNB
Nit7NG1BUHxHdGQ9cD1IT2V9RVg8Wl5UazQkKEM8LX5zXmxUblRGYwoKZGVsdGEgNzAKemNtZG5V
ZTF2JnxJM3cjc2lDTEArQVRVOCg3UX0jWDcjTWAwWWB6fkxOZyRZYnVWWjRxR2FzMUU8PihxNXFI
QWN0CkYxcHNyQzNVZEdlCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9Ccm9rZW5fSGlsbCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvQnJva2VuX0hpbGwKaW5kZXggNzY4
YjE2Nzg1N2RkODI4MDdiNWVmOTEyYmUzMTUxODA4NmM3NzE0MS4uMWFjM2ZjOGY1MjllNTQzMWZm
NjFjNDMyMzJmMjQzYzcyZTFlYWMyZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxNzIK
emNtYURQY3Z4X1B4RmBiPHUhMEM2PW1UTzlue1Q1SUMqeCpJI3pNeCk0Tk9gPHRZcFoqJkB1PDRX
Yno2fDc2eWphCno4NFI0clkjLWtjMjFqUVg1RF4+I1FwVShRTDQyfGVHWTJuLUdYYVIlZm1uRVJF
VkMtcDx9VEp+cnBlRlBUXyRtOApuUDJ5MFJUK1pSNXp5O0UkWWlWVXswNVYwIypVJilFUHxyWmUq
OTFpQTgqPjJ3KGl0SmUKCmRlbHRhIDIwMAp6Y21YPnNfKCpWcXhGezxGMHxOK3lLdEIrSipqeVdS
STJvQzkqNUJBeyFkUyR9JFQrIXgkO1hJK3A+Nl81KGN+NDMKektzQnYxUH16Pm8hNjZLZSZNcU0h
Vk1heX0kdUwxJm1Le2llRmJHVG5WaH4mUzJaI3Aqb0JmJHBuWlZaTXZuRFZ4CnlHRTY/dD8hdzRD
YDYwV3s8YWlEamIlLUpjRXxBZj5tUjgwRkFtZXA+NEdyYFJeJGNgO08rYntzRiY2LXVyejUtbwoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
dXN0cmFsaWEvQ2FuYmVycmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQXVzdHJhbGlhL0NhbmJlcnJhCmluZGV4IGFhZWQxMmNhMjg0ZDY5ZTNhOGJhMjU4OTE3
MDE3OTBiZGU3ZjY3NDMuLjc2MzY1OTJhYTc3NzNmYWQ2ODEwYTkzYjMwNWM3ZGNkNjg4Y2ZmMzQg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDkKd2NtWjI0STdlYFRJM3ZTRzMyeD5JOy1V
O2R6elFPT3BidjthWWApRGclbXBseVE8KE5vcDIjNXcwTTF8dCo4bChqCgpkZWx0YSA3MQp6Y21i
T3V4TCRDQUkzdyN1MzJ0VXExYHdEYUUoPkJuSTFDS15QJlZIV2tSJVhuX0dkMCZWUHUlUnBNNV8+
JkV6QGAKRklSSWNAM01+S3QKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL0N1cnJpZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvQ3VycmllCmluZGV4IGEzZjZmMjlhNDk2
MTcxNjc3NTA4NDhjNzFlNDYzZmFmNmYzOTc0ZmMuLmY2NWE5OTBlZmUxMTkzMTJlMWZiZWI4MzJm
ODM2MDk3ZWNkMmVmZjEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDkKd2NtWjI0STdl
YFRJM3ZTRzMyeD5JOy1VO2R6elFPT3BidjthWWApRGclbXBseVE8KE5vcDIjNXcwTTF8dCo4bChq
CgpkZWx0YSA3MQp6Y21iT3V4TCRDQUkzdyN1MzJ0VXExYHdEYUUoPkJuSTFDS15QJlZIV2tSJVhu
X0dkMCZWUHUlUnBNNV8+JkV6QGAKRklSSWNAM01+S3QKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL0RhcndpbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvRGFyd2luCmlu
ZGV4IGM2YWU5YTdiYTI1MzA4OWQ0ZmNkYjk2NjhiNzBhYWFkMjBkYzk0YWQuLjFjZjUwMjk4NGEy
N2RlYWU4NjliM2EzOWNjYmJjMDU2ZTQ4N2QzOTggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVs
dGEgMTA0CnpjbVhAaXcxSGBZeEZgYj4tfl9VbmZ0WVdpaj1vJmczWHNnPzZedHdsNDZRUjVJRExG
VzcjeThsS3R5bHwxRFp9UQpacGktYlpwdzlJSGxOYiVTeGo+M15Fdjx8VnhCd0djNH56ZisKCmRl
bHRhIDEyNAp6Y21kbk1iZUwmXnhGfENOMHxOK3kwNEVURypqeThKXmNDdFJmUF5ObVV9Ui1yWHF+
fnA7T0hEMjB3aTJRSypCJlUKc0wwcHl2TlAjZDJhMDQtaiZHIVN1MUE+VzUwfmlANWVsLXc9YURr
P1JPd2hIb0dCKTQ+MFFyKjtmJmMmagoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvRXVjbGEgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL0V1Y2xhCmluZGV4IDk5ZjA3YTlm
ZTUzYmZhODVlZjRjNDFmOTBkZmJhZTQxM2FhZjEyZTQuLjk4YWU1NTcwNjRiNmJlNWRjNDQ1YTk0
NGM3NWM1YzhkM2JiMmNiZWUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTcKemNtZXkp
e0RnVWVJM3ZTRWlQYU90TUh6c0E2K3s0bTJvUXRWMHUlbyVtXl8hIW9zWXsjK3JZeGEpSzFzSiVF
WGlsCkUwOFhDXjRGQ1dECgpkZWx0YSA3OAp6Y21hRkR7R0VBJUkzdyNzaVBmd09BVFU4KDdRfSNY
NyNLdk1ZPUl2ak5nJFpgZWdQeEg8YkZuWFZLQTQ9TSUlIWAKTiNNRG1MIXBnKnkzanBpRDM8di1L
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0F1c3RyYWxpYS9Ib2JhcnQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQXVzdHJhbGlhL0hvYmFydAppbmRleCAwNzc4NGNlNWQ3NTFmMDQwYmE3YWI0MzcxM2Yz
MmNiOTJjZTlhZmIxLi4wMmIwN2NhMjMyMDUzZDFkOTA4ZDAxOTYyMWI3OTI5ODZiZDliNDI5IDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQ5CndjbWJPKSlGVSlPb1JNTHBnZmE2M2Fadl4h
VTxEQ0NGYiMtN1lgKURjJW98dUh3PWYtXyUqWkpSME1rR1M+SHEpJAoKZGVsdGEgODgKemNtZUFY
bmxDZyNvUk17LWdmVE5LMHwtbkltank4KDkwckV6UCZWSFdrUiVYbkVAJDRyIW98U0kxY2ozKUdJ
ZFR+ClJ6e0UwbkZOWXlTKTh1eT9hc1Y5ZTRUYjshCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9MSEkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL0xISQppbmRleCA1NzU5
N2IwYjk3NDM0NzVjNTQ3MDIxZmY4Y2RhYTAwNDk3MjlkMGUwLi45ZTA0YTgwZWNlYTQ1NDczZmFh
YmViNjA5ZWIwNmNmZTYyMTkzZDQ4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU1Cnhj
bWFGSmNaNj8oSTRjN1BZP1NGe24hSiVvVG9sWk01K3koeUJyVW81RGJvVngkJHVERVBxdD1QMHt8
JSQzcUpxPQoKZGVsdGEgODQKemNtWEBZX21GUmJJNGRneTB8Vjx1blFrVTdBT2l7fWh8N1k3cTE7
ais0ZFA0d2ZDX0JCJShRQCtrencqNSM/X29xCkxBcUl4WXZoMztyP1Z0O1QKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL0xp
bmRlbWFuIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3Ry
YWxpYS9MaW5kZW1hbgppbmRleCA3MWNhMTQzZjI5ZjJlNTc5OWI4NjU0NzhkMDVhMGU4ODQ2NWQ5
MmYyLi5lYWIwZmI5OThhYjE3ODY4YTJlYTIzMmU5ODZkMzEyYzk0YmIxYzdiIDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDc5CnpjbWVCVGRDNUZNb1I8THpTVjA2M2gpemBUb21pP2NgOGNF
TDFhVlEyMndWb3I9OXxwSSpnSlY5cXg4ZlVMNjk7fApORT1Ta2s1TTR0OUUmdkhWNGRubTsKCmRl
bHRhIDEyMgp6Y21hRksre0gzTW9SXmg+ZmRQYTtLeTBGbEZMT1l+Z05YJS1qNyQ/Sm5uSmBVaHwz
fT81KGc+LUAlZXMkdjtlYHgKa1ByVj5ibGRCak5nYytDXnBeJXZjMHp1flJmekAkMngoMHtuOFg5
bGAwRGwofHNRPkB+CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9Mb3JkX0hvd2UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL0xvcmRfSG93ZQppbmRleCA1NzU5N2IwYjk3
NDM0NzVjNTQ3MDIxZmY4Y2RhYTAwNDk3MjlkMGUwLi45ZTA0YTgwZWNlYTQ1NDczZmFhYmViNjA5
ZWIwNmNmZTYyMTkzZDQ4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU1CnhjbWFGSmNa
Nj8oSTRjN1BZP1NGe24hSiVvVG9sWk01K3koeUJyVW81RGJvVngkJHVERVBxdD1QMHt8JSQzcUpx
PQoKZGVsdGEgODQKemNtWEBZX21GUmJJNGRneTB8Vjx1blFrVTdBT2l7fWh8N1k3cTE7ais0ZFA0
d2ZDX0JCJShRQCtrencqNSM/X29xCkxBcUl4WXZoMztyP1Z0O1QKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL01lbGJvdXJu
ZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEv
TWVsYm91cm5lCmluZGV4IGVjOGRmZTAzOGMyZDEwYWVkMjk3NjNlZjhmNjY0YzhmMGNkMzVjOGMu
LmJhNDU3MzM4YmE3ZWM4ZjZkM2UzOTUwZGViMWI3ZTgyYjE1YzlhNmMgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKZGVsdGEgNDkKd2NtWjI0STdlYFRJM3ZTRzMyeD5JOy1VO2R6elFPT3BidjthWWAp
RGclbXBseVE8KE5vcDIjNXcwTTF8dCo4bChqCgpkZWx0YSA3MQp6Y21iT3V4TCRDQUkzdyN1MzJ0
VXExYHdEYUUoPkJuSTFDS15QJlZIV2tSJVhuX0dkMCZWUHUlUnBNNV8+JkV6QGAKRklSSWNAM01+
S3QKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQXVzdHJhbGlhL05TVyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9BdXN0cmFsaWEvTlNXCmluZGV4IGFhZWQxMmNhMjg0ZDY5ZTNhOGJhMjU4OTE3MDE3OTBi
ZGU3ZjY3NDMuLjc2MzY1OTJhYTc3NzNmYWQ2ODEwYTkzYjMwNWM3ZGNkNjg4Y2ZmMzQgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDkKd2NtWjI0STdlYFRJM3ZTRzMyeD5JOy1VO2R6elFP
T3BidjthWWApRGclbXBseVE8KE5vcDIjNXcwTTF8dCo4bChqCgpkZWx0YSA3MQp6Y21iT3V4TCRD
QUkzdyN1MzJ0VXExYHdEYUUoPkJuSTFDS15QJlZIV2tSJVhuX0dkMCZWUHUlUnBNNV8+JkV6QGAK
RklSSWNAM01+S3QKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vQXVzdHJhbGlhL05vcnRoIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9Ob3J0aAppbmRleCBjNmFlOWE3YmEyNTMwODlkNGZj
ZGI5NjY4YjcwYWFhZDIwZGM5NGFkLi4xY2Y1MDI5ODRhMjdkZWFlODY5YjNhMzljY2JiYzA1NmU0
ODdkMzk4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDEwNAp6Y21YQGl3MUhgWXhGYGI+
LX5fVW5mdFlXaWo9byZnM1hzZz82XnR3bDQ2UVI1SURMRlc3I3k4bEt0eWx8MURafVEKWnBpLWJa
cHc5SUhsTmIlU3hqPjNeRXY8fFZ4QndHYzR+emYrCgpkZWx0YSAxMjQKemNtZG5NYmVMJl54RnxD
TjB8Tit5MDRFVEcqank4Sl5jQ3RSZlBeTm1VfVItclhxfn5wO09IRDIwd2kyUUsqQiZVCnNMMHB5
dk5QI2QyYTA0LWomRyFTdTFBPlc1MH5pQDVlbC13PWFEaz9ST3doSG9HQik0PjBRcio7ZiZjJmoK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QXVzdHJhbGlhL1BlcnRoIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0F1c3RyYWxpYS9QZXJ0aAppbmRleCA4NWMyNmQ1MDlhODFkNzdlYmZkNjUyNWI0Nzc3ZWQz
MmNkNmM5ZTFhLi5hODc2YjllNzg1NjM0N2MwNmJmOGNkOWM4ZDFjMzA2ZGY0OGQxZDQ0IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDUyCnpjbWNjNWUxPl5+STN2U0VpNnMqY2lpPEo7MFZ7
fEEwJTBIcXZIMiFgb2lWd08oUz9Ke0YrNGEjKk1iV0dDWCkpMwoKZGVsdGEgNzIKemNtWEBaZTRs
eE9JM3cjc2k2eUtJQVRVOCg3UX0jWDcjS3ZMWWB6fkxOZyRaYFZnQDZfPE9XNjtVTkQhLUYrNGEj
CkgqTWJXR21BTU1kCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9RdWVlbnNsYW5kIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9RdWVlbnNsYW5kCmluZGV4IGEzMjdkODNi
NzY5NmYzOWMwMWE5YjVjZGZmMWQ0ZjBmZDRiMWY5NGQuLjMwMjFiZGI2MTQ3MzYwM2Y3ODEzOGUy
MzVkMWQ2NjQ3MmI0ZTNkMDQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTEKeWNtWEBZ
eXBlZj1JM3ZTRWlDR2lHTUh6c0E2K3s0bUFQfEd0ZD1wPUhPZX1FWDxaXlRrNCQoQzwtfnNebFRu
VEZjCgpkZWx0YSA3MAp6Y21kblVlMXYmfEkzdyNzaUNMQCtBVFU4KDdRfSNYNyNNYDBZYHp+TE5n
JFlidVZaNHFHYXMxRTw+KHE1cUhBY3QKRjFwc3JDM1VkR2UKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL1NvdXRoIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9Tb3V0aApp
bmRleCA0ZjMzMWE4N2RmNGVkNzhiZTBkMDBiMWE4MmI1YzY2Yzc3MzA2OWM5Li4wYjEyNTJhYmI3
ZTRhYjQ3OGRhMjZlYjBiZTU5YzQ1YjliMTVhYmNhIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRl
bHRhIDExNwp6Y21kbGR4SzQwX3hGYGI8dSEwQzY9bVRPOW57VDdlMmAycjxIejJYZUQ7UVpBNytQ
bUFhM1pzUGRfeCE8b24xZ2cKamEwb35sQk99eC1IVl9YOGBoZ2g0PUd6Pj5UKXtIPUJLel5sXkVl
YSRtM1MxZQoKZGVsdGEgMTM1CnpjbVoxe3hLRDZgeEZ7PEYwfE4reUtwemw7Kmp5V1JQQjBuTk8j
cTJhVWNtP3lZTXBffmM2MUk3VlFfU0kyPn1UKwpzR0o7NWszRjVNQktuakZHMEhobmw9S0JIUzBs
e1d9PF9aPUBoUk1nLWszLWM9PyZEQVowRUw8cUs+ej4lCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL1N5ZG5leQpp
bmRleCBhYWVkMTJjYTI4NGQ2OWUzYThiYTI1ODkxNzAxNzkwYmRlN2Y2NzQzLi43NjM2NTkyYWE3
NzczZmFkNjgxMGE5M2IzMDVjN2RjZDY4OGNmZjM0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRl
bHRhIDQ5CndjbVoyNEk3ZWBUSTN2U0czMng+STstVTtkenpRT09wYnY7YVlgKURnJW1wbHlRPChO
b3AyIzV3ME0xfHQqOGwoagoKZGVsdGEgNzEKemNtYk91eEwkQ0FJM3cjdTMydFVxMWB3RGFFKD5C
bkkxQ0teUCZWSFdrUiVYbl9HZDAmVlB1JVJwTTVfPiZFekBgCkZJUkljQDNNfkt0CgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0F1c3RyYWxp
YS9UYXNtYW5pYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
dXN0cmFsaWEvVGFzbWFuaWEKaW5kZXggMDc3ODRjZTVkNzUxZjA0MGJhN2FiNDM3MTNmMzJjYjky
Y2U5YWZiMS4uMDJiMDdjYTIzMjA1M2QxZDkwOGQwMTk2MjFiNzkyOTg2YmQ5YjQyOSAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSA0OQp3Y21iTykpRlUpT29STUxwZ2ZhNjNhWnZeIVU8REND
RmIjLTdZYClEYyVvfHVIdz1mLV8lKlpKUjBNa0dTPkhxKSQKCmRlbHRhIDg4CnpjbWVBWG5sQ2cj
b1JNey1nZlROSzB8LW5JbWp5OCg5MHJFelAmVkhXa1IlWG5FQCQ0ciFvfFNJMWNqMylHSWRUfgpS
entFMG5GTll5Uyk4dXk/YXNWOWU0VGI7IQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9BdXN0cmFsaWEvVmljdG9yaWEgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL1ZpY3RvcmlhCmluZGV4
IGVjOGRmZTAzOGMyZDEwYWVkMjk3NjNlZjhmNjY0YzhmMGNkMzVjOGMuLmJhNDU3MzM4YmE3ZWM4
ZjZkM2UzOTUwZGViMWI3ZTgyYjE1YzlhNmMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
NDkKd2NtWjI0STdlYFRJM3ZTRzMyeD5JOy1VO2R6elFPT3BidjthWWApRGclbXBseVE8KE5vcDIj
NXcwTTF8dCo4bChqCgpkZWx0YSA3MQp6Y21iT3V4TCRDQUkzdyN1MzJ0VXExYHdEYUUoPkJuSTFD
S15QJlZIV2tSJVhuX0dkMCZWUHUlUnBNNV8+JkV6QGAKRklSSWNAM01+S3QKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlhL1dl
c3QgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQXVzdHJhbGlh
L1dlc3QKaW5kZXggODVjMjZkNTA5YTgxZDc3ZWJmZDY1MjViNDc3N2VkMzJjZDZjOWUxYS4uYTg3
NmI5ZTc4NTYzNDdjMDZiZjhjZDljOGQxYzMwNmRmNDhkMWQ0NCAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSA1Mgp6Y21jYzVlMT5efkkzdlNFaTZzKmNpaTxKOzBWe3xBMCUwSHF2SDIhYG9p
VndPKFM/SntGKzRhIypNYldHQ1gpKTMKCmRlbHRhIDcyCnpjbVhAWmU0bHhPSTN3I3NpNnlLSUFU
VTgoN1F9I1g3I0t2TFlgen5MTmckWmBWZ0A2XzxPVzY7VU5EIS1GKzRhIwpIKk1iV0dtQU1NZAoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9B
dXN0cmFsaWEvWWFuY293aW5uYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9BdXN0cmFsaWEvWWFuY293aW5uYQppbmRleCA3NjhiMTY3ODU3ZGQ4MjgwN2I1ZWY5
MTJiZTMxNTE4MDg2Yzc3MTQxLi4xYWMzZmM4ZjUyOWU1NDMxZmY2MWM0MzIzMmYyNDNjNzJlMWVh
YzJmIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDE3Mgp6Y21hRFBjdnhfUHhGYGI8dSEw
QzY9bVRPOW57VDVJQyp4Kkkjek14KTROT2A8dFlwWiomQHU8NFdiejZ8NzZ5amEKejg0UjRyWSMt
a2MyMWpRWDVEXj4jUXBVKFFMNDJ8ZUdZMm4tR1hhUiVmbW5FUkVWQy1wPH1USn5ycGVGUFRfJG04
Cm5QMnkwUlQrWlI1enk7RSRZaVZVezA1VjAjKlUmKUVQfHJaZSo5MWlBOCo+MncoaXRKZQoKZGVs
dGEgMjAwCnpjbVg+c18oKlZxeEZ7PEYwfE4reUt0QitKKmp5V1JJMm9DOSo1QkF7IWRTJH0kVCsh
eCQ7WEkrcD42XzUoY340Mwp6S3NCdjFQfXo+byE2NktlJk1xTSFWTWF5fSR1TDEmbUt7aWVGYkdU
blZofiZTMlojcCpvQmYkcG5aVlpNdm5EVngKeUdFNj90PyF3NENgNjBXezxhaURqYiUtSmNFfEFm
Pm1SODBGQW1lcD40R3JgUl4kY2A7Tytie3NGJjYtdXJ6NS1vCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0JyYXppbC9BY3JlIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0JyYXppbC9BY3JlCmluZGV4IGI2
MTJhYzIzNTYyMTI2ZGI2YjBhYTNjZTI2ZGVhNjc2MGMxNWJlMjQuLmEzNzRjYjQzZDk4YmZiZDA2
YzgyY2EzMDZhNzRmOTY5OTNmZDU2NTcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzQK
dWNtYlFuYGh7aEp4RmBiPlB5bik3ZnRZOGFMQnF0MlVidGl6VFFWe05yOCY1NGJQWWBIT3R9RFhh
dFo8ZgoKZGVsdGEgMTE5CnpjbWV5dUdMM2JEeEZqbkIwfE4reWZGY2xzKmdPcURWeG1xMUJnNGNF
bDlSMk80N3FAT0QzfkJGaSZlYEhzUWg5agpWTW48P2tBKCQ9KDF9KzwyMTUtT3dFJnd9SDRLKUEm
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0JyYXppbC9EZU5vcm9uaGEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQnJhemlsL0RlTm9yb25oYQppbmRleCA2ZDkxZjkxNDUyZDBjODQ3NGY5MTdjNDFhZGQz
Mzk1ODM4NTA0YWM2Li5mMTQwNzI2ZjJhNjk0NTM1N2IzMjVmMGJiNDUyZGNlNzU1N2JiZmY3IDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc1CndjbWFGSGRXTG1eeEZgYj4mO1lXVGZ0WThh
IUdlaHctRWhmbjRyRnYtMWo9KTgrMnxTPSolQCZHMEdESjZAYztrLQoKZGVsdGEgMTE1CnpjbVhA
WmBpeW1neEZqPEowfE4reWZGPS13KmdPcURWeHJDaE11eTFeT3NiTz9HYnlxSDFzRTc2M289VGBW
JTZ7aQphRVlIQk8qXmJlSDV1dUZfQkZ0ckBZaFl3JiMwM0NSKkE4VT4KCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQnJhemlsL0Vhc3QgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQnJhemlsL0Vhc3QKaW5k
ZXggMzA4YTU0NWNlNTkzMTkzOWZiNjM1M2ZhNDI3M2FlZGYwMGI0OTM3Mi4uMTNmZjA4Mzg2OWE5
YWM4NDc2Nzc1NTg3ZGU4NDc2NjU0YTEwMDAxNyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0
YSAxMDAKemNtYUZCemwzeyZ4RmBiPmh5aypoZnRZOGJLQEtCSntyfl59Q21TK0ZHY3J4eSRSdmtM
PjFJeW1KNHxTNUlrOz9lCko0VUZ4S3hkNjhUNmhRejAKCmRlbHRhIDYwNgp6Y21ZayZKeERAUDd7
PjlWVlVQdDtMKmBIJUQyJmtUVHBmeENwYFpeNGF9MHQkRXVfKik1aXUqWjhYQUhXOUQ7XjgKekxg
eWgkckoqVEBtV1lVR2lHcWZ2M2ZpSzxudEdvREteTn0qVTVeZXZ8QzgjTStOe018ITVHN2hZbTA4
WSpRRHVECnpiT2E1bGlCaThsSWVnNWdqI345O3R0NGw1YF4wUldsPlJgQUBjJiUhYDV9ey16bl94
PCtuV2QhMmp4UUx3T0JheAp6XlRwU15TVnwxPTtONnVUOGdKdnZnO1Jae3I7NHY7X1ZscHpnR1d8
RWRnU3wtTX0wbSRgYyZZdD94MldXLXBGfDQKenNFRnNeYEMzX3MjQ0UxWnUwUGdgam9HbD1KcFU1
T2skcyp6Y25+Wm40UCZ7MnAqQCMwSENOSktyN0xTYGBvQ217CnpqP3xLfWBqKVk/ZSZlJUkmQXxh
Q0xDa2BmMX5Dc31CRShFM09AKX1OcXskR29sezZoPHpMRjleV1BuSVBxIUBiTwp6MDhKcGVLKHZB
QTFKTVlnbGFnOU5eaW9uWWg7Qi0xMmhtU1M0SXcmMFlBRzQoVmhsWlRmVGo+I0E9Kk9LbXJVRE4K
cSkjdDdCcn5jUjVqQH54PmlaT0Y8aGo0cWBebUtVflVRS2dxUFNHaEdVWUZDMjd4T08obGNDbEMK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QnJhemlsL1dlc3QgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
QnJhemlsL1dlc3QKaW5kZXggODU1Y2IwMmM0MDgyNzE5ZjNhNTFjODQwMTI4OGMwMTNlZmVmZTY4
My4uNjNkNThmODBmNTU2ZTFjMzEzNWQ2ZGJjYjJhMmRmYzZmNjFiNGZjOSAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApkZWx0YSA3NAp1Y21leXlhKSlKdHhGYGI+UHluKS1mdFk4YUxCcXQyY0RRNjBZ
Y2V0ZHI4JjU0YlBZYEdPdD03bktNRVRGCgpkZWx0YSAxMDkKemNtY2JeQHtNSkp4Rmo8SjB8Tit5
ZkZjbHMqZ09xRFZ4bXExQmc0Y0UoaTR2PnZqTXE0RmhOYHZ0TGgmUlhAPHBPClRqRXBjWGQ9TjEl
OChqa3ZJfTxKZEFLNEM0CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0NFVCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9DRVQKaW5kZXggNGM0ZjhlZjlhZWQ4YmY1NjdjZTcyN2MzM2JhMWI5N2RhNmY2ZWU3
ZC4uMTIyZTkzNDIxMGNhYmYwYjI5YTJkZDdkMTFlYjgyMjBlZDFjYWQ0MyAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApkZWx0YSA4MQp6Y21kbGN1dWZvdEkzdlNHMkBAdEpNdXkzUz48eUM+bkFtdDI4
MkFKalNRIXsoNm83JmNtP1N9SkhqNlRjdTs1Y1AKSVMmQm1qMEUoOW0mSHctYQoKZGVsdGEgMTE5
CnpjbVoxe3V1V2lzSTN2cXNMMXZNU0l0b2xvNDIrV3QqPXJeekZtZHJQRnZ1dHtHQjdhazJ7NW91
ZSF3S2owJVM5UQpxNm1KJH00cT9Ia1FVUm9yJWhAJFYqVTtIREk3RytTU2tGfD9LKiFoNjA3VUI+
YXsmTVZ0UTV4cAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9DU1Q2Q0RUIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0NTVDZDRFQKaW5kZXggNWM4YTFkOWEzZWE0NjQ1Nzk4NTE5ODU5N2Q5MGY5NTQ2MmE3
MDE2OC4uY2E2NzkyOWZiZWIwNTA4M2M2M2U4MzE5ZGQ5ZWJmNjViM2Q3NWU0ZCAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApkZWx0YSAxNjUKemNtZXcrKmR7YlZUIyVLNGZkUGE7VUA4IV5acSRmaVZx
O2ByV01FPlJKZHZxb3ZIPUlULTJlWnA3Y2o4PXxHI3FzCmpCTGtTXjBGeWlyQHlXVyg7Pjx0fCpp
NzQ7JWU7biNKbVYoYzxCJExWazNsaWIKCmRlbHRhIDE4NQp6Y21abkBgWClGKlQjJHU8ZmRQYTtV
QDghXll9QU5nVnE7KXJVfVIjUkpkdnFvdkk3VVYhVDxqfEghdzIlfEcjPHgKcTB9R2hWMFZhOHpU
fHlYfmdNbTA0aHl5fUVXLXgqPEhnaCtaR091QncpWm9lUUkzeGZPSDhCTU0KCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQ2FuYWRhL0F0bGFu
dGljIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0NhbmFkYS9B
dGxhbnRpYwppbmRleCBmODZlY2U0YzQwMzI2MzRiMzUyNjE4N2M1Zjg2MzY0MDc3YjlhOWIxLi43
NTYwOTlhYmU2Y2VlNDQyOTVhNTU2NmFkNmNkMGMzNTJmYjgyZTY0IDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmRlbHRhIDQ5CnVjbWFEU14rME5aR1VwUXAxX285ajdUSVZwZnFDO21XQGtvKCZ9TENx
MSRMbUEwXntUYFVJX3BfbyhxY3IKCmRlbHRhIDcyCnpjbWFETF4tZ01uR1ZmQ2MxX285ajdISSR5
OCs5ZnlHY3J2NiRaV1h6RXdkMSNBWUFlWFAhYT8tYkZlQ35Mc1UkRApMJWx2K18yZEBNR2FnaC1A
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0NhbmFkYS9DZW50cmFsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0NhbmFkYS9DZW50cmFsCmluZGV4IDJmZmUzZDhkOGUwMTI0NDVhYTk2MWZjNTNiMzg5MzQ2
ODFkZDJhMmMuLmFjNDAyOTlmNmIyNzA0M2U4ZjI0NTRhYzU5NGIwZWMxODRjMWEyMzcgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNjkKemNtWD50d25jMSRHVUtqfERqeWcoT0U2VjJQVHQ2
NkhyYXJnWXd+azBwVUx0cCVBQzZ4NyNQQHJTWSZmQiVONkYkClFgVyR+NEMrbCFrQSpvOU4wMDVt
OE4mby09CgpkZWx0YSA5Mwp6Y21kbFljM056TEdVTSl6RGp5aEdvVlZ2YypldD9TI1c7QiltO0t+
KFR6LT9LU2Q8MCNGZmNIJTFGXl50QU9RbEsKaS1CXytMZ0IzM3A8Nno9cVV9Nk1BV3xxa2xuSDQ4
SGEwTmlNcnZVJjZ6Wm19agoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9DYW5hZGEvRWFzdGVybiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9DYW5hZGEvRWFzdGVybgppbmRleCA3YjQ2ODJhMzllMmZjOTc0
NTBjOTllZWQ0NTc2ZDJhNDYxNGJmMjk0Li42NzUyYzViMDUyODU2NzhiODZhZWExNzBmMDkyMWZj
NWY1ZTU3NzM4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDMxCmxjbVoyNHktYSQ4MVN7
dUQxX2xPSkFRc3VJJD9DenJgMnc+bDxLKmVRNSYoUlAyYWY7JQoKZGVsdGEgNDQKdmNtWjFgeTxV
MlExZ3FkSDFfbE9KQVF0JW5CdFQlWkJDN3tHQmc1b3tKYklKPUZASy1qJDE0RTwrdkV6KAoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9DYW5h
ZGEvTW91bnRhaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
Q2FuYWRhL01vdW50YWluCmluZGV4IGQwMmZiY2Q0N2Y4NDViZDEwMWE3ZWM5NzE1MGRmNzgyMWI4
MjYzNTcuLjNmYTA1Nzk4OTFhOTc2MmI3YzEzMWVjNWVjZTVkNmQwMjQ5NWJmYzAgMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDcKdGNtYURQYlZYPV9HVXFHPzFfbzlqN1RJVyEhOENhJChA
JXVSPUVja3hTYiMjO0NWTyM4MDAxVjk0NXQ3OQoKZGVsdGEgNjMKemNtY2EyXmhqdWVHVmcyIzFf
bzlqN0hJJHk4KzlfNjcjU3Z+YWFeMDYjakdwe20tXypmMUEpIWNtQGx3XjZ9JHJnCkR4ZGpkMAoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9D
YW5hZGEvTmV3Zm91bmRsYW5kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0NhbmFkYS9OZXdmb3VuZGxhbmQKaW5kZXggYTFkMTQ4NTRhZjZiODJiZmU4MTRmMmM2
NGFhYzAxYmMwNTNkNWZjYi4uNjVhNWIwYzcyMGRhZDE1MWZmZGNiYTNkYmU5MWM4YmQ2Mzg4NDVj
NiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzOApzY21jYTBiNmpSYUclTSRPMV9sT0JB
ZVAqbSEmPD5VYDZHfHlCd250fiskXzNgbFRHPWcwbjtXNCY7UzRjCgpkZWx0YSA0NQp3Y21YPnVi
M3RaOUdeXmtUMV9sT0JBZVFfQUJ0VCR1M1RwKkJCZzVuZUpjXnErU0BhbnY+K25lZjBRPUdrNCom
b0YKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQ2FuYWRhL1BhY2lmaWMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vQ2FuYWRhL1BhY2lmaWMKaW5kZXggOWI1ZDkyNDE3M2U2ZTcxYzJjMGE3M2NmMmFjYTM2
OGQzYWYwMDJlNi4uMGY5ZjgzMjgyMWI2Y2ZmNDUxYjVlY2NjZDBiNmVhYzhlNTNhOTE5MCAxMDA2
NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzMAprY21jYUFjMUNRMkJNYXZ+MV9sT0pBUXNzaSNQ
V2Y0dklfSUIkK3B9UTBFNUVfTkJ7cjsKCmRlbHRhIDQ1CndjbVg+amMyI1ZIQmE3Z0UxX2xPSkFR
dCVuQnRUJVo3dDA0JEhVPWd9Q1Q1biZqJEdSKGY4ej1SME9zLXZEZ1hjZwoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9DYW5hZGEvU2Fza2F0
Y2hld2FuIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0NhbmFk
YS9TYXNrYXRjaGV3YW4KaW5kZXggNWZlOGQ2YjYxOGUzNGM0Yzg3YTdlYWM0M2Y3YTI3YWY0MTE2
MWQwMi4uMjBjOWM4NGRmNDkxZTQwNzJlYzRjNWQyYzkzMWE3NDMzZDlmZDM5NCAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApkZWx0YSA1Nwp5Y21hRkZldWFJNEdOJm02MHxPZm5PSDRHbEdDN2YxYmd+
cDxIJHJncEhwVWY8UH5pK1ZGNlpEN0djRXZpeSRwRSgKCmRlbHRhIDYyCnpjbWNiQHspbH5vR09y
bH0wfE9mbk9FZHQ5aThAeXA4NzJvWipHe2Z3UjJHQ3d7UXlkVnp+K15WRDtVOEZuZ05VZgpCM3tl
MDgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQ2FuYWRhL1l1a29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0NhbmFkYS9ZdWtvbgppbmRleCA2YjYyZTJkM2MzOWE4NDA2Y2RjMDg3YjM4N2ZiZGFjMDcw
OWY5MTQxLi5mYjNjZDcxYTY5ZTMwMzhmMGQ3N2U4ZGRkMzI5MGEwOGZiOTYwZDljIDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmRlbHRhIDMwCmtjbVoyMHV0Wj5rSFp4fkUwfE5zRzVHIXVCVmdBODlT
JWN9cFdLaitZMEM0Q0JRdmQofQoKZGVsdGEgMzYKbWNtWjE/dXZURCRIblUmQDB8TnNHNUcoIXc1
K0piSWchdTxFQmcxNEpfOCRPPUQraV9rCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0NoaWxlL0NvbnRpbmVudGFsIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0NoaWxlL0NvbnRpbmVudGFsCmluZGV4IGFi
NzY2YTQxYmMwNmRiMjk1NjE1NGRhNmUyZmIwZGZjM2U5YzFiMmEuLjgxNmEwNDI4MTg4ZDk5ZjQz
NzAwNDMxMmVlNzNjMzg2MGVlMGY1NGYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTEz
CnpjbVhaWUo0aXhOOUxNcFM3R3pYcDNYIXhGMVZOJDRrWHwmTCl4b0F7aF9hVnhYNHktN20/Wj1h
KG97QSExUUYoVAp6JH5pYT81ZS0yPlFfI0BoKG9oNXFRQV90TDRWVFpvY2whVW5aO25Ab3ZSZzhS
aCNGNiVidWpCITZUP0EwOFNQWTQKektCPWV1YiF4YGhyYjhWY0QpZCNVITtRNWZ7TCg1VHBZTE0h
JHx8RmU0YFN9UEJ4NHRzVm1eSDw3WT5kQGU1QGNCCnpRJVdyaj8jdCFUTCQlVkwqUSl+d204aTw8
cS0jVmFPRUpDbikyRyZOMCgjQHdyOGR0engrISh0RTRLRlJJKF56Swp6dyZRTk92LT5NRExrLTJl
cktRNGxWaS1vWGA4YlBEKV9XX3JualolREF+eiM8QmV4Xj5CTzh6JSRkPENeOSVOSGwKemF+SEE9
KkB0WEljNENJSHlmN0ZValNOU3xCTFI+SU5DK2ViNShKNC0pKG5IaEs+e0k+a1dlT0dnSU4zXjch
bk4kCmdocn5sT3B2MnN7PHZWdzB0OVNJZnozdmBReDM0U1VgK3V3WDEzaG4+Qj4oXmIKCmRlbHRh
IDUyMwp6Y21YWllLUyU7bTBMU3JEN2lsdkMzeGJAMkFvTHw9RXh7V2FZVXQwPjZxU21JbWYwVEBG
KUpNbFQ1N1NEcU4mPG0KeklNYDVkVj9obEt7ZWd5UlpIcFI9MjdCS30yWH4qbG84SXNIPyl+czhr
RilmJkJje2pxPzNyM2QlbSFFT05NJUFxCnpUWCR1d29LfkBWUj5tVl5EKmlrdjZIPShlTVpaaz9u
XmtoWk97TjsoWUEqalA9VSpSSElfazMqdUQ/Vl57QDlEQgp6NGBSdnhWbFF2aSNFTnhnWE9qbWFg
KnZqS2hLbk0xYjFDeVo2X3IwYmxtJDtnNn1IUkx4QXItdWltOH1memFMWl4KekJTVWlZeWhEfGBJ
OyR0bmM4Qk5Ldk1qZzBUazg3M1JsUmxIeGl+VylvRXRlaWEoLWszdklFJi0pTyhPa00hZ0ghCnpY
NEx6VGpZaG9fKl4yRE41fkYheEk1SGp5Zko4dC1BVGZ8Mk5FRCtFZ1R5aUZLdTlFYDR1IS1yPlJ7
VGlNS3BkOAprNHZCe1pMP1dVTkRVRlJyTCRgQX45b35VSkM9ZD5ZZGI+eWF7QDxHWjBQI2tsZSpn
ZGcKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vQ2hpbGUvRWFzdGVySXNsYW5kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0NoaWxlL0Vhc3RlcklzbGFuZAppbmRleCAwNjBiZWY4MTg5OGI5YjQ1NDkyY2Uy
ZTJlMzVmYjIxOGY1Y2MyMTNhLi5jYWUzNzQ0MDk2NDAyZThhNDUyMzM2NTQ0ZWRmOTZjYTlhZTVh
ZDhkIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDUzMwp6Y21ZayZKMWojezBFaEEwdzkq
Z35eJSEpSkFRQjFNdDcjTjVvVjd6dVZpNC1wXnI2KE5eezg/YWlKQFZrTXdeSXEKekpEM2NUUXpB
eVhOK2chOUx9RnM3YCF4b2AmRmBFJG8mUl58eE4qcFcjbUduR1dIT19JUy0rZWI0WFd1X3gxOHxg
CnpIUzRkRmI0fjNrKWIkfWxVcDV0UHNNVyktWjZmbWR1MTlhSkIzNjlYPVRBIV9ldEQlWVdGRSFo
KFRTZHokY3ZANAp6bCpfe2hWckJlVHU2QUNpd1Z8WDtSJUtQbklWTXgzeExXQG5rUSl5SHdmVytk
VGp5QG9uIWZreCt4cmZjSWN3MigKejUtemQzX29FdmxefTtCWiVOQVIlWG04SEYqJFgrWndXSW5f
KD1AeUpIQzshb3k7ZmRzVU5sfmhFST9LdU9PUTNsCnpCNGliXnRmSUxOU3k8NnJpN1o5ZEI4IXBM
WGZUfXZeTnxFZDF8JFdOMTQpOHBMREM/M2tWRjtET2hfc3U3bV5JZwptWDUhT0cjfUQhJDM2WUZR
TitmNSt8NEUtMzJWSCV4ZXooV2Q2WSYwPllKTEcpNFcjLTIKCmRlbHRhIDUyNgp6Y21YWllLUCZA
TDBMU3JANG96JV9MYHxBVkJvZi1FcCk4VSY3I1JGbk9vRnkpbndGfFJCfjJDV05Xd3NldmFxcn0K
ekZfZmZ8VmA0UDtsYU1na2dgcn1vX2tENTYtUkpKNl94b1BqSEAzUjIlUmxYaXNqKz0keHx8WC17
dUwpdzhXJjtECnpve1NXZERwRjAkWGxQVkxwQ0BFWTNLaEhQbFd9aUBpWFhKZE1EMUo2V2A1PHwr
b01XYG8xT1hGRk9pWnomY2V4cQp6U29GUilPSXV+SlkrWDYmX0BQTEBBM0xpPElrOT9Jayh1dDIl
QTZqX3Rlc1dhP1NrfkllTkwpZUF8bHVDMmhfJiEKenB4aXViUnIhdX5TKipCVWkjQEozZClLbG94
NHhVSWBvVlBgYSZAXmxIeUBsR0lYfClpKkAwfDlfODlkaFdTM0VJCnpMLXJaPE1yNVpeWiQ8Vlpu
PSNMRFVLbyFBS3E0Ul5rUWhpMUJubEc3c04qMWtqNS1uJCVCVylAIUhoYlpIZlJ4IQprQUgraWZB
YHl8ME5LOWpgUjxud1pgPWhibjd3YHJCZms1WC1AQmRyPEFBNCR9UVVDd3wKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vQ3ViYSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9DdWJhCmluZGV4IDFhNThmY2Rj
OTg4ZWE2ZWMxYmI2NjBjZWFiZTg1ZWExOWU1YjA3NzQuLmI2OWFjNDUxMDc4NGYyM2VlNzk0Y2Q2
ZDExZTYyMzE1YTczMThlNWUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTkKemNtWm5f
e3ZiMyNvUk1McEw9XkpgYVp2XiFVO2AwQUZiOVoxWT1PO2RtPjtrKEdFUUV8V0gpJk0yZ35GTzlG
ciQhCkhhPkBWelMhTjlQCgpkZWx0YSAxMDIKemNtZXckKUc5bmRvUk12I0w9LWF7MH5reVltaiR0
KUpjaFlZdyFqYUZHe2ZlMyVudytZNyNKcnZheVUlQiVRUkk5CmhCRl5POzlBZkoxNX5BYTR0WUBU
V3BsX2gjWWlPdXYyeEoqQDBSVHtLNXF8JngKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRUVUIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0VFVAppbmRleCBiZWIyNzNhMjQ4MzhjOTZlODFmMDQ2OWUzODI3
YmVhMjBmZjkzMGMzLi5jYmRiNzFkZGQzOGJlOGY0YTIzZTU3YmRiNGI4NmU1MjE5NWU5Zjg5IDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDExMgp6Y21jYkBfbDBrUXhGOER5MHxOK3lLb3Q8
UFl9OXplSTlaVj9afUleKTl2JWg7ODNoSmIxX210eU11eTNLT3AreyYKVUshOG94PUpRTmZtfm0+
R1l7YWV2MDIyV2NRVUN3fAoKZGVsdGEgMTE5CnpjbWV5dWNaRnwpeEY4YikwfE4reUtvdC0oWlBh
K2ZJOVpWP2NkYEshcDlGKUowVjdhUU11Q0NWKWlwU1QhUFBaewpZZmV7Rj5ZMjE5RD0/WEpVcndC
SGtsWWBpbTBDVEFtMV5AczYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vRVNUIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0VTVAppbmRleCBhZTM0NjYzM2MxNjkwZDQ5NTMwZTc2MGY4NTA2MjE4YmZhOWZl
ZWYxLi4yMWViYzAwYjNmYzA5NjAzNWI5ODEwNTE5ZDc3OGQwNGEzNTYyYTQ0IDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE0CmxjbVdIRSUxa3EyQVA1K05EcD55aS0/QFEtIThKSTlB
JXJZbFR0S2ErVG1YWTE0TVlGewoKbGl0ZXJhbCAxMjcKemNtV0hFJTFrcTJ6eU9SdTVmRnZ9NVMh
KXl8RDc4YzcraXh4ZlNlRypgZTBfVHtEN0gpWXljT345OClkOzJ5UEJSCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0VTVDVFRFQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRVNUNUVEVAppbmRleCA1NDU0
MWZjMjcxNjQ0ZTQ0OTczOTg5YTI3ZjM4NDZhMTY4MDBjYWY1Li45YmNlNTAwN2Q0ZGJiODcxOTc0
YTY5Y2IwZjY4MTUxYzFlZTIyNTU2IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDE2NQp6
Y21ldysqZHtiVlQjJUs0ZmRQYTtVQDghXlpxJGZpVnE7YHJXTUU+UkpkdnFvdkg9SVQtMmVZT0gh
IWdMfDl8YGQKakJMa1NeMEZ5aXJAeVdXKDs+PHR8Kmk3NDslZTtuI0ptVihjPEIkTFYtTWNkUgoK
ZGVsdGEgMTg1CnpjbVpuQGBYKUYqVCMkdTxmZFBhO1VAOCFeWX1BTmdWcTspclV9UiNSSmR2cW92
STdVViFUPGxxND1eKFB8RyNxcwpxMH1HaFYwVmE3fFR8eVhLZ01tMDRoeXl9RVcteCo8SGdoK1pH
T3VCdylab2VRSTN4Z04xdV9LeQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9FZ3lwdCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9FZ3lwdAppbmRleCBiYTA5NzUwNDQ1OTY3M2UyNTQ4MzFlZGVhNjg5YzJm
ODE0Mzk5MGRmLi5kM2Y4MTk2MjNmYzllZjkwZDMyNzM4MGZhZDE1MzQxZWMxYTBlMjAyIDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDUzCnpjbWRuT3puRmk1STN2U0dpNSpONiM2PWxeZkNX
U1ZLfEsoSSp1MHhMbjEzKSZXQEtOJSZnSlNGcUhEd2owMD1BegpBTUYwUSoKCmRlbHRhIDgwCnpj
bVozP3psREUtSTN2cU9pNSpOVjNfdmhKVG95IXcqKzlBaCVJNXQ2V1ByZnRLVEpRRTg1dCVVRmE9
SndYWDJSYgpSJWtJdyY2NmJQdDRiZTU/MHNzfVQ0S0R4eQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FaXJlIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0VpcmUKaW5kZXggNjU1ZGFmMzc4ODlmZDEyMzgw
YzdmMDU1ZjJjZGQ4NWRkNDY2NWUwMy4uMWQ5OTQ5MDJkYjIxODE0YTYyNmU0MjYzOWQ3YTk2YjE4
ZWU3Mzc1NiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzOTMKemNtWD50eStuRn54RjlE
MzB8Tit5eiFNPG1vVHk+M0YoczNFQCtEXjlkS09qfFJ0YDR5ZnI4dmY3RWt1KCl0RyNsCnVNVDNj
dmFxQG9fTU50ZlExS2xuJSpfSmhEXkc0UCFZJj91aUVYKilDYDY5RjVWRC12VVVOcnpaTD5fWWgK
CmRlbHRhIDQzNAp6Y21aMT9lT2h7Z3hGOG47MHxOK3l6KjhYUm55NnZIdlVHfCkhXlZWNlc9Nktq
N253YUxLVmFzbD1WYSM/UHpiZXIKekAmWG5PQ0kqNFkwbFllVjQyK0NtWDlFYyFZbDY1ZXZSfEhv
YH50KXhLY0gkUllwfntrSiteclE+a2MtNDIxWF9wClJXO2gob3skdjY5WmdMJjM4VVYja0IrVVEt
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0V0Yy9HTVQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRj
L0dNVAppbmRleCBjMDVlNDVmZGRiYmE2YTk2ODA3ZDMwOTE1ZTI1YTE2YzEwMDI1N2U1Li5jNjM0
NzQ2NjRhMjg5YWEzYzNjMGQ4YjJjZTA2ZDQ4NDY3OTc1NGMwIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMTE0CmhjbVdIRSUxa3EyQVA1K05EcCgrQCs8aWtCTGRlcF4xPU1RNTFwc0Q3
MjR3Jk0KCmxpdGVyYWwgMTI3CnVjbVdIRSUxa3EyenlPUnU1ZkZ2fTVTczxVYXJYQFlHQ35PSmdQ
Rm5kMTctQGMwYkQ/SDQ3ZFFlS0w9c30KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVCswIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQrMAppbmRleCBjMDVlNDVmZGRiYmE2YTk2ODA3
ZDMwOTE1ZTI1YTE2YzEwMDI1N2U1Li5jNjM0NzQ2NjRhMjg5YWEzYzNjMGQ4YjJjZTA2ZDQ4NDY3
OTc1NGMwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE0CmhjbVdIRSUxa3EyQVA1
K05EcCgrQCs8aWtCTGRlcF4xPU1RNTFwc0Q3MjR3Jk0KCmxpdGVyYWwgMTI3CnVjbVdIRSUxa3Ey
enlPUnU1ZkZ2fTVTczxVYXJYQFlHQ35PSmdQRm5kMTctQGMwYkQ/SDQ3ZFFlS0w9c30KCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dN
VCsxIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQr
MQppbmRleCAwODI5ODZlNzZkNjIzZDViMGQ0N2U3YjY5MGNiYWJkOWNmOWEwZGVlLi40ZGFiNmY5
MDA1YmVhNTBhMDY1YzY4NWVjODI2MGIwZGEyYmZmOTIxIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTE2Cm5jbVdIRSUxa3EyQVA1K05EcD55aXxNLUR7TEQjXkxBJXJZbFRzQTx4Yzd8
TDRzS15iRgoKbGl0ZXJhbCAxNDgKemNtV0hFJTFrcTJ6eU9SdTVmQkNlQ0xqaX1Tc0gqdXtyfl59
ODVzV218TS1Ee0xEIz8jQz14PH4yfHN9OVZGMSU0CkxFKnFlVWM3fEw0YSVtT18KCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVCsx
MCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01UKzEw
CmluZGV4IDIzMjc2Y2QxM2FhN2E4ZmU0NmQxMDllNmE5YTJmMzMzNzJkMjcxYTguLmM3NDkyOTBh
ZjJmNmI1ZmUyMjc3MGMzNGViMWU4ZmM4N2NkODVhZmYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
bGl0ZXJhbCAxMTcKb2NtV0hFJTFrcTJBUDUrTkRwPnlpRkhUQCEmXjB0KjJxOC1zbWttJl9vdUw2
MjA5eWVJcXlQV18KCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNMaml9U3NIKnV7
cn5efTg1c1dtRkhUQCEmXjBzd2lpRDcwIVZqUSY3e0R9JQpNJUxadG9vdUw2MjAyOWctOH5efFMK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
RXRjL0dNVCsxMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9F
dGMvR01UKzExCmluZGV4IDI4YzU3OWRjYWI2MmM5NThmMTc2Njg0N2ZiMzE2ZjY0ZTg4NTQxMjMu
LmQ5Njk5ODIzMDllNWNhN2QzMjk3OWE3ZGFkODE0Y2EzMDdkMmNkOGQgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAxMTcKb2NtV0hFJTFrcTJBUDUrTkRwPnlpUFlxeVQmXjB0PDJxOC1z
bWttJl9vdU1IWTA4dTBoWXliY04KCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNM
aml9U3NIKnV7cn5efTg1c1dtUFlxeVQmXjBzIWlpRDcwIVZqUSY3e0R9JQpNJUxadG9vdU1IWTAw
JVZfPE55RXcKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vRXRjL0dNVCsxMiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9FdGMvR01UKzEyCmluZGV4IGM3NDA2MDM5NjlmMTAzYzUyM2MxM2IwNGI1N2VkMmVl
ZDQyN2Q5MDguLmNkZWVjOTA5NzNiZTI4ZWU0MDc1ZWFkZDIyYjhiNTc0ZGIyZDdhNWYgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTcKb2NtV0hFJTFrcTJBUDUrTkRwPnlpNHxpWi0m
XjB0LTJxOC1zbWttJl9vdUxzSTA3cGopR3luaHEKCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenlP
UnU1ZkJDZUNMaml9U3NIKnV7cn5efTg1c1dtNHxpWi0mQH18PDM/YWRVQTMqZ21mTjJ0IQpMNGJW
aDhMbkFII2BqSGM/CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0V0Yy9HTVQrMiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9FdGMvR01UKzIKaW5kZXggNzIxY2RlMmYzODk2MTYyZDg0NDMwZjgzMmZjNTQy
NmJmMmVkYjlhZC4uZmJkMmE5NDFmZGE5OTZmNGFiYzFmMGUwOWNkZjk5YzI3MWY1YTFlMiAxMDA2
NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNgpuY21XSEUlMWtxMkFQNStORHA+eWlmQmIt
ZkxEI15EQSVyWWxUc0E8eGMxQnpQcENrPWYKCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenlPUnU1
ZkJDZUNMaml9U3NIKnV7cn5efTg1c1dtZkJiLWZMRHZBSkdsVD5hZWdNX08wSCNTPwpLSGI0e1lq
Sk49MTRIZUo7CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0V0Yy9HTVQrMyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9FdGMvR01UKzMKaW5kZXggYWUwNmJjYjY1NGI2NDFiODZjNDAyNTRkZDBhZGNlNDhh
ZjgwYzViZi4uZWUyNDZlZjU2ZjE4ZGU2MTEwNWFmMGMxNGQyMDFmZDA5MGY3NDkwNSAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNgpuY21XSEUlMWtxMkFQNStORHA+eWl6an1kekxE
I15UQSVyWWxUc0E8eGNFKCUpbTRGUSgKCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenlPUnU1ZkJD
ZUNMaml9U3NIKnV7cn5efTg1c1dtemp9ZHpMRCM/LUM9eDx+MnxzfTlWRjElNApMRSpxZVVjRSgl
KVMrTnpFCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0V0Yy9HTVQrNCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9FdGMvR01UKzQKaW5kZXggNWE3Zjg3OGM5OGQ1M2I1OGRmYTU5NzM4YzI2ZjA2ODlhMWI2
YzZkYS4uNWEyNWZmMmE2YWZkYTJjYjA5YjllMTQ3YWQyMDYxMGJjMTkyMzQ0NCAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNgpuY21XSEUlMWtxMkFQNStORHA+eWlLWW9DTExEI145
QSVyWWxUc0E8eGJ8emNeaWApJDgKCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNM
aml9U3NIKnV7cn5efTg1c1dtS1lvQ0xMRCM/cEM9eDx+MnxzfTlWRjElNApMRSpxZVVifHpjXk87
cl9PCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0V0Yy9HTVQrNSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9FdGMvR01UKzUKaW5kZXggMThjYmYxZmUyYmIwMjgzNDNlMzYyODU1NTNhZjEwNWNkMWVkMTVj
Zi4uYzBiNzQ1ZjFjYzQ0ZDAzYTAwZjhiZGYxMjdjMTU0MzkyZTNiYWYyNyAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDExNgpuY21XSEUlMWtxMkFQNStORHA+eWktP0BRLUxEI15QQSVy
WWxUc0E8eGNCV2hhZjtiR1kKCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNMaml9
U3NIKnV7cn5efTg1c1dtLT9AUS1MRCM/KEM9eDx+MnxzfTlWRjElNApMRSpxZVVjQldoYUs9fkNZ
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0V0Yy9HTVQrNiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9F
dGMvR01UKzYKaW5kZXggMWFhNGJlODgzMDIzMDhhOWE3NjRkMGRkNjMyYjc0YjMzMjU1OTJmNS4u
MDZlNzc3ZDU3ZTAyNjdhMDYzNWI2YjI4NDcyOWZkZGNmZTYyMjFkZCAxMDA2NDQKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDExNgpuY21XSEUlMWtxMkFQNStORHA+eWlVJWh+VkxEI15IQSVyWWxU
c0E8eGM0a312YyQ1cnkKCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNMaml9U3NI
KnV7cn5efTg1c1dtVSVoflZMRCM/eEM9eDx+MnxzfTlWRjElNApMRSpxZVVjNGt9dkdAVFVpCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0
Yy9HTVQrNyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMv
R01UKzcKaW5kZXggY2Q4ZWQ0OWFmMzIwNGY3NmNmMjU4NDQ5NDIwMTUyMDVmZTdlMzYwYi4uNGUw
YjUzYTA4MmYxMWY5YjlkZWJmNWUxMTBiOTdiMWIwNDczYzlhNiAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDExNgpuY21XSEUlMWtxMkFQNStORHA+eWlwRjRxcExEI15YQSVyWWxUc0E8
eGNJSTNGWnR4NjEKCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNMaml9U3NIKnV7
cn5efTg1c1dtcEY0cXBMRCM/PkM9eDx+MnxzfTlWRjElNApMRSpxZVVjSUkzRkNfeG1zCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9H
TVQrOCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01U
KzgKaW5kZXggZTBiYTZiODg5NzAyODc3N2ZhOTMwY2U0YTgzMjMwN2Y3MTZkZjI0MS4uNzE0YjBj
NTYyODg5YThhNzc0ZDlhYTI3ODEwZDg0MDAxNjRkMDBlNiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDExNgpuY21XSEUlMWtxMkFQNStORHA+eWk/ezhwVyZeNTROMnE4LXNta20mX29k
cCpGV2xSaFIKCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNMaml9U3NIKnV7cn5e
fTg1c1dtPyswPnA0Sj8ybkF0YWRhMUU/TWJGaXFtSgpLMGgoeE0hMzYqdDxySUpiCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQr
OSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01UKzkK
aW5kZXggZWVlMWJjYjcwZThmNTllNWE0ZmRjZDA0ZmJiZDlhY2VjODhmYTA0Yi4uNzhiOWRhYTM3
M2QyYWEyODU2ZWFmY2M5MmViYzZkODk5Y2FmZGU1YyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDExNgpuY21XSEUlMWtxMkFQNStORHA+eWlaIUJQNyZeNTRSMnE4LXNta20mX29oMjZs
VGNgYHIKCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNMaml9U3NIKnV7cn5efTg1
c1dtWiFCUDcmXjUzR2lpRDcwIVZqUSY3e0R9JQpMJUxadG9vaDI2bDR+WX49CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQtMCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01ULTAKaW5k
ZXggYzA1ZTQ1ZmRkYmJhNmE5NjgwN2QzMDkxNWUyNWExNmMxMDAyNTdlNS4uYzYzNDc0NjY0YTI4
OWFhM2MzYzBkOGIyY2UwNmQ0ODQ2Nzk3NTRjMCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDExNApoY21XSEUlMWtxMkFQNStORHAoK0ArPGlrQkxkZXBeMT1NUTUxcHNENzI0dyZNCgps
aXRlcmFsIDEyNwp1Y21XSEUlMWtxMnp5T1J1NWZGdn01U3M8VWFyWEBZR0N+T0pnUEZuZDE3LUBj
MGJEP0g0N2RRZUtMPXN9CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQtMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9FdGMvR01ULTEKaW5kZXggNGZmODcwMTQwNjA3NGVhZjgyYWExMTlhZDc1
MDQ5ZTdkNDFiMGM2ZS4uYTgzOGJlYmY1ZTdiYWMzZTEyNTdlZWIwYTYxYzFiODNmZWIxMzI0YyAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNwpvY21XSEUlMWtxMkFQNStORHAoajhf
eWlhanY8KGF5TGRlcF5XZHFifXIpJFVzMEIyUE9IMj9xcgoKbGl0ZXJhbCAxNDkKemNtV0hFJTFr
cTJ6eU9SdTVmQkNlQ0xqaX1Tc0gqdXtyfl59ZmZOSXUwMFY9emZnejk7TFZeaURLdzY7eSg8Q2sl
Cktwb3c8NmhGayNPN1k/bGUKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVC0xMCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9FdGMvR01ULTEwCmluZGV4IGUxMmU0NjFkNTBhMGE0ODg3MmQ3YTZk
ODE0OTM2YWJhYWE0MDY3ODIuLjY4ZmY3N2RiMGQ5NWM3ZDA1NGVmMzNjMDVlMDViYTcxYmNiYmJk
ZDggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTgKcGNtV0hFJTFrcTJBUDUrTkRw
KGo4ZEtORytYZDQ8WmdwajMrJUxiXnxQUz88WTNqb1duMiFRfHEKCmxpdGVyYWwgMTUwCnpjbVdI
RSUxa3EyenlPUnU1ZkJDZUNMaml9U3NIKnV7cn5efWZmUGZ9MHROPGNManhjeWdhaXxRZlY0c1py
YiUyagpMS29qa0I0R3AqZVdrP1lECgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQtMTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVC0xMQppbmRleCAzN2YyNzM5NzRkNWFiOTEzMjFl
MmQyMzYxMjFmMjdlOTU3YTBkOWFiLi42NmFmNWE0MmJlNDQwZjFmYjhmZWMzYjkxNWFmYjQ5YjM1
NmY2M2E1IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE4CnBjbVdIRSUxa3EyQVA1
K05EcChqOFdeR18jJl45ej0ycTgtc21rbSZfb3Z4dUY3WGEzQTIqQ2dWCgpsaXRlcmFsIDE1MAp6
Y21XSEUlMWtxMnp5T1J1NWZCQ2VDTGppfVNzSCp1e3J+Xn1mZlUyNjRHYXcwaEs0e14ybmk8cTBC
TUIrT3B+fjUKTWZGfDFNOFg5cnwwQ01zWElSRjN2CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQtMTIgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dNVC0xMgppbmRleCAwOTI5N2YxYmMy
NGVjMWQ4YzQyZWI2MTI5ZDNhNDY0MTI4NmY1YTk5Li4xN2JhNTA1NzcyN2RkNzNiZDVmNjIzNGNj
NWIyMzliNzFhODYxOTQ1IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE4CnBjbVdI
RSUxa3EyQVA1K05EcChqOFJ2Y2hwJl45ejsycTgtc21rbSZfb3Z4dH43WGFaaTI+fTJBCgpsaXRl
cmFsIDE1MAp6Y21XSEUlMWtxMnp5T1J1NWZCQ2VDTGppfVNzSCp1e3J+Xn1mZlUxdjB9S3E+aDlJ
M0dCJCk2NnEha0o8UDIjY3YKTG5yTnFNWHY3NW9mU2VJfAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01ULTEzIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQtMTMKaW5kZXggOTdhZTFl
MTQwYTRkYjYzMDgyZTAwNmE5ZWZmZjBjZWVlYjI1YWVlOC4uNWYzNzA2Y2U2NGNhZGYwODFhNmM1
NmFiZDdiYTQyMzU3NWE0YWJiMiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExOApw
Y21XSEUlMWtxMkFQNStORHAoajh3cTBPZyZeOXo/MnE4LXNta20mX292eHVWN1hhKF4yfClrPQoK
bGl0ZXJhbCAxNTAKemNtV0hFJTFrcTJ6eU9SdTVmQkNlQ0xqaX1Tc0gqdXtyfl59ZmZVMkczayhk
fWhRPmZ2Mm5pPHEwQk1CK09wfn41Ck1mRnwxTThYOXV9MEZGaXh4Y35xRgoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvR01ULTE0IGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HTVQtMTQKaW5k
ZXggNThkNmQxYjJhZGNlYzBhNzkwZjgyNjZhZmM3OGUwMmU2NTNiZWZlNy4uN2U5ZjljNDY1Y2U2
MjExYzY1ZDYxN2Y2MDQ3MmM5YjU1YjUwNTJjNSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDExOApwY21XSEUlMWtxMkFQNStORHAoajhqeXp5cyZeOXotMnE4LXNta20mX292eHQ/N1hi
RlIzNHM2cgoKbGl0ZXJhbCAxNTAKemNtV0hFJTFrcTJ6eU9SdTVmQkNlQ0xqaX1Tc0gqdXtyfl59
ZmZVMSQyTWkzX2g5KkUoMm5pPHEwQk1CK09wfn41Ck1mRnwxTThrJXFjMEdzZDtgMllYXwoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMv
R01ULTIgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dN
VC0yCmluZGV4IGYwZGM3MDYyNWNmNGU5ZGQyZmRlZjFlZDhkM2M5MTgyNzE5OWJlNWQuLmZjZWY2
ZDlhY2IyNDdkZWI1MzlmY2M0YjMwMTQ5ODAyNTcyZWE2NDIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAxMTcKb2NtV0hFJTFrcTJBUDUrTkRwKGo4V0UyPH12PC18SExkZXBeV2RxYn1y
KSRJbzBDQ3NgYnBRWVcKCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNMaml9U3NI
KnV7cn5efWZmUiNgMHQxNyMwWjM7RTJgMm1pWEB2cXpsZWxidgpLQ2ZleTVhUkM3QWYpNEVmCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0
Yy9HTVQtMyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMv
R01ULTMKaW5kZXggYTA3OTBmZTljZDI1NDU1MTkxZDZlNDllOTU1Nzg5N2U5MjZkMGQ0Ni4uMjc5
NzNiYzg1N2I0ZTYxODIxOGNhMjc5MGFjYWNiODFmN2M3YmI4MiAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDExNwpvY21XSEUlMWtxMkFQNStORHAoajh2PHcmK3Y8LXxJTGRlcF5XZHFi
fXIpJGd3MERNfnB3RXpHQgoKbGl0ZXJhbCAxNDkKemNtV0hFJTFrcTJ6eU9SdTVmQkNlQ0xqaX1T
c0gqdXtyfl59ZmZSJDUwUnd9IWZpYUwzTFZeaURLdzY7eSg8Q2slCktwb3c8NiMje2pUP0dHJmcK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
RXRjL0dNVC00IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0
Yy9HTVQtNAppbmRleCBhNzVhMTczZGM2NDE0NTcwZWQyYTVkYTJkZTgyZjg1MDA3MTQyMDdkLi4x
ZWZkODQxMjYxYTk3N2FlMjE4ZDQwOGY5Y2MzMDhjM2UzMTJhNWU4IDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMTE3Cm9jbVdIRSUxa3EyQVA1K05EcChqOEVGMmdadjwqeGNMZGVwXldk
cWJ9cikkQ20wRVhUTV4jQXw+CgpsaXRlcmFsIDE0OQp6Y21XSEUlMWtxMnp5T1J1NWZCQ2VDTGpp
fVNzSCp1e3J+Xn1mZlIjPDB8U0ckZmVEWm1MVl5pREt3Njt5KDxDayUKS3Bvdzw2Q1JfanFYQWYt
dgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9FdGMvR01ULTUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
RXRjL0dNVC01CmluZGV4IDg1ZWJmMjJlOGY5NDE5NTRhNWI1OGU0YTI2MDcxYTVhZTYxMzU4OTcu
LjFmNzYxODQ0ZmM0NGY4MjI4YmI3NDgyMzViZmQzMGJlNmMzODljZDEgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAxMTcKb2NtV0hFJTFrcTJBUDUrTkRwKGo4K3lXUkZ2PCp4ZExkZXBe
V2RxYn1yKSRhdTBGaHdfSDI/cXIKCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNM
aml9U3NIKnV7cn5efWZmUiNWMDBWPXpmaG12YExWXmlES3c2O3koPENrJQpLcG93PDZyZCQ5Tiho
c2N3CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0V0Yy9HTVQtNiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9FdGMvR01ULTYKaW5kZXggOTVkZWYxZjllYWY4MzE2MGU2ZGNkM2QzZTg4M2ZhOGQ0ZjZiMGQz
MS4uOTUyNjgxZWQ0NmNiNjBlNTliYWY3NmEyYzQzYjQ5ZDVmNjcyNTVkMSAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDExNwpvY21XSEUlMWtxMkFQNStORHAoajhMSn1BbHY8PUp7TGRl
cF5XZHFifXIpJE9xMEdzM29icFFZVwoKbGl0ZXJhbCAxNDkKemNtV0hFJTFrcTJ6eU9SdTVmQkNl
Q0xqaX1Tc0gqdXtyfl59ZmZQZVgwdDE3I2ZmPE5KZihidUJUQT17YkJyWTRFCkppRlVlWFRtVHxI
NUE2VHwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vRXRjL0dNVC03IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0V0Yy9HTVQtNwppbmRleCBjNmE3NzZlOTViZGEyNDE3MDFjODJmOWVlNjJlMmMxMmYxZjdj
MzYwLi5jZWZjOTEyNmM2OTEwNjAyMjVmZjJlZWUxMjQxYjFlNWU5ODI1ZmNkIDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE3Cm9jbVdIRSUxa3EyQVA1K05EcChqOGtfczNZdjw9SnxM
ZGVwXldkcWJ9cikkbXkwSCRYTHdFekdCCgpsaXRlcmFsIDE0OQp6Y21XSEUlMWtxMnp5T1J1NWZC
Q2VDTGppfVNzSCp1e3J+Xn1mZlBlaDBSd30hZmpOKkJMVl5pREt3Njt5KDxDayUKS3Bvdzw2PTNE
P1RzMVBqeAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9FdGMvR01ULTggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vRXRjL0dNVC04CmluZGV4IGY3NGExNmY5OGE4NzEwYzhlZjI5MWI3M2UxYzNlNjZlMzY4
YTYyMDMuLmFmYjA5M2RhMDA2ODUyOTdjYjExMzQ3YzQ4NDBhY2YzYThlMmUyYmYgMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTcKb2NtV0hFJTFrcTJBUDUrTkRwKGo4M0t8I352PClt
NkxkZXBeV2RxYn1yKSQ5bDBJPSFAXiNBfD4KCmxpdGVyYWwgMTQ5CnpjbVdIRSUxa3EyenlPUnU1
ZkJDZUNMaml9U3NIKnV7cn5efWZmUGRsa2ZVdjIwYzNAY1Y4UmNPUnclJFVpT1U5UApKcU1mYjw3
WFVwSTVOIVllCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0V0Yy9HTVQtOSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9FdGMvR01ULTkKaW5kZXggOWI2NDdjMGZhOTVjMzgzOGFiOWExZmQ3Y2FhODg4NDY4
YzUzZDY1NC4uOTI2NWZiN2MyMDcxZWMwZTY2YzY1N2FkMmFlNDJkNWRkNTI1ZmU5NyAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNwpvY21XSEUlMWtxMkFQNStORHAoajg+THhIU1hk
NzVFZ3BqMyslTGJefFBTPXRQMEswN25IMj9xcgoKbGl0ZXJhbCAxNDkKemNtV0hFJTFrcTJ6eU9S
dTVmQkNlQ0xqaX1Tc0gqdXtyfl59ZmZQZ0MxT142ZTE0fCQpZ2FpfFFmVjRzWnJiJTJqCktLb2pr
QkV4NzxuZWh7cXkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vRXRjL0dNVDAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vRXRjL0dNVDAKaW5kZXggYzA1ZTQ1ZmRkYmJhNmE5NjgwN2QzMDkxNWUyNWExNmMx
MDAyNTdlNS4uYzYzNDc0NjY0YTI4OWFhM2MzYzBkOGIyY2UwNmQ0ODQ2Nzk3NTRjMCAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNApoY21XSEUlMWtxMkFQNStORHAoK0ArPGlrQkxk
ZXBeMT1NUTUxcHNENzI0dyZNCgpsaXRlcmFsIDEyNwp1Y21XSEUlMWtxMnp5T1J1NWZGdn01U3M8
VWFyWEBZR0N+T0pnUEZuZDE3LUBjMGJEP0g0N2RRZUtMPXN9CgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9HcmVlbndpY2ggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL0dyZWVud2ljaAppbmRl
eCBjMDVlNDVmZGRiYmE2YTk2ODA3ZDMwOTE1ZTI1YTE2YzEwMDI1N2U1Li5jNjM0NzQ2NjRhMjg5
YWEzYzNjMGQ4YjJjZTA2ZDQ4NDY3OTc1NGMwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMTE0CmhjbVdIRSUxa3EyQVA1K05EcCgrQCs8aWtCTGRlcF4xPU1RNTFwc0Q3MjR3Jk0KCmxp
dGVyYWwgMTI3CnVjbVdIRSUxa3EyenlPUnU1ZkZ2fTVTczxVYXJYQFlHQ35PSmdQRm5kMTctQGMw
YkQ/SDQ3ZFFlS0w9c30KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vRXRjL1VDVCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9FdGMvVUNUCmluZGV4IDQwMTQ3YjllODM0OWM1MGI5YjU0NTlkMzRhOGJmNjgz
YzkxYjE4MmYuLjkxNTU4YmUwYzJiZjkwM2IyMzY0MjE1YmEyNmQ1MjI3ZDYxMjY1MDggMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTQKaGNtV0hFJTFrcTJBUDUrTkRwKCtATFBNTXhM
ZGVwXjE9TVE1MXBzSCQyNXxyWQoKbGl0ZXJhbCAxMjcKdWNtV0hFJTFrcTJ6eU9SdTVmRnZ9NVNz
PFUzM1V6dUdDfk9KZ1BGbmQxNy1AYzBiRD9INDdkUWYpZHl8PgoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdGMvVVRDIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V0Yy9VVEMKaW5kZXggYzNiOTdmMWEx
OTk0MjFkNmQ5NjI1YjI4MDMxNmQ5OWI4NWE0YTRlOC4uOTE1NThiZTBjMmJmOTAzYjIzNjQyMTVi
YTI2ZDUyMjdkNjEyNjUwOCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNApoY21X
SEUlMWtxMkFQNStORHAoK0BMUE1NeExkZXBeMT1NUTUxcHNIJDI1fHJZCgpsaXRlcmFsIDEyNwp1
Y21XSEUlMWtxMnp5T1J1NWZGdn01U3M8VTJAUD11R0N+T0pnUEZuZDE3LUBjMGJEP0g0N2RRZzJu
VEtlCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0V0Yy9Vbml2ZXJzYWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vRXRjL1VuaXZlcnNhbAppbmRleCBjM2I5N2YxYTE5OTQyMWQ2ZDk2MjViMjgwMzE2ZDk5
Yjg1YTRhNGU4Li45MTU1OGJlMGMyYmY5MDNiMjM2NDIxNWJhMjZkNTIyN2Q2MTI2NTA4IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE0CmhjbVdIRSUxa3EyQVA1K05EcCgrQExQTU14
TGRlcF4xPU1RNTFwc0gkMjV8clkKCmxpdGVyYWwgMTI3CnVjbVdIRSUxa3EyenlPUnU1ZkZ2fTVT
czxVMkBQPXVHQ35PSmdQRm5kMTctQGMwYkQ/SDQ3ZFFnMm5US2UKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL1p1bHUgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXRjL1p1bHUKaW5kZXggYzNiOTdm
MWExOTk0MjFkNmQ5NjI1YjI4MDMxNmQ5OWI4NWE0YTRlOC4uOTE1NThiZTBjMmJmOTAzYjIzNjQy
MTViYTI2ZDUyMjdkNjEyNjUwOCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNApo
Y21XSEUlMWtxMkFQNStORHAoK0BMUE1NeExkZXBeMT1NUTUxcHNIJDI1fHJZCgpsaXRlcmFsIDEy
Nwp1Y21XSEUlMWtxMnp5T1J1NWZGdn01U3M8VTJAUD11R0N+T0pnUEZuZDE3LUBjMGJEP0g0N2RR
ZzJuVEtlCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0V1cm9wZS9BbXN0ZXJkYW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vRXVyb3BlL0Ftc3RlcmRhbQppbmRleCA2ZGFlNWU0NzAyZjViODdhODVhOWYw
OTllMmFhZWY3ZWEyZjBjNmE0Li5jM2ZmMDdiNDM2YWVkZjY2MmVhZTYwZjUwNjY4ZjVhYmNkYjE3
MmI2IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDExMQp6Y21abl96YjdfOVQjJVE2ZmRQ
YTtVPChsUVBTa2syUyZ+dGFYfGZ9OCQ+YWhxdyNoZlJ7M2gjZ1RRVl4rUDdvS3gKZFAhODBoeFZl
aHVEJnl2R3ckc2QkbjYwcXJvMURvbDB8M2A/N251TTYKCmRlbHRhIDE2MQp6Y21jYTcpKyM8aFQj
JTF9ZmRQYTtVQEgqd1AxSmJIdG82NUd2azBSUzZDPnxyTjNNIz0+ekQmM0dqaUxyRmZjTVEKek9j
MGt2KjBLJHgxJjlAWTAwfEotb1hUPlE1b359ZCtYWkc4MXx+K1AkJkFlRWxodjM3UCkkPCtuYTFW
cDhscjNIClg+PjM9Ujw3PSNFcyVOMCVZaUl6WF5eTGd6aWB5UW8KCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0FuZG9ycmEgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0FuZG9ycmEK
aW5kZXggYjA2ZGU3YTU5MDRkZDg3YmMxYzQzYzAyMzQxOGJmMjgyOWMwMWRmMC4uNTk2MjU1MDM5
MmZhNzg1MTQwNjE1ODJlOTM3MWMzMmI5ZjFkOTI5YiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApk
ZWx0YSAzNwpzY21jYzRkeWFSKjUrPT9aMV9sT0pBUXMlYmxfYE9saUlIalkxSUNRV1pjTnNiY2VC
WD0wSzkoKiljXm5oCgpkZWx0YSA0MgpzY21YQGRkITJXfjUrPWMxMV9sT0pBUXQ9cUJ0VCZFVEJa
Yk1XKEcjNCQlMVNkbGdydHswbkZBMjxeVFd5CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Bc3RyYWtoYW4gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0FzdHJha2hhbgppbmRleCA5
MGQ3YzJhODEwODQ2ZmViZTRjMmE2YzYwZThjMDE1NjUwNWQ0ZDkxLi43M2E0ZDAxM2ZjYjgyYzJi
ZWI2Zjg4NWYzNTliOWNhMjBkYTA1NGU3IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc5
CnpjbVozPip+PlhXVCRCTF9JNih2dUkwNys8RXdJc21nPmY9QiVMSDhWbzAqdDZtX1EwUnhvb3J6
T3pkPGB4QnpBZApCMl58MGMKCmRlbHRhIDExNAp6Y21lQz5UKzJCQFQjfVE0ZmRQYTt6eksqIVk9
SChLdX5DUEdrJiQ3dDBwa1JpR3l9cn5hYXBZRGUqbzJren4ob00KVzk4M15STEokIWskemBLJFV9
QzNoIVVYYE9HN0l0bQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9FdXJvcGUvQXRoZW5zIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9BdGhlbnMKaW5kZXggMDAwMTYwMmZkY2NkMGJiYjE4NDlh
ZGYyMzdjOTNhYTkzZWE4MGE3My4uOWYzYTA2NzhkNzY2ODgxMzg5ZTEyOWM5M2RlZjdmZmZkNzRm
MTRmMSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzMAprY21jYUZjdWpDYUhaeH16MHxO
c1c1S0M+WVZHZHhLOUshVHZAPDkkYzBFMkBGaVUwcnIKCmRlbHRhIDM3Cm5jbWNhNmN3Y1pzSG5V
KGkwfE5zVzVLSHw0NStKYS1nZ0puUGt6dy1AYnxGUnByV3l5bgoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQmVsZmFzdCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQmVsZmFzdApp
bmRleCA0NTI3NTE1Y2EzZjI0OWE0NDU5OWJlODU1YjNlMTI4MDBlYmU0ODBkLi5hYzAyYTgxNDQw
ZjQ3YTY3YjlmMDFkM2ZiY2RiMDg1MjY2ZDIwODk0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRl
bHRhIDEyMQp6Y21hRFpiM2tULXhGOTxOMHxOK3l6JFlNUC0+Nlo7dzBROzdKSTJXZWN4YH1LVik3
cWV0O3Nya3ZQX0pPNlUwUl4KbClDMlZoWloyVGAhbT5Hc1lZeCs3TDctdio3TExpKnlnNjc1bkMj
MFoxcHRxczlBKkZqCgpkZWx0YSAxNjMKemNtWD5nXklUP3Z4RjgxdTB8Tit5ei1KKWwqci12JSNB
NUpWZzw8bSZyZ3d+dD8yYCs1TG5oemwpdGIhNnJfOTJACnokakM1M1RvemY9N215fCg3V0BHdUt3
eHQ7PmxZUz8zRW9AX20+M3gqZjheMWJFV3BBeFMoWX5rKWpUPG5kMGcoawpaQXFHeXRBdihVc2Ra
dX4/YGk0NWJoNlclTzdYWDYwQXZPUjIKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0JlbGdyYWRlIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9CZWxncmFkZQppbmRleCA3OWMyNWQ3
MGVmMDlhYWVlYzIxZjBhMTBhMDI5NjUwOTY3MTcyYTgwLi4yN2RlNDU2ZjE2YWI1NDk2MjdiMjg0
YTM5ZTIyNjVjYmRiNGFkOGU5IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDk3CnpjbVoz
PS1AcmRYblghRExpVkRaWWcqXmg3ezJWNTFqTSZlfSNMUDVWa3R0KkgyUjYzSm9sRl49PHFRbEE+
X0UmcgppblRncWsyYytecDVQKCF+aiQkcmc9NDUwNj5IdDlgVTlPV20qPH1GZkp7XzxDCgpkZWx0
YSAxMTQKemNtWnFSVSY9cDBuWHopQmlpKkk2VXlLRDg3eG9CVEBeaEZWO1RtN0NGPD9JPDNuTWNW
PDc3ZG1ZbDJrXzM9SGYqCnYlPS1nS2ZXWUpyT2cxdGdKXno2S3F6Xj1jXm54VG9gWnJySjdjbGNN
RnRSVykxMG1SO2pjbiV1aV53RSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0JlcmxpbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQmVybGluCmluZGV4IGI0ZjJhMmFmNmRlNDUy
NmY5MDlmNzQzNDI1YzA4NThkMzJjZDE0YWQuLjdmNmQ5NThmODYzMGNiYTUxMmQ4ZTU4Y2E4ZWRm
YmQ1MTYyOTE1MjIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTAwCnpjbWJPKV5oPERw
R0dxVGw2YHpTRThYRmZwV2FNSUlWUDwxdzBnXjB9Q28mYUdVZGo8U0lodDlTdiE4KjFmZkk7QApn
Q2lnUzxPamMkSSpqJnZyaGdxNzVrcU0qfTNSJUcjUU1GZUEwTXVVOypaPT9rCgpkZWx0YSAxNDEK
emNtZXcqSUEzVWpHVUxSRkRuMlppWmt2M1ZTZklmb2JaK3tHaldackhALVEqOEZ0YWhUMDcofDYk
ckc4PENNJDY4CnpQNSNiUUQ+I1hQZnFAZjxnPzwxRDVTVSFjK3ltQT5uVXk2M1l7MkdGbUljZ20z
YH5xNUx0djFWa3ArakRRSXFkKwpHJE4mS0NmK0Q1PgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQnJhdGlzbGF2YSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQnJhdGlzbGF2YQpp
bmRleCBiYTgyZjMxMWI3NDgzODM0N2RlNmRkYTQ2NGEyMmU5NWExNmUwNDA4Li5jZThmNDMzZWNl
NDRmMGI5NmIxOGQzYjU3ODA3MzBlN2Y5Y2FkOWY1IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRl
bHRhIDExMAp6Y21aMV5eakMwI0dHcVRsNl5EciNJdlp5Xlc4YExHVz9eTXcyOW5HeWxQNUEyT3JG
b2dIa3B5eGZZRTJONXdrUHIKdzFPXjVNUDlQU1kre1JvcG5Uc1cyYX44YFFXK19IeXBjWW5TJE9o
JDRjSTMjST85YWhCY19sfEIwRFZ+JjJtazs4CgpkZWx0YSAxMzEKemNtZXc+eEpZUCVHVUxSRkRo
QDBjN2l+X01uNC1mWEBIVkFqPEFpNjd5b0BaJkVVWmstSyQ0ay1YPnVkZUdSQTwoCno4cUNndWxO
bEhvSUR1STcyYW9gUCR0QkQrVkN8Rk5Gdm8hUForMm5YeiUwd2EkUENvWjNXclFVQ0wyX01kOW5h
VQpKJD5iKUVZNT9LRzlhO2JZCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9CcnVzc2VscyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQnJ1c3NlbHMKaW5kZXggZDhmMTlhNjMxMmEy
YzI3MWUwOTEwM2NhMjY3NGIzM2M2YzMzYzQzOS4uOTYxM2M5ODEyYzdhNWE0ZTI0MDFmNjVkNjMw
ZDZkNTIzMzE2NGY2OCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxMDYKemNtYk93eyM5
JihHVUpZa0RzUDRKO3dEQHk1KS0pTz1QPT4mTDxmTkAtcFVnOz5vNiladjlkNCY7cDdEN3l2WVUz
CnpKZEA4Y0oyQ285N0cmfGAre3dWZXp5cmltbitzVTNHRVZrbyk3Vl9nY0E5eXpDemxsfkQrPkAj
cDFAVHljPngjTwpJV0VTcGUwM2EoSztRIzt0CgpkZWx0YSAxMjIKemNtZXc9SGNOYmhHVUtqXkRz
UCNpX2F7c2lVPShINmBkaEdCZzs5fS1vdDE/ZDIkPzFhRnFjZURVfWw/cWd4UDdiCnpIbi0kdGNA
e0lsSnEhI0NKVX1lPDE0d3x0PH5Xd0NqOUBlTCptU3tXZ3QxKjxXQE1QRyMlMENNIz54Vk8lIyNi
YgpPQCtRfUZAbDN3WUg0T20xdV4kIXkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0J1Y2hhcmVzdCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQnVjaGFyZXN0CmluZGV4IGUwZWFj
NGNlMzMxNTllYzYxNGM1MTM3OWM2YzQ4OTM1YTExNGI0NzAuLjQzMDNiOTAzZTVlMDA3NDg0YzBk
OGUxZWVhNDNhMzVlOWI1M2YzOGIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTE3Cnpj
bVoyMCpkYUpVblh6TXslMH1fOFRuUVJhZWtXKk5kNlNAWjxaZ29ZbVU5VUBPWkYjaHtMO245IV44
fU5FVVh8bgp4Yz48SCk8T05KRGxrWUs9YUNSXi1GbU0yfDtPMW9KUHt6cHpTUFZBKlZBOyh5SWZP
fEl5Q3lyMWQ7bUZ1QjhkUDEKCmRlbHRhIDEyMwp6Y21lQVdUcWAoMW5Yemw0JTB+SjZFZjNWY2F3
VFh5YEpKRzc8eFBVdGstR2BuVGgxbHVFWkx1K3RGcXcxI3k0R3oKejlJUTt0QWptclRBcDZTNnM/
NXJRLTMkeTI5NiY3aTE0d3x0PTBONjlNck5Re2xOWWo+RzZWSCh6UX1UYmlJSExRCktNMFBEPz9a
Kk0/PFJfajAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vRXVyb3BlL0J1ZGFwZXN0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0V1cm9wZS9CdWRhcGVzdAppbmRleCAzZGRmNmE1Mjg5ODNmYzAyZjllYzBh
NTM0NzU2ZTRkNmMxN2UwZTcwLi42Yjk0YTRmMzEyNDY1OGE3MjNkM2IxODlhZDIxYjdjNGY1YmFh
M2Q0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDEwNQp6Y21hRFZiVTxpPXZnfnZRMV9w
S0A9NH04SHZ3NmY1Vz8jTWFWYjBCVTZYcWAySSRAJVYjPk42d0NONCVNQVlAPyUKbiFwUkduSzUp
WUlPa1R2U0pOWWBafDdKWkY4eTA/YEI0IXA4ckRyRjVhPkBWejleNHVoCgpkZWx0YSAxMzIKemNt
WD5nXmkqaHF2ZkBrejFfcEtAPTR9OEh2dzZmNVc/I01hVmIwQlU2WHFgMkkkQHFjTThRTXs0VkRZ
UDd6O0xMCnpzNTA+fEZAaGlxR1l+Uk9wM2R8XmEyOERhNDxHe3NDUW80MldkPkBTeW57SWV0Wnk/
MWl2eD1nMTVoN081Mz1AZgpHaitYJH5LT245RQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvQnVzaW5nZW4gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0J1c2luZ2VuCmluZGV4IDlj
MmI2MDBiMTAzZGM0ZDFmNDliNWYwODcwNTVlMTlkM2UwMzExMjkuLmFkNmNmNTkyODFhMTA0NmQ5
ZGNkMDQ1ZmRhNTIxNTg1ZTNlMzNlMDYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzEK
emNtZXl6X215dSRCYTx1IzB8Pnx7RnRSVyhAQ2goKkJDfnhhJnR0T1d0Tl9aaDBrUG9iN2ZjNzMq
JStDYmZOPTZnCkt3dH5zPj9DfTdXZGtmQTAKCmRlbHRhIDcwCnpjbWV5JF9tNkt3QmE8eEtGOXNs
eFFEOV9ZVkJpeUE7NiFGU09gZ1lPRE9kQFZYOUhydkEwVS1MdT14U2cwY0oqcQpKJHFVJTcwc3k/
QzRCaHwkCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0V1cm9wZS9DaGlzaW5hdSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9FdXJvcGUvQ2hpc2luYXUKaW5kZXggMjEwOWI1MmE3MzRjMWVhZGJjOGZmYTRm
YmRkNWU2YTUzZmJiYjYwYy4uNWVlMjNmZTBlNTlmMDQ0NTk4Njc1ZGI0NGQ1M2MyMDU5MGI4ODkz
NCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA4NQp6Y21lQWJ6OXV3NW9SPEx6MVY5ODNe
aUVWY3lZY0crIz5zXm9RSWsoeyUkT2k5M0tFNyhMKW1KWiZvSzhnWmNiI3EKUSVgYGNNJHE9U2Bh
dmBTLTA4dntOUFhHVl8KCmRlbHRhIDE0Mwp6Y21jYTYpR0l0ZW9MN0s+ZmRQYTtwbF9uZVM+fVdu
Ml4mOHdXU2t0eDVqOzc4Z0tQM3pyZkdaLVgmNT1Wa3klbX0KblN6a1g7MkU8cVUwYWRiakojI04z
JGZWOFl0UGh3Tjg3M3olOFI5ZTBmPlJDdlJAKW9sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Db3BlbmhhZ2VuIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Db3BlbmhhZ2VuCmlu
ZGV4IGJlODdjZjE2MmUxYTFhODQ3MDU3NGFlMmM2MmI5MmY2MTU4OWI5MDMuLjc3NmJlNmU0YTZk
NWEwNTQxNTIxMzVhMWFkMTQ5NTc2MDUyZjQ5YTEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVs
dGEgNzkKemNtZXckYThxRHtHR3BzUjZgemVJNDtkI1hGbDl8SFZCKHM1aWI7I25YWXlBalRoMkJI
MV9sbHc3TSQkTkpaMUJKClo8fmh0bGpMYn5UT2YwTk9hUG1hPHFSRVVMYDJlJSM2TWdeeQoKZGVs
dGEgOTcKemNtY2E5QEloZExHR3A2QjYoMUklYkpJVTtFT15NcyRUVF5TWCYkNVY8UFNgP2YqbE1E
Mz4taSNfeWI2UXorXk0jCmxEUFgwV2sxO1BgN0dZcHlXQDJWeVZNVCg+bE47RGBDUW80Sm5FWng0
N1hWdG83YHAlZgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9FdXJvcGUvRHVibGluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL0V1cm9wZS9EdWJsaW4KaW5kZXggNjU1ZGFmMzc4ODlmZDEyMzgwYzdmMDU1
ZjJjZGQ4NWRkNDY2NWUwMy4uMWQ5OTQ5MDJkYjIxODE0YTYyNmU0MjYzOWQ3YTk2YjE4ZWU3Mzc1
NiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzOTMKemNtWD50eStuRn54RjlEMzB8Tit5
eiFNPG1vVHk+M0YoczNFQCtEXjlkS09qfFJ0YDR5ZnI4dmY3RWt1KCl0RyNsCnVNVDNjdmFxQG9f
TU50ZlExS2xuJSpfSmhEXkc0UCFZJj91aUVYKilDYDY5RjVWRC12VVVOcnpaTD5fWWgKCmRlbHRh
IDQzNAp6Y21aMT9lT2h7Z3hGOG47MHxOK3l6KjhYUm55NnZIdlVHfCkhXlZWNlc9NktqN253YUxL
VmFzbD1WYSM/UHpiZXIKekAmWG5PQ0kqNFkwbFllVjQyK0NtWDlFYyFZbDY1ZXZSfEhvYH50KXhL
Y0gkUllwfntrSiteclE+a2MtNDIxWF9wClJXO2gob3skdjY5WmdMJjM4VVYja0IrVVEtCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9w
ZS9HaWJyYWx0YXIgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
RXVyb3BlL0dpYnJhbHRhcgppbmRleCBhNzEwNWZhYWViMTRjY2YwYTVkMzU4OGU3NGJlNzA5ZmFi
MjI0Mjc1Li4xMTdhYWRiODM2NGNkNzkwMTM4ODA5ODUwM2Y0NTM4YzdiNDQ1YWViIDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmRlbHRhIDMxCmxjbWV3PXt6aU81SnF6YkMxX2xPcEFlUCFaZnlJRHJ2
a1M4WDxLJnklRzYwa0oydnpfOQoKZGVsdGEgNDUKd2NtYURPeyNBVEtKJldMUjFfbE9wQWVRPDhC
dFQkdTJhNXE0Qmc1bmFUdzBTOG1ebjdUOyRtVjEwMCtHYSojSDBsCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9HdWVybnNleSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvR3Vlcm5z
ZXkKaW5kZXggNDUyNzUxNWNhM2YyNDlhNDQ1OTliZTg1NWIzZTEyODAwZWJlNDgwZC4uYWMwMmE4
MTQ0MGY0N2E2N2I5ZjAxZDNmYmNkYjA4NTI2NmQyMDg5NCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApkZWx0YSAxMjEKemNtYURaYjNrVC14Rjk8TjB8Tit5eiRZTVAtPjZaO3cwUTs3SkkyV2VjeGB9
S1YpN3FldDtzcmt2UF9KTzZVMFJeCmwpQzJWaFpaMlRgIW0+R3NZWXgrN0w3LXYqN0xMaSp5ZzY3
NW5DIzBaMXB0cXM5QSpGagoKZGVsdGEgMTYzCnpjbVg+Z15JVD92eEY4MXUwfE4reXotSilsKnIt
diUjQTVKVmc8PG0mcmd3fnQ/MmArNUxuaHpsKXRiITZyXzkyQAp6JGpDNTNUb3pmPTdteXwoN1dA
R3VLd3h0Oz5sWVM/M0VvQF9tPjN4KmY4XjFiRVdwQXhTKFl+aylqVDxuZDBnKGsKWkFxR3l0QXYo
VXNkWnV+P2BpNDViaDZXJU83WFg2MEF2T1IyCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9IZWxzaW5raSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvSGVsc2lua2kKaW5kZXggMjli
M2M4MTdmNDYzN2U5ODYyM2M1Zjc2YTYwNzhmMTgxNTdiNWNmZS4uYjRmOGY5Y2JiNTc0NTA1NDk5
MzNmODNhYzkwZGQ1NmEyY2E3NTM0NCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzMApr
Y21leSRfbDlyN0p0b2RGMV9sTjtBUXMmR29Ab1F+V0VRNkZsZiY4TjBGPihwKzVpOW0KCmRlbHRh
IDQ4CnZjbWFGRV9teXdNSnRvMCYxX2xOO0FRdD1xQnRUJkViRVhaPG9EN1cyT2tnOzlBelJMNVp1
VWR+OEZMQ2UKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vRXVyb3BlL0lzbGVfb2ZfTWFuIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Jc2xlX29mX01hbgppbmRleCA0NTI3NTE1Y2EzZjI0OWE0
NDU5OWJlODU1YjNlMTI4MDBlYmU0ODBkLi5hYzAyYTgxNDQwZjQ3YTY3YjlmMDFkM2ZiY2RiMDg1
MjY2ZDIwODk0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDEyMQp6Y21hRFpiM2tULXhG
OTxOMHxOK3l6JFlNUC0+Nlo7dzBROzdKSTJXZWN4YH1LVik3cWV0O3Nya3ZQX0pPNlUwUl4KbClD
MlZoWloyVGAhbT5Hc1lZeCs3TDctdio3TExpKnlnNjc1bkMjMFoxcHRxczlBKkZqCgpkZWx0YSAx
NjMKemNtWD5nXklUP3Z4RjgxdTB8Tit5ei1KKWwqci12JSNBNUpWZzw8bSZyZ3d+dD8yYCs1TG5o
emwpdGIhNnJfOTJACnokakM1M1RvemY9N215fCg3V0BHdUt3eHQ7PmxZUz8zRW9AX20+M3gqZjhe
MWJFV3BBeFMoWX5rKWpUPG5kMGcoawpaQXFHeXRBdihVc2RadX4/YGk0NWJoNlclTzdYWDYwQXZP
UjIKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vRXVyb3BlL0lzdGFuYnVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0V1cm9wZS9Jc3RhbmJ1bAppbmRleCA5YTUzYjNhMzkwNjNlODY4NTliMTJhYTc1NWI3
OGNmYjM4YTI2NzA5Li4xMGQ0YjIxYmZjZTEyZDAyMGZkYTFhZjUxOGQxYWEwNGEyZGU2Mzg1IDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDYxCnpjbWV3K2E5PzE4R0dvKDVsfDc3O3BELVNy
e0c3ZFF2SlNIe1hBPVZoMTIrJiRaY2JwJVZWLT0yWjMhZGVXSmV+dwpRJHJJUSlDVTBPajExanRY
MEVrKT5AQmpiKwoKZGVsdGEgOTAKemNtY2FGQEooUVhHR3BeYmx8NzZzdH1+MXRPbiQoNGtkYi12
TForMzFFZXMzeysoMGIoMTR3fHQ9M3dSPVd7OWZZCmpZJTc9OzckLVkyWC0jZm09YjQ8JVdDcXNN
Iz5yKSlaRDRHdFlzPmB6Kkg5UlMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL0plcnNleSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvSmVyc2V5CmluZGV4IDQ1Mjc1MTVjYTNmMjQ5
YTQ0NTk5YmU4NTViM2UxMjgwMGViZTQ4MGQuLmFjMDJhODE0NDBmNDdhNjdiOWYwMWQzZmJjZGIw
ODUyNjZkMjA4OTQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTIxCnpjbWFEWmIza1Qt
eEY5PE4wfE4reXokWU1QLT42Wjt3MFE7N0pJMldlY3hgfUtWKTdxZXQ7c3JrdlBfSk82VTBSXgps
KUMyVmhaWjJUYCFtPkdzWVl4KzdMNy12KjdMTGkqeWc2NzVuQyMwWjFwdHFzOUEqRmoKCmRlbHRh
IDE2Mwp6Y21YPmdeSVQ/dnhGODF1MHxOK3l6LUopbCpyLXYlI0E1SlZnPDxtJnJnd350PzJgKzVM
bmh6bCl0YiE2cl85MkAKeiRqQzUzVG96Zj03bXl8KDdXQEd1S3d4dDs+bFlTPzNFb0BfbT4zeCpm
OF4xYkVXcEF4UyhZfmspalQ8bmQwZyhrClpBcUd5dEF2KFVzZFp1fj9gaTQ1Ymg2VyVPN1hYNjBB
dk9SMgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9FdXJvcGUvS2FsaW5pbmdyYWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vRXVyb3BlL0thbGluaW5ncmFkCmluZGV4IDM3MjgwZDA1ZjlhOTkzYjI3NDY4
YjAyOGJjZDhmMDc3NGEzY2UwMTcuLmY3NzRmZmRiMmJhZDRjNDBlYmUyMTdiOTViZjdjMzhiOTMz
ZDRjYzAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTUKemNtYUZJZVZsdU9JM3ZTRzJg
IzN7ZmxUNn0zXyFwU0I3bmRqaChUPG4mODx1b09xMmh5Kyt5YylicSYhcTtzTzk5CkNGYmFoTAoK
ZGVsdGEgOTQKemNtWEBre2Y+S3JJM3hjPzJgd2dtMjI/T1hUb3huKjZBcGx+bTN9fiNaTyZ0PVV9
OXZMb1dYY1kze0B1c20jYkB0Ckh0YFFkaUJVY0smCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9LaWV2IGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9LaWV2CmluZGV4IGIzZTIwYTdl
Mzk0NmRkNTIyZTUwZGIzOWE4MWMwZTVmNGYxYmQ2MTkuLjkzMzdjOWVhMjdjMGE2MWIxMDgyZjRi
ZTM3Y2ZiMGY5NDg0Y2Y1ZTIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMjcKaGNtZGxl
dXRII2k4OGNAazB8TnN1NUchcVZYRmtFYVMlNilVNWRjfnIxO192WgoKZGVsdGEgNDEKcmNtWjE+
dXUpKXg4TTl5JjB8TnN1NUcoeHY1K0piSXA3e2hiQmcxOV5DVDdPVFRwViUkdHg1LUMKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3Bl
L0tpcm92IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9w
ZS9LaXJvdgppbmRleCA0MGI1NThmODIxMTc5MjU4NzdkYzlhZDY3NTIyZGIwMGE3YjE2OWQ0Li5h
M2I1MzIwYTBiZDEzOWMwN2I4NjQyYzRlZmQ3Yjk4ZjU3YzZlOGRkIDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmRlbHRhIDUxCndjbWVDQFl+LUF2JTt+X3V6YHl+LTB0KmNvQ21TK3VNaEduYSVFJHkx
blpVX3FxaXRZcHIpJGd3MFB5KDxSeyNKMgoKZGVsdGEgNjcKemNtWnFWP0J8QEklPElVJnpgeX4t
MHU0WjdwJDtQPiEoPClDJjRPXkBBMyRMY1NwMCZLMmBvMihsZ21jaXp9UWFMCkdtPHNAQ2h6aTYy
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0V1cm9wZS9MaXNib24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vRXVyb3BlL0xpc2JvbgppbmRleCBhODU2NTMwNDRlMDA5NDM2M2VhMGYzMGQwMTdhMjBjY2Rj
ZTIyMjdkLi4zNTU4MTdiNTJiMWIwNTY4MGJiYjU3ZTRkYzhkZTM1OGVmZjI3YTM5IDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmRlbHRhIDIxCmJjbWVCYD92PnU0JDskQmAyO3l2Y1dIJWVLIyY3QHRW
bTFndwoKZGVsdGEgMjEKWWNtZUJgP3Y+dTQkOyREQTBSbER+dmNfLSMwNk40M2Q7a0NkCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9w
ZS9ManVibGphbmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
RXVyb3BlL0xqdWJsamFuYQppbmRleCA3OWMyNWQ3MGVmMDlhYWVlYzIxZjBhMTBhMDI5NjUwOTY3
MTcyYTgwLi4yN2RlNDU2ZjE2YWI1NDk2MjdiMjg0YTM5ZTIyNjVjYmRiNGFkOGU5IDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmRlbHRhIDk3CnpjbVozPS1AcmRYblghRExpVkRaWWcqXmg3ezJWNTFq
TSZlfSNMUDVWa3R0KkgyUjYzSm9sRl49PHFRbEE+X0UmcgppblRncWsyYytecDVQKCF+aiQkcmc9
NDUwNj5IdDlgVTlPV20qPH1GZkp7XzxDCgpkZWx0YSAxMTQKemNtWnFSVSY9cDBuWHopQmlpKkk2
VXlLRDg3eG9CVEBeaEZWO1RtN0NGPD9JPDNuTWNWPDc3ZG1ZbDJrXzM9SGYqCnYlPS1nS2ZXWUpy
T2cxdGdKXno2S3F6Xj1jXm54VG9gWnJySjdjbGNNRnRSVykxMG1SO2pjbiV1aV53RSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3Bl
L0xvbmRvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJv
cGUvTG9uZG9uCmluZGV4IDQ1Mjc1MTVjYTNmMjQ5YTQ0NTk5YmU4NTViM2UxMjgwMGViZTQ4MGQu
LmFjMDJhODE0NDBmNDdhNjdiOWYwMWQzZmJjZGIwODUyNjZkMjA4OTQgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKZGVsdGEgMTIxCnpjbWFEWmIza1QteEY5PE4wfE4reXokWU1QLT42Wjt3MFE7N0pJ
MldlY3hgfUtWKTdxZXQ7c3JrdlBfSk82VTBSXgpsKUMyVmhaWjJUYCFtPkdzWVl4KzdMNy12KjdM
TGkqeWc2NzVuQyMwWjFwdHFzOUEqRmoKCmRlbHRhIDE2Mwp6Y21YPmdeSVQ/dnhGODF1MHxOK3l6
LUopbCpyLXYlI0E1SlZnPDxtJnJnd350PzJgKzVMbmh6bCl0YiE2cl85MkAKeiRqQzUzVG96Zj03
bXl8KDdXQEd1S3d4dDs+bFlTPzNFb0BfbT4zeCpmOF4xYkVXcEF4UyhZfmspalQ8bmQwZyhrClpB
cUd5dEF2KFVzZFp1fj9gaTQ1Ymg2VyVPN1hYNjBBdk9SMgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvTHV4ZW1ib3VyZyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvTHV4ZW1ib3Vy
ZwppbmRleCA2ZmFlODZjNTMxNzZlNjA1MzExZTA5ODIzZmVlNTVkMDdkMTU3NDA1Li5jNGNhNzMz
ZjUzNDVkZjI0ZTUyODZiNzA0NjRhNmMwNDk4MzUzMzcyIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDcyCnpjbWJPeS1YdU9qblI3Yj4wfE9ycmklbTU2eD49TClJcGJ0T1g0fWJ1JW9VUz1h
ZGt9Z1hGKmMyeHRabEg8S195cwpLKTY3VX1tSCtfUTl1LXZwCgpkZWx0YSAxMzAKemNtWm4/cEM+
KituUmgxeDB8T3JyaSF9Zz1pOF4xSXdmK2B0UiR6Uj0kaWN3RzIhelptbExlVllDY0FKY0YpfmRL
CnFXWF94MXp7TkI5MGF4MihSfkJWS3hhSj1+JV48TTNrbVc1UypvYThCMyhXWTlTT2ZyU25qTzZX
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0V1cm9wZS9NYWRyaWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vRXVyb3BlL01hZHJpZAppbmRleCA5YjUxYTczYmQ1MmU5YWZlN2Q3ODhmNTQ4MjEzZWY1NzQx
NWY2NWVlLi4xNmY2NDIwYWI3ZWZjN2NlYWMzYjBlNDJmZTM3ODM2MTg1Y2ZjNDYzIDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmRlbHRhIDY3CnpjbVg+cnZRMT15R1VLOSZEbXlrbFV9Mmo0a3R1Nigw
dz5TcGVWb09VJm9MYD1FQEVJezswOXZwJX1ndlFqR09hVgpPKkR6MCg9Rn53XypBRDteUnUkUisK
CmRlbHRhIDc2CnpjbWRsY2EjbSE1R1VNV2pEbXojTi1saTA2eXUtcjgkVHIhS15YMjR8JSp1akc3
I0pBMWZtciRua058PHJVenQtRgpaITc0WTB2VGs1eldTR3Ajc2wmKiYqXnJaITVkZVE4Nmp1Tk0K
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
RXVyb3BlL01hbHRhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0V1cm9wZS9NYWx0YQppbmRleCBjMTIwOGUyZDJlYzVlOTQ4YTMwZGMzOTc2ZWRlZTY5MjFkM2Q0
YWE3Li5iZjI0NTJkYTQwMzE0YmUxOTZmNjFlNmE3Y2RkNDhlYWY1YzQyNmYzIDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDMwCmxjbVg+cXZQV2RZTHVTc0UzPTluSEsrTD1PNlNEe0Y8T0B2
aUNUbnVaMDA1RnEyYCZIdAoKZGVsdGEgNDAKcmNtZGxaYSNVbylMdVNFTTM9OW5ISytPOUNOUHhp
UlNJaSEpajB9QDZGdWp8c3okRjYhKWpKOXcKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL01hcmllaGFtbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvTWFyaWVoYW1uCmluZGV4IDI5
YjNjODE3ZjQ2MzdlOTg2MjNjNWY3NmE2MDc4ZjE4MTU3YjVjZmUuLmI0ZjhmOWNiYjU3NDUwNTQ5
OTMzZjgzYWM5MGRkNTZhMmNhNzUzNDQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzAK
a2NtZXkkX2w5cjdKdG9kRjFfbE47QVFzJkdvQG9RfldFUTZGbGYmOE4wRj4ocCs1aTltCgpkZWx0
YSA0OAp2Y21hRkVfbXl3TUp0bzAmMV9sTjtBUXQ9cUJ0VCZFYkVYWjxvRDdXMk9rZzs5QXpSTDVa
dVVkfjhGTENlCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0V1cm9wZS9NaW5zayBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9FdXJvcGUvTWluc2sKaW5kZXggNjAwNDFhNDE4OTBlYWUxOTAyYjI0MTBmMTIy
NWEzOGNjNzYxNGExMy4uNDUzMzA2YzA3NTY2YTk0YzBjMzkxMDI0ZmIxNmVlMzYyNDVhMGE0MCAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA5Nwp6Y21jYmB3VVRSc0k0PVZiZkMoViZJI0gh
JDsrKF5pN3FUYyFFQDAlQytgLXM5TDBsOT8xeXJAI1dGTXdHbis9JEsKVzckPl9oTitXQ0Y8ZyhF
PUZ0KmIqPF5sbFl6WjdOdwoKZGVsdGEgMTQ4CnpjbVozPGImRzMpSTQ+XikwfE4reWZaSWZzNSpG
MlkjUV9zJTlBOyNtb1hEcyZJaUhiakA/NGY/bTxvdXgzRjVOSQp4K1Q0TW5BaW1sVWgmMDF3QmM/
bEdiMmY3XjJRVkArT208K0RNbTB8aXN1RHRSKj1RUlcrdnlyfTBSVnthNyM7dXMKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL01v
bmFjbyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUv
TW9uYWNvCmluZGV4IDBiNDBmMWVjOTMyMWUwYjUyMWEwZDM2YThlNmNhOWE5ZGUwODI4MmYuLjY4
NmFlODgzMTU1MGJiMGZlMDMzNDA5YzhiNGRmNDYwZmNkNjFhMDQgMTAwNjQ0CkdJVCBiaW5hcnkg
cGF0Y2gKZGVsdGEgMzEKbGNtZUFhWnhHKiolKSteb2Zxe1Y9aH4rbnp1JCpBc0VXbThRSTYwU0Yx
Xnt7YTJUPWUzCgpkZWx0YSA0MQpyY21abj0/LWJ2ViVwJG1wZnF7Vj1ofjw5KDJAdSR2ISpZVV5r
enVte3ZqT0FlNm1BJit3aGpuRgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvTW9zY293IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Nb3Njb3cKaW5kZXggOTA2YmQwNWYzNDRhZTlh
ODA2YzFiMjBiOGUyYmZkNzA2MWQzNWZhMS4uZGRiM2Y0ZTk5YTEwMzBmMzNiNTZmYWQ5ODZjOGQ5
YzE2ZTU5ZWIzMiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzNApvY21lQytgT20kZm5U
Z1luZnFfOH5ofUFZdlZKY3Zub1dsNXJveSN9YVRpMktpMEdtUHhjS2BxWQoKZGVsdGEgMzcKbmNt
ZXkqLU5DYj1uTXUlfWZxXzh+aH1DYG8yQHUlYSEmSmI7JGd1ZWozb3wxQ3BDPD4tCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9O
aWNvc2lhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9w
ZS9OaWNvc2lhCmluZGV4IDNlNjYzYjIxNTMyN2Q4ODk5YTRiM2ZiZTQ2MjNmMDY2NjMwYjk3YjIu
LmY3ZjEwYWI3NjY1ZTk0Y2E0NGZkOGNkOThhMzYyY2Q0YjMwNGVmZjEgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKZGVsdGEgNjMKemNtYUZCZX5FdkJHR3sjbDB8UDQlXktMWnchI0xUSE5vVFNHSklp
RHtfTGoqSG5VR3tSaSElUlVNdmA2eDBQJWVmCkFEKnlsaAoKZGVsdGEgNjEKemNtY2JffEEycGpH
SChMfDB8UDQlZ0Jjcmp7eEM4IU9rJj9NYDN7cV5BWUFHUFAjeSN9YjE/czQyRllJbjBIJCpkCkE5
ez5PVgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9FdXJvcGUvT3NsbyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9FdXJvcGUvT3NsbwppbmRleCAyMzljMDE3NGQzNjFmZjUyMGMwYzM5NDMxZjIxNTg4Mzdi
ODJjNmUwLi4xNWEzNGMzY2VkYjdjOWNhNTE5YzE5NWY1ZWMwY2U5ZDhkMTg4NWE1IDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU4CnpjbVg+dHhKN1YrR0dwJlZtN0ktSlVOVE5AVUBEck4h
UW5wSG9MUU4obXd8elM5Zil9K1hFVUdLWXxrPT5kMiRNcQpJQnZlVDwwNXc/PXt7UjMwCgpkZWx0
YSA4Mgp6Y21kbFljdl42UkdHcElGbF5obktiSklVO29iWnk3ayFrV25fTSp3Sm5YJn0/ODVrSllm
dGRGUGtOfDxuYW07N0gKWTNPQjI8RU1SNzJuNEd7UTMwTG52Yz9PM0owQSVuUDtRIzt0CgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9w
ZS9QYXJpcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJv
cGUvUGFyaXMKaW5kZXggY2Y2ZTJlMmVlOTUzNTUwMzlhOTAxNDZhN2Y3N2QxNDIyNDU1MWI2NS4u
Y2E4NTQzNTE2ODdkODhiMzkxOWZmMzMxMzhmMGE3MTk5NDM1NmIyOSAxMDA2NDQKR0lUIGJpbmFy
eSBwYXRjaApkZWx0YSAyNwpoY21iTyZLMXFCLTl0LUNWMV9sT1JBZVBAOyZ2Smx1dmpiTiZCTEhL
RTJFUENSCgpkZWx0YSA1MQp6Y21iT3ZLM2paNDkqZntrMV9sT1JBZVIzREJ0VCR1SW0tYzdXKEcj
cSQmT3FhbE5GZGJIcnB9dEdFT2V6bUhffTUKQyVMLWxxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Qb2Rnb3JpY2EgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1BvZGdvcmljYQpp
bmRleCA3OWMyNWQ3MGVmMDlhYWVlYzIxZjBhMTBhMDI5NjUwOTY3MTcyYTgwLi4yN2RlNDU2ZjE2
YWI1NDk2MjdiMjg0YTM5ZTIyNjVjYmRiNGFkOGU5IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRl
bHRhIDk3CnpjbVozPS1AcmRYblghRExpVkRaWWcqXmg3ezJWNTFqTSZlfSNMUDVWa3R0KkgyUjYz
Sm9sRl49PHFRbEE+X0UmcgppblRncWsyYytecDVQKCF+aiQkcmc9NDUwNj5IdDlgVTlPV20qPH1G
Zkp7XzxDCgpkZWx0YSAxMTQKemNtWnFSVSY9cDBuWHopQmlpKkk2VXlLRDg3eG9CVEBeaEZWO1Rt
N0NGPD9JPDNuTWNWPDc3ZG1ZbDJrXzM9SGYqCnYlPS1nS2ZXWUpyT2cxdGdKXno2S3F6Xj1jXm54
VG9gWnJySjdjbGNNRnRSVykxMG1SO2pjbiV1aV53RSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1ByYWd1ZSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvUHJhZ3VlCmluZGV4IGJh
ODJmMzExYjc0ODM4MzQ3ZGU2ZGRhNDY0YTIyZTk1YTE2ZTA0MDguLmNlOGY0MzNlY2U0NGYwYjk2
YjE4ZDNiNTc4MDczMGU3ZjljYWQ5ZjUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTEw
CnpjbVoxXl5qQzAjR0dxVGw2XkRyI0l2WnleVzhgTEdXP15NdzI5bkd5bFA1QTJPckZvZ0hrcHl4
ZllFMk41d2tQcgp3MU9eNU1QOVBTWSt7Um9wblRzVzJhfjhgUVcrX0h5cGNZblMkT2gkNGNJMyNJ
PzlhaEJjX2x8QjBEVn4mMm1rOzgKCmRlbHRhIDEzMQp6Y21ldz54SllQJUdVTFJGRGhAMGM3aX5f
TW40LWZYQEhWQWo8QWk2N3lvQFomRVVaay1LJDRrLVg+dWRlR1JBPCgKejhxQ2d1bE5sSG9JRHVJ
NzJhb2BQJHRCRCtWQ3xGTkZ2byFQWisyblh6JTB3YSRQQ29aM1dyUVVDTDJfTWQ5bmFVCkokPmIp
RVk1P0tHOWE7YlkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vRXVyb3BlL1JpZ2EgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vRXVyb3BlL1JpZ2EKaW5kZXggYjcyOWVlOGMyZWUyNmM3YmQ3NDUzNWVhZDEw
NmU4MTYwYWZkZjE4MS4uOGRiNDc3ZDAxNzM2NDQ1Y2FmY2U4YWY3YTcwODVkMjI2ZDgxZjU0NiAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA5Nwp6Y21kbGpJOEFWWkdHcENEbD4tdlN3en55
UGZ+RTxXJUZZIXFHcFowVWAmJXp5QXc2Wm5XKXtYVSM+b2ZTP0l0JWMKczJ+R2FiSzV3IVl2b2RF
TDB8TnM7NVVYdmpWPWlId3tFTms0dmt8S2cpOHUrfkp0VmJ6ME0xPD1nI1o4bQoKZGVsdGEgMTI3
CnpjbWJPeHhMYV83R0dvSTtsPi1WIWs2JTQ3dyVzalk1O1JTflJDY2Ffbk5mdisrMjQ4cjMrWDhu
RU94enJ1PD1oQQp6QkxfMXQ5fCRyfXAxfVRNdklEY1NVP1QkcTEzd1V9e1F3ZG11c01naGdwbWJn
KnlLQWJDTStQR258VzlSbT4zeCoKUCRGUz9jNGNJKF5vc0FJeWFve0N0CgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Sb21lIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Sb21lCmlu
ZGV4IGJkZDM0NDllNzZhNTFlYjhlYTc2OTNmYmMxZWJlYjViZTVjMWU1YjkuLmFjNGMxNjM0MmI1
YmJmYTRjNThhMjZmNTdkYjMzYjk1ZjViM2U1MzMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVs
dGEgMTIyCnpjbVpuPnkobHQ0blFgU3I2LVZ8KCZJMEVybkZ2ZlFuWDtMT0BnNUArR3QxPDZPc2JP
PW1AXzZERiFOMEFWQWYqdgp6bllAfFZSJlcmcTB8TiZUMztxV0pKQj00VWxRfiZSQyUzV2laPVRE
ZCFNT1A+Pmx8aTVNckl9aVdNTzR0b218VlEKUkkoWnshK1R7SjVlM1Frd2FzbTJOQjUoaXoKCmRl
bHRhIDE3Mgp6Y21jYTgoanEhUm5RX2ZUNi1XTjJrX1lEJklTWlZoV0ZtMD5AdiNSSmJFZEVlb3R5
cSk2WFFLYjdEaT9rIz5vJHUKelIyaThqM28+VSttU15VZlQqPDcoNyZMaGF2I3NQaDFfbE5XQVF0
PXFCdFlPbDVaTGFNSjJVd2NiRSExWVNQJm0lCnZHPjhUbjUya0B1WSVYSGFWRlgqVWNeMnllVylU
S1BXK250PVZQeWlNJD07bCpqTGVlQEkzRUg0cTJmUT4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1NhbWFyYSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvU2FtYXJhCmluZGV4IDA1
MzlhY2ZkNzhhZTU4ZDQ1MDNlYTg4YzIwMjdjNGI0ODlhMjA3ZTguLjk3ZDVkZDllNmVkN2ZjOTI0
YzliY2I1MTRmOTkxY2M4YjUyMDYxYjMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTY5
CnpjbWFGTHh1MGBfeEZ8T1IwfE4reWZGbHJ0KmE5MDNTUXNhKHZzOXtFSTUyV0JGanpQK2FRT0kh
RmxaWVgxRjtEWgpybj0mdmswdWNsLUZpdzhSc0RSejEmMm1mfU9kejh5aThLbzI0bHYtZDBhfDZK
WXIrS3B4Wk0oMQoKZGVsdGEgMjA5CnpjbWRuYmBJS3tseEZpbikwfE4reWZEO2dkKmRoJTtWeHRa
VkJPfTlQMUk5e1k4M2hJYjFfbGNVTWgrMGt6flNRPwp6IWt9JG40OCRmdFl6bzlpMz1FN3cxTy02
JDxPX0BudlJLWGowVz0hfkhuVEV1RmhNTUVDQnApVUF3WkpMMkl2ZXMKSFRAeCs8cjhPMHAKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVy
b3BlL1Nhbl9NYXJpbm8gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vRXVyb3BlL1Nhbl9NYXJpbm8KaW5kZXggYmRkMzQ0OWU3NmE1MWViOGVhNzY5M2ZiYzFlYmVi
NWJlNWMxZTViOS4uYWM0YzE2MzQyYjViYmZhNGM1OGEyNmY1N2RiMzNiOTVmNWIzZTUzMyAxMDA2
NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxMjIKemNtWm4+eShsdDRuUWBTcjYtVnwoJkkwRXJu
RnZmUW5YO0xPQGc1QCtHdDE8Nk9zYk89bUBfNkRGIU4wQVZBZip2CnpuWUB8VlImVyZxMHxOJlQz
O3FXSkpCPTRVbFF+JlJDJTNXaVo9VERkIU1PUD4+bHxpNU1ySX1pV01PNHRvbXxWUQpSSShaeyEr
VHtKNWUzUWt3YXNtMk5CNShpegoKZGVsdGEgMTcyCnpjbWNhOChqcSFSblFfZlQ2LVdOMmtfWUQm
SVNaVmhXRm0wPkB2I1JKYkVkRWVvdHlxKTZYUUtiN0RpP2sjPm8kdQp6UjJpOGozbz5VK21TXlVm
VCo8Nyg3JkxoYXYjc1BoMV9sTldBUXQ9cUJ0WU9sNVpMYU1KMlV3Y2JFITFZU1AmbSUKdkc+OFRu
NTJrQHVZJVhIYVZGWCpVY14yeWVXKVRLUFcrbnQ9VlB5aU0kPTtsKmpMZWVASTNFSDRxMmZRPgoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9F
dXJvcGUvU2FyYWpldm8gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vRXVyb3BlL1NhcmFqZXZvCmluZGV4IDc5YzI1ZDcwZWYwOWFhZWVjMjFmMGExMGEwMjk2NTA5
NjcxNzJhODAuLjI3ZGU0NTZmMTZhYjU0OTYyN2IyODRhMzllMjI2NWNiZGI0YWQ4ZTkgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgOTcKemNtWjM9LUByZFhuWCFETGlWRFpZZypeaDd7MlY1
MWpNJmV9I0xQNVZrdHQqSDJSNjNKb2xGXj08cVFsQT5fRSZyCmluVGdxazJjK15wNVAoIX5qJCRy
Zz00NTA2Pkh0OWBVOU9XbSo8fUZmSntfPEMKCmRlbHRhIDExNAp6Y21acVJVJj1wMG5YeilCaWkq
STZVeUtEODd4b0JUQF5oRlY7VG03Q0Y8P0k8M25NY1Y8NzdkbVlsMmtfMz1IZioKdiU9LWdLZldZ
SnJPZzF0Z0peejZLcXpePWNebnhUb2BacnJKN2NsY01GdFJXKTEwbVI7amNuJXVpXndFKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJv
cGUvU2FyYXRvdiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9F
dXJvcGUvU2FyYXRvdgppbmRleCBlOGNkNmIxMGVmZTQyZTQzMzE1YzEyYjI4ZDg3Y2I2OWJiYjBj
OGFhLi44ZmQ1ZjZkNGI4ODE0NTdkMTNmZGNkZDM1YWJiNmZjNTQyOWQ3MDg0IDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDQ3CnJjbVozPklpR1dhR04mVTAwfE9AejN2NHVDVlZ1bShHSVIx
ZE1rTFlBT2lVYjFLO2NDSSpyTiE4CgpkZWx0YSA2OQp6Y21iUXd4dDRRK0dPclRAMHxPQHozcDQ8
VWpYRXJoajB9P3Y4MjFSbSNlVj9CTDE2UCZNaCsmaDxWO1IzOCpLdjwKSUo2I2hsMEZEYV9TcFdi
NAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9FdXJvcGUvU2ltZmVyb3BvbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9FdXJvcGUvU2ltZmVyb3BvbAppbmRleCBmM2I0MmIwMDRkY2MyYWYxZDY5OTQ5ZmYx
OGYzNWZkZmE0Y2Y2MDg4Li40MzJlODMxNWJjOWRmYTc0MDgwNDY3ZjllMDgwNzNkOWZkY2M4MzNh
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDkwCnpjbWNiX3lfUzF8R05ib0ltNkN+YjM/
XlAhJkJNZTZnNnohZiUkeXZQMXpGYExZcUt0eD85UWFqPkNNMnZ6ekBWcQpabGRHQlRPcGEkeCpu
Rkg+aEgtS05xY2s9PiVLXyYkNlBmQDMKCmRlbHRhIDEyNAp6Y21aMz5lVGpSNUdOYlFBbEBiPSFk
QnAofVhCZTs7b3ZnYnNAeCpGQVcrcEJXV01eaCk9SHlfVyt7bWFmblMqdVMKeFdMcVg+S3xjbHQy
N1Z3YGBULTxCVX4ocVk5azJuRDlocDxXQ1R3MkZ0aVpefkYhPjtoRzxLN2cwc3pPZzlQamBECgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1
cm9wZS9Ta29wamUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
RXVyb3BlL1Nrb3BqZQppbmRleCA3OWMyNWQ3MGVmMDlhYWVlYzIxZjBhMTBhMDI5NjUwOTY3MTcy
YTgwLi4yN2RlNDU2ZjE2YWI1NDk2MjdiMjg0YTM5ZTIyNjVjYmRiNGFkOGU5IDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDk3CnpjbVozPS1AcmRYblghRExpVkRaWWcqXmg3ezJWNTFqTSZl
fSNMUDVWa3R0KkgyUjYzSm9sRl49PHFRbEE+X0UmcgppblRncWsyYytecDVQKCF+aiQkcmc9NDUw
Nj5IdDlgVTlPV20qPH1GZkp7XzxDCgpkZWx0YSAxMTQKemNtWnFSVSY9cDBuWHopQmlpKkk2VXlL
RDg3eG9CVEBeaEZWO1RtN0NGPD9JPDNuTWNWPDc3ZG1ZbDJrXzM9SGYqCnYlPS1nS2ZXWUpyT2cx
dGdKXno2S3F6Xj1jXm54VG9gWnJySjdjbGNNRnRSVykxMG1SO2pjbiV1aV53RSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1Nv
ZmlhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9T
b2ZpYQppbmRleCA3NjNlMDc0Nzk1YjNjNzE0Mzk4NGM5YjMzNGJkNmYyZjVhNTA0NDVkLi4wZTRk
ODc5MzMyZDIxYzkzYzIyOWZjMjU1ODcyMDUwMjBlZWIzMTI3IDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDM3MQp6Y21jYTRGanJ1THhGOUQzMHxOK3lLcklrK1BTbFdAPSNqY3tWPVpHbkJN
U3R3dll8biFJOVFnUWdXOGFSTEcldkQKeklia3ZpM0BpKWBkOyR5ezM9QT5+ajY0aHNTX1hgUUFU
fiVHIWJYVnJfPVlnSnhgcj9+Z0s7cDMxMCl6MjcjVj5HCnpOSShFMTt7O3tTSXZ8QDFoQH5id0dU
VGdVV2o/dCVqTzhfeDRrSHNZM2xLN35MTGVKRThpYjAyV2hXO3h4bFBWegpsOypvPjdSeXFVWkQ0
XjRUanMtZHk9dmJoVzF0dmRad19eY1dLVXNASTB8M0h1QSoyOFIKCmRlbHRhIDM4Ngp6Y21iTyRh
N2tjLXhGOG47MHxOK3lLc153MVAxS05LeCR1anpWNF9QWmJOIVlGOCZ9alpzPFNZJUxMZUpFOGlZ
eEoKej5CKWlZRXxjVGdgQillanElJFRqV0RAaD82SlgkQVY5K3ZQNmw3cUtRRDZXe0stZFRvUHV+
eSpTSnd+KlhEfCoxCnphZXhFXjEweTJ7Z0dkTnFXU2slXyVNRTBNRmJGZ1BGXkRibzFIPVBAJD9E
OERWMyR2aFhGZHlaYGV0Pk80QH50OAp4ajctY2RLKi05KDI3JkF4WGI+Zz1yYThIJjN6O34lQ1Fv
SG9VOyV+JSYqYVZRYzVEenxQNSNRUjBSWjRyRTc8QDUKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1N0b2NraG9sbSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvU3RvY2tob2xtCmlu
ZGV4IDQzYzdmMmUyM2YzYzM3YzI0ZDM5ZTc4Zjg4MjJiMTJjNWE3NGI1ZWIuLmYzZTBjN2YwZjI1
ZjBhNzI5MGU1NjI4MWM5MTE5MGUzNjExNDk4YTcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVs
dGEgNzAKemNtZXl6X215dSRCYUB1Szh3TWNZNkpUSXJWMzFLQDxiYVZONWcqXmxeTy1DLUR9Vn52
ZkxMKHozI0ozaUVSME9kCk9PcGBhVjYtPF84UFhxd1dBUG9pcAoKZGVsdGEgNzEKemNtZXkkX202
S3dCYTxBVDkwTCZXMns1b1FGdnV0e2E9PUtDTlUtYlZgQWltcWx8VGgtS3JId0pxIWI3P0tWVWsq
CkwlKlpmIzBvenBvblQtcnoKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1RhbGxpbm4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1RhbGxpbm4KaW5kZXggMThmOTAzZmE2ZmQ4NjQy
MzdhNjc5ZGQwNmM2YTU1ZWVjY2U4OWQ5OC4uYjVhY2NhM2NmNTFlN2Y3YjMxNzY5NjU3NDg2ODhm
ZjQxNzIwMjQ2ZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA5NQp6Y21lQWNkP0dNR1Qj
JW9FZmRQYTtwYzt0ekN1JHRzXyVXSnNhcyZJKSQ9ViF0T3BKXlojNj5ZdzBhWXEoJlNQJDYKVS0y
OXMqbX0jOzx5OCk3aCQrO1lJMEQzZU5hUjJ9UwoKZGVsdGEgMTE5CnpjbWFETiZAREpZVHVefDRm
ZFBhO3BhekhxQ1RiaklYNEBDQUBsNmFQQm1kKz9fTjl8SlR2ISt3ODV0JnMlT1dlVAptMXR8dCVy
NWB7NzFVNSU5dz0jbVhab2JKOSFOa1pnKl51MTspcjg0ejlDODI9WSElMT0KCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1RpcmFu
ZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvVGly
YW5lCmluZGV4IDUyYzE2YTQyYmYxYWIxYjVkYjVjMWUzZDRiODA4YWIzNzM4NGFkMTguLjBiODYw
MTdkMjQzZjFiN2JiYjQxZDZiNGZlZWZjYjJiN2VkZmM3ZDggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKZGVsdGEgNjMKemNtZGxhdXRaPmpHR3s5VDB8UDQlXktMV3tWVmEhNEU7aE08b24+LTcoX3df
bldAQmF6NzlePCFsZl5oPjBKSmQ7CkEkXlpaVwoKZGVsdGEgNjMKemNtWjE/dXR7S29HSCk5TDB8
UDQlXkVMcDlqWEVNc2owfT88bkM9Un4jZVY/QkwxNDJRdmp6KVRhQFMtSTRqQk14CkMqJFY5ZAoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9F
dXJvcGUvVGlyYXNwb2wgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vRXVyb3BlL1RpcmFzcG9sCmluZGV4IDIxMDliNTJhNzM0YzFlYWRiYzhmZmE0ZmJkZDVlNmE1
M2ZiYmI2MGMuLjVlZTIzZmUwZTU5ZjA0NDU5ODY3NWRiNDRkNTNjMjA1OTBiODg5MzQgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODUKemNtZUFiejl1dzVvUjxMejFWOTgzXmlFVmN5WWNH
KyM+c15vUUlrKHslJE9pOTNLRTcoTCltSlomb0s4Z1pjYiNxClElYGBjTSRxPVNgYXZgUy0wOHZ7
TlBYR1ZfCgpkZWx0YSAxNDMKemNtY2E2KUdJdGVvTDdLPmZkUGE7cGxfbmVTPn1XbjJeJjh3V1Nr
dHg1ajs3OGdLUDN6cmZHWi1YJjU9Vmt5JW19Cm5TemtYOzJFPHFVMGFkYmpKIyNOMyRmVjhZdFBo
d044NzN6JThSOWUwZj5SQ3ZSQClvbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvVWx5YW5vdnNrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9VbHlhbm92c2sKaW5kZXggYzI4MGY0
MzBmYWQyNzg3M2NmN2IyMGFmNTViZjQ3YzgxNmVhMTE5MC4uN2I2MWJkYzUyMmI1YjdmNDM5N2Zk
YjkyNDYxODVmNGQ5NzJmNGI2YyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA0NwpyY21a
cVZgcGh7Jm5iVm5wZnFANXpNSyY3bkZpdik0KipeSVRCYS1ONTRKSFhEcHpyfHpAQjBiTAoKZGVs
dGEgNjkKemNtZXkmKn5tM1BuYihEWmZxQDV6TUgreV9NamFrVE11eTIyakpFe2c7eS19bUFoMjFR
TnJETTF4dCl7Q00lJSF8CklQUz1EQjBGfnx3OXs+T1YKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1V6aGdvcm9kIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9Vemhnb3JvZAppbmRl
eCA4ZGRiYTkwOTdmODA0YTc2MjgxNWE1NGU0NzcwOGJmNmJmYjU4MTRmLi42NmFlOGQ2OWUzZjg2
Y2ZkZDhkOTBhOWIxZDA5NGQ4MDdmNzVmMjdhIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDM2Mwp6Y21kbGsmP0dRSFQjJCE+ZmRQYTtwYU9fX0NUaHF8XnpgMzJyO2YzbmsoQzdrKzFUTmJr
JUpRcXh3dlRvODVsJWYKemZMeXtTemAoKlZje1VVODxqdzNzWT5iUXk0MitERUloZDcyRmBOcmpF
SH5NTSo+ckwlXlpkO15FTl9fVjhKVT1ZClJhS1BMP2NgQjFJdmE1TUh2O2ROXzk+QFJ5CgpkZWx0
YSA0MzIKemNtWm4/KmUpPFpUIyVRNmZkUGE7cGJDaDJDdSt6dEg+XnlVPW59eDlJPEdpajxDSHFh
ZEtOfURSdFJNMGZJfkokCnpQQSlMeT1BaXstVT1WbyRhdWxCY2dEP3ZOZ055PHIyYmNxOFBwKUdS
O2IzNTdXQn1wRy08WHRUayRxQVBAKEI+agp3e1F3eU8xZTVpY08rbnQ4OUxLeF8/NjF4TG1fSVBw
R2NZblMxS35qVlBZVUVUcGElKjE/Kl9YVDBGbz55MHNzSTIKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1ZhZHV6IGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9WYWR1egppbmRleCA5
YzJiNjAwYjEwM2RjNGQxZjQ5YjVmMDg3MDU1ZTE5ZDNlMDMxMTI5Li5hZDZjZjU5MjgxYTEwNDZk
OWRjZDA0NWZkYTUyMTU4NWUzZTMzZTA2IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDcx
CnpjbWV5el9teXUkQmE8dSMwfD58e0Z0UlcoQENoKCpCQ354YSZ0dE9XdE5fWmgwa1BvYjdmYzcz
KiUrQ2JmTj02ZwpLd3R+cz4/Q303V2RrZkEwCgpkZWx0YSA3MAp6Y21leSRfbTZLd0JhPHhLRjlz
bHhRRDlfWVZCaXlBOzYhRlNPYGdZT0RPZEBWWDlIcnZBMFUtTHU9eFNnMGNKKnEKSiRxVSU3MHN5
P0M0Qmh8JAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96
b25laW5mby9FdXJvcGUvVmF0aWNhbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9FdXJvcGUvVmF0aWNhbgppbmRleCBiZGQzNDQ5ZTc2YTUxZWI4ZWE3NjkzZmJj
MWViZWI1YmU1YzFlNWI5Li5hYzRjMTYzNDJiNWJiZmE0YzU4YTI2ZjU3ZGIzM2I5NWY1YjNlNTMz
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDEyMgp6Y21abj55KGx0NG5RYFNyNi1WfCgm
STBFcm5GdmZRblg7TE9AZzVAK0d0MTw2T3NiTz1tQF82REYhTjBBVkFmKnYKem5ZQHxWUiZXJnEw
fE4mVDM7cVdKSkI9NFVsUX4mUkMlM1dpWj1URGQhTU9QPj5sfGk1TXJJfWlXTU80dG9tfFZRClJJ
KFp7IStUe0o1ZTNRa3dhc20yTkI1KGl6CgpkZWx0YSAxNzIKemNtY2E4KGpxIVJuUV9mVDYtV04y
a19ZRCZJU1pWaFdGbTA+QHYjUkpiRWRFZW90eXEpNlhRS2I3RGk/ayM+byR1CnpSMmk4ajNvPlUr
bVNeVWZUKjw3KDcmTGhhdiNzUGgxX2xOV0FRdD1xQnRZT2w1WkxhTUoyVXdjYkUhMVlTUCZtJQp2
Rz44VG41MmtAdVklWEhhVkZYKlVjXjJ5ZVcpVEtQVytudD1WUHlpTSQ9O2wqakxlZUBJM0VINHEy
ZlE+CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0V1cm9wZS9WaWVubmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vRXVyb3BlL1ZpZW5uYQppbmRleCA5YzBmYWM1MzY5ZTQ5MjRjZWI5ZDZmZTlmMzlhYzE0
YjBhNzEyYzk4Li42OTZmMzU5ZDRiZDRmYTQ4OTI1MjQ1MGI0ZWIzNmI3YzA4MDQ4YzY2IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDExMgp6Y21kbGhJNzR1UEdHcTVkNl90clQ4WEdJI0dZ
VD1ZcGg4QmIkJkV9b2xRYEhXemglbmM+fUZ0S1U8WUV9JCFXfHMKZGxVRmVaWS1WQ1AhentfZiRi
X20zIWI4XlVJKFo/NzM7LUd8NntpM0kKCmRlbHRhIDExNQp6Y21iT3N4TDB0M0dHcCZWNiYwMytw
WXw2X153NDByYmxjPl4jKTl7WkpXUnxpRnZ2N3tGWj0kPDhxQ1VxZUdDaT8Kbj5fRSk+MTR3fHQ8
UGNeWHUtP2YlJXBxWFNvOXs0UlU+MEZ1Vmd3dDJYM0F7PG99d053CgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9WaWxuaXVzIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9WaWxuaXVz
CmluZGV4IGRhMzgwYWYwZWQyZjRmNmViMzk5YWI0YTNiZjNhMGQ5YjZhN2ViYzAuLjdhYmQ2M2Zh
NjA4ZTAxODZiOWYxNTRkOWZjYzMyNDcyYzI4ZjY3NTkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
ZGVsdGEgOTYKemNtYk8oXyhAPWJHR29PPWw+LTgldlUzSEBqNEF9b3s/LWR2TktjdXRAc0FyTEdh
bzxTPFVsNmQkcTd0Y2xseiElCm5hI2s9ZkZiRHkkK1U1JTg2Mns0MlNRSXpRdlQ4Rjs3R2NzdVFA
ZD8pQzVJZFVhalk4dgoKZGVsdGEgMTIxCnpjbWV3KUZrTnRoR0dvPDVsPi10Y3N9M1pYJUZZIXFH
cFowVWAmJXp5QXc2WStvc2UrQyN4SEorWSVGfklkOyU8IQp6OWhoN3UmdGN5JipAe19OdSRxQl5L
P3NQfGVnRnYmKnFweyghcEgoTFg3VilfUmM0XnAmRUhySW0+M3gqXkR5YjUKSG5zNXlPUHZ7XjcK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
RXVyb3BlL1ZvbGdvZ3JhZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9FdXJvcGUvVm9sZ29ncmFkCmluZGV4IGY0Y2I2NGYxNmM3MzBiMWRhNmZlNDI3YTc4NmFl
OTM5NzEyNTU5ZDUuLmQxY2ZhYzBlMzg4ZGU1NDJhMTBjOGYwYjg0ZmZmMGIyOWU3MGZjMWQgMTAw
NjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTQxCnpjbWVDQD9CJCN3RjNKRHxvRkQ9UzlEeHxi
N01OKThoYT52UitZan5zfE5vekMkWXteUiFaTnYjKFNWSkMhTlAlbwpwV0Fae3EyfVpgcjJOYGti
LXUjdkU0PGlwcUtnZHdyV15nZmIqPVFTPip5KTtaMFJXTXZBOC1IdwoKZGVsdGEgMTc5CnpjbWVD
Pj9CfD55RjNHe2J6eVFKXjswVk1ad208YHJuNWdySXdmX0pBe3x1ODI4MHtJXkNsQGpyREVSbj5G
bFpZWAp2MUY7RFpuKnZvYUZmYWxFbTtvZHZofDZMJT8qfi1EPH5OTGc3fH43REJ4RVg9NGJWPElV
MUtmKUUydGFSCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL0V1cm9wZS9XYXJzYXcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vRXVyb3BlL1dhcnNhdwppbmRleCA1Y2JiYTQxMmVlZjQwNmI0YmFmODkxMDBm
MmM0YThlMWY1ZDEyNzk4Li5lMzNjZjY3MTcxZGE3OGFhOWU2ZWIwMmU1MGY5Yjk2MDNkYTRjM2Y0
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDEyNQp6Y21iT3pkUVc3NkdVTCpURHhNUHli
MCQ2di0peklVZlJVTSppRnRBJXJgWTVWT2ROMiRrVFlwPTUlWUE7cjM/JVYKdysoMFpmUyZGNH5A
XlkzTmxpT0w+Wj88RVRWSFJjdD5TSk1MO2IzRURXP31fMGEyciFIeHMqIT0wODk1SEpeJW0hCgpk
ZWx0YSAxNDAKemNtY2E3R0VzRGJHVUpNZ0R4UztARC0kTj48VDdqaEV0cSZDZjxeSnh3R1cjTzcj
QT15R0VLZ35CK2JZP2A1fWBTCnprWXJeM0RZJWs+ZnFAJXtyRzVZajVTWXgmKGhBWil4dFpsSSRi
aVl3dFhtKV5hSSt+ZTNvJFM8R2NtS1V2VCg0bQpSR2MmT1E4UiRre285eDZUMHt7Z2dDVCMhIQoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9F
dXJvcGUvWmFncmViIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L0V1cm9wZS9aYWdyZWIKaW5kZXggNzljMjVkNzBlZjA5YWFlZWMyMWYwYTEwYTAyOTY1MDk2NzE3
MmE4MC4uMjdkZTQ1NmYxNmFiNTQ5NjI3YjI4NGEzOWUyMjY1Y2JkYjRhZDhlOSAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApkZWx0YSA5Nwp6Y21aMz0tQHJkWG5YIURMaVZEWllnKl5oN3syVjUxak0m
ZX0jTFA1Vmt0dCpIMlI2M0pvbEZePTxxUWxBPl9FJnIKaW5UZ3FrMmMrXnA1UCghfmokJHJnPTQ1
MDY+SHQ5YFU5T1dtKjx9RmZKe188QwoKZGVsdGEgMTE0CnpjbVpxUlUmPXAwblh6KUJpaSpJNlV5
S0Q4N3hvQlRAXmhGVjtUbTdDRjw/STwzbk1jVjw3N2RtWWwya18zPUhmKgp2JT0tZ0tmV1lKck9n
MXRnSl56Nktxel49Y15ueFRvYFpycko3Y2xjTUZ0UlcpMTBtUjtqY24ldWled0UpCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1cm9wZS9a
YXBvcm96aHllIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0V1
cm9wZS9aYXBvcm96aHllCmluZGV4IDZmMTQ4NTA1YjIzOWFkOWFkZWJmZDk0NjA2ZjFlNGYzMTFm
YjM1NGMuLmU0MmVkZmM4NTA2YjliOTkzNjJiMzZkOTBjOGI4YzRkYjY3ZDUwZDggMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzEKbGNtWD5zdXVFV3JFaS0ybzB8TnN1NVVYdFZXNF4kPVMl
aXM9YWs0Nmg4fn1NKTJGQ3laCgpkZWx0YSAzNwpuY21kbGJhOUNpMkV3Zi1YMHxOc3U1VWN6RTUr
SmJJanJqc0lCZzFBZmJgP2VkbXVtK0kKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vRXVyb3BlL1p1cmljaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9FdXJvcGUvWnVyaWNoCmluZGV4IDljMmI2MDBiMTAz
ZGM0ZDFmNDliNWYwODcwNTVlMTlkM2UwMzExMjkuLmFkNmNmNTkyODFhMTA0NmQ5ZGNkMDQ1ZmRh
NTIxNTg1ZTNlMzNlMDYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzEKemNtZXl6X215
dSRCYTx1IzB8Pnx7RnRSVyhAQ2goKkJDfnhhJnR0T1d0Tl9aaDBrUG9iN2ZjNzMqJStDYmZOPTZn
Ckt3dH5zPj9DfTdXZGtmQTAKCmRlbHRhIDcwCnpjbWV5JF9tNkt3QmE8eEtGOXNseFFEOV9ZVkJp
eUE7NiFGU09gZ1lPRE9kQFZYOUhydkEwVS1MdT14U2cwY0oqcQpKJHFVJTcwc3k/QzRCaHwkCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0Zh
Y3RvcnkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vRmFjdG9y
eQppbmRleCBhZmVlYjg4ZDA2Mjg1MWZjYTU1MjNkMjNhNzNlZGFhMWQ4ZjVmZjZjLi42MGFhMmEw
ZDY5NWJhNTc3ZmY4NzYyNGQ0NzlmMWViMjVjOGYxY2FmIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTE2CmpjbVdIRSUxa3EyQVA1K05EcCgrQGJQV3NgTGRlcF5XZHFifVhUU3ZqUzdp
bXgKCmxpdGVyYWwgMTQ4CnpjbVdIRSUxa3EyenlPUnU1ZkJDZUNMaml9U3NIKnV7cn5efWZmTnwl
OFc7ZlM1RTR4STBvNGhqRmlxbUowaCh4TQpHenkkIXFfWU90PwoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9HQiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9HQgppbmRleCA0NTI3NTE1Y2EzZjI0OWE0NDU5
OWJlODU1YjNlMTI4MDBlYmU0ODBkLi5hYzAyYTgxNDQwZjQ3YTY3YjlmMDFkM2ZiY2RiMDg1MjY2
ZDIwODk0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDEyMQp6Y21hRFpiM2tULXhGOTxO
MHxOK3l6JFlNUC0+Nlo7dzBROzdKSTJXZWN4YH1LVik3cWV0O3Nya3ZQX0pPNlUwUl4KbClDMlZo
WloyVGAhbT5Hc1lZeCs3TDctdio3TExpKnlnNjc1bkMjMFoxcHRxczlBKkZqCgpkZWx0YSAxNjMK
emNtWD5nXklUP3Z4RjgxdTB8Tit5ei1KKWwqci12JSNBNUpWZzw8bSZyZ3d+dD8yYCs1TG5oemwp
dGIhNnJfOTJACnokakM1M1RvemY9N215fCg3V0BHdUt3eHQ7PmxZUz8zRW9AX20+M3gqZjheMWJF
V3BBeFMoWX5rKWpUPG5kMGcoawpaQXFHeXRBdihVc2RadX4/YGk0NWJoNlclTzdYWDYwQXZPUjIK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
R0ItRWlyZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9HQi1F
aXJlCmluZGV4IDQ1Mjc1MTVjYTNmMjQ5YTQ0NTk5YmU4NTViM2UxMjgwMGViZTQ4MGQuLmFjMDJh
ODE0NDBmNDdhNjdiOWYwMWQzZmJjZGIwODUyNjZkMjA4OTQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKZGVsdGEgMTIxCnpjbWFEWmIza1QteEY5PE4wfE4reXokWU1QLT42Wjt3MFE7N0pJMldlY3hg
fUtWKTdxZXQ7c3JrdlBfSk82VTBSXgpsKUMyVmhaWjJUYCFtPkdzWVl4KzdMNy12KjdMTGkqeWc2
NzVuQyMwWjFwdHFzOUEqRmoKCmRlbHRhIDE2Mwp6Y21YPmdeSVQ/dnhGODF1MHxOK3l6LUopbCpy
LXYlI0E1SlZnPDxtJnJnd350PzJgKzVMbmh6bCl0YiE2cl85MkAKeiRqQzUzVG96Zj03bXl8KDdX
QEd1S3d4dDs+bFlTPzNFb0BfbT4zeCpmOF4xYkVXcEF4UyhZfmspalQ8bmQwZyhrClpBcUd5dEF2
KFVzZFp1fj9gaTQ1Ymg2VyVPN1hYNjBBdk9SMgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9HTVQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vR01UCmluZGV4IGMwNWU0NWZkZGJiYTZhOTY4MDdkMzA5MTVl
MjVhMTZjMTAwMjU3ZTUuLmM2MzQ3NDY2NGEyODlhYTNjM2MwZDhiMmNlMDZkNDg0Njc5NzU0YzAg
MTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTQKaGNtV0hFJTFrcTJBUDUrTkRwKCtA
Kzxpa0JMZGVwXjE9TVE1MXBzRDcyNHcmTQoKbGl0ZXJhbCAxMjcKdWNtV0hFJTFrcTJ6eU9SdTVm
RnZ9NVNzPFVhclhAWUdDfk9KZ1BGbmQxNy1AYzBiRD9INDdkUWVLTD1zfQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9HTVQrMCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9HTVQrMAppbmRleCBjMDVlNDVm
ZGRiYmE2YTk2ODA3ZDMwOTE1ZTI1YTE2YzEwMDI1N2U1Li5jNjM0NzQ2NjRhMjg5YWEzYzNjMGQ4
YjJjZTA2ZDQ4NDY3OTc1NGMwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE0Cmhj
bVdIRSUxa3EyQVA1K05EcCgrQCs8aWtCTGRlcF4xPU1RNTFwc0Q3MjR3Jk0KCmxpdGVyYWwgMTI3
CnVjbVdIRSUxa3EyenlPUnU1ZkZ2fTVTczxVYXJYQFlHQ35PSmdQRm5kMTctQGMwYkQ/SDQ3ZFFl
S0w9c30KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vR01ULTAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
R01ULTAKaW5kZXggYzA1ZTQ1ZmRkYmJhNmE5NjgwN2QzMDkxNWUyNWExNmMxMDAyNTdlNS4uYzYz
NDc0NjY0YTI4OWFhM2MzYzBkOGIyY2UwNmQ0ODQ2Nzk3NTRjMCAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDExNApoY21XSEUlMWtxMkFQNStORHAoK0ArPGlrQkxkZXBeMT1NUTUxcHNE
NzI0dyZNCgpsaXRlcmFsIDEyNwp1Y21XSEUlMWtxMnp5T1J1NWZGdn01U3M8VWFyWEBZR0N+T0pn
UEZuZDE3LUBjMGJEP0g0N2RRZUtMPXN9CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0dNVDAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
dGVzdGRhdGEvem9uZWluZm8vR01UMAppbmRleCBjMDVlNDVmZGRiYmE2YTk2ODA3ZDMwOTE1ZTI1
YTE2YzEwMDI1N2U1Li5jNjM0NzQ2NjRhMjg5YWEzYzNjMGQ4YjJjZTA2ZDQ4NDY3OTc1NGMwIDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE0CmhjbVdIRSUxa3EyQVA1K05EcCgrQCs8
aWtCTGRlcF4xPU1RNTFwc0Q3MjR3Jk0KCmxpdGVyYWwgMTI3CnVjbVdIRSUxa3EyenlPUnU1ZkZ2
fTVTczxVYXJYQFlHQ35PSmdQRm5kMTctQGMwYkQ/SDQ3ZFFlS0w9c30KCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vR3JlZW53aWNoIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0dyZWVud2ljaAppbmRleCBj
MDVlNDVmZGRiYmE2YTk2ODA3ZDMwOTE1ZTI1YTE2YzEwMDI1N2U1Li5jNjM0NzQ2NjRhMjg5YWEz
YzNjMGQ4YjJjZTA2ZDQ4NDY3OTc1NGMwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwg
MTE0CmhjbVdIRSUxa3EyQVA1K05EcCgrQCs8aWtCTGRlcF4xPU1RNTFwc0Q3MjR3Jk0KCmxpdGVy
YWwgMTI3CnVjbVdIRSUxa3EyenlPUnU1ZkZ2fTVTczxVYXJYQFlHQ35PSmdQRm5kMTctQGMwYkQ/
SDQ3ZFFlS0w9c30KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vSFNUIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL0hTVAppbmRleCAwM2U0ZGIwNzY5MDBjNzRhZGQzOTE4YWQyOTNjNzdmNzcxNzg3NDY3Li5j
Y2NkNDVlYjhjYjJmNTZiNmExYjc1ZTJkN2I5NTMwY2I1YWJmMmUxIDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMTE1Cm1jbVdIRSUxa3EyQVA1K05EcD55aUZIVEAhQENYaUoycTgtczdm
YEZBMFQlI2E0R2N7SAoKbGl0ZXJhbCAxMjgKemNtV0hFJTFrcTJ6eU9SdTVmRnZ9NVMhKXl8S2JE
JjI5TXduQVNaO2RLQTBJU0tWWVVIOF44ckwkSXlUYTBOJCQmCkFOJm8tPQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Ib25na29uZyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Ib25na29uZwppbmRleCBk
YzkwNThlNGI1NzhjYThjOWJiOTU0YWYxYmJlMjZhOTY0ZWFmNDA4Li4zNzhhMzdmOWY3OTM2NTJl
ODE4ZTY2YjUxYjliNzc5ODBiZDc2NDYxIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQ3
OAp6Y21aMz14c3IyJmNwP0szdSE5STdhME94elRkKn1WZEJRMVFMeFdTZENtV3BoRjA4bjs7TkZE
RysxREdjT3BlJWIKeilvRnZwd1BMRnMqWDxtNCt8Vj1IYXBSfXVqJDM+cEo4cz5TLWZ7Y3d3O2d3
T3tNflcpPzJSNHc3RC12JC19Y3BGCnpWJEJJKk1rWnohTWtaRF5BWV84ViQkXllVUDdEbSRUcClg
SjhXPm1AODBzYzRheGdISWNSPCgteXZYN3t6OTlAQQp6LVhJKHQhciVxT1Y4RjtZTEEpTnMhdGxY
PUFPUUlTTTF5PCtyaCZjeihJNmp6WHBwWiFHe3xRbDhzc3w9NGV9dn4KejJLZj8xZ00xMzJMQjBq
a0twJXI+a2d4eSQqOD8odVVJeigpeWJxIzVLPihzYiEycUhgSz4/eWMhTGhsWVgjeWp6ClEwUCY8
ZUspOFVScS0oKGkwRVo2OSpaPT9rCgpkZWx0YSA0NTIKemNtWjM8eHMtRSljcSVJYzB8Tit5ZkV5
NWwqbiRsfXFCUyQ+K3NSa3FKNUpyUVQ1O09EcVQhTkhRby1lez9HeyVpCnpkIyQrWXc4NyVxdGVx
PmErZDF5SXB7S0lxIyF0JX54QUBwcitgMXtmPE0hSlpFQUgoMHlXe1RKUSFETipsQ3JxSgp6Q1Ik
QCsjUiptaENQcFVhJCUlfEFsTzAlT0VnMlpIeHF5fjEpSjxTeVZQR2d8VkJpRj84RihSVkFLd3JM
NUFSP1EKejV5SWRGcSFEMChjcyo3cHw5fnBfNCtKMm1nSl9XUkt7VXQ8QVI2UWk1RG9HUWh6NUJG
TTEjQnBxQ3dzUShJQnNaCnpYcHJ8bkd7fW8hOHRCZGN8SVBtWTJsKjh3MFAtKTAyS2dDOGdadkdt
TDRGNihBcGU3Q1AjQTNQV30zaT04VlV8JQpNaFhOTmNWMDEwRzBSMHhuMDAwMDAKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vSWNlbGFuZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9JY2VsYW5kCmluZGV4
IGRjNDljMzI0NzA5MDZmYjJmZjk0ZmM1OTljNzMxNDE1OTc0NDNmOTguLjEwZTBmYzgxOTBhNDAx
ZjY3Yjg2MWNlZDNiOGIxNjQwMTQzMmE1NjUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
NzYKeWNtWjMmKn5LfFFUJEJMXypneW1qeEJ4TVRFd0lyKmZOYD1UVjt3SH0lfDk2eG1fUTJIeFpI
aDE0N2RQYkRHQ3cqCgpkZWx0YSAxMDUKemNtZUM7VCo1ZylUI303fWZkUGE7eiFpdT1ZPUgoS3V+
QTJXayYkN3Q0UHpadGRWO3R0Uj5lUG5pYX11V0dlIWpfClBoej1mejIkI0VXaHlmUD5PPXRefAoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9J
bmRpYW4vQW50YW5hbmFyaXZvIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL0luZGlhbi9BbnRhbmFuYXJpdm8KaW5kZXggMzk2MzFmMjE0ODZjNjFhMTk2MzlkNzNk
NzU3MWVmMDg0MDE3NmIzZS4uOWEyOTE4ZjQwNDA0MzQwZDU3NmNlODUwZjI5NTBiYWFkNzUxZjhh
OCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA4Ngp6Y21iUXNecVg7bHhHRG5AVTsobU9m
bW1lWXlJWCZAOUdaM0VfKGI7YFp9bEh1bmRvUlh1fkEkVU5odCRkP1ptQUwKT0t4dVheU0h9PXRW
PWUlbEApU3FfCgpkZWx0YSAxMjEKemNtZXkoSUcxVUh4RTNufDB8Tit5MEV7aXQwT1Z8WmNrOW9W
TCRmWCVwWGgkJHReVUkrMz17WDZhZWBFViFOZnVkCmhTKHRLPTBFe2oyMTB2NWJhaD9Kck5RKXFw
NTJVelU5WWJgRHhkMXJtN1J2d3QKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vSW5kaWFuL0NoYWdvcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9JbmRpYW4vQ2hhZ29zCmluZGV4IDBlNWU3MTkyNzk1ZGVj
YzQ3YThkMzM4NTIwY2UxMjE5N2FlMWNkMzEuLjkzZDZkZGE1MGY1NzkwOTNmMjU2MTdjNzcwODFh
ZTk5Yzg2MzFlYTUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxOTkKemNtV0hFJTFr
cTJ6emRqeHZMTVhVU0AoVTghTHojPz5pX0AkJiZiNVl6fktBQHF8cSZhZnJXdH5CIVBqJCQyV3ZR
CmsrclNpdiVAeyZSRmNAZ3dlfntySSg/QXgwWHJlNlB2SEBDVXIpJE9xMEc+JUJsSz1uIQoKbGl0
ZXJhbCAyMjUKemNtV0hFJTFrcTJ6eVFvWjVmQkNlNzlhKyhjXlpJM1hXalFYMkc4enBzUT5AfUtM
YUJaNjlhP3U2UUQ0SVRMNEkxCnlOQ0U/Z2s4Y1Fyd3QqPVNufUg7TkFjTz12ZW43TV4wRkQwLXZK
MW9vKiQxTFl2NklVTlh1cUFWODVhTzZuazUrawoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9JbmRpYW4vQ2hyaXN0bWFzIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0luZGlhbi9DaHJpc3RtYXMKaW5kZXgg
MDY2YzFlOWZhNmUwZjZhYTQxMjFmZTBmMjM3ODUxMjUyM2NkNWZiZC4uZDE4YzM4MTBkOTdiYmQ0
MjRkYzNjOGZhOThkZTQ2YmZhMDhjM2ZhOCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2
MQp6Y21kblN4Umh+JUk0YzdQT3E5YF5BVDlASExKMX15NFo8QSVmdUxBeTxyOVg5eTBWO0hIcmZX
fWNEbStWMDg3bWIKQUZhUTdtCgpsaXRlcmFsIDE4Mgp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1P
MyRmXkpUfDM0IW0xNEZWNU5HaHAtZnlLdStnaEFXRDlLPlleQSM1NW0KbFAjTVRYanZwV21LbWF1
R2YzZXVnQ209UytiT3prVWJKK2tidmVQeF4wc3dmRTg4UUY+CgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0luZGlhbi9Db2NvcyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9JbmRpYW4vQ29jb3MKaW5kZXgg
MzRhMjQ1N2JlZjJhNDExMjlkY2NiNjJmNDMyMGFkNjZhNTJmNjRkYS4uZjgxMTZlNzAyNWNhZGM3
MDliYmQ5OTU5MDVlODhjOTJlZDAzNjQyYSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2
Ngp6Y21kbmJ4UT1teEk0YzdQT3E0TzBBVDlASExKMX15NFo+WGlmdUpULVozKTlmVTNvcSg4Kkt3
S1YqQCl+R2I+e1EKRkUmenlvNEExfW8KCmxpdGVyYWwgMTkxCnpjbVdIRSUxa3EyenlNNEA1ZkJD
ZTdATW1CJGZeSlR8MzQhbTE0R211a1dfUkExQjtKdTIhcG5Qblh2JiNmRlhwaQpxZENXaiVBVHpt
c2ZIVkxCKDgmS2FwPXdKJlk+QGQzXyQ9VkUwYjZGTFlpNENeenkkIXdFZ1FgTQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9JbmRpYW4vQ29t
b3JvIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0luZGlhbi9D
b21vcm8KaW5kZXggMzk2MzFmMjE0ODZjNjFhMTk2MzlkNzNkNzU3MWVmMDg0MDE3NmIzZS4uOWEy
OTE4ZjQwNDA0MzQwZDU3NmNlODUwZjI5NTBiYWFkNzUxZjhhOCAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSA4Ngp6Y21iUXNecVg7bHhHRG5AVTsobU9mbW1lWXlJWCZAOUdaM0VfKGI7YFp9
bEh1bmRvUlh1fkEkVU5odCRkP1ptQUwKT0t4dVheU0h9PXRWPWUlbEApU3FfCgpkZWx0YSAxMjEK
emNtZXkoSUcxVUh4RTNufDB8Tit5MEV7aXQwT1Z8WmNrOW9WTCRmWCVwWGgkJHReVUkrMz17WDZh
ZWBFViFOZnVkCmhTKHRLPTBFe2oyMTB2NWJhaD9Kck5RKXFwNTJVelU5WWJgRHhkMXJtN1J2d3QK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
SW5kaWFuL0tlcmd1ZWxlbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9JbmRpYW4vS2VyZ3VlbGVuCmluZGV4IGU3ZDRkM2QwNjYwZWQ2OGNjZjdhOWZiZTZjYzBi
NDFlZWEyM2RkZTUuLmNkZTRjZjdlYTcwODZhM2ZhMzYwOTU2NmZmMDNlOTQyNWIwOTZmMzYgMTAw
NjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNjUKemNtV0hFJTFrcTJ6emRqd3ZMTVdIRD4x
Mnx7e1IyfmpFcGUjWlVHRHx4JntVZSs2SlohQXRhYXRHfl8/WEc+fCNDCk9QMntveG5ybytQJF5g
KDk+PSV+KwoKbGl0ZXJhbCAxODcKemNtV0hFJTFrcTJ6eU00QDVmQkNlVypgUSFJVTBiKHQ7RDI7
YHYzcGBHY1ltJmQwXmxjemAmd3dWOEVibFU8JjRrCmNrWU1Cd3MyTTtMfEFVTU1hUzBnRFdkcFJ4
UFM9elIwMUM8KDgyfHRQCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0luZGlhbi9NYWhlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL0luZGlhbi9NYWhlCmluZGV4IGRiOGFjNjg3NTYxYzQwZTg1YzI5ODA2
YjMwOTY2ZDBkN2Y3ZDgwNzYuLmNiYTdkZmU3MzU4ZWJmMGQyNzU0MmNhM2FiZjNhYzAwNDVmYWUx
OTYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNjUKemNtV0hFJTFrcTJ6emRqd3ZM
TVhTa0BCcGl7e1IyfmpFb0VuIyh6TTFFRjJoRWUwKU9+djwqeGNMUCMoUFh2bHclClNYJl5Jam81
KkRZR31saG9nYk0me0ZkRjlvCgpsaXRlcmFsIDE4Nwp6Y21XSEUlMWtxMnp5TTRANWZCQ2VXKmBR
IUlVMGFPTjZORjdgdjNwYEdjWW5URmN8KjxpWkVDPkZ0R1VlaEE/T3cKam4xSHdwQXRWXzIxRlZD
QTBjaGZYa2tLRzYwcHEhQmZFTDs1bnM1T0MzdGIjKAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9JbmRpYW4vTWFsZGl2ZXMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vSW5kaWFuL01hbGRpdmVzCmluZGV4
IDNmMWE3NmU1NWJjMWE3NDQ1ZDlkYzJkZjMxYmU4N2Q2YjM1YjRmNzQuLjdjODM5Y2ZhOWJkNjI4
NDJjZjIzZjAxZDUxOTViMjM5YmM1YTQzN2MgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
NzYKemNtY2JeYyR7JjlJNGM3UE9xOCptQWcmOCRMSjRMZDRaPU1DZmdvKCNkPGhXIVJ7IXR9a2JG
SW1KI21kOUN6cC0zCktmdktJWURIajBNPFFCSTgKCmRlbHRhIDkwCnpjbVhAa2Mhek88X3sxOEhp
U2t4IzN9Njd9PlZjUm5LK0Z1cEpVPjdAQW92ZGlWY1hfUWZhdGdTaGk4RHE+VmEmQQpWaUV8YkNL
Xno3S0Uqb3RGUSMpTiNFJnlBeThQZm0mCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0luZGlhbi9NYXVyaXRpdXMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vSW5kaWFuL01hdXJpdGl1cwppbmRleCBmZDhk
OTExMTI5YmMyMmZlNWExZDFmZjkzZTMwYTA3MGQzNDUyZDg0Li4xN2YyNjE2OTkwNDkyOGU0MDYx
ZTRlZTU4YmRmN2E2YzYyMDAxNTI0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc0CnRj
bWVCWGBwN3N6VCRCTGB1bVJjM0srSDRJS3dfZSYzUXBQTzIwJlIoRSpvdEY2RlhmS0UmeDQmMjw4
OSkKCmRlbHRhIDEwMwp6Y21leSEqdiZMU1QjfWlBZmRQYTtmRXxjSVlAUC1uRjtQYz9renR+WDNM
QjZPMVFXeiV1YDJ4bWshRn1VI1E/MEYKUUFId0lkKEtheCMoPjM3JjAyTntpV2RIeUcKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vSW5kaWFu
L01heW90dGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vSW5k
aWFuL01heW90dGUKaW5kZXggMzk2MzFmMjE0ODZjNjFhMTk2MzlkNzNkNzU3MWVmMDg0MDE3NmIz
ZS4uOWEyOTE4ZjQwNDA0MzQwZDU3NmNlODUwZjI5NTBiYWFkNzUxZjhhOCAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApkZWx0YSA4Ngp6Y21iUXNecVg7bHhHRG5AVTsobU9mbW1lWXlJWCZAOUdaM0Vf
KGI7YFp9bEh1bmRvUlh1fkEkVU5odCRkP1ptQUwKT0t4dVheU0h9PXRWPWUlbEApU3FfCgpkZWx0
YSAxMjEKemNtZXkoSUcxVUh4RTNufDB8Tit5MEV7aXQwT1Z8WmNrOW9WTCRmWCVwWGgkJHReVUkr
Mz17WDZhZWBFViFOZnVkCmhTKHRLPTBFe2oyMTB2NWJhaD9Kck5RKXFwNTJVelU5WWJgRHhkMXJt
N1J2d3QKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vSW5kaWFuL1JldW5pb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vSW5kaWFuL1JldW5pb24KaW5kZXggZDVmOWFhNDlkNWUwZjk5YWJiYjEwNDA3MmRi
N2M3ODExMzczNjVjNC4uZGZlMDgzMTNkZmZkZTM0NTA0NGQ1MDUzZTMzNTlmOTIxNjNkM2UzOCAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE2NQp6Y21XSEUlMWtxMnp6ZGp3dkxNVmNA
ci0zZHtyfl59ODV0UUVPdSQrITkyaSk5ZF94JHQ0Tk1xOU5IN1UjJGJYUCYKUkFWWUFRJFlsZEcq
R3xgajNqbzJyNzt5anEKCmxpdGVyYWwgMTg3CnpjbVdIRSUxa3EyenlNNEA1ZkJDZVcqYFEhSVUw
YigjNTB4K181YzY+WEpCTXhVQCFwK0ZmZHArRnRHVWVoQT9PdwpoSz0+Z2Y4MkpOaTBze2xrI1F6
fHBMMGtnSGJKK2tidmVQeDswc3V5bjhTPy1ECgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0lyYW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vSXJhbgppbmRleCAzMTU3ZjgwNmI3ZDdmZTY1MGVjNjcyNmYz
MTM5ODgyNGNhZjgyY2VjLi44Y2VjNWFkN2RlMmYyYzE0ZGQ0YjBhNmMzNzVkNzE5OGVmNzQyOWI2
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDk0MQp6Y21aOUxZZS1YSjc9VndON2ZjRCMo
bSpQM1FsUjE1ayt5Q1k4Q2VSYzFeVDF4JEM5S1ZnJGtrVChzR3Vtc1lfRSEKeiY2PHxpbiU3eHNu
T2JnWFlFOHxZODZ+OFU3LVl+NVlVaEM8SSZrPkQ9UkQ4KmVaTmtWVGJAVWo9VklaWEMpVCFpCnp2
YzI5MGQ2dTFTJXBxMnsjY30oOGpybmc9VXBHJT91UT9hRmV9e0JKUXQrZm9UOVh5b0o8QHZLKlY4
RGk3dT50Pwp6RFVNPElsKH16cz9aPm5EKVI4bXJNWUJEOCQhTVRZdDVWV21FfHxvcHJ5c149b2J0
a0Y5eDBaKk16fDdGI0R9YTEKejl8cDM2MXtsYSQ2VUJnVCNlRHFMTVFRazRKMCg4JU9CKzcjTG8w
bDNjcV5SV15famspSWchNHcreXtSPnpYRT9GCnpINXktWlYlKzk2Zj4zPE8lNz5ERFk2Zm5HRW83
aXtRIVdGeXtEYmtnbXpuVC13P3dARF9iK19lPmAlRC1lRytfVQp6Rm82RFVYQ3IrQG9mPT1NcFRi
d15eNj1HS1o8VGJ2UDs9WndQI1lJY2E0JmluZTFFM31IbUgmcnNQbDg/ITF8PykKel95KlN2Xz1Y
P1Rfe056OGVBOVM1K311QTA4ezEzaVRNUjRkQUN3SD9BTGleO04lc3FfTnpNZHEkMSh9cDRgamZQ
CnpxVEohZitkM0hOUD07e2U2Vz0qfXJgSmgqbSh3YkkqWXtke19qQz5YKUdFVHklPHQlWCs3OG0y
c3kqPUw7ekE5PAp6Xk5iTEpVUUhpQ1VxVWJaTGNKVUFqfSNhZjItZWFNRG4kSENTcXVKXmRtUF40
Rm9VO3p7Ujl0OTlmZ05TbWVZQHoKeiVJSUdrX3V4az42ezdAaTNiWGBjPjg9RlUoK2xBN18teSFY
JXdgNUEhbjstY1NGO1dneChUfV8oKkdyTSsyfCkxCmZNUzBMX2FsSShGP0VgSWx8NGArKzA3YW1H
c0E4PlhUVjRKRDtBSHU+CgpkZWx0YSAxNDcKemNtYk94dlc8Nnd4RmtDUjB8Tit5S3BHSCgqZklA
M1Z4IUlrTSVNY098Tms+Zy1vdXpPUylSJEE0PTlRUkNXeTtvCm4pJSpqaFg3ZU5fNj1xWnVjIypV
LUZpaWYpRGI4YklwbF9oI1duXlplWkA+aXJ8S2t8cAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Jc3JhZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vSXNyYWVsCmluZGV4IGRmNTExOTkzNWM1YjAxNjc2
ZTYzZDFmYjFlZmQ3MjczYjhiNGI0NTIuLjQ0MGVmMDZiNWQ1NWZiYThmMTQwNzE4NDc1N2UxNzg1
YWVjMWZlOGUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTMxCnpjbWNhOV8oNT1qSTQ9
VmRtXkBLc2opM3JzUlMhZklJM0d5O0VPe1deRUF3RkUwZHVDdzB2cyVwRD55N0NoPklkQQp2WFA2
QSt1bVEyPzxecENOTWo0UCFrVGdnKWh6Nk1lcUN1dT9wMX41cEpvelBpS2dfN2ZkcFRxUGRKWjl2
CgpkZWx0YSAxMzcKemNtZXckY3ZFbktJND5JbTB8Tit5Sz50TFFJVTZzU0dmbjFadyZafmJMQzZX
PnZkSFF0MDdYSDMoSH5Hbm4rdXFBCno3JnFAPkBuTDNVbXxWZnM0PkNYbERoSDt4SmNDMVlqWFln
S2JiTzhWTyFRM2pqbSZnPjRHcns2XiRmVEd1SEY/bgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9KYW1haWNhIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0phbWFpY2EKaW5kZXggN2FlZGQyNjJhNTdmMDk2
Y2RhNDdhODU0MmIzYjY2NjMzNTYxNjQxZC4uMmE5YjdmZDUyZDM3YTFmZmU5ZmM1ODlkYWEwNGQ4
OGM2YzcxYTZlMCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1Mgp1Y21leSh7RF5zaUk0
YzdQT3E1d1JMMGxCZmdjNCN2bmd4Z2pDalEkbnZCaSMhJVFaTn1sblZnO3Y8YTJ+CgpkZWx0YSA4
NAp6Y21hRkZ7RmB9I0k0Y1ZTMHxVIU1uUHUhaThVIVhEbCNtNkJMQVZVIUtwTW1zX3lIQXxfLStG
ZTFMTmR7aktVTFYKUFh6QFY+OE1zYDdMcmwyPEYwYyU9CgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0phcGFuIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL0phcGFuCmluZGV4IDhhZDQ0YmE5ODFhMmQ5N2Q0
MGQzZGUyYzhiZjI5NjA2YmU1MGFhNGIuLjI2ZjRkMzRkNjdiNDY1MTM0OTFmMjZjMmU2NjFjNmU2
NTNjYzEzMGQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTI5CnpjbWRuVHczVFVzbk47
TTU4JFcmKCsmcFhqO1dqKE5odWRwcUtpcWx0PSk+S2Z7fnNtPkw8RGomRmZnekhHMCVTPgp5Tklr
VHEwN1BINlZ9ajZjQlJfIW5BT2s9JiRQZj8+RzYrbHE0RmwwMjEzQCZ6UCpaajt1aXl8fU9EK0p4
UzUtM3IKCmRlbHRhIDExNgp6Y21kbld3MnhfbW5Vd2N+OCRXJigrJnJ1TTs1SXdNaHVkclVBS1pF
Tj0pPktman1JbVdMPG4qKkZmZ3pIRzB6Vm0KczBSal5AaVd6JTlfendnaVo2RiQ/Ni0weHlnSzN9
PEFSMSYwaHoxJE9GZnFWJXZLfUtsMEJ8IXpXQj5wRgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Ld2FqYWxlaW4gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vS3dhamFsZWluCmluZGV4IDFhMjcxMjJlZTA5
NDEwMDk1ZDQzM2FkYWJlNmJmMmViNzcyNzEwZDAuLjFhNzk3NWZhZDdmN2U5NmY3MTAxZWIzYzY0
YzliNDIwZWVlYmI2MjEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMTYKemNtV0hF
JTFrcTJ6emYpY3ZUUSZzKEV1YjR6QlJwWUApY0xZZEFHKDd8SiRTa2JqdFZ+PmlfQCQmJmI1ZyRp
bTlYCnp6JWJfbFAhKz9oNEdiJnszX1N9TkkyYWh9Q05Teyl7fnp3YUFpJSh8O3NBcSlrOGNRcnd4
SjtxOCElYGFTVGc3dQp6OFVmaXgzP1U+cTEhJnt7SXhgNmM1RGp0P2h6MjxlTTEhM01WZ1F7N2F0
cHxiQWk1cVhMPE1KWiojSTREMlhyKFMKRTBEbSkzOVJMNlQKCmxpdGVyYWwgMjU5CnpjbVdIRSUx
a3EyenlLXmo1ZkJDZTcrYXRMJG9ielU5aVVVUD1ScDFjfE5qfThuMykrRTx+I3JqR3RBbishMURp
cAp6eEJ+K1IxSCp+fjNfTCEqQXE/N3ZoNzd1Zk1uRD4yTGtNQn1TYkBmWT49Z0lgRzhoUGVSe2dJ
dGxUWk5CQXAxZEwKWEFVQTtNZFl9KmtJUyUybjBYb1lMPXNZZH00TjVWdgoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9MaWJ5YSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9MaWJ5YQppbmRleCBiMzJlMjIw
MmY1NzJiOGNhNmVmM2M1Y2YxZDllNzg3YTI0ZjJjMzI4Li4wN2IzOTNiYjdkYjE0Y2VmMWU5MDZl
YmU2M2NmYmJlOGNkZGM3OWQ1IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc1CnhjbWVC
WXttMyN3VCRCTGBDOy1fa0tyQUBYcGtkLWgmJmY9VElPRz9iRil7KWJ1eWVWKGhVZ2tgMFJWQlYz
SCQmNgoKZGVsdGEgMTA4CnpjbWV5ISgkNnxVVCN8KT5mZFBhO0tvTipSWXszUX5GO1M8MWt6dWtU
bFAzcHwwfHBic1d3RU9NMGhNMkAkakF1TQpRIVZlVzs7QnN7aChLWEAlMDluNVpaMiRsTwoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9NRVQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vTUVUCmluZGV4IDcx
OTYzZDUzM2U0NDQzNjIyNTBkZWM1NDY1ZWM1ODUxN2FiNmMwOWQuLjRhODI2YmIxODU1MzFjMzRl
YjM3OTU5MDM3YzY4ZmJmMDhjMjNmNzEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgODEK
emNtZGxjdXVmb3RJM3ZTRzJAQHRKTXV5M1M+PHlDPm5BbXQyODJBSmpTUSF7KDZvNyZjbT9TfUpI
ajZUY3U7NWNQCklTJkJtajBFKDltJkh3LWEKCmRlbHRhIDExOQp6Y21aMXt1dVdpc0kzdnFzTDF2
TVNJdG9sbzQyK1d0Kj1yXnpGbWRyUEZ2dXR7R0I3YWsyezVvdWUhd0tqMCVTOVEKcTZtSiR9NHE/
SGtRVVJvciVoeHFUKlU7QkJJN0crU1NrRnw/SyohaDYwN1VCPmF7Jk1YbUs1Nm4KCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vTVNUIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL01TVAppbmRleCBhMWJlZTdj
NmYwYjc2YjZiMDMzNzNlYmE4ODBmNTJlOGU4MzQ3MWFjLi5jOTNhNThlZWU4YjMyZjY3MmZkM2E5
NmNhM2U2YWRhNWIwYTBlMTY4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE0Cmxj
bVdIRSUxa3EyQVA1K05EcD55aXBGNHFwIThiVUJBJXJZbFR0S2JuVG1XKlY0Q1ZqOwoKbGl0ZXJh
bCAxMjcKemNtV0hFJTFrcTJ6eU9SdTVmRnZ9NVMhKXl8RzUodzc8X3w2ZlNlRypgZTBfVHtEN0gp
WXljT345Q0khSl53JG1KCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL01TVDdNRFQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vTVNUN01EVAppbmRleCA3MjZhN2U1NzE3NjU2NzA0NGQ1ODU4MDBjMzdjYmM5
MTdiNDQxZDIyLi40NTA2YTZlMTUwZGZkNzM4ODQ4MTFjOGMwZjVhMGUyMWRjNzZhNzU2IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDE2NQp6Y21ldysqZHtiVlQjJUs0ZmRQYTtVQDghXlpx
JGZpVnE7YHJXTUU+UkpkdnFvdkg9SVQtMmVZYENvcik1fEcjPHgKakJMa1NeMEZ5aXJAeVdXKDs+
PHR8Kmk3NDslZTtuI0ptVihjPEIkTFZLKnVubAoKZGVsdGEgMTg1CnpjbVpuQGBYKUYqVCMkdTxm
ZFBhO1VAOCFeWX1BTmdWcTspclV9UiNSSmR2cW92STdVViFUPGxPN2Nlc1h8Mzd5RQpxMH1HaFYw
VmE4VFR8eVhxZ01tMDRoeXl9RVcteCo8SGdoK1pHT3VCdylab2VRSTN4aHBNbGZYbgoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9NZXhpY28v
QmFqYU5vcnRlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL01l
eGljby9CYWphTm9ydGUKaW5kZXggMjljODNlNzFmZmE2YjA3MWM1MmIyMzYwMjk1YmY1NTAwOWMw
OWI3Ni4uYWRhNmJmNzhiMjgxNWQzZDk5Yzk3ZDUyMWFiOWE2YjM1YzhhZjhjMyAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApkZWx0YSA0NwpzY21kbFl2YGxEJUdVcnFWMV9tfURtZV48eiFaZ3tRPEw9
fW5XK2MoZykwa0pWMEVORS0wMCpRQ2RIP19iCgpkZWx0YSA2Mwp6Y21aMWB2Xyl1d0dWZTQ3MV9t
fURtU19NSDgrQWdNNyNTdVRhQD9JOSVkOUwybS1fKmYxQSl6KiVxdipIM2NkbVcKRGwpKChwCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL01l
eGljby9CYWphU3VyIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L01leGljby9CYWphU3VyCmluZGV4IGFmYTk0YzJhYzVjMTY3OWQzOTE0M2VhZTA2MmI4MTIwNzA4
NzY0OTIuLmU0YTc4NTc0M2Q3NWY5MzljM2U0Nzk4ZWJlN2M3OWQzOGU0Y2ZkMDggMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTI4CnpjbWJRa15ObzlneEZgYj5oeX05UWZMTFVzSz94JVZC
TkdAaFB1fEVGSVFhbDAlajUmQjdQdkhRdTN+ekBnakkoRwpjbXYzOzB4dnh1emo8MVFIcGBMK2B1
YzNqU3NoJEJCMFBfZUg8XlRXeQoKZGVsdGEgMTEwCnpjbWV5eUolP3c0eEZqMGAwfE4reUtwWVQq
KmRoJTtWeHZ3ODxLKzJfKHxDWXZJRzcrVmkmZXU5c0VXO3JPZlElfgpQeTEzejU3I0pxc1d0OVd+
e3ZRckUKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vTWV4aWNvL0dlbmVyYWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vTWV4aWNvL0dlbmVyYWwKaW5kZXggZjExZTNkMmQ2NmEyZDdjMjFmNDk4ZGY5NmMz
ZmQxZGIzYTBkODgxNy4uZTdmYjZmMjk1M2QxMjNlZmJjMjU1MGY0NTBkZWNkNzk0YjAxN2Q0ZiAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA5NAp6Y21jYl92dz4lVnhGYGI+TkNMODFmbW1k
dEs/bWRISWptRH4kIzNwdjU/fUA/a2w9Qy00bCMzZjNETk8yKEtGT0QKTyhENX1pJkA8SUQtfnNA
cEFQPDU3CgpkZWx0YSAxNjEKemNtZG5NYkJTa3l4RmpuQjB8Tit5S3IjQDYqZGglO1Z4dnc2Qk0k
PjM2OV9UYEE8Tnswakc+YzdtYHUyVWwyOS1+CndUbyRZVEE1aSh0Qn1AWCRTUGZCdjhOdEI3PHMy
TWg9SWohcDw3PVg0c0FyKCNZaU9XbnMlTzlqMEZ4MEMqI0gwbAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9OWiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9OWgppbmRleCBhNWY1YjZkNWU2MGYxNWViZGJi
NzQ3MjI4MDA2ZThmZTA2ZGQ0YTAxLi42NTc1ZmRjZTMxMTgzZDgyMzhiMThmMmYzMGFiNWI5MjI3
YzcwNzFjIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU2CnpjbWJPdSskdWFsb1JNTHBM
PDtpK2Fadl4hVTxWT0VGYjlaMVl+anRAbklFdClGKT5iRnokN3R3OGBIN0xeXztRKgpEQW1zfiUK
CmRlbHRhIDgwCnpjbVpuX28rQ1Ujb1JOS19MPCUhSTB8WlBFbWp5OWwrX19NO0BESGZgPGB2OGpT
ZU99QDckK31hbDk7QFc9QD1WQwpKVnNiakM5MDFsejQxNTNwCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL05aLUNIQVQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vTlotQ0hBVAppbmRleCA5NTdjODBiNzlh
MzBmMzhkN2RiOTlmYzA2YjE2YzMyNTVjY2M1MGU3Li5jMDA0MTA5ODgyNzJkZWMyYWU3MGVkZTg4
NzIwYjRhNDYxNDZhNGQxIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQ5CndjbVoyM0Zo
eVgzSTN2U0dpUigtZyM2PWxeZkU3ZGxLQCQqeiprWVNDbTwzb1NuPXRMM3tGN1l8ME9KWT9JeypM
eAoKZGVsdGEgODAKemNtYk90dXZ9bipJM3cjdWlSKDxQMz9NSztUbyVORGEyT2J4cD1ffXFBVzB6
REVYXiN5IXB5K1BHVEQmNWRhP3NNClElajdsZVJ4Qld5JHhxcSEwcEprflJ7I0oyCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL05hdmFqbyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9OYXZham8KaW5kZXgg
N2ZjNjY5MTcxZjg4ZThlMWZiMGMxNDgzYmI4M2U3NDZlNWYxYzc3OS4uNWZiZTI2YjFkOTNkMWFj
YjI1NjFjMzkwYzFlMDk3ZDA3ZjFhMjYyZSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAz
MApsY21iTyMrI3xlVUF2NVBaMV9sT0pBUXN1WWlUTU18PFJ3aEVDZjlPRzAwNHN9Mj5idjUKCmRl
bHRhIDM2Cm5jbWVBWG8rYFh5QSt6OW8xX2xPSkFRdCVuQnRUJkVEJmBMP2owfUAhYWVNKipuUXtv
KAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5m
by9QUkMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUFJDCmlu
ZGV4IGRiZDEzMmYyYjBiY2M4YmVhYjA4ZTA0YjE4Mjc1MTc5NWM4NTMxMjcuLjNjMGJlZjIwNjEz
ZDIyZjM1N2Q2YmY0NmJhMDFkNmU5YmY0YWQxMTAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCA1MzMKemNtYnUqemJed305TE1vKil6OExvdT9pa1Z3UyZiVjUrYkZRTXA2czZGd35eZD9h
YT5RTnRqcX14OXx0fTJQRCF9CnopMiY3SXpqKUhrI1BAd1dpTVkjaXVpPSpHXlkpSiReO1AteG5i
eUIpSihFXkhGR25Ab24pblBfLURoYyErXy1qRgp6bCtNUE0+KXV9MipQVGNBd3dzbXJZU1o7TG9B
TlBRNUJmNiQrdXNofD85K2puWXV2PnF5MXQqXnlOdDdFNGAhaW8KejUtKFArJStnZm88KDV4UFpj
eXtgVi09SXs2dXFJO2tGVXNpUGo0Ym9vRWpEaHRjK0xwZUpQZG85UXh3X1ZiR1U4CnooT1JqMTNg
NTJ4Pk9mPjxxN0ZzSUI3PjM5JFoldmw1JigmU2doPHBGK0Ayc3Y2ZUo4MTJNTDVrTFA4PDJrWUlA
IwpRNEdFWHtwTGlLOXhVISE0MjNNRDt3ZzNQQwoKbGl0ZXJhbCA0MTQKemNtYSkleSQlNkU2b3Yw
MUFzZG5LMFJHd0NoKDtrPVMmMHhUUTs4NF93aV8/NzxgRiFQQ3M7fn1ENz9mKEJedklUCnpsN2No
MmApemgrQys4RT5WQVowcCNRNiZiJEAxVm10QHNobUVFUFErZEF3eFE9e0Q4Kkx6QGMwUDhQJEJE
aC15aAp6SlJob3g9Z1ZxO098eyVZKlBRez8/X0tSQzh8MG9WSSVhKD1xVjFMTXJFcVUwaEBfJl9Y
ZWBMQEBrfDZaSU8yRTcKejkzTHwhQUxiOUQ3Yms0ezkqRU0wVHBVRHM1Q1MrMzI/UWJfV0l6YWtr
T0NuRkxKb2wtMnVWWDAxdER3NSF0fio1Ck0jcmBxMlMtI25eLTtwWDxUPnQ8OAoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QU1Q4UERUIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BTVDhQRFQKaW5kZXgg
NjI0MmFjMDRjMDlmZDRlNDk1MmNkMTY1MDNlOTU0ZGNiZGFjZWMyZS4uOTlkMjQ2YmFhMzVjYjlj
NmY1NmQ1MGFkYmVjMTYzNDUyZTJhNDdmYSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAx
NjUKemNtZXcrKmR7YlZUIyVLNGZkUGE7VUA4IV5acSRmaVZxO2ByV01FPlJKZHZxb3ZIPUlULTJl
YW00R2IqKnxJZU1rCmkkTihsZXokNmJ1ZTZsWEhJNVNXS0hxJG9lR091QUYmJCE5PUkzeGhfSn0t
M3UKCmRlbHRhIDE4NQp6Y21abkBgWClGKlQjJHU8ZmRQYTtVQDghXll9QU5nVnE7KXJVfVIjUkpk
dnFvdkk3VVYhVDxrckNvblNufEtIIWgKcXp5ZkEtZkp2U0pta0BANFU/Ml8kOyghcDQ4SF54fCZE
X25VJXhoUkVIRil3bjRoYUJeK0FvYSYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9BcGlhIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvQXBpYQppbmRleCA0MDkxYTg1ZjM4OGI1
N2RmOThmZjlhYjA1Njk1OGU0MWM3ZDAwZmQ0Li5kYWIxZjNmNjAyYjI5N2NmZjUzMjIyOTA2ZmU3
YzIwMjMwNTg3Mzk1IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDUzCnZjbWFGSWFndCsj
STRjN1BZP050V29GRmE9Vzx2PVpBazdaTVFrKEJGSzQ2QEBwU2ZZT0ZOLTFvfEwrUFkKCmRlbHRh
IDkyCnpjbVhAZkBzNEFISTRlNT8wfFdhO25GZEJhQU9pX1o1U0lsQEw0fENBRz45K3QxMWhsajFt
Z29uTXV5MlVqMTlhewpMQXFYe0Rva2EtJTU1V3E3CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvQXVja2xhbmQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9BdWNrbGFuZAppbmRl
eCBhNWY1YjZkNWU2MGYxNWViZGJiNzQ3MjI4MDA2ZThmZTA2ZGQ0YTAxLi42NTc1ZmRjZTMxMTgz
ZDgyMzhiMThmMmYzMGFiNWI5MjI3YzcwNzFjIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDU2CnpjbWJPdSskdWFsb1JNTHBMPDtpK2Fadl4hVTxWT0VGYjlaMVl+anRAbklFdClGKT5iRnok
N3R3OGBIN0xeXztRKgpEQW1zfiUKCmRlbHRhIDgwCnpjbVpuX28rQ1Ujb1JOS19MPCUhSTB8WlBF
bWp5OWwrX19NO0BESGZgPGB2OGpTZU99QDckK31hbDk7QFc9QD1WQwpKVnNiakM5MDFsejQxNTNw
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L1BhY2lmaWMvQm91Z2FpbnZpbGxlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRh
L3pvbmVpbmZvL1BhY2lmaWMvQm91Z2FpbnZpbGxlCmluZGV4IGRjNWE3ZDczY2NjNTlmNzA0ZWMz
YmIxMmZjOTA2NTYyMWJiNjYyNzYuLjI4OTJkMjY4MDk0ZWE3ODViMDQ1ZTUzY2I0NDFhNTUxNjcy
YWFiZDAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTExCnpjbVozJSlXYkFFVCRCTGB1
bWFnRUtyQXAoTV9PJi00VWtPRjArMn1FMU9eVFVoRktkSmN6az9BN188IXk3XzwjNgpoZndVbjVu
aDkoYEVnKH13QyQySj5jLXhZVCVMYl4oUFM/PG8zamsrVzVLOTA2CgpkZWx0YSAxNDAKemNtZUJT
VEVSM3lUJEZgQGZkUGE7ZkU5PkFZezd7LSgpeWhyS3RlcVdLJSNYTTcmc1hpV15He0w0ZTwzMVZi
Q0AtCnpWOSsrTzFrIzJlSERFQTdUbyRBcWdoN0JFaChUPThBMFFxT09xXi1KJFQwRHdyM2khekJE
cmpVMkg1RXU4Z2M7dQpEOXA0ZU8KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9DaGF0aGFtIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvQ2hhdGhhbQppbmRleCA5NTdjODBiNzlh
MzBmMzhkN2RiOTlmYzA2YjE2YzMyNTVjY2M1MGU3Li5jMDA0MTA5ODgyNzJkZWMyYWU3MGVkZTg4
NzIwYjRhNDYxNDZhNGQxIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQ5CndjbVoyM0Zo
eVgzSTN2U0dpUigtZyM2PWxeZkU3ZGxLQCQqeiprWVNDbTwzb1NuPXRMM3tGN1l8ME9KWT9JeypM
eAoKZGVsdGEgODAKemNtYk90dXZ9bipJM3cjdWlSKDxQMz9NSztUbyVORGEyT2J4cD1ffXFBVzB6
REVYXiN5IXB5K1BHVEQmNWRhP3NNClElajdsZVJ4Qld5JHhxcSEwcEprflJ7I0oyCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMv
Q2h1dWsgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZp
Yy9DaHV1awppbmRleCAyODliNzk1YThhOGJjYjY2MzJjYTk3ZWZjMzYzMjY3ZDJkNDkxYzA5Li4w
N2M4NGI3MTEwYWQ5NTg5ODEwYjkxNjM5MGFlZGM3ZWY0OThmNDIzIDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMjY5CnpjbVdIRSUxa3EyenpmKWJ2TWZOJSgqUHU5MnJob0chMUN2Wmxk
cmZFRSghOHxzUT5AfUtPKyttR1hEUT5hfFduQAp6cD1TWHxiPT9GODRoWS1GSC10Z2soMTFiUHo+
KjxedXg7IT5CVXBpJDJXYXFyayUjK0RLeTttJSs3PUtFdks+VCYKcVRtWWckdF5tOz5td0BjOTJl
S0tObjFQVDk9QTFxc2tPViRRYW9HVCFYUXlqdXp5JCF8cC1iaWYKCmxpdGVyYWwgMTgzCnpjbVdI
RSUxa3EyenlNNEA1ZkJDZTdATU8zJGZeSlR8MzQhbTE0RXc9TlVDUTYxQjtKdTIhcG52MGZAXkdM
ZkFCQgptcGZacSY5NnZ4QmZCPE9WfDJpfFpFZyZ8P2JPemtVYkora2J2ZVB2Ki1+c15RJmwpVE0K
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
UGFjaWZpYy9FYXN0ZXIgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vUGFjaWZpYy9FYXN0ZXIKaW5kZXggMDYwYmVmODE4OThiOWI0NTQ5MmNlMmUyZTM1ZmIyMThm
NWNjMjEzYS4uY2FlMzc0NDA5NjQwMmU4YTQ1MjMzNjU0NGVkZjk2Y2E5YWU1YWQ4ZCAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1MzMKemNtWWsmSjFqI3swRWhBMHc5Kmd+XiUhKUpBUUIx
TXQ3I041b1Y3enVWaTQtcF5yNihOXns4P2FpSkBWa013XklxCnpKRDNjVFF6QXlYTitnITlMfUZz
N2AheG9gJkZgRSRvJlJefHhOKnBXI21HbkdXSE9fSVMtK2ViNFhXdV94MTh8YAp6SFM0ZEZiNH4z
ayliJH1sVXA1dFBzTVcpLVo2Zm1kdTE5YUpCMzY5WD1UQSFfZXREJVlXRkUhaChUU2R6JGN2QDQK
emwqX3toVnJCZVR1NkFDaXdWfFg7UiVLUG5JVk14M3hMV0Bua1EpeUh3ZlcrZFRqeUBvbiFma3gr
eHJmY0ljdzIoCno1LXpkM19vRXZsXn07QlolTkFSJVhtOEhGKiRYK1p3V0luXyg9QHlKSEM7IW95
O2Zkc1VObH5oRUk/S3VPT1EzbAp6QjRpYl50ZklMTlN5PDZyaTdaOWRCOCFwTFhmVH12Xk58RWQx
fCRXTjE0KThwTERDPzNrVkY7RE9oX3N1N21eSWcKbVg1IU9HI31EISQzNllGUU4rZjUrfDRFLTMy
VkgleGV6KFdkNlkmMD5ZSkxHKTRXIy0yCgpkZWx0YSA1MjYKemNtWFpZS1AmQEwwTFNyQDRveiVf
TGB8QVZCb2YtRXApOFUmNyNSRm5Pb0Z5KW53RnxSQn4yQ1dOV3dzZXZhcXJ9CnpGX2ZmfFZgNFA7
bGFNZ2tnYHJ9b19rRDU2LVJKSjZfeG9QakhAM1IyJVJsWGlzais9JHh8fFgte3VMKXc4VyY7RAp6
b3tTV2REcEYwJFhsUFZMcENARVkzS2hIUGxXfWlAaVhYSmRNRDFKNldgNTx8K29NV2BvMU9YRkZP
aVp6JmNleHEKelNvRlIpT0l1fkpZK1g2Jl9AUExAQTNMaTxJazk/SWsodXQyJUE2al90ZXNXYT9T
a35JZU5MKWVBfGx1QzJoXyYhCnpweGl1YlJyIXV+UyoqQlVpI0BKM2QpS2xveDR4VUlgb1ZQYGEm
QF5sSHlAbEdJWHwpaSpAMHw5Xzg5ZGhXUzNFSQp6TC1yWjxNcjVaXlokPFZabj0jTERVS28hQUtx
NFJea1FoaTFCbmxHN3NOKjFrajUtbiQlQlcpQCFIaGJaSGZSeCEKa0FIK2lmQWB5fDBOSzlqYFI8
bndaYD1oYm43d2ByQmZrNVgtQEJkcjxBQTQkfVFVQ3d8CgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvRWZhdGUgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9FZmF0ZQppbmRleCA1
Y2VlNTVkZjMyZjM3N2RmMmRiZGUwZDk3NjRkZjVkYjM4ODQzNGExLi42MDE1MDE3NWMwZmRkMzRh
M2RmZjY0MDRhZDVhNGRmNjliNWYwYjgzIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDc1
CnVjbWFGRWUySUMyeEZgYj41Q2dLQWZ0WThhTEJ6eVA2UCZXJkh2bmIxeE5OaXk0ZWZMZDRZPmVg
V0Q2KCYKCmRlbHRhIDEwNAp6Y21jYl97RHlnZ3hGajxKMHxOK3lmSCk5PypnT3FEVnhtcTJCZzRj
TjZFK3xsMnF1V2pWcGFNQkJGIS1JJHApfTsKUjBTS1NWTSUmUVBQUz88bzNqbCZXNDV0NzkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFj
aWZpYy9FbmRlcmJ1cnkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWlu
Zm8vUGFjaWZpYy9FbmRlcmJ1cnkKaW5kZXggYTNmMzBlNWM3YjkxNjZkNDA4YTA4NTFiZmFjNDM3
MjkzYzcyYjBjZi4uZjBiODI1MjM2MmIwOTE2NDA1YWQ0NzliOWYzYWMxNDhhMjUyNzgxNCAxMDA2
NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1Ngp4Y21abz5kY2A8Rm9SdDl0Q2QmOXM1RWxoQXAj
JSQlMjRSN1RPQjUjQj14fWtfWGQ0PmE9XjdleTBSWlItMmsteUAKCmRlbHRhIDgzCnpjbWFGRyp2
dkZSb1J4KXZmcWBZQmoxTEVwMjc/TFd2UzJZTm1sYTVaX3lSd20wdSFld0ZmdlRFKEdpMDM4TXRo
OwpMNFVPJHw0VU0/fmlJV0tlCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvRmFrYW9mbyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL0Zha2FvZm8KaW5kZXggNmU0YjhhZmRiZGRl
YjFmZjJiYTUyMTY4YWYwMWE5YzhhNzg5NjIwOC4uZTQwMzA3ZjZhYWIyYTE2OWJiOTU3OTc5ZjU1
ODBhZmZiMzc5MTMxZSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3Nwp6Y21jYzFjIUZf
KUk0YzdQT3E4Km1BZyY4JExKNExkNFo9TUNmdVBQanY7IXBXX2psJDc1TTIpeG80N2BpaV8xcGEK
TChBWkFiKDNsR1ZjV2VeYQoKZGVsdGEgOTEKemNtWEBYYyRhYTRfezE4SGlTa3gjM302N30+VmNS
bksrRnVwSlU+N0BBb3ZkaWI+XldSQWh6RyVuSHhaS0p5NDhjClc7I0BAbTVRbCsqJVNQTUsqaVA1
Ym08c15vYDQjajQKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vUGFjaWZpYy9GaWppIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL1BhY2lmaWMvRmlqaQppbmRleCA5MTJkYjE4OTQzMWFkYmMxMzBiNjM5N2Uz
MTdkZDQwNzMzNjAxZmFlLi42YmY2NjdkNDk1ZjVkMDA0ZDU5M2ZiM2YwMGRmYWY3MGQ4YmM2OGFj
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDE0MAp6Y21jYj52NWpNYnhGYGI+Wn4oSElm
dFk4YUtfYXV8cncwP0tnZmhSRGVLN0hqdURKMSVneGMtNDMzVzBEOUBJfmwKelBwSlIxPXQyR2V8
TmtjJkdSRU9EV2IjU0lxYWFmelBoP3NQR0c/K1BiMVhCXm9YSEVCSDktMCU+I0BrTjhSOzd1Ckg4
RksqdTZheShkCgpkZWx0YSAyMDAKemNtZG5TYWUtcmt4Rmo8SjB8Tit5ZkZscnQqZ09xRFZ4bXFX
diRKbCgjMGpDeVVtX0FGelI7RGh4JVolVXlLTz85CnoleisyPik4IU5EfDE1ZT98TnNBZ2hSRnR1
KXwxbTJtRHp5MGZNOX5TRUxLQipLJV5OYVoofT9QR0k/P3goXmA8eAp6bGw3UW1uU298Yz9xaytx
Z2QzJi1RTyN3ZVpEP2V0WWlJPGRqcVAtTjRHcn1TXiRkV3Rve15yUnpNK1haN1hZMnIKQkZVdFNg
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L1BhY2lmaWMvRnVuYWZ1dGkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vUGFjaWZpYy9GdW5hZnV0aQppbmRleCAzMjg5MDk0YTI3NDA1MDBiYzM3NGQyMDkwNGE3
MGQ3YjMwN2MyMjY0Li5lYTcyODYzN2FjMWZhNDNmMmQ3MzQ2OTE1MWM2ODg0NjhiMzRjM2UzIDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDYyCnpjbWRuYXhRdWF2STRjN1BPcTlgXkFUOUBI
TEoxfXk0WjxBJWZ1UFFlPU1UZH5VMEUoSjgqTWApSjYlSH5FJngqMwpCMztfVEQKCmxpdGVyYWwg
MTgzCnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdATU8zJGZeSlR8MzQhbTFIJWR5a2twQzszQGtwckFx
Pzd2NUhtc3VvNWw+KAprMX5RVDMyZ20+KjAyPXRlJld6XnxoeiZCRzBrYHA3SGI5SCliUGJLVDBQ
IzUqZWdGVWYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vUGFjaWZpYy9HYWxhcGFnb3MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vUGFjaWZpYy9HYWxhcGFnb3MKaW5kZXggNzZiMmIzYTEyNjk2N2JkNDEw
ZTU3Y2UzNmNjY2ViZjdkYjE2N2Y2Ny4uMzFmMDkyMWVhMDRjZDIwMTY3NWI2MTMwODJmYjRiMGIw
YjkxOTQxYyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3MwpzY21lQlNkZEUwSFQkQkxg
dW1hZ0VLK0g0SUt4Q3E7Q1FqS144YkRiTkUqbzZ+R2RuWGIwNWR1V3dFekdCCgpkZWx0YSAxMjIK
emNtYUZJKnV5a0lUI3RvO2ZkUGE7ZkRNUjJZQFAtbnYyQlNAZ1BnPlgwQnYhdTJpaz5TMF95KyZ8
SWFZZEw2WlkwCmgyTD08d1d3QzFoMGhPT1BSZjc/dks+KjVVO0loIypGdGFuYDBzdTMpNkxrT3AK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
UGFjaWZpYy9HYW1iaWVyIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL1BhY2lmaWMvR2FtYmllcgppbmRleCA2MjUwMTZkNTEyYjA5ZDI5NmRjMzQwZGQ1NDJhM2Qy
ZDA3YzVjOWVhLi5lMWZjM2RhYTU1ZWIyYmM4YzVkNmE3OGJkNzdhMDFkMTkzYTgyMWE3IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTY0CnpjbVdIRSUxa3Eyenpkand2TE1WY0NCVEVG
e3tSMn5qRXcqUEhgWHZQMExjT2Q3OVphYjIzLVM3aDdifT0wdmhyawpTV0UjamArJE02XzBMYF90
PE5eVDYtWFJWRQoKbGl0ZXJhbCAxODYKemNtV0hFJTFrcTJ6eU00QDVmQkNlVypgUSFJVTBiKGxt
SEt3YHYzcGBHY1lwI3xLQ2B7enlLcio3KzhGS0xsfEBvCmlFUClDYjcoeiVlQCZ7TjQkZHYjOEt9
TGhQMWRRamgwYXwyZCRwcndYRihReHYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9HdWFkYWxjYW5hbCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL0d1YWRhbGNhbmFsCmluZGV4
IDBjMjQwOTViZjBmNjgzZDFlMWM1MWZkMzBlMjk0ZGU0MGIzYjNlNWEuLjdlOWQxMGExMDBmOWNi
ZTc5NmQ5OTk0NWRkNjBlMDQzMGRjZWQ1MjMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAxNjYKemNtV0hFJTFrcTJ6emRqd3ZMTVZjI294SDZ7e1IyfmpFb0VuUUA/PXAlLVg9ZjteUH5f
cGx4VyM1Skd9VUt0dWs2ClRPYXF5TCtlOXVLcHQqTHNoSzVgS3RFVV9QCgpsaXRlcmFsIDE4OAp6
Y21XSEUlMWtxMnp5TTRANWZCQ2VXKmBRIUlVMGIoNm8yRU1gdjNwYEdjWW5URmlpYWQ2ayhYUGZx
fSl4SC10Z2sKayY9QUNCMnFENDlBN0M4fTNfdWhBZ056MW8yXmkwMTFHTENhKlUqcCkwOTJlRWZk
QnZpCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL1BhY2lmaWMvR3VhbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9QYWNpZmljL0d1YW0KaW5kZXggNDI4NmU2YmFjODcwYzFmZjE1YzczYjg5NThjMTUyMTBh
Mzg3OWM1OC4uNjY0OTBkMjVkZmY5YmNjOGY3MTBiMDE0MWYxYTAyZTY0YWViMzJmMyAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ5NAp6Y21XSEUlMWtxMnp6YWx4dmFDUVgrNWpYQG5A
QGRrTDlnP304fW9lKEA2Q1JFXyZ1OX07aCgqRiZ3b1phaFgxaDwKejl+aD9WRmZoODY3QkgzYkYp
KnV6N3FBeWhYSjl7YkBkRlJYTDxYTGtieypkUlF5VGJFN1orR0wkMGFaX0YqMmg7CnptakQwRk9u
fXhmXmVrWHRWUEw0NnpgKCk0Rmx6JU40X0hMTiQyV3cqSnZmOXgrcld+Ky02ZSM8SVJuVEVBP3lX
Rgp6cG93ZmlFY3piXkw+P1lKMUVUQjliYlVaSCRWKHNePFNoXmxAKjBRK2NASVFgeWE9TWYtVUts
flVJaFY9Y1I+Sz8KeldlQDspOCReUz00Z3coV2dKQDY/Zk41WWJmTWAlcWZONVpHZk1gJlZmTWAm
I2ZNYGgyRmYqfkJLfmBBVXZ+S3xeClBCTyEjaUs7ZmlvWHV0JmtqP0lYOAoKbGl0ZXJhbCAyMjUK
emNtV0hFJTFrcTJ6eVFvWjVmQkNlQ0xqaX1jXmlPKW0yK0dJQlQlRyQzeXtPbXZ3KHBHT21nYDZo
QV9BWGhjR3kyCnowMHteUCFFUThBMTR0N1h6fVVQJHBhVERhSzsrQGtHYSRPb094RmhfNDY+NGVr
JXteTGU9YCNocDlyZk43YFErVgpKKEtSJlMwc3VyOEJgTj5fCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvSG9ub2x1bHUgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9Ib25vbHVs
dQppbmRleCBiZDg1NTc3MjA1NGY4ZDQxZTAxNThlNzFjMmJmMmMwNGU1MGU0N2NjLi5jN2NkMDYw
MTU5YmQyMmZjNWU2ZjEwYWM1YTIwODlhZmIyYzE5YzZhIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMzI5CnpjbVdIRSUxa3EyenlOR081ZkJDZWJ8NDBeTUgreV9aZFBaSC1ITD9+ciNv
Iz1UdkdtMGE0RkgjOyVhWlAyT3w/Qgp6R1ljY0B8Tmw4bTM9QlhyZmBSNCN8RWRmfDRsdjBCQ0kk
WmdGSFRAIUAkbjV8QENYS0M3YSRHPzsoIXBLITMrJEgKdVAlP3hCQztiUDRrX1FGKktzM2x7VT5m
Sz01RGp1N2h6MjxtT2FxKz9xTihnJEV9Jmx3NFkmYTdYPVVMNgoKbGl0ZXJhbCAyNzYKemNtV0hF
JTFrcTJ6eUteajVmQkNlSFhzSkVjXlpKa1pkUFpILUhMP35yI28jPVR1U3RgeFl9Rm4hTj4lSiU+
ViFBCnpGZmxMeSRwezlQfE5wQnA3Ji1wYEZIVEAhQCRuNXxAQ1hLQ21rXitTMm5abztEPzNtbip3
IUNWSl56OEE8VXpxYwpoNURqdCNtPEdCOE0xeCFkcUNxWUsoSThoYmtuU3VscGdSbz54QnheclBK
I2RjCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVp
bmZvL1BhY2lmaWMvSm9obnN0b24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEv
em9uZWluZm8vUGFjaWZpYy9Kb2huc3RvbgppbmRleCBiZDg1NTc3MjA1NGY4ZDQxZTAxNThlNzFj
MmJmMmMwNGU1MGU0N2NjLi5jN2NkMDYwMTU5YmQyMmZjNWU2ZjEwYWM1YTIwODlhZmIyYzE5YzZh
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzI5CnpjbVdIRSUxa3EyenlOR081ZkJD
ZWJ8NDBeTUgreV9aZFBaSC1ITD9+ciNvIz1UdkdtMGE0RkgjOyVhWlAyT3w/Qgp6R1ljY0B8Tmw4
bTM9QlhyZmBSNCN8RWRmfDRsdjBCQ0kkWmdGSFRAIUAkbjV8QENYS0M3YSRHPzsoIXBLITMrJEgK
dVAlP3hCQztiUDRrX1FGKktzM2x7VT5mSz01RGp1N2h6MjxtT2FxKz9xTihnJEV9Jmx3NFkmYTdY
PVVMNgoKbGl0ZXJhbCAyNzYKemNtV0hFJTFrcTJ6eUteajVmQkNlSFhzSkVjXlpKa1pkUFpILUhM
P35yI28jPVR1U3RgeFl9Rm4hTj4lSiU+ViFBCnpGZmxMeSRwezlQfE5wQnA3Ji1wYEZIVEAhQCRu
NXxAQ1hLQ21rXitTMm5abztEPzNtbip3IUNWSl56OEE8VXpxYwpoNURqdCNtPEdCOE0xeCFkcUNx
WUsoSThoYmtuU3VscGdSbz54QnheclBKI2RjCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvS2lyaXRpbWF0aSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL0tpcml0aW1hdGkKaW5k
ZXggNzYyMjc1ZDNjMWQyOGE0NzJkZGEwODhiZTViNjAyMzM2ZTM4ZTg0ZC4uN2NhZTBjYjc1NjJl
NWMwZjlmYTQ2OTEzYjcxYTVjMzYyOGMwMWJiZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0
YSA1Nwp5Y21abz9kZEUwSG9SdDl0Q2QmOXRFRHskNXYhTWhGa09wQylpT1VvdytVUmp7Kj1RU0Aq
eSRSWVp+KmBTcVg9flgKCmRlbHRhIDc1CnpjbWFGSSp2PlJUZH0xJWhNMHN4eDF9RmR2aD1NcSpL
K0ZRZkxPKHp9QWVjQiFmc3RYTmpoK3lNJWZQXjhxaXR3bgpKcil5fSExcHhLYzNxdD9eCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lm
aWMvS29zcmFlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1Bh
Y2lmaWMvS29zcmFlCmluZGV4IGY4MjIyZTY2YjU1NGRjMmU1ZTA1YmUxMjk2NjJkYTNmODkwMjI4
MGQuLmE1ODRhYWU1ZWI4MTg3Zjg4NjAwZTk3YjZkNmM3NjQyNDVhMzdlNjUgMTAwNjQ0CkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNTEKemNtV0hFJTFrcTJ6emFCbXZUUSZzKGZ9bDgydXs3USEx
Q3ZaZ0t0ZVFvUDVRVmE3bUV3IX5adHYwSkg5Tmh4LTVqCnp8MSZaJUdCWXU8RmYjdUNAOXFPcyZv
RkJQMH1CSH4tMj9ePjI4TnltM19KYEJELUpMU0sqVzd+TG0wRlQ0SD5pegp6RVA9RUU1RjBVczVP
eHEzJnslZEw3NklEI1UqekdJRWctdGlPdlZJNmdCJUU9TDU+OGBBY3VsemtZaG5LKnVmd00Kcyg5
dDBHZmdCRV4+dyFYeU93M0Z5JXVLOUlPZmM4YUkwS1IrKWVsQFlLd3NKRThYOXJ8MEZxVF9mQipt
aAoKbGl0ZXJhbCAyNTEKemNtV0hFJTFrcTJ6eUteajVmQkNlN0BNYTckb2J6VTlibmQtP29qeyN8
OT9nJU1uKHBQOER+ST5XXkRrZVRYQkdhCnoxSCQoNDRQbnFXR3o0T1Y9Xj0jZVZnKHVudlhBRW4k
V1J+dlRKeWlvT3ZWSTZnWHsqMGYkUnMtXip8djhRWFJvJQpNMTlYPDF1QXcwcDBKMT9XU081UzMK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
UGFjaWZpYy9Ld2FqYWxlaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vUGFjaWZpYy9Ld2FqYWxlaW4KaW5kZXggMWEyNzEyMmVlMDk0MTAwOTVkNDMzYWRhYmU2
YmYyZWI3NzI3MTBkMC4uMWE3OTc1ZmFkN2Y3ZTk2ZjcxMDFlYjNjNjRjOWI0MjBlZWViYjYyMSAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMxNgp6Y21XSEUlMWtxMnp6ZiljdlRRJnMo
RXViNHpCUnBZQCljTFlkQUcoN3xKJFNrYmp0Vn4+aV9AJCYmYjVnJGltOVgKenolYl9sUCErP2g0
R2ImezNfU31OSTJhaH1DTlN7KXt+endhQWklKHw7c0FxKWs4Y1Fyd3hKO3E4ISVgYVNUZzd1Cno4
VWZpeDM/VT5xMSEme3tJeGA2YzVEanQ/aHoyPGVNMSEzTVZnUXs3YXRwfGJBaTVxWEw8TUpaKiNJ
NEQyWHIoUwpFMERtKTM5Ukw2VAoKbGl0ZXJhbCAyNTkKemNtV0hFJTFrcTJ6eUteajVmQkNlNyth
dEwkb2J6VTlpVVVQPVJwMWN8Tmp9OG4zKStFPH4jcmpHdEFuKyExRGlwCnp4Qn4rUjFIKn5+M19M
ISpBcT83dmg3N3VmTW5EPjJMa01CfVNiQGZZPj1nSWBHOGhQZVJ7Z0l0bFRaTkJBcDFkTApYQVVB
O01kWX0qa0lTJTJuMFhvWUw9c1lkfTRONVZ2CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvTWFqdXJvIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvTWFqdXJvCmluZGV4IGIzYThj
MTg0NDMyZWZiZTA0MGNkNDRhMzg2YTk5YzJjYjU4ZGRmNTIuLjllZjgzNzRkZTRmYTczY2QyYTMz
NTlkM2MzODg2YjExNjQzYTcxNDYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMTAK
emNtV0hFJTFrcTJ6emFCbHZhQ1FYKGZ9bDgydXs3USExQ3ZaZ0t0ZVFvUDVRVmFOZ0Z2O0Q0S1JL
PmgjIXt+NEpXCnpuVkE/X1NRcj08ZlJyLUsrUTB5MCpHKnNtbiRXWD1mcm8pJSNRX0VaQUt3ckxa
OV91X1ozOWFuWjItaFozP1VAQQp6MCUrMHlJeH4/NTVEanQtaHo3WGBNMXghZnFDcVlMKE99bnM3
KGY/LVR2UUthbEo4MGA4PXpiNWJQYktUMERldFoKQWF7dkdVCgpsaXRlcmFsIDIyMQp6Y21XSEUl
MWtxMnp5UW9aNWZCQ2U3QE1hNyRvYnpVOVo+KU98OT9nJUNJKkhEQVE2VUg4eUh2XjcqLXIkO1BD
TWMKelZiQ0AtMVkoJHhBJXUrdz5JR1pEXjg7aVU1Q0JkOFV1UCFMMEhRKEdmeUM7OE9hPnpEPGd4
K1VaPk1XJCMwM0MmCkM0PEAxagoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL01hcnF1ZXNhcyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL01hcnF1ZXNhcwppbmRleCAxMGM1Yzli
YzFkZDU4MDdjN2JkMTNlNTU2YTQ2NDRjNWYwN2VmMjYxLi43NGQ2NzkyYmY2ZmNiNzkxYmZjMGFm
MWY4Mjc3MzdmNjEyYWJlZjY3IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTczCnpj
bVdIRSUxa3Eyenpkand2TE1WZ0NCVm17e3tSMn5qRXcqUCpJRjx6e1FxQi0hTkI2PDheV00jVX08
Yz81Skd9awpZS3g2KWMlbWRrcyZyQntHdS1TSCZSPmxUZzBRI0NEeCZRekcKCmxpdGVyYWwgMTk1
CnpjbVdIRSUxa3EyenlNNEA1ZkJDZVcqYFEheGYrMVBsbUgpKGB2M3BgR2NZcCN8NmdtdCEwYFdu
UlIjbCNrOGNRcgpvdTdSYm8wWjw3OExrSjBte3M4TCRuZStjWSRaIXlzcGFvbnVWOVY/KnQmOSEw
MFA4O19KT0JVeQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0
YS96b25laW5mby9QYWNpZmljL01pZHdheSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9QYWNpZmljL01pZHdheQppbmRleCAzZTM4ZTk3Yzk3ZGRmNWUwNTRmYmE4
MjJjZmNlMWM1Y2NkNDIyZTNmLi5jYjU2NzA5YTc3ZGVkYjQ3MTE1MGY0OTA3NzcxYmYzOGYxODc5
YmE0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDYyCnpjbVhAWXhTbng+STRjN1BPcTRP
MUFnJX56TEoxfXklPyFqR3xBOFJTXzVfJW9YclJFKDYmeEk1WHZoVHNoSnB7SAoKZGVsdGEgODgK
emNtWjNfYyFZNitJNGQmKTB8V0MhODUxQGo0Rm5VIV59ciQhOXNgV2NAZEdPRzl8LWJuUGpHPGZp
TEFkbDckKXx9Ck9ASXZJY2ZgZGEwNFk+ZlJAZTtCQwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL05hdXJ1IGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvTmF1cnUKaW5kZXggNjA5
MjExOWY2NmNhMDBlNzVlOGVhZDk4YzI4NjQ3MGQ3YzE5MmZkNC4uYWNlYzA0MjlmMTQ3ZjQwMjc5
MTA3YTQ4Y2I4NWMzYjBlOWY1NmM5NCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI1
Mgp6Y21XSEUlMWtxMnp6Yk1gdk1mTD53RGBGOyViNXU7UGg0X1Z7filOaTt6ai1jfE5qfTg3QDMo
RjgwT1N+ajk5bj4KenFfQSFSMH5aNnNpVVNPTUtFNUZnK0o9VjQxYE9IO21PeiNmTGtKMWgwWnNv
OHZKeW10dE9kfl50M2Z0X3RPd0VjClNLcnNAWHotMHE7aEBHeVg1Zj1kT21wUUVmCgpsaXRlcmFs
IDI4Mgp6Y21XSEUlMWtxMnp5S15qNWZCQ2VIWHNKRWcmS2d3O14qMmRyPz4zKXhabzV9QWxTYHZx
Vz1IP3t8dDt3akxnZ28KejQwQ0ZMM0skbWQwSTlCPHpgKGA4dTtLcyVwTzA/e2dTTWZldT5wZyZm
aENaSXVxfWlIeU1LVTsxX0dkVXwzUGo1CmcoSTl0I1hwbWIjYXY9QUI9ejU/U3hvK2FKMGxMc20q
VSpSeTBObjY2ITJrZE4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vUGFjaWZpYy9OaXVlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvTml1ZQppbmRleCBkZjYxMTBkZDEwOGU1MjlkMjQyNTc1
Mjc0NGQ2ZDJhNDUxMmE4NGY3Li42ODRiMDEwZThiNmJhZDU2YjA4NDA3MjQwMzExMGI5NGU4Y2Zl
MmRkIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU1CndjbWVCVGBwN3N6b1J0OXRDZHZk
JTVFbGhBcCMlJCUyNFJ0akQtPFQkNzt0amc9byVXQDg1KGl7ME9VQ2ItVChqcQoKZGVsdGEgNzQK
emNtZXkhKnVed0tkfTJTeE0wc0JoMX1GZHZoPU1xKksrRlFmQjBvU3BBZWNCcWZzdFhOamUjSjkl
ZlBeOHFpYmtyCklYSzJVOzBQWTxOQkxEeVoKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9Ob3Jmb2xrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvTm9yZm9sawppbmRleCBkMGI5
NjA3ZWQ3M2E5YTRiZDZjYTZiNDlhMmI2ODU2MDlkNTYxZjk2Li4xZjZkNjEwZWYxNjQ3OWRhMzQx
YmUwNTFlOTMzMDE2ZGNlZmU4MTIxIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU2Cnhj
bVhAaXcyV3pqSTRjN1BPcTVCUkFUQTFLTEoyaz80VSZfWmMpKHp5aXlhcjJqa2Nrb292eHVGN1hh
fUcydnpfOQoKZGVsdGEgODcKemNtWjMrYmVMJl5JNGRneTB8VjxzbktWdXk0Rk1BeUMxazsoUChD
fTUySnhrU0tte2hRR2hrJHhjK1hBKiRfRytoCk5IcmpAVWNEamEhVG1hbGUzV0AqIwoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmlj
L05vdW1lYSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNp
ZmljL05vdW1lYQppbmRleCBkOWM2OGY4OGFmYzBkOTEyOTM2NmNlNWI5YTVhYzAyOTE2Y2Y0MDYx
Li45MzFhMWEzMDZmNzBlYjBjNzU3OGE2NTQyNTA4NjI3MGM2ZWEyYjg4IDEwMDY0NApHSVQgYmlu
YXJ5IHBhdGNoCmRlbHRhIDc1CnhjbVhAWHcxSGBZeEZgYjx1ITBDNi1+ZUl9bmBmZWQhbyl5eG9V
I1dVZlU7YSVIcmpAVWNEamEhVG1WeHIzNW95IQoKZGVsdGEgMTAyCnpjbWRuTWJiQEp1eEZqbkIw
fE4reTA0RVRHKmdPcURWeG89JEJnNGVePGBCc1Y7PDh2KHtzNXszZnI7eEt6XmVKZApQSlQ0bjtM
cWpgVkxxamVBUzQje2AKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vUGFjaWZpYy9QYWdvX1BhZ28gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9QYWdvX1BhZ28KaW5kZXggM2UzOGU5N2M5N2Rk
ZjVlMDU0ZmJhODIyY2ZjZTFjNWNjZDQyMmUzZi4uY2I1NjcwOWE3N2RlZGI0NzExNTBmNDkwNzc3
MWJmMzhmMTg3OWJhNCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2Mgp6Y21YQFl4U254
Pkk0YzdQT3E0TzFBZyV+ekxKMX15JT8hakd8QThSU181XyVvWHJSRSg2JnhJNVh2aFRzaEpwe0gK
CmRlbHRhIDg4CnpjbVozX2MhWTYrSTRkJikwfFdDITg1MUBqNEZuVSFefXIkITlzYFdjQGRHT0c5
fC1iblBqRzxmaUxBZGw3JCl8fQpPQEl2SWNmYGRhMDRZPmZSQGU7QkMKCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9QYWxhdSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL1BhbGF1
CmluZGV4IGUxYmJlYTU2MTUxMGJmNmU4YTc0NjVhNDk2NDc3MjRiYzI0M2ViMDMuLjE0NmIzNTE1
MmFhZWZmYjU5NDBkMzA5MTBiYTM3NzAzZjQwOTYyODUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
bGl0ZXJhbCAxODAKemNtV0hFJTFrcTJ6emRqd3ZMTVhTMDNfPUZ8TnFhKGAyV0FvNmQ7RzhaVU9e
fms4Y1Fyd3QqIT4yd3tfJGZtJVNBCnAxOEImOWslI0FWS3k7bSUqJkMycV4qfVp3NkJGRU01cylD
VjF6YXtqWXdVQ194ZDFQNEJlRFBoCgpsaXRlcmFsIDE4Mgp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3
QE1PMyRmXkpUfDM0IW0xNEVxJU5VQ2xFMUI7SnUyIXBuUEM1WCFxTGZBQkIKbHBmWnEmOTZ2eEJm
QjxPVnwyaXxYSHl9MzFiT3prVWJKK2tidmVVS1gwc3ghNThKR1k3CgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvUGl0Y2Fpcm4g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9QaXRj
YWlybgppbmRleCA1NDc4M2NmNjJlYWM1MWU5YTU3NWVlZTc1Njg4YzRkZTRhMTU1NzhiLi5lZjkx
YjA2MWJiMTQ1YjI2NThkNDlmZDUwNjVlZDc0YjFhNmNmNmY3IDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDc2CnpjbWNjNWMjM2c/STRjN1BPcTgqb20/KjliVzx2PlBBUHZITnxBQzsrVDw7
ND0rfDxSMTE0UCNZI1VgIyg9SFJsPwpLSEwkUj0tfnM/bjUpb3dwCgpkZWx0YSA4OQp6Y21YQGJj
JU5+Q197MkpuaVNqbVYzfTY3fT5WY1JuSytGdXBkX089dUFvdmRpYj5AMHNLeHxWTkNrX3hANC17
alYKVUlBNTYkIzk/Nkl2ZTdsTHUoUkwtMEZaUFBCTER5WgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL1BvaG5wZWkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9Qb2hucGVpCmlu
ZGV4IDk3NDNiYzNjOWI4ZThkMmRjM2E2NmJkZTc2MWMzZWYxOTE3YmU1MGEuLmMyOThkZGQ0ZGVi
YjY0OTIyMGU1ZGZkZTYwOTQ4NTkxYmM2YTM1MDEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAzMDMKemNtV0hFJTFrcTJ6emYpY3ZhQ1FYJjtUVDYydXs3USExQ3ZaZ0t0ZVFvUDVRVmE3
bUV3TDtlNSV7fjRKV25WQT9GCnp8Tm5RbzAjd0I/WVhidWQxNEc+ZTFgWTs+byZeaiU1RF8yVzVD
Jn5TTGs0WEZPQ1c4KTVKSzI7cG5lODZBUWt9SAp6QG43V09QOHw/a1hRcj9RTTF2ZHlxQ3BNPChJ
N3tHWHBxQXxHe3x1dipWRl5xajctYy1FWCsoeUZjKGU8MG0lXk8KT1BBKGd1dEw9MFI0WT5lWkF6
M2oxCgpsaXRlcmFsIDE4Mwp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRmXkpUfDM0IW0xSCtV
TWtrcVVWM0BrcHJBcT83dmg5RTlPMnd+SGgKbWZ5eks4YXtLXmswME4rYXxMZT5ZKV9+WGAoOzA5
WiZ0KEkmJFdHVkxrUDg2JGgjR25UCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvUG9uYXBlIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvUG9uYXBlCmluZGV4IDk3NDNiYzNjOWI4
ZThkMmRjM2E2NmJkZTc2MWMzZWYxOTE3YmU1MGEuLmMyOThkZGQ0ZGViYjY0OTIyMGU1ZGZkZTYw
OTQ4NTkxYmM2YTM1MDEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMDMKemNtV0hF
JTFrcTJ6emYpY3ZhQ1FYJjtUVDYydXs3USExQ3ZaZ0t0ZVFvUDVRVmE3bUV3TDtlNSV7fjRKV25W
QT9GCnp8Tm5RbzAjd0I/WVhidWQxNEc+ZTFgWTs+byZeaiU1RF8yVzVDJn5TTGs0WEZPQ1c4KTVK
SzI7cG5lODZBUWt9SAp6QG43V09QOHw/a1hRcj9RTTF2ZHlxQ3BNPChJN3tHWHBxQXxHe3x1dipW
Rl5xajctYy1FWCsoeUZjKGU8MG0lXk8KT1BBKGd1dEw9MFI0WT5lWkF6M2oxCgpsaXRlcmFsIDE4
Mwp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRmXkpUfDM0IW0xSCtVTWtrcVVWM0BrcHJBcT83
dmg5RTlPMnd+SGgKbWZ5eks4YXtLXmswME4rYXxMZT5ZKV9+WGAoOzA5WiZ0KEkmJFdHVkxrUDg2
JGgjR25UCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL1BhY2lmaWMvUG9ydF9Nb3Jlc2J5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvUG9ydF9Nb3Jlc2J5CmluZGV4IDNmYTFmN2ZhODBhMzAy
NmQyMDVjZDBjYjg4NzBhNzUwNjNlYmM4MGQuLjkyMGFkMjdlNjI5ZTM1MGMxYmFhYzg1MzdiYjYz
OWE1OWZkMTkwMzkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxODYKemNtV0hFJTFr
cTJ6emRqd3ZMTVhTMDNfPUZ8TnFhKCRpVUZ+MUlTX01TLWA7Sjt+VD1EWkRfeXtMZjlsYHBjV0Ez
Cnoxc2Rge1krRG91aCVTMSZXQ0Y7bmRMV3lUMzF8Xy09Knx4ZUVNTjtiS142cX5MVCV4KTBvckEh
WWlQZykwQU44UQpBdkgkPTgKCmxpdGVyYWwgMjA2CnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdATTtK
JGZeSlR8MzQhbTE0SEtya1d8a0MyRyMmeS13KzBFTGp3Pz5BcTJafAp6JXM/cCsxXzJmejJDO2Q2
Zk90UnZIMVU3ZndrUXF8VUcjUnoxZHYhZ2tqPW96MWhsI250UEUlIVAjQDRiUDlMQ2MKU0N7ezhz
YU09S0B4Nj9IPS1+cz9zdXE2TmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9SYXJvdG9uZ2EgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9SYXJvdG9uZ2EKaW5kZXggYWNlMWNl
NGI3MThlOTI4YzIzOGY3NDY5NTYxYzdlYzQxYzNjZDQxZi4uZGE2YjBmYWRlYTk1ZWJkOWQwNmE2
YWM5OTc4MDY5OTNhNGQ3MzMwZCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1Nwp6Y21j
YmBhKiQ8JEk0YzdQT3E0az5MMGxCZmdjMzQ5bmd4aE9DTXomTG45UnVKIU8zTiNZaU05K1h1dCZr
NH5xemAKCmRlbHRhIDg0CnpjbVhAZWEqSmh4STRjVlMwfFUhTW5HK205OFZufGclWXd6QVR2O0Z1
OyowISUzUVFKWWU4OSpzYDIoWWVBWEoyYgpOJVNQQUd6fFBRczNqb0BiM2F0UEQKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9T
YWlwYW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZp
Yy9TYWlwYW4KaW5kZXggNDI4NmU2YmFjODcwYzFmZjE1YzczYjg5NThjMTUyMTBhMzg3OWM1OC4u
NjY0OTBkMjVkZmY5YmNjOGY3MTBiMDE0MWYxYTAyZTY0YWViMzJmMyAxMDA2NDQKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDQ5NAp6Y21XSEUlMWtxMnp6YWx4dmFDUVgrNWpYQG5AQGRrTDlnP304
fW9lKEA2Q1JFXyZ1OX07aCgqRiZ3b1phaFgxaDwKejl+aD9WRmZoODY3QkgzYkYpKnV6N3FBeWhY
Sjl7YkBkRlJYTDxYTGtieypkUlF5VGJFN1orR0wkMGFaX0YqMmg7CnptakQwRk9ufXhmXmVrWHRW
UEw0NnpgKCk0Rmx6JU40X0hMTiQyV3cqSnZmOXgrcld+Ky02ZSM8SVJuVEVBP3lXRgp6cG93ZmlF
Y3piXkw+P1lKMUVUQjliYlVaSCRWKHNePFNoXmxAKjBRK2NASVFgeWE9TWYtVUtsflVJaFY9Y1I+
Sz8KeldlQDspOCReUz00Z3coV2dKQDY/Zk41WWJmTWAlcWZONVpHZk1gJlZmTWAmI2ZNYGgyRmYq
fkJLfmBBVXZ+S3xeClBCTyEjaUs7ZmlvWHV0JmtqP0lYOAoKbGl0ZXJhbCAyMjUKemNtV0hFJTFr
cTJ6eVFvWjVmQkNlQ0xqaX1jXmlPKW0yK0dJQlQlRyQzeXtPbXZ3KHBHT21nYDZoQV9BWGhjR3ky
CnowMHteUCFFUThBMTR0N1h6fVVQJHBhVERhSzsrQGtHYSRPb094RmhfNDY+NGVrJXteTGU9YCNo
cDlyZk43YFErVgpKKEtSJlMwc3VyOEJgTj5fCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvU2Ftb2EgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9TYW1vYQppbmRleCAzZTM4ZTk3
Yzk3ZGRmNWUwNTRmYmE4MjJjZmNlMWM1Y2NkNDIyZTNmLi5jYjU2NzA5YTc3ZGVkYjQ3MTE1MGY0
OTA3NzcxYmYzOGYxODc5YmE0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDYyCnpjbVhA
WXhTbng+STRjN1BPcTRPMUFnJX56TEoxfXklPyFqR3xBOFJTXzVfJW9YclJFKDYmeEk1WHZoVHNo
SnB7SAoKZGVsdGEgODgKemNtWjNfYyFZNitJNGQmKTB8V0MhODUxQGo0Rm5VIV59ciQhOXNgV2NA
ZEdPRzl8LWJuUGpHPGZpTEFkbDckKXx9Ck9ASXZJY2ZgZGEwNFk+ZlJAZTtCQwoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmljL1Rh
aGl0aSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9QYWNpZmlj
L1RhaGl0aQppbmRleCA3ODY3ZDhiZDZjMjc3NzRhZDVhM2I2ZjkxZmRmY2VjMTg4NDViN2UxLi40
NDJiOGViNWE0Mzg5ODUwOTJkODY1N2ViY2FiZTg4NTkwMzc0ODJhIDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMTY1CnpjbVdIRSUxa3Eyenpkand2TE1WY0JfTVExe3J+Xn04NSNmb0ZG
d0oqMDM7SV9TYlRnIzc8M0h7Nyh6JWUzMjRaRgpUa1pCLSRhaHUzeDEyb3NwKDB+ZzdhUXFfUgoK
bGl0ZXJhbCAxODcKemNtV0hFJTFrcTJ6eU00QDVmQkNlVypgUSFJVTBiKGx6YEEzXzVjNj5YSkJP
ZnxHKVNJMHxTc3VVfHtqXzRQbnFWCmpHeXAxS1U8ZV8+JFJBKUdBWEVQVDJOQDBHNS1eXzIyNTZD
O3AjY3tGVjwwNEEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vUGFjaWZpYy9UYXJhd2EgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVz
dGRhdGEvem9uZWluZm8vUGFjaWZpYy9UYXJhd2EKaW5kZXggMzM0MDQxMzg4Y2JmYWM5MmM3Mzg0
NTNiNWFiZjM2NGE5NmNmMWFmNS4uM2RiNmM3NTAzMzNmYTZkYzFlZmM4NGIxYWJjMjQ1MjhmYmMw
MGIwYiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2Mgp6Y21kbmF4UXVhdkk0YzdQT3E5
YF5BVDlASExKMX15NFo8QSVmdVBQej1uVFV8VTBFKEo4Kk1gKUo2JUh+RSZ4ekgKQjMpY1Z1Cgps
aXRlcmFsIDE4Mwp6Y21XSEUlMWtxMnp5TTRANWZCQ2U3QE1PMyRmXkpUfDM0IW0xSCZRe2trcEM7
M0BrcHJBcT83djVIbXN1bzVsPigKazF+UVQzMmdtPiowMj10ZSZQP2JHaHomQkcwa2BwN0hiOUgp
YlBiS1QwMFZkJHJ+bSl9CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rl
c3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvVG9uZ2F0YXB1IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvVG9uZ2F0YXB1CmluZGV4IGIzYTVhODliNjZk
MmI3NDk3MTY0NmJlMmZlYTgwNjZkNGRkOTFmYWIuLjU1NTNjNjAwOWFjZDI3MmNhZTAxMmEwOGI2
MThjMmZkNjQ5ZGNlYWUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTIKeWNtZUJWez16
Z3RvUk1Mb01FZUFCUTNmRGowfSgqTDRhNlh9KDhRWSY2Qz5RWXhOTml5anFQKnxqa3k1IWh6Uk5j
CgpkZWx0YSA3NQp6Y21leXUpWDYrU29STXYhTF5+Uzs3KSVoQzEra3ohMXxCRnw9bSRpYVZkQ2lz
TXV2JEk/ZzlgI215TmNldjdOND0KR0YmNi1od2g4dEMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9UcnVrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvVHJ1awppbmRleCAyODli
Nzk1YThhOGJjYjY2MzJjYTk3ZWZjMzYzMjY3ZDJkNDkxYzA5Li4wN2M4NGI3MTEwYWQ5NTg5ODEw
YjkxNjM5MGFlZGM3ZWY0OThmNDIzIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjY5
CnpjbVdIRSUxa3EyenpmKWJ2TWZOJSgqUHU5MnJob0chMUN2WmxkcmZFRSghOHxzUT5AfUtPKytt
R1hEUT5hfFduQAp6cD1TWHxiPT9GODRoWS1GSC10Z2soMTFiUHo+KjxedXg7IT5CVXBpJDJXYXFy
ayUjK0RLeTttJSs3PUtFdks+VCYKcVRtWWckdF5tOz5td0BjOTJlS0tObjFQVDk9QTFxc2tPViRR
YW9HVCFYUXlqdXp5JCF8cC1iaWYKCmxpdGVyYWwgMTgzCnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdA
TU8zJGZeSlR8MzQhbTE0RXc9TlVDUTYxQjtKdTIhcG52MGZAXkdMZkFCQgptcGZacSY5NnZ4QmZC
PE9WfDJpfFpFZyZ8P2JPemtVYkora2J2ZVB2Ki1+c15RJmwpVE0KCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9XYWtlIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvV2FrZQppbmRl
eCAyZGM2MzBjNjA2ZTMyOTE5ZGIzYWI1MzAyZjcyZDU1MjM5NTVjNTRiLi5jOWUzMTA2NzBmMDdl
OWU1Nzc3OTFiZmExOWZlZmRlNjEzNTFmY2RmIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDYyCnpjbWRuYXhRdWF2STRjN1BPcTlgXkFUOUBITEoxfXk0WjxBJWZ1UFB6O3Rhej9VMEUoSjgq
TWApSjYlSH5FJnghWQpCMyo3KCEKCmxpdGVyYWwgMTgzCnpjbVdIRSUxa3EyenlNNEA1ZkJDZTdA
TU8zJGZeSlR8MzQhbTFIJjg+a2twQzszQGtwckFxPzd2NUhtc3VvNWw+KAprMX5RVDMyZ20+KjAy
PXRlJlA/SkFoeiZCRzBrYHA3SGI5SCliUGJLVDAwN3Q7cTV1RUAKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9XYWxsaXMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUGFjaWZpYy9XYWxsaXMK
aW5kZXggYjRmMGY5YmZiNmE2Y2Y2Yjk4Yjg1OTkzZGJmMTYzMjczNmU5ZTE5Zi4uYjM1MzQ0YjMx
MmM2Y2E2OTBjMGY3OWE4NThjMzk5NWEwNWM3MWZmMyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApk
ZWx0YSA2Mgp6Y21kbmF4UXVhdkk0YzdQT3E5YF5BVDlASExKMX15NFo8QSVmdVBRZVYrRiVSVTBF
KEo4Kk1gKUo2JUh+RSZ4cWEKQjMja0FBCgpsaXRlcmFsIDE4Mwp6Y21XSEUlMWtxMnp5TTRANWZC
Q2U3QE1PMyRmXkpUfDM0IW0xSCttS2trcEM7M0BrcHJBcT83djVIbXN1bzVsPigKazF+UVQzMmdt
PiowMj10ZSZXdkxQaHomQkcwa2BwN0hiOUgpYlBiS1QwMmchYCkmS3dpCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvWWFwIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BhY2lmaWMvWWFwCmlu
ZGV4IDI4OWI3OTVhOGE4YmNiNjYzMmNhOTdlZmMzNjMyNjdkMmQ0OTFjMDkuLjA3Yzg0YjcxMTBh
ZDk1ODk4MTBiOTE2MzkwYWVkYzdlZjQ5OGY0MjMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAyNjkKemNtV0hFJTFrcTJ6emYpYnZNZk4lKCpQdTkycmhvRyExQ3ZabGRyZkVFKCE4fHNR
PkB9S08rK21HWERRPmF8V25ACnpwPVNYfGI9P0Y4NGhZLUZILXRnaygxMWJQej4qPF51eDshPkJV
cGkkMldhcXJrJSMrREt5O20lKzc9S0V2Sz5UJgpxVG1ZZyR0Xm07Pm13QGM5MmVLS05uMVBUOT1B
MXFza09WJFFhb0dUIVhReWp1enkkIXxwLWJpZgoKbGl0ZXJhbCAxODMKemNtV0hFJTFrcTJ6eU00
QDVmQkNlN0BNTzMkZl5KVHwzNCFtMTRFdz1OVUNRNjFCO0p1MiFwbnYwZkBeR0xmQUJCCm1wZlpx
Jjk2dnhCZkI8T1Z8Mml8WkVnJnw/Yk96a1ViSitrYnZlUHYqLX5zXlEmbClUTQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9Qb2xhbmQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUG9sYW5kCmluZGV4IDVj
YmJhNDEyZWVmNDA2YjRiYWY4OTEwMGYyYzRhOGUxZjVkMTI3OTguLmUzM2NmNjcxNzFkYTc4YWE5
ZTZlYjAyZTUwZjliOTYwM2RhNGMzZjQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTI1
CnpjbWJPemRRVzc2R1VMKlREeE1QeWIwJDZ2LSl6SVVmUlVNKmlGdEElcmBZNVZPZE4yJGtUWXA9
NSVZQTtyMz8lVgp3KygwWmZTJkY0fkBeWTNObGlPTD5aPzxFVFZIUmN0PlNKTUw7YjNFRFc/fV8w
YTJyIUh4cyohPTA4OTVISl4lbSEKCmRlbHRhIDE0MAp6Y21jYTdHRXNEYkdVSk1nRHhTO0BELSRO
PjxUN2poRXRxJkNmPF5KeHdHVyNPNyNBPXlHRUtnfkIrYlk/YDV9YFMKemtZcl4zRFklaz5mcUAl
e3JHNVlqNVNZeCYoaEFaKXh0WmxJJGJpWXd0WG0pXmFJK35lM28kUzxHY21LVXZUKDRtClJHYyZP
UThSJGt7bzl4NlQwe3tnZ0NUIyEhCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1BvcnR1Z2FsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL1BvcnR1Z2FsCmluZGV4IGE4NTY1MzA0NGUwMDk0MzYzZWEwZjMw
ZDAxN2EyMGNjZGNlMjIyN2QuLjM1NTgxN2I1MmIxYjA1NjgwYmJiNTdlNGRjOGRlMzU4ZWZmMjdh
MzkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMjEKYmNtZUJgP3Y+dTQkOyRCYDI7eXZj
V0glZUsjJjdAdFZtMWd3CgpkZWx0YSAyMQpZY21lQmA/dj51NCQ7JERBMFJsRH52Y18tIzA2TjQz
ZDtrQ2QKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vUk9DIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1JP
QwppbmRleCA3NDg4NzNiZWQ5YTE2N2QwMjI2YmFkMjI0NjU1NmM0NTQzMjg4MGQ2Li4yNGM0MzQ0
NGI2NzUxMzQzZDI5MTU4NDNkMDNlNTU3NTNkNGQ3MzU5IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDU4CnpjbWJRbl9MRnNqSTRjN1BZP1I/PG9OVU1fRSgrI0Iyfjhqa2tgfnlVJUlMdjNA
al5IfG12ZUI0dF8ycVd7KVB6QwoKZGVsdGEgODcKemNtZXkjSSpvMERJNGRneTB8Vjx1OEUhQHtB
T2l7fWh8N1k3cDxGRT40ZE0mQGZDXzk1WDdwZldXU0RwJVRvNVYoCk1xX35gZUx2JF47MEl7a0d3
ZzNQQwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25l
aW5mby9ST0sgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vUk9L
CmluZGV4IDMxMmVjNDBhMTEyZDVhYjU0ZWEyZDkyZDczNTczNWJlNGIyN2E0NGQuLjczMTgyY2Y2
YzkxOTE0MmM2NWMwMzUzZDYwZWFjODM0MDY5ZDkzNTYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
ZGVsdGEgNzUKdWNtYlF0QHxKbW14RmBiPjBDQ3VXU1lWPC0kbUgjZXAxN25aXkQoWGYkK0w1TDJa
IWlkYXNkRXRhdGNyWQoKZGVsdGEgMTEzCnpjbWFGTUplZyZKeEZqMGAwfE4reWZFVztpKmE4aGVW
eG1xNkJnNGM3UGFZcn00a24xcFYlNntpcyQkflQ2PHwlbQpQYTItR2Ztdj9aOHR8Yj0kd2JCZjkK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8v
U2luZ2Fwb3JlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1Np
bmdhcG9yZQppbmRleCA3ODU4MzY2NjY5OGEwMzMyYjgyMmMwY2QxNWRhYTU4YWJmNjBlYjI3Li4y
MzY0YjIxNzhiMDM4NTNiMTc3MWNiM2YzNGI5NjRmZGI4MmUyZTkxIDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmRlbHRhIDU1CnhjbVozJXtHVnhwSTRjN1BPcUEpSkFUQTFLTEozWUYlPmwjOzZXQEFG
NDJiMDl2ZTdvTXUrejJSMHNzUFEyQGUxTwoKZGVsdGEgOTgKemNtZXkqdzFSbnBJNGNKTzB8VW9J
bk8qQFBqUkdjISVZeDtnZj9QbHYjOD56TTZffEx7Z09Pb2tLJV52OzUydl9uCkx2PClvbWJTPTA1
QXMtNGsKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vVHVya2V5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZv
L1R1cmtleQppbmRleCA5YTUzYjNhMzkwNjNlODY4NTliMTJhYTc1NWI3OGNmYjM4YTI2NzA5Li4x
MGQ0YjIxYmZjZTEyZDAyMGZkYTFhZjUxOGQxYWEwNGEyZGU2Mzg1IDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmRlbHRhIDYxCnpjbWV3K2E5PzE4R0dvKDVsfDc3O3BELVNye0c3ZFF2SlNIe1hBPVZo
MTIrJiRaY2JwJVZWLT0yWjMhZGVXSmV+dwpRJHJJUSlDVTBPajExanRYMEVrKT5AQmpiKwoKZGVs
dGEgOTAKemNtY2FGQEooUVhHR3BeYmx8NzZzdH1+MXRPbiQoNGtkYi12TForMzFFZXMzeysoMGIo
MTR3fHQ9M3dSPVd7OWZZCmpZJTc9OzckLVkyWC0jZm09YjQ8JVdDcXNNIz5yKSlaRDRHdFlzPmB6
Kkg5UlMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9u
ZWluZm8vVUNUIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1VD
VAppbmRleCA0MDE0N2I5ZTgzNDljNTBiOWI1NDU5ZDM0YThiZjY4M2M5MWIxODJmLi45MTU1OGJl
MGMyYmY5MDNiMjM2NDIxNWJhMjZkNTIyN2Q2MTI2NTA4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTE0CmhjbVdIRSUxa3EyQVA1K05EcCgrQExQTU14TGRlcF4xPU1RNTFwc0gkMjV8
clkKCmxpdGVyYWwgMTI3CnVjbVdIRSUxa3EyenlPUnU1ZkZ2fTVTczxVMzNVenVHQ35PSmdQRm5k
MTctQGMwYkQ/SDQ3ZFFmKWR5fD4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vVVMvQWxhc2thIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3Rlc3RkYXRhL3pvbmVpbmZvL1VTL0FsYXNrYQppbmRleCA2YzhiZGYyMjY5MDBkN2Y0YzZhNGQ0
NzMzOGU2NzQyZDRkNjc0N2NkLi45YmJiMmZkM2IzNjFlYThhYTRjMTI2ZDE0ZGY1ZmEzNzAzNDNh
NjNmIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQ1CnpjbVg+amJYYUpeQTBgJENoOWZe
Rkc1MiMkV01FKzYwJURFTDN6JDF0U1Eoal5TKHFqcGFMOD0tOyRVSX4wNSNWTgpBXlopPD0KCmRl
bHRhIDQ1CndjbVg+c2JWZ3t5QTEwUm58QkVYb0c0fjVqVnFqcTQwJURDSEttcjZkJnRVRmdWUHgy
PnpAZnx0MEE4Jk84VU8kUQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9VUy9BbGV1dGlhbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90
ZXN0ZGF0YS96b25laW5mby9VUy9BbGV1dGlhbgppbmRleCA1Njk2ZTBmOGJlZGVlNzI1MTVjNDNm
Njg2ODgxYTU2MWFmMzM5ZGI5Li40MzIzNjQ5OGY2ODFjYzA2ZjY0Y2EyYWZhNjEzODgwMzMxZmU2
ZmJiIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQ4CnpjbWRsaHZfKXZjQTBgJENoU2lU
SUY/Vm9JV01FKzYwJUZDQEducVNCU1Eoal5TKHFqcGEpP1p9PVV8KWMkbmdnTgpETzE9eWAKCmRl
bHRhIDUzCnpjbWRsWXZ7emB1QUV3RDBJSEQkcEYmaGFeVnFqcTQwJUZBPEttcjZkUGh7PzNWUGp4
cVZyRjVRdGlUfk4qXjEqQQpFMER6R1VTTzVTMwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9VUy9Bcml6b25hIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1VTL0FyaXpvbmEKaW5kZXggYWRmMjgyMzZhMmZl
YjY4ZjE3N2Y1YjAwMmVhMDY4ZGI1OWVlYTk5Ny4uYWM2YmIwYzc4MjkxZjFlMzQxZjQyYzM0NjM5
NDU4ZmIzODViZjhlZCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1Mwp2Y21hRkpiYkBK
dUk0YzdQT3E5dT1BVEExS0xKNGpsJT51KiU2T1R0c1IkdyR7PE1Jcy1HM05wUj1BOCZGCgpkZWx0
YSA3OAp6Y21YQFhecEkoU0k0Y1ZTMHxVIU1uUzJmKTRGKGckV3gtLWxFKVMzZkBkYldCMXR4QmZu
OVJwJCFVeUZ0YVFPeUAKSG1+I09EZihyPlAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vVVMvQ2VudHJhbCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9VUy9DZW50cmFsCmluZGV4IDNkZDhmMGZhODJhNjA3
MTBjMDcxMWYzNWRlZTkzZWY1MDEzY2E3OTYuLmE1YjE2MTdjN2Y3MGJmYzc3YjdkNTA0YWFhM2Yy
MzYwMzA4MmMzY2IgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzEKbGNtWnBhYDYwYypu
dzllbjB8TnMpNUtDPEtWTkdENEVYYm18YDRXI2xCTElVezJkKTRCCgpkZWx0YSA0MQpyY21ldyUt
NipyY25wTjtFMHxOcyk1S0hfMzUrSmJJZypBYmxrenVrUml8WGMrSm89MFAjMGR6VwoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9VUy9FYXN0
LUluZGlhbmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vVVMv
RWFzdC1JbmRpYW5hCmluZGV4IDRhOTJjMDY1OTNkMzNkMzk2OTc1NmY0ODJlNWQzZDRiNzczOTg0
ZWYuLjA5NTExY2NkY2Y5N2E1YmFhOGUxYjBlYjc1ZTA0MGVlZTZiNmUwYzQgMTAwNjQ0CkdJVCBi
aW5hcnkgcGF0Y2gKZGVsdGEgMjYKZ2NtZUM/WlF8VzlpSFMzcmZxe1Y/aC1FZX1XfENsQHlvZEVY
MDgqWD9rcEtWeQoKZGVsdGEgNDAKcWNtWnFUP2RJSnVpQWdZcGZxe1Y/aC1IMk4yQHUja25ATkox
a3p3KTwjX2Z9eypkemRfa08rblYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovdGVzdGRhdGEvem9uZWluZm8vVVMvRWFzdGVybiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei90ZXN0ZGF0YS96b25laW5mby9VUy9FYXN0ZXJuCmluZGV4IDc1NTNmZWUzN2E1ZDAzZTkxNjNl
ZTE5YjFjZWQ3MzBhMDIzNDVjZmIuLjJmNzU0ODBlMDY5YjYwYjZjNThhOTEzN2M3ZWViZDQ3OTZm
NzQyMjYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzQKb2NtY2E5ZUw7R0lJeEZXSjFf
bE9KQVFzdGQhSjVFNlMmK3FXR0IzO2IkcD84UTBIMVVUNGdkZkUKCmRlbHRhIDQ0CnZjbWNhMGVO
JWRhSTstR1kxX2xPSkFRdCVuQnRUJVowYyEjfkJnMTR0N1FATkJFWi07WjtGU09YOz4hdkQKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vVVMv
SGF3YWlpIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1VTL0hh
d2FpaQppbmRleCBiZDg1NTc3MjA1NGY4ZDQxZTAxNThlNzFjMmJmMmMwNGU1MGU0N2NjLi5jN2Nk
MDYwMTU5YmQyMmZjNWU2ZjEwYWM1YTIwODlhZmIyYzE5YzZhIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMzI5CnpjbVdIRSUxa3EyenlOR081ZkJDZWJ8NDBeTUgreV9aZFBaSC1ITD9+
ciNvIz1UdkdtMGE0RkgjOyVhWlAyT3w/Qgp6R1ljY0B8Tmw4bTM9QlhyZmBSNCN8RWRmfDRsdjBC
Q0kkWmdGSFRAIUAkbjV8QENYS0M3YSRHPzsoIXBLITMrJEgKdVAlP3hCQztiUDRrX1FGKktzM2x7
VT5mSz01RGp1N2h6MjxtT2FxKz9xTihnJEV9Jmx3NFkmYTdYPVVMNgoKbGl0ZXJhbCAyNzYKemNt
V0hFJTFrcTJ6eUteajVmQkNlSFhzSkVjXlpKa1pkUFpILUhMP35yI28jPVR1U3RgeFl9Rm4hTj4l
SiU+ViFBCnpGZmxMeSRwezlQfE5wQnA3Ji1wYEZIVEAhQCRuNXxAQ1hLQ21rXitTMm5abztEPzNt
bip3IUNWSl56OEE8VXpxYwpoNURqdCNtPEdCOE0xeCFkcUNxWUsoSThoYmtuU3VscGdSbz54Qnhe
clBKI2RjCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pv
bmVpbmZvL1VTL0luZGlhbmEtU3RhcmtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL1VTL0luZGlhbmEtU3RhcmtlCmluZGV4IGNjNzg1ZGE5N2RlMGE1NjE0NjEz
ZjliYTZlNTAyZDdkYzVmNTI1YjUuLmZjZDQwOGQ3NGRmNDMzMTBhOWE4NWM0NzVmODNkNTQ1ZjZk
NzU5MTEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzAKbGNtWm5fe3YpKHVBdjVQSjFf
bE9wQWVQdj9pVE1KezxTOShBQ2cqWlcwMDR7TDJgdkJzCgpkZWx0YSAzNwpuY21ldygpR0VBVEEr
ejlZMV9sT3BBZVEoNkJ0VCZFRCZgOTtqMH5IcklHN2ojdHklfngKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vVVMvTWljaGlnYW4gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vVVMvTWljaGlnYW4KaW5kZXgg
ZTNlYTVjM2VmMTIxOWZkYzFiNmU2NjYzZDJiZjNhMzhjMjdkZjY4OS4uNWUwMjI2MDU3YWM1ZTE1
NDkwMWIwZGViYjkwNTQ3YzA5NmY5MDgzYSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3
Mwp6Y21lQVh7M2tGJG5YezlEZnFATihCe213VUZ0SVEpRnwkbGdXVThIOXp7RH42OSNifCNkVUYp
QjJNZkJxJEsoPFkKRjI+Pj9fNUI+bEUKCmRlbHRhIDYzCnpjbWV3LSY/N2lPbllXOTlmcUBOKEJe
clJsTWphSTxNdXkxJk9rVmB5O3ktfW1BaDZrJipARmN2ZDJ3PFloWGVxTApDWlZXKkgKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vVVMvTW91
bnRhaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vVVMvTW91
bnRhaW4KaW5kZXggN2ZjNjY5MTcxZjg4ZThlMWZiMGMxNDgzYmI4M2U3NDZlNWYxYzc3OS4uNWZi
ZTI2YjFkOTNkMWFjYjI1NjFjMzkwYzFlMDk3ZDA3ZjFhMjYyZSAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSAzMApsY21iTyMrI3xlVUF2NVBaMV9sT0pBUXN1WWlUTU18PFJ3aEVDZjlPRzAw
NHN9Mj5idjUKCmRlbHRhIDM2Cm5jbWVBWG8rYFh5QSt6OW8xX2xPSkFRdCVuQnRUJkVEJmBMP2ow
fUAhYWVNKipuUXtvKAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9VUy9QYWNpZmljIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3Rk
YXRhL3pvbmVpbmZvL1VTL1BhY2lmaWMKaW5kZXggYzBjZTQ0MDJmNjBhMTM1MDE3ZDQ5OTMzYWZk
YmVlNTU5MTZiOWJlMy4uOWRhZDRmNGM3NWIzNzM2MzVjY2JlNjM0Nzk4ZjhkOWU1ODdlMzZjMSAx
MDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzMAprY21iTyRIYnJjTUUoXy1fMV9sT0pBUXN0
ZCQ4diNudkl6NkgkKmtORzBDOCZ2S21ZJiQKCmRlbHRhIDUxCnpjbWJPdEhka3plRXtvdTkxX2xP
SkFRdCVuQnRUJVo4T3NHJDRoQU1oQVleOGxFWGNLZnZIXzRqeiFkQGpgTFlTawoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9VUy9TYW1vYSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9VUy9TYW1vYQppbmRl
eCAzZTM4ZTk3Yzk3ZGRmNWUwNTRmYmE4MjJjZmNlMWM1Y2NkNDIyZTNmLi5jYjU2NzA5YTc3ZGVk
YjQ3MTE1MGY0OTA3NzcxYmYzOGYxODc5YmE0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDYyCnpjbVhAWXhTbng+STRjN1BPcTRPMUFnJX56TEoxfXklPyFqR3xBOFJTXzVfJW9YclJFKDYm
eEk1WHZoVHNoSnB7SAoKZGVsdGEgODgKemNtWjNfYyFZNitJNGQmKTB8V0MhODUxQGo0Rm5VIV59
ciQhOXNgV2NAZEdPRzl8LWJuUGpHPGZpTEFkbDckKXx9Ck9ASXZJY2ZgZGEwNFk+ZlJAZTtCQwoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9V
VEMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vVVRDCmluZGV4
IGMzYjk3ZjFhMTk5NDIxZDZkOTYyNWIyODAzMTZkOTliODVhNGE0ZTguLjkxNTU4YmUwYzJiZjkw
M2IyMzY0MjE1YmEyNmQ1MjI3ZDYxMjY1MDggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAxMTQKaGNtV0hFJTFrcTJBUDUrTkRwKCtATFBNTXhMZGVwXjE9TVE1MXBzSCQyNXxyWQoKbGl0
ZXJhbCAxMjcKdWNtV0hFJTFrcTJ6eU9SdTVmRnZ9NVNzPFUyQFA9dUdDfk9KZ1BGbmQxNy1AYzBi
RD9INDdkUWcyblRLZQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0
ZGF0YS96b25laW5mby9Vbml2ZXJzYWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRh
dGEvem9uZWluZm8vVW5pdmVyc2FsCmluZGV4IGMzYjk3ZjFhMTk5NDIxZDZkOTYyNWIyODAzMTZk
OTliODVhNGE0ZTguLjkxNTU4YmUwYzJiZjkwM2IyMzY0MjE1YmEyNmQ1MjI3ZDYxMjY1MDggMTAw
NjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTQKaGNtV0hFJTFrcTJBUDUrTkRwKCtATFBN
TXhMZGVwXjE9TVE1MXBzSCQyNXxyWQoKbGl0ZXJhbCAxMjcKdWNtV0hFJTFrcTJ6eU9SdTVmRnZ9
NVNzPFUyQFA9dUdDfk9KZ1BGbmQxNy1AYzBiRD9INDdkUWcyblRLZQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9XLVNVIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1ctU1UKaW5kZXggOTA2YmQwNWYzNDRh
ZTlhODA2YzFiMjBiOGUyYmZkNzA2MWQzNWZhMS4uZGRiM2Y0ZTk5YTEwMzBmMzNiNTZmYWQ5ODZj
OGQ5YzE2ZTU5ZWIzMiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzNApvY21lQytgT20k
Zm5UZ1luZnFfOH5ofUFZdlZKY3Zub1dsNXJveSN9YVRpMktpMEdtUHhjS2BxWQoKZGVsdGEgMzcK
bmNtZXkqLU5DYj1uTXUlfWZxXzh+aH1DYG8yQHUlYSEmSmI7JGd1ZWozb3wxQ3BDPD4tCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1dFVCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby9XRVQKaW5kZXggNDQ0
YTE5MzNkNzI1MjVhYjMwNDU5ODBlYWIyZmJmNzkyNjZjZjE1OC4uYzI3MzkwYjViNjM4Mzk5MDU3
ZDVmNWM2ZDA5ZWY4YzgxZDVmMDFjMSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxNDAK
emNtY2J9X21PWGN4RjhEeTB8Tit5S290PFBZfTl6ZUk5WlY/Wn1JXik5di1rVEQrMj9jMDMqWlhK
fDs7UE1qKmhaCm9ZeDgtZ0U2Z354JCVDfFVnfWE2cmd1NGNaPT1kN3puZCV3bjh8d0hQOGh9X18w
MXY8eFp+eT1SCgpkZWx0YSAxNDYKemNtZXkhY2FkKmB4RjhiKTB8Tit5S290LShaUGErZkk5WlY/
Y2RgSyFwOUJNKzAzJXE2Zmk+SlVJRHtlR0hIM2k/Cm8yKFczfmU0cHRHR2ZieTNFfWRMSkJNZC1o
PkcmRyFuZCV3bjh8d0hQOGh9X18wRGNxfk9hSzQ/CgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL1p1bHUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovdGVzdGRhdGEvem9uZWluZm8vWnVsdQppbmRleCBjM2I5N2YxYTE5OTQyMWQ2ZDk2MjVi
MjgwMzE2ZDk5Yjg1YTRhNGU4Li45MTU1OGJlMGMyYmY5MDNiMjM2NDIxNWJhMjZkNTIyN2Q2MTI2
NTA4IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE0CmhjbVdIRSUxa3EyQVA1K05E
cCgrQExQTU14TGRlcF4xPU1RNTFwc0gkMjV8clkKCmxpdGVyYWwgMTI3CnVjbVdIRSUxa3EyenlP
UnU1ZkZ2fTVTczxVMkBQPXVHQ35PSmdQRm5kMTctQGMwYkQ/SDQ3ZFFnMm5US2UKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vaXNvMzE2Ni50
YWIgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vaXNvMzE2Ni50
YWIKaW5kZXggYzJlMGY4ZWFmYzAuLmE0ZmY2MWE0ZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vaXNvMzE2Ni50YWIKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL2lzbzMxNjYudGFiCkBAIC05LDgg
KzksOCBAQAogIyBBbGwgdGV4dCB1c2VzIFVURi04IGVuY29kaW5nLiAgVGhlIGNvbHVtbnMgb2Yg
dGhlIHRhYmxlIGFyZSBhcyBmb2xsb3dzOgogIwogIyAxLiAgSVNPIDMxNjYtMSBhbHBoYS0yIGNv
dW50cnkgY29kZSwgY3VycmVudCBhcyBvZgotIyAgICAgSVNPIDMxNjYtMSBOOTA1ICgyMDE2LTEx
LTE1KS4gIFNlZTogVXBkYXRlcyBvbiBJU08gMzE2Ni0xCi0jICAgICBodHRwOi8vaXNvdGMuaXNv
Lm9yZy9saXZlbGluay9saXZlbGluay9PcGVuLzE2OTQ0MjU3CisjICAgICBJU08gMzE2Ni0xIE45
NzYgKDIwMTgtMTEtMDYpLiAgU2VlOiBVcGRhdGVzIG9uIElTTyAzMTY2LTEKKyMgICAgIGh0dHBz
Oi8vaXNvdGMuaXNvLm9yZy9saXZlbGluay9saXZlbGluay9PcGVuLzE2OTQ0MjU3CiAjIDIuICBU
aGUgdXN1YWwgRW5nbGlzaCBuYW1lIGZvciB0aGUgY29kZWQgcmVnaW9uLAogIyAgICAgY2hvc2Vu
IHNvIHRoYXQgYWxwaGFiZXRpYyBzb3J0aW5nIG9mIHN1YnNldHMgcHJvZHVjZXMgaGVscGZ1bCBs
aXN0cy4KICMgICAgIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBFbmdsaXNoIG5hbWUgaW4g
dGhlIElTTyAzMTY2IHRhYmxlcy4KQEAgLTE2Niw3ICsxNjYsNyBAQCBNRQlNb250ZW5lZ3JvCiBN
RglTdCBNYXJ0aW4gKEZyZW5jaCkKIE1HCU1hZGFnYXNjYXIKIE1ICU1hcnNoYWxsIElzbGFuZHMK
LU1LCU1hY2Vkb25pYQorTUsJTm9ydGggTWFjZWRvbmlhCiBNTAlNYWxpCiBNTQlNeWFubWFyIChC
dXJtYSkKIE1OCU1vbmdvbGlhCkBAIC0yMzUsNyArMjM1LDcgQEAgU1QJU2FvIFRvbWUgJiBQcmlu
Y2lwZQogU1YJRWwgU2FsdmFkb3IKIFNYCVN0IE1hYXJ0ZW4gKER1dGNoKQogU1kJU3lyaWEKLVNa
CVN3YXppbGFuZAorU1oJRXN3YXRpbmkgKFN3YXppbGFuZCkKIFRDCVR1cmtzICYgQ2FpY29zIElz
CiBURAlDaGFkCiBURglGcmVuY2ggU291dGhlcm4gJiBBbnRhcmN0aWMgTGFuZHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei90ZXN0ZGF0YS96b25laW5mby96b25lMTk3MC50
YWIgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vem9uZTE5NzAu
dGFiCmluZGV4IDJkOTBlZDcyZjFjLi44MjJmZmExZjFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3Rlc3RkYXRhL3pvbmVpbmZvL3pvbmUxOTcwLnRhYgorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovdGVzdGRhdGEvem9uZWluZm8vem9uZTE5NzAudGFiCkBAIC0x
LDM1ICsxLDM1IEBACi0jIHR6IHpvbmUgZGVzY3JpcHRpb25zCisjIHR6ZGIgdGltZXpvbmUgZGVz
Y3JpcHRpb25zCiAjCiAjIFRoaXMgZmlsZSBpcyBpbiB0aGUgcHVibGljIGRvbWFpbi4KICMKLSMg
RnJvbSBQYXVsIEVnZ2VydCAoMjAxNy0xMC0wMSk6Ci0jIFRoaXMgZmlsZSBjb250YWlucyBhIHRh
YmxlIHdoZXJlIGVhY2ggcm93IHN0YW5kcyBmb3IgYSB6b25lIHdoZXJlCi0jIGNpdmlsIHRpbWUg
c3RhbXBzIGhhdmUgYWdyZWVkIHNpbmNlIDE5NzAuICBDb2x1bW5zIGFyZSBzZXBhcmF0ZWQgYnkK
KyMgRnJvbSBQYXVsIEVnZ2VydCAoMjAxOC0wNi0yNyk6CisjIFRoaXMgZmlsZSBjb250YWlucyBh
IHRhYmxlIHdoZXJlIGVhY2ggcm93IHN0YW5kcyBmb3IgYSB0aW1lem9uZSB3aGVyZQorIyBjaXZp
bCB0aW1lc3RhbXBzIGhhdmUgYWdyZWVkIHNpbmNlIDE5NzAuICBDb2x1bW5zIGFyZSBzZXBhcmF0
ZWQgYnkKICMgYSBzaW5nbGUgdGFiLiAgTGluZXMgYmVnaW5uaW5nIHdpdGggJyMnIGFyZSBjb21t
ZW50cy4gIEFsbCB0ZXh0IHVzZXMKICMgVVRGLTggZW5jb2RpbmcuICBUaGUgY29sdW1ucyBvZiB0
aGUgdGFibGUgYXJlIGFzIGZvbGxvd3M6CiAjCi0jIDEuICBUaGUgY291bnRyaWVzIHRoYXQgb3Zl
cmxhcCB0aGUgem9uZSwgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdAorIyAxLiAgVGhlIGNvdW50
cmllcyB0aGF0IG92ZXJsYXAgdGhlIHRpbWV6b25lLCBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0
CiAjICAgICBvZiBJU08gMzE2NiAyLWNoYXJhY3RlciBjb3VudHJ5IGNvZGVzLiAgU2VlIHRoZSBm
aWxlICdpc28zMTY2LnRhYicuCi0jIDIuICBMYXRpdHVkZSBhbmQgbG9uZ2l0dWRlIG9mIHRoZSB6
b25lJ3MgcHJpbmNpcGFsIGxvY2F0aW9uCisjIDIuICBMYXRpdHVkZSBhbmQgbG9uZ2l0dWRlIG9m
IHRoZSB0aW1lem9uZSdzIHByaW5jaXBhbCBsb2NhdGlvbgogIyAgICAgaW4gSVNPIDY3MDkgc2ln
bi1kZWdyZWVzLW1pbnV0ZXMtc2Vjb25kcyBmb3JtYXQsCiAjICAgICBlaXRoZXIgwrFERE1NwrFE
RERNTSBvciDCsURETU1TU8KxRERETU1TUywKICMgICAgIGZpcnN0IGxhdGl0dWRlICgrIGlzIG5v
cnRoKSwgdGhlbiBsb25naXR1ZGUgKCsgaXMgZWFzdCkuCi0jIDMuICBab25lIG5hbWUgdXNlZCBp
biB2YWx1ZSBvZiBUWiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSMgICAgIFBsZWFzZSBzZWUgdGhl
IHRoZW9yeS5odG1sIGZpbGUgZm9yIGhvdyB6b25lIG5hbWVzIGFyZSBjaG9zZW4uCi0jICAgICBJ
ZiBtdWx0aXBsZSB6b25lcyBvdmVybGFwIGEgY291bnRyeSwgZWFjaCBoYXMgYSByb3cgaW4gdGhl
CisjIDMuICBUaW1lem9uZSBuYW1lIHVzZWQgaW4gdmFsdWUgb2YgVFogZW52aXJvbm1lbnQgdmFy
aWFibGUuCisjICAgICBQbGVhc2Ugc2VlIHRoZSB0aGVvcnkuaHRtbCBmaWxlIGZvciBob3cgdGhl
c2UgbmFtZXMgYXJlIGNob3Nlbi4KKyMgICAgIElmIG11bHRpcGxlIHRpbWV6b25lcyBvdmVybGFw
IGEgY291bnRyeSwgZWFjaCBoYXMgYSByb3cgaW4gdGhlCiAjICAgICB0YWJsZSwgd2l0aCBlYWNo
IGNvbHVtbiAxIGNvbnRhaW5pbmcgdGhlIGNvdW50cnkgY29kZS4KLSMgNC4gIENvbW1lbnRzOyBw
cmVzZW50IGlmIGFuZCBvbmx5IGlmIGEgY291bnRyeSBoYXMgbXVsdGlwbGUgem9uZXMuCisjIDQu
ICBDb21tZW50czsgcHJlc2VudCBpZiBhbmQgb25seSBpZiBhIGNvdW50cnkgaGFzIG11bHRpcGxl
IHRpbWV6b25lcy4KICMKLSMgSWYgYSB6b25lIGNvdmVycyBtdWx0aXBsZSBjb3VudHJpZXMsIHRo
ZSBtb3N0LXBvcHVsb3VzIGNpdHkgaXMgdXNlZCwKKyMgSWYgYSB0aW1lem9uZSBjb3ZlcnMgbXVs
dGlwbGUgY291bnRyaWVzLCB0aGUgbW9zdC1wb3B1bG91cyBjaXR5IGlzIHVzZWQsCiAjIGFuZCB0
aGF0IGNvdW50cnkgaXMgbGlzdGVkIGZpcnN0IGluIGNvbHVtbiAxOyBhbnkgb3RoZXIgY291bnRy
aWVzCiAjIGFyZSBsaXN0ZWQgYWxwaGFiZXRpY2FsbHkgYnkgY291bnRyeSBjb2RlLiAgVGhlIHRh
YmxlIGlzIHNvcnRlZAogIyBmaXJzdCBieSBjb3VudHJ5IGNvZGUsIHRoZW4gKGlmIHBvc3NpYmxl
KSBieSBhbiBvcmRlciB3aXRoaW4gdGhlCiAjIGNvdW50cnkgdGhhdCAoMSkgbWFrZXMgc29tZSBn
ZW9ncmFwaGljYWwgc2Vuc2UsIGFuZCAoMikgcHV0cyB0aGUKLSMgbW9zdCBwb3B1bG91cyB6b25l
cyBmaXJzdCwgd2hlcmUgdGhhdCBkb2VzIG5vdCBjb250cmFkaWN0ICgxKS4KKyMgbW9zdCBwb3B1
bG91cyB0aW1lem9uZXMgZmlyc3QsIHdoZXJlIHRoYXQgZG9lcyBub3QgY29udHJhZGljdCAoMSku
CiAjCi0jIFRoaXMgdGFibGUgaXMgaW50ZW5kZWQgYXMgYW4gYWlkIGZvciB1c2VycywgdG8gaGVs
cCB0aGVtIHNlbGVjdCB0aW1lCi0jIHpvbmUgZGF0YSBlbnRyaWVzIGFwcHJvcHJpYXRlIGZvciB0
aGVpciBwcmFjdGljYWwgbmVlZHMuICBJdCBpcyBub3QKLSMgaW50ZW5kZWQgdG8gdGFrZSBvciBl
bmRvcnNlIGFueSBwb3NpdGlvbiBvbiBsZWdhbCBvciB0ZXJyaXRvcmlhbCBjbGFpbXMuCisjIFRo
aXMgdGFibGUgaXMgaW50ZW5kZWQgYXMgYW4gYWlkIGZvciB1c2VycywgdG8gaGVscCB0aGVtIHNl
bGVjdCB0aW1lem9uZXMKKyMgYXBwcm9wcmlhdGUgZm9yIHRoZWlyIHByYWN0aWNhbCBuZWVkcy4g
IEl0IGlzIG5vdCBpbnRlbmRlZCB0byB0YWtlIG9yCisjIGVuZG9yc2UgYW55IHBvc2l0aW9uIG9u
IGxlZ2FsIG9yIHRlcnJpdG9yaWFsIGNsYWltcy4KICMKICNjb3VudHJ5LQogI2NvZGVzCWNvb3Jk
aW5hdGVzCVRaCWNvbW1lbnRzCkBAIC0yMTEsNiArMjExLDcgQEAgS1AJKzM5MDErMTI1NDUJQXNp
YS9QeW9uZ3lhbmcKIEtSCSszNzMzKzEyNjU4CUFzaWEvU2VvdWwKIEtaCSs0MzE1KzA3NjU3CUFz
aWEvQWxtYXR5CUthemFraHN0YW4gKG1vc3QgYXJlYXMpCiBLWgkrNDQ0OCswNjUyOAlBc2lhL1F5
enlsb3JkYQlReXp5bG9yZGEvS3l6eWxvcmRhL0t6eWwtT3JkYQorS1oJKzUzMTIrMDYzMzcJQXNp
YS9Rb3N0YW5heQlRb3N0YW5heS9Lb3N0YW5heS9LdXN0YW5heQogS1oJKzUwMTcrMDU3MTAJQXNp
YS9BcXRvYmUJQXF0w7ZiZS9Ba3RvYmUKIEtaCSs0NDMxKzA1MDE2CUFzaWEvQXF0YXUJTWFuZ2do
eXN0YcWrL01hbmtpc3RhdQogS1oJKzQ3MDcrMDUxNTYJQXNpYS9BdHlyYXUJQXR5cmHFqy9BdGly
YXUvR3VyJ3lldgpAQCAtMjMxLDcgKzIzMiw3IEBAIE1NCSsxNjQ3KzA5NjEwCUFzaWEvWWFuZ29u
CiBNTgkrNDc1NSsxMDY1MwlBc2lhL1VsYWFuYmFhdGFyCU1vbmdvbGlhIChtb3N0IGFyZWFzKQog
TU4JKzQ4MDErMDkxMzkJQXNpYS9Ib3ZkCUJheWFuLcOWbGdpaSwgR292aS1BbHRhaSwgSG92ZCwg
VXZzLCBaYXZraGFuCiBNTgkrNDgwNCsxMTQzMAlBc2lhL0Nob2liYWxzYW4JRG9ybm9kLCBTw7xr
aGJhYXRhcgotTU8JKzIyMTQrMTEzMzUJQXNpYS9NYWNhdQorTU8JKzIyMTE1MCsxMTMzMjMwCUFz
aWEvTWFjYXUKIE1RCSsxNDM2LTA2MTA1CUFtZXJpY2EvTWFydGluaXF1ZQogTVQJKzM1NTQrMDE0
MzEJRXVyb3BlL01hbHRhCiBNVQktMjAxMCswNTczMAlJbmRpYW4vTWF1cml0aXVzCkBAIC0yODgs
MTAgKzI4OSwxMSBAQCBSTwkrNDQyNiswMjYwNglFdXJvcGUvQnVjaGFyZXN0CiBSUyxCQSxIUixN
RSxNSyxTSQkrNDQ1MCswMjAzMAlFdXJvcGUvQmVsZ3JhZGUKIFJVCSs1NDQzKzAyMDMwCUV1cm9w
ZS9LYWxpbmluZ3JhZAlNU0stMDEgLSBLYWxpbmluZ3JhZAogUlUJKzU1NDUyMSswMzczNzA0CUV1
cm9wZS9Nb3Njb3cJTVNLKzAwIC0gTW9zY293IGFyZWEKLVJVCSs0NDU3KzAzNDA2CUV1cm9wZS9T
aW1mZXJvcG9sCU1TSyswMCAtIENyaW1lYQotUlUJKzQ4NDQrMDQ0MjUJRXVyb3BlL1ZvbGdvZ3Jh
ZAlNU0srMDAgLSBWb2xnb2dyYWQKKyMgTWVudGlvbiBSVSBhbmQgVUEgYWxwaGFiZXRpY2FsbHku
ICBTZWUgInRlcnJpdG9yaWFsIGNsYWltcyIgYWJvdmUuCitSVSxVQQkrNDQ1NyswMzQwNglFdXJv
cGUvU2ltZmVyb3BvbAlNU0srMDAgLSBDcmltZWEKIFJVCSs1ODM2KzA0OTM5CUV1cm9wZS9LaXJv
dglNU0srMDAgLSBLaXJvdgogUlUJKzQ2MjErMDQ4MDMJRXVyb3BlL0FzdHJha2hhbglNU0srMDEg
LSBBc3RyYWtoYW4KK1JVCSs0ODQ0KzA0NDI1CUV1cm9wZS9Wb2xnb2dyYWQJTVNLKzAxIC0gVm9s
Z29ncmFkCiBSVQkrNTEzNCswNDYwMglFdXJvcGUvU2FyYXRvdglNU0srMDEgLSBTYXJhdG92CiBS
VQkrNTQyMCswNDgyNAlFdXJvcGUvVWx5YW5vdnNrCU1TSyswMSAtIFVseWFub3ZzawogUlUJKzUz
MTIrMDUwMDkJRXVyb3BlL1NhbWFyYQlNU0srMDEgLSBTYW1hcmEsIFVkbXVydGlhCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2dldF9jdXJyZW50X3RpbWVfY2hyb25vLmluYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvZ2V0X2N1cnJlbnRfdGltZV9jaHJvbm8uaW5jCmluZGV4IGNmODg0
YTEwZWQ5Li41MTgwMjMwZGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9nZXRf
Y3VycmVudF90aW1lX2Nocm9uby5pbmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9nZXRfY3Vy
cmVudF90aW1lX2Nocm9uby5pbmMKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvdGVzdF91dGlsLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC90ZXN0X3V0aWwuY2MKaW5kZXggYmJiZWY3ZGE3MGMuLjU5MTY2YTdj
ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL3Rlc3RfdXRpbC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL3Rlc3RfdXRpbC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApAQCAtMjYsMTIgKzI2LDYgQEAgbmFtZXNwYWNlIGNjdHogPSBhYnNs
Ojp0aW1lX2ludGVybmFsOjpjY3R6OwogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHRpbWVf
aW50ZXJuYWwgewogCi0jaWYgR1RFU1RfVVNFU19TSU1QTEVfUkUKLWV4dGVybiBjb25zdCBjaGFy
IGtab25lQWJiclJFW10gPSAiLioiOyAgLy8ganVzdCBwdW50Ci0jZWxzZQotZXh0ZXJuIGNvbnN0
IGNoYXIga1pvbmVBYmJyUkVbXSA9ICJbQS1aYS16XXszLDR9fFstK11bMC05XXsyfShbMC05XXsy
fSk/IjsKLSNlbmRpZgotCiBUaW1lWm9uZSBMb2FkVGltZVpvbmUoY29uc3Qgc3RkOjpzdHJpbmcm
IG5hbWUpIHsKICAgVGltZVpvbmUgdHo7CiAgIEFCU0xfUkFXX0NIRUNLKExvYWRUaW1lWm9uZShu
YW1lLCAmdHopLCBuYW1lLmNfc3RyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC90ZXN0X3V0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvdGVzdF91dGlsLmgKaW5kZXggOGZk
NWZiOWZkMDMuLmQ3MzE5ZWE4ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL3Rl
c3RfdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvdGVzdF91dGlsLmgKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE3LDM1ICsxNywxMSBAQAogCiAj
aW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgImFic2wvdGltZS90aW1lLmgiCiAKLS8vIFRoaXMgaGVs
cGVyIGlzIGEgbWFjcm8gc28gdGhhdCBmYWlsZWQgZXhwZWN0YXRpb25zIHNob3cgdXAgd2l0aCB0
aGUKLS8vIGNvcnJlY3QgbGluZSBudW1iZXJzLgotLy8KLS8vIFRoaXMgaXMgZm9yIGludGVybmFs
IHRlc3Rpbmcgb2YgdGhlIEJhc2UgVGltZSBsaWJyYXJ5IGl0c2VsZi4gVGhpcyBpcyBub3QKLS8v
IHBhcnQgb2YgYSBwdWJsaWMgQVBJLgotI2RlZmluZSBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1F
KGJkLCB5LCBtLCBkLCBoLCBtaW4sIHMsIG9mZiwgaXNkc3QpICAgICBcCi0gIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBFWFBFQ1RfRVEoeSwgYmQueWVhcik7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEVYUEVDVF9FUShtLCBiZC5tb250aCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNU
X0VRKGQsIGJkLmRheSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBFWFBFQ1RfRVEoaCwgYmQuaG91cik7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEVYUEVDVF9FUShtaW4sIGJkLm1pbnV0
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQ
RUNUX0VRKHMsIGJkLnNlY29uZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICBFWFBFQ1RfRVEob2ZmLCBiZC5vZmZzZXQpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEVYUEVDVF9FUShpc2RzdCwgYmQu
aXNfZHN0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
RVhQRUNUX1RIQVQoYmQuem9uZV9hYmJyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB0ZXN0aW5nOjpNYXRjaGVzUmVnZXgoYWJz
bDo6dGltZV9pbnRlcm5hbDo6a1pvbmVBYmJyUkUpKTsgXAotICB9IHdoaWxlICgwKQotCiBuYW1l
c3BhY2UgYWJzbCB7CiBuYW1lc3BhY2UgdGltZV9pbnRlcm5hbCB7CiAKLS8vIEEgcmVndWxhciBl
eHByZXNzaW9uIHRoYXQgbWF0Y2hlcyBhbGwgem9uZSBhYmJyZXZpYXRpb25zICglWikuCi1leHRl
cm4gY29uc3QgY2hhciBrWm9uZUFiYnJSRVtdOwotCiAvLyBMb2FkcyB0aGUgbmFtZWQgdGltZXpv
bmUsIGJ1dCBkaWVzIG9uIGFueSBmYWlsdXJlLgogYWJzbDo6VGltZVpvbmUgTG9hZFRpbWVab25l
KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1l
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS90aW1lLmNjCmluZGV4IDcxZmQ4ZWU2ZTc0Li42YTM4N2JjZWU2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZS5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjIsMTYgKzIyLDIx
IEBACiAvLyBOT1RFOiBUbyBrZWVwIHR5cGUgdmVyYm9zaXR5IHRvIGEgbWluaW11bSwgdGhlIGZv
bGxvd2luZyB2YXJpYWJsZSBuYW1pbmcKIC8vIGNvbnZlbnRpb25zIGFyZSB1c2VkIHRocm91Z2hv
dXQgdGhpcyBmaWxlLgogLy8KLS8vIGN6OiBBIGNjdHo6OnRpbWVfem9uZQogLy8gdHo6IEFuIGFi
c2w6OlRpbWVab25lCisvLyBjaTogQW4gYWJzbDo6VGltZVpvbmU6OkNpdmlsSW5mbworLy8gdGk6
IEFuIGFic2w6OlRpbWVab25lOjpUaW1lSW5mbworLy8gY2Q6IEFuIGFic2w6OkNpdmlsRGF5IG9y
IGEgY2N0ejo6Y2l2aWxfZGF5CisvLyBjczogQW4gYWJzbDo6Q2l2aWxTZWNvbmQgb3IgYSBjY3R6
OjpjaXZpbF9zZWNvbmQKKy8vIGJkOiBBbiBhYnNsOjpUaW1lOjpCcmVha2Rvd24KIC8vIGNsOiBB
IGNjdHo6OnRpbWVfem9uZTo6Y2l2aWxfbG9va3VwCiAvLyBhbDogQSBjY3R6Ojp0aW1lX3pvbmU6
OmFic29sdXRlX2xvb2t1cAotLy8gY2Q6IEEgY2N0ejo6Y2l2aWxfZGF5Ci0vLyBjczogQSBjY3R6
OjpjaXZpbF9zZWNvbmQKLS8vIGJkOiBBbiBhYnNsOjpUaW1lOjpCcmVha2Rvd24KIAogI2luY2x1
ZGUgImFic2wvdGltZS90aW1lLmgiCiAKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2luY2x1ZGUg
PHdpbnNvY2syLmg+ICAvLyBmb3IgdGltZXZhbAorI2VuZGlmCisKICNpbmNsdWRlIDxjc3RyaW5n
PgogI2luY2x1ZGUgPGN0aW1lPgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTQwLDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJhYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25l
LmgiCiAKIG5hbWVzcGFjZSBjY3R6ID0gYWJzbDo6dGltZV9pbnRlcm5hbDo6Y2N0ejsKKwogbmFt
ZXNwYWNlIGFic2wgewogCiBuYW1lc3BhY2UgewpAQCAtNzUsNyArODEsNyBAQCBpbmxpbmUgYWJz
bDo6VGltZTo6QnJlYWtkb3duIEluZmluaXRlRnV0dXJlQnJlYWtkb3duKCkgewogICByZXR1cm4g
YmQ7CiB9CiAKLWlubGluZSBUaW1lOjpCcmVha2Rvd24gSW5maW5pdGVQYXN0QnJlYWtkb3duKCkg
eworaW5saW5lIGFic2w6OlRpbWU6OkJyZWFrZG93biBJbmZpbml0ZVBhc3RCcmVha2Rvd24oKSB7
CiAgIFRpbWU6OkJyZWFrZG93biBiZDsKICAgYmQueWVhciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1pbigpOwogICBiZC5tb250aCA9IDE7CkBAIC05Miw2ICs5OCwyNiBAQCBpbmxp
bmUgVGltZTo6QnJlYWtkb3duIEluZmluaXRlUGFzdEJyZWFrZG93bigpIHsKICAgcmV0dXJuIGJk
OwogfQogCitpbmxpbmUgYWJzbDo6VGltZVpvbmU6OkNpdmlsSW5mbyBJbmZpbml0ZUZ1dHVyZUNp
dmlsSW5mbygpIHsKKyAgVGltZVpvbmU6OkNpdmlsSW5mbyBjaTsKKyAgY2kuY3MgPSBDaXZpbFNl
Y29uZDo6bWF4KCk7CisgIGNpLnN1YnNlY29uZCA9IEluZmluaXRlRHVyYXRpb24oKTsKKyAgY2ku
b2Zmc2V0ID0gMDsKKyAgY2kuaXNfZHN0ID0gZmFsc2U7CisgIGNpLnpvbmVfYWJiciA9ICItMDAi
OworICByZXR1cm4gY2k7Cit9CisKK2lubGluZSBhYnNsOjpUaW1lWm9uZTo6Q2l2aWxJbmZvIElu
ZmluaXRlUGFzdENpdmlsSW5mbygpIHsKKyAgVGltZVpvbmU6OkNpdmlsSW5mbyBjaTsKKyAgY2ku
Y3MgPSBDaXZpbFNlY29uZDo6bWluKCk7CisgIGNpLnN1YnNlY29uZCA9IC1JbmZpbml0ZUR1cmF0
aW9uKCk7CisgIGNpLm9mZnNldCA9IDA7CisgIGNpLmlzX2RzdCA9IGZhbHNlOworICBjaS56b25l
X2FiYnIgPSAiLTAwIjsKKyAgcmV0dXJuIGNpOworfQorCiBpbmxpbmUgYWJzbDo6VGltZUNvbnZl
cnNpb24gSW5maW5pdGVGdXR1cmVUaW1lQ29udmVyc2lvbigpIHsKICAgYWJzbDo6VGltZUNvbnZl
cnNpb24gdGM7CiAgIHRjLnByZSA9IHRjLnRyYW5zID0gdGMucG9zdCA9IGFic2w6OkluZmluaXRl
RnV0dXJlKCk7CkBAIC0xMzQsMTkgKzE2MCw2IEBAIFRpbWUgTWFrZVRpbWVXaXRoT3ZlcmZsb3co
Y29uc3QgY2N0ejo6dGltZV9wb2ludDxjY3R6OjpzZWNvbmRzPiYgc2VjLAogICByZXR1cm4gdGlt
ZV9pbnRlcm5hbDo6RnJvbVVuaXhEdXJhdGlvbih0aW1lX2ludGVybmFsOjpNYWtlRHVyYXRpb24o
aGkpKTsKIH0KIAotaW5saW5lIGFic2w6OlRpbWVDb252ZXJzaW9uOjpLaW5kIE1hcEtpbmQoCi0g
ICAgY29uc3QgY2N0ejo6dGltZV96b25lOjpjaXZpbF9sb29rdXA6OmNpdmlsX2tpbmQmIGtpbmQp
IHsKLSAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBjY3R6Ojp0aW1lX3pvbmU6OmNpdmlsX2xv
b2t1cDo6VU5JUVVFOgotICAgICAgcmV0dXJuIGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUU7
Ci0gICAgY2FzZSBjY3R6Ojp0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6U0tJUFBFRDoKLSAgICAg
IHJldHVybiBhYnNsOjpUaW1lQ29udmVyc2lvbjo6U0tJUFBFRDsKLSAgICBjYXNlIGNjdHo6OnRp
bWVfem9uZTo6Y2l2aWxfbG9va3VwOjpSRVBFQVRFRDoKLSAgICAgIHJldHVybiBhYnNsOjpUaW1l
Q29udmVyc2lvbjo6UkVQRUFURUQ7Ci0gIH0KLSAgcmV0dXJuIGFic2w6OlRpbWVDb252ZXJzaW9u
OjpVTklRVUU7Ci19Ci0KIC8vIFJldHVybnMgTW9uPTEuLlN1bj03LgogaW5saW5lIGludCBNYXBX
ZWVrZGF5KGNvbnN0IGNjdHo6OndlZWtkYXkmIHdkKSB7CiAgIHN3aXRjaCAod2QpIHsKQEAgLTE2
OCwxMSArMTgxLDI5IEBAIGlubGluZSBpbnQgTWFwV2Vla2RheShjb25zdCBjY3R6Ojp3ZWVrZGF5
JiB3ZCkgewogICByZXR1cm4gMTsKIH0KIAorYm9vbCBGaW5kVHJhbnNpdGlvbihjb25zdCBjY3R6
Ojp0aW1lX3pvbmUmIHR6LAorICAgICAgICAgICAgICAgICAgICBib29sIChjY3R6Ojp0aW1lX3pv
bmU6OipmaW5kX3RyYW5zaXRpb24pKAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2N0
ejo6dGltZV9wb2ludDxjY3R6OjpzZWNvbmRzPiYgdHAsCisgICAgICAgICAgICAgICAgICAgICAg
ICBjY3R6Ojp0aW1lX3pvbmU6OmNpdmlsX3RyYW5zaXRpb24qIHRyYW5zKSBjb25zdCwKKyAgICAg
ICAgICAgICAgICAgICAgVGltZSB0LCBUaW1lWm9uZTo6Q2l2aWxUcmFuc2l0aW9uKiB0cmFucykg
eworICAvLyBUcmFuc2l0aW9ucyBhcmUgc2Vjb25kLWFsaWduZWQsIHNvIHdlIGNhbiBkaXNjYXJk
IGFueSBmcmFjdGlvbmFsIHBhcnQuCisgIGNvbnN0IGF1dG8gdHAgPSB1bml4X2Vwb2NoKCkgKyBj
Y3R6OjpzZWNvbmRzKFRvVW5peFNlY29uZHModCkpOworICBjY3R6Ojp0aW1lX3pvbmU6OmNpdmls
X3RyYW5zaXRpb24gdHI7CisgIGlmICghKHR6LipmaW5kX3RyYW5zaXRpb24pKHRwLCAmdHIpKSBy
ZXR1cm4gZmFsc2U7CisgIHRyYW5zLT5mcm9tID0gQ2l2aWxTZWNvbmQodHIuZnJvbSk7CisgIHRy
YW5zLT50byA9IENpdmlsU2Vjb25kKHRyLnRvKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKIH0gIC8v
IG5hbWVzcGFjZQogCisvLworLy8gVGltZQorLy8KKwogYWJzbDo6VGltZTo6QnJlYWtkb3duIFRp
bWU6OkluKGFic2w6OlRpbWVab25lIHR6KSBjb25zdCB7Ci0gIGlmICgqdGhpcyA9PSBhYnNsOjpJ
bmZpbml0ZUZ1dHVyZSgpKSByZXR1cm4gYWJzbDo6SW5maW5pdGVGdXR1cmVCcmVha2Rvd24oKTsK
LSAgaWYgKCp0aGlzID09IGFic2w6OkluZmluaXRlUGFzdCgpKSByZXR1cm4gYWJzbDo6SW5maW5p
dGVQYXN0QnJlYWtkb3duKCk7CisgIGlmICgqdGhpcyA9PSBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgp
KSByZXR1cm4gSW5maW5pdGVGdXR1cmVCcmVha2Rvd24oKTsKKyAgaWYgKCp0aGlzID09IGFic2w6
OkluZmluaXRlUGFzdCgpKSByZXR1cm4gSW5maW5pdGVQYXN0QnJlYWtkb3duKCk7CiAKICAgY29u
c3QgYXV0byB0cCA9IHVuaXhfZXBvY2goKSArIGNjdHo6OnNlY29uZHModGltZV9pbnRlcm5hbDo6
R2V0UmVwSGkocmVwXykpOwogICBjb25zdCBhdXRvIGFsID0gY2N0ejo6dGltZV96b25lKHR6KS5s
b29rdXAodHApOwpAQCAtMTg3LDkyICsyMTgsMTggQEAgYWJzbDo6VGltZTo6QnJlYWtkb3duIFRp
bWU6OkluKGFic2w6OlRpbWVab25lIHR6KSBjb25zdCB7CiAgIGJkLm1pbnV0ZSA9IGNzLm1pbnV0
ZSgpOwogICBiZC5zZWNvbmQgPSBjcy5zZWNvbmQoKTsKICAgYmQuc3Vic2Vjb25kID0gdGltZV9p
bnRlcm5hbDo6TWFrZUR1cmF0aW9uKDAsIHRpbWVfaW50ZXJuYWw6OkdldFJlcExvKHJlcF8pKTsK
LSAgYmQud2Vla2RheSA9IE1hcFdlZWtkYXkoZ2V0X3dlZWtkYXkoY2QpKTsKLSAgYmQueWVhcmRh
eSA9IGdldF95ZWFyZGF5KGNkKTsKKyAgYmQud2Vla2RheSA9IE1hcFdlZWtkYXkoY2N0ejo6Z2V0
X3dlZWtkYXkoY2QpKTsKKyAgYmQueWVhcmRheSA9IGNjdHo6OmdldF95ZWFyZGF5KGNkKTsKICAg
YmQub2Zmc2V0ID0gYWwub2Zmc2V0OwogICBiZC5pc19kc3QgPSBhbC5pc19kc3Q7CiAgIGJkLnpv
bmVfYWJiciA9IGFsLmFiYnI7CiAgIHJldHVybiBiZDsKIH0KIAotYWJzbDo6VGltZSBGcm9tVE0o
Y29uc3Qgc3RydWN0IHRtJiB0bSwgYWJzbDo6VGltZVpvbmUgdHopIHsKLSAgY29uc3QgYXV0byBj
eiA9IGNjdHo6OnRpbWVfem9uZSh0eik7Ci0gIGNvbnN0IGF1dG8gY3MgPQotICAgICAgY2N0ejo6
Y2l2aWxfc2Vjb25kKHRtLnRtX3llYXIgKyAxOTAwLCB0bS50bV9tb24gKyAxLCB0bS50bV9tZGF5
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHRtLnRtX2hvdXIsIHRtLnRtX21pbiwgdG0udG1f
c2VjKTsKLSAgY29uc3QgYXV0byBjbCA9IGN6Lmxvb2t1cChjcyk7Ci0gIGNvbnN0IGF1dG8gdHAg
PSB0bS50bV9pc2RzdCA9PSAwID8gY2wucG9zdCA6IGNsLnByZTsKLSAgcmV0dXJuIE1ha2VUaW1l
V2l0aE92ZXJmbG93KHRwLCBjcywgY3opOwotfQotCi1zdHJ1Y3QgdG0gVG9UTShhYnNsOjpUaW1l
IHQsIGFic2w6OlRpbWVab25lIHR6KSB7Ci0gIGNvbnN0IGFic2w6OlRpbWU6OkJyZWFrZG93biBi
ZCA9IHQuSW4odHopOwotICBzdHJ1Y3QgdG0gdG07Ci0gIHN0ZDo6bWVtc2V0KCZ0bSwgMCwgc2l6
ZW9mKHRtKSk7Ci0gIHRtLnRtX3NlYyA9IGJkLnNlY29uZDsKLSAgdG0udG1fbWluID0gYmQubWlu
dXRlOwotICB0bS50bV9ob3VyID0gYmQuaG91cjsKLSAgdG0udG1fbWRheSA9IGJkLmRheTsKLSAg
dG0udG1fbW9uID0gYmQubW9udGggLSAxOwotCi0gIC8vIFNhdHVyYXRlcyB0bS50bV95ZWFyIGlu
IGNhc2VzIG9mIG92ZXIvdW5kZXJmbG93LCBhY2NvdW50aW5nIGZvciB0aGUgZmFjdAotICAvLyB0
aGF0IHRtLnRtX3llYXIgaXMgeWVhcnMgc2luY2UgMTkwMC4KLSAgaWYgKGJkLnllYXIgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpICsgMTkwMCkgewotICAgIHRtLnRtX3llYXIgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOwotICB9IGVsc2UgaWYgKGJkLnllYXIgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSB7Ci0gICAgdG0udG1feWVhciA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkgLSAxOTAwOwotICB9IGVsc2UgewotICAgIHRtLnRt
X3llYXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGJkLnllYXIgLSAxOTAwKTsKLSAgfQotCi0gIHRtLnRt
X3dkYXkgPSBiZC53ZWVrZGF5ICUgNzsKLSAgdG0udG1feWRheSA9IGJkLnllYXJkYXkgLSAxOwot
ICB0bS50bV9pc2RzdCA9IGJkLmlzX2RzdCA/IDEgOiAwOwotCi0gIHJldHVybiB0bTsKLX0KLQog
Ly8KLS8vIEZhY3RvcnkgZnVuY3Rpb25zLgorLy8gQ29udmVyc2lvbnMgZnJvbS90byBvdGhlciB0
aW1lIHR5cGVzLgogLy8KIAotYWJzbDo6VGltZUNvbnZlcnNpb24gQ29udmVydERhdGVUaW1lKGlu
dDY0X3QgeWVhciwgaW50IG1vbiwgaW50IGRheSwgaW50IGhvdXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG1pbiwgaW50IHNlYywgVGltZVpvbmUgdHopIHsKLSAg
Ly8gQXZvaWRzIHllYXJzIHRoYXQgYXJlIHRvbyBleHRyZW1lIGZvciBjaXZpbF9zZWNvbmQgdG8g
bm9ybWFsaXplLgotICBpZiAoeWVhciA+IDMwMDAwMDAwMDAwMCkgcmV0dXJuIEluZmluaXRlRnV0
dXJlVGltZUNvbnZlcnNpb24oKTsKLSAgaWYgKHllYXIgPCAtMzAwMDAwMDAwMDAwKSByZXR1cm4g
SW5maW5pdGVQYXN0VGltZUNvbnZlcnNpb24oKTsKLSAgY29uc3QgYXV0byBjeiA9IGNjdHo6OnRp
bWVfem9uZSh0eik7Ci0gIGNvbnN0IGF1dG8gY3MgPSBjY3R6OjpjaXZpbF9zZWNvbmQoeWVhciwg
bW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjKTsKLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gdGM7Ci0g
IHRjLm5vcm1hbGl6ZWQgPSB5ZWFyICE9IGNzLnllYXIoKSB8fCBtb24gIT0gY3MubW9udGgoKSB8
fCBkYXkgIT0gY3MuZGF5KCkgfHwKLSAgICAgICAgICAgICAgICAgIGhvdXIgIT0gY3MuaG91cigp
IHx8IG1pbiAhPSBjcy5taW51dGUoKSB8fCBzZWMgIT0gY3Muc2Vjb25kKCk7Ci0gIGNvbnN0IGF1
dG8gY2wgPSBjei5sb29rdXAoY3MpOwotICAvLyBDb252ZXJ0cyB0aGUgY2l2aWxfbG9va3VwIHN0
cnVjdCB0byBhIFRpbWVDb252ZXJzaW9uLgotICB0Yy5wcmUgPSBNYWtlVGltZVdpdGhPdmVyZmxv
dyhjbC5wcmUsIGNzLCBjeiwgJnRjLm5vcm1hbGl6ZWQpOwotICB0Yy50cmFucyA9IE1ha2VUaW1l
V2l0aE92ZXJmbG93KGNsLnRyYW5zLCBjcywgY3osICZ0Yy5ub3JtYWxpemVkKTsKLSAgdGMucG9z
dCA9IE1ha2VUaW1lV2l0aE92ZXJmbG93KGNsLnBvc3QsIGNzLCBjeiwgJnRjLm5vcm1hbGl6ZWQp
OwotICB0Yy5raW5kID0gTWFwS2luZChjbC5raW5kKTsKLSAgcmV0dXJuIHRjOwotfQotCi1hYnNs
OjpUaW1lIEZyb21EYXRlVGltZShpbnQ2NF90IHllYXIsIGludCBtb24sIGludCBkYXksIGludCBo
b3VyLCBpbnQgbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlYywgVGltZVpvbmUg
dHopIHsKLSAgaWYgKHllYXIgPiAzMDAwMDAwMDAwMDApIHJldHVybiBJbmZpbml0ZUZ1dHVyZSgp
OwotICBpZiAoeWVhciA8IC0zMDAwMDAwMDAwMDApIHJldHVybiBJbmZpbml0ZVBhc3QoKTsKLSAg
Y29uc3QgYXV0byBjeiA9IGNjdHo6OnRpbWVfem9uZSh0eik7Ci0gIGNvbnN0IGF1dG8gY3MgPSBj
Y3R6OjpjaXZpbF9zZWNvbmQoeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjKTsKLSAgY29u
c3QgYXV0byBjbCA9IGN6Lmxvb2t1cChjcyk7Ci0gIHJldHVybiBNYWtlVGltZVdpdGhPdmVyZmxv
dyhjbC5wcmUsIGNzLCBjeik7Ci19Ci0KLWFic2w6OlRpbWUgVGltZUZyb21UaW1lc3BlYyh0aW1l
c3BlYyB0cykgewotICByZXR1cm4gdGltZV9pbnRlcm5hbDo6RnJvbVVuaXhEdXJhdGlvbihhYnNs
OjpEdXJhdGlvbkZyb21UaW1lc3BlYyh0cykpOwotfQotCi1hYnNsOjpUaW1lIFRpbWVGcm9tVGlt
ZXZhbCh0aW1ldmFsIHR2KSB7Ci0gIHJldHVybiB0aW1lX2ludGVybmFsOjpGcm9tVW5peER1cmF0
aW9uKGFic2w6OkR1cmF0aW9uRnJvbVRpbWV2YWwodHYpKTsKLX0KLQogYWJzbDo6VGltZSBGcm9t
VURhdGUoZG91YmxlIHVkYXRlKSB7CiAgIHJldHVybiB0aW1lX2ludGVybmFsOjpGcm9tVW5peER1
cmF0aW9uKGFic2w6Ok1pbGxpc2Vjb25kcyh1ZGF0ZSkpOwogfQpAQCAtMjgxLDEwICsyMzgsNiBA
QCBhYnNsOjpUaW1lIEZyb21Vbml2ZXJzYWwoaW50NjRfdCB1bml2ZXJzYWwpIHsKICAgcmV0dXJu
IGFic2w6OlVuaXZlcnNhbEVwb2NoKCkgKyAxMDAgKiBhYnNsOjpOYW5vc2Vjb25kcyh1bml2ZXJz
YWwpOwogfQogCi0vLwotLy8gQ29udmVyc2lvbiB0byBvdGhlciB0aW1lIHR5cGVzLgotLy8KLQog
aW50NjRfdCBUb1VuaXhOYW5vcyhUaW1lIHQpIHsKICAgaWYgKHRpbWVfaW50ZXJuYWw6OkdldFJl
cEhpKHRpbWVfaW50ZXJuYWw6OlRvVW5peER1cmF0aW9uKHQpKSA+PSAwICYmCiAgICAgICB0aW1l
X2ludGVybmFsOjpHZXRSZXBIaSh0aW1lX2ludGVybmFsOjpUb1VuaXhEdXJhdGlvbih0KSkgPj4g
MzMgPT0gMCkgewpAQCAtMzIxLDYgKzI3NCwyMyBAQCBpbnQ2NF90IFRvVW5peFNlY29uZHMoVGlt
ZSB0KSB7CiAKIHRpbWVfdCBUb1RpbWVUKFRpbWUgdCkgeyByZXR1cm4gYWJzbDo6VG9UaW1lc3Bl
Yyh0KS50dl9zZWM7IH0KIAorZG91YmxlIFRvVURhdGUoVGltZSB0KSB7CisgIHJldHVybiBhYnNs
OjpGRGl2RHVyYXRpb24odGltZV9pbnRlcm5hbDo6VG9Vbml4RHVyYXRpb24odCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWJzbDo6TWlsbGlzZWNvbmRzKDEpKTsKK30KKworaW50NjRf
dCBUb1VuaXZlcnNhbChhYnNsOjpUaW1lIHQpIHsKKyAgcmV0dXJuIGFic2w6OkZsb29yVG9Vbml0
KHQgLSBhYnNsOjpVbml2ZXJzYWxFcG9jaCgpLCBhYnNsOjpOYW5vc2Vjb25kcygxMDApKTsKK30K
KworYWJzbDo6VGltZSBUaW1lRnJvbVRpbWVzcGVjKHRpbWVzcGVjIHRzKSB7CisgIHJldHVybiB0
aW1lX2ludGVybmFsOjpGcm9tVW5peER1cmF0aW9uKGFic2w6OkR1cmF0aW9uRnJvbVRpbWVzcGVj
KHRzKSk7Cit9CisKK2Fic2w6OlRpbWUgVGltZUZyb21UaW1ldmFsKHRpbWV2YWwgdHYpIHsKKyAg
cmV0dXJuIHRpbWVfaW50ZXJuYWw6OkZyb21Vbml4RHVyYXRpb24oYWJzbDo6RHVyYXRpb25Gcm9t
VGltZXZhbCh0dikpOworfQorCiB0aW1lc3BlYyBUb1RpbWVzcGVjKFRpbWUgdCkgewogICB0aW1l
c3BlYyB0czsKICAgYWJzbDo6RHVyYXRpb24gZCA9IHRpbWVfaW50ZXJuYWw6OlRvVW5peER1cmF0
aW9uKHQpOwpAQCAtMzU5LDE1ICszMjksNiBAQCB0aW1ldmFsIFRvVGltZXZhbChUaW1lIHQpIHsK
ICAgcmV0dXJuIHR2OwogfQogCi1kb3VibGUgVG9VRGF0ZShUaW1lIHQpIHsKLSAgcmV0dXJuIGFi
c2w6OkZEaXZEdXJhdGlvbih0aW1lX2ludGVybmFsOjpUb1VuaXhEdXJhdGlvbih0KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpNaWxsaXNlY29uZHMoMSkpOwotfQotCi1pbnQ2
NF90IFRvVW5pdmVyc2FsKGFic2w6OlRpbWUgdCkgewotICByZXR1cm4gYWJzbDo6Rmxvb3JUb1Vu
aXQodCAtIGFic2w6OlVuaXZlcnNhbEVwb2NoKCksIGFic2w6Ok5hbm9zZWNvbmRzKDEwMCkpOwot
fQotCiBUaW1lIEZyb21DaHJvbm8oY29uc3Qgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCYgdHApIHsKICAgcmV0dXJuIHRpbWVfaW50ZXJuYWw6OkZyb21Vbml4RHVyYXRpb24o
dGltZV9pbnRlcm5hbDo6RnJvbUNocm9ubygKICAgICAgIHRwIC0gc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6ZnJvbV90aW1lX3QoMCkpKTsKQEAgLTM4MSw0ICszNDIsMTQ4IEBAIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgVG9DaHJvbm9UaW1lKGFic2w6OlRpbWUgdCkg
ewogICAgICAgICAgdGltZV9pbnRlcm5hbDo6VG9DaHJvbm9EdXJhdGlvbjxEPihkKTsKIH0KIAor
Ly8KKy8vIFRpbWVab25lCisvLworCithYnNsOjpUaW1lWm9uZTo6Q2l2aWxJbmZvIFRpbWVab25l
OjpBdChUaW1lIHQpIGNvbnN0IHsKKyAgaWYgKHQgPT0gYWJzbDo6SW5maW5pdGVGdXR1cmUoKSkg
cmV0dXJuIEluZmluaXRlRnV0dXJlQ2l2aWxJbmZvKCk7CisgIGlmICh0ID09IGFic2w6OkluZmlu
aXRlUGFzdCgpKSByZXR1cm4gSW5maW5pdGVQYXN0Q2l2aWxJbmZvKCk7CisKKyAgY29uc3QgYXV0
byB1ZCA9IHRpbWVfaW50ZXJuYWw6OlRvVW5peER1cmF0aW9uKHQpOworICBjb25zdCBhdXRvIHRw
ID0gdW5peF9lcG9jaCgpICsgY2N0ejo6c2Vjb25kcyh0aW1lX2ludGVybmFsOjpHZXRSZXBIaSh1
ZCkpOworICBjb25zdCBhdXRvIGFsID0gY3pfLmxvb2t1cCh0cCk7CisKKyAgVGltZVpvbmU6OkNp
dmlsSW5mbyBjaTsKKyAgY2kuY3MgPSBDaXZpbFNlY29uZChhbC5jcyk7CisgIGNpLnN1YnNlY29u
ZCA9IHRpbWVfaW50ZXJuYWw6Ok1ha2VEdXJhdGlvbigwLCB0aW1lX2ludGVybmFsOjpHZXRSZXBM
byh1ZCkpOworICBjaS5vZmZzZXQgPSBhbC5vZmZzZXQ7CisgIGNpLmlzX2RzdCA9IGFsLmlzX2Rz
dDsKKyAgY2kuem9uZV9hYmJyID0gYWwuYWJicjsKKyAgcmV0dXJuIGNpOworfQorCithYnNsOjpU
aW1lWm9uZTo6VGltZUluZm8gVGltZVpvbmU6OkF0KENpdmlsU2Vjb25kIGN0KSBjb25zdCB7Cisg
IGNvbnN0IGNjdHo6OmNpdmlsX3NlY29uZCBjcyhjdCk7CisgIGNvbnN0IGF1dG8gY2wgPSBjel8u
bG9va3VwKGNzKTsKKworICBUaW1lWm9uZTo6VGltZUluZm8gdGk7CisgIHN3aXRjaCAoY2wua2lu
ZCkgeworICAgIGNhc2UgY2N0ejo6dGltZV96b25lOjpjaXZpbF9sb29rdXA6OlVOSVFVRToKKyAg
ICAgIHRpLmtpbmQgPSBUaW1lWm9uZTo6VGltZUluZm86OlVOSVFVRTsKKyAgICAgIGJyZWFrOwor
ICAgIGNhc2UgY2N0ejo6dGltZV96b25lOjpjaXZpbF9sb29rdXA6OlNLSVBQRUQ6CisgICAgICB0
aS5raW5kID0gVGltZVpvbmU6OlRpbWVJbmZvOjpTS0lQUEVEOworICAgICAgYnJlYWs7CisgICAg
Y2FzZSBjY3R6Ojp0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6UkVQRUFURUQ6CisgICAgICB0aS5r
aW5kID0gVGltZVpvbmU6OlRpbWVJbmZvOjpSRVBFQVRFRDsKKyAgICAgIGJyZWFrOworICB9Cisg
IHRpLnByZSA9IE1ha2VUaW1lV2l0aE92ZXJmbG93KGNsLnByZSwgY3MsIGN6Xyk7CisgIHRpLnRy
YW5zID0gTWFrZVRpbWVXaXRoT3ZlcmZsb3coY2wudHJhbnMsIGNzLCBjel8pOworICB0aS5wb3N0
ID0gTWFrZVRpbWVXaXRoT3ZlcmZsb3coY2wucG9zdCwgY3MsIGN6Xyk7CisgIHJldHVybiB0aTsK
K30KKworYm9vbCBUaW1lWm9uZTo6TmV4dFRyYW5zaXRpb24oVGltZSB0LCBDaXZpbFRyYW5zaXRp
b24qIHRyYW5zKSBjb25zdCB7CisgIHJldHVybiBGaW5kVHJhbnNpdGlvbihjel8sICZjY3R6Ojp0
aW1lX3pvbmU6Om5leHRfdHJhbnNpdGlvbiwgdCwgdHJhbnMpOworfQorCitib29sIFRpbWVab25l
OjpQcmV2VHJhbnNpdGlvbihUaW1lIHQsIENpdmlsVHJhbnNpdGlvbiogdHJhbnMpIGNvbnN0IHsK
KyAgcmV0dXJuIEZpbmRUcmFuc2l0aW9uKGN6XywgJmNjdHo6OnRpbWVfem9uZTo6cHJldl90cmFu
c2l0aW9uLCB0LCB0cmFucyk7Cit9CisKKy8vCisvLyBDb252ZXJzaW9ucyBpbnZvbHZpbmcgdGlt
ZSB6b25lcy4KKy8vCisKK2Fic2w6OlRpbWVDb252ZXJzaW9uIENvbnZlcnREYXRlVGltZShpbnQ2
NF90IHllYXIsIGludCBtb24sIGludCBkYXksIGludCBob3VyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBtaW4sIGludCBzZWMsIFRpbWVab25lIHR6KSB7CisgIC8v
IEF2b2lkcyB5ZWFycyB0aGF0IGFyZSB0b28gZXh0cmVtZSBmb3IgQ2l2aWxTZWNvbmQgdG8gbm9y
bWFsaXplLgorICBpZiAoeWVhciA+IDMwMDAwMDAwMDAwMCkgcmV0dXJuIEluZmluaXRlRnV0dXJl
VGltZUNvbnZlcnNpb24oKTsKKyAgaWYgKHllYXIgPCAtMzAwMDAwMDAwMDAwKSByZXR1cm4gSW5m
aW5pdGVQYXN0VGltZUNvbnZlcnNpb24oKTsKKworICBjb25zdCBDaXZpbFNlY29uZCBjcyh5ZWFy
LCBtb24sIGRheSwgaG91ciwgbWluLCBzZWMpOworICBjb25zdCBhdXRvIHRpID0gdHouQXQoY3Mp
OworCisgIFRpbWVDb252ZXJzaW9uIHRjOworICB0Yy5wcmUgPSB0aS5wcmU7CisgIHRjLnRyYW5z
ID0gdGkudHJhbnM7CisgIHRjLnBvc3QgPSB0aS5wb3N0OworICBzd2l0Y2ggKHRpLmtpbmQpIHsK
KyAgICBjYXNlIFRpbWVab25lOjpUaW1lSW5mbzo6VU5JUVVFOgorICAgICAgdGMua2luZCA9IFRp
bWVDb252ZXJzaW9uOjpVTklRVUU7CisgICAgICBicmVhazsKKyAgICBjYXNlIFRpbWVab25lOjpU
aW1lSW5mbzo6U0tJUFBFRDoKKyAgICAgIHRjLmtpbmQgPSBUaW1lQ29udmVyc2lvbjo6U0tJUFBF
RDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgVGltZVpvbmU6OlRpbWVJbmZvOjpSRVBFQVRFRDoK
KyAgICAgIHRjLmtpbmQgPSBUaW1lQ29udmVyc2lvbjo6UkVQRUFURUQ7CisgICAgICBicmVhazsK
KyAgfQorICB0Yy5ub3JtYWxpemVkID0gZmFsc2U7CisgIGlmICh5ZWFyICE9IGNzLnllYXIoKSB8
fCBtb24gIT0gY3MubW9udGgoKSB8fCBkYXkgIT0gY3MuZGF5KCkgfHwKKyAgICAgIGhvdXIgIT0g
Y3MuaG91cigpIHx8IG1pbiAhPSBjcy5taW51dGUoKSB8fCBzZWMgIT0gY3Muc2Vjb25kKCkpIHsK
KyAgICB0Yy5ub3JtYWxpemVkID0gdHJ1ZTsKKyAgfQorICByZXR1cm4gdGM7Cit9CisKK2Fic2w6
OlRpbWUgRnJvbVRNKGNvbnN0IHN0cnVjdCB0bSYgdG0sIGFic2w6OlRpbWVab25lIHR6KSB7Cisg
IGNvbnN0IENpdmlsU2Vjb25kIGNzKHRtLnRtX3llYXIgKyAxOTAwLCB0bS50bV9tb24gKyAxLCB0
bS50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICB0bS50bV9ob3VyLCB0bS50bV9taW4s
IHRtLnRtX3NlYyk7CisgIGNvbnN0IGF1dG8gdGkgPSB0ei5BdChjcyk7CisgIHJldHVybiB0bS50
bV9pc2RzdCA9PSAwID8gdGkucG9zdCA6IHRpLnByZTsKK30KKworc3RydWN0IHRtIFRvVE0oYWJz
bDo6VGltZSB0LCBhYnNsOjpUaW1lWm9uZSB0eikgeworICBzdHJ1Y3QgdG0gdG0gPSB7fTsKKwor
ICBjb25zdCBhdXRvIGNpID0gdHouQXQodCk7CisgIGNvbnN0IGF1dG8mIGNzID0gY2kuY3M7Cisg
IHRtLnRtX3NlYyA9IGNzLnNlY29uZCgpOworICB0bS50bV9taW4gPSBjcy5taW51dGUoKTsKKyAg
dG0udG1faG91ciA9IGNzLmhvdXIoKTsKKyAgdG0udG1fbWRheSA9IGNzLmRheSgpOworICB0bS50
bV9tb24gPSBjcy5tb250aCgpIC0gMTsKKworICAvLyBTYXR1cmF0ZXMgdG0udG1feWVhciBpbiBj
YXNlcyBvZiBvdmVyL3VuZGVyZmxvdywgYWNjb3VudGluZyBmb3IgdGhlIGZhY3QKKyAgLy8gdGhh
dCB0bS50bV95ZWFyIGlzIHllYXJzIHNpbmNlIDE5MDAuCisgIGlmIChjcy55ZWFyKCkgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpICsgMTkwMCkgeworICAgIHRtLnRtX3llYXIgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOworICB9IGVsc2UgaWYgKGNzLnllYXIoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpIHsKKyAgICB0bS50bV95ZWFyID0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSAtIDE5MDA7CisgIH0gZWxzZSB7CisgICAgdG0u
dG1feWVhciA9IHN0YXRpY19jYXN0PGludD4oY3MueWVhcigpIC0gMTkwMCk7CisgIH0KKworICBz
d2l0Y2ggKEdldFdlZWtkYXkoY3MpKSB7CisgICAgY2FzZSBXZWVrZGF5OjpzdW5kYXk6CisgICAg
ICB0bS50bV93ZGF5ID0gMDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vla2RheTo6bW9uZGF5
OgorICAgICAgdG0udG1fd2RheSA9IDE7CisgICAgICBicmVhazsKKyAgICBjYXNlIFdlZWtkYXk6
OnR1ZXNkYXk6CisgICAgICB0bS50bV93ZGF5ID0gMjsKKyAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2Vla2RheTo6d2VkbmVzZGF5OgorICAgICAgdG0udG1fd2RheSA9IDM7CisgICAgICBicmVhazsK
KyAgICBjYXNlIFdlZWtkYXk6OnRodXJzZGF5OgorICAgICAgdG0udG1fd2RheSA9IDQ7CisgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlZWtkYXk6OmZyaWRheToKKyAgICAgIHRtLnRtX3dkYXkgPSA1
OworICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWVrZGF5OjpzYXR1cmRheToKKyAgICAgIHRtLnRt
X3dkYXkgPSA2OworICAgICAgYnJlYWs7CisgIH0KKyAgdG0udG1feWRheSA9IEdldFllYXJEYXko
Y3MpIC0gMTsKKyAgdG0udG1faXNkc3QgPSBjaS5pc19kc3QgPyAxIDogMDsKKworICByZXR1cm4g
dG07Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3Rp
bWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvdGltZS5oCmluZGV4IDUwYmY5NzFkZjBhLi5jZWJiYzkxYjhmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lLmgKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI1LDE4ICsyNSwyOSBA
QAogLy8gICogYGFic2w6OlRpbWVab25lYCBkZWZpbmVzIGdlb3BvbGl0aWNhbCB0aW1lIHpvbmUg
cmVnaW9ucyAoYXMgY29sbGVjdGVkCiAvLyAgICAgd2l0aGluIHRoZSBJQU5BIFRpbWUgWm9uZSBk
YXRhYmFzZSAoaHR0cHM6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcykpLgogLy8KKy8vIE5vdGU6
IEFic29sdXRlIHRpbWVzIGFyZSBkaXN0aW5jdCBmcm9tIGNpdmlsIHRpbWVzLCB3aGljaCByZWZl
ciB0byB0aGUKKy8vIGh1bWFuLXNjYWxlIHRpbWUgY29tbW9ubHkgcmVwcmVzZW50ZWQgYnkgYFlZ
WVktTU0tREQgaGg6bW06c3NgLiBUaGUgbWFwcGluZworLy8gYmV0d2VlbiBhYnNvbHV0ZSBhbmQg
Y2l2aWwgdGltZXMgY2FuIGJlIHNwZWNpZmllZCBieSB1c2Ugb2YgdGltZSB6b25lcworLy8gKGBh
YnNsOjpUaW1lWm9uZWAgd2l0aGluIHRoaXMgQVBJKS4gVGhhdCBpczoKKy8vCisvLyAgIENpdmls
IFRpbWUgPSBGKEFic29sdXRlIFRpbWUsIFRpbWUgWm9uZSkKKy8vICAgQWJzb2x1dGUgVGltZSA9
IEcoQ2l2aWwgVGltZSwgVGltZSBab25lKQorLy8KKy8vIFNlZSBjaXZpbF90aW1lLmggZm9yIGFi
c3RyYWN0aW9ucyByZWxhdGVkIHRvIGNvbnN0cnVjdGluZyBhbmQgbWFuaXB1bGF0aW5nCisvLyBj
aXZpbCB0aW1lLgogLy8KIC8vIEV4YW1wbGU6CiAvLwogLy8gICBhYnNsOjpUaW1lWm9uZSBueWM7
Ci0vLwogLy8gICAvLyBMb2FkVGltZVpvbmUoKSBtYXkgZmFpbCBzbyBpdCdzIGFsd2F5cyBiZXR0
ZXIgdG8gY2hlY2sgZm9yIHN1Y2Nlc3MuCiAvLyAgIGlmICghYWJzbDo6TG9hZFRpbWVab25lKCJB
bWVyaWNhL05ld19Zb3JrIiwgJm55YykpIHsKIC8vICAgICAgLy8gaGFuZGxlIGVycm9yIGNhc2UK
IC8vICAgfQogLy8KIC8vICAgLy8gTXkgZmxpZ2h0IGxlYXZlcyBOWUMgb24gSmFuIDIsIDIwMTcg
YXQgMDM6MDQ6MDUKLS8vICAgYWJzbDo6VGltZSB0YWtlb2ZmID0gYWJzbDo6RnJvbURhdGVUaW1l
KDIwMTcsIDEsIDIsIDMsIDQsIDUsIG55Yyk7CisvLyAgIGFic2w6OkNpdmlsU2Vjb25kIGNzKDIw
MTcsIDEsIDIsIDMsIDQsIDUpOworLy8gICBhYnNsOjpUaW1lIHRha2VvZmYgPSBhYnNsOjpGcm9t
Q2l2aWwoY3MsIG55Yyk7CisvLwogLy8gICBhYnNsOjpEdXJhdGlvbiBmbGlnaHRfZHVyYXRpb24g
PSBhYnNsOjpIb3VycygyMSkgKyBhYnNsOjpNaW51dGVzKDM1KTsKIC8vICAgYWJzbDo6VGltZSBs
YW5kaW5nID0gdGFrZW9mZiArIGZsaWdodF9kdXJhdGlvbjsKIC8vCkBAIC00NywxNiArNTgsMjQg
QEAKIC8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OkZvcm1hdFRpbWUoCiAvLyAgICAgICAiTXkg
ZmxpZ2h0IHdpbGwgbGFuZCBpbiBTeWRuZXkgb24gJVktJW0tJWQgYXQgJUg6JU06JVMiLAogLy8g
ICAgICAgbGFuZGluZywgc3lkKTsKLS8vCisKICNpZm5kZWYgQUJTTF9USU1FX1RJTUVfSF8KICNk
ZWZpbmUgQUJTTF9USU1FX1RJTUVfSF8KIAogI2lmICFkZWZpbmVkKF9NU0NfVkVSKQogI2luY2x1
ZGUgPHN5cy90aW1lLmg+CiAjZWxzZQotI2luY2x1ZGUgPHdpbnNvY2syLmg+CisvLyBXZSBkb24n
dCBpbmNsdWRlIGB3aW5zb2NrMi5oYCBiZWNhdXNlIGl0IGRyYWdzIGluIGB3aW5kb3dzLmhgIGFu
ZCBmcmllbmRzLAorLy8gYW5kIHRoZXkgZGVmaW5lIGNvbmZsaWN0aW5nIG1hY3JvcyBsaWtlIE9Q
QVFVRSwgRVJST1IsIGFuZCBtb3JlLiBUaGlzIGhhcyB0aGUKKy8vIHBvdGVudGlhbCB0byBicmVh
ayBBYnNlaWwgdXNlcnMuCisvLworLy8gSW5zdGVhZCB3ZSBvbmx5IGZvcndhcmQgZGVjbGFyZSBg
dGltZXZhbGAgYW5kIHJlcXVpcmUgV2luZG93cyB1c2VycyBpbmNsdWRlCisvLyBgd2luc29jazIu
aGAgdGhlbXNlbHZlcy4gVGhpcyBpcyBib3RoIGluY29uc2lzdGVudCBhbmQgdHJvdWJsZXNvbWUs
IGJ1dCBzbyBpcworLy8gaW5jbHVkaW5nICd3aW5kb3dzLmgnIHNvIHdlIGFyZSBwaWNraW5nIHRo
ZSBsZXNzZXIgb2YgdHdvIGV2aWxzIGhlcmUuCitzdHJ1Y3QgdGltZXZhbDsKICNlbmRpZgogI2lu
Y2x1ZGUgPGNocm9ubz4gIC8vIE5PTElOVChidWlsZC9jKysxMSkKKyNpbmNsdWRlIDxjbWF0aD4K
ICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGN0aW1lPgogI2luY2x1ZGUgPG9zdHJlYW0+
CkBAIC02NCw4ICs4Myw4IEBACiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dXRp
bGl0eT4KIAotI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiICAvLyBOZWVkZWQgZm9yIHN0cmlu
ZyB2cyBzdGQ6OnN0cmluZwogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgor
I2luY2x1ZGUgImFic2wvdGltZS9jaXZpbF90aW1lLmgiCiAjaW5jbHVkZSAiYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5oIgogCiBuYW1lc3BhY2UgYWJzbCB7
CkBAIC0xNDAsNiArMTU5LDE2IEBAIGNsYXNzIER1cmF0aW9uIHsKICAgLy8gVmFsdWUgc2VtYW50
aWNzLgogICBjb25zdGV4cHIgRHVyYXRpb24oKSA6IHJlcF9oaV8oMCksIHJlcF9sb18oMCkge30g
IC8vIHplcm8tbGVuZ3RoIGR1cmF0aW9uCiAKKyAgLy8gQ29weWFibGUuCisjaWYgIWRlZmluZWQo
X19jbGFuZ19fKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8IDE5MTAKKyAgLy8g
RXhwbGljaXRseSBkZWZpbmluZyB0aGUgY29uc3RleHByIGNvcHkgY29uc3RydWN0b3IgYXZvaWRz
IGFuIE1TVkMgYnVnLgorICBjb25zdGV4cHIgRHVyYXRpb24oY29uc3QgRHVyYXRpb24mIGQpCisg
ICAgICA6IHJlcF9oaV8oZC5yZXBfaGlfKSwgcmVwX2xvXyhkLnJlcF9sb18pIHt9CisjZWxzZQor
ICBjb25zdGV4cHIgRHVyYXRpb24oY29uc3QgRHVyYXRpb24mIGQpID0gZGVmYXVsdDsKKyNlbmRp
ZgorICBEdXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IER1cmF0aW9uJiBkKSA9IGRlZmF1bHQ7CisK
ICAgLy8gQ29tcG91bmQgYXNzaWdubWVudCBvcGVyYXRvcnMuCiAgIER1cmF0aW9uJiBvcGVyYXRv
cis9KER1cmF0aW9uIGQpOwogICBEdXJhdGlvbiYgb3BlcmF0b3ItPShEdXJhdGlvbiBkKTsKQEAg
LTE1MCw2ICsxNzksNyBAQCBjbGFzcyBEdXJhdGlvbiB7CiAgIER1cmF0aW9uJiBvcGVyYXRvciU9
KER1cmF0aW9uIHJocyk7CiAKICAgLy8gT3ZlcmxvYWRzIHRoYXQgZm9yd2FyZCB0byBlaXRoZXIg
dGhlIGludDY0X3Qgb3IgZG91YmxlIG92ZXJsb2FkcyBhYm92ZS4KKyAgLy8gSW50ZWdlciBvcGVy
YW5kcyBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgaW50NjRfdC4KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIER1cmF0aW9uJiBvcGVyYXRvcio9KFQgcikgewogICAgIGludDY0X3QgeCA9IHI7
CkBAIC0xOTIsNiArMjIyLDcgQEAgaW5saW5lIER1cmF0aW9uIG9wZXJhdG9yKyhEdXJhdGlvbiBs
aHMsIER1cmF0aW9uIHJocykgeyByZXR1cm4gbGhzICs9IHJoczsgfQogaW5saW5lIER1cmF0aW9u
IG9wZXJhdG9yLShEdXJhdGlvbiBsaHMsIER1cmF0aW9uIHJocykgeyByZXR1cm4gbGhzIC09IHJo
czsgfQogCiAvLyBNdWx0aXBsaWNhdGl2ZSBPcGVyYXRvcnMKKy8vIEludGVnZXIgb3BlcmFuZHMg
bXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIGludDY0X3QuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
IER1cmF0aW9uIG9wZXJhdG9yKihEdXJhdGlvbiBsaHMsIFQgcmhzKSB7CiAgIHJldHVybiBsaHMg
Kj0gcmhzOwpAQCAtMzQ2LDEzICszNzcsMTQgQEAgY29uc3RleHByIER1cmF0aW9uIEluZmluaXRl
RHVyYXRpb24oKTsKIC8vIEhvdXJzKCkKIC8vCiAvLyBGYWN0b3J5IGZ1bmN0aW9ucyBmb3IgY29u
c3RydWN0aW5nIGBEdXJhdGlvbmAgdmFsdWVzIGZyb20gYW4gaW50ZWdyYWwgbnVtYmVyCi0vLyBv
ZiB0aGUgdW5pdCBpbmRpY2F0ZWQgYnkgdGhlIGZhY3RvcnkgZnVuY3Rpb24ncyBuYW1lLgotLy8K
LS8vIE5vdGU6IG5vICJEYXlzKCkiIGZhY3RvcnkgZnVuY3Rpb24gZXhpc3RzIGJlY2F1c2UgImEg
ZGF5IiBpcyBhbWJpZ3VvdXMuIENpdmlsCi0vLyBkYXlzIGFyZSBub3QgYWx3YXlzIDI0IGhvdXJz
IGxvbmcsIGFuZCBhIDI0LWhvdXIgZHVyYXRpb24gb2Z0ZW4gZG9lcyBub3QKLS8vIGNvcnJlc3Bv
bmQgd2l0aCBhIGNpdmlsIGRheS4gSWYgYSAyNC1ob3VyIGR1cmF0aW9uIGlzIG5lZWRlZCwgdXNl
Ci0vLyBgYWJzbDo6SG91cnMoMjQpYC4KKy8vIG9mIHRoZSB1bml0IGluZGljYXRlZCBieSB0aGUg
ZmFjdG9yeSBmdW5jdGlvbidzIG5hbWUuIFRoZSBudW1iZXIgbXVzdCBiZQorLy8gcmVwcmVzZW50
YWJsZSBhcyBpbnQ2NF90LgogLy8KKy8vIE5PVEU6IG5vICJEYXlzKCkiIGZhY3RvcnkgZnVuY3Rp
b24gZXhpc3RzIGJlY2F1c2UgImEgZGF5IiBpcyBhbWJpZ3VvdXMuCisvLyBDaXZpbCBkYXlzIGFy
ZSBub3QgYWx3YXlzIDI0IGhvdXJzIGxvbmcsIGFuZCBhIDI0LWhvdXIgZHVyYXRpb24gb2Z0ZW4g
ZG9lcworLy8gbm90IGNvcnJlc3BvbmQgd2l0aCBhIGNpdmlsIGRheS4gSWYgYSAyNC1ob3VyIGR1
cmF0aW9uIGlzIG5lZWRlZCwgdXNlCisvLyBgYWJzbDo6SG91cnMoMjQpYC4gSWYgeW91IGFjdHVh
bGx5IHdhbnQgYSBjaXZpbCBkYXksIHVzZSBhYnNsOjpDaXZpbERheQorLy8gZnJvbSBjaXZpbF90
aW1lLmguCiAvLwogLy8gRXhhbXBsZToKIC8vCkBAIC0zNzEsNiArNDAzLDcgQEAgY29uc3RleHBy
IER1cmF0aW9uIEhvdXJzKGludDY0X3Qgbik7CiAvLyBmYWN0b3JpZXMsIHdoaWNoIHNob3VsZCBi
ZSBwcmVmZXJyZWQuCiAvLwogLy8gRXhhbXBsZToKKy8vCiAvLyAgIGF1dG8gYSA9IGFic2w6OlNl
Y29uZHMoMS41KTsgICAgICAgIC8vIE9LCiAvLyAgIGF1dG8gYiA9IGFic2w6Ok1pbGxpc2Vjb25k
cygxNTAwKTsgIC8vIEJFVFRFUgogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHRpbWVfaW50ZXJuYWw6
OkVuYWJsZUlmRmxvYXQ8VD4gPSAwPgpAQCAtMzg3LDExICs0MjAsMTMgQEAgRHVyYXRpb24gTWls
bGlzZWNvbmRzKFQgbikgewogfQogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHRpbWVfaW50ZXJuYWw6
OkVuYWJsZUlmRmxvYXQ8VD4gPSAwPgogRHVyYXRpb24gU2Vjb25kcyhUIG4pIHsKLSAgaWYgKG4g
Pj0gMCkgewotICAgIGlmIChuID49IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgp
KSByZXR1cm4gSW5maW5pdGVEdXJhdGlvbigpOworICBpZiAobiA+PSAwKSB7ICAvLyBOb3RlOiBg
TmFOID49IDBgIGlzIGZhbHNlLgorICAgIGlmIChuID49IChzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptYXgpKCkpIHJldHVybiBJbmZpbml0ZUR1cmF0aW9uKCk7CiAgICAgcmV0dXJuIHRp
bWVfaW50ZXJuYWw6Ok1ha2VQb3NEb3VibGVEdXJhdGlvbihuKTsKICAgfSBlbHNlIHsKLSAgICBp
ZiAobiA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkgcmV0dXJuIC1JbmZp
bml0ZUR1cmF0aW9uKCk7CisgICAgaWYgKHN0ZDo6aXNuYW4obikpCisgICAgICByZXR1cm4gc3Rk
OjpzaWduYml0KG4pID8gLUluZmluaXRlRHVyYXRpb24oKSA6IEluZmluaXRlRHVyYXRpb24oKTsK
KyAgICBpZiAobiA8PSAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKSgpKSByZXR1
cm4gLUluZmluaXRlRHVyYXRpb24oKTsKICAgICByZXR1cm4gLXRpbWVfaW50ZXJuYWw6Ok1ha2VQ
b3NEb3VibGVEdXJhdGlvbigtbik7CiAgIH0KIH0KQEAgLTU0MywxMCArNTc4LDkgQEAgc3RkOjpz
dHJpbmcgVW5wYXJzZUZsYWcoRHVyYXRpb24gZCk7CiAvLyBUaGUgYGFic2w6OlRpbWVgIGNsYXNz
IHJlcHJlc2VudHMgYW4gaW5zdGFudCBpbiB0aW1lIGFzIGEgY291bnQgb2YgY2xvY2sKIC8vIHRp
Y2tzIG9mIHNvbWUgZ3JhbnVsYXJpdHkgKHJlc29sdXRpb24pIGZyb20gc29tZSBzdGFydGluZyBw
b2ludCAoZXBvY2gpLgogLy8KLS8vCiAvLyBgYWJzbDo6VGltZWAgdXNlcyBhIHJlc29sdXRpb24g
dGhhdCBpcyBoaWdoIGVub3VnaCB0byBhdm9pZCBsb3NzIGluCiAvLyBwcmVjaXNpb24sIGFuZCBh
IHJhbmdlIHRoYXQgaXMgd2lkZSBlbm91Z2ggdG8gYXZvaWQgb3ZlcmZsb3csIHdoZW4KLS8vIGNv
bnZlcnRpbmcgYmV0d2VlbiB0aWNrIGNvdW50cyBpbiBtb3N0IEdvb2dsZSB0aW1lIHNjYWxlcyAo
aS5lLiwgcHJlY2lzaW9uCisvLyBjb252ZXJ0aW5nIGJldHdlZW4gdGljayBjb3VudHMgaW4gbW9z
dCBHb29nbGUgdGltZSBzY2FsZXMgKGkuZS4sIHJlc29sdXRpb24KIC8vIG9mIGF0IGxlYXN0IG9u
ZSBuYW5vc2Vjb25kLCBhbmQgcmFuZ2UgKy8tMTAwIGJpbGxpb24geWVhcnMpLiAgQ29udmVyc2lv
bnMKIC8vIGJldHdlZW4gdGhlIHRpbWUgc2NhbGVzIGFyZSBwZXJmb3JtZWQgYnkgdHJ1bmNhdGlu
ZyAodG93YXJkcyBuZWdhdGl2ZQogLy8gaW5maW5pdHkpIHRvIHRoZSBuZWFyZXN0IHJlcHJlc2Vu
dGFibGUgcG9pbnQuCkBAIC01NTYsNyArNTkwLDYgQEAgc3RkOjpzdHJpbmcgVW5wYXJzZUZsYWco
RHVyYXRpb24gZCk7CiAvLyAgIGFic2w6OlRpbWUgdDEgPSAuLi47CiAvLyAgIGFic2w6OlRpbWUg
dDIgPSB0MSArIGFic2w6Ok1pbnV0ZXMoMik7CiAvLyAgIGFic2w6OkR1cmF0aW9uIGQgPSB0MiAt
IHQxOyAgLy8gPT0gYWJzbDo6TWludXRlcygyKQotLy8gICBhYnNsOjpUaW1lOjpCcmVha2Rvd24g
YmQgPSB0MS5JbihhYnNsOjpMb2NhbFRpbWVab25lKCkpOwogLy8KIGNsYXNzIFRpbWUgewogIHB1
YmxpYzoKQEAgLTU3MSw3ICs2MDQsMTEgQEAgY2xhc3MgVGltZSB7CiAgIC8vICAgYWJzbDo6VGlt
ZSB0ID0gYWJzbDo6Tm93KCk7CiAgIC8vICAgYWJzbDo6VGltZSB0ID0gYWJzbDo6VGltZUZyb21U
aW1ldmFsKHR2KTsKICAgLy8gICBhYnNsOjpUaW1lIHQgPSBhYnNsOjpJbmZpbml0ZVBhc3QoKTsK
LSAgY29uc3RleHByIFRpbWUoKSB7fQorICBjb25zdGV4cHIgVGltZSgpID0gZGVmYXVsdDsKKwor
ICAvLyBDb3B5YWJsZS4KKyAgY29uc3RleHByIFRpbWUoY29uc3QgVGltZSYgdCkgPSBkZWZhdWx0
OworICBUaW1lJiBvcGVyYXRvcj0oY29uc3QgVGltZSYgdCkgPSBkZWZhdWx0OwogCiAgIC8vIEFz
c2lnbm1lbnQgb3BlcmF0b3JzLgogICBUaW1lJiBvcGVyYXRvcis9KER1cmF0aW9uIGQpIHsKQEAg
LTU5MCw3ICs2MjcsMTAgQEAgY2xhc3MgVGltZSB7CiAgIC8vIGludGVuZGVkIHRvIHJlcHJlc2Vu
dCBhbiBpbnN0YW50IGluIHRpbWUuIFNvLCByYXRoZXIgdGhhbiBwYXNzaW5nCiAgIC8vIGEgYFRp
bWU6OkJyZWFrZG93bmAgdG8gYSBmdW5jdGlvbiwgcGFzcyBhbiBgYWJzbDo6VGltZWAgYW5kIGFu
CiAgIC8vIGBhYnNsOjpUaW1lWm9uZWAuCi0gIHN0cnVjdCBCcmVha2Rvd24geworICAvLworICAv
LyBEZXByZWNhdGVkLiBVc2UgYGFic2w6OlRpbWVab25lOjpDaXZpbEluZm9gLgorICBzdHJ1Y3QK
KyAgICAgIEJyZWFrZG93biB7CiAgICAgaW50NjRfdCB5ZWFyOyAgICAgICAgICAvLyB5ZWFyIChl
LmcuLCAyMDEzKQogICAgIGludCBtb250aDsgICAgICAgICAgIC8vIG1vbnRoIG9mIHllYXIgWzE6
MTJdCiAgICAgaW50IGRheTsgICAgICAgICAgICAgLy8gZGF5IG9mIG1vbnRoIFsxOjMxXQpAQCAt
NjE0LDYgKzY1NCw4IEBAIGNsYXNzIFRpbWUgewogICAvLyBUaW1lOjpJbigpCiAgIC8vCiAgIC8v
IFJldHVybnMgdGhlIGJyZWFrZG93biBvZiB0aGlzIGluc3RhbnQgaW4gdGhlIGdpdmVuIFRpbWVa
b25lLgorICAvLworICAvLyBEZXByZWNhdGVkLiBVc2UgYGFic2w6OlRpbWVab25lOjpBdChUaW1l
KWAuCiAgIEJyZWFrZG93biBJbihUaW1lWm9uZSB0eikgY29uc3Q7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEg+CkBAIC02NjgsNyArNzEwLDcgQEAgY29uc3RleHByIFRpbWUgVW5pdmVyc2FsRXBv
Y2goKSB7CiAvLyBSZXR1cm5zIGFuIGBhYnNsOjpUaW1lYCB0aGF0IGlzIGluZmluaXRlbHkgZmFy
IGluIHRoZSBmdXR1cmUuCiBjb25zdGV4cHIgVGltZSBJbmZpbml0ZUZ1dHVyZSgpIHsKICAgcmV0
dXJuIFRpbWUoCi0gICAgICB0aW1lX2ludGVybmFsOjpNYWtlRHVyYXRpb24oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWF4KCksIH4wVSkpOworICAgICAgdGltZV9pbnRlcm5hbDo6TWFr
ZUR1cmF0aW9uKChzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgpKCksIH4wVSkpOwog
fQogCiAvLyBJbmZpbml0ZVBhc3QoKQpAQCAtNjc2LDEyOSArNzE4LDkgQEAgY29uc3RleHByIFRp
bWUgSW5maW5pdGVGdXR1cmUoKSB7CiAvLyBSZXR1cm5zIGFuIGBhYnNsOjpUaW1lYCB0aGF0IGlz
IGluZmluaXRlbHkgZmFyIGluIHRoZSBwYXN0LgogY29uc3RleHByIFRpbWUgSW5maW5pdGVQYXN0
KCkgewogICByZXR1cm4gVGltZSgKLSAgICAgIHRpbWVfaW50ZXJuYWw6Ok1ha2VEdXJhdGlvbihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSwgfjBVKSk7CisgICAgICB0aW1lX2lu
dGVybmFsOjpNYWtlRHVyYXRpb24oKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbiko
KSwgfjBVKSk7CiB9CiAKLS8vIFRpbWVDb252ZXJzaW9uCi0vLwotLy8gQW4gYGFic2w6OlRpbWVD
b252ZXJzaW9uYCByZXByZXNlbnRzIHRoZSBjb252ZXJzaW9uIG9mIHllYXIsIG1vbnRoLCBkYXks
Ci0vLyBob3VyLCBtaW51dGUsIGFuZCBzZWNvbmQgdmFsdWVzIChpLmUuLCBhIGNpdmlsIHRpbWUp
LCBpbiBhIHBhcnRpY3VsYXIKLS8vIGBhYnNsOjpUaW1lWm9uZWAsIHRvIGEgdGltZSBpbnN0YW50
IChhbiBhYnNvbHV0ZSB0aW1lKSwgYXMgcmV0dXJuZWQgYnkKLS8vIGBhYnNsOjpDb252ZXJ0RGF0
ZVRpbWUoKWAuIChTdWJzZWNvbmRzIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5LikKLS8vCi0v
LyBJdCBpcyBwb3NzaWJsZSwgdGhvdWdoLCBmb3IgYSBjYWxsZXIgdG8gdHJ5IHRvIGNvbnZlcnQg
dmFsdWVzIHRoYXQKLS8vIGRvIG5vdCByZXByZXNlbnQgYW4gYWN0dWFsIG9yIHVuaXF1ZSBpbnN0
YW50IGluIHRpbWUgKGR1ZSB0byBhIHNoaWZ0Ci0vLyBpbiBVVEMgb2Zmc2V0IGluIHRoZSBgYWJz
bDo6VGltZVpvbmVgLCB3aGljaCByZXN1bHRzIGluIGEgZGlzY29udGludWl0eSBpbgotLy8gdGhl
IGNpdmlsLXRpbWUgY29tcG9uZW50cykuIEZvciBleGFtcGxlLCBhIGRheWxpZ2h0LXNhdmluZy10
aW1lCi0vLyB0cmFuc2l0aW9uIHNraXBzIG9yIHJlcGVhdHMgY2l2aWwgdGltZXMtLS1pbiB0aGUg
VW5pdGVkIFN0YXRlcywgTWFyY2gKLS8vIDEzLCAyMDExIDAyOjE1IG5ldmVyIG9jY3VycmVkLCB3
aGlsZSBOb3ZlbWJlciA2LCAyMDExIDAxOjE1IG9jY3VycmVkCi0vLyB0d2ljZS0tLXNvIHJlcXVl
c3RzIGZvciBzdWNoIHRpbWVzIGFyZSBub3Qgd2VsbC1kZWZpbmVkLgotLy8KLS8vIFRvIGFjY291
bnQgZm9yIHRoZXNlIHBvc3NpYmlsaXRpZXMsIGBhYnNsOjpUaW1lQ29udmVyc2lvbmAgaXMgcmlj
aGVyCi0vLyB0aGFuIGp1c3QgYSBzaW5nbGUgYGFic2w6OlRpbWVgLiBXaGVuIHRoZSBjaXZpbCB0
aW1lIGlzIHNraXBwZWQgb3IKLS8vIHJlcGVhdGVkLCBgYWJzbDo6Q29udmVydERhdGVUaW1lKClg
IHJldHVybnMgdGltZXMgY2FsY3VsYXRlZCB1c2luZyB0aGUKLS8vIHByZS10cmFuc2l0aW9uIGFu
ZCBwb3N0LXRyYW5zaXRpb24gVVRDIG9mZnNldHMsIHBsdXMgdGhlIHRyYW5zaXRpb24KLS8vIHRp
bWUgaXRzZWxmLgotLy8KLS8vIEV4YW1wbGVzOgotLy8KLS8vICAgYWJzbDo6VGltZVpvbmUgbGF4
OwotLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZs
YXgpKSB7Ci0vLyAgICAgLy8gaGFuZGxlIGVycm9yIGNhc2UKLS8vICAgfQotLy8KLS8vICAgLy8g
QSB1bmlxdWUgY2l2aWwgdGltZQotLy8gICBhYnNsOjpUaW1lQ29udmVyc2lvbiBqYW4wMSA9Ci0v
LyAgICAgICBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMSwgMSwgMSwgMCwgMCwgMCwgbGF4KTsK
LS8vICAgLy8gamFuMDEua2luZCA9PSBUaW1lQ29udmVyc2lvbjo6VU5JUVVFCi0vLyAgIC8vIGph
bjAxLnByZSAgICBpcyAyMDExLzAxLzAxIDAwOjAwOjAwIC0wODAwCi0vLyAgIC8vIGphbjAxLnRy
YW5zICBpcyAyMDExLzAxLzAxIDAwOjAwOjAwIC0wODAwCi0vLyAgIC8vIGphbjAxLnBvc3QgICBp
cyAyMDExLzAxLzAxIDAwOjAwOjAwIC0wODAwCi0vLwotLy8gICAvLyBBIFNwcmluZyBEU1QgdHJh
bnNpdGlvbiwgd2hlbiB0aGVyZSBpcyBhIGdhcCBpbiBjaXZpbCB0aW1lCi0vLyAgIGFic2w6OlRp
bWVDb252ZXJzaW9uIG1hcjEzID0KLS8vICAgICAgIGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDEx
LCAzLCAxMywgMiwgMTUsIDAsIGxheCk7Ci0vLyAgIC8vIG1hcjEzLmtpbmQgPT0gVGltZUNvbnZl
cnNpb246OlNLSVBQRUQKLS8vICAgLy8gbWFyMTMucHJlICAgaXMgMjAxMS8wMy8xMyAwMzoxNTow
MCAtMDcwMAotLy8gICAvLyBtYXIxMy50cmFucyBpcyAyMDExLzAzLzEzIDAzOjAwOjAwIC0wNzAw
Ci0vLyAgIC8vIG1hcjEzLnBvc3QgIGlzIDIwMTEvMDMvMTMgMDE6MTU6MDAgLTA4MDAKLS8vCi0v
LyAgIC8vIEEgRmFsbCBEU1QgdHJhbnNpdGlvbiwgd2hlbiBjaXZpbCB0aW1lcyBhcmUgcmVwZWF0
ZWQKLS8vICAgYWJzbDo6VGltZUNvbnZlcnNpb24gbm92MDYgPQotLy8gICAgICAgYWJzbDo6Q29u
dmVydERhdGVUaW1lKDIwMTEsIDExLCA2LCAxLCAxNSwgMCwgbGF4KTsKLS8vICAgLy8gbm92MDYu
a2luZCA9PSBUaW1lQ29udmVyc2lvbjo6UkVQRUFURUQKLS8vICAgLy8gbm92MDYucHJlICAgaXMg
MjAxMS8xMS8wNiAwMToxNTowMCAtMDcwMAotLy8gICAvLyBub3YwNi50cmFucyBpcyAyMDExLzEx
LzA2IDAxOjAwOjAwIC0wODAwCi0vLyAgIC8vIG5vdjA2LnBvc3QgIGlzIDIwMTEvMTEvMDYgMDE6
MTU6MDAgLTA4MDAKLS8vCi0vLyBUaGUgaW5wdXQgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBh
bmQgc2Vjb25kIHZhbHVlcyBjYW4gYWxzbyBiZQotLy8gb3V0c2lkZSBvZiB0aGVpciB2YWxpZCBy
YW5nZXMsIGluIHdoaWNoIGNhc2UgdGhleSB3aWxsIGJlICJub3JtYWxpemVkIgotLy8gZHVyaW5n
IHRoZSBjb252ZXJzaW9uLgotLy8KLS8vIEV4YW1wbGU6Ci0vLwotLy8gICAvLyAiT2N0b2JlciAz
MiIgbm9ybWFsaXplcyB0byAiTm92ZW1iZXIgMSIuCi0vLyAgIGFic2w6OlRpbWVab25lIHR6ID0g
YWJzbDo6TG9jYWxUaW1lWm9uZSgpOwotLy8gICBhYnNsOjpUaW1lQ29udmVyc2lvbiB0YyA9Ci0v
LyAgICAgICBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTAsIDMyLCA4LCAzMCwgMCwgdHop
OwotLy8gICAvLyB0Yy5raW5kID09IFRpbWVDb252ZXJzaW9uOjpVTklRVUUgJiYgdGMubm9ybWFs
aXplZCA9PSB0cnVlCi0vLyAgIC8vIHRjLnByZS5Jbih0eikubW9udGggPT0gMTEgJiYgdGMucHJl
LkluKHR6KS5kYXkgPT0gMQotc3RydWN0IFRpbWVDb252ZXJzaW9uIHsKLSAgVGltZSBwcmU7ICAg
IC8vIHRpbWUgY2FsY3VsYXRlZCB1c2luZyB0aGUgcHJlLXRyYW5zaXRpb24gb2Zmc2V0Ci0gIFRp
bWUgdHJhbnM7ICAvLyB3aGVuIHRoZSBjaXZpbC10aW1lIGRpc2NvbnRpbnVpdHkgb2NjdXJyZWQK
LSAgVGltZSBwb3N0OyAgIC8vIHRpbWUgY2FsY3VsYXRlZCB1c2luZyB0aGUgcG9zdC10cmFuc2l0
aW9uIG9mZnNldAotCi0gIGVudW0gS2luZCB7Ci0gICAgVU5JUVVFLCAgICAvLyB0aGUgY2l2aWwg
dGltZSB3YXMgc2luZ3VsYXIgKHByZSA9PSB0cmFucyA9PSBwb3N0KQotICAgIFNLSVBQRUQsICAg
Ly8gdGhlIGNpdmlsIHRpbWUgZGlkIG5vdCBleGlzdAotICAgIFJFUEVBVEVELCAgLy8gdGhlIGNp
dmlsIHRpbWUgd2FzIGFtYmlndW91cwotICB9OwotICBLaW5kIGtpbmQ7Ci0KLSAgYm9vbCBub3Jt
YWxpemVkOyAgLy8gaW5wdXQgdmFsdWVzIHdlcmUgb3V0c2lkZSB0aGVpciB2YWxpZCByYW5nZXMK
LX07Ci0KLS8vIENvbnZlcnREYXRlVGltZSgpCi0vLwotLy8gVGhlIGZ1bGwgZ2VuZXJhbGl0eSBv
ZiBhIGNpdmlsIHRpbWUgdG8gYWJzbDo6VGltZSBjb252ZXJzaW9uLgotVGltZUNvbnZlcnNpb24g
Q29udmVydERhdGVUaW1lKGludDY0X3QgeWVhciwgaW50IG1vbiwgaW50IGRheSwgaW50IGhvdXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbiwgaW50IHNlYywgVGltZVpv
bmUgdHopOwotCi0vLyBGcm9tRGF0ZVRpbWUoKQotLy8KLS8vIEEgY29udmVuaWVuY2Ugd3JhcHBl
ciBmb3IgYGFic2w6OkNvbnZlcnREYXRlVGltZSgpYCB0aGF0IHNpbXBseSByZXR1cm5zIHRoZQot
Ly8gInByZSIgYGFic2w6OlRpbWVgLiAgVGhhdCBpcywgdGhlIHVuaXF1ZSByZXN1bHQsIG9yIHRo
ZSBpbnN0YW50IHRoYXQKLS8vIGlzIGNvcnJlY3QgdXNpbmcgdGhlIHByZS10cmFuc2l0aW9uIG9m
ZnNldCAoYXMgaWYgdGhlIHRyYW5zaXRpb24KLS8vIG5ldmVyIGhhcHBlbmVkKS4gVGhpcyBpcyB0
eXBpY2FsbHkgdGhlIGFuc3dlciB0aGF0IGh1bWFucyBleHBlY3RlZCB3aGVuCi0vLyBmYWNlZCB3
aXRoIG5vbi11bmlxdWUgdGltZXMsIHN1Y2ggYXMgbmVhciBkYXlsaWdodC1zYXZpbmcgdGltZSB0
cmFuc2l0aW9ucy4KLS8vCi0vLyBFeGFtcGxlOgotLy8KLS8vICAgYWJzbDo6VGltZVpvbmUgc2Vh
dHRsZTsKLS8vICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMi
LCAmc2VhdHRsZSkpIHsKLS8vICAgICAvLyBoYW5kbGUgZXJyb3IgY2FzZQotLy8gICB9Ci0vLyAg
IGFic2w6OlRpbWUgdCA9ICBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNywgOSwgMjYsIDksIDMwLCAw
LCBzZWF0dGxlKTsKLVRpbWUgRnJvbURhdGVUaW1lKGludDY0X3QgeWVhciwgaW50IG1vbiwgaW50
IGRheSwgaW50IGhvdXIsIGludCBtaW4sIGludCBzZWMsCi0gICAgICAgICAgICAgICAgICBUaW1l
Wm9uZSB0eik7Ci0KLS8vIEZyb21UTSgpCi0vLwotLy8gQ29udmVydHMgdGhlIGB0bV95ZWFyYCwg
YHRtX21vbmAsIGB0bV9tZGF5YCwgYHRtX2hvdXJgLCBgdG1fbWluYCwgYW5kCi0vLyBgdG1fc2Vj
YCBmaWVsZHMgdG8gYW4gYGFic2w6OlRpbWVgIHVzaW5nIHRoZSBnaXZlbiB0aW1lIHpvbmUuIFNl
ZSBjdGltZSgzKQotLy8gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGV4cGVjdGVkIHZhbHVlcyBv
ZiB0aGUgdG0gZmllbGRzLiBJRkYgdGhlIGluZGljYXRlZAotLy8gdGltZSBpbnN0YW50IGlzIG5v
dCB1bmlxdWUgKHNlZSBgYWJzbDo6Q29udmVydERhdGVUaW1lKClgIGFib3ZlKSwgdGhlCi0vLyBg
dG1faXNkc3RgIGZpZWxkIGlzIGNvbnN1bHRlZCB0byBzZWxlY3QgdGhlIGRlc2lyZWQgaW5zdGFu
dCAoYHRtX2lzZHN0YCA+IDAKLS8vIG1lYW5zIERTVCwgYHRtX2lzZHN0YCA9PSAwIG1lYW5zIG5v
IERTVCwgYHRtX2lzZHN0YCA8IDAgbWVhbnMgdXNlIHRoZSBkZWZhdWx0Ci0vLyBsaWtlIGBhYnNs
OjpGcm9tRGF0ZVRpbWUoKWApLgotVGltZSBGcm9tVE0oY29uc3Qgc3RydWN0IHRtJiB0bSwgVGlt
ZVpvbmUgdHopOwotCi0vLyBUb1RNKCkKLS8vCi0vLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gYGFic2w6
OlRpbWVgIHRvIGEgc3RydWN0IHRtIHVzaW5nIHRoZSBnaXZlbiB0aW1lIHpvbmUuCi0vLyBTZWUg
Y3RpbWUoMykgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhbHVlcyBvZiB0aGUgdG0gZmllbGRz
Lgotc3RydWN0IHRtIFRvVE0oVGltZSB0LCBUaW1lWm9uZSB0eik7Ci0KIC8vIEZyb21Vbml4TmFu
b3MoKQogLy8gRnJvbVVuaXhNaWNyb3MoKQogLy8gRnJvbVVuaXhNaWxsaXMoKQpAQCAtODgzLDYg
KzgwNSwzODIgQEAgVGltZSBGcm9tQ2hyb25vKGNvbnN0IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQmIHRwKTsKIC8vICAgLy8gdHAgPT0gc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6ZnJvbV90aW1lX3QoMTIzKTsKIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgVG9DaHJvbm9UaW1lKFRpbWUpOwogCisvLyBTdXBwb3J0IGZvciBmbGFnIHZhbHVlcyBv
ZiB0eXBlIFRpbWUuIFRpbWUgZmxhZ3MgbXVzdCBiZSBzcGVjaWZpZWQgaW4gYQorLy8gZm9ybWF0
IHRoYXQgbWF0Y2hlcyBhYnNsOjpSRkMzMzM5X2Z1bGwuIEZvciBleGFtcGxlOgorLy8KKy8vICAg
LS1zdGFydF90aW1lPTIwMTYtMDEtMDJUMDM6MDQ6MDUuNjc4KzA4OjAwCisvLworLy8gTm90ZTog
QSBVVEMgb2Zmc2V0IChvciAnWicgaW5kaWNhdGluZyBhIHplcm8tb2Zmc2V0IGZyb20gVVRDKSBp
cyByZXF1aXJlZC4KKy8vCisvLyBBZGRpdGlvbmFsbHksIGlmIHlvdSdkIGxpa2UgdG8gc3BlY2lm
eSBhIHRpbWUgYXMgYSBjb3VudCBvZgorLy8gc2Vjb25kcy9taWxsaXNlY29uZHMvZXRjIGZyb20g
dGhlIFVuaXggZXBvY2gsIHVzZSBhbiBhYnNsOjpEdXJhdGlvbiBmbGFnCisvLyBhbmQgYWRkIHRo
YXQgZHVyYXRpb24gdG8gYWJzbDo6VW5peEVwb2NoKCkgdG8gZ2V0IGFuIGFic2w6OlRpbWUuCiti
b29sIFBhcnNlRmxhZyhjb25zdCBzdGQ6OnN0cmluZyYgdGV4dCwgVGltZSogdCwgc3RkOjpzdHJp
bmcqIGVycm9yKTsKK3N0ZDo6c3RyaW5nIFVucGFyc2VGbGFnKFRpbWUgdCk7CisKKy8vIFRpbWVa
b25lCisvLworLy8gVGhlIGBhYnNsOjpUaW1lWm9uZWAgaXMgYW4gb3BhcXVlLCBzbWFsbCwgdmFs
dWUtdHlwZSBjbGFzcyByZXByZXNlbnRpbmcgYQorLy8gZ2VvLXBvbGl0aWNhbCByZWdpb24gd2l0
aGluIHdoaWNoIHBhcnRpY3VsYXIgcnVsZXMgYXJlIHVzZWQgZm9yIGNvbnZlcnRpbmcKKy8vIGJl
dHdlZW4gYWJzb2x1dGUgYW5kIGNpdmlsIHRpbWVzIChzZWUgaHR0cHM6Ly9naXQuaW8vdjU5THkp
LiBgYWJzbDo6VGltZVpvbmVgCisvLyB2YWx1ZXMgYXJlIG5hbWVkIHVzaW5nIHRoZSBUWiBpZGVu
dGlmaWVycyBmcm9tIHRoZSBJQU5BIFRpbWUgWm9uZSBEYXRhYmFzZSwKKy8vIHN1Y2ggYXMgIkFt
ZXJpY2EvTG9zX0FuZ2VsZXMiIG9yICJBdXN0cmFsaWEvU3lkbmV5Ii4gYGFic2w6OlRpbWVab25l
YCB2YWx1ZXMKKy8vIGFyZSBjcmVhdGVkIGZyb20gZmFjdG9yeSBmdW5jdGlvbnMgc3VjaCBhcyBg
YWJzbDo6TG9hZFRpbWVab25lKClgLiBOb3RlOgorLy8gc3RyaW5ncyBsaWtlICJQU1QiIGFuZCAi
RURUIiBhcmUgbm90IHZhbGlkIFRaIGlkZW50aWZpZXJzLiBQcmVmZXIgdG8gcGFzcyBieQorLy8g
dmFsdWUgcmF0aGVyIHRoYW4gY29uc3QgcmVmZXJlbmNlLgorLy8KKy8vIEZvciBtb3JlIG9uIHRo
ZSBmdW5kYW1lbnRhbCBjb25jZXB0cyBvZiB0aW1lIHpvbmVzLCBhYnNvbHV0ZSB0aW1lcywgYW5k
IGNpdmlsCisvLyB0aW1lcywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2N0eiNmdW5k
YW1lbnRhbC1jb25jZXB0cworLy8KKy8vIEV4YW1wbGVzOgorLy8KKy8vICAgYWJzbDo6VGltZVpv
bmUgdXRjID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKKy8vICAgYWJzbDo6VGltZVpvbmUgcHN0ID0g
YWJzbDo6Rml4ZWRUaW1lWm9uZSgtOCAqIDYwICogNjApOworLy8gICBhYnNsOjpUaW1lWm9uZSBs
b2MgPSBhYnNsOjpMb2NhbFRpbWVab25lKCk7CisvLyAgIGFic2w6OlRpbWVab25lIGxheDsKKy8v
ICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCAmbGF4KSkg
eworLy8gICAgIC8vIGhhbmRsZSBlcnJvciBjYXNlCisvLyAgIH0KKy8vCisvLyBTZWUgYWxzbzoK
Ky8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jY3R6CisvLyAtIGh0dHBzOi8vd3d3Lmlh
bmEub3JnL3RpbWUtem9uZXMKKy8vIC0gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWm9u
ZWluZm8KK2NsYXNzIFRpbWVab25lIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFRpbWVab25lKHRp
bWVfaW50ZXJuYWw6OmNjdHo6OnRpbWVfem9uZSB0eikgOiBjel8odHopIHt9CisgIFRpbWVab25l
KCkgPSBkZWZhdWx0OyAgLy8gVVRDLCBidXQgcHJlZmVyIFVUQ1RpbWVab25lKCkgdG8gYmUgZXhw
bGljaXQuCisKKyAgLy8gQ29weWFibGUuCisgIFRpbWVab25lKGNvbnN0IFRpbWVab25lJikgPSBk
ZWZhdWx0OworICBUaW1lWm9uZSYgb3BlcmF0b3I9KGNvbnN0IFRpbWVab25lJikgPSBkZWZhdWx0
OworCisgIGV4cGxpY2l0IG9wZXJhdG9yIHRpbWVfaW50ZXJuYWw6OmNjdHo6OnRpbWVfem9uZSgp
IGNvbnN0IHsgcmV0dXJuIGN6XzsgfQorCisgIHN0ZDo6c3RyaW5nIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBjel8ubmFtZSgpOyB9CisKKyAgLy8gVGltZVpvbmU6OkNpdmlsSW5mbworICAvLworICAv
LyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgY2l2aWwgdGltZSBjb3JyZXNwb25kaW5nIHRvIGFuIGFi
c29sdXRlIHRpbWUuCisgIC8vIFRoaXMgc3RydWN0IGlzIG5vdCBpbnRlbmRlZCB0byByZXByZXNl
bnQgYW4gaW5zdGFudCBpbiB0aW1lLiBTbywgcmF0aGVyCisgIC8vIHRoYW4gcGFzc2luZyBhIGBU
aW1lWm9uZTo6Q2l2aWxJbmZvYCB0byBhIGZ1bmN0aW9uLCBwYXNzIGFuIGBhYnNsOjpUaW1lYAor
ICAvLyBhbmQgYW4gYGFic2w6OlRpbWVab25lYC4KKyAgc3RydWN0IENpdmlsSW5mbyB7CisgICAg
Q2l2aWxTZWNvbmQgY3M7CisgICAgRHVyYXRpb24gc3Vic2Vjb25kOworCisgICAgLy8gTm90ZTog
VGhlIGZvbGxvd2luZyBmaWVsZHMgZXhpc3QgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKyAg
ICAvLyB3aXRoIG9sZGVyIEFQSXMuICBBY2Nlc3NpbmcgdGhlc2UgZmllbGRzIGRpcmVjdGx5IGlz
IGEgc2lnbiBvZgorICAgIC8vIGltcHJ1ZGVudCBsb2dpYyBpbiB0aGUgY2FsbGluZyBjb2RlLiAg
TW9kZXJuIHRpbWUtcmVsYXRlZCBjb2RlCisgICAgLy8gc2hvdWxkIG9ubHkgYWNjZXNzIHRoaXMg
ZGF0YSBpbmRpcmVjdGx5IGJ5IHdheSBvZiBGb3JtYXRUaW1lKCkuCisgICAgLy8gVGhlc2UgZmll
bGRzIGFyZSB1bmRlZmluZWQgZm9yIEluZmluaXRlRnV0dXJlKCkgYW5kIEluZmluaXRlUGFzdCgp
LgorICAgIGludCBvZmZzZXQ7ICAgICAgICAgICAgIC8vIHNlY29uZHMgZWFzdCBvZiBVVEMKKyAg
ICBib29sIGlzX2RzdDsgICAgICAgICAgICAvLyBpcyBvZmZzZXQgbm9uLXN0YW5kYXJkPworICAg
IGNvbnN0IGNoYXIqIHpvbmVfYWJicjsgIC8vIHRpbWUtem9uZSBhYmJyZXZpYXRpb24gKGUuZy4s
ICJQU1QiKQorICB9OworCisgIC8vIFRpbWVab25lOjpBdChUaW1lKQorICAvLworICAvLyBSZXR1
cm5zIHRoZSBjaXZpbCB0aW1lIGZvciB0aGlzIFRpbWVab25lIGF0IGEgY2VydGFpbiBgYWJzbDo6
VGltZWAuCisgIC8vIElmIHRoZSBpbnB1dCB0aW1lIGlzIGluZmluaXRlLCB0aGUgb3V0cHV0IGNp
dmlsIHNlY29uZCB3aWxsIGJlIHNldCB0bworICAvLyBDaXZpbFNlY29uZDo6bWF4KCkgb3IgbWlu
KCksIGFuZCB0aGUgc3Vic2Vjb25kIHdpbGwgYmUgaW5maW5pdGUuCisgIC8vCisgIC8vIEV4YW1w
bGU6CisgIC8vCisgIC8vICAgY29uc3QgYXV0byBlcG9jaCA9IGxheC5BdChhYnNsOjpVbml4RXBv
Y2goKSk7CisgIC8vICAgLy8gZXBvY2guY3MgPT0gMTk2OS0xMi0zMSAxNjowMDowMAorICAvLyAg
IC8vIGVwb2NoLnN1YnNlY29uZCA9PSBhYnNsOjpaZXJvRHVyYXRpb24oKQorICAvLyAgIC8vIGVw
b2NoLm9mZnNldCA9PSAtMjg4MDAKKyAgLy8gICAvLyBlcG9jaC5pc19kc3QgPT0gZmFsc2UKKyAg
Ly8gICAvLyBlcG9jaC5hYmJyID09ICJQU1QiCisgIENpdmlsSW5mbyBBdChUaW1lIHQpIGNvbnN0
OworCisgIC8vIFRpbWVab25lOjpUaW1lSW5mbworICAvLworICAvLyBJbmZvcm1hdGlvbiBhYm91
dCB0aGUgYWJzb2x1dGUgdGltZXMgY29ycmVzcG9uZGluZyB0byBhIGNpdmlsIHRpbWUuCisgIC8v
IChTdWJzZWNvbmRzIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5LikKKyAgLy8KKyAgLy8gSXQg
aXMgcG9zc2libGUgZm9yIGEgY2FsbGVyIHRvIHBhc3MgYSBjaXZpbC10aW1lIHZhbHVlIHRoYXQg
ZG9lcworICAvLyBub3QgcmVwcmVzZW50IGFuIGFjdHVhbCBvciB1bmlxdWUgaW5zdGFudCBpbiB0
aW1lIChkdWUgdG8gYSBzaGlmdAorICAvLyBpbiBVVEMgb2Zmc2V0IGluIHRoZSBUaW1lWm9uZSwg
d2hpY2ggcmVzdWx0cyBpbiBhIGRpc2NvbnRpbnVpdHkgaW4KKyAgLy8gdGhlIGNpdmlsLXRpbWUg
Y29tcG9uZW50cykuIEZvciBleGFtcGxlLCBhIGRheWxpZ2h0LXNhdmluZy10aW1lCisgIC8vIHRy
YW5zaXRpb24gc2tpcHMgb3IgcmVwZWF0cyBjaXZpbCB0aW1lcy0tLWluIHRoZSBVbml0ZWQgU3Rh
dGVzLAorICAvLyBNYXJjaCAxMywgMjAxMSAwMjoxNSBuZXZlciBvY2N1cnJlZCwgd2hpbGUgTm92
ZW1iZXIgNiwgMjAxMSAwMToxNQorICAvLyBvY2N1cnJlZCB0d2ljZS0tLXNvIHJlcXVlc3RzIGZv
ciBzdWNoIHRpbWVzIGFyZSBub3Qgd2VsbC1kZWZpbmVkLgorICAvLyBUbyBhY2NvdW50IGZvciB0
aGVzZSBwb3NzaWJpbGl0aWVzLCBgYWJzbDo6VGltZVpvbmU6OlRpbWVJbmZvYCBpcworICAvLyBy
aWNoZXIgdGhhbiBqdXN0IGEgc2luZ2xlIGBhYnNsOjpUaW1lYC4KKyAgc3RydWN0IFRpbWVJbmZv
IHsKKyAgICBlbnVtIENpdmlsS2luZCB7CisgICAgICBVTklRVUUsICAgIC8vIHRoZSBjaXZpbCB0
aW1lIHdhcyBzaW5ndWxhciAocHJlID09IHRyYW5zID09IHBvc3QpCisgICAgICBTS0lQUEVELCAg
IC8vIHRoZSBjaXZpbCB0aW1lIGRpZCBub3QgZXhpc3QgKHByZSA+PSB0cmFucyA+IHBvc3QpCisg
ICAgICBSRVBFQVRFRCwgIC8vIHRoZSBjaXZpbCB0aW1lIHdhcyBhbWJpZ3VvdXMgKHByZSA8IHRy
YW5zIDw9IHBvc3QpCisgICAgfSBraW5kOworICAgIFRpbWUgcHJlOyAgICAvLyB0aW1lIGNhbGN1
bGF0ZWQgdXNpbmcgdGhlIHByZS10cmFuc2l0aW9uIG9mZnNldAorICAgIFRpbWUgdHJhbnM7ICAv
LyB3aGVuIHRoZSBjaXZpbC10aW1lIGRpc2NvbnRpbnVpdHkgb2NjdXJyZWQKKyAgICBUaW1lIHBv
c3Q7ICAgLy8gdGltZSBjYWxjdWxhdGVkIHVzaW5nIHRoZSBwb3N0LXRyYW5zaXRpb24gb2Zmc2V0
CisgIH07CisKKyAgLy8gVGltZVpvbmU6OkF0KENpdmlsU2Vjb25kKQorICAvLworICAvLyBSZXR1
cm5zIGFuIGBhYnNsOjpUaW1lSW5mb2AgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdGltZShzKSBm
b3IgdGhpcworICAvLyBUaW1lWm9uZSBhdCBhbiBgYWJzbDo6Q2l2aWxTZWNvbmRgLiBXaGVuIHRo
ZSBjaXZpbCB0aW1lIGlzIHNraXBwZWQgb3IKKyAgLy8gcmVwZWF0ZWQsIHJldHVybnMgdGltZXMg
Y2FsY3VsYXRlZCB1c2luZyB0aGUgcHJlLXRyYW5zaXRpb24gYW5kIHBvc3QtCisgIC8vIHRyYW5z
aXRpb24gVVRDIG9mZnNldHMsIHBsdXMgdGhlIHRyYW5zaXRpb24gdGltZSBpdHNlbGYuCisgIC8v
CisgIC8vIEV4YW1wbGVzOgorICAvLworICAvLyAgIC8vIEEgdW5pcXVlIGNpdmlsIHRpbWUKKyAg
Ly8gICBjb25zdCBhdXRvIGphbjAxID0gbGF4LkF0KGFic2w6OkNpdmlsU2Vjb25kKDIwMTEsIDEs
IDEsIDAsIDAsIDApKTsKKyAgLy8gICAvLyBqYW4wMS5raW5kID09IFRpbWVab25lOjpUaW1lSW5m
bzo6VU5JUVVFCisgIC8vICAgLy8gamFuMDEucHJlICAgIGlzIDIwMTEtMDEtMDEgMDA6MDA6MDAg
LTA4MDAKKyAgLy8gICAvLyBqYW4wMS50cmFucyAgaXMgMjAxMS0wMS0wMSAwMDowMDowMCAtMDgw
MAorICAvLyAgIC8vIGphbjAxLnBvc3QgICBpcyAyMDExLTAxLTAxIDAwOjAwOjAwIC0wODAwCisg
IC8vCisgIC8vICAgLy8gQSBTcHJpbmcgRFNUIHRyYW5zaXRpb24sIHdoZW4gdGhlcmUgaXMgYSBn
YXAgaW4gY2l2aWwgdGltZQorICAvLyAgIGNvbnN0IGF1dG8gbWFyMTMgPSBsYXguQXQoYWJzbDo6
Q2l2aWxTZWNvbmQoMjAxMSwgMywgMTMsIDIsIDE1LCAwKSk7CisgIC8vICAgLy8gbWFyMTMua2lu
ZCA9PSBUaW1lWm9uZTo6VGltZUluZm86OlNLSVBQRUQKKyAgLy8gICAvLyBtYXIxMy5wcmUgICBp
cyAyMDExLTAzLTEzIDAzOjE1OjAwIC0wNzAwCisgIC8vICAgLy8gbWFyMTMudHJhbnMgaXMgMjAx
MS0wMy0xMyAwMzowMDowMCAtMDcwMAorICAvLyAgIC8vIG1hcjEzLnBvc3QgIGlzIDIwMTEtMDMt
MTMgMDE6MTU6MDAgLTA4MDAKKyAgLy8KKyAgLy8gICAvLyBBIEZhbGwgRFNUIHRyYW5zaXRpb24s
IHdoZW4gY2l2aWwgdGltZXMgYXJlIHJlcGVhdGVkCisgIC8vICAgY29uc3QgYXV0byBub3YwNiA9
IGxheC5BdChhYnNsOjpDaXZpbFNlY29uZCgyMDExLCAxMSwgNiwgMSwgMTUsIDApKTsKKyAgLy8g
ICAvLyBub3YwNi5raW5kID09IFRpbWVab25lOjpUaW1lSW5mbzo6UkVQRUFURUQKKyAgLy8gICAv
LyBub3YwNi5wcmUgICBpcyAyMDExLTExLTA2IDAxOjE1OjAwIC0wNzAwCisgIC8vICAgLy8gbm92
MDYudHJhbnMgaXMgMjAxMS0xMS0wNiAwMTowMDowMCAtMDgwMAorICAvLyAgIC8vIG5vdjA2LnBv
c3QgIGlzIDIwMTEtMTEtMDYgMDE6MTU6MDAgLTA4MDAKKyAgVGltZUluZm8gQXQoQ2l2aWxTZWNv
bmQgY3QpIGNvbnN0OworCisgIC8vIFRpbWVab25lOjpOZXh0VHJhbnNpdGlvbigpCisgIC8vIFRp
bWVab25lOjpQcmV2VHJhbnNpdGlvbigpCisgIC8vCisgIC8vIEZpbmRzIHRoZSB0aW1lIG9mIHRo
ZSBuZXh0L3ByZXZpb3VzIG9mZnNldCBjaGFuZ2UgaW4gdGhpcyB0aW1lIHpvbmUuCisgIC8vCisg
IC8vIEJ5IGRlZmluaXRpb24sIGBOZXh0VHJhbnNpdGlvbih0LCAmdHJhbnMpYCByZXR1cm5zIGZh
bHNlIHdoZW4gYHRgIGlzCisgIC8vIGBJbmZpbml0ZUZ1dHVyZSgpYCwgYW5kIGBQcmV2VHJhbnNp
dGlvbih0LCAmdHJhbnMpYCByZXR1cm5zIGZhbHNlCisgIC8vIHdoZW4gYHRgIGlzIGBJbmZpbml0
ZVBhc3QoKWAuIElmIHRoZSB6b25lIGhhcyBubyB0cmFuc2l0aW9ucywgdGhlCisgIC8vIHJlc3Vs
dCB3aWxsIGFsc28gYmUgZmFsc2Ugbm8gbWF0dGVyIHdoYXQgdGhlIGFyZ3VtZW50LgorICAvLwor
ICAvLyBPdGhlcndpc2UsIHdoZW4gYHRgIGlzIGBJbmZpbml0ZVBhc3QoKWAsIGBOZXh0VHJhbnNp
dGlvbih0LCAmdHJhbnMpYAorICAvLyByZXR1cm5zIHRydWUgYW5kIHNldHMgYHRyYW5zYCB0byB0
aGUgZmlyc3QgcmVjb3JkZWQgdHJhbnNpdGlvbi4gQ2hhaW5zCisgIC8vIG9mIGNhbGxzIHRvIGBO
ZXh0VHJhbnNpdGlvbigpL1ByZXZUcmFuc2l0aW9uKClgIHdpbGwgZXZlbnR1YWxseSByZXR1cm4K
KyAgLy8gZmFsc2UsIGJ1dCBpdCBpcyB1bnNwZWNpZmllZCBleGFjdGx5IHdoZW4gYE5leHRUcmFu
c2l0aW9uKHQsICZ0cmFucylgCisgIC8vIGp1bXBzIHRvIGZhbHNlLCBvciB3aGF0IHRpbWUgaXMg
c2V0IGJ5IGBQcmV2VHJhbnNpdGlvbih0LCAmdHJhbnMpYCBmb3IKKyAgLy8gYSB2ZXJ5IGRpc3Rh
bnQgYHRgLgorICAvLworICAvLyBOb3RlOiBFbnVtZXJhdGlvbiBvZiB0aW1lLXpvbmUgdHJhbnNp
dGlvbnMgaXMgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMKKyAgLy8gb25seS4gTW9kZXJuIHRp
bWUtcmVsYXRlZCBjb2RlIHNob3VsZCBub3QgY2FyZSBhYm91dCB3aGVuIG9mZnNldCBjaGFuZ2Vz
CisgIC8vIG9jY3VyLgorICAvLworICAvLyBFeGFtcGxlOgorICAvLyAgIGFic2w6OlRpbWVab25l
IG55YzsKKyAgLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9OZXdfWW9yayIs
ICZueWMpKSB7IC4uLiB9CisgIC8vICAgY29uc3QgYXV0byBub3cgPSBhYnNsOjpOb3coKTsKKyAg
Ly8gICBhdXRvIHQgPSBhYnNsOjpJbmZpbml0ZVBhc3QoKTsKKyAgLy8gICBhYnNsOjpUaW1lWm9u
ZTo6Q2l2aWxUcmFuc2l0aW9uIHRyYW5zOworICAvLyAgIHdoaWxlICh0IDw9IG5vdyAmJiBueWMu
TmV4dFRyYW5zaXRpb24odCwgJnRyYW5zKSkgeworICAvLyAgICAgLy8gdHJhbnNpdGlvbjogdHJh
bnMuZnJvbSAtPiB0cmFucy50bworICAvLyAgICAgdCA9IG55Yy5BdCh0cmFucy50bykudHJhbnM7
CisgIC8vICAgfQorICBzdHJ1Y3QgQ2l2aWxUcmFuc2l0aW9uIHsKKyAgICBDaXZpbFNlY29uZCBm
cm9tOyAgLy8gdGhlIGNpdmlsIHRpbWUgd2UganVtcCBmcm9tCisgICAgQ2l2aWxTZWNvbmQgdG87
ICAgIC8vIHRoZSBjaXZpbCB0aW1lIHdlIGp1bXAgdG8KKyAgfTsKKyAgYm9vbCBOZXh0VHJhbnNp
dGlvbihUaW1lIHQsIENpdmlsVHJhbnNpdGlvbiogdHJhbnMpIGNvbnN0OworICBib29sIFByZXZU
cmFuc2l0aW9uKFRpbWUgdCwgQ2l2aWxUcmFuc2l0aW9uKiB0cmFucykgY29uc3Q7CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBUaW1lWm9u
ZSB0eikgeworICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwgdHouY3pfKTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShUaW1lWm9uZSBhLCBUaW1l
Wm9uZSBiKSB7IHJldHVybiBhLmN6XyA9PSBiLmN6XzsgfQorICBmcmllbmQgYm9vbCBvcGVyYXRv
ciE9KFRpbWVab25lIGEsIFRpbWVab25lIGIpIHsgcmV0dXJuIGEuY3pfICE9IGIuY3pfOyB9Cisg
IGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgVGltZVpv
bmUgdHopIHsKKyAgICByZXR1cm4gb3MgPDwgdHoubmFtZSgpOworICB9CisKKyAgdGltZV9pbnRl
cm5hbDo6Y2N0ejo6dGltZV96b25lIGN6XzsKK307CisKKy8vIExvYWRUaW1lWm9uZSgpCisvLwor
Ly8gTG9hZHMgdGhlIG5hbWVkIHpvbmUuIE1heSBwZXJmb3JtIEkvTyBvbiB0aGUgaW5pdGlhbCBs
b2FkIG9mIHRoZSBuYW1lZAorLy8gem9uZS4gSWYgdGhlIG5hbWUgaXMgaW52YWxpZCwgb3Igc29t
ZSBvdGhlciBraW5kIG9mIGVycm9yIG9jY3VycywgcmV0dXJucworLy8gYGZhbHNlYCBhbmQgYCp0
emAgaXMgc2V0IHRvIHRoZSBVVEMgdGltZSB6b25lLgoraW5saW5lIGJvb2wgTG9hZFRpbWVab25l
KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBUaW1lWm9uZSogdHopIHsKKyAgaWYgKG5hbWUgPT0g
ImxvY2FsdGltZSIpIHsKKyAgICAqdHogPSBUaW1lWm9uZSh0aW1lX2ludGVybmFsOjpjY3R6Ojps
b2NhbF90aW1lX3pvbmUoKSk7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgdGltZV9pbnRlcm5h
bDo6Y2N0ejo6dGltZV96b25lIGN6OworICBjb25zdCBib29sIGIgPSB0aW1lX2ludGVybmFsOjpj
Y3R6Ojpsb2FkX3RpbWVfem9uZShuYW1lLCAmY3opOworICAqdHogPSBUaW1lWm9uZShjeik7Cisg
IHJldHVybiBiOworfQorCisvLyBGaXhlZFRpbWVab25lKCkKKy8vCisvLyBSZXR1cm5zIGEgVGlt
ZVpvbmUgdGhhdCBpcyBhIGZpeGVkIG9mZnNldCAoc2Vjb25kcyBlYXN0KSBmcm9tIFVUQy4KKy8v
IE5vdGU6IElmIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgb2Zmc2V0IGlzIGdyZWF0ZXIgdGhh
biAyNCBob3VycworLy8geW91J2xsIGdldCBVVEMgKGkuZS4sIG5vIG9mZnNldCkgaW5zdGVhZC4K
K2lubGluZSBUaW1lWm9uZSBGaXhlZFRpbWVab25lKGludCBzZWNvbmRzKSB7CisgIHJldHVybiBU
aW1lWm9uZSgKKyAgICAgIHRpbWVfaW50ZXJuYWw6OmNjdHo6OmZpeGVkX3RpbWVfem9uZShzdGQ6
OmNocm9ubzo6c2Vjb25kcyhzZWNvbmRzKSkpOworfQorCisvLyBVVENUaW1lWm9uZSgpCisvLwor
Ly8gQ29udmVuaWVuY2UgbWV0aG9kIHJldHVybmluZyB0aGUgVVRDIHRpbWUgem9uZS4KK2lubGlu
ZSBUaW1lWm9uZSBVVENUaW1lWm9uZSgpIHsKKyAgcmV0dXJuIFRpbWVab25lKHRpbWVfaW50ZXJu
YWw6OmNjdHo6OnV0Y190aW1lX3pvbmUoKSk7Cit9CisKKy8vIExvY2FsVGltZVpvbmUoKQorLy8K
Ky8vIENvbnZlbmllbmNlIG1ldGhvZCByZXR1cm5pbmcgdGhlIGxvY2FsIHRpbWUgem9uZSwgb3Ig
VVRDIGlmIHRoZXJlIGlzCisvLyBubyBjb25maWd1cmVkIGxvY2FsIHpvbmUuICBXYXJuaW5nOiBC
ZSB3YXJ5IG9mIHVzaW5nIExvY2FsVGltZVpvbmUoKSwKKy8vIGFuZCBwYXJ0aWN1bGFybHkgc28g
aW4gYSBzZXJ2ZXIgcHJvY2VzcywgYXMgdGhlIHpvbmUgY29uZmlndXJlZCBmb3IgdGhlCisvLyBs
b2NhbCBtYWNoaW5lIHNob3VsZCBiZSBpcnJlbGV2YW50LiAgUHJlZmVyIGFuIGV4cGxpY2l0IHpv
bmUgbmFtZS4KK2lubGluZSBUaW1lWm9uZSBMb2NhbFRpbWVab25lKCkgeworICByZXR1cm4gVGlt
ZVpvbmUodGltZV9pbnRlcm5hbDo6Y2N0ejo6bG9jYWxfdGltZV96b25lKCkpOworfQorCisvLyBU
b0NpdmlsU2Vjb25kKCkKKy8vIFRvQ2l2aWxNaW51dGUoKQorLy8gVG9DaXZpbEhvdXIoKQorLy8g
VG9DaXZpbERheSgpCisvLyBUb0NpdmlsTW9udGgoKQorLy8gVG9DaXZpbFllYXIoKQorLy8KKy8v
IEhlbHBlcnMgZm9yIFRpbWVab25lOjpBdChUaW1lKSB0byByZXR1cm4gcGFydGljdWxhcmx5IGFs
aWduZWQgY2l2aWwgdGltZXMuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OlRpbWUg
dCA9IC4uLjsKKy8vICAgYWJzbDo6VGltZVpvbmUgdHogPSAuLi47CisvLyAgIGNvbnN0IGF1dG8g
Y2QgPSBhYnNsOjpUb0NpdmlsRGF5KHQsIHR6KTsKK2lubGluZSBDaXZpbFNlY29uZCBUb0Npdmls
U2Vjb25kKFRpbWUgdCwgVGltZVpvbmUgdHopIHsKKyAgcmV0dXJuIHR6LkF0KHQpLmNzOyAgLy8g
YWxyZWFkeSBhIENpdmlsU2Vjb25kCit9CitpbmxpbmUgQ2l2aWxNaW51dGUgVG9DaXZpbE1pbnV0
ZShUaW1lIHQsIFRpbWVab25lIHR6KSB7CisgIHJldHVybiBDaXZpbE1pbnV0ZSh0ei5BdCh0KS5j
cyk7Cit9CitpbmxpbmUgQ2l2aWxIb3VyIFRvQ2l2aWxIb3VyKFRpbWUgdCwgVGltZVpvbmUgdHop
IHsKKyAgcmV0dXJuIENpdmlsSG91cih0ei5BdCh0KS5jcyk7Cit9CitpbmxpbmUgQ2l2aWxEYXkg
VG9DaXZpbERheShUaW1lIHQsIFRpbWVab25lIHR6KSB7CisgIHJldHVybiBDaXZpbERheSh0ei5B
dCh0KS5jcyk7Cit9CitpbmxpbmUgQ2l2aWxNb250aCBUb0NpdmlsTW9udGgoVGltZSB0LCBUaW1l
Wm9uZSB0eikgeworICByZXR1cm4gQ2l2aWxNb250aCh0ei5BdCh0KS5jcyk7Cit9CitpbmxpbmUg
Q2l2aWxZZWFyIFRvQ2l2aWxZZWFyKFRpbWUgdCwgVGltZVpvbmUgdHopIHsKKyAgcmV0dXJuIENp
dmlsWWVhcih0ei5BdCh0KS5jcyk7Cit9CisKKy8vIEZyb21DaXZpbCgpCisvLworLy8gSGVscGVy
IGZvciBUaW1lWm9uZTo6QXQoQ2l2aWxTZWNvbmQpIHRoYXQgcHJvdmlkZXMgIm9yZGVyLXByZXNl
cnZpbmcKKy8vIHNlbWFudGljcy4iIElmIHRoZSBjaXZpbCB0aW1lIG1hcHMgdG8gYSB1bmlxdWUg
dGltZSwgdGhhdCB0aW1lIGlzCisvLyByZXR1cm5lZC4gSWYgdGhlIGNpdmlsIHRpbWUgaXMgcmVw
ZWF0ZWQgaW4gdGhlIGdpdmVuIHRpbWUgem9uZSwgdGhlCisvLyB0aW1lIHVzaW5nIHRoZSBwcmUt
dHJhbnNpdGlvbiBvZmZzZXQgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgdGhlCisvLyBjaXZpbCB0
aW1lIGlzIHNraXBwZWQgaW4gdGhlIGdpdmVuIHRpbWUgem9uZSwgYW5kIHRoZSB0cmFuc2l0aW9u
IHRpbWUKKy8vIGlzIHJldHVybmVkLiBUaGlzIG1lYW5zIHRoYXQgZm9yIGFueSB0d28gY2l2aWwg
dGltZXMsIGN0MSBhbmQgY3QyLAorLy8gKGN0MSA8IGN0MikgPT4gKEZyb21DaXZpbChjdDEpIDw9
IEZyb21DaXZpbChjdDIpKSwgdGhlIGVxdWFsIGNhc2UKKy8vIGJlaW5nIHdoZW4gdHdvIG5vbi1l
eGlzdGVudCBjaXZpbCB0aW1lcyBtYXAgdG8gdGhlIHNhbWUgdHJhbnNpdGlvbiB0aW1lLgorLy8K
Ky8vIE5vdGU6IEFjY2VwdHMgY2l2aWwgdGltZXMgb2YgYW55IGFsaWdubWVudC4KK2lubGluZSBU
aW1lIEZyb21DaXZpbChDaXZpbFNlY29uZCBjdCwgVGltZVpvbmUgdHopIHsKKyAgY29uc3QgYXV0
byB0aSA9IHR6LkF0KGN0KTsKKyAgaWYgKHRpLmtpbmQgPT0gVGltZVpvbmU6OlRpbWVJbmZvOjpT
S0lQUEVEKSByZXR1cm4gdGkudHJhbnM7CisgIHJldHVybiB0aS5wcmU7Cit9CisKKy8vIFRpbWVD
b252ZXJzaW9uCisvLworLy8gQW4gYGFic2w6OlRpbWVDb252ZXJzaW9uYCByZXByZXNlbnRzIHRo
ZSBjb252ZXJzaW9uIG9mIHllYXIsIG1vbnRoLCBkYXksCisvLyBob3VyLCBtaW51dGUsIGFuZCBz
ZWNvbmQgdmFsdWVzIChpLmUuLCBhIGNpdmlsIHRpbWUpLCBpbiBhIHBhcnRpY3VsYXIKKy8vIGBh
YnNsOjpUaW1lWm9uZWAsIHRvIGEgdGltZSBpbnN0YW50IChhbiBhYnNvbHV0ZSB0aW1lKSwgYXMg
cmV0dXJuZWQgYnkKKy8vIGBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoKWAuIExlY2FjeSB2ZXJzaW9u
IG9mIGBhYnNsOjpUaW1lWm9uZTo6VGltZUluZm9gLgorLy8KKy8vIERlcHJlY2F0ZWQuIFVzZSBg
YWJzbDo6VGltZVpvbmU6OlRpbWVJbmZvYC4KK3N0cnVjdAorICAgIFRpbWVDb252ZXJzaW9uIHsK
KyAgVGltZSBwcmU7ICAgIC8vIHRpbWUgY2FsY3VsYXRlZCB1c2luZyB0aGUgcHJlLXRyYW5zaXRp
b24gb2Zmc2V0CisgIFRpbWUgdHJhbnM7ICAvLyB3aGVuIHRoZSBjaXZpbC10aW1lIGRpc2NvbnRp
bnVpdHkgb2NjdXJyZWQKKyAgVGltZSBwb3N0OyAgIC8vIHRpbWUgY2FsY3VsYXRlZCB1c2luZyB0
aGUgcG9zdC10cmFuc2l0aW9uIG9mZnNldAorCisgIGVudW0gS2luZCB7CisgICAgVU5JUVVFLCAg
ICAvLyB0aGUgY2l2aWwgdGltZSB3YXMgc2luZ3VsYXIgKHByZSA9PSB0cmFucyA9PSBwb3N0KQor
ICAgIFNLSVBQRUQsICAgLy8gdGhlIGNpdmlsIHRpbWUgZGlkIG5vdCBleGlzdAorICAgIFJFUEVB
VEVELCAgLy8gdGhlIGNpdmlsIHRpbWUgd2FzIGFtYmlndW91cworICB9OworICBLaW5kIGtpbmQ7
CisKKyAgYm9vbCBub3JtYWxpemVkOyAgLy8gaW5wdXQgdmFsdWVzIHdlcmUgb3V0c2lkZSB0aGVp
ciB2YWxpZCByYW5nZXMKK307CisKKy8vIENvbnZlcnREYXRlVGltZSgpCisvLworLy8gTGVnYWN5
IHZlcnNpb24gb2YgYGFic2w6OlRpbWVab25lOjpBdChhYnNsOjpDaXZpbFNlY29uZClgIHRoYXQg
dGFrZXMKKy8vIHRoZSBjaXZpbCB0aW1lIGFzIHNpeCwgc2VwYXJhdGUgdmFsdWVzIChZTURITVMp
LgorLy8KKy8vIFRoZSBpbnB1dCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIGFuZCBzZWNvbmQg
dmFsdWVzIGNhbiBiZSBvdXRzaWRlCisvLyBvZiB0aGVpciB2YWxpZCByYW5nZXMsIGluIHdoaWNo
IGNhc2UgdGhleSB3aWxsIGJlICJub3JtYWxpemVkIiBkdXJpbmcKKy8vIHRoZSBjb252ZXJzaW9u
LgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICAvLyAiT2N0b2JlciAzMiIgbm9ybWFsaXplcyB0
byAiTm92ZW1iZXIgMSIuCisvLyAgIGFic2w6OlRpbWVDb252ZXJzaW9uIHRjID0KKy8vICAgICAg
IGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDEzLCAxMCwgMzIsIDgsIDMwLCAwLCBsYXgpOworLy8g
ICAvLyB0Yy5raW5kID09IFRpbWVDb252ZXJzaW9uOjpVTklRVUUgJiYgdGMubm9ybWFsaXplZCA9
PSB0cnVlCisvLyAgIC8vIGFic2w6OlRvQ2l2aWxEYXkodGMucHJlLCB0eikubW9udGgoKSA9PSAx
MQorLy8gICAvLyBhYnNsOjpUb0NpdmlsRGF5KHRjLnByZSwgdHopLmRheSgpID09IDEKKy8vCisv
LyBEZXByZWNhdGVkLiBVc2UgYGFic2w6OlRpbWVab25lOjpBdChDaXZpbFNlY29uZClgLgorVGlt
ZUNvbnZlcnNpb24gQ29udmVydERhdGVUaW1lKGludDY0X3QgeWVhciwgaW50IG1vbiwgaW50IGRh
eSwgaW50IGhvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbiwgaW50
IHNlYywgVGltZVpvbmUgdHopOworCisvLyBGcm9tRGF0ZVRpbWUoKQorLy8KKy8vIEEgY29udmVu
aWVuY2Ugd3JhcHBlciBmb3IgYGFic2w6OkNvbnZlcnREYXRlVGltZSgpYCB0aGF0IHNpbXBseSBy
ZXR1cm5zCisvLyB0aGUgInByZSIgYGFic2w6OlRpbWVgLiAgVGhhdCBpcywgdGhlIHVuaXF1ZSBy
ZXN1bHQsIG9yIHRoZSBpbnN0YW50IHRoYXQKKy8vIGlzIGNvcnJlY3QgdXNpbmcgdGhlIHByZS10
cmFuc2l0aW9uIG9mZnNldCAoYXMgaWYgdGhlIHRyYW5zaXRpb24gbmV2ZXIKKy8vIGhhcHBlbmVk
KS4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6VGltZSB0ID0gYWJzbDo6RnJvbURh
dGVUaW1lKDIwMTcsIDksIDI2LCA5LCAzMCwgMCwgbGF4KTsKKy8vICAgLy8gdCA9IDIwMTctMDkt
MjYgMDk6MzA6MDAgLTA3MDAKKy8vCisvLyBEZXByZWNhdGVkLiBVc2UgYGFic2w6OkZyb21DaXZp
bChDaXZpbFNlY29uZCwgVGltZVpvbmUpYC4gTm90ZSB0aGF0IHRoZQorLy8gYmVoYXZpb3Igb2Yg
YEZyb21DaXZpbCgpYCBkaWZmZXJzIGZyb20gYEZyb21EYXRlVGltZSgpYCBmb3Igc2tpcHBlZCBj
aXZpbAorLy8gdGltZXMuIElmIHlvdSBjYXJlIGFib3V0IHRoYXQgc2VlIGBhYnNsOjpUaW1lWm9u
ZTo6QXQoYWJzbDo6Q2l2aWxTZWNvbmQpYC4KK2lubGluZSBUaW1lIEZyb21EYXRlVGltZShpbnQ2
NF90IHllYXIsIGludCBtb24sIGludCBkYXksIGludCBob3VyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBtaW4sIGludCBzZWMsIFRpbWVab25lIHR6KSB7CisgIHJldHVybiBDb252ZXJ0
RGF0ZVRpbWUoeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjLCB0eikucHJlOworfQorCisv
LyBGcm9tVE0oKQorLy8KKy8vIENvbnZlcnRzIHRoZSBgdG1feWVhcmAsIGB0bV9tb25gLCBgdG1f
bWRheWAsIGB0bV9ob3VyYCwgYHRtX21pbmAsIGFuZAorLy8gYHRtX3NlY2AgZmllbGRzIHRvIGFu
IGBhYnNsOjpUaW1lYCB1c2luZyB0aGUgZ2l2ZW4gdGltZSB6b25lLiBTZWUgY3RpbWUoMykKKy8v
IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBleHBlY3RlZCB2YWx1ZXMgb2YgdGhlIHRtIGZpZWxk
cy4gSWYgdGhlIGluZGljYXRlZAorLy8gdGltZSBpbnN0YW50IGlzIG5vdCB1bmlxdWUgKHNlZSBg
YWJzbDo6VGltZVpvbmU6OkF0KGFic2w6OkNpdmlsU2Vjb25kKWAKKy8vIGFib3ZlKSwgdGhlIGB0
bV9pc2RzdGAgZmllbGQgaXMgY29uc3VsdGVkIHRvIHNlbGVjdCB0aGUgZGVzaXJlZCBpbnN0YW50
CisvLyAoYHRtX2lzZHN0YCA+IDAgbWVhbnMgRFNULCBgdG1faXNkc3RgID09IDAgbWVhbnMgbm8g
RFNULCBgdG1faXNkc3RgIDwgMAorLy8gbWVhbnMgdXNlIHRoZSBwb3N0LXRyYW5zaXRpb24gb2Zm
c2V0KS4KK1RpbWUgRnJvbVRNKGNvbnN0IHN0cnVjdCB0bSYgdG0sIFRpbWVab25lIHR6KTsKKwor
Ly8gVG9UTSgpCisvLworLy8gQ29udmVydHMgdGhlIGdpdmVuIGBhYnNsOjpUaW1lYCB0byBhIHN0
cnVjdCB0bSB1c2luZyB0aGUgZ2l2ZW4gdGltZSB6b25lLgorLy8gU2VlIGN0aW1lKDMpIGZvciBh
IGRlc2NyaXB0aW9uIG9mIHRoZSB2YWx1ZXMgb2YgdGhlIHRtIGZpZWxkcy4KK3N0cnVjdCB0bSBU
b1RNKFRpbWUgdCwgVGltZVpvbmUgdHopOworCiAvLyBSRkMzMzM5X2Z1bGwKIC8vIFJGQzMzMzlf
c2VjCiAvLwpAQCAtOTI5LDEzICsxMjI3LDkgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgUkZDMTEyM19u
b193ZGF5W107ICAvLyAlZCAlYiAlRTRZICVIOiVNOiVTICV6CiAvLwogLy8gRXhhbXBsZToKIC8v
Ci0vLyAgIGFic2w6OlRpbWVab25lIGxheDsKLS8vICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUo
IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCAmbGF4KSkgewotLy8gICAgIC8vIGhhbmRsZSBlcnJvciBj
YXNlCi0vLyAgIH0KLS8vICAgYWJzbDo6VGltZSB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTMs
IDEsIDIsIDMsIDQsIDUsIGxheCk7Ci0vLwotLy8gICBzdHJpbmcgZiA9IGFic2w6OkZvcm1hdFRp
bWUoIiVIOiVNOiVTIiwgdCwgbGF4KTsgIC8vICIwMzowNDowNSIKKy8vICAgYWJzbDo6Q2l2aWxT
ZWNvbmQgY3MoMjAxMywgMSwgMiwgMywgNCwgNSk7CisvLyAgIGFic2w6OlRpbWUgdCA9IGFic2w6
OkZyb21DaXZpbChjcywgbGF4KTsKKy8vICAgc3RkOjpzdHJpbmcgZiA9IGFic2w6OkZvcm1hdFRp
bWUoIiVIOiVNOiVTIiwgdCwgbGF4KTsgIC8vICIwMzowNDowNSIKIC8vICAgZiA9IGFic2w6OkZv
cm1hdFRpbWUoIiVIOiVNOiVFM1MiLCB0LCBsYXgpOyAgLy8gIjAzOjA0OjA1LjAwMCIKIC8vCiAv
LyBOb3RlOiBJZiB0aGUgZ2l2ZW4gYGFic2w6OlRpbWVgIGlzIGBhYnNsOjpJbmZpbml0ZUZ1dHVy
ZSgpYCwgdGhlIHJldHVybmVkCkBAIC05ODUsNyArMTI3OSw3IEBAIGlubGluZSBzdGQ6Om9zdHJl
YW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgVGltZSB0KSB7CiAvLyBpbiB0aGUgY29u
dmVyc2lvbi4KIC8vCiAvLyBEYXRlIGFuZCB0aW1lIGZpZWxkcyB0aGF0IGFyZSBvdXQtb2YtcmFu
Z2Ugd2lsbCBiZSB0cmVhdGVkIGFzIGVycm9ycwotLy8gcmF0aGVyIHRoYW4gbm9ybWFsaXppbmcg
dGhlbSBsaWtlIGBhYnNsOjpGcm9tRGF0ZVRpbWUoKWAgZG9lcy4gIEZvciBleGFtcGxlLAorLy8g
cmF0aGVyIHRoYW4gbm9ybWFsaXppbmcgdGhlbSBsaWtlIGBhYnNsOjpDaXZpbFNlY29uZGAgZG9l
cy4gIEZvciBleGFtcGxlLAogLy8gaXQgaXMgYW4gZXJyb3IgdG8gcGFyc2UgdGhlIGRhdGUgIk9j
dCAzMiwgMjAxMyIgYmVjYXVzZSAzMiBpcyBvdXQgb2YgcmFuZ2UuCiAvLwogLy8gQSBsZWFwIHNl
Y29uZCBvZiAiOjYwIiBpcyBub3JtYWxpemVkIHRvICI6MDAiIG9mIHRoZSBmb2xsb3dpbmcgbWlu
dXRlCkBAIC0xMDEyLDEyMSArMTMwNiwxMSBAQCBib29sIFBhcnNlVGltZShjb25zdCBzdGQ6OnN0
cmluZyYgZm9ybWF0LCBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsIFRpbWUqIHRpbWUsCiAvLyBn
aXZlbiBUaW1lWm9uZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgaW5wdXQsIGJ5IGl0c2VsZiwgZG9l
cyBub3QgaWRlbnRpZnkgYQogLy8gdW5pcXVlIGluc3RhbnQuICBCZWluZyB0aW1lLXpvbmUgZGVw
ZW5kZW50LCBpdCBhbHNvIGFkbWl0cyB0aGUgcG9zc2liaWxpdHkKIC8vIG9mIGFtYmlndWl0eSBv
ciBub24tZXhpc3RlbmNlLCBpbiB3aGljaCBjYXNlIHRoZSAicHJlIiB0aW1lIChhcyBkZWZpbmVk
Ci0vLyBmb3IgQ29udmVydERhdGVUaW1lKCkpIGlzIHJldHVybmVkLiAgRm9yIHRoZXNlIHJlYXNv
bnMgd2UgcmVjb21tZW5kIHRoYXQKKy8vIGJ5IFRpbWVab25lOjpUaW1lSW5mbykgaXMgcmV0dXJu
ZWQuICBGb3IgdGhlc2UgcmVhc29ucyB3ZSByZWNvbW1lbmQgdGhhdAogLy8gYWxsIGRhdGUvdGlt
ZSBzdHJpbmdzIGluY2x1ZGUgYSBVVEMgb2Zmc2V0IHNvIHRoZXkncmUgY29udGV4dCBpbmRlcGVu
ZGVudC4KIGJvb2wgUGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBpbnB1dCwgVGltZVpvbmUgdHosCiAgICAgICAgICAgICAgICBUaW1lKiB0aW1l
LCBzdGQ6OnN0cmluZyogZXJyKTsKIAotLy8gU3VwcG9ydCBmb3IgZmxhZyB2YWx1ZXMgb2YgdHlw
ZSBUaW1lLiBUaW1lIGZsYWdzIG11c3QgYmUgc3BlY2lmaWVkIGluIGEKLS8vIGZvcm1hdCB0aGF0
IG1hdGNoZXMgYWJzbDo6UkZDMzMzOV9mdWxsLiBGb3IgZXhhbXBsZToKLS8vCi0vLyAgIC0tc3Rh
cnRfdGltZT0yMDE2LTAxLTAyVDAzOjA0OjA1LjY3OCswODowMAotLy8KLS8vIE5vdGU6IEEgVVRD
IG9mZnNldCAob3IgJ1onIGluZGljYXRpbmcgYSB6ZXJvLW9mZnNldCBmcm9tIFVUQykgaXMgcmVx
dWlyZWQuCi0vLwotLy8gQWRkaXRpb25hbGx5LCBpZiB5b3UnZCBsaWtlIHRvIHNwZWNpZnkgYSB0
aW1lIGFzIGEgY291bnQgb2YKLS8vIHNlY29uZHMvbWlsbGlzZWNvbmRzL2V0YyBmcm9tIHRoZSBV
bml4IGVwb2NoLCB1c2UgYW4gYWJzbDo6RHVyYXRpb24gZmxhZwotLy8gYW5kIGFkZCB0aGF0IGR1
cmF0aW9uIHRvIGFic2w6OlVuaXhFcG9jaCgpIHRvIGdldCBhbiBhYnNsOjpUaW1lLgotYm9vbCBQ
YXJzZUZsYWcoY29uc3Qgc3RkOjpzdHJpbmcmIHRleHQsIFRpbWUqIHQsIHN0ZDo6c3RyaW5nKiBl
cnJvcik7Ci1zdGQ6OnN0cmluZyBVbnBhcnNlRmxhZyhUaW1lIHQpOwotCi0vLyBUaW1lWm9uZQot
Ly8KLS8vIFRoZSBgYWJzbDo6VGltZVpvbmVgIGlzIGFuIG9wYXF1ZSwgc21hbGwsIHZhbHVlLXR5
cGUgY2xhc3MgcmVwcmVzZW50aW5nIGEKLS8vIGdlby1wb2xpdGljYWwgcmVnaW9uIHdpdGhpbiB3
aGljaCBwYXJ0aWN1bGFyIHJ1bGVzIGFyZSB1c2VkIGZvciBjb252ZXJ0aW5nCi0vLyBiZXR3ZWVu
IGFic29sdXRlIGFuZCBjaXZpbCB0aW1lcyAoc2VlIGh0dHBzOi8vZ2l0LmlvL3Y1OUx5KS4gYGFi
c2w6OlRpbWVab25lYAotLy8gdmFsdWVzIGFyZSBuYW1lZCB1c2luZyB0aGUgVFogaWRlbnRpZmll
cnMgZnJvbSB0aGUgSUFOQSBUaW1lIFpvbmUgRGF0YWJhc2UsCi0vLyBzdWNoIGFzICJBbWVyaWNh
L0xvc19BbmdlbGVzIiBvciAiQXVzdHJhbGlhL1N5ZG5leSIuIGBhYnNsOjpUaW1lWm9uZWAgdmFs
dWVzCi0vLyBhcmUgY3JlYXRlZCBmcm9tIGZhY3RvcnkgZnVuY3Rpb25zIHN1Y2ggYXMgYGFic2w6
OkxvYWRUaW1lWm9uZSgpYC4gTm90ZToKLS8vIHN0cmluZ3MgbGlrZSAiUFNUIiBhbmQgIkVEVCIg
YXJlIG5vdCB2YWxpZCBUWiBpZGVudGlmaWVycy4gUHJlZmVyIHRvIHBhc3MgYnkKLS8vIHZhbHVl
IHJhdGhlciB0aGFuIGNvbnN0IHJlZmVyZW5jZS4KLS8vCi0vLyBGb3IgbW9yZSBvbiB0aGUgZnVu
ZGFtZW50YWwgY29uY2VwdHMgb2YgdGltZSB6b25lcywgYWJzb2x1dGUgdGltZXMsIGFuZCBjaXZp
bAotLy8gdGltZXMsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2NjdHojZnVuZGFtZW50
YWwtY29uY2VwdHMKLS8vCi0vLyBFeGFtcGxlczoKLS8vCi0vLyAgIGFic2w6OlRpbWVab25lIHV0
YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7Ci0vLyAgIGFic2w6OlRpbWVab25lIHBzdCA9IGFic2w6
OkZpeGVkVGltZVpvbmUoLTggKiA2MCAqIDYwKTsKLS8vICAgYWJzbDo6VGltZVpvbmUgbG9jID0g
YWJzbDo6TG9jYWxUaW1lWm9uZSgpOwotLy8gICBhYnNsOjpUaW1lWm9uZSBsYXg7Ci0vLyAgIGlm
ICghYWJzbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL0xvc19BbmdlbGVzIiwgJmxheCkpIHsKLS8v
ICAgICAvLyBoYW5kbGUgZXJyb3IgY2FzZQotLy8gICB9Ci0vLwotLy8gU2VlIGFsc286Ci0vLyAt
IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2N0egotLy8gLSBodHRwOi8vd3d3LmlhbmEub3Jn
L3RpbWUtem9uZXMKLS8vIC0gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9ab25laW5mbwot
Y2xhc3MgVGltZVpvbmUgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgVGltZVpvbmUodGltZV9pbnRl
cm5hbDo6Y2N0ejo6dGltZV96b25lIHR6KSA6IGN6Xyh0eikge30KLSAgVGltZVpvbmUoKSA9IGRl
ZmF1bHQ7ICAvLyBVVEMsIGJ1dCBwcmVmZXIgVVRDVGltZVpvbmUoKSB0byBiZSBleHBsaWNpdC4K
LSAgVGltZVpvbmUoY29uc3QgVGltZVpvbmUmKSA9IGRlZmF1bHQ7Ci0gIFRpbWVab25lJiBvcGVy
YXRvcj0oY29uc3QgVGltZVpvbmUmKSA9IGRlZmF1bHQ7Ci0KLSAgZXhwbGljaXQgb3BlcmF0b3Ig
dGltZV9pbnRlcm5hbDo6Y2N0ejo6dGltZV96b25lKCkgY29uc3QgeyByZXR1cm4gY3pfOyB9Ci0K
LSAgc3RkOjpzdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGN6Xy5uYW1lKCk7IH0KLQotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KLSAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIFRpbWVa
b25lIHR6KSB7Ci0gICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCB0ei5jel8pOwot
ICB9Ci0KLSBwcml2YXRlOgotICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KFRpbWVab25lIGEsIFRp
bWVab25lIGIpIHsgcmV0dXJuIGEuY3pfID09IGIuY3pfOyB9Ci0gIGZyaWVuZCBib29sIG9wZXJh
dG9yIT0oVGltZVpvbmUgYSwgVGltZVpvbmUgYikgeyByZXR1cm4gYS5jel8gIT0gYi5jel87IH0K
LSAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBUaW1l
Wm9uZSB0eikgewotICAgIHJldHVybiBvcyA8PCB0ei5uYW1lKCk7Ci0gIH0KLQotICB0aW1lX2lu
dGVybmFsOjpjY3R6Ojp0aW1lX3pvbmUgY3pfOwotfTsKLQotLy8gTG9hZFRpbWVab25lKCkKLS8v
Ci0vLyBMb2FkcyB0aGUgbmFtZWQgem9uZS4gTWF5IHBlcmZvcm0gSS9PIG9uIHRoZSBpbml0aWFs
IGxvYWQgb2YgdGhlIG5hbWVkCi0vLyB6b25lLiBJZiB0aGUgbmFtZSBpcyBpbnZhbGlkLCBvciBz
b21lIG90aGVyIGtpbmQgb2YgZXJyb3Igb2NjdXJzLCByZXR1cm5zCi0vLyBgZmFsc2VgIGFuZCBg
KnR6YCBpcyBzZXQgdG8gdGhlIFVUQyB0aW1lIHpvbmUuCi1pbmxpbmUgYm9vbCBMb2FkVGltZVpv
bmUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIFRpbWVab25lKiB0eikgewotICBpZiAobmFtZSA9
PSAibG9jYWx0aW1lIikgewotICAgICp0eiA9IFRpbWVab25lKHRpbWVfaW50ZXJuYWw6OmNjdHo6
OmxvY2FsX3RpbWVfem9uZSgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICB0aW1lX2ludGVy
bmFsOjpjY3R6Ojp0aW1lX3pvbmUgY3o7Ci0gIGNvbnN0IGJvb2wgYiA9IHRpbWVfaW50ZXJuYWw6
OmNjdHo6OmxvYWRfdGltZV96b25lKG5hbWUsICZjeik7Ci0gICp0eiA9IFRpbWVab25lKGN6KTsK
LSAgcmV0dXJuIGI7Ci19Ci0KLS8vIEZpeGVkVGltZVpvbmUoKQotLy8KLS8vIFJldHVybnMgYSBU
aW1lWm9uZSB0aGF0IGlzIGEgZml4ZWQgb2Zmc2V0IChzZWNvbmRzIGVhc3QpIGZyb20gVVRDLgot
Ly8gTm90ZTogSWYgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBvZmZzZXQgaXMgZ3JlYXRlciB0
aGFuIDI0IGhvdXJzCi0vLyB5b3UnbGwgZ2V0IFVUQyAoaS5lLiwgbm8gb2Zmc2V0KSBpbnN0ZWFk
LgotaW5saW5lIFRpbWVab25lIEZpeGVkVGltZVpvbmUoaW50IHNlY29uZHMpIHsKLSAgcmV0dXJu
IFRpbWVab25lKAotICAgICAgdGltZV9pbnRlcm5hbDo6Y2N0ejo6Zml4ZWRfdGltZV96b25lKHN0
ZDo6Y2hyb25vOjpzZWNvbmRzKHNlY29uZHMpKSk7Ci19Ci0KLS8vIFVUQ1RpbWVab25lKCkKLS8v
Ci0vLyBDb252ZW5pZW5jZSBtZXRob2QgcmV0dXJuaW5nIHRoZSBVVEMgdGltZSB6b25lLgotaW5s
aW5lIFRpbWVab25lIFVUQ1RpbWVab25lKCkgewotICByZXR1cm4gVGltZVpvbmUodGltZV9pbnRl
cm5hbDo6Y2N0ejo6dXRjX3RpbWVfem9uZSgpKTsKLX0KLQotLy8gTG9jYWxUaW1lWm9uZSgpCi0v
LwotLy8gQ29udmVuaWVuY2UgbWV0aG9kIHJldHVybmluZyB0aGUgbG9jYWwgdGltZSB6b25lLCBv
ciBVVEMgaWYgdGhlcmUgaXMKLS8vIG5vIGNvbmZpZ3VyZWQgbG9jYWwgem9uZS4gIFdhcm5pbmc6
IEJlIHdhcnkgb2YgdXNpbmcgTG9jYWxUaW1lWm9uZSgpLAotLy8gYW5kIHBhcnRpY3VsYXJseSBz
byBpbiBhIHNlcnZlciBwcm9jZXNzLCBhcyB0aGUgem9uZSBjb25maWd1cmVkIGZvciB0aGUKLS8v
IGxvY2FsIG1hY2hpbmUgc2hvdWxkIGJlIGlycmVsZXZhbnQuICBQcmVmZXIgYW4gZXhwbGljaXQg
em9uZSBuYW1lLgotaW5saW5lIFRpbWVab25lIExvY2FsVGltZVpvbmUoKSB7Ci0gIHJldHVybiBU
aW1lWm9uZSh0aW1lX2ludGVybmFsOjpjY3R6Ojpsb2NhbF90aW1lX3pvbmUoKSk7Ci19Ci0KIC8v
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KIC8vIEltcGxlbWVudGF0aW9uIERldGFpbHMgRm9sbG93CiAv
LyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CkBAIC0xMTY0LDE3ICsxMzQ4LDIwIEBAIGNvbnN0ZXhwciBE
dXJhdGlvbiBNYWtlTm9ybWFsaXplZER1cmF0aW9uKGludDY0X3Qgc2VjLCBpbnQ2NF90IHRpY2tz
KSB7CiAgIHJldHVybiAodGlja3MgPCAwKSA/IE1ha2VEdXJhdGlvbihzZWMgLSAxLCB0aWNrcyAr
IGtUaWNrc1BlclNlY29uZCkKICAgICAgICAgICAgICAgICAgICAgIDogTWFrZUR1cmF0aW9uKHNl
YywgdGlja3MpOwogfQorCiAvLyBQcm92aWRlIGFjY2VzcyB0byB0aGUgRHVyYXRpb24gcmVwcmVz
ZW50YXRpb24uCiBjb25zdGV4cHIgaW50NjRfdCBHZXRSZXBIaShEdXJhdGlvbiBkKSB7IHJldHVy
biBkLnJlcF9oaV87IH0KIGNvbnN0ZXhwciB1aW50MzJfdCBHZXRSZXBMbyhEdXJhdGlvbiBkKSB7
IHJldHVybiBkLnJlcF9sb187IH0KKworLy8gUmV0dXJucyB0cnVlIGlmZiBkIGlzIHBvc2l0aXZl
IG9yIG5lZ2F0aXZlIGluZmluaXR5LgogY29uc3RleHByIGJvb2wgSXNJbmZpbml0ZUR1cmF0aW9u
KER1cmF0aW9uIGQpIHsgcmV0dXJuIEdldFJlcExvKGQpID09IH4wVTsgfQogCiAvLyBSZXR1cm5z
IGFuIGluZmluaXRlIER1cmF0aW9uIHdpdGggdGhlIG9wcG9zaXRlIHNpZ24uCiAvLyBSRVFVSVJF
UzogSXNJbmZpbml0ZUR1cmF0aW9uKGQpCiBjb25zdGV4cHIgRHVyYXRpb24gT3Bwb3NpdGVJbmZp
bml0eShEdXJhdGlvbiBkKSB7CiAgIHJldHVybiBHZXRSZXBIaShkKSA8IDAKLSAgICAgICAgICAg
ICA/IE1ha2VEdXJhdGlvbihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgfjBV
KQotICAgICAgICAgICAgIDogTWFrZUR1cmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1pbigpLCB+MFUpOworICAgICAgICAgICAgID8gTWFrZUR1cmF0aW9uKChzdGQ6Om51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptYXgpKCksIH4wVSkKKyAgICAgICAgICAgICA6IE1ha2VEdXJh
dGlvbigoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKSgpLCB+MFUpOwogfQogCiAv
LyBSZXR1cm5zICgtbiktMSAoZXF1aXZhbGVudGx5IC0obisxKSkgd2l0aG91dCBhdm9pZGFibGUg
b3ZlcmZsb3cuCkBAIC0xMTk5LDE0ICsxMzg2LDE0IEBAIGNvbnN0ZXhwciBEdXJhdGlvbiBGcm9t
SW50NjQoaW50NjRfdCB2LCBzdGQ6OnJhdGlvPDEsIE4+KSB7CiAgICAgICB2IC8gTiwgdiAlIE4g
KiBrVGlja3NQZXJOYW5vc2Vjb25kICogMTAwMCAqIDEwMDAgKiAxMDAwIC8gTik7CiB9CiBjb25z
dGV4cHIgRHVyYXRpb24gRnJvbUludDY0KGludDY0X3Qgdiwgc3RkOjpyYXRpbzw2MD4pIHsKLSAg
cmV0dXJuICh2IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpIC8gNjAgJiYK
LSAgICAgICAgICB2ID49IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpIC8gNjAp
CisgIHJldHVybiAodiA8PSAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KSgpIC8g
NjAgJiYKKyAgICAgICAgICB2ID49IChzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4p
KCkgLyA2MCkKICAgICAgICAgICAgICA/IE1ha2VEdXJhdGlvbih2ICogNjApCiAgICAgICAgICAg
ICAgOiB2ID4gMCA/IEluZmluaXRlRHVyYXRpb24oKSA6IC1JbmZpbml0ZUR1cmF0aW9uKCk7CiB9
CiBjb25zdGV4cHIgRHVyYXRpb24gRnJvbUludDY0KGludDY0X3Qgdiwgc3RkOjpyYXRpbzwzNjAw
PikgewotICByZXR1cm4gKHYgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkg
LyAzNjAwICYmCi0gICAgICAgICAgdiA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
aW4oKSAvIDM2MDApCisgIHJldHVybiAodiA8PSAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KSgpIC8gMzYwMCAmJgorICAgICAgICAgIHYgPj0gKHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1pbikoKSAvIDM2MDApCiAgICAgICAgICAgICAgPyBNYWtlRHVyYXRpb24odiAq
IDM2MDApCiAgICAgICAgICAgICAgOiB2ID4gMCA/IEluZmluaXRlRHVyYXRpb24oKSA6IC1JbmZp
bml0ZUR1cmF0aW9uKCk7CiB9CkBAIC0xMjYzLDE0ICsxNDUwLDE1IEBAIFQgVG9DaHJvbm9EdXJh
dGlvbihEdXJhdGlvbiBkKSB7CiAgIHVzaW5nIFBlcmlvZCA9IHR5cGVuYW1lIFQ6OnBlcmlvZDsK
ICAgc3RhdGljX2Fzc2VydChJc1ZhbGlkUmVwNjQ8UmVwPigwKSwgImR1cmF0aW9uOjpyZXAgaXMg
aW52YWxpZCIpOwogICBpZiAodGltZV9pbnRlcm5hbDo6SXNJbmZpbml0ZUR1cmF0aW9uKGQpKQot
ICAgIHJldHVybiBkIDwgWmVyb0R1cmF0aW9uKCkgPyBUOjptaW4oKSA6IFQ6Om1heCgpOworICAg
IHJldHVybiBkIDwgWmVyb0R1cmF0aW9uKCkgPyAoVDo6bWluKSgpIDogKFQ6Om1heCkoKTsKICAg
Y29uc3QgYXV0byB2ID0gVG9JbnQ2NChkLCBQZXJpb2R7fSk7Ci0gIGlmICh2ID4gc3RkOjpudW1l
cmljX2xpbWl0czxSZXA+OjptYXgoKSkgcmV0dXJuIFQ6Om1heCgpOwotICBpZiAodiA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8UmVwPjo6bWluKCkpIHJldHVybiBUOjptaW4oKTsKKyAgaWYgKHYgPiAo
c3RkOjpudW1lcmljX2xpbWl0czxSZXA+OjptYXgpKCkpIHJldHVybiAoVDo6bWF4KSgpOworICBp
ZiAodiA8IChzdGQ6Om51bWVyaWNfbGltaXRzPFJlcD46Om1pbikoKSkgcmV0dXJuIChUOjptaW4p
KCk7CiAgIHJldHVybiBUe3Z9OwogfQogCiB9ICAvLyBuYW1lc3BhY2UgdGltZV9pbnRlcm5hbAor
CiBjb25zdGV4cHIgRHVyYXRpb24gTmFub3NlY29uZHMoaW50NjRfdCBuKSB7CiAgIHJldHVybiB0
aW1lX2ludGVybmFsOjpGcm9tSW50NjQobiwgc3RkOjpuYW5ve30pOwogfQpAQCAtMTI5Myw3ICsx
NDgxLDggQEAgY29uc3RleHByIER1cmF0aW9uIEhvdXJzKGludDY0X3QgbikgewogY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8KER1cmF0aW9uIGxocywgRHVyYXRpb24gcmhzKSB7CiAgIHJldHVybiB0
aW1lX2ludGVybmFsOjpHZXRSZXBIaShsaHMpICE9IHRpbWVfaW50ZXJuYWw6OkdldFJlcEhpKHJo
cykKICAgICAgICAgICAgICA/IHRpbWVfaW50ZXJuYWw6OkdldFJlcEhpKGxocykgPCB0aW1lX2lu
dGVybmFsOjpHZXRSZXBIaShyaHMpCi0gICAgICAgICAgICAgOiB0aW1lX2ludGVybmFsOjpHZXRS
ZXBIaShsaHMpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpCisgICAgICAg
ICAgICAgOiB0aW1lX2ludGVybmFsOjpHZXRSZXBIaShsaHMpID09CisgICAgICAgICAgICAgICAg
ICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4pKCkKICAgICAgICAgICAg
ICAgICAgICA/IHRpbWVfaW50ZXJuYWw6OkdldFJlcExvKGxocykgKyAxIDwKICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lX2ludGVybmFsOjpHZXRSZXBMbyhyaHMpICsgMQogICAgICAgICAg
ICAgICAgICAgIDogdGltZV9pbnRlcm5hbDo6R2V0UmVwTG8obGhzKSA8CkBAIC0xMzE4LDcgKzE1
MDcsOCBAQCBjb25zdGV4cHIgRHVyYXRpb24gb3BlcmF0b3ItKER1cmF0aW9uIGQpIHsKICAgLy8g
YSBzZWNvbmQncyB3b3J0aCBvZiB0aWNrcyBhbmQgYXZvaWQgb3ZlcmZsb3cgKGFzIG5lZ2F0aW5n
IGludDY0X3QtbWluICsgMQogICAvLyBpcyBzYWZlKS4KICAgcmV0dXJuIHRpbWVfaW50ZXJuYWw6
OkdldFJlcExvKGQpID09IDAKLSAgICAgICAgICAgICA/IHRpbWVfaW50ZXJuYWw6OkdldFJlcEhp
KGQpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpCisgICAgICAgICAgICAg
PyB0aW1lX2ludGVybmFsOjpHZXRSZXBIaShkKSA9PQorICAgICAgICAgICAgICAgICAgICAgICAo
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKSgpCiAgICAgICAgICAgICAgICAgICAg
PyBJbmZpbml0ZUR1cmF0aW9uKCkKICAgICAgICAgICAgICAgICAgICA6IHRpbWVfaW50ZXJuYWw6
Ok1ha2VEdXJhdGlvbigtdGltZV9pbnRlcm5hbDo6R2V0UmVwSGkoZCkpCiAgICAgICAgICAgICAg
OiB0aW1lX2ludGVybmFsOjpJc0luZmluaXRlRHVyYXRpb24oZCkKQEAgLTEzMzEsNyArMTUyMSw4
IEBAIGNvbnN0ZXhwciBEdXJhdGlvbiBvcGVyYXRvci0oRHVyYXRpb24gZCkgewogfQogCiBjb25z
dGV4cHIgRHVyYXRpb24gSW5maW5pdGVEdXJhdGlvbigpIHsKLSAgcmV0dXJuIHRpbWVfaW50ZXJu
YWw6Ok1ha2VEdXJhdGlvbihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgfjBV
KTsKKyAgcmV0dXJuIHRpbWVfaW50ZXJuYWw6Ok1ha2VEdXJhdGlvbigoc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWF4KSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH4wVSk7CiB9CiAKIGNvbnN0ZXhwciBEdXJhdGlvbiBGcm9tQ2hyb25vKGNvbnN0IHN0ZDo6
Y2hyb25vOjpuYW5vc2Vjb25kcyYgZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lX2Jl
bmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZV9iZW5jaG1hcmsuY2MKaW5kZXggZTEwMDk5NDZj
ZDUuLjk5ZTYyNzk5ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWVfYmVuY2htYXJrLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvdGltZV9iZW5jaG1hcmsuY2MKQEAgLTMsNyArMyw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE2OSwzMiArMTY5LDMyIEBAIHZvaWQgQk1fVGltZV9U
b1VuaXhTZWNvbmRzKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiBCRU5DSE1BUksoQk1fVGlt
ZV9Ub1VuaXhTZWNvbmRzKTsKIAogLy8KLS8vIEZyb21EYXRlVGltZQorLy8gRnJvbUNpdmlsCiAv
LwotLy8gSW4gZWFjaCAiRnJvbURhdGVUaW1lIiBiZW5jaG1hcmsgd2Ugc3dpdGNoIGJldHdlZW4g
dHdvIFlNRGhtcwotLy8gdmFsdWVzIHNlcGFyYXRlZCBieSBhdCBsZWFzdCBvbmUgdHJhbnNpdGlv
biBpbiBvcmRlciB0byBkZWZlYXQgYW55Ci0vLyBpbnRlcm5hbCBjYWNoaW5nIG9mIHByZXZpb3Vz
IHJlc3VsdHMgKGUuZy4sIHNlZSB0aW1lX2xvY2FsX2hpbnRfKS4KKy8vIEluIGVhY2ggIkZyb21D
aXZpbCIgYmVuY2htYXJrIHdlIHN3aXRjaCBiZXR3ZWVuIHR3byBZTURobXMgdmFsdWVzCisvLyBz
ZXBhcmF0ZWQgYnkgYXQgbGVhc3Qgb25lIHRyYW5zaXRpb24gaW4gb3JkZXIgdG8gZGVmZWF0IGFu
eSBpbnRlcm5hbAorLy8gY2FjaGluZyBvZiBwcmV2aW91cyByZXN1bHRzIChlLmcuLCBzZWUgdGlt
ZV9sb2NhbF9oaW50XykuCiAvLwogLy8gVGhlICJVVEMiIHZhcmlhbnRzIHVzZSBVVEMgaW5zdGVh
ZCBvZiB0aGUgR29vZ2xlL2xvY2FsIHRpbWUgem9uZS4KIC8vIFRoZSAiRGF5MCIgdmFyaWFudHMg
cmVxdWlyZSBub3JtYWxpemF0aW9uIG9mIHRoZSBkYXkgb2YgbW9udGguCiAvLwogCi12b2lkIEJN
X1RpbWVfRnJvbURhdGVUaW1lX0Fic2woYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQg
Qk1fVGltZV9Gcm9tQ2l2aWxfQWJzbChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBjb25z
dCBhYnNsOjpUaW1lWm9uZSB0eiA9CiAgICAgICBhYnNsOjp0aW1lX2ludGVybmFsOjpMb2FkVGlt
ZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiKTsKICAgaW50IGkgPSAwOwogICB3aGlsZSAoc3Rh
dGUuS2VlcFJ1bm5pbmcoKSkgewogICAgIGlmICgoaSAmIDEpID09IDApIHsKLSAgICAgIGFic2w6
OkZyb21EYXRlVGltZSgyMDE0LCAxMiwgMTgsIDIwLCAxNiwgMTgsIHR6KTsKKyAgICAgIGFic2w6
OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxMiwgMTgsIDIwLCAxNiwgMTgpLCB0
eik7CiAgICAgfSBlbHNlIHsKLSAgICAgIGFic2w6OkZyb21EYXRlVGltZSgyMDEzLCAxMSwgMTUs
IDE4LCAzMCwgMjcsIHR6KTsKKyAgICAgIGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29u
ZCgyMDEzLCAxMSwgMTUsIDE4LCAzMCwgMjcpLCB0eik7CiAgICAgfQogICAgICsraTsKICAgfQog
fQotQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbURhdGVUaW1lX0Fic2wpOworQkVOQ0hNQVJLKEJNX1Rp
bWVfRnJvbUNpdmlsX0Fic2wpOwogCi12b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lX0xpYmMoYmVu
Y2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGltZV9Gcm9tQ2l2aWxfTGliYyhiZW5j
aG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICAvLyBObyB0aW1lem9uZSBzdXBwb3J0LCBzbyBqdXN0
IHVzZSBsb2NhbHRpbWUuCiAgIGludCBpID0gMDsKICAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5n
KCkpIHsKQEAgLTIxOSwzMiArMjE5LDMyIEBAIHZvaWQgQk1fVGltZV9Gcm9tRGF0ZVRpbWVfTGli
YyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICAgICsraTsKICAgfQogfQotQkVOQ0hNQVJL
KEJNX1RpbWVfRnJvbURhdGVUaW1lX0xpYmMpOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmls
X0xpYmMpOwogCi12b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lVVRDX0Fic2woYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGltZV9Gcm9tQ2l2aWxVVENfQWJzbChiZW5jaG1hcms6
OlN0YXRlJiBzdGF0ZSkgewogICBjb25zdCBhYnNsOjpUaW1lWm9uZSB0eiA9IGFic2w6OlVUQ1Rp
bWVab25lKCk7CiAgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZygpKSB7Ci0gICAgRnJvbURhdGVU
aW1lKDIwMTQsIDEyLCAxOCwgMjAsIDE2LCAxOCwgdHopOworICAgIGFic2w6OkZyb21DaXZpbChh
YnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxMiwgMTgsIDIwLCAxNiwgMTgpLCB0eik7CiAgIH0KIH0K
LUJFTkNITUFSSyhCTV9UaW1lX0Zyb21EYXRlVGltZVVUQ19BYnNsKTsKK0JFTkNITUFSSyhCTV9U
aW1lX0Zyb21DaXZpbFVUQ19BYnNsKTsKIAotdm9pZCBCTV9UaW1lX0Zyb21EYXRlVGltZURheTBf
QWJzbChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9UaW1lX0Zyb21DaXZpbERh
eTBfQWJzbChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBjb25zdCBhYnNsOjpUaW1lWm9u
ZSB0eiA9CiAgICAgICBhYnNsOjp0aW1lX2ludGVybmFsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2Ev
TG9zX0FuZ2VsZXMiKTsKICAgaW50IGkgPSAwOwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmco
KSkgewogICAgIGlmICgoaSAmIDEpID09IDApIHsKLSAgICAgIGFic2w6OkZyb21EYXRlVGltZSgy
MDE0LCAxMiwgMCwgMjAsIDE2LCAxOCwgdHopOworICAgICAgYWJzbDo6RnJvbUNpdmlsKGFic2w6
OkNpdmlsU2Vjb25kKDIwMTQsIDEyLCAwLCAyMCwgMTYsIDE4KSwgdHopOwogICAgIH0gZWxzZSB7
Ci0gICAgICBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxMywgMTEsIDAsIDE4LCAzMCwgMjcsIHR6KTsK
KyAgICAgIGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMCwgMTgs
IDMwLCAyNyksIHR6KTsKICAgICB9CiAgICAgKytpOwogICB9CiB9Ci1CRU5DSE1BUksoQk1fVGlt
ZV9Gcm9tRGF0ZVRpbWVEYXkwX0Fic2wpOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmlsRGF5
MF9BYnNsKTsKIAotdm9pZCBCTV9UaW1lX0Zyb21EYXRlVGltZURheTBfTGliYyhiZW5jaG1hcms6
OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9UaW1lX0Zyb21DaXZpbERheTBfTGliYyhiZW5jaG1h
cms6OlN0YXRlJiBzdGF0ZSkgewogICAvLyBObyB0aW1lem9uZSBzdXBwb3J0LCBzbyBqdXN0IHVz
ZSBsb2NhbHRpbWUuCiAgIGludCBpID0gMDsKICAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nKCkp
IHsKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lRGF5MF9MaWJj
KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgICAgKytpOwogICB9CiB9Ci1CRU5DSE1BUkso
Qk1fVGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0xpYmMpOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNp
dmlsRGF5MF9MaWJjKTsKIAogLy8KIC8vIFRvL0Zyb21UaW1lc3BlYwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS90aW1lX25vcm1fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZV9ub3JtX3Rlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MzYyNDJlNDEyLi4wMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL3RpbWVfbm9ybV90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzA2
ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KLS8vCi0vLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKLS8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KLS8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAotLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCi0vLwotLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLS8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgot
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAotLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLS8vIFRo
aXMgZmlsZSBjb250YWlucyB0ZXN0cyBmb3IgRnJvbURhdGVUaW1lKCkgbm9ybWFsaXphdGlvbiwg
d2hpY2ggaXMKLS8vIHRpbWUtem9uZSBpbmRlcGVuZGVudCBzbyB3ZSBqdXN0IHVzZSBVVEMgdGhy
b3VnaG91dC4KLQotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0jaW5jbHVkZSA8bGltaXRzPgotCi0jaW5j
bHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUg
ImFic2wvdGltZS9pbnRlcm5hbC90ZXN0X3V0aWwuaCIKLSNpbmNsdWRlICJhYnNsL3RpbWUvdGlt
ZS5oIgotCi1uYW1lc3BhY2UgewotCi1URVNUKFRpbWVOb3JtQ2FzZSwgU2ltcGxlT3ZlcmZsb3cp
IHsKLSAgY29uc3QgYWJzbDo6VGltZVpvbmUgdXRjID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKLQot
ICBhYnNsOjpUaW1lQ29udmVyc2lvbiB0YyA9Ci0gICAgICBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUo
MjAxMywgMTEsIDE1LCAxNiwgMzIsIDU5ICsgMSwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9y
bWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5r
aW5kKTsKLSAgYWJzbDo6VGltZTo6QnJlYWtkb3duIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFC
U0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDExLCAxNSwgMTYsIDMzLCAwLCAwLCBm
YWxzZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDE1LCAxNiwg
NTkgKyAxLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVD
VF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5w
cmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxMywgMTEsIDE1
LCAxNywgMCwgMTQsIDAsIGZhbHNlKTsKLQotICB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgy
MDEzLCAxMSwgMTUsIDIzICsgMSwgMzIsIDE0LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3Jt
YWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtp
bmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1F
KGJkLCAyMDEzLCAxMSwgMTYsIDAsIDMyLCAxNCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6
Q29udmVydERhdGVUaW1lKDIwMTMsIDExLCAzMCArIDEsIDE2LCAzMiwgMTQsIHV0Yyk7Ci0gIEVY
UEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNp
b246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5U
RVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDEyLCAxLCAxNiwgMzIsIDE0LCAwLCBmYWxzZSk7
Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTIgKyAxLCAxNSwgMTYsIDMy
LCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShh
YnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4o
dXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxNCwgMSwgMTUsIDE2LCAz
MiwgMTQsIDAsIGZhbHNlKTsKLX0KLQotVEVTVChUaW1lTm9ybUNhc2UsIFNpbXBsZVVuZGVyZmxv
dykgewotICBjb25zdCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENUaW1lWm9uZSgpOwot
Ci0gIGFic2w6OlRpbWVDb252ZXJzaW9uIHRjID0gQ29udmVydERhdGVUaW1lKDIwMTMsIDExLCAx
NSwgMTYsIDMyLCAwIC0gMSwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0g
IEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYWJz
bDo6VGltZTo6QnJlYWtkb3duIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxf
RVhQRUNUX1RJTUUoYmQsIDIwMTMsIDExLCAxNSwgMTYsIDMxLCA1OSwgMCwgZmFsc2UpOwotCi0g
IHRjID0gQ29udmVydERhdGVUaW1lKDIwMTMsIDExLCAxNSwgMTYsIDAgLSAxLCAxNCwgdXRjKTsK
LSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29u
dmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJT
TF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxMywgMTEsIDE1LCAxNSwgNTksIDE0LCAwLCBm
YWxzZSk7Ci0KLSAgdGMgPSBDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDE1LCAwIC0gMSwgMzIs
IDE0LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFi
c2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1
dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEzLCAxMSwgMTQsIDIzLCAz
MiwgMTQsIDAsIGZhbHNlKTsKLQotICB0YyA9IENvbnZlcnREYXRlVGltZSgyMDEzLCAxMSwgMSAt
IDEsIDE2LCAzMiwgMTQsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBF
WFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGJkID0g
dGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDEw
LCAzMSwgMTYsIDMyLCAxNCwgMCwgZmFsc2UpOwotCi0gIHRjID0gQ29udmVydERhdGVUaW1lKDIw
MTMsIDEgLSAxLCAxNSwgMTYsIDMyLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFs
aXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5k
KTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShi
ZCwgMjAxMiwgMTIsIDE1LCAxNiwgMzIsIDE0LCAwLCBmYWxzZSk7Ci19Ci0KLVRFU1QoVGltZU5v
cm1DYXNlLCBNdWx0aXBsZU92ZXJmbG93KSB7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25lIHV0YyA9
IGFic2w6OlVUQ1RpbWVab25lKCk7Ci0gIGFic2w6OlRpbWVDb252ZXJzaW9uIHRjID0gQ29udmVy
dERhdGVUaW1lKDIwMTMsIDEyLCAzMSwgMjMsIDU5LCA1OSArIDEsIHV0Yyk7Ci0gIEVYUEVDVF9U
UlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVO
SVFVRSwgdGMua2luZCk7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IHRjLnByZS5Jbih1
dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDE0LCAxLCAxLCAwLCAwLCAw
LCAwLCBmYWxzZSk7Ci19Ci0KLVRFU1QoVGltZU5vcm1DYXNlLCBNdWx0aXBsZVVuZGVyZmxvdykg
ewotICBjb25zdCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENUaW1lWm9uZSgpOwotICBh
YnNsOjpUaW1lQ29udmVyc2lvbiB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDE0LCAxLCAx
LCAwLCAwLCAwIC0gMSwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVY
UEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYWJzbDo6
VGltZTo6QnJlYWtkb3duIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQ
RUNUX1RJTUUoYmQsIDIwMTMsIDEyLCAzMSwgMjMsIDU5LCA1OSwgMCwgZmFsc2UpOwotfQotCi1U
RVNUKFRpbWVOb3JtQ2FzZSwgT3ZlcmZsb3dMaW1pdHMpIHsKLSAgY29uc3QgYWJzbDo6VGltZVpv
bmUgdXRjID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gdGM7
Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZDsKLQotICBjb25zdCBpbnQga2ludG1heCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7Ci0gIHRjID0gYWJzbDo6Q29udmVydERhdGVU
aW1lKDAsIGtpbnRtYXgsIGtpbnRtYXgsIGtpbnRtYXgsIGtpbnRtYXgsIGtpbnRtYXgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6
ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7
Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQs
IDE4NTA4NTcxNSwgMTEsIDI3LCAxMiwgMjEsIDcsIDAsIGZhbHNlKTsKLQotICBjb25zdCBpbnQg
a2ludG1pbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7Ci0gIHRjID0gYWJzbDo6
Q29udmVydERhdGVUaW1lKDAsIGtpbnRtaW4sIGtpbnRtaW4sIGtpbnRtaW4sIGtpbnRtaW4sIGtp
bnRtaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Yyk7Ci0gIEVYUEVDVF9UUlVF
KHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFV
RSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQ
RUNUX1RJTUUoYmQsIC0xODUwODU3MTcsIDEwLCAzMSwgMTAsIDM3LCA1MiwgMCwgZmFsc2UpOwot
Ci0gIGNvbnN0IGludDY0X3QgbWF4X3llYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKTsKLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUobWF4X3llYXIsIDEyLCAzMSwg
MjMsIDU5LCA1OSwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVD
VF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgRVhQRUNUX0VR
KGFic2w6OkluZmluaXRlRnV0dXJlKCksIHRjLnByZSk7Ci0KLSAgY29uc3QgaW50NjRfdCBtaW5f
eWVhciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpOwotICB0YyA9IGFic2w6
OkNvbnZlcnREYXRlVGltZShtaW5feWVhciwgMSwgMSwgMCwgMCwgMCwgdXRjKTsKLSAgRVhQRUNU
X1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6
VU5JUVVFLCB0Yy5raW5kKTsKLSAgRVhQRUNUX0VRKGFic2w6OkluZmluaXRlUGFzdCgpLCB0Yy5w
cmUpOwotfQotCi1URVNUKFRpbWVOb3JtQ2FzZSwgQ29tcGxleE92ZXJmbG93KSB7Ci0gIGNvbnN0
IGFic2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7Ci0KLSAgYWJzbDo6VGlt
ZUNvbnZlcnNpb24gdGMgPQotICAgICAgQ29udmVydERhdGVUaW1lKDIwMTMsIDExLCAxNSwgMTYs
IDMyLCAxNCArIDEyMzQ1Njc4OSwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7
Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAg
YWJzbDo6VGltZTo6QnJlYWtkb3duIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJO
QUxfRVhQRUNUX1RJTUUoYmQsIDIwMTcsIDEwLCAxNCwgMTQsIDUsIDIzLCAwLCBmYWxzZSk7Ci0K
LSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDE1LCAxNiwgMzIgKyAxMjM0
NTY3LCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9F
UShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUu
SW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxNiwgMywgMjIsIDAs
IDM5LCAxNCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMs
IDExLCAxNSwgMTYgKyAxMjM0NTYsIDMyLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9y
bWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5r
aW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElN
RShiZCwgMjAyNywgMTIsIDE2LCAxNiwgMzIsIDE0LCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBhYnNs
OjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDE1ICsgMTIzNCwgMTYsIDMyLCAxNCwgdXRjKTsK
LSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29u
dmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJT
TF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxNywgNCwgMiwgMTYsIDMyLCAxNCwgMCwgZmFs
c2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDExICsgMTIzLCAxNSwg
MTYsIDMyLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVD
VF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5w
cmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAyNCwgMiwgMTUs
IDE2LCAzMiwgMTQsIDAsIGZhbHNlKTsKLX0KLQotVEVTVChUaW1lTm9ybUNhc2UsIENvbXBsZXhV
bmRlcmZsb3cpIHsKLSAgY29uc3QgYWJzbDo6VGltZVpvbmUgdXRjID0gYWJzbDo6VVRDVGltZVpv
bmUoKTsKLQotICBhYnNsOjpUaW1lQ29udmVyc2lvbiB0YyA9Ci0gICAgICBhYnNsOjpDb252ZXJ0
RGF0ZVRpbWUoMTk5OSwgMywgMCwgMCwgMCwgMCwgdXRjKTsgIC8vIHllYXIgNDAwCi0gIEVYUEVD
VF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246
OlVOSVFVRSwgdGMua2luZCk7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IHRjLnByZS5J
bih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAxOTk5LCAyLCAyOCwgMCwg
MCwgMCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDEx
LCAxNSwgMTYsIDMyLCAxNCAtIDEyMzQ1Njc4OSwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9y
bWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5r
aW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElN
RShiZCwgMjAwOSwgMTIsIDE3LCAxOCwgNTksIDUsIDAsIGZhbHNlKTsKLQotICB0YyA9IGFic2w6
OkNvbnZlcnREYXRlVGltZSgyMDEzLCAxMSwgMTUsIDE2LCAzMiAtIDEyMzQ1NjcsIDE0LCB1dGMp
OwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVD
b252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBB
QlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDExLCA3LCAxMiwgOCwgMjUsIDE0LCAwLCBm
YWxzZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDE1LCAxNiAt
IDEyMzQ1NiwgMzIsIDE0LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAg
RVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9
IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAxOTk5LCAx
MCwgMTYsIDE2LCAzMiwgMTQsIDAsIGZhbHNlKTsKLQotICB0YyA9IGFic2w6OkNvbnZlcnREYXRl
VGltZSgyMDEzLCAxMSwgMTUgLSAxMjM0LCAxNiwgMzIsIDE0LCB1dGMpOwotICBFWFBFQ1RfVFJV
RSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklR
VUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VY
UEVDVF9USU1FKGJkLCAyMDEwLCA2LCAzMCwgMTYsIDMyLCAxNCwgMCwgZmFsc2UpOwotCi0gIHRj
ID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDExIC0gMTIzLCAxNSwgMTYsIDMyLCAxNCwg
dXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpU
aW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsK
LSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAwMywgOCwgMTUsIDE2LCAzMiwgMTQs
IDAsIGZhbHNlKTsKLX0KLQotVEVTVChUaW1lTm9ybUNhc2UsIE1pc2htYXNoKSB7Ci0gIGNvbnN0
IGFic2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7Ci0KLSAgYWJzbDo6VGlt
ZUNvbnZlcnNpb24gdGMgPQotICAgICAgYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDExIC0g
MTIzLCAxNSArIDEyMzQsIDE2IC0gMTIzNDU2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMyICsgMTIzNDU2NywgMTQgLSAxMjM0NTY3ODksIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5v
cm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMu
a2luZCk7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBB
QlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAxOTkxLCA1LCA5LCAzLCA2LCA1LCAwLCBmYWxz
ZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEgKyAxMjMsIDE1IC0g
MTIzNCwgMTYgKyAxMjM0NTYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyIC0gMTIz
NDU2NywgMTQgKyAxMjM0NTY3ODksIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQp
OwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0g
IGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIw
MzYsIDUsIDI0LCA1LCA1OCwgMjMsIDAsIGZhbHNlKTsKLQotICAvLyBIZXJlIGlzIGEgbm9ybWFs
aXphdGlvbiBjYXNlIHdlIGdvdCB3cm9uZyBmb3IgYSB3aGlsZS4gIEJlY2F1c2UgdGhlCi0gIC8v
IGRheSBpcyBjb252ZXJ0ZWQgdG8gIjEiIHdpdGhpbiBhIDQwMC15ZWFyICgxNDYwOTctZGF5KSBw
ZXJpb2QsIHdlCi0gIC8vIGRpZG4ndCBuZWVkIHRvIHJvbGwgdGhlIG1vbnRoIGFuZCBzbyB3ZSBk
aWRuJ3QgbWFyayBpdCBhcyBub3JtYWxpemVkLgotICB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGlt
ZSgyMDEzLCAxMSwgLTE0NjA5NyArIDEsIDE2LCAzMiwgMTQsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVF
KHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFV
RSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQ
RUNUX1RJTUUoYmQsIDE2MTMsIDExLCAxLCAxNiwgMzIsIDE0LCAwLCBmYWxzZSk7Ci0KLSAgLy8g
RXZlbiB0aG91Z2ggdGhlIG1vbnRoIG92ZXJmbG93IGNvbXBlbnNhdGVzIGZvciB0aGUgZGF5IHVu
ZGVyZmxvdywKLSAgLy8gdGhpcyBzaG91bGQgc3RpbGwgYmUgbWFya2VkIGFzIG5vcm1hbGl6ZWQu
Ci0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDExICsgNDAwICogMTIsIC0xNDYw
OTcgKyAxLCAxNiwgMzIsIDE0LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsK
LSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBi
ZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEz
LCAxMSwgMSwgMTYsIDMyLCAxNCwgMCwgZmFsc2UpOwotfQotCi1URVNUKFRpbWVOb3JtQ2FzZSwg
TGVhcFllYXJzKSB7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVa
b25lKCk7Ci0KLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gdGMgPQotICAgICAgYWJzbDo6Q29udmVy
dERhdGVUaW1lKDIwMTMsIDIsIDI4ICsgMSwgMCwgMCwgMCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUo
dGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVF
LCB0Yy5raW5kKTsKLSAgYWJzbDo6VGltZTo6QnJlYWtkb3duIGJkID0gdGMucHJlLkluKHV0Yyk7
Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDMsIDEsIDAsIDAsIDAsIDAs
IGZhbHNlKTsKLQotICB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDEyLCAyLCAyOCArIDEs
IDAsIDAsIDAsIHV0Yyk7Ci0gIEVYUEVDVF9GQUxTRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNU
X0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnBy
ZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEyLCAyLCAyOSwg
MCwgMCwgMCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMDAs
IDIsIDI4ICsgMSwgMCwgMCwgMCwgdXRjKTsKLSAgRVhQRUNUX0ZBTFNFKHRjLm5vcm1hbGl6ZWQp
OwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0g
IGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIw
MDAsIDIsIDI5LCAwLCAwLCAwLCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0
ZVRpbWUoMTkwMCwgMiwgMjggKyAxLCAwLCAwLCAwLCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5u
b3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRj
LmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9U
SU1FKGJkLCAxOTAwLCAzLCAxLCAwLCAwLCAwLCAwLCBmYWxzZSk7Ci19Ci0KLS8vIENvbnZlcnQg
YWxsIHRoZSBkYXlzIGZyb20gMTk3MC0xLTEgdG8gMTk3MC0xLTE0NjA5NyAoYWthIDIzNjktMTIt
MzEpCi0vLyBhbmQgY2hlY2sgdGhhdCB0aGV5IG5vcm1hbGl6ZSB0byB0aGUgZXhwZWN0ZWQgdGlt
ZS4gIDE0NjA5NyBkYXlzIHNwYW4KLS8vIHRoZSA0MDAteWVhciBHcmVnb3JpYW4gY3ljbGUgdXNl
ZCBkdXJpbmcgbm9ybWFsaXphdGlvbi4KLVRFU1QoVGltZU5vcm1DYXNlLCBBbGxUaGVEYXlzKSB7
Ci0gIGNvbnN0IGFic2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7Ci0gIGFi
c2w6OlRpbWUgZXhwX3RpbWUgPSBhYnNsOjpVbml4RXBvY2goKTsKLQotICBmb3IgKGludCBkYXkg
PSAxOyBkYXkgPD0gMTQ2MDk3OyArK2RheSkgewotICAgIGFic2w6OlRpbWVDb252ZXJzaW9uIHRj
ID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDE5NzAsIDEsIGRheSwgMCwgMCwgMCwgdXRjKTsKLSAg
ICBFWFBFQ1RfRVEoZGF5ID4gMzEsIHRjLm5vcm1hbGl6ZWQpOwotICAgIEVYUEVDVF9FUShhYnNs
OjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgICBFWFBFQ1RfRVEoZXhwX3Rp
bWUsIHRjLnByZSk7Ci0gICAgZXhwX3RpbWUgKz0gYWJzbDo6SG91cnMoMjQpOwotICB9Ci19Ci0K
LX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lX3Rlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL3RpbWVfdGVzdC5jYwppbmRleCA0ZjhmNThhNmVmMy4uMzdhZjM5ZDk5ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZV90
ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNCw2
ICsxNCwxMCBAQAogCiAjaW5jbHVkZSAiYWJzbC90aW1lL3RpbWUuaCIKIAorI2lmIGRlZmluZWQo
X01TQ19WRVIpCisjaW5jbHVkZSA8d2luc29jazIuaD4gIC8vIGZvciB0aW1ldmFsCisjZW5kaWYK
KwogI2luY2x1ZGUgPGNocm9ubz4gIC8vIE5PTElOVChidWlsZC9jKysxMSkKICNpbmNsdWRlIDxj
c3RyaW5nPgogI2luY2x1ZGUgPGN0aW1lPgpAQCAtMjgsNiArMzIsMjcgQEAKIAogbmFtZXNwYWNl
IHsKIAorI2lmIGRlZmluZWQoR1RFU1RfVVNFU19TSU1QTEVfUkUpICYmIEdURVNUX1VTRVNfU0lN
UExFX1JFCitjb25zdCBjaGFyIGtab25lQWJiclJFW10gPSAiLioiOyAgLy8ganVzdCBwdW50Cisj
ZWxzZQorY29uc3QgY2hhciBrWm9uZUFiYnJSRVtdID0gIltBLVphLXpdezMsNH18Wy0rXVswLTld
ezJ9KFswLTldezJ9KT8iOworI2VuZGlmCisKKy8vIFRoaXMgaGVscGVyIGlzIGEgbWFjcm8gc28g
dGhhdCBmYWlsZWQgZXhwZWN0YXRpb25zIHNob3cgdXAgd2l0aCB0aGUKKy8vIGNvcnJlY3QgbGlu
ZSBudW1iZXJzLgorI2RlZmluZSBFWFBFQ1RfQ0lWSUxfSU5GTyhjaSwgeSwgbSwgZCwgaCwgbWlu
LCBzLCBvZmYsIGlzZHN0KSAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0VRKHksIGNp
LmNzLnllYXIoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVY
UEVDVF9FUShtLCBjaS5jcy5tb250aCgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBFWFBFQ1RfRVEoZCwgY2kuY3MuZGF5KCkpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0VRKGgsIGNpLmNzLmhvdXIoKSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9FUShtaW4sIGNpLmNz
Lm1pbnV0ZSgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1Rf
RVEocywgY2kuY3Muc2Vjb25kKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgRVhQRUNUX0VRKG9mZiwgY2kub2Zmc2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEVYUEVDVF9FUShpc2RzdCwgY2kuaXNfZHN0KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVEhBVChjaS56b25lX2FiYnIs
IHRlc3Rpbmc6Ok1hdGNoZXNSZWdleChrWm9uZUFiYnJSRSkpOyBcCisgIH0gd2hpbGUgKDApCisK
IC8vIEEgZ01vY2sgbWF0Y2hlciB0byBtYXRjaCB0aW1lc3BlYyB2YWx1ZXMuIFVzZSB0aGlzIG1h
dGNoZXIgbGlrZToKIC8vIHRpbWVzcGVjIHRzMSwgdHMyOwogLy8gRVhQRUNUX1RIQVQodHMxLCBU
aW1lc3BlY01hdGNoZXIodHMyKSk7CkBAIC04NCwxMCArMTA5LDEwIEBAIFRFU1QoVGltZSwgVmFs
dWVTZW1hbnRpY3MpIHsKIH0KIAogVEVTVChUaW1lLCBVbml4RXBvY2gpIHsKLSAgYWJzbDo6VGlt
ZTo6QnJlYWtkb3duIGJkID0gYWJzbDo6VW5peEVwb2NoKCkuSW4oYWJzbDo6VVRDVGltZVpvbmUo
KSk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDE5NzAsIDEsIDEsIDAsIDAsIDAs
IDAsIGZhbHNlKTsKLSAgRVhQRUNUX0VRKGFic2w6Olplcm9EdXJhdGlvbigpLCBiZC5zdWJzZWNv
bmQpOwotICBFWFBFQ1RfRVEoNCwgYmQud2Vla2RheSk7ICAvLyBUaHVyc2RheQorICBjb25zdCBh
dXRvIGNpID0gYWJzbDo6VVRDVGltZVpvbmUoKS5BdChhYnNsOjpVbml4RXBvY2goKSk7CisgIEVY
UEVDVF9FUShhYnNsOjpDaXZpbFNlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgY2kuY3MpOwor
ICBFWFBFQ1RfRVEoYWJzbDo6WmVyb0R1cmF0aW9uKCksIGNpLnN1YnNlY29uZCk7CisgIEVYUEVD
VF9FUShhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSwgYWJzbDo6R2V0V2Vla2RheShjaS5jcykpOwog
fQogCiBURVNUKFRpbWUsIEJyZWFrZG93bikgewpAQCAtOTUsMjYgKzEyMCwyNiBAQCBURVNUKFRp
bWUsIEJyZWFrZG93bikgewogICBhYnNsOjpUaW1lIHQgPSBhYnNsOjpVbml4RXBvY2goKTsKIAog
ICAvLyBUaGUgVW5peCBlcG9jaCBhcyBzZWVuIGluIE5ZQy4KLSAgYWJzbDo6VGltZTo6QnJlYWtk
b3duIGJkID0gdC5Jbih0eik7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDE5Njks
IDEyLCAzMSwgMTksIDAsIDAsIC0xODAwMCwgZmFsc2UpOwotICBFWFBFQ1RfRVEoYWJzbDo6WmVy
b0R1cmF0aW9uKCksIGJkLnN1YnNlY29uZCk7Ci0gIEVYUEVDVF9FUSgzLCBiZC53ZWVrZGF5KTsg
IC8vIFdlZG5lc2RheQorICBhdXRvIGNpID0gdHouQXQodCk7CisgIEVYUEVDVF9DSVZJTF9JTkZP
KGNpLCAxOTY5LCAxMiwgMzEsIDE5LCAwLCAwLCAtMTgwMDAsIGZhbHNlKTsKKyAgRVhQRUNUX0VR
KGFic2w6Olplcm9EdXJhdGlvbigpLCBjaS5zdWJzZWNvbmQpOworICBFWFBFQ1RfRVEoYWJzbDo6
V2Vla2RheTo6d2VkbmVzZGF5LCBhYnNsOjpHZXRXZWVrZGF5KGNpLmNzKSk7CiAKICAgLy8gSnVz
dCBiZWZvcmUgdGhlIGVwb2NoLgogICB0IC09IGFic2w6Ok5hbm9zZWNvbmRzKDEpOwotICBiZCA9
IHQuSW4odHopOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAxOTY5LCAxMiwgMzEs
IDE4LCA1OSwgNTksIC0xODAwMCwgZmFsc2UpOwotICBFWFBFQ1RfRVEoYWJzbDo6TmFub3NlY29u
ZHMoOTk5OTk5OTk5KSwgYmQuc3Vic2Vjb25kKTsKLSAgRVhQRUNUX0VRKDMsIGJkLndlZWtkYXkp
OyAgLy8gV2VkbmVzZGF5CisgIGNpID0gdHouQXQodCk7CisgIEVYUEVDVF9DSVZJTF9JTkZPKGNp
LCAxOTY5LCAxMiwgMzEsIDE4LCA1OSwgNTksIC0xODAwMCwgZmFsc2UpOworICBFWFBFQ1RfRVEo
YWJzbDo6TmFub3NlY29uZHMoOTk5OTk5OTk5KSwgY2kuc3Vic2Vjb25kKTsKKyAgRVhQRUNUX0VR
KGFic2w6OldlZWtkYXk6OndlZG5lc2RheSwgYWJzbDo6R2V0V2Vla2RheShjaS5jcykpOwogCiAg
IC8vIFNvbWUgdGltZSBsYXRlci4KICAgdCArPSBhYnNsOjpIb3VycygyNCkgKiAyNzM1OwogICB0
ICs9IGFic2w6OkhvdXJzKDE4KSArIGFic2w6Ok1pbnV0ZXMoMzApICsgYWJzbDo6U2Vjb25kcygx
NSkgKwogICAgICAgIGFic2w6Ok5hbm9zZWNvbmRzKDkpOwotICBiZCA9IHQuSW4odHopOwotICBB
QlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAxOTc3LCA2LCAyOCwgMTQsIDMwLCAxNSwgLTE0
NDAwLCB0cnVlKTsKLSAgRVhQRUNUX0VRKDgsIGJkLnN1YnNlY29uZCAvIGFic2w6Ok5hbm9zZWNv
bmRzKDEpKTsKLSAgRVhQRUNUX0VRKDIsIGJkLndlZWtkYXkpOyAgLy8gVHVlc2RheQorICBjaSA9
IHR6LkF0KHQpOworICBFWFBFQ1RfQ0lWSUxfSU5GTyhjaSwgMTk3NywgNiwgMjgsIDE0LCAzMCwg
MTUsIC0xNDQwMCwgdHJ1ZSk7CisgIEVYUEVDVF9FUSg4LCBjaS5zdWJzZWNvbmQgLyBhYnNsOjpO
YW5vc2Vjb25kcygxKSk7CisgIEVYUEVDVF9FUShhYnNsOjpXZWVrZGF5Ojp0dWVzZGF5LCBhYnNs
OjpHZXRXZWVrZGF5KGNpLmNzKSk7CiB9CiAKIFRFU1QoVGltZSwgQWRkaXRpdmVPcGVyYXRvcnMp
IHsKQEAgLTU1MCw2NyArNTc1LDYzIEBAIFRFU1QoVGltZSwgVG9DaHJvbm9UaW1lKSB7CiAgICAg
ICAgICAgICBhYnNsOjpUb0Nocm9ub1RpbWUoYWJzbDo6VW5peEVwb2NoKCkgLSB0aWNrKSk7CiB9
CiAKLVRFU1QoVGltZSwgQ29udmVydERhdGVUaW1lKSB7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25l
IHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25lIGdvb2cg
PQotICAgICAgYWJzbDo6dGltZV9pbnRlcm5hbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL0xvc19B
bmdlbGVzIik7CitURVNUKFRpbWUsIFRpbWVab25lQXQpIHsKICAgY29uc3QgYWJzbDo6VGltZVpv
bmUgbnljID0KICAgICAgIGFic2w6OnRpbWVfaW50ZXJuYWw6OkxvYWRUaW1lWm9uZSgiQW1lcmlj
YS9OZXdfWW9yayIpOwogICBjb25zdCBzdGQ6OnN0cmluZyBmbXQgPSAiJWEsICVlICViICVZICVI
OiVNOiVTICV6ICglWikiOwogCi0gIC8vIEEgc2ltcGxlIGNhc2Ugb2Ygbm9ybWFsaXphdGlvbi4K
LSAgYWJzbDo6VGltZUNvbnZlcnNpb24gb2N0MzIgPSBDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTAs
IDMyLCA4LCAzMCwgMCwgZ29vZyk7Ci0gIEVYUEVDVF9UUlVFKG9jdDMyLm5vcm1hbGl6ZWQpOwot
ICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgb2N0MzIua2luZCk7Ci0g
IGFic2w6OlRpbWVDb252ZXJzaW9uIG5vdjAxID0gQ29udmVydERhdGVUaW1lKDIwMTMsIDExLCAx
LCA4LCAzMCwgMCwgZ29vZyk7Ci0gIEVYUEVDVF9GQUxTRShub3YwMS5ub3JtYWxpemVkKTsKLSAg
RVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIG5vdjAxLmtpbmQpOwotICBF
WFBFQ1RfRVEob2N0MzIucHJlLCBub3YwMS5wcmUpOwotICBFWFBFQ1RfRVEoIkZyaSwgIDEgTm92
IDIwMTMgMDg6MzA6MDAgLTA3MDAgKFBEVCkiLAotICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGlt
ZShmbXQsIG5vdjAxLnByZSwgZ29vZykpOworICAvLyBBIG5vbi10cmFuc2l0aW9uIHdoZXJlIHRo
ZSBjaXZpbCB0aW1lIGlzIHVuaXF1ZS4KKyAgYWJzbDo6Q2l2aWxTZWNvbmQgbm92MDEoMjAxMywg
MTEsIDEsIDgsIDMwLCAwKTsKKyAgY29uc3QgYXV0byBub3YwMV9jaSA9IG55Yy5BdChub3YwMSk7
CisgIEVYUEVDVF9FUShhYnNsOjpUaW1lWm9uZTo6VGltZUluZm86OlVOSVFVRSwgbm92MDFfY2ku
a2luZCk7CisgIEVYUEVDVF9FUSgiRnJpLCAgMSBOb3YgMjAxMyAwODozMDowMCAtMDQwMCAoRURU
KSIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgbm92MDFfY2kucHJlLCBueWMp
KTsKKyAgRVhQRUNUX0VRKG5vdjAxX2NpLnByZSwgbm92MDFfY2kudHJhbnMpOworICBFWFBFQ1Rf
RVEobm92MDFfY2kucHJlLCBub3YwMV9jaS5wb3N0KTsKKyAgRVhQRUNUX0VRKG5vdjAxX2NpLnBy
ZSwgYWJzbDo6RnJvbUNpdmlsKG5vdjAxLCBueWMpKTsKIAogICAvLyBBIFNwcmluZyBEU1QgdHJh
bnNpdGlvbiwgd2hlbiB0aGVyZSBpcyBhIGdhcCBpbiBjaXZpbCB0aW1lCiAgIC8vIGFuZCB3ZSBw
cmVmZXIgdGhlIGxhdGVyIG9mIHRoZSBwb3NzaWJsZSBpbnRlcnByZXRhdGlvbnMgb2YgYQogICAv
LyBub24tZXhpc3RlbnQgdGltZS4KLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gbWFyMTMgPSBDb252
ZXJ0RGF0ZVRpbWUoMjAxMSwgMywgMTMsIDIsIDE1LCAwLCBueWMpOwotICBFWFBFQ1RfRkFMU0Uo
bWFyMTMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6U0tJ
UFBFRCwgbWFyMTMua2luZCk7CisgIGFic2w6OkNpdmlsU2Vjb25kIG1hcjEzKDIwMTEsIDMsIDEz
LCAyLCAxNSwgMCk7CisgIGNvbnN0IGF1dG8gbWFyX2NpID0gbnljLkF0KG1hcjEzKTsKKyAgRVhQ
RUNUX0VRKGFic2w6OlRpbWVab25lOjpUaW1lSW5mbzo6U0tJUFBFRCwgbWFyX2NpLmtpbmQpOwog
ICBFWFBFQ1RfRVEoIlN1biwgMTMgTWFyIDIwMTEgMDM6MTU6MDAgLTA0MDAgKEVEVCkiLAotICAg
ICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG1hcjEzLnByZSwgbnljKSk7CisgICAgICAg
ICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgbWFyX2NpLnByZSwgbnljKSk7CiAgIEVYUEVDVF9F
USgiU3VuLCAxMyBNYXIgMjAxMSAwMzowMDowMCAtMDQwMCAoRURUKSIsCi0gICAgICAgICAgICBh
YnNsOjpGb3JtYXRUaW1lKGZtdCwgbWFyMTMudHJhbnMsIG55YykpOworICAgICAgICAgICAgYWJz
bDo6Rm9ybWF0VGltZShmbXQsIG1hcl9jaS50cmFucywgbnljKSk7CiAgIEVYUEVDVF9FUSgiU3Vu
LCAxMyBNYXIgMjAxMSAwMToxNTowMCAtMDUwMCAoRVNUKSIsCi0gICAgICAgICAgICBhYnNsOjpG
b3JtYXRUaW1lKGZtdCwgbWFyMTMucG9zdCwgbnljKSk7Ci0gIEVYUEVDVF9FUShtYXIxMy5wcmUs
IGFic2w6OkZyb21EYXRlVGltZSgyMDExLCAzLCAxMywgMiwgMTUsIDAsIG55YykpOworICAgICAg
ICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG1hcl9jaS5wb3N0LCBueWMpKTsKKyAgRVhQRUNU
X0VRKG1hcl9jaS50cmFucywgYWJzbDo6RnJvbUNpdmlsKG1hcjEzLCBueWMpKTsKIAogICAvLyBB
IEZhbGwgRFNUIHRyYW5zaXRpb24sIHdoZW4gY2l2aWwgdGltZXMgYXJlIHJlcGVhdGVkIGFuZAog
ICAvLyB3ZSBwcmVmZXIgdGhlIGVhcmxpZXIgb2YgdGhlIHBvc3NpYmxlIGludGVycHJldGF0aW9u
cyBvZiBhbgogICAvLyBhbWJpZ3VvdXMgdGltZS4KLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gbm92
MDYgPSBDb252ZXJ0RGF0ZVRpbWUoMjAxMSwgMTEsIDYsIDEsIDE1LCAwLCBueWMpOwotICBFWFBF
Q1RfRkFMU0Uobm92MDYubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVy
c2lvbjo6UkVQRUFURUQsIG5vdjA2LmtpbmQpOworICBhYnNsOjpDaXZpbFNlY29uZCBub3YwNigy
MDExLCAxMSwgNiwgMSwgMTUsIDApOworICBjb25zdCBhdXRvIG5vdjA2X2NpID0gbnljLkF0KG5v
djA2KTsKKyAgRVhQRUNUX0VRKGFic2w6OlRpbWVab25lOjpUaW1lSW5mbzo6UkVQRUFURUQsIG5v
djA2X2NpLmtpbmQpOwogICBFWFBFQ1RfRVEoIlN1biwgIDYgTm92IDIwMTEgMDE6MTU6MDAgLTA0
MDAgKEVEVCkiLAotICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG5vdjA2LnByZSwg
bnljKSk7CisgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgbm92MDZfY2kucHJlLCBu
eWMpKTsKICAgRVhQRUNUX0VRKCJTdW4sICA2IE5vdiAyMDExIDAxOjAwOjAwIC0wNTAwIChFU1Qp
IiwKLSAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBub3YwNi50cmFucywgbnljKSk7
CisgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgbm92MDZfY2kudHJhbnMsIG55Yykp
OwogICBFWFBFQ1RfRVEoIlN1biwgIDYgTm92IDIwMTEgMDE6MTU6MDAgLTA1MDAgKEVTVCkiLAot
ICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG5vdjA2LnBvc3QsIG55YykpOwotICBF
WFBFQ1RfRVEobm92MDYucHJlLCBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxMSwgMTEsIDYsIDEsIDE1
LCAwLCBueWMpKTsKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBub3YwNl9jaS5w
b3N0LCBueWMpKTsKKyAgRVhQRUNUX0VRKG5vdjA2X2NpLnByZSwgYWJzbDo6RnJvbUNpdmlsKG5v
djA2LCBueWMpKTsKIAogICAvLyBDaGVjayB0aGF0ICh0aW1lX3QpIC0xIGlzIGhhbmRsZWQgY29y
cmVjdGx5LgotICBhYnNsOjpUaW1lQ29udmVyc2lvbiBtaW51czEgPSBDb252ZXJ0RGF0ZVRpbWUo
MTk2OSwgMTIsIDMxLCAxOCwgNTksIDU5LCBueWMpOwotICBFWFBFQ1RfRkFMU0UobWludXMxLm5v
cm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgbWlu
dXMxLmtpbmQpOwotICBFWFBFQ1RfRVEoLTEsIGFic2w6OlRvVGltZVQobWludXMxLnByZSkpOwor
ICBhYnNsOjpDaXZpbFNlY29uZCBtaW51czEoMTk2OSwgMTIsIDMxLCAxOCwgNTksIDU5KTsKKyAg
Y29uc3QgYXV0byBtaW51czFfY2wgPSBueWMuQXQobWludXMxKTsKKyAgRVhQRUNUX0VRKGFic2w6
OlRpbWVab25lOjpUaW1lSW5mbzo6VU5JUVVFLCBtaW51czFfY2wua2luZCk7CisgIEVYUEVDVF9F
USgtMSwgYWJzbDo6VG9UaW1lVChtaW51czFfY2wucHJlKSk7CiAgIEVYUEVDVF9FUSgiV2VkLCAz
MSBEZWMgMTk2OSAxODo1OTo1OSAtMDUwMCAoRVNUKSIsCi0gICAgICAgICAgICBhYnNsOjpGb3Jt
YXRUaW1lKGZtdCwgbWludXMxLnByZSwgbnljKSk7CisgICAgICAgICAgICBhYnNsOjpGb3JtYXRU
aW1lKGZtdCwgbWludXMxX2NsLnByZSwgbnljKSk7CiAgIEVYUEVDVF9FUSgiV2VkLCAzMSBEZWMg
MTk2OSAyMzo1OTo1OSArMDAwMCAoVVRDKSIsCi0gICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1l
KGZtdCwgbWludXMxLnByZSwgdXRjKSk7CisgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZt
dCwgbWludXMxX2NsLnByZSwgYWJzbDo6VVRDVGltZVpvbmUoKSkpOwogfQogCi0vLyBGcm9tRGF0
ZVRpbWUoeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjLCBVVENUaW1lWm9uZSgpKSBoYXMK
LS8vIGEgc3BlY2lhbGl6ZWQgZmFzdHBhdGggaW1wbGVtZW50YXRpb24gd2hpY2ggd2UgZXhlcmNp
c2UgaGVyZS4KLVRFU1QoVGltZSwgRnJvbURhdGVUaW1lVVRDKSB7CisvLyBGcm9tQ2l2aWwoQ2l2
aWxTZWNvbmQoeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjKSwgVVRDVGltZVpvbmUoKSkK
Ky8vIGhhcyBhIHNwZWNpYWxpemVkIGZhc3RwYXRoIGltcGxlbWVudGF0aW9uLCB3aGljaCB3ZSBl
eGVyY2lzZSBoZXJlLgorVEVTVChUaW1lLCBGcm9tQ2l2aWxVVEMpIHsKICAgY29uc3QgYWJzbDo6
VGltZVpvbmUgdXRjID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKICAgY29uc3Qgc3RkOjpzdHJpbmcg
Zm10ID0gIiVhLCAlZSAlYiAlWSAlSDolTTolUyAleiAoJVopIjsKICAgY29uc3QgaW50IGtNYXgg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwpAQCAtNjE4LDY1ICs2MzksMzYgQEAg
VEVTVChUaW1lLCBGcm9tRGF0ZVRpbWVVVEMpIHsKICAgYWJzbDo6VGltZSB0OwogCiAgIC8vIDI5
MjA5MTk0MDg4MSBpcyB0aGUgbGFzdCBwb3NpdGl2ZSB5ZWFyIHRvIHVzZSB0aGUgZmFzdHBhdGgu
Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjkyMDkxOTQwODgxLCBrTWF4LCBrTWF4LCBrTWF4
LCBrTWF4LCBrTWF4LCB1dGMpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKAorICAgICAgYWJzbDo6
Q2l2aWxTZWNvbmQoMjkyMDkxOTQwODgxLCBrTWF4LCBrTWF4LCBrTWF4LCBrTWF4LCBrTWF4KSwg
dXRjKTsKICAgRVhQRUNUX0VRKCJGcmksIDI1IE5vdiAyOTIyNzcwMjY1OTYgMTI6MjE6MDcgKzAw
MDAgKFVUQykiLAogICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIHQsIHV0YykpOwot
ICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDI5MjA5MTk0MDg4Miwga01heCwga01heCwga01heCwg
a01heCwga01heCwgdXRjKTsKLSAgRVhQRUNUX0VRKCJpbmZpbml0ZS1mdXR1cmUiLCBhYnNsOjpG
b3JtYXRUaW1lKGZtdCwgdCwgdXRjKSk7ICAvLyBubyBvdmVyZmxvdwotICB0ID0gYWJzbDo6RnJv
bURhdGVUaW1lKAotICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCksIGtN
YXgsIGtNYXgsIGtNYXgsIGtNYXgsIGtNYXgsIHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwo
CisgICAgICBhYnNsOjpDaXZpbFNlY29uZCgyOTIwOTE5NDA4ODIsIGtNYXgsIGtNYXgsIGtNYXgs
IGtNYXgsIGtNYXgpLCB1dGMpOwogICBFWFBFQ1RfRVEoImluZmluaXRlLWZ1dHVyZSIsIGFic2w6
OkZvcm1hdFRpbWUoZm10LCB0LCB1dGMpKTsgIC8vIG5vIG92ZXJmbG93CiAKICAgLy8gLTI5MjA5
MTkzNjk0MCBpcyB0aGUgbGFzdCBuZWdhdGl2ZSB5ZWFyIHRvIHVzZSB0aGUgZmFzdHBhdGguCi0g
IHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoLTI5MjA5MTkzNjk0MCwga01pbiwga01pbiwga01pbiwg
a01pbiwga01pbiwgdXRjKTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbCgKKyAgICAgIGFic2w6OkNp
dmlsU2Vjb25kKC0yOTIwOTE5MzY5NDAsIGtNaW4sIGtNaW4sIGtNaW4sIGtNaW4sIGtNaW4pLCB1
dGMpOwogICBFWFBFQ1RfRVEoIkZyaSwgIDEgTm92IC0yOTIyNzcwMjI2NTcgMTA6Mzc6NTIgKzAw
MDAgKFVUQykiLAogICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIHQsIHV0YykpOwot
ICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKC0yOTIwOTE5MzY5NDEsIGtNaW4sIGtNaW4sIGtNaW4s
IGtNaW4sIGtNaW4sIHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoCisgICAgICBhYnNsOjpD
aXZpbFNlY29uZCgtMjkyMDkxOTM2OTQxLCBrTWluLCBrTWluLCBrTWluLCBrTWluLCBrTWluKSwg
dXRjKTsKICAgRVhQRUNUX0VRKCJpbmZpbml0ZS1wYXN0IiwgYWJzbDo6Rm9ybWF0VGltZShmbXQs
IHQsIHV0YykpOyAgLy8gbm8gdW5kZXJmbG93Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoCi0g
ICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSwga01pbiwga01pbiwga01p
biwga01pbiwga01pbiwgdXRjKTsKLSAgRVhQRUNUX0VRKCJpbmZpbml0ZS1wYXN0IiwgYWJzbDo6
Rm9ybWF0VGltZShmbXQsIHQsIHV0YykpOyAgLy8gbm8gb3ZlcmZsb3cKIAogICAvLyBDaGVjayB0
aGF0IHdlJ3JlIGNvdW50aW5nIGxlYXAgeWVhcnMgY29ycmVjdGx5LgotICB0ID0gYWJzbDo6RnJv
bURhdGVUaW1lKDE5MDAsIDIsIDI4LCAyMywgNTksIDU5LCB1dGMpOworICB0ID0gYWJzbDo6RnJv
bUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDE5MDAsIDIsIDI4LCAyMywgNTksIDU5KSwgdXRjKTsK
ICAgRVhQRUNUX0VRKCJXZWQsIDI4IEZlYiAxOTAwIDIzOjU5OjU5ICswMDAwIChVVEMpIiwKICAg
ICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCB0LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZy
b21EYXRlVGltZSgxOTAwLCAzLCAxLCAwLCAwLCAwLCB1dGMpOworICB0ID0gYWJzbDo6RnJvbUNp
dmlsKGFic2w6OkNpdmlsU2Vjb25kKDE5MDAsIDMsIDEsIDAsIDAsIDApLCB1dGMpOwogICBFWFBF
Q1RfRVEoIlRodSwgIDEgTWFyIDE5MDAgMDA6MDA6MDAgKzAwMDAgKFVUQykiLAogICAgICAgICAg
ICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURhdGVU
aW1lKDIwMDAsIDIsIDI5LCAyMywgNTksIDU5LCB1dGMpOworICB0ID0gYWJzbDo6RnJvbUNpdmls
KGFic2w6OkNpdmlsU2Vjb25kKDIwMDAsIDIsIDI5LCAyMywgNTksIDU5KSwgdXRjKTsKICAgRVhQ
RUNUX0VRKCJUdWUsIDI5IEZlYiAyMDAwIDIzOjU5OjU5ICswMDAwIChVVEMpIiwKICAgICAgICAg
ICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCB0LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRl
VGltZSgyMDAwLCAzLCAxLCAwLCAwLCAwLCB1dGMpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFi
c2w6OkNpdmlsU2Vjb25kKDIwMDAsIDMsIDEsIDAsIDAsIDApLCB1dGMpOwogICBFWFBFQ1RfRVEo
IldlZCwgIDEgTWFyIDIwMDAgMDA6MDA6MDAgKzAwMDAgKFVUQykiLAogICAgICAgICAgICAgYWJz
bDo6Rm9ybWF0VGltZShmbXQsIHQsIHV0YykpOwotCi0gIC8vIENoZWNrIG5vcm1hbGl6YXRpb24u
Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHltZGhtcyA9ICIlWS0lbS0lZCAlSDolTTolUyI7Ci0gIHQg
PSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMSwgMSwgMCwgMCwgNjAsIHV0Yyk7Ci0gIEVYUEVD
VF9FUSgiMjAxNS0wMS0wMSAwMDowMTowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1
dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAxLCAxLCAwLCA2MCwgMCwgdXRj
KTsKLSAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxIDAxOjAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5
bWRobXMsIHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEsIDEsIDI0
LCAwLCAwLCB1dGMpOwotICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDIgMDA6MDA6MDAiLCBhYnNsOjpG
b3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAx
NSwgMSwgMzIsIDAsIDAsIDAsIHV0Yyk7Ci0gIEVYUEVDVF9FUSgiMjAxNS0wMi0wMSAwMDowMDow
MCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZyb21E
YXRlVGltZSgyMDE1LCAxMywgMSwgMCwgMCwgMCwgdXRjKTsKLSAgRVhQRUNUX0VRKCIyMDE2LTAx
LTAxIDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOwotICB0ID0g
YWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEzLCAzMiwgNjAsIDYwLCA2MCwgdXRjKTsKLSAgRVhQ
RUNUX0VRKCIyMDE2LTAyLTAzIDEzOjAxOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQs
IHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEsIDEsIDAsIDAsIC0xLCB1
dGMpOwotICBFWFBFQ1RfRVEoIjIwMTQtMTItMzEgMjM6NTk6NTkiLCBhYnNsOjpGb3JtYXRUaW1l
KHltZGhtcywgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMSwgMSwg
MCwgLTEsIDAsIHV0Yyk7Ci0gIEVYUEVDVF9FUSgiMjAxNC0xMi0zMSAyMzo1OTowMCIsIGFic2w6
OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgy
MDE1LCAxLCAxLCAtMSwgMCwgMCwgdXRjKTsKLSAgRVhQRUNUX0VRKCIyMDE0LTEyLTMxIDIzOjAw
OjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJv
bURhdGVUaW1lKDIwMTUsIDEsIC0xLCAwLCAwLCAwLCB1dGMpOwotICBFWFBFQ1RfRVEoIjIwMTQt
MTItMzAgMDA6MDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7Ci0gIHQg
PSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgLTEsIDEsIDAsIDAsIDAsIHV0Yyk7Ci0gIEVYUEVD
VF9FUSgiMjAxNC0xMS0wMSAwMDowMDowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1
dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAtMSwgLTEsIC0xLCAtMSwgLTEs
IHV0Yyk7Ci0gIEVYUEVDVF9FUSgiMjAxNC0xMC0yOSAyMjo1ODo1OSIsIGFic2w6OkZvcm1hdFRp
bWUoeW1kaG1zLCB0LCB1dGMpKTsKIH0KIAogVEVTVChUaW1lLCBUb1RNKSB7CkBAIC02ODQsOCAr
Njc2LDEwIEBAIFRFU1QoVGltZSwgVG9UTSkgewogCiAgIC8vIENvbXBhcmVzIHRoZSByZXN1bHRz
IG9mIFRvVE0oKSB0byBnbXRpbWVfcigpIGZvciBsb3RzIG9mIHRpbWVzIG92ZXIgdGhlCiAgIC8v
IGNvdXJzZSBvZiBhIGZldyBkYXlzLgotICBjb25zdCBhYnNsOjpUaW1lIHN0YXJ0ID0gYWJzbDo6
RnJvbURhdGVUaW1lKDIwMTQsIDEsIDIsIDMsIDQsIDUsIHV0Yyk7Ci0gIGNvbnN0IGFic2w6OlRp
bWUgZW5kID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTQsIDEsIDUsIDMsIDQsIDUsIHV0Yyk7Cisg
IGNvbnN0IGFic2w6OlRpbWUgc3RhcnQgPQorICAgICAgYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNp
dmlsU2Vjb25kKDIwMTQsIDEsIDIsIDMsIDQsIDUpLCB1dGMpOworICBjb25zdCBhYnNsOjpUaW1l
IGVuZCA9CisgICAgICBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMSwg
NSwgMywgNCwgNSksIHV0Yyk7CiAgIGZvciAoYWJzbDo6VGltZSB0ID0gc3RhcnQ7IHQgPCBlbmQ7
IHQgKz0gYWJzbDo6U2Vjb25kcygzMCkpIHsKICAgICBjb25zdCBzdHJ1Y3QgdG0gdG1fYnQgPSBU
b1RNKHQsIHV0Yyk7CiAgICAgY29uc3QgdGltZV90IHR0ID0gYWJzbDo6VG9UaW1lVCh0KTsKQEAg
LTcxMSwxMiArNzA1LDEyIEBAIFRFU1QoVGltZSwgVG9UTSkgewogICAvLyBDaGVja3MgdGhhdCB0
aGUgdG1faXNkc3QgZmllbGQgaXMgY29ycmVjdCB3aGVuIGluIHN0YW5kYXJkIHRpbWUuCiAgIGNv
bnN0IGFic2w6OlRpbWVab25lIG55YyA9CiAgICAgICBhYnNsOjp0aW1lX2ludGVybmFsOjpMb2Fk
VGltZVpvbmUoIkFtZXJpY2EvTmV3X1lvcmsiKTsKLSAgYWJzbDo6VGltZSB0ID0gYWJzbDo6RnJv
bURhdGVUaW1lKDIwMTQsIDMsIDEsIDAsIDAsIDAsIG55Yyk7CisgIGFic2w6OlRpbWUgdCA9IGFi
c2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAzLCAxLCAwLCAwLCAwKSwgbnlj
KTsKICAgc3RydWN0IHRtIHRtID0gVG9UTSh0LCBueWMpOwogICBFWFBFQ1RfRkFMU0UodG0udG1f
aXNkc3QpOwogCiAgIC8vIENoZWNrcyB0aGF0IHRoZSB0bV9pc2RzdCBmaWVsZCBpcyBjb3JyZWN0
IHdoZW4gaW4gZGF5bGlnaHQgdGltZS4KLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE0LCA0
LCAxLCAwLCAwLCAwLCBueWMpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vj
b25kKDIwMTQsIDQsIDEsIDAsIDAsIDApLCBueWMpOwogICB0bSA9IFRvVE0odCwgbnljKTsKICAg
RVhQRUNUX1RSVUUodG0udG1faXNkc3QpOwogCkBAIC04MDgsOCArODAyLDggQEAgVEVTVChUaW1l
LCBUTVJvdW5kVHJpcCkgewogICAgICAgYWJzbDo6dGltZV9pbnRlcm5hbDo6TG9hZFRpbWVab25l
KCJBbWVyaWNhL05ld19Zb3JrIik7CiAKICAgLy8gVGVzdCByb3VuZC10cmlwcGluZyBhY3Jvc3Mg
YSBza2lwcGVkIHRyYW5zaXRpb24KLSAgYWJzbDo6VGltZSBzdGFydCA9IGFic2w6OkZyb21EYXRl
VGltZSgyMDE0LCAzLCA5LCAwLCAwLCAwLCBueWMpOwotICBhYnNsOjpUaW1lIGVuZCA9IGFic2w6
OkZyb21EYXRlVGltZSgyMDE0LCAzLCA5LCA0LCAwLCAwLCBueWMpOworICBhYnNsOjpUaW1lIHN0
YXJ0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsSG91cigyMDE0LCAzLCA5LCAwKSwgbnlj
KTsKKyAgYWJzbDo6VGltZSBlbmQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxIb3VyKDIw
MTQsIDMsIDksIDQpLCBueWMpOwogICBmb3IgKGFic2w6OlRpbWUgdCA9IHN0YXJ0OyB0IDwgZW5k
OyB0ICs9IGFic2w6Ok1pbnV0ZXMoMSkpIHsKICAgICBzdHJ1Y3QgdG0gdG0gPSBUb1RNKHQsIG55
Yyk7CiAgICAgYWJzbDo6VGltZSBydCA9IEZyb21UTSh0bSwgbnljKTsKQEAgLTgxNyw4ICs4MTEs
OCBAQCBURVNUKFRpbWUsIFRNUm91bmRUcmlwKSB7CiAgIH0KIAogICAvLyBUZXN0IHJvdW5kLXRy
aXBwaW5nIGFjcm9zcyBhbiBhbWJpZ3VvdXMgdHJhbnNpdGlvbgotICBzdGFydCA9IGFic2w6OkZy
b21EYXRlVGltZSgyMDE0LCAxMSwgMiwgMCwgMCwgMCwgbnljKTsKLSAgZW5kID0gYWJzbDo6RnJv
bURhdGVUaW1lKDIwMTQsIDExLCAyLCA0LCAwLCAwLCBueWMpOworICBzdGFydCA9IGFic2w6OkZy
b21DaXZpbChhYnNsOjpDaXZpbEhvdXIoMjAxNCwgMTEsIDIsIDApLCBueWMpOworICBlbmQgPSBh
YnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxIb3VyKDIwMTQsIDExLCAyLCA0KSwgbnljKTsKICAg
Zm9yIChhYnNsOjpUaW1lIHQgPSBzdGFydDsgdCA8IGVuZDsgdCArPSBhYnNsOjpNaW51dGVzKDEp
KSB7CiAgICAgc3RydWN0IHRtIHRtID0gVG9UTSh0LCBueWMpOwogICAgIGFic2w6OlRpbWUgcnQg
PSBGcm9tVE0odG0sIG55Yyk7CkBAIC04MjYsOCArODIwLDggQEAgVEVTVChUaW1lLCBUTVJvdW5k
VHJpcCkgewogICB9CiAKICAgLy8gVGVzdCByb3VuZC10cmlwcGluZyBvZiB1bmlxdWUgaW5zdGFu
dHMgY3Jvc3NpbmcgYSBkYXkgYm91bmRhcnkKLSAgc3RhcnQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUo
MjAxNCwgNiwgMjcsIDIyLCAwLCAwLCBueWMpOwotICBlbmQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUo
MjAxNCwgNiwgMjgsIDQsIDAsIDAsIG55Yyk7CisgIHN0YXJ0ID0gYWJzbDo6RnJvbUNpdmlsKGFi
c2w6OkNpdmlsSG91cigyMDE0LCA2LCAyNywgMjIpLCBueWMpOworICBlbmQgPSBhYnNsOjpGcm9t
Q2l2aWwoYWJzbDo6Q2l2aWxIb3VyKDIwMTQsIDYsIDI4LCA0KSwgbnljKTsKICAgZm9yIChhYnNs
OjpUaW1lIHQgPSBzdGFydDsgdCA8IGVuZDsgdCArPSBhYnNsOjpNaW51dGVzKDEpKSB7CiAgICAg
c3RydWN0IHRtIHRtID0gVG9UTSh0LCBueWMpOwogICAgIGFic2w6OlRpbWUgcnQgPSBGcm9tVE0o
dG0sIG55Yyk7CkBAIC05ODAsMjcgKzk3NCwyNyBAQCBURVNUKFRpbWUsIENvbnZlcnNpb25TYXR1
cmF0aW9uKSB7CiAgIEVYUEVDVF9FUShtaW5fdGltZXNwZWNfc2VjLCB0cy50dl9zZWMpOwogICBF
WFBFQ1RfRVEoMCwgdHMudHZfbnNlYyk7CiAKLSAgLy8gQ2hlY2tzIGhvdyBUaW1lOjpJbigpIHNh
dHVyYXRlcyBvbiBpbmZpbml0aWVzLgotICBhYnNsOjpUaW1lOjpCcmVha2Rvd24gYmQgPSBhYnNs
OjpJbmZpbml0ZUZ1dHVyZSgpLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUo
YmQsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxMiwgMzEsIDIzLAorICAv
LyBDaGVja3MgaG93IFRpbWVab25lOjpBdCgpIHNhdHVyYXRlcyBvbiBpbmZpbml0aWVzLgorICBh
dXRvIGNpID0gdXRjLkF0KGFic2w6OkluZmluaXRlRnV0dXJlKCkpOworICBFWFBFQ1RfQ0lWSUxf
SU5GTyhjaSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCksIDEyLCAzMSwgMjMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTksIDU5LCAwLCBmYWxzZSk7Ci0gIEVYUEVD
VF9FUShhYnNsOjpJbmZpbml0ZUR1cmF0aW9uKCksIGJkLnN1YnNlY29uZCk7Ci0gIEVYUEVDVF9F
USg0LCBiZC53ZWVrZGF5KTsgIC8vIFRodXJzZGF5Ci0gIEVYUEVDVF9FUSgzNjUsIGJkLnllYXJk
YXkpOwotICBFWFBFQ1RfU1RSRVEoIi0wMCIsIGJkLnpvbmVfYWJicik7ICAvLyBhcnRpZmFjdCBv
ZiBhYnNsOjpUaW1lOjpJbigpCi0gIGJkID0gYWJzbDo6SW5maW5pdGVQYXN0KCkuSW4odXRjKTsK
LSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWluKCksIDEsIDEsIDAsIDAsCisgIEVYUEVDVF9FUShhYnNsOjpJbmZpbml0ZUR1cmF0
aW9uKCksIGNpLnN1YnNlY29uZCk7CisgIEVYUEVDVF9FUShhYnNsOjpXZWVrZGF5Ojp0aHVyc2Rh
eSwgYWJzbDo6R2V0V2Vla2RheShjaS5jcykpOworICBFWFBFQ1RfRVEoMzY1LCBhYnNsOjpHZXRZ
ZWFyRGF5KGNpLmNzKSk7CisgIEVYUEVDVF9TVFJFUSgiLTAwIiwgY2kuem9uZV9hYmJyKTsgIC8v
IGFydGlmYWN0IG9mIFRpbWVab25lOjpBdCgpCisgIGNpID0gdXRjLkF0KGFic2w6OkluZmluaXRl
UGFzdCgpKTsKKyAgRVhQRUNUX0NJVklMX0lORk8oY2ksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
NjRfdD46Om1pbigpLCAxLCAxLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IDAsIGZhbHNlKTsKLSAgRVhQRUNUX0VRKC1hYnNsOjpJbmZpbml0ZUR1cmF0aW9uKCksIGJkLnN1
YnNlY29uZCk7Ci0gIEVYUEVDVF9FUSg3LCBiZC53ZWVrZGF5KTsgIC8vIFN1bmRheQotICBFWFBF
Q1RfRVEoMSwgYmQueWVhcmRheSk7Ci0gIEVYUEVDVF9TVFJFUSgiLTAwIiwgYmQuem9uZV9hYmJy
KTsgIC8vIGFydGlmYWN0IG9mIGFic2w6OlRpbWU6OkluKCkKKyAgRVhQRUNUX0VRKC1hYnNsOjpJ
bmZpbml0ZUR1cmF0aW9uKCksIGNpLnN1YnNlY29uZCk7CisgIEVYUEVDVF9FUShhYnNsOjpXZWVr
ZGF5OjpzdW5kYXksIGFic2w6OkdldFdlZWtkYXkoY2kuY3MpKTsKKyAgRVhQRUNUX0VRKDEsIGFi
c2w6OkdldFllYXJEYXkoY2kuY3MpKTsKKyAgRVhQRUNUX1NUUkVRKCItMDAiLCBjaS56b25lX2Fi
YnIpOyAgLy8gYXJ0aWZhY3Qgb2YgVGltZVpvbmU6OkF0KCkKIAogICAvLyBBcHByb2FjaCB0aGUg
bWF4aW1hbCBUaW1lIHZhbHVlIGZyb20gYmVsb3cuCi0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUo
MjkyMjc3MDI2NTk2LCAxMiwgNCwgMTUsIDMwLCA2LCB1dGMpOworICB0ID0gYWJzbDo6RnJvbUNp
dmlsKGFic2w6OkNpdmlsU2Vjb25kKDI5MjI3NzAyNjU5NiwgMTIsIDQsIDE1LCAzMCwgNiksIHV0
Yyk7CiAgIEVYUEVDVF9FUSgiMjkyMjc3MDI2NTk2LTEyLTA0VDE1OjMwOjA2KzAwOjAwIiwKICAg
ICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoYWJzbDo6UkZDMzMzOV9mdWxsLCB0LCB1dGMpKTsK
LSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyOTIyNzcwMjY1OTYsIDEyLCA0LCAxNSwgMzAsIDcs
IHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjkyMjc3MDI2
NTk2LCAxMiwgNCwgMTUsIDMwLCA3KSwgdXRjKTsKICAgRVhQRUNUX0VRKCIyOTIyNzcwMjY1OTYt
MTItMDRUMTU6MzA6MDcrMDA6MDAiLAogICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShhYnNs
OjpSRkMzMzM5X2Z1bGwsIHQsIHV0YykpOwogICBFWFBFQ1RfRVEoCkBAIC0xMDA4LDIxICsxMDAy
LDIxIEBAIFRFU1QoVGltZSwgQ29udmVyc2lvblNhdHVyYXRpb24pIHsKIAogICAvLyBDaGVja3Mg
dGhhdCB3ZSBjYW4gYWxzbyBnZXQgdGhlIG1heGltYWwgVGltZSB2YWx1ZSBmb3IgYSBmYXItZWFz
dCB6b25lLgogICBjb25zdCBhYnNsOjpUaW1lWm9uZSBwbHVzMTQgPSBhYnNsOjpGaXhlZFRpbWVa
b25lKDE0ICogNjAgKiA2MCk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjkyMjc3MDI2NTk2
LCAxMiwgNSwgNSwgMzAsIDcsIHBsdXMxNCk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6
Q2l2aWxTZWNvbmQoMjkyMjc3MDI2NTk2LCAxMiwgNSwgNSwgMzAsIDcpLCBwbHVzMTQpOwogICBF
WFBFQ1RfRVEoIjI5MjI3NzAyNjU5Ni0xMi0wNVQwNTozMDowNysxNDowMCIsCiAgICAgICAgICAg
ICBhYnNsOjpGb3JtYXRUaW1lKGFic2w6OlJGQzMzMzlfZnVsbCwgdCwgcGx1czE0KSk7CiAgIEVY
UEVDVF9FUSgKICAgICAgIGFic2w6OlVuaXhFcG9jaCgpICsgYWJzbDo6U2Vjb25kcyhzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSksIHQpOwogCiAgIC8vIE9uZSBzZWNvbmQgbGF0
ZXIgc2hvdWxkIHB1c2ggdXMgdG8gaW5maW5pdHkuCi0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUo
MjkyMjc3MDI2NTk2LCAxMiwgNCwgMTUsIDMwLCA4LCB1dGMpOworICB0ID0gYWJzbDo6RnJvbUNp
dmlsKGFic2w6OkNpdmlsU2Vjb25kKDI5MjI3NzAyNjU5NiwgMTIsIDQsIDE1LCAzMCwgOCksIHV0
Yyk7CiAgIEVYUEVDVF9FUSgiaW5maW5pdGUtZnV0dXJlIiwgYWJzbDo6Rm9ybWF0VGltZShhYnNs
OjpSRkMzMzM5X2Z1bGwsIHQsIHV0YykpOwogCiAgIC8vIEFwcHJvYWNoIHRoZSBtaW5pbWFsIFRp
bWUgdmFsdWUgZnJvbSBhYm92ZS4KLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgtMjkyMjc3MDIy
NjU3LCAxLCAyNywgOCwgMjksIDUzLCB1dGMpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6
OkNpdmlsU2Vjb25kKC0yOTIyNzcwMjI2NTcsIDEsIDI3LCA4LCAyOSwgNTMpLCB1dGMpOwogICBF
WFBFQ1RfRVEoIi0yOTIyNzcwMjI2NTctMDEtMjdUMDg6Mjk6NTMrMDA6MDAiLAogICAgICAgICAg
ICAgYWJzbDo6Rm9ybWF0VGltZShhYnNsOjpSRkMzMzM5X2Z1bGwsIHQsIHV0YykpOwotICB0ID0g
YWJzbDo6RnJvbURhdGVUaW1lKC0yOTIyNzcwMjI2NTcsIDEsIDI3LCA4LCAyOSwgNTIsIHV0Yyk7
CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoLTI5MjI3NzAyMjY1Nywg
MSwgMjcsIDgsIDI5LCA1MiksIHV0Yyk7CiAgIEVYUEVDVF9FUSgiLTI5MjI3NzAyMjY1Ny0wMS0y
N1QwODoyOTo1MiswMDowMCIsCiAgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGFic2w6OlJG
QzMzMzlfZnVsbCwgdCwgdXRjKSk7CiAgIEVYUEVDVF9FUSgKQEAgLTEwMzAsMTQgKzEwMjQsMTUg
QEAgVEVTVChUaW1lLCBDb252ZXJzaW9uU2F0dXJhdGlvbikgewogCiAgIC8vIENoZWNrcyB0aGF0
IHdlIGNhbiBhbHNvIGdldCB0aGUgbWluaW1hbCBUaW1lIHZhbHVlIGZvciBhIGZhci13ZXN0IHpv
bmUuCiAgIGNvbnN0IGFic2w6OlRpbWVab25lIG1pbnVzMTIgPSBhYnNsOjpGaXhlZFRpbWVab25l
KC0xMiAqIDYwICogNjApOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKC0yOTIyNzcwMjI2NTcs
IDEsIDI2LCAyMCwgMjksIDUyLCBtaW51czEyKTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNs
OjpDaXZpbFNlY29uZCgtMjkyMjc3MDIyNjU3LCAxLCAyNiwgMjAsIDI5LCA1MiksCisgICAgICAg
ICAgICAgICAgICAgICAgbWludXMxMik7CiAgIEVYUEVDVF9FUSgiLTI5MjI3NzAyMjY1Ny0wMS0y
NlQyMDoyOTo1Mi0xMjowMCIsCiAgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGFic2w6OlJG
QzMzMzlfZnVsbCwgdCwgbWludXMxMikpOwogICBFWFBFQ1RfRVEoCiAgICAgICBhYnNsOjpVbml4
RXBvY2goKSArIGFic2w6OlNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWlu
KCkpLCB0KTsKIAogICAvLyBPbmUgc2Vjb25kIGJlZm9yZSBzaG91bGQgcHVzaCB1cyB0byAtaW5m
aW5pdHkuCi0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoLTI5MjI3NzAyMjY1NywgMSwgMjcsIDgs
IDI5LCA1MSwgdXRjKTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgt
MjkyMjc3MDIyNjU3LCAxLCAyNywgOCwgMjksIDUxKSwgdXRjKTsKICAgRVhQRUNUX0VRKCJpbmZp
bml0ZS1wYXN0IiwgYWJzbDo6Rm9ybWF0VGltZShhYnNsOjpSRkMzMzM5X2Z1bGwsIHQsIHV0Yykp
OwogfQogCkBAIC0xMDUxLDM4ICsxMDQ2LDE2MCBAQCBURVNUKFRpbWUsIEV4dGVuZGVkQ29udmVy
c2lvblNhdHVyYXRpb24pIHsKICAgICAgIGFic2w6OnRpbWVfaW50ZXJuYWw6OkxvYWRUaW1lWm9u
ZSgiQW1lcmljYS9OZXdfWW9yayIpOwogICBjb25zdCBhYnNsOjpUaW1lIG1heCA9CiAgICAgICBh
YnNsOjpGcm9tVW5peFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkp
OwotICBhYnNsOjpUaW1lOjpCcmVha2Rvd24gYmQ7CisgIGFic2w6OlRpbWVab25lOjpDaXZpbElu
Zm8gY2k7CiAgIGFic2w6OlRpbWUgdDsKIAogICAvLyBUaGUgbWF4aW1hbCB0aW1lIGNvbnZlcnRl
ZCBpbiBlYWNoIHpvbmUuCi0gIGJkID0gbWF4LkluKHN5ZCk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQ
RUNUX1RJTUUoYmQsIDI5MjI3NzAyNjU5NiwgMTIsIDUsIDIsIDMwLCA3LCAzOTYwMCwgdHJ1ZSk7
Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjkyMjc3MDI2NTk2LCAxMiwgNSwgMiwgMzAsIDcs
IHN5ZCk7CisgIGNpID0gc3lkLkF0KG1heCk7CisgIEVYUEVDVF9DSVZJTF9JTkZPKGNpLCAyOTIy
NzcwMjY1OTYsIDEyLCA1LCAyLCAzMCwgNywgMzk2MDAsIHRydWUpOworICB0ID0gYWJzbDo6RnJv
bUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDI5MjI3NzAyNjU5NiwgMTIsIDUsIDIsIDMwLCA3KSwg
c3lkKTsKICAgRVhQRUNUX0VRKG1heCwgdCk7Ci0gIGJkID0gbWF4LkluKG55Yyk7Ci0gIEFCU0xf
SU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDI5MjI3NzAyNjU5NiwgMTIsIDQsIDEwLCAzMCwgNywg
LTE4MDAwLCBmYWxzZSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjkyMjc3MDI2NTk2LCAx
MiwgNCwgMTAsIDMwLCA3LCBueWMpOworICBjaSA9IG55Yy5BdChtYXgpOworICBFWFBFQ1RfQ0lW
SUxfSU5GTyhjaSwgMjkyMjc3MDI2NTk2LCAxMiwgNCwgMTAsIDMwLCA3LCAtMTgwMDAsIGZhbHNl
KTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyOTIyNzcwMjY1OTYs
IDEyLCA0LCAxMCwgMzAsIDcpLCBueWMpOwogICBFWFBFQ1RfRVEobWF4LCB0KTsKIAogICAvLyBP
bmUgc2Vjb25kIGxhdGVyIHNob3VsZCBwdXNoIHVzIHRvIGluZmluaXR5LgotICB0ID0gYWJzbDo6
RnJvbURhdGVUaW1lKDI5MjI3NzAyNjU5NiwgMTIsIDUsIDIsIDMwLCA4LCBzeWQpOworICB0ID0g
YWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDI5MjI3NzAyNjU5NiwgMTIsIDUsIDIs
IDMwLCA4KSwgc3lkKTsKICAgRVhQRUNUX0VRKGFic2w6OkluZmluaXRlRnV0dXJlKCksIHQpOwot
ICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDI5MjI3NzAyNjU5NiwgMTIsIDQsIDEwLCAzMCwgOCwg
bnljKTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyOTIyNzcwMjY1
OTYsIDEyLCA0LCAxMCwgMzAsIDgpLCBueWMpOwogICBFWFBFQ1RfRVEoYWJzbDo6SW5maW5pdGVG
dXR1cmUoKSwgdCk7CiAKICAgLy8gQW5kIHdlIHNob3VsZCBzdGljayB0aGVyZS4KLSAgdCA9IGFi
c2w6OkZyb21EYXRlVGltZSgyOTIyNzcwMjY1OTYsIDEyLCA1LCAyLCAzMCwgOSwgc3lkKTsKKyAg
dCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyOTIyNzcwMjY1OTYsIDEyLCA1
LCAyLCAzMCwgOSksIHN5ZCk7CiAgIEVYUEVDVF9FUShhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpLCB0
KTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyOTIyNzcwMjY1OTYsIDEyLCA0LCAxMCwgMzAs
IDksIG55Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjkyMjc3
MDI2NTk2LCAxMiwgNCwgMTAsIDMwLCA5KSwgbnljKTsKICAgRVhQRUNUX0VRKGFic2w6OkluZmlu
aXRlRnV0dXJlKCksIHQpOwogCiAgIC8vIEFsbCB0aGUgd2F5IHVwIHRvIGEgc2F0dXJhdGVkIGRh
dGUvdGltZSwgd2l0aG91dCBvdmVyZmxvdy4KLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgKLSAg
ICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxMiwgMzEsIDIzLCA1OSwg
NTksIHN5ZCk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQ6Om1heCgp
LCBzeWQpOwogICBFWFBFQ1RfRVEoYWJzbDo6SW5maW5pdGVGdXR1cmUoKSwgdCk7Ci0gIHQgPSBh
YnNsOjpGcm9tRGF0ZVRpbWUoCi0gICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
YXgoKSwgMTIsIDMxLCAyMywgNTksIDU5LCBueWMpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFi
c2w6OkNpdmlsU2Vjb25kOjptYXgoKSwgbnljKTsKICAgRVhQRUNUX0VRKGFic2w6OkluZmluaXRl
RnV0dXJlKCksIHQpOwogfQogCitURVNUKFRpbWUsIEZyb21DaXZpbEFsaWdubWVudCkgeworICBj
b25zdCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENUaW1lWm9uZSgpOworICBjb25zdCBh
YnNsOjpDaXZpbFNlY29uZCBjcygyMDE1LCAyLCAzLCA0LCA1LCA2KTsKKyAgYWJzbDo6VGltZSB0
ID0gYWJzbDo6RnJvbUNpdmlsKGNzLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTUtMDItMDNUMDQ6
MDU6MDYrMDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHQsIHV0YykpOworICB0ID0gYWJzbDo6RnJv
bUNpdmlsKGFic2w6OkNpdmlsTWludXRlKGNzKSwgdXRjKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAy
LTAzVDA0OjA1OjAwKzAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh0LCB1dGMpKTsKKyAgdCA9IGFi
c2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbEhvdXIoY3MpLCB1dGMpOworICBFWFBFQ1RfRVEoIjIw
MTUtMDItMDNUMDQ6MDA6MDArMDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHQsIHV0YykpOworICB0
ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsRGF5KGNzKSwgdXRjKTsKKyAgRVhQRUNUX0VR
KCIyMDE1LTAyLTAzVDAwOjAwOjAwKzAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh0LCB1dGMpKTsK
KyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbE1vbnRoKGNzKSwgdXRjKTsKKyAgRVhQ
RUNUX0VRKCIyMDE1LTAyLTAxVDAwOjAwOjAwKzAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh0LCB1
dGMpKTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFllYXIoY3MpLCB1dGMpOwor
ICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDFUMDA6MDA6MDArMDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1l
KHQsIHV0YykpOworfQorCitURVNUKFRpbWUsIExlZ2FjeURhdGVUaW1lKSB7CisgIGNvbnN0IGFi
c2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHltZGhtcyA9ICIlWS0lbS0lZCAlSDolTTolUyI7CisgIGNvbnN0IGludCBrTWF4ID0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKKyAgY29uc3QgaW50IGtNaW4gPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1pbigpOworICBhYnNsOjpUaW1lIHQ7CisKKyAgdCA9IGFic2w6
OkZyb21EYXRlVGltZShzdGQ6Om51bWVyaWNfbGltaXRzPGFic2w6OmNpdmlsX3llYXJfdD46Om1h
eCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGtNYXgsIGtNYXgsIGtNYXgsIGtNYXgsIGtN
YXgsIHV0Yyk7CisgIEVYUEVDVF9FUSgiaW5maW5pdGUtZnV0dXJlIiwKKyAgICAgICAgICAgIGFi
c2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsgIC8vIG5vIG92ZXJmbG93CisgIHQgPSBh
YnNsOjpGcm9tRGF0ZVRpbWUoc3RkOjpudW1lcmljX2xpbWl0czxhYnNsOjpjaXZpbF95ZWFyX3Q+
OjptaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrTWluLCBrTWluLCBrTWluLCBrTWlu
LCBrTWluLCB1dGMpOworICBFWFBFQ1RfRVEoImluZmluaXRlLXBhc3QiLAorICAgICAgICAgICAg
YWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOyAgLy8gbm8gb3ZlcmZsb3cKKworICAv
LyBDaGVjayBub3JtYWxpemF0aW9uLgorICBFWFBFQ1RfVFJVRShhYnNsOjpDb252ZXJ0RGF0ZVRp
bWUoMjAxMywgMTAsIDMyLCA4LCAzMCwgMCwgdXRjKS5ub3JtYWxpemVkKTsKKyAgdCA9IGFic2w6
OkZyb21EYXRlVGltZSgyMDE1LCAxLCAxLCAwLCAwLCA2MCwgdXRjKTsKKyAgRVhQRUNUX0VRKCIy
MDE1LTAxLTAxIDAwOjAxOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOwor
ICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEsIDEsIDAsIDYwLCAwLCB1dGMpOworICBF
WFBFQ1RfRVEoIjIwMTUtMDEtMDEgMDE6MDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywg
dCwgdXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMSwgMSwgMjQsIDAsIDAs
IHV0Yyk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMiAwMDowMDowMCIsIGFic2w6OkZvcm1hdFRp
bWUoeW1kaG1zLCB0LCB1dGMpKTsKKyAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAxLCAz
MiwgMCwgMCwgMCwgdXRjKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAyLTAxIDAwOjAwOjAwIiwgYWJz
bDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOworICB0ID0gYWJzbDo6RnJvbURhdGVUaW1l
KDIwMTUsIDEzLCAxLCAwLCAwLCAwLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTYtMDEtMDEgMDA6
MDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7CisgIHQgPSBhYnNsOjpG
cm9tRGF0ZVRpbWUoMjAxNSwgMTMsIDMyLCA2MCwgNjAsIDYwLCB1dGMpOworICBFWFBFQ1RfRVEo
IjIwMTYtMDItMDMgMTM6MDE6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7
CisgIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMSwgMSwgMCwgMCwgLTEsIHV0Yyk7Cisg
IEVYUEVDVF9FUSgiMjAxNC0xMi0zMSAyMzo1OTo1OSIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1z
LCB0LCB1dGMpKTsKKyAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAxLCAxLCAwLCAtMSwg
MCwgdXRjKTsKKyAgRVhQRUNUX0VRKCIyMDE0LTEyLTMxIDIzOjU5OjAwIiwgYWJzbDo6Rm9ybWF0
VGltZSh5bWRobXMsIHQsIHV0YykpOworICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEs
IDEsIC0xLCAwLCAwLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTQtMTItMzEgMjM6MDA6MDAiLCBh
YnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tRGF0ZVRp
bWUoMjAxNSwgMSwgLTEsIDAsIDAsIDAsIHV0Yyk7CisgIEVYUEVDVF9FUSgiMjAxNC0xMi0zMCAw
MDowMDowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKKyAgdCA9IGFic2w6
OkZyb21EYXRlVGltZSgyMDE1LCAtMSwgMSwgMCwgMCwgMCwgdXRjKTsKKyAgRVhQRUNUX0VRKCIy
MDE0LTExLTAxIDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOwor
ICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgdXRjKTsK
KyAgRVhQRUNUX0VRKCIyMDE0LTEwLTI5IDIyOjU4OjU5IiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRo
bXMsIHQsIHV0YykpOworfQorCitURVNUKFRpbWUsIE5leHRUcmFuc2l0aW9uVVRDKSB7CisgIGNv
bnN0IGF1dG8gdHogPSBhYnNsOjpVVENUaW1lWm9uZSgpOworICBhYnNsOjpUaW1lWm9uZTo6Q2l2
aWxUcmFuc2l0aW9uIHRyYW5zOworCisgIGF1dG8gdCA9IGFic2w6OkluZmluaXRlUGFzdCgpOwor
ICBFWFBFQ1RfRkFMU0UodHouTmV4dFRyYW5zaXRpb24odCwgJnRyYW5zKSk7CisKKyAgdCA9IGFi
c2w6OkluZmluaXRlRnV0dXJlKCk7CisgIEVYUEVDVF9GQUxTRSh0ei5OZXh0VHJhbnNpdGlvbih0
LCAmdHJhbnMpKTsKK30KKworVEVTVChUaW1lLCBQcmV2VHJhbnNpdGlvblVUQykgeworICBjb25z
dCBhdXRvIHR6ID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKKyAgYWJzbDo6VGltZVpvbmU6OkNpdmls
VHJhbnNpdGlvbiB0cmFuczsKKworICBhdXRvIHQgPSBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpOwor
ICBFWFBFQ1RfRkFMU0UodHouUHJldlRyYW5zaXRpb24odCwgJnRyYW5zKSk7CisKKyAgdCA9IGFi
c2w6OkluZmluaXRlUGFzdCgpOworICBFWFBFQ1RfRkFMU0UodHouUHJldlRyYW5zaXRpb24odCwg
JnRyYW5zKSk7Cit9CisKK1RFU1QoVGltZSwgTmV4dFRyYW5zaXRpb25OWUMpIHsKKyAgY29uc3Qg
YXV0byB0eiA9IGFic2w6OnRpbWVfaW50ZXJuYWw6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9OZXdf
WW9yayIpOworICBhYnNsOjpUaW1lWm9uZTo6Q2l2aWxUcmFuc2l0aW9uIHRyYW5zOworCisgIGF1
dG8gdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyMDE4LCA2LCAzMCwgMCwg
MCwgMCksIHR6KTsKKyAgRVhQRUNUX1RSVUUodHouTmV4dFRyYW5zaXRpb24odCwgJnRyYW5zKSk7
CisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbFNlY29uZCgyMDE4LCAxMSwgNCwgMiwgMCwgMCksIHRy
YW5zLmZyb20pOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxOCwgMTEsIDQsIDEs
IDAsIDApLCB0cmFucy50byk7CisKKyAgdCA9IGFic2w6OkluZmluaXRlRnV0dXJlKCk7CisgIEVY
UEVDVF9GQUxTRSh0ei5OZXh0VHJhbnNpdGlvbih0LCAmdHJhbnMpKTsKKworICB0ID0gYWJzbDo6
SW5maW5pdGVQYXN0KCk7CisgIEVYUEVDVF9UUlVFKHR6Lk5leHRUcmFuc2l0aW9uKHQsICZ0cmFu
cykpOworICBpZiAodHJhbnMuZnJvbSA9PSBhYnNsOjpDaXZpbFNlY29uZCgxOTE4LCAwMywgMzEs
IDIsIDAsIDApKSB7CisgICAgLy8gSXQgbG9va3MgbGlrZSB0aGUgdHpkYXRhIGlzIG9ubHkgMzIg
Yml0IChwcm9iYWJseSBtYWNPUyksCisgICAgLy8gd2hpY2ggYm90dG9tcyBvdXQgYXQgMTkwMS0x
Mi0xM1QyMDo0NTo1MiswMDowMC4KKyAgICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxTZWNvbmQoMTkx
OCwgMywgMzEsIDMsIDAsIDApLCB0cmFucy50byk7CisgIH0gZWxzZSB7CisgICAgRVhQRUNUX0VR
KGFic2w6OkNpdmlsU2Vjb25kKDE4ODMsIDExLCAxOCwgMTIsIDMsIDU4KSwgdHJhbnMuZnJvbSk7
CisgICAgRVhQRUNUX0VRKGFic2w6OkNpdmlsU2Vjb25kKDE4ODMsIDExLCAxOCwgMTIsIDAsIDAp
LCB0cmFucy50byk7CisgIH0KK30KKworVEVTVChUaW1lLCBQcmV2VHJhbnNpdGlvbk5ZQykgewor
ICBjb25zdCBhdXRvIHR6ID0gYWJzbDo6dGltZV9pbnRlcm5hbDo6TG9hZFRpbWVab25lKCJBbWVy
aWNhL05ld19Zb3JrIik7CisgIGFic2w6OlRpbWVab25lOjpDaXZpbFRyYW5zaXRpb24gdHJhbnM7
CisKKyAgYXV0byB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDIwMTgsIDYs
IDMwLCAwLCAwLCAwKSwgdHopOworICBFWFBFQ1RfVFJVRSh0ei5QcmV2VHJhbnNpdGlvbih0LCAm
dHJhbnMpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsU2Vjb25kKDIwMTgsIDMsIDExLCAyLCAw
LCAwKSwgdHJhbnMuZnJvbSk7CisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbFNlY29uZCgyMDE4LCAz
LCAxMSwgMywgMCwgMCksIHRyYW5zLnRvKTsKKworICB0ID0gYWJzbDo6SW5maW5pdGVQYXN0KCk7
CisgIEVYUEVDVF9GQUxTRSh0ei5QcmV2VHJhbnNpdGlvbih0LCAmdHJhbnMpKTsKKworICB0ID0g
YWJzbDo6SW5maW5pdGVGdXR1cmUoKTsKKyAgRVhQRUNUX1RSVUUodHouUHJldlRyYW5zaXRpb24o
dCwgJnRyYW5zKSk7CisgIC8vIFdlIGhhdmUgYSB0cmFuc2l0aW9uIGJ1dCB3ZSBkb24ndCBrbm93
IHdoaWNoIG9uZS4KK30KKwogfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L3RpbWVfem9uZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lX3pvbmVfdGVzdC5jYwppbmRleCA0
M2Q5MTkwNDA0NC4uOGYxZTc0YWNhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZV96b25l
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lX3pvbmVfdGVzdC5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJ
TEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5iYXplbAppbmRleCAzMmY2OTBjOTRjMS4uNjZl
Y2IwNDQwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL0JVSUxELmJhemVsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzL0JVSUxELmJhemVsCkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
MTUsMTEgKzE1LDEyIEBACiAjCiAKIGxvYWQoCi0gICAgIi8vYWJzbDpjb3B0cy5iemwiLAorICAg
ICIvL2Fic2w6Y29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bCIsCiAgICAgIkFCU0xfREVGQVVMVF9D
T1BUUyIsCi0gICAgIkFCU0xfVEVTVF9DT1BUUyIsCisgICAgIkFCU0xfREVGQVVMVF9MSU5LT1BU
UyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHIiwKICAgICAiQUJTTF9FWENFUFRJT05TX0ZM
QUdfTElOS09QVFMiLAorICAgICJBQlNMX1RFU1RfQ09QVFMiLAogKQogCiBwYWNrYWdlKGRlZmF1
bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdKQpAQCAtMzAsNiArMzEsNyBA
QCBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAiYW55IiwKICAgICBoZHJzID0gWyJhbnkuaCJdLAog
ICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFkX2FueV9jYXN0IiwKICAg
ICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC00Myw2ICs0NSw3IEBAIGNjX2xpYnJhcnko
CiAgICAgbmFtZSA9ICJiYWRfYW55X2Nhc3QiLAogICAgIGhkcnMgPSBbImJhZF9hbnlfY2FzdC5o
Il0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpiYWRfYW55X2Nhc3Rf
aW1wbCIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLApAQCAtNTYsNyArNTksNyBAQCBj
Y19saWJyYXJ5KAogICAgICAgICAiYmFkX2FueV9jYXN0LmgiLAogICAgIF0sCiAgICAgY29wdHMg
PSBBQlNMX0VYQ0VQVElPTlNfRkxBRyArIEFCU0xfREVGQVVMVF9DT1BUUywKLSAgICBsaW5rb3B0
cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9F
WENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlz
aWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKICAgICBkZXBzID0gWwogICAgICAg
ICAiLy9hYnNsL2Jhc2UiLApAQCAtNzEsNyArNzQsNyBAQCBjY190ZXN0KAogICAgICAgICAiYW55
X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VY
Q0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjphbnkiLAogICAgICAg
ICAiLy9hYnNsL2Jhc2UiLApAQCAtODksNiArOTIsNyBAQCBjY190ZXN0KAogICAgICAgICAiYW55
X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlu
a29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjph
bnkiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtMTAzLDcgKzEwNyw3IEBAIGNjX3Rlc3Qo
CiAgICAgbmFtZSA9ICJhbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0IiwKICAgICBzcmNzID0gWyJh
bnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9O
U19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElO
S09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjph
bnkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKQEAg
LTExMyw4ICsxMTcsMTQgQEAgY2NfdGVzdCgKIAogY2NfbGlicmFyeSgKICAgICBuYW1lID0gInNw
YW4iLAotICAgIGhkcnMgPSBbInNwYW4uaCJdLAorICAgIHNyY3MgPSBbCisgICAgICAgICJpbnRl
cm5hbC9zcGFuLmgiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgInNwYW4uaCIsCisg
ICAgXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2FsZ29y
aXRobSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLApAQCAtMTI4LDcgKzEz
OCw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9IFsic3Bhbl90
ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNf
RkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAg
IGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpzcGFuIiwKICAgICAgICAgIi8vYWJz
bC9iYXNlOmNvbmZpZyIsCkBAIC0xNDcsNiArMTU3LDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0g
InNtYWxsIiwKICAgICBzcmNzID0gWyJzcGFuX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xf
VEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBk
ZXBzID0gWwogICAgICAgICAiOnNwYW4iLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwK
QEAgLTE2MiwxMiArMTczLDE1IEBAIGNjX3Rlc3QoCiAKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9
ICJvcHRpb25hbCIsCi0gICAgc3JjcyA9IFsib3B0aW9uYWwuY2MiXSwKKyAgICBzcmNzID0gWyJp
bnRlcm5hbC9vcHRpb25hbC5oIl0sCiAgICAgaGRycyA9IFsib3B0aW9uYWwuaCJdLAogICAgIGNv
cHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFkX29wdGlvbmFsX2FjY2VzcyIsCisg
ICAgICAgICIvL2Fic2wvYmFzZTpiYXNlX2ludGVybmFsIiwKICAgICAgICAgIi8vYWJzbC9iYXNl
OmNvbmZpZyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICAgICAi
Ly9hYnNsL21lbW9yeSIsCiAgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCiAgICAg
ICAgICIvL2Fic2wvdXRpbGl0eSIsCkBAIC0xNzksNyArMTkzLDcgQEAgY2NfbGlicmFyeSgKICAg
ICBzcmNzID0gWyJiYWRfb3B0aW9uYWxfYWNjZXNzLmNjIl0sCiAgICAgaGRycyA9IFsiYmFkX29w
dGlvbmFsX2FjY2Vzcy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMgKyBBQlNM
X0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJ
TktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBB
QlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8vYWJzbC9iYXNl
IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC0xOTEsNyArMjA1LDcgQEAgY2Nf
bGlicmFyeSgKICAgICBzcmNzID0gWyJiYWRfdmFyaWFudF9hY2Nlc3MuY2MiXSwKICAgICBoZHJz
ID0gWyJiYWRfdmFyaWFudF9hY2Nlc3MuaCJdLAogICAgIGNvcHRzID0gQUJTTF9FWENFUFRJT05T
X0ZMQUcgKyBBQlNMX0RFRkFVTFRfQ09QVFMsCi0gICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElP
TlNfRkxBR19MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJ
TktPUFRTICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICIv
L2Fic2wvYmFzZSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLApAQCAtMjA1LDcgKzIx
OSw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICJvcHRpb25hbF90ZXN0LmNjIiwKICAgICBdLAogICAg
IGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCi0gICAgbGlu
a29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6b3B0aW9uYWwiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLApA
QCAtMjIyLDcgKzIzNiw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICJvcHRpb25hbF9leGNlcHRpb25f
c2FmZXR5X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBB
QlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFH
X0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMg
KyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpvcHRpb25h
bCIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmciLApAQCAt
MjM1LDYgKzI0OSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvdmFyaWFu
dC5oIl0sCiAgICAgaGRycyA9IFsidmFyaWFudC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFV
TFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjpiYWRfdmFyaWFudF9hY2Nlc3MiLAogICAgICAgICAiLy9hYnNsL2Jh
c2U6YmFzZV9pbnRlcm5hbCIsCkBAIC0yNTAsNyArMjY1LDcgQEAgY2NfdGVzdCgKICAgICBzaXpl
ID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJ2YXJpYW50X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAotICAgIGxpbmtvcHRzID0g
QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQ
VElPTlNfRkxBR19MSU5LT1BUUyArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiOnZhcmlhbnQiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKQEAg
LTI2OCw2ICsyODMsNyBAQCBjY190ZXN0KAogICAgICAgICAidmFyaWFudF9iZW5jaG1hcmsuY2Mi
LAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBB
QlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFncyA9IFsiYmVuY2htYXJrIl0sCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjp2YXJpYW50IiwKQEAgLTI4MywxMSArMjk5LDM2IEBAIGNjX3Rlc3Qo
CiAgICAgICAgICJ2YXJpYW50X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIsCiAgICAgXSwKICAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAotICAgIGxp
bmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCisgICAgbGlua29wdHMgPSBB
QlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAg
ICBkZXBzID0gWwogICAgICAgICAiOnZhcmlhbnQiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29u
ZmlnIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZyIsCiAg
ICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3Qv
LzpndGVzdF9tYWluIiwKICAgICBdLAogKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiY29t
cGFyZSIsCisgICAgaGRycyA9IFsiY29tcGFyZS5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFV
TFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVy
cyIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgXSwKKykKKworY2Nf
dGVzdCgKKyAgICBuYW1lID0gImNvbXBhcmVfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisg
ICAgc3JjcyA9IFsKKyAgICAgICAgImNvbXBhcmVfdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0
cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbXBhcmUiLAor
ICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8v
Omd0ZXN0X21haW4iLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5n
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzL0JVSUxELmduCmluZGV4IGJmZGFmYjMxN2UzLi4zMWNlYWYzMDg0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQu
Z24KQEAgLTQsMTEgKzQsMTkgQEAKIAogaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5n
bmkiKQogCisjIFVzYWdlIG9mIEFic2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4
cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlz
dCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBz
Oi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09X
TkVSUworIworIyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9k
b2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9S
dTJkb2trMVgxdkJEVQogaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9
IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoi
LAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkv
Z29vZ2xldGVzdDpndGVzdCIsCisgICAgIi8vdGhpcmRfcGFydHkvb3BlbnNjcmVlbi8qIiwKICAg
XQogfSBlbHNlIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KQEAgLTgwLDYgKzg4LDkgQEAgc291
cmNlX3NldCgic3BhbiIpIHsKICAgcHVibGljID0gWwogICAgICJzcGFuLmgiLAogICBdCisgIHNv
dXJjZXMgPSBbCisgICAgImludGVybmFsL3NwYW4uaCIsCisgIF0KICAgZGVwcyA9IFsKICAgICAi
Li4vYWxnb3JpdGhtIiwKICAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLApAQCAtOTYsMTMgKzEw
NywxNCBAQCBzb3VyY2Vfc2V0KCJvcHRpb25hbCIpIHsKICAgXQogICBwdWJsaWNfY29uZmlncyA9
IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCiAgIHNv
dXJjZXMgPSBbCi0gICAgIm9wdGlvbmFsLmNjIiwKKyAgICAiaW50ZXJuYWwvb3B0aW9uYWwuaCIs
CiAgIF0KICAgcHVibGljID0gWwogICAgICJvcHRpb25hbC5oIiwKICAgXQogICBkZXBzID0gWwog
ICAgICI6YmFkX29wdGlvbmFsX2FjY2VzcyIsCisgICAgIi4uL2Jhc2U6YmFzZV9pbnRlcm5hbCIs
CiAgICAgIi4uL2Jhc2U6Y29uZmlnIiwKICAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAogICAg
ICIuLi9tZW1vcnkiLApAQCAtMTcxLDMgKzE4MywxOSBAQCBzb3VyY2Vfc2V0KCJ2YXJpYW50Iikg
ewogICAgICIuLi91dGlsaXR5IiwKICAgXQogfQorCitzb3VyY2Vfc2V0KCJjb21wYXJlIikgewor
ICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0K
KyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVt
X2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFn
c19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImNvbXBhcmUuaCIs
CisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi9t
ZXRhOnR5cGVfdHJhaXRzIiwKKyAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9DTWFrZUxpc3RzLnR4dAppbmRleCAyZjJlM2E3NzgwOC4u
NGNlNjg1ZGE0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzL0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAj
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTMsMjE2ICsxMywzMzYgQEAKICMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogIyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KICMKLQotbGlzdChBUFBFTkQgVFlQRVNfUFVCTElDX0hFQURFUlMK
LSAgImFueS5oIgotICAiYmFkX2FueV9jYXN0LmgiCi0gICJiYWRfb3B0aW9uYWxfYWNjZXNzLmgi
Ci0gICJvcHRpb25hbC5oIgotICAic3Bhbi5oIgotICAidmFyaWFudC5oIgorYWJzbF9jY19saWJy
YXJ5KAorICBOQU1FCisgICAgYW55CisgIEhEUlMKKyAgICAiYW55LmgiCisgIENPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYWRfYW55X2Nhc3QKKyAg
ICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjp0eXBlX3Ry
YWl0cworICAgIGFic2w6OnV0aWxpdHkKKyAgUFVCTElDCiApCiAKK2Fic2xfY2NfbGlicmFyeSgK
KyAgTkFNRQorICAgIGJhZF9hbnlfY2FzdAorICBIRFJTCisgICAiYmFkX2FueV9jYXN0LmgiCisg
IENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYWRf
YW55X2Nhc3RfaW1wbAorICAgIGFic2w6OmNvbmZpZworICBQVUJMSUMKKykKIAotIyBhbnkgbGli
cmFyeQotYWJzbF9oZWFkZXJfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9hbnkKLSAgUFVC
TElDX0xJQlJBUklFUwotICAgIGFic2w6OmJhZF9hbnlfY2FzdAotICAgIGFic2w6OmJhc2UKLSAg
ICBhYnNsOjptZXRhCi0gICAgYWJzbDo6dXRpbGl0eQotICBQUklWQVRFX0NPTVBJTEVfRkxBR1MK
K2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGJhZF9hbnlfY2FzdF9pbXBsCisgIFNSQ1MK
KyAgICJiYWRfYW55X2Nhc3QuaCIKKyAgICJiYWRfYW55X2Nhc3QuY2MiCisgIENPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfQ09QVFN9CiAgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KLSAgRVhQ
T1JUX05BTUUKLSAgICBhbnkKKyAgTElOS09QVFMKKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFH
X0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvbmZpZwogKQog
Ci0jIHNwYW4gbGlicmFyeQotYWJzbF9oZWFkZXJfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJz
bF9zcGFuCi0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsOjp1dGlsaXR5Ci0gIEVYUE9SVF9O
QU1FCi0gICAgc3BhbgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgYW55X3Rlc3QKKyAgU1JD
UworICAgICJhbnlfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAg
ICAke0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJ
T05TX0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjphbnkKKyAgICBhYnNsOjpiYXNl
CisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6ZXhjZXB0aW9uX3Rlc3RpbmcKKyAgICBhYnNs
Ojp0ZXN0X2luc3RhbmNlX3RyYWNrZXIKKyAgICBnbW9ja19tYWluCiApCiAKK2Fic2xfY2NfdGVz
dCgKKyAgTkFNRQorICAgIGFueV90ZXN0X25vZXhjZXB0aW9ucworICBTUkNTCisgICAgImFueV90
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6YW55CisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmV4Y2Vw
dGlvbl90ZXN0aW5nCisgICAgYWJzbDo6dGVzdF9pbnN0YW5jZV90cmFja2VyCisgICAgZ21vY2tf
bWFpbgorKQogCi0jIGJhZF9hbnlfY2FzdCBsaWJyYXJ5Ci1saXN0KEFQUEVORCBCQURfQU5ZX0NB
U1RfU1JDCi0gICJiYWRfYW55X2Nhc3QuY2MiCi0gICR7VFlQRVNfUFVCTElDX0hFQURFUlN9Cith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBhbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0CisgIFNS
Q1MKKyAgICAiYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUwor
ICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjph
bnkKKyAgICBhYnNsOjpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcKKyAgICBnbW9ja19tYWluCiAp
CiAKLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9iYWRfYW55X2Nhc3QKLSAgU09V
UkNFUwotICAgICR7QkFEX0FOWV9DQVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICBFWFBP
UlRfTkFNRQotICAgIGJhZF9hbnlfY2FzdAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAg
c3BhbgorICBIRFJTCisgICAgInNwYW4uaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9zcGFuLmgi
CisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjph
bGdvcml0aG0KKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjp0aHJvd19kZWxlZ2F0
ZQorICAgIGFic2w6OnR5cGVfdHJhaXRzCisgIFBVQkxJQwogKQogCithYnNsX2NjX3Rlc3QoCisg
IE5BTUUKKyAgICBzcGFuX3Rlc3QKKyAgU1JDUworICAgICJzcGFuX3Rlc3QuY2MiCisgIENPUFRT
CisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KKyAg
TElOS09QVFMKKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6c3BhbgorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNs
Ojpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpleGNlcHRpb25fdGVzdGluZworICAgIGFic2w6OmZp
eGVkX2FycmF5CisgICAgYWJzbDo6aW5saW5lZF92ZWN0b3IKKyAgICBhYnNsOjpoYXNoX3Rlc3Rp
bmcKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ21vY2tfbWFpbgorKQogCi0jIG9wdGlvbmFsIGxp
YnJhcnkKLWxpc3QoQVBQRU5EIE9QVElPTkFMX1NSQwotICAib3B0aW9uYWwuY2MiCithYnNsX2Nj
X3Rlc3QoCisgIE5BTUUKKyAgICBzcGFuX3Rlc3Rfbm9leGNlcHRpb25zCisgIFNSQ1MKKyAgICAi
c3Bhbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6c3BhbgorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNs
Ojpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpleGNlcHRpb25fdGVzdGluZworICAgIGFic2w6OmZp
eGVkX2FycmF5CisgICAgYWJzbDo6aW5saW5lZF92ZWN0b3IKKyAgICBhYnNsOjpoYXNoX3Rlc3Rp
bmcKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ21vY2tfbWFpbgogKQogCi1hYnNsX2xpYnJhcnko
Ci0gIFRBUkdFVAotICAgIGFic2xfb3B0aW9uYWwKLSAgU09VUkNFUwotICAgICR7T1BUSU9OQUxf
U1JDfQotICBQVUJMSUNfTElCUkFSSUVTCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBv
cHRpb25hbAorICBIRFJTCisgICAgIm9wdGlvbmFsLmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwv
b3B0aW9uYWwuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUwog
ICAgIGFic2w6OmJhZF9vcHRpb25hbF9hY2Nlc3MKLSAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6
YmFzZV9pbnRlcm5hbAorICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycwog
ICAgIGFic2w6Om1lbW9yeQotICAgIGFic2w6Om1ldGEKKyAgICBhYnNsOjp0eXBlX3RyYWl0cwog
ICAgIGFic2w6OnV0aWxpdHkKLSAgRVhQT1JUX05BTUUKLSAgICBvcHRpb25hbAorICBQVUJMSUMK
ICkKIAotCi1zZXQoQkFEX09QVElPTkFMX0FDQ0VTU19TUkMgImJhZF9vcHRpb25hbF9hY2Nlc3Mu
Y2MiKQotc2V0KEJBRF9PUFRJT05BTF9BQ0NFU1NfTElCUkFSSUVTIGFic2w6OmJhc2UpCi0KLWFi
c2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9iYWRfb3B0aW9uYWxfYWNjZXNzCi0gIFNP
VVJDRVMKLSAgICAke0JBRF9PUFRJT05BTF9BQ0NFU1NfU1JDfQotICBQVUJMSUNfTElCUkFSSUVT
Ci0gICAgJHtCQURfT1BUSU9OQUxfQUNDRVNTX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIEVYUE9SVF9O
QU1FCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKICAgICBiYWRfb3B0aW9uYWxfYWNjZXNzCi0p
Ci0KLSMgdmFyaWFudCBsaWJyYXJ5Ci1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xf
dmFyaWFudAotICBTT1VSQ0VTCi0gICAgImJhZF92YXJpYW50X2FjY2Vzcy5oIiAiYmFkX3Zhcmlh
bnRfYWNjZXNzLmNjIiAidmFyaWFudC5oIiAiaW50ZXJuYWwvdmFyaWFudC5oIgotICBQVUJMSUNf
TElCUkFSSUVTCi0gICAgYWJzbDo6YmFzZSBhYnNsOjptZXRhIGFic2w6OnV0aWxpdHkKLSAgUFJJ
VkFURV9DT01QSUxFX0ZMQUdTCisgIEhEUlMKKyAgICAiYmFkX29wdGlvbmFsX2FjY2Vzcy5oIgor
ICBTUkNTCisgICAgImJhZF9vcHRpb25hbF9hY2Nlc3MuY2MiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CiAgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KLSAgRVhQT1JUX05B
TUUKLSAgICB2YXJpYW50CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19M
SU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcKKyAgUFVC
TElDCiApCiAKLSMKLSMjIFRFU1RTCi0jCi0KLQotIyB0ZXN0IGFueV90ZXN0Ci1zZXQoQU5ZX1RF
U1RfU1JDICJhbnlfdGVzdC5jYyIpCi1zZXQoQU5ZX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNs
OjpiYXNlIGFic2w6OnRocm93X2RlbGVnYXRlIGFic2w6OmFueSBhYnNsOjpiYWRfYW55X2Nhc3Qg
dGVzdF9pbnN0YW5jZV90cmFja2VyX2xpYikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBh
bnlfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtBTllfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICAke0FOWV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIFBSSVZBVEVfQ09NUElMRV9G
TEFHUworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgYmFkX3ZhcmlhbnRfYWNjZXNzCisg
IEhEUlMKKyAgICAiYmFkX3ZhcmlhbnRfYWNjZXNzLmgiCisgIFNSQ1MKKyAgICAiYmFkX3Zhcmlh
bnRfYWNjZXNzLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQogICAgICR7
QUJTTF9FWENFUFRJT05TX0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNf
RkxBR19MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcK
KyAgUFVCTElDCiApCiAKLQotIyB0ZXN0IGFueV90ZXN0X25vZXhjZXB0aW9ucwotYWJzbF90ZXN0
KAotICBUQVJHRVQKLSAgICBhbnlfdGVzdF9ub2V4Y2VwdGlvbnMKLSAgU09VUkNFUwotICAgICR7
QU5ZX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtBTllfVEVTVF9QVUJMSUNf
TElCUkFSSUVTfQotKQotCi0jIHRlc3QgYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdAotc2V0KEFO
WV9FWENFUFRJT05fU0FGRVRZX1RFU1RfU1JDICJhbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNj
IikKLXNldChBTllfRVhDRVBUSU9OX1NBRkVUWV9URVNUX1BVQkxJQ19MSUJSQVJJRVMKLSAgYWJz
bDo6YW55Ci0gIGFic2w6OmJhc2UKLSAgYWJzbF9iYXNlX2ludGVybmFsX2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdGluZwotKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIGFueV9leGNlcHRpb25f
c2FmZXR5X3Rlc3QKLSAgU09VUkNFUwotICAgICR7QU5ZX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9T
UkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0FOWV9FWENFUFRJT05fU0FGRVRZX1RFU1Rf
UFVCTElDX0xJQlJBUklFU30KLSAgUFJJVkFURV9DT01QSUxFX0ZMQUdTCithYnNsX2NjX3Rlc3Qo
CisgIE5BTUUKKyAgICBvcHRpb25hbF90ZXN0CisgIFNSQ1MKKyAgICAib3B0aW9uYWxfdGVzdC5j
YyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KICAgICAke0FCU0xfRVhDRVBUSU9O
U19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpvcHRpb25hbAorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpj
b25maWcKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9j
a19tYWluCiApCiAKLQotIyB0ZXN0IHNwYW5fdGVzdAotc2V0KFNQQU5fVEVTVF9TUkMgInNwYW5f
dGVzdC5jYyIpCi1zZXQoU1BBTl9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSBhYnNs
OjpzdHJpbmdzIGFic2w6OnRocm93X2RlbGVnYXRlIGFic2w6OnNwYW4gdGVzdF9pbnN0YW5jZV90
cmFja2VyX2xpYikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBzcGFuX3Rlc3QKLSAgU09V
UkNFUwotICAgICR7U1BBTl9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7U1BB
Tl9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIFBSSVZBVEVfQ09NUElMRV9GTEFHUworYWJzbF9j
Y190ZXN0KAorICBOQU1FCisgICAgb3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0CisgIFNS
Q1MKKyAgICAib3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIgorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQogICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9CisgIExJTktP
UFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30KKyAgREVQUworICAgIGFi
c2w6Om9wdGlvbmFsCisgICAgYWJzbDo6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nCisgICAgZ21v
Y2tfbWFpbgogKQogCi0KLSMgdGVzdCBzcGFuX3Rlc3Rfbm9leGNlcHRpb25zCi1hYnNsX3Rlc3Qo
Ci0gIFRBUkdFVAotICAgIHNwYW5fdGVzdF9ub2V4Y2VwdGlvbnMKLSAgU09VUkNFUwotICAgICR7
U1BBTl9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7U1BBTl9URVNUX1BVQkxJ
Q19MSUJSQVJJRVN9CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICB2YXJpYW50CisgIEhE
UlMKKyAgICAidmFyaWFudC5oIgorICBTUkNTCisgICAgImludGVybmFsL3ZhcmlhbnQuaCIKKyAg
Q09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhZF92
YXJpYW50X2FjY2VzcworICAgIGFic2w6OmJhc2VfaW50ZXJuYWwKKyAgICBhYnNsOjpjb25maWcK
KyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAgIGFic2w6
OnV0aWxpdHkKKyAgUFVCTElDCiApCiAKLQotCi0jIHRlc3Qgb3B0aW9uYWxfdGVzdAotc2V0KE9Q
VElPTkFMX1RFU1RfU1JDICJvcHRpb25hbF90ZXN0LmNjIikKLXNldChPUFRJT05BTF9URVNUX1BV
QkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSBhYnNsOjp0aHJvd19kZWxlZ2F0ZSBhYnNsOjpvcHRp
b25hbCBhYnNsX2JhZF9vcHRpb25hbF9hY2Nlc3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0g
ICAgb3B0aW9uYWxfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtPUFRJT05BTF9URVNUX1NSQ30KLSAg
UFVCTElDX0xJQlJBUklFUwotICAgICR7T1BUSU9OQUxfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQor
YWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgdmFyaWFudF90ZXN0CisgIFNSQ1MKKyAgICAidmFy
aWFudF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICAgICR7QUJT
TF9FWENFUFRJT05TX0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxB
R19MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnZhcmlhbnQKKyAgICBhYnNsOjpjb25maWcK
KyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjp0eXBl
X3RyYWl0cworICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9ja19tYWluCiApCiAKK2Fic2xfY2Nf
bGlicmFyeSgKKyAgTkFNRQorICAgIGNvbXBhcmUKKyAgSERSUworICAgICJjb21wYXJlLmgiCisg
IENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb3Jl
X2hlYWRlcnMKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICBQVUJMSUMKKykKIAotIyB0ZXN0IG9w
dGlvbmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdAotc2V0KE9QVElPTkFMX0VYQ0VQVElPTl9TQUZF
VFlfVEVTVF9TUkMgIm9wdGlvbmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIpCi1zZXQoT1BU
SU9OQUxfRVhDRVBUSU9OX1NBRkVUWV9URVNUX1BVQkxJQ19MSUJSQVJJRVMKLSAgYWJzbDo6b3B0
aW9uYWwKLSAgYWJzbF9iYXNlX2ludGVybmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZworYWJz
bF9jY190ZXN0KAorICBOQU1FCisgICAgY29tcGFyZV90ZXN0CisgIFNSQ1MKKyAgICAiY29tcGFy
ZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAg
YWJzbDo6YmFzZQorICAgIGFic2w6OmNvbXBhcmUKKyAgICBnbW9ja19tYWluCiApCiAKLWFic2xf
dGVzdCgKLSAgVEFSR0VUCi0gICAgb3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0Ci0gIFNP
VVJDRVMKLSAgICAke09QVElPTkFMX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9TUkN9Ci0gIFBVQkxJ
Q19MSUJSQVJJRVMKLSAgICAke09QVElPTkFMX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9QVUJMSUNf
TElCUkFSSUVTfQotICBQUklWQVRFX0NPTVBJTEVfRkxBR1MKKyMgVE9ETyhjb2hlbmpvbix6aGFu
Z3h5KSBGaWd1cmUgb3V0IHdoeSB0aGlzIHRlc3QgaXMgZmFpbGluZyBvbiBnY2MgNC44CitpZihD
TUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkdOVSIgQU5EIENNQUtFX0NYWF9DT01QSUxF
Ul9WRVJTSU9OIFZFUlNJT05fTEVTUyA0LjkpCitlbHNlKCkKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQorICAgIHZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0eV90ZXN0CisgIFNSQ1MKKyAgICAidmFyaWFu
dF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CiAgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KKyAgTElOS09QVFMKKyAgICAke0FCU0xf
RVhDRVBUSU9OU19GTEFHX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6dmFyaWFudAorICAg
IGFic2w6OmNvbmZpZworICAgIGFic2w6OmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZworICAgIGFi
c2w6Om1lbW9yeQorICAgIGdtb2NrX21haW4KICkKK2VuZGlmKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzL2FueS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55LmgKaW5kZXggYTk3M2M2ZGFiN2UuLmYzYTMy
ODEyNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9h
bnkuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNTgsNyAr
NTgsNyBAQAogCiAjaWZkZWYgQUJTTF9IQVZFX1NURF9BTlkKIAotI2luY2x1ZGUgPGFueT4KKyNp
bmNsdWRlIDxhbnk+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CiAKIG5hbWVzcGFjZSBhYnNsIHsK
IHVzaW5nIHN0ZDo6YW55OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X2V4Y2VwdGlvbl9z
YWZldHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2FueV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MK
aW5kZXggZjlkZDhjNDgyYzIuLjVkN2Q4YTVjZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9h
bnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2FueV9leGNlcHRp
b25fc2FmZXR5X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTEzNSw2ICsxMzUsNyBAQCBURVNUKEFueUV4Y2VwdGlvblNhZmV0eSwgQXNzaWdubWVu
dCkgewogICBFWFBFQ1RfVFJVRShzdHJvbmdfZW1wdHlfYW55X3Rlc3Rlci5UZXN0KGFzc2lnbl92
YWwpKTsKICAgRVhQRUNUX1RSVUUoc3Ryb25nX2VtcHR5X2FueV90ZXN0ZXIuVGVzdChtb3ZlKSk7
CiB9CisKIC8vIGxpYnN0ZGMrKyBzdGQ6OmFueSBmYWlscyB0aGlzIHRlc3QKICNpZiAhZGVmaW5l
ZChBQlNMX0hBVkVfU1REX0FOWSkKIFRFU1QoQW55RXhjZXB0aW9uU2FmZXR5LCBFbXBsYWNlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2FueV90
ZXN0LmNjCmluZGV4IDExNWU3OGRmN2FmLi44NzEwNDcyMTkwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvYW55X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X3Rlc3QuY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1NCw2ICsxNTQsMTQgQEAgVEVT
VChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uKSB7CiAgIEVYUEVDVF9FUSg1LCB2LnZhbHVl
KTsKIH0KIAorVEVTVChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uVmFyaWFibGVUZW1wbGF0
ZSkgeworICBjb25zdCBDb3B5T25seSBjb3B5X29ubHl7fTsKKyAgYWJzbDo6YW55IG8oYWJzbDo6
aW5fcGxhY2VfdHlwZTxJbnRNb3ZlT25seUNvcHlPbmx5PiwgNSwgTW92ZU9ubHkoKSwKKyAgICAg
ICAgICAgICAgY29weV9vbmx5KTsKKyAgYXV0byYgdiA9IGFic2w6OmFueV9jYXN0PEludE1vdmVP
bmx5Q29weU9ubHkmPihvKTsKKyAgRVhQRUNUX0VRKDUsIHYudmFsdWUpOworfQorCiBURVNUKEFu
eVRlc3QsIEluUGxhY2VDb25zdHJ1Y3Rpb25XaXRoQ1YpIHsKICAgY29uc3QgQ29weU9ubHkgY29w
eV9vbmx5e307CiAgIGFic2w6OmFueSBvKGFic2w6OmluX3BsYWNlX3R5cGVfdDxjb25zdCB2b2xh
dGlsZSBJbnRNb3ZlT25seUNvcHlPbmx5PigpLCA1LApAQCAtMTYyLDEyICsxNzAsMjYgQEAgVEVT
VChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uV2l0aENWKSB7CiAgIEVYUEVDVF9FUSg1LCB2
LnZhbHVlKTsKIH0KIAorVEVTVChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uV2l0aENWVmFy
aWFibGVUZW1wbGF0ZSkgeworICBjb25zdCBDb3B5T25seSBjb3B5X29ubHl7fTsKKyAgYWJzbDo6
YW55IG8oYWJzbDo6aW5fcGxhY2VfdHlwZTxjb25zdCB2b2xhdGlsZSBJbnRNb3ZlT25seUNvcHlP
bmx5PiwgNSwKKyAgICAgICAgICAgICAgTW92ZU9ubHkoKSwgY29weV9vbmx5KTsKKyAgYXV0byYg
diA9IGFic2w6OmFueV9jYXN0PEludE1vdmVPbmx5Q29weU9ubHkmPihvKTsKKyAgRVhQRUNUX0VR
KDUsIHYudmFsdWUpOworfQorCiBURVNUKEFueVRlc3QsIEluUGxhY2VDb25zdHJ1Y3Rpb25XaXRo
RnVuY3Rpb24pIHsKICAgYWJzbDo6YW55IG8oYWJzbDo6aW5fcGxhY2VfdHlwZV90PEZ1bmN0aW9u
VHlwZT4oKSwgRnVuY3Rpb25Ub0VtcGxhY2UpOwogICBGdW5jdGlvblR5cGUqJiBjb25zdHJ1Y3Rp
b25fcmVzdWx0ID0gYWJzbDo6YW55X2Nhc3Q8RnVuY3Rpb25UeXBlKiY+KG8pOwogICBFWFBFQ1Rf
RVEoJkZ1bmN0aW9uVG9FbXBsYWNlLCBjb25zdHJ1Y3Rpb25fcmVzdWx0KTsKIH0KIAorVEVTVChB
bnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uV2l0aEZ1bmN0aW9uVmFyaWFibGVUZW1wbGF0ZSkg
eworICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlPEZ1bmN0aW9uVHlwZT4sIEZ1bmN0
aW9uVG9FbXBsYWNlKTsKKyAgYXV0byYgY29uc3RydWN0aW9uX3Jlc3VsdCA9IGFic2w6OmFueV9j
YXN0PEZ1bmN0aW9uVHlwZSomPihvKTsKKyAgRVhQRUNUX0VRKCZGdW5jdGlvblRvRW1wbGFjZSwg
Y29uc3RydWN0aW9uX3Jlc3VsdCk7Cit9CisKIFRFU1QoQW55VGVzdCwgSW5QbGFjZUNvbnN0cnVj
dGlvbldpdGhBcnJheSkgewogICBBcnJheVR5cGUgYXIgPSB7NSwgNDJ9OwogICBhYnNsOjphbnkg
byhhYnNsOjppbl9wbGFjZV90eXBlX3Q8QXJyYXlUeXBlPigpLCBhcik7CkBAIC0xNzUsNiArMTk3
LDEzIEBAIFRFU1QoQW55VGVzdCwgSW5QbGFjZUNvbnN0cnVjdGlvbldpdGhBcnJheSkgewogICBF
WFBFQ1RfRVEoJmFyWzBdLCBjb25zdHJ1Y3Rpb25fcmVzdWx0KTsKIH0KIAorVEVTVChBbnlUZXN0
LCBJblBsYWNlQ29uc3RydWN0aW9uV2l0aEFycmF5VmFyaWFibGVUZW1wbGF0ZSkgeworICBBcnJh
eVR5cGUgYXIgPSB7NSwgNDJ9OworICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlPEFy
cmF5VHlwZT4sIGFyKTsKKyAgYXV0byYgY29uc3RydWN0aW9uX3Jlc3VsdCA9IGFic2w6OmFueV9j
YXN0PERlY2F5ZWRBcnJheSY+KG8pOworICBFWFBFQ1RfRVEoJmFyWzBdLCBjb25zdHJ1Y3Rpb25f
cmVzdWx0KTsKK30KKwogVEVTVChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uSWxpc3QpIHsK
ICAgY29uc3QgQ29weU9ubHkgY29weV9vbmx5e307CiAgIGFic2w6OmFueSBvKGFic2w6OmluX3Bs
YWNlX3R5cGVfdDxMaXN0TW92ZU9ubHlDb3B5T25seT4oKSwgezEsIDIsIDMsIDR9LApAQCAtMTg0
LDYgKzIxMywxNSBAQCBURVNUKEFueVRlc3QsIEluUGxhY2VDb25zdHJ1Y3Rpb25JbGlzdCkgewog
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRfdmFsdWVzLCB2LnZhbHVlcyk7CiB9CiAKK1RFU1QoQW55VGVz
dCwgSW5QbGFjZUNvbnN0cnVjdGlvbklsaXN0VmFyaWFibGVUZW1wbGF0ZSkgeworICBjb25zdCBD
b3B5T25seSBjb3B5X29ubHl7fTsKKyAgYWJzbDo6YW55IG8oYWJzbDo6aW5fcGxhY2VfdHlwZTxM
aXN0TW92ZU9ubHlDb3B5T25seT4sIHsxLCAyLCAzLCA0fSwKKyAgICAgICAgICAgICAgTW92ZU9u
bHkoKSwgY29weV9vbmx5KTsKKyAgYXV0byYgdiA9IGFic2w6OmFueV9jYXN0PExpc3RNb3ZlT25s
eUNvcHlPbmx5Jj4obyk7CisgIHN0ZDo6dmVjdG9yPGludD4gZXhwZWN0ZWRfdmFsdWVzID0gezEs
IDIsIDMsIDR9OworICBFWFBFQ1RfRVEoZXhwZWN0ZWRfdmFsdWVzLCB2LnZhbHVlcyk7Cit9CisK
IFRFU1QoQW55VGVzdCwgSW5QbGFjZUNvbnN0cnVjdGlvbklsaXN0V2l0aENWKSB7CiAgIGNvbnN0
IENvcHlPbmx5IGNvcHlfb25seXt9OwogICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBl
X3Q8Y29uc3Qgdm9sYXRpbGUgTGlzdE1vdmVPbmx5Q29weU9ubHk+KCksCkBAIC0xOTMsMTEgKzIz
MSwyNSBAQCBURVNUKEFueVRlc3QsIEluUGxhY2VDb25zdHJ1Y3Rpb25JbGlzdFdpdGhDVikgewog
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRfdmFsdWVzLCB2LnZhbHVlcyk7CiB9CiAKK1RFU1QoQW55VGVz
dCwgSW5QbGFjZUNvbnN0cnVjdGlvbklsaXN0V2l0aENWVmFyaWFibGVUZW1wbGF0ZSkgeworICBj
b25zdCBDb3B5T25seSBjb3B5X29ubHl7fTsKKyAgYWJzbDo6YW55IG8oYWJzbDo6aW5fcGxhY2Vf
dHlwZTxjb25zdCB2b2xhdGlsZSBMaXN0TW92ZU9ubHlDb3B5T25seT4sCisgICAgICAgICAgICAg
IHsxLCAyLCAzLCA0fSwgTW92ZU9ubHkoKSwgY29weV9vbmx5KTsKKyAgYXV0byYgdiA9IGFic2w6
OmFueV9jYXN0PExpc3RNb3ZlT25seUNvcHlPbmx5Jj4obyk7CisgIHN0ZDo6dmVjdG9yPGludD4g
ZXhwZWN0ZWRfdmFsdWVzID0gezEsIDIsIDMsIDR9OworICBFWFBFQ1RfRVEoZXhwZWN0ZWRfdmFs
dWVzLCB2LnZhbHVlcyk7Cit9CisKIFRFU1QoQW55VGVzdCwgSW5QbGFjZU5vQXJncykgewogICBh
YnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlX3Q8aW50Pnt9KTsKICAgRVhQRUNUX0VRKDAs
IGFic2w6OmFueV9jYXN0PGludCY+KG8pKTsKIH0KIAorVEVTVChBbnlUZXN0LCBJblBsYWNlTm9B
cmdzVmFyaWFibGVUZW1wbGF0ZSkgeworICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBl
PGludD4pOworICBFWFBFQ1RfRVEoMCwgYWJzbDo6YW55X2Nhc3Q8aW50Jj4obykpOworfQorCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRW5hYmxlciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4K
IHN0cnVjdCBDYW5FbXBsYWNlQW55SW1wbCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKIApAQCAtNTAx
LDcgKzU1Myw3IEBAIFRFU1QoQW55VGVzdCwgQ29weSkgewogICBJbnN0YW5jZVRyYWNrZXIgdHJh
Y2tlcl9yYWlpOwogCiAgIHsKLSAgICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlX3Q8
Q29weWFibGVPbmx5SW5zdGFuY2U+e30sIDEyMyk7CisgICAgYWJzbDo6YW55IG8oYWJzbDo6aW5f
cGxhY2VfdHlwZTxDb3B5YWJsZU9ubHlJbnN0YW5jZT4sIDEyMyk7CiAgICAgQ29weWFibGVPbmx5
SW5zdGFuY2UqIGYxID0gYWJzbDo6YW55X2Nhc3Q8Q29weWFibGVPbmx5SW5zdGFuY2U+KCZvKTsK
IAogICAgIGFic2w6OmFueSBvMihvKTsKQEAgLTYyMiw3ICs2NzQsNyBAQCBURVNUKEFueVRlc3Qs
IFRocm93QmFkQWxsb2MpIHsKICAgfQogCiAgIHsKLSAgICBhYnNsOjphbnkgYShhYnNsOjppbl9w
bGFjZV90eXBlX3Q8aW50Pnt9KTsKKyAgICBhYnNsOjphbnkgYShhYnNsOjppbl9wbGFjZV90eXBl
PGludD4pOwogICAgIEFCU0xfQU5ZX1RFU1RfRVhQRUNUX0JBRF9BTllfQ0FTVChhYnNsOjphbnlf
Y2FzdDxmbG9hdCY+KGEpKTsKICAgICBBQlNMX0FOWV9URVNUX0VYUEVDVF9CQURfQU5ZX0NBU1Qo
YWJzbDo6YW55X2Nhc3Q8Y29uc3QgZmxvYXQmPihhKSk7CiAgICAgQUJTTF9BTllfVEVTVF9FWFBF
Q1RfQkFEX0FOWV9DQVNUKGFic2w6OmFueV9jYXN0PGZsb2F0JiY+KGFic2w6OmFueXt9KSk7CkBA
IC02NjUsNyArNzE3LDcgQEAgVEVTVChBbnlUZXN0LCBGYWlsZWRDb3B5KSB7CiAgIH0KIAogICB7
Ci0gICAgYWJzbDo6YW55IHNyYyhhYnNsOjppbl9wbGFjZV90eXBlX3Q8QmFkQ29weWFibGU+e30p
OworICAgIGFic2w6OmFueSBzcmMoYWJzbDo6aW5fcGxhY2VfdHlwZTxCYWRDb3B5YWJsZT4pOwog
ICAgIEFCU0xfQU5ZX1RFU1RfRVhQRUNUX0JBRF9DT1BZKGFic2w6OmFueXtzcmN9KTsKICAgfQog
CkBAIC02NzcsMjEgKzcyOSwyMSBAQCBURVNUKEFueVRlc3QsIEZhaWxlZENvcHkpIHsKIAogICB7
CiAgICAgQmFkQ29weWFibGUgYmFkOwotICAgIGFic2w6OmFueSB0YXJnZXQoYWJzbDo6aW5fcGxh
Y2VfdHlwZV90PEJhZENvcHlhYmxlPnt9KTsKKyAgICBhYnNsOjphbnkgdGFyZ2V0KGFic2w6Omlu
X3BsYWNlX3R5cGU8QmFkQ29weWFibGU+KTsKICAgICBBQlNMX0FOWV9URVNUX0VYUEVDVF9CQURf
Q09QWSh0YXJnZXQgPSBiYWQpOwogICAgIEVYUEVDVF9UUlVFKHRhcmdldC5oYXNfdmFsdWUoKSk7
CiAgIH0KIAogICB7Ci0gICAgYWJzbDo6YW55IHNyYyhhYnNsOjppbl9wbGFjZV90eXBlX3Q8QmFk
Q29weWFibGU+e30pOworICAgIGFic2w6OmFueSBzcmMoYWJzbDo6aW5fcGxhY2VfdHlwZTxCYWRD
b3B5YWJsZT4pOwogICAgIGFic2w6OmFueSB0YXJnZXQ7CiAgICAgQUJTTF9BTllfVEVTVF9FWFBF
Q1RfQkFEX0NPUFkodGFyZ2V0ID0gc3JjKTsKICAgICBFWFBFQ1RfRkFMU0UodGFyZ2V0Lmhhc192
YWx1ZSgpKTsKICAgfQogCiAgIHsKLSAgICBhYnNsOjphbnkgc3JjKGFic2w6OmluX3BsYWNlX3R5
cGVfdDxCYWRDb3B5YWJsZT57fSk7Ci0gICAgYWJzbDo6YW55IHRhcmdldChhYnNsOjppbl9wbGFj
ZV90eXBlX3Q8QmFkQ29weWFibGU+e30pOworICAgIGFic2w6OmFueSBzcmMoYWJzbDo6aW5fcGxh
Y2VfdHlwZTxCYWRDb3B5YWJsZT4pOworICAgIGFic2w6OmFueSB0YXJnZXQoYWJzbDo6aW5fcGxh
Y2VfdHlwZTxCYWRDb3B5YWJsZT4pOwogICAgIEFCU0xfQU5ZX1RFU1RfRVhQRUNUX0JBRF9DT1BZ
KHRhcmdldCA9IHNyYyk7CiAgICAgRVhQRUNUX1RSVUUodGFyZ2V0Lmhhc192YWx1ZSgpKTsKICAg
fQpAQCAtNzA3LDcgKzc1OSw3IEBAIFRFU1QoQW55VGVzdCwgRmFpbGVkRW1wbGFjZSkgewogCiAg
IHsKICAgICBCYWRDb3B5YWJsZSBiYWQ7Ci0gICAgYWJzbDo6YW55IHRhcmdldChhYnNsOjppbl9w
bGFjZV90eXBlX3Q8aW50Pnt9KTsKKyAgICBhYnNsOjphbnkgdGFyZ2V0KGFic2w6OmluX3BsYWNl
X3R5cGU8aW50Pik7CiAgICAgQUJTTF9BTllfVEVTVF9FWFBFQ1RfQkFEX0NPUFkodGFyZ2V0LmVt
cGxhY2U8QmFkQ29weWFibGU+KGJhZCkpOwogI2lmIGRlZmluZWQoQUJTTF9IQVZFX1NURF9BTlkp
ICYmIGRlZmluZWQoX19HTElCQ1hYX18pCiAgICAgLy8gbGlic3RkYysrIHN0ZDo6YW55OjplbXBs
YWNlKCkgaW1wbGVtZW50YXRpb24gKGFzIG9mIDcuMikgaGFzIGEgYnVnOiBpZiBhbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXMvYmFkX2FueV9jYXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX2FueV9j
YXN0LmNjCmluZGV4IDJlMmZkMjlhMzM3Li41MDU5MTlhNTU4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvYmFkX2FueV9jYXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF9hbnlfY2FzdC5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXMvYmFkX2FueV9jYXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfYW55X2Nhc3QuaAppbmRl
eCA2MDM5MDEzMjRhZi4uOGQwMjBlZGU0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF9h
bnlfY2FzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF9hbnlfY2FzdC5oCkBAIC00LDcgKzQsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRf
b3B0aW9uYWxfYWNjZXNzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5jYwpp
bmRleCA1NTg3MDc3NjBlOS4uYTc5MWM3YzIxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2Jh
ZF9vcHRpb25hbF9hY2Nlc3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vz
cy5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX29w
dGlvbmFsX2FjY2Vzcy5oCmluZGV4IGM2YzI3NDYwYTc2Li5hZGQ1YzQ1MmNkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2Jh
ZF9vcHRpb25hbF9hY2Nlc3MuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX3ZhcmlhbnRfYWNjZXNzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXMvYmFkX3ZhcmlhbnRfYWNjZXNzLmNjCmluZGV4IGQyN2Q3NzU2MTc5Li5hNDMyNWM4
ZGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX3ZhcmlhbnRfYWNjZXNzLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX3ZhcmlhbnRf
YWNjZXNzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfdmFyaWFudF9hY2Nlc3MuaAppbmRleCBlNzM1NWE1
YTc0Yy4uNjM3ZGI0MzU1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF92YXJpYW50X2Fj
Y2Vzcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5oCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9j
b21wYXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9jb21wYXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjUwMzYxZDYyMzAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXMvY29tcGFyZS5oCkBAIC0wLDAgKzEsNTA4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJz
ZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tcGFyZS5o
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5l
cyB0aGUgYGFic2w6OndlYWtfZXF1YWxpdHlgLCBgYWJzbDo6c3Ryb25nX2VxdWFsaXR5YCwKKy8v
IGBhYnNsOjpwYXJ0aWFsX29yZGVyaW5nYCwgYGFic2w6OndlYWtfb3JkZXJpbmdgLCBhbmQgYGFi
c2w6OnN0cm9uZ19vcmRlcmluZ2AKKy8vIHR5cGVzIGZvciBzdG9yaW5nIHRoZSByZXN1bHRzIG9m
IHRocmVlIHdheSBjb21wYXJpc29ucy4KKy8vCisvLyBFeGFtcGxlOgorLy8gICBhYnNsOjp3ZWFr
X29yZGVyaW5nIGNvbXBhcmUoY29uc3Qgc3RkOjpzdHJpbmcmIGEsIGNvbnN0IHN0ZDo6c3RyaW5n
JiBiKTsKKy8vCisvLyBUaGVzZSBhcmUgQysrMTEgY29tcGF0aWJsZSB2ZXJzaW9ucyBvZiB0aGUg
QysrMjAgY29ycmVzcG9uZGluZyB0eXBlcworLy8gKGBzdGQ6OndlYWtfZXF1YWxpdHlgLCBldGMu
KSBhbmQgYXJlIGRlc2lnbmVkIHRvIGJlIGRyb3AtaW4gcmVwbGFjZW1lbnRzCisvLyBmb3IgY29k
ZSBjb21wbGlhbnQgd2l0aCBDKysyMC4KKworI2lmbmRlZiBBQlNMX1RZUEVTX0NPTVBBUkVfSF8K
KyNkZWZpbmUgQUJTTF9UWVBFU19DT01QQVJFX0hfCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2lu
Y2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiYWJzbC9t
ZXRhL3R5cGVfdHJhaXRzLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb21wYXJl
X2ludGVybmFsIHsKKwordXNpbmcgdmFsdWVfdHlwZSA9IGludDhfdDsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitzdHJ1Y3QgRmFpbCB7CisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDwgMCwg
Ik9ubHkgbGl0ZXJhbCBgMGAgaXMgYWxsb3dlZC4iKTsKK307CisKKy8vIFdlIG5lZWQgdGhlIE51
bGxQdHJUIHRlbXBsYXRlIHRvIGF2b2lkIHRyaWdnZXJpbmcgdGhlIG1vZGVybml6ZS11c2UtbnVs
bHB0cgorLy8gQ2xhbmdUaWR5IHdhcm5pbmcgaW4gdXNlciBjb2RlLgordGVtcGxhdGUgPHR5cGVu
YW1lIE51bGxQdHJUID0gc3RkOjpudWxscHRyX3Q+CitzdHJ1Y3QgT25seUxpdGVyYWxaZXJvIHsK
KyAgY29uc3RleHByIE9ubHlMaXRlcmFsWmVybyhOdWxsUHRyVCkgbm9leGNlcHQge30gIC8vIE5P
TElOVAorCisgIC8vIEZhaWxzIGNvbXBpbGF0aW9uIHdoZW4gYG51bGxwdHJgIG9yIGludGVncmFs
IHR5cGUgYXJndW1lbnRzIG90aGVyIHRoYW4KKyAgLy8gYGludGAgYXJlIHBhc3NlZC4gVGhpcyBj
b25zdHJ1Y3RvciBkb2Vzbid0IGFjY2VwdCBgaW50YCBiZWNhdXNlIGxpdGVyYWwgYDBgCisgIC8v
IGhhcyB0eXBlIGBpbnRgLiBMaXRlcmFsIGAwYCBhcmd1bWVudHMgd2lsbCBiZSBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0bworICAvLyBgc3RkOjpudWxscHRyX3RgIGFuZCBhY2NlcHRlZCBieSB0aGUg
YWJvdmUgY29uc3RydWN0b3IsIHdoaWxlIG90aGVyIGBpbnRgCisgIC8vIGFyZ3VtZW50cyB3aWxs
IGZhaWwgdG8gYmUgY29udmVydGVkIGFuZCBjYXVzZSBjb21waWxhdGlvbiBmYWlsdXJlLgorICB0
ZW1wbGF0ZSA8CisgICAgICB0eXBlbmFtZSBULAorICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICBzdGQ6OmlzX3NhbWU8VCwgc3RkOjpudWxscHRyX3Q+
Ojp2YWx1ZSB8fAorICAgICAgICAgIChzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSAmJiAhc3Rk
Ojppc19zYW1lPFQsIGludD46OnZhbHVlKT46OnR5cGUsCisgICAgICB0eXBlbmFtZSA9IHR5cGVu
YW1lIEZhaWw8VD46OnR5cGU+CisgIE9ubHlMaXRlcmFsWmVybyhUKTsgIC8vIE5PTElOVAorfTsK
KworZW51bSBjbGFzcyBlcSA6IHZhbHVlX3R5cGUgeworICBlcXVhbCA9IDAsCisgIGVxdWl2YWxl
bnQgPSBlcXVhbCwKKyAgbm9uZXF1YWwgPSAxLAorICBub25lcXVpdmFsZW50ID0gbm9uZXF1YWws
Cit9OworCitlbnVtIGNsYXNzIG9yZCA6IHZhbHVlX3R5cGUgeyBsZXNzID0gLTEsIGdyZWF0ZXIg
PSAxIH07CisKK2VudW0gY2xhc3MgbmNtcCA6IHZhbHVlX3R5cGUgeyB1bm9yZGVyZWQgPSAtMTI3
IH07CisKKy8vIFRoZXNlIHRlbXBsYXRlIGJhc2UgY2xhc3NlcyBhbGxvdyBmb3IgZGVmaW5pbmcg
dGhlIHZhbHVlcyBvZiB0aGUgY29uc3RhbnRzCisvLyBpbiB0aGUgaGVhZGVyIGZpbGUgKGZvciBw
ZXJmb3JtYW5jZSkgd2l0aG91dCB1c2luZyBpbmxpbmUgdmFyaWFibGVzICh3aGljaAorLy8gYXJl
bid0IGF2YWlsYWJsZSBpbiBDKysxMSkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCB3
ZWFrX2VxdWFsaXR5X2Jhc2UgeworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0IFQgZXF1
aXZhbGVudDsKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIG5vbmVxdWl2YWxlbnQ7
Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUIHdlYWtfZXF1YWxpdHlfYmFzZTxU
Pjo6ZXF1aXZhbGVudChlcTo6ZXF1aXZhbGVudCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Nv
bnN0IFQgd2Vha19lcXVhbGl0eV9iYXNlPFQ+Ojpub25lcXVpdmFsZW50KGVxOjpub25lcXVpdmFs
ZW50KTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qgc3Ryb25nX2VxdWFsaXR5X2Jh
c2UgeworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0IFQgZXF1YWw7CisgIEFCU0xfQ09O
U1RfSU5JVCBzdGF0aWMgY29uc3QgVCBub25lcXVhbDsKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRp
YyBjb25zdCBUIGVxdWl2YWxlbnQ7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBu
b25lcXVpdmFsZW50OworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCBzdHJvbmdf
ZXF1YWxpdHlfYmFzZTxUPjo6ZXF1YWwoZXE6OmVxdWFsKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorY29uc3QgVCBzdHJvbmdfZXF1YWxpdHlfYmFzZTxUPjo6bm9uZXF1YWwoZXE6Om5vbmVxdWFs
KTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCBzdHJvbmdfZXF1YWxpdHlfYmFzZTxU
Pjo6ZXF1aXZhbGVudChlcTo6ZXF1aXZhbGVudCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Nv
bnN0IFQgc3Ryb25nX2VxdWFsaXR5X2Jhc2U8VD46Om5vbmVxdWl2YWxlbnQoZXE6Om5vbmVxdWl2
YWxlbnQpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBwYXJ0aWFsX29yZGVyaW5n
X2Jhc2UgeworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0IFQgbGVzczsKKyAgQUJTTF9D
T05TVF9JTklUIHN0YXRpYyBjb25zdCBUIGVxdWl2YWxlbnQ7CisgIEFCU0xfQ09OU1RfSU5JVCBz
dGF0aWMgY29uc3QgVCBncmVhdGVyOworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0IFQg
dW5vcmRlcmVkOworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCBwYXJ0aWFsX29y
ZGVyaW5nX2Jhc2U8VD46Omxlc3Mob3JkOjpsZXNzKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Y29uc3QgVCBwYXJ0aWFsX29yZGVyaW5nX2Jhc2U8VD46OmVxdWl2YWxlbnQoZXE6OmVxdWl2YWxl
bnQpOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUIHBhcnRpYWxfb3JkZXJpbmdfYmFz
ZTxUPjo6Z3JlYXRlcihvcmQ6OmdyZWF0ZXIpOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25z
dCBUIHBhcnRpYWxfb3JkZXJpbmdfYmFzZTxUPjo6dW5vcmRlcmVkKG5jbXA6OnVub3JkZXJlZCk7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IHdlYWtfb3JkZXJpbmdfYmFzZSB7Cisg
IEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBsZXNzOworICBBQlNMX0NPTlNUX0lOSVQg
c3RhdGljIGNvbnN0IFQgZXF1aXZhbGVudDsKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25z
dCBUIGdyZWF0ZXI7Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUIHdlYWtfb3Jk
ZXJpbmdfYmFzZTxUPjo6bGVzcyhvcmQ6Omxlc3MpOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
b25zdCBUIHdlYWtfb3JkZXJpbmdfYmFzZTxUPjo6ZXF1aXZhbGVudChlcTo6ZXF1aXZhbGVudCk7
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQgd2Vha19vcmRlcmluZ19iYXNlPFQ+Ojpn
cmVhdGVyKG9yZDo6Z3JlYXRlcik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IHN0
cm9uZ19vcmRlcmluZ19iYXNlIHsKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIGxl
c3M7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBlcXVhbDsKKyAgQUJTTF9DT05T
VF9JTklUIHN0YXRpYyBjb25zdCBUIGVxdWl2YWxlbnQ7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0
aWMgY29uc3QgVCBncmVhdGVyOworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCBz
dHJvbmdfb3JkZXJpbmdfYmFzZTxUPjo6bGVzcyhvcmQ6Omxlc3MpOwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Citjb25zdCBUIHN0cm9uZ19vcmRlcmluZ19iYXNlPFQ+OjplcXVhbChlcTo6ZXF1YWwp
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUIHN0cm9uZ19vcmRlcmluZ19iYXNlPFQ+
OjplcXVpdmFsZW50KGVxOjplcXVpdmFsZW50KTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29u
c3QgVCBzdHJvbmdfb3JkZXJpbmdfYmFzZTxUPjo6Z3JlYXRlcihvcmQ6OmdyZWF0ZXIpOworCit9
ICAvLyBuYW1lc3BhY2UgY29tcGFyZV9pbnRlcm5hbAorCitjbGFzcyB3ZWFrX2VxdWFsaXR5Cisg
ICAgOiBwdWJsaWMgY29tcGFyZV9pbnRlcm5hbDo6d2Vha19lcXVhbGl0eV9iYXNlPHdlYWtfZXF1
YWxpdHk+IHsKKyAgZXhwbGljaXQgY29uc3RleHByIHdlYWtfZXF1YWxpdHkoY29tcGFyZV9pbnRl
cm5hbDo6ZXEgdikgbm9leGNlcHQKKyAgICAgIDogdmFsdWVfKHN0YXRpY19jYXN0PGNvbXBhcmVf
aW50ZXJuYWw6OnZhbHVlX3R5cGU+KHYpKSB7fQorICBmcmllbmQgc3RydWN0IGNvbXBhcmVfaW50
ZXJuYWw6OndlYWtfZXF1YWxpdHlfYmFzZTx3ZWFrX2VxdWFsaXR5PjsKKworIHB1YmxpYzoKKyAg
Ly8gQ29tcGFyaXNvbnMKKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oCisgICAg
ICB3ZWFrX2VxdWFsaXR5IHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBu
b2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfID09IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oCisgICAgICB3ZWFrX2VxdWFsaXR5IHYsIGNvbXBhcmVfaW50
ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVf
ICE9IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29tcGFyZV9p
bnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdlYWtfZXF1YWxpdHkgdikgbm9leGNlcHQgeworICAgIHJldHVybiAwID09IHYudmFs
dWVfOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbXBhcmVfaW50
ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3ZWFrX2VxdWFsaXR5IHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCAhPSB2LnZhbHVl
XzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29tcGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZSB2YWx1
ZV87Cit9OworCitjbGFzcyBzdHJvbmdfZXF1YWxpdHkKKyAgICA6IHB1YmxpYyBjb21wYXJlX2lu
dGVybmFsOjpzdHJvbmdfZXF1YWxpdHlfYmFzZTxzdHJvbmdfZXF1YWxpdHk+IHsKKyAgZXhwbGlj
aXQgY29uc3RleHByIHN0cm9uZ19lcXVhbGl0eShjb21wYXJlX2ludGVybmFsOjplcSB2KSBub2V4
Y2VwdAorICAgICAgOiB2YWx1ZV8oc3RhdGljX2Nhc3Q8Y29tcGFyZV9pbnRlcm5hbDo6dmFsdWVf
dHlwZT4odikpIHt9CisgIGZyaWVuZCBzdHJ1Y3QgY29tcGFyZV9pbnRlcm5hbDo6c3Ryb25nX2Vx
dWFsaXR5X2Jhc2U8c3Ryb25nX2VxdWFsaXR5PjsKKworIHB1YmxpYzoKKyAgLy8gQ29udmVyc2lv
bgorICBjb25zdGV4cHIgb3BlcmF0b3Igd2Vha19lcXVhbGl0eSgpIGNvbnN0IG5vZXhjZXB0IHsg
IC8vIE5PTElOVAorICAgIHJldHVybiB2YWx1ZV8gPT0gMCA/IHdlYWtfZXF1YWxpdHk6OmVxdWl2
YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgOiB3ZWFrX2VxdWFsaXR5Ojpub25lcXVpdmFs
ZW50OworICB9CisgIC8vIENvbXBhcmlzb25zCisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj09KAorICAgICAgc3Ryb25nX2VxdWFsaXR5IHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlM
aXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfID09IDA7CisgIH0K
KyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oCisgICAgICBzdHJvbmdfZXF1YWxp
dHkgdiwgY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAg
ICByZXR1cm4gdi52YWx1ZV8gIT0gMDsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb25nX2VxdWFsaXR5IHYpIG5vZXhjZXB0IHsKKyAg
ICByZXR1cm4gMCA9PSB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3IhPShjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb25nX2VxdWFsaXR5IHYpIG5vZXhjZXB0IHsKKyAg
ICByZXR1cm4gMCAhPSB2LnZhbHVlXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29tcGFyZV9pbnRl
cm5hbDo6dmFsdWVfdHlwZSB2YWx1ZV87Cit9OworCitjbGFzcyBwYXJ0aWFsX29yZGVyaW5nCisg
ICAgOiBwdWJsaWMgY29tcGFyZV9pbnRlcm5hbDo6cGFydGlhbF9vcmRlcmluZ19iYXNlPHBhcnRp
YWxfb3JkZXJpbmc+IHsKKyAgZXhwbGljaXQgY29uc3RleHByIHBhcnRpYWxfb3JkZXJpbmcoY29t
cGFyZV9pbnRlcm5hbDo6ZXEgdikgbm9leGNlcHQKKyAgICAgIDogdmFsdWVfKHN0YXRpY19jYXN0
PGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5cGU+KHYpKSB7fQorICBleHBsaWNpdCBjb25zdGV4
cHIgcGFydGlhbF9vcmRlcmluZyhjb21wYXJlX2ludGVybmFsOjpvcmQgdikgbm9leGNlcHQKKyAg
ICAgIDogdmFsdWVfKHN0YXRpY19jYXN0PGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5cGU+KHYp
KSB7fQorICBleHBsaWNpdCBjb25zdGV4cHIgcGFydGlhbF9vcmRlcmluZyhjb21wYXJlX2ludGVy
bmFsOjpuY21wIHYpIG5vZXhjZXB0CisgICAgICA6IHZhbHVlXyhzdGF0aWNfY2FzdDxjb21wYXJl
X2ludGVybmFsOjp2YWx1ZV90eXBlPih2KSkge30KKyAgZnJpZW5kIHN0cnVjdCBjb21wYXJlX2lu
dGVybmFsOjpwYXJ0aWFsX29yZGVyaW5nX2Jhc2U8cGFydGlhbF9vcmRlcmluZz47CisKKyAgY29u
c3RleHByIGJvb2wgaXNfb3JkZXJlZCgpIGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdmFs
dWVfICE9CisgICAgICAgICAgIGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5cGUoY29tcGFyZV9p
bnRlcm5hbDo6bmNtcDo6dW5vcmRlcmVkKTsKKyAgfQorCisgcHVibGljOgorICAvLyBDb252ZXJz
aW9uCisgIGNvbnN0ZXhwciBvcGVyYXRvciB3ZWFrX2VxdWFsaXR5KCkgY29uc3Qgbm9leGNlcHQg
eyAgLy8gTk9MSU5UCisgICAgcmV0dXJuIHZhbHVlXyA9PSAwID8gd2Vha19lcXVhbGl0eTo6ZXF1
aXZhbGVudAorICAgICAgICAgICAgICAgICAgICAgICA6IHdlYWtfZXF1YWxpdHk6Om5vbmVxdWl2
YWxlbnQ7CisgIH0KKyAgLy8gQ29tcGFyaXNvbnMKKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oCisgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9u
bHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYuaXNfb3JkZXJlZCgpICYm
IHYudmFsdWVfID09IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0o
CisgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFs
WmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuICF2LmlzX29yZGVyZWQoKSB8fCB2LnZhbHVl
XyAhPSAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoCisgICAgICBw
YXJ0aWFsX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBu
b2V4Y2VwdCB7CisgICAgcmV0dXJuIHYuaXNfb3JkZXJlZCgpICYmIHYudmFsdWVfIDwgMDsKKyAg
fQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PSgKKyAgICAgIHBhcnRpYWxfb3Jk
ZXJpbmcgdiwgY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsK
KyAgICByZXR1cm4gdi5pc19vcmRlcmVkKCkgJiYgdi52YWx1ZV8gPD0gMDsKKyAgfQorICBmcmll
bmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KAorICAgICAgcGFydGlhbF9vcmRlcmluZyB2LCBj
b21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88Pikgbm9leGNlcHQgeworICAgIHJldHVy
biB2LmlzX29yZGVyZWQoKSAmJiB2LnZhbHVlXyA+IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPj0oCisgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50
ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYuaXNfb3Jk
ZXJlZCgpICYmIHYudmFsdWVfID49IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxfb3JkZXJpbmcgdikgbm9leGNlcHQgewor
ICAgIHJldHVybiB2LmlzX29yZGVyZWQoKSAmJiAwID09IHYudmFsdWVfOworICB9CisgIGZyaWVu
ZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFs
WmVybzw+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsX29yZGVy
aW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gIXYuaXNfb3JkZXJlZCgpIHx8IDAgIT0gdi52
YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb21wYXJlX2lu
dGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJ0aWFsX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi5pc19vcmRl
cmVkKCkgJiYgMCA8IHYudmFsdWVfOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcjw9KGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAg
ICByZXR1cm4gdi5pc19vcmRlcmVkKCkgJiYgMCA8PSB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVy
bzw+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxfb3JkZXJpbmcg
dikgbm9leGNlcHQgeworICAgIHJldHVybiB2LmlzX29yZGVyZWQoKSAmJiAwID4gdi52YWx1ZV87
CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29tcGFyZV9pbnRlcm5h
bDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcnRpYWxfb3JkZXJpbmcgdikgbm9leGNlcHQgeworICAgIHJldHVybiB2LmlzX29yZGVyZWQo
KSAmJiAwID49IHYudmFsdWVfOworICB9CisKKyBwcml2YXRlOgorICBjb21wYXJlX2ludGVybmFs
Ojp2YWx1ZV90eXBlIHZhbHVlXzsKK307CisKK2NsYXNzIHdlYWtfb3JkZXJpbmcKKyAgICA6IHB1
YmxpYyBjb21wYXJlX2ludGVybmFsOjp3ZWFrX29yZGVyaW5nX2Jhc2U8d2Vha19vcmRlcmluZz4g
eworICBleHBsaWNpdCBjb25zdGV4cHIgd2Vha19vcmRlcmluZyhjb21wYXJlX2ludGVybmFsOjpl
cSB2KSBub2V4Y2VwdAorICAgICAgOiB2YWx1ZV8oc3RhdGljX2Nhc3Q8Y29tcGFyZV9pbnRlcm5h
bDo6dmFsdWVfdHlwZT4odikpIHt9CisgIGV4cGxpY2l0IGNvbnN0ZXhwciB3ZWFrX29yZGVyaW5n
KGNvbXBhcmVfaW50ZXJuYWw6Om9yZCB2KSBub2V4Y2VwdAorICAgICAgOiB2YWx1ZV8oc3RhdGlj
X2Nhc3Q8Y29tcGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZT4odikpIHt9CisgIGZyaWVuZCBzdHJ1
Y3QgY29tcGFyZV9pbnRlcm5hbDo6d2Vha19vcmRlcmluZ19iYXNlPHdlYWtfb3JkZXJpbmc+Owor
CisgcHVibGljOgorICAvLyBDb252ZXJzaW9ucworICBjb25zdGV4cHIgb3BlcmF0b3Igd2Vha19l
cXVhbGl0eSgpIGNvbnN0IG5vZXhjZXB0IHsgIC8vIE5PTElOVAorICAgIHJldHVybiB2YWx1ZV8g
PT0gMCA/IHdlYWtfZXF1YWxpdHk6OmVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAg
OiB3ZWFrX2VxdWFsaXR5Ojpub25lcXVpdmFsZW50OworICB9CisgIGNvbnN0ZXhwciBvcGVyYXRv
ciBwYXJ0aWFsX29yZGVyaW5nKCkgY29uc3Qgbm9leGNlcHQgeyAgLy8gTk9MSU5UCisgICAgcmV0
dXJuIHZhbHVlXyA9PSAwID8gcGFydGlhbF9vcmRlcmluZzo6ZXF1aXZhbGVudAorICAgICAgICAg
ICAgICAgICAgICAgICA6ICh2YWx1ZV8gPCAwID8gcGFydGlhbF9vcmRlcmluZzo6bGVzcworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcGFydGlhbF9vcmRlcmluZzo6Z3Jl
YXRlcik7CisgIH0KKyAgLy8gQ29tcGFyaXNvbnMKKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oCisgICAgICB3ZWFrX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlM
aXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfID09IDA7CisgIH0K
KyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oCisgICAgICB3ZWFrX29yZGVyaW5n
IHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAg
cmV0dXJuIHYudmFsdWVfICE9IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPCgKKyAgICAgIHdlYWtfb3JkZXJpbmcgdiwgY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVy
YWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52YWx1ZV8gPCAwOworICB9CisgIGZy
aWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KAorICAgICAgd2Vha19vcmRlcmluZyB2LCBj
b21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88Pikgbm9leGNlcHQgeworICAgIHJldHVy
biB2LnZhbHVlXyA8PSAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4o
CisgICAgICB3ZWFrX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVy
bzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfID4gMDsKKyAgfQorICBmcmllbmQg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+PSgKKyAgICAgIHdlYWtfb3JkZXJpbmcgdiwgY29tcGFy
ZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52
YWx1ZV8gPj0gMDsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb21w
YXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2Vha19vcmRlcmluZyB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAgPT0g
di52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29tcGFy
ZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdlYWtfb3JkZXJpbmcgdikgbm9leGNlcHQgeworICAgIHJldHVybiAwICE9IHYu
dmFsdWVfOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29tcGFyZV9p
bnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2Vha19vcmRlcmluZyB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAgPCB2LnZhbHVl
XzsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb21wYXJlX2ludGVy
bmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2Vha19vcmRlcmluZyB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAgPD0gdi52YWx1ZV87
CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb21wYXJlX2ludGVybmFs
OjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWFrX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCA+IHYudmFsdWVfOworICB9
CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbXBhcmVfaW50ZXJuYWw6Ok9u
bHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFr
X29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCA+PSB2LnZhbHVlXzsKKyAgfQor
CisgcHJpdmF0ZToKKyAgY29tcGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZSB2YWx1ZV87Cit9Owor
CitjbGFzcyBzdHJvbmdfb3JkZXJpbmcKKyAgICA6IHB1YmxpYyBjb21wYXJlX2ludGVybmFsOjpz
dHJvbmdfb3JkZXJpbmdfYmFzZTxzdHJvbmdfb3JkZXJpbmc+IHsKKyAgZXhwbGljaXQgY29uc3Rl
eHByIHN0cm9uZ19vcmRlcmluZyhjb21wYXJlX2ludGVybmFsOjplcSB2KSBub2V4Y2VwdAorICAg
ICAgOiB2YWx1ZV8oc3RhdGljX2Nhc3Q8Y29tcGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZT4odikp
IHt9CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBzdHJvbmdfb3JkZXJpbmcoY29tcGFyZV9pbnRlcm5h
bDo6b3JkIHYpIG5vZXhjZXB0CisgICAgICA6IHZhbHVlXyhzdGF0aWNfY2FzdDxjb21wYXJlX2lu
dGVybmFsOjp2YWx1ZV90eXBlPih2KSkge30KKyAgZnJpZW5kIHN0cnVjdCBjb21wYXJlX2ludGVy
bmFsOjpzdHJvbmdfb3JkZXJpbmdfYmFzZTxzdHJvbmdfb3JkZXJpbmc+OworCisgcHVibGljOgor
ICAvLyBDb252ZXJzaW9ucworICBjb25zdGV4cHIgb3BlcmF0b3Igd2Vha19lcXVhbGl0eSgpIGNv
bnN0IG5vZXhjZXB0IHsgIC8vIE5PTElOVAorICAgIHJldHVybiB2YWx1ZV8gPT0gMCA/IHdlYWtf
ZXF1YWxpdHk6OmVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgOiB3ZWFrX2VxdWFs
aXR5Ojpub25lcXVpdmFsZW50OworICB9CisgIGNvbnN0ZXhwciBvcGVyYXRvciBzdHJvbmdfZXF1
YWxpdHkoKSBjb25zdCBub2V4Y2VwdCB7ICAvLyBOT0xJTlQKKyAgICByZXR1cm4gdmFsdWVfID09
IDAgPyBzdHJvbmdfZXF1YWxpdHk6OmVxdWFsIDogc3Ryb25nX2VxdWFsaXR5Ojpub25lcXVhbDsK
KyAgfQorICBjb25zdGV4cHIgb3BlcmF0b3IgcGFydGlhbF9vcmRlcmluZygpIGNvbnN0IG5vZXhj
ZXB0IHsgIC8vIE5PTElOVAorICAgIHJldHVybiB2YWx1ZV8gPT0gMCA/IHBhcnRpYWxfb3JkZXJp
bmc6OmVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgOiAodmFsdWVfIDwgMCA/IHBh
cnRpYWxfb3JkZXJpbmc6Omxlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IHBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXIpOworICB9CisgIGNvbnN0ZXhwciBvcGVyYXRv
ciB3ZWFrX29yZGVyaW5nKCkgY29uc3Qgbm9leGNlcHQgeyAgLy8gTk9MSU5UCisgICAgcmV0dXJu
IHZhbHVlXyA9PSAwCisgICAgICAgICAgICAgICA/IHdlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQK
KyAgICAgICAgICAgICAgIDogKHZhbHVlXyA8IDAgPyB3ZWFrX29yZGVyaW5nOjpsZXNzIDogd2Vh
a19vcmRlcmluZzo6Z3JlYXRlcik7CisgIH0KKyAgLy8gQ29tcGFyaXNvbnMKKyAgZnJpZW5kIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oCisgICAgICBzdHJvbmdfb3JkZXJpbmcgdiwgY29tcGFy
ZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52
YWx1ZV8gPT0gMDsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPSgKKyAg
ICAgIHN0cm9uZ19vcmRlcmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88
Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LnZhbHVlXyAhPSAwOworICB9CisgIGZyaWVuZCBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoCisgICAgICBzdHJvbmdfb3JkZXJpbmcgdiwgY29tcGFy
ZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52
YWx1ZV8gPCAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KAorICAg
ICAgc3Ryb25nX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+
KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfIDw9IDA7CisgIH0KKyAgZnJpZW5kIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPigKKyAgICAgIHN0cm9uZ19vcmRlcmluZyB2LCBjb21wYXJl
X2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LnZh
bHVlXyA+IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oCisgICAg
ICBzdHJvbmdfb3JkZXJpbmcgdiwgY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4p
IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52YWx1ZV8gPj0gMDsKKyAgfQorICBmcmllbmQgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I9PShjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb25nX29yZGVyaW5nIHYp
IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCA9PSB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb25nX29yZGVyaW5nIHYp
IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCAhPSB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ19vcmRlcmluZyB2KSBu
b2V4Y2VwdCB7CisgICAgcmV0dXJuIDAgPCB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I8PShjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb25nX29yZGVyaW5nIHYpIG5v
ZXhjZXB0IHsKKyAgICByZXR1cm4gMCA8PSB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I+KGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ19vcmRlcmluZyB2KSBub2V4
Y2VwdCB7CisgICAgcmV0dXJuIDAgPiB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I+PShjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb25nX29yZGVyaW5nIHYpIG5vZXhj
ZXB0IHsKKyAgICByZXR1cm4gMCA+PSB2LnZhbHVlXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29t
cGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZSB2YWx1ZV87Cit9OworCituYW1lc3BhY2UgY29tcGFy
ZV9pbnRlcm5hbCB7CisvLyBXZSBhbHNvIHByb3ZpZGUgdGhlc2UgY29tcGFyYXRvciBhZGFwdGVy
IGZ1bmN0aW9ucyBmb3IgaW50ZXJuYWwgYWJzbCB1c2UuCisKKy8vIEhlbHBlciBmdW5jdGlvbnMg
dG8gZG8gYSBib29sZWFuIGNvbXBhcmlzb24gb2YgdHdvIGtleXMgZ2l2ZW4gYSBib29sZWFuCisv
LyBvciB0aHJlZS13YXkgY29tcGFyYXRvci4KKy8vIFNGSU5BRSBwcmV2ZW50cyBpbXBsaWNpdCBj
b252ZXJzaW9ucyB0byBib29sIChzdWNoIGFzIGZyb20gaW50KS4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBCb29sLAorICAgICAgICAgIGFic2w6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxib29sLCBC
b29sPjo6dmFsdWUsIGludD4gPSAwPgorY29uc3RleHByIGJvb2wgY29tcGFyZV9yZXN1bHRfYXNf
bGVzc190aGFuKGNvbnN0IEJvb2wgcikgeyByZXR1cm4gcjsgfQorY29uc3RleHByIGJvb2wgY29t
cGFyZV9yZXN1bHRfYXNfbGVzc190aGFuKGNvbnN0IGFic2w6OndlYWtfb3JkZXJpbmcgcikgewor
ICByZXR1cm4gciA8IDA7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb21wYXJlLCB0eXBlbmFt
ZSBLLCB0eXBlbmFtZSBMSz4KK2NvbnN0ZXhwciBib29sIGRvX2xlc3NfdGhhbl9jb21wYXJpc29u
KGNvbnN0IENvbXBhcmUgJmNvbXBhcmUsIGNvbnN0IEsgJngsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBMSyAmeSkgeworICByZXR1cm4gY29tcGFyZV9yZXN1
bHRfYXNfbGVzc190aGFuKGNvbXBhcmUoeCwgeSkpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb25z
IHRvIGRvIGEgdGhyZWUtd2F5IGNvbXBhcmlzb24gb2YgdHdvIGtleXMgZ2l2ZW4gYSBib29sZWFu
IG9yCisvLyB0aHJlZS13YXkgY29tcGFyYXRvci4KKy8vIFNGSU5BRSBwcmV2ZW50cyBpbXBsaWNp
dCBjb252ZXJzaW9ucyB0byBpbnQgKHN1Y2ggYXMgZnJvbSBib29sKS4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBJbnQsCisgICAgICAgICAgYWJzbDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPGludCwg
SW50Pjo6dmFsdWUsIGludD4gPSAwPgorY29uc3RleHByIGFic2w6OndlYWtfb3JkZXJpbmcgY29t
cGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoY29uc3QgSW50IGMpIHsKKyAgcmV0dXJuIGMgPCAwID8g
YWJzbDo6d2Vha19vcmRlcmluZzo6bGVzcworICAgICAgICAgICAgICAgOiBjID09IDAgPyBhYnNs
Ojp3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50CisgICAgICAgICAgICAgICAgICAgICAgICA6IGFi
c2w6OndlYWtfb3JkZXJpbmc6OmdyZWF0ZXI7Cit9Citjb25zdGV4cHIgYWJzbDo6d2Vha19vcmRl
cmluZyBjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygKKyAgICBjb25zdCBhYnNsOjp3ZWFrX29y
ZGVyaW5nIGMpIHsKKyAgcmV0dXJuIGM7Cit9CisKK3RlbXBsYXRlIDwKKyAgICB0eXBlbmFtZSBD
b21wYXJlLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBMSywKKyAgICBhYnNsOjplbmFibGVfaWZfdDwh
c3RkOjppc19zYW1lPGJvb2wsIGFic2w6OnJlc3VsdF9vZl90PENvbXBhcmUoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSyAmLCBjb25zdCBMSyAm
KT4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQ+ID0gMD4KK2NvbnN0ZXhwciBh
YnNsOjp3ZWFrX29yZGVyaW5nIGRvX3RocmVlX3dheV9jb21wYXJpc29uKGNvbnN0IENvbXBhcmUg
JmNvbXBhcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBLICZ4LCBjb25zdCBMSyAmeSkgeworICByZXR1cm4gY29tcGFyZV9yZXN1
bHRfYXNfb3JkZXJpbmcoY29tcGFyZSh4LCB5KSk7Cit9Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5h
bWUgQ29tcGFyZSwgdHlwZW5hbWUgSywgdHlwZW5hbWUgTEssCisgICAgYWJzbDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19zYW1lPGJvb2wsIGFic2w6OnJlc3VsdF9vZl90PENvbXBhcmUoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBLICYsIGNvbnN0IExL
ICYpPj46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgIGludD4gPSAwPgorY29uc3RleHBy
IGFic2w6OndlYWtfb3JkZXJpbmcgZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24oY29uc3QgQ29tcGFy
ZSAmY29tcGFyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEsgJngsIGNvbnN0IExLICZ5KSB7CisgIHJldHVybiBjb21wYXJlKHgs
IHkpID8gYWJzbDo6d2Vha19vcmRlcmluZzo6bGVzcworICAgICAgICAgICAgICAgICAgICAgICA6
IGNvbXBhcmUoeSwgeCkgPyBhYnNsOjp3ZWFrX29yZGVyaW5nOjpncmVhdGVyCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6OndlYWtfb3JkZXJpbmc6OmVxdWl2
YWxlbnQ7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBjb21wYXJlX2ludGVybmFsCit9ICAvLyBuYW1l
c3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfVFlQRVNfQ09NUEFSRV9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXMvY29tcGFyZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvY29tcGFyZV90ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zYTg1NTQyMTkyNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2NvbXBhcmVfdGVzdC5jYwpAQCAtMCwwICsx
LDMxMSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNs
dWRlICJhYnNsL3R5cGVzL2NvbXBhcmUuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisj
aW5jbHVkZSAiYWJzbC9iYXNlL2Nhc3RzLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFj
ZSB7CisKKy8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGEgYnVuY2ggb2YgbGludCB3YXJu
aW5ncyBzdWdnZXN0aW5nIHRoYXQgd2UgdXNlCisvLyBFWFBFQ1RfRVEvZXRjLiwgd2hpY2ggZG9l
c24ndCB3b3JrIGluIHRoaXMgY2FzZSBiZWNhdXNlIHRoZXkgY29udmVydCB0aGUgYDBgCisvLyB0
byBhbiBpbnQsIHdoaWNoIGNhbid0IGJlIGNvbnZlcnRlZCB0byB0aGUgdW5zcGVjaWZpZWQgemVy
byB0eXBlLgorYm9vbCBJZGVudGl0eShib29sIGIpIHsgcmV0dXJuIGI7IH0KKworVEVTVChDb21w
YXJlLCBXZWFrRXF1YWxpdHkpIHsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkod2Vha19lcXVhbGl0
eTo6ZXF1aXZhbGVudCA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPT0gd2Vha19l
cXVhbGl0eTo6ZXF1aXZhbGVudCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSh3ZWFrX2VxdWFs
aXR5Ojpub25lcXVpdmFsZW50ICE9IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCAhPSB3
ZWFrX2VxdWFsaXR5Ojpub25lcXVpdmFsZW50KSk7Cit9CisKK1RFU1QoQ29tcGFyZSwgU3Ryb25n
RXF1YWxpdHkpIHsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoc3Ryb25nX2VxdWFsaXR5OjplcXVh
bCA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPT0gc3Ryb25nX2VxdWFsaXR5Ojpl
cXVhbCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eShzdHJvbmdfZXF1YWxpdHk6Om5vbmVxdWFs
ICE9IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCAhPSBzdHJvbmdfZXF1YWxpdHk6Om5v
bmVxdWFsKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHN0cm9uZ19lcXVhbGl0eTo6ZXF1aXZh
bGVudCA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPT0gc3Ryb25nX2VxdWFsaXR5
OjplcXVpdmFsZW50KSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHN0cm9uZ19lcXVhbGl0eTo6
bm9uZXF1aXZhbGVudCAhPSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgIT0gc3Ryb25n
X2VxdWFsaXR5Ojpub25lcXVpdmFsZW50KSk7Cit9CisKK1RFU1QoQ29tcGFyZSwgUGFydGlhbE9y
ZGVyaW5nKSB7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHBhcnRpYWxfb3JkZXJpbmc6Omxlc3Mg
PCAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPiBwYXJ0aWFsX29yZGVyaW5nOjpsZXNz
KSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHBhcnRpYWxfb3JkZXJpbmc6Omxlc3MgPD0gMCkp
OworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwID49IHBhcnRpYWxfb3JkZXJpbmc6Omxlc3MpKTsK
KyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkocGFydGlhbF9vcmRlcmluZzo6ZXF1aXZhbGVudCA9PSAw
KSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPT0gcGFydGlhbF9vcmRlcmluZzo6ZXF1aXZh
bGVudCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eShwYXJ0aWFsX29yZGVyaW5nOjpncmVhdGVy
ID4gMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwIDwgcGFydGlhbF9vcmRlcmluZzo6Z3Jl
YXRlcikpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eShwYXJ0aWFsX29yZGVyaW5nOjpncmVhdGVy
ID49IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA8PSBwYXJ0aWFsX29yZGVyaW5nOjpn
cmVhdGVyKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHBhcnRpYWxfb3JkZXJpbmc6OnVub3Jk
ZXJlZCAhPSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgIT0gcGFydGlhbF9vcmRlcmlu
Zzo6dW5vcmRlcmVkKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eShwYXJ0aWFsX29yZGVyaW5n
Ojp1bm9yZGVyZWQgPCAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgwIDwgcGFydGlhbF9v
cmRlcmluZzo6dW5vcmRlcmVkKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eShwYXJ0aWFsX29y
ZGVyaW5nOjp1bm9yZGVyZWQgPD0gMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoMCA8PSBw
YXJ0aWFsX29yZGVyaW5nOjp1bm9yZGVyZWQpKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KHBh
cnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZCA+IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5
KDAgPiBwYXJ0aWFsX29yZGVyaW5nOjp1bm9yZGVyZWQpKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50
aXR5KHBhcnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZCA+PSAwKSk7CisgIEVYUEVDVF9GQUxTRShJ
ZGVudGl0eSgwID49IHBhcnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZCkpOworfQorCitURVNUKENv
bXBhcmUsIFdlYWtPcmRlcmluZykgeworICBFWFBFQ1RfVFJVRShJZGVudGl0eSh3ZWFrX29yZGVy
aW5nOjpsZXNzIDwgMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwID4gd2Vha19vcmRlcmlu
Zzo6bGVzcykpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSh3ZWFrX29yZGVyaW5nOjpsZXNzIDw9
IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA+PSB3ZWFrX29yZGVyaW5nOjpsZXNzKSk7
CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHdlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQgPT0gMCkp
OworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwID09IHdlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQp
KTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkod2Vha19vcmRlcmluZzo6Z3JlYXRlciA+IDApKTsK
KyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA8IHdlYWtfb3JkZXJpbmc6OmdyZWF0ZXIpKTsKKyAg
RVhQRUNUX1RSVUUoSWRlbnRpdHkod2Vha19vcmRlcmluZzo6Z3JlYXRlciA+PSAwKSk7CisgIEVY
UEVDVF9UUlVFKElkZW50aXR5KDAgPD0gd2Vha19vcmRlcmluZzo6Z3JlYXRlcikpOworfQorCitU
RVNUKENvbXBhcmUsIFN0cm9uZ09yZGVyaW5nKSB7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHN0
cm9uZ19vcmRlcmluZzo6bGVzcyA8IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA+IHN0
cm9uZ19vcmRlcmluZzo6bGVzcykpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eShzdHJvbmdfb3Jk
ZXJpbmc6Omxlc3MgPD0gMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwID49IHN0cm9uZ19v
cmRlcmluZzo6bGVzcykpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eShzdHJvbmdfb3JkZXJpbmc6
OmVxdWFsID09IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA9PSBzdHJvbmdfb3JkZXJp
bmc6OmVxdWFsKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHN0cm9uZ19vcmRlcmluZzo6ZXF1
aXZhbGVudCA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPT0gc3Ryb25nX29yZGVy
aW5nOjplcXVpdmFsZW50KSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHN0cm9uZ19vcmRlcmlu
Zzo6Z3JlYXRlciA+IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA8IHN0cm9uZ19vcmRl
cmluZzo6Z3JlYXRlcikpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eShzdHJvbmdfb3JkZXJpbmc6
OmdyZWF0ZXIgPj0gMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwIDw9IHN0cm9uZ19vcmRl
cmluZzo6Z3JlYXRlcikpOworfQorCitURVNUKENvbXBhcmUsIENvbnZlcnNpb25zKSB7CisgIEVY
UEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5Pihz
dHJvbmdfZXF1YWxpdHk6OmVxdWFsKSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRl
bnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5PihzdHJvbmdfZXF1YWxpdHk6Om5vbmVx
dWFsKSAhPSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2Fz
dDx3ZWFrX2VxdWFsaXR5PihzdHJvbmdfZXF1YWxpdHk6OmVxdWl2YWxlbnQpID09IDApKTsKKyAg
RVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBpbXBsaWNpdF9jYXN0PHdlYWtfZXF1YWxpdHk+
KHN0cm9uZ19lcXVhbGl0eTo6bm9uZXF1aXZhbGVudCkgIT0gMCkpOworCisgIEVYUEVDVF9UUlVF
KAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5PihwYXJ0aWFsX29y
ZGVyaW5nOjpsZXNzKSAhPSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KAorICAgICAgaW1w
bGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5PihwYXJ0aWFsX29yZGVyaW5nOjplcXVpdmFsZW50KSA9
PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFr
X2VxdWFsaXR5PihwYXJ0aWFsX29yZGVyaW5nOjpncmVhdGVyKSAhPSAwKSk7CisgIEVYUEVDVF9U
UlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5PihwYXJ0aWFs
X29yZGVyaW5nOjp1bm9yZGVyZWQpICE9IDApKTsKKworICBFWFBFQ1RfVFJVRShpbXBsaWNpdF9j
YXN0PHdlYWtfZXF1YWxpdHk+KHdlYWtfb3JkZXJpbmc6Omxlc3MpICE9IDApOworICBFWFBFQ1Rf
VFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4od2Vha19v
cmRlcmluZzo6ZXF1aXZhbGVudCkgPT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50
aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4od2Vha19vcmRlcmluZzo6Z3JlYXRlcikg
IT0gMCkpOworCisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDxw
YXJ0aWFsX29yZGVyaW5nPih3ZWFrX29yZGVyaW5nOjpsZXNzKSAhPSAwKSk7CisgIEVYUEVDVF9U
UlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29yZGVyaW5nPih3ZWFr
X29yZGVyaW5nOjpsZXNzKSA8IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShp
bXBsaWNpdF9jYXN0PHBhcnRpYWxfb3JkZXJpbmc+KHdlYWtfb3JkZXJpbmc6Omxlc3MpIDw9IDAp
KTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBpbXBsaWNpdF9jYXN0PHBhcnRpYWxf
b3JkZXJpbmc+KHdlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQpID09IDApKTsKKyAgRVhQRUNUX1RS
VUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHBhcnRpYWxfb3JkZXJpbmc+KHdlYWtf
b3JkZXJpbmc6OmdyZWF0ZXIpICE9IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0
eShpbXBsaWNpdF9jYXN0PHBhcnRpYWxfb3JkZXJpbmc+KHdlYWtfb3JkZXJpbmc6OmdyZWF0ZXIp
ID4gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8cGFy
dGlhbF9vcmRlcmluZz4od2Vha19vcmRlcmluZzo6Z3JlYXRlcikgPj0gMCkpOworCisgIEVYUEVD
VF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5PihzdHJv
bmdfb3JkZXJpbmc6Omxlc3MpICE9IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0
eShpbXBsaWNpdF9jYXN0PHdlYWtfZXF1YWxpdHk+KHN0cm9uZ19vcmRlcmluZzo6ZXF1YWwpID09
IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtf
ZXF1YWxpdHk+KHN0cm9uZ19vcmRlcmluZzo6ZXF1aXZhbGVudCkgPT0gMCkpOworICBFWFBFQ1Rf
VFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4oc3Ryb25n
X29yZGVyaW5nOjpncmVhdGVyKSAhPSAwKSk7CisKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVu
dGl0eShpbXBsaWNpdF9jYXN0PHN0cm9uZ19lcXVhbGl0eT4oc3Ryb25nX29yZGVyaW5nOjpsZXNz
KSAhPSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDxz
dHJvbmdfZXF1YWxpdHk+KHN0cm9uZ19vcmRlcmluZzo6ZXF1YWwpID09IDApKTsKKyAgRVhQRUNU
X1RSVUUoSWRlbnRpdHkoCisgICAgICBpbXBsaWNpdF9jYXN0PHN0cm9uZ19lcXVhbGl0eT4oc3Ry
b25nX29yZGVyaW5nOjplcXVpdmFsZW50KSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAg
SWRlbnRpdHkoaW1wbGljaXRfY2FzdDxzdHJvbmdfZXF1YWxpdHk+KHN0cm9uZ19vcmRlcmluZzo6
Z3JlYXRlcikgIT0gMCkpOworCisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGlj
aXRfY2FzdDxwYXJ0aWFsX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6Omxlc3MpICE9IDApKTsK
KyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHBhcnRpYWxfb3Jk
ZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6bGVzcykgPCAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAg
ICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29yZGVyaW5nPihzdHJvbmdfb3JkZXJp
bmc6Omxlc3MpIDw9IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNp
dF9jYXN0PHBhcnRpYWxfb3JkZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6ZXF1YWwpID09IDApKTsK
KyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBpbXBsaWNpdF9jYXN0PHBhcnRpYWxfb3Jk
ZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6ZXF1aXZhbGVudCkgPT0gMCkpOworICBFWFBFQ1RfVFJV
RSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8cGFydGlhbF9vcmRlcmluZz4oc3Ryb25n
X29yZGVyaW5nOjpncmVhdGVyKSAhPSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRp
dHkoaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6OmdyZWF0
ZXIpID4gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8
cGFydGlhbF9vcmRlcmluZz4oc3Ryb25nX29yZGVyaW5nOjpncmVhdGVyKSA+PSAwKSk7CisKKyAg
RVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfb3JkZXJpbmc+
KHN0cm9uZ19vcmRlcmluZzo6bGVzcykgIT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElk
ZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19vcmRlcmluZz4oc3Ryb25nX29yZGVyaW5nOjpsZXNz
KSA8IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdl
YWtfb3JkZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6bGVzcykgPD0gMCkpOworICBFWFBFQ1RfVFJV
RSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19vcmRlcmluZz4oc3Ryb25nX29y
ZGVyaW5nOjplcXVhbCkgPT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGlt
cGxpY2l0X2Nhc3Q8d2Vha19vcmRlcmluZz4oc3Ryb25nX29yZGVyaW5nOjplcXVpdmFsZW50KSA9
PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFr
X29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6OmdyZWF0ZXIpICE9IDApKTsKKyAgRVhQRUNUX1RS
VUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfb3JkZXJpbmc+KHN0cm9uZ19v
cmRlcmluZzo6Z3JlYXRlcikgPiAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHko
aW1wbGljaXRfY2FzdDx3ZWFrX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6OmdyZWF0ZXIpID49
IDApKTsKK30KKworc3RydWN0IFdlYWtPcmRlcmluZ0xlc3MgeworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgYWJzbDo6d2Vha19vcmRlcmluZyBvcGVyYXRvcigpKGNvbnN0IFQgJmEsIGNvbnN0
IFQgJmIpIGNvbnN0IHsKKyAgICByZXR1cm4gYSA8IGIgPyBhYnNsOjp3ZWFrX29yZGVyaW5nOjps
ZXNzCisgICAgICAgICAgICAgICAgIDogYSA9PSBiID8gYWJzbDo6d2Vha19vcmRlcmluZzo6ZXF1
aXZhbGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6OndlYWtfb3JkZXJpbmc6
OmdyZWF0ZXI7CisgIH0KK307CisKK1RFU1QoQ29tcGFyZVJlc3VsdEFzTGVzc1RoYW4sIFNhbml0
eVRlc3QpIHsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVf
cmVzdWx0X2FzX2xlc3NfdGhhbihmYWxzZSkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpjb21wYXJl
X2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19sZXNzX3RoYW4odHJ1ZSkpOworCisgIEVYUEVD
VF9UUlVFKAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNf
bGVzc190aGFuKHdlYWtfb3JkZXJpbmc6Omxlc3MpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmNv
bXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX2xlc3NfdGhhbigKKyAgICAgIHdlYWtf
b3JkZXJpbmc6OmVxdWl2YWxlbnQpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmNvbXBhcmVfaW50
ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX2xlc3NfdGhhbigKKyAgICAgIHdlYWtfb3JkZXJpbmc6
OmdyZWF0ZXIpKTsKK30KKworVEVTVChEb0xlc3NUaGFuQ29tcGFyaXNvbiwgU2FuaXR5VGVzdCkg
eworICBzdGQ6Omxlc3M8aW50PiBsZXNzOworICBXZWFrT3JkZXJpbmdMZXNzIHdlYWs7CisKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fbGVzc190aGFuX2NvbXBhcmlz
b24obGVzcywgLTEsIDApKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6
ZG9fbGVzc190aGFuX2NvbXBhcmlzb24od2VhaywgLTEsIDApKTsKKworICBFWFBFQ1RfRkFMU0Uo
YWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fbGVzc190aGFuX2NvbXBhcmlzb24obGVzcywgMTAs
IDEwKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb19sZXNzX3Ro
YW5fY29tcGFyaXNvbih3ZWFrLCAxMCwgMTApKTsKKworICBFWFBFQ1RfRkFMU0UoYWJzbDo6Y29t
cGFyZV9pbnRlcm5hbDo6ZG9fbGVzc190aGFuX2NvbXBhcmlzb24obGVzcywgMTAsIDUpKTsKKyAg
RVhQRUNUX0ZBTFNFKGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX2xlc3NfdGhhbl9jb21wYXJp
c29uKHdlYWssIDEwLCA1KSk7Cit9CisKK1RFU1QoQ29tcGFyZVJlc3VsdEFzT3JkZXJpbmcsIFNh
bml0eVRlc3QpIHsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21wYXJl
X2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygtMSkgPCAwKSk7CisgIEVYUEVD
VF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVf
cmVzdWx0X2FzX29yZGVyaW5nKC0xKSA9PSAwKSk7CisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIElk
ZW50aXR5KGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX29yZGVyaW5n
KC0xKSA+IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoYWJzbDo6Y29tcGFyZV9pbnRlcm5h
bDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3ZWFrX29yZGVyaW5nOjpsZXNzKSA8IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KGFi
c2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX29yZGVyaW5nKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdlYWtfb3JkZXJpbmc6Omxlc3MpID09IDApKTsKKyAgRVhQ
RUNUX0ZBTFNFKElkZW50aXR5KGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0
X2FzX29yZGVyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtfb3JkZXJpbmc6
Omxlc3MpID4gMCkpOworCisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNv
bXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX29yZGVyaW5nKDApIDwgMCkpOworICBF
WFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBh
cmVfcmVzdWx0X2FzX29yZGVyaW5nKDApID09IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5
KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJp
bmcoMCkgPiAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eShhYnNsOjpjb21wYXJlX2ludGVy
bmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQpIDwgMCkpOworICBFWFBFQ1RfVFJVRShJZGVu
dGl0eShhYnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50KSA9
PSAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eShhYnNsOjpjb21wYXJlX2ludGVybmFsOjpj
b21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50KSA+IDApKTsKKworICBFWFBFQ1RfRkFMU0UoSWRlbnRp
dHkoCisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRl
cmluZygxKSA8IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29t
cGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoMSkgPT0gMCkpOworICBF
WFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBh
cmVfcmVzdWx0X2FzX29yZGVyaW5nKDEpID4gMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHko
YWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3ZWFrX29yZGVyaW5nOjpncmVhdGVyKSA8IDApKTsKKyAg
RVhQRUNUX0ZBTFNFKElkZW50aXR5KGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVz
dWx0X2FzX29yZGVyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtfb3JkZXJp
bmc6OmdyZWF0ZXIpID09IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoYWJzbDo6Y29tcGFy
ZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2Vha19vcmRlcmluZzo6Z3JlYXRlcikgPiAwKSk7Cit9CisKK1RFU1QoRG9U
aHJlZVdheUNvbXBhcmlzb24sIFNhbml0eVRlc3QpIHsKKyAgc3RkOjpsZXNzPGludD4gbGVzczsK
KyAgV2Vha09yZGVyaW5nTGVzcyB3ZWFrOworCisgIEVYUEVDVF9UUlVFKElkZW50aXR5KAorICAg
ICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24obGVzcywg
LTEsIDApIDwgMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21w
YXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbihsZXNzLCAtMSwgMCkgPT0gMCkp
OworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFs
Ojpkb190aHJlZV93YXlfY29tcGFyaXNvbihsZXNzLCAtMSwgMCkgPiAwKSk7CisgIEVYUEVDVF9U
UlVFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5
X2NvbXBhcmlzb24od2VhaywgLTEsIDApIDwgMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHko
CisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbih3
ZWFrLCAtMSwgMCkgPT0gMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNs
Ojpjb21wYXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbih3ZWFrLCAtMSwgMCkg
PiAwKSk7CisKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9p
bnRlcm5hbDo6ZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24obGVzcywgMTAsIDEwKSA8IDApKTsKKyAg
RVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb190
aHJlZV93YXlfY29tcGFyaXNvbihsZXNzLCAxMCwgMTApID09IDApKTsKKyAgRVhQRUNUX0ZBTFNF
KElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5X2Nv
bXBhcmlzb24obGVzcywgMTAsIDEwKSA+IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KAor
ICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24od2Vh
aywgMTAsIDEwKSA8IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBhYnNsOjpj
b21wYXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbih3ZWFrLCAxMCwgMTApID09
IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRl
cm5hbDo6ZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24od2VhaywgMTAsIDEwKSA+IDApKTsKKworICBF
WFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb190
aHJlZV93YXlfY29tcGFyaXNvbihsZXNzLCAxMCwgNSkgPCAwKSk7CisgIEVYUEVDVF9GQUxTRShJ
ZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX3RocmVlX3dheV9jb21w
YXJpc29uKGxlc3MsIDEwLCA1KSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KAorICAg
ICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24obGVzcywg
MTAsIDUpID4gMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21w
YXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbih3ZWFrLCAxMCwgNSkgPCAwKSk7
CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6
OmRvX3RocmVlX3dheV9jb21wYXJpc29uKHdlYWssIDEwLCA1KSA9PSAwKSk7CisgIEVYUEVDVF9U
UlVFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5
X2NvbXBhcmlzb24od2VhaywgMTAsIDUpID4gMCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30g
IC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9pbnRlcm5hbC9vcHRp
b25hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvaW50ZXJuYWwvb3B0aW9uYWwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGFjYmRhMjBkNTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlcy9pbnRlcm5hbC9vcHRpb25hbC5oCkBAIC0wLDAgKzEsMzk0IEBACisvLyBDb3B5
cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisjaWZuZGVmIEFCU0xfVFlQRVNf
SU5URVJOQUxfT1BUSU9OQUxfSF8KKyNkZWZpbmUgQUJTTF9UWVBFU19JTlRFUk5BTF9PUFRJT05B
TF9IXworCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxuZXc+CisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9p
bnRlcm5hbC9pbmxpbmVfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnku
aCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3V0
aWxpdHkvdXRpbGl0eS5oIgorCisvLyBBQlNMX09QVElPTkFMX1VTRV9JTkhFUklUSU5HX0NPTlNU
UlVDVE9SUworLy8KKy8vIEluaGVyaXRpbmcgY29uc3RydWN0b3JzIGlzIHN1cHBvcnRlZCBpbiBH
Q0MgNC44KywgQ2xhbmcgMy4zKyBhbmQgTVNWQyAyMDE1LgorLy8gX19jcHBfaW5oZXJpdGluZ19j
b25zdHJ1Y3RvcnMgaXMgYSBwcmVkZWZpbmVkIG1hY3JvIGFuZCBhIHJlY29tbWVuZGVkIHdheSB0
bworLy8gY2hlY2sgZm9yIHRoaXMgbGFuZ3VhZ2UgZmVhdHVyZSwgYnV0IEdDQyBkb2Vzbid0IHN1
cHBvcnQgaXQgdW50aWwgNS4wIGFuZAorLy8gQ2xhbmcgZG9lc24ndCBzdXBwb3J0IGl0IHVudGls
IDMuNi4KKy8vIEFsc28sIE1TVkMgMjAxNSBoYXMgYSBidWc6IGl0IGRvZXNuJ3QgaW5oZXJpdCB0
aGUgY29uc3RleHByIHRlbXBsYXRlCisvLyBjb25zdHJ1Y3Rvci4gRm9yIGV4YW1wbGUsIHRoZSBm
b2xsb3dpbmcgY29kZSB3b24ndCB3b3JrIG9uIE1TVkMgMjAxNSBVcGRhdGUzOgorLy8gc3RydWN0
IEJhc2UgeworLy8gICBpbnQgdDsKKy8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisvLyAgIGNv
bnN0ZXhwciBCYXNlKFQgdF8pIDogdCh0Xykge30KKy8vIH07CisvLyBzdHJ1Y3QgRm9vIDogQmFz
ZSB7CisvLyAgIHVzaW5nIEJhc2U6OkJhc2U7CisvLyB9CisvLyBjb25zdGV4cHIgRm9vIGZvbygw
KTsgIC8vIGRvZXNuJ3Qgd29yayBvbiBNU1ZDIDIwMTUKKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykK
KyNpZiBfX2hhc19mZWF0dXJlKGN4eF9pbmhlcml0aW5nX2NvbnN0cnVjdG9ycykKKyNkZWZpbmUg
QUJTTF9PUFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMgMQorI2VuZGlmCisjZWxp
ZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgKF9fR05VQ19fID4gNCB8fCBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19N
SU5PUl9fID49IDgpKSB8fCBcCisgICAgKF9fY3BwX2luaGVyaXRpbmdfY29uc3RydWN0b3JzID49
IDIwMDgwMikgfHwgICAgICAgICAgICAgICAgICBcCisgICAgKGRlZmluZWQoX01TQ19WRVIpICYm
IF9NU0NfVkVSID49IDE5MTApCisjZGVmaW5lIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdf
Q09OU1RSVUNUT1JTIDEKKyNlbmRpZgorCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIEZvcndhcmQg
ZGVjbGFyYXRpb24KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mgb3B0aW9uYWw7CisKK25h
bWVzcGFjZSBvcHRpb25hbF9pbnRlcm5hbCB7CisKKy8vIFRoaXMgdGFnIHR5cGUgaXMgdXNlZCBh
cyBhIGNvbnN0cnVjdG9yIHBhcmFtZXRlciB0eXBlIGZvciBgbnVsbG9wdF90YC4KK3N0cnVjdCBp
bml0X3QgeworICBleHBsaWNpdCBpbml0X3QoKSA9IGRlZmF1bHQ7Cit9OworCitzdHJ1Y3QgZW1w
dHlfc3RydWN0IHt9OworCisvLyBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZGF0YSBpbiBvcHRpb25h
bDxUPi4KKy8vIEl0IGlzIHNwZWNpYWxpemVkIGJhc2VkIG9uIHdoZXRoZXIgVCBpcyB0cml2aWFs
bHkgZGVzdHJ1Y3RpYmxlLgorLy8gVGhpcyBpcyB0aGUgc3BlY2lhbGl6YXRpb24gZm9yIG5vbiB0
cml2aWFsbHkgZGVzdHJ1Y3RpYmxlIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCB1
bnVzZWQgPSBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlPgorY2xhc3Mg
b3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UgeworICBzdHJ1Y3QgZHVtbXlfdHlwZSB7CisgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoVCkgJSBzaXplb2YoZW1wdHlfc3RydWN0KSA9PSAwLCAiIik7Cisg
ICAgLy8gVXNlIGFuIGFycmF5IHRvIGF2b2lkIEdDQyA2IHBsYWNlbWVudC1uZXcgd2FybmluZy4K
KyAgICBlbXB0eV9zdHJ1Y3QgZGF0YVtzaXplb2YoVCkgLyBzaXplb2YoZW1wdHlfc3RydWN0KV07
CisgIH07CisKKyBwcm90ZWN0ZWQ6CisgIC8vIFdoZXRoZXIgdGhlcmUgaXMgZGF0YSBvciBub3Qu
CisgIGJvb2wgZW5nYWdlZF87CisgIC8vIERhdGEgc3RvcmFnZQorICB1bmlvbiB7CisgICAgZHVt
bXlfdHlwZSBkdW1teV87CisgICAgVCBkYXRhXzsKKyAgfTsKKworICB2b2lkIGRlc3RydWN0KCkg
bm9leGNlcHQgeworICAgIGlmIChlbmdhZ2VkXykgeworICAgICAgZGF0YV8uflQoKTsKKyAgICAg
IGVuZ2FnZWRfID0gZmFsc2U7CisgICAgfQorICB9CisKKyAgLy8gZHVtbXlfIG11c3QgYmUgaW5p
dGlhbGl6ZWQgZm9yIGNvbnN0ZXhwciBjb25zdHJ1Y3Rvci4KKyAgY29uc3RleHByIG9wdGlvbmFs
X2RhdGFfZHRvcl9iYXNlKCkgbm9leGNlcHQgOiBlbmdhZ2VkXyhmYWxzZSksIGR1bW15X3t7fX0g
e30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgY29uc3RleHByIGV4cGxpY2l0
IG9wdGlvbmFsX2RhdGFfZHRvcl9iYXNlKGluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQorICAg
ICAgOiBlbmdhZ2VkXyh0cnVlKSwgZGF0YV8oYWJzbDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikg
e30KKworICB+b3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoKSB7IGRlc3RydWN0KCk7IH0KK307CisK
Ky8vIFNwZWNpYWxpemF0aW9uIGZvciB0cml2aWFsbHkgZGVzdHJ1Y3RpYmxlIHR5cGUuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIG9wdGlvbmFsX2RhdGFfZHRvcl9iYXNlPFQsIHRydWU+
IHsKKyAgc3RydWN0IGR1bW15X3R5cGUgeworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpICUg
c2l6ZW9mKGVtcHR5X3N0cnVjdCkgPT0gMCwgIiIpOworICAgIC8vIFVzZSBhcnJheSB0byBhdm9p
ZCBHQ0MgNiBwbGFjZW1lbnQtbmV3IHdhcm5pbmcuCisgICAgZW1wdHlfc3RydWN0IGRhdGFbc2l6
ZW9mKFQpIC8gc2l6ZW9mKGVtcHR5X3N0cnVjdCldOworICB9OworCisgcHJvdGVjdGVkOgorICAv
LyBXaGV0aGVyIHRoZXJlIGlzIGRhdGEgb3Igbm90LgorICBib29sIGVuZ2FnZWRfOworICAvLyBE
YXRhIHN0b3JhZ2UKKyAgdW5pb24geworICAgIGR1bW15X3R5cGUgZHVtbXlfOworICAgIFQgZGF0
YV87CisgIH07CisgIHZvaWQgZGVzdHJ1Y3QoKSBub2V4Y2VwdCB7IGVuZ2FnZWRfID0gZmFsc2U7
IH0KKworICAvLyBkdW1teV8gbXVzdCBiZSBpbml0aWFsaXplZCBmb3IgY29uc3RleHByIGNvbnN0
cnVjdG9yLgorICBjb25zdGV4cHIgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoKSBub2V4Y2VwdCA6
IGVuZ2FnZWRfKGZhbHNlKSwgZHVtbXlfe3t9fSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoaW5f
cGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICA6IGVuZ2FnZWRfKHRydWUpLCBkYXRhXyhh
YnNsOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitjbGFzcyBvcHRpb25hbF9kYXRhX2Jhc2UgOiBwdWJsaWMgb3B0aW9uYWxfZGF0YV9kdG9y
X2Jhc2U8VD4geworIHByb3RlY3RlZDoKKyAgdXNpbmcgYmFzZSA9IG9wdGlvbmFsX2RhdGFfZHRv
cl9iYXNlPFQ+OworI2lmZGVmIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNU
T1JTCisgIHVzaW5nIGJhc2U6OmJhc2U7CisjZWxzZQorICBvcHRpb25hbF9kYXRhX2Jhc2UoKSA9
IGRlZmF1bHQ7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIGNvbnN0ZXhwciBl
eHBsaWNpdCBvcHRpb25hbF9kYXRhX2Jhc2UoaW5fcGxhY2VfdCB0LCBBcmdzJiYuLi4gYXJncykK
KyAgICAgIDogYmFzZSh0LCBhYnNsOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorI2VuZGlm
CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIHZvaWQgY29uc3RydWN0KEFyZ3Mm
Ji4uLiBhcmdzKSB7CisgICAgLy8gVXNlIGR1bW15XydzIGFkZHJlc3MgdG8gd29yayBhcm91bmQg
Y2FzdGluZyBjdi1xdWFsaWZpZWQgVCogdG8gdm9pZCouCisgICAgOjpuZXcgKHN0YXRpY19jYXN0
PHZvaWQqPigmdGhpcy0+ZHVtbXlfKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
ICAgIHRoaXMtPmVuZ2FnZWRfID0gdHJ1ZTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PgorICB2b2lkIGFzc2lnbihVJiYgdSkgeworICAgIGlmICh0aGlzLT5lbmdhZ2VkXykgeworICAg
ICAgdGhpcy0+ZGF0YV8gPSBzdGQ6OmZvcndhcmQ8VT4odSk7CisgICAgfSBlbHNlIHsKKyAgICAg
IGNvbnN0cnVjdChzdGQ6OmZvcndhcmQ8VT4odSkpOworICAgIH0KKyAgfQorfTsKKworLy8gVE9E
TyhhYnNsLXRlYW0pOiBBZGQgYW5vdGhlciBjbGFzcyB1c2luZworLy8gc3RkOjppc190cml2aWFs
bHlfbW92ZV9jb25zdHJ1Y3RpYmxlIHRyYWl0IHdoZW4gYXZhaWxhYmxlIHRvIG1hdGNoCisvLyBo
dHRwOi8vY3BsdXNwbHVzLmdpdGh1Yi5pby9MV0cvbHdnLWRlZmVjdHMuaHRtbCMyOTAwLCBmb3Ig
dHlwZXMgdGhhdAorLy8gaGF2ZSB0cml2aWFsIG1vdmUgYnV0IG5vbnRyaXZpYWwgY29weS4KKy8v
IEFsc28sIHdlIHNob3VsZCBiZSBjaGVja2luZyBpc190cml2aWFsbHlfY29weWFibGUgaGVyZSwg
d2hpY2ggaXMgbm90CisvLyBzdXBwb3J0ZWQgbm93LCBzbyB3ZSB1c2UgaXNfdHJpdmlhbGx5Xyog
dHJhaXRzIGluc3RlYWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKKyAgICAgICAgICBib29sIHVu
dXNlZCA9IGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlJiYK
KyAgICAgICAgICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTx0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jdjwKKyAgICAgICAgICAgICAgICAgIFQ+Ojp0eXBlPjo6dmFsdWUmJiBz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlPgorY2xhc3Mgb3B0aW9uYWxf
ZGF0YTsKKworLy8gVHJpdmlhbGx5IGNvcHlhYmxlIHR5cGVzCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2NsYXNzIG9wdGlvbmFsX2RhdGE8VCwgdHJ1ZT4gOiBwdWJsaWMgb3B0aW9uYWxfZGF0YV9i
YXNlPFQ+IHsKKyBwcm90ZWN0ZWQ6CisjaWZkZWYgQUJTTF9PUFRJT05BTF9VU0VfSU5IRVJJVElO
R19DT05TVFJVQ1RPUlMKKyAgdXNpbmcgb3B0aW9uYWxfZGF0YV9iYXNlPFQ+OjpvcHRpb25hbF9k
YXRhX2Jhc2U7CisjZWxzZQorICBvcHRpb25hbF9kYXRhKCkgPSBkZWZhdWx0OworCisgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0
YShpbl9wbGFjZV90IHQsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBvcHRpb25hbF9kYXRhX2Jh
c2U8VD4odCwgYWJzbDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KKyNlbmRpZgorfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBvcHRpb25hbF9kYXRhPFQsIGZhbHNlPiA6IHB1
YmxpYyBvcHRpb25hbF9kYXRhX2Jhc2U8VD4geworIHByb3RlY3RlZDoKKyNpZmRlZiBBQlNMX09Q
VElPTkFMX1VTRV9JTkhFUklUSU5HX0NPTlNUUlVDVE9SUworICB1c2luZyBvcHRpb25hbF9kYXRh
X2Jhc2U8VD46Om9wdGlvbmFsX2RhdGFfYmFzZTsKKyNlbHNlCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgorICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0YShpbl9wbGFjZV90
IHQsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBvcHRpb25hbF9kYXRhX2Jhc2U8VD4odCwgYWJz
bDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KKyNlbmRpZgorCisgIG9wdGlvbmFsX2RhdGEo
KSA9IGRlZmF1bHQ7CisKKyAgb3B0aW9uYWxfZGF0YShjb25zdCBvcHRpb25hbF9kYXRhJiByaHMp
IDogb3B0aW9uYWxfZGF0YV9iYXNlPFQ+KCkgeworICAgIGlmIChyaHMuZW5nYWdlZF8pIHsKKyAg
ICAgIHRoaXMtPmNvbnN0cnVjdChyaHMuZGF0YV8pOworICAgIH0KKyAgfQorCisgIG9wdGlvbmFs
X2RhdGEob3B0aW9uYWxfZGF0YSYmIHJocykgbm9leGNlcHQoCisgICAgICBhYnNsOjpkZWZhdWx0
X2FsbG9jYXRvcl9pc19ub3Rocm93Ojp2YWx1ZSB8fAorICAgICAgc3RkOjppc19ub3Rocm93X21v
dmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUpCisgICAgICA6IG9wdGlvbmFsX2RhdGFfYmFzZTxU
PigpIHsKKyAgICBpZiAocmhzLmVuZ2FnZWRfKSB7CisgICAgICB0aGlzLT5jb25zdHJ1Y3Qoc3Rk
Ojptb3ZlKHJocy5kYXRhXykpOworICAgIH0KKyAgfQorCisgIG9wdGlvbmFsX2RhdGEmIG9wZXJh
dG9yPShjb25zdCBvcHRpb25hbF9kYXRhJiByaHMpIHsKKyAgICBpZiAocmhzLmVuZ2FnZWRfKSB7
CisgICAgICB0aGlzLT5hc3NpZ24ocmhzLmRhdGFfKTsKKyAgICB9IGVsc2UgeworICAgICAgdGhp
cy0+ZGVzdHJ1Y3QoKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgb3B0aW9u
YWxfZGF0YSYgb3BlcmF0b3I9KG9wdGlvbmFsX2RhdGEmJiByaHMpIG5vZXhjZXB0KAorICAgICAg
c3RkOjppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxUPjo6dmFsdWUmJgorICAgICAgICAgIHN0
ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlKSB7CisgICAgaWYgKHJo
cy5lbmdhZ2VkXykgeworICAgICAgdGhpcy0+YXNzaWduKHN0ZDo6bW92ZShyaHMuZGF0YV8pKTsK
KyAgICB9IGVsc2UgeworICAgICAgdGhpcy0+ZGVzdHJ1Y3QoKTsKKyAgICB9CisgICAgcmV0dXJu
ICp0aGlzOworICB9Cit9OworCisvLyBPcmRlcmVkIGJ5IGxldmVsIG9mIHJlc3RyaWN0aW9uLCBm
cm9tIGxvdyB0byBoaWdoLgorLy8gQ29weWFibGUgaW1wbGllcyBtb3ZhYmxlLgorZW51bSBjbGFz
cyBjb3B5X3RyYWl0cyB7IGNvcHlhYmxlID0gMCwgbW92YWJsZSA9IDEsIG5vbl9tb3ZhYmxlID0g
MiB9OworCisvLyBCYXNlIGNsYXNzIGZvciBlbmFibGluZy9kaXNhYmxpbmcgY29weS9tb3ZlIGNv
bnN0cnVjdG9yLgordGVtcGxhdGUgPGNvcHlfdHJhaXRzPgorY2xhc3Mgb3B0aW9uYWxfY3Rvcl9i
YXNlOworCit0ZW1wbGF0ZSA8PgorY2xhc3Mgb3B0aW9uYWxfY3Rvcl9iYXNlPGNvcHlfdHJhaXRz
Ojpjb3B5YWJsZT4geworIHB1YmxpYzoKKyAgY29uc3RleHByIG9wdGlvbmFsX2N0b3JfYmFzZSgp
ID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlKGNvbnN0IG9wdGlvbmFsX2N0b3JfYmFz
ZSYpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlKG9wdGlvbmFsX2N0b3JfYmFzZSYm
KSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFsX2N0b3JfYmFzZSYgb3BlcmF0b3I9KGNvbnN0IG9wdGlv
bmFsX2N0b3JfYmFzZSYpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlJiBvcGVyYXRv
cj0ob3B0aW9uYWxfY3Rvcl9iYXNlJiYpID0gZGVmYXVsdDsKK307CisKK3RlbXBsYXRlIDw+Citj
bGFzcyBvcHRpb25hbF9jdG9yX2Jhc2U8Y29weV90cmFpdHM6Om1vdmFibGU+IHsKKyBwdWJsaWM6
CisgIGNvbnN0ZXhwciBvcHRpb25hbF9jdG9yX2Jhc2UoKSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFs
X2N0b3JfYmFzZShjb25zdCBvcHRpb25hbF9jdG9yX2Jhc2UmKSA9IGRlbGV0ZTsKKyAgb3B0aW9u
YWxfY3Rvcl9iYXNlKG9wdGlvbmFsX2N0b3JfYmFzZSYmKSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFs
X2N0b3JfYmFzZSYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsX2N0b3JfYmFzZSYpID0gZGVmYXVs
dDsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlJiBvcGVyYXRvcj0ob3B0aW9uYWxfY3Rvcl9iYXNlJiYp
ID0gZGVmYXVsdDsKK307CisKK3RlbXBsYXRlIDw+CitjbGFzcyBvcHRpb25hbF9jdG9yX2Jhc2U8
Y29weV90cmFpdHM6Om5vbl9tb3ZhYmxlPiB7CisgcHVibGljOgorICBjb25zdGV4cHIgb3B0aW9u
YWxfY3Rvcl9iYXNlKCkgPSBkZWZhdWx0OworICBvcHRpb25hbF9jdG9yX2Jhc2UoY29uc3Qgb3B0
aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWxldGU7CisgIG9wdGlvbmFsX2N0b3JfYmFzZShvcHRpb25h
bF9jdG9yX2Jhc2UmJikgPSBkZWxldGU7CisgIG9wdGlvbmFsX2N0b3JfYmFzZSYgb3BlcmF0b3I9
KGNvbnN0IG9wdGlvbmFsX2N0b3JfYmFzZSYpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfY3Rvcl9i
YXNlJiBvcGVyYXRvcj0ob3B0aW9uYWxfY3Rvcl9iYXNlJiYpID0gZGVmYXVsdDsKK307CisKKy8v
IEJhc2UgY2xhc3MgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBjb3B5L21vdmUgYXNzaWdubWVudC4K
K3RlbXBsYXRlIDxjb3B5X3RyYWl0cz4KK2NsYXNzIG9wdGlvbmFsX2Fzc2lnbl9iYXNlOworCit0
ZW1wbGF0ZSA8PgorY2xhc3Mgb3B0aW9uYWxfYXNzaWduX2Jhc2U8Y29weV90cmFpdHM6OmNvcHlh
YmxlPiB7CisgcHVibGljOgorICBjb25zdGV4cHIgb3B0aW9uYWxfYXNzaWduX2Jhc2UoKSA9IGRl
ZmF1bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNlKGNvbnN0IG9wdGlvbmFsX2Fzc2lnbl9iYXNl
JikgPSBkZWZhdWx0OworICBvcHRpb25hbF9hc3NpZ25fYmFzZShvcHRpb25hbF9hc3NpZ25fYmFz
ZSYmKSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qg
b3B0aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNl
JiBvcGVyYXRvcj0ob3B0aW9uYWxfYXNzaWduX2Jhc2UmJikgPSBkZWZhdWx0OworfTsKKwordGVt
cGxhdGUgPD4KK2NsYXNzIG9wdGlvbmFsX2Fzc2lnbl9iYXNlPGNvcHlfdHJhaXRzOjptb3ZhYmxl
PiB7CisgcHVibGljOgorICBjb25zdGV4cHIgb3B0aW9uYWxfYXNzaWduX2Jhc2UoKSA9IGRlZmF1
bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNlKGNvbnN0IG9wdGlvbmFsX2Fzc2lnbl9iYXNlJikg
PSBkZWZhdWx0OworICBvcHRpb25hbF9hc3NpZ25fYmFzZShvcHRpb25hbF9hc3NpZ25fYmFzZSYm
KSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0
aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlbGV0ZTsKKyAgb3B0aW9uYWxfYXNzaWduX2Jhc2UmIG9w
ZXJhdG9yPShvcHRpb25hbF9hc3NpZ25fYmFzZSYmKSA9IGRlZmF1bHQ7Cit9OworCit0ZW1wbGF0
ZSA8PgorY2xhc3Mgb3B0aW9uYWxfYXNzaWduX2Jhc2U8Y29weV90cmFpdHM6Om5vbl9tb3ZhYmxl
PiB7CisgcHVibGljOgorICBjb25zdGV4cHIgb3B0aW9uYWxfYXNzaWduX2Jhc2UoKSA9IGRlZmF1
bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNlKGNvbnN0IG9wdGlvbmFsX2Fzc2lnbl9iYXNlJikg
PSBkZWZhdWx0OworICBvcHRpb25hbF9hc3NpZ25fYmFzZShvcHRpb25hbF9hc3NpZ25fYmFzZSYm
KSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0
aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlbGV0ZTsKKyAgb3B0aW9uYWxfYXNzaWduX2Jhc2UmIG9w
ZXJhdG9yPShvcHRpb25hbF9hc3NpZ25fYmFzZSYmKSA9IGRlbGV0ZTsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IGN0b3JfY29weV90cmFpdHMgeworICBzdGF0aWMgY29uc3Rl
eHByIGNvcHlfdHJhaXRzIHRyYWl0cyA9CisgICAgICBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJs
ZTxUPjo6dmFsdWUKKyAgICAgICAgICA/IGNvcHlfdHJhaXRzOjpjb3B5YWJsZQorICAgICAgICAg
IDogc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlID8gY29weV90cmFpdHM6Om1v
dmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IGNvcHlfdHJhaXRzOjpub25fbW92YWJsZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
c3RydWN0IGFzc2lnbl9jb3B5X3RyYWl0cyB7CisgIHN0YXRpYyBjb25zdGV4cHIgY29weV90cmFp
dHMgdHJhaXRzID0KKyAgICAgIGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxUPjo6dmFsdWUgJiYg
c3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlCisgICAgICAgICAgPyBjb3B5X3Ry
YWl0czo6Y29weWFibGUKKyAgICAgICAgICA6IGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxUPjo6
dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8
VD46OnZhbHVlCisgICAgICAgICAgICAgICAgPyBjb3B5X3RyYWl0czo6bW92YWJsZQorICAgICAg
ICAgICAgICAgIDogY29weV90cmFpdHM6Om5vbl9tb3ZhYmxlOworfTsKKworLy8gV2hldGhlciBU
IGlzIGNvbnN0cnVjdGlibGUgb3IgY29udmVydGlibGUgZnJvbSBvcHRpb25hbDxVPi4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorc3RydWN0IGlzX2NvbnN0cnVjdGlibGVfY29u
dmVydGlibGVfZnJvbV9vcHRpb25hbAorICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDwKKyAg
ICAgICAgICBib29sLCBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgb3B0aW9uYWw8VT4mPjo6dmFs
dWUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIG9wdGlv
bmFsPFU+JiY+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnN0cnVj
dGlibGU8VCwgY29uc3Qgb3B0aW9uYWw8VT4mPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAg
ICAgc3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIGNvbnN0IG9wdGlvbmFsPFU+JiY+Ojp2YWx1ZSB8
fAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPG9wdGlvbmFsPFU+Jiwg
VD46OnZhbHVlIHx8CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGU8b3B0
aW9uYWw8VT4mJiwgVD46OnZhbHVlIHx8CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29u
dmVydGlibGU8Y29uc3Qgb3B0aW9uYWw8VT4mLCBUPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAg
ICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxjb25zdCBvcHRpb25hbDxVPiYmLCBUPjo6dmFsdWU+
IHt9OworCisvLyBXaGV0aGVyIFQgaXMgY29uc3RydWN0aWJsZSBvciBjb252ZXJ0aWJsZSBvciBh
c3NpZ25hYmxlIGZyb20gb3B0aW9uYWw8VT4uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KK3N0cnVjdCBpc19jb25zdHJ1Y3RpYmxlX2NvbnZlcnRpYmxlX2Fzc2lnbmFibGVfZnJv
bV9vcHRpb25hbAorICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDwKKyAgICAgICAgICBib29s
LCBpc19jb25zdHJ1Y3RpYmxlX2NvbnZlcnRpYmxlX2Zyb21fb3B0aW9uYWw8VCwgVT46OnZhbHVl
IHx8CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfYXNzaWduYWJsZTxUJiwgb3B0aW9uYWw8
VT4mPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19hc3NpZ25hYmxlPFQm
LCBvcHRpb25hbDxVPiYmPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19h
c3NpZ25hYmxlPFQmLCBjb25zdCBvcHRpb25hbDxVPiY+Ojp2YWx1ZSB8fAorICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmlzX2Fzc2lnbmFibGU8VCYsIGNvbnN0IG9wdGlvbmFsPFU+JiY+Ojp2YWx1
ZT4ge307CisKKy8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IFtvcHRpb25hbC5yZWxvcHNdLCBb
b3B0aW9uYWwuY29tcF93aXRoX3RdLAorLy8gZm9yIGNoZWNraW5nIHdoZXRoZXIgYW4gZXhwcmVz
c2lvbiBpcyBjb252ZXJ0aWJsZSB0byBib29sLgorYm9vbCBjb252ZXJ0aWJsZV90b19ib29sKGJv
b2wpOworCisvLyBCYXNlIGNsYXNzIGZvciBzdGQ6Omhhc2g8YWJzbDo6b3B0aW9uYWw8VD4+Ogor
Ly8gSWYgc3RkOjpoYXNoPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8VD4+IGlzIGVuYWJsZWQsIGl0IHBy
b3ZpZGVzIG9wZXJhdG9yKCkgdG8KKy8vIGNvbXB1dGUgdGhlIGhhc2g7IE90aGVyd2lzZSwgaXQg
aXMgZGlzYWJsZWQuCisvLyBSZWZlcmVuY2UgTjQ2NTkgMjMuMTQuMTUgW3Vub3JkLmhhc2hdLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc2l6ZV90Pgorc3RydWN0IG9wdGlvbmFs
X2hhc2hfYmFzZSB7CisgIG9wdGlvbmFsX2hhc2hfYmFzZSgpID0gZGVsZXRlOworICBvcHRpb25h
bF9oYXNoX2Jhc2UoY29uc3Qgb3B0aW9uYWxfaGFzaF9iYXNlJikgPSBkZWxldGU7CisgIG9wdGlv
bmFsX2hhc2hfYmFzZShvcHRpb25hbF9oYXNoX2Jhc2UmJikgPSBkZWxldGU7CisgIG9wdGlvbmFs
X2hhc2hfYmFzZSYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsX2hhc2hfYmFzZSYpID0gZGVsZXRl
OworICBvcHRpb25hbF9oYXNoX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9oYXNoX2Jhc2UmJikg
PSBkZWxldGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBvcHRpb25hbF9o
YXNoX2Jhc2U8VCwgZGVjbHR5cGUoc3RkOjpoYXNoPGFic2w6OnJlbW92ZV9jb25zdF90PFQ+ID4o
KSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxhYnNsOjpy
ZW1vdmVfY29uc3RfdDxUPiA+KCkpKT4geworICB1c2luZyBhcmd1bWVudF90eXBlID0gYWJzbDo6
b3B0aW9uYWw8VD47CisgIHVzaW5nIHJlc3VsdF90eXBlID0gc2l6ZV90OworICBzaXplX3Qgb3Bl
cmF0b3IoKShjb25zdCBhYnNsOjpvcHRpb25hbDxUPiYgb3B0KSBjb25zdCB7CisgICAgYWJzbDo6
dHlwZV90cmFpdHNfaW50ZXJuYWw6OkFzc2VydEhhc2hFbmFibGVkPGFic2w6OnJlbW92ZV9jb25z
dF90PFQ+PigpOworICAgIGlmIChvcHQpIHsKKyAgICAgIHJldHVybiBzdGQ6Omhhc2g8YWJzbDo6
cmVtb3ZlX2NvbnN0X3Q8VD4gPigpKCpvcHQpOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8c2l6ZV90PigweDI5NzgxNGFhYWQxOTZlNmRVTEwpOworICAgIH0KKyAgfQor
fTsKKworfSAgLy8gbmFtZXNwYWNlIG9wdGlvbmFsX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorCisjdW5kZWYgQUJTTF9PUFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMK
KworI2VuZGlmICAvLyBBQlNMX1RZUEVTX0lOVEVSTkFMX09QVElPTkFMX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90eXBlcy9pbnRlcm5hbC9zcGFuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9pbnRlcm5hbC9zcGFu
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQyMDNhYWQ1OTE2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvaW50ZXJuYWwvc3Bhbi5oCkBAIC0wLDAgKzEs
MTI2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
I2lmbmRlZiBBQlNMX1RZUEVTX0lOVEVSTkFMX1NQQU5fSF8KKyNkZWZpbmUgQUJTTF9UWVBFU19J
TlRFUk5BTF9TUEFOX0hfCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGRl
Zj4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRl
ICJhYnNsL2FsZ29yaXRobS9hbGdvcml0aG0uaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJu
YWwvdGhyb3dfZGVsZWdhdGUuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIK
KworbmFtZXNwYWNlIGFic2wgeworCituYW1lc3BhY2Ugc3Bhbl9pbnRlcm5hbCB7CisvLyBBIGNv
bnN0ZXhwciBtaW4gZnVuY3Rpb24KK2NvbnN0ZXhwciBzaXplX3QgTWluKHNpemVfdCBhLCBzaXpl
X3QgYikgbm9leGNlcHQgeyByZXR1cm4gYSA8IGIgPyBhIDogYjsgfQorCisvLyBXcmFwcGVycyBm
b3IgYWNjZXNzIHRvIGNvbnRhaW5lciBkYXRhIHBvaW50ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1l
IEM+Citjb25zdGV4cHIgYXV0byBHZXREYXRhSW1wbChDJiBjLCBjaGFyKSBub2V4Y2VwdCAgLy8g
Tk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAtPiBkZWNsdHlwZShjLmRhdGEoKSkgewor
ICByZXR1cm4gYy5kYXRhKCk7Cit9CisKKy8vIEJlZm9yZSBDKysxNywgc3RkOjpzdHJpbmc6OmRh
dGEgcmV0dXJucyBhIGNvbnN0IGNoYXIqIGluIGFsbCBjYXNlcy4KK2lubGluZSBjaGFyKiBHZXRE
YXRhSW1wbChzdGQ6OnN0cmluZyYgcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50KSBub2V4Y2VwdCB7CisgIHJldHVybiAmc1swXTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEM+Citjb25zdGV4cHIgYXV0byBHZXREYXRhKEMmIGMp
IG5vZXhjZXB0ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIC0+IGRlY2x0eXBl
KEdldERhdGFJbXBsKGMsIDApKSB7CisgIHJldHVybiBHZXREYXRhSW1wbChjLCAwKTsKK30KKwor
Ly8gRGV0ZWN0aW9uIGlkaW9tcyBmb3Igc2l6ZSgpIGFuZCBkYXRhKCkuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQz4KK3VzaW5nIEhhc1NpemUgPQorICAgIHN0ZDo6aXNfaW50ZWdyYWw8YWJzbDo6ZGVj
YXlfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8QyY+KCkuc2l6ZSgpKT4+OworCisvLyBXZSB3YW50
IHRvIGVuYWJsZSBjb252ZXJzaW9uIGZyb20gdmVjdG9yPFQqPiB0byBTcGFuPGNvbnN0IFQqIGNv
bnN0PiBidXQKKy8vIGRpc2FibGUgY29udmVyc2lvbiBmcm9tIHZlY3RvcjxEZXJpdmVkPiB0byBT
cGFuPEJhc2U+LiBIZXJlIHdlIHVzZQorLy8gdGhlIGZhY3QgdGhhdCBVKiogaXMgY29udmVydGli
bGUgdG8gUSogY29uc3QqIGlmIGFuZCBvbmx5IGlmIFEgaXMgdGhlIHNhbWUKKy8vIHR5cGUgb3Ig
YSBtb3JlIGN2LXF1YWxpZmllZCB2ZXJzaW9uIG9mIFUuICBXZSBhbHNvIGRlY2F5IHRoZSByZXN1
bHQgdHlwZSBvZgorLy8gZGF0YSgpIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggY2xhc3NlcyB3aGlj
aCBoYXZlIGEgbWVtYmVyIGZ1bmN0aW9uIGRhdGEoKQorLy8gd2hpY2ggcmV0dXJucyBhIHJlZmVy
ZW5jZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgordXNpbmcgSGFzRGF0YSA9
CisgICAgc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpkZWNheV90PGRlY2x0eXBlKEdldERhdGEo
c3RkOjpkZWNsdmFsPEMmPigpKSk+KiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFQqIGNvbnN0
Kj47CisKKy8vIEV4dHJhY3RzIHZhbHVlIHR5cGUgZnJvbSBhIENvbnRhaW5lcgordGVtcGxhdGUg
PHR5cGVuYW1lIEM+CitzdHJ1Y3QgRWxlbWVudFR5cGUgeworICB1c2luZyB0eXBlID0gdHlwZW5h
bWUgYWJzbDo6cmVtb3ZlX3JlZmVyZW5jZV90PEM+Ojp2YWx1ZV90eXBlOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorc3RydWN0IEVsZW1lbnRUeXBlPFQgKCYpW05dPiB7
CisgIHVzaW5nIHR5cGUgPSBUOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEM+Cit1c2luZyBF
bGVtZW50VCA9IHR5cGVuYW1lIEVsZW1lbnRUeXBlPEM+Ojp0eXBlOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3VzaW5nIEVuYWJsZUlmTXV0YWJsZSA9CisgICAgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8IXN0ZDo6aXNfY29uc3Q8VD46OnZhbHVlLCBpbnQ+Ojp0eXBlOworCit0ZW1wbGF0ZSA8
dGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBTcGFuVCwgdHlwZW5hbWUgVD4KK2Jvb2wgRXF1YWxJ
bXBsKFNwYW5UPFQ+IGEsIFNwYW5UPFQ+IGIpIHsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Nv
bnN0PFQ+Ojp2YWx1ZSwgIiIpOworICByZXR1cm4gYWJzbDo6ZXF1YWwoYS5iZWdpbigpLCBhLmVu
ZCgpLCBiLmJlZ2luKCksIGIuZW5kKCkpOworfQorCit0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVu
YW1lPiBjbGFzcyBTcGFuVCwgdHlwZW5hbWUgVD4KK2Jvb2wgTGVzc1RoYW5JbXBsKFNwYW5UPFQ+
IGEsIFNwYW5UPFQ+IGIpIHsKKyAgLy8gV2UgY2FuJ3QgdXNlIHZhbHVlX3R5cGUgc2luY2UgdGhh
dCBpcyByZW1vdmVfY3ZfdDxUPiwgc28gd2UgZ28gdGhlIGxvbmcgd2F5CisgIC8vIGFyb3VuZC4K
KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwgIiIpOworICByZXR1cm4g
c3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZShhLmJlZ2luKCksIGEuZW5kKCksIGIuYmVnaW4o
KSwgYi5lbmQoKSk7Cit9CisKKy8vIFRoZSBgSXNDb252ZXJ0aWJsZWAgY2xhc3NlcyBoZXJlIGFy
ZSBuZWVkZWQgYmVjYXVzZSBvZiB0aGUKKy8vIGBzdGQ6OmlzX2NvbnZlcnRpYmxlYCBidWcgaW4g
bGliY3h4IHdoZW4gY29tcGlsZWQgd2l0aCBHQ0MuIFRoaXMgYnVpbGQKKy8vIGNvbmZpZ3VyYXRp
b24gaXMgdXNlZCBieSBBbmRyb2lkIE5ESyB0b29sY2hhaW4uIFJlZmVyZW5jZSBsaW5rOgorLy8g
aHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzUzOC4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KK3N0cnVjdCBJc0NvbnZlcnRpYmxlSGVscGVyIHsK
KyBwcml2YXRlOgorICBzdGF0aWMgc3RkOjp0cnVlX3R5cGUgdGVzdHZhbChUbyk7CisgIHN0YXRp
YyBzdGQ6OmZhbHNlX3R5cGUgdGVzdHZhbCguLi4pOworCisgcHVibGljOgorICB1c2luZyB0eXBl
ID0gZGVjbHR5cGUodGVzdHZhbChzdGQ6OmRlY2x2YWw8RnJvbT4oKSkpOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgorc3RydWN0IElzQ29udmVydGlibGUgOiBJ
c0NvbnZlcnRpYmxlSGVscGVyPEZyb20sIFRvPjo6dHlwZSB7fTsKKworLy8gVE9ETyh6aGFuZ3h5
KTogcmVwbGFjZSBgSXNDb252ZXJ0aWJsZWAgd2l0aCBgc3RkOjppc19jb252ZXJ0aWJsZWAgb25j
ZSB0aGUKKy8vIG9sZGVyIHZlcnNpb24gb2YgbGliY3h4IGlzIG5vdCBzdXBwb3J0ZWQuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Cit1c2luZyBFbmFibGVJZkNvbnZlcnRp
YmxlVG8gPQorICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzQ29udmVydGlibGU8RnJvbSwg
VG8+Ojp2YWx1ZT46OnR5cGU7Cit9ICAvLyBuYW1lc3BhY2Ugc3Bhbl9pbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1RZUEVTX0lOVEVSTkFMX1NQQU5fSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3ZhcmlhbnQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
L2ludGVybmFsL3ZhcmlhbnQuaAppbmRleCBlZmY0ZmVmZWQ0MC4uMTlkZTJlMTM3NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3ZhcmlhbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9p
bnRlcm5hbC92YXJpYW50LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTIwNCw3ICsyMDQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgT3AsIGNsYXNzLi4uIFZzPgog
dXNpbmcgVmlzaXRJbmRpY2VzUmVzdWx0VCA9IHR5cGVuYW1lIFZpc2l0SW5kaWNlc1Jlc3VsdElt
cGw8T3AsIFZzLi4uPjo6dHlwZTsKIAogdGVtcGxhdGUgPGNsYXNzIFJldHVyblR5cGUsIGNsYXNz
IEZ1bmN0aW9uT2JqZWN0LCBjbGFzcyBFbmRJbmRpY2VzLAotICAgICAgICAgIHN0ZDo6c2l6ZV90
Li4uIEJvdW5kSW5kaWNlcz4KKyAgICAgICAgICBjbGFzcyBCb3VuZEluZGljZXM+CiBzdHJ1Y3Qg
TWFrZVZpc2l0YXRpb25NYXRyaXg7CiAKIHRlbXBsYXRlIDxjbGFzcyBSZXR1cm5UeXBlLCBjbGFz
cyBGdW5jdGlvbk9iamVjdCwgc3RkOjpzaXplX3QuLi4gSW5kaWNlcz4KQEAgLTIxOCw3ICsyMTgs
NyBAQCBjb25zdGV4cHIgUmV0dXJuVHlwZSBjYWxsX3dpdGhfaW5kaWNlcyhGdW5jdGlvbk9iamVj
dCYmIGZ1bmN0aW9uKSB7CiAKIHRlbXBsYXRlIDxjbGFzcyBSZXR1cm5UeXBlLCBjbGFzcyBGdW5j
dGlvbk9iamVjdCwgc3RkOjpzaXplX3QuLi4gQm91bmRJbmRpY2VzPgogc3RydWN0IE1ha2VWaXNp
dGF0aW9uTWF0cml4PFJldHVyblR5cGUsIEZ1bmN0aW9uT2JqZWN0LCBpbmRleF9zZXF1ZW5jZTw+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdW5kSW5kaWNlcy4uLj4geworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4X3NlcXVlbmNlPEJvdW5kSW5kaWNlcy4uLj4+IHsK
ICAgdXNpbmcgUmVzdWx0VHlwZSA9IFJldHVyblR5cGUgKCopKEZ1bmN0aW9uT2JqZWN0JiYpOwog
ICBzdGF0aWMgY29uc3RleHByIFJlc3VsdFR5cGUgUnVuKCkgewogICAgIHJldHVybiAmY2FsbF93
aXRoX2luZGljZXM8UmV0dXJuVHlwZSwgRnVuY3Rpb25PYmplY3QsCkBAIC0yMjYsMjQgKzIyNiwz
NCBAQCBzdHJ1Y3QgTWFrZVZpc2l0YXRpb25NYXRyaXg8UmV0dXJuVHlwZSwgRnVuY3Rpb25PYmpl
Y3QsIGluZGV4X3NlcXVlbmNlPD4sCiAgIH0KIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBJcywg
c3RkOjpzaXplX3QgSj4KK3N0cnVjdCBBcHBlbmRUb0luZGV4U2VxdWVuY2U7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBJcywgc3RkOjpzaXplX3QgSj4KK3VzaW5nIEFwcGVuZFRvSW5kZXhTZXF1ZW5j
ZVQgPSB0eXBlbmFtZSBBcHBlbmRUb0luZGV4U2VxdWVuY2U8SXMsIEo+Ojp0eXBlOworCit0ZW1w
bGF0ZSA8c3RkOjpzaXplX3QuLi4gSXMsIHN0ZDo6c2l6ZV90IEo+CitzdHJ1Y3QgQXBwZW5kVG9J
bmRleFNlcXVlbmNlPGluZGV4X3NlcXVlbmNlPElzLi4uPiwgSj4geworICB1c2luZyB0eXBlID0g
aW5kZXhfc2VxdWVuY2U8SXMuLi4sIEo+OworfTsKKwogdGVtcGxhdGUgPGNsYXNzIFJldHVyblR5
cGUsIGNsYXNzIEZ1bmN0aW9uT2JqZWN0LCBjbGFzcyBFbmRJbmRpY2VzLAotICAgICAgICAgIGNs
YXNzIEN1cnJJbmRpY2VzLCBzdGQ6OnNpemVfdC4uLiBCb3VuZEluZGljZXM+CisgICAgICAgICAg
Y2xhc3MgQ3VyckluZGljZXMsIGNsYXNzIEJvdW5kSW5kaWNlcz4KIHN0cnVjdCBNYWtlVmlzaXRh
dGlvbk1hdHJpeEltcGw7CiAKLXRlbXBsYXRlIDxjbGFzcyBSZXR1cm5UeXBlLCBjbGFzcyBGdW5j
dGlvbk9iamVjdCwgc3RkOjpzaXplX3QuLi4gRW5kSW5kaWNlcywKLSAgICAgICAgICBzdGQ6OnNp
emVfdC4uLiBDdXJySW5kaWNlcywgc3RkOjpzaXplX3QuLi4gQm91bmRJbmRpY2VzPgotc3RydWN0
IE1ha2VWaXNpdGF0aW9uTWF0cml4SW1wbDwKLSAgICBSZXR1cm5UeXBlLCBGdW5jdGlvbk9iamVj
dCwgaW5kZXhfc2VxdWVuY2U8RW5kSW5kaWNlcy4uLj4sCi0gICAgaW5kZXhfc2VxdWVuY2U8Q3Vy
ckluZGljZXMuLi4+LCBCb3VuZEluZGljZXMuLi4+IHsKK3RlbXBsYXRlIDxjbGFzcyBSZXR1cm5U
eXBlLCBjbGFzcyBGdW5jdGlvbk9iamVjdCwgY2xhc3MgRW5kSW5kaWNlcywKKyAgICAgICAgICBz
dGQ6OnNpemVfdC4uLiBDdXJySW5kaWNlcywgY2xhc3MgQm91bmRJbmRpY2VzPgorc3RydWN0IE1h
a2VWaXNpdGF0aW9uTWF0cml4SW1wbDxSZXR1cm5UeXBlLCBGdW5jdGlvbk9iamVjdCwgRW5kSW5k
aWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfc2VxdWVuY2U8Q3Vy
ckluZGljZXMuLi4+LCBCb3VuZEluZGljZXM+IHsKICAgdXNpbmcgUmVzdWx0VHlwZSA9IFNpbXBs
ZUFycmF5PAotICAgICAgdHlwZW5hbWUgTWFrZVZpc2l0YXRpb25NYXRyaXg8UmV0dXJuVHlwZSwg
RnVuY3Rpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eF9zZXF1ZW5jZTxFbmRJbmRpY2VzLi4uPj46OlJlc3VsdFR5cGUsCisgICAgICB0eXBlbmFtZSBN
YWtlVmlzaXRhdGlvbk1hdHJpeDxSZXR1cm5UeXBlLCBGdW5jdGlvbk9iamVjdCwgRW5kSW5kaWNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4X3NlcXVlbmNlPD4+
OjpSZXN1bHRUeXBlLAogICAgICAgc2l6ZW9mLi4uKEN1cnJJbmRpY2VzKT47CiAKICAgc3RhdGlj
IGNvbnN0ZXhwciBSZXN1bHRUeXBlIFJ1bigpIHsKLSAgICByZXR1cm4ge3tNYWtlVmlzaXRhdGlv
bk1hdHJpeDxSZXR1cm5UeXBlLCBGdW5jdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleF9zZXF1ZW5jZTxFbmRJbmRpY2VzLi4uPiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCb3VuZEluZGljZXMuLi4sIEN1cnJJbmRpY2VzPjo6UnVu
KCkuLi59fTsKKyAgICByZXR1cm4ge3tNYWtlVmlzaXRhdGlvbk1hdHJpeDwKKyAgICAgICAgUmV0
dXJuVHlwZSwgRnVuY3Rpb25PYmplY3QsIEVuZEluZGljZXMsCisgICAgICAgIEFwcGVuZFRvSW5k
ZXhTZXF1ZW5jZVQ8Qm91bmRJbmRpY2VzLCBDdXJySW5kaWNlcz4+OjpSdW4oKS4uLn19OwogICB9
CiB9OwogCkBAIC0yNTEsMTAgKzI2MSwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgUmV0dXJuVHlwZSwg
Y2xhc3MgRnVuY3Rpb25PYmplY3QsIHN0ZDo6c2l6ZV90IEhlYWRFbmRJbmRleCwKICAgICAgICAg
ICBzdGQ6OnNpemVfdC4uLiBUYWlsRW5kSW5kaWNlcywgc3RkOjpzaXplX3QuLi4gQm91bmRJbmRp
Y2VzPgogc3RydWN0IE1ha2VWaXNpdGF0aW9uTWF0cml4PFJldHVyblR5cGUsIEZ1bmN0aW9uT2Jq
ZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4X3NlcXVlbmNlPEhlYWRFbmRJ
bmRleCwgVGFpbEVuZEluZGljZXMuLi4+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJv
dW5kSW5kaWNlcy4uLj4KLSAgICA6IE1ha2VWaXNpdGF0aW9uTWF0cml4SW1wbDwKLSAgICAgICAg
ICBSZXR1cm5UeXBlLCBGdW5jdGlvbk9iamVjdCwgaW5kZXhfc2VxdWVuY2U8VGFpbEVuZEluZGlj
ZXMuLi4+LAotICAgICAgICAgIGFic2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8SGVhZEVuZEluZGV4
PiwgQm91bmRJbmRpY2VzLi4uPiB7fTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eF9zZXF1ZW5jZTxCb3VuZEluZGljZXMuLi4+PgorICAgIDogTWFrZVZpc2l0YXRpb25NYXRyaXhJ
bXBsPFJldHVyblR5cGUsIEZ1bmN0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4X3NlcXVlbmNlPFRhaWxFbmRJbmRpY2VzLi4uPiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhYnNsOjptYWtlX2luZGV4X3NlcXVlbmNlPEhlYWRFbmRJbmRleD4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfc2VxdWVuY2U8Qm91bmRJbmRp
Y2VzLi4uPj4ge307CiAKIHN0cnVjdCBVbnJlYWNoYWJsZVN3aXRjaENhc2UgewogICB0ZW1wbGF0
ZSA8Y2xhc3MgT3A+CkBAIC00MjMsNyArNDM0LDggQEAgc3RydWN0IFZpc2l0SW5kaWNlc0ZhbGxi
YWNrIHsKICAgc3RhdGljIFZpc2l0SW5kaWNlc1Jlc3VsdFQ8T3AsIFNpemVULi4uPiBSdW4oT3Am
JiBvcCwgU2l6ZVQuLi4gaW5kaWNlcykgewogICAgIHJldHVybiBBY2Nlc3NTaW1wbGVBcnJheSgK
ICAgICAgICAgTWFrZVZpc2l0YXRpb25NYXRyaXg8VmlzaXRJbmRpY2VzUmVzdWx0VDxPcCwgU2l6
ZVQuLi4+LCBPcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfc2VxdWVuY2U8
KEVuZEluZGljZXMgKyAxKS4uLj4+OjpSdW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5kZXhfc2VxdWVuY2U8KEVuZEluZGljZXMgKyAxKS4uLj4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4X3NlcXVlbmNlPD4+OjpSdW4oKSwKICAgICAgICAgKGluZGljZXMg
KyAxKS4uLikoYWJzbDo6Zm9yd2FyZDxPcD4ob3ApKTsKICAgfQogfTsKQEAgLTgzNyw4ICs4NDks
OCBAQCBzdHJ1Y3QgSW1hZ2luYXJ5RnVuPHZhcmlhbnQ8SCwgVC4uLj4sIEk+IDogSW1hZ2luYXJ5
RnVuPHZhcmlhbnQ8VC4uLj4sIEkgKyAxPiB7CiAgIC8vIE5PVEU6IGNvbnN0JiBhbmQgJiYgYXJl
IHVzZWQgaW5zdGVhZCBvZiBieS12YWx1ZSBkdWUgdG8gbGFjayBvZiBndWFyYW50ZWVkCiAgIC8v
IG1vdmUgZWxpc2lvbiBvZiBDKysxNy4gVGhpcyBtYXkgaGF2ZSBvdGhlciBtaW5vciBkaWZmZXJl
bmNlcywgYnV0IHRlc3RzCiAgIC8vIHBhc3MuCi0gIHN0YXRpYyBTaXplVDxJPiBSdW4oY29uc3Qg
SCYpOwotICBzdGF0aWMgU2l6ZVQ8ST4gUnVuKEgmJik7CisgIHN0YXRpYyBTaXplVDxJPiBSdW4o
Y29uc3QgSCYsIFNpemVUPEk+KTsKKyAgc3RhdGljIFNpemVUPEk+IFJ1bihIJiYsIFNpemVUPEk+
KTsKIH07CiAKIC8vIFRoZSBmb2xsb3dpbmcgbWV0YWZ1bmN0aW9ucyBhcmUgdXNlZCBpbiBjb25z
dHJ1Y3RvciBhbmQgYXNzaWdubWVudApAQCAtODYwLDcgKzg3Miw4IEBAIHN0cnVjdCBDb252ZXJz
aW9uSXNQb3NzaWJsZUltcGwgOiBzdGQ6OmZhbHNlX3R5cGUge307CiAKIHRlbXBsYXRlIDxjbGFz
cyBWYXJpYW50LCBjbGFzcyBUPgogc3RydWN0IENvbnZlcnNpb25Jc1Bvc3NpYmxlSW1wbDwKLSAg
ICBWYXJpYW50LCBULCB2b2lkX3Q8ZGVjbHR5cGUoSW1hZ2luYXJ5RnVuPFZhcmlhbnQ+OjpSdW4o
c3RkOjpkZWNsdmFsPFQ+KCkpKT4+CisgICAgVmFyaWFudCwgVCwKKyAgICB2b2lkX3Q8ZGVjbHR5
cGUoSW1hZ2luYXJ5RnVuPFZhcmlhbnQ+OjpSdW4oc3RkOjpkZWNsdmFsPFQ+KCksIHt9KSk+Pgog
ICAgIDogc3RkOjp0cnVlX3R5cGUge307CiAKIHRlbXBsYXRlIDxjbGFzcyBWYXJpYW50LCBjbGFz
cyBUPgpAQCAtODY4LDggKzg4MSw5IEBAIHN0cnVjdCBDb252ZXJzaW9uSXNQb3NzaWJsZSA6IENv
bnZlcnNpb25Jc1Bvc3NpYmxlSW1wbDxWYXJpYW50LCBUPjo6dHlwZSB7fTsKIAogdGVtcGxhdGUg
PGNsYXNzIFZhcmlhbnQsIGNsYXNzIFQ+CiBzdHJ1Y3QgSW5kZXhPZkNvbnN0cnVjdGVkVHlwZTwK
LSAgICBWYXJpYW50LCBULCB2b2lkX3Q8ZGVjbHR5cGUoSW1hZ2luYXJ5RnVuPFZhcmlhbnQ+OjpS
dW4oc3RkOjpkZWNsdmFsPFQ+KCkpKT4+Ci0gICAgOiBkZWNsdHlwZShJbWFnaW5hcnlGdW48VmFy
aWFudD46OlJ1bihzdGQ6OmRlY2x2YWw8VD4oKSkpIHt9OworICAgIFZhcmlhbnQsIFQsCisgICAg
dm9pZF90PGRlY2x0eXBlKEltYWdpbmFyeUZ1bjxWYXJpYW50Pjo6UnVuKHN0ZDo6ZGVjbHZhbDxU
PigpLCB7fSkpPj4KKyAgICA6IGRlY2x0eXBlKEltYWdpbmFyeUZ1bjxWYXJpYW50Pjo6UnVuKHN0
ZDo6ZGVjbHZhbDxUPigpLCB7fSkpIHt9OwogCiB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QuLi4gSXM+
CiBzdHJ1Y3QgQ29udGFpbnNWYXJpYW50TlBvcwpAQCAtMTIzNCwyMyArMTI0OCwyOSBAQCB1c2lu
ZyBWYXJpYW50Q29weUJhc2UgPSBhYnNsOjpjb25kaXRpb25hbF90PAogLy8gQmFzZSB0aGF0IGlz
IGRlcGVuZGVudCBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgbW92ZS1hc3NpZ24gY2FuIGJlIHRyaXZp
YWwuCiB0ZW1wbGF0ZSA8Y2xhc3MuLi4gVD4KIHVzaW5nIFZhcmlhbnRNb3ZlQXNzaWduQmFzZSA9
IGFic2w6OmNvbmRpdGlvbmFsX3Q8Ci0gICAgYWJzbDo6ZGlzanVuY3Rpb248YWJzbDo6Y29uanVu
Y3Rpb248YWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPFVuaW9uPFQuLi4+PiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxV
bmlvbjxULi4uPj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojppc19kZXN0cnVjdGlibGU8VW5pb248VC4uLj4+PiwKLSAgICAgICAgICAgICAgICAgICAgICBh
YnNsOjpuZWdhdGlvbjxhYnNsOjpjb25qdW5jdGlvbjwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VD4uLi4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxUPi4uLj4+Pjo6dmFsdWUsCisgICAgYWJz
bDo6ZGlzanVuY3Rpb248CisgICAgICAgIGFic2w6OmNvbmp1bmN0aW9uPGFic2w6OmlzX21vdmVf
YXNzaWduYWJsZTxVbmlvbjxULi4uPj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPFVuaW9uPFQuLi4+PiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjppc19kZXN0cnVjdGlibGU8VW5pb248VC4uLj4+PiwKKyAgICAgICAgYWJzbDo6
bmVnYXRpb248YWJzbDo6Y29uanVuY3Rpb248c3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VD4u
Li4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IFdl
J3JlIG5vdCBxdWFsaWZ5aW5nIHRoaXMgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBhYnNsOjogYmVjYXVzZSBpdCBkb2Vzbid0IGNvbXBpbGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5kZXIgTVNWQy4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfbW92ZV9hc3NpZ25hYmxlPFQ+
Li4uPj4+Ojp2YWx1ZSwKICAgICBWYXJpYW50Q29weUJhc2U8VC4uLj4sIFZhcmlhbnRNb3ZlQXNz
aWduQmFzZU5vbnRyaXZpYWw8VC4uLj4+OwogCiAvLyBCYXNlIHRoYXQgaXMgZGVwZW5kZW50IG9u
IHdoZXRoZXIgb3Igbm90IHRoZSBjb3B5LWFzc2lnbiBjYW4gYmUgdHJpdmlhbC4KIHRlbXBsYXRl
IDxjbGFzcy4uLiBUPgogdXNpbmcgVmFyaWFudENvcHlBc3NpZ25CYXNlID0gYWJzbDo6Y29uZGl0
aW9uYWxfdDwKLSAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpjb25qdW5jdGlvbjxhYnNsOjpp
c19jb3B5X2Fzc2lnbmFibGU8VW5pb248VC4uLj4+LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPFVuaW9uPFQuLi4+PiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Rlc3RydWN0
aWJsZTxVbmlvbjxULi4uPj4+LAotICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om5lZ2F0aW9u
PGFic2w6OmNvbmp1bmN0aW9uPAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Nv
cHlfY29uc3RydWN0aWJsZTxUPi4uLiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
aXNfY29weV9hc3NpZ25hYmxlPFQ+Li4uPj4+Ojp2YWx1ZSwKKyAgICBhYnNsOjpkaXNqdW5jdGlv
bjwKKyAgICAgICAgYWJzbDo6Y29uanVuY3Rpb248YWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPFVu
aW9uPFQuLi4+PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0
cnVjdGlibGU8VW5pb248VC4uLj4+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Omlz
X2Rlc3RydWN0aWJsZTxVbmlvbjxULi4uPj4+LAorICAgICAgICBhYnNsOjpuZWdhdGlvbjxhYnNs
Ojpjb25qdW5jdGlvbjxzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxUPi4uLiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogV2UncmUgbm90IHF1YWxp
ZnlpbmcgdGhpcyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGFic2w6OiBiZWNhdXNlIGl0IGRvZXNuJ3QgY29tcGlsZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmRlciBNU1ZDLgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpc19jb3B5X2Fzc2lnbmFibGU8VD4uLi4+Pj46OnZhbHVl
LAogICAgIFZhcmlhbnRNb3ZlQXNzaWduQmFzZTxULi4uPiwgVmFyaWFudENvcHlBc3NpZ25CYXNl
Tm9udHJpdmlhbDxULi4uPj47CiAKIHRlbXBsYXRlIDxjbGFzcy4uLiBUPgpAQCAtMTU0Miw4ICsx
NTYyLDggQEAgc3RydWN0IFN3YXBTYW1lSW5kZXggewogICB2YXJpYW50PFR5cGVzLi4uPiogdzsK
ICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEk+CiAgIHZvaWQgb3BlcmF0b3IoKShTaXplVDxJPikg
Y29uc3QgewotICAgIHVzaW5nIHN0ZDo6c3dhcDsKLSAgICBzd2FwKFZhcmlhbnRDb3JlQWNjZXNz
OjpBY2Nlc3M8ST4oKnYpLCBWYXJpYW50Q29yZUFjY2Vzczo6QWNjZXNzPEk+KCp3KSk7CisgICAg
dHlwZV90cmFpdHNfaW50ZXJuYWw6OlN3YXAoVmFyaWFudENvcmVBY2Nlc3M6OkFjY2VzczxJPigq
diksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFudENvcmVBY2Nlc3M6OkFj
Y2VzczxJPigqdykpOwogICB9CiAKICAgdm9pZCBvcGVyYXRvcigpKFNpemVUPHZhcmlhbnRfbnBv
cz4pIGNvbnN0IHt9CkBAIC0xNTk4LDExICsxNjE4LDEyIEBAIHN0cnVjdCBWYXJpYW50SGFzaFZp
c2l0b3IgewogdGVtcGxhdGUgPHR5cGVuYW1lIFZhcmlhbnQsIHR5cGVuYW1lLi4uIFRzPgogc3Ry
dWN0IFZhcmlhbnRIYXNoQmFzZTxWYXJpYW50LAogICAgICAgICAgICAgICAgICAgICAgICBhYnNs
OjplbmFibGVfaWZfdDxhYnNsOjpjb25qdW5jdGlvbjwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hFbmFibGVkPFRzPi4uLj46OnZhbHVlPiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hh
YmxlPFRzPi4uLj46OnZhbHVlPiwKICAgICAgICAgICAgICAgICAgICAgICAgVHMuLi4+IHsKICAg
dXNpbmcgYXJndW1lbnRfdHlwZSA9IFZhcmlhbnQ7CiAgIHVzaW5nIHJlc3VsdF90eXBlID0gc2l6
ZV90OwogICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBWYXJpYW50JiB2YXIpIGNvbnN0IHsKKyAg
ICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6QXNzZXJ0SGFzaEVuYWJsZWQ8VHMuLi4+KCk7CiAgICAg
aWYgKHZhci52YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCkpIHsKICAgICAgIHJldHVybiAyMzk3OTk4
ODQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzL29wdGlvbmFsLmgKaW5kZXggMTQyMTAwMTg4MTUuLmVkOGZhZjk3YTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90eXBlcy9vcHRpb25hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmgKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM1LDEyICszNSwxMiBA
QAogI2lmbmRlZiBBQlNMX1RZUEVTX09QVElPTkFMX0hfCiAjZGVmaW5lIEFCU0xfVFlQRVNfT1BU
SU9OQUxfSF8KIAotI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvY29uZmlnLmgiICAgLy8gVE9ETyhjYWxhYnJlc2UpIElXWVUgcmVtb3ZhbD8KICNpbmNs
dWRlICJhYnNsL3V0aWxpdHkvdXRpbGl0eS5oIgogCiAjaWZkZWYgQUJTTF9IQVZFX1NURF9PUFRJ
T05BTAogCi0jaW5jbHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8b3B0aW9uYWw+ICAvLyBJV1lV
IHByYWdtYTogZXhwb3J0CiAKIG5hbWVzcGFjZSBhYnNsIHsKIHVzaW5nIHN0ZDo6YmFkX29wdGlv
bmFsX2FjY2VzczsKQEAgLTU1LDQ0ICs1NSwzMiBAQCB1c2luZyBzdGQ6Om51bGxvcHQ7CiAjaW5j
bHVkZSA8Y2Fzc2VydD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPGluaXRpYWxp
emVyX2xpc3Q+Ci0jaW5jbHVkZSA8bmV3PgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1
ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgotI2luY2x1
ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9p
bmxpbmVfdmFyaWFibGUuaCIKICNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKICNp
bmNsdWRlICJhYnNsL3R5cGVzL2JhZF9vcHRpb25hbF9hY2Nlc3MuaCIKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL2ludGVybmFsL29wdGlvbmFsLmgiCiAKLS8vIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVS
SVRJTkdfQ09OU1RSVUNUT1JTCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIG51bGxvcHRfdAogLy8K
LS8vIEluaGVyaXRpbmcgY29uc3RydWN0b3JzIGlzIHN1cHBvcnRlZCBpbiBHQ0MgNC44KywgQ2xh
bmcgMy4zKyBhbmQgTVNWQyAyMDE1LgotLy8gX19jcHBfaW5oZXJpdGluZ19jb25zdHJ1Y3RvcnMg
aXMgYSBwcmVkZWZpbmVkIG1hY3JvIGFuZCBhIHJlY29tbWVuZGVkIHdheSB0bwotLy8gY2hlY2sg
Zm9yIHRoaXMgbGFuZ3VhZ2UgZmVhdHVyZSwgYnV0IEdDQyBkb2Vzbid0IHN1cHBvcnQgaXQgdW50
aWwgNS4wIGFuZAotLy8gQ2xhbmcgZG9lc24ndCBzdXBwb3J0IGl0IHVudGlsIDMuNi4KLS8vIEFs
c28sIE1TVkMgMjAxNSBoYXMgYSBidWc6IGl0IGRvZXNuJ3QgaW5oZXJpdCB0aGUgY29uc3RleHBy
IHRlbXBsYXRlCi0vLyBjb25zdHJ1Y3Rvci4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29k
ZSB3b24ndCB3b3JrIG9uIE1TVkMgMjAxNSBVcGRhdGUzOgotLy8gc3RydWN0IEJhc2UgewotLy8g
ICBpbnQgdDsKLS8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0vLyAgIGNvbnN0ZXhwciBCYXNl
KFQgdF8pIDogdCh0Xykge30KLS8vIH07Ci0vLyBzdHJ1Y3QgRm9vIDogQmFzZSB7Ci0vLyAgIHVz
aW5nIEJhc2U6OkJhc2U7Ci0vLyB9Ci0vLyBjb25zdGV4cHIgRm9vIGZvbygwKTsgIC8vIGRvZXNu
J3Qgd29yayBvbiBNU1ZDIDIwMTUKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNpZiBfX2hhc19m
ZWF0dXJlKGN4eF9pbmhlcml0aW5nX2NvbnN0cnVjdG9ycykKLSNkZWZpbmUgQUJTTF9PUFRJT05B
TF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMgMQotI2VuZGlmCi0jZWxpZiAoZGVmaW5lZChf
X0dOVUNfXykgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgKF9fR05VQ19fID4gNCB8fCBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDgp
KSB8fCBcCi0gICAgKF9fY3BwX2luaGVyaXRpbmdfY29uc3RydWN0b3JzID49IDIwMDgwMikgfHwg
ICAgICAgICAgICAgICAgICBcCi0gICAgKGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49
IDE5MTApCi0jZGVmaW5lIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNUT1JT
IDEKLSNlbmRpZgorLy8gQ2xhc3MgdHlwZSBmb3IgYGFic2w6Om51bGxvcHRgIHVzZWQgdG8gaW5k
aWNhdGUgYW4gYGFic2w6Om9wdGlvbmFsPFQ+YCB0eXBlCisvLyB0aGF0IGRvZXMgbm90IGNvbnRh
aW4gYSB2YWx1ZS4KK3N0cnVjdCBudWxsb3B0X3QgeworICAvLyBJdCBtdXN0IG5vdCBiZSBkZWZh
dWx0LWNvbnN0cnVjdGlibGUgdG8gYXZvaWQgYW1iaWd1aXR5IGZvciBvcHQgPSB7fS4KKyAgZXhw
bGljaXQgY29uc3RleHByIG51bGxvcHRfdChvcHRpb25hbF9pbnRlcm5hbDo6aW5pdF90KSBub2V4
Y2VwdCB7fQorfTsKIAotbmFtZXNwYWNlIGFic2wgeworLy8gbnVsbG9wdAorLy8KKy8vIEEgdGFn
IGNvbnN0YW50IG9mIHR5cGUgYGFic2w6Om51bGxvcHRfdGAgdXNlZCB0byBpbmRpY2F0ZSBhbiBl
bXB0eQorLy8gYGFic2w6Om9wdGlvbmFsYCBpbiBjZXJ0YWluIGZ1bmN0aW9ucywgc3VjaCBhcyBj
b25zdHJ1Y3Rpb24gb3IgYXNzaWdubWVudC4KK0FCU0xfSU5URVJOQUxfSU5MSU5FX0NPTlNURVhQ
UihudWxsb3B0X3QsIG51bGxvcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bG9wdF90KG9wdGlvbmFsX2ludGVybmFsOjppbml0X3QoKSkpOwogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogLy8gYWJzbDo6b3B0aW9uYWwKQEAgLTExNCwxMCArMTAyLDYgQEAgbmFtZXNwYWNl
IGFic2wgewogLy8gICAgICBuZWVkIHRoZSBpbmxpbmUgdmFyaWFibGUgc3VwcG9ydCBpbiBDKysx
NyBmb3IgZXh0ZXJuYWwgbGlua2FnZS4KIC8vICAgICogVGhyb3dzIGBhYnNsOjpiYWRfb3B0aW9u
YWxfYWNjZXNzYCBpbnN0ZWFkIG9mCiAvLyAgICAgIGBzdGQ6OmJhZF9vcHRpb25hbF9hY2Nlc3Ng
LgotLy8gICAgKiBgb3B0aW9uYWw6OnN3YXAoKWAgYW5kIGBhYnNsOjpzd2FwKClgIHJlbGllcyBv
bgotLy8gICAgICBgc3RkOjppc18obm90aHJvd18pc3dhcHBhYmxlKClgLCB3aGljaCBoYXMgYmVl
biBpbnRyb2R1Y2VkIGluIEMrKzE3LgotLy8gICAgICBBcyBhIHdvcmthcm91bmQsIHdlIGFzc3Vt
ZSBgaXNfc3dhcHBhYmxlKClgIGlzIGFsd2F5cyBgdHJ1ZWAKLS8vICAgICAgYW5kIGBpc19ub3Ro
cm93X3N3YXBwYWJsZSgpYCBpcyB0aGUgc2FtZSBhcyBgc3RkOjppc190cml2aWFsKClgLgogLy8g
ICAgKiBgbWFrZV9vcHRpb25hbCgpYCBjYW5ub3QgYmUgZGVjbGFyZWQgYGNvbnN0ZXhwcmAgZHVl
IHRvIHRoZSBhYnNlbmNlIG9mCiAvLyAgICAgIGd1YXJhbnRlZWQgY29weSBlbGlzaW9uLgogLy8g
ICAgKiBUaGUgbW92ZSBjb25zdHJ1Y3RvcidzIGBub2V4Y2VwdGAgc3BlY2lmaWNhdGlvbiBpcyBz
dHJvbmdlciwgaS5lLiBpZiB0aGUKQEAgLTEyNywzNjYgKzExMSwxMyBAQCBuYW1lc3BhY2UgYWJz
bCB7CiAvLyAgICAgICBhKSBtb3ZlIGNvbnN0cnVjdG9ycyBzaG91bGQgb25seSB0aHJvdyBkdWUg
dG8gYWxsb2NhdGlvbiBmYWlsdXJlIGFuZAogLy8gICAgICAgYikgaWYgVCdzIG1vdmUgY29uc3Ry
dWN0b3IgYWxsb2NhdGVzLCBpdCB1c2VzIHRoZSBzYW1lIGFsbG9jYXRpb24KIC8vICAgICAgICAg
IGZ1bmN0aW9uIGFzIHRoZSBkZWZhdWx0IGFsbG9jYXRvci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotY2xhc3Mgb3B0aW9uYWw7Ci0KLS8vIG51bGxvcHRfdAotLy8KLS8vIENsYXNzIHR5cGUgZm9y
IGBhYnNsOjpudWxsb3B0YCB1c2VkIHRvIGluZGljYXRlIGFuIGBhYnNsOjpvcHRpb25hbDxUPmAg
dHlwZQotLy8gdGhhdCBkb2VzIG5vdCBjb250YWluIGEgdmFsdWUuCi1zdHJ1Y3QgbnVsbG9wdF90
IHsKLSAgc3RydWN0IGluaXRfdCB7fTsKLSAgc3RhdGljIGluaXRfdCBpbml0OwotCi0gIC8vIEl0
IG11c3Qgbm90IGJlIGRlZmF1bHQtY29uc3RydWN0aWJsZSB0byBhdm9pZCBhbWJpZ3VpdHkgZm9y
IG9wdCA9IHt9LgotICAvLyBOb3RlIHRoZSBub24tY29uc3QgcmVmZXJlbmNlLCB3aGljaCBpcyB0
byBlbGltaW5hdGUgYW1iaWd1aXR5IGZvciBjb2RlCi0gIC8vIGxpa2U6Ci0gIC8vCi0gIC8vIHN0
cnVjdCBTIHsgaW50IHZhbHVlOyB9OwotICAvLwotICAvLyB2b2lkIFRlc3QoKSB7Ci0gIC8vICAg
b3B0aW9uYWw8Uz4gb3B0OwotICAvLyAgIG9wdCA9IHt7fX07Ci0gIC8vIH0KLSAgZXhwbGljaXQg
Y29uc3RleHByIG51bGxvcHRfdChpbml0X3QmIC8qdW51c2VkKi8pIHt9Ci19OwotCi0vLyBudWxs
b3B0CiAvLwotLy8gQSB0YWcgY29uc3RhbnQgb2YgdHlwZSBgYWJzbDo6bnVsbG9wdF90YCB1c2Vk
IHRvIGluZGljYXRlIGFuIGVtcHR5Ci0vLyBgYWJzbDo6b3B0aW9uYWxgIGluIGNlcnRhaW4gZnVu
Y3Rpb25zLCBzdWNoIGFzIGNvbnN0cnVjdGlvbiBvciBhc3NpZ25tZW50LgotZXh0ZXJuIGNvbnN0
IG51bGxvcHRfdCBudWxsb3B0OwotCi1uYW1lc3BhY2Ugb3B0aW9uYWxfaW50ZXJuYWwgewotCi1z
dHJ1Y3QgZW1wdHlfc3RydWN0IHt9OwotLy8gVGhpcyBjbGFzcyBzdG9yZXMgdGhlIGRhdGEgaW4g
b3B0aW9uYWw8VD4uCi0vLyBJdCBpcyBzcGVjaWFsaXplZCBiYXNlZCBvbiB3aGV0aGVyIFQgaXMg
dHJpdmlhbGx5IGRlc3RydWN0aWJsZS4KLS8vIFRoaXMgaXMgdGhlIHNwZWNpYWxpemF0aW9uIGZv
ciBub24gdHJpdmlhbGx5IGRlc3RydWN0aWJsZSB0eXBlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IGJvb2wgPSBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlPgotY2xhc3Mg
b3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UgewotICBzdHJ1Y3QgZHVtbXlfdHlwZSB7Ci0gICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoVCkgJSBzaXplb2YoZW1wdHlfc3RydWN0KSA9PSAwLCAiIik7Ci0g
ICAgLy8gVXNlIGFuIGFycmF5IHRvIGF2b2lkIEdDQyA2IHBsYWNlbWVudC1uZXcgd2FybmluZy4K
LSAgICBlbXB0eV9zdHJ1Y3QgZGF0YVtzaXplb2YoVCkgLyBzaXplb2YoZW1wdHlfc3RydWN0KV07
Ci0gIH07Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIFdoZXRoZXIgdGhlcmUgaXMgZGF0YSBvciBub3Qu
Ci0gIGJvb2wgZW5nYWdlZF87Ci0gIC8vIERhdGEgc3RvcmFnZQotICB1bmlvbiB7Ci0gICAgZHVt
bXlfdHlwZSBkdW1teV87Ci0gICAgVCBkYXRhXzsKLSAgfTsKLQotICB2b2lkIGRlc3RydWN0KCkg
bm9leGNlcHQgewotICAgIGlmIChlbmdhZ2VkXykgewotICAgICAgZGF0YV8uflQoKTsKLSAgICAg
IGVuZ2FnZWRfID0gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgLy8gZHVtbXlfIG11c3QgYmUgaW5p
dGlhbGl6ZWQgZm9yIGNvbnN0ZXhwciBjb25zdHJ1Y3Rvci4KLSAgY29uc3RleHByIG9wdGlvbmFs
X2RhdGFfZHRvcl9iYXNlKCkgbm9leGNlcHQgOiBlbmdhZ2VkXyhmYWxzZSksIGR1bW15X3t7fX0g
e30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgY29uc3RleHByIGV4cGxpY2l0
IG9wdGlvbmFsX2RhdGFfZHRvcl9iYXNlKGluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQotICAg
ICAgOiBlbmdhZ2VkXyh0cnVlKSwgZGF0YV8oYWJzbDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikg
e30KLQotICB+b3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoKSB7IGRlc3RydWN0KCk7IH0KLX07Ci0K
LS8vIFNwZWNpYWxpemF0aW9uIGZvciB0cml2aWFsbHkgZGVzdHJ1Y3RpYmxlIHR5cGUuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIG9wdGlvbmFsX2RhdGFfZHRvcl9iYXNlPFQsIHRydWU+
IHsKLSAgc3RydWN0IGR1bW15X3R5cGUgewotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpICUg
c2l6ZW9mKGVtcHR5X3N0cnVjdCkgPT0gMCwgIiIpOwotICAgIC8vIFVzZSBhcnJheSB0byBhdm9p
ZCBHQ0MgNiBwbGFjZW1lbnQtbmV3IHdhcm5pbmcuCi0gICAgZW1wdHlfc3RydWN0IGRhdGFbc2l6
ZW9mKFQpIC8gc2l6ZW9mKGVtcHR5X3N0cnVjdCldOwotICB9OwotCi0gcHJvdGVjdGVkOgotICAv
LyBXaGV0aGVyIHRoZXJlIGlzIGRhdGEgb3Igbm90LgotICBib29sIGVuZ2FnZWRfOwotICAvLyBE
YXRhIHN0b3JhZ2UKLSAgdW5pb24gewotICAgIGR1bW15X3R5cGUgZHVtbXlfOwotICAgIFQgZGF0
YV87Ci0gIH07Ci0gIHZvaWQgZGVzdHJ1Y3QoKSBub2V4Y2VwdCB7IGVuZ2FnZWRfID0gZmFsc2U7
IH0KLQotICAvLyBkdW1teV8gbXVzdCBiZSBpbml0aWFsaXplZCBmb3IgY29uc3RleHByIGNvbnN0
cnVjdG9yLgotICBjb25zdGV4cHIgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoKSBub2V4Y2VwdCA6
IGVuZ2FnZWRfKGZhbHNlKSwgZHVtbXlfe3t9fSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgotICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoaW5f
cGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCi0gICAgICA6IGVuZ2FnZWRfKHRydWUpLCBkYXRhXyhh
YnNsOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBvcHRpb25hbF9kYXRhX2Jhc2UgOiBwdWJsaWMgb3B0aW9uYWxfZGF0YV9kdG9y
X2Jhc2U8VD4gewotIHByb3RlY3RlZDoKLSAgdXNpbmcgYmFzZSA9IG9wdGlvbmFsX2RhdGFfZHRv
cl9iYXNlPFQ+OwotI2lmIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNUT1JT
Ci0gIHVzaW5nIGJhc2U6OmJhc2U7Ci0jZWxzZQotICBvcHRpb25hbF9kYXRhX2Jhc2UoKSA9IGRl
ZmF1bHQ7Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIGNvbnN0ZXhwciBleHBs
aWNpdCBvcHRpb25hbF9kYXRhX2Jhc2UoaW5fcGxhY2VfdCB0LCBBcmdzJiYuLi4gYXJncykKLSAg
ICAgIDogYmFzZSh0LCBhYnNsOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQotI2VuZGlmCi0K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIHZvaWQgY29uc3RydWN0KEFyZ3MmJi4u
LiBhcmdzKSB7Ci0gICAgLy8gVXNlIGR1bW15XydzIGFkZHJlc3MgdG8gd29yayBhcm91bmQgY2Fz
dGluZyBjdi1xdWFsaWZpZWQgVCogdG8gdm9pZCouCi0gICAgOjpuZXcgKHN0YXRpY19jYXN0PHZv
aWQqPigmdGhpcy0+ZHVtbXlfKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAg
IHRoaXMtPmVuZ2FnZWRfID0gdHJ1ZTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgot
ICB2b2lkIGFzc2lnbihVJiYgdSkgewotICAgIGlmICh0aGlzLT5lbmdhZ2VkXykgewotICAgICAg
dGhpcy0+ZGF0YV8gPSBzdGQ6OmZvcndhcmQ8VT4odSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGNv
bnN0cnVjdChzdGQ6OmZvcndhcmQ8VT4odSkpOwotICAgIH0KLSAgfQotfTsKLQotLy8gVE9ETyhh
YnNsLXRlYW0pOiBBZGQgYW5vdGhlciBjbGFzcyB1c2luZwotLy8gc3RkOjppc190cml2aWFsbHlf
bW92ZV9jb25zdHJ1Y3RpYmxlIHRyYWl0IHdoZW4gYXZhaWxhYmxlIHRvIG1hdGNoCi0vLyBodHRw
Oi8vY3BsdXNwbHVzLmdpdGh1Yi5pby9MV0cvbHdnLWRlZmVjdHMuaHRtbCMyOTAwLCBmb3IgdHlw
ZXMgdGhhdAotLy8gaGF2ZSB0cml2aWFsIG1vdmUgYnV0IG5vbnRyaXZpYWwgY29weS4KLS8vIEFs
c28sIHdlIHNob3VsZCBiZSBjaGVja2luZyBpc190cml2aWFsbHlfY29weWFibGUgaGVyZSwgd2hp
Y2ggaXMgbm90Ci0vLyBzdXBwb3J0ZWQgbm93LCBzbyB3ZSB1c2UgaXNfdHJpdmlhbGx5XyogdHJh
aXRzIGluc3RlYWQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCA9IGFic2w6OmlzX3RyaXZp
YWxseV9jb3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlJiYKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUm
JgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc190cml2aWFsbHlfZGVzdHJ1
Y3RpYmxlPFQ+Ojp2YWx1ZT4KLWNsYXNzIG9wdGlvbmFsX2RhdGE7Ci0KLS8vIFRyaXZpYWxseSBj
b3B5YWJsZSB0eXBlcwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBvcHRpb25hbF9kYXRh
PFQsIHRydWU+IDogcHVibGljIG9wdGlvbmFsX2RhdGFfYmFzZTxUPiB7Ci0gcHJvdGVjdGVkOgot
I2lmIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNUT1JTCi0gIHVzaW5nIG9w
dGlvbmFsX2RhdGFfYmFzZTxUPjo6b3B0aW9uYWxfZGF0YV9iYXNlOwotI2Vsc2UKLSAgb3B0aW9u
YWxfZGF0YSgpID0gZGVmYXVsdDsKLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAg
Y29uc3RleHByIGV4cGxpY2l0IG9wdGlvbmFsX2RhdGEoaW5fcGxhY2VfdCB0LCBBcmdzJiYuLi4g
YXJncykKLSAgICAgIDogb3B0aW9uYWxfZGF0YV9iYXNlPFQ+KHQsIGFic2w6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pIHt9Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xh
c3Mgb3B0aW9uYWxfZGF0YTxULCBmYWxzZT4gOiBwdWJsaWMgb3B0aW9uYWxfZGF0YV9iYXNlPFQ+
IHsKLSBwcm90ZWN0ZWQ6Ci0jaWYgQUJTTF9PUFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJV
Q1RPUlMKLSAgdXNpbmcgb3B0aW9uYWxfZGF0YV9iYXNlPFQ+OjpvcHRpb25hbF9kYXRhX2Jhc2U7
Ci0jZWxzZQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgY29uc3RleHByIGV4cGxp
Y2l0IG9wdGlvbmFsX2RhdGEoaW5fcGxhY2VfdCB0LCBBcmdzJiYuLi4gYXJncykKLSAgICAgIDog
b3B0aW9uYWxfZGF0YV9iYXNlPFQ+KHQsIGFic2w6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9
Ci0jZW5kaWYKLQotICBvcHRpb25hbF9kYXRhKCkgPSBkZWZhdWx0OwotCi0gIG9wdGlvbmFsX2Rh
dGEoY29uc3Qgb3B0aW9uYWxfZGF0YSYgcmhzKSB7Ci0gICAgaWYgKHJocy5lbmdhZ2VkXykgewot
ICAgICAgdGhpcy0+Y29uc3RydWN0KHJocy5kYXRhXyk7Ci0gICAgfQotICB9Ci0KLSAgb3B0aW9u
YWxfZGF0YShvcHRpb25hbF9kYXRhJiYgcmhzKSBub2V4Y2VwdCgKLSAgICAgIGFic2w6OmRlZmF1
bHRfYWxsb2NhdG9yX2lzX25vdGhyb3c6OnZhbHVlIHx8Ci0gICAgICBzdGQ6OmlzX25vdGhyb3df
bW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkgewotICAgIGlmIChyaHMuZW5nYWdlZF8pIHsK
LSAgICAgIHRoaXMtPmNvbnN0cnVjdChzdGQ6Om1vdmUocmhzLmRhdGFfKSk7Ci0gICAgfQotICB9
Ci0KLSAgb3B0aW9uYWxfZGF0YSYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsX2RhdGEmIHJocykg
ewotICAgIGlmIChyaHMuZW5nYWdlZF8pIHsKLSAgICAgIHRoaXMtPmFzc2lnbihyaHMuZGF0YV8p
OwotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLT5kZXN0cnVjdCgpOwotICAgIH0KLSAgICByZXR1
cm4gKnRoaXM7Ci0gIH0KLQotICBvcHRpb25hbF9kYXRhJiBvcGVyYXRvcj0ob3B0aW9uYWxfZGF0
YSYmIHJocykgbm9leGNlcHQoCi0gICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxl
PFQ+Ojp2YWx1ZSYmCi0gICAgICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJs
ZTxUPjo6dmFsdWUpIHsKLSAgICBpZiAocmhzLmVuZ2FnZWRfKSB7Ci0gICAgICB0aGlzLT5hc3Np
Z24oc3RkOjptb3ZlKHJocy5kYXRhXykpOwotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLT5kZXN0
cnVjdCgpOwotICAgIH0KLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLX07Ci0KLS8vIE9yZGVyZWQg
YnkgbGV2ZWwgb2YgcmVzdHJpY3Rpb24sIGZyb20gbG93IHRvIGhpZ2guCi0vLyBDb3B5YWJsZSBp
bXBsaWVzIG1vdmFibGUuCi1lbnVtIGNsYXNzIGNvcHlfdHJhaXRzIHsgY29weWFibGUgPSAwLCBt
b3ZhYmxlID0gMSwgbm9uX21vdmFibGUgPSAyIH07Ci0KLS8vIEJhc2UgY2xhc3MgZm9yIGVuYWJs
aW5nL2Rpc2FibGluZyBjb3B5L21vdmUgY29uc3RydWN0b3IuCi10ZW1wbGF0ZSA8Y29weV90cmFp
dHM+Ci1jbGFzcyBvcHRpb25hbF9jdG9yX2Jhc2U7Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyBvcHRp
b25hbF9jdG9yX2Jhc2U8Y29weV90cmFpdHM6OmNvcHlhYmxlPiB7Ci0gcHVibGljOgotICBjb25z
dGV4cHIgb3B0aW9uYWxfY3Rvcl9iYXNlKCkgPSBkZWZhdWx0OwotICBvcHRpb25hbF9jdG9yX2Jh
c2UoY29uc3Qgb3B0aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWZhdWx0OwotICBvcHRpb25hbF9jdG9y
X2Jhc2Uob3B0aW9uYWxfY3Rvcl9iYXNlJiYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfY3Rvcl9i
YXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWZhdWx0OwotICBv
cHRpb25hbF9jdG9yX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9jdG9yX2Jhc2UmJikgPSBkZWZh
dWx0OwotfTsKLQotdGVtcGxhdGUgPD4KLWNsYXNzIG9wdGlvbmFsX2N0b3JfYmFzZTxjb3B5X3Ry
YWl0czo6bW92YWJsZT4gewotIHB1YmxpYzoKLSAgY29uc3RleHByIG9wdGlvbmFsX2N0b3JfYmFz
ZSgpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfY3Rvcl9iYXNlKGNvbnN0IG9wdGlvbmFsX2N0b3Jf
YmFzZSYpID0gZGVsZXRlOwotICBvcHRpb25hbF9jdG9yX2Jhc2Uob3B0aW9uYWxfY3Rvcl9iYXNl
JiYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfY3Rvcl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0
aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWZhdWx0OwotICBvcHRpb25hbF9jdG9yX2Jhc2UmIG9wZXJh
dG9yPShvcHRpb25hbF9jdG9yX2Jhc2UmJikgPSBkZWZhdWx0OwotfTsKLQotdGVtcGxhdGUgPD4K
LWNsYXNzIG9wdGlvbmFsX2N0b3JfYmFzZTxjb3B5X3RyYWl0czo6bm9uX21vdmFibGU+IHsKLSBw
dWJsaWM6Ci0gIGNvbnN0ZXhwciBvcHRpb25hbF9jdG9yX2Jhc2UoKSA9IGRlZmF1bHQ7Ci0gIG9w
dGlvbmFsX2N0b3JfYmFzZShjb25zdCBvcHRpb25hbF9jdG9yX2Jhc2UmKSA9IGRlbGV0ZTsKLSAg
b3B0aW9uYWxfY3Rvcl9iYXNlKG9wdGlvbmFsX2N0b3JfYmFzZSYmKSA9IGRlbGV0ZTsKLSAgb3B0
aW9uYWxfY3Rvcl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxfY3Rvcl9iYXNlJikgPSBk
ZWZhdWx0OwotICBvcHRpb25hbF9jdG9yX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9jdG9yX2Jh
c2UmJikgPSBkZWZhdWx0OwotfTsKLQotLy8gQmFzZSBjbGFzcyBmb3IgZW5hYmxpbmcvZGlzYWJs
aW5nIGNvcHkvbW92ZSBhc3NpZ25tZW50LgotdGVtcGxhdGUgPGNvcHlfdHJhaXRzPgotY2xhc3Mg
b3B0aW9uYWxfYXNzaWduX2Jhc2U7Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyBvcHRpb25hbF9hc3Np
Z25fYmFzZTxjb3B5X3RyYWl0czo6Y29weWFibGU+IHsKLSBwdWJsaWM6Ci0gIGNvbnN0ZXhwciBv
cHRpb25hbF9hc3NpZ25fYmFzZSgpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2Uo
Y29uc3Qgb3B0aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFsX2Fzc2ln
bl9iYXNlKG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNz
aWduX2Jhc2UmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFzZSYpID0gZGVmYXVs
dDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9hc3NpZ25fYmFz
ZSYmKSA9IGRlZmF1bHQ7Ci19OwotCi10ZW1wbGF0ZSA8PgotY2xhc3Mgb3B0aW9uYWxfYXNzaWdu
X2Jhc2U8Y29weV90cmFpdHM6Om1vdmFibGU+IHsKLSBwdWJsaWM6Ci0gIGNvbnN0ZXhwciBvcHRp
b25hbF9hc3NpZ25fYmFzZSgpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2UoY29u
c3Qgb3B0aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFsX2Fzc2lnbl9i
YXNlKG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWdu
X2Jhc2UmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFzZSYpID0gZGVsZXRlOwot
ICBvcHRpb25hbF9hc3NpZ25fYmFzZSYgb3BlcmF0b3I9KG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYp
ID0gZGVmYXVsdDsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyBvcHRpb25hbF9hc3NpZ25fYmFz
ZTxjb3B5X3RyYWl0czo6bm9uX21vdmFibGU+IHsKLSBwdWJsaWM6Ci0gIGNvbnN0ZXhwciBvcHRp
b25hbF9hc3NpZ25fYmFzZSgpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2UoY29u
c3Qgb3B0aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFsX2Fzc2lnbl9i
YXNlKG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWdu
X2Jhc2UmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFzZSYpID0gZGVsZXRlOwot
ICBvcHRpb25hbF9hc3NpZ25fYmFzZSYgb3BlcmF0b3I9KG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYp
ID0gZGVsZXRlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgY29weV90
cmFpdHMgZ2V0X2N0b3JfY29weV90cmFpdHMoKSB7Ci0gIHJldHVybiBzdGQ6OmlzX2NvcHlfY29u
c3RydWN0aWJsZTxUPjo6dmFsdWUKLSAgICAgICAgICAgICA/IGNvcHlfdHJhaXRzOjpjb3B5YWJs
ZQotICAgICAgICAgICAgIDogc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlID8g
Y29weV90cmFpdHM6Om1vdmFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IGNvcHlfdHJhaXRzOjpub25fbW92YWJsZTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgY29weV90cmFpdHMgZ2V0X2Fzc2lnbl9jb3B5X3Ry
YWl0cygpIHsKLSAgcmV0dXJuIGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxUPjo6dmFsdWUgJiYK
LSAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlCi0g
ICAgICAgICAgICAgPyBjb3B5X3RyYWl0czo6Y29weWFibGUKLSAgICAgICAgICAgICA6IGFic2w6
OmlzX21vdmVfYXNzaWduYWJsZTxUPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAg
PyBjb3B5X3RyYWl0czo6bW92YWJsZQotICAgICAgICAgICAgICAgICAgIDogY29weV90cmFpdHM6
Om5vbl9tb3ZhYmxlOwotfQotCi0vLyBXaGV0aGVyIFQgaXMgY29uc3RydWN0aWJsZSBvciBjb252
ZXJ0aWJsZSBmcm9tIG9wdGlvbmFsPFU+LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Ci1zdHJ1Y3QgaXNfY29uc3RydWN0aWJsZV9jb252ZXJ0aWJsZV9mcm9tX29wdGlvbmFsCi0g
ICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PAotICAgICAgICAgIGJvb2wsIHN0ZDo6aXNfY29u
c3RydWN0aWJsZTxULCBvcHRpb25hbDxVPiY+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgICAg
ICBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgb3B0aW9uYWw8VT4mJj46OnZhbHVlIHx8Ci0gICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBjb25zdCBvcHRpb25hbDxV
PiY+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8
VCwgY29uc3Qgb3B0aW9uYWw8VT4mJj46OnZhbHVlIHx8Ci0gICAgICAgICAgICAgICAgICAgIHN0
ZDo6aXNfY29udmVydGlibGU8b3B0aW9uYWw8VT4mLCBUPjo6dmFsdWUgfHwKLSAgICAgICAgICAg
ICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxvcHRpb25hbDxVPiYmLCBUPjo6dmFsdWUgfHwK
LSAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxjb25zdCBvcHRpb25hbDxV
PiYsIFQ+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxl
PGNvbnN0IG9wdGlvbmFsPFU+JiYsIFQ+Ojp2YWx1ZT4ge307Ci0KLS8vIFdoZXRoZXIgVCBpcyBj
b25zdHJ1Y3RpYmxlIG9yIGNvbnZlcnRpYmxlIG9yIGFzc2lnbmFibGUgZnJvbSBvcHRpb25hbDxV
Pi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotc3RydWN0IGlzX2NvbnN0cnVj
dGlibGVfY29udmVydGlibGVfYXNzaWduYWJsZV9mcm9tX29wdGlvbmFsCi0gICAgOiBzdGQ6Omlu
dGVncmFsX2NvbnN0YW50PAotICAgICAgICAgIGJvb2wsIGlzX2NvbnN0cnVjdGlibGVfY29udmVy
dGlibGVfZnJvbV9vcHRpb25hbDxULCBVPjo6dmFsdWUgfHwKLSAgICAgICAgICAgICAgICAgICAg
c3RkOjppc19hc3NpZ25hYmxlPFQmLCBvcHRpb25hbDxVPiY+Ojp2YWx1ZSB8fAotICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmlzX2Fzc2lnbmFibGU8VCYsIG9wdGlvbmFsPFU+JiY+Ojp2YWx1ZSB8
fAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Fzc2lnbmFibGU8VCYsIGNvbnN0IG9wdGlv
bmFsPFU+Jj46OnZhbHVlIHx8Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfYXNzaWduYWJs
ZTxUJiwgY29uc3Qgb3B0aW9uYWw8VT4mJj46OnZhbHVlPiB7fTsKLQotLy8gSGVscGVyIGZ1bmN0
aW9uIHVzZWQgYnkgW29wdGlvbmFsLnJlbG9wc10sIFtvcHRpb25hbC5jb21wX3dpdGhfdF0sCi0v
LyBmb3IgY2hlY2tpbmcgd2hldGhlciBhbiBleHByZXNzaW9uIGlzIGNvbnZlcnRpYmxlIHRvIGJv
b2wuCi1ib29sIGNvbnZlcnRpYmxlX3RvX2Jvb2woYm9vbCk7Ci0KLS8vIEJhc2UgY2xhc3MgZm9y
IHN0ZDo6aGFzaDxhYnNsOjpvcHRpb25hbDxUPj46Ci0vLyBJZiBzdGQ6Omhhc2g8c3RkOjpyZW1v
dmVfY29uc3RfdDxUPj4gaXMgZW5hYmxlZCwgaXQgcHJvdmlkZXMgb3BlcmF0b3IoKSB0bwotLy8g
Y29tcHV0ZSB0aGUgaGFzaDsgT3RoZXJ3aXNlLCBpdCBpcyBkaXNhYmxlZC4KLS8vIFJlZmVyZW5j
ZSBONDY1OSAyMy4xNC4xNSBbdW5vcmQuaGFzaF0uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgPSBzaXplX3Q+Ci1zdHJ1Y3Qgb3B0aW9uYWxfaGFzaF9iYXNlIHsKLSAgb3B0aW9uYWxf
aGFzaF9iYXNlKCkgPSBkZWxldGU7Ci0gIG9wdGlvbmFsX2hhc2hfYmFzZShjb25zdCBvcHRpb25h
bF9oYXNoX2Jhc2UmKSA9IGRlbGV0ZTsKLSAgb3B0aW9uYWxfaGFzaF9iYXNlKG9wdGlvbmFsX2hh
c2hfYmFzZSYmKSA9IGRlbGV0ZTsKLSAgb3B0aW9uYWxfaGFzaF9iYXNlJiBvcGVyYXRvcj0oY29u
c3Qgb3B0aW9uYWxfaGFzaF9iYXNlJikgPSBkZWxldGU7Ci0gIG9wdGlvbmFsX2hhc2hfYmFzZSYg
b3BlcmF0b3I9KG9wdGlvbmFsX2hhc2hfYmFzZSYmKSA9IGRlbGV0ZTsKLX07Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotc3RydWN0IG9wdGlvbmFsX2hhc2hfYmFzZTxULCBkZWNsdHlwZShzdGQ6
Omhhc2g8YWJzbDo6cmVtb3ZlX2NvbnN0X3Q8VD4gPigpKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpkZWNsdmFsPGFic2w6OnJlbW92ZV9jb25zdF90PFQ+ID4oKSkpPiB7
Ci0gIHVzaW5nIGFyZ3VtZW50X3R5cGUgPSBhYnNsOjpvcHRpb25hbDxUPjsKLSAgdXNpbmcgcmVz
dWx0X3R5cGUgPSBzaXplX3Q7Ci0gIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IGFic2w6Om9wdGlv
bmFsPFQ+JiBvcHQpIGNvbnN0IHsKLSAgICBpZiAob3B0KSB7Ci0gICAgICByZXR1cm4gc3RkOjpo
YXNoPGFic2w6OnJlbW92ZV9jb25zdF90PFQ+ID4oKSgqb3B0KTsKLSAgICB9IGVsc2UgewotICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oMHgyOTc4MTRhYWFkMTk2ZTZkVUxMKTsKLSAg
ICB9Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBvcHRpb25hbF9pbnRlcm5hbAotCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gYWJzbDo6b3B0aW9uYWwgY2xhc3MgZGVmaW5pdGlvbgot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBv
cHRpb25hbCA6IHByaXZhdGUgb3B0aW9uYWxfaW50ZXJuYWw6Om9wdGlvbmFsX2RhdGE8VD4sCiAg
ICAgICAgICAgICAgICAgIHByaXZhdGUgb3B0aW9uYWxfaW50ZXJuYWw6Om9wdGlvbmFsX2N0b3Jf
YmFzZTwKLSAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2ludGVybmFsOjpnZXRfY3Rvcl9j
b3B5X3RyYWl0czxUPigpPiwKKyAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2ludGVybmFs
OjpjdG9yX2NvcHlfdHJhaXRzPFQ+Ojp0cmFpdHM+LAogICAgICAgICAgICAgICAgICBwcml2YXRl
IG9wdGlvbmFsX2ludGVybmFsOjpvcHRpb25hbF9hc3NpZ25fYmFzZTwKLSAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsX2ludGVybmFsOjpnZXRfYXNzaWduX2NvcHlfdHJhaXRzPFQ+KCk+IHsK
KyAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2ludGVybmFsOjphc3NpZ25fY29weV90cmFp
dHM8VD46OnRyYWl0cz4gewogICB1c2luZyBkYXRhX2Jhc2UgPSBvcHRpb25hbF9pbnRlcm5hbDo6
b3B0aW9uYWxfZGF0YTxUPjsKIAogIHB1YmxpYzoKQEAgLTUxMSwxMCArMTQyLDExIEBAIGNsYXNz
IG9wdGlvbmFsIDogcHJpdmF0ZSBvcHRpb25hbF9pbnRlcm5hbDo6b3B0aW9uYWxfZGF0YTxUPiwK
ICAgLy8gdGhlIGFyZ3VtZW50cyBgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uYCAgd2l0aGlu
IHRoZSBgb3B0aW9uYWxgLgogICAvLyAoVGhlIGBpbl9wbGFjZV90YCBpcyBhIHRhZyB1c2VkIHRv
IGluZGljYXRlIHRoYXQgdGhlIGNvbnRhaW5lZCBvYmplY3QKICAgLy8gc2hvdWxkIGJlIGNvbnN0
cnVjdGVkIGluLXBsYWNlLikKLSAgLy8KLSAgLy8gVE9ETyhhYnNsLXRlYW0pOiBBZGQgc3RkOjpp
c19jb25zdHJ1Y3RpYmxlPFQsIEFyZ3MmJi4uLj4gU0ZJTkFFLgotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUuLi4gQXJncz4KLSAgY29uc3RleHByIGV4cGxpY2l0IG9wdGlvbmFsKGluX3BsYWNlX3QsIEFy
Z3MmJi4uLiBhcmdzKQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5QbGFjZVQsIHR5cGVuYW1lLi4u
IEFyZ3MsCisgICAgICAgICAgICBhYnNsOjplbmFibGVfaWZfdDxhYnNsOjpjb25qdW5jdGlvbjwK
KyAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8SW5QbGFjZVQsIGluX3BsYWNlX3Q+LAorICAg
ICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBBcmdzJiYuLi4+ID46OnZhbHVl
PiogPSBudWxscHRyPgorICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWwoSW5QbGFjZVQsIEFy
Z3MmJi4uLiBhcmdzKQogICAgICAgOiBkYXRhX2Jhc2UoaW5fcGxhY2VfdCgpLCBhYnNsOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQogCiAgIC8vIENvbnN0cnVjdHMgYSBub24tZW1wdHkgYG9w
dGlvbmFsYCBkaXJlY3QtaW5pdGlhbGl6ZWQgdmFsdWUgb2YgdHlwZSBgVGAgZnJvbQpAQCAtNzUw
LDExICszODIsMTAgQEAgY2xhc3Mgb3B0aW9uYWwgOiBwcml2YXRlIG9wdGlvbmFsX2ludGVybmFs
OjpvcHRpb25hbF9kYXRhPFQ+LAogICAvLyBTd2FwLCBzdGFuZGFyZCBzZW1hbnRpY3MKICAgdm9p
ZCBzd2FwKG9wdGlvbmFsJiByaHMpIG5vZXhjZXB0KAogICAgICAgc3RkOjppc19ub3Rocm93X21v
dmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUmJgotICAgICAgICAgIHN0ZDo6aXNfdHJpdmlhbDxU
Pjo6dmFsdWUpIHsKKyAgICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNOb3Rocm93U3dh
cHBhYmxlPFQ+Ojp2YWx1ZSkgewogICAgIGlmICgqdGhpcykgewogICAgICAgaWYgKHJocykgewot
ICAgICAgICB1c2luZyBzdGQ6OnN3YXA7Ci0gICAgICAgIHN3YXAoKip0aGlzLCAqcmhzKTsKKyAg
ICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OlN3YXAoKip0aGlzLCAqcmhzKTsKICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgIHJocy5jb25zdHJ1Y3Qoc3RkOjptb3ZlKCoqdGhpcykpOwogICAgICAg
ICB0aGlzLT5kZXN0cnVjdCgpOwpAQCAtNzkwLDcgKzQyMSw5IEBAIGNsYXNzIG9wdGlvbmFsIDog
cHJpdmF0ZSBvcHRpb25hbF9pbnRlcm5hbDo6b3B0aW9uYWxfZGF0YTxUPiwKICAgLy8KICAgLy8g
QWNjZXNzZXMgdGhlIHVuZGVybHlpbmcgYFRgIHZhbHVlIG9mIGFuIGBvcHRpb25hbGAuIElmIHRo
ZSBgb3B0aW9uYWxgIGlzCiAgIC8vIGVtcHR5LCBiZWhhdmlvciBpcyB1bmRlZmluZWQuCi0gIGNv
bnN0ZXhwciBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCAmIHsgcmV0dXJuIHJlZmVyZW5jZSgp
OyB9CisgIGNvbnN0ZXhwciBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCYgeworICAgIHJldHVy
biBBQlNMX0FTU0VSVCh0aGlzLT5lbmdhZ2VkXyksIHJlZmVyZW5jZSgpOworICB9CiAgIFQmIG9w
ZXJhdG9yKigpICYgewogICAgIGFzc2VydCh0aGlzLT5lbmdhZ2VkXyk7CiAgICAgcmV0dXJuIHJl
ZmVyZW5jZSgpOwpAQCAtODY2LDcgKzQ5OSw3IEBAIGNsYXNzIG9wdGlvbmFsIDogcHJpdmF0ZSBv
cHRpb25hbF9pbnRlcm5hbDo6b3B0aW9uYWxfZGF0YTxUPiwKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+CiAgIGNvbnN0ZXhwciBUIHZhbHVlX29yKFUmJiB2KSBjb25zdCYgewogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8dmFsdWVfdHlwZT46OnZhbHVlLAotICAg
ICAgICAgICAgICAgICAgIm9wdGlvbmFsPFQ+Ojp2YWx1ZV9vcjogVCBtdXN0IGJ5IGNvcHkgY29u
c3RydWN0aWJsZSIpOworICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsPFQ+Ojp2YWx1ZV9vcjog
VCBtdXN0IGJlIGNvcHkgY29uc3RydWN0aWJsZSIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19jb252ZXJ0aWJsZTxVJiYsIHZhbHVlX3R5cGU+Ojp2YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICJvcHRpb25hbDxUPjo6dmFsdWVfb3I6IFUgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBUIik7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KCp0aGlzKQpAQCAtODc2LDcgKzUwOSw3IEBAIGNs
YXNzIG9wdGlvbmFsIDogcHJpdmF0ZSBvcHRpb25hbF9pbnRlcm5hbDo6b3B0aW9uYWxfZGF0YTxU
PiwKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CiAgIFQgdmFsdWVfb3IoVSYmIHYpICYmIHsgIC8v
IE5PTElOVChidWlsZC9jKysxMSkKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbW92ZV9jb25z
dHJ1Y3RpYmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25h
bDxUPjo6dmFsdWVfb3I6IFQgbXVzdCBieSBjb3B5IGNvbnN0cnVjdGlibGUiKTsKKyAgICAgICAg
ICAgICAgICAgICJvcHRpb25hbDxUPjo6dmFsdWVfb3I6IFQgbXVzdCBiZSBtb3ZlIGNvbnN0cnVj
dGlibGUiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29udmVydGlibGU8VSYmLCB2YWx1
ZV90eXBlPjo6dmFsdWUsCiAgICAgICAgICAgICAgICAgICAib3B0aW9uYWw8VD46OnZhbHVlX29y
OiBVIG11c3QgYmUgY29udmVydGlibGUgdG8gVCIpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPigqdGhpcykgPyBzdGQ6Om1vdmUoKip0aGlzKQpAQCAtOTA2LDEyICs1MzksMTAgQEAgY2xh
c3Mgb3B0aW9uYWwgOiBwcml2YXRlIG9wdGlvbmFsX2ludGVybmFsOjpvcHRpb25hbF9kYXRhPFQ+
LAogLy8KIC8vIFBlcmZvcm1zIGEgc3dhcCBiZXR3ZWVuIHR3byBgYWJzbDo6b3B0aW9uYWxgIG9i
amVjdHMsIHVzaW5nIHN0YW5kYXJkCiAvLyBzZW1hbnRpY3MuCi0vLwotLy8gTk9URTogd2UgYXNz
dW1lIGBpc19zd2FwcGFibGUoKWAgaXMgYWx3YXlzIGB0cnVlYC4gQSBjb21waWxlIGVycm9yIHdp
bGwKLS8vIHJlc3VsdCBpZiB0aGlzIGlzIG5vdCB0aGUgY2FzZS4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBULAotICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfbW92ZV9jb25z
dHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sPjo6dHlwZSA9IGZhbHNlPgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX21vdmVfY29uc3Ry
dWN0aWJsZTxUPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVf
dHJhaXRzX2ludGVybmFsOjpJc1N3YXBwYWJsZTxUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2w+Ojp0eXBlID0gZmFsc2U+CiB2b2lkIHN3YXAob3B0aW9uYWw8VD4mIGEs
IG9wdGlvbmFsPFQ+JiBiKSBub2V4Y2VwdChub2V4Y2VwdChhLnN3YXAoYikpKSB7CiAgIGEuc3dh
cChiKTsKIH0KQEAgLTExMzQsNyArNzY1LDYgQEAgc3RydWN0IGhhc2g8YWJzbDo6b3B0aW9uYWw8
VD4gPgogCiB9ICAvLyBuYW1lc3BhY2Ugc3RkCiAKLSN1bmRlZiBBQlNMX09QVElPTkFMX1VTRV9J
TkhFUklUSU5HX0NPTlNUUlVDVE9SUwogI3VuZGVmIEFCU0xfTVNWQ19DT05TVEVYUFJfQlVHX0lO
X1VOSU9OX0xJS0VfQ0xBU1MKIAogI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX09QVElPTkFMCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90eXBlcy9vcHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKaW5kZXggZDEx
N2VlNTE4NDkuLmFhZjhlYmNkOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF9l
eGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfZXhjZXB0
aW9uX3NhZmV0eV90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXMvb3B0aW9uYWxfdGVzdC5jYwppbmRleCBkOTBkYjlmODIxYi4uZTZhMzZlYjhlMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0
aW9uYWxfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtMTU3LDYgKzE1NywxNiBAQCBzdHJ1Y3QgTm9uTW92YWJsZSB7CiAgIE5vbk1vdmFibGUmIG9w
ZXJhdG9yPShOb25Nb3ZhYmxlJiYpID0gZGVsZXRlOwogfTsKIAorc3RydWN0IE5vRGVmYXVsdCB7
CisgIE5vRGVmYXVsdCgpID0gZGVsZXRlOworICBOb0RlZmF1bHQoY29uc3QgTm9EZWZhdWx0Jikg
e30KKyAgTm9EZWZhdWx0JiBvcGVyYXRvcj0oY29uc3QgTm9EZWZhdWx0JikgeyByZXR1cm4gKnRo
aXM7IH0KK307CisKK3N0cnVjdCBDb252ZXJ0c0Zyb21JblBsYWNlVCB7CisgIENvbnZlcnRzRnJv
bUluUGxhY2VUKGFic2w6OmluX3BsYWNlX3QpIHt9ICAvLyBOT0xJTlQKK307CisKIFRFU1Qob3B0
aW9uYWxUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBl
bXB0eTsKICAgRVhQRUNUX0ZBTFNFKGVtcHR5KTsKQEAgLTE2OSwxNSArMTc5LDcgQEAgVEVTVChv
cHRpb25hbFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgewogVEVTVChvcHRpb25hbFRlc3QsIG51
bGxvcHRDb25zdHJ1Y3RvcikgewogICBhYnNsOjpvcHRpb25hbDxpbnQ+IGVtcHR5KGFic2w6Om51
bGxvcHQpOwogICBFWFBFQ1RfRkFMU0UoZW1wdHkpOwotCi0jaWZkZWYgQUJTTF9IQVZFX1NURF9P
UFRJT05BTAogICBjb25zdGV4cHIgYWJzbDo6b3B0aW9uYWw8aW50PiBjZW1wdHl7YWJzbDo6bnVs
bG9wdH07Ci0jZWxzZQotICAvLyBDcmVhdGluZyBhIHRlbXBvcmFyeSBhYnNsOjpudWxsb3B0X3Qg
b2JqZWN0IGluc3RlYWQgb2YgdXNpbmcgYWJzbDo6bnVsbG9wdAotICAvLyBiZWNhdXNlIGFic2w6
Om51bGxvcHQgY2Fubm90IGJlIGNvbnN0ZXhwciBhbmQgaGF2ZSBleHRlcm5hbCBsaW5rYWdlIGF0
IHRoZQotICAvLyBzYW1lIHRpbWUuCi0gIGNvbnN0ZXhwciBhYnNsOjpvcHRpb25hbDxpbnQ+IGNl
bXB0eXthYnNsOjpudWxsb3B0X3QoYWJzbDo6bnVsbG9wdF90Ojppbml0KX07Ci0jZW5kaWYKICAg
c3RhdGljX2Fzc2VydCghY2VtcHR5Lmhhc192YWx1ZSgpLCAiIik7CiAgIEVYUEVDVF9UUlVFKChz
dGQ6OmlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxhYnNsOjpvcHRpb25hbDxpbnQ+LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bnVsbG9wdF90Pjo6
dmFsdWUpKTsKQEAgLTMzNywxNiArMzM5LDE4IEBAIFRFU1Qob3B0aW9uYWxUZXN0LCBJblBsYWNl
Q29uc3RydWN0b3IpIHsKICAgc3RhdGljX2Fzc2VydCgoKm9wdDIpLnggPT0gQ29uc3RleHByVHlw
ZTo6a0N0b3JJbml0aWFsaXplckxpc3QsICIiKTsKICNlbmRpZgogCi0gIC8vIFRPRE8oYWJzbC10
ZWFtKTogdW5jb21tZW50IHRoZXNlIHdoZW4gc3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIEFyZ3Mm
Ji4uLj4KLSAgLy8gU0ZJTkFFIGlzIGFkZGVkIHRvIG9wdGlvbmFsOjpvcHRpb25hbChhYnNsOjpp
bl9wbGFjZV90LCBBcmdzJiYuLi4pLgotICAvLyBzdHJ1Y3QgSSB7Ci0gIC8vICAgSShhYnNsOjpp
bl9wbGFjZV90KTsKLSAgLy8gfTsKKyAgRVhQRUNUX0ZBTFNFKChzdGQ6OmlzX2NvbnN0cnVjdGli
bGU8YWJzbDo6b3B0aW9uYWw8Q29udmVydHNGcm9tSW5QbGFjZVQ+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjppbl9wbGFjZV90Pjo6dmFsdWUpKTsKKyAgRVhQ
RUNUX0ZBTFNFKChzdGQ6OmlzX2NvbnN0cnVjdGlibGU8YWJzbDo6b3B0aW9uYWw8Q29udmVydHNG
cm9tSW5QbGFjZVQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBhYnNsOjppbl9wbGFjZV90Jj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgKHN0
ZDo6aXNfY29uc3RydWN0aWJsZTxhYnNsOjpvcHRpb25hbDxDb252ZXJ0c0Zyb21JblBsYWNlVD4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OmluX3BsYWNlX3QsIGFic2w6Omlu
X3BsYWNlX3Q+Ojp2YWx1ZSkpOwogCi0gIC8vIEVYUEVDVF9GQUxTRSgoc3RkOjppc19jb25zdHJ1
Y3RpYmxlPGFic2w6Om9wdGlvbmFsPEk+LAotICAvLyBhYnNsOjppbl9wbGFjZV90Pjo6dmFsdWUp
KTsKLSAgLy8gRVhQRUNUX0ZBTFNFKChzdGQ6OmlzX2NvbnN0cnVjdGlibGU8YWJzbDo6b3B0aW9u
YWw8ST4sIGNvbnN0Ci0gIC8vIGFic2w6OmluX3BsYWNlX3QmPjo6dmFsdWUpKTsKKyAgRVhQRUNU
X0ZBTFNFKChzdGQ6OmlzX2NvbnN0cnVjdGlibGU8YWJzbDo6b3B0aW9uYWw8Tm9EZWZhdWx0PiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6aW5fcGxhY2VfdD46
OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoc3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6Om9w
dGlvbmFsPE5vRGVmYXVsdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFic2w6OmluX3BsYWNlX3QmJj46OnZhbHVlKSk7CiB9CiAKIC8vIHRlbXBsYXRlPFU9VD4gb3B0
aW9uYWwoVSYmKTsKQEAgLTEwNDIsOSArMTA0Niw5IEBAIFRFU1Qob3B0aW9uYWxUZXN0LCBWYWx1
ZSkgewogICAvLyB0ZXN0IGV4Y2VwdGlvbiB0aHJvdyBvbiB2YWx1ZSgpCiAgIGFic2w6Om9wdGlv
bmFsPGludD4gZW1wdHk7CiAjaWZkZWYgQUJTTF9IQVZFX0VYQ0VQVElPTlMKLSAgRVhQRUNUX1RI
Uk9XKGVtcHR5LnZhbHVlKCksIGFic2w6OmJhZF9vcHRpb25hbF9hY2Nlc3MpOworICBFWFBFQ1Rf
VEhST1coKHZvaWQpZW1wdHkudmFsdWUoKSwgYWJzbDo6YmFkX29wdGlvbmFsX2FjY2Vzcyk7CiAj
ZWxzZQotICBFWFBFQ1RfREVBVEgoZW1wdHkudmFsdWUoKSwgIkJhZCBvcHRpb25hbCBhY2Nlc3Mi
KTsKKyAgRVhQRUNUX0RFQVRIKCh2b2lkKWVtcHR5LnZhbHVlKCksICJCYWQgb3B0aW9uYWwgYWNj
ZXNzIik7CiAjZW5kaWYKIAogICAvLyB0ZXN0IGNvbnN0ZXhwciB2YWx1ZSgpCkBAIC0xNDc2LDgg
KzE0ODAsOCBAQCBURVNUKG9wdGlvbmFsVGVzdCwgTW92ZUFzc2lnblJlZ3Jlc3Npb24pIHsKIAog
VEVTVChvcHRpb25hbFRlc3QsIFZhbHVlVHlwZSkgewogICBFWFBFQ1RfVFJVRSgoc3RkOjppc19z
YW1lPGFic2w6Om9wdGlvbmFsPGludD46OnZhbHVlX3R5cGUsIGludD46OnZhbHVlKSk7Ci0gIEVY
UEVDVF9UUlVFKAotICAgICAgKHN0ZDo6aXNfc2FtZTxhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmlu
Zz46OnZhbHVlX3R5cGUsIHN0ZDo6c3RyaW5nPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKHN0
ZDo6aXNfc2FtZTxhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz46OnZhbHVlX3R5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc+Ojp2YWx1ZSkpOwogICBFWFBFQ1Rf
RkFMU0UoCiAgICAgICAoc3RkOjppc19zYW1lPGFic2w6Om9wdGlvbmFsPGludD46OnZhbHVlX3R5
cGUsIGFic2w6Om51bGxvcHRfdD46OnZhbHVlKSk7CiB9CkBAIC0xNTA0LDE4ICsxNTA4LDE5IEBA
IFRFU1Qob3B0aW9uYWxUZXN0LCBIYXNoKSB7CiAKICAgc3RhdGljX2Fzc2VydChpc19oYXNoX2Vu
YWJsZWRfZm9yPGFic2w6Om9wdGlvbmFsPGludD4+Ojp2YWx1ZSwgIiIpOwogICBzdGF0aWNfYXNz
ZXJ0KGlzX2hhc2hfZW5hYmxlZF9mb3I8YWJzbDo6b3B0aW9uYWw8SGFzaGFibGU+Pjo6dmFsdWUs
ICIiKTsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFs
OjpJc0hhc2hhYmxlPGFic2w6Om9wdGlvbmFsPGludD4+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNf
YXNzZXJ0KAorICAgICAgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaGFibGU8YWJz
bDo6b3B0aW9uYWw8SGFzaGFibGU+Pjo6dmFsdWUsCisgICAgICAiIik7CisgIGFic2w6OnR5cGVf
dHJhaXRzX2ludGVybmFsOjpBc3NlcnRIYXNoRW5hYmxlZDxhYnNsOjpvcHRpb25hbDxpbnQ+Pigp
OworICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6QXNzZXJ0SGFzaEVuYWJsZWQ8YWJzbDo6
b3B0aW9uYWw8SGFzaGFibGU+PigpOwogCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgKGRlZmlu
ZWQoX0xJQkNQUF9WRVJTSU9OKSAmJiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9MSUJD
UFBfVkVSU0lPTiA8IDQwMDAgJiYgX0xJQkNQUF9TVERfVkVSID4gMTEpCi0gIC8vIEZvciBNU1ZD
IGFuZCBsaWJjKysgKDwgNC4wIGFuZCBjKysxNCksIHN0ZDo6aGFzaCBwcmltYXJ5IHRlbXBsYXRl
IGhhcyBhCi0gIC8vIHN0YXRpY19hc3NlcnQgdG8gY2F0Y2ggYW55IHVzZXItZGVmaW5lZCB0eXBl
IHRoYXQgZG9lc24ndCBwcm92aWRlIGEgaGFzaAotICAvLyBzcGVjaWFsaXphdGlvbi4gU28gaW5z
dGFudGlhdGluZyBzdGQ6Omhhc2g8YWJzbDo6b3B0aW9uYWw8VD4+IHdpbGwgcmVzdWx0Ci0gIC8v
IGluIGEgaGFyZCBlcnJvciB3aGljaCBpcyBub3QgU0ZJTkFFIGZyaWVuZGx5LgotI2RlZmluZSBB
QlNMX1NURF9IQVNIX05PVF9TRklOQUVfRlJJRU5ETFkgMQotI2VuZGlmCi0KLSNpZm5kZWYgQUJT
TF9TVERfSEFTSF9OT1RfU0ZJTkFFX0ZSSUVORExZCisjaWYgQUJTTF9NRVRBX0lOVEVSTkFMX1NU
RF9IQVNIX1NGSU5BRV9GUklFTkRMWV8KICAgc3RhdGljX2Fzc2VydCghaXNfaGFzaF9lbmFibGVk
X2ZvcjxhYnNsOjpvcHRpb25hbDxOb25IYXNoYWJsZT4+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNf
YXNzZXJ0KCFhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoYWJsZTwKKyAgICAgICAg
ICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8Tm9uSGFzaGFibGU+Pjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgIiIpOwogI2VuZGlmCiAKICAgLy8gbGlic3RkYysrIHN0ZDo6b3B0aW9uYWwgaXMg
bWlzc2luZyByZW1vdmVfY29uc3RfdCwgaS5lLiBpdCdzIHVzaW5nCkBAIC0xNjIzLDQgKzE2Mjgs
MjkgQEAgVEVTVChvcHRpb25hbFRlc3QsIEFzc2lnbm1lbnRDb25zdHJhaW50cykgewogICBFWFBF
Q1RfVFJVRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8QW55TGlrZT4+
Ojp2YWx1ZSk7CiB9CiAKKyNpZiAhZGVmaW5lZChfX0VNU0NSSVBURU5fXykKK3N0cnVjdCBOZXN0
ZWRDbGFzc0J1ZyB7CisgIHN0cnVjdCBJbm5lciB7CisgICAgYm9vbCBkdW1teSA9IGZhbHNlOwor
ICB9OworICBhYnNsOjpvcHRpb25hbDxJbm5lcj4gdmFsdWU7Cit9OworCitURVNUKG9wdGlvbmFs
VGVzdCwgSW5QbGFjZVRTRklOQUVCdWcpIHsKKyAgTmVzdGVkQ2xhc3NCdWcgYjsKKyAgKCh2b2lk
KWIpOworICB1c2luZyBJbm5lciA9IE5lc3RlZENsYXNzQnVnOjpJbm5lcjsKKworICBFWFBFQ1Rf
VFJVRSgoc3RkOjppc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8SW5uZXI+Ojp2YWx1ZSkpOworICBF
WFBFQ1RfVFJVRSgoc3RkOjppc19jb25zdHJ1Y3RpYmxlPElubmVyPjo6dmFsdWUpKTsKKyAgRVhQ
RUNUX1RSVUUoCisgICAgICAoc3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6Om9wdGlvbmFsPElu
bmVyPiwgYWJzbDo6aW5fcGxhY2VfdD46OnZhbHVlKSk7CisKKyAgYWJzbDo6b3B0aW9uYWw8SW5u
ZXI+IG8oYWJzbDo6aW5fcGxhY2UpOworICBFWFBFQ1RfVFJVRShvLmhhc192YWx1ZSgpKTsKKyAg
by5lbXBsYWNlKCk7CisgIEVYUEVDVF9UUlVFKG8uaGFzX3ZhbHVlKCkpOworfQorI2VuZGlmICAv
LyAhZGVmaW5lZChfX0VNU0NSSVBURU5fXykKKwogfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90eXBlcy9zcGFuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuLmgKaW5kZXggOTExYWYwYzU3
YTYuLmIwMDdmYzFmZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXMvc3Bhbi5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CkBAIC02MCwxMTUgKzYwLDE4IEBACiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxpbml0
aWFsaXplcl9saXN0PgogI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPHN0cmluZz4KICNp
bmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaW5jbHVkZSAiYWJz
bC9hbGdvcml0aG0vYWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Ro
cm93X2RlbGVnYXRlLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgogI2luY2x1ZGUg
ImFic2wvYmFzZS9vcHRpbWl6YXRpb24uaCIKLSNpbmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIgor
I2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiICAgIC8vIFRPRE8oc3RyZWwpOiByZW1vdmUgdGhp
cyBpbmNsdWRlCiAjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAi
YWJzbC90eXBlcy9pbnRlcm5hbC9zcGFuLmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBTcGFuOwotCi1uYW1lc3BhY2Ugc3Bhbl9pbnRlcm5hbCB7
Ci0vLyBBIGNvbnN0ZXhwciBtaW4gZnVuY3Rpb24KLWNvbnN0ZXhwciBzaXplX3QgTWluKHNpemVf
dCBhLCBzaXplX3QgYikgbm9leGNlcHQgeyByZXR1cm4gYSA8IGIgPyBhIDogYjsgfQotCi0vLyBX
cmFwcGVycyBmb3IgYWNjZXNzIHRvIGNvbnRhaW5lciBkYXRhIHBvaW50ZXJzLgotdGVtcGxhdGUg
PHR5cGVuYW1lIEM+Ci1jb25zdGV4cHIgYXV0byBHZXREYXRhSW1wbChDJiBjLCBjaGFyKSBub2V4
Y2VwdCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKLSAgICAtPiBkZWNsdHlwZShjLmRh
dGEoKSkgewotICByZXR1cm4gYy5kYXRhKCk7Ci19Ci0KLS8vIEJlZm9yZSBDKysxNywgc3RyaW5n
OjpkYXRhIHJldHVybnMgYSBjb25zdCBjaGFyKiBpbiBhbGwgY2FzZXMuCi1pbmxpbmUgY2hhciog
R2V0RGF0YUltcGwoc3RkOjpzdHJpbmcmIHMsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2Vz
KQotICAgICAgICAgICAgICAgICAgICAgICAgIGludCkgbm9leGNlcHQgewotICByZXR1cm4gJnNb
MF07Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDPgotY29uc3RleHByIGF1dG8gR2V0RGF0YShD
JiBjKSBub2V4Y2VwdCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKLSAgICAtPiBkZWNs
dHlwZShHZXREYXRhSW1wbChjLCAwKSkgewotICByZXR1cm4gR2V0RGF0YUltcGwoYywgMCk7Ci19
Ci0KLS8vIERldGVjdGlvbiBpZGlvbXMgZm9yIHNpemUoKSBhbmQgZGF0YSgpLgotdGVtcGxhdGUg
PHR5cGVuYW1lIEM+Ci11c2luZyBIYXNTaXplID0KLSAgICBzdGQ6OmlzX2ludGVncmFsPGFic2w6
OmRlY2F5X3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEMmPigpLnNpemUoKSk+PjsKLQotLy8gV2Ug
d2FudCB0byBlbmFibGUgY29udmVyc2lvbiBmcm9tIHZlY3RvcjxUKj4gdG8gU3Bhbjxjb25zdCBU
KiBjb25zdD4gYnV0Ci0vLyBkaXNhYmxlIGNvbnZlcnNpb24gZnJvbSB2ZWN0b3I8RGVyaXZlZD4g
dG8gU3BhbjxCYXNlPi4gSGVyZSB3ZSB1c2UKLS8vIHRoZSBmYWN0IHRoYXQgVSoqIGlzIGNvbnZl
cnRpYmxlIHRvIFEqIGNvbnN0KiBpZiBhbmQgb25seSBpZiBRIGlzIHRoZSBzYW1lCi0vLyB0eXBl
IG9yIGEgbW9yZSBjdi1xdWFsaWZpZWQgdmVyc2lvbiBvZiBVLiAgV2UgYWxzbyBkZWNheSB0aGUg
cmVzdWx0IHR5cGUgb2YKLS8vIGRhdGEoKSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIGNsYXNzZXMg
d2hpY2ggaGF2ZSBhIG1lbWJlciBmdW5jdGlvbiBkYXRhKCkKLS8vIHdoaWNoIHJldHVybnMgYSBy
ZWZlcmVuY2UuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4KLXVzaW5nIEhhc0Rh
dGEgPQotICAgIHN0ZDo6aXNfY29udmVydGlibGU8YWJzbDo6ZGVjYXlfdDxkZWNsdHlwZShHZXRE
YXRhKHN0ZDo6ZGVjbHZhbDxDJj4oKSkpPiosCi0gICAgICAgICAgICAgICAgICAgICAgICBUKiBj
b25zdCo+OwotCi0vLyBFeHRyYWN0cyB2YWx1ZSB0eXBlIGZyb20gYSBDb250YWluZXIKLXRlbXBs
YXRlIDx0eXBlbmFtZSBDPgotc3RydWN0IEVsZW1lbnRUeXBlIHsKLSAgdXNpbmcgdHlwZSA9IHR5
cGVuYW1lIGFic2w6OnJlbW92ZV9yZWZlcmVuY2VfdDxDPjo6dmFsdWVfdHlwZTsKLX07Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KLXN0cnVjdCBFbGVtZW50VHlwZTxUICgmKVtO
XT4gewotICB1c2luZyB0eXBlID0gVDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDPgotdXNp
bmcgRWxlbWVudFQgPSB0eXBlbmFtZSBFbGVtZW50VHlwZTxDPjo6dHlwZTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci11c2luZyBFbmFibGVJZk11dGFibGUgPQotICAgIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCFzdGQ6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwgaW50Pjo6dHlwZTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1ib29sIEVxdWFsSW1wbChTcGFuPFQ+IGEsIFNwYW48VD4gYikgewot
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29uc3Q8VD46OnZhbHVlLCAiIik7Ci0gIHJldHVybiBh
YnNsOjplcXVhbChhLmJlZ2luKCksIGEuZW5kKCksIGIuYmVnaW4oKSwgYi5lbmQoKSk7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBMZXNzVGhhbkltcGwoU3BhbjxUPiBhLCBTcGFu
PFQ+IGIpIHsKLSAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwgIiIpOwot
ICByZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZShhLmJlZ2luKCksIGEuZW5kKCks
IGIuYmVnaW4oKSwgYi5lbmQoKSk7Ci19Ci0KLS8vIFRoZSBgSXNDb252ZXJ0aWJsZWAgY2xhc3Nl
cyBoZXJlIGFyZSBuZWVkZWQgYmVjYXVzZSBvZiB0aGUKLS8vIGBzdGQ6OmlzX2NvbnZlcnRpYmxl
YCBidWcgaW4gbGliY3h4IHdoZW4gY29tcGlsZWQgd2l0aCBHQ0MuIFRoaXMgYnVpbGQKLS8vIGNv
bmZpZ3VyYXRpb24gaXMgdXNlZCBieSBBbmRyb2lkIE5ESyB0b29sY2hhaW4uIFJlZmVyZW5jZSBs
aW5rOgotLy8gaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzUzOC4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBJc0NvbnZlcnRpYmxl
SGVscGVyIHsKLSBwcml2YXRlOgotICBzdGF0aWMgc3RkOjp0cnVlX3R5cGUgdGVzdHZhbChUbyk7
Ci0gIHN0YXRpYyBzdGQ6OmZhbHNlX3R5cGUgdGVzdHZhbCguLi4pOwotCi0gcHVibGljOgotICB1
c2luZyB0eXBlID0gZGVjbHR5cGUodGVzdHZhbChzdGQ6OmRlY2x2YWw8RnJvbT4oKSkpOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IElzQ29udmVy
dGlibGUgOiBJc0NvbnZlcnRpYmxlSGVscGVyPEZyb20sIFRvPjo6dHlwZSB7fTsKLQotLy8gVE9E
Tyh6aGFuZ3h5KTogcmVwbGFjZSBgSXNDb252ZXJ0aWJsZWAgd2l0aCBgc3RkOjppc19jb252ZXJ0
aWJsZWAgb25jZSB0aGUKLS8vIG9sZGVyIHZlcnNpb24gb2YgbGliY3h4IGlzIG5vdCBzdXBwb3J0
ZWQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci11c2luZyBFbmFibGVJ
ZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3QgPQotICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElz
Q29udmVydGlibGU8RnJvbSwgU3Bhbjxjb25zdCBUbz4+Ojp2YWx1ZT46OnR5cGU7Ci19ICAvLyBu
YW1lc3BhY2Ugc3Bhbl9pbnRlcm5hbAotCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gU3Bh
bgogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ4NSw2ICszODgsNDAgQEAgY2xhc3MgU3Bh
biB7CiAgICAgICAgICAgICAgICA6IChiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2Uo
InBvcyA+IHNpemUoKSIpLCBTcGFuKCkpOwogICB9CiAKKyAgLy8gU3Bhbjo6Zmlyc3QoKQorICAv
LworICAvLyBSZXR1cm5zIGEgYFNwYW5gIGNvbnRhaW5pbmcgZmlyc3QgYGxlbmAgZWxlbWVudHMu
IFBhcmFtZXRlciBgbGVuYCBpcyBvZgorICAvLyB0eXBlIGBzaXplX3R5cGVgIGFuZCB0aHVzIG5v
bi1uZWdhdGl2ZS4gYGxlbmAgdmFsdWUgbXVzdCBiZSA8PSBzaXplKCkuCisgIC8vCisgIC8vIEV4
YW1wbGVzOgorICAvLworICAvLyAgIHN0ZDo6dmVjdG9yPGludD4gdmVjID0gezEwLCAxMSwgMTIs
IDEzfTsKKyAgLy8gICBhYnNsOjpNYWtlU3Bhbih2ZWMpLmZpcnN0KDEpOyAgLy8gezEwfQorICAv
LyAgIGFic2w6Ok1ha2VTcGFuKHZlYykuZmlyc3QoMyk7ICAvLyB7MTAsIDExLCAxMn0KKyAgLy8g
ICBhYnNsOjpNYWtlU3Bhbih2ZWMpLmZpcnN0KDUpOyAgLy8gdGhyb3dzIHN0ZDo6b3V0X29mX3Jh
bmdlCisgIGNvbnN0ZXhwciBTcGFuIGZpcnN0KHNpemVfdHlwZSBsZW4pIGNvbnN0IHsKKyAgICBy
ZXR1cm4gKGxlbiA8PSBzaXplKCkpCisgICAgICAgICAgICAgICA/IFNwYW4oZGF0YSgpLCBsZW4p
CisgICAgICAgICAgICAgICA6IChiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoImxl
biA+IHNpemUoKSIpLCBTcGFuKCkpOworICB9CisKKyAgLy8gU3Bhbjo6bGFzdCgpCisgIC8vCisg
IC8vIFJldHVybnMgYSBgU3BhbmAgY29udGFpbmluZyBsYXN0IGBsZW5gIGVsZW1lbnRzLiBQYXJh
bWV0ZXIgYGxlbmAgaXMgb2YKKyAgLy8gdHlwZSBgc2l6ZV90eXBlYCBhbmQgdGh1cyBub24tbmVn
YXRpdmUuIGBsZW5gIHZhbHVlIG11c3QgYmUgPD0gc2l6ZSgpLgorICAvLworICAvLyBFeGFtcGxl
czoKKyAgLy8KKyAgLy8gICBzdGQ6OnZlY3RvcjxpbnQ+IHZlYyA9IHsxMCwgMTEsIDEyLCAxM307
CisgIC8vICAgYWJzbDo6TWFrZVNwYW4odmVjKS5sYXN0KDEpOyAgLy8gezEzfQorICAvLyAgIGFi
c2w6Ok1ha2VTcGFuKHZlYykubGFzdCgzKTsgIC8vIHsxMSwgMTIsIDEzfQorICAvLyAgIGFic2w6
Ok1ha2VTcGFuKHZlYykubGFzdCg1KTsgIC8vIHRocm93cyBzdGQ6Om91dF9vZl9yYW5nZQorICBj
b25zdGV4cHIgU3BhbiBsYXN0KHNpemVfdHlwZSBsZW4pIGNvbnN0IHsKKyAgICByZXR1cm4gKGxl
biA8PSBzaXplKCkpCisgICAgICAgICAgICAgICA/IFNwYW4oc2l6ZSgpIC0gbGVuICsgZGF0YSgp
LCBsZW4pCisgICAgICAgICAgICAgICA6IChiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFu
Z2UoImxlbiA+IHNpemUoKSIpLCBTcGFuKCkpOworICB9CisKICAgLy8gU3VwcG9ydCBmb3IgYWJz
bDo6SGFzaC4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CiAgIGZyaWVuZCBIIEFic2xIYXNoVmFs
dWUoSCBoLCBTcGFuIHYpIHsKQEAgLTUxNywyNSArNDU0LDI3IEBAIGNvbnN0IHR5cGVuYW1lIFNw
YW48VD46OnNpemVfdHlwZSBTcGFuPFQ+OjpucG9zOwogLy8gb3BlcmF0b3I9PQogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBib29sIG9wZXJhdG9yPT0oU3BhbjxUPiBhLCBTcGFuPFQ+IGIpIHsKLSAg
cmV0dXJuIHNwYW5faW50ZXJuYWw6OkVxdWFsSW1wbDxjb25zdCBUPihhLCBiKTsKKyAgcmV0dXJu
IHNwYW5faW50ZXJuYWw6OkVxdWFsSW1wbDxTcGFuLCBjb25zdCBUPihhLCBiKTsKIH0KIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogYm9vbCBvcGVyYXRvcj09KFNwYW48Y29uc3QgVD4gYSwgU3BhbjxU
PiBiKSB7Ci0gIHJldHVybiBzcGFuX2ludGVybmFsOjpFcXVhbEltcGw8Y29uc3QgVD4oYSwgYik7
CisgIHJldHVybiBzcGFuX2ludGVybmFsOjpFcXVhbEltcGw8U3BhbiwgY29uc3QgVD4oYSwgYik7
CiB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGJvb2wgb3BlcmF0b3I9PShTcGFuPFQ+IGEsIFNw
YW48Y29uc3QgVD4gYikgewotICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6RXF1YWxJbXBsPGNvbnN0
IFQ+KGEsIGIpOworICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6RXF1YWxJbXBsPFNwYW4sIGNvbnN0
IFQ+KGEsIGIpOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAgICAg
ICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFuQ29u
c3Q8VSwgVD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAgICB0
eXBlbmFtZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNsOjpT
cGFuPGNvbnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVJiBhLCBTcGFuPFQ+IGIpIHsK
LSAgcmV0dXJuIHNwYW5faW50ZXJuYWw6OkVxdWFsSW1wbDxjb25zdCBUPihhLCBiKTsKKyAgcmV0
dXJuIHNwYW5faW50ZXJuYWw6OkVxdWFsSW1wbDxTcGFuLCBjb25zdCBUPihhLCBiKTsKIH0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAotICAgICAgICAgIHR5cGVuYW1lID0gc3Bh
bl9pbnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvU3BhbkNvbnN0PFUsIFQ+PgordGVtcGxh
dGUgPAorICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCisgICAgdHlwZW5hbWUgPSBzcGFuX2lu
dGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG88VSwgYWJzbDo6U3Bhbjxjb25zdCBUPj4+CiBi
b29sIG9wZXJhdG9yPT0oU3BhbjxUPiBhLCBjb25zdCBVJiBiKSB7Ci0gIHJldHVybiBzcGFuX2lu
dGVybmFsOjpFcXVhbEltcGw8Y29uc3QgVD4oYSwgYik7CisgIHJldHVybiBzcGFuX2ludGVybmFs
OjpFcXVhbEltcGw8U3BhbiwgY29uc3QgVD4oYSwgYik7CiB9CiAKIC8vIG9wZXJhdG9yIT0KQEAg
LTU1MSwxMyArNDkwLDE1IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogYm9vbCBvcGVyYXRvciE9
KFNwYW48VD4gYSwgU3Bhbjxjb25zdCBUPiBiKSB7CiAgIHJldHVybiAhKGEgPT0gYik7CiB9Ci10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKLSAgICAgICAgICB0eXBlbmFtZSA9IHNw
YW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUb1NwYW5Db25zdDxVLCBUPj4KK3RlbXBs
YXRlIDwKKyAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIHR5cGVuYW1lID0gc3Bhbl9p
bnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvPFUsIGFic2w6OlNwYW48Y29uc3QgVD4+Pgog
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFUmIGEsIFNwYW48VD4gYikgewogICByZXR1cm4gIShhID09
IGIpOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAgICAgICAgdHlw
ZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3Q8VSwg
VD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAgICB0eXBlbmFt
ZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNsOjpTcGFuPGNv
bnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3IhPShTcGFuPFQ+IGEsIGNvbnN0IFUmIGIpIHsKICAgcmV0
dXJuICEoYSA9PSBiKTsKIH0KQEAgLTU2NSwyNSArNTA2LDI3IEBAIGJvb2wgb3BlcmF0b3IhPShT
cGFuPFQ+IGEsIGNvbnN0IFUmIGIpIHsKIC8vIG9wZXJhdG9yPAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiBib29sIG9wZXJhdG9yPChTcGFuPFQ+IGEsIFNwYW48VD4gYikgewotICByZXR1cm4gc3Bh
bl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPGNvbnN0IFQ+KGEsIGIpOworICByZXR1cm4gc3Bhbl9p
bnRlcm5hbDo6TGVzc1RoYW5JbXBsPFNwYW4sIGNvbnN0IFQ+KGEsIGIpOwogfQogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBib29sIG9wZXJhdG9yPChTcGFuPGNvbnN0IFQ+IGEsIFNwYW48VD4gYikg
ewotICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPGNvbnN0IFQ+KGEsIGIpOwor
ICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPFNwYW4sIGNvbnN0IFQ+KGEsIGIp
OwogfQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBib29sIG9wZXJhdG9yPChTcGFuPFQ+IGEsIFNw
YW48Y29uc3QgVD4gYikgewotICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPGNv
bnN0IFQ+KGEsIGIpOworICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPFNwYW4s
IGNvbnN0IFQ+KGEsIGIpOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0g
ICAgICAgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9T
cGFuQ29uc3Q8VSwgVD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwK
KyAgICB0eXBlbmFtZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBh
YnNsOjpTcGFuPGNvbnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFUmIGEsIFNwYW48VD4g
YikgewotICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPGNvbnN0IFQ+KGEsIGIp
OworICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPFNwYW4sIGNvbnN0IFQ+KGEs
IGIpOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAgICAgICAgdHlw
ZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3Q8VSwg
VD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAgICB0eXBlbmFt
ZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNsOjpTcGFuPGNv
bnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3I8KFNwYW48VD4gYSwgY29uc3QgVSYgYikgewotICByZXR1
cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPGNvbnN0IFQ+KGEsIGIpOworICByZXR1cm4g
c3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPFNwYW4sIGNvbnN0IFQ+KGEsIGIpOwogfQogCiAv
LyBvcGVyYXRvcj4KQEAgLTU5OSwxMyArNTQyLDE1IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
Ym9vbCBvcGVyYXRvcj4oU3BhbjxUPiBhLCBTcGFuPGNvbnN0IFQ+IGIpIHsKICAgcmV0dXJuIGIg
PCBhOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAgICAgICAgdHlw
ZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3Q8VSwg
VD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAgICB0eXBlbmFt
ZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNsOjpTcGFuPGNv
bnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFUmIGEsIFNwYW48VD4gYikgewogICByZXR1
cm4gYiA8IGE7CiB9Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKLSAgICAgICAg
ICB0eXBlbmFtZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUb1NwYW5Db25z
dDxVLCBUPj4KK3RlbXBsYXRlIDwKKyAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIHR5
cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvPFUsIGFic2w6OlNw
YW48Y29uc3QgVD4+PgogYm9vbCBvcGVyYXRvcj4oU3BhbjxUPiBhLCBjb25zdCBVJiBiKSB7CiAg
IHJldHVybiBiIDwgYTsKIH0KQEAgLTYyMywxMyArNTY4LDE1IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogYm9vbCBvcGVyYXRvcjw9KFNwYW48VD4gYSwgU3Bhbjxjb25zdCBUPiBiKSB7CiAgIHJl
dHVybiAhKGIgPCBhKTsKIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAotICAg
ICAgICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvU3Bh
bkNvbnN0PFUsIFQ+PgordGVtcGxhdGUgPAorICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCisg
ICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG88VSwgYWJz
bDo6U3Bhbjxjb25zdCBUPj4+CiBib29sIG9wZXJhdG9yPD0oY29uc3QgVSYgYSwgU3BhbjxUPiBi
KSB7CiAgIHJldHVybiAhKGIgPCBhKTsKIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLAotICAgICAgICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0
aWJsZVRvU3BhbkNvbnN0PFUsIFQ+PgordGVtcGxhdGUgPAorICAgIHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsCisgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxl
VG88VSwgYWJzbDo6U3Bhbjxjb25zdCBUPj4+CiBib29sIG9wZXJhdG9yPD0oU3BhbjxUPiBhLCBj
b25zdCBVJiBiKSB7CiAgIHJldHVybiAhKGIgPCBhKTsKIH0KQEAgLTY0NywxMyArNTk0LDE1IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogYm9vbCBvcGVyYXRvcj49KFNwYW48VD4gYSwgU3Bhbjxj
b25zdCBUPiBiKSB7CiAgIHJldHVybiAhKGEgPCBiKTsKIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLAotICAgICAgICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6RW5hYmxl
SWZDb252ZXJ0aWJsZVRvU3BhbkNvbnN0PFUsIFQ+PgordGVtcGxhdGUgPAorICAgIHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsCisgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNv
bnZlcnRpYmxlVG88VSwgYWJzbDo6U3Bhbjxjb25zdCBUPj4+CiBib29sIG9wZXJhdG9yPj0oY29u
c3QgVSYgYSwgU3BhbjxUPiBiKSB7CiAgIHJldHVybiAhKGEgPCBiKTsKIH0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLAotICAgICAgICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5h
bDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvU3BhbkNvbnN0PFUsIFQ+PgordGVtcGxhdGUgPAorICAg
IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCisgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpF
bmFibGVJZkNvbnZlcnRpYmxlVG88VSwgYWJzbDo6U3Bhbjxjb25zdCBUPj4+CiBib29sIG9wZXJh
dG9yPj0oU3BhbjxUPiBhLCBjb25zdCBVJiBiKSB7CiAgIHJldHVybiAhKGEgPCBiKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW5fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW5fdGVz
dC5jYwppbmRleCBiZDczOWZmMmEwNy4uOTI2OWY5MTFmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzL3NwYW5fdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuX3Rlc3QuY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEzOSw4ICsxMzksMTAgQEAgVEVT
VChDaGFyU3BhbiwgU3RyaW5nQ3RvcikgewogICBFWFBFQ1RfVEhBVChzX2NvbnN0X2FiYywgU3Bh
bklzKGFiYykpOwogCiAgIEVYUEVDVF9GQUxTRSgoc3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6
OlNwYW48aW50Piwgc3RkOjpzdHJpbmc+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRkFMU0UoKHN0ZDo6
aXNfY29uc3RydWN0aWJsZTxhYnNsOjpTcGFuPGNvbnN0IGludD4sIHN0ZDo6c3RyaW5nPjo6dmFs
dWUpKTsKLSAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfY29udmVydGlibGU8c3RkOjpzdHJpbmcsIGFi
c2w6OlNwYW48Y29uc3QgY2hhcj4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAo
c3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6OlNwYW48Y29uc3QgaW50Piwgc3RkOjpzdHJpbmc+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxlPHN0
ZDo6c3RyaW5nLCBhYnNsOjpTcGFuPGNvbnN0IGNoYXI+Pjo6dmFsdWUpKTsKIH0KIAogVEVTVChJ
bnRTcGFuLCBGcm9tQ29uc3RQb2ludGVyKSB7CkBAIC0yOTMsNiArMjk1LDM4IEBAIFRFU1QoSW50
U3BhbiwgU3Vic3BhbikgewogI2VuZGlmCiB9CiAKK1RFU1QoSW50U3BhbiwgRmlyc3QpIHsKKyAg
c3RkOjp2ZWN0b3I8aW50PiBlbXB0eTsKKyAgRVhQRUNUX1RIQVQoYWJzbDo6TWFrZVNwYW4oZW1w
dHkpLmZpcnN0KDApLCBTcGFuSXMoZW1wdHkpKTsKKworICBhdXRvIHJhbXAgPSBNYWtlUmFtcCgx
MCk7CisgIEVYUEVDVF9USEFUKGFic2w6Ok1ha2VTcGFuKHJhbXApLmZpcnN0KDApLCBTcGFuSXMo
cmFtcC5kYXRhKCksIDApKTsKKyAgRVhQRUNUX1RIQVQoYWJzbDo6TWFrZVNwYW4ocmFtcCkuZmly
c3QoMTApLCBTcGFuSXMocmFtcCkpOworICBFWFBFQ1RfVEhBVChhYnNsOjpNYWtlU3BhbihyYW1w
KS5maXJzdCgzKSwgU3BhbklzKHJhbXAuZGF0YSgpLCAzKSk7CisKKyNpZmRlZiBBQlNMX0hBVkVf
RVhDRVBUSU9OUworICBFWFBFQ1RfVEhST1coYWJzbDo6TWFrZVNwYW4ocmFtcCkuZmlyc3QoMTEp
LCBzdGQ6Om91dF9vZl9yYW5nZSk7CisjZWxzZQorICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KGFic2w6Ok1ha2VTcGFuKHJhbXApLmZpcnN0KDExKSwgIiIpOworI2VuZGlmCit9CisKK1RFU1Qo
SW50U3BhbiwgTGFzdCkgeworICBzdGQ6OnZlY3RvcjxpbnQ+IGVtcHR5OworICBFWFBFQ1RfVEhB
VChhYnNsOjpNYWtlU3BhbihlbXB0eSkubGFzdCgwKSwgU3BhbklzKGVtcHR5KSk7CisKKyAgYXV0
byByYW1wID0gTWFrZVJhbXAoMTApOworICBFWFBFQ1RfVEhBVChhYnNsOjpNYWtlU3BhbihyYW1w
KS5sYXN0KDApLCBTcGFuSXMocmFtcC5kYXRhKCkgKyAxMCwgMCkpOworICBFWFBFQ1RfVEhBVChh
YnNsOjpNYWtlU3BhbihyYW1wKS5sYXN0KDEwKSwgU3BhbklzKHJhbXApKTsKKyAgRVhQRUNUX1RI
QVQoYWJzbDo6TWFrZVNwYW4ocmFtcCkubGFzdCgzKSwgU3BhbklzKHJhbXAuZGF0YSgpICsgNywg
MykpOworCisjaWZkZWYgQUJTTF9IQVZFX0VYQ0VQVElPTlMKKyAgRVhQRUNUX1RIUk9XKGFic2w6
Ok1ha2VTcGFuKHJhbXApLmxhc3QoMTEpLCBzdGQ6Om91dF9vZl9yYW5nZSk7CisjZWxzZQorICBF
WFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGFic2w6Ok1ha2VTcGFuKHJhbXApLmxhc3QoMTEpLCAi
Iik7CisjZW5kaWYKK30KKwogVEVTVChJbnRTcGFuLCBNYWtlU3BhblB0ckxlbmd0aCkgewogICBz
dGQ6OnZlY3RvcjxpbnQ+IGVtcHR5OwogICBhdXRvIHNfZW1wdHkgPSBhYnNsOjpNYWtlU3Bhbihl
bXB0eS5kYXRhKCksIGVtcHR5LnNpemUoKSk7CkBAIC03NjcsNiArODAxLDggQEAgVEVTVChDb25z
dEludFNwYW4sIENvbnN0ZXhwclRlc3QpIHsKICAgQUJTTF9URVNUX0NPTlNURVhQUihzcGFuLmJl
Z2luKCkpOwogICBBQlNMX1RFU1RfQ09OU1RFWFBSKHNwYW4uY2JlZ2luKCkpOwogICBBQlNMX1RF
U1RfQ09OU1RFWFBSKHNwYW4uc3Vic3BhbigwLCAwKSk7CisgIEFCU0xfVEVTVF9DT05TVEVYUFIo
c3Bhbi5maXJzdCgxKSk7CisgIEFCU0xfVEVTVF9DT05TVEVYUFIoc3Bhbi5sYXN0KDEpKTsKICAg
QUJTTF9URVNUX0NPTlNURVhQUihzcGFuWzBdKTsKIH0KIApAQCAtNzc5LDQgKzgxNSwxOSBAQCBU
RVNUKFNwYW4sIFNwYW5TaXplKSB7CiAgIEVYUEVDVF9MRShzaXplb2YoYWJzbDo6U3BhbjxCaWdT
dHJ1Y3Q+KSwgMiAqIHNpemVvZih2b2lkKikpOwogfQogCitURVNUKFNwYW4sIEhhc2gpIHsKKyAg
aW50IGFycmF5W10gPSB7MSwgMiwgMywgNH07CisgIGludCBhcnJheTJbXSA9IHsxLCAyLCAzfTsK
KyAgdXNpbmcgVCA9IGFic2w6OlNwYW48Y29uc3QgaW50PjsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIHsvLyBFbXB0aWVz
CisgICAgICAgVCgpLCBUKG51bGxwdHIsIDApLCBUKGFycmF5LCAwKSwgVChhcnJheTIsIDApLAor
ICAgICAgIC8vIERpZmZlcmVudCBhcnJheSB3aXRoIHNhbWUgdmFsdWUKKyAgICAgICBUKGFycmF5
LCAzKSwgVChhcnJheTIpLCBUKHsxLCAyLCAzfSksCisgICAgICAgLy8gU2FtZSBhcnJheSwgYnV0
IGRpZmZlcmVudCBsZW5ndGgKKyAgICAgICBUKGFycmF5LCAxKSwgVChhcnJheSwgMiksCisgICAg
ICAgLy8gU2FtZSBsZW5ndGgsIGJ1dCBkaWZmZXJlbnQgYXJyYXkKKyAgICAgICBUKGFycmF5ICsg
MSwgMiksIFQoYXJyYXkgKyAyLCAyKX0pKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy92YXJpYW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50LmgKaW5kZXgg
MmY3ODcyMmY4YjcuLmViZDUyZDI4YjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC00Nyw3ICs0Nyw3IEBACiAKICNpZmRlZiBBQlNMX0hBVkVfU1RE
X1ZBUklBTlQKIAotI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVkZSA8dmFyaWFudD4gIC8vIElX
WVUgcHJhZ21hOiBleHBvcnQKIAogbmFtZXNwYWNlIGFic2wgewogdXNpbmcgc3RkOjpiYWRfdmFy
aWFudF9hY2Nlc3M7CkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIGFic2w6
OnZhcmlhbnQKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gQW4gJ2Fic2w6OnZhcmlh
bnRgIHR5cGUgaXMgYSBmb3JtIG9mIHR5cGUtc2FmZSB1bmlvbi4gQW4gYGFic2w6OnZhcmlhbnRg
IC0tCisvLyBBbiBgYWJzbDo6dmFyaWFudGAgdHlwZSBpcyBhIGZvcm0gb2YgdHlwZS1zYWZlIHVu
aW9uLiBBbiBgYWJzbDo6dmFyaWFudGAgLS0KIC8vIGV4Y2VwdCBpbiBleGNlcHRpb25hbCBjYXNl
cyAtLSBhbHdheXMgaG9sZHMgYSB2YWx1ZSBvZiBvbmUgb2YgaXRzIGFsdGVybmF0aXZlCiAvLyB0
eXBlcy4KIC8vCkBAIC0xMjksMTQgKzEyOSwxOSBAQCBjbGFzcyB2YXJpYW50OwogLy8gdHlwZSAo
aW4gd2hpY2ggY2FzZSwgdGhleSB3aWxsIGJlIHN3YXBwZWQpIG9yIHRvIHR3byBkaWZmZXJlbnQg
dHlwZXMgKGluCiAvLyB3aGljaCBjYXNlIHRoZSB2YWx1ZXMgd2lsbCBuZWVkIHRvIGJlIG1vdmVk
KS4KIC8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHM+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5h
bWUuLi4gVHMsCisgICAgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgIGFic2w6OmNvbmp1bmN0
aW9uPHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPFRzPi4uLiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzU3dhcHBhYmxlPFRzPi4uLj46OnZhbHVl
LAorICAgICAgICBpbnQ+ID0gMD4KIHZvaWQgc3dhcCh2YXJpYW50PFRzLi4uPiYgdiwgdmFyaWFu
dDxUcy4uLj4mIHcpIG5vZXhjZXB0KG5vZXhjZXB0KHYuc3dhcCh3KSkpIHsKICAgdi5zd2FwKHcp
OwogfQogCiAvLyB2YXJpYW50X3NpemUKIC8vCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWx0
ZXJhdGl2ZSB0eXBlcyBhdmFpbGFibGUgZm9yIGEgZ2l2ZW4gYGFic2w6OnZhcmlhbnRgCisvLyBS
ZXR1cm5zIHRoZSBudW1iZXIgb2YgYWx0ZXJuYXRpdmUgdHlwZXMgYXZhaWxhYmxlIGZvciBhIGdp
dmVuIGBhYnNsOjp2YXJpYW50YAogLy8gdHlwZSBhcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudCBl
eHByZXNzaW9uLiBBcyB0aGlzIGlzIGEgY2xhc3MgdGVtcGxhdGUsIGl0CiAvLyBpcyBub3QgZ2Vu
ZXJhbGx5IHVzZWZ1bCBmb3IgYWNjZXNzaW5nIHRoZSBudW1iZXIgb2YgYWx0ZXJuYXRpdmUgdHlw
ZXMgb2YKIC8vIGFueSBnaXZlbiBgYWJzbDo6dmFyaWFudGAgaW5zdGFuY2UuCkBAIC0zOTksOSAr
NDA0LDkgQEAgY29uc3RleHByIGFic2w6OmFkZF9wb2ludGVyX3Q8Y29uc3QgVD4gZ2V0X2lmKAog
Ly8gQ2FsbHMgYSBwcm92aWRlZCBmdW5jdG9yIG9uIGEgZ2l2ZW4gc2V0IG9mIHZhcmlhbnRzLiBg
YWJzbDo6dmlzaXQoKWAgaXMKIC8vIGNvbW1vbmx5IHVzZWQgdG8gY29uZGl0aW9uYWxseSBpbnNw
ZWN0IHRoZSBzdGF0ZSBvZiBhIGdpdmVuIHZhcmlhbnQgKG9yIHNldAogLy8gb2YgdmFyaWFudHMp
LgotLy8gUmVxdWlyZXM6IFRoZSBleHByZXNzaW9uIGluIHRoZSBFZmZlY3RzOiBlbGVtZW50IHNo
YWxsIGJlIGEgdmFsaWQgZXhwcmVzc2lvbgotLy8gb2YgdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUg
Y2F0ZWdvcnksIGZvciBhbGwgY29tYmluYXRpb25zIG9mIGFsdGVybmF0aXZlCi0vLyB0eXBlcyBv
ZiBhbGwgdmFyaWFudHMuIE90aGVyd2lzZSwgdGhlIHByb2dyYW0gaXMgaWxsLWZvcm1lZC4KKy8v
CisvLyBUaGUgZnVuY3RvciBtdXN0IHJldHVybiB0aGUgc2FtZSB0eXBlIHdoZW4gY2FsbGVkIHdp
dGggYW55IG9mIHRoZSB2YXJpYW50cycKKy8vIGFsdGVybmF0aXZlcy4KIC8vCiAvLyBFeGFtcGxl
OgogLy8KQEAgLTQxNCw2ICs0MTksNyBAQCBjb25zdGV4cHIgYWJzbDo6YWRkX3BvaW50ZXJfdDxj
b25zdCBUPiBnZXRfaWYoCiAvLyAgIH07CiAvLwogLy8gICAvLyBEZWNsYXJlIG91ciB2YXJpYW50
LCBhbmQgY2FsbCBgYWJzbDo6dmlzaXQoKWAgb24gaXQuCisvLyAgIC8vIE5vdGUgdGhhdCBgR2V0
VmFyaWFudCgpYCByZXR1cm5zIHZvaWQgaW4gZWl0aGVyIGNhc2UuCiAvLyAgIGFic2w6OnZhcmlh
bnQ8aW50LCBzdGQ6OnN0cmluZz4gZm9vID0gc3RkOjpzdHJpbmcoImZvbyIpOwogLy8gICBHZXRW
YXJpYW50IHZpc2l0b3I7CiAvLyAgIGFic2w6OnZpc2l0KHZpc2l0b3IsIGZvbyk7ICAvLyBQcmlu
dHMgYFRoZSB2YXJpYW50J3MgdmFsdWUgaXM6IGZvbycKQEAgLTQ1Myw3ICs0NTksNyBAQCBjbGFz
cyB2YXJpYW50PFQwLCBUbi4uLj4gOiBwcml2YXRlIHZhcmlhbnRfaW50ZXJuYWw6OlZhcmlhbnRC
YXNlPFQwLCBUbi4uLj4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
aXNfb2JqZWN0PFRuPi4uLj46OnZhbHVlLAogICAgICAgICAgICAgICAgICJBdHRlbXB0ZWQgdG8g
aW5zdGFudGlhdGUgYSB2YXJpYW50IGNvbnRhaW5pbmcgYSBub24tb2JqZWN0ICIKICAgICAgICAg
ICAgICAgICAidHlwZS4iKTsKLSAgLy8gSW50ZW50aW9uYWxseSBub3QgcXVhbGlmaW5nIGBuZWdh
dGlvbmAgd2l0aCBgYWJzbDo6YCB0byB3b3JrIGFyb3VuZCBhIGJ1ZworICAvLyBJbnRlbnRpb25h
bGx5IG5vdCBxdWFsaWZ5aW5nIGBuZWdhdGlvbmAgd2l0aCBgYWJzbDo6YCB0byB3b3JrIGFyb3Vu
ZCBhIGJ1ZwogICAvLyBpbiBNU1ZDIDIwMTUgd2l0aCBpbmxpbmUgbmFtZXNwYWNlIGFuZCB2YXJp
YWRpYyB0ZW1wbGF0ZS4KICAgc3RhdGljX2Fzc2VydChhYnNsOjpjb25qdW5jdGlvbjxuZWdhdGlv
bjxzdGQ6OmlzX2FycmF5PFQwPiA+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5lZ2F0aW9uPHN0ZDo6aXNfYXJyYXk8VG4+ID4uLi4+Ojp2YWx1ZSwKQEAgLTU2MSw3ICs1Njcs
NyBAQCBjbGFzcyB2YXJpYW50PFQwLCBUbi4uLj4gOiBwcml2YXRlIHZhcmlhbnRfaW50ZXJuYWw6
OlZhcmlhbnRCYXNlPFQwLCBUbi4uLj4gewogCiAgIC8vIEFzc2lnbm1lbnQgT3BlcmF0b3JzCiAK
LSAgLy8gQ29weSBhc3NpZ25lbWVudCBvcGVyYXRvcgorICAvLyBDb3B5IGFzc2lnbm1lbnQgb3Bl
cmF0b3IKICAgdmFyaWFudCYgb3BlcmF0b3I9KGNvbnN0IHZhcmlhbnQmIG90aGVyKSA9IGRlZmF1
bHQ7CiAKICAgLy8gTW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yCkBAIC02ODcsMTIgKzY5MywxMiBA
QCBjbGFzcyB2YXJpYW50PFQwLCBUbi4uLj4gOiBwcml2YXRlIHZhcmlhbnRfaW50ZXJuYWw6OlZh
cmlhbnRCYXNlPFQwLCBUbi4uLj4gewogICAvLwogICAvLyBTd2FwcyB0aGUgdmFsdWVzIG9mIHR3
byB2YXJpYW50IG9iamVjdHMuCiAgIC8vCi0gIC8vIFRPRE8oY2FsYWJyZXNlKQotICAvLyAgIGB2
YXJpYW50Ojpzd2FwKClgIGFuZCBgc3dhcCgpYCByZWx5IG9uIGBzdGQ6OmlzXyhub3Rocm93KV9z
d2FwcGFibGUoKWAKLSAgLy8gICB3aGljaCBpcyBpbnRyb2R1Y2VkIGluIEMrKzE3LiBTbyB3ZSBh
c3N1bWUgYGlzX3N3YXBwYWJsZSgpYCBpcyBhbHdheXMKLSAgLy8gICB0cnVlIGFuZCBgaXNfbm90
aHJvd19zd2FwcGFibGUoKWAgaXMgc2FtZSBhcyBgc3RkOjppc190cml2aWFsKClgLgogICB2b2lk
IHN3YXAodmFyaWFudCYgcmhzKSBub2V4Y2VwdCgKLSAgICAgIGFic2w6OmNvbmp1bmN0aW9uPHN0
ZDo6aXNfdHJpdmlhbDxUMD4sIHN0ZDo6aXNfdHJpdmlhbDxUbj4uLi4+Ojp2YWx1ZSkgeworICAg
ICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfY29u
c3RydWN0aWJsZTxUMD4sCisgICAgICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0
aWJsZTxUbj4uLi4sCisgICAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzTm90aHJvd1N3
YXBwYWJsZTxUMD4sCisgICAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzTm90aHJvd1N3
YXBwYWJsZTxUbj4uLi4+Ojp2YWx1ZSkgewogICAgIHJldHVybiB2YXJpYW50X2ludGVybmFsOjpW
aXNpdEluZGljZXM8c2l6ZW9mLi4uKFRuKSArIDE+OjpSdW4oCiAgICAgICAgIHZhcmlhbnRfaW50
ZXJuYWw6OlN3YXA8VDAsIFRuLi4uPnt0aGlzLCAmcmhzfSwgcmhzLmluZGV4KCkpOwogICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
L3ZhcmlhbnRfYmVuY2htYXJrLmNjCmluZGV4IDk5NjU4YWM3MGM0Li5hNWY1MjE2NDQxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXMvdmFyaWFudF9iZW5jaG1hcmsuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MK
aW5kZXggNTg0MzZmMDdiODQuLjc2YmViNTk1OTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92
YXJpYW50X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50
X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwpAQCAtNCwxMyArNCwxNCBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCiAvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIC8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCiAjaW5jbHVkZSAiYWJzbC90eXBlcy92YXJpYW50
LmgiCiAKICNpbmNsdWRlIDxpb3N0cmVhbT4KQEAgLTIwLDkgKzIxLDEzIEBACiAKICNpbmNsdWRl
ICJnbW9jay9nbW9jay5oIgogI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJz
bC9iYXNlL2NvbmZpZy5oIgogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25f
c2FmZXR5X3Rlc3RpbmcuaCIKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKIAorLy8g
U2VlIGNvbW1lbnQgaW4gYWJzbC9iYXNlL2NvbmZpZy5oCisjaWYgIWRlZmluZWQoQUJTTF9JTlRF
Uk5BTF9NU1ZDXzIwMTdfREJHX01PREUpCisKIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSB7
CiAKQEAgLTMxMSw2ICszMTYsMTIgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwg
TW92ZUFzc2lnbikgewogICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aENvbnRyYWN0cyhzdHJv
bmdfZ3VhcmFudGVlKS5UZXN0KCkpOwogICB9CiAgIHsKKyAgICAvLyBsaWJzdGRjKysgaW50cm9k
dWNlZCBhIHJlZ3Jlc3Npb24gYmV0d2VlbiAyMDE4LTA5LTI1IGFuZCAyMDE5LTAxLTA2LgorICAg
IC8vIFRoZSBmaXggaXMgdGFyZ2V0ZWQgZm9yIGdjYy05LgorICAgIC8vIGh0dHBzOi8vZ2NjLmdu
dS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTg3NDMxI2M3CisgICAgLy8gaHR0cHM6Ly9n
Y2MuZ251Lm9yZy92aWV3Y3ZzL2djYz92aWV3PXJldmlzaW9uJnJldmlzaW9uPTI2NzYxNAorI2lm
ICEoZGVmaW5lZChBQlNMX0hBVkVfU1REX1ZBUklBTlQpICYmIFwKKyAgICAgIGRlZmluZWQoX0dM
SUJDWFhfUkVMRUFTRSkgJiYgX0dMSUJDWFhfUkVMRUFTRSA9PSA4KQogICAgIC8vIC0gb3RoZXJ3
aXNlIChpbmRleCgpICE9IGopLCBlcXVpdmFsZW50IHRvCiAgICAgLy8gZW1wbGFjZTxqPihnZXQ8
aj4oc3RkOjptb3ZlKHJocykpKQogICAgIC8vIC0gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBk
dXJpbmcgdGhlIGNhbGwgdG8gVGoncyBtb3ZlIGNvbnN0cnVjdGlvbgpAQCAtMzI2LDYgKzMzNyw4
IEBAIFRFU1QoVmFyaWFudEV4Y2VwdGlvblNhZmV0eVRlc3QsIE1vdmVBc3NpZ24pIHsKICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGNvcHkgPSByaHM7CiAgICAgICAgICAgICAgICAgICAgICAg
KmxocyA9IHN0ZDo6bW92ZShjb3B5KTsKICAgICAgICAgICAgICAgICAgICAgfSkpOworI2VuZGlm
ICAvLyAhKGRlZmluZWQoQUJTTF9IQVZFX1NURF9WQVJJQU5UKSAmJgorICAgICAgICAvLyAgIGRl
ZmluZWQoX0dMSUJDWFhfUkVMRUFTRSkgJiYgX0dMSUJDWFhfUkVMRUFTRSA9PSA4KQogICB9CiB9
CiAKQEAgLTUwNiwzICs1MTksNSBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBT
d2FwKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlm
ICAvLyAhZGVmaW5lZChBQlNMX0lOVEVSTkFMX01TVkNfMjAxN19EQkdfTU9ERSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfdGVz
dC5jYwppbmRleCBiZmI4YmQ3YTAyMi4uODUyMDFiM2VhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzL3ZhcmlhbnRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X3Rlc3QuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTUyLDcgKzUyLDcgQEAK
ICNlbmRpZiAgLy8gQUJTTF9IQVZFX0VYQ0VQVElPTlMKIAogI2RlZmluZSBBQlNMX1ZBUklBTlRf
VEVTVF9FWFBFQ1RfQkFEX1ZBUklBTlRfQUNDRVNTKC4uLikgICAgICAgICAgICAgICAgIFwKLSAg
QUJTTF9WQVJJQU5UX1RFU1RfRVhQRUNUX0ZBSUwoKF9fVkFfQVJHU19fKSwgYWJzbDo6YmFkX3Zh
cmlhbnRfYWNjZXNzLCBcCisgIEFCU0xfVkFSSUFOVF9URVNUX0VYUEVDVF9GQUlMKCh2b2lkKShf
X1ZBX0FSR1NfXyksIGFic2w6OmJhZF92YXJpYW50X2FjY2VzcywgXAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQmFkIHZhcmlhbnQgYWNjZXNzIikKIAogc3RydWN0IEhhc2hhYmxl
IHt9OwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGNsYXNzIE5vbkNvcHlhYmxlIHsKIC8vIGVhY2ggdHlw
ZS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgVmFyaWFudFR5cGVzVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3Qge307Ci1UWVBFRF9URVNUX0NBU0UoVmFyaWFudFR5cGVzVGVzdCwg
VmFyaWFudFR5cGVzKTsKK1RZUEVEX1RFU1RfU1VJVEUoVmFyaWFudFR5cGVzVGVzdCwgVmFyaWFu
dFR5cGVzKTsKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIFt2YXJpYW50LmN0b3JdIC8vCkBA
IC0zODQsNyArMzg0LDcgQEAgc3RydWN0IE1vdmVPbmx5IHsKIFRFU1QoVmFyaWFudFRlc3QsIFRl
c3RNb3ZlQ29uc3RydWN0KSB7CiAgIHVzaW5nIFYgPSB2YXJpYW50PE1vdmVPbmx5PGNsYXNzIEE+
LCBNb3ZlT25seTxjbGFzcyBCPiwgTW92ZU9ubHk8Y2xhc3MgQz4+OwogCi0gIFYgdihpbl9wbGFj
ZV9pbmRleF90PDE+e30sIDEwKTsKKyAgViB2KGluX3BsYWNlX2luZGV4PDE+LCAxMCk7CiAgIFYg
djIgPSBhYnNsOjptb3ZlKHYpOwogICBFWFBFQ1RfRVEoMTAsIGFic2w6OmdldDwxPih2MikudmFs
dWUpOwogfQpAQCAtNDYwLDYgKzQ2MCwxMSBAQCBUWVBFRF9URVNUKFZhcmlhbnRUeXBlc1Rlc3Qs
IFRlc3RWYWx1ZUN0b3IpIHsKICAgRVhQRUNUX0VRKHZhbHVlLnZhbHVlLCBtdXRhYmxlX3ZhbHB0
ci0+dmFsdWUpOwogfQogCitURVNUKFZhcmlhbnRUZXN0LCBBbWJpZ3VvdXNWYWx1ZUNvbnN0cnVj
dG9yKSB7CisgIEVYUEVDVF9GQUxTRSgoc3RkOjppc19jb252ZXJ0aWJsZTxpbnQsIGFic2w6OnZh
cmlhbnQ8aW50LCBpbnQ+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChzdGQ6OmlzX2NvbnN0
cnVjdGlibGU8YWJzbDo6dmFyaWFudDxpbnQsIGludD4sIGludD46OnZhbHVlKSk7Cit9CisKIFRF
U1QoVmFyaWFudFRlc3QsIEluUGxhY2VUeXBlKSB7CiAgIHVzaW5nIFZhciA9IHZhcmlhbnQ8aW50
LCBzdGQ6OnN0cmluZywgTm9uQ29weWFibGUsIHN0ZDo6dmVjdG9yPGludD4+OwogCkBAIC00ODMs
MTQgKzQ4OCw0NyBAQCBURVNUKFZhcmlhbnRUZXN0LCBJblBsYWNlVHlwZSkgewogICBFWFBFQ1Rf
VEhBVChhYnNsOjpnZXQ8c3RkOjp2ZWN0b3I8aW50Pj4odjUpLCA6OnRlc3Rpbmc6OkVsZW1lbnRz
QXJlKDEsIDIsIDMpKTsKIH0KIAorVEVTVChWYXJpYW50VGVzdCwgSW5QbGFjZVR5cGVWYXJpYWJs
ZVRlbXBsYXRlKSB7CisgIHVzaW5nIFZhciA9IHZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZywgTm9u
Q29weWFibGUsIHN0ZDo6dmVjdG9yPGludD4+OworCisgIFZhciB2MShpbl9wbGFjZV90eXBlPGlu
dD4sIDcpOworICBBU1NFUlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTxpbnQ+KHYxKSk7
CisgIEVYUEVDVF9FUSg3LCBhYnNsOjpnZXQ8aW50Pih2MSkpOworCisgIFZhciB2Mihpbl9wbGFj
ZV90eXBlPHN0ZDo6c3RyaW5nPiwgIkFCQyIpOworICBBU1NFUlRfVFJVRShhYnNsOjpob2xkc19h
bHRlcm5hdGl2ZTxzdGQ6OnN0cmluZz4odjIpKTsKKyAgRVhQRUNUX0VRKCJBQkMiLCBhYnNsOjpn
ZXQ8c3RkOjpzdHJpbmc+KHYyKSk7CisKKyAgVmFyIHYzKGluX3BsYWNlX3R5cGU8c3RkOjpzdHJp
bmc+LCAiQUJDIiwgMik7CisgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPHN0
ZDo6c3RyaW5nPih2MykpOworICBFWFBFQ1RfRVEoIkFCIiwgYWJzbDo6Z2V0PHN0ZDo6c3RyaW5n
Pih2MykpOworCisgIFZhciB2NChpbl9wbGFjZV90eXBlPE5vbkNvcHlhYmxlPik7CisgIEFTU0VS
VF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPE5vbkNvcHlhYmxlPih2NCkpOworCisgIFZh
ciB2NShpbl9wbGFjZV90eXBlPHN0ZDo6dmVjdG9yPGludD4+LCB7MSwgMiwgM30pOworICBBU1NF
UlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnZlY3RvcjxpbnQ+Pih2NSkpOwor
ICBFWFBFQ1RfVEhBVChhYnNsOjpnZXQ8c3RkOjp2ZWN0b3I8aW50Pj4odjUpLCA6OnRlc3Rpbmc6
OkVsZW1lbnRzQXJlKDEsIDIsIDMpKTsKK30KKwogVEVTVChWYXJpYW50VGVzdCwgSW5QbGFjZVR5
cGVJbml0aWFsaXplckxpc3QpIHsKLSAgdXNpbmcgVmFyID0gdmFyaWFudDxpbnQsIHN0ZDo6c3Ry
aW5nLCBOb25Db3B5YWJsZSwgTW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPjsKKyAgdXNpbmcg
VmFyID0KKyAgICAgIHZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZywgTm9uQ29weWFibGUsIE1vdmVP
bmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj47CiAKICAgVmFyIHYxKGluX3BsYWNlX3R5cGVfdDxNb3Zl
T25seVdpdGhMaXN0Q29uc3RydWN0b3I+KCksIHsxLCAyLCAzLCA0LCA1fSwgNik7CiAgIEFTU0VS
VF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rv
cj4odjEpKTsKICAgRVhQRUNUX0VRKDYsIGFic2w6OmdldDxNb3ZlT25seVdpdGhMaXN0Q29uc3Ry
dWN0b3I+KHYxKS52YWx1ZSk7CiB9CiAKK1RFU1QoVmFyaWFudFRlc3QsIEluUGxhY2VUeXBlSW5p
dGlhbGl6ZXJMaXN0VmFyaWFibGV0ZW1wbGF0ZSkgeworICB1c2luZyBWYXIgPQorICAgICAgdmFy
aWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5YWJsZSwgTW92ZU9ubHlXaXRoTGlzdENvbnN0
cnVjdG9yPjsKKworICBWYXIgdjEoaW5fcGxhY2VfdHlwZTxNb3ZlT25seVdpdGhMaXN0Q29uc3Ry
dWN0b3I+LCB7MSwgMiwgMywgNCwgNX0sIDYpOworICBBU1NFUlRfVFJVRShhYnNsOjpob2xkc19h
bHRlcm5hdGl2ZTxNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+KHYxKSk7CisgIEVYUEVDVF9F
USg2LCBhYnNsOjpnZXQ8TW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPih2MSkudmFsdWUpOwor
fQorCiBURVNUKFZhcmlhbnRUZXN0LCBJblBsYWNlSW5kZXgpIHsKICAgdXNpbmcgVmFyID0gdmFy
aWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5YWJsZSwgc3RkOjp2ZWN0b3I8aW50Pj47CiAK
QEAgLTUxOCwxNCArNTU2LDUxIEBAIFRFU1QoVmFyaWFudFRlc3QsIEluUGxhY2VJbmRleCkgewog
ICBFWFBFQ1RfVEhBVChhYnNsOjpnZXQ8c3RkOjp2ZWN0b3I8aW50Pj4odjUpLCA6OnRlc3Rpbmc6
OkVsZW1lbnRzQXJlKDEsIDIsIDMpKTsKIH0KIAorVEVTVChWYXJpYW50VGVzdCwgSW5QbGFjZUlu
ZGV4VmFyaWFibGVUZW1wbGF0ZSkgeworICB1c2luZyBWYXIgPSB2YXJpYW50PGludCwgc3RkOjpz
dHJpbmcsIE5vbkNvcHlhYmxlLCBzdGQ6OnZlY3RvcjxpbnQ+PjsKKworICBWYXIgdjEoaW5fcGxh
Y2VfaW5kZXg8MD4sIDcpOworICBBU1NFUlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTxp
bnQ+KHYxKSk7CisgIEVYUEVDVF9FUSg3LCBhYnNsOjpnZXQ8aW50Pih2MSkpOworCisgIFZhciB2
Mihpbl9wbGFjZV9pbmRleDwxPiwgIkFCQyIpOworICBBU1NFUlRfVFJVRShhYnNsOjpob2xkc19h
bHRlcm5hdGl2ZTxzdGQ6OnN0cmluZz4odjIpKTsKKyAgRVhQRUNUX0VRKCJBQkMiLCBhYnNsOjpn
ZXQ8c3RkOjpzdHJpbmc+KHYyKSk7CisKKyAgVmFyIHYzKGluX3BsYWNlX2luZGV4PDE+LCAiQUJD
IiwgMik7CisgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6c3RyaW5n
Pih2MykpOworICBFWFBFQ1RfRVEoIkFCIiwgYWJzbDo6Z2V0PHN0ZDo6c3RyaW5nPih2MykpOwor
CisgIFZhciB2NChpbl9wbGFjZV9pbmRleDwyPik7CisgIEVYUEVDVF9UUlVFKGFic2w6OmhvbGRz
X2FsdGVybmF0aXZlPE5vbkNvcHlhYmxlPih2NCkpOworCisgIC8vIFZlcmlmeSB0aGF0IGEgdmFy
aWFudCB3aXRoIG9ubHkgbm9uLWNvcHlhYmxlcyBjYW4gc3RpbGwgYmUgY29uc3RydWN0ZWQuCisg
IEVYUEVDVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPE5vbkNvcHlhYmxlPigKKyAgICAg
IHZhcmlhbnQ8Tm9uQ29weWFibGU+KGluX3BsYWNlX2luZGV4PDA+KSkpOworCisgIFZhciB2NShp
bl9wbGFjZV9pbmRleDwzPiwgezEsIDIsIDN9KTsKKyAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNf
YWx0ZXJuYXRpdmU8c3RkOjp2ZWN0b3I8aW50Pj4odjUpKTsKKyAgRVhQRUNUX1RIQVQoYWJzbDo6
Z2V0PHN0ZDo6dmVjdG9yPGludD4+KHY1KSwgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZSgxLCAyLCAz
KSk7Cit9CisKIFRFU1QoVmFyaWFudFRlc3QsIEluUGxhY2VJbmRleEluaXRpYWxpemVyTGlzdCkg
ewotICB1c2luZyBWYXIgPSB2YXJpYW50PGludCwgc3RkOjpzdHJpbmcsIE5vbkNvcHlhYmxlLCBN
b3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+OworICB1c2luZyBWYXIgPQorICAgICAgdmFyaWFu
dDxpbnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5YWJsZSwgTW92ZU9ubHlXaXRoTGlzdENvbnN0cnVj
dG9yPjsKIAogICBWYXIgdjEoaW5fcGxhY2VfaW5kZXhfdDwzPigpLCB7MSwgMiwgMywgNCwgNX0s
IDYpOwogICBBU1NFUlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTxNb3ZlT25seVdpdGhM
aXN0Q29uc3RydWN0b3I+KHYxKSk7CiAgIEVYUEVDVF9FUSg2LCBhYnNsOjpnZXQ8TW92ZU9ubHlX
aXRoTGlzdENvbnN0cnVjdG9yPih2MSkudmFsdWUpOwogfQogCitURVNUKFZhcmlhbnRUZXN0LCBJ
blBsYWNlSW5kZXhJbml0aWFsaXplckxpc3RWYXJpYWJsZVRlbXBsYXRlKSB7CisgIHVzaW5nIFZh
ciA9CisgICAgICB2YXJpYW50PGludCwgc3RkOjpzdHJpbmcsIE5vbkNvcHlhYmxlLCBNb3ZlT25s
eVdpdGhMaXN0Q29uc3RydWN0b3I+OworCisgIFZhciB2MShpbl9wbGFjZV9pbmRleDwzPiwgezEs
IDIsIDMsIDQsIDV9LCA2KTsKKyAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8
TW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPih2MSkpOworICBFWFBFQ1RfRVEoNiwgYWJzbDo6
Z2V0PE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj4odjEpLnZhbHVlKTsKK30KKwogLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KIC8vIFt2YXJpYW50LmR0b3JdIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8v
LwpAQCAtNTYwLDE1ICs2MzUsMjEgQEAgVEVTVChWYXJpYW50VGVzdCwgVGVzdER0b3IpIHsKIAog
I2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TCiAKKy8vIFNlZSBjb21tZW50IGluIGFic2wvYmFz
ZS9jb25maWcuaAorI2lmIGRlZmluZWQoQUJTTF9JTlRFUk5BTF9NU1ZDXzIwMTdfREJHX01PREUp
CitURVNUKFZhcmlhbnRUZXN0LCBESVNBQkxFRF9UZXN0RHRvclZhbHVlbGVzc0J5RXhjZXB0aW9u
KQorI2Vsc2UKIC8vIFRlc3QgZGVzdHJ1Y3Rpb24gd2hlbiBpbiB0aGUgdmFsdWVsZXNzX2J5X2V4
Y2VwdGlvbiBzdGF0ZS4KLVRFU1QoVmFyaWFudFRlc3QsIFRlc3REdG9yVmFsdWVsZXNzQnlFeGNl
cHRpb24pIHsKK1RFU1QoVmFyaWFudFRlc3QsIFRlc3REdG9yVmFsdWVsZXNzQnlFeGNlcHRpb24p
CisjZW5kaWYKK3sKICAgaW50IGNvdW50ZXIgPSAwOwogICBJbmNyZW1lbnRJbkR0b3IgY291bnRl
cl9hZGp1c3RlcigmY291bnRlcik7CiAKICAgewogICAgIHVzaW5nIFZhcmlhbnQgPSBWYXJpYW50
RmFjdG9yeTxJbmNyZW1lbnRJbkR0b3I+OjpUeXBlOwogCi0gICAgVmFyaWFudCB2KGluX3BsYWNl
X2luZGV4X3Q8MD4oKSwgY291bnRlcl9hZGp1c3Rlcik7CisgICAgVmFyaWFudCB2KGluX3BsYWNl
X2luZGV4PDA+LCBjb3VudGVyX2FkanVzdGVyKTsKICAgICBFWFBFQ1RfRVEoMCwgY291bnRlcik7
CiAKICAgICBUb1ZhbHVlbGVzc0J5RXhjZXB0aW9uKHYpOwpAQCAtODAyLDcgKzg4Myw3IEBAIFRF
U1QoVmFyaWFudFRlc3QsIFRlc3RCYWNrdXBBc3NpZ24pIHsKIFRFU1QoVmFyaWFudFRlc3QsIFRl
c3RFbXBsYWNlQmFzaWMpIHsKICAgdXNpbmcgVmFyaWFudCA9IHZhcmlhbnQ8aW50LCBjaGFyPjsK
IAotICBWYXJpYW50IHYoYWJzbDo6aW5fcGxhY2VfaW5kZXhfdDwwPnt9LCAwKTsKKyAgVmFyaWFu
dCB2KGFic2w6OmluX3BsYWNlX2luZGV4PDA+LCAwKTsKIAogICB7CiAgICAgY2hhciYgZW1wbGFj
ZV9yZXN1bHQgPSB2LmVtcGxhY2U8Y2hhcj4oKTsKQEAgLTgyNiw5ICs5MDcsMTAgQEAgVEVTVChW
YXJpYW50VGVzdCwgVGVzdEVtcGxhY2VCYXNpYykgewogfQogCiBURVNUKFZhcmlhbnRUZXN0LCBU
ZXN0RW1wbGFjZUluaXRpYWxpemVyTGlzdCkgewotICB1c2luZyBWYXIgPSB2YXJpYW50PGludCwg
c3RkOjpzdHJpbmcsIE5vbkNvcHlhYmxlLCBNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+Owor
ICB1c2luZyBWYXIgPQorICAgICAgdmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5YWJs
ZSwgTW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPjsKIAotICBWYXIgdjEoYWJzbDo6aW5fcGxh
Y2VfaW5kZXhfdDwwPnt9LCA1NTUpOworICBWYXIgdjEoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4s
IDU1NSk7CiAgIE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3RvciYgZW1wbGFjZV9yZXN1bHQgPQog
ICAgICAgdjEuZW1wbGFjZTxNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+KHsxLCAyLCAzLCA0
LCA1fSwgNik7CiAgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPE1vdmVPbmx5
V2l0aExpc3RDb25zdHJ1Y3Rvcj4odjEpKTsKQEAgLTgzOSw3ICs5MjEsNyBAQCBURVNUKFZhcmlh
bnRUZXN0LCBUZXN0RW1wbGFjZUluaXRpYWxpemVyTGlzdCkgewogVEVTVChWYXJpYW50VGVzdCwg
VGVzdEVtcGxhY2VJbmRleCkgewogICB1c2luZyBWYXJpYW50ID0gdmFyaWFudDxpbnQsIGNoYXI+
OwogCi0gIFZhcmlhbnQgdihhYnNsOjppbl9wbGFjZV9pbmRleF90PDA+e30sIDU1NSk7CisgIFZh
cmlhbnQgdihhYnNsOjppbl9wbGFjZV9pbmRleDwwPiwgNTU1KTsKIAogICB7CiAgICAgY2hhciYg
ZW1wbGFjZV9yZXN1bHQgPSB2LmVtcGxhY2U8MT4oKTsKQEAgLTg2Myw5ICs5NDUsMTAgQEAgVEVT
VChWYXJpYW50VGVzdCwgVGVzdEVtcGxhY2VJbmRleCkgewogfQogCiBURVNUKFZhcmlhbnRUZXN0
LCBUZXN0RW1wbGFjZUluZGV4SW5pdGlhbGl6ZXJMaXN0KSB7Ci0gIHVzaW5nIFZhciA9IHZhcmlh
bnQ8aW50LCBzdGQ6OnN0cmluZywgTm9uQ29weWFibGUsIE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1
Y3Rvcj47CisgIHVzaW5nIFZhciA9CisgICAgICB2YXJpYW50PGludCwgc3RkOjpzdHJpbmcsIE5v
bkNvcHlhYmxlLCBNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+OwogCi0gIFZhciB2MShhYnNs
Ojppbl9wbGFjZV9pbmRleF90PDA+e30sIDU1NSk7CisgIFZhciB2MShhYnNsOjppbl9wbGFjZV9p
bmRleDwwPiwgNTU1KTsKICAgTW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yJiBlbXBsYWNlX3Jl
c3VsdCA9CiAgICAgICB2MS5lbXBsYWNlPDM+KHsxLCAyLCAzLCA0LCA1fSwgNik7CiAgIEFTU0VS
VF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rv
cj4odjEpKTsKQEAgLTkxNCw3ICs5OTcsNyBAQCBURVNUKFZhcmlhbnRUZXN0LCBOb3RWYWx1ZWxl
c3NCeUV4Y2VwdGlvbikgewogVEVTVChWYXJpYW50VGVzdCwgSW5kZXhWYWx1ZWxlc3NCeUV4Y2Vw
dGlvbikgewogICB1c2luZyBWYXIgPSB2YXJpYW50PE1vdmVDYW5UaHJvdywgc3RkOjpzdHJpbmcs
IGRvdWJsZT47CiAKLSAgVmFyIHYoYWJzbDo6aW5fcGxhY2VfaW5kZXhfdDwwPnt9KTsKKyAgVmFy
IHYoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4pOwogICBFWFBFQ1RfRVEoMCwgdi5pbmRleCgpKTsK
ICAgVG9WYWx1ZWxlc3NCeUV4Y2VwdGlvbih2KTsKICAgRVhQRUNUX0VRKGFic2w6OnZhcmlhbnRf
bnBvcywgdi5pbmRleCgpKTsKQEAgLTkyNSw3ICsxMDA4LDcgQEAgVEVTVChWYXJpYW50VGVzdCwg
SW5kZXhWYWx1ZWxlc3NCeUV4Y2VwdGlvbikgewogVEVTVChWYXJpYW50VGVzdCwgVmFsdWVsZXNz
QnlFeGNlcHRpb24pIHsKICAgdXNpbmcgVmFyID0gdmFyaWFudDxNb3ZlQ2FuVGhyb3csIHN0ZDo6
c3RyaW5nLCBkb3VibGU+OwogCi0gIFZhciB2KGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57fSk7
CisgIFZhciB2KGFic2w6OmluX3BsYWNlX2luZGV4PDA+KTsKICAgRVhQRUNUX0ZBTFNFKHYudmFs
dWVsZXNzX2J5X2V4Y2VwdGlvbigpKTsKICAgVG9WYWx1ZWxlc3NCeUV4Y2VwdGlvbih2KTsKICAg
RVhQRUNUX1RSVUUodi52YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCkpOwpAQCAtOTU2LDcgKzEwMzks
NyBAQCBURVNUKFZhcmlhbnRUZXN0LCBNZW1iZXJTd2FwKSB7CiAgIHVzaW5nIFYgPSB2YXJpYW50
PE1vdmVDYW5UaHJvdywgc3RkOjpzdHJpbmcsIGludD47CiAgIGludCBpID0gMzM7CiAgIHN0ZDo6
c3RyaW5nIHMgPSAiYWJjIjsKLSAgViB2YWx1ZWxlc3MoaW5fcGxhY2VfaW5kZXhfdDwwPnt9KTsK
KyAgViB2YWx1ZWxlc3MoaW5fcGxhY2VfaW5kZXg8MD4pOwogICBUb1ZhbHVlbGVzc0J5RXhjZXB0
aW9uKHZhbHVlbGVzcyk7CiAgIHsKICAgICAvLyBsaHMgYW5kIHJocyBob2xkcyBkaWZmZXJlbnQg
YWx0ZXJuYXRpdmUKQEAgLTExMTcsNyArMTIwMCw3IEBAIFRFU1QoVmFyaWFudFRlc3QsIEdldElu
ZGV4KSB7CiAgIHVzaW5nIFZhciA9IHZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZywgZG91YmxlLCBp
bnQ+OwogCiAgIHsKLSAgICBWYXIgdihhYnNsOjppbl9wbGFjZV9pbmRleF90PDA+e30sIDApOwor
ICAgIFZhciB2KGFic2w6OmluX3BsYWNlX2luZGV4PDA+LCAwKTsKIAogICAgIHVzaW5nIExWYWx1
ZUdldFR5cGUgPSBkZWNsdHlwZShhYnNsOjpnZXQ8MD4odikpOwogICAgIHVzaW5nIFJWYWx1ZUdl
dFR5cGUgPSBkZWNsdHlwZShhYnNsOjpnZXQ8MD4oYWJzbDo6bW92ZSh2KSkpOwpAQCAtMTE3Nyw3
ICsxMjYwLDcgQEAgVEVTVChWYXJpYW50VGVzdCwgR2V0SW5kZXgpIHsKICAgfQogCiAgIHsKLSAg
ICBWYXIgdihhYnNsOjppbl9wbGFjZV9pbmRleF90PDA+e30sIDApOworICAgIFZhciB2KGFic2w6
OmluX3BsYWNlX2luZGV4PDA+LCAwKTsKICAgICB2LmVtcGxhY2U8Mz4oMSk7CiAKICAgICB1c2lu
ZyBMVmFsdWVHZXRUeXBlID0gZGVjbHR5cGUoYWJzbDo6Z2V0PDM+KHYpKTsKQEAgLTEzMDEsNyAr
MTM4NCw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIEJhZEdldFR5cGUpIHsKICAgICAgICAgYWJzbDo6
Z2V0PHN0ZDo6c3RyaW5nPihzdGQ6Om1vdmUodikpKTsKIAogICAgIGNvbnN0IFZhciYgY29uc3Rf
diA9IHY7Ci0gICAgQUJTTF9WQVJJQU5UX1RFU1RfRVhQRUNUX0JBRF9WQVJJQU5UX0FDQ0VTUyhh
YnNsOjpnZXQ8c3RkOjpzdHJpbmc+KGNvbnN0X3YpKTsKKyAgICBBQlNMX1ZBUklBTlRfVEVTVF9F
WFBFQ1RfQkFEX1ZBUklBTlRfQUNDRVNTKAorICAgICAgICBhYnNsOjpnZXQ8c3RkOjpzdHJpbmc+
KGNvbnN0X3YpKTsKICAgICBBQlNMX1ZBUklBTlRfVEVTVF9FWFBFQ1RfQkFEX1ZBUklBTlRfQUND
RVNTKAogICAgICAgICBhYnNsOjpnZXQ8c3RkOjpzdHJpbmc+KHN0ZDo6bW92ZShjb25zdF92KSkp
OyAgLy8gTk9MSU5UCiAgIH0KQEAgLTEzMjMsNyArMTQwNyw3IEBAIFRFU1QoVmFyaWFudFRlc3Qs
IEdldElmSW5kZXgpIHsKICAgdXNpbmcgVmFyID0gdmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBk
b3VibGUsIGludD47CiAKICAgewotICAgIFZhciB2KGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57
fSwgMCk7CisgICAgVmFyIHYoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4sIDApOwogICAgIEVYUEVD
VF9UUlVFKG5vZXhjZXB0KGFic2w6OmdldF9pZjwwPigmdikpKTsKIAogICAgIHsKQEAgLTEzNTgs
NyArMTQ0Miw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIEdldElmSW5kZXgpIHsKICAgICAgIEVYUEVD
VF9FUSgqZWxlbSwgMCk7CiAgICAgICB7CiAgICAgICAgIGF1dG8qIGJhZF9lbGVtID0gYWJzbDo6
Z2V0X2lmPDE+KCZjb25zdF92KTsKLSAgICAgICAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTxk
ZWNsdHlwZShiYWRfZWxlbSksIGNvbnN0IHN0ZDo6c3RyaW5nKj46OnZhbHVlKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKAorICAgICAgICAgICAgKHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShiYWRfZWxl
bSksIGNvbnN0IHN0ZDo6c3RyaW5nKj46OnZhbHVlKSk7CiAgICAgICAgIEVYUEVDVF9FUShiYWRf
ZWxlbSwgbnVsbHB0cik7CiAgICAgICB9CiAgICAgICB7CkBAIC0xNDY3LDcgKzE1NTIsOCBAQCBU
RVNUKFZhcmlhbnRUZXN0LCBHZXRJZkluZGV4KSB7CiAgICAgICB9CiAgICAgICB7CiAgICAgICAg
IGF1dG8qIGJhZF9lbGVtID0gYWJzbDo6Z2V0X2lmPDE+KCZjb25zdF92KTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShiYWRfZWxlbSksIGNvbnN0IHN0ZDo6c3Ry
aW5nKj46OnZhbHVlKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKAorICAgICAgICAgICAgKHN0ZDo6
aXNfc2FtZTxkZWNsdHlwZShiYWRfZWxlbSksIGNvbnN0IHN0ZDo6c3RyaW5nKj46OnZhbHVlKSk7
CiAgICAgICAgIEVYUEVDVF9FUShiYWRfZWxlbSwgbnVsbHB0cik7CiAgICAgICB9CiAgICAgICB7
CkBAIC0xNDc5LDcgKzE1NjUsNyBAQCBURVNUKFZhcmlhbnRUZXN0LCBHZXRJZkluZGV4KSB7CiAg
IH0KIAogICB7Ci0gICAgVmFyIHYoYWJzbDo6aW5fcGxhY2VfaW5kZXhfdDwwPnt9LCAwKTsKKyAg
ICBWYXIgdihhYnNsOjppbl9wbGFjZV9pbmRleDwwPiwgMCk7CiAgICAgdi5lbXBsYWNlPDM+KDEp
OwogICAgIEVYUEVDVF9UUlVFKG5vZXhjZXB0KGFic2w6OmdldF9pZjwzPigmdikpKTsKIApAQCAt
MTUyMCw3ICsxNjA2LDggQEAgVEVTVChWYXJpYW50VGVzdCwgR2V0SWZJbmRleCkgewogICAgICAg
fQogICAgICAgewogICAgICAgICBhdXRvKiBiYWRfZWxlbSA9IGFic2w6OmdldF9pZjwxPigmY29u
c3Rfdik7Ci0gICAgICAgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoYmFkX2Vs
ZW0pLCBjb25zdCBzdGQ6OnN0cmluZyo+Ojp2YWx1ZSkpOworICAgICAgICBFWFBFQ1RfVFJVRSgK
KyAgICAgICAgICAgIChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoYmFkX2VsZW0pLCBjb25zdCBzdGQ6
OnN0cmluZyo+Ojp2YWx1ZSkpOwogICAgICAgICBFWFBFQ1RfRVEoYmFkX2VsZW0sIG51bGxwdHIp
OwogICAgICAgfQogICAgICAgewpAQCAtMTYyNCw4ICsxNzExLDggQEAgVEVTVChWYXJpYW50VGVz
dCwgT3BlcmF0b3JSZWxhdGlvbmFsKSB7CiAKIFRFU1QoVmFyaWFudFRlc3QsIFZhbHVlbGVzc09w
ZXJhdG9yRXF1YWxzKSB7CiAgIHZhcmlhbnQ8TW92ZUNhblRocm93LCBzdGQ6OnN0cmluZz4gaW50
X3YoMSksIHN0cmluZ192KCJIZWxsbyIpLAotICAgICAgdmFsdWVsZXNzKGFic2w6OmluX3BsYWNl
X2luZGV4X3Q8MD57fSksCi0gICAgICBvdGhlcl92YWx1ZWxlc3MoYWJzbDo6aW5fcGxhY2VfaW5k
ZXhfdDwwPnt9KTsKKyAgICAgIHZhbHVlbGVzcyhhYnNsOjppbl9wbGFjZV9pbmRleDwwPiksCisg
ICAgICBvdGhlcl92YWx1ZWxlc3MoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4pOwogICBUb1ZhbHVl
bGVzc0J5RXhjZXB0aW9uKHZhbHVlbGVzcyk7CiAgIFRvVmFsdWVsZXNzQnlFeGNlcHRpb24ob3Ro
ZXJfdmFsdWVsZXNzKTsKIApAQCAtMTY0Niw4ICsxNzMzLDggQEAgVEVTVChWYXJpYW50VGVzdCwg
VmFsdWVsZXNzT3BlcmF0b3JFcXVhbHMpIHsKIAogVEVTVChWYXJpYW50VGVzdCwgVmFsdWVsZXNz
T3BlcmF0b3JSZWxhdGlvbmFsKSB7CiAgIHZhcmlhbnQ8TW92ZUNhblRocm93LCBzdGQ6OnN0cmlu
Zz4gaW50X3YoMSksIHN0cmluZ192KCJIZWxsbyIpLAotICAgICAgdmFsdWVsZXNzKGFic2w6Omlu
X3BsYWNlX2luZGV4X3Q8MD57fSksCi0gICAgICBvdGhlcl92YWx1ZWxlc3MoYWJzbDo6aW5fcGxh
Y2VfaW5kZXhfdDwwPnt9KTsKKyAgICAgIHZhbHVlbGVzcyhhYnNsOjppbl9wbGFjZV9pbmRleDww
PiksCisgICAgICBvdGhlcl92YWx1ZWxlc3MoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4pOwogICBU
b1ZhbHVlbGVzc0J5RXhjZXB0aW9uKHZhbHVlbGVzcyk7CiAgIFRvVmFsdWVsZXNzQnlFeGNlcHRp
b24ob3RoZXJfdmFsdWVsZXNzKTsKIApAQCAtMTcwNiw4ICsxNzkzLDggQEAgVEVTVChWYXJpYW50
VGVzdCwgVmlzaXRTaW1wbGUpIHsKICAgRVhQRUNUX0VRKCJCIiwgcGllY2UpOwogCiAgIHN0cnVj
dCBTdHJMZW4gewotICAgIGludCBvcGVyYXRvcigpKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSBjb25z
dCB7IHJldHVybiBzLnNpemUoKTsgfQogICAgIGludCBvcGVyYXRvcigpKGNvbnN0IGNoYXIqIHMp
IGNvbnN0IHsgcmV0dXJuIHN0cmxlbihzKTsgfQorICAgIGludCBvcGVyYXRvcigpKGNvbnN0IHN0
ZDo6c3RyaW5nJiBzKSBjb25zdCB7IHJldHVybiBzLnNpemUoKTsgfQogICB9OwogCiAgIHYgPSAi
U29tZVN0ciI7CkBAIC0xNzIzLDkgKzE4MTAsMTMgQEAgVEVTVChWYXJpYW50VGVzdCwgVmlzaXRS
VmFsdWUpIHsKICAgICBib29sIG9wZXJhdG9yKCkoc3RkOjpzdHJpbmcmJikgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfSAgLy8gTk9MSU5UCiAKICAgICBpbnQgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnN0
cmluZyYsIGNvbnN0IHN0ZDo6c3RyaW5nJikgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIGludCBv
cGVyYXRvcigpKGNvbnN0IHN0ZDo6c3RyaW5nJiwgc3RkOjpzdHJpbmcmJikgY29uc3QgeyByZXR1
cm4gMTsgfSAgLy8gTk9MSU5UCi0gICAgaW50IG9wZXJhdG9yKCkoc3RkOjpzdHJpbmcmJiwgY29u
c3Qgc3RkOjpzdHJpbmcmKSBjb25zdCB7IHJldHVybiAyOyB9ICAvLyBOT0xJTlQKLSAgICBpbnQg
b3BlcmF0b3IoKShzdGQ6OnN0cmluZyYmLCBzdGQ6OnN0cmluZyYmKSBjb25zdCB7IHJldHVybiAz
OyB9ICAgICAgIC8vIE5PTElOVAorICAgIGludCBvcGVyYXRvcigpKGNvbnN0IHN0ZDo6c3RyaW5n
Jiwgc3RkOjpzdHJpbmcmJikgY29uc3QgeworICAgICAgcmV0dXJuIDE7CisgICAgfSAgLy8gTk9M
SU5UCisgICAgaW50IG9wZXJhdG9yKCkoc3RkOjpzdHJpbmcmJiwgY29uc3Qgc3RkOjpzdHJpbmcm
KSBjb25zdCB7CisgICAgICByZXR1cm4gMjsKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT0xJTlQKKyAgICBp
bnQgb3BlcmF0b3IoKShzdGQ6OnN0cmluZyYmLCBzdGQ6OnN0cmluZyYmKSBjb25zdCB7IHJldHVy
biAzOyB9ICAvLyBOT0xJTlQKICAgfTsKICAgRVhQRUNUX0ZBTFNFKGFic2w6OnZpc2l0KFZpc2l0
b3J7fSwgdikpOwogICBFWFBFQ1RfVFJVRShhYnNsOjp2aXNpdChWaXNpdG9ye30sIGFic2w6Om1v
dmUodikpKTsKQEAgLTE4MDEsOSArMTg5Miw5IEBAIFRFU1QoVmFyaWFudFRlc3QsIFZpc2l0VmFy
aWFkaWMpIHsKICAgRVhQRUNUX1RIQVQoYWJzbDo6dmlzaXQoVmlzaXRvcigpLCBBKHN0ZDo6c3Ry
aW5nKCJCQkJCQiIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgQihzdGQ6OnVuaXF1ZV9w
dHI8aW50PihuZXcgaW50KDcpKSkpLAogICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlBhaXIoNSwg
NykpOwotICBFWFBFQ1RfVEhBVCgKLSAgICAgIGFic2w6OnZpc2l0KFZpc2l0b3IoKSwgQShzdGQ6
OnN0cmluZygiQkJCQkIiKSksIEIoYWJzbDo6c3RyaW5nX3ZpZXcoIkFCQyIpKSksCi0gICAgICA6
OnRlc3Rpbmc6OlBhaXIoNSwgMykpOworICBFWFBFQ1RfVEhBVChhYnNsOjp2aXNpdChWaXNpdG9y
KCksIEEoc3RkOjpzdHJpbmcoIkJCQkJCIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBC
KGFic2w6OnN0cmluZ192aWV3KCJBQkMiKSkpLAorICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlBh
aXIoNSwgMykpOwogfQogCiBURVNUKFZhcmlhbnRUZXN0LCBWaXNpdE5vQXJncykgewpAQCAtMTk3
MiwyOSArMjA2MywxNyBAQCBURVNUKFZhcmlhbnRUZXN0LCBNb25vc3RhdGVIYXNoKSB7CiB9CiAK
IFRFU1QoVmFyaWFudFRlc3QsIEhhc2gpIHsKLSAgc3RhdGljX2Fzc2VydCh0eXBlX3RyYWl0c19p
bnRlcm5hbDo6SXNIYXNoRW5hYmxlZDx2YXJpYW50PGludD4+Ojp2YWx1ZSwgIiIpOwotICBzdGF0
aWNfYXNzZXJ0KHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hFbmFibGVkPHZhcmlhbnQ8SGFz
aGFibGU+Pjo6dmFsdWUsCisgIHN0YXRpY19hc3NlcnQodHlwZV90cmFpdHNfaW50ZXJuYWw6Oklz
SGFzaGFibGU8dmFyaWFudDxpbnQ+Pjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCh0eXBl
X3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoYWJsZTx2YXJpYW50PEhhc2hhYmxlPj46OnZhbHVlLCAi
Iik7CisgIHN0YXRpY19hc3NlcnQodHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaGFibGU8dmFy
aWFudDxpbnQsIEhhc2hhYmxlPj46OnZhbHVlLAogICAgICAgICAgICAgICAgICIiKTsKLSAgc3Rh
dGljX2Fzc2VydCgKLSAgICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hFbmFibGVkPHZh
cmlhbnQ8aW50LCBIYXNoYWJsZT4+Ojp2YWx1ZSwgIiIpOwotCi0jaWYgZGVmaW5lZChfTVNDX1ZF
UikgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoZGVmaW5lZChf
TElCQ1BQX1ZFUlNJT04pICYmIF9MSUJDUFBfVkVSU0lPTiA8IDQwMDAgJiYgXAotICAgICBfTElC
Q1BQX1NURF9WRVIgPiAxMSkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ZGVmaW5lZChfX0FQUExFX18pCi0gIC8vIEZvciBNU1ZDIGFuZCBsaWJjKysgKDwgNC4wIGFuZCBj
KysxNCksIHN0ZDo6aGFzaCBwcmltYXJ5IHRlbXBsYXRlIGhhcyBhCi0gIC8vIHN0YXRpY19hc3Nl
cnQgdG8gY2F0Y2ggYW55IHVzZXItZGVmaW5lZCB0eXBlIFQgdGhhdCBkb2Vzbid0IHByb3ZpZGUg
YSBoYXNoCi0gIC8vIHNwZWNpYWxpemF0aW9uLiBTbyBpbnN0YW50aWF0aW5nIHN0ZDo6aGFzaDx2
YXJpYW50PFQ+PiB3aWxsIHJlc3VsdAotICAvLyBpbiBhIGhhcmQgZXJyb3Igd2hpY2ggaXMgbm90
IFNGSU5BRSBmcmllbmRseS4KLSNkZWZpbmUgQUJTTF9TVERfSEFTSF9OT1RfU0ZJTkFFX0ZSSUVO
RExZIDEKLSNlbmRpZgogCi0jaWZuZGVmIEFCU0xfU1REX0hBU0hfTk9UX1NGSU5BRV9GUklFTkRM
WQotICBzdGF0aWNfYXNzZXJ0KAotICAgICAgIXR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hF
bmFibGVkPHZhcmlhbnQ8Tm9uSGFzaGFibGU+Pjo6dmFsdWUsICIiKTsKLSAgc3RhdGljX2Fzc2Vy
dCghdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaEVuYWJsZWQ8Ci0gICAgICAgICAgICAgICAg
ICAgIHZhcmlhbnQ8SGFzaGFibGUsIE5vbkhhc2hhYmxlPj46OnZhbHVlLAorI2lmIEFCU0xfTUVU
QV9JTlRFUk5BTF9TVERfSEFTSF9TRklOQUVfRlJJRU5ETFlfCisgIHN0YXRpY19hc3NlcnQoIXR5
cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hhYmxlPHZhcmlhbnQ8Tm9uSGFzaGFibGU+Pjo6dmFs
dWUsCiAgICAgICAgICAgICAgICAgIiIpOworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgIXR5cGVf
dHJhaXRzX2ludGVybmFsOjpJc0hhc2hhYmxlPHZhcmlhbnQ8SGFzaGFibGUsIE5vbkhhc2hhYmxl
Pj46OnZhbHVlLAorICAgICAgIiIpOwogI2VuZGlmCiAKIC8vIE1TVkMgc3RkOjpoYXNoPHN0ZDo6
dmFyaWFudD4gZG9lcyBub3QgdXNlIHRoZSBpbmRleCwgdGh1cyBwcm9kdWNlIHRoZSBzYW1lCkBA
IC0yMDAyLDggKzIwODEsOCBAQCBURVNUKFZhcmlhbnRUZXN0LCBIYXNoKSB7CiAjaWYgIShkZWZp
bmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKEFCU0xfSEFWRV9TVERfVkFSSUFOVCkpCiAgIHsKICAg
ICAvLyBzYW1lIHZhbHVlIGFzIGRpZmZlcmVudCBhbHRlcm5hdGl2ZQotICAgIHZhcmlhbnQ8aW50
LCBpbnQ+IHYwKGluX3BsYWNlX2luZGV4X3Q8MD57fSwgNDIpOwotICAgIHZhcmlhbnQ8aW50LCBp
bnQ+IHYxKGluX3BsYWNlX2luZGV4X3Q8MT57fSwgNDIpOworICAgIHZhcmlhbnQ8aW50LCBpbnQ+
IHYwKGluX3BsYWNlX2luZGV4PDA+LCA0Mik7CisgICAgdmFyaWFudDxpbnQsIGludD4gdjEoaW5f
cGxhY2VfaW5kZXg8MT4sIDQyKTsKICAgICBzdGQ6Omhhc2g8dmFyaWFudDxpbnQsIGludD4+IGhh
c2g7CiAgICAgRVhQRUNUX05FKGhhc2godjApLCBoYXNoKHYxKSk7CiAgIH0KQEAgLTIwMTgsMTEg
KzIwOTcsMTAgQEAgVEVTVChWYXJpYW50VGVzdCwgSGFzaCkgewogICAgIEVYUEVDVF9HVChoYXNo
Y29kZXMuc2l6ZSgpLCA5MCk7CiAKICAgICAvLyB0ZXN0IGNvbnN0LXF1YWxpZmllZAorICAgIHN0
YXRpY19hc3NlcnQodHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaGFibGU8dmFyaWFudDxjb25z
dCBpbnQ+Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAiIik7CiAgICAgc3RhdGljX2Fzc2Vy
dCgKLSAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaEVuYWJsZWQ8dmFyaWFudDxj
b25zdCBpbnQ+Pjo6dmFsdWUsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KAotICAgICAgICB0eXBl
X3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoRW5hYmxlZDx2YXJpYW50PGNvbnN0IEhhc2hhYmxlPj46
OnZhbHVlLAotICAgICAgICAiIik7CisgICAgICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hh
c2hhYmxlPHZhcmlhbnQ8Y29uc3QgSGFzaGFibGU+Pjo6dmFsdWUsICIiKTsKICAgICBzdGQ6Omhh
c2g8YWJzbDo6dmFyaWFudDxjb25zdCBpbnQ+PiBjX2hhc2g7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAxMDA7ICsraSkgewogICAgICAgRVhQRUNUX0VRKGhhc2goaSksIGNfaGFzaChpKSk7CkBA
IC0yMDM0LDcgKzIxMTIsOCBAQCBURVNUKFZhcmlhbnRUZXN0LCBIYXNoKSB7CiAvLyBNaXNjZWxs
YW5lb3VzIGFuZCBkZXByZWNhdGVkIHRlc3RzIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCiAKLS8vIFRlc3QgdGhhdCBhIHNldCByZXF1aXJpbmcgYSBiYXNpYyB0
eXBlIGNvbnZlcnNpb24gd29ya3MgY29ycmVjdGx5LgorLy8gVGVzdCB0aGF0IGEgc2V0IHJlcXVp
cmluZyBhIGJhc2ljIHR5cGUgY29udmVyc2lvbiB3b3JrcyBjb3JyZWN0bHkKKyNpZiAhZGVmaW5l
ZChBQlNMX0hBVkVfU1REX1ZBUklBTlQpCiBURVNUKFZhcmlhbnRUZXN0LCBUZXN0Q29udmVydGlu
Z1NldCkgewogICB0eXBlZGVmIHZhcmlhbnQ8ZG91YmxlPiBWYXJpYW50OwogICBWYXJpYW50IHYo
MS4wKTsKQEAgLTIwNDQsNiArMjEyMyw3IEBAIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RDb252ZXJ0
aW5nU2V0KSB7CiAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gYWJzbDo6Z2V0X2lmPGRvdWJsZT4o
JnYpKTsKICAgRVhQRUNUX0RPVUJMRV9FUSgyLCBhYnNsOjpnZXQ8ZG91YmxlPih2KSk7CiB9Cisj
ZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfVkFSSUFOVAogCiAvLyBUZXN0IHRoYXQgYSB2ZWN0b3Ig
b2YgdmFyaWFudHMgYmVoYXZlcyByZWFzb25hYmx5LgogVEVTVChWYXJpYW50VGVzdCwgQ29udGFp
bmVyKSB7CkBAIC0yMTcxLDcgKzIyNTEsOCBAQCBURVNUKFZhcmlhbnRUZXN0LCBUZXN0SW1wbGlj
aXRDb252ZXJzaW9uKSB7CiAKICAgLy8gV2Ugc3RpbGwgbmVlZCB0aGUgZXhwbGljaXQgY2FzdCBm
b3Igc3RkOjpzdHJpbmcsIGJlY2F1c2UgQysrIHdvbid0IGFwcGx5CiAgIC8vIHR3byB1c2VyLWRl
ZmluZWQgaW1wbGljaXQgY29udmVyc2lvbnMgaW4gYSByb3cuCi0gIEVYUEVDVF9UUlVFKGFic2w6
OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6c3RyaW5nPihQYXNzVGhyb3VnaChzdGQ6OnN0cmluZygi
Zm9vIikpKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8
c3RkOjpzdHJpbmc+KFBhc3NUaHJvdWdoKHN0ZDo6c3RyaW5nKCJmb28iKSkpKTsKIH0KIAogc3Ry
dWN0IENvbnZlcnRpYmxlMjsKQEAgLTIxOTQsOCArMjI3NSwxMCBAQCBzdHJ1Y3QgQ29udmVydGli
bGUyIHsKIH07CiAKIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RSdmFsdWVDb252ZXJzaW9uKSB7Cisj
aWYgIWRlZmluZWQoQUJTTF9IQVZFX1NURF9WQVJJQU5UKQogICB2YXJpYW50PGRvdWJsZSwgc3Rk
OjpzdHJpbmc+IHZhcigKLSAgICAgIENvbnZlcnRWYXJpYW50VG88dmFyaWFudDxkb3VibGUsIHN0
ZDo6c3RyaW5nPj4odmFyaWFudDxzdGQ6OnN0cmluZywgaW50PigwKSkpOworICAgICAgQ29udmVy
dFZhcmlhbnRUbzx2YXJpYW50PGRvdWJsZSwgc3RkOjpzdHJpbmc+PigKKyAgICAgICAgICB2YXJp
YW50PHN0ZDo6c3RyaW5nLCBpbnQ+KDApKSk7CiAgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRzX2Fs
dGVybmF0aXZlPGRvdWJsZT4odmFyKSk7CiAgIEVYUEVDVF9FUSgwLjAsIGFic2w6OmdldDxkb3Vi
bGU+KHZhcikpOwogCkBAIC0yMjI1LDYgKzIzMDgsNyBAQCBURVNUKFZhcmlhbnRUZXN0LCBUZXN0
UnZhbHVlQ29udmVyc2lvbikgewogICB2YXJpYW50MiA9IENvbnZlcnRWYXJpYW50VG88dmFyaWFu
dDxpbnQzMl90LCB1aW50MzJfdD4+KHZhcmlhbnQ8dWludDMyX3Q+KDQyKSk7CiAgIEFTU0VSVF9U
UlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPHVpbnQzMl90Pih2YXJpYW50MikpOwogICBFWFBF
Q1RfRVEoNDIsIGFic2w6OmdldDx1aW50MzJfdD4odmFyaWFudDIpKTsKKyNlbmRpZiAgLy8gIUFC
U0xfSEFWRV9TVERfVkFSSUFOVAogCiAgIHZhcmlhbnQ8Q29udmVydGlibGUxLCBDb252ZXJ0aWJs
ZTI+IHZhcmlhbnQzKAogICAgICAgQ29udmVydFZhcmlhbnRUbzx2YXJpYW50PENvbnZlcnRpYmxl
MSwgQ29udmVydGlibGUyPj4oCkBAIC0yMjM3LDYgKzIzMjEsNyBAQCBURVNUKFZhcmlhbnRUZXN0
LCBUZXN0UnZhbHVlQ29udmVyc2lvbikgewogfQogCiBURVNUKFZhcmlhbnRUZXN0LCBUZXN0THZh
bHVlQ29udmVyc2lvbikgeworI2lmICFkZWZpbmVkKEFCU0xfSEFWRV9TVERfVkFSSUFOVCkKICAg
dmFyaWFudDxzdGQ6OnN0cmluZywgaW50PiBzb3VyY2UxID0gMDsKICAgdmFyaWFudDxkb3VibGUs
IHN0ZDo6c3RyaW5nPiBkZXN0aW5hdGlvbigKICAgICAgIENvbnZlcnRWYXJpYW50VG88dmFyaWFu
dDxkb3VibGUsIHN0ZDo6c3RyaW5nPj4oc291cmNlMSkpOwpAQCAtMjI3Myw2ICsyMzU4LDcgQEAg
VEVTVChWYXJpYW50VGVzdCwgVGVzdEx2YWx1ZUNvbnZlcnNpb24pIHsKICAgdmFyaWFudDIgPSBD
b252ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8aW50MzJfdCwgdWludDMyX3Q+Pihzb3VyY2U2KTsKICAg
QVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8dWludDMyX3Q+KHZhcmlhbnQyKSk7
CiAgIEVYUEVDVF9FUSg0MiwgYWJzbDo6Z2V0PHVpbnQzMl90Pih2YXJpYW50MikpOworI2VuZGlm
CiAKICAgdmFyaWFudDxDb252ZXJ0aWJsZTIsIENvbnZlcnRpYmxlMT4gc291cmNlNygoQ29udmVy
dGlibGUxKCkpKTsKICAgdmFyaWFudDxDb252ZXJ0aWJsZTEsIENvbnZlcnRpYmxlMj4gdmFyaWFu
dDMoCkBAIC0yMjg3LDcgKzIzNzMsOCBAQCBURVNUKFZhcmlhbnRUZXN0LCBUZXN0THZhbHVlQ29u
dmVyc2lvbikgewogVEVTVChWYXJpYW50VGVzdCwgVGVzdE1vdmVDb252ZXJzaW9uKSB7CiAgIHVz
aW5nIFZhcmlhbnQgPQogICAgICAgdmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgaW50Piwg
c3RkOjp1bmlxdWVfcHRyPGNvbnN0IHN0ZDo6c3RyaW5nPj47Ci0gIHVzaW5nIE90aGVyVmFyaWFu
dCA9IHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPGludD4sIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0
cmluZz4+OworICB1c2luZyBPdGhlclZhcmlhbnQgPQorICAgICAgdmFyaWFudDxzdGQ6OnVuaXF1
ZV9wdHI8aW50Piwgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPj47CiAKICAgVmFyaWFudCB2
YXIoCiAgICAgICBDb252ZXJ0VmFyaWFudFRvPFZhcmlhbnQ+KE90aGVyVmFyaWFudHthYnNsOjpt
YWtlX3VuaXF1ZTxpbnQ+KDApfSkpOwpAQCAtMjI5NSw4ICsyMzgyLDggQEAgVEVTVChWYXJpYW50
VGVzdCwgVGVzdE1vdmVDb252ZXJzaW9uKSB7CiAgIEFTU0VSVF9ORShhYnNsOjpnZXQ8c3RkOjp1
bmlxdWVfcHRyPGNvbnN0IGludD4+KHZhciksIG51bGxwdHIpOwogICBFWFBFQ1RfRVEoMCwgKmFi
c2w6OmdldDxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgaW50Pj4odmFyKSk7CiAKLSAgdmFyID0KLSAg
ICAgIENvbnZlcnRWYXJpYW50VG88VmFyaWFudD4oT3RoZXJWYXJpYW50KGFic2w6Om1ha2VfdW5p
cXVlPHN0ZDo6c3RyaW5nPigiZm9vIikpKTsKKyAgdmFyID0gQ29udmVydFZhcmlhbnRUbzxWYXJp
YW50PigKKyAgICAgIE90aGVyVmFyaWFudChhYnNsOjptYWtlX3VuaXF1ZTxzdGQ6OnN0cmluZz4o
ImZvbyIpKSk7CiAgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6dW5p
cXVlX3B0cjxjb25zdCBzdGQ6OnN0cmluZz4+KHZhcikpOwogICBFWFBFQ1RfRVEoImZvbyIsICph
YnNsOjpnZXQ8c3RkOjp1bmlxdWVfcHRyPGNvbnN0IHN0ZDo6c3RyaW5nPj4odmFyKSk7CiB9CkBA
IC0yMzA3LDcgKzIzOTQsOCBAQCBURVNUKFZhcmlhbnRUZXN0LCBEb2VzTm90TW92ZUZyb21MdmFs
dWVzKSB7CiAgIC8vIHdoZXRoZXIgbW92aW5nIG9yIGNvcHlpbmcgaGFzIG9jY3VycmVkLgogICB1
c2luZyBWYXJpYW50ID0KICAgICAgIHZhcmlhbnQ8c3RkOjpzaGFyZWRfcHRyPGNvbnN0IGludD4s
IHN0ZDo6c2hhcmVkX3B0cjxjb25zdCBzdGQ6OnN0cmluZz4+OwotICB1c2luZyBPdGhlclZhcmlh
bnQgPSB2YXJpYW50PHN0ZDo6c2hhcmVkX3B0cjxpbnQ+LCBzdGQ6OnNoYXJlZF9wdHI8c3RkOjpz
dHJpbmc+PjsKKyAgdXNpbmcgT3RoZXJWYXJpYW50ID0KKyAgICAgIHZhcmlhbnQ8c3RkOjpzaGFy
ZWRfcHRyPGludD4sIHN0ZDo6c2hhcmVkX3B0cjxzdGQ6OnN0cmluZz4+OwogCiAgIFZhcmlhbnQg
djEoc3RkOjptYWtlX3NoYXJlZDxjb25zdCBpbnQ+KDApKTsKIApAQCAtMjMzNSw4ICsyNDIzLDEw
IEBAIFRFU1QoVmFyaWFudFRlc3QsIERvZXNOb3RNb3ZlRnJvbUx2YWx1ZXMpIHsKIH0KIAogVEVT
VChWYXJpYW50VGVzdCwgVGVzdFJ2YWx1ZUNvbnZlcnNpb25WaWFDb252ZXJ0VmFyaWFudFRvKSB7
CisjaWYgIWRlZmluZWQoQUJTTF9IQVZFX1NURF9WQVJJQU5UKQogICB2YXJpYW50PGRvdWJsZSwg
c3RkOjpzdHJpbmc+IHZhcigKLSAgICAgIENvbnZlcnRWYXJpYW50VG88dmFyaWFudDxkb3VibGUs
IHN0ZDo6c3RyaW5nPj4odmFyaWFudDxzdGQ6OnN0cmluZywgaW50PigzKSkpOworICAgICAgQ29u
dmVydFZhcmlhbnRUbzx2YXJpYW50PGRvdWJsZSwgc3RkOjpzdHJpbmc+PigKKyAgICAgICAgICB2
YXJpYW50PHN0ZDo6c3RyaW5nLCBpbnQ+KDMpKSk7CiAgIEVYUEVDVF9USEFUKGFic2w6OmdldF9p
Zjxkb3VibGU+KCZ2YXIpLCBQb2ludGVlKDMuMCkpOwogCiAgIHZhciA9IENvbnZlcnRWYXJpYW50
VG88dmFyaWFudDxkb3VibGUsIHN0ZDo6c3RyaW5nPj4oCkBAIC0yMzU5LDYgKzI0NDksNyBAQCBU
RVNUKFZhcmlhbnRUZXN0LCBUZXN0UnZhbHVlQ29udmVyc2lvblZpYUNvbnZlcnRWYXJpYW50VG8p
IHsKIAogICB2YXJpYW50MiA9IENvbnZlcnRWYXJpYW50VG88dmFyaWFudDxpbnQzMl90LCB1aW50
MzJfdD4+KHZhcmlhbnQ8dWludDMyX3Q+KDQyKSk7CiAgIEVYUEVDVF9USEFUKGFic2w6OmdldF9p
Zjx1aW50MzJfdD4oJnZhcmlhbnQyKSwgUG9pbnRlZSg0MikpOworI2VuZGlmCiAKICAgdmFyaWFu
dDxDb252ZXJ0aWJsZTEsIENvbnZlcnRpYmxlMj4gdmFyaWFudDMoCiAgICAgICBDb252ZXJ0VmFy
aWFudFRvPHZhcmlhbnQ8Q29udmVydGlibGUxLCBDb252ZXJ0aWJsZTI+PigKQEAgLTIzNzEsNiAr
MjQ2Miw3IEBAIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RSdmFsdWVDb252ZXJzaW9uVmlhQ29udmVy
dFZhcmlhbnRUbykgewogfQogCiBURVNUKFZhcmlhbnRUZXN0LCBUZXN0THZhbHVlQ29udmVyc2lv
blZpYUNvbnZlcnRWYXJpYW50VG8pIHsKKyNpZiAhZGVmaW5lZChBQlNMX0hBVkVfU1REX1ZBUklB
TlQpCiAgIHZhcmlhbnQ8c3RkOjpzdHJpbmcsIGludD4gc291cmNlMSA9IDM7CiAgIHZhcmlhbnQ8
ZG91YmxlLCBzdGQ6OnN0cmluZz4gZGVzdGluYXRpb24oCiAgICAgICBDb252ZXJ0VmFyaWFudFRv
PHZhcmlhbnQ8ZG91YmxlLCBzdGQ6OnN0cmluZz4+KHNvdXJjZTEpKTsKQEAgLTIzNzgsNyArMjQ3
MCw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RMdmFsdWVDb252ZXJzaW9uVmlhQ29udmVydFZh
cmlhbnRUbykgewogCiAgIHZhcmlhbnQ8Y29uc3QgY2hhciosIGZsb2F0PiBzb3VyY2UyID0gImZv
byI7CiAgIGRlc3RpbmF0aW9uID0gQ29udmVydFZhcmlhbnRUbzx2YXJpYW50PGRvdWJsZSwgc3Rk
OjpzdHJpbmc+Pihzb3VyY2UyKTsKLSAgRVhQRUNUX1RIQVQoYWJzbDo6Z2V0X2lmPHN0ZDo6c3Ry
aW5nPigmZGVzdGluYXRpb24pLCBQb2ludGVlKHN0ZDo6c3RyaW5nKCJmb28iKSkpOworICBFWFBF
Q1RfVEhBVChhYnNsOjpnZXRfaWY8c3RkOjpzdHJpbmc+KCZkZXN0aW5hdGlvbiksCisgICAgICAg
ICAgICAgIFBvaW50ZWUoc3RkOjpzdHJpbmcoImZvbyIpKSk7CiAKICAgdmFyaWFudDxpbnQsIGZs
b2F0PiBzb3VyY2UzKDQyKTsKICAgdmFyaWFudDxkb3VibGU+IHNpbmdsZXRvbihDb252ZXJ0VmFy
aWFudFRvPHZhcmlhbnQ8ZG91YmxlPj4oc291cmNlMykpOwpAQCAtMjQwMSw2ICsyNDk0LDcgQEAg
VEVTVChWYXJpYW50VGVzdCwgVGVzdEx2YWx1ZUNvbnZlcnNpb25WaWFDb252ZXJ0VmFyaWFudFRv
KSB7CiAgIHZhcmlhbnQ8dWludDMyX3Q+IHNvdXJjZTYoNDIpOwogICB2YXJpYW50MiA9IENvbnZl
cnRWYXJpYW50VG88dmFyaWFudDxpbnQzMl90LCB1aW50MzJfdD4+KHNvdXJjZTYpOwogICBFWFBF
Q1RfVEhBVChhYnNsOjpnZXRfaWY8dWludDMyX3Q+KCZ2YXJpYW50MiksIFBvaW50ZWUoNDIpKTsK
KyNlbmRpZiAgLy8gIUFCU0xfSEFWRV9TVERfVkFSSUFOVAogCiAgIHZhcmlhbnQ8Q29udmVydGli
bGUyLCBDb252ZXJ0aWJsZTE+IHNvdXJjZTcoKENvbnZlcnRpYmxlMSgpKSk7CiAgIHZhcmlhbnQ8
Q29udmVydGlibGUxLCBDb252ZXJ0aWJsZTI+IHZhcmlhbnQzKApAQCAtMjQxNSwxNSArMjUwOSwx
NiBAQCBURVNUKFZhcmlhbnRUZXN0LCBUZXN0THZhbHVlQ29udmVyc2lvblZpYUNvbnZlcnRWYXJp
YW50VG8pIHsKIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RNb3ZlQ29udmVyc2lvblZpYUNvbnZlcnRW
YXJpYW50VG8pIHsKICAgdXNpbmcgVmFyaWFudCA9CiAgICAgICB2YXJpYW50PHN0ZDo6dW5pcXVl
X3B0cjxjb25zdCBpbnQ+LCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qgc3RkOjpzdHJpbmc+PjsKLSAg
dXNpbmcgT3RoZXJWYXJpYW50ID0gdmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8aW50Piwgc3RkOjp1
bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPj47CisgIHVzaW5nIE90aGVyVmFyaWFudCA9CisgICAgICB2
YXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+
PjsKIAogICBWYXJpYW50IHZhcigKICAgICAgIENvbnZlcnRWYXJpYW50VG88VmFyaWFudD4oT3Ro
ZXJWYXJpYW50e2Fic2w6Om1ha2VfdW5pcXVlPGludD4oMyl9KSk7CiAgIEVYUEVDVF9USEFUKGFi
c2w6OmdldF9pZjxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgaW50Pj4oJnZhciksCiAgICAgICAgICAg
ICAgIFBvaW50ZWUoUG9pbnRlZSgzKSkpOwogCi0gIHZhciA9Ci0gICAgICBDb252ZXJ0VmFyaWFu
dFRvPFZhcmlhbnQ+KE90aGVyVmFyaWFudChhYnNsOjptYWtlX3VuaXF1ZTxzdGQ6OnN0cmluZz4o
ImZvbyIpKSk7CisgIHZhciA9IENvbnZlcnRWYXJpYW50VG88VmFyaWFudD4oCisgICAgICBPdGhl
clZhcmlhbnQoYWJzbDo6bWFrZV91bmlxdWU8c3RkOjpzdHJpbmc+KCJmb28iKSkpOwogICBFWFBF
Q1RfVEhBVChhYnNsOjpnZXRfaWY8c3RkOjp1bmlxdWVfcHRyPGNvbnN0IHN0ZDo6c3RyaW5nPj4o
JnZhciksCiAgICAgICAgICAgICAgIFBvaW50ZWUoUG9pbnRlZShzdGQ6OnN0cmluZygiZm9vIikp
KSk7CiB9CkBAIC0yNTkzLDcgKzI2ODgsNyBAQCBURVNUKFZhcmlhbnRUZXN0LCBNb3ZlQ3RvckJ1
ZykgewogICB9OwogICB7CiAgICAgdXNpbmcgViA9IGFic2w6OnZhcmlhbnQ8VHJpdmlhbENvcHlO
b250cml2aWFsTW92ZSwgaW50PjsKLSAgICBWIHYxKGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57
fSk7CisgICAgViB2MShhYnNsOjppbl9wbGFjZV9pbmRleDwwPik7CiAgICAgLy8gdGhpcyBzaG91
bGQgaW52b2tlIHRoZSBtb3ZlIGN0b3IsIHJhdGhlciB0aGFuIHRoZSB0cml2aWFsIGNvcHkgY3Rv
ci4KICAgICBWIHYyKHN0ZDo6bW92ZSh2MSkpOwogICAgIEVYUEVDVF9UUlVFKGFic2w6OmdldDww
Pih2MikuY2FsbGVkKTsKQEAgLTI2MDEsNyArMjY5Niw3IEBAIFRFU1QoVmFyaWFudFRlc3QsIE1v
dmVDdG9yQnVnKSB7CiAgIHsKICAgICAvLyB0aGlzIGNhc2UgZmFpbGVkIHRvIGNvbXBpbGUgYmVm
b3JlIG91ciBmaXggZHVlIHRvIGEgR0NDIGJ1Zy4KICAgICB1c2luZyBWID0gYWJzbDo6dmFyaWFu
dDxpbnQsIFRyaXZpYWxDb3B5Tm9udHJpdmlhbE1vdmU+OwotICAgIFYgdjEoYWJzbDo6aW5fcGxh
Y2VfaW5kZXhfdDwxPnt9KTsKKyAgICBWIHYxKGFic2w6OmluX3BsYWNlX2luZGV4PDE+KTsKICAg
ICAvLyB0aGlzIHNob3VsZCBpbnZva2UgdGhlIG1vdmUgY3RvciwgcmF0aGVyIHRoYW4gdGhlIHRy
aXZpYWwgY29weSBjdG9yLgogICAgIFYgdjIoc3RkOjptb3ZlKHYxKSk7CiAgICAgRVhQRUNUX1RS
VUUoYWJzbDo6Z2V0PDE+KHYyKS5jYWxsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS9C
VUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvQlVJTEQuYmF6ZWwKaW5kZXggYzAxYjQ5YmM5N2Qu
LmQ0MTMxN2UzNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L0JVSUxELmJhemVsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3V0aWxpdHkvQlVJTEQuYmF6ZWwKQEAgLTEsNiArMSw3IEBACiBsb2FkKAotICAgICIv
L2Fic2w6Y29wdHMuYnpsIiwKKyAgICAiLy9hYnNsOmNvcHRzL2NvbmZpZ3VyZV9jb3B0cy5iemwi
LAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElOS09QVFMi
LAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogKQogCkBAIC0xMiw2ICsxMyw3IEBAIGNjX2xpYnJh
cnkoCiAgICAgbmFtZSA9ICJ1dGlsaXR5IiwKICAgICBoZHJzID0gWyJ1dGlsaXR5LmgiXSwKICAg
ICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2U6YmFzZV9pbnRl
cm5hbCIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLApAQCAtMjMsNiArMjUsNyBAQCBj
Y190ZXN0KAogICAgIG5hbWUgPSAidXRpbGl0eV90ZXN0IiwKICAgICBzcmNzID0gWyJ1dGlsaXR5
X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9
IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnV0aWxpdHki
LAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3V0aWxpdHkvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L0JVSUxELmduCmluZGV4IDRjZjNjODEw
ZTY1Li40OTM5MGIzZmQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS9CVUlMRC5nbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC91dGlsaXR5L0JVSUxELmduCkBAIC02LDYgKzYsNyBAQCBpbXBvcnQoIi8vYnVpbGRf
b3ZlcnJpZGVzL2J1aWxkLmduaSIpCiAKIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CiAgIHZp
c2liaWxpdHkgPSBbCisgICAgIi8vbGliYXNzaXN0YW50LyoiLAogICAgICIvL3RoaXJkX3BhcnR5
L3dlYnJ0Yy8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAogICAgICIvL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3Q6Z3Rlc3QiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvQ01ha2VMaXN0cy50eHQKaW5kZXggZGMzYTYz
MTkwNTQuLmUxZWRkMTlhYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvQ01ha2VMaXN0cy50eHQKQEAgLTUsNyArNSw3IEBACiAj
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0j
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC0xNCwzOSArMTQsMzEgQEAKICMgbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCiAjCiAKLQotbGlzdChBUFBFTkQgVVRJTElUWV9QVUJMSUNfSEVBREVSUwot
ICAidXRpbGl0eS5oIgotKQotCi1hYnNsX2hlYWRlcl9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBh
YnNsX3V0aWxpdHkKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2w6OmJhc2UKLSAgRVhQT1JU
X05BTUUKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQogICAgIHV0aWxpdHkKKyAgSERSUworICAg
ICJ1dGlsaXR5LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpiYXNlX2ludGVybmFsCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6dHlw
ZV90cmFpdHMKKyAgUFVCTElDCiApCiAKLQotIwotIyMgVEVTVFMKLSMKLQotIyB0ZXN0IHV0aWxp
dHlfdGVzdAotc2V0KFVUSUxJVFlfVEVTVF9TUkMgInV0aWxpdHlfdGVzdC5jYyIpCi1zZXQoVVRJ
TElUWV9URVNUX1BVQkxJQ19MSUJSQVJJRVMKLSAgYWJzbDo6YmFzZQotICBhYnNsOjptZW1vcnkK
LSAgYWJzbDo6c3RyaW5ncwotICBhYnNsOjp1dGlsaXR5Ci0pCi0KLWFic2xfdGVzdCgKLSAgVEFS
R0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICB1dGlsaXR5X3Rlc3QKLSAgU09VUkNFUwot
ICAgICR7VVRJTElUWV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7VVRJTElU
WV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAidXRpbGl0eV90ZXN0LmNjIgor
ICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6dXRpbGl0
eQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6OnN0
cmluZ3MKKyAgICBnbW9ja19tYWluCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxp
dHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3V0aWxpdHkvdXRpbGl0eS5oCmluZGV4IGFlZjRiYWEwMmRjLi5lZWY4ZmI0
MWZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS91dGlsaXR5LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRp
bGl0eS91dGlsaXR5LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTI1LDYgKzI1LDcgQEAKIC8vICAgKiBpbmRleF9zZXF1ZW5jZV9mb3I8VHMuLi4+ICAgICA9
PSBzdGQ6OmluZGV4X3NlcXVlbmNlX2ZvcjxUcy4uLj4KIC8vICAgKiBhcHBseTxGdW5jdG9yLCBU
dXBsZT4gICAgICAgICA9PSBzdGQ6OmFwcGx5PEZ1bmN0b3IsIFR1cGxlPgogLy8gICAqIGV4Y2hh
bmdlPFQ+ICAgICAgICAgICAgICAgICAgID09IHN0ZDo6ZXhjaGFuZ2U8VD4KKy8vICAgKiBtYWtl
X2Zyb21fdHVwbGU8VD4gICAgICAgICAgICA9PSBzdGQ6Om1ha2VfZnJvbV90dXBsZTxUPgogLy8K
IC8vIFRoaXMgaGVhZGVyIGZpbGUgYWxzbyBwcm92aWRlcyB0aGUgdGFnIHR5cGVzIGBpbl9wbGFj
ZV90YCwgYGluX3BsYWNlX3R5cGVfdGAsCiAvLyBhbmQgYGluX3BsYWNlX2luZGV4X3RgLCBhcyB3
ZWxsIGFzIHRoZSBjb25zdGFudCBgaW5fcGxhY2VgLCBhbmQKQEAgLTMyLDEwICszMyw5IEBACiAv
LwogLy8gUmVmZXJlbmNlczoKIC8vCi0vLyAgaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9j
cHAvdXRpbGl0eS9pbnRlZ2VyX3NlcXVlbmNlCi0vLyAgaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5j
b20vdy9jcHAvdXRpbGl0eS9hcHBseQorLy8gIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93
L2NwcC91dGlsaXR5L2ludGVnZXJfc2VxdWVuY2UKKy8vICBodHRwczovL2VuLmNwcHJlZmVyZW5j
ZS5jb20vdy9jcHAvdXRpbGl0eS9hcHBseQogLy8gIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0
YzEvc2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIwMTMvbjM2NTguaHRtbAotLy8KIAogI2lmbmRlZiBB
QlNMX1VUSUxJVFlfVVRJTElUWV9IXwogI2RlZmluZSBBQlNMX1VUSUxJVFlfVVRJTElUWV9IXwpA
QCAtMTE0LDYgKzExNCwyMCBAQCBzdHJ1Y3QgR2VuPFQsIDA+IHsKICAgdXNpbmcgdHlwZSA9IGlu
dGVnZXJfc2VxdWVuY2U8VD47CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJ
blBsYWNlVHlwZVRhZyB7CisgIGV4cGxpY2l0IEluUGxhY2VUeXBlVGFnKCkgPSBkZWxldGU7Cisg
IEluUGxhY2VUeXBlVGFnKGNvbnN0IEluUGxhY2VUeXBlVGFnJikgPSBkZWxldGU7CisgIEluUGxh
Y2VUeXBlVGFnJiBvcGVyYXRvcj0oY29uc3QgSW5QbGFjZVR5cGVUYWcmKSA9IGRlbGV0ZTsKK307
CisKK3RlbXBsYXRlIDxzaXplX3QgST4KK3N0cnVjdCBJblBsYWNlSW5kZXhUYWcgeworICBleHBs
aWNpdCBJblBsYWNlSW5kZXhUYWcoKSA9IGRlbGV0ZTsKKyAgSW5QbGFjZUluZGV4VGFnKGNvbnN0
IEluUGxhY2VJbmRleFRhZyYpID0gZGVsZXRlOworICBJblBsYWNlSW5kZXhUYWcmIG9wZXJhdG9y
PShjb25zdCBJblBsYWNlSW5kZXhUYWcmKSA9IGRlbGV0ZTsKK307CisKIH0gIC8vIG5hbWVzcGFj
ZSB1dGlsaXR5X2ludGVybmFsCiAKIC8vIENvbXBpbGUtdGltZSBzZXF1ZW5jZXMgb2YgaW50ZWdl
cnMKQEAgLTE2Myw2ICsxNzcsNyBAQCBBQlNMX0lOVEVSTkFMX0lOTElORV9DT05TVEVYUFIoaW5f
cGxhY2VfdCwgaW5fcGxhY2UsIHt9KTsKICNlbmRpZiAgLy8gQUJTTF9IQVZFX1NURF9PUFRJT05B
TAogCiAjaWYgZGVmaW5lZChBQlNMX0hBVkVfU1REX0FOWSkgfHwgZGVmaW5lZChBQlNMX0hBVkVf
U1REX1ZBUklBTlQpCit1c2luZyBzdGQ6OmluX3BsYWNlX3R5cGU7CiB1c2luZyBzdGQ6OmluX3Bs
YWNlX3R5cGVfdDsKICNlbHNlCiAKQEAgLTE3MiwxMCArMTg3LDE0IEBAIHVzaW5nIHN0ZDo6aW5f
cGxhY2VfdHlwZV90OwogLy8gYmUgc3BlY2lmaWVkLCBzdWNoIGFzIHdpdGggYGFic2w6OmFueWAs
IGRlc2lnbmVkIHRvIGJlIGEgZHJvcC1pbiByZXBsYWNlbWVudAogLy8gZm9yIEMrKzE3J3MgYHN0
ZDo6aW5fcGxhY2VfdHlwZV90YC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGluX3Bs
YWNlX3R5cGVfdCB7fTsKK3VzaW5nIGluX3BsYWNlX3R5cGVfdCA9IHZvaWQgKCopKHV0aWxpdHlf
aW50ZXJuYWw6OkluUGxhY2VUeXBlVGFnPFQ+KTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2
b2lkIGluX3BsYWNlX3R5cGUodXRpbGl0eV9pbnRlcm5hbDo6SW5QbGFjZVR5cGVUYWc8VD4pIHt9
CiAjZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfQU5ZIHx8IEFCU0xfSEFWRV9TVERfVkFSSUFOVAog
CiAjaWZkZWYgQUJTTF9IQVZFX1NURF9WQVJJQU5UCit1c2luZyBzdGQ6OmluX3BsYWNlX2luZGV4
OwogdXNpbmcgc3RkOjppbl9wbGFjZV9pbmRleF90OwogI2Vsc2UKIApAQCAtMTg1LDcgKzIwNCwx
MCBAQCB1c2luZyBzdGQ6OmluX3BsYWNlX2luZGV4X3Q7CiAvLyBiZSBzcGVjaWZpZWQsIHN1Y2gg
YXMgd2l0aCBgYWJzbDo6YW55YCwgZGVzaWduZWQgdG8gYmUgYSBkcm9wLWluIHJlcGxhY2VtZW50
CiAvLyBmb3IgQysrMTcncyBgc3RkOjppbl9wbGFjZV9pbmRleF90YC4KIHRlbXBsYXRlIDxzaXpl
X3QgST4KLXN0cnVjdCBpbl9wbGFjZV9pbmRleF90IHt9OwordXNpbmcgaW5fcGxhY2VfaW5kZXhf
dCA9IHZvaWQgKCopKHV0aWxpdHlfaW50ZXJuYWw6OkluUGxhY2VJbmRleFRhZzxJPik7CisKK3Rl
bXBsYXRlIDxzaXplX3QgST4KK3ZvaWQgaW5fcGxhY2VfaW5kZXgodXRpbGl0eV9pbnRlcm5hbDo6
SW5QbGFjZUluZGV4VGFnPEk+KSB7fQogI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX1ZBUklBTlQK
IAogLy8gQ29uc3RleHByIG1vdmUgYW5kIGZvcndhcmQKQEAgLTIzNCwyNSArMjU2LDMzIEBAIGF1
dG8gYXBwbHlfaGVscGVyKEZ1bmN0b3ImJiBmdW5jdG9yLCBUdXBsZSYmIHQsIGluZGV4X3NlcXVl
bmNlPEluZGV4ZXMuLi4+KQogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBjbGFzcyBGb297dm9p
ZCBCYXIoaW50KTt9OwotLy8gICB2b2lkIHVzZXJfZnVuY3Rpb24oaW50LCBzdHJpbmcpOwotLy8g
ICB2b2lkIHVzZXJfZnVuY3Rpb24oc3RkOjp1bmlxdWVfcHRyPEZvbz4pOworLy8gICBjbGFzcyBG
b28geworLy8gICAgcHVibGljOgorLy8gICAgIHZvaWQgQmFyKGludCk7CisvLyAgIH07CisvLyAg
IHZvaWQgdXNlcl9mdW5jdGlvbjEoaW50LCBzdGQ6OnN0cmluZyk7CisvLyAgIHZvaWQgdXNlcl9m
dW5jdGlvbjIoc3RkOjp1bmlxdWVfcHRyPEZvbz4pOworLy8gICBhdXRvIHVzZXJfbGFtYmRhID0g
W10oaW50LCBpbnQpIHt9OwogLy8KIC8vICAgaW50IG1haW4oKQogLy8gICB7Ci0vLyAgICAgICBz
dGQ6OnR1cGxlPGludCwgc3RyaW5nPiB0dXBsZTEoNDIsICJiYXIiKTsKLS8vICAgICAgIC8vIElu
dm9rZXMgdGhlIHVzZXIgZnVuY3Rpb24gb3ZlcmxvYWQgb24gaW50LCBzdHJpbmcuCi0vLyAgICAg
ICBhYnNsOjphcHBseSgmdXNlcl9mdW5jdGlvbiwgdHVwbGUxKTsKKy8vICAgICAgIHN0ZDo6dHVw
bGU8aW50LCBzdGQ6OnN0cmluZz4gdHVwbGUxKDQyLCAiYmFyIik7CisvLyAgICAgICAvLyBJbnZv
a2VzIHRoZSBmaXJzdCB1c2VyIGZ1bmN0aW9uIG9uIGludCwgc3RkOjpzdHJpbmcuCisvLyAgICAg
ICBhYnNsOjphcHBseSgmdXNlcl9mdW5jdGlvbjEsIHR1cGxlMSk7CiAvLwotLy8gICAgICAgYXV0
byBmb28gPSBhYnNsOjptYWtlX3VuaXF1ZTxGb28+KCk7Ci0vLyAgICAgICBzdGQ6OnR1cGxlPEZv
byosIGludD4gdHVwbGUyKGZvby5nZXQoKSwgNDIpOwotLy8gICAgICAgLy8gSW52b2tlcyB0aGUg
bWV0aG9kIEJhciBvbiBmb28gd2l0aCBvbmUgYXJndW1lbnQgNDIuCi0vLyAgICAgICBhYnNsOjph
cHBseSgmRm9vOjpCYXIsIGZvby5nZXQoKSwgNDIpOwotLy8KLS8vICAgICAgIHN0ZDo6dHVwbGU8
c3RkOjp1bmlxdWVfcHRyPEZvbz4+IHR1cGxlMyhhYnNsOjptYWtlX3VuaXF1ZTxGb28+KCkpOwor
Ly8gICAgICAgc3RkOjp0dXBsZTxzdGQ6OnVuaXF1ZV9wdHI8Rm9vPj4gdHVwbGUyKGFic2w6Om1h
a2VfdW5pcXVlPEZvbz4oKSk7CiAvLyAgICAgICAvLyBJbnZva2VzIHRoZSB1c2VyIGZ1bmN0aW9u
IHRoYXQgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSB1bmlxdWUKIC8vICAgICAgIC8vIHBvaW50ZXIu
Ci0vLyAgICAgICBhYnNsOjphcHBseSgmdXNlcl9mdW5jdGlvbiwgc3RkOjptb3ZlKHR1cGxlKSk7
CisvLyAgICAgICBhYnNsOjphcHBseSgmdXNlcl9mdW5jdGlvbjIsIHN0ZDo6bW92ZSh0dXBsZTIp
KTsKKy8vCisvLyAgICAgICBhdXRvIGZvbyA9IGFic2w6Om1ha2VfdW5pcXVlPEZvbz4oKTsKKy8v
ICAgICAgIHN0ZDo6dHVwbGU8Rm9vKiwgaW50PiB0dXBsZTMoZm9vLmdldCgpLCA0Mik7CisvLyAg
ICAgICAvLyBJbnZva2VzIHRoZSBtZXRob2QgQmFyIG9uIGZvbyB3aXRoIG9uZSBhcmd1bWVudCwg
NDIuCisvLyAgICAgICBhYnNsOjphcHBseSgmRm9vOjpCYXIsIHR1cGxlMyk7CisvLworLy8gICAg
ICAgc3RkOjp0dXBsZTxpbnQsIGludD4gdHVwbGU0KDgsIDkpOworLy8gICAgICAgLy8gSW52b2tl
cyBhIGxhbWJkYS4KKy8vICAgICAgIGFic2w6OmFwcGx5KHVzZXJfbGFtYmRhLCB0dXBsZTQpOwog
Ly8gICB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVHVwbGU+CiBhdXRv
IGFwcGx5KEZ1bmN0b3ImJiBmdW5jdG9yLCBUdXBsZSYmIHQpCkBAIC0yODYsNiArMzE2LDMzIEBA
IFQgZXhjaGFuZ2UoVCYgb2JqLCBVJiYgbmV3X3ZhbHVlKSB7CiAgIHJldHVybiBvbGRfdmFsdWU7
CiB9CiAKK25hbWVzcGFjZSB1dGlsaXR5X2ludGVybmFsIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBUdXBsZSwgc2l6ZV90Li4uIEk+CitUIG1ha2VfZnJvbV90dXBsZV9pbXBsKFR1
cGxlJiYgdHVwLCBhYnNsOjppbmRleF9zZXF1ZW5jZTxJLi4uPikgeworICByZXR1cm4gVChzdGQ6
OmdldDxJPihzdGQ6OmZvcndhcmQ8VHVwbGU+KHR1cCkpLi4uKTsKK30KK30gIC8vIG5hbWVzcGFj
ZSB1dGlsaXR5X2ludGVybmFsCisKKy8vIG1ha2VfZnJvbV90dXBsZQorLy8KKy8vIEdpdmVuIHRo
ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdHlwZSBgVGAgYW5kIGEgdHVwbGUgb2YgYXJndW1lbnRzCisv
LyBgc3RkOjp0dXBsZShhcmcwLCBhcmcxLCAuLi4sIGFyZ04pYCBjb25zdHJ1Y3RzIGFuIG9iamVj
dCBvZiB0eXBlIGBUYCBhcyBpZiBieQorLy8gY2FsbGluZyBgVChhcmcwLCBhcmcxLCAuLi4sIGFy
Z04pYC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgc3RkOjp0dXBsZTxjb25zdCBjaGFyKiwg
c2l6ZV90PiBhcmdzKCJoZWxsbyB3b3JsZCIsIDUpOworLy8gICBhdXRvIHMgPSBhYnNsOjptYWtl
X2Zyb21fdHVwbGU8c3RkOjpzdHJpbmc+KGFyZ3MpOworLy8gICBhc3NlcnQocyA9PSAiaGVsbG8i
KTsKKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHVwbGU+Citjb25zdGV4cHIg
VCBtYWtlX2Zyb21fdHVwbGUoVHVwbGUmJiB0dXApIHsKKyAgcmV0dXJuIHV0aWxpdHlfaW50ZXJu
YWw6Om1ha2VfZnJvbV90dXBsZV9pbXBsPFQ+KAorICAgICAgc3RkOjpmb3J3YXJkPFR1cGxlPih0
dXApLAorICAgICAgYWJzbDo6bWFrZV9pbmRleF9zZXF1ZW5jZTwKKyAgICAgICAgICBzdGQ6OnR1
cGxlX3NpemU8YWJzbDo6ZGVjYXlfdDxUdXBsZT4+Ojp2YWx1ZT57fSk7Cit9CisKIH0gIC8vIG5h
bWVzcGFjZSBhYnNsCiAKICNlbmRpZiAgLy8gQUJTTF9VVElMSVRZX1VUSUxJVFlfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3V0aWxpdHkvdXRpbGl0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS91dGls
aXR5X3Rlc3QuY2MKaW5kZXggM2M0NDdiMjBiYjAuLmYwNDRhZDY0NGE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC91dGlsaXR5L3V0aWxpdHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHlf
dGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTM1
LDcgKzEzNSw3IEBAIHN0cnVjdCBQb29yU3RyQ2F0IHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFR1
cCwgc2l6ZV90Li4uIElzPgogc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFR1cFN0cmluZ1ZlY0lt
cGwoY29uc3QgVHVwJiB0dXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWJzbDo6aW5kZXhfc2VxdWVuY2U8SXMuLi4+KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhYnNsOjppbmRleF9zZXF1ZW5jZTxJcy4uLj4pIHsKICAgcmV0dXJu
IHtGbXQoc3RkOjpnZXQ8SXM+KHR1cCkpLi4ufTsKIH0KIApAQCAtMzQxLDUgKzM0MSwzNiBAQCBU
RVNUKEV4Y2hhbmdlVGVzdCwgTW92ZU9ubHkpIHsKICAgRVhQRUNUX0VRKDEsICpiKTsKIH0KIAor
VEVTVChNYWtlRnJvbVR1cGxlVGVzdCwgU3RyaW5nKSB7CisgIEVYUEVDVF9FUSgKKyAgICAgIGFi
c2w6Om1ha2VfZnJvbV90dXBsZTxzdGQ6OnN0cmluZz4oc3RkOjptYWtlX3R1cGxlKCJoZWxsbyB3
b3JsZCIsIDUpKSwKKyAgICAgICJoZWxsbyIpOworfQorCitURVNUKE1ha2VGcm9tVHVwbGVUZXN0
LCBNb3ZlT25seVBhcmFtZXRlcikgeworICBzdHJ1Y3QgUyB7CisgICAgUyhzdGQ6OnVuaXF1ZV9w
dHI8aW50PiBuLCBzdGQ6OnVuaXF1ZV9wdHI8aW50PiBtKSA6IHZhbHVlKCpuICsgKm0pIHt9Cisg
ICAgaW50IHZhbHVlID0gMDsKKyAgfTsKKyAgYXV0byB0dXAgPQorICAgICAgc3RkOjptYWtlX3R1
cGxlKGFic2w6Om1ha2VfdW5pcXVlPGludD4oMyksIGFic2w6Om1ha2VfdW5pcXVlPGludD4oNCkp
OworICBhdXRvIHMgPSBhYnNsOjptYWtlX2Zyb21fdHVwbGU8Uz4oc3RkOjptb3ZlKHR1cCkpOwor
ICBFWFBFQ1RfRVEocy52YWx1ZSwgNyk7Cit9CisKK1RFU1QoTWFrZUZyb21UdXBsZVRlc3QsIE5v
UGFyYW1ldGVycykgeworICBzdHJ1Y3QgUyB7CisgICAgUygpIDogdmFsdWUoMSkge30KKyAgICBp
bnQgdmFsdWUgPSAyOworICB9OworICBFWFBFQ1RfRVEoYWJzbDo6bWFrZV9mcm9tX3R1cGxlPFM+
KHN0ZDo6bWFrZV90dXBsZSgpKS52YWx1ZSwgMSk7Cit9CisKK1RFU1QoTWFrZUZyb21UdXBsZVRl
c3QsIFBhaXIpIHsKKyAgRVhQRUNUX0VRKAorICAgICAgKGFic2w6Om1ha2VfZnJvbV90dXBsZTxz
dGQ6OnBhaXI8Ym9vbCwgaW50Pj4oc3RkOjptYWtlX3R1cGxlKHRydWUsIDE3KSkpLAorICAgICAg
c3RkOjptYWtlX3BhaXIodHJ1ZSwgMTcpKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9yZW5hbWVfZHluYW1pY19hbm5vdGF0aW9ucy5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9yZW5hbWVfYW5ub3RhdGlv
bnMuc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpzaW1pbGFyaXR5IGluZGV4IDc1
JQpyZW5hbWUgZnJvbSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvcmVuYW1lX2R5bmFtaWNfYW5ub3RhdGlvbnMuc2gKcmVuYW1lIHRvIFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9y
ZW5hbWVfYW5ub3RhdGlvbnMuc2gKaW5kZXggYjM5MDE3Zjk1ODUuLmZhMmRlNGQ5ZDUwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9yZW5hbWVfZHluYW1pY19hbm5vdGF0aW9ucy5zaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvcmVuYW1lX2Fubm90YXRpb25z
LnNoCkBAIC0xLDE0ICsxLDE1IEBACiAjIS9iaW4vYmFzaAogCiAjIFRoaXMgc2NyaXB0IHJlbmFt
ZXMgYWxsIHRoZSBmdW5jdGlvbnMgYW5kIHRoZSBtYWNyb3MgZGVmaW5lZCBpbgotIyBhYnNsL2Jh
c2UvZHluYW1pY19hbm5vdGF0aW9ucy57aCxjY30uCisjIGFic2wvYmFzZS9keW5hbWljX2Fubm90
YXRpb25zLntoLGNjfSBhbmQgYWJzbC9iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oLgogIwogIyBD
aHJvbWl1bSdzIGR5bmFtaWNfYW5ub3RhdGlvbnMgbGl2ZSBpbiAvL2Jhc2UvdGhpcmRfcGFydHkv
ZHluYW1pY19hbm5vdGF0aW9ucwotIyBhbmQgdGhlIGFyZSBpbiBjb25mbGljdCB3aXRoIEFic2Vp
bCdzIGR5bmFtaWNfYW5ub3RhdGlvbnMgKE9EUiB2aW9sYXRpb25zIGFuZAotIyBtYWNybyBjbGFz
aGluZykuCisjIGFuZCBpdHMgLy9iYXNlIGNvbnRhaW5zIGEgY29weSBvZiB0aHJlYWRfYW5ub3Rh
dGlvbnMuaCB3aGljaCBjb25mbGljdCB3aXRoCisjIEFic2VpbCdzIHZlcnNpb25zIChPRFIgdmlv
bGF0aW9ucyBhbmQgbWFjcm8gY2xhc2hpbmcpLgogIyBJbiBvcmRlciB0byBhdm9pZCBwcm9ibGVt
cyBpbiBDaHJvbWl1bSwgdGhpcyBjb3B5IG9mIEFic2VpbCBoYXMgaXRzIG93bgotIyBkeW5hbWlj
X2Fubm90YXRpb25zIHJlbmFtZWQuCisjIGR5bmFtaWNfYW5ub3RhdGlvbnMgYW5kIHRocmVhZF9h
bm5vdGF0aW9ucyByZW5hbWVkLgogCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGR5bmFt
aWNfYW5ub3RhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZm9yIHcgaW4gXAogICBB
bm5vdGF0ZUJhcnJpZXJEZXN0cm95IFwKICAgQW5ub3RhdGVCYXJyaWVySW5pdCBcCkBAIC0xMjUs
MyArMTI2LDQwIEBAIGZvciB3IGluIFwKIDsgZG8KICAgZmluZCBhYnNsLyAtdHlwZSBmIC1leGVj
IHNlZCAtaSAicy9cYiR3XGIvQUJTTF8kdy9nIiB7fSBcOwogZG9uZQorCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIHRocmVhZF9hbm5vdGF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK2ZvciB3IGluIFwKKyAgdHNfdW5jaGVja2VkX3JlYWQgXAorOyBkbworICBmaW5kIGFi
c2wvIC10eXBlIGYgLWV4ZWMgc2VkIC1pICJzL1xiJHdcYi9hYnNsXyR3L2ciIHt9IFw7Citkb25l
CisKK2ZvciB3IGluIFwKKyAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18gXAorICBHVUFS
REVEX0JZIFwKKyAgUFRfR1VBUkRFRF9CWSBcCisgIEFDUVVJUkVEX0FGVEVSIFwKKyAgQUNRVUlS
RURfQkVGT1JFIFwKKyAgRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEIFwKKyAgU0hBUkVEX0xPQ0tT
X1JFUVVJUkVEIFwKKyAgTE9DS1NfRVhDTFVERUQgXAorICBMT0NLX1JFVFVSTkVEIFwKKyAgTE9D
S0FCTEUgXAorICBTQ09QRURfTE9DS0FCTEUgXAorICBFWENMVVNJVkVfTE9DS19GVU5DVElPTiBc
CisgIFNIQVJFRF9MT0NLX0ZVTkNUSU9OIFwKKyAgVU5MT0NLX0ZVTkNUSU9OIFwKKyAgRVhDTFVT
SVZFX1RSWUxPQ0tfRlVOQ1RJT04gXAorICBTSEFSRURfVFJZTE9DS19GVU5DVElPTiBcCisgIEFT
U0VSVF9FWENMVVNJVkVfTE9DSyBcCisgIEFTU0VSVF9TSEFSRURfTE9DSyBcCisgIE5PX1RIUkVB
RF9TQUZFVFlfQU5BTFlTSVMgXAorICBUU19VTkNIRUNLRUQgXAorICBUU19GSVhNRSBcCisgIE5P
X1RIUkVBRF9TQUZFVFlfQU5BTFlTSVNfRklYTUUgXAorICBHVUFSREVEX0JZX0ZJWE1FIFwKKyAg
VFNfVU5DSEVDS0VEX1JFQUQgXAorOyBkbworICBmaW5kIGFic2wvIC10eXBlIGYgLWV4ZWMgc2Vk
IC1pICJzL1xiJHdcYi9BQlNMXyR3L2ciIHt9IFw7Citkb25lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNWQzODY3ZDE1N2YuLjcxM2ZlNDJjOGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMjgwLDcgKzEyODAsNiBAQAogCQk0MUREQjI0RDIxMjY1QkQ3
MDAyOTZENDcgLyogZml4ZWRfYXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRERCMjRCMjEyNjVCRDcwMDI5NkQ0NyAvKiBmaXhlZF9hcnJheS5o
ICovOyB9OwogCQk0MUREQjI0RTIxMjY1QkQ3MDAyOTZENDcgLyogaW5saW5lZF92ZWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRERCMjRDMjEy
NjVCRDcwMDI5NkQ0NyAvKiBpbmxpbmVkX3ZlY3Rvci5oICovOyB9OwogCQk0MUREQjI1MTIxMjY1
QkU5MDAyOTZENDcgLyogb3B0aW9uYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRERCMjRGMjEyNjVCRTkwMDI5NkQ0NyAvKiBvcHRpb25hbC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxRERCMjUy
MjEyNjVCRTkwMDI5NkQ0NyAvKiBvcHRpb25hbC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRERCMjUwMjEyNjVCRTkwMDI5NkQ0NyAvKiBvcHRpb25h
bC5jYyAqLzsgfTsKIAkJNDFEREIyNTQyMTI2NzhFNDAwMjk2RDQ3IC8qIHBsYXRmb3JtX3RocmVh
ZF90eXBlcy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRERCMjUzMjEyNjc4RTMwMDI5NkQ0NyAvKiBwbGF0Zm9ybV90aHJlYWRfdHlwZXMuY2MgKi87
IH07CiAJCTQxRERCMjU2MjEyNjc5MEEwMDI5NkQ0NyAvKiBzb2NrZXQuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUREQjI1NTIxMjY3OTBBMDAyOTZE
NDcgLyogc29ja2V0LmNjICovOyB9OwogCQk0MUREQjI1OTIxMjY3OTI4MDAyOTZENDcgLyogemVy
b19tZW1vcnkuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUREQjI1NzIxMjY3OTI4MDAyOTZENDcgLyogemVyb19tZW1vcnkuY2MgKi87IH07CkBAIC0x
Njg3NCw3ICsxNjg3Myw2IEBACiAJCQkJNDFEREIyNjIyMTI2NzlBMzAwMjk2RDQ3IC8qIG9wZW5z
c2xzZXNzaW9uY2FjaGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQzRjFGRTI1MEI5MDA0
MEMzMEYgLyogb3BlbnNzbHN0cmVhbWFkYXB0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MURE
QjI2NTIxMjY3OUEzMDAyOTZENDcgLyogb3BlbnNzbHV0aWxpdHkuY2MgaW4gU291cmNlcyAqLywK
LQkJCQk0MUREQjI1MjIxMjY1QkU5MDAyOTZENDcgLyogb3B0aW9uYWwuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REOEM2NzFFNDNDNjA5MDA2MjFFOTIgLyogb3B1c19pbnRlcmZhY2UuYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ4RkQ3MUU0M0NENjYwMDYyMUU5MiAvKiBvdmVydXNlX2RldGVj
dG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhGRDkxRTQzQ0Q2NjAwNjIxRTkyIC8qIG92
ZXJ1c2VfZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8sCi0tIAoyLjIxLjAgKEFwcGxlIEdpdC0x
MjIpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380519</attachid>
            <date>2019-10-09 01:59:05 -0700</date>
            <delta_ts>2019-10-09 02:30:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202726-20191009105733.patch</filename>
            <type>text/plain</type>
            <size>3450102</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA3MDQ0OWNkZDAzNGIxY2FmNzZjNGYwNjJiMzcyZTY1MGQxYzhkOTc2Li5iOWQ5
YjdmNmZiNjVlZDM3OTZkN2E5YjEzNGNhYTAzMWE1OTE0ZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMC0wOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB0aGly
ZC1wYXJ0eSBhYnNlaWxjcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6IFVwZGF0ZWQuCisgICAg
ICAgICogbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMTAtMDkg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBsaWJ3ZWJy
dGMgdGhpcmQtcGFydHkgcGZmdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0Fic2VpbEhlbHBlcnMuY21h
a2UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvQ01ha2UvQWJzZWlsSGVscGVycy5jbWFrZQppbmRleCAwYzkzNDE3NDc1MTJjZWI2MTcz
NTQxYzdmNGEyNjY3YTE1YjU3NzI3Li41OGY5OGM4YzM4NTcyZmVlM2QxNDIyMmU5ZmE1NzY1MDI2
OGZkNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJzZWlsSGVscGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01h
a2UvQWJzZWlsSGVscGVycy5jbWFrZQpAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
MTUsNiArMTUsOCBAQAogIwogCiBpbmNsdWRlKENNYWtlUGFyc2VBcmd1bWVudHMpCitpbmNsdWRl
KEFic2VpbENvbmZpZ3VyZUNvcHRzKQoraW5jbHVkZShBYnNlaWxJbnN0YWxsRGlycykKIAogIyBU
aGUgSURFIGZvbGRlciBmb3IgQWJzZWlsIHRoYXQgd2lsbCBiZSB1c2VkIGlmIEFic2VpbCBpcyBp
bmNsdWRlZCBpbiBhIENNYWtlCiAjIHByb2plY3QgdGhhdCBzZXRzCkBAIC0yMiwxNDkgKzI0LDIz
MiBAQCBpbmNsdWRlKENNYWtlUGFyc2VBcmd1bWVudHMpCiAjIEZvciBleGFtcGxlLCBWaXN1YWwg
U3R1ZGlvIHN1cHBvcnRzIGZvbGRlcnMuCiBzZXQoQUJTTF9JREVfRk9MREVSIEFic2VpbCkKIAot
IwotIyBjcmVhdGUgYSBsaWJyYXJ5IGluIHRoZSBhYnNsIG5hbWVzcGFjZQotIwotIyBwYXJhbWV0
ZXJzCi0jIFNPVVJDRVMgOiBzb3VyY2VzIGZpbGVzIGZvciB0aGUgbGlicmFyeQotIyBQVUJMSUNf
TElCUkFSSUVTOiB0YXJnZXRzIGFuZCBmbGFncyBmb3IgbGlua2luZyBwaGFzZQotIyBQUklWQVRF
X0NPTVBJTEVfRkxBR1M6IGNvbXBpbGUgZmxhZ3MgZm9yIHRoZSBsaWJyYXJ5LiBXaWxsIG5vdCBi
ZSBleHBvcnRlZC4KLSMgRVhQT1JUX05BTUU6IGV4cG9ydCBuYW1lIGZvciB0aGUgYWJzbDo6IHRh
cmdldCBleHBvcnQKLSMgVEFSR0VUOiB0YXJnZXQgbmFtZQotIwotIyBjcmVhdGUgYSB0YXJnZXQg
YXNzb2NpYXRlZCB0byA8TkFNRT4KLSMgbGlicmFyaWVzIGFyZSBpbnN0YWxsZWQgdW5kZXIgQ01B
S0VfSU5TVEFMTF9GVUxMX0xJQkRJUiBieSBkZWZhdWx0Ci0jCi1mdW5jdGlvbihhYnNsX2xpYnJh
cnkpCi0gIGNtYWtlX3BhcnNlX2FyZ3VtZW50cyhBQlNMX0xJQgotICAgICJESVNBQkxFX0lOU1RB
TEwiICMga2VlcCB0aGF0IGluIGNhc2Ugd2Ugd2FudCB0byBzdXBwb3J0IGluc3RhbGxhdGlvbiBv
bmUgZGF5Ci0gICAgIlRBUkdFVDtFWFBPUlRfTkFNRSIKLSAgICAiU09VUkNFUztQVUJMSUNfTElC
UkFSSUVTO1BSSVZBVEVfQ09NUElMRV9GTEFHUyIKKyMgYWJzbF9jY19saWJyYXJ5KCkKKyMKKyMg
Q01ha2UgZnVuY3Rpb24gdG8gaW1pdGF0ZSBCYXplbCdzIGNjX2xpYnJhcnkgcnVsZS4KKyMKKyMg
UGFyYW1ldGVyczoKKyMgTkFNRTogbmFtZSBvZiB0YXJnZXQgKHNlZSBOb3RlKQorIyBIRFJTOiBM
aXN0IG9mIHB1YmxpYyBoZWFkZXIgZmlsZXMgZm9yIHRoZSBsaWJyYXJ5CisjIFNSQ1M6IExpc3Qg
b2Ygc291cmNlIGZpbGVzIGZvciB0aGUgbGlicmFyeQorIyBERVBTOiBMaXN0IG9mIG90aGVyIGxp
YnJhcmllcyB0byBiZSBsaW5rZWQgaW4gdG8gdGhlIGJpbmFyeSB0YXJnZXRzCisjIENPUFRTOiBM
aXN0IG9mIHByaXZhdGUgY29tcGlsZSBvcHRpb25zCisjIERFRklORVM6IExpc3Qgb2YgcHVibGlj
IGRlZmluZXMKKyMgTElOS09QVFM6IExpc3Qgb2YgbGluayBvcHRpb25zCisjIFBVQkxJQzogQWRk
IHRoaXMgc28gdGhhdCB0aGlzIGxpYnJhcnkgd2lsbCBiZSBleHBvcnRlZCB1bmRlciBhYnNsOjoK
KyMgQWxzbyBpbiBJREUsIHRhcmdldCB3aWxsIGFwcGVhciBpbiBBYnNlaWwgZm9sZGVyIHdoaWxl
IG5vbiBQVUJMSUMgd2lsbCBiZSBpbiBBYnNlaWwvaW50ZXJuYWwuCisjIFRFU1RPTkxZOiBXaGVu
IGFkZGVkLCB0aGlzIHRhcmdldCB3aWxsIG9ubHkgYmUgYnVpbHQgaWYgdXNlciBwYXNzZXMgLURB
QlNMX1JVTl9URVNUUz1PTiB0byBDTWFrZS4KKyMKKyMgTm90ZToKKyMgQnkgZGVmYXVsdCwgYWJz
bF9jY19saWJyYXJ5IHdpbGwgYWx3YXlzIGNyZWF0ZSBhIGxpYnJhcnkgbmFtZWQgYWJzbF8ke05B
TUV9LAorIyBhbmQgYWxpYXMgdGFyZ2V0IGFic2w6OiR7TkFNRX0uICBUaGUgYWJzbDo6IGZvcm0g
c2hvdWxkIGFsd2F5cyBiZSB1c2VkLgorIyBUaGlzIGlzIHRvIHJlZHVjZSBuYW1lc3BhY2UgcG9s
bHV0aW9uLgorIworIyBhYnNsX2NjX2xpYnJhcnkoCisjICAgTkFNRQorIyAgICAgYXdlc29tZQor
IyAgIEhEUlMKKyMgICAgICJhLmgiCisjICAgU1JDUworIyAgICAgImEuY2MiCisjICkKKyMgYWJz
bF9jY19saWJyYXJ5KAorIyAgIE5BTUUKKyMgICAgIGZhbnRhc3RpY19saWIKKyMgICBTUkNTCisj
ICAgICAiYi5jYyIKKyMgICBERVBTCisjICAgICBhYnNsOjphd2Vzb21lICMgbm90ICJhd2Vzb21l
IiAhCisjICAgUFVCTElDCisjICkKKyMKKyMgYWJzbF9jY19saWJyYXJ5KAorIyAgIE5BTUUKKyMg
ICAgIG1haW5fbGliCisjICAgLi4uCisjICAgREVQUworIyAgICAgYWJzbDo6ZmFudGFzdGljX2xp
YgorIyApCisjCisjIFRPRE86IEltcGxlbWVudCAiQUxXQVlTTElOSyIKK2Z1bmN0aW9uKGFic2xf
Y2NfbGlicmFyeSkKKyAgY21ha2VfcGFyc2VfYXJndW1lbnRzKEFCU0xfQ0NfTElCCisgICAgIkRJ
U0FCTEVfSU5TVEFMTDtQVUJMSUM7VEVTVE9OTFkiCisgICAgIk5BTUUiCisgICAgIkhEUlM7U1JD
UztDT1BUUztERUZJTkVTO0xJTktPUFRTO0RFUFMiCiAgICAgJHtBUkdOfQogICApCiAKLSAgc2V0
KF9OQU1FICR7QUJTTF9MSUJfVEFSR0VUfSkKLSAgc3RyaW5nKFRPVVBQRVIgJHtfTkFNRX0gX1VQ
UEVSX05BTUUpCi0KLSAgYWRkX2xpYnJhcnkoJHtfTkFNRX0gU1RBVElDICR7QUJTTF9MSUJfU09V
UkNFU30pCi0KLSAgdGFyZ2V0X2NvbXBpbGVfb3B0aW9ucygke19OQU1FfSBQUklWQVRFICR7QUJT
TF9DT01QSUxFX0NYWEZMQUdTfSAke0FCU0xfTElCX1BSSVZBVEVfQ09NUElMRV9GTEFHU30pCi0g
IHRhcmdldF9saW5rX2xpYnJhcmllcygke19OQU1FfSBQVUJMSUMgJHtBQlNMX0xJQl9QVUJMSUNf
TElCUkFSSUVTfSkKLSAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtfTkFNRX0KLSAgICBQ
VUJMSUMgJHtBQlNMX0NPTU1PTl9JTkNMVURFX0RJUlN9ICR7QUJTTF9MSUJfUFVCTElDX0lOQ0xV
REVfRElSU30KLSAgICBQUklWQVRFICR7QUJTTF9MSUJfUFJJVkFURV9JTkNMVURFX0RJUlN9Ci0g
ICkKLSAgIyBBZGQgYWxsIEFic2VpbCB0YXJnZXRzIHRvIGEgYSBmb2xkZXIgaW4gdGhlIElERSBm
b3Igb3JnYW5pemF0aW9uLgotICBzZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9IFBST1BFUlRZ
IEZPTERFUiAke0FCU0xfSURFX0ZPTERFUn0pCi0KLSAgaWYoQUJTTF9MSUJfRVhQT1JUX05BTUUp
Ci0gICAgYWRkX2xpYnJhcnkoYWJzbDo6JHtBQlNMX0xJQl9FWFBPUlRfTkFNRX0gQUxJQVMgJHtf
TkFNRX0pCisgIGlmKE5PVCBBQlNMX0NDX0xJQl9URVNUT05MWSBPUiBBQlNMX1JVTl9URVNUUykK
KyAgICBpZihBQlNMX0VOQUJMRV9JTlNUQUxMKQorICAgICAgc2V0KF9OQU1FICIke0FCU0xfQ0Nf
TElCX05BTUV9IikKKyAgICBlbHNlKCkKKyAgICAgIHNldChfTkFNRSAiYWJzbF8ke0FCU0xfQ0Nf
TElCX05BTUV9IikKKyAgICBlbmRpZigpCisKKyAgICAjIENoZWNrIGlmIHRoaXMgaXMgYSBoZWFk
ZXItb25seSBsaWJyYXJ5CisgICAgIyBOb3RlIHRoYXQgYXMgb2YgRmVicnVhcnkgMjAxOSwgbWFu
eSBwb3B1bGFyIE9TJ3MgKGZvciBleGFtcGxlLCBVYnVudHUKKyAgICAjIDE2LjA0IExUUykgb25s
eSBjb21lIHdpdGggY21ha2UgMy41IGJ5IGRlZmF1bHQuICBGb3IgdGhpcyByZWFzb24sIHdlIGNh
bid0CisgICAgIyB1c2UgbGlzdChGSUxURVIuLi4pCisgICAgc2V0KEFCU0xfQ0NfU1JDUyAiJHtB
QlNMX0NDX0xJQl9TUkNTfSIpCisgICAgZm9yZWFjaChzcmNfZmlsZSBJTiBMSVNUUyBBQlNMX0ND
X1NSQ1MpCisgICAgICBpZigke3NyY19maWxlfSBNQVRDSEVTICIuKlxcLihofGluYykiKQorICAg
ICAgICBsaXN0KFJFTU9WRV9JVEVNIEFCU0xfQ0NfU1JDUyAiJHtzcmNfZmlsZX0iKQorICAgICAg
ZW5kaWYoKQorICAgIGVuZGZvcmVhY2goKQorICAgIGlmKCIke0FCU0xfQ0NfU1JDU30iIFNUUkVR
VUFMICIiKQorICAgICAgc2V0KEFCU0xfQ0NfTElCX0lTX0lOVEVSRkFDRSAxKQorICAgIGVsc2Uo
KQorICAgICAgc2V0KEFCU0xfQ0NfTElCX0lTX0lOVEVSRkFDRSAwKQorICAgIGVuZGlmKCkKKwor
ICAgIGlmKE5PVCBBQlNMX0NDX0xJQl9JU19JTlRFUkZBQ0UpCisgICAgICBhZGRfbGlicmFyeSgk
e19OQU1FfSBTVEFUSUMgIiIpCisgICAgICB0YXJnZXRfc291cmNlcygke19OQU1FfSBQUklWQVRF
ICR7QUJTTF9DQ19MSUJfU1JDU30gJHtBQlNMX0NDX0xJQl9IRFJTfSkKKyAgICAgIHRhcmdldF9p
bmNsdWRlX2RpcmVjdG9yaWVzKCR7X05BTUV9CisgICAgICAgIFBVQkxJQworICAgICAgICAgICQ8
QlVJTERfSU5URVJGQUNFOiR7QUJTTF9DT01NT05fSU5DTFVERV9ESVJTfT4KKyAgICAgICAgICAk
PElOU1RBTExfSU5URVJGQUNFOiR7QUJTTF9JTlNUQUxMX0lOQ0xVREVESVJ9PgorICAgICAgKQor
ICAgICAgdGFyZ2V0X2NvbXBpbGVfb3B0aW9ucygke19OQU1FfQorICAgICAgICBQUklWQVRFICR7
QUJTTF9DQ19MSUJfQ09QVFN9KQorICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7X05BTUV9
CisgICAgICAgIFBVQkxJQyAke0FCU0xfQ0NfTElCX0RFUFN9CisgICAgICAgIFBSSVZBVEUKKyAg
ICAgICAgICAke0FCU0xfQ0NfTElCX0xJTktPUFRTfQorICAgICAgICAgICR7QUJTTF9ERUZBVUxU
X0xJTktPUFRTfQorICAgICAgKQorICAgICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoJHtf
TkFNRX0gUFVCTElDICR7QUJTTF9DQ19MSUJfREVGSU5FU30pCisKKyAgICAgICMgQWRkIGFsbCBB
YnNlaWwgdGFyZ2V0cyB0byBhIGEgZm9sZGVyIGluIHRoZSBJREUgZm9yIG9yZ2FuaXphdGlvbi4K
KyAgICAgIGlmKEFCU0xfQ0NfTElCX1BVQkxJQykKKyAgICAgICAgc2V0X3Byb3BlcnR5KFRBUkdF
VCAke19OQU1FfSBQUk9QRVJUWSBGT0xERVIgJHtBQlNMX0lERV9GT0xERVJ9KQorICAgICAgZWxz
ZWlmKEFCU0xfQ0NfTElCX1RFU1RPTkxZKQorICAgICAgICBzZXRfcHJvcGVydHkoVEFSR0VUICR7
X05BTUV9IFBST1BFUlRZIEZPTERFUiAke0FCU0xfSURFX0ZPTERFUn0vdGVzdCkKKyAgICAgIGVs
c2UoKQorICAgICAgICBzZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9IFBST1BFUlRZIEZPTERF
UiAke0FCU0xfSURFX0ZPTERFUn0vaW50ZXJuYWwpCisgICAgICBlbmRpZigpCisKKyAgICAgICMg
SU5URVJGQUNFIGxpYnJhcmllcyBjYW4ndCBoYXZlIHRoZSBDWFhfU1RBTkRBUkQgcHJvcGVydHkg
c2V0CisgICAgICBzZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9IFBST1BFUlRZIENYWF9TVEFO
REFSRCAke0FCU0xfQ1hYX1NUQU5EQVJEfSkKKyAgICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtf
TkFNRX0gUFJPUEVSVFkgQ1hYX1NUQU5EQVJEX1JFUVVJUkVEIE9OKQorCisgICAgICAjIFdoZW4g
YmVpbmcgaW5zdGFsbGVkLCB3ZSBsb3NlIHRoZSBhYnNsXyBwcmVmaXguICBXZSB3YW50IHRvIHB1
dCBpdCBiYWNrCisgICAgICAjIHRvIGhhdmUgcHJvcGVybHkgbmFtZWQgbGliIGZpbGVzLiAgVGhp
cyBpcyBhIG5vLW9wIHdoZW4gd2UgYXJlIG5vdCBiZWluZworICAgICAgIyBpbnN0YWxsZWQuCisg
ICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtfTkFNRX0gUFJPUEVSVElFUworICAgICAgICBP
VVRQVVRfTkFNRSAiYWJzbF8ke19OQU1FfSIKKyAgICAgICkKKyAgICBlbHNlKCkKKyAgICAgICMg
R2VuZXJhdGluZyBoZWFkZXItb25seSBsaWJyYXJ5CisgICAgICBhZGRfbGlicmFyeSgke19OQU1F
fSBJTlRFUkZBQ0UpCisgICAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcygke19OQU1FfQor
ICAgICAgICBJTlRFUkZBQ0UKKyAgICAgICAgICAkPEJVSUxEX0lOVEVSRkFDRToke0FCU0xfQ09N
TU9OX0lOQ0xVREVfRElSU30+CisgICAgICAgICAgJDxJTlNUQUxMX0lOVEVSRkFDRToke0FCU0xf
SU5TVEFMTF9JTkNMVURFRElSfT4KKyAgICAgICAgKQorICAgICAgdGFyZ2V0X2xpbmtfbGlicmFy
aWVzKCR7X05BTUV9CisgICAgICAgIElOVEVSRkFDRQorICAgICAgICAgICR7QUJTTF9DQ19MSUJf
REVQU30KKyAgICAgICAgICAke0FCU0xfQ0NfTElCX0xJTktPUFRTfQorICAgICAgICAgICR7QUJT
TF9ERUZBVUxUX0xJTktPUFRTfQorICAgICAgKQorICAgICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5p
dGlvbnMoJHtfTkFNRX0gSU5URVJGQUNFICR7QUJTTF9DQ19MSUJfREVGSU5FU30pCisgICAgZW5k
aWYoKQorCisgICAgIyBUT0RPIGN1cnJlbnRseSB3ZSBkb24ndCBpbnN0YWxsIGdvb2dsZXRlc3Qg
YWxvbmdzaWRlIGFic2VpbCBzb3VyY2VzLCBzbworICAgICMgaW5zdGFsbGVkIGFic2VpbCBjYW4n
dCBiZSB0ZXN0ZWQuCisgICAgaWYoTk9UIEFCU0xfQ0NfTElCX1RFU1RPTkxZIEFORCBBQlNMX0VO
QUJMRV9JTlNUQUxMKQorICAgICAgaW5zdGFsbChUQVJHRVRTICR7X05BTUV9IEVYUE9SVCAke1BS
T0pFQ1RfTkFNRX1UYXJnZXRzCisgICAgICAgICAgICBSVU5USU1FIERFU1RJTkFUSU9OICR7QUJT
TF9JTlNUQUxMX0JJTkRJUn0KKyAgICAgICAgICAgIExJQlJBUlkgREVTVElOQVRJT04gJHtBQlNM
X0lOU1RBTExfTElCRElSfQorICAgICAgICAgICAgQVJDSElWRSBERVNUSU5BVElPTiAke0FCU0xf
SU5TVEFMTF9MSUJESVJ9CisgICAgICApCisgICAgZW5kaWYoKQorCisgICAgYWRkX2xpYnJhcnko
YWJzbDo6JHtBQlNMX0NDX0xJQl9OQU1FfSBBTElBUyAke19OQU1FfSkKICAgZW5kaWYoKQogZW5k
ZnVuY3Rpb24oKQogCisjIGFic2xfY2NfdGVzdCgpCisjCisjIENNYWtlIGZ1bmN0aW9uIHRvIGlt
aXRhdGUgQmF6ZWwncyBjY190ZXN0IHJ1bGUuCisjCisjIFBhcmFtZXRlcnM6CisjIE5BTUU6IG5h
bWUgb2YgdGFyZ2V0IChzZWUgVXNhZ2UgYmVsb3cpCisjIFNSQ1M6IExpc3Qgb2Ygc291cmNlIGZp
bGVzIGZvciB0aGUgYmluYXJ5CisjIERFUFM6IExpc3Qgb2Ygb3RoZXIgbGlicmFyaWVzIHRvIGJl
IGxpbmtlZCBpbiB0byB0aGUgYmluYXJ5IHRhcmdldHMKKyMgQ09QVFM6IExpc3Qgb2YgcHJpdmF0
ZSBjb21waWxlIG9wdGlvbnMKKyMgREVGSU5FUzogTGlzdCBvZiBwdWJsaWMgZGVmaW5lcworIyBM
SU5LT1BUUzogTGlzdCBvZiBsaW5rIG9wdGlvbnMKKyMKKyMgTm90ZToKKyMgQnkgZGVmYXVsdCwg
YWJzbF9jY190ZXN0IHdpbGwgYWx3YXlzIGNyZWF0ZSBhIGJpbmFyeSBuYW1lZCBhYnNsXyR7TkFN
RX0uCisjIFRoaXMgd2lsbCBhbHNvIGFkZCBpdCB0byBjdGVzdCBsaXN0IGFzIGFic2xfJHtOQU1F
fS4KKyMKKyMgVXNhZ2U6CisjIGFic2xfY2NfbGlicmFyeSgKKyMgICBOQU1FCisjICAgICBhd2Vz
b21lCisjICAgSERSUworIyAgICAgImEuaCIKKyMgICBTUkNTCisjICAgICAiYS5jYyIKKyMgICBQ
VUJMSUMKKyMgKQorIworIyBhYnNsX2NjX3Rlc3QoCisjICAgTkFNRQorIyAgICAgYXdlc29tZV90
ZXN0CisjICAgU1JDUworIyAgICAgImF3ZXNvbWVfdGVzdC5jYyIKKyMgICBERVBTCisjICAgICBh
YnNsOjphd2Vzb21lCisjICAgICBnbW9jaworIyAgICAgZ3Rlc3RfbWFpbgorIyApCitmdW5jdGlv
bihhYnNsX2NjX3Rlc3QpCisgIGlmKE5PVCBBQlNMX1JVTl9URVNUUykKKyAgICByZXR1cm4oKQor
ICBlbmRpZigpCiAKLQotIwotIyBoZWFkZXIgb25seSB2aXJ0dWFsIHRhcmdldCBjcmVhdGlvbgot
IwotZnVuY3Rpb24oYWJzbF9oZWFkZXJfbGlicmFyeSkKLSAgY21ha2VfcGFyc2VfYXJndW1lbnRz
KEFCU0xfSE9fTElCCi0gICAgIkRJU0FCTEVfSU5TVEFMTCIKLSAgICAiRVhQT1JUX05BTUU7VEFS
R0VUIgotICAgICJQVUJMSUNfTElCUkFSSUVTO1BSSVZBVEVfQ09NUElMRV9GTEFHUztQVUJMSUNf
SU5DTFVERV9ESVJTO1BSSVZBVEVfSU5DTFVERV9ESVJTIgorICBjbWFrZV9wYXJzZV9hcmd1bWVu
dHMoQUJTTF9DQ19URVNUCisgICAgIiIKKyAgICAiTkFNRSIKKyAgICAiU1JDUztDT1BUUztERUZJ
TkVTO0xJTktPUFRTO0RFUFMiCiAgICAgJHtBUkdOfQogICApCiAKLSAgc2V0KF9OQU1FICR7QUJT
TF9IT19MSUJfVEFSR0VUfSkKLQotICBzZXQoX19kdW1teV9oZWFkZXJfb25seV9saWJfZmlsZSAi
JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyR7X05BTUV9X2hlYWRlcl9vbmx5X2R1bW15LmNj
IikKLQotICBpZihOT1QgRVhJU1RTICR7X19kdW1teV9oZWFkZXJfb25seV9saWJfZmlsZX0pCi0g
ICAgZmlsZShXUklURSAke19fZHVtbXlfaGVhZGVyX29ubHlfbGliX2ZpbGV9Ci0gICAgICAiLyog
Z2VuZXJhdGVkIGZpbGUgZm9yIGhlYWRlci1vbmx5IGNtYWtlIHRhcmdldCAqLwotCi0gICAgICBu
YW1lc3BhY2UgYWJzbCB7Ci0KLSAgICAgICAvLyBzaW5nbGUgbWVhbmluZ2xlc3Mgc3ltYm9sCi0g
ICAgICAgdm9pZCAke19OQU1FfV9faGVhZGVyX2Zha2VzeW0oKSB7fQotICAgICAgfSAgLy8gbmFt
ZXNwYWNlIGFic2wKLSAgICAgICIKLSAgICApCi0gIGVuZGlmKCkKLQotCi0gIGFkZF9saWJyYXJ5
KCR7X05BTUV9ICR7X19kdW1teV9oZWFkZXJfb25seV9saWJfZmlsZX0pCi0gIHRhcmdldF9saW5r
X2xpYnJhcmllcygke19OQU1FfSBQVUJMSUMgJHtBQlNMX0hPX0xJQl9QVUJMSUNfTElCUkFSSUVT
fSkKKyAgc2V0KF9OQU1FICJhYnNsXyR7QUJTTF9DQ19URVNUX05BTUV9IikKKyAgYWRkX2V4ZWN1
dGFibGUoJHtfTkFNRX0gIiIpCisgIHRhcmdldF9zb3VyY2VzKCR7X05BTUV9IFBSSVZBVEUgJHtB
QlNMX0NDX1RFU1RfU1JDU30pCiAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7X05BTUV9
Ci0gICAgUFVCTElDICR7QUJTTF9DT01NT05fSU5DTFVERV9ESVJTfSAke0FCU0xfSE9fTElCX1BV
QkxJQ19JTkNMVURFX0RJUlN9Ci0gICAgUFJJVkFURSAke0FCU0xfSE9fTElCX1BSSVZBVEVfSU5D
TFVERV9ESVJTfQorICAgIFBVQkxJQyAke0FCU0xfQ09NTU9OX0lOQ0xVREVfRElSU30KKyAgICBQ
UklWQVRFICR7R01PQ0tfSU5DTFVERV9ESVJTfSAke0dURVNUX0lOQ0xVREVfRElSU30KICAgKQot
Ci0gICMgQWRkIGFsbCBBYnNlaWwgdGFyZ2V0cyB0byBhIGEgZm9sZGVyIGluIHRoZSBJREUgZm9y
IG9yZ2FuaXphdGlvbi4KLSAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke19OQU1FfSBQUk9QRVJUWSBG
T0xERVIgJHtBQlNMX0lERV9GT0xERVJ9KQotCi0gIGlmKEFCU0xfSE9fTElCX0VYUE9SVF9OQU1F
KQotICAgIGFkZF9saWJyYXJ5KGFic2w6OiR7QUJTTF9IT19MSUJfRVhQT1JUX05BTUV9IEFMSUFT
ICR7X05BTUV9KQotICBlbmRpZigpCi0KLWVuZGZ1bmN0aW9uKCkKLQotCi0jCi0jIGNyZWF0ZSBh
biBhYnNlaWwgdW5pdF90ZXN0IGFuZCBhZGQgaXQgdG8gdGhlIGV4ZWN1dGVkIHRlc3QgbGlzdAot
IwotIyBwYXJhbWV0ZXJzCi0jIFRBUkdFVDogdGFyZ2V0IG5hbWUgcHJlZml4Ci0jIFNPVVJDRVM6
IHNvdXJjZXMgZmlsZXMgZm9yIHRoZSB0ZXN0cwotIyBQVUJMSUNfTElCUkFSSUVTOiB0YXJnZXRz
IGFuZCBmbGFncyBmb3IgbGlua2luZyBwaGFzZS4KLSMgUFJJVkFURV9DT01QSUxFX0ZMQUdTOiBj
b21waWxlIGZsYWdzIGZvciB0aGUgdGVzdC4gV2lsbCBub3QgYmUgZXhwb3J0ZWQuCi0jCi0jIGNy
ZWF0ZSBhIHRhcmdldCBhc3NvY2lhdGVkIHRvIDxOQU1FPl9iaW4KLSMKLSMgYWxsIHRlc3RzIHdp
bGwgYmUgcmVnaXN0ZXIgZm9yIGV4ZWN1dGlvbiB3aXRoIGFkZF90ZXN0KCkKLSMKLSMgdGVzdCBj
b21waWxhdGlvbiBhbmQgZXhlY3V0aW9uIGlzIGRpc2FibGUgd2hlbiBBQlNMX1JVTl9URVNUUz1P
RkYKLSMKLWZ1bmN0aW9uKGFic2xfdGVzdCkKLQotICBjbWFrZV9wYXJzZV9hcmd1bWVudHMoQUJT
TF9URVNUCi0gICAgIiIKLSAgICAiVEFSR0VUIgotICAgICJTT1VSQ0VTO1BVQkxJQ19MSUJSQVJJ
RVM7UFJJVkFURV9DT01QSUxFX0ZMQUdTO1BVQkxJQ19JTkNMVURFX0RJUlMiCi0gICAgJHtBUkdO
fQorICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucygke19OQU1FfQorICAgIFBVQkxJQyAke0FC
U0xfQ0NfVEVTVF9ERUZJTkVTfQogICApCisgIHRhcmdldF9jb21waWxlX29wdGlvbnMoJHtfTkFN
RX0KKyAgICBQUklWQVRFICR7QUJTTF9DQ19URVNUX0NPUFRTfQorICApCisgIHRhcmdldF9saW5r
X2xpYnJhcmllcygke19OQU1FfQorICAgIFBVQkxJQyAke0FCU0xfQ0NfVEVTVF9ERVBTfQorICAg
IFBSSVZBVEUgJHtBQlNMX0NDX1RFU1RfTElOS09QVFN9CisgICkKKyAgIyBBZGQgYWxsIEFic2Vp
bCB0YXJnZXRzIHRvIGEgYSBmb2xkZXIgaW4gdGhlIElERSBmb3Igb3JnYW5pemF0aW9uLgorICBz
ZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9IFBST1BFUlRZIEZPTERFUiAke0FCU0xfSURFX0ZP
TERFUn0vdGVzdCkKIAorICBzZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9IFBST1BFUlRZIENY
WF9TVEFOREFSRCAke0FCU0xfQ1hYX1NUQU5EQVJEfSkKKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCAk
e19OQU1FfSBQUk9QRVJUWSBDWFhfU1RBTkRBUkRfUkVRVUlSRUQgT04pCiAKLSAgaWYoQUJTTF9S
VU5fVEVTVFMpCi0KLSAgICBzZXQoX05BTUUgJHtBQlNMX1RFU1RfVEFSR0VUfSkKLSAgICBzdHJp
bmcoVE9VUFBFUiAke19OQU1FfSBfVVBQRVJfTkFNRSkKLQotICAgIGFkZF9leGVjdXRhYmxlKCR7
X05BTUV9X2JpbiAke0FCU0xfVEVTVF9TT1VSQ0VTfSkKLQotICAgIHRhcmdldF9jb21waWxlX29w
dGlvbnMoJHtfTkFNRX1fYmluIFBSSVZBVEUgJHtBQlNMX0NPTVBJTEVfQ1hYRkxBR1N9ICR7QUJT
TF9URVNUX1BSSVZBVEVfQ09NUElMRV9GTEFHU30pCi0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVz
KCR7X05BTUV9X2JpbiBQVUJMSUMgJHtBQlNMX1RFU1RfUFVCTElDX0xJQlJBUklFU30gJHtBQlNM
X1RFU1RfQ09NTU9OX0xJQlJBUklFU30pCi0gICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMo
JHtfTkFNRX1fYmluCi0gICAgICBQVUJMSUMgJHtBQlNMX0NPTU1PTl9JTkNMVURFX0RJUlN9ICR7
QUJTTF9URVNUX1BVQkxJQ19JTkNMVURFX0RJUlN9Ci0gICAgICBQUklWQVRFICR7R01PQ0tfSU5D
TFVERV9ESVJTfSAke0dURVNUX0lOQ0xVREVfRElSU30KLSAgICApCi0KLSAgICAjIEFkZCBhbGwg
QWJzZWlsIHRhcmdldHMgdG8gYSBhIGZvbGRlciBpbiB0aGUgSURFIGZvciBvcmdhbml6YXRpb24u
Ci0gICAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke19OQU1FfV9iaW4gUFJPUEVSVFkgRk9MREVSICR7
QUJTTF9JREVfRk9MREVSfSkKLQotICAgIGFkZF90ZXN0KCR7X05BTUV9ICR7X05BTUV9X2JpbikK
LSAgZW5kaWYoQUJTTF9SVU5fVEVTVFMpCi0KKyAgYWRkX3Rlc3QoTkFNRSAke19OQU1FfSBDT01N
QU5EICR7X05BTUV9KQogZW5kZnVuY3Rpb24oKQogCiAKLQotCiBmdW5jdGlvbihjaGVja190YXJn
ZXQgbXlfdGFyZ2V0KQotCiAgIGlmKE5PVCBUQVJHRVQgJHtteV90YXJnZXR9KQogICAgIG1lc3Nh
Z2UoRkFUQUxfRVJST1IgIiBBQlNMOiBjb21waWxpbmcgYWJzbCByZXF1aXJlcyBhICR7bXlfdGFy
Z2V0fSBDTWFrZSB0YXJnZXQgaW4geW91ciBwcm9qZWN0LAogICAgICAgICAgICAgICAgICAgIHNl
ZSBDTWFrZS9SRUFETUUubWQgZm9yIG1vcmUgZGV0YWlscyIpCiAgIGVuZGlmKE5PVCBUQVJHRVQg
JHtteV90YXJnZXR9KQotCiBlbmRmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJzZWls
SW5zdGFsbERpcnMuY21ha2UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJzZWlsSW5zdGFsbERpcnMuY21ha2UKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjY3MjcyZjgzMGMxZmU5NDM3YzExMmMyZGEwNDFlNmM0MTQwZGY0ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9DTWFrZS9BYnNlaWxJbnN0YWxsRGlycy5jbWFrZQpAQCAtMCwwICsxLDIwIEBA
CitpbmNsdWRlKEdOVUluc3RhbGxEaXJzKQorCisjIGFic2xfVkVSU0lPTiBpcyBvbmx5IHNldCBp
ZiB3ZSBhcmUgYW4gTFRTIHJlbGVhc2UgYmVpbmcgaW5zdGFsbGVkLCBpbiB3aGljaAorIyBjYXNl
IGl0IG1heSBiZSBpbnRvIGEgc3lzdGVtIGRpcmVjdG9yeSBhbmQgc28gd2UgbmVlZCB0byBtYWtl
IHN1YmRpcmVjdG9yaWVzCisjIGZvciBlYWNoIGluc3RhbGxlZCB2ZXJzaW9uIG9mIEFic2VpbC4g
IFRoaXMgbWVjaGFuaXNtIGlzIGltcGxlbWVudGVkIGluCisjIEFic2VpbCdzIGludGVybmFsIENv
cHliYXJhIChodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2NvcHliYXJhKSB3b3JrZmxvd3MgYW5k
CisjIGlzbid0IHZpc2libGUgaW4gdGhlIENNYWtlIGJ1aWxkc3lzdGVtIGl0c2VsZi4KKworaWYo
YWJzbF9WRVJTSU9OKQorICBzZXQoQUJTTF9TVUJESVIgIiR7UFJPSkVDVF9OQU1FfV8ke1BST0pF
Q1RfVkVSU0lPTn0iKQorICBzZXQoQUJTTF9JTlNUQUxMX0JJTkRJUiAiJHtDTUFLRV9JTlNUQUxM
X0JJTkRJUn0vJHtBQlNMX1NVQkRJUn0iKQorICBzZXQoQUJTTF9JTlNUQUxMX0NPTkZJR0RJUiAi
JHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vY21ha2UvJHtBQlNMX1NVQkRJUn0iKQorICBzZXQoQUJT
TF9JTlNUQUxMX0lOQ0xVREVESVIgIiR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfS97QUJTTF9T
VUJESVJ9IikKKyAgc2V0KEFCU0xfSU5TVEFMTF9MSUJESVIgIiR7Q01BS0VfSU5TVEFMTF9MSUJE
SVJ9LyR7QUJTTF9TVUJESVJ9IikKK2Vsc2UoKQorICBzZXQoQUJTTF9JTlNUQUxMX0JJTkRJUiAi
JHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0iKQorICBzZXQoQUJTTF9JTlNUQUxMX0NPTkZJR0RJUiAi
JHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vY21ha2UvJHtQUk9KRUNUX05BTUV9IikKKyAgc2V0KEFC
U0xfSU5TVEFMTF9JTkNMVURFRElSICIke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0iKQorICBz
ZXQoQUJTTF9JTlNUQUxMX0xJQkRJUiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iKQorZW5kaWYo
KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9DTWFrZUxp
c3RzLnR4dC5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9DTWFrZS9DTWFrZUxpc3RzLnR4dC5pbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDYwYTMzZTlhYzZhNmRkZmUwZWJkMTgxYjMzNzQzZjk1ZTY3YjVhNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQ01ha2VM
aXN0cy50eHQuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1jbWFrZV9taW5pbXVt
X3JlcXVpcmVkKFZFUlNJT04gMi44LjIpCi0KLXByb2plY3QoZ29vZ2xldGVzdC1kb3dubG9hZCBO
T05FKQotCi1pbmNsdWRlKEV4dGVybmFsUHJvamVjdCkKLUV4dGVybmFsUHJvamVjdF9BZGQoZ29v
Z2xldGVzdAotICBHSVRfUkVQT1NJVE9SWSAgICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dv
b2dsZXRlc3QuZ2l0Ci0gIEdJVF9UQUcgICAgICAgICAgIG1hc3RlcgotICBTT1VSQ0VfRElSICAg
ICAgICAiJHtDTUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LXNyYyIKLSAgQklOQVJZX0RJUiAg
ICAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1idWlsZCIKLSAgQ09ORklHVVJF
X0NPTU1BTkQgIiIKLSAgQlVJTERfQ09NTUFORCAgICAgIiIKLSAgSU5TVEFMTF9DT01NQU5EICAg
IiIKLSAgVEVTVF9DT01NQU5EICAgICAgIiIKLSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvQ01ha2UvRG93bmxvYWRHVGVzdC5jbWFrZSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9Eb3dubG9h
ZEdUZXN0LmNtYWtlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDQxMzIxNThiOGRm
M2FhZjY1ZDQ0MmYxNDg1MjE1MjVmYjI1M2RhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9Eb3dubG9hZEdUZXN0LmNtYWtlCisrKyAvZGV2L251
bGwKQEAgLTEsMzIgKzAsMCBAQAotIyBEb3dubG9hZHMgYW5kIHVucGFja3MgZ29vZ2xldGVzdCBh
dCBjb25maWd1cmUgdGltZS4gIEJhc2VkIG9uIHRoZSBpbnN0cnVjdGlvbnMKLSMgYXQgaHR0cHM6
Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L3RyZWUvbWFzdGVyL2dvb2dsZXRlc3QjaW5j
b3Jwb3JhdGluZy1pbnRvLWFuLWV4aXN0aW5nLWNtYWtlLXByb2plY3QKLQotIyBEb3dubG9hZCB0
aGUgbGF0ZXN0IGdvb2dsZXRlc3QgZnJvbSBHaXRodWIgbWFzdGVyCi1jb25maWd1cmVfZmlsZSgK
LSAgJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9DTWFrZUxpc3RzLnR4dC5pbgotICBnb29nbGV0
ZXN0LWRvd25sb2FkL0NNYWtlTGlzdHMudHh0Ci0pCi0KLSMgQ29uZmlndXJlIGFuZCBidWlsZCB0
aGUgZG93bmxvYWRlZCBnb29nbGV0ZXN0IHNvdXJjZQotZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQg
JHtDTUFLRV9DT01NQU5EfSAtRyAiJHtDTUFLRV9HRU5FUkFUT1J9IiAuCi0gIFJFU1VMVF9WQVJJ
QUJMRSByZXN1bHQKLSAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9nb29n
bGV0ZXN0LWRvd25sb2FkICkKLWlmKHJlc3VsdCkKLSAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQ01h
a2Ugc3RlcCBmb3IgZ29vZ2xldGVzdCBmYWlsZWQ6ICR7cmVzdWx0fSIpCi1lbmRpZigpCi0KLWV4
ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLS1idWlsZCAuCi0gIFJFU1VM
VF9WQVJJQUJMRSByZXN1bHQKLSAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElS
fS9nb29nbGV0ZXN0LWRvd25sb2FkKQotaWYocmVzdWx0KQotICBtZXNzYWdlKEZBVEFMX0VSUk9S
ICJCdWlsZCBzdGVwIGZvciBnb29nbGV0ZXN0IGZhaWxlZDogJHtyZXN1bHR9IikKLWVuZGlmKCkK
LQotIyBQcmV2ZW50IG92ZXJyaWRpbmcgdGhlIHBhcmVudCBwcm9qZWN0J3MgY29tcGlsZXIvbGlu
a2VyIHNldHRpbmdzIG9uIFdpbmRvd3MKLXNldChndGVzdF9mb3JjZV9zaGFyZWRfY3J0IE9OIENB
Q0hFIEJPT0wgIiIgRk9SQ0UpCi0KLSMgQWRkIGdvb2dsZXRlc3QgZGlyZWN0bHkgdG8gb3VyIGJ1
aWxkLiBUaGlzIGRlZmluZXMgdGhlIGd0ZXN0IGFuZCBndGVzdF9tYWluCi0jIHRhcmdldHMuCi1h
ZGRfc3ViZGlyZWN0b3J5KCR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1zcmMKLSAgICAg
ICAgICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWJ1aWxkCi0gICAgICAg
ICAgICAgICAgIEVYQ0xVREVfRlJPTV9BTEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvR29vZ2xldGVz
dC9DTWFrZUxpc3RzLnR4dC5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9Hb29nbGV0ZXN0L0NNYWtlTGlzdHMudHh0Lmlu
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ2MGEzM2U5YWM2YTZkZGZlMGViZDE4MWIzMzc0M2Y5NWU2N2I1YTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvR29vZ2xldGVzdC9DTWFrZUxpc3RzLnR4dC5pbgpAQCAt
MCwwICsxLDE1IEBACitjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjIpCisKK3By
b2plY3QoZ29vZ2xldGVzdC1kb3dubG9hZCBOT05FKQorCitpbmNsdWRlKEV4dGVybmFsUHJvamVj
dCkKK0V4dGVybmFsUHJvamVjdF9BZGQoZ29vZ2xldGVzdAorICBHSVRfUkVQT1NJVE9SWSAgICBo
dHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QuZ2l0CisgIEdJVF9UQUcgICAgICAg
ICAgIG1hc3RlcgorICBTT1VSQ0VfRElSICAgICAgICAiJHtDTUFLRV9CSU5BUllfRElSfS9nb29n
bGV0ZXN0LXNyYyIKKyAgQklOQVJZX0RJUiAgICAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0vZ29v
Z2xldGVzdC1idWlsZCIKKyAgQ09ORklHVVJFX0NPTU1BTkQgIiIKKyAgQlVJTERfQ09NTUFORCAg
ICAgIiIKKyAgSU5TVEFMTF9DT01NQU5EICAgIiIKKyAgVEVTVF9DT01NQU5EICAgICAgIiIKKykK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvR29vZ2xldGVz
dC9Eb3dubG9hZEdUZXN0LmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0dvb2dsZXRlc3QvRG93bmxvYWRHVGVzdC5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYzY4MmFlZjA3ZjNkN2ZiMmE5ODY1N2E1ZDZkY2JlOWRhMzcxZWQz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0dvb2dsZXRlc3QvRG93bmxvYWRHVGVzdC5jbWFr
ZQpAQCAtMCwwICsxLDMyIEBACisjIERvd25sb2FkcyBhbmQgdW5wYWNrcyBnb29nbGV0ZXN0IGF0
IGNvbmZpZ3VyZSB0aW1lLiAgQmFzZWQgb24gdGhlIGluc3RydWN0aW9ucworIyBhdCBodHRwczov
L2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvdHJlZS9tYXN0ZXIvZ29vZ2xldGVzdCNpbmNv
cnBvcmF0aW5nLWludG8tYW4tZXhpc3RpbmctY21ha2UtcHJvamVjdAorCisjIERvd25sb2FkIHRo
ZSBsYXRlc3QgZ29vZ2xldGVzdCBmcm9tIEdpdGh1YiBtYXN0ZXIKK2NvbmZpZ3VyZV9maWxlKAor
ICAke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L0NNYWtlTGlzdHMudHh0LmluCisgICR7Q01BS0Vf
QklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3dubG9hZC9DTWFrZUxpc3RzLnR4dAorKQorCisjIENv
bmZpZ3VyZSBhbmQgYnVpbGQgdGhlIGRvd25sb2FkZWQgZ29vZ2xldGVzdCBzb3VyY2UKK2V4ZWN1
dGVfcHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUcgIiR7Q01BS0VfR0VORVJBVE9S
fSIgLgorICBSRVNVTFRfVkFSSUFCTEUgcmVzdWx0CisgIFdPUktJTkdfRElSRUNUT1JZICR7Q01B
S0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3dubG9hZCApCitpZihyZXN1bHQpCisgIG1lc3Nh
Z2UoRkFUQUxfRVJST1IgIkNNYWtlIHN0ZXAgZm9yIGdvb2dsZXRlc3QgZmFpbGVkOiAke3Jlc3Vs
dH0iKQorZW5kaWYoKQorCitleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9
IC0tYnVpbGQgLgorICBSRVNVTFRfVkFSSUFCTEUgcmVzdWx0CisgIFdPUktJTkdfRElSRUNUT1JZ
ICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3dubG9hZCkKK2lmKHJlc3VsdCkKKyAg
bWVzc2FnZShGQVRBTF9FUlJPUiAiQnVpbGQgc3RlcCBmb3IgZ29vZ2xldGVzdCBmYWlsZWQ6ICR7
cmVzdWx0fSIpCitlbmRpZigpCisKKyMgUHJldmVudCBvdmVycmlkaW5nIHRoZSBwYXJlbnQgcHJv
amVjdCdzIGNvbXBpbGVyL2xpbmtlciBzZXR0aW5ncyBvbiBXaW5kb3dzCitzZXQoZ3Rlc3RfZm9y
Y2Vfc2hhcmVkX2NydCBPTiBDQUNIRSBCT09MICIiIEZPUkNFKQorCisjIEFkZCBnb29nbGV0ZXN0
IGRpcmVjdGx5IHRvIG91ciBidWlsZC4gVGhpcyBkZWZpbmVzIHRoZSBndGVzdCBhbmQgZ3Rlc3Rf
bWFpbgorIyB0YXJnZXRzLgorYWRkX3N1YmRpcmVjdG9yeSgke0NNQUtFX0JJTkFSWV9ESVJ9L2dv
b2dsZXRlc3Qtc3JjCisgICAgICAgICAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xl
dGVzdC1idWlsZAorICAgICAgICAgICAgICAgICBFWENMVURFX0ZST01fQUxMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL0NNYWtlL1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9SRUFETUUubWQKaW5kZXggNzliYmUyNGQ1YWQ0
ZjQwYTQzOTFiZmFiMDVhYjc3Y2EwMDAzMmU3Zi4uNDY5ZGZlZjVkMWNhZDk1MTM1NWIyODRlOTgw
MWU5MTA0ZDliYTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL1JFQURNRS5tZAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2Uv
UkVBRE1FLm1kCkBAIC0zLDcgKzMsNyBAQAogQWJzZWlsIGNvbWVzIHdpdGggYSBDTWFrZSBidWls
ZCBzY3JpcHQgKFtDTWFrZUxpc3RzLnR4dF0oLi4vQ01ha2VMaXN0cy50eHQpKQogdGhhdCBjYW4g
YmUgdXNlZCBvbiBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zICgiQyIgc3RhbmRzIGZvciBjcm9z
cy1wbGF0Zm9ybS4pLgogSWYgeW91IGRvbid0IGhhdmUgQ01ha2UgaW5zdGFsbGVkIGFscmVhZHks
IHlvdSBjYW4gZG93bmxvYWQgaXQgZm9yIGZyZWUgZnJvbQotPGh0dHA6Ly93d3cuY21ha2Uub3Jn
Lz4uCis8aHR0cHM6Ly93d3cuY21ha2Uub3JnLz4uCiAKIENNYWtlIHdvcmtzIGJ5IGdlbmVyYXRp
bmcgbmF0aXZlIG1ha2VmaWxlcyBvciBidWlsZCBwcm9qZWN0cyB0aGF0IGNhbgogYmUgdXNlZCBp
biB0aGUgY29tcGlsZXIgZW52aXJvbm1lbnQgb2YgeW91ciBjaG9pY2UuCkBAIC0zNywyMCArMzcs
MTIgQEAgc2VjdGlvbiBvZiB5b3VyIGV4ZWN1dGFibGUgb3Igb2YgeW91ciBsaWJyYXJ5Ljxicj4K
IEhlcmUgaXMgYSBzaG9ydCBDTWFrZUxpc3RzLnR4dCBleGFtcGxlIG9mIGEgcHJvamVjdCBmaWxl
IHVzaW5nIEFic2VpbC4KIAogYGBgY21ha2UKLWNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lP
TiAyLjguMTIpCitjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy41KQogcHJvamVjdCht
eV9wcm9qZWN0KQogCi1zZXQoQ01BS0VfQ1hYX0ZMQUdTICItc3RkPWMrKzExIC1zdGRsaWI9bGli
YysrICR7Q01BS0VfQ1hYX0ZMQUdTfSIpCi0KLWlmKE1TVkMpCi0gICMgL3dkNDAwNSAgbWFjcm8t
cmVkZWZpbml0aW9uCi0gICMgL3dkNDA2OCAgdW5rbm93biBwcmFnbWEKLSAgIyAvd2Q0MjQ0ICBj
b252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTInCi0gICMgL3dkNDI2NyAgY29udmVyc2lv
biBmcm9tICdzaXplX3QnIHRvICd0eXBlMicKLSAgIyAvd2Q0ODAwICBmb3JjZSB2YWx1ZSB0byBi
b29sICd0cnVlJyBvciAnZmFsc2UnIChwZXJmb3JtYW5jZSB3YXJuaW5nKQotICBhZGRfY29tcGls
ZV9vcHRpb25zKC93ZDQwMDUgL3dkNDA2OCAvd2Q0MjQ0IC93ZDQyNjcgL3dkNDgwMCkKLSAgYWRk
X2RlZmluaXRpb25zKC9ETk9NSU5NQVggL0RXSU4zMl9MRUFOX0FORF9NRUFOPTEgL0RfQ1JUX1NF
Q1VSRV9OT19XQVJOSU5HUykKLWVuZGlmKCkKKyMgUGljayB0aGUgQysrIHN0YW5kYXJkIHRvIGNv
bXBpbGUgd2l0aC4KKyMgQWJzZWlsIGN1cnJlbnRseSBzdXBwb3J0cyBDKysxMSwgQysrMTQsIGFu
ZCBDKysxNy4KK3NldChDTUFLRV9DWFhfU1RBTkRBUkQgMTEpCiAKIGFkZF9zdWJkaXJlY3Rvcnko
YWJzZWlsLWNwcCkKIApAQCAtOTUsOCArODcsOCBAQCBIZXJlJ3MgYSBub24tZXhoYXVzdGl2ZSBs
aXN0IG9mIEFic2VpbCBDTWFrZSBwdWJsaWMgdGFyZ2V0czoKIGBgYGNtYWtlCiBhYnNsOjpiYXNl
CiBhYnNsOjphbGdvcml0aG0KLWFic2w6OmNvbnRhaW5lcgogYWJzbDo6ZGVidWdnaW5nCithYnNs
OjpmbGF0X2hhc2hfbWFwCiBhYnNsOjptZW1vcnkKIGFic2w6Om1ldGEKIGFic2w6Om51bWVyaWMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9DTWFrZS9hYnNsQ29uZmlnLmNtYWtlLmluIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL2Fic2xDb25m
aWcuY21ha2UuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA4NDdmYTc3MjNmNzc3YmU1NjllNjUzMzkzMDgzNzM4
MzQ1ZTM4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9hYnNsQ29uZmlnLmNtYWtlLmluCkBA
IC0wLDAgKzEsNyBAQAorIyBhYnNsIENNYWtlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKworaW5jbHVk
ZShGaW5kVGhyZWFkcykKKworQFBBQ0tBR0VfSU5JVEAKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VS
UkVOVF9MSVNUX0RJUn0vQFBST0pFQ1RfTkFNRUBUYXJnZXRzLmNtYWtlIikKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvaW5zdGFsbF90ZXN0X3Byb2plY3Qv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvaW5zdGFsbF90ZXN0X3Byb2plY3QvQ01ha2VMaXN0cy50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDZiNzk3ZTllZGRjOGYwZjQyMmM0MWQ1OTIxZjAzYTU0OTBkMWMzYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9pbnN0YWxsX3Rlc3RfcHJvamVjdC9DTWFrZUxpc3Rz
LnR4dApAQCAtMCwwICsxLDI3IEBACisjCisjIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisjCisjICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworIyBB
IHNpbXBsZSBDTWFrZUxpc3RzLnR4dCBmb3IgdGVzdGluZyBjbWFrZSBpbnN0YWxsYXRpb24KKwor
Y21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuNSkKK3Byb2plY3QoYWJzbF9jbWFrZV90
ZXN0aW5nIENYWCkKKworc2V0KENNQUtFX0NYWF9TVEFOREFSRCAxMSkKKworYWRkX2V4ZWN1dGFi
bGUoc2ltcGxlIHNpbXBsZS5jYykKKworZmluZF9wYWNrYWdlKGFic2wgUkVRVUlSRUQpCisKK3Rh
cmdldF9saW5rX2xpYnJhcmllcyhzaW1wbGUgYWJzbDo6c3RyaW5ncykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9D
TWFrZS9pbnN0YWxsX3Rlc3RfcHJvamVjdC9zaW1wbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvaW5zdGFsbF90ZXN0
X3Byb2plY3Qvc2ltcGxlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZTM1MjkxMmJhYjViNWZjN2U3N2RiYmJl
ZjMzMzQzN2FlNjc1YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvaW5zdGFsbF90ZXN0X3By
b2plY3Qvc2ltcGxlLmNjCkBAIC0wLDAgKzEsMjMgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOSBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3Mvc3Vic3RpdHV0ZS5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
IHsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdjOyArK2kpIHsKKyAgICBzdGQ6OmNvdXQgPDwg
YWJzbDo6U3Vic3RpdHV0ZSgiQXJnICQwOiAkMVxuIiwgaSwgYXJndltpXSk7CisgIH0KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9DTWFrZS9pbnN0YWxsX3Rlc3RfcHJvamVjdC90ZXN0LnNoIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL2lu
c3RhbGxfdGVzdF9wcm9qZWN0L3Rlc3Quc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk5ODliMDMxZDM2ZGRjY2Vj
ZjBmMWQyMjg3MTc1MGE4OGNkMTllNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9pbnN0YWxs
X3Rlc3RfcHJvamVjdC90ZXN0LnNoCkBAIC0wLDAgKzEsMTQ0IEBACisjIS9iaW4vYmFzaAorIwor
IyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisjCisjIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyMgIlVuaXQiIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0
cyBmb3IgQWJzbCBDTWFrZSBpbnN0YWxsYXRpb24KKworIyBUT0RPKGFic2wtdGVhbSk6IFRoaXMg
c2NyaXB0IGlzbid0IGZ1bGx5IGhlcm1ldGljIGJlY2F1c2UKKyMgLURBQlNMX1VTRV9HT09HTEVU
RVNUX0hFQUQ9T04gbWVhbnMgdGhhdCB0aGlzIHNjcmlwdCBpc24ndCBwaW5uZWQgdG8gYSBmaXhl
ZAorIyB2ZXJzaW9uIG9mIEdvb2dsZVRlc3QuIFRoaXMgbWVhbnMgdGhhdCBhbiB1cHN0cmVhbSBj
aGFuZ2UgdG8gR29vZ2xlVGVzdCBjb3VsZAorIyBicmVhayB0aGlzIHRlc3QuIEZpeCB0aGlzIGJ5
IGFsbG93aW5nIHRoaXMgc2NyaXB0IHRvIHBpbiB0byBhIGtub3duLWdvb2QKKyMgdmVyc2lvbiBv
ZiBHb29nbGVUZXN0LgorCisjIEZhaWwgb24gYW55IGVycm9yLiBUcmVhdCB1bnNldCB2YXJpYWJs
ZXMgYW4gZXJyb3IuIFByaW50IGNvbW1hbmRzIGFzIGV4ZWN1dGVkLgorc2V0IC1ldW94IHBpcGVm
YWlsCisKK2luc3RhbGxfYWJzbCgpIHsKKyAgcHVzaGQgIiR7YWJzbF9idWlsZF9kaXJ9IgorICBp
ZiBbWyAiJHsjfSIgLWVxIDEgXV07IHRoZW4KKyAgICBjbWFrZSAtRENNQUtFX0lOU1RBTExfUFJF
RklYPSIkezF9IiAiJHthYnNsX2Rpcn0iCisgIGVsc2UKKyAgICBjbWFrZSAiJHthYnNsX2Rpcn0i
CisgIGZpCisgIGNtYWtlIC0tYnVpbGQgLiAtLXRhcmdldCBpbnN0YWxsIC0tIC1qCisgIHBvcGQK
K30KKwordW5pbnN0YWxsX2Fic2woKSB7CisgIHhhcmdzIHJtIDwgIiR7YWJzbF9idWlsZF9kaXJ9
Ii9pbnN0YWxsX21hbmlmZXN0LnR4dAorICBybSAtcmYgIiR7YWJzbF9idWlsZF9kaXJ9IgorICBt
a2RpciAtcCAiJHthYnNsX2J1aWxkX2Rpcn0iCit9CisKK2x0c19pbnN0YWxsPSIiCisKK3doaWxl
IGdldG9wdHMgIjpsIiBsdHM7IGRvCisgIGNhc2UgIiR7bHRzfSIgaW4KKyAgICBsICkKKyAgICAg
IGx0c19pbnN0YWxsPSJ0cnVlIgorICAgICAgOzsKKyAgZXNhYworZG9uZQorCithYnNsX2Rpcj0v
YWJzZWlsLWNwcAorYWJzbF9idWlsZF9kaXI9L2J1aWxkZnMvYWJzbC1idWlsZAorcHJvamVjdF9k
aXI9IiR7YWJzbF9kaXJ9Ii9DTWFrZS9pbnN0YWxsX3Rlc3RfcHJvamVjdAorcHJvamVjdF9idWls
ZF9kaXI9L2J1aWxkZnMvcHJvamVjdC1idWlsZAorCitta2RpciAtcCAiJHthYnNsX2J1aWxkX2Rp
cn0iCitta2RpciAtcCAiJHtwcm9qZWN0X2J1aWxkX2Rpcn0iCisKK2lmIFtbICIke2x0c19pbnN0
YWxsfSIgXV07IHRoZW4KKyAgaW5zdGFsbF9kaXI9Ii91c3IvbG9jYWwiCitlbHNlCisgIGluc3Rh
bGxfZGlyPSIke3Byb2plY3RfYnVpbGRfZGlyfSIvaW5zdGFsbAorZmkKK21rZGlyIC1wICIke2lu
c3RhbGxfZGlyfSIKKworIyBUZXN0IGJ1aWxkLCBpbnN0YWxsLCBhbmQgbGluayBhZ2FpbnN0IGlu
c3RhbGxlZCBhYnNlaWwKK3B1c2hkICIke3Byb2plY3RfYnVpbGRfZGlyfSIKK2lmIFtbICIke2x0
c19pbnN0YWxsfSIgXV07IHRoZW4KKyAgaW5zdGFsbF9hYnNsCisgIGNtYWtlICIke3Byb2plY3Rf
ZGlyfSIKK2Vsc2UKKyAgaW5zdGFsbF9hYnNsICIke2luc3RhbGxfZGlyfSIKKyAgY21ha2UgIiR7
cHJvamVjdF9kaXJ9IiAtRENNQUtFX1BSRUZJWF9QQVRIPSIke2luc3RhbGxfZGlyfSIKK2ZpCisK
K2NtYWtlIC0tYnVpbGQgLiAtLXRhcmdldCBzaW1wbGUKKworb3V0cHV0PSIkKCR7cHJvamVjdF9i
dWlsZF9kaXJ9L3NpbXBsZSAicHJpbnRtZSIgMj4mMSkiCitpZiBbWyAiJHtvdXRwdXR9IiAhPSAq
IkFyZyAxOiBwcmludG1lIiogXV07IHRoZW4KKyAgZWNobyAiRmF1bHR5IG91dHB1dCBvbiBzaW1w
bGUgcHJvamVjdDoiCisgIGVjaG8gIiR7b3V0cHV0fSIKKyAgZXhpdCAxCitmaQorCitwb3BkCisK
KyMgVGVzdCB0aGF0IHdlIGhhdmVuJ3QgYWNjaWRlbnRhbGx5IG1hZGUgYWJzbDo6YWJzbGJsYWgK
K3B1c2hkICIke2luc3RhbGxfZGlyfSIKKworIyBTdGFydGluZyBpbiBDTWFrZSAzLjEyIHRoZSBk
ZWZhdWx0IGluc3RhbGwgZGlyIGlzIGxpYiRiaXRfd2lkdGgKK2lmIFtbIC1kIGxpYjY0IF1dOyB0
aGVuCisgIGxpYmRpcj0ibGliNjQiCitlbGlmIFtbIC1kIGxpYiBdXTsgdGhlbgorICBsaWJkaXI9
ImxpYiIKK2Vsc2UKKyAgZWNobyAibHMgKiwgKi8qLCAqLyovKjoiCisgIGxzICoKKyAgbHMgKi8q
CisgIGxzICovKi8qCisgIGVjaG8gInVua25vd24gbGliIGRpciIKK2ZpCisKK2lmIFtbICIke2x0
c19pbnN0YWxsfSIgXV07IHRoZW4KKyAgIyBMVFMgdmVyc2lvbnMgYXBwZW5kIHRoZSBkYXRlIG9m
IHRoZSByZWxlYXNlIHRvIHRoZSBzdWJkaXIuCisgICMgOTk5OS85OS85OSBpcyB0aGUgZHVtbXkg
ZGF0ZSB1c2VkIGluIHRoZSBsb2NhbF9sdHMgd29ya2Zsb3cuCisgIGFic2xfc3ViZGlyPSJhYnNs
Xzk5OTk5OTk5IgorZWxzZQorICBhYnNsX3N1YmRpcj0iYWJzbCIKK2ZpCisKK2lmICEgZ3JlcCBh
YnNsOjpzdHJpbmdzICIke2xpYmRpcn0vY21ha2UvJHthYnNsX3N1YmRpcn0vYWJzbFRhcmdldHMu
Y21ha2UiOyB0aGVuCisgIGNhdCAiJHtsaWJkaXJ9Ii9jbWFrZS9hYnNsL2Fic2xUYXJnZXRzLmNt
YWtlCisgIGVjaG8gIkNNYWtlIHRhcmdldHMgbmFtZWQgaW5jb3JyZWN0bHkiCisgIGV4aXQgMQor
ZmkKKwordW5pbnN0YWxsX2Fic2wKK3BvcGQKKworaWYgW1sgISAiJHtsdHNfaW5zdGFsbH0iIF1d
OyB0aGVuCisgICMgVGVzdCB0aGF0IHdlIHdhcm4gaWYgaW5zdGFsbGVkIHdpdGhvdXQgYSBwcmVm
aXggb3IgYSBzeXN0ZW0gcHJlZml4CisgIG91dHB1dD0iJChpbnN0YWxsX2Fic2wgMj4mMSkiCisg
IGlmIFtbICIke291dHB1dH0iICE9ICoiUGxlYXNlIHNldCBDTUFLRV9JTlNUQUxMX1BSRUZJWCIq
IF1dOyB0aGVuCisgICAgZWNobyAiSW5zdGFsbCB3aXRob3V0IHByZWZpeCBkaWRuJ3Qgd2FybiBh
cyBleHBlY3RlZC4gT3V0cHV0OiIKKyAgICBlY2hvICIke291dHB1dH0iCisgICAgZXhpdCAxCisg
IGZpCisgIHVuaW5zdGFsbF9hYnNsCisKKyAgb3V0cHV0PSIkKGluc3RhbGxfYWJzbCAvdXNyIDI+
JjEpIgorICBpZiBbWyAiJHtvdXRwdXR9IiAhPSAqIlBsZWFzZSBzZXQgQ01BS0VfSU5TVEFMTF9Q
UkVGSVgiKiBdXTsgdGhlbgorICAgIGVjaG8gIkluc3RhbGwgd2l0aCAvdXNyIGRpZG4ndCB3YXJu
IGFzIGV4cGVjdGVkLiBPdXRwdXQ6IgorICAgIGVjaG8gIiR7b3V0cHV0fSIKKyAgICBleGl0IDEK
KyAgZmkKKyAgdW5pbnN0YWxsX2Fic2wKK2ZpCisKK2VjaG8gIkluc3RhbGwgdGVzdCBjb21wbGV0
ZSEiCitleGl0IDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZUxpc3RzLnR4
dAppbmRleCA5YTdlMTAzMWIyMzUxMTA0ZTNlYzgzMjExNGE4ZDZiNzVkNTUwNGMxLi44NmY1NjM0
NGU3NGVhN2MyZmUwZWRkMGE0N2FkZmNlMmI5YmRhMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAj
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTQsMzAgKzE0LDQwIEBACiAjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgogIwogCi0jIFdlIHJlcXVpcmUgMy4wIGZvciBtb2Rlcm4sIHRhcmdldC1iYXNlZCBDTWFrZS4g
IFdlIHJlcXVpcmUgMy4xIGZvciB0aGUgdXNlIG9mCi0jIENYWF9TVEFOREFSRCBpbiBvdXIgdGFy
Z2V0cy4KLWNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjEpCi1wcm9qZWN0KGFic2wp
CisjIE1vc3Qgd2lkZWx5IHVzZWQgZGlzdHJpYnV0aW9ucyBoYXZlIGNtYWtlIDMuNSBvciBncmVh
dGVyIGF2YWlsYWJsZSBhcyBvZiBNYXJjaAorIyAyMDE5LiAgQSBub3RhYmxlIGV4Y2VwdGlvbiBp
cyBSSEVMLTcgKENlbnRPUzcpLiAgWW91IGNhbiBpbnN0YWxsIGEgY3VycmVudAorIyB2ZXJzaW9u
IG9mIENNYWtlIGJ5IGZpcnN0IGluc3RhbGxpbmcgRXh0cmEgUGFja2FnZXMgZm9yIEVudGVycHJp
c2UgTGludXgKKyMgKGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9FUEVMI0V4dHJhX1Bh
Y2thZ2VzX2Zvcl9FbnRlcnByaXNlX0xpbnV4Xy4yOEVQRUwuMjkpCisjIGFuZCB0aGVuIGlzc3Vp
bmcgYHl1bSBpbnN0YWxsIGNtYWtlM2Agb24gdGhlIGNvbW1hbmQgbGluZS4KK2NtYWtlX21pbmlt
dW1fcmVxdWlyZWQoVkVSU0lPTiAzLjUpCiAKLWxpc3QoQVBQRU5EIENNQUtFX01PRFVMRV9QQVRI
ICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9DTWFrZSkKKyMgQ29tcGlsZXIgaWQgZm9yIEFwcGxlIENs
YW5nIGlzIG5vdyBBcHBsZUNsYW5nLgorY21ha2VfcG9saWN5KFNFVCBDTVAwMDI1IE5FVykKIAot
aW5jbHVkZShHTlVJbnN0YWxsRGlycykKLWluY2x1ZGUoQWJzZWlsSGVscGVycykKKyMgaWYgY29t
bWFuZCBjYW4gdXNlIElOX0xJU1QKK2NtYWtlX3BvbGljeShTRVQgQ01QMDA1NyBORVcpCisKKyMg
UHJvamVjdCB2ZXJzaW9uIHZhcmlhYmxlcyBhcmUgdGhlIGVtcHR5IHN0ZDo6c3RyaW5nIGlmIHZl
cnNpb24gaXMgdW5zcGVjaWZpZWQKK2NtYWtlX3BvbGljeShTRVQgQ01QMDA0OCBORVcpCiAKK3By
b2plY3QoYWJzbCBDWFgpCiAKLSMgY29uZmlnIG9wdGlvbnMKLWlmIChNU1ZDKQotICAjIC93ZDQw
MDUgIG1hY3JvLXJlZGVmaW5pdGlvbgotICAjIC93ZDQwNjggIHVua25vd24gcHJhZ21hCi0gICMg
L3dkNDI0NCAgY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJwotICAjIC93ZDQyNjcg
IGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAndHlwZTInCi0gICMgL3dkNDgwMCAgZm9yY2Ug
dmFsdWUgdG8gYm9vbCAndHJ1ZScgb3IgJ2ZhbHNlJyAocGVyZm9ybWFuY2Ugd2FybmluZykKLSAg
YWRkX2NvbXBpbGVfb3B0aW9ucygvVzMgL3dkNDAwNSAvd2Q0MDY4IC93ZDQyNDQgL3dkNDI2NyAv
d2Q0ODAwKQotICBhZGRfZGVmaW5pdGlvbnMoL0ROT01JTk1BWCAvRFdJTjMyX0xFQU5fQU5EX01F
QU49MSAvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EX1NDTF9TRUNVUkVfTk9fV0FSTklOR1Mp
CisjIHdoZW4gYWJzbCBpcyBpbmNsdWRlZCBhcyBzdWJwcm9qZWN0IChpLmUuIHVzaW5nIGFkZF9z
dWJkaXJlY3RvcnkoYWJzZWlsLWNwcCkpCisjIGluIHRoZSBzb3VyY2UgdHJlZSBvZiBhIHByb2pl
Y3QgdGhhdCB1c2VzIGl0LCBpbnN0YWxsIHJ1bGVzIGFyZSBkaXNhYmxlZC4KK2lmKE5PVCAiXiR7
Q01BS0VfU09VUkNFX0RJUn0kIiBTVFJFUVVBTCAiXiR7UFJPSkVDVF9TT1VSQ0VfRElSfSQiKQor
ICBzZXQoQUJTTF9FTkFCTEVfSU5TVEFMTCBGQUxTRSkKIGVsc2UoKQotICBzZXQoQUJTTF9TVERf
Q1hYX0ZMQUcgIi1zdGQ9YysrMTEiIENBQ0hFIFNUUklORyAiYysrIHN0ZCBmbGFnIChkZWZhdWx0
OiBjKysxMSkiKQorICBzZXQoQUJTTF9FTkFCTEVfSU5TVEFMTCBUUlVFKQogZW5kaWYoKQogCits
aXN0KEFQUEVORCBDTUFLRV9NT0RVTEVfUEFUSAorICAke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9
L0NNYWtlCisgICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vYWJzbC9jb3B0cworKQorCitpbmNs
dWRlKEFic2VpbEluc3RhbGxEaXJzKQoraW5jbHVkZShDTWFrZVBhY2thZ2VDb25maWdIZWxwZXJz
KQoraW5jbHVkZShBYnNlaWxIZWxwZXJzKQogCiAKICMjCkBAIC01NCwxMSArNjQsMTEgQEAgZW5k
aWYoKQogIyBpbmNsdWRlIGN1cnJlbnQgcGF0aAogbGlzdChBUFBFTkQgQUJTTF9DT01NT05fSU5D
TFVERV9ESVJTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfSkKIAotIyAtc3RkPVgKLXNldChD
TUFLRV9DWFhfRkxBR1MgIiR7QUJTTF9TVERfQ1hYX0ZMQUd9ICR7Q01BS0VfQ1hYX0ZMQUdTfSIp
Ci0KLSMgLWZleGNlcHRpb25zCi1zZXQoQUJTTF9FWENFUFRJT05TX0ZMQUcgIiR7Q01BS0VfQ1hY
X0VYQ0VQVElPTlN9IikKK2lmKCIke0NNQUtFX0NYWF9DT01QSUxFUl9JRH0iIE1BVENIRVMgIkNs
YW5nIikKKyAgc2V0KEFCU0xfVVNJTkdfQ0xBTkcgT04pCitlbHNlKCkKKyAgc2V0KEFCU0xfVVNJ
TkdfQ0xBTkcgT0ZGKQorZW5kaWYoKQogCiAjIGZpbmQgZGVwZW5kZW5jaWVzCiAjIyBwdGhyZWFk
CkBAIC04MCw3ICs5MCw5IEBAIGVuZGlmKCkKIGlmKEJVSUxEX1RFU1RJTkcpCiAKICAgaWYoJHtB
QlNMX1VTRV9HT09HTEVURVNUX0hFQUR9KQotICAgIGluY2x1ZGUoQ01ha2UvRG93bmxvYWRHVGVz
dC5jbWFrZSkKKyAgICBpbmNsdWRlKENNYWtlL0dvb2dsZXRlc3QvRG93bmxvYWRHVGVzdC5jbWFr
ZSkKKyAgICBzZXQoYWJzbF9ndGVzdF9zcmNfZGlyICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xl
dGVzdC1zcmMpCisgICAgc2V0KGFic2xfZ3Rlc3RfYnVpbGRfZGlyICR7Q01BS0VfQklOQVJZX0RJ
Un0vZ29vZ2xldGVzdC1idWlsZCkKICAgZW5kaWYoKQogCiAgIGNoZWNrX3RhcmdldChndGVzdCkK
QEAgLTk2LDMgKzEwOCw1MyBAQCBpZihCVUlMRF9URVNUSU5HKQogZW5kaWYoKQogCiBhZGRfc3Vi
ZGlyZWN0b3J5KGFic2wpCisKK2lmKEFCU0xfRU5BQkxFX0lOU1RBTEwpCisgICMgYWJzbDpsdHMt
cmVtb3ZlLWJlZ2luKHN5c3RlbSBpbnN0YWxsYXRpb24gaXMgc3VwcG9ydGVkIGZvciBMVFMgcmVs
ZWFzZXMpCisgICMgV2UgZG9uJ3Qgc3VwcG9ydCBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24KKyAg
bGlzdChBUFBFTkQgU1lTVEVNX0lOU1RBTExfRElSUyAiL3Vzci9sb2NhbCIgIi91c3IiICIvb3B0
LyIgIi9vcHQvbG9jYWwiICJjOi9Qcm9ncmFtIEZpbGVzLyR7UFJPSkVDVF9OQU1FfSIpCisgIGlm
KE5PVCBERUZJTkVEIENNQUtFX0lOU1RBTExfUFJFRklYIE9SIENNQUtFX0lOU1RBTExfUFJFRklY
IElOX0xJU1QgU1lTVEVNX0lOU1RBTExfRElSUykKKyAgICBtZXNzYWdlKFdBUk5JTkcgIlwKKyAg
VGhlIGRlZmF1bHQgYW5kIHN5c3RlbS1sZXZlbCBpbnN0YWxsIGRpcmVjdG9yaWVzIGFyZSB1bnN1
cHBvcnRlZCBleGNlcHQgaW4gTFRTIFwKKyAgcmVsZWFzZXMgb2YgQWJzZWlsLiAgUGxlYXNlIHNl
dCBDTUFLRV9JTlNUQUxMX1BSRUZJWCB0byBpbnN0YWxsIEFic2VpbCBpbiB5b3VyIFwKKyAgc291
cmNlIG9yIGJ1aWxkIHRyZWUgZGlyZWN0bHkuXAorICAgICIpCisgIGVuZGlmKCkKKyAgIyBhYnNs
Omx0cy1yZW1vdmUtZW5kCisKKyAgIyBpbnN0YWxsIGFzIGEgc3ViZGlyZWN0b3J5IG9ubHkKKyAg
aW5zdGFsbChFWFBPUlQgJHtQUk9KRUNUX05BTUV9VGFyZ2V0cworICAgIE5BTUVTUEFDRSBhYnNs
OjoKKyAgICBERVNUSU5BVElPTiAiJHtBQlNMX0lOU1RBTExfQ09ORklHRElSfSIKKyAgKQorCisg
IGNvbmZpZ3VyZV9wYWNrYWdlX2NvbmZpZ19maWxlKAorICAgIENNYWtlL2Fic2xDb25maWcuY21h
a2UuaW4KKyAgICAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9LyR7UFJPSkVDVF9OQU1FfUNvbmZpZy5j
bWFrZSIKKyAgICBJTlNUQUxMX0RFU1RJTkFUSU9OICIke0FCU0xfSU5TVEFMTF9DT05GSUdESVJ9
IgorICApCisgIGluc3RhbGwoRklMRVMgIiR7UFJPSkVDVF9CSU5BUllfRElSfS8ke1BST0pFQ1Rf
TkFNRX1Db25maWcuY21ha2UiCisgICAgREVTVElOQVRJT04gIiR7QUJTTF9JTlNUQUxMX0NPTkZJ
R0RJUn0iCisgICkKKworICAjIEFic2VpbCBvbmx5IGhhcyBhIHZlcnNpb24gaW4gTFRTIHJlbGVh
c2VzLiAgVGhpcyBtZWNoYW5pc20gaXMgYWNjb21wbGlzaGVkCisgICMgQWJzZWlsJ3MgaW50ZXJu
YWwgQ29weWJhcmEgKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY29weWJhcmEpIHdvcmtmbG93
cyBhbmQKKyAgIyBpc24ndCB2aXNpYmxlIGluIHRoZSBDTWFrZSBidWlsZHN5c3RlbSBpdHNlbGYu
CisgIGlmKGFic2xfVkVSU0lPTikKKyAgICB3cml0ZV9iYXNpY19wYWNrYWdlX3ZlcnNpb25fZmls
ZSgKKyAgICAgICIke1BST0pFQ1RfQklOQVJZX0RJUn0vJHtQUk9KRUNUX05BTUV9Q29uZmlnVmVy
c2lvbi5jbWFrZSIKKyAgICAgIENPTVBBVElCSUxJVFkgRXhhY3RWZXJzaW9uCisgICAgKQorCisg
ICAgaW5zdGFsbChGSUxFUyAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9LyR7UFJPSkVDVF9OQU1FfUNv
bmZpZ1ZlcnNpb24uY21ha2UiCisgICAgICBERVNUSU5BVElPTiAke0FCU0xfSU5TVEFMTF9DT05G
SUdESVJ9CisgICAgKQorICBlbmRpZigpICAjIGFic2xfVkVSU0lPTgorCisgIGluc3RhbGwoRElS
RUNUT1JZIGFic2wKKyAgICBERVNUSU5BVElPTiAke0FCU0xfSU5TVEFMTF9JTkNMVURFRElSfQor
ICAgIEZJTEVTX01BVENISU5HCisgICAgICBQQVRURVJOICIqLmluYyIKKyAgICAgIFBBVFRFUk4g
IiouaCIKKyAgKQorZW5kaWYoKSAgIyBBQlNMX0VOQUJMRV9JTlNUQUxMCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
Q09OVFJJQlVUSU5HLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL0NPTlRSSUJVVElORy5tZAppbmRleCA0MDM1MWRkY2ZhYTE0ZTBl
ZDI1MzAzMTEwMGEwNGY5ZDMzMjNkZjYxLi5mNGNiNGEyOWVkMDdkNDJjNjhkNzc0MmYwYmJlMWEw
N2RhYzdmZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ09OVFJJQlVUSU5HLm1kCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DT05UUklCVVRJ
TkcubWQKQEAgLTE4LDYgKzE4LDUzIEBAIFlvdSBnZW5lcmFsbHkgb25seSBuZWVkIHRvIHN1Ym1p
dCBhIENMQSBvbmNlLCBzbyBpZiB5b3UndmUgYWxyZWFkeSBzdWJtaXR0ZWQgb25lCiAoZXZlbiBp
ZiBpdCB3YXMgZm9yIGEgZGlmZmVyZW50IHByb2plY3QpLCB5b3UgcHJvYmFibHkgZG9uJ3QgbmVl
ZCB0byBkbyBpdAogYWdhaW4uCiAKKyMjIENvbnRyaWJ1dGlvbiBHdWlkZWxpbmVzCisKK1BvdGVu
dGlhbCBjb250cmlidXRvcnMgc29tZXRpbWVzIGFzayB1cyBpZiB0aGUgQWJzZWlsIHByb2plY3Qg
aXMgdGhlIGFwcHJvcHJpYXRlCitob21lIGZvciB0aGVpciB1dGlsaXR5IGxpYnJhcnkgY29kZSBv
ciBmb3Igc3BlY2lmaWMgZnVuY3Rpb25zIGltcGxlbWVudGluZworbWlzc2luZyBwb3J0aW9ucyBv
ZiB0aGUgc3RhbmRhcmQuIE9mdGVuLCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gaXMgIm5v
Ii4KK1dl4oCZZCBsaWtlIHRvIGFydGljdWxhdGUgb3VyIHRoaW5raW5nIG9uIHRoaXMgaXNzdWUg
c28gdGhhdCBvdXIgY2hvaWNlcyBjYW4gYmUKK3VuZGVyc3Rvb2QgYnkgZXZlcnlvbmUgYW5kIHNv
IHRoYXQgY29udHJpYnV0b3JzIGNhbiBoYXZlIGEgYmV0dGVyIGludHVpdGlvbgorYWJvdXQgd2hl
dGhlciBBYnNlaWwgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiBhZG9wdGluZyBhIG5ldyBsaWJyYXJ5
LgorCisjIyMgUHJpb3JpdGllcworCitBbHRob3VnaCBvdXIgbWlzc2lvbiBpcyB0byBhdWdtZW50
IHRoZSBDKysgc3RhbmRhcmQgbGlicmFyeSwgb3VyIGdvYWwgaXMgbm90IHRvCitwcm92aWRlIGEg
ZnVsbCBmb3J3YXJkLWNvbXBhdGlibGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGxhdGVzdCBzdGFu
ZGFyZC4gRm9yIHVzCit0byBjb25zaWRlciBhIGxpYnJhcnkgZm9yIGluY2x1c2lvbiBpbiBBYnNl
aWwsIGl0IGlzIG5vdCBlbm91Z2ggdGhhdCBhIGxpYnJhcnkKK2lzIHVzZWZ1bC4gV2UgZ2VuZXJh
bGx5IGNob29zZSB0byByZWxlYXNlIGEgbGlicmFyeSB3aGVuIGl0IG1lZXRzIGF0IGxlYXN0IG9u
ZQorb2YgdGhlIGZvbGxvd2luZyBjcml0ZXJpYToKKworKiAgICoqV2lkZXNwcmVhZCB1c2FnZSoq
IC0gVXNpbmcgb3VyIGludGVybmFsIGNvZGViYXNlIHRvIGhlbHAgZ2F1Z2UgdXNhZ2UsIG1vc3QK
KyAgICBvZiB0aGUgbGlicmFyaWVzIHdlJ3ZlIHJlbGVhc2VkIGhhdmUgdGVucyBvZiB0aG91c2Fu
ZHMgb2YgdXNlcnMuCisqICAgKipBbnRpY2lwYXRlZCB3aWRlc3ByZWFkIHVzYWdlKiogLSBQcmUt
YWRvcHRpb24gb2Ygc29tZSBzdGFuZGFyZC1jb21wbGlhbnQKKyAgICBBUElzIG1heSBub3QgaGF2
ZSBicm9hZCBhZG9wdGlvbiBpbml0aWFsbHkgYnV0IGNhbiBiZSBleHBlY3RlZCB0byBwaWNrIHVw
CisgICAgdXNhZ2Ugd2hlbiBpdCByZXBsYWNlcyBsZWdhY3kgQVBJcy4gYGFic2w6OmZyb21fY2hh
cnNgLCBmb3IgZXhhbXBsZSwKKyAgICByZXBsYWNlcyBleGlzdGluZyBjb2RlIHRoYXQgY29udmVy
dHMgc3RyaW5ncyB0byBudW1iZXJzIGFuZCB3aWxsIHRoZXJlZm9yZQorICAgIGxpa2VseSBzZWUg
dXNhZ2UgZ3Jvd3RoLgorKiAgICoqSGlnaCBpbXBhY3QqKiAtIEFQSXMgdGhhdCBwcm92aWRlIGEg
a2V5IHNvbHV0aW9uIHRvIGEgc3BlY2lmaWMgcHJvYmxlbSwKKyAgICBzdWNoIGFzIGBhYnNsOjpG
aXhlZEFycmF5YCwgaGF2ZSBoaWdoZXIgaW1wYWN0IHRoYW4gdXNhZ2UgbnVtYmVycyBtYXkgc2ln
bmFsCisgICAgYW5kIGFyZSByZWxlYXNlZCBiZWNhdXNlIG9mIHRoZWlyIGltcG9ydGFuY2UuCisq
ICAgKipEaXJlY3Qgc3VwcG9ydCBmb3IgYSBsaWJyYXJ5IHRoYXQgZmFsbHMgdW5kZXIgb25lIG9m
IHRoZSBhYm92ZSoqIC0gV2hlbiB3ZQorICAgIHdhbnQgYWNjZXNzIHRvIGEgc21hbGxlciBsaWJy
YXJ5IGFzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBmb3IgYQorICAgIGhpZ2hlci1wcmlvcml0
eSBsaWJyYXJ5IHdlIHBsYW4gdG8gcmVsZWFzZSwgd2UgbWF5IHJlbGVhc2UgaXQsIGFzIHdlIGRp
ZAorICAgIHdpdGggcG9ydGlvbnMgb2YgYGFic2wvbWV0YS90eXBlX3RyYWl0cy5oYC4gT25lIGNv
bnNlcXVlbmNlIG9mIHRoaXMgaXMgdGhhdAorICAgIHRoZSBwcmVzZW5jZSBvZiBhIGxpYnJhcnkg
aW4gQWJzZWlsIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdCBvdGhlcgorICAgIHNpbWls
YXIgbGlicmFyaWVzIHdvdWxkIGJlIGEgaGlnaCBwcmlvcml0eS4KKworIyMjIEFQSSBGcmVlemUg
Q29uc2VxdWVuY2VzCisKK1ZpYSB0aGUKK1tBYnNlaWwgQ29tcGF0aWJpbGl0eSBHdWlkZWxpbmVz
XShodHRwczovL2Fic2VpbC5pby9hYm91dC9jb21wYXRpYmlsaXR5KSwgd2UKK2hhdmUgcHJvbWlz
ZWQgYSBsYXJnZSBkZWdyZWUgb2YgQVBJIHN0YWJpbGl0eS4gSW4gcGFydGljdWxhciwgd2Ugd2ls
bCBub3QgbWFrZQorYmFja3dhcmQtaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gcmVsZWFzZWQgQVBJ
cyB3aXRob3V0IGFsc28gc2hpcHBpbmcgYSB0b29sIG9yCitwcm9jZXNzIHRoYXQgY2FuIHVwZ3Jh
ZGUgb3VyIHVzZXJzJyBjb2RlLiBXZSBhcmUgbm90IHlldCBhdCB0aGUgcG9pbnQgb2YgZWFzaWx5
CityZWxlYXNpbmcgc3VjaCB0b29scy4gVGhlcmVmb3JlLCBhdCB0aGlzIHRpbWUsIHNoaXBwaW5n
IGEgbGlicmFyeSBlc3RhYmxpc2hlcyBhbgorQVBJIGNvbnRyYWN0IHdoaWNoIGlzIGJvcmRlcmxp
bmUgdW5jaGFuZ2VhYmxlLiAoV2UgY2FuIGFkZCBuZXcgZnVuY3Rpb25hbGl0eSwKK2J1dCB3ZSBj
YW5ub3QgZWFzaWx5IGNoYW5nZSBleGlzdGluZyBiZWhhdmlvci4pIFRoaXMgY29uc3RyYWludCBm
b3JjZXMgdXMgdG8KK3ZlcnkgY2FyZWZ1bGx5IHJldmlldyBhbGwgQVBJcyB0aGF0IHdlIHNoaXAu
CisKKwogIyMgQ29kaW5nIFN0eWxlCiAKIFRvIGtlZXAgdGhlIHNvdXJjZSBjb25zaXN0ZW50LCBy
ZWFkYWJsZSwgZGlmZmFibGUgYW5kIGVhc3kgdG8gbWVyZ2UsIHdlIHVzZSBhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvTElDRU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9MSUNFTlNFCmluZGV4IGZlZjdkOTY3ODE1YjUwOGQyYmU1YmZlM2RlZDZi
NjJhZDMwMmU5MGMuLmNjZDYxZGNmZTNkYmNkZjc3YTcyNzk0ZDc3OTRiMWUxMTJhMzllMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9MSUNFTlNFCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9MSUNFTlNFCkBAIC0xLDcgKzEsNyBAQAogCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAotICAgICAgICAgICAgICAg
ICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworICAgICAgICAgICAgICAg
ICAgICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8KIAogICAgVEVSTVMgQU5E
IENPTkRJVElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9OCiAKQEAg
LTE5MywxMiArMTkzLDExIEBACiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIAotICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorICAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIAogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAogICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gICAK
LSAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0xUUy5tZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9MVFMubWQKaW5kZXggMzg1YjRmMDYyYmYzMTViNDE4NGE3YTBkYjA5OGYzNDQxZTcwMTNiZi4u
MDg2MDZmMTU3ZTk5MTBmMjkzNzE3ZjI2YjAwMWRmMDY0Y2E4Y2VkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0xU
Uy5tZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvTFRTLm1kCkBAIC0xMCw0ICsxMCw1IEBAIHR1cm4sIHVzZSBBYnNlaWwuIChG
b3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdXIgcmVsZWFzZXMsIHNlZSB0aGUKIAogVGhlIGZv
bGxvd2luZyBsaXN0cyBMVFMgYnJhbmNoZXMgYW5kIHRoZSBkYXRlcyBvbiB3aGljaCB0aGV5IGhh
dmUgYmVlbiByZWxlYXNlZDoKIAorKiBbTFRTIEJyYW5jaCBEZWNlbWJlciAxOCwgMjAxOF0oaHR0
cHM6Ly9naXRodWIuY29tL2Fic2VpbC9hYnNlaWwtY3BwL3RyZWUvbHRzXzIwMThfMTJfMTgvKQog
KiBbTFRTIEJyYW5jaCBKdW5lIDIwLCAyMDE4XShodHRwczovL2dpdGh1Yi5jb20vYWJzZWlsL2Fi
c2VpbC1jcHAvdHJlZS9sdHNfMjAxOF8wNl8yMC8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvUkVBRE1FLmNocm9t
aXVtIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL1JFQURNRS5jaHJvbWl1bQppbmRleCA2MDI2YTJmNGUyMDYxM2VkYjUzZTE2OGJmYjQz
OGYyMGZlNGMxZmQ5Li41ZDdhY2JhNDhjMDkzNjNiNTEwYTA0YWQwYzczN2FiMWI5ZjQ1MjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvUkVBRE1FLmNocm9taXVtCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9SRUFETUUuY2hyb21pdW0KQEAgLTQs
NyArNCw3IEBAIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL2Fic2VpbC9hYnNlaWwtY3BwCiBMaWNl
bnNlOiBBcGFjaGUgMi4wCiBMaWNlbnNlIEZpbGU6IExJQ0VOU0UKIFZlcnNpb246IDAKLVJldmlz
aW9uOiBmYjQ2MjIyNGMwNTg0ODc3NjNmMjYzYjc5OTVkNzBlZmQwMjQyYzE3CitSZXZpc2lvbjog
NGVmNTc0MDY0ZTc1Yjg2ZjExNTU0OWU5ZWI0YzdlODA2NzgxYjNhYgogU2VjdXJpdHkgQ3JpdGlj
YWw6IHllcwogCiBEZXNjcmlwdGlvbjoKQEAgLTE4LDkgKzE4LDEwIEBAIEhvdyB0byB1cGRhdGUg
QWJzZWlsOgogCiAyLiBDb3B5IHRoZSBjb250ZW50IG9mIHRoZSBBYnNlaWwgZ2l0IHJlcG8gdG8g
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLgogCi0zLiBGcm9tIC8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC8gbGF1bmNoIC4vcmVuYW1lX2R5bmFtaWNfYW5ub3RhdGlvbnMuc2guCi0gICBUaGlzIHNj
cmlwdCB3aWxsIHJld3JpdGUgZHluYW1pY19hbm5vdGF0aW9ucyBtYWNyb3MgYW5kIGZ1bmN0aW9u
IGluc2lkZQotICAgQWJzZWlsIGluIG9yZGVyIHRvIGF2b2lkIE9EUiB2aW9sYXRpb25zIGFuZCBt
YWNybyBjbGFzaGluZyB3aXRoIENocm9taXVtCiszLiBGcm9tIC8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC8gbGF1bmNoIC4vcmVuYW1lX2Fubm90YXRpb25zLnNoLgorICAgVGhpcyBzY3JpcHQgd2ls
bCByZXdyaXRlIGR5bmFtaWNfYW5ub3RhdGlvbnMgYW5kIHRocmVhZF9hbm5vdGF0aW9ucworICAg
bWFjcm9zIGFuZCBmdW5jdGlvbiBpbnNpZGUgQWJzZWlsIGluIG9yZGVyIHRvIGF2b2lkIE9EUiB2
aW9sYXRpb25zCisgICBhbmQgbWFjcm8gY2xhc2hpbmcgd2l0aCBDaHJvbWl1bQogICAgKHNlZTog
aHR0cHM6Ly9naXRodWIuY29tL2Fic2VpbC9hYnNlaWwtY3BwL2lzc3Vlcy8xMjIpLgogCiBMb2Nh
bCBNb2RpZmljYXRpb25zOgpAQCAtMzAsNSArMzEsNiBAQCBMb2NhbCBNb2RpZmljYXRpb25zOgog
CiAqIEFsbCB0aGUgQlVJTEQuYmF6ZWwgZmlsZXMgaGFzIGJlZW4gdHJhbnNsYXRlZCB0byBCVUlM
RC5nbiBmaWxlcy4KIAotKiBGdW5jdGlvbnMgYW5kIG1hY3JvcyBpbiBhYnNsL2Jhc2UvZHluYW1p
Y19hbm5vdGF0aW9ucy57aCxjY30gaGF2ZSBiZWVuIHJlbmFtZWQKLSAgdG8gYXZvaWQgT0RSIHZp
b2xhdGlvbnMgKHNlZSBzdGVwIDMpLgorKiBGdW5jdGlvbnMgYW5kIG1hY3JvcyBpbiBhYnNsL2Jh
c2UvZHluYW1pY19hbm5vdGF0aW9ucy57aCxjY30gYW5kCisgIGFic2wvYmFzZS90aHJlYWRfYW5u
b3RhdGlvbnMuaCBoYXZlIGJlZW4gcmVuYW1lZCB0byBhdm9pZCBPRFIKKyAgdmlvbGF0aW9ucyBh
bmQgbWFjcm8gY2xhc2hlcyB3aXRoIENocm9taXVtIChzZWUgc3RlcCAzKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvUkVBRE1FLm1kCmluZGV4IDhlZWQ1NzUxYmY1NDAwMzY4MTk1NmNkN2E0
ZjViMTA3YjE1ZWFmZDEuLjg1ZGU1Njk2NThjNjViMzllNWRjZDk0YTdiZjgxMzc4NDk4NzRjOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9SRUFETUUubWQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1JFQURNRS5tZApAQCAtNDIsOCArNDIsOCBA
QCB0aGUgQWJzZWlsIGNvZGUsIHJ1bm5pbmcgdGVzdHMsIGFuZCBnZXR0aW5nIGEgc2ltcGxlIGJp
bmFyeSB3b3JraW5nLgogPGEgbmFtZT0iYnVpbGQiPjwvYT4KICMjIEJ1aWxkaW5nIEFic2VpbAog
Ci1bQmF6ZWxdKGh0dHA6Ly9iYXplbC5idWlsZCkgaXMgdGhlIG9mZmljaWFsIGJ1aWxkIHN5c3Rl
bSBmb3IgQWJzZWlsLAotd2hpY2ggaXMgc3VwcG9ydGVkIG9uIG1vc3QgbWFqb3IgcGxhdGZvcm1z
IChMaW51eCwgV2luZG93cywgTWFjT1MsIGZvciBleGFtcGxlKQorW0JhemVsXShodHRwczovL2Jh
emVsLmJ1aWxkKSBpcyB0aGUgb2ZmaWNpYWwgYnVpbGQgc3lzdGVtIGZvciBBYnNlaWwsCit3aGlj
aCBpcyBzdXBwb3J0ZWQgb24gbW9zdCBtYWpvciBwbGF0Zm9ybXMgKExpbnV4LCBXaW5kb3dzLCBt
YWNPUywgZm9yIGV4YW1wbGUpCiBhbmQgY29tcGlsZXJzLiBTZWUgdGhlIFtxdWlja3N0YXJ0XSho
dHRwczovL2Fic2VpbC5pby9kb2NzL2NwcC9xdWlja3N0YXJ0KSBmb3IKIG1vcmUgaW5mb3JtYXRp
b24gb24gYnVpbGRpbmcgQWJzZWlsIHVzaW5nIHRoZSBCYXplbCBidWlsZCBzeXN0ZW0uCiAKQEAg
LTYzLDEwICs2MywxNCBAQCBBYnNlaWwgY29udGFpbnMgdGhlIGZvbGxvd2luZyBDKysgbGlicmFy
eSBjb21wb25lbnRzOgogICA8YnIgLz4gVGhlIGBhbGdvcml0aG1gIGxpYnJhcnkgY29udGFpbnMg
YWRkaXRpb25zIHRvIHRoZSBDKysgYDxhbGdvcml0aG0+YAogICBsaWJyYXJ5IGFuZCBjb250YWlu
ZXItYmFzZWQgdmVyc2lvbnMgb2Ygc3VjaCBhbGdvcml0aG1zLgogKiBbYGNvbnRhaW5lcmBdKGFi
c2wvY29udGFpbmVyLykKLSAgPGJyIC8+IFRoZSBgY29udGFpbmVyYCBsaWJyYXJ5IGNvbnRhaW5z
IGFkZGl0aW9uYWwgU1RMLXN0eWxlIGNvbnRhaW5lcnMuCisgIDxiciAvPiBUaGUgYGNvbnRhaW5l
cmAgbGlicmFyeSBjb250YWlucyBhZGRpdGlvbmFsIFNUTC1zdHlsZSBjb250YWluZXJzLAorICBp
bmNsdWRpbmcgQWJzZWlsJ3MgdW5vcmRlcmVkICJTd2lzcyB0YWJsZSIgY29udGFpbmVycy4KICog
W2BkZWJ1Z2dpbmdgXShhYnNsL2RlYnVnZ2luZy8pCiAgIDxiciAvPiBUaGUgYGRlYnVnZ2luZ2Ag
bGlicmFyeSBjb250YWlucyBjb2RlIHVzZWZ1bCBmb3IgZW5hYmxpbmcgbGVhawotICBjaGVja3Mu
IEZ1dHVyZSB1cGRhdGVzIHdpbGwgYWRkIHN0YWNrdHJhY2UgYW5kIHN5bWJvbGl6YXRpb24gdXRp
bGl0aWVzLgorICBjaGVja3MsIGFuZCBzdGFja3RyYWNlIGFuZCBzeW1ib2xpemF0aW9uIHV0aWxp
dGllcy4KKyogW2BoYXNoYF0oYWJzbC9oYXNoLykKKyAgPGJyIC8+IFRoZSBgaGFzaGAgbGlicmFy
eSBjb250YWlucyB0aGUgaGFzaGluZyBmcmFtZXdvcmsgYW5kIGRlZmF1bHQgaGFzaAorICBmdW5j
dG9yIGltcGxlbWVudGF0aW9ucyBmb3IgaGFzaGFibGUgdHlwZXMgaW4gQWJzZWlsLgogKiBbYG1l
bW9yeWBdKGFic2wvbWVtb3J5LykKICAgPGJyIC8+IFRoZSBgbWVtb3J5YCBsaWJyYXJ5IGNvbnRh
aW5zIEMrKzExLWNvbXBhdGlibGUgdmVyc2lvbnMgb2YKICAgYHN0ZDo6bWFrZV91bmlxdWUoKWAg
YW5kIHJlbGF0ZWQgbWVtb3J5IG1hbmFnZW1lbnQgZmFjaWxpdGllcy4KQEAgLTkwLDYgKzk0LDgg
QEAgQWJzZWlsIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgQysrIGxpYnJhcnkgY29tcG9uZW50czoK
ICogW2B0eXBlc2BdKGFic2wvdHlwZXMvKQogICA8YnIgLz4gVGhlIGB0eXBlc2AgbGlicmFyeSBj
b250YWlucyBub24tY29udGFpbmVyIHV0aWxpdHkgdHlwZXMsIGxpa2UgYQogICBDKysxMS1jb21w
YXRpYmxlIHZlcnNpb24gb2YgdGhlIEMrKzE3IGBzdGQ6Om9wdGlvbmFsYCB0eXBlLgorKiBbYHV0
aWxpdHlgXShhYnNsL3V0aWxpdHkvKQorICA8YnIgLz4gVGhlIGB1dGlsaXR5YCBsaWJyYXJ5IGNv
bnRhaW5zIHV0aWxpdHkgYW5kIGhlbHBlciBjb2RlLgogCiAjIyBMaWNlbnNlCiAKQEAgLTEwMCw5
ICsxMDYsOSBAQCBsaWNlbnNlLiBTZWUgW0xJQ0VOU0VdKExJQ0VOU0UpIGZvciBtb3JlIGluZm9y
bWF0aW9uLgogCiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBBYnNlaWw6CiAKLSogQ29uc3Vs
dCBvdXIgW0Fic2VpbCBJbnRyb2R1Y3Rpb25dKGh0dHA6Ly9hYnNlaWwuaW8vYWJvdXQvaW50cm8p
Ci0qIFJlYWQgW1doeSBBZG9wdCBBYnNlaWxdKGh0dHA6Ly9hYnNlaWwuaW8vYWJvdXQvcGhpbG9z
b3BoeSkgdG8gdW5kZXJzdGFuZCBvdXIKKyogQ29uc3VsdCBvdXIgW0Fic2VpbCBJbnRyb2R1Y3Rp
b25dKGh0dHBzOi8vYWJzZWlsLmlvL2Fib3V0L2ludHJvKQorKiBSZWFkIFtXaHkgQWRvcHQgQWJz
ZWlsXShodHRwczovL2Fic2VpbC5pby9hYm91dC9waGlsb3NvcGh5KSB0byB1bmRlcnN0YW5kIG91
cgogICBkZXNpZ24gcGhpbG9zb3BoeS4KICogUGVydXNlIG91cgotICBbQWJzZWlsIENvbXBhdGli
aWxpdHkgR3VhcmFudGVlc10oaHR0cDovL2Fic2VpbC5pby9hYm91dC9jb21wYXRpYmlsaXR5KSB0
bworICBbQWJzZWlsIENvbXBhdGliaWxpdHkgR3VhcmFudGVlc10oaHR0cHM6Ly9hYnNlaWwuaW8v
YWJvdXQvY29tcGF0aWJpbGl0eSkgdG8KICAgdW5kZXJzdGFuZCBib3RoIHdoYXQgd2UgcHJvbWlz
ZSB0byB5b3UsIGFuZCB3aGF0IHdlIGV4cGVjdCBvZiB5b3UgaW4gcmV0dXJuLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL1VQR1JBREVTLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL1VQR1JBREVTLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1NTk5ZDA4NzhkMWRi
OWRkMmE3MWEzNDUwNmZmMGFmOWU3ZDZhZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvVVBHUkFERVMu
bWQKQEAgLTAsMCArMSwxNyBAQAorIyBDKysgVXBncmFkZSBUb29scworCitBYnNlaWwgbWF5IG9j
Y2Fzc2lvbmFsbHkgcmVsZWFzZSBBUEktYnJlYWtpbmcgY2hhbmdlcy4gQXMgbm90ZWQgaW4gb3Vy
CitbQ29tcGF0aWJpbGl0eSBHdWlkZWxpbmVzXVtjb21wYXRpYmlsaXR5LWd1aWRlXSwgd2Ugd2ls
bCBhaW0gdG8gcHJvdmlkZSBhIHRvb2wKK3RvIGRvIHRoZSB3b3JrIG9mIGVmZmVjdGluZyBzdWNo
IEFQSS1icmVha2luZyBjaGFuZ2VzLCB3aGVuIGFic29sdXRlbHkKK25lY2Vzc2FyeS4KKworVGhl
c2UgdG9vbHMgd2lsbCBiZSBsaXN0ZWQgb24gdGhlIFtDKysgVXBncmFkZSBUb29sc11bdXBncmFk
ZS10b29sc10gZ3VpZGUgb24KK2h0dHBzOi8vYWJzZWlsLmlvLgorCitGb3IgbW9yZSBpbmZvcm1h
dGlvbiwgdGhlIFtDKysgQXV0b21hdGVkIFVwZ3JhZGUgR3VpZGVdW2FwaS11cGdyYWRlcy1ndWlk
ZV0KK291dGxpbmVzIHRoaXMgcHJvY2Vzcy4KKworW2NvbXBhdGliaWxpdHktZ3VpZGVdOiBodHRw
czovL2Fic2VpbC5pby9hYm91dC9jb21wYXRpYmlsaXR5CitbYXBpLXVwZ3JhZGVzLWd1aWRlXTog
aHR0cHM6Ly9hYnNlaWwuaW8vZG9jcy9jcHAvdG9vbHMvYXBpLXVwZ3JhZGVzCitbdXBncmFkZS10
b29sc106IGh0dHBzOi8vYWJzZWlsLmlvL2RvY3MvY3BwL3Rvb2xzL3VwZ3JhZGVzLworCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvV09SS1NQQUNFIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1dPUktTUEFDRQppbmRleCA3MmVmMTM5ODBjMjkyNjM4MzJj
YmIyMmY5OGY3OWFlODU5ODIxZmZlLi40OWUyZDNjYjZlMzEzYjRlNDYyMjBkYTljNGE2ZjkxMmEw
NDQzZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvV09SS1NQQUNFCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9XT1JLU1BBQ0UKQEAgLTE1LDkg
KzE1LDkgQEAgaHR0cF9hcmNoaXZlKAogIyBHb29nbGVUZXN0L0dvb2dsZU1vY2sgZnJhbWV3b3Jr
LiBVc2VkIGJ5IG1vc3QgdW5pdC10ZXN0cy4KIGh0dHBfYXJjaGl2ZSgKICAgICAgbmFtZSA9ICJj
b21fZ29vZ2xlX2dvb2dsZXRlc3QiLAotICAgICB1cmxzID0gWyJodHRwczovL2dpdGh1Yi5jb20v
Z29vZ2xlL2dvb2dsZXRlc3QvYXJjaGl2ZS9iNGQ0NDM4ZGY5NDc5Njc1YTYzMmIyZjExMTI1ZTU3
MTMzODIyZWNlLnppcCJdLCAgIyAyMDE4LTA3LTE2Ci0gICAgIHN0cmlwX3ByZWZpeCA9ICJnb29n
bGV0ZXN0LWI0ZDQ0MzhkZjk0Nzk2NzVhNjMyYjJmMTExMjVlNTcxMzM4MjJlY2UiLAotICAgICBz
aGEyNTYgPSAiNWFhYTVkNTY2NTE3Y2FlNzExZTJhMzUwNWVhOWE2NDM4YmUxYjM3ZmNhYWUwZWJj
Yjk2Y2NiYTlhYTU2ZjIzYSIsCisgICAgIHVybHMgPSBbImh0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvZ29vZ2xldGVzdC9hcmNoaXZlL2I2Y2Q0MDUyODZlZDg2MzVlY2U3MWM3MmYxMThlNjU5ZjRh
ZGUzZmIuemlwIl0sICAjIDIwMTktMDEtMDcKKyAgICAgc3RyaXBfcHJlZml4ID0gImdvb2dsZXRl
c3QtYjZjZDQwNTI4NmVkODYzNWVjZTcxYzcyZjExOGU2NTlmNGFkZTNmYiIsCisgICAgIHNoYTI1
NiA9ICJmZjdhODI3MzZlMTU4YzA3N2U3NjE4ODIzMmVhYzc3OTEzYTE1ZGFjMGIyMjUwOGMzOTBh
YjNmODhlNmQ2ZDg2IiwKICkKIAogIyBHb29nbGUgYmVuY2htYXJrLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9CVUlMRC5iYXplbAppbmRleCBlZGQwMjc0YzVkODM3ZDdk
ZmI3MTdkNGU5NDJmNTlmN2U0OGVkNmE1Li44NTMzMzBkNDQ3ZWIyMzNlMTZkMzg2YmJlMGIwN2Vm
ZDY1ZjNmMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9CVUlM
RC5iYXplbApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI1LDEzICsyNSwx
OCBAQCBjcmVhdGVfbGx2bV9jb25maWcoCiAgICAgdmlzaWJpbGl0eSA9IFsiOl9fc3VicGFja2Fn
ZXNfXyJdLAogKQogCi0jIGZvbGxvd2luZyBjb25maWdzIGFyZSBiYXNlZCBvbiBtYXBwaW5nIGRl
ZmluZWQgaW46IGh0dHBzOi8vZ2l0LmlvL3Y1SWp6Citjb25maWdfc2V0dGluZygKKyAgICBuYW1l
ID0gIm9zeCIsCisgICAgY29uc3RyYWludF92YWx1ZXMgPSBbCisgICAgICAgICJAYmF6ZWxfdG9v
bHMvL3BsYXRmb3Jtczpvc3giLAorICAgIF0sCispCisKIGNvbmZpZ19zZXR0aW5nKAogICAgIG5h
bWUgPSAiaW9zIiwKLSAgICB2YWx1ZXMgPSB7Ci0gICAgICAgICJjcHUiOiAiZGFyd2luIiwKLSAg
ICB9LAotICAgIHZpc2liaWxpdHkgPSBbIjpfX3N1YnBhY2thZ2VzX18iXSwKKyAgICBjb25zdHJh
aW50X3ZhbHVlcyA9IFsKKyAgICAgICAgIkBiYXplbF90b29scy8vcGxhdGZvcm1zOmlvcyIsCisg
ICAgXSwKICkKIAogY29uZmlnX3NldHRpbmcoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL0NNYWtlTGlzdHMudHh0CmluZGV4IDFkMDliMTkzNWQ4NDczNWQ2ZGM5MDc0
MmE2NDViMjg4NTBhZWVjNzYuLjNlNzgzOTdjOTc2MjhhZWYyM2Q0ODE0MmVlZmIyMGFkOWEyYmUz
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL0NNYWtlTGlz
dHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjAsMTAgKzIwLDEy
IEBAIGFkZF9zdWJkaXJlY3RvcnkoYmFzZSkKIGFkZF9zdWJkaXJlY3RvcnkoYWxnb3JpdGhtKQog
YWRkX3N1YmRpcmVjdG9yeShjb250YWluZXIpCiBhZGRfc3ViZGlyZWN0b3J5KGRlYnVnZ2luZykK
K2FkZF9zdWJkaXJlY3RvcnkoZmxhZ3MpCiBhZGRfc3ViZGlyZWN0b3J5KGhhc2gpCiBhZGRfc3Vi
ZGlyZWN0b3J5KG1lbW9yeSkKIGFkZF9zdWJkaXJlY3RvcnkobWV0YSkKIGFkZF9zdWJkaXJlY3Rv
cnkobnVtZXJpYykKK2FkZF9zdWJkaXJlY3RvcnkocmFuZG9tKQogYWRkX3N1YmRpcmVjdG9yeShz
dHJpbmdzKQogYWRkX3N1YmRpcmVjdG9yeShzeW5jaHJvbml6YXRpb24pCiBhZGRfc3ViZGlyZWN0
b3J5KHRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vQlVJTEQuYmF6ZWwgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9hbGdvcml0aG0vQlVJTEQuYmF6ZWwKaW5kZXggZDA0ZGM3MTIwNmU4ZDk2OTQzM2Y4NTIzYmVi
NjExZjc5Y2I2NDIyNS4uYzUwNmYzYjlmZThkYjNjM2MzODJlYzNkYTg0OWU5OTFhMGZjMWIyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0JVSUxELmJhemVsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29y
aXRobS9CVUlMRC5iYXplbApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1
LDggKzE1LDkgQEAKICMKIAogbG9hZCgKLSAgICAiLy9hYnNsOmNvcHRzLmJ6bCIsCisgICAgIi8v
YWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKICAgICAiQUJTTF9ERUZBVUxUX0NPUFRT
IiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRTIiwKICAgICAiQUJTTF9URVNUX0NPUFRTIiwK
ICkKIApAQCAtMjgsNiArMjksNyBAQCBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAiYWxnb3JpdGht
IiwKICAgICBoZHJzID0gWyJhbGdvcml0aG0uaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxU
X0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogKQogCiBjY190
ZXN0KApAQCAtMzUsNiArMzcsNyBAQCBjY190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAg
IHNyY3MgPSBbImFsZ29yaXRobV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsK
ICAgICAgICAgIjphbGdvcml0aG0iLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8v
Omd0ZXN0X21haW4iLApAQCAtNDUsNiArNDgsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiYWxn
b3JpdGhtX2JlbmNobWFyayIsCiAgICAgc3JjcyA9IFsiZXF1YWxfYmVuY2htYXJrLmNjIl0sCiAg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCiAgICAgdGFncyA9IFsiYmVuY2htYXJrIl0sCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjphbGdvcml0aG0iLApAQCAtNTksNiArNjMsNyBAQCBjY19saWJyYXJ5KAogICAgICAgICAi
Y29udGFpbmVyLmgiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjphbGdvcml0aG0iLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKQEAg
LTcwLDYgKzc1LDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNvbnRhaW5lcl90ZXN0IiwKICAg
ICBzcmNzID0gWyJjb250YWluZXJfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6Y29udGFpbmVyIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2FsZ29yaXRobS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9CVUlMRC5nbgpp
bmRleCAzN2VjNjY1NzY0ZDQ5Y2JiMmQxYThiYmM1NjE5ZTA1OWI3YzUyZGEzLi42NjViZTRhOTdj
YjQwZThiMDUwOGE0MTYzMzc2NTkwZTA2NzI4OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0
aG0vQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0JVSUxELmduCkBAIC00LDggKzQsMTUg
QEAKIAogaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCisjIFVzYWdlIG9m
IEFic2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0
LCBiZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0
IHRvIGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3Jn
L2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGlu
Zm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9j
dW1lbnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQogaWYg
KGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Np
c3RhbnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAogICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdv
cml0aG0vQ01ha2VMaXN0cy50eHQKaW5kZXggZmRmNDVjNTVlZDYzMTNlODNiYjE5YmZhODNhNWI0
NzNlOTVlZjliNy4uOWZiZTM2ZjY5OGYwNTZhODY3ZjAzNmFhYjM0NjU0Mjg3NGExYjFkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29y
aXRobS9DTWFrZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTE0LDUwICsxNCw1NCBAQAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICMKIAot
bGlzdChBUFBFTkQgQUxHT1JJVEhNX1BVQkxJQ19IRUFERVJTCi0gICJhbGdvcml0aG0uaCIKLSAg
ImNvbnRhaW5lci5oIgotKQotCi0KLSMKLSMjIFRFU1RTCi0jCi0KLSMgdGVzdCBhbGdvcml0aG1f
dGVzdAotbGlzdChBUFBFTkQgQUxHT1JJVEhNX1RFU1RfU1JDCi0gICJhbGdvcml0aG1fdGVzdC5j
YyIKLSAgJHtBTEdPUklUSE1fUFVCTElDX0hFQURFUlN9Ci0gICR7QUxHT1JJVEhNX0lOVEVSTkFM
X0hFQURFUlN9Ci0pCi0KLWFic2xfaGVhZGVyX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xf
YWxnb3JpdGhtCi0gIEVYUE9SVF9OQU1FCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKICAgICBh
bGdvcml0aG0KKyAgSERSUworICAgICJhbGdvcml0aG0uaCIKKyAgQ09QVFMKKyAgICAke0FCU0xf
REVGQVVMVF9DT1BUU30KKyAgUFVCTElDCiApCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNs
X2NjX3Rlc3QoCisgIE5BTUUKICAgICBhbGdvcml0aG1fdGVzdAotICBTT1VSQ0VTCi0gICAgJHtB
TEdPUklUSE1fVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKKyAgU1JDUworICAgICJhbGdv
cml0aG1fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUwog
ICAgIGFic2w6OmFsZ29yaXRobQorICAgIGdtb2NrX21haW4KICkKIAorYWJzbF9jY19saWJyYXJ5
KAorICBOQU1FCisgICAgYWxnb3JpdGhtX2NvbnRhaW5lcgorICBIRFJTCisgICAgImNvbnRhaW5l
ci5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6YWxnb3JpdGhtCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6bWV0YQorICBQ
VUJMSUMKKykKIAotCi0KLSMgdGVzdCBjb250YWluZXJfdGVzdAotc2V0KENPTlRBSU5FUl9URVNU
X1NSQyAiY29udGFpbmVyX3Rlc3QuY2MiKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9j
Y190ZXN0KAorICBOQU1FCiAgICAgY29udGFpbmVyX3Rlc3QKLSAgU09VUkNFUwotICAgICR7Q09O
VEFJTkVSX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbDo6YWxnb3JpdGht
CisgIFNSQ1MKKyAgICAiY29udGFpbmVyX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RF
U1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjphbGdvcml0aG1fY29udGFpbmVyCisgICAgYWJz
bDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6Om1lbW9yeQorICAgIGFi
c2w6OnNwYW4KKyAgICBnbW9ja19tYWluCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0v
YWxnb3JpdGhtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vYWxnb3JpdGhtLmgKaW5kZXggM2Q2NTg2NDM5
ZmUzYmM1MTExZTY3YjA1ODI1MTFkMWM2NzM0ZmQ2Ni4uYmI5MDIxNWQ4MGRhZjZjYWNiZDkwOGIy
ODJjZDQ0YjgxNzhiOGQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2FsZ29yaXRobS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9hbGdvcml0aG0uaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtOTQsNyArOTQsNyBAQCBJdCBSb3RhdGVJbXBsKEl0IGZp
cnN0LCBJdCBtaWRkbGUsIEl0IGxhc3QsIHN0ZDo6ZmFsc2VfdHlwZSkgewogLy8gdGhlbiB0aGUg
cHJlZGljYXRlIGlzIG5ldmVyIGludm9rZWQgYW5kIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNl
LgogLy8KIC8vIFRoaXMgaXMgYSBDKysxMS1jb21wYXRpYmxlIGltcGxlbWVudGF0aW9uIG9mIEMr
KzE0IGBzdGQ6OmVxdWFsYC4gIFNlZQotLy8gaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9j
cHAvYWxnb3JpdGhtL2VxdWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgorLy8gaHR0cHM6Ly9lbi5j
cHByZWZlcmVuY2UuY29tL3cvY3BwL2FsZ29yaXRobS9lcXVhbCBmb3IgbW9yZSBpbmZvcm1hdGlv
bi4KIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXIxLCB0eXBlbmFtZSBJbnB1dEl0ZXIyLCB0
eXBlbmFtZSBQcmVkPgogYm9vbCBlcXVhbChJbnB1dEl0ZXIxIGZpcnN0MSwgSW5wdXRJdGVyMSBs
YXN0MSwgSW5wdXRJdGVyMiBmaXJzdDIsCiAgICAgICAgICAgIElucHV0SXRlcjIgbGFzdDIsIFBy
ZWQmJiBwcmVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vYWxnb3JpdGhtX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9hbGdvcml0aG0vYWxnb3JpdGhtX3Rlc3QuY2MKaW5kZXggZTQzMjJiYzRmMjAy
ZTMxZTg1MjZiMjFlN2QyNjk5NGRlNjMwZWE3My4uODFmY2NiNjEzNTNlNjU1YWM2MTZjYmRiZWYw
MTFlNzgyZWMyNDI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2FsZ29yaXRobV90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9hbGdvcml0aG1fdGVzdC5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGht
L2NvbnRhaW5lci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2NvbnRhaW5lci5oCmluZGV4IDUzYWIxNTY4
NmM2ZTEwZTYyMTdlZDQ3YjBiNGQ3YTMzMzc1NjgwN2MuLmM4NGRlNDYxYWMyODNhMTJmYTk3MGZk
YzQ4NDQ0MDU0MjQyYWJlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM2LDcgKzM2LDYgQEAKIC8vIEZvciB0ZW1wbGF0ZSBw
YXJhbWV0ZXIgYW5kIHZhcmlhYmxlIG5hbWluZywgYENgIGluZGljYXRlcyB0aGUgY29udGFpbmVy
IHR5cGUKIC8vIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBhcHBsaWVkLCBgUHJlZGAgaW5kaWNh
dGVzIHRoZSBwcmVkaWNhdGUgb2JqZWN0IHR5cGUKIC8vIHRvIGJlIHVzZWQgYnkgdGhlIGZ1bmN0
aW9uIGFuZCBgVGAgaW5kaWNhdGVzIHRoZSBhcHBsaWNhYmxlIGVsZW1lbnQgdHlwZS4KLS8vCiAK
ICNpZm5kZWYgQUJTTF9BTEdPUklUSE1fQ09OVEFJTkVSX0hfCiAjZGVmaW5lIEFCU0xfQUxHT1JJ
VEhNX0NPTlRBSU5FUl9IXwpAQCAtNDYsNiArNDUsOCBAQAogI2luY2x1ZGUgPGl0ZXJhdG9yPgog
I2luY2x1ZGUgPG51bWVyaWM+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dW5v
cmRlcmVkX21hcD4KKyNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgogI2luY2x1ZGUgPHV0aWxpdHk+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCkBAIC01NCw3ICs1NSw2IEBACiAjaW5jbHVkZSAiYWJzbC9t
ZXRhL3R5cGVfdHJhaXRzLmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKLQogbmFtZXNwYWNlIGNvbnRh
aW5lcl9hbGdvcml0aG1faW50ZXJuYWwgewogCiAvLyBOT1RFOiBpdCBpcyBpbXBvcnRhbnQgdG8g
ZGVmZXIgdG8gQURMIGxvb2t1cCBmb3IgYnVpbGRpbmcgd2l0aCBDKysgbW9kdWxlcywKQEAgLTEw
MSw2ICsxMDEsMTcgQEAgQ29udGFpbmVySXRlcjxDPiBjX2JlZ2luKEMmIGMpIHsgcmV0dXJuIGJl
Z2luKGMpOyB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KIENvbnRhaW5lckl0ZXI8Qz4gY19lbmQo
QyYgYykgeyByZXR1cm4gZW5kKGMpOyB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IElzVW5vcmRlcmVkQ29udGFpbmVyIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8
Y2xhc3MgS2V5LCBjbGFzcyBULCBjbGFzcyBIYXNoLCBjbGFzcyBLZXlFcXVhbCwgY2xhc3MgQWxs
b2NhdG9yPgorc3RydWN0IElzVW5vcmRlcmVkQ29udGFpbmVyPAorICAgIHN0ZDo6dW5vcmRlcmVk
X21hcDxLZXksIFQsIEhhc2gsIEtleUVxdWFsLCBBbGxvY2F0b3I+PiA6IHN0ZDo6dHJ1ZV90eXBl
IHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBIYXNoLCBjbGFzcyBLZXlFcXVhbCwg
Y2xhc3MgQWxsb2NhdG9yPgorc3RydWN0IElzVW5vcmRlcmVkQ29udGFpbmVyPHN0ZDo6dW5vcmRl
cmVkX3NldDxLZXksIEhhc2gsIEtleUVxdWFsLCBBbGxvY2F0b3I+PgorICAgIDogc3RkOjp0cnVl
X3R5cGUge307CisKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFs
CiAKIC8vIFBVQkxJQyBBUEkKQEAgLTQ5OSw2ICs1MTAsMTYgQEAgT3V0cHV0SXRlcmF0b3IgY19t
b3ZlKEMmJiBzcmMsIE91dHB1dEl0ZXJhdG9yIGRlc3QpIHsKICAgICAgICAgICAgICAgICAgICBj
b250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpjX2VuZChzcmMpLCBkZXN0KTsKIH0KIAorLy8g
Y19tb3ZlX2JhY2t3YXJkKCkKKy8vCisvLyBDb250YWluZXItYmFzZWQgdmVyc2lvbiBvZiB0aGUg
PGFsZ29yaXRobT4gYHN0ZDo6bW92ZV9iYWNrd2FyZCgpYCBmdW5jdGlvbiB0bworLy8gbW92ZSBh
IGNvbnRhaW5lcidzIGVsZW1lbnRzIGludG8gYW4gaXRlcmF0b3IgaW4gcmV2ZXJzZSBvcmRlci4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBlbmFtZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+CitC
aWRpcmVjdGlvbmFsSXRlcmF0b3IgY19tb3ZlX2JhY2t3YXJkKEMmJiBzcmMsIEJpZGlyZWN0aW9u
YWxJdGVyYXRvciBkZXN0KSB7CisgIHJldHVybiBzdGQ6Om1vdmVfYmFja3dhcmQoY29udGFpbmVy
X2FsZ29yaXRobV9pbnRlcm5hbDo6Y19iZWdpbihzcmMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OmNfZW5kKHNyYyksIGRlc3QpOwor
fQorCiAvLyBjX3N3YXBfcmFuZ2VzKCkKIC8vCiAvLyBDb250YWluZXItYmFzZWQgdmVyc2lvbiBv
ZiB0aGUgPGFsZ29yaXRobT4gYHN0ZDo6c3dhcF9yYW5nZXMoKWAgZnVuY3Rpb24gdG8KQEAgLTYz
Niw3ICs2NTcsNiBAQCBjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpDb250YWluZXJJdGVy
PEM+IGNfZ2VuZXJhdGVfbihDJiBjLCBTaXplIG4sCiAvLyBhbmQgYHVuaXF1ZSgpYCBhcmUgb21p
dHRlZCwgYmVjYXVzZSBpdCdzIG5vdCBjbGVhciB3aGV0aGVyIG9yIG5vdCBzdWNoCiAvLyBmdW5j
dGlvbnMgc2hvdWxkIGNhbGwgZXJhc2Ugb24gdGhlaXIgc3VwcGxpZWQgc2VxdWVuY2VzIGFmdGVy
d2FyZHMuIEVpdGhlcgogLy8gYmVoYXZpb3Igd291bGQgYmUgc3VycHJpc2luZyBmb3IgYSBkaWZm
ZXJlbnQgc2V0IG9mIHVzZXJzLgotLy8KIAogLy8gY19yZW1vdmVfY29weSgpCiAvLwpAQCAtMTE1
NCw3ICsxMTc0LDEzIEBAIGJvb2wgY19pbmNsdWRlcyhjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBj
MiwgQ29tcGFyZSYmIGNvbXApIHsKIC8vIENvbnRhaW5lci1iYXNlZCB2ZXJzaW9uIG9mIHRoZSA8
YWxnb3JpdGhtPiBgc3RkOjpzZXRfdW5pb24oKWAgZnVuY3Rpb24KIC8vIHRvIHJldHVybiBhbiBp
dGVyYXRvciBjb250YWluaW5nIHRoZSB1bmlvbiBvZiB0d28gY29udGFpbmVyczsgZHVwbGljYXRl
CiAvLyB2YWx1ZXMgYXJlIG5vdCBjb3BpZWQgaW50byB0aGUgb3V0cHV0LgotdGVtcGxhdGUgPHR5
cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwKKyAg
ICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAg
ICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWluZXI8QzE+
Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGUsCisgICAgICAgICAgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5lcl9hbGdv
cml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFpbmVyPEMyPjo6dmFsdWUsCisgICAgICAg
ICAgICAgIHZvaWQ+Ojp0eXBlPgogT3V0cHV0SXRlcmF0b3IgY19zZXRfdW5pb24oY29uc3QgQzEm
IGMxLCBjb25zdCBDMiYgYzIsIE91dHB1dEl0ZXJhdG9yIG91dHB1dCkgewogICByZXR1cm4gc3Rk
OjpzZXRfdW5pb24oY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6Y19iZWdpbihjMSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpjX2Vu
ZChjMSksCkBAIC0xMTY0LDcgKzExOTAsMTMgQEAgT3V0cHV0SXRlcmF0b3IgY19zZXRfdW5pb24o
Y29uc3QgQzEmIGMxLCBjb25zdCBDMiYgYzIsIE91dHB1dEl0ZXJhdG9yIG91dHB1dCkgewogCiAv
LyBPdmVybG9hZCBvZiBjX3NldF91bmlvbigpIGZvciBwZXJmb3JtaW5nIGEgbWVyZ2UgdXNpbmcg
YSBgY29tcGAgb3RoZXIgdGhhbgogLy8gYG9wZXJhdG9yPGAuCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
QzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFy
ZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5cGVuYW1lIE91dHB1dEl0
ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlLAorICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICFjb250YWluZXJfYWxnb3JpdGhtX2ludGVy
bmFsOjpJc1Vub3JkZXJlZENvbnRhaW5lcjxDMT46OnZhbHVlLAorICAgICAgICAgICAgICB2b2lk
Pjo6dHlwZSwKKyAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAor
ICAgICAgICAgICAgICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRD
b250YWluZXI8QzI+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGU+CiBPdXRwdXRJ
dGVyYXRvciBjX3NldF91bmlvbihjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwgT3V0cHV0SXRl
cmF0b3Igb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyZSYmIGNvbXAp
IHsKICAgcmV0dXJuIHN0ZDo6c2V0X3VuaW9uKGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6
OmNfYmVnaW4oYzEpLApAQCAtMTE3OCw3ICsxMjEwLDEzIEBAIE91dHB1dEl0ZXJhdG9yIGNfc2V0
X3VuaW9uKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLCBPdXRwdXRJdGVyYXRvciBvdXRwdXQs
CiAvLwogLy8gQ29udGFpbmVyLWJhc2VkIHZlcnNpb24gb2YgdGhlIDxhbGdvcml0aG0+IGBzdGQ6
OnNldF9pbnRlcnNlY3Rpb24oKWAgZnVuY3Rpb24KIC8vIHRvIHJldHVybiBhbiBpdGVyYXRvciBj
b250YWluaW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdHdvIGNvbnRhaW5lcnMuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLAor
ICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAg
ICAgICFjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJc1Vub3JkZXJlZENvbnRhaW5lcjxD
MT46OnZhbHVlLAorICAgICAgICAgICAgICB2b2lkPjo6dHlwZSwKKyAgICAgICAgICB0eXBlbmFt
ZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAhY29udGFpbmVyX2Fs
Z29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWluZXI8QzI+Ojp2YWx1ZSwKKyAgICAg
ICAgICAgICAgdm9pZD46OnR5cGU+CiBPdXRwdXRJdGVyYXRvciBjX3NldF9pbnRlcnNlY3Rpb24o
Y29uc3QgQzEmIGMxLCBjb25zdCBDMiYgYzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0cHV0KSB7CiAgIHJldHVybiBzdGQ6OnNldF9pbnRlcnNl
Y3Rpb24oY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6Y19iZWdpbihjMSksCkBAIC0xMTg5
LDcgKzEyMjcsMTMgQEAgT3V0cHV0SXRlcmF0b3IgY19zZXRfaW50ZXJzZWN0aW9uKGNvbnN0IEMx
JiBjMSwgY29uc3QgQzImIGMyLAogCiAvLyBPdmVybG9hZCBvZiBjX3NldF9pbnRlcnNlY3Rpb24o
KSBmb3IgcGVyZm9ybWluZyBhIG1lcmdlIHVzaW5nIGEgYGNvbXBgIG90aGVyCiAvLyB0aGFuIGBv
cGVyYXRvcjxgLgotdGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUg
T3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQzEs
IHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZSwK
KyAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAg
ICAgICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWluZXI8
QzE+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGUsCisgICAgICAgICAgdHlwZW5h
bWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5lcl9h
bGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFpbmVyPEMyPjo6dmFsdWUsCisgICAg
ICAgICAgICAgIHZvaWQ+Ojp0eXBlPgogT3V0cHV0SXRlcmF0b3IgY19zZXRfaW50ZXJzZWN0aW9u
KGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dHB1dCwgQ29tcGFyZSYmIGNvbXApIHsKICAgcmV0dXJu
IHN0ZDo6c2V0X2ludGVyc2VjdGlvbihjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpjX2Jl
Z2luKGMxKSwKQEAgLTEyMDQsNyArMTI0OCwxMyBAQCBPdXRwdXRJdGVyYXRvciBjX3NldF9pbnRl
cnNlY3Rpb24oY29uc3QgQzEmIGMxLCBjb25zdCBDMiYgYzIsCiAvLyBDb250YWluZXItYmFzZWQg
dmVyc2lvbiBvZiB0aGUgPGFsZ29yaXRobT4gYHN0ZDo6c2V0X2RpZmZlcmVuY2UoKWAgZnVuY3Rp
b24KIC8vIHRvIHJldHVybiBhbiBpdGVyYXRvciBjb250YWluaW5nIGVsZW1lbnRzIHByZXNlbnQg
aW4gdGhlIGZpcnN0IGNvbnRhaW5lciBidXQKIC8vIG5vdCBpbiB0aGUgc2Vjb25kLgotdGVtcGxh
dGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRv
ciwKKyAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAg
ICAgICAgICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWlu
ZXI8QzE+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGUsCisgICAgICAgICAgdHlw
ZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5l
cl9hbGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFpbmVyPEMyPjo6dmFsdWUsCisg
ICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlPgogT3V0cHV0SXRlcmF0b3IgY19zZXRfZGlmZmVyZW5j
ZShjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0cHV0KSB7CiAgIHJldHVybiBzdGQ6OnNldF9kaWZmZXJl
bmNlKGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OmNfYmVnaW4oYzEpLApAQCAtMTIxNSw3
ICsxMjY1LDEzIEBAIE91dHB1dEl0ZXJhdG9yIGNfc2V0X2RpZmZlcmVuY2UoY29uc3QgQzEmIGMx
LCBjb25zdCBDMiYgYzIsCiAKIC8vIE92ZXJsb2FkIG9mIGNfc2V0X2RpZmZlcmVuY2UoKSBmb3Ig
cGVyZm9ybWluZyBhIG1lcmdlIHVzaW5nIGEgYGNvbXBgIG90aGVyCiAvLyB0aGFuIGBvcGVyYXRv
cjxgLgotdGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0
SXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVu
YW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZSwKKyAgICAg
ICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAh
Y29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWluZXI8QzE+Ojp2
YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGUsCisgICAgICAgICAgdHlwZW5hbWUgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5lcl9hbGdvcml0
aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFpbmVyPEMyPjo6dmFsdWUsCisgICAgICAgICAg
ICAgIHZvaWQ+Ojp0eXBlPgogT3V0cHV0SXRlcmF0b3IgY19zZXRfZGlmZmVyZW5jZShjb25zdCBD
MSYgYzEsIGNvbnN0IEMyJiBjMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0
cHV0SXRlcmF0b3Igb3V0cHV0LCBDb21wYXJlJiYgY29tcCkgewogICByZXR1cm4gc3RkOjpzZXRf
ZGlmZmVyZW5jZShjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpjX2JlZ2luKGMxKSwKQEAg
LTEyMzAsNyArMTI4NiwxMyBAQCBPdXRwdXRJdGVyYXRvciBjX3NldF9kaWZmZXJlbmNlKGNvbnN0
IEMxJiBjMSwgY29uc3QgQzImIGMyLAogLy8gQ29udGFpbmVyLWJhc2VkIHZlcnNpb24gb2YgdGhl
IDxhbGdvcml0aG0+IGBzdGQ6OnNldF9zeW1tZXRyaWNfZGlmZmVyZW5jZSgpYAogLy8gZnVuY3Rp
b24gdG8gcmV0dXJuIGFuIGl0ZXJhdG9yIGNvbnRhaW5pbmcgZWxlbWVudHMgcHJlc2VudCBpbiBl
aXRoZXIgb25lCiAvLyBjb250YWluZXIgb3IgdGhlIG90aGVyLCBidXQgbm90IGJvdGguCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5cGVuYW1lIE91dHB1dEl0ZXJh
dG9yLAorICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAg
ICAgICAgICAgICFjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJc1Vub3JkZXJlZENvbnRh
aW5lcjxDMT46OnZhbHVlLAorICAgICAgICAgICAgICB2b2lkPjo6dHlwZSwKKyAgICAgICAgICB0
eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAhY29udGFp
bmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWluZXI8QzI+Ojp2YWx1ZSwK
KyAgICAgICAgICAgICAgdm9pZD46OnR5cGU+CiBPdXRwdXRJdGVyYXRvciBjX3NldF9zeW1tZXRy
aWNfZGlmZmVyZW5jZShjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dHB1dCkgewogICBy
ZXR1cm4gc3RkOjpzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoCkBAIC0xMjQyLDcgKzEzMDQsMTMg
QEAgT3V0cHV0SXRlcmF0b3IgY19zZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoY29uc3QgQzEmIGMx
LCBjb25zdCBDMiYgYzIsCiAKIC8vIE92ZXJsb2FkIG9mIGNfc2V0X3N5bW1ldHJpY19kaWZmZXJl
bmNlKCkgZm9yIHBlcmZvcm1pbmcgYSBtZXJnZSB1c2luZyBhCiAvLyBgY29tcGAgb3RoZXIgdGhh
biBgb3BlcmF0b3I8YC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5cGVu
YW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlPgordGVtcGxhdGUgPHR5cGVuYW1l
IEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIENvbXBh
cmUsCisgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAg
ICAgICAgICAgIWNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFp
bmVyPEMxPjo6dmFsdWUsCisgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlLAorICAgICAgICAgIHR5
cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICFjb250YWlu
ZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJc1Vub3JkZXJlZENvbnRhaW5lcjxDMj46OnZhbHVlLAor
ICAgICAgICAgICAgICB2b2lkPjo6dHlwZT4KIE91dHB1dEl0ZXJhdG9yIGNfc2V0X3N5bW1ldHJp
Y19kaWZmZXJlbmNlKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0cHV0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyZSYmIGNvbXApIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29y
aXRobS9jb250YWluZXJfdGVzdC5jYwppbmRleCAxNTAyYjE3Zjg2MzZiMGQ1ZWRlYzlmYTQ1MzVj
NmU4YjgwZDM1MDc1Li44NmJmOWQzZWEzMjdhOTI4ZmNkNTdiOTQ1M2ZlMmEwZDM3YThjMzVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyX3Rlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YWxnb3JpdGhtL2NvbnRhaW5lcl90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC02MzYsNiArNjM2LDE5IEBAIFRFU1QoTXV0YXRpbmdUZXN0LCBNb3Zl
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50ZWUoNSkpKTsKIH0KIAor
VEVTVChNdXRhdGluZ1Rlc3QsIE1vdmVCYWNrd2FyZCkgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8aW50Pj4gYWN0dWFsOworICBhY3R1YWwuZW1wbGFjZV9iYWNrKGFic2w6Om1ha2Vf
dW5pcXVlPGludD4oMSkpOworICBhY3R1YWwuZW1wbGFjZV9iYWNrKGFic2w6Om1ha2VfdW5pcXVl
PGludD4oMikpOworICBhY3R1YWwuZW1wbGFjZV9iYWNrKGFic2w6Om1ha2VfdW5pcXVlPGludD4o
MykpOworICBhY3R1YWwuZW1wbGFjZV9iYWNrKGFic2w6Om1ha2VfdW5pcXVlPGludD4oNCkpOwor
ICBhY3R1YWwuZW1wbGFjZV9iYWNrKGFic2w6Om1ha2VfdW5pcXVlPGludD4oNSkpOworICBhdXRv
IHN1YnJhbmdlID0gYWJzbDo6TWFrZVNwYW4oYWN0dWFsLmRhdGEoKSwgMyk7CisgIGFic2w6OmNf
bW92ZV9iYWNrd2FyZChzdWJyYW5nZSwgYWN0dWFsLmVuZCgpKTsKKyAgRVhQRUNUX1RIQVQoYWN0
dWFsLCBFbGVtZW50c0FyZShJc051bGwoKSwgSXNOdWxsKCksIFBvaW50ZWUoMSksIFBvaW50ZWUo
MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRlZSgzKSkpOworfQor
CiBURVNUKE11dGF0aW5nVGVzdCwgTW92ZVdpdGhSdmFsdWUpIHsKICAgYXV0byBNYWtlUlZhbHVl
U3JjID0gW10gewogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBzcmM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vZXF1YWxfYmVuY2htYXJrLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxn
b3JpdGhtL2VxdWFsX2JlbmNobWFyay5jYwppbmRleCAxOWMwNzgwY2NkMTc5Y2U3NDViNWU2ODIx
YWRkM2RhNDBjNTgyNzkxLi43YmY2MmM5YTdmNTZjNWJhZDM4ZTM1Zjk1OTFjNDMwNjU5MTI3M2Zh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vZXF1YWxfYmVuY2htYXJrLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2FsZ29yaXRobS9lcXVhbF9iZW5jaG1hcmsuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuYmF6ZWwgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL0JVSUxELmJhemVsCmluZGV4IGY3ZDgxMDEzNWI4Y2NjNWZiMDVkZTRhYjcyNWQ2
YzFjZDhkZjNhNDYuLmE1MTIyNzJhZGI5NDFiMmFjZThmY2FlNDU0NDdmM2QzMWUzNDlkMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlMRC5i
YXplbApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1LDE3ICsxNSw0NiBA
QAogIwogCiBsb2FkKAotICAgICIvL2Fic2w6Y29wdHMuYnpsIiwKKyAgICAiLy9hYnNsOmNvcHRz
L2NvbmZpZ3VyZV9jb3B0cy5iemwiLAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAotICAgICJB
QlNMX1RFU1RfQ09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElOS09QVFMiLAogICAgICJBQlNM
X0VYQ0VQVElPTlNfRkxBRyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwK
KyAgICAiQUJTTF9URVNUX0NPUFRTIiwKICkKIAogcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkg
PSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKIAogbGljZW5zZXMoWyJub3RpY2UiXSkgICMgQXBh
Y2hlIDIuMAogCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiYXRvbWljX2hvb2siLAorICAgIGhk
cnMgPSBbImludGVybmFsL2F0b21pY19ob29rLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVM
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB2aXNp
YmlsaXR5ID0gWworICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIsCisgICAgXSwKKykK
KworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImxvZ19zZXZlcml0eSIsCisgICAgc3JjcyA9IFsi
bG9nX3NldmVyaXR5LmNjIl0sCisgICAgaGRycyA9IFsibG9nX3NldmVyaXR5LmgiXSwKKyAgICBj
b3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKKyAgICBkZXBzID0gWyI6Y29yZV9oZWFkZXJzIl0sCispCisKK2NjX2xpYnJhcnko
CisgICAgbmFtZSA9ICJyYXdfbG9nZ2luZ19pbnRlcm5hbCIsCisgICAgY29wdHMgPSBBQlNMX0RF
RkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAg
dmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAorICAgIF0s
CispCisKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJzcGlubG9ja193YWl0IiwKICAgICBzcmNz
ID0gWwpAQCAtNDAsNiArNjksNyBAQCBjY19saWJyYXJ5KAogICAgICAgICAiaW50ZXJuYWwvc3Bp
bmxvY2tfd2FpdC5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAor
ICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHZpc2liaWxpdHkgPSBb
CiAgICAgICAgICIvL2Fic2wvYmFzZTpfX3BrZ19fIiwKICAgICBdLApAQCAtNTMsNiArODMsNyBA
QCBjY19saWJyYXJ5KAogICAgICAgICAicG9saWN5X2NoZWNrcy5oIiwKICAgICBdLAogICAgIGNv
cHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogKQogCiBjY19saWJyYXJ5KApAQCAtNjEsMjEgKzkyLDI2IEBAIGNjX2xpYnJhcnko
CiAgICAgaGRycyA9IFsiZHluYW1pY19hbm5vdGF0aW9ucy5oIl0sCiAgICAgY29wdHMgPSBBQlNM
X0RFRkFVTFRfQ09QVFMsCiAgICAgZGVmaW5lcyA9IFsiX19DTEFOR19TVVBQT1JUX0RZTl9BTk5P
VEFUSU9OX18iXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICkKIAog
Y2NfbGlicmFyeSgKICAgICBuYW1lID0gImNvcmVfaGVhZGVycyIsCisgICAgc3JjcyA9IFsKKyAg
ICAgICAgImludGVybmFsL3RocmVhZF9hbm5vdGF0aW9ucy5oIiwKKyAgICBdLAogICAgIGhkcnMg
PSBbCiAgICAgICAgICJhdHRyaWJ1dGVzLmgiLAorICAgICAgICAiY29uc3RfaW5pdC5oIiwKICAg
ICAgICAgIm1hY3Jvcy5oIiwKICAgICAgICAgIm9wdGltaXphdGlvbi5oIiwKICAgICAgICAgInBv
cnQuaCIsCiAgICAgICAgICJ0aHJlYWRfYW5ub3RhdGlvbnMuaCIsCiAgICAgXSwKICAgICBjb3B0
cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmNvbmZpZyIsCi0gICAgICAgICI6ZHluYW1p
Y19hbm5vdGF0aW9ucyIsCiAgICAgXSwKICkKIApAQCAtODksNiArMTI1LDEwIEBAIGNjX2xpYnJh
cnkoCiAgICAgICAgICJpbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaCIsCiAgICAgXSwKICAgICBj
b3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IHNlbGVjdCh7CisgICAg
ICAgICIvL2Fic2w6d2luZG93cyI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQi
OiBbIi1wdGhyZWFkIl0sCisgICAgfSkgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlz
aWJpbGl0eSA9IFsKICAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAogICAgIF0sCkBA
IC0xMDgsMTEgKzE0OCwxNiBAQCBjY19saWJyYXJ5KAogICAgICAgICAiaW50ZXJuYWwvaWRlbnRp
dHkuaCIsCiAgICAgICAgICJpbnRlcm5hbC9pbmxpbmVfdmFyaWFibGUuaCIsCiAgICAgICAgICJp
bnRlcm5hbC9pbnZva2UuaCIsCisgICAgICAgICJpbnRlcm5hbC9zY2hlZHVsaW5nX21vZGUuaCIs
CiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9
IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWwogICAgICAgICAiLy9h
YnNsOl9fc3VicGFja2FnZXNfXyIsCiAgICAgXSwKKyAgICBkZXBzID0gWworICAgICAgICAiLy9h
YnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgIF0sCiApCiAKIGNjX2xpYnJhcnkoCkBAIC0xMjgs
NyArMTczLDYgQEAgY2NfbGlicmFyeSgKICAgICBoZHJzID0gWwogICAgICAgICAiY2FsbF9vbmNl
LmgiLAogICAgICAgICAiY2FzdHMuaCIsCi0gICAgICAgICJpbnRlcm5hbC9hdG9taWNfaG9vay5o
IiwKICAgICAgICAgImludGVybmFsL2N5Y2xlY2xvY2suaCIsCiAgICAgICAgICJpbnRlcm5hbC9s
b3dfbGV2ZWxfc2NoZWR1bGluZy5oIiwKICAgICAgICAgImludGVybmFsL3Blcl90aHJlYWRfdGxz
LmgiLApAQCAtMTM4LDE1ICsxODIsMjEgQEAgY2NfbGlicmFyeSgKICAgICAgICAgImludGVybmFs
L3RocmVhZF9pZGVudGl0eS5oIiwKICAgICAgICAgImludGVybmFsL3RzYW5fbXV0ZXhfaW50ZXJm
YWNlLmgiLAogICAgICAgICAiaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgiLAotICAgICAg
ICAibG9nX3NldmVyaXR5LmgiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBzZWxlY3QoeworICAgICAgICAiLy9hYnNsOndpbmRvd3MiOiBb
XSwKKyAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItcHRocmVhZCJdLAorICAgIH0p
ICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCisgICAgICAgICI6YXRvbWlj
X2hvb2siLAogICAgICAgICAiOmJhc2VfaW50ZXJuYWwiLAogICAgICAgICAiOmNvbmZpZyIsCiAg
ICAgICAgICI6Y29yZV9oZWFkZXJzIiwKICAgICAgICAgIjpkeW5hbWljX2Fubm90YXRpb25zIiwK
KyAgICAgICAgIjpsb2dfc2V2ZXJpdHkiLAogICAgICAgICAiOnNwaW5sb2NrX3dhaXQiLAorICAg
ICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAogICAgIF0sCiApCiAKQEAgLTE1NSw4ICsy
MDUsOSBAQCBjY190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbImludGVy
bmFsL2F0b21pY19ob29rX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwotICAg
ICAgICAiOmJhc2UiLAorICAgICAgICAiOmF0b21pY19ob29rIiwKICAgICAgICAgIjpjb3JlX2hl
YWRlcnMiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAog
ICAgIF0sCkBAIC0xNjksNiArMjIwLDcgQEAgY2NfdGVzdCgKICAgICAgICAgImJpdF9jYXN0X3Rl
c3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpiYXNl
IiwKICAgICAgICAgIjpjb3JlX2hlYWRlcnMiLApAQCAtMTgxLDE0ICsyMzMsMTMgQEAgY2NfbGli
cmFyeSgKICAgICBzcmNzID0gWyJpbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5jYyJdLAogICAgIGhk
cnMgPSBbImludGVybmFsL3Rocm93X2RlbGVnYXRlLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVG
QVVMVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAotICAgIGxpbmtvcHRzID0gQUJTTF9F
WENFUFRJT05TX0ZMQUdfTElOS09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNf
RkxBR19MSU5LT1BUUyArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0g
WwogICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIsCiAgICAgXSwKICAgICBkZXBzID0g
WwogICAgICAgICAiOmJhc2UiLAogICAgICAgICAiOmNvbmZpZyIsCi0gICAgICAgICI6Y29yZV9o
ZWFkZXJzIiwKICAgICBdLAogKQogCkBAIC0xOTYsNyArMjQ3LDcgQEAgY2NfdGVzdCgKICAgICBu
YW1lID0gInRocm93X2RlbGVnYXRlX3Rlc3QiLAogICAgIHNyY3MgPSBbInRocm93X2RlbGVnYXRl
X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9O
U19GTEFHLAotICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCisg
ICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyArIEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnRocm93X2RlbGVnYXRlIiwKICAg
ICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKQEAgLTIwOCw2ICsy
NTksNyBAQCBjY19saWJyYXJ5KAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBoZHJzID0gWyJpbnRl
cm5hbC9leGNlcHRpb25fdGVzdGluZy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9
IFsKICAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAogICAgIF0sCkBAIC0yMjAsNiAr
MjcyLDcgQEAgY2NfbGlicmFyeSgKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJwcmV0dHlfZnVu
Y3Rpb24iLAogICAgIGhkcnMgPSBbImludGVybmFsL3ByZXR0eV9mdW5jdGlvbi5oIl0sCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9IFsiLy9h
YnNsOl9fc3VicGFja2FnZXNfXyJdLAogKQogCkBAIC0yMjksMTUgKzI4MiwxNCBAQCBjY19saWJy
YXJ5KAogICAgIHNyY3MgPSBbImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5jYyJd
LAogICAgIGhkcnMgPSBbImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oIl0sCiAg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBs
aW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgZGVwcyA9IFsKLSAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpjb25maWciLAogICAgICAg
ICAiOnByZXR0eV9mdW5jdGlvbiIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICAgICAg
Ii8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKICAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKLSAg
ICAgICAgIi8vYWJzbC90eXBlczpvcHRpb25hbCIsCisgICAgICAgICIvL2Fic2wvdXRpbGl0eSIs
CiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAogICAgIF0sCiApCkBA
IC0yNDYsNyArMjk4LDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImV4Y2VwdGlvbl9zYWZldHlf
dGVzdGluZ190ZXN0IiwKICAgICBzcmNzID0gWyJleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVz
dC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZM
QUcsCi0gICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBs
aW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5n
IiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLApAQCAtMjY0LDYgKzMxNiw3IEBAIGNjX3Rlc3Qo
CiAgICAgICAgICJpbnRlcm5hbC9pbmxpbmVfdmFyaWFibGVfdGVzdGluZy5oIiwKICAgICBdLAog
ICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZV9pbnRlcm5hbCIsCiAgICAg
ICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBAIC0yNzUsNiArMzI4
LDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJpbnZva2Vf
dGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZV9pbnRl
cm5hbCIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKQEAgLTI5MCw2ICszNDQsNyBAQCBjY19s
aWJyYXJ5KAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBzcmNzID0gWyJzcGlubG9ja190ZXN0X2Nv
bW1vbi5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZSIsCiAg
ICAgICAgICI6Y29yZV9oZWFkZXJzIiwKQEAgLTMwNSw3ICszNjAsNyBAQCBjY190ZXN0KAogICAg
IHNpemUgPSAibWVkaXVtIiwKICAgICBzcmNzID0gWyJzcGlubG9ja190ZXN0X2NvbW1vbi5jYyJd
LAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAotICAgIHRhZ3MgPSBbIm5vX3Rlc3Rfd2Fz
bSJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6Y29yZV9oZWFkZXJzIiwKQEAgLTMxNSw2ICsz
NzAsMzUgQEAgY2NfdGVzdCgKICAgICBdLAogKQogCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAi
c3BpbmxvY2tfYmVuY2htYXJrX2NvbW1vbiIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3Mg
PSBbImludGVybmFsL3NwaW5sb2NrX2JlbmNobWFyay5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZp
c2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2wvYmFzZTpfX3BrZ19fIiwKKyAgICBdLAorICAg
IGRlcHMgPSBbCisgICAgICAgICI6YmFzZSIsCisgICAgICAgICI6YmFzZV9pbnRlcm5hbCIsCisg
ICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0aW9uIiwKKyAgICAgICAgIkBjb21fZ2l0aHViX2dv
b2dsZV9iZW5jaG1hcmsvLzpiZW5jaG1hcmtfbWFpbiIsCisgICAgXSwKKyAgICBhbHdheXNsaW5r
ID0gMSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAic3BpbmxvY2tfYmVuY2htYXJrIiwK
KyAgICB0ZXN0b25seSA9IDEsCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgdmlzaWJpbGl0eSA9IFsiLy92
aXNpYmlsaXR5OnByaXZhdGUiXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOnNwaW5sb2NrX2Jl
bmNobWFya19jb21tb24iLAorICAgIF0sCispCisKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJl
bmRpYW4iLAogICAgIGhkcnMgPSBbCkBAIC0zMjIsNiArNDA2LDcgQEAgY2NfbGlicmFyeSgKICAg
ICAgICAgImludGVybmFsL3VuYWxpZ25lZF9hY2Nlc3MuaCIsCiAgICAgXSwKICAgICBjb3B0cyA9
IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICBkZXBzID0gWwogICAgICAgICAiOmNvbmZpZyIsCiAgICAgICAgICI6Y29yZV9oZWFk
ZXJzIiwKQEAgLTMzMyw3ICs0MTgsNiBAQCBjY190ZXN0KAogICAgIHNyY3MgPSBbImludGVybmFs
L2VuZGlhbl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCiAgICAgZGVw
cyA9IFsKLSAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpjb25maWciLAogICAgICAgICAiOmVu
ZGlhbiIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBA
IC0zNDQsOSArNDI4LDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNvbmZpZ190ZXN0IiwKICAg
ICBzcmNzID0gWyJjb25maWdfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRT
LAotICAgIHRhZ3MgPSBbCi0gICAgICAgICJub190ZXN0X3dhc20iLAotICAgIF0sCisgICAgbGlu
a29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpj
b25maWciLAogICAgICAgICAiLy9hYnNsL3N5bmNocm9uaXphdGlvbjp0aHJlYWRfcG9vbCIsCkBA
IC0zNTgsOSArNDQwLDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNhbGxfb25jZV90ZXN0IiwK
ICAgICBzcmNzID0gWyJjYWxsX29uY2VfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAotICAgIHRhZ3MgPSBbCi0gICAgICAgICJub190ZXN0X3dhc20iLAotICAgIF0sCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjpiYXNlIiwKICAgICAgICAgIjpjb3JlX2hlYWRlcnMiLApAQCAtMzczLDYgKzQ1Myw3IEBA
IGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJyYXdfbG9nZ2luZ190ZXN0IiwKICAgICBzcmNzID0gWyJy
YXdfbG9nZ2luZ190ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAg
IjpiYXNlIiwKICAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKQEAgLTM4NSw2ICs0NjYsNyBAQCBj
Y190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbImludGVybmFsL3N5c2lu
Zm9fdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZSIs
CiAgICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0aW9uIiwKQEAgLTM5NCwxMyArNDc2LDEwIEBA
IGNjX3Rlc3QoCiAKIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJsb3dfbGV2ZWxfYWxsb2NfdGVzdCIs
Ci0gICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAogICAgIHNyY3MgPSBb
ImludGVybmFsL2xvd19sZXZlbF9hbGxvY190ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMsCi0gICAgbGlua29wdHMgPSBzZWxlY3QoewotICAgICAgICAiLy9hYnNsOndpbmRv
d3MiOiBbXSwKLSAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItcHRocmVhZCJdLAot
ICAgIH0pLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3Mg
PSBbIm5vX3Rlc3RfaW9zX3g4Nl82NCJdLAogICAgIGRlcHMgPSBbIjptYWxsb2NfaW50ZXJuYWwi
XSwKICkKQEAgLTQxMCwxMyArNDg5LDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwK
ICAgICBzcmNzID0gWyJpbnRlcm5hbC90aHJlYWRfaWRlbnRpdHlfdGVzdC5jYyJdLAogICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAotICAgIGxpbmtvcHRzID0gc2VsZWN0KHsKLSAgICAgICAg
Ii8vYWJzbDp3aW5kb3dzIjogW10sCi0gICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsi
LXB0aHJlYWQiXSwKLSAgICB9KSwKLSAgICB0YWdzID0gWwotICAgICAgICAibm9fdGVzdF93YXNt
IiwKLSAgICBdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRl
cHMgPSBbCiAgICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6Y29yZV9oZWFkZXJzIiwKQEAgLTQy
OSw2ICs1MDIsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAidGhyZWFkX2lkZW50aXR5X2JlbmNo
bWFyayIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5X2JlbmNobWFyay5j
YyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9E
RUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3MgPSBbImJlbmNobWFyayJdLAogICAgIHZpc2liaWxp
dHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCiAgICAgZGVwcyA9IFsKQEAgLTQ0MSw2ICs1
MTUsNyBAQCBjY190ZXN0KAogY2NfbGlicmFyeSgKICAgICBuYW1lID0gImJpdHMiLAogICAgIGhk
cnMgPSBbImludGVybmFsL2JpdHMuaCJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIHZpc2liaWxpdHkgPSBbCiAgICAgICAgICIvL2Fic2w6X19zdWJwYWNrYWdl
c19fIiwKICAgICBdLApAQCAtNDUyLDggKzUyNyw0NiBAQCBjY190ZXN0KAogICAgIHNpemUgPSAi
c21hbGwiLAogICAgIHNyY3MgPSBbImludGVybmFsL2JpdHNfdGVzdC5jYyJdLAogICAgIGNvcHRz
ID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Yml0cyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9n
b29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAgICAgXSwKICkKKworY2NfbGlicmFyeSgKKyAgICBu
YW1lID0gInNjb3BlZF9zZXRfZW52IiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsi
aW50ZXJuYWwvc2NvcGVkX3NldF9lbnYuY2MiXSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9zY29w
ZWRfc2V0X2Vudi5oIl0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisg
ICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAorICAg
IF0sCisgICAgZGVwcyA9IFsiOmJhc2UiXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInNj
b3BlZF9zZXRfZW52X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImlu
dGVybmFsL3Njb3BlZF9zZXRfZW52X3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0g
WworICAgICAgICAiOnNjb3BlZF9zZXRfZW52IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2ds
ZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
bG9nX3NldmVyaXR5X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImxv
Z19zZXZlcml0eV90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAg
IjpiYXNlIiwKKyAgICAgICAgIjpsb2dfc2V2ZXJpdHkiLAorICAgICAgICAiQGNvbV9nb29nbGVf
Z29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlMRC5nbgppbmRleCA2YzU0MGYzYjJiYjI5Y2E5
NmU0NTY5NmExY2IzMzVjY2I0YTBiMWJmLi4wYzk4MWI0OWJkNzFhZGZjYzcxNGU1MTY1YmMwMzUx
ODc4NGU0YTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmduCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvQlVJTEQuZ24KQEAgLTYsNiArNiw3IEBAIGltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVp
bGQuZ25pIikKIAogaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsK
KyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAog
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvZ29v
Z2xldGVzdDpndGVzdCIsCkBAIC0xNCw2ICsxNSw1MiBAQCBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1
bSkgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogfQogCitzb3VyY2Vfc2V0KCJhdG9taWNfaG9v
ayIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9j
b2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19j
aHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVs
dF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRl
cm5hbC9hdG9taWNfaG9vay5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29yZV9oZWFkZXJz
IiwKKyAgXQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICIuLi8qIiBdCit9
CisKK3NvdXJjZV9zZXQoImxvZ19zZXZlcml0eSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxk
L2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIv
L2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19j
b25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWci
IF0KKyAgc291cmNlcyA9IFsKKyAgICAibG9nX3NldmVyaXR5LmNjIiwKKyAgXQorICBwdWJsaWMg
PSBbCisgICAgImxvZ19zZXZlcml0eS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29yZV9o
ZWFkZXJzIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJyYXdfbG9nZ2luZ19pbnRlcm5hbCIpIHsK
KyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBd
CisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1
bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxh
Z3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxp
dHkgKz0gWyAiLi4vKiIgXQorfQorCiBzb3VyY2Vfc2V0KCJzcGlubG9ja193YWl0IikgewogICBj
b25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KICAg
Y29uZmlncyArPSBbCkBAIC04OCw2ICsxMzUsNyBAQCBzb3VyY2Vfc2V0KCJjb3JlX2hlYWRlcnMi
KSB7CiAgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
aW5jbHVkZV9jb25maWciIF0KICAgcHVibGljID0gWwogICAgICJhdHRyaWJ1dGVzLmgiLAorICAg
ICJjb25zdF9pbml0LmgiLAogICAgICJtYWNyb3MuaCIsCiAgICAgIm9wdGltaXphdGlvbi5oIiwK
ICAgICAicG9ydC5oIiwKQEAgLTk1LDcgKzE0Myw2IEBAIHNvdXJjZV9zZXQoImNvcmVfaGVhZGVy
cyIpIHsKICAgXQogICBkZXBzID0gWwogICAgICI6Y29uZmlnIiwKLSAgICAiOmR5bmFtaWNfYW5u
b3RhdGlvbnMiLAogICBdCiB9CiAKQEAgLTEzNiw2ICsxODMsMTAgQEAgc291cmNlX3NldCgiYmFz
ZV9pbnRlcm5hbCIpIHsKICAgICAiaW50ZXJuYWwvaWRlbnRpdHkuaCIsCiAgICAgImludGVybmFs
L2lubGluZV92YXJpYWJsZS5oIiwKICAgICAiaW50ZXJuYWwvaW52b2tlLmgiLAorICAgICJpbnRl
cm5hbC9zY2hlZHVsaW5nX21vZGUuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vbWV0YTp0
eXBlX3RyYWl0cyIsCiAgIF0KICAgdmlzaWJpbGl0eSA9IFtdCiAgIHZpc2liaWxpdHkgKz0gWyAi
Li4vKiIgXQpAQCAtMTU5LDcgKzIxMCw2IEBAIHNvdXJjZV9zZXQoImJhc2UiKSB7CiAgIHB1Ymxp
YyA9IFsKICAgICAiY2FsbF9vbmNlLmgiLAogICAgICJjYXN0cy5oIiwKLSAgICAiaW50ZXJuYWwv
YXRvbWljX2hvb2suaCIsCiAgICAgImludGVybmFsL2N5Y2xlY2xvY2suaCIsCiAgICAgImludGVy
bmFsL2xvd19sZXZlbF9zY2hlZHVsaW5nLmgiLAogICAgICJpbnRlcm5hbC9wZXJfdGhyZWFkX3Rs
cy5oIiwKQEAgLTE2OSwxNCArMjE5LDE2IEBAIHNvdXJjZV9zZXQoImJhc2UiKSB7CiAgICAgImlu
dGVybmFsL3RocmVhZF9pZGVudGl0eS5oIiwKICAgICAiaW50ZXJuYWwvdHNhbl9tdXRleF9pbnRl
cmZhY2UuaCIsCiAgICAgImludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oIiwKLSAgICAibG9n
X3NldmVyaXR5LmgiLAogICBdCiAgIGRlcHMgPSBbCisgICAgIjphdG9taWNfaG9vayIsCiAgICAg
IjpiYXNlX2ludGVybmFsIiwKICAgICAiOmNvbmZpZyIsCiAgICAgIjpjb3JlX2hlYWRlcnMiLAog
ICAgICI6ZHluYW1pY19hbm5vdGF0aW9ucyIsCisgICAgIjpsb2dfc2V2ZXJpdHkiLAogICAgICI6
c3BpbmxvY2tfd2FpdCIsCisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAogICBdCiB9CiAKQEAg
LTE5Niw3ICsyNDgsNiBAQCBzb3VyY2Vfc2V0KCJ0aHJvd19kZWxlZ2F0ZSIpIHsKICAgZGVwcyA9
IFsKICAgICAiOmJhc2UiLAogICAgICI6Y29uZmlnIiwKLSAgICAiOmNvcmVfaGVhZGVycyIsCiAg
IF0KICAgdmlzaWJpbGl0eSA9IFtdCiAgIHZpc2liaWxpdHkgKz0gWyAiLi4vKiIgXQpAQCAtMjUx
LDEzICszMDIsMTIgQEAgc291cmNlX3NldCgicHJldHR5X2Z1bmN0aW9uIikgewogIyAgICAgImlu
dGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oIiwKICMgICBdCiAjICAgZGVwcyA9IFsK
LSMgICAgICI6YmFzZSIsCiAjICAgICAiOmNvbmZpZyIsCiAjICAgICAiOnByZXR0eV9mdW5jdGlv
biIsCiAjICAgICAiLi4vbWVtb3J5IiwKICMgICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKICMg
ICAgICIuLi9zdHJpbmdzIiwKLSMgICAgICIuLi90eXBlczpvcHRpb25hbCIsCisjICAgICAiLi4v
dXRpbGl0eSIsCiAjICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICMgICBdCiAjIH0KQEAgLTMxNCwz
ICszNjQsMjMgQEAgc291cmNlX3NldCgiYml0cyIpIHsKICAgdmlzaWJpbGl0eSA9IFtdCiAgIHZp
c2liaWxpdHkgKz0gWyAiLi4vKiIgXQogfQorCitzb3VyY2Vfc2V0KCJzY29wZWRfc2V0X2VudiIp
IHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWMgPSBbCisgICAgImlu
dGVybmFsL3Njb3BlZF9zZXRfZW52LmgiLAorICBdCisgIHNvdXJjZXMgPSBbCisgICAgImludGVy
bmFsL3Njb3BlZF9zZXRfZW52LmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICI6YmFzZSIsCisg
IF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxpdHkgKz0gWyAiLi4vKiIgXQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQ01ha2VMaXN0
cy50eHQKaW5kZXggMDRhNmViMzE5NTViNjAyMjAyYWQ1OTdiYTJiMzRlYzA0YmM3ZTU1Ny4uY2M3
OTYwZTNhZTg4NDFiZTA4Y2RhMjZmYTBmYjRkMjlkYTQwMmEzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0NNYWtlTGlzdHMudHh0CkBAIC01
LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogIwotIyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKyMgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwog
IyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNCwzNzQgKzE0LDUxOSBAQAogIyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICMKIAotbGlzdChBUFBFTkQgQkFTRV9QVUJMSUNfSEVB
REVSUwotICAiYXR0cmlidXRlcy5oIgotICAiY2FsbF9vbmNlLmgiCi0gICJjYXN0cy5oIgotICAi
Y29uZmlnLmgiCi0gICJkeW5hbWljX2Fubm90YXRpb25zLmgiCi0gICJsb2dfc2V2ZXJpdHkuaCIK
LSAgIm1hY3Jvcy5oIgotICAib3B0aW1pemF0aW9uLmgiCi0gICJwb2xpY3lfY2hlY2tzLmgiCi0g
ICJwb3J0LmgiCi0gICJ0aHJlYWRfYW5ub3RhdGlvbnMuaCIKLSkKLQotCi1saXN0KEFQUEVORCBC
QVNFX0lOVEVSTkFMX0hFQURFUlMKLSAgImludGVybmFsL2F0b21pY19ob29rLmgiCi0gICJpbnRl
cm5hbC9iaXRzLmgiCi0gICJpbnRlcm5hbC9jeWNsZWNsb2NrLmgiCi0gICJpbnRlcm5hbC9kaXJl
Y3RfbW1hcC5oIgotICAiaW50ZXJuYWwvZW5kaWFuLmgiCi0gICJpbnRlcm5hbC9leGNlcHRpb25f
dGVzdGluZy5oIgotICAiaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgiCi0gICJp
bnRlcm5hbC9oaWRlX3B0ci5oIgotICAiaW50ZXJuYWwvaWRlbnRpdHkuaCIKLSAgImludGVybmFs
L2ludm9rZS5oIgotICAiaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxlLmgiCi0gICJpbnRlcm5hbC9s
b3dfbGV2ZWxfYWxsb2MuaCIKLSAgImludGVybmFsL2xvd19sZXZlbF9zY2hlZHVsaW5nLmgiCi0g
ICJpbnRlcm5hbC9wZXJfdGhyZWFkX3Rscy5oIgotICAiaW50ZXJuYWwvcHJldHR5X2Z1bmN0aW9u
LmgiCi0gICJpbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgotICAiaW50ZXJuYWwvc2NoZWR1bGluZ19t
b2RlLmgiCi0gICJpbnRlcm5hbC9zcGlubG9jay5oIgotICAiaW50ZXJuYWwvc3BpbmxvY2tfd2Fp
dC5oIgotICAiaW50ZXJuYWwvc3lzaW5mby5oIgotICAiaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5
LmgiCi0gICJpbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5oIgotICAiaW50ZXJuYWwvdHNhbl9tdXRl
eF9pbnRlcmZhY2UuaCIKLSAgImludGVybmFsL3VuYWxpZ25lZF9hY2Nlc3MuaCIKLSAgImludGVy
bmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oIgotKQotCi0KLSMgYWJzbF9iYXNlIG1haW4gbGlicmFy
eQotbGlzdChBUFBFTkQgQkFTRV9TUkMKLSAgImludGVybmFsL2N5Y2xlY2xvY2suY2MiCi0gICJp
bnRlcm5hbC9yYXdfbG9nZ2luZy5jYyIKLSAgImludGVybmFsL3NwaW5sb2NrLmNjIgotICAiaW50
ZXJuYWwvc3lzaW5mby5jYyIKLSAgImludGVybmFsL3RocmVhZF9pZGVudGl0eS5jYyIKLSAgImlu
dGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5jYyIKLSAgImludGVybmFsL2xvd19sZXZlbF9hbGxv
Yy5jYyIKLSAgJHtCQVNFX1BVQkxJQ19IRUFERVJTfQotICAke0JBU0VfSU5URVJOQUxfSEVBREVS
U30KLSkKLQotYWJzbF9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX2Jhc2UKLSAgU09VUkNF
UwotICAgICR7QkFTRV9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsX2R5bmFtaWNf
YW5ub3RhdGlvbnMKLSAgICBhYnNsX3NwaW5sb2NrX3dhaXQKLSAgRVhQT1JUX05BTUUKLSAgICBi
YXNlCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBhdG9taWNfaG9vaworICBIRFJTCisg
ICAgImludGVybmFsL2F0b21pY19ob29rLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRf
Q09QVFN9CiApCiAKLSMgdGhyb3cgZGVsZWdhdGUgbGlicmFyeQotc2V0KFRIUk9XX0RFTEVHQVRF
X1NSQyAiaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuY2MiKQotCi1hYnNsX2xpYnJhcnkoCi0gIFRB
UkdFVAotICAgIGFic2xfdGhyb3dfZGVsZWdhdGUKLSAgU09VUkNFUwotICAgICR7VEhST1dfREVM
RUdBVEVfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtUSFJPV19ERUxFR0FURV9QVUJM
SUNfTElCUkFSSUVTfQotICBQUklWQVRFX0NPTVBJTEVfRkxBR1MKLSAgICAke0FCU0xfRVhDRVBU
SU9OU19GTEFHfQotICBFWFBPUlRfTkFNRQotICAgIHRocm93X2RlbGVnYXRlCithYnNsX2NjX2xp
YnJhcnkoCisgIE5BTUUKKyAgICBsb2dfc2V2ZXJpdHkKKyAgSERSUworICAgICJsb2dfc2V2ZXJp
dHkuaCIKKyAgU1JDUworICAgICJsb2dfc2V2ZXJpdHkuY2MiCisgIERFUFMKKyAgICBhYnNsOjpj
b3JlX2hlYWRlcnMKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KICkKIAotaWYo
QlVJTERfVEVTVElORykKLSAgIyBleGNlcHRpb24tc2FmZXR5IHRlc3RpbmcgbGlicmFyeQotICBz
ZXQoRVhDRVBUSU9OX1NBRkVUWV9URVNUSU5HX1NSQwotICAgICJpbnRlcm5hbC9leGNlcHRpb25f
c2FmZXR5X3Rlc3RpbmcuaCIKLSAgICAiaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5n
LmNjIgotICApCi0gIHNldChFWENFUFRJT05fU0FGRVRZX1RFU1RJTkdfUFVCTElDX0xJQlJBUklF
UwotICAgICR7QUJTTF9URVNUX0NPTU1PTl9MSUJSQVJJRVN9Ci0gICAgYWJzbDo6YmFzZQotICAg
IGFic2w6Om1lbW9yeQotICAgIGFic2w6Om1ldGEKLSAgICBhYnNsOjpzdHJpbmdzCi0gICAgYWJz
bDo6b3B0aW9uYWwKLSAgICBndGVzdAotICApCi0KLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0g
ICAgYWJzbF9iYXNlX2ludGVybmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZwotICBTT1VSQ0VT
Ci0gICAgJHtFWENFUFRJT05fU0FGRVRZX1RFU1RJTkdfU1JDfQotICBQVUJMSUNfTElCUkFSSUVT
Ci0gICAgJHtFWENFUFRJT05fU0FGRVRZX1RFU1RJTkdfUFVCTElDX0xJQlJBUklFU30KLSAgUFJJ
VkFURV9DT01QSUxFX0ZMQUdTCi0gICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KK2Fic2xfY2Nf
bGlicmFyeSgKKyAgTkFNRQorICAgIHJhd19sb2dnaW5nX2ludGVybmFsCisgIENPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfQ09QVFN9CiApCi1lbmRpZigpCiAKLQotIyBkeW5hbWljX2Fubm90YXRp
b25zIGxpYnJhcnkKLXNldChEWU5BTUlDX0FOTk9UQVRJT05TX1NSQyAiZHluYW1pY19hbm5vdGF0
aW9ucy5jYyIpCi0KLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9keW5hbWljX2Fu
bm90YXRpb25zCi0gIFNPVVJDRVMKLSAgICAke0RZTkFNSUNfQU5OT1RBVElPTlNfU1JDfQorYWJz
bF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgc3BpbmxvY2tfd2FpdAorICBIRFJTCisgICAgImlu
dGVybmFsL3NjaGVkdWxpbmdfbW9kZS5oIgorICAgICJpbnRlcm5hbC9zcGlubG9ja193YWl0Lmgi
CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvc3BpbmxvY2tfYWthcm9zLmluYyIKKyAgICAiaW50ZXJu
YWwvc3BpbmxvY2tfbGludXguaW5jIgorICAgICJpbnRlcm5hbC9zcGlubG9ja19wb3NpeC5pbmMi
CisgICAgImludGVybmFsL3NwaW5sb2NrX3dhaXQuY2MiCisgICAgImludGVybmFsL3NwaW5sb2Nr
X3dpbjMyLmluYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUwor
ICAgIGFic2w6OmNvcmVfaGVhZGVycwogKQogCi0KLSMgc3BpbmxvY2tfd2FpdCBsaWJyYXJ5Ci1z
ZXQoU1BJTkxPQ0tfV0FJVF9TUkMgImludGVybmFsL3NwaW5sb2NrX3dhaXQuY2MiKQotCi1hYnNs
X2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfc3BpbmxvY2tfd2FpdAotICBTT1VSQ0VTCi0g
ICAgJHtTUElOTE9DS19XQUlUX1NSQ30KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGNv
bmZpZworICBIRFJTCisgICAgImNvbmZpZy5oIgorICAgICJwb2xpY3lfY2hlY2tzLmgiCisgIENP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIFBVQkxJQwogKQogCi0KLSMgbWFsbG9j
X2ludGVybmFsIGxpYnJhcnkKLWxpc3QoQVBQRU5EIE1BTExPQ19JTlRFUk5BTF9TUkMKLSAgImlu
dGVybmFsL2xvd19sZXZlbF9hbGxvYy5jYyIKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAg
IGR5bmFtaWNfYW5ub3RhdGlvbnMKKyAgSERSUworICAgICJkeW5hbWljX2Fubm90YXRpb25zLmgi
CisgIFNSQ1MKKyAgICAiZHluYW1pY19hbm5vdGF0aW9ucy5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9DT1BUU30KKyAgREVGSU5FUworICAgICJfX0NMQU5HX1NVUFBPUlRfRFlOX0FO
Tk9UQVRJT05fXyIKKyAgUFVCTElDCiApCiAKLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAg
YWJzbF9tYWxsb2NfaW50ZXJuYWwKLSAgU09VUkNFUwotICAgICR7TUFMTE9DX0lOVEVSTkFMX1NS
Q30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2xfZHluYW1pY19hbm5vdGF0aW9ucworYWJz
bF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgY29yZV9oZWFkZXJzCisgIEhEUlMKKyAgICAiYXR0
cmlidXRlcy5oIgorICAgICJjb25zdF9pbml0LmgiCisgICAgIm1hY3Jvcy5oIgorICAgICJvcHRp
bWl6YXRpb24uaCIKKyAgICAicG9ydC5oIgorICAgICJ0aHJlYWRfYW5ub3RhdGlvbnMuaCIKKyAg
ICAiaW50ZXJuYWwvdGhyZWFkX2Fubm90YXRpb25zLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb25maWcKKyAgUFVCTElDCiApCiAKLQot
Ci0jCi0jIyBURVNUUwotIwotCi0jIGNhbGwgb25jZSB0ZXN0Ci1zZXQoQVRPTUlDX0hPT0tfVEVT
VF9TUkMgImludGVybmFsL2F0b21pY19ob29rX3Rlc3QuY2MiKQotc2V0KEFUT01JQ19IT09LX1RF
U1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAot
ICAgIGF0b21pY19ob29rX3Rlc3QKLSAgU09VUkNFUwotICAgICR7QVRPTUlDX0hPT0tfVEVTVF9T
UkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0FUT01JQ19IT09LX1RFU1RfUFVCTElDX0xJ
QlJBUklFU30KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIG1hbGxvY19pbnRlcm5hbAor
ICBIRFJTCisgICAgImludGVybmFsL2RpcmVjdF9tbWFwLmgiCisgICAgImludGVybmFsL2xvd19s
ZXZlbF9hbGxvYy5oIgorICBTUkNTCisgICAgImludGVybmFsL2xvd19sZXZlbF9hbGxvYy5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJh
c2UKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpk
eW5hbWljX2Fubm90YXRpb25zCisgICAgYWJzbDo6c3BpbmxvY2tfd2FpdAorICAgIFRocmVhZHM6
OlRocmVhZHMKICkKIAotCi0jIGNhbGwgb25jZSB0ZXN0Ci1zZXQoQ0FMTF9PTkNFX1RFU1RfU1JD
ICJjYWxsX29uY2VfdGVzdC5jYyIpCi1zZXQoQ0FMTF9PTkNFX1RFU1RfUFVCTElDX0xJQlJBUklF
UyBhYnNsOjpiYXNlIGFic2w6OnN5bmNocm9uaXphdGlvbikKLQotYWJzbF90ZXN0KAotICBUQVJH
RVQKLSAgICBjYWxsX29uY2VfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtDQUxMX09OQ0VfVEVTVF9T
UkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0NBTExfT05DRV9URVNUX1BVQkxJQ19MSUJS
QVJJRVN9CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBiYXNlX2ludGVybmFsCisgIEhE
UlMKKyAgICAiaW50ZXJuYWwvaGlkZV9wdHIuaCIKKyAgICAiaW50ZXJuYWwvaWRlbnRpdHkuaCIK
KyAgICAiaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxlLmgiCisgICAgImludGVybmFsL2ludm9rZS5o
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6
dHlwZV90cmFpdHMKICkKIAotCi0jIHRlc3QgYml0X2Nhc3RfdGVzdAotc2V0KEJJVF9DQVNUX1RF
U1RfU1JDICJiaXRfY2FzdF90ZXN0LmNjIikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBi
aXRfY2FzdF90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0JJVF9DQVNUX1RFU1RfU1JDfQorYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgYmFzZQorICBIRFJTCisgICAgImNhbGxfb25jZS5oIgor
ICAgICJjYXN0cy5oIgorICAgICJpbnRlcm5hbC9jeWNsZWNsb2NrLmgiCisgICAgImludGVybmFs
L2xvd19sZXZlbF9zY2hlZHVsaW5nLmgiCisgICAgImludGVybmFsL3Blcl90aHJlYWRfdGxzLmgi
CisgICAgImludGVybmFsL3Jhd19sb2dnaW5nLmgiCisgICAgImludGVybmFsL3NwaW5sb2NrLmgi
CisgICAgImludGVybmFsL3N5c2luZm8uaCIKKyAgICAiaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5
LmgiCisgICAgImludGVybmFsL3RzYW5fbXV0ZXhfaW50ZXJmYWNlLmgiCisgICAgImludGVybmFs
L3Vuc2NhbGVkY3ljbGVjbG9jay5oIgorICAgICJsb2dfc2V2ZXJpdHkuaCIKKyAgU1JDUworICAg
ICJpbnRlcm5hbC9jeWNsZWNsb2NrLmNjIgorICAgICJpbnRlcm5hbC9yYXdfbG9nZ2luZy5jYyIK
KyAgICAiaW50ZXJuYWwvc3BpbmxvY2suY2MiCisgICAgImludGVybmFsL3N5c2luZm8uY2MiCisg
ICAgImludGVybmFsL3RocmVhZF9pZGVudGl0eS5jYyIKKyAgICAiaW50ZXJuYWwvdW5zY2FsZWRj
eWNsZWNsb2NrLmNjIgorICAgICJsb2dfc2V2ZXJpdHkuY2MiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjphdG9taWNfaG9vaworICAgIGFic2w6
OmJhc2VfaW50ZXJuYWwKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMK
KyAgICBhYnNsOjpkeW5hbWljX2Fubm90YXRpb25zCisgICAgYWJzbDo6bG9nX3NldmVyaXR5Cisg
ICAgYWJzbDo6c3BpbmxvY2tfd2FpdAorICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAgVGhyZWFk
czo6VGhyZWFkcworICBQVUJMSUMKICkKIAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAg
dGhyb3dfZGVsZWdhdGUKKyAgSERSUworICAgICJpbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5oIgor
ICBTUkNTCisgICAgImludGVybmFsL3Rocm93X2RlbGVnYXRlLmNjIgorICBDT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0NPUFRTfQorICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9CisgIERFUFMK
KyAgICBhYnNsOjpiYXNlCispCiAKLSMgdGVzdCBhYnNsX3Rocm93X2RlbGVnYXRlX3Rlc3QKLXNl
dChUSFJPV19ERUxFR0FURV9URVNUX1NSQyAidGhyb3dfZGVsZWdhdGVfdGVzdC5jYyIpCi1zZXQo
VEhST1dfREVMRUdBVEVfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbF90aHJv
d19kZWxlZ2F0ZSkKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICB0aHJvd19kZWxlZ2F0ZV90
ZXN0Ci0gIFNPVVJDRVMKLSAgICAke1RIUk9XX0RFTEVHQVRFX1RFU1RfU1JDfQotICBQVUJMSUNf
TElCUkFSSUVTCi0gICAgJHtUSFJPV19ERUxFR0FURV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Cith
YnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBleGNlcHRpb25fdGVzdGluZworICBIRFJTCisg
ICAgImludGVybmFsL2V4Y2VwdGlvbl90ZXN0aW5nLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb25maWcKKyAgICBndGVzdAorICBURVNU
T05MWQogKQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBwcmV0dHlfZnVuY3Rpb24K
KyAgSERSUworICAgICJpbnRlcm5hbC9wcmV0dHlfZnVuY3Rpb24uaCIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfREVGQVVMVF9DT1BUU30KKykKIAotIyB0ZXN0IGludm9rZV90ZXN0Ci1zZXQoSU5WT0tF
X1RFU1RfU1JDICJpbnZva2VfdGVzdC5jYyIpCi1zZXQoSU5WT0tFX1RFU1RfUFVCTElDX0xJQlJB
UklFUyBhYnNsOjpzdHJpbmdzKQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZXhjZXB0
aW9uX3NhZmV0eV90ZXN0aW5nCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0
eV90ZXN0aW5nLmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0
aW5nLmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICAgICR7QUJTTF9FWENF
UFRJT05TX0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5L
T1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OnByZXR0eV9mdW5jdGlv
bgorICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6Om1ldGEKKyAgICBhYnNsOjpzdHJpbmdzCisg
ICAgYWJzbDo6dXRpbGl0eQorICAgIGd0ZXN0CisgIFRFU1RPTkxZCispCiAKLWFic2xfdGVzdCgK
LSAgVEFSR0VUCi0gICAgaW52b2tlX3Rlc3QKLSAgU09VUkNFUwotICAgICR7SU5WT0tFX1RFU1Rf
U1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtJTlZPS0VfVEVTVF9QVUJMSUNfTElCUkFS
SUVTfQorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgYWJzbF9leGNlcHRpb25fc2FmZXR5X3Rl
c3RpbmdfdGVzdAorICBTUkNTCisgICAgImV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZ190ZXN0LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICAgICR7QUJTTF9FWENFUFRJT05T
X0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30K
KyAgREVQUworICAgIGFic2w6OmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZworICAgIGFic2w6Om1l
bW9yeQorICAgIGd0ZXN0X21haW4KICkKIAorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgYXRv
bWljX2hvb2tfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL2F0b21pY19ob29rX3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjphdG9t
aWNfaG9vaworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGd0ZXN0X21haW4KKykKIAotIyB0
ZXN0IGlubGluZV92YXJpYWJsZV90ZXN0Ci1saXN0KEFQUEVORCBJTkxJTkVfVkFSSUFCTEVfVEVT
VF9TUkMKLSAgImludGVybmFsL2lubGluZV92YXJpYWJsZV90ZXN0aW5nLmgiCi0gICJpbmxpbmVf
dmFyaWFibGVfdGVzdC5jYyIKLSAgImlubGluZV92YXJpYWJsZV90ZXN0X2EuY2MiCi0gICJpbmxp
bmVfdmFyaWFibGVfdGVzdF9iLmNjIgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgYml0X2Nh
c3RfdGVzdAorICBTUkNTCisgICAgImJpdF9jYXN0X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9o
ZWFkZXJzCisgICAgZ3Rlc3RfbWFpbgogKQogCi1zZXQoSU5MSU5FX1ZBUklBQkxFX1RFU1RfUFVC
TElDX0xJQlJBUklFUyBhYnNsOjpiYXNlKQorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgdGhy
b3dfZGVsZWdhdGVfdGVzdAorICBTUkNTCisgICAgInRocm93X2RlbGVnYXRlX3Rlc3QuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisg
ICAgYWJzbDo6dGhyb3dfZGVsZWdhdGUKKyAgICBndGVzdF9tYWluCispCiAKLWFic2xfdGVzdCgK
LSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBpbmxpbmVfdmFyaWFibGVfdGVz
dAotICBTT1VSQ0VTCi0gICAgJHtJTkxJTkVfVkFSSUFCTEVfVEVTVF9TUkN9Ci0gIFBVQkxJQ19M
SUJSQVJJRVMKLSAgICAke0lOTElORV9WQVJJQUJMRV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Cisg
IFNSQ1MKKyAgICAiaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxlX3Rlc3RpbmcuaCIKKyAgICAiaW5s
aW5lX3ZhcmlhYmxlX3Rlc3QuY2MiCisgICAgImlubGluZV92YXJpYWJsZV90ZXN0X2EuY2MiCisg
ICAgImlubGluZV92YXJpYWJsZV90ZXN0X2IuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlX2ludGVybmFsCisgICAgZ3Rlc3RfbWFpbgog
KQogCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBpbnZva2VfdGVzdAorICBTUkNTCisgICAg
Imludm9rZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBT
CisgICAgYWJzbDo6YmFzZV9pbnRlcm5hbAorICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6OnN0
cmluZ3MKKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4KKykKIAotIyB0ZXN0IHNwaW5sb2NrX3Rl
c3RfY29tbW9uCi1zZXQoU1BJTkxPQ0tfVEVTVF9DT01NT05fU1JDICJzcGlubG9ja190ZXN0X2Nv
bW1vbi5jYyIpCi1zZXQoU1BJTkxPQ0tfVEVTVF9DT01NT05fUFVCTElDX0xJQlJBUklFUyBhYnNs
OjpiYXNlIGFic2w6OnN5bmNocm9uaXphdGlvbikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fi
c2xfY2NfbGlicmFyeSgKKyAgTkFNRQogICAgIHNwaW5sb2NrX3Rlc3RfY29tbW9uCi0gIFNPVVJD
RVMKLSAgICAke1NQSU5MT0NLX1RFU1RfQ09NTU9OX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwot
ICAgICR7U1BJTkxPQ0tfVEVTVF9DT01NT05fUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAg
ICJzcGlubG9ja190ZXN0X2NvbW1vbi5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BU
U30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBh
YnNsOjpzcGlubG9ja193YWl0CisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgZ3Rlc3QK
KyAgVEVTVE9OTFkKICkKIAotCi0jIHRlc3Qgc3BpbmxvY2tfdGVzdAotc2V0KFNQSU5MT0NLX1RF
U1RfU1JDICJzcGlubG9ja190ZXN0X2NvbW1vbi5jYyIpCi1zZXQoU1BJTkxPQ0tfVEVTVF9QVUJM
SUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbDo6c3luY2hyb25pemF0aW9uKQotCi1hYnNsX3Rl
c3QoCi0gIFRBUkdFVAorIyBPbiBiYXplbCBCVUlMRCB0aGlzIHRhcmdldCB1c2UgImFsd2F5c2xp
bmsgPSAxIiB3aGljaCBpcyBub3QgaW1wbGVtZW50ZWQgaGVyZQorYWJzbF9jY190ZXN0KAorICBO
QU1FCiAgICAgc3BpbmxvY2tfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtTUElOTE9DS19URVNUX1NS
Q30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7U1BJTkxPQ0tfVEVTVF9QVUJMSUNfTElCUkFS
SUVTfQorICBTUkNTCisgICAgInNwaW5sb2NrX3Rlc3RfY29tbW9uLmNjIgorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNv
cmVfaGVhZGVycworICAgIGFic2w6OnNwaW5sb2NrX3dhaXQKKyAgICBhYnNsOjpzeW5jaHJvbml6
YXRpb24KKyAgICBndGVzdF9tYWluCiApCiAKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAg
IGVuZGlhbgorICBIRFJTCisgICAgImludGVybmFsL2VuZGlhbi5oIgorICAgICJpbnRlcm5hbC91
bmFsaWduZWRfYWNjZXNzLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgUFVCTElD
CispCiAKLSMgdGVzdCBlbmRpYW5fdGVzdAotc2V0KEVORElBTl9URVNUX1NSQyAiaW50ZXJuYWwv
ZW5kaWFuX3Rlc3QuY2MiKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAor
ICBOQU1FCiAgICAgZW5kaWFuX3Rlc3QKLSAgU09VUkNFUwotICAgICR7RU5ESUFOX1RFU1RfU1JD
fQorICBTUkNTCisgICAgImludGVybmFsL2VuZGlhbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7
QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvbmZp
ZworICAgIGFic2w6OmVuZGlhbgorICAgIGd0ZXN0X21haW4KICkKIAotCi0jIHRlc3QgY29uZmln
X3Rlc3QKLXNldChDT05GSUdfVEVTVF9TUkMgImNvbmZpZ190ZXN0LmNjIikKLXNldChDT05GSUdf
VEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbDo6c3luY2hyb25pemF0aW9uKQot
YWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIGNvbmZpZ190
ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0NPTkZJR19URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklF
UwotICAgICR7Q09ORklHX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJjb25m
aWdfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAg
IGFic2w6OmNvbmZpZworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorICAgIGd0ZXN0X21haW4K
ICkKIAorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgY2FsbF9vbmNlX3Rlc3QKKyAgU1JDUwor
ICAgICJjYWxsX29uY2VfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNs
OjpzeW5jaHJvbml6YXRpb24KKyAgICBndGVzdF9tYWluCispCiAKLSMgdGVzdCByYXdfbG9nZ2lu
Z190ZXN0Ci1zZXQoUkFXX0xPR0dJTkdfVEVTVF9TUkMgInJhd19sb2dnaW5nX3Rlc3QuY2MiKQot
c2V0KFJBV19MT0dHSU5HX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2w6OnN0
cmluZ3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAg
ICByYXdfbG9nZ2luZ190ZXN0Ci0gIFNPVVJDRVMKLSAgICAke1JBV19MT0dHSU5HX1RFU1RfU1JD
fQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtSQVdfTE9HR0lOR19URVNUX1BVQkxJQ19MSUJS
QVJJRVN9CisgIFNSQ1MKKyAgICAicmF3X2xvZ2dpbmdfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpzdHJp
bmdzCisgICAgZ3Rlc3RfbWFpbgogKQogCi0KLSMgdGVzdCBzeXNpbmZvX3Rlc3QKLXNldChTWVNJ
TkZPX1RFU1RfU1JDICJpbnRlcm5hbC9zeXNpbmZvX3Rlc3QuY2MiKQotc2V0KFNZU0lORk9fVEVT
VF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbDo6c3luY2hyb25pemF0aW9uKQotCi1h
YnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3lzaW5mb190
ZXN0Ci0gIFNPVVJDRVMKLSAgICAke1NZU0lORk9fVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICAke1NZU0lORk9fVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgImlu
dGVybmFsL3N5c2luZm9fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKyAgICBn
dGVzdF9tYWluCiApCiAKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGxvd19sZXZlbF9hbGxv
Y190ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jX3Rlc3QuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjptYWxsb2Nf
aW50ZXJuYWwKKyAgICBUaHJlYWRzOjpUaHJlYWRzCispCiAKLSMgdGVzdCBsb3dfbGV2ZWxfYWxs
b2NfdGVzdAotc2V0KExPV19MRVZFTF9BTExPQ19URVNUX1NSQyAiaW50ZXJuYWwvbG93X2xldmVs
X2FsbG9jX3Rlc3QuY2MiKQotc2V0KExPV19MRVZFTF9BTExPQ19URVNUX1BVQkxJQ19MSUJSQVJJ
RVMgYWJzbDo6YmFzZSkKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHRocmVhZF9pZGVudGl0
eV90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5X3Rlc3QuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisg
ICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgVGhy
ZWFkczo6VGhyZWFkcworICAgIGd0ZXN0X21haW4KKykKIAotYWJzbF90ZXN0KAotICBUQVJHRVQK
LSAgICBsb3dfbGV2ZWxfYWxsb2NfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtMT1dfTEVWRUxfQUxM
T0NfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0xPV19MRVZFTF9BTExPQ19U
RVNUX1BVQkxJQ19MSUJSQVJJRVN9CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBiaXRz
CisgIEhEUlMKKyAgICAiaW50ZXJuYWwvYml0cy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCiApCiAKK2Fic2xfY2Nf
dGVzdCgKKyAgTkFNRQorICAgIGJpdHNfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL2JpdHNf
dGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFi
c2w6OmJpdHMKKyAgICBndGVzdF9tYWluCispCiAKLSMgdGVzdCB0aHJlYWRfaWRlbnRpdHlfdGVz
dAotc2V0KFRIUkVBRF9JREVOVElUWV9URVNUX1NSQyAiaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5
X3Rlc3QuY2MiKQotc2V0KFRIUkVBRF9JREVOVElUWV9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJz
bDo6YmFzZSBhYnNsOjpzeW5jaHJvbml6YXRpb24pCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUK
KyAgICBzY29wZWRfc2V0X2VudgorICBTUkNTCisgICAgImludGVybmFsL3Njb3BlZF9zZXRfZW52
LmNjIgorICBIRFJTCisgICAgImludGVybmFsL3Njb3BlZF9zZXRfZW52LmgiCisgIENPUFRTCisg
ICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCispCiAKLWFi
c2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgdGhyZWFkX2lkZW50aXR5X3Rlc3QKLSAgU09VUkNFUwot
ICAgICR7VEhSRUFEX0lERU5USVRZX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAg
JHtUSFJFQURfSURFTlRJVFlfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorYWJzbF9jY190ZXN0KAor
ICBOQU1FCisgICAgc2NvcGVkX3NldF9lbnZfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3Nj
b3BlZF9zZXRfZW52X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpzY29wZWRfc2V0X2VudgorICAgIGd0ZXN0X21haW4KICkKIAotI3Rl
c3QgZXhjZXB0aW9uc19zYWZldHlfdGVzdGluZ190ZXN0Ci1zZXQoRVhDRVBUSU9OX1NBRkVUWV9U
RVNUSU5HX1RFU1RfU1JDICJleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdC5jYyIpCi1zZXQo
RVhDRVBUSU9OX1NBRkVUWV9URVNUSU5HX1RFU1RfUFVCTElDX0xJQlJBUklFUwotICBhYnNsOjpi
YXNlCi0gIGFic2xfYmFzZV9pbnRlcm5hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcKLSAgYWJz
bDo6bWVtb3J5Ci0gIGFic2w6Om1ldGEKLSAgYWJzbDo6c3RyaW5ncwotICBhYnNsOjpvcHRpb25h
bAorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgY21ha2VfdGhyZWFkX3Rlc3QKKyAgU1JDUwor
ICAgICJpbnRlcm5hbC9jbWFrZV90aHJlYWRfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xf
VEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKICkKIAotYWJzbF90ZXN0KAotICBU
QVJHRVQKLSAgICBhYnNsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZ190ZXN0Ci0gIFNPVVJDRVMK
LSAgICAke0VYQ0VQVElPTl9TQUZFVFlfVEVTVElOR19URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJB
UklFUwotICAgICR7RVhDRVBUSU9OX1NBRkVUWV9URVNUSU5HX1RFU1RfUFVCTElDX0xJQlJBUklF
U30KLSAgUFJJVkFURV9DT01QSUxFX0ZMQUdTCi0gICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30K
K2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGxvZ19zZXZlcml0eV90ZXN0CisgIFNSQ1MKKyAg
ICAibG9nX3NldmVyaXR5X3Rlc3QuY2MiCisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJz
bDo6bG9nX3NldmVyaXR5CisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCiApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvYXR0cmlidXRlcy5oCmluZGV4
IGU4NTAwMjI0NDQzYmNlNWJmNjViYTVjZTFmY2QwMGQ4YzcwNDRjOGYuLmE3ZGE2MmFmNzNlNTZj
OGZiNGIxNDQ4MTZhYjRkYjZhOTlhODVkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvYXR0cmli
dXRlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvYXR0cmlidXRlcy5oCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC04MCw3ICs4MCw3IEBACiAvLwogLy8gQSBmdW5jdGlv
bi1saWtlIGZlYXR1cmUgY2hlY2tpbmcgbWFjcm8gdGhhdCBhY2NlcHRzIEMrKzExIHN0eWxlIGF0
dHJpYnV0ZXMuCiAvLyBJdCdzIGEgd3JhcHBlciBhcm91bmQgYF9faGFzX2NwcF9hdHRyaWJ1dGVg
LCBkZWZpbmVkIGJ5IElTTyBDKysgU0QtNgotLy8gKGh0dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29t
L3cvY3BwL2V4cGVyaW1lbnRhbC9mZWF0dXJlX3Rlc3QpLiBJZiB3ZSBkb24ndAorLy8gKGh0dHBz
Oi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9leHBlcmltZW50YWwvZmVhdHVyZV90ZXN0KS4g
SWYgd2UgZG9uJ3QKIC8vIGZpbmQgYF9faGFzX2NwcF9hdHRyaWJ1dGVgLCB3aWxsIGV2YWx1YXRl
IHRvIDAuCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykgJiYgZGVmaW5lZChfX2hhc19jcHBfYXR0
cmlidXRlKQogLy8gTk9URTogcmVxdWlyaW5nIF9fY3BsdXNwbHVzIGFib3ZlIHNob3VsZCBub3Qg
YmUgbmVjZXNzYXJ5LCBidXQKQEAgLTEwMiw3ICsxMDIsNyBAQAogLy8KIC8vIFRlbGxzIHRoZSBj
b21waWxlciB0byBwZXJmb3JtIGBwcmludGZgIGZvcm1hdCBzdHJpbmcgY2hlY2tpbmcgaWYgdGhl
CiAvLyBjb21waWxlciBzdXBwb3J0cyBpdDsgc2VlIHRoZSAnZm9ybWF0JyBhdHRyaWJ1dGUgaW4K
LS8vIDxodHRwOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC43LjAvZ2NjL0Z1bmN0aW9u
LUF0dHJpYnV0ZXMuaHRtbD4uCisvLyA8aHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2dj
Yy00LjcuMC9nY2MvRnVuY3Rpb24tQXR0cmlidXRlcy5odG1sPi4KIC8vCiAvLyBOb3RlOiBBcyB0
aGUgR0NDIG1hbnVhbCBzdGF0ZXMsICJbc11pbmNlIG5vbi1zdGF0aWMgQysrIG1ldGhvZHMKIC8v
IGhhdmUgYW4gaW1wbGljaXQgJ3RoaXMnIGFyZ3VtZW50LCB0aGUgYXJndW1lbnRzIG9mIHN1Y2gg
bWV0aG9kcwpAQCAtMTU1LDcgKzE1NSwxMiBAQAogLy8gQUJTTF9BVFRSSUJVVEVfV0VBSwogLy8K
IC8vIFRhZ3MgYSBmdW5jdGlvbiBhcyB3ZWFrIGZvciB0aGUgcHVycG9zZXMgb2YgY29tcGlsYXRp
b24gYW5kIGxpbmtpbmcuCi0jaWYgQUJTTF9IQVZFX0FUVFJJQlVURSh3ZWFrKSB8fCAoZGVmaW5l
ZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKSkKKy8vIFdlYWsgYXR0cmlidXRlcyBj
dXJyZW50bHkgZG8gbm90IHdvcmsgcHJvcGVybHkgaW4gTExWTSdzIFdpbmRvd3MgYmFja2VuZCwK
Ky8vIHNvIGRpc2FibGUgdGhlbSB0aGVyZS4gU2VlIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzc1OTgKKy8vIGZvciBmdXRoZXIgaW5mb3JtYXRpb24uCisjaWYgKEFCU0xf
SEFWRV9BVFRSSUJVVEUod2VhaykgfHwgXAorICAgICAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRl
ZmluZWQoX19jbGFuZ19fKSkpICYmIFwKKyAgICAhKGRlZmluZWQoX19sbHZtX18pICYmIGRlZmlu
ZWQoX1dJTjMyKSkKICN1bmRlZiBBQlNMX0FUVFJJQlVURV9XRUFLCiAjZGVmaW5lIEFCU0xfQVRU
UklCVVRFX1dFQUsgX19hdHRyaWJ1dGVfXygod2VhaykpCiAjZGVmaW5lIEFCU0xfSEFWRV9BVFRS
SUJVVEVfV0VBSyAxCkBAIC0yMjcsNyArMjMyLDcgQEAKIC8vIG91dCBvZiBib3VuZHMgb3IgZG9l
cyBvdGhlciBzY2FyeSB0aGluZ3Mgd2l0aCBtZW1vcnkuCiAvLyBOT1RFOiBHQ0Mgc3VwcG9ydHMg
QWRkcmVzc1Nhbml0aXplcihhc2FuKSBzaW5jZSA0LjguCiAvLyBodHRwczovL2djYy5nbnUub3Jn
L2djYy00LjgvY2hhbmdlcy5odG1sCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChB
RERSRVNTX1NBTklUSVpFUikKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQogI2RlZmluZSBBQlNMX0FU
VFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX2Fk
ZHJlc3MpKQogI2Vsc2UKICNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVT
UwpAQCAtMjQxLDcgKzI0Niw3IEBACiAvLyBUaGlzIGF0dHJpYnV0ZSBpcyBzaW1pbGFyIHRvIHRo
ZSBBRERSRVNTX1NBTklUSVpFUiBhdHRyaWJ1dGUgYWJvdmUsIGJ1dCBkZWFscwogLy8gd2l0aCBp
bml0aWFsaXplZC1uZXNzIHJhdGhlciB0aGFuIGFkZHJlc3NhYmlsaXR5IGlzc3Vlcy4KIC8vIE5P
VEU6IE1lbW9yeVNhbml0aXplcihtc2FuKSBpcyBzdXBwb3J0ZWQgYnkgQ2xhbmcgYnV0IG5vdCBH
Q0MuCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChNRU1PUllfU0FOSVRJWkVSKQor
I2lmIGRlZmluZWQoX19jbGFuZ19fKQogI2RlZmluZSBBQlNMX0FUVFJJQlVURV9OT19TQU5JVEla
RV9NRU1PUlkgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKICNlbHNlCiAjZGVm
aW5lIEFCU0xfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWQpAQCAtMjUyLDcgKzI1Nyw3IEBA
CiAvLyBUZWxscyB0aGUgVGhyZWFkU2FuaXRpemVyIHRvIG5vdCBpbnN0cnVtZW50IGEgZ2l2ZW4g
ZnVuY3Rpb24uCiAvLyBOT1RFOiBHQ0Mgc3VwcG9ydHMgVGhyZWFkU2FuaXRpemVyKHRzYW4pIHNp
bmNlIDQuOC4KIC8vIGh0dHBzOi8vZ2NjLmdudS5vcmcvZ2NjLTQuOC9jaGFuZ2VzLmh0bWwKLSNp
ZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpCisjaWYgZGVm
aW5lZChfX0dOVUNfXykKICNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFE
IF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX3RocmVhZCkpCiAjZWxzZQogI2RlZmluZSBBQlNM
X0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQUQKQEAgLTI4Miw2ICsyODcsMTcgQEAKICNkZWZp
bmUgQUJTTF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQ0ZJCiAjZW5kaWYKIAorLy8gQUJTTF9BVFRS
SUJVVEVfTk9fU0FOSVRJWkVfU0FGRVNUQUNLCisvLworLy8gVGVsbHMgdGhlIFNhZmVTdGFjayB0
byBub3QgaW5zdHJ1bWVudCBhIGdpdmVuIGZ1bmN0aW9uLgorLy8gU2VlIGh0dHBzOi8vY2xhbmcu
bGx2bS5vcmcvZG9jcy9TYWZlU3RhY2suaHRtbCBmb3IgZGV0YWlscy4KKyNpZiBkZWZpbmVkKF9f
R05VQ19fKSAmJiBkZWZpbmVkKFNBRkVTVEFDS19TQU5JVElaRVIpCisjZGVmaW5lIEFCU0xfQVRU
UklCVVRFX05PX1NBTklUSVpFX1NBRkVTVEFDSyBcCisgIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0
aXplKCJzYWZlLXN0YWNrIikpKQorI2Vsc2UKKyNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfTk9fU0FO
SVRJWkVfU0FGRVNUQUNLCisjZW5kaWYKKwogLy8gQUJTTF9BVFRSSUJVVEVfUkVUVVJOU19OT05O
VUxMCiAvLwogLy8gVGVsbHMgdGhlIGNvbXBpbGVyIHRoYXQgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9u
IG5ldmVyIHJldHVybnMgYSBudWxsIHBvaW50ZXIuCkBAIC0yOTYsMTMgKzMxMiwxMyBAQAogCiAv
LyBBQlNMX0hBVkVfQVRUUklCVVRFX1NFQ1RJT04KIC8vCi0vLyBJbmRpY2F0ZXMgd2hldGhlciBs
YWJlbGVkIHNlY3Rpb25zIGFyZSBzdXBwb3J0ZWQuIExhYmVsZWQgc2VjdGlvbnMgYXJlIG5vdAot
Ly8gc3VwcG9ydGVkIG9uIERhcndpbi9pT1MuCisvLyBJbmRpY2F0ZXMgd2hldGhlciBsYWJlbGVk
IHNlY3Rpb25zIGFyZSBzdXBwb3J0ZWQuIFdlYWsgc3ltYm9sIHN1cHBvcnQgaXMKKy8vIGEgcHJl
cmVxdWlzaXRlLiBMYWJlbGVkIHNlY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIG9uIERhcndpbi9p
T1MuCiAjaWZkZWYgQUJTTF9IQVZFX0FUVFJJQlVURV9TRUNUSU9OCiAjZXJyb3IgQUJTTF9IQVZF
X0FUVFJJQlVURV9TRUNUSU9OIGNhbm5vdCBiZSBkaXJlY3RseSBzZXQKICNlbGlmIChBQlNMX0hB
VkVfQVRUUklCVVRFKHNlY3Rpb24pIHx8ICAgICAgICAgICAgICAgIFwKICAgICAgICAoZGVmaW5l
ZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKSkpICYmIFwKLSAgICAhZGVmaW5lZChf
X0FQUExFX18pCisgICAgIWRlZmluZWQoX19BUFBMRV9fKSAmJiBBQlNMX0hBVkVfQVRUUklCVVRF
X1dFQUsKICNkZWZpbmUgQUJTTF9IQVZFX0FUVFJJQlVURV9TRUNUSU9OIDEKIAogLy8gQUJTTF9B
VFRSSUJVVEVfU0VDVElPTgpAQCAtMzk3LDE3ICs0MTMsMjggQEAKIAogLy8gQUJTTF9NVVNUX1VT
RV9SRVNVTFQKIC8vCi0vLyBUZWxscyB0aGUgY29tcGlsZXIgdG8gd2FybiBhYm91dCB1bnVzZWQg
cmV0dXJuIHZhbHVlcyBmb3IgZnVuY3Rpb25zIGRlY2xhcmVkCi0vLyB3aXRoIHRoaXMgbWFjcm8u
IFRoZSBtYWNybyBtdXN0IGFwcGVhciBhcyB0aGUgdmVyeSBmaXJzdCBwYXJ0IG9mIGEgZnVuY3Rp
b24KLS8vIGRlY2xhcmF0aW9uIG9yIGRlZmluaXRpb246CisvLyBUZWxscyB0aGUgY29tcGlsZXIg
dG8gd2FybiBhYm91dCB1bnVzZWQgcmVzdWx0cy4KIC8vCi0vLyBFeGFtcGxlOgorLy8gV2hlbiBh
bm5vdGF0aW5nIGEgZnVuY3Rpb24sIGl0IG11c3QgYXBwZWFyIGFzIHRoZSBmaXJzdCBwYXJ0IG9m
IHRoZQorLy8gZGVjbGFyYXRpb24gb3IgZGVmaW5pdGlvbi4gVGhlIGNvbXBpbGVyIHdpbGwgd2Fy
biBpZiB0aGUgcmV0dXJuIHZhbHVlIGZyb20KKy8vIHN1Y2ggYSBmdW5jdGlvbiBpcyB1bnVzZWQ6
CiAvLwogLy8gICBBQlNMX01VU1RfVVNFX1JFU1VMVCBTcHJvY2tldCogQWxsb2NhdGVTcHJvY2tl
dCgpOworLy8gICBBbGxvY2F0ZVNwcm9ja2V0KCk7ICAvLyBUcmlnZ2VycyBhIHdhcm5pbmcuCisv
LworLy8gV2hlbiBhbm5vdGF0aW5nIGEgY2xhc3MsIGl0IGlzIGVxdWl2YWxlbnQgdG8gYW5ub3Rh
dGluZyBldmVyeSBmdW5jdGlvbiB3aGljaAorLy8gcmV0dXJucyBhbiBpbnN0YW5jZS4KKy8vCisv
LyAgIGNsYXNzIEFCU0xfTVVTVF9VU0VfUkVTVUxUIFNwcm9ja2V0IHt9OworLy8gICBTcHJvY2tl
dCgpOyAgLy8gVHJpZ2dlcnMgYSB3YXJuaW5nLgorLy8KKy8vICAgU3Byb2NrZXQgTWFrZVNwcm9j
a2V0KCk7CisvLyAgIE1ha2VTcHJvY2tldCgpOyAgLy8gVHJpZ2dlcnMgYSB3YXJuaW5nLgorLy8K
Ky8vIE5vdGUgdGhhdCByZWZlcmVuY2VzIGFuZCBwb2ludGVycyBhcmUgbm90IGluc3RhbmNlczoK
IC8vCi0vLyBUaGlzIHBsYWNlbWVudCBoYXMgdGhlIGJyb2FkZXN0IGNvbXBhdGliaWxpdHkgd2l0
aCBHQ0MsIENsYW5nLCBhbmQgTVNWQywgd2l0aAotLy8gYm90aCBkZWZzIGFuZCBkZWNscywgYW5k
IHdpdGggR0NDLXN0eWxlIGF0dHJpYnV0ZXMsIE1TVkMgZGVjbHNwZWMsIEMrKzExCi0vLyBhbmQg
QysrMTcgYXR0cmlidXRlcy4KKy8vICAgU3Byb2NrZXQqIFNwcm9ja2V0UG9pbnRlcigpOworLy8g
ICBTcHJvY2tldFBvaW50ZXIoKTsgIC8vIERvZXMgKm5vdCogdHJpZ2dlciBhIHdhcm5pbmcuCiAv
LwogLy8gQUJTTF9NVVNUX1VTRV9SRVNVTFQgYWxsb3dzIHVzaW5nIGNhc3QtdG8tdm9pZCB0byBz
dXBwcmVzcyB0aGUgdW51c2VkIHJlc3VsdAogLy8gd2FybmluZy4gRm9yIHRoYXQsIHdhcm5fdW51
c2VkX3Jlc3VsdCBpcyB1c2VkIG9ubHkgZm9yIGNsYW5nIGJ1dCBub3QgZm9yIGdjYy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvYml0X2Nhc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvYml0X2Nhc3Rf
dGVzdC5jYwppbmRleCA4Y2Q4NzhkNzU2ZTNkODdjMmMxODJmNGEyYWMyMmJiMGU0NmY5ZTI2Li40
ODQ2YWRkNDM1Y2YwMjI4NDE3YzcwNWQ3YjM5ZGM3MzA2ZjI1ZDI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2JpdF9jYXN0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9iaXRfY2FzdF90ZXN0LmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2NhbGxfb25jZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jYWxsX29uY2UuaAppbmRleCA1MzJl
ZTJlMzhiYjUyMDFlOGU1NWNmN2Q4MzRhNjRhYjRkMWJkMWNmLi5lN2ZjMjMwMGUwMzdkNjcyZWI3
ZDk0M2FkYzkwNDYwYmNiNzE1M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NhbGxfb25jZS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvY2FsbF9vbmNlLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5j
bHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5
PgogCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2ludm9rZS5oIgogI2luY2x1ZGUgImFi
c2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfc2NoZWR1bGluZy5oIgpAQCAtMzYsNiArMzcsNyBA
QAogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9zY2hlZHVsaW5nX21vZGUuaCIKICNpbmNs
dWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5oIgogI2luY2x1ZGUgImFic2wv
YmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgiCiAjaW5j
bHVkZSAiYWJzbC9iYXNlL3BvcnQuaCIKIAogbmFtZXNwYWNlIGFic2wgewpAQCAtMTUwLDEyICsx
NTIsOCBAQCB2b2lkIENhbGxPbmNlSW1wbChzdGQ6OmF0b21pYzx1aW50MzJfdD4qIGNvbnRyb2ws
CiAgICAgICAgIG9sZF9jb250cm9sICE9IGtPbmNlUnVubmluZyAmJgogICAgICAgICBvbGRfY29u
dHJvbCAhPSBrT25jZVdhaXRlciAmJgogICAgICAgICBvbGRfY29udHJvbCAhPSBrT25jZURvbmUp
IHsKLSAgICAgIEFCU0xfUkFXX0xPRygKLSAgICAgICAgICBGQVRBTCwKLSAgICAgICAgICAiVW5l
eHBlY3RlZCB2YWx1ZSBmb3IgY29udHJvbCB3b3JkOiAlbHguIEVpdGhlciB0aGUgY29udHJvbCB3
b3JkICIKLSAgICAgICAgICAiaGFzIG5vbi1zdGF0aWMgc3RvcmFnZSBkdXJhdGlvbiAod2hlcmUg
R29vZ2xlT25jZUR5bmFtaWMgbWlnaHQgIgotICAgICAgICAgICJiZSBhcHByb3ByaWF0ZSksIG9y
IHRoZXJlJ3MgYmVlbiBhIG1lbW9yeSBjb3JydXB0aW9uLiIsCi0gICAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZz4ob2xkX2NvbnRyb2wpKTsgLy8gTk9MSU5UCisgICAgICBBQlNMX1JB
V19MT0coRkFUQUwsICJVbmV4cGVjdGVkIHZhbHVlIGZvciBjb250cm9sIHdvcmQ6IDB4JWx4IiwK
KyAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihvbGRfY29udHJv
bCkpOyAgLy8gTk9MSU5UCiAgICAgfQogICB9CiAjZW5kaWYgIC8vIE5ERUJVRwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9jYWxsX29uY2VfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY2FsbF9vbmNlX3Rl
c3QuY2MKaW5kZXggY2Q1OGVlMTlmMDhlNmM1MWEyYjU4NjdmZGE4NTIxYmRhOGNiZTMwNi4uOWE1
YTVjMTNiZTcyMTY5ZGI2YjhhZmMxODllZGQ1ZDlkMzc0MWNiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9jYWxsX29uY2VfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NhbGxfb25jZV90ZXN0LmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOCw2ICsxOCw4
IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNs
dWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9jb25zdF9p
bml0LmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogI2luY2x1
ZGUgImFic2wvc3luY2hyb25pemF0aW9uL211dGV4LmgiCiAKQEAgLTI1LDEzICsyNywxNCBAQCBu
YW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2UgewogCiBhYnNsOjpvbmNlX2ZsYWcgb25jZTsKLU11
dGV4IGNvdW50ZXJzX211OwogCi1pbnQgcnVubmluZ190aHJlYWRfY291bnQgR1VBUkRFRF9CWShj
b3VudGVyc19tdSkgPSAwOwotaW50IGNhbGxfb25jZV9pbnZva2VfY291bnQgR1VBUkRFRF9CWShj
b3VudGVyc19tdSkgPSAwOwotaW50IGNhbGxfb25jZV9maW5pc2hlZF9jb3VudCBHVUFSREVEX0JZ
KGNvdW50ZXJzX211KSA9IDA7Ci1pbnQgY2FsbF9vbmNlX3JldHVybl9jb3VudCBHVUFSREVEX0JZ
KGNvdW50ZXJzX211KSA9IDA7Ci1ib29sIGRvbmVfYmxvY2tpbmcgR1VBUkRFRF9CWShjb3VudGVy
c19tdSkgPSBmYWxzZTsKK0FCU0xfQ09OU1RfSU5JVCBNdXRleCBjb3VudGVyc19tdShhYnNsOjpr
Q29uc3RJbml0KTsKKworaW50IHJ1bm5pbmdfdGhyZWFkX2NvdW50IEFCU0xfR1VBUkRFRF9CWShj
b3VudGVyc19tdSkgPSAwOworaW50IGNhbGxfb25jZV9pbnZva2VfY291bnQgQUJTTF9HVUFSREVE
X0JZKGNvdW50ZXJzX211KSA9IDA7CitpbnQgY2FsbF9vbmNlX2ZpbmlzaGVkX2NvdW50IEFCU0xf
R1VBUkRFRF9CWShjb3VudGVyc19tdSkgPSAwOworaW50IGNhbGxfb25jZV9yZXR1cm5fY291bnQg
QUJTTF9HVUFSREVEX0JZKGNvdW50ZXJzX211KSA9IDA7Citib29sIGRvbmVfYmxvY2tpbmcgQUJT
TF9HVUFSREVEX0JZKGNvdW50ZXJzX211KSA9IGZhbHNlOwogCiAvLyBGdW5jdGlvbiB0byBiZSBj
YWxsZWQgZnJvbSBhYnNsOjpjYWxsX29uY2UuICBXYWl0cyBmb3IgYSBub3RpZmljYXRpb24uCiB2
b2lkIFdhaXRBbmRJbmNyZW1lbnQoKSB7CkBAIC01Nyw3ICs2MCw3IEBAIHZvaWQgVGhyZWFkQm9k
eSgpIHsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIGFsbCB0aHJlYWRzIGFyZSBzZXQgdXAgZm9y
IHRoZSB0ZXN0LgotYm9vbCBUaHJlYWRzQXJlU2V0dXAodm9pZCopIEVYQ0xVU0lWRV9MT0NLU19S
RVFVSVJFRChjb3VudGVyc19tdSkgeworYm9vbCBUaHJlYWRzQXJlU2V0dXAodm9pZCopIEFCU0xf
RVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNvdW50ZXJzX211KSB7CiAgIC8vIEFsbCB0ZW4gdGhy
ZWFkcyBtdXN0IGJlIHJ1bm5pbmcsIGFuZCBXYWl0QW5kSW5jcmVtZW50IHNob3VsZCBiZSBibG9j
a2VkLgogICByZXR1cm4gcnVubmluZ190aHJlYWRfY291bnQgPT0gMTAgJiYgY2FsbF9vbmNlX2lu
dm9rZV9jb3VudCA9PSAxOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jYXN0cy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9jYXN0cy5oCmluZGV4IDIwZmQzNGRhNzAxMDVkNmZjN2RmNTU5ODhjODliNmVjZTRi
N2UzM2UuLmFiYTAxNzgyMTljNzM1ZjE1YzJhY2I4NjgwMWU4MDMxZmRhNGRlOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvY2FzdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2Nhc3RzLmgKQEAgLTUsNyAr
NSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI3LDMxICsyNywyNCBAQAogI2lu
Y2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvaWRl
bnRpdHkuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9t
ZXRhL3R5cGVfdHJhaXRzLmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKIAogbmFtZXNwYWNlIGludGVy
bmFsX2Nhc3RzIHsKIAotLy8gTk9URTogTm90IGEgZnVsbHkgY29tcGxpYW50IGltcGxlbWVudGF0
aW9uIG9mIGBzdGQ6OmlzX3RyaXZpYWxseV9jb3B5YWJsZWAuCi0vLyBUT0RPKGNhbGFicmVzZSkg
QnJhbmNoIG9uIGltcGxlbWVudGF0aW9ucyB0aGF0IGRpcmVjdGx5IHByb3ZpZGUKLS8vIGBzdGQ6
OmlzX3RyaXZpYWxseV9jb3B5YWJsZWAsIGNyZWF0ZSBhIG1vcmUgcmlnb3JvdXMgd29ya2Fyb3Vu
ZCwgYW5kIHB1YmxpY2x5Ci0vLyBleHBvc2UgaW4gbWV0YS90eXBlX3RyYWl0cy4KLXRlbXBsYXRl
IDxjbGFzcyBUPgotc3RydWN0IGlzX3RyaXZpYWxseV9jb3B5YWJsZQotICAgIDogc3RkOjppbnRl
Z3JhbF9jb25zdGFudDwKLSAgICAgICAgICBib29sLCBzdGQ6OmlzX2Rlc3RydWN0aWJsZTxUPjo6
dmFsdWUmJiBfX2hhc190cml2aWFsX2Rlc3RydWN0b3IoVCkgJiYKLSAgICAgICAgICAgICAgICAg
ICAgX19oYXNfdHJpdmlhbF9jb3B5KFQpICYmIF9faGFzX3RyaXZpYWxfYXNzaWduKFQpPiB7fTsK
LQogdGVtcGxhdGUgPGNsYXNzIERlc3QsIGNsYXNzIFNvdXJjZT4KIHN0cnVjdCBpc19iaXRjYXN0
YWJsZQotICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplb2YoRGVzdCkgPT0gc2l6ZW9mKFNvdXJjZSkgJiYKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3RyaXZpYWxseV9jb3B5YWJsZTxTb3VyY2U+Ojp2
YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfdHJpdmlhbGx5X2Nv
cHlhYmxlPERlc3Q+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjppc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8RGVzdD46OnZhbHVlPiB7fTsKKyAgICA6IHN0
ZDo6aW50ZWdyYWxfY29uc3RhbnQ8CisgICAgICAgICAgYm9vbCwKKyAgICAgICAgICBzaXplb2Yo
RGVzdCkgPT0gc2l6ZW9mKFNvdXJjZSkgJiYKKyAgICAgICAgICAgICAgdHlwZV90cmFpdHNfaW50
ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxTb3VyY2U+Ojp2YWx1ZSAmJgorICAgICAgICAg
ICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPERlc3Q+Ojp2
YWx1ZSAmJgorICAgICAgICAgICAgICBzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxEZXN0
Pjo6dmFsdWU+IHt9OwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWxfY2FzdHMKIApAQCAtMTA1
LDcgKzk4LDcgQEAgc3RydWN0IGlzX2JpdGNhc3RhYmxlCiAvLwogLy8gU3VjaCBpbXBsaWNpdCBj
YXN0IGNoYWluaW5nIG1heSBiZSB1c2VmdWwgd2l0aGluIHRlbXBsYXRlIGxvZ2ljLgogdGVtcGxh
dGUgPHR5cGVuYW1lIFRvPgotaW5saW5lIFRvIGltcGxpY2l0X2Nhc3QodHlwZW5hbWUgYWJzbDo6
aW50ZXJuYWw6OmlkZW50aXR5X3Q8VG8+IHRvKSB7Citjb25zdGV4cHIgVG8gaW1wbGljaXRfY2Fz
dCh0eXBlbmFtZSBhYnNsOjppbnRlcm5hbDo6aWRlbnRpdHlfdDxUbz4gdG8pIHsKICAgcmV0dXJu
IHRvOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbmZpZy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9j
b25maWcuaAppbmRleCBkNGViN2QwY2JkNzZiNzE4ZjQyODk3OWRjZTc1NWQ3MzVhZmNiMDBkLi4x
YzNjYjA4ZTc0NmRlYTRhZTk4MzU2YzY0NTFhOGU2N2NhMTY5OGE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uZmlnLmgKQEAgLTUsNyArNSw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTExOCw3ICsxMTgsNyBAQAogLy8gQ2hlY2tz
IHdoZXRoZXIgYHN0ZDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTxUPmAgaXMgc3VwcG9y
dGVkLgogCiAvLyBOb3RlczogQ2xhbmcgd2l0aCBsaWJjKysgc3VwcG9ydHMgdGhlc2UgZmVhdHVy
ZXMsIGFzIGRvZXMgZ2NjID49IDUuMSB3aXRoCi0vLyBlaXRoZXIgbGliYysrIG9yIGxpYnN0ZGMr
KywgYW5kIFZpc3VhbCBTdHVkaW8uCisvLyBlaXRoZXIgbGliYysrIG9yIGxpYnN0ZGMrKywgYW5k
IFZpc3VhbCBTdHVkaW8gKGJ1dCBub3QgTlZDQykuCiAjaWYgZGVmaW5lZChBQlNMX0hBVkVfU1RE
X0lTX1RSSVZJQUxMWV9DT05TVFJVQ1RJQkxFKQogI2Vycm9yIEFCU0xfSEFWRV9TVERfSVNfVFJJ
VklBTExZX0NPTlNUUlVDVElCTEUgY2Fubm90IGJlIGRpcmVjdGx5IHNldAogI2VsaWYgZGVmaW5l
ZChBQlNMX0hBVkVfU1REX0lTX1RSSVZJQUxMWV9BU1NJR05BQkxFKQpAQCAtMTI3LDcgKzEyNyw3
IEBACiAgICAgKCFkZWZpbmVkKF9fY2xhbmdfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgICAg
ICAgICAgICAgICAgIFwKICAgICAgKF9fR05VQ19fID4gNSB8fCAoX19HTlVDX18gPT0gNSAmJiBf
X0dOVUNfTUlOT1JfXyA+PSAxKSkgJiYgXAogICAgICAoZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04p
IHx8IGRlZmluZWQoX19HTElCQ1hYX18pKSkgfHwgICAgICBcCi0gICAgZGVmaW5lZChfTVNDX1ZF
UikKKyAgICAoZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19OVkNDX18pKQogI2RlZmlu
ZSBBQlNMX0hBVkVfU1REX0lTX1RSSVZJQUxMWV9DT05TVFJVQ1RJQkxFIDEKICNkZWZpbmUgQUJT
TF9IQVZFX1NURF9JU19UUklWSUFMTFlfQVNTSUdOQUJMRSAxCiAjZW5kaWYKQEAgLTEzOSwxMiAr
MTM5LDE4IEBACiAjaWZkZWYgQUJTTF9IQVZFX1RIUkVBRF9MT0NBTAogI2Vycm9yIEFCU0xfSEFW
RV9USFJFQURfTE9DQUwgY2Fubm90IGJlIGRpcmVjdGx5IHNldAogI2VsaWYgZGVmaW5lZChfX0FQ
UExFX18pCi0vLyBOb3RlczogWGNvZGUncyBjbGFuZyBkaWQgbm90IHN1cHBvcnQgYHRocmVhZF9s
b2NhbGAgdW50aWwgdmVyc2lvbgotLy8gOCwgYW5kIGV2ZW4gdGhlbiBub3QgZm9yIGFsbCBpT1Mg
PCA5LjAuIEFsc28sIFhjb2RlIDkuMyBzdGFydGVkIGRpc2FsbG93aW5nCi0vLyBgdGhyZWFkX2xv
Y2FsYCBmb3IgMzItYml0IGlPUyBzaW11bGF0b3IgdGFyZ2V0aW5nIGlPUyA5LnguCi0vLyBgX19o
YXNfZmVhdHVyZWAgaXMgb25seSBzdXBwb3J0ZWQgYnkgQ2xhbmcgc28gaXQgaGFzIGJlIGluc2lk
ZQorLy8gTm90ZXM6CisvLyAqIFhjb2RlJ3MgY2xhbmcgZGlkIG5vdCBzdXBwb3J0IGB0aHJlYWRf
bG9jYWxgIHVudGlsIHZlcnNpb24gOCwgYW5kCisvLyAgIGV2ZW4gdGhlbiBub3QgZm9yIGFsbCBp
T1MgPCA5LjAuCisvLyAqIFhjb2RlIDkuMyBzdGFydGVkIGRpc2FsbG93aW5nIGB0aHJlYWRfbG9j
YWxgIGZvciAzMi1iaXQgaU9TIHNpbXVsYXRvcgorLy8gICB0YXJnZXRpbmcgaU9TIDkueC4KKy8v
ICogWGNvZGUgMTAgbW92ZXMgdGhlIGRlcGxveW1lbnQgdGFyZ2V0IGNoZWNrIGZvciBpT1MgPCA5
LjAgdG8gbGluayB0aW1lCisvLyAgIG1ha2luZyBfX2hhc19mZWF0dXJlIHVucmVsaWFibGUgdGhl
cmUuCisvLworLy8gT3RoZXJ3aXNlLCBgX19oYXNfZmVhdHVyZWAgaXMgb25seSBzdXBwb3J0ZWQg
YnkgQ2xhbmcgc28gaXQgaGFzIGJlIGluc2lkZQogLy8gYGRlZmluZWQoX19BUFBMRV9fKWAgY2hl
Y2suCi0jaWYgX19oYXNfZmVhdHVyZShjeHhfdGhyZWFkX2xvY2FsKQorI2lmIF9faGFzX2ZlYXR1
cmUoY3h4X3RocmVhZF9sb2NhbCkgJiYgXAorICAgICEoVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IF9fSVBIT05FXzlfMCkKICNkZWZpbmUgQUJT
TF9IQVZFX1RIUkVBRF9MT0NBTCAxCiAjZW5kaWYKICNlbHNlICAvLyAhZGVmaW5lZChfX0FQUExF
X18pCkBAIC0xNzUsNiArMTgxLDEzIEBACiAjZW5kaWYKICNlbmRpZiAgLy8gZGVmaW5lZChfX0FO
RFJPSURfXykgJiYgZGVmaW5lZChfX2NsYW5nX18pCiAKKy8vIEVtc2NyaXB0ZW4gZG9lc24ndCB5
ZXQgc3VwcG9ydCBgdGhyZWFkX2xvY2FsYCBvciBgX190aHJlYWRgLgorLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2Vtc2NyaXB0ZW4tY29yZS9lbXNjcmlwdGVuL2lzc3Vlcy8zNTAyCisjaWYgZGVmaW5l
ZChfX0VNU0NSSVBURU5fXykKKyN1bmRlZiBBQlNMX0hBVkVfVExTCisjdW5kZWYgQUJTTF9IQVZF
X1RIUkVBRF9MT0NBTAorI2VuZGlmICAvLyBkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQorCiAvLyBB
QlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOAogLy8KIC8vIENoZWNrcyB3aGV0aGVyIHRoZSBfX2lu
dDEyOCBjb21waWxlciBleHRlbnNpb24gZm9yIGEgMTI4LWJpdCBpbnRlZ3JhbCB0eXBlIGlzCkBA
IC0xODUsMTUgKzE5OCwxMyBAQAogLy8gKiBPbiBDbGFuZzoKIC8vICAgKiBCdWlsZGluZyB1c2lu
ZyBDbGFuZyBmb3IgV2luZG93cywgd2hlcmUgdGhlIENsYW5nIHJ1bnRpbWUgbGlicmFyeSBoYXMK
IC8vICAgICAxMjgtYml0IHN1cHBvcnQgb25seSBvbiBMUDY0IGFyY2hpdGVjdHVyZXMsIGJ1dCBX
aW5kb3dzIGlzIExMUDY0LgotLy8gICAqIEJ1aWxkaW5nIGZvciBhYXJjaDY0LCB3aGVyZSBfX2lu
dDEyOCBleGlzdHMgYnV0IGhhcyBleGhpYml0cyBhIHNwb3JhZGljCi0vLyAgICAgY29tcGlsZXIg
Y3Jhc2hpbmcgYnVnLgogLy8gKiBPbiBOdmlkaWEncyBudmNjOgogLy8gICAqIG52Y2MgYWxzbyBk
ZWZpbmVzIF9fR05VQ19fIGFuZCBfX1NJWkVPRl9JTlQxMjhfXywgYnV0IG5vdCBhbGwgdmVyc2lv
bnMKIC8vICAgICBhY3R1YWxseSBzdXBwb3J0IF9faW50MTI4LgogI2lmZGVmIEFCU0xfSEFWRV9J
TlRSSU5TSUNfSU5UMTI4CiAjZXJyb3IgQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjggY2Fubm90
IGJlIGRpcmVjdGx5IHNldAogI2VsaWYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKLSNpZiAo
ZGVmaW5lZChfX2NsYW5nX18pICYmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19hYXJj
aDY0X18pKSB8fCBcCisjaWYgKGRlZmluZWQoX19jbGFuZ19fKSAmJiAhZGVmaW5lZChfV0lOMzIp
KSB8fCBcCiAgICAgKGRlZmluZWQoX19DVURBQ0NfXykgJiYgX19DVURBQ0NfVkVSX01BSk9SX18g
Pj0gOSkgfHwgICAgICAgICAgICAgICAgXAogICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVm
aW5lZChfX2NsYW5nX18pICYmICFkZWZpbmVkKF9fQ1VEQUNDX18pKQogI2RlZmluZSBBQlNMX0hB
VkVfSU5UUklOU0lDX0lOVDEyOCAxCkBAIC0yNDksNyArMjYwLDcgQEAKIC8vICAgTGludXggYW5k
IExpbnV4LWRlcml2ZWQgICAgICAgICAgIF9fbGludXhfXwogLy8gICBBbmRyb2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19BTkRST0lEX18gKGltcGxpZXMgX19saW51eF9fKQogLy8gICBM
aW51eCAobm9uLUFuZHJvaWQpICAgICAgICAgICAgICAgX19saW51eF9fICYmICFfX0FORFJPSURf
XwotLy8gICBEYXJ3aW4gKE1hYyBPUyBYIGFuZCBpT1MpICAgICAgICAgX19BUFBMRV9fCisvLyAg
IERhcndpbiAobWFjT1MgYW5kIGlPUykgICAgICAgICAgICBfX0FQUExFX18KIC8vICAgQWthcm9z
IChodHRwOi8vYWthcm9zLm9yZykgICAgICAgIF9fcm9zX18KIC8vICAgV2luZG93cyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9XSU4zMgogLy8gICBOYUNMICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19uYXRpdmVfY2xpZW50X18KQEAgLTI2OCw3ICsyNzksOCBAQAogI2Vycm9yIEFC
U0xfSEFWRV9NTUFQIGNhbm5vdCBiZSBkaXJlY3RseSBzZXQKICNlbGlmIGRlZmluZWQoX19saW51
eF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgICBc
CiAgICAgZGVmaW5lZChfX3Jvc19fKSB8fCBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSB8fCBk
ZWZpbmVkKF9fYXNtanNfXykgfHwgXAotICAgIGRlZmluZWQoX193YXNtX18pIHx8IGRlZmluZWQo
X19GdWNoc2lhX18pIHx8IGRlZmluZWQoX19zdW4pCisgICAgZGVmaW5lZChfX3dhc21fXykgfHwg
ZGVmaW5lZChfX0Z1Y2hzaWFfXykgfHwgZGVmaW5lZChfX3N1bikgfHwgXAorICAgIGRlZmluZWQo
X19BU1lMT19fKQogI2RlZmluZSBBQlNMX0hBVkVfTU1BUCAxCiAjZW5kaWYKIApAQCAtMzIyLDYg
KzMzNCw4IEBACiAjZGVmaW5lIEFCU0xfSEFWRV9BTEFSTSAxCiAjZWxpZiBkZWZpbmVkKF9NU0Nf
VkVSKQogLy8gZmVhdHVyZSB0ZXN0cyBmb3IgTWljcm9zb2Z0J3MgbGlicmFyeQorI2VsaWYgZGVm
aW5lZChfX0VNU0NSSVBURU5fXykKKy8vIGVtc2NyaXB0ZW4gZG9lc24ndCBzdXBwb3J0IHNpZ25h
bHMKICNlbGlmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCiAjZWxzZQogLy8gb3RoZXIgc3Rh
bmRhcmQgbGlicmFyaWVzCkBAIC0zNTYsNiArMzcwLDI3IEBACiAjZXJyb3IgImFic2wgZW5kaWFu
IGRldGVjdGlvbiBuZWVkcyB0byBiZSBzZXQgdXAgZm9yIHlvdXIgY29tcGlsZXIiCiAjZW5kaWYK
IAorLy8gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMC4xMSBkb24ndCBsZXQgeW91IHVzZSA8YW55Piwg
PG9wdGlvbmFsPiwgb3IgPHZhcmlhbnQ+CisvLyBldmVuIHRob3VnaCB0aGUgaGVhZGVycyBleGlz
dCBhbmQgYXJlIHB1YmxpY2x5IG5vdGVkIHRvIHdvcmsuICBTZWUKKy8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS9hYnNlaWwvYWJzZWlsLWNwcC9pc3N1ZXMvMjA3IGFuZAorLy8gaHR0cHM6Ly9kZXZlbG9w
ZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGNvZGVfcmVsZWFzZV9ub3Rlcy94Y29kZV8xMF9y
ZWxlYXNlX25vdGVzCisvLyBsaWJjKysgc3BlbGxzIG91dCB0aGUgYXZhaWxhYmlsaXR5IHJlcXVp
cmVtZW50cyBpbiB0aGUgZmlsZQorLy8gbGx2bS1wcm9qZWN0L2xpYmN4eC9pbmNsdWRlL19fY29u
ZmlnIHZpYSB0aGUgI2RlZmluZQorLy8gX0xJQkNQUF9BVkFJTEFCSUxJVFlfQkFEX09QVElPTkFM
X0FDQ0VTUy4KKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChfTElCQ1BQX1ZFUlNJ
T04pICYmIFwKKyAgKChkZWZpbmVkKF9fRU5WSVJPTk1FTlRfTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRURfXykgJiYgXAorICAgX19FTlZJUk9OTUVOVF9NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRF9fIDwgMTAxNDAwKSB8fCBcCisgIChkZWZpbmVkKF9fRU5WSVJPTk1FTlRfSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18pICYmIFwKKyAgIF9fRU5WSVJPTk1FTlRfSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18gPCAxMjAwMDApIHx8IFwKKyAgKGRlZmluZWQoX19F
TlZJUk9OTUVOVF9XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRF9fKSAmJiBcCisgICBfX0VO
VklST05NRU5UX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18gPCAxMjAwMDApIHx8IFwK
KyAgKGRlZmluZWQoX19FTlZJUk9OTUVOVF9UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRF9fKSAm
JiBcCisgICBfX0VOVklST05NRU5UX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18gPCA1MDAw
MCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfQVBQTEVfQ1hYMTdfVFlQRVNfVU5BVkFJTEFCTEUg
MQorI2Vsc2UKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9BUFBMRV9DWFgxN19UWVBFU19VTkFWQUlM
QUJMRSAwCisjZW5kaWYKKwogLy8gQUJTTF9IQVZFX1NURF9BTlkKIC8vCiAvLyBDaGVja3Mgd2hl
dGhlciBDKysxNyBzdGQ6OmFueSBpcyBhdmFpbGFibGUgYnkgY2hlY2tpbmcgd2hldGhlciA8YW55
PiBleGlzdHMuCkBAIC0zNjQsNyArMzk5LDggQEAKICNlbmRpZgogCiAjaWZkZWYgX19oYXNfaW5j
bHVkZQotI2lmIF9faGFzX2luY2x1ZGUoPGFueT4pICYmIF9fY3BsdXNwbHVzID49IDIwMTcwM0wK
KyNpZiBfX2hhc19pbmNsdWRlKDxhbnk+KSAmJiBfX2NwbHVzcGx1cyA+PSAyMDE3MDNMICYmIFwK
KyAgICAhQUJTTF9JTlRFUk5BTF9BUFBMRV9DWFgxN19UWVBFU19VTkFWQUlMQUJMRQogI2RlZmlu
ZSBBQlNMX0hBVkVfU1REX0FOWSAxCiAjZW5kaWYKICNlbmRpZgpAQCAtMzc3LDcgKzQxMyw4IEBA
CiAjZW5kaWYKIAogI2lmZGVmIF9faGFzX2luY2x1ZGUKLSNpZiBfX2hhc19pbmNsdWRlKDxvcHRp
b25hbD4pICYmIF9fY3BsdXNwbHVzID49IDIwMTcwM0wKKyNpZiBfX2hhc19pbmNsdWRlKDxvcHRp
b25hbD4pICYmIF9fY3BsdXNwbHVzID49IDIwMTcwM0wgJiYgXAorICAgICFBQlNMX0lOVEVSTkFM
X0FQUExFX0NYWDE3X1RZUEVTX1VOQVZBSUxBQkxFCiAjZGVmaW5lIEFCU0xfSEFWRV9TVERfT1BU
SU9OQUwgMQogI2VuZGlmCiAjZW5kaWYKQEAgLTM5MCw3ICs0MjcsOCBAQAogI2VuZGlmCiAKICNp
ZmRlZiBfX2hhc19pbmNsdWRlCi0jaWYgX19oYXNfaW5jbHVkZSg8dmFyaWFudD4pICYmIF9fY3Bs
dXNwbHVzID49IDIwMTcwM0wKKyNpZiBfX2hhc19pbmNsdWRlKDx2YXJpYW50PikgJiYgX19jcGx1
c3BsdXMgPj0gMjAxNzAzTCAmJiBcCisgICAgIUFCU0xfSU5URVJOQUxfQVBQTEVfQ1hYMTdfVFlQ
RVNfVU5BVkFJTEFCTEUKICNkZWZpbmUgQUJTTF9IQVZFX1NURF9WQVJJQU5UIDEKICNlbmRpZgog
I2VuZGlmCkBAIC00MjMsNCArNDYxLDEyIEBACiAjZGVmaW5lIEFCU0xfSEFWRV9TVERfU1RSSU5H
X1ZJRVcgMQogI2VuZGlmCiAKKy8vIEluIGRlYnVnIG1vZGUsIE1TVkMgMjAxNydzIHN0ZDo6dmFy
aWFudCB0aHJvd3MgYSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTgorLy8gU0VIIGV4Y2VwdGlv
biBmcm9tIGVtcGxhY2UgZm9yIHZhcmlhbnQ8U29tZVN0cnVjdD4gd2hlbiBjb25zdHJ1Y3Rpbmcg
dGhlCisvLyBzdHJ1Y3QgY2FuIHRocm93LiBUaGlzIGRlZmVhdHMgc29tZSBvZiB2YXJpYW50X3Rl
c3QgYW5kCisvLyB2YXJpYW50X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC4KKyNpZiBkZWZpbmVkKF9N
U0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNzAwICYmIGRlZmluZWQoX0RFQlVHKQorI2RlZmluZSBB
QlNMX0lOVEVSTkFMX01TVkNfMjAxN19EQkdfTU9ERQorI2VuZGlmCisKICNlbmRpZiAgLy8gQUJT
TF9CQVNFX0NPTkZJR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jb25maWdfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvY29uZmlnX3Rlc3QuY2MKaW5kZXggYzgzOTcxMmE1MzdlNDE2OWNhMDE2NWZm
OWY5ZDMwYjE3ZTgyMWUyOC4uN2UwYzAzM2RlNTlmY2I5N2M4OTExMTM0NDExMGM1MWEzY2Q1NmM2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jb25maWdfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2NvbmZpZ190ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbnN0X2luaXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uc3Rf
aW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE3ODU4YTc3NzhhNGI1MGI1ZjAzOWIwZTkyNzdiODM4Mjc0ZDQy
MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbnN0X2luaXQuaApAQCAtMCwwICsx
LDcyIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8ga0NvbnN0SW5pdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vCisvLyBBIGNvbnN0cnVjdG9yIHRhZyB1c2VkIHRvIG1hcmsgYW4gb2JqZWN0IGFzIHNh
ZmUgZm9yIHVzZSBhcyBhIGdsb2JhbAorLy8gdmFyaWFibGUsIGF2b2lkaW5nIHRoZSB1c3VhbCBs
aWZldGltZSBpc3N1ZXMgdGhhdCBjYW4gYWZmZWN0IGdsb2JhbHMuCisKKyNpZm5kZWYgQUJTTF9C
QVNFX0NPTlNUX0lOSVRfSF8KKyNkZWZpbmUgQUJTTF9CQVNFX0NPTlNUX0lOSVRfSF8KKworLy8g
SW4gZ2VuZXJhbCwgb2JqZWN0cyB3aXRoIHN0YXRpYyBzdG9yYWdlIGR1cmF0aW9uIChzdWNoIGFz
IGdsb2JhbCB2YXJpYWJsZXMpCisvLyBjYW4gdHJpZ2dlciB0cmlja3kgb2JqZWN0IGxpZmV0aW1l
IHNpdHVhdGlvbnMuICBBdHRlbXB0aW5nIHRvIGFjY2VzcyB0aGVtCisvLyBmcm9tIHRoZSBjb25z
dHJ1Y3RvcnMgb3IgZGVzdHJ1Y3RvcnMgb2Ygb3RoZXIgZ2xvYmFsIG9iamVjdHMgY2FuIHJlc3Vs
dCBpbgorLy8gdW5kZWZpbmVkIGJlaGF2aW9yLCB1bmxlc3MgdGhlaXIgY29uc3RydWN0b3JzIGFu
ZCBkZXN0cnVjdG9ycyBhcmUgZGVzaWduZWQKKy8vIHdpdGggdGhpcyBpc3N1ZSBpbiBtaW5kLgor
Ly8KKy8vIFRoZSBub3JtYWwgd2F5IHRvIGRlYWwgd2l0aCB0aGlzIGlzc3VlIGluIEMrKzExIGlz
IHRvIHVzZSBjb25zdGFudAorLy8gaW5pdGlhbGl6YXRpb24gYW5kIHRyaXZpYWwgZGVzdHJ1Y3Rv
cnMuCisvLworLy8gQ29uc3RhbnQgaW5pdGlhbGl6YXRpb24gaXMgZ3VhcmFudGVlZCB0byBvY2N1
ciBiZWZvcmUgYW55IG90aGVyIGNvZGUKKy8vIGV4ZWN1dGVzLiAgQ29uc3RydWN0b3JzIHRoYXQg
YXJlIGRlY2xhcmVkICdjb25zdGV4cHInIGFyZSBlbGlnaWJsZSBmb3IKKy8vIGNvbnN0YW50IGlu
aXRpYWxpemF0aW9uLiAgWW91IGNhbiBhbm5vdGF0ZSBhIHZhcmlhYmxlIGRlY2xhcmF0aW9uIHdp
dGggdGhlCisvLyBBQlNMX0NPTlNUX0lOSVQgbWFjcm8gdG8gZXhwcmVzcyB0aGlzIGludGVudC4g
IEZvciBjb21waWxlcnMgdGhhdCBzdXBwb3J0CisvLyBpdCwgdGhpcyBhbm5vdGF0aW9uIHdpbGwg
Y2F1c2UgYSBjb21waWxhdGlvbiBlcnJvciBmb3IgZGVjbGFyYXRpb25zIHRoYXQKKy8vIGFyZW4n
dCBzdWJqZWN0IHRvIGNvbnN0YW50IGluaXRpYWxpemF0aW9uIChwZXJoYXBzIGJlY2F1c2UgYSBy
dW50aW1lIHZhbHVlCisvLyB3YXMgcGFzc2VkIGFzIGEgY29uc3RydWN0b3IgYXJndW1lbnQpLgor
Ly8KKy8vIE9uIHByb2dyYW0gc2h1dGRvd24sIGxpZmV0aW1lIGlzc3VlcyBjYW4gYmUgYXZvaWRl
ZCBvbiBnbG9iYWwgb2JqZWN0cyBieQorLy8gZW5zdXJpbmcgdGhhdCB0aGV5IGNvbnRhaW4gIHRy
aXZpYWwgZGVzdHJ1Y3RvcnMuICBBIGNsYXNzIGhhcyBhIHRyaXZpYWwKKy8vIGRlc3RydWN0b3Ig
dW5sZXNzIGl0IGhhcyBhIHVzZXItZGVmaW5lZCBkZXN0cnVjdG9yLCBhIHZpcnR1YWwgbWV0aG9k
IG9yIGJhc2UKKy8vIGNsYXNzLCBvciBhIGRhdGEgbWVtYmVyIG9yIGJhc2UgY2xhc3Mgd2l0aCBh
IG5vbi10cml2aWFsIGRlc3RydWN0b3Igb2YgaXRzCisvLyBvd24uICBPYmplY3RzIHdpdGggc3Rh
dGljIHN0b3JhZ2UgZHVyYXRpb24gYW5kIGEgdHJpdmlhbCBkZXN0cnVjdG9yIGFyZSBub3QKKy8v
IGNsZWFuZWQgdXAgb24gcHJvZ3JhbSBzaHV0ZG93biwgYW5kIGFyZSB0aHVzIHNhZmUgdG8gYWNj
ZXNzIGZyb20gb3RoZXIgY29kZQorLy8gcnVubmluZyBkdXJpbmcgc2h1dGRvd24uCisvLworLy8g
Rm9yIGEgZmV3IGNvcmUgQWJzZWlsIGNsYXNzZXMsIHdlIG1ha2UgYSBiZXN0IGVmZm9ydCB0byBh
bGxvdyBmb3Igc2FmZSBnbG9iYWwKKy8vIGluc3RhbmNlcywgZXZlbiB0aG91Z2ggdGhlc2UgY2xh
c3NlcyBoYXZlIG5vbi10cml2aWFsIGRlc3RydWN0b3JzLiAgVGhlc2UKKy8vIG9iamVjdHMgY2Fu
IGJlIGNyZWF0ZWQgd2l0aCB0aGUgYWJzbDo6a0NvbnN0SW5pdCB0YWcuICBGb3IgZXhhbXBsZToK
Ky8vICAgQUJTTF9DT05TVF9JTklUIGFic2w6Ok11dGV4IGdsb2JhbF9tdXRleChhYnNsOjprQ29u
c3RJbml0KTsKKy8vCisvLyBUaGUgbGluZSBhYm92ZSBkZWNsYXJlcyBhIGdsb2JhbCB2YXJpYWJs
ZSBvZiB0eXBlIGFic2w6Ok11dGV4IHdoaWNoIGNhbiBiZQorLy8gYWNjZXNzZWQgYXQgYW55IHBv
aW50IGR1cmluZyBzdGFydHVwIG9yIHNodXRkb3duLiAgZ2xvYmFsX211dGV4J3MgZGVzdHJ1Y3Rv
cgorLy8gd2lsbCBzdGlsbCBydW4sIGJ1dCB3aWxsIG5vdCBpbnZhbGlkYXRlIHRoZSBvYmplY3Qu
ICBOb3RlIHRoYXQgQysrIHNwZWNpZmllcworLy8gdGhhdCBhY2Nlc3NpbmcgYW4gb2JqZWN0IGFm
dGVyIGl0cyBkZXN0cnVjdG9yIGhhcyBydW4gcmVzdWx0cyBpbiB1bmRlZmluZWQKKy8vIGJlaGF2
aW9yLCBidXQgdGhpcyBwYXR0ZXJuIHdvcmtzIG9uIHRoZSB0b29sY2hhaW5zIHdlIHN1cHBvcnQu
CisvLworLy8gVGhlIGFic2w6OmtDb25zdEluaXQgdGFnIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8g
ZGVmaW5lIG9iamVjdHMgd2l0aCBzdGF0aWMKKy8vIG9yIHRocmVhZF9sb2NhbCBzdG9yYWdlIGR1
cmF0aW9uLgorCituYW1lc3BhY2UgYWJzbCB7CisKK2VudW0gQ29uc3RJbml0VHlwZSB7CisgIGtD
b25zdEluaXQsCit9OworCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xf
QkFTRV9DT05TVF9JTklUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3Rh
dGlvbnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3RhdGlvbnMuY2MKaW5kZXggYjk3ZmEz
YThiNGE5YmM4ZTY3ZWQzNzI2ZDQ1MjQxYmRlNWRhMTJlYi4uMTQxMTA5Mzc1NzQ3NGM5MzY3NTZl
MmU0YTNjMjEyNDQ5YzM0NTZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9keW5hbWljX2Fubm90
YXRpb25zLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvZHluYW1pY19hbm5vdGF0aW9ucy5jYwpAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9keW5hbWljX2Fubm90YXRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3RhdGlvbnMu
aAppbmRleCA4ODA0OGIwZmJiMWY0Zjc5MmIwYTc0ZTQ2NWQ5OTEwZTc4MDRmNThmLi5jMTU2ZTA2
Mzk3ZTJjMWE3ZTVmYTcwMzZjYzE4ZTJkODE5MGE3MmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2R5bmFtaWNfYW5ub3RhdGlvbnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3RhdGlv
bnMuaApAQCAtNSw3ICs1LDcgQEAKICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAqIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisgKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKICAqCiAgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgKiBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTM5LDYg
KzEzOSw3IEBACiAgICNkZWZpbmUgQUJTTF9BTk5PVEFURV9NRU1PUllfSVNfSU5JVElBTElaRUQo
YWRkcmVzcywgc2l6ZSkgLyogZW1wdHkgKi8KICAgI2RlZmluZSBBQlNMX0FOTk9UQVRFX01FTU9S
WV9JU19VTklOSVRJQUxJWkVEKGFkZHJlc3MsIHNpemUpIC8qIGVtcHR5ICovCiAjZW5kaWYgIC8q
IEFCU0xfRFlOQU1JQ19BTk5PVEFUSU9OU19FTkFCTEVEIHx8IE1FTU9SWV9TQU5JVElaRVIgKi8K
KwogLyogVE9ETyhkZWxlc2xleSkgLS0gUmVwbGFjZSBfX0NMQU5HX1NVUFBPUlRfRFlOX0FOTk9U
QVRJT05fXyB3aXRoIHRoZQogICAgYXBwcm9wcmlhdGUgZmVhdHVyZSBJRC4gKi8KICNpZiBkZWZp
bmVkKF9fY2xhbmdfXykgJiYgKCFkZWZpbmVkKFNXSUcpKSBcCkBAIC0zNzYsNyArMzc3LDcgQEAg
aW5saW5lIFQgQUJTTF9BTk5PVEFURV9VTlBST1RFQ1RFRF9SRUFEKGNvbnN0IHZvbGF0aWxlIFQg
JngpIHsgLyogTk9MSU5UICovCiAgIHN0cnVjdCB7IGNoYXIgeFs4XSBfX2F0dHJpYnV0ZV9fICgo
YWxpZ25lZCAoOCkpKTsgfSBuYW1lCiAjZWxzZQogI2RlZmluZSBBQlNMX0FOTk9UQVRFX0NPTlRJ
R1VPVVNfQ09OVEFJTkVSKGJlZywgZW5kLCBvbGRfbWlkLCBuZXdfbWlkKQotI2RlZmluZSBBQlNM
X0FERFJFU1NfU0FOSVRJWkVSX1JFRFpPTkUobmFtZSkKKyNkZWZpbmUgQUJTTF9BRERSRVNTX1NB
TklUSVpFUl9SRURaT05FKG5hbWUpIHN0YXRpY19hc3NlcnQodHJ1ZSwgIiIpCiAjZW5kaWYgIC8v
IEFERFJFU1NfU0FOSVRJWkVSCiAKIC8qIFVuZGVmaW5lIHRoZSBtYWNyb3MgaW50ZW5kZWQgb25s
eSBpbiB0aGlzIGZpbGUuICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdGluZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9leGNlcHRpb25fc2FmZXR5X3Rlc3Rpbmdf
dGVzdC5jYwppbmRleCAxMDZiYzM0YjAwZjdjZTI3YTdiNDM3NTJhZDcxMDY5OWZiYzQ1NWYyLi4y
ZWQzODYwNjVmMGE3MTQyOWQ0OGIzNTFiYjBlY2EzYzJkMjFmNmVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZ190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKQEAgLTc3MCw2ICs3NzAsMTggQEAgVEVTVChFeGNlcHRpb25DaGVj
a1Rlc3QsIE1vZGlmeWluZ0NoZWNrZXIpIHsKICAgICAgICAgICAgICAgICAgIC5UZXN0KGludm9r
ZXIpKTsKIH0KIAorVEVTVChFeGNlcHRpb25TYWZldHlUZXN0ZXJUZXN0LCBSZXNldHNDb3VudGRv
d24pIHsKKyAgYXV0byB0ZXN0ID0KKyAgICAgIHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlU
ZXN0ZXIoKQorICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFRocm93aW5nVmFsdWU8PigpKQor
ICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFtdKFRocm93aW5nVmFsdWU8PiopIHsgcmV0dXJuIEFz
c2VydGlvblN1Y2Nlc3MoKTsgfSkKKyAgICAgICAgICAuV2l0aE9wZXJhdGlvbihbXShUaHJvd2lu
Z1ZhbHVlPD4qKSB7fSk7CisgIEFTU0VSVF9UUlVFKHRlc3QuVGVzdCgpKTsKKyAgLy8gSWYgdGhl
IGNvdW50ZG93biBpc24ndCByZXNldCBiZWNhdXNlIHRoZXJlIHdlcmUgbm8gZXhjZXB0aW9ucyB0
aHJvd24sIHRoZW4KKyAgLy8gdGhpcyB3aWxsIGZhaWwgd2l0aCBhIHRlcm1pbmF0aW9uIGZyb20g
YW4gdW5oYW5kbGVkIGV4Y2VwdGlvbgorICBFWFBFQ1RfVFJVRSh0ZXN0LlRlc3QoKSk7Cit9CisK
IHN0cnVjdCBOb25Db3B5YWJsZSA6IHB1YmxpYyBOb25OZWdhdGl2ZSB7CiAgIE5vbkNvcHlhYmxl
KGNvbnN0IE5vbkNvcHlhYmxlJikgPSBkZWxldGU7CiAgIE5vbkNvcHlhYmxlKCkgOiBOb25OZWdh
dGl2ZXswfSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW5saW5lX3ZhcmlhYmxlX3Rlc3QuY2MKaW5kZXggNTQ5OTE4OWEzZGE5
NmEzM2IwNmIyNjcwYTcyNDEwN2MzZDY3M2E1Zi4uNDcxZjcwNjMzY2FkMDUxZDY3MjA4MzUwMGQx
MzQxNzdlMDQ2MzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lubGluZV92YXJpYWJsZV90ZXN0LmNjCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
bGluZV92YXJpYWJsZV90ZXN0X2EuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lubGluZV92YXJpYWJsZV90ZXN0
X2EuY2MKaW5kZXggYTNiZjNiNjhiM2NmY2E0ZmEwMjA5ODk4Yzc2MWJjMjZkNzg4ZTE2Ny4uZDBi
OGU3ZDM5NGIzOGYyNWM3YmUzYzBjNTU5NzYyNGZhY2QwYWU2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbmxpbmVfdmFyaWFibGVfdGVzdF9hLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW5saW5lX3Zh
cmlhYmxlX3Rlc3RfYS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVzdF9iLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVzdF9iLmNjCmluZGV4IGI0YjkzOTNhNTU4NWNmNThl
NTExMDRkOTIxOWE4Yzk5YTA5Yjc5YjUuLjkzMWQ1NmQwNTcxNDFjOTE1MTk1YjQ0MzEzMjI3YmMz
ZWI1YzgwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW5saW5lX3ZhcmlhYmxlX3Rlc3RfYi5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2lubGluZV92YXJpYWJsZV90ZXN0X2IuY2MKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvYXRvbWljX2hvb2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvYXRvbWljX2hvb2suaApp
bmRleCBiNDU4NTExYjBjNzM0OTQwZDFhYjE4MWI4MjEyYzUxYmUwMzU0ZDdiLi44MDNlOTA1OTc2
MWNmZTExMjAzMTM0MmZiZDRjNWVlZjk0MDQ4M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL2F0b21pY19ob29rLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9hdG9taWNfaG9v
ay5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL2F0b21pY19ob29rX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL2F0b21pY19ob29rX3Rlc3QuY2MKaW5kZXggY2Y3NDA3NTczYTUyYjQ3ZjMyNmE5Y2Ew
MTJlNDdkZWRiYWY3YmFkNy4uZWNjODA0MDZiMDAzNDIxYTU5ZDM3OGQwNWNlYjEyZDEzNzk0MGE2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9hdG9taWNfaG9va190ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvYXRvbWljX2hvb2tfdGVzdC5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC9iaXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaAppbmRleCBiYzdmYWFlZTNi
MjU3ZWRjMzdjZDkwOTBiNzc3N2Q3MDM1ZDNjM2I4Li5iMDc4MGYyZDEyMWNjMGUxY2FlNzliZjgw
MzU2YWI0NGFiN2M2OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzX3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHNfdGVzdC5jYwppbmRleCBlNWQ5OTFkNjcy
NTg3NGFhOWRiODAzYjE1MTE3ODE3YWEzMDg2YjUxLi43ODU1ZmE2Mjk3MjQ1OTllZTQ5NDlmNzcw
ZjRiNDdmMmQwMTE5YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHNfdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHNfdGVzdC5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC9jbWFrZV90aHJlYWRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvY21ha2VfdGhy
ZWFkX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcwYmIyNGViN2I0YTI0ZTJjMDljNDY0N2FlY2RjYTZh
NzlkNjExZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvY21ha2VfdGhy
ZWFkX3Rlc3QuY2MKQEAgLTAsMCArMSwyMiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlICJhYnNsL2Jhc2Uv
aW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmgiCisKK2ludCBtYWluKCkgeworICBhdXRvKiB0aWQg
PSBhYnNsOjpiYXNlX2ludGVybmFsOjpDdXJyZW50VGhyZWFkSWRlbnRpdHlJZlByZXNlbnQoKTsK
KyAgLy8gTWFrZSBzdXJlIHRoZSBhYm92ZSBjYWxsIGNhbid0IGJlIG9wdGltaXplZCBvdXQKKyAg
c3RkOjpjb3V0IDw8ICh2b2lkKil0aWQgPDwgc3RkOjplbmRsOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9jeWNsZWNsb2NrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9jeWNs
ZWNsb2NrLmNjCmluZGV4IGE3NDJkZjAxZjk0YTcxY2Q0Y2YyYTUwYmQwMGYxNmM2OWE4MTYxNjEu
LmU5ODQ0YjcxNzdhMTdlZmIwYmExMjA4NjEwMjFmODIwODk3NTk2ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvY3ljbGVjbG9jay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L2N5Y2xlY2xvY2suY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9jeWNsZWNs
b2NrLmgiCiAKKyNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8Y2hyb25vPiAgLy8gTk9MSU5U
KGJ1aWxkL2MrKzExKQogCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3lj
bGVjbG9jay5oIgpAQCAtNTIsMTcgKzUzLDQwIEBAIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBr
U2hpZnQgPSAyOwogI2VuZGlmCiAKIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGtGcmVxdWVuY3lT
Y2FsZSA9IDEuMCAvICgxIDw8IGtTaGlmdCk7CitzdGF0aWMgc3RkOjphdG9taWM8Q3ljbGVDbG9j
a1NvdXJjZUZ1bmM+IGN5Y2xlX2Nsb2NrX3NvdXJjZTsKKworQ3ljbGVDbG9ja1NvdXJjZUZ1bmMg
TG9hZEN5Y2xlQ2xvY2tTb3VyY2UoKSB7CisgIC8vIE9wdGltaXplIGZvciB0aGUgY29tbW9uIGNh
c2UgKG5vIGNhbGxiYWNrKSBieSBmaXJzdCBkb2luZyBhIHJlbGF4ZWQgbG9hZDsKKyAgLy8gdGhp
cyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciBvbiBub24teDg2IHBsYXRmb3Jtcy4KKyAgaWYgKGN5
Y2xlX2Nsb2NrX3NvdXJjZS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpID09IG51bGxw
dHIpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorICAvLyBUaGlzIGNvcnJlc3BvbmRzIHRv
IHRoZSBzdG9yZShzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSBpbgorICAvLyBDeWNsZUNsb2Nr
U291cmNlOjpSZWdpc3RlciwgYW5kIG1ha2VzIHN1cmUgdGhhdCBhbnkgdXBkYXRlcyBtYWRlIHBy
aW9yIHRvCisgIC8vIHJlZ2lzdGVyaW5nIHRoZSBjYWxsYmFjayBhcmUgdmlzaWJsZSB0byB0aGlz
IHRocmVhZCBiZWZvcmUgdGhlIGNhbGxiYWNrIGlzCisgIC8vIGludm9rZWQuCisgIHJldHVybiBj
eWNsZV9jbG9ja19zb3VyY2UubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKK30KIAog
fSAgLy8gbmFtZXNwYWNlCiAKIGludDY0X3QgQ3ljbGVDbG9jazo6Tm93KCkgewotICByZXR1cm4g
YmFzZV9pbnRlcm5hbDo6VW5zY2FsZWRDeWNsZUNsb2NrOjpOb3coKSA+PiBrU2hpZnQ7CisgIGF1
dG8gZm4gPSBMb2FkQ3ljbGVDbG9ja1NvdXJjZSgpOworICBpZiAoZm4gPT0gbnVsbHB0cikgewor
ICAgIHJldHVybiBiYXNlX2ludGVybmFsOjpVbnNjYWxlZEN5Y2xlQ2xvY2s6Ok5vdygpID4+IGtT
aGlmdDsKKyAgfQorICByZXR1cm4gZm4oKSA+PiBrU2hpZnQ7CiB9CiAKIGRvdWJsZSBDeWNsZUNs
b2NrOjpGcmVxdWVuY3koKSB7CiAgIHJldHVybiBrRnJlcXVlbmN5U2NhbGUgKiBiYXNlX2ludGVy
bmFsOjpVbnNjYWxlZEN5Y2xlQ2xvY2s6OkZyZXF1ZW5jeSgpOwogfQogCit2b2lkIEN5Y2xlQ2xv
Y2tTb3VyY2U6OlJlZ2lzdGVyKEN5Y2xlQ2xvY2tTb3VyY2VGdW5jIHNvdXJjZSkgeworICAvLyBD
b3JyZXNwb25kcyB0byB0aGUgbG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSBpbiBMb2Fk
Q3ljbGVDbG9ja1NvdXJjZS4KKyAgY3ljbGVfY2xvY2tfc291cmNlLnN0b3JlKHNvdXJjZSwgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7Cit9CisKICNlbHNlCiAKIGludDY0X3QgQ3ljbGVDbG9j
azo6Tm93KCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9jeWNsZWNsb2NrLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL2N5Y2xlY2xvY2suaAppbmRleCA2MGU5NzE1ODNjNTc5M2Mz
Mjg2Nzc5ZGVmMzY5NDIwZTdlMzJlMWRiLi43OTQ1NjRlMTJmMTdhZjc2NWRmMTlmOTBhNDhmMWM4
NzNiN2RlNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2N5Y2xlY2xvY2suaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2N5Y2xlY2xvY2suaApAQCAtNSw3ICs1LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjgsNyArMjgsNiBAQAogLy8gbm90IG5lY2Vzc2Fy
aWx5ICJDUFUgY3ljbGVzIiBhbmQgY29kZSBzaG91bGQgbm90IHJlbHkgb24gdGhhdCBiZWhhdmlv
ciwgZXZlbgogLy8gaWYgZXhwZXJpbWVudGFsbHkgb2JzZXJ2ZWQuCiAvLwotLy8KIC8vIEFuIGFy
Yml0cmFyeSBvZmZzZXQgbWF5IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgY291bnRlciBhdCBwb3dl
ciBvbi4KIC8vCiAvLyBPbiBzb21lIHBsYXRmb3JtcywgdGhlIHJhdGUgYW5kIG9mZnNldCBvZiB0
aGUgY291bnRlciBtYXkgZGlmZmVyCkBAIC03MSw2ICs3MCwyMCBAQCBjbGFzcyBDeWNsZUNsb2Nr
IHsKICAgQ3ljbGVDbG9jayYgb3BlcmF0b3I9KGNvbnN0IEN5Y2xlQ2xvY2smKSA9IGRlbGV0ZTsK
IH07CiAKK3VzaW5nIEN5Y2xlQ2xvY2tTb3VyY2VGdW5jID0gaW50NjRfdCAoKikoKTsKKworY2xh
c3MgQ3ljbGVDbG9ja1NvdXJjZSB7CisgcHJpdmF0ZToKKyAgLy8gQ3ljbGVDbG9ja1NvdXJjZTo6
UmVnaXN0ZXIoKQorICAvLworICAvLyBSZWdpc3RlciBhIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMg
YW4gYWx0ZXJuYXRlIHNvdXJjZSBmb3IgdGhlIHVuc2NhbGVkIENQVQorICAvLyBjeWNsZSBjb3Vu
dCB2YWx1ZS4gVGhlIHNvdXJjZSBmdW5jdGlvbiBtdXN0IGJlIGFzeW5jIHNpZ25hbCBzYWZlLCBt
dXN0IG5vdAorICAvLyBjYWxsIEN5Y2xlQ2xvY2s6Ok5vdygpLCBhbmQgbXVzdCBoYXZlIGEgZnJl
cXVlbmN5IHRoYXQgbWF0Y2hlcyB0aGF0IG9mIHRoZQorICAvLyB1bnNjYWxlZCBjbG9jayB1c2Vk
IGJ5IEN5Y2xlQ2xvY2suIEEgbnVsbHB0ciB2YWx1ZSByZXNldHMgQ3ljbGVDbG9jayB0byB1c2UK
KyAgLy8gdGhlIGRlZmF1bHQgc291cmNlLgorICBzdGF0aWMgdm9pZCBSZWdpc3RlcihDeWNsZUNs
b2NrU291cmNlRnVuYyBzb3VyY2UpOworfTsKKwogfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJu
YWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvZGlyZWN0X21tYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZGlyZWN0X21tYXAuaAppbmRl
eCAwNDI2ZTExODkwYjY4MDU4NjAxMmYwNTYzMzI2M2MwOWExM2ExZGEyLi4wNDAxZGRmYTdlNjA3
OTVmMjQ5Y2YyNDNlYzRiNmZiMDA4MTE1YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy
bmFsL2RpcmVjdF9tbWFwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9kaXJlY3RfbW1hcC5o
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC03NSw3ICs3NSwx
MSBAQCBpbmxpbmUgdm9pZCogRGlyZWN0TW1hcCh2b2lkKiBzdGFydCwgc2l6ZV90IGxlbmd0aCwg
aW50IHByb3QsIGludCBmbGFncywgaW50IGZkLAogICAvLyBPbiB0aGVzZSBhcmNoaXRlY3R1cmVz
LCBpbXBsZW1lbnQgbW1hcCB3aXRoIG1tYXAyLgogICBzdGF0aWMgaW50IHBhZ2VzaXplID0gMDsK
ICAgaWYgKHBhZ2VzaXplID09IDApIHsKKyNpZiBkZWZpbmVkKF9fd2FzbV9fKSB8fCBkZWZpbmVk
KF9fYXNtanNfXykKICAgICBwYWdlc2l6ZSA9IGdldHBhZ2VzaXplKCk7CisjZWxzZQorICAgIHBh
Z2VzaXplID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOworI2VuZGlmCiAgIH0KICAgaWYgKG9mZnNl
dCA8IDAgfHwgb2Zmc2V0ICUgcGFnZXNpemUgIT0gMCkgewogICAgIGVycm5vID0gRUlOVkFMOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9lbmRpYW4uaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvZW5kaWFuLmgKaW5kZXggZWRjMTBmMTBhNWFhYTM1NDhhM2M0NTFiYzU3NWU1MjFmMTIy
NzU2ZS4uMjk2ZTkyZDllNTUwZGQ5M2M0MzUxZTdlZDk1NTM0M2U0NDAyZTVjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9lbmRpYW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L2VuZGlhbi5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0y
MCw3ICsyMCw3IEBACiAjaWZkZWYgX01TQ19WRVIKICNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0vLyBNYWMgT1Mg
WCAvIERhcndpbiBmZWF0dXJlcworLy8gbWFjT1MgLyBEYXJ3aW4gZmVhdHVyZXMKICNpbmNsdWRl
IDxsaWJrZXJuL09TQnl0ZU9yZGVyLmg+CiAjZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogI2lu
Y2x1ZGUgPHN5cy9lbmRpYW4uaD4KQEAgLTc1LDIxICs3NSwyMSBAQCBpbmxpbmUgdWludDY0X3Qg
Z2Jzd2FwXzY0KHVpbnQ2NF90IGhvc3RfaW50KSB7CiAgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRf
cChob3N0X2ludCkpIHsKICAgICByZXR1cm4gX19ic3dhcF9jb25zdGFudF82NChob3N0X2ludCk7
CiAgIH0gZWxzZSB7Ci0gICAgcmVnaXN0ZXIgdWludDY0X3QgcmVzdWx0OworICAgIHVpbnQ2NF90
IHJlc3VsdDsKICAgICBfX2FzbV9fKCJic3dhcCAlMCIgOiAiPXIiKHJlc3VsdCkgOiAiMCIoaG9z
dF9pbnQpKTsKICAgICByZXR1cm4gcmVzdWx0OwogICB9CiAjZWxpZiBkZWZpbmVkKF9fR0xJQkNf
XykKICAgcmV0dXJuIGJzd2FwXzY0KGhvc3RfaW50KTsKICNlbHNlCi0gIHJldHVybiAoKCh4ICYg
dWludDY0X3R7KDB4RkZ9KSA8PCA1NikgfAotICAgICAgICAgICgoeCAmIHVpbnQ2NF90eygweEZG
MDB9KSA8PCA0MCkgfAotICAgICAgICAgICgoeCAmIHVpbnQ2NF90eygweEZGMDAwMH0pIDw8IDI0
KSB8Ci0gICAgICAgICAgKCh4ICYgdWludDY0X3R7KDB4RkYwMDAwMDB9KSA8PCA4KSB8Ci0gICAg
ICAgICAgKCh4ICYgdWludDY0X3R7KDB4RkYwMDAwMDAwMH0pID4+IDgpIHwKLSAgICAgICAgICAo
KHggJiB1aW50NjRfdHsoMHhGRjAwMDAwMDAwMDB9KSA+PiAyNCkgfAotICAgICAgICAgICgoeCAm
IHVpbnQ2NF90eygweEZGMDAwMDAwMDAwMDAwfSkgPj4gNDApIHwKLSAgICAgICAgICAoKHggJiB1
aW50NjRfdHsoMHhGRjAwMDAwMDAwMDAwMDAwfSkgPj4gNTYpKTsKKyAgcmV0dXJuICgoKGhvc3Rf
aW50ICYgdWludDY0X3R7MHhGRn0pIDw8IDU2KSB8CisgICAgICAgICAgKChob3N0X2ludCAmIHVp
bnQ2NF90ezB4RkYwMH0pIDw8IDQwKSB8CisgICAgICAgICAgKChob3N0X2ludCAmIHVpbnQ2NF90
ezB4RkYwMDAwfSkgPDwgMjQpIHwKKyAgICAgICAgICAoKGhvc3RfaW50ICYgdWludDY0X3R7MHhG
RjAwMDAwMH0pIDw8IDgpIHwKKyAgICAgICAgICAoKGhvc3RfaW50ICYgdWludDY0X3R7MHhGRjAw
MDAwMDAwfSkgPj4gOCkgfAorICAgICAgICAgICgoaG9zdF9pbnQgJiB1aW50NjRfdHsweEZGMDAw
MDAwMDAwMH0pID4+IDI0KSB8CisgICAgICAgICAgKChob3N0X2ludCAmIHVpbnQ2NF90ezB4RkYw
MDAwMDAwMDAwMDB9KSA+PiA0MCkgfAorICAgICAgICAgICgoaG9zdF9pbnQgJiB1aW50NjRfdHsw
eEZGMDAwMDAwMDAwMDAwMDB9KSA+PiA1NikpOwogI2VuZGlmICAvLyBic3dhcF82NAogfQogCkBA
IC05Nyw4ICs5NywxMCBAQCBpbmxpbmUgdWludDMyX3QgZ2Jzd2FwXzMyKHVpbnQzMl90IGhvc3Rf
aW50KSB7CiAjaWYgZGVmaW5lZChfX0dMSUJDX18pCiAgIHJldHVybiBic3dhcF8zMihob3N0X2lu
dCk7CiAjZWxzZQotICByZXR1cm4gKCgoeCAmIDB4RkYpIDw8IDI0KSB8ICgoeCAmIDB4RkYwMCkg
PDwgOCkgfCAoKHggJiAweEZGMDAwMCkgPj4gOCkgfAotICAgICAgICAgICgoeCAmIDB4RkYwMDAw
MDApID4+IDI0KSk7CisgIHJldHVybiAoKChob3N0X2ludCAmIHVpbnQzMl90ezB4RkZ9KSA8PCAy
NCkgfAorICAgICAgICAgICgoaG9zdF9pbnQgJiB1aW50MzJfdHsweEZGMDB9KSA8PCA4KSB8Cisg
ICAgICAgICAgKChob3N0X2ludCAmIHVpbnQzMl90ezB4RkYwMDAwfSkgPj4gOCkgfAorICAgICAg
ICAgICgoaG9zdF9pbnQgJiB1aW50MzJfdHsweEZGMDAwMDAwfSkgPj4gMjQpKTsKICNlbmRpZgog
fQogCkBAIC0xMDYsNyArMTA4LDggQEAgaW5saW5lIHVpbnQxNl90IGdic3dhcF8xNih1aW50MTZf
dCBob3N0X2ludCkgewogI2lmIGRlZmluZWQoX19HTElCQ19fKQogICByZXR1cm4gYnN3YXBfMTYo
aG9zdF9pbnQpOwogI2Vsc2UKLSAgcmV0dXJuIHVpbnQxNl90eygoeCAmIDB4RkYpIDw8IDgpIHwg
KCh4ICYgMHhGRjAwKSA+PiA4KX07CisgIHJldHVybiAoKChob3N0X2ludCAmIHVpbnQxNl90ezB4
RkZ9KSA8PCA4KSB8CisgICAgICAgICAgKChob3N0X2ludCAmIHVpbnQxNl90ezB4RkYwMH0pID4+
IDgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2VuZGlh
bl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9lbmRpYW5fdGVzdC5jYwppbmRleCBlMjc2
OTE1NTNiYzYyOGNhZjFiYTkxNmEzOWRjOGEzYTlmMmE4ODFmLi45OGEwOTllNDNlN2EwY2U3ZjAz
YmExMTczMWI2NjA3Mjc2NjdlMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2Vu
ZGlhbl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuX3Rlc3QuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcuY2MKaW5kZXggZjFkMDgxZjdlNTBkZDY2
YWU5M2JkM2Q4NjEyZWYyMWUxZjUyMTg0My4uNmVmNDMyNWM4NjEzYTQ3Y2Q1ODExZWU3NWRhNDEw
ZDBhMWNhYzk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fc2Fm
ZXR5X3Rlc3RpbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fc2FmZXR5
X3Rlc3RpbmcuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTIzLDYgKzIzLDEwIEBAIGV4Y2VwdGlvbnNfaW50ZXJuYWw6Ok5vVGhyb3dUYWcgbm90aHJvd19j
dG9yOwogCiBleGNlcHRpb25zX2ludGVybmFsOjpTdHJvbmdHdWFyYW50ZWVUYWdUeXBlIHN0cm9u
Z19ndWFyYW50ZWU7CiAKK2V4Y2VwdGlvbnNfaW50ZXJuYWw6OkV4Y2VwdGlvblNhZmV0eVRlc3RC
dWlsZGVyPD4gTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpIHsKKyAgcmV0dXJuIHt9OworfQor
CiBuYW1lc3BhY2UgZXhjZXB0aW9uc19pbnRlcm5hbCB7CiAKIGludCBjb3VudGRvd24gPSAtMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5n
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oCmluZGV4
IDU2NjVhMWI2N2RiMmVjNGNhMmFkODBmZmEwNmZlNmU5Y2ZjNDkxYjkuLmJlMzhiYTU0OWVmNzI2
ZmMyMmJhODQwZTQzZTk5ZjQzZjFkOGJiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9l
eGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3Ry
YWl0cy5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgogI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmgiCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25h
bC5oIgorI2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCiAKIG5hbWVzcGFjZSB0ZXN0
aW5nIHsKIApAQCAtMTI3LDEwICsxMjcsOCBAQCBjbGFzcyBDb25zdHJ1Y3RvclRyYWNrZXIgewog
ICAgICAgdm9pZCogYWRkcmVzcyA9IGl0LmZpcnN0OwogICAgICAgVHJhY2tlZEFkZHJlc3MmIHRy
YWNrZWRfYWRkcmVzcyA9IGl0LnNlY29uZDsKICAgICAgIGlmICh0cmFja2VkX2FkZHJlc3MuaXNf
YWxpdmUpIHsKLSAgICAgICAgQUREX0ZBSUxVUkUoKSA8PCAiT2JqZWN0IGF0IGFkZHJlc3MgIiA8
PCBhZGRyZXNzCi0gICAgICAgICAgICAgICAgICAgICAgPDwgIiB3aXRoIGNvdW50ZG93biBvZiAi
IDw8IGNvdW50ZG93bl8KLSAgICAgICAgICAgICAgICAgICAgICA8PCAiIHdhcyBub3QgZGVzdHJv
eWVkIFsiIDw8IHRyYWNrZWRfYWRkcmVzcy5kZXNjcmlwdGlvbgotICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJdIjsKKyAgICAgICAgQUREX0ZBSUxVUkUoKSA8PCBFcnJvck1lc3NhZ2UoYWRkcmVz
cywgdHJhY2tlZF9hZGRyZXNzLmRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3VudGRvd25fLCAiT2JqZWN0IHdhcyBub3QgZGVzdHJveWVkLiIpOwog
ICAgICAgfQogICAgIH0KICAgfQpAQCAtMTQxLDExICsxMzksMTEgQEAgY2xhc3MgQ29uc3RydWN0
b3JUcmFja2VyIHsKICAgICBUcmFja2VkQWRkcmVzcyYgdHJhY2tlZF9hZGRyZXNzID0KICAgICAg
ICAgY3VycmVudF90cmFja2VyX2luc3RhbmNlXy0+YWRkcmVzc19tYXBfW2FkZHJlc3NdOwogICAg
IGlmICh0cmFja2VkX2FkZHJlc3MuaXNfYWxpdmUpIHsKLSAgICAgIEFERF9GQUlMVVJFKCkgPDwg
Ik9iamVjdCBhdCBhZGRyZXNzICIgPDwgYWRkcmVzcyA8PCAiIHdpdGggY291bnRkb3duIG9mICIK
LSAgICAgICAgICAgICAgICAgICAgPDwgY3VycmVudF90cmFja2VyX2luc3RhbmNlXy0+Y291bnRk
b3duXwotICAgICAgICAgICAgICAgICAgICA8PCAiIHdhcyByZS1jb25zdHJ1Y3RlZC4gUHJldmlv
dXNseTogWyIKLSAgICAgICAgICAgICAgICAgICAgPDwgdHJhY2tlZF9hZGRyZXNzLmRlc2NyaXB0
aW9uIDw8ICJdIE5vdzogWyIgPDwgZGVzY3JpcHRpb24KLSAgICAgICAgICAgICAgICAgICAgPDwg
Il0iOworICAgICAgQUREX0ZBSUxVUkUoKSA8PCBFcnJvck1lc3NhZ2UoCisgICAgICAgICAgYWRk
cmVzcywgdHJhY2tlZF9hZGRyZXNzLmRlc2NyaXB0aW9uLAorICAgICAgICAgIGN1cnJlbnRfdHJh
Y2tlcl9pbnN0YW5jZV8tPmNvdW50ZG93bl8sCisgICAgICAgICAgIk9iamVjdCB3YXMgcmUtY29u
c3RydWN0ZWQuIEN1cnJlbnQgb2JqZWN0IHdhcyBjb25zdHJ1Y3RlZCBieSAiICsKKyAgICAgICAg
ICAgICAgZGVzY3JpcHRpb24pOwogICAgIH0KICAgICB0cmFja2VkX2FkZHJlc3MgPSB7dHJ1ZSwg
c3RkOjptb3ZlKGRlc2NyaXB0aW9uKX07CiAgIH0KQEAgLTE1OSwxMCArMTU3LDkgQEAgY2xhc3Mg
Q29uc3RydWN0b3JUcmFja2VyIHsKIAogICAgIFRyYWNrZWRBZGRyZXNzJiB0cmFja2VkX2FkZHJl
c3MgPSBpdC0+c2Vjb25kOwogICAgIGlmICghdHJhY2tlZF9hZGRyZXNzLmlzX2FsaXZlKSB7Ci0g
ICAgICBBRERfRkFJTFVSRSgpIDw8ICJPYmplY3QgYXQgYWRkcmVzcyAiIDw8IGFkZHJlc3MgPDwg
IiB3aXRoIGNvdW50ZG93biBvZiAiCi0gICAgICAgICAgICAgICAgICAgIDw8IGN1cnJlbnRfdHJh
Y2tlcl9pbnN0YW5jZV8tPmNvdW50ZG93bl8KLSAgICAgICAgICAgICAgICAgICAgPDwgIiB3YXMg
cmUtZGVzdHJveWVkIG9yIGNyZWF0ZWQgcHJpb3IgdG8gY29uc3RydWN0aW9uICIKLSAgICAgICAg
ICAgICAgICAgICAgPDwgInRyYWNraW5nIFsiIDw8IHRyYWNrZWRfYWRkcmVzcy5kZXNjcmlwdGlv
biA8PCAiXSI7CisgICAgICBBRERfRkFJTFVSRSgpIDw8IEVycm9yTWVzc2FnZShhZGRyZXNzLCB0
cmFja2VkX2FkZHJlc3MuZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjdXJyZW50X3RyYWNrZXJfaW5zdGFuY2VfLT5jb3VudGRvd25fLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9iamVjdCB3YXMgcmUtZGVzdHJveWVkLiIpOwog
ICAgIH0KICAgICB0cmFja2VkX2FkZHJlc3MuaXNfYWxpdmUgPSBmYWxzZTsKICAgfQpAQCAtMTcy
LDYgKzE2OSwxOCBAQCBjbGFzcyBDb25zdHJ1Y3RvclRyYWNrZXIgewogICAgIHJldHVybiBjdXJy
ZW50X3RyYWNrZXJfaW5zdGFuY2VfICE9IG51bGxwdHI7CiAgIH0KIAorICBzdGF0aWMgc3RkOjpz
dHJpbmcgRXJyb3JNZXNzYWdlKHZvaWQqIGFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFkZHJlc3NfZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50ZG93biwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXJyb3JfZGVzY3JpcHRp
b24pIHsKKyAgICByZXR1cm4gYWJzbDo6U3Vic3RpdHV0ZSgKKyAgICAgICAgIldpdGggY291bmR0
b3duIGF0ICQwOlxuIgorICAgICAgICAiICAkMVxuIgorICAgICAgICAiICBPYmplY3Qgb3JpZ2lu
YWxseSBjb25zdHJ1Y3RlZCBieSAkMlxuIgorICAgICAgICAiICBPYmplY3QgYWRkcmVzczogJDNc
biIsCisgICAgICAgIGNvdW50ZG93biwgZXJyb3JfZGVzY3JpcHRpb24sIGFkZHJlc3NfZGVzY3Jp
cHRpb24sIGFkZHJlc3MpOworICB9CisKICAgc3RkOjp1bm9yZGVyZWRfbWFwPHZvaWQqLCBUcmFj
a2VkQWRkcmVzcz4gYWRkcmVzc19tYXBfOwogICBpbnQgY291bnRkb3duXzsKIApAQCAtMTkwLDcw
ICsxOTksNiBAQCBjbGFzcyBUcmFja2VkT2JqZWN0IHsKIAogICB+VHJhY2tlZE9iamVjdCgpIG5v
ZXhjZXB0IHsgQ29uc3RydWN0b3JUcmFja2VyOjpPYmplY3REZXN0cnVjdGVkKHRoaXMpOyB9CiB9
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBl
bmFtZSBDb250cmFjdD4KLWFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4g
VGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd25JbXBsKAotICAgIGNvbnN0IEZhY3RvcnkmIGZh
Y3RvcnksIGNvbnN0IE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBpbnQgY291bnQsCi0gICAgY29uc3Qg
Q29udHJhY3QmIGNvbnRyYWN0KSB7Ci0gIGF1dG8gdF9wdHIgPSBmYWN0b3J5KCk7Ci0gIGFic2w6
Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4gY3VycmVudF9yZXM7Ci0gIFNldENv
dW50ZG93bihjb3VudCk7Ci0gIHRyeSB7Ci0gICAgb3BlcmF0aW9uKHRfcHRyLmdldCgpKTsKLSAg
fSBjYXRjaCAoY29uc3QgZXhjZXB0aW9uc19pbnRlcm5hbDo6VGVzdEV4Y2VwdGlvbiYgZSkgewot
ICAgIGN1cnJlbnRfcmVzLmVtcGxhY2UoY29udHJhY3QodF9wdHIuZ2V0KCkpKTsKLSAgICBpZiAo
IWN1cnJlbnRfcmVzLnZhbHVlKCkpIHsKLSAgICAgICpjdXJyZW50X3JlcyA8PCBlLndoYXQoKSA8
PCAiIGZhaWxlZCBjb250cmFjdCBjaGVjayI7Ci0gICAgfQotICB9Ci0gIFVuc2V0Q291bnRkb3du
KCk7Ci0gIHJldHVybiBjdXJyZW50X3JlczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZhY3Rv
cnksIHR5cGVuYW1lIE9wZXJhdGlvbj4KLWFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdD4gVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd25JbXBsKAotICAgIGNvbnN0IEZh
Y3RvcnkmIGZhY3RvcnksIGNvbnN0IE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBpbnQgY291bnQsCi0g
ICAgU3Ryb25nR3VhcmFudGVlVGFnVHlwZSkgewotICB1c2luZyBUUHRyID0gdHlwZW5hbWUgZGVj
bHR5cGUoZmFjdG9yeSgpKTo6cG9pbnRlcjsKLSAgYXV0byB0X2lzX3N0cm9uZyA9IFsmXShUUHRy
IHQpIHsgcmV0dXJuICp0ID09ICpmYWN0b3J5KCk7IH07Ci0gIHJldHVybiBUZXN0U2luZ2xlQ29u
dHJhY3RBdENvdW50ZG93bkltcGwoZmFjdG9yeSwgb3BlcmF0aW9uLCBjb3VudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0X2lzX3N0cm9uZyk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24sIHR5cGVuYW1lIENv
bnRyYWN0PgotaW50IFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duKAotICAgIGNvbnN0IEZh
Y3RvcnkmIGZhY3RvcnksIGNvbnN0IE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBpbnQgY291bnQsCi0g
ICAgY29uc3QgQ29udHJhY3QmIGNvbnRyYWN0LAotICAgIGFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6
OkFzc2VydGlvblJlc3VsdD4qIHJlZHVjZWRfcmVzKSB7Ci0gIC8vIElmIHJlZHVjZWRfcmVzIGlz
IGVtcHR5LCBpdCBtZWFucyB0aGUgY3VycmVudCBjYWxsIHRvCi0gIC8vIFRlc3RTaW5nbGVDb250
cmFjdEF0Q291bnRkb3duKC4uLikgaXMgdGhlIGZpcnN0IHRlc3QgYmVpbmcgcnVuIHNvIHdlIGRv
Ci0gIC8vIHdhbnQgdG8gcnVuIGl0LiBBbHRlcm5hdGl2ZWx5LCBpZiBpdCdzIG5vdCBlbXB0eSAo
bWVhbmluZyBhIHByZXZpb3VzIHRlc3QKLSAgLy8gaGFzIHJ1bikgd2Ugd2FudCB0byBjaGVjayBp
ZiBpdCBwYXNzZWQuIElmIHRoZSBwcmV2aW91cyB0ZXN0IGRpZCBwYXNzLCB3ZQotICAvLyB3YW50
IHRvIGNvbnRpbmUgcnVubmluZyB0ZXN0cyBzbyB3ZSBkbyB3YW50IHRvIHJ1biB0aGUgY3VycmVu
dCBvbmUuIElmIGl0Ci0gIC8vIGZhaWxlZCwgd2Ugd2FudCB0byBzaG9ydCBjaXJjdWl0IHNvIGFz
IG5vdCB0byBvdmVyd3JpdGUgdGhlIEFzc2VydGlvblJlc3VsdAotICAvLyBvdXRwdXQuIElmIHRo
YXQncyB0aGUgY2FzZSwgd2UgZG8gbm90IHJ1biB0aGUgY3VycmVudCB0ZXN0IGFuZCBpbnN0ZWFk
IHdlCi0gIC8vIHNpbXBseSByZXR1cm4uCi0gIGlmICghcmVkdWNlZF9yZXMtPmhhc192YWx1ZSgp
IHx8IHJlZHVjZWRfcmVzLT52YWx1ZSgpKSB7Ci0gICAgKnJlZHVjZWRfcmVzID0KLSAgICAgICAg
VGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd25JbXBsKGZhY3RvcnksIG9wZXJhdGlvbiwgY291
bnQsIGNvbnRyYWN0KTsKLSAgfQotICByZXR1cm4gMDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEZhY3RvcnksIHR5cGVuYW1lIE9wZXJhdGlvbiwgdHlwZW5hbWUuLi4gQ29udHJhY3RzPgotaW5s
aW5lIGFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4gVGVzdEFsbENvbnRy
YWN0c0F0Q291bnRkb3duKAotICAgIGNvbnN0IEZhY3RvcnkmIGZhY3RvcnksIGNvbnN0IE9wZXJh
dGlvbiYgb3BlcmF0aW9uLCBpbnQgY291bnQsCi0gICAgY29uc3QgQ29udHJhY3RzJi4uLiBjb250
cmFjdHMpIHsKLSAgYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0PiByZWR1
Y2VkX3JlczsKLQotICAvLyBSdW4gZWFjaCBjaGVja2VyLCBzaG9ydCBjaXJjdWl0aW5nIGFmdGVy
IHRoZSBmaXJzdCBmYWlsdXJlCi0gIGludCBkdW1teVtdID0gewotICAgICAgMCwgKFRlc3RTaW5n
bGVDb250cmFjdEF0Q291bnRkb3duKGZhY3RvcnksIG9wZXJhdGlvbiwgY291bnQsIGNvbnRyYWN0
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVkdWNlZF9yZXMp
KS4uLn07Ci0gIHN0YXRpY19jYXN0PHZvaWQ+KGR1bW15KTsKLSAgcmV0dXJuIHJlZHVjZWRfcmVz
OwotfQotCiB9ICAvLyBuYW1lc3BhY2UgZXhjZXB0aW9uc19pbnRlcm5hbAogCiBleHRlcm4gZXhj
ZXB0aW9uc19pbnRlcm5hbDo6Tm9UaHJvd1RhZyBub3Rocm93X2N0b3I7CkBAIC02MTMsOCArNTU4
LDggQEAgY2xhc3MgVGhyb3dpbmdWYWx1ZSA6IHByaXZhdGUgZXhjZXB0aW9uc19pbnRlcm5hbDo6
VHJhY2tlZE9iamVjdCB7CiAgIC8vIFdlIHByb3ZpZGUgYm90aCByZWd1bGFyIGFuZCB0ZW1wbGF0
ZWQgb3BlcmF0b3IgZGVsZXRlIGJlY2F1c2UgaWYgb25seSB0aGUKICAgLy8gdGVtcGxhdGVkIHZl
cnNpb24gaXMgcHJvdmlkZWQgYXMgd2UgZGlkIHdpdGggb3BlcmF0b3IgbmV3LCB0aGUgY29tcGls
ZXIgaGFzCiAgIC8vIG5vIHdheSBvZiBrbm93aW5nIHdoaWNoIG92ZXJsb2FkIG9mIG9wZXJhdG9y
IGRlbGV0ZSB0byBjYWxsLiBTZWUKLSAgLy8gaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9j
cHAvbWVtb3J5L25ldy9vcGVyYXRvcl9kZWxldGUgYW5kCi0gIC8vIGh0dHA6Ly9lbi5jcHByZWZl
cmVuY2UuY29tL3cvY3BwL2xhbmd1YWdlL2RlbGV0ZSBmb3IgdGhlIGdvcnkgZGV0YWlscy4KKyAg
Ly8gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL21lbW9yeS9uZXcvb3BlcmF0b3Jf
ZGVsZXRlIGFuZAorICAvLyBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3Vh
Z2UvZGVsZXRlIGZvciB0aGUgZ29yeSBkZXRhaWxzLgogICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2
b2lkKiBwKSBub2V4Y2VwdCB7IDo6b3BlcmF0b3IgZGVsZXRlKHApOyB9CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC03NzMsNyArNzE4LDcgQEAgY2xhc3MgVGhyb3dpbmdBbGxv
Y2F0b3IgOiBwcml2YXRlIGV4Y2VwdGlvbnNfaW50ZXJuYWw6OlRyYWNrZWRPYmplY3QgewogICB9
CiAKICAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3Qgbm9leGNlcHQgewotICAgIHJldHVybiBz
dGQ6Om51bWVyaWNfbGltaXRzPGRpZmZlcmVuY2VfdHlwZT46Om1heCgpIC8gc2l6ZW9mKHZhbHVl
X3R5cGUpOworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxkaWZmZXJlbmNlX3R5cGU+
OjptYXgpKCkgLyBzaXplb2YodmFsdWVfdHlwZSk7CiAgIH0KIAogICBUaHJvd2luZ0FsbG9jYXRv
ciBzZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKCkgbm9leGNlcHQoCkBAIC04
NzEsNyArODE2LDcgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3ROb3Rocm93T3AoY29u
c3QgT3BlcmF0aW9uJiBvcGVyYXRpb24pIHsKIAogbmFtZXNwYWNlIGV4Y2VwdGlvbnNfaW50ZXJu
YWwgewogCi0vLyBEdW1teSBzdHJ1Y3QgZm9yIEV4Y2VwdGlvblNhZmV0eVRlc3Rlcjw+IHBhcnRp
YWwgc3RhdGUuCisvLyBEdW1teSBzdHJ1Y3QgZm9yIEV4Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVy
PD4gcGFydGlhbCBzdGF0ZS4KIHN0cnVjdCBVbmluaXRpYWxpemVkVCB7fTsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CkBAIC04OTMsMjAgKzgzOCw5NyBAQCB1c2luZyBFbmFibGVJZlRlc3RhYmxl
ID0gdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGYWN0
b3J5ID0gVW5pbml0aWFsaXplZFQsCiAgICAgICAgICAgdHlwZW5hbWUgT3BlcmF0aW9uID0gVW5p
bml0aWFsaXplZFQsIHR5cGVuYW1lLi4uIENvbnRyYWN0cz4KLWNsYXNzIEV4Y2VwdGlvblNhZmV0
eVRlc3RlcjsKK2NsYXNzIEV4Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyOwogCiB9ICAvLyBuYW1l
c3BhY2UgZXhjZXB0aW9uc19pbnRlcm5hbAogCi1leGNlcHRpb25zX2ludGVybmFsOjpFeGNlcHRp
b25TYWZldHlUZXN0ZXI8PiBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCk7CisvKgorICogQ29u
c3RydWN0cyBhbiBlbXB0eSBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlci4gQWxsCisgKiBFeGNl
cHRpb25TYWZldHlUZXN0QnVpbGRlciBvYmplY3RzIGFyZSBpbW11dGFibGUgYW5kIGFsbCBXaXRo
W3RoaW5nXSBtdXRhdGlvbgorICogbWV0aG9kcyByZXR1cm4gbmV3IGluc3RhbmNlcyBvZiBFeGNl
cHRpb25TYWZldHlUZXN0QnVpbGRlci4KKyAqCisgKiBJbiBvcmRlciB0byB0ZXN0IGEgVCBmb3Ig
ZXhjZXB0aW9uIHNhZmV0eSwgYSBmYWN0b3J5IGZvciB0aGF0IFQsIGEgdGVzdGFibGUKKyAqIG9w
ZXJhdGlvbiwgYW5kIGF0IGxlYXN0IG9uZSBjb250cmFjdCBjYWxsYmFjayByZXR1cm5pbmcgYW4g
YXNzZXJ0aW9uCisgKiByZXN1bHQgbXVzdCBiZSBhcHBsaWVkIHVzaW5nIHRoZSByZXNwZWN0aXZl
IG1ldGhvZHMuCisgKi8KK2V4Y2VwdGlvbnNfaW50ZXJuYWw6OkV4Y2VwdGlvblNhZmV0eVRlc3RC
dWlsZGVyPD4gTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpOwogCiBuYW1lc3BhY2UgZXhjZXB0
aW9uc19pbnRlcm5hbCB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc1VuaXF1ZVB0
ciA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEQ+CitzdHJ1Y3QgSXNVbmlxdWVQdHI8c3RkOjp1bmlxdWVfcHRyPFQsIEQ+PiA6IHN0ZDo6dHJ1
ZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeT4KK3N0cnVjdCBGYWN0b3J5
UHRyVHlwZUhlbHBlciB7CisgIHVzaW5nIHR5cGUgPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Y29u
c3QgRmFjdG9yeSY+KCkoKSk7CisKKyAgc3RhdGljX2Fzc2VydChJc1VuaXF1ZVB0cjx0eXBlPjo6
dmFsdWUsICJGYWN0b3JpZXMgbXVzdCByZXR1cm4gYSB1bmlxdWVfcHRyIik7Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRmFjdG9yeT4KK3VzaW5nIEZhY3RvcnlQdHJUeXBlID0gdHlwZW5hbWUg
RmFjdG9yeVB0clR5cGVIZWxwZXI8RmFjdG9yeT46OnR5cGU7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBGYWN0b3J5PgordXNpbmcgRmFjdG9yeUVsZW1lbnRUeXBlID0gdHlwZW5hbWUgRmFjdG9yeVB0
clR5cGU8RmFjdG9yeT46OmVsZW1lbnRfdHlwZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBFeGNlcHRpb25TYWZldHlUZXN0IHsKKyAgdXNpbmcgRmFjdG9yeSA9IHN0ZDo6ZnVuY3Rp
b248c3RkOjp1bmlxdWVfcHRyPFQ+KCk+OworICB1c2luZyBPcGVyYXRpb24gPSBzdGQ6OmZ1bmN0
aW9uPHZvaWQoVCopPjsKKyAgdXNpbmcgQ29udHJhY3QgPSBzdGQ6OmZ1bmN0aW9uPEFzc2VydGlv
blJlc3VsdChUKik+OworCisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQ29udHJh
Y3RzPgorICBleHBsaWNpdCBFeGNlcHRpb25TYWZldHlUZXN0KGNvbnN0IEZhY3RvcnkmIGYsIGNv
bnN0IE9wZXJhdGlvbiYgb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q29udHJhY3RzJi4uLiBjb250cmFjdHMpCisgICAgICA6IGZhY3RvcnlfKGYpLCBvcGVyYXRpb25f
KG9wKSwgY29udHJhY3RzX3tXcmFwQ29udHJhY3QoY29udHJhY3RzKS4uLn0ge30KKworICBBc3Nl
cnRpb25SZXN1bHQgVGVzdCgpIGNvbnN0IHsKKyAgICBmb3IgKGludCBjb3VudCA9IDA7OyArK2Nv
dW50KSB7CisgICAgICBleGNlcHRpb25zX2ludGVybmFsOjpDb25zdHJ1Y3RvclRyYWNrZXIgY3Qo
Y291bnQpOworCisgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRyYWN0IDogY29udHJhY3RzXykg
eworICAgICAgICBhdXRvIHRfcHRyID0gZmFjdG9yeV8oKTsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICBTZXRDb3VudGRvd24oY291bnQpOworICAgICAgICAgIG9wZXJhdGlvbl8odF9wdHIuZ2V0
KCkpOworICAgICAgICAgIC8vIFVuc2V0IGZvciB0aGUgY2FzZSB0aGF0IHRoZSBvcGVyYXRpb24g
dGhyb3dzIG5vIGV4Y2VwdGlvbnMsIHdoaWNoCisgICAgICAgICAgLy8gd291bGQgbGVhdmUgdGhl
IGNvdW50ZG93biBzZXQgYW5kIGJyZWFrIHRoZSAqbmV4dCogZXhjZXB0aW9uIHNhZmV0eQorICAg
ICAgICAgIC8vIHRlc3QgYWZ0ZXIgdGhpcyBvbmUuCisgICAgICAgICAgVW5zZXRDb3VudGRvd24o
KTsKKyAgICAgICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworICAgICAgICB9IGNhdGNo
IChjb25zdCBleGNlcHRpb25zX2ludGVybmFsOjpUZXN0RXhjZXB0aW9uJiBlKSB7CisgICAgICAg
ICAgaWYgKCFjb250cmFjdCh0X3B0ci5nZXQoKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgZS53aGF0KCkgPDwgIiBmYWlsZWQgY29udHJhY3QgY2hlY2siOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgcHJpdmF0ZToK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRyYWN0Rm4+CisgIENvbnRyYWN0IFdyYXBDb250cmFj
dChjb25zdCBDb250cmFjdEZuJiBjb250cmFjdCkgeworICAgIHJldHVybiBbY29udHJhY3RdKFQq
IHRfcHRyKSB7IHJldHVybiBBc3NlcnRpb25SZXN1bHQoY29udHJhY3QodF9wdHIpKTsgfTsKKyAg
fQorCisgIENvbnRyYWN0IFdyYXBDb250cmFjdChTdHJvbmdHdWFyYW50ZWVUYWdUeXBlKSB7Cisg
ICAgcmV0dXJuIFt0aGlzXShUKiB0X3B0cikgeyByZXR1cm4gQXNzZXJ0aW9uUmVzdWx0KCpmYWN0
b3J5XygpID09ICp0X3B0cik7IH07CisgIH0KKworICBGYWN0b3J5IGZhY3RvcnlfOworICBPcGVy
YXRpb24gb3BlcmF0aW9uXzsKKyAgc3RkOjp2ZWN0b3I8Q29udHJhY3Q+IGNvbnRyYWN0c187Cit9
OwogCiAvKgogICogQnVpbGRzIGEgdGVzdGVyIG9iamVjdCB0aGF0IHRlc3RzIGlmIHBlcmZvcm1p
bmcgYSBvcGVyYXRpb24gb24gYSBUIGZvbGxvd3MKICAqIGV4Y2VwdGlvbiBzYWZldHkgZ3VhcmFu
dGVlcy4gVmVyaWZpY2F0aW9uIGlzIGRvbmUgdmlhIGNvbnRyYWN0IGFzc2VydGlvbgogICogY2Fs
bGJhY2tzIGFwcGxpZWQgdG8gVCBpbnN0YW5jZXMgcG9zdC10aHJvdy4KICAqCi0gKiBUZW1wbGF0
ZSBwYXJhbWV0ZXJzIGZvciBFeGNlcHRpb25TYWZldHlUZXN0ZXI6CisgKiBUZW1wbGF0ZSBwYXJh
bWV0ZXJzIGZvciBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlcjoKICAqCiAgKiAtIEZhY3Rvcnk6
IFRoZSBmYWN0b3J5IG9iamVjdCAocGFzc2VkIGluIHZpYSB0ZXN0ZXIuV2l0aEZhY3RvcnkoLi4u
KSBvcgogICogICB0ZXN0ZXIuV2l0aEluaXRpYWxWYWx1ZSguLi4pKSBtdXN0IGJlIGludm9jYWJs
ZSB3aXRoIHRoZSBzaWduYXR1cmUKQEAgLTkzMywxMyArOTU1LDEzIEBAIG5hbWVzcGFjZSBleGNl
cHRpb25zX2ludGVybmFsIHsKICAqICAgcGxlYXNlLgogICovCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBlbmFtZS4uLiBDb250cmFjdHM+Ci1jbGFz
cyBFeGNlcHRpb25TYWZldHlUZXN0ZXIgeworY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxk
ZXIgewogIHB1YmxpYzoKICAgLyoKLSAgICogUmV0dXJucyBhIG5ldyBFeGNlcHRpb25TYWZldHlU
ZXN0ZXIgd2l0aCBhbiBpbmNsdWRlZCBUIGZhY3RvcnkgYmFzZWQgb24gdGhlCi0gICAqIHByb3Zp
ZGVkIFQgaW5zdGFuY2UuIFRoZSBleGlzdGluZyBmYWN0b3J5IHdpbGwgbm90IGJlIGluY2x1ZGVk
IGluIHRoZSBuZXdseQotICAgKiBjcmVhdGVkIHRlc3RlciBpbnN0YW5jZS4gVGhlIGNyZWF0ZWQg
ZmFjdG9yeSByZXR1cm5zIGEgbmV3IFQgaW5zdGFuY2UgYnkKLSAgICogY29weS1jb25zdHJ1Y3Rp
bmcgdGhlIHByb3ZpZGVkIGNvbnN0IFQmIHQuCisgICAqIFJldHVybnMgYSBuZXcgRXhjZXB0aW9u
U2FmZXR5VGVzdEJ1aWxkZXIgd2l0aCBhbiBpbmNsdWRlZCBUIGZhY3RvcnkgYmFzZWQKKyAgICog
b24gdGhlIHByb3ZpZGVkIFQgaW5zdGFuY2UuIFRoZSBleGlzdGluZyBmYWN0b3J5IHdpbGwgbm90
IGJlIGluY2x1ZGVkIGluCisgICAqIHRoZSBuZXdseSBjcmVhdGVkIHRlc3RlciBpbnN0YW5jZS4g
VGhlIGNyZWF0ZWQgZmFjdG9yeSByZXR1cm5zIGEgbmV3IFQKKyAgICogaW5zdGFuY2UgYnkgY29w
eS1jb25zdHJ1Y3RpbmcgdGhlIHByb3ZpZGVkIGNvbnN0IFQmIHQuCiAgICAqCiAgICAqIFByZWNv
bmRpdGlvbnMgZm9yIHRlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKGNvbnN0IFQmIHQpOgogICAgKgpA
QCAtOTQ4LDQxICs5NzAsNDEgQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAgICog
ICB0ZXN0ZXIuV2l0aEZhY3RvcnkoLi4uKS4KICAgICovCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8RGVmYXVsdEZhY3Rvcnk8VD4sIE9wZXJhdGlvbiwg
Q29udHJhY3RzLi4uPgorICBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlcjxEZWZhdWx0RmFjdG9y
eTxUPiwgT3BlcmF0aW9uLCBDb250cmFjdHMuLi4+CiAgIFdpdGhJbml0aWFsVmFsdWUoY29uc3Qg
VCYgdCkgY29uc3QgewogICAgIHJldHVybiBXaXRoRmFjdG9yeShEZWZhdWx0RmFjdG9yeTxUPih0
KSk7CiAgIH0KIAogICAvKgotICAgKiBSZXR1cm5zIGEgbmV3IEV4Y2VwdGlvblNhZmV0eVRlc3Rl
ciB3aXRoIHRoZSBwcm92aWRlZCBUIGZhY3RvcnkgaW5jbHVkZWQuCi0gICAqIFRoZSBleGlzdGlu
ZyBmYWN0b3J5IHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBuZXdseS1jcmVhdGVkIHRlc3Rl
cgotICAgKiBpbnN0YW5jZS4gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgZm9yIHVzZSB3aXRoIHR5
cGVzIGxhY2tpbmcgYSBjb3B5CisgICAqIFJldHVybnMgYSBuZXcgRXhjZXB0aW9uU2FmZXR5VGVz
dEJ1aWxkZXIgd2l0aCB0aGUgcHJvdmlkZWQgVCBmYWN0b3J5CisgICAqIGluY2x1ZGVkLiBUaGUg
ZXhpc3RpbmcgZmFjdG9yeSB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV3bHktY3JlYXRl
ZAorICAgKiB0ZXN0ZXIgaW5zdGFuY2UuIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIGZvciB1c2Ug
d2l0aCB0eXBlcyBsYWNraW5nIGEgY29weQogICAgKiBjb25zdHJ1Y3Rvci4gVHlwZXMgdGhhdCBj
YW4gYmUgY29weS1jb25zdHJ1Y3RlZCBzaG91bGQgaW5zdGVhZCB1c2UgdGhlCiAgICAqIG1ldGhv
ZCB0ZXN0ZXIuV2l0aEluaXRpYWxWYWx1ZSguLi4pLgogICAgKi8KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIE5ld0ZhY3Rvcnk+Ci0gIEV4Y2VwdGlvblNhZmV0eVRlc3RlcjxhYnNsOjpkZWNheV90PE5l
d0ZhY3Rvcnk+LCBPcGVyYXRpb24sIENvbnRyYWN0cy4uLj4KKyAgRXhjZXB0aW9uU2FmZXR5VGVz
dEJ1aWxkZXI8YWJzbDo6ZGVjYXlfdDxOZXdGYWN0b3J5PiwgT3BlcmF0aW9uLCBDb250cmFjdHMu
Li4+CiAgIFdpdGhGYWN0b3J5KGNvbnN0IE5ld0ZhY3RvcnkmIG5ld19mYWN0b3J5KSBjb25zdCB7
CiAgICAgcmV0dXJuIHtuZXdfZmFjdG9yeSwgb3BlcmF0aW9uXywgY29udHJhY3RzX307CiAgIH0K
IAogICAvKgotICAgKiBSZXR1cm5zIGEgbmV3IEV4Y2VwdGlvblNhZmV0eVRlc3RlciB3aXRoIHRo
ZSBwcm92aWRlZCB0ZXN0YWJsZSBvcGVyYXRpb24KLSAgICogaW5jbHVkZWQuIFRoZSBleGlzdGlu
ZyBvcGVyYXRpb24gd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIG5ld2x5IGNyZWF0ZWQKLSAg
ICogdGVzdGVyLgorICAgKiBSZXR1cm5zIGEgbmV3IEV4Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVy
IHdpdGggdGhlIHByb3ZpZGVkIHRlc3RhYmxlCisgICAqIG9wZXJhdGlvbiBpbmNsdWRlZC4gVGhl
IGV4aXN0aW5nIG9wZXJhdGlvbiB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUKKyAgICogbmV3
bHkgY3JlYXRlZCB0ZXN0ZXIuCiAgICAqLwogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTmV3T3BlcmF0
aW9uPgotICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8RmFjdG9yeSwgYWJzbDo6ZGVjYXlfdDxOZXdP
cGVyYXRpb24+LCBDb250cmFjdHMuLi4+CisgIEV4Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyPEZh
Y3RvcnksIGFic2w6OmRlY2F5X3Q8TmV3T3BlcmF0aW9uPiwgQ29udHJhY3RzLi4uPgogICBXaXRo
T3BlcmF0aW9uKGNvbnN0IE5ld09wZXJhdGlvbiYgbmV3X29wZXJhdGlvbikgY29uc3QgewogICAg
IHJldHVybiB7ZmFjdG9yeV8sIG5ld19vcGVyYXRpb24sIGNvbnRyYWN0c199OwogICB9CiAKICAg
LyoKLSAgICogUmV0dXJucyBhIG5ldyBFeGNlcHRpb25TYWZldHlUZXN0ZXIgd2l0aCB0aGUgcHJv
dmlkZWQgTW9yZUNvbnRyYWN0cy4uLgorICAgKiBSZXR1cm5zIGEgbmV3IEV4Y2VwdGlvblNhZmV0
eVRlc3RCdWlsZGVyIHdpdGggdGhlIHByb3ZpZGVkIE1vcmVDb250cmFjdHMuLi4KICAgICogY29t
YmluZWQgd2l0aCB0aGUgQ29udHJhY3RzLi4uIHRoYXQgd2VyZSBhbHJlYWR5IGluY2x1ZGVkIGlu
IHRoZSBpbnN0YW5jZQogICAgKiBvbiB3aGljaCB0aGUgbWV0aG9kIHdhcyBjYWxsZWQuIENvbnRy
YWN0cy4uLiBjYW5ub3QgYmUgcmVtb3ZlZCBvciByZXBsYWNlZAotICAgKiBvbmNlIGFkZGVkIHRv
IGFuIEV4Y2VwdGlvblNhZmV0eVRlc3RlciBpbnN0YW5jZS4gQSBmcmVzaCBvYmplY3QgbXVzdCBi
ZQotICAgKiBjcmVhdGVkIGluIG9yZGVyIHRvIGdldCBhbiBlbXB0eSBDb250cmFjdHMuLi4gbGlz
dC4KKyAgICogb25jZSBhZGRlZCB0byBhbiBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlciBpbnN0
YW5jZS4gQSBmcmVzaCBvYmplY3QgbXVzdAorICAgKiBiZSBjcmVhdGVkIGluIG9yZGVyIHRvIGdl
dCBhbiBlbXB0eSBDb250cmFjdHMuLi4gbGlzdC4KICAgICoKICAgICogSW4gYWRkaXRpb24gdG8g
cGFzc2luZyBpbiBjdXN0b20gY29udHJhY3QgYXNzZXJ0aW9uIGNhbGxiYWNrcywgdGhpcyBtZXRo
b2QKICAgICogYWNjZXB0cyBgdGVzdGluZzo6c3Ryb25nX2d1YXJhbnRlZWAgYXMgYW4gYXJndW1l
bnQgd2hpY2ggY2hlY2tzIFQgaW5zdGFuY2VzCkBAIC05OTEsOCArMTAxMyw4IEBAIGNsYXNzIEV4
Y2VwdGlvblNhZmV0eVRlc3RlciB7CiAgICAqIHByb3Blcmx5IHJvbGxlZCBiYWNrLgogICAgKi8K
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIE1vcmVDb250cmFjdHM+Ci0gIEV4Y2VwdGlvblNhZmV0
eVRlc3RlcjxGYWN0b3J5LCBPcGVyYXRpb24sIENvbnRyYWN0cy4uLiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFic2w6OmRlY2F5X3Q8TW9yZUNvbnRyYWN0cz4uLi4+CisgIEV4Y2VwdGlvblNh
ZmV0eVRlc3RCdWlsZGVyPEZhY3RvcnksIE9wZXJhdGlvbiwgQ29udHJhY3RzLi4uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpkZWNheV90PE1vcmVDb250cmFjdHM+Li4uPgog
ICBXaXRoQ29udHJhY3RzKGNvbnN0IE1vcmVDb250cmFjdHMmLi4uIG1vcmVfY29udHJhY3RzKSBj
b25zdCB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgZmFjdG9yeV8sIG9wZXJhdGlvbl8sCkBAIC0x
MDM5LDQ4ICsxMDYxLDI3IEBAIGNsYXNzIEV4Y2VwdGlvblNhZmV0eVRlc3RlciB7CiAgICAgICB0
eXBlbmFtZSBMYXp5T3BlcmF0aW9uID0gT3BlcmF0aW9uLAogICAgICAgdHlwZW5hbWUgPSBFbmFi
bGVJZlRlc3RhYmxlPHNpemVvZi4uLihDb250cmFjdHMpLCBGYWN0b3J5LCBMYXp5T3BlcmF0aW9u
Pj4KICAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3QoKSBjb25zdCB7Ci0gICAgcmV0dXJu
IFRlc3RJbXBsKG9wZXJhdGlvbl8sIGFic2w6OmluZGV4X3NlcXVlbmNlX2ZvcjxDb250cmFjdHMu
Li4+KCkpOworICAgIHJldHVybiBUZXN0KG9wZXJhdGlvbl8pOwogICB9CiAKICBwcml2YXRlOgog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZS4uLj4KLSAgZnJpZW5kIGNs
YXNzIEV4Y2VwdGlvblNhZmV0eVRlc3RlcjsKKyAgZnJpZW5kIGNsYXNzIEV4Y2VwdGlvblNhZmV0
eVRlc3RCdWlsZGVyOwogCi0gIGZyaWVuZCBFeGNlcHRpb25TYWZldHlUZXN0ZXI8PiB0ZXN0aW5n
OjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCk7CisgIGZyaWVuZCBFeGNlcHRpb25TYWZldHlU
ZXN0QnVpbGRlcjw+IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKTsKIAotICBF
eGNlcHRpb25TYWZldHlUZXN0ZXIoKSB7fQorICBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlcigp
IHt9CiAKLSAgRXhjZXB0aW9uU2FmZXR5VGVzdGVyKGNvbnN0IEZhY3RvcnkmIGYsIGNvbnN0IE9w
ZXJhdGlvbiYgbywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dHVwbGU8Q29u
dHJhY3RzLi4uPiYgaSkKKyAgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXIoY29uc3QgRmFjdG9y
eSYgZiwgY29uc3QgT3BlcmF0aW9uJiBvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnR1cGxlPENvbnRyYWN0cy4uLj4mIGkpCiAgICAgICA6IGZhY3RvcnlfKGYpLCBv
cGVyYXRpb25fKG8pLCBjb250cmFjdHNfKGkpIHt9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNl
bGVjdGVkT3BlcmF0aW9uLCBzaXplX3QuLi4gSW5kaWNlcz4KLSAgdGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IFRlc3RJbXBsKGNvbnN0IFNlbGVjdGVkT3BlcmF0aW9uJiBzZWxlY3RlZF9vcGVyYXRp
b24sCisgIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBUZXN0SW1wbChTZWxlY3RlZE9wZXJhdGlv
biBzZWxlY3RlZF9vcGVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjppbmRleF9zZXF1ZW5jZTxJbmRpY2VzLi4uPikgY29uc3QgewotICAgIC8vIFN0YXJ0
aW5nIGZyb20gMCBhbmQgY291bnRpbmcgdXB3YXJkcyB1bnRpbCBvbmUgb2YgdGhlIGV4aXQgY29u
ZGl0aW9ucyBpcwotICAgIC8vIGhpdC4uLgotICAgIGZvciAoaW50IGNvdW50ID0gMDs7ICsrY291
bnQpIHsKLSAgICAgIGV4Y2VwdGlvbnNfaW50ZXJuYWw6OkNvbnN0cnVjdG9yVHJhY2tlciBjdChj
b3VudCk7Ci0KLSAgICAgIC8vIFJ1biB0aGUgZnVsbCBleGNlcHRpb24gc2FmZXR5IHRlc3QgYWxn
b3JpdGhtIGZvciB0aGUgY3VycmVudCBjb3VudGRvd24KLSAgICAgIGF1dG8gcmVkdWNlZF9yZXMg
PQotICAgICAgICAgIFRlc3RBbGxDb250cmFjdHNBdENvdW50ZG93bihmYWN0b3J5Xywgc2VsZWN0
ZWRfb3BlcmF0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpnZXQ8SW5kaWNlcz4oY29udHJhY3RzXykuLi4pOwotICAgICAgLy8gSWYgdGhlcmUg
aXMgbm8gdmFsdWUgaW4gdGhlIG9wdGlvbmFsLCBubyBjb250cmFjdHMgd2VyZSBydW4gYmVjYXVz
ZSBubwotICAgICAgLy8gZXhjZXB0aW9uIHdhcyB0aHJvd24uIFRoaXMgbWVhbnMgdGhhdCB0aGUg
dGVzdCBpcyBjb21wbGV0ZSBhbmQgdGhlIGxvb3AKLSAgICAgIC8vIGNhbiBleGl0IHN1Y2Nlc3Nm
dWxseS4KLSAgICAgIGlmICghcmVkdWNlZF9yZXMuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAgcmV0
dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLSAgICAgIH0KLSAgICAgIC8vIElmIHRo
ZSBvcHRpb25hbCBpcyBub3QgZW1wdHkgYW5kIHRoZSB2YWx1ZSBpcyBmYWxzeSwgYW4gY29udHJh
Y3QgY2hlY2sKLSAgICAgIC8vIGZhaWxlZCBzbyB0aGUgdGVzdCBtdXN0IGV4aXQgdG8gcHJvcGVn
YXRlIHRoZSBmYWlsdXJlLgotICAgICAgaWYgKCFyZWR1Y2VkX3Jlcy52YWx1ZSgpKSB7Ci0gICAg
ICAgIHJldHVybiByZWR1Y2VkX3Jlcy52YWx1ZSgpOwotICAgICAgfQotICAgICAgLy8gSWYgdGhl
IG9wdGlvbmFsIGlzIG5vdCBlbXB0eSBhbmQgdGhlIHZhbHVlIGlzIG5vdCBmYWxzeSwgaXQgbWVh
bnMKLSAgICAgIC8vIGV4Y2VwdGlvbnMgd2VyZSB0aHJvd24gYnV0IHRoZSBjb250cmFjdHMgcGFz
c2VkIHNvIHRoZSB0ZXN0IG11c3QKLSAgICAgIC8vIGNvbnRpbnVlIHRvIHJ1bi4KLSAgICB9Cisg
ICAgcmV0dXJuIEV4Y2VwdGlvblNhZmV0eVRlc3Q8RmFjdG9yeUVsZW1lbnRUeXBlPEZhY3Rvcnk+
PigKKyAgICAgICAgICAgICAgIGZhY3RvcnlfLCBzZWxlY3RlZF9vcGVyYXRpb24sIHN0ZDo6Z2V0
PEluZGljZXM+KGNvbnRyYWN0c18pLi4uKQorICAgICAgICAuVGVzdCgpOwogICB9CiAKICAgRmFj
dG9yeSBmYWN0b3J5XzsKQEAgLTEwOTAsMjAgKzEwOTEsNiBAQCBjbGFzcyBFeGNlcHRpb25TYWZl
dHlUZXN0ZXIgewogCiB9ICAvLyBuYW1lc3BhY2UgZXhjZXB0aW9uc19pbnRlcm5hbAogCi0vKgot
ICogQ29uc3RydWN0cyBhbiBlbXB0eSBFeGNlcHRpb25TYWZldHlUZXN0ZXIuIEFsbCBFeGNlcHRp
b25TYWZldHlUZXN0ZXIKLSAqIG9iamVjdHMgYXJlIGltbXV0YWJsZSBhbmQgYWxsIFdpdGhbdGhp
bmddIG11dGF0aW9uIG1ldGhvZHMgcmV0dXJuIG5ldwotICogaW5zdGFuY2VzIG9mIEV4Y2VwdGlv
blNhZmV0eVRlc3Rlci4KLSAqCi0gKiBJbiBvcmRlciB0byB0ZXN0IGEgVCBmb3IgZXhjZXB0aW9u
IHNhZmV0eSwgYSBmYWN0b3J5IGZvciB0aGF0IFQsIGEgdGVzdGFibGUKLSAqIG9wZXJhdGlvbiwg
YW5kIGF0IGxlYXN0IG9uZSBjb250cmFjdCBjYWxsYmFjayByZXR1cm5pbmcgYW4gYXNzZXJ0aW9u
Ci0gKiByZXN1bHQgbXVzdCBiZSBhcHBsaWVkIHVzaW5nIHRoZSByZXNwZWN0aXZlIG1ldGhvZHMu
Ci0gKi8KLWlubGluZSBleGNlcHRpb25zX2ludGVybmFsOjpFeGNlcHRpb25TYWZldHlUZXN0ZXI8
PgotTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpIHsKLSAgcmV0dXJuIHt9OwotfQotCiB9ICAv
LyBuYW1lc3BhY2UgdGVzdGluZwogCiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9JTlRFUk5BTF9FWENF
UFRJT05fU0FGRVRZX1RFU1RJTkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
ZXhjZXB0aW9uX3Rlc3RpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3Rlc3Rp
bmcuaAppbmRleCAwY2Y3OTE4ZTRjNjc3ODg5NzFjZjk0MzM3YTI3OTQ2NjA2M2M2YjNmLi4wMWI1
NDY1NTcxMTdmNjBkNDg2MDc5MDE0MTNhZWViOWIyZjFlYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2ludGVybmFsL2V4Y2VwdGlvbl90ZXN0aW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5h
bC9leGNlcHRpb25fdGVzdGluZy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2hpZGVfcHRyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL2hpZGVfcHRyLmgKaW5kZXggNDVjZjQzODkxMmMyNzE0OTc2ZWJhNmE3
Nzk0ZjU1Y2YyODA0YWU4Mi4uY2Y4ZjQwODAyNDY5MDUzMzIzOGIzNjEyZjM1YmZkNTU1YTU1ZjBh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9oaWRlX3B0ci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvaW50ZXJuYWwvaGlkZV9wdHIuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9pZGVudGl0eS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9pZGVudGl0eS5oCmluZGV4IGExYTVkNzBhODRkZDM0ZDA1ZmYy
M2Y2NjJkNTBkM2M0MThkNmNhZjkuLjA4NjQ0N2M2MDM5YjcyMDdhYjk3MGU1ZGE3NDczNTg0OWM2
NWMzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaWRlbnRpdHkuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL2lkZW50aXR5LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaW5saW5lX3Zh
cmlhYmxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2lubGluZV92YXJpYWJsZS5oCmluZGV4IGY3
YmI4YzU2NTI1ZDg4ZTUyNjk2MDUwY2ExNDJhZWM2NTFkMWI0OTUuLjEzMGQ4YzI0NzZkZDIwMzNm
MGFiZGUwMjc2MWI0MWU4OGI4MjUxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
aW5saW5lX3ZhcmlhYmxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9pbmxpbmVfdmFyaWFi
bGUuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9pbmxpbmVfdmFyaWFibGVfdGVzdGluZy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9pbmxpbmVfdmFyaWFibGVfdGVzdGluZy5oCmluZGV4IGEwZGQyYmIyOGE0
MDJhMjg1YTRlNmFlNWFjZTBlNTFkYzZiY2I0ZjEuLjE1ZGM0ODFlMTAxMGU4MTE0ZTVmYjUyNzA0
ODdhODdlYzA0MDdkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaW5saW5lX3Zh
cmlhYmxlX3Rlc3RpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2lubGluZV92YXJpYWJs
ZV90ZXN0aW5nLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaW52b2tlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy
bmFsL2ludm9rZS5oCmluZGV4IDhjM2Y0ZjYwNjM3Y2E5ZDJkNGU4NDI2MjBhNTY0MmY4NTMzNmNh
OTguLjQ0ZjEzMzAyZjQzNDMwMmNhNDNlNWI1MWQ5Y2Q5ZmM5YmM5YjA3MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvaW50ZXJuYWwvaW52b2tlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9p
bnZva2UuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzks
NiArMzksOCBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAK
KyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKwogLy8gVGhlIGZvbGxvd2luZyBj
b2RlIGlzIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFNlZSB0aGUgY29tbWVudCBh
dCB0aGUKIC8vIHRvcCBvZiB0aGlzIGZpbGUgZm9yIHRoZSBBUEkgZG9jdW1lbnRhdGlvbi4KIApA
QCAtNjcsMTUgKzY5LDExIEBAIHN0cnVjdCBNZW1GdW5BbmRSZWYgOiBTdHJpcHBlZEFjY2VwdDxN
ZW1GdW5BbmRSZWY+IHsKICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiAgIHN0cnVjdCBB
Y2NlcHRJbXBsIDogc3RkOjpmYWxzZV90eXBlIHt9OwogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBS
LCB0eXBlbmFtZSBDLCB0eXBlbmFtZS4uLiBQYXJhbXMsIHR5cGVuYW1lIE9iaiwKLSAgICAgICAg
ICAgIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIHN0cnVjdCBBY2NlcHRJbXBsPFIgKEM6OiopKFBhcmFt
cy4uLiksIE9iaiwgQXJncy4uLj4KLSAgICAgIDogc3RkOjppc19iYXNlX29mPEMsIE9iaj4ge307
Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEMsIHR5cGVuYW1lLi4uIFBhcmFt
cywgdHlwZW5hbWUgT2JqLAotICAgICAgICAgICAgdHlwZW5hbWUuLi4gQXJncz4KLSAgc3RydWN0
IEFjY2VwdEltcGw8UiAoQzo6KikoUGFyYW1zLi4uKSBjb25zdCwgT2JqLCBBcmdzLi4uPgotICAg
ICAgOiBzdGQ6OmlzX2Jhc2Vfb2Y8QywgT2JqPiB7fTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE1l
bUZ1blR5cGUsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE9iaiwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
c3RydWN0IEFjY2VwdEltcGw8TWVtRnVuVHlwZSBDOjoqLCBPYmosIEFyZ3MuLi4+CisgICAgICA6
IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19iYXNlX29mPEMsIE9iaj46OnZh
bHVlICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Omlz
X2Z1bmN0aW9uPE1lbUZ1blR5cGU+Ojp2YWx1ZT4geworICB9OwogCiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBNZW1GdW4sIHR5cGVuYW1lIE9iaiwgdHlwZW5hbWUuLi4gQXJncz4KICAgc3RhdGljIGRl
Y2x0eXBlKChzdGQ6OmRlY2x2YWw8T2JqPigpLioKQEAgLTkyLDE1ICs5MCwxMSBAQCBzdHJ1Y3Qg
TWVtRnVuQW5kUHRyIDogU3RyaXBwZWRBY2NlcHQ8TWVtRnVuQW5kUHRyPiB7CiAgIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgogICBzdHJ1Y3QgQWNjZXB0SW1wbCA6IHN0ZDo6ZmFsc2VfdHlw
ZSB7fTsKIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQywgdHlwZW5hbWUuLi4g
UGFyYW1zLCB0eXBlbmFtZSBQdHIsCi0gICAgICAgICAgICB0eXBlbmFtZS4uLiBBcmdzPgotICBz
dHJ1Y3QgQWNjZXB0SW1wbDxSIChDOjoqKShQYXJhbXMuLi4pLCBQdHIsIEFyZ3MuLi4+Ci0gICAg
ICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgIXN0ZDo6aXNfYmFzZV9vZjxDLCBQdHI+
Ojp2YWx1ZT4ge307Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEMsIHR5cGVu
YW1lLi4uIFBhcmFtcywgdHlwZW5hbWUgUHRyLAotICAgICAgICAgICAgdHlwZW5hbWUuLi4gQXJn
cz4KLSAgc3RydWN0IEFjY2VwdEltcGw8UiAoQzo6KikoUGFyYW1zLi4uKSBjb25zdCwgUHRyLCBB
cmdzLi4uPgotICAgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsICFzdGQ6OmlzX2Jh
c2Vfb2Y8QywgUHRyPjo6dmFsdWU+IHt9OworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWVtRnVuVHlw
ZSwgdHlwZW5hbWUgQywgdHlwZW5hbWUgUHRyLCB0eXBlbmFtZS4uLiBBcmdzPgorICBzdHJ1Y3Qg
QWNjZXB0SW1wbDxNZW1GdW5UeXBlIEM6OiosIFB0ciwgQXJncy4uLj4KKyAgICAgIDogc3RkOjpp
bnRlZ3JhbF9jb25zdGFudDxib29sLCAhc3RkOjppc19iYXNlX29mPEMsIFB0cj46OnZhbHVlICYm
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OmlzX2Z1bmN0
aW9uPE1lbUZ1blR5cGU+Ojp2YWx1ZT4geworICB9OwogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBN
ZW1GdW4sIHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUuLi4gQXJncz4KICAgc3RhdGljIGRlY2x0eXBl
KCgoKnN0ZDo6ZGVjbHZhbDxQdHI+KCkpLioKQEAgLTExOSw3ICsxMTMsOSBAQCBzdHJ1Y3QgRGF0
YU1lbUFuZFJlZiA6IFN0cmlwcGVkQWNjZXB0PERhdGFNZW1BbmRSZWY+IHsKICAgc3RydWN0IEFj
Y2VwdEltcGwgOiBzdGQ6OmZhbHNlX3R5cGUge307CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFIs
IHR5cGVuYW1lIEMsIHR5cGVuYW1lIE9iaj4KLSAgc3RydWN0IEFjY2VwdEltcGw8UiBDOjoqLCBP
Ymo+IDogc3RkOjppc19iYXNlX29mPEMsIE9iaj4ge307CisgIHN0cnVjdCBBY2NlcHRJbXBsPFIg
Qzo6KiwgT2JqPgorICAgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNf
YmFzZV9vZjxDLCBPYmo+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAhYWJzbDo6aXNfZnVuY3Rpb248Uj46OnZhbHVlPiB7fTsKIAogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRGF0YU1lbSwgdHlwZW5hbWUgUmVmPgogICBzdGF0aWMgZGVjbHR5cGUoc3Rk
OjpkZWNsdmFsPFJlZj4oKS4qc3RkOjpkZWNsdmFsPERhdGFNZW0+KCkpIEludm9rZSgKQEAgLTEz
Niw3ICsxMzIsOCBAQCBzdHJ1Y3QgRGF0YU1lbUFuZFB0ciA6IFN0cmlwcGVkQWNjZXB0PERhdGFN
ZW1BbmRQdHI+IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQywgdHlwZW5h
bWUgUHRyPgogICBzdHJ1Y3QgQWNjZXB0SW1wbDxSIEM6OiosIFB0cj4KLSAgICAgIDogc3RkOjpp
bnRlZ3JhbF9jb25zdGFudDxib29sLCAhc3RkOjppc19iYXNlX29mPEMsIFB0cj46OnZhbHVlPiB7
fTsKKyAgICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhc3RkOjppc19iYXNlX29m
PEMsIFB0cj46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICFhYnNsOjppc19mdW5jdGlvbjxSPjo6dmFsdWU+IHt9OwogCiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBEYXRhTWVtLCB0eXBlbmFtZSBQdHI+CiAgIHN0YXRpYyBkZWNsdHlwZSgoKnN0ZDo6ZGVj
bHZhbDxQdHI+KCkpLipzdGQ6OmRlY2x2YWw8RGF0YU1lbT4oKSkgSW52b2tlKApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL2xvd19sZXZlbF9hbGxvYy5jYwppbmRleCAxNTlmOTQ1ZjVlZGQwNzA3OGY4Y2FmY2Vh
OGIzNzMwYTNlOGM3MThkLi5jZDUyNmIzNjkwZTExMzZiYzgyZDUyZTU3MjBmMWFiYjMyN2I4MDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5jYwpAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjAzLDE5ICsyMDMsMTkgQEAgc3RydWN0IExv
d0xldmVsQWxsb2M6OkFyZW5hIHsKIAogICBiYXNlX2ludGVybmFsOjpTcGluTG9jayBtdTsKICAg
Ly8gSGVhZCBvZiBmcmVlIGxpc3QsIHNvcnRlZCBieSBhZGRyZXNzCi0gIEFsbG9jTGlzdCBmcmVl
bGlzdCBHVUFSREVEX0JZKG11KTsKKyAgQWxsb2NMaXN0IGZyZWVsaXN0IEFCU0xfR1VBUkRFRF9C
WShtdSk7CiAgIC8vIENvdW50IG9mIGFsbG9jYXRlZCBibG9ja3MKLSAgaW50MzJfdCBhbGxvY2F0
aW9uX2NvdW50IEdVQVJERURfQlkobXUpOworICBpbnQzMl90IGFsbG9jYXRpb25fY291bnQgQUJT
TF9HVUFSREVEX0JZKG11KTsKICAgLy8gZmxhZ3MgcGFzc2VkIHRvIE5ld0FyZW5hCiAgIGNvbnN0
IHVpbnQzMl90IGZsYWdzOwotICAvLyBSZXN1bHQgb2YgZ2V0cGFnZXNpemUoKQorICAvLyBSZXN1
bHQgb2Ygc3lzY29uZihfU0NfUEFHRVNJWkUpCiAgIGNvbnN0IHNpemVfdCBwYWdlc2l6ZTsKICAg
Ly8gTG93ZXN0IHBvd2VyIG9mIHR3byA+PSBtYXgoMTYsIHNpemVvZihBbGxvY0xpc3QpKQogICBj
b25zdCBzaXplX3Qgcm91bmR1cDsKICAgLy8gU21hbGxlc3QgYWxsb2NhdGlvbiBibG9jayBzaXpl
CiAgIGNvbnN0IHNpemVfdCBtaW5fc2l6ZTsKICAgLy8gUFJORyBzdGF0ZQotICB1aW50MzJfdCBy
YW5kb20gR1VBUkRFRF9CWShtdSk7CisgIHVpbnQzMl90IHJhbmRvbSBBQlNMX0dVQVJERURfQlko
bXUpOwogfTsKIAogbmFtZXNwYWNlIHsKQEAgLTI3NSwxMCArMjc1LDEwIEBAIHN0YXRpYyBjb25z
dCB1aW50cHRyX3Qga01hZ2ljQWxsb2NhdGVkID0gMHg0YzgzM2U5NVU7CiBzdGF0aWMgY29uc3Qg
dWludHB0cl90IGtNYWdpY1VuYWxsb2NhdGVkID0gfmtNYWdpY0FsbG9jYXRlZDsKIAogbmFtZXNw
YWNlIHsKLWNsYXNzIFNDT1BFRF9MT0NLQUJMRSBBcmVuYUxvY2sgeworY2xhc3MgQUJTTF9TQ09Q
RURfTE9DS0FCTEUgQXJlbmFMb2NrIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IEFyZW5hTG9jayhM
b3dMZXZlbEFsbG9jOjpBcmVuYSAqYXJlbmEpCi0gICAgICBFWENMVVNJVkVfTE9DS19GVU5DVElP
TihhcmVuYS0+bXUpCisgICAgICBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKGFyZW5hLT5t
dSkKICAgICAgIDogYXJlbmFfKGFyZW5hKSB7CiAjaWZuZGVmIEFCU0xfTE9XX0xFVkVMX0FMTE9D
X0FTWU5DX1NJR05BTF9TQUZFX01JU1NJTkcKICAgICBpZiAoKGFyZW5hLT5mbGFncyAmIExvd0xl
dmVsQWxsb2M6OmtBc3luY1NpZ25hbFNhZmUpICE9IDApIHsKQEAgLTI5MCwxMSArMjkwLDE0IEBA
IGNsYXNzIFNDT1BFRF9MT0NLQUJMRSBBcmVuYUxvY2sgewogICAgIGFyZW5hXy0+bXUuTG9jaygp
OwogICB9CiAgIH5BcmVuYUxvY2soKSB7IEFCU0xfUkFXX0NIRUNLKGxlZnRfLCAiaGF2ZW4ndCBs
ZWZ0IEFyZW5hIHJlZ2lvbiIpOyB9Ci0gIHZvaWQgTGVhdmUoKSBVTkxPQ0tfRlVOQ1RJT04oKSB7
CisgIHZvaWQgTGVhdmUoKSBBQlNMX1VOTE9DS19GVU5DVElPTigpIHsKICAgICBhcmVuYV8tPm11
LlVubG9jaygpOwogI2lmbmRlZiBBQlNMX0xPV19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FG
RV9NSVNTSU5HCiAgICAgaWYgKG1hc2tfdmFsaWRfKSB7Ci0gICAgICBwdGhyZWFkX3NpZ21hc2so
U0lHX1NFVE1BU0ssICZtYXNrXywgbnVsbHB0cik7CisgICAgICBjb25zdCBpbnQgZXJyID0gcHRo
cmVhZF9zaWdtYXNrKFNJR19TRVRNQVNLLCAmbWFza18sIG51bGxwdHIpOworICAgICAgaWYgKGVy
ciAhPSAwKSB7CisgICAgICAgIEFCU0xfUkFXX0xPRyhGQVRBTCwgInB0aHJlYWRfc2lnbWFzayBm
YWlsZWQ6ICVkIiwgZXJyKTsKKyAgICAgIH0KICAgICB9CiAjZW5kaWYKICAgICBsZWZ0XyA9IHRy
dWU7CkBAIC0zMjQsOCArMzI3LDEwIEBAIHNpemVfdCBHZXRQYWdlU2l6ZSgpIHsKICAgU1lTVEVN
X0lORk8gc3lzdGVtX2luZm87CiAgIEdldFN5c3RlbUluZm8oJnN5c3RlbV9pbmZvKTsKICAgcmV0
dXJuIHN0ZDo6bWF4KHN5c3RlbV9pbmZvLmR3UGFnZVNpemUsIHN5c3RlbV9pbmZvLmR3QWxsb2Nh
dGlvbkdyYW51bGFyaXR5KTsKLSNlbHNlCisjZWxpZiBkZWZpbmVkKF9fd2FzbV9fKSB8fCBkZWZp
bmVkKF9fYXNtanNfXykKICAgcmV0dXJuIGdldHBhZ2VzaXplKCk7CisjZWxzZQorICByZXR1cm4g
c3lzY29uZihfU0NfUEFHRVNJWkUpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19s
ZXZlbF9hbGxvYy5oCmluZGV4IGZiYTk0NjZhNzU3NDI3YzAxZWQxMjE0NjRjM2FiMTEyZGUyMGM5
YTYuLmM5OGNkYjMwMjM1ZWZiNDIyZDk0Y2U0MmI0ZGJiYjhhYjA2MDkzNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtMjUsNiArMjUsNyBAQAogLy8gSVdZVSBwcmFnbWE6IHByaXZhdGUsIGlu
Y2x1ZGUgImJhc2UvbG93X2xldmVsX2FsbG9jLmgiCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K
KwogI2luY2x1ZGUgPGNzdGRpbnQ+CiAKICNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5o
IgpAQCAtMTE5LDQgKzEyMCw1IEBAIGNsYXNzIExvd0xldmVsQWxsb2MgewogCiB9ICAvLyBuYW1l
c3BhY2UgYmFzZV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBB
QlNMX0JBU0VfSU5URVJOQUxfTE9XX0xFVkVMX0FMTE9DX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvY190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5h
bC9sb3dfbGV2ZWxfYWxsb2NfdGVzdC5jYwppbmRleCBjZjJiMzYzMjk5ZjRlMjI3OWFkNTFlNDZl
YmQwODBjZWFkMmU0NTQ1Li4zNGEwODBjYjE1YTZmY2Q3NDY0MzA4YjA1NDY0MGY0NjlhYTM0M2Zh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvY190ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jX3Rlc3QuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEzNyw2ICsxMzcsNyBAQCBz
dGF0aWMgdm9pZCBUZXN0KGJvb2wgdXNlX25ld19hcmVuYSwgYm9vbCBjYWxsX21hbGxvY19ob29r
LCBpbnQgbikgewogICAgIFRFU1RfQVNTRVJUKExvd0xldmVsQWxsb2M6OkRlbGV0ZUFyZW5hKGFy
ZW5hKSk7CiAgIH0KIH0KKwogLy8gTG93TGV2ZWxBbGxvYyBpcyBkZXNpZ25lZCB0byBiZSBzYWZl
IHRvIGNhbGwgYmVmb3JlIG1haW4oKS4KIHN0YXRpYyBzdHJ1Y3QgQmVmb3JlTWFpbiB7CiAgIEJl
Zm9yZU1haW4oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9z
Y2hlZHVsaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9zY2hlZHVsaW5nLmgK
aW5kZXggZTcxNmYyYjQ5ZmExZjljODIzOTI4ZWRhOWZmZjg1MDBhOTczYmExOS4uMGZjYzhkM2Jl
ZDk3MzM2OTdmYWNmMzMwZGUzNTA4NzdmMzMwOTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9sb3dfbGV2ZWxfc2NoZWR1bGluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
bG93X2xldmVsX3NjaGVkdWxpbmcuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBTY2hlZHVsaW5nR3VhcmQgewogLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIC8vIEVuZCBvZiBwdWJsaWMgaW50ZXJmYWNlcy4KIC8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKIGlubGluZSBib29sIFNjaGVkdWxpbmdHdWFyZDo6UmVzY2hlZHVs
aW5nSXNBbGxvd2VkKCkgewogICByZXR1cm4gZmFsc2U7CiB9CkBAIC05OCw3ICs5OSw3IEBAIGlu
bGluZSB2b2lkIFNjaGVkdWxpbmdHdWFyZDo6RW5hYmxlUmVzY2hlZHVsaW5nKGJvb2wgLyogZGlz
YWJsZV9yZXN1bHQgKi8pIHsKICAgcmV0dXJuOwogfQogCi0KIH0gIC8vIG5hbWVzcGFjZSBiYXNl
X2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9J
TlRFUk5BTF9MT1dfTEVWRUxfU0NIRURVTElOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9wZXJfdGhyZWFkX3Rscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9wZXJfdGhyZWFk
X3Rscy5oCmluZGV4IDI0MjhiZGMxMjM4ZWRhY2EzZGE5NDM4OGMwOWQ0N2MwODlmMDJkZDcuLmNm
NWU5N2EwNDcwZWI1N2MxNTg2MmUwYzI0MTk1ZWJiZjc4M2FjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvaW50ZXJuYWwvcGVyX3RocmVhZF90bHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L3Blcl90aHJlYWRfdGxzLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTE2LDEzICsxNiwxNyBAQAogI2RlZmluZSBBQlNMX0JBU0VfSU5URVJOQUxfUEVSX1RI
UkVBRF9UTFNfSF8KIAogLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyB0d28gbWFjcm9zOgorLy8KIC8v
IElmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aHJlYWQtbG9jYWwgc3RvcmFnZToKLS8vICAgQUJT
TF9QRVJfVEhSRUFEX1RMU19LRVlXT1JEIGlzIHRoZSBDIGtleXdvcmQgbmVlZGVkIHRvIGRlY2xh
cmUgYQotLy8gICB0aHJlYWQtbG9jYWwgdmFyaWFibGUgQUJTTF9QRVJfVEhSRUFEX1RMUyBpcyAx
CisvLworLy8gKiBBQlNMX1BFUl9USFJFQURfVExTX0tFWVdPUkQgaXMgdGhlIEMga2V5d29yZCBu
ZWVkZWQgdG8gZGVjbGFyZSBhCisvLyAgIHRocmVhZC1sb2NhbCB2YXJpYWJsZQorLy8gKiBBQlNM
X1BFUl9USFJFQURfVExTIGlzIDEKIC8vCiAvLyBPdGhlcndpc2U6Ci0vLyAgIEFCU0xfUEVSX1RI
UkVBRF9UTFNfS0VZV09SRCBpcyBlbXB0eQotLy8gICBBQlNMX1BFUl9USFJFQURfVExTIGlzIDAK
Ky8vCisvLyAqIEFCU0xfUEVSX1RIUkVBRF9UTFNfS0VZV09SRCBpcyBlbXB0eQorLy8gKiBBQlNM
X1BFUl9USFJFQURfVExTIGlzIDAKIC8vCiAvLyBNaWNyb3NvZnQgQyBzdXBwb3J0cyB0aHJlYWQt
bG9jYWwgc3RvcmFnZS4KIC8vIEdDQyBzdXBwb3J0cyBpdCBpZiB0aGUgYXBwcm9wcmlhdGUgdmVy
c2lvbiBvZiBnbGliYyBpcyBhdmFpbGFibGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy
bmFsL3ByZXR0eV9mdW5jdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9wcmV0dHlfZnVuY3Rp
b24uaAppbmRleCAwMWIwNTQ3YmQwOGE0ODQyNjRiMDkwMDYwZjk2NzMyZmIwMmRhYWExLi4zNWQ1
MTY3NmRjMmU3ZTI5OTZhZjkwMDIyNGIwNGI5OWVlNzU0NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2ludGVybmFsL3ByZXR0eV9mdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
cHJldHR5X2Z1bmN0aW9uLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmNjCmluZGV4IGQ5NDg1YTY2Y2M2NDkyNzI5NjJj
M2FlZTI5OTdjMDczOTc0ZWJkYTUuLjg3OGZlNmM2YzJjYzk2OTgwMmM3NTcwMzFhYjRmMmM4ZWM5
Yzc5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5jYwpAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzYsNyArMzYsOCBAQAogLy8gVGhpcyBwcmVwcm9j
ZXNzb3IgdG9rZW4gaXMgYWxzbyBkZWZpbmVkIGluIHJhd19pby5jYy4gIElmIHlvdSBuZWVkIHRv
IGNvcHkKIC8vIHRoaXMsIGNvbnNpZGVyIG1vdmluZyBib3RoIHRvIGNvbmZpZy5oIGluc3RlYWQu
CiAjaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KF9fRnJlZUJTRF9fKSB8fCBcCi0gICAgZGVmaW5lZChfX0Z1Y2hzaWFfXykgfHwgZGVmaW5lZChf
X25hdGl2ZV9jbGllbnRfXykKKyAgICBkZWZpbmVkKF9fRnVjaHNpYV9fKSB8fCBkZWZpbmVkKF9f
bmF0aXZlX2NsaWVudF9fKSB8fCBcCisgICAgZGVmaW5lZChfX0VNU0NSSVBURU5fXykKICNpbmNs
dWRlIDx1bmlzdGQuaD4KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Jhd19s
b2dnaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgKaW5kZXggNzlhN2Ji
OWIyZjdhNjJiYjE5NjljZWVhYzAxNzgyY2U0ZTlkZWM1YS4uNmE0YzA5MzYwM2YwZWFhNjRmMjIx
NDQ3MDZjNjE3ZTBmYWM5OWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9yYXdf
bG9nZ2luZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaApAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzgsNiArMzgsNyBAQAogLy8g
ICBBQlNMX1JBV19MT0coRVJST1IsICJGYWlsZWQgZm9vIHdpdGggJWk6ICVzIiwgc3RhdHVzLCBl
cnJvcik7CiAvLyBUaGlzIHdpbGwgcHJpbnQgYW4gYWxtb3N0IHN0YW5kYXJkIGxvZyBsaW5lIGxp
a2UgdGhpcyB0byBzdGRlcnIgb25seToKIC8vICAgRTA4MjEgMjExMzE3IGZpbGUuY2M6MTIzXSBS
QVc6IEZhaWxlZCBmb28gd2l0aCAyMjogYmFkX2ZpbGUKKwogI2RlZmluZSBBQlNMX1JBV19MT0co
c2V2ZXJpdHksIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY29uc3RleHByIGNvbnN0IGNoYXIqIGFi
c2xfcmF3X2xvZ2dpbmdfaW50ZXJuYWxfYmFzZW5hbWUgPSAgICAgICAgICAgICAgICAgXApAQCAt
NzksMTMgKzgwLDEzIEBACiAgICAgICAgIGFic2xfcmF3X2xvZ2dpbmdfaW50ZXJuYWxfYmFzZW5h
bWUsIF9fTElORV9fLCBtZXNzYWdlKTsgICAgICAgXAogICB9IHdoaWxlICgwKQogCi0jZGVmaW5l
IEFCU0xfSU5URVJOQUxfQ0hFQ0soY29uZGl0aW9uLCBtZXNzYWdlKSAgICAgICAgICAgICAgIFwK
LSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoIShjb25kaXRpb24pKSkgeyAgICAg
ICAgICAgICAgICAgICBcCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfQ0hFQ0soY29uZGl0aW9uLCBt
ZXNzYWdlKSAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoQUJTTF9Q
UkVESUNUX0ZBTFNFKCEoY29uZGl0aW9uKSkpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICBzdGQ6OnN0cmluZyBkZWF0aF9tZXNzYWdlID0gIkNoZWNrICIgI2NvbmRpdGlvbiAiIGZh
aWxlZDogIjsgXAogICAgICAgZGVhdGhfbWVzc2FnZSArPSBzdGQ6OnN0cmluZyhtZXNzYWdlKTsg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIEFCU0xfSU5URVJOQUxfTE9HKEZBVEFMLCBk
ZWF0aF9tZXNzYWdlKTsgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBBQlNMX0lOVEVS
TkFMX0xPRyhGQVRBTCwgZGVhdGhfbWVzc2FnZSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBBQlNMX1JBV19MT0dHSU5HX0lOVEVS
TkFMX0lORk8gOjphYnNsOjpMb2dTZXZlcml0eTo6a0luZm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvc2NoZWR1bGluZ19tb2RlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NjaGVk
dWxpbmdfbW9kZS5oCmluZGV4IDFiNjQ5N2FkODc1N2RlY2U4ZGJjZjQ4OGU0ZjkxOGFmYzU4MzZl
MDQuLmQ1YjRiN2ZkNTRmZmNhZTE4NGY2Y2FjOGQ5MWFiM2UwYTIyOWI5MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NoZWR1bGluZ19tb2RlLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9zY2hlZHVsaW5nX21vZGUuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zY29wZWRfc2V0X2Vu
di5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVkX3NldF9lbnYuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2FjM2Y2OGRkZjkwY2E4YTlhOWNjMzlkNzVlZTRhMjkxYmVhZDE4OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVkX3NldF9lbnYuY2MKQEAgLTAsMCArMSw3OSBA
QAorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVkX3NldF9lbnYuaCIKKworI2lmZGVmIF9XSU4zMgorI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8Y3N0ZGxpYj4KKworI2luY2x1
ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorCituYW1lc3BhY2UgYWJzbCB7
CituYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7CisKK25hbWVzcGFjZSB7CisKKyNpZmRlZiBfV0lO
MzIKK2NvbnN0IGludCBrTWF4RW52VmFyVmFsdWVTaXplID0gMTAyNDsKKyNlbmRpZgorCit2b2lk
IFNldEVudlZhcihjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSkgeworI2lmZGVm
IF9XSU4zMgorICBTZXRFbnZpcm9ubWVudFZhcmlhYmxlQShuYW1lLCB2YWx1ZSk7CisjZWxzZQor
ICBpZiAodmFsdWUgPT0gbnVsbHB0cikgeworICAgIDo6dW5zZXRlbnYobmFtZSk7CisgIH0gZWxz
ZSB7CisgICAgOjpzZXRlbnYobmFtZSwgdmFsdWUsIDEpOworICB9CisjZW5kaWYKK30KKworfSAg
Ly8gbmFtZXNwYWNlCisKK1Njb3BlZFNldEVudjo6U2NvcGVkU2V0RW52KGNvbnN0IGNoYXIqIHZh
cl9uYW1lLCBjb25zdCBjaGFyKiBuZXdfdmFsdWUpCisgICAgOiB2YXJfbmFtZV8odmFyX25hbWUp
LCB3YXNfdW5zZXRfKGZhbHNlKSB7CisjaWZkZWYgX1dJTjMyCisgIGNoYXIgYnVmW2tNYXhFbnZW
YXJWYWx1ZVNpemVdOworICBhdXRvIGdldF9yZXMgPSBHZXRFbnZpcm9ubWVudFZhcmlhYmxlQSh2
YXJfbmFtZV8uY19zdHIoKSwgYnVmLCBzaXplb2YoYnVmKSk7CisgIEFCU0xfSU5URVJOQUxfQ0hF
Q0soZ2V0X3JlcyA8IHNpemVvZihidWYpLCAidmFsdWUgZXhjZWVkcyBidWZmZXIgc2l6ZSIpOwor
CisgIGlmIChnZXRfcmVzID09IDApIHsKKyAgICB3YXNfdW5zZXRfID0gKEdldExhc3RFcnJvcigp
ID09IEVSUk9SX0VOVlZBUl9OT1RfRk9VTkQpOworICB9IGVsc2UgeworICAgIG9sZF92YWx1ZV8u
YXNzaWduKGJ1ZiwgZ2V0X3Jlcyk7CisgIH0KKworICBTZXRFbnZpcm9ubWVudFZhcmlhYmxlQSh2
YXJfbmFtZV8uY19zdHIoKSwgbmV3X3ZhbHVlKTsKKyNlbHNlCisgIGNvbnN0IGNoYXIqIHZhbCA9
IDo6Z2V0ZW52KHZhcl9uYW1lXy5jX3N0cigpKTsKKyAgaWYgKHZhbCA9PSBudWxscHRyKSB7Cisg
ICAgd2FzX3Vuc2V0XyA9IHRydWU7CisgIH0gZWxzZSB7CisgICAgb2xkX3ZhbHVlXyA9IHZhbDsK
KyAgfQorI2VuZGlmCisKKyAgU2V0RW52VmFyKHZhcl9uYW1lXy5jX3N0cigpLCBuZXdfdmFsdWUp
OworfQorCitTY29wZWRTZXRFbnY6On5TY29wZWRTZXRFbnYoKSB7CisgIFNldEVudlZhcih2YXJf
bmFtZV8uY19zdHIoKSwgd2FzX3Vuc2V0XyA/IG51bGxwdHIgOiBvbGRfdmFsdWVfLmNfc3RyKCkp
OworfQorCit9ICAvLyBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFi
c2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVkX3NldF9lbnYuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVkX3NldF9lbnYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTViMjJmZDQx
ZmVjYWI3ZmNjMDQzYTVkYTE0ZTQ1YWYzZTgzMjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9zY29wZWRfc2V0X2Vudi5oCkBAIC0wLDAgKzEsNDEgQEAKKy8vCisvLyBD
b3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisKKyNpZm5kZWYgQUJTTF9C
QVNFX0lOVEVSTkFMX1NDT1BFRF9TRVRfRU5WX0hfCisjZGVmaW5lIEFCU0xfQkFTRV9JTlRFUk5B
TF9TQ09QRURfU0VUX0VOVl9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7CisKK2NsYXNzIFNjb3BlZFNldEVudiB7Cisg
cHVibGljOgorICBTY29wZWRTZXRFbnYoY29uc3QgY2hhciogdmFyX25hbWUsIGNvbnN0IGNoYXIq
IG5ld192YWx1ZSk7CisgIH5TY29wZWRTZXRFbnYoKTsKKworIHByaXZhdGU6CisgIHN0ZDo6c3Ry
aW5nIHZhcl9uYW1lXzsKKyAgc3RkOjpzdHJpbmcgb2xkX3ZhbHVlXzsKKworICAvLyBUcnVlIGlm
IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3YXMgaW5pdGlhbGx5IG5vdCBzZXQuCisgIGJvb2wg
d2FzX3Vuc2V0XzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBiYXNlX2ludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQkFTRV9JTlRFUk5BTF9TQ09QRURfU0VU
X0VOVl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zY29wZWRfc2V0X2Vudl90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zY29wZWRfc2V0X2Vudl90ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVjYmFkMjQ2YzY0NzA2YjA4NWU3ZTE5YTc2MzE0ZDQxMDFmMGVkMWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9zZXRfZW52X3Rlc3QuY2MKQEAg
LTAsMCArMSw5OSBAQAorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpZmRlZiBfV0lOMzIKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9zZXRf
ZW52LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNjb3Bl
ZFNldEVudjsKKworc3RkOjpzdHJpbmcgR2V0RW52VmFyKGNvbnN0IGNoYXIqIG5hbWUpIHsKKyNp
ZmRlZiBfV0lOMzIKKyAgY2hhciBidWZbMTAyNF07CisgIGF1dG8gZ2V0X3JlcyA9IEdldEVudmly
b25tZW50VmFyaWFibGVBKG5hbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICBpZiAoZ2V0X3JlcyA+
PSBzaXplb2YoYnVmKSkgeworICAgIHJldHVybiAiVE9PX0JJRyI7CisgIH0KKworICBpZiAoZ2V0
X3JlcyA9PSAwKSB7CisgICAgcmV0dXJuICJVTlNFVCI7CisgIH0KKworICByZXR1cm4gc3RkOjpz
dHJpbmcoYnVmLCBnZXRfcmVzKTsKKyNlbHNlCisgIGNvbnN0IGNoYXIqIHZhbCA9IDo6Z2V0ZW52
KG5hbWUpOworICBpZiAodmFsID09IG51bGxwdHIpIHsKKyAgICByZXR1cm4gIlVOU0VUIjsKKyAg
fQorCisgIHJldHVybiB2YWw7CisjZW5kaWYKK30KKworVEVTVChTY29wZWRTZXRFbnZUZXN0LCBT
ZXROb25FeGlzdGluZ1ZhclRvU3RyaW5nKSB7CisgIEVYUEVDVF9FUShHZXRFbnZWYXIoIlNDT1BF
RF9TRVRfRU5WX1RFU1RfVkFSIiksICJVTlNFVCIpOworCisgIHsKKyAgICBTY29wZWRTZXRFbnYg
c2NvcGVkX3NldCgiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiLCAidmFsdWUiKTsKKworICAgIEVY
UEVDVF9FUShHZXRFbnZWYXIoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiksICJ2YWx1ZSIpOwor
ICB9CisKKyAgRVhQRUNUX0VRKEdldEVudlZhcigiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiKSwg
IlVOU0VUIik7Cit9CisKK1RFU1QoU2NvcGVkU2V0RW52VGVzdCwgU2V0Tm9uRXhpc3RpbmdWYXJU
b051bGwpIHsKKyAgRVhQRUNUX0VRKEdldEVudlZhcigiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIi
KSwgIlVOU0VUIik7CisKKyAgeworICAgIFNjb3BlZFNldEVudiBzY29wZWRfc2V0KCJTQ09QRURf
U0VUX0VOVl9URVNUX1ZBUiIsIG51bGxwdHIpOworCisgICAgRVhQRUNUX0VRKEdldEVudlZhcigi
U0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiKSwgIlVOU0VUIik7CisgIH0KKworICBFWFBFQ1RfRVEo
R2V0RW52VmFyKCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIpLCAiVU5TRVQiKTsKK30KKworVEVT
VChTY29wZWRTZXRFbnZUZXN0LCBTZXRFeGlzdGluZ1ZhclRvU3RyaW5nKSB7CisgIFNjb3BlZFNl
dEVudiBzY29wZWRfc2V0KCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIsICJ2YWx1ZSIpOworICBF
WFBFQ1RfRVEoR2V0RW52VmFyKCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIpLCAidmFsdWUiKTsK
KworICB7CisgICAgU2NvcGVkU2V0RW52IHNjb3BlZF9zZXQoIlNDT1BFRF9TRVRfRU5WX1RFU1Rf
VkFSIiwgIm5ld192YWx1ZSIpOworCisgICAgRVhQRUNUX0VRKEdldEVudlZhcigiU0NPUEVEX1NF
VF9FTlZfVEVTVF9WQVIiKSwgIm5ld192YWx1ZSIpOworICB9CisKKyAgRVhQRUNUX0VRKEdldEVu
dlZhcigiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiKSwgInZhbHVlIik7Cit9CisKK1RFU1QoU2Nv
cGVkU2V0RW52VGVzdCwgU2V0RXhpc3RpbmdWYXJUb051bGwpIHsKKyAgU2NvcGVkU2V0RW52IHNj
b3BlZF9zZXQoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiwgInZhbHVlIik7CisgIEVYUEVDVF9F
UShHZXRFbnZWYXIoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiksICJ2YWx1ZSIpOworCisgIHsK
KyAgICBTY29wZWRTZXRFbnYgc2NvcGVkX3NldCgiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiLCBu
dWxscHRyKTsKKworICAgIEVYUEVDVF9FUShHZXRFbnZWYXIoIlNDT1BFRF9TRVRfRU5WX1RFU1Rf
VkFSIiksICJVTlNFVCIpOworICB9CisKKyAgRVhQRUNUX0VRKEdldEVudlZhcigiU0NPUEVEX1NF
VF9FTlZfVEVTVF9WQVIiKSwgInZhbHVlIik7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9jay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvc3BpbmxvY2suY2MKaW5kZXggMWI5N2VmYmNjYzU4NzA2MDBmM2FiYjhjNDdkOWNjMzcyZWJh
YjZhYy4uNzM1NDQzOGZiYWNiZWJkMzdhOWM0MzU0M2EyODJkZjAzYTkyMjM5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9jay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy
bmFsL3NwaW5sb2NrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CkBAIC05NSwxMyArOTUsOSBAQCB2b2lkIFNwaW5Mb2NrOjpJbml0TGlua2VySW5pdGlhbGl6ZWRB
bmRDb29wZXJhdGl2ZSgpIHsKIH0KIAogLy8gTW9uaXRvciB0aGUgbG9jayB0byBzZWUgaWYgaXRz
IHZhbHVlIGNoYW5nZXMgd2l0aGluIHNvbWUgdGltZSBwZXJpb2QKLS8vIChhZGFwdGl2ZV9zcGlu
X2NvdW50IGxvb3AgaXRlcmF0aW9ucykuICBBIHRpbWVzdGFtcCBpbmRpY2F0aW5nCi0vLyB3aGVu
IHRoZSB0aHJlYWQgaW5pdGlhbGx5IHN0YXJ0ZWQgd2FpdGluZyBmb3IgdGhlIGxvY2sgaXMgcGFz
c2VkIGluIHZpYQotLy8gdGhlIGluaXRpYWxfd2FpdF90aW1lc3RhbXAgdmFsdWUuICBUaGUgdG90
YWwgd2FpdCB0aW1lIGluIGN5Y2xlcyBmb3IgdGhlCi0vLyBsb2NrIGlzIHJldHVybmVkIGluIHRo
ZSB3YWl0X2N5Y2xlcyBwYXJhbWV0ZXIuICBUaGUgbGFzdCB2YWx1ZSByZWFkCi0vLyBmcm9tIHRo
ZSBsb2NrIGlzIHJldHVybmVkIGZyb20gdGhlIG1ldGhvZC4KLXVpbnQzMl90IFNwaW5Mb2NrOjpT
cGluTG9vcChpbnQ2NF90IGluaXRpYWxfd2FpdF90aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgKndhaXRfY3ljbGVzKSB7CisvLyAoYWRhcHRpdmVfc3Bpbl9j
b3VudCBsb29wIGl0ZXJhdGlvbnMpLiBUaGUgbGFzdCB2YWx1ZSByZWFkIGZyb20gdGhlIGxvY2sK
Ky8vIGlzIHJldHVybmVkIGZyb20gdGhlIG1ldGhvZC4KK3VpbnQzMl90IFNwaW5Mb2NrOjpTcGlu
TG9vcCgpIHsKICAgLy8gV2UgYXJlIGFscmVhZHkgaW4gdGhlIHNsb3cgcGF0aCBvZiBTcGluTG9j
aywgaW5pdGlhbGl6ZSB0aGUKICAgLy8gYWRhcHRpdmVfc3Bpbl9jb3VudCBoZXJlLgogICBBQlNM
X0NPTlNUX0lOSVQgc3RhdGljIGFic2w6Om9uY2VfZmxhZyBpbml0X2FkYXB0aXZlX3NwaW5fY291
bnQ7CkBAIC0xMTUsMjIgKzExMSwyMSBAQCB1aW50MzJfdCBTcGluTG9jazo6U3Bpbkxvb3AoaW50
NjRfdCBpbml0aWFsX3dhaXRfdGltZXN0YW1wLAogICBkbyB7CiAgICAgbG9ja192YWx1ZSA9IGxv
Y2t3b3JkXy5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogICB9IHdoaWxlICgobG9j
a192YWx1ZSAmIGtTcGluTG9ja0hlbGQpICE9IDAgJiYgLS1jID4gMCk7Ci0gIHVpbnQzMl90IHNw
aW5fbG9vcF93YWl0X2N5Y2xlcyA9Ci0gICAgICBFbmNvZGVXYWl0Q3ljbGVzKGluaXRpYWxfd2Fp
dF90aW1lc3RhbXAsIEN5Y2xlQ2xvY2s6Ok5vdygpKTsKLSAgKndhaXRfY3ljbGVzID0gc3Bpbl9s
b29wX3dhaXRfY3ljbGVzOwotCi0gIHJldHVybiBUcnlMb2NrSW50ZXJuYWwobG9ja192YWx1ZSwg
c3Bpbl9sb29wX3dhaXRfY3ljbGVzKTsKKyAgcmV0dXJuIGxvY2tfdmFsdWU7CiB9CiAKIHZvaWQg
U3BpbkxvY2s6OlNsb3dMb2NrKCkgeworICB1aW50MzJfdCBsb2NrX3ZhbHVlID0gU3Bpbkxvb3Ao
KTsKKyAgbG9ja192YWx1ZSA9IFRyeUxvY2tJbnRlcm5hbChsb2NrX3ZhbHVlLCAwKTsKKyAgaWYg
KChsb2NrX3ZhbHVlICYga1NwaW5Mb2NrSGVsZCkgPT0gMCkgeworICAgIHJldHVybjsKKyAgfQog
ICAvLyBUaGUgbG9jayB3YXMgbm90IG9idGFpbmVkIGluaXRpYWxseSwgc28gdGhpcyB0aHJlYWQg
bmVlZHMgdG8gd2FpdCBmb3IKICAgLy8gaXQuICBSZWNvcmQgdGhlIGN1cnJlbnQgdGltZXN0YW1w
IGluIHRoZSBsb2NhbCB2YXJpYWJsZSB3YWl0X3N0YXJ0X3RpbWUKICAgLy8gc28gdGhlIHRvdGFs
IHdhaXQgdGltZSBjYW4gYmUgc3RvcmVkIGluIHRoZSBsb2Nrd29yZCBvbmNlIHRoaXMgdGhyZWFk
CiAgIC8vIG9idGFpbnMgdGhlIGxvY2suCiAgIGludDY0X3Qgd2FpdF9zdGFydF90aW1lID0gQ3lj
bGVDbG9jazo6Tm93KCk7Ci0gIHVpbnQzMl90IHdhaXRfY3ljbGVzOwotICB1aW50MzJfdCBsb2Nr
X3ZhbHVlID0gU3Bpbkxvb3Aod2FpdF9zdGFydF90aW1lLCAmd2FpdF9jeWNsZXMpOwotCisgIHVp
bnQzMl90IHdhaXRfY3ljbGVzID0gMDsKICAgaW50IGxvY2tfd2FpdF9jYWxsX2NvdW50ID0gMDsK
ICAgd2hpbGUgKChsb2NrX3ZhbHVlICYga1NwaW5Mb2NrSGVsZCkgIT0gMCkgewogICAgIC8vIElm
IHRoZSBsb2NrIGlzIGN1cnJlbnRseSBoZWxkLCBidXQgbm90IG1hcmtlZCBhcyBoYXZpbmcgYSBz
bGVlcGVyLCBtYXJrCkBAIC0xNDEsNyArMTM2LDcgQEAgdm9pZCBTcGluTG9jazo6U2xvd0xvY2so
KSB7CiAgICAgICAvLyBvd25lciB0byB0aGluayBpdCBleHBlcmllbmNlZCBjb250ZW50aW9uLgog
ICAgICAgaWYgKGxvY2t3b3JkXy5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygKICAgICAgICAgICAg
ICAgbG9ja192YWx1ZSwgbG9ja192YWx1ZSB8IGtTcGluTG9ja1NsZWVwZXIsCi0gICAgICAgICAg
ICAgIHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
KSB7CisgICAgICAgICAgICAgIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQsIHN0ZDo6bWVtb3J5
X29yZGVyX3JlbGF4ZWQpKSB7CiAgICAgICAgIC8vIFN1Y2Nlc3NmdWxseSB0cmFuc2l0aW9uZWQg
dG8ga1NwaW5Mb2NrU2xlZXBlci4gIFBhc3MKICAgICAgICAgLy8ga1NwaW5Mb2NrU2xlZXBlciB0
byB0aGUgU3BpbkxvY2tXYWl0IHJvdXRpbmUgdG8gcHJvcGVybHkgaW5kaWNhdGUKICAgICAgICAg
Ly8gdGhlIGxhc3QgbG9ja192YWx1ZSBvYnNlcnZlZC4KQEAgLTE3MCw3ICsxNjUsOSBAQCB2b2lk
IFNwaW5Mb2NrOjpTbG93TG9jaygpIHsKICAgICBBQlNMX1RTQU5fTVVURVhfUE9TVF9ESVZFUlQo
dGhpcywgMCk7CiAgICAgLy8gU3BpbiBhZ2FpbiBhZnRlciByZXR1cm5pbmcgZnJvbSB0aGUgd2Fp
dCByb3V0aW5lIHRvIGdpdmUgdGhpcyB0aHJlYWQKICAgICAvLyBzb21lIGNoYW5jZSBvZiBvYnRh
aW5pbmcgdGhlIGxvY2suCi0gICAgbG9ja192YWx1ZSA9IFNwaW5Mb29wKHdhaXRfc3RhcnRfdGlt
ZSwgJndhaXRfY3ljbGVzKTsKKyAgICBsb2NrX3ZhbHVlID0gU3Bpbkxvb3AoKTsKKyAgICB3YWl0
X2N5Y2xlcyA9IEVuY29kZVdhaXRDeWNsZXMod2FpdF9zdGFydF90aW1lLCBDeWNsZUNsb2NrOjpO
b3coKSk7CisgICAgbG9ja192YWx1ZSA9IFRyeUxvY2tJbnRlcm5hbChsb2NrX3ZhbHVlLCB3YWl0
X2N5Y2xlcyk7CiAgIH0KIH0KIApAQCAtMjA2LDE0ICsyMDMsMjAgQEAgdWludDMyX3QgU3Bpbkxv
Y2s6OkVuY29kZVdhaXRDeWNsZXMoaW50NjRfdCB3YWl0X3N0YXJ0X3RpbWUsCiAgICAgICAod2Fp
dF9lbmRfdGltZSAtIHdhaXRfc3RhcnRfdGltZSkgPj4gUFJPRklMRV9USU1FU1RBTVBfU0hJRlQ7
CiAKICAgLy8gUmV0dXJuIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRpbWUgc3BlbnQgd2FpdGlu
ZyB0aGF0IGNhbiBiZSBzdG9yZWQgaW4KLSAgLy8gdGhlIGxvY2sgd29yZCdzIHVwcGVyIGJpdHMu
ICBiaXRfY2FzdCBpcyByZXF1aXJlZCBhcyBBdG9taWMzMiBpcyBzaWduZWQuCi0gIGNvbnN0IHVp
bnQzMl90IGNsYW1wZWQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oCisgIC8vIHRoZSBsb2NrIHdv
cmQncyB1cHBlciBiaXRzLgorICB1aW50MzJfdCBjbGFtcGVkID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KAogICAgICAgc3RkOjptaW4oc2NhbGVkX3dhaXRfdGltZSwga01heFdhaXRUaW1lKSA8PCBM
T0NLV09SRF9SRVNFUlZFRF9TSElGVCk7CiAKLSAgLy8gYnVtcCB1cCB2YWx1ZSBpZiBuZWNlc3Nh
cnkgdG8gYXZvaWQgcmV0dXJuaW5nIGtTcGluTG9ja1NsZWVwZXIuCi0gIGNvbnN0IHVpbnQzMl90
IGFmdGVyX3NwaW5sb2NrX3NsZWVwZXIgPQotICAgICBrU3BpbkxvY2tTbGVlcGVyICsgKDEgPDwg
TE9DS1dPUkRfUkVTRVJWRURfU0hJRlQpOwotICByZXR1cm4gY2xhbXBlZCA9PSBrU3BpbkxvY2tT
bGVlcGVyID8gYWZ0ZXJfc3BpbmxvY2tfc2xlZXBlciA6IGNsYW1wZWQ7CisgIGlmIChjbGFtcGVk
ID09IDApIHsKKyAgICByZXR1cm4ga1NwaW5Mb2NrU2xlZXBlcjsgIC8vIEp1c3Qgd2FrZSB3YWl0
ZXJzLCBidXQgZG9uJ3QgcmVjb3JkIGNvbnRlbnRpb24uCisgIH0KKyAgLy8gQnVtcCB1cCB2YWx1
ZSBpZiBuZWNlc3NhcnkgdG8gYXZvaWQgcmV0dXJuaW5nIGtTcGluTG9ja1NsZWVwZXIuCisgIGNv
bnN0IHVpbnQzMl90IGtNaW5XYWl0VGltZSA9CisgICAgICBrU3BpbkxvY2tTbGVlcGVyICsgKDEg
PDwgTE9DS1dPUkRfUkVTRVJWRURfU0hJRlQpOworICBpZiAoY2xhbXBlZCA9PSBrU3BpbkxvY2tT
bGVlcGVyKSB7CisgICAgcmV0dXJuIGtNaW5XYWl0VGltZTsKKyAgfQorICByZXR1cm4gY2xhbXBl
ZDsKIH0KIAogdWludDY0X3QgU3BpbkxvY2s6OkRlY29kZVdhaXRDeWNsZXModWludDMyX3QgbG9j
a192YWx1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9jay5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9jay5oCmluZGV4IDIxMmFiYzY2OWU2MjczNjNmOGEw
MjI0Y2NiNzc5MThhNjlkMzExOTQuLmVjZGE3OTI0MWM1YjU2ZjkzMTQ2ZjQ1NzU2MjEzMGQxMWI3
YzhlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2suaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgog
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCiAjaW5jbHVkZSA8YXRvbWljPgogCiAjaW5jbHVkZSAi
YWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKQEAgLTQ3LDcgKzQ4LDcgQEAKIG5hbWVzcGFjZSBhYnNs
IHsKIG5hbWVzcGFjZSBiYXNlX2ludGVybmFsIHsKIAotY2xhc3MgTE9DS0FCTEUgU3BpbkxvY2sg
eworY2xhc3MgQUJTTF9MT0NLQUJMRSBTcGluTG9jayB7CiAgcHVibGljOgogICBTcGluTG9jaygp
IDogbG9ja3dvcmRfKGtTcGluTG9ja0Nvb3BlcmF0aXZlKSB7CiAgICAgQUJTTF9UU0FOX01VVEVY
X0NSRUFURSh0aGlzLCBfX3RzYW5fbXV0ZXhfbm90X3N0YXRpYyk7CkBAIC01Nyw4ICs1OCwxMCBA
QCBjbGFzcyBMT0NLQUJMRSBTcGluTG9jayB7CiAgIC8vCiAgIC8vICAgIHN0YXRpYyBTcGluTG9j
ayBsb2NrKGJhc2VfaW50ZXJuYWw6OmtMaW5rZXJJbml0aWFsaXplZCk7CiAgIC8vCi0gIC8vIFdo
ZW4gaW50aWFsaXplZCB1c2luZyB0aGlzIGNvbnN0cnVjdG9yLCB3ZSBkZXBlbmQgb24gdGhlIGZh
Y3QKLSAgLy8gdGhhdCB0aGUgbGlua2VyIGhhcyBhbHJlYWR5IGluaXRpYWxpemVkIHRoZSBtZW1v
cnkgYXBwcm9wcmlhdGVseS4KKyAgLy8gV2hlbiBpbml0aWFsaXplZCB1c2luZyB0aGlzIGNvbnN0
cnVjdG9yLCB3ZSBkZXBlbmQgb24gdGhlIGZhY3QKKyAgLy8gdGhhdCB0aGUgbGlua2VyIGhhcyBh
bHJlYWR5IGluaXRpYWxpemVkIHRoZSBtZW1vcnkgYXBwcm9wcmlhdGVseS4gVGhlIGxvY2sKKyAg
Ly8gaXMgaW5pdGlhbGl6ZWQgaW4gbm9uLWNvb3BlcmF0aXZlIG1vZGUuCisgIC8vCiAgIC8vIEEg
U3BpbkxvY2sgY29uc3RydWN0ZWQgbGlrZSB0aGlzIGNhbiBiZSBmcmVlbHkgdXNlZCBmcm9tIGds
b2JhbAogICAvLyBpbml0aWFsaXplcnMgd2l0aG91dCB3b3JyeWluZyBhYm91dCB0aGUgb3JkZXIg
aW4gd2hpY2ggZ2xvYmFsCiAgIC8vIGluaXRpYWxpemVycyBydW4uCkBAIC03Niw3ICs3OSw3IEBA
IGNsYXNzIExPQ0tBQkxFIFNwaW5Mb2NrIHsKICAgflNwaW5Mb2NrKCkgeyBBQlNMX1RTQU5fTVVU
RVhfREVTVFJPWSh0aGlzLCBfX3RzYW5fbXV0ZXhfbm90X3N0YXRpYyk7IH0KIAogICAvLyBBY3F1
aXJlIHRoaXMgU3BpbkxvY2suCi0gIGlubGluZSB2b2lkIExvY2soKSBFWENMVVNJVkVfTE9DS19G
VU5DVElPTigpIHsKKyAgaW5saW5lIHZvaWQgTG9jaygpIEFCU0xfRVhDTFVTSVZFX0xPQ0tfRlVO
Q1RJT04oKSB7CiAgICAgQUJTTF9UU0FOX01VVEVYX1BSRV9MT0NLKHRoaXMsIDApOwogICAgIGlm
ICghVHJ5TG9ja0ltcGwoKSkgewogICAgICAgU2xvd0xvY2soKTsKQEAgLTg4LDcgKzkxLDcgQEAg
Y2xhc3MgTE9DS0FCTEUgU3BpbkxvY2sgewogICAvLyBhY3F1aXNpdGlvbiB3YXMgc3VjY2Vzc2Z1
bC4gIElmIHRoZSBsb2NrIHdhcyBub3QgYWNxdWlyZWQsIGZhbHNlIGlzCiAgIC8vIHJldHVybmVk
LiAgSWYgdGhpcyBTcGluTG9jayBpcyBmcmVlIGF0IHRoZSB0aW1lIG9mIHRoZSBjYWxsLCBUcnlM
b2NrCiAgIC8vIHdpbGwgcmV0dXJuIHRydWUgd2l0aCBoaWdoIHByb2JhYmlsaXR5LgotICBpbmxp
bmUgYm9vbCBUcnlMb2NrKCkgRVhDTFVTSVZFX1RSWUxPQ0tfRlVOQ1RJT04odHJ1ZSkgeworICBp
bmxpbmUgYm9vbCBUcnlMb2NrKCkgQUJTTF9FWENMVVNJVkVfVFJZTE9DS19GVU5DVElPTih0cnVl
KSB7CiAgICAgQUJTTF9UU0FOX01VVEVYX1BSRV9MT0NLKHRoaXMsIF9fdHNhbl9tdXRleF90cnlf
bG9jayk7CiAgICAgYm9vbCByZXMgPSBUcnlMb2NrSW1wbCgpOwogICAgIEFCU0xfVFNBTl9NVVRF
WF9QT1NUX0xPQ0soCkBAIC05OCwxMSArMTAxLDExIEBAIGNsYXNzIExPQ0tBQkxFIFNwaW5Mb2Nr
IHsKICAgfQogCiAgIC8vIFJlbGVhc2UgdGhpcyBTcGluTG9jaywgd2hpY2ggbXVzdCBiZSBoZWxk
IGJ5IHRoZSBjYWxsaW5nIHRocmVhZC4KLSAgaW5saW5lIHZvaWQgVW5sb2NrKCkgVU5MT0NLX0ZV
TkNUSU9OKCkgeworICBpbmxpbmUgdm9pZCBVbmxvY2soKSBBQlNMX1VOTE9DS19GVU5DVElPTigp
IHsKICAgICBBQlNMX1RTQU5fTVVURVhfUFJFX1VOTE9DSyh0aGlzLCAwKTsKICAgICB1aW50MzJf
dCBsb2NrX3ZhbHVlID0gbG9ja3dvcmRfLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7
Ci0gICAgbG9ja3dvcmRfLnN0b3JlKGxvY2tfdmFsdWUgJiBrU3BpbkxvY2tDb29wZXJhdGl2ZSwK
LSAgICAgICAgICAgICAgICAgICAgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CisgICAgbG9j
a192YWx1ZSA9IGxvY2t3b3JkXy5leGNoYW5nZShsb2NrX3ZhbHVlICYga1NwaW5Mb2NrQ29vcGVy
YXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxlYXNlKTsKIAogICAgIGlmICgobG9ja192YWx1ZSAmIGtTcGluTG9ja0Rpc2FibGVk
U2NoZWR1bGluZykgIT0gMCkgewogICAgICAgYmFzZV9pbnRlcm5hbDo6U2NoZWR1bGluZ0d1YXJk
OjpFbmFibGVSZXNjaGVkdWxpbmcodHJ1ZSk7CkBAIC0xNjEsNyArMTY0LDcgQEAgY2xhc3MgTE9D
S0FCTEUgU3BpbkxvY2sgewogICB2b2lkIEluaXRMaW5rZXJJbml0aWFsaXplZEFuZENvb3BlcmF0
aXZlKCk7CiAgIHZvaWQgU2xvd0xvY2soKSBBQlNMX0FUVFJJQlVURV9DT0xEOwogICB2b2lkIFNs
b3dVbmxvY2sodWludDMyX3QgbG9ja192YWx1ZSkgQUJTTF9BVFRSSUJVVEVfQ09MRDsKLSAgdWlu
dDMyX3QgU3Bpbkxvb3AoaW50NjRfdCBpbml0aWFsX3dhaXRfdGltZXN0YW1wLCB1aW50MzJfdCog
d2FpdF9jeWNsZXMpOworICB1aW50MzJfdCBTcGluTG9vcCgpOwogCiAgIGlubGluZSBib29sIFRy
eUxvY2tJbXBsKCkgewogICAgIHVpbnQzMl90IGxvY2tfdmFsdWUgPSBsb2Nrd29yZF8ubG9hZChz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKQEAgLTE3NiwxMyArMTc5LDEzIEBAIGNsYXNzIExP
Q0tBQkxFIFNwaW5Mb2NrIHsKIAogLy8gQ29ycmVzcG9uZGluZyBsb2NrZXIgb2JqZWN0IHRoYXQg
YXJyYW5nZXMgdG8gYWNxdWlyZSBhIHNwaW5sb2NrIGZvcgogLy8gdGhlIGR1cmF0aW9uIG9mIGEg
QysrIHNjb3BlLgotY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIFNwaW5Mb2NrSG9sZGVyIHsKK2NsYXNz
IEFCU0xfU0NPUEVEX0xPQ0tBQkxFIFNwaW5Mb2NrSG9sZGVyIHsKICBwdWJsaWM6Ci0gIGlubGlu
ZSBleHBsaWNpdCBTcGluTG9ja0hvbGRlcihTcGluTG9jayogbCkgRVhDTFVTSVZFX0xPQ0tfRlVO
Q1RJT04obCkKKyAgaW5saW5lIGV4cGxpY2l0IFNwaW5Mb2NrSG9sZGVyKFNwaW5Mb2NrKiBsKSBB
QlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKGwpCiAgICAgICA6IGxvY2tfKGwpIHsKICAgICBs
LT5Mb2NrKCk7CiAgIH0KLSAgaW5saW5lIH5TcGluTG9ja0hvbGRlcigpIFVOTE9DS19GVU5DVElP
TigpIHsgbG9ja18tPlVubG9jaygpOyB9CisgIGlubGluZSB+U3BpbkxvY2tIb2xkZXIoKSBBQlNM
X1VOTE9DS19GVU5DVElPTigpIHsgbG9ja18tPlVubG9jaygpOyB9CiAKICAgU3BpbkxvY2tIb2xk
ZXIoY29uc3QgU3BpbkxvY2tIb2xkZXImKSA9IGRlbGV0ZTsKICAgU3BpbkxvY2tIb2xkZXImIG9w
ZXJhdG9yPShjb25zdCBTcGluTG9ja0hvbGRlciYpID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19ha2Fyb3MuaW5jIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5h
bC9zcGlubG9ja19ha2Fyb3MuaW5jCmluZGV4IDA1MWM4Y2Y4N2ZiNmZmYjI4MGRjZDhiZjI4N2I3
NTg4MDkxZGVlMzAuLmJjNDY4OTQwZmM1ZGVlNGMyNTc4NmMzMmY3ODNiZDQ2ODBmMDRiMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfYWthcm9zLmluYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX2FrYXJvcy5pbmMKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
c3BpbmxvY2tfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19iZW5j
aG1hcmsuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ1MWM2NWY5NTU5NGI2MTc5YzM3NjVmMDk0MzU4YjU2ZWI0
NjAyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfYmVu
Y2htYXJrLmNjCkBAIC0wLDAgKzEsNTIgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisvLyBTZWUgYWxzbyAvL2Fic2wvc3luY2hyb25pemF0aW9uOm11dGV4X2Jl
bmNobWFyayBmb3IgYSBjb21wYXJpc29uIG9mIFNwaW5Mb2NrCisvLyBhbmQgTXV0ZXggcGVyZm9y
bWFuY2UgdW5kZXIgdmFyeWluZyBsZXZlbHMgb2YgY29udGVudGlvbi4KKworI2luY2x1ZGUgImFi
c2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRl
cm5hbC9zY2hlZHVsaW5nX21vZGUuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvc3Bp
bmxvY2suaCIKKyNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9jcmVhdGVf
dGhyZWFkX2lkZW50aXR5LmgiCisjaW5jbHVkZSAiYmVuY2htYXJrL2JlbmNobWFyay5oIgorCitu
YW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8YWJzbDo6YmFzZV9pbnRlcm5hbDo6U2NoZWR1bGluZ01v
ZGUgc2NoZWR1bGluZ19tb2RlPgorc3RhdGljIHZvaWQgQk1fU3BpbkxvY2soYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKKyAgLy8gRW5zdXJlIGEgVGhyZWFkSWRlbnRpdHkgaXMgaW5zdGFsbGVk
LgorICBBQlNMX0lOVEVSTkFMX0NIRUNLKAorICAgICAgYWJzbDo6c3luY2hyb25pemF0aW9uX2lu
dGVybmFsOjpHZXRPckNyZWF0ZUN1cnJlbnRUaHJlYWRJZGVudGl0eSgpICE9CisgICAgICAgICAg
bnVsbHB0ciwKKyAgICAgICJHZXRPckNyZWF0ZUN1cnJlbnRUaHJlYWRJZGVudGl0eSgpIGZhaWxl
ZCIpOworCisgIHN0YXRpYyBhdXRvKiBzcGlubG9jayA9IG5ldyBhYnNsOjpiYXNlX2ludGVybmFs
OjpTcGluTG9jayhzY2hlZHVsaW5nX21vZGUpOworICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Cisg
ICAgYWJzbDo6YmFzZV9pbnRlcm5hbDo6U3BpbkxvY2tIb2xkZXIgaG9sZGVyKHNwaW5sb2NrKTsK
KyAgfQorfQorCitCRU5DSE1BUktfVEVNUExBVEUoQk1fU3BpbkxvY2ssCisgICAgICAgICAgICAg
ICAgICAgYWJzbDo6YmFzZV9pbnRlcm5hbDo6U0NIRURVTEVfS0VSTkVMX09OTFkpCisgICAgLT5V
c2VSZWFsVGltZSgpCisgICAgLT5UaHJlYWRzKDEpCisgICAgLT5UaHJlYWRQZXJDcHUoKTsKKwor
QkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NwaW5Mb2NrLAorICAgICAgICAgICAgICAgICAgIGFic2w6
OmJhc2VfaW50ZXJuYWw6OlNDSEVEVUxFX0NPT1BFUkFUSVZFX0FORF9LRVJORUwpCisgICAgLT5V
c2VSZWFsVGltZSgpCisgICAgLT5UaHJlYWRzKDEpCisgICAgLT5UaHJlYWRQZXJDcHUoKTsKKwor
fSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2Nr
X2xpbnV4LmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfbGludXguaW5jCmluZGV4
IDk0Yzg2MWRjNmNhMjNjMjhlZDIwODIyODliYTIzZWYyNTM4NjAxMDEuLjI4ZTI5ZDE5MTkwOWIz
YjMxZTAzYjI4YmQyMmU2NDFlYzg4NzZlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvc3BpbmxvY2tfbGludXguaW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tf
bGludXguaW5jCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC01
MSwxNyArNTEsMTIgQEAgZXh0ZXJuICJDIiB7CiBBQlNMX0FUVFJJQlVURV9XRUFLIHZvaWQgQWJz
bEludGVybmFsU3BpbkxvY2tEZWxheSgKICAgICBzdGQ6OmF0b21pYzx1aW50MzJfdD4gKncsIHVp
bnQzMl90IHZhbHVlLCBpbnQgbG9vcCwKICAgICBhYnNsOjpiYXNlX2ludGVybmFsOjpTY2hlZHVs
aW5nTW9kZSkgewotICBpZiAobG9vcCAhPSAwKSB7Ci0gICAgaW50IHNhdmVfZXJybm8gPSBlcnJu
bzsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdG07Ci0gICAgdG0udHZfc2VjID0gMDsKLSAgICAvLyBJ
bmNyZWFzZSB0aGUgZGVsYXk7IHdlIGV4cGVjdCAoYnV0IGRvIG5vdCByZWx5IG9uKSBleHBsaWNp
dCB3YWtldXBzLgotICAgIC8vIFdlIGRvbid0IHJlbHkgb24gZXhwbGljaXQgd2FrZXVwcyBiZWNh
dXNlIHdlIGludGVudGlvbmFsbHkgYWxsb3cgZm9yCi0gICAgLy8gYSByYWNlIG9uIHRoZSBrU3Bp
bkxvY2tTbGVlcGVyIGJpdC4KLSAgICB0bS50dl9uc2VjID0gMTYgKiBhYnNsOjpiYXNlX2ludGVy
bmFsOjpTcGluTG9ja1N1Z2dlc3RlZERlbGF5TlMobG9vcCk7Ci0gICAgc3lzY2FsbChTWVNfZnV0
ZXgsIHcsIEZVVEVYX1dBSVQgfCBGVVRFWF9QUklWQVRFX0ZMQUcsIHZhbHVlLCAmdG0pOwotICAg
IGVycm5vID0gc2F2ZV9lcnJubzsKLSAgfQorICBpbnQgc2F2ZV9lcnJubyA9IGVycm5vOworICBz
dHJ1Y3QgdGltZXNwZWMgdG07CisgIHRtLnR2X3NlYyA9IDA7CisgIHRtLnR2X25zZWMgPSBhYnNs
OjpiYXNlX2ludGVybmFsOjpTcGluTG9ja1N1Z2dlc3RlZERlbGF5TlMobG9vcCk7CisgIHN5c2Nh
bGwoU1lTX2Z1dGV4LCB3LCBGVVRFWF9XQUlUIHwgRlVURVhfUFJJVkFURV9GTEFHLCB2YWx1ZSwg
JnRtKTsKKyAgZXJybm8gPSBzYXZlX2Vycm5vOwogfQogCiBBQlNMX0FUVFJJQlVURV9XRUFLIHZv
aWQgQWJzbEludGVybmFsU3BpbkxvY2tXYWtlKHN0ZDo6YXRvbWljPHVpbnQzMl90PiAqdywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfcG9zaXguaW5jIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9zcGlubG9ja19wb3NpeC5pbmMKaW5kZXggMDA5OGMxYzc2MDE2ZjE4NTM4
ZmE2ZWM4MmYzNTdjMDViNGY4NDkzNC4uZjAyNWI1ZjhhMzczZDhmOTY4NWExZmUyNDBjNjY4ZmI2
MWIxMjg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19wb3NpeC5p
bmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19wb3NpeC5pbmMKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tf
d2FpdC5jYwppbmRleCAwZmRlOWMwNGI3M2JhZjU3ZDEzNDk5ODIwY2JkNDQ3MWYzNWZkZGUyLi5m
YWM4YTIxZGI0YzVmMDdmZmQzMGM3MDk4OTExMjk4ZjFlMWQ0MzgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dhaXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5h
bC9zcGlubG9ja193YWl0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC0zOCwxNCArMzgsMTUgQEAgbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgewogdWludDMy
X3QgU3BpbkxvY2tXYWl0KHN0ZDo6YXRvbWljPHVpbnQzMl90PiAqdywgaW50IG4sCiAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3BpbkxvY2tXYWl0VHJhbnNpdGlvbiB0cmFuc1tdLAogICAg
ICAgICAgICAgICAgICAgICAgIGJhc2VfaW50ZXJuYWw6OlNjaGVkdWxpbmdNb2RlIHNjaGVkdWxp
bmdfbW9kZSkgewotICBmb3IgKGludCBsb29wID0gMDsgOyBsb29wKyspIHsKKyAgaW50IGxvb3Ag
PSAwOworICBmb3IgKDs7KSB7CiAgICAgdWludDMyX3QgdiA9IHctPmxvYWQoc3RkOjptZW1vcnlf
b3JkZXJfYWNxdWlyZSk7CiAgICAgaW50IGk7CiAgICAgZm9yIChpID0gMDsgaSAhPSBuICYmIHYg
IT0gdHJhbnNbaV0uZnJvbTsgaSsrKSB7CiAgICAgfQogICAgIGlmIChpID09IG4pIHsKLSAgICAg
IFNwaW5Mb2NrRGVsYXkodywgdiwgbG9vcCwgc2NoZWR1bGluZ19tb2RlKTsgIC8vIG5vIG1hdGNo
aW5nIHRyYW5zaXRpb24KLSAgICB9IGVsc2UgaWYgKHRyYW5zW2ldLnRvID09IHYgfHwgICAgICAg
ICAgICAgICAgIC8vIG51bGwgdHJhbnNpdGlvbgorICAgICAgU3BpbkxvY2tEZWxheSh3LCB2LCAr
K2xvb3AsIHNjaGVkdWxpbmdfbW9kZSk7ICAvLyBubyBtYXRjaGluZyB0cmFuc2l0aW9uCisgICAg
fSBlbHNlIGlmICh0cmFuc1tpXS50byA9PSB2IHx8ICAgICAgICAgICAgICAgICAgIC8vIG51bGwg
dHJhbnNpdGlvbgogICAgICAgICAgICAgICAgdy0+Y29tcGFyZV9leGNoYW5nZV9zdHJvbmcodiwg
dHJhbnNbaV0udG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkpIHsKQEAgLTY0LDE3ICs2NSwx
NCBAQCBpbnQgU3BpbkxvY2tTdWdnZXN0ZWREZWxheU5TKGludCBsb29wKSB7CiAgIHIgPSAweDVk
ZWVjZTY2ZExMICogciArIDB4YjsgICAvLyBudW1iZXJzIGZyb20gbnJhbmQ0OCgpCiAgIGRlbGF5
X3JhbmQuc3RvcmUociwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiAKLSAgciA8PD0gMTY7
ICAgLy8gNDgtYml0IHJhbmRvbSBudW1iZXIgbm93IGluIHRvcCA0OC1iaXRzLgogICBpZiAobG9v
cCA8IDAgfHwgbG9vcCA+IDMyKSB7ICAgLy8gbGltaXQgbG9vcCB0byAwLi4zMgogICAgIGxvb3Ag
PSAzMjsKICAgfQotICAvLyBsb29wPj4zIGNhbm5vdCBleGNlZWQgNCBiZWNhdXNlIGxvb3AgY2Fu
bm90IGV4Y2VlZCAzMi4KLSAgLy8gU2VsZWN0IHRvcCAyMC4uMjQgYml0cyBvZiBsb3dlciA0OCBi
aXRzLAotICAvLyBnaXZpbmcgYXBwcm94aW1hdGVseSAwbXMgdG8gMTZtcy4KLSAgLy8gTWVhbiBp
cyBleHBvbmVudGlhbCBpbiBsb29wIGZvciBmaXJzdCAzMiBpdGVyYXRpb25zLCB0aGVuIDhtcy4K
LSAgLy8gVGhlIGZ1dGV4IHBhdGggbXVsdGlwbGllcyB0aGlzIGJ5IDE2LCBzaW5jZSB3ZSBleHBl
Y3QgZXhwbGljaXQgd2FrZXVwcwotICAvLyBhbG1vc3QgYWx3YXlzIG9uIHRoYXQgcGF0aC4KLSAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4ociA+PiAoNDQgLSAobG9vcCA+PiAzKSkpOworICBjb25z
dCBpbnQga01pbkRlbGF5ID0gMTI4IDw8IDEwOyAgLy8gMTI4dXMKKyAgLy8gRG91YmxlIGRlbGF5
IGV2ZXJ5IDggaXRlcmF0aW9ucywgdXAgdG8gMTZ4ICgybXMpLgorICBpbnQgZGVsYXkgPSBrTWlu
RGVsYXkgPDwgKGxvb3AgLyA4KTsKKyAgLy8gUmFuZG9taXplIGluIGRlbGF5Li4yKmRlbGF5IHJh
bmdlLCBmb3IgcmVzdWx0aW5nIDEyOHVzLi40bXMgcmFuZ2UuCisgIHJldHVybiBkZWxheSB8ICgo
ZGVsYXkgLSAxKSAmIHN0YXRpY19jYXN0PGludD4ocikpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ug
YmFzZV9pbnRlcm5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193
YWl0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dhaXQuaAppbmRleCA1YzZjYzdm
ZGJhNGNjM2YzYjcyZjUwYjRjNTBkZTlmMTlhNzIwODVkLi42NjQyY2UxYWIzMTA1N2U2YWYyOTVh
ZDY2NDdjZWFhMGVlMTI2OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5s
b2NrX3dhaXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dhaXQuaApAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9zcGlubG9ja193aW4zMi5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Nw
aW5sb2NrX3dpbjMyLmluYwppbmRleCAzMmM4ZmMwYmI1MWQ5YmRjN2U5NWZjYzNmOWNkZGVmZjA0
OTVmMDI0Li43ODY1NGI1YjU5NjZjOTQ1ZTAwNDU1NmQzMTI1OTNjYWNjNjc0ZTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dpbjMyLmluYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2ludGVybmFsL3NwaW5sb2NrX3dpbjMyLmluYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZv
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvLmNjCmluZGV4IGRiNDFiYWNjODQ0YzYz
NDkxYTgwYTQwNzE0NTFkZjc0MGYwOWY2NDcuLmU1ZTEzMWY3MWQzNjg2ZDkwYmY4NTFkMGNiMDIw
ZThkZmMyYTNiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3lzaW5mby5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3N5c2luZm8uY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTMzMyw3ICszMzMsNyBAQCBzdGF0aWMgYWJzbDo6YmFz
ZV9pbnRlcm5hbDo6U3BpbkxvY2sgdGlkX2xvY2soCiAvLyBXZSBzZXQgYSBiaXQgcGVyIHRocmVh
ZCBpbiB0aGlzIGFycmF5IHRvIGluZGljYXRlIHRoYXQgYW4gSUQgaXMgaW4KIC8vIHVzZS4gSUQg
MCBpcyB1bnVzZWQgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSByZXR1cm5lZCBieQog
Ly8gcHRocmVhZF9nZXRzcGVjaWZpYygpLgotc3RhdGljIHN0ZDo6dmVjdG9yPHVpbnQzMl90Piog
dGlkX2FycmF5IEdVQVJERURfQlkodGlkX2xvY2spID0gbnVsbHB0cjsKK3N0YXRpYyBzdGQ6OnZl
Y3Rvcjx1aW50MzJfdD4qIHRpZF9hcnJheSBBQlNMX0dVQVJERURfQlkodGlkX2xvY2spID0gbnVs
bHB0cjsKIHN0YXRpYyBjb25zdGV4cHIgaW50IGtCaXRzUGVyV29yZCA9IDMyOyAgLy8gdGlkX2Fy
cmF5IGlzIHVpbnQzMl90LgogCiAvLyBSZXR1cm5zIHRoZSBUSUQgdG8gdGlkX2FycmF5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy
bmFsL3N5c2luZm8uaAppbmRleCA1YmQxYzUwMGJkNTRjYzU2NjY1NWU0ZWIyMjA1ZTI2NjU2Y2Vi
MmYyLi5iODY0YTU5NzQxZjFlNWYyOTNjNDdhMjg2MjM3MDM5OGQwMzA4MjUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3N5c2luZm8uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L3N5c2luZm8uaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2ludGVybmFsL3N5c2luZm9fdGVzdC5jYwppbmRleCBlMGQ5YWFiOWJjMmRjMGQ0MDE1ZmZjNjJj
ZDFhOGUwMmVlYjFlMjEzLi44MmJiY2MyYjNiZDMyMWNmN2M4NzcwMDU3NTU1MDQ5ZjkyZjZkZmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3N5c2luZm9fdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL3N5c2luZm9fdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzcsMTIgKzM3LDEyIEBAIFRFU1QoU3lzaW5mb1Rlc3Qs
IE51bUNQVXMpIHsKIH0KIAogVEVTVChTeXNpbmZvVGVzdCwgTm9taW5hbENQVUZyZXF1ZW5jeSkg
ewotI2lmICEoZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pKQorI2lm
ICEoZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pKSAmJiAhZGVmaW5l
ZChfX0VNU0NSSVBURU5fXykKICAgRVhQRUNUX0dFKE5vbWluYWxDUFVGcmVxdWVuY3koKSwgMTAw
MC4wKQogICAgICAgPDwgIk5vbWluYWxDUFVGcmVxdWVuY3koKSBkaWQgbm90IHJldHVybiBhIHJl
YXNvbmFibGUgdmFsdWUiOwogI2Vsc2UKLSAgLy8gVE9ETyhhYnNsLXRlYW0pOiBBYXJjaDY0IGNh
bm5vdCByZWFkIHRoZSBDUFUgZnJlcXVlbmN5IGZyb20gc3lzZnMsIHNvIHdlCi0gIC8vIGdldCBi
YWNrIDEuMC4gRml4IG9uY2UgdGhlIHZhbHVlIGlzIGF2YWlsYWJsZS4KKyAgLy8gQWFyY2g2NCBj
YW5ub3QgcmVhZCB0aGUgQ1BVIGZyZXF1ZW5jeSBmcm9tIHN5c2ZzLCBzbyB3ZSBnZXQgYmFjayAx
LjAuCisgIC8vIEVtc2NyaXB0ZW4gZG9lcyBub3QgaGF2ZSBhIHN5c2ZzIHRvIHJlYWQgZnJvbSBh
dCBhbGwuCiAgIEVYUEVDVF9FUShOb21pbmFsQ1BVRnJlcXVlbmN5KCksIDEuMCkKICAgICAgIDw8
ICJDUFUgZnJlcXVlbmN5IGRldGVjdGlvbiB3YXMgZml4ZWQhIFBsZWFzZSB1cGRhdGUgdW5pdHRl
c3QuIjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRl
bnRpdHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eS5jYwppbmRleCBj
ZmY5YzFiNGY0ZGMzOTU0MmIyYWVkOTQ0YzhjN2VkMDY2M2ZhMmNmLi45MTI3M2E2YjFhMTdlNWY3
NzEzZTMyNTRjN2JiMjM0YmMwMWY1MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L3RocmVhZF9pZGVudGl0eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVu
dGl0eS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmgKaW5kZXggYTUxNzIyZjlkODI4ZDU0OTY1ZWQ5YjE5
OTkzYzNjODc3ZjQ0ZGRiZi4uYjM0Njc0YTYyZDRiOTZhNWMyYzFjNWM1NGYzNDA4Nzg3ZGZmMjIx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eS5oCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC00Miw5ICs0Miw5IEBAIG5hbWVzcGFjZSBiYXNl
X2ludGVybmFsIHsKIGNsYXNzIFNwaW5Mb2NrOwogc3RydWN0IFRocmVhZElkZW50aXR5OwogCi0v
LyBVc2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBiYXNlOjpNdXRleCBhbmQgYmFzZTo6Q29u
ZFZhci4KKy8vIFVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIG9mIGFic2w6Ok11dGV4IGFuZCBh
YnNsOjpDb25kVmFyLgogc3RydWN0IFBlclRocmVhZFN5bmNoIHsKLSAgLy8gVGhlIGludGVybmFs
IHJlcHJlc2VudGF0aW9uIG9mIGJhc2U6Ok11dGV4IGFuZCBiYXNlOjpDb25kVmFyIHJlbHkKKyAg
Ly8gVGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGFic2w6Ok11dGV4IGFuZCBhYnNsOjpD
b25kVmFyIHJlbHkKICAgLy8gb24gdGhlIGFsaWdubWVudCBvZiBQZXJUaHJlYWRTeW5jaC4gQm90
aCBzdG9yZSB0aGUgYWRkcmVzcyBvZiB0aGUKICAgLy8gUGVyVGhyZWFkU3luY2ggaW4gdGhlIGhp
Z2gtb3JkZXIgYml0cyBvZiB0aGVpciBpbnRlcm5hbCBzdGF0ZSwKICAgLy8gd2hpY2ggbWVhbnMg
dGhlIGxvdyBrTG93WmVyb0JpdHMgb2YgdGhlIGFkZHJlc3Mgb2YgUGVyVGhyZWFkU3luY2gKQEAg
LTIzNyw0ICsyMzcsNSBAQCBpbmxpbmUgVGhyZWFkSWRlbnRpdHkqIEN1cnJlbnRUaHJlYWRJZGVu
dGl0eUlmUHJlc2VudCgpIHsKIAogfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKIH0gIC8v
IG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9CQVNFX0lOVEVSTkFMX1RIUkVBRF9J
REVOVElUWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRp
dHlfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHlfYmVu
Y2htYXJrLmNjCmluZGV4IDI0MjUyMmI0NDE4YWYwMDBiNTY4YjVmOGYyMGZiNDc1N2I4ZTNjYzMu
LjBhZTEwZjJiMWU4YTJhOTk1NmY5MjYyYzQ0Yzk3N2U1MWE4YTY2MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5X2JlbmNobWFyay5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eV9iZW5jaG1hcmsuY2MKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvdGhyZWFkX2lkZW50aXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVh
ZF9pZGVudGl0eV90ZXN0LmNjCmluZGV4IGVjYjhhZjY4OTgyOTg3NTA4ODE3YjRkY2E0MzVjNjc1
NGJlODlhYTYuLjEzYmZiZTNiZGJjMTkxOTNiZjRhODUxMTAxZGQ1NTQ3ZDNkMWRmNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5X3Rlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHlfdGVzdC5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC90aHJvd19kZWxlZ2F0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyb3dfZGVsZWdh
dGUuY2MKaW5kZXggNDZkYzU3M2NmYTg0MjVmMGZhNzJkNTYzZjQ4MWRjOTA5MzMwMWMzYy4uOGU5
MjhiOGEyNTdlZTNjMWVjYTUxY2Y1YjBkNDQ4MDM2YjA1YjM4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L3Rocm93X2RlbGVnYXRlLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC0zMCw4ICszMCw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogI2lmZGVmIEFCU0xf
SEFWRV9FWENFUFRJT05TCiAgIHRocm93IGVycm9yOwogI2Vsc2UKLSAgQUJTTF9SQVdfTE9HKEVS
Uk9SLCAiJXMiLCBlcnJvci53aGF0KCkpOwotICBhYm9ydCgpOworICBBQlNMX1JBV19MT0coRkFU
QUwsICIlcyIsIGVycm9yLndoYXQoKSk7CisgIHN0ZDo6YWJvcnQoKTsKICNlbmRpZgogfQogfSAg
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Rocm93X2RlbGVn
YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Rocm93X2RlbGVnYXRlLmgKaW5kZXggNzBlMmQ3
NzA5ZTViNTZlMDJhNDNkMDJjZTQ4OTM0NjkzNDQ3NTcxYS4uMDNjNzAwYjVlZTA4MDU5ZWNiNzk4
NTU5YWY2OGE0ZDY1NGYwMWYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJv
d19kZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaApA
QCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC90c2FuX211dGV4X2ludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC90c2FuX211dGV4X2ludGVyZmFjZS5oCmluZGV4IDZiYjRmYWVkYjg3OWJiODRiYmFiOGIz
NmM2N2JmNTQ1M2FjOGJmYWMuLjJhNTEwNjAzYmM4YzE4MmYwNTYwYzZiYWFjNGUwOTZiZjUyMmJi
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdHNhbl9tdXRleF9pbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RzYW5fbXV0ZXhfaW50ZXJmYWNlLmgKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvdW5hbGlnbmVkX2FjY2Vzcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bmFs
aWduZWRfYWNjZXNzLmgKaW5kZXggZjlkZjNiNzg0OGM0MGE5NzRmZDk2OTdkZWY4Y2Y3ZmZiZmUw
MjllZi4uMmNmN2MxZDQ1YjNmNGFiYThkZjY3ZmE4ODQ5NjlmZTlhOWZjNTg0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bmFsaWduZWRfYWNjZXNzLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC91bmFsaWduZWRfYWNjZXNzLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTI1LDE1ICsyNSw2IEBACiAvLyB1bmFsaWduZWQgQVBJcwogCiAv
LyBQb3J0YWJsZSBoYW5kbGluZyBvZiB1bmFsaWduZWQgbG9hZHMsIHN0b3JlcywgYW5kIGNvcGll
cy4KLS8vIE9uIHNvbWUgcGxhdGZvcm1zLCBsaWtlIEFSTSwgdGhlIGNvcHkgZnVuY3Rpb25zIGNh
biBiZSBtb3JlIGVmZmljaWVudAotLy8gdGhlbiBhIGxvYWQgYW5kIGEgc3RvcmUuCi0vLwotLy8g
SXQgaXMgcG9zc2libGUgdG8gaW1wbGVtZW50IGFsbCBvZiB0aGVzZSB0aGVzZSB1c2luZyBjb25z
dGFudC1sZW5ndGggbWVtY3B5Ci0vLyBjYWxscywgd2hpY2ggaXMgcG9ydGFibGUgYW5kIHdpbGwg
dXN1YWxseSBiZSBpbmxpbmVkIGludG8gc2ltcGxlIGxvYWRzIGFuZAotLy8gc3RvcmVzIGlmIHRo
ZSBhcmNoaXRlY3R1cmUgc3VwcG9ydHMgaXQuIEhvd2V2ZXIsIHN1Y2ggaW5saW5pbmcgdXN1YWxs
eQotLy8gaGFwcGVucyBpbiBhIHBhc3MgdGhhdCdzIHF1aXRlIGxhdGUgaW4gY29tcGlsYXRpb24s
IHdoaWNoIG1lYW5zIHRoZSByZXN1bHRpbmcKLS8vIGxvYWRzIGFuZCBzdG9yZXMgY2Fubm90IHBh
cnRpY2lwYXRlIGluIG1hbnkgb3RoZXIgb3B0aW1pemF0aW9ucywgbGVhZGluZyB0bwotLy8gb3Zl
cmFsbCB3b3JzZSBjb2RlLgogCiAvLyBUaGUgdW5hbGlnbmVkIEFQSSBpcyBDKysgb25seS4gIFRo
ZSBkZWNsYXJhdGlvbnMgdXNlIEMrKyBmZWF0dXJlcwogLy8gKG5hbWVzcGFjZXMsIGlubGluZSkg
d2hpY2ggYXJlIGFic2VudCBvciBpbmNvbXBhdGlibGUgaW4gQy4KQEAgLTEwOCwxNjQgKzk5LDgg
QEAgaW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmU2NCh2b2lkICpwLCB1aW50NjRfdCB2KSB7CiAj
ZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFNjQoX3AsIF92YWwpIFwKICAgKGFi
c2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQogCi0jZWxpZiBk
ZWZpbmVkKFVOREVGSU5FRF9CRUhBVklPUl9TQU5JVElaRVIpCi0KLW5hbWVzcGFjZSBhYnNsIHsK
LW5hbWVzcGFjZSBiYXNlX2ludGVybmFsIHsKLQotaW5saW5lIHVpbnQxNl90IFVuYWxpZ25lZExv
YWQxNihjb25zdCB2b2lkICpwKSB7Ci0gIHVpbnQxNl90IHQ7Ci0gIG1lbWNweSgmdCwgcCwgc2l6
ZW9mIHQpOwotICByZXR1cm4gdDsKLX0KLQotaW5saW5lIHVpbnQzMl90IFVuYWxpZ25lZExvYWQz
Mihjb25zdCB2b2lkICpwKSB7Ci0gIHVpbnQzMl90IHQ7Ci0gIG1lbWNweSgmdCwgcCwgc2l6ZW9m
IHQpOwotICByZXR1cm4gdDsKLX0KLQotaW5saW5lIHVpbnQ2NF90IFVuYWxpZ25lZExvYWQ2NChj
b25zdCB2b2lkICpwKSB7Ci0gIHVpbnQ2NF90IHQ7Ci0gIG1lbWNweSgmdCwgcCwgc2l6ZW9mIHQp
OwotICByZXR1cm4gdDsKLX0KLQotaW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmUxNih2b2lkICpw
LCB1aW50MTZfdCB2KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYpOyB9Ci0KLWlubGluZSB2b2lk
IFVuYWxpZ25lZFN0b3JlMzIodm9pZCAqcCwgdWludDMyX3QgdikgeyBtZW1jcHkocCwgJnYsIHNp
emVvZiB2KTsgfQotCi1pbmxpbmUgdm9pZCBVbmFsaWduZWRTdG9yZTY0KHZvaWQgKnAsIHVpbnQ2
NF90IHYpIHsgbWVtY3B5KHAsICZ2LCBzaXplb2Ygdik7IH0KLQotfSAgLy8gbmFtZXNwYWNlIGJh
c2VfaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSBhYnNsCi0KLSNkZWZpbmUgQUJTTF9JTlRFUk5B
TF9VTkFMSUdORURfTE9BRDE2KF9wKSBcCi0gIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWdu
ZWRMb2FkMTYoX3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIoX3Ap
IFwKLSAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQzMihfcCkpCi0jZGVmaW5l
IEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQ2NChfcCkgXAotICAoYWJzbDo6YmFzZV9pbnRl
cm5hbDo6VW5hbGlnbmVkTG9hZDY0KF9wKSkKLQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJ
R05FRF9TVE9SRTE2KF9wLCBfdmFsKSBcCi0gIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWdu
ZWRTdG9yZTE2KF9wLCBfdmFsKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RP
UkUzMihfcCwgX3ZhbCkgXAotICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmUz
MihfcCwgX3ZhbCkpCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFNjQoX3As
IF92YWwpIFwKLSAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92
YWwpKQotCi0jZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSB8fCBk
ZWZpbmVkKF9faTM4NikgfHwgXAotICAgIGRlZmluZWQoX01fSVg4NikgfHwgZGVmaW5lZChfX3Bw
Y19fKSB8fCBkZWZpbmVkKF9fUFBDX18pIHx8ICAgIFwKLSAgICBkZWZpbmVkKF9fcHBjNjRfXykg
fHwgZGVmaW5lZChfX1BQQzY0X18pCi0KLS8vIHg4NiBhbmQgeDg2LTY0IGNhbiBwZXJmb3JtIHVu
YWxpZ25lZCBsb2Fkcy9zdG9yZXMgZGlyZWN0bHk7Ci0vLyBtb2Rlcm4gUG93ZXJQQyBoYXJkd2Fy
ZSBjYW4gYWxzbyBkbyB1bmFsaWduZWQgaW50ZWdlciBsb2FkcyBhbmQgc3RvcmVzOwotLy8gYnV0
IG5vdGU6IHRoZSBGUFUgc3RpbGwgc2VuZHMgdW5hbGlnbmVkIGxvYWRzIGFuZCBzdG9yZXMgdG8g
YSB0cmFwIGhhbmRsZXIhCi0KLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2
KF9wKSBcCi0gICgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCAqPihfcCkpCi0jZGVm
aW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihfcCkgXAotICAoKnJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDMyX3QgKj4oX3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJ
R05FRF9MT0FENjQoX3ApIFwKLSAgKCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90ICo+
KF9wKSkKLQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTE2KF9wLCBfdmFs
KSBcCi0gICgqcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCAqPihfcCkgPSAoX3ZhbCkpCi0jZGVm
aW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMzIoX3AsIF92YWwpIFwKLSAgKCpyZWlu
dGVycHJldF9jYXN0PHVpbnQzMl90ICo+KF9wKSA9IChfdmFsKSkKLSNkZWZpbmUgQUJTTF9JTlRF
Uk5BTF9VTkFMSUdORURfU1RPUkU2NChfcCwgX3ZhbCkgXAotICAoKnJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3QgKj4oX3ApID0gKF92YWwpKQotCi0jZWxpZiBkZWZpbmVkKF9fYXJtX18pICYmIFwK
LSAgICAgICFkZWZpbmVkKF9fQVJNX0FSQ0hfNV9fKSAmJiBcCi0gICAgICAhZGVmaW5lZChfX0FS
TV9BUkNIXzVUX18pICYmIFwKLSAgICAgICFkZWZpbmVkKF9fQVJNX0FSQ0hfNVRFX18pICYmIFwK
LSAgICAgICFkZWZpbmVkKF9fQVJNX0FSQ0hfNVRFSl9fKSAmJiBcCi0gICAgICAhZGVmaW5lZChf
X0FSTV9BUkNIXzZfXykgJiYgXAotICAgICAgIWRlZmluZWQoX19BUk1fQVJDSF82Sl9fKSAmJiBc
Ci0gICAgICAhZGVmaW5lZChfX0FSTV9BUkNIXzZLX18pICYmIFwKLSAgICAgICFkZWZpbmVkKF9f
QVJNX0FSQ0hfNlpfXykgJiYgXAotICAgICAgIWRlZmluZWQoX19BUk1fQVJDSF82WktfXykgJiYg
XAotICAgICAgIWRlZmluZWQoX19BUk1fQVJDSF82VDJfXykKLQotCi0vLyBBUk12NyBhbmQgbmV3
ZXIgc3VwcG9ydCBuYXRpdmUgdW5hbGlnbmVkIGFjY2Vzc2VzLCBidXQgb25seSBvZiAxNi1iaXQK
LS8vIGFuZCAzMi1iaXQgdmFsdWVzIChub3QgNjQtYml0KTsgb2xkZXIgdmVyc2lvbnMgZWl0aGVy
IHJhaXNlIGEgZmF0YWwgc2lnbmFsLAotLy8gZG8gYW4gdW5hbGlnbmVkIHJlYWQgYW5kIHJvdGF0
ZSB0aGUgd29yZHMgYXJvdW5kIGEgYml0LCBvciBkbyB0aGUgcmVhZHMgdmVyeQotLy8gc2xvd2x5
ICh0cmlwIHRocm91Z2gga2VybmVsIG1vZGUpLiBUaGVyZSdzIG5vIHNpbXBsZSAjZGVmaW5lIHRo
YXQgc2F5cyBqdXN0Ci0vLyAiQVJNdjcgb3IgaGlnaGVyIiwgc28gd2UgaGF2ZSB0byBmaWx0ZXIg
YXdheSBhbGwgQVJNdjUgYW5kIEFSTXY2Ci0vLyBzdWItYXJjaGl0ZWN0dXJlcy4gTmV3ZXIgZ2Nj
ICg+PSA0LjYpIHNldCBhbiBfX0FSTV9GRUFUVVJFX0FMSUdORUQgI2RlZmluZSwKLS8vIHNvIGlu
IHRpbWUsIG1heWJlIHdlIGNhbiBtb3ZlIG9uIHRvIHRoYXQuCi0vLwotLy8gVGhpcyBpcyBhIG1l
c3MsIGJ1dCB0aGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91dCBpdC4KLS8vCi0vLyBUbyBm
dXJ0aGVyIGNvbXBsaWNhdGUgbWF0dGVycywgb25seSBMRFIgaW5zdHJ1Y3Rpb25zIChzaW5nbGUg
cmVhZHMpIGFyZQotLy8gYWxsb3dlZCB0byBiZSB1bmFsaWduZWQsIG5vdCBMRFJEICh0d28gcmVh
ZHMpIG9yIExETSAobWFueSByZWFkcykuIFVubGVzcyB3ZQotLy8gZXhwbGljaXRseSB0ZWxsIHRo
ZSBjb21waWxlciB0aGF0IHRoZXNlIGFjY2Vzc2VzIGNhbiBiZSB1bmFsaWduZWQsIGl0IGNhbiBh
bmQKLS8vIHdpbGwgY29tYmluZSBhY2Nlc3Nlcy4gT24gYXJtY2MsIHRoZSB3YXkgdG8gc2lnbmFs
IHRoaXMgaXMgZG9uZSBieSBhY2Nlc3NpbmcKLS8vIHRocm91Z2ggdGhlIHR5cGUgKHVpbnQzMl90
IF9fcGFja2VkICopLCBidXQgR0NDIGhhcyBubyBzdWNoIGF0dHJpYnV0ZQotLy8gKGl0IGlnbm9y
ZXMgX19hdHRyaWJ1dGVfXygocGFja2VkKSkgb24gaW5kaXZpZHVhbCB2YXJpYWJsZXMpLiBIb3dl
dmVyLAotLy8gd2UgY2FuIHRlbGwgaXQgdGhhdCBhIF9zdHJ1Y3RfIGlzIHVuYWxpZ25lZCwgd2hp
Y2ggaGFzIHRoZSBzYW1lIGVmZmVjdCwKLS8vIHNvIHdlIGRvIHRoYXQuCi0KLW5hbWVzcGFjZSBh
YnNsIHsKLW5hbWVzcGFjZSBiYXNlX2ludGVybmFsIHsKLQotc3RydWN0IFVuYWxpZ25lZDE2U3Ry
dWN0IHsKLSAgdWludDE2X3QgdmFsdWU7Ci0gIHVpbnQ4X3QgZHVtbXk7ICAvLyBUbyBtYWtlIHRo
ZSBzaXplIG5vbi1wb3dlci1vZi10d28uCi19IEFCU0xfQVRUUklCVVRFX1BBQ0tFRDsKLQotc3Ry
dWN0IFVuYWxpZ25lZDMyU3RydWN0IHsKLSAgdWludDMyX3QgdmFsdWU7Ci0gIHVpbnQ4X3QgZHVt
bXk7ICAvLyBUbyBtYWtlIHRoZSBzaXplIG5vbi1wb3dlci1vZi10d28uCi19IEFCU0xfQVRUUklC
VVRFX1BBQ0tFRDsKLQotfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKLX0gIC8vIG5hbWVz
cGFjZSBhYnNsCi0KLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9wKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgocmVpbnRlcnByZXRfY2FzdDxj
b25zdCA6OmFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZDE2U3RydWN0ICo+KF9wKSkgXAot
ICAgICAgIC0+dmFsdWUpCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihf
cCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgOjphYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWQzMlN0cnVjdCAqPihfcCkp
IFwKLSAgICAgICAtPnZhbHVlKQotCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NU
T1JFMTYoX3AsIF92YWwpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChyZWludGVycHJldF9j
YXN0PCA6OmFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZDE2U3RydWN0ICo+KF9wKSkgXAot
ICAgICAgIC0+dmFsdWUgPSAoX3ZhbCkpCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVE
X1NUT1JFMzIoX3AsIF92YWwpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChyZWludGVycHJl
dF9jYXN0PCA6OmFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZDMyU3RydWN0ICo+KF9wKSkg
XAotICAgICAgIC0+dmFsdWUgPSAoX3ZhbCkpCi0KLW5hbWVzcGFjZSBhYnNsIHsKLW5hbWVzcGFj
ZSBiYXNlX2ludGVybmFsIHsKLQotaW5saW5lIHVpbnQ2NF90IFVuYWxpZ25lZExvYWQ2NChjb25z
dCB2b2lkICpwKSB7Ci0gIHVpbnQ2NF90IHQ7Ci0gIG1lbWNweSgmdCwgcCwgc2l6ZW9mIHQpOwot
ICByZXR1cm4gdDsKLX0KLQotaW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmU2NCh2b2lkICpwLCB1
aW50NjRfdCB2KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYpOyB9Ci0KLX0gIC8vIG5hbWVzcGFj
ZSBiYXNlX2ludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgYWJzbAotCi0jZGVmaW5lIEFCU0xfSU5U
RVJOQUxfVU5BTElHTkVEX0xPQUQ2NChfcCkgXAotICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5h
bGlnbmVkTG9hZDY0KF9wKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkU2
NChfcCwgX3ZhbCkgXAotICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmU2NChf
cCwgX3ZhbCkpCi0KICNlbHNlCiAKLS8vIEFCU0xfSU5URVJOQUxfTkVFRF9BTElHTkVEX0xPQURT
IGlzIGRlZmluZWQgd2hlbiB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybQotLy8gZG9lc24ndCBzdXBw
b3J0IHVuYWxpZ25lZCBhY2Nlc3MuCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfTkVFRF9BTElHTkVE
X0xPQURTCi0KLS8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGFyY2hpdGVjdHVy
ZXMgdGhhdCBkb24ndCBzdXBwb3J0Ci0vLyB1bmFsaWduZWQgbG9hZHMgYW5kIHN0b3Jlcy4KLQog
bmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmNjCmluZGV4IGExMmQ2OGJkMTBhZjZhMmE5OTgy
NmQzZmM4MjhiZDkwM2QwNmM0MTIuLjU5Mzc2MmJjOGI4YTU5ZTJiNzg2ZGY4N2Q2N2Y0NDcxMGQ3
YjIwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2Nr
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmNjCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91
bnNjYWxlZGN5Y2xlY2xvY2suaAppbmRleCAwNDlmMWNhY2U5ODExYTVjZjIwNTcwZjk1OTUzOTgz
NTE4ZTFkZDVlLi4yZDM2MWU5NjI4NDEwMDdkZjQ2ZDQ5MzM0NTFlMjMyYjQ2ZDkxZjM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTU5LDcgKzU5LDggQEAKIC8vIEN5Y2xlQ2xvY2sg
dGhhdCBydW5zIGF0IGF0bGVhc3QgMSBNSHouIFdlJ3ZlIGZvdW5kIHNvbWUgQW5kcm9pZAogLy8g
QVJNNjQgZGV2aWNlcyB3aGVyZSB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgc28gd2UgZGlzYWJsZSBp
dCBieQogLy8gZGVmYXVsdCBvbiBBbmRyb2lkIEFSTTY0LgotI2lmIGRlZmluZWQoX19uYXRpdmVf
Y2xpZW50X18pIHx8IFRBUkdFVF9PU19JUEhPTkUgfHwgXAorI2lmIGRlZmluZWQoX19uYXRpdmVf
Y2xpZW50X18pIHx8ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoZGVmaW5lZChUQVJHRVRf
T1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKSB8fCBcCiAgICAgKGRlZmluZWQoX19BTkRS
T0lEX18pICYmIGRlZmluZWQoX19hYXJjaDY0X18pKQogI2RlZmluZSBBQlNMX1VTRV9VTlNDQUxF
RF9DWUNMRUNMT0NLX0RFRkFVTFQgMAogI2Vsc2UKQEAgLTgzLDYgKzg0LDcgQEAKICAgICAgIGRl
ZmluZWQoX01fSVg4NikgfHwgZGVmaW5lZChfTV9YNjQpKQogI2RlZmluZSBBQlNMX0lOVEVSTkFM
X1VOU0NBTEVEX0NZQ0xFQ0xPQ0tfRlJFUVVFTkNZX0lTX0NQVV9GUkVRVUVOQ1kKICNlbmRpZgor
CiBuYW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2UgdGltZV9pbnRlcm5hbCB7CiBjbGFzcyBVbnNj
YWxlZEN5Y2xlQ2xvY2tXcmFwcGVyRm9yR2V0Q3VycmVudFRpbWU7CkBAIC0xMTQsNiArMTE2LDcg
QEAgY2xhc3MgVW5zY2FsZWRDeWNsZUNsb2NrIHsKIAogfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50
ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9VU0VfVU5TQ0FM
RURfQ1lDTEVDTE9DSwogCiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9JTlRFUk5BTF9VTlNDQUxFRENZ
Q0xFQ0xPQ0tfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW52b2tlX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludm9rZV90ZXN0LmNjCmluZGV4IDQ2NmJmMTE0YTU4ZGMxNzZlNzIxODA5MTFlYzli
NmIzOTJjMjg4ZTcuLjkwNzQ0NDNiM2NiYmU3ODU3MzJmODExY2U3ZDAyNjdhMDA1OTg2MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW52b2tlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnZv
a2VfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
NzAsNiArNzAsMTAgQEAgc3RydWN0IE92ZXJsb2FkZWRGdW5jdG9yIHsKIHN0cnVjdCBDbGFzcyB7
CiAgIGludCBNZXRob2QoaW50IGEsIGludCBiKSB7IHJldHVybiBhIC0gYjsgfQogICBpbnQgQ29u
c3RNZXRob2QoaW50IGEsIGludCBiKSBjb25zdCB7IHJldHVybiBhIC0gYjsgfQorICBpbnQgUmVm
TWV0aG9kKGludCBhLCBpbnQgYikgJiB7IHJldHVybiBhIC0gYjsgfQorICBpbnQgUmVmUmVmTWV0
aG9kKGludCBhLCBpbnQgYikgJiYgeyByZXR1cm4gYSAtIGI7IH0KKyAgaW50IE5vRXhjZXB0TWV0
aG9kKGludCBhLCBpbnQgYikgbm9leGNlcHQgeyByZXR1cm4gYSAtIGI7IH0KKyAgaW50IFZvbGF0
aWxlTWV0aG9kKGludCBhLCBpbnQgYikgdm9sYXRpbGUgeyByZXR1cm4gYSAtIGI7IH0KIAogICBp
bnQgbWVtYmVyOwogfTsKQEAgLTE1MSw4ICsxNTUsMTggQEAgVEVTVChJbnZva2VUZXN0LCBSZWZl
cmVuY2VXcmFwcGVyKSB7CiBURVNUKEludm9rZVRlc3QsIE1lbWJlckZ1bmN0aW9uKSB7CiAgIHN0
ZDo6dW5pcXVlX3B0cjxDbGFzcz4gcChuZXcgQ2xhc3MpOwogICBzdGQ6OnVuaXF1ZV9wdHI8Y29u
c3QgQ2xhc3M+IGNwKG5ldyBDbGFzcyk7CisgIHN0ZDo6dW5pcXVlX3B0cjx2b2xhdGlsZSBDbGFz
cz4gdnAobmV3IENsYXNzKTsKKwogICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6TWV0aG9k
LCBwLCAzLCAyKSk7CiAgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNzOjpNZXRob2QsIHAuZ2V0
KCksIDMsIDIpKTsKKyAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6Ok1ldGhvZCwgKnAsIDMs
IDIpKTsKKyAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OlJlZk1ldGhvZCwgcCwgMywgMikp
OworICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6UmVmTWV0aG9kLCBwLmdldCgpLCAzLCAy
KSk7CisgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNzOjpSZWZNZXRob2QsICpwLCAzLCAyKSk7
CisgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNzOjpSZWZSZWZNZXRob2QsIHN0ZDo6bW92ZSgq
cCksIDMsIDIpKTsgIC8vIE5PTElOVAorICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6Tm9F
eGNlcHRNZXRob2QsIHAsIDMsIDIpKTsKKyAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6Ok5v
RXhjZXB0TWV0aG9kLCBwLmdldCgpLCAzLCAyKSk7CisgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNs
YXNzOjpOb0V4Y2VwdE1ldGhvZCwgKnAsIDMsIDIpKTsKIAogICBFWFBFQ1RfRVEoMSwgSW52b2tl
KCZDbGFzczo6Q29uc3RNZXRob2QsIHAsIDMsIDIpKTsKICAgRVhQRUNUX0VRKDEsIEludm9rZSgm
Q2xhc3M6OkNvbnN0TWV0aG9kLCBwLmdldCgpLCAzLCAyKSk7CkBAIC0xNjIsNiArMTc2LDEzIEBA
IFRFU1QoSW52b2tlVGVzdCwgTWVtYmVyRnVuY3Rpb24pIHsKICAgRVhQRUNUX0VRKDEsIEludm9r
ZSgmQ2xhc3M6OkNvbnN0TWV0aG9kLCBjcC5nZXQoKSwgMywgMikpOwogICBFWFBFQ1RfRVEoMSwg
SW52b2tlKCZDbGFzczo6Q29uc3RNZXRob2QsICpjcCwgMywgMikpOwogCisgIEVYUEVDVF9FUSgx
LCBJbnZva2UoJkNsYXNzOjpWb2xhdGlsZU1ldGhvZCwgcCwgMywgMikpOworICBFWFBFQ1RfRVEo
MSwgSW52b2tlKCZDbGFzczo6Vm9sYXRpbGVNZXRob2QsIHAuZ2V0KCksIDMsIDIpKTsKKyAgRVhQ
RUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OlZvbGF0aWxlTWV0aG9kLCAqcCwgMywgMikpOworICBF
WFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6Vm9sYXRpbGVNZXRob2QsIHZwLCAzLCAyKSk7Cisg
IEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNzOjpWb2xhdGlsZU1ldGhvZCwgdnAuZ2V0KCksIDMs
IDIpKTsKKyAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OlZvbGF0aWxlTWV0aG9kLCAqdnAs
IDMsIDIpKTsKKwogICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6TWV0aG9kLCBtYWtlX3Vu
aXF1ZTxDbGFzcz4oKSwgMywgMikpOwogICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6Q29u
c3RNZXRob2QsIG1ha2VfdW5pcXVlPENsYXNzPigpLCAzLCAyKSk7CiAgIEVYUEVDVF9FUSgxLCBJ
bnZva2UoJkNsYXNzOjpDb25zdE1ldGhvZCwgbWFrZV91bmlxdWU8Y29uc3QgQ2xhc3M+KCksIDMs
IDIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbG9nX3NldmVyaXR5LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9sb2dfc2V2ZXJpdHkuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJhMmE0ODUyYTU3OTI3YjZkODEyZDgwNzEz
ZWJmNWM4NDdkNWJhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbG9nX3NldmVyaXR5
LmNjCkBAIC0wLDAgKzEsMjUgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oIgorCisjaW5jbHVkZSA8
b3N0cmVhbT4KKworbmFtZXNwYWNlIGFic2wgeworCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwo
c3RkOjpvc3RyZWFtJiBvcywgYWJzbDo6TG9nU2V2ZXJpdHkgcykgeworICBpZiAocyA9PSBhYnNs
OjpOb3JtYWxpemVMb2dTZXZlcml0eShzKSkgcmV0dXJuIG9zIDw8IGFic2w6OkxvZ1NldmVyaXR5
TmFtZShzKTsKKyAgcmV0dXJuIG9zIDw8ICJhYnNsOjpMb2dTZXZlcml0eSgiIDw8IHN0YXRpY19j
YXN0PGludD4ocykgPDwgIikiOworfQorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvbG9nX3NldmVyaXR5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oCmlu
ZGV4IDU3NzBkMzYyOWU3MjY0Njg5ZjYwMjljYjZkNjQyODU1NDViZjRmZDEuLjVhMWQ1NTc2Y2U3
YmM1ZGEzMDdhZTgyMjYzNzc3MGQ4ZjI0NmRkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbG9n
X3NldmVyaXR5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9sb2dfc2V2ZXJpdHkuaApAQCAtNCwxOSArNCwx
OSBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIC8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLy8KIAogI2lmbmRl
ZiBBQlNMX0JBU0VfSU5URVJOQUxfTE9HX1NFVkVSSVRZX0hfCiAjZGVmaW5lIEFCU0xfQkFTRV9J
TlRFUk5BTF9MT0dfU0VWRVJJVFlfSF8KIAogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPG9z
dHJlYW0+CiAKICNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgogCkBAIC02Miw2ICs2
MiwxMCBAQCBjb25zdGV4cHIgYWJzbDo6TG9nU2V2ZXJpdHkgTm9ybWFsaXplTG9nU2V2ZXJpdHko
aW50IHMpIHsKICAgcmV0dXJuIE5vcm1hbGl6ZUxvZ1NldmVyaXR5KHN0YXRpY19jYXN0PGFic2w6
OkxvZ1NldmVyaXR5PihzKSk7CiB9CiAKKy8vIFRoZSBleGFjdCByZXByZXNlbnRhdGlvbiBvZiBh
IHN0cmVhbWVkIGBhYnNsOjpMb2dTZXZlcml0eWAgaXMgZGVsaWJlcmF0ZWx5CisvLyB1bnNwZWNp
ZmllZDsgZG8gbm90IHJlbHkgb24gaXQuCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpv
c3RyZWFtJiBvcywgYWJzbDo6TG9nU2V2ZXJpdHkgcyk7CisKIH0gIC8vIG5hbWVzcGFjZSBhYnNs
CiAKICNlbmRpZiAgLy8gQUJTTF9CQVNFX0lOVEVSTkFMX0xPR19TRVZFUklUWV9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9sb2dfc2V2ZXJpdHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbG9nX3Nl
dmVyaXR5X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRlMmQxMDFiZmE4YTFkYWI5MTlkMmQxOGQxMGE3
YzRiYjdkYTk4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbG9nX3NldmVyaXR5X3Rl
c3QuY2MKQEAgLTAsMCArMSw0MyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbG9nX3NldmVyaXR5LmgiCisKKyNpbmNsdWRl
IDxzc3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKK3VzaW5nIHRlc3Rpbmc6
OkVxOworCitzdGQ6OnN0cmluZyBTdHJlYW1IZWxwZXIoYWJzbDo6TG9nU2V2ZXJpdHkgdmFsdWUp
IHsKKyAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgc3RyZWFtIDw8IHZhbHVlOworICBy
ZXR1cm4gc3RyZWFtLnN0cigpOworfQorCitURVNUKFN0cmVhbVRlc3QsIFdvcmtzKSB7CisgIEVY
UEVDVF9USEFUKFN0cmVhbUhlbHBlcihzdGF0aWNfY2FzdDxhYnNsOjpMb2dTZXZlcml0eT4oLTEw
MCkpLAorICAgICAgICAgICAgICBFcSgiYWJzbDo6TG9nU2V2ZXJpdHkoLTEwMCkiKSk7CisgIEVY
UEVDVF9USEFUKFN0cmVhbUhlbHBlcihhYnNsOjpMb2dTZXZlcml0eTo6a0luZm8pLCBFcSgiSU5G
TyIpKTsKKyAgRVhQRUNUX1RIQVQoU3RyZWFtSGVscGVyKGFic2w6OkxvZ1NldmVyaXR5OjprV2Fy
bmluZyksIEVxKCJXQVJOSU5HIikpOworICBFWFBFQ1RfVEhBVChTdHJlYW1IZWxwZXIoYWJzbDo6
TG9nU2V2ZXJpdHk6OmtFcnJvciksIEVxKCJFUlJPUiIpKTsKKyAgRVhQRUNUX1RIQVQoU3RyZWFt
SGVscGVyKGFic2w6OkxvZ1NldmVyaXR5OjprRmF0YWwpLCBFcSgiRkFUQUwiKSk7CisgIEVYUEVD
VF9USEFUKFN0cmVhbUhlbHBlcihzdGF0aWNfY2FzdDxhYnNsOjpMb2dTZXZlcml0eT4oNCkpLAor
ICAgICAgICAgICAgICBFcSgiYWJzbDo6TG9nU2V2ZXJpdHkoNCkiKSk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9tYWNyb3MuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbWFj
cm9zLmgKaW5kZXggY2EzZDVlZGI2NTM2NTA2ZjY4Mjc0MTY3ZTNhMzEzZDUxY2MwZTMxMy4uNjA2
YTkwYWMwY2NhNWFiMTUxNWJmOTc5OTEwMmVjMzk1ODZkOWQ4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9tYWNyb3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL21hY3Jvcy5oCkBAIC01LDcgKzUsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yNCw3ICsyNCw2IEBACiAvLyBUaGlzIGNvZGUg
aXMgY29tcGlsZWQgZGlyZWN0bHkgb24gbWFueSBwbGF0Zm9ybXMsIGluY2x1ZGluZyBjbGllbnQK
IC8vIHBsYXRmb3JtcyBsaWtlIFdpbmRvd3MsIE1hYywgYW5kIGVtYmVkZGVkIHN5c3RlbXMuICBC
ZWZvcmUgbWFraW5nCiAvLyBhbnkgY2hhbmdlcyBoZXJlLCBtYWtlIHN1cmUgdGhhdCB5b3UncmUg
bm90IGJyZWFraW5nIGFueSBwbGF0Zm9ybXMuCi0vLwogCiAjaWZuZGVmIEFCU0xfQkFTRV9NQUNS
T1NfSF8KICNkZWZpbmUgQUJTTF9CQVNFX01BQ1JPU19IXwpAQCAtMzIsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KIAorI2luY2x1ZGUgImFic2wvYmFz
ZS9vcHRpbWl6YXRpb24uaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIgogCiAvLyBBQlNM
X0FSUkFZU0laRSgpCkBAIC0xOTIsMTEgKzE5MiwyMiBAQCBlbnVtIExpbmtlckluaXRpYWxpemVk
IHsKIC8vIFRoaXMgbWFjcm8gaXMgaW5zcGlyZWQgYnkKIC8vIGh0dHBzOi8vYWtyemVtaTEud29y
ZHByZXNzLmNvbS8yMDE3LzA1LzE4L2Fzc2VydHMtaW4tY29uc3RleHByLWZ1bmN0aW9ucy8KICNp
ZiBkZWZpbmVkKE5ERUJVRykKLSNkZWZpbmUgQUJTTF9BU1NFUlQoZXhwcikgKGZhbHNlID8gKHZv
aWQpKGV4cHIpIDogKHZvaWQpMCkKKyNkZWZpbmUgQUJTTF9BU1NFUlQoZXhwcikgXAorICAoZmFs
c2UgPyBzdGF0aWNfY2FzdDx2b2lkPihleHByKSA6IHN0YXRpY19jYXN0PHZvaWQ+KDApKQogI2Vs
c2UKLSNkZWZpbmUgQUJTTF9BU1NFUlQoZXhwcikgICAgICAgICAgICAgIFwKLSAgKEFCU0xfUFJF
RElDVF9UUlVFKChleHByKSkgPyAodm9pZCkwIFwKKyNkZWZpbmUgQUJTTF9BU1NFUlQoZXhwcikg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIChBQlNMX1BSRURJQ1RfVFJVRSgoZXhwcikp
ID8gc3RhdGljX2Nhc3Q8dm9pZD4oMCkgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IFtdIHsgYXNzZXJ0KGZhbHNlICYmICNleHByKTsgfSgpKSAgLy8gTk9MSU5UCiAjZW5kaWYKIAor
I2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVFJZIHRy
eQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX0NBVENIX0FOWSBjYXRjaCAoLi4uKQorI2RlZmluZSBB
QlNMX0lOVEVSTkFMX1JFVEhST1cgZG8geyB0aHJvdzsgfSB3aGlsZSAoZmFsc2UpCisjZWxzZSAg
Ly8gQUJTTF9IQVZFX0VYQ0VQVElPTlMKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9UUlkgaWYgKHRy
dWUpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfQ0FUQ0hfQU5ZIGVsc2UgaWYgKGZhbHNlKQorI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX1JFVEhST1cgZG8ge30gd2hpbGUgKGZhbHNlKQorI2VuZGlmICAv
LyBBQlNMX0hBVkVfRVhDRVBUSU9OUworCiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9NQUNST1NfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL29wdGlt
aXphdGlvbi5oCmluZGV4IDJmZGRmYzgwMGMxZGRkNWVhMzc3NmU0ODkyYmQyYWI0MDkxMTUxNmMu
LjBkY2JlZjMyYTNjNTA3MDVmN2ExZmMwMDY5ODMwZTM1MTA3NmVlOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9vcHRpbWl6YXRpb24uaApA
QCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTExLDkgKzExMSw5
IEBACiAvLyBTZWUgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMjEvZG9jcy9w
YXBlcnMvMjAxNi9wMDE1NHIxLmh0bWwKIC8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgogLy8KLS8v
IE9uIHNvbWUgY29tcGlsZXJzLCBgQUJTTF9DQUNIRUxJTkVfQUxJR05FRGAgZXhwYW5kcyB0bwot
Ly8gYF9fYXR0cmlidXRlX18oKGFsaWduZWQoQUJTTF9DQUNIRUxJTkVfU0laRSkpKWAuIEZvciBj
b21waWxlcnMgd2hlcmUgdGhpcyBpcwotLy8gbm90IGtub3duIHRvIHdvcmssIHRoZSBtYWNybyBl
eHBhbmRzIHRvIG5vdGhpbmcuCisvLyBPbiBzb21lIGNvbXBpbGVycywgYEFCU0xfQ0FDSEVMSU5F
X0FMSUdORURgIGV4cGFuZHMgdG8gYW4gYF9fYXR0cmlidXRlX19gCisvLyBvciBgX19kZWNsc3Bl
Y2AgYXR0cmlidXRlLiBGb3IgY29tcGlsZXJzIHdoZXJlIHRoaXMgaXMgbm90IGtub3duIHRvIHdv
cmssCisvLyB0aGUgbWFjcm8gZXhwYW5kcyB0byBub3RoaW5nLgogLy8KIC8vIE5vIGZ1cnRoZXIg
Z3VhcmFudGVlcyBhcmUgbWFkZSBoZXJlLiBUaGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRoZSBtYWNy
bwogLy8gdG8gdmFyaWFibGVzIGFuZCB0eXBlcyBpcyBhbHdheXMgaW1wbGVtZW50YXRpb24tZGVm
aW5lZC4KQEAgLTEyMiw2ICsxMjIsMTQgQEAKIC8vIG9mIGNhdXNpbmcgYnVncyB0aGF0IGFyZSBk
aWZmaWN1bHQgdG8gZGlhZ25vc2UsIGNyYXNoLCBldGMuIEl0IGRvZXMgbm90CiAvLyBvZiBpdHNl
bGYgZ3VhcmFudGVlIHRoYXQgb2JqZWN0cyBhcmUgYWxpZ25lZCB0byBhIGNhY2hlIGxpbmUuCiAv
LworLy8gTk9URTogU29tZSBjb21waWxlcnMgYXJlIHBpY2t5IGFib3V0IHRoZSBsb2NhdGlvbnMg
b2YgYW5ub3RhdGlvbnMgc3VjaCBhcworLy8gdGhpcyBhdHRyaWJ1dGUsIHNvIHByZWZlciB0byBw
dXQgaXQgYXQgdGhlIGJlZ2lubmluZyBvZiB5b3VyIGRlY2xhcmF0aW9uLgorLy8gRm9yIGV4YW1w
bGUsCisvLworLy8gICBBQlNMX0NBQ0hFTElORV9BTElHTkVEIHN0YXRpYyBGb28qIGZvbyA9IC4u
LgorLy8KKy8vICAgY2xhc3MgQUJTTF9DQUNIRUxJTkVfQUxJR05FRCBCYXIgeyAuLi4KKy8vCiAv
LyBSZWNvbW1lbmRhdGlvbnM6CiAvLwogLy8gMSkgQ29uc3VsdCBjb21waWxlciBkb2N1bWVudGF0
aW9uOyB0aGlzIGNvbW1lbnQgaXMgbm90IGtlcHQgaW4gc3luYyBhcwpAQCAtMTMxLDggKzEzOSwx
MCBAQAogLy8gMykgUHJlZmVyIGFwcGx5aW5nIHRoaXMgYXR0cmlidXRlIHRvIGluZGl2aWR1YWwg
dmFyaWFibGVzLiBBdm9pZAogLy8gICAgYXBwbHlpbmcgaXQgdG8gdHlwZXMuIFRoaXMgdGVuZHMg
dG8gbG9jYWxpemUgdGhlIGVmZmVjdC4KICNkZWZpbmUgQUJTTF9DQUNIRUxJTkVfQUxJR05FRCBf
X2F0dHJpYnV0ZV9fKChhbGlnbmVkKEFCU0xfQ0FDSEVMSU5FX1NJWkUpKSkKLQotI2Vsc2UgIC8v
IG5vdCBHQ0MKKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIEFCU0xfQ0FDSEVMSU5F
X1NJWkUgNjQKKyNkZWZpbmUgQUJTTF9DQUNIRUxJTkVfQUxJR05FRCBfX2RlY2xzcGVjKGFsaWdu
KEFCU0xfQ0FDSEVMSU5FX1NJWkUpKQorI2Vsc2UKICNkZWZpbmUgQUJTTF9DQUNIRUxJTkVfU0la
RSA2NAogI2RlZmluZSBBQlNMX0NBQ0hFTElORV9BTElHTkVECiAjZW5kaWYKQEAgLTE1Myw2ICsx
NjMsMTIgQEAKIC8vIENvbXBpbGVycyBjYW4gdXNlIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGEgY2Vy
dGFpbiBicmFuY2ggaXMgbm90IGxpa2VseSB0byBiZQogLy8gdGFrZW4gKGZvciBpbnN0YW5jZSwg
YSBDSEVDSyBmYWlsdXJlKSB0byBvcHRpbWl6ZSBmb3IgdGhlIGNvbW1vbiBjYXNlIGluCiAvLyB0
aGUgYWJzZW5jZSBvZiBiZXR0ZXIgaW5mb3JtYXRpb24gKGllLiBjb21waWxpbmcgZ2NjIHdpdGgg
YC1mcHJvZmlsZS1hcmNzYCkuCisvLworLy8gUmVjb21tZW5kYXRpb246IE1vZGVybiBDUFVzIGR5
bmFtaWNhbGx5IHByZWRpY3QgYnJhbmNoIGV4ZWN1dGlvbiBwYXRocywKKy8vIHR5cGljYWxseSB3
aXRoIGFjY3VyYWN5IGdyZWF0ZXIgdGhhbiA5NyUuIEFzIGEgcmVzdWx0LCBhbm5vdGF0aW5nIGV2
ZXJ5CisvLyBicmFuY2ggaW4gYSBjb2RlYmFzZSBpcyBsaWtlbHkgY291bnRlcnByb2R1Y3RpdmU7
IGhvd2V2ZXIsIGFubm90YXRpbmcKKy8vIHNwZWNpZmljIGJyYW5jaGVzIHRoYXQgYXJlIGJvdGgg
aG90IGFuZCBjb25zaXN0ZW50bHkgbWlzcHJlZGljdGVkIGlzIGxpa2VseQorLy8gdG8geWllbGQg
cGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLgogI2lmIEFCU0xfSEFWRV9CVUlMVElOKF9fYnVpbHRp
bl9leHBlY3QpIHx8IFwKICAgICAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFu
Z19fKSkKICNkZWZpbmUgQUJTTF9QUkVESUNUX0ZBTFNFKHgpIChfX2J1aWx0aW5fZXhwZWN0KHgs
IDApKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9wb2xpY3lfY2hlY2tzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L3BvbGljeV9jaGVja3MuaAppbmRleCAwYTA3ZmMwMzVlMTUyNmNkOTE2YmVhYjZmZmMwMzRhOWU2
NzA2YjJmLi42OTlmYjFhMmUwZmNjOGM5N2QxMDhlN2UzZTFiMWU5MjkzNTUwMTg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL3BvbGljeV9jaGVja3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3BvbGljeV9j
aGVja3MuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3BvcnQuaAppbmRleCAxYzY3MjU3
ZmQ4ZjMyM2ViMTcyYWM1YWUyY2IxYjFlNDFmNDdkNGY4Li42YzI4MDY4ZDRmNDAwZTU3NWE0NTQ4
YTZjMjU5N2NjYjMyYmM0ZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3BvcnQuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL3BvcnQuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9yYXdfbG9nZ2luZ190ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9yYXdfbG9nZ2luZ190ZXN0LmNjCmluZGV4IGIyMWNmNjUxNzU4ZTNjMjQ5MjYyZTY5YzFjOGJh
MTdjMWM5YTdhZWUuLjNkMzBiZDM4NjExNTJmODU5NzE2MzE0MGJmMzQ4ZGVhNDZiZDcwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvcmF3X2xvZ2dpbmdfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L3Jhd19sb2dnaW5nX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uvc3BpbmxvY2tfdGVzdF9jb21tb24uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL3NwaW5sb2NrX3Rlc3RfY29tbW9uLmNjCmluZGV4IDFiNTA4ODQ4NjExZTZjMWUw
NjNjODE1ODU2YTlhNzhjMzRmYzQ1MWUuLjg0ZmM0ZGFjMGJlNzRmMDNiNDM4NWM3MTI0ODM3NjY2
OGY0ZGNkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uvc3BpbmxvY2tfdGVzdF9jb21tb24uY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9zcGlubG9ja190ZXN0X2NvbW1vbi5jYwpAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNTQsNiArNTQsNyBAQCBuYW1lc3BhY2Ugewog
CiBzdGF0aWMgY29uc3RleHByIGludCBrQXJyYXlMZW5ndGggPSAxMDsKIHN0YXRpYyB1aW50MzJf
dCB2YWx1ZXNba0FycmF5TGVuZ3RoXTsKKwogc3RhdGljIFNwaW5Mb2NrIHN0YXRpY19zcGlubG9j
ayhiYXNlX2ludGVybmFsOjprTGlua2VySW5pdGlhbGl6ZWQpOwogc3RhdGljIFNwaW5Mb2NrIHN0
YXRpY19jb29wZXJhdGl2ZV9zcGlubG9jaygKICAgICBiYXNlX2ludGVybmFsOjprTGlua2VySW5p
dGlhbGl6ZWQsCkBAIC02MSw3ICs2Miw2IEBAIHN0YXRpYyBTcGluTG9jayBzdGF0aWNfY29vcGVy
YXRpdmVfc3BpbmxvY2soCiBzdGF0aWMgU3BpbkxvY2sgc3RhdGljX25vbmNvb3BlcmF0aXZlX3Nw
aW5sb2NrKAogICAgIGJhc2VfaW50ZXJuYWw6OmtMaW5rZXJJbml0aWFsaXplZCwgYmFzZV9pbnRl
cm5hbDo6U0NIRURVTEVfS0VSTkVMX09OTFkpOwogCi0KIC8vIFNpbXBsZSBpbnRlZ2VyIGhhc2gg
ZnVuY3Rpb24gYmFzZWQgb24gdGhlIHB1YmxpYyBkb21haW4gbG9va3VwMiBoYXNoLgogLy8gaHR0
cDovL2J1cnRsZWJ1cnRsZS5uZXQvYm9iL2MvbG9va3VwMi5jCiBzdGF0aWMgdWludDMyX3QgSGFz
aDMyKHVpbnQzMl90IGEsIHVpbnQzMl90IGMpIHsKQEAgLTE1NSw3ICsxNTUsOCBAQCBURVNUKFNw
aW5Mb2NrLCBXYWl0Q3ljbGVzRW5jb2RpbmcpIHsKIAogICAvLyBUZXN0IGNvcm5lciBjYXNlcwog
ICBpbnQ2NF90IHN0YXJ0X3RpbWUgPSB0aW1lX2Rpc3RyaWJ1dGlvbihnZW5lcmF0b3IpOwotICBF
WFBFQ1RfRVEoMCwgU3BpbkxvY2tUZXN0OjpFbmNvZGVXYWl0Q3ljbGVzKHN0YXJ0X3RpbWUsIHN0
YXJ0X3RpbWUpKTsKKyAgRVhQRUNUX0VRKGtTcGluTG9ja1NsZWVwZXIsCisgICAgICAgICAgICBT
cGluTG9ja1Rlc3Q6OkVuY29kZVdhaXRDeWNsZXMoc3RhcnRfdGltZSwgc3RhcnRfdGltZSkpOwog
ICBFWFBFQ1RfRVEoMCwgU3BpbkxvY2tUZXN0OjpEZWNvZGVXYWl0Q3ljbGVzKDApKTsKICAgRVhQ
RUNUX0VRKDAsIFNwaW5Mb2NrVGVzdDo6RGVjb2RlV2FpdEN5Y2xlcyhrTG9ja3dvcmRSZXNlcnZl
ZE1hc2spKTsKICAgRVhQRUNUX0VRKGtNYXhDeWNsZXMgJiB+a1Byb2ZpbGVUaW1lc3RhbXBNYXNr
LApAQCAtMTg4LDkgKzE4OSwxMSBAQCBURVNUKFNwaW5Mb2NrLCBXYWl0Q3ljbGVzRW5jb2Rpbmcp
IHsKICAgICBTcGluTG9ja1Rlc3Q6OkRlY29kZVdhaXRDeWNsZXMoYmVmb3JlX21heF92YWx1ZSk7
CiAgIEVYUEVDVF9HVChleHBlY3RlZF9tYXhfdmFsdWVfZGVjb2RlZCwgYmVmb3JlX21heF92YWx1
ZV9kZWNvZGVkKTsKIH0KKwogVEVTVChTcGluTG9ja1dpdGhUaHJlYWRzLCBTdGF0aWNTcGluTG9j
aykgewogICBUaHJlYWRlZFRlc3QoJnN0YXRpY19zcGlubG9jayk7CiB9CisKIFRFU1QoU3Bpbkxv
Y2tXaXRoVGhyZWFkcywgU3RhY2tTcGluTG9jaykgewogICBTcGluTG9jayBzcGlubG9jazsKICAg
VGhyZWFkZWRUZXN0KCZzcGlubG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3RocmVhZF9h
bm5vdGF0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaAppbmRleCBmYmIy
Nzk3YjgyNWY1YjI1MDk3MzQ3Yjg0OWQyZTYyMzQ0YzFlYzI4Li45MzIxYzNmODc2YzMyYzNmYWU2
ODE5NjY2YTA0YTNjOTkxZmVhZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3RocmVhZF9hbm5v
dGF0aW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIxLDcgKzIxLDYgQEAKIC8vIGNv
ZGUuIFRoZSBhbm5vdGF0aW9ucyBjYW4gYWxzbyBoZWxwIHByb2dyYW0gYW5hbHlzaXMgdG9vbHMg
dG8gaWRlbnRpZnkKIC8vIHBvdGVudGlhbCB0aHJlYWQgc2FmZXR5IGlzc3Vlcy4KIC8vCi0vLwog
Ly8gVGhlc2UgYW5ub3RhdGlvbnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIGNvbXBpbGVyIGF0dHJp
YnV0ZXMuIFVzaW5nIHRoZSBtYWNyb3MKIC8vIGRlZmluZWQgaGVyZSBpbnN0ZWFkIG9mIHJhdyBh
dHRyaWJ1dGVzIGFsbG93IGZvciBwb3J0YWJpbGl0eSBhbmQgZnV0dXJlCiAvLyBjb21wYXRpYmls
aXR5LgpAQCAtMzQsMTkgKzMzLDIwIEBACiAKICNpZm5kZWYgQUJTTF9CQVNFX1RIUkVBRF9BTk5P
VEFUSU9OU19IXwogI2RlZmluZSBBQlNMX0JBU0VfVEhSRUFEX0FOTk9UQVRJT05TX0hfCisKICNp
ZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNkZWZpbmUgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRF
X18oeCkgICBfX2F0dHJpYnV0ZV9fKCh4KSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9USFJFQURf
QU5OT1RBVElPTl9BVFRSSUJVVEUoeCkgX19hdHRyaWJ1dGVfXygoeCkpCiAjZWxzZQotI2RlZmlu
ZSBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyh4KSAgIC8vIG5vLW9wCisjZGVmaW5lIEFC
U0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKHgpICAvLyBuby1vcAogI2Vu
ZGlmCiAKLS8vIEdVQVJERURfQlkoKQorLy8gQUJTTF9HVUFSREVEX0JZKCkKIC8vCiAvLyBEb2N1
bWVudHMgaWYgYSBzaGFyZWQgZmllbGQgb3IgZ2xvYmFsIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHBy
b3RlY3RlZCBieSBhCi0vLyBtdXRleC4gR1VBUkRFRF9CWSgpIGFsbG93cyB0aGUgdXNlciB0byBz
cGVjaWZ5IGEgcGFydGljdWxhciBtdXRleCB0aGF0CisvLyBtdXRleC4gQUJTTF9HVUFSREVEX0JZ
KCkgYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgYSBwYXJ0aWN1bGFyIG11dGV4IHRoYXQKIC8v
IHNob3VsZCBiZSBoZWxkIHdoZW4gYWNjZXNzaW5nIHRoZSBhbm5vdGF0ZWQgdmFyaWFibGUuCiAv
LwotLy8gQWx0aG91Z2ggdGhpcyBhbm5vdGF0aW9uIChhbmQgUFRfR1VBUkRFRF9CWSwgYmVsb3cp
IGNhbm5vdCBiZSBhcHBsaWVkIHRvCisvLyBBbHRob3VnaCB0aGlzIGFubm90YXRpb24gKGFuZCBB
QlNMX1BUX0dVQVJERURfQlksIGJlbG93KSBjYW5ub3QgYmUgYXBwbGllZCB0bwogLy8gbG9jYWwg
dmFyaWFibGVzLCBhIGxvY2FsIHZhcmlhYmxlIGFuZCBpdHMgYXNzb2NpYXRlZCBtdXRleCBjYW4g
b2Z0ZW4gYmUKIC8vIGNvbWJpbmVkIGludG8gYSBzbWFsbCBjbGFzcyBvciBzdHJ1Y3QsIHRoZXJl
YnkgYWxsb3dpbmcgdGhlIGFubm90YXRpb24uCiAvLwpAQCAtNTQsMTIgKzU0LDEzIEBACiAvLwog
Ly8gICBjbGFzcyBGb28gewogLy8gICAgIE11dGV4IG11XzsKLS8vICAgICBpbnQgcDFfIEdVQVJE
RURfQlkobXVfKTsKKy8vICAgICBpbnQgcDFfIEFCU0xfR1VBUkRFRF9CWShtdV8pOwogLy8gICAg
IC4uLgogLy8gICB9OwotI2RlZmluZSBHVUFSREVEX0JZKHgpIFRIUkVBRF9BTk5PVEFUSU9OX0FU
VFJJQlVURV9fKGd1YXJkZWRfYnkoeCkpCisjZGVmaW5lIEFCU0xfR1VBUkRFRF9CWSh4KSBcCisg
IEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKGd1YXJkZWRfYnkoeCkp
CiAKLS8vIFBUX0dVQVJERURfQlkoKQorLy8gQUJTTF9QVF9HVUFSREVEX0JZKCkKIC8vCiAvLyBE
b2N1bWVudHMgaWYgdGhlIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IGEgcG9pbnRlciBz
aG91bGQgYmUgZ3VhcmRlZAogLy8gYnkgYSBtdXRleCB3aGVuIGRlcmVmZXJlbmNpbmcgdGhlIHBv
aW50ZXIuCkBAIC02Nyw3ICs2OCw3IEBACiAvLyBFeGFtcGxlOgogLy8gICBjbGFzcyBGb28gewog
Ly8gICAgIE11dGV4IG11XzsKLS8vICAgICBpbnQgKnAxXyBQVF9HVUFSREVEX0JZKG11Xyk7Cisv
LyAgICAgaW50ICpwMV8gQUJTTF9QVF9HVUFSREVEX0JZKG11Xyk7CiAvLyAgICAgLi4uCiAvLyAg
IH07CiAvLwpAQCAtNzgsMTAzICs3OSwxMTUgQEAKIC8vCiAvLyAgIC8vIGBxX2AsIGd1YXJkZWQg
YnkgYG11MV9gLCBwb2ludHMgdG8gYSBzaGFyZWQgbWVtb3J5IGxvY2F0aW9uIHRoYXQgaXMKIC8v
ICAgLy8gZ3VhcmRlZCBieSBgbXUyX2A6Ci0vLyAgIGludCAqcV8gR1VBUkRFRF9CWShtdTFfKSBQ
VF9HVUFSREVEX0JZKG11Ml8pOwotI2RlZmluZSBQVF9HVUFSREVEX0JZKHgpIFRIUkVBRF9BTk5P
VEFUSU9OX0FUVFJJQlVURV9fKHB0X2d1YXJkZWRfYnkoeCkpCisvLyAgIGludCAqcV8gQUJTTF9H
VUFSREVEX0JZKG11MV8pIEFCU0xfUFRfR1VBUkRFRF9CWShtdTJfKTsKKyNkZWZpbmUgQUJTTF9Q
VF9HVUFSREVEX0JZKHgpIFwKKyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRS
SUJVVEUocHRfZ3VhcmRlZF9ieSh4KSkKIAotLy8gQUNRVUlSRURfQUZURVIoKSAvIEFDUVVJUkVE
X0JFRk9SRSgpCisvLyBBQlNMX0FDUVVJUkVEX0FGVEVSKCkgLyBBQlNMX0FDUVVJUkVEX0JFRk9S
RSgpCiAvLwogLy8gRG9jdW1lbnRzIHRoZSBhY3F1aXNpdGlvbiBvcmRlciBiZXR3ZWVuIGxvY2tz
IHRoYXQgY2FuIGJlIGhlbGQKIC8vIHNpbXVsdGFuZW91c2x5IGJ5IGEgdGhyZWFkLiBGb3IgYW55
IHR3byBsb2NrcyB0aGF0IG5lZWQgdG8gYmUgYW5ub3RhdGVkCiAvLyB0byBlc3RhYmxpc2ggYW4g
YWNxdWlzaXRpb24gb3JkZXIsIG9ubHkgb25lIG9mIHRoZW0gbmVlZHMgdGhlIGFubm90YXRpb24u
Ci0vLyAoaS5lLiBZb3UgZG9uJ3QgaGF2ZSB0byBhbm5vdGF0ZSBib3RoIGxvY2tzIHdpdGggYm90
aCBBQ1FVSVJFRF9BRlRFUgotLy8gYW5kIEFDUVVJUkVEX0JFRk9SRS4pCisvLyAoaS5lLiBZb3Ug
ZG9uJ3QgaGF2ZSB0byBhbm5vdGF0ZSBib3RoIGxvY2tzIHdpdGggYm90aCBBQlNMX0FDUVVJUkVE
X0FGVEVSCisvLyBhbmQgQUJTTF9BQ1FVSVJFRF9CRUZPUkUuKQogLy8KLS8vIEFzIHdpdGggR1VB
UkRFRF9CWSwgdGhpcyBpcyBvbmx5IGFwcGxpY2FibGUgdG8gbXV0ZXhlcyB0aGF0IGFyZSBzaGFy
ZWQKKy8vIEFzIHdpdGggQUJTTF9HVUFSREVEX0JZLCB0aGlzIGlzIG9ubHkgYXBwbGljYWJsZSB0
byBtdXRleGVzIHRoYXQgYXJlIHNoYXJlZAogLy8gZmllbGRzIG9yIGdsb2JhbCB2YXJpYWJsZXMu
CiAvLwogLy8gRXhhbXBsZToKIC8vCiAvLyAgIE11dGV4IG0xXzsKLS8vICAgTXV0ZXggbTJfIEFD
UVVJUkVEX0FGVEVSKG0xXyk7Ci0jZGVmaW5lIEFDUVVJUkVEX0FGVEVSKC4uLikgXAotICBUSFJF
QURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhhY3F1aXJlZF9hZnRlcihfX1ZBX0FSR1NfXykpCisv
LyAgIE11dGV4IG0yXyBBQlNMX0FDUVVJUkVEX0FGVEVSKG0xXyk7CisjZGVmaW5lIEFCU0xfQUNR
VUlSRURfQUZURVIoLi4uKSBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRU
UklCVVRFKGFjcXVpcmVkX2FmdGVyKF9fVkFfQVJHU19fKSkKIAotI2RlZmluZSBBQ1FVSVJFRF9C
RUZPUkUoLi4uKSBcCi0gIFRIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURV9fKGFjcXVpcmVkX2Jl
Zm9yZShfX1ZBX0FSR1NfXykpCisjZGVmaW5lIEFCU0xfQUNRVUlSRURfQkVGT1JFKC4uLikgXAor
ICBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURShhY3F1aXJlZF9iZWZv
cmUoX19WQV9BUkdTX18pKQogCi0vLyBFWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoKSAvIFNIQVJF
RF9MT0NLU19SRVFVSVJFRCgpCisvLyBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRCgpIC8g
QUJTTF9TSEFSRURfTE9DS1NfUkVRVUlSRUQoKQogLy8KIC8vIERvY3VtZW50cyBhIGZ1bmN0aW9u
IHRoYXQgZXhwZWN0cyBhIG11dGV4IHRvIGJlIGhlbGQgcHJpb3IgdG8gZW50cnkuCiAvLyBUaGUg
bXV0ZXggaXMgZXhwZWN0ZWQgdG8gYmUgaGVsZCBib3RoIG9uIGVudHJ5IHRvLCBhbmQgZXhpdCBm
cm9tLCB0aGUKIC8vIGZ1bmN0aW9uLgogLy8KKy8vIEFuIGV4Y2x1c2l2ZSBsb2NrIGFsbG93cyBy
ZWFkLXdyaXRlIGFjY2VzcyB0byB0aGUgZ3VhcmRlZCBkYXRhIG1lbWJlcihzKSwgYW5kCisvLyBv
bmx5IG9uZSB0aHJlYWQgY2FuIGFjcXVpcmUgYSBsb2NrIGV4Y2x1c2l2ZWx5IGF0IGFueSBvbmUg
dGltZS4gQSBzaGFyZWQgbG9jaworLy8gYWxsb3dzIHJlYWQtb25seSBhY2Nlc3MsIGFuZCBhbnkg
bnVtYmVyIG9mIHRocmVhZHMgY2FuIGFjcXVpcmUgYSBzaGFyZWQgbG9jaworLy8gY29uY3VycmVu
dGx5LgorLy8KKy8vIEdlbmVyYWxseSwgbm9uLWNvbnN0IG1ldGhvZHMgc2hvdWxkIGJlIGFubm90
YXRlZCB3aXRoCisvLyBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRCwgd2hpbGUgY29uc3Qg
bWV0aG9kcyBzaG91bGQgYmUgYW5ub3RhdGVkIHdpdGgKKy8vIEFCU0xfU0hBUkVEX0xPQ0tTX1JF
UVVJUkVELgorLy8KIC8vIEV4YW1wbGU6CiAvLwogLy8gICBNdXRleCBtdTEsIG11MjsKLS8vICAg
aW50IGEgR1VBUkRFRF9CWShtdTEpOwotLy8gICBpbnQgYiBHVUFSREVEX0JZKG11Mik7Ci0vLwot
Ly8gICB2b2lkIGZvbygpIEVYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChtdTEsIG11MikgeyAuLi4g
fTsKLSNkZWZpbmUgRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKC4uLikgXAotICBUSFJFQURfQU5O
T1RBVElPTl9BVFRSSUJVVEVfXyhleGNsdXNpdmVfbG9ja3NfcmVxdWlyZWQoX19WQV9BUkdTX18p
KQorLy8gICBpbnQgYSBBQlNMX0dVQVJERURfQlkobXUxKTsKKy8vICAgaW50IGIgQUJTTF9HVUFS
REVEX0JZKG11Mik7CisvLworLy8gICB2b2lkIGZvbygpIEFCU0xfRVhDTFVTSVZFX0xPQ0tTX1JF
UVVJUkVEKG11MSwgbXUyKSB7IC4uLiB9CisvLyAgIHZvaWQgYmFyKCkgY29uc3QgQUJTTF9TSEFS
RURfTE9DS1NfUkVRVUlSRUQobXUxLCBtdTIpIHsgLi4uIH0KKyNkZWZpbmUgQUJTTF9FWENMVVNJ
VkVfTE9DS1NfUkVRVUlSRUQoLi4uKSAgIFwKKyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RB
VElPTl9BVFRSSUJVVEUoIFwKKyAgICAgIGV4Y2x1c2l2ZV9sb2Nrc19yZXF1aXJlZChfX1ZBX0FS
R1NfXykpCiAKLSNkZWZpbmUgU0hBUkVEX0xPQ0tTX1JFUVVJUkVEKC4uLikgXAotICBUSFJFQURf
QU5OT1RBVElPTl9BVFRSSUJVVEVfXyhzaGFyZWRfbG9ja3NfcmVxdWlyZWQoX19WQV9BUkdTX18p
KQorI2RlZmluZSBBQlNMX1NIQVJFRF9MT0NLU19SRVFVSVJFRCguLi4pIFwKKyAgQUJTTF9JTlRF
Uk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUoc2hhcmVkX2xvY2tzX3JlcXVpcmVkKF9f
VkFfQVJHU19fKSkKIAotLy8gTE9DS1NfRVhDTFVERUQoKQorLy8gQUJTTF9MT0NLU19FWENMVURF
RCgpCiAvLwogLy8gRG9jdW1lbnRzIHRoZSBsb2NrcyBhY3F1aXJlZCBpbiB0aGUgYm9keSBvZiB0
aGUgZnVuY3Rpb24uIFRoZXNlIGxvY2tzCiAvLyBjYW5ub3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcg
dGhpcyBmdW5jdGlvbiAoYXMgQWJzZWlsJ3MgYE11dGV4YCBsb2NrcyBhcmUKIC8vIG5vbi1yZWVu
dHJhbnQpLgotI2RlZmluZSBMT0NLU19FWENMVURFRCguLi4pIFwKLSAgVEhSRUFEX0FOTk9UQVRJ
T05fQVRUUklCVVRFX18obG9ja3NfZXhjbHVkZWQoX19WQV9BUkdTX18pKQorI2RlZmluZSBBQlNM
X0xPQ0tTX0VYQ0xVREVEKC4uLikgXAorICBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9O
X0FUVFJJQlVURShsb2Nrc19leGNsdWRlZChfX1ZBX0FSR1NfXykpCiAKLS8vIExPQ0tfUkVUVVJO
RUQoKQorLy8gQUJTTF9MT0NLX1JFVFVSTkVEKCkKIC8vCiAvLyBEb2N1bWVudHMgYSBmdW5jdGlv
biB0aGF0IHJldHVybnMgYSBtdXRleCB3aXRob3V0IGFjcXVpcmluZyBpdC4gIEZvciBleGFtcGxl
LAogLy8gYSBwdWJsaWMgZ2V0dGVyIG1ldGhvZCB0aGF0IHJldHVybnMgYSBwb2ludGVyIHRvIGEg
cHJpdmF0ZSBtdXRleCBzaG91bGQKLS8vIGJlIGFubm90YXRlZCB3aXRoIExPQ0tfUkVUVVJORUQu
Ci0jZGVmaW5lIExPQ0tfUkVUVVJORUQoeCkgXAotICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJV
VEVfXyhsb2NrX3JldHVybmVkKHgpKQorLy8gYmUgYW5ub3RhdGVkIHdpdGggQUJTTF9MT0NLX1JF
VFVSTkVELgorI2RlZmluZSBBQlNMX0xPQ0tfUkVUVVJORUQoeCkgXAorICBBQlNMX0lOVEVSTkFM
X1RIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURShsb2NrX3JldHVybmVkKHgpKQogCi0vLyBMT0NL
QUJMRQorLy8gQUJTTF9MT0NLQUJMRQogLy8KIC8vIERvY3VtZW50cyBpZiBhIGNsYXNzL3R5cGUg
aXMgYSBsb2NrYWJsZSB0eXBlIChzdWNoIGFzIHRoZSBgTXV0ZXhgIGNsYXNzKS4KLSNkZWZpbmUg
TE9DS0FCTEUgXAotICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhsb2NrYWJsZSkKKyNk
ZWZpbmUgQUJTTF9MT0NLQUJMRSBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9OX0FUVFJJ
QlVURShsb2NrYWJsZSkKIAotLy8gU0NPUEVEX0xPQ0tBQkxFCisvLyBBQlNMX1NDT1BFRF9MT0NL
QUJMRQogLy8KIC8vIERvY3VtZW50cyBpZiBhIGNsYXNzIGRvZXMgUkFJSSBsb2NraW5nIChzdWNo
IGFzIHRoZSBgTXV0ZXhMb2NrYCBjbGFzcykuCiAvLyBUaGUgY29uc3RydWN0b3Igc2hvdWxkIHVz
ZSBgTE9DS19GVU5DVElPTigpYCB0byBzcGVjaWZ5IHRoZSBtdXRleCB0aGF0IGlzCi0vLyBhY3F1
aXJlZCwgYW5kIHRoZSBkZXN0cnVjdG9yIHNob3VsZCB1c2UgYFVOTE9DS19GVU5DVElPTigpYCB3
aXRoIG5vCisvLyBhY3F1aXJlZCwgYW5kIHRoZSBkZXN0cnVjdG9yIHNob3VsZCB1c2UgYEFCU0xf
VU5MT0NLX0ZVTkNUSU9OKClgIHdpdGggbm8KIC8vIGFyZ3VtZW50czsgdGhlIGFuYWx5c2lzIHdp
bGwgYXNzdW1lIHRoYXQgdGhlIGRlc3RydWN0b3IgdW5sb2NrcyB3aGF0ZXZlciB0aGUKIC8vIGNv
bnN0cnVjdG9yIGxvY2tlZC4KLSNkZWZpbmUgU0NPUEVEX0xPQ0tBQkxFIFwKLSAgVEhSRUFEX0FO
Tk9UQVRJT05fQVRUUklCVVRFX18oc2NvcGVkX2xvY2thYmxlKQorI2RlZmluZSBBQlNMX1NDT1BF
RF9MT0NLQUJMRSBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRF
KHNjb3BlZF9sb2NrYWJsZSkKIAotLy8gRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKQorLy8gQUJT
TF9FWENMVVNJVkVfTE9DS19GVU5DVElPTigpCiAvLwogLy8gRG9jdW1lbnRzIGZ1bmN0aW9ucyB0
aGF0IGFjcXVpcmUgYSBsb2NrIGluIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24sIGFuZCBkbwogLy8g
bm90IHJlbGVhc2UgaXQuCi0jZGVmaW5lIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKC4uLikgXAot
ICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhleGNsdXNpdmVfbG9ja19mdW5jdGlvbihf
X1ZBX0FSR1NfXykpCisjZGVmaW5lIEFCU0xfRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oLi4uKSAg
ICBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKCBcCisgICAg
ICBleGNsdXNpdmVfbG9ja19mdW5jdGlvbihfX1ZBX0FSR1NfXykpCiAKLS8vIFNIQVJFRF9MT0NL
X0ZVTkNUSU9OKCkKKy8vIEFCU0xfU0hBUkVEX0xPQ0tfRlVOQ1RJT04oKQogLy8KIC8vIERvY3Vt
ZW50cyBmdW5jdGlvbnMgdGhhdCBhY3F1aXJlIGEgc2hhcmVkIChyZWFkZXIpIGxvY2sgaW4gdGhl
IGJvZHkgb2YgYQogLy8gZnVuY3Rpb24sIGFuZCBkbyBub3QgcmVsZWFzZSBpdC4KLSNkZWZpbmUg
U0hBUkVEX0xPQ0tfRlVOQ1RJT04oLi4uKSBcCi0gIFRIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVU
RV9fKHNoYXJlZF9sb2NrX2Z1bmN0aW9uKF9fVkFfQVJHU19fKSkKKyNkZWZpbmUgQUJTTF9TSEFS
RURfTE9DS19GVU5DVElPTiguLi4pIFwKKyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElP
Tl9BVFRSSUJVVEUoc2hhcmVkX2xvY2tfZnVuY3Rpb24oX19WQV9BUkdTX18pKQogCi0vLyBVTkxP
Q0tfRlVOQ1RJT04oKQorLy8gQUJTTF9VTkxPQ0tfRlVOQ1RJT04oKQogLy8KIC8vIERvY3VtZW50
cyBmdW5jdGlvbnMgdGhhdCBleHBlY3QgYSBsb2NrIHRvIGJlIGhlbGQgb24gZW50cnkgdG8gdGhl
IGZ1bmN0aW9uLAogLy8gYW5kIHJlbGVhc2UgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9u
LgotI2RlZmluZSBVTkxPQ0tfRlVOQ1RJT04oLi4uKSBcCi0gIFRIUkVBRF9BTk5PVEFUSU9OX0FU
VFJJQlVURV9fKHVubG9ja19mdW5jdGlvbihfX1ZBX0FSR1NfXykpCisjZGVmaW5lIEFCU0xfVU5M
T0NLX0ZVTkNUSU9OKC4uLikgXAorICBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9OX0FU
VFJJQlVURSh1bmxvY2tfZnVuY3Rpb24oX19WQV9BUkdTX18pKQogCi0vLyBFWENMVVNJVkVfVFJZ
TE9DS19GVU5DVElPTigpIC8gU0hBUkVEX1RSWUxPQ0tfRlVOQ1RJT04oKQorLy8gQUJTTF9FWENM
VVNJVkVfVFJZTE9DS19GVU5DVElPTigpIC8gQUJTTF9TSEFSRURfVFJZTE9DS19GVU5DVElPTigp
CiAvLwogLy8gRG9jdW1lbnRzIGZ1bmN0aW9ucyB0aGF0IHRyeSB0byBhY3F1aXJlIGEgbG9jaywg
YW5kIHJldHVybiBzdWNjZXNzIG9yIGZhaWx1cmUKIC8vIChvciBhIG5vbi1ib29sZWFuIHZhbHVl
IHRoYXQgY2FuIGJlIGludGVycHJldGVkIGFzIGEgYm9vbGVhbikuCkBAIC0xODIsNzYgKzE5NSw4
MCBAQAogLy8gc3VjY2Vzcywgb3IgYGZhbHNlYCBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGBm
YWxzZWAgb24gc3VjY2Vzcy4gVGhlIHNlY29uZAogLy8gYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBt
dXRleCB0aGF0IGlzIGxvY2tlZCBvbiBzdWNjZXNzLiBJZiB1bnNwZWNpZmllZCwgdGhpcwogLy8g
bXV0ZXggaXMgYXNzdW1lZCB0byBiZSBgdGhpc2AuCi0jZGVmaW5lIEVYQ0xVU0lWRV9UUllMT0NL
X0ZVTkNUSU9OKC4uLikgXAotICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhleGNsdXNp
dmVfdHJ5bG9ja19mdW5jdGlvbihfX1ZBX0FSR1NfXykpCisjZGVmaW5lIEFCU0xfRVhDTFVTSVZF
X1RSWUxPQ0tfRlVOQ1RJT04oLi4uKSBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJ
T05fQVRUUklCVVRFKCBcCisgICAgICBleGNsdXNpdmVfdHJ5bG9ja19mdW5jdGlvbihfX1ZBX0FS
R1NfXykpCiAKLSNkZWZpbmUgU0hBUkVEX1RSWUxPQ0tfRlVOQ1RJT04oLi4uKSBcCi0gIFRIUkVB
RF9BTk5PVEFUSU9OX0FUVFJJQlVURV9fKHNoYXJlZF90cnlsb2NrX2Z1bmN0aW9uKF9fVkFfQVJH
U19fKSkKKyNkZWZpbmUgQUJTTF9TSEFSRURfVFJZTE9DS19GVU5DVElPTiguLi4pICAgIFwKKyAg
QUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUoIFwKKyAgICAgIHNoYXJl
ZF90cnlsb2NrX2Z1bmN0aW9uKF9fVkFfQVJHU19fKSkKIAotLy8gQVNTRVJUX0VYQ0xVU0lWRV9M
T0NLKCkgLyBBU1NFUlRfU0hBUkVEX0xPQ0soKQorLy8gQUJTTF9BU1NFUlRfRVhDTFVTSVZFX0xP
Q0soKSAvIEFCU0xfQVNTRVJUX1NIQVJFRF9MT0NLKCkKIC8vCiAvLyBEb2N1bWVudHMgZnVuY3Rp
b25zIHRoYXQgZHluYW1pY2FsbHkgY2hlY2sgdG8gc2VlIGlmIGEgbG9jayBpcyBoZWxkLCBhbmQg
ZmFpbAogLy8gaWYgaXQgaXMgbm90IGhlbGQuCi0jZGVmaW5lIEFTU0VSVF9FWENMVVNJVkVfTE9D
SyguLi4pIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18oYXNzZXJ0X2V4Y2x1c2l2
ZV9sb2NrKF9fVkFfQVJHU19fKSkKKyNkZWZpbmUgQUJTTF9BU1NFUlRfRVhDTFVTSVZFX0xPQ0so
Li4uKSBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKGFzc2Vy
dF9leGNsdXNpdmVfbG9jayhfX1ZBX0FSR1NfXykpCiAKLSNkZWZpbmUgQVNTRVJUX1NIQVJFRF9M
T0NLKC4uLikgXAotICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhhc3NlcnRfc2hhcmVk
X2xvY2soX19WQV9BUkdTX18pKQorI2RlZmluZSBBQlNMX0FTU0VSVF9TSEFSRURfTE9DSyguLi4p
IFwKKyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUoYXNzZXJ0X3No
YXJlZF9sb2NrKF9fVkFfQVJHU19fKSkKIAotLy8gTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwor
Ly8gQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAvLwogLy8gVHVybnMgb2ZmIHRocmVh
ZCBzYWZldHkgY2hlY2tpbmcgd2l0aGluIHRoZSBib2R5IG9mIGEgcGFydGljdWxhciBmdW5jdGlv
bi4KIC8vIFRoaXMgYW5ub3RhdGlvbiBpcyB1c2VkIHRvIG1hcmsgZnVuY3Rpb25zIHRoYXQgYXJl
IGtub3duIHRvIGJlIGNvcnJlY3QsIGJ1dAogLy8gdGhlIGxvY2tpbmcgYmVoYXZpb3IgaXMgbW9y
ZSBjb21wbGljYXRlZCB0aGFuIHRoZSBhbmFseXplciBjYW4gaGFuZGxlLgotI2RlZmluZSBOT19U
SFJFQURfU0FGRVRZX0FOQUxZU0lTIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18o
bm9fdGhyZWFkX3NhZmV0eV9hbmFseXNpcykKKyNkZWZpbmUgQUJTTF9OT19USFJFQURfU0FGRVRZ
X0FOQUxZU0lTIFwKKyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUo
bm9fdGhyZWFkX3NhZmV0eV9hbmFseXNpcykKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8v
IFRvb2wtU3VwcGxpZWQgQW5ub3RhdGlvbnMKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS8v
IFRTX1VOQ0hFQ0tFRCBzaG91bGQgYmUgcGxhY2VkIGFyb3VuZCBsb2NrIGV4cHJlc3Npb25zIHRo
YXQgYXJlIG5vdCB2YWxpZAorLy8gQUJTTF9UU19VTkNIRUNLRUQgc2hvdWxkIGJlIHBsYWNlZCBh
cm91bmQgbG9jayBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QgdmFsaWQKIC8vIEMrKyBzeW50YXgs
IGJ1dCB3aGljaCBhcmUgcHJlc2VudCBmb3IgZG9jdW1lbnRhdGlvbiBwdXJwb3Nlcy4gIFRoZXNl
CiAvLyBhbm5vdGF0aW9ucyB3aWxsIGJlIGlnbm9yZWQgYnkgdGhlIGFuYWx5c2lzLgotI2RlZmlu
ZSBUU19VTkNIRUNLRUQoeCkgIiIKKyNkZWZpbmUgQUJTTF9UU19VTkNIRUNLRUQoeCkgIiIKIAot
Ly8gVFNfRklYTUUgaXMgdXNlZCB0byBtYXJrIGxvY2sgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90
IHZhbGlkIEMrKyBzeW50YXguCisvLyBBQlNMX1RTX0ZJWE1FIGlzIHVzZWQgdG8gbWFyayBsb2Nr
IGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vdCB2YWxpZCBDKysgc3ludGF4LgogLy8gSXQgaXMgdXNl
ZCBieSBhdXRvbWF0ZWQgdG9vbHMgdG8gbWFyayBhbmQgZGlzYWJsZSBpbnZhbGlkIGV4cHJlc3Np
b25zLgotLy8gVGhlIGFubm90YXRpb24gc2hvdWxkIGVpdGhlciBiZSBmaXhlZCwgb3IgY2hhbmdl
ZCB0byBUU19VTkNIRUNLRUQuCi0jZGVmaW5lIFRTX0ZJWE1FKHgpICIiCisvLyBUaGUgYW5ub3Rh
dGlvbiBzaG91bGQgZWl0aGVyIGJlIGZpeGVkLCBvciBjaGFuZ2VkIHRvIEFCU0xfVFNfVU5DSEVD
S0VELgorI2RlZmluZSBBQlNMX1RTX0ZJWE1FKHgpICIiCiAKLS8vIExpa2UgTk9fVEhSRUFEX1NB
RkVUWV9BTkFMWVNJUywgdGhpcyB0dXJucyBvZmYgY2hlY2tpbmcgd2l0aGluIHRoZSBib2R5IG9m
Ci0vLyBhIHBhcnRpY3VsYXIgZnVuY3Rpb24uICBIb3dldmVyLCB0aGlzIGF0dHJpYnV0ZSBpcyB1
c2VkIHRvIG1hcmsgZnVuY3Rpb25zCisvLyBMaWtlIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUywgdGhpcyB0dXJucyBvZmYgY2hlY2tpbmcgd2l0aGluIHRoZSBib2R5CisvLyBvZiBhIHBh
cnRpY3VsYXIgZnVuY3Rpb24uICBIb3dldmVyLCB0aGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIG1h
cmsgZnVuY3Rpb25zCiAvLyB0aGF0IGFyZSBpbmNvcnJlY3QgYW5kIG5lZWQgdG8gYmUgZml4ZWQu
ICBJdCBpcyB1c2VkIGJ5IGF1dG9tYXRlZCB0b29scyB0bwogLy8gYXZvaWQgYnJlYWtpbmcgdGhl
IGJ1aWxkIHdoZW4gdGhlIGFuYWx5c2lzIGlzIHVwZGF0ZWQuCiAvLyBDb2RlIG93bmVycyBhcmUg
ZXhwZWN0ZWQgdG8gZXZlbnR1YWxseSBmaXggdGhlIHJvdXRpbmUuCi0jZGVmaW5lIE5PX1RIUkVB
RF9TQUZFVFlfQU5BTFlTSVNfRklYTUUgIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKKyNkZWZp
bmUgQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lTX0ZJWE1FIEFCU0xfTk9fVEhSRUFEX1NB
RkVUWV9BTkFMWVNJUwogCi0vLyBTaW1pbGFyIHRvIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVNf
RklYTUUsIHRoaXMgbWFjcm8gbWFya3MgYSBHVUFSREVEX0JZCi0vLyBhbm5vdGF0aW9uIHRoYXQg
bmVlZHMgdG8gYmUgZml4ZWQsIGJlY2F1c2UgaXQgaXMgcHJvZHVjaW5nIHRocmVhZCBzYWZldHkK
LS8vIHdhcm5pbmcuICBJdCBkaXNhYmxlcyB0aGUgR1VBUkRFRF9CWS4KLSNkZWZpbmUgR1VBUkRF
RF9CWV9GSVhNRSh4KQorLy8gU2ltaWxhciB0byBBQlNMX05PX1RIUkVBRF9TQUZFVFlfQU5BTFlT
SVNfRklYTUUsIHRoaXMgbWFjcm8gbWFya3MgYQorLy8gQUJTTF9HVUFSREVEX0JZIGFubm90YXRp
b24gdGhhdCBuZWVkcyB0byBiZSBmaXhlZCwgYmVjYXVzZSBpdCBpcyBwcm9kdWNpbmcKKy8vIHRo
cmVhZCBzYWZldHkgd2FybmluZy4gSXQgZGlzYWJsZXMgdGhlIEFCU0xfR1VBUkRFRF9CWS4KKyNk
ZWZpbmUgQUJTTF9HVUFSREVEX0JZX0ZJWE1FKHgpCiAKIC8vIERpc2FibGVzIHdhcm5pbmdzIGZv
ciBhIHNpbmdsZSByZWFkIG9wZXJhdGlvbi4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQKIC8v
IHdhcm5pbmdzIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUgcmVhZCBpcyBub3QgYWN0dWFsbHkg
aW52b2x2ZWQgaW4gYSByYWNlLAogLy8gYnV0IHRoZSBjb21waWxlciBjYW5ub3QgY29uZmlybSB0
aGF0LgotI2RlZmluZSBUU19VTkNIRUNLRURfUkVBRCh4KSB0aHJlYWRfc2FmZXR5X2FuYWx5c2lz
Ojp0c191bmNoZWNrZWRfcmVhZCh4KQotCisjZGVmaW5lIEFCU0xfVFNfVU5DSEVDS0VEX1JFQUQo
eCkgYWJzbDo6YmFzZV9pbnRlcm5hbDo6YWJzbF90c191bmNoZWNrZWRfcmVhZCh4KQogCi1uYW1l
c3BhY2UgdGhyZWFkX3NhZmV0eV9hbmFseXNpcyB7CituYW1lc3BhY2UgYWJzbCB7CituYW1lc3Bh
Y2UgYmFzZV9pbnRlcm5hbCB7CiAKIC8vIFRha2VzIGEgcmVmZXJlbmNlIHRvIGEgZ3VhcmRlZCBk
YXRhIG1lbWJlciwgYW5kIHJldHVybnMgYW4gdW5ndWFyZGVkCiAvLyByZWZlcmVuY2UuCisvLyBE
byBub3QgdXNlZCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCB1c2UgQUJTTF9UU19VTkNIRUNLRURf
UkVBRCBpbnN0ZWFkLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgY29uc3QgVCYgdHNf
dW5jaGVja2VkX3JlYWQoY29uc3QgVCYgdikgTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7Citp
bmxpbmUgY29uc3QgVCYgYWJzbF90c191bmNoZWNrZWRfcmVhZChjb25zdCBUJiB2KSBBQlNMX05P
X1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgewogICByZXR1cm4gdjsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1pbmxpbmUgVCYgdHNfdW5jaGVja2VkX3JlYWQoVCYgdikgTk9fVEhSRUFEX1NB
RkVUWV9BTkFMWVNJUyB7CitpbmxpbmUgVCYgYWJzbF90c191bmNoZWNrZWRfcmVhZChUJiB2KSBB
QlNMX05PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgewogICByZXR1cm4gdjsKIH0KIAotfSAgLy8g
bmFtZXNwYWNlIHRocmVhZF9zYWZldHlfYW5hbHlzaXMKK30gIC8vIG5hbWVzcGFjZSBiYXNlX2lu
dGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAogCiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9USFJF
QURfQU5OT1RBVElPTlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvdGhyb3dfZGVsZWdhdGVf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvdGhyb3dfZGVsZWdhdGVfdGVzdC5jYwppbmRleCAwZjE1ZGYw
NDkyYjQ5M2ZmZmVjZjRhODVkYWY4MjkwZTEwMTkyMzc1Li5hNzRkZDNjZGE2OTUxYmJhNDE5NDIw
MTEzZjBkOTkyMTliODI4ZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3Rocm93X2RlbGVnYXRl
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS90aHJvd19kZWxlZ2F0ZV90ZXN0LmNjCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb21w
aWxlcl9jb25maWdfc2V0dGluZy5iemwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb21waWxlcl9jb25maWdfc2V0dGluZy5i
emwKaW5kZXggYjc3YzRmNTYzYjk1ZDMzMmMyODYyNjU3ZGU4ODRkYjRiZTdhYmI0ZS4uNjY5NjIy
OTRkMDkxM2UwMTgwNTJiNTMxYjIzMjEwNGViMTczYjQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29t
cGlsZXJfY29uZmlnX3NldHRpbmcuYnpsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbXBpbGVyX2NvbmZpZ19zZXR0
aW5nLmJ6bApAQCAtNSwzNSArNSwzNCBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogIyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KICMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMK
IAogIiIiQ3JlYXRlcyBjb25maWdfc2V0dGluZyB0aGF0IGFsbG93cyBzZWxlY3RpbmcgYmFzZWQg
b24gJ2NvbXBpbGVyJyB2YWx1ZS4iIiIKIAogZGVmIGNyZWF0ZV9sbHZtX2NvbmZpZyhuYW1lLCB2
aXNpYmlsaXR5KToKLSAgIyBUaGUgImRvX25vdF91c2VfdG9vbHNfY3BwX2NvbXBpbGVyX3ByZXNl
bnQiIGF0dHJpYnV0ZSBleGlzdHMgdG8KLSAgIyBkaXN0aW5ndWlzaCBiZXR3ZWVuIG9sZGVyIHZl
cnNpb25zIG9mIEJhemVsIHRoYXQgZG8gbm90IHN1cHBvcnQKLSAgIyAiQGJhemVsX3Rvb2xzLy90
b29scy9jcHA6Y29tcGlsZXIiIGZsYWdfdmFsdWUsIGFuZCBuZXdlciBvbmVzIHRoYXQgZG8uCi0g
ICMgSW4gdGhlIGZ1dHVyZSwgdGhlIG9ubHkgd2F5IHRvIHNlbGVjdCBvbiB0aGUgY29tcGlsZXIg
d2lsbCBiZSB0aHJvdWdoCi0gICMgZmxhZ192YWx1ZXN7IkBiYXplbF90b29scy8vdG9vbHMvY3Bw
OmNvbXBpbGVyIn0gYW5kIHRoZSBlbHNlIGJyYW5jaCBjYW4KLSAgIyBiZSByZW1vdmVkLgotICBp
ZiBoYXNhdHRyKGNjX2NvbW1vbiwgImRvX25vdF91c2VfdG9vbHNfY3BwX2NvbXBpbGVyX3ByZXNl
bnQiKToKLSAgICBuYXRpdmUuY29uZmlnX3NldHRpbmcoCi0gICAgICBuYW1lID0gbmFtZSwKLSAg
ICAgIGZsYWdfdmFsdWVzID0gewotICAgICAgICAgICJAYmF6ZWxfdG9vbHMvL3Rvb2xzL2NwcDpj
b21waWxlciI6ICJsbHZtIiwKLSAgICAgIH0sCi0gICAgICB2aXNpYmlsaXR5ID0gdmlzaWJpbGl0
eSwKLSAgICApCi0gIGVsc2U6Ci0gICAgbmF0aXZlLmNvbmZpZ19zZXR0aW5nKAotICAgICAgICBu
YW1lID0gbmFtZSwKLSAgICAgICAgdmFsdWVzID0geyJjb21waWxlciI6ICJsbHZtIn0sCi0gICAg
ICAgIHZpc2liaWxpdHkgPSB2aXNpYmlsaXR5LAotICAgICkKKyAgICAjIFRoZSAiZG9fbm90X3Vz
ZV90b29sc19jcHBfY29tcGlsZXJfcHJlc2VudCIgYXR0cmlidXRlIGV4aXN0cyB0bworICAgICMg
ZGlzdGluZ3Vpc2ggYmV0d2VlbiBvbGRlciB2ZXJzaW9ucyBvZiBCYXplbCB0aGF0IGRvIG5vdCBz
dXBwb3J0CisgICAgIyAiQGJhemVsX3Rvb2xzLy90b29scy9jcHA6Y29tcGlsZXIiIGZsYWdfdmFs
dWUsIGFuZCBuZXdlciBvbmVzIHRoYXQgZG8uCisgICAgIyBJbiB0aGUgZnV0dXJlLCB0aGUgb25s
eSB3YXkgdG8gc2VsZWN0IG9uIHRoZSBjb21waWxlciB3aWxsIGJlIHRocm91Z2gKKyAgICAjIGZs
YWdfdmFsdWVzeyJAYmF6ZWxfdG9vbHMvL3Rvb2xzL2NwcDpjb21waWxlciJ9IGFuZCB0aGUgZWxz
ZSBicmFuY2ggY2FuCisgICAgIyBiZSByZW1vdmVkLgorICAgIGlmIGhhc2F0dHIoY2NfY29tbW9u
LCAiZG9fbm90X3VzZV90b29sc19jcHBfY29tcGlsZXJfcHJlc2VudCIpOgorICAgICAgICBuYXRp
dmUuY29uZmlnX3NldHRpbmcoCisgICAgICAgICAgICBuYW1lID0gbmFtZSwKKyAgICAgICAgICAg
IGZsYWdfdmFsdWVzID0geworICAgICAgICAgICAgICAgICJAYmF6ZWxfdG9vbHMvL3Rvb2xzL2Nw
cDpjb21waWxlciI6ICJsbHZtIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB2aXNpYmls
aXR5ID0gdmlzaWJpbGl0eSwKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAgICAgIG5hdGl2ZS5j
b25maWdfc2V0dGluZygKKyAgICAgICAgICAgIG5hbWUgPSBuYW1lLAorICAgICAgICAgICAgdmFs
dWVzID0geyJjb21waWxlciI6ICJsbHZtIn0sCisgICAgICAgICAgICB2aXNpYmlsaXR5ID0gdmlz
aWJpbGl0eSwKKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmJh
emVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmJhemVsCmluZGV4IGYyMjEwZTNjMTk3OTgzZmFi
NjAzNGQ4MTgxNTQ3NzliNzE3MzJmMmYuLjE4NTlkOWU5Yzc1Y2M5NjIzM2NkOTQzMDM4OGI1Y2Ex
YmQ5NWY0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5iYXplbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvQlVJTEQuYmF6ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMg
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC0xNSwxMSArMTUsMTIgQEAKICMKIAogbG9hZCgKLSAgICAiLy9hYnNsOmNvcHRzLmJ6
bCIsCisgICAgIi8vYWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKICAgICAiQUJTTF9E
RUZBVUxUX0NPUFRTIiwKLSAgICAiQUJTTF9URVNUX0NPUFRTIiwKKyAgICAiQUJTTF9ERUZBVUxU
X0xJTktPUFRTIiwKICAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUciLAogICAgICJBQlNMX0VYQ0VQ
VElPTlNfRkxBR19MSU5LT1BUUyIsCisgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiApCiAKIHBhY2th
Z2UoZGVmYXVsdF92aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0pCkBAIC0zMCw2
ICszMSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJjb21wcmVzc2VkX3R1cGxlIiwKICAg
ICBoZHJzID0gWyJpbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlLmgiXSwKICAgICBjb3B0cyA9IEFC
U0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
ICAgICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL3V0aWxpdHkiLAogICAgIF0sCkBAIC0zOSw4
ICs0MSwxNCBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiY29tcHJlc3NlZF90dXBsZV90ZXN0IiwK
ICAgICBzcmNzID0gWyJpbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlX3Rlc3QuY2MiXSwKICAgICBj
b3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmNvbXByZXNzZWRfdHVwbGUiLAorICAgICAg
ICAiOnRlc3RfaW5zdGFuY2VfdHJhY2tlciIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAg
ICAgICAgIi8vYWJzbC90eXBlczphbnkiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKKyAgICAgICAgIi8vYWJzbC91dGlsaXR5IiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2ds
ZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBdLAogKQpAQCAtNDksNiArNTcsNyBAQCBjY19saWJy
YXJ5KAogICAgIG5hbWUgPSAiZml4ZWRfYXJyYXkiLAogICAgIGhkcnMgPSBbImZpeGVkX2FycmF5
LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmNvbXByZXNzZWRf
dHVwbGUiLAogICAgICAgICAiLy9hYnNsL2FsZ29yaXRobSIsCkBAIC02Myw3ICs3Miw3IEBAIGNj
X3Rlc3QoCiAgICAgbmFtZSA9ICJmaXhlZF9hcnJheV90ZXN0IiwKICAgICBzcmNzID0gWyJmaXhl
ZF9hcnJheV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VY
Q0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpmaXhlZF9hcnJheSIs
CiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fdGVzdGluZyIsCkBAIC03Nyw2ICs4Niw3
IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJmaXhlZF9hcnJheV90ZXN0X25vZXhjZXB0aW9ucyIs
CiAgICAgc3JjcyA9IFsiZml4ZWRfYXJyYXlfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRl
cHMgPSBbCiAgICAgICAgICI6Zml4ZWRfYXJyYXkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhj
ZXB0aW9uX3Rlc3RpbmciLApAQCAtOTAsNyArMTAwLDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0g
ImZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdCIsCiAgICAgc3JjcyA9IFsiZml4ZWRf
YXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1Rf
Q09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBU
SU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdf
TElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAg
IjpmaXhlZF9hcnJheSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fc2FmZXR5X3Rl
c3RpbmciLApAQCAtMTAyLDYgKzExMiw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJmaXhlZF9h
cnJheV9iZW5jaG1hcmsiLAogICAgIHNyY3MgPSBbImZpeGVkX2FycmF5X2JlbmNobWFyay5jYyJd
LAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgWyIkKFNUQUNLX0ZSQU1FX1VOTElNSVRF
RCkiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0g
WyJiZW5jaG1hcmsiXSwKICAgICBkZXBzID0gWwogICAgICAgICAiOmZpeGVkX2FycmF5IiwKQEAg
LTEwOSwxMSArMTIwLDI3IEBAIGNjX3Rlc3QoCiAgICAgXSwKICkKIAorY2NfbGlicmFyeSgKKyAg
ICBuYW1lID0gImlubGluZWRfdmVjdG9yX2ludGVybmFsIiwKKyAgICBoZHJzID0gWyJpbnRlcm5h
bC9pbmxpbmVkX3ZlY3Rvci5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAg
ICAgIjpjb21wcmVzc2VkX3R1cGxlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVy
cyIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVf
dHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpzcGFuIiwKKyAgICBdLAorKQorCiBjY19s
aWJyYXJ5KAogICAgIG5hbWUgPSAiaW5saW5lZF92ZWN0b3IiLAogICAgIGhkcnMgPSBbImlubGlu
ZWRfdmVjdG9yLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWworICAgICAgICAiOmlu
bGluZWRfdmVjdG9yX2ludGVybmFsIiwKICAgICAgICAgIi8vYWJzbC9hbGdvcml0aG0iLAogICAg
ICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOnRo
cm93X2RlbGVnYXRlIiwKQEAgLTEyMSwxMiArMTQ4LDIyIEBAIGNjX2xpYnJhcnkoCiAgICAgXSwK
ICkKIAorY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImNvdW50aW5nX2FsbG9jYXRvciIsCisgICAg
dGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBbImludGVybmFsL2NvdW50aW5nX2FsbG9jYXRvci5o
Il0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCisgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZh
dGUiXSwKKykKKwogY2NfdGVzdCgKICAgICBuYW1lID0gImlubGluZWRfdmVjdG9yX3Rlc3QiLAog
ICAgIHNyY3MgPSBbImlubGluZWRfdmVjdG9yX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xf
VEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAotICAgIGxpbmtvcHRzID0gQUJTTF9F
WENFUFRJT05TX0ZMQUdfTElOS09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNf
RkxBR19MSU5LT1BUUyArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWworICAg
ICAgICAiOmNvdW50aW5nX2FsbG9jYXRvciIsCiAgICAgICAgICI6aW5saW5lZF92ZWN0b3IiLAog
ICAgICAgICAiOnRlc3RfaW5zdGFuY2VfdHJhY2tlciIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIs
CkBAIC0xNDMsNyArMTgwLDkgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImlubGluZWRfdmVjdG9y
X3Rlc3Rfbm9leGNlcHRpb25zIiwKICAgICBzcmNzID0gWyJpbmxpbmVkX3ZlY3Rvcl90ZXN0LmNj
Il0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RF
RkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb3VudGluZ19hbGxvY2F0
b3IiLAogICAgICAgICAiOmlubGluZWRfdmVjdG9yIiwKICAgICAgICAgIjp0ZXN0X2luc3RhbmNl
X3RyYWNrZXIiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtMTYwLDMwICsxOTksNDYgQEAg
Y2NfdGVzdCgKICAgICBuYW1lID0gImlubGluZWRfdmVjdG9yX2JlbmNobWFyayIsCiAgICAgc3Jj
cyA9IFsiaW5saW5lZF92ZWN0b3JfYmVuY2htYXJrLmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFn
cyA9IFsiYmVuY2htYXJrIl0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjppbmxpbmVkX3ZlY3Rv
ciIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hl
YWRlcnMiLAogICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAogICAgICAgICAiQGNvbV9naXRodWJf
Z29vZ2xlX2JlbmNobWFyay8vOmJlbmNobWFya19tYWluIiwKICAgICBdLAogKQogCitjY190ZXN0
KAorICAgIG5hbWUgPSAiaW5saW5lZF92ZWN0b3JfZXhjZXB0aW9uX3NhZmV0eV90ZXN0IiwKKyAg
ICBzcmNzID0gWyJpbmxpbmVkX3ZlY3Rvcl9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiXSwKKyAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGRl
cHMgPSBbCisgICAgICAgICI6aW5saW5lZF92ZWN0b3IiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6
ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRl
c3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCiBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAi
dGVzdF9pbnN0YW5jZV90cmFja2VyIiwKICAgICB0ZXN0b25seSA9IDEsCiAgICAgc3JjcyA9IFsi
aW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmNjIl0sCiAgICAgaGRycyA9IFsiaW50ZXJu
YWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmls
aXR5ID0gWwogICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIsCiAgICAgXSwKKyAgICBk
ZXBzID0gWyIvL2Fic2wvdHlwZXM6Y29tcGFyZSJdLAogKQogCiBjY190ZXN0KAogICAgIG5hbWUg
PSAidGVzdF9pbnN0YW5jZV90cmFja2VyX3Rlc3QiLAogICAgIHNyY3MgPSBbImludGVybmFsL3Rl
c3RfaW5zdGFuY2VfdHJhY2tlcl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsK
ICAgICAgICAgIjp0ZXN0X2luc3RhbmNlX3RyYWNrZXIiLAogICAgICAgICAiQGNvbV9nb29nbGVf
Z29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLApAQCAtMjA4LDEwICsyNjMsMTIgQEAgY2NfbGlicmFy
eSgKICAgICBuYW1lID0gImZsYXRfaGFzaF9tYXAiLAogICAgIGhkcnMgPSBbImZsYXRfaGFzaF9t
YXAuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Y29udGFpbmVy
X21lbW9yeSIsCiAgICAgICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCiAgICAgICAgICI6
cmF3X2hhc2hfbWFwIiwKKyAgICAgICAgIi8vYWJzbC9hbGdvcml0aG06Y29udGFpbmVyIiwKICAg
ICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAgIF0sCiApCkBAIC0yMTksMTMgKzI3NiwxNSBAQCBj
Y19saWJyYXJ5KAogY2NfdGVzdCgKICAgICBuYW1lID0gImZsYXRfaGFzaF9tYXBfdGVzdCIsCiAg
ICAgc3JjcyA9IFsiZmxhdF9oYXNoX21hcF90ZXN0LmNjIl0sCi0gICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMgKyBbIi1EVU5PUkRFUkVEX01BUF9DWFgxNyJdLAorICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRh
Z3MgPSBOT1RFU1RfVEFHU19OT05NT0JJTEUsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpmbGF0
X2hhc2hfbWFwIiwKICAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKICAgICAgICAg
Ijp1bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QiLAogICAgICAgICAiOnVub3JkZXJlZF9t
YXBfbG9va3VwX3Rlc3QiLAorICAgICAgICAiOnVub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0IiwK
ICAgICAgICAgIjp1bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0IiwKICAgICAgICAgIi8vYWJz
bC90eXBlczphbnkiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21h
aW4iLApAQCAtMjM2LDEwICsyOTUsMTIgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gImZsYXRf
aGFzaF9zZXQiLAogICAgIGhkcnMgPSBbImZsYXRfaGFzaF9zZXQuaCJdLAogICAgIGNvcHRzID0g
QUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCiAgICAgICAgICI6
aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCiAgICAgICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgICAg
ICAgIi8vYWJzbC9hbGdvcml0aG06Y29udGFpbmVyIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNv
cmVfaGVhZGVycyIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICBdLApAQCAtMjQ5LDEy
ICszMTAsMTQgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImZsYXRfaGFzaF9zZXRfdGVzdCIsCiAg
ICAgc3JjcyA9IFsiZmxhdF9oYXNoX3NldF90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMgKyBbIi1EVU5PUkRFUkVEX1NFVF9DWFgxNyJdLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3MgPSBOT1RFU1RfVEFHU19OT05NT0JJTEUsCiAg
ICAgZGVwcyA9IFsKICAgICAgICAgIjpmbGF0X2hhc2hfc2V0IiwKICAgICAgICAgIjpoYXNoX2dl
bmVyYXRvcl90ZXN0aW5nIiwKICAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rl
c3QiLAogICAgICAgICAiOnVub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QiLAorICAgICAgICAiOnVu
b3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0IiwKICAgICAgICAgIjp1bm9yZGVyZWRfc2V0X21vZGlm
aWVyc190ZXN0IiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAgICAgICAiLy9hYnNsL3N0
cmluZ3MiLApAQCAtMjY2LDExICszMjksMTMgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gIm5v
ZGVfaGFzaF9tYXAiLAogICAgIGhkcnMgPSBbIm5vZGVfaGFzaF9tYXAuaCJdLAogICAgIGNvcHRz
ID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCiAgICAgICAg
ICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCiAgICAgICAgICI6bm9kZV9oYXNoX3BvbGljeSIs
CiAgICAgICAgICI6cmF3X2hhc2hfbWFwIiwKKyAgICAgICAgIi8vYWJzbC9hbGdvcml0aG06Y29u
dGFpbmVyIiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAgIF0sCiApCkBAIC0yNzgsNyAr
MzQzLDggQEAgY2NfbGlicmFyeSgKIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJub2RlX2hhc2hfbWFw
X3Rlc3QiLAogICAgIHNyY3MgPSBbIm5vZGVfaGFzaF9tYXBfdGVzdC5jYyJdLAotICAgIGNvcHRz
ID0gQUJTTF9URVNUX0NPUFRTICsgWyItRFVOT1JERVJFRF9NQVBfQ1hYMTciXSwKKyAgICBjb3B0
cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAogICAgIGRlcHMgPSBbCiAgICAg
ICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCkBAIC0yODYsNiArMzUyLDcgQEAgY2NfdGVz
dCgKICAgICAgICAgIjp0cmFja2VkIiwKICAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2NvbnN0cnVj
dG9yX3Rlc3QiLAogICAgICAgICAiOnVub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QiLAorICAgICAg
ICAiOnVub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0IiwKICAgICAgICAgIjp1bm9yZGVyZWRfbWFw
X21vZGlmaWVyc190ZXN0IiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVz
dF9tYWluIiwKICAgICBdLApAQCAtMjk1LDExICszNjIsMTIgQEAgY2NfbGlicmFyeSgKICAgICBu
YW1lID0gIm5vZGVfaGFzaF9zZXQiLAogICAgIGhkcnMgPSBbIm5vZGVfaGFzaF9zZXQuaCJdLAog
ICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCi0gICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIs
CiAgICAgICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCiAgICAgICAgICI6bm9kZV9oYXNo
X3BvbGljeSIsCiAgICAgICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgICAgICAgIi8vYWJzbC9hbGdv
cml0aG06Y29udGFpbmVyIiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAgIF0sCiApCkBA
IC0zMDgsMTIgKzM3NiwxMyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAibm9kZV9oYXNoX3NldF90
ZXN0IiwKICAgICBzcmNzID0gWyJub2RlX2hhc2hfc2V0X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUyArIFsiLURVTk9SREVSRURfU0VUX0NYWDE3Il0sCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1P
QklMRSwKICAgICBkZXBzID0gWwotICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAog
ICAgICAgICAiOm5vZGVfaGFzaF9zZXQiLAogICAgICAgICAiOnVub3JkZXJlZF9zZXRfY29uc3Ry
dWN0b3JfdGVzdCIsCiAgICAgICAgICI6dW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdCIsCisgICAg
ICAgICI6dW5vcmRlcmVkX3NldF9tZW1iZXJzX3Rlc3QiLAogICAgICAgICAiOnVub3JkZXJlZF9z
ZXRfbW9kaWZpZXJzX3Rlc3QiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0
ZXN0X21haW4iLAogICAgIF0sCkBAIC0zMjMsNiArMzkyLDcgQEAgY2NfbGlicmFyeSgKICAgICBu
YW1lID0gImNvbnRhaW5lcl9tZW1vcnkiLAogICAgIGhkcnMgPSBbImludGVybmFsL2NvbnRhaW5l
cl9tZW1vcnkuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtv
cHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fi
c2wvbWVtb3J5IiwKICAgICAgICAgIi8vYWJzbC91dGlsaXR5IiwKQEAgLTMzMyw2ICs0MDMsNyBA
QCBjY190ZXN0KAogICAgIG5hbWUgPSAiY29udGFpbmVyX21lbW9yeV90ZXN0IiwKICAgICBzcmNz
ID0gWyJpbnRlcm5hbC9jb250YWluZXJfbWVtb3J5X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFC
U0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAg
ICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6
Y29udGFpbmVyX21lbW9yeSIsCkBAIC0zNDUsNiArNDE2LDcgQEAgY2NfbGlicmFyeSgKICAgICBu
YW1lID0gImhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAogICAgIGhkcnMgPSBbImludGVybmFsL2hh
c2hfZnVuY3Rpb25fZGVmYXVsdHMuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAg
ICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLAogICAgICAgICAiLy9hYnNsL2hhc2giLApAQCAt
MzU2LDYgKzQyOCw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJoYXNoX2Z1bmN0aW9uX2RlZmF1
bHRzX3Rlc3QiLAogICAgIHNyY3MgPSBbImludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHNf
dGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3MgPSBOT1RFU1RfVEFHUywKICAgICBkZXBz
ID0gWwogICAgICAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLApAQCAtMzcxLDYgKzQ0NCw3
IEBAIGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVz
dGluZy5jYyJdLAogICAgIGhkcnMgPSBbImludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3Rpbmcu
aCJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9E
RUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6aGFzaF9wb2xpY3lfdGVz
dGluZyIsCiAgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCkBAIC0zODMsNiArNDU3
LDcgQEAgY2NfbGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJu
YWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAg
ICAgICAgIi8vYWJzbC9oYXNoIiwKICAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKQEAgLTM5Myw2
ICs0NjgsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiaGFzaF9wb2xpY3lfdGVzdGluZ190ZXN0
IiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MiXSwK
ICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmhhc2hfcG9saWN5X3Rlc3Rpbmci
LAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLApAQCAtNDAz
LDYgKzQ3OSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJoYXNoX3BvbGljeV90cmFpdHMi
LAogICAgIGhkcnMgPSBbImludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIl0sCiAgICAgY29w
dHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCiAgICAgZGVwcyA9IFsiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiXSwKICkKIApAQCAt
NDEwLDYgKzQ4Nyw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJoYXNoX3BvbGljeV90cmFpdHNf
dGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzX3Rlc3QuY2Mi
XSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmhhc2hfcG9saWN5X3RyYWl0
cyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBAIC00
MjAsNiArNDk4LDcgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gImhhc2h0YWJsZV9kZWJ1ZyIs
CiAgICAgaGRycyA9IFsiaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmgiXSwKICAgICBjb3B0cyA9
IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICBkZXBzID0gWwogICAgICAgICAiOmhhc2h0YWJsZV9kZWJ1Z19ob29rcyIsCiAgICAg
XSwKQEAgLTQyOSwxOCArNTA4LDU2IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJoYXNodGFi
bGVfZGVidWdfaG9va3MiLAogICAgIGhkcnMgPSBbImludGVybmFsL2hhc2h0YWJsZV9kZWJ1Z19o
b29rcy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJo
YXNodGFibGV6X3NhbXBsZXIiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJpbnRlcm5hbC9oYXNo
dGFibGV6X3NhbXBsZXIuY2MiLAorICAgICAgICAiaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVy
X2ZvcmNlX3dlYWtfZGVmaW5pdGlvbi5jYyIsCisgICAgXSwKKyAgICBoZHJzID0gWyJpbnRlcm5h
bC9oYXNodGFibGV6X3NhbXBsZXIuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICI6aGF2ZV9zc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9h
YnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9kZWJ1Z2dpbmc6c3RhY2t0
cmFjZSIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vYWJzbC9zeW5jaHJv
bml6YXRpb24iLAorICAgICAgICAiLy9hYnNsL3V0aWxpdHkiLAorICAgIF0sCispCisKK2NjX3Rl
c3QoCisgICAgbmFtZSA9ICJoYXNodGFibGV6X3NhbXBsZXJfdGVzdCIsCisgICAgc3JjcyA9IFsi
aW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyX3Rlc3QuY2MiXSwKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2h0YWJsZXpf
c2FtcGxlciIsCisgICAgICAgICI6aGF2ZV9zc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29y
ZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb24iLAorICAgICAgICAi
Ly9hYnNsL3N5bmNocm9uaXphdGlvbjp0aHJlYWRfcG9vbCIsCisgICAgICAgICIvL2Fic2wvdGlt
ZSIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAg
XSwKICkKIAogY2NfbGlicmFyeSgKICAgICBuYW1lID0gIm5vZGVfaGFzaF9wb2xpY3kiLAogICAg
IGhkcnMgPSBbImludGVybmFsL25vZGVfaGFzaF9wb2xpY3kuaCJdLAogICAgIGNvcHRzID0gQUJT
TF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
KQogCiBjY190ZXN0KAogICAgIG5hbWUgPSAibm9kZV9oYXNoX3BvbGljeV90ZXN0IiwKICAgICBz
cmNzID0gWyJpbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
ICAgICBkZXBzID0gWwogICAgICAgICAiOmhhc2hfcG9saWN5X3RyYWl0cyIsCiAgICAgICAgICI6
bm9kZV9oYXNoX3BvbGljeSIsCkBAIC00NTIsOSArNTY5LDMwIEBAIGNjX2xpYnJhcnkoCiAgICAg
bmFtZSA9ICJyYXdfaGFzaF9tYXAiLAogICAgIGhkcnMgPSBbImludGVybmFsL3Jhd19oYXNoX21h
cC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBB
QlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpjb250YWluZXJf
bWVtb3J5IiwKICAgICAgICAgIjpyYXdfaGFzaF9zZXQiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6
dGhyb3dfZGVsZWdhdGUiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJo
YXZlX3NzZSIsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvaGF2ZV9zc2UuaCJdLAorICAgIGNvcHRz
ID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAorICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCispCisKK2Nj
X2xpYnJhcnkoCisgICAgbmFtZSA9ICJjb21tb24iLAorICAgIGhkcnMgPSBbImludGVybmFsL2Nv
bW1vbi5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9t
ZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAg
XSwKICkKIApAQCAtNDYzLDExICs2MDEsMTUgQEAgY2NfbGlicmFyeSgKICAgICBzcmNzID0gWyJp
bnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MiXSwKICAgICBoZHJzID0gWyJpbnRlcm5hbC9yYXdfaGFz
aF9zZXQuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29tbW9u
IiwKICAgICAgICAgIjpjb21wcmVzc2VkX3R1cGxlIiwKICAgICAgICAgIjpjb250YWluZXJfbWVt
b3J5IiwKICAgICAgICAgIjpoYXNoX3BvbGljeV90cmFpdHMiLAogICAgICAgICAiOmhhc2h0YWJs
ZV9kZWJ1Z19ob29rcyIsCisgICAgICAgICI6aGFzaHRhYmxlel9zYW1wbGVyIiwKKyAgICAgICAg
IjpoYXZlX3NzZSIsCiAgICAgICAgICI6bGF5b3V0IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmJp
dHMiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKQEAgLTQ3NSw3ICs2MTcsNiBAQCBj
Y19saWJyYXJ5KAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZW5kaWFuIiwKICAgICAgICAgIi8vYWJz
bC9tZW1vcnkiLAogICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAotICAgICAgICAi
Ly9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgICAgICAgIi8vYWJzbC91dGlsaXR5IiwKICAgICBd
LAogKQpAQCAtNTA0LDYgKzY0NSw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAg
ICAgc3JjcyA9IFsiaW50ZXJuYWwvcmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0LmNjIl0sCiAg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpyYXdfaGFzaF9zZXQiLAogICAgICAg
ICAiOnRyYWNrZWQiLApAQCAtNTE2LDYgKzY1OCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9
ICJsYXlvdXQiLAogICAgIGhkcnMgPSBbImludGVybmFsL2xheW91dC5oIl0sCiAgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAg
ICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCkBAIC01MzAsNiArNjczLDcgQEAgY2Nf
dGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC9sYXlvdXRf
dGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3MgPSBOT1RFU1RfVEFHUywKICAgICB2aXNp
YmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogICAgIGRlcHMgPSBbCkBAIC01NDYs
NiArNjkwLDcgQEAgY2NfbGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAgaGRycyA9IFsi
aW50ZXJuYWwvdHJhY2tlZC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiApCiAKIGNjX2xpYnJhcnkoCkBAIC01
NTMsNiArNjk4LDcgQEAgY2NfbGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAgaGRycyA9
IFsiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgiXSwKICAgICBjb3B0
cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICBkZXBzID0gWwogICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAogICAg
ICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLApAQCAtNTY1LDYgKzcxMSw3IEBAIGNjX2xpYnJh
cnkoCiAgICAgdGVzdG9ubHkgPSAxLAogICAgIGhkcnMgPSBbImludGVybmFsL3Vub3JkZXJlZF9t
YXBfbG9va3VwX3Rlc3QuaCJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxp
bmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6
aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCiAgICAgICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIs
CkBAIC01NzcsNiArNzI0LDcgQEAgY2NfbGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAg
aGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIl0sCiAgICAg
Y29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwK
ICAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKQEAgLTU4OSw5ICs3MzcsMzUgQEAgY2Nf
bGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRl
cmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwog
ICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAogICAgICAgICAiOmhhc2hfcG9saWN5
X3Rlc3RpbmciLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAi
QGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5
KAorICAgIG5hbWUgPSAidW5vcmRlcmVkX3NldF9tZW1iZXJzX3Rlc3QiLAorICAgIHRlc3Rvbmx5
ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdC5o
Il0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RF
RkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVf
dHJhaXRzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAg
XSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInVub3JkZXJlZF9tYXBfbWVtYmVyc190
ZXN0IiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVk
X21hcF9tZW1iZXJzX3Rlc3QuaCJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAg
IGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAg
ICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0
ZXN0Ly86Z3Rlc3QiLAogICAgIF0sCiApCkBAIC02MDEsNiArNzc1LDcgQEAgY2NfbGlicmFyeSgK
ICAgICB0ZXN0b25seSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9s
b29rdXBfdGVzdC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNo
X2dlbmVyYXRvcl90ZXN0aW5nIiwKICAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKQEAg
LTYxMyw2ICs3ODgsNyBAQCBjY19saWJyYXJ5KAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBoZHJz
ID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmgiXSwKICAgICBjb3B0
cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICBkZXBzID0gWwogICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAogICAg
ICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLApAQCAtNjI0LDEwICs4MDAsMTIgQEAgY2NfdGVz
dCgKICAgICBuYW1lID0gInVub3JkZXJlZF9zZXRfdGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJu
YWwvdW5vcmRlcmVkX3NldF90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFncyA9IE5PVEVT
VF9UQUdTX05PTk1PQklMRSwKICAgICBkZXBzID0gWwogICAgICAgICAiOnVub3JkZXJlZF9zZXRf
Y29uc3RydWN0b3JfdGVzdCIsCiAgICAgICAgICI6dW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdCIs
CisgICAgICAgICI6dW5vcmRlcmVkX3NldF9tZW1iZXJzX3Rlc3QiLAogICAgICAgICAiOnVub3Jk
ZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVz
dC8vOmd0ZXN0X21haW4iLAogICAgIF0sCkBAIC02MzcsMTEgKzgxNSw4MiBAQCBjY190ZXN0KAog
ICAgIG5hbWUgPSAidW5vcmRlcmVkX21hcF90ZXN0IiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC91
bm9yZGVyZWRfbWFwX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAg
ICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0gTk9URVNUX1RB
R1NfTk9OTU9CSUxFLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6dW5vcmRlcmVkX21hcF9jb25z
dHJ1Y3Rvcl90ZXN0IiwKICAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0IiwKKyAg
ICAgICAgIjp1bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdCIsCiAgICAgICAgICI6dW5vcmRlcmVk
X21hcF9tb2RpZmllcnNfdGVzdCIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCiAgICAgXSwKICkKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImJ0cmVl
IiwKKyAgICBzcmNzID0gWworICAgICAgICAiaW50ZXJuYWwvYnRyZWUuaCIsCisgICAgICAgICJp
bnRlcm5hbC9idHJlZV9jb250YWluZXIuaCIsCisgICAgXSwKKyAgICBoZHJzID0gWworICAgICAg
ICAiYnRyZWVfbWFwLmgiLAorICAgICAgICAiYnRyZWVfc2V0LmgiLAorICAgIF0sCisgICAgY29w
dHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCisgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdLAorICAgIGRl
cHMgPSBbCisgICAgICAgICI6Y29tbW9uIiwKKyAgICAgICAgIjpjb21wcmVzc2VkX3R1cGxlIiwK
KyAgICAgICAgIjpjb250YWluZXJfbWVtb3J5IiwKKyAgICAgICAgIjpsYXlvdXQiLAorICAgICAg
ICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOnRocm93
X2RlbGVnYXRlIiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgICAgICAiLy9hYnNsL21l
dGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9h
YnNsL3R5cGVzOmNvbXBhcmUiLAorICAgICAgICAiLy9hYnNsL3V0aWxpdHkiLAorICAgIF0sCisp
CisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJidHJlZV90ZXN0X2NvbW1vbiIsCisgICAgdGVz
dG9ubHkgPSAxLAorICAgIGhkcnMgPSBbImJ0cmVlX3Rlc3QuaCJdLAorICAgIGNvcHRzID0gQUJT
TF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAg
IHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisgICAgZGVwcyA9IFsKKyAg
ICAgICAgIjpidHJlZSIsCisgICAgICAgICI6ZmxhdF9oYXNoX3NldCIsCisgICAgICAgICIvL2Fi
c2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvdGltZSIsCisgICAgXSwKKykKKworY2NfdGVz
dCgKKyAgICBuYW1lID0gImJ0cmVlX3Rlc3QiLAorICAgIHNpemUgPSAibGFyZ2UiLAorICAgIHNy
Y3MgPSBbCisgICAgICAgICJidHJlZV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJT
TF9URVNUX0NPUFRTICsgWyItZmV4Y2VwdGlvbnMiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKKyAgICBzaGFyZF9jb3VudCA9IDEwLAorICAgIHZpc2liaWxpdHkgPSBb
Ii8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpidHJlZSIs
CisgICAgICAgICI6YnRyZWVfdGVzdF9jb21tb24iLAorICAgICAgICAiOmNvdW50aW5nX2FsbG9j
YXRvciIsCisgICAgICAgICI6dGVzdF9pbnN0YW5jZV90cmFja2VyIiwKKyAgICAgICAgIi8vYWJz
bC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9mbGFnczpmbGFnIiwKKyAgICAgICAgIi8vYWJzbC9o
YXNoOmhhc2hfdGVzdGluZyIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8v
YWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAg
ICAgIi8vYWJzbC90eXBlczpjb21wYXJlIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRl
c3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmduCmluZGV4IGEyZmJkNTQzMzE2ZDQ1
NmI1ZGYxNDczMTMzZTMxZDA0MDliNzI3MGUuLjEyZWJkZmZmNzA4NzU2OTQ4YWMyNWNmMjgxMDc3
NTRlNmYzYjUwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5nbgorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvQlVJTEQuZ24KQEAgLTYsNiArNiw3IEBAIGltcG9ydCgiLy9idWlsZF9v
dmVycmlkZXMvYnVpbGQuZ25pIikKIAogaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlz
aWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkv
d2VicnRjLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhp
cmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCkBAIC00OSw2ICs1MCwyNSBAQCBzb3VyY2Vfc2V0
KCJmaXhlZF9hcnJheSIpIHsKICAgXQogfQogCitzb3VyY2Vfc2V0KCJpbmxpbmVkX3ZlY3Rvcl9p
bnRlcm5hbCIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv
bWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
ZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAg
ICJpbnRlcm5hbC9pbmxpbmVkX3ZlY3Rvci5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29t
cHJlc3NlZF90dXBsZSIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vbWVt
b3J5IiwKKyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4uL3R5cGVzOnNwYW4iLAor
ICBdCit9CisKIHNvdXJjZV9zZXQoImlubGluZWRfdmVjdG9yIikgewogICBjb25maWdzIC09IFsg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KICAgY29uZmlncyArPSBb
CkBAIC02MCw2ICs4MCw3IEBAIHNvdXJjZV9zZXQoImlubGluZWRfdmVjdG9yIikgewogICAgICJp
bmxpbmVkX3ZlY3Rvci5oIiwKICAgXQogICBkZXBzID0gWworICAgICI6aW5saW5lZF92ZWN0b3Jf
aW50ZXJuYWwiLAogICAgICIuLi9hbGdvcml0aG0iLAogICAgICIuLi9iYXNlOmNvcmVfaGVhZGVy
cyIsCiAgICAgIi4uL2Jhc2U6dGhyb3dfZGVsZWdhdGUiLApAQCAtNjcsNiArODgsMjEgQEAgc291
cmNlX3NldCgiaW5saW5lZF92ZWN0b3IiKSB7CiAgIF0KIH0KIAorc291cmNlX3NldCgiY291bnRp
bmdfYWxsb2NhdG9yIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1
aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAg
ICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1Ymxp
Y19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25m
aWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9jb3VudGluZ19hbGxvY2F0b3IuaCIs
CisgIF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxpdHkgKz0gWyAiOioiIF0KK30KKwog
c291cmNlX3NldCgidGVzdF9pbnN0YW5jZV90cmFja2VyIikgewogICB0ZXN0b25seSA9IHRydWUK
ICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBd
CkBAIC04MSw2ICsxMTcsOSBAQCBzb3VyY2Vfc2V0KCJ0ZXN0X2luc3RhbmNlX3RyYWNrZXIiKSB7
CiAgIHB1YmxpYyA9IFsKICAgICAiaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgiLAog
ICBdCisgIGRlcHMgPSBbCisgICAgIi4uL3R5cGVzOmNvbXBhcmUiLAorICBdCiAgIHZpc2liaWxp
dHkgPSBbXQogICB2aXNpYmlsaXR5ICs9IFsgIi4uLyoiIF0KIH0KQEAgLTk5LDYgKzEzOCw3IEBA
IHNvdXJjZV9zZXQoImZsYXRfaGFzaF9tYXAiKSB7CiAgICAgIjpjb250YWluZXJfbWVtb3J5IiwK
ICAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAogICAgICI6cmF3X2hhc2hfbWFwIiwKKyAg
ICAiLi4vYWxnb3JpdGhtOmNvbnRhaW5lciIsCiAgICAgIi4uL21lbW9yeSIsCiAgIF0KIH0KQEAg
LTExNyw2ICsxNTcsNyBAQCBzb3VyY2Vfc2V0KCJmbGF0X2hhc2hfc2V0IikgewogICAgICI6Y29u
dGFpbmVyX21lbW9yeSIsCiAgICAgIjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzIiwKICAgICAiOnJh
d19oYXNoX3NldCIsCisgICAgIi4uL2FsZ29yaXRobTpjb250YWluZXIiLAogICAgICIuLi9iYXNl
OmNvcmVfaGVhZGVycyIsCiAgICAgIi4uL21lbW9yeSIsCiAgIF0KQEAgLTEzNyw2ICsxNzgsNyBA
QCBzb3VyY2Vfc2V0KCJub2RlX2hhc2hfbWFwIikgewogICAgICI6aGFzaF9mdW5jdGlvbl9kZWZh
dWx0cyIsCiAgICAgIjpub2RlX2hhc2hfcG9saWN5IiwKICAgICAiOnJhd19oYXNoX21hcCIsCisg
ICAgIi4uL2FsZ29yaXRobTpjb250YWluZXIiLAogICAgICIuLi9tZW1vcnkiLAogICBdCiB9CkBA
IC0xNTYsNiArMTk4LDcgQEAgc291cmNlX3NldCgibm9kZV9oYXNoX3NldCIpIHsKICAgICAiOmhh
c2hfZnVuY3Rpb25fZGVmYXVsdHMiLAogICAgICI6bm9kZV9oYXNoX3BvbGljeSIsCiAgICAgIjpy
YXdfaGFzaF9zZXQiLAorICAgICIuLi9hbGdvcml0aG06Y29udGFpbmVyIiwKICAgICAiLi4vbWVt
b3J5IiwKICAgXQogfQpAQCAtMjczLDYgKzMxNiwzMSBAQCBzb3VyY2Vfc2V0KCJoYXNodGFibGVf
ZGVidWdfaG9va3MiKSB7CiAgIF0KIH0KIAorc291cmNlX3NldCgiaGFzaHRhYmxlel9zYW1wbGVy
IikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2Nv
ZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2No
cm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0
X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVy
bmFsL2hhc2h0YWJsZXpfc2FtcGxlci5oIiwKKyAgXQorICBzb3VyY2VzID0gWworICAgICJpbnRl
cm5hbC9oYXNodGFibGV6X3NhbXBsZXIuY2MiLAorICAgICJpbnRlcm5hbC9oYXNodGFibGV6X3Nh
bXBsZXJfZm9yY2Vfd2Vha19kZWZpbml0aW9uLmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICI6
aGF2ZV9zc2UiLAorICAgICIuLi9iYXNlIiwKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAor
ICAgICIuLi9kZWJ1Z2dpbmc6c3RhY2t0cmFjZSIsCisgICAgIi4uL21lbW9yeSIsCisgICAgIi4u
L3N5bmNocm9uaXphdGlvbiIsCisgICAgIi4uL3V0aWxpdHkiLAorICBdCit9CisKIHNvdXJjZV9z
ZXQoIm5vZGVfaGFzaF9wb2xpY3kiKSB7CiAgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQogICBjb25maWdzICs9IFsKQEAgLTI5OCw2ICszNjYs
MzcgQEAgc291cmNlX3NldCgicmF3X2hhc2hfbWFwIikgewogICBkZXBzID0gWwogICAgICI6Y29u
dGFpbmVyX21lbW9yeSIsCiAgICAgIjpyYXdfaGFzaF9zZXQiLAorICAgICIuLi9iYXNlOnRocm93
X2RlbGVnYXRlIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJoYXZlX3NzZSIpIHsKKyAgY29uZmln
cyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZp
Z3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwK
KyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAor
ICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
aW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9oYXZlX3NzZS5o
IiwKKyAgXQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICI6KiIgXQorfQor
Citzb3VyY2Vfc2V0KCJjb21tb24iKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9j
b25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9
IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1
YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvY29tbW9uLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAg
Ii4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0K
IApAQCAtMzE1LDEwICs0MTQsMTMgQEAgc291cmNlX3NldCgicmF3X2hhc2hfc2V0IikgewogICAg
ICJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIsCiAgIF0KICAgZGVwcyA9IFsKKyAgICAiOmNvbW1v
biIsCiAgICAgIjpjb21wcmVzc2VkX3R1cGxlIiwKICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAog
ICAgICI6aGFzaF9wb2xpY3lfdHJhaXRzIiwKICAgICAiOmhhc2h0YWJsZV9kZWJ1Z19ob29rcyIs
CisgICAgIjpoYXNodGFibGV6X3NhbXBsZXIiLAorICAgICI6aGF2ZV9zc2UiLAogICAgICI6bGF5
b3V0IiwKICAgICAiLi4vYmFzZTpiaXRzIiwKICAgICAiLi4vYmFzZTpjb25maWciLApAQCAtMzI2
LDcgKzQyOCw2IEBAIHNvdXJjZV9zZXQoInJhd19oYXNoX3NldCIpIHsKICAgICAiLi4vYmFzZTpl
bmRpYW4iLAogICAgICIuLi9tZW1vcnkiLAogICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKLSAg
ICAiLi4vdHlwZXM6b3B0aW9uYWwiLAogICAgICIuLi91dGlsaXR5IiwKICAgXQogfQpAQCAtNDMx
LDYgKzUzMiw0MSBAQCBzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3Qi
KSB7CiAgIGRlcHMgPSBbCiAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKICAgICAiOmhh
c2hfcG9saWN5X3Rlc3RpbmciLAorICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAiLy90
ZXN0aW5nL2d0ZXN0IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfc2V0X21lbWJl
cnNfdGVzdCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9j
b25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29u
ZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBd
CisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tZW1iZXJzX3Rlc3Qu
aCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi8v
dGVzdGluZy9ndGVzdCIsCisgIF0KK30KKworc291cmNlX3NldCgidW5vcmRlcmVkX21hcF9tZW1i
ZXJzX3Rlc3QiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQv
Y29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2Nv
bmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIg
XQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0
LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAogICAgICIv
L3Rlc3RpbmcvZ3Rlc3QiLAogICBdCiB9CkBAIC00NzAsMyArNjA2LDMzIEBAIHNvdXJjZV9zZXQo
InVub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QiKSB7CiAgICAgIi8vdGVzdGluZy9ndGVzdCIs
CiAgIF0KIH0KKworc291cmNlX3NldCgiYnRyZWUiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNf
Y29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmln
IiBdCisgIHNvdXJjZXMgPSBbCisgICAgImludGVybmFsL2J0cmVlLmgiLAorICAgICJpbnRlcm5h
bC9idHJlZV9jb250YWluZXIuaCIsCisgIF0KKyAgcHVibGljID0gWworICAgICJidHJlZV9tYXAu
aCIsCisgICAgImJ0cmVlX3NldC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29tbW9uIiwK
KyAgICAiOmNvbXByZXNzZWRfdHVwbGUiLAorICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAg
IjpsYXlvdXQiLAorICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL2Jhc2U6dGhy
b3dfZGVsZWdhdGUiLAorICAgICIuLi9tZW1vcnkiLAorICAgICIuLi9tZXRhOnR5cGVfdHJhaXRz
IiwKKyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3R5cGVzOmNvbXBhcmUiLAorICAgICIuLi91
dGlsaXR5IiwKKyAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDllNDA2OTAyYjA1ODVk
ZWRhM2JhMzA3MmJlZTBmZjI3NzQ4NGViYzMuLjZjYWJlMGM5MzA5YTIzMzY1YmRjMDk2YzVkNDRm
YTBmY2NhMThiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvQ01ha2VMaXN0cy50eHQKQEAgLTUsNyArNSw3IEBACiAjIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0xNCwxNjMgKzE0LDkwMiBAQAogIyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KICMKIAotCi1saXN0KEFQUEVORCBDT05UQUlORVJfUFVCTElDX0hFQURFUlMK
LSAgImZpeGVkX2FycmF5LmgiCi0gICJmbGF0X2hhc2hfbWFwLmgiCi0gICJmbGF0X2hhc2hfc2V0
LmgiCi0gICJpbmxpbmVkX3ZlY3Rvci5oIgotICAibm9kZV9oYXNoX21hcC5oIgotICAibm9kZV9o
YXNoX3NldC5oIgotKQotCi0KLWxpc3QoQVBQRU5EIENPTlRBSU5FUl9JTlRFUk5BTF9IRUFERVJT
Ci0gICJpbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlLmgiCi0gICJpbnRlcm5hbC9jb250YWluZXJf
bWVtb3J5LmgiCi0gICJpbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiCi0gICJpbnRl
cm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmgiCi0gICJpbnRlcm5hbC9oYXNoX3BvbGljeV90
ZXN0aW5nLmgiCi0gICJpbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaCIKLSAgImludGVybmFs
L2hhc2h0YWJsZV9kZWJ1Zy5oIgotICAiaW50ZXJuYWwvbGF5b3V0LmgiCi0gICJpbnRlcm5hbC9u
b2RlX2hhc2hfcG9saWN5LmgiCi0gICJpbnRlcm5hbC9yYXdfaGFzaF9tYXAuaCIKLSAgImludGVy
bmFsL3Jhd19oYXNoX3NldC5oIgotICAiaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgi
Ci0gICJpbnRlcm5hbC90cmFja2VkLmgiCi0gICJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0
cnVjdG9yX3Rlc3QuaCIKLSAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QuaCIK
LSAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCIKLSAgImludGVybmFs
L3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgotICAiaW50ZXJuYWwvdW5vcmRlcmVk
X3NldF9sb29rdXBfdGVzdC5oIgotICAiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNf
dGVzdC5oIgotKQotCi0KLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9jb250YWlu
ZXIKLSAgU09VUkNFUwotICAgICJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MiCi0gIEVYUE9SVF9O
QU1FCisjIFRoaXMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1
cmUuICBJdCBhbHNvIGRvZXNuJ3QgZG8KKyMgYW55dGhpbmcgYW55d2F5cy4gIFByZWZlciB0byB1
c2UgdGhlIGxpYnJhcnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBBUEkgeW91IGFyZQorIyB1c2luZy4K
K2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQogICAgIGNvbnRhaW5lcgorICBQVUJMSUMKICkKIAor
YWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgYnRyZWUKKyAgSERSUworICAgICJidHJlZV9t
YXAuaCIKKyAgICAiYnRyZWVfc2V0LmgiCisgICAgImludGVybmFsL2J0cmVlLmgiCisgICAgImlu
dGVybmFsL2J0cmVlX2NvbnRhaW5lci5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NP
UFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6Y29udGFpbmVyX2NvbW1vbgorICAgIGFic2w6OmNvbXBhcmUKKyAgICBhYnNsOjpj
b21wcmVzc2VkX3R1cGxlCisgICAgYWJzbDo6Y29udGFpbmVyX21lbW9yeQorICAgIGFic2w6OmNv
cmVfaGVhZGVycworICAgIGFic2w6OmxheW91dAorICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6
OnN0cmluZ3MKKyAgICBhYnNsOjp0aHJvd19kZWxlZ2F0ZQorICAgIGFic2w6OnR5cGVfdHJhaXRz
CisgICAgYWJzbDo6dXRpbGl0eQorKQogCi0jCi0jIyBURVNUUwotIworYWJzbF9jY19saWJyYXJ5
KAorICBOQU1FCisgICAgYnRyZWVfdGVzdF9jb21tb24KKyAgaGRycworICAgICJidHJlZV90ZXN0
LmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtB
QlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpidHJlZQorICAgIGFic2w6
OmZsYXRfaGFzaF9zZXQKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6dGltZQorICBURVNU
T05MWQorKQogCi1saXN0KEFQUEVORCBURVNUX0lOU1RBTkNFX1RSQUNLRVJfTElCX1NSQwotICAi
aW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmNjIgotICAke0NPTlRBSU5FUl9QVUJMSUNf
SEVBREVSU30KLSAgJHtDT05UQUlORVJfSU5URVJOQUxfSEVBREVSU30KK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQorICAgIGJ0cmVlX3Rlc3QKKyAgU1JDUworICAgICJidHJlZV90ZXN0LmNjIgorICBE
RVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmJ0cmVlCisgICAgYWJzbDo6YnRyZWVfdGVz
dF9jb21tb24KKyAgICBhYnNsOjpjb21wYXJlCisgICAgYWJzbDo6Y291bnRpbmdfYWxsb2NhdG9y
CisgICAgYWJzbDo6ZmxhZ3MKKyAgICBhYnNsOjpoYXNoX3Rlc3RpbmcKKyAgICBhYnNsOjpzdHJp
bmdzCisgICAgYWJzbDo6dGVzdF9pbnN0YW5jZV90cmFja2VyCisgICAgYWJzbDo6dHlwZV90cmFp
dHMKKyAgICBnbW9ja19tYWluCiApCiAKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGNv
bXByZXNzZWRfdHVwbGUKKyAgSERSUworICAgICJpbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlLmgi
CisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjp1
dGlsaXR5CisgIFBVQkxJQworKQogCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIHRlc3Rf
aW5zdGFuY2VfdHJhY2tlcl9saWIKLSAgU09VUkNFUwotICAgICR7VEVTVF9JTlNUQU5DRV9UUkFD
S0VSX0xJQl9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsOjpjb250YWluZXIKK2Fi
c2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGNvbXByZXNzZWRfdHVwbGVfdGVzdAorICBTUkNTCisg
ICAgImludGVybmFsL2NvbXByZXNzZWRfdHVwbGVfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmFueQorICAgIGFic2w6OmNvbXByZXNz
ZWRfdHVwbGUKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjpvcHRpb25hbAorICAgIGFic2w6
OnRlc3RfaW5zdGFuY2VfdHJhY2tlcgorICAgIGFic2w6OnV0aWxpdHkKKyAgICBnbW9ja19tYWlu
CiApCiAKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGZpeGVkX2FycmF5CisgIEhEUlMK
KyAgICJmaXhlZF9hcnJheS5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQor
ICBERVBTCisgICAgYWJzbDo6Y29tcHJlc3NlZF90dXBsZQorICAgIGFic2w6OmFsZ29yaXRobQor
ICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmR5bmFtaWNfYW5ub3RhdGlvbnMKKyAg
ICBhYnNsOjp0aHJvd19kZWxlZ2F0ZQorICAgIGFic2w6Om1lbW9yeQorICBQVUJMSUMKKykKIAor
YWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgZml4ZWRfYXJyYXlfdGVzdAorICBTUkNTCisgICAg
ImZpeGVkX2FycmF5X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
ICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfRVhDRVBU
SU9OU19GTEFHX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6Zml4ZWRfYXJyYXkKKyAgICBh
YnNsOjpleGNlcHRpb25fdGVzdGluZworICAgIGFic2w6Omhhc2hfdGVzdGluZworICAgIGFic2w6
Om1lbW9yeQorICAgIGdtb2NrX21haW4KKykKIAotIyB0ZXN0IGZpeGVkX2FycmF5X3Rlc3QKLXNl
dChGSVhFRF9BUlJBWV9URVNUX1NSQyAiZml4ZWRfYXJyYXlfdGVzdC5jYyIpCi1zZXQoRklYRURf
QVJSQVlfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbF90aHJvd19kZWxlZ2F0
ZSB0ZXN0X2luc3RhbmNlX3RyYWNrZXJfbGliKQorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAg
Zml4ZWRfYXJyYXlfdGVzdF9ub2V4Y2VwdGlvbnMKKyAgU1JDUworICAgICJmaXhlZF9hcnJheV90
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6Zml4ZWRfYXJyYXkKKyAgICBhYnNsOjpleGNlcHRpb25fdGVzdGluZworICAgIGFic2w6Omhh
c2hfdGVzdGluZworICAgIGFic2w6Om1lbW9yeQorICAgIGdtb2NrX21haW4KKykKIAotYWJzbF90
ZXN0KAotICBUQVJHRVQKLSAgICBmaXhlZF9hcnJheV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0ZJ
WEVEX0FSUkFZX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtGSVhFRF9BUlJB
WV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIFBSSVZBVEVfQ09NUElMRV9GTEFHUworYWJzbF9j
Y190ZXN0KAorICBOQU1FCisgICAgZml4ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0Cisg
IFNSQ1MKKyAgICAiZml4ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIgorICBDT1BU
UworICAgICR7QUJTTF9URVNUX0NPUFRTfQogICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9Cisg
IExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30KKyAgREVQUwor
ICAgIGFic2w6OmZpeGVkX2FycmF5CisgICAgYWJzbDo6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5n
CisgICAgZ21vY2tfbWFpbgogKQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBpbmxp
bmVkX3ZlY3Rvcl9pbnRlcm5hbAorICBIRFJTCisgICAiaW50ZXJuYWwvaW5saW5lZF92ZWN0b3Iu
aCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6
OmNvbXByZXNzZWRfdHVwbGUKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjptZW1v
cnkKKyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6dHlwZV90cmFpdHMKKyAgUFVCTElDCispCiAK
K2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGlubGluZWRfdmVjdG9yCisgIEhEUlMKKyAg
ICJpbmxpbmVkX3ZlY3Rvci5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQor
ICBERVBTCisgICAgYWJzbDo6YWxnb3JpdGhtCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAg
YWJzbDo6aW5saW5lZF92ZWN0b3JfaW50ZXJuYWwKKyAgICBhYnNsOjp0aHJvd19kZWxlZ2F0ZQor
ICAgIGFic2w6Om1lbW9yeQorICBQVUJMSUMKKykKIAotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAg
ICBmaXhlZF9hcnJheV90ZXN0X25vZXhjZXB0aW9ucwotICBTT1VSQ0VTCi0gICAgJHtGSVhFRF9B
UlJBWV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7RklYRURfQVJSQVlfVEVT
VF9QVUJMSUNfTElCUkFSSUVTfQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgY291bnRp
bmdfYWxsb2NhdG9yCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvY291bnRpbmdfYWxsb2NhdG9yLmgi
CisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CiApCiAKK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQorICAgIGlubGluZWRfdmVjdG9yX3Rlc3QKKyAgU1JDUworICAgICJpbmxpbmVkX3Zl
Y3Rvcl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICAgICR7QUJT
TF9FWENFUFRJT05TX0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxB
R19MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvdW50aW5nX2FsbG9jYXRvcgorICAgIGFi
c2w6OmlubGluZWRfdmVjdG9yCisgICAgYWJzbDo6dGVzdF9pbnN0YW5jZV90cmFja2VyCisgICAg
YWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmV4Y2VwdGlvbl90
ZXN0aW5nCisgICAgYWJzbDo6aGFzaF90ZXN0aW5nCisgICAgYWJzbDo6bWVtb3J5CisgICAgYWJz
bDo6c3RyaW5ncworICAgIGdtb2NrX21haW4KKykKIAotIyB0ZXN0IGZpeGVkX2FycmF5X2V4Y2Vw
dGlvbl9zYWZldHlfdGVzdAotc2V0KEZJWEVEX0FSUkFZX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9T
UkMgImZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIpCi1zZXQoRklYRURfQVJS
QVlfRVhDRVBUSU9OX1NBRkVUWV9URVNUX1BVQkxJQ19MSUJSQVJJRVMKLSAgYWJzbDo6Y29udGFp
bmVyCi0gIGFic2xfYmFzZV9pbnRlcm5hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcKK2Fic2xf
Y2NfdGVzdCgKKyAgTkFNRQorICAgIGlubGluZWRfdmVjdG9yX3Rlc3Rfbm9leGNlcHRpb25zCisg
IFNSQ1MKKyAgICAiaW5saW5lZF92ZWN0b3JfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xf
VEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmlubGluZWRfdmVjdG9yCisgICAgYWJzbDo6
dGVzdF9pbnN0YW5jZV90cmFja2VyCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVh
ZGVycworICAgIGFic2w6OmV4Y2VwdGlvbl90ZXN0aW5nCisgICAgYWJzbDo6aGFzaF90ZXN0aW5n
CisgICAgYWJzbDo6bWVtb3J5CisgICAgYWJzbDo6c3RyaW5ncworICAgIGdtb2NrX21haW4KICkK
IAotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBmaXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5
X3Rlc3QKLSAgU09VUkNFUwotICAgICR7RklYRURfQVJSQVlfRVhDRVBUSU9OX1NBRkVUWV9URVNU
X1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7RklYRURfQVJSQVlfRVhDRVBUSU9OX1NB
RkVUWV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIFBSSVZBVEVfQ09NUElMRV9GTEFHUworYWJz
bF9jY190ZXN0KAorICBOQU1FCisgICAgaW5saW5lZF92ZWN0b3JfZXhjZXB0aW9uX3NhZmV0eV90
ZXN0CisgIFNSQ1MKKyAgICAiaW5saW5lZF92ZWN0b3JfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQogICAgICR7QUJTTF9FWENFUFRJT05T
X0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30K
KyAgREVQUworICAgIGFic2w6OmlubGluZWRfdmVjdG9yCisgICAgYWJzbDo6ZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0aW5nCisgICAgZ21vY2tfbWFpbgogKQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5B
TUUKKyAgICB0ZXN0X2luc3RhbmNlX3RyYWNrZXIKKyAgSERSUworICAgICJpbnRlcm5hbC90ZXN0
X2luc3RhbmNlX3RyYWNrZXIuaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC90ZXN0X2luc3RhbmNl
X3RyYWNrZXIuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpjb21wYXJlCisgIFRFU1RPTkxZCispCiAKLSMgdGVzdCBpbmxpbmVkX3ZlY3Rv
cl90ZXN0Ci1zZXQoSU5MSU5FRF9WRUNUT1JfVEVTVF9TUkMgImlubGluZWRfdmVjdG9yX3Rlc3Qu
Y2MiKQotc2V0KElOTElORURfVkVDVE9SX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNl
IGFic2xfdGhyb3dfZGVsZWdhdGUgdGVzdF9pbnN0YW5jZV90cmFja2VyX2xpYikKK2Fic2xfY2Nf
dGVzdCgKKyAgTkFNRQorICAgIHRlc3RfaW5zdGFuY2VfdHJhY2tlcl90ZXN0CisgIFNSQ1MKKyAg
ICAiaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyX3Rlc3QuY2MiCisgIENPUFRTCisgICAg
JHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjp0ZXN0X2luc3RhbmNlX3RyYWNr
ZXIKKyAgICBnbW9ja19tYWluCispCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgaW5saW5l
ZF92ZWN0b3JfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtJTkxJTkVEX1ZFQ1RPUl9URVNUX1NSQ30K
LSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7SU5MSU5FRF9WRUNUT1JfVEVTVF9QVUJMSUNfTElC
UkFSSUVTfQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZmxhdF9oYXNoX21hcAorICBI
RFJTCisgICAgImZsYXRfaGFzaF9tYXAuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbnRhaW5lcl9tZW1vcnkKKyAgICBhYnNsOjpoYXNo
X2Z1bmN0aW9uX2RlZmF1bHRzCisgICAgYWJzbDo6cmF3X2hhc2hfbWFwCisgICAgYWJzbDo6YWxn
b3JpdGhtX2NvbnRhaW5lcgorICAgIGFic2w6Om1lbW9yeQorICBQVUJMSUMKICkKIAotYWJzbF90
ZXN0KAotICBUQVJHRVQKLSAgICBpbmxpbmVkX3ZlY3Rvcl90ZXN0X25vZXhjZXB0aW9ucwotICBT
T1VSQ0VTCi0gICAgJHtJTkxJTkVEX1ZFQ1RPUl9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklF
UwotICAgICR7SU5MSU5FRF9WRUNUT1JfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQotICBQUklWQVRF
X0NPTVBJTEVfRkxBR1MKLSAgICAke0FCU0xfTk9FWENFUFRJT05fQ1hYRkxBR1N9CithYnNsX2Nj
X3Rlc3QoCisgIE5BTUUKKyAgICBmbGF0X2hhc2hfbWFwX3Rlc3QKKyAgU1JDUworICAgICJmbGF0
X2hhc2hfbWFwX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjpmbGF0X2hhc2hfbWFwCisgICAgYWJzbDo6aGFzaF9nZW5lcmF0b3JfdGVz
dGluZworICAgIGFic2w6OnVub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdAorICAgIGFic2w6
OnVub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFwX21lbWJl
cnNfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QKKyAgICBhYnNs
OjphbnkKKyAgICBnbW9ja19tYWluCiApCiAKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAg
IGZsYXRfaGFzaF9zZXQKKyAgSERSUworICAgICJmbGF0X2hhc2hfc2V0LmgiCisgIENPUFRTCisg
ICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb250YWluZXJfbWVt
b3J5CisgICAgYWJzbDo6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cworICAgIGFic2w6OnJhd19oYXNo
X3NldAorICAgIGFic2w6OmFsZ29yaXRobV9jb250YWluZXIKKyAgICBhYnNsOjpjb3JlX2hlYWRl
cnMKKyAgICBhYnNsOjptZW1vcnkKKyAgUFVCTElDCispCiAKLSMgdGVzdCB0ZXN0X2luc3RhbmNl
X3RyYWNrZXJfdGVzdAotc2V0KFRFU1RfSU5TVEFOQ0VfVFJBQ0tFUl9URVNUX1NSQyAiaW50ZXJu
YWwvdGVzdF9pbnN0YW5jZV90cmFja2VyX3Rlc3QuY2MiKQotc2V0KFRFU1RfSU5TVEFOQ0VfVFJB
Q0tFUl9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSBhYnNsX3Rocm93X2RlbGVnYXRl
IHRlc3RfaW5zdGFuY2VfdHJhY2tlcl9saWIpCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBm
bGF0X2hhc2hfc2V0X3Rlc3QKKyAgU1JDUworICAgICJmbGF0X2hhc2hfc2V0X3Rlc3QuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgICAgIi1EVU5PUkRFUkVEX1NFVF9DWFgx
NyIKKyAgREVQUworICAgIGFic2w6OmZsYXRfaGFzaF9zZXQKKyAgICBhYnNsOjpoYXNoX2dlbmVy
YXRvcl90ZXN0aW5nCisgICAgYWJzbDo6dW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0Cisg
ICAgYWJzbDo6dW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9z
ZXRfbWVtYmVyc190ZXN0CisgICAgYWJzbDo6dW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdAor
ICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9ja19tYWluCispCiAK
K2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIG5vZGVfaGFzaF9tYXAKKyAgSERSUworICAg
ICJub2RlX2hhc2hfbWFwLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpjb250YWluZXJfbWVtb3J5CisgICAgYWJzbDo6aGFzaF9mdW5jdGlv
bl9kZWZhdWx0cworICAgIGFic2w6Om5vZGVfaGFzaF9wb2xpY3kKKyAgICBhYnNsOjpyYXdfaGFz
aF9tYXAKKyAgICBhYnNsOjphbGdvcml0aG1fY29udGFpbmVyCisgICAgYWJzbDo6bWVtb3J5Cisg
IFBVQkxJQworKQogCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIHRlc3RfaW5zdGFuY2VfdHJh
Y2tlcl90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke1RFU1RfSU5TVEFOQ0VfVFJBQ0tFUl9URVNUX1NS
Q30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7VEVTVF9JTlNUQU5DRV9UUkFDS0VSX1RFU1Rf
UFVCTElDX0xJQlJBUklFU30KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIG5vZGVfaGFzaF9t
YXBfdGVzdAorICBTUkNTCisgICAgIm5vZGVfaGFzaF9tYXBfdGVzdC5jYyIKKyAgQ09QVFMKKyAg
ICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6Omhhc2hfZ2VuZXJhdG9yX3Rl
c3RpbmcKKyAgICBhYnNsOjpub2RlX2hhc2hfbWFwCisgICAgYWJzbDo6dHJhY2tlZAorICAgIGFi
c2w6OnVub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9t
YXBfbG9va3VwX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdAorICAg
IGFic2w6OnVub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QKKyAgICBnbW9ja19tYWluCispCisK
K2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIG5vZGVfaGFzaF9zZXQKKyAgSERSUworICAg
ICJub2RlX2hhc2hfc2V0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzCisgICAgYWJzbDo6bm9kZV9o
YXNoX3BvbGljeQorICAgIGFic2w6OnJhd19oYXNoX3NldAorICAgIGFic2w6OmFsZ29yaXRobV9j
b250YWluZXIKKyAgICBhYnNsOjptZW1vcnkKKyAgUFVCTElDCispCisKK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQorICAgIG5vZGVfaGFzaF9zZXRfdGVzdAorICBTUkNTCisgICAgIm5vZGVfaGFzaF9z
ZXRfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgICAiLURVTk9S
REVSRURfU0VUX0NYWDE3IgorICBERVBTCisgICAgYWJzbDo6aGFzaF9nZW5lcmF0b3JfdGVzdGlu
ZworICAgIGFic2w6Om5vZGVfaGFzaF9zZXQKKyAgICBhYnNsOjp1bm9yZGVyZWRfc2V0X2NvbnN0
cnVjdG9yX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0CisgICAgYWJz
bDo6dW5vcmRlcmVkX3NldF9tZW1iZXJzX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfc2V0X21v
ZGlmaWVyc190ZXN0CisgICAgZ21vY2tfbWFpbgorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5B
TUUKKyAgICBjb250YWluZXJfbWVtb3J5CisgIEhEUlMKKyAgICAiaW50ZXJuYWwvY29udGFpbmVy
X21lbW9yeS5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6bWVtb3J5CisgICAgYWJzbDo6dXRpbGl0eQorICBQVUJMSUMKKykKKworYWJzbF9j
Y190ZXN0KAorICBOQU1FCisgICAgY29udGFpbmVyX21lbW9yeV90ZXN0CisgIFNSQ1MKKyAgICAi
aW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29udGFpbmVyX21lbW9yeQorICAgIGFic2w6
OnN0cmluZ3MKKyAgICBnbW9ja19tYWluCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQor
ICAgIGhhc2hfZnVuY3Rpb25fZGVmYXVsdHMKKyAgSERSUworICAgICJpbnRlcm5hbC9oYXNoX2Z1
bmN0aW9uX2RlZmF1bHRzLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpoYXNoCisgICAgYWJzbDo6c3RyaW5n
cworICBQVUJMSUMKKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgaGFzaF9mdW5jdGlv
bl9kZWZhdWx0c190ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZh
dWx0c190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cworICAgIGFic2w6Omhhc2gKKyAgICBhYnNs
OjpzdHJpbmdzCisgICAgZ21vY2tfbWFpbgorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUK
KyAgICBoYXNoX2dlbmVyYXRvcl90ZXN0aW5nCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvaGFzaF9n
ZW5lcmF0b3JfdGVzdGluZy5oIgorICBTUkNTCisgICAgImludGVybmFsL2hhc2hfZ2VuZXJhdG9y
X3Rlc3RpbmcuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAg
ICBhYnNsOjpoYXNoX3BvbGljeV90ZXN0aW5nCisgICAgYWJzbDo6bWV0YQorICAgIGFic2w6OnN0
cmluZ3MKKyAgVEVTVE9OTFkKKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgaGFz
aF9wb2xpY3lfdGVzdGluZworICBIRFJTCisgICAgImludGVybmFsL2hhc2hfcG9saWN5X3Rlc3Rp
bmcuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6
Omhhc2gKKyAgICBhYnNsOjpzdHJpbmdzCisgIFRFU1RPTkxZCispCisKK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQorICAgIGhhc2hfcG9saWN5X3Rlc3RpbmdfdGVzdAorICBTUkNTCisgICAgImludGVy
bmFsL2hhc2hfcG9saWN5X3Rlc3RpbmdfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVT
VF9DT1BUU30KKyAgREVQUworICAgIGFic2w6Omhhc2hfcG9saWN5X3Rlc3RpbmcKKyAgICBnbW9j
a19tYWluCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGhhc2hfcG9saWN5X3Ry
YWl0cworICBIRFJTCisgICAgImludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIgorICBDT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6bWV0YQorICBQ
VUJMSUMKKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgaGFzaF9wb2xpY3lfdHJhaXRz
X3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHNfdGVzdC5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6Omhhc2hf
cG9saWN5X3RyYWl0cworICAgIGdtb2NrX21haW4KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBO
QU1FCisgICAgaGFzaHRhYmxlel9zYW1wbGVyCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvaGFzaHRh
Ymxlel9zYW1wbGVyLmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVy
LmNjIgorICAgICJpbnRlcm5hbC9oYXNodGFibGV6X3NhbXBsZXJfZm9yY2Vfd2Vha19kZWZpbml0
aW9uLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAg
YWJzbDo6YmFzZQorICAgIGFic2w6OmhhdmVfc3NlCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9u
CispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGhhc2h0YWJsZXpfc2FtcGxlcl90ZXN0
CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyX3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNodGFibGV6
X3NhbXBsZXIKKyAgICBhYnNsOjpoYXZlX3NzZQorICAgIGdtb2NrX21haW4KKykKKworYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgaGFzaHRhYmxlX2RlYnVnCisgIEhEUlMKKyAgICAiaW50
ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNodGFibGVfZGVidWdfaG9va3MKKykKKworYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgaGFzaHRhYmxlX2RlYnVnX2hvb2tzCisgIEhEUlMKKyAg
ICAiaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tzLmgiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgIFBVQkxJQworKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUK
KyAgICBoYXZlX3NzZQorICBIRFJTCisgICAgImludGVybmFsL2hhdmVfc3NlLmgiCisgIENPUFRT
CisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CiApCiAKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFN
RQorICAgIG5vZGVfaGFzaF9wb2xpY3kKKyAgSERSUworICAgICJpbnRlcm5hbC9ub2RlX2hhc2hf
cG9saWN5LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIFBVQkxJQwor
KQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBub2RlX2hhc2hfcG9saWN5X3Rlc3QKKyAg
U1JDUworICAgICJpbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2MiCisgIENPUFRTCisg
ICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoX3BvbGljeV90cmFp
dHMKKyAgICBhYnNsOjpub2RlX2hhc2hfcG9saWN5CisgICAgZ21vY2tfbWFpbgorKQorCithYnNs
X2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYXdfaGFzaF9tYXAKKyAgSERSUworICAgICJpbnRl
cm5hbC9yYXdfaGFzaF9tYXAuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OmNvbnRhaW5lcl9tZW1vcnkKKyAgICBhYnNsOjpyYXdfaGFzaF9z
ZXQKKyAgICBhYnNsOjp0aHJvd19kZWxlZ2F0ZQorICBQVUJMSUMKKykKKworYWJzbF9jY19saWJy
YXJ5KAorICBOQU1FCisgICAgY29udGFpbmVyX2NvbW1vbgorICBIRFJTCisgICAgImludGVybmFs
L2NvbW1vbS5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6dHlwZV90cmFpdHMKKykKIAotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2Nf
bGlicmFyeSgKKyAgTkFNRQorICAgIHJhd19oYXNoX3NldAorICBIRFJTCisgICAgImludGVybmFs
L3Jhd19oYXNoX3NldC5oIgorICBTUkNTCisgICAgImludGVybmFsL3Jhd19oYXNoX3NldC5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJp
dHMKKyAgICBhYnNsOjpjb21wcmVzc2VkX3R1cGxlCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJz
bDo6Y29udGFpbmVyX2NvbW1vbgorICAgIGFic2w6OmNvbnRhaW5lcl9tZW1vcnkKKyAgICBhYnNs
Ojpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjplbmRpYW4KKyAgICBhYnNsOjpoYXNoX3BvbGljeV90
cmFpdHMKKyAgICBhYnNsOjpoYXNodGFibGVfZGVidWdfaG9va3MKKyAgICBhYnNsOjpoYXZlX3Nz
ZQorICAgIGFic2w6OmxheW91dAorICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6Om1ldGEKKyAg
ICBhYnNsOjpvcHRpb25hbAorICAgIGFic2w6OnV0aWxpdHkKKyAgICBhYnNsOjpoYXNodGFibGV6
X3NhbXBsZXIKKyAgUFVCTElDCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHJhd19o
YXNoX3NldF90ZXN0Ci0gIFNPVVJDRVMKKyAgU1JDUwogICAgICJpbnRlcm5hbC9yYXdfaGFzaF9z
ZXRfdGVzdC5jYyIKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2w6OmJhc2UgYWJzbDo6aGFz
aCBhYnNsX3Rocm93X2RlbGVnYXRlIHRlc3RfaW5zdGFuY2VfdHJhY2tlcl9saWIKKyAgQ09QVFMK
KyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbnRhaW5lcl9tZW1v
cnkKKyAgICBhYnNsOjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzCisgICAgYWJzbDo6aGFzaF9wb2xp
Y3lfdGVzdGluZworICAgIGFic2w6Omhhc2h0YWJsZV9kZWJ1ZworICAgIGFic2w6OnJhd19oYXNo
X3NldAorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpz
dHJpbmdzCisgICAgZ21vY2tfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBy
YXdfaGFzaF9zZXRfYWxsb2NhdG9yX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9yYXdfaGFz
aF9zZXRfYWxsb2NhdG9yX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpyYXdfaGFzaF9zZXQKKyAgICBhYnNsOjp0cmFja2VkCisgICAg
YWJzbDo6Y29yZV9oZWFkZXJzCisgICAgZ21vY2tfbWFpbgorKQorCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICBsYXlvdXQKKyAgSERSUworICAgICJpbnRlcm5hbC9sYXlvdXQuaCIKKyAg
Q09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvcmVf
aGVhZGVycworICAgIGFic2w6Om1ldGEKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6c3Bh
bgorICAgIGFic2w6OnV0aWxpdHkKKyAgUFVCTElDCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQorICAgIGxheW91dF90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvbGF5b3V0X3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpsYXlv
dXQKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6c3Bh
bgorICAgIGdtb2NrX21haW4KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgdHJh
Y2tlZAorICBIRFJTCisgICAgImludGVybmFsL3RyYWNrZWQuaCIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KKyAgVEVTVE9OTFkKKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1F
CisgICAgdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0CisgIEhEUlMKKyAgICAiaW50ZXJu
YWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgiCisgIENPUFRTCisgICAgJHtBQlNM
X1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nCisg
ICAgYWJzbDo6aGFzaF9wb2xpY3lfdGVzdGluZworICAgIGdtb2NrCisgIFRFU1RPTkxZCispCisK
K2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QK
KyAgSERSUworICAgICJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoX2dlbmVy
YXRvcl90ZXN0aW5nCisgICAgYWJzbDo6aGFzaF9wb2xpY3lfdGVzdGluZworICAgIGdtb2NrCisg
IFRFU1RPTkxZCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9t
YXBfbWVtYmVyc190ZXN0CisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tZW1i
ZXJzX3Rlc3QuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAg
IGFic2w6OnR5cGVfdHJhaXRzCisgICAgZ21vY2sKKyAgVEVTVE9OTFkKKykKKworYWJzbF9jY19s
aWJyYXJ5KAorICBOQU1FCisgICAgdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdAorICBIRFJT
CisgICAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCIKKyAgQ09QVFMK
KyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6Omhhc2hfZ2VuZXJhdG9y
X3Rlc3RpbmcKKyAgICBhYnNsOjpoYXNoX3BvbGljeV90ZXN0aW5nCisgICAgZ21vY2sKKyAgVEVT
VE9OTFkKKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgdW5vcmRlcmVkX3NldF9j
b25zdHJ1Y3Rvcl90ZXN0CisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9jb25z
dHJ1Y3Rvcl90ZXN0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nCisgICAgYWJzbDo6aGFzaF9wb2xpY3lf
dGVzdGluZworICAgIGdtb2NrCisgIFRFU1RPTkxZCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAg
TkFNRQorICAgIHVub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QKKyAgSERSUworICAgICJpbnRlcm5h
bC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nCisgICAgYWJz
bDo6aGFzaF9wb2xpY3lfdGVzdGluZworICAgIGdtb2NrCisgIFRFU1RPTkxZCispCisKK2Fic2xf
Y2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0CisgIEhE
UlMKKyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tZW1iZXJzX3Rlc3QuaCIKKyAgQ09QVFMK
KyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnR5cGVfdHJhaXRzCisg
ICAgZ21vY2sKKyAgVEVTVE9OTFkKKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAg
dW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdAorICBIRFJTCisgICAgImludGVybmFsL3Vub3Jk
ZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BU
U30KKyAgREVQUworICAgIGFic2w6Omhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcKKyAgICBhYnNsOjpo
YXNoX3BvbGljeV90ZXN0aW5nCisgICAgZ21vY2sKKyAgVEVTVE9OTFkKKykKKworYWJzbF9jY190
ZXN0KAorICBOQU1FCisgICAgdW5vcmRlcmVkX3NldF90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJu
YWwvdW5vcmRlcmVkX3NldF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRT
fQorICBERVBTCisgICAgYWJzbDo6dW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0CisgICAg
YWJzbDo6dW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9zZXRf
bWVtYmVyc190ZXN0CisgICAgYWJzbDo6dW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdAorICAg
IGdtb2NrX21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgdW5vcmRlcmVkX21h
cF90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF90ZXN0LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6dW5vcmRlcmVk
X21hcF9jb25zdHJ1Y3Rvcl90ZXN0CisgICAgYWJzbDo6dW5vcmRlcmVkX21hcF9sb29rdXBfdGVz
dAorICAgIGFic2w6OnVub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0CisgICAgYWJzbDo6dW5vcmRl
cmVkX21hcF9tb2RpZmllcnNfdGVzdAorICAgIGdtb2NrX21haW4KICkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9idHJlZV9tYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9idHJlZV9tYXAuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ZjM1ZjYzOTQ5ZGY4M2VmYzU4NDIwYzk0NzEzNmYwNTAyMjYzMDhkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX21hcC5oCkBAIC0wLDAgKzEsNzA1
IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogYnRyZWVfbWFwLmgKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIEItdHJlZSBtYXBzOiBzb3J0
ZWQgYXNzb2NpYXRpdmUgY29udGFpbmVycyBtYXBwaW5nCisvLyBrZXlzIHRvIHZhbHVlcy4KKy8v
CisvLyAgICAgKiBgYWJzbDo6YnRyZWVfbWFwPD5gCisvLyAgICAgKiBgYWJzbDo6YnRyZWVfbXVs
dGltYXA8PmAKKy8vCisvLyBUaGVzZSBCLXRyZWUgdHlwZXMgYXJlIHNpbWlsYXIgdG8gdGhlIGNv
cnJlc3BvbmRpbmcgdHlwZXMgaW4gdGhlIFNUTAorLy8gKGBzdGQ6Om1hcGAgYW5kIGBzdGQ6Om11
bHRpbWFwYCkgYW5kIGdlbmVyYWxseSBjb25mb3JtIHRvIHRoZSBTVEwgaW50ZXJmYWNlcworLy8g
b2YgdGhvc2UgdHlwZXMuIEhvd2V2ZXIsIGJlY2F1c2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgdXNp
bmcgQi10cmVlcywgdGhleQorLy8gYXJlIG1vcmUgZWZmaWNpZW50IGluIG1vc3Qgc2l0dWF0aW9u
cy4KKy8vCisvLyBVbmxpa2UgYHN0ZDo6bWFwYCBhbmQgYHN0ZDo6bXVsdGltYXBgLCB3aGljaCBh
cmUgY29tbW9ubHkgaW1wbGVtZW50ZWQgdXNpbmcKKy8vIHJlZC1ibGFjayB0cmVlIG5vZGVzLCBC
LXRyZWUgbWFwcyB1c2UgbW9yZSBnZW5lcmljIEItdHJlZSBub2RlcyBhYmxlIHRvIGhvbGQKKy8v
IG11bHRpcGxlIHZhbHVlcyBwZXIgbm9kZS4gSG9sZGluZyBtdWx0aXBsZSB2YWx1ZXMgcGVyIG5v
ZGUgb2Z0ZW4gbWFrZXMKKy8vIEItdHJlZSBtYXBzIHBlcmZvcm0gYmV0dGVyIHRoYW4gdGhlaXIg
YHN0ZDo6bWFwYCBjb3VudGVycGFydHMsIGJlY2F1c2UKKy8vIG11bHRpcGxlIGVudHJpZXMgY2Fu
IGJlIGNoZWNrZWQgd2l0aGluIHRoZSBzYW1lIGNhY2hlIGhpdC4KKy8vCisvLyBIb3dldmVyLCB0
aGVzZSB0eXBlcyBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgZHJvcC1pbiByZXBsYWNlbWVudHMg
Zm9yCisvLyBgc3RkOjptYXBgIGFuZCBgc3RkOjptdWx0aW1hcGAgYXMgdGhlcmUgYXJlIHNvbWUg
QVBJIGRpZmZlcmVuY2VzLCB3aGljaCBhcmUKKy8vIG5vdGVkIGluIHRoaXMgaGVhZGVyIGZpbGUu
CisvLworLy8gSW1wb3J0YW50bHksIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucyBtYXkgaW52YWxp
ZGF0ZSBvdXRzdGFuZGluZyBpdGVyYXRvcnMsCisvLyBwb2ludGVycywgYW5kIHJlZmVyZW5jZXMg
dG8gZWxlbWVudHMuIFN1Y2ggaW52YWxpZGF0aW9ucyBhcmUgdHlwaWNhbGx5IG9ubHkKKy8vIGFu
IGlzc3VlIGlmIGluc2VydGlvbiBhbmQgZGVsZXRpb24gb3BlcmF0aW9ucyBhcmUgaW50ZXJsZWF2
ZWQgd2l0aCB0aGUgdXNlIG9mCisvLyBtb3JlIHRoYW4gb25lIGl0ZXJhdG9yLCBwb2ludGVyLCBv
ciByZWZlcmVuY2Ugc2ltdWx0YW5lb3VzbHkuIEZvciB0aGlzCisvLyByZWFzb24sIGBpbnNlcnQo
KWAgYW5kIGBlcmFzZSgpYCByZXR1cm4gYSB2YWxpZCBpdGVyYXRvciBhdCB0aGUgY3VycmVudAor
Ly8gcG9zaXRpb24uCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfQlRSRUVfTUFQX0hfCisjZGVm
aW5lIEFCU0xfQ09OVEFJTkVSX0JUUkVFX01BUF9IXworCisjaW5jbHVkZSAiYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvYnRyZWUuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJh
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC9idHJlZV9jb250YWluZXIuaCIgIC8vIElXWVUgcHJhZ21h
OiBleHBvcnQKKworbmFtZXNwYWNlIGFic2wgeworCisvLyBhYnNsOjpidHJlZV9tYXA8PgorLy8K
Ky8vIEFuIGBhYnNsOjpidHJlZV9tYXA8SywgVj5gIGlzIGFuIG9yZGVyZWQgYXNzb2NpYXRpdmUg
Y29udGFpbmVyIG9mCisvLyB1bmlxdWUga2V5cyBhbmQgYXNzb2NpYXRlZCB2YWx1ZXMgZGVzaWdu
ZWQgdG8gYmUgYSBtb3JlIGVmZmljaWVudCByZXBsYWNlbWVudAorLy8gZm9yIGBzdGQ6Om1hcGAg
KGluIG1vc3QgY2FzZXMpLgorLy8KKy8vIEtleXMgYXJlIHNvcnRlZCB1c2luZyBhbiAob3B0aW9u
YWwpIGNvbXBhcmlzb24gZnVuY3Rpb24sIHdoaWNoIGRlZmF1bHRzIHRvCisvLyBgc3RkOjpsZXNz
PEs+YC4KKy8vCisvLyBBbiBgYWJzbDo6YnRyZWVfbWFwPEssIFY+YCB1c2VzIGEgZGVmYXVsdCBh
bGxvY2F0b3Igb2YKKy8vIGBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgSywgVj4+YCB0
byBhbGxvY2F0ZSAoYW5kIGRlYWxsb2NhdGUpCisvLyBub2RlcywgYW5kIGNvbnN0cnVjdCBhbmQg
ZGVzdHJ1Y3QgdmFsdWVzIHdpdGhpbiB0aG9zZSBub2Rlcy4gWW91IG1heQorLy8gaW5zdGVhZCBz
cGVjaWZ5IGEgY3VzdG9tIGFsbG9jYXRvciBgQWAgKHdoaWNoIGluIHR1cm4gcmVxdWlyZXMgc3Bl
Y2lmeWluZyBhCisvLyBjdXN0b20gY29tcGFyYXRvciBgQ2ApIGFzIGluIGBhYnNsOjpidHJlZV9t
YXA8SywgViwgQywgQT5gLgorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBDb21wYXJlID0gc3RkOjpsZXNzPEtleT4sCisgICAgICAgICAgdHlwZW5h
bWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgS2V5LCBWYWx1ZT4+Pgor
Y2xhc3MgYnRyZWVfbWFwCisgICAgOiBwdWJsaWMgY29udGFpbmVyX2ludGVybmFsOjpidHJlZV9t
YXBfY29udGFpbmVyPAorICAgICAgICAgIGNvbnRhaW5lcl9pbnRlcm5hbDo6YnRyZWU8Y29udGFp
bmVyX2ludGVybmFsOjptYXBfcGFyYW1zPAorICAgICAgICAgICAgICBLZXksIFZhbHVlLCBDb21w
YXJlLCBBbGxvYywgLypUYXJnZXROb2RlU2l6ZT0qLzI1NiwKKyAgICAgICAgICAgICAgLypNdWx0
aT0qL2ZhbHNlPj4+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIGJ0cmVlX21hcDo6YnRyZWVf
bWFwX2NvbnRhaW5lcjsKKworIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0b3JzIGFuZCBBc3NpZ25t
ZW50IE9wZXJhdG9ycworICAvLworICAvLyBBIGBidHJlZV9tYXBgIHN1cHBvcnRzIHRoZSBzYW1l
IG92ZXJsb2FkIHNldCBhcyBgc3RkOjptYXBgCisgIC8vIGZvciBjb25zdHJ1Y3Rpb24gYW5kIGFz
c2lnbm1lbnQ6CisgIC8vCisgIC8vICogRGVmYXVsdCBjb25zdHJ1Y3RvcgorICAvLworICAvLyAg
IGFic2w6OmJ0cmVlX21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXAxOworICAvLworICAvLyAqIElu
aXRpYWxpemVyIExpc3QgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpidHJlZV9tYXA8
aW50LCBzdGQ6OnN0cmluZz4gbWFwMiA9CisgIC8vICAgICAgIHt7MSwgImh1ZXkifSwgezIsICJk
ZXdleSJ9LCB7MywgImxvdWllIn0sfTsKKyAgLy8KKyAgLy8gKiBDb3B5IGNvbnN0cnVjdG9yCisg
IC8vCisgIC8vICAgYWJzbDo6YnRyZWVfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDMobWFwMik7
CisgIC8vCisgIC8vICogQ29weSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisgIC8vICBhYnNs
OjpidHJlZV9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwNDsKKyAgLy8gIG1hcDQgPSBtYXAzOwor
ICAvLworICAvLyAqIE1vdmUgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICAvLyBNb3ZlIGlzIGd1
YXJhbnRlZWQgZWZmaWNpZW50CisgIC8vICAgYWJzbDo6YnRyZWVfbWFwPGludCwgc3RkOjpzdHJp
bmc+IG1hcDUoc3RkOjptb3ZlKG1hcDQpKTsKKyAgLy8KKyAgLy8gKiBNb3ZlIGFzc2lnbm1lbnQg
b3BlcmF0b3IKKyAgLy8KKyAgLy8gICAvLyBNYXkgYmUgZWZmaWNpZW50IGlmIGFsbG9jYXRvcnMg
YXJlIGNvbXBhdGlibGUKKyAgLy8gICBhYnNsOjpidHJlZV9tYXA8aW50LCBzdGQ6OnN0cmluZz4g
bWFwNjsKKyAgLy8gICBtYXA2ID0gc3RkOjptb3ZlKG1hcDUpOworICAvLworICAvLyAqIFJhbmdl
IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGludCwgc3Rk
OjpzdHJpbmc+PiB2ID0ge3sxLCAiYSJ9LCB7MiwgImIifX07CisgIC8vICAgYWJzbDo6YnRyZWVf
bWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDcodi5iZWdpbigpLCB2LmVuZCgpKTsKKyAgYnRyZWVf
bWFwKCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAvLyBidHJlZV9tYXA6OmJlZ2luKCkK
KyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBg
YnRyZWVfbWFwYC4KKyAgdXNpbmcgQmFzZTo6YmVnaW47CisKKyAgLy8gYnRyZWVfbWFwOjpjYmVn
aW4oKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OmNiZWdpbjsKKworICAvLyBidHJl
ZV9tYXA6OmVuZCgpCisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGVuZCBv
ZiB0aGUgYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OmVuZDsKKworICAvLyBidHJlZV9tYXA6
OmNlbmQoKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGVuZCBv
ZiB0aGUgYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OmNlbmQ7CisKKyAgLy8gYnRyZWVfbWFw
OjplbXB0eSgpCisgIC8vCisgIC8vIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGBidHJlZV9t
YXBgIGlzIGVtcHR5LgorICB1c2luZyBCYXNlOjplbXB0eTsKKworICAvLyBidHJlZV9tYXA6Om1h
eF9zaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbGFyZ2VzdCB0aGVvcmV0aWNhbCBwb3Nz
aWJsZSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aGluIGEKKyAgLy8gYGJ0cmVlX21hcGAgdW5kZXIg
Y3VycmVudCBtZW1vcnkgY29uc3RyYWludHMuIFRoaXMgdmFsdWUgY2FuIGJlIHRob3VnaHQKKyAg
Ly8gb2YgYXMgdGhlIGxhcmdlc3QgdmFsdWUgb2YgYHN0ZDo6ZGlzdGFuY2UoYmVnaW4oKSwgZW5k
KCkpYCBmb3IgYQorICAvLyBgYnRyZWVfbWFwPEtleSwgVD5gLgorICB1c2luZyBCYXNlOjptYXhf
c2l6ZTsKKworICAvLyBidHJlZV9tYXA6OnNpemUoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMgY3VycmVudGx5IHdpdGhpbiB0aGUgYGJ0cmVlX21hcGAuCisgIHVz
aW5nIEJhc2U6OnNpemU7CisKKyAgLy8gYnRyZWVfbWFwOjpjbGVhcigpCisgIC8vCisgIC8vIFJl
bW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGBidHJlZV9tYXBgLiBJbnZhbGlkYXRlcyBhbnkg
cmVmZXJlbmNlcywKKyAgLy8gcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyByZWZlcnJpbmcgdG8gY29u
dGFpbmVkIGVsZW1lbnRzLgorICB1c2luZyBCYXNlOjpjbGVhcjsKKworICAvLyBidHJlZV9tYXA6
OmVyYXNlKCkKKyAgLy8KKyAgLy8gRXJhc2VzIGVsZW1lbnRzIHdpdGhpbiB0aGUgYGJ0cmVlX21h
cGAuIElmIGFuIGVyYXNlIG9jY3VycywgYW55IHJlZmVyZW5jZXMsCisgIC8vIHBvaW50ZXJzLCBv
ciBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLgorICAvLyBPdmVybG9hZHMgYXJlIGxpc3RlZCBi
ZWxvdy4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoaXRlcmF0b3IgcG9zaXRpb24pOgorICAv
LyBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBwb3NpdGlvbik6CisgIC8vCisgIC8vICAg
RXJhc2VzIHRoZSBlbGVtZW50IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGBidHJlZV9tYXBgLCByZXR1
cm5pbmcKKyAgLy8gICB0aGUgaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGVsZW1lbnQgYWZ0ZXIg
dGhlIG9uZSB0aGF0IHdhcyBlcmFzZWQKKyAgLy8gICAob3IgZW5kKCkgaWYgbm9uZSBleGlzdHMp
LgorICAvLworICAvLyBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3Rf
aXRlcmF0b3IgbGFzdCk6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50cyBpbiB0aGUg
b3BlbiBpbnRlcnZhbCBbYGZpcnN0YCwgYGxhc3RgKSwgcmV0dXJuaW5nCisgIC8vICAgdGhlIGl0
ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBlbGVtZW50IGFmdGVyIHRoZSBpbnRlcnZhbCB0aGF0IHdh
cyBlcmFzZWQKKyAgLy8gICAob3IgZW5kKCkgaWYgbm9uZSBleGlzdHMpLgorICAvLworICAvLyB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gc2l6ZV90eXBlIGVyYXNlKGNvbnN0IEsmIGtleSk6CisgIC8v
CisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50IHdpdGggdGhlIG1hdGNoaW5nIGtleSwgaWYgaXQg
ZXhpc3RzLCByZXR1cm5pbmcgdGhlCisgIC8vICAgbnVtYmVyIG9mIGVsZW1lbnRzIGVyYXNlZC4K
KyAgdXNpbmcgQmFzZTo6ZXJhc2U7CisKKyAgLy8gYnRyZWVfbWFwOjppbnNlcnQoKQorICAvLwor
ICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBpbnRvIHRoZSBg
YnRyZWVfbWFwYCwKKyAgLy8gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBu
ZXdseSBpbnNlcnRlZCBlbGVtZW50LCBwcm92aWRlZCB0aGF0CisgIC8vIGFuIGVsZW1lbnQgd2l0
aCB0aGUgZ2l2ZW4ga2V5IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIElmIGFuIGluc2VydGlvbgor
ICAvLyBvY2N1cnMsIGFueSByZWZlcmVuY2VzLCBwb2ludGVycywgb3IgaXRlcmF0b3JzIGFyZSBp
bnZhbGlkYXRlZC4KKyAgLy8gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8v
IHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQoY29uc3QgdmFsdWVfdHlwZSYgdmFsdWUp
OgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSBpbnRvIHRoZSBgYnRyZWVfbWFwYC4gUmV0
dXJucyBhIHBhaXIgY29uc2lzdGluZyBvZiBhbgorICAvLyAgIGl0ZXJhdG9yIHRvIHRoZSBpbnNl
cnRlZCBlbGVtZW50IChvciB0byB0aGUgZWxlbWVudCB0aGF0IHByZXZlbnRlZCB0aGUKKyAgLy8g
ICBpbnNlcnRpb24pIGFuZCBhIGJvb2wgZGVub3Rpbmcgd2hldGhlciB0aGUgaW5zZXJ0aW9uIHRv
b2sgcGxhY2UuCisgIC8vCisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQodmFs
dWVfdHlwZSYmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgbW92ZWFibGUgdmFsdWUg
aW50byB0aGUgYGJ0cmVlX21hcGAuIFJldHVybnMgYSBwYWlyCisgIC8vICAgY29uc2lzdGluZyBv
ZiBhbiBpdGVyYXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhlIGVsZW1lbnQg
dGhhdAorICAvLyAgIHByZXZlbnRlZCB0aGUgaW5zZXJ0aW9uKSBhbmQgYSBib29sIGRlbm90aW5n
IHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29rCisgIC8vICAgcGxhY2UuCisgIC8vCisgIC8vIGl0
ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBjb25zdCB2YWx1ZV90eXBlJiB2YWx1
ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCB2YWx1ZV90eXBl
JiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0
aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hl
cmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8g
dGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudCwgb3IgdG8gdGhlIGV4aXN0aW5nIGVsZW1lbnQg
dGhhdCBwcmV2ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uLgorICAvLworICAvLyB2b2lkIGlu
c2VydChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAv
LyAgIEluc2VydHMgYSByYW5nZSBvZiB2YWx1ZXMgW2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisg
IC8vIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGlsaXN0KToK
KyAgLy8KKyAgLy8gICBJbnNlcnRzIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIGluaXRpYWxpemVy
IGxpc3QgYGlsaXN0YC4KKyAgdXNpbmcgQmFzZTo6aW5zZXJ0OworCisgIC8vIGJ0cmVlX21hcDo6
ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVk
IHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBidHJl
ZV9tYXBgLCBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8v
IGFscmVhZHkgZXhpc3RzLgorICAvLworICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0
ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8ga2V5
IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVs
ZW1lbnQgd2lsbCBiZQorICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFByZWZlciBgdHJ5X2Vt
cGxhY2UoKWAgdW5sZXNzIHlvdXIga2V5IGlzIG5vdAorICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJs
ZS4KKyAgLy8KKyAgLy8gSWYgYW4gaW5zZXJ0aW9uIG9jY3VycywgYW55IHJlZmVyZW5jZXMsIHBv
aW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlCisgIC8vIGludmFsaWRhdGVkLgorICB1c2luZyBCYXNl
OjplbXBsYWNlOworCisgIC8vIGJ0cmVlX21hcDo6ZW1wbGFjZV9oaW50KCkKKyAgLy8KKyAgLy8g
SW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0aW5n
IGl0IGluLXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYGJ0cmVlX21hcGAsIHVzaW5nIHRoZSBwb3Np
dGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZworICAvLyBzdWdnZXN0aW9uIGZvciB3aGVy
ZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaCwgYW5kIG9ubHkgaW5zZXJ0cworICAvLyBw
cm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGFscmVhZHkgZXhpc3Rz
LgorICAvLworICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVy
ZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8ga2V5IGluIHRoZSBjb250YWlu
ZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQor
ICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNz
IHlvdXIga2V5IGlzIG5vdAorICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8KKyAgLy8g
SWYgYW4gaW5zZXJ0aW9uIG9jY3VycywgYW55IHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVy
YXRvcnMgYXJlCisgIC8vIGludmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlX2hpbnQ7
CisKKyAgLy8gYnRyZWVfbWFwOjp0cnlfZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4g
ZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFj
ZQorICAvLyB3aXRoaW4gdGhlIGBidHJlZV9tYXBgLCBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQg
d2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVhZHkgZXhpc3RzLiBVbmxpa2UgYGVtcGxhY2Uo
KWAsIGlmIGFuIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVhZHkgZXhpc3Rz
LCB3ZSBndWFyYW50ZWUgdGhhdCBubyBlbGVtZW50IGlzIGNvbnN0cnVjdGVkLgorICAvLworICAv
LyBJZiBhbiBpbnNlcnRpb24gb2NjdXJzLCBhbnkgcmVmZXJlbmNlcywgcG9pbnRlcnMsIG9yIGl0
ZXJhdG9ycyBhcmUKKyAgLy8gaW52YWxpZGF0ZWQuCisgIC8vCisgIC8vIE92ZXJsb2FkcyBhcmUg
bGlzdGVkIGJlbG93LgorICAvLworICAvLyAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5
X2VtcGxhY2UoY29uc3Qga2V5X3R5cGUmIGssIEFyZ3MmJi4uLiBhcmdzKToKKyAgLy8gICBzdGQ6
OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHRyeV9lbXBsYWNlKGtleV90eXBlJiYgaywgQXJncyYmLi4u
IGFyZ3MpOgorICAvLworICAvLyBJbnNlcnRzICh2aWEgY29weSBvciBtb3ZlKSB0aGUgZWxlbWVu
dCBvZiB0aGUgc3BlY2lmaWVkIGtleSBpbnRvIHRoZQorICAvLyBgYnRyZWVfbWFwYC4KKyAgLy8K
KyAgLy8gICBpdGVyYXRvciB0cnlfZW1wbGFjZShjb25zdF9pdGVyYXRvciBoaW50LAorICAvLyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleV90eXBlJiBrLCBBcmdzJiYuLi4gYXJncyk6
CisgIC8vICAgaXRlcmF0b3IgdHJ5X2VtcGxhY2UoY29uc3RfaXRlcmF0b3IgaGludCwga2V5X3R5
cGUmJiBrLCBBcmdzJiYuLi4gYXJncyk6CisgIC8vCisgIC8vIEluc2VydHMgKHZpYSBjb3B5IG9y
IG1vdmUpIHRoZSBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQga2V5IGludG8gdGhlCisgIC8vIGBi
dHJlZV9tYXBgIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZyBz
dWdnZXN0aW9uCisgIC8vIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4K
KyAgdXNpbmcgQmFzZTo6dHJ5X2VtcGxhY2U7CisKKyAgLy8gYnRyZWVfbWFwOjpleHRyYWN0KCkK
KyAgLy8KKyAgLy8gRXh0cmFjdHMgdGhlIGluZGljYXRlZCBlbGVtZW50LCBlcmFzaW5nIGl0IGlu
IHRoZSBwcm9jZXNzLCBhbmQgcmV0dXJucyBpdAorICAvLyBhcyBhIEMrKzE3LWNvbXBhdGlibGUg
bm9kZSBoYW5kbGUuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyBub2Rl
X3R5cGUgZXh0cmFjdChjb25zdF9pdGVyYXRvciBwb3NpdGlvbik6CisgIC8vCisgIC8vICAgRXh0
cmFjdHMgdGhlIGVsZW1lbnQgYXQgdGhlIGluZGljYXRlZCBwb3NpdGlvbiBhbmQgcmV0dXJucyBh
IG5vZGUgaGFuZGxlCisgIC8vICAgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuCisgIC8vCisg
IC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBub2RlX3R5cGUgZXh0cmFjdChjb25zdCBLJiB4KToK
KyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUgZWxlbWVudCB3aXRoIHRoZSBrZXkgbWF0Y2hpbmcg
dGhlIHBhc3NlZCBrZXkgdmFsdWUgYW5kCisgIC8vICAgcmV0dXJucyBhIG5vZGUgaGFuZGxlIG93
bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLiBJZiB0aGUgYGJ0cmVlX21hcGAKKyAgLy8gICBkb2Vz
IG5vdCBjb250YWluIGFuIGVsZW1lbnQgd2l0aCBhIG1hdGNoaW5nIGtleSwgdGhpcyBmdW5jdGlv
biByZXR1cm5zIGFuCisgIC8vICAgZW1wdHkgbm9kZSBoYW5kbGUuCisgIC8vCisgIC8vIE5PVEU6
IEluIHRoaXMgY29udGV4dCwgYG5vZGVfdHlwZWAgcmVmZXJzIHRvIHRoZSBDKysxNyBjb25jZXB0
IG9mIGEKKyAgLy8gbW92ZS1vbmx5IHR5cGUgdGhhdCBvd25zIGFuZCBwcm92aWRlcyBhY2Nlc3Mg
dG8gdGhlIGVsZW1lbnRzIGluIGFzc29jaWF0aXZlCisgIC8vIGNvbnRhaW5lcnMgKGh0dHBzOi8v
ZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9jb250YWluZXIvbm9kZV9oYW5kbGUpLgorICAvLyBJ
dCBkb2VzIE5PVCByZWZlciB0byB0aGUgZGF0YSBsYXlvdXQgb2YgdGhlIHVuZGVybHlpbmcgYnRy
ZWUuCisgIHVzaW5nIEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8gYnRyZWVfbWFwOjptZXJnZSgpCisg
IC8vCisgIC8vIEV4dHJhY3RzIGVsZW1lbnRzIGZyb20gYSBnaXZlbiBgc291cmNlYCBidHJlZV9t
YXAgaW50byB0aGlzCisgIC8vIGBidHJlZV9tYXBgLiBJZiB0aGUgZGVzdGluYXRpb24gYGJ0cmVl
X21hcGAgYWxyZWFkeSBjb250YWlucyBhbgorICAvLyBlbGVtZW50IHdpdGggYW4gZXF1aXZhbGVu
dCBrZXksIHRoYXQgZWxlbWVudCBpcyBub3QgZXh0cmFjdGVkLgorICB1c2luZyBCYXNlOjptZXJn
ZTsKKworICAvLyBidHJlZV9tYXA6OnN3YXAoYnRyZWVfbWFwJiBvdGhlcikKKyAgLy8KKyAgLy8g
RXhjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiB0aGlzIGBidHJlZV9tYXBgIHdpdGggdGhvc2Ugb2Yg
dGhlIGBvdGhlcmAKKyAgLy8gYnRyZWVfbWFwLCBhdm9pZGluZyBpbnZvY2F0aW9uIG9mIGFueSBt
b3ZlLCBjb3B5LCBvciBzd2FwIG9wZXJhdGlvbnMgb24KKyAgLy8gaW5kaXZpZHVhbCBlbGVtZW50
cy4KKyAgLy8KKyAgLy8gQWxsIGl0ZXJhdG9ycyBhbmQgcmVmZXJlbmNlcyBvbiB0aGUgYGJ0cmVl
X21hcGAgcmVtYWluIHZhbGlkLCBleGNlcHRpbmcKKyAgLy8gZm9yIHRoZSBwYXN0LXRoZS1lbmQg
aXRlcmF0b3IsIHdoaWNoIGlzIGludmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjpzd2FwOworCisg
IC8vIGJ0cmVlX21hcDo6YXQoKQorICAvLworICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRo
ZSBtYXBwZWQgdmFsdWUgb2YgdGhlIGVsZW1lbnQgd2l0aCBrZXkgZXF1aXZhbGVudAorICAvLyB0
byB0aGUgcGFzc2VkIGtleS4KKyAgdXNpbmcgQmFzZTo6YXQ7CisKKyAgLy8gYnRyZWVfbWFwOjpj
b250YWlucygpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBib29sIGNvbnRhaW5z
KGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIERldGVybWluZXMgd2hldGhlciBhbiBl
bGVtZW50IGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAgZXhpc3RzCisgIC8vIHdp
dGhpbiB0aGUgYGJ0cmVlX21hcGAsIHJldHVybmluZyBgdHJ1ZWAgaWYgc28gb3IgYGZhbHNlYCBv
dGhlcndpc2UuCisgIC8vCisgIC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92
aWRlZCB0aGF0IHRoZSBtYXAgaXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dl
bmVvdXMgY29tcGFyYXRvci4KKyAgdXNpbmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8gYnRyZWVf
bWFwOjpjb3VudCgpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBzaXplX3R5cGUg
Y291bnQoY29uc3QgSyYga2V5KSBjb25zdDoKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVy
IG9mIGVsZW1lbnRzIGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAgd2l0aGluCisg
IC8vIHRoZSBgYnRyZWVfbWFwYC4gTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4g
ZWl0aGVyIGAxYCBvciBgMGAKKyAgLy8gc2luY2UgZHVwbGljYXRlIGVsZW1lbnRzIGFyZSBub3Qg
YWxsb3dlZCB3aXRoaW4gYSBgYnRyZWVfbWFwYC4KKyAgLy8KKyAgLy8gU3VwcG9ydHMgaGV0ZXJv
Z2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRoYXQgdGhlIG1hcCBpcyBwcm92aWRlZCBhCisgIC8v
IGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBjb21wYXJhdG9yLgorICB1c2luZyBCYXNlOjpjb3Vu
dDsKKworICAvLyBidHJlZV9tYXA6OmVxdWFsX3JhbmdlKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBh
IGNsb3NlZCByYW5nZSBbZmlyc3QsIGxhc3RdLCBkZWZpbmVkIGJ5IGEgYHN0ZDo6cGFpcmAgb2Yg
dHdvCisgIC8vIGl0ZXJhdG9ycywgY29udGFpbmluZyBhbGwgZWxlbWVudHMgd2l0aCB0aGUgcGFz
c2VkIGtleSBpbiB0aGUKKyAgLy8gYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OmVxdWFsX3Jh
bmdlOworCisgIC8vIGJ0cmVlX21hcDo6ZmluZCgpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBl
bmFtZSBLPiBpdGVyYXRvciBmaW5kKGNvbnN0IEsmIGtleSk6CisgIC8vIHRlbXBsYXRlIDx0eXBl
bmFtZSBLPiBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisg
IC8vIEZpbmRzIGFuIGVsZW1lbnQgd2l0aCB0aGUgcGFzc2VkIGBrZXlgIHdpdGhpbiB0aGUgYGJ0
cmVlX21hcGAuCisgIC8vCisgIC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92
aWRlZCB0aGF0IHRoZSBtYXAgaXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dl
bmVvdXMgY29tcGFyYXRvci4KKyAgdXNpbmcgQmFzZTo6ZmluZDsKKworICAvLyBidHJlZV9tYXA6
Om9wZXJhdG9yW10oKQorICAvLworICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YWx1
ZSBtYXBwZWQgdG8gdGhlIHBhc3NlZCBrZXkgd2l0aGluIHRoZQorICAvLyBgYnRyZWVfbWFwYCwg
cGVyZm9ybWluZyBhbiBgaW5zZXJ0KClgIGlmIHRoZSBrZXkgZG9lcyBub3QgYWxyZWFkeQorICAv
LyBleGlzdC4KKyAgLy8KKyAgLy8gSWYgYW4gaW5zZXJ0aW9uIG9jY3VycywgYW55IHJlZmVyZW5j
ZXMsIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlCisgIC8vIGludmFsaWRhdGVkLiBPdGhlcndp
c2UgaXRlcmF0b3JzIGFyZSBub3QgYWZmZWN0ZWQgYW5kIHJlZmVyZW5jZXMgYXJlIG5vdAorICAv
LyBpbnZhbGlkYXRlZC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIFQm
IG9wZXJhdG9yW10oa2V5X3R5cGUmJiBrZXkpOgorICAvLyBUJiBvcGVyYXRvcltdKGNvbnN0IGtl
eV90eXBlJiBrZXkpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZV90eXBlIG9iamVjdCBj
b25zdHJ1Y3RlZCBpbi1wbGFjZSBpZiB0aGUgZWxlbWVudCB3aXRoIHRoZQorICAvLyAgIGdpdmVu
IGtleSBkb2VzIG5vdCBleGlzdC4KKyAgdXNpbmcgQmFzZTo6b3BlcmF0b3JbXTsKKworICAvLyBi
dHJlZV9tYXA6OmdldF9hbGxvY2F0b3IoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBhbGxvY2F0
b3IgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJh
c2U6OmdldF9hbGxvY2F0b3I7CisKKyAgLy8gYnRyZWVfbWFwOjprZXlfY29tcCgpOworICAvLwor
ICAvLyBSZXR1cm5zIHRoZSBrZXkgY29tcGFyYXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBgYnRy
ZWVfbWFwYC4KKyAgdXNpbmcgQmFzZTo6a2V5X2NvbXA7CisKKyAgLy8gYnRyZWVfbWFwOjp2YWx1
ZV9jb21wKCk7CisgIC8vCisgIC8vIFJldHVybnMgdGhlIHZhbHVlIGNvbXBhcmF0b3IgYXNzb2Np
YXRlZCB3aXRoIHRoaXMgYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OnZhbHVlX2NvbXA7Cit9
OworCisvLyBhYnNsOjpzd2FwKGFic2w6OmJ0cmVlX21hcDw+LCBhYnNsOjpidHJlZV9tYXA8PikK
Ky8vCisvLyBTd2FwcyB0aGUgY29udGVudHMgb2YgdHdvIGBhYnNsOjpidHJlZV9tYXBgIGNvbnRh
aW5lcnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgViwgdHlwZW5hbWUgQywgdHlw
ZW5hbWUgQT4KK3ZvaWQgc3dhcChidHJlZV9tYXA8SywgViwgQywgQT4gJngsIGJ0cmVlX21hcDxL
LCBWLCBDLCBBPiAmeSkgeworICByZXR1cm4geC5zd2FwKHkpOworfQorCisvLyBhYnNsOjpidHJl
ZV9tdWx0aW1hcAorLy8KKy8vIEFuIGBhYnNsOjpidHJlZV9tdWx0aW1hcDxLLCBWPmAgaXMgYW4g
b3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgb2YKKy8vIGtleXMgYW5kIGFzc29jaWF0ZWQg
dmFsdWVzIGRlc2lnbmVkIHRvIGJlIGEgbW9yZSBlZmZpY2llbnQgcmVwbGFjZW1lbnQgZm9yCisv
LyBgc3RkOjptdWx0aW1hcGAgKGluIG1vc3QgY2FzZXMpLiBVbmxpa2UgYGFic2w6OmJ0cmVlX21h
cGAsIGEgQi10cmVlIG11bHRpbWFwCisvLyBhbGxvd3MgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCBl
cXVpdmFsZW50IGtleXMuCisvLworLy8gS2V5cyBhcmUgc29ydGVkIHVzaW5nIGFuIChvcHRpb25h
bCkgY29tcGFyaXNvbiBmdW5jdGlvbiwgd2hpY2ggZGVmYXVsdHMgdG8KKy8vIGBzdGQ6Omxlc3M8
Sz5gLgorLy8KKy8vIEFuIGBhYnNsOjpidHJlZV9tdWx0aW1hcDxLLCBWPmAgdXNlcyBhIGRlZmF1
bHQgYWxsb2NhdG9yIG9mCisvLyBgc3RkOjphbGxvY2F0b3I8c3RkOjpwYWlyPGNvbnN0IEssIFY+
PmAgdG8gYWxsb2NhdGUgKGFuZCBkZWFsbG9jYXRlKQorLy8gbm9kZXMsIGFuZCBjb25zdHJ1Y3Qg
YW5kIGRlc3RydWN0IHZhbHVlcyB3aXRoaW4gdGhvc2Ugbm9kZXMuIFlvdSBtYXkKKy8vIGluc3Rl
YWQgc3BlY2lmeSBhIGN1c3RvbSBhbGxvY2F0b3IgYEFgICh3aGljaCBpbiB0dXJuIHJlcXVpcmVz
IHNwZWNpZnlpbmcgYQorLy8gY3VzdG9tIGNvbXBhcmF0b3IgYENgKSBhcyBpbiBgYWJzbDo6YnRy
ZWVfbXVsdGltYXA8SywgViwgQywgQT5gLgorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBDb21wYXJlID0gc3RkOjpsZXNzPEtleT4sCisgICAgICAg
ICAgdHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgS2V5LCBW
YWx1ZT4+PgorY2xhc3MgYnRyZWVfbXVsdGltYXAKKyAgICA6IHB1YmxpYyBjb250YWluZXJfaW50
ZXJuYWw6OmJ0cmVlX211bHRpbWFwX2NvbnRhaW5lcjwKKyAgICAgICAgICBjb250YWluZXJfaW50
ZXJuYWw6OmJ0cmVlPGNvbnRhaW5lcl9pbnRlcm5hbDo6bWFwX3BhcmFtczwKKyAgICAgICAgICAg
ICAgS2V5LCBWYWx1ZSwgQ29tcGFyZSwgQWxsb2MsIC8qVGFyZ2V0Tm9kZVNpemU9Ki8yNTYsCisg
ICAgICAgICAgICAgIC8qTXVsdGk9Ki90cnVlPj4+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1l
IGJ0cmVlX211bHRpbWFwOjpidHJlZV9tdWx0aW1hcF9jb250YWluZXI7CisKKyBwdWJsaWM6Cisg
IC8vIENvbnN0cnVjdG9ycyBhbmQgQXNzaWdubWVudCBPcGVyYXRvcnMKKyAgLy8KKyAgLy8gQSBg
YnRyZWVfbXVsdGltYXBgIHN1cHBvcnRzIHRoZSBzYW1lIG92ZXJsb2FkIHNldCBhcyBgc3RkOjpt
dWx0aW1hcGAKKyAgLy8gZm9yIGNvbnN0cnVjdGlvbiBhbmQgYXNzaWdubWVudDoKKyAgLy8KKyAg
Ly8gKiBEZWZhdWx0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6YnRyZWVfbXVsdGlt
YXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwMTsKKyAgLy8KKyAgLy8gKiBJbml0aWFsaXplciBMaXN0
IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6YnRyZWVfbXVsdGltYXA8aW50LCBzdGQ6
OnN0cmluZz4gbWFwMiA9CisgIC8vICAgICAgIHt7MSwgImh1ZXkifSwgezIsICJkZXdleSJ9LCB7
MywgImxvdWllIn0sfTsKKyAgLy8KKyAgLy8gKiBDb3B5IGNvbnN0cnVjdG9yCisgIC8vCisgIC8v
ICAgYWJzbDo6YnRyZWVfbXVsdGltYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwMyhtYXAyKTsKKyAg
Ly8KKyAgLy8gKiBDb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgLy8KKyAgLy8gIGFic2w6OmJ0
cmVlX211bHRpbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDQ7CisgIC8vICBtYXA0ID0gbWFwMzsK
KyAgLy8KKyAgLy8gKiBNb3ZlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgLy8gTW92ZSBpcyBn
dWFyYW50ZWVkIGVmZmljaWVudAorICAvLyAgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgc3Rk
OjpzdHJpbmc+IG1hcDUoc3RkOjptb3ZlKG1hcDQpKTsKKyAgLy8KKyAgLy8gKiBNb3ZlIGFzc2ln
bm1lbnQgb3BlcmF0b3IKKyAgLy8KKyAgLy8gICAvLyBNYXkgYmUgZWZmaWNpZW50IGlmIGFsbG9j
YXRvcnMgYXJlIGNvbXBhdGlibGUKKyAgLy8gICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIHN0
ZDo6c3RyaW5nPiBtYXA2OworICAvLyAgIG1hcDYgPSBzdGQ6Om1vdmUobWFwNSk7CisgIC8vCisg
IC8vICogUmFuZ2UgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnBh
aXI8aW50LCBzdGQ6OnN0cmluZz4+IHYgPSB7ezEsICJhIn0sIHsyLCAiYiJ9fTsKKyAgLy8gICBh
YnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXA3KHYuYmVnaW4oKSwgdi5l
bmQoKSk7CisgIGJ0cmVlX211bHRpbWFwKCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAv
LyBidHJlZV9tdWx0aW1hcDo6YmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9y
IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBidHJlZV9tdWx0aW1hcGAuCisgIHVzaW5nIEJhc2U6
OmJlZ2luOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjpjYmVnaW4oKQorICAvLworICAvLyBSZXR1
cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYGJ0cmVlX211bHRp
bWFwYC4KKyAgdXNpbmcgQmFzZTo6Y2JlZ2luOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjplbmQo
KQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBidHJl
ZV9tdWx0aW1hcGAuCisgIHVzaW5nIEJhc2U6OmVuZDsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6
Y2VuZCgpCisgIC8vCisgIC8vIFJldHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgZW5kIG9m
IHRoZSBgYnRyZWVfbXVsdGltYXBgLgorICB1c2luZyBCYXNlOjpjZW5kOworCisgIC8vIGJ0cmVl
X211bHRpbWFwOjplbXB0eSgpCisgIC8vCisgIC8vIFJldHVybnMgd2hldGhlciBvciBub3QgdGhl
IGBidHJlZV9tdWx0aW1hcGAgaXMgZW1wdHkuCisgIHVzaW5nIEJhc2U6OmVtcHR5OworCisgIC8v
IGJ0cmVlX211bHRpbWFwOjptYXhfc2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGxhcmdl
c3QgdGhlb3JldGljYWwgcG9zc2libGUgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGhpbiBhCisgIC8v
IGBidHJlZV9tdWx0aW1hcGAgdW5kZXIgY3VycmVudCBtZW1vcnkgY29uc3RyYWludHMuIFRoaXMg
dmFsdWUgY2FuIGJlCisgIC8vIHRob3VnaHQgb2YgYXMgdGhlIGxhcmdlc3QgdmFsdWUgb2YgYHN0
ZDo6ZGlzdGFuY2UoYmVnaW4oKSwgZW5kKCkpYCBmb3IgYQorICAvLyBgYnRyZWVfbXVsdGltYXA8
S2V5LCBUPmAuCisgIHVzaW5nIEJhc2U6Om1heF9zaXplOworCisgIC8vIGJ0cmVlX211bHRpbWFw
OjpzaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1cnJl
bnRseSB3aXRoaW4gdGhlIGBidHJlZV9tdWx0aW1hcGAuCisgIHVzaW5nIEJhc2U6OnNpemU7CisK
KyAgLy8gYnRyZWVfbXVsdGltYXA6OmNsZWFyKCkKKyAgLy8KKyAgLy8gUmVtb3ZlcyBhbGwgZWxl
bWVudHMgZnJvbSB0aGUgYGJ0cmVlX211bHRpbWFwYC4gSW52YWxpZGF0ZXMgYW55IHJlZmVyZW5j
ZXMsCisgIC8vIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgcmVmZXJyaW5nIHRvIGNvbnRhaW5lZCBl
bGVtZW50cy4KKyAgdXNpbmcgQmFzZTo6Y2xlYXI7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6OmVy
YXNlKCkKKyAgLy8KKyAgLy8gRXJhc2VzIGVsZW1lbnRzIHdpdGhpbiB0aGUgYGJ0cmVlX211bHRp
bWFwYC4gSWYgYW4gZXJhc2Ugb2NjdXJzLCBhbnkKKyAgLy8gcmVmZXJlbmNlcywgcG9pbnRlcnMs
IG9yIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIC8vIE92ZXJsb2FkcyBhcmUgbGlzdGVk
IGJlbG93LgorICAvLworICAvLyBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBwb3NpdGlvbik6Cisg
IC8vIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8KKyAgLy8g
ICBFcmFzZXMgdGhlIGVsZW1lbnQgYXQgYHBvc2l0aW9uYCBvZiB0aGUgYGJ0cmVlX211bHRpbWFw
YCwgcmV0dXJuaW5nCisgIC8vICAgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBlbGVtZW50
IGFmdGVyIHRoZSBvbmUgdGhhdCB3YXMgZXJhc2VkCisgIC8vICAgKG9yIGVuZCgpIGlmIG5vbmUg
ZXhpc3RzKS4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3Qs
IGNvbnN0X2l0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudHMg
aW4gdGhlIG9wZW4gaW50ZXJ2YWwgW2BmaXJzdGAsIGBsYXN0YCksIHJldHVybmluZworICAvLyAg
IHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZWxlbWVudCBhZnRlciB0aGUgaW50ZXJ2YWwg
dGhhdCB3YXMgZXJhc2VkCisgIC8vICAgKG9yIGVuZCgpIGlmIG5vbmUgZXhpc3RzKS4KKyAgLy8K
KyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+IHNpemVfdHlwZSBlcmFzZShjb25zdCBLJiBrZXkp
OgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudHMgbWF0Y2hpbmcgdGhlIGtleSwgaWYg
YW55IGV4aXN0LCByZXR1cm5pbmcgdGhlCisgIC8vICAgbnVtYmVyIG9mIGVsZW1lbnRzIGVyYXNl
ZC4KKyAgdXNpbmcgQmFzZTo6ZXJhc2U7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6Omluc2VydCgp
CisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGlu
dG8gdGhlIGBidHJlZV9tdWx0aW1hcGAsCisgIC8vIHJldHVybmluZyBhbiBpdGVyYXRvciBwb2lu
dGluZyB0byB0aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudC4KKyAgLy8gQW55IHJlZmVyZW5jZXMs
IHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLiAgT3ZlcmxvYWRzIGFyZQor
ICAvLyBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdCB2YWx1
ZV90eXBlJiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlIGludG8gdGhlIGBi
dHJlZV9tdWx0aW1hcGAsIHJldHVybmluZyBhbiBpdGVyYXRvciB0byB0aGUKKyAgLy8gICBpbnNl
cnRlZCBlbGVtZW50LgorICAvLworICAvLyBpdGVyYXRvciBpbnNlcnQodmFsdWVfdHlwZSYmIHZh
bHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgbW92ZWFibGUgdmFsdWUgaW50byB0aGUgYGJ0
cmVlX211bHRpbWFwYCwgcmV0dXJuaW5nIGFuIGl0ZXJhdG9yCisgIC8vICAgdG8gdGhlIGluc2Vy
dGVkIGVsZW1lbnQuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBo
aW50LCBjb25zdCB2YWx1ZV90eXBlJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25z
dF9pdGVyYXRvciBoaW50LCB2YWx1ZV90eXBlJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2Vy
dHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5n
IHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFy
Y2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudC4K
KyAgLy8KKyAgLy8gdm9pZCBpbnNlcnQoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRv
ciBsYXN0KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgcmFuZ2Ugb2YgdmFsdWVzIFtgZmlyc3Rg
LCBgbGFzdGApLgorICAvLworICAvLyB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
aW5pdF90eXBlPiBpbGlzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyB0aGUgZWxlbWVudHMgd2l0
aGluIHRoZSBpbml0aWFsaXplciBsaXN0IGBpbGlzdGAuCisgIHVzaW5nIEJhc2U6Omluc2VydDsK
KworICAvLyBidHJlZV9tdWx0aW1hcDo6ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4g
ZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFj
ZQorICAvLyB3aXRoaW4gdGhlIGBidHJlZV9tdWx0aW1hcGAuIEFueSByZWZlcmVuY2VzLCBwb2lu
dGVycywgb3IgaXRlcmF0b3JzIGFyZQorICAvLyBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6
ZW1wbGFjZTsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6ZW1wbGFjZV9oaW50KCkKKyAgLy8KKyAg
Ly8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0
aW5nIGl0IGluLXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYGJ0cmVlX211bHRpbWFwYCwgdXNpbmcg
dGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nCisgIC8vIHN1Z2dlc3Rpb24g
Zm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLgorICAvLworICAvLyBBbnkg
cmVmZXJlbmNlcywgcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIHVz
aW5nIEJhc2U6OmVtcGxhY2VfaGludDsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6ZXh0cmFjdCgp
CisgIC8vCisgIC8vIEV4dHJhY3RzIHRoZSBpbmRpY2F0ZWQgZWxlbWVudCwgZXJhc2luZyBpdCBp
biB0aGUgcHJvY2VzcywgYW5kIHJldHVybnMgaXQKKyAgLy8gYXMgYSBDKysxNy1jb21wYXRpYmxl
IG5vZGUgaGFuZGxlLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gbm9k
ZV90eXBlIGV4dHJhY3QoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pOgorICAvLworICAvLyAgIEV4
dHJhY3RzIHRoZSBlbGVtZW50IGF0IHRoZSBpbmRpY2F0ZWQgcG9zaXRpb24gYW5kIHJldHVybnMg
YSBub2RlIGhhbmRsZQorICAvLyAgIG93bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLgorICAvLwor
ICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gbm9kZV90eXBlIGV4dHJhY3QoY29uc3QgSyYgeCk6
CisgIC8vCisgIC8vICAgRXh0cmFjdHMgdGhlIGVsZW1lbnQgd2l0aCB0aGUga2V5IG1hdGNoaW5n
IHRoZSBwYXNzZWQga2V5IHZhbHVlIGFuZAorICAvLyAgIHJldHVybnMgYSBub2RlIGhhbmRsZSBv
d25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4gSWYgdGhlIGBidHJlZV9tdWx0aW1hcGAKKyAgLy8g
ICBkb2VzIG5vdCBjb250YWluIGFuIGVsZW1lbnQgd2l0aCBhIG1hdGNoaW5nIGtleSwgdGhpcyBm
dW5jdGlvbiByZXR1cm5zIGFuCisgIC8vICAgZW1wdHkgbm9kZSBoYW5kbGUuCisgIC8vCisgIC8v
IE5PVEU6IEluIHRoaXMgY29udGV4dCwgYG5vZGVfdHlwZWAgcmVmZXJzIHRvIHRoZSBDKysxNyBj
b25jZXB0IG9mIGEKKyAgLy8gbW92ZS1vbmx5IHR5cGUgdGhhdCBvd25zIGFuZCBwcm92aWRlcyBh
Y2Nlc3MgdG8gdGhlIGVsZW1lbnRzIGluIGFzc29jaWF0aXZlCisgIC8vIGNvbnRhaW5lcnMgKGh0
dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9jb250YWluZXIvbm9kZV9oYW5kbGUpLgor
ICAvLyBJdCBkb2VzIE5PVCByZWZlciB0byB0aGUgZGF0YSBsYXlvdXQgb2YgdGhlIHVuZGVybHlp
bmcgYnRyZWUuCisgIHVzaW5nIEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6
Om1lcmdlKCkKKyAgLy8KKyAgLy8gRXh0cmFjdHMgZWxlbWVudHMgZnJvbSBhIGdpdmVuIGBzb3Vy
Y2VgIGJ0cmVlX211bHRpbWFwIGludG8gdGhpcworICAvLyBgYnRyZWVfbXVsdGltYXBgLiBJZiB0
aGUgZGVzdGluYXRpb24gYGJ0cmVlX211bHRpbWFwYCBhbHJlYWR5IGNvbnRhaW5zIGFuCisgIC8v
IGVsZW1lbnQgd2l0aCBhbiBlcXVpdmFsZW50IGtleSwgdGhhdCBlbGVtZW50IGlzIG5vdCBleHRy
YWN0ZWQuCisgIHVzaW5nIEJhc2U6Om1lcmdlOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjpzd2Fw
KGJ0cmVlX211bHRpbWFwJiBvdGhlcikKKyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRoZSBjb250ZW50
cyBvZiB0aGlzIGBidHJlZV9tdWx0aW1hcGAgd2l0aCB0aG9zZSBvZiB0aGUgYG90aGVyYAorICAv
LyBidHJlZV9tdWx0aW1hcCwgYXZvaWRpbmcgaW52b2NhdGlvbiBvZiBhbnkgbW92ZSwgY29weSwg
b3Igc3dhcCBvcGVyYXRpb25zCisgIC8vIG9uIGluZGl2aWR1YWwgZWxlbWVudHMuCisgIC8vCisg
IC8vIEFsbCBpdGVyYXRvcnMgYW5kIHJlZmVyZW5jZXMgb24gdGhlIGBidHJlZV9tdWx0aW1hcGAg
cmVtYWluIHZhbGlkLAorICAvLyBleGNlcHRpbmcgZm9yIHRoZSBwYXN0LXRoZS1lbmQgaXRlcmF0
b3IsIHdoaWNoIGlzIGludmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjpzd2FwOworCisgIC8vIGJ0
cmVlX211bHRpbWFwOjpjb250YWlucygpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBL
PiBib29sIGNvbnRhaW5zKGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIERldGVybWlu
ZXMgd2hldGhlciBhbiBlbGVtZW50IGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAg
ZXhpc3RzCisgIC8vIHdpdGhpbiB0aGUgYGJ0cmVlX211bHRpbWFwYCwgcmV0dXJuaW5nIGB0cnVl
YCBpZiBzbyBvciBgZmFsc2VgIG90aGVyd2lzZS4KKyAgLy8KKyAgLy8gU3VwcG9ydHMgaGV0ZXJv
Z2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRoYXQgdGhlIG1hcCBpcyBwcm92aWRlZCBhCisgIC8v
IGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBjb21wYXJhdG9yLgorICB1c2luZyBCYXNlOjpjb250
YWluczsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6Y291bnQoKQorICAvLworICAvLyB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSz4gc2l6ZV90eXBlIGNvdW50KGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8v
CisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb21wYXJpbmcgZXF1YWwgdG8g
dGhlIGdpdmVuIGBrZXlgIHdpdGhpbgorICAvLyB0aGUgYGJ0cmVlX211bHRpbWFwYC4KKyAgLy8K
KyAgLy8gU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRoYXQgdGhlIG1h
cCBpcyBwcm92aWRlZCBhCisgIC8vIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBjb21wYXJhdG9y
LgorICB1c2luZyBCYXNlOjpjb3VudDsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6ZXF1YWxfcmFu
Z2UoKQorICAvLworICAvLyBSZXR1cm5zIGEgY2xvc2VkIHJhbmdlIFtmaXJzdCwgbGFzdF0sIGRl
ZmluZWQgYnkgYSBgc3RkOjpwYWlyYCBvZiB0d28KKyAgLy8gaXRlcmF0b3JzLCBjb250YWluaW5n
IGFsbCBlbGVtZW50cyB3aXRoIHRoZSBwYXNzZWQga2V5IGluIHRoZQorICAvLyBgYnRyZWVfbXVs
dGltYXBgLgorICB1c2luZyBCYXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBidHJlZV9tdWx0aW1h
cDo6ZmluZCgpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBpdGVyYXRvciBmaW5k
KGNvbnN0IEsmIGtleSk6CisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBjb25zdF9pdGVyYXRv
ciBmaW5kKGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIEZpbmRzIGFuIGVsZW1lbnQg
d2l0aCB0aGUgcGFzc2VkIGBrZXlgIHdpdGhpbiB0aGUgYGJ0cmVlX211bHRpbWFwYC4KKyAgLy8K
KyAgLy8gU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRoYXQgdGhlIG1h
cCBpcyBwcm92aWRlZCBhCisgIC8vIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBjb21wYXJhdG9y
LgorICB1c2luZyBCYXNlOjpmaW5kOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjpnZXRfYWxsb2Nh
dG9yKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0
ZWQgd2l0aCB0aGlzIGBidHJlZV9tdWx0aW1hcGAuCisgIHVzaW5nIEJhc2U6OmdldF9hbGxvY2F0
b3I7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6OmtleV9jb21wKCk7CisgIC8vCisgIC8vIFJldHVy
bnMgdGhlIGtleSBjb21wYXJhdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJlZV9tdWx0aW1h
cGAuCisgIHVzaW5nIEJhc2U6OmtleV9jb21wOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjp2YWx1
ZV9jb21wKCk7CisgIC8vCisgIC8vIFJldHVybnMgdGhlIHZhbHVlIGNvbXBhcmF0b3IgYXNzb2Np
YXRlZCB3aXRoIHRoaXMgYGJ0cmVlX211bHRpbWFwYC4KKyAgdXNpbmcgQmFzZTo6dmFsdWVfY29t
cDsKK307CisKKy8vIGFic2w6OnN3YXAoYWJzbDo6YnRyZWVfbXVsdGltYXA8PiwgYWJzbDo6YnRy
ZWVfbXVsdGltYXA8PikKKy8vCisvLyBTd2FwcyB0aGUgY29udGVudHMgb2YgdHdvIGBhYnNsOjpi
dHJlZV9tdWx0aW1hcGAgY29udGFpbmVycy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBBPgordm9pZCBzd2FwKGJ0cmVlX211bHRpbWFwPEss
IFYsIEMsIEE+ICZ4LCBidHJlZV9tdWx0aW1hcDxLLCBWLCBDLCBBPiAmeSkgeworICByZXR1cm4g
eC5zd2FwKHkpOworfQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xf
Q09OVEFJTkVSX0JUUkVFX01BUF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVl
X3NldC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3NldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNDdiNGFh
ZTY1MmUyYmRkZDAzZDMxMzBhMDQ2YWExNDJkMDJmODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvYnRyZWVfc2V0LmgKQEAgLTAsMCArMSw2NTMgQEAKKy8vIENvcHlyaWdodCAy
MDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LyBGaWxlOiBidHJlZV9zZXQuaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlz
IGhlYWRlciBmaWxlIGRlZmluZXMgQi10cmVlIHNldHM6IHNvcnRlZCBhc3NvY2lhdGl2ZSBjb250
YWluZXJzIG9mCisvLyB2YWx1ZXMuCisvLworLy8gICAgICogYGFic2w6OmJ0cmVlX3NldDw+YAor
Ly8gICAgICogYGFic2w6OmJ0cmVlX211bHRpc2V0PD5gCisvLworLy8gVGhlc2UgQi10cmVlIHR5
cGVzIGFyZSBzaW1pbGFyIHRvIHRoZSBjb3JyZXNwb25kaW5nIHR5cGVzIGluIHRoZSBTVEwKKy8v
IChgc3RkOjpzZXRgIGFuZCBgc3RkOjptdWx0aXNldGApIGFuZCBnZW5lcmFsbHkgY29uZm9ybSB0
byB0aGUgU1RMIGludGVyZmFjZXMKKy8vIG9mIHRob3NlIHR5cGVzLiBIb3dldmVyLCBiZWNhdXNl
IHRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIEItdHJlZXMsIHRoZXkKKy8vIGFyZSBtb3JlIGVm
ZmljaWVudCBpbiBtb3N0IHNpdHVhdGlvbnMuCisvLworLy8gVW5saWtlIGBzdGQ6OnNldGAgYW5k
IGBzdGQ6Om11bHRpc2V0YCwgd2hpY2ggYXJlIGNvbW1vbmx5IGltcGxlbWVudGVkIHVzaW5nCisv
LyByZWQtYmxhY2sgdHJlZSBub2RlcywgQi10cmVlIHNldHMgdXNlIG1vcmUgZ2VuZXJpYyBCLXRy
ZWUgbm9kZXMgYWJsZSB0byBob2xkCisvLyBtdWx0aXBsZSB2YWx1ZXMgcGVyIG5vZGUuIEhvbGRp
bmcgbXVsdGlwbGUgdmFsdWVzIHBlciBub2RlIG9mdGVuIG1ha2VzCisvLyBCLXRyZWUgc2V0cyBw
ZXJmb3JtIGJldHRlciB0aGFuIHRoZWlyIGBzdGQ6OnNldGAgY291bnRlcnBhcnRzLCBiZWNhdXNl
CisvLyBtdWx0aXBsZSBlbnRyaWVzIGNhbiBiZSBjaGVja2VkIHdpdGhpbiB0aGUgc2FtZSBjYWNo
ZSBoaXQuCisvLworLy8gSG93ZXZlciwgdGhlc2UgdHlwZXMgc2hvdWxkIG5vdCBiZSBjb25zaWRl
cmVkIGRyb3AtaW4gcmVwbGFjZW1lbnRzIGZvcgorLy8gYHN0ZDo6c2V0YCBhbmQgYHN0ZDo6bXVs
dGlzZXRgIGFzIHRoZXJlIGFyZSBzb21lIEFQSSBkaWZmZXJlbmNlcywgd2hpY2ggYXJlCisvLyBu
b3RlZCBpbiB0aGlzIGhlYWRlciBmaWxlLgorLy8KKy8vIEltcG9ydGFudGx5LCBpbnNlcnRpb25z
IGFuZCBkZWxldGlvbnMgbWF5IGludmFsaWRhdGUgb3V0c3RhbmRpbmcgaXRlcmF0b3JzLAorLy8g
cG9pbnRlcnMsIGFuZCByZWZlcmVuY2VzIHRvIGVsZW1lbnRzLiBTdWNoIGludmFsaWRhdGlvbnMg
YXJlIHR5cGljYWxseSBvbmx5CisvLyBhbiBpc3N1ZSBpZiBpbnNlcnRpb24gYW5kIGRlbGV0aW9u
IG9wZXJhdGlvbnMgYXJlIGludGVybGVhdmVkIHdpdGggdGhlIHVzZSBvZgorLy8gbW9yZSB0aGFu
IG9uZSBpdGVyYXRvciwgcG9pbnRlciwgb3IgcmVmZXJlbmNlIHNpbXVsdGFuZW91c2x5LiBGb3Ig
dGhpcworLy8gcmVhc29uLCBgaW5zZXJ0KClgIGFuZCBgZXJhc2UoKWAgcmV0dXJuIGEgdmFsaWQg
aXRlcmF0b3IgYXQgdGhlIGN1cnJlbnQKKy8vIHBvc2l0aW9uLgorCisjaWZuZGVmIEFCU0xfQ09O
VEFJTkVSX0JUUkVFX1NFVF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9CVFJFRV9TRVRfSF8K
KworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2J0cmVlLmgiICAvLyBJV1lVIHBy
YWdtYTogZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvYnRyZWVfY29u
dGFpbmVyLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisKK25hbWVzcGFjZSBhYnNsIHsKKwor
Ly8gYWJzbDo6YnRyZWVfc2V0PD4KKy8vCisvLyBBbiBgYWJzbDo6YnRyZWVfc2V0PEs+YCBpcyBh
biBvcmRlcmVkIGFzc29jaWF0aXZlIGNvbnRhaW5lciBvZiB1bmlxdWUga2V5CisvLyB2YWx1ZXMg
ZGVzaWduZWQgdG8gYmUgYSBtb3JlIGVmZmljaWVudCByZXBsYWNlbWVudCBmb3IgYHN0ZDo6c2V0
YCAoaW4gbW9zdAorLy8gY2FzZXMpLgorLy8KKy8vIEtleXMgYXJlIHNvcnRlZCB1c2luZyBhbiAo
b3B0aW9uYWwpIGNvbXBhcmlzb24gZnVuY3Rpb24sIHdoaWNoIGRlZmF1bHRzIHRvCisvLyBgc3Rk
OjpsZXNzPEs+YC4KKy8vCisvLyBBbiBgYWJzbDo6YnRyZWVfc2V0PEs+YCB1c2VzIGEgZGVmYXVs
dCBhbGxvY2F0b3Igb2YgYHN0ZDo6YWxsb2NhdG9yPEs+YCB0bworLy8gYWxsb2NhdGUgKGFuZCBk
ZWFsbG9jYXRlKSBub2RlcywgYW5kIGNvbnN0cnVjdCBhbmQgZGVzdHJ1Y3QgdmFsdWVzIHdpdGhp
bgorLy8gdGhvc2Ugbm9kZXMuIFlvdSBtYXkgaW5zdGVhZCBzcGVjaWZ5IGEgY3VzdG9tIGFsbG9j
YXRvciBgQWAgKHdoaWNoIGluIHR1cm4KKy8vIHJlcXVpcmVzIHNwZWNpZnlpbmcgYSBjdXN0b20g
Y29tcGFyYXRvciBgQ2ApIGFzIGluCisvLyBgYWJzbDo6YnRyZWVfc2V0PEssIEMsIEE+YC4KKy8v
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBDb21wYXJlID0gc3RkOjpsZXNzPEtl
eT4sCisgICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxLZXk+PgorY2xh
c3MgYnRyZWVfc2V0CisgICAgOiBwdWJsaWMgY29udGFpbmVyX2ludGVybmFsOjpidHJlZV9zZXRf
Y29udGFpbmVyPAorICAgICAgICAgIGNvbnRhaW5lcl9pbnRlcm5hbDo6YnRyZWU8Y29udGFpbmVy
X2ludGVybmFsOjpzZXRfcGFyYW1zPAorICAgICAgICAgICAgICBLZXksIENvbXBhcmUsIEFsbG9j
LCAvKlRhcmdldE5vZGVTaXplPSovMjU2LAorICAgICAgICAgICAgICAvKk11bHRpPSovZmFsc2U+
Pj4geworICB1c2luZyBCYXNlID0gdHlwZW5hbWUgYnRyZWVfc2V0OjpidHJlZV9zZXRfY29udGFp
bmVyOworCisgcHVibGljOgorICAvLyBDb25zdHJ1Y3RvcnMgYW5kIEFzc2lnbm1lbnQgT3BlcmF0
b3JzCisgIC8vCisgIC8vIEEgYGJ0cmVlX3NldGAgc3VwcG9ydHMgdGhlIHNhbWUgb3ZlcmxvYWQg
c2V0IGFzIGBzdGQ6OnNldGAKKyAgLy8gZm9yIGNvbnN0cnVjdGlvbiBhbmQgYXNzaWdubWVudDoK
KyAgLy8KKyAgLy8gKiBEZWZhdWx0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6YnRy
ZWVfc2V0PHN0ZDo6c3RyaW5nPiBzZXQxOworICAvLworICAvLyAqIEluaXRpYWxpemVyIExpc3Qg
Y29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmc+IHNl
dDIgPQorICAvLyAgICAgICB7eyJodWV5In0sIHsiZGV3ZXkifSwgeyJsb3VpZSJ9LH07CisgIC8v
CisgIC8vICogQ29weSBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIGFic2w6OmJ0cmVlX3NldDxz
dGQ6OnN0cmluZz4gc2V0MyhzZXQyKTsKKyAgLy8KKyAgLy8gKiBDb3B5IGFzc2lnbm1lbnQgb3Bl
cmF0b3IKKyAgLy8KKyAgLy8gIGFic2w6OmJ0cmVlX3NldDxzdGQ6OnN0cmluZz4gc2V0NDsKKyAg
Ly8gIHNldDQgPSBzZXQzOworICAvLworICAvLyAqIE1vdmUgY29uc3RydWN0b3IKKyAgLy8KKyAg
Ly8gICAvLyBNb3ZlIGlzIGd1YXJhbnRlZWQgZWZmaWNpZW50CisgIC8vICAgYWJzbDo6YnRyZWVf
c2V0PHN0ZDo6c3RyaW5nPiBzZXQ1KHN0ZDo6bW92ZShzZXQ0KSk7CisgIC8vCisgIC8vICogTW92
ZSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisgIC8vICAgLy8gTWF5IGJlIGVmZmljaWVudCBp
ZiBhbGxvY2F0b3JzIGFyZSBjb21wYXRpYmxlCisgIC8vICAgYWJzbDo6YnRyZWVfc2V0PHN0ZDo6
c3RyaW5nPiBzZXQ2OworICAvLyAgIHNldDYgPSBzdGQ6Om1vdmUoc2V0NSk7CisgIC8vCisgIC8v
ICogUmFuZ2UgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gdiA9IHsiYSIsICJiIn07CisgIC8vICAgYWJzbDo6YnRyZWVfc2V0PHN0ZDo6c3RyaW5nPiBz
ZXQ3KHYuYmVnaW4oKSwgdi5lbmQoKSk7CisgIGJ0cmVlX3NldCgpIHt9CisgIHVzaW5nIEJhc2U6
OkJhc2U7CisKKyAgLy8gYnRyZWVfc2V0OjpiZWdpbigpCisgIC8vCisgIC8vIFJldHVybnMgYW4g
aXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYGJ0cmVlX3NldGAuCisgIHVzaW5nIEJh
c2U6OmJlZ2luOworCisgIC8vIGJ0cmVlX3NldDo6Y2JlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJu
cyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBidHJlZV9zZXRgLgor
ICB1c2luZyBCYXNlOjpjYmVnaW47CisKKyAgLy8gYnRyZWVfc2V0OjplbmQoKQorICAvLworICAv
LyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBidHJlZV9zZXRgLgorICB1
c2luZyBCYXNlOjplbmQ7CisKKyAgLy8gYnRyZWVfc2V0OjpjZW5kKCkKKyAgLy8KKyAgLy8gUmV0
dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBidHJlZV9zZXRgLgorICB1
c2luZyBCYXNlOjpjZW5kOworCisgIC8vIGJ0cmVlX3NldDo6ZW1wdHkoKQorICAvLworICAvLyBS
ZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBgYnRyZWVfc2V0YCBpcyBlbXB0eS4KKyAgdXNpbmcg
QmFzZTo6ZW1wdHk7CisKKyAgLy8gYnRyZWVfc2V0OjptYXhfc2l6ZSgpCisgIC8vCisgIC8vIFJl
dHVybnMgdGhlIGxhcmdlc3QgdGhlb3JldGljYWwgcG9zc2libGUgbnVtYmVyIG9mIGVsZW1lbnRz
IHdpdGhpbiBhCisgIC8vIGBidHJlZV9zZXRgIHVuZGVyIGN1cnJlbnQgbWVtb3J5IGNvbnN0cmFp
bnRzLiBUaGlzIHZhbHVlIGNhbiBiZSB0aG91Z2h0CisgIC8vIG9mIGFzIHRoZSBsYXJnZXN0IHZh
bHVlIG9mIGBzdGQ6OmRpc3RhbmNlKGJlZ2luKCksIGVuZCgpKWAgZm9yIGEKKyAgLy8gYGJ0cmVl
X3NldDxLZXk+YC4KKyAgdXNpbmcgQmFzZTo6bWF4X3NpemU7CisKKyAgLy8gYnRyZWVfc2V0Ojpz
aXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1cnJlbnRs
eSB3aXRoaW4gdGhlIGBidHJlZV9zZXRgLgorICB1c2luZyBCYXNlOjpzaXplOworCisgIC8vIGJ0
cmVlX3NldDo6Y2xlYXIoKQorICAvLworICAvLyBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRo
ZSBgYnRyZWVfc2V0YC4gSW52YWxpZGF0ZXMgYW55IHJlZmVyZW5jZXMsCisgIC8vIHBvaW50ZXJz
LCBvciBpdGVyYXRvcnMgcmVmZXJyaW5nIHRvIGNvbnRhaW5lZCBlbGVtZW50cy4KKyAgdXNpbmcg
QmFzZTo6Y2xlYXI7CisKKyAgLy8gYnRyZWVfc2V0OjplcmFzZSgpCisgIC8vCisgIC8vIEVyYXNl
cyBlbGVtZW50cyB3aXRoaW4gdGhlIGBidHJlZV9zZXRgLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBi
ZWxvdy4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoaXRlcmF0b3IgcG9zaXRpb24pOgorICAv
LyBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBwb3NpdGlvbik6CisgIC8vCisgIC8vICAg
RXJhc2VzIHRoZSBlbGVtZW50IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGBidHJlZV9zZXRgLCByZXR1
cm5pbmcKKyAgLy8gICB0aGUgaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGVsZW1lbnQgYWZ0ZXIg
dGhlIG9uZSB0aGF0IHdhcyBlcmFzZWQKKyAgLy8gICAob3IgZW5kKCkgaWYgbm9uZSBleGlzdHMp
LgorICAvLworICAvLyBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3Rf
aXRlcmF0b3IgbGFzdCk6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50cyBpbiB0aGUg
b3BlbiBpbnRlcnZhbCBbYGZpcnN0YCwgYGxhc3RgKSwgcmV0dXJuaW5nCisgIC8vICAgdGhlIGl0
ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBlbGVtZW50IGFmdGVyIHRoZSBpbnRlcnZhbCB0aGF0IHdh
cyBlcmFzZWQKKyAgLy8gICAob3IgZW5kKCkgaWYgbm9uZSBleGlzdHMpLgorICAvLworICAvLyB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gc2l6ZV90eXBlIGVyYXNlKGNvbnN0IEsmIGtleSk6CisgIC8v
CisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50IHdpdGggdGhlIG1hdGNoaW5nIGtleSwgaWYgaXQg
ZXhpc3RzLCByZXR1cm5pbmcgdGhlCisgIC8vICAgbnVtYmVyIG9mIGVsZW1lbnRzIGVyYXNlZC4K
KyAgdXNpbmcgQmFzZTo6ZXJhc2U7CisKKyAgLy8gYnRyZWVfc2V0OjppbnNlcnQoKQorICAvLwor
ICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBpbnRvIHRoZSBg
YnRyZWVfc2V0YCwKKyAgLy8gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBu
ZXdseSBpbnNlcnRlZCBlbGVtZW50LCBwcm92aWRlZCB0aGF0CisgIC8vIGFuIGVsZW1lbnQgd2l0
aCB0aGUgZ2l2ZW4ga2V5IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIElmIGFuIGluc2VydGlvbgor
ICAvLyBvY2N1cnMsIGFueSByZWZlcmVuY2VzLCBwb2ludGVycywgb3IgaXRlcmF0b3JzIGFyZSBp
bnZhbGlkYXRlZC4KKyAgLy8gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8v
IHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQoY29uc3QgdmFsdWVfdHlwZSYgdmFsdWUp
OgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSBpbnRvIHRoZSBgYnRyZWVfc2V0YC4gUmV0
dXJucyBhIHBhaXIgY29uc2lzdGluZyBvZiBhbgorICAvLyAgIGl0ZXJhdG9yIHRvIHRoZSBpbnNl
cnRlZCBlbGVtZW50IChvciB0byB0aGUgZWxlbWVudCB0aGF0IHByZXZlbnRlZCB0aGUKKyAgLy8g
ICBpbnNlcnRpb24pIGFuZCBhIGJvb2wgZGVub3Rpbmcgd2hldGhlciB0aGUgaW5zZXJ0aW9uIHRv
b2sgcGxhY2UuCisgIC8vCisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQodmFs
dWVfdHlwZSYmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgbW92ZWFibGUgdmFsdWUg
aW50byB0aGUgYGJ0cmVlX3NldGAuIFJldHVybnMgYSBwYWlyCisgIC8vICAgY29uc2lzdGluZyBv
ZiBhbiBpdGVyYXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhlIGVsZW1lbnQg
dGhhdAorICAvLyAgIHByZXZlbnRlZCB0aGUgaW5zZXJ0aW9uKSBhbmQgYSBib29sIGRlbm90aW5n
IHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29rCisgIC8vICAgcGxhY2UuCisgIC8vCisgIC8vIGl0
ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBjb25zdCB2YWx1ZV90eXBlJiB2YWx1
ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCB2YWx1ZV90eXBl
JiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0
aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hl
cmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8g
dGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudCwgb3IgdG8gdGhlIGV4aXN0aW5nIGVsZW1lbnQg
dGhhdCBwcmV2ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uLgorICAvLworICAvLyB2b2lkIGlu
c2VydChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAv
LyAgIEluc2VydHMgYSByYW5nZSBvZiB2YWx1ZXMgW2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisg
IC8vIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGlsaXN0KToK
KyAgLy8KKyAgLy8gICBJbnNlcnRzIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIGluaXRpYWxpemVy
IGxpc3QgYGlsaXN0YC4KKyAgdXNpbmcgQmFzZTo6aW5zZXJ0OworCisgIC8vIGJ0cmVlX3NldDo6
ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVk
IHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBidHJl
ZV9zZXRgLCBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8v
IGFscmVhZHkgZXhpc3RzLgorICAvLworICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0
ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8ga2V5
IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVs
ZW1lbnQgd2lsbCBiZQorICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuCisgIC8vCisgIC8vIElm
IGFuIGluc2VydGlvbiBvY2N1cnMsIGFueSByZWZlcmVuY2VzLCBwb2ludGVycywgb3IgaXRlcmF0
b3JzIGFyZQorICAvLyBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZTsKKworICAv
LyBidHJlZV9zZXQ6OmVtcGxhY2VfaGludCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVu
dCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAv
LyB3aXRoaW4gdGhlIGBidHJlZV9zZXRgLCB1c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFz
IGEgbm9uLWJpbmRpbmcKKyAgLy8gc3VnZ2VzdGlvbiBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGlu
c2VydGlvbiBzZWFyY2gsIGFuZCBvbmx5IGluc2VydHMKKyAgLy8gcHJvdmlkZWQgdGhhdCBubyBl
bGVtZW50IHdpdGggdGhlIGdpdmVuIGtleSBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8gVGhl
IGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBl
bGVtZW50IHdpdGggdGhlCisgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNl
IHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVkIGlt
bWVkaWF0ZWx5LgorICAvLworICAvLyBJZiBhbiBpbnNlcnRpb24gb2NjdXJzLCBhbnkgcmVmZXJl
bmNlcywgcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyBhcmUKKyAgLy8gaW52YWxpZGF0ZWQuCisgIHVz
aW5nIEJhc2U6OmVtcGxhY2VfaGludDsKKworICAvLyBidHJlZV9zZXQ6OmV4dHJhY3QoKQorICAv
LworICAvLyBFeHRyYWN0cyB0aGUgaW5kaWNhdGVkIGVsZW1lbnQsIGVyYXNpbmcgaXQgaW4gdGhl
IHByb2Nlc3MsIGFuZCByZXR1cm5zIGl0CisgIC8vIGFzIGEgQysrMTctY29tcGF0aWJsZSBub2Rl
IGhhbmRsZS4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIG5vZGVfdHlw
ZSBleHRyYWN0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8KKyAgLy8gICBFeHRyYWN0
cyB0aGUgZWxlbWVudCBhdCB0aGUgaW5kaWNhdGVkIHBvc2l0aW9uIGFuZCByZXR1cm5zIGEgbm9k
ZSBoYW5kbGUKKyAgLy8gICBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4KKyAgLy8KKyAgLy8g
dGVtcGxhdGUgPHR5cGVuYW1lIEs+IG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0IEsmIHgpOgorICAv
LworICAvLyAgIEV4dHJhY3RzIHRoZSBlbGVtZW50IHdpdGggdGhlIGtleSBtYXRjaGluZyB0aGUg
cGFzc2VkIGtleSB2YWx1ZSBhbmQKKyAgLy8gICByZXR1cm5zIGEgbm9kZSBoYW5kbGUgb3duaW5n
IHRoYXQgZXh0cmFjdGVkIGRhdGEuIElmIHRoZSBgYnRyZWVfc2V0YAorICAvLyAgIGRvZXMgbm90
IGNvbnRhaW4gYW4gZWxlbWVudCB3aXRoIGEgbWF0Y2hpbmcga2V5LCB0aGlzIGZ1bmN0aW9uIHJl
dHVybnMgYW4KKyAgLy8gICBlbXB0eSBub2RlIGhhbmRsZS4KKyAgLy8KKyAgLy8gTk9URTogSW4g
dGhpcyBjb250ZXh0LCBgbm9kZV90eXBlYCByZWZlcnMgdG8gdGhlIEMrKzE3IGNvbmNlcHQgb2Yg
YQorICAvLyBtb3ZlLW9ubHkgdHlwZSB0aGF0IG93bnMgYW5kIHByb3ZpZGVzIGFjY2VzcyB0byB0
aGUgZWxlbWVudHMgaW4gYXNzb2NpYXRpdmUKKyAgLy8gY29udGFpbmVycyAoaHR0cHM6Ly9lbi5j
cHByZWZlcmVuY2UuY29tL3cvY3BwL2NvbnRhaW5lci9ub2RlX2hhbmRsZSkuCisgIC8vIEl0IGRv
ZXMgTk9UIHJlZmVyIHRvIHRoZSBkYXRhIGxheW91dCBvZiB0aGUgdW5kZXJseWluZyBidHJlZS4K
KyAgdXNpbmcgQmFzZTo6ZXh0cmFjdDsKKworICAvLyBidHJlZV9zZXQ6Om1lcmdlKCkKKyAgLy8K
KyAgLy8gRXh0cmFjdHMgZWxlbWVudHMgZnJvbSBhIGdpdmVuIGBzb3VyY2VgIGJ0cmVlX3NldCBp
bnRvIHRoaXMKKyAgLy8gYGJ0cmVlX3NldGAuIElmIHRoZSBkZXN0aW5hdGlvbiBgYnRyZWVfc2V0
YCBhbHJlYWR5IGNvbnRhaW5zIGFuCisgIC8vIGVsZW1lbnQgd2l0aCBhbiBlcXVpdmFsZW50IGtl
eSwgdGhhdCBlbGVtZW50IGlzIG5vdCBleHRyYWN0ZWQuCisgIHVzaW5nIEJhc2U6Om1lcmdlOwor
CisgIC8vIGJ0cmVlX3NldDo6c3dhcChidHJlZV9zZXQmIG90aGVyKQorICAvLworICAvLyBFeGNo
YW5nZXMgdGhlIGNvbnRlbnRzIG9mIHRoaXMgYGJ0cmVlX3NldGAgd2l0aCB0aG9zZSBvZiB0aGUg
YG90aGVyYAorICAvLyBidHJlZV9zZXQsIGF2b2lkaW5nIGludm9jYXRpb24gb2YgYW55IG1vdmUs
IGNvcHksIG9yIHN3YXAgb3BlcmF0aW9ucyBvbgorICAvLyBpbmRpdmlkdWFsIGVsZW1lbnRzLgor
ICAvLworICAvLyBBbGwgaXRlcmF0b3JzIGFuZCByZWZlcmVuY2VzIG9uIHRoZSBgYnRyZWVfc2V0
YCByZW1haW4gdmFsaWQsIGV4Y2VwdGluZworICAvLyBmb3IgdGhlIHBhc3QtdGhlLWVuZCBpdGVy
YXRvciwgd2hpY2ggaXMgaW52YWxpZGF0ZWQuCisgIHVzaW5nIEJhc2U6OnN3YXA7CisKKyAgLy8g
YnRyZWVfc2V0Ojpjb250YWlucygpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBi
b29sIGNvbnRhaW5zKGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIERldGVybWluZXMg
d2hldGhlciBhbiBlbGVtZW50IGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAgZXhp
c3RzCisgIC8vIHdpdGhpbiB0aGUgYGJ0cmVlX3NldGAsIHJldHVybmluZyBgdHJ1ZWAgaWYgc28g
b3IgYGZhbHNlYCBvdGhlcndpc2UuCisgIC8vCisgIC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMg
bG9va3VwLCBwcm92aWRlZCB0aGF0IHRoZSBzZXQgaXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRp
YmxlIGhldGVyb2dlbmVvdXMgY29tcGFyYXRvci4KKyAgdXNpbmcgQmFzZTo6Y29udGFpbnM7CisK
KyAgLy8gYnRyZWVfc2V0Ojpjb3VudCgpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBL
PiBzaXplX3R5cGUgY291bnQoY29uc3QgSyYga2V5KSBjb25zdDoKKyAgLy8KKyAgLy8gUmV0dXJu
cyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtl
eWAgd2l0aGluCisgIC8vIHRoZSBgYnRyZWVfc2V0YC4gTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24g
d2lsbCByZXR1cm4gZWl0aGVyIGAxYCBvciBgMGAKKyAgLy8gc2luY2UgZHVwbGljYXRlIGVsZW1l
bnRzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gYSBgYnRyZWVfc2V0YC4KKyAgLy8KKyAgLy8gU3Vw
cG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRoYXQgdGhlIHNldCBpcyBwcm92
aWRlZCBhCisgIC8vIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBjb21wYXJhdG9yLgorICB1c2lu
ZyBCYXNlOjpjb3VudDsKKworICAvLyBidHJlZV9zZXQ6OmVxdWFsX3JhbmdlKCkKKyAgLy8KKyAg
Ly8gUmV0dXJucyBhIGNsb3NlZCByYW5nZSBbZmlyc3QsIGxhc3RdLCBkZWZpbmVkIGJ5IGEgYHN0
ZDo6cGFpcmAgb2YgdHdvCisgIC8vIGl0ZXJhdG9ycywgY29udGFpbmluZyBhbGwgZWxlbWVudHMg
d2l0aCB0aGUgcGFzc2VkIGtleSBpbiB0aGUKKyAgLy8gYGJ0cmVlX3NldGAuCisgIHVzaW5nIEJh
c2U6OmVxdWFsX3JhbmdlOworCisgIC8vIGJ0cmVlX3NldDo6ZmluZCgpCisgIC8vCisgIC8vIHRl
bXBsYXRlIDx0eXBlbmFtZSBLPiBpdGVyYXRvciBmaW5kKGNvbnN0IEsmIGtleSk6CisgIC8vIHRl
bXBsYXRlIDx0eXBlbmFtZSBLPiBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IEsmIGtleSkgY29u
c3Q6CisgIC8vCisgIC8vIEZpbmRzIGFuIGVsZW1lbnQgd2l0aCB0aGUgcGFzc2VkIGBrZXlgIHdp
dGhpbiB0aGUgYGJ0cmVlX3NldGAuCisgIC8vCisgIC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMg
bG9va3VwLCBwcm92aWRlZCB0aGF0IHRoZSBzZXQgaXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRp
YmxlIGhldGVyb2dlbmVvdXMgY29tcGFyYXRvci4KKyAgdXNpbmcgQmFzZTo6ZmluZDsKKworICAv
LyBidHJlZV9zZXQ6OmdldF9hbGxvY2F0b3IoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBhbGxv
Y2F0b3IgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgYGJ0cmVlX3NldGAuCisgIHVzaW5n
IEJhc2U6OmdldF9hbGxvY2F0b3I7CisKKyAgLy8gYnRyZWVfc2V0OjprZXlfY29tcCgpOworICAv
LworICAvLyBSZXR1cm5zIHRoZSBrZXkgY29tcGFyYXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBg
YnRyZWVfc2V0YC4KKyAgdXNpbmcgQmFzZTo6a2V5X2NvbXA7CisKKyAgLy8gYnRyZWVfc2V0Ojp2
YWx1ZV9jb21wKCk7CisgIC8vCisgIC8vIFJldHVybnMgdGhlIHZhbHVlIGNvbXBhcmF0b3IgYXNz
b2NpYXRlZCB3aXRoIHRoaXMgYGJ0cmVlX3NldGAuIFRoZSBrZXlzIHRvCisgIC8vIHNvcnQgdGhl
IGVsZW1lbnRzIGFyZSB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMsIHRoZXJlZm9yZSBgdmFsdWVfY29t
cGAgYW5kIGl0cworICAvLyBzaWJsaW5nIG1lbWJlciBmdW5jdGlvbiBga2V5X2NvbXBgIGFyZSBl
cXVpdmFsZW50LgorICB1c2luZyBCYXNlOjp2YWx1ZV9jb21wOworfTsKKworLy8gYWJzbDo6c3dh
cChhYnNsOjpidHJlZV9zZXQ8PiwgYWJzbDo6YnRyZWVfc2V0PD4pCisvLworLy8gU3dhcHMgdGhl
IGNvbnRlbnRzIG9mIHR3byBgYWJzbDo6YnRyZWVfc2V0YCBjb250YWluZXJzLgordGVtcGxhdGUg
PHR5cGVuYW1lIEssIHR5cGVuYW1lIEMsIHR5cGVuYW1lIEE+Cit2b2lkIHN3YXAoYnRyZWVfc2V0
PEssIEMsIEE+ICZ4LCBidHJlZV9zZXQ8SywgQywgQT4gJnkpIHsKKyAgcmV0dXJuIHguc3dhcCh5
KTsKK30KKworLy8gYWJzbDo6YnRyZWVfbXVsdGlzZXQ8PgorLy8KKy8vIEFuIGBhYnNsOjpidHJl
ZV9tdWx0aXNldDxLPmAgaXMgYW4gb3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgb2YKKy8v
IGtleXMgYW5kIGFzc29jaWF0ZWQgdmFsdWVzIGRlc2lnbmVkIHRvIGJlIGEgbW9yZSBlZmZpY2ll
bnQgcmVwbGFjZW1lbnQKKy8vIGZvciBgc3RkOjptdWx0aXNldGAgKGluIG1vc3QgY2FzZXMpLiBV
bmxpa2UgYGFic2w6OmJ0cmVlX3NldGAsIGEgQi10cmVlCisvLyBtdWx0aXNldCBhbGxvd3MgZXF1
aXZhbGVudCBlbGVtZW50cy4KKy8vCisvLyBLZXlzIGFyZSBzb3J0ZWQgdXNpbmcgYW4gKG9wdGlv
bmFsKSBjb21wYXJpc29uIGZ1bmN0aW9uLCB3aGljaCBkZWZhdWx0cyB0bworLy8gYHN0ZDo6bGVz
czxLPmAuCisvLworLy8gQW4gYGFic2w6OmJ0cmVlX211bHRpc2V0PEs+YCB1c2VzIGEgZGVmYXVs
dCBhbGxvY2F0b3Igb2YgYHN0ZDo6YWxsb2NhdG9yPEs+YAorLy8gdG8gYWxsb2NhdGUgKGFuZCBk
ZWFsbG9jYXRlKSBub2RlcywgYW5kIGNvbnN0cnVjdCBhbmQgZGVzdHJ1Y3QgdmFsdWVzIHdpdGhp
bgorLy8gdGhvc2Ugbm9kZXMuIFlvdSBtYXkgaW5zdGVhZCBzcGVjaWZ5IGEgY3VzdG9tIGFsbG9j
YXRvciBgQWAgKHdoaWNoIGluIHR1cm4KKy8vIHJlcXVpcmVzIHNwZWNpZnlpbmcgYSBjdXN0b20g
Y29tcGFyYXRvciBgQ2ApIGFzIGluCisvLyBgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8SywgQywgQT5g
LgorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIENvbXBhcmUgPSBzdGQ6Omxl
c3M8S2V5PiwKKyAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPEtleT4+
CitjbGFzcyBidHJlZV9tdWx0aXNldAorICAgIDogcHVibGljIGNvbnRhaW5lcl9pbnRlcm5hbDo6
YnRyZWVfbXVsdGlzZXRfY29udGFpbmVyPAorICAgICAgICAgIGNvbnRhaW5lcl9pbnRlcm5hbDo6
YnRyZWU8Y29udGFpbmVyX2ludGVybmFsOjpzZXRfcGFyYW1zPAorICAgICAgICAgICAgICBLZXks
IENvbXBhcmUsIEFsbG9jLCAvKlRhcmdldE5vZGVTaXplPSovMjU2LAorICAgICAgICAgICAgICAv
Kk11bHRpPSovdHJ1ZT4+PiB7CisgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBidHJlZV9tdWx0aXNl
dDo6YnRyZWVfbXVsdGlzZXRfY29udGFpbmVyOworCisgcHVibGljOgorICAvLyBDb25zdHJ1Y3Rv
cnMgYW5kIEFzc2lnbm1lbnQgT3BlcmF0b3JzCisgIC8vCisgIC8vIEEgYGJ0cmVlX211bHRpc2V0
YCBzdXBwb3J0cyB0aGUgc2FtZSBvdmVybG9hZCBzZXQgYXMgYHN0ZDo6c2V0YAorICAvLyBmb3Ig
Y29uc3RydWN0aW9uIGFuZCBhc3NpZ25tZW50OgorICAvLworICAvLyAqIERlZmF1bHQgY29uc3Ry
dWN0b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpidHJlZV9tdWx0aXNldDxzdGQ6OnN0cmluZz4gc2V0
MTsKKyAgLy8KKyAgLy8gKiBJbml0aWFsaXplciBMaXN0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8v
ICAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8c3RkOjpzdHJpbmc+IHNldDIgPQorICAvLyAgICAgICB7
eyJodWV5In0sIHsiZGV3ZXkifSwgeyJsb3VpZSJ9LH07CisgIC8vCisgIC8vICogQ29weSBjb25z
dHJ1Y3RvcgorICAvLworICAvLyAgIGFic2w6OmJ0cmVlX211bHRpc2V0PHN0ZDo6c3RyaW5nPiBz
ZXQzKHNldDIpOworICAvLworICAvLyAqIENvcHkgYXNzaWdubWVudCBvcGVyYXRvcgorICAvLwor
ICAvLyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8c3RkOjpzdHJpbmc+IHNldDQ7CisgIC8vICBzZXQ0
ID0gc2V0MzsKKyAgLy8KKyAgLy8gKiBNb3ZlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgLy8g
TW92ZSBpcyBndWFyYW50ZWVkIGVmZmljaWVudAorICAvLyAgIGFic2w6OmJ0cmVlX211bHRpc2V0
PHN0ZDo6c3RyaW5nPiBzZXQ1KHN0ZDo6bW92ZShzZXQ0KSk7CisgIC8vCisgIC8vICogTW92ZSBh
c3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisgIC8vICAgLy8gTWF5IGJlIGVmZmljaWVudCBpZiBh
bGxvY2F0b3JzIGFyZSBjb21wYXRpYmxlCisgIC8vICAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8c3Rk
OjpzdHJpbmc+IHNldDY7CisgIC8vICAgc2V0NiA9IHN0ZDo6bW92ZShzZXQ1KTsKKyAgLy8KKyAg
Ly8gKiBSYW5nZSBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiB2ID0geyJhIiwgImIifTsKKyAgLy8gICBhYnNsOjpidHJlZV9tdWx0aXNldDxzdGQ6OnN0
cmluZz4gc2V0Nyh2LmJlZ2luKCksIHYuZW5kKCkpOworICBidHJlZV9tdWx0aXNldCgpIHt9Cisg
IHVzaW5nIEJhc2U6OkJhc2U7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmJlZ2luKCkKKyAgLy8K
KyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgYnRyZWVf
bXVsdGlzZXRgLgorICB1c2luZyBCYXNlOjpiZWdpbjsKKworICAvLyBidHJlZV9tdWx0aXNldDo6
Y2JlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGBidHJlZV9tdWx0aXNldGAuCisgIHVzaW5nIEJhc2U6OmNiZWdpbjsKKwor
ICAvLyBidHJlZV9tdWx0aXNldDo6ZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRv
ciB0byB0aGUgZW5kIG9mIHRoZSBgYnRyZWVfbXVsdGlzZXRgLgorICB1c2luZyBCYXNlOjplbmQ7
CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmNlbmQoKQorICAvLworICAvLyBSZXR1cm5zIGEgY29u
c3QgaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgYGJ0cmVlX211bHRpc2V0YC4KKyAgdXNpbmcg
QmFzZTo6Y2VuZDsKKworICAvLyBidHJlZV9tdWx0aXNldDo6ZW1wdHkoKQorICAvLworICAvLyBS
ZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBgYnRyZWVfbXVsdGlzZXRgIGlzIGVtcHR5LgorICB1
c2luZyBCYXNlOjplbXB0eTsKKworICAvLyBidHJlZV9tdWx0aXNldDo6bWF4X3NpemUoKQorICAv
LworICAvLyBSZXR1cm5zIHRoZSBsYXJnZXN0IHRoZW9yZXRpY2FsIHBvc3NpYmxlIG51bWJlciBv
ZiBlbGVtZW50cyB3aXRoaW4gYQorICAvLyBgYnRyZWVfbXVsdGlzZXRgIHVuZGVyIGN1cnJlbnQg
bWVtb3J5IGNvbnN0cmFpbnRzLiBUaGlzIHZhbHVlIGNhbiBiZQorICAvLyB0aG91Z2h0IG9mIGFz
IHRoZSBsYXJnZXN0IHZhbHVlIG9mIGBzdGQ6OmRpc3RhbmNlKGJlZ2luKCksIGVuZCgpKWAgZm9y
IGEKKyAgLy8gYGJ0cmVlX211bHRpc2V0PEtleT5gLgorICB1c2luZyBCYXNlOjptYXhfc2l6ZTsK
KworICAvLyBidHJlZV9tdWx0aXNldDo6c2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51
bWJlciBvZiBlbGVtZW50cyBjdXJyZW50bHkgd2l0aGluIHRoZSBgYnRyZWVfbXVsdGlzZXRgLgor
ICB1c2luZyBCYXNlOjpzaXplOworCisgIC8vIGJ0cmVlX211bHRpc2V0OjpjbGVhcigpCisgIC8v
CisgIC8vIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGBidHJlZV9tdWx0aXNldGAuIElu
dmFsaWRhdGVzIGFueSByZWZlcmVuY2VzLAorICAvLyBwb2ludGVycywgb3IgaXRlcmF0b3JzIHJl
ZmVycmluZyB0byBjb250YWluZWQgZWxlbWVudHMuCisgIHVzaW5nIEJhc2U6OmNsZWFyOworCisg
IC8vIGJ0cmVlX211bHRpc2V0OjplcmFzZSgpCisgIC8vCisgIC8vIEVyYXNlcyBlbGVtZW50cyB3
aXRoaW4gdGhlIGBidHJlZV9tdWx0aXNldGAuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93Lgor
ICAvLworICAvLyBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBwb3NpdGlvbik6CisgIC8vIGl0ZXJh
dG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8KKyAgLy8gICBFcmFzZXMg
dGhlIGVsZW1lbnQgYXQgYHBvc2l0aW9uYCBvZiB0aGUgYGJ0cmVlX211bHRpc2V0YCwgcmV0dXJu
aW5nCisgIC8vICAgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBlbGVtZW50IGFmdGVyIHRo
ZSBvbmUgdGhhdCB3YXMgZXJhc2VkCisgIC8vICAgKG9yIGVuZCgpIGlmIG5vbmUgZXhpc3RzKS4K
KyAgLy8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0
ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudHMgaW4gdGhlIG9w
ZW4gaW50ZXJ2YWwgW2BmaXJzdGAsIGBsYXN0YCksIHJldHVybmluZworICAvLyAgIHRoZSBpdGVy
YXRvciBwb2ludGluZyB0byB0aGUgZWxlbWVudCBhZnRlciB0aGUgaW50ZXJ2YWwgdGhhdCB3YXMg
ZXJhc2VkCisgIC8vICAgKG9yIGVuZCgpIGlmIG5vbmUgZXhpc3RzKS4KKyAgLy8KKyAgLy8gdGVt
cGxhdGUgPHR5cGVuYW1lIEs+IHNpemVfdHlwZSBlcmFzZShjb25zdCBLJiBrZXkpOgorICAvLwor
ICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudHMgbWF0Y2hpbmcgdGhlIGtleSwgaWYgYW55IGV4aXN0
LCByZXR1cm5pbmcgdGhlCisgIC8vICAgbnVtYmVyIG9mIGVsZW1lbnRzIGVyYXNlZC4KKyAgdXNp
bmcgQmFzZTo6ZXJhc2U7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6Omluc2VydCgpCisgIC8vCisg
IC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGludG8gdGhlIGBi
dHJlZV9tdWx0aXNldGAsCisgIC8vIHJldHVybmluZyBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0
aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudC4KKyAgLy8gQW55IHJlZmVyZW5jZXMsIHBvaW50ZXJz
LCBvciBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLiAgT3ZlcmxvYWRzIGFyZQorICAvLyBsaXN0
ZWQgYmVsb3cuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdCB2YWx1ZV90eXBlJiB2
YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlIGludG8gdGhlIGBidHJlZV9tdWx0
aXNldGAsIHJldHVybmluZyBhbiBpdGVyYXRvciB0byB0aGUKKyAgLy8gICBpbnNlcnRlZCBlbGVt
ZW50LgorICAvLworICAvLyBpdGVyYXRvciBpbnNlcnQodmFsdWVfdHlwZSYmIHZhbHVlKToKKyAg
Ly8KKyAgLy8gICBJbnNlcnRzIGEgbW92ZWFibGUgdmFsdWUgaW50byB0aGUgYGJ0cmVlX211bHRp
c2V0YCwgcmV0dXJuaW5nIGFuIGl0ZXJhdG9yCisgIC8vICAgdG8gdGhlIGluc2VydGVkIGVsZW1l
bnQuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBjb25z
dCB2YWx1ZV90eXBlJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRv
ciBoaW50LCB2YWx1ZV90eXBlJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1
ZSwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rp
b24KKyAgLy8gICBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2guIFJldHVy
bnMgYW4gaXRlcmF0b3IgdG8gdGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudC4KKyAgLy8KKyAg
Ly8gdm9pZCBpbnNlcnQoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KToK
KyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgcmFuZ2Ugb2YgdmFsdWVzIFtgZmlyc3RgLCBgbGFzdGAp
LgorICAvLworICAvLyB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW5pdF90eXBl
PiBpbGlzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyB0aGUgZWxlbWVudHMgd2l0aGluIHRoZSBp
bml0aWFsaXplciBsaXN0IGBpbGlzdGAuCisgIHVzaW5nIEJhc2U6Omluc2VydDsKKworICAvLyBi
dHJlZV9tdWx0aXNldDo6ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBv
ZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3
aXRoaW4gdGhlIGBidHJlZV9tdWx0aXNldGAuIEFueSByZWZlcmVuY2VzLCBwb2ludGVycywgb3Ig
aXRlcmF0b3JzIGFyZQorICAvLyBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZTsK
KworICAvLyBidHJlZV9tdWx0aXNldDo6ZW1wbGFjZV9oaW50KCkKKyAgLy8KKyAgLy8gSW5zZXJ0
cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0aW5nIGl0IGlu
LXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYGJ0cmVlX211bHRpc2V0YCwgdXNpbmcgdGhlIHBvc2l0
aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nCisgIC8vIHN1Z2dlc3Rpb24gZm9yIHdoZXJl
IHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLgorICAvLworICAvLyBBbnkgcmVmZXJlbmNl
cywgcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIHVzaW5nIEJhc2U6
OmVtcGxhY2VfaGludDsKKworICAvLyBidHJlZV9tdWx0aXNldDo6ZXh0cmFjdCgpCisgIC8vCisg
IC8vIEV4dHJhY3RzIHRoZSBpbmRpY2F0ZWQgZWxlbWVudCwgZXJhc2luZyBpdCBpbiB0aGUgcHJv
Y2VzcywgYW5kIHJldHVybnMgaXQKKyAgLy8gYXMgYSBDKysxNy1jb21wYXRpYmxlIG5vZGUgaGFu
ZGxlLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4
dHJhY3QoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRo
ZSBlbGVtZW50IGF0IHRoZSBpbmRpY2F0ZWQgcG9zaXRpb24gYW5kIHJldHVybnMgYSBub2RlIGhh
bmRsZQorICAvLyAgIG93bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLgorICAvLworICAvLyB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSz4gbm9kZV90eXBlIGV4dHJhY3QoY29uc3QgSyYgeCk6CisgIC8vCisg
IC8vICAgRXh0cmFjdHMgdGhlIGVsZW1lbnQgd2l0aCB0aGUga2V5IG1hdGNoaW5nIHRoZSBwYXNz
ZWQga2V5IHZhbHVlIGFuZAorICAvLyAgIHJldHVybnMgYSBub2RlIGhhbmRsZSBvd25pbmcgdGhh
dCBleHRyYWN0ZWQgZGF0YS4gSWYgdGhlIGBidHJlZV9tdWx0aXNldGAKKyAgLy8gICBkb2VzIG5v
dCBjb250YWluIGFuIGVsZW1lbnQgd2l0aCBhIG1hdGNoaW5nIGtleSwgdGhpcyBmdW5jdGlvbiBy
ZXR1cm5zIGFuCisgIC8vICAgZW1wdHkgbm9kZSBoYW5kbGUuCisgIC8vCisgIC8vIE5PVEU6IElu
IHRoaXMgY29udGV4dCwgYG5vZGVfdHlwZWAgcmVmZXJzIHRvIHRoZSBDKysxNyBjb25jZXB0IG9m
IGEKKyAgLy8gbW92ZS1vbmx5IHR5cGUgdGhhdCBvd25zIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8g
dGhlIGVsZW1lbnRzIGluIGFzc29jaWF0aXZlCisgIC8vIGNvbnRhaW5lcnMgKGh0dHBzOi8vZW4u
Y3BwcmVmZXJlbmNlLmNvbS93L2NwcC9jb250YWluZXIvbm9kZV9oYW5kbGUpLgorICAvLyBJdCBk
b2VzIE5PVCByZWZlciB0byB0aGUgZGF0YSBsYXlvdXQgb2YgdGhlIHVuZGVybHlpbmcgYnRyZWUu
CisgIHVzaW5nIEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6Om1lcmdlKCkK
KyAgLy8KKyAgLy8gRXh0cmFjdHMgZWxlbWVudHMgZnJvbSBhIGdpdmVuIGBzb3VyY2VgIGJ0cmVl
X211bHRpc2V0IGludG8gdGhpcworICAvLyBgYnRyZWVfbXVsdGlzZXRgLiBJZiB0aGUgZGVzdGlu
YXRpb24gYGJ0cmVlX211bHRpc2V0YCBhbHJlYWR5IGNvbnRhaW5zIGFuCisgIC8vIGVsZW1lbnQg
d2l0aCBhbiBlcXVpdmFsZW50IGtleSwgdGhhdCBlbGVtZW50IGlzIG5vdCBleHRyYWN0ZWQuCisg
IHVzaW5nIEJhc2U6Om1lcmdlOworCisgIC8vIGJ0cmVlX211bHRpc2V0Ojpzd2FwKGJ0cmVlX211
bHRpc2V0JiBvdGhlcikKKyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiB0aGlz
IGBidHJlZV9tdWx0aXNldGAgd2l0aCB0aG9zZSBvZiB0aGUgYG90aGVyYAorICAvLyBidHJlZV9t
dWx0aXNldCwgYXZvaWRpbmcgaW52b2NhdGlvbiBvZiBhbnkgbW92ZSwgY29weSwgb3Igc3dhcCBv
cGVyYXRpb25zCisgIC8vIG9uIGluZGl2aWR1YWwgZWxlbWVudHMuCisgIC8vCisgIC8vIEFsbCBp
dGVyYXRvcnMgYW5kIHJlZmVyZW5jZXMgb24gdGhlIGBidHJlZV9tdWx0aXNldGAgcmVtYWluIHZh
bGlkLAorICAvLyBleGNlcHRpbmcgZm9yIHRoZSBwYXN0LXRoZS1lbmQgaXRlcmF0b3IsIHdoaWNo
IGlzIGludmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjpzd2FwOworCisgIC8vIGJ0cmVlX211bHRp
c2V0Ojpjb250YWlucygpCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBib29sIGNv
bnRhaW5zKGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIERldGVybWluZXMgd2hldGhl
ciBhbiBlbGVtZW50IGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAgZXhpc3RzCisg
IC8vIHdpdGhpbiB0aGUgYGJ0cmVlX211bHRpc2V0YCwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBv
ciBgZmFsc2VgIG90aGVyd2lzZS4KKyAgLy8KKyAgLy8gU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBs
b29rdXAsIHByb3ZpZGVkIHRoYXQgdGhlIHNldCBpcyBwcm92aWRlZCBhCisgIC8vIGNvbXBhdGli
bGUgaGV0ZXJvZ2VuZW91cyBjb21wYXJhdG9yLgorICB1c2luZyBCYXNlOjpjb250YWluczsKKwor
ICAvLyBidHJlZV9tdWx0aXNldDo6Y291bnQoKQorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSz4gc2l6ZV90eXBlIGNvdW50KGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIFJl
dHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVu
IGBrZXlgIHdpdGhpbgorICAvLyB0aGUgYGJ0cmVlX211bHRpc2V0YC4KKyAgLy8KKyAgLy8gU3Vw
cG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRoYXQgdGhlIHNldCBpcyBwcm92
aWRlZCBhCisgIC8vIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBjb21wYXJhdG9yLgorICB1c2lu
ZyBCYXNlOjpjb3VudDsKKworICAvLyBidHJlZV9tdWx0aXNldDo6ZXF1YWxfcmFuZ2UoKQorICAv
LworICAvLyBSZXR1cm5zIGEgY2xvc2VkIHJhbmdlIFtmaXJzdCwgbGFzdF0sIGRlZmluZWQgYnkg
YSBgc3RkOjpwYWlyYCBvZiB0d28KKyAgLy8gaXRlcmF0b3JzLCBjb250YWluaW5nIGFsbCBlbGVt
ZW50cyB3aXRoIHRoZSBwYXNzZWQga2V5IGluIHRoZQorICAvLyBgYnRyZWVfbXVsdGlzZXRgLgor
ICB1c2luZyBCYXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBidHJlZV9tdWx0aXNldDo6ZmluZCgp
CisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBpdGVyYXRvciBmaW5kKGNvbnN0IEsm
IGtleSk6CisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBjb25zdF9pdGVyYXRvciBmaW5kKGNv
bnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIEZpbmRzIGFuIGVsZW1lbnQgd2l0aCB0aGUg
cGFzc2VkIGBrZXlgIHdpdGhpbiB0aGUgYGJ0cmVlX211bHRpc2V0YC4KKyAgLy8KKyAgLy8gU3Vw
cG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHByb3ZpZGVkIHRoYXQgdGhlIHNldCBpcyBwcm92
aWRlZCBhCisgIC8vIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cyBjb21wYXJhdG9yLgorICB1c2lu
ZyBCYXNlOjpmaW5kOworCisgIC8vIGJ0cmVlX211bHRpc2V0OjpnZXRfYWxsb2NhdG9yKCkKKyAg
Ly8KKyAgLy8gUmV0dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0
aGlzIGBidHJlZV9tdWx0aXNldGAuCisgIHVzaW5nIEJhc2U6OmdldF9hbGxvY2F0b3I7CisKKyAg
Ly8gYnRyZWVfbXVsdGlzZXQ6OmtleV9jb21wKCk7CisgIC8vCisgIC8vIFJldHVybnMgdGhlIGtl
eSBjb21wYXJhdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJlZV9tdWx0aXNldGAuCisgIHVz
aW5nIEJhc2U6OmtleV9jb21wOworCisgIC8vIGJ0cmVlX211bHRpc2V0Ojp2YWx1ZV9jb21wKCk7
CisgIC8vCisgIC8vIFJldHVybnMgdGhlIHZhbHVlIGNvbXBhcmF0b3IgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgYGJ0cmVlX211bHRpc2V0YC4gVGhlCisgIC8vIGtleXMgdG8gc29ydCB0aGUgZWxlbWVu
dHMgYXJlIHRoZSB2YWx1ZXMgdGhlbXNlbHZlcywgdGhlcmVmb3JlIGB2YWx1ZV9jb21wYAorICAv
LyBhbmQgaXRzIHNpYmxpbmcgbWVtYmVyIGZ1bmN0aW9uIGBrZXlfY29tcGAgYXJlIGVxdWl2YWxl
bnQuCisgIHVzaW5nIEJhc2U6OnZhbHVlX2NvbXA7Cit9OworCisvLyBhYnNsOjpzd2FwKGFic2w6
OmJ0cmVlX211bHRpc2V0PD4sIGFic2w6OmJ0cmVlX211bHRpc2V0PD4pCisvLworLy8gU3dhcHMg
dGhlIGNvbnRlbnRzIG9mIHR3byBgYWJzbDo6YnRyZWVfbXVsdGlzZXRgIGNvbnRhaW5lcnMuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgQywgdHlwZW5hbWUgQT4KK3ZvaWQgc3dhcChi
dHJlZV9tdWx0aXNldDxLLCBDLCBBPiAmeCwgYnRyZWVfbXVsdGlzZXQ8SywgQywgQT4gJnkpIHsK
KyAgcmV0dXJuIHguc3dhcCh5KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlm
ICAvLyBBQlNMX0NPTlRBSU5FUl9CVFJFRV9TRVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9idHJlZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3Rlc3QuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTMzMGNjYTMyYjkwMzIxMGZkMThjNzdkMWY2ODg3YTUxZmNmZGVmNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9idHJlZV90ZXN0LmNjCkBAIC0wLDAgKzEsMjI0MyBA
QAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJh
YnNsL2NvbnRhaW5lci9idHJlZV90ZXN0LmgiCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1
ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RkZXhjZXB0PgorI2luY2x1
ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5Pgor
CisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wv
Y29udGFpbmVyL2J0cmVlX21hcC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2J0cmVlX3Nl
dC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvdW50aW5nX2FsbG9jYXRv
ci5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJh
Y2tlci5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvZmxhZy5oIgorI2luY2x1ZGUgImFic2wvaGFz
aC9oYXNoX3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNs
dWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Ry
X2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfc3BsaXQuaCIKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL2NvbXBhcmUu
aCIKKworQUJTTF9GTEFHKGludCwgdGVzdF92YWx1ZXMsIDEwMDAwLCAiVGhlIG51bWJlciBvZiB2
YWx1ZXMgdG8gdXNlIGZvciB0ZXN0cyIpOworCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
Y29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6YWJzbDo6dGVzdF9p
bnRlcm5hbDo6SW5zdGFuY2VUcmFja2VyOwordXNpbmcgOjphYnNsOjp0ZXN0X2ludGVybmFsOjpN
b3ZhYmxlT25seUluc3RhbmNlOwordXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZTsKK3VzaW5n
IDo6dGVzdGluZzo6RWxlbWVudHNBcmVBcnJheTsKK3VzaW5nIDo6dGVzdGluZzo6SXNFbXB0eTsK
K3VzaW5nIDo6dGVzdGluZzo6UGFpcjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Cit2b2lkIENoZWNrUGFpckVxdWFscyhjb25zdCBUICZ4LCBjb25zdCBVICZ5KSB7CisgIEFC
U0xfSU5URVJOQUxfQ0hFQ0soeCA9PSB5LCAiVmFsdWVzIGFyZSB1bmVxdWFsLiIpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVz4K
K3ZvaWQgQ2hlY2tQYWlyRXF1YWxzKGNvbnN0IHN0ZDo6cGFpcjxULCBVPiAmeCwgY29uc3Qgc3Rk
OjpwYWlyPFYsIFc+ICZ5KSB7CisgIENoZWNrUGFpckVxdWFscyh4LmZpcnN0LCB5LmZpcnN0KTsK
KyAgQ2hlY2tQYWlyRXF1YWxzKHguc2Vjb25kLCB5LnNlY29uZCk7Cit9Cit9ICAvLyBuYW1lc3Bh
Y2UKKworLy8gVGhlIGJhc2UgY2xhc3MgZm9yIGEgc29ydGVkIGFzc29jaWF0aXZlIGNvbnRhaW5l
ciBjaGVja2VyLiBUcmVlVHlwZSBpcyB0aGUKKy8vIGNvbnRhaW5lciB0eXBlIHRvIGNoZWNrIGFu
ZCBDaGVja2VyVHlwZSBpcyB0aGUgY29udGFpbmVyIHR5cGUgdG8gY2hlY2sKKy8vIGFnYWluc3Qu
IFRyZWVUeXBlIGlzIGV4cGVjdGVkIHRvIGJlIGJ0cmVlX3tzZXQsbWFwLG11bHRpc2V0LG11bHRp
bWFwfSBhbmQKKy8vIENoZWNrZXJUeXBlIGlzIGV4cGVjdGVkIHRvIGJlIHtzZXQsbWFwLG11bHRp
c2V0LG11bHRpbWFwfS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUcmVlVHlwZSwgdHlwZW5hbWUgQ2hl
Y2tlclR5cGU+CitjbGFzcyBiYXNlX2NoZWNrZXIgeworIHB1YmxpYzoKKyAgdXNpbmcga2V5X3R5
cGUgPSB0eXBlbmFtZSBUcmVlVHlwZTo6a2V5X3R5cGU7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0
eXBlbmFtZSBUcmVlVHlwZTo6dmFsdWVfdHlwZTsKKyAgdXNpbmcga2V5X2NvbXBhcmUgPSB0eXBl
bmFtZSBUcmVlVHlwZTo6a2V5X2NvbXBhcmU7CisgIHVzaW5nIHBvaW50ZXIgPSB0eXBlbmFtZSBU
cmVlVHlwZTo6cG9pbnRlcjsKKyAgdXNpbmcgY29uc3RfcG9pbnRlciA9IHR5cGVuYW1lIFRyZWVU
eXBlOjpjb25zdF9wb2ludGVyOworICB1c2luZyByZWZlcmVuY2UgPSB0eXBlbmFtZSBUcmVlVHlw
ZTo6cmVmZXJlbmNlOworICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSB0eXBlbmFtZSBUcmVlVHlw
ZTo6Y29uc3RfcmVmZXJlbmNlOworICB1c2luZyBzaXplX3R5cGUgPSB0eXBlbmFtZSBUcmVlVHlw
ZTo6c2l6ZV90eXBlOworICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBUcmVlVHlw
ZTo6ZGlmZmVyZW5jZV90eXBlOworICB1c2luZyBpdGVyYXRvciA9IHR5cGVuYW1lIFRyZWVUeXBl
OjppdGVyYXRvcjsKKyAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSB0eXBlbmFtZSBUcmVlVHlwZTo6
Y29uc3RfaXRlcmF0b3I7CisgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSB0eXBlbmFtZSBUcmVl
VHlwZTo6cmV2ZXJzZV9pdGVyYXRvcjsKKyAgdXNpbmcgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciA9
IHR5cGVuYW1lIFRyZWVUeXBlOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOworCisgcHVibGljOgor
ICBiYXNlX2NoZWNrZXIoKSA6IGNvbnN0X3RyZWVfKHRyZWVfKSB7fQorICBiYXNlX2NoZWNrZXIo
Y29uc3QgYmFzZV9jaGVja2VyICZ4KQorICAgICAgOiB0cmVlXyh4LnRyZWVfKSwgY29uc3RfdHJl
ZV8odHJlZV8pLCBjaGVja2VyXyh4LmNoZWNrZXJfKSB7fQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW5wdXRJdGVyYXRvcj4KKyAgYmFzZV9jaGVja2VyKElucHV0SXRlcmF0b3IgYiwgSW5wdXRJdGVy
YXRvciBlKQorICAgICAgOiB0cmVlXyhiLCBlKSwgY29uc3RfdHJlZV8odHJlZV8pLCBjaGVja2Vy
XyhiLCBlKSB7fQorCisgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gdHJlZV8uYmVnaW4oKTsg
fQorICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLmJlZ2luKCk7
IH0KKyAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gdHJlZV8uZW5kKCk7IH0KKyAgY29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gdHJlZV8uZW5kKCk7IH0KKyAgcmV2ZXJzZV9pdGVy
YXRvciByYmVnaW4oKSB7IHJldHVybiB0cmVlXy5yYmVnaW4oKTsgfQorICBjb25zdF9yZXZlcnNl
X2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLnJiZWdpbigpOyB9CisgIHJl
dmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHRyZWVfLnJlbmQoKTsgfQorICBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiB0cmVlXy5yZW5kKCk7IH0KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlclR5cGUsIHR5cGVuYW1lIENoZWNrZXJJdGVyVHlwZT4K
KyAgSXRlclR5cGUgaXRlcl9jaGVjayhJdGVyVHlwZSB0cmVlX2l0ZXIsIENoZWNrZXJJdGVyVHlw
ZSBjaGVja2VyX2l0ZXIpIGNvbnN0IHsKKyAgICBpZiAodHJlZV9pdGVyID09IHRyZWVfLmVuZCgp
KSB7CisgICAgICBBQlNMX0lOVEVSTkFMX0NIRUNLKGNoZWNrZXJfaXRlciA9PSBjaGVja2VyXy5l
bmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNrZXIgaXRlcmF0b3Igbm90IGF0
IGVuZC4iKTsKKyAgICB9IGVsc2UgeworICAgICAgQ2hlY2tQYWlyRXF1YWxzKCp0cmVlX2l0ZXIs
ICpjaGVja2VyX2l0ZXIpOworICAgIH0KKyAgICByZXR1cm4gdHJlZV9pdGVyOworICB9CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBJdGVyVHlwZSwgdHlwZW5hbWUgQ2hlY2tlckl0ZXJUeXBlPgorICBJ
dGVyVHlwZSByaXRlcl9jaGVjayhJdGVyVHlwZSB0cmVlX2l0ZXIsIENoZWNrZXJJdGVyVHlwZSBj
aGVja2VyX2l0ZXIpIGNvbnN0IHsKKyAgICBpZiAodHJlZV9pdGVyID09IHRyZWVfLnJlbmQoKSkg
eworICAgICAgQUJTTF9JTlRFUk5BTF9DSEVDSyhjaGVja2VyX2l0ZXIgPT0gY2hlY2tlcl8ucmVu
ZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tlciBpdGVyYXRvciBub3QgYXQg
cmVuZC4iKTsKKyAgICB9IGVsc2UgeworICAgICAgQ2hlY2tQYWlyRXF1YWxzKCp0cmVlX2l0ZXIs
ICpjaGVja2VyX2l0ZXIpOworICAgIH0KKyAgICByZXR1cm4gdHJlZV9pdGVyOworICB9CisgIHZv
aWQgdmFsdWVfY2hlY2soY29uc3QgdmFsdWVfdHlwZSAmeCkgeworICAgIHR5cGVuYW1lIEtleU9m
VmFsdWU8dHlwZW5hbWUgVHJlZVR5cGU6OmtleV90eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZW5hbWUgVHJlZVR5cGU6OnZhbHVlX3R5cGU+Ojp0eXBlIGtleV9vZl92YWx1ZTsKKyAg
ICBjb25zdCBrZXlfdHlwZSAma2V5ID0ga2V5X29mX3ZhbHVlKHgpOworICAgIENoZWNrUGFpckVx
dWFscygqZmluZChrZXkpLCB4KTsKKyAgICBsb3dlcl9ib3VuZChrZXkpOworICAgIHVwcGVyX2Jv
dW5kKGtleSk7CisgICAgZXF1YWxfcmFuZ2Uoa2V5KTsKKyAgICBjb250YWlucyhrZXkpOworICAg
IGNvdW50KGtleSk7CisgIH0KKyAgdm9pZCBlcmFzZV9jaGVjayhjb25zdCBrZXlfdHlwZSAma2V5
KSB7CisgICAgRVhQRUNUX0ZBTFNFKHRyZWVfLmNvbnRhaW5zKGtleSkpOworICAgIEVYUEVDVF9F
USh0cmVlXy5maW5kKGtleSksIGNvbnN0X3RyZWVfLmVuZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Y29uc3RfdHJlZV8uY29udGFpbnMoa2V5KSk7CisgICAgRVhQRUNUX0VRKGNvbnN0X3RyZWVfLmZp
bmQoa2V5KSwgdHJlZV8uZW5kKCkpOworICAgIEVYUEVDVF9FUSh0cmVlXy5lcXVhbF9yYW5nZShr
ZXkpLmZpcnN0LAorICAgICAgICAgICAgICBjb25zdF90cmVlXy5lcXVhbF9yYW5nZShrZXkpLnNl
Y29uZCk7CisgIH0KKworICBpdGVyYXRvciBsb3dlcl9ib3VuZChjb25zdCBrZXlfdHlwZSAma2V5
KSB7CisgICAgcmV0dXJuIGl0ZXJfY2hlY2sodHJlZV8ubG93ZXJfYm91bmQoa2V5KSwgY2hlY2tl
cl8ubG93ZXJfYm91bmQoa2V5KSk7CisgIH0KKyAgY29uc3RfaXRlcmF0b3IgbG93ZXJfYm91bmQo
Y29uc3Qga2V5X3R5cGUgJmtleSkgY29uc3QgeworICAgIHJldHVybiBpdGVyX2NoZWNrKHRyZWVf
Lmxvd2VyX2JvdW5kKGtleSksIGNoZWNrZXJfLmxvd2VyX2JvdW5kKGtleSkpOworICB9CisgIGl0
ZXJhdG9yIHVwcGVyX2JvdW5kKGNvbnN0IGtleV90eXBlICZrZXkpIHsKKyAgICByZXR1cm4gaXRl
cl9jaGVjayh0cmVlXy51cHBlcl9ib3VuZChrZXkpLCBjaGVja2VyXy51cHBlcl9ib3VuZChrZXkp
KTsKKyAgfQorICBjb25zdF9pdGVyYXRvciB1cHBlcl9ib3VuZChjb25zdCBrZXlfdHlwZSAma2V5
KSBjb25zdCB7CisgICAgcmV0dXJuIGl0ZXJfY2hlY2sodHJlZV8udXBwZXJfYm91bmQoa2V5KSwg
Y2hlY2tlcl8udXBwZXJfYm91bmQoa2V5KSk7CisgIH0KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBp
dGVyYXRvcj4gZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUgJmtleSkgeworICAgIHN0ZDo6cGFp
cjx0eXBlbmFtZSBDaGVja2VyVHlwZTo6aXRlcmF0b3IsIHR5cGVuYW1lIENoZWNrZXJUeXBlOjpp
dGVyYXRvcj4KKyAgICAgICAgY2hlY2tlcl9yZXMgPSBjaGVja2VyXy5lcXVhbF9yYW5nZShrZXkp
OworICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+IHRyZWVfcmVzID0gdHJlZV8uZXF1
YWxfcmFuZ2Uoa2V5KTsKKyAgICBpdGVyX2NoZWNrKHRyZWVfcmVzLmZpcnN0LCBjaGVja2VyX3Jl
cy5maXJzdCk7CisgICAgaXRlcl9jaGVjayh0cmVlX3Jlcy5zZWNvbmQsIGNoZWNrZXJfcmVzLnNl
Y29uZCk7CisgICAgcmV0dXJuIHRyZWVfcmVzOworICB9CisgIHN0ZDo6cGFpcjxjb25zdF9pdGVy
YXRvciwgY29uc3RfaXRlcmF0b3I+IGVxdWFsX3JhbmdlKAorICAgICAgY29uc3Qga2V5X3R5cGUg
JmtleSkgY29uc3QgeworICAgIHN0ZDo6cGFpcjx0eXBlbmFtZSBDaGVja2VyVHlwZTo6Y29uc3Rf
aXRlcmF0b3IsCisgICAgICAgICAgICAgIHR5cGVuYW1lIENoZWNrZXJUeXBlOjpjb25zdF9pdGVy
YXRvcj4KKyAgICAgICAgY2hlY2tlcl9yZXMgPSBjaGVja2VyXy5lcXVhbF9yYW5nZShrZXkpOwor
ICAgIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IHRyZWVfcmVzID0g
dHJlZV8uZXF1YWxfcmFuZ2Uoa2V5KTsKKyAgICBpdGVyX2NoZWNrKHRyZWVfcmVzLmZpcnN0LCBj
aGVja2VyX3Jlcy5maXJzdCk7CisgICAgaXRlcl9jaGVjayh0cmVlX3Jlcy5zZWNvbmQsIGNoZWNr
ZXJfcmVzLnNlY29uZCk7CisgICAgcmV0dXJuIHRyZWVfcmVzOworICB9CisgIGl0ZXJhdG9yIGZp
bmQoY29uc3Qga2V5X3R5cGUgJmtleSkgeworICAgIHJldHVybiBpdGVyX2NoZWNrKHRyZWVfLmZp
bmQoa2V5KSwgY2hlY2tlcl8uZmluZChrZXkpKTsKKyAgfQorICBjb25zdF9pdGVyYXRvciBmaW5k
KGNvbnN0IGtleV90eXBlICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gaXRlcl9jaGVjayh0cmVl
Xy5maW5kKGtleSksIGNoZWNrZXJfLmZpbmQoa2V5KSk7CisgIH0KKyAgYm9vbCBjb250YWlucyhj
b25zdCBrZXlfdHlwZSAma2V5KSBjb25zdCB7CisgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBlbmQo
KTsKKyAgfQorICBzaXplX3R5cGUgY291bnQoY29uc3Qga2V5X3R5cGUgJmtleSkgY29uc3Qgewor
ICAgIHNpemVfdHlwZSByZXMgPSBjaGVja2VyXy5jb3VudChrZXkpOworICAgIEVYUEVDVF9FUShy
ZXMsIHRyZWVfLmNvdW50KGtleSkpOworICAgIHJldHVybiByZXM7CisgIH0KKworICBiYXNlX2No
ZWNrZXIgJm9wZXJhdG9yPShjb25zdCBiYXNlX2NoZWNrZXIgJngpIHsKKyAgICB0cmVlXyA9IHgu
dHJlZV87CisgICAgY2hlY2tlcl8gPSB4LmNoZWNrZXJfOworICAgIHJldHVybiAqdGhpczsKKyAg
fQorCisgIGludCBlcmFzZShjb25zdCBrZXlfdHlwZSAma2V5KSB7CisgICAgaW50IHNpemUgPSB0
cmVlXy5zaXplKCk7CisgICAgaW50IHJlcyA9IGNoZWNrZXJfLmVyYXNlKGtleSk7CisgICAgRVhQ
RUNUX0VRKHJlcywgdHJlZV8uY291bnQoa2V5KSk7CisgICAgRVhQRUNUX0VRKHJlcywgdHJlZV8u
ZXJhc2Uoa2V5KSk7CisgICAgRVhQRUNUX0VRKHRyZWVfLmNvdW50KGtleSksIDApOworICAgIEVY
UEVDVF9FUSh0cmVlXy5zaXplKCksIHNpemUgLSByZXMpOworICAgIGVyYXNlX2NoZWNrKGtleSk7
CisgICAgcmV0dXJuIHJlczsKKyAgfQorICBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBpdGVyKSB7
CisgICAga2V5X3R5cGUga2V5ID0gaXRlci5rZXkoKTsKKyAgICBpbnQgc2l6ZSA9IHRyZWVfLnNp
emUoKTsKKyAgICBpbnQgY291bnQgPSB0cmVlXy5jb3VudChrZXkpOworICAgIGF1dG8gY2hlY2tl
cl9pdGVyID0gY2hlY2tlcl8ubG93ZXJfYm91bmQoa2V5KTsKKyAgICBmb3IgKGl0ZXJhdG9yIHRt
cCh0cmVlXy5sb3dlcl9ib3VuZChrZXkpKTsgdG1wICE9IGl0ZXI7ICsrdG1wKSB7CisgICAgICAr
K2NoZWNrZXJfaXRlcjsKKyAgICB9CisgICAgYXV0byBjaGVja2VyX25leHQgPSBjaGVja2VyX2l0
ZXI7CisgICAgKytjaGVja2VyX25leHQ7CisgICAgY2hlY2tlcl8uZXJhc2UoY2hlY2tlcl9pdGVy
KTsKKyAgICBpdGVyID0gdHJlZV8uZXJhc2UoaXRlcik7CisgICAgRVhQRUNUX0VRKHRyZWVfLnNp
emUoKSwgY2hlY2tlcl8uc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEodHJlZV8uc2l6ZSgpLCBzaXpl
IC0gMSk7CisgICAgRVhQRUNUX0VRKHRyZWVfLmNvdW50KGtleSksIGNvdW50IC0gMSk7CisgICAg
aWYgKGNvdW50ID09IDEpIHsKKyAgICAgIGVyYXNlX2NoZWNrKGtleSk7CisgICAgfQorICAgIHJl
dHVybiBpdGVyX2NoZWNrKGl0ZXIsIGNoZWNrZXJfbmV4dCk7CisgIH0KKworICB2b2lkIGVyYXNl
KGl0ZXJhdG9yIGJlZ2luLCBpdGVyYXRvciBlbmQpIHsKKyAgICBpbnQgc2l6ZSA9IHRyZWVfLnNp
emUoKTsKKyAgICBpbnQgY291bnQgPSBzdGQ6OmRpc3RhbmNlKGJlZ2luLCBlbmQpOworICAgIGF1
dG8gY2hlY2tlcl9iZWdpbiA9IGNoZWNrZXJfLmxvd2VyX2JvdW5kKGJlZ2luLmtleSgpKTsKKyAg
ICBmb3IgKGl0ZXJhdG9yIHRtcCh0cmVlXy5sb3dlcl9ib3VuZChiZWdpbi5rZXkoKSkpOyB0bXAg
IT0gYmVnaW47ICsrdG1wKSB7CisgICAgICArK2NoZWNrZXJfYmVnaW47CisgICAgfQorICAgIGF1
dG8gY2hlY2tlcl9lbmQgPQorICAgICAgICBlbmQgPT0gdHJlZV8uZW5kKCkgPyBjaGVja2VyXy5l
bmQoKSA6IGNoZWNrZXJfLmxvd2VyX2JvdW5kKGVuZC5rZXkoKSk7CisgICAgaWYgKGVuZCAhPSB0
cmVlXy5lbmQoKSkgeworICAgICAgZm9yIChpdGVyYXRvciB0bXAodHJlZV8ubG93ZXJfYm91bmQo
ZW5kLmtleSgpKSk7IHRtcCAhPSBlbmQ7ICsrdG1wKSB7CisgICAgICAgICsrY2hlY2tlcl9lbmQ7
CisgICAgICB9CisgICAgfQorICAgIGNoZWNrZXJfLmVyYXNlKGNoZWNrZXJfYmVnaW4sIGNoZWNr
ZXJfZW5kKTsKKyAgICB0cmVlXy5lcmFzZShiZWdpbiwgZW5kKTsKKyAgICBFWFBFQ1RfRVEodHJl
ZV8uc2l6ZSgpLCBjaGVja2VyXy5zaXplKCkpOworICAgIEVYUEVDVF9FUSh0cmVlXy5zaXplKCks
IHNpemUgLSBjb3VudCk7CisgIH0KKworICB2b2lkIGNsZWFyKCkgeworICAgIHRyZWVfLmNsZWFy
KCk7CisgICAgY2hlY2tlcl8uY2xlYXIoKTsKKyAgfQorICB2b2lkIHN3YXAoYmFzZV9jaGVja2Vy
ICZ4KSB7CisgICAgdHJlZV8uc3dhcCh4LnRyZWVfKTsKKyAgICBjaGVja2VyXy5zd2FwKHguY2hl
Y2tlcl8pOworICB9CisKKyAgdm9pZCB2ZXJpZnkoKSBjb25zdCB7CisgICAgdHJlZV8udmVyaWZ5
KCk7CisgICAgRVhQRUNUX0VRKHRyZWVfLnNpemUoKSwgY2hlY2tlcl8uc2l6ZSgpKTsKKworICAg
IC8vIE1vdmUgdGhyb3VnaCB0aGUgZm9yd2FyZCBpdGVyYXRvcnMgdXNpbmcgaW5jcmVtZW50Lgor
ICAgIGF1dG8gY2hlY2tlcl9pdGVyID0gY2hlY2tlcl8uYmVnaW4oKTsKKyAgICBjb25zdF9pdGVy
YXRvciB0cmVlX2l0ZXIodHJlZV8uYmVnaW4oKSk7CisgICAgZm9yICg7IHRyZWVfaXRlciAhPSB0
cmVlXy5lbmQoKTsgKyt0cmVlX2l0ZXIsICsrY2hlY2tlcl9pdGVyKSB7CisgICAgICBDaGVja1Bh
aXJFcXVhbHMoKnRyZWVfaXRlciwgKmNoZWNrZXJfaXRlcik7CisgICAgfQorCisgICAgLy8gTW92
ZSB0aHJvdWdoIHRoZSBmb3J3YXJkIGl0ZXJhdG9ycyB1c2luZyBkZWNyZW1lbnQuCisgICAgZm9y
IChpbnQgbiA9IHRyZWVfLnNpemUoKSAtIDE7IG4gPj0gMDsgLS1uKSB7CisgICAgICBpdGVyX2No
ZWNrKHRyZWVfaXRlciwgY2hlY2tlcl9pdGVyKTsKKyAgICAgIC0tdHJlZV9pdGVyOworICAgICAg
LS1jaGVja2VyX2l0ZXI7CisgICAgfQorICAgIEVYUEVDVF9FUSh0cmVlX2l0ZXIsIHRyZWVfLmJl
Z2luKCkpOworICAgIEVYUEVDVF9FUShjaGVja2VyX2l0ZXIsIGNoZWNrZXJfLmJlZ2luKCkpOwor
CisgICAgLy8gTW92ZSB0aHJvdWdoIHRoZSByZXZlcnNlIGl0ZXJhdG9ycyB1c2luZyBpbmNyZW1l
bnQuCisgICAgYXV0byBjaGVja2VyX3JpdGVyID0gY2hlY2tlcl8ucmJlZ2luKCk7CisgICAgY29u
c3RfcmV2ZXJzZV9pdGVyYXRvciB0cmVlX3JpdGVyKHRyZWVfLnJiZWdpbigpKTsKKyAgICBmb3Ig
KDsgdHJlZV9yaXRlciAhPSB0cmVlXy5yZW5kKCk7ICsrdHJlZV9yaXRlciwgKytjaGVja2VyX3Jp
dGVyKSB7CisgICAgICBDaGVja1BhaXJFcXVhbHMoKnRyZWVfcml0ZXIsICpjaGVja2VyX3JpdGVy
KTsKKyAgICB9CisKKyAgICAvLyBNb3ZlIHRocm91Z2ggdGhlIHJldmVyc2UgaXRlcmF0b3JzIHVz
aW5nIGRlY3JlbWVudC4KKyAgICBmb3IgKGludCBuID0gdHJlZV8uc2l6ZSgpIC0gMTsgbiA+PSAw
OyAtLW4pIHsKKyAgICAgIHJpdGVyX2NoZWNrKHRyZWVfcml0ZXIsIGNoZWNrZXJfcml0ZXIpOwor
ICAgICAgLS10cmVlX3JpdGVyOworICAgICAgLS1jaGVja2VyX3JpdGVyOworICAgIH0KKyAgICBF
WFBFQ1RfRVEodHJlZV9yaXRlciwgdHJlZV8ucmJlZ2luKCkpOworICAgIEVYUEVDVF9FUShjaGVj
a2VyX3JpdGVyLCBjaGVja2VyXy5yYmVnaW4oKSk7CisgIH0KKworICBjb25zdCBUcmVlVHlwZSAm
dHJlZSgpIGNvbnN0IHsgcmV0dXJuIHRyZWVfOyB9CisKKyAgc2l6ZV90eXBlIHNpemUoKSBjb25z
dCB7CisgICAgRVhQRUNUX0VRKHRyZWVfLnNpemUoKSwgY2hlY2tlcl8uc2l6ZSgpKTsKKyAgICBy
ZXR1cm4gdHJlZV8uc2l6ZSgpOworICB9CisgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHRyZWVfLm1heF9zaXplKCk7IH0KKyAgYm9vbCBlbXB0eSgpIGNvbnN0IHsKKyAgICBF
WFBFQ1RfRVEodHJlZV8uZW1wdHkoKSwgY2hlY2tlcl8uZW1wdHkoKSk7CisgICAgcmV0dXJuIHRy
ZWVfLmVtcHR5KCk7CisgIH0KKworIHByb3RlY3RlZDoKKyAgVHJlZVR5cGUgdHJlZV87CisgIGNv
bnN0IFRyZWVUeXBlICZjb25zdF90cmVlXzsKKyAgQ2hlY2tlclR5cGUgY2hlY2tlcl87Cit9Owor
CituYW1lc3BhY2UgeworLy8gQSBjaGVja2VyIGZvciB1bmlxdWUgc29ydGVkIGFzc29jaWF0aXZl
IGNvbnRhaW5lcnMuIFRyZWVUeXBlIGlzIGV4cGVjdGVkIHRvCisvLyBiZSBidHJlZV97c2V0LG1h
cH0gYW5kIENoZWNrZXJUeXBlIGlzIGV4cGVjdGVkIHRvIGJlIHtzZXQsbWFwfS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUcmVlVHlwZSwgdHlwZW5hbWUgQ2hlY2tlclR5cGU+CitjbGFzcyB1bmlxdWVf
Y2hlY2tlciA6IHB1YmxpYyBiYXNlX2NoZWNrZXI8VHJlZVR5cGUsIENoZWNrZXJUeXBlPiB7Cisg
IHVzaW5nIHN1cGVyX3R5cGUgPSBiYXNlX2NoZWNrZXI8VHJlZVR5cGUsIENoZWNrZXJUeXBlPjsK
KworIHB1YmxpYzoKKyAgdXNpbmcgaXRlcmF0b3IgPSB0eXBlbmFtZSBzdXBlcl90eXBlOjppdGVy
YXRvcjsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIHN1cGVyX3R5cGU6OnZhbHVlX3R5
cGU7CisKKyBwdWJsaWM6CisgIHVuaXF1ZV9jaGVja2VyKCkgOiBzdXBlcl90eXBlKCkge30KKyAg
dW5pcXVlX2NoZWNrZXIoY29uc3QgdW5pcXVlX2NoZWNrZXIgJngpIDogc3VwZXJfdHlwZSh4KSB7
fQorICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KKyAgdW5pcXVlX2NoZWNrZXIoSW5w
dXRJdGVyYXRvciBiLCBJbnB1dEl0ZXJhdG9yIGUpIDogc3VwZXJfdHlwZShiLCBlKSB7fQorCisg
IC8vIEluc2VydGlvbiByb3V0aW5lcy4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNl
cnQoY29uc3QgdmFsdWVfdHlwZSAmeCkgeworICAgIGludCBzaXplID0gdGhpcy0+dHJlZV8uc2l6
ZSgpOworICAgIHN0ZDo6cGFpcjx0eXBlbmFtZSBDaGVja2VyVHlwZTo6aXRlcmF0b3IsIGJvb2w+
IGNoZWNrZXJfcmVzID0KKyAgICAgICAgdGhpcy0+Y2hlY2tlcl8uaW5zZXJ0KHgpOworICAgIHN0
ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gdHJlZV9yZXMgPSB0aGlzLT50cmVlXy5pbnNlcnQoeCk7
CisgICAgQ2hlY2tQYWlyRXF1YWxzKCp0cmVlX3Jlcy5maXJzdCwgKmNoZWNrZXJfcmVzLmZpcnN0
KTsKKyAgICBFWFBFQ1RfRVEodHJlZV9yZXMuc2Vjb25kLCBjaGVja2VyX3Jlcy5zZWNvbmQpOwor
ICAgIEVYUEVDVF9FUSh0aGlzLT50cmVlXy5zaXplKCksIHRoaXMtPmNoZWNrZXJfLnNpemUoKSk7
CisgICAgRVhQRUNUX0VRKHRoaXMtPnRyZWVfLnNpemUoKSwgc2l6ZSArIHRyZWVfcmVzLnNlY29u
ZCk7CisgICAgcmV0dXJuIHRyZWVfcmVzOworICB9CisgIGl0ZXJhdG9yIGluc2VydChpdGVyYXRv
ciBwb3NpdGlvbiwgY29uc3QgdmFsdWVfdHlwZSAmeCkgeworICAgIGludCBzaXplID0gdGhpcy0+
dHJlZV8uc2l6ZSgpOworICAgIHN0ZDo6cGFpcjx0eXBlbmFtZSBDaGVja2VyVHlwZTo6aXRlcmF0
b3IsIGJvb2w+IGNoZWNrZXJfcmVzID0KKyAgICAgICAgdGhpcy0+Y2hlY2tlcl8uaW5zZXJ0KHgp
OworICAgIGl0ZXJhdG9yIHRyZWVfcmVzID0gdGhpcy0+dHJlZV8uaW5zZXJ0KHBvc2l0aW9uLCB4
KTsKKyAgICBDaGVja1BhaXJFcXVhbHMoKnRyZWVfcmVzLCAqY2hlY2tlcl9yZXMuZmlyc3QpOwor
ICAgIEVYUEVDVF9FUSh0aGlzLT50cmVlXy5zaXplKCksIHRoaXMtPmNoZWNrZXJfLnNpemUoKSk7
CisgICAgRVhQRUNUX0VRKHRoaXMtPnRyZWVfLnNpemUoKSwgc2l6ZSArIGNoZWNrZXJfcmVzLnNl
Y29uZCk7CisgICAgcmV0dXJuIHRyZWVfcmVzOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJ
bnB1dEl0ZXJhdG9yPgorICB2b2lkIGluc2VydChJbnB1dEl0ZXJhdG9yIGIsIElucHV0SXRlcmF0
b3IgZSkgeworICAgIGZvciAoOyBiICE9IGU7ICsrYikgeworICAgICAgaW5zZXJ0KCpiKTsKKyAg
ICB9CisgIH0KK307CisKKy8vIEEgY2hlY2tlciBmb3IgbXVsdGlwbGUgc29ydGVkIGFzc29jaWF0
aXZlIGNvbnRhaW5lcnMuIFRyZWVUeXBlIGlzIGV4cGVjdGVkCisvLyB0byBiZSBidHJlZV97bXVs
dGlzZXQsbXVsdGltYXB9IGFuZCBDaGVja2VyVHlwZSBpcyBleHBlY3RlZCB0byBiZQorLy8ge211
bHRpc2V0LG11bHRpbWFwfS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUcmVlVHlwZSwgdHlwZW5hbWUg
Q2hlY2tlclR5cGU+CitjbGFzcyBtdWx0aV9jaGVja2VyIDogcHVibGljIGJhc2VfY2hlY2tlcjxU
cmVlVHlwZSwgQ2hlY2tlclR5cGU+IHsKKyAgdXNpbmcgc3VwZXJfdHlwZSA9IGJhc2VfY2hlY2tl
cjxUcmVlVHlwZSwgQ2hlY2tlclR5cGU+OworCisgcHVibGljOgorICB1c2luZyBpdGVyYXRvciA9
IHR5cGVuYW1lIHN1cGVyX3R5cGU6Oml0ZXJhdG9yOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlw
ZW5hbWUgc3VwZXJfdHlwZTo6dmFsdWVfdHlwZTsKKworIHB1YmxpYzoKKyAgbXVsdGlfY2hlY2tl
cigpIDogc3VwZXJfdHlwZSgpIHt9CisgIG11bHRpX2NoZWNrZXIoY29uc3QgbXVsdGlfY2hlY2tl
ciAmeCkgOiBzdXBlcl90eXBlKHgpIHt9CisgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9y
PgorICBtdWx0aV9jaGVja2VyKElucHV0SXRlcmF0b3IgYiwgSW5wdXRJdGVyYXRvciBlKSA6IHN1
cGVyX3R5cGUoYiwgZSkge30KKworICAvLyBJbnNlcnRpb24gcm91dGluZXMuCisgIGl0ZXJhdG9y
IGluc2VydChjb25zdCB2YWx1ZV90eXBlICZ4KSB7CisgICAgaW50IHNpemUgPSB0aGlzLT50cmVl
Xy5zaXplKCk7CisgICAgYXV0byBjaGVja2VyX3JlcyA9IHRoaXMtPmNoZWNrZXJfLmluc2VydCh4
KTsKKyAgICBpdGVyYXRvciB0cmVlX3JlcyA9IHRoaXMtPnRyZWVfLmluc2VydCh4KTsKKyAgICBD
aGVja1BhaXJFcXVhbHMoKnRyZWVfcmVzLCAqY2hlY2tlcl9yZXMpOworICAgIEVYUEVDVF9FUSh0
aGlzLT50cmVlXy5zaXplKCksIHRoaXMtPmNoZWNrZXJfLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KHRoaXMtPnRyZWVfLnNpemUoKSwgc2l6ZSArIDEpOworICAgIHJldHVybiB0cmVlX3JlczsKKyAg
fQorICBpdGVyYXRvciBpbnNlcnQoaXRlcmF0b3IgcG9zaXRpb24sIGNvbnN0IHZhbHVlX3R5cGUg
JngpIHsKKyAgICBpbnQgc2l6ZSA9IHRoaXMtPnRyZWVfLnNpemUoKTsKKyAgICBhdXRvIGNoZWNr
ZXJfcmVzID0gdGhpcy0+Y2hlY2tlcl8uaW5zZXJ0KHgpOworICAgIGl0ZXJhdG9yIHRyZWVfcmVz
ID0gdGhpcy0+dHJlZV8uaW5zZXJ0KHBvc2l0aW9uLCB4KTsKKyAgICBDaGVja1BhaXJFcXVhbHMo
KnRyZWVfcmVzLCAqY2hlY2tlcl9yZXMpOworICAgIEVYUEVDVF9FUSh0aGlzLT50cmVlXy5zaXpl
KCksIHRoaXMtPmNoZWNrZXJfLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKHRoaXMtPnRyZWVfLnNp
emUoKSwgc2l6ZSArIDEpOworICAgIHJldHVybiB0cmVlX3JlczsKKyAgfQorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgdm9pZCBpbnNlcnQoSW5wdXRJdGVyYXRvciBiLCBJ
bnB1dEl0ZXJhdG9yIGUpIHsKKyAgICBmb3IgKDsgYiAhPSBlOyArK2IpIHsKKyAgICAgIGluc2Vy
dCgqYik7CisgICAgfQorICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
Vj4KK3ZvaWQgRG9UZXN0KGNvbnN0IGNoYXIgKm5hbWUsIFQgKmIsIGNvbnN0IHN0ZDo6dmVjdG9y
PFY+ICZ2YWx1ZXMpIHsKKyAgdHlwZW5hbWUgS2V5T2ZWYWx1ZTx0eXBlbmFtZSBUOjprZXlfdHlw
ZSwgVj46OnR5cGUga2V5X29mX3ZhbHVlOworCisgIFQgJm11dGFibGVfYiA9ICpiOworICBjb25z
dCBUICZjb25zdF9iID0gKmI7CisKKyAgLy8gVGVzdCBpbnNlcnQuCisgIGZvciAoaW50IGkgPSAw
OyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgbXV0YWJsZV9iLmluc2VydCh2YWx1ZXNb
aV0pOworICAgIG11dGFibGVfYi52YWx1ZV9jaGVjayh2YWx1ZXNbaV0pOworICB9CisgIEFTU0VS
VF9FUShtdXRhYmxlX2Iuc2l6ZSgpLCB2YWx1ZXMuc2l6ZSgpKTsKKworICBjb25zdF9iLnZlcmlm
eSgpOworCisgIC8vIFRlc3QgY29weSBjb25zdHJ1Y3Rvci4KKyAgVCBiX2NvcHkoY29uc3RfYik7
CisgIEVYUEVDVF9FUShiX2NvcHkuc2l6ZSgpLCBjb25zdF9iLnNpemUoKSk7CisgIGZvciAoaW50
IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgQ2hlY2tQYWlyRXF1YWxzKCpi
X2NvcHkuZmluZChrZXlfb2ZfdmFsdWUodmFsdWVzW2ldKSksIHZhbHVlc1tpXSk7CisgIH0KKwor
ICAvLyBUZXN0IHJhbmdlIGNvbnN0cnVjdG9yLgorICBUIGJfcmFuZ2UoY29uc3RfYi5iZWdpbigp
LCBjb25zdF9iLmVuZCgpKTsKKyAgRVhQRUNUX0VRKGJfcmFuZ2Uuc2l6ZSgpLCBjb25zdF9iLnNp
emUoKSk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAg
Q2hlY2tQYWlyRXF1YWxzKCpiX3JhbmdlLmZpbmQoa2V5X29mX3ZhbHVlKHZhbHVlc1tpXSkpLCB2
YWx1ZXNbaV0pOworICB9CisKKyAgLy8gVGVzdCByYW5nZSBpbnNlcnRpb24gZm9yIHZhbHVlcyB0
aGF0IGFscmVhZHkgZXhpc3QuCisgIGJfcmFuZ2UuaW5zZXJ0KGJfY29weS5iZWdpbigpLCBiX2Nv
cHkuZW5kKCkpOworICBiX3JhbmdlLnZlcmlmeSgpOworCisgIC8vIFRlc3QgcmFuZ2UgaW5zZXJ0
aW9uIGZvciBuZXcgdmFsdWVzLgorICBiX3JhbmdlLmNsZWFyKCk7CisgIGJfcmFuZ2UuaW5zZXJ0
KGJfY29weS5iZWdpbigpLCBiX2NvcHkuZW5kKCkpOworICBFWFBFQ1RfRVEoYl9yYW5nZS5zaXpl
KCksIGJfY29weS5zaXplKCkpOworICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7
ICsraSkgeworICAgIENoZWNrUGFpckVxdWFscygqYl9yYW5nZS5maW5kKGtleV9vZl92YWx1ZSh2
YWx1ZXNbaV0pKSwgdmFsdWVzW2ldKTsKKyAgfQorCisgIC8vIFRlc3QgYXNzaWdubWVudCB0byBz
ZWxmLiBOb3RoaW5nIHNob3VsZCBjaGFuZ2UuCisgIGJfcmFuZ2Uub3BlcmF0b3I9KGJfcmFuZ2Up
OworICBFWFBFQ1RfRVEoYl9yYW5nZS5zaXplKCksIGJfY29weS5zaXplKCkpOworCisgIC8vIFRl
c3QgYXNzaWdubWVudCBvZiBuZXcgdmFsdWVzLgorICBiX3JhbmdlLmNsZWFyKCk7CisgIGJfcmFu
Z2UgPSBiX2NvcHk7CisgIEVYUEVDVF9FUShiX3JhbmdlLnNpemUoKSwgYl9jb3B5LnNpemUoKSk7
CisKKyAgLy8gVGVzdCBzd2FwLgorICBiX3JhbmdlLmNsZWFyKCk7CisgIGJfcmFuZ2Uuc3dhcChi
X2NvcHkpOworICBFWFBFQ1RfRVEoYl9jb3B5LnNpemUoKSwgMCk7CisgIEVYUEVDVF9FUShiX3Jh
bmdlLnNpemUoKSwgY29uc3RfYi5zaXplKCkpOworICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVl
cy5zaXplKCk7ICsraSkgeworICAgIENoZWNrUGFpckVxdWFscygqYl9yYW5nZS5maW5kKGtleV9v
Zl92YWx1ZSh2YWx1ZXNbaV0pKSwgdmFsdWVzW2ldKTsKKyAgfQorICBiX3JhbmdlLnN3YXAoYl9j
b3B5KTsKKworICAvLyBUZXN0IG5vbi1tZW1iZXIgZnVuY3Rpb24gc3dhcC4KKyAgc3dhcChiX3Jh
bmdlLCBiX2NvcHkpOworICBFWFBFQ1RfRVEoYl9jb3B5LnNpemUoKSwgMCk7CisgIEVYUEVDVF9F
UShiX3JhbmdlLnNpemUoKSwgY29uc3RfYi5zaXplKCkpOworICBmb3IgKGludCBpID0gMDsgaSA8
IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIENoZWNrUGFpckVxdWFscygqYl9yYW5nZS5maW5k
KGtleV9vZl92YWx1ZSh2YWx1ZXNbaV0pKSwgdmFsdWVzW2ldKTsKKyAgfQorICBzd2FwKGJfcmFu
Z2UsIGJfY29weSk7CisKKyAgLy8gVGVzdCBlcmFzZSB2aWEgdmFsdWVzLgorICBmb3IgKGludCBp
ID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIG11dGFibGVfYi5lcmFzZShrZXlf
b2ZfdmFsdWUodmFsdWVzW2ldKSk7CisgICAgLy8gRXJhc2luZyBhIG5vbi1leGlzdGVudCBrZXkg
c2hvdWxkIGhhdmUgbm8gZWZmZWN0LgorICAgIEFTU0VSVF9FUShtdXRhYmxlX2IuZXJhc2Uoa2V5
X29mX3ZhbHVlKHZhbHVlc1tpXSkpLCAwKTsKKyAgfQorCisgIGNvbnN0X2IudmVyaWZ5KCk7Cisg
IEVYUEVDVF9FUShjb25zdF9iLnNpemUoKSwgMCk7CisKKyAgLy8gVGVzdCBlcmFzZSB2aWEgaXRl
cmF0b3JzLgorICBtdXRhYmxlX2IgPSBiX2NvcHk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFs
dWVzLnNpemUoKTsgKytpKSB7CisgICAgbXV0YWJsZV9iLmVyYXNlKG11dGFibGVfYi5maW5kKGtl
eV9vZl92YWx1ZSh2YWx1ZXNbaV0pKSk7CisgIH0KKworICBjb25zdF9iLnZlcmlmeSgpOworICBF
WFBFQ1RfRVEoY29uc3RfYi5zaXplKCksIDApOworCisgIC8vIFRlc3QgaW5zZXJ0IHdpdGggaGlu
dC4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyBpKyspIHsKKyAgICBtdXRh
YmxlX2IuaW5zZXJ0KG11dGFibGVfYi51cHBlcl9ib3VuZChrZXlfb2ZfdmFsdWUodmFsdWVzW2ld
KSksIHZhbHVlc1tpXSk7CisgIH0KKworICBjb25zdF9iLnZlcmlmeSgpOworCisgIC8vIFRlc3Qg
cmFuZ2UgZXJhc2UuCisgIG11dGFibGVfYi5lcmFzZShtdXRhYmxlX2IuYmVnaW4oKSwgbXV0YWJs
ZV9iLmVuZCgpKTsKKyAgRVhQRUNUX0VRKG11dGFibGVfYi5zaXplKCksIDApOworICBjb25zdF9i
LnZlcmlmeSgpOworCisgIC8vIEZpcnN0IGhhbGYuCisgIG11dGFibGVfYiA9IGJfY29weTsKKyAg
dHlwZW5hbWUgVDo6aXRlcmF0b3IgbXV0YWJsZV9pdGVyX2VuZCA9IG11dGFibGVfYi5iZWdpbigp
OworICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCkgLyAyOyArK2kpICsrbXV0YWJs
ZV9pdGVyX2VuZDsKKyAgbXV0YWJsZV9iLmVyYXNlKG11dGFibGVfYi5iZWdpbigpLCBtdXRhYmxl
X2l0ZXJfZW5kKTsKKyAgRVhQRUNUX0VRKG11dGFibGVfYi5zaXplKCksIHZhbHVlcy5zaXplKCkg
LSB2YWx1ZXMuc2l6ZSgpIC8gMik7CisgIGNvbnN0X2IudmVyaWZ5KCk7CisKKyAgLy8gU2Vjb25k
IGhhbGYuCisgIG11dGFibGVfYiA9IGJfY29weTsKKyAgdHlwZW5hbWUgVDo6aXRlcmF0b3IgbXV0
YWJsZV9pdGVyX2JlZ2luID0gbXV0YWJsZV9iLmJlZ2luKCk7CisgIGZvciAoaW50IGkgPSAwOyBp
IDwgdmFsdWVzLnNpemUoKSAvIDI7ICsraSkgKyttdXRhYmxlX2l0ZXJfYmVnaW47CisgIG11dGFi
bGVfYi5lcmFzZShtdXRhYmxlX2l0ZXJfYmVnaW4sIG11dGFibGVfYi5lbmQoKSk7CisgIEVYUEVD
VF9FUShtdXRhYmxlX2Iuc2l6ZSgpLCB2YWx1ZXMuc2l6ZSgpIC8gMik7CisgIGNvbnN0X2IudmVy
aWZ5KCk7CisKKyAgLy8gU2Vjb25kIHF1YXJ0ZXIuCisgIG11dGFibGVfYiA9IGJfY29weTsKKyAg
bXV0YWJsZV9pdGVyX2JlZ2luID0gbXV0YWJsZV9iLmJlZ2luKCk7CisgIGZvciAoaW50IGkgPSAw
OyBpIDwgdmFsdWVzLnNpemUoKSAvIDQ7ICsraSkgKyttdXRhYmxlX2l0ZXJfYmVnaW47CisgIG11
dGFibGVfaXRlcl9lbmQgPSBtdXRhYmxlX2l0ZXJfYmVnaW47CisgIGZvciAoaW50IGkgPSAwOyBp
IDwgdmFsdWVzLnNpemUoKSAvIDQ7ICsraSkgKyttdXRhYmxlX2l0ZXJfZW5kOworICBtdXRhYmxl
X2IuZXJhc2UobXV0YWJsZV9pdGVyX2JlZ2luLCBtdXRhYmxlX2l0ZXJfZW5kKTsKKyAgRVhQRUNU
X0VRKG11dGFibGVfYi5zaXplKCksIHZhbHVlcy5zaXplKCkgLSB2YWx1ZXMuc2l6ZSgpIC8gNCk7
CisgIGNvbnN0X2IudmVyaWZ5KCk7CisKKyAgbXV0YWJsZV9iLmNsZWFyKCk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordm9pZCBDb25zdFRlc3QoKSB7CisgIHVzaW5nIHZhbHVlX3R5cGUg
PSB0eXBlbmFtZSBUOjp2YWx1ZV90eXBlOworICB0eXBlbmFtZSBLZXlPZlZhbHVlPHR5cGVuYW1l
IFQ6OmtleV90eXBlLCB2YWx1ZV90eXBlPjo6dHlwZSBrZXlfb2ZfdmFsdWU7CisKKyAgVCBtdXRh
YmxlX2I7CisgIGNvbnN0IFQgJmNvbnN0X2IgPSBtdXRhYmxlX2I7CisKKyAgLy8gSW5zZXJ0IGEg
c2luZ2xlIHZhbHVlIGludG8gdGhlIGNvbnRhaW5lciBhbmQgdGVzdCBsb29raW5nIGl0IHVwLgor
ICB2YWx1ZV90eXBlIHZhbHVlID0gR2VuZXJhdG9yPHZhbHVlX3R5cGU+KDIpKDIpOworICBtdXRh
YmxlX2IuaW5zZXJ0KHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUobXV0YWJsZV9iLmNvbnRhaW5zKGtl
eV9vZl92YWx1ZSh2YWx1ZSkpKTsKKyAgRVhQRUNUX05FKG11dGFibGVfYi5maW5kKGtleV9vZl92
YWx1ZSh2YWx1ZSkpLCBjb25zdF9iLmVuZCgpKTsKKyAgRVhQRUNUX1RSVUUoY29uc3RfYi5jb250
YWlucyhrZXlfb2ZfdmFsdWUodmFsdWUpKSk7CisgIEVYUEVDVF9ORShjb25zdF9iLmZpbmQoa2V5
X29mX3ZhbHVlKHZhbHVlKSksIG11dGFibGVfYi5lbmQoKSk7CisgIEVYUEVDVF9FUSgqY29uc3Rf
Yi5sb3dlcl9ib3VuZChrZXlfb2ZfdmFsdWUodmFsdWUpKSwgdmFsdWUpOworICBFWFBFQ1RfRVEo
Y29uc3RfYi51cHBlcl9ib3VuZChrZXlfb2ZfdmFsdWUodmFsdWUpKSwgY29uc3RfYi5lbmQoKSk7
CisgIEVYUEVDVF9FUSgqY29uc3RfYi5lcXVhbF9yYW5nZShrZXlfb2ZfdmFsdWUodmFsdWUpKS5m
aXJzdCwgdmFsdWUpOworCisgIC8vIFdlIGNhbiBvbmx5IGNyZWF0ZSBhIG5vbi1jb25zdCBpdGVy
YXRvciBmcm9tIGEgbm9uLWNvbnN0IGNvbnRhaW5lci4KKyAgdHlwZW5hbWUgVDo6aXRlcmF0b3Ig
bXV0YWJsZV9pdGVyKG11dGFibGVfYi5iZWdpbigpKTsKKyAgRVhQRUNUX0VRKG11dGFibGVfaXRl
ciwgY29uc3RfYi5iZWdpbigpKTsKKyAgRVhQRUNUX05FKG11dGFibGVfaXRlciwgY29uc3RfYi5l
bmQoKSk7CisgIEVYUEVDVF9FUShjb25zdF9iLmJlZ2luKCksIG11dGFibGVfaXRlcik7CisgIEVY
UEVDVF9ORShjb25zdF9iLmVuZCgpLCBtdXRhYmxlX2l0ZXIpOworICB0eXBlbmFtZSBUOjpyZXZl
cnNlX2l0ZXJhdG9yIG11dGFibGVfcml0ZXIobXV0YWJsZV9iLnJiZWdpbigpKTsKKyAgRVhQRUNU
X0VRKG11dGFibGVfcml0ZXIsIGNvbnN0X2IucmJlZ2luKCkpOworICBFWFBFQ1RfTkUobXV0YWJs
ZV9yaXRlciwgY29uc3RfYi5yZW5kKCkpOworICBFWFBFQ1RfRVEoY29uc3RfYi5yYmVnaW4oKSwg
bXV0YWJsZV9yaXRlcik7CisgIEVYUEVDVF9ORShjb25zdF9iLnJlbmQoKSwgbXV0YWJsZV9yaXRl
cik7CisKKyAgLy8gV2UgY2FuIGNyZWF0ZSBhIGNvbnN0IGl0ZXJhdG9yIGZyb20gYSBub24tY29u
c3QgaXRlcmF0b3IuCisgIHR5cGVuYW1lIFQ6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXIobXV0
YWJsZV9pdGVyKTsKKyAgRVhQRUNUX0VRKGNvbnN0X2l0ZXIsIG11dGFibGVfYi5iZWdpbigpKTsK
KyAgRVhQRUNUX05FKGNvbnN0X2l0ZXIsIG11dGFibGVfYi5lbmQoKSk7CisgIEVYUEVDVF9FUSht
dXRhYmxlX2IuYmVnaW4oKSwgY29uc3RfaXRlcik7CisgIEVYUEVDVF9ORShtdXRhYmxlX2IuZW5k
KCksIGNvbnN0X2l0ZXIpOworICB0eXBlbmFtZSBUOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNv
bnN0X3JpdGVyKG11dGFibGVfcml0ZXIpOworICBFWFBFQ1RfRVEoY29uc3Rfcml0ZXIsIG11dGFi
bGVfYi5yYmVnaW4oKSk7CisgIEVYUEVDVF9ORShjb25zdF9yaXRlciwgbXV0YWJsZV9iLnJlbmQo
KSk7CisgIEVYUEVDVF9FUShtdXRhYmxlX2IucmJlZ2luKCksIGNvbnN0X3JpdGVyKTsKKyAgRVhQ
RUNUX05FKG11dGFibGVfYi5yZW5kKCksIGNvbnN0X3JpdGVyKTsKKworICAvLyBNYWtlIHN1cmUg
dmFyaW91cyBtZXRob2RzIGNhbiBiZSBpbnZva2VkIG9uIGEgY29uc3QgY29udGFpbmVyLgorICBj
b25zdF9iLnZlcmlmeSgpOworICBBU1NFUlRfVFJVRSghY29uc3RfYi5lbXB0eSgpKTsKKyAgRVhQ
RUNUX0VRKGNvbnN0X2Iuc2l6ZSgpLCAxKTsKKyAgRVhQRUNUX0dUKGNvbnN0X2IubWF4X3NpemUo
KSwgMCk7CisgIEVYUEVDVF9UUlVFKGNvbnN0X2IuY29udGFpbnMoa2V5X29mX3ZhbHVlKHZhbHVl
KSkpOworICBFWFBFQ1RfRVEoY29uc3RfYi5jb3VudChrZXlfb2ZfdmFsdWUodmFsdWUpKSwgMSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgordm9pZCBCdHJlZVRlc3Qo
KSB7CisgIENvbnN0VGVzdDxUPigpOworCisgIHVzaW5nIFYgPSB0eXBlbmFtZSByZW1vdmVfcGFp
cl9jb25zdDx0eXBlbmFtZSBUOjp2YWx1ZV90eXBlPjo6dHlwZTsKKyAgY29uc3Qgc3RkOjp2ZWN0
b3I8Vj4gcmFuZG9tX3ZhbHVlcyA9IEdlbmVyYXRlVmFsdWVzV2l0aFNlZWQ8Vj4oCisgICAgICBh
YnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfdmFsdWVzKSwgNCAqIGFic2w6OkdldEZsYWcoRkxBR1Nf
dGVzdF92YWx1ZXMpLAorICAgICAgdGVzdGluZzo6R1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpOwor
CisgIHVuaXF1ZV9jaGVja2VyPFQsIEM+IGNvbnRhaW5lcjsKKworICAvLyBUZXN0IGtleSBpbnNl
cnRpb24vZGVsZXRpb24gaW4gc29ydGVkIG9yZGVyLgorICBzdGQ6OnZlY3RvcjxWPiBzb3J0ZWRf
dmFsdWVzKHJhbmRvbV92YWx1ZXMpOworICBzdGQ6OnNvcnQoc29ydGVkX3ZhbHVlcy5iZWdpbigp
LCBzb3J0ZWRfdmFsdWVzLmVuZCgpKTsKKyAgRG9UZXN0KCJzb3J0ZWQ6ICAgICIsICZjb250YWlu
ZXIsIHNvcnRlZF92YWx1ZXMpOworCisgIC8vIFRlc3Qga2V5IGluc2VydGlvbi9kZWxldGlvbiBp
biByZXZlcnNlIHNvcnRlZCBvcmRlci4KKyAgc3RkOjpyZXZlcnNlKHNvcnRlZF92YWx1ZXMuYmVn
aW4oKSwgc29ydGVkX3ZhbHVlcy5lbmQoKSk7CisgIERvVGVzdCgicnNvcnRlZDogICAiLCAmY29u
dGFpbmVyLCBzb3J0ZWRfdmFsdWVzKTsKKworICAvLyBUZXN0IGtleSBpbnNlcnRpb24vZGVsZXRp
b24gaW4gcmFuZG9tIG9yZGVyLgorICBEb1Rlc3QoInJhbmRvbTogICAgIiwgJmNvbnRhaW5lciwg
cmFuZG9tX3ZhbHVlcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgor
dm9pZCBCdHJlZU11bHRpVGVzdCgpIHsKKyAgQ29uc3RUZXN0PFQ+KCk7CisKKyAgdXNpbmcgViA9
IHR5cGVuYW1lIHJlbW92ZV9wYWlyX2NvbnN0PHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGU+Ojp0eXBl
OworICBjb25zdCBzdGQ6OnZlY3RvcjxWPiByYW5kb21fdmFsdWVzID0gR2VuZXJhdGVWYWx1ZXNX
aXRoU2VlZDxWPigKKyAgICAgIGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF92YWx1ZXMpLCA0ICog
YWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X3ZhbHVlcyksCisgICAgICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKHJhbmRvbV9zZWVkKSk7CisKKyAgbXVsdGlfY2hlY2tlcjxULCBDPiBjb250YWluZXI7CisK
KyAgLy8gVGVzdCBrZXlzIGluIHNvcnRlZCBvcmRlci4KKyAgc3RkOjp2ZWN0b3I8Vj4gc29ydGVk
X3ZhbHVlcyhyYW5kb21fdmFsdWVzKTsKKyAgc3RkOjpzb3J0KHNvcnRlZF92YWx1ZXMuYmVnaW4o
KSwgc29ydGVkX3ZhbHVlcy5lbmQoKSk7CisgIERvVGVzdCgic29ydGVkOiAgICAiLCAmY29udGFp
bmVyLCBzb3J0ZWRfdmFsdWVzKTsKKworICAvLyBUZXN0IGtleXMgaW4gcmV2ZXJzZSBzb3J0ZWQg
b3JkZXIuCisgIHN0ZDo6cmV2ZXJzZShzb3J0ZWRfdmFsdWVzLmJlZ2luKCksIHNvcnRlZF92YWx1
ZXMuZW5kKCkpOworICBEb1Rlc3QoInJzb3J0ZWQ6ICAgIiwgJmNvbnRhaW5lciwgc29ydGVkX3Zh
bHVlcyk7CisKKyAgLy8gVGVzdCBrZXlzIGluIHJhbmRvbSBvcmRlci4KKyAgRG9UZXN0KCJyYW5k
b206ICAgICIsICZjb250YWluZXIsIHJhbmRvbV92YWx1ZXMpOworCisgIC8vIFRlc3Qga2V5cyBp
biByYW5kb20gb3JkZXIgdy8gZHVwbGljYXRlcy4KKyAgc3RkOjp2ZWN0b3I8Vj4gZHVwbGljYXRl
X3ZhbHVlcyhyYW5kb21fdmFsdWVzKTsKKyAgZHVwbGljYXRlX3ZhbHVlcy5pbnNlcnQoZHVwbGlj
YXRlX3ZhbHVlcy5lbmQoKSwgcmFuZG9tX3ZhbHVlcy5iZWdpbigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICByYW5kb21fdmFsdWVzLmVuZCgpKTsKKyAgRG9UZXN0KCJkdXBsaWNhdGVzOiIs
ICZjb250YWluZXIsIGR1cGxpY2F0ZV92YWx1ZXMpOworCisgIC8vIFRlc3QgYWxsIGlkZW50aWNh
bCBrZXlzLgorICBzdGQ6OnZlY3RvcjxWPiBpZGVudGljYWxfdmFsdWVzKDEwMCk7CisgIHN0ZDo6
ZmlsbChpZGVudGljYWxfdmFsdWVzLmJlZ2luKCksIGlkZW50aWNhbF92YWx1ZXMuZW5kKCksCisg
ICAgICAgICAgICBHZW5lcmF0b3I8Vj4oMikoMikpOworICBEb1Rlc3QoImlkZW50aWNhbDogIiwg
JmNvbnRhaW5lciwgaWRlbnRpY2FsX3ZhbHVlcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RydWN0IFByb3BhZ2F0aW5nQ291bnRpbmdBbGxvYyA6IHB1YmxpYyBDb3VudGluZ0FsbG9j
YXRvcjxUPiB7CisgIHVzaW5nIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50
ID0gc3RkOjp0cnVlX3R5cGU7CisgIHVzaW5nIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9h
c3NpZ25tZW50ID0gc3RkOjp0cnVlX3R5cGU7CisgIHVzaW5nIHByb3BhZ2F0ZV9vbl9jb250YWlu
ZXJfc3dhcCA9IHN0ZDo6dHJ1ZV90eXBlOworCisgIHVzaW5nIEJhc2UgPSBDb3VudGluZ0FsbG9j
YXRvcjxUPjsKKyAgdXNpbmcgQmFzZTo6QmFzZTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4K
KyAgZXhwbGljaXQgUHJvcGFnYXRpbmdDb3VudGluZ0FsbG9jKGNvbnN0IFByb3BhZ2F0aW5nQ291
bnRpbmdBbGxvYzxVPiAmb3RoZXIpCisgICAgICA6IEJhc2Uob3RoZXIuYnl0ZXNfdXNlZF8pIHt9
CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHN0cnVjdCByZWJpbmQgeworICAgIHVzaW5n
IG90aGVyID0gUHJvcGFnYXRpbmdDb3VudGluZ0FsbG9jPFU+OworICB9OworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Cit2b2lkIEJ0cmVlQWxsb2NhdG9yVGVzdCgpIHsKKyAgdXNpbmcgdmFs
dWVfdHlwZSA9IHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGU7CisKKyAgaW50NjRfdCBieXRlczEgPSAw
LCBieXRlczIgPSAwOworICBQcm9wYWdhdGluZ0NvdW50aW5nQWxsb2M8VD4gYWxsb2NhdG9yMSgm
Ynl0ZXMxKTsKKyAgUHJvcGFnYXRpbmdDb3VudGluZ0FsbG9jPFQ+IGFsbG9jYXRvcjIoJmJ5dGVz
Mik7CisgIEdlbmVyYXRvcjx2YWx1ZV90eXBlPiBnZW5lcmF0b3IoMTAwMCk7CisKKyAgLy8gVGVz
dCB0aGF0IHdlIGFsbG9jYXRlIHByb3Blcmx5IGFsaWduZWQgbWVtb3J5LiBJZiB3ZSBkb24ndCwg
dGhlbiBMYXlvdXQKKyAgLy8gd2lsbCBhc3NlcnQgZmFpbC4KKyAgYXV0byB1bnVzZWQxID0gYWxs
b2NhdG9yMS5hbGxvY2F0ZSgxKTsKKyAgYXV0byB1bnVzZWQyID0gYWxsb2NhdG9yMi5hbGxvY2F0
ZSgxKTsKKworICAvLyBUZXN0IGNvcHkgYXNzaWdubWVudAorICB7CisgICAgVCBiMSh0eXBlbmFt
ZSBUOjprZXlfY29tcGFyZSgpLCBhbGxvY2F0b3IxKTsKKyAgICBUIGIyKHR5cGVuYW1lIFQ6Omtl
eV9jb21wYXJlKCksIGFsbG9jYXRvcjIpOworCisgICAgaW50NjRfdCBvcmlnaW5hbF9ieXRlczEg
PSBieXRlczE7CisgICAgYjEuaW5zZXJ0KGdlbmVyYXRvcigwKSk7CisgICAgRVhQRUNUX0dUKGJ5
dGVzMSwgb3JpZ2luYWxfYnl0ZXMxKTsKKworICAgIC8vIFRoaXMgc2hvdWxkIHByb3BhZ2F0ZSB0
aGUgYWxsb2NhdG9yLgorICAgIGIxID0gYjI7CisgICAgRVhQRUNUX0VRKGIxLnNpemUoKSwgMCk7
CisgICAgRVhQRUNUX0VRKGIyLnNpemUoKSwgMCk7CisgICAgRVhQRUNUX0VRKGJ5dGVzMSwgb3Jp
Z2luYWxfYnl0ZXMxKTsKKworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMTAwMDsgaSsrKSB7Cisg
ICAgICBiMS5pbnNlcnQoZ2VuZXJhdG9yKGkpKTsKKyAgICB9CisKKyAgICAvLyBXZSBzaG91bGQg
aGF2ZSBhbGxvY2F0ZWQgb3V0IG9mIGFsbG9jYXRvcjIuCisgICAgRVhQRUNUX0dUKGJ5dGVzMiwg
Ynl0ZXMxKTsKKyAgfQorCisgIC8vIFRlc3QgbW92ZSBhc3NpZ25tZW50CisgIHsKKyAgICBUIGIx
KHR5cGVuYW1lIFQ6OmtleV9jb21wYXJlKCksIGFsbG9jYXRvcjEpOworICAgIFQgYjIodHlwZW5h
bWUgVDo6a2V5X2NvbXBhcmUoKSwgYWxsb2NhdG9yMik7CisKKyAgICBpbnQ2NF90IG9yaWdpbmFs
X2J5dGVzMSA9IGJ5dGVzMTsKKyAgICBiMS5pbnNlcnQoZ2VuZXJhdG9yKDApKTsKKyAgICBFWFBF
Q1RfR1QoYnl0ZXMxLCBvcmlnaW5hbF9ieXRlczEpOworCisgICAgLy8gVGhpcyBzaG91bGQgcHJv
cGFnYXRlIHRoZSBhbGxvY2F0b3IuCisgICAgYjEgPSBzdGQ6Om1vdmUoYjIpOworICAgIEVYUEVD
VF9FUShiMS5zaXplKCksIDApOworICAgIEVYUEVDVF9FUShieXRlczEsIG9yaWdpbmFsX2J5dGVz
MSk7CisKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IDEwMDA7IGkrKykgeworICAgICAgYjEuaW5z
ZXJ0KGdlbmVyYXRvcihpKSk7CisgICAgfQorCisgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYWxsb2Nh
dGVkIG91dCBvZiBhbGxvY2F0b3IyLgorICAgIEVYUEVDVF9HVChieXRlczIsIGJ5dGVzMSk7Cisg
IH0KKworICAvLyBUZXN0IHN3YXAKKyAgeworICAgIFQgYjEodHlwZW5hbWUgVDo6a2V5X2NvbXBh
cmUoKSwgYWxsb2NhdG9yMSk7CisgICAgVCBiMih0eXBlbmFtZSBUOjprZXlfY29tcGFyZSgpLCBh
bGxvY2F0b3IyKTsKKworICAgIGludDY0X3Qgb3JpZ2luYWxfYnl0ZXMxID0gYnl0ZXMxOworICAg
IGIxLmluc2VydChnZW5lcmF0b3IoMCkpOworICAgIEVYUEVDVF9HVChieXRlczEsIG9yaWdpbmFs
X2J5dGVzMSk7CisKKyAgICAvLyBUaGlzIHNob3VsZCBzd2FwIHRoZSBhbGxvY2F0b3JzLgorICAg
IHN3YXAoYjEsIGIyKTsKKyAgICBFWFBFQ1RfRVEoYjEuc2l6ZSgpLCAwKTsKKyAgICBFWFBFQ1Rf
RVEoYjIuc2l6ZSgpLCAxKTsKKyAgICBFWFBFQ1RfR1QoYnl0ZXMxLCBvcmlnaW5hbF9ieXRlczEp
OworCisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgIGIxLmluc2Vy
dChnZW5lcmF0b3IoaSkpOworICAgIH0KKworICAgIC8vIFdlIHNob3VsZCBoYXZlIGFsbG9jYXRl
ZCBvdXQgb2YgYWxsb2NhdG9yMi4KKyAgICBFWFBFQ1RfR1QoYnl0ZXMyLCBieXRlczEpOworICB9
CisKKyAgYWxsb2NhdG9yMS5kZWFsbG9jYXRlKHVudXNlZDEsIDEpOworICBhbGxvY2F0b3IyLmRl
YWxsb2NhdGUodW51c2VkMiwgMSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBC
dHJlZU1hcFRlc3QoKSB7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBUOjp2YWx1ZV90
eXBlOworICB1c2luZyBtYXBwZWRfdHlwZSA9IHR5cGVuYW1lIFQ6Om1hcHBlZF90eXBlOworCisg
IG1hcHBlZF90eXBlIG0gPSBHZW5lcmF0b3I8bWFwcGVkX3R5cGU+KDApKDApOworICAodm9pZClt
OworCisgIFQgYjsKKworICAvLyBWZXJpZnkgd2UgY2FuIGluc2VydCB1c2luZyBvcGVyYXRvcltd
LgorICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgIHZhbHVlX3R5cGUgdiA9
IEdlbmVyYXRvcjx2YWx1ZV90eXBlPigxMDAwKShpKTsKKyAgICBiW3YuZmlyc3RdID0gdi5zZWNv
bmQ7CisgIH0KKyAgRVhQRUNUX0VRKGIuc2l6ZSgpLCAxMDAwKTsKKworICAvLyBUZXN0IHdoZXRo
ZXIgd2UgY2FuIHVzZSB0aGUgIi0+IiBvcGVyYXRvciBvbiBpdGVyYXRvcnMgYW5kCisgIC8vIHJl
dmVyc2VfaXRlcmF0b3JzLiBUaGlzIHN0cmVzc2VzIHRoZSBidHJlZV9tYXBfcGFyYW1zOjpwYWly
X3BvaW50ZXIKKyAgLy8gbWVjaGFuaXNtLgorICBFWFBFQ1RfRVEoYi5iZWdpbigpLT5maXJzdCwg
R2VuZXJhdG9yPHZhbHVlX3R5cGU+KDEwMDApKDApLmZpcnN0KTsKKyAgRVhQRUNUX0VRKGIuYmVn
aW4oKS0+c2Vjb25kLCBHZW5lcmF0b3I8dmFsdWVfdHlwZT4oMTAwMCkoMCkuc2Vjb25kKTsKKyAg
RVhQRUNUX0VRKGIucmJlZ2luKCktPmZpcnN0LCBHZW5lcmF0b3I8dmFsdWVfdHlwZT4oMTAwMCko
OTk5KS5maXJzdCk7CisgIEVYUEVDVF9FUShiLnJiZWdpbigpLT5zZWNvbmQsIEdlbmVyYXRvcjx2
YWx1ZV90eXBlPigxMDAwKSg5OTkpLnNlY29uZCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgordm9pZCBCdHJlZU11bHRpTWFwVGVzdCgpIHsKKyAgdXNpbmcgbWFwcGVkX3R5cGUgPSB0eXBl
bmFtZSBUOjptYXBwZWRfdHlwZTsKKyAgbWFwcGVkX3R5cGUgbSA9IEdlbmVyYXRvcjxtYXBwZWRf
dHlwZT4oMCkoMCk7CisgICh2b2lkKW07Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBLLCBpbnQg
TiA9IDI1Nj4KK3ZvaWQgU2V0VGVzdCgpIHsKKyAgRVhQRUNUX0VRKAorICAgICAgc2l6ZW9mKGFi
c2w6OmJ0cmVlX3NldDxLPiksCisgICAgICAyICogc2l6ZW9mKHZvaWQgKikgKyBzaXplb2YodHlw
ZW5hbWUgYWJzbDo6YnRyZWVfc2V0PEs+OjpzaXplX3R5cGUpKTsKKyAgdXNpbmcgQnRyZWVTZXQg
PSBhYnNsOjpidHJlZV9zZXQ8Sz47CisgIHVzaW5nIENvdW50aW5nQnRyZWVTZXQgPQorICAgICAg
YWJzbDo6YnRyZWVfc2V0PEssIHN0ZDo6bGVzczxLPiwgUHJvcGFnYXRpbmdDb3VudGluZ0FsbG9j
PEs+PjsKKyAgQnRyZWVUZXN0PEJ0cmVlU2V0LCBzdGQ6OnNldDxLPj4oKTsKKyAgQnRyZWVBbGxv
Y2F0b3JUZXN0PENvdW50aW5nQnRyZWVTZXQ+KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBL
LCBpbnQgTiA9IDI1Nj4KK3ZvaWQgTWFwVGVzdCgpIHsKKyAgRVhQRUNUX0VRKAorICAgICAgc2l6
ZW9mKGFic2w6OmJ0cmVlX21hcDxLLCBLPiksCisgICAgICAyICogc2l6ZW9mKHZvaWQgKikgKyBz
aXplb2YodHlwZW5hbWUgYWJzbDo6YnRyZWVfbWFwPEssIEs+OjpzaXplX3R5cGUpKTsKKyAgdXNp
bmcgQnRyZWVNYXAgPSBhYnNsOjpidHJlZV9tYXA8SywgSz47CisgIHVzaW5nIENvdW50aW5nQnRy
ZWVNYXAgPQorICAgICAgYWJzbDo6YnRyZWVfbWFwPEssIEssIHN0ZDo6bGVzczxLPiwKKyAgICAg
ICAgICAgICAgICAgICAgICBQcm9wYWdhdGluZ0NvdW50aW5nQWxsb2M8c3RkOjpwYWlyPGNvbnN0
IEssIEs+Pj47CisgIEJ0cmVlVGVzdDxCdHJlZU1hcCwgc3RkOjptYXA8SywgSz4+KCk7CisgIEJ0
cmVlQWxsb2NhdG9yVGVzdDxDb3VudGluZ0J0cmVlTWFwPigpOworICBCdHJlZU1hcFRlc3Q8QnRy
ZWVNYXA+KCk7Cit9CisKK1RFU1QoQnRyZWUsIHNldF9pbnQzMikgeyBTZXRUZXN0PGludDMyX3Q+
KCk7IH0KK1RFU1QoQnRyZWUsIHNldF9pbnQ2NCkgeyBTZXRUZXN0PGludDY0X3Q+KCk7IH0KK1RF
U1QoQnRyZWUsIHNldF9zdHJpbmcpIHsgU2V0VGVzdDxzdGQ6OnN0cmluZz4oKTsgfQorVEVTVChC
dHJlZSwgc2V0X3BhaXIpIHsgU2V0VGVzdDxzdGQ6OnBhaXI8aW50LCBpbnQ+PigpOyB9CitURVNU
KEJ0cmVlLCBtYXBfaW50MzIpIHsgTWFwVGVzdDxpbnQzMl90PigpOyB9CitURVNUKEJ0cmVlLCBt
YXBfaW50NjQpIHsgTWFwVGVzdDxpbnQ2NF90PigpOyB9CitURVNUKEJ0cmVlLCBtYXBfc3RyaW5n
KSB7IE1hcFRlc3Q8c3RkOjpzdHJpbmc+KCk7IH0KK1RFU1QoQnRyZWUsIG1hcF9wYWlyKSB7IE1h
cFRlc3Q8c3RkOjpwYWlyPGludCwgaW50Pj4oKTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSywg
aW50IE4gPSAyNTY+Cit2b2lkIE11bHRpU2V0VGVzdCgpIHsKKyAgRVhQRUNUX0VRKAorICAgICAg
c2l6ZW9mKGFic2w6OmJ0cmVlX211bHRpc2V0PEs+KSwKKyAgICAgIDIgKiBzaXplb2Yodm9pZCAq
KSArIHNpemVvZih0eXBlbmFtZSBhYnNsOjpidHJlZV9tdWx0aXNldDxLPjo6c2l6ZV90eXBlKSk7
CisgIHVzaW5nIEJ0cmVlTVNldCA9IGFic2w6OmJ0cmVlX211bHRpc2V0PEs+OworICB1c2luZyBD
b3VudGluZ0J0cmVlTVNldCA9CisgICAgICBhYnNsOjpidHJlZV9tdWx0aXNldDxLLCBzdGQ6Omxl
c3M8Sz4sIFByb3BhZ2F0aW5nQ291bnRpbmdBbGxvYzxLPj47CisgIEJ0cmVlTXVsdGlUZXN0PEJ0
cmVlTVNldCwgc3RkOjptdWx0aXNldDxLPj4oKTsKKyAgQnRyZWVBbGxvY2F0b3JUZXN0PENvdW50
aW5nQnRyZWVNU2V0PigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgaW50IE4gPSAyNTY+
Cit2b2lkIE11bHRpTWFwVGVzdCgpIHsKKyAgRVhQRUNUX0VRKHNpemVvZihhYnNsOjpidHJlZV9t
dWx0aW1hcDxLLCBLPiksCisgICAgICAgICAgICAyICogc2l6ZW9mKHZvaWQgKikgKworICAgICAg
ICAgICAgICAgIHNpemVvZih0eXBlbmFtZSBhYnNsOjpidHJlZV9tdWx0aW1hcDxLLCBLPjo6c2l6
ZV90eXBlKSk7CisgIHVzaW5nIEJ0cmVlTU1hcCA9IGFic2w6OmJ0cmVlX211bHRpbWFwPEssIEs+
OworICB1c2luZyBDb3VudGluZ0J0cmVlTU1hcCA9CisgICAgICBhYnNsOjpidHJlZV9tdWx0aW1h
cDxLLCBLLCBzdGQ6Omxlc3M8Sz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wYWdh
dGluZ0NvdW50aW5nQWxsb2M8c3RkOjpwYWlyPGNvbnN0IEssIEs+Pj47CisgIEJ0cmVlTXVsdGlU
ZXN0PEJ0cmVlTU1hcCwgc3RkOjptdWx0aW1hcDxLLCBLPj4oKTsKKyAgQnRyZWVNdWx0aU1hcFRl
c3Q8QnRyZWVNTWFwPigpOworICBCdHJlZUFsbG9jYXRvclRlc3Q8Q291bnRpbmdCdHJlZU1NYXA+
KCk7Cit9CisKK1RFU1QoQnRyZWUsIG11bHRpc2V0X2ludDMyKSB7IE11bHRpU2V0VGVzdDxpbnQz
Ml90PigpOyB9CitURVNUKEJ0cmVlLCBtdWx0aXNldF9pbnQ2NCkgeyBNdWx0aVNldFRlc3Q8aW50
NjRfdD4oKTsgfQorVEVTVChCdHJlZSwgbXVsdGlzZXRfc3RyaW5nKSB7IE11bHRpU2V0VGVzdDxz
dGQ6OnN0cmluZz4oKTsgfQorVEVTVChCdHJlZSwgbXVsdGlzZXRfcGFpcikgeyBNdWx0aVNldFRl
c3Q8c3RkOjpwYWlyPGludCwgaW50Pj4oKTsgfQorVEVTVChCdHJlZSwgbXVsdGltYXBfaW50MzIp
IHsgTXVsdGlNYXBUZXN0PGludDMyX3Q+KCk7IH0KK1RFU1QoQnRyZWUsIG11bHRpbWFwX2ludDY0
KSB7IE11bHRpTWFwVGVzdDxpbnQ2NF90PigpOyB9CitURVNUKEJ0cmVlLCBtdWx0aW1hcF9zdHJp
bmcpIHsgTXVsdGlNYXBUZXN0PHN0ZDo6c3RyaW5nPigpOyB9CitURVNUKEJ0cmVlLCBtdWx0aW1h
cF9wYWlyKSB7IE11bHRpTWFwVGVzdDxzdGQ6OnBhaXI8aW50LCBpbnQ+PigpOyB9CisKK3N0cnVj
dCBDb21wYXJlSW50VG9TdHJpbmcgeworICBib29sIG9wZXJhdG9yKCkoY29uc3Qgc3RkOjpzdHJp
bmcgJmEsIGNvbnN0IHN0ZDo6c3RyaW5nICZiKSBjb25zdCB7CisgICAgcmV0dXJuIGEgPCBiOwor
ICB9CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnN0cmluZyAmYSwgaW50IGIpIGNvbnN0
IHsKKyAgICByZXR1cm4gYSA8IGFic2w6OlN0ckNhdChiKTsKKyAgfQorICBib29sIG9wZXJhdG9y
KCkoaW50IGEsIGNvbnN0IHN0ZDo6c3RyaW5nICZiKSBjb25zdCB7CisgICAgcmV0dXJuIGFic2w6
OlN0ckNhdChhKSA8IGI7CisgIH0KKyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworfTsK
Kworc3RydWN0IE5vblRyYW5zcGFyZW50Q29tcGFyZSB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgorICBib29sIG9wZXJhdG9yKCkoY29uc3QgVCYgdCwgY29uc3QgVSYgdSkg
Y29uc3QgeworICAgIC8vIFRyZWF0aW5nIGFsbCBjb21wYXJhdG9ycyBhcyB0cmFuc3BhcmVudCBj
YW4gY2F1c2UgaW5lZmZpY2llbmNpZXMgKHNlZQorICAgIC8vIE4zNjU3IEMrKyBwcm9wb3NhbCku
IFRlc3QgdGhhdCBmb3IgY29tcGFyYXRvcnMgd2l0aG91dCAnaXNfdHJhbnNwYXJlbnQnCisgICAg
Ly8gYWxpYXMgKGxpa2UgdGhpcyBvbmUpLCB3ZSBkbyBub3QgYXR0ZW1wdCBoZXRlcm9nZW5lb3Vz
IGxvb2t1cC4KKyAgICBFWFBFQ1RfVFJVRSgoc3RkOjppc19zYW1lPFQsIFU+KCkpKTsKKyAgICBy
ZXR1cm4gdCA8IHU7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorYm9vbCBDYW5F
cmFzZVdpdGhFbXB0eUJyYWNlKFQgdCwgZGVjbHR5cGUodC5lcmFzZSh7fSkpICopIHsKKyAgcmV0
dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorYm9vbCBDYW5FcmFzZVdpdGhF
bXB0eUJyYWNlKFQsIC4uLikgeworICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgordm9pZCBUZXN0SGV0ZXJvZ2VuZW91cyhUIHRhYmxlKSB7CisgIGF1dG8gbGIgPSB0
YWJsZS5sb3dlcl9ib3VuZCgiMyIpOworICBFWFBFQ1RfRVEobGIsIHRhYmxlLmxvd2VyX2JvdW5k
KDMpKTsKKyAgRVhQRUNUX05FKGxiLCB0YWJsZS5sb3dlcl9ib3VuZCg0KSk7CisgIEVYUEVDVF9F
UShsYiwgdGFibGUubG93ZXJfYm91bmQoeyIzIn0pKTsKKyAgRVhQRUNUX05FKGxiLCB0YWJsZS5s
b3dlcl9ib3VuZCh7fSkpOworCisgIGF1dG8gdWIgPSB0YWJsZS51cHBlcl9ib3VuZCgiMyIpOwor
ICBFWFBFQ1RfRVEodWIsIHRhYmxlLnVwcGVyX2JvdW5kKDMpKTsKKyAgRVhQRUNUX05FKHViLCB0
YWJsZS51cHBlcl9ib3VuZCg1KSk7CisgIEVYUEVDVF9FUSh1YiwgdGFibGUudXBwZXJfYm91bmQo
eyIzIn0pKTsKKyAgRVhQRUNUX05FKHViLCB0YWJsZS51cHBlcl9ib3VuZCh7fSkpOworCisgIGF1
dG8gZXIgPSB0YWJsZS5lcXVhbF9yYW5nZSgiMyIpOworICBFWFBFQ1RfRVEoZXIsIHRhYmxlLmVx
dWFsX3JhbmdlKDMpKTsKKyAgRVhQRUNUX05FKGVyLCB0YWJsZS5lcXVhbF9yYW5nZSg0KSk7Cisg
IEVYUEVDVF9FUShlciwgdGFibGUuZXF1YWxfcmFuZ2UoeyIzIn0pKTsKKyAgRVhQRUNUX05FKGVy
LCB0YWJsZS5lcXVhbF9yYW5nZSh7fSkpOworCisgIGF1dG8gaXQgPSB0YWJsZS5maW5kKCIzIik7
CisgIEVYUEVDVF9FUShpdCwgdGFibGUuZmluZCgzKSk7CisgIEVYUEVDVF9ORShpdCwgdGFibGUu
ZmluZCg0KSk7CisgIEVYUEVDVF9FUShpdCwgdGFibGUuZmluZCh7IjMifSkpOworICBFWFBFQ1Rf
TkUoaXQsIHRhYmxlLmZpbmQoe30pKTsKKworICBFWFBFQ1RfVFJVRSh0YWJsZS5jb250YWlucygz
KSk7CisgIEVYUEVDVF9GQUxTRSh0YWJsZS5jb250YWlucyg0KSk7CisgIEVYUEVDVF9UUlVFKHRh
YmxlLmNvdW50KHsiMyJ9KSk7CisgIEVYUEVDVF9GQUxTRSh0YWJsZS5jb250YWlucyh7fSkpOwor
CisgIEVYUEVDVF9FUSgxLCB0YWJsZS5jb3VudCgzKSk7CisgIEVYUEVDVF9FUSgwLCB0YWJsZS5j
b3VudCg0KSk7CisgIEVYUEVDVF9FUSgxLCB0YWJsZS5jb3VudCh7IjMifSkpOworICBFWFBFQ1Rf
RVEoMCwgdGFibGUuY291bnQoe30pKTsKKworICBhdXRvIGNvcHkgPSB0YWJsZTsKKyAgY29weS5l
cmFzZSgzKTsKKyAgRVhQRUNUX0VRKHRhYmxlLnNpemUoKSAtIDEsIGNvcHkuc2l6ZSgpKTsKKyAg
Y29weS5lcmFzZSg0KTsKKyAgRVhQRUNUX0VRKHRhYmxlLnNpemUoKSAtIDEsIGNvcHkuc2l6ZSgp
KTsKKyAgY29weS5lcmFzZSh7IjUifSk7CisgIEVYUEVDVF9FUSh0YWJsZS5zaXplKCkgLSAyLCBj
b3B5LnNpemUoKSk7CisgIEVYUEVDVF9GQUxTRShDYW5FcmFzZVdpdGhFbXB0eUJyYWNlKHRhYmxl
LCBudWxscHRyKSk7CisKKyAgLy8gQWxzbyBydW4gaXQgd2l0aCBjb25zdCBUJi4KKyAgaWYgKHN0
ZDo6aXNfY2xhc3M8VD4oKSkgVGVzdEhldGVyb2dlbmVvdXM8Y29uc3QgVCAmPih0YWJsZSk7Cit9
CisKK1RFU1QoQnRyZWUsIEhldGVyb2dlbmVvdXNMb29rdXApIHsKKyAgVGVzdEhldGVyb2dlbmVv
dXMoYnRyZWVfc2V0PHN0ZDo6c3RyaW5nLCBDb21wYXJlSW50VG9TdHJpbmc+eyIxIiwgIjMiLCAi
NSJ9KTsKKyAgVGVzdEhldGVyb2dlbmVvdXMoYnRyZWVfbWFwPHN0ZDo6c3RyaW5nLCBpbnQsIENv
bXBhcmVJbnRUb1N0cmluZz57CisgICAgICB7IjEiLCAxfSwgeyIzIiwgM30sIHsiNSIsIDV9fSk7
CisgIFRlc3RIZXRlcm9nZW5lb3VzKAorICAgICAgYnRyZWVfbXVsdGlzZXQ8c3RkOjpzdHJpbmcs
IENvbXBhcmVJbnRUb1N0cmluZz57IjEiLCAiMyIsICI1In0pOworICBUZXN0SGV0ZXJvZ2VuZW91
cyhidHJlZV9tdWx0aW1hcDxzdGQ6OnN0cmluZywgaW50LCBDb21wYXJlSW50VG9TdHJpbmc+ewor
ICAgICAgeyIxIiwgMX0sIHsiMyIsIDN9LCB7IjUiLCA1fX0pOworCisgIC8vIE9ubHkgbWFwcyBo
YXZlIC5hdCgpCisgIGJ0cmVlX21hcDxzdGQ6OnN0cmluZywgaW50LCBDb21wYXJlSW50VG9TdHJp
bmc+IG1hcHsKKyAgICAgIHsiIiwgLTF9LCB7IjEiLCAxfSwgeyIzIiwgM30sIHsiNSIsIDV9fTsK
KyAgRVhQRUNUX0VRKDEsIG1hcC5hdCgxKSk7CisgIEVYUEVDVF9FUSgzLCBtYXAuYXQoeyIzIn0p
KTsKKyAgRVhQRUNUX0VRKC0xLCBtYXAuYXQoe30pKTsKKyAgY29uc3QgYXV0byAmY21hcCA9IG1h
cDsKKyAgRVhQRUNUX0VRKDEsIGNtYXAuYXQoMSkpOworICBFWFBFQ1RfRVEoMywgY21hcC5hdCh7
IjMifSkpOworICBFWFBFQ1RfRVEoLTEsIGNtYXAuYXQoe30pKTsKK30KKworVEVTVChCdHJlZSwg
Tm9IZXRlcm9nZW5lb3VzTG9va3VwV2l0aG91dEFsaWFzKSB7CisgIHVzaW5nIFN0cmluZ1NldCA9
IGFic2w6OmJ0cmVlX3NldDxzdGQ6OnN0cmluZywgTm9uVHJhbnNwYXJlbnRDb21wYXJlPjsKKyAg
U3RyaW5nU2V0IHM7CisgIEFTU0VSVF9UUlVFKHMuaW5zZXJ0KCJoZWxsbyIpLnNlY29uZCk7Cisg
IEFTU0VSVF9UUlVFKHMuaW5zZXJ0KCJ3b3JsZCIpLnNlY29uZCk7CisgIEVYUEVDVF9UUlVFKHMu
ZW5kKCkgPT0gcy5maW5kKCJibGFoIikpOworICBFWFBFQ1RfVFJVRShzLmJlZ2luKCkgPT0gcy5s
b3dlcl9ib3VuZCgiaGVsbG8iKSk7CisgIEVYUEVDVF9FUSgxLCBzLmNvdW50KCJ3b3JsZCIpKTsK
KyAgRVhQRUNUX1RSVUUocy5jb250YWlucygiaGVsbG8iKSk7CisgIEVYUEVDVF9UUlVFKHMuY29u
dGFpbnMoIndvcmxkIikpOworICBFWFBFQ1RfRkFMU0Uocy5jb250YWlucygiYmxhaCIpKTsKKwor
ICB1c2luZyBTdHJpbmdNdWx0aVNldCA9CisgICAgICBhYnNsOjpidHJlZV9tdWx0aXNldDxzdGQ6
OnN0cmluZywgTm9uVHJhbnNwYXJlbnRDb21wYXJlPjsKKyAgU3RyaW5nTXVsdGlTZXQgbXM7Cisg
IG1zLmluc2VydCgiaGVsbG8iKTsKKyAgbXMuaW5zZXJ0KCJ3b3JsZCIpOworICBtcy5pbnNlcnQo
IndvcmxkIik7CisgIEVYUEVDVF9UUlVFKG1zLmVuZCgpID09IG1zLmZpbmQoImJsYWgiKSk7Cisg
IEVYUEVDVF9UUlVFKG1zLmJlZ2luKCkgPT0gbXMubG93ZXJfYm91bmQoImhlbGxvIikpOworICBF
WFBFQ1RfRVEoMiwgbXMuY291bnQoIndvcmxkIikpOworICBFWFBFQ1RfVFJVRShtcy5jb250YWlu
cygiaGVsbG8iKSk7CisgIEVYUEVDVF9UUlVFKG1zLmNvbnRhaW5zKCJ3b3JsZCIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKG1zLmNvbnRhaW5zKCJibGFoIikpOworfQorCitURVNUKEJ0cmVlLCBEZWZhdWx0
VHJhbnNwYXJlbnQpIHsKKyAgeworICAgIC8vIGBpbnRgIGRvZXMgbm90IGhhdmUgYSBkZWZhdWx0
IHRyYW5zcGFyZW50IGNvbXBhcmF0b3IuCisgICAgLy8gVGhlIGlucHV0IHZhbHVlIGlzIGNvbnZl
cnRlZCB0byBrZXlfdHlwZS4KKyAgICBidHJlZV9zZXQ8aW50PiBzID0gezF9OworICAgIGRvdWJs
ZSBkID0gMS4xOworICAgIEVYUEVDVF9FUShzLmJlZ2luKCksIHMuZmluZChkKSk7CisgICAgRVhQ
RUNUX1RSVUUocy5jb250YWlucyhkKSk7CisgIH0KKworICB7CisgICAgLy8gYHN0ZDo6c3RyaW5n
YCBoYXMgaGV0ZXJvZ2VuZW91cyBzdXBwb3J0LgorICAgIGJ0cmVlX3NldDxzdGQ6OnN0cmluZz4g
cyA9IHsiQSJ9OworICAgIEVYUEVDVF9FUShzLmJlZ2luKCksIHMuZmluZChhYnNsOjpzdHJpbmdf
dmlldygiQSIpKSk7CisgICAgRVhQRUNUX1RSVUUocy5jb250YWlucyhhYnNsOjpzdHJpbmdfdmll
dygiQSIpKSk7CisgIH0KK30KKworY2xhc3MgU3RyaW5nTGlrZSB7CisgcHVibGljOgorICBTdHJp
bmdMaWtlKCkgPSBkZWZhdWx0OworCisgIFN0cmluZ0xpa2UoY29uc3QgY2hhciogcykgOiBzXyhz
KSB7ICAvLyBOT0xJTlQKKyAgICArK2NvbnN0cnVjdG9yX2NhbGxzXzsKKyAgfQorCisgIGJvb2wg
b3BlcmF0b3I8KGNvbnN0IFN0cmluZ0xpa2UmIGEpIGNvbnN0IHsKKyAgICByZXR1cm4gc18gPCBh
LnNfOworICB9CisKKyAgc3RhdGljIHZvaWQgY2xlYXJfY29uc3RydWN0b3JfY2FsbF9jb3VudCgp
IHsKKyAgICBjb25zdHJ1Y3Rvcl9jYWxsc18gPSAwOworICB9CisKKyAgc3RhdGljIGludCBjb25z
dHJ1Y3Rvcl9jYWxscygpIHsKKyAgICByZXR1cm4gY29uc3RydWN0b3JfY2FsbHNfOworICB9CisK
KyBwcml2YXRlOgorICBzdGF0aWMgaW50IGNvbnN0cnVjdG9yX2NhbGxzXzsKKyAgc3RkOjpzdHJp
bmcgc187Cit9OworCitpbnQgU3RyaW5nTGlrZTo6Y29uc3RydWN0b3JfY2FsbHNfID0gMDsKKwor
VEVTVChCdHJlZSwgSGV0ZXJvZ2VuZW91c0xvb2t1cERvZXNudERlZ3JhZGVQZXJmb3JtYW5jZSkg
eworICB1c2luZyBTdHJpbmdTZXQgPSBhYnNsOjpidHJlZV9zZXQ8U3RyaW5nTGlrZT47CisgIFN0
cmluZ1NldCBzOworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgQVNTRVJU
X1RSVUUocy5pbnNlcnQoYWJzbDo6U3RyQ2F0KGkpLmNfc3RyKCkpLnNlY29uZCk7CisgIH0KKyAg
U3RyaW5nTGlrZTo6Y2xlYXJfY29uc3RydWN0b3JfY2FsbF9jb3VudCgpOworICBzLmZpbmQoIjUw
Iik7CisgIEFTU0VSVF9FUSgxLCBTdHJpbmdMaWtlOjpjb25zdHJ1Y3Rvcl9jYWxscygpKTsKKwor
ICBTdHJpbmdMaWtlOjpjbGVhcl9jb25zdHJ1Y3Rvcl9jYWxsX2NvdW50KCk7CisgIHMuY29udGFp
bnMoIjUwIik7CisgIEFTU0VSVF9FUSgxLCBTdHJpbmdMaWtlOjpjb25zdHJ1Y3Rvcl9jYWxscygp
KTsKKworICBTdHJpbmdMaWtlOjpjbGVhcl9jb25zdHJ1Y3Rvcl9jYWxsX2NvdW50KCk7CisgIHMu
Y291bnQoIjUwIik7CisgIEFTU0VSVF9FUSgxLCBTdHJpbmdMaWtlOjpjb25zdHJ1Y3Rvcl9jYWxs
cygpKTsKKworICBTdHJpbmdMaWtlOjpjbGVhcl9jb25zdHJ1Y3Rvcl9jYWxsX2NvdW50KCk7Cisg
IHMubG93ZXJfYm91bmQoIjUwIik7CisgIEFTU0VSVF9FUSgxLCBTdHJpbmdMaWtlOjpjb25zdHJ1
Y3Rvcl9jYWxscygpKTsKKworICBTdHJpbmdMaWtlOjpjbGVhcl9jb25zdHJ1Y3Rvcl9jYWxsX2Nv
dW50KCk7CisgIHMudXBwZXJfYm91bmQoIjUwIik7CisgIEFTU0VSVF9FUSgxLCBTdHJpbmdMaWtl
Ojpjb25zdHJ1Y3Rvcl9jYWxscygpKTsKKworICBTdHJpbmdMaWtlOjpjbGVhcl9jb25zdHJ1Y3Rv
cl9jYWxsX2NvdW50KCk7CisgIHMuZXF1YWxfcmFuZ2UoIjUwIik7CisgIEFTU0VSVF9FUSgxLCBT
dHJpbmdMaWtlOjpjb25zdHJ1Y3Rvcl9jYWxscygpKTsKKworICBTdHJpbmdMaWtlOjpjbGVhcl9j
b25zdHJ1Y3Rvcl9jYWxsX2NvdW50KCk7CisgIHMuZXJhc2UoIjUwIik7CisgIEFTU0VSVF9FUSgx
LCBTdHJpbmdMaWtlOjpjb25zdHJ1Y3Rvcl9jYWxscygpKTsKK30KKworLy8gVmVyaWZ5IHRoYXQg
c3dhcHBpbmcgYnRyZWVzIHN3YXBzIHRoZSBrZXkgY29tcGFyaXNvbiBmdW5jdG9ycyBhbmQgdGhh
dCB3ZSBjYW4KKy8vIHVzZSBub24tZGVmYXVsdCBjb25zdHJ1Y3RpYmxlIGNvbXBhcmF0b3JzLgor
c3RydWN0IFN1YnN0cmluZ0xlc3MgeworICBTdWJzdHJpbmdMZXNzKCkgPSBkZWxldGU7CisgIGV4
cGxpY2l0IFN1YnN0cmluZ0xlc3MoaW50IGxlbmd0aCkgOiBuKGxlbmd0aCkge30KKyAgYm9vbCBv
cGVyYXRvcigpKGNvbnN0IHN0ZDo6c3RyaW5nICZhLCBjb25zdCBzdGQ6OnN0cmluZyAmYikgY29u
c3QgeworICAgIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyhhKS5zdWJzdHIoMCwgbikgPAorICAg
ICAgICAgICBhYnNsOjpzdHJpbmdfdmlldyhiKS5zdWJzdHIoMCwgbik7CisgIH0KKyAgaW50IG47
Cit9OworCitURVNUKEJ0cmVlLCBTd2FwS2V5Q29tcGFyZSkgeworICB1c2luZyBTdWJzdHJpbmdT
ZXQgPSBhYnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmcsIFN1YnN0cmluZ0xlc3M+OworICBTdWJz
dHJpbmdTZXQgczEoU3Vic3RyaW5nTGVzcygxKSwgU3Vic3RyaW5nU2V0OjphbGxvY2F0b3JfdHlw
ZSgpKTsKKyAgU3Vic3RyaW5nU2V0IHMyKFN1YnN0cmluZ0xlc3MoMiksIFN1YnN0cmluZ1NldDo6
YWxsb2NhdG9yX3R5cGUoKSk7CisKKyAgQVNTRVJUX1RSVUUoczEuaW5zZXJ0KCJhIikuc2Vjb25k
KTsKKyAgQVNTRVJUX0ZBTFNFKHMxLmluc2VydCgiYWEiKS5zZWNvbmQpOworCisgIEFTU0VSVF9U
UlVFKHMyLmluc2VydCgiYSIpLnNlY29uZCk7CisgIEFTU0VSVF9UUlVFKHMyLmluc2VydCgiYWEi
KS5zZWNvbmQpOworICBBU1NFUlRfRkFMU0UoczIuaW5zZXJ0KCJhYWEiKS5zZWNvbmQpOworCisg
IHN3YXAoczEsIHMyKTsKKworICBBU1NFUlRfVFJVRShzMS5pbnNlcnQoImIiKS5zZWNvbmQpOwor
ICBBU1NFUlRfVFJVRShzMS5pbnNlcnQoImJiIikuc2Vjb25kKTsKKyAgQVNTRVJUX0ZBTFNFKHMx
Lmluc2VydCgiYmJiIikuc2Vjb25kKTsKKworICBBU1NFUlRfVFJVRShzMi5pbnNlcnQoImIiKS5z
ZWNvbmQpOworICBBU1NFUlRfRkFMU0UoczIuaW5zZXJ0KCJiYiIpLnNlY29uZCk7Cit9CisKK1RF
U1QoQnRyZWUsIFVwcGVyQm91bmRSZWdyZXNzaW9uKSB7CisgIC8vIFJlZ3Jlc3MgYSBidWcgd2hl
cmUgdXBwZXJfYm91bmQgd291bGQgZGVmYXVsdC1jb25zdHJ1Y3QgYSBuZXcga2V5X2NvbXBhcmUK
KyAgLy8gaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBleGlzdGluZyBvbmUuCisgIHVzaW5nIFN1YnN0
cmluZ1NldCA9IGFic2w6OmJ0cmVlX3NldDxzdGQ6OnN0cmluZywgU3Vic3RyaW5nTGVzcz47Cisg
IFN1YnN0cmluZ1NldCBteV9zZXQoU3Vic3RyaW5nTGVzcygzKSk7CisgIG15X3NldC5pbnNlcnQo
ImFhYiIpOworICBteV9zZXQuaW5zZXJ0KCJhYmIiKTsKKyAgLy8gV2UgY2FsbCB1cHBlcl9ib3Vu
ZCgiYWFhIikuICBJZiB0aGlzIGNvcnJlY3RseSB1c2VzIHRoZSBsZW5ndGggMworICAvLyBjb21w
YXJhdG9yLCBhYWEgPCBhYWIgPCBhYmIsIHNvIHdlIHNob3VsZCBnZXQgYWFiIGFzIHRoZSByZXN1
bHQuCisgIC8vIElmIGl0IGluc3RlYWQgdXNlcyB0aGUgZGVmYXVsdC1jb25zdHJ1Y3RlZCBsZW5n
dGggMiBjb21wYXJhdG9yLAorICAvLyBhYSA9PSBhYSA8IGFiLCBzbyB3ZSdsbCBnZXQgYWJiIGFz
IG91ciByZXN1bHQuCisgIFN1YnN0cmluZ1NldDo6aXRlcmF0b3IgaXQgPSBteV9zZXQudXBwZXJf
Ym91bmQoImFhYSIpOworICBBU1NFUlRfVFJVRShpdCAhPSBteV9zZXQuZW5kKCkpOworICBFWFBF
Q1RfRVEoImFhYiIsICppdCk7Cit9CisKK1RFU1QoQnRyZWUsIENvbXBhcmlzb24pIHsKKyAgY29u
c3QgaW50IGtTZXRTaXplID0gMTIwMTsKKyAgYWJzbDo6YnRyZWVfc2V0PGludDY0X3Q+IG15X3Nl
dDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrU2V0U2l6ZTsgKytpKSB7CisgICAgbXlfc2V0Lmlu
c2VydChpKTsKKyAgfQorICBhYnNsOjpidHJlZV9zZXQ8aW50NjRfdD4gbXlfc2V0X2NvcHkobXlf
c2V0KTsKKyAgRVhQRUNUX1RSVUUobXlfc2V0X2NvcHkgPT0gbXlfc2V0KTsKKyAgRVhQRUNUX1RS
VUUobXlfc2V0ID09IG15X3NldF9jb3B5KTsKKyAgRVhQRUNUX0ZBTFNFKG15X3NldF9jb3B5ICE9
IG15X3NldCk7CisgIEVYUEVDVF9GQUxTRShteV9zZXQgIT0gbXlfc2V0X2NvcHkpOworCisgIG15
X3NldC5pbnNlcnQoa1NldFNpemUpOworICBFWFBFQ1RfRkFMU0UobXlfc2V0X2NvcHkgPT0gbXlf
c2V0KTsKKyAgRVhQRUNUX0ZBTFNFKG15X3NldCA9PSBteV9zZXRfY29weSk7CisgIEVYUEVDVF9U
UlVFKG15X3NldF9jb3B5ICE9IG15X3NldCk7CisgIEVYUEVDVF9UUlVFKG15X3NldCAhPSBteV9z
ZXRfY29weSk7CisKKyAgbXlfc2V0LmVyYXNlKGtTZXRTaXplIC0gMSk7CisgIEVYUEVDVF9GQUxT
RShteV9zZXRfY29weSA9PSBteV9zZXQpOworICBFWFBFQ1RfRkFMU0UobXlfc2V0ID09IG15X3Nl
dF9jb3B5KTsKKyAgRVhQRUNUX1RSVUUobXlfc2V0X2NvcHkgIT0gbXlfc2V0KTsKKyAgRVhQRUNU
X1RSVUUobXlfc2V0ICE9IG15X3NldF9jb3B5KTsKKworICBhYnNsOjpidHJlZV9tYXA8c3RkOjpz
dHJpbmcsIGludDY0X3Q+IG15X21hcDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrU2V0U2l6ZTsg
KytpKSB7CisgICAgbXlfbWFwW3N0ZDo6c3RyaW5nKGksICdhJyldID0gaTsKKyAgfQorICBhYnNs
OjpidHJlZV9tYXA8c3RkOjpzdHJpbmcsIGludDY0X3Q+IG15X21hcF9jb3B5KG15X21hcCk7Cisg
IEVYUEVDVF9UUlVFKG15X21hcF9jb3B5ID09IG15X21hcCk7CisgIEVYUEVDVF9UUlVFKG15X21h
cCA9PSBteV9tYXBfY29weSk7CisgIEVYUEVDVF9GQUxTRShteV9tYXBfY29weSAhPSBteV9tYXAp
OworICBFWFBFQ1RfRkFMU0UobXlfbWFwICE9IG15X21hcF9jb3B5KTsKKworICArK215X21hcF9j
b3B5W3N0ZDo6c3RyaW5nKDcsICdhJyldOworICBFWFBFQ1RfRkFMU0UobXlfbWFwX2NvcHkgPT0g
bXlfbWFwKTsKKyAgRVhQRUNUX0ZBTFNFKG15X21hcCA9PSBteV9tYXBfY29weSk7CisgIEVYUEVD
VF9UUlVFKG15X21hcF9jb3B5ICE9IG15X21hcCk7CisgIEVYUEVDVF9UUlVFKG15X21hcCAhPSBt
eV9tYXBfY29weSk7CisKKyAgbXlfbWFwX2NvcHkgPSBteV9tYXA7CisgIG15X21hcFsiaGVsbG8i
XSA9IGtTZXRTaXplOworICBFWFBFQ1RfRkFMU0UobXlfbWFwX2NvcHkgPT0gbXlfbWFwKTsKKyAg
RVhQRUNUX0ZBTFNFKG15X21hcCA9PSBteV9tYXBfY29weSk7CisgIEVYUEVDVF9UUlVFKG15X21h
cF9jb3B5ICE9IG15X21hcCk7CisgIEVYUEVDVF9UUlVFKG15X21hcCAhPSBteV9tYXBfY29weSk7
CisKKyAgbXlfbWFwLmVyYXNlKHN0ZDo6c3RyaW5nKGtTZXRTaXplIC0gMSwgJ2EnKSk7CisgIEVY
UEVDVF9GQUxTRShteV9tYXBfY29weSA9PSBteV9tYXApOworICBFWFBFQ1RfRkFMU0UobXlfbWFw
ID09IG15X21hcF9jb3B5KTsKKyAgRVhQRUNUX1RSVUUobXlfbWFwX2NvcHkgIT0gbXlfbWFwKTsK
KyAgRVhQRUNUX1RSVUUobXlfbWFwICE9IG15X21hcF9jb3B5KTsKK30KKworVEVTVChCdHJlZSwg
UmFuZ2VDdG9yU2FuaXR5KSB7CisgIHN0ZDo6dmVjdG9yPGludD4gaXZlYzsKKyAgaXZlYy5wdXNo
X2JhY2soMSk7CisgIHN0ZDo6bWFwPGludCwgaW50PiBpbWFwOworICBpbWFwLmluc2VydChzdGQ6
Om1ha2VfcGFpcigxLCAyKSk7CisgIGFic2w6OmJ0cmVlX211bHRpc2V0PGludD4gdG1zZXQoaXZl
Yy5iZWdpbigpLCBpdmVjLmVuZCgpKTsKKyAgYWJzbDo6YnRyZWVfbXVsdGltYXA8aW50LCBpbnQ+
IHRtbWFwKGltYXAuYmVnaW4oKSwgaW1hcC5lbmQoKSk7CisgIGFic2w6OmJ0cmVlX3NldDxpbnQ+
IHRzZXQoaXZlYy5iZWdpbigpLCBpdmVjLmVuZCgpKTsKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwg
aW50PiB0bWFwKGltYXAuYmVnaW4oKSwgaW1hcC5lbmQoKSk7CisgIEVYUEVDVF9FUSgxLCB0bXNl
dC5zaXplKCkpOworICBFWFBFQ1RfRVEoMSwgdG1tYXAuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDEs
IHRzZXQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDEsIHRtYXAuc2l6ZSgpKTsKK30KKworVEVTVChC
dHJlZSwgQnRyZWVNYXBDYW5Ib2xkTW92ZU9ubHlUeXBlcykgeworICBhYnNsOjpidHJlZV9tYXA8
c3RkOjpzdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmluZz4+IG07CisKKyAgc3RkOjp1
bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPiAmdiA9IG1bIkEiXTsKKyAgRVhQRUNUX1RSVUUodiA9PSBu
dWxscHRyKTsKKyAgdi5yZXNldChuZXcgc3RkOjpzdHJpbmcoIlgiKSk7CisKKyAgYXV0byBpdGVy
ID0gbS5maW5kKCJBIik7CisgIEVYUEVDVF9FUSgiWCIsICppdGVyLT5zZWNvbmQpOworfQorCitU
RVNUKEJ0cmVlLCBJbml0aWFsaXplckxpc3RDb25zdHJ1Y3RvcikgeworICBhYnNsOjpidHJlZV9z
ZXQ8c3RkOjpzdHJpbmc+IHNldCh7ImEiLCAiYiJ9KTsKKyAgRVhQRUNUX0VRKHNldC5jb3VudCgi
YSIpLCAxKTsKKyAgRVhQRUNUX0VRKHNldC5jb3VudCgiYiIpLCAxKTsKKworICBhYnNsOjpidHJl
ZV9tdWx0aXNldDxpbnQ+IG1zZXQoezEsIDEsIDR9KTsKKyAgRVhQRUNUX0VRKG1zZXQuY291bnQo
MSksIDIpOworICBFWFBFQ1RfRVEobXNldC5jb3VudCg0KSwgMSk7CisKKyAgYWJzbDo6YnRyZWVf
bWFwPGludCwgaW50PiBtYXAoe3sxLCA1fSwgezIsIDEwfX0pOworICBFWFBFQ1RfRVEobWFwWzFd
LCA1KTsKKyAgRVhQRUNUX0VRKG1hcFsyXSwgMTApOworCisgIGFic2w6OmJ0cmVlX211bHRpbWFw
PGludCwgaW50PiBtbWFwKHt7MSwgNX0sIHsxLCAxMH19KTsKKyAgYXV0byByYW5nZSA9IG1tYXAu
ZXF1YWxfcmFuZ2UoMSk7CisgIGF1dG8gaXQgPSByYW5nZS5maXJzdDsKKyAgQVNTRVJUX05FKGl0
LCByYW5nZS5zZWNvbmQpOworICBFWFBFQ1RfRVEoaXQtPnNlY29uZCwgNSk7CisgIEFTU0VSVF9O
RSgrK2l0LCByYW5nZS5zZWNvbmQpOworICBFWFBFQ1RfRVEoaXQtPnNlY29uZCwgMTApOworICBF
WFBFQ1RfRVEoKytpdCwgcmFuZ2Uuc2Vjb25kKTsKK30KKworVEVTVChCdHJlZSwgSW5pdGlhbGl6
ZXJMaXN0SW5zZXJ0KSB7CisgIGFic2w6OmJ0cmVlX3NldDxzdGQ6OnN0cmluZz4gc2V0OworICBz
ZXQuaW5zZXJ0KHsiYSIsICJiIn0pOworICBFWFBFQ1RfRVEoc2V0LmNvdW50KCJhIiksIDEpOwor
ICBFWFBFQ1RfRVEoc2V0LmNvdW50KCJiIiksIDEpOworCisgIGFic2w6OmJ0cmVlX211bHRpc2V0
PGludD4gbXNldDsKKyAgbXNldC5pbnNlcnQoezEsIDEsIDR9KTsKKyAgRVhQRUNUX0VRKG1zZXQu
Y291bnQoMSksIDIpOworICBFWFBFQ1RfRVEobXNldC5jb3VudCg0KSwgMSk7CisKKyAgYWJzbDo6
YnRyZWVfbWFwPGludCwgaW50PiBtYXA7CisgIG1hcC5pbnNlcnQoe3sxLCA1fSwgezIsIDEwfX0p
OworICAvLyBUZXN0IHRoYXQgaW5zZXJ0aW5nIG9uZSBlbGVtZW50IHVzaW5nIGFuIGluaXRpYWxp
emVyIGxpc3QgYWxzbyB3b3Jrcy4KKyAgbWFwLmluc2VydCh7MywgMTV9KTsKKyAgRVhQRUNUX0VR
KG1hcFsxXSwgNSk7CisgIEVYUEVDVF9FUShtYXBbMl0sIDEwKTsKKyAgRVhQRUNUX0VRKG1hcFsz
XSwgMTUpOworCisgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgaW50PiBtbWFwOworICBtbWFw
Lmluc2VydCh7ezEsIDV9LCB7MSwgMTB9fSk7CisgIGF1dG8gcmFuZ2UgPSBtbWFwLmVxdWFsX3Jh
bmdlKDEpOworICBhdXRvIGl0ID0gcmFuZ2UuZmlyc3Q7CisgIEFTU0VSVF9ORShpdCwgcmFuZ2Uu
c2Vjb25kKTsKKyAgRVhQRUNUX0VRKGl0LT5zZWNvbmQsIDUpOworICBBU1NFUlRfTkUoKytpdCwg
cmFuZ2Uuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKGl0LT5zZWNvbmQsIDEwKTsKKyAgRVhQRUNUX0VR
KCsraXQsIHJhbmdlLnNlY29uZCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb21wYXJlLCB0
eXBlbmFtZSBLPgordm9pZCBBc3NlcnRLZXlDb21wYXJlVG9BZGFwdGVkKCkgeworICB1c2luZyBB
ZGFwdGVkID0gdHlwZW5hbWUga2V5X2NvbXBhcmVfdG9fYWRhcHRlcjxDb21wYXJlPjo6dHlwZTsK
KyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19zYW1lPEFkYXB0ZWQsIENvbXBhcmU+Ojp2YWx1ZSwK
KyAgICAgICAgICAgICAgICAia2V5X2NvbXBhcmVfdG9fYWRhcHRlciBzaG91bGQgaGF2ZSBhZGFw
dGVkIHRoaXMgY29tcGFyYXRvci4iKTsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIHN0ZDo6aXNf
c2FtZTxhYnNsOjp3ZWFrX29yZGVyaW5nLAorICAgICAgICAgICAgICAgICAgIGFic2w6OnJlc3Vs
dF9vZl90PEFkYXB0ZWQoY29uc3QgSyAmLCBjb25zdCBLICYpPj46OnZhbHVlLAorICAgICAgIkFk
YXB0ZWQgY29tcGFyYXRvciBzaG91bGQgYmUgYSBrZXktY29tcGFyZS10byBjb21wYXJhdG9yLiIp
OworfQordGVtcGxhdGUgPHR5cGVuYW1lIENvbXBhcmUsIHR5cGVuYW1lIEs+Cit2b2lkIEFzc2Vy
dEtleUNvbXBhcmVUb05vdEFkYXB0ZWQoKSB7CisgIHVzaW5nIFVuYWRhcHRlZCA9IHR5cGVuYW1l
IGtleV9jb21wYXJlX3RvX2FkYXB0ZXI8Q29tcGFyZT46OnR5cGU7CisgIHN0YXRpY19hc3NlcnQo
CisgICAgICBzdGQ6OmlzX3NhbWU8VW5hZGFwdGVkLCBDb21wYXJlPjo6dmFsdWUsCisgICAgICAi
a2V5X2NvbXBhcmVfdG9fYWRhcHRlciBzaG91bGRuJ3QgaGF2ZSBhZGFwdGVkIHRoaXMgY29tcGFy
YXRvci4iKTsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIHN0ZDo6aXNfc2FtZTxib29sLAorICAg
ICAgICAgICAgICAgICAgIGFic2w6OnJlc3VsdF9vZl90PFVuYWRhcHRlZChjb25zdCBLICYsIGNv
bnN0IEsgJik+Pjo6dmFsdWUsCisgICAgICAiVW4tYWRhcHRlZCBjb21wYXJhdG9yIHNob3VsZCBy
ZXR1cm4gYm9vbC4iKTsKK30KKworVEVTVChCdHJlZSwgS2V5Q29tcGFyZVRvQWRhcHRlcikgewor
ICBBc3NlcnRLZXlDb21wYXJlVG9BZGFwdGVkPHN0ZDo6bGVzczxzdGQ6OnN0cmluZz4sIHN0ZDo6
c3RyaW5nPigpOworICBBc3NlcnRLZXlDb21wYXJlVG9BZGFwdGVkPHN0ZDo6Z3JlYXRlcjxzdGQ6
OnN0cmluZz4sIHN0ZDo6c3RyaW5nPigpOworICBBc3NlcnRLZXlDb21wYXJlVG9BZGFwdGVkPHN0
ZDo6bGVzczxhYnNsOjpzdHJpbmdfdmlldz4sIGFic2w6OnN0cmluZ192aWV3PigpOworICBBc3Nl
cnRLZXlDb21wYXJlVG9BZGFwdGVkPHN0ZDo6Z3JlYXRlcjxhYnNsOjpzdHJpbmdfdmlldz4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXc+KCk7CisgIEFzc2Vy
dEtleUNvbXBhcmVUb05vdEFkYXB0ZWQ8c3RkOjpsZXNzPGludD4sIGludD4oKTsKKyAgQXNzZXJ0
S2V5Q29tcGFyZVRvTm90QWRhcHRlZDxzdGQ6OmdyZWF0ZXI8aW50PiwgaW50PigpOworfQorCitU
RVNUKEJ0cmVlLCBSVmFsdWVJbnNlcnQpIHsKKyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisK
KyAgYWJzbDo6YnRyZWVfc2V0PE1vdmFibGVPbmx5SW5zdGFuY2U+IHNldDsKKyAgc2V0Lmluc2Vy
dChNb3ZhYmxlT25seUluc3RhbmNlKDEpKTsKKyAgc2V0Lmluc2VydChNb3ZhYmxlT25seUluc3Rh
bmNlKDMpKTsKKyAgTW92YWJsZU9ubHlJbnN0YW5jZSB0d28oMik7CisgIHNldC5pbnNlcnQoc2V0
LmZpbmQoTW92YWJsZU9ubHlJbnN0YW5jZSgzKSksIHN0ZDo6bW92ZSh0d28pKTsKKyAgYXV0byBp
dCA9IHNldC5maW5kKE1vdmFibGVPbmx5SW5zdGFuY2UoMikpOworICBBU1NFUlRfTkUoaXQsIHNl
dC5lbmQoKSk7CisgIEFTU0VSVF9ORSgrK2l0LCBzZXQuZW5kKCkpOworICBFWFBFQ1RfRVEoaXQt
PnZhbHVlKCksIDMpOworCisgIGFic2w6OmJ0cmVlX211bHRpc2V0PE1vdmFibGVPbmx5SW5zdGFu
Y2U+IG1zZXQ7CisgIE1vdmFibGVPbmx5SW5zdGFuY2UgemVybygwKTsKKyAgTW92YWJsZU9ubHlJ
bnN0YW5jZSB6ZXJvMigwKTsKKyAgbXNldC5pbnNlcnQoc3RkOjptb3ZlKHplcm8pKTsKKyAgbXNl
dC5pbnNlcnQobXNldC5maW5kKE1vdmFibGVPbmx5SW5zdGFuY2UoMCkpLCBzdGQ6Om1vdmUoemVy
bzIpKTsKKyAgRVhQRUNUX0VRKG1zZXQuY291bnQoTW92YWJsZU9ubHlJbnN0YW5jZSgwKSksIDIp
OworCisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIE1vdmFibGVPbmx5SW5zdGFuY2U+IG1hcDsKKyAg
c3RkOjpwYWlyPGNvbnN0IGludCwgTW92YWJsZU9ubHlJbnN0YW5jZT4gcDEgPSB7MSwgTW92YWJs
ZU9ubHlJbnN0YW5jZSg1KX07CisgIHN0ZDo6cGFpcjxjb25zdCBpbnQsIE1vdmFibGVPbmx5SW5z
dGFuY2U+IHAyID0gezIsIE1vdmFibGVPbmx5SW5zdGFuY2UoMTApfTsKKyAgc3RkOjpwYWlyPGNv
bnN0IGludCwgTW92YWJsZU9ubHlJbnN0YW5jZT4gcDMgPSB7MywgTW92YWJsZU9ubHlJbnN0YW5j
ZSgxNSl9OworICBtYXAuaW5zZXJ0KHN0ZDo6bW92ZShwMSkpOworICBtYXAuaW5zZXJ0KHN0ZDo6
bW92ZShwMykpOworICBtYXAuaW5zZXJ0KG1hcC5maW5kKDMpLCBzdGQ6Om1vdmUocDIpKTsKKyAg
QVNTRVJUX05FKG1hcC5maW5kKDIpLCBtYXAuZW5kKCkpOworICBFWFBFQ1RfRVEobWFwLmZpbmQo
MiktPnNlY29uZC52YWx1ZSgpLCAxMCk7CisKKyAgYWJzbDo6YnRyZWVfbXVsdGltYXA8aW50LCBN
b3ZhYmxlT25seUluc3RhbmNlPiBtbWFwOworICBzdGQ6OnBhaXI8Y29uc3QgaW50LCBNb3ZhYmxl
T25seUluc3RhbmNlPiBwNCA9IHsxLCBNb3ZhYmxlT25seUluc3RhbmNlKDUpfTsKKyAgc3RkOjpw
YWlyPGNvbnN0IGludCwgTW92YWJsZU9ubHlJbnN0YW5jZT4gcDUgPSB7MSwgTW92YWJsZU9ubHlJ
bnN0YW5jZSgxMCl9OworICBtbWFwLmluc2VydChzdGQ6Om1vdmUocDQpKTsKKyAgbW1hcC5pbnNl
cnQobW1hcC5maW5kKDEpLCBzdGQ6Om1vdmUocDUpKTsKKyAgYXV0byByYW5nZSA9IG1tYXAuZXF1
YWxfcmFuZ2UoMSk7CisgIGF1dG8gaXQxID0gcmFuZ2UuZmlyc3Q7CisgIEFTU0VSVF9ORShpdDEs
IHJhbmdlLnNlY29uZCk7CisgIEVYUEVDVF9FUShpdDEtPnNlY29uZC52YWx1ZSgpLCAxMCk7Cisg
IEFTU0VSVF9ORSgrK2l0MSwgcmFuZ2Uuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKGl0MS0+c2Vjb25k
LnZhbHVlKCksIDUpOworICBFWFBFQ1RfRVEoKytpdDEsIHJhbmdlLnNlY29uZCk7CisKKyAgRVhQ
RUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDApOworICBFWFBFQ1RfRVEodHJhY2tlci5zd2Fwcygp
LCAwKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2NsYXNzIEJ0cmVlTm9kZVBlZXIgeworIHB1
YmxpYzoKKyAgLy8gWWllbGRzIHRoZSBzaXplIG9mIGEgbGVhZiBub2RlIHdpdGggYSBzcGVjaWZp
YyBudW1iZXIgb2YgdmFsdWVzLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWVUeXBlPgorICBj
b25zdGV4cHIgc3RhdGljIHNpemVfdCBHZXRUYXJnZXROb2RlU2l6ZShzaXplX3QgdGFyZ2V0X3Zh
bHVlc19wZXJfbm9kZSkgeworICAgIHJldHVybiBidHJlZV9ub2RlPAorICAgICAgICBzZXRfcGFy
YW1zPFZhbHVlVHlwZSwgc3RkOjpsZXNzPFZhbHVlVHlwZT4sIHN0ZDo6YWxsb2NhdG9yPFZhbHVl
VHlwZT4sCisgICAgICAgICAgICAgICAgICAgLypUYXJnZXROb2RlU2l6ZT0qLzI1NiwgIC8vIFRo
aXMgcGFyYW1ldGVyIGlzbid0IHVzZWQgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAvKk11bHRp
PSovZmFsc2U+Pjo6U2l6ZVdpdGhOVmFsdWVzKHRhcmdldF92YWx1ZXNfcGVyX25vZGUpOworICB9
CisKKyAgLy8gWWllbGRzIHRoZSBudW1iZXIgb2YgdmFsdWVzIGluIGEgKG5vbi1yb290KSBsZWFm
IG5vZGUgZm9yIHRoaXMgc2V0LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2V0PgorICBjb25zdGV4
cHIgc3RhdGljIHNpemVfdCBHZXROdW1WYWx1ZXNQZXJOb2RlKCkgeworICAgIHJldHVybiBidHJl
ZV9ub2RlPHR5cGVuYW1lIFNldDo6cGFyYW1zX3R5cGU+OjprTm9kZVZhbHVlczsKKyAgfQorfTsK
KworbmFtZXNwYWNlIHsKKworLy8gQSBidHJlZSBzZXQgd2l0aCBhIHNwZWNpZmljIG51bWJlciBv
ZiB2YWx1ZXMgcGVyIG5vZGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5LCBpbnQgVGFyZ2V0VmFs
dWVzUGVyTm9kZSwgdHlwZW5hbWUgQ21wID0gc3RkOjpsZXNzPEtleT4+CitjbGFzcyBTaXplZEJ0
cmVlU2V0CisgICAgOiBwdWJsaWMgYnRyZWVfc2V0X2NvbnRhaW5lcjxidHJlZTwKKyAgICAgICAg
ICBzZXRfcGFyYW1zPEtleSwgQ21wLCBzdGQ6OmFsbG9jYXRvcjxLZXk+LAorICAgICAgICAgICAg
ICAgICAgICAgQnRyZWVOb2RlUGVlcjo6R2V0VGFyZ2V0Tm9kZVNpemU8S2V5PihUYXJnZXRWYWx1
ZXNQZXJOb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgIC8qTXVsdGk9Ki9mYWxzZT4+PiB7Cisg
IHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBTaXplZEJ0cmVlU2V0OjpidHJlZV9zZXRfY29udGFpbmVy
OworCisgcHVibGljOgorICBTaXplZEJ0cmVlU2V0KCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsK
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBTZXQ+Cit2b2lkIEV4cGVjdE9wZXJhdGlvbkNvdW50
cyhjb25zdCBpbnQgZXhwZWN0ZWRfbW92ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQgZXhwZWN0ZWRfY29tcGFyaXNvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+ICZ2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnN0YW5jZVRyYWNrZXIgKnRyYWNrZXIsIFNldCAqc2V0KSB7CisgIGZvciAoY29uc3Qg
aW50IHYgOiB2YWx1ZXMpIHNldC0+aW5zZXJ0KE1vdmFibGVPbmx5SW5zdGFuY2UodikpOworICBz
ZXQtPmNsZWFyKCk7CisgIEVYUEVDVF9FUSh0cmFja2VyLT5tb3ZlcygpLCBleHBlY3RlZF9tb3Zl
cyk7CisgIEVYUEVDVF9FUSh0cmFja2VyLT5jb21wYXJpc29ucygpLCBleHBlY3RlZF9jb21wYXJp
c29ucyk7CisgIEVYUEVDVF9FUSh0cmFja2VyLT5jb3BpZXMoKSwgMCk7CisgIEVYUEVDVF9FUSh0
cmFja2VyLT5zd2FwcygpLCAwKTsKKyAgdHJhY2tlci0+UmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCk7
Cit9CisKKy8vIE5vdGU6IHdoZW4gdGhlIHZhbHVlcyBpbiB0aGlzIHRlc3QgY2hhbmdlLCBpdCBp
cyBleHBlY3RlZCB0byBoYXZlIGFuIGltcGFjdAorLy8gb24gcGVyZm9ybWFuY2UuCitURVNUKEJ0
cmVlLCBNb3Zlc0NvbXBhcmlzb25zQ29waWVzU3dhcHNUcmFja2luZykgeworICBJbnN0YW5jZVRy
YWNrZXIgdHJhY2tlcjsKKyAgLy8gTm90ZTogdGhpcyBpcyBtaW5pbXVtIG51bWJlciBvZiB2YWx1
ZXMgcGVyIG5vZGUuCisgIFNpemVkQnRyZWVTZXQ8TW92YWJsZU9ubHlJbnN0YW5jZSwgLypUYXJn
ZXRWYWx1ZXNQZXJOb2RlPSovMz4gc2V0MzsKKyAgLy8gTm90ZTogdGhpcyBpcyB0aGUgZGVmYXVs
dCBudW1iZXIgb2YgdmFsdWVzIHBlciBub2RlIGZvciBhIHNldCBvZiBpbnQzMnMKKyAgLy8gKHdp
dGggNjQtYml0IHBvaW50ZXJzKS4KKyAgU2l6ZWRCdHJlZVNldDxNb3ZhYmxlT25seUluc3RhbmNl
LCAvKlRhcmdldFZhbHVlc1Blck5vZGU9Ki82MT4gc2V0NjE7CisgIFNpemVkQnRyZWVTZXQ8TW92
YWJsZU9ubHlJbnN0YW5jZSwgLypUYXJnZXRWYWx1ZXNQZXJOb2RlPSovMTAwPiBzZXQxMDA7CisK
KyAgLy8gRG9uJ3QgZGVwZW5kIG9uIGZsYWdzIGZvciByYW5kb20gdmFsdWVzIGJlY2F1c2UgdGhl
biB0aGUgZXhwZWN0YXRpb25zIHdpbGwKKyAgLy8gZmFpbCBpZiB0aGUgZmxhZ3MgY2hhbmdlLgor
ICBzdGQ6OnZlY3RvcjxpbnQ+IHZhbHVlcyA9CisgICAgICBHZW5lcmF0ZVZhbHVlc1dpdGhTZWVk
PGludD4oMTAwMDAsIDEgPDwgMjIsIC8qc2VlZD0qLzIzKTsKKworICBFWFBFQ1RfRVEoQnRyZWVO
b2RlUGVlcjo6R2V0TnVtVmFsdWVzUGVyTm9kZTxkZWNsdHlwZShzZXQzKT4oKSwgMyk7CisgIEVY
UEVDVF9FUShCdHJlZU5vZGVQZWVyOjpHZXROdW1WYWx1ZXNQZXJOb2RlPGRlY2x0eXBlKHNldDYx
KT4oKSwgNjEpOworICBFWFBFQ1RfRVEoQnRyZWVOb2RlUGVlcjo6R2V0TnVtVmFsdWVzUGVyTm9k
ZTxkZWNsdHlwZShzZXQxMDApPigpLCAxMDApOworICBpZiAoc2l6ZW9mKHZvaWQgKikgPT0gOCkg
eworICAgIEVYUEVDVF9FUShCdHJlZU5vZGVQZWVyOjpHZXROdW1WYWx1ZXNQZXJOb2RlPGFic2w6
OmJ0cmVlX3NldDxpbnQzMl90Pj4oKSwKKyAgICAgICAgICAgICAgQnRyZWVOb2RlUGVlcjo6R2V0
TnVtVmFsdWVzUGVyTm9kZTxkZWNsdHlwZShzZXQ2MSk+KCkpOworICB9CisKKyAgLy8gVGVzdCBr
ZXkgaW5zZXJ0aW9uL2RlbGV0aW9uIGluIHJhbmRvbSBvcmRlci4KKyAgRXhwZWN0T3BlcmF0aW9u
Q291bnRzKDQ1MjgxLCAxMzI1NTEsIHZhbHVlcywgJnRyYWNrZXIsICZzZXQzKTsKKyAgRXhwZWN0
T3BlcmF0aW9uQ291bnRzKDM4NjcxOCwgMTI5ODA3LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0NjEp
OworICBFeHBlY3RPcGVyYXRpb25Db3VudHMoNTg2NzYxLCAxMzAzMTAsIHZhbHVlcywgJnRyYWNr
ZXIsICZzZXQxMDApOworCisgIC8vIFRlc3Qga2V5IGluc2VydGlvbi9kZWxldGlvbiBpbiBzb3J0
ZWQgb3JkZXIuCisgIHN0ZDo6c29ydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAg
RXhwZWN0T3BlcmF0aW9uQ291bnRzKDI2NjM4LCA5MjEzNCwgdmFsdWVzLCAmdHJhY2tlciwgJnNl
dDMpOworICBFeHBlY3RPcGVyYXRpb25Db3VudHMoMjAyMDgsIDg3NzU3LCB2YWx1ZXMsICZ0cmFj
a2VyLCAmc2V0NjEpOworICBFeHBlY3RPcGVyYXRpb25Db3VudHMoMjAxMjQsIDk2NTgzLCB2YWx1
ZXMsICZ0cmFja2VyLCAmc2V0MTAwKTsKKworICAvLyBUZXN0IGtleSBpbnNlcnRpb24vZGVsZXRp
b24gaW4gcmV2ZXJzZSBzb3J0ZWQgb3JkZXIuCisgIHN0ZDo6cmV2ZXJzZSh2YWx1ZXMuYmVnaW4o
KSwgdmFsdWVzLmVuZCgpKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDQ5OTUxLCAxMTkzMjUs
IHZhbHVlcywgJnRyYWNrZXIsICZzZXQzKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDMzODgx
MywgMTE4MjY2LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0NjEpOworICBFeHBlY3RPcGVyYXRpb25D
b3VudHMoNTM0NTI5LCAxMjUyNzksIHZhbHVlcywgJnRyYWNrZXIsICZzZXQxMDApOworfQorCitz
dHJ1Y3QgTW92YWJsZU9ubHlJbnN0YW5jZVRocmVlV2F5Q29tcGFyZSB7CisgIGFic2w6OndlYWtf
b3JkZXJpbmcgb3BlcmF0b3IoKShjb25zdCBNb3ZhYmxlT25seUluc3RhbmNlICZhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTW92YWJsZU9ubHlJbnN0YW5jZSAmYikg
Y29uc3QgeworICAgIHJldHVybiBhLmNvbXBhcmUoYik7CisgIH0KK307CisKKy8vIE5vdGU6IHdo
ZW4gdGhlIHZhbHVlcyBpbiB0aGlzIHRlc3QgY2hhbmdlLCBpdCBpcyBleHBlY3RlZCB0byBoYXZl
IGFuIGltcGFjdAorLy8gb24gcGVyZm9ybWFuY2UuCitURVNUKEJ0cmVlLCBNb3Zlc0NvbXBhcmlz
b25zQ29waWVzU3dhcHNUcmFja2luZ1RocmVlV2F5Q29tcGFyZSkgeworICBJbnN0YW5jZVRyYWNr
ZXIgdHJhY2tlcjsKKyAgLy8gTm90ZTogdGhpcyBpcyBtaW5pbXVtIG51bWJlciBvZiB2YWx1ZXMg
cGVyIG5vZGUuCisgIFNpemVkQnRyZWVTZXQ8TW92YWJsZU9ubHlJbnN0YW5jZSwgLypUYXJnZXRW
YWx1ZXNQZXJOb2RlPSovMywKKyAgICAgICAgICAgICAgICBNb3ZhYmxlT25seUluc3RhbmNlVGhy
ZWVXYXlDb21wYXJlPgorICAgICAgc2V0MzsKKyAgLy8gTm90ZTogdGhpcyBpcyB0aGUgZGVmYXVs
dCBudW1iZXIgb2YgdmFsdWVzIHBlciBub2RlIGZvciBhIHNldCBvZiBpbnQzMnMKKyAgLy8gKHdp
dGggNjQtYml0IHBvaW50ZXJzKS4KKyAgU2l6ZWRCdHJlZVNldDxNb3ZhYmxlT25seUluc3RhbmNl
LCAvKlRhcmdldFZhbHVlc1Blck5vZGU9Ki82MSwKKyAgICAgICAgICAgICAgICBNb3ZhYmxlT25s
eUluc3RhbmNlVGhyZWVXYXlDb21wYXJlPgorICAgICAgc2V0NjE7CisgIFNpemVkQnRyZWVTZXQ8
TW92YWJsZU9ubHlJbnN0YW5jZSwgLypUYXJnZXRWYWx1ZXNQZXJOb2RlPSovMTAwLAorICAgICAg
ICAgICAgICAgIE1vdmFibGVPbmx5SW5zdGFuY2VUaHJlZVdheUNvbXBhcmU+CisgICAgICBzZXQx
MDA7CisKKyAgLy8gRG9uJ3QgZGVwZW5kIG9uIGZsYWdzIGZvciByYW5kb20gdmFsdWVzIGJlY2F1
c2UgdGhlbiB0aGUgZXhwZWN0YXRpb25zIHdpbGwKKyAgLy8gZmFpbCBpZiB0aGUgZmxhZ3MgY2hh
bmdlLgorICBzdGQ6OnZlY3RvcjxpbnQ+IHZhbHVlcyA9CisgICAgICBHZW5lcmF0ZVZhbHVlc1dp
dGhTZWVkPGludD4oMTAwMDAsIDEgPDwgMjIsIC8qc2VlZD0qLzIzKTsKKworICBFWFBFQ1RfRVEo
QnRyZWVOb2RlUGVlcjo6R2V0TnVtVmFsdWVzUGVyTm9kZTxkZWNsdHlwZShzZXQzKT4oKSwgMyk7
CisgIEVYUEVDVF9FUShCdHJlZU5vZGVQZWVyOjpHZXROdW1WYWx1ZXNQZXJOb2RlPGRlY2x0eXBl
KHNldDYxKT4oKSwgNjEpOworICBFWFBFQ1RfRVEoQnRyZWVOb2RlUGVlcjo6R2V0TnVtVmFsdWVz
UGVyTm9kZTxkZWNsdHlwZShzZXQxMDApPigpLCAxMDApOworICBpZiAoc2l6ZW9mKHZvaWQgKikg
PT0gOCkgeworICAgIEVYUEVDVF9FUShCdHJlZU5vZGVQZWVyOjpHZXROdW1WYWx1ZXNQZXJOb2Rl
PGFic2w6OmJ0cmVlX3NldDxpbnQzMl90Pj4oKSwKKyAgICAgICAgICAgICAgQnRyZWVOb2RlUGVl
cjo6R2V0TnVtVmFsdWVzUGVyTm9kZTxkZWNsdHlwZShzZXQ2MSk+KCkpOworICB9CisKKyAgLy8g
VGVzdCBrZXkgaW5zZXJ0aW9uL2RlbGV0aW9uIGluIHJhbmRvbSBvcmRlci4KKyAgRXhwZWN0T3Bl
cmF0aW9uQ291bnRzKDQ1MjgxLCAxMjI1NjAsIHZhbHVlcywgJnRyYWNrZXIsICZzZXQzKTsKKyAg
RXhwZWN0T3BlcmF0aW9uQ291bnRzKDM4NjcxOCwgMTE5ODE2LCB2YWx1ZXMsICZ0cmFja2VyLCAm
c2V0NjEpOworICBFeHBlY3RPcGVyYXRpb25Db3VudHMoNTg2NzYxLCAxMjAzMTksIHZhbHVlcywg
JnRyYWNrZXIsICZzZXQxMDApOworCisgIC8vIFRlc3Qga2V5IGluc2VydGlvbi9kZWxldGlvbiBp
biBzb3J0ZWQgb3JkZXIuCisgIHN0ZDo6c29ydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgp
KTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDI2NjM4LCA5MjEzNCwgdmFsdWVzLCAmdHJhY2tl
ciwgJnNldDMpOworICBFeHBlY3RPcGVyYXRpb25Db3VudHMoMjAyMDgsIDg3NzU3LCB2YWx1ZXMs
ICZ0cmFja2VyLCAmc2V0NjEpOworICBFeHBlY3RPcGVyYXRpb25Db3VudHMoMjAxMjQsIDk2NTgz
LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0MTAwKTsKKworICAvLyBUZXN0IGtleSBpbnNlcnRpb24v
ZGVsZXRpb24gaW4gcmV2ZXJzZSBzb3J0ZWQgb3JkZXIuCisgIHN0ZDo6cmV2ZXJzZSh2YWx1ZXMu
YmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDQ5OTUxLCAx
MDkzMjYsIHZhbHVlcywgJnRyYWNrZXIsICZzZXQzKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRz
KDMzODgxMywgMTA4MjY3LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0NjEpOworICBFeHBlY3RPcGVy
YXRpb25Db3VudHMoNTM0NTI5LCAxMTUyODAsIHZhbHVlcywgJnRyYWNrZXIsICZzZXQxMDApOwor
fQorCitzdHJ1Y3QgTm9EZWZhdWx0Q3RvciB7CisgIGludCBudW07CisgIGV4cGxpY2l0IE5vRGVm
YXVsdEN0b3IoaW50IGkpIDogbnVtKGkpIHt9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IE5vRGVmYXVsdEN0b3ImIGEsIGNvbnN0IE5vRGVmYXVsdEN0b3ImIGIpIHsKKyAgICByZXR1
cm4gYS5udW0gPCBiLm51bTsKKyAgfQorfTsKKworVEVTVChCdHJlZSwgQnRyZWVNYXBDYW5Ib2xk
Tm9EZWZhdWx0Q3RvclR5cGVzKSB7CisgIGFic2w6OmJ0cmVlX21hcDxOb0RlZmF1bHRDdG9yLCBO
b0RlZmF1bHRDdG9yPiBtOworCisgIGZvciAoaW50IGkgPSAxOyBpIDw9IDk5OyArK2kpIHsKKyAg
ICBTQ09QRURfVFJBQ0UoaSk7CisgICAgRVhQRUNUX1RSVUUobS5lbXBsYWNlKE5vRGVmYXVsdEN0
b3IoaSksIE5vRGVmYXVsdEN0b3IoMTAwIC0gaSkpLnNlY29uZCk7CisgIH0KKyAgRVhQRUNUX0ZB
TFNFKG0uZW1wbGFjZShOb0RlZmF1bHRDdG9yKDc4KSwgTm9EZWZhdWx0Q3RvcigwKSkuc2Vjb25k
KTsKKworICBhdXRvIGl0ZXI5OSA9IG0uZmluZChOb0RlZmF1bHRDdG9yKDk5KSk7CisgIEFTU0VS
VF9ORShpdGVyOTksIG0uZW5kKCkpOworICBFWFBFQ1RfRVEoaXRlcjk5LT5zZWNvbmQubnVtLCAx
KTsKKworICBhdXRvIGl0ZXIxID0gbS5maW5kKE5vRGVmYXVsdEN0b3IoMSkpOworICBBU1NFUlRf
TkUoaXRlcjEsIG0uZW5kKCkpOworICBFWFBFQ1RfRVEoaXRlcjEtPnNlY29uZC5udW0sIDk5KTsK
KworICBhdXRvIGl0ZXI1MCA9IG0uZmluZChOb0RlZmF1bHRDdG9yKDUwKSk7CisgIEFTU0VSVF9O
RShpdGVyNTAsIG0uZW5kKCkpOworICBFWFBFQ1RfRVEoaXRlcjUwLT5zZWNvbmQubnVtLCA1MCk7
CisKKyAgYXV0byBpdGVyMjUgPSBtLmZpbmQoTm9EZWZhdWx0Q3RvcigyNSkpOworICBBU1NFUlRf
TkUoaXRlcjI1LCBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKGl0ZXIyNS0+c2Vjb25kLm51bSwgNzUp
OworfQorCitURVNUKEJ0cmVlLCBCdHJlZU11bHRpbWFwQ2FuSG9sZE5vRGVmYXVsdEN0b3JUeXBl
cykgeworICBhYnNsOjpidHJlZV9tdWx0aW1hcDxOb0RlZmF1bHRDdG9yLCBOb0RlZmF1bHRDdG9y
PiBtOworCisgIGZvciAoaW50IGkgPSAxOyBpIDw9IDk5OyArK2kpIHsKKyAgICBTQ09QRURfVFJB
Q0UoaSk7CisgICAgbS5lbXBsYWNlKE5vRGVmYXVsdEN0b3IoaSksIE5vRGVmYXVsdEN0b3IoMTAw
IC0gaSkpOworICB9CisKKyAgYXV0byBpdGVyOTkgPSBtLmZpbmQoTm9EZWZhdWx0Q3Rvcig5OSkp
OworICBBU1NFUlRfTkUoaXRlcjk5LCBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKGl0ZXI5OS0+c2Vj
b25kLm51bSwgMSk7CisKKyAgYXV0byBpdGVyMSA9IG0uZmluZChOb0RlZmF1bHRDdG9yKDEpKTsK
KyAgQVNTRVJUX05FKGl0ZXIxLCBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKGl0ZXIxLT5zZWNvbmQu
bnVtLCA5OSk7CisKKyAgYXV0byBpdGVyNTAgPSBtLmZpbmQoTm9EZWZhdWx0Q3Rvcig1MCkpOwor
ICBBU1NFUlRfTkUoaXRlcjUwLCBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKGl0ZXI1MC0+c2Vjb25k
Lm51bSwgNTApOworCisgIGF1dG8gaXRlcjI1ID0gbS5maW5kKE5vRGVmYXVsdEN0b3IoMjUpKTsK
KyAgQVNTRVJUX05FKGl0ZXIyNSwgbS5lbmQoKSk7CisgIEVYUEVDVF9FUShpdGVyMjUtPnNlY29u
ZC5udW0sIDc1KTsKK30KKworVEVTVChCdHJlZSwgTWFwQXQpIHsKKyAgYWJzbDo6YnRyZWVfbWFw
PGludCwgaW50PiBtYXAgPSB7ezEsIDJ9LCB7MiwgNH19OworICBFWFBFQ1RfRVEobWFwLmF0KDEp
LCAyKTsKKyAgRVhQRUNUX0VRKG1hcC5hdCgyKSwgNCk7CisgIG1hcC5hdCgyKSA9IDg7CisgIGNv
bnN0IGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gJmNvbnN0X21hcCA9IG1hcDsKKyAgRVhQRUNU
X0VRKGNvbnN0X21hcC5hdCgxKSwgMik7CisgIEVYUEVDVF9FUShjb25zdF9tYXAuYXQoMiksIDgp
OworICB0cnkgeworICAgIG1hcC5hdCgzKTsKKyAgICBGQUlMKCkgPDwgIkV4Y2VwdGlvbiBub3Qg
dGhyb3duIjsKKyAgfSBjYXRjaCAoY29uc3Qgc3RkOjpvdXRfb2ZfcmFuZ2UmIGUpIHsKKyAgICBF
WFBFQ1RfU1RSRVEoZS53aGF0KCksICJhYnNsOjpidHJlZV9tYXA6OmF0Iik7CisgIH0KK30KKwor
VEVTVChCdHJlZSwgQnRyZWVNdWx0aXNldEVtcGxhY2UpIHsKKyAgY29uc3QgaW50IHZhbHVlX3Rv
X2luc2VydCA9IDEyMzQ1NjsKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBzOworICBhdXRv
IGl0ZXIgPSBzLmVtcGxhY2UodmFsdWVfdG9faW5zZXJ0KTsKKyAgQVNTRVJUX05FKGl0ZXIsIHMu
ZW5kKCkpOworICBFWFBFQ1RfRVEoKml0ZXIsIHZhbHVlX3RvX2luc2VydCk7CisgIGF1dG8gaXRl
cjIgPSBzLmVtcGxhY2UodmFsdWVfdG9faW5zZXJ0KTsKKyAgRVhQRUNUX05FKGl0ZXIyLCBpdGVy
KTsKKyAgQVNTRVJUX05FKGl0ZXIyLCBzLmVuZCgpKTsKKyAgRVhQRUNUX0VRKCppdGVyMiwgdmFs
dWVfdG9faW5zZXJ0KTsKKyAgYXV0byByZXN1bHQgPSBzLmVxdWFsX3JhbmdlKHZhbHVlX3RvX2lu
c2VydCk7CisgIEVYUEVDVF9FUShzdGQ6OmRpc3RhbmNlKHJlc3VsdC5maXJzdCwgcmVzdWx0LnNl
Y29uZCksIDIpOworfQorCitURVNUKEJ0cmVlLCBCdHJlZU11bHRpc2V0RW1wbGFjZUhpbnQpIHsK
KyAgY29uc3QgaW50IHZhbHVlX3RvX2luc2VydCA9IDEyMzQ1NjsKKyAgYWJzbDo6YnRyZWVfbXVs
dGlzZXQ8aW50PiBzOworICBhdXRvIGl0ZXIgPSBzLmVtcGxhY2UodmFsdWVfdG9faW5zZXJ0KTsK
KyAgQVNTRVJUX05FKGl0ZXIsIHMuZW5kKCkpOworICBFWFBFQ1RfRVEoKml0ZXIsIHZhbHVlX3Rv
X2luc2VydCk7CisgIGF1dG8gZW1wbGFjZV9pdGVyID0gcy5lbXBsYWNlX2hpbnQoaXRlciwgdmFs
dWVfdG9faW5zZXJ0KTsKKyAgRVhQRUNUX05FKGVtcGxhY2VfaXRlciwgaXRlcik7CisgIEFTU0VS
VF9ORShlbXBsYWNlX2l0ZXIsIHMuZW5kKCkpOworICBFWFBFQ1RfRVEoKmVtcGxhY2VfaXRlciwg
dmFsdWVfdG9faW5zZXJ0KTsKK30KKworVEVTVChCdHJlZSwgQnRyZWVNdWx0aW1hcEVtcGxhY2Up
IHsKKyAgY29uc3QgaW50IGtleV90b19pbnNlcnQgPSAxMjM0NTY7CisgIGNvbnN0IGNoYXIgdmFs
dWUwW10gPSAiYSI7CisgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgc3RkOjpzdHJpbmc+IHM7
CisgIGF1dG8gaXRlciA9IHMuZW1wbGFjZShrZXlfdG9faW5zZXJ0LCB2YWx1ZTApOworICBBU1NF
UlRfTkUoaXRlciwgcy5lbmQoKSk7CisgIEVYUEVDVF9FUShpdGVyLT5maXJzdCwga2V5X3RvX2lu
c2VydCk7CisgIEVYUEVDVF9FUShpdGVyLT5zZWNvbmQsIHZhbHVlMCk7CisgIGNvbnN0IGNoYXIg
dmFsdWUxW10gPSAiYiI7CisgIGF1dG8gaXRlcjIgPSBzLmVtcGxhY2Uoa2V5X3RvX2luc2VydCwg
dmFsdWUxKTsKKyAgRVhQRUNUX05FKGl0ZXIyLCBpdGVyKTsKKyAgQVNTRVJUX05FKGl0ZXIyLCBz
LmVuZCgpKTsKKyAgRVhQRUNUX0VRKGl0ZXIyLT5maXJzdCwga2V5X3RvX2luc2VydCk7CisgIEVY
UEVDVF9FUShpdGVyMi0+c2Vjb25kLCB2YWx1ZTEpOworICBhdXRvIHJlc3VsdCA9IHMuZXF1YWxf
cmFuZ2Uoa2V5X3RvX2luc2VydCk7CisgIEVYUEVDVF9FUShzdGQ6OmRpc3RhbmNlKHJlc3VsdC5m
aXJzdCwgcmVzdWx0LnNlY29uZCksIDIpOworfQorCitURVNUKEJ0cmVlLCBCdHJlZU11bHRpbWFw
RW1wbGFjZUhpbnQpIHsKKyAgY29uc3QgaW50IGtleV90b19pbnNlcnQgPSAxMjM0NTY7CisgIGNv
bnN0IGNoYXIgdmFsdWUwW10gPSAiYSI7CisgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgc3Rk
OjpzdHJpbmc+IHM7CisgIGF1dG8gaXRlciA9IHMuZW1wbGFjZShrZXlfdG9faW5zZXJ0LCB2YWx1
ZTApOworICBBU1NFUlRfTkUoaXRlciwgcy5lbmQoKSk7CisgIEVYUEVDVF9FUShpdGVyLT5maXJz
dCwga2V5X3RvX2luc2VydCk7CisgIEVYUEVDVF9FUShpdGVyLT5zZWNvbmQsIHZhbHVlMCk7Cisg
IGNvbnN0IGNoYXIgdmFsdWUxW10gPSAiYiI7CisgIGF1dG8gZW1wbGFjZV9pdGVyID0gcy5lbXBs
YWNlX2hpbnQoaXRlciwga2V5X3RvX2luc2VydCwgdmFsdWUxKTsKKyAgRVhQRUNUX05FKGVtcGxh
Y2VfaXRlciwgaXRlcik7CisgIEFTU0VSVF9ORShlbXBsYWNlX2l0ZXIsIHMuZW5kKCkpOworICBF
WFBFQ1RfRVEoZW1wbGFjZV9pdGVyLT5maXJzdCwga2V5X3RvX2luc2VydCk7CisgIEVYUEVDVF9F
UShlbXBsYWNlX2l0ZXItPnNlY29uZCwgdmFsdWUxKTsKK30KKworVEVTVChCdHJlZSwgQ29uc3RJ
dGVyYXRvckFjY2Vzc29ycykgeworICBhYnNsOjpidHJlZV9zZXQ8aW50PiBzZXQ7CisgIGZvciAo
aW50IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICBzZXQuaW5zZXJ0KGkpOworICB9CisKKyAg
YXV0byBpdCA9IHNldC5jYmVnaW4oKTsKKyAgYXV0byByX2l0ID0gc2V0LmNyYmVnaW4oKTsKKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSwgKytpdCwgKytyX2l0KSB7CisgICAgQVNTRVJU
X0VRKCppdCwgaSk7CisgICAgQVNTRVJUX0VRKCpyX2l0LCA5OSAtIGkpOworICB9CisgIEVYUEVD
VF9FUShpdCwgc2V0LmNlbmQoKSk7CisgIEVYUEVDVF9FUShyX2l0LCBzZXQuY3JlbmQoKSk7Cit9
CisKK1RFU1QoQnRyZWUsIFN0clNwbGl0Q29tcGF0aWJsZSkgeworICBjb25zdCBhYnNsOjpidHJl
ZV9zZXQ8c3RkOjpzdHJpbmc+IHNwbGl0X3NldCA9IGFic2w6OlN0clNwbGl0KCJhLGIsYyIsICcs
Jyk7CisgIGNvbnN0IGFic2w6OmJ0cmVlX3NldDxzdGQ6OnN0cmluZz4gZXhwZWN0ZWRfc2V0ID0g
eyJhIiwgImIiLCAiYyJ9OworCisgIEVYUEVDVF9FUShzcGxpdF9zZXQsIGV4cGVjdGVkX3NldCk7
Cit9CisKKy8vIFdlIGNhbid0IHVzZSBFWFBFQ1RfRVEvZXRjLiB0byBjb21wYXJlIGFic2w6Ondl
YWtfb3JkZXJpbmcgYmVjYXVzZSB0aGV5CisvLyBjb252ZXJ0IGxpdGVyYWwgMCB0byBpbnQgYW5k
IGFic2w6OndlYWtfb3JkZXJpbmcgY2FuIG9ubHkgYmUgY29tcGFyZWQgd2l0aAorLy8gbGl0ZXJh
bCAwLiBEZWZpbmluZyB0aGlzIGZ1bmN0aW9uIGFsbG93cyBmb3IgYXZvaWRpbmcgQ2xhbmdUaWR5
IHdhcm5pbmdzLgorYm9vbCBJZGVudGl0eShjb25zdCBib29sIGIpIHsgcmV0dXJuIGI7IH0KKwor
VEVTVChCdHJlZSwgVmFsdWVDb21wKSB7CisgIGFic2w6OmJ0cmVlX3NldDxpbnQ+IHM7CisgIEVY
UEVDVF9UUlVFKHMudmFsdWVfY29tcCgpKDEsIDIpKTsKKyAgRVhQRUNUX0ZBTFNFKHMudmFsdWVf
Y29tcCgpKDIsIDIpKTsKKyAgRVhQRUNUX0ZBTFNFKHMudmFsdWVfY29tcCgpKDIsIDEpKTsKKwor
ICBhYnNsOjpidHJlZV9tYXA8aW50LCBpbnQ+IG0xOworICBFWFBFQ1RfVFJVRShtMS52YWx1ZV9j
b21wKCkoc3RkOjptYWtlX3BhaXIoMSwgMCksIHN0ZDo6bWFrZV9wYWlyKDIsIDApKSk7CisgIEVY
UEVDVF9GQUxTRShtMS52YWx1ZV9jb21wKCkoc3RkOjptYWtlX3BhaXIoMiwgMCksIHN0ZDo6bWFr
ZV9wYWlyKDIsIDApKSk7CisgIEVYUEVDVF9GQUxTRShtMS52YWx1ZV9jb21wKCkoc3RkOjptYWtl
X3BhaXIoMiwgMCksIHN0ZDo6bWFrZV9wYWlyKDEsIDApKSk7CisKKyAgYWJzbDo6YnRyZWVfbWFw
PHN0ZDo6c3RyaW5nLCBpbnQ+IG0yOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIG0y
LnZhbHVlX2NvbXAoKShzdGQ6Om1ha2VfcGFpcigiYSIsIDApLCBzdGQ6Om1ha2VfcGFpcigiYiIs
IDApKSA8IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBtMi52YWx1ZV9jb21w
KCkoc3RkOjptYWtlX3BhaXIoImIiLCAwKSwgc3RkOjptYWtlX3BhaXIoImIiLCAwKSkgPT0gMCkp
OworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIG0yLnZhbHVlX2NvbXAoKShzdGQ6Om1h
a2VfcGFpcigiYiIsIDApLCBzdGQ6Om1ha2VfcGFpcigiYSIsIDApKSA+IDApKTsKK30KKworVEVT
VChCdHJlZSwgRGVmYXVsdENvbnN0cnVjdGlvbikgeworICBhYnNsOjpidHJlZV9zZXQ8aW50PiBz
OworICBhYnNsOjpidHJlZV9tYXA8aW50LCBpbnQ+IG07CisgIGFic2w6OmJ0cmVlX211bHRpc2V0
PGludD4gbXM7CisgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgaW50PiBtbTsKKworICBFWFBF
Q1RfVFJVRShzLmVtcHR5KCkpOworICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOworICBFWFBFQ1Rf
VFJVRShtcy5lbXB0eSgpKTsKKyAgRVhQRUNUX1RSVUUobW0uZW1wdHkoKSk7Cit9CisKK1RFU1Qo
QnRyZWUsIFN3aXNzVGFibGVIYXNoYWJsZSkgeworICBzdGF0aWMgY29uc3RleHByIGludCBrVmFs
dWVzID0gMTAwMDA7CisgIHN0ZDo6dmVjdG9yPGludD4gdmFsdWVzKGtWYWx1ZXMpOworICBzdGQ6
OmlvdGEodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSwgMCk7CisgIHN0ZDo6dmVjdG9yPHN0
ZDo6cGFpcjxpbnQsIGludD4+IG1hcF92YWx1ZXM7CisgIGZvciAoaW50IHYgOiB2YWx1ZXMpIG1h
cF92YWx1ZXMuZW1wbGFjZV9iYWNrKHYsIC12KTsKKworICB1c2luZyBzZXQgPSBhYnNsOjpidHJl
ZV9zZXQ8aW50PjsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNs
SGFzaENvcnJlY3RseSh7CisgICAgICBzZXR7fSwKKyAgICAgIHNldHsxfSwKKyAgICAgIHNldHsy
fSwKKyAgICAgIHNldHsxLCAyfSwKKyAgICAgIHNldHsyLCAxfSwKKyAgICAgIHNldCh2YWx1ZXMu
YmVnaW4oKSwgdmFsdWVzLmVuZCgpKSwKKyAgICAgIHNldCh2YWx1ZXMucmJlZ2luKCksIHZhbHVl
cy5yZW5kKCkpLAorICB9KSk7CisKKyAgdXNpbmcgbXNldCA9IGFic2w6OmJ0cmVlX211bHRpc2V0
PGludD47CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hD
b3JyZWN0bHkoeworICAgICAgbXNldHt9LAorICAgICAgbXNldHsxfSwKKyAgICAgIG1zZXR7MSwg
MX0sCisgICAgICBtc2V0ezJ9LAorICAgICAgbXNldHsyLCAyfSwKKyAgICAgIG1zZXR7MSwgMn0s
CisgICAgICBtc2V0ezEsIDEsIDJ9LAorICAgICAgbXNldHsxLCAyLCAyfSwKKyAgICAgIG1zZXR7
MSwgMSwgMiwgMn0sCisgICAgICBtc2V0KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpLAor
ICAgICAgbXNldCh2YWx1ZXMucmJlZ2luKCksIHZhbHVlcy5yZW5kKCkpLAorICB9KSk7CisKKyAg
dXNpbmcgbWFwID0gYWJzbDo6YnRyZWVfbWFwPGludCwgaW50PjsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSh7CisgICAgICBtYXB7fSwK
KyAgICAgIG1hcHt7MSwgMH19LAorICAgICAgbWFwe3sxLCAxfX0sCisgICAgICBtYXB7ezIsIDB9
fSwKKyAgICAgIG1hcHt7MiwgMn19LAorICAgICAgbWFwe3sxLCAwfSwgezIsIDF9fSwKKyAgICAg
IG1hcChtYXBfdmFsdWVzLmJlZ2luKCksIG1hcF92YWx1ZXMuZW5kKCkpLAorICAgICAgbWFwKG1h
cF92YWx1ZXMucmJlZ2luKCksIG1hcF92YWx1ZXMucmVuZCgpKSwKKyAgfSkpOworCisgIHVzaW5n
IG1tYXAgPSBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIGludD47CisgIEVYUEVDVF9UUlVFKGFi
c2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoeworICAgICAgbW1hcHt9
LAorICAgICAgbW1hcHt7MSwgMH19LAorICAgICAgbW1hcHt7MSwgMX19LAorICAgICAgbW1hcHt7
MSwgMH0sIHsxLCAxfX0sCisgICAgICBtbWFwe3sxLCAxfSwgezEsIDB9fSwKKyAgICAgIG1tYXB7
ezIsIDB9fSwKKyAgICAgIG1tYXB7ezIsIDJ9fSwKKyAgICAgIG1tYXB7ezEsIDB9LCB7MiwgMX19
LAorICAgICAgbW1hcChtYXBfdmFsdWVzLmJlZ2luKCksIG1hcF92YWx1ZXMuZW5kKCkpLAorICAg
ICAgbW1hcChtYXBfdmFsdWVzLnJiZWdpbigpLCBtYXBfdmFsdWVzLnJlbmQoKSksCisgIH0pKTsK
K30KKworVEVTVChCdHJlZSwgQ29tcGFyYWJsZVNldCkgeworICBhYnNsOjpidHJlZV9zZXQ8aW50
PiBzMSA9IHsxLCAyfTsKKyAgYWJzbDo6YnRyZWVfc2V0PGludD4gczIgPSB7MiwgM307CisgIEVY
UEVDVF9MVChzMSwgczIpOworICBFWFBFQ1RfTEUoczEsIHMyKTsKKyAgRVhQRUNUX0xFKHMxLCBz
MSk7CisgIEVYUEVDVF9HVChzMiwgczEpOworICBFWFBFQ1RfR0UoczIsIHMxKTsKKyAgRVhQRUNU
X0dFKHMxLCBzMSk7Cit9CisKK1RFU1QoQnRyZWUsIENvbXBhcmFibGVTZXRzRGlmZmVyZW50TGVu
Z3RoKSB7CisgIGFic2w6OmJ0cmVlX3NldDxpbnQ+IHMxID0gezEsIDJ9OworICBhYnNsOjpidHJl
ZV9zZXQ8aW50PiBzMiA9IHsxLCAyLCAzfTsKKyAgRVhQRUNUX0xUKHMxLCBzMik7CisgIEVYUEVD
VF9MRShzMSwgczIpOworICBFWFBFQ1RfR1QoczIsIHMxKTsKKyAgRVhQRUNUX0dFKHMyLCBzMSk7
Cit9CisKK1RFU1QoQnRyZWUsIENvbXBhcmFibGVNdWx0aXNldCkgeworICBhYnNsOjpidHJlZV9t
dWx0aXNldDxpbnQ+IHMxID0gezEsIDJ9OworICBhYnNsOjpidHJlZV9tdWx0aXNldDxpbnQ+IHMy
ID0gezIsIDN9OworICBFWFBFQ1RfTFQoczEsIHMyKTsKKyAgRVhQRUNUX0xFKHMxLCBzMik7Cisg
IEVYUEVDVF9MRShzMSwgczEpOworICBFWFBFQ1RfR1QoczIsIHMxKTsKKyAgRVhQRUNUX0dFKHMy
LCBzMSk7CisgIEVYUEVDVF9HRShzMSwgczEpOworfQorCitURVNUKEJ0cmVlLCBDb21wYXJhYmxl
TWFwKSB7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gczEgPSB7ezEsIDJ9fTsKKyAgYWJz
bDo6YnRyZWVfbWFwPGludCwgaW50PiBzMiA9IHt7MiwgM319OworICBFWFBFQ1RfTFQoczEsIHMy
KTsKKyAgRVhQRUNUX0xFKHMxLCBzMik7CisgIEVYUEVDVF9MRShzMSwgczEpOworICBFWFBFQ1Rf
R1QoczIsIHMxKTsKKyAgRVhQRUNUX0dFKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMSwgczEpOwor
fQorCitURVNUKEJ0cmVlLCBDb21wYXJhYmxlTXVsdGltYXApIHsKKyAgYWJzbDo6YnRyZWVfbXVs
dGltYXA8aW50LCBpbnQ+IHMxID0ge3sxLCAyfX07CisgIGFic2w6OmJ0cmVlX211bHRpbWFwPGlu
dCwgaW50PiBzMiA9IHt7MiwgM319OworICBFWFBFQ1RfTFQoczEsIHMyKTsKKyAgRVhQRUNUX0xF
KHMxLCBzMik7CisgIEVYUEVDVF9MRShzMSwgczEpOworICBFWFBFQ1RfR1QoczIsIHMxKTsKKyAg
RVhQRUNUX0dFKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMSwgczEpOworfQorCitURVNUKEJ0cmVl
LCBDb21wYXJhYmxlU2V0V2l0aEN1c3RvbUNvbXBhcmF0b3IpIHsKKyAgLy8gQXMgc3BlY2lmaWVk
IGJ5CisgIC8vIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi93ZzIxL2RvY3MvcGFw
ZXJzLzIwMTIvbjMzMzcucGRmIHNlY3Rpb24KKyAgLy8gW2NvbnRhaW5lci5yZXF1aXJlbWVudHMu
Z2VuZXJhbF0uMTIsIG9yZGVyaW5nIGFzc29jaWF0aXZlIGNvbnRhaW5lcnMgYWx3YXlzCisgIC8v
IHVzZXMgZGVmYXVsdCAnPCcgb3BlcmF0b3IKKyAgLy8gLSBldmVuIGlmIG90aGVyd2lzZSB0aGUg
Y29udGFpbmVyIHVzZXMgY3VzdG9tIGZ1bmN0b3IuCisgIGFic2w6OmJ0cmVlX3NldDxpbnQsIHN0
ZDo6Z3JlYXRlcjxpbnQ+PiBzMSA9IHsxLCAyfTsKKyAgYWJzbDo6YnRyZWVfc2V0PGludCwgc3Rk
OjpncmVhdGVyPGludD4+IHMyID0gezIsIDN9OworICBFWFBFQ1RfTFQoczEsIHMyKTsKKyAgRVhQ
RUNUX0xFKHMxLCBzMik7CisgIEVYUEVDVF9MRShzMSwgczEpOworICBFWFBFQ1RfR1QoczIsIHMx
KTsKKyAgRVhQRUNUX0dFKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMSwgczEpOworfQorCitURVNU
KEJ0cmVlLCBFcmFzZVJldHVybnNJdGVyYXRvcikgeworICBhYnNsOjpidHJlZV9zZXQ8aW50PiBz
ZXQgPSB7MSwgMiwgMywgNCwgNX07CisgIGF1dG8gcmVzdWx0X2l0ID0gc2V0LmVyYXNlKHNldC5i
ZWdpbigpLCBzZXQuZmluZCgzKSk7CisgIEVYUEVDVF9FUShyZXN1bHRfaXQsIHNldC5maW5kKDMp
KTsKKyAgcmVzdWx0X2l0ID0gc2V0LmVyYXNlKHNldC5maW5kKDUpKTsKKyAgRVhQRUNUX0VRKHJl
c3VsdF9pdCwgc2V0LmVuZCgpKTsKK30KKworVEVTVChCdHJlZSwgRXh0cmFjdEFuZEluc2VydE5v
ZGVIYW5kbGVTZXQpIHsKKyAgYWJzbDo6YnRyZWVfc2V0PGludD4gc3JjMSA9IHsxLCAyLCAzLCA0
LCA1fTsKKyAgYXV0byBuaCA9IHNyYzEuZXh0cmFjdChzcmMxLmZpbmQoMykpOworICBFWFBFQ1Rf
VEhBVChzcmMxLCBFbGVtZW50c0FyZSgxLCAyLCA0LCA1KSk7CisgIGFic2w6OmJ0cmVlX3NldDxp
bnQ+IG90aGVyOworICBhYnNsOjpidHJlZV9zZXQ8aW50Pjo6aW5zZXJ0X3JldHVybl90eXBlIHJl
cyA9IG90aGVyLmluc2VydChzdGQ6Om1vdmUobmgpKTsKKyAgRVhQRUNUX1RIQVQob3RoZXIsIEVs
ZW1lbnRzQXJlKDMpKTsKKyAgRVhQRUNUX0VRKHJlcy5wb3NpdGlvbiwgb3RoZXIuZmluZCgzKSk7
CisgIEVYUEVDVF9UUlVFKHJlcy5pbnNlcnRlZCk7CisgIEVYUEVDVF9UUlVFKHJlcy5ub2RlLmVt
cHR5KCkpOworCisgIGFic2w6OmJ0cmVlX3NldDxpbnQ+IHNyYzIgPSB7MywgNH07CisgIG5oID0g
c3JjMi5leHRyYWN0KHNyYzIuZmluZCgzKSk7CisgIEVYUEVDVF9USEFUKHNyYzIsIEVsZW1lbnRz
QXJlKDQpKTsKKyAgcmVzID0gb3RoZXIuaW5zZXJ0KHN0ZDo6bW92ZShuaCkpOworICBFWFBFQ1Rf
VEhBVChvdGhlciwgRWxlbWVudHNBcmUoMykpOworICBFWFBFQ1RfRVEocmVzLnBvc2l0aW9uLCBv
dGhlci5maW5kKDMpKTsKKyAgRVhQRUNUX0ZBTFNFKHJlcy5pbnNlcnRlZCk7CisgIEFTU0VSVF9G
QUxTRShyZXMubm9kZS5lbXB0eSgpKTsKKyAgRVhQRUNUX0VRKHJlcy5ub2RlLnZhbHVlKCksIDMp
OworfQorCitzdHJ1Y3QgRGVyZWYgeworICBib29sIG9wZXJhdG9yKCkoY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPGludD4gJmxocywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxpbnQ+ICZyaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gKmxocyA8ICpyaHM7CisgIH0KK307CisK
K1RFU1QoQnRyZWUsIEV4dHJhY3RXaXRoVW5pcXVlUHRyKSB7CisgIGFic2w6OmJ0cmVlX3NldDxz
dGQ6OnVuaXF1ZV9wdHI8aW50PiwgRGVyZWY+IHM7CisgIHMuaW5zZXJ0KGFic2w6Om1ha2VfdW5p
cXVlPGludD4oMSkpOworICBzLmluc2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDIpKTsKKyAg
cy5pbnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8aW50PigzKSk7CisgIHMuaW5zZXJ0KGFic2w6Om1h
a2VfdW5pcXVlPGludD4oNCkpOworICBzLmluc2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDUp
KTsKKyAgYXV0byBuaCA9IHMuZXh0cmFjdChzLmZpbmQoYWJzbDo6bWFrZV91bmlxdWU8aW50Pigz
KSkpOworICBFWFBFQ1RfRVEocy5zaXplKCksIDQpOworICBFWFBFQ1RfRVEoKm5oLnZhbHVlKCks
IDMpOworICBzLmluc2VydChzdGQ6Om1vdmUobmgpKTsKKyAgRVhQRUNUX0VRKHMuc2l6ZSgpLCA1
KTsKK30KKworVEVTVChCdHJlZSwgRXh0cmFjdEFuZEluc2VydE5vZGVIYW5kbGVNdWx0aVNldCkg
eworICBhYnNsOjpidHJlZV9tdWx0aXNldDxpbnQ+IHNyYzEgPSB7MSwgMiwgMywgMywgNCwgNX07
CisgIGF1dG8gbmggPSBzcmMxLmV4dHJhY3Qoc3JjMS5maW5kKDMpKTsKKyAgRVhQRUNUX1RIQVQo
c3JjMSwgRWxlbWVudHNBcmUoMSwgMiwgMywgNCwgNSkpOworICBhYnNsOjpidHJlZV9tdWx0aXNl
dDxpbnQ+IG90aGVyOworICBhdXRvIHJlcyA9IG90aGVyLmluc2VydChzdGQ6Om1vdmUobmgpKTsK
KyAgRVhQRUNUX1RIQVQob3RoZXIsIEVsZW1lbnRzQXJlKDMpKTsKKyAgRVhQRUNUX0VRKHJlcywg
b3RoZXIuZmluZCgzKSk7CisKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBzcmMyID0gezMs
IDR9OworICBuaCA9IHNyYzIuZXh0cmFjdChzcmMyLmZpbmQoMykpOworICBFWFBFQ1RfVEhBVChz
cmMyLCBFbGVtZW50c0FyZSg0KSk7CisgIHJlcyA9IG90aGVyLmluc2VydChzdGQ6Om1vdmUobmgp
KTsKKyAgRVhQRUNUX1RIQVQob3RoZXIsIEVsZW1lbnRzQXJlKDMsIDMpKTsKKyAgRVhQRUNUX0VR
KHJlcywgKytvdGhlci5maW5kKDMpKTsKK30KKworVEVTVChCdHJlZSwgRXh0cmFjdEFuZEluc2Vy
dE5vZGVIYW5kbGVNYXApIHsKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwgaW50PiBzcmMxID0ge3sx
LCAyfSwgezMsIDR9LCB7NSwgNn19OworICBhdXRvIG5oID0gc3JjMS5leHRyYWN0KHNyYzEuZmlu
ZCgzKSk7CisgIEVYUEVDVF9USEFUKHNyYzEsIEVsZW1lbnRzQXJlKFBhaXIoMSwgMiksIFBhaXIo
NSwgNikpKTsKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwgaW50PiBvdGhlcjsKKyAgYWJzbDo6YnRy
ZWVfbWFwPGludCwgaW50Pjo6aW5zZXJ0X3JldHVybl90eXBlIHJlcyA9CisgICAgICBvdGhlci5p
bnNlcnQoc3RkOjptb3ZlKG5oKSk7CisgIEVYUEVDVF9USEFUKG90aGVyLCBFbGVtZW50c0FyZShQ
YWlyKDMsIDQpKSk7CisgIEVYUEVDVF9FUShyZXMucG9zaXRpb24sIG90aGVyLmZpbmQoMykpOwor
ICBFWFBFQ1RfVFJVRShyZXMuaW5zZXJ0ZWQpOworICBFWFBFQ1RfVFJVRShyZXMubm9kZS5lbXB0
eSgpKTsKKworICBhYnNsOjpidHJlZV9tYXA8aW50LCBpbnQ+IHNyYzIgPSB7ezMsIDZ9fTsKKyAg
bmggPSBzcmMyLmV4dHJhY3Qoc3JjMi5maW5kKDMpKTsKKyAgRVhQRUNUX1RSVUUoc3JjMi5lbXB0
eSgpKTsKKyAgcmVzID0gb3RoZXIuaW5zZXJ0KHN0ZDo6bW92ZShuaCkpOworICBFWFBFQ1RfVEhB
VChvdGhlciwgRWxlbWVudHNBcmUoUGFpcigzLCA0KSkpOworICBFWFBFQ1RfRVEocmVzLnBvc2l0
aW9uLCBvdGhlci5maW5kKDMpKTsKKyAgRVhQRUNUX0ZBTFNFKHJlcy5pbnNlcnRlZCk7CisgIEFT
U0VSVF9GQUxTRShyZXMubm9kZS5lbXB0eSgpKTsKKyAgRVhQRUNUX0VRKHJlcy5ub2RlLmtleSgp
LCAzKTsKKyAgRVhQRUNUX0VRKHJlcy5ub2RlLm1hcHBlZCgpLCA2KTsKK30KKworVEVTVChCdHJl
ZSwgRXh0cmFjdEFuZEluc2VydE5vZGVIYW5kbGVNdWx0aU1hcCkgeworICBhYnNsOjpidHJlZV9t
dWx0aW1hcDxpbnQsIGludD4gc3JjMSA9IHt7MSwgMn0sIHszLCA0fSwgezUsIDZ9fTsKKyAgYXV0
byBuaCA9IHNyYzEuZXh0cmFjdChzcmMxLmZpbmQoMykpOworICBFWFBFQ1RfVEhBVChzcmMxLCBF
bGVtZW50c0FyZShQYWlyKDEsIDIpLCBQYWlyKDUsIDYpKSk7CisgIGFic2w6OmJ0cmVlX211bHRp
bWFwPGludCwgaW50PiBvdGhlcjsKKyAgYXV0byByZXMgPSBvdGhlci5pbnNlcnQoc3RkOjptb3Zl
KG5oKSk7CisgIEVYUEVDVF9USEFUKG90aGVyLCBFbGVtZW50c0FyZShQYWlyKDMsIDQpKSk7Cisg
IEVYUEVDVF9FUShyZXMsIG90aGVyLmZpbmQoMykpOworCisgIGFic2w6OmJ0cmVlX211bHRpbWFw
PGludCwgaW50PiBzcmMyID0ge3szLCA2fX07CisgIG5oID0gc3JjMi5leHRyYWN0KHNyYzIuZmlu
ZCgzKSk7CisgIEVYUEVDVF9UUlVFKHNyYzIuZW1wdHkoKSk7CisgIHJlcyA9IG90aGVyLmluc2Vy
dChzdGQ6Om1vdmUobmgpKTsKKyAgRVhQRUNUX1RIQVQob3RoZXIsIEVsZW1lbnRzQXJlKFBhaXIo
MywgNCksIFBhaXIoMywgNikpKTsKKyAgRVhQRUNUX0VRKHJlcywgKytvdGhlci5iZWdpbigpKTsK
K30KKworLy8gRm9yIG11bHRpc2V0cywgaW5zZXJ0IHdpdGggaGludCBhbHNvIGFmZmVjdHMgY29y
cmVjdG5lc3MgYmVjYXVzZSB3ZSBuZWVkIHRvCisvLyBpbnNlcnQgaW1tZWRpYXRlbHkgYmVmb3Jl
IHRoZSBoaW50IGlmIHBvc3NpYmxlLgorc3RydWN0IEluc2VydE11bHRpSGludERhdGEgeworICBp
bnQga2V5OworICBpbnQgbm90X2tleTsKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluc2VydE11
bHRpSGludERhdGEgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4ga2V5ID09IG90aGVyLmtleSAm
JiBub3Rfa2V5ID09IG90aGVyLm5vdF9rZXk7CisgIH0KK307CisKK3N0cnVjdCBJbnNlcnRNdWx0
aUhpbnREYXRhS2V5Q29tcGFyZSB7CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKyAg
Ym9vbCBvcGVyYXRvcigpKGNvbnN0IEluc2VydE11bHRpSGludERhdGEgYSwKKyAgICAgICAgICAg
ICAgICAgIGNvbnN0IEluc2VydE11bHRpSGludERhdGEgYikgY29uc3QgeworICAgIHJldHVybiBh
LmtleSA8IGIua2V5OworICB9CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBpbnQgYSwgY29uc3Qg
SW5zZXJ0TXVsdGlIaW50RGF0YSBiKSBjb25zdCB7CisgICAgcmV0dXJuIGEgPCBiLmtleTsKKyAg
fQorICBib29sIG9wZXJhdG9yKCkoY29uc3QgSW5zZXJ0TXVsdGlIaW50RGF0YSBhLCBjb25zdCBp
bnQgYikgY29uc3QgeworICAgIHJldHVybiBhLmtleSA8IGI7CisgIH0KK307CisKK1RFU1QoQnRy
ZWUsIEluc2VydEhpbnROb2RlSGFuZGxlKSB7CisgIC8vIEZvciB1bmlxdWUgc2V0cywgaW5zZXJ0
IHdpdGggaGludCBpcyBqdXN0IGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLgorICAvLyBUZXN0
IHRoYXQgaW5zZXJ0IHdvcmtzIGNvcnJlY3RseSB3aGVuIHRoZSBoaW50IGlzIHJpZ2h0IG9yIHdy
b25nLgorICB7CisgICAgYWJzbDo6YnRyZWVfc2V0PGludD4gc3JjID0gezEsIDIsIDMsIDQsIDV9
OworICAgIGF1dG8gbmggPSBzcmMuZXh0cmFjdChzcmMuZmluZCgzKSk7CisgICAgRVhQRUNUX1RI
QVQoc3JjLCBFbGVtZW50c0FyZSgxLCAyLCA0LCA1KSk7CisgICAgYWJzbDo6YnRyZWVfc2V0PGlu
dD4gb3RoZXIgPSB7MCwgMTAwfTsKKyAgICAvLyBUZXN0IGEgY29ycmVjdCBoaW50LgorICAgIGF1
dG8gaXQgPSBvdGhlci5pbnNlcnQob3RoZXIubG93ZXJfYm91bmQoMyksIHN0ZDo6bW92ZShuaCkp
OworICAgIEVYUEVDVF9USEFUKG90aGVyLCBFbGVtZW50c0FyZSgwLCAzLCAxMDApKTsKKyAgICBF
WFBFQ1RfRVEoaXQsIG90aGVyLmZpbmQoMykpOworCisgICAgbmggPSBzcmMuZXh0cmFjdChzcmMu
ZmluZCg1KSk7CisgICAgLy8gVGVzdCBhbiBpbmNvcnJlY3QgaGludC4KKyAgICBpdCA9IG90aGVy
Lmluc2VydChvdGhlci5lbmQoKSwgc3RkOjptb3ZlKG5oKSk7CisgICAgRVhQRUNUX1RIQVQob3Ro
ZXIsIEVsZW1lbnRzQXJlKDAsIDMsIDUsIDEwMCkpOworICAgIEVYUEVDVF9FUShpdCwgb3RoZXIu
ZmluZCg1KSk7CisgIH0KKworICBhYnNsOjpidHJlZV9tdWx0aXNldDxJbnNlcnRNdWx0aUhpbnRE
YXRhLCBJbnNlcnRNdWx0aUhpbnREYXRhS2V5Q29tcGFyZT4gc3JjID0KKyAgICAgIHt7MSwgMn0s
IHszLCA0fSwgezMsIDV9fTsKKyAgYXV0byBuaCA9IHNyYy5leHRyYWN0KHNyYy5sb3dlcl9ib3Vu
ZCgzKSk7CisgIEVYUEVDVF9FUShuaC52YWx1ZSgpLCAoSW5zZXJ0TXVsdGlIaW50RGF0YXszLCA0
fSkpOworICBhYnNsOjpidHJlZV9tdWx0aXNldDxJbnNlcnRNdWx0aUhpbnREYXRhLCBJbnNlcnRN
dWx0aUhpbnREYXRhS2V5Q29tcGFyZT4KKyAgICAgIG90aGVyID0ge3szLCAxfSwgezMsIDJ9LCB7
MywgM319OworICBhdXRvIGl0ID0gb3RoZXIuaW5zZXJ0KC0tb3RoZXIuZW5kKCksIHN0ZDo6bW92
ZShuaCkpOworICBFWFBFQ1RfVEhBVCgKKyAgICAgIG90aGVyLCBFbGVtZW50c0FyZShJbnNlcnRN
dWx0aUhpbnREYXRhezMsIDF9LCBJbnNlcnRNdWx0aUhpbnREYXRhezMsIDJ9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEluc2VydE11bHRpSGludERhdGF7MywgNH0sIEluc2VydE11bHRpSGlu
dERhdGF7MywgM30pKTsKKyAgRVhQRUNUX0VRKGl0LCAtLSgtLW90aGVyLmVuZCgpKSk7CisKKyAg
bmggPSBzcmMuZXh0cmFjdChzcmMuZmluZCgzKSk7CisgIEVYUEVDVF9FUShuaC52YWx1ZSgpLCAo
SW5zZXJ0TXVsdGlIaW50RGF0YXszLCA1fSkpOworICBpdCA9IG90aGVyLmluc2VydChvdGhlci5i
ZWdpbigpLCBzdGQ6Om1vdmUobmgpKTsKKyAgRVhQRUNUX1RIQVQob3RoZXIsCisgICAgICAgICAg
ICAgIEVsZW1lbnRzQXJlKEluc2VydE11bHRpSGludERhdGF7MywgNX0sIEluc2VydE11bHRpSGlu
dERhdGF7MywgMX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEluc2VydE11bHRpSGludERh
dGF7MywgMn0sIEluc2VydE11bHRpSGludERhdGF7MywgNH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEluc2VydE11bHRpSGludERhdGF7MywgM30pKTsKKyAgRVhQRUNUX0VRKGl0LCBvdGhl
ci5iZWdpbigpKTsKK30KKworc3RydWN0IEludENvbXBhcmVUb0NtcCB7CisgIGFic2w6OndlYWtf
b3JkZXJpbmcgb3BlcmF0b3IoKShpbnQgYSwgaW50IGIpIGNvbnN0IHsKKyAgICBpZiAoYSA8IGIp
IHJldHVybiBhYnNsOjp3ZWFrX29yZGVyaW5nOjpsZXNzOworICAgIGlmIChhID4gYikgcmV0dXJu
IGFic2w6OndlYWtfb3JkZXJpbmc6OmdyZWF0ZXI7CisgICAgcmV0dXJuIGFic2w6OndlYWtfb3Jk
ZXJpbmc6OmVxdWl2YWxlbnQ7CisgIH0KK307CisKK1RFU1QoQnRyZWUsIE1lcmdlSW50b1VuaXF1
ZUNvbnRhaW5lcnMpIHsKKyAgYWJzbDo6YnRyZWVfc2V0PGludCwgSW50Q29tcGFyZVRvQ21wPiBz
cmMxID0gezEsIDIsIDN9OworICBhYnNsOjpidHJlZV9tdWx0aXNldDxpbnQ+IHNyYzIgPSB7Mywg
NCwgNCwgNX07CisgIGFic2w6OmJ0cmVlX3NldDxpbnQ+IGRzdDsKKworICBkc3QubWVyZ2Uoc3Jj
MSk7CisgIEVYUEVDVF9UUlVFKHNyYzEuZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKGRzdCwgRWxl
bWVudHNBcmUoMSwgMiwgMykpOworICBkc3QubWVyZ2Uoc3JjMik7CisgIEVYUEVDVF9USEFUKHNy
YzIsIEVsZW1lbnRzQXJlKDMsIDQpKTsKKyAgRVhQRUNUX1RIQVQoZHN0LCBFbGVtZW50c0FyZSgx
LCAyLCAzLCA0LCA1KSk7Cit9CisKK1RFU1QoQnRyZWUsIE1lcmdlSW50b1VuaXF1ZUNvbnRhaW5l
cnNXaXRoQ29tcGFyZVRvKSB7CisgIGFic2w6OmJ0cmVlX3NldDxpbnQsIEludENvbXBhcmVUb0Nt
cD4gc3JjMSA9IHsxLCAyLCAzfTsKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBzcmMyID0g
ezMsIDQsIDQsIDV9OworICBhYnNsOjpidHJlZV9zZXQ8aW50LCBJbnRDb21wYXJlVG9DbXA+IGRz
dDsKKworICBkc3QubWVyZ2Uoc3JjMSk7CisgIEVYUEVDVF9UUlVFKHNyYzEuZW1wdHkoKSk7Cisg
IEVYUEVDVF9USEFUKGRzdCwgRWxlbWVudHNBcmUoMSwgMiwgMykpOworICBkc3QubWVyZ2Uoc3Jj
Mik7CisgIEVYUEVDVF9USEFUKHNyYzIsIEVsZW1lbnRzQXJlKDMsIDQpKTsKKyAgRVhQRUNUX1RI
QVQoZHN0LCBFbGVtZW50c0FyZSgxLCAyLCAzLCA0LCA1KSk7Cit9CisKK1RFU1QoQnRyZWUsIE1l
cmdlSW50b011bHRpQ29udGFpbmVycykgeworICBhYnNsOjpidHJlZV9zZXQ8aW50LCBJbnRDb21w
YXJlVG9DbXA+IHNyYzEgPSB7MSwgMiwgM307CisgIGFic2w6OmJ0cmVlX211bHRpc2V0PGludD4g
c3JjMiA9IHszLCA0LCA0LCA1fTsKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBkc3Q7CisK
KyAgZHN0Lm1lcmdlKHNyYzEpOworICBFWFBFQ1RfVFJVRShzcmMxLmVtcHR5KCkpOworICBFWFBF
Q1RfVEhBVChkc3QsIEVsZW1lbnRzQXJlKDEsIDIsIDMpKTsKKyAgZHN0Lm1lcmdlKHNyYzIpOwor
ICBFWFBFQ1RfVFJVRShzcmMyLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChkc3QsIEVsZW1lbnRz
QXJlKDEsIDIsIDMsIDMsIDQsIDQsIDUpKTsKK30KKworVEVTVChCdHJlZSwgTWVyZ2VJbnRvTXVs
dGlDb250YWluZXJzV2l0aENvbXBhcmVUbykgeworICBhYnNsOjpidHJlZV9zZXQ8aW50LCBJbnRD
b21wYXJlVG9DbXA+IHNyYzEgPSB7MSwgMiwgM307CisgIGFic2w6OmJ0cmVlX211bHRpc2V0PGlu
dD4gc3JjMiA9IHszLCA0LCA0LCA1fTsKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50LCBJbnRD
b21wYXJlVG9DbXA+IGRzdDsKKworICBkc3QubWVyZ2Uoc3JjMSk7CisgIEVYUEVDVF9UUlVFKHNy
YzEuZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKGRzdCwgRWxlbWVudHNBcmUoMSwgMiwgMykpOwor
ICBkc3QubWVyZ2Uoc3JjMik7CisgIEVYUEVDVF9UUlVFKHNyYzIuZW1wdHkoKSk7CisgIEVYUEVD
VF9USEFUKGRzdCwgRWxlbWVudHNBcmUoMSwgMiwgMywgMywgNCwgNCwgNSkpOworfQorCitURVNU
KEJ0cmVlLCBNZXJnZUludG9NdWx0aU1hcHNXaXRoRGlmZmVyZW50Q29tcGFyYXRvcnMpIHsKKyAg
YWJzbDo6YnRyZWVfbWFwPGludCwgaW50LCBJbnRDb21wYXJlVG9DbXA+IHNyYzEgPSB7ezEsIDF9
LCB7MiwgMn0sIHszLCAzfX07CisgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgaW50LCBzdGQ6
OmdyZWF0ZXI8aW50Pj4gc3JjMiA9IHsKKyAgICAgIHs1LCA1fSwgezQsIDF9LCB7NCwgNH0sIHsz
LCAyfX07CisgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgaW50PiBkc3Q7CisKKyAgZHN0Lm1l
cmdlKHNyYzEpOworICBFWFBFQ1RfVFJVRShzcmMxLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChk
c3QsIEVsZW1lbnRzQXJlKFBhaXIoMSwgMSksIFBhaXIoMiwgMiksIFBhaXIoMywgMykpKTsKKyAg
ZHN0Lm1lcmdlKHNyYzIpOworICBFWFBFQ1RfVFJVRShzcmMyLmVtcHR5KCkpOworICBFWFBFQ1Rf
VEhBVChkc3QsIEVsZW1lbnRzQXJlKFBhaXIoMSwgMSksIFBhaXIoMiwgMiksIFBhaXIoMywgMyks
IFBhaXIoMywgMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcig0LCAxKSwg
UGFpcig0LCA0KSwgUGFpcig1LCA1KSkpOworfQorCitzdHJ1Y3QgS2V5Q29tcGFyZVRvV2Vha09y
ZGVyaW5nIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGFic2w6OndlYWtfb3JkZXJpbmcg
b3BlcmF0b3IoKShjb25zdCBUICZhLCBjb25zdCBUICZiKSBjb25zdCB7CisgICAgcmV0dXJuIGEg
PCBiID8gYWJzbDo6d2Vha19vcmRlcmluZzo6bGVzcworICAgICAgICAgICAgICAgICA6IGEgPT0g
YiA/IGFic2w6OndlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiBhYnNsOjp3ZWFrX29yZGVyaW5nOjpncmVhdGVyOworICB9Cit9OworCitzdHJ1Y3Qg
S2V5Q29tcGFyZVRvU3Ryb25nT3JkZXJpbmcgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
YWJzbDo6c3Ryb25nX29yZGVyaW5nIG9wZXJhdG9yKCkoY29uc3QgVCAmYSwgY29uc3QgVCAmYikg
Y29uc3QgeworICAgIHJldHVybiBhIDwgYiA/IGFic2w6OnN0cm9uZ19vcmRlcmluZzo6bGVzcwor
ICAgICAgICAgICAgICAgICA6IGEgPT0gYiA/IGFic2w6OnN0cm9uZ19vcmRlcmluZzo6ZXF1YWwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhYnNsOjpzdHJvbmdfb3JkZXJpbmc6OmdyZWF0
ZXI7CisgIH0KK307CisKK1RFU1QoQnRyZWUsIFVzZXJQcm92aWRlZEtleUNvbXBhcmVUb0NvbXBh
cmF0b3JzKSB7CisgIGFic2w6OmJ0cmVlX3NldDxpbnQsIEtleUNvbXBhcmVUb1dlYWtPcmRlcmlu
Zz4gd2Vha19zZXQgPSB7MSwgMiwgM307CisgIEVYUEVDVF9UUlVFKHdlYWtfc2V0LmNvbnRhaW5z
KDIpKTsKKyAgRVhQRUNUX0ZBTFNFKHdlYWtfc2V0LmNvbnRhaW5zKDQpKTsKKworICBhYnNsOjpi
dHJlZV9zZXQ8aW50LCBLZXlDb21wYXJlVG9TdHJvbmdPcmRlcmluZz4gc3Ryb25nX3NldCA9IHsx
LCAyLCAzfTsKKyAgRVhQRUNUX1RSVUUoc3Ryb25nX3NldC5jb250YWlucygyKSk7CisgIEVYUEVD
VF9GQUxTRShzdHJvbmdfc2V0LmNvbnRhaW5zKDQpKTsKK30KKworVEVTVChCdHJlZSwgVHJ5RW1w
bGFjZUJhc2ljVGVzdCkgeworICBhYnNsOjpidHJlZV9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbTsK
KworICAvLyBTaG91bGQgY29uc3RydWN0IGEgc3RkOjpzdHJpbmcgZnJvbSB0aGUgbGl0ZXJhbC4K
KyAgbS50cnlfZW1wbGFjZSgxLCAib25lIik7CisgIEVYUEVDVF9FUSgxLCBtLnNpemUoKSk7CisK
KyAgLy8gVHJ5IG90aGVyIHN0ZDo6c3RyaW5nIGNvbnN0cnVjdG9ycyBhbmQgY29uc3QgbHZhbHVl
IGtleS4KKyAgY29uc3QgaW50IGtleSg0Mik7CisgIG0udHJ5X2VtcGxhY2Uoa2V5LCAzLCAnYScp
OworICBtLnRyeV9lbXBsYWNlKDIsIHN0ZDo6c3RyaW5nKCJ0d28iKSk7CisKKyAgRVhQRUNUX1RS
VUUoc3RkOjppc19zb3J0ZWQobS5iZWdpbigpLCBtLmVuZCgpKSk7CisgIEVYUEVDVF9USEFUKG0s
IEVsZW1lbnRzQXJlQXJyYXkoc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGludCwgc3RkOjpzdHJpbmc+
PnsKKyAgICAgICAgICAgICAgICAgICAgIHsxLCAib25lIn0sIHsyLCAidHdvIn0sIHs0MiwgImFh
YSJ9fSkpOworfQorCitURVNUKEJ0cmVlLCBUcnlFbXBsYWNlV2l0aEhpbnRXb3JrcykgeworICAv
LyBVc2UgYSBjb3VudGluZyBjb21wYXJhdG9yIGhlcmUgdG8gdmVyaWZ5IHRoYXQgaGludCBpcyB1
c2VkLgorICBpbnQgY2FsbHMgPSAwOworICBhdXRvIGNtcCA9IFsmY2FsbHNdKGludCB4LCBpbnQg
eSkgeworICAgICsrY2FsbHM7CisgICAgcmV0dXJuIHggPCB5OworICB9OworICB1c2luZyBDbXAg
PSBkZWNsdHlwZShjbXApOworCisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludCwgQ21wPiBtKGNt
cCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTI4OyArK2kpIHsKKyAgICBtLmVtcGxhY2UoaSwg
aSk7CisgIH0KKworICAvLyBTYW5pdHkgY2hlY2sgZm9yIHRoZSBjb21wYXJhdG9yCisgIGNhbGxz
ID0gMDsKKyAgbS5lbXBsYWNlKDEyNywgMTI3KTsKKyAgRVhQRUNUX0dFKGNhbGxzLCA0KTsKKwor
ICAvLyBUcnkgd2l0aCBiZWdpbiBoaW50OgorICBjYWxscyA9IDA7CisgIGF1dG8gaXQgPSBtLnRy
eV9lbXBsYWNlKG0uYmVnaW4oKSwgLTEsIC0xKTsKKyAgRVhQRUNUX0VRKDEyOSwgbS5zaXplKCkp
OworICBFWFBFQ1RfRVEoaXQsIG0uYmVnaW4oKSk7CisgIEVYUEVDVF9MRShjYWxscywgMik7CisK
KyAgLy8gVHJ5IHdpdGggZW5kIGhpbnQ6CisgIGNhbGxzID0gMDsKKyAgc3RkOjpwYWlyPGludCwg
aW50PiBwYWlyMTAyNCA9IHsxMDI0LCAxMDI0fTsKKyAgaXQgPSBtLnRyeV9lbXBsYWNlKG0uZW5k
KCksIHBhaXIxMDI0LmZpcnN0LCBwYWlyMTAyNC5zZWNvbmQpOworICBFWFBFQ1RfRVEoMTMwLCBt
LnNpemUoKSk7CisgIEVYUEVDVF9FUShpdCwgLS1tLmVuZCgpKTsKKyAgRVhQRUNUX0xFKGNhbGxz
LCAyKTsKKworICAvLyBUcnkgdmFsdWUgYWxyZWFkeSBwcmVzZW50LCBiYWQgaGludDsgZW5zdXJl
IG5vIGR1cGxpY2F0ZSBhZGRlZDoKKyAgY2FsbHMgPSAwOworICBpdCA9IG0udHJ5X2VtcGxhY2Uo
bS5lbmQoKSwgMTYsIDE3KTsKKyAgRVhQRUNUX0VRKDEzMCwgbS5zaXplKCkpOworICBFWFBFQ1Rf
R0UoY2FsbHMsIDQpOworICBFWFBFQ1RfRVEoaXQsIG0uZmluZCgxNikpOworCisgIC8vIFRyeSB2
YWx1ZSBhbHJlYWR5IHByZXNlbnQsIGhpbnQgcG9pbnRzIGRpcmVjdGx5IHRvIGl0OgorICBjYWxs
cyA9IDA7CisgIGl0ID0gbS50cnlfZW1wbGFjZShpdCwgMTYsIDE3KTsKKyAgRVhQRUNUX0VRKDEz
MCwgbS5zaXplKCkpOworICBFWFBFQ1RfTEUoY2FsbHMsIDIpOworICBFWFBFQ1RfRVEoaXQsIG0u
ZmluZCgxNikpOworCisgIG0uZXJhc2UoMik7CisgIEVYUEVDVF9FUSgxMjksIG0uc2l6ZSgpKTsK
KyAgYXV0byBoaW50ID0gbS5maW5kKDMpOworICAvLyBUcnkgZW1wbGFjZSBpbiB0aGUgbWlkZGxl
IG9mIHR3byBvdGhlciBlbGVtZW50cy4KKyAgY2FsbHMgPSAwOworICBtLnRyeV9lbXBsYWNlKGhp
bnQsIDIsIDIpOworICBFWFBFQ1RfRVEoMTMwLCBtLnNpemUoKSk7CisgIEVYUEVDVF9MRShjYWxs
cywgMik7CisKKyAgRVhQRUNUX1RSVUUoc3RkOjppc19zb3J0ZWQobS5iZWdpbigpLCBtLmVuZCgp
KSk7Cit9CisKK1RFU1QoQnRyZWUsIFRyeUVtcGxhY2VXaXRoQmFkSGludCkgeworICBhYnNsOjpi
dHJlZV9tYXA8aW50LCBpbnQ+IG0gPSB7ezEsIDF9LCB7OSwgOX19OworCisgIC8vIEJhZCBoaW50
ICh0b28gc21hbGwpLCBzaG91bGQgc3RpbGwgZW1wbGFjZToKKyAgYXV0byBpdCA9IG0udHJ5X2Vt
cGxhY2UobS5iZWdpbigpLCAyLCAyKTsKKyAgRVhQRUNUX0VRKGl0LCArK20uYmVnaW4oKSk7Cisg
IEVYUEVDVF9USEFUKG0sIEVsZW1lbnRzQXJlQXJyYXkoCisgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+Pnt7MSwgMX0sIHsyLCAyfSwgezksIDl9fSkp
OworCisgIC8vIEJhZCBoaW50LCB0b28gbGFyZ2UgdGhpcyB0aW1lOgorICBpdCA9IG0udHJ5X2Vt
cGxhY2UoKysoKyttLmJlZ2luKCkpLCAwLCAwKTsKKyAgRVhQRUNUX0VRKGl0LCBtLmJlZ2luKCkp
OworICBFWFBFQ1RfVEhBVChtLCBFbGVtZW50c0FyZUFycmF5KHN0ZDo6dmVjdG9yPHN0ZDo6cGFp
cjxpbnQsIGludD4+eworICAgICAgICAgICAgICAgICAgICAgezAsIDB9LCB7MSwgMX0sIHsyLCAy
fSwgezksIDl9fSkpOworfQorCitURVNUKEJ0cmVlLCBUcnlFbXBsYWNlTWFpbnRhaW5zU29ydGVk
T3JkZXIpIHsKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwgc3RkOjpzdHJpbmc+IG07CisgIHN0ZDo6
cGFpcjxpbnQsIHN0ZDo6c3RyaW5nPiBwYWlyNSA9IHs1LCAiZml2ZSJ9OworCisgIC8vIFRlc3Qg
Ym90aCBsdmFsdWUgJiBydmFsdWUgZW1wbGFjZS4KKyAgbS50cnlfZW1wbGFjZSgxMCwgInRlbiIp
OworICBtLnRyeV9lbXBsYWNlKHBhaXI1LmZpcnN0LCBwYWlyNS5zZWNvbmQpOworICBFWFBFQ1Rf
RVEoMiwgbS5zaXplKCkpOworICBFWFBFQ1RfVFJVRShzdGQ6OmlzX3NvcnRlZChtLmJlZ2luKCks
IG0uZW5kKCkpKTsKKworICBpbnQgaW50MTAwezEwMH07CisgIG0udHJ5X2VtcGxhY2UoaW50MTAw
LCAiaHVuZHJlZCIpOworICBtLnRyeV9lbXBsYWNlKDEsICJvbmUiKTsKKyAgRVhQRUNUX0VRKDQs
IG0uc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc19zb3J0ZWQobS5iZWdpbigpLCBtLmVu
ZCgpKSk7Cit9CisKK1RFU1QoQnRyZWUsIFRyeUVtcGxhY2VXaXRoSGludEFuZE5vVmFsdWVBcmdz
V29ya3MpIHsKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwgaW50PiBtOworICBtLnRyeV9lbXBsYWNl
KG0uZW5kKCksIDEpOworICBFWFBFQ1RfRVEoMCwgbVsxXSk7Cit9CisKK1RFU1QoQnRyZWUsIFRy
eUVtcGxhY2VXaXRoSGludEFuZE11bHRpcGxlVmFsdWVBcmdzV29ya3MpIHsKKyAgYWJzbDo6YnRy
ZWVfbWFwPGludCwgc3RkOjpzdHJpbmc+IG07CisgIG0udHJ5X2VtcGxhY2UobS5lbmQoKSwgMSwg
MTAsICdhJyk7CisgIEVYUEVDVF9FUShzdGQ6OnN0cmluZygxMCwgJ2EnKSwgbVsxXSk7Cit9CisK
K1RFU1QoQnRyZWUsIE1vdmVBc3NpZ25tZW50QWxsb2NhdG9yUHJvcGFnYXRpb24pIHsKKyAgSW5z
dGFuY2VUcmFja2VyIHRyYWNrZXI7CisKKyAgaW50NjRfdCBieXRlczEgPSAwLCBieXRlczIgPSAw
OworICBQcm9wYWdhdGluZ0NvdW50aW5nQWxsb2M8TW92YWJsZU9ubHlJbnN0YW5jZT4gYWxsb2Nh
dG9yMSgmYnl0ZXMxKTsKKyAgUHJvcGFnYXRpbmdDb3VudGluZ0FsbG9jPE1vdmFibGVPbmx5SW5z
dGFuY2U+IGFsbG9jYXRvcjIoJmJ5dGVzMik7CisgIHN0ZDo6bGVzczxNb3ZhYmxlT25seUluc3Rh
bmNlPiBjbXA7CisKKyAgLy8gVGVzdCBwcm9wYWdhdGluZyBhbGxvY2F0b3JfdHlwZS4KKyAgewor
ICAgIGFic2w6OmJ0cmVlX3NldDxNb3ZhYmxlT25seUluc3RhbmNlLCBzdGQ6Omxlc3M8TW92YWJs
ZU9ubHlJbnN0YW5jZT4sCisgICAgICAgICAgICAgICAgICAgIFByb3BhZ2F0aW5nQ291bnRpbmdB
bGxvYzxNb3ZhYmxlT25seUluc3RhbmNlPj4KKyAgICAgICAgc2V0MShjbXAsIGFsbG9jYXRvcjEp
LCBzZXQyKGNtcCwgYWxsb2NhdG9yMik7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsg
KytpKSBzZXQxLmluc2VydChNb3ZhYmxlT25seUluc3RhbmNlKGkpKTsKKworICAgIHRyYWNrZXIu
UmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCk7CisgICAgc2V0MiA9IHN0ZDo6bW92ZShzZXQxKTsKKyAg
ICBFWFBFQ1RfRVEodHJhY2tlci5tb3ZlcygpLCAwKTsKKyAgfQorICAvLyBUZXN0IG5vbi1wcm9w
YWdhdGluZyBhbGxvY2F0b3JfdHlwZSB3aXRoIGVxdWFsIGFsbG9jYXRvcnMuCisgIHsKKyAgICBh
YnNsOjpidHJlZV9zZXQ8TW92YWJsZU9ubHlJbnN0YW5jZSwgc3RkOjpsZXNzPE1vdmFibGVPbmx5
SW5zdGFuY2U+LAorICAgICAgICAgICAgICAgICAgICBDb3VudGluZ0FsbG9jYXRvcjxNb3ZhYmxl
T25seUluc3RhbmNlPj4KKyAgICAgICAgc2V0MShjbXAsIGFsbG9jYXRvcjEpLCBzZXQyKGNtcCwg
YWxsb2NhdG9yMSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgKytpKSBzZXQxLmlu
c2VydChNb3ZhYmxlT25seUluc3RhbmNlKGkpKTsKKworICAgIHRyYWNrZXIuUmVzZXRDb3BpZXNN
b3Zlc1N3YXBzKCk7CisgICAgc2V0MiA9IHN0ZDo6bW92ZShzZXQxKTsKKyAgICBFWFBFQ1RfRVEo
dHJhY2tlci5tb3ZlcygpLCAwKTsKKyAgfQorICAvLyBUZXN0IG5vbi1wcm9wYWdhdGluZyBhbGxv
Y2F0b3JfdHlwZSB3aXRoIGRpZmZlcmVudCBhbGxvY2F0b3JzLgorICB7CisgICAgYWJzbDo6YnRy
ZWVfc2V0PE1vdmFibGVPbmx5SW5zdGFuY2UsIHN0ZDo6bGVzczxNb3ZhYmxlT25seUluc3RhbmNl
PiwKKyAgICAgICAgICAgICAgICAgICAgQ291bnRpbmdBbGxvY2F0b3I8TW92YWJsZU9ubHlJbnN0
YW5jZT4+CisgICAgICAgIHNldDEoY21wLCBhbGxvY2F0b3IxKSwgc2V0MihjbXAsIGFsbG9jYXRv
cjIpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkgc2V0MS5pbnNlcnQoTW92
YWJsZU9ubHlJbnN0YW5jZShpKSk7CisKKyAgICB0cmFja2VyLlJlc2V0Q29waWVzTW92ZXNTd2Fw
cygpOworICAgIHNldDIgPSBzdGQ6Om1vdmUoc2V0MSk7CisgICAgRVhQRUNUX0dFKHRyYWNrZXIu
bW92ZXMoKSwgMTAwKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFj
ZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvYnRyZWVfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3Rlc3Qu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZWNmNDNjZWViZTUxN2IyNzVhZmU4MGQyZTY5YWU5NzgzYWUyMGJkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3Rlc3QuaApAQCAtMCwwICsx
LDE1MyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5k
ZWYgQUJTTF9DT05UQUlORVJfQlRSRUVfVEVTVF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9C
VFJFRV9URVNUX0hfCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y2Fzc2VydD4K
KyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxpdHk+
CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvYnRyZWVfbWFw
LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvYnRyZWVfc2V0LmgiCisjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvZmxhdF9oYXNoX3NldC5oIgorI2luY2x1ZGUgImFic2wvdGltZS90aW1lLmgi
CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCisv
LyBMaWtlIHJlbW92ZV9jb25zdCBidXQgcHJvcGFnYXRlcyB0aGUgcmVtb3ZhbCB0aHJvdWdoIHN0
ZDo6cGFpci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IHJlbW92ZV9wYWlyX2NvbnN0
IHsKKyAgdXNpbmcgdHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlOwor
fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorc3RydWN0IHJlbW92ZV9wYWly
X2NvbnN0PHN0ZDo6cGFpcjxULCBVPiA+IHsKKyAgdXNpbmcgdHlwZSA9IHN0ZDo6cGFpcjx0eXBl
bmFtZSByZW1vdmVfcGFpcl9jb25zdDxUPjo6dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlbmFtZSByZW1vdmVfcGFpcl9jb25zdDxVPjo6dHlwZT47Cit9OworCisvLyBVdGlsaXR5
IGNsYXNzIHRvIHByb3ZpZGUgYW4gYWNjZXNzb3IgZm9yIGEga2V5IGdpdmVuIGEgdmFsdWUuIFRo
ZSBkZWZhdWx0CisvLyBiZWhhdmlvciBpcyB0byB0cmVhdCB0aGUgdmFsdWUgYXMgYSBwYWlyIGFu
ZCByZXR1cm4gdGhlIGZpcnN0IGVsZW1lbnQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5h
bWUgVj4KK3N0cnVjdCBLZXlPZlZhbHVlIHsKKyAgc3RydWN0IHR5cGUgeworICAgIGNvbnN0IEsm
IG9wZXJhdG9yKCkoY29uc3QgViYgcCkgY29uc3QgeyByZXR1cm4gcC5maXJzdDsgfQorICB9Owor
fTsKKworLy8gUGFydGlhbCBzcGVjaWFsaXphdGlvbiBvZiBLZXlPZlZhbHVlIGNsYXNzIGZvciB3
aGVuIHRoZSBrZXkgYW5kIHZhbHVlIGFyZQorLy8gdGhlIHNhbWUgdHlwZSBzdWNoIGFzIGluIHNl
dDw+IGFuZCBidHJlZV9zZXQ8Pi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBLPgorc3RydWN0IEtleU9m
VmFsdWU8SywgSz4geworICBzdHJ1Y3QgdHlwZSB7CisgICAgY29uc3QgSyYgb3BlcmF0b3IoKShj
b25zdCBLJiBrKSBjb25zdCB7IHJldHVybiBrOyB9CisgIH07Cit9OworCitpbmxpbmUgY2hhciog
R2VuZXJhdGVEaWdpdHMoY2hhciBidWZbMTZdLCB1bnNpZ25lZCB2YWwsIHVuc2lnbmVkIG1heHZh
bCkgeworICBhc3NlcnQodmFsIDw9IG1heHZhbCk7CisgIGNvbnN0ZXhwciB1bnNpZ25lZCBrQmFz
ZSA9IDY0OyAgLy8gYXZvaWQgaW50ZWdlciBkaXZpc2lvbi4KKyAgdW5zaWduZWQgcCA9IDE1Owor
ICBidWZbcC0tXSA9IDA7CisgIHdoaWxlIChtYXh2YWwgPiAwKSB7CisgICAgYnVmW3AtLV0gPSAn
ICcgKyAodmFsICUga0Jhc2UpOworICAgIHZhbCAvPSBrQmFzZTsKKyAgICBtYXh2YWwgLz0ga0Jh
c2U7CisgIH0KKyAgcmV0dXJuIGJ1ZiArIHAgKyAxOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Sz4KK3N0cnVjdCBHZW5lcmF0b3IgeworICBpbnQgbWF4dmFsOworICBleHBsaWNpdCBHZW5lcmF0
b3IoaW50IG0pIDogbWF4dmFsKG0pIHt9CisgIEsgb3BlcmF0b3IoKShpbnQgaSkgY29uc3Qgewor
ICAgIGFzc2VydChpIDw9IG1heHZhbCk7CisgICAgcmV0dXJuIEsoaSk7CisgIH0KK307CisKK3Rl
bXBsYXRlIDw+CitzdHJ1Y3QgR2VuZXJhdG9yPGFic2w6OlRpbWU+IHsKKyAgaW50IG1heHZhbDsK
KyAgZXhwbGljaXQgR2VuZXJhdG9yKGludCBtKSA6IG1heHZhbChtKSB7fQorICBhYnNsOjpUaW1l
IG9wZXJhdG9yKCkoaW50IGkpIGNvbnN0IHsgcmV0dXJuIGFic2w6OkZyb21Vbml4TWlsbGlzKGkp
OyB9Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IEdlbmVyYXRvcjxzdGQ6OnN0cmluZz4gewor
ICBpbnQgbWF4dmFsOworICBleHBsaWNpdCBHZW5lcmF0b3IoaW50IG0pIDogbWF4dmFsKG0pIHt9
CisgIHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoaW50IGkpIGNvbnN0IHsKKyAgICBjaGFyIGJ1Zlsx
Nl07CisgICAgcmV0dXJuIEdlbmVyYXRlRGlnaXRzKGJ1ZiwgaSwgbWF4dmFsKTsKKyAgfQorfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitzdHJ1Y3QgR2VuZXJhdG9yPHN0
ZDo6cGFpcjxULCBVPiA+IHsKKyAgR2VuZXJhdG9yPHR5cGVuYW1lIHJlbW92ZV9wYWlyX2NvbnN0
PFQ+Ojp0eXBlPiB0Z2VuOworICBHZW5lcmF0b3I8dHlwZW5hbWUgcmVtb3ZlX3BhaXJfY29uc3Q8
VT46OnR5cGU+IHVnZW47CisKKyAgZXhwbGljaXQgR2VuZXJhdG9yKGludCBtKSA6IHRnZW4obSks
IHVnZW4obSkge30KKyAgc3RkOjpwYWlyPFQsIFU+IG9wZXJhdG9yKCkoaW50IGkpIGNvbnN0IHsK
KyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodGdlbihpKSwgdWdlbihpKSk7CisgIH0KK307CisK
Ky8vIEdlbmVyYXRlIG4gdmFsdWVzIGZvciBvdXIgdGVzdHMgYW5kIGJlbmNobWFya3MuIFZhbHVl
IHJhbmdlIGlzIFswLCBtYXh2YWxdLgoraW5saW5lIHN0ZDo6dmVjdG9yPGludD4gR2VuZXJhdGVO
dW1iZXJzV2l0aFNlZWQoaW50IG4sIGludCBtYXh2YWwsIGludCBzZWVkKSB7CisgIC8vIE5PVEU6
IFNvbWUgdGVzdHMgcmVseSBvbiBnZW5lcmF0ZWQgbnVtYmVycyBub3QgY2hhbmdpbmcgYmV0d2Vl
biB0ZXN0IHJ1bnMuCisgIC8vIFdlIHVzZSBzdGQ6Om1pbnN0ZF9yYW5kMCBiZWNhdXNlIGl0IGlz
IHdlbGwtZGVmaW5lZCwgYnV0IGRvbid0IHVzZQorICAvLyBzdGQ6OnVuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbiBiZWNhdXNlIHBsYXRmb3JtcyB1c2UgZGlmZmVyZW50IGFsZ29yaXRobXMuCisgIHN0
ZDo6bWluc3RkX3JhbmQwIHJuZyhzZWVkKTsKKworICBzdGQ6OnZlY3RvcjxpbnQ+IHZhbHVlczsK
KyAgYWJzbDo6ZmxhdF9oYXNoX3NldDxpbnQ+IHVuaXF1ZV92YWx1ZXM7CisgIGlmICh2YWx1ZXMu
c2l6ZSgpIDwgbikgeworICAgIGZvciAoaW50IGkgPSB2YWx1ZXMuc2l6ZSgpOyBpIDwgbjsgaSsr
KSB7CisgICAgICBpbnQgdmFsdWU7CisgICAgICBkbyB7CisgICAgICAgIHZhbHVlID0gc3RhdGlj
X2Nhc3Q8aW50PihybmcoKSkgJSAobWF4dmFsICsgMSk7CisgICAgICB9IHdoaWxlICghdW5pcXVl
X3ZhbHVlcy5pbnNlcnQodmFsdWUpLnNlY29uZCk7CisKKyAgICAgIHZhbHVlcy5wdXNoX2JhY2so
dmFsdWUpOworICAgIH0KKyAgfQorICByZXR1cm4gdmFsdWVzOworfQorCisvLyBHZW5lcmF0ZXMg
biB2YWx1ZXMgaW4gdGhlIHJhbmdlIFswLCBtYXh2YWxdLgordGVtcGxhdGUgPHR5cGVuYW1lIFY+
CitzdGQ6OnZlY3RvcjxWPiBHZW5lcmF0ZVZhbHVlc1dpdGhTZWVkKGludCBuLCBpbnQgbWF4dmFs
LCBpbnQgc2VlZCkgeworICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+IG51bXMgPSBHZW5lcmF0ZU51
bWJlcnNXaXRoU2VlZChuLCBtYXh2YWwsIHNlZWQpOworICBHZW5lcmF0b3I8Vj4gZ2VuKG1heHZh
bCk7CisgIHN0ZDo6dmVjdG9yPFY+IHZlYzsKKworICB2ZWMucmVzZXJ2ZShuKTsKKyAgZm9yIChp
bnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2ZWMucHVzaF9iYWNrKGdlbihudW1zW2ldKSk7
CisgIH0KKworICByZXR1cm4gdmVjOworfQorCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2lu
dGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVS
X0JUUkVFX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5LmgKaW5kZXggNmQ5ZmE1Zjc0NWRjYzk1NjNj
N2E3MDkxNjBkYjE4MzdjZmZiYzJkNy4uNjBkYTA0ODhiMTZjMjE3MzgzMWUzOTM4ZGEwNzgyYTE3
YmU4NTNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTE4OCw3ICsxODgsNyBAQCBjbGFzcyBGaXhlZEFycmF5IHsKICAg
Ly8gYEZpeGVkQXJyYXk8VD5gLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIG1vc3QgcG9zc2li
bGUgYWRkcmVzc2FibGUgYnl0ZXMKICAgLy8gb3ZlciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRha2Vu
IGJ5IFQuCiAgIGNvbnN0ZXhwciBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7Ci0gICAgcmV0
dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZGlmZmVyZW5jZV90eXBlPjo6bWF4KCkgLyBzaXplb2Yo
dmFsdWVfdHlwZSk7CisgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPGRpZmZlcmVuY2Vf
dHlwZT46Om1heCkoKSAvIHNpemVvZih2YWx1ZV90eXBlKTsKICAgfQogCiAgIC8vIEZpeGVkQXJy
YXk6OmVtcHR5KCkKQEAgLTUxNSw0ICs1MTUsNSBAQCB2b2lkIEZpeGVkQXJyYXk8VCwgTiwgQT46
Ok5vbkVtcHR5SW5saW5lZFN0b3JhZ2U6OkFubm90YXRlRGVzdHJ1Y3QoCiAgIHN0YXRpY19jYXN0
PHZvaWQ+KG4pOyAgLy8gTWFyayB1c2VkIHdoZW4gbm90IGluIGFzYW4gbW9kZQogfQogfSAgLy8g
bmFtZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9GSVhFRF9BUlJBWV9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X2JlbmNobWFyay5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV9iZW5jaG1hcmsuY2MKaW5kZXggYjRmMGNmMmFl
YjA0ZjAzNDA5Yjk1YmRjYjUzYWY1ZmVjZDU3OGQ4Zi4uM2M3YTVhNzIzNDUwZTdmMWUwODVjZWFh
OTFmZGI5NjBlNzQzMzY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5
X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfYmVuY2htYXJr
LmNjCkBAIC0xLDEwICsxLDEwIEBACi0vLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhv
cnMuCisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCiAvLwogLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEyLDEyICsxMiwxMiBAQAogLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLSNpbmNsdWRlICJhYnNs
L2NvbnRhaW5lci9maXhlZF9hcnJheS5oIgotCiAjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNpbmNs
dWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJiZW5jaG1hcmsvYmVuY2htYXJrLmgiCisjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXkuaCIKIAogbmFtZXNwYWNlIHsKIApAQCAtMjUs
OCArMjUsOSBAQCBuYW1lc3BhY2UgewogLy8gc2V0IGFuIGludCB0byBhIGNvbnN0YW50Li4KIGNs
YXNzIFNpbXBsZUNsYXNzIHsKICBwdWJsaWM6Ci0gIFNpbXBsZUNsYXNzKCkgOiBpKDMpIHsgfQor
ICBTaW1wbGVDbGFzcygpIDogaSgzKSB7fQogICB+U2ltcGxlQ2xhc3MoKSB7IGkgPSAwOyB9CisK
ICBwcml2YXRlOgogICBpbnQgaTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4
ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVk
X2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwppbmRleCBkYTYzZGJmZTM4ZTcxZDM0YTMz
ZTgwMGRmZTQyYWE5ZjNlYTMxN2ZhLi45OTg0YTVlMmFlNDExNzNlNThjNjUyYzUyMTc5Y2VlMjA5
MjYwOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfZXhjZXB0aW9u
X3NhZmV0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV9leGNlcHRp
b25fc2FmZXR5X3Rlc3QuY2MKQEAgLTEsMTAgKzEsMTAgQEAKLS8vIENvcHlyaWdodCAyMDE3IFRo
ZSBBYnNlaWwgQXV0aG9ycy4KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4K
IC8vCiAvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQsMTAgKzE0LDkg
QEAKIAogI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CiAKLSNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9maXhlZF9hcnJheS5oIgotCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNsdWRl
ICJhYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgiCisjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXkuaCIKIAogbmFtZXNwYWNlIGFic2wgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9maXhlZF9hcnJheV90ZXN0LmNjCmluZGV4IDIwNWZmNDFmZTExNDJiYmU4ZTE4N2E0
NGYxN2E1YTVhNzNiNWM1NDguLjJiMWNmNDdlYWNiOGFkZTk2MzliYTYxYmU1MWU2NDVmZjNiMTA4
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV90ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV90ZXN0LmNjCkBAIC0xLDEwICsxLDEwIEBACi0v
LyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLyBDb3B5cmlnaHQgMjAxOSBU
aGUgQWJzZWlsIEF1dGhvcnMuCiAvLwogLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9maXhlZF9hcnJh
eS5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KKwogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVk
ZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CkBAIC00MiwxMSArNDMsNyBAQCBzdGF0aWMgYm9v
bCBJc09uU3RhY2soY29uc3QgQXJyYXlUeXBlJiBhKSB7CiAKIGNsYXNzIENvbnN0cnVjdGlvblRl
c3RlciB7CiAgcHVibGljOgotICBDb25zdHJ1Y3Rpb25UZXN0ZXIoKQotICAgICAgOiBzZWxmX3B0
cl8odGhpcyksCi0gICAgICAgIHZhbHVlXygwKSB7Ci0gICAgY29uc3RydWN0aW9ucysrOwotICB9
CisgIENvbnN0cnVjdGlvblRlc3RlcigpIDogc2VsZl9wdHJfKHRoaXMpLCB2YWx1ZV8oMCkgeyBj
b25zdHJ1Y3Rpb25zKys7IH0KICAgfkNvbnN0cnVjdGlvblRlc3RlcigpIHsKICAgICBhc3NlcnQo
c2VsZl9wdHJfID09IHRoaXMpOwogICAgIHNlbGZfcHRyXyA9IG51bGxwdHI7CkBAIC01OCw5ICs1
NSw3IEBAIGNsYXNzIENvbnN0cnVjdGlvblRlc3RlciB7CiAgIHN0YXRpYyBpbnQgY29uc3RydWN0
aW9uczsKICAgc3RhdGljIGludCBkZXN0cnVjdGlvbnM7CiAKLSAgdm9pZCBDaGVja0NvbnN0cnVj
dGVkKCkgewotICAgIGFzc2VydChzZWxmX3B0cl8gPT0gdGhpcyk7Ci0gIH0KKyAgdm9pZCBDaGVj
a0NvbnN0cnVjdGVkKCkgeyBhc3NlcnQoc2VsZl9wdHJfID09IHRoaXMpOyB9CiAKICAgdm9pZCBz
ZXQoaW50IHZhbHVlKSB7IHZhbHVlXyA9IHZhbHVlOyB9CiAgIGludCBnZXQoKSB7IHJldHVybiB2
YWx1ZV87IH0KQEAgLTE1MCw3ICsxNDUsNyBAQCBURVNUKEZpeGVkQXJyYXlUZXN0LCBTbWFsbE9i
amVjdHMpIHsKICAgfQogCiAgIHsKLSAgICAvLyBBcnJheXMgb2YgPiBkZWZhdWx0IHNpemUgc2hv
dWxkIGJlIG9uIHRoZSBzdGFjaworICAgIC8vIEFycmF5cyBvZiA+IGRlZmF1bHQgc2l6ZSBzaG91
bGQgYmUgb24gdGhlIGhlYXAKICAgICBhYnNsOjpGaXhlZEFycmF5PGludCwgMTAwPiBhcnJheSgx
MDEpOwogICAgIEVYUEVDVF9GQUxTRShJc09uU3RhY2soYXJyYXkpKTsKICAgfQpAQCAtMTYwLDEz
ICsxNTUsMTMgQEAgVEVTVChGaXhlZEFycmF5VGVzdCwgU21hbGxPYmplY3RzKSB7CiAgICAgLy8g
c2FtZSBhbW91bnQgb2Ygc3RhY2sgc3BhY2UKICAgICBhYnNsOjpGaXhlZEFycmF5PGludD4gYXJy
YXkxKDApOwogICAgIGFic2w6OkZpeGVkQXJyYXk8Y2hhcj4gYXJyYXkyKDApOwotICAgIEVYUEVD
VF9MRShzaXplb2YoYXJyYXkxKSwgc2l6ZW9mKGFycmF5MikrMTAwKTsKLSAgICBFWFBFQ1RfTEUo
c2l6ZW9mKGFycmF5MiksIHNpemVvZihhcnJheTEpKzEwMCk7CisgICAgRVhQRUNUX0xFKHNpemVv
ZihhcnJheTEpLCBzaXplb2YoYXJyYXkyKSArIDEwMCk7CisgICAgRVhQRUNUX0xFKHNpemVvZihh
cnJheTIpLCBzaXplb2YoYXJyYXkxKSArIDEwMCk7CiAgIH0KIAogICB7CiAgICAgLy8gRW5zdXJl
IHRoYXQgdmVjdG9ycyBhcmUgcHJvcGVybHkgY29uc3RydWN0ZWQgaW5zaWRlIGEgZml4ZWQgYXJy
YXkuCi0gICAgYWJzbDo6Rml4ZWRBcnJheTxzdGQ6OnZlY3RvcjxpbnQ+ID4gYXJyYXkoMik7Cisg
ICAgYWJzbDo6Rml4ZWRBcnJheTxzdGQ6OnZlY3RvcjxpbnQ+PiBhcnJheSgyKTsKICAgICBFWFBF
Q1RfRVEoMCwgYXJyYXlbMF0uc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoMCwgYXJyYXlbMV0uc2l6
ZSgpKTsKICAgfQpAQCAtMjcwLDggKzI2NSw4IEBAIHN0YXRpYyB2b2lkIFRlc3RBcnJheShpbnQg
bikgewogICAgICAgYXJyYXkuZGF0YSgpW2ldLnNldChpICsgMSk7CiAgICAgfQogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICBFWFBFQ1RfVEhBVChhcnJheVtpXS5nZXQo
KSwgaSsxKTsKLSAgICAgIEVYUEVDVF9USEFUKGFycmF5LmRhdGEoKVtpXS5nZXQoKSwgaSsxKTsK
KyAgICAgIEVYUEVDVF9USEFUKGFycmF5W2ldLmdldCgpLCBpICsgMSk7CisgICAgICBFWFBFQ1Rf
VEhBVChhcnJheS5kYXRhKClbaV0uZ2V0KCksIGkgKyAxKTsKICAgICB9CiAgIH0gIC8vIENsb3Nl
IHNjb3BlIGNvbnRhaW5pbmcgJ2FycmF5Jy4KIApAQCAtMjk2LDcgKzI5MSw3IEBAIHN0YXRpYyB2
b2lkIFRlc3RBcnJheU9mQXJyYXlzKGludCBuKSB7CiAKICAgICBBU1NFUlRfRVEoYXJyYXkuc2l6
ZSgpLCBuKTsKICAgICBBU1NFUlRfRVEoYXJyYXkubWVtc2l6ZSgpLAotICAgICAgICAgICAgIHNp
emVvZihDb25zdHJ1Y3Rpb25UZXN0ZXIpICogZWxlbWVudHNfcGVyX2lubmVyX2FycmF5ICogbik7
CisgICAgICAgICAgICAgIHNpemVvZihDb25zdHJ1Y3Rpb25UZXN0ZXIpICogZWxlbWVudHNfcGVy
X2lubmVyX2FycmF5ICogbik7CiAgICAgQVNTRVJUX0VRKGFycmF5LmJlZ2luKCkgKyBuLCBhcnJh
eS5lbmQoKSk7CiAKICAgICAvLyBDaGVjayB0aGF0IGFsbCBlbGVtZW50cyB3ZXJlIGNvbnN0cnVj
dGVkCkBAIC0zMTYsNyArMzExLDcgQEAgc3RhdGljIHZvaWQgVGVzdEFycmF5T2ZBcnJheXMoaW50
IG4pIHsKICAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgIGZv
ciAoaW50IGogPSAwOyBqIDwgZWxlbWVudHNfcGVyX2lubmVyX2FycmF5OyBqKyspIHsKLSAgICAg
ICAgQVNTRVJUX0VRKChhcnJheVtpXSlbal0uZ2V0KCksICBpICogZWxlbWVudHNfcGVyX2lubmVy
X2FycmF5ICsgaik7CisgICAgICAgIEFTU0VSVF9FUSgoYXJyYXlbaV0pW2pdLmdldCgpLCBpICog
ZWxlbWVudHNfcGVyX2lubmVyX2FycmF5ICsgaik7CiAgICAgICAgIEFTU0VSVF9FUSgoYXJyYXku
ZGF0YSgpW2ldKVtqXS5nZXQoKSwgaSAqIGVsZW1lbnRzX3Blcl9pbm5lcl9hcnJheSArIGopOwog
ICAgICAgfQogICAgIH0KQEAgLTMyOSw4ICszMjQsNyBAQCBzdGF0aWMgdm9pZCBUZXN0QXJyYXlP
ZkFycmF5cyhpbnQgbikgewogICAgIH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykg
ewogICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBlbGVtZW50c19wZXJfaW5uZXJfYXJyYXk7IGor
KykgewotICAgICAgICBBU1NFUlRfRVEoKGFycmF5W2ldKVtqXS5nZXQoKSwKLSAgICAgICAgICAg
ICAgICAgIChpICsgMSkgKiBlbGVtZW50c19wZXJfaW5uZXJfYXJyYXkgKyBqKTsKKyAgICAgICAg
QVNTRVJUX0VRKChhcnJheVtpXSlbal0uZ2V0KCksIChpICsgMSkgKiBlbGVtZW50c19wZXJfaW5u
ZXJfYXJyYXkgKyBqKTsKICAgICAgICAgQVNTRVJUX0VRKChhcnJheS5kYXRhKClbaV0pW2pdLmdl
dCgpLAogICAgICAgICAgICAgICAgICAgKGkgKyAxKSAqIGVsZW1lbnRzX3Blcl9pbm5lcl9hcnJh
eSArIGopOwogICAgICAgfQpAQCAtMzQzLDcgKzMzNyw3IEBAIHN0YXRpYyB2b2lkIFRlc3RBcnJh
eU9mQXJyYXlzKGludCBuKSB7CiB9CiAKIFRFU1QoSXRlcmF0b3JDb25zdHJ1Y3RvclRlc3QsIE5v
bklubGluZSkgewotICBpbnQgY29uc3Qga0lucHV0W10gPSB7IDIsIDMsIDUsIDcsIDExLCAxMywg
MTcgfTsKKyAgaW50IGNvbnN0IGtJbnB1dFtdID0gezIsIDMsIDUsIDcsIDExLCAxMywgMTd9Owog
ICBhYnNsOjpGaXhlZEFycmF5PGludCwgQUJTTF9BUlJBWVNJWkUoa0lucHV0KSAtIDE+IGNvbnN0
IGZpeGVkKAogICAgICAga0lucHV0LCBrSW5wdXQgKyBBQlNMX0FSUkFZU0laRShrSW5wdXQpKTsK
ICAgQVNTRVJUX0VRKEFCU0xfQVJSQVlTSVpFKGtJbnB1dCksIGZpeGVkLnNpemUoKSk7CkBAIC0z
NTMsNyArMzQ3LDcgQEAgVEVTVChJdGVyYXRvckNvbnN0cnVjdG9yVGVzdCwgTm9uSW5saW5lKSB7
CiB9CiAKIFRFU1QoSXRlcmF0b3JDb25zdHJ1Y3RvclRlc3QsIElubGluZSkgewotICBpbnQgY29u
c3Qga0lucHV0W10gPSB7IDIsIDMsIDUsIDcsIDExLCAxMywgMTcgfTsKKyAgaW50IGNvbnN0IGtJ
bnB1dFtdID0gezIsIDMsIDUsIDcsIDExLCAxMywgMTd9OwogICBhYnNsOjpGaXhlZEFycmF5PGlu
dCwgQUJTTF9BUlJBWVNJWkUoa0lucHV0KT4gY29uc3QgZml4ZWQoCiAgICAgICBrSW5wdXQsIGtJ
bnB1dCArIEFCU0xfQVJSQVlTSVpFKGtJbnB1dCkpOwogICBBU1NFUlRfRVEoQUJTTF9BUlJBWVNJ
WkUoa0lucHV0KSwgZml4ZWQuc2l6ZSgpKTsKQEAgLTM2Myw5ICszNTcsMTAgQEAgVEVTVChJdGVy
YXRvckNvbnN0cnVjdG9yVGVzdCwgSW5saW5lKSB7CiB9CiAKIFRFU1QoSXRlcmF0b3JDb25zdHJ1
Y3RvclRlc3QsIE5vblBvZCkgewotICBjaGFyIGNvbnN0KiBrSW5wdXRbXSA9Ci0gICAgICB7ICJy
ZWQiLCAib3JhbmdlIiwgInllbGxvdyIsICJncmVlbiIsICJibHVlIiwgImluZGlnbyIsICJ2aW9s
ZXQiIH07Ci0gIGFic2w6OkZpeGVkQXJyYXk8c3RkOjpzdHJpbmc+IGNvbnN0IGZpeGVkKGtJbnB1
dCwga0lucHV0ICsgQUJTTF9BUlJBWVNJWkUoa0lucHV0KSk7CisgIGNoYXIgY29uc3QqIGtJbnB1
dFtdID0geyJyZWQiLCAgIm9yYW5nZSIsICJ5ZWxsb3ciLCAiZ3JlZW4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiYmx1ZSIsICJpbmRpZ28iLCAidmlvbGV0In07CisgIGFic2w6OkZpeGVk
QXJyYXk8c3RkOjpzdHJpbmc+IGNvbnN0IGZpeGVkKGtJbnB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga0lucHV0ICsgQUJTTF9BUlJBWVNJWkUoa0lucHV0
KSk7CiAgIEFTU0VSVF9FUShBQlNMX0FSUkFZU0laRShrSW5wdXQpLCBmaXhlZC5zaXplKCkpOwog
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFCU0xfQVJSQVlTSVpFKGtJbnB1dCk7ICsraSkgewog
ICAgIEFTU0VSVF9FUShrSW5wdXRbaV0sIGZpeGVkW2ldKTsKQEAgLTM4MCw3ICszNzUsNyBAQCBU
RVNUKEl0ZXJhdG9yQ29uc3RydWN0b3JUZXN0LCBGcm9tRW1wdHlWZWN0b3IpIHsKIH0KIAogVEVT
VChJdGVyYXRvckNvbnN0cnVjdG9yVGVzdCwgRnJvbU5vbkVtcHR5VmVjdG9yKSB7Ci0gIGludCBj
b25zdCBrSW5wdXRbXSA9IHsgMiwgMywgNSwgNywgMTEsIDEzLCAxNyB9OworICBpbnQgY29uc3Qg
a0lucHV0W10gPSB7MiwgMywgNSwgNywgMTEsIDEzLCAxN307CiAgIHN0ZDo6dmVjdG9yPGludD4g
Y29uc3QgaXRlbXMoa0lucHV0LCBrSW5wdXQgKyBBQlNMX0FSUkFZU0laRShrSW5wdXQpKTsKICAg
YWJzbDo6Rml4ZWRBcnJheTxpbnQ+IGNvbnN0IGZpeGVkKGl0ZW1zLmJlZ2luKCksIGl0ZW1zLmVu
ZCgpKTsKICAgQVNTRVJUX0VRKGl0ZW1zLnNpemUoKSwgZml4ZWQuc2l6ZSgpKTsKQEAgLTM5MCw3
ICszODUsNyBAQCBURVNUKEl0ZXJhdG9yQ29uc3RydWN0b3JUZXN0LCBGcm9tTm9uRW1wdHlWZWN0
b3IpIHsKIH0KIAogVEVTVChJdGVyYXRvckNvbnN0cnVjdG9yVGVzdCwgRnJvbUJpZGlyZWN0aW9u
YWxJdGVyYXRvclJhbmdlKSB7Ci0gIGludCBjb25zdCBrSW5wdXRbXSA9IHsgMiwgMywgNSwgNywg
MTEsIDEzLCAxNyB9OworICBpbnQgY29uc3Qga0lucHV0W10gPSB7MiwgMywgNSwgNywgMTEsIDEz
LCAxN307CiAgIHN0ZDo6bGlzdDxpbnQ+IGNvbnN0IGl0ZW1zKGtJbnB1dCwga0lucHV0ICsgQUJT
TF9BUlJBWVNJWkUoa0lucHV0KSk7CiAgIGFic2w6OkZpeGVkQXJyYXk8aW50PiBjb25zdCBmaXhl
ZChpdGVtcy5iZWdpbigpLCBpdGVtcy5lbmQoKSk7CiAgIEVYUEVDVF9USEFUKGZpeGVkLCB0ZXN0
aW5nOjpFbGVtZW50c0FyZUFycmF5KGtJbnB1dCkpOwpAQCAtNTA3LDkgKzUwMiw4IEBAIHN0cnVj
dCBQaWNreURlbGV0ZSB7CiAKIFRFU1QoRml4ZWRBcnJheVRlc3QsIFVzZXNHbG9iYWxBbGxvYykg
eyBhYnNsOjpGaXhlZEFycmF5PFBpY2t5RGVsZXRlLCAwPiBhKDUpOyB9CiAKLQogVEVTVChGaXhl
ZEFycmF5VGVzdCwgRGF0YSkgewotICBzdGF0aWMgY29uc3QgaW50IGtJbnB1dFtdID0geyAyLCAz
LCA1LCA3LCAxMSwgMTMsIDE3IH07CisgIHN0YXRpYyBjb25zdCBpbnQga0lucHV0W10gPSB7Miwg
MywgNSwgNywgMTEsIDEzLCAxN307CiAgIGFic2w6OkZpeGVkQXJyYXk8aW50PiBmYShzdGQ6OmJl
Z2luKGtJbnB1dCksIHN0ZDo6ZW5kKGtJbnB1dCkpOwogICBFWFBFQ1RfRVEoZmEuZGF0YSgpLCAm
KmZhLmJlZ2luKCkpOwogICBFWFBFQ1RfRVEoZmEuZGF0YSgpLCAmZmFbMF0pOwpAQCAtODIzLDcg
KzgxNyw3IEBAIFRFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIFNpemVWYWxBbGxvY0NvbnN0cnVj
dG9yKSB7CiAjaWZkZWYgQUREUkVTU19TQU5JVElaRVIKIFRFU1QoRml4ZWRBcnJheVRlc3QsIEFk
ZHJlc3NTYW5pdGl6ZXJBbm5vdGF0aW9uczEpIHsKICAgYWJzbDo6Rml4ZWRBcnJheTxpbnQsIDMy
PiBhKDEwKTsKLSAgaW50ICpyYXcgPSBhLmRhdGEoKTsKKyAgaW50KiByYXcgPSBhLmRhdGEoKTsK
ICAgcmF3WzBdID0gMDsKICAgcmF3WzldID0gMDsKICAgRVhQRUNUX0RFQVRIKHJhd1stMl0gPSAw
LCAiY29udGFpbmVyLW92ZXJmbG93Iik7CkBAIC04MzQsNyArODI4LDcgQEAgVEVTVChGaXhlZEFy
cmF5VGVzdCwgQWRkcmVzc1Nhbml0aXplckFubm90YXRpb25zMSkgewogCiBURVNUKEZpeGVkQXJy
YXlUZXN0LCBBZGRyZXNzU2FuaXRpemVyQW5ub3RhdGlvbnMyKSB7CiAgIGFic2w6OkZpeGVkQXJy
YXk8Y2hhciwgMTc+IGEoMTIpOwotICBjaGFyICpyYXcgPSBhLmRhdGEoKTsKKyAgY2hhciogcmF3
ID0gYS5kYXRhKCk7CiAgIHJhd1swXSA9IDA7CiAgIHJhd1sxMV0gPSAwOwogICBFWFBFQ1RfREVB
VEgocmF3Wy03XSA9IDAsICJjb250YWluZXItb3ZlcmZsb3ciKTsKQEAgLTg0NSw3ICs4MzksNyBA
QCBURVNUKEZpeGVkQXJyYXlUZXN0LCBBZGRyZXNzU2FuaXRpemVyQW5ub3RhdGlvbnMyKSB7CiAK
IFRFU1QoRml4ZWRBcnJheVRlc3QsIEFkZHJlc3NTYW5pdGl6ZXJBbm5vdGF0aW9uczMpIHsKICAg
YWJzbDo6Rml4ZWRBcnJheTx1aW50NjRfdCwgMjA+IGEoMjApOwotICB1aW50NjRfdCAqcmF3ID0g
YS5kYXRhKCk7CisgIHVpbnQ2NF90KiByYXcgPSBhLmRhdGEoKTsKICAgcmF3WzBdID0gMDsKICAg
cmF3WzE5XSA9IDA7CiAgIEVYUEVDVF9ERUFUSChyYXdbLTFdID0gMCwgImNvbnRhaW5lci1vdmVy
ZmxvdyIpOwpAQCAtODU0LDcgKzg0OCw3IEBAIFRFU1QoRml4ZWRBcnJheVRlc3QsIEFkZHJlc3NT
YW5pdGl6ZXJBbm5vdGF0aW9uczMpIHsKIAogVEVTVChGaXhlZEFycmF5VGVzdCwgQWRkcmVzc1Nh
bml0aXplckFubm90YXRpb25zNCkgewogICBhYnNsOjpGaXhlZEFycmF5PFRocmVlSW50cz4gYSgx
MCk7Ci0gIFRocmVlSW50cyAqcmF3ID0gYS5kYXRhKCk7CisgIFRocmVlSW50cyogcmF3ID0gYS5k
YXRhKCk7CiAgIHJhd1swXSA9IFRocmVlSW50cygpOwogICByYXdbOV0gPSBUaHJlZUludHMoKTsK
ICAgLy8gTm90ZTogcmF3Wy0xXSBpcyBwb2ludGluZyB0byAxMiBieXRlcyBiZWZvcmUgdGhlIGNv
bnRhaW5lciByYW5nZS4gSG93ZXZlciwKQEAgLTg2OSw0ICs4NjMsMjEgQEAgVEVTVChGaXhlZEFy
cmF5VGVzdCwgQWRkcmVzc1Nhbml0aXplckFubm90YXRpb25zNCkgewogfQogI2VuZGlmICAvLyBB
RERSRVNTX1NBTklUSVpFUgogCitURVNUKEZpeGVkQXJyYXlUZXN0LCBBYnNsSGFzaFZhbHVlV29y
a3MpIHsKKyAgdXNpbmcgViA9IGFic2w6OkZpeGVkQXJyYXk8aW50PjsKKyAgc3RkOjp2ZWN0b3I8
Vj4gY2FzZXM7CisKKyAgLy8gR2VuZXJhdGUgYSB2YXJpZXR5IG9mIHZlY3RvcnMgc29tZSBvZiB0
aGVzZSBhcmUgc21hbGwgZW5vdWdoIGZvciB0aGUgaW5saW5lCisgIC8vIHNwYWNlIGJ1dCBhcmUg
c3RvcmVkIG91dCBvZiBsaW5lLgorICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAg
ICBWIHYoaSk7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBpOyArK2opIHsKKyAgICAgIHZbal0g
PSBqOworICAgIH0KKyAgICBjYXNlcy5wdXNoX2JhY2sodik7CisgIH0KKworICBFWFBFQ1RfVFJV
RShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNhc2VzKSk7Cit9
CisKIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFz
aF9tYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfbWFwLmgKaW5kZXggZTU1NzBkMTAw
NDQxMzE2NmFiZGRkYjZjNTQ2YmI1N2NhYmQ0YmYwNC4uMGJjNTAxYjExNDNhODU5NWQ2NTJjZDJi
ODBjOGU0ZGI5YmM3Y2ViOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9t
YXAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcC5oCkBAIC00LDcgKzQsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvYWxnb3Jp
dGhtL2NvbnRhaW5lci5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRh
aW5lcl9tZW1vcnkuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1
bmN0aW9uX2RlZmF1bHRzLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CiAjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiICAvLyBJV1lVIHByYWdtYTogZXhw
b3J0CkBAIC02OSwxNCArNzAsMTQgQEAgc3RydWN0IEZsYXRIYXNoTWFwUG9saWN5OwogLy8gQnkg
ZGVmYXVsdCwgYGZsYXRfaGFzaF9tYXBgIHVzZXMgdGhlIGBhYnNsOjpIYXNoYCBoYXNoaW5nIGZy
YW1ld29yay4KIC8vIEFsbCBmdW5kYW1lbnRhbCBhbmQgQWJzZWlsIHR5cGVzIHRoYXQgc3VwcG9y
dCB0aGUgYGFic2w6Okhhc2hgIGZyYW1ld29yayBoYXZlCiAvLyBhIGNvbXBhdGlibGUgZXF1YWxp
dHkgb3BlcmF0b3IgZm9yIGNvbXBhcmluZyBpbnNlcnRpb25zIGludG8gYGZsYXRfaGFzaF9tYXBg
LgotLy8gSWYgeW91ciB0eXBlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBgYXNibDo6SGFz
aGAgZnJhbWV3b3JrLCBzZWUKKy8vIElmIHlvdXIgdHlwZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBi
eSB0aGUgYGFic2w6Okhhc2hgIGZyYW1ld29yaywgc2VlCiAvLyBhYnNsL2hhc2gvaGFzaC5oIGZv
ciBpbmZvcm1hdGlvbiBvbiBleHRlbmRpbmcgQWJzZWlsIGhhc2hpbmcgdG8gdXNlci1kZWZpbmVk
CiAvLyB0eXBlcy4KIC8vCiAvLyBOT1RFOiBBIGBmbGF0X2hhc2hfbWFwYCBzdG9yZXMgaXRzIHZh
bHVlIHR5cGVzIGRpcmVjdGx5IGluc2lkZSBpdHMKIC8vIGltcGxlbWVudGF0aW9uIGFycmF5IHRv
IGF2b2lkIG1lbW9yeSBpbmRpcmVjdGlvbi4gQmVjYXVzZSBhIGBmbGF0X2hhc2hfbWFwYAogLy8g
aXMgZGVzaWduZWQgdG8gbW92ZSBkYXRhIHdoZW4gcmVoYXNoZWQsIG1hcCB2YWx1ZXMgd2lsbCBu
b3QgcmV0YWluIHBvaW50ZXIKLS8vIHN0YWJpbGl0eS4gSWYgeW91IHJlcXVpcmUgcG9pbnRlciBz
dGFiaWxpdHksIG9yIHlvdXIgdmFsdWVzIGFyZSBsYXJnZSwKKy8vIHN0YWJpbGl0eS4gSWYgeW91
IHJlcXVpcmUgcG9pbnRlciBzdGFiaWxpdHksIG9yIGlmIHlvdXIgdmFsdWVzIGFyZSBsYXJnZSwK
IC8vIGNvbnNpZGVyIHVzaW5nIGBhYnNsOjpmbGF0X2hhc2hfbWFwPEtleSwgc3RkOjp1bmlxdWVf
cHRyPFZhbHVlPj5gIGluc3RlYWQuCiAvLyBJZiB5b3VyIHR5cGVzIGFyZSBub3QgbW92ZWFibGUg
b3IgeW91IHJlcXVpcmUgcG9pbnRlciBzdGFiaWxpdHkgZm9yIGtleXMsCiAvLyBjb25zaWRlciBg
YWJzbDo6bm9kZV9oYXNoX21hcGAuCkBAIC0xMDksNiArMTEwLDQ2IEBAIGNsYXNzIGZsYXRfaGFz
aF9tYXAgOiBwdWJsaWMgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpyYXdfaGFzaF9tYXA8CiAg
IHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBmbGF0X2hhc2hfbWFwOjpyYXdfaGFzaF9tYXA7CiAKICBw
dWJsaWM6CisgIC8vIENvbnN0cnVjdG9ycyBhbmQgQXNzaWdubWVudCBPcGVyYXRvcnMKKyAgLy8K
KyAgLy8gQSBmbGF0X2hhc2hfbWFwIHN1cHBvcnRzIHRoZSBzYW1lIG92ZXJsb2FkIHNldCBhcyBg
c3RkOjp1bm9yZGVyZWRfbWFwYAorICAvLyBmb3IgY29uc3RydWN0aW9uIGFuZCBhc3NpZ25tZW50
OgorICAvLworICAvLyAqICBEZWZhdWx0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgIC8vIE5v
IGFsbG9jYXRpb24gZm9yIHRoZSB0YWJsZSdzIGVsZW1lbnRzIGlzIG1hZGUuCisgIC8vICAgIGFi
c2w6OmZsYXRfaGFzaF9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwMTsKKyAgLy8KKyAgLy8gKiBJ
bml0aWFsaXplciBMaXN0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6ZmxhdF9oYXNo
X21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXAyID0KKyAgLy8gICAgICAge3sxLCAiaHVleSJ9LCB7
MiwgImRld2V5In0sIHszLCAibG91aWUifSx9OworICAvLworICAvLyAqIENvcHkgY29uc3RydWN0
b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpmbGF0X2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1h
cDMobWFwMik7CisgIC8vCisgIC8vICogQ29weSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisg
IC8vICAvLyBIYXNoIGZ1bmN0b3IgYW5kIENvbXBhcmF0b3IgYXJlIGNvcGllZCBhcyB3ZWxsCisg
IC8vICBhYnNsOjpmbGF0X2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDQ7CisgIC8vICBt
YXA0ID0gbWFwMzsKKyAgLy8KKyAgLy8gKiBNb3ZlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAg
Ly8gTW92ZSBpcyBndWFyYW50ZWVkIGVmZmljaWVudAorICAvLyAgIGFic2w6OmZsYXRfaGFzaF9t
YXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwNShzdGQ6Om1vdmUobWFwNCkpOworICAvLworICAvLyAq
IE1vdmUgYXNzaWdubWVudCBvcGVyYXRvcgorICAvLworICAvLyAgIC8vIE1heSBiZSBlZmZpY2ll
bnQgaWYgYWxsb2NhdG9ycyBhcmUgY29tcGF0aWJsZQorICAvLyAgIGFic2w6OmZsYXRfaGFzaF9t
YXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwNjsKKyAgLy8gICBtYXA2ID0gc3RkOjptb3ZlKG1hcDUp
OworICAvLworICAvLyAqIFJhbmdlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgc3RkOjp2ZWN0
b3I8c3RkOjpwYWlyPGludCwgc3RkOjpzdHJpbmc+PiB2ID0ge3sxLCAiYSJ9LCB7MiwgImIifX07
CisgIC8vICAgYWJzbDo6ZmxhdF9oYXNoX21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXA3KHYuYmVn
aW4oKSwgdi5lbmQoKSk7CiAgIGZsYXRfaGFzaF9tYXAoKSB7fQogICB1c2luZyBCYXNlOjpCYXNl
OwogCkBAIC0xNzgsOCArMjE5LDEyIEBAIGNsYXNzIGZsYXRfaGFzaF9tYXAgOiBwdWJsaWMgYWJz
bDo6Y29udGFpbmVyX2ludGVybmFsOjpyYXdfaGFzaF9tYXA8CiAgIC8vICAgRXJhc2VzIHRoZSBl
bGVtZW50IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGBmbGF0X2hhc2hfbWFwYCwgcmV0dXJuaW5nCiAg
IC8vICAgYHZvaWRgLgogICAvLwotICAvLyAgIE5PVEU6IHRoaXMgcmV0dXJuIGJlaGF2aW9yIGlz
IGRpZmZlcmVudCB0aGFuIHRoYXQgb2YgU1RMIGNvbnRhaW5lcnMgaW4KLSAgLy8gICBnZW5lcmFs
IGFuZCBgc3RkOjp1bm9yZGVyZWRfbWFwYCBpbiBwYXJ0aWN1bGFyLgorICAvLyAgIE5PVEU6IHJl
dHVybmluZyBgdm9pZGAgaW4gdGhpcyBjYXNlIGlzIGRpZmZlcmVudCB0aGFuIHRoYXQgb2YgU1RM
CisgIC8vICAgY29udGFpbmVycyBpbiBnZW5lcmFsIGFuZCBgc3RkOjp1bm9yZGVyZWRfbWFwYCBp
biBwYXJ0aWN1bGFyICh3aGljaAorICAvLyAgIHJldHVybiBhbiBpdGVyYXRvciB0byB0aGUgZWxl
bWVudCBmb2xsb3dpbmcgdGhlIGVyYXNlZCBlbGVtZW50KS4gSWYgdGhhdAorICAvLyAgIGl0ZXJh
dG9yIGlzIG5lZWRlZCwgc2ltcGx5IHBvc3QgaW5jcmVtZW50IHRoZSBpdGVyYXRvcjoKKyAgLy8K
KyAgLy8gICAgIG1hcC5lcmFzZShpdCsrKTsKICAgLy8KICAgLy8gaXRlcmF0b3IgZXJhc2UoY29u
c3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpOgogICAvLwpAQCAtNDg2LDI1
ICs1MzEsMjYgQEAgbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CiAKIHRlbXBsYXRlIDxj
bGFzcyBLLCBjbGFzcyBWPgogc3RydWN0IEZsYXRIYXNoTWFwUG9saWN5IHsKLSAgdXNpbmcgc2xv
dF90eXBlID0gY29udGFpbmVyX2ludGVybmFsOjpzbG90X3R5cGU8SywgVj47CisgIHVzaW5nIHNs
b3RfcG9saWN5ID0gY29udGFpbmVyX2ludGVybmFsOjptYXBfc2xvdF9wb2xpY3k8SywgVj47Cisg
IHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIHNsb3RfcG9saWN5OjpzbG90X3R5cGU7CiAgIHVz
aW5nIGtleV90eXBlID0gSzsKICAgdXNpbmcgbWFwcGVkX3R5cGUgPSBWOwogICB1c2luZyBpbml0
X3R5cGUgPSBzdGQ6OnBhaXI8Lypub24gY29uc3QqLyBrZXlfdHlwZSwgbWFwcGVkX3R5cGU+Owog
CiAgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3IsIGNsYXNzLi4uIEFyZ3M+CiAgIHN0YXRpYyB2
b2lkIGNvbnN0cnVjdChBbGxvY2F0b3IqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QsIEFyZ3MmJi4u
LiBhcmdzKSB7Ci0gICAgc2xvdF90eXBlOjpjb25zdHJ1Y3QoYWxsb2MsIHNsb3QsIHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgc2xvdF9wb2xpY3k6OmNvbnN0cnVjdChhbGxvYywg
c2xvdCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgfQogCiAgIHRlbXBsYXRlIDxj
bGFzcyBBbGxvY2F0b3I+CiAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koQWxsb2NhdG9yKiBhbGxvYywg
c2xvdF90eXBlKiBzbG90KSB7Ci0gICAgc2xvdF90eXBlOjpkZXN0cm95KGFsbG9jLCBzbG90KTsK
KyAgICBzbG90X3BvbGljeTo6ZGVzdHJveShhbGxvYywgc2xvdCk7CiAgIH0KIAogICB0ZW1wbGF0
ZSA8Y2xhc3MgQWxsb2NhdG9yPgogICBzdGF0aWMgdm9pZCB0cmFuc2ZlcihBbGxvY2F0b3IqIGFs
bG9jLCBzbG90X3R5cGUqIG5ld19zbG90LAogICAgICAgICAgICAgICAgICAgICAgICBzbG90X3R5
cGUqIG9sZF9zbG90KSB7Ci0gICAgc2xvdF90eXBlOjp0cmFuc2ZlcihhbGxvYywgbmV3X3Nsb3Qs
IG9sZF9zbG90KTsKKyAgICBzbG90X3BvbGljeTo6dHJhbnNmZXIoYWxsb2MsIG5ld19zbG90LCBv
bGRfc2xvdCk7CiAgIH0KIAogICB0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MuLi4gQXJncz4KQEAg
LTUyNCw1ICs1NzAsMTYgQEAgc3RydWN0IEZsYXRIYXNoTWFwUG9saWN5IHsKIH07CiAKIH0gIC8v
IG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKKworbmFtZXNwYWNlIGNvbnRhaW5lcl9hbGdv
cml0aG1faW50ZXJuYWwgeworCisvLyBTcGVjaWFsaXphdGlvbiBvZiB0cmFpdCBpbiBhYnNsL2Fs
Z29yaXRobS9jb250YWluZXIuaAordGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3Mg
SGFzaCwgY2xhc3MgS2V5RXF1YWwsIGNsYXNzIEFsbG9jYXRvcj4KK3N0cnVjdCBJc1Vub3JkZXJl
ZENvbnRhaW5lcjwKKyAgICBhYnNsOjpmbGF0X2hhc2hfbWFwPEtleSwgVCwgSGFzaCwgS2V5RXF1
YWwsIEFsbG9jYXRvcj4+IDogc3RkOjp0cnVlX3R5cGUge307CisKK30gIC8vIG5hbWVzcGFjZSBj
b250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsCisKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNl
bmRpZiAgLy8gQUJTTF9DT05UQUlORVJfRkxBVF9IQVNIX01BUF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXBfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0
X2hhc2hfbWFwX3Rlc3QuY2MKaW5kZXggMTBhNzgxZmZkNmM3ZDlkMTQ5MDg2ZTQ0MzE3NGE3YWE3
NmFkMjJhZS4uZWJjYjU2MGZjMDRlM2EyMzJkYjI2OGJjNWRiYjA2OGNlMTMwYWZmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXBfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvZmxhdF9oYXNoX21hcF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgogI2luY2x1ZGUgImFic2wvY29u
dGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oIgogI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QuaCIK
KyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21lbWJlcnNf
dGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBf
bW9kaWZpZXJzX3Rlc3QuaCIKICNpbmNsdWRlICJhYnNsL3R5cGVzL2FueS5oIgogCkBAIC0zMCwx
OSArMzEsMjAgQEAgdXNpbmcgOjp0ZXN0aW5nOjpQYWlyOwogdXNpbmcgOjp0ZXN0aW5nOjpVbm9y
ZGVyZWRFbGVtZW50c0FyZTsKIAogdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+Ci11c2luZyBN
YXAgPQotICAgIGZsYXRfaGFzaF9tYXA8SywgViwgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVm
dWxUZXN0aW5nRXF1YWwsIEFsbG9jPD4+OwordXNpbmcgTWFwID0gZmxhdF9oYXNoX21hcDxLLCBW
LCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWxsb2M8c3RkOjpwYWlyPGNvbnN0IEssIFY+Pj47CiAKIHN0YXRpY19h
c3NlcnQoIXN0ZDo6aXNfc3RhbmRhcmRfbGF5b3V0PE5vblN0YW5kYXJkTGF5b3V0PigpLCAiIik7
CiAKIHVzaW5nIE1hcFR5cGVzID0KLSAgICA6OnRlc3Rpbmc6OlR5cGVzPE1hcDxpbnQsIGludD4s
IE1hcDxzdGQ6OnN0cmluZywgaW50PiwgTWFwPEVudW0sIHN0ZDo6c3RyaW5nPiwKLSAgICAgICAg
ICAgICAgICAgICAgIE1hcDxFbnVtQ2xhc3MsIGludD4sIE1hcDxpbnQsIE5vblN0YW5kYXJkTGF5
b3V0PiwKLSAgICAgICAgICAgICAgICAgICAgIE1hcDxOb25TdGFuZGFyZExheW91dCwgaW50Pj47
CisgICAgOjp0ZXN0aW5nOjpUeXBlczxNYXA8aW50LCBpbnQ+LCBNYXA8c3RkOjpzdHJpbmcsIGlu
dD4sCisgICAgICAgICAgICAgICAgICAgICBNYXA8RW51bSwgc3RkOjpzdHJpbmc+LCBNYXA8RW51
bUNsYXNzLCBpbnQ+LAorICAgICAgICAgICAgICAgICAgICAgTWFwPGludCwgTm9uU3RhbmRhcmRM
YXlvdXQ+LCBNYXA8Tm9uU3RhbmRhcmRMYXlvdXQsIGludD4+OwogCi1JTlNUQU5USUFURV9UWVBF
RF9URVNUX0NBU0VfUChGbGF0SGFzaE1hcCwgQ29uc3RydWN0b3JUZXN0LCBNYXBUeXBlcyk7Ci1J
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFzaE1hcCwgTG9va3VwVGVzdCwgTWFw
VHlwZXMpOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRmxhdEhhc2hNYXAsIE1vZGlm
aWVyc1Rlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChGbGF0
SGFzaE1hcCwgQ29uc3RydWN0b3JUZXN0LCBNYXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9U
RVNUX1NVSVRFX1AoRmxhdEhhc2hNYXAsIExvb2t1cFRlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfU1VJVEVfUChGbGF0SGFzaE1hcCwgTWVtYmVyc1Rlc3QsIE1hcFR5cGVz
KTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChGbGF0SGFzaE1hcCwgTW9kaWZpZXJz
VGVzdCwgTWFwVHlwZXMpOwogCiBURVNUKEZsYXRIYXNoTWFwLCBTdGFuZGFyZExheW91dCkgewog
ICBzdHJ1Y3QgSW50IHsKQEAgLTk0LDcgKzk2LDcgQEAgVEVTVChGbGF0SGFzaE1hcCwgSXRlcmF0
ZXNNc2FuKSB7CiAgIH0KIH0KIAotLy8gRGVtb25zdHJhdGlvbiBvZiB0aGUgIkxhenkgS2V5IiBw
YXR0ZXJuLiAgVGhpcyB1c2VzIGhldGVyb2dlbm91cyBpbnNlcnQgdG8KKy8vIERlbW9uc3RyYXRp
b24gb2YgdGhlICJMYXp5IEtleSIgcGF0dGVybi4gIFRoaXMgdXNlcyBoZXRlcm9nZW5lb3VzIGlu
c2VydCB0bwogLy8gYXZvaWQgY3JlYXRpbmcgZXhwZW5zaXZlIGtleSBlbGVtZW50cyB3aGVuIHRo
ZSBpdGVtIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUKIC8vIG1hcC4KIHN0cnVjdCBMYXp5SW50
IHsKQEAgLTEzOSw2ICsxNDEsNyBAQCBURVNUKEZsYXRIYXNoTWFwLCBMYXp5S2V5UGF0dGVybikg
ewogICBpbnQgY29udmVyc2lvbnMgPSAwOwogICBpbnQgaGFzaGVzID0gMDsKICAgZmxhdF9oYXNo
X21hcDxzaXplX3QsIHNpemVfdCwgSGFzaCwgRXE+IG0oMCwgSGFzaHsmaGFzaGVzfSk7CisgIG0u
cmVzZXJ2ZSgzKTsKIAogICBtW0xhenlJbnQoMSwgJmNvbnZlcnNpb25zKV0gPSAxOwogICBFWFBF
Q1RfVEhBVChtLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKDEsIDEpKSk7CkBAIC0yMDMsNyAr
MjA2LDkgQEAgVEVTVChGbGF0SGFzaE1hcCwgTWVyZ2VFeHRyYWN0SW5zZXJ0KSB7CiAgIG0uaW5z
ZXJ0KHN0ZDo6bW92ZShub2RlKSk7CiAgIEVYUEVDVF9USEFUKG0sIFVub3JkZXJlZEVsZW1lbnRz
QXJlKFBhaXIoMSwgMTcpLCBQYWlyKDIsIDkpKSk7CiB9Ci0jaWYgIWRlZmluZWQoX19BTkRST0lE
X18pICYmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19FTVNDUklQVEVOX18pCisK
KyNpZiAoZGVmaW5lZChBQlNMX0hBVkVfU1REX0FOWSkgfHwgIWRlZmluZWQoX0xJQkNQUF9WRVJT
SU9OKSkgJiYgXAorICAgICFkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQogVEVTVChGbGF0SGFzaE1h
cCwgQW55KSB7CiAgIGFic2w6OmZsYXRfaGFzaF9tYXA8aW50LCBhYnNsOjphbnk+IG07CiAgIG0u
ZW1wbGFjZSgxLCA3KTsKQEAgLTIzNCw3ICsyMzksOCBAQCBURVNUKEZsYXRIYXNoTWFwLCBBbnkp
IHsKICAgQVNTRVJUX05FKGl0MiwgbTIuZW5kKCkpOwogICBFWFBFQ1RfRVEoNywgaXQyLT5zZWNv
bmQpOwogfQotI2VuZGlmICAvLyBfX0FORFJPSURfXworI2VuZGlmICAvLyAoZGVmaW5lZChBQlNM
X0hBVkVfU1REX0FOWSkgfHwgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSkgJiYKKyAgICAgICAg
Ly8gIWRlZmluZWQoX19FTVNDUklQVEVOX18pCiAKIH0gIC8vIG5hbWVzcGFjZQogfSAgLy8gbmFt
ZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2Zs
YXRfaGFzaF9zZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfc2V0LmgKaW5kZXggOThh
ZWFkMWE4YWUyMDllMmE0NWE5NTYxNjdiZTk1ZTcyNzBjNTQ0Yi4uMmE1MWMzNDExZDY2MzFhOTVl
NmNiM2M2ZDdiMGMyN2MyZTlhNWVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRf
aGFzaF9zZXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldC5oCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wv
YWxnb3JpdGhtL2NvbnRhaW5lci5oIgogI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKICNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiCiAjaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAg
Ly8gSVdZVSBwcmFnbWE6IGV4cG9ydApAQCAtNTQsOSArNTUsOSBAQCBzdHJ1Y3QgRmxhdEhhc2hT
ZXRQb2xpY3k7CiAvLyBmb2xsb3dpbmcgbm90YWJsZSBkaWZmZXJlbmNlczoKIC8vCiAvLyAqIFJl
cXVpcmVzIGtleXMgdGhhdCBhcmUgQ29weUNvbnN0cnVjdGlibGUKLS8vICogU3VwcG9ydHMgaGV0
ZXJvZ2VuZW91cyBsb29rdXAsIHRocm91Z2ggYGZpbmQoKWAsIGBvcGVyYXRvcltdKClgIGFuZAot
Ly8gICBgaW5zZXJ0KClgLCBwcm92aWRlZCB0aGF0IHRoZSBzZXQgaXMgcHJvdmlkZWQgYSBjb21w
YXRpYmxlIGhldGVyb2dlbmVvdXMKLS8vICAgaGFzaGluZyBmdW5jdGlvbiBhbmQgZXF1YWxpdHkg
b3BlcmF0b3IuCisvLyAqIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCB0aHJvdWdoIGBm
aW5kKClgIGFuZCBgaW5zZXJ0KClgLCBwcm92aWRlZAorLy8gICB0aGF0IHRoZSBzZXQgaXMgcHJv
dmlkZWQgYSBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMgaGFzaGluZyBmdW5jdGlvbiBhbmQKKy8v
ICAgZXF1YWxpdHkgb3BlcmF0b3IuCiAvLyAqIEludmFsaWRhdGVzIGFueSByZWZlcmVuY2VzIGFu
ZCBwb2ludGVycyB0byBlbGVtZW50cyB3aXRoaW4gdGhlIHRhYmxlIGFmdGVyCiAvLyAgIGByZWhh
c2goKWAuCiAvLyAqIENvbnRhaW5zIGEgYGNhcGFjaXR5KClgIG1lbWJlciBmdW5jdGlvbiBpbmRp
Y2F0aW5nIHRoZSBudW1iZXIgb2YgZWxlbWVudApAQCAtNjYsNyArNjcsNyBAQCBzdHJ1Y3QgRmxh
dEhhc2hTZXRQb2xpY3k7CiAvLyBCeSBkZWZhdWx0LCBgZmxhdF9oYXNoX3NldGAgdXNlcyB0aGUg
YGFic2w6Okhhc2hgIGhhc2hpbmcgZnJhbWV3b3JrLiBBbGwKIC8vIGZ1bmRhbWVudGFsIGFuZCBB
YnNlaWwgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrIGhhdmUg
YQogLy8gY29tcGF0aWJsZSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgY29tcGFyaW5nIGluc2VydGlv
bnMgaW50byBgZmxhdF9oYXNoX21hcGAuCi0vLyBJZiB5b3VyIHR5cGUgaXMgbm90IHlldCBzdXBw
b3J0ZWQgYnkgdGhlIGBhc2JsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQorLy8gSWYgeW91ciB0eXBl
IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrLCBzZWUK
IC8vIGFic2wvaGFzaC9oYXNoLmggZm9yIGluZm9ybWF0aW9uIG9uIGV4dGVuZGluZyBBYnNlaWwg
aGFzaGluZyB0byB1c2VyLWRlZmluZWQKIC8vIHR5cGVzLgogLy8KQEAgLTg0LDcgKzg1LDcgQEAg
c3RydWN0IEZsYXRIYXNoU2V0UG9saWN5OwogLy8gICAgIHsiaHVleSIsICJkZXdleSIsICJsb3Vp
ZSJ9OwogLy8KIC8vICAvLyBJbnNlcnQgYSBuZXcgZWxlbWVudCBpbnRvIHRoZSBmbGF0IGhhc2gg
c2V0Ci0vLyAgZHVja3MuaW5zZXJ0KCJkb25hbGQifTsKKy8vICBkdWNrcy5pbnNlcnQoImRvbmFs
ZCIpOwogLy8KIC8vICAvLyBGb3JjZSBhIHJlaGFzaCBvZiB0aGUgZmxhdCBoYXNoIHNldAogLy8g
IGR1Y2tzLnJlaGFzaCgwKTsKQEAgLTEwMiw2ICsxMDMsNDYgQEAgY2xhc3MgZmxhdF9oYXNoX3Nl
dAogICB1c2luZyBCYXNlID0gdHlwZW5hbWUgZmxhdF9oYXNoX3NldDo6cmF3X2hhc2hfc2V0Owog
CiAgcHVibGljOgorICAvLyBDb25zdHJ1Y3RvcnMgYW5kIEFzc2lnbm1lbnQgT3BlcmF0b3JzCisg
IC8vCisgIC8vIEEgZmxhdF9oYXNoX3NldCBzdXBwb3J0cyB0aGUgc2FtZSBvdmVybG9hZCBzZXQg
YXMgYHN0ZDo6dW5vcmRlcmVkX21hcGAKKyAgLy8gZm9yIGNvbnN0cnVjdGlvbiBhbmQgYXNzaWdu
bWVudDoKKyAgLy8KKyAgLy8gKiAgRGVmYXVsdCBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgICAv
LyBObyBhbGxvY2F0aW9uIGZvciB0aGUgdGFibGUncyBlbGVtZW50cyBpcyBtYWRlLgorICAvLyAg
ICBhYnNsOjpmbGF0X2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzZXQxOworICAvLworICAvLyAqIElu
aXRpYWxpemVyIExpc3QgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpmbGF0X2hhc2hf
c2V0PHN0ZDo6c3RyaW5nPiBzZXQyID0KKyAgLy8gICAgICAge3siaHVleSJ9LCB7ImRld2V5In0s
IHsibG91aWUifSx9OworICAvLworICAvLyAqIENvcHkgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8g
ICBhYnNsOjpmbGF0X2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzZXQzKHNldDIpOworICAvLworICAv
LyAqIENvcHkgYXNzaWdubWVudCBvcGVyYXRvcgorICAvLworICAvLyAgLy8gSGFzaCBmdW5jdG9y
IGFuZCBDb21wYXJhdG9yIGFyZSBjb3BpZWQgYXMgd2VsbAorICAvLyAgYWJzbDo6ZmxhdF9oYXNo
X3NldDxzdGQ6OnN0cmluZz4gc2V0NDsKKyAgLy8gIHNldDQgPSBzZXQzOworICAvLworICAvLyAq
IE1vdmUgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICAvLyBNb3ZlIGlzIGd1YXJhbnRlZWQgZWZm
aWNpZW50CisgIC8vICAgYWJzbDo6ZmxhdF9oYXNoX3NldDxzdGQ6OnN0cmluZz4gc2V0NShzdGQ6
Om1vdmUoc2V0NCkpOworICAvLworICAvLyAqIE1vdmUgYXNzaWdubWVudCBvcGVyYXRvcgorICAv
LworICAvLyAgIC8vIE1heSBiZSBlZmZpY2llbnQgaWYgYWxsb2NhdG9ycyBhcmUgY29tcGF0aWJs
ZQorICAvLyAgIGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHNldDY7CisgIC8vICAg
c2V0NiA9IHN0ZDo6bW92ZShzZXQ1KTsKKyAgLy8KKyAgLy8gKiBSYW5nZSBjb25zdHJ1Y3Rvcgor
ICAvLworICAvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ID0geyJhIiwgImIifTsKKyAg
Ly8gICBhYnNsOjpmbGF0X2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzZXQ3KHYuYmVnaW4oKSwgdi5l
bmQoKSk7CiAgIGZsYXRfaGFzaF9zZXQoKSB7fQogICB1c2luZyBCYXNlOjpCYXNlOwogCkBAIC0x
NzEsOCArMjEyLDEyIEBAIGNsYXNzIGZsYXRfaGFzaF9zZXQKICAgLy8gICBFcmFzZXMgdGhlIGVs
ZW1lbnQgYXQgYHBvc2l0aW9uYCBvZiB0aGUgYGZsYXRfaGFzaF9zZXRgLCByZXR1cm5pbmcKICAg
Ly8gICBgdm9pZGAuCiAgIC8vCi0gIC8vICAgTk9URTogdGhpcyByZXR1cm4gYmVoYXZpb3IgaXMg
ZGlmZmVyZW50IHRoYW4gdGhhdCBvZiBTVEwgY29udGFpbmVycyBpbgotICAvLyAgIGdlbmVyYWwg
YW5kIGBzdGQ6OnVub3JkZXJlZF9tYXBgIGluIHBhcnRpY3VsYXIuCisgIC8vICAgTk9URTogcmV0
dXJuaW5nIGB2b2lkYCBpbiB0aGlzIGNhc2UgaXMgZGlmZmVyZW50IHRoYW4gdGhhdCBvZiBTVEwK
KyAgLy8gICBjb250YWluZXJzIGluIGdlbmVyYWwgYW5kIGBzdGQ6OnVub3JkZXJlZF9zZXRgIGlu
IHBhcnRpY3VsYXIgKHdoaWNoCisgIC8vICAgcmV0dXJuIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbGVt
ZW50IGZvbGxvd2luZyB0aGUgZXJhc2VkIGVsZW1lbnQpLiBJZiB0aGF0CisgIC8vICAgaXRlcmF0
b3IgaXMgbmVlZGVkLCBzaW1wbHkgcG9zdCBpbmNyZW1lbnQgdGhlIGl0ZXJhdG9yOgorICAvLwor
ICAvLyAgICAgc2V0LmVyYXNlKGl0KyspOwogICAvLwogICAvLyBpdGVyYXRvciBlcmFzZShjb25z
dF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCk6CiAgIC8vCkBAIC0yMzgsOCAr
MjgzLDcgQEAgY2xhc3MgZmxhdF9oYXNoX3NldAogICAvLwogICAvLyBUaGUgZWxlbWVudCBtYXkg
YmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0
aGUKICAgLy8ga2V5IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNv
bnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQotICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFBy
ZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIga2V5IGlzIG5vdAotICAvLyBjb3B5YWJs
ZSBvciBtb3ZlYWJsZS4KKyAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5LgogICAvLwogICAvLyBJ
ZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFy
ZSBpbnZhbGlkYXRlZC4KICAgdXNpbmcgQmFzZTo6ZW1wbGFjZTsKQEAgLTI1Myw4ICsyOTcsNyBA
QCBjbGFzcyBmbGF0X2hhc2hfc2V0CiAgIC8vCiAgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25z
dHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQogICAv
LyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0
ZWQgZWxlbWVudCB3aWxsIGJlCi0gIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVyIGB0
cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90Ci0gIC8vIGNvcHlhYmxlIG9yIG1v
dmVhYmxlLgorICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuCiAgIC8vCiAgIC8vIElmIHJlaGFz
aGluZyBvY2N1cnMgZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFs
aWRhdGVkLgogICB1c2luZyBCYXNlOjplbXBsYWNlX2hpbnQ7CkBAIC00MzUsNSArNDc4LDE2IEBA
IHN0cnVjdCBGbGF0SGFzaFNldFBvbGljeSB7CiAgIHN0YXRpYyBzaXplX3Qgc3BhY2VfdXNlZChj
b25zdCBUKikgeyByZXR1cm4gMDsgfQogfTsKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50
ZXJuYWwKKworbmFtZXNwYWNlIGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWwgeworCisvLyBT
cGVjaWFsaXphdGlvbiBvZiB0cmFpdCBpbiBhYnNsL2FsZ29yaXRobS9jb250YWluZXIuaAordGVt
cGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgSGFzaCwgY2xhc3MgS2V5RXF1YWwsIGNsYXNzIEFsbG9j
YXRvcj4KK3N0cnVjdCBJc1Vub3JkZXJlZENvbnRhaW5lcjxhYnNsOjpmbGF0X2hhc2hfc2V0PEtl
eSwgSGFzaCwgS2V5RXF1YWwsIEFsbG9jYXRvcj4+CisgICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsK
KworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWwKKwogfSAgLy8g
bmFtZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9GTEFUX0hBU0hfU0VU
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXRfdGVzdC5jYwppbmRleCBlNTJmZDUzMmNiZWVj
NzUxNThiZTYyMDVlNTYxMTgxY2IxNzRkNGJiLi5iNTViZTU5YjA0YzgyMjUzYWVhYjM1OGYzNDhi
MmViY2M5YzE2ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldF90
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfc2V0X3Rlc3QuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE5LDYgKzE5LDcgQEAKICNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmgi
CiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9jb25zdHJ1
Y3Rvcl90ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVk
X3NldF9sb29rdXBfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vu
b3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvbWVt
b3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgpAQCAt
NDAsOSArNDEsMTAgQEAgdXNpbmcgU2V0ID0KIHVzaW5nIFNldFR5cGVzID0KICAgICA6OnRlc3Rp
bmc6OlR5cGVzPFNldDxpbnQ+LCBTZXQ8c3RkOjpzdHJpbmc+LCBTZXQ8RW51bT4sIFNldDxFbnVt
Q2xhc3M+PjsKIAotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRmxhdEhhc2hTZXQsIENv
bnN0cnVjdG9yVGVzdCwgU2V0VHlwZXMpOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
RmxhdEhhc2hTZXQsIExvb2t1cFRlc3QsIFNldFR5cGVzKTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKEZsYXRIYXNoU2V0LCBNb2RpZmllcnNUZXN0LCBTZXRUeXBlcyk7CitJTlNUQU5U
SUFURV9UWVBFRF9URVNUX1NVSVRFX1AoRmxhdEhhc2hTZXQsIENvbnN0cnVjdG9yVGVzdCwgU2V0
VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKEZsYXRIYXNoU2V0LCBMb29r
dXBUZXN0LCBTZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoRmxhdEhh
c2hTZXQsIE1lbWJlcnNUZXN0LCBTZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NV
SVRFX1AoRmxhdEhhc2hTZXQsIE1vZGlmaWVyc1Rlc3QsIFNldFR5cGVzKTsKIAogVEVTVChGbGF0
SGFzaFNldCwgRW1wbGFjZVN0cmluZykgewogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9
IHsiYSIsICJiIn07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3Iu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oCmluZGV4IDEyNzU2YmI4MjBjZjZh
ZTk1NmNhNDY0YThhYzdjZDczMmNiYzllMWYuLjI1YWYxNjU4OTE0Yzg1ZmMyZmMxZDY4Yzk5NDA0
M2FmNTJmZmIyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oCkBAIC0xLDEwICsxLDEwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLyBDb3B5cmlnaHQgMjAx
OSBUaGUgQWJzZWlsIEF1dGhvcnMuCiAvLwogLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTIwLDE3ICsyMCwxNyBAQAogLy8gdmVjdG9yIiB3aGljaCBiZWhhdmVzIGluIGFu
IGVxdWl2YWxlbnQgZmFzaGlvbiB0byBhIGBzdGQ6OnZlY3RvcmAsIGV4Y2VwdAogLy8gdGhhdCBz
dG9yYWdlIGZvciBzbWFsbCBzZXF1ZW5jZXMgb2YgdGhlIHZlY3RvciBhcmUgcHJvdmlkZWQgaW5s
aW5lIHdpdGhvdXQKIC8vIHJlcXVpcmluZyBhbnkgaGVhcCBhbGxvY2F0aW9uLgotCi0vLyBBbiBg
YWJzbDo6SW5saW5lZFZlY3RvcjxULE4+YCBzcGVjaWZpZXMgdGhlIHNpemUgTiBhdCB3aGljaCB0
byBpbmxpbmUgYXMgb25lCi0vLyBvZiBpdHMgdGVtcGxhdGUgcGFyYW1ldGVycy4gVmVjdG9ycyBv
ZiBsZW5ndGggPD0gTiBhcmUgcHJvdmlkZWQgaW5saW5lLgotLy8gVHlwaWNhbGx5IE4gaXMgdmVy
eSBzbWFsbCAoZS5nLiwgNCkgc28gdGhhdCBzZXF1ZW5jZXMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8g
YmUKLS8vIHNob3J0IGRvIG5vdCByZXF1aXJlIGFsbG9jYXRpb25zLgotCi0vLyBBbiBgYWJzbDo6
SW5saW5lZFZlY3RvcmAgZG9lcyBub3QgdXN1YWxseSByZXF1aXJlIGEgc3BlY2lmaWMgYWxsb2Nh
dG9yOyBpZgorLy8KKy8vIEFuIGBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4+YCBzcGVjaWZpZXMg
dGhlIGRlZmF1bHQgY2FwYWNpdHkgYE5gIGFzIG9uZSBvZgorLy8gaXRzIHRlbXBsYXRlIHBhcmFt
ZXRlcnMuIEluc3RhbmNlcyB3aGVyZSBgc2l6ZSgpIDw9IE5gIGhvbGQgY29udGFpbmVkCisvLyBl
bGVtZW50cyBpbiBpbmxpbmUgc3BhY2UuIFR5cGljYWxseSBgTmAgaXMgdmVyeSBzbWFsbCBzbyB0
aGF0IHNlcXVlbmNlcyB0aGF0CisvLyBhcmUgZXhwZWN0ZWQgdG8gYmUgc2hvcnQgZG8gbm90IHJl
cXVpcmUgYWxsb2NhdGlvbnMuCisvLworLy8gQW4gYGFic2w6OklubGluZWRWZWN0b3JgIGRvZXMg
bm90IHVzdWFsbHkgcmVxdWlyZSBhIHNwZWNpZmljIGFsbG9jYXRvci4gSWYKIC8vIHRoZSBpbmxp
bmVkIHZlY3RvciBncm93cyBiZXlvbmQgaXRzIGluaXRpYWwgY29uc3RyYWludHMsIGl0IHdpbGwg
bmVlZCB0bwotLy8gYWxsb2NhdGUgKGFzIGFueSBub3JtYWwgYHN0ZDo6dmVjdG9yYCB3b3VsZCkg
YW5kIGl0IHdpbGwgZ2VuZXJhbGx5IHVzZSB0aGUKLS8vIGRlZmF1bHQgYWxsb2NhdG9yIGluIHRo
YXQgY2FzZTsgb3B0aW9uYWxseSwgYSBjdXN0b20gYWxsb2NhdG9yIG1heSBiZQotLy8gc3BlY2lm
aWVkIHVzaW5nIGFuIGBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsTixBPmAgY29uc3RydWN0aW9uLgor
Ly8gYWxsb2NhdGUgKGFzIGFueSBub3JtYWwgYHN0ZDo6dmVjdG9yYCB3b3VsZCkuIFRoaXMgaXMg
dXN1YWxseSBwZXJmb3JtZWQgd2l0aAorLy8gdGhlIGRlZmF1bHQgYWxsb2NhdG9yIChkZWZpbmVk
IGFzIGBzdGQ6OmFsbG9jYXRvcjxUPmApLiBPcHRpb25hbGx5LCBhIGN1c3RvbQorLy8gYWxsb2Nh
dG9yIHR5cGUgbWF5IGJlIHNwZWNpZmllZCBhcyBgQWAgaW4gYGFic2w6OklubGluZWRWZWN0b3I8
VCwgTiwgQT5gLgogCiAjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOTElORURfVkVDVE9SX0hfCiAj
ZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOTElORURfVkVDVE9SX0hfCkBAIC01MCwxMCArNTAsMTAg
QEAKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaCIKICNpbmNs
dWRlICJhYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL3BvcnQu
aCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9pbmxpbmVkX3ZlY3Rvci5oIgog
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogCiBuYW1lc3BhY2UgYWJzbCB7Ci0KIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBJbmxpbmVkVmVjdG9yCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtNjEsMTMyOSArNjEsNzgzIEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIEFuIGBh
YnNsOjpJbmxpbmVkVmVjdG9yYCBpcyBkZXNpZ25lZCB0byBiZSBhIGRyb3AtaW4gcmVwbGFjZW1l
bnQgZm9yCiAvLyBgc3RkOjp2ZWN0b3JgIGZvciB1c2UgY2FzZXMgd2hlcmUgdGhlIHZlY3Rvcidz
IHNpemUgaXMgc3VmZmljaWVudGx5IHNtYWxsCiAvLyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVkLiBJ
ZiB0aGUgaW5saW5lZCB2ZWN0b3IgZG9lcyBncm93IGJleW9uZCBpdHMgZXN0aW1hdGVkCi0vLyBz
aXplLCBpdCB3aWxsIHRyaWdnZXIgYW4gaW5pdGlhbCBhbGxvY2F0aW9uIG9uIHRoZSBoZWFwLCBh
bmQgd2lsbCBiZWhhdmUgYXMgYQotLy8gYHN0ZDp2ZWN0b3JgLiBUaGUgQVBJIG9mIHRoZSBgYWJz
bDo6SW5saW5lZFZlY3RvcmAgd2l0aGluIHRoaXMgZmlsZSBpcworLy8gY2FwYWNpdHksIGl0IHdp
bGwgdHJpZ2dlciBhbiBpbml0aWFsIGFsbG9jYXRpb24gb24gdGhlIGhlYXAsIGFuZCB3aWxsIGJl
aGF2ZQorLy8gYXMgYSBgc3RkOnZlY3RvcmAuIFRoZSBBUEkgb2YgdGhlIGBhYnNsOjpJbmxpbmVk
VmVjdG9yYCB3aXRoaW4gdGhpcyBmaWxlIGlzCiAvLyBkZXNpZ25lZCB0byBjb3ZlciB0aGUgc2Ft
ZSBBUEkgZm9vdHByaW50IGFzIGNvdmVyZWQgYnkgYHN0ZDo6dmVjdG9yYC4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQSA9IHN0ZDo6YWxsb2NhdG9yPFQ+ID4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQSA9IHN0ZDo6YWxsb2NhdG9y
PFQ+PgogY2xhc3MgSW5saW5lZFZlY3RvciB7Ci0gIHVzaW5nIEFsbG9jYXRvclRyYWl0cyA9IHN0
ZDo6YWxsb2NhdG9yX3RyYWl0czxBPjsKKyAgc3RhdGljX2Fzc2VydChOID4gMCwgImBhYnNsOjpJ
bmxpbmVkVmVjdG9yYCByZXF1aXJlcyBhbiBpbmxpbmVkIGNhcGFjaXR5LiIpOworCisgIHVzaW5n
IFN0b3JhZ2UgPSBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6U3RvcmFnZTxULCBOLCBBPjsKKyAg
dXNpbmcgcnZhbHVlX3JlZmVyZW5jZSA9IHR5cGVuYW1lIFN0b3JhZ2U6OnJ2YWx1ZV9yZWZlcmVu
Y2U7CisgIHVzaW5nIE1vdmVJdGVyYXRvciA9IHR5cGVuYW1lIFN0b3JhZ2U6Ok1vdmVJdGVyYXRv
cjsKKyAgdXNpbmcgQWxsb2NhdG9yVHJhaXRzID0gdHlwZW5hbWUgU3RvcmFnZTo6QWxsb2NhdG9y
VHJhaXRzOworICB1c2luZyBJc01lbWNweU9rID0gdHlwZW5hbWUgU3RvcmFnZTo6SXNNZW1jcHlP
azsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+CisgIHVzaW5nIEl0ZXJhdG9yVmFs
dWVBZGFwdGVyID0KKyAgICAgIHR5cGVuYW1lIFN0b3JhZ2U6OnRlbXBsYXRlIEl0ZXJhdG9yVmFs
dWVBZGFwdGVyPEl0ZXJhdG9yPjsKKyAgdXNpbmcgQ29weVZhbHVlQWRhcHRlciA9IHR5cGVuYW1l
IFN0b3JhZ2U6OkNvcHlWYWx1ZUFkYXB0ZXI7CisgIHVzaW5nIERlZmF1bHRWYWx1ZUFkYXB0ZXIg
PSB0eXBlbmFtZSBTdG9yYWdlOjpEZWZhdWx0VmFsdWVBZGFwdGVyOworCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBJdGVyYXRvcj4KKyAgdXNpbmcgRW5hYmxlSWZBdExlYXN0Rm9yd2FyZEl0ZXJhdG9y
ID0gYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6SXNB
dExlYXN0Rm9yd2FyZEl0ZXJhdG9yPEl0ZXJhdG9yPjo6dmFsdWU+OworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSXRlcmF0b3I+CisgIHVzaW5nIERpc2FibGVJZkF0TGVhc3RGb3J3YXJkSXRlcmF0b3Ig
PSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICFpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6SXNB
dExlYXN0Rm9yd2FyZEl0ZXJhdG9yPEl0ZXJhdG9yPjo6dmFsdWU+OwogCiAgcHVibGljOgotICB1
c2luZyBhbGxvY2F0b3JfdHlwZSA9IEE7Ci0gIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBh
bGxvY2F0b3JfdHlwZTo6dmFsdWVfdHlwZTsKLSAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIGFs
bG9jYXRvcl90eXBlOjpwb2ludGVyOwotICB1c2luZyBjb25zdF9wb2ludGVyID0gdHlwZW5hbWUg
YWxsb2NhdG9yX3R5cGU6OmNvbnN0X3BvaW50ZXI7Ci0gIHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVu
YW1lIGFsbG9jYXRvcl90eXBlOjpyZWZlcmVuY2U7Ci0gIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9
IHR5cGVuYW1lIGFsbG9jYXRvcl90eXBlOjpjb25zdF9yZWZlcmVuY2U7Ci0gIHVzaW5nIHNpemVf
dHlwZSA9IHR5cGVuYW1lIGFsbG9jYXRvcl90eXBlOjpzaXplX3R5cGU7Ci0gIHVzaW5nIGRpZmZl
cmVuY2VfdHlwZSA9IHR5cGVuYW1lIGFsbG9jYXRvcl90eXBlOjpkaWZmZXJlbmNlX3R5cGU7Ci0g
IHVzaW5nIGl0ZXJhdG9yID0gcG9pbnRlcjsKLSAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBjb25z
dF9wb2ludGVyOwotICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJh
dG9yPGl0ZXJhdG9yPjsKLSAgdXNpbmcgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2
ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj47Ci0KLSAgSW5saW5lZFZlY3RvcigpIG5vZXhj
ZXB0KG5vZXhjZXB0KGFsbG9jYXRvcl90eXBlKCkpKQotICAgICAgOiBhbGxvY2F0b3JfYW5kX3Rh
Z18oYWxsb2NhdG9yX3R5cGUoKSkge30KLQorICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVu
YW1lIFN0b3JhZ2U6OmFsbG9jYXRvcl90eXBlOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5h
bWUgU3RvcmFnZTo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIFN0b3Jh
Z2U6OnBvaW50ZXI7CisgIHVzaW5nIGNvbnN0X3BvaW50ZXIgPSB0eXBlbmFtZSBTdG9yYWdlOjpj
b25zdF9wb2ludGVyOworICB1c2luZyByZWZlcmVuY2UgPSB0eXBlbmFtZSBTdG9yYWdlOjpyZWZl
cmVuY2U7CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IHR5cGVuYW1lIFN0b3JhZ2U6OmNvbnN0
X3JlZmVyZW5jZTsKKyAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgU3RvcmFnZTo6c2l6ZV90
eXBlOworICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBTdG9yYWdlOjpkaWZmZXJl
bmNlX3R5cGU7CisgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5hbWUgU3RvcmFnZTo6aXRlcmF0b3I7
CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gdHlwZW5hbWUgU3RvcmFnZTo6Y29uc3RfaXRlcmF0
b3I7CisgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSB0eXBlbmFtZSBTdG9yYWdlOjpyZXZlcnNl
X2l0ZXJhdG9yOworICB1c2luZyBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yID0gdHlwZW5hbWUgU3Rv
cmFnZTo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKKworICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAgLy8gSW5saW5lZFZlY3RvciBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3IKKyAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyAgLy8gQ3JlYXRlcyBhbiBlbXB0eSBpbmxpbmVkIHZlY3RvciB3
aXRoIGEgdmFsdWUtaW5pdGlhbGl6ZWQgYWxsb2NhdG9yLgorICBJbmxpbmVkVmVjdG9yKCkgbm9l
eGNlcHQobm9leGNlcHQoYWxsb2NhdG9yX3R5cGUoKSkpIDogc3RvcmFnZV8oKSB7fQorCisgIC8v
IENyZWF0ZXMgYW4gZW1wdHkgaW5saW5lZCB2ZWN0b3Igd2l0aCBhIGNvcHkgb2YgYGFsbG9jYC4K
ICAgZXhwbGljaXQgSW5saW5lZFZlY3Rvcihjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpIG5v
ZXhjZXB0Ci0gICAgICA6IGFsbG9jYXRvcl9hbmRfdGFnXyhhbGxvYykge30KKyAgICAgIDogc3Rv
cmFnZV8oYWxsb2MpIHt9CiAKLSAgLy8gQ3JlYXRlIGEgdmVjdG9yIHdpdGggbiBjb3BpZXMgb2Yg
dmFsdWVfdHlwZSgpLgorICAvLyBDcmVhdGVzIGFuIGlubGluZWQgdmVjdG9yIHdpdGggYG5gIGNv
cGllcyBvZiBgdmFsdWVfdHlwZSgpYC4KICAgZXhwbGljaXQgSW5saW5lZFZlY3RvcihzaXplX3R5
cGUgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxs
b2MgPSBhbGxvY2F0b3JfdHlwZSgpKQotICAgICAgOiBhbGxvY2F0b3JfYW5kX3RhZ18oYWxsb2Mp
IHsKLSAgICBJbml0QXNzaWduKG4pOworICAgICAgOiBzdG9yYWdlXyhhbGxvYykgeworICAgIHN0
b3JhZ2VfLkluaXRpYWxpemUoRGVmYXVsdFZhbHVlQWRhcHRlcigpLCBuKTsKICAgfQogCi0gIC8v
IENyZWF0ZSBhIHZlY3RvciB3aXRoIG4gY29waWVzIG9mIGVsZW0KLSAgSW5saW5lZFZlY3Rvcihz
aXplX3R5cGUgbiwgY29uc3QgdmFsdWVfdHlwZSYgZWxlbSwKKyAgLy8gQ3JlYXRlcyBhbiBpbmxp
bmVkIHZlY3RvciB3aXRoIGBuYCBjb3BpZXMgb2YgYHZgLgorICBJbmxpbmVkVmVjdG9yKHNpemVf
dHlwZSBuLCBjb25zdF9yZWZlcmVuY2UgdiwKICAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0
b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQotICAgICAgOiBhbGxvY2F0b3JfYW5k
X3RhZ18oYWxsb2MpIHsKLSAgICBJbml0QXNzaWduKG4sIGVsZW0pOworICAgICAgOiBzdG9yYWdl
XyhhbGxvYykgeworICAgIHN0b3JhZ2VfLkluaXRpYWxpemUoQ29weVZhbHVlQWRhcHRlcih2KSwg
bik7CiAgIH0KIAotICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgd2l0aCB0aGUgZWxlbWVudHMg
W2ZpcnN0IC4uIGxhc3QpLgotICAvLyBUaGUgdW51c2VkIGVuYWJsZV9pZiBhcmd1bWVudCByZXN0
cmljdHMgdGhpcyBjb25zdHJ1Y3RvciBzbyB0aGF0IGl0IGlzCi0gIC8vIGVsaWRlZCB3aGVuIHZh
bHVlX3R5cGUgaXMgYW4gaW50ZWdyYWwgdHlwZS4gIFRoaXMgcHJldmVudHMgYW1iaWd1b3VzCi0g
IC8vIGludGVycHJldGF0aW9uIGJldHdlZW4gYSBjYWxsIHRvIHRoaXMgY29uc3RydWN0b3Igd2l0
aCB0d28gaW50ZWdyYWwKLSAgLy8gYXJndW1lbnRzIGFuZCBhIGNhbGwgdG8gdGhlIHByZWNlZGlu
ZyAobiwgZWxlbSkgY29uc3RydWN0b3IuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJh
dG9yPgotICBJbmxpbmVkVmVjdG9yKAotICAgICAgSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJ
dGVyYXRvciBsYXN0LAotICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jID0gYWxsb2Nh
dG9yX3R5cGUoKSwKLSAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2ludGVn
cmFsPElucHV0SXRlcmF0b3I+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICBudWxscHRyKQot
ICAgICAgOiBhbGxvY2F0b3JfYW5kX3RhZ18oYWxsb2MpIHsKLSAgICBBcHBlbmRSYW5nZShmaXJz
dCwgbGFzdCk7CisgIC8vIENyZWF0ZXMgYW4gaW5saW5lZCB2ZWN0b3Igd2l0aCBjb3BpZXMgb2Yg
dGhlIGVsZW1lbnRzIG9mIGBsaXN0YC4KKyAgSW5saW5lZFZlY3RvcihzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCwKKyAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3Jf
dHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQorICAgICAgOiBJbmxpbmVkVmVjdG9yKGxp
c3QuYmVnaW4oKSwgbGlzdC5lbmQoKSwgYWxsb2MpIHt9CisKKyAgLy8gQ3JlYXRlcyBhbiBpbmxp
bmVkIHZlY3RvciB3aXRoIGVsZW1lbnRzIGNvbnN0cnVjdGVkIGZyb20gdGhlIHByb3ZpZGVkCisg
IC8vIGZvcndhcmQgaXRlcmF0b3IgcmFuZ2UgW2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisgIC8v
IE5PVEU6IHRoZSBgZW5hYmxlX2lmYCBwcmV2ZW50cyBhbWJpZ3VvdXMgaW50ZXJwcmV0YXRpb24g
YmV0d2VlbiBhIGNhbGwgdG8KKyAgLy8gdGhpcyBjb25zdHJ1Y3RvciB3aXRoIHR3byBpbnRlZ3Jh
bCBhcmd1bWVudHMgYW5kIGEgY2FsbCB0byB0aGUgYWJvdmUKKyAgLy8gYElubGluZWRWZWN0b3Io
c2l6ZV90eXBlLCBjb25zdF9yZWZlcmVuY2UpYCBjb25zdHJ1Y3Rvci4KKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZvcndhcmRJdGVyYXRvciwKKyAgICAgICAgICAgIEVuYWJsZUlmQXRMZWFzdEZvcndh
cmRJdGVyYXRvcjxGb3J3YXJkSXRlcmF0b3I+KiA9IG51bGxwdHI+CisgIElubGluZWRWZWN0b3Io
Rm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwKKyAgICAgICAgICAg
ICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQorICAg
ICAgOiBzdG9yYWdlXyhhbGxvYykgeworICAgIHN0b3JhZ2VfLkluaXRpYWxpemUoSXRlcmF0b3JW
YWx1ZUFkYXB0ZXI8Rm9yd2FyZEl0ZXJhdG9yPihmaXJzdCksCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KSk7CiAgIH0KIAotICBJbmxpbmVkVmVjdG9y
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBpbml0LAorICAvLyBDcmVhdGVzIGFu
IGlubGluZWQgdmVjdG9yIHdpdGggZWxlbWVudHMgY29uc3RydWN0ZWQgZnJvbSB0aGUgcHJvdmlk
ZWQgaW5wdXQKKyAgLy8gaXRlcmF0b3IgcmFuZ2UgW2BmaXJzdGAsIGBsYXN0YCkuCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLAorICAgICAgICAgICAgRGlzYWJsZUlmQXRMZWFz
dEZvcndhcmRJdGVyYXRvcjxJbnB1dEl0ZXJhdG9yPiogPSBudWxscHRyPgorICBJbmxpbmVkVmVj
dG9yKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwKICAgICAgICAgICAg
ICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQotICAg
ICAgOiBhbGxvY2F0b3JfYW5kX3RhZ18oYWxsb2MpIHsKLSAgICBBcHBlbmRSYW5nZShpbml0LmJl
Z2luKCksIGluaXQuZW5kKCkpOworICAgICAgOiBzdG9yYWdlXyhhbGxvYykgeworICAgIHN0ZDo6
Y29weShmaXJzdCwgbGFzdCwgc3RkOjpiYWNrX2luc2VydGVyKCp0aGlzKSk7CiAgIH0KIAotICBJ
bmxpbmVkVmVjdG9yKGNvbnN0IElubGluZWRWZWN0b3ImIHYpOwotICBJbmxpbmVkVmVjdG9yKGNv
bnN0IElubGluZWRWZWN0b3ImIHYsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYyk7CisgIC8v
IENyZWF0ZXMgYW4gaW5saW5lZCB2ZWN0b3IgYnkgY29weWluZyB0aGUgY29udGVudHMgb2YgYG90
aGVyYCB1c2luZworICAvLyBgb3RoZXJgJ3MgYWxsb2NhdG9yLgorICBJbmxpbmVkVmVjdG9yKGNv
bnN0IElubGluZWRWZWN0b3ImIG90aGVyKQorICAgICAgOiBJbmxpbmVkVmVjdG9yKG90aGVyLCAq
b3RoZXIuc3RvcmFnZV8uR2V0QWxsb2NQdHIoKSkge30KIAotICAvLyBUaGlzIG1vdmUgY29uc3Ry
dWN0b3IgZG9lcyBub3QgYWxsb2NhdGUgYW5kIG9ubHkgbW92ZXMgdGhlIHVuZGVybHlpbmcKLSAg
Ly8gb2JqZWN0cywgc28gaXRzIGBub2V4Y2VwdGAgc3BlY2lmaWNhdGlvbiBkZXBlbmRzIG9uIHdo
ZXRoZXIgbW92aW5nIHRoZQotICAvLyB1bmRlcmx5aW5nIG9iamVjdHMgY2FuIHRocm93IG9yIG5v
dC4gV2UgYXNzdW1lCi0gIC8vICBhKSBtb3ZlIGNvbnN0cnVjdG9ycyBzaG91bGQgb25seSB0aHJv
dyBkdWUgdG8gYWxsb2NhdGlvbiBmYWlsdXJlIGFuZAotICAvLyAgYikgaWYgYHZhbHVlX3R5cGVg
J3MgbW92ZSBjb25zdHJ1Y3RvciBhbGxvY2F0ZXMsIGl0IHVzZXMgdGhlIHNhbWUKLSAgLy8gICAg
IGFsbG9jYXRpb24gZnVuY3Rpb24gYXMgdGhlIGBJbmxpbmVkVmVjdG9yYCdzIGFsbG9jYXRvciwg
c28gdGhlIG1vdmUKLSAgLy8gICAgIGNvbnN0cnVjdG9yIGlzIG5vbi10aHJvd2luZyBpZiB0aGUg
YWxsb2NhdG9yIGlzIG5vbi10aHJvd2luZyBvcgotICAvLyAgICAgYHZhbHVlX3R5cGVgJ3MgbW92
ZSBjb25zdHJ1Y3RvciBpcyBzcGVjaWZpZWQgYXMgYG5vZXhjZXB0YC4KLSAgSW5saW5lZFZlY3Rv
cihJbmxpbmVkVmVjdG9yJiYgdikgbm9leGNlcHQoCi0gICAgICBhYnNsOjphbGxvY2F0b3JfaXNf
bm90aHJvdzxhbGxvY2F0b3JfdHlwZT46OnZhbHVlIHx8Ci0gICAgICBzdGQ6OmlzX25vdGhyb3df
bW92ZV9jb25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSk7Ci0KLSAgLy8gVGhpcyBtb3Zl
IGNvbnN0cnVjdG9yIGFsbG9jYXRlcyBhbmQgYWxzbyBtb3ZlcyB0aGUgdW5kZXJseWluZyBvYmpl
Y3RzLCBzbwotICAvLyBpdHMgYG5vZXhjZXB0YCBzcGVjaWZpY2F0aW9uIGRlcGVuZHMgb24gd2hl
dGhlciB0aGUgYWxsb2NhdGlvbiBjYW4gdGhyb3cKLSAgLy8gYW5kIHdoZXRoZXIgbW92aW5nIHRo
ZSB1bmRlcmx5aW5nIG9iamVjdHMgY2FuIHRocm93LiBCYXNlZCBvbiB0aGUgc2FtZQotICAvLyBh
c3N1bXB0aW9ucyBhYm92ZSwgdGhlIGBub2V4Y2VwdGAgc3BlY2lmaWNhdGlvbiBpcyBkb21pbmF0
ZWQgYnkgd2hldGhlciB0aGUKLSAgLy8gYWxsb2NhdGlvbiBjYW4gdGhyb3cgcmVnYXJkbGVzcyBv
ZiB3aGV0aGVyIGB2YWx1ZV90eXBlYCdzIG1vdmUgY29uc3RydWN0b3IKLSAgLy8gaXMgc3BlY2lm
aWVkIGFzIGBub2V4Y2VwdGAuCi0gIElubGluZWRWZWN0b3IoSW5saW5lZFZlY3RvciYmIHYsIGNv
bnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykgbm9leGNlcHQoCi0gICAgICBhYnNsOjphbGxvY2F0
b3JfaXNfbm90aHJvdzxhbGxvY2F0b3JfdHlwZT46OnZhbHVlKTsKLQotICB+SW5saW5lZFZlY3Rv
cigpIHsgY2xlYXIoKTsgfQotCi0gIElubGluZWRWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBJbmxp
bmVkVmVjdG9yJiB2KSB7Ci0gICAgaWYgKHRoaXMgPT0gJnYpIHsKLSAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0gICAgLy8gT3B0aW1pemVkIHRvIGF2b2lkIHJlYWxsb2NhdGlvbi4KLSAgICAv
LyBQcmVmZXIgcmVhc3NpZ25tZW50IHRvIGNvcHkgY29uc3RydWN0aW9uIGZvciBlbGVtZW50cy4K
LSAgICBpZiAoc2l6ZSgpIDwgdi5zaXplKCkpIHsgIC8vIGdyb3cKLSAgICAgIHJlc2VydmUodi5z
aXplKCkpOwotICAgICAgc3RkOjpjb3B5KHYuYmVnaW4oKSwgdi5iZWdpbigpICsgc2l6ZSgpLCBi
ZWdpbigpKTsKLSAgICAgIHN0ZDo6Y29weSh2LmJlZ2luKCkgKyBzaXplKCksIHYuZW5kKCksIHN0
ZDo6YmFja19pbnNlcnRlcigqdGhpcykpOwotICAgIH0gZWxzZSB7ICAvLyBtYXliZSBzaHJpbmsK
LSAgICAgIGVyYXNlKGJlZ2luKCkgKyB2LnNpemUoKSwgZW5kKCkpOwotICAgICAgc3RkOjpjb3B5
KHYuYmVnaW4oKSwgdi5lbmQoKSwgYmVnaW4oKSk7CisgIC8vIENyZWF0ZXMgYW4gaW5saW5lZCB2
ZWN0b3IgYnkgY29weWluZyB0aGUgY29udGVudHMgb2YgYG90aGVyYCB1c2luZyBgYWxsb2NgLgor
ICBJbmxpbmVkVmVjdG9yKGNvbnN0IElubGluZWRWZWN0b3ImIG90aGVyLCBjb25zdCBhbGxvY2F0
b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHN0b3JhZ2VfKGFsbG9jKSB7CisgICAgaWYgKElzTWVt
Y3B5T2s6OnZhbHVlICYmICFvdGhlci5zdG9yYWdlXy5HZXRJc0FsbG9jYXRlZCgpKSB7CisgICAg
ICBzdG9yYWdlXy5NZW1jcHlGcm9tKG90aGVyLnN0b3JhZ2VfKTsKKyAgICB9IGVsc2UgeworICAg
ICAgc3RvcmFnZV8uSW5pdGlhbGl6ZShJdGVyYXRvclZhbHVlQWRhcHRlcjxjb25zdF9wb2ludGVy
PihvdGhlci5kYXRhKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5zaXplKCkp
OwogICAgIH0KLSAgICByZXR1cm4gKnRoaXM7CiAgIH0KIAotICBJbmxpbmVkVmVjdG9yJiBvcGVy
YXRvcj0oSW5saW5lZFZlY3RvciYmIHYpIHsKLSAgICBpZiAodGhpcyA9PSAmdikgewotICAgICAg
cmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBpZiAodi5hbGxvY2F0ZWQoKSkgewotICAgICAgY2xl
YXIoKTsKLSAgICAgIHRhZygpLnNldF9hbGxvY2F0ZWRfc2l6ZSh2LnNpemUoKSk7Ci0gICAgICBp
bml0X2FsbG9jYXRpb24odi5hbGxvY2F0aW9uKCkpOwotICAgICAgdi50YWcoKSA9IFRhZygpOwor
ICAvLyBDcmVhdGVzIGFuIGlubGluZWQgdmVjdG9yIGJ5IG1vdmluZyBpbiB0aGUgY29udGVudHMg
b2YgYG90aGVyYCB3aXRob3V0CisgIC8vIGFsbG9jYXRpbmcuIElmIGBvdGhlcmAgY29udGFpbnMg
YWxsb2NhdGVkIG1lbW9yeSwgdGhlIG5ld2x5LWNyZWF0ZWQgaW5saW5lZAorICAvLyB2ZWN0b3Ig
d2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGF0IG1lbW9yeS4gSG93ZXZlciwgaWYgYG90aGVyYCBk
b2VzIG5vdAorICAvLyBjb250YWluIGFsbG9jYXRlZCBtZW1vcnksIHRoZSBuZXdseS1jcmVhdGVk
IGlubGluZWQgdmVjdG9yIHdpbGwgcGVyZm9ybQorICAvLyBlbGVtZW50LXdpc2UgbW92ZSBjb25z
dHJ1Y3Rpb24gb2YgdGhlIGNvbnRlbnRzIG9mIGBvdGhlcmAuCisgIC8vCisgIC8vIE5PVEU6IHNp
bmNlIG5vIGFsbG9jYXRpb24gaXMgcGVyZm9ybWVkIGZvciB0aGUgaW5saW5lZCB2ZWN0b3IgaW4g
ZWl0aGVyCisgIC8vIGNhc2UsIHRoZSBgbm9leGNlcHQoLi4uKWAgc3BlY2lmaWNhdGlvbiBkZXBl
bmRzIG9uIHdoZXRoZXIgbW92aW5nIHRoZQorICAvLyB1bmRlcmx5aW5nIG9iamVjdHMgY2FuIHRo
cm93LiBJdCBpcyBhc3N1bWVkIGFzc3VtZWQgdGhhdC4uLgorICAvLyAgYSkgbW92ZSBjb25zdHJ1
Y3RvcnMgc2hvdWxkIG9ubHkgdGhyb3cgZHVlIHRvIGFsbG9jYXRpb24gZmFpbHVyZS4KKyAgLy8g
IGIpIGlmIGB2YWx1ZV90eXBlYCdzIG1vdmUgY29uc3RydWN0b3IgYWxsb2NhdGVzLCBpdCB1c2Vz
IHRoZSBzYW1lCisgIC8vICAgICBhbGxvY2F0aW9uIGZ1bmN0aW9uIGFzIHRoZSBpbmxpbmVkIHZl
Y3RvcidzIGFsbG9jYXRvci4KKyAgLy8gVGh1cywgdGhlIG1vdmUgY29uc3RydWN0b3IgaXMgbm9u
LXRocm93aW5nIGlmIHRoZSBhbGxvY2F0b3IgaXMgbm9uLXRocm93aW5nCisgIC8vIG9yIGB2YWx1
ZV90eXBlYCdzIG1vdmUgY29uc3RydWN0b3IgaXMgc3BlY2lmaWVkIGFzIGBub2V4Y2VwdGAuCisg
IElubGluZWRWZWN0b3IoSW5saW5lZFZlY3RvciYmIG90aGVyKSBub2V4Y2VwdCgKKyAgICAgIGFi
c2w6OmFsbG9jYXRvcl9pc19ub3Rocm93PGFsbG9jYXRvcl90eXBlPjo6dmFsdWUgfHwKKyAgICAg
IHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8dmFsdWVfdHlwZT46OnZhbHVlKQor
ICAgICAgOiBzdG9yYWdlXygqb3RoZXIuc3RvcmFnZV8uR2V0QWxsb2NQdHIoKSkgeworICAgIGlm
IChJc01lbWNweU9rOjp2YWx1ZSkgeworICAgICAgc3RvcmFnZV8uTWVtY3B5RnJvbShvdGhlci5z
dG9yYWdlXyk7CisKKyAgICAgIG90aGVyLnN0b3JhZ2VfLlNldElubGluZWRTaXplKDApOworICAg
IH0gZWxzZSBpZiAob3RoZXIuc3RvcmFnZV8uR2V0SXNBbGxvY2F0ZWQoKSkgeworICAgICAgc3Rv
cmFnZV8uU2V0QWxsb2NhdGVkRGF0YShvdGhlci5zdG9yYWdlXy5HZXRBbGxvY2F0ZWREYXRhKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLnN0b3JhZ2VfLkdldEFsbG9j
YXRlZENhcGFjaXR5KCkpOworICAgICAgc3RvcmFnZV8uU2V0QWxsb2NhdGVkU2l6ZShvdGhlci5z
dG9yYWdlXy5HZXRTaXplKCkpOworCisgICAgICBvdGhlci5zdG9yYWdlXy5TZXRJbmxpbmVkU2l6
ZSgwKTsKICAgICB9IGVsc2UgewotICAgICAgaWYgKGFsbG9jYXRlZCgpKSBjbGVhcigpOwotICAg
ICAgLy8gQm90aCBhcmUgaW5saW5lZCBub3cuCi0gICAgICBpZiAoc2l6ZSgpIDwgdi5zaXplKCkp
IHsKLSAgICAgICAgYXV0byBtaWQgPSBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih2LmJlZ2luKCkg
KyBzaXplKCkpOwotICAgICAgICBzdGQ6OmNvcHkoc3RkOjptYWtlX21vdmVfaXRlcmF0b3Iodi5i
ZWdpbigpKSwgbWlkLCBiZWdpbigpKTsKLSAgICAgICAgVW5pbml0aWFsaXplZENvcHkobWlkLCBz
dGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih2LmVuZCgpKSwgZW5kKCkpOwotICAgICAgfSBlbHNlIHsK
LSAgICAgICAgYXV0byBuZXdfZW5kID0gc3RkOjpjb3B5KHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9y
KHYuYmVnaW4oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2Vf
bW92ZV9pdGVyYXRvcih2LmVuZCgpKSwgYmVnaW4oKSk7Ci0gICAgICAgIERlc3Ryb3kobmV3X2Vu
ZCwgZW5kKCkpOwotICAgICAgfQotICAgICAgdGFnKCkuc2V0X2lubGluZV9zaXplKHYuc2l6ZSgp
KTsKLSAgICB9Ci0gICAgcmV0dXJuICp0aGlzOwotICB9CisgICAgICBJdGVyYXRvclZhbHVlQWRh
cHRlcjxNb3ZlSXRlcmF0b3I+IG90aGVyX3ZhbHVlcygKKyAgICAgICAgICBNb3ZlSXRlcmF0b3Io
b3RoZXIuc3RvcmFnZV8uR2V0SW5saW5lZERhdGEoKSkpOwogCi0gIElubGluZWRWZWN0b3ImIG9w
ZXJhdG9yPShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gaW5pdCkgewotICAgIEFz
c2lnblJhbmdlKGluaXQuYmVnaW4oKSwgaW5pdC5lbmQoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwor
ICAgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkNvbnN0cnVjdEVsZW1lbnRzKAorICAgICAg
ICAgIHN0b3JhZ2VfLkdldEFsbG9jUHRyKCksIHN0b3JhZ2VfLkdldElubGluZWREYXRhKCksICZv
dGhlcl92YWx1ZXMsCisgICAgICAgICAgb3RoZXIuc3RvcmFnZV8uR2V0U2l6ZSgpKTsKKworICAg
ICAgc3RvcmFnZV8uU2V0SW5saW5lZFNpemUob3RoZXIuc3RvcmFnZV8uR2V0U2l6ZSgpKTsKKyAg
ICB9CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjphc3NpZ24oKQorICAvLyBDcmVhdGVzIGFu
IGlubGluZWQgdmVjdG9yIGJ5IG1vdmluZyBpbiB0aGUgY29udGVudHMgb2YgYG90aGVyYCB3aXRo
IGEgY29weQorICAvLyBvZiBgYWxsb2NgLgogICAvLwotICAvLyBSZXBsYWNlcyB0aGUgY29udGVu
dHMgb2YgdGhlIGlubGluZWQgdmVjdG9yIHdpdGggY29waWVzIG9mIHRob3NlIGluIHRoZQotICAv
LyBpdGVyYXRvciByYW5nZSBbZmlyc3QsIGxhc3QpLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5w
dXRJdGVyYXRvcj4KLSAgdm9pZCBhc3NpZ24oCi0gICAgICBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJ
bnB1dEl0ZXJhdG9yIGxhc3QsCi0gICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjpp
c19pbnRlZ3JhbDxJbnB1dEl0ZXJhdG9yPjo6dmFsdWU+Ojp0eXBlKiA9Ci0gICAgICAgICAgbnVs
bHB0cikgewotICAgIEFzc2lnblJhbmdlKGZpcnN0LCBsYXN0KTsKLSAgfQorICAvLyBOT1RFOiBp
ZiBgb3RoZXJgJ3MgYWxsb2NhdG9yIGlzIG5vdCBlcXVhbCB0byBgYWxsb2NgLCBldmVuIGlmIGBv
dGhlcmAKKyAgLy8gY29udGFpbnMgYWxsb2NhdGVkIG1lbW9yeSwgdGhpcyBtb3ZlIGNvbnN0cnVj
dG9yIHdpbGwgc3RpbGwgYWxsb2NhdGUuIFNpbmNlCisgIC8vIGFsbG9jYXRpb24gaXMgcGVyZm9y
bWVkLCB0aGlzIGNvbnN0cnVjdG9yIGNhbiBvbmx5IGJlIGBub2V4Y2VwdGAgaWYgdGhlCisgIC8v
IHNwZWNpZmllZCBhbGxvY2F0b3IgaXMgYWxzbyBgbm9leGNlcHRgLgorICBJbmxpbmVkVmVjdG9y
KElubGluZWRWZWN0b3ImJiBvdGhlciwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKSBub2V4
Y2VwdCgKKyAgICAgIGFic2w6OmFsbG9jYXRvcl9pc19ub3Rocm93PGFsbG9jYXRvcl90eXBlPjo6
dmFsdWUpCisgICAgICA6IHN0b3JhZ2VfKGFsbG9jKSB7CisgICAgaWYgKElzTWVtY3B5T2s6OnZh
bHVlKSB7CisgICAgICBzdG9yYWdlXy5NZW1jcHlGcm9tKG90aGVyLnN0b3JhZ2VfKTsKIAotICAv
LyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6YXNzaWduKClgIHRvIHRha2UgdmFsdWVzIGZy
b20gZWxlbWVudHMgb2YgYW4KLSAgLy8gaW5pdGlhbGl6ZXIgbGlzdAotICB2b2lkIGFzc2lnbihz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gaW5pdCkgewotICAgIEFzc2lnblJhbmdl
KGluaXQuYmVnaW4oKSwgaW5pdC5lbmQoKSk7Ci0gIH0KKyAgICAgIG90aGVyLnN0b3JhZ2VfLlNl
dElubGluZWRTaXplKDApOworICAgIH0gZWxzZSBpZiAoKCpzdG9yYWdlXy5HZXRBbGxvY1B0cigp
ID09ICpvdGhlci5zdG9yYWdlXy5HZXRBbGxvY1B0cigpKSAmJgorICAgICAgICAgICAgICAgb3Ro
ZXIuc3RvcmFnZV8uR2V0SXNBbGxvY2F0ZWQoKSkgeworICAgICAgc3RvcmFnZV8uU2V0QWxsb2Nh
dGVkRGF0YShvdGhlci5zdG9yYWdlXy5HZXRBbGxvY2F0ZWREYXRhKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG90aGVyLnN0b3JhZ2VfLkdldEFsbG9jYXRlZENhcGFjaXR5KCkp
OworICAgICAgc3RvcmFnZV8uU2V0QWxsb2NhdGVkU2l6ZShvdGhlci5zdG9yYWdlXy5HZXRTaXpl
KCkpOwogCi0gIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjphc3NpZ24oKWAgdG8gcmVw
bGFjZSB0aGUgZmlyc3QgYG5gIGVsZW1lbnRzIG9mCi0gIC8vIHRoZSBpbmxpbmVkIHZlY3RvciB3
aXRoIGBlbGVtYCB2YWx1ZXMuCi0gIHZvaWQgYXNzaWduKHNpemVfdHlwZSBuLCBjb25zdCB2YWx1
ZV90eXBlJiBlbGVtKSB7Ci0gICAgaWYgKG4gPD0gc2l6ZSgpKSB7ICAvLyBQb3NzaWJseSBzaHJp
bmsKLSAgICAgIHN0ZDo6ZmlsbF9uKGJlZ2luKCksIG4sIGVsZW0pOwotICAgICAgZXJhc2UoYmVn
aW4oKSArIG4sIGVuZCgpKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gR3JvdwotICAg
IHJlc2VydmUobik7Ci0gICAgc3RkOjpmaWxsX24oYmVnaW4oKSwgc2l6ZSgpLCBlbGVtKTsKLSAg
ICBpZiAoYWxsb2NhdGVkKCkpIHsKLSAgICAgIFVuaW5pdGlhbGl6ZWRGaWxsKGFsbG9jYXRlZF9z
cGFjZSgpICsgc2l6ZSgpLCBhbGxvY2F0ZWRfc3BhY2UoKSArIG4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICBlbGVtKTsKLSAgICAgIHRhZygpLnNldF9hbGxvY2F0ZWRfc2l6ZShuKTsKKyAgICAg
IG90aGVyLnN0b3JhZ2VfLlNldElubGluZWRTaXplKDApOwogICAgIH0gZWxzZSB7Ci0gICAgICBV
bmluaXRpYWxpemVkRmlsbChpbmxpbmVkX3NwYWNlKCkgKyBzaXplKCksIGlubGluZWRfc3BhY2Uo
KSArIG4sIGVsZW0pOwotICAgICAgdGFnKCkuc2V0X2lubGluZV9zaXplKG4pOworICAgICAgc3Rv
cmFnZV8uSW5pdGlhbGl6ZSgKKyAgICAgICAgICBJdGVyYXRvclZhbHVlQWRhcHRlcjxNb3ZlSXRl
cmF0b3I+KE1vdmVJdGVyYXRvcihvdGhlci5kYXRhKCkpKSwKKyAgICAgICAgICBvdGhlci5zaXpl
KCkpOwogICAgIH0KICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OnNpemUoKQotICAvLwotICAv
LyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGlubGluZWQgdmVjdG9yLgot
ICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHRhZygpLnNpemUoKTsg
fQorICB+SW5saW5lZFZlY3RvcigpIHt9CisKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC8v
IElubGluZWRWZWN0b3IgTWVtYmVyIEFjY2Vzc29ycworICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotICAvLyBJbmxpbmVkVmVjdG9yOjplbXB0eSgpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjplbXB0
eSgpYAogICAvLwotICAvLyBDaGVja3MgaWYgdGhlIGlubGluZWQgdmVjdG9yIGhhcyBubyBlbGVt
ZW50cy4KLSAgYm9vbCBlbXB0eSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIChzaXplKCkgPT0g
MCk7IH0KKyAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBpbmxpbmVkIHZlY3RvciBjb250YWlucyBu
byBlbGVtZW50cy4KKyAgYm9vbCBlbXB0eSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuICFzaXpl
KCk7IH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpjYXBhY2l0eSgpCisgIC8vIGBJbmxpbmVkVmVj
dG9yOjpzaXplKClgCiAgIC8vCi0gIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0
aGF0IGNhbiBiZSBzdG9yZWQgaW4gYW4gaW5saW5lZCB2ZWN0b3IKLSAgLy8gd2l0aG91dCByZXF1
aXJpbmcgYSByZWFsbG9jYXRpb24gb2YgdW5kZXJseWluZyBtZW1vcnkuIE5vdGUgdGhhdCBmb3IK
LSAgLy8gbW9zdCBpbmxpbmVkIHZlY3RvcnMsIGBjYXBhY2l0eSgpYCBzaG91bGQgZXF1YWwgaXRz
IGluaXRpYWwgc2l6ZSBgTmA7IGZvcgotICAvLyBpbmxpbmVkIHZlY3RvcnMgd2hpY2ggZXhjZWVk
IHRoaXMgY2FwYWNpdHksIHRoZXkgd2lsbCBubyBsb25nZXIgYmUgaW5saW5lZCwKLSAgLy8gYW5k
IGBjYXBhY2l0eSgpYCB3aWxsIGVxdWFsIGl0cyBjYXBhY2l0eSBvbiB0aGUgYWxsb2NhdGVkIGhl
YXAuCi0gIHNpemVfdHlwZSBjYXBhY2l0eSgpIGNvbnN0IG5vZXhjZXB0IHsKLSAgICByZXR1cm4g
YWxsb2NhdGVkKCkgPyBhbGxvY2F0aW9uKCkuY2FwYWNpdHkoKSA6IE47Ci0gIH0KKyAgLy8gUmV0
dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgc2l6
ZV90eXBlIHNpemUoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdG9yYWdlXy5HZXRTaXplKCk7
IH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjptYXhfc2l6ZSgpCisgIC8vIGBJbmxpbmVkVmVjdG9y
OjptYXhfc2l6ZSgpYAogICAvLwotICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBl
bGVtZW50cyB0aGUgdmVjdG9yIGNhbiBob2xkLgorICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51
bWJlciBvZiBlbGVtZW50cyB0aGUgaW5saW5lZCB2ZWN0b3IgY2FuIGhvbGQuCiAgIHNpemVfdHlw
ZSBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsKICAgICAvLyBPbmUgYml0IG9mIHRoZSBzaXpl
IHN0b3JhZ2UgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbmxpbmVkCi0gICAgLy8g
dmVjdG9yIGlzIGFsbG9jYXRlZDsgYXMgYSByZXN1bHQsIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhl
IGNvbnRhaW5lciB0aGF0Ci0gICAgLy8gd2UgY2FuIGV4cHJlc3MgaXMgaGFsZiBvZiB0aGUgbWF4
IGZvciBvdXIgc2l6ZSB0eXBlLgotICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dHlwZT46Om1heCgpIC8gMjsKKyAgICAvLyB2ZWN0b3IgY29udGFpbnMgYWxsb2NhdGVkIG1lbW9y
eS4gQXMgYSByZXN1bHQsIHRoZSBtYXhpbXVtIHNpemUgdGhhdCB0aGUKKyAgICAvLyBpbmxpbmVk
IHZlY3RvciBjYW4gZXhwcmVzcyBpcyBoYWxmIG9mIHRoZSBtYXggZm9yIGBzaXplX3R5cGVgLgor
ICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3R5cGU+OjptYXgpKCkgLyAyOwog
ICB9CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6ZGF0YSgpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpj
YXBhY2l0eSgpYAogICAvLwotICAvLyBSZXR1cm5zIGEgY29uc3QgVCogcG9pbnRlciB0byBlbGVt
ZW50cyBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuIFRoaXMgcG9pbnRlcgotICAvLyBjYW4gYmUgdXNl
ZCB0byBhY2Nlc3MgKGJ1dCBub3QgbW9kaWZ5KSB0aGUgY29udGFpbmVkIGVsZW1lbnRzLgotICAv
LyBPbmx5IHJlc3VsdHMgd2l0aGluIHRoZSByYW5nZSBgWzAsc2l6ZSgpKWAgYXJlIGRlZmluZWQu
Ci0gIGNvbnN0X3BvaW50ZXIgZGF0YSgpIGNvbnN0IG5vZXhjZXB0IHsKLSAgICByZXR1cm4gYWxs
b2NhdGVkKCkgPyBhbGxvY2F0ZWRfc3BhY2UoKSA6IGlubGluZWRfc3BhY2UoKTsKKyAgLy8gUmV0
dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgY291bGQgYmUgc3RvcmVkIGluIHRoZSBp
bmxpbmVkIHZlY3RvcgorICAvLyB3aXRob3V0IHJlcXVpcmluZyBhIHJlYWxsb2NhdGlvbi4KKyAg
Ly8KKyAgLy8gTk9URTogZm9yIG1vc3QgaW5saW5lZCB2ZWN0b3JzLCBgY2FwYWNpdHkoKWAgc2hv
dWxkIGJlIGVxdWFsIHRvIHRoZQorICAvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgYE5gLiBGb3IgaW5s
aW5lZCB2ZWN0b3JzIHdoaWNoIGV4Y2VlZCB0aGlzIGNhcGFjaXR5LAorICAvLyB0aGV5IHdpbGwg
bm8gbG9uZ2VyIGJlIGlubGluZWQgYW5kIGBjYXBhY2l0eSgpYCB3aWxsIGVxdWFsIHRoZSBjYXBh
Y3RpdHkgb2YKKyAgLy8gdGhlIGFsbG9jYXRlZCBtZW1vcnkuCisgIHNpemVfdHlwZSBjYXBhY2l0
eSgpIGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gc3RvcmFnZV8uR2V0SXNBbGxvY2F0ZWQo
KSA/IHN0b3JhZ2VfLkdldEFsbG9jYXRlZENhcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IHN0b3JhZ2VfLkdldElubGluZWRDYXBhY2l0eSgpOwogICB9CiAK
LSAgLy8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6ZGF0YSgpIHRvIHJldHVybiBhIFQqIHBv
aW50ZXIgdG8gZWxlbWVudHMgb2YgdGhlCi0gIC8vIGlubGluZWQgdmVjdG9yLiBUaGlzIHBvaW50
ZXIgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIGFuZCBtb2RpZnkgdGhlIGNvbnRhaW5lZAotICAvLyBl
bGVtZW50cy4KKyAgLy8gYElubGluZWRWZWN0b3I6OmRhdGEoKWAKKyAgLy8KKyAgLy8gUmV0dXJu
cyBhIGBwb2ludGVyYCB0byB0aGUgZWxlbWVudHMgb2YgdGhlIGlubGluZWQgdmVjdG9yLiBUaGlz
IHBvaW50ZXIKKyAgLy8gY2FuIGJlIHVzZWQgdG8gYWNjZXNzIGFuZCBtb2RpZnkgdGhlIGNvbnRh
aW5lZCBlbGVtZW50cy4KKyAgLy8KKyAgLy8gTk9URTogb25seSBlbGVtZW50cyB3aXRoaW4gW2Bk
YXRhKClgLCBgZGF0YSgpICsgc2l6ZSgpYCkgYXJlIHZhbGlkLgogICBwb2ludGVyIGRhdGEoKSBu
b2V4Y2VwdCB7Ci0gICAgcmV0dXJuIGFsbG9jYXRlZCgpID8gYWxsb2NhdGVkX3NwYWNlKCkgOiBp
bmxpbmVkX3NwYWNlKCk7CisgICAgcmV0dXJuIHN0b3JhZ2VfLkdldElzQWxsb2NhdGVkKCkgPyBz
dG9yYWdlXy5HZXRBbGxvY2F0ZWREYXRhKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IHN0b3JhZ2VfLkdldElubGluZWREYXRhKCk7CiAgIH0KIAotICAvLyBJbmxpbmVk
VmVjdG9yOjpjbGVhcigpCisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjpkYXRhKClg
IHRoYXQgcmV0dXJucyBhIGBjb25zdF9wb2ludGVyYCB0byB0aGUKKyAgLy8gZWxlbWVudHMgb2Yg
dGhlIGlubGluZWQgdmVjdG9yLiBUaGlzIHBvaW50ZXIgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIGJ1
dCBub3QKKyAgLy8gbW9kaWZ5IHRoZSBjb250YWluZWQgZWxlbWVudHMuCiAgIC8vCi0gIC8vIFJl
bW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGlubGluZWQgdmVjdG9yLgotICB2b2lkIGNsZWFy
KCkgbm9leGNlcHQgewotICAgIHNpemVfdHlwZSBzID0gc2l6ZSgpOwotICAgIGlmIChhbGxvY2F0
ZWQoKSkgewotICAgICAgRGVzdHJveShhbGxvY2F0ZWRfc3BhY2UoKSwgYWxsb2NhdGVkX3NwYWNl
KCkgKyBzKTsKLSAgICAgIGFsbG9jYXRpb24oKS5EZWFsbG9jKGFsbG9jYXRvcigpKTsKLSAgICB9
IGVsc2UgaWYgKHMgIT0gMCkgeyAgLy8gZG8gbm90aGluZyBmb3IgZW1wdHkgdmVjdG9ycwotICAg
ICAgRGVzdHJveShpbmxpbmVkX3NwYWNlKCksIGlubGluZWRfc3BhY2UoKSArIHMpOwotICAgIH0K
LSAgICB0YWcoKSA9IFRhZygpOworICAvLyBOT1RFOiBvbmx5IGVsZW1lbnRzIHdpdGhpbiBbYGRh
dGEoKWAsIGBkYXRhKCkgKyBzaXplKClgKSBhcmUgdmFsaWQuCisgIGNvbnN0X3BvaW50ZXIgZGF0
YSgpIGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gc3RvcmFnZV8uR2V0SXNBbGxvY2F0ZWQo
KSA/IHN0b3JhZ2VfLkdldEFsbG9jYXRlZERhdGEoKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogc3RvcmFnZV8uR2V0SW5saW5lZERhdGEoKTsKICAgfQogCi0gIC8vIElu
bGluZWRWZWN0b3I6OmF0KCkKKyAgLy8gYElubGluZWRWZWN0b3I6Om9wZXJhdG9yW10oLi4uKWAK
ICAgLy8KLSAgLy8gUmV0dXJucyB0aGUgaXRoIGVsZW1lbnQgb2YgYW4gaW5saW5lZCB2ZWN0b3Iu
Ci0gIGNvbnN0IHZhbHVlX3R5cGUmIGF0KHNpemVfdHlwZSBpKSBjb25zdCB7Ci0gICAgaWYgKEFC
U0xfUFJFRElDVF9GQUxTRShpID49IHNpemUoKSkpIHsKLSAgICAgIGJhc2VfaW50ZXJuYWw6OlRo
cm93U3RkT3V0T2ZSYW5nZSgKLSAgICAgICAgICAiSW5saW5lZFZlY3Rvcjo6YXQgZmFpbGVkIGJv
dW5kcyBjaGVjayIpOwotICAgIH0KKyAgLy8gUmV0dXJucyBhIGByZWZlcmVuY2VgIHRvIHRoZSBg
aWB0aCBlbGVtZW50IG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgcmVmZXJlbmNlIG9wZXJhdG9y
W10oc2l6ZV90eXBlIGkpIHsKKyAgICBhc3NlcnQoaSA8IHNpemUoKSk7CisKICAgICByZXR1cm4g
ZGF0YSgpW2ldOwogICB9CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6b3BlcmF0b3JbXQotICAvLwot
ICAvLyBSZXR1cm5zIHRoZSBpdGggZWxlbWVudCBvZiBhbiBpbmxpbmVkIHZlY3RvciB1c2luZyB0
aGUgYXJyYXkgb3BlcmF0b3IuCi0gIGNvbnN0IHZhbHVlX3R5cGUmIG9wZXJhdG9yW10oc2l6ZV90
eXBlIGkpIGNvbnN0IHsKKyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6Om9wZXJhdG9y
W10oLi4uKWAgdGhhdCByZXR1cm5zIGEKKyAgLy8gYGNvbnN0X3JlZmVyZW5jZWAgdG8gdGhlIGBp
YHRoIGVsZW1lbnQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICBjb25zdF9yZWZlcmVuY2Ugb3Bl
cmF0b3JbXShzaXplX3R5cGUgaSkgY29uc3QgewogICAgIGFzc2VydChpIDwgc2l6ZSgpKTsKKwog
ICAgIHJldHVybiBkYXRhKClbaV07CiAgIH0KIAotICAvLyBPdmVybG9hZCBvZiBJbmxpbmVkVmVj
dG9yOjphdCgpIHRvIHJldHVybiB0aGUgaXRoIGVsZW1lbnQgb2YgYW4gaW5saW5lZAotICAvLyB2
ZWN0b3IuCi0gIHZhbHVlX3R5cGUmIGF0KHNpemVfdHlwZSBpKSB7Ci0gICAgaWYgKGkgPj0gc2l6
ZSgpKSB7CisgIC8vIGBJbmxpbmVkVmVjdG9yOjphdCguLi4pYAorICAvLworICAvLyBSZXR1cm5z
IGEgYHJlZmVyZW5jZWAgdG8gdGhlIGBpYHRoIGVsZW1lbnQgb2YgdGhlIGlubGluZWQgdmVjdG9y
LgorICAvLworICAvLyBOT1RFOiBpZiBgaWAgaXMgbm90IHdpdGhpbiB0aGUgcmVxdWlyZWQgcmFu
Z2Ugb2YgYElubGluZWRWZWN0b3I6OmF0KC4uLilgLAorICAvLyBpbiBib3RoIGRlYnVnIGFuZCBu
b24tZGVidWcgYnVpbGRzLCBgc3RkOjpvdXRfb2ZfcmFuZ2VgIHdpbGwgYmUgdGhyb3duLgorICBy
ZWZlcmVuY2UgYXQoc2l6ZV90eXBlIGkpIHsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGkg
Pj0gc2l6ZSgpKSkgewogICAgICAgYmFzZV9pbnRlcm5hbDo6VGhyb3dTdGRPdXRPZlJhbmdlKAot
ICAgICAgICAgICJJbmxpbmVkVmVjdG9yOjphdCBmYWlsZWQgYm91bmRzIGNoZWNrIik7CisgICAg
ICAgICAgImBJbmxpbmVkVmVjdG9yOjphdChzaXplX3R5cGUpYCBmYWlsZWQgYm91bmRzIGNoZWNr
Iik7CiAgICAgfQotICAgIHJldHVybiBkYXRhKClbaV07Ci0gIH0KIAotICAvLyBPdmVybG9hZCBv
ZiBJbmxpbmVkVmVjdG9yOjpvcGVyYXRvcltdIHRvIHJldHVybiB0aGUgaXRoIGVsZW1lbnQgb2Yg
YW4KLSAgLy8gaW5saW5lZCB2ZWN0b3IuCi0gIHZhbHVlX3R5cGUmIG9wZXJhdG9yW10oc2l6ZV90
eXBlIGkpIHsKLSAgICBhc3NlcnQoaSA8IHNpemUoKSk7CiAgICAgcmV0dXJuIGRhdGEoKVtpXTsK
ICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OmJhY2soKQorICAvLyBPdmVybG9hZCBvZiBgSW5s
aW5lZFZlY3Rvcjo6YXQoLi4uKWAgdGhhdCByZXR1cm5zIGEgYGNvbnN0X3JlZmVyZW5jZWAgdG8K
KyAgLy8gdGhlIGBpYHRoIGVsZW1lbnQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgogICAvLwotICAv
LyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBsYXN0IGVsZW1lbnQgb2YgYW4gaW5saW5lZCB2
ZWN0b3IuCi0gIHZhbHVlX3R5cGUmIGJhY2soKSB7Ci0gICAgYXNzZXJ0KCFlbXB0eSgpKTsKLSAg
ICByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7Ci0gIH0KKyAgLy8gTk9URTogaWYgYGlgIGlzIG5vdCB3
aXRoaW4gdGhlIHJlcXVpcmVkIHJhbmdlIG9mIGBJbmxpbmVkVmVjdG9yOjphdCguLi4pYCwKKyAg
Ly8gaW4gYm90aCBkZWJ1ZyBhbmQgbm9uLWRlYnVnIGJ1aWxkcywgYHN0ZDo6b3V0X29mX3Jhbmdl
YCB3aWxsIGJlIHRocm93bi4KKyAgY29uc3RfcmVmZXJlbmNlIGF0KHNpemVfdHlwZSBpKSBjb25z
dCB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShpID49IHNpemUoKSkpIHsKKyAgICAgIGJh
c2VfaW50ZXJuYWw6OlRocm93U3RkT3V0T2ZSYW5nZSgKKyAgICAgICAgICAiYElubGluZWRWZWN0
b3I6OmF0KHNpemVfdHlwZSkgY29uc3RgIGZhaWxlZCBib3VuZHMgY2hlY2siKTsKKyAgICB9CiAK
LSAgLy8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6YmFjaygpIHJldHVybnMgYSByZWZlcmVu
Y2UgdG8gdGhlIGxhc3QgZWxlbWVudAotICAvLyBvZiBhbiBpbmxpbmVkIHZlY3RvciBvZiBjb25z
dCB2YWx1ZXMuCi0gIGNvbnN0IHZhbHVlX3R5cGUmIGJhY2soKSBjb25zdCB7Ci0gICAgYXNzZXJ0
KCFlbXB0eSgpKTsKLSAgICByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7CisgICAgcmV0dXJuIGRhdGEo
KVtpXTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OmZyb250KCkKKyAgLy8gYElubGluZWRW
ZWN0b3I6OmZyb250KClgCiAgIC8vCi0gIC8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGZp
cnN0IGVsZW1lbnQgb2YgYW4gaW5saW5lZCB2ZWN0b3IuCi0gIHZhbHVlX3R5cGUmIGZyb250KCkg
eworICAvLyBSZXR1cm5zIGEgYHJlZmVyZW5jZWAgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhl
IGlubGluZWQgdmVjdG9yLgorICByZWZlcmVuY2UgZnJvbnQoKSB7CiAgICAgYXNzZXJ0KCFlbXB0
eSgpKTsKKwogICAgIHJldHVybiBhdCgwKTsKICAgfQogCi0gIC8vIE92ZXJsb2FkIG9mIElubGlu
ZWRWZWN0b3I6OmZyb250KCkgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgZmlyc3QgZWxlbWVu
dAotICAvLyBvZiBhbiBpbmxpbmVkIHZlY3RvciBvZiBjb25zdCB2YWx1ZXMuCi0gIGNvbnN0IHZh
bHVlX3R5cGUmIGZyb250KCkgY29uc3QgeworICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rv
cjo6ZnJvbnQoKWAgdGhhdCByZXR1cm5zIGEgYGNvbnN0X3JlZmVyZW5jZWAgdG8KKyAgLy8gdGhl
IGZpcnN0IGVsZW1lbnQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICBjb25zdF9yZWZlcmVuY2Ug
ZnJvbnQoKSBjb25zdCB7CiAgICAgYXNzZXJ0KCFlbXB0eSgpKTsKKwogICAgIHJldHVybiBhdCgw
KTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OmVtcGxhY2VfYmFjaygpCi0gIC8vCi0gIC8v
IENvbnN0cnVjdHMgYW5kIGFwcGVuZHMgYW4gb2JqZWN0IHRvIHRoZSBpbmxpbmVkIHZlY3Rvci4K
KyAgLy8gYElubGluZWRWZWN0b3I6OmJhY2soKWAKICAgLy8KLSAgLy8gUmV0dXJucyBhIHJlZmVy
ZW5jZSB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFy
Z3M+Ci0gIHZhbHVlX3R5cGUmIGVtcGxhY2VfYmFjayhBcmdzJiYuLi4gYXJncykgewotICAgIHNp
emVfdHlwZSBzID0gc2l6ZSgpOwotICAgIGFzc2VydChzIDw9IGNhcGFjaXR5KCkpOwotICAgIGlm
IChBQlNMX1BSRURJQ1RfRkFMU0UocyA9PSBjYXBhY2l0eSgpKSkgewotICAgICAgcmV0dXJuIEdy
b3dBbmRFbXBsYWNlQmFjayhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgIH0KLSAg
ICBhc3NlcnQocyA8IGNhcGFjaXR5KCkpOworICAvLyBSZXR1cm5zIGEgYHJlZmVyZW5jZWAgdG8g
dGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCisgIHJlZmVyZW5jZSBiYWNr
KCkgeworICAgIGFzc2VydCghZW1wdHkoKSk7CiAKLSAgICB2YWx1ZV90eXBlKiBzcGFjZTsKLSAg
ICBpZiAoYWxsb2NhdGVkKCkpIHsKLSAgICAgIHRhZygpLnNldF9hbGxvY2F0ZWRfc2l6ZShzICsg
MSk7Ci0gICAgICBzcGFjZSA9IGFsbG9jYXRlZF9zcGFjZSgpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICB0YWcoKS5zZXRfaW5saW5lX3NpemUocyArIDEpOwotICAgICAgc3BhY2UgPSBpbmxpbmVkX3Nw
YWNlKCk7Ci0gICAgfQotICAgIHJldHVybiBDb25zdHJ1Y3Qoc3BhY2UgKyBzLCBzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVybiBhdChzaXplKCkgLSAxKTsKICAgfQogCi0g
IC8vIElubGluZWRWZWN0b3I6OnB1c2hfYmFjaygpCi0gIC8vCi0gIC8vIEFwcGVuZHMgYSBjb25z
dCBlbGVtZW50IHRvIHRoZSBpbmxpbmVkIHZlY3Rvci4KLSAgdm9pZCBwdXNoX2JhY2soY29uc3Qg
dmFsdWVfdHlwZSYgdCkgeyBlbXBsYWNlX2JhY2sodCk7IH0KLQotICAvLyBPdmVybG9hZCBvZiBJ
bmxpbmVkVmVjdG9yOjpwdXNoX2JhY2soKSB0byBhcHBlbmQgYSBtb3ZlLW9ubHkgZWxlbWVudCB0
byB0aGUKLSAgLy8gaW5saW5lZCB2ZWN0b3IuCi0gIHZvaWQgcHVzaF9iYWNrKHZhbHVlX3R5cGUm
JiB0KSB7IGVtcGxhY2VfYmFjayhzdGQ6Om1vdmUodCkpOyB9Ci0KLSAgLy8gSW5saW5lZFZlY3Rv
cjo6cG9wX2JhY2soKQotICAvLwotICAvLyBSZW1vdmVzIHRoZSBsYXN0IGVsZW1lbnQgKHdoaWNo
IGlzIGRlc3Ryb3llZCkgaW4gdGhlIGlubGluZWQgdmVjdG9yLgotICB2b2lkIHBvcF9iYWNrKCkg
eworICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6YmFjaygpYCB0aGF0IHJldHVybnMg
YSBgY29uc3RfcmVmZXJlbmNlYCB0byB0aGUKKyAgLy8gbGFzdCBlbGVtZW50IG9mIHRoZSBpbmxp
bmVkIHZlY3Rvci4KKyAgY29uc3RfcmVmZXJlbmNlIGJhY2soKSBjb25zdCB7CiAgICAgYXNzZXJ0
KCFlbXB0eSgpKTsKLSAgICBzaXplX3R5cGUgcyA9IHNpemUoKTsKLSAgICBpZiAoYWxsb2NhdGVk
KCkpIHsKLSAgICAgIERlc3Ryb3koYWxsb2NhdGVkX3NwYWNlKCkgKyBzIC0gMSwgYWxsb2NhdGVk
X3NwYWNlKCkgKyBzKTsKLSAgICAgIHRhZygpLnNldF9hbGxvY2F0ZWRfc2l6ZShzIC0gMSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIERlc3Ryb3koaW5saW5lZF9zcGFjZSgpICsgcyAtIDEsIGlubGlu
ZWRfc3BhY2UoKSArIHMpOwotICAgICAgdGFnKCkuc2V0X2lubGluZV9zaXplKHMgLSAxKTsKLSAg
ICB9Ci0gIH0KLQotICAvLyBJbmxpbmVkVmVjdG9yOjpyZXNpemUoKQotICAvLwotICAvLyBSZXNp
emVzIHRoZSBpbmxpbmVkIHZlY3RvciB0byBjb250YWluIGBuYCBlbGVtZW50cy4gSWYgYG5gIGlz
IHNtYWxsZXIgdGhhbgotICAvLyB0aGUgaW5saW5lZCB2ZWN0b3IncyBjdXJyZW50IHNpemUsIGV4
dHJhIGVsZW1lbnRzIGFyZSBkZXN0cm95ZWQuIElmIGBuYCBpcwotICAvLyBsYXJnZXIgdGhhbiB0
aGUgaW5pdGlhbCBzaXplLCBuZXcgZWxlbWVudHMgYXJlIHZhbHVlLWluaXRpYWxpemVkLgotICB2
b2lkIHJlc2l6ZShzaXplX3R5cGUgbik7CiAKLSAgLy8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rv
cjo6cmVzaXplKCkgdG8gcmVzaXplIHRoZSBpbmxpbmVkIHZlY3RvciB0byBjb250YWluCi0gIC8v
IGBuYCBlbGVtZW50cy4gSWYgYG5gIGlzIGxhcmdlciB0aGFuIHRoZSBjdXJyZW50IHNpemUsIGVu
b3VnaCBjb3BpZXMgb2YKLSAgLy8gYGVsZW1gIGFyZSBhcHBlbmRlZCB0byBpbmNyZWFzZSBpdHMg
c2l6ZSB0byBgbmAuCi0gIHZvaWQgcmVzaXplKHNpemVfdHlwZSBuLCBjb25zdCB2YWx1ZV90eXBl
JiBlbGVtKTsKKyAgICByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7CisgIH0KIAotICAvLyBJbmxpbmVk
VmVjdG9yOjpiZWdpbigpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpiZWdpbigpYAogICAvLwotICAv
LyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlubGluZWQgdmVj
dG9yLgorICAvLyBSZXR1cm5zIGFuIGBpdGVyYXRvcmAgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUg
aW5saW5lZCB2ZWN0b3IuCiAgIGl0ZXJhdG9yIGJlZ2luKCkgbm9leGNlcHQgeyByZXR1cm4gZGF0
YSgpOyB9CiAKLSAgLy8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6YmVnaW4oKSBmb3IgcmV0
dXJuaW5nIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlCi0gIC8vIGJlZ2lubmluZyBvZiB0aGUgaW5s
aW5lZCB2ZWN0b3IuCisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjpiZWdpbigpYCB0
aGF0IHJldHVybnMgYSBgY29uc3RfaXRlcmF0b3JgIHRvCisgIC8vIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIGlubGluZWQgdmVjdG9yLgogICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IG5vZXhj
ZXB0IHsgcmV0dXJuIGRhdGEoKTsgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OmNiZWdpbigpCisg
IC8vIGBJbmxpbmVkVmVjdG9yOjplbmQoKWAKICAgLy8KLSAgLy8gUmV0dXJucyBhIGNvbnN0IGl0
ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlubGluZWQgdmVjdG9yLgotICBjb25zdF9p
dGVyYXRvciBjYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBiZWdpbigpOyB9Ci0KLSAg
Ly8gSW5saW5lZFZlY3Rvcjo6ZW5kKCkKLSAgLy8KLSAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0
byB0aGUgZW5kIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgLy8gUmV0dXJucyBhbiBgaXRlcmF0
b3JgIHRvIHRoZSBlbmQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgogICBpdGVyYXRvciBlbmQoKSBu
b2V4Y2VwdCB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7IH0KIAotICAvLyBPdmVybG9hZCBvZiBJ
bmxpbmVkVmVjdG9yOjplbmQoKSBmb3IgcmV0dXJuaW5nIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhl
IGVuZAotICAvLyBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCisgIC8vIE92ZXJsb2FkIG9mIGBJbmxp
bmVkVmVjdG9yOjplbmQoKWAgdGhhdCByZXR1cm5zIGEgYGNvbnN0X2l0ZXJhdG9yYCB0byB0aGUK
KyAgLy8gZW5kIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KICAgY29uc3RfaXRlcmF0b3IgZW5kKCkg
Y29uc3Qgbm9leGNlcHQgeyByZXR1cm4gZGF0YSgpICsgc2l6ZSgpOyB9CiAKLSAgLy8gSW5saW5l
ZFZlY3Rvcjo6Y2VuZCgpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpjYmVnaW4oKWAKICAgLy8KLSAg
Ly8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGlubGluZWQgdmVj
dG9yLgorICAvLyBSZXR1cm5zIGEgYGNvbnN0X2l0ZXJhdG9yYCB0byB0aGUgYmVnaW5uaW5nIG9m
IHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3Qgbm9l
eGNlcHQgeyByZXR1cm4gYmVnaW4oKTsgfQorCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpjZW5kKClg
CisgIC8vCisgIC8vIFJldHVybnMgYSBgY29uc3RfaXRlcmF0b3JgIHRvIHRoZSBlbmQgb2YgdGhl
IGlubGluZWQgdmVjdG9yLgogICBjb25zdF9pdGVyYXRvciBjZW5kKCkgY29uc3Qgbm9leGNlcHQg
eyByZXR1cm4gZW5kKCk7IH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpyYmVnaW4oKQorICAvLyBg
SW5saW5lZFZlY3Rvcjo6cmJlZ2luKClgCiAgIC8vCi0gIC8vIFJldHVybnMgYSByZXZlcnNlIGl0
ZXJhdG9yIGZyb20gdGhlIGVuZCBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCisgIC8vIFJldHVybnMg
YSBgcmV2ZXJzZV9pdGVyYXRvcmAgZnJvbSB0aGUgZW5kIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4K
ICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBub2V4Y2VwdCB7IHJldHVybiByZXZlcnNlX2l0
ZXJhdG9yKGVuZCgpKTsgfQogCi0gIC8vIE92ZXJsb2FkIG9mIElubGluZWRWZWN0b3I6OnJiZWdp
bigpIGZvciByZXR1cm5pbmcgYSBjb25zdCByZXZlcnNlIGl0ZXJhdG9yCi0gIC8vIGZyb20gdGhl
IGVuZCBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVj
dG9yOjpyYmVnaW4oKWAgdGhhdCByZXR1cm5zIGEKKyAgLy8gYGNvbnN0X3JldmVyc2VfaXRlcmF0
b3JgIGZyb20gdGhlIGVuZCBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCiAgIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgewogICAgIHJldHVybiBjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yKGVuZCgpKTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OmNyYmVnaW4o
KQotICAvLwotICAvLyBSZXR1cm5zIGEgY29uc3QgcmV2ZXJzZSBpdGVyYXRvciBmcm9tIHRoZSBl
bmQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgotICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyYmVn
aW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByYmVnaW4oKTsgfQotCi0gIC8vIElubGluZWRW
ZWN0b3I6OnJlbmQoKQorICAvLyBgSW5saW5lZFZlY3Rvcjo6cmVuZCgpYAogICAvLwotICAvLyBS
ZXR1cm5zIGEgcmV2ZXJzZSBpdGVyYXRvciBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlubGlu
ZWQgdmVjdG9yLgorICAvLyBSZXR1cm5zIGEgYHJldmVyc2VfaXRlcmF0b3JgIGZyb20gdGhlIGJl
Z2lubmluZyBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCiAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgp
IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KIAotICAvLyBP
dmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjpyZW5kKCkgZm9yIHJldHVybmluZyBhIGNvbnN0IHJl
dmVyc2UgaXRlcmF0b3IKKyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6OnJlbmQoKWAg
dGhhdCByZXR1cm5zIGEgYGNvbnN0X3JldmVyc2VfaXRlcmF0b3JgCiAgIC8vIGZyb20gdGhlIGJl
Z2lubmluZyBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCiAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3Ig
cmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsKICAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRv
cihiZWdpbigpKTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OmNyZW5kKCkKKyAgLy8gYElu
bGluZWRWZWN0b3I6OmNyYmVnaW4oKWAKICAgLy8KLSAgLy8gUmV0dXJucyBhIHJldmVyc2UgaXRl
cmF0b3IgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgLy8gUmV0
dXJucyBhIGBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yYCBmcm9tIHRoZSBlbmQgb2YgdGhlIGlubGlu
ZWQgdmVjdG9yLgorICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCBub2V4
Y2VwdCB7IHJldHVybiByYmVnaW4oKTsgfQorCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpjcmVuZCgp
YAorICAvLworICAvLyBSZXR1cm5zIGEgYGNvbnN0X3JldmVyc2VfaXRlcmF0b3JgIGZyb20gdGhl
IGJlZ2lubmluZyBvZiB0aGUgaW5saW5lZAorICAvLyB2ZWN0b3IuCiAgIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IgY3JlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByZW5kKCk7IH0KIAotICAv
LyBJbmxpbmVkVmVjdG9yOjplbXBsYWNlKCkKKyAgLy8gYElubGluZWRWZWN0b3I6OmdldF9hbGxv
Y2F0b3IoKWAKICAgLy8KLSAgLy8gQ29uc3RydWN0cyBhbmQgaW5zZXJ0cyBhbiBvYmplY3QgdG8g
dGhlIGlubGluZWQgdmVjdG9yIGF0IHRoZSBnaXZlbgotICAvLyBgcG9zaXRpb25gLCByZXR1cm5p
bmcgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGVtcGxhY2VkIGVsZW1lbnQuCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICBpdGVyYXRvciBlbXBsYWNlKGNvbnN0X2l0
ZXJhdG9yIHBvc2l0aW9uLCBBcmdzJiYuLi4gYXJncyk7CisgIC8vIFJldHVybnMgYSBjb3B5IG9m
IHRoZSBpbmxpbmVkIHZlY3RvcidzIGFsbG9jYXRvci4KKyAgYWxsb2NhdG9yX3R5cGUgZ2V0X2Fs
bG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlXy5HZXRBbGxvY1B0cigpOyB9CisKKyAg
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC8vIElubGluZWRWZWN0b3IgTWVtYmVyIE11dGF0b3Jz
CisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gIC8vIElubGluZWRWZWN0b3I6Omluc2VydCgp
CisgIC8vIGBJbmxpbmVkVmVjdG9yOjpvcGVyYXRvcj0oLi4uKWAKICAgLy8KLSAgLy8gSW5zZXJ0
cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYXQgYHBvc2l0aW9uYCwgcmV0dXJu
aW5nIGFuCi0gIC8vIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVt
ZW50LgotICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIGNvbnN0IHZh
bHVlX3R5cGUmIHYpIHsKLSAgICByZXR1cm4gZW1wbGFjZShwb3NpdGlvbiwgdik7Ci0gIH0KKyAg
Ly8gUmVwbGFjZXMgdGhlIGVsZW1lbnRzIG9mIHRoZSBpbmxpbmVkIHZlY3RvciB3aXRoIGNvcGll
cyBvZiB0aGUgZWxlbWVudHMgb2YKKyAgLy8gYGxpc3RgLgorICBJbmxpbmVkVmVjdG9yJiBvcGVy
YXRvcj0oc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QpIHsKKyAgICBhc3Np
Z24obGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKIAotICAvLyBPdmVybG9hZCBvZiBJbmxpbmVk
VmVjdG9yOjppbnNlcnQoKSBmb3IgaW5zZXJ0aW5nIGFuIGVsZW1lbnQgb2YgdGhlCi0gIC8vIHNw
ZWNpZmllZCBydmFsdWUsIHJldHVybmluZyBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgbmV3
bHkgaW5zZXJ0ZWQKLSAgLy8gZWxlbWVudC4KLSAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJh
dG9yIHBvc2l0aW9uLCB2YWx1ZV90eXBlJiYgdikgewotICAgIHJldHVybiBlbXBsYWNlKHBvc2l0
aW9uLCBzdGQ6Om1vdmUodikpOworICAgIHJldHVybiAqdGhpczsKICAgfQogCi0gIC8vIE92ZXJs
b2FkIG9mIElubGluZWRWZWN0b3I6Omluc2VydCgpIGZvciBpbnNlcnRpbmcgYG5gIGVsZW1lbnRz
IG9mIHRoZQotICAvLyBzcGVjaWZpZWQgdmFsdWUgYXQgYHBvc2l0aW9uYCwgcmV0dXJuaW5nIGFu
IGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBmaXJzdAotICAvLyBvZiB0aGUgbmV3bHkgaW5zZXJ0
ZWQgZWxlbWVudHMuCi0gIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwg
c2l6ZV90eXBlIG4sIGNvbnN0IHZhbHVlX3R5cGUmIHYpIHsKLSAgICByZXR1cm4gSW5zZXJ0V2l0
aENvdW50KHBvc2l0aW9uLCBuLCB2KTsKLSAgfQorICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZl
Y3Rvcjo6b3BlcmF0b3I9KC4uLilgIHRoYXQgcmVwbGFjZXMgdGhlIGVsZW1lbnRzIG9mCisgIC8v
IHRoZSBpbmxpbmVkIHZlY3RvciB3aXRoIGNvcGllcyBvZiB0aGUgZWxlbWVudHMgb2YgYG90aGVy
YC4KKyAgSW5saW5lZFZlY3RvciYgb3BlcmF0b3I9KGNvbnN0IElubGluZWRWZWN0b3ImIG90aGVy
KSB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKHRoaXMgIT0gc3RkOjphZGRyZXNzb2Yob3Ro
ZXIpKSkgeworICAgICAgY29uc3RfcG9pbnRlciBvdGhlcl9kYXRhID0gb3RoZXIuZGF0YSgpOwor
ICAgICAgYXNzaWduKG90aGVyX2RhdGEsIG90aGVyX2RhdGEgKyBvdGhlci5zaXplKCkpOworICAg
IH0KIAotICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6aW5zZXJ0KClgIHRvIGRpc2Ft
YmlndWF0ZSB0aGUgdHdvCi0gIC8vIHRocmVlLWFyZ3VtZW50IG92ZXJsb2FkcyBvZiBgaW5zZXJ0
KClgLCByZXR1cm5pbmcgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8KLSAgLy8gdGhlIGZpcnN0IG9m
IHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50cy4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0
SXRlcmF0b3IsCi0gICAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjppdGVy
YXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5LAotICAgICAgICAg
ICAgICAgIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnPjo6dmFsdWU+Ojp0eXBlPgotICBpdGVyYXRv
ciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIElucHV0SXRlcmF0b3IgZmlyc3QsCi0g
ICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGxhc3QpIHsKLSAgICB1c2luZyBJdGVyVHlw
ZSA9Ci0gICAgICAgIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3I+
OjppdGVyYXRvcl9jYXRlZ29yeTsKLSAgICByZXR1cm4gSW5zZXJ0V2l0aFJhbmdlKHBvc2l0aW9u
LCBmaXJzdCwgbGFzdCwgSXRlclR5cGUoKSk7CisgICAgcmV0dXJuICp0aGlzOwogICB9CiAKLSAg
Ly8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6aW5zZXJ0KCkgZm9yIGluc2VydGluZyBhIGxp
c3Qgb2YgZWxlbWVudHMgYXQKLSAgLy8gYHBvc2l0aW9uYCwgcmV0dXJuaW5nIGFuIGl0ZXJhdG9y
IHBvaW50aW5nIHRvIHRoZSBmaXJzdCBvZiB0aGUgbmV3bHkKLSAgLy8gaW5zZXJ0ZWQgZWxlbWVu
dHMuCi0gIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwKLSAgICAgICAg
ICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBpbml0KSB7Ci0gICAg
cmV0dXJuIGluc2VydChwb3NpdGlvbiwgaW5pdC5iZWdpbigpLCBpbml0LmVuZCgpKTsKKyAgLy8g
T3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6Om9wZXJhdG9yPSguLi4pYCB0aGF0IG1vdmVzIHRo
ZSBlbGVtZW50cyBvZgorICAvLyBgb3RoZXJgIGludG8gdGhlIGlubGluZWQgdmVjdG9yLgorICAv
LworICAvLyBOT1RFOiBhcyBhIHJlc3VsdCBvZiBjYWxsaW5nIHRoaXMgb3ZlcmxvYWQsIGBvdGhl
cmAgaXMgbGVmdCBpbiBhIHZhbGlkIGJ1dAorICAvLyB1bnNwZWNpZmllZCBzdGF0ZS4KKyAgSW5s
aW5lZFZlY3RvciYgb3BlcmF0b3I9KElubGluZWRWZWN0b3ImJiBvdGhlcikgeworICAgIGlmIChB
QlNMX1BSRURJQ1RfVFJVRSh0aGlzICE9IHN0ZDo6YWRkcmVzc29mKG90aGVyKSkpIHsKKyAgICAg
IGlmIChJc01lbWNweU9rOjp2YWx1ZSB8fCBvdGhlci5zdG9yYWdlXy5HZXRJc0FsbG9jYXRlZCgp
KSB7CisgICAgICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpEZXN0cm95RWxlbWVudHMoc3Rv
cmFnZV8uR2V0QWxsb2NQdHIoKSwgZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemUoKSk7CisgICAgICAgIHN0b3JhZ2VfLkRlYWxsb2Nh
dGVJZkFsbG9jYXRlZCgpOworICAgICAgICBzdG9yYWdlXy5NZW1jcHlGcm9tKG90aGVyLnN0b3Jh
Z2VfKTsKKworICAgICAgICBvdGhlci5zdG9yYWdlXy5TZXRJbmxpbmVkU2l6ZSgwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHN0b3JhZ2VfLkFzc2lnbihJdGVyYXRvclZhbHVlQWRhcHRlcjxN
b3ZlSXRlcmF0b3I+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdmVJdGVyYXRvcihv
dGhlci5zdG9yYWdlXy5HZXRJbmxpbmVkRGF0YSgpKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICBvdGhlci5zaXplKCkpOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAqdGhpczsKICAg
fQogCi0gIC8vIElubGluZWRWZWN0b3I6OmVyYXNlKCkKKyAgLy8gYElubGluZWRWZWN0b3I6OmFz
c2lnbiguLi4pYAogICAvLwotICAvLyBFcmFzZXMgdGhlIGVsZW1lbnQgYXQgYHBvc2l0aW9uYCBv
ZiB0aGUgaW5saW5lZCB2ZWN0b3IsIHJldHVybmluZyBhbgotICAvLyBpdGVyYXRvciBwb2ludGlu
ZyB0byB0aGUgZm9sbG93aW5nIGVsZW1lbnQgb3IgdGhlIGNvbnRhaW5lcidzIGVuZCBpZiB0aGUK
LSAgLy8gbGFzdCBlbGVtZW50IHdhcyBlcmFzZWQuCi0gIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0
ZXJhdG9yIHBvc2l0aW9uKSB7Ci0gICAgYXNzZXJ0KHBvc2l0aW9uID49IGJlZ2luKCkpOwotICAg
IGFzc2VydChwb3NpdGlvbiA8IGVuZCgpKTsKLQotICAgIGl0ZXJhdG9yIHBvcyA9IGNvbnN0X2Nh
c3Q8aXRlcmF0b3I+KHBvc2l0aW9uKTsKLSAgICBzdGQ6Om1vdmUocG9zICsgMSwgZW5kKCksIHBv
cyk7Ci0gICAgcG9wX2JhY2soKTsKLSAgICByZXR1cm4gcG9zOworICAvLyBSZXBsYWNlcyB0aGUg
Y29udGVudHMgb2YgdGhlIGlubGluZWQgdmVjdG9yIHdpdGggYG5gIGNvcGllcyBvZiBgdmAuCisg
IHZvaWQgYXNzaWduKHNpemVfdHlwZSBuLCBjb25zdF9yZWZlcmVuY2UgdikgeworICAgIHN0b3Jh
Z2VfLkFzc2lnbihDb3B5VmFsdWVBZGFwdGVyKHYpLCBuKTsKICAgfQogCi0gIC8vIE92ZXJsb2Fk
IG9mIElubGluZWRWZWN0b3I6OmVyYXNlKCkgZm9yIGVyYXNpbmcgYWxsIGVsZW1lbnRzIGluIHRo
ZQotICAvLyBpdGVyYXRvciByYW5nZSBbZmlyc3QsIGxhc3QpIGluIHRoZSBpbmxpbmVkIHZlY3Rv
ciwgcmV0dXJuaW5nIGFuIGl0ZXJhdG9yCi0gIC8vIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBlbGVt
ZW50IGZvbGxvd2luZyB0aGUgcmFuZ2UgZXJhc2VkLCBvciB0aGUKLSAgLy8gY29udGFpbmVyJ3Mg
ZW5kIGlmIHJhbmdlIGluY2x1ZGVkIHRoZSBjb250YWluZXIncyBsYXN0IGVsZW1lbnQuCi0gIGl0
ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KTsK
KyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6OmFzc2lnbiguLi4pYCB0aGF0IHJlcGxh
Y2VzIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgLy8gaW5saW5lZCB2ZWN0b3Igd2l0aCBjb3BpZXMg
b2YgdGhlIGVsZW1lbnRzIG9mIGBsaXN0YC4KKyAgdm9pZCBhc3NpZ24oc3RkOjppbml0aWFsaXpl
cl9saXN0PHZhbHVlX3R5cGU+IGxpc3QpIHsKKyAgICBhc3NpZ24obGlzdC5iZWdpbigpLCBsaXN0
LmVuZCgpKTsKKyAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OnJlc2VydmUoKQorICAvLyBPdmVy
bG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6YXNzaWduKC4uLilgIHRvIHJlcGxhY2UgdGhlIGNvbnRl
bnRzIG9mIHRoZQorICAvLyBpbmxpbmVkIHZlY3RvciB3aXRoIHRoZSByYW5nZSBbYGZpcnN0YCwg
YGxhc3RgKS4KICAgLy8KLSAgLy8gRW5sYXJnZXMgdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRp
b24gb2YgdGhlIGlubGluZWQgdmVjdG9yIHNvIGl0IGNhbiBob2xkCi0gIC8vIGF0IGxlYXN0IGBu
YCBlbGVtZW50cy4gVGhpcyBtZXRob2QgZG9lcyBub3QgY2hhbmdlIGBzaXplKClgIG9yIHRoZSBh
Y3R1YWwKLSAgLy8gY29udGVudHMgb2YgdGhlIHZlY3Rvci4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0
IGlmIGBuYCBkb2VzIG5vdCBleGNlZWQgdGhlIGlubGluZWQgdmVjdG9yJ3MgaW5pdGlhbCBzaXpl
IGBOYCwKLSAgLy8gYHJlc2VydmUoKWAgd2lsbCBoYXZlIG5vIGVmZmVjdDsgaWYgaXQgZG9lcyBl
eGNlZWQgaXRzIGluaXRpYWwgc2l6ZSwKLSAgLy8gYHJlc2VydmUoKWAgd2lsbCB0cmlnZ2VyIGFu
IGluaXRpYWwgYWxsb2NhdGlvbiBhbmQgbW92ZSB0aGUgaW5saW5lZCB2ZWN0b3IKLSAgLy8gb250
byB0aGUgaGVhcC4gSWYgdGhlIHZlY3RvciBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgaGVhcCBhbmQg
dGhlIHJlcXVlc3RlZAotICAvLyBzaXplIGV4Y2VlZHMgaXQsIGEgcmVhbGxvY2F0aW9uIHdpbGwg
YmUgcGVyZm9ybWVkLgotICB2b2lkIHJlc2VydmUoc2l6ZV90eXBlIG4pIHsKLSAgICBpZiAobiA+
IGNhcGFjaXR5KCkpIHsKLSAgICAgIC8vIE1ha2Ugcm9vbSBmb3IgbmV3IGVsZW1lbnRzCi0gICAg
ICBFbmxhcmdlQnkobiAtIHNpemUoKSk7Ci0gICAgfQorICAvLyBOT1RFOiB0aGlzIG92ZXJsb2Fk
IGlzIGZvciBpdGVyYXRvcnMgdGhhdCBhcmUgImZvcndhcmQiIGNhdGVnb3J5IG9yIGJldHRlci4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwKKyAgICAgICAgICAgIEVuYWJs
ZUlmQXRMZWFzdEZvcndhcmRJdGVyYXRvcjxGb3J3YXJkSXRlcmF0b3I+KiA9IG51bGxwdHI+Cisg
IHZvaWQgYXNzaWduKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3Qp
IHsKKyAgICBzdG9yYWdlXy5Bc3NpZ24oSXRlcmF0b3JWYWx1ZUFkYXB0ZXI8Rm9yd2FyZEl0ZXJh
dG9yPihmaXJzdCksCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGlzdGFuY2UoZmlyc3QsIGxh
c3QpKTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OnNocmlua190b19maXQoKQotICAvLwot
ICAvLyBSZWR1Y2VzIG1lbW9yeSB1c2FnZSBieSBmcmVlaW5nIHVudXNlZCBtZW1vcnkuCi0gIC8v
IEFmdGVyIHRoaXMgY2FsbCBgY2FwYWNpdHkoKWAgd2lsbCBiZSBlcXVhbCB0byBgbWF4KE4sIHNp
emUoKSlgLgorICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6YXNzaWduKC4uLilgIHRv
IHJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAvLyBpbmxpbmVkIHZlY3RvciB3aXRoIHRo
ZSByYW5nZSBbYGZpcnN0YCwgYGxhc3RgKS4KICAgLy8KLSAgLy8gSWYgYHNpemUoKSA8PSBOYCBh
bmQgdGhlIGVsZW1lbnRzIGFyZSBjdXJyZW50bHkgc3RvcmVkIG9uIHRoZSBoZWFwLCB0aGV5Ci0g
IC8vIHdpbGwgYmUgbW92ZWQgdG8gdGhlIGlubGluZWQgc3RvcmFnZSBhbmQgdGhlIGhlYXAgbWVt
b3J5IGRlYWxsb2NhdGVkLgotICAvLyBJZiBgc2l6ZSgpID4gTmAgYW5kIGBzaXplKCkgPCBjYXBh
Y2l0eSgpYCB0aGUgZWxlbWVudHMgd2lsbCBiZSBtb3ZlZCB0bwotICAvLyBhIHJlYWxsb2NhdGVk
IHN0b3JhZ2Ugb24gaGVhcC4KLSAgdm9pZCBzaHJpbmtfdG9fZml0KCkgewotICAgIGNvbnN0IGF1
dG8gcyA9IHNpemUoKTsKLSAgICBpZiAoIWFsbG9jYXRlZCgpIHx8IHMgPT0gY2FwYWNpdHkoKSkg
ewotICAgICAgLy8gVGhlcmUncyBub3RoaW5nIHRvIGRlYWxsb2NhdGUuCi0gICAgICByZXR1cm47
CisgIC8vIE5PVEU6IHRoaXMgb3ZlcmxvYWQgaXMgZm9yIGl0ZXJhdG9ycyB0aGF0IGFyZSAiaW5w
dXQiIGNhdGVnb3J5LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwKKyAgICAg
ICAgICAgIERpc2FibGVJZkF0TGVhc3RGb3J3YXJkSXRlcmF0b3I8SW5wdXRJdGVyYXRvcj4qID0g
bnVsbHB0cj4KKyAgdm9pZCBhc3NpZ24oSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRv
ciBsYXN0KSB7CisgICAgc2l6ZV90eXBlIGkgPSAwOworICAgIGZvciAoOyBpIDwgc2l6ZSgpICYm
IGZpcnN0ICE9IGxhc3Q7ICsraSwgc3RhdGljX2Nhc3Q8dm9pZD4oKytmaXJzdCkpIHsKKyAgICAg
IGF0KGkpID0gKmZpcnN0OwogICAgIH0KIAotICAgIGlmIChzIDw9IE4pIHsKLSAgICAgIC8vIE1v
dmUgdGhlIGVsZW1lbnRzIHRvIHRoZSBpbmxpbmVkIHN0b3JhZ2UuCi0gICAgICAvLyBXZSBoYXZl
IHRvIGRvIHRoaXMgdXNpbmcgYSB0ZW1wb3JhcnksIGJlY2F1c2UgaW5saW5lZF9zdG9yYWdlIGFu
ZAotICAgICAgLy8gYWxsb2NhdGlvbl9zdG9yYWdlIGFyZSBpbiBhIHVuaW9uIGZpZWxkLgotICAg
ICAgYXV0byB0ZW1wID0gc3RkOjptb3ZlKCp0aGlzKTsKLSAgICAgIGFzc2lnbihzdGQ6Om1ha2Vf
bW92ZV9pdGVyYXRvcih0ZW1wLmJlZ2luKCkpLAotICAgICAgICAgICAgIHN0ZDo6bWFrZV9tb3Zl
X2l0ZXJhdG9yKHRlbXAuZW5kKCkpKTsKLSAgICAgIHJldHVybjsKLSAgICB9CisgICAgZXJhc2Uo
ZGF0YSgpICsgaSwgZGF0YSgpICsgc2l6ZSgpKTsKIAotICAgIC8vIFJlYWxsb2NhdGUgc3RvcmFn
ZSBhbmQgbW92ZSBlbGVtZW50cy4KLSAgICAvLyBXZSBjYW4ndCBzaW1wbHkgdXNlIHRoZSBzYW1l
IGFwcHJvYWNoIGFzIGFib3ZlLCBiZWNhdXNlIGFzc2lnbigpIHdvdWxkCi0gICAgLy8gY2FsbCBp
bnRvIHJlc2VydmUoKSBpbnRlcm5hbGx5IGFuZCByZXNlcnZlIGxhcmdlciBjYXBhY2l0eSB0aGFu
IHdlIG5lZWQuCi0gICAgQWxsb2NhdGlvbiBuZXdfYWxsb2NhdGlvbihhbGxvY2F0b3IoKSwgcyk7
Ci0gICAgVW5pbml0aWFsaXplZENvcHkoc3RkOjptYWtlX21vdmVfaXRlcmF0b3IoYWxsb2NhdGVk
X3NwYWNlKCkpLAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9y
KGFsbG9jYXRlZF9zcGFjZSgpICsgcyksCi0gICAgICAgICAgICAgICAgICAgICAgbmV3X2FsbG9j
YXRpb24uYnVmZmVyKCkpOwotICAgIFJlc2V0QWxsb2NhdGlvbihuZXdfYWxsb2NhdGlvbiwgcyk7
CisgICAgc3RkOjpjb3B5KGZpcnN0LCBsYXN0LCBzdGQ6OmJhY2tfaW5zZXJ0ZXIoKnRoaXMpKTsK
ICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OnN3YXAoKQorICAvLyBgSW5saW5lZFZlY3Rvcjo6
cmVzaXplKC4uLilgCiAgIC8vCi0gIC8vIFN3YXBzIHRoZSBjb250ZW50cyBvZiB0aGlzIGlubGlu
ZWQgdmVjdG9yIHdpdGggdGhlIGNvbnRlbnRzIG9mIGBvdGhlcmAuCi0gIHZvaWQgc3dhcChJbmxp
bmVkVmVjdG9yJiBvdGhlcik7Ci0KLSAgLy8gSW5saW5lZFZlY3Rvcjo6Z2V0X2FsbG9jYXRvcigp
CisgIC8vIFJlc2l6ZXMgdGhlIGlubGluZWQgdmVjdG9yIHRvIGNvbnRhaW4gYG5gIGVsZW1lbnRz
LgogICAvLwotICAvLyBSZXR1cm5zIHRoZSBhbGxvY2F0b3Igb2YgdGhpcyBpbmxpbmVkIHZlY3Rv
ci4KLSAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIGFsbG9j
YXRvcigpOyB9CisgIC8vIE5PVEU6IGlmIGBuYCBpcyBzbWFsbGVyIHRoYW4gYHNpemUoKWAsIGV4
dHJhIGVsZW1lbnRzIGFyZSBkZXN0cm95ZWQuIElmIGBuYAorICAvLyBpcyBsYXJnZXIgdGhhbiBg
c2l6ZSgpYCwgbmV3IGVsZW1lbnRzIGFyZSB2YWx1ZS1pbml0aWFsaXplZC4KKyAgdm9pZCByZXNp
emUoc2l6ZV90eXBlIG4pIHsgc3RvcmFnZV8uUmVzaXplKERlZmF1bHRWYWx1ZUFkYXB0ZXIoKSwg
bik7IH0KIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KLSAgZnJpZW5kIEggQWJzbEhhc2hWYWx1
ZShIIGgsIGNvbnN0IElubGluZWRWZWN0b3ImIHYpIHsKLSAgICByZXR1cm4gSDo6Y29tYmluZShI
Ojpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKGgpLCB2LmRhdGEoKSwgdi5zaXplKCkpLAot
ICAgICAgICAgICAgICAgICAgICAgIHYuc2l6ZSgpKTsKKyAgLy8gT3ZlcmxvYWQgb2YgYElubGlu
ZWRWZWN0b3I6OnJlc2l6ZSguLi4pYCB0aGF0IHJlc2l6ZXMgdGhlIGlubGluZWQgdmVjdG9yIHRv
CisgIC8vIGNvbnRhaW4gYG5gIGVsZW1lbnRzLgorICAvLworICAvLyBOT1RFOiBpZiBgbmAgaXMg
c21hbGxlciB0aGFuIGBzaXplKClgLCBleHRyYSBlbGVtZW50cyBhcmUgZGVzdHJveWVkLiBJZiBg
bmAKKyAgLy8gaXMgbGFyZ2VyIHRoYW4gYHNpemUoKWAsIG5ldyBlbGVtZW50cyBhcmUgY29waWVk
LWNvbnN0cnVjdGVkIGZyb20gYHZgLgorICB2b2lkIHJlc2l6ZShzaXplX3R5cGUgbiwgY29uc3Rf
cmVmZXJlbmNlIHYpIHsKKyAgICBzdG9yYWdlXy5SZXNpemUoQ29weVZhbHVlQWRhcHRlcih2KSwg
bik7CiAgIH0KIAotIHByaXZhdGU6Ci0gIHN0YXRpY19hc3NlcnQoTiA+IDAsICJpbmxpbmVkIHZl
Y3RvciB3aXRoIG5vbnBvc2l0aXZlIHNpemUiKTsKLQotICAvLyBJdCBob2xkcyB3aGV0aGVyIHRo
ZSB2ZWN0b3IgaXMgYWxsb2NhdGVkIG9yIG5vdCBpbiB0aGUgbG93ZXN0IGJpdC4KLSAgLy8gVGhl
IHNpemUgaXMgaGVsZCBpbiB0aGUgaGlnaCBiaXRzOgotICAvLyAgIHNpemVfID0gKHNpemUgPDwg
MSkgfCBpc19hbGxvY2F0ZWQ7CisgIC8vIGBJbmxpbmVkVmVjdG9yOjppbnNlcnQoLi4uKWAKICAg
Ly8KLSAgLy8gTWFpbnRhaW5lcidzIE5vdGU6IHNpemVfdHlwZSBpcyB1c2VyIGRlZmluZWQuIFRo
ZSBjb250cmFjdCBpcyBsaW1pdGVkIHRvCi0gIC8vIGFyaXRobWV0aWMgb3BlcmF0b3JzIHRvIGF2
b2lkIGRlcGVuZGluZyBvbiBjb21wbGlhbnQgb3ZlcmxvYWRlZCBiaXR3aXNlCi0gIC8vIG9wZXJh
dG9ycy4KLSAgY2xhc3MgVGFnIHsKLSAgIHB1YmxpYzoKLSAgICBUYWcoKSA6IHNpemVfKDApIHt9
Ci0gICAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVybiBzaXplXyAvIDI7IH0KLSAgICB2
b2lkIGFkZF9zaXplKHNpemVfdHlwZSBuKSB7IHNpemVfICs9IG4gKiAyOyB9Ci0gICAgdm9pZCBz
ZXRfaW5saW5lX3NpemUoc2l6ZV90eXBlIG4pIHsgc2l6ZV8gPSBuICogMjsgfQotICAgIHZvaWQg
c2V0X2FsbG9jYXRlZF9zaXplKHNpemVfdHlwZSBuKSB7IHNpemVfID0gKG4gKiAyKSArIDE7IH0K
LSAgICBib29sIGFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuIHNpemVfICUgMjsgfQotCi0gICBw
cml2YXRlOgotICAgIHNpemVfdHlwZSBzaXplXzsKLSAgfTsKLQotICAvLyBEZXJpdmVzIGZyb20g
YWxsb2NhdG9yX3R5cGUgdG8gdXNlIHRoZSBlbXB0eSBiYXNlIGNsYXNzIG9wdGltaXphdGlvbi4K
LSAgLy8gSWYgdGhlIGFsbG9jYXRvcl90eXBlIGlzIHN0YXRlbGVzcywgd2UgY2FuICdzdG9yZScK
LSAgLy8gb3VyIGluc3RhbmNlIG9mIGl0IGZvciBmcmVlLgotICBjbGFzcyBBbGxvY2F0b3JBbmRU
YWcgOiBwcml2YXRlIGFsbG9jYXRvcl90eXBlIHsKLSAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBB
bGxvY2F0b3JBbmRUYWcoY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEpIDogYWxsb2NhdG9yX3R5cGUo
YSkge30KLSAgICBUYWcmIHRhZygpIHsgcmV0dXJuIHRhZ187IH0KLSAgICBjb25zdCBUYWcmIHRh
ZygpIGNvbnN0IHsgcmV0dXJuIHRhZ187IH0KLSAgICBhbGxvY2F0b3JfdHlwZSYgYWxsb2NhdG9y
KCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2NhdG9y
KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLQotICAgcHJpdmF0ZToKLSAgICBUYWcgdGFnXzsK
LSAgfTsKLQotICBjbGFzcyBBbGxvY2F0aW9uIHsKLSAgIHB1YmxpYzoKLSAgICBBbGxvY2F0aW9u
KGFsbG9jYXRvcl90eXBlJiBhLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKLSAgICAg
ICAgICAgICAgIHNpemVfdHlwZSBjYXBhY2l0eSkKLSAgICAgICAgOiBjYXBhY2l0eV8oY2FwYWNp
dHkpLAotICAgICAgICAgIGJ1ZmZlcl8oQWxsb2NhdG9yVHJhaXRzOjphbGxvY2F0ZShhLCBjYXBh
Y2l0eV8pKSB7fQotCi0gICAgdm9pZCBEZWFsbG9jKGFsbG9jYXRvcl90eXBlJiBhKSB7ICAvLyBO
T0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQotICAgICAgQWxsb2NhdG9yVHJhaXRzOjpkZWFsbG9j
YXRlKGEsIGJ1ZmZlcigpLCBjYXBhY2l0eSgpKTsKLSAgICB9Ci0KLSAgICBzaXplX3R5cGUgY2Fw
YWNpdHkoKSBjb25zdCB7IHJldHVybiBjYXBhY2l0eV87IH0KLSAgICBjb25zdCB2YWx1ZV90eXBl
KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBidWZmZXJfOyB9Ci0gICAgdmFsdWVfdHlwZSogYnVm
ZmVyKCkgeyByZXR1cm4gYnVmZmVyXzsgfQotCi0gICBwcml2YXRlOgotICAgIHNpemVfdHlwZSBj
YXBhY2l0eV87Ci0gICAgdmFsdWVfdHlwZSogYnVmZmVyXzsKLSAgfTsKLQotICBjb25zdCBUYWcm
IHRhZygpIGNvbnN0IHsgcmV0dXJuIGFsbG9jYXRvcl9hbmRfdGFnXy50YWcoKTsgfQotICBUYWcm
IHRhZygpIHsgcmV0dXJuIGFsbG9jYXRvcl9hbmRfdGFnXy50YWcoKTsgfQotCi0gIEFsbG9jYXRp
b24mIGFsbG9jYXRpb24oKSB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QWxsb2NhdGlv
biY+KHJlcF8uYWxsb2NhdGlvbl9zdG9yYWdlLmFsbG9jYXRpb24pOwotICB9Ci0gIGNvbnN0IEFs
bG9jYXRpb24mIGFsbG9jYXRpb24oKSBjb25zdCB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgQWxsb2NhdGlvbiY+KAotICAgICAgICByZXBfLmFsbG9jYXRpb25fc3RvcmFnZS5h
bGxvY2F0aW9uKTsKLSAgfQotICB2b2lkIGluaXRfYWxsb2NhdGlvbihjb25zdCBBbGxvY2F0aW9u
JiBhbGxvY2F0aW9uKSB7Ci0gICAgbmV3ICgmcmVwXy5hbGxvY2F0aW9uX3N0b3JhZ2UuYWxsb2Nh
dGlvbikgQWxsb2NhdGlvbihhbGxvY2F0aW9uKTsKKyAgLy8gSW5zZXJ0cyBhIGNvcHkgb2YgYHZg
IGF0IGBwb3NgLCByZXR1cm5pbmcgYW4gYGl0ZXJhdG9yYCB0byB0aGUgbmV3bHkKKyAgLy8gaW5z
ZXJ0ZWQgZWxlbWVudC4KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvcywgY29u
c3RfcmVmZXJlbmNlIHYpIHsKKyAgICByZXR1cm4gZW1wbGFjZShwb3MsIHYpOwogICB9CiAKLSAg
Ly8gVE9ETyhhYnNsLXRlYW0pOiBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoZSByZWludGVycHJldF9j
YXN0IGlzIGFwcHJvcHJpYXRlLgotICB2YWx1ZV90eXBlKiBpbmxpbmVkX3NwYWNlKCkgewotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZhbHVlX3R5cGUqPigKLSAgICAgICAgc3RkOjphZGRy
ZXNzb2YocmVwXy5pbmxpbmVkX3N0b3JhZ2UuaW5saW5lZFswXSkpOwotICB9Ci0gIGNvbnN0IHZh
bHVlX3R5cGUqIGlubGluZWRfc3BhY2UoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdmFsdWVfdHlwZSo+KAotICAgICAgICBzdGQ6OmFkZHJlc3NvZihyZXBfLmlu
bGluZWRfc3RvcmFnZS5pbmxpbmVkWzBdKSk7CisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVj
dG9yOjppbnNlcnQoLi4uKWAgdGhhdCBpbnNlcnRzIGB2YCBhdCBgcG9zYCB1c2luZworICAvLyBt
b3ZlIHNlbWFudGljcywgcmV0dXJuaW5nIGFuIGBpdGVyYXRvcmAgdG8gdGhlIG5ld2x5IGluc2Vy
dGVkIGVsZW1lbnQuCisgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBwb3MsIHJ2YWx1
ZV9yZWZlcmVuY2UgdikgeworICAgIHJldHVybiBlbXBsYWNlKHBvcywgc3RkOjptb3ZlKHYpKTsK
ICAgfQogCi0gIHZhbHVlX3R5cGUqIGFsbG9jYXRlZF9zcGFjZSgpIHsgcmV0dXJuIGFsbG9jYXRp
b24oKS5idWZmZXIoKTsgfQotICBjb25zdCB2YWx1ZV90eXBlKiBhbGxvY2F0ZWRfc3BhY2UoKSBj
b25zdCB7IHJldHVybiBhbGxvY2F0aW9uKCkuYnVmZmVyKCk7IH0KKyAgLy8gT3ZlcmxvYWQgb2Yg
YElubGluZWRWZWN0b3I6Omluc2VydCguLi4pYCB0aGF0IGluc2VydHMgYG5gIGNvbnRpZ3VvdXMg
Y29waWVzCisgIC8vIG9mIGB2YCBzdGFydGluZyBhdCBgcG9zYCwgcmV0dXJuaW5nIGFuIGBpdGVy
YXRvcmAgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IG9mCisgIC8vIHRoZSBuZXdseSBpbnNlcnRlZCBl
bGVtZW50cy4KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvcywgc2l6ZV90eXBl
IG4sIGNvbnN0X3JlZmVyZW5jZSB2KSB7CisgICAgYXNzZXJ0KHBvcyA+PSBiZWdpbigpKTsKKyAg
ICBhc3NlcnQocG9zIDw9IGVuZCgpKTsKIAotICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2Nh
dG9yKCkgY29uc3QgewotICAgIHJldHVybiBhbGxvY2F0b3JfYW5kX3RhZ18uYWxsb2NhdG9yKCk7
CisgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKG4gIT0gMCkpIHsKKyAgICAgIHZhbHVlX3R5cGUg
ZGVhbGlhcyA9IHY7CisgICAgICByZXR1cm4gc3RvcmFnZV8uSW5zZXJ0KHBvcywgQ29weVZhbHVl
QWRhcHRlcihkZWFsaWFzKSwgbik7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBjb25zdF9j
YXN0PGl0ZXJhdG9yPihwb3MpOworICAgIH0KICAgfQotICBhbGxvY2F0b3JfdHlwZSYgYWxsb2Nh
dG9yKCkgeyByZXR1cm4gYWxsb2NhdG9yX2FuZF90YWdfLmFsbG9jYXRvcigpOyB9CiAKLSAgYm9v
bCBhbGxvY2F0ZWQoKSBjb25zdCB7IHJldHVybiB0YWcoKS5hbGxvY2F0ZWQoKTsgfQotCi0gIC8v
IEVubGFyZ2UgdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24gc28gd2UgY2FuIHN0b3JlIHNp
emVfICsgZGVsdGEgZWxlbXMuCi0gIC8vIFRoZSBzaXplIGlzIG5vdCBjaGFuZ2VkLCBhbmQgYW55
IG5ld2x5IGFkZGVkIG1lbW9yeSBpcyBub3QgaW5pdGlhbGl6ZWQuCi0gIHZvaWQgRW5sYXJnZUJ5
KHNpemVfdHlwZSBkZWx0YSk7CisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjppbnNl
cnQoLi4uKWAgdGhhdCBpbnNlcnRzIGNvcGllcyBvZiB0aGUKKyAgLy8gZWxlbWVudHMgb2YgYGxp
c3RgIHN0YXJ0aW5nIGF0IGBwb3NgLCByZXR1cm5pbmcgYW4gYGl0ZXJhdG9yYCBwb2ludGluZyB0
bworICAvLyB0aGUgZmlyc3Qgb2YgdGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnRzLgorICBpdGVy
YXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFs
dWVfdHlwZT4gbGlzdCkgeworICAgIHJldHVybiBpbnNlcnQocG9zLCBsaXN0LmJlZ2luKCksIGxp
c3QuZW5kKCkpOworICB9CiAKLSAgLy8gU2hpZnQgYWxsIGVsZW1lbnRzIGZyb20gcG9zaXRpb24g
dG8gZW5kKCkgbiBwbGFjZXMgdG8gdGhlIHJpZ2h0LgotICAvLyBJZiB0aGUgdmVjdG9yIG5lZWRz
IHRvIGJlIGVubGFyZ2VkLCBtZW1vcnkgd2lsbCBiZSBhbGxvY2F0ZWQuCi0gIC8vIFJldHVybnMg
aXRlcmF0b3JzIHBvaW50aW5nIHRvIHRoZSBzdGFydCBvZiB0aGUgcHJldmlvdXNseS1pbml0aWFs
aXplZAotICAvLyBwb3J0aW9uIGFuZCB0aGUgc3RhcnQgb2YgdGhlIHVuaW5pdGlhbGl6ZWQgcG9y
dGlvbiBvZiB0aGUgY3JlYXRlZCBnYXAuCi0gIC8vIFRoZSBudW1iZXIgb2YgaW5pdGlhbGl6ZWQg
c3BvdHMgaXMgcGFpci5zZWNvbmQgLSBwYWlyLmZpcnN0OwotICAvLyB0aGUgbnVtYmVyIG9mIHJh
dyBzcG90cyBpcyBuIC0gKHBhaXIuc2Vjb25kIC0gcGFpci5maXJzdCkuCisgIC8vIE92ZXJsb2Fk
IG9mIGBJbmxpbmVkVmVjdG9yOjppbnNlcnQoLi4uKWAgdGhhdCBpbnNlcnRzIHRoZSByYW5nZSBb
YGZpcnN0YCwKKyAgLy8gYGxhc3RgKSBzdGFydGluZyBhdCBgcG9zYCwgcmV0dXJuaW5nIGFuIGBp
dGVyYXRvcmAgcG9pbnRpbmcgdG8gdGhlIGZpcnN0CisgIC8vIG9mIHRoZSBuZXdseSBpbnNlcnRl
ZCBlbGVtZW50cy4KICAgLy8KLSAgLy8gVXBkYXRlcyB0aGUgc2l6ZSBvZiB0aGUgSW5saW5lZFZl
Y3RvciBpbnRlcm5hbGx5LgotICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9yPiBTaGlmdFJp
Z2h0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdHlwZSBuKTsKLQotICB2b2lkIFJlc2V0QWxsb2NhdGlvbihB
bGxvY2F0aW9uIG5ld19hbGxvY2F0aW9uLCBzaXplX3R5cGUgbmV3X3NpemUpIHsKLSAgICBpZiAo
YWxsb2NhdGVkKCkpIHsKLSAgICAgIERlc3Ryb3koYWxsb2NhdGVkX3NwYWNlKCksIGFsbG9jYXRl
ZF9zcGFjZSgpICsgc2l6ZSgpKTsKLSAgICAgIGFzc2VydChiZWdpbigpID09IGFsbG9jYXRlZF9z
cGFjZSgpKTsKLSAgICAgIGFsbG9jYXRpb24oKS5EZWFsbG9jKGFsbG9jYXRvcigpKTsKLSAgICAg
IGFsbG9jYXRpb24oKSA9IG5ld19hbGxvY2F0aW9uOworICAvLyBOT1RFOiB0aGlzIG92ZXJsb2Fk
IGlzIGZvciBpdGVyYXRvcnMgdGhhdCBhcmUgImZvcndhcmQiIGNhdGVnb3J5IG9yIGJldHRlci4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwKKyAgICAgICAgICAgIEVuYWJs
ZUlmQXRMZWFzdEZvcndhcmRJdGVyYXRvcjxGb3J3YXJkSXRlcmF0b3I+KiA9IG51bGxwdHI+Cisg
IGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBwb3MsIEZvcndhcmRJdGVyYXRvciBmaXJz
dCwKKyAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvciBsYXN0KSB7CisgICAgYXNzZXJ0
KHBvcyA+PSBiZWdpbigpKTsKKyAgICBhc3NlcnQocG9zIDw9IGVuZCgpKTsKKworICAgIGlmIChB
QlNMX1BSRURJQ1RfVFJVRShmaXJzdCAhPSBsYXN0KSkgeworICAgICAgcmV0dXJuIHN0b3JhZ2Vf
Lkluc2VydChwb3MsIEl0ZXJhdG9yVmFsdWVBZGFwdGVyPEZvcndhcmRJdGVyYXRvcj4oZmlyc3Qp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgIERlc3Ryb3koaW5saW5lZF9zcGFjZSgpLCBpbmxpbmVk
X3NwYWNlKCkgKyBzaXplKCkpOwotICAgICAgaW5pdF9hbGxvY2F0aW9uKG5ld19hbGxvY2F0aW9u
KTsgIC8vIGJ1Zzogb25seSBpbml0IG9uY2UKKyAgICAgIHJldHVybiBjb25zdF9jYXN0PGl0ZXJh
dG9yPihwb3MpOwogICAgIH0KLSAgICB0YWcoKS5zZXRfYWxsb2NhdGVkX3NpemUobmV3X3NpemUp
OwogICB9CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIHZhbHVlX3R5cGUmIEdy
b3dBbmRFbXBsYWNlQmFjayhBcmdzJiYuLi4gYXJncykgewotICAgIGFzc2VydChzaXplKCkgPT0g
Y2FwYWNpdHkoKSk7Ci0gICAgY29uc3Qgc2l6ZV90eXBlIHMgPSBzaXplKCk7Ci0KLSAgICBBbGxv
Y2F0aW9uIG5ld19hbGxvY2F0aW9uKGFsbG9jYXRvcigpLCAyICogY2FwYWNpdHkoKSk7CisgIC8v
IE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjppbnNlcnQoLi4uKWAgdGhhdCBpbnNlcnRzIHRo
ZSByYW5nZSBbYGZpcnN0YCwKKyAgLy8gYGxhc3RgKSBzdGFydGluZyBhdCBgcG9zYCwgcmV0dXJu
aW5nIGFuIGBpdGVyYXRvcmAgcG9pbnRpbmcgdG8gdGhlIGZpcnN0CisgIC8vIG9mIHRoZSBuZXds
eSBpbnNlcnRlZCBlbGVtZW50cy4KKyAgLy8KKyAgLy8gTk9URTogdGhpcyBvdmVybG9hZCBpcyBm
b3IgaXRlcmF0b3JzIHRoYXQgYXJlICJpbnB1dCIgY2F0ZWdvcnkuCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBJbnB1dEl0ZXJhdG9yLAorICAgICAgICAgICAgRGlzYWJsZUlmQXRMZWFzdEZvcndhcmRJ
dGVyYXRvcjxJbnB1dEl0ZXJhdG9yPiogPSBudWxscHRyPgorICBpdGVyYXRvciBpbnNlcnQoY29u
c3RfaXRlcmF0b3IgcG9zLCBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3Qp
IHsKKyAgICBhc3NlcnQocG9zID49IGJlZ2luKCkpOworICAgIGFzc2VydChwb3MgPD0gZW5kKCkp
OworCisgICAgc2l6ZV90eXBlIGluZGV4ID0gc3RkOjpkaXN0YW5jZShjYmVnaW4oKSwgcG9zKTsK
KyAgICBmb3IgKHNpemVfdHlwZSBpID0gaW5kZXg7IGZpcnN0ICE9IGxhc3Q7ICsraSwgc3RhdGlj
X2Nhc3Q8dm9pZD4oKytmaXJzdCkpIHsKKyAgICAgIGluc2VydChkYXRhKCkgKyBpLCAqZmlyc3Qp
OworICAgIH0KIAotICAgIHZhbHVlX3R5cGUmIG5ld19lbGVtZW50ID0KLSAgICAgICAgQ29uc3Ry
dWN0KG5ld19hbGxvY2F0aW9uLmJ1ZmZlcigpICsgcywgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKLSAgICBVbmluaXRpYWxpemVkQ29weShzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihkYXRh
KCkpLAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKGRhdGEo
KSArIHMpLAotICAgICAgICAgICAgICAgICAgICAgIG5ld19hbGxvY2F0aW9uLmJ1ZmZlcigpKTsK
KyAgICByZXR1cm4gaXRlcmF0b3IoZGF0YSgpICsgaW5kZXgpOworICB9CiAKLSAgICBSZXNldEFs
bG9jYXRpb24obmV3X2FsbG9jYXRpb24sIHMgKyAxKTsKKyAgLy8gYElubGluZWRWZWN0b3I6OmVt
cGxhY2UoLi4uKWAKKyAgLy8KKyAgLy8gQ29uc3RydWN0cyBhbmQgaW5zZXJ0cyBhbiBlbGVtZW50
IHVzaW5nIGBhcmdzLi4uYCBpbiB0aGUgaW5saW5lZCB2ZWN0b3IgYXQKKyAgLy8gYHBvc2AsIHJl
dHVybmluZyBhbiBgaXRlcmF0b3JgIHBvaW50aW5nIHRvIHRoZSBuZXdseSBlbXBsYWNlZCBlbGVt
ZW50LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgaXRlcmF0b3IgZW1wbGFjZShj
b25zdF9pdGVyYXRvciBwb3MsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgYXNzZXJ0KHBvcyA+PSBi
ZWdpbigpKTsKKyAgICBhc3NlcnQocG9zIDw9IGVuZCgpKTsKIAotICAgIHJldHVybiBuZXdfZWxl
bWVudDsKKyAgICB2YWx1ZV90eXBlIGRlYWxpYXMoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKKyAgICByZXR1cm4gc3RvcmFnZV8uSW5zZXJ0KHBvcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdG9yVmFsdWVBZGFwdGVyPE1vdmVJdGVyYXRvcj4oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTW92ZUl0ZXJhdG9yKHN0ZDo6YWRkcmVzc29mKGRlYWxpYXMpKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKICAgfQogCi0gIHZvaWQgSW5pdEFzc2ln
bihzaXplX3R5cGUgbik7Ci0gIHZvaWQgSW5pdEFzc2lnbihzaXplX3R5cGUgbiwgY29uc3QgdmFs
dWVfdHlwZSYgdCk7Ci0KKyAgLy8gYElubGluZWRWZWN0b3I6OmVtcGxhY2VfYmFjayguLi4pYAor
ICAvLworICAvLyBDb25zdHJ1Y3RzIGFuZCBpbnNlcnRzIGFuIGVsZW1lbnQgdXNpbmcgYGFyZ3Mu
Li5gIGluIHRoZSBpbmxpbmVkIHZlY3RvciBhdAorICAvLyBgZW5kKClgLCByZXR1cm5pbmcgYSBg
cmVmZXJlbmNlYCB0byB0aGUgbmV3bHkgZW1wbGFjZWQgZWxlbWVudC4KICAgdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+Ci0gIHZhbHVlX3R5cGUmIENvbnN0cnVjdChwb2ludGVyIHAsIEFyZ3Mm
Ji4uLiBhcmdzKSB7Ci0gICAgQWxsb2NhdG9yVHJhaXRzOjpjb25zdHJ1Y3QoYWxsb2NhdG9yKCks
IHAsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgcmV0dXJuICpwOworICByZWZl
cmVuY2UgZW1wbGFjZV9iYWNrKEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIHN0b3JhZ2Vf
LkVtcGxhY2VCYWNrKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgIH0KIAotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSXRlcj4KLSAgdm9pZCBVbmluaXRpYWxpemVkQ29weShJdGVyIHNyYywg
SXRlciBzcmNfbGFzdCwgdmFsdWVfdHlwZSogZHN0KSB7Ci0gICAgZm9yICg7IHNyYyAhPSBzcmNf
bGFzdDsgKytkc3QsICsrc3JjKSBDb25zdHJ1Y3QoZHN0LCAqc3JjKTsKKyAgLy8gYElubGluZWRW
ZWN0b3I6OnB1c2hfYmFjayguLi4pYAorICAvLworICAvLyBJbnNlcnRzIGEgY29weSBvZiBgdmAg
aW4gdGhlIGlubGluZWQgdmVjdG9yIGF0IGBlbmQoKWAuCisgIHZvaWQgcHVzaF9iYWNrKGNvbnN0
X3JlZmVyZW5jZSB2KSB7IHN0YXRpY19jYXN0PHZvaWQ+KGVtcGxhY2VfYmFjayh2KSk7IH0KKwor
ICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6cHVzaF9iYWNrKC4uLilgIGZvciBpbnNl
cnRpbmcgYHZgIGF0IGBlbmQoKWAKKyAgLy8gdXNpbmcgbW92ZSBzZW1hbnRpY3MuCisgIHZvaWQg
cHVzaF9iYWNrKHJ2YWx1ZV9yZWZlcmVuY2UgdikgeworICAgIHN0YXRpY19jYXN0PHZvaWQ+KGVt
cGxhY2VfYmFjayhzdGQ6Om1vdmUodikpKTsKICAgfQogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgotICB2b2lkIFVuaW5pdGlhbGl6ZWRGaWxsKHZhbHVlX3R5cGUqIGRzdCwgdmFsdWVf
dHlwZSogZHN0X2xhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXJncyYuLi4g
YXJncykgewotICAgIGZvciAoOyBkc3QgIT0gZHN0X2xhc3Q7ICsrZHN0KSBDb25zdHJ1Y3QoZHN0
LCBhcmdzLi4uKTsKKyAgLy8gYElubGluZWRWZWN0b3I6OnBvcF9iYWNrKClgCisgIC8vCisgIC8v
IERlc3Ryb3lzIHRoZSBlbGVtZW50IGF0IGBiYWNrKClgLCByZWR1Y2luZyB0aGUgc2l6ZSBieSBg
MWAuCisgIHZvaWQgcG9wX2JhY2soKSBub2V4Y2VwdCB7CisgICAgYXNzZXJ0KCFlbXB0eSgpKTsK
KworICAgIEFsbG9jYXRvclRyYWl0czo6ZGVzdHJveSgqc3RvcmFnZV8uR2V0QWxsb2NQdHIoKSwg
ZGF0YSgpICsgKHNpemUoKSAtIDEpKTsKKyAgICBzdG9yYWdlXy5TdWJ0cmFjdFNpemUoMSk7CiAg
IH0KIAotICAvLyBEZXN0cm95IFtwdHIsIHB0cl9sYXN0KSBpbiBwbGFjZS4KLSAgdm9pZCBEZXN0
cm95KHZhbHVlX3R5cGUqIHB0ciwgdmFsdWVfdHlwZSogcHRyX2xhc3QpOworICAvLyBgSW5saW5l
ZFZlY3Rvcjo6ZXJhc2UoLi4uKWAKKyAgLy8KKyAgLy8gRXJhc2VzIHRoZSBlbGVtZW50IGF0IGBw
b3NgLCByZXR1cm5pbmcgYW4gYGl0ZXJhdG9yYCBwb2ludGluZyB0byB3aGVyZSB0aGUKKyAgLy8g
ZXJhc2VkIGVsZW1lbnQgd2FzIGxvY2F0ZWQuCisgIC8vCisgIC8vIE5PVEU6IG1heSByZXR1cm4g
YGVuZCgpYCwgd2hpY2ggaXMgbm90IGRlcmVmZXJlbmNhYmxlLgorICBpdGVyYXRvciBlcmFzZShj
b25zdF9pdGVyYXRvciBwb3MpIHsKKyAgICBhc3NlcnQocG9zID49IGJlZ2luKCkpOworICAgIGFz
c2VydChwb3MgPCBlbmQoKSk7CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXI+Ci0gIHZvaWQg
QXBwZW5kUmFuZ2UoSXRlciBmaXJzdCwgSXRlciBsYXN0LCBzdGQ6OmlucHV0X2l0ZXJhdG9yX3Rh
ZykgewotICAgIHN0ZDo6Y29weShmaXJzdCwgbGFzdCwgc3RkOjpiYWNrX2luc2VydGVyKCp0aGlz
KSk7CisgICAgcmV0dXJuIHN0b3JhZ2VfLkVyYXNlKHBvcywgcG9zICsgMSk7CiAgIH0KIAotICAv
LyBGYXN0ZXIgcGF0aCBmb3IgZm9yd2FyZCBpdGVyYXRvcnMuCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBJdGVyPgotICB2b2lkIEFwcGVuZFJhbmdlKEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCwgc3RkOjpm
b3J3YXJkX2l0ZXJhdG9yX3RhZyk7CisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjpl
cmFzZSguLi4pYCB0aGF0IGVyYXNlcyBldmVyeSBlbGVtZW50IGluIHRoZQorICAvLyByYW5nZSBb
YGZyb21gLCBgdG9gKSwgcmV0dXJuaW5nIGFuIGBpdGVyYXRvcmAgcG9pbnRpbmcgdG8gd2hlcmUg
dGhlIGZpcnN0CisgIC8vIGVyYXNlZCBlbGVtZW50IHdhcyBsb2NhdGVkLgorICAvLworICAvLyBO
T1RFOiBtYXkgcmV0dXJuIGBlbmQoKWAsIHdoaWNoIGlzIG5vdCBkZXJlZmVyZW5jYWJsZS4KKyAg
aXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZnJvbSwgY29uc3RfaXRlcmF0b3IgdG8pIHsK
KyAgICBhc3NlcnQoZnJvbSA+PSBiZWdpbigpKTsKKyAgICBhc3NlcnQoZnJvbSA8PSB0byk7Cisg
ICAgYXNzZXJ0KHRvIDw9IGVuZCgpKTsKIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KLSAg
dm9pZCBBcHBlbmRSYW5nZShJdGVyIGZpcnN0LCBJdGVyIGxhc3QpIHsKLSAgICB1c2luZyBJdGVy
VGFnID0gdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcj46Oml0ZXJhdG9yX2NhdGVn
b3J5OwotICAgIEFwcGVuZFJhbmdlKGZpcnN0LCBsYXN0LCBJdGVyVGFnKCkpOworICAgIGlmIChB
QlNMX1BSRURJQ1RfVFJVRShmcm9tICE9IHRvKSkgeworICAgICAgcmV0dXJuIHN0b3JhZ2VfLkVy
YXNlKGZyb20sIHRvKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8aXRl
cmF0b3I+KGZyb20pOworICAgIH0KICAgfQogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgot
ICB2b2lkIEFzc2lnblJhbmdlKEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCwgc3RkOjppbnB1dF9pdGVy
YXRvcl90YWcpOworICAvLyBgSW5saW5lZFZlY3Rvcjo6Y2xlYXIoKWAKKyAgLy8KKyAgLy8gRGVz
dHJveXMgYWxsIGVsZW1lbnRzIGluIHRoZSBpbmxpbmVkIHZlY3Rvciwgc2V0dGluZyB0aGUgc2l6
ZSB0byBgMGAgYW5kCisgIC8vIGRlYWxsb2NhdGluZyBhbnkgaGVsZCBtZW1vcnkuCisgIHZvaWQg
Y2xlYXIoKSBub2V4Y2VwdCB7CisgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkRlc3Ryb3lF
bGVtZW50cyhzdG9yYWdlXy5HZXRBbGxvY1B0cigpLCBkYXRhKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplKCkpOworICAgIHN0b3JhZ2VfLkRlYWxs
b2NhdGVJZkFsbG9jYXRlZCgpOworICAgIHN0b3JhZ2VfLlNldElubGluZWRTaXplKDApOworICB9
CiAKLSAgLy8gRmFzdGVyIHBhdGggZm9yIGZvcndhcmQgaXRlcmF0b3JzLgotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSXRlcj4KLSAgdm9pZCBBc3NpZ25SYW5nZShJdGVyIGZpcnN0LCBJdGVyIGxhc3Qs
IHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpOworICAvLyBgSW5saW5lZFZlY3Rvcjo6cmVzZXJ2
ZSguLi4pYAorICAvLworICAvLyBFbnN1cmVzIHRoYXQgdGhlcmUgaXMgZW5vdWdoIHJvb20gZm9y
IGF0IGxlYXN0IGBuYCBlbGVtZW50cy4KKyAgdm9pZCByZXNlcnZlKHNpemVfdHlwZSBuKSB7IHN0
b3JhZ2VfLlJlc2VydmUobik7IH0KKworICAvLyBgSW5saW5lZFZlY3Rvcjo6c2hyaW5rX3RvX2Zp
dCgpYAorICAvLworICAvLyBSZWR1Y2VzIG1lbW9yeSB1c2FnZSBieSBmcmVlaW5nIHVudXNlZCBt
ZW1vcnkuIEFmdGVyIGJlaW5nIGNhbGxlZCwgY2FsbHMgdG8KKyAgLy8gYGNhcGFjaXR5KClgIHdp
bGwgYmUgZXF1YWwgdG8gYG1heChOLCBzaXplKCkpYC4KKyAgLy8KKyAgLy8gSWYgYHNpemUoKSA8
PSBOYCBhbmQgdGhlIGlubGluZWQgdmVjdG9yIGNvbnRhaW5zIGFsbG9jYXRlZCBtZW1vcnksIHRo
ZQorICAvLyBlbGVtZW50cyB3aWxsIGFsbCBiZSBtb3ZlZCB0byB0aGUgaW5saW5lZCBzcGFjZSBh
bmQgdGhlIGFsbG9jYXRlZCBtZW1vcnkKKyAgLy8gd2lsbCBiZSBkZWFsbG9jYXRlZC4KKyAgLy8K
KyAgLy8gSWYgYHNpemUoKSA+IE5gIGFuZCBgc2l6ZSgpIDwgY2FwYWNpdHkoKWAsIHRoZSBlbGVt
ZW50cyB3aWxsIGJlIG1vdmVkIHRvIGEKKyAgLy8gc21hbGxlciBhbGxvY2F0aW9uLgorICB2b2lk
IHNocmlua190b19maXQoKSB7CisgICAgaWYgKHN0b3JhZ2VfLkdldElzQWxsb2NhdGVkKCkpIHsK
KyAgICAgIHN0b3JhZ2VfLlNocmlua1RvRml0KCk7CisgICAgfQorICB9CiAKLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIEl0ZXI+Ci0gIHZvaWQgQXNzaWduUmFuZ2UoSXRlciBmaXJzdCwgSXRlciBsYXN0
KSB7Ci0gICAgdXNpbmcgSXRlclRhZyA9IHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0
ZXI+OjppdGVyYXRvcl9jYXRlZ29yeTsKLSAgICBBc3NpZ25SYW5nZShmaXJzdCwgbGFzdCwgSXRl
clRhZygpKTsKKyAgLy8gYElubGluZWRWZWN0b3I6OnN3YXAoLi4uKWAKKyAgLy8KKyAgLy8gU3dh
cHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBpbmxpbmVkIHZlY3RvciB3aXRoIGBvdGhlcmAuCisgIHZv
aWQgc3dhcChJbmxpbmVkVmVjdG9yJiBvdGhlcikgeworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJV
RSh0aGlzICE9IHN0ZDo6YWRkcmVzc29mKG90aGVyKSkpIHsKKyAgICAgIHN0b3JhZ2VfLlN3YXAo
c3RkOjphZGRyZXNzb2Yob3RoZXIuc3RvcmFnZV8pKTsKKyAgICB9CiAgIH0KIAotICBpdGVyYXRv
ciBJbnNlcnRXaXRoQ291bnQoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIHNpemVfdHlwZSBuLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSYgdik7Ci0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcj4KLSAgaXRlcmF0b3IgSW5zZXJ0V2l0aFJhbmdlKGNv
bnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBJbnB1dEl0ZXIgZmlyc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnB1dEl0ZXIgbGFzdCwgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcpOwotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXI+Ci0gIGl0ZXJhdG9yIEluc2VydFdpdGhSYW5n
ZShjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwgRm9yd2FyZEl0ZXIgZmlyc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlciBsYXN0LCBzdGQ6OmZvcndhcmRfaXRlcmF0b3Jf
dGFnKTsKLQotICBBbGxvY2F0b3JBbmRUYWcgYWxsb2NhdG9yX2FuZF90YWdfOwotCi0gIC8vIEVp
dGhlciB0aGUgaW5saW5lZCBvciBhbGxvY2F0ZWQgcmVwcmVzZW50YXRpb24KLSAgdW5pb24gUmVw
IHsKLSAgICAvLyBVc2Ugc3RydWN0IHRvIHBlcmZvcm0gaW5kaXJlY3Rpb24gdGhhdCBzb2x2ZXMg
YSBiaXphcnJlIGNvbXBpbGF0aW9uCi0gICAgLy8gZXJyb3Igb24gVmlzdWFsIFN0dWRpbyAoYWxs
IGtub3duIHZlcnNpb25zKS4KLSAgICBzdHJ1Y3QgewotICAgICAgdHlwZW5hbWUgc3RkOjphbGln
bmVkX3N0b3JhZ2U8c2l6ZW9mKHZhbHVlX3R5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWxpZ25vZih2YWx1ZV90eXBlKT46OnR5cGUgaW5saW5lZFtOXTsKLSAgICB9
IGlubGluZWRfc3RvcmFnZTsKLSAgICBzdHJ1Y3QgewotICAgICAgdHlwZW5hbWUgc3RkOjphbGln
bmVkX3N0b3JhZ2U8c2l6ZW9mKEFsbG9jYXRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWxpZ25vZihBbGxvY2F0aW9uKT46OnR5cGUgYWxsb2NhdGlvbjsKLSAgICB9
IGFsbG9jYXRpb25fc3RvcmFnZTsKLSAgfSByZXBfOworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBILCB0eXBlbmFtZSBUaGVULCBzaXplX3QgVGhlTiwgdHlwZW5hbWUgVGhlQT4KKyAg
ZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIGNvbnN0IGFic2w6OklubGluZWRWZWN0b3I8VGhl
VCwgVGhlTiwgVGhlQT4mIGEpOworCisgIFN0b3JhZ2Ugc3RvcmFnZV87CiB9OwogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogLy8gSW5saW5lZFZlY3RvciBOb24tTWVtYmVyIEZ1bmN0aW9ucwog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8gc3dhcCgpCisvLyBgc3dhcCguLi4pYAogLy8K
LS8vIFN3YXBzIHRoZSBjb250ZW50cyBvZiB0d28gaW5saW5lZCB2ZWN0b3JzLiBUaGlzIGNvbnZl
bmllbmNlIGZ1bmN0aW9uCi0vLyBzaW1wbHkgY2FsbHMgSW5saW5lZFZlY3Rvcjo6c3dhcChvdGhl
cl9pbmxpbmVkX3ZlY3RvcikuCisvLyBTd2FwcyB0aGUgY29udGVudHMgb2YgdHdvIGlubGluZWQg
dmVjdG9ycy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLXZv
aWQgc3dhcChJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBhLAotICAgICAgICAgIElubGluZWRWZWN0
b3I8VCwgTiwgQT4mIGIpIG5vZXhjZXB0KG5vZXhjZXB0KGEuc3dhcChiKSkpIHsKK3ZvaWQgc3dh
cChhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBhLAorICAgICAgICAgIGFic2w6OklubGlu
ZWRWZWN0b3I8VCwgTiwgQT4mIGIpIG5vZXhjZXB0KG5vZXhjZXB0KGEuc3dhcChiKSkpIHsKICAg
YS5zd2FwKGIpOwogfQogCi0vLyBvcGVyYXRvcj09KCkKKy8vIGBvcGVyYXRvcj09KC4uLilgCiAv
LwotLy8gVGVzdHMgdGhlIGVxdWl2YWxlbmN5IG9mIHRoZSBjb250ZW50cyBvZiB0d28gaW5saW5l
ZCB2ZWN0b3JzLgorLy8gVGVzdHMgZm9yIHZhbHVlLWVxdWFsaXR5IG9mIHR3byBpbmxpbmVkIHZl
Y3RvcnMuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1ib29s
IG9wZXJhdG9yPT0oY29uc3QgSW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYSwKLSAgICAgICAgICAg
ICAgICBjb25zdCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBiKSB7Ci0gIHJldHVybiBhYnNsOjpl
cXVhbChhLmJlZ2luKCksIGEuZW5kKCksIGIuYmVnaW4oKSwgYi5lbmQoKSk7Citib29sIG9wZXJh
dG9yPT0oY29uc3QgYWJzbDo6SW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYSwKKyAgICAgICAgICAg
ICAgICBjb25zdCBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBiKSB7CisgIGF1dG8gYV9k
YXRhID0gYS5kYXRhKCk7CisgIGF1dG8gYl9kYXRhID0gYi5kYXRhKCk7CisgIHJldHVybiBhYnNs
OjplcXVhbChhX2RhdGEsIGFfZGF0YSArIGEuc2l6ZSgpLCBiX2RhdGEsIGJfZGF0YSArIGIuc2l6
ZSgpKTsKIH0KIAotLy8gb3BlcmF0b3IhPSgpCisvLyBgb3BlcmF0b3IhPSguLi4pYAogLy8KLS8v
IFRlc3RzIHRoZSBpbmVxdWFsaXR5IG9mIHRoZSBjb250ZW50cyBvZiB0d28gaW5saW5lZCB2ZWN0
b3JzLgorLy8gVGVzdHMgZm9yIHZhbHVlLWluZXF1YWxpdHkgb2YgdHdvIGlubGluZWQgdmVjdG9y
cy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLWJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBhLAotICAgICAgICAgICAgICAg
IGNvbnN0IElubGluZWRWZWN0b3I8VCwgTiwgQT4mIGIpIHsKK2Jvb2wgb3BlcmF0b3IhPShjb25z
dCBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBhLAorICAgICAgICAgICAgICAgIGNvbnN0
IGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4mIGIpIHsKICAgcmV0dXJuICEoYSA9PSBiKTsK
IH0KIAotLy8gb3BlcmF0b3I8KCkKKy8vIGBvcGVyYXRvcjwoLi4uKWAKIC8vCi0vLyBUZXN0cyB3
aGV0aGVyIHRoZSBjb250ZW50cyBvZiBvbmUgaW5saW5lZCB2ZWN0b3IgYXJlIGxlc3MgdGhhbiB0
aGUgY29udGVudHMKLS8vIG9mIGFub3RoZXIgdGhyb3VnaCBhIGxleGljb2dyYXBoaWNhbCBjb21w
YXJpc29uIG9wZXJhdGlvbi4KKy8vIFRlc3RzIHdoZXRoZXIgdGhlIHZhbHVlIG9mIGFuIGlubGlu
ZWQgdmVjdG9yIGlzIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YKKy8vIGFub3RoZXIgaW5saW5lZCB2
ZWN0b3IgdXNpbmcgYSBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBhbGdvcml0aG0uCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1ib29sIG9wZXJhdG9yPChj
b25zdCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBhLAotICAgICAgICAgICAgICAgY29uc3QgSW5s
aW5lZFZlY3RvcjxULCBOLCBBPiYgYikgewotICByZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxf
Y29tcGFyZShhLmJlZ2luKCksIGEuZW5kKCksIGIuYmVnaW4oKSwgYi5lbmQoKSk7Citib29sIG9w
ZXJhdG9yPChjb25zdCBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBhLAorICAgICAgICAg
ICAgICAgY29uc3QgYWJzbDo6SW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYikgeworICBhdXRvIGFf
ZGF0YSA9IGEuZGF0YSgpOworICBhdXRvIGJfZGF0YSA9IGIuZGF0YSgpOworICByZXR1cm4gc3Rk
OjpsZXhpY29ncmFwaGljYWxfY29tcGFyZShhX2RhdGEsIGFfZGF0YSArIGEuc2l6ZSgpLCBiX2Rh
dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJfZGF0YSArIGIuc2l6
ZSgpKTsKIH0KIAotLy8gb3BlcmF0b3I+KCkKKy8vIGBvcGVyYXRvcj4oLi4uKWAKIC8vCi0vLyBU
ZXN0cyB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiBvbmUgaW5saW5lZCB2ZWN0b3IgYXJlIGdyZWF0
ZXIgdGhhbiB0aGUKLS8vIGNvbnRlbnRzIG9mIGFub3RoZXIgdGhyb3VnaCBhIGxleGljb2dyYXBo
aWNhbCBjb21wYXJpc29uIG9wZXJhdGlvbi4KKy8vIFRlc3RzIHdoZXRoZXIgdGhlIHZhbHVlIG9m
IGFuIGlubGluZWQgdmVjdG9yIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgb2YKKy8vIGFub3Ro
ZXIgaW5saW5lZCB2ZWN0b3IgdXNpbmcgYSBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBhbGdv
cml0aG0uCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1ib29s
IG9wZXJhdG9yPihjb25zdCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBhLAotICAgICAgICAgICAg
ICAgY29uc3QgSW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYikgeworYm9vbCBvcGVyYXRvcj4oY29u
c3QgYWJzbDo6SW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYSwKKyAgICAgICAgICAgICAgIGNvbnN0
IGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4mIGIpIHsKICAgcmV0dXJuIGIgPCBhOwogfQog
Ci0vLyBvcGVyYXRvcjw9KCkKKy8vIGBvcGVyYXRvcjw9KC4uLilgCiAvLwotLy8gVGVzdHMgd2hl
dGhlciB0aGUgY29udGVudHMgb2Ygb25lIGlubGluZWQgdmVjdG9yIGFyZSBsZXNzIHRoYW4gb3Ig
ZXF1YWwgdG8KLS8vIHRoZSBjb250ZW50cyBvZiBhbm90aGVyIHRocm91Z2ggYSBsZXhpY29ncmFw
aGljYWwgY29tcGFyaXNvbiBvcGVyYXRpb24uCisvLyBUZXN0cyB3aGV0aGVyIHRoZSB2YWx1ZSBv
ZiBhbiBpbmxpbmVkIHZlY3RvciBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlCisvLyB2YWx1
ZSBvZiBhbm90aGVyIGlubGluZWQgdmVjdG9yIHVzaW5nIGEgbGV4aWNvZ3JhcGhpY2FsIGNvbXBh
cmlzb24gYWxnb3JpdGhtLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFt
ZSBBPgotYm9vbCBvcGVyYXRvcjw9KGNvbnN0IElubGluZWRWZWN0b3I8VCwgTiwgQT4mIGEsCi0g
ICAgICAgICAgICAgICAgY29uc3QgSW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYikgeworYm9vbCBv
cGVyYXRvcjw9KGNvbnN0IGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4mIGEsCisgICAgICAg
ICAgICAgICAgY29uc3QgYWJzbDo6SW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYikgewogICByZXR1
cm4gIShiIDwgYSk7CiB9CiAKLS8vIG9wZXJhdG9yPj0oKQorLy8gYG9wZXJhdG9yPj0oLi4uKWAK
IC8vCi0vLyBUZXN0cyB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiBvbmUgaW5saW5lZCB2ZWN0b3Ig
YXJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bwotLy8gdGhlIGNvbnRlbnRzIG9mIGFub3RoZXIg
dGhyb3VnaCBhIGxleGljb2dyYXBoaWNhbCBjb21wYXJpc29uIG9wZXJhdGlvbi4KKy8vIFRlc3Rz
IHdoZXRoZXIgdGhlIHZhbHVlIG9mIGFuIGlubGluZWQgdmVjdG9yIGlzIGdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCB0byB0aGUKKy8vIHZhbHVlIG9mIGFub3RoZXIgaW5saW5lZCB2ZWN0b3IgdXNpbmcg
YSBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBhbGdvcml0aG0uCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1ib29sIG9wZXJhdG9yPj0oY29uc3QgSW5saW5l
ZFZlY3RvcjxULCBOLCBBPiYgYSwKLSAgICAgICAgICAgICAgICBjb25zdCBJbmxpbmVkVmVjdG9y
PFQsIE4sIEE+JiBiKSB7Citib29sIG9wZXJhdG9yPj0oY29uc3QgYWJzbDo6SW5saW5lZFZlY3Rv
cjxULCBOLCBBPiYgYSwKKyAgICAgICAgICAgICAgICBjb25zdCBhYnNsOjpJbmxpbmVkVmVjdG9y
PFQsIE4sIEE+JiBiKSB7CiAgIHJldHVybiAhKGEgPCBiKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIEltcGxlbWVudGF0aW9uIG9mIElubGluZWRWZWN0b3IKLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyBgQWJzbEhhc2hWYWx1ZSguLi4pYAogLy8KLS8vIERvIG5vdCBkZXBl
bmQgb24gYW55IGltcGxlbWVudGF0aW9uIGRldGFpbHMgYmVsb3cgdGhpcyBsaW5lLgotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1JbmxpbmVkVmVjdG9yPFQs
IE4sIEE+OjpJbmxpbmVkVmVjdG9yKGNvbnN0IElubGluZWRWZWN0b3ImIHYpCi0gICAgOiBhbGxv
Y2F0b3JfYW5kX3RhZ18odi5hbGxvY2F0b3IoKSkgewotICByZXNlcnZlKHYuc2l6ZSgpKTsKLSAg
aWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgVW5pbml0aWFsaXplZENvcHkodi5iZWdpbigpLCB2LmVu
ZCgpLCBhbGxvY2F0ZWRfc3BhY2UoKSk7Ci0gICAgdGFnKCkuc2V0X2FsbG9jYXRlZF9zaXplKHYu
c2l6ZSgpKTsKLSAgfSBlbHNlIHsKLSAgICBVbmluaXRpYWxpemVkQ29weSh2LmJlZ2luKCksIHYu
ZW5kKCksIGlubGluZWRfc3BhY2UoKSk7Ci0gICAgdGFnKCkuc2V0X2lubGluZV9zaXplKHYuc2l6
ZSgpKTsKLSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1l
IEE+Ci1JbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJbmxpbmVkVmVjdG9yKGNvbnN0IElubGluZWRW
ZWN0b3ImIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFs
bG9jYXRvcl90eXBlJiBhbGxvYykKLSAgICA6IGFsbG9jYXRvcl9hbmRfdGFnXyhhbGxvYykgewot
ICByZXNlcnZlKHYuc2l6ZSgpKTsKLSAgaWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgVW5pbml0aWFs
aXplZENvcHkodi5iZWdpbigpLCB2LmVuZCgpLCBhbGxvY2F0ZWRfc3BhY2UoKSk7Ci0gICAgdGFn
KCkuc2V0X2FsbG9jYXRlZF9zaXplKHYuc2l6ZSgpKTsKLSAgfSBlbHNlIHsKLSAgICBVbmluaXRp
YWxpemVkQ29weSh2LmJlZ2luKCksIHYuZW5kKCksIGlubGluZWRfc3BhY2UoKSk7Ci0gICAgdGFn
KCkuc2V0X2lubGluZV9zaXplKHYuc2l6ZSgpKTsKLSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1JbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJbmxp
bmVkVmVjdG9yKElubGluZWRWZWN0b3ImJiB2KSBub2V4Y2VwdCgKLSAgICBhYnNsOjphbGxvY2F0
b3JfaXNfbm90aHJvdzxhbGxvY2F0b3JfdHlwZT46OnZhbHVlIHx8Ci0gICAgc3RkOjppc19ub3Ro
cm93X21vdmVfY29uc3RydWN0aWJsZTx2YWx1ZV90eXBlPjo6dmFsdWUpCi0gICAgOiBhbGxvY2F0
b3JfYW5kX3RhZ18odi5hbGxvY2F0b3JfYW5kX3RhZ18pIHsKLSAgaWYgKHYuYWxsb2NhdGVkKCkp
IHsKLSAgICAvLyBXZSBjYW4ganVzdCBzdGVhbCB0aGUgdW5kZXJseWluZyBidWZmZXIgZnJvbSB0
aGUgc291cmNlLgotICAgIC8vIFRoYXQgbGVhdmVzIHRoZSBzb3VyY2UgZW1wdHksIHNvIHdlIGNs
ZWFyIGl0cyBzaXplLgotICAgIGluaXRfYWxsb2NhdGlvbih2LmFsbG9jYXRpb24oKSk7Ci0gICAg
di50YWcoKSA9IFRhZygpOwotICB9IGVsc2UgewotICAgIFVuaW5pdGlhbGl6ZWRDb3B5KHN0ZDo6
bWFrZV9tb3ZlX2l0ZXJhdG9yKHYuaW5saW5lZF9zcGFjZSgpKSwKLSAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih2LmlubGluZWRfc3BhY2UoKSArIHYuc2l6ZSgp
KSwKLSAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVkX3NwYWNlKCkpOwotICB9Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLUlubGluZWRWZWN0b3I8
VCwgTiwgQT46OklubGluZWRWZWN0b3IoCi0gICAgSW5saW5lZFZlY3RvciYmIHYsCi0gICAgY29u
c3QgYWxsb2NhdG9yX3R5cGUmCi0gICAgICAgIGFsbG9jKSBub2V4Y2VwdChhYnNsOjphbGxvY2F0
b3JfaXNfbm90aHJvdzxhbGxvY2F0b3JfdHlwZT46OnZhbHVlKQotICAgIDogYWxsb2NhdG9yX2Fu
ZF90YWdfKGFsbG9jKSB7Ci0gIGlmICh2LmFsbG9jYXRlZCgpKSB7Ci0gICAgaWYgKGFsbG9jID09
IHYuYWxsb2NhdG9yKCkpIHsKLSAgICAgIC8vIFdlIGNhbiBqdXN0IHN0ZWFsIHRoZSBhbGxvY2F0
aW9uIGZyb20gdGhlIHNvdXJjZS4KLSAgICAgIHRhZygpID0gdi50YWcoKTsKLSAgICAgIGluaXRf
YWxsb2NhdGlvbih2LmFsbG9jYXRpb24oKSk7Ci0gICAgICB2LnRhZygpID0gVGFnKCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIG91ciBvd24gYWxsb2NhdG9yCi0gICAg
ICByZXNlcnZlKHYuc2l6ZSgpKTsKLSAgICAgIFVuaW5pdGlhbGl6ZWRDb3B5KHN0ZDo6bWFrZV9t
b3ZlX2l0ZXJhdG9yKHYuYmVnaW4oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1h
a2VfbW92ZV9pdGVyYXRvcih2LmVuZCgpKSwgYWxsb2NhdGVkX3NwYWNlKCkpOwotICAgICAgdGFn
KCkuc2V0X2FsbG9jYXRlZF9zaXplKHYuc2l6ZSgpKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAg
VW5pbml0aWFsaXplZENvcHkoc3RkOjptYWtlX21vdmVfaXRlcmF0b3Iodi5pbmxpbmVkX3NwYWNl
KCkpLAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKHYuaW5s
aW5lZF9zcGFjZSgpICsgdi5zaXplKCkpLAotICAgICAgICAgICAgICAgICAgICAgIGlubGluZWRf
c3BhY2UoKSk7Ci0gICAgdGFnKCkuc2V0X2lubGluZV9zaXplKHYuc2l6ZSgpKTsKLSAgfQotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci12b2lkIElubGlu
ZWRWZWN0b3I8VCwgTiwgQT46OkluaXRBc3NpZ24oc2l6ZV90eXBlIG4sIGNvbnN0IHZhbHVlX3R5
cGUmIHQpIHsKLSAgaWYgKG4gPiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KE4pKSB7Ci0gICAgQWxs
b2NhdGlvbiBuZXdfYWxsb2NhdGlvbihhbGxvY2F0b3IoKSwgbik7Ci0gICAgaW5pdF9hbGxvY2F0
aW9uKG5ld19hbGxvY2F0aW9uKTsKLSAgICBVbmluaXRpYWxpemVkRmlsbChhbGxvY2F0ZWRfc3Bh
Y2UoKSwgYWxsb2NhdGVkX3NwYWNlKCkgKyBuLCB0KTsKLSAgICB0YWcoKS5zZXRfYWxsb2NhdGVk
X3NpemUobik7Ci0gIH0gZWxzZSB7Ci0gICAgVW5pbml0aWFsaXplZEZpbGwoaW5saW5lZF9zcGFj
ZSgpLCBpbmxpbmVkX3NwYWNlKCkgKyBuLCB0KTsKLSAgICB0YWcoKS5zZXRfaW5saW5lX3NpemUo
bik7Ci0gIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBB
Pgotdm9pZCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJbml0QXNzaWduKHNpemVfdHlwZSBuKSB7
Ci0gIGlmIChuID4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihOKSkgewotICAgIEFsbG9jYXRpb24g
bmV3X2FsbG9jYXRpb24oYWxsb2NhdG9yKCksIG4pOwotICAgIGluaXRfYWxsb2NhdGlvbihuZXdf
YWxsb2NhdGlvbik7Ci0gICAgVW5pbml0aWFsaXplZEZpbGwoYWxsb2NhdGVkX3NwYWNlKCksIGFs
bG9jYXRlZF9zcGFjZSgpICsgbik7Ci0gICAgdGFnKCkuc2V0X2FsbG9jYXRlZF9zaXplKG4pOwot
ICB9IGVsc2UgewotICAgIFVuaW5pdGlhbGl6ZWRGaWxsKGlubGluZWRfc3BhY2UoKSwgaW5saW5l
ZF9zcGFjZSgpICsgbik7Ci0gICAgdGFnKCkuc2V0X2lubGluZV9zaXplKG4pOwotICB9Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLXZvaWQgSW5saW5l
ZFZlY3RvcjxULCBOLCBBPjo6cmVzaXplKHNpemVfdHlwZSBuKSB7Ci0gIHNpemVfdHlwZSBzID0g
c2l6ZSgpOwotICBpZiAobiA8IHMpIHsKLSAgICBlcmFzZShiZWdpbigpICsgbiwgZW5kKCkpOwot
ICAgIHJldHVybjsKLSAgfQotICByZXNlcnZlKG4pOwotICBhc3NlcnQoY2FwYWNpdHkoKSA+PSBu
KTsKLQotICAvLyBGaWxsIG5ldyBzcGFjZSB3aXRoIGVsZW1lbnRzIGNvbnN0cnVjdGVkIGluLXBs
YWNlLgotICBpZiAoYWxsb2NhdGVkKCkpIHsKLSAgICBVbmluaXRpYWxpemVkRmlsbChhbGxvY2F0
ZWRfc3BhY2UoKSArIHMsIGFsbG9jYXRlZF9zcGFjZSgpICsgbik7Ci0gICAgdGFnKCkuc2V0X2Fs
bG9jYXRlZF9zaXplKG4pOwotICB9IGVsc2UgewotICAgIFVuaW5pdGlhbGl6ZWRGaWxsKGlubGlu
ZWRfc3BhY2UoKSArIHMsIGlubGluZWRfc3BhY2UoKSArIG4pOwotICAgIHRhZygpLnNldF9pbmxp
bmVfc2l6ZShuKTsKLSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5
cGVuYW1lIEE+Ci12b2lkIElubGluZWRWZWN0b3I8VCwgTiwgQT46OnJlc2l6ZShzaXplX3R5cGUg
biwgY29uc3QgdmFsdWVfdHlwZSYgZWxlbSkgewotICBzaXplX3R5cGUgcyA9IHNpemUoKTsKLSAg
aWYgKG4gPCBzKSB7Ci0gICAgZXJhc2UoYmVnaW4oKSArIG4sIGVuZCgpKTsKLSAgICByZXR1cm47
Ci0gIH0KLSAgcmVzZXJ2ZShuKTsKLSAgYXNzZXJ0KGNhcGFjaXR5KCkgPj0gbik7Ci0KLSAgLy8g
RmlsbCBuZXcgc3BhY2Ugd2l0aCBjb3BpZXMgb2YgJ2VsZW0nLgotICBpZiAoYWxsb2NhdGVkKCkp
IHsKLSAgICBVbmluaXRpYWxpemVkRmlsbChhbGxvY2F0ZWRfc3BhY2UoKSArIHMsIGFsbG9jYXRl
ZF9zcGFjZSgpICsgbiwgZWxlbSk7Ci0gICAgdGFnKCkuc2V0X2FsbG9jYXRlZF9zaXplKG4pOwot
ICB9IGVsc2UgewotICAgIFVuaW5pdGlhbGl6ZWRGaWxsKGlubGluZWRfc3BhY2UoKSArIHMsIGlu
bGluZWRfc3BhY2UoKSArIG4sIGVsZW0pOwotICAgIHRhZygpLnNldF9pbmxpbmVfc2l6ZShuKTsK
LSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci10
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLXR5cGVuYW1lIElubGluZWRWZWN0b3I8VCwgTiwg
QT46Oml0ZXJhdG9yIElubGluZWRWZWN0b3I8VCwgTiwgQT46OmVtcGxhY2UoCi0gICAgY29uc3Rf
aXRlcmF0b3IgcG9zaXRpb24sIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gIGFzc2VydChwb3NpdGlvbiA+
PSBiZWdpbigpKTsKLSAgYXNzZXJ0KHBvc2l0aW9uIDw9IGVuZCgpKTsKLSAgaWYgKHBvc2l0aW9u
ID09IGVuZCgpKSB7Ci0gICAgZW1wbGFjZV9iYWNrKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7Ci0gICAgcmV0dXJuIGVuZCgpIC0gMTsKLSAgfQotCi0gIFQgbmV3X3QgPSBUKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7Ci0KLSAgYXV0byByYW5nZSA9IFNoaWZ0UmlnaHQocG9zaXRp
b24sIDEpOwotICBpZiAocmFuZ2UuZmlyc3QgPT0gcmFuZ2Uuc2Vjb25kKSB7Ci0gICAgLy8gY29u
c3RydWN0aW5nIGludG8gdW5pbml0aWFsaXplZCBtZW1vcnkKLSAgICBDb25zdHJ1Y3QocmFuZ2Uu
Zmlyc3QsIHN0ZDo6bW92ZShuZXdfdCkpOwotICB9IGVsc2UgewotICAgIC8vIGFzc2lnbmluZyBp
bnRvIG1vdmVkLWZyb20gb2JqZWN0Ci0gICAgKnJhbmdlLmZpcnN0ID0gVChzdGQ6Om1vdmUobmV3
X3QpKTsKLSAgfQotCi0gIHJldHVybiByYW5nZS5maXJzdDsKLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgotdHlwZW5hbWUgSW5saW5lZFZlY3RvcjxULCBO
LCBBPjo6aXRlcmF0b3IgSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6ZXJhc2UoCi0gICAgY29uc3Rf
aXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpIHsKLSAgYXNzZXJ0KGJlZ2luKCkg
PD0gZmlyc3QpOwotICBhc3NlcnQoZmlyc3QgPD0gbGFzdCk7Ci0gIGFzc2VydChsYXN0IDw9IGVu
ZCgpKTsKLQotICBpdGVyYXRvciByYW5nZV9zdGFydCA9IGNvbnN0X2Nhc3Q8aXRlcmF0b3I+KGZp
cnN0KTsKLSAgaXRlcmF0b3IgcmFuZ2VfZW5kID0gY29uc3RfY2FzdDxpdGVyYXRvcj4obGFzdCk7
Ci0KLSAgc2l6ZV90eXBlIHMgPSBzaXplKCk7Ci0gIHB0cmRpZmZfdCBlcmFzZV9nYXAgPSBzdGQ6
OmRpc3RhbmNlKHJhbmdlX3N0YXJ0LCByYW5nZV9lbmQpOwotICBpZiAoZXJhc2VfZ2FwID4gMCkg
ewotICAgIHBvaW50ZXIgc3BhY2U7Ci0gICAgaWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgICBzcGFj
ZSA9IGFsbG9jYXRlZF9zcGFjZSgpOwotICAgICAgdGFnKCkuc2V0X2FsbG9jYXRlZF9zaXplKHMg
LSBlcmFzZV9nYXApOwotICAgIH0gZWxzZSB7Ci0gICAgICBzcGFjZSA9IGlubGluZWRfc3BhY2Uo
KTsKLSAgICAgIHRhZygpLnNldF9pbmxpbmVfc2l6ZShzIC0gZXJhc2VfZ2FwKTsKLSAgICB9Ci0g
ICAgc3RkOjptb3ZlKHJhbmdlX2VuZCwgc3BhY2UgKyBzLCByYW5nZV9zdGFydCk7Ci0gICAgRGVz
dHJveShzcGFjZSArIHMgLSBlcmFzZV9nYXAsIHNwYWNlICsgcyk7Ci0gIH0KLSAgcmV0dXJuIHJh
bmdlX3N0YXJ0OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1l
IEE+Ci12b2lkIElubGluZWRWZWN0b3I8VCwgTiwgQT46OnN3YXAoSW5saW5lZFZlY3RvciYgb3Ro
ZXIpIHsKLSAgdXNpbmcgc3RkOjpzd2FwOyAgLy8gQXVnbWVudCBBREwgd2l0aCBzdGQ6OnN3YXAu
Ci0gIGlmICgmb3RoZXIgPT0gdGhpcykgewotICAgIHJldHVybjsKLSAgfQotICBpZiAoYWxsb2Nh
dGVkKCkgJiYgb3RoZXIuYWxsb2NhdGVkKCkpIHsKLSAgICAvLyBCb3RoIG91dCBvZiBsaW5lLCBz
byBqdXN0IHN3YXAgdGhlIHRhZywgYWxsb2NhdGlvbiwgYW5kIGFsbG9jYXRvci4KLSAgICBzd2Fw
KHRhZygpLCBvdGhlci50YWcoKSk7Ci0gICAgc3dhcChhbGxvY2F0aW9uKCksIG90aGVyLmFsbG9j
YXRpb24oKSk7Ci0gICAgc3dhcChhbGxvY2F0b3IoKSwgb3RoZXIuYWxsb2NhdG9yKCkpOwotICAg
IHJldHVybjsKLSAgfQotICBpZiAoIWFsbG9jYXRlZCgpICYmICFvdGhlci5hbGxvY2F0ZWQoKSkg
ewotICAgIC8vIEJvdGggaW5saW5lZDogc3dhcCB1cCB0byBzbWFsbGVyIHNpemUsIHRoZW4gbW92
ZSByZW1haW5pbmcgZWxlbWVudHMuCi0gICAgSW5saW5lZFZlY3RvciogYSA9IHRoaXM7Ci0gICAg
SW5saW5lZFZlY3RvciogYiA9ICZvdGhlcjsKLSAgICBpZiAoc2l6ZSgpIDwgb3RoZXIuc2l6ZSgp
KSB7Ci0gICAgICBzd2FwKGEsIGIpOwotICAgIH0KLQotICAgIGNvbnN0IHNpemVfdHlwZSBhX3Np
emUgPSBhLT5zaXplKCk7Ci0gICAgY29uc3Qgc2l6ZV90eXBlIGJfc2l6ZSA9IGItPnNpemUoKTsK
LSAgICBhc3NlcnQoYV9zaXplID49IGJfc2l6ZSk7Ci0gICAgLy8gJ2EnIGlzIGxhcmdlci4gU3dh
cCB0aGUgZWxlbWVudHMgdXAgdG8gdGhlIHNtYWxsZXIgYXJyYXkgc2l6ZS4KLSAgICBzdGQ6OnN3
YXBfcmFuZ2VzKGEtPmlubGluZWRfc3BhY2UoKSwgYS0+aW5saW5lZF9zcGFjZSgpICsgYl9zaXpl
LAotICAgICAgICAgICAgICAgICAgICAgYi0+aW5saW5lZF9zcGFjZSgpKTsKLQotICAgIC8vIE1v
dmUgdGhlIHJlbWFpbmluZyBlbGVtZW50czogQVtiX3NpemUsYV9zaXplKSAtPiBCW2Jfc2l6ZSxh
X3NpemUpCi0gICAgYi0+VW5pbml0aWFsaXplZENvcHkoYS0+aW5saW5lZF9zcGFjZSgpICsgYl9z
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgIGEtPmlubGluZWRfc3BhY2UoKSArIGFfc2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiLT5pbmxpbmVkX3NwYWNlKCkgKyBiX3NpemUp
OwotICAgIGEtPkRlc3Ryb3koYS0+aW5saW5lZF9zcGFjZSgpICsgYl9zaXplLCBhLT5pbmxpbmVk
X3NwYWNlKCkgKyBhX3NpemUpOwotCi0gICAgc3dhcChhLT50YWcoKSwgYi0+dGFnKCkpOwotICAg
IHN3YXAoYS0+YWxsb2NhdG9yKCksIGItPmFsbG9jYXRvcigpKTsKLSAgICBhc3NlcnQoYi0+c2l6
ZSgpID09IGFfc2l6ZSk7Ci0gICAgYXNzZXJ0KGEtPnNpemUoKSA9PSBiX3NpemUpOwotICAgIHJl
dHVybjsKLSAgfQotICAvLyBPbmUgaXMgb3V0IG9mIGxpbmUsIG9uZSBpcyBpbmxpbmUuCi0gIC8v
IFdlIGZpcnN0IG1vdmUgdGhlIGVsZW1lbnRzIGZyb20gdGhlIGlubGluZWQgdmVjdG9yIGludG8g
dGhlCi0gIC8vIGlubGluZWQgc3BhY2UgaW4gdGhlIG90aGVyIHZlY3Rvci4gIFdlIHRoZW4gcHV0
IHRoZSBvdGhlciB2ZWN0b3IncwotICAvLyBwb2ludGVyL2NhcGFjaXR5IGludG8gdGhlIG9yaWdp
bmFsbHkgaW5saW5lZCB2ZWN0b3IgYW5kIHN3YXAKLSAgLy8gdGhlIHRhZ3MuCi0gIElubGluZWRW
ZWN0b3IqIGEgPSB0aGlzOwotICBJbmxpbmVkVmVjdG9yKiBiID0gJm90aGVyOwotICBpZiAoYS0+
YWxsb2NhdGVkKCkpIHsKLSAgICBzd2FwKGEsIGIpOwotICB9Ci0gIGFzc2VydCghYS0+YWxsb2Nh
dGVkKCkpOwotICBhc3NlcnQoYi0+YWxsb2NhdGVkKCkpOwotICBjb25zdCBzaXplX3R5cGUgYV9z
aXplID0gYS0+c2l6ZSgpOwotICBjb25zdCBzaXplX3R5cGUgYl9zaXplID0gYi0+c2l6ZSgpOwot
ICAvLyBJbiBhbiBvcHRpbWl6ZWQgYnVpbGQsIGJfc2l6ZSB3b3VsZCBiZSB1bnVzZWQuCi0gICh2
b2lkKWJfc2l6ZTsKLQotICAvLyBNYWRlIExvY2FsIGNvcGllcyBvZiBzaXplKCksIGRvbid0IG5l
ZWQgdGFnKCkgYWNjdXJhdGUgYW55bW9yZQotICBzd2FwKGEtPnRhZygpLCBiLT50YWcoKSk7Ci0K
LSAgLy8gQ29weSBiX2FsbG9jYXRpb24gb3V0IGJlZm9yZSBiJ3MgdW5pb24gZ2V0cyBjbG9iYmVy
ZWQgYnkgaW5saW5lX3NwYWNlLgotICBBbGxvY2F0aW9uIGJfYWxsb2NhdGlvbiA9IGItPmFsbG9j
YXRpb24oKTsKLQotICBiLT5VbmluaXRpYWxpemVkQ29weShhLT5pbmxpbmVkX3NwYWNlKCksIGEt
PmlubGluZWRfc3BhY2UoKSArIGFfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgYi0+aW5s
aW5lZF9zcGFjZSgpKTsKLSAgYS0+RGVzdHJveShhLT5pbmxpbmVkX3NwYWNlKCksIGEtPmlubGlu
ZWRfc3BhY2UoKSArIGFfc2l6ZSk7Ci0KLSAgYS0+YWxsb2NhdGlvbigpID0gYl9hbGxvY2F0aW9u
OwotCi0gIGlmIChhLT5hbGxvY2F0b3IoKSAhPSBiLT5hbGxvY2F0b3IoKSkgewotICAgIHN3YXAo
YS0+YWxsb2NhdG9yKCksIGItPmFsbG9jYXRvcigpKTsKLSAgfQotCi0gIGFzc2VydChiLT5zaXpl
KCkgPT0gYV9zaXplKTsKLSAgYXNzZXJ0KGEtPnNpemUoKSA9PSBiX3NpemUpOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci12b2lkIElubGluZWRWZWN0
b3I8VCwgTiwgQT46OkVubGFyZ2VCeShzaXplX3R5cGUgZGVsdGEpIHsKLSAgY29uc3Qgc2l6ZV90
eXBlIHMgPSBzaXplKCk7Ci0gIGFzc2VydChzIDw9IGNhcGFjaXR5KCkpOwotCi0gIHNpemVfdHlw
ZSB0YXJnZXQgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxzaXplX3R5cGU+KE4pLCBzICsgZGVsdGEp
OwotCi0gIC8vIENvbXB1dGUgbmV3IGNhcGFjaXR5IGJ5IHJlcGVhdGVkbHkgZG91YmxpbmcgY3Vy
cmVudCBjYXBhY2l0eQotICAvLyBUT0RPKHBzcmMpOiBDaGVjayBhbmQgYXZvaWQgb3ZlcmZsb3c/
Ci0gIHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBjYXBhY2l0eSgpOwotICB3aGlsZSAobmV3X2Nh
cGFjaXR5IDwgdGFyZ2V0KSB7Ci0gICAgbmV3X2NhcGFjaXR5IDw8PSAxOwotICB9Ci0KLSAgQWxs
b2NhdGlvbiBuZXdfYWxsb2NhdGlvbihhbGxvY2F0b3IoKSwgbmV3X2NhcGFjaXR5KTsKLQotICBV
bmluaXRpYWxpemVkQ29weShzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihkYXRhKCkpLAotICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihkYXRhKCkgKyBzKSwKLSAgICAg
ICAgICAgICAgICAgICAgbmV3X2FsbG9jYXRpb24uYnVmZmVyKCkpOwotCi0gIFJlc2V0QWxsb2Nh
dGlvbihuZXdfYWxsb2NhdGlvbiwgcyk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgTiwgdHlwZW5hbWUgQT4KLWF1dG8gSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6U2hpZnRSaWdo
dChjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwgc2l6ZV90eXBlIG4pCi0gICAgLT4gc3RkOjpwYWly
PGl0ZXJhdG9yLCBpdGVyYXRvcj4gewotICBpdGVyYXRvciBzdGFydF91c2VkID0gY29uc3RfY2Fz
dDxpdGVyYXRvcj4ocG9zaXRpb24pOwotICBpdGVyYXRvciBzdGFydF9yYXcgPSBjb25zdF9jYXN0
PGl0ZXJhdG9yPihwb3NpdGlvbik7Ci0gIHNpemVfdHlwZSBzID0gc2l6ZSgpOwotICBzaXplX3R5
cGUgcmVxdWlyZWRfc2l6ZSA9IHMgKyBuOwotCi0gIGlmIChyZXF1aXJlZF9zaXplID4gY2FwYWNp
dHkoKSkgewotICAgIC8vIENvbXB1dGUgbmV3IGNhcGFjaXR5IGJ5IHJlcGVhdGVkbHkgZG91Ymxp
bmcgY3VycmVudCBjYXBhY2l0eQotICAgIHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBjYXBhY2l0
eSgpOwotICAgIHdoaWxlIChuZXdfY2FwYWNpdHkgPCByZXF1aXJlZF9zaXplKSB7Ci0gICAgICBu
ZXdfY2FwYWNpdHkgPDw9IDE7Ci0gICAgfQotICAgIC8vIE1vdmUgZXZlcnlvbmUgaW50byB0aGUg
bmV3IGFsbG9jYXRpb24sIGxlYXZpbmcgYSBnYXAgb2YgbiBmb3IgdGhlCi0gICAgLy8gcmVxdWVz
dGVkIHNoaWZ0LgotICAgIEFsbG9jYXRpb24gbmV3X2FsbG9jYXRpb24oYWxsb2NhdG9yKCksIG5l
d19jYXBhY2l0eSk7Ci0gICAgc2l6ZV90eXBlIGluZGV4ID0gcG9zaXRpb24gLSBiZWdpbigpOwot
ICAgIFVuaW5pdGlhbGl6ZWRDb3B5KHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKGRhdGEoKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX21vdmVfaXRlcmF0b3IoZGF0YSgpICsgaW5k
ZXgpLAotICAgICAgICAgICAgICAgICAgICAgIG5ld19hbGxvY2F0aW9uLmJ1ZmZlcigpKTsKLSAg
ICBVbmluaXRpYWxpemVkQ29weShzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihkYXRhKCkgKyBpbmRl
eCksCi0gICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX21vdmVfaXRlcmF0b3IoZGF0YSgp
ICsgcyksCi0gICAgICAgICAgICAgICAgICAgICAgbmV3X2FsbG9jYXRpb24uYnVmZmVyKCkgKyBp
bmRleCArIG4pOwotICAgIFJlc2V0QWxsb2NhdGlvbihuZXdfYWxsb2NhdGlvbiwgcyk7Ci0KLSAg
ICAvLyBOZXcgYWxsb2NhdGlvbiBtZWFucyBvdXIgaXRlcmF0b3IgaXMgaW52YWxpZCwgc28gd2Un
bGwgcmVjYWxjdWxhdGUuCi0gICAgLy8gU2luY2UgdGhlIGVudGlyZSBnYXAgaXMgaW4gbmV3IHNw
YWNlLCB0aGVyZSdzIG5vIHVzZWQgc3BhY2UgdG8gcmV1c2UuCi0gICAgc3RhcnRfcmF3ID0gYmVn
aW4oKSArIGluZGV4OwotICAgIHN0YXJ0X3VzZWQgPSBzdGFydF9yYXc7Ci0gIH0gZWxzZSB7Ci0g
ICAgLy8gSWYgd2UgaGFkIGVub3VnaCBzcGFjZSwgaXQncyBhIHR3by1wYXJ0IG1vdmUuIEVsZW1l
bnRzIGdvaW5nIGludG8KLSAgICAvLyBwcmV2aW91c2x5LXVub2NjdXBpZWQgc3BhY2UgbmVlZCBh
biBVbmluaXRpYWxpemVkQ29weS4gRWxlbWVudHMKLSAgICAvLyBnb2luZyBpbnRvIGEgcHJldmlv
dXNseS1vY2N1cGllZCBzcGFjZSBhcmUganVzdCBhIG1vdmUuCi0gICAgaXRlcmF0b3IgcG9zID0g
Y29uc3RfY2FzdDxpdGVyYXRvcj4ocG9zaXRpb24pOwotICAgIGl0ZXJhdG9yIHJhd19zcGFjZSA9
IGVuZCgpOwotICAgIHNpemVfdHlwZSBzbG90c19pbl91c2VkX3NwYWNlID0gcmF3X3NwYWNlIC0g
cG9zOwotICAgIHNpemVfdHlwZSBuZXdfZWxlbWVudHNfaW5fdXNlZF9zcGFjZSA9IHN0ZDo6bWlu
KG4sIHNsb3RzX2luX3VzZWRfc3BhY2UpOwotICAgIHNpemVfdHlwZSBuZXdfZWxlbWVudHNfaW5f
cmF3X3NwYWNlID0gbiAtIG5ld19lbGVtZW50c19pbl91c2VkX3NwYWNlOwotICAgIHNpemVfdHlw
ZSBvbGRfZWxlbWVudHNfaW5fdXNlZF9zcGFjZSA9Ci0gICAgICAgIHNsb3RzX2luX3VzZWRfc3Bh
Y2UgLSBuZXdfZWxlbWVudHNfaW5fdXNlZF9zcGFjZTsKLQotICAgIFVuaW5pdGlhbGl6ZWRDb3B5
KHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKHBvcyArIG9sZF9lbGVtZW50c19pbl91c2VkX3NwYWNl
KSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihyYXdfc3Bh
Y2UpLAotICAgICAgICAgICAgICAgICAgICAgIHJhd19zcGFjZSArIG5ld19lbGVtZW50c19pbl9y
YXdfc3BhY2UpOwotICAgIHN0ZDo6bW92ZV9iYWNrd2FyZChwb3MsIHBvcyArIG9sZF9lbGVtZW50
c19pbl91c2VkX3NwYWNlLCByYXdfc3BhY2UpOwotCi0gICAgLy8gSWYgdGhlIGdhcCBpcyBlbnRp
cmVseSBpbiByYXcgc3BhY2UsIHRoZSB1c2VkIHNwYWNlIHN0YXJ0cyB3aGVyZSB0aGUgcmF3Ci0g
ICAgLy8gc3BhY2Ugc3RhcnRzLCBsZWF2aW5nIG5vIGVsZW1lbnRzIGluIHVzZWQgc3BhY2UuIElm
IHRoZSBnYXAgaXMgZW50aXJlbHkKLSAgICAvLyBpbiB1c2VkIHNwYWNlLCB0aGUgcmF3IHNwYWNl
IHN0YXJ0cyBhdCB0aGUgZW5kIG9mIHRoZSBnYXAsIGxlYXZpbmcgYWxsCi0gICAgLy8gZWxlbWVu
dHMgYWNjb3VudGVkIGZvciB3aXRoaW4gdGhlIHVzZWQgc3BhY2UuCi0gICAgc3RhcnRfdXNlZCA9
IHBvczsKLSAgICBzdGFydF9yYXcgPSBwb3MgKyBuZXdfZWxlbWVudHNfaW5fdXNlZF9zcGFjZTsK
LSAgfQotICB0YWcoKS5hZGRfc2l6ZShuKTsKLSAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN0YXJ0
X3VzZWQsIHN0YXJ0X3Jhdyk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwg
dHlwZW5hbWUgQT4KLXZvaWQgSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6RGVzdHJveSh2YWx1ZV90
eXBlKiBwdHIsIHZhbHVlX3R5cGUqIHB0cl9sYXN0KSB7Ci0gIGZvciAodmFsdWVfdHlwZSogcCA9
IHB0cjsgcCAhPSBwdHJfbGFzdDsgKytwKSB7Ci0gICAgQWxsb2NhdG9yVHJhaXRzOjpkZXN0cm95
KGFsbG9jYXRvcigpLCBwKTsKLSAgfQotCi0gIC8vIE92ZXJ3cml0ZSB1bnVzZWQgbWVtb3J5IHdp
dGggMHhhYiBzbyB3ZSBjYW4gY2F0Y2ggdW5pbml0aWFsaXplZCB1c2FnZS4KLSAgLy8gQ2FzdCB0
byB2b2lkKiB0byB0ZWxsIHRoZSBjb21waWxlciB0aGF0IHdlIGRvbid0IGNhcmUgdGhhdCB3ZSBt
aWdodCBiZQotICAvLyBzY3JpYmJsaW5nIG9uIGEgdnRhYmxlIHBvaW50ZXIuCi0jaWZuZGVmIE5E
RUJVRwotICBpZiAocHRyICE9IHB0cl9sYXN0KSB7Ci0gICAgbWVtc2V0KHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHB0ciksIDB4YWIsIHNpemVvZigqcHRyKSAqIChwdHJfbGFzdCAtIHB0cikpOwot
ICB9Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFt
ZSBBPgotdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXI+Ci12b2lkIElubGluZWRWZWN0b3I8VCwgTiwg
QT46OkFwcGVuZFJhbmdlKEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZykgewotICB1
c2luZyBMZW5ndGggPSB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyPjo6ZGlmZmVy
ZW5jZV90eXBlOwotICBMZW5ndGggbGVuZ3RoID0gc3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCk7
Ci0gIHJlc2VydmUoc2l6ZSgpICsgbGVuZ3RoKTsKLSAgaWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAg
VW5pbml0aWFsaXplZENvcHkoZmlyc3QsIGxhc3QsIGFsbG9jYXRlZF9zcGFjZSgpICsgc2l6ZSgp
KTsKLSAgICB0YWcoKS5zZXRfYWxsb2NhdGVkX3NpemUoc2l6ZSgpICsgbGVuZ3RoKTsKLSAgfSBl
bHNlIHsKLSAgICBVbmluaXRpYWxpemVkQ29weShmaXJzdCwgbGFzdCwgaW5saW5lZF9zcGFjZSgp
ICsgc2l6ZSgpKTsKLSAgICB0YWcoKS5zZXRfaW5saW5lX3NpemUoc2l6ZSgpICsgbGVuZ3RoKTsK
LSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci10
ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KLXZvaWQgSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6QXNz
aWduUmFuZ2UoSXRlciBmaXJzdCwgSXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZykgewotICAvLyBPcHRpbWl6
ZWQgdG8gYXZvaWQgcmVhbGxvY2F0aW9uLgotICAvLyBQcmVmZXIgcmVhc3NpZ25tZW50IHRvIGNv
cHkgY29uc3RydWN0aW9uIGZvciBlbGVtZW50cy4KLSAgaXRlcmF0b3Igb3V0ID0gYmVnaW4oKTsK
LSAgZm9yICg7IGZpcnN0ICE9IGxhc3QgJiYgb3V0ICE9IGVuZCgpOyArK2ZpcnN0LCArK291dCkg
ewotICAgICpvdXQgPSAqZmlyc3Q7Ci0gIH0KLSAgZXJhc2Uob3V0LCBlbmQoKSk7Ci0gIHN0ZDo6
Y29weShmaXJzdCwgbGFzdCwgc3RkOjpiYWNrX2luc2VydGVyKCp0aGlzKSk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBJdGVyPgotdm9pZCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpBc3NpZ25SYW5nZShJdGVyIGZp
cnN0LCBJdGVyIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpIHsKLSAgdXNpbmcgTGVuZ3RoID0gdHlwZW5hbWUg
c3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcj46OmRpZmZlcmVuY2VfdHlwZTsKLSAgTGVuZ3RoIGxl
bmd0aCA9IHN0ZDo6ZGlzdGFuY2UoZmlyc3QsIGxhc3QpOwotICAvLyBQcmVmZXIgcmVhc3NpZ25t
ZW50IHRvIGNvcHkgY29uc3RydWN0aW9uIGZvciBlbGVtZW50cy4KLSAgaWYgKHN0YXRpY19jYXN0
PHNpemVfdHlwZT4obGVuZ3RoKSA8PSBzaXplKCkpIHsKLSAgICBlcmFzZShzdGQ6OmNvcHkoZmly
c3QsIGxhc3QsIGJlZ2luKCkpLCBlbmQoKSk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIHJlc2VydmUo
bGVuZ3RoKTsKLSAgaXRlcmF0b3Igb3V0ID0gYmVnaW4oKTsKLSAgZm9yICg7IG91dCAhPSBlbmQo
KTsgKytmaXJzdCwgKytvdXQpICpvdXQgPSAqZmlyc3Q7Ci0gIGlmIChhbGxvY2F0ZWQoKSkgewot
ICAgIFVuaW5pdGlhbGl6ZWRDb3B5KGZpcnN0LCBsYXN0LCBvdXQpOwotICAgIHRhZygpLnNldF9h
bGxvY2F0ZWRfc2l6ZShsZW5ndGgpOwotICB9IGVsc2UgewotICAgIFVuaW5pdGlhbGl6ZWRDb3B5
KGZpcnN0LCBsYXN0LCBvdXQpOwotICAgIHRhZygpLnNldF9pbmxpbmVfc2l6ZShsZW5ndGgpOwot
ICB9Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLWF1
dG8gSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6SW5zZXJ0V2l0aENvdW50KGNvbnN0X2l0ZXJhdG9y
IHBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90eXBlIG4sIGNvbnN0IHZhbHVlX3R5cGUmIHYpCi0gICAgLT4gaXRlcmF0b3IgewotICBh
c3NlcnQocG9zaXRpb24gPj0gYmVnaW4oKSAmJiBwb3NpdGlvbiA8PSBlbmQoKSk7Ci0gIGlmIChu
ID09IDApIHJldHVybiBjb25zdF9jYXN0PGl0ZXJhdG9yPihwb3NpdGlvbik7Ci0KLSAgdmFsdWVf
dHlwZSBjb3B5ID0gdjsKLSAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4gaXRfcGFpciA9
IFNoaWZ0UmlnaHQocG9zaXRpb24sIG4pOwotICBzdGQ6OmZpbGwoaXRfcGFpci5maXJzdCwgaXRf
cGFpci5zZWNvbmQsIGNvcHkpOwotICBVbmluaXRpYWxpemVkRmlsbChpdF9wYWlyLnNlY29uZCwg
aXRfcGFpci5maXJzdCArIG4sIGNvcHkpOwotCi0gIHJldHVybiBpdF9wYWlyLmZpcnN0OwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci10ZW1wbGF0ZSA8
dHlwZW5hbWUgSW5wdXRJdGVyPgotYXV0byBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJbnNlcnRX
aXRoUmFuZ2UoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXIgZmlyc3QsIElucHV0SXRlciBsYXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppbnB1dF9p
dGVyYXRvcl90YWcpCi0gICAgLT4gaXRlcmF0b3IgewotICBhc3NlcnQocG9zaXRpb24gPj0gYmVn
aW4oKSAmJiBwb3NpdGlvbiA8PSBlbmQoKSk7Ci0gIHNpemVfdHlwZSBpbmRleCA9IHBvc2l0aW9u
IC0gY2JlZ2luKCk7Ci0gIHNpemVfdHlwZSBpID0gaW5kZXg7Ci0gIHdoaWxlIChmaXJzdCAhPSBs
YXN0KSBpbnNlcnQoYmVnaW4oKSArIGkrKywgKmZpcnN0KyspOwotICByZXR1cm4gYmVnaW4oKSAr
IGluZGV4OwotfQotCi0vLyBPdmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjpJbnNlcnRXaXRoUmFu
Z2UoKQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgotdGVtcGxh
dGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyPgotYXV0byBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJ
bnNlcnRXaXRoUmFuZ2UoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlciBmaXJzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyIGxhc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRf
aXRlcmF0b3JfdGFnKQotICAgIC0+IGl0ZXJhdG9yIHsKLSAgYXNzZXJ0KHBvc2l0aW9uID49IGJl
Z2luKCkgJiYgcG9zaXRpb24gPD0gZW5kKCkpOwotICBpZiAoZmlyc3QgPT0gbGFzdCkgewotICAg
IHJldHVybiBjb25zdF9jYXN0PGl0ZXJhdG9yPihwb3NpdGlvbik7Ci0gIH0KLSAgdXNpbmcgTGVu
Z3RoID0gdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXI+OjpkaWZmZXJl
bmNlX3R5cGU7Ci0gIExlbmd0aCBuID0gc3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCk7Ci0gIHN0
ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+IGl0X3BhaXIgPSBTaGlmdFJpZ2h0KHBvc2l0aW9u
LCBuKTsKLSAgc2l6ZV90eXBlIHVzZWRfc3BvdHMgPSBpdF9wYWlyLnNlY29uZCAtIGl0X3BhaXIu
Zmlyc3Q7Ci0gIEZvcndhcmRJdGVyIG9wZW5fc3BvdCA9IHN0ZDo6bmV4dChmaXJzdCwgdXNlZF9z
cG90cyk7Ci0gIHN0ZDo6Y29weShmaXJzdCwgb3Blbl9zcG90LCBpdF9wYWlyLmZpcnN0KTsKLSAg
VW5pbml0aWFsaXplZENvcHkob3Blbl9zcG90LCBsYXN0LCBpdF9wYWlyLnNlY29uZCk7Ci0gIHJl
dHVybiBpdF9wYWlyLmZpcnN0OworLy8gUHJvdmlkZXMgYGFic2w6Okhhc2hgIHN1cHBvcnQgZm9y
IGBhYnNsOjpJbmxpbmVkVmVjdG9yYC4gSXQgaXMgdW5jb21tb24gdG8KKy8vIGNhbGwgdGhpcyBk
aXJlY3RseS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlw
ZW5hbWUgQT4KK0ggQWJzbEhhc2hWYWx1ZShIIGgsIGNvbnN0IGFic2w6OklubGluZWRWZWN0b3I8
VCwgTiwgQT4mIGEpIHsKKyAgYXV0byBzaXplID0gYS5zaXplKCk7CisgIHJldHVybiBIOjpjb21i
aW5lKEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1vdmUoaCksIGEuZGF0YSgpLCBzaXplKSwg
c2l6ZSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW5saW5lZF92ZWN0b3JfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGlu
ZWRfdmVjdG9yX2JlbmNobWFyay5jYwppbmRleCBhM2FkMGY4YWU0ZjFhMTYzYzdmMjMyOTMyZTQ2
YTM4ZWU0ZWE2NzBlLi5iOTliYmQ2MjU0NGY2NTY5ZTE4MGZmMTAyMGZkZDcwNmM3ZDFlNDhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfYmVuY2htYXJrLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl9iZW5jaG1hcmsuY2MKQEAgLTEsMTAg
KzEsMTAgQEAKLS8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vIENvcHly
aWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KIC8vCiAvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIC8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
IC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLApAQCAtMTIsMjggKzEyLDI1IEBACiAvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIAotI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
bGluZWRfdmVjdG9yLmgiCi0KKyNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYmVuY2htYXJrL2JlbmNobWFyay5oIgogI2lu
Y2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wv
YmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5o
IgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCiAKIG5hbWVzcGFjZSB7CiAKLXVz
aW5nIEludFZlYyA9IGFic2w6OklubGluZWRWZWN0b3I8aW50LCA4PjsKLQogdm9pZCBCTV9Jbmxp
bmVkVmVjdG9yRmlsbChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewotICBjb25zdCBpbnQgbGVu
ID0gc3RhdGUucmFuZ2UoMCk7CisgIGFic2w6OklubGluZWRWZWN0b3I8aW50LCA4PiB2OworICBp
bnQgdmFsID0gMTA7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBJbnRWZWMgdjsKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICB2LnB1c2hfYmFjayhpKTsK
LSAgICB9CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOworICAgIHYucHVzaF9iYWNr
KHZhbCk7CiAgIH0KLSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oc3RhdGUuaXRlcmF0aW9ucygpKSAqIGxlbik7CiB9CiBCRU5DSE1BUksoQk1fSW5saW5lZFZl
Y3RvckZpbGwpLT5SYW5nZSgwLCAxMDI0KTsKIApAQCAtNDMsMjMgKzQwLDI1IEBAIHZvaWQgQk1f
SW5saW5lZFZlY3RvckZpbGxSYW5nZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBmb3Ig
KGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgaWFbaV0gPSBpOwogICB9CisgIGF1dG8q
IGZyb20gPSBpYS5nZXQoKTsKKyAgYXV0byogdG8gPSBmcm9tICsgbGVuOwogICBmb3IgKGF1dG8g
XyA6IHN0YXRlKSB7Ci0gICAgSW50VmVjIHYoaWEuZ2V0KCksIGlhLmdldCgpICsgbGVuKTsKKyAg
ICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoZnJvbSk7CisgICAgYmVuY2htYXJrOjpEb05vdE9w
dGltaXplKHRvKTsKKyAgICBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgOD4gdihmcm9tLCB0byk7
CiAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOwogICB9Ci0gIHN0YXRlLlNldEl0ZW1z
UHJvY2Vzc2VkKHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRlLml0ZXJhdGlvbnMoKSkgKiBsZW4p
OwogfQogQkVOQ0hNQVJLKEJNX0lubGluZWRWZWN0b3JGaWxsUmFuZ2UpLT5SYW5nZSgwLCAxMDI0
KTsKIAogdm9pZCBCTV9TdGRWZWN0b3JGaWxsKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Ci0g
IGNvbnN0IGludCBsZW4gPSBzdGF0ZS5yYW5nZSgwKTsKKyAgc3RkOjp2ZWN0b3I8aW50PiB2Owor
ICBpbnQgdmFsID0gMTA7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBzdGQ6OnZlY3Rv
cjxpbnQ+IHY7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgdi5w
dXNoX2JhY2soaSk7Ci0gICAgfQorICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKKyAg
ICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodmFsKTsKKyAgICB2LnB1c2hfYmFjayh2YWwpOwog
ICB9Ci0gIHN0YXRlLlNldEl0ZW1zUHJvY2Vzc2VkKHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRl
Lml0ZXJhdGlvbnMoKSkgKiBsZW4pOwogfQogQkVOQ0hNQVJLKEJNX1N0ZFZlY3RvckZpbGwpLT5S
YW5nZSgwLCAxMDI0KTsKIApAQCAtODksNyArODgsNyBAQCB2b2lkIEJNX0lubGluZWRWZWN0b3JG
aWxsU3RyaW5nKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGNvbnN0IGludCBsZW4gPSBz
dGF0ZS5yYW5nZSgwKTsKICAgY29uc3QgaW50IG5vX3NzbyA9IEdldE5vblNob3J0U3RyaW5nT3B0
aW1pemF0aW9uU2l6ZSgpOwogICBzdGQ6OnN0cmluZyBzdHJpbmdzWzRdID0ge3N0ZDo6c3RyaW5n
KG5vX3NzbywgJ0EnKSwgc3RkOjpzdHJpbmcobm9fc3NvLCAnQicpLAotICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZyhub19zc28sICdDJyksIHN0ZDo6c3RyaW5nKG5vX3NzbywgJ0Qn
KX07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcobm9fc3NvLCAnQycp
LCBzdGQ6OnN0cmluZyhub19zc28sICdEJyl9OwogCiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsK
ICAgICBhYnNsOjpJbmxpbmVkVmVjdG9yPHN0ZDo6c3RyaW5nLCA4PiB2OwpAQCAtMTA1LDcgKzEw
NCw3IEBAIHZvaWQgQk1fU3RkVmVjdG9yRmlsbFN0cmluZyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0
ZSkgewogICBjb25zdCBpbnQgbGVuID0gc3RhdGUucmFuZ2UoMCk7CiAgIGNvbnN0IGludCBub19z
c28gPSBHZXROb25TaG9ydFN0cmluZ09wdGltaXphdGlvblNpemUoKTsKICAgc3RkOjpzdHJpbmcg
c3RyaW5nc1s0XSA9IHtzdGQ6OnN0cmluZyhub19zc28sICdBJyksIHN0ZDo6c3RyaW5nKG5vX3Nz
bywgJ0InKSwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcobm9fc3NvLCAnQycp
LCBzdGQ6OnN0cmluZyhub19zc28sICdEJyl9OworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKG5vX3NzbywgJ0MnKSwgc3RkOjpzdHJpbmcobm9fc3NvLCAnRCcpfTsKIAog
ICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHY7
CkBAIC0xMjQsNyArMTIzLDcgQEAgc3RydWN0IEJ1ZmZlciB7ICAvLyBzb21lIGFyYml0cmFyeSBz
dHJ1Y3R1cmUgZm9yIGJlbmNobWFya2luZy4KICAgdm9pZCogdXNlcl9kYXRhOwogfTsKIAotdm9p
ZCBCTV9JbmxpbmVkVmVjdG9yVGVuQXNzaWdubWVudHMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUp
IHsKK3ZvaWQgQk1fSW5saW5lZFZlY3RvckFzc2lnbm1lbnRzKGJlbmNobWFyazo6U3RhdGUmIHN0
YXRlKSB7CiAgIGNvbnN0IGludCBsZW4gPSBzdGF0ZS5yYW5nZSgwKTsKICAgdXNpbmcgQnVmZmVy
VmVjID0gYWJzbDo6SW5saW5lZFZlY3RvcjxCdWZmZXIsIDI+OwogCkBAIC0xMzMsMTggKzEzMiwy
NSBAQCB2b2lkIEJNX0lubGluZWRWZWN0b3JUZW5Bc3NpZ25tZW50cyhiZW5jaG1hcms6OlN0YXRl
JiBzdGF0ZSkgewogCiAgIEJ1ZmZlclZlYyBkc3Q7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsK
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICAgIGRzdCA9IHNyYzsKLSAg
ICB9CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGRzdCk7CisgICAgYmVuY2htYXJrOjpE
b05vdE9wdGltaXplKHNyYyk7CisgICAgZHN0ID0gc3JjOwogICB9CiB9Ci1CRU5DSE1BUksoQk1f
SW5saW5lZFZlY3RvclRlbkFzc2lnbm1lbnRzKQotICAgIC0+QXJnKDApLT5BcmcoMSktPkFyZygy
KS0+QXJnKDMpLT5BcmcoNCktPkFyZygyMCk7CitCRU5DSE1BUksoQk1fSW5saW5lZFZlY3RvckFz
c2lnbm1lbnRzKQorICAgIC0+QXJnKDApCisgICAgLT5BcmcoMSkKKyAgICAtPkFyZygyKQorICAg
IC0+QXJnKDMpCisgICAgLT5BcmcoNCkKKyAgICAtPkFyZygyMCk7CiAKIHZvaWQgQk1fQ3JlYXRl
RnJvbUNvbnRhaW5lcihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBmb3IgKGF1dG8gXyA6
IHN0YXRlKSB7Ci0gICAgYWJzbDo6SW5saW5lZFZlY3RvcjxpbnQsIDQ+IHgoYWJzbDo6SW5saW5l
ZFZlY3RvcjxpbnQsIDQ+ezEsIDIsIDN9KTsKLSAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUo
eCk7CisgICAgYWJzbDo6SW5saW5lZFZlY3RvcjxpbnQsIDQ+IHNyY3sxLCAyLCAzfTsKKyAgICBi
ZW5jaG1hcms6OkRvTm90T3B0aW1pemUoc3JjKTsKKyAgICBhYnNsOjpJbmxpbmVkVmVjdG9yPGlu
dCwgND4gZHN0KHN0ZDo6bW92ZShzcmMpKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUo
ZHN0KTsKICAgfQogfQogQkVOQ0hNQVJLKEJNX0NyZWF0ZUZyb21Db250YWluZXIpOwpAQCAtMTU5
LDE1ICsxNjUsMTQgQEAgc3RydWN0IExhcmdlQ29weWFibGVPbmx5IHsKIAogc3RydWN0IExhcmdl
Q29weWFibGVTd2FwcGFibGUgewogICBMYXJnZUNvcHlhYmxlU3dhcHBhYmxlKCkgOiBkKDEwMjQs
IDE3KSB7fQorCiAgIExhcmdlQ29weWFibGVTd2FwcGFibGUoY29uc3QgTGFyZ2VDb3B5YWJsZVN3
YXBwYWJsZSYgbykgPSBkZWZhdWx0OwotICBMYXJnZUNvcHlhYmxlU3dhcHBhYmxlKExhcmdlQ29w
eWFibGVTd2FwcGFibGUmJiBvKSA9IGRlbGV0ZTsKIAogICBMYXJnZUNvcHlhYmxlU3dhcHBhYmxl
JiBvcGVyYXRvcj0oTGFyZ2VDb3B5YWJsZVN3YXBwYWJsZSBvKSB7CiAgICAgdXNpbmcgc3RkOjpz
d2FwOwogICAgIHN3YXAoKnRoaXMsIG8pOwogICAgIHJldHVybiAqdGhpczsKICAgfQotICBMYXJn
ZUNvcHlhYmxlU3dhcHBhYmxlJiBvcGVyYXRvcj0oTGFyZ2VDb3B5YWJsZVN3YXBwYWJsZSYmIG8p
ID0gZGVsZXRlOwogCiAgIGZyaWVuZCB2b2lkIHN3YXAoTGFyZ2VDb3B5YWJsZVN3YXBwYWJsZSYg
YSwgTGFyZ2VDb3B5YWJsZVN3YXBwYWJsZSYgYikgewogICAgIHVzaW5nIHN0ZDo6c3dhcDsKQEAg
LTIxNSw2ICsyMjAsOCBAQCB2b2lkIEJNX1N3YXBFbGVtZW50cyhiZW5jaG1hcms6OlN0YXRlJiBz
dGF0ZSkgewogICBWZWMgYjsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewogICAgIHVzaW5nIHN0
ZDo6c3dhcDsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoYSk7CisgICAgYmVuY2htYXJr
OjpEb05vdE9wdGltaXplKGIpOwogICAgIHN3YXAoYSwgYik7CiAgIH0KIH0KQEAgLTI2MCw2MCAr
MjY3LDQ0IEBAIEJFTkNITUFSS19URU1QTEFURShCTV9TaXplb2YsIGFic2w6OklubGluZWRWZWN0
b3I8c3RkOjpzdHJpbmcsIDg+KTsKIHZvaWQgQk1fSW5saW5lZFZlY3RvckluZGV4SW5saW5lZChi
ZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgOD4g
diA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3fTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Ci0gICAgICBiZW5jaG1hcms6OkRvTm90
T3B0aW1pemUodik7Ci0gICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodls0XSk7Ci0gICAg
fQorICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKKyAgICBiZW5jaG1hcms6OkRvTm90
T3B0aW1pemUodls0XSk7CiAgIH0KLSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoMTAwMCAqIHN0
YXRpY19jYXN0PGludDY0X3Q+KHN0YXRlLml0ZXJhdGlvbnMoKSkpOwogfQogQkVOQ0hNQVJLKEJN
X0lubGluZWRWZWN0b3JJbmRleElubGluZWQpOwogCiB2b2lkIEJNX0lubGluZWRWZWN0b3JJbmRl
eEV4dGVybmFsKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGFic2w6OklubGluZWRWZWN0
b3I8aW50LCA4PiB2ID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwfTsKICAgZm9yIChh
dXRvIF8gOiBzdGF0ZSkgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Ci0g
ICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodik7Ci0gICAgICBiZW5jaG1hcms6OkRvTm90
T3B0aW1pemUodls0XSk7Ci0gICAgfQorICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsK
KyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodls0XSk7CiAgIH0KLSAgc3RhdGUuU2V0SXRl
bXNQcm9jZXNzZWQoMTAwMCAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRlLml0ZXJhdGlvbnMo
KSkpOwogfQogQkVOQ0hNQVJLKEJNX0lubGluZWRWZWN0b3JJbmRleEV4dGVybmFsKTsKIAogdm9p
ZCBCTV9TdGRWZWN0b3JJbmRleChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6OnZl
Y3RvcjxpbnQ+IHYgPSB7MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTB9OwogICBmb3IgKGF1
dG8gXyA6IHN0YXRlKSB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKLSAg
ICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKLSAgICAgIGJlbmNobWFyazo6RG9Ob3RP
cHRpbWl6ZSh2WzRdKTsKLSAgICB9CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOwor
ICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2WzRdKTsKICAgfQotICBzdGF0ZS5TZXRJdGVt
c1Byb2Nlc3NlZCgxMDAwICogc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9ucygp
KSk7CiB9CiBCRU5DSE1BUksoQk1fU3RkVmVjdG9ySW5kZXgpOwogCi0jZGVmaW5lIFVOUk9MTF8y
KHgpICAgICAgICAgICAgXAotICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoeCk7IFwKLSAgYmVu
Y2htYXJrOjpEb05vdE9wdGltaXplKHgpOwotCi0jZGVmaW5lIFVOUk9MTF80KHgpIFVOUk9MTF8y
KHgpIFVOUk9MTF8yKHgpCi0jZGVmaW5lIFVOUk9MTF84KHgpIFVOUk9MTF80KHgpIFVOUk9MTF80
KHgpCi0jZGVmaW5lIFVOUk9MTF8xNih4KSBVTlJPTExfOCh4KSBVTlJPTExfOCh4KTsKLQogdm9p
ZCBCTV9JbmxpbmVkVmVjdG9yRGF0YUlubGluZWQoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
ICAgYWJzbDo6SW5saW5lZFZlY3RvcjxpbnQsIDg+IHYgPSB7MSwgMiwgMywgNCwgNSwgNiwgN307
CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBVTlJPTExfMTYodi5kYXRhKCkpOworICAg
IGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1p
emUodi5kYXRhKCkpOwogICB9Ci0gIHN0YXRlLlNldEl0ZW1zUHJvY2Vzc2VkKDE2ICogc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9ucygpKSk7CiB9CiBCRU5DSE1BUksoQk1fSW5s
aW5lZFZlY3RvckRhdGFJbmxpbmVkKTsKIAogdm9pZCBCTV9JbmxpbmVkVmVjdG9yRGF0YUV4dGVy
bmFsKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGFic2w6OklubGluZWRWZWN0b3I8aW50
LCA4PiB2ID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwfTsKICAgZm9yIChhdXRvIF8g
OiBzdGF0ZSkgewotICAgIFVOUk9MTF8xNih2LmRhdGEoKSk7CisgICAgYmVuY2htYXJrOjpEb05v
dE9wdGltaXplKHYpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2LmRhdGEoKSk7CiAg
IH0KICAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoMTYgKiBzdGF0aWNfY2FzdDxpbnQ2NF90Pihz
dGF0ZS5pdGVyYXRpb25zKCkpKTsKIH0KQEAgLTMyMiw3ICszMTMsOCBAQCBCRU5DSE1BUksoQk1f
SW5saW5lZFZlY3RvckRhdGFFeHRlcm5hbCk7CiB2b2lkIEJNX1N0ZFZlY3RvckRhdGEoYmVuY2ht
YXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgc3RkOjp2ZWN0b3I8aW50PiB2ID0gezEsIDIsIDMsIDQs
IDUsIDYsIDcsIDgsIDksIDEwfTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIFVOUk9M
TF8xNih2LmRhdGEoKSk7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOworICAgIGJl
bmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2LmRhdGEoKSk7CiAgIH0KICAgc3RhdGUuU2V0SXRlbXNQ
cm9jZXNzZWQoMTYgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGF0ZS5pdGVyYXRpb25zKCkpKTsK
IH0KQEAgLTMzMSw1NSArMzIzLDQ4MiBAQCBCRU5DSE1BUksoQk1fU3RkVmVjdG9yRGF0YSk7CiB2
b2lkIEJNX0lubGluZWRWZWN0b3JTaXplSW5saW5lZChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkg
ewogICBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgOD4gdiA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3
fTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIFVOUk9MTF8xNih2LnNpemUoKSk7Cisg
ICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRp
bWl6ZSh2LnNpemUoKSk7CiAgIH0KLSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoMTYgKiBzdGF0
aWNfY2FzdDxpbnQ2NF90PihzdGF0ZS5pdGVyYXRpb25zKCkpKTsKIH0KIEJFTkNITUFSSyhCTV9J
bmxpbmVkVmVjdG9yU2l6ZUlubGluZWQpOwogCiB2b2lkIEJNX0lubGluZWRWZWN0b3JTaXplRXh0
ZXJuYWwoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgYWJzbDo6SW5saW5lZFZlY3Rvcjxp
bnQsIDg+IHYgPSB7MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTB9OwogICBmb3IgKGF1dG8g
XyA6IHN0YXRlKSB7Ci0gICAgVU5ST0xMXzE2KHYuc2l6ZSgpKTsKKyAgICBiZW5jaG1hcms6OkRv
Tm90T3B0aW1pemUodik7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYuc2l6ZSgpKTsK
ICAgfQotICBzdGF0ZS5TZXRJdGVtc1Byb2Nlc3NlZCgxNiAqIHN0YXRpY19jYXN0PGludDY0X3Q+
KHN0YXRlLml0ZXJhdGlvbnMoKSkpOwogfQogQkVOQ0hNQVJLKEJNX0lubGluZWRWZWN0b3JTaXpl
RXh0ZXJuYWwpOwogCiB2b2lkIEJNX1N0ZFZlY3RvclNpemUoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKICAgc3RkOjp2ZWN0b3I8aW50PiB2ID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDks
IDEwfTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIFVOUk9MTF8xNih2LnNpemUoKSk7
CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOworICAgIGJlbmNobWFyazo6RG9Ob3RP
cHRpbWl6ZSh2LnNpemUoKSk7CiAgIH0KLSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoMTYgKiBz
dGF0aWNfY2FzdDxpbnQ2NF90PihzdGF0ZS5pdGVyYXRpb25zKCkpKTsKIH0KIEJFTkNITUFSSyhC
TV9TdGRWZWN0b3JTaXplKTsKIAogdm9pZCBCTV9JbmxpbmVkVmVjdG9yRW1wdHlJbmxpbmVkKGJl
bmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGFic2w6OklubGluZWRWZWN0b3I8aW50LCA4PiB2
ID0gezEsIDIsIDMsIDQsIDUsIDYsIDd9OwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAg
VU5ST0xMXzE2KHYuZW1wdHkoKSk7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOwor
ICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2LmVtcHR5KCkpOwogICB9Ci0gIHN0YXRlLlNl
dEl0ZW1zUHJvY2Vzc2VkKDE2ICogc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9u
cygpKSk7CiB9CiBCRU5DSE1BUksoQk1fSW5saW5lZFZlY3RvckVtcHR5SW5saW5lZCk7CiAKIHZv
aWQgQk1fSW5saW5lZFZlY3RvckVtcHR5RXh0ZXJuYWwoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUp
IHsKICAgYWJzbDo6SW5saW5lZFZlY3RvcjxpbnQsIDg+IHYgPSB7MSwgMiwgMywgNCwgNSwgNiwg
NywgOCwgOSwgMTB9OwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgVU5ST0xMXzE2KHYu
ZW1wdHkoKSk7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOworICAgIGJlbmNobWFy
azo6RG9Ob3RPcHRpbWl6ZSh2LmVtcHR5KCkpOwogICB9Ci0gIHN0YXRlLlNldEl0ZW1zUHJvY2Vz
c2VkKDE2ICogc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9ucygpKSk7CiB9CiBC
RU5DSE1BUksoQk1fSW5saW5lZFZlY3RvckVtcHR5RXh0ZXJuYWwpOwogCiB2b2lkIEJNX1N0ZFZl
Y3RvckVtcHR5KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIHN0ZDo6dmVjdG9yPGludD4g
diA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMH07CiAgIGZvciAoYXV0byBfIDogc3Rh
dGUpIHsKLSAgICBVTlJPTExfMTYodi5lbXB0eSgpKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0
aW1pemUodik7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYuZW1wdHkoKSk7CiAgIH0K
LSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoMTYgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGF0
ZS5pdGVyYXRpb25zKCkpKTsKIH0KIEJFTkNITUFSSyhCTV9TdGRWZWN0b3JFbXB0eSk7CiAKK2Nv
bnN0ZXhwciBzaXplX3Qga0lubGluZWRDYXBhY2l0eSA9IDQ7Citjb25zdGV4cHIgc2l6ZV90IGtM
YXJnZVNpemUgPSBrSW5saW5lZENhcGFjaXR5ICogMjsKK2NvbnN0ZXhwciBzaXplX3Qga1NtYWxs
U2l6ZSA9IGtJbmxpbmVkQ2FwYWNpdHkgLyAyOworY29uc3RleHByIHNpemVfdCBrQmF0Y2hTaXpl
ID0gMTAwOworCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0Z1
bmN0aW9uVGVtcGxhdGUsIFQpIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Z1bmN0aW9uVGVt
cGxhdGUsIFQsIGtMYXJnZVNpemUpOyAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1f
RnVuY3Rpb25UZW1wbGF0ZSwgVCwga1NtYWxsU2l6ZSkKKworI2RlZmluZSBBQlNMX0lOVEVSTkFM
X0JFTkNITUFSS19UV09fU0laRShCTV9GdW5jdGlvblRlbXBsYXRlLCBUKSAgICAgIFwKKyAgQkVO
Q0hNQVJLX1RFTVBMQVRFKEJNX0Z1bmN0aW9uVGVtcGxhdGUsIFQsIGtMYXJnZVNpemUsIGtMYXJn
ZVNpemUpOyBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9GdW5jdGlvblRlbXBsYXRlLCBULCBr
TGFyZ2VTaXplLCBrU21hbGxTaXplKTsgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRnVuY3Rp
b25UZW1wbGF0ZSwgVCwga1NtYWxsU2l6ZSwga0xhcmdlU2l6ZSk7IFwKKyAgQkVOQ0hNQVJLX1RF
TVBMQVRFKEJNX0Z1bmN0aW9uVGVtcGxhdGUsIFQsIGtTbWFsbFNpemUsIGtTbWFsbFNpemUpCisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgSW5sVmVjID0gYWJzbDo6SW5saW5lZFZlY3Rv
cjxULCBrSW5saW5lZENhcGFjaXR5PjsKKworc3RydWN0IFRyaXZpYWxUeXBlIHsKKyAgc2l6ZV90
IHZhbDsKK307CisKK2NsYXNzIE5vbnRyaXZpYWxUeXBlIHsKKyBwdWJsaWM6CisgIEFCU0xfQVRU
UklCVVRFX05PSU5MSU5FIE5vbnRyaXZpYWxUeXBlKCkgOiB2YWxfKCkgeworICAgIGJlbmNobWFy
azo6RG9Ob3RPcHRpbWl6ZSgqdGhpcyk7CisgIH0KKworICBBQlNMX0FUVFJJQlVURV9OT0lOTElO
RSBOb250cml2aWFsVHlwZShjb25zdCBOb250cml2aWFsVHlwZSYgb3RoZXIpCisgICAgICA6IHZh
bF8ob3RoZXIudmFsXykgeworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSgqdGhpcyk7Cisg
IH0KKworICBBQlNMX0FUVFJJQlVURV9OT0lOTElORSBOb250cml2aWFsVHlwZSYgb3BlcmF0b3I9
KAorICAgICAgY29uc3QgTm9udHJpdmlhbFR5cGUmIG90aGVyKSB7CisgICAgdmFsXyA9IG90aGVy
LnZhbF87CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKCp0aGlzKTsKKyAgICByZXR1cm4g
KnRoaXM7CisgIH0KKworICBBQlNMX0FUVFJJQlVURV9OT0lOTElORSB+Tm9udHJpdmlhbFR5cGUo
KSBub2V4Y2VwdCB7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKCp0aGlzKTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgc2l6ZV90IHZhbF87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgUHJlcGFyZVZlY0ZuLCB0eXBlbmFtZSBUZXN0VmVjRm4+Cit2b2lkIEJhdGNoZWRC
ZW5jaG1hcmsoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUsIFByZXBhcmVWZWNGbiBwcmVwYXJlX3Zl
YywKKyAgICAgICAgICAgICAgICAgICAgICBUZXN0VmVjRm4gdGVzdF92ZWMpIHsKKyAgc3RkOjph
cnJheTxJbmxWZWM8VD4sIGtCYXRjaFNpemU+IHZlY3Rvcl9iYXRjaHt9OworCisgIHdoaWxlIChz
dGF0ZS5LZWVwUnVubmluZ0JhdGNoKGtCYXRjaFNpemUpKSB7CisgICAgLy8gUHJlcGFyZSBiYXRj
aAorICAgIHN0YXRlLlBhdXNlVGltaW5nKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBr
QmF0Y2hTaXplOyArK2kpIHsKKyAgICAgIHByZXBhcmVfdmVjKHZlY3Rvcl9iYXRjaC5kYXRhKCkg
KyBpLCBpKTsKKyAgICB9CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHZlY3Rvcl9iYXRj
aCk7CisgICAgc3RhdGUuUmVzdW1lVGltaW5nKCk7CisKKyAgICAvLyBUZXN0IGJhdGNoCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBrQmF0Y2hTaXplOyArK2kpIHsKKyAgICAgIHRlc3RfdmVj
KHZlY3Rvcl9iYXRjaC5kYXRhKCkgKyBpLCBpKTsKKyAgICB9CisgIH0KK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHNpemVfdCBUb1NpemU+Cit2b2lkIEJNX0NvbnN0cnVjdEZyb21TaXplKGJl
bmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHVzaW5nIFZlY1QgPSBJbmxWZWM8VD47CisgIGF1
dG8gc2l6ZSA9IFRvU2l6ZTsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAor
ICAgICAgLyogcHJlcGFyZV92ZWMgPSAqLyBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZl
Yy0+flZlY1QoKTsgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAgICAgIFsmXSh2b2lkKiBw
dHIsIHNpemVfdCkgeworICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoc2l6ZSk7Cisg
ICAgICAgIDo6bmV3IChwdHIpIFZlY1Qoc2l6ZSk7CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJO
QUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0NvbnN0cnVjdEZyb21TaXplLCBUcml2aWFsVHlwZSk7
CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9Db25zdHJ1Y3RGcm9tU2l6ZSwg
Tm9udHJpdmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFRvU2l6ZT4K
K3ZvaWQgQk1fQ29uc3RydWN0RnJvbVNpemVSZWYoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
KyAgdXNpbmcgVmVjVCA9IElubFZlYzxUPjsKKyAgYXV0byBzaXplID0gVG9TaXplOworICBhdXRv
IHJlZiA9IFQoKTsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAg
LyogcHJlcGFyZV92ZWMgPSAqLyBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZlYy0+flZl
Y1QoKTsgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAgICAgIFsmXSh2b2lkKiBwdHIsIHNp
emVfdCkgeworICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoc2l6ZSk7CisgICAgICAg
IGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShyZWYpOworICAgICAgICA6Om5ldyAocHRyKSBWZWNU
KHNpemUsIHJlZik7CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9T
SVpFKEJNX0NvbnN0cnVjdEZyb21TaXplUmVmLCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFM
X0JFTkNITUFSS19PTkVfU0laRShCTV9Db25zdHJ1Y3RGcm9tU2l6ZVJlZiwgTm9udHJpdmlhbFR5
cGUpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFRvU2l6ZT4KK3ZvaWQgQk1fQ29u
c3RydWN0RnJvbVJhbmdlKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHVzaW5nIFZlY1Qg
PSBJbmxWZWM8VD47CisgIHN0ZDo6YXJyYXk8VCwgVG9TaXplPiBhcnJ7fTsKKyAgQmF0Y2hlZEJl
bmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyogcHJlcGFyZV92ZWMgPSAqLyBbXShJ
bmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZlYy0+flZlY1QoKTsgfSwKKyAgICAgIC8qIHRlc3Rf
dmVjID0gKi8KKyAgICAgIFsmXSh2b2lkKiBwdHIsIHNpemVfdCkgeworICAgICAgICBiZW5jaG1h
cms6OkRvTm90T3B0aW1pemUoYXJyKTsKKyAgICAgICAgOjpuZXcgKHB0cikgVmVjVChhcnIuYmVn
aW4oKSwgYXJyLmVuZCgpKTsKKyAgICAgIH0pOworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktf
T05FX1NJWkUoQk1fQ29uc3RydWN0RnJvbVJhbmdlLCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVS
TkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9Db25zdHJ1Y3RGcm9tUmFuZ2UsIE5vbnRyaXZpYWxU
eXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBUb1NpemU+Cit2b2lkIEJNX0Nv
bnN0cnVjdEZyb21Db3B5KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHVzaW5nIFZlY1Qg
PSBJbmxWZWM8VD47CisgIFZlY1Qgb3RoZXJfdmVjKFRvU2l6ZSk7CisgIEJhdGNoZWRCZW5jaG1h
cms8VD4oCisgICAgICBzdGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFtd
KElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5+VmVjVCgpOyB9LAorICAgICAgLyogdGVz
dF92ZWMgPSAqLworICAgICAgWyZdKHZvaWQqIHB0ciwgc2l6ZV90KSB7CisgICAgICAgIGJlbmNo
bWFyazo6RG9Ob3RPcHRpbWl6ZShvdGhlcl92ZWMpOworICAgICAgICA6Om5ldyAocHRyKSBWZWNU
KG90aGVyX3ZlYyk7CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9T
SVpFKEJNX0NvbnN0cnVjdEZyb21Db3B5LCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFMX0JF
TkNITUFSS19PTkVfU0laRShCTV9Db25zdHJ1Y3RGcm9tQ29weSwgTm9udHJpdmlhbFR5cGUpOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFRvU2l6ZT4KK3ZvaWQgQk1fQ29uc3RydWN0
RnJvbU1vdmUoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgdXNpbmcgVmVjVCA9IElubFZl
YzxUPjsKKyAgc3RkOjphcnJheTxWZWNULCBrQmF0Y2hTaXplPiB2ZWN0b3JfYmF0Y2h7fTsKKyAg
QmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyogcHJlcGFyZV92ZWMg
PSAqLworICAgICAgWyZdKElubFZlYzxUPiogdmVjLCBzaXplX3QgaSkgeworICAgICAgICB2ZWN0
b3JfYmF0Y2hbaV0uY2xlYXIoKTsKKyAgICAgICAgdmVjdG9yX2JhdGNoW2ldLnJlc2l6ZShUb1Np
emUpOworICAgICAgICB2ZWMtPn5WZWNUKCk7CisgICAgICB9LAorICAgICAgLyogdGVzdF92ZWMg
PSAqLworICAgICAgWyZdKHZvaWQqIHB0ciwgc2l6ZV90IGkpIHsKKyAgICAgICAgYmVuY2htYXJr
OjpEb05vdE9wdGltaXplKHZlY3Rvcl9iYXRjaFtpXSk7CisgICAgICAgIDo6bmV3IChwdHIpIFZl
Y1Qoc3RkOjptb3ZlKHZlY3Rvcl9iYXRjaFtpXSkpOworICAgICAgfSk7Cit9CitBQlNMX0lOVEVS
TkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9Db25zdHJ1Y3RGcm9tTW92ZSwgVHJpdmlhbFR5cGUp
OworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fQ29uc3RydWN0RnJvbU1vdmUs
IE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9tU2l6
ZSwgc2l6ZV90IFRvU2l6ZT4KK3ZvaWQgQk1fQXNzaWduU2l6ZVJlZihiZW5jaG1hcms6OlN0YXRl
JiBzdGF0ZSkgeworICBhdXRvIHNpemUgPSBUb1NpemU7CisgIGF1dG8gcmVmID0gVCgpOworICBC
YXRjaGVkQmVuY2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9
ICovIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5yZXNpemUoRnJvbVNpemUpOyB9
LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAgWyZdKElubFZlYzxUPiogdmVjLCBzaXpl
X3QpIHsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHNpemUpOworICAgICAgICBi
ZW5jaG1hcms6OkRvTm90T3B0aW1pemUocmVmKTsKKyAgICAgICAgdmVjLT5hc3NpZ24oc2l6ZSwg
cmVmKTsKKyAgICAgIH0pOworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1f
QXNzaWduU2l6ZVJlZiwgVHJpdmlhbFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdP
X1NJWkUoQk1fQXNzaWduU2l6ZVJlZiwgTm9udHJpdmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplLCBzaXplX3QgVG9TaXplPgordm9pZCBCTV9Bc3NpZ25S
YW5nZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBzdGQ6OmFycmF5PFQsIFRvU2l6ZT4g
YXJye307CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwKKyAgICAgIC8qIHBy
ZXBhcmVfdmVjID0gKi8gW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeyB2ZWMtPnJlc2l6ZShG
cm9tU2l6ZSk7IH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbJl0oSW5sVmVjPFQ+
KiB2ZWMsIHNpemVfdCkgeworICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoYXJyKTsK
KyAgICAgICAgdmVjLT5hc3NpZ24oYXJyLmJlZ2luKCksIGFyci5lbmQoKSk7CisgICAgICB9KTsK
K30KK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX0Fzc2lnblJhbmdlLCBUcml2
aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9Bc3NpZ25SYW5n
ZSwgTm9udHJpdmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21T
aXplLCBzaXplX3QgVG9TaXplPgordm9pZCBCTV9Bc3NpZ25Gcm9tQ29weShiZW5jaG1hcms6OlN0
YXRlJiBzdGF0ZSkgeworICBJbmxWZWM8VD4gb3RoZXJfdmVjKFRvU2l6ZSk7CisgIEJhdGNoZWRC
ZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8gW10o
SW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeyB2ZWMtPnJlc2l6ZShGcm9tU2l6ZSk7IH0sCisgICAg
ICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbJl0oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgewor
ICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUob3RoZXJfdmVjKTsKKyAgICAgICAgKnZl
YyA9IG90aGVyX3ZlYzsKKyAgICAgIH0pOworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdP
X1NJWkUoQk1fQXNzaWduRnJvbUNvcHksIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVO
Q0hNQVJLX1RXT19TSVpFKEJNX0Fzc2lnbkZyb21Db3B5LCBOb250cml2aWFsVHlwZSk7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRnJvbVNpemUsIHNpemVfdCBUb1NpemU+Cit2b2lk
IEJNX0Fzc2lnbkZyb21Nb3ZlKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHVzaW5nIFZl
Y1QgPSBJbmxWZWM8VD47CisgIHN0ZDo6YXJyYXk8VmVjVCwga0JhdGNoU2l6ZT4gdmVjdG9yX2Jh
dGNoe307CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwKKyAgICAgIC8qIHBy
ZXBhcmVfdmVjID0gKi8KKyAgICAgIFsmXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90IGkpIHsKKyAg
ICAgICAgdmVjdG9yX2JhdGNoW2ldLmNsZWFyKCk7CisgICAgICAgIHZlY3Rvcl9iYXRjaFtpXS5y
ZXNpemUoVG9TaXplKTsKKyAgICAgICAgdmVjLT5yZXNpemUoRnJvbVNpemUpOworICAgICAgfSwK
KyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAgICAgIFsmXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90
IGkpIHsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHZlY3Rvcl9iYXRjaFtpXSk7
CisgICAgICAgICp2ZWMgPSBzdGQ6Om1vdmUodmVjdG9yX2JhdGNoW2ldKTsKKyAgICAgIH0pOwor
fQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fQXNzaWduRnJvbU1vdmUsIFRy
aXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX0Fzc2lnbkZy
b21Nb3ZlLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
RnJvbVNpemUsIHNpemVfdCBUb1NpemU+Cit2b2lkIEJNX1Jlc2l6ZVNpemUoYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAg
ICAgLyogcHJlcGFyZV92ZWMgPSAqLworICAgICAgW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkg
eworICAgICAgICB2ZWMtPmNsZWFyKCk7CisgICAgICAgIHZlYy0+cmVzaXplKEZyb21TaXplKTsK
KyAgICAgIH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbXShJbmxWZWM8VD4qIHZl
Yywgc2l6ZV90KSB7IHZlYy0+cmVzaXplKFRvU2l6ZSk7IH0pOworfQorQUJTTF9JTlRFUk5BTF9C
RU5DSE1BUktfVFdPX1NJWkUoQk1fUmVzaXplU2l6ZSwgVHJpdmlhbFR5cGUpOworQUJTTF9JTlRF
Uk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fUmVzaXplU2l6ZSwgTm9udHJpdmlhbFR5cGUpOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplLCBzaXplX3QgVG9TaXplPgor
dm9pZCBCTV9SZXNpemVTaXplUmVmKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIGF1dG8g
dCA9IFQoKTsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyog
cHJlcGFyZV92ZWMgPSAqLworICAgICAgW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeworICAg
ICAgICB2ZWMtPmNsZWFyKCk7CisgICAgICAgIHZlYy0+cmVzaXplKEZyb21TaXplKTsKKyAgICAg
IH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbJl0oSW5sVmVjPFQ+KiB2ZWMsIHNp
emVfdCkgeworICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodCk7CisgICAgICAgIHZl
Yy0+cmVzaXplKFRvU2l6ZSwgdCk7CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVOQ0hN
QVJLX1RXT19TSVpFKEJNX1Jlc2l6ZVNpemVSZWYsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJO
QUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX1Jlc2l6ZVNpemVSZWYsIE5vbnRyaXZpYWxUeXBlKTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9tU2l6ZSwgc2l6ZV90IFRvU2l6ZT4K
K3ZvaWQgQk1fSW5zZXJ0U2l6ZVJlZihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBhdXRv
IHQgPSBUKCk7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwKKyAgICAgIC8q
IHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsKKyAg
ICAgICAgdmVjLT5jbGVhcigpOworICAgICAgICB2ZWMtPnJlc2l6ZShGcm9tU2l6ZSk7CisgICAg
ICB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAgWyZdKElubFZlYzxUPiogdmVjLCBz
aXplX3QpIHsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHQpOworICAgICAgICBh
dXRvKiBwb3MgPSB2ZWMtPmRhdGEoKSArICh2ZWMtPnNpemUoKSAvIDIpOworICAgICAgICB2ZWMt
Pmluc2VydChwb3MsIHQpOworICAgICAgfSk7Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19U
V09fU0laRShCTV9JbnNlcnRTaXplUmVmLCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFMX0JF
TkNITUFSS19UV09fU0laRShCTV9JbnNlcnRTaXplUmVmLCBOb250cml2aWFsVHlwZSk7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRnJvbVNpemUsIHNpemVfdCBUb1NpemU+Cit2b2lk
IEJNX0luc2VydFJhbmdlKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIElubFZlYzxUPiBv
dGhlcl92ZWMoVG9TaXplKTsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAor
ICAgICAgLyogcHJlcGFyZV92ZWMgPSAqLworICAgICAgW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVf
dCkgeworICAgICAgICB2ZWMtPmNsZWFyKCk7CisgICAgICAgIHZlYy0+cmVzaXplKEZyb21TaXpl
KTsKKyAgICAgIH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbJl0oSW5sVmVjPFQ+
KiB2ZWMsIHNpemVfdCkgeworICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUob3RoZXJf
dmVjKTsKKyAgICAgICAgYXV0byogcG9zID0gdmVjLT5kYXRhKCkgKyAodmVjLT5zaXplKCkgLyAy
KTsKKyAgICAgICAgdmVjLT5pbnNlcnQocG9zLCBvdGhlcl92ZWMuYmVnaW4oKSwgb3RoZXJfdmVj
LmVuZCgpKTsKKyAgICAgIH0pOworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUo
Qk1fSW5zZXJ0UmFuZ2UsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RX
T19TSVpFKEJNX0luc2VydFJhbmdlLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCBzaXplX3QgRnJvbVNpemU+Cit2b2lkIEJNX0VtcGxhY2VCYWNrKGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwKKyAg
ICAgIC8qIHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3Qp
IHsKKyAgICAgICAgdmVjLT5jbGVhcigpOworICAgICAgICB2ZWMtPnJlc2l6ZShGcm9tU2l6ZSk7
CisgICAgICB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAgW10oSW5sVmVjPFQ+KiB2
ZWMsIHNpemVfdCkgeyB2ZWMtPmVtcGxhY2VfYmFjaygpOyB9KTsKK30KK0FCU0xfSU5URVJOQUxf
QkVOQ0hNQVJLX09ORV9TSVpFKEJNX0VtcGxhY2VCYWNrLCBUcml2aWFsVHlwZSk7CitBQlNMX0lO
VEVSTkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9FbXBsYWNlQmFjaywgTm9udHJpdmlhbFR5cGUp
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplPgordm9pZCBCTV9Qb3BC
YWNrKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisg
ICAgICBzdGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxU
PiogdmVjLCBzaXplX3QpIHsKKyAgICAgICAgdmVjLT5jbGVhcigpOworICAgICAgICB2ZWMtPnJl
c2l6ZShGcm9tU2l6ZSk7CisgICAgICB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAg
W10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeyB2ZWMtPnBvcF9iYWNrKCk7IH0pOworfQorQUJT
TF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fUG9wQmFjaywgVHJpdmlhbFR5cGUpOwor
QUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fUG9wQmFjaywgTm9udHJpdmlhbFR5
cGUpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplPgordm9pZCBCTV9F
cmFzZU9uZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBCYXRjaGVkQmVuY2htYXJrPFQ+
KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisgICAgICBbXShJbmxW
ZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIHZlYy0+Y2xlYXIoKTsKKyAgICAgICAgdmVj
LT5yZXNpemUoRnJvbVNpemUpOworICAgICAgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAg
ICAgIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsKKyAgICAgICAgYXV0byogcG9zID0gdmVj
LT5kYXRhKCkgKyAodmVjLT5zaXplKCkgLyAyKTsKKyAgICAgICAgdmVjLT5lcmFzZShwb3MpOwor
ICAgICAgfSk7Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9FcmFzZU9u
ZSwgVHJpdmlhbFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fRXJh
c2VPbmUsIE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBG
cm9tU2l6ZT4KK3ZvaWQgQk1fRXJhc2VSYW5nZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewor
ICBCYXRjaGVkQmVuY2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3Zl
YyA9ICovCisgICAgICBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIHZlYy0+
Y2xlYXIoKTsKKyAgICAgICAgdmVjLT5yZXNpemUoRnJvbVNpemUpOworICAgICAgfSwKKyAgICAg
IC8qIHRlc3RfdmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsKKyAg
ICAgICAgYXV0byogcG9zID0gdmVjLT5kYXRhKCkgKyAodmVjLT5zaXplKCkgLyAyKTsKKyAgICAg
ICAgdmVjLT5lcmFzZShwb3MsIHBvcyArIDEpOworICAgICAgfSk7Cit9CitBQlNMX0lOVEVSTkFM
X0JFTkNITUFSS19PTkVfU0laRShCTV9FcmFzZVJhbmdlLCBUcml2aWFsVHlwZSk7CitBQlNMX0lO
VEVSTkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9FcmFzZVJhbmdlLCBOb250cml2aWFsVHlwZSk7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRnJvbVNpemU+Cit2b2lkIEJNX0NsZWFy
KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAg
ICBzdGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8gW10oSW5sVmVjPFQ+KiB2ZWMsIHNp
emVfdCkgeyB2ZWMtPnJlc2l6ZShGcm9tU2l6ZSk7IH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICov
IFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5jbGVhcigpOyB9KTsKK30KK0FCU0xf
SU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0NsZWFyLCBUcml2aWFsVHlwZSk7CitBQlNM
X0lOVEVSTkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9DbGVhciwgTm9udHJpdmlhbFR5cGUpOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplLCBzaXplX3QgVG9DYXBhY2l0
eT4KK3ZvaWQgQk1fUmVzZXJ2ZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBCYXRjaGVk
QmVuY2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisg
ICAgICBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIHZlYy0+Y2xlYXIoKTsK
KyAgICAgICAgdmVjLT5yZXNpemUoRnJvbVNpemUpOworICAgICAgfSwKKyAgICAgIC8qIHRlc3Rf
dmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5yZXNlcnZl
KFRvQ2FwYWNpdHkpOyB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJN
X1Jlc2VydmUsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpF
KEJNX1Jlc2VydmUsIE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNp
emVfdCBGcm9tQ2FwYWNpdHksIHNpemVfdCBUb0NhcGFjaXR5Pgordm9pZCBCTV9TaHJpbmtUb0Zp
dChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBCYXRjaGVkQmVuY2htYXJrPFQ+KAorICAg
ICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisgICAgICBbXShJbmxWZWM8VD4q
IHZlYywgc2l6ZV90KSB7CisgICAgICAgIHZlYy0+Y2xlYXIoKTsKKyAgICAgICAgdmVjLT5yZXNp
emUoVG9DYXBhY2l0eSk7CisgICAgICAgIHZlYy0+cmVzZXJ2ZShGcm9tQ2FwYWNpdHkpOworICAg
ICAgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8gW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkg
eyB2ZWMtPnNocmlua190b19maXQoKTsgfSk7Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19U
V09fU0laRShCTV9TaHJpbmtUb0ZpdCwgVHJpdmlhbFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5D
SE1BUktfVFdPX1NJWkUoQk1fU2hyaW5rVG9GaXQsIE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9tU2l6ZSwgc2l6ZV90IFRvU2l6ZT4KK3ZvaWQgQk1f
U3dhcChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICB1c2luZyBWZWNUID0gSW5sVmVjPFQ+
OworICBzdGQ6OmFycmF5PFZlY1QsIGtCYXRjaFNpemU+IHZlY3Rvcl9iYXRjaHt9OworICBCYXRj
aGVkQmVuY2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICov
CisgICAgICBbJl0oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCBpKSB7CisgICAgICAgIHZlY3Rvcl9i
YXRjaFtpXS5jbGVhcigpOworICAgICAgICB2ZWN0b3JfYmF0Y2hbaV0ucmVzaXplKFRvU2l6ZSk7
CisgICAgICAgIHZlYy0+cmVzaXplKEZyb21TaXplKTsKKyAgICAgIH0sCisgICAgICAvKiB0ZXN0
X3ZlYyA9ICovCisgICAgICBbJl0oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCBpKSB7CisgICAgICAg
IHVzaW5nIHN0ZDo6c3dhcDsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHZlY3Rv
cl9iYXRjaFtpXSk7CisgICAgICAgIHN3YXAoKnZlYywgdmVjdG9yX2JhdGNoW2ldKTsKKyAgICAg
IH0pOworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fU3dhcCwgVHJpdmlh
bFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fU3dhcCwgTm9udHJp
dmlhbFR5cGUpOworCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbmxpbmVkX3ZlY3Rvcl9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW5saW5lZF92ZWN0b3JfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZm
MGRhNzViN2JhNzU4ZTgyMjRlZjdhYmRlMWFjZWJmMDE4MjRlOTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNj
CkBAIC0wLDAgKzEsNDg5IEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKworI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisjaW5j
bHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CisK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9l
eGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbmxp
bmVkX3ZlY3Rvci5oIgorCituYW1lc3BhY2UgeworCitjb25zdGV4cHIgc2l6ZV90IGtJbmxpbmVk
Q2FwYWNpdHkgPSA0OworY29uc3RleHByIHNpemVfdCBrTGFyZ2VTaXplID0ga0lubGluZWRDYXBh
Y2l0eSAqIDI7Citjb25zdGV4cHIgc2l6ZV90IGtTbWFsbFNpemUgPSBrSW5saW5lZENhcGFjaXR5
IC8gMjsKKwordXNpbmcgVGhyb3dlciA9IHRlc3Rpbmc6OlRocm93aW5nVmFsdWU8PjsKK3VzaW5n
IE1vdmFibGVUaHJvd2VyID0gdGVzdGluZzo6VGhyb3dpbmdWYWx1ZTx0ZXN0aW5nOjpUeXBlU3Bl
Yzo6a05vVGhyb3dNb3ZlPjsKK3VzaW5nIFRocm93QWxsb2MgPSB0ZXN0aW5nOjpUaHJvd2luZ0Fs
bG9jYXRvcjxUaHJvd2VyPjsKKwordXNpbmcgVGhyb3dlclZlYyA9IGFic2w6OklubGluZWRWZWN0
b3I8VGhyb3dlciwga0lubGluZWRDYXBhY2l0eT47Cit1c2luZyBNb3ZhYmxlVGhyb3dlclZlYyA9
IGFic2w6OklubGluZWRWZWN0b3I8TW92YWJsZVRocm93ZXIsIGtJbmxpbmVkQ2FwYWNpdHk+Owor
Cit1c2luZyBUaHJvd0FsbG9jVGhyb3dlclZlYyA9CisgICAgYWJzbDo6SW5saW5lZFZlY3RvcjxU
aHJvd2VyLCBrSW5saW5lZENhcGFjaXR5LCBUaHJvd0FsbG9jPjsKK3VzaW5nIFRocm93QWxsb2NN
b3ZhYmxlVGhyb3dlclZlYyA9CisgICAgYWJzbDo6SW5saW5lZFZlY3RvcjxNb3ZhYmxlVGhyb3dl
ciwga0lubGluZWRDYXBhY2l0eSwgVGhyb3dBbGxvYz47CisKKy8vIEluIEdDQywgaWYgYW4gZWxl
bWVudCBvZiBhIGBzdGQ6OmluaXRpYWxpemVyX2xpc3RgIHRocm93cyBkdXJpbmcgY29uc3RydWN0
aW9uCisvLyB0aGUgZWxlbWVudHMgdGhhdCB3ZXJlIGNvbnN0cnVjdGVkIGJlZm9yZSBpdCBhcmUg
bm90IGRlc3Ryb3llZC4gVGhpcyBjYXVzZXMKKy8vIGluY29ycmVjdCBleGNlcHRpb24gc2FmZXR5
IHRlc3QgZmFpbHVyZXMuIFRodXMsIGB0ZXN0aW5nOjpub3Rocm93X2N0b3JgIGlzCisvLyByZXF1
aXJlZC4gU2VlOiBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02
NjEzOQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX01BS0VfSU5JVF9MSVNUKFQsIE4pICAgICAgICAg
ICAgICAgICAgICAgXAorICAoTiA+IGtJbmxpbmVkQ2FwYWNpdHkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgID8gc3RkOjppbml0aWFsaXplcl9saXN0PFQ+
e1QoMCwgdGVzdGluZzo6bm90aHJvd19jdG9yKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFQoMSwgdGVzdGluZzo6bm90aHJvd19jdG9yKSwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFQoMiwgdGVzdGluZzo6bm90aHJvd19jdG9yKSwgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQoMywgdGVzdGluZzo6bm90aHJvd19jdG9yKSwg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQoNCwgdGVzdGluZzo6bm90aHJv
d19jdG9yKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQoNSwgdGVzdGlu
Zzo6bm90aHJvd19jdG9yKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQo
NiwgdGVzdGluZzo6bm90aHJvd19jdG9yKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFQoNywgdGVzdGluZzo6bm90aHJvd19jdG9yKX0gXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIDog
c3RkOjppbml0aWFsaXplcl9saXN0PFQ+e1QoMCwgdGVzdGluZzo6bm90aHJvd19jdG9yKSwgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQoMSwgdGVzdGluZzo6bm90aHJvd19j
dG9yKX0pCitzdGF0aWNfYXNzZXJ0KChrTGFyZ2VTaXplID09IDggfHwga1NtYWxsU2l6ZSA9PSAy
KSwKKyAgICAgICAgICAgICAgIk11c3QgdXBkYXRlIEFCU0xfSU5URVJOQUxfTUFLRV9JTklUX0xJ
U1QoLi4uKS4iKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFRoZVZlY1QsIHNpemVfdC4uLiBUaGVT
aXplcz4KK2NsYXNzIFRlc3RQYXJhbXMgeworIHB1YmxpYzoKKyAgdXNpbmcgVmVjVCA9IFRoZVZl
Y1Q7CisgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IEdldFNpemVBdChzaXplX3QgaSkgeyByZXR1
cm4ga1NpemVzWzEgKyBpXTsgfQorCisgcHJpdmF0ZToKKyAgY29uc3RleHByIHN0YXRpYyBzaXpl
X3Qga1NpemVzWzEgKyBzaXplb2YuLi4oVGhlU2l6ZXMpXSA9IHsxLCBUaGVTaXplcy4uLn07Cit9
OworCit1c2luZyBOb1NpemVUZXN0UGFyYW1zID0KKyAgICA6OnRlc3Rpbmc6OlR5cGVzPFRlc3RQ
YXJhbXM8VGhyb3dlclZlYz4sIFRlc3RQYXJhbXM8TW92YWJsZVRocm93ZXJWZWM+LAorICAgICAg
ICAgICAgICAgICAgICAgVGVzdFBhcmFtczxUaHJvd0FsbG9jVGhyb3dlclZlYz4sCisgICAgICAg
ICAgICAgICAgICAgICBUZXN0UGFyYW1zPFRocm93QWxsb2NNb3ZhYmxlVGhyb3dlclZlYz4+Owor
Cit1c2luZyBPbmVTaXplVGVzdFBhcmFtcyA9CisgICAgOjp0ZXN0aW5nOjpUeXBlczxUZXN0UGFy
YW1zPFRocm93ZXJWZWMsIGtMYXJnZVNpemU+LAorICAgICAgICAgICAgICAgICAgICAgVGVzdFBh
cmFtczxUaHJvd2VyVmVjLCBrU21hbGxTaXplPiwKKyAgICAgICAgICAgICAgICAgICAgIFRlc3RQ
YXJhbXM8TW92YWJsZVRocm93ZXJWZWMsIGtMYXJnZVNpemU+LAorICAgICAgICAgICAgICAgICAg
ICAgVGVzdFBhcmFtczxNb3ZhYmxlVGhyb3dlclZlYywga1NtYWxsU2l6ZT4sCisgICAgICAgICAg
ICAgICAgICAgICBUZXN0UGFyYW1zPFRocm93QWxsb2NUaHJvd2VyVmVjLCBrTGFyZ2VTaXplPiwK
KyAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY1Rocm93ZXJWZWMsIGtT
bWFsbFNpemU+LAorICAgICAgICAgICAgICAgICAgICAgVGVzdFBhcmFtczxUaHJvd0FsbG9jTW92
YWJsZVRocm93ZXJWZWMsIGtMYXJnZVNpemU+LAorICAgICAgICAgICAgICAgICAgICAgVGVzdFBh
cmFtczxUaHJvd0FsbG9jTW92YWJsZVRocm93ZXJWZWMsIGtTbWFsbFNpemU+PjsKKwordXNpbmcg
VHdvU2l6ZVRlc3RQYXJhbXMgPSA6OnRlc3Rpbmc6OlR5cGVzPAorICAgIFRlc3RQYXJhbXM8VGhy
b3dlclZlYywga0xhcmdlU2l6ZSwga0xhcmdlU2l6ZT4sCisgICAgVGVzdFBhcmFtczxUaHJvd2Vy
VmVjLCBrTGFyZ2VTaXplLCBrU21hbGxTaXplPiwKKyAgICBUZXN0UGFyYW1zPFRocm93ZXJWZWMs
IGtTbWFsbFNpemUsIGtMYXJnZVNpemU+LAorICAgIFRlc3RQYXJhbXM8VGhyb3dlclZlYywga1Nt
YWxsU2l6ZSwga1NtYWxsU2l6ZT4sCisgICAgVGVzdFBhcmFtczxNb3ZhYmxlVGhyb3dlclZlYywg
a0xhcmdlU2l6ZSwga0xhcmdlU2l6ZT4sCisgICAgVGVzdFBhcmFtczxNb3ZhYmxlVGhyb3dlclZl
Yywga0xhcmdlU2l6ZSwga1NtYWxsU2l6ZT4sCisgICAgVGVzdFBhcmFtczxNb3ZhYmxlVGhyb3dl
clZlYywga1NtYWxsU2l6ZSwga0xhcmdlU2l6ZT4sCisgICAgVGVzdFBhcmFtczxNb3ZhYmxlVGhy
b3dlclZlYywga1NtYWxsU2l6ZSwga1NtYWxsU2l6ZT4sCisgICAgVGVzdFBhcmFtczxUaHJvd0Fs
bG9jVGhyb3dlclZlYywga0xhcmdlU2l6ZSwga0xhcmdlU2l6ZT4sCisgICAgVGVzdFBhcmFtczxU
aHJvd0FsbG9jVGhyb3dlclZlYywga0xhcmdlU2l6ZSwga1NtYWxsU2l6ZT4sCisgICAgVGVzdFBh
cmFtczxUaHJvd0FsbG9jVGhyb3dlclZlYywga1NtYWxsU2l6ZSwga0xhcmdlU2l6ZT4sCisgICAg
VGVzdFBhcmFtczxUaHJvd0FsbG9jVGhyb3dlclZlYywga1NtYWxsU2l6ZSwga1NtYWxsU2l6ZT4s
CisgICAgVGVzdFBhcmFtczxUaHJvd0FsbG9jTW92YWJsZVRocm93ZXJWZWMsIGtMYXJnZVNpemUs
IGtMYXJnZVNpemU+LAorICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY01vdmFibGVUaHJvd2VyVmVj
LCBrTGFyZ2VTaXplLCBrU21hbGxTaXplPiwKKyAgICBUZXN0UGFyYW1zPFRocm93QWxsb2NNb3Zh
YmxlVGhyb3dlclZlYywga1NtYWxsU2l6ZSwga0xhcmdlU2l6ZT4sCisgICAgVGVzdFBhcmFtczxU
aHJvd0FsbG9jTW92YWJsZVRocm93ZXJWZWMsIGtTbWFsbFNpemUsIGtTbWFsbFNpemU+PjsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lPgorc3RydWN0IE5vU2l6ZVRlc3QgOiA6OnRlc3Rpbmc6OlRlc3Qg
e307CitUWVBFRF9URVNUX1NVSVRFKE5vU2l6ZVRlc3QsIE5vU2l6ZVRlc3RQYXJhbXMpOworCit0
ZW1wbGF0ZSA8dHlwZW5hbWU+CitzdHJ1Y3QgT25lU2l6ZVRlc3QgOiA6OnRlc3Rpbmc6OlRlc3Qg
e307CitUWVBFRF9URVNUX1NVSVRFKE9uZVNpemVUZXN0LCBPbmVTaXplVGVzdFBhcmFtcyk7CisK
K3RlbXBsYXRlIDx0eXBlbmFtZT4KK3N0cnVjdCBUd29TaXplVGVzdCA6IDo6dGVzdGluZzo6VGVz
dCB7fTsKK1RZUEVEX1RFU1RfU1VJVEUoVHdvU2l6ZVRlc3QsIFR3b1NpemVUZXN0UGFyYW1zKTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFZlY1Q+Citib29sIElubGluZWRWZWN0b3JJbnZhcmlhbnRz
KFZlY1QqIHZlYykgeworICBpZiAoKnZlYyAhPSAqdmVjKSByZXR1cm4gZmFsc2U7CisgIGlmICh2
ZWMtPnNpemUoKSA+IHZlYy0+Y2FwYWNpdHkoKSkgcmV0dXJuIGZhbHNlOworICBpZiAodmVjLT5z
aXplKCkgPiB2ZWMtPm1heF9zaXplKCkpIHJldHVybiBmYWxzZTsKKyAgaWYgKHZlYy0+Y2FwYWNp
dHkoKSA+IHZlYy0+bWF4X3NpemUoKSkgcmV0dXJuIGZhbHNlOworICBpZiAodmVjLT5kYXRhKCkg
IT0gc3RkOjphZGRyZXNzb2YodmVjLT5hdCgwKSkpIHJldHVybiBmYWxzZTsKKyAgaWYgKHZlYy0+
ZGF0YSgpICE9IHZlYy0+YmVnaW4oKSkgcmV0dXJuIGZhbHNlOworICBpZiAoKnZlYy0+ZGF0YSgp
ICE9ICp2ZWMtPmJlZ2luKCkpIHJldHVybiBmYWxzZTsKKyAgaWYgKHZlYy0+YmVnaW4oKSA+IHZl
Yy0+ZW5kKCkpIHJldHVybiBmYWxzZTsKKyAgaWYgKCh2ZWMtPmVuZCgpIC0gdmVjLT5iZWdpbigp
KSAhPSB2ZWMtPnNpemUoKSkgcmV0dXJuIGZhbHNlOworICBpZiAoc3RkOjpkaXN0YW5jZSh2ZWMt
PmJlZ2luKCksIHZlYy0+ZW5kKCkpICE9IHZlYy0+c2l6ZSgpKSByZXR1cm4gZmFsc2U7CisgIHJl
dHVybiB0cnVlOworfQorCisvLyBGdW5jdGlvbiB0aGF0IGFsd2F5cyByZXR1cm5zIGZhbHNlIGlz
IGNvcnJlY3QsIGJ1dCByZWZhY3RvcmluZyBpcyByZXF1aXJlZAorLy8gZm9yIGNsYXJpdHkuIEl0
J3MgbmVlZGVkIHRvIGV4cHJlc3MgdGhhdCwgYXMgYSBjb250cmFjdCwgY2VydGFpbiBvcGVyYXRp
b25zCisvLyBzaG91bGQgbm90IHRocm93IGF0IGFsbC4gRXhlY3V0aW9uIG9mIHRoaXMgZnVuY3Rp
b24gbWVhbnMgYW4gZXhjZXB0aW9uIHdhcworLy8gdGhyb3duIGFuZCB0aHVzIHRoZSB0ZXN0IHNo
b3VsZCBmYWlsLgorLy8gVE9ETyhqb2huc29uY2opOiBBZGQgYHRlc3Rpbmc6Ok5vVGhyb3dHdWFy
YW50ZWVgIHRvIHRoZSBmcmFtZXdvcmsKK3RlbXBsYXRlIDx0eXBlbmFtZSBWZWNUPgorYm9vbCBO
b1Rocm93R3VhcmFudGVlKFZlY1QqIC8qIHZlYyAqLykgeworICByZXR1cm4gZmFsc2U7Cit9CisK
K1RZUEVEX1RFU1QoTm9TaXplVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7CisgIHVzaW5nIFZl
Y1QgPSB0eXBlbmFtZSBUeXBlUGFyYW06OlZlY1Q7CisgIHVzaW5nIGFsbG9jYXRvcl90eXBlID0g
dHlwZW5hbWUgVmVjVDo6YWxsb2NhdG9yX3R5cGU7CisKKyAgdGVzdGluZzo6VGVzdFRocm93aW5n
Q3RvcjxWZWNUPigpOworCisgIHRlc3Rpbmc6OlRlc3RUaHJvd2luZ0N0b3I8VmVjVD4oYWxsb2Nh
dG9yX3R5cGV7fSk7Cit9CisKK1RZUEVEX1RFU1QoT25lU2l6ZVRlc3QsIFNpemVDb25zdHJ1Y3Rv
cikgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpWZWNUOworICB1c2luZyBh
bGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OmFsbG9jYXRvcl90eXBlOworICBjb25zdGV4
cHIgc3RhdGljIGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDApOworCisgIHRlc3Rp
bmc6OlRlc3RUaHJvd2luZ0N0b3I8VmVjVD4oc2l6ZSk7CisKKyAgdGVzdGluZzo6VGVzdFRocm93
aW5nQ3RvcjxWZWNUPihzaXplLCBhbGxvY2F0b3JfdHlwZXt9KTsKK30KKworVFlQRURfVEVTVChP
bmVTaXplVGVzdCwgU2l6ZVJlZkNvbnN0cnVjdG9yKSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFt
ZSBUeXBlUGFyYW06OlZlY1Q7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBWZWNUOjp2
YWx1ZV90eXBlOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OmFsbG9j
YXRvcl90eXBlOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6R2V0
U2l6ZUF0KDApOworCisgIHRlc3Rpbmc6OlRlc3RUaHJvd2luZ0N0b3I8VmVjVD4oc2l6ZSwgdmFs
dWVfdHlwZXt9KTsKKworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdDdG9yPFZlY1Q+KHNpemUsIHZh
bHVlX3R5cGV7fSwgYWxsb2NhdG9yX3R5cGV7fSk7Cit9CisKK1RZUEVEX1RFU1QoT25lU2l6ZVRl
c3QsIEluaXRpYWxpemVyTGlzdENvbnN0cnVjdG9yKSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFt
ZSBUeXBlUGFyYW06OlZlY1Q7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBWZWNUOjp2
YWx1ZV90eXBlOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OmFsbG9j
YXRvcl90eXBlOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6R2V0
U2l6ZUF0KDApOworCisgIHRlc3Rpbmc6OlRlc3RUaHJvd2luZ0N0b3I8VmVjVD4oCisgICAgICBB
QlNMX0lOVEVSTkFMX01BS0VfSU5JVF9MSVNUKHZhbHVlX3R5cGUsIHNpemUpKTsKKworICB0ZXN0
aW5nOjpUZXN0VGhyb3dpbmdDdG9yPFZlY1Q+KAorICAgICAgQUJTTF9JTlRFUk5BTF9NQUtFX0lO
SVRfTElTVCh2YWx1ZV90eXBlLCBzaXplKSwgYWxsb2NhdG9yX3R5cGV7fSk7Cit9CisKK1RZUEVE
X1RFU1QoT25lU2l6ZVRlc3QsIFJhbmdlQ29uc3RydWN0b3IpIHsKKyAgdXNpbmcgVmVjVCA9IHR5
cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIFZl
Y1Q6OnZhbHVlX3R5cGU7CisgIHVzaW5nIGFsbG9jYXRvcl90eXBlID0gdHlwZW5hbWUgVmVjVDo6
YWxsb2NhdG9yX3R5cGU7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byBzaXplID0gVHlwZVBhcmFt
OjpHZXRTaXplQXQoMCk7CisKKyAgc3RkOjphcnJheTx2YWx1ZV90eXBlLCBzaXplPiBhcnJ7fTsK
KworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdDdG9yPFZlY1Q+KGFyci5iZWdpbigpLCBhcnIuZW5k
KCkpOworCisgIHRlc3Rpbmc6OlRlc3RUaHJvd2luZ0N0b3I8VmVjVD4oYXJyLmJlZ2luKCksIGFy
ci5lbmQoKSwgYWxsb2NhdG9yX3R5cGV7fSk7Cit9CisKK1RZUEVEX1RFU1QoT25lU2l6ZVRlc3Qs
IENvcHlDb25zdHJ1Y3RvcikgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpW
ZWNUOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OmFsbG9jYXRvcl90
eXBlOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0
KDApOworCisgIFZlY1Qgb3RoZXJfdmVje3NpemV9OworCisgIHRlc3Rpbmc6OlRlc3RUaHJvd2lu
Z0N0b3I8VmVjVD4ob3RoZXJfdmVjKTsKKworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdDdG9yPFZl
Y1Q+KG90aGVyX3ZlYywgYWxsb2NhdG9yX3R5cGV7fSk7Cit9CisKK1RZUEVEX1RFU1QoT25lU2l6
ZVRlc3QsIE1vdmVDb25zdHJ1Y3RvcikgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjpWZWNUOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OmFsbG9j
YXRvcl90eXBlOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6R2V0
U2l6ZUF0KDApOworCisgIGlmICghYWJzbDo6YWxsb2NhdG9yX2lzX25vdGhyb3c8YWxsb2NhdG9y
X3R5cGU+Ojp2YWx1ZSkgeworICAgIHRlc3Rpbmc6OlRlc3RUaHJvd2luZ0N0b3I8VmVjVD4oVmVj
VHtzaXplfSk7CisKKyAgICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdDdG9yPFZlY1Q+KFZlY1R7c2l6
ZX0sIGFsbG9jYXRvcl90eXBle30pOworICB9Cit9CisKK1RZUEVEX1RFU1QoVHdvU2l6ZVRlc3Qs
IEFzc2lnbikgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpWZWNUOworICB1
c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgVmVjVDo6dmFsdWVfdHlwZTsKKyAgY29uc3RleHBy
IHN0YXRpYyBhdXRvIGZyb21fc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDApOworICBjb25z
dGV4cHIgc3RhdGljIGF1dG8gdG9fc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDEpOworCisg
IGF1dG8gdGVzdGVyID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCisgICAg
ICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFZlY1R7ZnJvbV9zaXplfSkKKyAgICAg
ICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoSW5saW5lZFZlY3RvckludmFyaWFudHM8VmVj
VD4pOworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgICp2
ZWMgPSBBQlNMX0lOVEVSTkFMX01BS0VfSU5JVF9MSVNUKHZhbHVlX3R5cGUsIHRvX3NpemUpOwor
ICB9KSk7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAg
VmVjVCBvdGhlcl92ZWN7dG9fc2l6ZX07CisgICAgKnZlYyA9IG90aGVyX3ZlYzsKKyAgfSkpOwor
CisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIFZlY1Qgb3Ro
ZXJfdmVje3RvX3NpemV9OworICAgICp2ZWMgPSBzdGQ6Om1vdmUob3RoZXJfdmVjKTsKKyAgfSkp
OworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIHZhbHVl
X3R5cGUgdmFse307CisgICAgdmVjLT5hc3NpZ24odG9fc2l6ZSwgdmFsKTsKKyAgfSkpOworCisg
IEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIHZlYy0+YXNzaWdu
KEFCU0xfSU5URVJOQUxfTUFLRV9JTklUX0xJU1QodmFsdWVfdHlwZSwgdG9fc2l6ZSkpOworICB9
KSk7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgc3Rk
OjphcnJheTx2YWx1ZV90eXBlLCB0b19zaXplPiBhcnJ7fTsKKyAgICB2ZWMtPmFzc2lnbihhcnIu
YmVnaW4oKSwgYXJyLmVuZCgpKTsKKyAgfSkpOworfQorCitUWVBFRF9URVNUKFR3b1NpemVUZXN0
LCBSZXNpemUpIHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAg
dXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OnZhbHVlX3R5cGU7CisgIGNvbnN0ZXhw
ciBzdGF0aWMgYXV0byBmcm9tX3NpemUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKyAgY29u
c3RleHByIHN0YXRpYyBhdXRvIHRvX3NpemUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgxKTsKKwor
ICBhdXRvIHRlc3RlciA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQorICAg
ICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShWZWNUe2Zyb21fc2l6ZX0pCisgICAg
ICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKElubGluZWRWZWN0b3JJbnZhcmlhbnRzPFZl
Y1Q+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpzdHJvbmdf
Z3VhcmFudGVlKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMpIHsK
KyAgICB2ZWMtPnJlc2l6ZSh0b19zaXplKTsgIC8vCisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0
ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMpIHsKKyAgICB2ZWMtPnJlc2l6ZSh0b19zaXplLCB2YWx1
ZV90eXBle30pOyAgLy8KKyAgfSkpOworfQorCitUWVBFRF9URVNUKE9uZVNpemVUZXN0LCBJbnNl
cnQpIHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgdXNpbmcg
dmFsdWVfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OnZhbHVlX3R5cGU7CisgIGNvbnN0ZXhwciBzdGF0
aWMgYXV0byBmcm9tX3NpemUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICBhdXRvIHRl
c3RlciA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQorICAgICAgICAgICAg
ICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShWZWNUe2Zyb21fc2l6ZX0pCisgICAgICAgICAgICAg
ICAgICAgIC5XaXRoQ29udHJhY3RzKElubGluZWRWZWN0b3JJbnZhcmlhbnRzPFZlY1Q+KTsKKwor
ICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMpIHsKKyAgICBhdXRvIGl0ID0g
dmVjLT5iZWdpbigpOworICAgIHZlYy0+aW5zZXJ0KGl0LCB2YWx1ZV90eXBle30pOworICB9KSk7
CisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQg
PSB2ZWMtPmJlZ2luKCkgKyAodmVjLT5zaXplKCkgLyAyKTsKKyAgICB2ZWMtPmluc2VydChpdCwg
dmFsdWVfdHlwZXt9KTsKKyAgfSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNU
KiB2ZWMpIHsKKyAgICBhdXRvIGl0ID0gdmVjLT5lbmQoKTsKKyAgICB2ZWMtPmluc2VydChpdCwg
dmFsdWVfdHlwZXt9KTsKKyAgfSkpOworfQorCitUWVBFRF9URVNUKFR3b1NpemVUZXN0LCBJbnNl
cnQpIHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgdXNpbmcg
dmFsdWVfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OnZhbHVlX3R5cGU7CisgIGNvbnN0ZXhwciBzdGF0
aWMgYXV0byBmcm9tX3NpemUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKyAgY29uc3RleHBy
IHN0YXRpYyBhdXRvIGNvdW50ID0gVHlwZVBhcmFtOjpHZXRTaXplQXQoMSk7CisKKyAgYXV0byB0
ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKKyAgICAgICAgICAg
ICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoVmVjVHtmcm9tX3NpemV9KQorICAgICAgICAgICAg
ICAgICAgICAuV2l0aENvbnRyYWN0cyhJbmxpbmVkVmVjdG9ySW52YXJpYW50czxWZWNUPik7CisK
KyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9
IHZlYy0+YmVnaW4oKTsKKyAgICB2ZWMtPmluc2VydChpdCwgY291bnQsIHZhbHVlX3R5cGV7fSk7
CisgIH0pKTsKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAg
YXV0byBpdCA9IHZlYy0+YmVnaW4oKSArICh2ZWMtPnNpemUoKSAvIDIpOworICAgIHZlYy0+aW5z
ZXJ0KGl0LCBjb3VudCwgdmFsdWVfdHlwZXt9KTsKKyAgfSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0
ZXIuVGVzdChbXShWZWNUKiB2ZWMpIHsKKyAgICBhdXRvIGl0ID0gdmVjLT5lbmQoKTsKKyAgICB2
ZWMtPmluc2VydChpdCwgY291bnQsIHZhbHVlX3R5cGV7fSk7CisgIH0pKTsKKworICBFWFBFQ1Rf
VFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMpIHsKKyAgICBhdXRvIGl0ID0gdmVjLT5iZWdp
bigpOworICAgIHZlYy0+aW5zZXJ0KGl0LCBBQlNMX0lOVEVSTkFMX01BS0VfSU5JVF9MSVNUKHZh
bHVlX3R5cGUsIGNvdW50KSk7CisgIH0pKTsKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10o
VmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKSArICh2ZWMtPnNpemUoKSAv
IDIpOworICAgIHZlYy0+aW5zZXJ0KGl0LCBBQlNMX0lOVEVSTkFMX01BS0VfSU5JVF9MSVNUKHZh
bHVlX3R5cGUsIGNvdW50KSk7CisgIH0pKTsKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10o
VmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+ZW5kKCk7CisgICAgdmVjLT5pbnNlcnQo
aXQsIEFCU0xfSU5URVJOQUxfTUFLRV9JTklUX0xJU1QodmFsdWVfdHlwZSwgY291bnQpKTsKKyAg
fSkpOworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1
dG8gaXQgPSB2ZWMtPmJlZ2luKCk7CisgICAgc3RkOjphcnJheTx2YWx1ZV90eXBlLCBjb3VudD4g
YXJye307CisgICAgdmVjLT5pbnNlcnQoaXQsIGFyci5iZWdpbigpLCBhcnIuZW5kKCkpOworICB9
KSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8g
aXQgPSB2ZWMtPmJlZ2luKCkgKyAodmVjLT5zaXplKCkgLyAyKTsKKyAgICBzdGQ6OmFycmF5PHZh
bHVlX3R5cGUsIGNvdW50PiBhcnJ7fTsKKyAgICB2ZWMtPmluc2VydChpdCwgYXJyLmJlZ2luKCks
IGFyci5lbmQoKSk7CisgIH0pKTsKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCog
dmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+ZW5kKCk7CisgICAgc3RkOjphcnJheTx2YWx1ZV90
eXBlLCBjb3VudD4gYXJye307CisgICAgdmVjLT5pbnNlcnQoaXQsIGFyci5iZWdpbigpLCBhcnIu
ZW5kKCkpOworICB9KSk7Cit9CisKK1RZUEVEX1RFU1QoT25lU2l6ZVRlc3QsIEVtcGxhY2VCYWNr
KSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFtZSBUeXBlUGFyYW06OlZlY1Q7CisgIGNvbnN0ZXhw
ciBzdGF0aWMgYXV0byBzaXplID0gVHlwZVBhcmFtOjpHZXRTaXplQXQoMCk7CisKKyAgVmVjVCBm
dWxsX3ZlY3tzaXplfTsKKyAgZnVsbF92ZWMucmVzaXplKGZ1bGxfdmVjLmNhcGFjaXR5KCkpOwor
CisgIFZlY1Qgbm9uZnVsbF92ZWN7c2l6ZX07CisgIG5vbmZ1bGxfdmVjLnJlc2VydmUoc2l6ZSAr
IDEpOworCisgIGF1dG8gdGVzdGVyID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rl
cigpLldpdGhDb250cmFjdHMoCisgICAgICBJbmxpbmVkVmVjdG9ySW52YXJpYW50czxWZWNUPik7
CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLldpdGhJbml0aWFsVmFsdWUobm9uZnVsbF92ZWMpLlRl
c3QoW10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5lbXBsYWNlX2JhY2soKTsgIC8vCisgIH0pKTsK
KworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuV2l0aEluaXRpYWxWYWx1ZShmdWxsX3ZlYykuVGVzdChb
XShWZWNUKiB2ZWMpIHsKKyAgICB2ZWMtPmVtcGxhY2VfYmFjaygpOyAgLy8KKyAgfSkpOworfQor
CitUWVBFRF9URVNUKE9uZVNpemVUZXN0LCBQb3BCYWNrKSB7CisgIHVzaW5nIFZlY1QgPSB0eXBl
bmFtZSBUeXBlUGFyYW06OlZlY1Q7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byBzaXplID0gVHlw
ZVBhcmFtOjpHZXRTaXplQXQoMCk7CisKKyAgYXV0byB0ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtlRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFs
dWUoVmVjVHtzaXplfSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoTm9UaHJv
d0d1YXJhbnRlZTxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCog
dmVjKSB7CisgICAgdmVjLT5wb3BfYmFjaygpOyAgLy8KKyAgfSkpOworfQorCitUWVBFRF9URVNU
KE9uZVNpemVUZXN0LCBFcmFzZSkgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjpWZWNUOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6
ZUF0KDApOworCisgIGF1dG8gdGVzdGVyID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRl
c3RlcigpCisgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFZlY1R7c2l6ZX0p
CisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKElubGluZWRWZWN0b3JJbnZhcmlh
bnRzPFZlY1Q+KTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMpIHsK
KyAgICBhdXRvIGl0ID0gdmVjLT5iZWdpbigpOworICAgIHZlYy0+ZXJhc2UoaXQpOworICB9KSk7
CisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQg
PSB2ZWMtPmJlZ2luKCkgKyAodmVjLT5zaXplKCkgLyAyKTsKKyAgICB2ZWMtPmVyYXNlKGl0KTsK
KyAgfSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMpIHsKKyAgICBh
dXRvIGl0ID0gdmVjLT5iZWdpbigpICsgKHZlYy0+c2l6ZSgpIC0gMSk7CisgICAgdmVjLT5lcmFz
ZShpdCk7CisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMp
IHsKKyAgICBhdXRvIGl0ID0gdmVjLT5iZWdpbigpOworICAgIHZlYy0+ZXJhc2UoaXQsIGl0ICsg
MSk7CisgIH0pKTsKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7Cisg
ICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKSArICh2ZWMtPnNpemUoKSAvIDIpOworICAgIHZlYy0+
ZXJhc2UoaXQsIGl0ICsgMSk7CisgIH0pKTsKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10o
VmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKSArICh2ZWMtPnNpemUoKSAt
IDEpOworICAgIHZlYy0+ZXJhc2UoaXQsIGl0ICsgMSk7CisgIH0pKTsKK30KKworVFlQRURfVEVT
VChPbmVTaXplVGVzdCwgQ2xlYXIpIHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJh
bTo6VmVjVDsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHNpemUgPSBUeXBlUGFyYW06OkdldFNp
emVBdCgwKTsKKworICBhdXRvIHRlc3RlciA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlU
ZXN0ZXIoKQorICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShWZWNUe3NpemV9
KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhOb1Rocm93R3VhcmFudGVlPFZl
Y1Q+KTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMpIHsKKyAgICB2
ZWMtPmNsZWFyKCk7ICAvLworICB9KSk7Cit9CisKK1RZUEVEX1RFU1QoVHdvU2l6ZVRlc3QsIFJl
c2VydmUpIHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgY29u
c3RleHByIHN0YXRpYyBhdXRvIGZyb21fc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDApOwor
ICBjb25zdGV4cHIgc3RhdGljIGF1dG8gdG9fY2FwYWNpdHkgPSBUeXBlUGFyYW06OkdldFNpemVB
dCgxKTsKKworICBhdXRvIHRlc3RlciA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0
ZXIoKQorICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShWZWNUe2Zyb21fc2l6
ZX0pCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKElubGluZWRWZWN0b3JJbnZh
cmlhbnRzPFZlY1Q+KTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMp
IHsKKyAgICB2ZWMtPnJlc2VydmUodG9fY2FwYWNpdHkpOyAgLy8KKyAgfSkpOworfQorCitUWVBF
RF9URVNUKE9uZVNpemVUZXN0LCBTaHJpbmtUb0ZpdCkgeworICB1c2luZyBWZWNUID0gdHlwZW5h
bWUgVHlwZVBhcmFtOjpWZWNUOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gc2l6ZSA9IFR5cGVQ
YXJhbTo6R2V0U2l6ZUF0KDApOworCisgIGF1dG8gdGVzdGVyID0gdGVzdGluZzo6TWFrZUV4Y2Vw
dGlvblNhZmV0eVRlc3RlcigpCisgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVl
KFZlY1R7c2l6ZX0pCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKElubGluZWRW
ZWN0b3JJbnZhcmlhbnRzPFZlY1Q+KTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShW
ZWNUKiB2ZWMpIHsKKyAgICB2ZWMtPnNocmlua190b19maXQoKTsgIC8vCisgIH0pKTsKK30KKwor
VFlQRURfVEVTVChUd29TaXplVGVzdCwgU3dhcCkgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUg
VHlwZVBhcmFtOjpWZWNUOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gZnJvbV9zaXplID0gVHlw
ZVBhcmFtOjpHZXRTaXplQXQoMCk7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byB0b19zaXplID0g
VHlwZVBhcmFtOjpHZXRTaXplQXQoMSk7CisKKyAgYXV0byB0ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtl
RXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFs
VmFsdWUoVmVjVHtmcm9tX3NpemV9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0
cyhJbmxpbmVkVmVjdG9ySW52YXJpYW50czxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVy
LlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgVmVjVCBvdGhlcl92ZWN7dG9fc2l6ZX07CisgICAg
dmVjLT5zd2FwKG90aGVyX3ZlYyk7CisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVz
dChbXShWZWNUKiB2ZWMpIHsKKyAgICB1c2luZyBzdGQ6OnN3YXA7CisgICAgVmVjVCBvdGhlcl92
ZWN7dG9fc2l6ZX07CisgICAgc3dhcCgqdmVjLCBvdGhlcl92ZWMpOworICB9KSk7Cit9CisKK30g
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9y
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfdGVzdC5jYwppbmRleCAw
OGRjZDNlZjY2ZmI2YTMzMDJmODYyYzUyYWQ5MWY1MzYyNjBkNDAwLi5iYWRhNGZlYzljY2JhNjQ3
OGUxM2JiMjZlMzZhMTg1Mjc5MzE4Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5s
aW5lZF92ZWN0b3JfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3Jf
dGVzdC5jYwpAQCAtMSwxMCArMSwxMCBAQAotLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBB
dXRob3JzLgorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgogLy8KIC8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOwogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl90ZXN0aW5nLmgiCiAjaW5jbHVkZSAiYWJz
bC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jv
cy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvdW50aW5nX2FsbG9jYXRv
ci5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJh
Y2tlci5oIgogI2luY2x1ZGUgImFic2wvaGFzaC9oYXNoX3Rlc3RpbmcuaCIKICNpbmNsdWRlICJh
YnNsL21lbW9yeS9tZW1vcnkuaCIKQEAgLTM3LDYgKzM4LDcgQEAKIAogbmFtZXNwYWNlIHsKIAor
dXNpbmcgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpDb3VudGluZ0FsbG9jYXRvcjsKIHVzaW5n
IGFic2w6OnRlc3RfaW50ZXJuYWw6OkNvcHlhYmxlTW92YWJsZUluc3RhbmNlOwogdXNpbmcgYWJz
bDo6dGVzdF9pbnRlcm5hbDo6Q29weWFibGVPbmx5SW5zdGFuY2U7CiB1c2luZyBhYnNsOjp0ZXN0
X2ludGVybmFsOjpJbnN0YW5jZVRyYWNrZXI7CkBAIC02OCwxOCArNzAsMTUgQEAgTUFUQ0hFUl9Q
KFZhbHVlSXMsIGUsICIiKSB7CiAvLyB0ZXN0X2luc3RhbmNlX3RyYWNrZXIuaC4KIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogY2xhc3MgSW5zdGFuY2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7fTsKLVRZUEVEX1RFU1RfQ0FTRV9QKEluc3RhbmNlVGVzdCk7CitUWVBFRF9URVNUX1NVSVRF
X1AoSW5zdGFuY2VUZXN0KTsKIAogLy8gQSBzaW1wbGUgcmVmZXJlbmNlIGNvdW50ZWQgY2xhc3Mg
dG8gbWFrZSBzdXJlIHRoYXQgdGhlIHByb3BlciBlbGVtZW50cyBhcmUKIC8vIGRlc3Ryb3llZCBp
biB0aGUgZXJhc2UoYmVnaW4sIGVuZCkgdGVzdC4KIGNsYXNzIFJlZkNvdW50ZWQgewogIHB1Ymxp
YzoKLSAgUmVmQ291bnRlZChpbnQgdmFsdWUsIGludCogY291bnQpIDogdmFsdWVfKHZhbHVlKSwg
Y291bnRfKGNvdW50KSB7Ci0gICAgUmVmKCk7Ci0gIH0KKyAgUmVmQ291bnRlZChpbnQgdmFsdWUs
IGludCogY291bnQpIDogdmFsdWVfKHZhbHVlKSwgY291bnRfKGNvdW50KSB7IFJlZigpOyB9CiAK
LSAgUmVmQ291bnRlZChjb25zdCBSZWZDb3VudGVkJiB2KQotICAgICAgOiB2YWx1ZV8odi52YWx1
ZV8pLCBjb3VudF8odi5jb3VudF8pIHsKKyAgUmVmQ291bnRlZChjb25zdCBSZWZDb3VudGVkJiB2
KSA6IHZhbHVlXyh2LnZhbHVlXyksIGNvdW50Xyh2LmNvdW50XykgewogICAgIFJlZigpOwogICB9
CiAKQEAgLTEzOCw1NyArMTM3LDYgQEAgc3RhdGljIEludFZlYyBGaWxsKGludCBsZW4sIGludCBv
ZmZzZXQgPSAwKSB7CiAgIHJldHVybiB2OwogfQogCi0vLyBUaGlzIGlzIGEgc3RhdGVmdWwgYWxs
b2NhdG9yLCBidXQgdGhlIHN0YXRlIGxpdmVzIG91dHNpZGUgb2YgdGhlCi0vLyBhbGxvY2F0b3Ig
KGluIHdoYXRldmVyIHRlc3QgaXMgdXNpbmcgdGhlIGFsbG9jYXRvcikuIFRoaXMgaXMgb2RkCi0v
LyBidXQgaGVscHMgaW4gdGVzdHMgd2hlcmUgdGhlIGFsbG9jYXRvciBpcyBwcm9wYWdhdGVkIGlu
dG8gbmVzdGVkCi0vLyBjb250YWluZXJzIC0gdGhhdCBjaGFpbiBvZiBhbGxvY2F0b3JzIHVzZXMg
dGhlIHNhbWUgc3RhdGUgYW5kIGlzCi0vLyB0aHVzIGVhc2llciB0byBxdWVyeSBmb3IgYWdncmVn
YXRlIGFsbG9jYXRpb24gaW5mb3JtYXRpb24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNz
IENvdW50aW5nQWxsb2NhdG9yIDogcHVibGljIHN0ZDo6YWxsb2NhdG9yPFQ+IHsKLSBwdWJsaWM6
Ci0gIHVzaW5nIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8VD47Ci0gIHVzaW5nIHBvaW50ZXIgPSB0
eXBlbmFtZSBBbGxvYzo6cG9pbnRlcjsKLSAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgQWxs
b2M6OnNpemVfdHlwZTsKLQotICBDb3VudGluZ0FsbG9jYXRvcigpIDogYnl0ZXNfdXNlZF8obnVs
bHB0cikge30KLSAgZXhwbGljaXQgQ291bnRpbmdBbGxvY2F0b3IoaW50NjRfdCogYikgOiBieXRl
c191c2VkXyhiKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICBDb3VudGluZ0FsbG9j
YXRvcihjb25zdCBDb3VudGluZ0FsbG9jYXRvcjxVPiYgeCkKLSAgICAgIDogQWxsb2MoeCksIGJ5
dGVzX3VzZWRfKHguYnl0ZXNfdXNlZF8pIHt9Ci0KLSAgcG9pbnRlciBhbGxvY2F0ZShzaXplX3R5
cGUgbiwKLSAgICAgICAgICAgICAgICAgICBzdGQ6OmFsbG9jYXRvcjx2b2lkPjo6Y29uc3RfcG9p
bnRlciBoaW50ID0gbnVsbHB0cikgewotICAgIGFzc2VydChieXRlc191c2VkXyAhPSBudWxscHRy
KTsKLSAgICAqYnl0ZXNfdXNlZF8gKz0gbiAqIHNpemVvZihUKTsKLSAgICByZXR1cm4gQWxsb2M6
OmFsbG9jYXRlKG4sIGhpbnQpOwotICB9Ci0KLSAgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIgcCwg
c2l6ZV90eXBlIG4pIHsKLSAgICBBbGxvYzo6ZGVhbGxvY2F0ZShwLCBuKTsKLSAgICBhc3NlcnQo
Ynl0ZXNfdXNlZF8gIT0gbnVsbHB0cik7Ci0gICAgKmJ5dGVzX3VzZWRfIC09IG4gKiBzaXplb2Yo
VCk7Ci0gIH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICBjbGFzcyByZWJpbmQgewotICAg
cHVibGljOgotICAgIHVzaW5nIG90aGVyID0gQ291bnRpbmdBbGxvY2F0b3I8VT47Ci0gIH07Ci0K
LSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGluZ0FsbG9jYXRvciYgYSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb3VudGluZ0FsbG9jYXRvciYgYikgewotICAg
IHJldHVybiBhLmJ5dGVzX3VzZWRfID09IGIuYnl0ZXNfdXNlZF87Ci0gIH0KLQotICBmcmllbmQg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENvdW50aW5nQWxsb2NhdG9yJiBhLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvdW50aW5nQWxsb2NhdG9yJiBiKSB7Ci0gICAgcmV0dXJuICEo
YSA9PSBiKTsKLSAgfQotCi0gIGludDY0X3QqIGJ5dGVzX3VzZWRfOwotfTsKLQogVEVTVChJbnRW
ZWMsIFNpbXBsZU9wcykgewogICBmb3IgKGludCBsZW4gPSAwOyBsZW4gPCAyMDsgbGVuKyspIHsK
ICAgICBJbnRWZWMgdjsKQEAgLTIzOSw2ICsxODcsMTIgQEAgVEVTVChJbnRWZWMsIFNpbXBsZU9w
cykgewogICB9CiB9CiAKK1RFU1QoSW50VmVjLCBQb3BCYWNrTm9PdmVyZmxvdykgeworICBJbnRW
ZWMgdiA9IHsxfTsKKyAgdi5wb3BfYmFjaygpOworICBFWFBFQ1RfRVEodi5zaXplKCksIDApOwor
fQorCiBURVNUKEludFZlYywgQXRUaHJvd3MpIHsKICAgSW50VmVjIHYgPSB7MSwgMiwgM307CiAg
IEVYUEVDVF9FUSh2LmF0KDIpLCAzKTsKQEAgLTMzMyw3ICsyODcsNyBAQCBURVNUKFJlZkNvdW50
ZWRWZWMsIEVyYXNlQmVnaW5FbmQpIHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIENoZWNrIHRo
YXQgdGhlIGVsZW1lbnRzIGF0IHRoZSBlbmQgYXJlIHByZXNlcnZlZC4KLSAgICAgICAgZm9yIChp
bnQgaSA9IGVyYXNlX2VuZDsgaTwgbGVuOyArK2kpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGVy
YXNlX2VuZDsgaSA8IGxlbjsgKytpKSB7CiAgICAgICAgICAgRVhQRUNUX0VRKDEsIGNvdW50c1tp
XSk7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTU5NSwxMCArNTQ5LDEwIEBAIFRFU1QoSW50VmVj
LCBSZXNpemUpIHsKICAgICBzdGF0aWMgY29uc3QgaW50IGtSZXNpemVFbGVtID0gMTAwMDAwMDsK
ICAgICBmb3IgKGludCBrID0gMDsgayA8IDEwOyBrKyspIHsKICAgICAgIC8vIEVubGFyZ2luZyBy
ZXNpemUKLSAgICAgIHYucmVzaXplKGxlbitrLCBrUmVzaXplRWxlbSk7Ci0gICAgICBFWFBFQ1Rf
RVEobGVuK2ssIHYuc2l6ZSgpKTsKLSAgICAgIEVYUEVDVF9MRShsZW4raywgdi5jYXBhY2l0eSgp
KTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuK2s7IGkrKykgeworICAgICAgdi5yZXNp
emUobGVuICsgaywga1Jlc2l6ZUVsZW0pOworICAgICAgRVhQRUNUX0VRKGxlbiArIGssIHYuc2l6
ZSgpKTsKKyAgICAgIEVYUEVDVF9MRShsZW4gKyBrLCB2LmNhcGFjaXR5KCkpOworICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsZW4gKyBrOyBpKyspIHsKICAgICAgICAgaWYgKGkgPCBsZW4pIHsK
ICAgICAgICAgICBFWFBFQ1RfRVEoaSwgdltpXSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC05MDYs
OCArODYwLDEwIEBAIFRZUEVEX1RFU1RfUChJbnN0YW5jZVRlc3QsIFN3YXApIHsKICAgICAgIElu
c3RhbmNlVHJhY2tlciB0cmFja2VyOwogICAgICAgSW5zdGFuY2VWZWMgYSwgYjsKICAgICAgIGNv
bnN0IHNpemVfdCBpbmxpbmVkX2NhcGFjaXR5ID0gYS5jYXBhY2l0eSgpOworICAgICAgYXV0byBt
aW5fbGVuID0gc3RkOjptaW4obDEsIGwyKTsKKyAgICAgIGF1dG8gbWF4X2xlbiA9IHN0ZDo6bWF4
KGwxLCBsMik7CiAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGwxOyBpKyspIGEucHVzaF9iYWNr
KEluc3RhbmNlKGkpKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbDI7IGkrKykgYi5wdXNo
X2JhY2soSW5zdGFuY2UoMTAwK2kpKTsKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbDI7IGkr
KykgYi5wdXNoX2JhY2soSW5zdGFuY2UoMTAwICsgaSkpOwogICAgICAgRVhQRUNUX0VRKHRyYWNr
ZXIuaW5zdGFuY2VzKCksIGwxICsgbDIpOwogICAgICAgdHJhY2tlci5SZXNldENvcGllc01vdmVz
U3dhcHMoKTsKICAgICAgIHsKQEAgLTkxOSwxNSArODc1LDE1IEBAIFRZUEVEX1RFU1RfUChJbnN0
YW5jZVRlc3QsIFN3YXApIHsKICAgICAgICAgRVhQRUNUX0VRKHRyYWNrZXIuc3dhcHMoKSwgMCk7
ICAvLyBBbGxvY2F0aW9ucyBhcmUgc3dhcHBlZC4KICAgICAgICAgRVhQRUNUX0VRKHRyYWNrZXIu
bW92ZXMoKSwgMCk7CiAgICAgICB9IGVsc2UgaWYgKGEuc2l6ZSgpIDw9IGlubGluZWRfY2FwYWNp
dHkgJiYgYi5zaXplKCkgPD0gaW5saW5lZF9jYXBhY2l0eSkgewotICAgICAgICBFWFBFQ1RfRVEo
dHJhY2tlci5zd2FwcygpLCBzdGQ6Om1pbihsMSwgbDIpKTsKLSAgICAgICAgLy8gVE9ETyhic2Ft
d2VsKTogVGhpcyBzaG91bGQgdXNlIG1vdmVzIHdoZW4gdGhlIHR5cGUgaXMgbW92YWJsZS4KLSAg
ICAgICAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIHN0ZDo6bWF4KGwxLCBsMikgLSBzdGQ6
Om1pbihsMSwgbDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKHRyYWNrZXIuc3dhcHMoKSwgbWluX2xl
bik7CisgICAgICAgIEVYUEVDVF9FUSgodHJhY2tlci5tb3ZlcygpID8gdHJhY2tlci5tb3Zlcygp
IDogdHJhY2tlci5jb3BpZXMoKSksCisgICAgICAgICAgICAgICAgICBtYXhfbGVuIC0gbWluX2xl
bik7CiAgICAgICB9IGVsc2UgewogICAgICAgICAvLyBPbmUgaXMgYWxsb2NhdGVkIGFuZCB0aGUg
b3RoZXIgaXNuJ3QuIFRoZSBhbGxvY2F0aW9uIGlzIHRyYW5zZmVycmVkCiAgICAgICAgIC8vIHdp
dGhvdXQgY29weWluZyBlbGVtZW50cywgYW5kIHRoZSBpbmxpbmVkIGluc3RhbmNlcyBhcmUgY29w
aWVkL21vdmVkLgogICAgICAgICBFWFBFQ1RfRVEodHJhY2tlci5zd2FwcygpLCAwKTsKLSAgICAg
ICAgLy8gVE9ETyhic2Ftd2VsKTogVGhpcyBzaG91bGQgdXNlIG1vdmVzIHdoZW4gdGhlIHR5cGUg
aXMgbW92YWJsZS4KLSAgICAgICAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIHN0ZDo6bWlu
KGwxLCBsMikpOworICAgICAgICBFWFBFQ1RfRVEoKHRyYWNrZXIubW92ZXMoKSA/IHRyYWNrZXIu
bW92ZXMoKSA6IHRyYWNrZXIuY29waWVzKCkpLAorICAgICAgICAgICAgICAgICAgbWluX2xlbik7
CiAgICAgICB9CiAKICAgICAgIEVYUEVDVF9FUShsMSwgYi5zaXplKCkpOwpAQCAtOTc1LDcgKzkz
MSw3IEBAIFRFU1QoSW50VmVjLCBFcXVhbEFuZE5vdEVxdWFsKSB7CiAgICAgRVhQRUNUX0ZBTFNF
KGEgPT0gYik7CiAgICAgRVhQRUNUX1RSVUUoYSAhPSBiKTsKIAotICAgIGJbaV0gPSBiW2ldIC0g
MTsgICAgLy8gQmFjayB0byBiZWZvcmUKKyAgICBiW2ldID0gYltpXSAtIDE7ICAvLyBCYWNrIHRv
IGJlZm9yZQogICAgIEVYUEVDVF9UUlVFKGEgPT0gYik7CiAgICAgRVhQRUNUX0ZBTFNFKGEgIT0g
Yik7CiAgIH0KQEAgLTEwNDIsNyArOTk4LDcgQEAgVFlQRURfVEVTVF9QKEluc3RhbmNlVGVzdCwg
Q291bnRDb25zdHJ1Y3RvcnNEZXN0cnVjdG9ycykgewogCiAgICAgLy8gcmVzZXJ2ZSgpIG11c3Qg
bm90IGluY3JlYXNlIHRoZSBudW1iZXIgb2YgaW5pdGlhbGl6ZWQgb2JqZWN0cwogICAgIFNDT1BF
RF9UUkFDRSgicmVzZXJ2ZSIpOwotICAgIHYucmVzZXJ2ZShsZW4rMTAwMCk7CisgICAgdi5yZXNl
cnZlKGxlbiArIDEwMDApOwogICAgIEVYUEVDVF9FUSh0cmFja2VyLmluc3RhbmNlcygpLCBsZW4p
OwogICAgIEVYUEVDVF9FUSh0cmFja2VyLmNvcGllcygpICsgdHJhY2tlci5tb3ZlcygpLCBsZW4p
OwogCkBAIC0xMjg4LDkgKzEyNDQsOCBAQCB2b2lkIEluc3RhbmNlQ291bnRFbGVtQXNzaWduV2l0
aEFsbG9jYXRpb25UZXN0KCkgewogICAgIGFic2w6OklubGluZWRWZWN0b3I8SW5zdGFuY2UsIDI+
IHYob3JpZ2luYWxfY29udGVudHMuYmVnaW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9yaWdpbmFsX2NvbnRlbnRzLmVuZCgpKTsKICAgICB2LmFzc2lnbigzLCBJ
bnN0YW5jZSgxMjMpKTsKLSAgICBFWFBFQ1RfVEhBVCh2LAotICAgICAgICAgICAgICAgIEFsbE9m
KFNpemVJcygzKSwKLSAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50c0FyZShWYWx1ZUlzKDEy
MyksIFZhbHVlSXMoMTIzKSwgVmFsdWVJcygxMjMpKSkpOworICAgIEVYUEVDVF9USEFUKHYsIEFs
bE9mKFNpemVJcygzKSwgRWxlbWVudHNBcmUoVmFsdWVJcygxMjMpLCBWYWx1ZUlzKDEyMyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUlzKDEy
MykpKSk7CiAgICAgRVhQRUNUX0xFKHYuc2l6ZSgpLCB2LmNhcGFjaXR5KCkpOwogICB9CiB9CkBA
IC0xNTY5LDggKzE1MjQsOCBAQCBUWVBFRF9URVNUX1AoSW5zdGFuY2VUZXN0LCBJbml0aWFsaXpl
ckxpc3RBc3NpZ24pIHsKICAgICBTQ09QRURfVFJBQ0Uob3JpZ2luYWxfc2l6ZSk7CiAgICAgYWJz
bDo6SW5saW5lZFZlY3RvcjxJbnN0YW5jZSwgMj4gdihvcmlnaW5hbF9zaXplLCBJbnN0YW5jZSgx
MjM0NSkpOwogICAgIHYuYXNzaWduKHtJbnN0YW5jZSgzKSwgSW5zdGFuY2UoNCksIEluc3RhbmNl
KDUpfSk7Ci0gICAgRVhQRUNUX1RIQVQodiwgQWxsT2YoU2l6ZUlzKDMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIEVsZW1lbnRzQXJlKFZhbHVlSXMoMyksIFZhbHVlSXMoNCksIFZhbHVlSXMo
NSkpKSk7CisgICAgRVhQRUNUX1RIQVQoCisgICAgICAgIHYsIEFsbE9mKFNpemVJcygzKSwgRWxl
bWVudHNBcmUoVmFsdWVJcygzKSwgVmFsdWVJcyg0KSwgVmFsdWVJcyg1KSkpKTsKICAgICBFWFBF
Q1RfTEUoMywgdi5jYXBhY2l0eSgpKTsKICAgfQogfQpAQCAtMTU5NSw3ICsxNTUwLDcgQEAgVEVT
VChEeW5hbWljVmVjLCBEeW5hbWljVmVjQ29tcGlsZXMpIHsKIFRFU1QoQWxsb2NhdG9yU3VwcG9y
dFRlc3QsIENvbnN0cnVjdG9ycykgewogICB1c2luZyBNeUFsbG9jID0gQ291bnRpbmdBbGxvY2F0
b3I8aW50PjsKICAgdXNpbmcgQWxsb2NWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgNCwg
TXlBbGxvYz47Ci0gIGNvbnN0IGludCBpYVtdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3IH07
CisgIGNvbnN0IGludCBpYVtdID0gezAsIDEsIDIsIDMsIDQsIDUsIDYsIDd9OwogICBpbnQ2NF90
IGFsbG9jYXRlZCA9IDA7CiAgIE15QWxsb2MgYWxsb2MoJmFsbG9jYXRlZCk7CiAgIHsgQWxsb2NW
ZWMgQUJTTF9BVFRSSUJVVEVfVU5VU0VEIHY7IH0KQEAgLTE2MTEsNyArMTU2Niw3IEBAIFRFU1Qo
QWxsb2NhdG9yU3VwcG9ydFRlc3QsIENvbnN0cnVjdG9ycykgewogVEVTVChBbGxvY2F0b3JTdXBw
b3J0VGVzdCwgQ291bnRBbGxvY2F0aW9ucykgewogICB1c2luZyBNeUFsbG9jID0gQ291bnRpbmdB
bGxvY2F0b3I8aW50PjsKICAgdXNpbmcgQWxsb2NWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPGlu
dCwgNCwgTXlBbGxvYz47Ci0gIGNvbnN0IGludCBpYVtdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2
LCA3IH07CisgIGNvbnN0IGludCBpYVtdID0gezAsIDEsIDIsIDMsIDQsIDUsIDYsIDd9OwogICBp
bnQ2NF90IGFsbG9jYXRlZCA9IDA7CiAgIE15QWxsb2MgYWxsb2MoJmFsbG9jYXRlZCk7CiAgIHsK
QEAgLTE2NzUsOCArMTYzMCw4IEBAIFRFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIFN3YXBCb3Ro
QWxsb2NhdGVkKSB7CiAgIGludDY0X3QgYWxsb2NhdGVkMSA9IDA7CiAgIGludDY0X3QgYWxsb2Nh
dGVkMiA9IDA7CiAgIHsKLSAgICBjb25zdCBpbnQgaWExW10gPSB7IDAsIDEsIDIsIDMsIDQsIDUs
IDYsIDcgfTsKLSAgICBjb25zdCBpbnQgaWEyW10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcs
IDggfTsKKyAgICBjb25zdCBpbnQgaWExW10gPSB7MCwgMSwgMiwgMywgNCwgNSwgNiwgN307Cisg
ICAgY29uc3QgaW50IGlhMltdID0gezAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDh9OwogICAgIE15
QWxsb2MgYTEoJmFsbG9jYXRlZDEpOwogICAgIE15QWxsb2MgYTIoJmFsbG9jYXRlZDIpOwogICAg
IEFsbG9jVmVjIHYxKGlhMSwgaWExICsgQUJTTF9BUlJBWVNJWkUoaWExKSwgYTEpOwpAQCAtMTcw
MCw4ICsxNjU1LDggQEAgVEVTVChBbGxvY2F0b3JTdXBwb3J0VGVzdCwgU3dhcE9uZUFsbG9jYXRl
ZCkgewogICBpbnQ2NF90IGFsbG9jYXRlZDEgPSAwOwogICBpbnQ2NF90IGFsbG9jYXRlZDIgPSAw
OwogICB7Ci0gICAgY29uc3QgaW50IGlhMVtdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3IH07
Ci0gICAgY29uc3QgaW50IGlhMltdID0geyAwLCAxLCAyLCAzIH07CisgICAgY29uc3QgaW50IGlh
MVtdID0gezAsIDEsIDIsIDMsIDQsIDUsIDYsIDd9OworICAgIGNvbnN0IGludCBpYTJbXSA9IHsw
LCAxLCAyLCAzfTsKICAgICBNeUFsbG9jIGExKCZhbGxvY2F0ZWQxKTsKICAgICBNeUFsbG9jIGEy
KCZhbGxvY2F0ZWQyKTsKICAgICBBbGxvY1ZlYyB2MShpYTEsIGlhMSArIEFCU0xfQVJSQVlTSVpF
KGlhMSksIGExKTsKQEAgLTE3MjAsNDggKzE2NzUsNTMgQEAgVEVTVChBbGxvY2F0b3JTdXBwb3J0
VGVzdCwgU3dhcE9uZUFsbG9jYXRlZCkgewogICBFWFBFQ1RfVEhBVChhbGxvY2F0ZWQyLCAwKTsK
IH0KIAotVEVTVChBbGxvY2F0b3JTdXBwb3J0VGVzdCwgU2NvcGVkQWxsb2NhdG9yV29ya3MpIHsK
K1RFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIFNjb3BlZEFsbG9jYXRvcldvcmtzSW5saW5lZCkg
ewogICB1c2luZyBTdGRWZWN0b3IgPSBzdGQ6OnZlY3RvcjxpbnQsIENvdW50aW5nQWxsb2NhdG9y
PGludD4+OwotICB1c2luZyBNeUFsbG9jID0KLSAgICAgIHN0ZDo6c2NvcGVkX2FsbG9jYXRvcl9h
ZGFwdG9yPENvdW50aW5nQWxsb2NhdG9yPFN0ZFZlY3Rvcj4+OwotICB1c2luZyBBbGxvY1ZlYyA9
IGFic2w6OklubGluZWRWZWN0b3I8U3RkVmVjdG9yLCA0LCBNeUFsbG9jPjsKKyAgdXNpbmcgQWxs
b2MgPSBDb3VudGluZ0FsbG9jYXRvcjxTdGRWZWN0b3I+OworICB1c2luZyBTY29wZWRBbGxvYyA9
IHN0ZDo6c2NvcGVkX2FsbG9jYXRvcl9hZGFwdG9yPEFsbG9jPjsKKyAgdXNpbmcgQWxsb2NWZWMg
PSBhYnNsOjpJbmxpbmVkVmVjdG9yPFN0ZFZlY3RvciwgMSwgU2NvcGVkQWxsb2M+OwogCi0gIGlu
dDY0X3QgYWxsb2NhdGVkID0gMDsKLSAgQWxsb2NWZWMgdmVjKE15QWxsb2N7Q291bnRpbmdBbGxv
Y2F0b3I8U3RkVmVjdG9yPnsmYWxsb2NhdGVkfX0pOwotICBFWFBFQ1RfRVEoYWxsb2NhdGVkLCAw
KTsKKyAgaW50NjRfdCB0b3RhbF9hbGxvY2F0ZWRfYnl0ZV9jb3VudCA9IDA7CiAKLSAgLy8gVGhp
cyBkZWZhdWx0IGNvbnN0cnVjdHMgYSB2ZWN0b3I8aW50PiwgYnV0IHRoZSBhbGxvY2F0b3Igc2hv
dWxkIHBhc3MgaXRzZWxmCi0gIC8vIGludG8gdGhlIHZlY3RvcjxpbnQ+LgotICAvLyBUaGUgYWJz
bDo6SW5saW5lZFZlY3RvciBkb2VzIG5vdCBhbGxvY2F0ZSBhbnkgbWVtb3J5LgotICAvLyBUaGUg
dmVjdG9yPGludD4gZG9lcyBub3QgYWxsb2NhdGUgYW55IG1lbW9yeS4KLSAgdmVjLnJlc2l6ZSgx
KTsKLSAgRVhQRUNUX0VRKGFsbG9jYXRlZCwgMCk7CisgIEFsbG9jVmVjIGlubGluZWRfY2FzZShT
Y29wZWRBbGxvYyhBbGxvYygrJnRvdGFsX2FsbG9jYXRlZF9ieXRlX2NvdW50KSkpOwogCi0gIC8v
IFdlIG1ha2UgdmVjdG9yPGludD4gYWxsb2NhdGUgbWVtb3J5LgotICAvLyBJdCBtdXN0IGdvIHRo
cm91Z2ggdGhlIGFsbG9jYXRvciBldmVuIHRob3VnaCB3ZSBkaWRuJ3QgY29uc3RydWN0IHRoZQot
ICAvLyB2ZWN0b3IgZGlyZWN0bHkuCi0gIHZlY1swXS5wdXNoX2JhY2soMSk7Ci0gIEVYUEVDVF9F
UShhbGxvY2F0ZWQsIHNpemVvZihpbnQpICogMSk7CisgIC8vIENhbGxlZCBvbmx5IG9uY2UgdG8g
cmVtYWluIGlubGluZWQKKyAgaW5saW5lZF9jYXNlLmVtcGxhY2VfYmFjaygpOwogCi0gIC8vIEFu
b3RoZXIgYWxsb2NhdGluZyB2ZWN0b3IuCi0gIHZlYy5wdXNoX2JhY2sodmVjWzBdKTsKLSAgRVhQ
RUNUX0VRKGFsbG9jYXRlZCwgc2l6ZW9mKGludCkgKiAyKTsKKyAgaW50NjRfdCBhYnNsX3Jlc3Bv
bnNpYmxlX2Zvcl9jb3VudCA9IHRvdGFsX2FsbG9jYXRlZF9ieXRlX2NvdW50OworICBFWFBFQ1Rf
RVEoYWJzbF9yZXNwb25zaWJsZV9mb3JfY291bnQsIDApOwogCi0gIC8vIE92ZXJmbG93IHRoZSBp
bmxpbmVkIG1lbW9yeS4KLSAgLy8gVGhlIGFic2w6OklubGluZWRWZWN0b3Igd2lsbCBub3cgYWxs
b2NhdGUuCi0gIHZlYy5yZXNpemUoNSk7Ci0gIEVYUEVDVF9FUShhbGxvY2F0ZWQsIHNpemVvZihp
bnQpICogMiArIHNpemVvZihTdGRWZWN0b3IpICogOCk7CisgIGlubGluZWRfY2FzZVswXS5lbXBs
YWNlX2JhY2soKTsKKyAgRVhQRUNUX0dUKHRvdGFsX2FsbG9jYXRlZF9ieXRlX2NvdW50LCBhYnNs
X3Jlc3BvbnNpYmxlX2Zvcl9jb3VudCk7CiAKLSAgLy8gQWRkaW5nIG9uZSBtb3JlIGluIGV4dGVy
bmFsIG1vZGUgc2hvdWxkIGFsc28gd29yay4KLSAgdmVjLnB1c2hfYmFjayh2ZWNbMF0pOwotICBF
WFBFQ1RfRVEoYWxsb2NhdGVkLCBzaXplb2YoaW50KSAqIDMgKyBzaXplb2YoU3RkVmVjdG9yKSAq
IDgpOworICBpbmxpbmVkX2Nhc2UuY2xlYXIoKTsKKyAgaW5saW5lZF9jYXNlLnNocmlua190b19m
aXQoKTsKKyAgRVhQRUNUX0VRKHRvdGFsX2FsbG9jYXRlZF9ieXRlX2NvdW50LCAwKTsKK30KIAot
ICAvLyBBbmQgZXh0ZW5kaW5nIHRoZXNlIHNob3VsZCBzdGlsbCB3b3JrLgotICB2ZWNbMF0ucHVz
aF9iYWNrKDEpOwotICBFWFBFQ1RfRVEoYWxsb2NhdGVkLCBzaXplb2YoaW50KSAqIDQgKyBzaXpl
b2YoU3RkVmVjdG9yKSAqIDgpOworVEVTVChBbGxvY2F0b3JTdXBwb3J0VGVzdCwgU2NvcGVkQWxs
b2NhdG9yV29ya3NBbGxvY2F0ZWQpIHsKKyAgdXNpbmcgU3RkVmVjdG9yID0gc3RkOjp2ZWN0b3I8
aW50LCBDb3VudGluZ0FsbG9jYXRvcjxpbnQ+PjsKKyAgdXNpbmcgQWxsb2MgPSBDb3VudGluZ0Fs
bG9jYXRvcjxTdGRWZWN0b3I+OworICB1c2luZyBTY29wZWRBbGxvYyA9IHN0ZDo6c2NvcGVkX2Fs
bG9jYXRvcl9hZGFwdG9yPEFsbG9jPjsKKyAgdXNpbmcgQWxsb2NWZWMgPSBhYnNsOjpJbmxpbmVk
VmVjdG9yPFN0ZFZlY3RvciwgMSwgU2NvcGVkQWxsb2M+OwogCi0gIHZlYy5jbGVhcigpOwotICBF
WFBFQ1RfRVEoYWxsb2NhdGVkLCAwKTsKKyAgaW50NjRfdCB0b3RhbF9hbGxvY2F0ZWRfYnl0ZV9j
b3VudCA9IDA7CisKKyAgQWxsb2NWZWMgYWxsb2NhdGVkX2Nhc2UoU2NvcGVkQWxsb2MoQWxsb2Mo
KyZ0b3RhbF9hbGxvY2F0ZWRfYnl0ZV9jb3VudCkpKTsKKworICAvLyBDYWxsZWQgdHdpY2UgdG8g
Zm9yY2UgaW50byBiZWluZyBhbGxvY2F0ZWQKKyAgYWxsb2NhdGVkX2Nhc2UuZW1wbGFjZV9iYWNr
KCk7CisgIGFsbG9jYXRlZF9jYXNlLmVtcGxhY2VfYmFjaygpOworCisgIGludDY0X3QgYWJzbF9y
ZXNwb25zaWJsZV9mb3JfY291bnQgPSB0b3RhbF9hbGxvY2F0ZWRfYnl0ZV9jb3VudDsKKyAgRVhQ
RUNUX0dUKGFic2xfcmVzcG9uc2libGVfZm9yX2NvdW50LCAwKTsKKworICBhbGxvY2F0ZWRfY2Fz
ZVsxXS5lbXBsYWNlX2JhY2soKTsKKyAgRVhQRUNUX0dUKHRvdGFsX2FsbG9jYXRlZF9ieXRlX2Nv
dW50LCBhYnNsX3Jlc3BvbnNpYmxlX2Zvcl9jb3VudCk7CisKKyAgYWxsb2NhdGVkX2Nhc2UuY2xl
YXIoKTsKKyAgYWxsb2NhdGVkX2Nhc2Uuc2hyaW5rX3RvX2ZpdCgpOworICBFWFBFQ1RfRVEodG90
YWxfYWxsb2NhdGVkX2J5dGVfY291bnQsIDApOwogfQogCiBURVNUKEFsbG9jYXRvclN1cHBvcnRU
ZXN0LCBTaXplQWxsb2NDb25zdHJ1Y3RvcikgewpAQCAtMTc5MCw0ICsxNzUwLDIzIEBAIFRFU1Qo
QWxsb2NhdG9yU3VwcG9ydFRlc3QsIFNpemVBbGxvY0NvbnN0cnVjdG9yKSB7CiAgIH0KIH0KIAor
VEVTVChJbmxpbmVkVmVjdG9yVGVzdCwgQWJzbEhhc2hWYWx1ZVdvcmtzKSB7CisgIHVzaW5nIFYg
PSBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgND47CisgIHN0ZDo6dmVjdG9yPFY+IGNhc2VzOwor
CisgIC8vIEdlbmVyYXRlIGEgdmFyaWV0eSBvZiB2ZWN0b3JzIHNvbWUgb2YgdGhlc2UgYXJlIHNt
YWxsIGVub3VnaCBmb3IgdGhlIGlubGluZQorICAvLyBzcGFjZSBidXQgYXJlIHN0b3JlZCBvdXQg
b2YgbGluZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgViB2OworICAg
IGZvciAoaW50IGogPSAwOyBqIDwgaTsgKytqKSB7CisgICAgICB2LnB1c2hfYmFjayhqKTsKKyAg
ICB9CisgICAgY2FzZXMucHVzaF9iYWNrKHYpOworICAgIHYucmVzaXplKGkgJSA0KTsKKyAgICBj
YXNlcy5wdXNoX2JhY2sodik7CisgIH0KKworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBl
SW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNhc2VzKSk7Cit9CisKIH0gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9idHJlZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2J0cmVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU2MWE0ZDYy
ZmU0YTFkYWQwZmQ3OWVhOGJkOTQwMzhjZTA2NDcwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9idHJlZS5oCkBAIC0wLDAgKzEsMjYxMCBAQAorLy8gQ29weXJp
Z2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKy8vIEEgYnRyZWUgaW1wbGVtZW50YXRp
b24gb2YgdGhlIFNUTCBzZXQgYW5kIG1hcCBpbnRlcmZhY2VzLiBBIGJ0cmVlIGlzIHNtYWxsZXIK
Ky8vIGFuZCBnZW5lcmFsbHkgYWxzbyBmYXN0ZXIgdGhhbiBTVEwgc2V0L21hcCAocmVmZXIgdG8g
dGhlIGJlbmNobWFya3MgYmVsb3cpLgorLy8gVGhlIHJlZC1ibGFjayB0cmVlIGltcGxlbWVudGF0
aW9uIG9mIFNUTCBzZXQvbWFwIGhhcyBhbiBvdmVyaGVhZCBvZiAzCisvLyBwb2ludGVycyAobGVm
dCwgcmlnaHQgYW5kIHBhcmVudCkgcGx1cyB0aGUgbm9kZSBjb2xvciBpbmZvcm1hdGlvbiBmb3Ig
ZWFjaAorLy8gc3RvcmVkIHZhbHVlLiBTbyBhIHNldDxpbnQzMl90PiBjb25zdW1lcyA0MCBieXRl
cyBmb3IgZWFjaCB2YWx1ZSBzdG9yZWQgaW4KKy8vIDY0LWJpdCBtb2RlLiBUaGlzIGJ0cmVlIGlt
cGxlbWVudGF0aW9uIHN0b3JlcyBtdWx0aXBsZSB2YWx1ZXMgb24gZml4ZWQKKy8vIHNpemUgbm9k
ZXMgKHVzdWFsbHkgMjU2IGJ5dGVzKSBhbmQgZG9lc24ndCBzdG9yZSBjaGlsZCBwb2ludGVycyBm
b3IgbGVhZgorLy8gbm9kZXMuIFRoZSByZXN1bHQgaXMgdGhhdCBhIGJ0cmVlX3NldDxpbnQzMl90
PiBtYXkgdXNlIG11Y2ggbGVzcyBtZW1vcnkgcGVyCisvLyBzdG9yZWQgdmFsdWUuIEZvciB0aGUg
cmFuZG9tIGluc2VydGlvbiBiZW5jaG1hcmsgaW4gYnRyZWVfYmVuY2guY2MsIGEKKy8vIGJ0cmVl
X3NldDxpbnQzMl90PiB3aXRoIG5vZGUtc2l6ZSBvZiAyNTYgdXNlcyA1LjEgYnl0ZXMgcGVyIHN0
b3JlZCB2YWx1ZS4KKy8vCisvLyBUaGUgcGFja2luZyBvZiBtdWx0aXBsZSB2YWx1ZXMgb24gdG8g
ZWFjaCBub2RlIG9mIGEgYnRyZWUgaGFzIGFub3RoZXIgZWZmZWN0CisvLyBiZXNpZGVzIGJldHRl
ciBzcGFjZSB1dGlsaXphdGlvbjogYmV0dGVyIGNhY2hlIGxvY2FsaXR5IGR1ZSB0byBmZXdlciBj
YWNoZQorLy8gbGluZXMgYmVpbmcgYWNjZXNzZWQuIEJldHRlciBjYWNoZSBsb2NhbGl0eSB0cmFu
c2xhdGVzIGludG8gZmFzdGVyCisvLyBvcGVyYXRpb25zLgorLy8KKy8vIENBVkVBVFMKKy8vCisv
LyBJbnNlcnRpb25zIGFuZCBkZWxldGlvbnMgb24gYSBidHJlZSBjYW4gY2F1c2Ugc3BsaXR0aW5n
LCBtZXJnaW5nIG9yCisvLyByZWJhbGFuY2luZyBvZiBidHJlZSBub2Rlcy4gQW5kIGV2ZW4gd2l0
aG91dCB0aGVzZSBvcGVyYXRpb25zLCBpbnNlcnRpb25zCisvLyBhbmQgZGVsZXRpb25zIG9uIGEg
YnRyZWUgd2lsbCBtb3ZlIHZhbHVlcyBhcm91bmQgd2l0aGluIGEgbm9kZS4gSW4gYm90aAorLy8g
Y2FzZXMsIHRoZSByZXN1bHQgaXMgdGhhdCBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMgY2FuIGlu
dmFsaWRhdGUgaXRlcmF0b3JzCisvLyBwb2ludGluZyB0byB2YWx1ZXMgb3RoZXIgdGhhbiB0aGUg
b25lIGJlaW5nIGluc2VydGVkL2RlbGV0ZWQuIFRoZXJlZm9yZSwgdGhpcworLy8gY29udGFpbmVy
IGRvZXMgbm90IHByb3ZpZGUgcG9pbnRlciBzdGFiaWxpdHkuIFRoaXMgaXMgbm90YWJseSBkaWZm
ZXJlbnQgZnJvbQorLy8gU1RMIHNldC9tYXAgd2hpY2ggdGFrZXMgY2FyZSB0byBub3QgaW52YWxp
ZGF0ZSBpdGVyYXRvcnMgb24gaW5zZXJ0L2VyYXNlCisvLyBleGNlcHQsIG9mIGNvdXJzZSwgZm9y
IGl0ZXJhdG9ycyBwb2ludGluZyB0byB0aGUgdmFsdWUgYmVpbmcgZXJhc2VkLiAgQQorLy8gcGFy
dGlhbCB3b3JrYXJvdW5kIHdoZW4gZXJhc2luZyBpcyBhdmFpbGFibGU6IGVyYXNlKCkgcmV0dXJu
cyBhbiBpdGVyYXRvcgorLy8gcG9pbnRpbmcgdG8gdGhlIGl0ZW0ganVzdCBhZnRlciB0aGUgb25l
IHRoYXQgd2FzIGVyYXNlZCAob3IgZW5kKCkgaWYgbm9uZQorLy8gZXhpc3RzKS4KKworI2lmbmRl
ZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9CVFJFRV9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5F
Ul9JTlRFUk5BTF9CVFJFRV9IXworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNh
c3NlcnQ+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUg
PGNzdHJpbmc+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNp
bmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bmV3PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9i
YXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbW1vbi5o
IgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbXByZXNzZWRfdHVwbGUuaCIK
KyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiCisj
aW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0LmgiCisjaW5jbHVkZSAiYWJz
bC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYWJzbC90eXBl
cy9jb21wYXJlLmgiCisjaW5jbHVkZSAiYWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKKworbmFtZXNw
YWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKKy8vIEEgaGVscGVy
IGNsYXNzIHRoYXQgaW5kaWNhdGVzIGlmIHRoZSBDb21wYXJlIHBhcmFtZXRlciBpcyBhIGtleS1j
b21wYXJlLXRvCisvLyBjb21wYXJhdG9yLgordGVtcGxhdGUgPHR5cGVuYW1lIENvbXBhcmUsIHR5
cGVuYW1lIFQ+Cit1c2luZyBidHJlZV9pc19rZXlfY29tcGFyZV90byA9CisgICAgc3RkOjppc19j
b252ZXJ0aWJsZTxhYnNsOjpyZXN1bHRfb2ZfdDxDb21wYXJlKGNvbnN0IFQgJiwgY29uc3QgVCAm
KT4sCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjp3ZWFrX29yZGVyaW5nPjsKKworc3Ry
dWN0IFN0cmluZ0J0cmVlRGVmYXVsdExlc3MgeworICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZv
aWQ7CisKKyAgU3RyaW5nQnRyZWVEZWZhdWx0TGVzcygpID0gZGVmYXVsdDsKKworICAvLyBDb21w
YXRpYmlsaXR5IGNvbnN0cnVjdG9yLgorICBTdHJpbmdCdHJlZURlZmF1bHRMZXNzKHN0ZDo6bGVz
czxzdGQ6OnN0cmluZz4pIHt9ICAvLyBOT0xJTlQKKyAgU3RyaW5nQnRyZWVEZWZhdWx0TGVzcyhz
dGQ6Omxlc3M8c3RyaW5nX3ZpZXc+KSB7fSAgLy8gTk9MSU5UCisKKyAgYWJzbDo6d2Vha19vcmRl
cmluZyBvcGVyYXRvcigpKGFic2w6OnN0cmluZ192aWV3IGxocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3IHJocykgY29uc3QgeworICAgIHJldHVy
biBjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZyhsaHMuY29tcGFy
ZShyaHMpKTsKKyAgfQorfTsKKworc3RydWN0IFN0cmluZ0J0cmVlRGVmYXVsdEdyZWF0ZXIgewor
ICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7CisKKyAgU3RyaW5nQnRyZWVEZWZhdWx0R3Jl
YXRlcigpID0gZGVmYXVsdDsKKworICBTdHJpbmdCdHJlZURlZmF1bHRHcmVhdGVyKHN0ZDo6Z3Jl
YXRlcjxzdGQ6OnN0cmluZz4pIHt9ICAvLyBOT0xJTlQKKyAgU3RyaW5nQnRyZWVEZWZhdWx0R3Jl
YXRlcihzdGQ6OmdyZWF0ZXI8c3RyaW5nX3ZpZXc+KSB7fSAgLy8gTk9MSU5UCisKKyAgYWJzbDo6
d2Vha19vcmRlcmluZyBvcGVyYXRvcigpKGFic2w6OnN0cmluZ192aWV3IGxocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3IHJocykgY29uc3Qgewor
ICAgIHJldHVybiBjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZyhy
aHMuY29tcGFyZShsaHMpKTsKKyAgfQorfTsKKworLy8gQSBoZWxwZXIgY2xhc3MgdG8gY29udmVy
dCBhIGJvb2xlYW4gY29tcGFyaXNvbiBpbnRvIGEgdGhyZWUtd2F5ICJjb21wYXJlLXRvIgorLy8g
Y29tcGFyaXNvbiB0aGF0IHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZSB0byBpbmRpY2F0ZSBsZXNz
LXRoYW4sIHplcm8gdG8KKy8vIGluZGljYXRlIGVxdWFsaXR5IGFuZCBhIHBvc2l0aXZlIHZhbHVl
IHRvIGluZGljYXRlIGdyZWF0ZXItdGhhbi4gVGhpcyBoZWxwZXIKKy8vIGNsYXNzIGlzIHNwZWNp
YWxpemVkIGZvciBsZXNzPHN0ZDo6c3RyaW5nPiwgZ3JlYXRlcjxzdGQ6OnN0cmluZz4sCisvLyBs
ZXNzPHN0cmluZ192aWV3PiwgYW5kIGdyZWF0ZXI8c3RyaW5nX3ZpZXc+LgorLy8KKy8vIGtleV9j
b21wYXJlX3RvX2FkYXB0ZXIgaXMgcHJvdmlkZWQgc28gdGhhdCBidHJlZSB1c2VycworLy8gYXV0
b21hdGljYWxseSBnZXQgdGhlIG1vcmUgZWZmaWNpZW50IGNvbXBhcmUtdG8gY29kZSB3aGVuIHVz
aW5nIGNvbW1vbgorLy8gZ29vZ2xlIHN0cmluZyB0eXBlcyB3aXRoIGNvbW1vbiBjb21wYXJpc29u
IGZ1bmN0b3JzLgorLy8gVGhlc2Ugc3RyaW5nLWxpa2Ugc3BlY2lhbGl6YXRpb25zIGFsc28gdHVy
biBvbiBoZXRlcm9nZW5lb3VzIGxvb2t1cCBieQorLy8gZGVmYXVsdC4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBDb21wYXJlPgorc3RydWN0IGtleV9jb21wYXJlX3RvX2FkYXB0ZXIgeworICB1c2luZyB0
eXBlID0gQ29tcGFyZTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3Qga2V5X2NvbXBhcmVfdG9f
YWRhcHRlcjxzdGQ6Omxlc3M8c3RkOjpzdHJpbmc+PiB7CisgIHVzaW5nIHR5cGUgPSBTdHJpbmdC
dHJlZURlZmF1bHRMZXNzOworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBrZXlfY29tcGFyZV90
b19hZGFwdGVyPHN0ZDo6Z3JlYXRlcjxzdGQ6OnN0cmluZz4+IHsKKyAgdXNpbmcgdHlwZSA9IFN0
cmluZ0J0cmVlRGVmYXVsdEdyZWF0ZXI7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IGtleV9j
b21wYXJlX3RvX2FkYXB0ZXI8c3RkOjpsZXNzPGFic2w6OnN0cmluZ192aWV3Pj4geworICB1c2lu
ZyB0eXBlID0gU3RyaW5nQnRyZWVEZWZhdWx0TGVzczsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1
Y3Qga2V5X2NvbXBhcmVfdG9fYWRhcHRlcjxzdGQ6OmdyZWF0ZXI8YWJzbDo6c3RyaW5nX3ZpZXc+
PiB7CisgIHVzaW5nIHR5cGUgPSBTdHJpbmdCdHJlZURlZmF1bHRHcmVhdGVyOworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgQWxsb2MsIGlu
dCBUYXJnZXROb2RlU2l6ZSwKKyAgICAgICAgICBib29sIE11bHRpLCB0eXBlbmFtZSBTbG90UG9s
aWN5Pgorc3RydWN0IGNvbW1vbl9wYXJhbXMgeworICAvLyBJZiBDb21wYXJlIGlzIGEgY29tbW9u
IGNvbXBhcmF0b3IgZm9yIGEgc3RkOjpzdHJpbmctbGlrZSB0eXBlLCB0aGVuIHdlIGFkYXB0IGl0
CisgIC8vIHRvIHVzZSBoZXRlcm9nZW5lb3VzIGxvb2t1cCBhbmQgdG8gYmUgYSBrZXktY29tcGFy
ZS10byBjb21wYXJhdG9yLgorICB1c2luZyBrZXlfY29tcGFyZSA9IHR5cGVuYW1lIGtleV9jb21w
YXJlX3RvX2FkYXB0ZXI8Q29tcGFyZT46OnR5cGU7CisgIC8vIEEgdHlwZSB3aGljaCBpbmRpY2F0
ZXMgaWYgd2UgaGF2ZSBhIGtleS1jb21wYXJlLXRvIGZ1bmN0b3Igb3IgYSBwbGFpbiBvbGQKKyAg
Ly8ga2V5LWNvbXBhcmUgZnVuY3Rvci4KKyAgdXNpbmcgaXNfa2V5X2NvbXBhcmVfdG8gPSBidHJl
ZV9pc19rZXlfY29tcGFyZV90bzxrZXlfY29tcGFyZSwgS2V5PjsKKworICB1c2luZyBhbGxvY2F0
b3JfdHlwZSA9IEFsbG9jOworICB1c2luZyBrZXlfdHlwZSA9IEtleTsKKyAgdXNpbmcgc2l6ZV90
eXBlID0gc3RkOjptYWtlX3NpZ25lZDxzaXplX3Q+Ojp0eXBlOworICB1c2luZyBkaWZmZXJlbmNl
X3R5cGUgPSBwdHJkaWZmX3Q7CisKKyAgLy8gVHJ1ZSBpZiB0aGlzIGlzIGEgbXVsdGlzZXQgb3Ig
bXVsdGltYXAuCisgIHVzaW5nIGlzX211bHRpX2NvbnRhaW5lciA9IHN0ZDo6aW50ZWdyYWxfY29u
c3RhbnQ8Ym9vbCwgTXVsdGk+OworCisgIHVzaW5nIHNsb3RfcG9saWN5ID0gU2xvdFBvbGljeTsK
KyAgdXNpbmcgc2xvdF90eXBlID0gdHlwZW5hbWUgc2xvdF9wb2xpY3k6OnNsb3RfdHlwZTsKKyAg
dXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIHNsb3RfcG9saWN5Ojp2YWx1ZV90eXBlOworICB1
c2luZyBpbml0X3R5cGUgPSB0eXBlbmFtZSBzbG90X3BvbGljeTo6bXV0YWJsZV92YWx1ZV90eXBl
OworICB1c2luZyBwb2ludGVyID0gdmFsdWVfdHlwZSAqOworICB1c2luZyBjb25zdF9wb2ludGVy
ID0gY29uc3QgdmFsdWVfdHlwZSAqOworICB1c2luZyByZWZlcmVuY2UgPSB2YWx1ZV90eXBlICY7
CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IGNvbnN0IHZhbHVlX3R5cGUgJjsKKworICBlbnVt
IHsKKyAgICBrVGFyZ2V0Tm9kZVNpemUgPSBUYXJnZXROb2RlU2l6ZSwKKworICAgIC8vIFVwcGVy
IGJvdW5kIGZvciB0aGUgYXZhaWxhYmxlIHNwYWNlIGZvciB2YWx1ZXMuIFRoaXMgaXMgbGFyZ2Vz
dCBmb3IgbGVhZgorICAgIC8vIG5vZGVzLCB3aGljaCBoYXZlIG92ZXJoZWFkIG9mIGF0IGxlYXN0
IGEgcG9pbnRlciArIDQgYnl0ZXMgKGZvciBzdG9yaW5nCisgICAgLy8gMyBmaWVsZF90eXBlcyBh
bmQgYW4gZW51bSkuCisgICAga05vZGVWYWx1ZVNwYWNlID0KKyAgICAgICAgVGFyZ2V0Tm9kZVNp
emUgLSAvKm1pbmltdW0gb3ZlcmhlYWQ9Ki8oc2l6ZW9mKHZvaWQgKikgKyA0KSwKKyAgfTsKKwor
ICAvLyBUaGlzIGlzIGFuIGludGVncmFsIHR5cGUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYXMgbWFu
eQorICAvLyBWYWx1ZVNpemUtdmFsdWVzIGFzIHdpbGwgZml0IGEgbm9kZSBvZiBUYXJnZXROb2Rl
U2l6ZSBieXRlcy4KKyAgdXNpbmcgbm9kZV9jb3VudF90eXBlID0KKyAgICAgIGFic2w6OmNvbmRp
dGlvbmFsX3Q8KGtOb2RlVmFsdWVTcGFjZSAvIHNpemVvZih2YWx1ZV90eXBlKSA+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KSgp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QsIHVpbnQ4X3Q+OyAgLy8gTk9M
SU5UCisKKyAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBuZWNlc3NhcnkgZm9yIHBhc3Np
bmcgdGhpcyBzdHJ1Y3QgYXMgUG9saWN5VHJhaXRzCisgIC8vIGZvciBub2RlX2hhbmRsZSBhbmQv
b3IgYXJlIHVzZWQgd2l0aGluIGJ0cmVlLgorICBzdGF0aWMgdmFsdWVfdHlwZSAmZWxlbWVudChz
bG90X3R5cGUgKnNsb3QpIHsKKyAgICByZXR1cm4gc2xvdF9wb2xpY3k6OmVsZW1lbnQoc2xvdCk7
CisgIH0KKyAgc3RhdGljIGNvbnN0IHZhbHVlX3R5cGUgJmVsZW1lbnQoY29uc3Qgc2xvdF90eXBl
ICpzbG90KSB7CisgICAgcmV0dXJuIHNsb3RfcG9saWN5OjplbGVtZW50KHNsb3QpOworICB9Cisg
IHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2Mg
KmFsbG9jLCBzbG90X3R5cGUgKnNsb3QsIEFyZ3MgJiYuLi4gYXJncykgeworICAgIHNsb3RfcG9s
aWN5Ojpjb25zdHJ1Y3QoYWxsb2MsIHNsb3QsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7
CisgIH0KKyAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9jICphbGxvYywgc2xvdF90eXBlICpz
bG90LCBzbG90X3R5cGUgKm90aGVyKSB7CisgICAgc2xvdF9wb2xpY3k6OmNvbnN0cnVjdChhbGxv
Yywgc2xvdCwgb3RoZXIpOworICB9CisgIHN0YXRpYyB2b2lkIGRlc3Ryb3koQWxsb2MgKmFsbG9j
LCBzbG90X3R5cGUgKnNsb3QpIHsKKyAgICBzbG90X3BvbGljeTo6ZGVzdHJveShhbGxvYywgc2xv
dCk7CisgIH0KKyAgc3RhdGljIHZvaWQgdHJhbnNmZXIoQWxsb2MgKmFsbG9jLCBzbG90X3R5cGUg
Km5ld19zbG90LCBzbG90X3R5cGUgKm9sZF9zbG90KSB7CisgICAgY29uc3RydWN0KGFsbG9jLCBu
ZXdfc2xvdCwgb2xkX3Nsb3QpOworICAgIGRlc3Ryb3koYWxsb2MsIG9sZF9zbG90KTsKKyAgfQor
ICBzdGF0aWMgdm9pZCBzd2FwKEFsbG9jICphbGxvYywgc2xvdF90eXBlICphLCBzbG90X3R5cGUg
KmIpIHsKKyAgICBzbG90X3BvbGljeTo6c3dhcChhbGxvYywgYSwgYik7CisgIH0KKyAgc3RhdGlj
IHZvaWQgbW92ZShBbGxvYyAqYWxsb2MsIHNsb3RfdHlwZSAqc3JjLCBzbG90X3R5cGUgKmRlc3Qp
IHsKKyAgICBzbG90X3BvbGljeTo6bW92ZShhbGxvYywgc3JjLCBkZXN0KTsKKyAgfQorICBzdGF0
aWMgdm9pZCBtb3ZlKEFsbG9jICphbGxvYywgc2xvdF90eXBlICpmaXJzdCwgc2xvdF90eXBlICps
YXN0LAorICAgICAgICAgICAgICAgICAgIHNsb3RfdHlwZSAqcmVzdWx0KSB7CisgICAgc2xvdF9w
b2xpY3k6Om1vdmUoYWxsb2MsIGZpcnN0LCBsYXN0LCByZXN1bHQpOworICB9Cit9OworCisvLyBB
IHBhcmFtZXRlcnMgc3RydWN0dXJlIGZvciBob2xkaW5nIHRoZSB0eXBlIHBhcmFtZXRlcnMgZm9y
IGEgYnRyZWVfbWFwLgorLy8gQ29tcGFyZSBhbmQgQWxsb2Mgc2hvdWxkIGJlIG5vdGhyb3cgY29w
eS1jb25zdHJ1Y3RpYmxlLgordGVtcGxhdGUgPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgRGF0YSwg
dHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgQWxsb2MsCisgICAgICAgICAgaW50IFRhcmdldE5v
ZGVTaXplLCBib29sIE11bHRpPgorc3RydWN0IG1hcF9wYXJhbXMgOiBjb21tb25fcGFyYW1zPEtl
eSwgQ29tcGFyZSwgQWxsb2MsIFRhcmdldE5vZGVTaXplLCBNdWx0aSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXBfc2xvdF9wb2xpY3k8S2V5LCBEYXRhPj4geworICB1c2lu
ZyBzdXBlcl90eXBlID0gdHlwZW5hbWUgbWFwX3BhcmFtczo6Y29tbW9uX3BhcmFtczsKKyAgdXNp
bmcgbWFwcGVkX3R5cGUgPSBEYXRhOworICAvLyBUaGlzIHR5cGUgYWxsb3dzIHVzIHRvIG1vdmUg
a2V5cyB3aGVuIGl0IGlzIHNhZmUgdG8gZG8gc28uIEl0IGlzIHNhZmUKKyAgLy8gZm9yIG1hcHMg
aW4gd2hpY2ggdmFsdWVfdHlwZSBhbmQgbXV0YWJsZV92YWx1ZV90eXBlIGFyZSBsYXlvdXQgY29t
cGF0aWJsZS4KKyAgdXNpbmcgc2xvdF9wb2xpY3kgPSB0eXBlbmFtZSBzdXBlcl90eXBlOjpzbG90
X3BvbGljeTsKKyAgdXNpbmcgc2xvdF90eXBlID0gdHlwZW5hbWUgc3VwZXJfdHlwZTo6c2xvdF90
eXBlOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgc3VwZXJfdHlwZTo6dmFsdWVfdHlw
ZTsKKyAgdXNpbmcgaW5pdF90eXBlID0gdHlwZW5hbWUgc3VwZXJfdHlwZTo6aW5pdF90eXBlOwor
CisgIHVzaW5nIGtleV9jb21wYXJlID0gdHlwZW5hbWUgc3VwZXJfdHlwZTo6a2V5X2NvbXBhcmU7
CisgIC8vIEluaGVyaXQgZnJvbSBrZXlfY29tcGFyZSBmb3IgZW1wdHkgYmFzZSBjbGFzcyBvcHRp
bWl6YXRpb24uCisgIHN0cnVjdCB2YWx1ZV9jb21wYXJlIDogcHJpdmF0ZSBrZXlfY29tcGFyZSB7
CisgICAgdmFsdWVfY29tcGFyZSgpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCB2YWx1ZV9jb21w
YXJlKGNvbnN0IGtleV9jb21wYXJlICZjbXApIDoga2V5X2NvbXBhcmUoY21wKSB7fQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYXV0byBvcGVyYXRvcigpKGNv
bnN0IFQgJmxlZnQsIGNvbnN0IFUgJnJpZ2h0KSBjb25zdAorICAgICAgICAtPiBkZWNsdHlwZShz
dGQ6OmRlY2x2YWw8a2V5X2NvbXBhcmU+KCkobGVmdC5maXJzdCwgcmlnaHQuZmlyc3QpKSB7Cisg
ICAgICByZXR1cm4ga2V5X2NvbXBhcmU6Om9wZXJhdG9yKCkobGVmdC5maXJzdCwgcmlnaHQuZmly
c3QpOworICAgIH0KKyAgfTsKKyAgdXNpbmcgaXNfbWFwX2NvbnRhaW5lciA9IHN0ZDo6dHJ1ZV90
eXBlOworCisgIHN0YXRpYyBjb25zdCBLZXkgJmtleShjb25zdCB2YWx1ZV90eXBlICZ4KSB7IHJl
dHVybiB4LmZpcnN0OyB9CisgIHN0YXRpYyBjb25zdCBLZXkgJmtleShjb25zdCBpbml0X3R5cGUg
JngpIHsgcmV0dXJuIHguZmlyc3Q7IH0KKyAgc3RhdGljIGNvbnN0IEtleSAma2V5KGNvbnN0IHNs
b3RfdHlwZSAqeCkgeyByZXR1cm4gc2xvdF9wb2xpY3k6OmtleSh4KTsgfQorICBzdGF0aWMgbWFw
cGVkX3R5cGUgJnZhbHVlKHZhbHVlX3R5cGUgKnZhbHVlKSB7IHJldHVybiB2YWx1ZS0+c2Vjb25k
OyB9Cit9OworCisvLyBUaGlzIHR5cGUgaW1wbGVtZW50cyB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9u
cyBmcm9tIHRoZQorLy8gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpzbG90X3R5cGUgaW50ZXJm
YWNlLgordGVtcGxhdGUgPHR5cGVuYW1lIEtleT4KK3N0cnVjdCBzZXRfc2xvdF9wb2xpY3kgewor
ICB1c2luZyBzbG90X3R5cGUgPSBLZXk7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSBLZXk7CisgIHVz
aW5nIG11dGFibGVfdmFsdWVfdHlwZSA9IEtleTsKKworICBzdGF0aWMgdmFsdWVfdHlwZSAmZWxl
bWVudChzbG90X3R5cGUgKnNsb3QpIHsgcmV0dXJuICpzbG90OyB9CisgIHN0YXRpYyBjb25zdCB2
YWx1ZV90eXBlICZlbGVtZW50KGNvbnN0IHNsb3RfdHlwZSAqc2xvdCkgeyByZXR1cm4gKnNsb3Q7
IH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdChBbGxvYyAqYWxsb2MsIHNsb3RfdHlwZSAqc2xvdCwgQXJncyAmJi4u
LiBhcmdzKSB7CisgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OmNvbnN0cnVjdCgq
YWxsb2MsIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEFsbG9jPgorICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2MgKmFsbG9jLCBzbG90X3R5
cGUgKnNsb3QsIHNsb3RfdHlwZSAqb3RoZXIpIHsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRz
PEFsbG9jPjo6Y29uc3RydWN0KCphbGxvYywgc2xvdCwgc3RkOjptb3ZlKCpvdGhlcikpOworICB9
CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgorICBzdGF0aWMgdm9pZCBkZXN0cm95KEFs
bG9jICphbGxvYywgc2xvdF90eXBlICpzbG90KSB7CisgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0
czxBbGxvYz46OmRlc3Ryb3koKmFsbG9jLCBzbG90KTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBBbGxvYz4KKyAgc3RhdGljIHZvaWQgc3dhcChBbGxvYyAqIC8qYWxsb2MqLywgc2xvdF90
eXBlICphLCBzbG90X3R5cGUgKmIpIHsKKyAgICB1c2luZyBzdGQ6OnN3YXA7CisgICAgc3dhcCgq
YSwgKmIpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgorICBzdGF0aWMgdm9p
ZCBtb3ZlKEFsbG9jICogLyphbGxvYyovLCBzbG90X3R5cGUgKnNyYywgc2xvdF90eXBlICpkZXN0
KSB7CisgICAgKmRlc3QgPSBzdGQ6Om1vdmUoKnNyYyk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQWxsb2M+CisgIHN0YXRpYyB2b2lkIG1vdmUoQWxsb2MgKmFsbG9jLCBzbG90X3R5cGUg
KmZpcnN0LCBzbG90X3R5cGUgKmxhc3QsCisgICAgICAgICAgICAgICAgICAgc2xvdF90eXBlICpy
ZXN1bHQpIHsKKyAgICBmb3IgKHNsb3RfdHlwZSAqc3JjID0gZmlyc3QsICpkZXN0ID0gcmVzdWx0
OyBzcmMgIT0gbGFzdDsgKytzcmMsICsrZGVzdCkKKyAgICAgIG1vdmUoYWxsb2MsIHNyYywgZGVz
dCk7CisgIH0KK307CisKKy8vIEEgcGFyYW1ldGVycyBzdHJ1Y3R1cmUgZm9yIGhvbGRpbmcgdGhl
IHR5cGUgcGFyYW1ldGVycyBmb3IgYSBidHJlZV9zZXQuCisvLyBDb21wYXJlIGFuZCBBbGxvYyBz
aG91bGQgYmUgbm90aHJvdyBjb3B5LWNvbnN0cnVjdGlibGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBDb21wYXJlLCB0eXBlbmFtZSBBbGxvYywgaW50IFRhcmdldE5vZGVTaXpl
LAorICAgICAgICAgIGJvb2wgTXVsdGk+CitzdHJ1Y3Qgc2V0X3BhcmFtcyA6IGNvbW1vbl9wYXJh
bXM8S2V5LCBDb21wYXJlLCBBbGxvYywgVGFyZ2V0Tm9kZVNpemUsIE11bHRpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9zbG90X3BvbGljeTxLZXk+PiB7CisgIHVzaW5n
IHZhbHVlX3R5cGUgPSBLZXk7CisgIHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIHNldF9wYXJh
bXM6OmNvbW1vbl9wYXJhbXM6OnNsb3RfdHlwZTsKKyAgdXNpbmcgdmFsdWVfY29tcGFyZSA9IHR5
cGVuYW1lIHNldF9wYXJhbXM6OmNvbW1vbl9wYXJhbXM6OmtleV9jb21wYXJlOworICB1c2luZyBp
c19tYXBfY29udGFpbmVyID0gc3RkOjpmYWxzZV90eXBlOworCisgIHN0YXRpYyBjb25zdCBLZXkg
JmtleShjb25zdCB2YWx1ZV90eXBlICZ4KSB7IHJldHVybiB4OyB9CisgIHN0YXRpYyBjb25zdCBL
ZXkgJmtleShjb25zdCBzbG90X3R5cGUgKngpIHsgcmV0dXJuICp4OyB9Cit9OworCisvLyBBbiBh
ZGFwdGVyIGNsYXNzIHRoYXQgY29udmVydHMgYSBsb3dlci1ib3VuZCBjb21wYXJlIGludG8gYW4g
dXBwZXItYm91bmQKKy8vIGNvbXBhcmUuIE5vdGU6IHRoZXJlIGlzIG5vIG5lZWQgdG8gbWFrZSBh
IHZlcnNpb24gb2YgdGhpcyBhZGFwdGVyIHNwZWNpYWxpemVkCisvLyBmb3Iga2V5LWNvbXBhcmUt
dG8gZnVuY3RvcnMgYmVjYXVzZSB0aGUgdXBwZXItYm91bmQgKHRoZSBmaXJzdCB2YWx1ZSBncmVh
dGVyCisvLyB0aGFuIHRoZSBpbnB1dCkgaXMgbmV2ZXIgYW4gZXhhY3QgbWF0Y2guCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29tcGFyZT4KK3N0cnVjdCB1cHBlcl9ib3VuZF9hZGFwdGVyIHsKKyAgZXhw
bGljaXQgdXBwZXJfYm91bmRfYWRhcHRlcihjb25zdCBDb21wYXJlICZjKSA6IGNvbXAoYykge30K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIExLPgorICBib29sIG9wZXJhdG9yKCko
Y29uc3QgSyAmYSwgY29uc3QgTEsgJmIpIGNvbnN0IHsKKyAgICAvLyBSZXR1cm5zIHRydWUgd2hl
biBhIGlzIG5vdCBncmVhdGVyIHRoYW4gYi4KKyAgICByZXR1cm4gIWNvbXBhcmVfaW50ZXJuYWw6
OmNvbXBhcmVfcmVzdWx0X2FzX2xlc3NfdGhhbihjb21wKGIsIGEpKTsKKyAgfQorCisgcHJpdmF0
ZToKKyAgQ29tcGFyZSBjb21wOworfTsKKworZW51bSBjbGFzcyBNYXRjaEtpbmQgOiB1aW50OF90
IHsga0VxLCBrTmUgfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFYsIGJvb2wgSXNDb21wYXJlVG8+
CitzdHJ1Y3QgU2VhcmNoUmVzdWx0IHsKKyAgViB2YWx1ZTsKKyAgTWF0Y2hLaW5kIG1hdGNoOwor
CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBIYXNNYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAg
Ym9vbCBJc0VxKCkgY29uc3QgeyByZXR1cm4gbWF0Y2ggPT0gTWF0Y2hLaW5kOjprRXE7IH0KK307
CisKKy8vIFdoZW4gd2UgZG9uJ3QgdXNlIENvbXBhcmVUbywgYG1hdGNoYCBpcyBub3QgcHJlc2Vu
dC4KKy8vIFRoaXMgZW5zdXJlcyB0aGF0IGNhbGxlcnMgY2FuJ3QgdXNlIGl0IGFjY2lkZW50YWxs
eSB3aGVuIGl0IHByb3ZpZGVzIG5vCisvLyB1c2VmdWwgaW5mb3JtYXRpb24uCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVj4KK3N0cnVjdCBTZWFyY2hSZXN1bHQ8ViwgZmFsc2U+IHsKKyAgViB2YWx1ZTsK
KworICBzdGF0aWMgY29uc3RleHByIGJvb2wgSGFzTWF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQor
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgSXNFcSgpIHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCisv
LyBBIG5vZGUgaW4gdGhlIGJ0cmVlIGhvbGRpbmcuIFRoZSBzYW1lIG5vZGUgdHlwZSBpcyB1c2Vk
IGZvciBib3RoIGludGVybmFsCisvLyBhbmQgbGVhZiBub2RlcyBpbiB0aGUgYnRyZWUsIHRob3Vn
aCB0aGUgbm9kZXMgYXJlIGFsbG9jYXRlZCBpbiBzdWNoIGEgd2F5CisvLyB0aGF0IHRoZSBjaGls
ZHJlbiBhcnJheSBpcyBvbmx5IHZhbGlkIGluIGludGVybmFsIG5vZGVzLgordGVtcGxhdGUgPHR5
cGVuYW1lIFBhcmFtcz4KK2NsYXNzIGJ0cmVlX25vZGUgeworICB1c2luZyBpc19rZXlfY29tcGFy
ZV90byA9IHR5cGVuYW1lIFBhcmFtczo6aXNfa2V5X2NvbXBhcmVfdG87CisgIHVzaW5nIGlzX211
bHRpX2NvbnRhaW5lciA9IHR5cGVuYW1lIFBhcmFtczo6aXNfbXVsdGlfY29udGFpbmVyOworICB1
c2luZyBmaWVsZF90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjpub2RlX2NvdW50X3R5cGU7CisgIHVz
aW5nIGFsbG9jYXRvcl90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjphbGxvY2F0b3JfdHlwZTsKKyAg
dXNpbmcgc2xvdF90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjpzbG90X3R5cGU7CisKKyBwdWJsaWM6
CisgIHVzaW5nIHBhcmFtc190eXBlID0gUGFyYW1zOworICB1c2luZyBrZXlfdHlwZSA9IHR5cGVu
YW1lIFBhcmFtczo6a2V5X3R5cGU7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBQYXJh
bXM6OnZhbHVlX3R5cGU7CisgIHVzaW5nIHBvaW50ZXIgPSB0eXBlbmFtZSBQYXJhbXM6OnBvaW50
ZXI7CisgIHVzaW5nIGNvbnN0X3BvaW50ZXIgPSB0eXBlbmFtZSBQYXJhbXM6OmNvbnN0X3BvaW50
ZXI7CisgIHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVuYW1lIFBhcmFtczo6cmVmZXJlbmNlOworICB1
c2luZyBjb25zdF9yZWZlcmVuY2UgPSB0eXBlbmFtZSBQYXJhbXM6OmNvbnN0X3JlZmVyZW5jZTsK
KyAgdXNpbmcga2V5X2NvbXBhcmUgPSB0eXBlbmFtZSBQYXJhbXM6OmtleV9jb21wYXJlOworICB1
c2luZyBzaXplX3R5cGUgPSB0eXBlbmFtZSBQYXJhbXM6OnNpemVfdHlwZTsKKyAgdXNpbmcgZGlm
ZmVyZW5jZV90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjpkaWZmZXJlbmNlX3R5cGU7CisKKyAgLy8g
QnRyZWUgZGVjaWRlcyB3aGV0aGVyIHRvIHVzZSBsaW5lYXIgbm9kZSBzZWFyY2ggYXMgZm9sbG93
czoKKyAgLy8gICAtIElmIHRoZSBrZXkgaXMgYXJpdGhtZXRpYyBhbmQgdGhlIGNvbXBhcmF0b3Ig
aXMgc3RkOjpsZXNzIG9yCisgIC8vICAgICBzdGQ6OmdyZWF0ZXIsIGNob29zZSBsaW5lYXIuCisg
IC8vICAgLSBPdGhlcndpc2UsIGNob29zZSBiaW5hcnkuCisgIC8vIFRPRE8oZXpiKTogTWlnaHQg
bWFrZSBzZW5zZSB0byBhZGQgY29uZGl0aW9uKHMpIGJhc2VkIG9uIG5vZGUtc2l6ZS4KKyAgdXNp
bmcgdXNlX2xpbmVhcl9zZWFyY2ggPSBzdGQ6OmludGVncmFsX2NvbnN0YW50PAorICAgICAgYm9v
bCwKKyAgICAgICAgICAgICAgICBzdGQ6OmlzX2FyaXRobWV0aWM8a2V5X3R5cGU+Ojp2YWx1ZSAm
JgorICAgICAgICAgICAgICAgICAgICAoc3RkOjppc19zYW1lPHN0ZDo6bGVzczxrZXlfdHlwZT4s
IGtleV9jb21wYXJlPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfc2Ft
ZTxzdGQ6OmdyZWF0ZXI8a2V5X3R5cGU+LCBrZXlfY29tcGFyZT46OnZhbHVlKT47CisKKyAgLy8g
VGhpcyBjbGFzcyBpcyBvcmdhbml6ZWQgYnkgZ3RsOjpMYXlvdXQgYXMgaWYgaXQgaGFkIHRoZSBm
b2xsb3dpbmcKKyAgLy8gc3RydWN0dXJlOgorICAvLyAgIC8vIEEgcG9pbnRlciB0byB0aGUgbm9k
ZSdzIHBhcmVudC4KKyAgLy8gICBidHJlZV9ub2RlICpwYXJlbnQ7CisgIC8vCisgIC8vICAgLy8g
VGhlIHBvc2l0aW9uIG9mIHRoZSBub2RlIGluIHRoZSBub2RlJ3MgcGFyZW50LgorICAvLyAgIGZp
ZWxkX3R5cGUgcG9zaXRpb247CisgIC8vICAgLy8gVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBwb3B1
bGF0ZWQgdmFsdWUgaW4gYHZhbHVlc2AuCisgIC8vICAgLy8gVE9ETyhlemIpOiByaWdodCBub3cs
IGBzdGFydGAgaXMgYWx3YXlzIDAuIFVwZGF0ZSBpbnNlcnRpb24vbWVyZ2UKKyAgLy8gICAvLyBs
b2dpYyB0byBhbGxvdyBmb3IgZmxvYXRpbmcgc3RvcmFnZSB3aXRoaW4gbm9kZXMuCisgIC8vICAg
ZmllbGRfdHlwZSBzdGFydDsKKyAgLy8gICAvLyBUaGUgY291bnQgb2YgdGhlIG51bWJlciBvZiBw
b3B1bGF0ZWQgdmFsdWVzIGluIHRoZSBub2RlLgorICAvLyAgIGZpZWxkX3R5cGUgY291bnQ7Cisg
IC8vICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHZhbHVlcyB0aGUgbm9kZSBjYW4gaG9sZC4g
VGhpcyBpcyBhbiBpbnRlZ2VyIGluCisgIC8vICAgLy8gWzEsIGtOb2RlVmFsdWVzXSBmb3Igcm9v
dCBsZWFmIG5vZGVzLCBrTm9kZVZhbHVlcyBmb3Igbm9uLXJvb3QgbGVhZgorICAvLyAgIC8vIG5v
ZGVzLCBhbmQga0ludGVybmFsTm9kZU1heENvdW50IChhcyBhIHNlbnRpbmVsIHZhbHVlKSBmb3Ig
aW50ZXJuYWwKKyAgLy8gICAvLyBub2RlcyAoZXZlbiB0aG91Z2ggdGhlcmUgYXJlIHN0aWxsIGtO
b2RlVmFsdWVzIHZhbHVlcyBpbiB0aGUgbm9kZSkuCisgIC8vICAgLy8gVE9ETyhlemIpOiBtYWtl
IG1heF9jb3VudCB1c2Ugb25seSA0IGJpdHMgYW5kIHJlY29yZCBsb2cyKGNhcGFjaXR5KQorICAv
LyAgIC8vIHRvIGZyZWUgZXh0cmEgYml0cyBmb3IgaXNfcm9vdCwgZXRjLgorICAvLyAgIGZpZWxk
X3R5cGUgbWF4X2NvdW50OworICAvLworICAvLyAgIC8vIFRoZSBhcnJheSBvZiB2YWx1ZXMuIFRo
ZSBjYXBhY2l0eSBpcyBgbWF4X2NvdW50YCBmb3IgbGVhZiBub2RlcyBhbmQKKyAgLy8gICAvLyBr
Tm9kZVZhbHVlcyBmb3IgaW50ZXJuYWwgbm9kZXMuIE9ubHkgdGhlIHZhbHVlcyBpbgorICAvLyAg
IC8vIFtzdGFydCwgc3RhcnQgKyBjb3VudCkgaGF2ZSBiZWVuIGluaXRpYWxpemVkIGFuZCBhcmUg
dmFsaWQuCisgIC8vICAgc2xvdF90eXBlIHZhbHVlc1ttYXhfY291bnRdOworICAvLworICAvLyAg
IC8vIFRoZSBhcnJheSBvZiBjaGlsZCBwb2ludGVycy4gVGhlIGtleXMgaW4gY2hpbGRyZW5baV0g
YXJlIGFsbCBsZXNzCisgIC8vICAgLy8gdGhhbiBrZXkoaSkuIFRoZSBrZXlzIGluIGNoaWxkcmVu
W2kgKyAxXSBhcmUgYWxsIGdyZWF0ZXIgdGhhbiBrZXkoaSkuCisgIC8vICAgLy8gVGhlcmUgYXJl
IDAgY2hpbGRyZW4gZm9yIGxlYWYgbm9kZXMgYW5kIGtOb2RlVmFsdWVzICsgMSBjaGlsZHJlbiBm
b3IKKyAgLy8gICAvLyBpbnRlcm5hbCBub2Rlcy4KKyAgLy8gICBidHJlZV9ub2RlICpjaGlsZHJl
bltrTm9kZVZhbHVlcyArIDFdOworICAvLworICAvLyBUaGlzIGNsYXNzIGlzIG9ubHkgY29uc3Ry
dWN0ZWQgYnkgRW1wdHlOb2RlVHlwZS4gTm9ybWFsbHksIHBvaW50ZXJzIHRvIHRoZQorICAvLyBs
YXlvdXQgYWJvdmUgYXJlIGFsbG9jYXRlZCwgY2FzdCB0byBidHJlZV9ub2RlKiwgYW5kIGRlLWFs
bG9jYXRlZCB3aXRoaW4KKyAgLy8gdGhlIGJ0cmVlIGltcGxlbWVudGF0aW9uLgorICB+YnRyZWVf
bm9kZSgpID0gZGVmYXVsdDsKKyAgYnRyZWVfbm9kZShidHJlZV9ub2RlIGNvbnN0ICYpID0gZGVs
ZXRlOworICBidHJlZV9ub2RlICZvcGVyYXRvcj0oYnRyZWVfbm9kZSBjb25zdCAmKSA9IGRlbGV0
ZTsKKworICAvLyBQdWJsaWMgZm9yIEVtcHR5Tm9kZVR5cGUuCisgIGNvbnN0ZXhwciBzdGF0aWMg
c2l6ZV90eXBlIEFsaWdubWVudCgpIHsKKyAgICBzdGF0aWNfYXNzZXJ0KExlYWZMYXlvdXQoMSku
QWxpZ25tZW50KCkgPT0gSW50ZXJuYWxMYXlvdXQoKS5BbGlnbm1lbnQoKSwKKyAgICAgICAgICAg
ICAgICAgICJBbGlnbm1lbnQgb2YgYWxsIG5vZGVzIG11c3QgYmUgZXF1YWwuIik7CisgICAgcmV0
dXJuIEludGVybmFsTGF5b3V0KCkuQWxpZ25tZW50KCk7CisgIH0KKworIHByb3RlY3RlZDoKKyAg
YnRyZWVfbm9kZSgpID0gZGVmYXVsdDsKKworIHByaXZhdGU6CisgIHVzaW5nIGxheW91dF90eXBl
ID0gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpMYXlvdXQ8YnRyZWVfbm9kZSAqLCBmaWVsZF90
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNsb3RfdHlwZSwgYnRyZWVfbm9kZSAqPjsKKyAgY29uc3RleHByIHN0YXRpYyBzaXplX3R5
cGUgU2l6ZVdpdGhOVmFsdWVzKHNpemVfdHlwZSBuKSB7CisgICAgcmV0dXJuIGxheW91dF90eXBl
KC8qcGFyZW50Ki8gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgLypwb3NpdGlvbiwgc3RhcnQs
IGNvdW50LCBtYXhfY291bnQqLyA0LAorICAgICAgICAgICAgICAgICAgICAgICAvKnZhbHVlcyov
IG4sCisgICAgICAgICAgICAgICAgICAgICAgIC8qY2hpbGRyZW4qLyAwKQorICAgICAgICAuQWxs
b2NTaXplKCk7CisgIH0KKyAgLy8gQSBsb3dlciBib3VuZCBmb3IgdGhlIG92ZXJoZWFkIG9mIGZp
ZWxkcyBvdGhlciB0aGFuIHZhbHVlcyBpbiBhIGxlYWYgbm9kZS4KKyAgY29uc3RleHByIHN0YXRp
YyBzaXplX3R5cGUgTWluaW11bU92ZXJoZWFkKCkgeworICAgIHJldHVybiBTaXplV2l0aE5WYWx1
ZXMoMSkgLSBzaXplb2YodmFsdWVfdHlwZSk7CisgIH0KKworICAvLyBDb21wdXRlIGhvdyBtYW55
IHZhbHVlcyB3ZSBjYW4gZml0IG9udG8gYSBsZWFmIG5vZGUgdGFraW5nIGludG8gYWNjb3VudAor
ICAvLyBwYWRkaW5nLgorICBjb25zdGV4cHIgc3RhdGljIHNpemVfdHlwZSBOb2RlVGFyZ2V0VmFs
dWVzKGNvbnN0IGludCBiZWdpbiwgY29uc3QgaW50IGVuZCkgeworICAgIHJldHVybiBiZWdpbiA9
PSBlbmQgPyBiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgOiBTaXplV2l0aE5WYWx1ZXMo
KGJlZ2luICsgZW5kKSAvIDIgKyAxKSA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zX3R5cGU6OmtUYXJnZXROb2RlU2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPyBOb2RlVGFyZ2V0VmFsdWVzKGJlZ2luLCAoYmVnaW4gKyBlbmQpIC8gMikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogTm9kZVRhcmdldFZhbHVlcygoYmVnaW4gKyBlbmQp
IC8gMiArIDEsIGVuZCk7CisgIH0KKworICBlbnVtIHsKKyAgICBrVGFyZ2V0Tm9kZVNpemUgPSBw
YXJhbXNfdHlwZTo6a1RhcmdldE5vZGVTaXplLAorICAgIGtOb2RlVGFyZ2V0VmFsdWVzID0gTm9k
ZVRhcmdldFZhbHVlcygwLCBwYXJhbXNfdHlwZTo6a1RhcmdldE5vZGVTaXplKSwKKworICAgIC8v
IFdlIG5lZWQgYSBtaW5pbXVtIG9mIDMgdmFsdWVzIHBlciBpbnRlcm5hbCBub2RlIGluIG9yZGVy
IHRvIHBlcmZvcm0KKyAgICAvLyBzcGxpdHRpbmcgKDEgdmFsdWUgZm9yIHRoZSB0d28gbm9kZXMg
aW52b2x2ZWQgaW4gdGhlIHNwbGl0IGFuZCAxIHZhbHVlCisgICAgLy8gcHJvcGFnYXRlZCB0byB0
aGUgcGFyZW50IGFzIHRoZSBkZWxpbWl0ZXIgZm9yIHRoZSBzcGxpdCkuCisgICAga05vZGVWYWx1
ZXMgPSBrTm9kZVRhcmdldFZhbHVlcyA+PSAzID8ga05vZGVUYXJnZXRWYWx1ZXMgOiAzLAorCisg
ICAgLy8gVGhlIG5vZGUgaXMgaW50ZXJuYWwgKGkuZS4gaXMgbm90IGEgbGVhZiBub2RlKSBpZiBh
bmQgb25seSBpZiBgbWF4X2NvdW50YAorICAgIC8vIGhhcyB0aGlzIHZhbHVlLgorICAgIGtJbnRl
cm5hbE5vZGVNYXhDb3VudCA9IDAsCisgIH07CisKKyAgLy8gTGVhdmVzIGNhbiBoYXZlIGxlc3Mg
dGhhbiBrTm9kZVZhbHVlcyB2YWx1ZXMuCisgIGNvbnN0ZXhwciBzdGF0aWMgbGF5b3V0X3R5cGUg
TGVhZkxheW91dChjb25zdCBpbnQgbWF4X3ZhbHVlcyA9IGtOb2RlVmFsdWVzKSB7CisgICAgcmV0
dXJuIGxheW91dF90eXBlKC8qcGFyZW50Ki8gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgLypw
b3NpdGlvbiwgc3RhcnQsIGNvdW50LCBtYXhfY291bnQqLyA0LAorICAgICAgICAgICAgICAgICAg
ICAgICAvKnZhbHVlcyovIG1heF92YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgIC8qY2hp
bGRyZW4qLyAwKTsKKyAgfQorICBjb25zdGV4cHIgc3RhdGljIGxheW91dF90eXBlIEludGVybmFs
TGF5b3V0KCkgeworICAgIHJldHVybiBsYXlvdXRfdHlwZSgvKnBhcmVudCovIDEsCisgICAgICAg
ICAgICAgICAgICAgICAgIC8qcG9zaXRpb24sIHN0YXJ0LCBjb3VudCwgbWF4X2NvdW50Ki8gNCwK
KyAgICAgICAgICAgICAgICAgICAgICAgLyp2YWx1ZXMqLyBrTm9kZVZhbHVlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgLypjaGlsZHJlbiovIGtOb2RlVmFsdWVzICsgMSk7CisgIH0KKyAgY29u
c3RleHByIHN0YXRpYyBzaXplX3R5cGUgTGVhZlNpemUoY29uc3QgaW50IG1heF92YWx1ZXMgPSBr
Tm9kZVZhbHVlcykgeworICAgIHJldHVybiBMZWFmTGF5b3V0KG1heF92YWx1ZXMpLkFsbG9jU2l6
ZSgpOworICB9CisgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90eXBlIEludGVybmFsU2l6ZSgpIHsK
KyAgICByZXR1cm4gSW50ZXJuYWxMYXlvdXQoKS5BbGxvY1NpemUoKTsKKyAgfQorCisgIC8vIE4g
aXMgdGhlIGluZGV4IG9mIHRoZSB0eXBlIGluIHRoZSBMYXlvdXQgZGVmaW5pdGlvbi4KKyAgLy8g
RWxlbWVudFR5cGU8Tj4gaXMgdGhlIE50aCB0eXBlIGluIHRoZSBMYXlvdXQgZGVmaW5pdGlvbi4K
KyAgdGVtcGxhdGUgPHNpemVfdHlwZSBOPgorICBpbmxpbmUgdHlwZW5hbWUgbGF5b3V0X3R5cGU6
OnRlbXBsYXRlIEVsZW1lbnRUeXBlPE4+ICpHZXRGaWVsZCgpIHsKKyAgICAvLyBXZSBhc3NlcnQg
dGhhdCB3ZSBkb24ndCByZWFkIGZyb20gdmFsdWVzIHRoYXQgYXJlbid0IHRoZXJlLgorICAgIGFz
c2VydChOIDwgMyB8fCAhbGVhZigpKTsKKyAgICByZXR1cm4gSW50ZXJuYWxMYXlvdXQoKS50ZW1w
bGF0ZSBQb2ludGVyPE4+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPih0aGlzKSk7CisgIH0KKyAg
dGVtcGxhdGUgPHNpemVfdHlwZSBOPgorICBpbmxpbmUgY29uc3QgdHlwZW5hbWUgbGF5b3V0X3R5
cGU6OnRlbXBsYXRlIEVsZW1lbnRUeXBlPE4+ICpHZXRGaWVsZCgpIGNvbnN0IHsKKyAgICBhc3Nl
cnQoTiA8IDMgfHwgIWxlYWYoKSk7CisgICAgcmV0dXJuIEludGVybmFsTGF5b3V0KCkudGVtcGxh
dGUgUG9pbnRlcjxOPigKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRo
aXMpKTsKKyAgfQorICB2b2lkIHNldF9wYXJlbnQoYnRyZWVfbm9kZSAqcCkgeyAqR2V0RmllbGQ8
MD4oKSA9IHA7IH0KKyAgZmllbGRfdHlwZSAmbXV0YWJsZV9jb3VudCgpIHsgcmV0dXJuIEdldEZp
ZWxkPDE+KClbMl07IH0KKyAgc2xvdF90eXBlICpzbG90KGludCBpKSB7IHJldHVybiAmR2V0Rmll
bGQ8Mj4oKVtpXTsgfQorICBjb25zdCBzbG90X3R5cGUgKnNsb3QoaW50IGkpIGNvbnN0IHsgcmV0
dXJuICZHZXRGaWVsZDwyPigpW2ldOyB9CisgIHZvaWQgc2V0X3Bvc2l0aW9uKGZpZWxkX3R5cGUg
dikgeyBHZXRGaWVsZDwxPigpWzBdID0gdjsgfQorICB2b2lkIHNldF9zdGFydChmaWVsZF90eXBl
IHYpIHsgR2V0RmllbGQ8MT4oKVsxXSA9IHY7IH0KKyAgdm9pZCBzZXRfY291bnQoZmllbGRfdHlw
ZSB2KSB7IEdldEZpZWxkPDE+KClbMl0gPSB2OyB9CisgIC8vIFRoaXMgbWV0aG9kIGlzIG9ubHkg
Y2FsbGVkIGJ5IHRoZSBub2RlIGluaXQgbWV0aG9kcy4KKyAgdm9pZCBzZXRfbWF4X2NvdW50KGZp
ZWxkX3R5cGUgdikgeyBHZXRGaWVsZDwxPigpWzNdID0gdjsgfQorCisgcHVibGljOgorICAvLyBX
aGV0aGVyIHRoaXMgaXMgYSBsZWFmIG5vZGUgb3Igbm90LiBUaGlzIHZhbHVlIGRvZXNuJ3QgY2hh
bmdlIGFmdGVyIHRoZQorICAvLyBub2RlIGlzIGNyZWF0ZWQuCisgIGJvb2wgbGVhZigpIGNvbnN0
IHsgcmV0dXJuIEdldEZpZWxkPDE+KClbM10gIT0ga0ludGVybmFsTm9kZU1heENvdW50OyB9CisK
KyAgLy8gR2V0dGVyIGZvciB0aGUgcG9zaXRpb24gb2YgdGhpcyBub2RlIGluIGl0cyBwYXJlbnQu
CisgIGZpZWxkX3R5cGUgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBHZXRGaWVsZDwxPigpWzBd
OyB9CisKKyAgLy8gR2V0dGVyIGZvciB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCB2YWx1ZSBpbiB0
aGUgYHZhbHVlc2AgYXJyYXkuCisgIGZpZWxkX3R5cGUgc3RhcnQoKSBjb25zdCB7IHJldHVybiBH
ZXRGaWVsZDwxPigpWzFdOyB9CisKKyAgLy8gR2V0dGVycyBmb3IgdGhlIG51bWJlciBvZiB2YWx1
ZXMgc3RvcmVkIGluIHRoaXMgbm9kZS4KKyAgZmllbGRfdHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0
dXJuIEdldEZpZWxkPDE+KClbMl07IH0KKyAgZmllbGRfdHlwZSBtYXhfY291bnQoKSBjb25zdCB7
CisgICAgLy8gSW50ZXJuYWwgbm9kZXMgaGF2ZSBtYXhfY291bnQ9PWtJbnRlcm5hbE5vZGVNYXhD
b3VudC4KKyAgICAvLyBMZWFmIG5vZGVzIGhhdmUgbWF4X2NvdW50IGluIFsxLCBrTm9kZVZhbHVl
c10uCisgICAgY29uc3QgZmllbGRfdHlwZSBtYXhfY291bnQgPSBHZXRGaWVsZDwxPigpWzNdOwor
ICAgIHJldHVybiBtYXhfY291bnQgPT0gZmllbGRfdHlwZXtrSW50ZXJuYWxOb2RlTWF4Q291bnR9
CisgICAgICAgICAgICAgICA/IGZpZWxkX3R5cGV7a05vZGVWYWx1ZXN9CisgICAgICAgICAgICAg
ICA6IG1heF9jb3VudDsKKyAgfQorCisgIC8vIEdldHRlciBmb3IgdGhlIHBhcmVudCBvZiB0aGlz
IG5vZGUuCisgIGJ0cmVlX25vZGUgKnBhcmVudCgpIGNvbnN0IHsgcmV0dXJuICpHZXRGaWVsZDww
PigpOyB9CisgIC8vIEdldHRlciBmb3Igd2hldGhlciB0aGUgbm9kZSBpcyB0aGUgcm9vdCBvZiB0
aGUgdHJlZS4gVGhlIHBhcmVudCBvZiB0aGUKKyAgLy8gcm9vdCBvZiB0aGUgdHJlZSBpcyB0aGUg
bGVmdG1vc3Qgbm9kZSBpbiB0aGUgdHJlZSB3aGljaCBpcyBndWFyYW50ZWVkIHRvCisgIC8vIGJl
IGEgbGVhZi4KKyAgYm9vbCBpc19yb290KCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCktPmxlYWYo
KTsgfQorICB2b2lkIG1ha2Vfcm9vdCgpIHsKKyAgICBhc3NlcnQocGFyZW50KCktPmlzX3Jvb3Qo
KSk7CisgICAgc2V0X3BhcmVudChwYXJlbnQoKS0+cGFyZW50KCkpOworICB9CisKKyAgLy8gR2V0
dGVycyBmb3IgdGhlIGtleS92YWx1ZSBhdCBwb3NpdGlvbiBpIGluIHRoZSBub2RlLgorICBjb25z
dCBrZXlfdHlwZSAma2V5KGludCBpKSBjb25zdCB7IHJldHVybiBwYXJhbXNfdHlwZTo6a2V5KHNs
b3QoaSkpOyB9CisgIHJlZmVyZW5jZSB2YWx1ZShpbnQgaSkgeyByZXR1cm4gcGFyYW1zX3R5cGU6
OmVsZW1lbnQoc2xvdChpKSk7IH0KKyAgY29uc3RfcmVmZXJlbmNlIHZhbHVlKGludCBpKSBjb25z
dCB7IHJldHVybiBwYXJhbXNfdHlwZTo6ZWxlbWVudChzbG90KGkpKTsgfQorCisgIC8vIEdldHRl
cnMvc2V0dGVyIGZvciB0aGUgY2hpbGQgYXQgcG9zaXRpb24gaSBpbiB0aGUgbm9kZS4KKyAgYnRy
ZWVfbm9kZSAqY2hpbGQoaW50IGkpIGNvbnN0IHsgcmV0dXJuIEdldEZpZWxkPDM+KClbaV07IH0K
KyAgYnRyZWVfbm9kZSAqJm11dGFibGVfY2hpbGQoaW50IGkpIHsgcmV0dXJuIEdldEZpZWxkPDM+
KClbaV07IH0KKyAgdm9pZCBjbGVhcl9jaGlsZChpbnQgaSkgeworICAgIGFic2w6OmNvbnRhaW5l
cl9pbnRlcm5hbDo6U2FuaXRpemVyUG9pc29uT2JqZWN0KCZtdXRhYmxlX2NoaWxkKGkpKTsKKyAg
fQorICB2b2lkIHNldF9jaGlsZChpbnQgaSwgYnRyZWVfbm9kZSAqYykgeworICAgIGFic2w6OmNv
bnRhaW5lcl9pbnRlcm5hbDo6U2FuaXRpemVyVW5wb2lzb25PYmplY3QoJm11dGFibGVfY2hpbGQo
aSkpOworICAgIG11dGFibGVfY2hpbGQoaSkgPSBjOworICAgIGMtPnNldF9wb3NpdGlvbihpKTsK
KyAgfQorICB2b2lkIGluaXRfY2hpbGQoaW50IGksIGJ0cmVlX25vZGUgKmMpIHsKKyAgICBzZXRf
Y2hpbGQoaSwgYyk7CisgICAgYy0+c2V0X3BhcmVudCh0aGlzKTsKKyAgfQorCisgIC8vIFJldHVy
bnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCB2YWx1ZSB3aG9zZSBrZXkgaXMgbm90IGxlc3Mg
dGhhbiBrLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgU2VhcmNoUmVzdWx0PGludCwgaXNf
a2V5X2NvbXBhcmVfdG86OnZhbHVlPiBsb3dlcl9ib3VuZCgKKyAgICAgIGNvbnN0IEsgJmssIGNv
bnN0IGtleV9jb21wYXJlICZjb21wKSBjb25zdCB7CisgICAgcmV0dXJuIHVzZV9saW5lYXJfc2Vh
cmNoOjp2YWx1ZSA/IGxpbmVhcl9zZWFyY2goaywgY29tcCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogYmluYXJ5X3NlYXJjaChrLCBjb21wKTsKKyAgfQorICAvLyBSZXR1
cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgdmFsdWUgd2hvc2Uga2V5IGlzIGdyZWF0ZXIg
dGhhbiBrLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgaW50IHVwcGVyX2JvdW5kKGNvbnN0
IEsgJmssIGNvbnN0IGtleV9jb21wYXJlICZjb21wKSBjb25zdCB7CisgICAgYXV0byB1cHBlcl9j
b21wYXJlID0gdXBwZXJfYm91bmRfYWRhcHRlcjxrZXlfY29tcGFyZT4oY29tcCk7CisgICAgcmV0
dXJuIHVzZV9saW5lYXJfc2VhcmNoOjp2YWx1ZSA/IGxpbmVhcl9zZWFyY2goaywgdXBwZXJfY29t
cGFyZSkudmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYmluYXJ5
X3NlYXJjaChrLCB1cHBlcl9jb21wYXJlKS52YWx1ZTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBLLCB0eXBlbmFtZSBDb21wYXJlPgorICBTZWFyY2hSZXN1bHQ8aW50LCBidHJlZV9pc19r
ZXlfY29tcGFyZV90bzxDb21wYXJlLCBrZXlfdHlwZT46OnZhbHVlPgorICBsaW5lYXJfc2VhcmNo
KGNvbnN0IEsgJmssIGNvbnN0IENvbXBhcmUgJmNvbXApIGNvbnN0IHsKKyAgICByZXR1cm4gbGlu
ZWFyX3NlYXJjaF9pbXBsKGssIDAsIGNvdW50KCksIGNvbXAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBidHJlZV9pc19rZXlfY29tcGFyZV90bzxDb21wYXJlLCBrZXlfdHlwZT4oKSk7
CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgQ29tcGFyZT4KKyAgU2Vh
cmNoUmVzdWx0PGludCwgYnRyZWVfaXNfa2V5X2NvbXBhcmVfdG88Q29tcGFyZSwga2V5X3R5cGU+
Ojp2YWx1ZT4KKyAgYmluYXJ5X3NlYXJjaChjb25zdCBLICZrLCBjb25zdCBDb21wYXJlICZjb21w
KSBjb25zdCB7CisgICAgcmV0dXJuIGJpbmFyeV9zZWFyY2hfaW1wbChrLCAwLCBjb3VudCgpLCBj
b21wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRyZWVfaXNfa2V5X2NvbXBhcmVf
dG88Q29tcGFyZSwga2V5X3R5cGU+KCkpOworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgcG9zaXRp
b24gb2YgdGhlIGZpcnN0IHZhbHVlIHdob3NlIGtleSBpcyBub3QgbGVzcyB0aGFuIGsgdXNpbmcK
KyAgLy8gbGluZWFyIHNlYXJjaCBwZXJmb3JtZWQgdXNpbmcgcGxhaW4gY29tcGFyZS4KKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIENvbXBhcmU+CisgIFNlYXJjaFJlc3VsdDxpbnQs
IGZhbHNlPiBsaW5lYXJfc2VhcmNoX2ltcGwoCisgICAgICBjb25zdCBLICZrLCBpbnQgcywgY29u
c3QgaW50IGUsIGNvbnN0IENvbXBhcmUgJmNvbXAsCisgICAgICBzdGQ6OmZhbHNlX3R5cGUgLyog
SXNDb21wYXJlVG8gKi8pIGNvbnN0IHsKKyAgICB3aGlsZSAocyA8IGUpIHsKKyAgICAgIGlmICgh
Y29tcChrZXkocyksIGspKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgKytzOwor
ICAgIH0KKyAgICByZXR1cm4ge3N9OworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgcG9zaXRpb24g
b2YgdGhlIGZpcnN0IHZhbHVlIHdob3NlIGtleSBpcyBub3QgbGVzcyB0aGFuIGsgdXNpbmcKKyAg
Ly8gbGluZWFyIHNlYXJjaCBwZXJmb3JtZWQgdXNpbmcgY29tcGFyZS10by4KKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIEssIHR5cGVuYW1lIENvbXBhcmU+CisgIFNlYXJjaFJlc3VsdDxpbnQsIHRydWU+
IGxpbmVhcl9zZWFyY2hfaW1wbCgKKyAgICAgIGNvbnN0IEsgJmssIGludCBzLCBjb25zdCBpbnQg
ZSwgY29uc3QgQ29tcGFyZSAmY29tcCwKKyAgICAgIHN0ZDo6dHJ1ZV90eXBlIC8qIElzQ29tcGFy
ZVRvICovKSBjb25zdCB7CisgICAgd2hpbGUgKHMgPCBlKSB7CisgICAgICBjb25zdCBhYnNsOjp3
ZWFrX29yZGVyaW5nIGMgPSBjb21wKGtleShzKSwgayk7CisgICAgICBpZiAoYyA9PSAwKSB7Cisg
ICAgICAgIHJldHVybiB7cywgTWF0Y2hLaW5kOjprRXF9OworICAgICAgfSBlbHNlIGlmIChjID4g
MCkgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgICsrczsKKyAgICB9CisgICAgcmV0
dXJuIHtzLCBNYXRjaEtpbmQ6OmtOZX07CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSBwb3NpdGlv
biBvZiB0aGUgZmlyc3QgdmFsdWUgd2hvc2Uga2V5IGlzIG5vdCBsZXNzIHRoYW4gayB1c2luZwor
ICAvLyBiaW5hcnkgc2VhcmNoIHBlcmZvcm1lZCB1c2luZyBwbGFpbiBjb21wYXJlLgorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgQ29tcGFyZT4KKyAgU2VhcmNoUmVzdWx0PGludCwg
ZmFsc2U+IGJpbmFyeV9zZWFyY2hfaW1wbCgKKyAgICAgIGNvbnN0IEsgJmssIGludCBzLCBpbnQg
ZSwgY29uc3QgQ29tcGFyZSAmY29tcCwKKyAgICAgIHN0ZDo6ZmFsc2VfdHlwZSAvKiBJc0NvbXBh
cmVUbyAqLykgY29uc3QgeworICAgIHdoaWxlIChzICE9IGUpIHsKKyAgICAgIGNvbnN0IGludCBt
aWQgPSAocyArIGUpID4+IDE7CisgICAgICBpZiAoY29tcChrZXkobWlkKSwgaykpIHsKKyAgICAg
ICAgcyA9IG1pZCArIDE7CisgICAgICB9IGVsc2UgeworICAgICAgICBlID0gbWlkOworICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4ge3N9OworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgcG9zaXRp
b24gb2YgdGhlIGZpcnN0IHZhbHVlIHdob3NlIGtleSBpcyBub3QgbGVzcyB0aGFuIGsgdXNpbmcK
KyAgLy8gYmluYXJ5IHNlYXJjaCBwZXJmb3JtZWQgdXNpbmcgY29tcGFyZS10by4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIENvbXBhcmVUbz4KKyAgU2VhcmNoUmVzdWx0PGludCwg
dHJ1ZT4gYmluYXJ5X3NlYXJjaF9pbXBsKAorICAgICAgY29uc3QgSyAmaywgaW50IHMsIGludCBl
LCBjb25zdCBDb21wYXJlVG8gJmNvbXAsCisgICAgICBzdGQ6OnRydWVfdHlwZSAvKiBJc0NvbXBh
cmVUbyAqLykgY29uc3QgeworICAgIGlmIChpc19tdWx0aV9jb250YWluZXI6OnZhbHVlKSB7Cisg
ICAgICBNYXRjaEtpbmQgZXhhY3RfbWF0Y2ggPSBNYXRjaEtpbmQ6OmtOZTsKKyAgICAgIHdoaWxl
IChzICE9IGUpIHsKKyAgICAgICAgY29uc3QgaW50IG1pZCA9IChzICsgZSkgPj4gMTsKKyAgICAg
ICAgY29uc3QgYWJzbDo6d2Vha19vcmRlcmluZyBjID0gY29tcChrZXkobWlkKSwgayk7CisgICAg
ICAgIGlmIChjIDwgMCkgeworICAgICAgICAgIHMgPSBtaWQgKyAxOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIGUgPSBtaWQ7CisgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAg
ICAgLy8gTmVlZCB0byByZXR1cm4gdGhlIGZpcnN0IHZhbHVlIHdob3NlIGtleSBpcyBub3QgbGVz
cyB0aGFuIGssCisgICAgICAgICAgICAvLyB3aGljaCByZXF1aXJlcyBjb250aW51aW5nIHRoZSBi
aW5hcnkgc2VhcmNoIGlmIHRoaXMgaXMgYQorICAgICAgICAgICAgLy8gbXVsdGktY29udGFpbmVy
LgorICAgICAgICAgICAgZXhhY3RfbWF0Y2ggPSBNYXRjaEtpbmQ6OmtFcTsKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiB7cywgZXhhY3RfbWF0Y2h9OworICAg
IH0gZWxzZSB7ICAvLyBOb3QgYSBtdWx0aS1jb250YWluZXIuCisgICAgICB3aGlsZSAocyAhPSBl
KSB7CisgICAgICAgIGNvbnN0IGludCBtaWQgPSAocyArIGUpID4+IDE7CisgICAgICAgIGNvbnN0
IGFic2w6OndlYWtfb3JkZXJpbmcgYyA9IGNvbXAoa2V5KG1pZCksIGspOworICAgICAgICBpZiAo
YyA8IDApIHsKKyAgICAgICAgICBzID0gbWlkICsgMTsKKyAgICAgICAgfSBlbHNlIGlmIChjID4g
MCkgeworICAgICAgICAgIGUgPSBtaWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIHttaWQsIE1hdGNoS2luZDo6a0VxfTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0
dXJuIHtzLCBNYXRjaEtpbmQ6OmtOZX07CisgICAgfQorICB9CisKKyAgLy8gRW1wbGFjZXMgYSB2
YWx1ZSBhdCBwb3NpdGlvbiBpLCBzaGlmdGluZyBhbGwgZXhpc3RpbmcgdmFsdWVzIGFuZAorICAv
LyBjaGlsZHJlbiBhdCBwb3NpdGlvbnMgPj0gaSB0byB0aGUgcmlnaHQgYnkgMS4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIHZvaWQgZW1wbGFjZV92YWx1ZShzaXplX3R5cGUgaSwg
YWxsb2NhdG9yX3R5cGUgKmFsbG9jLCBBcmdzICYmLi4uIGFyZ3MpOworCisgIC8vIFJlbW92ZXMg
dGhlIHZhbHVlIGF0IHBvc2l0aW9uIGksIHNoaWZ0aW5nIGFsbCBleGlzdGluZyB2YWx1ZXMgYW5k
IGNoaWxkcmVuCisgIC8vIGF0IHBvc2l0aW9ucyA+IGkgdG8gdGhlIGxlZnQgYnkgMS4KKyAgdm9p
ZCByZW1vdmVfdmFsdWUoaW50IGksIGFsbG9jYXRvcl90eXBlICphbGxvYyk7CisKKyAgLy8gUmVt
b3ZlcyB0aGUgdmFsdWVzIGF0IHBvc2l0aW9ucyBbaSwgaSArIHRvX2VyYXNlKSwgc2hpZnRpbmcg
YWxsIHZhbHVlcworICAvLyBhZnRlciB0aGF0IHJhbmdlIHRvIHRoZSBsZWZ0IGJ5IHRvX2VyYXNl
LiBEb2VzIG5vdCBjaGFuZ2UgY2hpbGRyZW4gYXQgYWxsLgorICB2b2lkIHJlbW92ZV92YWx1ZXNf
aWdub3JlX2NoaWxkcmVuKGludCBpLCBpbnQgdG9fZXJhc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGUgKmFsbG9jKTsKKworICAvLyBSZWJhbGFu
Y2VzIGEgbm9kZSB3aXRoIGl0cyByaWdodCBzaWJsaW5nLgorICB2b2lkIHJlYmFsYW5jZV9yaWdo
dF90b19sZWZ0KGludCB0b19tb3ZlLCBidHJlZV9ub2RlICpyaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHlwZSAqYWxsb2MpOworICB2b2lkIHJlYmFsYW5j
ZV9sZWZ0X3RvX3JpZ2h0KGludCB0b19tb3ZlLCBidHJlZV9ub2RlICpyaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHlwZSAqYWxsb2MpOworCisgIC8vIFNw
bGl0cyBhIG5vZGUsIG1vdmluZyBhIHBvcnRpb24gb2YgdGhlIG5vZGUncyB2YWx1ZXMgdG8gaXRz
IHJpZ2h0IHNpYmxpbmcuCisgIHZvaWQgc3BsaXQoaW50IGluc2VydF9wb3NpdGlvbiwgYnRyZWVf
bm9kZSAqZGVzdCwgYWxsb2NhdG9yX3R5cGUgKmFsbG9jKTsKKworICAvLyBNZXJnZXMgYSBub2Rl
IHdpdGggaXRzIHJpZ2h0IHNpYmxpbmcsIG1vdmluZyBhbGwgb2YgdGhlIHZhbHVlcyBhbmQgdGhl
CisgIC8vIGRlbGltaXRpbmcga2V5IGluIHRoZSBwYXJlbnQgbm9kZSBvbnRvIGl0c2VsZi4KKyAg
dm9pZCBtZXJnZShidHJlZV9ub2RlICpzaWJsaW5nLCBhbGxvY2F0b3JfdHlwZSAqYWxsb2MpOwor
CisgIC8vIFN3YXAgdGhlIGNvbnRlbnRzIG9mICJ0aGlzIiBhbmQgInNyYyIuCisgIHZvaWQgc3dh
cChidHJlZV9ub2RlICpzcmMsIGFsbG9jYXRvcl90eXBlICphbGxvYyk7CisKKyAgLy8gTm9kZSBh
bGxvY2F0aW9uL2RlbGV0aW9uIHJvdXRpbmVzLgorICBzdGF0aWMgYnRyZWVfbm9kZSAqaW5pdF9s
ZWFmKGJ0cmVlX25vZGUgKm4sIGJ0cmVlX25vZGUgKnBhcmVudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbWF4X2NvdW50KSB7CisgICAgbi0+c2V0X3BhcmVudChwYXJlbnQp
OworICAgIG4tPnNldF9wb3NpdGlvbigwKTsKKyAgICBuLT5zZXRfc3RhcnQoMCk7CisgICAgbi0+
c2V0X2NvdW50KDApOworICAgIG4tPnNldF9tYXhfY291bnQobWF4X2NvdW50KTsKKyAgICBhYnNs
Ojpjb250YWluZXJfaW50ZXJuYWw6OlNhbml0aXplclBvaXNvbk1lbW9yeVJlZ2lvbigKKyAgICAg
ICAgbi0+c2xvdCgwKSwgbWF4X2NvdW50ICogc2l6ZW9mKHNsb3RfdHlwZSkpOworICAgIHJldHVy
biBuOworICB9CisgIHN0YXRpYyBidHJlZV9ub2RlICppbml0X2ludGVybmFsKGJ0cmVlX25vZGUg
Km4sIGJ0cmVlX25vZGUgKnBhcmVudCkgeworICAgIGluaXRfbGVhZihuLCBwYXJlbnQsIGtOb2Rl
VmFsdWVzKTsKKyAgICAvLyBTZXQgYG1heF9jb3VudGAgdG8gYSBzZW50aW5lbCB2YWx1ZSB0byBp
bmRpY2F0ZSB0aGF0IHRoaXMgbm9kZSBpcworICAgIC8vIGludGVybmFsLgorICAgIG4tPnNldF9t
YXhfY291bnQoa0ludGVybmFsTm9kZU1heENvdW50KTsKKyAgICBhYnNsOjpjb250YWluZXJfaW50
ZXJuYWw6OlNhbml0aXplclBvaXNvbk1lbW9yeVJlZ2lvbigKKyAgICAgICAgJm4tPm11dGFibGVf
Y2hpbGQoMCksIChrTm9kZVZhbHVlcyArIDEpICogc2l6ZW9mKGJ0cmVlX25vZGUgKikpOworICAg
IHJldHVybiBuOworICB9CisgIHZvaWQgZGVzdHJveShhbGxvY2F0b3JfdHlwZSAqYWxsb2MpIHsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50KCk7ICsraSkgeworICAgICAgdmFsdWVfZGVz
dHJveShpLCBhbGxvYyk7CisgICAgfQorICB9CisKKyBwdWJsaWM6CisgIC8vIEV4cG9zZWQgb25s
eSBmb3IgdGVzdHMuCisgIHN0YXRpYyBib29sIHRlc3Rvbmx5X3VzZXNfbGluZWFyX25vZGVfc2Vh
cmNoKCkgeworICAgIHJldHVybiB1c2VfbGluZWFyX3NlYXJjaDo6dmFsdWU7CisgIH0KKworIHBy
aXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICB2b2lkIHZhbHVlX2luaXQo
Y29uc3Qgc2l6ZV90eXBlIGksIGFsbG9jYXRvcl90eXBlICphbGxvYywgQXJncyAmJi4uLiBhcmdz
KSB7CisgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpTYW5pdGl6ZXJVbnBvaXNvbk9iamVj
dChzbG90KGkpKTsKKyAgICBwYXJhbXNfdHlwZTo6Y29uc3RydWN0KGFsbG9jLCBzbG90KGkpLCBz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisgIHZvaWQgdmFsdWVfZGVzdHJveShj
b25zdCBzaXplX3R5cGUgaSwgYWxsb2NhdG9yX3R5cGUgKmFsbG9jKSB7CisgICAgcGFyYW1zX3R5
cGU6OmRlc3Ryb3koYWxsb2MsIHNsb3QoaSkpOworICAgIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5h
bDo6U2FuaXRpemVyUG9pc29uT2JqZWN0KHNsb3QoaSkpOworICB9CisKKyAgLy8gTW92ZSBuIHZh
bHVlcyBzdGFydGluZyBhdCB2YWx1ZSBpIGluIHRoaXMgbm9kZSBpbnRvIHRoZSB2YWx1ZXMgc3Rh
cnRpbmcgYXQKKyAgLy8gdmFsdWUgaiBpbiBub2RlIHguCisgIHZvaWQgdW5pbml0aWFsaXplZF9t
b3ZlX24oY29uc3Qgc2l6ZV90eXBlIG4sIGNvbnN0IHNpemVfdHlwZSBpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSBqLCBidHJlZV9ub2RlICp4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlICphbGxvYykgeworICAgIGFic2w6
OmNvbnRhaW5lcl9pbnRlcm5hbDo6U2FuaXRpemVyVW5wb2lzb25NZW1vcnlSZWdpb24oCisgICAg
ICAgIHgtPnNsb3QoaiksIG4gKiBzaXplb2Yoc2xvdF90eXBlKSk7CisgICAgZm9yIChzbG90X3R5
cGUgKnNyYyA9IHNsb3QoaSksICplbmQgPSBzcmMgKyBuLCAqZGVzdCA9IHgtPnNsb3Qoaik7Cisg
ICAgICAgICBzcmMgIT0gZW5kOyArK3NyYywgKytkZXN0KSB7CisgICAgICBwYXJhbXNfdHlwZTo6
Y29uc3RydWN0KGFsbG9jLCBkZXN0LCBzcmMpOworICAgIH0KKyAgfQorCisgIC8vIERlc3Ryb3lz
IGEgcmFuZ2Ugb2YgbiB2YWx1ZXMsIHN0YXJ0aW5nIGF0IGluZGV4IGkuCisgIHZvaWQgdmFsdWVf
ZGVzdHJveV9uKGNvbnN0IHNpemVfdHlwZSBpLCBjb25zdCBzaXplX3R5cGUgbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGUgKmFsbG9jKSB7CisgICAgZm9yIChpbnQgaiA9
IDA7IGogPCBuOyArK2opIHsKKyAgICAgIHZhbHVlX2Rlc3Ryb3koaSArIGosIGFsbG9jKTsKKyAg
ICB9CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KKyAgZnJpZW5kIGNsYXNzIGJ0cmVl
OworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTiwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUD4KKyAgZnJp
ZW5kIHN0cnVjdCBidHJlZV9pdGVyYXRvcjsKKyAgZnJpZW5kIGNsYXNzIEJ0cmVlTm9kZVBlZXI7
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgUmVmZXJlbmNlLCB0eXBl
bmFtZSBQb2ludGVyPgorc3RydWN0IGJ0cmVlX2l0ZXJhdG9yIHsKKyBwcml2YXRlOgorICB1c2lu
ZyBrZXlfdHlwZSA9IHR5cGVuYW1lIE5vZGU6OmtleV90eXBlOworICB1c2luZyBzaXplX3R5cGUg
PSB0eXBlbmFtZSBOb2RlOjpzaXplX3R5cGU7CisgIHVzaW5nIHBhcmFtc190eXBlID0gdHlwZW5h
bWUgTm9kZTo6cGFyYW1zX3R5cGU7CisKKyAgdXNpbmcgbm9kZV90eXBlID0gTm9kZTsKKyAgdXNp
bmcgbm9ybWFsX25vZGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxOb2RlPjo6dHlwZTsK
KyAgdXNpbmcgY29uc3Rfbm9kZSA9IGNvbnN0IE5vZGU7CisgIHVzaW5nIG5vcm1hbF9wb2ludGVy
ID0gdHlwZW5hbWUgcGFyYW1zX3R5cGU6OnBvaW50ZXI7CisgIHVzaW5nIG5vcm1hbF9yZWZlcmVu
Y2UgPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6cmVmZXJlbmNlOworICB1c2luZyBjb25zdF9wb2lu
dGVyID0gdHlwZW5hbWUgcGFyYW1zX3R5cGU6OmNvbnN0X3BvaW50ZXI7CisgIHVzaW5nIGNvbnN0
X3JlZmVyZW5jZSA9IHR5cGVuYW1lIHBhcmFtc190eXBlOjpjb25zdF9yZWZlcmVuY2U7CisgIHVz
aW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIHBhcmFtc190eXBlOjpzbG90X3R5cGU7CisKKyAgdXNp
bmcgaXRlcmF0b3IgPQorICAgICAgYnRyZWVfaXRlcmF0b3I8bm9ybWFsX25vZGUsIG5vcm1hbF9y
ZWZlcmVuY2UsIG5vcm1hbF9wb2ludGVyPjsKKyAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPQorICAg
ICAgYnRyZWVfaXRlcmF0b3I8Y29uc3Rfbm9kZSwgY29uc3RfcmVmZXJlbmNlLCBjb25zdF9wb2lu
dGVyPjsKKworIHB1YmxpYzoKKyAgLy8gVGhlc2UgYWxpYXNlcyBhcmUgcHVibGljIGZvciBzdGQ6
Oml0ZXJhdG9yX3RyYWl0cy4KKyAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gdHlwZW5hbWUgTm9k
ZTo6ZGlmZmVyZW5jZV90eXBlOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgcGFyYW1z
X3R5cGU6OnZhbHVlX3R5cGU7CisgIHVzaW5nIHBvaW50ZXIgPSBQb2ludGVyOworICB1c2luZyBy
ZWZlcmVuY2UgPSBSZWZlcmVuY2U7CisgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpi
aWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsKKworICBidHJlZV9pdGVyYXRvcigpIDogbm9kZShu
dWxscHRyKSwgcG9zaXRpb24oLTEpIHt9CisgIGJ0cmVlX2l0ZXJhdG9yKE5vZGUgKm4sIGludCBw
KSA6IG5vZGUobiksIHBvc2l0aW9uKHApIHt9CisKKyAgLy8gTk9URTogdGhpcyBTRklOQUUgYWxs
b3dzIGZvciBpbXBsaWNpdCBjb252ZXJzaW9ucyBmcm9tIGl0ZXJhdG9yIHRvCisgIC8vIGNvbnN0
X2l0ZXJhdG9yLCBidXQgaXQgc3BlY2lmaWNhbGx5IGF2b2lkcyBkZWZpbmluZyBjb3B5IGNvbnN0
cnVjdG9ycyBzbworICAvLyB0aGF0IGJ0cmVlX2l0ZXJhdG9yIGNhbiBiZSB0cml2aWFsbHkgY29w
eWFibGUuIFRoaXMgaXMgZm9yIHBlcmZvcm1hbmNlIGFuZAorICAvLyBiaW5hcnkgc2l6ZSByZWFz
b25zLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTiwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUCwKKyAg
ICAgICAgICAgIGFic2w6OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgIHN0ZDo6aXNfc2Ft
ZTxidHJlZV9pdGVyYXRvcjxOLCBSLCBQPiwgaXRlcmF0b3I+Ojp2YWx1ZSAmJgorICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmlzX3NhbWU8YnRyZWVfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPjo6
dmFsdWUsCisgICAgICAgICAgICAgICAgaW50PiA9IDA+CisgIGJ0cmVlX2l0ZXJhdG9yKGNvbnN0
IGJ0cmVlX2l0ZXJhdG9yPE4sIFIsIFA+ICZ4KSAgLy8gTk9MSU5UCisgICAgICA6IG5vZGUoeC5u
b2RlKSwgcG9zaXRpb24oeC5wb3NpdGlvbikge30KKworIHByaXZhdGU6CisgIC8vIFRoaXMgU0ZJ
TkFFIGFsbG93cyBleHBsaWNpdCBjb252ZXJzaW9ucyBmcm9tIGNvbnN0X2l0ZXJhdG9yIHRvCisg
IC8vIGl0ZXJhdG9yLCBidXQgYWxzbyBhdm9pZHMgZGVmaW5pbmcgYSBjb3B5IGNvbnN0cnVjdG9y
LgorICAvLyBOT1RFOiB0aGUgY29uc3RfY2FzdCBpcyBzYWZlIGJlY2F1c2UgdGhpcyBjb25zdHJ1
Y3RvciBpcyBvbmx5IGNhbGxlZCBieQorICAvLyBub24tY29uc3QgbWV0aG9kcyBhbmQgdGhlIGNv
bnRhaW5lciBvd25zIHRoZSBub2Rlcy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE4sIHR5cGVuYW1l
IFIsIHR5cGVuYW1lIFAsCisgICAgICAgICAgICBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICAg
ICAgICAgICBzdGQ6OmlzX3NhbWU8YnRyZWVfaXRlcmF0b3I8TiwgUiwgUD4sIGNvbnN0X2l0ZXJh
dG9yPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPGJ0cmVlX2l0
ZXJhdG9yLCBpdGVyYXRvcj46OnZhbHVlLAorICAgICAgICAgICAgICAgIGludD4gPSAwPgorICBl
eHBsaWNpdCBidHJlZV9pdGVyYXRvcihjb25zdCBidHJlZV9pdGVyYXRvcjxOLCBSLCBQPiAmeCkK
KyAgICAgIDogbm9kZShjb25zdF9jYXN0PG5vZGVfdHlwZSAqPih4Lm5vZGUpKSwgcG9zaXRpb24o
eC5wb3NpdGlvbikge30KKworICAvLyBJbmNyZW1lbnQvZGVjcmVtZW50IHRoZSBpdGVyYXRvci4K
KyAgdm9pZCBpbmNyZW1lbnQoKSB7CisgICAgaWYgKG5vZGUtPmxlYWYoKSAmJiArK3Bvc2l0aW9u
IDwgbm9kZS0+Y291bnQoKSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbmNyZW1lbnRf
c2xvdygpOworICB9CisgIHZvaWQgaW5jcmVtZW50X3Nsb3coKTsKKworICB2b2lkIGRlY3JlbWVu
dCgpIHsKKyAgICBpZiAobm9kZS0+bGVhZigpICYmIC0tcG9zaXRpb24gPj0gMCkgeworICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBkZWNyZW1lbnRfc2xvdygpOworICB9CisgIHZvaWQgZGVjcmVt
ZW50X3Nsb3coKTsKKworIHB1YmxpYzoKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0
ZXJhdG9yICZ4KSBjb25zdCB7CisgICAgcmV0dXJuIG5vZGUgPT0geC5ub2RlICYmIHBvc2l0aW9u
ID09IHgucG9zaXRpb247CisgIH0KKyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNvbnN0X2l0ZXJh
dG9yICZ4KSBjb25zdCB7CisgICAgcmV0dXJuIG5vZGUgIT0geC5ub2RlIHx8IHBvc2l0aW9uICE9
IHgucG9zaXRpb247CisgIH0KKworICAvLyBBY2Nlc3NvcnMgZm9yIHRoZSBrZXkvdmFsdWUgdGhl
IGl0ZXJhdG9yIGlzIHBvaW50aW5nIGF0LgorICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3Qg
eworICAgIHJldHVybiBub2RlLT52YWx1ZShwb3NpdGlvbik7CisgIH0KKyAgcG9pbnRlciBvcGVy
YXRvci0+KCkgY29uc3QgeworICAgIHJldHVybiAmbm9kZS0+dmFsdWUocG9zaXRpb24pOworICB9
CisKKyAgYnRyZWVfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7CisgICAgaW5jcmVtZW50KCk7Cisg
ICAgcmV0dXJuICp0aGlzOworICB9CisgIGJ0cmVlX2l0ZXJhdG9yJiBvcGVyYXRvci0tKCkgewor
ICAgIGRlY3JlbWVudCgpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorICBidHJlZV9pdGVyYXRv
ciBvcGVyYXRvcisrKGludCkgeworICAgIGJ0cmVlX2l0ZXJhdG9yIHRtcCA9ICp0aGlzOworICAg
ICsrKnRoaXM7CisgICAgcmV0dXJuIHRtcDsKKyAgfQorICBidHJlZV9pdGVyYXRvciBvcGVyYXRv
ci0tKGludCkgeworICAgIGJ0cmVlX2l0ZXJhdG9yIHRtcCA9ICp0aGlzOworICAgIC0tKnRoaXM7
CisgICAgcmV0dXJuIHRtcDsKKyAgfQorCisgcHJpdmF0ZToKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFBhcmFtcz4KKyAgZnJpZW5kIGNsYXNzIGJ0cmVlOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJl
ZT4KKyAgZnJpZW5kIGNsYXNzIGJ0cmVlX2NvbnRhaW5lcjsKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRyZWU+CisgIGZyaWVuZCBjbGFzcyBidHJlZV9zZXRfY29udGFpbmVyOworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVHJlZT4KKyAgZnJpZW5kIGNsYXNzIGJ0cmVlX21hcF9jb250YWluZXI7CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUcmVlPgorICBmcmllbmQgY2xhc3MgYnRyZWVfbXVsdGlzZXRfY29u
dGFpbmVyOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTiwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUD4K
KyAgZnJpZW5kIHN0cnVjdCBidHJlZV9pdGVyYXRvcjsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFRy
ZWVUeXBlLCB0eXBlbmFtZSBDaGVja2VyVHlwZT4KKyAgZnJpZW5kIGNsYXNzIGJhc2VfY2hlY2tl
cjsKKworICBjb25zdCBrZXlfdHlwZSAma2V5KCkgY29uc3QgeyByZXR1cm4gbm9kZS0+a2V5KHBv
c2l0aW9uKTsgfQorICBzbG90X3R5cGUgKnNsb3QoKSB7IHJldHVybiBub2RlLT5zbG90KHBvc2l0
aW9uKTsgfQorCisgIC8vIFRoZSBub2RlIGluIHRoZSB0cmVlIHRoZSBpdGVyYXRvciBpcyBwb2lu
dGluZyBhdC4KKyAgTm9kZSAqbm9kZTsKKyAgLy8gVGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgbm9k
ZSBvZiB0aGUgdHJlZSB0aGUgaXRlcmF0b3IgaXMgcG9pbnRpbmcgYXQuCisgIC8vIFRPRE8oZXpi
KTogbWFrZSB0aGlzIGEgZmllbGRfdHlwZQorICBpbnQgcG9zaXRpb247Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgUGFyYW1zPgorY2xhc3MgYnRyZWUgeworICB1c2luZyBub2RlX3R5cGUgPSBi
dHJlZV9ub2RlPFBhcmFtcz47CisgIHVzaW5nIGlzX2tleV9jb21wYXJlX3RvID0gdHlwZW5hbWUg
UGFyYW1zOjppc19rZXlfY29tcGFyZV90bzsKKworICAvLyBXZSB1c2UgYSBzdGF0aWMgZW1wdHkg
bm9kZSBmb3IgdGhlIHJvb3QvbGVmdG1vc3QvcmlnaHRtb3N0IG9mIGVtcHR5IGJ0cmVlcworICAv
LyBpbiBvcmRlciB0byBhdm9pZCBicmFuY2hpbmcgaW4gYmVnaW4oKS9lbmQoKS4KKyAgc3RydWN0
IGFsaWduYXMobm9kZV90eXBlOjpBbGlnbm1lbnQoKSkgRW1wdHlOb2RlVHlwZSA6IG5vZGVfdHlw
ZSB7CisgICAgdXNpbmcgZmllbGRfdHlwZSA9IHR5cGVuYW1lIG5vZGVfdHlwZTo6ZmllbGRfdHlw
ZTsKKyAgICBub2RlX3R5cGUgKnBhcmVudDsKKyAgICBmaWVsZF90eXBlIHBvc2l0aW9uID0gMDsK
KyAgICBmaWVsZF90eXBlIHN0YXJ0ID0gMDsKKyAgICBmaWVsZF90eXBlIGNvdW50ID0gMDsKKyAg
ICAvLyBtYXhfY291bnQgbXVzdCBiZSAhPSBrSW50ZXJuYWxOb2RlTWF4Q291bnQgKHNvIHRoYXQg
dGhpcyBub2RlIGlzIHJlZ2FyZGVkCisgICAgLy8gYXMgYSBsZWFmIG5vZGUpLiBtYXhfY291bnQo
KSBpcyBuZXZlciBjYWxsZWQgd2hlbiB0aGUgdHJlZSBpcyBlbXB0eS4KKyAgICBmaWVsZF90eXBl
IG1heF9jb3VudCA9IG5vZGVfdHlwZTo6a0ludGVybmFsTm9kZU1heENvdW50ICsgMTsKKworI2lm
ZGVmIF9NU0NfVkVSCisgICAgLy8gTVNWQyBoYXMgY29uc3RleHByIGNvZGUgZ2VuZXJhdGlvbnMg
YnVncyBoZXJlLgorICAgIEVtcHR5Tm9kZVR5cGUoKSA6IHBhcmVudCh0aGlzKSB7fQorI2Vsc2UK
KyAgICBjb25zdGV4cHIgRW1wdHlOb2RlVHlwZShub2RlX3R5cGUgKnApIDogcGFyZW50KHApIHt9
CisjZW5kaWYKKyAgfTsKKworICBzdGF0aWMgbm9kZV90eXBlICpFbXB0eU5vZGUoKSB7CisjaWZk
ZWYgX01TQ19WRVIKKyAgICBzdGF0aWMgRW1wdHlOb2RlVHlwZSogZW1wdHlfbm9kZSA9IG5ldyBF
bXB0eU5vZGVUeXBlOworICAgIC8vIFRoaXMgYXNzZXJ0IGZhaWxzIG9uIHNvbWUgb3RoZXIgY29u
c3RydWN0aW9uIG1ldGhvZHMuCisgICAgYXNzZXJ0KGVtcHR5X25vZGUtPnBhcmVudCA9PSBlbXB0
eV9ub2RlKTsKKyAgICByZXR1cm4gZW1wdHlfbm9kZTsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0
ZXhwciBFbXB0eU5vZGVUeXBlIGVtcHR5X25vZGUoCisgICAgICAgIGNvbnN0X2Nhc3Q8RW1wdHlO
b2RlVHlwZSAqPigmZW1wdHlfbm9kZSkpOworICAgIHJldHVybiBjb25zdF9jYXN0PEVtcHR5Tm9k
ZVR5cGUgKj4oJmVtcHR5X25vZGUpOworI2VuZGlmCisgIH0KKworICBlbnVtIHsKKyAgICBrTm9k
ZVZhbHVlcyA9IG5vZGVfdHlwZTo6a05vZGVWYWx1ZXMsCisgICAga01pbk5vZGVWYWx1ZXMgPSBr
Tm9kZVZhbHVlcyAvIDIsCisgIH07CisKKyAgc3RydWN0IG5vZGVfc3RhdHMgeworICAgIHVzaW5n
IHNpemVfdHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6c2l6ZV90eXBlOworCisgICAgbm9kZV9zdGF0
cyhzaXplX3R5cGUgbCwgc2l6ZV90eXBlIGkpCisgICAgICAgIDogbGVhZl9ub2RlcyhsKSwKKyAg
ICAgICAgICBpbnRlcm5hbF9ub2RlcyhpKSB7CisgICAgfQorCisgICAgbm9kZV9zdGF0cyYgb3Bl
cmF0b3IrPShjb25zdCBub2RlX3N0YXRzICZ4KSB7CisgICAgICBsZWFmX25vZGVzICs9IHgubGVh
Zl9ub2RlczsKKyAgICAgIGludGVybmFsX25vZGVzICs9IHguaW50ZXJuYWxfbm9kZXM7CisgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgc2l6ZV90eXBlIGxlYWZfbm9kZXM7CisgICAg
c2l6ZV90eXBlIGludGVybmFsX25vZGVzOworICB9OworCisgcHVibGljOgorICB1c2luZyBrZXlf
dHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6a2V5X3R5cGU7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0
eXBlbmFtZSBQYXJhbXM6OnZhbHVlX3R5cGU7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVuYW1l
IFBhcmFtczo6c2l6ZV90eXBlOworICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBQ
YXJhbXM6OmRpZmZlcmVuY2VfdHlwZTsKKyAgdXNpbmcga2V5X2NvbXBhcmUgPSB0eXBlbmFtZSBQ
YXJhbXM6OmtleV9jb21wYXJlOworICB1c2luZyB2YWx1ZV9jb21wYXJlID0gdHlwZW5hbWUgUGFy
YW1zOjp2YWx1ZV9jb21wYXJlOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFBh
cmFtczo6YWxsb2NhdG9yX3R5cGU7CisgIHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVuYW1lIFBhcmFt
czo6cmVmZXJlbmNlOworICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSB0eXBlbmFtZSBQYXJhbXM6
OmNvbnN0X3JlZmVyZW5jZTsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIFBhcmFtczo6cG9p
bnRlcjsKKyAgdXNpbmcgY29uc3RfcG9pbnRlciA9IHR5cGVuYW1lIFBhcmFtczo6Y29uc3RfcG9p
bnRlcjsKKyAgdXNpbmcgaXRlcmF0b3IgPSBidHJlZV9pdGVyYXRvcjxub2RlX3R5cGUsIHJlZmVy
ZW5jZSwgcG9pbnRlcj47CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gdHlwZW5hbWUgaXRlcmF0
b3I6OmNvbnN0X2l0ZXJhdG9yOworICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZl
cnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsKKyAgdXNpbmcgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciA9
IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj47CisgIHVzaW5nIG5vZGVfaGFu
ZGxlX3R5cGUgPSBub2RlX2hhbmRsZTxQYXJhbXMsIFBhcmFtcywgYWxsb2NhdG9yX3R5cGU+Owor
CisgIC8vIEludGVybmFsIHR5cGVzIG1hZGUgcHVibGljIGZvciB1c2UgYnkgYnRyZWVfY29udGFp
bmVyIHR5cGVzLgorICB1c2luZyBwYXJhbXNfdHlwZSA9IFBhcmFtczsKKyAgdXNpbmcgc2xvdF90
eXBlID0gdHlwZW5hbWUgUGFyYW1zOjpzbG90X3R5cGU7CisKKyBwcml2YXRlOgorICAvLyBGb3Ig
dXNlIGluIGNvcHlfb3JfbW92ZV92YWx1ZXNfaW5fb3JkZXIuCisgIGNvbnN0IHZhbHVlX3R5cGUg
Jm1heWJlX21vdmVfZnJvbV9pdGVyYXRvcihjb25zdF9pdGVyYXRvciB4KSB7IHJldHVybiAqeDsg
fQorICB2YWx1ZV90eXBlICYmbWF5YmVfbW92ZV9mcm9tX2l0ZXJhdG9yKGl0ZXJhdG9yIHgpIHsg
cmV0dXJuIHN0ZDo6bW92ZSgqeCk7IH0KKworICAvLyBDb3BpZXMgb3IgbW92ZXMgKGRlcGVuZGlu
ZyBvbiB0aGUgdGVtcGxhdGUgcGFyYW1ldGVyKSB0aGUgdmFsdWVzIGluCisgIC8vIHggaW50byB0
aGlzIGJ0cmVlIGluIHRoZWlyIG9yZGVyIGluIHguIFRoaXMgYnRyZWUgbXVzdCBiZSBlbXB0eSBi
ZWZvcmUgdGhpcworICAvLyBtZXRob2QgaXMgY2FsbGVkLiBUaGlzIG1ldGhvZCBpcyB1c2VkIGlu
IGNvcHkgY29uc3RydWN0aW9uLCBjb3B5CisgIC8vIGFzc2lnbm1lbnQsIGFuZCBtb3ZlIGFzc2ln
bm1lbnQuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBCdHJlZT4KKyAgdm9pZCBjb3B5X29yX21vdmVf
dmFsdWVzX2luX29yZGVyKEJ0cmVlICp4KTsKKworICAvLyBWYWxpZGF0ZXMgdGhhdCB2YXJpb3Vz
IGFzc3VtcHRpb25zL3JlcXVpcmVtZW50cyBhcmUgdHJ1ZSBhdCBjb21waWxlIHRpbWUuCisgIGNv
bnN0ZXhwciBzdGF0aWMgYm9vbCBzdGF0aWNfYXNzZXJ0X3ZhbGlkYXRpb24oKTsKKworIHB1Ymxp
YzoKKyAgYnRyZWUoY29uc3Qga2V5X2NvbXBhcmUgJmNvbXAsIGNvbnN0IGFsbG9jYXRvcl90eXBl
ICZhbGxvYyk7CisKKyAgYnRyZWUoY29uc3QgYnRyZWUgJngpOworICBidHJlZShidHJlZSAmJngp
IG5vZXhjZXB0CisgICAgICA6IHJvb3RfKHN0ZDo6bW92ZSh4LnJvb3RfKSksCisgICAgICAgIHJp
Z2h0bW9zdF8oYWJzbDo6ZXhjaGFuZ2UoeC5yaWdodG1vc3RfLCBFbXB0eU5vZGUoKSkpLAorICAg
ICAgICBzaXplXyhhYnNsOjpleGNoYW5nZSh4LnNpemVfLCAwKSkgeworICAgIHgubXV0YWJsZV9y
b290KCkgPSBFbXB0eU5vZGUoKTsKKyAgfQorCisgIH5idHJlZSgpIHsKKyAgICAvLyBQdXQgc3Rh
dGljX2Fzc2VydHMgaW4gZGVzdHJ1Y3RvciB0byBhdm9pZCB0cmlnZ2VyaW5nIHRoZW0gYmVmb3Jl
IHRoZSB0eXBlCisgICAgLy8gaXMgY29tcGxldGUuCisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
YXNzZXJ0X3ZhbGlkYXRpb24oKSwgIlRoaXMgY2FsbCBtdXN0IGJlIGVsaWRlZC4iKTsKKyAgICBj
bGVhcigpOworICB9CisKKyAgLy8gQXNzaWduIHRoZSBjb250ZW50cyBvZiB4IHRvICp0aGlzLgor
ICBidHJlZSAmb3BlcmF0b3I9KGNvbnN0IGJ0cmVlICZ4KTsKKyAgYnRyZWUgJm9wZXJhdG9yPShi
dHJlZSAmJngpIG5vZXhjZXB0OworCisgIGl0ZXJhdG9yIGJlZ2luKCkgeworICAgIHJldHVybiBp
dGVyYXRvcihsZWZ0bW9zdCgpLCAwKTsKKyAgfQorICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsKKyAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IobGVmdG1vc3QoKSwgMCk7CisgIH0KKyAg
aXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gaXRlcmF0b3IocmlnaHRtb3N0XywgcmlnaHRtb3N0Xy0+
Y291bnQoKSk7IH0KKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeworICAgIHJldHVybiBj
b25zdF9pdGVyYXRvcihyaWdodG1vc3RfLCByaWdodG1vc3RfLT5jb3VudCgpKTsKKyAgfQorICBy
ZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsKKyAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihl
bmQoKSk7CisgIH0KKyAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7Cisg
ICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOworICB9CisgIHJldmVyc2Vf
aXRlcmF0b3IgcmVuZCgpIHsKKyAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsK
KyAgfQorICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7CisgICAgcmV0dXJu
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7CisgIH0KKworICAvLyBGaW5kcyB0aGUg
Zmlyc3QgZWxlbWVudCB3aG9zZSBrZXkgaXMgbm90IGxlc3MgdGhhbiBrZXkuCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBLPgorICBpdGVyYXRvciBsb3dlcl9ib3VuZChjb25zdCBLICZrZXkpIHsKKyAg
ICByZXR1cm4gaW50ZXJuYWxfZW5kKGludGVybmFsX2xvd2VyX2JvdW5kKGtleSkpOworICB9Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBLPgorICBjb25zdF9pdGVyYXRvciBsb3dlcl9ib3VuZChjb25z
dCBLICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gaW50ZXJuYWxfZW5kKGludGVybmFsX2xvd2Vy
X2JvdW5kKGtleSkpOworICB9CisKKyAgLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgd2hvc2Ug
a2V5IGlzIGdyZWF0ZXIgdGhhbiBrZXkuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgorICBpdGVy
YXRvciB1cHBlcl9ib3VuZChjb25zdCBLICZrZXkpIHsKKyAgICByZXR1cm4gaW50ZXJuYWxfZW5k
KGludGVybmFsX3VwcGVyX2JvdW5kKGtleSkpOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBL
PgorICBjb25zdF9pdGVyYXRvciB1cHBlcl9ib3VuZChjb25zdCBLICZrZXkpIGNvbnN0IHsKKyAg
ICByZXR1cm4gaW50ZXJuYWxfZW5kKGludGVybmFsX3VwcGVyX2JvdW5kKGtleSkpOworICB9CisK
KyAgLy8gRmluZHMgdGhlIHJhbmdlIG9mIHZhbHVlcyB3aGljaCBjb21wYXJlIGVxdWFsIHRvIGtl
eS4gVGhlIGZpcnN0IG1lbWJlciBvZgorICAvLyB0aGUgcmV0dXJuZWQgcGFpciBpcyBlcXVhbCB0
byBsb3dlcl9ib3VuZChrZXkpLiBUaGUgc2Vjb25kIG1lbWJlciBwYWlyIG9mCisgIC8vIHRoZSBw
YWlyIGlzIGVxdWFsIHRvIHVwcGVyX2JvdW5kKGtleSkuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBL
PgorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9yPiBlcXVhbF9yYW5nZShjb25zdCBLICZr
ZXkpIHsKKyAgICByZXR1cm4ge2xvd2VyX2JvdW5kKGtleSksIHVwcGVyX2JvdW5kKGtleSl9Owor
ICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgorICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3Is
IGNvbnN0X2l0ZXJhdG9yPiBlcXVhbF9yYW5nZShjb25zdCBLICZrZXkpIGNvbnN0IHsKKyAgICBy
ZXR1cm4ge2xvd2VyX2JvdW5kKGtleSksIHVwcGVyX2JvdW5kKGtleSl9OworICB9CisKKyAgLy8g
SW5zZXJ0cyBhIHZhbHVlIGludG8gdGhlIGJ0cmVlIG9ubHkgaWYgaXQgZG9lcyBub3QgYWxyZWFk
eSBleGlzdC4gVGhlCisgIC8vIGJvb2xlYW4gcmV0dXJuIHZhbHVlIGluZGljYXRlcyB3aGV0aGVy
IGluc2VydGlvbiBzdWNjZWVkZWQgb3IgZmFpbGVkLgorICAvLyBSZXF1aXJlbWVudDogaWYgYGtl
eWAgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGJ0cmVlLCBkb2VzIG5vdCBjb25zdW1lIGBhcmdzYC4K
KyAgLy8gUmVxdWlyZW1lbnQ6IGBrZXlgIGlzIG5ldmVyIHJlZmVyZW5jZWQgYWZ0ZXIgY29uc3Vt
aW5nIGBhcmdzYC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIHN0ZDo6cGFpcjxp
dGVyYXRvciwgYm9vbD4gaW5zZXJ0X3VuaXF1ZShjb25zdCBrZXlfdHlwZSAma2V5LCBBcmdzICYm
Li4uIGFyZ3MpOworCisgIC8vIEluc2VydHMgd2l0aCBoaW50LiBDaGVja3MgdG8gc2VlIGlmIHRo
ZSB2YWx1ZSBzaG91bGQgYmUgcGxhY2VkIGltbWVkaWF0ZWx5CisgIC8vIGJlZm9yZSBgcG9zaXRp
b25gIGluIHRoZSB0cmVlLiBJZiBzbywgdGhlbiB0aGUgaW5zZXJ0aW9uIHdpbGwgdGFrZQorICAv
LyBhbW9ydGl6ZWQgY29uc3RhbnQgdGltZS4gSWYgbm90LCB0aGUgaW5zZXJ0aW9uIHdpbGwgdGFr
ZSBhbW9ydGl6ZWQKKyAgLy8gbG9nYXJpdGhtaWMgdGltZSBhcyBpZiBhIGNhbGwgdG8gaW5zZXJ0
X3VuaXF1ZSgpIHdlcmUgbWFkZS4KKyAgLy8gUmVxdWlyZW1lbnQ6IGlmIGBrZXlgIGFscmVhZHkg
ZXhpc3RzIGluIHRoZSBidHJlZSwgZG9lcyBub3QgY29uc3VtZSBgYXJnc2AuCisgIC8vIFJlcXVp
cmVtZW50OiBga2V5YCBpcyBuZXZlciByZWZlcmVuY2VkIGFmdGVyIGNvbnN1bWluZyBgYXJnc2Au
CisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJv
b2w+IGluc2VydF9oaW50X3VuaXF1ZShpdGVyYXRvciBwb3NpdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5X3R5cGUgJmtleSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJncyAmJi4uLiBh
cmdzKTsKKworICAvLyBJbnNlcnQgYSByYW5nZSBvZiB2YWx1ZXMgaW50byB0aGUgYnRyZWUuCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICB2b2lkIGluc2VydF9pdGVyYXRv
cl91bmlxdWUoSW5wdXRJdGVyYXRvciBiLCBJbnB1dEl0ZXJhdG9yIGUpOworCisgIC8vIEluc2Vy
dHMgYSB2YWx1ZSBpbnRvIHRoZSBidHJlZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlw
ZT4KKyAgaXRlcmF0b3IgaW5zZXJ0X211bHRpKGNvbnN0IGtleV90eXBlICZrZXksIFZhbHVlVHlw
ZSAmJnYpOworCisgIC8vIEluc2VydHMgYSB2YWx1ZSBpbnRvIHRoZSBidHJlZS4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KKyAgaXRlcmF0b3IgaW5zZXJ0X211bHRpKFZhbHVlVHlw
ZSAmJnYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X211bHRpKHBhcmFtc190eXBlOjprZXkodiksIHN0
ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHYpKTsKKyAgfQorCisgIC8vIEluc2VydCB3aXRoIGhpbnQu
IENoZWNrIHRvIHNlZSBpZiB0aGUgdmFsdWUgc2hvdWxkIGJlIHBsYWNlZCBpbW1lZGlhdGVseQor
ICAvLyBiZWZvcmUgcG9zaXRpb24gaW4gdGhlIHRyZWUuIElmIGl0IGRvZXMsIHRoZW4gdGhlIGlu
c2VydGlvbiB3aWxsIHRha2UKKyAgLy8gYW1vcnRpemVkIGNvbnN0YW50IHRpbWUuIElmIG5vdCwg
dGhlIGluc2VydGlvbiB3aWxsIHRha2UgYW1vcnRpemVkCisgIC8vIGxvZ2FyaXRobWljIHRpbWUg
YXMgaWYgYSBjYWxsIHRvIGluc2VydF9tdWx0aSh2KSB3ZXJlIG1hZGUuCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBWYWx1ZVR5cGU+CisgIGl0ZXJhdG9yIGluc2VydF9oaW50X211bHRpKGl0ZXJhdG9y
IHBvc2l0aW9uLCBWYWx1ZVR5cGUgJiZ2KTsKKworICAvLyBJbnNlcnQgYSByYW5nZSBvZiB2YWx1
ZXMgaW50byB0aGUgYnRyZWUuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgor
ICB2b2lkIGluc2VydF9pdGVyYXRvcl9tdWx0aShJbnB1dEl0ZXJhdG9yIGIsIElucHV0SXRlcmF0
b3IgZSk7CisKKyAgLy8gRXJhc2UgdGhlIHNwZWNpZmllZCBpdGVyYXRvciBmcm9tIHRoZSBidHJl
ZS4gVGhlIGl0ZXJhdG9yIG11c3QgYmUgdmFsaWQKKyAgLy8gKGkuZS4gbm90IGVxdWFsIHRvIGVu
ZCgpKS4gIFJldHVybiBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgbm9kZSBhZnRlcgorICAv
LyB0aGUgb25lIHRoYXQgd2FzIGVyYXNlZCAob3IgZW5kKCkgaWYgbm9uZSBleGlzdHMpLgorICAv
LyBSZXF1aXJlbWVudDogZG9lcyBub3QgcmVhZCB0aGUgdmFsdWUgYXQgYCppdGVyYC4KKyAgaXRl
cmF0b3IgZXJhc2UoaXRlcmF0b3IgaXRlcik7CisKKyAgLy8gRXJhc2VzIHJhbmdlLiBSZXR1cm5z
IHRoZSBudW1iZXIgb2Yga2V5cyBlcmFzZWQgYW5kIGFuIGl0ZXJhdG9yIHBvaW50aW5nCisgIC8v
IHRvIHRoZSBlbGVtZW50IGFmdGVyIHRoZSBsYXN0IGVyYXNlZCBlbGVtZW50LgorICBzdGQ6OnBh
aXI8c2l6ZV90eXBlLCBpdGVyYXRvcj4gZXJhc2UoaXRlcmF0b3IgYmVnaW4sIGl0ZXJhdG9yIGVu
ZCk7CisKKyAgLy8gRXJhc2VzIHRoZSBzcGVjaWZpZWQga2V5IGZyb20gdGhlIGJ0cmVlLiBSZXR1
cm5zIDEgaWYgYW4gZWxlbWVudCB3YXMKKyAgLy8gZXJhc2VkIGFuZCAwIG90aGVyd2lzZS4KKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIHNpemVfdHlwZSBlcmFzZV91bmlxdWUoY29uc3QgSyAm
a2V5KTsKKworICAvLyBFcmFzZXMgYWxsIG9mIHRoZSBlbnRyaWVzIG1hdGNoaW5nIHRoZSBzcGVj
aWZpZWQga2V5IGZyb20gdGhlCisgIC8vIGJ0cmVlLiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgZXJhc2VkLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgc2l6ZV90eXBlIGVyYXNl
X211bHRpKGNvbnN0IEsgJmtleSk7CisKKyAgLy8gRmluZHMgdGhlIGl0ZXJhdG9yIGNvcnJlc3Bv
bmRpbmcgdG8gYSBrZXkgb3IgcmV0dXJucyBlbmQoKSBpZiB0aGUga2V5IGlzCisgIC8vIG5vdCBw
cmVzZW50LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgaXRlcmF0b3IgZmluZChjb25zdCBL
ICZrZXkpIHsKKyAgICByZXR1cm4gaW50ZXJuYWxfZW5kKGludGVybmFsX2ZpbmQoa2V5KSk7Cisg
IH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3Qg
SyAma2V5KSBjb25zdCB7CisgICAgcmV0dXJuIGludGVybmFsX2VuZChpbnRlcm5hbF9maW5kKGtl
eSkpOworICB9CisKKyAgLy8gUmV0dXJucyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgdGltZXMg
dGhlIGtleSBhcHBlYXJzIGluIHRoZSBidHJlZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+Cisg
IHNpemVfdHlwZSBjb3VudF91bmlxdWUoY29uc3QgSyAma2V5KSBjb25zdCB7CisgICAgY29uc3Qg
aXRlcmF0b3IgYmVnaW4gPSBpbnRlcm5hbF9maW5kKGtleSk7CisgICAgaWYgKGJlZ2luLm5vZGUg
PT0gbnVsbHB0cikgeworICAgICAgLy8gVGhlIGtleSBkb2Vzbid0IGV4aXN0IGluIHRoZSB0cmVl
LgorICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworICB9CisgIC8vIFJldHVy
bnMgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBrZXkgYXBwZWFycyBpbiB0aGUg
YnRyZWUuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgorICBzaXplX3R5cGUgY291bnRfbXVsdGko
Y29uc3QgSyAma2V5KSBjb25zdCB7CisgICAgY29uc3QgYXV0byByYW5nZSA9IGVxdWFsX3Jhbmdl
KGtleSk7CisgICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2UocmFuZ2UuZmlyc3QsIHJhbmdlLnNlY29u
ZCk7CisgIH0KKworICAvLyBDbGVhciB0aGUgYnRyZWUsIGRlbGV0aW5nIGFsbCBvZiB0aGUgdmFs
dWVzIGl0IGNvbnRhaW5zLgorICB2b2lkIGNsZWFyKCk7CisKKyAgLy8gU3dhcCB0aGUgY29udGVu
dHMgb2YgKnRoaXMgYW5kIHguCisgIHZvaWQgc3dhcChidHJlZSAmeCk7CisKKyAgY29uc3Qga2V5
X2NvbXBhcmUgJmtleV9jb21wKCkgY29uc3Qgbm9leGNlcHQgeworICAgIHJldHVybiByb290Xy50
ZW1wbGF0ZSBnZXQ8MD4oKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUg
TEs+CisgIGJvb2wgY29tcGFyZV9rZXlzKGNvbnN0IEsgJngsIGNvbnN0IExLICZ5KSBjb25zdCB7
CisgICAgcmV0dXJuIGNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX2xlc3NfdGhh
bihrZXlfY29tcCgpKHgsIHkpKTsKKyAgfQorCisgIHZhbHVlX2NvbXBhcmUgdmFsdWVfY29tcCgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlX2NvbXBhcmUoa2V5X2NvbXAoKSk7IH0KKworICAvLyBWZXJp
ZmllcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBidHJlZS4KKyAgdm9pZCB2ZXJpZnkoKSBjb25zdDsK
KworICAvLyBTaXplIHJvdXRpbmVzLgorICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IHNpemVfOyB9CisgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIChzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdHlwZT46Om1heCkoKTsgfQorICBib29sIGVtcHR5KCkgY29uc3Qg
eyByZXR1cm4gc2l6ZV8gPT0gMDsgfQorCisgIC8vIFRoZSBoZWlnaHQgb2YgdGhlIGJ0cmVlLiBB
biBlbXB0eSB0cmVlIHdpbGwgaGF2ZSBoZWlnaHQgMC4KKyAgc2l6ZV90eXBlIGhlaWdodCgpIGNv
bnN0IHsKKyAgICBzaXplX3R5cGUgaCA9IDA7CisgICAgaWYgKHJvb3QoKSkgeworICAgICAgLy8g
Q291bnQgdGhlIGxlbmd0aCBvZiB0aGUgY2hhaW4gZnJvbSB0aGUgbGVmdG1vc3Qgbm9kZSB1cCB0
byB0aGUKKyAgICAgIC8vIHJvb3QuIFdlIGFjdHVhbGx5IGNvdW50IGZyb20gdGhlIHJvb3QgYmFj
ayBhcm91bmQgdG8gdGhlIGxldmVsIGJlbG93CisgICAgICAvLyB0aGUgcm9vdCwgYnV0IHRoZSBj
YWxjdWxhdGlvbiBpcyB0aGUgc2FtZSBiZWNhdXNlIG9mIHRoZSBjaXJjdWxhcml0eQorICAgICAg
Ly8gb2YgdGhhdCB0cmF2ZXJzYWwuCisgICAgICBjb25zdCBub2RlX3R5cGUgKm4gPSByb290KCk7
CisgICAgICBkbyB7CisgICAgICAgICsraDsKKyAgICAgICAgbiA9IG4tPnBhcmVudCgpOworICAg
ICAgfSB3aGlsZSAobiAhPSByb290KCkpOworICAgIH0KKyAgICByZXR1cm4gaDsKKyAgfQorCisg
IC8vIFRoZSBudW1iZXIgb2YgaW50ZXJuYWwsIGxlYWYgYW5kIHRvdGFsIG5vZGVzIHVzZWQgYnkg
dGhlIGJ0cmVlLgorICBzaXplX3R5cGUgbGVhZl9ub2RlcygpIGNvbnN0IHsKKyAgICByZXR1cm4g
aW50ZXJuYWxfc3RhdHMocm9vdCgpKS5sZWFmX25vZGVzOworICB9CisgIHNpemVfdHlwZSBpbnRl
cm5hbF9ub2RlcygpIGNvbnN0IHsKKyAgICByZXR1cm4gaW50ZXJuYWxfc3RhdHMocm9vdCgpKS5p
bnRlcm5hbF9ub2RlczsKKyAgfQorICBzaXplX3R5cGUgbm9kZXMoKSBjb25zdCB7CisgICAgbm9k
ZV9zdGF0cyBzdGF0cyA9IGludGVybmFsX3N0YXRzKHJvb3QoKSk7CisgICAgcmV0dXJuIHN0YXRz
LmxlYWZfbm9kZXMgKyBzdGF0cy5pbnRlcm5hbF9ub2RlczsKKyAgfQorCisgIC8vIFRoZSB0b3Rh
bCBudW1iZXIgb2YgYnl0ZXMgdXNlZCBieSB0aGUgYnRyZWUuCisgIHNpemVfdHlwZSBieXRlc191
c2VkKCkgY29uc3QgeworICAgIG5vZGVfc3RhdHMgc3RhdHMgPSBpbnRlcm5hbF9zdGF0cyhyb290
KCkpOworICAgIGlmIChzdGF0cy5sZWFmX25vZGVzID09IDEgJiYgc3RhdHMuaW50ZXJuYWxfbm9k
ZXMgPT0gMCkgeworICAgICAgcmV0dXJuIHNpemVvZigqdGhpcykgKworICAgICAgICAgICAgIG5v
ZGVfdHlwZTo6TGVhZlNpemUocm9vdCgpLT5tYXhfY291bnQoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHJldHVybiBzaXplb2YoKnRoaXMpICsKKyAgICAgICAgICAgICBzdGF0cy5sZWFmX25vZGVz
ICogbm9kZV90eXBlOjpMZWFmU2l6ZSgpICsKKyAgICAgICAgICAgICBzdGF0cy5pbnRlcm5hbF9u
b2RlcyAqIG5vZGVfdHlwZTo6SW50ZXJuYWxTaXplKCk7CisgICAgfQorICB9CisKKyAgLy8gVGhl
IGF2ZXJhZ2UgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgcGVyIHZhbHVlIHN0b3JlZCBpbiB0aGUgYnRy
ZWUuCisgIHN0YXRpYyBkb3VibGUgYXZlcmFnZV9ieXRlc19wZXJfdmFsdWUoKSB7CisgICAgLy8g
UmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHBlciB2YWx1ZSBvbiBhIGxlYWYgbm9kZSB0aGF0
IGlzIDc1JQorICAgIC8vIGZ1bGwuIEV4cGVyaW1lbnRhbGx5LCB0aGlzIG1hdGNoZXMgdXAgbmlj
ZWx5IHdpdGggdGhlIGNvbXB1dGVkIG51bWJlciBvZgorICAgIC8vIGJ5dGVzIHBlciB2YWx1ZSBp
biB0cmVlcyB0aGF0IGhhZCB0aGVpciB2YWx1ZXMgaW5zZXJ0ZWQgaW4gcmFuZG9tIG9yZGVyLgor
ICAgIHJldHVybiBub2RlX3R5cGU6OkxlYWZTaXplKCkgLyAoa05vZGVWYWx1ZXMgKiAwLjc1KTsK
KyAgfQorCisgIC8vIFRoZSBmdWxsbmVzcyBvZiB0aGUgYnRyZWUuIENvbXB1dGVkIGFzIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGJ0cmVlCisgIC8vIGRpdmlkZWQgYnkgdGhlIG1heGlt
dW0gbnVtYmVyIG9mIGVsZW1lbnRzIGEgdHJlZSB3aXRoIHRoZSBjdXJyZW50IG51bWJlcgorICAv
LyBvZiBub2RlcyBjb3VsZCBob2xkLiBBIHZhbHVlIG9mIDEgaW5kaWNhdGVzIHBlcmZlY3Qgc3Bh
Y2UKKyAgLy8gdXRpbGl6YXRpb24uIFNtYWxsZXIgdmFsdWVzIGluZGljYXRlIHNwYWNlIHdhc3Rh
Z2UuCisgIGRvdWJsZSBmdWxsbmVzcygpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZG91YmxlPihzaXplKCkpIC8gKG5vZGVzKCkgKiBrTm9kZVZhbHVlcyk7CisgIH0KKyAgLy8gVGhl
IG92ZXJoZWFkIG9mIHRoZSBidHJlZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgcGVyIG5vZGUuIENvbXB1
dGVkIGFzIHRoZQorICAvLyB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdXNlZCBieSB0aGUgYnRyZWUg
bWludXMgdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIGZvcgorICAvLyBzdG9yaW5nIGVsZW1lbnRz
IGRpdmlkZWQgYnkgdGhlIG51bWJlciBvZiBlbGVtZW50cy4KKyAgZG91YmxlIG92ZXJoZWFkKCkg
Y29uc3QgeworICAgIGlmIChlbXB0eSgpKSB7CisgICAgICByZXR1cm4gMC4wOworICAgIH0KKyAg
ICByZXR1cm4gKGJ5dGVzX3VzZWQoKSAtIHNpemUoKSAqIHNpemVvZih2YWx1ZV90eXBlKSkgLwor
ICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHNpemUoKSk7CisgIH0KKworICAvLyBUaGUg
YWxsb2NhdG9yIHVzZWQgYnkgdGhlIGJ0cmVlLgorICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2Nh
dG9yKCkgY29uc3QgeworICAgIHJldHVybiBhbGxvY2F0b3IoKTsKKyAgfQorCisgcHJpdmF0ZToK
KyAgLy8gSW50ZXJuYWwgYWNjZXNzb3Igcm91dGluZXMuCisgIG5vZGVfdHlwZSAqcm9vdCgpIHsg
cmV0dXJuIHJvb3RfLnRlbXBsYXRlIGdldDwyPigpOyB9CisgIGNvbnN0IG5vZGVfdHlwZSAqcm9v
dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3RfLnRlbXBsYXRlIGdldDwyPigpOyB9CisgIG5vZGVfdHlw
ZSAqJm11dGFibGVfcm9vdCgpIG5vZXhjZXB0IHsgcmV0dXJuIHJvb3RfLnRlbXBsYXRlIGdldDwy
PigpOyB9CisgIGtleV9jb21wYXJlICptdXRhYmxlX2tleV9jb21wKCkgbm9leGNlcHQgeyByZXR1
cm4gJnJvb3RfLnRlbXBsYXRlIGdldDwwPigpOyB9CisKKyAgLy8gVGhlIGxlZnRtb3N0IG5vZGUg
aXMgc3RvcmVkIGFzIHRoZSBwYXJlbnQgb2YgdGhlIHJvb3Qgbm9kZS4KKyAgbm9kZV90eXBlICps
ZWZ0bW9zdCgpIHsgcmV0dXJuIHJvb3QoKS0+cGFyZW50KCk7IH0KKyAgY29uc3Qgbm9kZV90eXBl
ICpsZWZ0bW9zdCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS0+cGFyZW50KCk7IH0KKworICAvLyBB
bGxvY2F0b3Igcm91dGluZXMuCisgIGFsbG9jYXRvcl90eXBlICptdXRhYmxlX2FsbG9jYXRvcigp
IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gJnJvb3RfLnRlbXBsYXRlIGdldDwxPigpOworICB9Cisg
IGNvbnN0IGFsbG9jYXRvcl90eXBlICZhbGxvY2F0b3IoKSBjb25zdCBub2V4Y2VwdCB7CisgICAg
cmV0dXJuIHJvb3RfLnRlbXBsYXRlIGdldDwxPigpOworICB9CisKKyAgLy8gQWxsb2NhdGVzIGEg
Y29ycmVjdGx5IGFsaWduZWQgbm9kZSBvZiBhdCBsZWFzdCBzaXplIGJ5dGVzIHVzaW5nIHRoZQor
ICAvLyBhbGxvY2F0b3IuCisgIG5vZGVfdHlwZSAqYWxsb2NhdGUoY29uc3Qgc2l6ZV90eXBlIHNp
emUpIHsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxub2RlX3R5cGUgKj4oCisgICAgICAg
IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6QWxsb2NhdGU8bm9kZV90eXBlOjpBbGlnbm1lbnQo
KT4oCisgICAgICAgICAgICBtdXRhYmxlX2FsbG9jYXRvcigpLCBzaXplKSk7CisgIH0KKworICAv
LyBOb2RlIGNyZWF0aW9uL2RlbGV0aW9uIHJvdXRpbmVzLgorICBub2RlX3R5cGUqIG5ld19pbnRl
cm5hbF9ub2RlKG5vZGVfdHlwZSAqcGFyZW50KSB7CisgICAgbm9kZV90eXBlICpwID0gYWxsb2Nh
dGUobm9kZV90eXBlOjpJbnRlcm5hbFNpemUoKSk7CisgICAgcmV0dXJuIG5vZGVfdHlwZTo6aW5p
dF9pbnRlcm5hbChwLCBwYXJlbnQpOworICB9CisgIG5vZGVfdHlwZSogbmV3X2xlYWZfbm9kZShu
b2RlX3R5cGUgKnBhcmVudCkgeworICAgIG5vZGVfdHlwZSAqcCA9IGFsbG9jYXRlKG5vZGVfdHlw
ZTo6TGVhZlNpemUoKSk7CisgICAgcmV0dXJuIG5vZGVfdHlwZTo6aW5pdF9sZWFmKHAsIHBhcmVu
dCwga05vZGVWYWx1ZXMpOworICB9CisgIG5vZGVfdHlwZSAqbmV3X2xlYWZfcm9vdF9ub2RlKGNv
bnN0IGludCBtYXhfY291bnQpIHsKKyAgICBub2RlX3R5cGUgKnAgPSBhbGxvY2F0ZShub2RlX3R5
cGU6OkxlYWZTaXplKG1heF9jb3VudCkpOworICAgIHJldHVybiBub2RlX3R5cGU6OmluaXRfbGVh
ZihwLCBwLCBtYXhfY291bnQpOworICB9CisKKyAgLy8gRGVsZXRpb24gaGVscGVyIHJvdXRpbmVz
LgorICB2b2lkIGVyYXNlX3NhbWVfbm9kZShpdGVyYXRvciBiZWdpbiwgaXRlcmF0b3IgZW5kKTsK
KyAgaXRlcmF0b3IgZXJhc2VfZnJvbV9sZWFmX25vZGUoaXRlcmF0b3IgYmVnaW4sIHNpemVfdHlw
ZSB0b19lcmFzZSk7CisgIGl0ZXJhdG9yIHJlYmFsYW5jZV9hZnRlcl9kZWxldGUoaXRlcmF0b3Ig
aXRlcik7CisKKyAgLy8gRGVhbGxvY2F0ZXMgYSBub2RlIG9mIGEgY2VydGFpbiBzaXplIGluIGJ5
dGVzIHVzaW5nIHRoZSBhbGxvY2F0b3IuCisgIHZvaWQgZGVhbGxvY2F0ZShjb25zdCBzaXplX3R5
cGUgc2l6ZSwgbm9kZV90eXBlICpub2RlKSB7CisgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFs
OjpEZWFsbG9jYXRlPG5vZGVfdHlwZTo6QWxpZ25tZW50KCk+KAorICAgICAgICBtdXRhYmxlX2Fs
bG9jYXRvcigpLCBub2RlLCBzaXplKTsKKyAgfQorCisgIHZvaWQgZGVsZXRlX2ludGVybmFsX25v
ZGUobm9kZV90eXBlICpub2RlKSB7CisgICAgbm9kZS0+ZGVzdHJveShtdXRhYmxlX2FsbG9jYXRv
cigpKTsKKyAgICBkZWFsbG9jYXRlKG5vZGVfdHlwZTo6SW50ZXJuYWxTaXplKCksIG5vZGUpOwor
ICB9CisgIHZvaWQgZGVsZXRlX2xlYWZfbm9kZShub2RlX3R5cGUgKm5vZGUpIHsKKyAgICBub2Rl
LT5kZXN0cm95KG11dGFibGVfYWxsb2NhdG9yKCkpOworICAgIGRlYWxsb2NhdGUobm9kZV90eXBl
OjpMZWFmU2l6ZShub2RlLT5tYXhfY291bnQoKSksIG5vZGUpOworICB9CisKKyAgLy8gUmViYWxh
bmNlcyBvciBzcGxpdHMgdGhlIG5vZGUgaXRlciBwb2ludHMgdG8uCisgIHZvaWQgcmViYWxhbmNl
X29yX3NwbGl0KGl0ZXJhdG9yICppdGVyKTsKKworICAvLyBNZXJnZXMgdGhlIHZhbHVlcyBvZiBs
ZWZ0LCByaWdodCBhbmQgdGhlIGRlbGltaXRpbmcga2V5IG9uIHRoZWlyIHBhcmVudAorICAvLyBv
bnRvIGxlZnQsIHJlbW92aW5nIHRoZSBkZWxpbWl0aW5nIGtleSBhbmQgZGVsZXRpbmcgcmlnaHQu
CisgIHZvaWQgbWVyZ2Vfbm9kZXMobm9kZV90eXBlICpsZWZ0LCBub2RlX3R5cGUgKnJpZ2h0KTsK
KworICAvLyBUcmllcyB0byBtZXJnZSBub2RlIHdpdGggaXRzIGxlZnQgb3IgcmlnaHQgc2libGlu
ZywgYW5kIGZhaWxpbmcgdGhhdCwKKyAgLy8gcmViYWxhbmNlIHdpdGggaXRzIGxlZnQgb3Igcmln
aHQgc2libGluZy4gUmV0dXJucyB0cnVlIGlmIGEgbWVyZ2UKKyAgLy8gb2NjdXJyZWQsIGF0IHdo
aWNoIHBvaW50IGl0IGlzIG5vIGxvbmdlciB2YWxpZCB0byBhY2Nlc3Mgbm9kZS4gUmV0dXJucwor
ICAvLyBmYWxzZSBpZiBubyBtZXJnaW5nIHRvb2sgcGxhY2UuCisgIGJvb2wgdHJ5X21lcmdlX29y
X3JlYmFsYW5jZShpdGVyYXRvciAqaXRlcik7CisKKyAgLy8gVHJpZXMgdG8gc2hyaW5rIHRoZSBo
ZWlnaHQgb2YgdGhlIHRyZWUgYnkgMS4KKyAgdm9pZCB0cnlfc2hyaW5rKCk7CisKKyAgaXRlcmF0
b3IgaW50ZXJuYWxfZW5kKGl0ZXJhdG9yIGl0ZXIpIHsKKyAgICByZXR1cm4gaXRlci5ub2RlICE9
IG51bGxwdHIgPyBpdGVyIDogZW5kKCk7CisgIH0KKyAgY29uc3RfaXRlcmF0b3IgaW50ZXJuYWxf
ZW5kKGNvbnN0X2l0ZXJhdG9yIGl0ZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gaXRlci5ub2RlICE9
IG51bGxwdHIgPyBpdGVyIDogZW5kKCk7CisgIH0KKworICAvLyBFbXBsYWNlcyBhIHZhbHVlIGlu
dG8gdGhlIGJ0cmVlIGltbWVkaWF0ZWx5IGJlZm9yZSBpdGVyLiBSZXF1aXJlcyB0aGF0CisgIC8v
IGtleSh2KSA8PSBpdGVyLmtleSgpIGFuZCAoLS1pdGVyKS5rZXkoKSA8PSBrZXkodikuCisgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBpdGVyYXRvciBpbnRlcm5hbF9lbXBsYWNlKGl0
ZXJhdG9yIGl0ZXIsIEFyZ3MgJiYuLi4gYXJncyk7CisKKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRv
ciBwb2ludGluZyB0byB0aGUgZmlyc3QgdmFsdWUgPj0gdGhlIHZhbHVlICJpdGVyIiBpcworICAv
LyBwb2ludGluZyBhdC4gTm90ZSB0aGF0ICJpdGVyIiBtaWdodCBiZSBwb2ludGluZyB0byBhbiBp
bnZhbGlkIGxvY2F0aW9uIGFzCisgIC8vIGl0ZXIucG9zaXRpb24gPT0gaXRlci5ub2RlLT5jb3Vu
dCgpLiBUaGlzIHJvdXRpbmUgc2ltcGx5IG1vdmVzIGl0ZXIgdXAgaW4KKyAgLy8gdGhlIHRyZWUg
dG8gYSB2YWxpZCBsb2NhdGlvbi4KKyAgLy8gUmVxdWlyZXM6IGl0ZXIubm9kZSBpcyBub24tbnVs
bC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJUeXBlPgorICBzdGF0aWMgSXRlclR5cGUgaW50
ZXJuYWxfbGFzdChJdGVyVHlwZSBpdGVyKTsKKworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHBv
aW50aW5nIHRvIHRoZSBsZWFmIHBvc2l0aW9uIGF0IHdoaWNoIGtleSB3b3VsZAorICAvLyByZXNp
ZGUgaW4gdGhlIHRyZWUuIFdlIHByb3ZpZGUgMiB2ZXJzaW9ucyBvZiBpbnRlcm5hbF9sb2NhdGUu
IFRoZSBmaXJzdAorICAvLyB2ZXJzaW9uIHVzZXMgYSBsZXNzLXRoYW4gY29tcGFyYXRvciBhbmQg
aXMgaW5jYXBhYmxlIG9mIGRpc3Rpbmd1aXNoaW5nIHdoZW4KKyAgLy8gdGhlcmUgaXMgYW4gZXhh
Y3QgbWF0Y2guIFRoZSBzZWNvbmQgdmVyc2lvbiBpcyBmb3IgdGhlIGtleS1jb21wYXJlLXRvCisg
IC8vIHNwZWNpYWxpemF0aW9uIGFuZCBkaXN0aW5ndWlzaGVzIGV4YWN0IG1hdGNoZXMuIFRoZSBr
ZXktY29tcGFyZS10bworICAvLyBzcGVjaWFsaXphdGlvbiBhbGxvd3MgdGhlIGNhbGxlciB0byBh
dm9pZCBhIHN1YnNlcXVlbnQgY29tcGFyaXNvbiB0bworICAvLyBkZXRlcm1pbmUgaWYgYW4gZXhh
Y3QgbWF0Y2ggd2FzIG1hZGUsIHdoaWNoIGlzIGltcG9ydGFudCBmb3Iga2V5cyB3aXRoCisgIC8v
IGV4cGVuc2l2ZSBjb21wYXJpc29uLCBzdWNoIGFzIHN0cmluZ3MuCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBLPgorICBTZWFyY2hSZXN1bHQ8aXRlcmF0b3IsIGlzX2tleV9jb21wYXJlX3RvOjp2YWx1
ZT4gaW50ZXJuYWxfbG9jYXRlKAorICAgICAgY29uc3QgSyAma2V5KSBjb25zdDsKKworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSz4KKyAgU2VhcmNoUmVzdWx0PGl0ZXJhdG9yLCBmYWxzZT4gaW50ZXJu
YWxfbG9jYXRlX2ltcGwoCisgICAgICBjb25zdCBLICZrZXksIHN0ZDo6ZmFsc2VfdHlwZSAvKiBJ
c0NvbXBhcmVUbyAqLykgY29uc3Q7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIFNlYXJj
aFJlc3VsdDxpdGVyYXRvciwgdHJ1ZT4gaW50ZXJuYWxfbG9jYXRlX2ltcGwoCisgICAgICBjb25z
dCBLICZrZXksIHN0ZDo6dHJ1ZV90eXBlIC8qIElzQ29tcGFyZVRvICovKSBjb25zdDsKKworICAv
LyBJbnRlcm5hbCByb3V0aW5lIHdoaWNoIGltcGxlbWVudHMgbG93ZXJfYm91bmQoKS4KKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEs+CisgIGl0ZXJhdG9yIGludGVybmFsX2xvd2VyX2JvdW5kKGNvbnN0
IEsgJmtleSkgY29uc3Q7CisKKyAgLy8gSW50ZXJuYWwgcm91dGluZSB3aGljaCBpbXBsZW1lbnRz
IHVwcGVyX2JvdW5kKCkuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgorICBpdGVyYXRvciBpbnRl
cm5hbF91cHBlcl9ib3VuZChjb25zdCBLICZrZXkpIGNvbnN0OworCisgIC8vIEludGVybmFsIHJv
dXRpbmUgd2hpY2ggaW1wbGVtZW50cyBmaW5kKCkuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgor
ICBpdGVyYXRvciBpbnRlcm5hbF9maW5kKGNvbnN0IEsgJmtleSkgY29uc3Q7CisKKyAgLy8gRGVs
ZXRlcyBhIG5vZGUgYW5kIGFsbCBvZiBpdHMgY2hpbGRyZW4uCisgIHZvaWQgaW50ZXJuYWxfY2xl
YXIobm9kZV90eXBlICpub2RlKTsKKworICAvLyBWZXJpZmllcyB0aGUgdHJlZSBzdHJ1Y3R1cmUg
b2Ygbm9kZS4KKyAgaW50IGludGVybmFsX3ZlcmlmeShjb25zdCBub2RlX3R5cGUgKm5vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5X3R5cGUgKmxvLCBjb25zdCBrZXlfdHlwZSAq
aGkpIGNvbnN0OworCisgIG5vZGVfc3RhdHMgaW50ZXJuYWxfc3RhdHMoY29uc3Qgbm9kZV90eXBl
ICpub2RlKSBjb25zdCB7CisgICAgLy8gVGhlIHJvb3QgY2FuIGJlIGEgc3RhdGljIGVtcHR5IG5v
ZGUuCisgICAgaWYgKG5vZGUgPT0gbnVsbHB0ciB8fCAobm9kZSA9PSByb290KCkgJiYgZW1wdHko
KSkpIHsKKyAgICAgIHJldHVybiBub2RlX3N0YXRzKDAsIDApOworICAgIH0KKyAgICBpZiAobm9k
ZS0+bGVhZigpKSB7CisgICAgICByZXR1cm4gbm9kZV9zdGF0cygxLCAwKTsKKyAgICB9CisgICAg
bm9kZV9zdGF0cyByZXMoMCwgMSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbm9kZS0+Y291
bnQoKTsgKytpKSB7CisgICAgICByZXMgKz0gaW50ZXJuYWxfc3RhdHMobm9kZS0+Y2hpbGQoaSkp
OworICAgIH0KKyAgICByZXR1cm4gcmVzOworICB9CisKKyBwdWJsaWM6CisgIC8vIEV4cG9zZWQg
b25seSBmb3IgdGVzdHMuCisgIHN0YXRpYyBib29sIHRlc3Rvbmx5X3VzZXNfbGluZWFyX25vZGVf
c2VhcmNoKCkgeworICAgIHJldHVybiBub2RlX3R5cGU6OnRlc3Rvbmx5X3VzZXNfbGluZWFyX25v
ZGVfc2VhcmNoKCk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIFdlIHVzZSBjb21wcmVzc2VkIHR1
cGxlIGluIG9yZGVyIHRvIHNhdmUgc3BhY2UgYmVjYXVzZSBrZXlfY29tcGFyZSBhbmQKKyAgLy8g
YWxsb2NhdG9yX3R5cGUgYXJlIHVzdWFsbHkgZW1wdHkuCisgIGFic2w6OmNvbnRhaW5lcl9pbnRl
cm5hbDo6Q29tcHJlc3NlZFR1cGxlPGtleV9jb21wYXJlLCBhbGxvY2F0b3JfdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZV90eXBlICo+CisgICAg
ICByb290XzsKKworICAvLyBBIHBvaW50ZXIgdG8gdGhlIHJpZ2h0bW9zdCBub2RlLiBOb3RlIHRo
YXQgdGhlIGxlZnRtb3N0IG5vZGUgaXMgc3RvcmVkIGFzCisgIC8vIHRoZSByb290J3MgcGFyZW50
LgorICBub2RlX3R5cGUgKnJpZ2h0bW9zdF87CisKKyAgLy8gTnVtYmVyIG9mIHZhbHVlcy4KKyAg
c2l6ZV90eXBlIHNpemVfOworfTsKKworLy8vLworLy8gYnRyZWVfbm9kZSBtZXRob2RzCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgoraW5saW5lIHZv
aWQgYnRyZWVfbm9kZTxQPjo6ZW1wbGFjZV92YWx1ZShjb25zdCBzaXplX3R5cGUgaSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGUgKmFsbG9j
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmdzICYmLi4uIGFy
Z3MpIHsKKyAgYXNzZXJ0KGkgPD0gY291bnQoKSk7CisgIC8vIFNoaWZ0IG9sZCB2YWx1ZXMgdG8g
Y3JlYXRlIHNwYWNlIGZvciBuZXcgdmFsdWUgYW5kIHRoZW4gY29uc3RydWN0IGl0IGluCisgIC8v
IHBsYWNlLgorICBpZiAoaSA8IGNvdW50KCkpIHsKKyAgICB2YWx1ZV9pbml0KGNvdW50KCksIGFs
bG9jLCBzbG90KGNvdW50KCkgLSAxKSk7CisgICAgZm9yIChzaXplX3R5cGUgaiA9IGNvdW50KCkg
LSAxOyBqID4gaTsgLS1qKQorICAgICAgcGFyYW1zX3R5cGU6Om1vdmUoYWxsb2MsIHNsb3QoaiAt
IDEpLCBzbG90KGopKTsKKyAgICB2YWx1ZV9kZXN0cm95KGksIGFsbG9jKTsKKyAgfQorICB2YWx1
ZV9pbml0KGksIGFsbG9jLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICBzZXRfY291
bnQoY291bnQoKSArIDEpOworCisgIGlmICghbGVhZigpICYmIGNvdW50KCkgPiBpICsgMSkgewor
ICAgIGZvciAoaW50IGogPSBjb3VudCgpOyBqID4gaSArIDE7IC0taikgeworICAgICAgc2V0X2No
aWxkKGosIGNoaWxkKGogLSAxKSk7CisgICAgfQorICAgIGNsZWFyX2NoaWxkKGkgKyAxKTsKKyAg
fQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK2lubGluZSB2b2lkIGJ0cmVlX25vZGU8UD46
OnJlbW92ZV92YWx1ZShjb25zdCBpbnQgaSwgYWxsb2NhdG9yX3R5cGUgKmFsbG9jKSB7CisgIGlm
ICghbGVhZigpICYmIGNvdW50KCkgPiBpICsgMSkgeworICAgIGFzc2VydChjaGlsZChpICsgMSkt
PmNvdW50KCkgPT0gMCk7CisgICAgZm9yIChzaXplX3R5cGUgaiA9IGkgKyAxOyBqIDwgY291bnQo
KTsgKytqKSB7CisgICAgICBzZXRfY2hpbGQoaiwgY2hpbGQoaiArIDEpKTsKKyAgICB9CisgICAg
Y2xlYXJfY2hpbGQoY291bnQoKSk7CisgIH0KKworICByZW1vdmVfdmFsdWVzX2lnbm9yZV9jaGls
ZHJlbihpLCAvKnRvX2VyYXNlPSovMSwgYWxsb2MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
UD4KK2lubGluZSB2b2lkIGJ0cmVlX25vZGU8UD46OnJlbW92ZV92YWx1ZXNfaWdub3JlX2NoaWxk
cmVuKAorICAgIGNvbnN0IGludCBpLCBjb25zdCBpbnQgdG9fZXJhc2UsIGFsbG9jYXRvcl90eXBl
ICphbGxvYykgeworICBwYXJhbXNfdHlwZTo6bW92ZShhbGxvYywgc2xvdChpICsgdG9fZXJhc2Up
LCBzbG90KGNvdW50KCkpLCBzbG90KGkpKTsKKyAgdmFsdWVfZGVzdHJveV9uKGNvdW50KCkgLSB0
b19lcmFzZSwgdG9fZXJhc2UsIGFsbG9jKTsKKyAgc2V0X2NvdW50KGNvdW50KCkgLSB0b19lcmFz
ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordm9pZCBidHJlZV9ub2RlPFA+OjpyZWJh
bGFuY2VfcmlnaHRfdG9fbGVmdChjb25zdCBpbnQgdG9fbW92ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRyZWVfbm9kZSAqcmlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlICphbGxvYykg
eworICBhc3NlcnQocGFyZW50KCkgPT0gcmlnaHQtPnBhcmVudCgpKTsKKyAgYXNzZXJ0KHBvc2l0
aW9uKCkgKyAxID09IHJpZ2h0LT5wb3NpdGlvbigpKTsKKyAgYXNzZXJ0KHJpZ2h0LT5jb3VudCgp
ID49IGNvdW50KCkpOworICBhc3NlcnQodG9fbW92ZSA+PSAxKTsKKyAgYXNzZXJ0KHRvX21vdmUg
PD0gcmlnaHQtPmNvdW50KCkpOworCisgIC8vIDEpIE1vdmUgdGhlIGRlbGltaXRpbmcgdmFsdWUg
aW4gdGhlIHBhcmVudCB0byB0aGUgbGVmdCBub2RlLgorICB2YWx1ZV9pbml0KGNvdW50KCksIGFs
bG9jLCBwYXJlbnQoKS0+c2xvdChwb3NpdGlvbigpKSk7CisKKyAgLy8gMikgTW92ZSB0aGUgKHRv
X21vdmUgLSAxKSB2YWx1ZXMgZnJvbSB0aGUgcmlnaHQgbm9kZSB0byB0aGUgbGVmdCBub2RlLgor
ICByaWdodC0+dW5pbml0aWFsaXplZF9tb3ZlX24odG9fbW92ZSAtIDEsIDAsIGNvdW50KCkgKyAx
LCB0aGlzLCBhbGxvYyk7CisKKyAgLy8gMykgTW92ZSB0aGUgbmV3IGRlbGltaXRpbmcgdmFsdWUg
dG8gdGhlIHBhcmVudCBmcm9tIHRoZSByaWdodCBub2RlLgorICBwYXJhbXNfdHlwZTo6bW92ZShh
bGxvYywgcmlnaHQtPnNsb3QodG9fbW92ZSAtIDEpLAorICAgICAgICAgICAgICAgICAgICBwYXJl
bnQoKS0+c2xvdChwb3NpdGlvbigpKSk7CisKKyAgLy8gNCkgU2hpZnQgdGhlIHZhbHVlcyBpbiB0
aGUgcmlnaHQgbm9kZSB0byB0aGVpciBjb3JyZWN0IHBvc2l0aW9uLgorICBwYXJhbXNfdHlwZTo6
bW92ZShhbGxvYywgcmlnaHQtPnNsb3QodG9fbW92ZSksIHJpZ2h0LT5zbG90KHJpZ2h0LT5jb3Vu
dCgpKSwKKyAgICAgICAgICAgICAgICAgICAgcmlnaHQtPnNsb3QoMCkpOworCisgIC8vIDUpIERl
c3Ryb3kgdGhlIG5vdy1lbXB0eSB0b19tb3ZlIGVudHJpZXMgaW4gdGhlIHJpZ2h0IG5vZGUuCisg
IHJpZ2h0LT52YWx1ZV9kZXN0cm95X24ocmlnaHQtPmNvdW50KCkgLSB0b19tb3ZlLCB0b19tb3Zl
LCBhbGxvYyk7CisKKyAgaWYgKCFsZWFmKCkpIHsKKyAgICAvLyBNb3ZlIHRoZSBjaGlsZCBwb2lu
dGVycyBmcm9tIHRoZSByaWdodCB0byB0aGUgbGVmdCBub2RlLgorICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgdG9fbW92ZTsgKytpKSB7CisgICAgICBpbml0X2NoaWxkKGNvdW50KCkgKyBpICsgMSwg
cmlnaHQtPmNoaWxkKGkpKTsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gcmlnaHQt
PmNvdW50KCkgLSB0b19tb3ZlOyArK2kpIHsKKyAgICAgIGFzc2VydChpICsgdG9fbW92ZSA8PSBy
aWdodC0+bWF4X2NvdW50KCkpOworICAgICAgcmlnaHQtPmluaXRfY2hpbGQoaSwgcmlnaHQtPmNo
aWxkKGkgKyB0b19tb3ZlKSk7CisgICAgICByaWdodC0+Y2xlYXJfY2hpbGQoaSArIHRvX21vdmUp
OworICAgIH0KKyAgfQorCisgIC8vIEZpeHVwIHRoZSBjb3VudHMgb24gdGhlIGxlZnQgYW5kIHJp
Z2h0IG5vZGVzLgorICBzZXRfY291bnQoY291bnQoKSArIHRvX21vdmUpOworICByaWdodC0+c2V0
X2NvdW50KHJpZ2h0LT5jb3VudCgpIC0gdG9fbW92ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBQPgordm9pZCBidHJlZV9ub2RlPFA+OjpyZWJhbGFuY2VfbGVmdF90b19yaWdodChjb25zdCBp
bnQgdG9fbW92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnRyZWVfbm9kZSAqcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsbG9jYXRvcl90eXBlICphbGxvYykgeworICBhc3NlcnQocGFyZW50KCkgPT0gcmln
aHQtPnBhcmVudCgpKTsKKyAgYXNzZXJ0KHBvc2l0aW9uKCkgKyAxID09IHJpZ2h0LT5wb3NpdGlv
bigpKTsKKyAgYXNzZXJ0KGNvdW50KCkgPj0gcmlnaHQtPmNvdW50KCkpOworICBhc3NlcnQodG9f
bW92ZSA+PSAxKTsKKyAgYXNzZXJ0KHRvX21vdmUgPD0gY291bnQoKSk7CisKKyAgLy8gVmFsdWVz
IGluIHRoZSByaWdodCBub2RlIGFyZSBzaGlmdGVkIHRvIHRoZSByaWdodCB0byBtYWtlIHJvb20g
Zm9yIHRoZQorICAvLyBuZXcgdG9fbW92ZSB2YWx1ZXMuIFRoZW4sIHRoZSBkZWxpbWl0aW5nIHZh
bHVlIGluIHRoZSBwYXJlbnQgYW5kIHRoZQorICAvLyBvdGhlciAodG9fbW92ZSAtIDEpIHZhbHVl
cyBpbiB0aGUgbGVmdCBub2RlIGFyZSBtb3ZlZCBpbnRvIHRoZSByaWdodCBub2RlLgorICAvLyBM
YXN0bHksIGEgbmV3IGRlbGltaXRpbmcgdmFsdWUgaXMgbW92ZWQgZnJvbSB0aGUgbGVmdCBub2Rl
IGludG8gdGhlCisgIC8vIHBhcmVudCwgYW5kIHRoZSByZW1haW5pbmcgZW1wdHkgbGVmdCBub2Rl
IGVudHJpZXMgYXJlIGRlc3Ryb3llZC4KKworICBpZiAocmlnaHQtPmNvdW50KCkgPj0gdG9fbW92
ZSkgeworICAgIC8vIFRoZSBvcmlnaW5hbCBsb2NhdGlvbiBvZiB0aGUgcmlnaHQtPmNvdW50KCkg
dmFsdWVzIGFyZSBzdWZmaWNpZW50IHRvIGhvbGQKKyAgICAvLyB0aGUgbmV3IHRvX21vdmUgZW50
cmllcyBmcm9tIHRoZSBwYXJlbnQgYW5kIGxlZnQgbm9kZS4KKworICAgIC8vIDEpIFNoaWZ0IGV4
aXN0aW5nIHZhbHVlcyBpbiB0aGUgcmlnaHQgbm9kZSB0byB0aGVpciBjb3JyZWN0IHBvc2l0aW9u
cy4KKyAgICByaWdodC0+dW5pbml0aWFsaXplZF9tb3ZlX24odG9fbW92ZSwgcmlnaHQtPmNvdW50
KCkgLSB0b19tb3ZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodC0+Y291
bnQoKSwgcmlnaHQsIGFsbG9jKTsKKyAgICBmb3IgKHNsb3RfdHlwZSAqc3JjID0gcmlnaHQtPnNs
b3QocmlnaHQtPmNvdW50KCkgLSB0b19tb3ZlIC0gMSksCisgICAgICAgICAgICAgICAgICAgKmRl
c3QgPSByaWdodC0+c2xvdChyaWdodC0+Y291bnQoKSAtIDEpLAorICAgICAgICAgICAgICAgICAg
ICplbmQgPSByaWdodC0+c2xvdCgwKTsKKyAgICAgICAgIHNyYyA+PSBlbmQ7IC0tc3JjLCAtLWRl
c3QpIHsKKyAgICAgIHBhcmFtc190eXBlOjptb3ZlKGFsbG9jLCBzcmMsIGRlc3QpOworICAgIH0K
KworICAgIC8vIDIpIE1vdmUgdGhlIGRlbGltaXRpbmcgdmFsdWUgaW4gdGhlIHBhcmVudCB0byB0
aGUgcmlnaHQgbm9kZS4KKyAgICBwYXJhbXNfdHlwZTo6bW92ZShhbGxvYywgcGFyZW50KCktPnNs
b3QocG9zaXRpb24oKSksCisgICAgICAgICAgICAgICAgICAgICAgcmlnaHQtPnNsb3QodG9fbW92
ZSAtIDEpKTsKKworICAgIC8vIDMpIE1vdmUgdGhlICh0b19tb3ZlIC0gMSkgdmFsdWVzIGZyb20g
dGhlIGxlZnQgbm9kZSB0byB0aGUgcmlnaHQgbm9kZS4KKyAgICBwYXJhbXNfdHlwZTo6bW92ZShh
bGxvYywgc2xvdChjb3VudCgpIC0gKHRvX21vdmUgLSAxKSksIHNsb3QoY291bnQoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgcmlnaHQtPnNsb3QoMCkpOworICB9IGVsc2UgeworICAgIC8vIFRo
ZSByaWdodCBub2RlIGRvZXMgbm90IGhhdmUgZW5vdWdoIGluaXRpYWxpemVkIHNwYWNlIHRvIGhv
bGQgdGhlIG5ldworICAgIC8vIHRvX21vdmUgZW50cmllcywgc28gcGFydCBvZiB0aGVtIHdpbGwg
bW92ZSB0byB1bmluaXRpYWxpemVkIHNwYWNlLgorCisgICAgLy8gMSkgU2hpZnQgZXhpc3Rpbmcg
dmFsdWVzIGluIHRoZSByaWdodCBub2RlIHRvIHRoZWlyIGNvcnJlY3QgcG9zaXRpb25zLgorICAg
IHJpZ2h0LT51bmluaXRpYWxpemVkX21vdmVfbihyaWdodC0+Y291bnQoKSwgMCwgdG9fbW92ZSwg
cmlnaHQsIGFsbG9jKTsKKworICAgIC8vIDIpIE1vdmUgdGhlIGRlbGltaXRpbmcgdmFsdWUgaW4g
dGhlIHBhcmVudCB0byB0aGUgcmlnaHQgbm9kZS4KKyAgICByaWdodC0+dmFsdWVfaW5pdCh0b19t
b3ZlIC0gMSwgYWxsb2MsIHBhcmVudCgpLT5zbG90KHBvc2l0aW9uKCkpKTsKKworICAgIC8vIDMp
IE1vdmUgdGhlICh0b19tb3ZlIC0gMSkgdmFsdWVzIGZyb20gdGhlIGxlZnQgbm9kZSB0byB0aGUg
cmlnaHQgbm9kZS4KKyAgICBjb25zdCBzaXplX3R5cGUgdW5pbml0aWFsaXplZF9yZW1haW5pbmcg
PSB0b19tb3ZlIC0gcmlnaHQtPmNvdW50KCkgLSAxOworICAgIHVuaW5pdGlhbGl6ZWRfbW92ZV9u
KHVuaW5pdGlhbGl6ZWRfcmVtYWluaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50
KCkgLSB1bmluaXRpYWxpemVkX3JlbWFpbmluZywgcmlnaHQtPmNvdW50KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgcmlnaHQsIGFsbG9jKTsKKyAgICBwYXJhbXNfdHlwZTo6bW92ZShhbGxv
Yywgc2xvdChjb3VudCgpIC0gKHRvX21vdmUgLSAxKSksCisgICAgICAgICAgICAgICAgICAgICAg
c2xvdChjb3VudCgpIC0gdW5pbml0aWFsaXplZF9yZW1haW5pbmcpLCByaWdodC0+c2xvdCgwKSk7
CisgIH0KKworICAvLyA0KSBNb3ZlIHRoZSBuZXcgZGVsaW1pdGluZyB2YWx1ZSB0byB0aGUgcGFy
ZW50IGZyb20gdGhlIGxlZnQgbm9kZS4KKyAgcGFyYW1zX3R5cGU6Om1vdmUoYWxsb2MsIHNsb3Qo
Y291bnQoKSAtIHRvX21vdmUpLCBwYXJlbnQoKS0+c2xvdChwb3NpdGlvbigpKSk7CisKKyAgLy8g
NSkgRGVzdHJveSB0aGUgbm93LWVtcHR5IHRvX21vdmUgZW50cmllcyBpbiB0aGUgbGVmdCBub2Rl
LgorICB2YWx1ZV9kZXN0cm95X24oY291bnQoKSAtIHRvX21vdmUsIHRvX21vdmUsIGFsbG9jKTsK
KworICBpZiAoIWxlYWYoKSkgeworICAgIC8vIE1vdmUgdGhlIGNoaWxkIHBvaW50ZXJzIGZyb20g
dGhlIGxlZnQgdG8gdGhlIHJpZ2h0IG5vZGUuCisgICAgZm9yIChpbnQgaSA9IHJpZ2h0LT5jb3Vu
dCgpOyBpID49IDA7IC0taSkgeworICAgICAgcmlnaHQtPmluaXRfY2hpbGQoaSArIHRvX21vdmUs
IHJpZ2h0LT5jaGlsZChpKSk7CisgICAgICByaWdodC0+Y2xlYXJfY2hpbGQoaSk7CisgICAgfQor
ICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHRvX21vdmU7ICsraSkgeworICAgICAgcmlnaHQtPmlu
aXRfY2hpbGQoaSAtIDEsIGNoaWxkKGNvdW50KCkgLSB0b19tb3ZlICsgaSkpOworICAgICAgY2xl
YXJfY2hpbGQoY291bnQoKSAtIHRvX21vdmUgKyBpKTsKKyAgICB9CisgIH0KKworICAvLyBGaXh1
cCB0aGUgY291bnRzIG9uIHRoZSBsZWZ0IGFuZCByaWdodCBub2Rlcy4KKyAgc2V0X2NvdW50KGNv
dW50KCkgLSB0b19tb3ZlKTsKKyAgcmlnaHQtPnNldF9jb3VudChyaWdodC0+Y291bnQoKSArIHRv
X21vdmUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWVfbm9kZTxQPjo6
c3BsaXQoY29uc3QgaW50IGluc2VydF9wb3NpdGlvbiwgYnRyZWVfbm9kZSAqZGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGUgKmFsbG9jKSB7CisgIGFzc2VydChk
ZXN0LT5jb3VudCgpID09IDApOworICBhc3NlcnQobWF4X2NvdW50KCkgPT0ga05vZGVWYWx1ZXMp
OworCisgIC8vIFdlIGJpYXMgdGhlIHNwbGl0IGJhc2VkIG9uIHRoZSBwb3NpdGlvbiBiZWluZyBp
bnNlcnRlZC4gSWYgd2UncmUKKyAgLy8gaW5zZXJ0aW5nIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGxlZnQgbm9kZSB0aGVuIGJpYXMgdGhlIHNwbGl0IHRvIHB1dAorICAvLyBtb3JlIHZhbHVlcyBv
biB0aGUgcmlnaHQgbm9kZS4gSWYgd2UncmUgaW5zZXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlCisg
IC8vIHJpZ2h0IG5vZGUgdGhlbiBiaWFzIHRoZSBzcGxpdCB0byBwdXQgbW9yZSB2YWx1ZXMgb24g
dGhlIGxlZnQgbm9kZS4KKyAgaWYgKGluc2VydF9wb3NpdGlvbiA9PSAwKSB7CisgICAgZGVzdC0+
c2V0X2NvdW50KGNvdW50KCkgLSAxKTsKKyAgfSBlbHNlIGlmIChpbnNlcnRfcG9zaXRpb24gPT0g
a05vZGVWYWx1ZXMpIHsKKyAgICBkZXN0LT5zZXRfY291bnQoMCk7CisgIH0gZWxzZSB7CisgICAg
ZGVzdC0+c2V0X2NvdW50KGNvdW50KCkgLyAyKTsKKyAgfQorICBzZXRfY291bnQoY291bnQoKSAt
IGRlc3QtPmNvdW50KCkpOworICBhc3NlcnQoY291bnQoKSA+PSAxKTsKKworICAvLyBNb3ZlIHZh
bHVlcyBmcm9tIHRoZSBsZWZ0IHNpYmxpbmcgdG8gdGhlIHJpZ2h0IHNpYmxpbmcuCisgIHVuaW5p
dGlhbGl6ZWRfbW92ZV9uKGRlc3QtPmNvdW50KCksIGNvdW50KCksIDAsIGRlc3QsIGFsbG9jKTsK
KworICAvLyBEZXN0cm95IHRoZSBub3ctZW1wdHkgZW50cmllcyBpbiB0aGUgbGVmdCBub2RlLgor
ICB2YWx1ZV9kZXN0cm95X24oY291bnQoKSwgZGVzdC0+Y291bnQoKSwgYWxsb2MpOworCisgIC8v
IFRoZSBzcGxpdCBrZXkgaXMgdGhlIGxhcmdlc3QgdmFsdWUgaW4gdGhlIGxlZnQgc2libGluZy4K
KyAgc2V0X2NvdW50KGNvdW50KCkgLSAxKTsKKyAgcGFyZW50KCktPmVtcGxhY2VfdmFsdWUocG9z
aXRpb24oKSwgYWxsb2MsIHNsb3QoY291bnQoKSkpOworICB2YWx1ZV9kZXN0cm95KGNvdW50KCks
IGFsbG9jKTsKKyAgcGFyZW50KCktPmluaXRfY2hpbGQocG9zaXRpb24oKSArIDEsIGRlc3QpOwor
CisgIGlmICghbGVhZigpKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gZGVzdC0+Y291bnQo
KTsgKytpKSB7CisgICAgICBhc3NlcnQoY2hpbGQoY291bnQoKSArIGkgKyAxKSAhPSBudWxscHRy
KTsKKyAgICAgIGRlc3QtPmluaXRfY2hpbGQoaSwgY2hpbGQoY291bnQoKSArIGkgKyAxKSk7Cisg
ICAgICBjbGVhcl9jaGlsZChjb3VudCgpICsgaSArIDEpOworICAgIH0KKyAgfQorfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWVfbm9kZTxQPjo6bWVyZ2UoYnRyZWVfbm9kZSAq
c3JjLCBhbGxvY2F0b3JfdHlwZSAqYWxsb2MpIHsKKyAgYXNzZXJ0KHBhcmVudCgpID09IHNyYy0+
cGFyZW50KCkpOworICBhc3NlcnQocG9zaXRpb24oKSArIDEgPT0gc3JjLT5wb3NpdGlvbigpKTsK
KworICAvLyBNb3ZlIHRoZSBkZWxpbWl0aW5nIHZhbHVlIHRvIHRoZSBsZWZ0IG5vZGUuCisgIHZh
bHVlX2luaXQoY291bnQoKSwgYWxsb2MsIHBhcmVudCgpLT5zbG90KHBvc2l0aW9uKCkpKTsKKwor
ICAvLyBNb3ZlIHRoZSB2YWx1ZXMgZnJvbSB0aGUgcmlnaHQgdG8gdGhlIGxlZnQgbm9kZS4KKyAg
c3JjLT51bmluaXRpYWxpemVkX21vdmVfbihzcmMtPmNvdW50KCksIDAsIGNvdW50KCkgKyAxLCB0
aGlzLCBhbGxvYyk7CisKKyAgLy8gRGVzdHJveSB0aGUgbm93LWVtcHR5IGVudHJpZXMgaW4gdGhl
IHJpZ2h0IG5vZGUuCisgIHNyYy0+dmFsdWVfZGVzdHJveV9uKDAsIHNyYy0+Y291bnQoKSwgYWxs
b2MpOworCisgIGlmICghbGVhZigpKSB7CisgICAgLy8gTW92ZSB0aGUgY2hpbGQgcG9pbnRlcnMg
ZnJvbSB0aGUgcmlnaHQgdG8gdGhlIGxlZnQgbm9kZS4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8
PSBzcmMtPmNvdW50KCk7ICsraSkgeworICAgICAgaW5pdF9jaGlsZChjb3VudCgpICsgaSArIDEs
IHNyYy0+Y2hpbGQoaSkpOworICAgICAgc3JjLT5jbGVhcl9jaGlsZChpKTsKKyAgICB9CisgIH0K
KworICAvLyBGaXh1cCB0aGUgY291bnRzIG9uIHRoZSBzcmMgYW5kIGRlc3Qgbm9kZXMuCisgIHNl
dF9jb3VudCgxICsgY291bnQoKSArIHNyYy0+Y291bnQoKSk7CisgIHNyYy0+c2V0X2NvdW50KDAp
OworCisgIC8vIFJlbW92ZSB0aGUgdmFsdWUgb24gdGhlIHBhcmVudCBub2RlLgorICBwYXJlbnQo
KS0+cmVtb3ZlX3ZhbHVlKHBvc2l0aW9uKCksIGFsbG9jKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFA+Cit2b2lkIGJ0cmVlX25vZGU8UD46OnN3YXAoYnRyZWVfbm9kZSAqeCwgYWxsb2NhdG9y
X3R5cGUgKmFsbG9jKSB7CisgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgYXNzZXJ0KGxlYWYoKSA9PSB4
LT5sZWFmKCkpOworCisgIC8vIERldGVybWluZSB3aGljaCBpcyB0aGUgc21hbGxlci9sYXJnZXIg
bm9kZS4KKyAgYnRyZWVfbm9kZSAqc21hbGxlciA9IHRoaXMsICpsYXJnZXIgPSB4OworICBpZiAo
c21hbGxlci0+Y291bnQoKSA+IGxhcmdlci0+Y291bnQoKSkgeworICAgIHN3YXAoc21hbGxlciwg
bGFyZ2VyKTsKKyAgfQorCisgIC8vIFN3YXAgdGhlIHZhbHVlcy4KKyAgZm9yIChzbG90X3R5cGUg
KmEgPSBzbWFsbGVyLT5zbG90KDApLCAqYiA9IGxhcmdlci0+c2xvdCgwKSwKKyAgICAgICAgICAg
ICAgICAgKmVuZCA9IGEgKyBzbWFsbGVyLT5jb3VudCgpOworICAgICAgIGEgIT0gZW5kOyArK2Es
ICsrYikgeworICAgIHBhcmFtc190eXBlOjpzd2FwKGFsbG9jLCBhLCBiKTsKKyAgfQorCisgIC8v
IE1vdmUgdmFsdWVzIHRoYXQgY2FuJ3QgYmUgc3dhcHBlZC4KKyAgY29uc3Qgc2l6ZV90eXBlIHRv
X21vdmUgPSBsYXJnZXItPmNvdW50KCkgLSBzbWFsbGVyLT5jb3VudCgpOworICBsYXJnZXItPnVu
aW5pdGlhbGl6ZWRfbW92ZV9uKHRvX21vdmUsIHNtYWxsZXItPmNvdW50KCksIHNtYWxsZXItPmNv
dW50KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxlciwgYWxsb2MpOwor
ICBsYXJnZXItPnZhbHVlX2Rlc3Ryb3lfbihzbWFsbGVyLT5jb3VudCgpLCB0b19tb3ZlLCBhbGxv
Yyk7CisKKyAgaWYgKCFsZWFmKCkpIHsKKyAgICAvLyBTd2FwIHRoZSBjaGlsZCBwb2ludGVycy4K
KyAgICBzdGQ6OnN3YXBfcmFuZ2VzKCZzbWFsbGVyLT5tdXRhYmxlX2NoaWxkKDApLAorICAgICAg
ICAgICAgICAgICAgICAgJnNtYWxsZXItPm11dGFibGVfY2hpbGQoc21hbGxlci0+Y291bnQoKSAr
IDEpLAorICAgICAgICAgICAgICAgICAgICAgJmxhcmdlci0+bXV0YWJsZV9jaGlsZCgwKSk7Cisg
ICAgLy8gVXBkYXRlIHN3YXBwZWQgY2hpbGRyZW4ncyBwYXJlbnQgcG9pbnRlcnMuCisgICAgaW50
IGkgPSAwOworICAgIGZvciAoOyBpIDw9IHNtYWxsZXItPmNvdW50KCk7ICsraSkgeworICAgICAg
c21hbGxlci0+Y2hpbGQoaSktPnNldF9wYXJlbnQoc21hbGxlcik7CisgICAgICBsYXJnZXItPmNo
aWxkKGkpLT5zZXRfcGFyZW50KGxhcmdlcik7CisgICAgfQorICAgIC8vIE1vdmUgdGhlIGNoaWxk
IHBvaW50ZXJzIHRoYXQgY291bGRuJ3QgYmUgc3dhcHBlZC4KKyAgICBmb3IgKDsgaSA8PSBsYXJn
ZXItPmNvdW50KCk7ICsraSkgeworICAgICAgc21hbGxlci0+aW5pdF9jaGlsZChpLCBsYXJnZXIt
PmNoaWxkKGkpKTsKKyAgICAgIGxhcmdlci0+Y2xlYXJfY2hpbGQoaSk7CisgICAgfQorICB9CisK
KyAgLy8gU3dhcCB0aGUgY291bnRzLgorICBzd2FwKG11dGFibGVfY291bnQoKSwgeC0+bXV0YWJs
ZV9jb3VudCgpKTsKK30KKworLy8vLworLy8gYnRyZWVfaXRlcmF0b3IgbWV0aG9kcwordGVtcGxh
dGUgPHR5cGVuYW1lIE4sIHR5cGVuYW1lIFIsIHR5cGVuYW1lIFA+Cit2b2lkIGJ0cmVlX2l0ZXJh
dG9yPE4sIFIsIFA+OjppbmNyZW1lbnRfc2xvdygpIHsKKyAgaWYgKG5vZGUtPmxlYWYoKSkgewor
ICAgIGFzc2VydChwb3NpdGlvbiA+PSBub2RlLT5jb3VudCgpKTsKKyAgICBidHJlZV9pdGVyYXRv
ciBzYXZlKCp0aGlzKTsKKyAgICB3aGlsZSAocG9zaXRpb24gPT0gbm9kZS0+Y291bnQoKSAmJiAh
bm9kZS0+aXNfcm9vdCgpKSB7CisgICAgICBhc3NlcnQobm9kZS0+cGFyZW50KCktPmNoaWxkKG5v
ZGUtPnBvc2l0aW9uKCkpID09IG5vZGUpOworICAgICAgcG9zaXRpb24gPSBub2RlLT5wb3NpdGlv
bigpOworICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudCgpOworICAgIH0KKyAgICBpZiAocG9zaXRp
b24gPT0gbm9kZS0+Y291bnQoKSkgeworICAgICAgKnRoaXMgPSBzYXZlOworICAgIH0KKyAgfSBl
bHNlIHsKKyAgICBhc3NlcnQocG9zaXRpb24gPCBub2RlLT5jb3VudCgpKTsKKyAgICBub2RlID0g
bm9kZS0+Y2hpbGQocG9zaXRpb24gKyAxKTsKKyAgICB3aGlsZSAoIW5vZGUtPmxlYWYoKSkgewor
ICAgICAgbm9kZSA9IG5vZGUtPmNoaWxkKDApOworICAgIH0KKyAgICBwb3NpdGlvbiA9IDA7Cisg
IH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE4sIHR5cGVuYW1lIFIsIHR5cGVuYW1lIFA+Cit2
b2lkIGJ0cmVlX2l0ZXJhdG9yPE4sIFIsIFA+OjpkZWNyZW1lbnRfc2xvdygpIHsKKyAgaWYgKG5v
ZGUtPmxlYWYoKSkgeworICAgIGFzc2VydChwb3NpdGlvbiA8PSAtMSk7CisgICAgYnRyZWVfaXRl
cmF0b3Igc2F2ZSgqdGhpcyk7CisgICAgd2hpbGUgKHBvc2l0aW9uIDwgMCAmJiAhbm9kZS0+aXNf
cm9vdCgpKSB7CisgICAgICBhc3NlcnQobm9kZS0+cGFyZW50KCktPmNoaWxkKG5vZGUtPnBvc2l0
aW9uKCkpID09IG5vZGUpOworICAgICAgcG9zaXRpb24gPSBub2RlLT5wb3NpdGlvbigpIC0gMTsK
KyAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnQoKTsKKyAgICB9CisgICAgaWYgKHBvc2l0aW9uIDwg
MCkgeworICAgICAgKnRoaXMgPSBzYXZlOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBhc3NlcnQo
cG9zaXRpb24gPj0gMCk7CisgICAgbm9kZSA9IG5vZGUtPmNoaWxkKHBvc2l0aW9uKTsKKyAgICB3
aGlsZSAoIW5vZGUtPmxlYWYoKSkgeworICAgICAgbm9kZSA9IG5vZGUtPmNoaWxkKG5vZGUtPmNv
dW50KCkpOworICAgIH0KKyAgICBwb3NpdGlvbiA9IG5vZGUtPmNvdW50KCkgLSAxOworICB9Cit9
CisKKy8vLy8KKy8vIGJ0cmVlIG1ldGhvZHMKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordGVtcGxh
dGUgPHR5cGVuYW1lIEJ0cmVlPgordm9pZCBidHJlZTxQPjo6Y29weV9vcl9tb3ZlX3ZhbHVlc19p
bl9vcmRlcihCdHJlZSAqeCkgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxidHJlZSwg
QnRyZWU+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8Y29uc3Qg
YnRyZWUsIEJ0cmVlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIkJ0cmVlIHR5cGUgbXVzdCBi
ZSBzYW1lIG9yIGNvbnN0LiIpOworICBhc3NlcnQoZW1wdHkoKSk7CisKKyAgLy8gV2UgY2FuIGF2
b2lkIGtleSBjb21wYXJpc29ucyBiZWNhdXNlIHdlIGtub3cgdGhlIG9yZGVyIG9mIHRoZQorICAv
LyB2YWx1ZXMgaXMgdGhlIHNhbWUgb3JkZXIgd2UnbGwgc3RvcmUgdGhlbSBpbi4KKyAgYXV0byBp
dGVyID0geC0+YmVnaW4oKTsKKyAgaWYgKGl0ZXIgPT0geC0+ZW5kKCkpIHJldHVybjsKKyAgaW5z
ZXJ0X211bHRpKG1heWJlX21vdmVfZnJvbV9pdGVyYXRvcihpdGVyKSk7CisgICsraXRlcjsKKyAg
Zm9yICg7IGl0ZXIgIT0geC0+ZW5kKCk7ICsraXRlcikgeworICAgIC8vIElmIHRoZSBidHJlZSBp
cyBub3QgZW1wdHksIHdlIGNhbiBqdXN0IGluc2VydCB0aGUgbmV3IHZhbHVlIGF0IHRoZSBlbmQK
KyAgICAvLyBvZiB0aGUgdHJlZS4KKyAgICBpbnRlcm5hbF9lbXBsYWNlKGVuZCgpLCBtYXliZV9t
b3ZlX2Zyb21faXRlcmF0b3IoaXRlcikpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQ
PgorY29uc3RleHByIGJvb2wgYnRyZWU8UD46OnN0YXRpY19hc3NlcnRfdmFsaWRhdGlvbigpIHsK
KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlPGtleV9j
b21wYXJlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIktleSBjb21wYXJpc29uIG11c3QgYmUg
bm90aHJvdyBjb3B5IGNvbnN0cnVjdGlibGUiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX25v
dGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlPGFsbG9jYXRvcl90eXBlPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgIkFsbG9jYXRvciBtdXN0IGJlIG5vdGhyb3cgY29weSBjb25zdHJ1Y3RpYmxlIik7
CisgIHN0YXRpY19hc3NlcnQodHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5
YWJsZTxpdGVyYXRvcj46OnZhbHVlLAorICAgICAgICAgICAgICAgICJpdGVyYXRvciBub3QgdHJp
dmlhbGx5IGNvcHlhYmxlLiIpOworCisgIC8vIE5vdGU6IFdlIGFzc2VydCB0aGF0IGtUYXJnZXRW
YWx1ZXMsIHdoaWNoIGlzIGNvbXB1dGVkIGZyb20KKyAgLy8gUGFyYW1zOjprVGFyZ2V0Tm9kZVNp
emUsIG11c3QgZml0IHRoZSBub2RlX3R5cGU6OmZpZWxkX3R5cGUuCisgIHN0YXRpY19hc3NlcnQo
CisgICAgICBrTm9kZVZhbHVlcyA8ICgxIDw8ICg4ICogc2l6ZW9mKHR5cGVuYW1lIG5vZGVfdHlw
ZTo6ZmllbGRfdHlwZSkpKSwKKyAgICAgICJ0YXJnZXQgbm9kZSBzaXplIHRvbyBsYXJnZSIpOwor
CisgIC8vIFZlcmlmeSB0aGF0IGtleV9jb21wYXJlIHJldHVybnMgYW4gYWJzbDo6e3dlYWssc3Ry
b25nfV9vcmRlcmluZyBvciBib29sLgorICB1c2luZyBjb21wYXJlX3Jlc3VsdF90eXBlID0KKyAg
ICAgIGFic2w6OnJlc3VsdF9vZl90PGtleV9jb21wYXJlKGtleV90eXBlLCBrZXlfdHlwZSk+Owor
ICBzdGF0aWNfYXNzZXJ0KAorICAgICAgc3RkOjppc19zYW1lPGNvbXBhcmVfcmVzdWx0X3R5cGUs
IGJvb2w+Ojp2YWx1ZSB8fAorICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGU8Y29tcGFyZV9y
ZXN1bHRfdHlwZSwgYWJzbDo6d2Vha19vcmRlcmluZz46OnZhbHVlLAorICAgICAgImtleSBjb21w
YXJpc29uIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGFic2w6Ont3ZWFrLHN0cm9uZ31fb3JkZXJpbmcg
b3IgIgorICAgICAgImJvb2wuIik7CisKKyAgLy8gVGVzdCB0aGUgYXNzdW1wdGlvbiBtYWRlIGlu
IHNldHRpbmcga05vZGVWYWx1ZVNwYWNlLgorICBzdGF0aWNfYXNzZXJ0KG5vZGVfdHlwZTo6TWlu
aW11bU92ZXJoZWFkKCkgPj0gc2l6ZW9mKHZvaWQgKikgKyA0LAorICAgICAgICAgICAgICAgICJu
b2RlIHNwYWNlIGFzc3VtcHRpb24gaW5jb3JyZWN0Iik7CisKKyAgcmV0dXJuIHRydWU7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBQPgorYnRyZWU8UD46OmJ0cmVlKGNvbnN0IGtleV9jb21wYXJl
ICZjb21wLCBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYWxsb2MpCisgICAgOiByb290Xyhjb21wLCBh
bGxvYywgRW1wdHlOb2RlKCkpLCByaWdodG1vc3RfKEVtcHR5Tm9kZSgpKSwgc2l6ZV8oMCkge30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFA+CitidHJlZTxQPjo6YnRyZWUoY29uc3QgYnRyZWUgJngp
IDogYnRyZWUoeC5rZXlfY29tcCgpLCB4LmFsbG9jYXRvcigpKSB7CisgIGNvcHlfb3JfbW92ZV92
YWx1ZXNfaW5fb3JkZXIoJngpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgorYXV0byBidHJlZTxQPjo6aW5zZXJ0X3VuaXF1ZShjb25zdCBr
ZXlfdHlwZSAma2V5LCBBcmdzICYmLi4uIGFyZ3MpCisgICAgLT4gc3RkOjpwYWlyPGl0ZXJhdG9y
LCBib29sPiB7CisgIGlmIChlbXB0eSgpKSB7CisgICAgbXV0YWJsZV9yb290KCkgPSByaWdodG1v
c3RfID0gbmV3X2xlYWZfcm9vdF9ub2RlKDEpOworICB9CisKKyAgYXV0byByZXMgPSBpbnRlcm5h
bF9sb2NhdGUoa2V5KTsKKyAgaXRlcmF0b3IgJml0ZXIgPSByZXMudmFsdWU7CisKKyAgaWYgKHJl
cy5IYXNNYXRjaCgpKSB7CisgICAgaWYgKHJlcy5Jc0VxKCkpIHsKKyAgICAgIC8vIFRoZSBrZXkg
YWxyZWFkeSBleGlzdHMgaW4gdGhlIHRyZWUsIGRvIG5vdGhpbmcuCisgICAgICByZXR1cm4ge2l0
ZXIsIGZhbHNlfTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaXRlcmF0b3IgbGFzdCA9IGludGVy
bmFsX2xhc3QoaXRlcik7CisgICAgaWYgKGxhc3Qubm9kZSAmJiAhY29tcGFyZV9rZXlzKGtleSwg
bGFzdC5rZXkoKSkpIHsKKyAgICAgIC8vIFRoZSBrZXkgYWxyZWFkeSBleGlzdHMgaW4gdGhlIHRy
ZWUsIGRvIG5vdGhpbmcuCisgICAgICByZXR1cm4ge2xhc3QsIGZhbHNlfTsKKyAgICB9CisgIH0K
KyAgcmV0dXJuIHtpbnRlcm5hbF9lbXBsYWNlKGl0ZXIsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLiksIHRydWV9OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgoraW5saW5lIGF1dG8gYnRyZWU8UD46Omluc2VydF9oaW50X3VuaXF1ZShp
dGVyYXRvciBwb3NpdGlvbiwgY29uc3Qga2V5X3R5cGUgJmtleSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQXJncyAmJi4uLiBhcmdzKQorICAgIC0+IHN0ZDo6cGFp
cjxpdGVyYXRvciwgYm9vbD4geworICBpZiAoIWVtcHR5KCkpIHsKKyAgICBpZiAocG9zaXRpb24g
PT0gZW5kKCkgfHwgY29tcGFyZV9rZXlzKGtleSwgcG9zaXRpb24ua2V5KCkpKSB7CisgICAgICBp
dGVyYXRvciBwcmV2ID0gcG9zaXRpb247CisgICAgICBpZiAocG9zaXRpb24gPT0gYmVnaW4oKSB8
fCBjb21wYXJlX2tleXMoKC0tcHJldikua2V5KCksIGtleSkpIHsKKyAgICAgICAgLy8gcHJldi5r
ZXkoKSA8IGtleSA8IHBvc2l0aW9uLmtleSgpCisgICAgICAgIHJldHVybiB7aW50ZXJuYWxfZW1w
bGFjZShwb3NpdGlvbiwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSwgdHJ1ZX07CisgICAg
ICB9CisgICAgfSBlbHNlIGlmIChjb21wYXJlX2tleXMocG9zaXRpb24ua2V5KCksIGtleSkpIHsK
KyAgICAgICsrcG9zaXRpb247CisgICAgICBpZiAocG9zaXRpb24gPT0gZW5kKCkgfHwgY29tcGFy
ZV9rZXlzKGtleSwgcG9zaXRpb24ua2V5KCkpKSB7CisgICAgICAgIC8vIHtvcmlnaW5hbCBgcG9z
aXRpb25gfS5rZXkoKSA8IGtleSA8IHtjdXJyZW50IGBwb3NpdGlvbmB9LmtleSgpCisgICAgICAg
IHJldHVybiB7aW50ZXJuYWxfZW1wbGFjZShwb3NpdGlvbiwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKSwgdHJ1ZX07CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIHBvc2l0aW9u
LmtleSgpID09IGtleQorICAgICAgcmV0dXJuIHtwb3NpdGlvbiwgZmFsc2V9OworICAgIH0KKyAg
fQorICByZXR1cm4gaW5zZXJ0X3VuaXF1ZShrZXksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lIElucHV0
SXRlcmF0b3I+Cit2b2lkIGJ0cmVlPFA+OjppbnNlcnRfaXRlcmF0b3JfdW5pcXVlKElucHV0SXRl
cmF0b3IgYiwgSW5wdXRJdGVyYXRvciBlKSB7CisgIGZvciAoOyBiICE9IGU7ICsrYikgeworICAg
IGluc2VydF9oaW50X3VuaXF1ZShlbmQoKSwgcGFyYW1zX3R5cGU6OmtleSgqYiksICpiKTsKKyAg
fQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVR5
cGU+CithdXRvIGJ0cmVlPFA+OjppbnNlcnRfbXVsdGkoY29uc3Qga2V5X3R5cGUgJmtleSwgVmFs
dWVUeXBlICYmdikgLT4gaXRlcmF0b3IgeworICBpZiAoZW1wdHkoKSkgeworICAgIG11dGFibGVf
cm9vdCgpID0gcmlnaHRtb3N0XyA9IG5ld19sZWFmX3Jvb3Rfbm9kZSgxKTsKKyAgfQorCisgIGl0
ZXJhdG9yIGl0ZXIgPSBpbnRlcm5hbF91cHBlcl9ib3VuZChrZXkpOworICBpZiAoaXRlci5ub2Rl
ID09IG51bGxwdHIpIHsKKyAgICBpdGVyID0gZW5kKCk7CisgIH0KKyAgcmV0dXJuIGludGVybmFs
X2VtcGxhY2UoaXRlciwgc3RkOjpmb3J3YXJkPFZhbHVlVHlwZT4odikpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVR5cGU+CithdXRvIGJ0cmVl
PFA+OjppbnNlcnRfaGludF9tdWx0aShpdGVyYXRvciBwb3NpdGlvbiwgVmFsdWVUeXBlICYmdikg
LT4gaXRlcmF0b3IgeworICBpZiAoIWVtcHR5KCkpIHsKKyAgICBjb25zdCBrZXlfdHlwZSAma2V5
ID0gcGFyYW1zX3R5cGU6OmtleSh2KTsKKyAgICBpZiAocG9zaXRpb24gPT0gZW5kKCkgfHwgIWNv
bXBhcmVfa2V5cyhwb3NpdGlvbi5rZXkoKSwga2V5KSkgeworICAgICAgaXRlcmF0b3IgcHJldiA9
IHBvc2l0aW9uOworICAgICAgaWYgKHBvc2l0aW9uID09IGJlZ2luKCkgfHwgIWNvbXBhcmVfa2V5
cyhrZXksICgtLXByZXYpLmtleSgpKSkgeworICAgICAgICAvLyBwcmV2LmtleSgpIDw9IGtleSA8
PSBwb3NpdGlvbi5rZXkoKQorICAgICAgICByZXR1cm4gaW50ZXJuYWxfZW1wbGFjZShwb3NpdGlv
biwgc3RkOjpmb3J3YXJkPFZhbHVlVHlwZT4odikpOworICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICBpdGVyYXRvciBuZXh0ID0gcG9zaXRpb247CisgICAgICArK25leHQ7CisgICAgICBpZiAo
bmV4dCA9PSBlbmQoKSB8fCAhY29tcGFyZV9rZXlzKG5leHQua2V5KCksIGtleSkpIHsKKyAgICAg
ICAgLy8gcG9zaXRpb24ua2V5KCkgPCBrZXkgPD0gbmV4dC5rZXkoKQorICAgICAgICByZXR1cm4g
aW50ZXJuYWxfZW1wbGFjZShuZXh0LCBzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2KSk7CisgICAg
ICB9CisgICAgfQorICB9CisgIHJldHVybiBpbnNlcnRfbXVsdGkoc3RkOjpmb3J3YXJkPFZhbHVl
VHlwZT4odikpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJbnB1dEl0ZXJhdG9yPgordm9pZCBidHJlZTxQPjo6aW5zZXJ0X2l0ZXJhdG9yX211bHRpKElu
cHV0SXRlcmF0b3IgYiwgSW5wdXRJdGVyYXRvciBlKSB7CisgIGZvciAoOyBiICE9IGU7ICsrYikg
eworICAgIGluc2VydF9oaW50X211bHRpKGVuZCgpLCAqYik7CisgIH0KK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFA+CithdXRvIGJ0cmVlPFA+OjpvcGVyYXRvcj0oY29uc3QgYnRyZWUgJngpIC0+
IGJ0cmVlICYgeworICBpZiAodGhpcyAhPSAmeCkgeworICAgIGNsZWFyKCk7CisKKyAgICAqbXV0
YWJsZV9rZXlfY29tcCgpID0geC5rZXlfY29tcCgpOworICAgIGlmIChhYnNsOjphbGxvY2F0b3Jf
dHJhaXRzPAorICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGU+Ojpwcm9wYWdhdGVfb25fY29udGFp
bmVyX2NvcHlfYXNzaWdubWVudDo6dmFsdWUpIHsKKyAgICAgICptdXRhYmxlX2FsbG9jYXRvcigp
ID0geC5hbGxvY2F0b3IoKTsKKyAgICB9CisKKyAgICBjb3B5X29yX21vdmVfdmFsdWVzX2luX29y
ZGVyKCZ4KTsKKyAgfQorICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQ
PgorYXV0byBidHJlZTxQPjo6b3BlcmF0b3I9KGJ0cmVlICYmeCkgbm9leGNlcHQgLT4gYnRyZWUg
JiB7CisgIGlmICh0aGlzICE9ICZ4KSB7CisgICAgY2xlYXIoKTsKKworICAgIHVzaW5nIHN0ZDo6
c3dhcDsKKyAgICBpZiAoYWJzbDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgICAgICAgIGFsbG9j
YXRvcl90eXBlPjo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQ6OnZhbHVl
KSB7CisgICAgICAvLyBOb3RlOiBgcm9vdF9gIGFsc28gY29udGFpbnMgdGhlIGFsbG9jYXRvciBh
bmQgdGhlIGtleSBjb21wYXJhdG9yLgorICAgICAgc3dhcChyb290XywgeC5yb290Xyk7CisgICAg
ICBzd2FwKHJpZ2h0bW9zdF8sIHgucmlnaHRtb3N0Xyk7CisgICAgICBzd2FwKHNpemVfLCB4LnNp
emVfKTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKGFsbG9jYXRvcigpID09IHguYWxsb2NhdG9y
KCkpIHsKKyAgICAgICAgc3dhcChtdXRhYmxlX3Jvb3QoKSwgeC5tdXRhYmxlX3Jvb3QoKSk7Cisg
ICAgICAgIHN3YXAoKm11dGFibGVfa2V5X2NvbXAoKSwgKngubXV0YWJsZV9rZXlfY29tcCgpKTsK
KyAgICAgICAgc3dhcChyaWdodG1vc3RfLCB4LnJpZ2h0bW9zdF8pOworICAgICAgICBzd2FwKHNp
emVfLCB4LnNpemVfKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIGFyZW4ndCBhbGxv
d2VkIHRvIHByb3BhZ2F0ZSB0aGUgYWxsb2NhdG9yIGFuZCB0aGUgYWxsb2NhdG9yIGlzCisgICAg
ICAgIC8vIGRpZmZlcmVudCBzbyB3ZSBjYW4ndCB0YWtlIG92ZXIgaXRzIG1lbW9yeS4gV2UgbXVz
dCBtb3ZlIGVhY2ggZWxlbWVudAorICAgICAgICAvLyBpbmRpdmlkdWFsbHkuIFdlIG5lZWQgYm90
aCBgeGAgYW5kIGB0aGlzYCB0byBoYXZlIGB4YHMga2V5IGNvbXBhcmF0b3IKKyAgICAgICAgLy8g
d2hpbGUgbW92aW5nIHRoZSB2YWx1ZXMgc28gd2UgY2FuJ3Qgc3dhcCB0aGUga2V5IGNvbXBhcmF0
b3JzLgorICAgICAgICAqbXV0YWJsZV9rZXlfY29tcCgpID0geC5rZXlfY29tcCgpOworICAgICAg
ICBjb3B5X29yX21vdmVfdmFsdWVzX2luX29yZGVyKCZ4KTsKKyAgICAgIH0KKyAgICB9CisgIH0K
KyAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK2F1dG8gYnRyZWU8
UD46OmVyYXNlKGl0ZXJhdG9yIGl0ZXIpIC0+IGl0ZXJhdG9yIHsKKyAgYm9vbCBpbnRlcm5hbF9k
ZWxldGUgPSBmYWxzZTsKKyAgaWYgKCFpdGVyLm5vZGUtPmxlYWYoKSkgeworICAgIC8vIERlbGV0
aW9uIG9mIGEgdmFsdWUgb24gYW4gaW50ZXJuYWwgbm9kZS4gRmlyc3QsIG1vdmUgdGhlIGxhcmdl
c3QgdmFsdWUKKyAgICAvLyBmcm9tIG91ciBsZWZ0IGNoaWxkIGhlcmUsIHRoZW4gZGVsZXRlIHRo
YXQgcG9zaXRpb24gKGluIHJlbW92ZV92YWx1ZSgpCisgICAgLy8gYmVsb3cpLiBXZSBjYW4gZ2V0
IHRvIHRoZSBsYXJnZXN0IHZhbHVlIGZyb20gb3VyIGxlZnQgY2hpbGQgYnkKKyAgICAvLyBkZWNy
ZW1lbnRpbmcgaXRlci4KKyAgICBpdGVyYXRvciBpbnRlcm5hbF9pdGVyKGl0ZXIpOworICAgIC0t
aXRlcjsKKyAgICBhc3NlcnQoaXRlci5ub2RlLT5sZWFmKCkpOworICAgIGFzc2VydCghY29tcGFy
ZV9rZXlzKGludGVybmFsX2l0ZXIua2V5KCksIGl0ZXIua2V5KCkpKTsKKyAgICBwYXJhbXNfdHlw
ZTo6bW92ZShtdXRhYmxlX2FsbG9jYXRvcigpLCBpdGVyLm5vZGUtPnNsb3QoaXRlci5wb3NpdGlv
biksCisgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxfaXRlci5ub2RlLT5zbG90KGludGVy
bmFsX2l0ZXIucG9zaXRpb24pKTsKKyAgICBpbnRlcm5hbF9kZWxldGUgPSB0cnVlOworICB9CisK
KyAgLy8gRGVsZXRlIHRoZSBrZXkgZnJvbSB0aGUgbGVhZi4KKyAgaXRlci5ub2RlLT5yZW1vdmVf
dmFsdWUoaXRlci5wb3NpdGlvbiwgbXV0YWJsZV9hbGxvY2F0b3IoKSk7CisgIC0tc2l6ZV87CisK
KyAgLy8gV2Ugd2FudCB0byByZXR1cm4gdGhlIG5leHQgdmFsdWUgYWZ0ZXIgdGhlIG9uZSB3ZSBq
dXN0IGVyYXNlZC4gSWYgd2UKKyAgLy8gZXJhc2VkIGZyb20gYW4gaW50ZXJuYWwgbm9kZSAoaW50
ZXJuYWxfZGVsZXRlID09IHRydWUpLCB0aGVuIHRoZSBuZXh0CisgIC8vIHZhbHVlIGlzICsrKCsr
aXRlcikuIElmIHdlIGVyYXNlZCBmcm9tIGEgbGVhZiBub2RlIChpbnRlcm5hbF9kZWxldGUgPT0K
KyAgLy8gZmFsc2UpIHRoZW4gdGhlIG5leHQgdmFsdWUgaXMgKytpdGVyLiBOb3RlIHRoYXQgKytp
dGVyIG1heSBwb2ludCB0byBhbgorICAvLyBpbnRlcm5hbCBub2RlIGFuZCB0aGUgdmFsdWUgaW4g
dGhlIGludGVybmFsIG5vZGUgbWF5IG1vdmUgdG8gYSBsZWFmIG5vZGUKKyAgLy8gKGl0ZXIubm9k
ZSkgd2hlbiByZWJhbGFuY2luZyBpcyBwZXJmb3JtZWQgYXQgdGhlIGxlYWYgbGV2ZWwuCisKKyAg
aXRlcmF0b3IgcmVzID0gcmViYWxhbmNlX2FmdGVyX2RlbGV0ZShpdGVyKTsKKworICAvLyBJZiB3
ZSBlcmFzZWQgZnJvbSBhbiBpbnRlcm5hbCBub2RlLCBhZHZhbmNlIHRoZSBpdGVyYXRvci4KKyAg
aWYgKGludGVybmFsX2RlbGV0ZSkgeworICAgICsrcmVzOworICB9CisgIHJldHVybiByZXM7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgorYXV0byBidHJlZTxQPjo6cmViYWxhbmNlX2FmdGVy
X2RlbGV0ZShpdGVyYXRvciBpdGVyKSAtPiBpdGVyYXRvciB7CisgIC8vIE1lcmdlL3JlYmFsYW5j
ZSBhcyB3ZSB3YWxrIGJhY2sgdXAgdGhlIHRyZWUuCisgIGl0ZXJhdG9yIHJlcyhpdGVyKTsKKyAg
Ym9vbCBmaXJzdF9pdGVyYXRpb24gPSB0cnVlOworICBmb3IgKDs7KSB7CisgICAgaWYgKGl0ZXIu
bm9kZSA9PSByb290KCkpIHsKKyAgICAgIHRyeV9zaHJpbmsoKTsKKyAgICAgIGlmIChlbXB0eSgp
KSB7CisgICAgICAgIHJldHVybiBlbmQoKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIH0K
KyAgICBpZiAoaXRlci5ub2RlLT5jb3VudCgpID49IGtNaW5Ob2RlVmFsdWVzKSB7CisgICAgICBi
cmVhazsKKyAgICB9CisgICAgYm9vbCBtZXJnZWQgPSB0cnlfbWVyZ2Vfb3JfcmViYWxhbmNlKCZp
dGVyKTsKKyAgICAvLyBPbiB0aGUgZmlyc3QgaXRlcmF0aW9uLCB3ZSBzaG91bGQgdXBkYXRlIGBy
ZXNgIHdpdGggYGl0ZXJgIGJlY2F1c2UgYHJlc2AKKyAgICAvLyBtYXkgaGF2ZSBiZWVuIGludmFs
aWRhdGVkLgorICAgIGlmIChmaXJzdF9pdGVyYXRpb24pIHsKKyAgICAgIHJlcyA9IGl0ZXI7Cisg
ICAgICBmaXJzdF9pdGVyYXRpb24gPSBmYWxzZTsKKyAgICB9CisgICAgaWYgKCFtZXJnZWQpIHsK
KyAgICAgIGJyZWFrOworICAgIH0KKyAgICBpdGVyLm5vZGUgPSBpdGVyLm5vZGUtPnBhcmVudCgp
OworICB9CisKKyAgLy8gQWRqdXN0IG91ciByZXR1cm4gdmFsdWUuIElmIHdlJ3JlIHBvaW50aW5n
IGF0IHRoZSBlbmQgb2YgYSBub2RlLCBhZHZhbmNlCisgIC8vIHRoZSBpdGVyYXRvci4KKyAgaWYg
KHJlcy5wb3NpdGlvbiA9PSByZXMubm9kZS0+Y291bnQoKSkgeworICAgIHJlcy5wb3NpdGlvbiA9
IHJlcy5ub2RlLT5jb3VudCgpIC0gMTsKKyAgICArK3JlczsKKyAgfQorCisgIHJldHVybiByZXM7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgorYXV0byBidHJlZTxQPjo6ZXJhc2UoaXRlcmF0
b3IgYmVnaW4sIGl0ZXJhdG9yIGVuZCkKKyAgICAtPiBzdGQ6OnBhaXI8c2l6ZV90eXBlLCBpdGVy
YXRvcj4geworICBkaWZmZXJlbmNlX3R5cGUgY291bnQgPSBzdGQ6OmRpc3RhbmNlKGJlZ2luLCBl
bmQpOworICBhc3NlcnQoY291bnQgPj0gMCk7CisKKyAgaWYgKGNvdW50ID09IDApIHsKKyAgICBy
ZXR1cm4gezAsIGJlZ2lufTsKKyAgfQorCisgIGlmIChjb3VudCA9PSBzaXplXykgeworICAgIGNs
ZWFyKCk7CisgICAgcmV0dXJuIHtjb3VudCwgdGhpcy0+ZW5kKCl9OworICB9CisKKyAgaWYgKGJl
Z2luLm5vZGUgPT0gZW5kLm5vZGUpIHsKKyAgICBlcmFzZV9zYW1lX25vZGUoYmVnaW4sIGVuZCk7
CisgICAgc2l6ZV8gLT0gY291bnQ7CisgICAgcmV0dXJuIHtjb3VudCwgcmViYWxhbmNlX2FmdGVy
X2RlbGV0ZShiZWdpbil9OworICB9CisKKyAgY29uc3Qgc2l6ZV90eXBlIHRhcmdldF9zaXplID0g
c2l6ZV8gLSBjb3VudDsKKyAgd2hpbGUgKHNpemVfID4gdGFyZ2V0X3NpemUpIHsKKyAgICBpZiAo
YmVnaW4ubm9kZS0+bGVhZigpKSB7CisgICAgICBjb25zdCBzaXplX3R5cGUgcmVtYWluaW5nX3Rv
X2VyYXNlID0gc2l6ZV8gLSB0YXJnZXRfc2l6ZTsKKyAgICAgIGNvbnN0IHNpemVfdHlwZSByZW1h
aW5pbmdfaW5fbm9kZSA9IGJlZ2luLm5vZGUtPmNvdW50KCkgLSBiZWdpbi5wb3NpdGlvbjsKKyAg
ICAgIGJlZ2luID0gZXJhc2VfZnJvbV9sZWFmX25vZGUoCisgICAgICAgICAgYmVnaW4sIChzdGQ6
Om1pbikocmVtYWluaW5nX3RvX2VyYXNlLCByZW1haW5pbmdfaW5fbm9kZSkpOworICAgIH0gZWxz
ZSB7CisgICAgICBiZWdpbiA9IGVyYXNlKGJlZ2luKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHtj
b3VudCwgYmVnaW59OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWU8UD46
OmVyYXNlX3NhbWVfbm9kZShpdGVyYXRvciBiZWdpbiwgaXRlcmF0b3IgZW5kKSB7CisgIGFzc2Vy
dChiZWdpbi5ub2RlID09IGVuZC5ub2RlKTsKKyAgYXNzZXJ0KGVuZC5wb3NpdGlvbiA+IGJlZ2lu
LnBvc2l0aW9uKTsKKworICBub2RlX3R5cGUgKm5vZGUgPSBiZWdpbi5ub2RlOworICBzaXplX3R5
cGUgdG9fZXJhc2UgPSBlbmQucG9zaXRpb24gLSBiZWdpbi5wb3NpdGlvbjsKKyAgaWYgKCFub2Rl
LT5sZWFmKCkpIHsKKyAgICAvLyBEZWxldGUgYWxsIGNoaWxkcmVuIGJldHdlZW4gYmVnaW4gYW5k
IGVuZC4KKyAgICBmb3IgKHNpemVfdHlwZSBpID0gMDsgaSA8IHRvX2VyYXNlOyArK2kpIHsKKyAg
ICAgIGludGVybmFsX2NsZWFyKG5vZGUtPmNoaWxkKGJlZ2luLnBvc2l0aW9uICsgaSArIDEpKTsK
KyAgICB9CisgICAgLy8gUm90YXRlIGNoaWxkcmVuIGFmdGVyIGVuZCBpbnRvIG5ldyBwb3NpdGlv
bnMuCisgICAgZm9yIChzaXplX3R5cGUgaSA9IGJlZ2luLnBvc2l0aW9uICsgdG9fZXJhc2UgKyAx
OyBpIDw9IG5vZGUtPmNvdW50KCk7ICsraSkgeworICAgICAgbm9kZS0+c2V0X2NoaWxkKGkgLSB0
b19lcmFzZSwgbm9kZS0+Y2hpbGQoaSkpOworICAgICAgbm9kZS0+Y2xlYXJfY2hpbGQoaSk7Cisg
ICAgfQorICB9CisgIG5vZGUtPnJlbW92ZV92YWx1ZXNfaWdub3JlX2NoaWxkcmVuKGJlZ2luLnBv
c2l0aW9uLCB0b19lcmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bXV0YWJsZV9hbGxvY2F0b3IoKSk7CisKKyAgLy8gRG8gbm90IG5lZWQgdG8gdXBkYXRlIHJpZ2h0
bW9zdF8sIGJlY2F1c2UKKyAgLy8gKiBlaXRoZXIgZW5kID09IHRoaXMtPmVuZCgpLCBhbmQgdGhl
cmVmb3JlIG5vZGUgPT0gcmlnaHRtb3N0XywgYW5kIHN0aWxsCisgIC8vICAgZXhpc3RzCisgIC8v
ICogb3IgZW5kICE9IHRoaXMtPmVuZCgpLCBhbmQgdGhlcmVmb3JlIHJpZ2h0bW9zdF8gaGFzbid0
IGJlZW4gZXJhc2VkLCBzaW5jZQorICAvLyAgIGl0IHdhc24ndCBjb3ZlcmVkIGluIFtiZWdpbiwg
ZW5kKQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK2F1dG8gYnRyZWU8UD46OmVyYXNlX2Zy
b21fbGVhZl9ub2RlKGl0ZXJhdG9yIGJlZ2luLCBzaXplX3R5cGUgdG9fZXJhc2UpCisgICAgLT4g
aXRlcmF0b3IgeworICBub2RlX3R5cGUgKm5vZGUgPSBiZWdpbi5ub2RlOworICBhc3NlcnQobm9k
ZS0+bGVhZigpKTsKKyAgYXNzZXJ0KG5vZGUtPmNvdW50KCkgPiBiZWdpbi5wb3NpdGlvbik7Cisg
IGFzc2VydChiZWdpbi5wb3NpdGlvbiArIHRvX2VyYXNlIDw9IG5vZGUtPmNvdW50KCkpOworCisg
IG5vZGUtPnJlbW92ZV92YWx1ZXNfaWdub3JlX2NoaWxkcmVuKGJlZ2luLnBvc2l0aW9uLCB0b19l
cmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YWJsZV9hbGxv
Y2F0b3IoKSk7CisKKyAgc2l6ZV8gLT0gdG9fZXJhc2U7CisKKyAgcmV0dXJuIHJlYmFsYW5jZV9h
ZnRlcl9kZWxldGUoYmVnaW4pOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBLPgorYXV0byBidHJlZTxQPjo6ZXJhc2VfdW5pcXVlKGNvbnN0IEsgJmtleSkg
LT4gc2l6ZV90eXBlIHsKKyAgY29uc3QgaXRlcmF0b3IgaXRlciA9IGludGVybmFsX2ZpbmQoa2V5
KTsKKyAgaWYgKGl0ZXIubm9kZSA9PSBudWxscHRyKSB7CisgICAgLy8gVGhlIGtleSBkb2Vzbid0
IGV4aXN0IGluIHRoZSB0cmVlLCByZXR1cm4gbm90aGluZyBkb25lLgorICAgIHJldHVybiAwOwor
ICB9CisgIGVyYXNlKGl0ZXIpOworICByZXR1cm4gMTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KK2F1dG8gYnRyZWU8UD46OmVyYXNlX211bHRpKGNv
bnN0IEsgJmtleSkgLT4gc2l6ZV90eXBlIHsKKyAgY29uc3QgaXRlcmF0b3IgYmVnaW4gPSBpbnRl
cm5hbF9sb3dlcl9ib3VuZChrZXkpOworICBpZiAoYmVnaW4ubm9kZSA9PSBudWxscHRyKSB7Cisg
ICAgLy8gVGhlIGtleSBkb2Vzbid0IGV4aXN0IGluIHRoZSB0cmVlLCByZXR1cm4gbm90aGluZyBk
b25lLgorICAgIHJldHVybiAwOworICB9CisgIC8vIERlbGV0ZSBhbGwgb2YgdGhlIGtleXMgYmV0
d2VlbiBiZWdpbiBhbmQgdXBwZXJfYm91bmQoa2V5KS4KKyAgY29uc3QgaXRlcmF0b3IgZW5kID0g
aW50ZXJuYWxfZW5kKGludGVybmFsX3VwcGVyX2JvdW5kKGtleSkpOworICByZXR1cm4gZXJhc2Uo
YmVnaW4sIGVuZCkuZmlyc3Q7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordm9pZCBidHJl
ZTxQPjo6Y2xlYXIoKSB7CisgIGlmICghZW1wdHkoKSkgeworICAgIGludGVybmFsX2NsZWFyKHJv
b3QoKSk7CisgIH0KKyAgbXV0YWJsZV9yb290KCkgPSBFbXB0eU5vZGUoKTsKKyAgcmlnaHRtb3N0
XyA9IEVtcHR5Tm9kZSgpOworICBzaXplXyA9IDA7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQ
Pgordm9pZCBidHJlZTxQPjo6c3dhcChidHJlZSAmeCkgeworICB1c2luZyBzdGQ6OnN3YXA7Cisg
IGlmIChhYnNsOjphbGxvY2F0b3JfdHJhaXRzPAorICAgICAgICAgIGFsbG9jYXRvcl90eXBlPjo6
cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZSkgeworICAgIC8vIE5vdGU6IGByb290
X2AgYWxzbyBjb250YWlucyB0aGUgYWxsb2NhdG9yIGFuZCB0aGUga2V5IGNvbXBhcmF0b3IuCisg
ICAgc3dhcChyb290XywgeC5yb290Xyk7CisgIH0gZWxzZSB7CisgICAgLy8gSXQncyB1bmRlZmlu
ZWQgYmVoYXZpb3IgaWYgdGhlIGFsbG9jYXRvcnMgYXJlIHVuZXF1YWwgaGVyZS4KKyAgICBhc3Nl
cnQoYWxsb2NhdG9yKCkgPT0geC5hbGxvY2F0b3IoKSk7CisgICAgc3dhcChtdXRhYmxlX3Jvb3Qo
KSwgeC5tdXRhYmxlX3Jvb3QoKSk7CisgICAgc3dhcCgqbXV0YWJsZV9rZXlfY29tcCgpLCAqeC5t
dXRhYmxlX2tleV9jb21wKCkpOworICB9CisgIHN3YXAocmlnaHRtb3N0XywgeC5yaWdodG1vc3Rf
KTsKKyAgc3dhcChzaXplXywgeC5zaXplXyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgor
dm9pZCBidHJlZTxQPjo6dmVyaWZ5KCkgY29uc3QgeworICBhc3NlcnQocm9vdCgpICE9IG51bGxw
dHIpOworICBhc3NlcnQobGVmdG1vc3QoKSAhPSBudWxscHRyKTsKKyAgYXNzZXJ0KHJpZ2h0bW9z
dF8gIT0gbnVsbHB0cik7CisgIGFzc2VydChlbXB0eSgpIHx8IHNpemUoKSA9PSBpbnRlcm5hbF92
ZXJpZnkocm9vdCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgIGFzc2VydChsZWZ0bW9zdCgpID09
ICgrK2NvbnN0X2l0ZXJhdG9yKHJvb3QoKSwgLTEpKS5ub2RlKTsKKyAgYXNzZXJ0KHJpZ2h0bW9z
dF8gPT0gKC0tY29uc3RfaXRlcmF0b3Iocm9vdCgpLCByb290KCktPmNvdW50KCkpKS5ub2RlKTsK
KyAgYXNzZXJ0KGxlZnRtb3N0KCktPmxlYWYoKSk7CisgIGFzc2VydChyaWdodG1vc3RfLT5sZWFm
KCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWU8UD46OnJlYmFsYW5j
ZV9vcl9zcGxpdChpdGVyYXRvciAqaXRlcikgeworICBub2RlX3R5cGUgKiZub2RlID0gaXRlci0+
bm9kZTsKKyAgaW50ICZpbnNlcnRfcG9zaXRpb24gPSBpdGVyLT5wb3NpdGlvbjsKKyAgYXNzZXJ0
KG5vZGUtPmNvdW50KCkgPT0gbm9kZS0+bWF4X2NvdW50KCkpOworICBhc3NlcnQoa05vZGVWYWx1
ZXMgPT0gbm9kZS0+bWF4X2NvdW50KCkpOworCisgIC8vIEZpcnN0IHRyeSB0byBtYWtlIHJvb20g
b24gdGhlIG5vZGUgYnkgcmViYWxhbmNpbmcuCisgIG5vZGVfdHlwZSAqcGFyZW50ID0gbm9kZS0+
cGFyZW50KCk7CisgIGlmIChub2RlICE9IHJvb3QoKSkgeworICAgIGlmIChub2RlLT5wb3NpdGlv
bigpID4gMCkgeworICAgICAgLy8gVHJ5IHJlYmFsYW5jaW5nIHdpdGggb3VyIGxlZnQgc2libGlu
Zy4KKyAgICAgIG5vZGVfdHlwZSAqbGVmdCA9IHBhcmVudC0+Y2hpbGQobm9kZS0+cG9zaXRpb24o
KSAtIDEpOworICAgICAgYXNzZXJ0KGxlZnQtPm1heF9jb3VudCgpID09IGtOb2RlVmFsdWVzKTsK
KyAgICAgIGlmIChsZWZ0LT5jb3VudCgpIDwga05vZGVWYWx1ZXMpIHsKKyAgICAgICAgLy8gV2Ug
YmlhcyByZWJhbGFuY2luZyBiYXNlZCBvbiB0aGUgcG9zaXRpb24gYmVpbmcgaW5zZXJ0ZWQuIElm
IHdlJ3JlCisgICAgICAgIC8vIGluc2VydGluZyBhdCB0aGUgZW5kIG9mIHRoZSByaWdodCBub2Rl
IHRoZW4gd2UgYmlhcyByZWJhbGFuY2luZyB0bworICAgICAgICAvLyBmaWxsIHVwIHRoZSBsZWZ0
IG5vZGUuCisgICAgICAgIGludCB0b19tb3ZlID0gKGtOb2RlVmFsdWVzIC0gbGVmdC0+Y291bnQo
KSkgLworICAgICAgICAgICAgICAgICAgICAgICgxICsgKGluc2VydF9wb3NpdGlvbiA8IGtOb2Rl
VmFsdWVzKSk7CisgICAgICAgIHRvX21vdmUgPSAoc3RkOjptYXgpKDEsIHRvX21vdmUpOworCisg
ICAgICAgIGlmICgoKGluc2VydF9wb3NpdGlvbiAtIHRvX21vdmUpID49IDApIHx8CisgICAgICAg
ICAgICAoKGxlZnQtPmNvdW50KCkgKyB0b19tb3ZlKSA8IGtOb2RlVmFsdWVzKSkgeworICAgICAg
ICAgIGxlZnQtPnJlYmFsYW5jZV9yaWdodF90b19sZWZ0KHRvX21vdmUsIG5vZGUsIG11dGFibGVf
YWxsb2NhdG9yKCkpOworCisgICAgICAgICAgYXNzZXJ0KG5vZGUtPm1heF9jb3VudCgpIC0gbm9k
ZS0+Y291bnQoKSA9PSB0b19tb3ZlKTsKKyAgICAgICAgICBpbnNlcnRfcG9zaXRpb24gPSBpbnNl
cnRfcG9zaXRpb24gLSB0b19tb3ZlOworICAgICAgICAgIGlmIChpbnNlcnRfcG9zaXRpb24gPCAw
KSB7CisgICAgICAgICAgICBpbnNlcnRfcG9zaXRpb24gPSBpbnNlcnRfcG9zaXRpb24gKyBsZWZ0
LT5jb3VudCgpICsgMTsKKyAgICAgICAgICAgIG5vZGUgPSBsZWZ0OworICAgICAgICAgIH0KKwor
ICAgICAgICAgIGFzc2VydChub2RlLT5jb3VudCgpIDwgbm9kZS0+bWF4X2NvdW50KCkpOworICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGlmIChub2Rl
LT5wb3NpdGlvbigpIDwgcGFyZW50LT5jb3VudCgpKSB7CisgICAgICAvLyBUcnkgcmViYWxhbmNp
bmcgd2l0aCBvdXIgcmlnaHQgc2libGluZy4KKyAgICAgIG5vZGVfdHlwZSAqcmlnaHQgPSBwYXJl
bnQtPmNoaWxkKG5vZGUtPnBvc2l0aW9uKCkgKyAxKTsKKyAgICAgIGFzc2VydChyaWdodC0+bWF4
X2NvdW50KCkgPT0ga05vZGVWYWx1ZXMpOworICAgICAgaWYgKHJpZ2h0LT5jb3VudCgpIDwga05v
ZGVWYWx1ZXMpIHsKKyAgICAgICAgLy8gV2UgYmlhcyByZWJhbGFuY2luZyBiYXNlZCBvbiB0aGUg
cG9zaXRpb24gYmVpbmcgaW5zZXJ0ZWQuIElmIHdlJ3JlCisgICAgICAgIC8vIGluc2VydGluZyBh
dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsZWZ0IG5vZGUgdGhlbiB3ZSBiaWFzIHJlYmFsYW5jaW5n
CisgICAgICAgIC8vIHRvIGZpbGwgdXAgdGhlIHJpZ2h0IG5vZGUuCisgICAgICAgIGludCB0b19t
b3ZlID0KKyAgICAgICAgICAgIChrTm9kZVZhbHVlcyAtIHJpZ2h0LT5jb3VudCgpKSAvICgxICsg
KGluc2VydF9wb3NpdGlvbiA+IDApKTsKKyAgICAgICAgdG9fbW92ZSA9IChzdGQ6Om1heCkoMSwg
dG9fbW92ZSk7CisKKyAgICAgICAgaWYgKChpbnNlcnRfcG9zaXRpb24gPD0gKG5vZGUtPmNvdW50
KCkgLSB0b19tb3ZlKSkgfHwKKyAgICAgICAgICAgICgocmlnaHQtPmNvdW50KCkgKyB0b19tb3Zl
KSA8IGtOb2RlVmFsdWVzKSkgeworICAgICAgICAgIG5vZGUtPnJlYmFsYW5jZV9sZWZ0X3RvX3Jp
Z2h0KHRvX21vdmUsIHJpZ2h0LCBtdXRhYmxlX2FsbG9jYXRvcigpKTsKKworICAgICAgICAgIGlm
IChpbnNlcnRfcG9zaXRpb24gPiBub2RlLT5jb3VudCgpKSB7CisgICAgICAgICAgICBpbnNlcnRf
cG9zaXRpb24gPSBpbnNlcnRfcG9zaXRpb24gLSBub2RlLT5jb3VudCgpIC0gMTsKKyAgICAgICAg
ICAgIG5vZGUgPSByaWdodDsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBhc3NlcnQobm9kZS0+
Y291bnQoKSA8IG5vZGUtPm1heF9jb3VudCgpKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBSZWJhbGFuY2luZyBmYWlsZWQsIG1ha2Ugc3Vy
ZSB0aGVyZSBpcyByb29tIG9uIHRoZSBwYXJlbnQgbm9kZSBmb3IgYSBuZXcKKyAgICAvLyB2YWx1
ZS4KKyAgICBhc3NlcnQocGFyZW50LT5tYXhfY291bnQoKSA9PSBrTm9kZVZhbHVlcyk7CisgICAg
aWYgKHBhcmVudC0+Y291bnQoKSA9PSBrTm9kZVZhbHVlcykgeworICAgICAgaXRlcmF0b3IgcGFy
ZW50X2l0ZXIobm9kZS0+cGFyZW50KCksIG5vZGUtPnBvc2l0aW9uKCkpOworICAgICAgcmViYWxh
bmNlX29yX3NwbGl0KCZwYXJlbnRfaXRlcik7CisgICAgfQorICB9IGVsc2UgeworICAgIC8vIFJl
YmFsYW5jaW5nIG5vdCBwb3NzaWJsZSBiZWNhdXNlIHRoaXMgaXMgdGhlIHJvb3Qgbm9kZS4KKyAg
ICAvLyBDcmVhdGUgYSBuZXcgcm9vdCBub2RlIGFuZCBzZXQgdGhlIGN1cnJlbnQgcm9vdCBub2Rl
IGFzIHRoZSBjaGlsZCBvZiB0aGUKKyAgICAvLyBuZXcgcm9vdC4KKyAgICBwYXJlbnQgPSBuZXdf
aW50ZXJuYWxfbm9kZShwYXJlbnQpOworICAgIHBhcmVudC0+aW5pdF9jaGlsZCgwLCByb290KCkp
OworICAgIG11dGFibGVfcm9vdCgpID0gcGFyZW50OworICAgIC8vIElmIHRoZSBmb3JtZXIgcm9v
dCB3YXMgYSBsZWFmIG5vZGUsIHRoZW4gaXQncyBub3cgdGhlIHJpZ2h0bW9zdCBub2RlLgorICAg
IGFzc2VydCghcGFyZW50LT5jaGlsZCgwKS0+bGVhZigpIHx8IHBhcmVudC0+Y2hpbGQoMCkgPT0g
cmlnaHRtb3N0Xyk7CisgIH0KKworICAvLyBTcGxpdCB0aGUgbm9kZS4KKyAgbm9kZV90eXBlICpz
cGxpdF9ub2RlOworICBpZiAobm9kZS0+bGVhZigpKSB7CisgICAgc3BsaXRfbm9kZSA9IG5ld19s
ZWFmX25vZGUocGFyZW50KTsKKyAgICBub2RlLT5zcGxpdChpbnNlcnRfcG9zaXRpb24sIHNwbGl0
X25vZGUsIG11dGFibGVfYWxsb2NhdG9yKCkpOworICAgIGlmIChyaWdodG1vc3RfID09IG5vZGUp
IHJpZ2h0bW9zdF8gPSBzcGxpdF9ub2RlOworICB9IGVsc2UgeworICAgIHNwbGl0X25vZGUgPSBu
ZXdfaW50ZXJuYWxfbm9kZShwYXJlbnQpOworICAgIG5vZGUtPnNwbGl0KGluc2VydF9wb3NpdGlv
biwgc3BsaXRfbm9kZSwgbXV0YWJsZV9hbGxvY2F0b3IoKSk7CisgIH0KKworICBpZiAoaW5zZXJ0
X3Bvc2l0aW9uID4gbm9kZS0+Y291bnQoKSkgeworICAgIGluc2VydF9wb3NpdGlvbiA9IGluc2Vy
dF9wb3NpdGlvbiAtIG5vZGUtPmNvdW50KCkgLSAxOworICAgIG5vZGUgPSBzcGxpdF9ub2RlOwor
ICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordm9pZCBidHJlZTxQPjo6bWVyZ2Vfbm9k
ZXMobm9kZV90eXBlICpsZWZ0LCBub2RlX3R5cGUgKnJpZ2h0KSB7CisgIGxlZnQtPm1lcmdlKHJp
Z2h0LCBtdXRhYmxlX2FsbG9jYXRvcigpKTsKKyAgaWYgKHJpZ2h0LT5sZWFmKCkpIHsKKyAgICBp
ZiAocmlnaHRtb3N0XyA9PSByaWdodCkgcmlnaHRtb3N0XyA9IGxlZnQ7CisgICAgZGVsZXRlX2xl
YWZfbm9kZShyaWdodCk7CisgIH0gZWxzZSB7CisgICAgZGVsZXRlX2ludGVybmFsX25vZGUocmln
aHQpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgorYm9vbCBidHJlZTxQPjo6dHJ5
X21lcmdlX29yX3JlYmFsYW5jZShpdGVyYXRvciAqaXRlcikgeworICBub2RlX3R5cGUgKnBhcmVu
dCA9IGl0ZXItPm5vZGUtPnBhcmVudCgpOworICBpZiAoaXRlci0+bm9kZS0+cG9zaXRpb24oKSA+
IDApIHsKKyAgICAvLyBUcnkgbWVyZ2luZyB3aXRoIG91ciBsZWZ0IHNpYmxpbmcuCisgICAgbm9k
ZV90eXBlICpsZWZ0ID0gcGFyZW50LT5jaGlsZChpdGVyLT5ub2RlLT5wb3NpdGlvbigpIC0gMSk7
CisgICAgYXNzZXJ0KGxlZnQtPm1heF9jb3VudCgpID09IGtOb2RlVmFsdWVzKTsKKyAgICBpZiAo
KDEgKyBsZWZ0LT5jb3VudCgpICsgaXRlci0+bm9kZS0+Y291bnQoKSkgPD0ga05vZGVWYWx1ZXMp
IHsKKyAgICAgIGl0ZXItPnBvc2l0aW9uICs9IDEgKyBsZWZ0LT5jb3VudCgpOworICAgICAgbWVy
Z2Vfbm9kZXMobGVmdCwgaXRlci0+bm9kZSk7CisgICAgICBpdGVyLT5ub2RlID0gbGVmdDsKKyAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorICBpZiAoaXRlci0+bm9kZS0+cG9zaXRpb24o
KSA8IHBhcmVudC0+Y291bnQoKSkgeworICAgIC8vIFRyeSBtZXJnaW5nIHdpdGggb3VyIHJpZ2h0
IHNpYmxpbmcuCisgICAgbm9kZV90eXBlICpyaWdodCA9IHBhcmVudC0+Y2hpbGQoaXRlci0+bm9k
ZS0+cG9zaXRpb24oKSArIDEpOworICAgIGFzc2VydChyaWdodC0+bWF4X2NvdW50KCkgPT0ga05v
ZGVWYWx1ZXMpOworICAgIGlmICgoMSArIGl0ZXItPm5vZGUtPmNvdW50KCkgKyByaWdodC0+Y291
bnQoKSkgPD0ga05vZGVWYWx1ZXMpIHsKKyAgICAgIG1lcmdlX25vZGVzKGl0ZXItPm5vZGUsIHJp
Z2h0KTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAvLyBUcnkgcmViYWxhbmNpbmcg
d2l0aCBvdXIgcmlnaHQgc2libGluZy4gV2UgZG9uJ3QgcGVyZm9ybSByZWJhbGFuY2luZyBpZgor
ICAgIC8vIHdlIGRlbGV0ZWQgdGhlIGZpcnN0IGVsZW1lbnQgZnJvbSBpdGVyLT5ub2RlIGFuZCB0
aGUgbm9kZSBpcyBub3QKKyAgICAvLyBlbXB0eS4gVGhpcyBpcyBhIHNtYWxsIG9wdGltaXphdGlv
biBmb3IgdGhlIGNvbW1vbiBwYXR0ZXJuIG9mIGRlbGV0aW5nCisgICAgLy8gZnJvbSB0aGUgZnJv
bnQgb2YgdGhlIHRyZWUuCisgICAgaWYgKChyaWdodC0+Y291bnQoKSA+IGtNaW5Ob2RlVmFsdWVz
KSAmJgorICAgICAgICAoKGl0ZXItPm5vZGUtPmNvdW50KCkgPT0gMCkgfHwKKyAgICAgICAgIChp
dGVyLT5wb3NpdGlvbiA+IDApKSkgeworICAgICAgaW50IHRvX21vdmUgPSAocmlnaHQtPmNvdW50
KCkgLSBpdGVyLT5ub2RlLT5jb3VudCgpKSAvIDI7CisgICAgICB0b19tb3ZlID0gKHN0ZDo6bWlu
KSh0b19tb3ZlLCByaWdodC0+Y291bnQoKSAtIDEpOworICAgICAgaXRlci0+bm9kZS0+cmViYWxh
bmNlX3JpZ2h0X3RvX2xlZnQodG9fbW92ZSwgcmlnaHQsIG11dGFibGVfYWxsb2NhdG9yKCkpOwor
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICBpZiAoaXRlci0+bm9kZS0+cG9zaXRp
b24oKSA+IDApIHsKKyAgICAvLyBUcnkgcmViYWxhbmNpbmcgd2l0aCBvdXIgbGVmdCBzaWJsaW5n
LiBXZSBkb24ndCBwZXJmb3JtIHJlYmFsYW5jaW5nIGlmCisgICAgLy8gd2UgZGVsZXRlZCB0aGUg
bGFzdCBlbGVtZW50IGZyb20gaXRlci0+bm9kZSBhbmQgdGhlIG5vZGUgaXMgbm90CisgICAgLy8g
ZW1wdHkuIFRoaXMgaXMgYSBzbWFsbCBvcHRpbWl6YXRpb24gZm9yIHRoZSBjb21tb24gcGF0dGVy
biBvZiBkZWxldGluZworICAgIC8vIGZyb20gdGhlIGJhY2sgb2YgdGhlIHRyZWUuCisgICAgbm9k
ZV90eXBlICpsZWZ0ID0gcGFyZW50LT5jaGlsZChpdGVyLT5ub2RlLT5wb3NpdGlvbigpIC0gMSk7
CisgICAgaWYgKChsZWZ0LT5jb3VudCgpID4ga01pbk5vZGVWYWx1ZXMpICYmCisgICAgICAgICgo
aXRlci0+bm9kZS0+Y291bnQoKSA9PSAwKSB8fAorICAgICAgICAgKGl0ZXItPnBvc2l0aW9uIDwg
aXRlci0+bm9kZS0+Y291bnQoKSkpKSB7CisgICAgICBpbnQgdG9fbW92ZSA9IChsZWZ0LT5jb3Vu
dCgpIC0gaXRlci0+bm9kZS0+Y291bnQoKSkgLyAyOworICAgICAgdG9fbW92ZSA9IChzdGQ6Om1p
bikodG9fbW92ZSwgbGVmdC0+Y291bnQoKSAtIDEpOworICAgICAgbGVmdC0+cmViYWxhbmNlX2xl
ZnRfdG9fcmlnaHQodG9fbW92ZSwgaXRlci0+bm9kZSwgbXV0YWJsZV9hbGxvY2F0b3IoKSk7Cisg
ICAgICBpdGVyLT5wb3NpdGlvbiArPSB0b19tb3ZlOworICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordm9p
ZCBidHJlZTxQPjo6dHJ5X3NocmluaygpIHsKKyAgaWYgKHJvb3QoKS0+Y291bnQoKSA+IDApIHsK
KyAgICByZXR1cm47CisgIH0KKyAgLy8gRGVsZXRlZCB0aGUgbGFzdCBpdGVtIG9uIHRoZSByb290
IG5vZGUsIHNocmluayB0aGUgaGVpZ2h0IG9mIHRoZSB0cmVlLgorICBpZiAocm9vdCgpLT5sZWFm
KCkpIHsKKyAgICBhc3NlcnQoc2l6ZSgpID09IDApOworICAgIGRlbGV0ZV9sZWFmX25vZGUocm9v
dCgpKTsKKyAgICBtdXRhYmxlX3Jvb3QoKSA9IEVtcHR5Tm9kZSgpOworICAgIHJpZ2h0bW9zdF8g
PSBFbXB0eU5vZGUoKTsKKyAgfSBlbHNlIHsKKyAgICBub2RlX3R5cGUgKmNoaWxkID0gcm9vdCgp
LT5jaGlsZCgwKTsKKyAgICBjaGlsZC0+bWFrZV9yb290KCk7CisgICAgZGVsZXRlX2ludGVybmFs
X25vZGUocm9vdCgpKTsKKyAgICBtdXRhYmxlX3Jvb3QoKSA9IGNoaWxkOworICB9Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJUeXBlPgoraW5saW5l
IEl0ZXJUeXBlIGJ0cmVlPFA+OjppbnRlcm5hbF9sYXN0KEl0ZXJUeXBlIGl0ZXIpIHsKKyAgYXNz
ZXJ0KGl0ZXIubm9kZSAhPSBudWxscHRyKTsKKyAgd2hpbGUgKGl0ZXIucG9zaXRpb24gPT0gaXRl
ci5ub2RlLT5jb3VudCgpKSB7CisgICAgaXRlci5wb3NpdGlvbiA9IGl0ZXIubm9kZS0+cG9zaXRp
b24oKTsKKyAgICBpdGVyLm5vZGUgPSBpdGVyLm5vZGUtPnBhcmVudCgpOworICAgIGlmIChpdGVy
Lm5vZGUtPmxlYWYoKSkgeworICAgICAgaXRlci5ub2RlID0gbnVsbHB0cjsKKyAgICAgIGJyZWFr
OworICAgIH0KKyAgfQorICByZXR1cm4gaXRlcjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KK2lubGluZSBhdXRvIGJ0cmVlPFA+OjppbnRl
cm5hbF9lbXBsYWNlKGl0ZXJhdG9yIGl0ZXIsIEFyZ3MgJiYuLi4gYXJncykKKyAgICAtPiBpdGVy
YXRvciB7CisgIGlmICghaXRlci5ub2RlLT5sZWFmKCkpIHsKKyAgICAvLyBXZSBjYW4ndCBpbnNl
cnQgb24gYW4gaW50ZXJuYWwgbm9kZS4gSW5zdGVhZCwgd2UnbGwgaW5zZXJ0IGFmdGVyIHRoZQor
ICAgIC8vIHByZXZpb3VzIHZhbHVlIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gYmUgb24gYSBsZWFm
IG5vZGUuCisgICAgLS1pdGVyOworICAgICsraXRlci5wb3NpdGlvbjsKKyAgfQorICBjb25zdCBp
bnQgbWF4X2NvdW50ID0gaXRlci5ub2RlLT5tYXhfY291bnQoKTsKKyAgaWYgKGl0ZXIubm9kZS0+
Y291bnQoKSA9PSBtYXhfY291bnQpIHsKKyAgICAvLyBNYWtlIHJvb20gaW4gdGhlIGxlYWYgZm9y
IHRoZSBuZXcgaXRlbS4KKyAgICBpZiAobWF4X2NvdW50IDwga05vZGVWYWx1ZXMpIHsKKyAgICAg
IC8vIEluc2VydGlvbiBpbnRvIHRoZSByb290IHdoZXJlIHRoZSByb290IGlzIHNtYWxsZXIgdGhh
biB0aGUgZnVsbCBub2RlCisgICAgICAvLyBzaXplLiBTaW1wbHkgZ3JvdyB0aGUgc2l6ZSBvZiB0
aGUgcm9vdCBub2RlLgorICAgICAgYXNzZXJ0KGl0ZXIubm9kZSA9PSByb290KCkpOworICAgICAg
aXRlci5ub2RlID0KKyAgICAgICAgICBuZXdfbGVhZl9yb290X25vZGUoKHN0ZDo6bWluPGludD4p
KGtOb2RlVmFsdWVzLCAyICogbWF4X2NvdW50KSk7CisgICAgICBpdGVyLm5vZGUtPnN3YXAocm9v
dCgpLCBtdXRhYmxlX2FsbG9jYXRvcigpKTsKKyAgICAgIGRlbGV0ZV9sZWFmX25vZGUocm9vdCgp
KTsKKyAgICAgIG11dGFibGVfcm9vdCgpID0gaXRlci5ub2RlOworICAgICAgcmlnaHRtb3N0XyA9
IGl0ZXIubm9kZTsKKyAgICB9IGVsc2UgeworICAgICAgcmViYWxhbmNlX29yX3NwbGl0KCZpdGVy
KTsKKyAgICB9CisgIH0KKyAgaXRlci5ub2RlLT5lbXBsYWNlX3ZhbHVlKGl0ZXIucG9zaXRpb24s
IG11dGFibGVfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pOworICArK3NpemVfOworICByZXR1cm4gaXRlcjsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KK2lubGluZSBhdXRv
IGJ0cmVlPFA+OjppbnRlcm5hbF9sb2NhdGUoY29uc3QgSyAma2V5KSBjb25zdAorICAgIC0+IFNl
YXJjaFJlc3VsdDxpdGVyYXRvciwgaXNfa2V5X2NvbXBhcmVfdG86OnZhbHVlPiB7CisgIHJldHVy
biBpbnRlcm5hbF9sb2NhdGVfaW1wbChrZXksIGlzX2tleV9jb21wYXJlX3RvKCkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBLPgoraW5saW5lIGF1dG8g
YnRyZWU8UD46OmludGVybmFsX2xvY2F0ZV9pbXBsKAorICAgIGNvbnN0IEsgJmtleSwgc3RkOjpm
YWxzZV90eXBlIC8qIElzQ29tcGFyZVRvICovKSBjb25zdAorICAgIC0+IFNlYXJjaFJlc3VsdDxp
dGVyYXRvciwgZmFsc2U+IHsKKyAgaXRlcmF0b3IgaXRlcihjb25zdF9jYXN0PG5vZGVfdHlwZSAq
Pihyb290KCkpLCAwKTsKKyAgZm9yICg7OykgeworICAgIGl0ZXIucG9zaXRpb24gPSBpdGVyLm5v
ZGUtPmxvd2VyX2JvdW5kKGtleSwga2V5X2NvbXAoKSkudmFsdWU7CisgICAgLy8gTk9URTogd2Ug
ZG9uJ3QgbmVlZCB0byB3YWxrIGFsbCB0aGUgd2F5IGRvd24gdGhlIHRyZWUgaWYgdGhlIGtleXMg
YXJlCisgICAgLy8gZXF1YWwsIGJ1dCBkZXRlcm1pbmluZyBlcXVhbGl0eSB3b3VsZCByZXF1aXJl
IGRvaW5nIGFuIGV4dHJhIGNvbXBhcmlzb24KKyAgICAvLyBvbiBlYWNoIG5vZGUgb24gdGhlIHdh
eSBkb3duLCBhbmQgd2Ugd2lsbCBuZWVkIHRvIGdvIGFsbCB0aGUgd2F5IHRvIHRoZQorICAgIC8v
IGxlYWYgbm9kZSBpbiB0aGUgZXhwZWN0ZWQgY2FzZS4KKyAgICBpZiAoaXRlci5ub2RlLT5sZWFm
KCkpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBpdGVyLm5vZGUgPSBpdGVyLm5vZGUtPmNo
aWxkKGl0ZXIucG9zaXRpb24pOworICB9CisgIHJldHVybiB7aXRlcn07Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lIEs+CitpbmxpbmUgYXV0byBidHJlZTxQ
Pjo6aW50ZXJuYWxfbG9jYXRlX2ltcGwoCisgICAgY29uc3QgSyAma2V5LCBzdGQ6OnRydWVfdHlw
ZSAvKiBJc0NvbXBhcmVUbyAqLykgY29uc3QKKyAgICAtPiBTZWFyY2hSZXN1bHQ8aXRlcmF0b3Is
IHRydWU+IHsKKyAgaXRlcmF0b3IgaXRlcihjb25zdF9jYXN0PG5vZGVfdHlwZSAqPihyb290KCkp
LCAwKTsKKyAgZm9yICg7OykgeworICAgIFNlYXJjaFJlc3VsdDxpbnQsIHRydWU+IHJlcyA9IGl0
ZXIubm9kZS0+bG93ZXJfYm91bmQoa2V5LCBrZXlfY29tcCgpKTsKKyAgICBpdGVyLnBvc2l0aW9u
ID0gcmVzLnZhbHVlOworICAgIGlmIChyZXMubWF0Y2ggPT0gTWF0Y2hLaW5kOjprRXEpIHsKKyAg
ICAgIHJldHVybiB7aXRlciwgTWF0Y2hLaW5kOjprRXF9OworICAgIH0KKyAgICBpZiAoaXRlci5u
b2RlLT5sZWFmKCkpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBpdGVyLm5vZGUgPSBpdGVy
Lm5vZGUtPmNoaWxkKGl0ZXIucG9zaXRpb24pOworICB9CisgIHJldHVybiB7aXRlciwgTWF0Y2hL
aW5kOjprTmV9OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBLPgorYXV0byBidHJlZTxQPjo6aW50ZXJuYWxfbG93ZXJfYm91bmQoY29uc3QgSyAma2V5KSBj
b25zdCAtPiBpdGVyYXRvciB7CisgIGl0ZXJhdG9yIGl0ZXIoY29uc3RfY2FzdDxub2RlX3R5cGUg
Kj4ocm9vdCgpKSwgMCk7CisgIGZvciAoOzspIHsKKyAgICBpdGVyLnBvc2l0aW9uID0gaXRlci5u
b2RlLT5sb3dlcl9ib3VuZChrZXksIGtleV9jb21wKCkpLnZhbHVlOworICAgIGlmIChpdGVyLm5v
ZGUtPmxlYWYoKSkgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIGl0ZXIubm9kZSA9IGl0ZXIu
bm9kZS0+Y2hpbGQoaXRlci5wb3NpdGlvbik7CisgIH0KKyAgcmV0dXJuIGludGVybmFsX2xhc3Qo
aXRlcik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lIEs+
CithdXRvIGJ0cmVlPFA+OjppbnRlcm5hbF91cHBlcl9ib3VuZChjb25zdCBLICZrZXkpIGNvbnN0
IC0+IGl0ZXJhdG9yIHsKKyAgaXRlcmF0b3IgaXRlcihjb25zdF9jYXN0PG5vZGVfdHlwZSAqPihy
b290KCkpLCAwKTsKKyAgZm9yICg7OykgeworICAgIGl0ZXIucG9zaXRpb24gPSBpdGVyLm5vZGUt
PnVwcGVyX2JvdW5kKGtleSwga2V5X2NvbXAoKSk7CisgICAgaWYgKGl0ZXIubm9kZS0+bGVhZigp
KSB7CisgICAgICBicmVhazsKKyAgICB9CisgICAgaXRlci5ub2RlID0gaXRlci5ub2RlLT5jaGls
ZChpdGVyLnBvc2l0aW9uKTsKKyAgfQorICByZXR1cm4gaW50ZXJuYWxfbGFzdChpdGVyKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KK2F1dG8gYnRy
ZWU8UD46OmludGVybmFsX2ZpbmQoY29uc3QgSyAma2V5KSBjb25zdCAtPiBpdGVyYXRvciB7Cisg
IGF1dG8gcmVzID0gaW50ZXJuYWxfbG9jYXRlKGtleSk7CisgIGlmIChyZXMuSGFzTWF0Y2goKSkg
eworICAgIGlmIChyZXMuSXNFcSgpKSB7CisgICAgICByZXR1cm4gcmVzLnZhbHVlOworICAgIH0K
KyAgfSBlbHNlIHsKKyAgICBjb25zdCBpdGVyYXRvciBpdGVyID0gaW50ZXJuYWxfbGFzdChyZXMu
dmFsdWUpOworICAgIGlmIChpdGVyLm5vZGUgIT0gbnVsbHB0ciAmJiAhY29tcGFyZV9rZXlzKGtl
eSwgaXRlci5rZXkoKSkpIHsKKyAgICAgIHJldHVybiBpdGVyOworICAgIH0KKyAgfQorICByZXR1
cm4ge251bGxwdHIsIDB9OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWU8
UD46OmludGVybmFsX2NsZWFyKG5vZGVfdHlwZSAqbm9kZSkgeworICBpZiAoIW5vZGUtPmxlYWYo
KSkgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG5vZGUtPmNvdW50KCk7ICsraSkgeworICAg
ICAgaW50ZXJuYWxfY2xlYXIobm9kZS0+Y2hpbGQoaSkpOworICAgIH0KKyAgICBkZWxldGVfaW50
ZXJuYWxfbm9kZShub2RlKTsKKyAgfSBlbHNlIHsKKyAgICBkZWxldGVfbGVhZl9ub2RlKG5vZGUp
OworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgoraW50IGJ0cmVlPFA+OjppbnRlcm5h
bF92ZXJpZnkoCisgICAgY29uc3Qgbm9kZV90eXBlICpub2RlLCBjb25zdCBrZXlfdHlwZSAqbG8s
IGNvbnN0IGtleV90eXBlICpoaSkgY29uc3QgeworICBhc3NlcnQobm9kZS0+Y291bnQoKSA+IDAp
OworICBhc3NlcnQobm9kZS0+Y291bnQoKSA8PSBub2RlLT5tYXhfY291bnQoKSk7CisgIGlmIChs
bykgeworICAgIGFzc2VydCghY29tcGFyZV9rZXlzKG5vZGUtPmtleSgwKSwgKmxvKSk7CisgIH0K
KyAgaWYgKGhpKSB7CisgICAgYXNzZXJ0KCFjb21wYXJlX2tleXMoKmhpLCBub2RlLT5rZXkobm9k
ZS0+Y291bnQoKSAtIDEpKSk7CisgIH0KKyAgZm9yIChpbnQgaSA9IDE7IGkgPCBub2RlLT5jb3Vu
dCgpOyArK2kpIHsKKyAgICBhc3NlcnQoIWNvbXBhcmVfa2V5cyhub2RlLT5rZXkoaSksIG5vZGUt
PmtleShpIC0gMSkpKTsKKyAgfQorICBpbnQgY291bnQgPSBub2RlLT5jb3VudCgpOworICBpZiAo
IW5vZGUtPmxlYWYoKSkgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG5vZGUtPmNvdW50KCk7
ICsraSkgeworICAgICAgYXNzZXJ0KG5vZGUtPmNoaWxkKGkpICE9IG51bGxwdHIpOworICAgICAg
YXNzZXJ0KG5vZGUtPmNoaWxkKGkpLT5wYXJlbnQoKSA9PSBub2RlKTsKKyAgICAgIGFzc2VydChu
b2RlLT5jaGlsZChpKS0+cG9zaXRpb24oKSA9PSBpKTsKKyAgICAgIGNvdW50ICs9IGludGVybmFs
X3ZlcmlmeSgKKyAgICAgICAgICBub2RlLT5jaGlsZChpKSwKKyAgICAgICAgICAoaSA9PSAwKSA/
IGxvIDogJm5vZGUtPmtleShpIC0gMSksCisgICAgICAgICAgKGkgPT0gbm9kZS0+Y291bnQoKSkg
PyBoaSA6ICZub2RlLT5rZXkoaSkpOworICAgIH0KKyAgfQorICByZXR1cm4gY291bnQ7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNs
CisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQlRSRUVfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9idHJlZV9jb250YWluZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9idHJlZV9jb250YWluZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjY4NjFkNWJi
YjE4OTNiMmFiOWI5YTgxYTE1Nzk1Y2NhYWIwZTZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL2J0cmVlX2NvbnRhaW5lci5oCkBAIC0wLDAgKzEsNjA5IEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NP
TlRBSU5FUl9JTlRFUk5BTF9CVFJFRV9DT05UQUlORVJfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlO
RVJfSU5URVJOQUxfQlRSRUVfQ09OVEFJTkVSX0hfCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRl
IDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Rocm93X2RlbGVnYXRl
LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvYnRyZWUuaCIgIC8vIElXWVUg
cHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21tb24u
aCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKworbmFtZXNwYWNlIGFic2wg
eworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKKy8vIEEgY29tbW9uIGJhc2UgY2xh
c3MgZm9yIGJ0cmVlX3NldCwgYnRyZWVfbWFwLCBidHJlZV9tdWx0aXNldCwgYW5kCisvLyBidHJl
ZV9tdWx0aW1hcC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUcmVlPgorY2xhc3MgYnRyZWVfY29udGFp
bmVyIHsKKyAgdXNpbmcgcGFyYW1zX3R5cGUgPSB0eXBlbmFtZSBUcmVlOjpwYXJhbXNfdHlwZTsK
KworIHByb3RlY3RlZDoKKyAgLy8gQWxpYXMgdXNlZCBmb3IgaGV0ZXJvZ2VuZW91cyBsb29rdXAg
ZnVuY3Rpb25zLgorICAvLyBga2V5X2FyZzxLPmAgZXZhbHVhdGVzIHRvIGBLYCB3aGVuIHRoZSBm
dW5jdG9ycyBhcmUgdHJhbnNwYXJlbnQgYW5kIHRvCisgIC8vIGBrZXlfdHlwZWAgb3RoZXJ3aXNl
LiBJdCBwZXJtaXRzIHRlbXBsYXRlIGFyZ3VtZW50IGRlZHVjdGlvbiBvbiBgS2AgZm9yIHRoZQor
ICAvLyB0cmFuc3BhcmVudCBjYXNlLgorICB0ZW1wbGF0ZSA8Y2xhc3MgSz4KKyAgdXNpbmcga2V5
X2FyZyA9CisgICAgICB0eXBlbmFtZSBLZXlBcmc8SXNUcmFuc3BhcmVudDx0eXBlbmFtZSBUcmVl
OjprZXlfY29tcGFyZT46OnZhbHVlPjo6CisgICAgICAgICAgdGVtcGxhdGUgdHlwZTxLLCB0eXBl
bmFtZSBUcmVlOjprZXlfdHlwZT47CisKKyBwdWJsaWM6CisgIHVzaW5nIGtleV90eXBlID0gdHlw
ZW5hbWUgVHJlZTo6a2V5X3R5cGU7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBUcmVl
Ojp2YWx1ZV90eXBlOworICB1c2luZyBzaXplX3R5cGUgPSB0eXBlbmFtZSBUcmVlOjpzaXplX3R5
cGU7CisgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHR5cGVuYW1lIFRyZWU6OmRpZmZlcmVuY2Vf
dHlwZTsKKyAgdXNpbmcga2V5X2NvbXBhcmUgPSB0eXBlbmFtZSBUcmVlOjprZXlfY29tcGFyZTsK
KyAgdXNpbmcgdmFsdWVfY29tcGFyZSA9IHR5cGVuYW1lIFRyZWU6OnZhbHVlX2NvbXBhcmU7Cisg
IHVzaW5nIGFsbG9jYXRvcl90eXBlID0gdHlwZW5hbWUgVHJlZTo6YWxsb2NhdG9yX3R5cGU7Cisg
IHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVuYW1lIFRyZWU6OnJlZmVyZW5jZTsKKyAgdXNpbmcgY29u
c3RfcmVmZXJlbmNlID0gdHlwZW5hbWUgVHJlZTo6Y29uc3RfcmVmZXJlbmNlOworICB1c2luZyBw
b2ludGVyID0gdHlwZW5hbWUgVHJlZTo6cG9pbnRlcjsKKyAgdXNpbmcgY29uc3RfcG9pbnRlciA9
IHR5cGVuYW1lIFRyZWU6OmNvbnN0X3BvaW50ZXI7CisgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5h
bWUgVHJlZTo6aXRlcmF0b3I7CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gdHlwZW5hbWUgVHJl
ZTo6Y29uc3RfaXRlcmF0b3I7CisgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSB0eXBlbmFtZSBU
cmVlOjpyZXZlcnNlX2l0ZXJhdG9yOworICB1c2luZyBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yID0g
dHlwZW5hbWUgVHJlZTo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKKyAgdXNpbmcgbm9kZV90eXBl
ID0gdHlwZW5hbWUgVHJlZTo6bm9kZV9oYW5kbGVfdHlwZTsKKworICAvLyBDb25zdHJ1Y3RvcnMv
YXNzaWdubWVudHMuCisgIGJ0cmVlX2NvbnRhaW5lcigpIDogdHJlZV8oa2V5X2NvbXBhcmUoKSwg
YWxsb2NhdG9yX3R5cGUoKSkge30KKyAgZXhwbGljaXQgYnRyZWVfY29udGFpbmVyKGNvbnN0IGtl
eV9jb21wYXJlICZjb21wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsb2Nh
dG9yX3R5cGUgJmFsbG9jID0gYWxsb2NhdG9yX3R5cGUoKSkKKyAgICAgIDogdHJlZV8oY29tcCwg
YWxsb2MpIHt9CisgIGJ0cmVlX2NvbnRhaW5lcihjb25zdCBidHJlZV9jb250YWluZXIgJngpID0g
ZGVmYXVsdDsKKyAgYnRyZWVfY29udGFpbmVyKGJ0cmVlX2NvbnRhaW5lciAmJngpIG5vZXhjZXB0
ID0gZGVmYXVsdDsKKyAgYnRyZWVfY29udGFpbmVyICZvcGVyYXRvcj0oY29uc3QgYnRyZWVfY29u
dGFpbmVyICZ4KSA9IGRlZmF1bHQ7CisgIGJ0cmVlX2NvbnRhaW5lciAmb3BlcmF0b3I9KGJ0cmVl
X2NvbnRhaW5lciAmJngpIG5vZXhjZXB0KAorICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfYXNz
aWduYWJsZTxUcmVlPjo6dmFsdWUpID0gZGVmYXVsdDsKKworICAvLyBJdGVyYXRvciByb3V0aW5l
cy4KKyAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiB0cmVlXy5iZWdpbigpOyB9CisgIGNvbnN0
X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gdHJlZV8uYmVnaW4oKTsgfQorICBjb25z
dF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCB7IHJldHVybiB0cmVlXy5iZWdpbigpOyB9CisgIGl0
ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIHRyZWVfLmVuZCgpOyB9CisgIGNvbnN0X2l0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLmVuZCgpOyB9CisgIGNvbnN0X2l0ZXJhdG9yIGNlbmQo
KSBjb25zdCB7IHJldHVybiB0cmVlXy5lbmQoKTsgfQorICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdp
bigpIHsgcmV0dXJuIHRyZWVfLnJiZWdpbigpOyB9CisgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3Ig
cmJlZ2luKCkgY29uc3QgeyByZXR1cm4gdHJlZV8ucmJlZ2luKCk7IH0KKyAgY29uc3RfcmV2ZXJz
ZV9pdGVyYXRvciBjcmJlZ2luKCkgY29uc3QgeyByZXR1cm4gdHJlZV8ucmJlZ2luKCk7IH0KKyAg
cmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgeyByZXR1cm4gdHJlZV8ucmVuZCgpOyB9CisgIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLnJlbmQoKTsgfQor
ICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyZW5kKCkgY29uc3QgeyByZXR1cm4gdHJlZV8ucmVu
ZCgpOyB9CisKKyAgLy8gTG9va3VwIHJvdXRpbmVzLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSyA9
IGtleV90eXBlPgorICBpdGVyYXRvciBmaW5kKGNvbnN0IGtleV9hcmc8Sz4gJmtleSkgeworICAg
IHJldHVybiB0cmVlXy5maW5kKGtleSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBr
ZXlfdHlwZT4KKyAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfYXJnPEs+ICZrZXkpIGNv
bnN0IHsKKyAgICByZXR1cm4gdHJlZV8uZmluZChrZXkpOworICB9CisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBLID0ga2V5X3R5cGU+CisgIGJvb2wgY29udGFpbnMoY29uc3Qga2V5X2FyZzxLPiAma2V5
KSBjb25zdCB7CisgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBlbmQoKTsKKyAgfQorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSyA9IGtleV90eXBlPgorICBpdGVyYXRvciBsb3dlcl9ib3VuZChjb25zdCBr
ZXlfYXJnPEs+ICZrZXkpIHsKKyAgICByZXR1cm4gdHJlZV8ubG93ZXJfYm91bmQoa2V5KTsKKyAg
fQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSyA9IGtleV90eXBlPgorICBjb25zdF9pdGVyYXRvciBs
b3dlcl9ib3VuZChjb25zdCBrZXlfYXJnPEs+ICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gdHJl
ZV8ubG93ZXJfYm91bmQoa2V5KTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSyA9IGtleV90
eXBlPgorICBpdGVyYXRvciB1cHBlcl9ib3VuZChjb25zdCBrZXlfYXJnPEs+ICZrZXkpIHsKKyAg
ICByZXR1cm4gdHJlZV8udXBwZXJfYm91bmQoa2V5KTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSyA9IGtleV90eXBlPgorICBjb25zdF9pdGVyYXRvciB1cHBlcl9ib3VuZChjb25zdCBrZXlf
YXJnPEs+ICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gdHJlZV8udXBwZXJfYm91bmQoa2V5KTsK
KyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSyA9IGtleV90eXBlPgorICBzdGQ6OnBhaXI8aXRl
cmF0b3IsIGl0ZXJhdG9yPiBlcXVhbF9yYW5nZShjb25zdCBrZXlfYXJnPEs+ICZrZXkpIHsKKyAg
ICByZXR1cm4gdHJlZV8uZXF1YWxfcmFuZ2Uoa2V5KTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSyA9IGtleV90eXBlPgorICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJh
dG9yPiBlcXVhbF9yYW5nZSgKKyAgICAgIGNvbnN0IGtleV9hcmc8Sz4gJmtleSkgY29uc3Qgewor
ICAgIHJldHVybiB0cmVlXy5lcXVhbF9yYW5nZShrZXkpOworICB9CisKKyAgLy8gRGVsZXRpb24g
cm91dGluZXMuIE5vdGUgdGhhdCB0aGVyZSBpcyBhbHNvIGEgZGVsZXRpb24gcm91dGluZSB0aGF0
IGlzCisgIC8vIHNwZWNpZmljIHRvIGJ0cmVlX3NldF9jb250YWluZXIvYnRyZWVfbXVsdGlzZXRf
Y29udGFpbmVyLgorCisgIC8vIEVyYXNlIHRoZSBzcGVjaWZpZWQgaXRlcmF0b3IgZnJvbSB0aGUg
YnRyZWUuIFRoZSBpdGVyYXRvciBtdXN0IGJlIHZhbGlkCisgIC8vIChpLmUuIG5vdCBlcXVhbCB0
byBlbmQoKSkuICBSZXR1cm4gYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5vZGUgYWZ0ZXIK
KyAgLy8gdGhlIG9uZSB0aGF0IHdhcyBlcmFzZWQgKG9yIGVuZCgpIGlmIG5vbmUgZXhpc3RzKS4K
KyAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgaXRlcikgeyByZXR1cm4gdHJlZV8uZXJh
c2UoaXRlcmF0b3IoaXRlcikpOyB9CisgIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIGl0ZXIpIHsg
cmV0dXJuIHRyZWVfLmVyYXNlKGl0ZXIpOyB9CisgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJh
dG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KSB7CisgICAgcmV0dXJuIHRyZWVfLmVyYXNl
KGl0ZXJhdG9yKGZpcnN0KSwgaXRlcmF0b3IobGFzdCkpLnNlY29uZDsKKyAgfQorCisgIC8vIEV4
dHJhY3Qgcm91dGluZXMuCisgIG5vZGVfdHlwZSBleHRyYWN0KGl0ZXJhdG9yIHBvc2l0aW9uKSB7
CisgICAgLy8gVXNlIE1vdmUgaW5zdGVhZCBvZiBUcmFuc2ZlciwgYmVjYXVzZSB0aGUgcmViYWxh
bmNpbmcgY29kZSBleHBlY3RzIHRvCisgICAgLy8gaGF2ZSBhIHZhbGlkIG9iamVjdCB0byBzY3Jp
YmJsZSBtZXRhZGF0YSBiaXRzIG9uIHRvcCBvZi4KKyAgICBhdXRvIG5vZGUgPSBDb21tb25BY2Nl
c3M6Ok1vdmU8bm9kZV90eXBlPihnZXRfYWxsb2NhdG9yKCksIHBvc2l0aW9uLnNsb3QoKSk7Cisg
ICAgZXJhc2UocG9zaXRpb24pOworICAgIHJldHVybiBub2RlOworICB9CisgIG5vZGVfdHlwZSBl
eHRyYWN0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKSB7CisgICAgcmV0dXJuIGV4dHJhY3QoaXRl
cmF0b3IocG9zaXRpb24pKTsKKyAgfQorCisgcHVibGljOgorICAvLyBVdGlsaXR5IHJvdXRpbmVz
LgorICB2b2lkIGNsZWFyKCkgeyB0cmVlXy5jbGVhcigpOyB9CisgIHZvaWQgc3dhcChidHJlZV9j
b250YWluZXIgJngpIHsgdHJlZV8uc3dhcCh4LnRyZWVfKTsgfQorICB2b2lkIHZlcmlmeSgpIGNv
bnN0IHsgdHJlZV8udmVyaWZ5KCk7IH0KKworICAvLyBTaXplIHJvdXRpbmVzLgorICBzaXplX3R5
cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLnNpemUoKTsgfQorICBzaXplX3R5cGUgbWF4
X3NpemUoKSBjb25zdCB7IHJldHVybiB0cmVlXy5tYXhfc2l6ZSgpOyB9CisgIGJvb2wgZW1wdHko
KSBjb25zdCB7IHJldHVybiB0cmVlXy5lbXB0eSgpOyB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBidHJlZV9jb250YWluZXIgJngsIGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeSkg
eworICAgIGlmICh4LnNpemUoKSAhPSB5LnNpemUoKSkgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBzdGQ6OmVxdWFsKHguYmVnaW4oKSwgeC5lbmQoKSwgeS5iZWdpbigpKTsKKyAgfQorCisgIGZy
aWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgYnRyZWVfY29udGFpbmVyICZ4LCBjb25zdCBidHJl
ZV9jb250YWluZXIgJnkpIHsKKyAgICByZXR1cm4gISh4ID09IHkpOworICB9CisKKyAgZnJpZW5k
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeCwgY29uc3QgYnRyZWVfY29u
dGFpbmVyICZ5KSB7CisgICAgcmV0dXJuIHN0ZDo6bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoeC5i
ZWdpbigpLCB4LmVuZCgpLCB5LmJlZ2luKCksIHkuZW5kKCkpOworICB9CisKKyAgZnJpZW5kIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeCwgY29uc3QgYnRyZWVfY29udGFp
bmVyICZ5KSB7CisgICAgcmV0dXJuIHkgPCB4OworICB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBidHJlZV9jb250YWluZXIgJngsIGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeSkg
eworICAgIHJldHVybiAhKHkgPCB4KTsKKyAgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPj0o
Y29uc3QgYnRyZWVfY29udGFpbmVyICZ4LCBjb25zdCBidHJlZV9jb250YWluZXIgJnkpIHsKKyAg
ICByZXR1cm4gISh4IDwgeSk7CisgIH0KKworICAvLyBUaGUgYWxsb2NhdG9yIHVzZWQgYnkgdGhl
IGJ0cmVlLgorICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4g
dHJlZV8uZ2V0X2FsbG9jYXRvcigpOyB9CisKKyAgLy8gVGhlIGtleSBjb21wYXJhdG9yIHVzZWQg
YnkgdGhlIGJ0cmVlLgorICBrZXlfY29tcGFyZSBrZXlfY29tcCgpIGNvbnN0IHsgcmV0dXJuIHRy
ZWVfLmtleV9jb21wKCk7IH0KKyAgdmFsdWVfY29tcGFyZSB2YWx1ZV9jb21wKCkgY29uc3QgeyBy
ZXR1cm4gdHJlZV8udmFsdWVfY29tcCgpOyB9CisKKyAgLy8gU3VwcG9ydCBhYnNsOjpIYXNoLgor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RhdGU+CisgIGZyaWVuZCBTdGF0ZSBBYnNsSGFzaFZhbHVl
KFN0YXRlIGgsIGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmYikgeworICAgIGZvciAoY29uc3QgYXV0
byAmdiA6IGIpIHsKKyAgICAgIGggPSBTdGF0ZTo6Y29tYmluZShzdGQ6Om1vdmUoaCksIHYpOwor
ICAgIH0KKyAgICByZXR1cm4gU3RhdGU6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBiLnNpemUoKSk7
CisgIH0KKworIHByb3RlY3RlZDoKKyAgVHJlZSB0cmVlXzsKK307CisKKy8vIEEgY29tbW9uIGJh
c2UgY2xhc3MgZm9yIGJ0cmVlX3NldCBhbmQgYnRyZWVfbWFwLgordGVtcGxhdGUgPHR5cGVuYW1l
IFRyZWU+CitjbGFzcyBidHJlZV9zZXRfY29udGFpbmVyIDogcHVibGljIGJ0cmVlX2NvbnRhaW5l
cjxUcmVlPiB7CisgIHVzaW5nIHN1cGVyX3R5cGUgPSBidHJlZV9jb250YWluZXI8VHJlZT47Cisg
IHVzaW5nIHBhcmFtc190eXBlID0gdHlwZW5hbWUgVHJlZTo6cGFyYW1zX3R5cGU7CisgIHVzaW5n
IGluaXRfdHlwZSA9IHR5cGVuYW1lIHBhcmFtc190eXBlOjppbml0X3R5cGU7CisgIHVzaW5nIGlz
X2tleV9jb21wYXJlX3RvID0gdHlwZW5hbWUgcGFyYW1zX3R5cGU6OmlzX2tleV9jb21wYXJlX3Rv
OworICBmcmllbmQgY2xhc3MgQnRyZWVOb2RlUGVlcjsKKworIHByb3RlY3RlZDoKKyAgdGVtcGxh
dGUgPGNsYXNzIEs+CisgIHVzaW5nIGtleV9hcmcgPSB0eXBlbmFtZSBzdXBlcl90eXBlOjp0ZW1w
bGF0ZSBrZXlfYXJnPEs+OworCisgcHVibGljOgorICB1c2luZyBrZXlfdHlwZSA9IHR5cGVuYW1l
IFRyZWU6OmtleV90eXBlOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgVHJlZTo6dmFs
dWVfdHlwZTsKKyAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgVHJlZTo6c2l6ZV90eXBlOwor
ICB1c2luZyBrZXlfY29tcGFyZSA9IHR5cGVuYW1lIFRyZWU6OmtleV9jb21wYXJlOworICB1c2lu
ZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFRyZWU6OmFsbG9jYXRvcl90eXBlOworICB1c2lu
ZyBpdGVyYXRvciA9IHR5cGVuYW1lIFRyZWU6Oml0ZXJhdG9yOworICB1c2luZyBjb25zdF9pdGVy
YXRvciA9IHR5cGVuYW1lIFRyZWU6OmNvbnN0X2l0ZXJhdG9yOworICB1c2luZyBub2RlX3R5cGUg
PSB0eXBlbmFtZSBzdXBlcl90eXBlOjpub2RlX3R5cGU7CisgIHVzaW5nIGluc2VydF9yZXR1cm5f
dHlwZSA9IEluc2VydFJldHVyblR5cGU8aXRlcmF0b3IsIG5vZGVfdHlwZT47CisKKyAgLy8gSW5o
ZXJpdCBjb25zdHJ1Y3RvcnMuCisgIHVzaW5nIHN1cGVyX3R5cGU6OnN1cGVyX3R5cGU7CisgIGJ0
cmVlX3NldF9jb250YWluZXIoKSB7fQorCisgIC8vIFJhbmdlIGNvbnN0cnVjdG9yLgorICB0ZW1w
bGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KKyAgYnRyZWVfc2V0X2NvbnRhaW5lcihJbnB1dEl0
ZXJhdG9yIGIsIElucHV0SXRlcmF0b3IgZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBr
ZXlfY29tcGFyZSAmY29tcCA9IGtleV9jb21wYXJlKCksCisgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgYWxsb2NhdG9yX3R5cGUgJmFsbG9jID0gYWxsb2NhdG9yX3R5cGUoKSkKKyAgICAgIDog
c3VwZXJfdHlwZShjb21wLCBhbGxvYykgeworICAgIGluc2VydChiLCBlKTsKKyAgfQorCisgIC8v
IEluaXRpYWxpemVyIGxpc3QgY29uc3RydWN0b3IuCisgIGJ0cmVlX3NldF9jb250YWluZXIoc3Rk
Ojppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaW5pdCwKKyAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBrZXlfY29tcGFyZSAmY29tcCA9IGtleV9jb21wYXJlKCksCisgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmFsbG9jID0gYWxsb2NhdG9yX3R5cGUoKSkK
KyAgICAgIDogYnRyZWVfc2V0X2NvbnRhaW5lcihpbml0LmJlZ2luKCksIGluaXQuZW5kKCksIGNv
bXAsIGFsbG9jKSB7fQorCisgIC8vIExvb2t1cCByb3V0aW5lcy4KKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEsgPSBrZXlfdHlwZT4KKyAgc2l6ZV90eXBlIGNvdW50KGNvbnN0IGtleV9hcmc8Sz4gJmtl
eSkgY29uc3QgeworICAgIHJldHVybiB0aGlzLT50cmVlXy5jb3VudF91bmlxdWUoa2V5KTsKKyAg
fQorCisgIC8vIEluc2VydGlvbiByb3V0aW5lcy4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29s
PiBpbnNlcnQoY29uc3QgdmFsdWVfdHlwZSAmeCkgeworICAgIHJldHVybiB0aGlzLT50cmVlXy5p
bnNlcnRfdW5pcXVlKHBhcmFtc190eXBlOjprZXkoeCksIHgpOworICB9CisgIHN0ZDo6cGFpcjxp
dGVyYXRvciwgYm9vbD4gaW5zZXJ0KHZhbHVlX3R5cGUgJiZ4KSB7CisgICAgcmV0dXJuIHRoaXMt
PnRyZWVfLmluc2VydF91bmlxdWUocGFyYW1zX3R5cGU6OmtleSh4KSwgc3RkOjptb3ZlKHgpKTsK
KyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9y
LCBib29sPiBlbXBsYWNlKEFyZ3MgJiYuLi4gYXJncykgeworICAgIGluaXRfdHlwZSB2KHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgcmV0dXJuIHRoaXMtPnRyZWVfLmluc2VydF91
bmlxdWUocGFyYW1zX3R5cGU6OmtleSh2KSwgc3RkOjptb3ZlKHYpKTsKKyAgfQorICBpdGVyYXRv
ciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIGNvbnN0IHZhbHVlX3R5cGUgJngpIHsK
KyAgICByZXR1cm4gdGhpcy0+dHJlZV8KKyAgICAgICAgLmluc2VydF9oaW50X3VuaXF1ZShpdGVy
YXRvcihwb3NpdGlvbiksIHBhcmFtc190eXBlOjprZXkoeCksIHgpCisgICAgICAgIC5maXJzdDsK
KyAgfQorICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIHZhbHVlX3R5
cGUgJiZ4KSB7CisgICAgcmV0dXJuIHRoaXMtPnRyZWVfCisgICAgICAgIC5pbnNlcnRfaGludF91
bmlxdWUoaXRlcmF0b3IocG9zaXRpb24pLCBwYXJhbXNfdHlwZTo6a2V5KHgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh4KSkKKyAgICAgICAgLmZpcnN0OworICB9Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29u
c3RfaXRlcmF0b3IgcG9zaXRpb24sIEFyZ3MgJiYuLi4gYXJncykgeworICAgIGluaXRfdHlwZSB2
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgcmV0dXJuIHRoaXMtPnRyZWVfCisg
ICAgICAgIC5pbnNlcnRfaGludF91bmlxdWUoaXRlcmF0b3IocG9zaXRpb24pLCBwYXJhbXNfdHlw
ZTo6a2V5KHYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh2KSkKKyAg
ICAgICAgLmZpcnN0OworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgor
ICB2b2lkIGluc2VydChJbnB1dEl0ZXJhdG9yIGIsIElucHV0SXRlcmF0b3IgZSkgeworICAgIHRo
aXMtPnRyZWVfLmluc2VydF9pdGVyYXRvcl91bmlxdWUoYiwgZSk7CisgIH0KKyAgdm9pZCBpbnNl
cnQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaW5pdCkgeworICAgIHRoaXMtPnRy
ZWVfLmluc2VydF9pdGVyYXRvcl91bmlxdWUoaW5pdC5iZWdpbigpLCBpbml0LmVuZCgpKTsKKyAg
fQorICBpbnNlcnRfcmV0dXJuX3R5cGUgaW5zZXJ0KG5vZGVfdHlwZSAmJm5vZGUpIHsKKyAgICBp
ZiAoIW5vZGUpIHJldHVybiB7dGhpcy0+ZW5kKCksIGZhbHNlLCBub2RlX3R5cGUoKX07CisgICAg
c3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiByZXMgPQorICAgICAgICBpbnNlcnQoc3RkOjptb3Zl
KHBhcmFtc190eXBlOjplbGVtZW50KENvbW1vbkFjY2Vzczo6R2V0U2xvdChub2RlKSkpKTsKKyAg
ICBpZiAocmVzLnNlY29uZCkgeworICAgICAgQ29tbW9uQWNjZXNzOjpSZXNldCgmbm9kZSk7Cisg
ICAgICByZXR1cm4ge3Jlcy5maXJzdCwgdHJ1ZSwgbm9kZV90eXBlKCl9OworICAgIH0gZWxzZSB7
CisgICAgICByZXR1cm4ge3Jlcy5maXJzdCwgZmFsc2UsIHN0ZDo6bW92ZShub2RlKX07CisgICAg
fQorICB9CisgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBub2RlX3R5cGUg
JiZub2RlKSB7CisgICAgaWYgKCFub2RlKSByZXR1cm4gdGhpcy0+ZW5kKCk7CisgICAgc3RkOjpw
YWlyPGl0ZXJhdG9yLCBib29sPiByZXMgPSB0aGlzLT50cmVlXy5pbnNlcnRfaGludF91bmlxdWUo
CisgICAgICAgIGl0ZXJhdG9yKGhpbnQpLCBwYXJhbXNfdHlwZTo6a2V5KENvbW1vbkFjY2Vzczo6
R2V0U2xvdChub2RlKSksCisgICAgICAgIHN0ZDo6bW92ZShwYXJhbXNfdHlwZTo6ZWxlbWVudChD
b21tb25BY2Nlc3M6OkdldFNsb3Qobm9kZSkpKSk7CisgICAgaWYgKHJlcy5zZWNvbmQpIENvbW1v
bkFjY2Vzczo6UmVzZXQoJm5vZGUpOworICAgIHJldHVybiByZXMuZmlyc3Q7CisgIH0KKworICAv
LyBEZWxldGlvbiByb3V0aW5lcy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4K
KyAgc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtleV9hcmc8Sz4gJmtleSkgeworICAgIHJldHVybiB0
aGlzLT50cmVlXy5lcmFzZV91bmlxdWUoa2V5KTsKKyAgfQorICB1c2luZyBzdXBlcl90eXBlOjpl
cmFzZTsKKworICAvLyBOb2RlIGV4dHJhY3Rpb24gcm91dGluZXMuCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBLID0ga2V5X3R5cGU+CisgIG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0IGtleV9hcmc8Sz4g
JmtleSkgeworICAgIGF1dG8gaXQgPSBmaW5kKGtleSk7CisgICAgcmV0dXJuIGl0ID09IHRoaXMt
PmVuZCgpID8gbm9kZV90eXBlKCkgOiBleHRyYWN0KGl0KTsKKyAgfQorICB1c2luZyBzdXBlcl90
eXBlOjpleHRyYWN0OworCisgIC8vIE1lcmdlIHJvdXRpbmVzLgorICAvLyBNb3ZlcyBlbGVtZW50
cyBmcm9tIGBzcmNgIGludG8gYHRoaXNgLiBJZiB0aGUgZWxlbWVudCBhbHJlYWR5IGV4aXN0cyBp
bgorICAvLyBgdGhpc2AsIGl0IGlzIGxlZnQgdW5tb2RpZmllZCBpbiBgc3JjYC4KKyAgdGVtcGxh
dGUgPAorICAgICAgdHlwZW5hbWUgVCwKKyAgICAgIHR5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90
PAorICAgICAgICAgIGFic2w6OmNvbmp1bmN0aW9uPAorICAgICAgICAgICAgICBzdGQ6OmlzX3Nh
bWU8dmFsdWVfdHlwZSwgdHlwZW5hbWUgVDo6dmFsdWVfdHlwZT4sCisgICAgICAgICAgICAgIHN0
ZDo6aXNfc2FtZTxhbGxvY2F0b3JfdHlwZSwgdHlwZW5hbWUgVDo6YWxsb2NhdG9yX3R5cGU+LAor
ICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgcGFyYW1zX3R5cGU6OmlzX21hcF9j
b250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUOjpwYXJhbXNf
dHlwZTo6aXNfbWFwX2NvbnRhaW5lcj4+Ojp2YWx1ZSwKKyAgICAgICAgICBpbnQ+ID0gMD4KKyAg
dm9pZCBtZXJnZShidHJlZV9jb250YWluZXI8VD4gJnNyYykgeyAgLy8gTk9MSU5UCisgICAgZm9y
IChhdXRvIHNyY19pdCA9IHNyYy5iZWdpbigpOyBzcmNfaXQgIT0gc3JjLmVuZCgpOykgeworICAg
ICAgaWYgKGluc2VydChzdGQ6Om1vdmUoKnNyY19pdCkpLnNlY29uZCkgeworICAgICAgICBzcmNf
aXQgPSBzcmMuZXJhc2Uoc3JjX2l0KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICsrc3JjX2l0
OworICAgICAgfQorICAgIH0KKyAgfQorCisgIHRlbXBsYXRlIDwKKyAgICAgIHR5cGVuYW1lIFQs
CisgICAgICB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICAgICBhYnNsOjpjb25q
dW5jdGlvbjwKKyAgICAgICAgICAgICAgc3RkOjppc19zYW1lPHZhbHVlX3R5cGUsIHR5cGVuYW1l
IFQ6OnZhbHVlX3R5cGU+LAorICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8YWxsb2NhdG9yX3R5
cGUsIHR5cGVuYW1lIFQ6OmFsbG9jYXRvcl90eXBlPiwKKyAgICAgICAgICAgICAgc3RkOjppc19z
YW1lPHR5cGVuYW1lIHBhcmFtc190eXBlOjppc19tYXBfY29udGFpbmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZW5hbWUgVDo6cGFyYW1zX3R5cGU6OmlzX21hcF9jb250YWluZXI+
Pjo6dmFsdWUsCisgICAgICAgICAgaW50PiA9IDA+CisgIHZvaWQgbWVyZ2UoYnRyZWVfY29udGFp
bmVyPFQ+ICYmc3JjKSB7CisgICAgbWVyZ2Uoc3JjKTsKKyAgfQorfTsKKworLy8gQmFzZSBjbGFz
cyBmb3IgYnRyZWVfbWFwLgordGVtcGxhdGUgPHR5cGVuYW1lIFRyZWU+CitjbGFzcyBidHJlZV9t
YXBfY29udGFpbmVyIDogcHVibGljIGJ0cmVlX3NldF9jb250YWluZXI8VHJlZT4geworICB1c2lu
ZyBzdXBlcl90eXBlID0gYnRyZWVfc2V0X2NvbnRhaW5lcjxUcmVlPjsKKyAgdXNpbmcgcGFyYW1z
X3R5cGUgPSB0eXBlbmFtZSBUcmVlOjpwYXJhbXNfdHlwZTsKKworIHByb3RlY3RlZDoKKyAgdGVt
cGxhdGUgPGNsYXNzIEs+CisgIHVzaW5nIGtleV9hcmcgPSB0eXBlbmFtZSBzdXBlcl90eXBlOjp0
ZW1wbGF0ZSBrZXlfYXJnPEs+OworCisgcHVibGljOgorICB1c2luZyBrZXlfdHlwZSA9IHR5cGVu
YW1lIFRyZWU6OmtleV90eXBlOworICB1c2luZyBtYXBwZWRfdHlwZSA9IHR5cGVuYW1lIHBhcmFt
c190eXBlOjptYXBwZWRfdHlwZTsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIFRyZWU6
OnZhbHVlX3R5cGU7CisgIHVzaW5nIGtleV9jb21wYXJlID0gdHlwZW5hbWUgVHJlZTo6a2V5X2Nv
bXBhcmU7CisgIHVzaW5nIGFsbG9jYXRvcl90eXBlID0gdHlwZW5hbWUgVHJlZTo6YWxsb2NhdG9y
X3R5cGU7CisgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5hbWUgVHJlZTo6aXRlcmF0b3I7CisgIHVz
aW5nIGNvbnN0X2l0ZXJhdG9yID0gdHlwZW5hbWUgVHJlZTo6Y29uc3RfaXRlcmF0b3I7CisKKyAg
Ly8gSW5oZXJpdCBjb25zdHJ1Y3RvcnMuCisgIHVzaW5nIHN1cGVyX3R5cGU6OnN1cGVyX3R5cGU7
CisgIGJ0cmVlX21hcF9jb250YWluZXIoKSB7fQorCisgIC8vIEluc2VydGlvbiByb3V0aW5lcy4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9v
bD4gdHJ5X2VtcGxhY2UoY29uc3Qga2V5X3R5cGUgJmssIEFyZ3MgJiYuLi4gYXJncykgeworICAg
IHJldHVybiB0aGlzLT50cmVlXy5pbnNlcnRfdW5pcXVlKAorICAgICAgICBrLCBzdGQ6OnBpZWNl
d2lzZV9jb25zdHJ1Y3QsIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShrKSwKKyAgICAgICAgc3RkOjpm
b3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICB9CisgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHRy
eV9lbXBsYWNlKGtleV90eXBlICYmaywgQXJncyAmJi4uLiBhcmdzKSB7CisgICAgLy8gTm90ZTog
YGtleV9yZWZgIGV4aXN0cyB0byBhdm9pZCBhIENsYW5nVGlkeSB3YXJuaW5nIGFib3V0IG1vdmlu
ZyBmcm9tIGBrYAorICAgIC8vIGFuZCB0aGVuIHVzaW5nIGBrYCB1bnNlcXVlbmNlZC4gVGhpcyBp
cyBzYWZlIGJlY2F1c2UgdGhlIG1vdmUgaXMgaW50byBhCisgICAgLy8gZm9yd2FyZGluZyByZWZl
cmVuY2UgYW5kIGluc2VydF91bmlxdWUgZ3VhcmFudGVlcyB0aGF0IGBrZXlgIGlzIG5ldmVyCisg
ICAgLy8gcmVmZXJlbmNlZCBhZnRlciBjb25zdW1pbmcgYGFyZ3NgLgorICAgIGNvbnN0IGtleV90
eXBlJiBrZXlfcmVmID0gazsKKyAgICByZXR1cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X3VuaXF1ZSgK
KyAgICAgICAga2V5X3JlZiwgc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6OmZvcndhcmRf
YXNfdHVwbGUoc3RkOjptb3ZlKGspKSwKKyAgICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorICBpdGVyYXRvciB0cnlfZW1wbGFjZShjb25zdF9pdGVyYXRvciBoaW50LCBjb25z
dCBrZXlfdHlwZSAmaywKKyAgICAgICAgICAgICAgICAgICAgICAgQXJncyAmJi4uLiBhcmdzKSB7
CisgICAgcmV0dXJuIHRoaXMtPnRyZWVfCisgICAgICAgIC5pbnNlcnRfaGludF91bmlxdWUoaXRl
cmF0b3IoaGludCksIGssIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoayksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLikpCisgICAgICAgIC5maXJzdDsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJn
cz4KKyAgaXRlcmF0b3IgdHJ5X2VtcGxhY2UoY29uc3RfaXRlcmF0b3IgaGludCwga2V5X3R5cGUg
JiZrLCBBcmdzICYmLi4uIGFyZ3MpIHsKKyAgICAvLyBOb3RlOiBga2V5X3JlZmAgZXhpc3RzIHRv
IGF2b2lkIGEgQ2xhbmdUaWR5IHdhcm5pbmcgYWJvdXQgbW92aW5nIGZyb20gYGtgCisgICAgLy8g
YW5kIHRoZW4gdXNpbmcgYGtgIHVuc2VxdWVuY2VkLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGUg
bW92ZSBpcyBpbnRvIGEKKyAgICAvLyBmb3J3YXJkaW5nIHJlZmVyZW5jZSBhbmQgaW5zZXJ0X2hp
bnRfdW5pcXVlIGd1YXJhbnRlZXMgdGhhdCBga2V5YCBpcworICAgIC8vIG5ldmVyIHJlZmVyZW5j
ZWQgYWZ0ZXIgY29uc3VtaW5nIGBhcmdzYC4KKyAgICBjb25zdCBrZXlfdHlwZSYga2V5X3JlZiA9
IGs7CisgICAgcmV0dXJuIHRoaXMtPnRyZWVfCisgICAgICAgIC5pbnNlcnRfaGludF91bmlxdWUo
aXRlcmF0b3IoaGludCksIGtleV9yZWYsIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3RkOjptb3ZlKGsp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkKKyAgICAgICAgLmZpcnN0OworICB9CisgIG1hcHBl
ZF90eXBlICZvcGVyYXRvcltdKGNvbnN0IGtleV90eXBlICZrKSB7CisgICAgcmV0dXJuIHRyeV9l
bXBsYWNlKGspLmZpcnN0LT5zZWNvbmQ7CisgIH0KKyAgbWFwcGVkX3R5cGUgJm9wZXJhdG9yW10o
a2V5X3R5cGUgJiZrKSB7CisgICAgcmV0dXJuIHRyeV9lbXBsYWNlKHN0ZDo6bW92ZShrKSkuZmly
c3QtPnNlY29uZDsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLID0ga2V5X3R5cGU+Cisg
IG1hcHBlZF90eXBlICZhdChjb25zdCBrZXlfYXJnPEs+ICZrZXkpIHsKKyAgICBhdXRvIGl0ID0g
dGhpcy0+ZmluZChrZXkpOworICAgIGlmIChpdCA9PSB0aGlzLT5lbmQoKSkKKyAgICAgIGJhc2Vf
aW50ZXJuYWw6OlRocm93U3RkT3V0T2ZSYW5nZSgiYWJzbDo6YnRyZWVfbWFwOjphdCIpOworICAg
IHJldHVybiBpdC0+c2Vjb25kOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLID0ga2V5X3R5
cGU+CisgIGNvbnN0IG1hcHBlZF90eXBlICZhdChjb25zdCBrZXlfYXJnPEs+ICZrZXkpIGNvbnN0
IHsKKyAgICBhdXRvIGl0ID0gdGhpcy0+ZmluZChrZXkpOworICAgIGlmIChpdCA9PSB0aGlzLT5l
bmQoKSkKKyAgICAgIGJhc2VfaW50ZXJuYWw6OlRocm93U3RkT3V0T2ZSYW5nZSgiYWJzbDo6YnRy
ZWVfbWFwOjphdCIpOworICAgIHJldHVybiBpdC0+c2Vjb25kOworICB9Cit9OworCisvLyBBIGNv
bW1vbiBiYXNlIGNsYXNzIGZvciBidHJlZV9tdWx0aXNldCBhbmQgYnRyZWVfbXVsdGltYXAuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZT4KK2NsYXNzIGJ0cmVlX211bHRpc2V0X2NvbnRhaW5lciA6
IHB1YmxpYyBidHJlZV9jb250YWluZXI8VHJlZT4geworICB1c2luZyBzdXBlcl90eXBlID0gYnRy
ZWVfY29udGFpbmVyPFRyZWU+OworICB1c2luZyBwYXJhbXNfdHlwZSA9IHR5cGVuYW1lIFRyZWU6
OnBhcmFtc190eXBlOworICB1c2luZyBpbml0X3R5cGUgPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6
aW5pdF90eXBlOworICB1c2luZyBpc19rZXlfY29tcGFyZV90byA9IHR5cGVuYW1lIHBhcmFtc190
eXBlOjppc19rZXlfY29tcGFyZV90bzsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgSz4KKyAgdXNpbmcg
a2V5X2FyZyA9IHR5cGVuYW1lIHN1cGVyX3R5cGU6OnRlbXBsYXRlIGtleV9hcmc8Sz47CisKKyBw
dWJsaWM6CisgIHVzaW5nIGtleV90eXBlID0gdHlwZW5hbWUgVHJlZTo6a2V5X3R5cGU7CisgIHVz
aW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBUcmVlOjp2YWx1ZV90eXBlOworICB1c2luZyBzaXpl
X3R5cGUgPSB0eXBlbmFtZSBUcmVlOjpzaXplX3R5cGU7CisgIHVzaW5nIGtleV9jb21wYXJlID0g
dHlwZW5hbWUgVHJlZTo6a2V5X2NvbXBhcmU7CisgIHVzaW5nIGFsbG9jYXRvcl90eXBlID0gdHlw
ZW5hbWUgVHJlZTo6YWxsb2NhdG9yX3R5cGU7CisgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5hbWUg
VHJlZTo6aXRlcmF0b3I7CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gdHlwZW5hbWUgVHJlZTo6
Y29uc3RfaXRlcmF0b3I7CisgIHVzaW5nIG5vZGVfdHlwZSA9IHR5cGVuYW1lIHN1cGVyX3R5cGU6
Om5vZGVfdHlwZTsKKworICAvLyBJbmhlcml0IGNvbnN0cnVjdG9ycy4KKyAgdXNpbmcgc3VwZXJf
dHlwZTo6c3VwZXJfdHlwZTsKKyAgYnRyZWVfbXVsdGlzZXRfY29udGFpbmVyKCkge30KKworICAv
LyBSYW5nZSBjb25zdHJ1Y3Rvci4KKyAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Cisg
IGJ0cmVlX211bHRpc2V0X2NvbnRhaW5lcihJbnB1dEl0ZXJhdG9yIGIsIElucHV0SXRlcmF0b3Ig
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleV9jb21wYXJlICZjb21wID0g
a2V5X2NvbXBhcmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRv
cl90eXBlICZhbGxvYyA9IGFsbG9jYXRvcl90eXBlKCkpCisgICAgICA6IHN1cGVyX3R5cGUoY29t
cCwgYWxsb2MpIHsKKyAgICBpbnNlcnQoYiwgZSk7CisgIH0KKworICAvLyBJbml0aWFsaXplciBs
aXN0IGNvbnN0cnVjdG9yLgorICBidHJlZV9tdWx0aXNldF9jb250YWluZXIoc3RkOjppbml0aWFs
aXplcl9saXN0PGluaXRfdHlwZT4gaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGtleV9jb21wYXJlICZjb21wID0ga2V5X2NvbXBhcmUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhbGxvYyA9IGFsbG9jYXRvcl90eXBlKCkp
CisgICAgICA6IGJ0cmVlX211bHRpc2V0X2NvbnRhaW5lcihpbml0LmJlZ2luKCksIGluaXQuZW5k
KCksIGNvbXAsIGFsbG9jKSB7fQorCisgIC8vIExvb2t1cCByb3V0aW5lcy4KKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgc2l6ZV90eXBlIGNvdW50KGNvbnN0IGtleV9hcmc8
Sz4gJmtleSkgY29uc3QgeworICAgIHJldHVybiB0aGlzLT50cmVlXy5jb3VudF9tdWx0aShrZXkp
OworICB9CisKKyAgLy8gSW5zZXJ0aW9uIHJvdXRpbmVzLgorICBpdGVyYXRvciBpbnNlcnQoY29u
c3QgdmFsdWVfdHlwZSAmeCkgeyByZXR1cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X211bHRpKHgpOyB9
CisgIGl0ZXJhdG9yIGluc2VydCh2YWx1ZV90eXBlICYmeCkgeworICAgIHJldHVybiB0aGlzLT50
cmVlXy5pbnNlcnRfbXVsdGkoc3RkOjptb3ZlKHgpKTsKKyAgfQorICBpdGVyYXRvciBpbnNlcnQo
Y29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIGNvbnN0IHZhbHVlX3R5cGUgJngpIHsKKyAgICByZXR1
cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X2hpbnRfbXVsdGkoaXRlcmF0b3IocG9zaXRpb24pLCB4KTsK
KyAgfQorICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIHZhbHVlX3R5
cGUgJiZ4KSB7CisgICAgcmV0dXJuIHRoaXMtPnRyZWVfLmluc2VydF9oaW50X211bHRpKGl0ZXJh
dG9yKHBvc2l0aW9uKSwgc3RkOjptb3ZlKHgpKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW5wdXRJdGVyYXRvcj4KKyAgdm9pZCBpbnNlcnQoSW5wdXRJdGVyYXRvciBiLCBJbnB1dEl0ZXJh
dG9yIGUpIHsKKyAgICB0aGlzLT50cmVlXy5pbnNlcnRfaXRlcmF0b3JfbXVsdGkoYiwgZSk7Cisg
IH0KKyAgdm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaW5pdCkg
eworICAgIHRoaXMtPnRyZWVfLmluc2VydF9pdGVyYXRvcl9tdWx0aShpbml0LmJlZ2luKCksIGlu
aXQuZW5kKCkpOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBpdGVyYXRv
ciBlbXBsYWNlKEFyZ3MgJiYuLi4gYXJncykgeworICAgIHJldHVybiB0aGlzLT50cmVlXy5pbnNl
cnRfbXVsdGkoaW5pdF90eXBlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICB9Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29u
c3RfaXRlcmF0b3IgcG9zaXRpb24sIEFyZ3MgJiYuLi4gYXJncykgeworICAgIHJldHVybiB0aGlz
LT50cmVlXy5pbnNlcnRfaGludF9tdWx0aSgKKyAgICAgICAgaXRlcmF0b3IocG9zaXRpb24pLCBp
bml0X3R5cGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgIH0KKworIHByaXZhdGU6
CisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBpdGVyYXRvciBpbnNlcnRfbm9kZV9o
ZWxwZXIobm9kZV90eXBlICYmbm9kZSwgQXJncyAmJi4uLiBhcmdzKSB7CisgICAgaWYgKCFub2Rl
KSByZXR1cm4gdGhpcy0+ZW5kKCk7CisgICAgaXRlcmF0b3IgcmVzID0KKyAgICAgICAgaW5zZXJ0
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLiwKKyAgICAgICAgICAgICAgIHN0ZDo6bW92ZShw
YXJhbXNfdHlwZTo6ZWxlbWVudChDb21tb25BY2Nlc3M6OkdldFNsb3Qobm9kZSkpKSk7CisgICAg
Q29tbW9uQWNjZXNzOjpSZXNldCgmbm9kZSk7CisgICAgcmV0dXJuIHJlczsKKyAgfQorCisgcHVi
bGljOgorICBpdGVyYXRvciBpbnNlcnQobm9kZV90eXBlICYmbm9kZSkgeworICAgIHJldHVybiBp
bnNlcnRfbm9kZV9oZWxwZXIoc3RkOjptb3ZlKG5vZGUpKTsKKyAgfQorICBpdGVyYXRvciBpbnNl
cnQoY29uc3RfaXRlcmF0b3IgaGludCwgbm9kZV90eXBlICYmbm9kZSkgeworICAgIHJldHVybiBp
bnNlcnRfbm9kZV9oZWxwZXIoc3RkOjptb3ZlKG5vZGUpLCBoaW50KTsKKyAgfQorCisgIC8vIERl
bGV0aW9uIHJvdXRpbmVzLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSyA9IGtleV90eXBlPgorICBz
aXplX3R5cGUgZXJhc2UoY29uc3Qga2V5X2FyZzxLPiAma2V5KSB7CisgICAgcmV0dXJuIHRoaXMt
PnRyZWVfLmVyYXNlX211bHRpKGtleSk7CisgIH0KKyAgdXNpbmcgc3VwZXJfdHlwZTo6ZXJhc2U7
CisKKyAgLy8gTm9kZSBleHRyYWN0aW9uIHJvdXRpbmVzLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SyA9IGtleV90eXBlPgorICBub2RlX3R5cGUgZXh0cmFjdChjb25zdCBrZXlfYXJnPEs+ICZrZXkp
IHsKKyAgICBhdXRvIGl0ID0gZmluZChrZXkpOworICAgIHJldHVybiBpdCA9PSB0aGlzLT5lbmQo
KSA/IG5vZGVfdHlwZSgpIDogZXh0cmFjdChpdCk7CisgIH0KKyAgdXNpbmcgc3VwZXJfdHlwZTo6
ZXh0cmFjdDsKKworICAvLyBNZXJnZSByb3V0aW5lcy4KKyAgLy8gTW92ZXMgYWxsIGVsZW1lbnRz
IGZyb20gYHNyY2AgaW50byBgdGhpc2AuCisgIHRlbXBsYXRlIDwKKyAgICAgIHR5cGVuYW1lIFQs
CisgICAgICB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICAgICBhYnNsOjpjb25q
dW5jdGlvbjwKKyAgICAgICAgICAgICAgc3RkOjppc19zYW1lPHZhbHVlX3R5cGUsIHR5cGVuYW1l
IFQ6OnZhbHVlX3R5cGU+LAorICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8YWxsb2NhdG9yX3R5
cGUsIHR5cGVuYW1lIFQ6OmFsbG9jYXRvcl90eXBlPiwKKyAgICAgICAgICAgICAgc3RkOjppc19z
YW1lPHR5cGVuYW1lIHBhcmFtc190eXBlOjppc19tYXBfY29udGFpbmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZW5hbWUgVDo6cGFyYW1zX3R5cGU6OmlzX21hcF9jb250YWluZXI+
Pjo6dmFsdWUsCisgICAgICAgICAgaW50PiA9IDA+CisgIHZvaWQgbWVyZ2UoYnRyZWVfY29udGFp
bmVyPFQ+ICZzcmMpIHsgIC8vIE5PTElOVAorICAgIGluc2VydChzdGQ6Om1ha2VfbW92ZV9pdGVy
YXRvcihzcmMuYmVnaW4oKSksCisgICAgICAgICAgIHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKHNy
Yy5lbmQoKSkpOworICAgIHNyYy5jbGVhcigpOworICB9CisKKyAgdGVtcGxhdGUgPAorICAgICAg
dHlwZW5hbWUgVCwKKyAgICAgIHR5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PAorICAgICAgICAg
IGFic2w6OmNvbmp1bmN0aW9uPAorICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8dmFsdWVfdHlw
ZSwgdHlwZW5hbWUgVDo6dmFsdWVfdHlwZT4sCisgICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTxh
bGxvY2F0b3JfdHlwZSwgdHlwZW5hbWUgVDo6YWxsb2NhdG9yX3R5cGU+LAorICAgICAgICAgICAg
ICBzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgcGFyYW1zX3R5cGU6OmlzX21hcF9jb250YWluZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUOjpwYXJhbXNfdHlwZTo6aXNfbWFw
X2NvbnRhaW5lcj4+Ojp2YWx1ZSwKKyAgICAgICAgICBpbnQ+ID0gMD4KKyAgdm9pZCBtZXJnZShi
dHJlZV9jb250YWluZXI8VD4gJiZzcmMpIHsKKyAgICBtZXJnZShzcmMpOworICB9Cit9OworCisv
LyBBIGJhc2UgY2xhc3MgZm9yIGJ0cmVlX211bHRpbWFwLgordGVtcGxhdGUgPHR5cGVuYW1lIFRy
ZWU+CitjbGFzcyBidHJlZV9tdWx0aW1hcF9jb250YWluZXIgOiBwdWJsaWMgYnRyZWVfbXVsdGlz
ZXRfY29udGFpbmVyPFRyZWU+IHsKKyAgdXNpbmcgc3VwZXJfdHlwZSA9IGJ0cmVlX211bHRpc2V0
X2NvbnRhaW5lcjxUcmVlPjsKKyAgdXNpbmcgcGFyYW1zX3R5cGUgPSB0eXBlbmFtZSBUcmVlOjpw
YXJhbXNfdHlwZTsKKworIHB1YmxpYzoKKyAgdXNpbmcgbWFwcGVkX3R5cGUgPSB0eXBlbmFtZSBw
YXJhbXNfdHlwZTo6bWFwcGVkX3R5cGU7CisKKyAgLy8gSW5oZXJpdCBjb25zdHJ1Y3RvcnMuCisg
IHVzaW5nIHN1cGVyX3R5cGU6OnN1cGVyX3R5cGU7CisgIGJ0cmVlX211bHRpbWFwX2NvbnRhaW5l
cigpIHt9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0JUUkVF
X0NPTlRBSU5FUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbW1v
bi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MWQz
ZWExMWZhMjVmMTk3ZTEyZGI5OGNiMDBmZjI2YjdmZDJhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29tbW9uLmgKQEAgLTAsMCArMSwxOTYgQEAKKy8vIENv
cHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJ
TkVSX0lOVEVSTkFMX0NPTlRBSU5FUl9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5B
TF9DT05UQUlORVJfSF8KKworI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CisKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWlu
ZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MsIGNsYXNzID0gdm9pZD4KK3N0cnVjdCBJ
c1RyYW5zcGFyZW50IDogc3RkOjpmYWxzZV90eXBlIHt9OwordGVtcGxhdGUgPGNsYXNzIFQ+Citz
dHJ1Y3QgSXNUcmFuc3BhcmVudDxULCBhYnNsOjp2b2lkX3Q8dHlwZW5hbWUgVDo6aXNfdHJhbnNw
YXJlbnQ+PgorICAgIDogc3RkOjp0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDxib29sIGlzX3Ry
YW5zcGFyZW50Pgorc3RydWN0IEtleUFyZyB7CisgIC8vIFRyYW5zcGFyZW50LiBGb3J3YXJkIGBL
YC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIGtleV90eXBlPgorICB1c2luZyB0
eXBlID0gSzsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgS2V5QXJnPGZhbHNlPiB7CisgIC8v
IE5vdCB0cmFuc3BhcmVudC4gQWx3YXlzIHVzZSBga2V5X3R5cGVgLgorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSywgdHlwZW5hbWUga2V5X3R5cGU+CisgIHVzaW5nIHR5cGUgPSBrZXlfdHlwZTsKK307
CisKKy8vIFRoZSBub2RlX2hhbmRsZSBjb25jZXB0IGZyb20gQysrMTcuCisvLyBXZSBzcGVjaWFs
aXplIG5vZGVfaGFuZGxlIGZvciBzZXRzIGFuZCBtYXBzLiBub2RlX2hhbmRsZV9iYXNlIGhvbGRz
IHRoZQorLy8gY29tbW9uIEFQSSBvZiBib3RoLgordGVtcGxhdGUgPHR5cGVuYW1lIFBvbGljeVRy
YWl0cywgdHlwZW5hbWUgQWxsb2M+CitjbGFzcyBub2RlX2hhbmRsZV9iYXNlIHsKKyBwcm90ZWN0
ZWQ6CisgIHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIFBvbGljeVRyYWl0czo6c2xvdF90eXBl
OworCisgcHVibGljOgorICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IEFsbG9jOworCisgIGNvbnN0
ZXhwciBub2RlX2hhbmRsZV9iYXNlKCkge30KKyAgbm9kZV9oYW5kbGVfYmFzZShub2RlX2hhbmRs
ZV9iYXNlJiYgb3RoZXIpIG5vZXhjZXB0IHsKKyAgICAqdGhpcyA9IHN0ZDo6bW92ZShvdGhlcik7
CisgIH0KKyAgfm5vZGVfaGFuZGxlX2Jhc2UoKSB7IGRlc3Ryb3koKTsgfQorICBub2RlX2hhbmRs
ZV9iYXNlJiBvcGVyYXRvcj0obm9kZV9oYW5kbGVfYmFzZSYmIG90aGVyKSBub2V4Y2VwdCB7Cisg
ICAgZGVzdHJveSgpOworICAgIGlmICghb3RoZXIuZW1wdHkoKSkgeworICAgICAgYWxsb2NfID0g
b3RoZXIuYWxsb2NfOworICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2ZlcihhbGxvYygpLCBzbG90
KCksIG90aGVyLnNsb3QoKSk7CisgICAgICBvdGhlci5yZXNldCgpOworICAgIH0KKyAgICByZXR1
cm4gKnRoaXM7CisgIH0KKworICBib29sIGVtcHR5KCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4g
IWFsbG9jXzsgfQorICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQgeyBy
ZXR1cm4gIWVtcHR5KCk7IH0KKyAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0
IHsgcmV0dXJuICphbGxvY187IH0KKworIHByb3RlY3RlZDoKKyAgZnJpZW5kIHN0cnVjdCBDb21t
b25BY2Nlc3M7CisKKyAgc3RydWN0IHRyYW5zZmVyX3RhZ190IHt9OworICBub2RlX2hhbmRsZV9i
YXNlKHRyYW5zZmVyX3RhZ190LCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYSwgc2xvdF90eXBlKiBz
KQorICAgICAgOiBhbGxvY18oYSkgeworICAgIFBvbGljeVRyYWl0czo6dHJhbnNmZXIoYWxsb2Mo
KSwgc2xvdCgpLCBzKTsKKyAgfQorCisgIHN0cnVjdCBtb3ZlX3RhZ190IHt9OworICBub2RlX2hh
bmRsZV9iYXNlKG1vdmVfdGFnX3QsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhLCBzbG90X3R5cGUq
IHMpCisgICAgICA6IGFsbG9jXyhhKSB7CisgICAgUG9saWN5VHJhaXRzOjpjb25zdHJ1Y3QoYWxs
b2MoKSwgc2xvdCgpLCBzKTsKKyAgfQorCisgIHZvaWQgZGVzdHJveSgpIHsKKyAgICBpZiAoIWVt
cHR5KCkpIHsKKyAgICAgIFBvbGljeVRyYWl0czo6ZGVzdHJveShhbGxvYygpLCBzbG90KCkpOwor
ICAgICAgcmVzZXQoKTsKKyAgICB9CisgIH0KKworICB2b2lkIHJlc2V0KCkgeworICAgIGFzc2Vy
dChhbGxvY18uaGFzX3ZhbHVlKCkpOworICAgIGFsbG9jXyA9IGFic2w6Om51bGxvcHQ7CisgIH0K
KworICBzbG90X3R5cGUqIHNsb3QoKSBjb25zdCB7CisgICAgYXNzZXJ0KCFlbXB0eSgpKTsKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxzbG90X3R5cGUqPihzdGQ6OmFkZHJlc3NvZihzbG90
X3NwYWNlXykpOworICB9CisgIGFsbG9jYXRvcl90eXBlKiBhbGxvYygpIHsgcmV0dXJuIHN0ZDo6
YWRkcmVzc29mKCphbGxvY18pOyB9CisKKyBwcml2YXRlOgorICBhYnNsOjpvcHRpb25hbDxhbGxv
Y2F0b3JfdHlwZT4gYWxsb2NfOworICBtdXRhYmxlIGFic2w6OmFsaWduZWRfc3RvcmFnZV90PHNp
emVvZihzbG90X3R5cGUpLCBhbGlnbm9mKHNsb3RfdHlwZSk+CisgICAgICBzbG90X3NwYWNlXzsK
K307CisKKy8vIEZvciBzZXRzLgordGVtcGxhdGUgPHR5cGVuYW1lIFBvbGljeSwgdHlwZW5hbWUg
UG9saWN5VHJhaXRzLCB0eXBlbmFtZSBBbGxvYywKKyAgICAgICAgICB0eXBlbmFtZSA9IHZvaWQ+
CitjbGFzcyBub2RlX2hhbmRsZSA6IHB1YmxpYyBub2RlX2hhbmRsZV9iYXNlPFBvbGljeVRyYWl0
cywgQWxsb2M+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIG5vZGVfaGFuZGxlOjpub2RlX2hh
bmRsZV9iYXNlOworCisgcHVibGljOgorICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgUG9s
aWN5VHJhaXRzOjp2YWx1ZV90eXBlOworCisgIGNvbnN0ZXhwciBub2RlX2hhbmRsZSgpIHt9CisK
KyAgdmFsdWVfdHlwZSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBQb2xpY3lUcmFpdHM6OmVsZW1l
bnQodGhpcy0+c2xvdCgpKTsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIHN0cnVjdCBDb21tb25B
Y2Nlc3M7CisKKyAgdXNpbmcgQmFzZTo6QmFzZTsKK307CisKKy8vIEZvciBtYXBzLgordGVtcGxh
dGUgPHR5cGVuYW1lIFBvbGljeSwgdHlwZW5hbWUgUG9saWN5VHJhaXRzLCB0eXBlbmFtZSBBbGxv
Yz4KK2NsYXNzIG5vZGVfaGFuZGxlPFBvbGljeSwgUG9saWN5VHJhaXRzLCBBbGxvYywKKyAgICAg
ICAgICAgICAgICAgIGFic2w6OnZvaWRfdDx0eXBlbmFtZSBQb2xpY3k6Om1hcHBlZF90eXBlPj4K
KyAgICA6IHB1YmxpYyBub2RlX2hhbmRsZV9iYXNlPFBvbGljeVRyYWl0cywgQWxsb2M+IHsKKyAg
dXNpbmcgQmFzZSA9IHR5cGVuYW1lIG5vZGVfaGFuZGxlOjpub2RlX2hhbmRsZV9iYXNlOworCisg
cHVibGljOgorICB1c2luZyBrZXlfdHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6a2V5X3R5cGU7Cisg
IHVzaW5nIG1hcHBlZF90eXBlID0gdHlwZW5hbWUgUG9saWN5OjptYXBwZWRfdHlwZTsKKworICBj
b25zdGV4cHIgbm9kZV9oYW5kbGUoKSB7fQorCisgIGF1dG8ga2V5KCkgY29uc3QgLT4gZGVjbHR5
cGUoUG9saWN5VHJhaXRzOjprZXkodGhpcy0+c2xvdCgpKSkgeworICAgIHJldHVybiBQb2xpY3lU
cmFpdHM6OmtleSh0aGlzLT5zbG90KCkpOworICB9CisKKyAgbWFwcGVkX3R5cGUmIG1hcHBlZCgp
IGNvbnN0IHsKKyAgICByZXR1cm4gUG9saWN5VHJhaXRzOjp2YWx1ZSgmUG9saWN5VHJhaXRzOjpl
bGVtZW50KHRoaXMtPnNsb3QoKSkpOworICB9CisKKyBwcml2YXRlOgorICBmcmllbmQgc3RydWN0
IENvbW1vbkFjY2VzczsKKworICB1c2luZyBCYXNlOjpCYXNlOworfTsKKworLy8gUHJvdmlkZSBh
Y2Nlc3MgdG8gbm9uLXB1YmxpYyBub2RlLWhhbmRsZSBmdW5jdGlvbnMuCitzdHJ1Y3QgQ29tbW9u
QWNjZXNzIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+CisgIHN0YXRpYyBhdXRvIEdldFNs
b3QoY29uc3QgTm9kZSYgbm9kZSkgLT4gZGVjbHR5cGUobm9kZS5zbG90KCkpIHsKKyAgICByZXR1
cm4gbm9kZS5zbG90KCk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4KKyAgc3Rh
dGljIHZvaWQgUmVzZXQoTm9kZSogbm9kZSkgeworICAgIG5vZGUtPnJlc2V0KCk7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KKyAgc3RhdGljIFQgVHJh
bnNmZXIoQXJncyYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4gVCh0eXBlbmFtZSBUOjp0cmFuc2Zl
cl90YWdfdHt9LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+CisgIHN0YXRpYyBUIE1vdmUoQXJncyYm
Li4uIGFyZ3MpIHsKKyAgICByZXR1cm4gVCh0eXBlbmFtZSBUOjptb3ZlX3RhZ190e30sIHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KK307CisKKy8vIEltcGxlbWVudCB0aGUgaW5z
ZXJ0X3JldHVybl90eXBlPD4gY29uY2VwdCBvZiBDKysxNy4KK3RlbXBsYXRlIDxjbGFzcyBJdGVy
YXRvciwgY2xhc3MgTm9kZVR5cGU+CitzdHJ1Y3QgSW5zZXJ0UmV0dXJuVHlwZSB7CisgIEl0ZXJh
dG9yIHBvc2l0aW9uOworICBib29sIGluc2VydGVkOworICBOb2RlVHlwZSBub2RlOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
KworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9DT05UQUlORVJfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZS5oCmluZGV4IGNjNTI2MTRmNWIz
N2ZmMzc3NGJlYjMxMDNjYmExYmU5NTBiZTlkN2IuLjdkMDhlMzcwZGVjMTZlMmQzNzA3ZDcxYzFl
Mjg3MDk1NTgwMTZjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21w
cmVzc2VkX3R1cGxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbXByZXNzZWRf
dHVwbGUuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjcs
MjQgKzI3LDI1IEBACiAvLyAgIGNvbnN0IFQyJiB0MiA9IHZhbHVlLmdldDwyPigpOwogLy8gICAu
Li4KIC8vCi0vLyBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lYm8K
Ky8vIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lYm8KIAogI2lm
bmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9DT01QUkVTU0VEX1RVUExFX0hfCiAjZGVmaW5l
IEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0NPTVBSRVNTRURfVFVQTEVfSF8KIAorI2luY2x1ZGUg
PGluaXRpYWxpemVyX2xpc3Q+CiAjaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5
LmgiCiAKLSNpZmRlZiBfTVNDX1ZFUgorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVk
KF9fTlZDQ19fKQogLy8gV2UgbmVlZCB0byBtYXJrIHRoZXNlIGNsYXNzZXMgd2l0aCB0aGlzIGRl
Y2xzcGVjIHRvIGVuc3VyZSB0aGF0CiAvLyBDb21wcmVzc2VkVHVwbGUgaGFwcGVucy4KICNkZWZp
bmUgQUJTTF9JTlRFUk5BTF9DT01QUkVTU0VEX1RVUExFX0RFQ0xTUEVDIF9fZGVjbHNwZWMoZW1w
dHlfYmFzZXMpCi0jZWxzZSAgLy8gX01TQ19WRVIKKyNlbHNlCiAjZGVmaW5lIEFCU0xfSU5URVJO
QUxfQ09NUFJFU1NFRF9UVVBMRV9ERUNMU1BFQwotI2VuZGlmICAvLyBfTVNDX1ZFUgorI2VuZGlm
CiAKIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewpAQCAt
NzUsNTcgKzc2LDExMCBAQCBjb25zdGV4cHIgYm9vbCBJc0ZpbmFsKCkgewogI2VuZGlmCiB9CiAK
Ky8vIFdlIGNhbid0IHVzZSBFQkNPIG9uIG90aGVyIENvbXByZXNzZWRUdXBsZXMgYmVjYXVzZSB0
aGF0IHdvdWxkIG1lYW4gdGhhdCB3ZQorLy8gZGVyaXZlIGZyb20gbXVsdGlwbGUgU3RvcmFnZTw+
IGluc3RhbnRpYXRpb25zIHdpdGggdGhlIHNhbWUgSSBwYXJhbWV0ZXIsCisvLyBhbmQgcG90ZW50
aWFsbHkgZnJvbSBtdWx0aXBsZSBpZGVudGljYWwgU3RvcmFnZTw+IGluc3RhbnRpYXRpb25zLiAg
U28gYW55dGltZQorLy8gd2UgdXNlIHR5cGUgaW5oZXJpdGFuY2UgcmF0aGVyIHRoYW4gZW5jYXBz
dWxhdGlvbiwgd2UgbWFyaworLy8gQ29tcHJlc3NlZFR1cGxlSW1wbCwgdG8gbWFrZSB0aGlzIGVh
c3kgdG8gZGV0ZWN0Lgorc3RydWN0IHVzZXNfaW5oZXJpdGFuY2Uge307CisKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogY29uc3RleHByIGJvb2wgU2hvdWxkVXNlQmFzZSgpIHsKLSAgcmV0dXJuIHN0
ZDo6aXNfY2xhc3M8VD46OnZhbHVlICYmIHN0ZDo6aXNfZW1wdHk8VD46OnZhbHVlICYmICFJc0Zp
bmFsPFQ+KCk7CisgIHJldHVybiBzdGQ6OmlzX2NsYXNzPFQ+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Vt
cHR5PFQ+Ojp2YWx1ZSAmJiAhSXNGaW5hbDxUPigpICYmCisgICAgICAgICAhc3RkOjppc19iYXNl
X29mPHVzZXNfaW5oZXJpdGFuY2UsIFQ+Ojp2YWx1ZTsKIH0KIAogLy8gVGhlIHN0b3JhZ2UgY2xh
c3MgcHJvdmlkZXMgdHdvIHNwZWNpYWxpemF0aW9uczoKIC8vICAtIEZvciBlbXB0eSBjbGFzc2Vz
LCBpdCBzdG9yZXMgVCBhcyBhIGJhc2UgY2xhc3MuCiAvLyAgLSBGb3IgZXZlcnl0aGluZyBlbHNl
LCBpdCBzdG9yZXMgVCBhcyBhIG1lbWJlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBELCBzaXplX3Qg
SSwgYm9vbCA9IFNob3VsZFVzZUJhc2U8RWxlbVQ8RCwgST4+KCk+Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IEksCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgICAgICAgICBib29sIFVz
ZUJhc2UgPQorICAgICAgICAgICAgICBTaG91bGRVc2VCYXNlPHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHRydWUsIFQ+Ojp0eXBlPigpPgorI2Vsc2UKKyAgICAgICAgICBib29sIFVzZUJhc2UgPSBT
aG91bGRVc2VCYXNlPFQ+KCk+CisjZW5kaWYKIHN0cnVjdCBTdG9yYWdlIHsKLSAgdXNpbmcgVCA9
IEVsZW1UPEQsIEk+OwogICBUIHZhbHVlOwogICBjb25zdGV4cHIgU3RvcmFnZSgpID0gZGVmYXVs
dDsKLSAgZXhwbGljaXQgY29uc3RleHByIFN0b3JhZ2UoVCYmIHYpIDogdmFsdWUoYWJzbDo6Zm9y
d2FyZDxUPih2KSkge30KLSAgY29uc3RleHByIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlOyB9Ci0gIFQmIGdldCgpIHsgcmV0dXJuIHZhbHVlOyB9CisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBWPgorICBleHBsaWNpdCBjb25zdGV4cHIgU3RvcmFnZShhYnNsOjppbl9wbGFjZV90LCBW
JiYgdikKKyAgICAgIDogdmFsdWUoYWJzbDo6Zm9yd2FyZDxWPih2KSkge30KKyAgY29uc3RleHBy
IGNvbnN0IFQmIGdldCgpIGNvbnN0JiB7IHJldHVybiB2YWx1ZTsgfQorICBUJiBnZXQoKSAmIHsg
cmV0dXJuIHZhbHVlOyB9CisgIGNvbnN0ZXhwciBjb25zdCBUJiYgZ2V0KCkgY29uc3QmJiB7IHJl
dHVybiBhYnNsOjptb3ZlKCp0aGlzKS52YWx1ZTsgfQorICBUJiYgZ2V0KCkgJiYgeyByZXR1cm4g
c3RkOjptb3ZlKCp0aGlzKS52YWx1ZTsgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEQsIHNp
emVfdCBJPgotc3RydWN0IEFCU0xfSU5URVJOQUxfQ09NUFJFU1NFRF9UVVBMRV9ERUNMU1BFQyBT
dG9yYWdlPEQsIEksIHRydWU+Ci0gICAgOiBFbGVtVDxELCBJPiB7Ci0gIHVzaW5nIFQgPSBpbnRl
cm5hbF9jb21wcmVzc2VkX3R1cGxlOjpFbGVtVDxELCBJPjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgST4KK3N0cnVjdCBBQlNMX0lOVEVSTkFMX0NPTVBSRVNTRURfVFVQTEVfREVDTFNQ
RUMgU3RvcmFnZTxULCBJLCB0cnVlPiA6IFQgewogICBjb25zdGV4cHIgU3RvcmFnZSgpID0gZGVm
YXVsdDsKLSAgZXhwbGljaXQgY29uc3RleHByIFN0b3JhZ2UoVCYmIHYpIDogVChhYnNsOjpmb3J3
YXJkPFQ+KHYpKSB7fQotICBjb25zdGV4cHIgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyByZXR1cm4g
KnRoaXM7IH0KLSAgVCYgZ2V0KCkgeyByZXR1cm4gKnRoaXM7IH0KKworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVj4KKyAgZXhwbGljaXQgY29uc3RleHByIFN0b3JhZ2UoYWJzbDo6aW5fcGxhY2VfdCwg
ViYmIHYpCisgICAgICA6IFQoYWJzbDo6Zm9yd2FyZDxWPih2KSkge30KKworICBjb25zdGV4cHIg
Y29uc3QgVCYgZ2V0KCkgY29uc3QmIHsgcmV0dXJuICp0aGlzOyB9CisgIFQmIGdldCgpICYgeyBy
ZXR1cm4gKnRoaXM7IH0KKyAgY29uc3RleHByIGNvbnN0IFQmJiBnZXQoKSBjb25zdCYmIHsgcmV0
dXJuIGFic2w6Om1vdmUoKnRoaXMpOyB9CisgIFQmJiBnZXQoKSAmJiB7IHJldHVybiBzdGQ6Om1v
dmUoKnRoaXMpOyB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRCwgdHlwZW5hbWUgST4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBELCB0eXBlbmFtZSBJLCBib29sIFNob3VsZEFueVVzZUJhc2U+CiBz
dHJ1Y3QgQUJTTF9JTlRFUk5BTF9DT01QUkVTU0VEX1RVUExFX0RFQ0xTUEVDIENvbXByZXNzZWRU
dXBsZUltcGw7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUcywgc2l6ZV90Li4uIEk+Ci1zdHJ1
Y3QgQUJTTF9JTlRFUk5BTF9DT01QUkVTU0VEX1RVUExFX0RFQ0xTUEVDCi0gICAgQ29tcHJlc3Nl
ZFR1cGxlSW1wbDxDb21wcmVzc2VkVHVwbGU8VHMuLi4+LCBhYnNsOjppbmRleF9zZXF1ZW5jZTxJ
Li4uPj4KK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUcywgc2l6ZV90Li4uIEksIGJvb2wgU2hvdWxk
QW55VXNlQmFzZT4KK3N0cnVjdCBBQlNMX0lOVEVSTkFMX0NPTVBSRVNTRURfVFVQTEVfREVDTFNQ
RUMgQ29tcHJlc3NlZFR1cGxlSW1wbDwKKyAgICBDb21wcmVzc2VkVHVwbGU8VHMuLi4+LCBhYnNs
OjppbmRleF9zZXF1ZW5jZTxJLi4uPiwgU2hvdWxkQW55VXNlQmFzZT4KICAgICAvLyBXZSB1c2Ug
dGhlIGR1bW15IGlkZW50aXR5IGZ1bmN0aW9uIHRocm91Z2ggc3RkOjppbnRlZ3JhbF9jb25zdGFu
dCB0bwogICAgIC8vIGNvbnZpbmNlIE1TVkMgb2YgYWNjZXB0aW5nIGFuZCBleHBhbmRpbmcgSSBp
biB0aGF0IGNvbnRleHQuIFdpdGhvdXQgaXQKICAgICAvLyB5b3Ugd291bGQgZ2V0OgogICAgIC8v
ICAgZXJyb3IgQzM1NDg6ICdJJzogcGFyYW1ldGVyIHBhY2sgY2Fubm90IGJlIHVzZWQgaW4gdGhp
cyBjb250ZXh0Ci0gICAgOiBTdG9yYWdlPENvbXByZXNzZWRUdXBsZTxUcy4uLj4sCi0gICAgICAg
ICAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBJPjo6dmFsdWU+Li4uIHsKKyAg
ICA6IHVzZXNfaW5oZXJpdGFuY2UsCisgICAgICBTdG9yYWdlPFRzLCBzdGQ6OmludGVncmFsX2Nv
bnN0YW50PHNpemVfdCwgST46OnZhbHVlPi4uLiB7CiAgIGNvbnN0ZXhwciBDb21wcmVzc2VkVHVw
bGVJbXBsKCkgPSBkZWZhdWx0OwotICBleHBsaWNpdCBjb25zdGV4cHIgQ29tcHJlc3NlZFR1cGxl
SW1wbChUcyYmLi4uIGFyZ3MpCi0gICAgICA6IFN0b3JhZ2U8Q29tcHJlc3NlZFR1cGxlPFRzLi4u
PiwgST4oYWJzbDo6Zm9yd2FyZDxUcz4oYXJncykpLi4uIHt9CisgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBWcz4KKyAgZXhwbGljaXQgY29uc3RleHByIENvbXByZXNzZWRUdXBsZUltcGwoYWJzbDo6
aW5fcGxhY2VfdCwgVnMmJi4uLiBhcmdzKQorICAgICAgOiBTdG9yYWdlPFRzLCBJPihhYnNsOjpp
bl9wbGFjZSwgYWJzbDo6Zm9yd2FyZDxWcz4oYXJncykpLi4uIHt9CisgIGZyaWVuZCBDb21wcmVz
c2VkVHVwbGU8VHMuLi4+OwogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFRzLCBzaXplX3Qu
Li4gST4KK3N0cnVjdCBBQlNMX0lOVEVSTkFMX0NPTVBSRVNTRURfVFVQTEVfREVDTFNQRUMgQ29t
cHJlc3NlZFR1cGxlSW1wbDwKKyAgICBDb21wcmVzc2VkVHVwbGU8VHMuLi4+LCBhYnNsOjppbmRl
eF9zZXF1ZW5jZTxJLi4uPiwgZmFsc2U+CisgICAgLy8gV2UgdXNlIHRoZSBkdW1teSBpZGVudGl0
eSBmdW5jdGlvbiBhcyBhYm92ZS4uLgorICAgIDogU3RvcmFnZTxUcywgc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxzaXplX3QsIEk+Ojp2YWx1ZSwgZmFsc2U+Li4uIHsKKyAgY29uc3RleHByIENvbXBy
ZXNzZWRUdXBsZUltcGwoKSA9IGRlZmF1bHQ7CisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBWcz4K
KyAgZXhwbGljaXQgY29uc3RleHByIENvbXByZXNzZWRUdXBsZUltcGwoYWJzbDo6aW5fcGxhY2Vf
dCwgVnMmJi4uLiBhcmdzKQorICAgICAgOiBTdG9yYWdlPFRzLCBJLCBmYWxzZT4oYWJzbDo6aW5f
cGxhY2UsIGFic2w6OmZvcndhcmQ8VnM+KGFyZ3MpKS4uLiB7fQorICBmcmllbmQgQ29tcHJlc3Nl
ZFR1cGxlPFRzLi4uPjsKK307CisKK3N0ZDo6ZmFsc2VfdHlwZSBPcihzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8c3RkOjpmYWxzZV90eXBlPik7CitzdGQ6OnRydWVfdHlwZSBPcihzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8Ym9vbD4pOworCisvLyBNU1ZDIHJlcXVpcmVzIHRoaXMgdG8gYmUgZG9uZSBzZXBh
cmF0ZWx5IHJhdGhlciB0aGFuIHdpdGhpbiB0aGUgZGVjbGFyYXRpb24KKy8vIG9mIENvbXByZXNz
ZWRUdXBsZSBiZWxvdy4KK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUcz4KK2NvbnN0ZXhwciBib29s
IFNob3VsZEFueVVzZUJhc2UoKSB7CisgIHJldHVybiBkZWNsdHlwZSgKKyAgICAgIE9yKHtzdGQ6
OmludGVncmFsX2NvbnN0YW50PGJvb2wsIFNob3VsZFVzZUJhc2U8VHM+KCk+KCkuLi59KSl7fTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Cit1c2luZyBUdXBsZU1vdmVD
b25zdHJ1Y3RpYmxlID0gdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwKKyAgICAgIHN0ZDo6aXNf
cmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgc3RkOjppc19jb252ZXJ0aWJsZTxWLCBUPiwKKyAgICAgIHN0
ZDo6aXNfY29uc3RydWN0aWJsZTxULCBWJiY+Pjo6dHlwZTsKKwogfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsX2NvbXByZXNzZWRfdHVwbGUKIAogLy8gSGVscGVyIGNsYXNzIHRvIHBlcmZvcm0gdGhl
IEVtcHR5IEJhc2UgQ2xhc3MgT3B0aW1pemF0aW9uLgogLy8gVHMgY2FuIGNvbnRhaW4gY2xhc3Nl
cyBhbmQgbm9uLWNsYXNzZXMsIGVtcHR5IG9yIG5vdC4gRm9yIHRoZSBvbmVzIHRoYXQKIC8vIGFy
ZSBlbXB0eSBjbGFzc2VzLCB3ZSBwZXJmb3JtIHRoZSBDb21wcmVzc2VkVHVwbGUuIElmIGFsbCB0
eXBlcyBpbiBUcyBhcmUKLS8vIGVtcHR5IGNsYXNzZXMsIHRoZW4gQ29tcHJlc3NlZFR1cGxlPFRz
Li4uPiBpcyBpdHNlbGYgYW4gZW1wdHkgY2xhc3MuCisvLyBlbXB0eSBjbGFzc2VzLCB0aGVuIENv
bXByZXNzZWRUdXBsZTxUcy4uLj4gaXMgaXRzZWxmIGFuIGVtcHR5IGNsYXNzLiAgKFRoaXMKKy8v
IGRvZXMgbm90IGFwcGx5IHdoZW4gb25lIG9yIG1vcmUgb2YgdGhvc2UgZW1wdHkgY2xhc3NlcyBp
cyBpdHNlbGYgYW4gZW1wdHkKKy8vIENvbXByZXNzZWRUdXBsZS4pCiAvLwogLy8gVG8gYWNjZXNz
IHRoZSBtZW1iZXJzLCB1c2UgbWVtYmVyIC5nZXQ8Tj4oKSBmdW5jdGlvbi4KIC8vCkBAIC0xMzcs
MjggKzE5MSw2MiBAQCBzdHJ1Y3QgQUJTTF9JTlRFUk5BTF9DT01QUkVTU0VEX1RVUExFX0RFQ0xT
UEVDCiAvLyAgIGNvbnN0IFQyJiB0MiA9IHZhbHVlLmdldDwyPigpOwogLy8gICAuLi4KIC8vCi0v
LyBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lYm8KKy8vIGh0dHBz
Oi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lYm8KIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBUcz4KIGNsYXNzIEFCU0xfSU5URVJOQUxfQ09NUFJFU1NFRF9UVVBMRV9ERUNMU1BF
QyBDb21wcmVzc2VkVHVwbGUKICAgICA6IHByaXZhdGUgaW50ZXJuYWxfY29tcHJlc3NlZF90dXBs
ZTo6Q29tcHJlc3NlZFR1cGxlSW1wbDwKLSAgICAgICAgICBDb21wcmVzc2VkVHVwbGU8VHMuLi4+
LCBhYnNsOjppbmRleF9zZXF1ZW5jZV9mb3I8VHMuLi4+PiB7CisgICAgICAgICAgQ29tcHJlc3Nl
ZFR1cGxlPFRzLi4uPiwgYWJzbDo6aW5kZXhfc2VxdWVuY2VfZm9yPFRzLi4uPiwKKyAgICAgICAg
ICBpbnRlcm5hbF9jb21wcmVzc2VkX3R1cGxlOjpTaG91bGRBbnlVc2VCYXNlPFRzLi4uPigpPiB7
CiAgcHJpdmF0ZToKICAgdGVtcGxhdGUgPGludCBJPgogICB1c2luZyBFbGVtVCA9IGludGVybmFs
X2NvbXByZXNzZWRfdHVwbGU6OkVsZW1UPENvbXByZXNzZWRUdXBsZSwgST47CiAKKyAgdGVtcGxh
dGUgPGludCBJPgorICB1c2luZyBTdG9yYWdlVCA9IGludGVybmFsX2NvbXByZXNzZWRfdHVwbGU6
OlN0b3JhZ2U8RWxlbVQ8ST4sIEk+OworCiAgcHVibGljOgorICAvLyBUaGVyZSBzZWVtcyB0byBi
ZSBhIGJ1ZyBpbiBNU1ZDIGRlYWxpbmcgaW4gd2hpY2ggdXNpbmcgJz1kZWZhdWx0JyBoZXJlIHdp
bGwKKyAgLy8gY2F1c2UgdGhlIGNvbXBpbGVyIHRvIGlnbm9yZSB0aGUgYm9keSBvZiBvdGhlciBj
b25zdHJ1Y3RvcnMuIFRoZSB3b3JrLQorICAvLyBhcm91bmQgaXMgdG8gZXhwbGljaXRseSBpbXBs
ZW1lbnQgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAg
Y29uc3RleHByIENvbXByZXNzZWRUdXBsZSgpIDogQ29tcHJlc3NlZFR1cGxlOjpDb21wcmVzc2Vk
VHVwbGVJbXBsKCkge30KKyNlbHNlCiAgIGNvbnN0ZXhwciBDb21wcmVzc2VkVHVwbGUoKSA9IGRl
ZmF1bHQ7Ci0gIGV4cGxpY2l0IGNvbnN0ZXhwciBDb21wcmVzc2VkVHVwbGUoVHMuLi4gYmFzZSkK
LSAgICAgIDogQ29tcHJlc3NlZFR1cGxlOjpDb21wcmVzc2VkVHVwbGVJbXBsKGFic2w6OmZvcndh
cmQ8VHM+KGJhc2UpLi4uKSB7fQorI2VuZGlmCisgIGV4cGxpY2l0IGNvbnN0ZXhwciBDb21wcmVz
c2VkVHVwbGUoY29uc3QgVHMmLi4uIGJhc2UpCisgICAgICA6IENvbXByZXNzZWRUdXBsZTo6Q29t
cHJlc3NlZFR1cGxlSW1wbChhYnNsOjppbl9wbGFjZSwgYmFzZS4uLikge30KKworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4gVnMsCisgICAgICAgICAgICBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAg
ICAgICAgICAgICBhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAgICAgICAgICAgICAgLy8gRW5z
dXJlIHdlIGFyZSBub3QgaGlkaW5nIGRlZmF1bHQgY29weS9tb3ZlIGNvbnN0cnVjdG9ycy4KKyAg
ICAgICAgICAgICAgICAgICAgYWJzbDo6bmVnYXRpb248c3RkOjppc19zYW1lPHZvaWQoQ29tcHJl
c3NlZFR1cGxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQoYWJzbDo6ZGVjYXlfdDxWcz4uLi4pPj4sCisgICAgICAgICAgICAgICAgICAgIGlu
dGVybmFsX2NvbXByZXNzZWRfdHVwbGU6OlR1cGxlTW92ZUNvbnN0cnVjdGlibGU8CisgICAgICAg
ICAgICAgICAgICAgICAgICBUcywgVnMmJj4uLi4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICBi
b29sPiA9IHRydWU+CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBDb21wcmVzc2VkVHVwbGUoVnMmJi4u
LiBiYXNlKQorICAgICAgOiBDb21wcmVzc2VkVHVwbGU6OkNvbXByZXNzZWRUdXBsZUltcGwoYWJz
bDo6aW5fcGxhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjpmb3J3YXJkPFZzPihiYXNlKS4uLikge30KKworICB0ZW1wbGF0ZSA8aW50IEk+Cisg
IEVsZW1UPEk+JiBnZXQoKSAmIHsKKyAgICByZXR1cm4gaW50ZXJuYWxfY29tcHJlc3NlZF90dXBs
ZTo6U3RvcmFnZTxFbGVtVDxJPiwgST46OmdldCgpOworICB9CisKKyAgdGVtcGxhdGUgPGludCBJ
PgorICBjb25zdGV4cHIgY29uc3QgRWxlbVQ8ST4mIGdldCgpIGNvbnN0JiB7CisgICAgcmV0dXJu
IFN0b3JhZ2VUPEk+OjpnZXQoKTsKKyAgfQogCiAgIHRlbXBsYXRlIDxpbnQgST4KLSAgRWxlbVQ8
ST4mIGdldCgpIHsKLSAgICByZXR1cm4gaW50ZXJuYWxfY29tcHJlc3NlZF90dXBsZTo6U3RvcmFn
ZTxDb21wcmVzc2VkVHVwbGUsIEk+OjpnZXQoKTsKKyAgRWxlbVQ8ST4mJiBnZXQoKSAmJiB7Cisg
ICAgcmV0dXJuIHN0ZDo6bW92ZSgqdGhpcykuU3RvcmFnZVQ8ST46OmdldCgpOwogICB9CiAKICAg
dGVtcGxhdGUgPGludCBJPgotICBjb25zdGV4cHIgY29uc3QgRWxlbVQ8ST4mIGdldCgpIGNvbnN0
IHsKLSAgICByZXR1cm4gaW50ZXJuYWxfY29tcHJlc3NlZF90dXBsZTo6U3RvcmFnZTxDb21wcmVz
c2VkVHVwbGUsIEk+OjpnZXQoKTsKKyAgY29uc3RleHByIGNvbnN0IEVsZW1UPEk+JiYgZ2V0KCkg
Y29uc3QmJiB7CisgICAgcmV0dXJuIGFic2w6Om1vdmUoKnRoaXMpLlN0b3JhZ2VUPEk+OjpnZXQo
KTsKICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbXBy
ZXNzZWRfdHVwbGVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21wcmVzc2Vk
X3R1cGxlX3Rlc3QuY2MKaW5kZXggNDUwMzBjNjc1ZWUxYWRhZjI0MjcyNDAxYjI2Y2JkOWFjNTNh
OTdhNy4uMTlhZjhmMTBhYTZjZjcwOWQ3NDY3MzQ0ZDExM2U3YTk5MWQxZWY1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbXByZXNzZWRfdHVwbGVfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZV90ZXN0LmNjCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNCwxNyArMTQsMjYgQEAK
IAogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbXByZXNzZWRfdHVwbGUuaCIK
IAorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJnbW9j
ay9nbW9jay5oIgogI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgiCisjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9hbnkuaCIKKyNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC91dGlsaXR5L3V0aWxpdHkuaCIK
IAotbmFtZXNwYWNlIGFic2wgewotbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7Ci1uYW1l
c3BhY2UgeworLy8gVGhlc2UgYXJlIGRlY2xhcmVkIGF0IGdsb2JhbCBzY29wZSBwdXJlbHkgc28g
dGhhdCBlcnJvciBtZXNzYWdlcworLy8gYXJlIHNtYWxsZXIgYW5kIGVhc2llciB0byB1bmRlcnN0
YW5kLgorZW51bSBjbGFzcyBDYWxsVHlwZSB7IGtDb25zdFJlZiwga0NvbnN0TW92ZSB9OwogCiB0
ZW1wbGF0ZSA8aW50Pgotc3RydWN0IEVtcHR5IHt9Oworc3RydWN0IEVtcHR5IHsKKyAgY29uc3Rl
eHByIENhbGxUeXBlIHZhbHVlKCkgY29uc3QmIHsgcmV0dXJuIENhbGxUeXBlOjprQ29uc3RSZWY7
IH0KKyAgY29uc3RleHByIENhbGxUeXBlIHZhbHVlKCkgY29uc3QmJiB7IHJldHVybiBDYWxsVHlw
ZTo6a0NvbnN0TW92ZTsgfQorfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgTm90
RW1wdHkgewpAQCAtMzcsNiArNDYsMTQgQEAgc3RydWN0IFR3b1ZhbHVlcyB7CiAgIFUgdmFsdWUy
OwogfTsKIAorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
IHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIGFic2w6OnRlc3RfaW50ZXJuYWw6OkNvcHlhYmxlTW92
YWJsZUluc3RhbmNlOwordXNpbmcgYWJzbDo6dGVzdF9pbnRlcm5hbDo6SW5zdGFuY2VUcmFja2Vy
OworCiBURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIFNpemVvZikgewogICBFWFBFQ1RfRVEoc2l6
ZW9mKGludCksIHNpemVvZihDb21wcmVzc2VkVHVwbGU8aW50PikpOwogICBFWFBFQ1RfRVEoc2l6
ZW9mKGludCksIHNpemVvZihDb21wcmVzc2VkVHVwbGU8aW50LCBFbXB0eTwwPj4pKTsKQEAgLTUy
LDYgKzY5LDE0MSBAQCBURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIFNpemVvZikgewogICAgICAg
ICAgICAgc2l6ZW9mKENvbXByZXNzZWRUdXBsZTxpbnQsIEVtcHR5PDA+LCBOb3RFbXB0eTxkb3Vi
bGU+LCBFbXB0eTwxPj4pKTsKIH0KIAorVEVTVChDb21wcmVzc2VkVHVwbGVUZXN0LCBPbmVNb3Zl
T25SVmFsdWVDb25zdHJ1Y3Rpb25UZW1wKSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyOwor
ICBDb21wcmVzc2VkVHVwbGU8Q29weWFibGVNb3ZhYmxlSW5zdGFuY2U+IHgxKENvcHlhYmxlTW92
YWJsZUluc3RhbmNlKDEpKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuaW5zdGFuY2VzKCksIDEpOwor
ICBFWFBFQ1RfRVEodHJhY2tlci5jb3BpZXMoKSwgMCk7CisgIEVYUEVDVF9MRSh0cmFja2VyLm1v
dmVzKCksIDEpOworICBFWFBFQ1RfRVEoeDEuZ2V0PDA+KCkudmFsdWUoKSwgMSk7Cit9CisKK1RF
U1QoQ29tcHJlc3NlZFR1cGxlVGVzdCwgT25lTW92ZU9uUlZhbHVlQ29uc3RydWN0aW9uTW92ZSkg
eworICBJbnN0YW5jZVRyYWNrZXIgdHJhY2tlcjsKKworICBDb3B5YWJsZU1vdmFibGVJbnN0YW5j
ZSBpMSgxKTsKKyAgQ29tcHJlc3NlZFR1cGxlPENvcHlhYmxlTW92YWJsZUluc3RhbmNlPiB4MShz
dGQ6Om1vdmUoaTEpKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuaW5zdGFuY2VzKCksIDIpOworICBF
WFBFQ1RfRVEodHJhY2tlci5jb3BpZXMoKSwgMCk7CisgIEVYUEVDVF9MRSh0cmFja2VyLm1vdmVz
KCksIDEpOworICBFWFBFQ1RfRVEoeDEuZ2V0PDA+KCkudmFsdWUoKSwgMSk7Cit9CisKK1RFU1Qo
Q29tcHJlc3NlZFR1cGxlVGVzdCwgT25lTW92ZU9uUlZhbHVlQ29uc3RydWN0aW9uTWl4ZWRUeXBl
cykgeworICBJbnN0YW5jZVRyYWNrZXIgdHJhY2tlcjsKKyAgQ29weWFibGVNb3ZhYmxlSW5zdGFu
Y2UgaTEoMSk7CisgIENvcHlhYmxlTW92YWJsZUluc3RhbmNlIGkyKDIpOworICBFbXB0eTwwPiBl
bXB0eTsKKyAgQ29tcHJlc3NlZFR1cGxlPENvcHlhYmxlTW92YWJsZUluc3RhbmNlLCBDb3B5YWJs
ZU1vdmFibGVJbnN0YW5jZSYsIEVtcHR5PDA+PgorICAgICAgeDEoc3RkOjptb3ZlKGkxKSwgaTIs
IGVtcHR5KTsKKyAgRVhQRUNUX0VRKHgxLmdldDwwPigpLnZhbHVlKCksIDEpOworICBFWFBFQ1Rf
RVEoeDEuZ2V0PDE+KCkudmFsdWUoKSwgMik7CisgIEVYUEVDVF9FUSh0cmFja2VyLmNvcGllcygp
LCAwKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMSk7Cit9CisKK3N0cnVjdCBJbmNv
bXBsZXRlVHlwZTsKK0NvbXByZXNzZWRUdXBsZTxDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSwgSW5j
b21wbGV0ZVR5cGUmLCBFbXB0eTwwPj4KK01ha2VXaXRoSW5jb21wbGV0ZShDb3B5YWJsZU1vdmFi
bGVJbnN0YW5jZSBpMSwKKyAgICAgICAgICAgICAgICAgICBJbmNvbXBsZXRlVHlwZSYgdCwgIC8v
IE5PTElOVAorICAgICAgICAgICAgICAgICAgIEVtcHR5PDA+IGVtcHR5KSB7CisgIHJldHVybiBD
b21wcmVzc2VkVHVwbGU8Q29weWFibGVNb3ZhYmxlSW5zdGFuY2UsIEluY29tcGxldGVUeXBlJiwg
RW1wdHk8MD4+eworICAgICAgc3RkOjptb3ZlKGkxKSwgdCwgZW1wdHl9OworfQorCitzdHJ1Y3Qg
SW5jb21wbGV0ZVR5cGUge307CitURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIE9uZU1vdmVPblJW
YWx1ZUNvbnN0cnVjdGlvbldpdGhJbmNvbXBsZXRlVHlwZSkgeworICBJbnN0YW5jZVRyYWNrZXIg
dHJhY2tlcjsKKyAgQ29weWFibGVNb3ZhYmxlSW5zdGFuY2UgaTEoMSk7CisgIEVtcHR5PDA+IGVt
cHR5OworICBzdHJ1Y3QgRGVyaXZlZFR5cGUgOiBJbmNvbXBsZXRlVHlwZSB7aW50IHZhbHVlID0g
MDt9OworICBEZXJpdmVkVHlwZSBmZDsKKyAgZmQudmFsdWUgPSA3OworCisgIENvbXByZXNzZWRU
dXBsZTxDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSwgSW5jb21wbGV0ZVR5cGUmLCBFbXB0eTwwPj4g
eDEgPQorICAgICAgTWFrZVdpdGhJbmNvbXBsZXRlKHN0ZDo6bW92ZShpMSksIGZkLCBlbXB0eSk7
CisKKyAgRVhQRUNUX0VRKHgxLmdldDwwPigpLnZhbHVlKCksIDEpOworICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8RGVyaXZlZFR5cGUmPih4MS5nZXQ8MT4oKSkudmFsdWUsIDcpOworCisgIEVYUEVD
VF9FUSh0cmFja2VyLmNvcGllcygpLCAwKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwg
Mik7Cit9CisKK1RFU1QoQ29tcHJlc3NlZFR1cGxlVGVzdCwKKyAgICAgT25lTW92ZU9uUlZhbHVl
Q29uc3RydWN0aW9uTWl4ZWRUeXBlc19CcmFjZUluaXRQb2lzb25QaWxsRXhwZWN0ZWQpIHsKKyAg
SW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIENvcHlhYmxlTW92YWJsZUluc3RhbmNlIGkxKDEp
OworICBDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSBpMigyKTsKKyAgQ29tcHJlc3NlZFR1cGxlPENv
cHlhYmxlTW92YWJsZUluc3RhbmNlLCBDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSYsIEVtcHR5PDA+
PgorICAgICAgeDEoc3RkOjptb3ZlKGkxKSwgaTIsIHt9KTsgIC8vIE5PTElOVAorICBFWFBFQ1Rf
RVEoeDEuZ2V0PDA+KCkudmFsdWUoKSwgMSk7CisgIEVYUEVDVF9FUSh4MS5nZXQ8MT4oKS52YWx1
ZSgpLCAyKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuaW5zdGFuY2VzKCksIDMpOworICAvLyBXZSBh
cmUgZm9yY2VkIGludG8gdGhlIGBjb25zdCBUcyYuLi5gIGNvbnN0cnVjdG9yIChpbnZva2luZyBj
b3BpZXMpCisgIC8vIGJlY2F1c2Ugd2UgbmVlZCBpdCB0byBkZWR1Y2UgdGhlIHR5cGUgb2YgYHt9
YC4KKyAgLy8gc3RkOjp0dXBsZSBhbHNvIGhhcyB0aGlzIGJlaGF2aW9yLgorICAvLyBOb3RlLCB0
aGlzIHRlc3QgaXMgcHJvb2YgdGhhdCB0aGlzIGlzIGV4cGVjdGVkIGJlaGF2aW9yLCBidXQgaXQg
aXMgbm90CisgIC8vIF9kZXNpcmVkXyBiZWhhdmlvci4KKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29w
aWVzKCksIDEpOworICBFWFBFQ1RfRVEodHJhY2tlci5tb3ZlcygpLCAwKTsKK30KKworVEVTVChD
b21wcmVzc2VkVHVwbGVUZXN0LCBPbmVDb3B5T25MVmFsdWVDb25zdHJ1Y3Rpb24pIHsKKyAgSW5z
dGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIENvcHlhYmxlTW92YWJsZUluc3RhbmNlIGkxKDEpOwor
CisgIENvbXByZXNzZWRUdXBsZTxDb3B5YWJsZU1vdmFibGVJbnN0YW5jZT4geDEoaTEpOworICBF
WFBFQ1RfRVEodHJhY2tlci5jb3BpZXMoKSwgMSk7CisgIEVYUEVDVF9FUSh0cmFja2VyLm1vdmVz
KCksIDApOworCisgIHRyYWNrZXIuUmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCk7CisKKyAgQ29weWFi
bGVNb3ZhYmxlSW5zdGFuY2UgaTIoMik7CisgIGNvbnN0IENvcHlhYmxlTW92YWJsZUluc3RhbmNl
JiBpMl9yZWYgPSBpMjsKKyAgQ29tcHJlc3NlZFR1cGxlPENvcHlhYmxlTW92YWJsZUluc3RhbmNl
PiB4MihpMl9yZWYpOworICBFWFBFQ1RfRVEodHJhY2tlci5jb3BpZXMoKSwgMSk7CisgIEVYUEVD
VF9FUSh0cmFja2VyLm1vdmVzKCksIDApOworfQorCitURVNUKENvbXByZXNzZWRUdXBsZVRlc3Qs
IE9uZU1vdmVPblJWYWx1ZUFjY2VzcykgeworICBJbnN0YW5jZVRyYWNrZXIgdHJhY2tlcjsKKyAg
Q29weWFibGVNb3ZhYmxlSW5zdGFuY2UgaTEoMSk7CisgIENvbXByZXNzZWRUdXBsZTxDb3B5YWJs
ZU1vdmFibGVJbnN0YW5jZT4geChzdGQ6Om1vdmUoaTEpKTsKKyAgdHJhY2tlci5SZXNldENvcGll
c01vdmVzU3dhcHMoKTsKKworICBDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSBpMiA9IHN0ZDo6bW92
ZSh4KS5nZXQ8MD4oKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDApOworICBFWFBF
Q1RfRVEodHJhY2tlci5tb3ZlcygpLCAxKTsKK30KKworVEVTVChDb21wcmVzc2VkVHVwbGVUZXN0
LCBPbmVDb3B5T25MVmFsdWVBY2Nlc3MpIHsKKyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisK
KyAgQ29tcHJlc3NlZFR1cGxlPENvcHlhYmxlTW92YWJsZUluc3RhbmNlPiB4KENvcHlhYmxlTW92
YWJsZUluc3RhbmNlKDApKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDApOworICBF
WFBFQ1RfRVEodHJhY2tlci5tb3ZlcygpLCAxKTsKKworICBDb3B5YWJsZU1vdmFibGVJbnN0YW5j
ZSB0ID0geC5nZXQ8MD4oKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDEpOworICBF
WFBFQ1RfRVEodHJhY2tlci5tb3ZlcygpLCAxKTsKK30KKworVEVTVChDb21wcmVzc2VkVHVwbGVU
ZXN0LCBaZXJvQ29weU9uUmVmQWNjZXNzKSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyOwor
CisgIENvbXByZXNzZWRUdXBsZTxDb3B5YWJsZU1vdmFibGVJbnN0YW5jZT4geChDb3B5YWJsZU1v
dmFibGVJbnN0YW5jZSgwKSk7CisgIEVYUEVDVF9FUSh0cmFja2VyLmNvcGllcygpLCAwKTsKKyAg
RVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMSk7CisKKyAgQ29weWFibGVNb3ZhYmxlSW5zdGFu
Y2UmIHQxID0geC5nZXQ8MD4oKTsKKyAgY29uc3QgQ29weWFibGVNb3ZhYmxlSW5zdGFuY2UmIHQy
ID0geC5nZXQ8MD4oKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDApOworICBFWFBF
Q1RfRVEodHJhY2tlci5tb3ZlcygpLCAxKTsKKyAgRVhQRUNUX0VRKHQxLnZhbHVlKCksIDApOwor
ICBFWFBFQ1RfRVEodDIudmFsdWUoKSwgMCk7Cit9CisKIFRFU1QoQ29tcHJlc3NlZFR1cGxlVGVz
dCwgQWNjZXNzKSB7CiAgIHN0cnVjdCBTIHsKICAgICBzdGQ6OnN0cmluZyB4OwpAQCAtMTEyLDkg
KzI2NCwxNCBAQCBURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIE5lc3RlZCkgewogICBFWFBFQ1Rf
RVEoNCAqIHNpemVvZihjaGFyKSwKICAgICAgICAgICAgIHNpemVvZihDb21wcmVzc2VkVHVwbGU8
Q29tcHJlc3NlZFR1cGxlPGNoYXIsIGNoYXI+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb21wcmVzc2VkVHVwbGU8Y2hhciwgY2hhcj4+KSk7Ci0gIEVYUEVDVF9UUlVFKAot
ICAgICAgKHN0ZDo6aXNfZW1wdHk8Q29tcHJlc3NlZFR1cGxlPENvbXByZXNzZWRUdXBsZTxFbXB0
eTwwPj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZFR1
cGxlPEVtcHR5PDE+Pj4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoc3RkOjppc19lbXB0eTxD
b21wcmVzc2VkVHVwbGU8RW1wdHk8MD4sIEVtcHR5PDE+Pj46OnZhbHVlKSk7CisKKyAgLy8gTWFr
ZSBzdXJlIGV2ZXJ5dGhpbmcgc3RpbGwgd29ya3Mgd2hlbiB0aGluZ3MgYXJlIG5lc3RlZC4KKyAg
c3RydWN0IENUX0VtcHR5IDogQ29tcHJlc3NlZFR1cGxlPEVtcHR5PDA+PiB7fTsKKyAgQ29tcHJl
c3NlZFR1cGxlPEVtcHR5PDA+LCBDVF9FbXB0eT4gbmVzdGVkX2VtcHR5OworICBhdXRvIGNvbnRh
aW5lZCA9IG5lc3RlZF9lbXB0eS5nZXQ8MD4oKTsKKyAgYXV0byBuZXN0ZWQgPSBuZXN0ZWRfZW1w
dHkuZ2V0PDE+KCkuZ2V0PDA+KCk7CisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUoY29udGFpbmVkKSwgZGVjbHR5cGUobmVzdGVkKT46OnZhbHVlKSk7CiB9CiAKIFRFU1QoQ29t
cHJlc3NlZFR1cGxlVGVzdCwgUmVmZXJlbmNlKSB7CkBAIC0xNDAsMTUgKzI5NywxMDMgQEAgVEVT
VChDb21wcmVzc2VkVHVwbGVUZXN0LCBOb0VsZW1lbnRzKSB7CiAgIEVYUEVDVF9UUlVFKHN0ZDo6
aXNfZW1wdHk8Q29tcHJlc3NlZFR1cGxlPD4+Ojp2YWx1ZSk7CiB9CiAKK1RFU1QoQ29tcHJlc3Nl
ZFR1cGxlVGVzdCwgTW92ZU9ubHlFbGVtZW50cykgeworICBDb21wcmVzc2VkVHVwbGU8c3RkOjp1
bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPj4gc3RyX3R1cCgKKyAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PHN0ZDo6c3RyaW5nPigic3RyIikpOworCisgIENvbXByZXNzZWRUdXBsZTxDb21wcmVzc2VkVHVw
bGU8c3RkOjp1bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPj4sCisgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8aW50Pj4KKyAgeChzdGQ6Om1vdmUoc3RyX3R1cCksIGFic2w6Om1ha2VfdW5p
cXVlPGludD4oNSkpOworCisgIEVYUEVDVF9FUSgqeC5nZXQ8MD4oKS5nZXQ8MD4oKSwgInN0ciIp
OworICBFWFBFQ1RfRVEoKnguZ2V0PDE+KCksIDUpOworCisgIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6
OnN0cmluZz4geDAgPSBzdGQ6Om1vdmUoeC5nZXQ8MD4oKSkuZ2V0PDA+KCk7CisgIHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+IHgxID0gc3RkOjptb3ZlKHgpLmdldDwxPigpOworCisgIEVYUEVDVF9FUSgq
eDAsICJzdHIiKTsKKyAgRVhQRUNUX0VRKCp4MSwgNSk7Cit9CisKK1RFU1QoQ29tcHJlc3NlZFR1
cGxlVGVzdCwgTW92ZUNvbnN0cnVjdGlvbk1vdmVPbmx5RWxlbWVudHMpIHsKKyAgQ29tcHJlc3Nl
ZFR1cGxlPHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmluZz4+IGJhc2UoCisgICAgICBhYnNsOjpt
YWtlX3VuaXF1ZTxzdGQ6OnN0cmluZz4oInN0ciIpKTsKKyAgRVhQRUNUX0VRKCpiYXNlLmdldDww
PigpLCAic3RyIik7CisKKyAgQ29tcHJlc3NlZFR1cGxlPHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0
cmluZz4+IGNvcHkoc3RkOjptb3ZlKGJhc2UpKTsKKyAgRVhQRUNUX0VRKCpjb3B5LmdldDwwPigp
LCAic3RyIik7Cit9CisKK1RFU1QoQ29tcHJlc3NlZFR1cGxlVGVzdCwgQW55RWxlbWVudHMpIHsK
KyAgYW55IGEoc3RkOjpzdHJpbmcoInN0ciIpKTsKKyAgQ29tcHJlc3NlZFR1cGxlPGFueSwgYW55
Jj4geChhbnkoNSksIGEpOworICBFWFBFQ1RfRVEoYWJzbDo6YW55X2Nhc3Q8aW50Pih4LmdldDww
PigpKSwgNSk7CisgIEVYUEVDVF9FUShhYnNsOjphbnlfY2FzdDxzdGQ6OnN0cmluZz4oeC5nZXQ8
MT4oKSksICJzdHIiKTsKKworICBhID0gMC41ZjsKKyAgRVhQRUNUX0VRKGFic2w6OmFueV9jYXN0
PGZsb2F0Pih4LmdldDwxPigpKSwgMC41KTsKKworICAvLyBFbnN1cmUgY29weSBjb25zdHJ1Y3Rp
b24gd29yayBpbiB0aGUgZmFjZSBvZiBhIHR5cGUgd2l0aCBhIHVuaXZlcnNhbAorICAvLyBpbXBs
aWNpdCBjb25zdHJ1Y3RvcjsKKyAgQ29tcHJlc3NlZFR1cGxlPGFic2w6OmFueT4gY3t9LCBkKGMp
OyAgLy8gTk9MSU5UCit9CisKIFRFU1QoQ29tcHJlc3NlZFR1cGxlVGVzdCwgQ29uc3RleHByKSB7
Ci0gIGNvbnN0ZXhwciBDb21wcmVzc2VkVHVwbGU8aW50LCBkb3VibGUsIENvbXByZXNzZWRUdXBs
ZTxpbnQ+PiB4KAotICAgICAgNywgMS4yNSwgQ29tcHJlc3NlZFR1cGxlPGludD4oNSkpOworICBz
dHJ1Y3QgTm9uVHJpdmlhbFN0cnVjdCB7CisgICAgY29uc3RleHByIE5vblRyaXZpYWxTdHJ1Y3Qo
KSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHY7
IH0KKyAgICBpbnQgdiA9IDU7CisgIH07CisgIHN0cnVjdCBUcml2aWFsU3RydWN0IHsKKyAgICBU
cml2aWFsU3RydWN0KCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBpbnQgdmFsdWUoKSBjb25z
dCB7IHJldHVybiB2OyB9CisgICAgaW50IHY7CisgIH07CisgIGNvbnN0ZXhwciBDb21wcmVzc2Vk
VHVwbGU8aW50LCBkb3VibGUsIENvbXByZXNzZWRUdXBsZTxpbnQ+LCBFbXB0eTwwPj4geCgKKyAg
ICAgIDcsIDEuMjUsIENvbXByZXNzZWRUdXBsZTxpbnQ+KDUpLCB7fSk7CiAgIGNvbnN0ZXhwciBp
bnQgeDAgPSB4LmdldDwwPigpOwogICBjb25zdGV4cHIgZG91YmxlIHgxID0geC5nZXQ8MT4oKTsK
ICAgY29uc3RleHByIGludCB4MiA9IHguZ2V0PDI+KCkuZ2V0PDA+KCk7CisgIGNvbnN0ZXhwciBD
YWxsVHlwZSB4MyA9IHguZ2V0PDM+KCkudmFsdWUoKTsKKwogICBFWFBFQ1RfRVEoeDAsIDcpOwog
ICBFWFBFQ1RfRVEoeDEsIDEuMjUpOwogICBFWFBFQ1RfRVEoeDIsIDUpOworICBFWFBFQ1RfRVEo
eDMsIENhbGxUeXBlOjprQ29uc3RSZWYpOworCisjaWYgIWRlZmluZWQoX19HTlVDX18pIHx8IGRl
ZmluZWQoX19jbGFuZ19fKSB8fCBfX0dOVUNfXyA+IDQKKyAgY29uc3RleHByIENvbXByZXNzZWRU
dXBsZTxFbXB0eTwwPiwgVHJpdmlhbFN0cnVjdCwgaW50PiB0cml2aWFsID0ge307CisgIGNvbnN0
ZXhwciBDYWxsVHlwZSB0cml2aWFsMCA9IHRyaXZpYWwuZ2V0PDA+KCkudmFsdWUoKTsKKyAgY29u
c3RleHByIGludCB0cml2aWFsMSA9IHRyaXZpYWwuZ2V0PDE+KCkudmFsdWUoKTsKKyAgY29uc3Rl
eHByIGludCB0cml2aWFsMiA9IHRyaXZpYWwuZ2V0PDI+KCk7CisKKyAgRVhQRUNUX0VRKHRyaXZp
YWwwLCBDYWxsVHlwZTo6a0NvbnN0UmVmKTsKKyAgRVhQRUNUX0VRKHRyaXZpYWwxLCAwKTsKKyAg
RVhQRUNUX0VRKHRyaXZpYWwyLCAwKTsKKyNlbmRpZgorCisgIGNvbnN0ZXhwciBDb21wcmVzc2Vk
VHVwbGU8RW1wdHk8MD4sIE5vblRyaXZpYWxTdHJ1Y3QsIGFic2w6Om9wdGlvbmFsPGludD4+Cisg
ICAgICBub25fdHJpdmlhbCA9IHt9OworICBjb25zdGV4cHIgQ2FsbFR5cGUgbm9uX3RyaXZpYWww
ID0gbm9uX3RyaXZpYWwuZ2V0PDA+KCkudmFsdWUoKTsKKyAgY29uc3RleHByIGludCBub25fdHJp
dmlhbDEgPSBub25fdHJpdmlhbC5nZXQ8MT4oKS52YWx1ZSgpOworICBjb25zdGV4cHIgYWJzbDo6
b3B0aW9uYWw8aW50PiBub25fdHJpdmlhbDIgPSBub25fdHJpdmlhbC5nZXQ8Mj4oKTsKKworICBF
WFBFQ1RfRVEobm9uX3RyaXZpYWwwLCBDYWxsVHlwZTo6a0NvbnN0UmVmKTsKKyAgRVhQRUNUX0VR
KG5vbl90cml2aWFsMSwgNSk7CisgIEVYUEVDVF9FUShub25fdHJpdmlhbDIsIGFic2w6Om51bGxv
cHQpOworCisgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBkYXRhW10gPSAiREVGIjsKKyAgY29uc3Rl
eHByIENvbXByZXNzZWRUdXBsZTxjb25zdCBjaGFyKj4geihkYXRhKTsKKyAgY29uc3RleHByIGNv
bnN0IGNoYXIqIHoxID0gei5nZXQ8MD4oKTsKKyAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKHoxKSwg
c3RkOjpzdHJpbmcoZGF0YSkpOworCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisgIC8vIEFuIGFw
cGFyZW50IGJ1ZyBpbiBlYXJsaWVyIHZlcnNpb25zIG9mIGdjYyBjbGFpbXMgdGhlc2UgYXJlIGFt
YmlndW91cy4KKyAgY29uc3RleHByIGludCB4Mm0gPSBhYnNsOjptb3ZlKHguZ2V0PDI+KCkpLmdl
dDwwPigpOworICBjb25zdGV4cHIgQ2FsbFR5cGUgeDNtID0gYWJzbDo6bW92ZSh4KS5nZXQ8Mz4o
KS52YWx1ZSgpOworICBFWFBFQ1RfRVEoeDJtLCA1KTsKKyAgRVhQRUNUX0VRKHgzbSwgQ2FsbFR5
cGU6OmtDb25zdE1vdmUpOworI2VuZGlmCiB9CiAKICNpZiBkZWZpbmVkKF9fY2xhbmdfXykgfHwg
ZGVmaW5lZChfX0dOVUNfXykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9j
b250YWluZXJfbWVtb3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21l
bW9yeS5oCmluZGV4IDU2YzVkMmRmNjczMTRlODI5ZmM5ZjU5MWIzNmU2NWFiOWRmM2UwY2EuLmU1
YmI5NzczNTVlZTIyOWRiZTY5NWM0YTFkZjRkZTE2NDdkYTA0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApAQCAtMjg2LDEzICsyODYsNDggQEAgc3RydWN0IElzTGF5b3V0Q29t
cGF0aWJsZSB7CiAKIH0gIC8vIG5hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwKIAotLy8gSWYga011
dGFibGVLZXlzIGlzIGZhbHNlLCBvbmx5IHRoZSB2YWx1ZSBtZW1iZXIgaXMgYWNjZXNzZWQuCisv
LyBUaGUgaW50ZXJuYWwgc3RvcmFnZSB0eXBlIGZvciBrZXktdmFsdWUgY29udGFpbmVycyBsaWtl
IGZsYXRfaGFzaF9tYXAuCiAvLwotLy8gSWYga011dGFibGVLZXlzIGlzIHRydWUsIGtleSBpcyBh
Y2Nlc3NlZCB0aHJvdWdoIGFsbCBzbG90cyB3aGlsZSB2YWx1ZSBhbmQKLS8vIG11dGFibGVfdmFs
dWUgYXJlIGFjY2Vzc2VkIG9ubHkgdmlhIElOSVRJQUxJWkVEIHNsb3RzLiBTbG90cyBhcmUgY3Jl
YXRlZCBhbmQKLS8vIGRlc3Ryb3llZCB2aWEgbXV0YWJsZV92YWx1ZSBzbyB0aGF0IHRoZSBrZXkg
Y2FuIGJlIG1vdmVkIGxhdGVyLgorLy8gSXQgaXMgY29udmVuaWVudCBmb3IgdGhlIHZhbHVlX3R5
cGUgb2YgYSBmbGF0X2hhc2hfbWFwPEssIFY+IHRvIGJlCisvLyBwYWlyPGNvbnN0IEssIFY+OyB0
aGUgImNvbnN0IEsiIHByZXZlbnRzIGFjY2lkZW50YWwgbW9kaWZpY2F0aW9uIG9mIHRoZSBrZXkK
Ky8vIHdoZW4gZGVhbGluZyB3aXRoIHRoZSByZWZlcmVuY2UgcmV0dXJuZWQgZnJvbSBmaW5kKCkg
YW5kIHNpbWlsYXIgbWV0aG9kcy4KKy8vIEhvd2V2ZXIsIHRoaXMgY3JlYXRlcyBvdGhlciBwcm9i
bGVtczsgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGVtcGxhY2UoSywgVikKKy8vIGVmZmljaWVudGx5
IHdpdGggbW92ZSBvcGVyYXRpb25zLCBhbmQgc2ltaWxhcmx5IGJlIGFibGUgdG8gbW92ZSBhCisv
LyBwYWlyPEssIFY+IGluIGluc2VydCgpLgorLy8KKy8vIFRoZSBzb2x1dGlvbiBpcyB0aGlzIHVu
aW9uLCB3aGljaCBhbGlhc2VzIHRoZSBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zCisvLyBv
ZiB0aGUgcGFpci4gVGhpcyBhbHNvIGFsbG93cyBmbGF0X2hhc2hfbWFwPGNvbnN0IEssIFY+IHRv
IHdvcmssIGV2ZW4gdGhvdWdoCisvLyB0aGF0IGhhcyB0aGUgc2FtZSBlZmZpY2llbmN5IGlzc3Vl
cyB3aXRoIG1vdmUgaW4gZW1wbGFjZSgpIGFuZCBpbnNlcnQoKSAtCisvLyBidXQgcGVvcGxlIGRv
IGl0IGFueXdheS4KKy8vCisvLyBJZiBrTXV0YWJsZUtleXMgaXMgZmFsc2UsIG9ubHkgdGhlIHZh
bHVlIG1lbWJlciBjYW4gYmUgYWNjZXNzZWQuCisvLworLy8gSWYga011dGFibGVLZXlzIGlzIHRy
dWUsIGtleSBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCBhbGwgc2xvdHMgd2hpbGUgdmFsdWUKKy8v
IGFuZCBtdXRhYmxlX3ZhbHVlIG11c3QgYmUgYWNjZXNzZWQgb25seSB2aWEgSU5JVElBTElaRUQg
c2xvdHMuIFNsb3RzIGFyZQorLy8gY3JlYXRlZCBhbmQgZGVzdHJveWVkIHZpYSBtdXRhYmxlX3Zh
bHVlIHNvIHRoYXQgdGhlIGtleSBjYW4gYmUgbW92ZWQgbGF0ZXIuCisvLworLy8gQWNjZXNzaW5n
IG9uZSBvZiB0aGUgdW5pb24gZmllbGRzIHdoaWxlIHRoZSBvdGhlciBpcyBhY3RpdmUgaXMgc2Fm
ZSBhcworLy8gbG9uZyBhcyB0aGV5IGFyZSBsYXlvdXQtY29tcGF0aWJsZSwgd2hpY2ggaXMgZ3Vh
cmFudGVlZCBieSB0aGUgZGVmaW5pdGlvbiBvZgorLy8ga011dGFibGVLZXlzLiBGb3IgQysrMTEs
IHRoZSByZWxldmFudCBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBpcworLy8gaHR0cHM6Ly90aW1z
b25nLWNwcC5naXRodWIuaW8vY3Bwd3AvbjMzMzcvY2xhc3MubWVtIzE5ICg5LjIuMTkpCiB0ZW1w
bGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4KLXVuaW9uIHNsb3RfdHlwZSB7Cit1bmlvbiBtYXBfc2xv
dF90eXBlIHsKKyAgbWFwX3Nsb3RfdHlwZSgpIHt9CisgIH5tYXBfc2xvdF90eXBlKCkgPSBkZWxl
dGU7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSBzdGQ6OnBhaXI8Y29uc3QgSywgVj47CisgIHVzaW5n
IG11dGFibGVfdmFsdWVfdHlwZSA9IHN0ZDo6cGFpcjxLLCBWPjsKKworICB2YWx1ZV90eXBlIHZh
bHVlOworICBtdXRhYmxlX3ZhbHVlX3R5cGUgbXV0YWJsZV92YWx1ZTsKKyAgSyBrZXk7Cit9Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4KK3N0cnVjdCBtYXBfc2xvdF9wb2xpY3kgewor
ICB1c2luZyBzbG90X3R5cGUgPSBtYXBfc2xvdF90eXBlPEssIFY+OworICB1c2luZyB2YWx1ZV90
eXBlID0gc3RkOjpwYWlyPGNvbnN0IEssIFY+OworICB1c2luZyBtdXRhYmxlX3ZhbHVlX3R5cGUg
PSBzdGQ6OnBhaXI8SywgVj47CisKICBwcml2YXRlOgogICBzdGF0aWMgdm9pZCBlbXBsYWNlKHNs
b3RfdHlwZSogc2xvdCkgewogICAgIC8vIFRoZSBjb25zdHJ1Y3Rpb24gb2YgdW5pb24gZG9lc24n
dCBkbyBhbnl0aGluZyBhdCBydW50aW1lIGJ1dCBpdCBhbGxvd3MgdXMKQEAgLTMwMiwxOSArMzM3
LDE3IEBAIHVuaW9uIHNsb3RfdHlwZSB7CiAgIC8vIElmIHBhaXI8Y29uc3QgSywgVj4gYW5kIHBh
aXI8SywgVj4gYXJlIGxheW91dC1jb21wYXRpYmxlLCB3ZSBjYW4gYWNjZXB0IG9uZQogICAvLyBv
ciB0aGUgb3RoZXIgdmlhIHNsb3RfdHlwZS4gV2UgYXJlIGFsc28gZnJlZSB0byBhY2Nlc3MgdGhl
IGtleSB2aWEKICAgLy8gc2xvdF90eXBlOjprZXkgaW4gdGhpcyBjYXNlLgotICB1c2luZyBrTXV0
YWJsZUtleXMgPQotICAgICAgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZW1vcnlfaW50ZXJuYWw6OklzTGF5b3V0Q29tcGF0aWJsZTxL
LCBWPjo6dmFsdWU+OworICB1c2luZyBrTXV0YWJsZUtleXMgPSBtZW1vcnlfaW50ZXJuYWw6Oklz
TGF5b3V0Q29tcGF0aWJsZTxLLCBWPjsKIAogIHB1YmxpYzoKLSAgc2xvdF90eXBlKCkge30KLSAg
fnNsb3RfdHlwZSgpID0gZGVsZXRlOwotICB1c2luZyB2YWx1ZV90eXBlID0gc3RkOjpwYWlyPGNv
bnN0IEssIFY+OwotICB1c2luZyBtdXRhYmxlX3ZhbHVlX3R5cGUgPSBzdGQ6OnBhaXI8SywgVj47
CisgIHN0YXRpYyB2YWx1ZV90eXBlJiBlbGVtZW50KHNsb3RfdHlwZSogc2xvdCkgeyByZXR1cm4g
c2xvdC0+dmFsdWU7IH0KKyAgc3RhdGljIGNvbnN0IHZhbHVlX3R5cGUmIGVsZW1lbnQoY29uc3Qg
c2xvdF90eXBlKiBzbG90KSB7CisgICAgcmV0dXJuIHNsb3QtPnZhbHVlOworICB9CiAKLSAgdmFs
dWVfdHlwZSB2YWx1ZTsKLSAgbXV0YWJsZV92YWx1ZV90eXBlIG11dGFibGVfdmFsdWU7Ci0gIEsg
a2V5OworICBzdGF0aWMgY29uc3QgSyYga2V5KGNvbnN0IHNsb3RfdHlwZSogc2xvdCkgeworICAg
IHJldHVybiBrTXV0YWJsZUtleXM6OnZhbHVlID8gc2xvdC0+a2V5IDogc2xvdC0+dmFsdWUuZmly
c3Q7CisgIH0KIAogICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yLCBjbGFzcy4uLiBBcmdzPgog
ICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBzbG90
LCBBcmdzJiYuLi4gYXJncykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L2NvbnRhaW5lcl9tZW1vcnlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250
YWluZXJfbWVtb3J5X3Rlc3QuY2MKaW5kZXggZjFjNDA1ODI5OGMxNTc0MDlmZWM5YWM5OTA4NTBj
MGIxNDk0OTcxZi4uZDZiMDQ5NWYxNzNhZDRjNGIzYjJkZDZjMDE4Y2JjZWM2OGE1YTEyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnlfdGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvY291bnRpbmdfYWxsb2NhdG9yLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvY291bnRpbmdfYWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU3MTdiZWY2
Nzg5NDgzZjYxOGMyZDEwODdiZDg2MTRiZDVjOTc0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9jb3VudGluZ19hbGxvY2F0b3IuaApAQCAtMCwwICsxLDc5IEBA
CisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNM
X0NPTlRBSU5FUl9JTlRFUk5BTF9DT1VOVElOR19BTExPQ0FUT1JfSF8KKyNkZWZpbmUgQUJTTF9D
T05UQUlORVJfSU5URVJOQUxfQ09VTlRJTkdfQUxMT0NBVE9SX0hfCisKKyNpbmNsdWRlIDxjYXNz
ZXJ0PgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8bWVtb3J5PgorCituYW1lc3BhY2Ug
YWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKworLy8gVGhpcyBpcyBhIHN0
YXRlZnVsIGFsbG9jYXRvciwgYnV0IHRoZSBzdGF0ZSBsaXZlcyBvdXRzaWRlIG9mIHRoZQorLy8g
YWxsb2NhdG9yIChpbiB3aGF0ZXZlciB0ZXN0IGlzIHVzaW5nIHRoZSBhbGxvY2F0b3IpLiBUaGlz
IGlzIG9kZAorLy8gYnV0IGhlbHBzIGluIHRlc3RzIHdoZXJlIHRoZSBhbGxvY2F0b3IgaXMgcHJv
cGFnYXRlZCBpbnRvIG5lc3RlZAorLy8gY29udGFpbmVycyAtIHRoYXQgY2hhaW4gb2YgYWxsb2Nh
dG9ycyB1c2VzIHRoZSBzYW1lIHN0YXRlIGFuZCBpcworLy8gdGh1cyBlYXNpZXIgdG8gcXVlcnkg
Zm9yIGFnZ3JlZ2F0ZSBhbGxvY2F0aW9uIGluZm9ybWF0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitjbGFzcyBDb3VudGluZ0FsbG9jYXRvciA6IHB1YmxpYyBzdGQ6OmFsbG9jYXRvcjxUPiB7
CisgcHVibGljOgorICB1c2luZyBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPFQ+OworICB1c2luZyBw
b2ludGVyID0gdHlwZW5hbWUgQWxsb2M6OnBvaW50ZXI7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5
cGVuYW1lIEFsbG9jOjpzaXplX3R5cGU7CisKKyAgQ291bnRpbmdBbGxvY2F0b3IoKSA6IGJ5dGVz
X3VzZWRfKG51bGxwdHIpIHt9CisgIGV4cGxpY2l0IENvdW50aW5nQWxsb2NhdG9yKGludDY0X3Qq
IGIpIDogYnl0ZXNfdXNlZF8oYikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgQ291
bnRpbmdBbGxvY2F0b3IoY29uc3QgQ291bnRpbmdBbGxvY2F0b3I8VT4mIHgpCisgICAgICA6IEFs
bG9jKHgpLCBieXRlc191c2VkXyh4LmJ5dGVzX3VzZWRfKSB7fQorCisgIHBvaW50ZXIgYWxsb2Nh
dGUoc2l6ZV90eXBlIG4sCisgICAgICAgICAgICAgICAgICAgc3RkOjphbGxvY2F0b3I8dm9pZD46
OmNvbnN0X3BvaW50ZXIgaGludCA9IG51bGxwdHIpIHsKKyAgICBhc3NlcnQoYnl0ZXNfdXNlZF8g
IT0gbnVsbHB0cik7CisgICAgKmJ5dGVzX3VzZWRfICs9IG4gKiBzaXplb2YoVCk7CisgICAgcmV0
dXJuIEFsbG9jOjphbGxvY2F0ZShuLCBoaW50KTsKKyAgfQorCisgIHZvaWQgZGVhbGxvY2F0ZShw
b2ludGVyIHAsIHNpemVfdHlwZSBuKSB7CisgICAgQWxsb2M6OmRlYWxsb2NhdGUocCwgbik7Cisg
ICAgYXNzZXJ0KGJ5dGVzX3VzZWRfICE9IG51bGxwdHIpOworICAgICpieXRlc191c2VkXyAtPSBu
ICogc2l6ZW9mKFQpOworICB9CisKKyAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgY2xhc3MgcmVi
aW5kIHsKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBvdGhlciA9IENvdW50aW5nQWxsb2NhdG9yPFU+
OworICB9OworCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnRpbmdBbGxvY2F0
b3ImIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ291bnRpbmdBbGxvY2F0b3Im
IGIpIHsKKyAgICByZXR1cm4gYS5ieXRlc191c2VkXyA9PSBiLmJ5dGVzX3VzZWRfOworICB9CisK
KyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb3VudGluZ0FsbG9jYXRvciYgYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb3VudGluZ0FsbG9jYXRvciYgYikgeworICAg
IHJldHVybiAhKGEgPT0gYik7CisgIH0KKworICBpbnQ2NF90KiBieXRlc191c2VkXzsKK307CisK
K30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNs
CisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQ09VTlRJTkdfQUxMT0NBVE9S
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9k
ZWZhdWx0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVs
dHMuaAppbmRleCAxZjBkNzk0ZDk2NjM4ODE4NmRkN2RmZDY5YThhZTlhNmFkZjcwOWY2Li5jYjhm
MDNjODdhYWZiZDIxMzRkYjVkYmUzNWUxZjc5ZGQ0NWRhMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM5LDggKzM5LDggQEAKIC8vIGVxdWFsIGZ1
bmN0aW9ucyBhcmUgc3RpbGwgYm91bmQgdG8gVC4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBz
b21lIHR5cGUgVQogLy8gY2FuIGJlIGhhc2hlZCBieS90ZXN0ZWQgZm9yIGVxdWFsaXR5IGRpZmZl
cmVudGx5IGRlcGVuZGluZyBvbiBULiBBIG5vdGFibGUKIC8vIGV4YW1wbGUgaXMgYGNvbnN0IGNo
YXIqYC4gYGNvbnN0IGNoYXIqYCBpcyB0cmVhdGVkIGFzIGEgYy1zdHlsZSBzdHJpbmcgd2hlbgot
Ly8gdGhlIGhhc2ggZnVuY3Rpb24gaXMgaGFzaDxzdHJpbmc+IGJ1dCBhcyBhIHBvaW50ZXIgd2hl
biB0aGUgaGFzaCBmdW5jdGlvbiBpcwotLy8gaGFzaDx2b2lkKj4uCisvLyB0aGUgaGFzaCBmdW5j
dGlvbiBpcyBoYXNoPHN0ZDo6c3RyaW5nPiBidXQgYXMgYSBwb2ludGVyIHdoZW4gdGhlIGhhc2gK
Ky8vIGZ1bmN0aW9uIGlzIGhhc2g8dm9pZCo+LgogLy8KICNpZm5kZWYgQUJTTF9DT05UQUlORVJf
SU5URVJOQUxfSEFTSF9GVU5DVElPTl9ERUZBVUxUU19IXwogI2RlZmluZSBBQlNMX0NPTlRBSU5F
Ul9JTlRFUk5BTF9IQVNIX0ZVTkNUSU9OX0RFRkFVTFRTX0hfCkBAIC04Myw2ICs4Myw3IEBAIHN0
cnVjdCBTdHJpbmdIYXNoRXEgewogICAgIH0KICAgfTsKIH07CisKIHRlbXBsYXRlIDw+CiBzdHJ1
Y3QgSGFzaEVxPHN0ZDo6c3RyaW5nPiA6IFN0cmluZ0hhc2hFcSB7fTsKIHRlbXBsYXRlIDw+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0
c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVs
dHNfdGVzdC5jYwppbmRleCA0NjRiYWFlMDJjZGRiMGM0MWU2MTJlNTk3ODhkODM3ZDU5ZjkxN2Zj
Li44MjcwOGRiZTk1MzA2YTMxMzMwMDVhOTY0NGFmNmNmOTVkZTFiNzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0c190ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzX3Rlc3Qu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTc3LDE0ICs3
NywxNCBAQCBzdHJ1Y3QgRXFTdHJpbmcgOiA6OnRlc3Rpbmc6OlRlc3QgewogICBoYXNoX2RlZmF1
bHRfZXE8VD4ga2V5X2VxOwogfTsKIAotVFlQRURfVEVTVF9DQVNFKEVxU3RyaW5nLCBTdHJpbmdU
eXBlcyk7CitUWVBFRF9URVNUX1NVSVRFKEVxU3RyaW5nLCBTdHJpbmdUeXBlcyk7CiAKIHRlbXBs
YXRlIDxjbGFzcyBUPgogc3RydWN0IEhhc2hTdHJpbmcgOiA6OnRlc3Rpbmc6OlRlc3QgewogICBo
YXNoX2RlZmF1bHRfaGFzaDxUPiBoYXNoZXI7CiB9OwogCi1UWVBFRF9URVNUX0NBU0UoSGFzaFN0
cmluZywgU3RyaW5nVHlwZXMpOworVFlQRURfVEVTVF9TVUlURShIYXNoU3RyaW5nLCBTdHJpbmdU
eXBlcyk7CiAKIFRZUEVEX1RFU1QoRXFTdHJpbmcsIFdvcmtzKSB7CiAgIGF1dG8gZXEgPSB0aGlz
LT5rZXlfZXE7CkBAIC0xMjEsMTQgKzEyMSwxNCBAQCBzdHJ1Y3QgRXFQb2ludGVyIDogOjp0ZXN0
aW5nOjpUZXN0IHsKICAgaGFzaF9kZWZhdWx0X2VxPFQ+IGtleV9lcTsKIH07CiAKLVRZUEVEX1RF
U1RfQ0FTRShFcVBvaW50ZXIsIFBvaW50ZXJUeXBlcyk7CitUWVBFRF9URVNUX1NVSVRFKEVxUG9p
bnRlciwgUG9pbnRlclR5cGVzKTsKIAogdGVtcGxhdGUgPGNsYXNzIFQ+CiBzdHJ1Y3QgSGFzaFBv
aW50ZXIgOiA6OnRlc3Rpbmc6OlRlc3QgewogICBoYXNoX2RlZmF1bHRfaGFzaDxUPiBoYXNoZXI7
CiB9OwogCi1UWVBFRF9URVNUX0NBU0UoSGFzaFBvaW50ZXIsIFBvaW50ZXJUeXBlcyk7CitUWVBF
RF9URVNUX1NVSVRFKEhhc2hQb2ludGVyLCBQb2ludGVyVHlwZXMpOwogCiBUWVBFRF9URVNUKEVx
UG9pbnRlciwgV29ya3MpIHsKICAgaW50IGR1bW15OwpAQCAtMjAyLDE1ICsyMDIsMTEgQEAgVFlQ
RURfVEVTVChIYXNoUG9pbnRlciwgV29ya3MpIHsKICAgRVhQRUNUX05FKGhhc2goJmR1bW15KSwg
aGFzaChjdXB0cikpOwogfQogCi0vLyBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiAoc3RyaW5nLCBzdGQ6
OnN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXcpCi0vLyB3aXRoIChzdHJpbmcsIHN0ZDo6c3RyaW5n
LCBhYnNsOjpzdHJpbmdfdmlldywgY29uc3QgY2hhciopLgorLy8gQ2FydGVzaWFuIHByb2R1Y3Qg
b2YgKHN0ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldykKKy8vIHdpdGggKHN0ZDo6c3RyaW5n
LCBhYnNsOjpzdHJpbmdfdmlldywgY29uc3QgY2hhciopLgogdXNpbmcgU3RyaW5nVHlwZXNDYXJ0
ZXNpYW5Qcm9kdWN0ID0gVHlwZXM8CiAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogCi0gICAgc3Rk
OjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4sCi0gICAgc3RkOjpwYWlyPHN0ZDo6c3Ry
aW5nLCBhYnNsOjpzdHJpbmdfdmlldz4sCi0gICAgc3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBjb25z
dCBjaGFyKj4sCi0KICAgICBzdGQ6OnBhaXI8YWJzbDo6c3RyaW5nX3ZpZXcsIHN0ZDo6c3RyaW5n
PiwKICAgICBzdGQ6OnBhaXI8YWJzbDo6c3RyaW5nX3ZpZXcsIGFic2w6OnN0cmluZ192aWV3PiwK
ICAgICBzdGQ6OnBhaXI8YWJzbDo6c3RyaW5nX3ZpZXcsIGNvbnN0IGNoYXIqPj47CkBAIC0yNDgs
NyArMjQ0LDcgQEAgVFlQRURfVEVTVF9QKFN0cmluZ0xpa2VUZXN0LCBIYXNoRXEpIHsKICAgRVhQ
RUNUX05FKHRoaXMtPmhhc2godGhpcy0+YTEpLCB0aGlzLT5oYXNoKHRoaXMtPmIyKSk7CiB9CiAK
LVRZUEVEX1RFU1RfQ0FTRShTdHJpbmdMaWtlVGVzdCwgU3RyaW5nVHlwZXNDYXJ0ZXNpYW5Qcm9k
dWN0KTsKK1RZUEVEX1RFU1RfU1VJVEUoU3RyaW5nTGlrZVRlc3QsIFN0cmluZ1R5cGVzQ2FydGVz
aWFuUHJvZHVjdCk7CiAKIH0gIC8vIG5hbWVzcGFjZQogfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5l
cl9pbnRlcm5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2Vu
ZXJhdG9yX3Rlc3RpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0
b3JfdGVzdGluZy5jYwppbmRleCAwZDZhOWRmMTZmOGEzMzZjMTQzYWZhZWVjMjA2OTE0MjM2MWI4
ODljLi4zN2EyM2Q2MDkxZDk0NjNhODcwNmU0ZTBiOGViYmY5NDNjNGZjMDdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzksOSArMzksOSBAQCBj
bGFzcyBSYW5kb21EZXZpY2VTZWVkU2VxIHsKIAogfSAgLy8gbmFtZXNwYWNlCiAKLXN0ZDo6bXQx
OTkzN182NCogR2V0VGhyZWFkTG9jYWxSbmcoKSB7CitzdGQ6Om10MTk5MzdfNjQqIEdldFNoYXJl
ZFJuZygpIHsKICAgUmFuZG9tRGV2aWNlU2VlZFNlcSBzZWVkX3NlcTsKLSAgdGhyZWFkX2xvY2Fs
IGF1dG8qIHJuZyA9IG5ldyBzdGQ6Om10MTk5MzdfNjQoc2VlZF9zZXEpOworICBzdGF0aWMgYXV0
byogcm5nID0gbmV3IHN0ZDo6bXQxOTkzN182NChzZWVkX3NlcSk7CiAgIHJldHVybiBybmc7CiB9
CiAKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjpzdHJpbmcgR2VuZXJhdG9yPHN0ZDo6c3RyaW5nPjo6
b3BlcmF0b3IoKSgpIGNvbnN0IHsKICAgc3RkOjpzdHJpbmcgcmVzOwogICByZXMucmVzaXplKDMy
KTsKICAgc3RkOjpnZW5lcmF0ZShyZXMuYmVnaW4oKSwgcmVzLmVuZCgpLAotICAgICAgICAgICAg
ICAgIFsmXSgpIHsgcmV0dXJuIGNoYXJzKCpHZXRUaHJlYWRMb2NhbFJuZygpKTsgfSk7CisgICAg
ICAgICAgICAgICAgWyZdKCkgeyByZXR1cm4gY2hhcnMoKkdldFNoYXJlZFJuZygpKTsgfSk7CiAg
IHJldHVybiByZXM7CiB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgYWJzbDo6c3RyaW5nX3ZpZXcgR2Vu
ZXJhdG9yPGFic2w6OnN0cmluZ192aWV3Pjo6b3BlcmF0b3IoKSgpIGNvbnN0IHsKICAgYXV0byYg
cmVzID0gYXJlbmEtPmJhY2soKTsKICAgcmVzLnJlc2l6ZSgzMik7CiAgIHN0ZDo6Z2VuZXJhdGUo
cmVzLmJlZ2luKCksIHJlcy5lbmQoKSwKLSAgICAgICAgICAgICAgICBbJl0oKSB7IHJldHVybiBj
aGFycygqR2V0VGhyZWFkTG9jYWxSbmcoKSk7IH0pOworICAgICAgICAgICAgICAgIFsmXSgpIHsg
cmV0dXJuIGNoYXJzKCpHZXRTaGFyZWRSbmcoKSk7IH0pOwogICByZXR1cm4gcmVzOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGlu
Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaApp
bmRleCA1MGQ3NzEwMjZjN2I1MDA1MTM1ZDI4NjMxNjVhMDA5Y2I0ZGJjYTk4Li4yN2ZiODRmNWQw
ZjZlYmVhYTRlMmVmYWNkYWQ5NjU3NTUyZmQyMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IElzTWFwPE1hcCwg
YWJzbDo6dm9pZF90PHR5cGVuYW1lIE1hcDo6bWFwcGVkX3R5cGU+PiA6IHN0ZDo6dHJ1ZV90eXBl
IHt9OwogCiB9ICAvLyBuYW1lc3BhY2UgZ2VuZXJhdG9yX2ludGVybmFsCiAKLXN0ZDo6bXQxOTkz
N182NCogR2V0VGhyZWFkTG9jYWxSbmcoKTsKK3N0ZDo6bXQxOTkzN182NCogR2V0U2hhcmVkUm5n
KCk7CiAKIGVudW0gRW51bSB7CiAgIGtFbnVtRW1wdHksCkBAIC02Niw3ICs2Niw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUPgogc3RydWN0IEdlbmVyYXRvcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGU+IHsKICAgVCBvcGVyYXRvcigpKCkg
Y29uc3QgewogICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFQ+IGRpc3Q7Ci0gICAg
cmV0dXJuIGRpc3QoKkdldFRocmVhZExvY2FsUm5nKCkpOworICAgIHJldHVybiBkaXN0KCpHZXRT
aGFyZWRSbmcoKSk7CiAgIH0KIH07CiAKQEAgLTc2LDcgKzc2LDcgQEAgc3RydWN0IEdlbmVyYXRv
cjxFbnVtPiB7CiAgICAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248dHlwZW5hbWUgc3Rk
Ojp1bmRlcmx5aW5nX3R5cGU8RW51bT46OnR5cGU+CiAgICAgICAgIGRpc3Q7CiAgICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgIGF1dG8gdmFyaWF0ZSA9IGRpc3QoKkdldFRocmVhZExvY2FsUm5nKCkp
OworICAgICAgYXV0byB2YXJpYXRlID0gZGlzdCgqR2V0U2hhcmVkUm5nKCkpOwogICAgICAgaWYg
KHZhcmlhdGUgIT0ga0VudW1FbXB0eSAmJiB2YXJpYXRlICE9IGtFbnVtRGVsZXRlZCkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudW0+KHZhcmlhdGUpOwogICAgIH0KQEAgLTkwLDcgKzkw
LDcgQEAgc3RydWN0IEdlbmVyYXRvcjxFbnVtQ2xhc3M+IHsKICAgICAgICAgdHlwZW5hbWUgc3Rk
Ojp1bmRlcmx5aW5nX3R5cGU8RW51bUNsYXNzPjo6dHlwZT4KICAgICAgICAgZGlzdDsKICAgICB3
aGlsZSAodHJ1ZSkgewotICAgICAgRW51bUNsYXNzIHZhcmlhdGUgPSBzdGF0aWNfY2FzdDxFbnVt
Q2xhc3M+KGRpc3QoKkdldFRocmVhZExvY2FsUm5nKCkpKTsKKyAgICAgIEVudW1DbGFzcyB2YXJp
YXRlID0gc3RhdGljX2Nhc3Q8RW51bUNsYXNzPihkaXN0KCpHZXRTaGFyZWRSbmcoKSkpOwogICAg
ICAgaWYgKHZhcmlhdGUgIT0gRW51bUNsYXNzOjprRW1wdHkgJiYgdmFyaWF0ZSAhPSBFbnVtQ2xh
c3M6OmtEZWxldGVkKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW51bUNsYXNzPih2YXJp
YXRlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9w
b2xpY3lfdGVzdGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rl
c3RpbmcuaAppbmRleCBmZmM3NmVhZDdhNjg0MmU5ZmNiY2YzMjA0MmYxMmY3ZWFjNmU5Zjk4Li5j
NTc0MDdhMDJiMmU5N2Y2Mzc2ODhiYjVlOWU0OWY2MDBmOTQyOWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmgKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEzOSw3ICsxMzksNyBAQCBzdHJ1Y3QgQWxsb2Mg
OiBzdGQ6OmFsbG9jYXRvcjxUPiB7CiAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgQWxs
b2MmIGEsIGNvbnN0IEFsbG9jJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogIHByaXZhdGU6
Ci0gIHNpemVfdCBpZF8gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworICBz
aXplX3QgaWRfID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KSgpOwogfTsKIAog
dGVtcGxhdGUgPGNsYXNzIE1hcD4KQEAgLTE2OSw3ICsxNjksMTEgQEAgYXV0byBrZXlzKGNvbnN0
IFNldCYgcykKIC8vIHRha2UgYWxsb2NhdG9yIGFyZ3VtZW50cy4gVGhpcyB0ZXN0IGlzIGRlZmlu
ZWQgYWQtaG9jIGZvciB0aGUgcGxhdGZvcm1zCiAvLyB3ZSBjYXJlIGFib3V0IChub3RhYmx5IENy
b3NzdG9vbCAxNykgYmVjYXVzZSBsaWJzdGRjeHgncyB1c2VsZXNzCiAvLyB2ZXJzaW9uaW5nIHNj
aGVtZSBwcmVjbHVkZXMgYSBtb3JlIHByaW5jaXBsZWQgc29sdXRpb24uCi0jaWYgZGVmaW5lZChf
X0dMSUJDWFhfXykgJiYgX19HTElCQ1hYX18gPD0gMjAxNDA0MjUKKy8vIEZyb20gR0NDLTQuOSBD
aGFuZ2Vsb2c6IChzcmM6IGh0dHBzOi8vZ2NjLmdudS5vcmcvZ2NjLTQuOS9jaGFuZ2VzLmh0bWwp
CisvLyAidGhlIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXJzIGluIDx1bm9yZGVyZWRf
bWFwPiBhbmQgPHVub3JkZXJlZF9zZXQ+CisvLyBtZWV0IHRoZSBhbGxvY2F0b3ItYXdhcmUgY29u
dGFpbmVyIHJlcXVpcmVtZW50czsiCisjaWYgKGRlZmluZWQoX19HTElCQ1hYX18pICYmIF9fR0xJ
QkNYWF9fIDw9IDIwMTQwNDI1ICkgfHwgXAorKCBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09
IDQgJiYgX19HTlVDX01JTk9SX18gPCA5ICkpCiAjZGVmaW5lIEFCU0xfVU5PUkRFUkVEX1NVUFBP
UlRTX0FMTE9DX0NUT1JTIDAKICNlbHNlCiAjZGVmaW5lIEFCU0xfVU5PUkRFUkVEX1NVUFBPUlRT
X0FMTE9DX0NUT1JTIDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
X3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9w
b2xpY3lfdGVzdGluZ190ZXN0LmNjCmluZGV4IGMyMTVjNDIzN2FlNTUxNjg2ZGQ4MjRkNDJkYTdj
ZmI5M2IwY2U5MTUuLjBjOTVlYjVlYWE1N2E4NTM2NGMzMjU2Yjk4ZWJlZWFjZWY3YjA4ZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nX3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3Rpbmdf
dGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oCmluZGV4IDAyOWU0N2Ux
NzVjOWRmYWUzNTI0YjdjYjE1MzkzMTAyNmRlNWJmOTcuLmZkMDA3ZGU3YzBkYjdlZWVhZmJlMjRi
Mzg3ODM3YzFmYTNjOWIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXNoX3BvbGljeV90cmFpdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9w
b2xpY3lfdHJhaXRzLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTg0LDcgKzg0LDcgQEAgc3RydWN0IGhhc2hfcG9saWN5X3RyYWl0cyB7CiAgIH0KIAogICAv
LyBUcmFuc2ZlcnMgdGhlIGBvbGRfc2xvdGAgdG8gYG5ld19zbG90YC4gQW55IG1lbW9yeSBhbGxv
Y2F0ZWQgYnkgdGhlCi0gIC8vIGFsbG9jYXRvciBpbnNpZGUgYG9sZF9zbG90YCB0byBgbmV3X3Ns
b3RgIGNhbiBiZSB0cmFuc2ZlcmVkLgorICAvLyBhbGxvY2F0b3IgaW5zaWRlIGBvbGRfc2xvdGAg
dG8gYG5ld19zbG90YCBjYW4gYmUgdHJhbnNmZXJyZWQuCiAgIC8vCiAgIC8vIE9QVElPTkFMOiBk
ZWZhdWx0cyB0bzoKICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXNoX3BvbGljeV90cmFpdHNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
X3BvbGljeV90cmFpdHNfdGVzdC5jYwppbmRleCA0MjNmMTU0OGU3Y2ExMzhlZTVhY2EwOTI0MmFm
ZDNiYzRmOTcyYjI2Li5lNjQzZDE4OTkxM2NkOWFhMmNhYTEzMTJkMjIyMjI4Zjc3ODNiZDQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzX3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0c190
ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmgKaW5kZXggYzNiZDY1YzljNGVjNTJk
NWY0YTc5NmY3NmIxOGRiY2RhNzI5MmIzNC4uNzE5MzAwMDQ2MDdlMjliMDRmYWZjYWZjOGQyNDkw
MTViNmM2YjIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJs
ZV9kZWJ1Zy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWcu
aApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNjAsNyArNjAs
NyBAQCBzdGQ6OnZlY3RvcjxzaXplX3Q+IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVzSGlzdG9n
cmFtKGNvbnN0IEMmIGNvbnRhaW5lcikgewogICAgIHNpemVfdCBudW1fcHJvYmVzID0gR2V0SGFz
aHRhYmxlRGVidWdOdW1Qcm9iZXMoCiAgICAgICAgIGNvbnRhaW5lciwKICAgICAgICAgYWJzbDo6
Y29udGFpbmVyX2ludGVybmFsOjpoYXNodGFibGVfZGVidWdfaW50ZXJuYWw6OkdldEtleTxDPigq
aXQsIDApKTsKLSAgICB2LnJlc2l6ZShzdGQ6Om1heCh2LnNpemUoKSwgbnVtX3Byb2JlcyArIDEp
KTsKKyAgICB2LnJlc2l6ZSgoc3RkOjptYXgpKHYuc2l6ZSgpLCBudW1fcHJvYmVzICsgMSkpOwog
ICAgIHZbbnVtX3Byb2Jlc10rKzsKICAgfQogICByZXR1cm4gdjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWdfaG9va3MuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWdfaG9va3MuaAppbmRleCA4ZjIxOTcyNmJlZTAx
ZmU5N2E4ZjEwZTMzMDY0OTQ4NjgwOTRlOTJiLi4zNzFjZTgxZjU1YzY3NWYzZDg0ZTRlMmVkNDJj
ZmI3NTQxZTgzODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRh
YmxlX2RlYnVnX2hvb2tzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJs
ZV9kZWJ1Z19ob29rcy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMDNkZDgyZTdmZDU3ZmMyY2ZlOTBiMWNlYzNlM2QxZGM4YTliOTI1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5j
YwpAQCAtMCwwICsxLDMwOCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGV6X3NhbXBs
ZXIuaCIKKworI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUg
PGNtYXRoPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8bGltaXRzPgorCisjaW5j
bHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXZlX3NzZS5oIgorI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL3N0YWNrdHJhY2Uu
aCIKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N5bmNo
cm9uaXphdGlvbi9tdXRleC5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFp
bmVyX2ludGVybmFsIHsKK2NvbnN0ZXhwciBpbnQgSGFzaHRhYmxlekluZm86OmtNYXhTdGFja0Rl
cHRoOworCituYW1lc3BhY2UgeworQUJTTF9DT05TVF9JTklUIHN0ZDo6YXRvbWljPGJvb2w+IGdf
aGFzaHRhYmxlel9lbmFibGVkeworICAgIGZhbHNlCit9OworQUJTTF9DT05TVF9JTklUIHN0ZDo6
YXRvbWljPGludDMyX3Q+IGdfaGFzaHRhYmxlel9zYW1wbGVfcGFyYW1ldGVyezEgPDwgMTB9Owor
QUJTTF9DT05TVF9JTklUIHN0ZDo6YXRvbWljPGludDMyX3Q+IGdfaGFzaHRhYmxlel9tYXhfc2Ft
cGxlc3sxIDw8IDIwfTsKKworLy8gUmV0dXJucyB0aGUgbmV4dCBwc2V1ZG8tcmFuZG9tIHZhbHVl
LgorLy8gcFJORyBpczogYVgrYiBtb2QgYyB3aXRoIGEgPSAweDVERUVDRTY2RCwgYiA9ICAweEIs
IGMgPSAxPDw0OAorLy8gVGhpcyBpcyB0aGUgbHJhbmQ2NCBnZW5lcmF0b3IuCit1aW50NjRfdCBO
ZXh0UmFuZG9tKHVpbnQ2NF90IHJuZCkgeworICBjb25zdCB1aW50NjRfdCBwcm5nX211bHQgPSB1
aW50NjRfdHsweDVERUVDRTY2RH07CisgIGNvbnN0IHVpbnQ2NF90IHBybmdfYWRkID0gMHhCOwor
ICBjb25zdCB1aW50NjRfdCBwcm5nX21vZF9wb3dlciA9IDQ4OworICBjb25zdCB1aW50NjRfdCBw
cm5nX21vZF9tYXNrID0gfih+dWludDY0X3R7MH0gPDwgcHJuZ19tb2RfcG93ZXIpOworICByZXR1
cm4gKHBybmdfbXVsdCAqIHJuZCArIHBybmdfYWRkKSAmIHBybmdfbW9kX21hc2s7Cit9CisKKy8v
IEdlbmVyYXRlcyBhIGdlb21ldHJpYyB2YXJpYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbWVhbi4K
Ky8vIFRoaXMgaXMgZG9uZSBieSBnZW5lcmF0aW5nIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIDAg
YW5kIDEgYW5kIGFwcGx5aW5nCisvLyB0aGUgaW52ZXJzZSBjdW11bGF0aXZlIGRpc3RyaWJ1dGlv
biBmdW5jdGlvbiBmb3IgYW4gZXhwb25lbnRpYWwuCisvLyBTcGVjaWZpY2FsbHk6IExldCBtIGJl
IHRoZSBpbnZlcnNlIG9mIHRoZSBzYW1wbGUgcGVyaW9kLCB0aGVuCisvLyB0aGUgcHJvYmFiaWxp
dHkgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIGlzIG0qZXhwKC1teCkgc28gdGhlIENERiBpcworLy8g
cCA9IDEgLSBleHAoLW14KSwgc28KKy8vIHEgPSAxIC0gcCA9IGV4cCgtbXgpCisvLyBsb2dfZShx
KSA9IC1teAorLy8gLWxvZ19lKHEpL20gPSB4CisvLyBsb2dfMihxKSAqICgtbG9nX2UoMikgKiAx
L20pID0geAorLy8gSW4gdGhlIGNvZGUsIHEgaXMgYWN0dWFsbHkgaW4gdGhlIHJhbmdlIDEgdG8g
MioqMjYsIGhlbmNlIHRoZSAtMjYgYmVsb3cKKy8vCitpbnQ2NF90IEdldEdlb21ldHJpY1Zhcmlh
YmxlKGludDY0X3QgbWVhbikgeworI2lmIEFCU0xfSEFWRV9USFJFQURfTE9DQUwKKyAgdGhyZWFk
X2xvY2FsCisjZWxzZSAgIC8vIEFCU0xfSEFWRV9USFJFQURfTE9DQUwKKyAgLy8gU2FtcGxlU2xv
dyBhbmQgaGVuY2UgR2V0R2VvbWV0cmljVmFyaWFibGUgaXMgZ3VhcmRlZCBieSBhIHNpbmdsZSBt
dXRleCB3aGVuCisgIC8vIHRoZXJlIGFyZSBub3QgdGhyZWFkIGxvY2Fscy4gIFRodXMsIGEgc2lu
Z2xlIGdsb2JhbCBybmcgaXMgYWNjZXB0YWJsZSBmb3IKKyAgLy8gdGhhdCBjYXNlLgorICBzdGF0
aWMKKyNlbmRpZiAgLy8gQUJTTF9IQVZFX1RIUkVBRF9MT0NBTAorICAgICAgdWludDY0X3Qgcm5n
ID0gW10oKSB7CisgICAgICAgIC8vIFdlIGRvbid0IGdldCB3ZWxsIGRpc3RyaWJ1dGVkIG51bWJl
cnMgZnJvbSB0aGlzIHNvIHdlIGNhbGwKKyAgICAgICAgLy8gTmV4dFJhbmRvbSgpIGEgYnVuY2gg
dG8gbXVzaCB0aGUgYml0cyBhcm91bmQuICBXZSB1c2UgYSBnbG9iYWxfcmFuZAorICAgICAgICAv
LyB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIHNhbWUgdGhyZWFkIChieSBtZW1vcnkgYWRk
cmVzcykgZ2V0cworICAgICAgICAvLyBjcmVhdGVkIGFuZCBkZXN0cm95ZWQgcmVwZWF0ZWRseS4K
KyAgICAgICAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50MzJfdD4gZ2xv
YmFsX3JhbmQoMCk7CisgICAgICAgIHVpbnQ2NF90IHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ2
NF90Pigmcm5nKSArCisgICAgICAgICAgICAgICAgICAgZ2xvYmFsX3JhbmQuZmV0Y2hfYWRkKDEs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IDIwOyArK2kpIHsKKyAgICAgICAgICByID0gTmV4dFJhbmRvbShyKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gcjsKKyAgICAgIH0oKTsKKworICBybmcgPSBOZXh0UmFuZG9tKHJuZyk7CisK
KyAgLy8gVGFrZSB0aGUgdG9wIDI2IGJpdHMgYXMgdGhlIHJhbmRvbSBudW1iZXIKKyAgLy8gKFRo
aXMgcGx1cyB0aGUgMTw8NTggc2FtcGxpbmcgYm91bmQgZ2l2ZSBhIG1heCBwb3NzaWJsZSBzdGVw
IG9mCisgIC8vIDUxOTQyOTcxODM5NzM3ODA0ODAgYnl0ZXMuKQorICBjb25zdCB1aW50NjRfdCBw
cm5nX21vZF9wb3dlciA9IDQ4OyAgLy8gTnVtYmVyIG9mIGJpdHMgaW4gcHJuZworICAvLyBUaGUg
dWludDMyX3QgY2FzdCBpcyB0byBwcmV2ZW50IGEgKGhhcmQtdG8tcmVwcm9kdWNlKSBOQU4KKyAg
Ly8gdW5kZXIgcGlpaSBkZWJ1ZyBmb3Igc29tZSBiaW5hcmllcy4KKyAgZG91YmxlIHEgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4ocm5nID4+IChwcm5nX21vZF9wb3dlciAtIDI2KSkgKyAxLjA7Cisg
IC8vIFB1dCB0aGUgY29tcHV0ZWQgcC12YWx1ZSB0aHJvdWdoIHRoZSBDREYgb2YgYSBnZW9tZXRy
aWMuCisgIGRvdWJsZSBpbnRlcnZhbCA9IChsb2cyKHEpIC0gMjYpICogKC1zdGQ6OmxvZygyLjAp
ICogbWVhbik7CisKKyAgLy8gVmVyeSBsYXJnZSB2YWx1ZXMgb2YgaW50ZXJ2YWwgb3ZlcmZsb3cg
aW50NjRfdC4gSWYgd2UgaGFwcGVuIHRvCisgIC8vIGhpdCBzdWNoIGltcHJvYmFibGUgY29uZGl0
aW9uLCB3ZSBzaW1wbHkgY2hlYXQgYW5kIGNsYW1wIGludGVydmFsCisgIC8vIHRvIGxhcmdlc3Qg
c3VwcG9ydGVkIHZhbHVlLgorICBpZiAoaW50ZXJ2YWwgPiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpIC8gMikpIHsKKyAgICByZXR1cm4gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkgLyAyOworICB9CisKKyAgLy8gU21hbGwg
dmFsdWVzIG9mIGludGVydmFsIGFyZSBlcXVpdmFsZW50IHRvIGp1c3Qgc2FtcGxpbmcgbmV4dCB0
aW1lLgorICBpZiAoaW50ZXJ2YWwgPCAxKSB7CisgICAgcmV0dXJuIDE7CisgIH0KKyAgcmV0dXJu
IHN0YXRpY19jYXN0PGludDY0X3Q+KGludGVydmFsKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisK
K0hhc2h0YWJsZXpTYW1wbGVyJiBIYXNodGFibGV6U2FtcGxlcjo6R2xvYmFsKCkgeworICBzdGF0
aWMgYXV0byogc2FtcGxlciA9IG5ldyBIYXNodGFibGV6U2FtcGxlcigpOworICByZXR1cm4gKnNh
bXBsZXI7Cit9CisKK0hhc2h0YWJsZXpTYW1wbGVyOjpEaXNwb3NlQ2FsbGJhY2sgSGFzaHRhYmxl
elNhbXBsZXI6OlNldERpc3Bvc2VDYWxsYmFjaygKKyAgICBEaXNwb3NlQ2FsbGJhY2sgZikgewor
ICByZXR1cm4gZGlzcG9zZV8uZXhjaGFuZ2UoZiwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7
Cit9CisKK0hhc2h0YWJsZXpJbmZvOjpIYXNodGFibGV6SW5mbygpIHsgUHJlcGFyZUZvclNhbXBs
aW5nKCk7IH0KK0hhc2h0YWJsZXpJbmZvOjp+SGFzaHRhYmxlekluZm8oKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgSGFzaHRhYmxlekluZm86OlByZXBhcmVGb3JTYW1wbGluZygpIHsKKyAgY2FwYWNpdHku
c3RvcmUoMCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIHNpemUuc3RvcmUoMCwgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIG51bV9lcmFzZXMuc3RvcmUoMCwgc3RkOjptZW1v
cnlfb3JkZXJfcmVsYXhlZCk7CisgIG1heF9wcm9iZV9sZW5ndGguc3RvcmUoMCwgc3RkOjptZW1v
cnlfb3JkZXJfcmVsYXhlZCk7CisgIHRvdGFsX3Byb2JlX2xlbmd0aC5zdG9yZSgwLCBzdGQ6Om1l
bW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaGFzaGVzX2JpdHdpc2Vfb3Iuc3RvcmUoMCwgc3RkOjpt
ZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGhhc2hlc19iaXR3aXNlX2FuZC5zdG9yZSh+c2l6ZV90
e30sIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworCisgIGNyZWF0ZV90aW1lID0gYWJzbDo6
Tm93KCk7CisgIC8vIFRoZSBpbmxpbmVyIG1ha2VzIGhhcmRjb2RlZCBza2lwX2NvdW50IGRpZmZp
Y3VsdCAoZXNwZWNpYWxseSB3aGVuIGNvbWJpbmVkCisgIC8vIHdpdGggTFRPKS4gIFdlIHVzZSB0
aGUgYWJpbGl0eSB0byBleGNsdWRlIHN0YWNrcyBieSByZWdleCB3aGVuIGVuY29kaW5nCisgIC8v
IGluc3RlYWQuCisgIGRlcHRoID0gYWJzbDo6R2V0U3RhY2tUcmFjZShzdGFjaywgSGFzaHRhYmxl
ekluZm86OmtNYXhTdGFja0RlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
c2tpcF9jb3VudD0gKi8gMCk7CisgIGRlYWQgPSBudWxscHRyOworfQorCitIYXNodGFibGV6U2Ft
cGxlcjo6SGFzaHRhYmxlelNhbXBsZXIoKQorICAgIDogZHJvcHBlZF9zYW1wbGVzXygwKSwgc2l6
ZV9lc3RpbWF0ZV8oMCksIGFsbF8obnVsbHB0ciksIGRpc3Bvc2VfKG51bGxwdHIpIHsKKyAgYWJz
bDo6TXV0ZXhMb2NrIGwoJmdyYXZleWFyZF8uaW5pdF9tdSk7CisgIGdyYXZleWFyZF8uZGVhZCA9
ICZncmF2ZXlhcmRfOworfQorCitIYXNodGFibGV6U2FtcGxlcjo6fkhhc2h0YWJsZXpTYW1wbGVy
KCkgeworICBIYXNodGFibGV6SW5mbyogcyA9IGFsbF8ubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3F1aXJlKTsKKyAgd2hpbGUgKHMgIT0gbnVsbHB0cikgeworICAgIEhhc2h0YWJsZXpJbmZvKiBu
ZXh0ID0gcy0+bmV4dDsKKyAgICBkZWxldGUgczsKKyAgICBzID0gbmV4dDsKKyAgfQorfQorCit2
b2lkIEhhc2h0YWJsZXpTYW1wbGVyOjpQdXNoTmV3KEhhc2h0YWJsZXpJbmZvKiBzYW1wbGUpIHsK
KyAgc2FtcGxlLT5uZXh0ID0gYWxsXy5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwor
ICB3aGlsZSAoIWFsbF8uY29tcGFyZV9leGNoYW5nZV93ZWFrKHNhbXBsZS0+bmV4dCwgc2FtcGxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGVhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptZW1v
cnlfb3JkZXJfcmVsYXhlZCkpIHsKKyAgfQorfQorCit2b2lkIEhhc2h0YWJsZXpTYW1wbGVyOjpQ
dXNoRGVhZChIYXNodGFibGV6SW5mbyogc2FtcGxlKSB7CisgIGlmIChhdXRvKiBkaXNwb3NlID0g
ZGlzcG9zZV8ubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKSkgeworICAgIGRpc3Bvc2Uo
KnNhbXBsZSk7CisgIH0KKworICBhYnNsOjpNdXRleExvY2sgZ3JhdmV5YXJkX2xvY2soJmdyYXZl
eWFyZF8uaW5pdF9tdSk7CisgIGFic2w6Ok11dGV4TG9jayBzYW1wbGVfbG9jaygmc2FtcGxlLT5p
bml0X211KTsKKyAgc2FtcGxlLT5kZWFkID0gZ3JhdmV5YXJkXy5kZWFkOworICBncmF2ZXlhcmRf
LmRlYWQgPSBzYW1wbGU7Cit9CisKK0hhc2h0YWJsZXpJbmZvKiBIYXNodGFibGV6U2FtcGxlcjo6
UG9wRGVhZCgpIHsKKyAgYWJzbDo6TXV0ZXhMb2NrIGdyYXZleWFyZF9sb2NrKCZncmF2ZXlhcmRf
LmluaXRfbXUpOworCisgIC8vIFRoZSBsaXN0IGlzIGNpcmN1bGFyLCBzbyBldmVudHVhbGx5IGl0
IGNvbGxhcHNlcyBkb3duIHRvCisgIC8vICAgZ3JhdmV5YXJkXy5kZWFkID09ICZncmF2ZXlhcmRf
CisgIC8vIHdoZW4gaXQgaXMgZW1wdHkuCisgIEhhc2h0YWJsZXpJbmZvKiBzYW1wbGUgPSBncmF2
ZXlhcmRfLmRlYWQ7CisgIGlmIChzYW1wbGUgPT0gJmdyYXZleWFyZF8pIHJldHVybiBudWxscHRy
OworCisgIGFic2w6Ok11dGV4TG9jayBzYW1wbGVfbG9jaygmc2FtcGxlLT5pbml0X211KTsKKyAg
Z3JhdmV5YXJkXy5kZWFkID0gc2FtcGxlLT5kZWFkOworICBzYW1wbGUtPlByZXBhcmVGb3JTYW1w
bGluZygpOworICByZXR1cm4gc2FtcGxlOworfQorCitIYXNodGFibGV6SW5mbyogSGFzaHRhYmxl
elNhbXBsZXI6OlJlZ2lzdGVyKCkgeworICBpbnQ2NF90IHNpemUgPSBzaXplX2VzdGltYXRlXy5m
ZXRjaF9hZGQoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGlmIChzaXplID4gZ19o
YXNodGFibGV6X21heF9zYW1wbGVzLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkpIHsK
KyAgICBzaXplX2VzdGltYXRlXy5mZXRjaF9zdWIoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7CisgICAgZHJvcHBlZF9zYW1wbGVzXy5mZXRjaF9hZGQoMSwgc3RkOjptZW1vcnlfb3JkZXJf
cmVsYXhlZCk7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKworICBIYXNodGFibGV6SW5mbyog
c2FtcGxlID0gUG9wRGVhZCgpOworICBpZiAoc2FtcGxlID09IG51bGxwdHIpIHsKKyAgICAvLyBS
ZXN1cnJlY3Rpb24gZmFpbGVkLiAgSGlyZSBhIG5ldyB3YXJsb2NrLgorICAgIHNhbXBsZSA9IG5l
dyBIYXNodGFibGV6SW5mbygpOworICAgIFB1c2hOZXcoc2FtcGxlKTsKKyAgfQorCisgIHJldHVy
biBzYW1wbGU7Cit9CisKK3ZvaWQgSGFzaHRhYmxlelNhbXBsZXI6OlVucmVnaXN0ZXIoSGFzaHRh
YmxlekluZm8qIHNhbXBsZSkgeworICBQdXNoRGVhZChzYW1wbGUpOworICBzaXplX2VzdGltYXRl
Xy5mZXRjaF9zdWIoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cit9CisKK2ludDY0X3Qg
SGFzaHRhYmxlelNhbXBsZXI6Okl0ZXJhdGUoCisgICAgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
KGNvbnN0IEhhc2h0YWJsZXpJbmZvJiBzdGFjayk+JiBmKSB7CisgIEhhc2h0YWJsZXpJbmZvKiBz
ID0gYWxsXy5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICB3aGlsZSAocyAhPSBu
dWxscHRyKSB7CisgICAgYWJzbDo6TXV0ZXhMb2NrIGwoJnMtPmluaXRfbXUpOworICAgIGlmIChz
LT5kZWFkID09IG51bGxwdHIpIHsKKyAgICAgIGYoKnMpOworICAgIH0KKyAgICBzID0gcy0+bmV4
dDsKKyAgfQorCisgIHJldHVybiBkcm9wcGVkX3NhbXBsZXNfLmxvYWQoc3RkOjptZW1vcnlfb3Jk
ZXJfcmVsYXhlZCk7Cit9CisKK0hhc2h0YWJsZXpJbmZvKiBTYW1wbGVTbG93KGludDY0X3QqIG5l
eHRfc2FtcGxlKSB7CisgIGlmIChrQWJzbENvbnRhaW5lckludGVybmFsU2FtcGxlRXZlcnl0aGlu
ZykgeworICAgICpuZXh0X3NhbXBsZSA9IDE7CisgICAgcmV0dXJuIEhhc2h0YWJsZXpTYW1wbGVy
OjpHbG9iYWwoKS5SZWdpc3RlcigpOworICB9CisKKyAgYm9vbCBmaXJzdCA9ICpuZXh0X3NhbXBs
ZSA8IDA7CisgICpuZXh0X3NhbXBsZSA9IEdldEdlb21ldHJpY1ZhcmlhYmxlKAorICAgICAgZ19o
YXNodGFibGV6X3NhbXBsZV9wYXJhbWV0ZXIubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVk
KSk7CisKKyAgLy8gZ19oYXNodGFibGV6X2VuYWJsZWQgY2FuIGJlIGR5bmFtaWNhbGx5IGZsaXBw
ZWQsIHdlIG5lZWQgdG8gc2V0IGEgdGhyZXNob2xkCisgIC8vIGxvdyBlbm91Z2ggdGhhdCB3ZSB3
aWxsIHN0YXJ0IHNhbXBsaW5nIGluIGEgcmVhc29uYWJsZSB0aW1lLCBzbyB3ZSBqdXN0IHVzZQor
ICAvLyB0aGUgZGVmYXVsdCBzYW1wbGluZyByYXRlLgorICBpZiAoIWdfaGFzaHRhYmxlel9lbmFi
bGVkLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkpIHJldHVybiBudWxscHRyOworCisg
IC8vIFdlIHdpbGwgb25seSBiZSBuZWdhdGl2ZSBvbiBvdXIgZmlyc3QgY291bnQsIHNvIHdlIHNo
b3VsZCBqdXN0IHJldHJ5IGluCisgIC8vIHRoYXQgY2FzZS4KKyAgaWYgKGZpcnN0KSB7CisgICAg
aWYgKEFCU0xfUFJFRElDVF9UUlVFKC0tKm5leHRfc2FtcGxlID4gMCkpIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBTYW1wbGVTbG93KG5leHRfc2FtcGxlKTsKKyAgfQorCisgIHJldHVybiBI
YXNodGFibGV6U2FtcGxlcjo6R2xvYmFsKCkuUmVnaXN0ZXIoKTsKK30KKworI2lmIEFCU0xfUEVS
X1RIUkVBRF9UTFMgPT0gMQorQUJTTF9QRVJfVEhSRUFEX1RMU19LRVlXT1JEIGludDY0X3QgZ2xv
YmFsX25leHRfc2FtcGxlID0gMDsKKyNlbmRpZiAgLy8gQUJTTF9QRVJfVEhSRUFEX1RMUyA9PSAx
CisKK3ZvaWQgVW5zYW1wbGVTbG93KEhhc2h0YWJsZXpJbmZvKiBpbmZvKSB7CisgIEhhc2h0YWJs
ZXpTYW1wbGVyOjpHbG9iYWwoKS5VbnJlZ2lzdGVyKGluZm8pOworfQorCit2b2lkIFJlY29yZElu
c2VydFNsb3coSGFzaHRhYmxlekluZm8qIGluZm8sIHNpemVfdCBoYXNoLAorICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkaXN0YW5jZV9mcm9tX2Rlc2lyZWQpIHsKKyAgLy8gU3dpc3NUYWJs
ZXMgcHJvYmUgaW4gZ3JvdXBzIG9mIDE2LCBzbyBzY2FsZSB0aGlzIHRvIGNvdW50IGl0ZW1zIHBy
b2JlcyBhbmQKKyAgLy8gbm90IG9mZnNldCBmcm9tIGRlc2lyZWQuCisgIHNpemVfdCBwcm9iZV9s
ZW5ndGggPSBkaXN0YW5jZV9mcm9tX2Rlc2lyZWQ7CisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTRTIK
KyAgcHJvYmVfbGVuZ3RoIC89IDE2OworI2Vsc2UKKyAgcHJvYmVfbGVuZ3RoIC89IDg7CisjZW5k
aWYKKworICBpbmZvLT5oYXNoZXNfYml0d2lzZV9hbmQuZmV0Y2hfYW5kKGhhc2gsIHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGF4ZWQpOworICBpbmZvLT5oYXNoZXNfYml0d2lzZV9vci5mZXRjaF9vciho
YXNoLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaW5mby0+bWF4X3Byb2JlX2xlbmd0
aC5zdG9yZSgKKyAgICAgIHN0ZDo6bWF4KGluZm8tPm1heF9wcm9iZV9sZW5ndGgubG9hZChzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKSwKKyAgICAgICAgICAgICAgIHByb2JlX2xlbmd0aCksCisg
ICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaW5mby0+dG90YWxfcHJvYmVfbGVu
Z3RoLmZldGNoX2FkZChwcm9iZV9sZW5ndGgsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwor
ICBpbmZvLT5zaXplLmZldGNoX2FkZCgxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30K
Kwordm9pZCBTZXRIYXNodGFibGV6RW5hYmxlZChib29sIGVuYWJsZWQpIHsKKyAgZ19oYXNodGFi
bGV6X2VuYWJsZWQuc3RvcmUoZW5hYmxlZCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7Cit9
CisKK3ZvaWQgU2V0SGFzaHRhYmxlelNhbXBsZVBhcmFtZXRlcihpbnQzMl90IHJhdGUpIHsKKyAg
aWYgKHJhdGUgPiAwKSB7CisgICAgZ19oYXNodGFibGV6X3NhbXBsZV9wYXJhbWV0ZXIuc3RvcmUo
cmF0ZSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CisgIH0gZWxzZSB7CisgICAgQUJTTF9S
QVdfTE9HKEVSUk9SLCAiSW52YWxpZCBoYXNodGFibGV6IHNhbXBsZSByYXRlOiAlbGxkIiwKKyAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyYXRlKSk7ICAvLyBOT0xJTlQo
cnVudGltZS9pbnQpCisgIH0KK30KKwordm9pZCBTZXRIYXNodGFibGV6TWF4U2FtcGxlcyhpbnQz
Ml90IG1heCkgeworICBpZiAobWF4ID4gMCkgeworICAgIGdfaGFzaHRhYmxlel9tYXhfc2FtcGxl
cy5zdG9yZShtYXgsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICB9IGVsc2UgeworICAg
IEFCU0xfUkFXX0xPRyhFUlJPUiwgIkludmFsaWQgaGFzaHRhYmxleiBtYXggc2FtcGxlczogJWxs
ZCIsCisgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obWF4KSk7ICAvLyBO
T0xJTlQocnVudGltZS9pbnQpCisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9p
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9oYXNodGFibGV6X3NhbXBsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNodGFibGV6X3NhbXBsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTEyMTc1NDQ5ZWY5ZTFjZTdhYjRj
MGZkNzMxOTBlNmZhMWUyMzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5oCkBAIC0wLDAgKzEsMjg4IEBACisvLyBDb3B5cmln
aHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gRmlsZTogaGFzaHRhYmxlel9zYW1wbGVyLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBBUEkgZm9yIGEgbG93IGxldmVs
IGxpYnJhcnkgdG8gc2FtcGxlIGhhc2h0YWJsZXMKKy8vIGFuZCBjb2xsZWN0IHJ1bnRpbWUgc3Rh
dGlzdGljcyBhYm91dCB0aGVtLgorLy8KKy8vIGBIYXNodGFibGV6U2FtcGxlcmAgY29udHJvbHMg
dGhlIGxpZmVjeWNsZSBvZiBgSGFzaHRhYmxlekluZm9gIG9iamVjdHMgd2hpY2gKKy8vIHN0b3Jl
IGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIHNhbXBsZS4KKy8vCisvLyBgUmVjb3JkKmAgbWV0
aG9kcyBzdG9yZSBpbmZvcm1hdGlvbiBpbnRvIHNhbXBsZXMuCisvLyBgU2FtcGxlKClgIGFuZCBg
VW5zYW1wbGUoKWAgbWFrZSB1c2Ugb2YgYSBzaW5nbGUgZ2xvYmFsIHNhbXBsZXIgd2l0aAorLy8g
cHJvcGVydGllcyBjb250cm9sbGVkIGJ5IHRoZSBmbGFncyBoYXNodGFibGV6X2VuYWJsZWQsCisv
LyBoYXNodGFibGV6X3NhbXBsZV9yYXRlLCBhbmQgaGFzaHRhYmxlel9tYXhfc2FtcGxlcy4KKy8v
CisvLyBXQVJOSU5HCisvLworLy8gVXNpbmcgdGhpcyBzYW1wbGluZyBBUEkgbWF5IGNhdXNlIHNh
bXBsZWQgU3dpc3MgdGFibGVzIHRvIHVzZSB0aGUgZ2xvYmFsCisvLyBhbGxvY2F0b3IgKG9wZXJh
dG9yIGBuZXdgKSBpbiBhZGRpdGlvbiB0byBhbnkgY3VzdG9tIGFsbG9jYXRvci4gIElmIHlvdQor
Ly8gYXJlIHVzaW5nIGEgdGFibGUgaW4gYW4gdW51c3VhbCBjaXJjdW1zdGFuY2Ugd2hlcmUgYWxs
b2NhdGlvbiBvciBjYWxsaW5nIGEKKy8vIGxpbnV4IHN5c2NhbGwgaXMgdW5hY2NlcHRhYmxlLCB0
aGlzIGNvdWxkIGludGVyZmVyZS4KKy8vCisvLyBUaGlzIHV0aWxpdHkgaXMgaW50ZXJuYWwtb25s
eS4gVXNlIGF0IHlvdXIgb3duIHJpc2suCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJO
QUxfSEFTSFRBQkxFWl9TQU1QTEVSX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFM
X0hBU0hUQUJMRVpfU0FNUExFUl9IXworCisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1
ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9wZXJfdGhyZWFkX3Rscy5oIgorI2luY2x1ZGUgImFic2wv
YmFzZS9vcHRpbWl6YXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXZlX3NzZS5oIgorI2luY2x1ZGUgImFic2wvc3luY2hyb25pemF0aW9uL211dGV4LmgiCisjaW5j
bHVkZSAiYWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNw
YWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKKy8vIFN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCBh
IHNhbXBsZWQgaGFzaHRhYmxlLiAgQWxsIG11dGF0aW9ucyB0byB0aGlzICptdXN0KgorLy8gYmUg
bWFkZSB0aHJvdWdoIGBSZWNvcmQqYCBmdW5jdGlvbnMgYmVsb3cuICBBbGwgcmVhZHMgZnJvbSB0
aGlzICptdXN0KiBvbmx5CisvLyBvY2N1ciBpbiB0aGUgY2FsbGJhY2sgdG8gYEhhc2h0YWJsZXpT
YW1wbGVyOjpJdGVyYXRlYC4KK3N0cnVjdCBIYXNodGFibGV6SW5mbyB7CisgIC8vIENvbnN0cnVj
dHMgdGhlIG9iamVjdCBidXQgZG9lcyBub3QgZmlsbCBpbiBhbnkgZmllbGRzLgorICBIYXNodGFi
bGV6SW5mbygpOworICB+SGFzaHRhYmxlekluZm8oKTsKKyAgSGFzaHRhYmxlekluZm8oY29uc3Qg
SGFzaHRhYmxlekluZm8mKSA9IGRlbGV0ZTsKKyAgSGFzaHRhYmxlekluZm8mIG9wZXJhdG9yPShj
b25zdCBIYXNodGFibGV6SW5mbyYpID0gZGVsZXRlOworCisgIC8vIFB1dHMgdGhlIG9iamVjdCBp
bnRvIGEgY2xlYW4gc3RhdGUsIGZpbGxzIGluIHRoZSBsb2dpY2FsbHkgYGNvbnN0YCBtZW1iZXJz
LAorICAvLyBibG9ja2luZyBmb3IgYW55IHJlYWRlcnMgdGhhdCBhcmUgY3VycmVudGx5IHNhbXBs
aW5nIHRoZSBvYmplY3QuCisgIHZvaWQgUHJlcGFyZUZvclNhbXBsaW5nKCkgQUJTTF9FWENMVVNJ
VkVfTE9DS1NfUkVRVUlSRUQoaW5pdF9tdSk7CisKKyAgLy8gVGhlc2UgZmllbGRzIGFyZSBtdXRh
dGVkIGJ5IHRoZSB2YXJpb3VzIFJlY29yZCogQVBJcyBhbmQgbmVlZCB0byBiZQorICAvLyB0aHJl
YWQtc2FmZS4KKyAgc3RkOjphdG9taWM8c2l6ZV90PiBjYXBhY2l0eTsKKyAgc3RkOjphdG9taWM8
c2l6ZV90PiBzaXplOworICBzdGQ6OmF0b21pYzxzaXplX3Q+IG51bV9lcmFzZXM7CisgIHN0ZDo6
YXRvbWljPHNpemVfdD4gbWF4X3Byb2JlX2xlbmd0aDsKKyAgc3RkOjphdG9taWM8c2l6ZV90PiB0
b3RhbF9wcm9iZV9sZW5ndGg7CisgIHN0ZDo6YXRvbWljPHNpemVfdD4gaGFzaGVzX2JpdHdpc2Vf
b3I7CisgIHN0ZDo6YXRvbWljPHNpemVfdD4gaGFzaGVzX2JpdHdpc2VfYW5kOworCisgIC8vIGBI
YXNodGFibGV6U2FtcGxlcmAgbWFpbnRhaW5zIGludHJ1c2l2ZSBsaW5rZWQgbGlzdHMgZm9yIGFs
bCBzYW1wbGVzLiAgU2VlCisgIC8vIGNvbW1lbnRzIG9uIGBIYXNodGFibGV6U2FtcGxlcjo6YWxs
X2AgZm9yIGRldGFpbHMgb24gdGhlc2UuICBgaW5pdF9tdWAKKyAgLy8gZ3VhcmRzIHRoZSBhYmls
aXR5IHRvIHJlc3RvcmUgdGhlIHNhbXBsZSB0byBhIHByaXN0aW5lIHN0YXRlLiAgVGhpcworICAv
LyBwcmV2ZW50cyByYWNlcyB3aXRoIHNhbXBsaW5nIGFuZCByZXN1cnJlY3RpbmcgYW4gb2JqZWN0
LgorICBhYnNsOjpNdXRleCBpbml0X211OworICBIYXNodGFibGV6SW5mbyogbmV4dDsKKyAgSGFz
aHRhYmxlekluZm8qIGRlYWQgQUJTTF9HVUFSREVEX0JZKGluaXRfbXUpOworCisgIC8vIEFsbCBv
ZiB0aGUgZmllbGRzIGJlbG93IGFyZSBzZXQgYnkgYFByZXBhcmVGb3JTYW1wbGluZ2AsIHRoZXkg
bXVzdCBub3QgYmUKKyAgLy8gbXV0YXRlZCBpbiBgUmVjb3JkKmAgZnVuY3Rpb25zLiAgVGhleSBh
cmUgbG9naWNhbGx5IGBjb25zdGAgaW4gdGhhdCBzZW5zZS4KKyAgLy8gVGhlc2UgYXJlIGd1YXJk
ZWQgYnkgaW5pdF9tdSwgYnV0IHRoYXQgaXMgbm90IGV4dGVybmFsaXplZCB0byBjbGllbnRzLCB3
aG8KKyAgLy8gY2FuIG9ubHkgcmVhZCB0aGVtIGR1cmluZyBgSGFzaHRhYmxlelNhbXBsZXI6Okl0
ZXJhdGVgIHdoaWNoIHdpbGwgaG9sZCB0aGUKKyAgLy8gbG9jay4KKyAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQga01heFN0YWNrRGVwdGggPSA2NDsKKyAgYWJzbDo6VGltZSBjcmVhdGVfdGltZTsKKyAg
aW50MzJfdCBkZXB0aDsKKyAgdm9pZCogc3RhY2tba01heFN0YWNrRGVwdGhdOworfTsKKworaW5s
aW5lIHZvaWQgUmVjb3JkUmVoYXNoU2xvdyhIYXNodGFibGV6SW5mbyogaW5mbywgc2l6ZV90IHRv
dGFsX3Byb2JlX2xlbmd0aCkgeworI2lmIFNXSVNTVEFCTEVfSEFWRV9TU0UyCisgIHRvdGFsX3By
b2JlX2xlbmd0aCAvPSAxNjsKKyNlbHNlCisgIHRvdGFsX3Byb2JlX2xlbmd0aCAvPSA4OworI2Vu
ZGlmCisgIGluZm8tPnRvdGFsX3Byb2JlX2xlbmd0aC5zdG9yZSh0b3RhbF9wcm9iZV9sZW5ndGgs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBpbmZvLT5udW1fZXJhc2VzLnN0b3JlKDAs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworfQorCitpbmxpbmUgdm9pZCBSZWNvcmRTdG9y
YWdlQ2hhbmdlZFNsb3coSGFzaHRhYmxlekluZm8qIGluZm8sIHNpemVfdCBzaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjYXBhY2l0eSkgeworICBpbmZv
LT5zaXplLnN0b3JlKHNpemUsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBpbmZvLT5j
YXBhY2l0eS5zdG9yZShjYXBhY2l0eSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGlm
IChzaXplID09IDApIHsKKyAgICAvLyBUaGlzIGlzIGEgY2xlYXIsIHJlc2V0IHRoZSB0b3RhbC9u
dW1fZXJhc2VzIHRvby4KKyAgICBSZWNvcmRSZWhhc2hTbG93KGluZm8sIDApOworICB9Cit9CisK
K3ZvaWQgUmVjb3JkSW5zZXJ0U2xvdyhIYXNodGFibGV6SW5mbyogaW5mbywgc2l6ZV90IGhhc2gs
CisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRpc3RhbmNlX2Zyb21fZGVzaXJlZCk7CisK
K2lubGluZSB2b2lkIFJlY29yZEVyYXNlU2xvdyhIYXNodGFibGV6SW5mbyogaW5mbykgeworICBp
bmZvLT5zaXplLmZldGNoX3N1YigxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaW5m
by0+bnVtX2VyYXNlcy5mZXRjaF9hZGQoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cit9
CisKK0hhc2h0YWJsZXpJbmZvKiBTYW1wbGVTbG93KGludDY0X3QqIG5leHRfc2FtcGxlKTsKK3Zv
aWQgVW5zYW1wbGVTbG93KEhhc2h0YWJsZXpJbmZvKiBpbmZvKTsKKworY2xhc3MgSGFzaHRhYmxl
ekluZm9IYW5kbGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgSGFzaHRhYmxlekluZm9IYW5kbGUo
KSA6IGluZm9fKG51bGxwdHIpIHt9CisgIGV4cGxpY2l0IEhhc2h0YWJsZXpJbmZvSGFuZGxlKEhh
c2h0YWJsZXpJbmZvKiBpbmZvKSA6IGluZm9fKGluZm8pIHt9CisgIH5IYXNodGFibGV6SW5mb0hh
bmRsZSgpIHsKKyAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUoaW5mb18gPT0gbnVsbHB0cikpIHJl
dHVybjsKKyAgICBVbnNhbXBsZVNsb3coaW5mb18pOworICB9CisKKyAgSGFzaHRhYmxlekluZm9I
YW5kbGUoY29uc3QgSGFzaHRhYmxlekluZm9IYW5kbGUmKSA9IGRlbGV0ZTsKKyAgSGFzaHRhYmxl
ekluZm9IYW5kbGUmIG9wZXJhdG9yPShjb25zdCBIYXNodGFibGV6SW5mb0hhbmRsZSYpID0gZGVs
ZXRlOworCisgIEhhc2h0YWJsZXpJbmZvSGFuZGxlKEhhc2h0YWJsZXpJbmZvSGFuZGxlJiYgbykg
bm9leGNlcHQKKyAgICAgIDogaW5mb18oYWJzbDo6ZXhjaGFuZ2Uoby5pbmZvXywgbnVsbHB0cikp
IHt9CisgIEhhc2h0YWJsZXpJbmZvSGFuZGxlJiBvcGVyYXRvcj0oSGFzaHRhYmxlekluZm9IYW5k
bGUmJiBvKSBub2V4Y2VwdCB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShpbmZvXyAhPSBu
dWxscHRyKSkgeworICAgICAgVW5zYW1wbGVTbG93KGluZm9fKTsKKyAgICB9CisgICAgaW5mb18g
PSBhYnNsOjpleGNoYW5nZShvLmluZm9fLCBudWxscHRyKTsKKyAgICByZXR1cm4gKnRoaXM7Cisg
IH0KKworICBpbmxpbmUgdm9pZCBSZWNvcmRTdG9yYWdlQ2hhbmdlZChzaXplX3Qgc2l6ZSwgc2l6
ZV90IGNhcGFjaXR5KSB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKGluZm9fID09IG51bGxw
dHIpKSByZXR1cm47CisgICAgUmVjb3JkU3RvcmFnZUNoYW5nZWRTbG93KGluZm9fLCBzaXplLCBj
YXBhY2l0eSk7CisgIH0KKworICBpbmxpbmUgdm9pZCBSZWNvcmRSZWhhc2goc2l6ZV90IHRvdGFs
X3Byb2JlX2xlbmd0aCkgeworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShpbmZvXyA9PSBudWxs
cHRyKSkgcmV0dXJuOworICAgIFJlY29yZFJlaGFzaFNsb3coaW5mb18sIHRvdGFsX3Byb2JlX2xl
bmd0aCk7CisgIH0KKworICBpbmxpbmUgdm9pZCBSZWNvcmRJbnNlcnQoc2l6ZV90IGhhc2gsIHNp
emVfdCBkaXN0YW5jZV9mcm9tX2Rlc2lyZWQpIHsKKyAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUo
aW5mb18gPT0gbnVsbHB0cikpIHJldHVybjsKKyAgICBSZWNvcmRJbnNlcnRTbG93KGluZm9fLCBo
YXNoLCBkaXN0YW5jZV9mcm9tX2Rlc2lyZWQpOworICB9CisKKyAgaW5saW5lIHZvaWQgUmVjb3Jk
RXJhc2UoKSB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKGluZm9fID09IG51bGxwdHIpKSBy
ZXR1cm47CisgICAgUmVjb3JkRXJhc2VTbG93KGluZm9fKTsKKyAgfQorCisgIGZyaWVuZCBpbmxp
bmUgdm9pZCBzd2FwKEhhc2h0YWJsZXpJbmZvSGFuZGxlJiBsaHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIEhhc2h0YWJsZXpJbmZvSGFuZGxlJiByaHMpIHsKKyAgICBzdGQ6OnN3YXAobGhz
LmluZm9fLCByaHMuaW5mb18pOworICB9CisKKyBwcml2YXRlOgorICBmcmllbmQgY2xhc3MgSGFz
aHRhYmxlekluZm9IYW5kbGVQZWVyOworICBIYXNodGFibGV6SW5mbyogaW5mb187Cit9OworCisj
aWYgQUJTTF9QRVJfVEhSRUFEX1RMUyA9PSAxCitleHRlcm4gQUJTTF9QRVJfVEhSRUFEX1RMU19L
RVlXT1JEIGludDY0X3QgZ2xvYmFsX25leHRfc2FtcGxlOworI2VuZGlmICAvLyBBQlNMX1BFUl9U
SFJFQURfVExTCisKKy8vIFJldHVybnMgYW4gUkFJSSBzYW1wbGluZyBoYW5kbGUgdGhhdCBtYW5h
Z2VzIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RhdGlvbgorLy8gd2l0aCB0aGUgZ2xvYmFsIHNh
bXBsZXIuCitpbmxpbmUgSGFzaHRhYmxlekluZm9IYW5kbGUgU2FtcGxlKCkgeworI2lmIEFCU0xf
UEVSX1RIUkVBRF9UTFMgPT0gMAorICBzdGF0aWMgYXV0byogbXUgPSBuZXcgYWJzbDo6TXV0ZXg7
CisgIHN0YXRpYyBpbnQ2NF90IGdsb2JhbF9uZXh0X3NhbXBsZSA9IDA7CisgIGFic2w6Ok11dGV4
TG9jayBsKG11KTsKKyNlbmRpZiAgLy8gIUFCU0xfSEFWRV9USFJFQURfTE9DQUwKKworICBpZiAo
QUJTTF9QUkVESUNUX1RSVUUoLS1nbG9iYWxfbmV4dF9zYW1wbGUgPiAwKSkgeworICAgIHJldHVy
biBIYXNodGFibGV6SW5mb0hhbmRsZShudWxscHRyKTsKKyAgfQorICByZXR1cm4gSGFzaHRhYmxl
ekluZm9IYW5kbGUoU2FtcGxlU2xvdygmZ2xvYmFsX25leHRfc2FtcGxlKSk7Cit9CisKKy8vIEhv
bGRzIHNhbXBsZXMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgc3RhY2sgdHJhY2VzIHdpdGggYSBzb2Z0
IGxpbWl0IG9mCisvLyBgU2V0SGFzaHRhYmxlek1heFNhbXBsZXMoKWAuCisvLworLy8gVGhyZWFk
IHNhZmUuCitjbGFzcyBIYXNodGFibGV6U2FtcGxlciB7CisgcHVibGljOgorICAvLyBSZXR1cm5z
IGEgZ2xvYmFsIFNhbXBsZXIuCisgIHN0YXRpYyBIYXNodGFibGV6U2FtcGxlciYgR2xvYmFsKCk7
CisKKyAgSGFzaHRhYmxlelNhbXBsZXIoKTsKKyAgfkhhc2h0YWJsZXpTYW1wbGVyKCk7CisKKyAg
Ly8gUmVnaXN0ZXJzIGZvciBzYW1wbGluZy4gIFJldHVybnMgYW4gb3BhcXVlIHJlZ2lzdHJhdGlv
biBpbmZvLgorICBIYXNodGFibGV6SW5mbyogUmVnaXN0ZXIoKTsKKworICAvLyBVbnJlZ2lzdGVy
cyB0aGUgc2FtcGxlLgorICB2b2lkIFVucmVnaXN0ZXIoSGFzaHRhYmxlekluZm8qIHNhbXBsZSk7
CisKKyAgLy8gVGhlIGRpc3Bvc2UgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgb24gYWxsIHNhbXBs
ZXMgdGhlIG1vbWVudCB0aGV5IGFyZQorICAvLyBiZWluZyB1bnJlZ2lzdGVyZWQuIE9ubHkgYWZm
ZWN0cyBzYW1wbGVzIHRoYXQgYXJlIHVucmVnaXN0ZXJlZCBhZnRlciB0aGUKKyAgLy8gY2FsbGJh
Y2sgaGFzIGJlZW4gc2V0LgorICAvLyBSZXR1cm5zIHRoZSBwcmV2aW91cyBjYWxsYmFjay4KKyAg
dXNpbmcgRGlzcG9zZUNhbGxiYWNrID0gdm9pZCAoKikoY29uc3QgSGFzaHRhYmxlekluZm8mKTsK
KyAgRGlzcG9zZUNhbGxiYWNrIFNldERpc3Bvc2VDYWxsYmFjayhEaXNwb3NlQ2FsbGJhY2sgZik7
CisKKyAgLy8gSXRlcmF0ZXMgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgYFN0YWNrSW5mb2BzLiAg
UmV0dXJuaW5nIHRoZSBudW1iZXIgb2YKKyAgLy8gc2FtcGxlcyB0aGF0IGhhdmUgYmVlbiBkcm9w
cGVkLgorICBpbnQ2NF90IEl0ZXJhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IEhh
c2h0YWJsZXpJbmZvJiBzdGFjayk+JiBmKTsKKworIHByaXZhdGU6CisgIHZvaWQgUHVzaE5ldyhI
YXNodGFibGV6SW5mbyogc2FtcGxlKTsKKyAgdm9pZCBQdXNoRGVhZChIYXNodGFibGV6SW5mbyog
c2FtcGxlKTsKKyAgSGFzaHRhYmxlekluZm8qIFBvcERlYWQoKTsKKworICBzdGQ6OmF0b21pYzxz
aXplX3Q+IGRyb3BwZWRfc2FtcGxlc187CisgIHN0ZDo6YXRvbWljPHNpemVfdD4gc2l6ZV9lc3Rp
bWF0ZV87CisKKyAgLy8gSW50cnVzaXZlIGxvY2sgZnJlZSBsaW5rZWQgbGlzdHMgZm9yIHRyYWNr
aW5nIHNhbXBsZXMuCisgIC8vCisgIC8vIGBhbGxfYCByZWNvcmRzIGFsbCBzYW1wbGVzICh0aGV5
IGFyZSBuZXZlciByZW1vdmVkIGZyb20gdGhpcyBsaXN0KSBhbmQgaXMKKyAgLy8gdGVybWluYXRl
ZCB3aXRoIGEgYG51bGxwdHJgLgorICAvLworICAvLyBgZ3JhdmV5YXJkXy5kZWFkYCBpcyBhIGNp
cmN1bGFyIGxpbmtlZCBsaXN0LiAgV2hlbiBpdCBpcyBlbXB0eSwKKyAgLy8gYGdyYXZleWFyZF8u
ZGVhZCA9PSAmZ3JhdmV5YXJkYC4gIFRoZSBsaXN0IGlzIGNpcmN1bGFyIHNvIHRoYXQKKyAgLy8g
ZXZlcnkgaXRlbSBvbiBpdCAoZXZlbiB0aGUgbGFzdCkgaGFzIGEgbm9uLW51bGwgZGVhZCBwb2lu
dGVyLiAgVGhpcyBhbGxvd3MKKyAgLy8gYEl0ZXJhdGVgIHRvIGRldGVybWluZSBpZiBhIGdpdmVu
IHNhbXBsZSBpcyBsaXZlIG9yIGRlYWQgdXNpbmcgb25seQorICAvLyBpbmZvcm1hdGlvbiBvbiB0
aGUgc2FtcGxlIGl0c2VsZi4KKyAgLy8KKyAgLy8gRm9yIGV4YW1wbGUsIG5vZGVzIFtBLCBCLCBD
LCBELCBFXSB3aXRoIFtBLCBDLCBFXSBhbGl2ZSBhbmQgW0IsIERdIGRlYWQKKyAgLy8gbG9va3Mg
bGlrZSB0aGlzIChHIGlzIHRoZSBHcmF2ZXlhcmQpOgorICAvLworICAvLyAgICAgICAgICAgKy0t
LSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKyAgLy8gICAgYWxsIC0tPnwg
QSB8LS0tPnwgQiB8LS0tPnwgQyB8LS0tPnwgRCB8LS0tPnwgRSB8CisgIC8vICAgICAgICAgICB8
ICAgfCAgICB8ICAgfCAgICB8ICAgfCAgICB8ICAgfCAgICB8ICAgfAorICAvLyAgICstLS0rICAg
fCAgIHwgKy0+fCAgIHwtKyAgfCAgIHwgKy0+fCAgIHwtKyAgfCAgIHwKKyAgLy8gICB8IEcgfCAg
ICstLS0rIHwgICstLS0rIHwgICstLS0rIHwgICstLS0rIHwgICstLS0rCisgIC8vICAgfCAgIHwg
ICAgICAgICB8ICAgICAgICB8ICAgICAgICB8ICAgICAgICB8CisgIC8vICAgfCAgIHwgLS0tLS0t
LS0rICAgICAgICArLS0tLS0tLS0rICAgICAgICB8CisgIC8vICAgKy0tLSsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgIC8vICAgICBeICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgIC8vICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCisgIC8vCisgIHN0ZDo6YXRvbWljPEhhc2h0YWJsZXpJbmZvKj4gYWxsXzsK
KyAgSGFzaHRhYmxlekluZm8gZ3JhdmV5YXJkXzsKKworICBzdGQ6OmF0b21pYzxEaXNwb3NlQ2Fs
bGJhY2s+IGRpc3Bvc2VfOworfTsKKworLy8gRW5hYmxlcyBvciBkaXNhYmxlcyBzYW1wbGluZyBm
b3IgU3dpc3MgdGFibGVzLgordm9pZCBTZXRIYXNodGFibGV6RW5hYmxlZChib29sIGVuYWJsZWQp
OworCisvLyBTZXRzIHRoZSByYXRlIGF0IHdoaWNoIFN3aXNzIHRhYmxlcyB3aWxsIGJlIHNhbXBs
ZWQuCit2b2lkIFNldEhhc2h0YWJsZXpTYW1wbGVQYXJhbWV0ZXIoaW50MzJfdCByYXRlKTsKKwor
Ly8gU2V0cyBhIHNvZnQgbWF4IGZvciB0aGUgbnVtYmVyIG9mIHNhbXBsZXMgdGhhdCB3aWxsIGJl
IGtlcHQuCit2b2lkIFNldEhhc2h0YWJsZXpNYXhTYW1wbGVzKGludDMyX3QgbWF4KTsKKworLy8g
Q29uZmlndXJhdGlvbiBvdmVycmlkZS4KKy8vIFRoaXMgYWxsb3dzIHByb2Nlc3Mtd2lkZSBzYW1w
bGluZyB3aXRob3V0IGRlcGVuZGluZyBvbiBvcmRlciBvZgorLy8gaW5pdGlhbGl6YXRpb24gb2Yg
c3RhdGljIHN0b3JhZ2UgZHVyYXRpb24gb2JqZWN0cy4KKy8vIFRoZSBkZWZpbml0aW9uIG9mIHRo
aXMgY29uc3RhbnQgaXMgd2Vhaywgd2hpY2ggYWxsb3dzIHVzIHRvIGluamVjdCBhCisvLyBkaWZm
ZXJlbnQgdmFsdWUgZm9yIGl0IGF0IGxpbmsgdGltZS4KK2V4dGVybiAiQyIgY29uc3QgYm9vbCBr
QWJzbENvbnRhaW5lckludGVybmFsU2FtcGxlRXZlcnl0aGluZzsKKworfSAgLy8gbmFtZXNwYWNl
IGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBB
QlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIVEFCTEVaX1NBTVBMRVJfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGV6X3NhbXBsZXJfZm9yY2Vfd2Vha19k
ZWZpbml0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxl
cl9mb3JjZV93ZWFrX2RlZmluaXRpb24uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNhNmZmZGFkZDdkYWNlMzU1
MzYzMWYzYzBmZjM0YmQyODA2NWI0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9oYXNodGFibGV6X3NhbXBsZXJfZm9yY2Vfd2Vha19kZWZpbml0aW9uLmNjCkBA
IC0wLDAgKzEsMjcgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyLmgi
CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorCituYW1lc3BhY2UgYWJzbCB7
CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKworLy8gU2VlIGhhc2h0YWJsZXpfc2Ft
cGxlci5oIGZvciBkZXRhaWxzLgorZXh0ZXJuICJDIiBBQlNMX0FUVFJJQlVURV9XRUFLIGNvbnN0
IGJvb2wKKyAgICBrQWJzbENvbnRhaW5lckludGVybmFsU2FtcGxlRXZlcnl0aGluZyA9IGZhbHNl
OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2Ft
cGxlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxl
cl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmOWU4ZGQyMWZmYzcwYzNjOGI1MmFmYTNmZGRlNzI5YTEy
NWU0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRh
Ymxlel9zYW1wbGVyX3Rlc3QuY2MKQEAgLTAsMCArMSwzNTUgQEAKKy8vIENvcHlyaWdodCAyMDE4
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvaGFzaHRhYmxlel9zYW1wbGVyLmgiCisKKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHJhbmRvbT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5o
IgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhdmVfc3NlLmgiCisjaW5jbHVk
ZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5oIgorI2luY2x1ZGUgImFi
c2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3RocmVhZF9wb29sLmgiCisjaW5jbHVkZSAiYWJz
bC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIKKyNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlv
bi9ub3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3RpbWUvY2xvY2suaCIKKyNpbmNsdWRl
ICJhYnNsL3RpbWUvdGltZS5oIgorCisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTRTIKK2NvbnN0ZXhw
ciBpbnQga1Byb2JlTGVuZ3RoID0gMTY7CisjZWxzZQorY29uc3RleHByIGludCBrUHJvYmVMZW5n
dGggPSA4OworI2VuZGlmCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwgeworY2xhc3MgSGFzaHRhYmxlekluZm9IYW5kbGVQZWVyIHsKKyBwdWJsaWM6Cisg
IHN0YXRpYyBib29sIElzU2FtcGxlZChjb25zdCBIYXNodGFibGV6SW5mb0hhbmRsZSYgaCkgewor
ICAgIHJldHVybiBoLmluZm9fICE9IG51bGxwdHI7CisgIH0KKworICBzdGF0aWMgSGFzaHRhYmxl
ekluZm8qIEdldEluZm8oSGFzaHRhYmxlekluZm9IYW5kbGUqIGgpIHsgcmV0dXJuIGgtPmluZm9f
OyB9Cit9OworCituYW1lc3BhY2UgewordXNpbmcgOjphYnNsOjpzeW5jaHJvbml6YXRpb25faW50
ZXJuYWw6OlRocmVhZFBvb2w7Cit1c2luZyA6OnRlc3Rpbmc6OklzRW1wdHk7Cit1c2luZyA6OnRl
c3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlOworCitzdGQ6OnZlY3RvcjxzaXplX3Q+IEdldFNp
emVzKEhhc2h0YWJsZXpTYW1wbGVyKiBzKSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gcmVzOwor
ICBzLT5JdGVyYXRlKFsmXShjb25zdCBIYXNodGFibGV6SW5mbyYgaW5mbykgeworICAgIHJlcy5w
dXNoX2JhY2soaW5mby5zaXplLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkpOworICB9
KTsKKyAgcmV0dXJuIHJlczsKK30KKworSGFzaHRhYmxlekluZm8qIFJlZ2lzdGVyKEhhc2h0YWJs
ZXpTYW1wbGVyKiBzLCBzaXplX3Qgc2l6ZSkgeworICBhdXRvKiBpbmZvID0gcy0+UmVnaXN0ZXIo
KTsKKyAgYXNzZXJ0KGluZm8gIT0gbnVsbHB0cik7CisgIGluZm8tPnNpemUuc3RvcmUoc2l6ZSk7
CisgIHJldHVybiBpbmZvOworfQorCitURVNUKEhhc2h0YWJsZXpJbmZvVGVzdCwgUHJlcGFyZUZv
clNhbXBsaW5nKSB7CisgIGFic2w6OlRpbWUgdGVzdF9zdGFydCA9IGFic2w6Ok5vdygpOworICBI
YXNodGFibGV6SW5mbyBpbmZvOworICBhYnNsOjpNdXRleExvY2sgbCgmaW5mby5pbml0X211KTsK
KyAgaW5mby5QcmVwYXJlRm9yU2FtcGxpbmcoKTsKKworICBFWFBFQ1RfRVEoaW5mby5jYXBhY2l0
eS5sb2FkKCksIDApOworICBFWFBFQ1RfRVEoaW5mby5zaXplLmxvYWQoKSwgMCk7CisgIEVYUEVD
VF9FUShpbmZvLm51bV9lcmFzZXMubG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8ubWF4X3By
b2JlX2xlbmd0aC5sb2FkKCksIDApOworICBFWFBFQ1RfRVEoaW5mby50b3RhbF9wcm9iZV9sZW5n
dGgubG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8uaGFzaGVzX2JpdHdpc2Vfb3IubG9hZCgp
LCAwKTsKKyAgRVhQRUNUX0VRKGluZm8uaGFzaGVzX2JpdHdpc2VfYW5kLmxvYWQoKSwgfnNpemVf
dHt9KTsKKyAgRVhQRUNUX0dFKGluZm8uY3JlYXRlX3RpbWUsIHRlc3Rfc3RhcnQpOworCisgIGlu
Zm8uY2FwYWNpdHkuc3RvcmUoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGluZm8u
c2l6ZS5zdG9yZSgxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaW5mby5udW1fZXJh
c2VzLnN0b3JlKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBpbmZvLm1heF9wcm9i
ZV9sZW5ndGguc3RvcmUoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGluZm8udG90
YWxfcHJvYmVfbGVuZ3RoLnN0b3JlKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBp
bmZvLmhhc2hlc19iaXR3aXNlX29yLnN0b3JlKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OworICBpbmZvLmhhc2hlc19iaXR3aXNlX2FuZC5zdG9yZSgxLCBzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsKKyAgaW5mby5jcmVhdGVfdGltZSA9IHRlc3Rfc3RhcnQgLSBhYnNsOjpIb3Vycygy
MCk7CisKKyAgaW5mby5QcmVwYXJlRm9yU2FtcGxpbmcoKTsKKyAgRVhQRUNUX0VRKGluZm8uY2Fw
YWNpdHkubG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8uc2l6ZS5sb2FkKCksIDApOworICBF
WFBFQ1RfRVEoaW5mby5udW1fZXJhc2VzLmxvYWQoKSwgMCk7CisgIEVYUEVDVF9FUShpbmZvLm1h
eF9wcm9iZV9sZW5ndGgubG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8udG90YWxfcHJvYmVf
bGVuZ3RoLmxvYWQoKSwgMCk7CisgIEVYUEVDVF9FUShpbmZvLmhhc2hlc19iaXR3aXNlX29yLmxv
YWQoKSwgMCk7CisgIEVYUEVDVF9FUShpbmZvLmhhc2hlc19iaXR3aXNlX2FuZC5sb2FkKCksIH5z
aXplX3R7fSk7CisgIEVYUEVDVF9HRShpbmZvLmNyZWF0ZV90aW1lLCB0ZXN0X3N0YXJ0KTsKK30K
KworVEVTVChIYXNodGFibGV6SW5mb1Rlc3QsIFJlY29yZFN0b3JhZ2VDaGFuZ2VkKSB7CisgIEhh
c2h0YWJsZXpJbmZvIGluZm87CisgIGFic2w6Ok11dGV4TG9jayBsKCZpbmZvLmluaXRfbXUpOwor
ICBpbmZvLlByZXBhcmVGb3JTYW1wbGluZygpOworICBSZWNvcmRTdG9yYWdlQ2hhbmdlZFNsb3co
JmluZm8sIDE3LCA0Nyk7CisgIEVYUEVDVF9FUShpbmZvLnNpemUubG9hZCgpLCAxNyk7CisgIEVY
UEVDVF9FUShpbmZvLmNhcGFjaXR5LmxvYWQoKSwgNDcpOworICBSZWNvcmRTdG9yYWdlQ2hhbmdl
ZFNsb3coJmluZm8sIDIwLCAyMCk7CisgIEVYUEVDVF9FUShpbmZvLnNpemUubG9hZCgpLCAyMCk7
CisgIEVYUEVDVF9FUShpbmZvLmNhcGFjaXR5LmxvYWQoKSwgMjApOworfQorCitURVNUKEhhc2h0
YWJsZXpJbmZvVGVzdCwgUmVjb3JkSW5zZXJ0KSB7CisgIEhhc2h0YWJsZXpJbmZvIGluZm87Cisg
IGFic2w6Ok11dGV4TG9jayBsKCZpbmZvLmluaXRfbXUpOworICBpbmZvLlByZXBhcmVGb3JTYW1w
bGluZygpOworICBFWFBFQ1RfRVEoaW5mby5tYXhfcHJvYmVfbGVuZ3RoLmxvYWQoKSwgMCk7Cisg
IFJlY29yZEluc2VydFNsb3coJmluZm8sIDB4MDAwMEZGMDAsIDYgKiBrUHJvYmVMZW5ndGgpOwor
ICBFWFBFQ1RfRVEoaW5mby5tYXhfcHJvYmVfbGVuZ3RoLmxvYWQoKSwgNik7CisgIEVYUEVDVF9F
UShpbmZvLmhhc2hlc19iaXR3aXNlX2FuZC5sb2FkKCksIDB4MDAwMEZGMDApOworICBFWFBFQ1Rf
RVEoaW5mby5oYXNoZXNfYml0d2lzZV9vci5sb2FkKCksIDB4MDAwMEZGMDApOworICBSZWNvcmRJ
bnNlcnRTbG93KCZpbmZvLCAweDAwMEZGMDAwLCA0ICoga1Byb2JlTGVuZ3RoKTsKKyAgRVhQRUNU
X0VRKGluZm8ubWF4X3Byb2JlX2xlbmd0aC5sb2FkKCksIDYpOworICBFWFBFQ1RfRVEoaW5mby5o
YXNoZXNfYml0d2lzZV9hbmQubG9hZCgpLCAweDAwMDBGMDAwKTsKKyAgRVhQRUNUX0VRKGluZm8u
aGFzaGVzX2JpdHdpc2Vfb3IubG9hZCgpLCAweDAwMEZGRjAwKTsKKyAgUmVjb3JkSW5zZXJ0U2xv
dygmaW5mbywgMHgwMEZGMDAwMCwgMTIgKiBrUHJvYmVMZW5ndGgpOworICBFWFBFQ1RfRVEoaW5m
by5tYXhfcHJvYmVfbGVuZ3RoLmxvYWQoKSwgMTIpOworICBFWFBFQ1RfRVEoaW5mby5oYXNoZXNf
Yml0d2lzZV9hbmQubG9hZCgpLCAweDAwMDAwMDAwKTsKKyAgRVhQRUNUX0VRKGluZm8uaGFzaGVz
X2JpdHdpc2Vfb3IubG9hZCgpLCAweDAwRkZGRjAwKTsKK30KKworVEVTVChIYXNodGFibGV6SW5m
b1Rlc3QsIFJlY29yZEVyYXNlKSB7CisgIEhhc2h0YWJsZXpJbmZvIGluZm87CisgIGFic2w6Ok11
dGV4TG9jayBsKCZpbmZvLmluaXRfbXUpOworICBpbmZvLlByZXBhcmVGb3JTYW1wbGluZygpOwor
ICBFWFBFQ1RfRVEoaW5mby5udW1fZXJhc2VzLmxvYWQoKSwgMCk7CisgIEVYUEVDVF9FUShpbmZv
LnNpemUubG9hZCgpLCAwKTsKKyAgUmVjb3JkSW5zZXJ0U2xvdygmaW5mbywgMHgwMDAwRkYwMCwg
NiAqIGtQcm9iZUxlbmd0aCk7CisgIEVYUEVDVF9FUShpbmZvLnNpemUubG9hZCgpLCAxKTsKKyAg
UmVjb3JkRXJhc2VTbG93KCZpbmZvKTsKKyAgRVhQRUNUX0VRKGluZm8uc2l6ZS5sb2FkKCksIDAp
OworICBFWFBFQ1RfRVEoaW5mby5udW1fZXJhc2VzLmxvYWQoKSwgMSk7Cit9CisKK1RFU1QoSGFz
aHRhYmxlekluZm9UZXN0LCBSZWNvcmRSZWhhc2gpIHsKKyAgSGFzaHRhYmxlekluZm8gaW5mbzsK
KyAgYWJzbDo6TXV0ZXhMb2NrIGwoJmluZm8uaW5pdF9tdSk7CisgIGluZm8uUHJlcGFyZUZvclNh
bXBsaW5nKCk7CisgIFJlY29yZEluc2VydFNsb3coJmluZm8sIDB4MSwgMCk7CisgIFJlY29yZElu
c2VydFNsb3coJmluZm8sIDB4Miwga1Byb2JlTGVuZ3RoKTsKKyAgUmVjb3JkSW5zZXJ0U2xvdygm
aW5mbywgMHg0LCBrUHJvYmVMZW5ndGgpOworICBSZWNvcmRJbnNlcnRTbG93KCZpbmZvLCAweDgs
IDIgKiBrUHJvYmVMZW5ndGgpOworICBFWFBFQ1RfRVEoaW5mby5zaXplLmxvYWQoKSwgNCk7Cisg
IEVYUEVDVF9FUShpbmZvLnRvdGFsX3Byb2JlX2xlbmd0aC5sb2FkKCksIDQpOworCisgIFJlY29y
ZEVyYXNlU2xvdygmaW5mbyk7CisgIFJlY29yZEVyYXNlU2xvdygmaW5mbyk7CisgIEVYUEVDVF9F
UShpbmZvLnNpemUubG9hZCgpLCAyKTsKKyAgRVhQRUNUX0VRKGluZm8udG90YWxfcHJvYmVfbGVu
Z3RoLmxvYWQoKSwgNCk7CisgIEVYUEVDVF9FUShpbmZvLm51bV9lcmFzZXMubG9hZCgpLCAyKTsK
KworICBSZWNvcmRSZWhhc2hTbG93KCZpbmZvLCAzICoga1Byb2JlTGVuZ3RoKTsKKyAgRVhQRUNU
X0VRKGluZm8uc2l6ZS5sb2FkKCksIDIpOworICBFWFBFQ1RfRVEoaW5mby50b3RhbF9wcm9iZV9s
ZW5ndGgubG9hZCgpLCAzKTsKKyAgRVhQRUNUX0VRKGluZm8ubnVtX2VyYXNlcy5sb2FkKCksIDAp
OworfQorCitURVNUKEhhc2h0YWJsZXpTYW1wbGVyVGVzdCwgU21hbGxTYW1wbGVQYXJhbWV0ZXIp
IHsKKyAgU2V0SGFzaHRhYmxlekVuYWJsZWQodHJ1ZSk7CisgIFNldEhhc2h0YWJsZXpTYW1wbGVQ
YXJhbWV0ZXIoMTAwKTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAg
IGludDY0X3QgbmV4dF9zYW1wbGUgPSAwOworICAgIEhhc2h0YWJsZXpJbmZvKiBzYW1wbGUgPSBT
YW1wbGVTbG93KCZuZXh0X3NhbXBsZSk7CisgICAgRVhQRUNUX0dUKG5leHRfc2FtcGxlLCAwKTsK
KyAgICBFWFBFQ1RfTkUoc2FtcGxlLCBudWxscHRyKTsKKyAgICBVbnNhbXBsZVNsb3coc2FtcGxl
KTsKKyAgfQorfQorCitURVNUKEhhc2h0YWJsZXpTYW1wbGVyVGVzdCwgTGFyZ2VTYW1wbGVQYXJh
bWV0ZXIpIHsKKyAgU2V0SGFzaHRhYmxlekVuYWJsZWQodHJ1ZSk7CisgIFNldEhhc2h0YWJsZXpT
YW1wbGVQYXJhbWV0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworCisg
IGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgaW50NjRfdCBuZXh0X3NhbXBs
ZSA9IDA7CisgICAgSGFzaHRhYmxlekluZm8qIHNhbXBsZSA9IFNhbXBsZVNsb3coJm5leHRfc2Ft
cGxlKTsKKyAgICBFWFBFQ1RfR1QobmV4dF9zYW1wbGUsIDApOworICAgIEVYUEVDVF9ORShzYW1w
bGUsIG51bGxwdHIpOworICAgIFVuc2FtcGxlU2xvdyhzYW1wbGUpOworICB9Cit9CisKK1RFU1Qo
SGFzaHRhYmxlelNhbXBsZXJUZXN0LCBTYW1wbGUpIHsKKyAgU2V0SGFzaHRhYmxlekVuYWJsZWQo
dHJ1ZSk7CisgIFNldEhhc2h0YWJsZXpTYW1wbGVQYXJhbWV0ZXIoMTAwKTsKKyAgaW50NjRfdCBu
dW1fc2FtcGxlZCA9IDA7CisgIGludDY0X3QgdG90YWwgPSAwOworICBkb3VibGUgc2FtcGxlX3Jh
dGUgPSAwLjA7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgSGFz
aHRhYmxlekluZm9IYW5kbGUgaCA9IFNhbXBsZSgpOworICAgICsrdG90YWw7CisgICAgaWYgKEhh
c2h0YWJsZXpJbmZvSGFuZGxlUGVlcjo6SXNTYW1wbGVkKGgpKSB7CisgICAgICArK251bV9zYW1w
bGVkOworICAgIH0KKyAgICBzYW1wbGVfcmF0ZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4obnVtX3Nh
bXBsZWQpIC8gdG90YWw7CisgICAgaWYgKDAuMDA1IDwgc2FtcGxlX3JhdGUgJiYgc2FtcGxlX3Jh
dGUgPCAwLjAxNSkgYnJlYWs7CisgIH0KKyAgRVhQRUNUX05FQVIoc2FtcGxlX3JhdGUsIDAuMDEs
IDAuMDA1KTsKK30KKworVEVTVChIYXNodGFibGV6U2FtcGxlclRlc3QsIEhhbmRsZSkgeworICBh
dXRvJiBzYW1wbGVyID0gSGFzaHRhYmxlelNhbXBsZXI6Okdsb2JhbCgpOworICBIYXNodGFibGV6
SW5mb0hhbmRsZSBoKHNhbXBsZXIuUmVnaXN0ZXIoKSk7CisgIGF1dG8qIGluZm8gPSBIYXNodGFi
bGV6SW5mb0hhbmRsZVBlZXI6OkdldEluZm8oJmgpOworICBpbmZvLT5oYXNoZXNfYml0d2lzZV9h
bmQuc3RvcmUoMHgxMjM0NTY3OCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisKKyAgYm9v
bCBmb3VuZCA9IGZhbHNlOworICBzYW1wbGVyLkl0ZXJhdGUoWyZdKGNvbnN0IEhhc2h0YWJsZXpJ
bmZvJiBoKSB7CisgICAgaWYgKCZoID09IGluZm8pIHsKKyAgICAgIEVYUEVDVF9FUShoLmhhc2hl
c19iaXR3aXNlX2FuZC5sb2FkKCksIDB4MTIzNDU2NzgpOworICAgICAgZm91bmQgPSB0cnVlOwor
ICAgIH0KKyAgfSk7CisgIEVYUEVDVF9UUlVFKGZvdW5kKTsKKworICBoID0gSGFzaHRhYmxleklu
Zm9IYW5kbGUoKTsKKyAgZm91bmQgPSBmYWxzZTsKKyAgc2FtcGxlci5JdGVyYXRlKFsmXShjb25z
dCBIYXNodGFibGV6SW5mbyYgaCkgeworICAgIGlmICgmaCA9PSBpbmZvKSB7CisgICAgICAvLyB0
aGlzIHdpbGwgb25seSBoYXBwZW4gaWYgc29tZSBvdGhlciB0aHJlYWQgaGFzIHJlc3VycmVjdGVk
IHRoZSBpbmZvCisgICAgICAvLyB0aGUgb2xkIGhhbmRsZSB3YXMgdXNpbmcuCisgICAgICBpZiAo
aC5oYXNoZXNfYml0d2lzZV9hbmQubG9hZCgpID09IDB4MTIzNDU2NzgpIHsKKyAgICAgICAgZm91
bmQgPSB0cnVlOworICAgICAgfQorICAgIH0KKyAgfSk7CisgIEVYUEVDVF9GQUxTRShmb3VuZCk7
Cit9CisKK1RFU1QoSGFzaHRhYmxlelNhbXBsZXJUZXN0LCBSZWdpc3RyYXRpb24pIHsKKyAgSGFz
aHRhYmxlelNhbXBsZXIgc2FtcGxlcjsKKyAgYXV0byogaW5mbzEgPSBSZWdpc3Rlcigmc2FtcGxl
ciwgMSk7CisgIEVYUEVDVF9USEFUKEdldFNpemVzKCZzYW1wbGVyKSwgVW5vcmRlcmVkRWxlbWVu
dHNBcmUoMSkpOworCisgIGF1dG8qIGluZm8yID0gUmVnaXN0ZXIoJnNhbXBsZXIsIDIpOworICBF
WFBFQ1RfVEhBVChHZXRTaXplcygmc2FtcGxlciksIFVub3JkZXJlZEVsZW1lbnRzQXJlKDEsIDIp
KTsKKyAgaW5mbzEtPnNpemUuc3RvcmUoMyk7CisgIEVYUEVDVF9USEFUKEdldFNpemVzKCZzYW1w
bGVyKSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoMywgMikpOworCisgIHNhbXBsZXIuVW5yZWdpc3Rl
cihpbmZvMSk7CisgIHNhbXBsZXIuVW5yZWdpc3RlcihpbmZvMik7Cit9CisKK1RFU1QoSGFzaHRh
YmxlelNhbXBsZXJUZXN0LCBVbnJlZ2lzdHJhdGlvbikgeworICBIYXNodGFibGV6U2FtcGxlciBz
YW1wbGVyOworICBzdGQ6OnZlY3RvcjxIYXNodGFibGV6SW5mbyo+IGluZm9zOworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgIGluZm9zLnB1c2hfYmFjayhSZWdpc3Rlcigm
c2FtcGxlciwgaSkpOworICB9CisgIEVYUEVDVF9USEFUKEdldFNpemVzKCZzYW1wbGVyKSwgVW5v
cmRlcmVkRWxlbWVudHNBcmUoMCwgMSwgMikpOworCisgIHNhbXBsZXIuVW5yZWdpc3RlcihpbmZv
c1sxXSk7CisgIEVYUEVDVF9USEFUKEdldFNpemVzKCZzYW1wbGVyKSwgVW5vcmRlcmVkRWxlbWVu
dHNBcmUoMCwgMikpOworCisgIGluZm9zLnB1c2hfYmFjayhSZWdpc3Rlcigmc2FtcGxlciwgMykp
OworICBpbmZvcy5wdXNoX2JhY2soUmVnaXN0ZXIoJnNhbXBsZXIsIDQpKTsKKyAgRVhQRUNUX1RI
QVQoR2V0U2l6ZXMoJnNhbXBsZXIpLCBVbm9yZGVyZWRFbGVtZW50c0FyZSgwLCAyLCAzLCA0KSk7
CisgIHNhbXBsZXIuVW5yZWdpc3RlcihpbmZvc1szXSk7CisgIEVYUEVDVF9USEFUKEdldFNpemVz
KCZzYW1wbGVyKSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoMCwgMiwgNCkpOworCisgIHNhbXBsZXIu
VW5yZWdpc3RlcihpbmZvc1swXSk7CisgIHNhbXBsZXIuVW5yZWdpc3RlcihpbmZvc1syXSk7Cisg
IHNhbXBsZXIuVW5yZWdpc3RlcihpbmZvc1s0XSk7CisgIEVYUEVDVF9USEFUKEdldFNpemVzKCZz
YW1wbGVyKSwgSXNFbXB0eSgpKTsKK30KKworVEVTVChIYXNodGFibGV6U2FtcGxlclRlc3QsIE11
bHRpVGhyZWFkZWQpIHsKKyAgSGFzaHRhYmxlelNhbXBsZXIgc2FtcGxlcjsKKyAgTm90aWZpY2F0
aW9uIHN0b3A7CisgIFRocmVhZFBvb2wgcG9vbCgxMCk7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCAxMDsgKytpKSB7CisgICAgcG9vbC5TY2hlZHVsZShbJnNhbXBsZXIsICZzdG9wXSgpIHsKKyAg
ICAgIHN0ZDo6cmFuZG9tX2RldmljZSByZDsKKyAgICAgIHN0ZDo6bXQxOTkzNyBnZW4ocmQoKSk7
CisKKyAgICAgIHN0ZDo6dmVjdG9yPEhhc2h0YWJsZXpJbmZvKj4gaW5mb3o7CisgICAgICB3aGls
ZSAoIXN0b3AuSGFzQmVlbk5vdGlmaWVkKCkpIHsKKyAgICAgICAgaWYgKGluZm96LmVtcHR5KCkp
IHsKKyAgICAgICAgICBpbmZvei5wdXNoX2JhY2soc2FtcGxlci5SZWdpc3RlcigpKTsKKyAgICAg
ICAgfQorICAgICAgICBzd2l0Y2ggKHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPD4oMCwg
MikoZ2VuKSkgeworICAgICAgICAgIGNhc2UgMDogeworICAgICAgICAgICAgaW5mb3oucHVzaF9i
YWNrKHNhbXBsZXIuUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9
CisgICAgICAgICAgY2FzZSAxOiB7CisgICAgICAgICAgICBzaXplX3QgcCA9CisgICAgICAgICAg
ICAgICAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248PigwLCBpbmZvei5zaXplKCkgLSAx
KShnZW4pOworICAgICAgICAgICAgSGFzaHRhYmxlekluZm8qIGluZm8gPSBpbmZveltwXTsKKyAg
ICAgICAgICAgIGluZm96W3BdID0gaW5mb3ouYmFjaygpOworICAgICAgICAgICAgaW5mb3oucG9w
X2JhY2soKTsKKyAgICAgICAgICAgIHNhbXBsZXIuVW5yZWdpc3RlcihpbmZvKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICBjYXNlIDI6IHsKKyAgICAgICAgICAg
IGFic2w6OkR1cmF0aW9uIG9sZGVzdCA9IGFic2w6Olplcm9EdXJhdGlvbigpOworICAgICAgICAg
ICAgc2FtcGxlci5JdGVyYXRlKFsmXShjb25zdCBIYXNodGFibGV6SW5mbyYgaW5mbykgeworICAg
ICAgICAgICAgICBvbGRlc3QgPSBzdGQ6Om1heChvbGRlc3QsIGFic2w6Ok5vdygpIC0gaW5mby5j
cmVhdGVfdGltZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIEFTU0VSVF9HRShvbGRl
c3QsIGFic2w6Olplcm9EdXJhdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0pOworICB9CisgIC8vIFRoZSB0aHJlYWRzIHdp
bGwgaGFtbWVyIGF3YXkuICBHaXZlIGl0IGEgbGl0dGxlIGJpdCBvZiB0aW1lIGZvciB0c2FuIHRv
CisgIC8vIHNwb3QgZXJyb3JzLgorICBhYnNsOjpTbGVlcEZvcihhYnNsOjpTZWNvbmRzKDMpKTsK
KyAgc3RvcC5Ob3RpZnkoKTsKK30KKworVEVTVChIYXNodGFibGV6U2FtcGxlclRlc3QsIENhbGxi
YWNrKSB7CisgIEhhc2h0YWJsZXpTYW1wbGVyIHNhbXBsZXI7CisKKyAgYXV0byogaW5mbzEgPSBS
ZWdpc3Rlcigmc2FtcGxlciwgMSk7CisgIGF1dG8qIGluZm8yID0gUmVnaXN0ZXIoJnNhbXBsZXIs
IDIpOworCisgIHN0YXRpYyBjb25zdCBIYXNodGFibGV6SW5mbyogZXhwZWN0ZWQ7CisKKyAgYXV0
byBjYWxsYmFjayA9IFtdKGNvbnN0IEhhc2h0YWJsZXpJbmZvJiBpbmZvKSB7CisgICAgLy8gV2Ug
Y2FuJ3QgdXNlIGBpbmZvYCBvdXRzaWRlIG9mIHRoaXMgY2FsbGJhY2sgYmVjYXVzZSB0aGUgb2Jq
ZWN0IHdpbGwgYmUKKyAgICAvLyBkaXNwb3NlZCBhcyBzb29uIGFzIHdlIHJldHVybiBmcm9tIGhl
cmUuCisgICAgRVhQRUNUX0VRKCZpbmZvLCBleHBlY3RlZCk7CisgIH07CisKKyAgLy8gU2V0IHRo
ZSBjYWxsYmFjay4KKyAgRVhQRUNUX0VRKHNhbXBsZXIuU2V0RGlzcG9zZUNhbGxiYWNrKGNhbGxi
YWNrKSwgbnVsbHB0cik7CisgIGV4cGVjdGVkID0gaW5mbzE7CisgIHNhbXBsZXIuVW5yZWdpc3Rl
cihpbmZvMSk7CisKKyAgLy8gVW5zZXQgdGhlIGNhbGxiYWNrLgorICBFWFBFQ1RfRVEoY2FsbGJh
Y2ssIHNhbXBsZXIuU2V0RGlzcG9zZUNhbGxiYWNrKG51bGxwdHIpKTsKKyAgZXhwZWN0ZWQgPSBu
dWxscHRyOyAgLy8gbm8gbW9yZSBjYWxscy4KKyAgc2FtcGxlci5VbnJlZ2lzdGVyKGluZm8yKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
Cit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL2hhdmVfc3NlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGF2ZV9zc2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MzQxNDQxOGRiYTA2NGVmYWE4Nzg2MmE3Y2U4YzFhZGNlOThkNzA0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhdmVfc3NlLmgKQEAgLTAsMCAr
MSw0OSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8g
U2hhcmVkIGNvbmZpZyBwcm9iaW5nIGZvciBTU0UgaW5zdHJ1Y3Rpb25zIHVzZWQgaW4gU3dpc3Mg
dGFibGVzLgorI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVZFX1NTRV9IXworI2Rl
ZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVZFX1NTRV9IXworCisjaWZuZGVmIFNXSVNT
VEFCTEVfSEFWRV9TU0UyCisjaWYgZGVmaW5lZChfX1NTRTJfXykgfHwgIFwKKyAgICAoZGVmaW5l
ZChfTVNDX1ZFUikgJiYgXAorICAgICAoZGVmaW5lZChfTV9YNjQpIHx8IChkZWZpbmVkKF9NX0lY
ODYpICYmIF9NX0lYODZfRlAgPj0gMikpKQorI2RlZmluZSBTV0lTU1RBQkxFX0hBVkVfU1NFMiAx
CisjZWxzZQorI2RlZmluZSBTV0lTU1RBQkxFX0hBVkVfU1NFMiAwCisjZW5kaWYKKyNlbmRpZgor
CisjaWZuZGVmIFNXSVNTVEFCTEVfSEFWRV9TU1NFMworI2lmZGVmIF9fU1NTRTNfXworI2RlZmlu
ZSBTV0lTU1RBQkxFX0hBVkVfU1NTRTMgMQorI2Vsc2UKKyNkZWZpbmUgU1dJU1NUQUJMRV9IQVZF
X1NTU0UzIDAKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBTV0lTU1RBQkxFX0hBVkVfU1NTRTMgJiYg
IVNXSVNTVEFCTEVfSEFWRV9TU0UyCisjZXJyb3IgIkJhZCBjb25maWd1cmF0aW9uISIKKyNlbmRp
ZgorCisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTRTIKKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNl
bmRpZgorCisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTU0UzCisjaW5jbHVkZSA8dG1taW50cmluLmg+
CisjZW5kaWYKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVZFX1NTRV9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2lubGluZWRfdmVjdG9yLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaW5saW5lZF92ZWN0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MWM0ZjZlYmZjY2NiZGFhZGQ0ZjkwYTA5Y2ZjZDlkNmNjZWQ4YTZlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2lubGluZWRfdmVjdG9yLmgKQEAgLTAsMCArMSw4
OTMgQEAKKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVm
IEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0lOTElORURfVkVDVE9SX0lOVEVSTkFMX0hfCisjZGVm
aW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0lOTElORURfVkVDVE9SX0lOVEVSTkFMX0hfCisK
KyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3Ry
aW5nPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxt
ZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3Mu
aCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlLmgi
CisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5
cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9zcGFuLmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBJdGVyYXRvcj4KK3VzaW5nIElzQXRMZWFzdEZvcndhcmRJdGVyYXRvciA9IHN0ZDo6
aXNfY29udmVydGlibGU8CisgICAgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0
b3I+OjppdGVyYXRvcl9jYXRlZ29yeSwKKyAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnPjsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvclR5cGU+Cit1c2luZyBJc01lbWNweU9rID0g
YWJzbDo6Y29uanVuY3Rpb248CisgICAgc3RkOjppc19zYW1lPHN0ZDo6YWxsb2NhdG9yPHR5cGVu
YW1lIEFsbG9jYXRvclR5cGU6OnZhbHVlX3R5cGU+LAorICAgICAgICAgICAgICAgICBBbGxvY2F0
b3JUeXBlPiwKKyAgICBhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPHR5cGVu
YW1lIEFsbG9jYXRvclR5cGU6OnZhbHVlX3R5cGU+LAorICAgIGFic2w6OmlzX3RyaXZpYWxseV9j
b3B5X2Fzc2lnbmFibGU8dHlwZW5hbWUgQWxsb2NhdG9yVHlwZTo6dmFsdWVfdHlwZT4sCisgICAg
YWJzbDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTx0eXBlbmFtZSBBbGxvY2F0b3JUeXBlOjp2
YWx1ZV90eXBlPj47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3JUeXBlLCB0eXBlbmFt
ZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFNpemVUeXBlPgordm9pZCBEZXN0cm95RWxlbWVudHMoQWxs
b2NhdG9yVHlwZSogYWxsb2NfcHRyLCBWYWx1ZVR5cGUqIGRlc3Ryb3lfZmlyc3QsCisgICAgICAg
ICAgICAgICAgICAgICBTaXplVHlwZSBkZXN0cm95X3NpemUpIHsKKyAgdXNpbmcgQWxsb2NhdG9y
VHJhaXRzID0gYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3JUeXBlPjsKKworICBpZiAo
ZGVzdHJveV9maXJzdCAhPSBudWxscHRyKSB7CisgICAgZm9yIChhdXRvIGkgPSBkZXN0cm95X3Np
emU7IGkgIT0gMDspIHsKKyAgICAgIC0taTsKKyAgICAgIEFsbG9jYXRvclRyYWl0czo6ZGVzdHJv
eSgqYWxsb2NfcHRyLCBkZXN0cm95X2ZpcnN0ICsgaSk7CisgICAgfQorCisjaWZuZGVmIE5ERUJV
RworICAgIC8vIE92ZXJ3cml0ZSB1bnVzZWQgbWVtb3J5IHdpdGggYDB4YWJgIHNvIHdlIGNhbiBj
YXRjaCB1bmluaXRpYWxpemVkIHVzYWdlLgorICAgIC8vCisgICAgLy8gQ2FzdCB0byBgdm9pZCpg
IHRvIHRlbGwgdGhlIGNvbXBpbGVyIHRoYXQgd2UgZG9uJ3QgY2FyZSB0aGF0IHdlIG1pZ2h0IGJl
CisgICAgLy8gc2NyaWJibGluZyBvbiBhIHZ0YWJsZSBwb2ludGVyLgorICAgIGF1dG8qIG1lbW9y
eV9wdHIgPSBzdGF0aWNfY2FzdDx2b2lkKj4oZGVzdHJveV9maXJzdCk7CisgICAgYXV0byBtZW1v
cnlfc2l6ZSA9IHNpemVvZihWYWx1ZVR5cGUpICogZGVzdHJveV9zaXplOworICAgIHN0ZDo6bWVt
c2V0KG1lbW9yeV9wdHIsIDB4YWIsIG1lbW9yeV9zaXplKTsKKyNlbmRpZiAgLy8gTkRFQlVHCisg
IH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvclR5cGUsIHR5cGVuYW1lIFZhbHVl
VHlwZSwgdHlwZW5hbWUgVmFsdWVBZGFwdGVyLAorICAgICAgICAgIHR5cGVuYW1lIFNpemVUeXBl
Pgordm9pZCBDb25zdHJ1Y3RFbGVtZW50cyhBbGxvY2F0b3JUeXBlKiBhbGxvY19wdHIsIFZhbHVl
VHlwZSogY29uc3RydWN0X2ZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUFkYXB0
ZXIqIHZhbHVlc19wdHIsIFNpemVUeXBlIGNvbnN0cnVjdF9zaXplKSB7CisgIGZvciAoU2l6ZVR5
cGUgaSA9IDA7IGkgPCBjb25zdHJ1Y3Rfc2l6ZTsgKytpKSB7CisgICAgQUJTTF9JTlRFUk5BTF9U
UlkgeworICAgICAgdmFsdWVzX3B0ci0+Q29uc3RydWN0TmV4dChhbGxvY19wdHIsIGNvbnN0cnVj
dF9maXJzdCArIGkpOworICAgIH0KKyAgICBBQlNMX0lOVEVSTkFMX0NBVENIX0FOWSB7CisgICAg
ICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVzdHJveUVsZW1lbnRzKGFsbG9jX3B0ciwgY29u
c3RydWN0X2ZpcnN0LCBpKTsKKyAgICAgIEFCU0xfSU5URVJOQUxfUkVUSFJPVzsKKyAgICB9Cisg
IH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVBZGFw
dGVyLCB0eXBlbmFtZSBTaXplVHlwZT4KK3ZvaWQgQXNzaWduRWxlbWVudHMoVmFsdWVUeXBlKiBh
c3NpZ25fZmlyc3QsIFZhbHVlQWRhcHRlciogdmFsdWVzX3B0ciwKKyAgICAgICAgICAgICAgICAg
ICAgU2l6ZVR5cGUgYXNzaWduX3NpemUpIHsKKyAgZm9yIChTaXplVHlwZSBpID0gMDsgaSA8IGFz
c2lnbl9zaXplOyArK2kpIHsKKyAgICB2YWx1ZXNfcHRyLT5Bc3NpZ25OZXh0KGFzc2lnbl9maXJz
dCArIGkpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3JUeXBlPgorc3Ry
dWN0IFN0b3JhZ2VWaWV3IHsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIEFsbG9jYXRvclR5
cGU6OnBvaW50ZXI7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6
OnNpemVfdHlwZTsKKworICBwb2ludGVyIGRhdGE7CisgIHNpemVfdHlwZSBzaXplOworICBzaXpl
X3R5cGUgY2FwYWNpdHk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yVHlwZSwg
dHlwZW5hbWUgSXRlcmF0b3I+CitjbGFzcyBJdGVyYXRvclZhbHVlQWRhcHRlciB7CisgIHVzaW5n
IHBvaW50ZXIgPSB0eXBlbmFtZSBBbGxvY2F0b3JUeXBlOjpwb2ludGVyOworICB1c2luZyBBbGxv
Y2F0b3JUcmFpdHMgPSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvclR5cGU+OworCisg
cHVibGljOgorICBleHBsaWNpdCBJdGVyYXRvclZhbHVlQWRhcHRlcihjb25zdCBJdGVyYXRvciYg
aXQpIDogaXRfKGl0KSB7fQorCisgIHZvaWQgQ29uc3RydWN0TmV4dChBbGxvY2F0b3JUeXBlKiBh
bGxvY19wdHIsIHBvaW50ZXIgY29uc3RydWN0X2F0KSB7CisgICAgQWxsb2NhdG9yVHJhaXRzOjpj
b25zdHJ1Y3QoKmFsbG9jX3B0ciwgY29uc3RydWN0X2F0LCAqaXRfKTsKKyAgICArK2l0XzsKKyAg
fQorCisgIHZvaWQgQXNzaWduTmV4dChwb2ludGVyIGFzc2lnbl9hdCkgeworICAgICphc3NpZ25f
YXQgPSAqaXRfOworICAgICsraXRfOworICB9CisKKyBwcml2YXRlOgorICBJdGVyYXRvciBpdF87
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yVHlwZT4KK2NsYXNzIENvcHlWYWx1
ZUFkYXB0ZXIgeworICB1c2luZyBwb2ludGVyID0gdHlwZW5hbWUgQWxsb2NhdG9yVHlwZTo6cG9p
bnRlcjsKKyAgdXNpbmcgY29uc3RfcG9pbnRlciA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6OmNv
bnN0X3BvaW50ZXI7CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IHR5cGVuYW1lIEFsbG9jYXRv
clR5cGU6OmNvbnN0X3JlZmVyZW5jZTsKKyAgdXNpbmcgQWxsb2NhdG9yVHJhaXRzID0gYWJzbDo6
YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3JUeXBlPjsKKworIHB1YmxpYzoKKyAgZXhwbGljaXQg
Q29weVZhbHVlQWRhcHRlcihjb25zdF9yZWZlcmVuY2UgdikgOiBwdHJfKHN0ZDo6YWRkcmVzc29m
KHYpKSB7fQorCisgIHZvaWQgQ29uc3RydWN0TmV4dChBbGxvY2F0b3JUeXBlKiBhbGxvY19wdHIs
IHBvaW50ZXIgY29uc3RydWN0X2F0KSB7CisgICAgQWxsb2NhdG9yVHJhaXRzOjpjb25zdHJ1Y3Qo
KmFsbG9jX3B0ciwgY29uc3RydWN0X2F0LCAqcHRyXyk7CisgIH0KKworICB2b2lkIEFzc2lnbk5l
eHQocG9pbnRlciBhc3NpZ25fYXQpIHsgKmFzc2lnbl9hdCA9ICpwdHJfOyB9CisKKyBwcml2YXRl
OgorICBjb25zdF9wb2ludGVyIHB0cl87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2Nh
dG9yVHlwZT4KK2NsYXNzIERlZmF1bHRWYWx1ZUFkYXB0ZXIgeworICB1c2luZyBwb2ludGVyID0g
dHlwZW5hbWUgQWxsb2NhdG9yVHlwZTo6cG9pbnRlcjsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5
cGVuYW1lIEFsbG9jYXRvclR5cGU6OnZhbHVlX3R5cGU7CisgIHVzaW5nIEFsbG9jYXRvclRyYWl0
cyA9IGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yVHlwZT47CisKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IERlZmF1bHRWYWx1ZUFkYXB0ZXIoKSB7fQorCisgIHZvaWQgQ29uc3RydWN0TmV4
dChBbGxvY2F0b3JUeXBlKiBhbGxvY19wdHIsIHBvaW50ZXIgY29uc3RydWN0X2F0KSB7CisgICAg
QWxsb2NhdG9yVHJhaXRzOjpjb25zdHJ1Y3QoKmFsbG9jX3B0ciwgY29uc3RydWN0X2F0KTsKKyAg
fQorCisgIHZvaWQgQXNzaWduTmV4dChwb2ludGVyIGFzc2lnbl9hdCkgeyAqYXNzaWduX2F0ID0g
dmFsdWVfdHlwZSgpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yVHlwZT4K
K2NsYXNzIEFsbG9jYXRpb25UcmFuc2FjdGlvbiB7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBl
bmFtZSBBbGxvY2F0b3JUeXBlOjp2YWx1ZV90eXBlOworICB1c2luZyBwb2ludGVyID0gdHlwZW5h
bWUgQWxsb2NhdG9yVHlwZTo6cG9pbnRlcjsKKyAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUg
QWxsb2NhdG9yVHlwZTo6c2l6ZV90eXBlOworICB1c2luZyBBbGxvY2F0b3JUcmFpdHMgPSBhYnNs
OjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvclR5cGU+OworCisgcHVibGljOgorICBleHBsaWNp
dCBBbGxvY2F0aW9uVHJhbnNhY3Rpb24oQWxsb2NhdG9yVHlwZSogYWxsb2NfcHRyKQorICAgICAg
OiBhbGxvY19kYXRhXygqYWxsb2NfcHRyLCBudWxscHRyKSB7fQorCisgIH5BbGxvY2F0aW9uVHJh
bnNhY3Rpb24oKSB7CisgICAgaWYgKERpZEFsbG9jYXRlKCkpIHsKKyAgICAgIEFsbG9jYXRvclRy
YWl0czo6ZGVhbGxvY2F0ZShHZXRBbGxvY2F0b3IoKSwgR2V0RGF0YSgpLCBHZXRDYXBhY2l0eSgp
KTsKKyAgICB9CisgIH0KKworICBBbGxvY2F0aW9uVHJhbnNhY3Rpb24oY29uc3QgQWxsb2NhdGlv
blRyYW5zYWN0aW9uJikgPSBkZWxldGU7CisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEFsbG9jYXRp
b25UcmFuc2FjdGlvbiYpID0gZGVsZXRlOworCisgIEFsbG9jYXRvclR5cGUmIEdldEFsbG9jYXRv
cigpIHsgcmV0dXJuIGFsbG9jX2RhdGFfLnRlbXBsYXRlIGdldDwwPigpOyB9CisgIHBvaW50ZXIm
IEdldERhdGEoKSB7IHJldHVybiBhbGxvY19kYXRhXy50ZW1wbGF0ZSBnZXQ8MT4oKTsgfQorICBz
aXplX3R5cGUmIEdldENhcGFjaXR5KCkgeyByZXR1cm4gY2FwYWNpdHlfOyB9CisKKyAgYm9vbCBE
aWRBbGxvY2F0ZSgpIHsgcmV0dXJuIEdldERhdGEoKSAhPSBudWxscHRyOyB9CisgIHBvaW50ZXIg
QWxsb2NhdGUoc2l6ZV90eXBlIGNhcGFjaXR5KSB7CisgICAgR2V0RGF0YSgpID0gQWxsb2NhdG9y
VHJhaXRzOjphbGxvY2F0ZShHZXRBbGxvY2F0b3IoKSwgY2FwYWNpdHkpOworICAgIEdldENhcGFj
aXR5KCkgPSBjYXBhY2l0eTsKKyAgICByZXR1cm4gR2V0RGF0YSgpOworICB9CisKKyBwcml2YXRl
OgorICBjb250YWluZXJfaW50ZXJuYWw6OkNvbXByZXNzZWRUdXBsZTxBbGxvY2F0b3JUeXBlLCBw
b2ludGVyPiBhbGxvY19kYXRhXzsKKyAgc2l6ZV90eXBlIGNhcGFjaXR5XyA9IDA7Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yVHlwZT4KK2NsYXNzIENvbnN0cnVjdGlvblRyYW5z
YWN0aW9uIHsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6OnBvaW50
ZXI7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6OnNpemVfdHlw
ZTsKKworIHB1YmxpYzoKKyAgZXhwbGljaXQgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24oQWxsb2Nh
dG9yVHlwZSogYWxsb2NfcHRyKQorICAgICAgOiBhbGxvY19kYXRhXygqYWxsb2NfcHRyLCBudWxs
cHRyKSB7fQorCisgIH5Db25zdHJ1Y3Rpb25UcmFuc2FjdGlvbigpIHsKKyAgICBpZiAoRGlkQ29u
c3RydWN0KCkpIHsKKyAgICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpEZXN0cm95RWxlbWVu
dHMoc3RkOjphZGRyZXNzb2YoR2V0QWxsb2NhdG9yKCkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZXREYXRhKCksIEdldFNpemUoKSk7CisgICAgfQor
ICB9CisKKyAgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24oY29uc3QgQ29uc3RydWN0aW9uVHJhbnNh
Y3Rpb24mKSA9IGRlbGV0ZTsKKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ29uc3RydWN0aW9uVHJh
bnNhY3Rpb24mKSA9IGRlbGV0ZTsKKworICBBbGxvY2F0b3JUeXBlJiBHZXRBbGxvY2F0b3IoKSB7
IHJldHVybiBhbGxvY19kYXRhXy50ZW1wbGF0ZSBnZXQ8MD4oKTsgfQorICBwb2ludGVyJiBHZXRE
YXRhKCkgeyByZXR1cm4gYWxsb2NfZGF0YV8udGVtcGxhdGUgZ2V0PDE+KCk7IH0KKyAgc2l6ZV90
eXBlJiBHZXRTaXplKCkgeyByZXR1cm4gc2l6ZV87IH0KKworICBib29sIERpZENvbnN0cnVjdCgp
IHsgcmV0dXJuIEdldERhdGEoKSAhPSBudWxscHRyOyB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBW
YWx1ZUFkYXB0ZXI+CisgIHZvaWQgQ29uc3RydWN0KHBvaW50ZXIgZGF0YSwgVmFsdWVBZGFwdGVy
KiB2YWx1ZXNfcHRyLCBzaXplX3R5cGUgc2l6ZSkgeworICAgIGlubGluZWRfdmVjdG9yX2ludGVy
bmFsOjpDb25zdHJ1Y3RFbGVtZW50cyhzdGQ6OmFkZHJlc3NvZihHZXRBbGxvY2F0b3IoKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIHZhbHVl
c19wdHIsIHNpemUpOworICAgIEdldERhdGEoKSA9IGRhdGE7CisgICAgR2V0U2l6ZSgpID0gc2l6
ZTsKKyAgfQorICB2b2lkIENvbW1pdCgpIHsKKyAgICBHZXREYXRhKCkgPSBudWxscHRyOworICAg
IEdldFNpemUoKSA9IDA7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnRhaW5lcl9pbnRlcm5hbDo6
Q29tcHJlc3NlZFR1cGxlPEFsbG9jYXRvclR5cGUsIHBvaW50ZXI+IGFsbG9jX2RhdGFfOworICBz
aXplX3R5cGUgc2l6ZV8gPSAwOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBO
LCB0eXBlbmFtZSBBPgorY2xhc3MgU3RvcmFnZSB7CisgcHVibGljOgorICB1c2luZyBhbGxvY2F0
b3JfdHlwZSA9IEE7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlw
ZTo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIGFsbG9jYXRvcl90eXBl
Ojpwb2ludGVyOworICB1c2luZyBjb25zdF9wb2ludGVyID0gdHlwZW5hbWUgYWxsb2NhdG9yX3R5
cGU6OmNvbnN0X3BvaW50ZXI7CisgIHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVuYW1lIGFsbG9jYXRv
cl90eXBlOjpyZWZlcmVuY2U7CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IHR5cGVuYW1lIGFs
bG9jYXRvcl90eXBlOjpjb25zdF9yZWZlcmVuY2U7CisgIHVzaW5nIHJ2YWx1ZV9yZWZlcmVuY2Ug
PSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6dmFsdWVfdHlwZSYmOworICB1c2luZyBzaXplX3R5
cGUgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6c2l6ZV90eXBlOworICB1c2luZyBkaWZmZXJl
bmNlX3R5cGUgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6ZGlmZmVyZW5jZV90eXBlOworICB1
c2luZyBpdGVyYXRvciA9IHBvaW50ZXI7CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gY29uc3Rf
cG9pbnRlcjsKKyAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRv
cjxpdGVyYXRvcj47CisgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVy
c2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+OworICB1c2luZyBNb3ZlSXRlcmF0b3IgPSBzdGQ6
Om1vdmVfaXRlcmF0b3I8aXRlcmF0b3I+OworICB1c2luZyBBbGxvY2F0b3JUcmFpdHMgPSBhYnNs
OjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcl90eXBlPjsKKyAgdXNpbmcgSXNNZW1jcHlPayA9
IGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpJc01lbWNweU9rPGFsbG9jYXRvcl90eXBlPjsKKwor
ICB1c2luZyBTdG9yYWdlVmlldyA9IGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpTdG9yYWdlVmll
dzxhbGxvY2F0b3JfdHlwZT47CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgorICB1
c2luZyBJdGVyYXRvclZhbHVlQWRhcHRlciA9CisgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5h
bDo6SXRlcmF0b3JWYWx1ZUFkYXB0ZXI8YWxsb2NhdG9yX3R5cGUsIEl0ZXJhdG9yPjsKKyAgdXNp
bmcgQ29weVZhbHVlQWRhcHRlciA9CisgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6Q29w
eVZhbHVlQWRhcHRlcjxhbGxvY2F0b3JfdHlwZT47CisgIHVzaW5nIERlZmF1bHRWYWx1ZUFkYXB0
ZXIgPQorICAgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkRlZmF1bHRWYWx1ZUFkYXB0ZXI8
YWxsb2NhdG9yX3R5cGU+OworCisgIHVzaW5nIEFsbG9jYXRpb25UcmFuc2FjdGlvbiA9CisgICAg
ICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6QWxsb2NhdGlvblRyYW5zYWN0aW9uPGFsbG9jYXRv
cl90eXBlPjsKKyAgdXNpbmcgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24gPQorICAgICAgaW5saW5l
ZF92ZWN0b3JfaW50ZXJuYWw6OkNvbnN0cnVjdGlvblRyYW5zYWN0aW9uPGFsbG9jYXRvcl90eXBl
PjsKKworICBzdGF0aWMgc2l6ZV90eXBlIE5leHRDYXBhY2l0eShzaXplX3R5cGUgY3VycmVudF9j
YXBhY2l0eSkgeworICAgIHJldHVybiBjdXJyZW50X2NhcGFjaXR5ICogMjsKKyAgfQorCisgIHN0
YXRpYyBzaXplX3R5cGUgQ29tcHV0ZUNhcGFjaXR5KHNpemVfdHlwZSBjdXJyZW50X2NhcGFjaXR5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgcmVxdWVzdGVk
X2NhcGFjaXR5KSB7CisgICAgcmV0dXJuIChzdGQ6Om1heCkoTmV4dENhcGFjaXR5KGN1cnJlbnRf
Y2FwYWNpdHkpLCByZXF1ZXN0ZWRfY2FwYWNpdHkpOworICB9CisKKyAgLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgIC8vIFN0b3JhZ2UgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9yCisgIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisgIFN0b3JhZ2UoKSA6IG1ldGFkYXRhXygpIHt9CisKKyAgZXhw
bGljaXQgU3RvcmFnZShjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IG1ldGFk
YXRhXyhhbGxvYywgLyogZW1wdHkgYW5kIGlubGluZWQgKi8gMCkge30KKworICB+U3RvcmFnZSgp
IHsKKyAgICBwb2ludGVyIGRhdGEgPSBHZXRJc0FsbG9jYXRlZCgpID8gR2V0QWxsb2NhdGVkRGF0
YSgpIDogR2V0SW5saW5lZERhdGEoKTsKKyAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVz
dHJveUVsZW1lbnRzKEdldEFsbG9jUHRyKCksIGRhdGEsIEdldFNpemUoKSk7CisgICAgRGVhbGxv
Y2F0ZUlmQWxsb2NhdGVkKCk7CisgIH0KKworICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgLy8g
U3RvcmFnZSBNZW1iZXIgQWNjZXNzb3JzCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIHNp
emVfdHlwZSYgR2V0U2l6ZUFuZElzQWxsb2NhdGVkKCkgeyByZXR1cm4gbWV0YWRhdGFfLnRlbXBs
YXRlIGdldDwxPigpOyB9CisKKyAgY29uc3Qgc2l6ZV90eXBlJiBHZXRTaXplQW5kSXNBbGxvY2F0
ZWQoKSBjb25zdCB7CisgICAgcmV0dXJuIG1ldGFkYXRhXy50ZW1wbGF0ZSBnZXQ8MT4oKTsKKyAg
fQorCisgIHNpemVfdHlwZSBHZXRTaXplKCkgY29uc3QgeyByZXR1cm4gR2V0U2l6ZUFuZElzQWxs
b2NhdGVkKCkgPj4gMTsgfQorCisgIGJvb2wgR2V0SXNBbGxvY2F0ZWQoKSBjb25zdCB7IHJldHVy
biBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSAmIDE7IH0KKworICBwb2ludGVyIEdldEFsbG9jYXRl
ZERhdGEoKSB7IHJldHVybiBkYXRhXy5hbGxvY2F0ZWQuYWxsb2NhdGVkX2RhdGE7IH0KKworICBj
b25zdF9wb2ludGVyIEdldEFsbG9jYXRlZERhdGEoKSBjb25zdCB7CisgICAgcmV0dXJuIGRhdGFf
LmFsbG9jYXRlZC5hbGxvY2F0ZWRfZGF0YTsKKyAgfQorCisgIHBvaW50ZXIgR2V0SW5saW5lZERh
dGEoKSB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8cG9pbnRlcj4oCisgICAgICAgIHN0
ZDo6YWRkcmVzc29mKGRhdGFfLmlubGluZWQuaW5saW5lZF9kYXRhWzBdKSk7CisgIH0KKworICBj
b25zdF9wb2ludGVyIEdldElubGluZWREYXRhKCkgY29uc3QgeworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0X3BvaW50ZXI+KAorICAgICAgICBzdGQ6OmFkZHJlc3NvZihkYXRhXy5p
bmxpbmVkLmlubGluZWRfZGF0YVswXSkpOworICB9CisKKyAgc2l6ZV90eXBlIEdldEFsbG9jYXRl
ZENhcGFjaXR5KCkgY29uc3QgeworICAgIHJldHVybiBkYXRhXy5hbGxvY2F0ZWQuYWxsb2NhdGVk
X2NhcGFjaXR5OworICB9CisKKyAgc2l6ZV90eXBlIEdldElubGluZWRDYXBhY2l0eSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oTik7IH0KKworICBTdG9yYWdlVmlldyBN
YWtlU3RvcmFnZVZpZXcoKSB7CisgICAgcmV0dXJuIEdldElzQWxsb2NhdGVkKCkKKyAgICAgICAg
ICAgICAgID8gU3RvcmFnZVZpZXd7R2V0QWxsb2NhdGVkRGF0YSgpLCBHZXRTaXplKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdldEFsbG9jYXRlZENhcGFjaXR5KCl9CisgICAgICAg
ICAgICAgICA6IFN0b3JhZ2VWaWV3e0dldElubGluZWREYXRhKCksIEdldFNpemUoKSwgR2V0SW5s
aW5lZENhcGFjaXR5KCl9OworICB9CisKKyAgYWxsb2NhdG9yX3R5cGUqIEdldEFsbG9jUHRyKCkg
eworICAgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihtZXRhZGF0YV8udGVtcGxhdGUgZ2V0PDA+KCkp
OworICB9CisKKyAgY29uc3QgYWxsb2NhdG9yX3R5cGUqIEdldEFsbG9jUHRyKCkgY29uc3Qgewor
ICAgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihtZXRhZGF0YV8udGVtcGxhdGUgZ2V0PDA+KCkpOwor
ICB9CisKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC8vIFN0b3JhZ2UgTWVtYmVyIE11dGF0
b3JzCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1
ZUFkYXB0ZXI+CisgIHZvaWQgSW5pdGlhbGl6ZShWYWx1ZUFkYXB0ZXIgdmFsdWVzLCBzaXplX3R5
cGUgbmV3X3NpemUpOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZUFkYXB0ZXI+CisgIHZv
aWQgQXNzaWduKFZhbHVlQWRhcHRlciB2YWx1ZXMsIHNpemVfdHlwZSBuZXdfc2l6ZSk7CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlQWRhcHRlcj4KKyAgdm9pZCBSZXNpemUoVmFsdWVBZGFw
dGVyIHZhbHVlcywgc2l6ZV90eXBlIG5ld19zaXplKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VmFsdWVBZGFwdGVyPgorICBpdGVyYXRvciBJbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zLCBWYWx1
ZUFkYXB0ZXIgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIGluc2VydF9jb3Vu
dCk7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIHJlZmVyZW5jZSBFbXBsYWNl
QmFjayhBcmdzJiYuLi4gYXJncyk7CisKKyAgaXRlcmF0b3IgRXJhc2UoY29uc3RfaXRlcmF0b3Ig
ZnJvbSwgY29uc3RfaXRlcmF0b3IgdG8pOworCisgIHZvaWQgUmVzZXJ2ZShzaXplX3R5cGUgcmVx
dWVzdGVkX2NhcGFjaXR5KTsKKworICB2b2lkIFNocmlua1RvRml0KCk7CisKKyAgdm9pZCBTd2Fw
KFN0b3JhZ2UqIG90aGVyX3N0b3JhZ2VfcHRyKTsKKworICB2b2lkIFNldElzQWxsb2NhdGVkKCkg
eworICAgIEdldFNpemVBbmRJc0FsbG9jYXRlZCgpIHw9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4o
MSk7CisgIH0KKworICB2b2lkIFVuc2V0SXNBbGxvY2F0ZWQoKSB7CisgICAgR2V0U2l6ZUFuZElz
QWxsb2NhdGVkKCkgJj0gKChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdHlwZT46Om1heCkoKSAt
IDEpOworICB9CisKKyAgdm9pZCBTZXRTaXplKHNpemVfdHlwZSBzaXplKSB7CisgICAgR2V0U2l6
ZUFuZElzQWxsb2NhdGVkKCkgPQorICAgICAgICAoc2l6ZSA8PCAxKSB8IHN0YXRpY19jYXN0PHNp
emVfdHlwZT4oR2V0SXNBbGxvY2F0ZWQoKSk7CisgIH0KKworICB2b2lkIFNldEFsbG9jYXRlZFNp
emUoc2l6ZV90eXBlIHNpemUpIHsKKyAgICBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSA9IChzaXpl
IDw8IDEpIHwgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigxKTsKKyAgfQorCisgIHZvaWQgU2V0SW5s
aW5lZFNpemUoc2l6ZV90eXBlIHNpemUpIHsKKyAgICBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSA9
IHNpemUgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigxKTsKKyAgfQorCisgIHZvaWQgQWRkU2l6
ZShzaXplX3R5cGUgY291bnQpIHsKKyAgICBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSArPSBjb3Vu
dCA8PCBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KDEpOworICB9CisKKyAgdm9pZCBTdWJ0cmFjdFNp
emUoc2l6ZV90eXBlIGNvdW50KSB7CisgICAgYXNzZXJ0KGNvdW50IDw9IEdldFNpemUoKSk7CisK
KyAgICBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSAtPSBjb3VudCA8PCBzdGF0aWNfY2FzdDxzaXpl
X3R5cGU+KDEpOworICB9CisKKyAgdm9pZCBTZXRBbGxvY2F0ZWREYXRhKHBvaW50ZXIgZGF0YSwg
c2l6ZV90eXBlIGNhcGFjaXR5KSB7CisgICAgZGF0YV8uYWxsb2NhdGVkLmFsbG9jYXRlZF9kYXRh
ID0gZGF0YTsKKyAgICBkYXRhXy5hbGxvY2F0ZWQuYWxsb2NhdGVkX2NhcGFjaXR5ID0gY2FwYWNp
dHk7CisgIH0KKworICB2b2lkIEFjcXVpcmVBbGxvY2F0ZWREYXRhKEFsbG9jYXRpb25UcmFuc2Fj
dGlvbiogYWxsb2NhdGlvbl90eF9wdHIpIHsKKyAgICBTZXRBbGxvY2F0ZWREYXRhKGFsbG9jYXRp
b25fdHhfcHRyLT5HZXREYXRhKCksCisgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uX3R4
X3B0ci0+R2V0Q2FwYWNpdHkoKSk7CisgICAgYWxsb2NhdGlvbl90eF9wdHItPkdldERhdGEoKSA9
IG51bGxwdHI7CisgICAgYWxsb2NhdGlvbl90eF9wdHItPkdldENhcGFjaXR5KCkgPSAwOworICB9
CisKKyAgdm9pZCBNZW1jcHlGcm9tKGNvbnN0IFN0b3JhZ2UmIG90aGVyX3N0b3JhZ2UpIHsKKyAg
ICBhc3NlcnQoSXNNZW1jcHlPazo6dmFsdWUgfHwgb3RoZXJfc3RvcmFnZS5HZXRJc0FsbG9jYXRl
ZCgpKTsKKworICAgIEdldFNpemVBbmRJc0FsbG9jYXRlZCgpID0gb3RoZXJfc3RvcmFnZS5HZXRT
aXplQW5kSXNBbGxvY2F0ZWQoKTsKKyAgICBkYXRhXyA9IG90aGVyX3N0b3JhZ2UuZGF0YV87Cisg
IH0KKworICB2b2lkIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpIHsKKyAgICBpZiAoR2V0SXNBbGxv
Y2F0ZWQoKSkgeworICAgICAgQWxsb2NhdG9yVHJhaXRzOjpkZWFsbG9jYXRlKCpHZXRBbGxvY1B0
cigpLCBHZXRBbGxvY2F0ZWREYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2V0QWxsb2NhdGVkQ2FwYWNpdHkoKSk7CisgICAgfQorICB9CisKKyBwcml2YXRlOgorICB1
c2luZyBNZXRhZGF0YSA9CisgICAgICBjb250YWluZXJfaW50ZXJuYWw6OkNvbXByZXNzZWRUdXBs
ZTxhbGxvY2F0b3JfdHlwZSwgc2l6ZV90eXBlPjsKKworICBzdHJ1Y3QgQWxsb2NhdGVkIHsKKyAg
ICBwb2ludGVyIGFsbG9jYXRlZF9kYXRhOworICAgIHNpemVfdHlwZSBhbGxvY2F0ZWRfY2FwYWNp
dHk7CisgIH07CisKKyAgc3RydWN0IElubGluZWQgeworICAgIHVzaW5nIElubGluZWREYXRhRWxl
bWVudCA9CisgICAgICAgIGFic2w6OmFsaWduZWRfc3RvcmFnZV90PHNpemVvZih2YWx1ZV90eXBl
KSwgYWxpZ25vZih2YWx1ZV90eXBlKT47CisgICAgSW5saW5lZERhdGFFbGVtZW50IGlubGluZWRf
ZGF0YVtOXTsKKyAgfTsKKworICB1bmlvbiBEYXRhIHsKKyAgICBBbGxvY2F0ZWQgYWxsb2NhdGVk
OworICAgIElubGluZWQgaW5saW5lZDsKKyAgfTsKKworICBNZXRhZGF0YSBtZXRhZGF0YV87Cisg
IERhdGEgZGF0YV87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVu
YW1lIEE+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWVBZGFwdGVyPgorYXV0byBTdG9yYWdlPFQs
IE4sIEE+OjpJbml0aWFsaXplKFZhbHVlQWRhcHRlciB2YWx1ZXMsIHNpemVfdHlwZSBuZXdfc2l6
ZSkKKyAgICAtPiB2b2lkIHsKKyAgLy8gT25seSBjYWxsYWJsZSBmcm9tIGNvbnN0cnVjdG9ycyEK
KyAgYXNzZXJ0KCFHZXRJc0FsbG9jYXRlZCgpKTsKKyAgYXNzZXJ0KEdldFNpemUoKSA9PSAwKTsK
KworICBwb2ludGVyIGNvbnN0cnVjdF9kYXRhOworCisgIGlmIChuZXdfc2l6ZSA+IEdldElubGlu
ZWRDYXBhY2l0eSgpKSB7CisgICAgLy8gQmVjYXVzZSB0aGlzIGlzIG9ubHkgY2FsbGVkIGZyb20g
dGhlIGBJbmxpbmVkVmVjdG9yYCBjb25zdHJ1Y3RvcnMsIGl0J3MKKyAgICAvLyBzYWZlIHRvIHRh
a2Ugb24gdGhlIGFsbG9jYXRpb24gd2l0aCBzaXplIGAwYC4gSWYgYENvbnN0cnVjdEVsZW1lbnRz
KC4uLilgCisgICAgLy8gdGhyb3dzLCBkZWFsbG9jYXRpb24gd2lsbCBiZSBhdXRvbWF0aWNhbGx5
IGhhbmRsZWQgYnkgYH5TdG9yYWdlKClgLgorICAgIHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBD
b21wdXRlQ2FwYWNpdHkoR2V0SW5saW5lZENhcGFjaXR5KCksIG5ld19zaXplKTsKKyAgICBwb2lu
dGVyIG5ld19kYXRhID0gQWxsb2NhdG9yVHJhaXRzOjphbGxvY2F0ZSgqR2V0QWxsb2NQdHIoKSwg
bmV3X2NhcGFjaXR5KTsKKworICAgIFNldEFsbG9jYXRlZERhdGEobmV3X2RhdGEsIG5ld19jYXBh
Y2l0eSk7CisgICAgU2V0SXNBbGxvY2F0ZWQoKTsKKworICAgIGNvbnN0cnVjdF9kYXRhID0gbmV3
X2RhdGE7CisgIH0gZWxzZSB7CisgICAgY29uc3RydWN0X2RhdGEgPSBHZXRJbmxpbmVkRGF0YSgp
OworICB9CisKKyAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkNvbnN0cnVjdEVsZW1lbnRzKEdl
dEFsbG9jUHRyKCksIGNvbnN0cnVjdF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnZhbHVlcywgbmV3X3NpemUpOworCisgIC8vIFNpbmNlIHRoZSBp
bml0aWFsIHNpemUgd2FzIGd1YXJhbnRlZWQgdG8gYmUgYDBgIGFuZCB0aGUgYWxsb2NhdGVkIGJp
dCBpcworICAvLyBhbHJlYWR5IGNvcnJlY3QgZm9yIGVpdGhlciBjYXNlLCAqYWRkaW5nKiBgbmV3
X3NpemVgIGdpdmVzIHVzIHRoZSBjb3JyZWN0CisgIC8vIHJlc3VsdCBmYXN0ZXIgdGhhbiBzZXR0
aW5nIGl0IGRpcmVjdGx5LgorICBBZGRTaXplKG5ld19zaXplKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgordGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVl
QWRhcHRlcj4KK2F1dG8gU3RvcmFnZTxULCBOLCBBPjo6QXNzaWduKFZhbHVlQWRhcHRlciB2YWx1
ZXMsIHNpemVfdHlwZSBuZXdfc2l6ZSkgLT4gdm9pZCB7CisgIFN0b3JhZ2VWaWV3IHN0b3JhZ2Vf
dmlldyA9IE1ha2VTdG9yYWdlVmlldygpOworCisgIEFsbG9jYXRpb25UcmFuc2FjdGlvbiBhbGxv
Y2F0aW9uX3R4KEdldEFsbG9jUHRyKCkpOworCisgIGFic2w6OlNwYW48dmFsdWVfdHlwZT4gYXNz
aWduX2xvb3A7CisgIGFic2w6OlNwYW48dmFsdWVfdHlwZT4gY29uc3RydWN0X2xvb3A7CisgIGFi
c2w6OlNwYW48dmFsdWVfdHlwZT4gZGVzdHJveV9sb29wOworCisgIGlmIChuZXdfc2l6ZSA+IHN0
b3JhZ2Vfdmlldy5jYXBhY2l0eSkgeworICAgIHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBDb21w
dXRlQ2FwYWNpdHkoc3RvcmFnZV92aWV3LmNhcGFjaXR5LCBuZXdfc2l6ZSk7CisgICAgcG9pbnRl
ciBuZXdfZGF0YSA9IGFsbG9jYXRpb25fdHguQWxsb2NhdGUobmV3X2NhcGFjaXR5KTsKKworICAg
IGNvbnN0cnVjdF9sb29wID0ge25ld19kYXRhLCBuZXdfc2l6ZX07CisgICAgZGVzdHJveV9sb29w
ID0ge3N0b3JhZ2Vfdmlldy5kYXRhLCBzdG9yYWdlX3ZpZXcuc2l6ZX07CisgIH0gZWxzZSBpZiAo
bmV3X3NpemUgPiBzdG9yYWdlX3ZpZXcuc2l6ZSkgeworICAgIGFzc2lnbl9sb29wID0ge3N0b3Jh
Z2Vfdmlldy5kYXRhLCBzdG9yYWdlX3ZpZXcuc2l6ZX07CisgICAgY29uc3RydWN0X2xvb3AgPSB7
c3RvcmFnZV92aWV3LmRhdGEgKyBzdG9yYWdlX3ZpZXcuc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBuZXdfc2l6ZSAtIHN0b3JhZ2Vfdmlldy5zaXplfTsKKyAgfSBlbHNlIHsKKyAgICBhc3Np
Z25fbG9vcCA9IHtzdG9yYWdlX3ZpZXcuZGF0YSwgbmV3X3NpemV9OworICAgIGRlc3Ryb3lfbG9v
cCA9IHtzdG9yYWdlX3ZpZXcuZGF0YSArIG5ld19zaXplLCBzdG9yYWdlX3ZpZXcuc2l6ZSAtIG5l
d19zaXplfTsKKyAgfQorCisgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpBc3NpZ25FbGVtZW50
cyhhc3NpZ25fbG9vcC5kYXRhKCksICZ2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhc3NpZ25fbG9vcC5zaXplKCkpOworCisgIGlubGluZWRfdmVjdG9y
X2ludGVybmFsOjpDb25zdHJ1Y3RFbGVtZW50cygKKyAgICAgIEdldEFsbG9jUHRyKCksIGNvbnN0
cnVjdF9sb29wLmRhdGEoKSwgJnZhbHVlcywgY29uc3RydWN0X2xvb3Auc2l6ZSgpKTsKKworICBp
bmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVzdHJveUVsZW1lbnRzKEdldEFsbG9jUHRyKCksIGRl
c3Ryb3lfbG9vcC5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdHJveV9sb29wLnNpemUoKSk7CisKKyAgaWYgKGFsbG9jYXRpb25fdHguRGlkQWxs
b2NhdGUoKSkgeworICAgIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICAgIEFjcXVpcmVBbGxv
Y2F0ZWREYXRhKCZhbGxvY2F0aW9uX3R4KTsKKyAgICBTZXRJc0FsbG9jYXRlZCgpOworICB9CisK
KyAgU2V0U2l6ZShuZXdfc2l6ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
TiwgdHlwZW5hbWUgQT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZUFkYXB0ZXI+CithdXRvIFN0
b3JhZ2U8VCwgTiwgQT46OlJlc2l6ZShWYWx1ZUFkYXB0ZXIgdmFsdWVzLCBzaXplX3R5cGUgbmV3
X3NpemUpIC0+IHZvaWQgeworICBTdG9yYWdlVmlldyBzdG9yYWdlX3ZpZXcgPSBNYWtlU3RvcmFn
ZVZpZXcoKTsKKworICBBbGxvY2F0aW9uVHJhbnNhY3Rpb24gYWxsb2NhdGlvbl90eChHZXRBbGxv
Y1B0cigpKTsKKyAgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24gY29uc3RydWN0aW9uX3R4KEdldEFs
bG9jUHRyKCkpOworCisgIEl0ZXJhdG9yVmFsdWVBZGFwdGVyPE1vdmVJdGVyYXRvcj4gbW92ZV92
YWx1ZXMoCisgICAgICBNb3ZlSXRlcmF0b3Ioc3RvcmFnZV92aWV3LmRhdGEpKTsKKworICBhYnNs
OjpTcGFuPHZhbHVlX3R5cGU+IGNvbnN0cnVjdF9sb29wOworICBhYnNsOjpTcGFuPHZhbHVlX3R5
cGU+IG1vdmVfY29uc3RydWN0X2xvb3A7CisgIGFic2w6OlNwYW48dmFsdWVfdHlwZT4gZGVzdHJv
eV9sb29wOworCisgIGlmIChuZXdfc2l6ZSA+IHN0b3JhZ2Vfdmlldy5jYXBhY2l0eSkgeworICAg
IHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBDb21wdXRlQ2FwYWNpdHkoc3RvcmFnZV92aWV3LmNh
cGFjaXR5LCBuZXdfc2l6ZSk7CisgICAgcG9pbnRlciBuZXdfZGF0YSA9IGFsbG9jYXRpb25fdHgu
QWxsb2NhdGUobmV3X2NhcGFjaXR5KTsKKyAgICBjb25zdHJ1Y3RfbG9vcCA9IHtuZXdfZGF0YSAr
IHN0b3JhZ2Vfdmlldy5zaXplLAorICAgICAgICAgICAgICAgICAgICAgIG5ld19zaXplIC0gc3Rv
cmFnZV92aWV3LnNpemV9OworICAgIG1vdmVfY29uc3RydWN0X2xvb3AgPSB7bmV3X2RhdGEsIHN0
b3JhZ2Vfdmlldy5zaXplfTsKKyAgICBkZXN0cm95X2xvb3AgPSB7c3RvcmFnZV92aWV3LmRhdGEs
IHN0b3JhZ2Vfdmlldy5zaXplfTsKKyAgfSBlbHNlIGlmIChuZXdfc2l6ZSA+IHN0b3JhZ2Vfdmll
dy5zaXplKSB7CisgICAgY29uc3RydWN0X2xvb3AgPSB7c3RvcmFnZV92aWV3LmRhdGEgKyBzdG9y
YWdlX3ZpZXcuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXdfc2l6ZSAtIHN0b3JhZ2Vf
dmlldy5zaXplfTsKKyAgfSBlbHNlIHsKKyAgICBkZXN0cm95X2xvb3AgPSB7c3RvcmFnZV92aWV3
LmRhdGEgKyBuZXdfc2l6ZSwgc3RvcmFnZV92aWV3LnNpemUgLSBuZXdfc2l6ZX07CisgIH0KKwor
ICBjb25zdHJ1Y3Rpb25fdHguQ29uc3RydWN0KGNvbnN0cnVjdF9sb29wLmRhdGEoKSwgJnZhbHVl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RfbG9vcC5zaXplKCkpOwor
CisgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpDb25zdHJ1Y3RFbGVtZW50cygKKyAgICAgIEdl
dEFsbG9jUHRyKCksIG1vdmVfY29uc3RydWN0X2xvb3AuZGF0YSgpLCAmbW92ZV92YWx1ZXMsCisg
ICAgICBtb3ZlX2NvbnN0cnVjdF9sb29wLnNpemUoKSk7CisKKyAgaW5saW5lZF92ZWN0b3JfaW50
ZXJuYWw6OkRlc3Ryb3lFbGVtZW50cyhHZXRBbGxvY1B0cigpLCBkZXN0cm95X2xvb3AuZGF0YSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfbG9v
cC5zaXplKCkpOworCisgIGNvbnN0cnVjdGlvbl90eC5Db21taXQoKTsKKyAgaWYgKGFsbG9jYXRp
b25fdHguRGlkQWxsb2NhdGUoKSkgeworICAgIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICAg
IEFjcXVpcmVBbGxvY2F0ZWREYXRhKCZhbGxvY2F0aW9uX3R4KTsKKyAgICBTZXRJc0FsbG9jYXRl
ZCgpOworICB9CisKKyAgU2V0U2l6ZShuZXdfc2l6ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZUFkYXB0
ZXI+CithdXRvIFN0b3JhZ2U8VCwgTiwgQT46Okluc2VydChjb25zdF9pdGVyYXRvciBwb3MsIFZh
bHVlQWRhcHRlciB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5
cGUgaW5zZXJ0X2NvdW50KSAtPiBpdGVyYXRvciB7CisgIFN0b3JhZ2VWaWV3IHN0b3JhZ2Vfdmll
dyA9IE1ha2VTdG9yYWdlVmlldygpOworCisgIHNpemVfdHlwZSBpbnNlcnRfaW5kZXggPQorICAg
ICAgc3RkOjpkaXN0YW5jZShjb25zdF9pdGVyYXRvcihzdG9yYWdlX3ZpZXcuZGF0YSksIHBvcyk7
CisgIHNpemVfdHlwZSBpbnNlcnRfZW5kX2luZGV4ID0gaW5zZXJ0X2luZGV4ICsgaW5zZXJ0X2Nv
dW50OworICBzaXplX3R5cGUgbmV3X3NpemUgPSBzdG9yYWdlX3ZpZXcuc2l6ZSArIGluc2VydF9j
b3VudDsKKworICBpZiAobmV3X3NpemUgPiBzdG9yYWdlX3ZpZXcuY2FwYWNpdHkpIHsKKyAgICBB
bGxvY2F0aW9uVHJhbnNhY3Rpb24gYWxsb2NhdGlvbl90eChHZXRBbGxvY1B0cigpKTsKKyAgICBD
b25zdHJ1Y3Rpb25UcmFuc2FjdGlvbiBjb25zdHJ1Y3Rpb25fdHgoR2V0QWxsb2NQdHIoKSk7Cisg
ICAgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24gbW92ZV9jb25zdHJ1Y2l0b25fdHgoR2V0QWxsb2NQ
dHIoKSk7CisKKyAgICBJdGVyYXRvclZhbHVlQWRhcHRlcjxNb3ZlSXRlcmF0b3I+IG1vdmVfdmFs
dWVzKAorICAgICAgICBNb3ZlSXRlcmF0b3Ioc3RvcmFnZV92aWV3LmRhdGEpKTsKKworICAgIHNp
emVfdHlwZSBuZXdfY2FwYWNpdHkgPSBDb21wdXRlQ2FwYWNpdHkoc3RvcmFnZV92aWV3LmNhcGFj
aXR5LCBuZXdfc2l6ZSk7CisgICAgcG9pbnRlciBuZXdfZGF0YSA9IGFsbG9jYXRpb25fdHguQWxs
b2NhdGUobmV3X2NhcGFjaXR5KTsKKworICAgIGNvbnN0cnVjdGlvbl90eC5Db25zdHJ1Y3QobmV3
X2RhdGEgKyBpbnNlcnRfaW5kZXgsICZ2YWx1ZXMsIGluc2VydF9jb3VudCk7CisKKyAgICBtb3Zl
X2NvbnN0cnVjaXRvbl90eC5Db25zdHJ1Y3QobmV3X2RhdGEsICZtb3ZlX3ZhbHVlcywgaW5zZXJ0
X2luZGV4KTsKKworICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpDb25zdHJ1Y3RFbGVtZW50
cygKKyAgICAgICAgR2V0QWxsb2NQdHIoKSwgbmV3X2RhdGEgKyBpbnNlcnRfZW5kX2luZGV4LCAm
bW92ZV92YWx1ZXMsCisgICAgICAgIHN0b3JhZ2Vfdmlldy5zaXplIC0gaW5zZXJ0X2luZGV4KTsK
KworICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpEZXN0cm95RWxlbWVudHMoR2V0QWxsb2NQ
dHIoKSwgc3RvcmFnZV92aWV3LmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdG9yYWdlX3ZpZXcuc2l6ZSk7CisKKyAgICBjb25zdHJ1Y3Rpb25fdHgu
Q29tbWl0KCk7CisgICAgbW92ZV9jb25zdHJ1Y2l0b25fdHguQ29tbWl0KCk7CisgICAgRGVhbGxv
Y2F0ZUlmQWxsb2NhdGVkKCk7CisgICAgQWNxdWlyZUFsbG9jYXRlZERhdGEoJmFsbG9jYXRpb25f
dHgpOworCisgICAgU2V0QWxsb2NhdGVkU2l6ZShuZXdfc2l6ZSk7CisgICAgcmV0dXJuIGl0ZXJh
dG9yKG5ld19kYXRhICsgaW5zZXJ0X2luZGV4KTsKKyAgfSBlbHNlIHsKKyAgICBzaXplX3R5cGUg
bW92ZV9jb25zdHJ1Y3Rpb25fZGVzdGluYXRpb25faW5kZXggPQorICAgICAgICAoc3RkOjptYXgp
KGluc2VydF9lbmRfaW5kZXgsIHN0b3JhZ2Vfdmlldy5zaXplKTsKKworICAgIENvbnN0cnVjdGlv
blRyYW5zYWN0aW9uIG1vdmVfY29uc3RydWN0aW9uX3R4KEdldEFsbG9jUHRyKCkpOworCisgICAg
SXRlcmF0b3JWYWx1ZUFkYXB0ZXI8TW92ZUl0ZXJhdG9yPiBtb3ZlX2NvbnN0cnVjdGlvbl92YWx1
ZXMoCisgICAgICAgIE1vdmVJdGVyYXRvcihzdG9yYWdlX3ZpZXcuZGF0YSArCisgICAgICAgICAg
ICAgICAgICAgICAobW92ZV9jb25zdHJ1Y3Rpb25fZGVzdGluYXRpb25faW5kZXggLSBpbnNlcnRf
Y291bnQpKSk7CisgICAgYWJzbDo6U3Bhbjx2YWx1ZV90eXBlPiBtb3ZlX2NvbnN0cnVjdGlvbiA9
IHsKKyAgICAgICAgc3RvcmFnZV92aWV3LmRhdGEgKyBtb3ZlX2NvbnN0cnVjdGlvbl9kZXN0aW5h
dGlvbl9pbmRleCwKKyAgICAgICAgbmV3X3NpemUgLSBtb3ZlX2NvbnN0cnVjdGlvbl9kZXN0aW5h
dGlvbl9pbmRleH07CisKKyAgICBwb2ludGVyIG1vdmVfYXNzaWdubWVudF92YWx1ZXMgPSBzdG9y
YWdlX3ZpZXcuZGF0YSArIGluc2VydF9pbmRleDsKKyAgICBhYnNsOjpTcGFuPHZhbHVlX3R5cGU+
IG1vdmVfYXNzaWdubWVudCA9IHsKKyAgICAgICAgc3RvcmFnZV92aWV3LmRhdGEgKyBpbnNlcnRf
ZW5kX2luZGV4LAorICAgICAgICBtb3ZlX2NvbnN0cnVjdGlvbl9kZXN0aW5hdGlvbl9pbmRleCAt
IGluc2VydF9lbmRfaW5kZXh9OworCisgICAgYWJzbDo6U3Bhbjx2YWx1ZV90eXBlPiBpbnNlcnRf
YXNzaWdubWVudCA9IHttb3ZlX2Fzc2lnbm1lbnRfdmFsdWVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZV9jb25zdHJ1Y3Rpb24uc2l6ZSgpfTsK
KworICAgIGFic2w6OlNwYW48dmFsdWVfdHlwZT4gaW5zZXJ0X2NvbnN0cnVjdGlvbiA9IHsKKyAg
ICAgICAgaW5zZXJ0X2Fzc2lnbm1lbnQuZGF0YSgpICsgaW5zZXJ0X2Fzc2lnbm1lbnQuc2l6ZSgp
LAorICAgICAgICBpbnNlcnRfY291bnQgLSBpbnNlcnRfYXNzaWdubWVudC5zaXplKCl9OworCisg
ICAgbW92ZV9jb25zdHJ1Y3Rpb25fdHguQ29uc3RydWN0KG1vdmVfY29uc3RydWN0aW9uLmRhdGEo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vdmVfY29uc3RydWN0aW9u
X3ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZV9jb25zdHJ1
Y3Rpb24uc2l6ZSgpKTsKKworICAgIGZvciAocG9pbnRlciBkZXN0aW5hdGlvbiA9IG1vdmVfYXNz
aWdubWVudC5kYXRhKCkgKyBtb3ZlX2Fzc2lnbm1lbnQuc2l6ZSgpLAorICAgICAgICAgICAgICAg
ICBsYXN0X2Rlc3RpbmF0aW9uID0gbW92ZV9hc3NpZ25tZW50LmRhdGEoKSwKKyAgICAgICAgICAg
ICAgICAgc291cmNlID0gbW92ZV9hc3NpZ25tZW50X3ZhbHVlcyArIG1vdmVfYXNzaWdubWVudC5z
aXplKCk7CisgICAgICAgICA7KSB7CisgICAgICAtLWRlc3RpbmF0aW9uOworICAgICAgLS1zb3Vy
Y2U7CisgICAgICBpZiAoZGVzdGluYXRpb24gPCBsYXN0X2Rlc3RpbmF0aW9uKSBicmVhazsKKyAg
ICAgICpkZXN0aW5hdGlvbiA9IHN0ZDo6bW92ZSgqc291cmNlKTsKKyAgICB9CisKKyAgICBpbmxp
bmVkX3ZlY3Rvcl9pbnRlcm5hbDo6QXNzaWduRWxlbWVudHMoaW5zZXJ0X2Fzc2lnbm1lbnQuZGF0
YSgpLCAmdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRfYXNzaWdubWVudC5zaXplKCkpOworCisgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJu
YWw6OkNvbnN0cnVjdEVsZW1lbnRzKAorICAgICAgICBHZXRBbGxvY1B0cigpLCBpbnNlcnRfY29u
c3RydWN0aW9uLmRhdGEoKSwgJnZhbHVlcywKKyAgICAgICAgaW5zZXJ0X2NvbnN0cnVjdGlvbi5z
aXplKCkpOworCisgICAgbW92ZV9jb25zdHJ1Y3Rpb25fdHguQ29tbWl0KCk7CisKKyAgICBBZGRT
aXplKGluc2VydF9jb3VudCk7CisgICAgcmV0dXJuIGl0ZXJhdG9yKHN0b3JhZ2Vfdmlldy5kYXRh
ICsgaW5zZXJ0X2luZGV4KTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IE4sIHR5cGVuYW1lIEE+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KK2F1dG8gU3RvcmFn
ZTxULCBOLCBBPjo6RW1wbGFjZUJhY2soQXJncyYmLi4uIGFyZ3MpIC0+IHJlZmVyZW5jZSB7Cisg
IFN0b3JhZ2VWaWV3IHN0b3JhZ2VfdmlldyA9IE1ha2VTdG9yYWdlVmlldygpOworCisgIEFsbG9j
YXRpb25UcmFuc2FjdGlvbiBhbGxvY2F0aW9uX3R4KEdldEFsbG9jUHRyKCkpOworCisgIEl0ZXJh
dG9yVmFsdWVBZGFwdGVyPE1vdmVJdGVyYXRvcj4gbW92ZV92YWx1ZXMoCisgICAgICBNb3ZlSXRl
cmF0b3Ioc3RvcmFnZV92aWV3LmRhdGEpKTsKKworICBwb2ludGVyIGNvbnN0cnVjdF9kYXRhOwor
CisgIGlmIChzdG9yYWdlX3ZpZXcuc2l6ZSA9PSBzdG9yYWdlX3ZpZXcuY2FwYWNpdHkpIHsKKyAg
ICBzaXplX3R5cGUgbmV3X2NhcGFjaXR5ID0gTmV4dENhcGFjaXR5KHN0b3JhZ2Vfdmlldy5jYXBh
Y2l0eSk7CisgICAgcG9pbnRlciBuZXdfZGF0YSA9IGFsbG9jYXRpb25fdHguQWxsb2NhdGUobmV3
X2NhcGFjaXR5KTsKKworICAgIGNvbnN0cnVjdF9kYXRhID0gbmV3X2RhdGE7CisgIH0gZWxzZSB7
CisgICAgY29uc3RydWN0X2RhdGEgPSBzdG9yYWdlX3ZpZXcuZGF0YTsKKyAgfQorCisgIHBvaW50
ZXIgZW5kID0gY29uc3RydWN0X2RhdGEgKyBzdG9yYWdlX3ZpZXcuc2l6ZTsKKworICBBbGxvY2F0
b3JUcmFpdHM6OmNvbnN0cnVjdCgqR2V0QWxsb2NQdHIoKSwgZW5kLCBzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworCisgIGlmIChhbGxvY2F0aW9uX3R4LkRpZEFsbG9jYXRlKCkpIHsKKyAg
ICBBQlNMX0lOVEVSTkFMX1RSWSB7CisgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6Q29u
c3RydWN0RWxlbWVudHMoCisgICAgICAgICAgR2V0QWxsb2NQdHIoKSwgYWxsb2NhdGlvbl90eC5H
ZXREYXRhKCksICZtb3ZlX3ZhbHVlcywKKyAgICAgICAgICBzdG9yYWdlX3ZpZXcuc2l6ZSk7Cisg
ICAgfQorICAgIEFCU0xfSU5URVJOQUxfQ0FUQ0hfQU5ZIHsKKyAgICAgIEFsbG9jYXRvclRyYWl0
czo6ZGVzdHJveSgqR2V0QWxsb2NQdHIoKSwgZW5kKTsKKyAgICAgIEFCU0xfSU5URVJOQUxfUkVU
SFJPVzsKKyAgICB9CisKKyAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVzdHJveUVsZW1l
bnRzKEdldEFsbG9jUHRyKCksIHN0b3JhZ2Vfdmlldy5kYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZV92aWV3LnNpemUpOworCisgICAgRGVh
bGxvY2F0ZUlmQWxsb2NhdGVkKCk7CisgICAgQWNxdWlyZUFsbG9jYXRlZERhdGEoJmFsbG9jYXRp
b25fdHgpOworICAgIFNldElzQWxsb2NhdGVkKCk7CisgIH0KKworICBBZGRTaXplKDEpOworICBy
ZXR1cm4gKmVuZDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFt
ZSBBPgorYXV0byBTdG9yYWdlPFQsIE4sIEE+OjpFcmFzZShjb25zdF9pdGVyYXRvciBmcm9tLCBj
b25zdF9pdGVyYXRvciB0bykKKyAgICAtPiBpdGVyYXRvciB7CisgIGFzc2VydChmcm9tICE9IHRv
KTsKKworICBTdG9yYWdlVmlldyBzdG9yYWdlX3ZpZXcgPSBNYWtlU3RvcmFnZVZpZXcoKTsKKwor
ICBzaXplX3R5cGUgZXJhc2Vfc2l6ZSA9IHN0ZDo6ZGlzdGFuY2UoZnJvbSwgdG8pOworICBzaXpl
X3R5cGUgZXJhc2VfaW5kZXggPQorICAgICAgc3RkOjpkaXN0YW5jZShjb25zdF9pdGVyYXRvcihz
dG9yYWdlX3ZpZXcuZGF0YSksIGZyb20pOworICBzaXplX3R5cGUgZXJhc2VfZW5kX2luZGV4ID0g
ZXJhc2VfaW5kZXggKyBlcmFzZV9zaXplOworCisgIEl0ZXJhdG9yVmFsdWVBZGFwdGVyPE1vdmVJ
dGVyYXRvcj4gbW92ZV92YWx1ZXMoCisgICAgICBNb3ZlSXRlcmF0b3Ioc3RvcmFnZV92aWV3LmRh
dGEgKyBlcmFzZV9lbmRfaW5kZXgpKTsKKworICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6QXNz
aWduRWxlbWVudHMoc3RvcmFnZV92aWV3LmRhdGEgKyBlcmFzZV9pbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb3ZlX3ZhbHVlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Vfdmlldy5zaXplIC0gZXJhc2Vf
ZW5kX2luZGV4KTsKKworICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVzdHJveUVsZW1lbnRz
KAorICAgICAgR2V0QWxsb2NQdHIoKSwgc3RvcmFnZV92aWV3LmRhdGEgKyAoc3RvcmFnZV92aWV3
LnNpemUgLSBlcmFzZV9zaXplKSwKKyAgICAgIGVyYXNlX3NpemUpOworCisgIFN1YnRyYWN0U2l6
ZShlcmFzZV9zaXplKTsKKyAgcmV0dXJuIGl0ZXJhdG9yKHN0b3JhZ2Vfdmlldy5kYXRhICsgZXJh
c2VfaW5kZXgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1l
IEE+CithdXRvIFN0b3JhZ2U8VCwgTiwgQT46OlJlc2VydmUoc2l6ZV90eXBlIHJlcXVlc3RlZF9j
YXBhY2l0eSkgLT4gdm9pZCB7CisgIFN0b3JhZ2VWaWV3IHN0b3JhZ2VfdmlldyA9IE1ha2VTdG9y
YWdlVmlldygpOworCisgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UocmVxdWVzdGVkX2NhcGFjaXR5
IDw9IHN0b3JhZ2Vfdmlldy5jYXBhY2l0eSkpIHJldHVybjsKKworICBBbGxvY2F0aW9uVHJhbnNh
Y3Rpb24gYWxsb2NhdGlvbl90eChHZXRBbGxvY1B0cigpKTsKKworICBJdGVyYXRvclZhbHVlQWRh
cHRlcjxNb3ZlSXRlcmF0b3I+IG1vdmVfdmFsdWVzKAorICAgICAgTW92ZUl0ZXJhdG9yKHN0b3Jh
Z2Vfdmlldy5kYXRhKSk7CisKKyAgc2l6ZV90eXBlIG5ld19jYXBhY2l0eSA9CisgICAgICBDb21w
dXRlQ2FwYWNpdHkoc3RvcmFnZV92aWV3LmNhcGFjaXR5LCByZXF1ZXN0ZWRfY2FwYWNpdHkpOwor
ICBwb2ludGVyIG5ld19kYXRhID0gYWxsb2NhdGlvbl90eC5BbGxvY2F0ZShuZXdfY2FwYWNpdHkp
OworCisgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpDb25zdHJ1Y3RFbGVtZW50cyhHZXRBbGxv
Y1B0cigpLCBuZXdfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZtb3ZlX3ZhbHVlcywgc3RvcmFnZV92aWV3LnNpemUpOworCisgIGlubGluZWRfdmVj
dG9yX2ludGVybmFsOjpEZXN0cm95RWxlbWVudHMoR2V0QWxsb2NQdHIoKSwgc3RvcmFnZV92aWV3
LmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFn
ZV92aWV3LnNpemUpOworCisgIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICBBY3F1aXJlQWxs
b2NhdGVkRGF0YSgmYWxsb2NhdGlvbl90eCk7CisgIFNldElzQWxsb2NhdGVkKCk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KK2F1dG8gU3RvcmFnZTxU
LCBOLCBBPjo6U2hyaW5rVG9GaXQoKSAtPiB2b2lkIHsKKyAgLy8gTWF5IG9ubHkgYmUgY2FsbGVk
IG9uIGFsbG9jYXRlZCBpbnN0YW5jZXMhCisgIGFzc2VydChHZXRJc0FsbG9jYXRlZCgpKTsKKwor
ICBTdG9yYWdlVmlldyBzdG9yYWdlX3ZpZXd7R2V0QWxsb2NhdGVkRGF0YSgpLCBHZXRTaXplKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRBbGxvY2F0ZWRDYXBhY2l0eSgpfTsKKwor
ICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHN0b3JhZ2Vfdmlldy5zaXplID09IHN0b3JhZ2Vfdmll
dy5jYXBhY2l0eSkpIHJldHVybjsKKworICBBbGxvY2F0aW9uVHJhbnNhY3Rpb24gYWxsb2NhdGlv
bl90eChHZXRBbGxvY1B0cigpKTsKKworICBJdGVyYXRvclZhbHVlQWRhcHRlcjxNb3ZlSXRlcmF0
b3I+IG1vdmVfdmFsdWVzKAorICAgICAgTW92ZUl0ZXJhdG9yKHN0b3JhZ2Vfdmlldy5kYXRhKSk7
CisKKyAgcG9pbnRlciBjb25zdHJ1Y3RfZGF0YTsKKworICBpZiAoc3RvcmFnZV92aWV3LnNpemUg
PiBHZXRJbmxpbmVkQ2FwYWNpdHkoKSkgeworICAgIHNpemVfdHlwZSBuZXdfY2FwYWNpdHkgPSBz
dG9yYWdlX3ZpZXcuc2l6ZTsKKyAgICBwb2ludGVyIG5ld19kYXRhID0gYWxsb2NhdGlvbl90eC5B
bGxvY2F0ZShuZXdfY2FwYWNpdHkpOworCisgICAgY29uc3RydWN0X2RhdGEgPSBuZXdfZGF0YTsK
KyAgfSBlbHNlIHsKKyAgICBjb25zdHJ1Y3RfZGF0YSA9IEdldElubGluZWREYXRhKCk7CisgIH0K
KworICBBQlNMX0lOVEVSTkFMX1RSWSB7CisgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkNv
bnN0cnVjdEVsZW1lbnRzKEdldEFsbG9jUHRyKCksIGNvbnN0cnVjdF9kYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW92ZV92YWx1ZXMsIHN0b3Jh
Z2Vfdmlldy5zaXplKTsKKyAgfQorICBBQlNMX0lOVEVSTkFMX0NBVENIX0FOWSB7CisgICAgU2V0
QWxsb2NhdGVkRGF0YShzdG9yYWdlX3ZpZXcuZGF0YSwgc3RvcmFnZV92aWV3LmNhcGFjaXR5KTsK
KyAgICBBQlNMX0lOVEVSTkFMX1JFVEhST1c7CisgIH0KKworICBpbmxpbmVkX3ZlY3Rvcl9pbnRl
cm5hbDo6RGVzdHJveUVsZW1lbnRzKEdldEFsbG9jUHRyKCksIHN0b3JhZ2Vfdmlldy5kYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Vfdmlldy5z
aXplKTsKKworICBBbGxvY2F0b3JUcmFpdHM6OmRlYWxsb2NhdGUoKkdldEFsbG9jUHRyKCksIHN0
b3JhZ2Vfdmlldy5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZV92
aWV3LmNhcGFjaXR5KTsKKworICBpZiAoYWxsb2NhdGlvbl90eC5EaWRBbGxvY2F0ZSgpKSB7Cisg
ICAgQWNxdWlyZUFsbG9jYXRlZERhdGEoJmFsbG9jYXRpb25fdHgpOworICB9IGVsc2UgeworICAg
IFVuc2V0SXNBbGxvY2F0ZWQoKTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6
ZV90IE4sIHR5cGVuYW1lIEE+CithdXRvIFN0b3JhZ2U8VCwgTiwgQT46OlN3YXAoU3RvcmFnZSog
b3RoZXJfc3RvcmFnZV9wdHIpIC0+IHZvaWQgeworICB1c2luZyBzdGQ6OnN3YXA7CisgIGFzc2Vy
dCh0aGlzICE9IG90aGVyX3N0b3JhZ2VfcHRyKTsKKworICBpZiAoR2V0SXNBbGxvY2F0ZWQoKSAm
JiBvdGhlcl9zdG9yYWdlX3B0ci0+R2V0SXNBbGxvY2F0ZWQoKSkgeworICAgIHN3YXAoZGF0YV8u
YWxsb2NhdGVkLCBvdGhlcl9zdG9yYWdlX3B0ci0+ZGF0YV8uYWxsb2NhdGVkKTsKKyAgfSBlbHNl
IGlmICghR2V0SXNBbGxvY2F0ZWQoKSAmJiAhb3RoZXJfc3RvcmFnZV9wdHItPkdldElzQWxsb2Nh
dGVkKCkpIHsKKyAgICBTdG9yYWdlKiBzbWFsbF9wdHIgPSB0aGlzOworICAgIFN0b3JhZ2UqIGxh
cmdlX3B0ciA9IG90aGVyX3N0b3JhZ2VfcHRyOworICAgIGlmIChzbWFsbF9wdHItPkdldFNpemUo
KSA+IGxhcmdlX3B0ci0+R2V0U2l6ZSgpKSBzd2FwKHNtYWxsX3B0ciwgbGFyZ2VfcHRyKTsKKwor
ICAgIGZvciAoc2l6ZV90eXBlIGkgPSAwOyBpIDwgc21hbGxfcHRyLT5HZXRTaXplKCk7ICsraSkg
eworICAgICAgc3dhcChzbWFsbF9wdHItPkdldElubGluZWREYXRhKClbaV0sIGxhcmdlX3B0ci0+
R2V0SW5saW5lZERhdGEoKVtpXSk7CisgICAgfQorCisgICAgSXRlcmF0b3JWYWx1ZUFkYXB0ZXI8
TW92ZUl0ZXJhdG9yPiBtb3ZlX3ZhbHVlcygKKyAgICAgICAgTW92ZUl0ZXJhdG9yKGxhcmdlX3B0
ci0+R2V0SW5saW5lZERhdGEoKSArIHNtYWxsX3B0ci0+R2V0U2l6ZSgpKSk7CisKKyAgICBpbmxp
bmVkX3ZlY3Rvcl9pbnRlcm5hbDo6Q29uc3RydWN0RWxlbWVudHMoCisgICAgICAgIGxhcmdlX3B0
ci0+R2V0QWxsb2NQdHIoKSwKKyAgICAgICAgc21hbGxfcHRyLT5HZXRJbmxpbmVkRGF0YSgpICsg
c21hbGxfcHRyLT5HZXRTaXplKCksICZtb3ZlX3ZhbHVlcywKKyAgICAgICAgbGFyZ2VfcHRyLT5H
ZXRTaXplKCkgLSBzbWFsbF9wdHItPkdldFNpemUoKSk7CisKKyAgICBpbmxpbmVkX3ZlY3Rvcl9p
bnRlcm5hbDo6RGVzdHJveUVsZW1lbnRzKAorICAgICAgICBsYXJnZV9wdHItPkdldEFsbG9jUHRy
KCksCisgICAgICAgIGxhcmdlX3B0ci0+R2V0SW5saW5lZERhdGEoKSArIHNtYWxsX3B0ci0+R2V0
U2l6ZSgpLAorICAgICAgICBsYXJnZV9wdHItPkdldFNpemUoKSAtIHNtYWxsX3B0ci0+R2V0U2l6
ZSgpKTsKKyAgfSBlbHNlIHsKKyAgICBTdG9yYWdlKiBhbGxvY2F0ZWRfcHRyID0gdGhpczsKKyAg
ICBTdG9yYWdlKiBpbmxpbmVkX3B0ciA9IG90aGVyX3N0b3JhZ2VfcHRyOworICAgIGlmICghYWxs
b2NhdGVkX3B0ci0+R2V0SXNBbGxvY2F0ZWQoKSkgc3dhcChhbGxvY2F0ZWRfcHRyLCBpbmxpbmVk
X3B0cik7CisKKyAgICBTdG9yYWdlVmlldyBhbGxvY2F0ZWRfc3RvcmFnZV92aWV3e2FsbG9jYXRl
ZF9wdHItPkdldEFsbG9jYXRlZERhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFsbG9jYXRlZF9wdHItPkdldFNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlZF9wdHItPkdldEFsbG9jYXRlZENhcGFjaXR5KCl9
OworCisgICAgSXRlcmF0b3JWYWx1ZUFkYXB0ZXI8TW92ZUl0ZXJhdG9yPiBtb3ZlX3ZhbHVlcygK
KyAgICAgICAgTW92ZUl0ZXJhdG9yKGlubGluZWRfcHRyLT5HZXRJbmxpbmVkRGF0YSgpKSk7CisK
KyAgICBBQlNMX0lOVEVSTkFMX1RSWSB7CisgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6
Q29uc3RydWN0RWxlbWVudHMoCisgICAgICAgICAgaW5saW5lZF9wdHItPkdldEFsbG9jUHRyKCks
IGFsbG9jYXRlZF9wdHItPkdldElubGluZWREYXRhKCksCisgICAgICAgICAgJm1vdmVfdmFsdWVz
LCBpbmxpbmVkX3B0ci0+R2V0U2l6ZSgpKTsKKyAgICB9CisgICAgQUJTTF9JTlRFUk5BTF9DQVRD
SF9BTlkgeworICAgICAgYWxsb2NhdGVkX3B0ci0+U2V0QWxsb2NhdGVkRGF0YShhbGxvY2F0ZWRf
c3RvcmFnZV92aWV3LmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFsbG9jYXRlZF9zdG9yYWdlX3ZpZXcuY2FwYWNpdHkpOworICAgICAgQUJTTF9JTlRFUk5BTF9S
RVRIUk9XOworICAgIH0KKworICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpEZXN0cm95RWxl
bWVudHMoaW5saW5lZF9wdHItPkdldEFsbG9jUHRyKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVkX3B0ci0+R2V0SW5saW5lZERhdGEoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZWRfcHRyLT5H
ZXRTaXplKCkpOworCisgICAgaW5saW5lZF9wdHItPlNldEFsbG9jYXRlZERhdGEoYWxsb2NhdGVk
X3N0b3JhZ2Vfdmlldy5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs
bG9jYXRlZF9zdG9yYWdlX3ZpZXcuY2FwYWNpdHkpOworICB9CisKKyAgc3dhcChHZXRTaXplQW5k
SXNBbGxvY2F0ZWQoKSwgb3RoZXJfc3RvcmFnZV9wdHItPkdldFNpemVBbmRJc0FsbG9jYXRlZCgp
KTsKKyAgc3dhcCgqR2V0QWxsb2NQdHIoKSwgKm90aGVyX3N0b3JhZ2VfcHRyLT5HZXRBbGxvY1B0
cigpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGlubGluZWRfdmVjdG9yX2ludGVybmFsCit9ICAv
LyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0lO
TElORURfVkVDVE9SX0lOVEVSTkFMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvbGF5b3V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0LmgKaW5kZXgg
Njc2YzdkNjdlZTY4ZGNkNTY2ZTE3MDk0ZDQ5NThlMzc0NzU0N2Q5OS4uYmJkZGU1MDc5NmVhMWRi
Njg2Y2UzZDdkZmQ1YWFjMzcwN2Q1NWU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL2xheW91dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXQuaApA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjMyLDEzICsyMzIs
MTcgQEAgc3RydWN0IFNpemVPZiA6IE5vdEFsaWduZWQ8VD4sIHN0ZDo6aW50ZWdyYWxfY29uc3Rh
bnQ8c2l6ZV90LCBzaXplb2YoVCk+IHt9OwogdGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgog
c3RydWN0IFNpemVPZjxBbGlnbmVkPFQsIE4+PiA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c2l6
ZV90LCBzaXplb2YoVCk+IHt9OwogCisvLyBOb3RlOiB3b3JrYXJvdW5kIGZvciBodHRwczovL2dj
Yy5nbnUub3JnL1BSODgxMTUKIHRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IEFsaWduT2YgOiBO
b3RBbGlnbmVkPFQ+LCBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgYWxpZ25vZihUKT4g
e307CitzdHJ1Y3QgQWxpZ25PZiA6IE5vdEFsaWduZWQ8VD4geworICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCB2YWx1ZSA9IGFsaWdub2YoVCk7Cit9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6
ZV90IE4+Ci1zdHJ1Y3QgQWxpZ25PZjxBbGlnbmVkPFQsIE4+PiA6IHN0ZDo6aW50ZWdyYWxfY29u
c3RhbnQ8c2l6ZV90LCBOPiB7CitzdHJ1Y3QgQWxpZ25PZjxBbGlnbmVkPFQsIE4+PiB7CiAgIHN0
YXRpY19hc3NlcnQoTiAlIGFsaWdub2YoVCkgPT0gMCwKICAgICAgICAgICAgICAgICAiQ3VzdG9t
IGFsaWdubWVudCBjYW4ndCBiZSBsb3dlciB0aGFuIHRoZSB0eXBlJ3MgYWxpZ25tZW50Iik7Cisg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHZhbHVlID0gTjsKIH07CiAKIC8vIERvZXMgYFRzLi4u
YCBjb250YWluIGBUYD8KQEAgLTI0OSw4ICsyNTMsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIEZyb20s
IGNsYXNzIFRvPgogdXNpbmcgQ29weUNvbnN0ID0KICAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlv
bmFsPHN0ZDo6aXNfY29uc3Q8RnJvbT46OnZhbHVlLCBjb25zdCBUbywgVG8+Ojp0eXBlOwogCisv
LyBOb3RlOiBXZSdyZSBub3QgcXVhbGlmeWluZyB0aGlzIHdpdGggYWJzbDo6IGJlY2F1c2UgaXQg
ZG9lc24ndCBjb21waWxlIHVuZGVyCisvLyBNU1ZDLgogdGVtcGxhdGUgPGNsYXNzIFQ+Ci11c2lu
ZyBTbGljZVR5cGUgPSBhYnNsOjpTcGFuPFQ+OwordXNpbmcgU2xpY2VUeXBlID0gU3BhbjxUPjsK
IAogLy8gVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgbm8gdHlwZXMuIEl0IHByZXZlbnRzIGZ1bmN0
aW9ucyBkZWZpbmVkIGluIGl0IGZyb20KIC8vIGJlaW5nIGZvdW5kIGJ5IEFETC4KQEAgLTI5MCw3
ICsyOTYsNyBAQCBzdGQ6OnN0cmluZyBUeXBlTmFtZSgpIHsKICNpZmRlZiBBQlNMX0lOVEVSTkFM
X0hBU19DWEFfREVNQU5HTEUKICAgZGVtYW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmdsZSh0eXBl
aWQoVCkubmFtZSgpLCBudWxscHRyLCBudWxscHRyLCAmc3RhdHVzKTsKICNlbmRpZgotICBpZiAo
c3RhdHVzID09IDAgJiYgZGVtYW5nbGVkICE9IG51bGxwdHIpIHsgIC8vIERlbWFuZ2xpbmcgc3Vj
Y2VlZWRlZC4KKyAgaWYgKHN0YXR1cyA9PSAwICYmIGRlbWFuZ2xlZCAhPSBudWxscHRyKSB7ICAv
LyBEZW1hbmdsaW5nIHN1Y2NlZWRlZC4KICAgICBhYnNsOjpTdHJBcHBlbmQoJm91dCwgIjwiLCBk
ZW1hbmdsZWQsICI+Iik7CiAgICAgZnJlZShkZW1hbmdsZWQpOwogICB9IGVsc2UgewpAQCAtMzk2
LDcgKzQwMiw3IEBAIGNsYXNzIExheW91dEltcGw8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4sIGFi
c2w6OmluZGV4X3NlcXVlbmNlPFNpemVTZXEuLi4+LAogICAgIHN0YXRpY19hc3NlcnQoTiA8IE51
bU9mZnNldHMsICJJbmRleCBvdXQgb2YgYm91bmRzIik7CiAgICAgcmV0dXJuIGFkbF9iYXJyaWVy
OjpBbGlnbigKICAgICAgICAgT2Zmc2V0PE4gLSAxPigpICsgU2l6ZU9mPEVsZW1lbnRUeXBlPE4g
LSAxPj4oKSAqIHNpemVfW04gLSAxXSwKLSAgICAgICAgRWxlbWVudEFsaWdubWVudDxOPigpKTsK
KyAgICAgICAgRWxlbWVudEFsaWdubWVudDxOPjo6dmFsdWUpOwogICB9CiAKICAgLy8gT2Zmc2V0
IGluIGJ5dGVzIG9mIHRoZSBhcnJheSB3aXRoIHRoZSBzcGVjaWZpZWQgZWxlbWVudCB0eXBlLiBU
aGVyZSBtdXN0CkBAIC00NDUsNyArNDUxLDcgQEAgY2xhc3MgTGF5b3V0SW1wbDxzdGQ6OnR1cGxl
PEVsZW1lbnRzLi4uPiwgYWJzbDo6aW5kZXhfc2VxdWVuY2U8U2l6ZVNlcS4uLj4sCiAgICAgcmV0
dXJuIFNpemU8RWxlbWVudEluZGV4PFQ+KCk+KCk7CiAgIH0KIAotICAgIC8vIFRoZSBudW1iZXIg
b2YgZWxlbWVudHMgb2YgYWxsIGFycmF5cyBmb3Igd2hpY2ggdGhleSBhcmUga25vd24uCisgIC8v
IFRoZSBudW1iZXIgb2YgZWxlbWVudHMgb2YgYWxsIGFycmF5cyBmb3Igd2hpY2ggdGhleSBhcmUg
a25vd24uCiAgIGNvbnN0ZXhwciBzdGQ6OmFycmF5PHNpemVfdCwgTnVtU2l6ZXM+IFNpemVzKCkg
Y29uc3QgewogICAgIHJldHVybiB7e1NpemU8U2l6ZVNlcT4oKS4uLn19OwogICB9CkBAIC02MTAs
NyArNjE2LDcgQEAgY2xhc3MgTGF5b3V0SW1wbDxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiwgYWJz
bDo6aW5kZXhfc2VxdWVuY2U8U2l6ZVNlcS4uLj4sCiAjaWZkZWYgQUREUkVTU19TQU5JVElaRVIK
ICAgICBQb2lzb25QYWRkaW5nPENoYXIsIE4gLSAxPihwKTsKICAgICAvLyBUaGUgYGlmYCBpcyBh
biBvcHRpbWl6YXRpb24uIEl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBvYnNlcnZhYmxlIGJlaGF2aW91
ci4KLSAgICBpZiAoRWxlbWVudEFsaWdubWVudDxOIC0gMT4oKSAlIEVsZW1lbnRBbGlnbm1lbnQ8
Tj4oKSkgeworICAgIGlmIChFbGVtZW50QWxpZ25tZW50PE4gLSAxPjo6dmFsdWUgJSBFbGVtZW50
QWxpZ25tZW50PE4+Ojp2YWx1ZSkgewogICAgICAgc2l6ZV90IHN0YXJ0ID0KICAgICAgICAgICBP
ZmZzZXQ8TiAtIDE+KCkgKyBTaXplT2Y8RWxlbWVudFR5cGU8TiAtIDE+PigpICogc2l6ZV9bTiAt
IDFdOwogICAgICAgQVNBTl9QT0lTT05fTUVNT1JZX1JFR0lPTihwICsgc3RhcnQsIE9mZnNldDxO
PigpIC0gc3RhcnQpOwpAQCAtNjM3LDcgKzY0Myw4IEBAIGNsYXNzIExheW91dEltcGw8c3RkOjp0
dXBsZTxFbGVtZW50cy4uLj4sIGFic2w6OmluZGV4X3NlcXVlbmNlPFNpemVTZXEuLi4+LAogICBz
dGQ6OnN0cmluZyBEZWJ1Z1N0cmluZygpIGNvbnN0IHsKICAgICBjb25zdCBhdXRvIG9mZnNldHMg
PSBPZmZzZXRzKCk7CiAgICAgY29uc3Qgc2l6ZV90IHNpemVzW10gPSB7U2l6ZU9mPEVsZW1lbnRU
eXBlPE9mZnNldFNlcT4+KCkuLi59OwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHR5cGVzW10gPSB7
YWRsX2JhcnJpZXI6OlR5cGVOYW1lPEVsZW1lbnRUeXBlPE9mZnNldFNlcT4+KCkuLi59OworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHR5cGVzW10gPSB7CisgICAgICAgIGFkbF9iYXJyaWVyOjpUeXBl
TmFtZTxFbGVtZW50VHlwZTxPZmZzZXRTZXE+PigpLi4ufTsKICAgICBzdGQ6OnN0cmluZyByZXMg
PSBhYnNsOjpTdHJDYXQoIkAwIiwgdHlwZXNbMF0sICIoIiwgc2l6ZXNbMF0sICIpIik7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgIT0gTnVtT2Zmc2V0cyAtIDE7ICsraSkgewogICAgICAgYWJz
bDo6U3RyQXBwZW5kKCZyZXMsICJbIiwgc2l6ZV9baV0sICJdOyBAIiwgb2Zmc2V0c1tpICsgMV0s
IHR5cGVzW2kgKyAxXSwKQEAgLTY5MCw3ICs2OTcsNyBAQCBjbGFzcyBMYXlvdXQgOiBwdWJsaWMg
aW50ZXJuYWxfbGF5b3V0OjpMYXlvdXRUeXBlPHNpemVvZi4uLihUcyksIFRzLi4uPiB7CiAgIC8v
CiAgIC8vIEl0J3MgYWxsb3dlZCB0byBwYXNzIGZld2VyIGFycmF5IHNpemVzIHRoYW4gdGhlIG51
bWJlciBvZiBhcnJheXMuIEUuZy4sCiAgIC8vIGlmIGFsbCB5b3UgbmVlZCBpcyB0byB0aGUgb2Zm
c2V0IG9mIHRoZSBzZWNvbmQgYXJyYXksIHlvdSBvbmx5IG5lZWQgdG8KLSAgLy8gcGFzcyBvbmUg
YXJndW1lbnQgLS0gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgZmlyc3QgYXJyYXlzLgor
ICAvLyBwYXNzIG9uZSBhcmd1bWVudCAtLSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBm
aXJzdCBhcnJheS4KICAgLy8KICAgLy8gICAvLyBpbnRbM10gZm9sbG93ZWQgYnkgNCBieXRlcyBv
ZiBwYWRkaW5nIGFuZCBhbiB1bmtub3duIG51bWJlciBvZgogICAvLyAgIC8vIGRvdWJsZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0X3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0X3Rlc3QuY2MKaW5kZXggZjM1MTU3YTNiZDg1MjE5
ODg2OTQ2ZmQwNjI2OTFjNTcwNTNiMmVkZS4uMzNiNzJiZDM3MmUzNDVlN2U2NGIxMWVkMWZmYTc1
ZTQxMzI4NWVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dF90
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXRfdGVzdC5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDUsNyArNDUsMjUgQEAg
RXhwZWN0ZWQgVHlwZShBY3R1YWwgdmFsKSB7CiAgIHJldHVybiB2YWw7CiB9CiAKLXVzaW5nIElu
dDEyOCA9IGludDY0X3RbMl07CisvLyBIZWxwZXIgY2xhc3NlcyB0byB0ZXN0IGRpZmZlcmVudCBz
aXplIGFuZCBhbGlnbm1lbnRzLgorc3RydWN0IGFsaWduYXMoOCkgSW50MTI4IHsKKyAgdWludDY0
X3QgYSwgYjsKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShJbnQxMjggbGhzLCBJbnQxMjggcmhz
KSB7CisgICAgcmV0dXJuIHN0ZDo6dGllKGxocy5hLCBsaHMuYikgPT0gc3RkOjp0aWUocmhzLmEs
IHJocy5iKTsKKyAgfQorCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBOYW1lKCkgeworICAgIHJldHVy
biBpbnRlcm5hbF9sYXlvdXQ6OmFkbF9iYXJyaWVyOjpUeXBlTmFtZTxJbnQxMjg+KCk7CisgIH0K
K307CisKKy8vIGludDY0X3QgaXMgKm5vdCogOC1ieXRlIGFsaWduZWQgb24gYWxsIHBsYXRmb3Jt
cyEKK3N0cnVjdCBhbGlnbmFzKDgpIEludDY0IHsKKyAgaW50NjRfdCBhOworICBmcmllbmQgYm9v
bCBvcGVyYXRvcj09KEludDY0IGxocywgSW50NjQgcmhzKSB7CisgICAgcmV0dXJuIGxocy5hID09
IHJocy5hOworICB9Cit9OwogCiAvLyBQcm9wZXJ0aWVzIG9mIHR5cGVzIHRoYXQgdGhpcyB0ZXN0
IHJlbGllcyBvbi4KIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGludDhfdCkgPT0gMSwgIiIpOwpAQCAt
NTQsNiArNzIsOCBAQCBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQxNl90KSA9PSAyLCAiIik7CiBz
dGF0aWNfYXNzZXJ0KGFsaWdub2YoaW50MTZfdCkgPT0gMiwgIiIpOwogc3RhdGljX2Fzc2VydChz
aXplb2YoaW50MzJfdCkgPT0gNCwgIiIpOwogc3RhdGljX2Fzc2VydChhbGlnbm9mKGludDMyX3Qp
ID09IDQsICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEludDY0KSA9PSA4LCAiIik7CitzdGF0
aWNfYXNzZXJ0KGFsaWdub2YoSW50NjQpID09IDgsICIiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KEludDEyOCkgPT0gMTYsICIiKTsKIHN0YXRpY19hc3NlcnQoYWxpZ25vZihJbnQxMjgpID09IDgs
ICIiKTsKIApAQCAtMTI3MSwxNCArMTI5MSwxNCBAQCBURVNUKExheW91dCwgT3ZlckFsaWduZWQp
IHsKIFRFU1QoTGF5b3V0LCBBbGlnbm1lbnQpIHsKICAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50
OF90Pjo6QWxpZ25tZW50KCkgPT0gMSwgIiIpOwogICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQz
Ml90Pjo6QWxpZ25tZW50KCkgPT0gNCwgIiIpOwotICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQ2
NF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxJbnQ2
ND46OkFsaWdubWVudCgpID09IDgsICIiKTsKICAgc3RhdGljX2Fzc2VydChMYXlvdXQ8QWxpZ25l
ZDxpbnQ4X3QsIDY0Pj46OkFsaWdubWVudCgpID09IDY0LCAiIik7Ci0gIHN0YXRpY19hc3NlcnQo
TGF5b3V0PGludDhfdCwgaW50MzJfdCwgaW50NjRfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsK
LSAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50OF90LCBpbnQ2NF90LCBpbnQzMl90Pjo6QWxpZ25t
ZW50KCkgPT0gOCwgIiIpOwotICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQzMl90LCBpbnQ4X3Qs
IGludDY0X3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7Ci0gIHN0YXRpY19hc3NlcnQoTGF5b3V0
PGludDMyX3QsIGludDY0X3QsIGludDhfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsKLSAgc3Rh
dGljX2Fzc2VydChMYXlvdXQ8aW50NjRfdCwgaW50OF90LCBpbnQzMl90Pjo6QWxpZ25tZW50KCkg
PT0gOCwgIiIpOwotICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQ2NF90LCBpbnQzMl90LCBpbnQ4
X3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDhf
dCwgaW50MzJfdCwgSW50NjQ+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7CisgIHN0YXRpY19hc3Nl
cnQoTGF5b3V0PGludDhfdCwgSW50NjQsIGludDMyX3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7
CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDMyX3QsIGludDhfdCwgSW50NjQ+OjpBbGlnbm1l
bnQoKSA9PSA4LCAiIik7CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDMyX3QsIEludDY0LCBp
bnQ4X3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PElu
dDY0LCBpbnQ4X3QsIGludDMyX3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7CisgIHN0YXRpY19h
c3NlcnQoTGF5b3V0PEludDY0LCBpbnQzMl90LCBpbnQ4X3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAi
Iik7CiB9CiAKIFRFU1QoTGF5b3V0LCBDb25zdGV4cHJQYXJ0aWFsKSB7CkBAIC0xMzEzLDcgKzEz
MzMsNyBAQCB2b2lkIEV4cGVjdFBvaXNvbmVkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKCZidWYpW05d
LAogfQogCiBURVNUKExheW91dCwgUG9pc29uUGFkZGluZykgewotICB1c2luZyBMID0gTGF5b3V0
PGludDhfdCwgaW50NjRfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgdXNpbmcgTCA9IExheW91dDxp
bnQ4X3QsIEludDY0LCBpbnQzMl90LCBJbnQxMjg+OwogCiAgIGNvbnN0ZXhwciBzaXplX3QgbiA9
IEw6OlBhcnRpYWwoMSwgMiwgMywgNCkuQWxsb2NTaXplKCk7CiAgIHsKQEAgLTEzNjEsMTIgKzEz
ODEsNiBAQCBURVNUKExheW91dCwgUG9pc29uUGFkZGluZykgewogfQogCiBURVNUKExheW91dCwg
RGVidWdTdHJpbmcpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgaW50NjRfdHlwZSA9Ci0jaWZkZWYg
X01TQ19WRVIKLSAgIl9faW50NjQiOwotI2Vsc2UgICAvLyBfTVNDX1ZFUgotICBzdGQ6OmlzX3Nh
bWU8aW50NjRfdCwgbG9uZyBsb25nPjo6dmFsdWUgPyAibG9uZyBsb25nIiA6ICJsb25nIjsgIC8v
IE5PTElOVAotI2VuZGlmICAvLyBfTVNDX1ZFUgogICB7CiAgICAgY29uc3RleHByIGF1dG8geCA9
IExheW91dDxpbnQ4X3QsIGludDMyX3QsIGludDhfdCwgSW50MTI4Pjo6UGFydGlhbCgpOwogICAg
IEVYUEVDVF9FUSgiQDA8c2lnbmVkIGNoYXI+KDEpIiwgeC5EZWJ1Z1N0cmluZygpKTsKQEAgLTEz
ODQsMjQgKzEzOTgsMjQgQEAgVEVTVChMYXlvdXQsIERlYnVnU3RyaW5nKSB7CiAgICAgY29uc3Rl
eHByIGF1dG8geCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIGludDhfdCwgSW50MTI4Pjo6UGFy
dGlhbCgxLCAyLCAzKTsKICAgICBFWFBFQ1RfRVEoCiAgICAgICAgICJAMDxzaWduZWQgY2hhcj4o
MSlbMV07IEA0PGludD4oNClbMl07IEAxMjxzaWduZWQgY2hhcj4oMSlbM107ICIKLSAgICAgICAg
IkAxNjwiICsKLSAgICAgICAgICAgIGludDY0X3R5cGUgKyAiIFsyXT4oMTYpIiwKKyAgICAgICAg
IkAxNiIgKworICAgICAgICAgICAgSW50MTI4OjpOYW1lKCkgKyAiKDE2KSIsCiAgICAgICAgIHgu
RGVidWdTdHJpbmcoKSk7CiAgIH0KICAgewogICAgIGNvbnN0ZXhwciBhdXRvIHggPSBMYXlvdXQ8
aW50OF90LCBpbnQzMl90LCBpbnQ4X3QsIEludDEyOD46OlBhcnRpYWwoMSwgMiwgMywgNCk7CiAg
ICAgRVhQRUNUX0VRKAogICAgICAgICAiQDA8c2lnbmVkIGNoYXI+KDEpWzFdOyBANDxpbnQ+KDQp
WzJdOyBAMTI8c2lnbmVkIGNoYXI+KDEpWzNdOyAiCi0gICAgICAgICJAMTY8IiArCi0gICAgICAg
ICAgICBpbnQ2NF90eXBlICsgIiBbMl0+KDE2KVs0XSIsCisgICAgICAgICJAMTYiICsKKyAgICAg
ICAgICAgIEludDEyODo6TmFtZSgpICsgIigxNilbNF0iLAogICAgICAgICB4LkRlYnVnU3RyaW5n
KCkpOwogICB9CiAgIHsKICAgICBjb25zdGV4cHIgTGF5b3V0PGludDhfdCwgaW50MzJfdCwgaW50
OF90LCBJbnQxMjg+IHgoMSwgMiwgMywgNCk7CiAgICAgRVhQRUNUX0VRKAogICAgICAgICAiQDA8
c2lnbmVkIGNoYXI+KDEpWzFdOyBANDxpbnQ+KDQpWzJdOyBAMTI8c2lnbmVkIGNoYXI+KDEpWzNd
OyAiCi0gICAgICAgICJAMTY8IiArCi0gICAgICAgICAgICBpbnQ2NF90eXBlICsgIiBbMl0+KDE2
KVs0XSIsCisgICAgICAgICJAMTYiICsKKyAgICAgICAgICAgIEludDEyODo6TmFtZSgpICsgIigx
NilbNF0iLAogICAgICAgICB4LkRlYnVnU3RyaW5nKCkpOwogICB9CiB9CkBAIC0xNTI4LDggKzE1
NDIsNyBAQCBjbGFzcyBDb21wYWN0U3RyaW5nIHsKICAgY29uc3QgY2hhciogY19zdHIoKSBjb25z
dCB7CiAgICAgLy8gRXF1aXZhbGVudCB0byByZWludGVycHJldF9jYXN0PGNoYXIqPihwLmdldCgp
ICsgc2l6ZW9mKHNpemVfdCkpLgogICAgIC8vIFRoZSBhcmd1bWVudCBpbiBQYXJ0aWFsKDEpIHNw
ZWNpZmllcyB0aGF0IHdlIGhhdmUgc2l6ZV90WzFdIGluIGZyb250IG9mCi0gICAgLy8gdGhlCi0g
ICAgLy8gY2hhcmFjdGVycy4KKyAgICAvLyB0aGUgY2hhcmFjdGVycy4KICAgICByZXR1cm4gTDo6
UGFydGlhbCgxKS5Qb2ludGVyPGNoYXI+KHBfLmdldCgpKTsKICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL25vZGVfaGFzaF9wb2xpY3kuaAppbmRleCAwNjVlNzAwOWU3ZTdlNGM1YjAz
M2E1ZDI1OGNhZDkzNTcyY2ZkYTVlLi4xOWI0ZmMwOThmYjhkNmU4NjE3ZmEwMWRhMmQzYTRmMzQ3
NzZjOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3Bv
bGljeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5LmgK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0LmNjCmluZGV4IDQzZDI4N2Uz
YzRhMDRlYmQ2MThjMzA1YTE1Yjc2MzA1ZjcyYTc0OTcuLmYxZDNlYzMwMTRhZTljYTFiYzcwZjcy
Y2RjZWIyMmM1ZjZhYzk1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9u
b2RlX2hhc2hfcG9saWN5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL25v
ZGVfaGFzaF9wb2xpY3lfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX21h
cC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX21hcC5oCmluZGV4IDFlZGMw
MDcxZTdkZTgyOWRlMmRkYzc5Njc1ODQ2NjMyZjY2MDRjNDYuLjZhOWM3MzBjNDY0NDNhZGE2YmRl
NmM3YTdkMTgyMmE1MWYzOTQ2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9yYXdfaGFzaF9tYXAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hf
bWFwLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE5LDYg
KzE5LDcgQEAKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisj
aW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Rocm93X2RlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIgogI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4
cG9ydAogCkBAIC0zOSwxMSArNDAsMTQgQEAgY2xhc3MgcmF3X2hhc2hfbWFwIDogcHVibGljIHJh
d19oYXNoX3NldDxQb2xpY3ksIEhhc2gsIEVxLCBBbGxvYz4gewogICB1c2luZyBNYXBwZWRDb25z
dFJlZmVyZW5jZSA9IGRlY2x0eXBlKFA6OnZhbHVlKAogICAgICAgc3RkOjphZGRyZXNzb2Yoc3Rk
OjpkZWNsdmFsPHR5cGVuYW1lIHJhd19oYXNoX21hcDo6Y29uc3RfcmVmZXJlbmNlPigpKSkpOwog
CisgIHVzaW5nIEtleUFyZ0ltcGwgPQorICAgICAgS2V5QXJnPElzVHJhbnNwYXJlbnQ8RXE+Ojp2
YWx1ZSAmJiBJc1RyYW5zcGFyZW50PEhhc2g+Ojp2YWx1ZT47CisKICBwdWJsaWM6CiAgIHVzaW5n
IGtleV90eXBlID0gdHlwZW5hbWUgUG9saWN5OjprZXlfdHlwZTsKICAgdXNpbmcgbWFwcGVkX3R5
cGUgPSB0eXBlbmFtZSBQb2xpY3k6Om1hcHBlZF90eXBlOwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Sz4KLSAgdXNpbmcga2V5X2FyZyA9IHR5cGVuYW1lIHJhd19oYXNoX21hcDo6cmF3X2hhc2hfc2V0
Ojp0ZW1wbGF0ZSBrZXlfYXJnPEs+OworICB0ZW1wbGF0ZSA8Y2xhc3MgSz4KKyAgdXNpbmcga2V5
X2FyZyA9IHR5cGVuYW1lIEtleUFyZ0ltcGw6OnRlbXBsYXRlIHR5cGU8Sywga2V5X3R5cGU+Owog
CiAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfcmVmZXJlbmNlPGtleV90eXBlPjo6dmFsdWUsICIi
KTsKICAgLy8gVE9ETyhhbGtpcyk6IHJlbW92ZSB0aGlzIGFzc2VydGlvbiBhbmQgdmVyaWZ5IHRo
YXQgcmVmZXJlbmNlIG1hcHBlZF90eXBlIGlzCkBAIC0xMzMsMTQgKzEzNywyMCBAQCBjbGFzcyBy
YXdfaGFzaF9tYXAgOiBwdWJsaWMgcmF3X2hhc2hfc2V0PFBvbGljeSwgSGFzaCwgRXEsIEFsbG9j
PiB7CiAgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzIFAgPSBQb2xpY3k+CiAg
IE1hcHBlZFJlZmVyZW5jZTxQPiBhdChjb25zdCBrZXlfYXJnPEs+JiBrZXkpIHsKICAgICBhdXRv
IGl0ID0gdGhpcy0+ZmluZChrZXkpOwotICAgIGlmIChpdCA9PSB0aGlzLT5lbmQoKSkgc3RkOjph
Ym9ydCgpOworICAgIGlmIChpdCA9PSB0aGlzLT5lbmQoKSkgeworICAgICAgYmFzZV9pbnRlcm5h
bDo6VGhyb3dTdGRPdXRPZlJhbmdlKAorICAgICAgICAgICJhYnNsOjpjb250YWluZXJfaW50ZXJu
YWw6OnJhd19oYXNoX21hcDw+OjphdCIpOworICAgIH0KICAgICByZXR1cm4gUG9saWN5Ojp2YWx1
ZSgmKml0KTsKICAgfQogCiAgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzIFAg
PSBQb2xpY3k+CiAgIE1hcHBlZENvbnN0UmVmZXJlbmNlPFA+IGF0KGNvbnN0IGtleV9hcmc8Sz4m
IGtleSkgY29uc3QgewogICAgIGF1dG8gaXQgPSB0aGlzLT5maW5kKGtleSk7Ci0gICAgaWYgKGl0
ID09IHRoaXMtPmVuZCgpKSBzdGQ6OmFib3J0KCk7CisgICAgaWYgKGl0ID09IHRoaXMtPmVuZCgp
KSB7CisgICAgICBiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoCisgICAgICAgICAg
ImFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6cmF3X2hhc2hfbWFwPD46OmF0Iik7CisgICAgfQog
ICAgIHJldHVybiBQb2xpY3k6OnZhbHVlKCYqaXQpOwogICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvcmF3X2hhc2hfc2V0LmNjCmluZGV4IDEwMTUzMTI5ZmQxZTZlYmU3NTEzMDA5ZWE4NDIz
ZmRlYzQ1ZTM2MzQuLmFjMmQxMGE3NjY2YzE2YmUxMGRhZjY3YjJmOTZmMGIwZjY0MmIzNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5jYwpAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQsNiArMTQsNyBAQAogCiAjaW5jbHVkZSAi
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiCiAKKyNpbmNsdWRlIDxhdG9t
aWM+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIK
QEAgLTI5LDcgKzMwLDcgQEAgaW5saW5lIHNpemVfdCBSYW5kb21TZWVkKCkgewogICBzdGF0aWMg
dGhyZWFkX2xvY2FsIHNpemVfdCBjb3VudGVyID0gMDsKICAgc2l6ZV90IHZhbHVlID0gKytjb3Vu
dGVyOwogI2Vsc2UgICAvLyBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMCi0gIHN0YXRpYyBzdGQ6OmF0
b21pYzxzaXplX3Q+IGNvdW50ZXI7CisgIHN0YXRpYyBzdGQ6OmF0b21pYzxzaXplX3Q+IGNvdW50
ZXIoMCk7CiAgIHNpemVfdCB2YWx1ZSA9IGNvdW50ZXIuZmV0Y2hfYWRkKDEsIHN0ZDo6bWVtb3J5
X29yZGVyX3JlbGF4ZWQpOwogI2VuZGlmICAvLyBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMCiAgIHJl
dHVybiB2YWx1ZSBeIHN0YXRpY19jYXN0PHNpemVfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KCZjb3VudGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3
X2hhc2hfc2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgKaW5k
ZXggNzBkYTkwZjc5YTRmYzYzYTk2NzY1ODI3MjdjZmVjYzdlZDhjMmJlNS4uNjU2ZTk4MDZkODk5
NWMxZTk1OWMwNjljZmE0NWM0MDQxYzVkMzBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL3Jhd19oYXNoX3NldC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9y
YXdfaGFzaF9zZXQuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtOTEsMzAgKzkxLDYgQEAKICNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfUkFXX0hB
U0hfU0VUX0hfCiAjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1JBV19IQVNIX1NFVF9I
XwogCi0jaWZuZGVmIFNXSVNTVEFCTEVfSEFWRV9TU0UyCi0jaWZkZWYgX19TU0UyX18KLSNkZWZp
bmUgU1dJU1NUQUJMRV9IQVZFX1NTRTIgMQotI2Vsc2UKLSNkZWZpbmUgU1dJU1NUQUJMRV9IQVZF
X1NTRTIgMAotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBTV0lTU1RBQkxFX0hBVkVfU1NTRTMK
LSNpZmRlZiBfX1NTU0UzX18KLSNkZWZpbmUgU1dJU1NUQUJMRV9IQVZFX1NTU0UzIDEKLSNlbHNl
Ci0jZGVmaW5lIFNXSVNTVEFCTEVfSEFWRV9TU1NFMyAwCi0jZW5kaWYKLSNlbmRpZgotCi0jaWYg
U1dJU1NUQUJMRV9IQVZFX1NTU0UzICYmICFTV0lTU1RBQkxFX0hBVkVfU1NFMgotI2Vycm9yICJC
YWQgY29uZmlndXJhdGlvbiEiCi0jZW5kaWYKLQotI2lmIFNXSVNTVEFCTEVfSEFWRV9TU0UyCi0j
aW5jbHVkZSA8eDg2aW50cmluLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxjc3RkaW50PgpAQCAtMTI5LDE0ICsxMDUsMTYgQEAK
ICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvYml0cy5oIgogI2luY2x1ZGUgImFic2wvYmFz
ZS9pbnRlcm5hbC9lbmRpYW4uaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIgorI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbW1vbi5oIgogI2luY2x1ZGUgImFic2wvY29u
dGFpbmVyL2ludGVybmFsL2NvbXByZXNzZWRfdHVwbGUuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzLmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tzLmgiCisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyLmgiCisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGF2ZV9zc2UuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9sYXlvdXQuaCIKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRl
ICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFs
LmgiCiAjaW5jbHVkZSAiYWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKIAogbmFtZXNwYWNlIGFic2wg
ewpAQCAtMTg3LDEyICsxNjUsNiBAQCBzdHJ1Y3QgSXNEZWNvbXBvc2FibGU8CiAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpkZWNsdmFsPFRzPigpLi4uKSk+LAogICAgIFBvbGljeSwgSGFzaCwg
RXEsIFRzLi4uPiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OwogCi10ZW1wbGF0ZSA8Y2xhc3MsIGNsYXNz
ID0gdm9pZD4KLXN0cnVjdCBJc1RyYW5zcGFyZW50IDogc3RkOjpmYWxzZV90eXBlIHt9OwotdGVt
cGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgSXNUcmFuc3BhcmVudDxULCBhYnNsOjp2b2lkX3Q8dHlw
ZW5hbWUgVDo6aXNfdHJhbnNwYXJlbnQ+PgotICAgIDogc3RkOjp0cnVlX3R5cGUge307Ci0KIC8v
IFRPRE8oYWxraXMpOiBTd2l0Y2ggdG8gc3RkOjppc19ub3Rocm93X3N3YXBwYWJsZSB3aGVuIGdj
Yy9jbGFuZyBzdXBwb3J0cyBpdC4KIHRlbXBsYXRlIDxjbGFzcyBUPgogY29uc3RleHByIGJvb2wg
SXNOb1Rocm93U3dhcHBhYmxlKCkgewpAQCAtMjAyLDE0ICsxNzQsMTcgQEAgY29uc3RleHByIGJv
b2wgSXNOb1Rocm93U3dhcHBhYmxlKCkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGludCBU
cmFpbGluZ1plcm9zKFQgeCkgewotICByZXR1cm4gc2l6ZW9mKFQpID09IDggPyBiYXNlX2ludGVy
bmFsOjpDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvNjQoeCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDogYmFzZV9pbnRlcm5hbDo6Q291bnRUcmFpbGluZ1plcm9zTm9uWmVybzMyKHgpOworICBy
ZXR1cm4gc2l6ZW9mKFQpID09IDggPyBiYXNlX2ludGVybmFsOjpDb3VudFRyYWlsaW5nWmVyb3NO
b25aZXJvNjQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oeCkpCisgICAgICAgICAgICAgICAgICAgICAgICA6IGJhc2VfaW50ZXJuYWw6OkNvdW50
VHJhaWxpbmdaZXJvc05vblplcm8zMigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PHVpbnQzMl90Pih4KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogaW50
IExlYWRpbmdaZXJvcyhUIHgpIHsKLSAgcmV0dXJuIHNpemVvZihUKSA9PSA4ID8gYmFzZV9pbnRl
cm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NCh4KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBi
YXNlX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczMyKHgpOworICByZXR1cm4gc2l6ZW9mKFQp
ID09IDgKKyAgICAgICAgICAgICA/IGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHgpKQorICAgICAgICAgICAgIDogYmFzZV9pbnRlcm5hbDo6
Q291bnRMZWFkaW5nWmVyb3MzMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCkpOwogfQogCiAvLyBB
biBhYnN0cmFjdGlvbiBvdmVyIGEgYml0bWFzay4gSXQgcHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8g
aXRlcmF0ZSB0aHJvdWdoIHRoZQpAQCAtMzM3LDEwICszMTIsMjcgQEAgaW5saW5lIGJvb2wgSXNE
ZWxldGVkKGN0cmxfdCBjKSB7IHJldHVybiBjID09IGtEZWxldGVkOyB9CiBpbmxpbmUgYm9vbCBJ
c0VtcHR5T3JEZWxldGVkKGN0cmxfdCBjKSB7IHJldHVybiBjIDwga1NlbnRpbmVsOyB9CiAKICNp
ZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgotc3RydWN0IEdyb3VwIHsKKworLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2Fic2VpbC9hYnNlaWwtY3BwL2lzc3Vlcy8yMDkKKy8vIGh0dHBzOi8vZ2NjLmdudS5v
cmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTg3ODUzCisvLyBfbW1fY21wZ3RfZXBpOCBpcyBi
cm9rZW4gdW5kZXIgR0NDIHdpdGggLWZ1bnNpZ25lZC1jaGFyCisvLyBXb3JrIGFyb3VuZCB0aGlz
IGJ5IHVzaW5nIHRoZSBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbiBvZiBHcm91cAorLy8gd2hlbiB1
c2luZyAtZnVuc2lnbmVkLWNoYXIgdW5kZXIgR0NDLgoraW5saW5lIF9fbTEyOGkgX21tX2NtcGd0
X2VwaThfZml4ZWQoX19tMTI4aSBhLCBfX20xMjhpIGIpIHsKKyNpZiBkZWZpbmVkKF9fR05VQ19f
KSAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgIGlmIChzdGQ6OmlzX3Vuc2lnbmVkPGNoYXI+Ojp2
YWx1ZSkgeworICAgIGNvbnN0IF9fbTEyOGkgbWFzayA9IF9tbV9zZXQxX2VwaTgoMHg4MCk7Cisg
ICAgY29uc3QgX19tMTI4aSBkaWZmID0gX21tX3N1YnNfZXBpOChiLCBhKTsKKyAgICByZXR1cm4g
X21tX2NtcGVxX2VwaTgoX21tX2FuZF9zaTEyOChkaWZmLCBtYXNrKSwgbWFzayk7CisgIH0KKyNl
bmRpZgorICByZXR1cm4gX21tX2NtcGd0X2VwaTgoYSwgYik7Cit9CisKK3N0cnVjdCBHcm91cFNz
ZTJJbXBsIHsKICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1dpZHRoID0gMTY7ICAvLyB0aGUg
bnVtYmVyIG9mIHNsb3RzIHBlciBncm91cAogCi0gIGV4cGxpY2l0IEdyb3VwKGNvbnN0IGN0cmxf
dCogcG9zKSB7CisgIGV4cGxpY2l0IEdyb3VwU3NlMkltcGwoY29uc3QgY3RybF90KiBwb3MpIHsK
ICAgICBjdHJsID0gX21tX2xvYWR1X3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgX19tMTI4
aSo+KHBvcykpOwogICB9CiAKQEAgLTM1OCw3ICszNTAsNyBAQCBzdHJ1Y3QgR3JvdXAgewogICAg
IHJldHVybiBCaXRNYXNrPHVpbnQzMl90LCBrV2lkdGg+KAogICAgICAgICBfbW1fbW92ZW1hc2tf
ZXBpOChfbW1fc2lnbl9lcGk4KGN0cmwsIGN0cmwpKSk7CiAjZWxzZQotICAgIHJldHVybiBNYXRj
aChrRW1wdHkpOworICAgIHJldHVybiBNYXRjaChzdGF0aWNfY2FzdDxoMl90PihrRW1wdHkpKTsK
ICNlbmRpZgogICB9CiAKQEAgLTM2NiwyMyArMzU4LDI0IEBAIHN0cnVjdCBHcm91cCB7CiAgIEJp
dE1hc2s8dWludDMyX3QsIGtXaWR0aD4gTWF0Y2hFbXB0eU9yRGVsZXRlZCgpIGNvbnN0IHsKICAg
ICBhdXRvIHNwZWNpYWwgPSBfbW1fc2V0MV9lcGk4KGtTZW50aW5lbCk7CiAgICAgcmV0dXJuIEJp
dE1hc2s8dWludDMyX3QsIGtXaWR0aD4oCi0gICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KF9tbV9j
bXBndF9lcGk4KHNwZWNpYWwsIGN0cmwpKSk7CisgICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KF9t
bV9jbXBndF9lcGk4X2ZpeGVkKHNwZWNpYWwsIGN0cmwpKSk7CiAgIH0KIAogICAvLyBSZXR1cm5z
IHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgZW1wdHkgb3IgZGVsZXRlZCBlbGVtZW50cyBpbiB0aGUg
Z3JvdXAuCiAgIHVpbnQzMl90IENvdW50TGVhZGluZ0VtcHR5T3JEZWxldGVkKCkgY29uc3Qgewog
ICAgIGF1dG8gc3BlY2lhbCA9IF9tbV9zZXQxX2VwaTgoa1NlbnRpbmVsKTsKLSAgICByZXR1cm4g
VHJhaWxpbmdaZXJvcyhfbW1fbW92ZW1hc2tfZXBpOChfbW1fY21wZ3RfZXBpOChzcGVjaWFsLCBj
dHJsKSkgKyAxKTsKKyAgICByZXR1cm4gVHJhaWxpbmdaZXJvcygKKyAgICAgICAgX21tX21vdmVt
YXNrX2VwaTgoX21tX2NtcGd0X2VwaThfZml4ZWQoc3BlY2lhbCwgY3RybCkpICsgMSk7CiAgIH0K
IAogICB2b2lkIENvbnZlcnRTcGVjaWFsVG9FbXB0eUFuZEZ1bGxUb0RlbGV0ZWQoY3RybF90KiBk
c3QpIGNvbnN0IHsKLSAgICBhdXRvIG1zYnMgPSBfbW1fc2V0MV9lcGk4KDB4ODApOworICAgIGF1
dG8gbXNicyA9IF9tbV9zZXQxX2VwaTgoc3RhdGljX2Nhc3Q8Y2hhcj4oLTEyOCkpOwogICAgIGF1
dG8geDEyNiA9IF9tbV9zZXQxX2VwaTgoMTI2KTsKICNpZiBTV0lTU1RBQkxFX0hBVkVfU1NTRTMK
ICAgICBhdXRvIHJlcyA9IF9tbV9vcl9zaTEyOChfbW1fc2h1ZmZsZV9lcGk4KHgxMjYsIGN0cmwp
LCBtc2JzKTsKICNlbHNlCiAgICAgYXV0byB6ZXJvID0gX21tX3NldHplcm9fc2kxMjgoKTsKLSAg
ICBhdXRvIHNwZWNpYWxfbWFzayA9IF9tbV9jbXBndF9lcGk4KHplcm8sIGN0cmwpOworICAgIGF1
dG8gc3BlY2lhbF9tYXNrID0gX21tX2NtcGd0X2VwaThfZml4ZWQoemVybywgY3RybCk7CiAgICAg
YXV0byByZXMgPSBfbW1fb3Jfc2kxMjgobXNicywgX21tX2FuZG5vdF9zaTEyOChzcGVjaWFsX21h
c2ssIHgxMjYpKTsKICNlbmRpZgogICAgIF9tbV9zdG9yZXVfc2kxMjgocmVpbnRlcnByZXRfY2Fz
dDxfX20xMjhpKj4oZHN0KSwgcmVzKTsKQEAgLTM5MCwxMSArMzgzLDEzIEBAIHN0cnVjdCBHcm91
cCB7CiAKICAgX19tMTI4aSBjdHJsOwogfTsKLSNlbHNlCi1zdHJ1Y3QgR3JvdXAgeworI2VuZGlm
ICAvLyBTV0lTU1RBQkxFX0hBVkVfU1NFMgorCitzdHJ1Y3QgR3JvdXBQb3J0YWJsZUltcGwgewog
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrV2lkdGggPSA4OwogCi0gIGV4cGxpY2l0IEdyb3Vw
KGNvbnN0IGN0cmxfdCogcG9zKSA6IGN0cmwobGl0dGxlX2VuZGlhbjo6TG9hZDY0KHBvcykpIHt9
CisgIGV4cGxpY2l0IEdyb3VwUG9ydGFibGVJbXBsKGNvbnN0IGN0cmxfdCogcG9zKQorICAgICAg
OiBjdHJsKGxpdHRsZV9lbmRpYW46OkxvYWQ2NChwb3MpKSB7fQogCiAgIEJpdE1hc2s8dWludDY0
X3QsIGtXaWR0aCwgMz4gTWF0Y2goaDJfdCBoYXNoKSBjb25zdCB7CiAgICAgLy8gRm9yIHRoZSB0
ZWNobmlxdWUsIHNlZToKQEAgLTQ0MSwxNSArNDM2LDE3IEBAIHN0cnVjdCBHcm91cCB7CiAKICAg
dWludDY0X3QgY3RybDsKIH07Ci0jZW5kaWYgIC8vIFNXSVNTVEFCTEVfSEFWRV9TU0UyCisKKyNp
ZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgordXNpbmcgR3JvdXAgPSBHcm91cFNzZTJJbXBsOworI2Vs
c2UKK3VzaW5nIEdyb3VwID0gR3JvdXBQb3J0YWJsZUltcGw7CisjZW5kaWYKIAogdGVtcGxhdGUg
PGNsYXNzIFBvbGljeSwgY2xhc3MgSGFzaCwgY2xhc3MgRXEsIGNsYXNzIEFsbG9jPgogY2xhc3Mg
cmF3X2hhc2hfc2V0OwogCi0KLWlubGluZSBib29sIElzVmFsaWRDYXBhY2l0eShzaXplX3Qgbikg
ewotICByZXR1cm4gKChuICsgMSkgJiBuKSA9PSAwICYmIG4gPj0gR3JvdXA6OmtXaWR0aCAtIDE7
Ci19CitpbmxpbmUgYm9vbCBJc1ZhbGlkQ2FwYWNpdHkoc2l6ZV90IG4pIHsgcmV0dXJuICgobiAr
IDEpICYgbikgPT0gMCAmJiBuID4gMDsgfQogCiAvLyBQUkVDT05ESVRJT046CiAvLyAgIElzVmFs
aWRDYXBhY2l0eShjYXBhY2l0eSkKQEAgLTQ3MSwxNTIgKzQ2OCwzMiBAQCBpbmxpbmUgdm9pZCBD
b252ZXJ0RGVsZXRlZFRvRW1wdHlBbmRGdWxsVG9EZWxldGVkKAogICBjdHJsW2NhcGFjaXR5XSA9
IGtTZW50aW5lbDsKIH0KIAotLy8gUm91bmRzIHVwIHRoZSBjYXBhY2l0eSB0byB0aGUgbmV4dCBw
b3dlciBvZiAyIG1pbnVzIDEgYW5kIGVuc3VyZXMgaXQgaXMKLS8vIGdyZWF0ZXIgb3IgZXF1YWwg
dG8gR3JvdXA6OmtXaWR0aCAtIDEuCisvLyBSb3VuZHMgdXAgdGhlIGNhcGFjaXR5IHRvIHRoZSBu
ZXh0IHBvd2VyIG9mIDIgbWludXMgMSwgd2l0aCBhIG1pbmltdW0gb2YgMS4KIGlubGluZSBzaXpl
X3QgTm9ybWFsaXplQ2FwYWNpdHkoc2l6ZV90IG4pIHsKLSAgY29uc3RleHByIHNpemVfdCBrTWlu
Q2FwYWNpdHkgPSBHcm91cDo6a1dpZHRoIC0gMTsKLSAgcmV0dXJuIG4gPD0ga01pbkNhcGFjaXR5
Ci0gICAgICAgICAgICAgPyBrTWluQ2FwYWNpdHkKLSAgICAgICAgICAgICA6IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgPj4gTGVhZGluZ1plcm9zKG4pOworICByZXR1cm4gbiA/
IH5zaXplX3R7fSA+PiBMZWFkaW5nWmVyb3MobikgOiAxOwogfQogCi0vLyBUaGUgbm9kZV9oYW5k
bGUgY29uY2VwdCBmcm9tIEMrKzE3LgotLy8gV2Ugc3BlY2lhbGl6ZSBub2RlX2hhbmRsZSBmb3Ig
c2V0cyBhbmQgbWFwcy4gbm9kZV9oYW5kbGVfYmFzZSBob2xkcyB0aGUKLS8vIGNvbW1vbiBBUEkg
b2YgYm90aC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBQb2xpY3ksIHR5cGVuYW1lIEFsbG9jPgotY2xh
c3Mgbm9kZV9oYW5kbGVfYmFzZSB7Ci0gcHJvdGVjdGVkOgotICB1c2luZyBQb2xpY3lUcmFpdHMg
PSBoYXNoX3BvbGljeV90cmFpdHM8UG9saWN5PjsKLSAgdXNpbmcgc2xvdF90eXBlID0gdHlwZW5h
bWUgUG9saWN5VHJhaXRzOjpzbG90X3R5cGU7Ci0KLSBwdWJsaWM6Ci0gIHVzaW5nIGFsbG9jYXRv
cl90eXBlID0gQWxsb2M7Ci0KLSAgY29uc3RleHByIG5vZGVfaGFuZGxlX2Jhc2UoKSB7fQotICBu
b2RlX2hhbmRsZV9iYXNlKG5vZGVfaGFuZGxlX2Jhc2UmJiBvdGhlcikgbm9leGNlcHQgewotICAg
ICp0aGlzID0gc3RkOjptb3ZlKG90aGVyKTsKLSAgfQotICB+bm9kZV9oYW5kbGVfYmFzZSgpIHsg
ZGVzdHJveSgpOyB9Ci0gIG5vZGVfaGFuZGxlX2Jhc2UmIG9wZXJhdG9yPShub2RlX2hhbmRsZV9i
YXNlJiYgb3RoZXIpIHsKLSAgICBkZXN0cm95KCk7Ci0gICAgaWYgKCFvdGhlci5lbXB0eSgpKSB7
Ci0gICAgICBhbGxvY18gPSBvdGhlci5hbGxvY187Ci0gICAgICBQb2xpY3lUcmFpdHM6OnRyYW5z
ZmVyKGFsbG9jKCksIHNsb3QoKSwgb3RoZXIuc2xvdCgpKTsKLSAgICAgIG90aGVyLnJlc2V0KCk7
Ci0gICAgfQotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIGJvb2wgZW1wdHkoKSBjb25zdCBu
b2V4Y2VwdCB7IHJldHVybiAhYWxsb2NfOyB9Ci0gIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiAhZW1wdHkoKTsgfQotICBhbGxvY2F0b3JfdHlwZSBnZXRf
YWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gKmFsbG9jXzsgfQotCi0gcHJvdGVjdGVkOgotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWU+Ci0gIGZyaWVu
ZCBjbGFzcyByYXdfaGFzaF9zZXQ7Ci0KLSAgbm9kZV9oYW5kbGVfYmFzZShjb25zdCBhbGxvY2F0
b3JfdHlwZSYgYSwgc2xvdF90eXBlKiBzKSA6IGFsbG9jXyhhKSB7Ci0gICAgUG9saWN5VHJhaXRz
Ojp0cmFuc2ZlcihhbGxvYygpLCBzbG90KCksIHMpOwotICB9Ci0KLSAgdm9pZCBkZXN0cm95KCkg
ewotICAgIGlmICghZW1wdHkoKSkgewotICAgICAgUG9saWN5VHJhaXRzOjpkZXN0cm95KGFsbG9j
KCksIHNsb3QoKSk7Ci0gICAgICByZXNldCgpOwotICAgIH0KLSAgfQotCi0gIHZvaWQgcmVzZXQo
KSB7Ci0gICAgYXNzZXJ0KGFsbG9jXy5oYXNfdmFsdWUoKSk7Ci0gICAgYWxsb2NfID0gYWJzbDo6
bnVsbG9wdDsKLSAgfQotCi0gIHNsb3RfdHlwZSogc2xvdCgpIGNvbnN0IHsKLSAgICBhc3NlcnQo
IWVtcHR5KCkpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHNsb3RfdHlwZSo+KHN0ZDo6
YWRkcmVzc29mKHNsb3Rfc3BhY2VfKSk7Ci0gIH0KLSAgYWxsb2NhdG9yX3R5cGUqIGFsbG9jKCkg
eyByZXR1cm4gc3RkOjphZGRyZXNzb2YoKmFsbG9jXyk7IH0KLQotIHByaXZhdGU6Ci0gIGFic2w6
Om9wdGlvbmFsPGFsbG9jYXRvcl90eXBlPiBhbGxvY187Ci0gIG11dGFibGUgYWJzbDo6YWxpZ25l
ZF9zdG9yYWdlX3Q8c2l6ZW9mKHNsb3RfdHlwZSksIGFsaWdub2Yoc2xvdF90eXBlKT4KLSAgICAg
IHNsb3Rfc3BhY2VfOwotfTsKLQotLy8gRm9yIHNldHMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUG9s
aWN5LCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgPSB2b2lkPgotY2xhc3Mgbm9kZV9oYW5kbGUg
OiBwdWJsaWMgbm9kZV9oYW5kbGVfYmFzZTxQb2xpY3ksIEFsbG9jPiB7Ci0gIHVzaW5nIEJhc2Ug
PSB0eXBlbmFtZSBub2RlX2hhbmRsZTo6bm9kZV9oYW5kbGVfYmFzZTsKLQotIHB1YmxpYzoKLSAg
dXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIEJhc2U6OlBvbGljeVRyYWl0czo6dmFsdWVfdHlw
ZTsKLQotICBjb25zdGV4cHIgbm9kZV9oYW5kbGUoKSB7fQotCi0gIHZhbHVlX3R5cGUmIHZhbHVl
KCkgY29uc3QgewotICAgIHJldHVybiBCYXNlOjpQb2xpY3lUcmFpdHM6OmVsZW1lbnQodGhpcy0+
c2xvdCgpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFt
ZSwgdHlwZW5hbWUsIHR5cGVuYW1lPgotICBmcmllbmQgY2xhc3MgcmF3X2hhc2hfc2V0OwotCi0g
IG5vZGVfaGFuZGxlKGNvbnN0IEFsbG9jJiBhLCB0eXBlbmFtZSBCYXNlOjpzbG90X3R5cGUqIHMp
IDogQmFzZShhLCBzKSB7fQotfTsKLQotLy8gRm9yIG1hcHMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
UG9saWN5LCB0eXBlbmFtZSBBbGxvYz4KLWNsYXNzIG5vZGVfaGFuZGxlPFBvbGljeSwgQWxsb2Ms
IGFic2w6OnZvaWRfdDx0eXBlbmFtZSBQb2xpY3k6Om1hcHBlZF90eXBlPj4KLSAgICA6IHB1Ymxp
YyBub2RlX2hhbmRsZV9iYXNlPFBvbGljeSwgQWxsb2M+IHsKLSAgdXNpbmcgQmFzZSA9IHR5cGVu
YW1lIG5vZGVfaGFuZGxlOjpub2RlX2hhbmRsZV9iYXNlOwotCi0gcHVibGljOgotICB1c2luZyBr
ZXlfdHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6a2V5X3R5cGU7Ci0gIHVzaW5nIG1hcHBlZF90eXBl
ID0gdHlwZW5hbWUgUG9saWN5OjptYXBwZWRfdHlwZTsKLQotICBjb25zdGV4cHIgbm9kZV9oYW5k
bGUoKSB7fQotCi0gIGF1dG8ga2V5KCkgY29uc3QgLT4gZGVjbHR5cGUoQmFzZTo6UG9saWN5VHJh
aXRzOjprZXkodGhpcy0+c2xvdCgpKSkgewotICAgIHJldHVybiBCYXNlOjpQb2xpY3lUcmFpdHM6
OmtleSh0aGlzLT5zbG90KCkpOwotICB9Ci0KLSAgbWFwcGVkX3R5cGUmIG1hcHBlZCgpIGNvbnN0
IHsKLSAgICByZXR1cm4gQmFzZTo6UG9saWN5VHJhaXRzOjp2YWx1ZSgKLSAgICAgICAgJkJhc2U6
OlBvbGljeVRyYWl0czo6ZWxlbWVudCh0aGlzLT5zbG90KCkpKTsKKy8vIFdlIHVzZSA3Lzh0aCBh
cyBtYXhpbXVtIGxvYWQgZmFjdG9yLgorLy8gRm9yIDE2LXdpZGUgZ3JvdXBzLCB0aGF0IGdpdmVz
IGFuIGF2ZXJhZ2Ugb2YgdHdvIGVtcHR5IHNsb3RzIHBlciBncm91cC4KK2lubGluZSBzaXplX3Qg
Q2FwYWNpdHlUb0dyb3d0aChzaXplX3QgY2FwYWNpdHkpIHsKKyAgYXNzZXJ0KElzVmFsaWRDYXBh
Y2l0eShjYXBhY2l0eSkpOworICAvLyBgY2FwYWNpdHkqNy84YAorICBpZiAoR3JvdXA6OmtXaWR0
aCA9PSA4ICYmIGNhcGFjaXR5ID09IDcpIHsKKyAgICAvLyB4LXgvOCBkb2VzIG5vdCB3b3JrIHdo
ZW4geD09Ny4KKyAgICByZXR1cm4gNjsKICAgfQotCi0gcHJpdmF0ZToKLSAgdGVtcGxhdGUgPHR5
cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lPgotICBmcmllbmQgY2xhc3MgcmF3
X2hhc2hfc2V0OwotCi0gIG5vZGVfaGFuZGxlKGNvbnN0IEFsbG9jJiBhLCB0eXBlbmFtZSBCYXNl
OjpzbG90X3R5cGUqIHMpIDogQmFzZShhLCBzKSB7fQotfTsKLQotLy8gSW1wbGVtZW50IHRoZSBp
bnNlcnRfcmV0dXJuX3R5cGU8PiBjb25jZXB0IG9mIEMrKzE3LgotdGVtcGxhdGUgPGNsYXNzIEl0
ZXJhdG9yLCBjbGFzcyBOb2RlVHlwZT4KLXN0cnVjdCBpbnNlcnRfcmV0dXJuX3R5cGUgewotICBJ
dGVyYXRvciBwb3NpdGlvbjsKLSAgYm9vbCBpbnNlcnRlZDsKLSAgTm9kZVR5cGUgbm9kZTsKLX07
Ci0KLS8vIEhlbHBlciB0cmFpdCB0byBhbGxvdyBvciBkaXNhbGxvdyBhcmJpdHJhcnkga2V5cyB3
aGVuIHRoZSBoYXNoIGFuZAotLy8gZXEgZnVuY3Rpb25zIGFyZSB0cmFuc3BhcmVudC4KLS8vIEl0
IGlzIHZlcnkgaW1wb3J0YW50IHRoYXQgdGhlIGlubmVyIHRlbXBsYXRlIGlzIGFuIGFsaWFzIGFu
ZCB0aGF0IHRoZSB0eXBlIGl0Ci0vLyBwcm9kdWNlcyBpcyBub3QgYSBkZXBlbmRlbnQgdHlwZS4g
T3RoZXJ3aXNlLCB0eXBlIGRlZHVjdGlvbiB3b3VsZCBmYWlsLgotdGVtcGxhdGUgPGJvb2wgaXNf
dHJhbnNwYXJlbnQ+Ci1zdHJ1Y3QgS2V5QXJnIHsKLSAgLy8gVHJhbnNwYXJlbnQuIEZvcndhcmQg
YEtgLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUga2V5X3R5cGU+Ci0gIHVzaW5n
IHR5cGUgPSBLOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBLZXlBcmc8ZmFsc2U+IHsKLSAg
Ly8gTm90IHRyYW5zcGFyZW50LiBBbHdheXMgdXNlIGBrZXlfdHlwZWAuCi0gIHRlbXBsYXRlIDx0
eXBlbmFtZSBLLCB0eXBlbmFtZSBrZXlfdHlwZT4KLSAgdXNpbmcgdHlwZSA9IGtleV90eXBlOwot
fTsKKyAgcmV0dXJuIGNhcGFjaXR5IC0gY2FwYWNpdHkgLyA4OworfQorLy8gRnJvbSBkZXNpcmVk
ICJncm93dGgiIHRvIGEgbG93ZXJib3VuZCBvZiB0aGUgbmVjZXNzYXJ5IGNhcGFjaXR5LgorLy8g
TWlnaHQgbm90IGJlIGEgdmFsaWQgb25lIGFuZCByZXF1aXJlZCBOb3JtYWxpemVDYXBhY2l0eSgp
LgoraW5saW5lIHNpemVfdCBHcm93dGhUb0xvd2VyYm91bmRDYXBhY2l0eShzaXplX3QgZ3Jvd3Ro
KSB7CisgIC8vIGBncm93dGgqOC83YAorICBpZiAoR3JvdXA6OmtXaWR0aCA9PSA4ICYmIGdyb3d0
aCA9PSA3KSB7CisgICAgLy8geCsoeC0xKS83IGRvZXMgbm90IHdvcmsgd2hlbiB4PT03LgorICAg
IHJldHVybiA4OworICB9CisgIHJldHVybiBncm93dGggKyBzdGF0aWNfY2FzdDxzaXplX3Q+KChz
dGF0aWNfY2FzdDxpbnQ2NF90Pihncm93dGgpIC0gMSkgLyA3KTsKK30KIAogLy8gUG9saWN5OiBh
IHBvbGljeSBkZWZpbmVzIGhvdyB0byBwZXJmb3JtIGRpZmZlcmVudCBvcGVyYXRpb25zIG9uCiAv
LyB0aGUgc2xvdHMgb2YgdGhlIGhhc2h0YWJsZSAoc2VlIGhhc2hfcG9saWN5X3RyYWl0cy5oIGZv
ciB0aGUgZnVsbCBpbnRlcmZhY2UKQEAgLTYzMiwxNCArNTA5LDE0IEBAIHN0cnVjdCBLZXlBcmc8
ZmFsc2U+IHsKIC8vIGlmIHRoZXkgYXJlIGVxdWFsLCBmYWxzZSBpZiB0aGV5IGFyZSBub3QuIElm
IHR3byBrZXlzIGNvbXBhcmUgZXF1YWwsIHRoZW4KIC8vIHRoZWlyIGhhc2ggdmFsdWVzIGFzIGRl
ZmluZWQgYnkgSGFzaCBNVVNUIGJlIGVxdWFsLgogLy8KLS8vIEFsbG9jYXRvcjogYW4gQWxsb2Nh
dG9yIFtodHRwOi8vZGV2ZG9jcy5pby9jcHAvY29uY2VwdC9hbGxvY2F0b3JdIHdpdGggd2hpY2gK
Ky8vIEFsbG9jYXRvcjogYW4gQWxsb2NhdG9yIFtodHRwczovL2RldmRvY3MuaW8vY3BwL2NvbmNl
cHQvYWxsb2NhdG9yXSB3aXRoIHdoaWNoCiAvLyB0aGUgc3RvcmFnZSBvZiB0aGUgaGFzaHRhYmxl
IHdpbGwgYmUgYWxsb2NhdGVkIGFuZCB0aGUgZWxlbWVudHMgd2lsbCBiZQogLy8gY29uc3RydWN0
ZWQgYW5kIGRlc3Ryb3llZC4KIHRlbXBsYXRlIDxjbGFzcyBQb2xpY3ksIGNsYXNzIEhhc2gsIGNs
YXNzIEVxLCBjbGFzcyBBbGxvYz4KIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgIHVzaW5nIFBvbGlj
eVRyYWl0cyA9IGhhc2hfcG9saWN5X3RyYWl0czxQb2xpY3k+OwotICB1c2luZyBLZXlBcmdJbXBs
ID0gY29udGFpbmVyX2ludGVybmFsOjpLZXlBcmc8SXNUcmFuc3BhcmVudDxFcT46OnZhbHVlICYm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc1RyYW5z
cGFyZW50PEhhc2g+Ojp2YWx1ZT47CisgIHVzaW5nIEtleUFyZ0ltcGwgPQorICAgICAgS2V5QXJn
PElzVHJhbnNwYXJlbnQ8RXE+Ojp2YWx1ZSAmJiBJc1RyYW5zcGFyZW50PEhhc2g+Ojp2YWx1ZT47
CiAKICBwdWJsaWM6CiAgIHVzaW5nIGluaXRfdHlwZSA9IHR5cGVuYW1lIFBvbGljeVRyYWl0czo6
aW5pdF90eXBlOwpAQCAtNjYyLDcgKzUzOSw3IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgICAg
ICBhbGxvY2F0b3JfdHlwZT46OnRlbXBsYXRlIHJlYmluZF90cmFpdHM8dmFsdWVfdHlwZT46OmNv
bnN0X3BvaW50ZXI7CiAKICAgLy8gQWxpYXMgdXNlZCBmb3IgaGV0ZXJvZ2VuZW91cyBsb29rdXAg
ZnVuY3Rpb25zLgotICAvLyBga2V5X2FyZzxLPmAgZXZhbHVhdGVzIHRvIGBLYCB3aGVuIHRoZSBm
dW5jdG9ycyBhcmUgdHJhbnBhcmVudCBhbmQgdG8KKyAgLy8gYGtleV9hcmc8Sz5gIGV2YWx1YXRl
cyB0byBgS2Agd2hlbiB0aGUgZnVuY3RvcnMgYXJlIHRyYW5zcGFyZW50IGFuZCB0bwogICAvLyBg
a2V5X3R5cGVgIG90aGVyd2lzZS4gSXQgcGVybWl0cyB0ZW1wbGF0ZSBhcmd1bWVudCBkZWR1Y3Rp
b24gb24gYEtgIGZvciB0aGUKICAgLy8gdHJhbnNwYXJlbnQgY2FzZS4KICAgdGVtcGxhdGUgPGNs
YXNzIEs+CkBAIC03ODAsNyArNjU3LDExIEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgICAgfQog
CiAgICAgY3RybF90KiBjdHJsXyA9IG51bGxwdHI7Ci0gICAgc2xvdF90eXBlKiBzbG90XzsKKyAg
ICAvLyBUbyBhdm9pZCB1bmluaXRpYWxpemVkIG1lbWJlciB3YXJuaWdzLCBwdXQgc2xvdF8gaW4g
YW4gYW5vbnltb3VzIHVuaW9uLgorICAgIC8vIFRoZSBtZW1iZXIgaXMgbm90IGluaXRpYWxpemVk
IG9uIHNpbmdsZXRvbiBhbmQgZW5kIGl0ZXJhdG9ycy4KKyAgICB1bmlvbiB7CisgICAgICBzbG90
X3R5cGUqIHNsb3RfOworICAgIH07CiAgIH07CiAKICAgY2xhc3MgY29uc3RfaXRlcmF0b3IgewpA
QCAtODIwLDcgKzcwMSw4IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgICAgaXRlcmF0b3IgaW5u
ZXJfOwogICB9OwogCi0gIHVzaW5nIG5vZGVfdHlwZSA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6bm9k
ZV9oYW5kbGU8UG9saWN5LCBBbGxvYz47CisgIHVzaW5nIG5vZGVfdHlwZSA9IG5vZGVfaGFuZGxl
PFBvbGljeSwgaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeT4sIEFsbG9jPjsKKyAgdXNpbmcgaW5z
ZXJ0X3JldHVybl90eXBlID0gSW5zZXJ0UmV0dXJuVHlwZTxpdGVyYXRvciwgbm9kZV90eXBlPjsK
IAogICByYXdfaGFzaF9zZXQoKSBub2V4Y2VwdCgKICAgICAgIHN0ZDo6aXNfbm90aHJvd19kZWZh
dWx0X2NvbnN0cnVjdGlibGU8aGFzaGVyPjo6dmFsdWUmJgpAQCAtODMzLDcgKzcxNSw3IEBAIGNs
YXNzIHJhd19oYXNoX3NldCB7CiAgICAgICA6IGN0cmxfKEVtcHR5R3JvdXAoKSksIHNldHRpbmdz
XygwLCBoYXNoLCBlcSwgYWxsb2MpIHsKICAgICBpZiAoYnVja2V0X2NvdW50KSB7CiAgICAgICBj
YXBhY2l0eV8gPSBOb3JtYWxpemVDYXBhY2l0eShidWNrZXRfY291bnQpOwotICAgICAgZ3Jvd3Ro
X2xlZnQoKSA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2FwYWNpdHlfICoga01heExvYWRGYWN0b3Ip
OworICAgICAgcmVzZXRfZ3Jvd3RoX2xlZnQoKTsKICAgICAgIGluaXRpYWxpemVfc2xvdHMoKTsK
ICAgICB9CiAgIH0KQEAgLTg3NSw4ICs3NTcsOCBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewogICAv
LyB0aGF0IGFjY2VwdCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gYW5kIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxpbml0X3R5cGU+LgogICAvLyBUaGlzIGlzIGFkdmFudGFnZW91cyBmb3IgcGVyZm9y
bWFuY2UuCiAgIC8vCi0gIC8vICAgLy8gVHVybnMgeyJhYmMiLCAiZGVmIn0gaW50byBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8c3RkOjpzdHJpbmc+LCB0aGVuIGNvcGllcwotICAvLyAgIC8vIHRoZSBz
dHJpbmdzIGludG8gdGhlIHNldC4KKyAgLy8gICAvLyBUdXJucyB7ImFiYyIsICJkZWYifSBpbnRv
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnN0cmluZz4sIHRoZW4KKyAgLy8gICAvLyBjb3Bp
ZXMgdGhlIHN0cmluZ3MgaW50byB0aGUgc2V0LgogICAvLyAgIHN0ZDo6dW5vcmRlcmVkX3NldDxz
dGQ6OnN0cmluZz4gcyA9IHsiYWJjIiwgImRlZiJ9OwogICAvLwogICAvLyAgIC8vIFR1cm5zIHsi
YWJjIiwgImRlZiJ9IGludG8gc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiwgdGhl
bgpAQCAtOTM5LDkgKzgyMSwxMCBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewogICAgIC8vIHRoYW4g
YSBmdWxsIGBpbnNlcnRgLgogICAgIGZvciAoY29uc3QgYXV0byYgdiA6IHRoYXQpIHsKICAgICAg
IGNvbnN0IHNpemVfdCBoYXNoID0gUG9saWN5VHJhaXRzOjphcHBseShIYXNoRWxlbWVudHtoYXNo
X3JlZigpfSwgdik7Ci0gICAgICBjb25zdCBzaXplX3QgaSA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwo
aGFzaCk7Ci0gICAgICBzZXRfY3RybChpLCBIMihoYXNoKSk7Ci0gICAgICBlbXBsYWNlX2F0KGks
IHYpOworICAgICAgYXV0byB0YXJnZXQgPSBmaW5kX2ZpcnN0X25vbl9mdWxsKGhhc2gpOworICAg
ICAgc2V0X2N0cmwodGFyZ2V0Lm9mZnNldCwgSDIoaGFzaCkpOworICAgICAgZW1wbGFjZV9hdCh0
YXJnZXQub2Zmc2V0LCB2KTsKKyAgICAgIGluZm96Xy5SZWNvcmRJbnNlcnQoaGFzaCwgdGFyZ2V0
LnByb2JlX2xlbmd0aCk7CiAgICAgfQogICAgIHNpemVfID0gdGhhdC5zaXplKCk7CiAgICAgZ3Jv
d3RoX2xlZnQoKSAtPSB0aGF0LnNpemUoKTsKQEAgLTk1NSw2ICs4MzgsNyBAQCBjbGFzcyByYXdf
aGFzaF9zZXQgewogICAgICAgICBzbG90c18oYWJzbDo6ZXhjaGFuZ2UodGhhdC5zbG90c18sIG51
bGxwdHIpKSwKICAgICAgICAgc2l6ZV8oYWJzbDo6ZXhjaGFuZ2UodGhhdC5zaXplXywgMCkpLAog
ICAgICAgICBjYXBhY2l0eV8oYWJzbDo6ZXhjaGFuZ2UodGhhdC5jYXBhY2l0eV8sIDApKSwKKyAg
ICAgICAgaW5mb3pfKGFic2w6OmV4Y2hhbmdlKHRoYXQuaW5mb3pfLCBIYXNodGFibGV6SW5mb0hh
bmRsZSgpKSksCiAgICAgICAgIC8vIEhhc2gsIGVxdWFsaXR5IGFuZCBhbGxvY2F0b3IgYXJlIGNv
cGllZCBpbnN0ZWFkIG9mIG1vdmVkIGJlY2F1c2UKICAgICAgICAgLy8gYHRoYXRgIG11c3QgYmUg
bGVmdCB2YWxpZC4gSWYgSGFzaCBpcyBzdGQ6OmZ1bmN0aW9uPEtleT4sIG1vdmluZyBpdAogICAg
ICAgICAvLyB3b3VsZCBjcmVhdGUgYSBudWxscHRyIGZ1bmN0b3IgdGhhdCBjYW5ub3QgYmUgY2Fs
bGVkLgpAQCAtOTc1LDYgKzg1OSw3IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgICAgICBzdGQ6
OnN3YXAoc2l6ZV8sIHRoYXQuc2l6ZV8pOwogICAgICAgc3RkOjpzd2FwKGNhcGFjaXR5XywgdGhh
dC5jYXBhY2l0eV8pOwogICAgICAgc3RkOjpzd2FwKGdyb3d0aF9sZWZ0KCksIHRoYXQuZ3Jvd3Ro
X2xlZnQoKSk7CisgICAgICBzdGQ6OnN3YXAoaW5mb3pfLCB0aGF0LmluZm96Xyk7CiAgICAgfSBl
bHNlIHsKICAgICAgIHJlc2VydmUodGhhdC5zaXplKCkpOwogICAgICAgLy8gTm90ZTogdGhpcyB3
aWxsIGNvcHkgZWxlbWVudHMgb2YgZGVuc2Vfc2V0IGFuZCB1bm9yZGVyZWRfc2V0IGluc3RlYWQg
b2YKQEAgLTEwMjIsOSArOTA3LDkgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgYm9vbCBlbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBzaXplXzsgfQogICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBjYXBhY2l0
eV87IH0KLSAgc2l6ZV90IG1heF9zaXplKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKTsgfQorICBzaXplX3QgbWF4X3NpemUoKSBjb25zdCB7IHJldHVy
biAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgpKCk7IH0KIAotICB2b2lkIGNsZWFy
KCkgeworICBBQlNMX0FUVFJJQlVURV9SRUlOSVRJQUxJWkVTIHZvaWQgY2xlYXIoKSB7CiAgICAg
Ly8gSXRlcmF0aW5nIG92ZXIgdGhpcyBjb250YWluZXIgaXMgTyhidWNrZXRfY291bnQoKSkuIFdo
ZW4gYnVja2V0X2NvdW50KCkKICAgICAvLyBpcyBtdWNoIGdyZWF0ZXIgdGhhbiBzaXplKCksIGl0
ZXJhdGlvbiBiZWNvbWVzIHByb2hpYml0aXZlbHkgZXhwZW5zaXZlLgogICAgIC8vIEZvciBjbGVh
cigpIGl0IGlzIG1vcmUgaW1wb3J0YW50IHRvIHJldXNlIHRoZSBhbGxvY2F0ZWQgYXJyYXkgd2hl
biB0aGUKQEAgLTEwNDIsOSArOTI3LDEwIEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgICAgICB9
CiAgICAgICBzaXplXyA9IDA7CiAgICAgICByZXNldF9jdHJsKCk7Ci0gICAgICBncm93dGhfbGVm
dCgpID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihjYXBhY2l0eV8gKiBrTWF4TG9hZEZhY3Rvcik7Cisg
ICAgICByZXNldF9ncm93dGhfbGVmdCgpOwogICAgIH0KICAgICBhc3NlcnQoZW1wdHkoKSk7Cisg
ICAgaW5mb3pfLlJlY29yZFN0b3JhZ2VDaGFuZ2VkKDAsIGNhcGFjaXR5Xyk7CiAgIH0KIAogICAv
LyBUaGlzIG92ZXJsb2FkIGtpY2tzIGluIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFuIHJ2YWx1ZSBv
ZiBpbnNlcnRhYmxlIGFuZApAQCAtMTA4Myw3ICs5NjksNyBAQCBjbGFzcyByYXdfaGFzaF9zZXQg
ewogICAvLyBUaGlzIG92ZXJsb2FkIGtpY2tzIGluIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFuIHJ2
YWx1ZSBvZiBpbml0X3R5cGUuIEl0cwogICAvLyBwdXJwb3NlIGlzIHRvIGhhbmRsZSBicmFjZS1p
bml0LWxpc3QgYXJndW1lbnRzLgogICAvLwotICAvLyAgIGZsYXRfaGFzaF9zZXQ8c3RkOjpzdHJp
bmcsIGludD4gczsKKyAgLy8gICBmbGF0X2hhc2hfbWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IHM7CiAg
IC8vICAgcy5pbnNlcnQoeyJhYmMiLCA0Mn0pOwogICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+
IGluc2VydChpbml0X3R5cGUmJiB2YWx1ZSkgewogICAgIHJldHVybiBlbXBsYWNlKHN0ZDo6bW92
ZSh2YWx1ZSkpOwpAQCAtMTEyNCwxMyArMTAxMCwxNCBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewog
ICAgIGluc2VydChpbGlzdC5iZWdpbigpLCBpbGlzdC5lbmQoKSk7CiAgIH0KIAotICBpbnNlcnRf
cmV0dXJuX3R5cGU8aXRlcmF0b3IsIG5vZGVfdHlwZT4gaW5zZXJ0KG5vZGVfdHlwZSYmIG5vZGUp
IHsKKyAgaW5zZXJ0X3JldHVybl90eXBlIGluc2VydChub2RlX3R5cGUmJiBub2RlKSB7CiAgICAg
aWYgKCFub2RlKSByZXR1cm4ge2VuZCgpLCBmYWxzZSwgbm9kZV90eXBlKCl9OwotICAgIGNvbnN0
IGF1dG8mIGVsZW0gPSBQb2xpY3lUcmFpdHM6OmVsZW1lbnQobm9kZS5zbG90KCkpOworICAgIGNv
bnN0IGF1dG8mIGVsZW0gPSBQb2xpY3lUcmFpdHM6OmVsZW1lbnQoQ29tbW9uQWNjZXNzOjpHZXRT
bG90KG5vZGUpKTsKICAgICBhdXRvIHJlcyA9IFBvbGljeVRyYWl0czo6YXBwbHkoCi0gICAgICAg
IEluc2VydFNsb3Q8ZmFsc2U+eyp0aGlzLCBzdGQ6Om1vdmUoKm5vZGUuc2xvdCgpKX0sIGVsZW0p
OworICAgICAgICBJbnNlcnRTbG90PGZhbHNlPnsqdGhpcywgc3RkOjptb3ZlKCpDb21tb25BY2Nl
c3M6OkdldFNsb3Qobm9kZSkpfSwKKyAgICAgICAgZWxlbSk7CiAgICAgaWYgKHJlcy5zZWNvbmQp
IHsKLSAgICAgIG5vZGUucmVzZXQoKTsKKyAgICAgIENvbW1vbkFjY2Vzczo6UmVzZXQoJm5vZGUp
OwogICAgICAgcmV0dXJuIHtyZXMuZmlyc3QsIHRydWUsIG5vZGVfdHlwZSgpfTsKICAgICB9IGVs
c2UgewogICAgICAgcmV0dXJuIHtyZXMuZmlyc3QsIGZhbHNlLCBzdGQ6Om1vdmUobm9kZSl9OwpA
QCAtMTI5NCw3ICsxMTgxLDggQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgfQogCiAgIG5vZGVf
dHlwZSBleHRyYWN0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKSB7Ci0gICAgbm9kZV90eXBlIG5v
ZGUoYWxsb2NfcmVmKCksIHBvc2l0aW9uLmlubmVyXy5zbG90Xyk7CisgICAgYXV0byBub2RlID0K
KyAgICAgICAgQ29tbW9uQWNjZXNzOjpUcmFuc2Zlcjxub2RlX3R5cGU+KGFsbG9jX3JlZigpLCBw
b3NpdGlvbi5pbm5lcl8uc2xvdF8pOwogICAgIGVyYXNlX21ldGFfb25seShwb3NpdGlvbik7CiAg
ICAgcmV0dXJuIG5vZGU7CiAgIH0KQEAgLTEzMTksNiArMTIwNyw3IEBAIGNsYXNzIHJhd19oYXNo
X3NldCB7CiAgICAgc3dhcChncm93dGhfbGVmdCgpLCB0aGF0Lmdyb3d0aF9sZWZ0KCkpOwogICAg
IHN3YXAoaGFzaF9yZWYoKSwgdGhhdC5oYXNoX3JlZigpKTsKICAgICBzd2FwKGVxX3JlZigpLCB0
aGF0LmVxX3JlZigpKTsKKyAgICBzd2FwKGluZm96XywgdGhhdC5pbmZvel8pOwogICAgIGlmIChB
bGxvY1RyYWl0czo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZSkgewogICAgICAg
c3dhcChhbGxvY19yZWYoKSwgdGhhdC5hbGxvY19yZWYoKSk7CiAgICAgfSBlbHNlIHsKQEAgLTEz
MjksMTcgKzEyMTgsMjEgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKIAogICB2b2lkIHJlaGFzaChz
aXplX3QgbikgewogICAgIGlmIChuID09IDAgJiYgY2FwYWNpdHlfID09IDApIHJldHVybjsKLSAg
ICBpZiAobiA9PSAwICYmIHNpemVfID09IDApIHJldHVybiBkZXN0cm95X3Nsb3RzKCk7Ci0gICAg
YXV0byBtID0gTm9ybWFsaXplQ2FwYWNpdHkoc3RkOjptYXgobiwgTnVtU2xvdHNGYXN0KHNpemUo
KSkpKTsKKyAgICBpZiAobiA9PSAwICYmIHNpemVfID09IDApIHsKKyAgICAgIGRlc3Ryb3lfc2xv
dHMoKTsKKyAgICAgIGluZm96Xy5SZWNvcmRTdG9yYWdlQ2hhbmdlZCgwLCAwKTsKKyAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgLy8gYml0b3IgaXMgYSBmYXN0ZXIgd2F5IG9mIGRvaW5nIGBtYXhg
IGhlcmUuIFdlIHdpbGwgcm91bmQgdXAgdG8gdGhlIG5leHQKKyAgICAvLyBwb3dlci1vZi0yLW1p
bnVzLTEsIHNvIGJpdG9yIGlzIGdvb2QgZW5vdWdoLgorICAgIGF1dG8gbSA9IE5vcm1hbGl6ZUNh
cGFjaXR5KG4gfCBHcm93dGhUb0xvd2VyYm91bmRDYXBhY2l0eShzaXplKCkpKTsKICAgICAvLyBu
ID09IDAgdW5jb25kaXRpb25hbGx5IHJlaGFzaGVzIGFzIHBlciB0aGUgc3RhbmRhcmQuCiAgICAg
aWYgKG4gPT0gMCB8fCBtID4gY2FwYWNpdHlfKSB7CiAgICAgICByZXNpemUobSk7CiAgICAgfQog
ICB9CiAKLSAgdm9pZCByZXNlcnZlKHNpemVfdCBuKSB7Ci0gICAgcmVoYXNoKE51bVNsb3RzRmFz
dChuKSk7Ci0gIH0KKyAgdm9pZCByZXNlcnZlKHNpemVfdCBuKSB7IHJlaGFzaChHcm93dGhUb0xv
d2VyYm91bmRDYXBhY2l0eShuKSk7IH0KIAogICAvLyBFeHRlbnNpb24gQVBJOiBzdXBwb3J0IGZv
ciBoZXRlcm9nZW5lb3VzIGtleXMuCiAgIC8vCkBAIC0xNTE3LDEzICsxNDEwLDYgQEAgY2xhc3Mg
cmF3X2hhc2hfc2V0IHsKICAgICBzbG90X3R5cGUmJiBzbG90OwogICB9OwogCi0gIC8vIENvbXB1
dGVzIHN0ZDo6Y2VpbChuIC8ga01heExvYWRGYWN0b3IpLiBGYXN0ZXIgdGhhbiBjYWxsaW5nIHN0
ZDo6Y2VpbC4KLSAgc3RhdGljIGlubGluZSBzaXplX3QgTnVtU2xvdHNGYXN0KHNpemVfdCBuKSB7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oCi0gICAgICAgIChuICoga01heExvYWRG
YWN0b3JEZW5vbWluYXRvciArIChrTWF4TG9hZEZhY3Rvck51bWVyYXRvciAtIDEpKSAvCi0gICAg
ICAgIGtNYXhMb2FkRmFjdG9yTnVtZXJhdG9yKTsKLSAgfQotCiAgIC8vICJlcmFzZXMiIHRoZSBv
YmplY3QgZnJvbSB0aGUgY29udGFpbmVyLCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFjdHVhbGx5
CiAgIC8vIGRlc3Ryb3kgdGhlIG9iamVjdC4gSXQgb25seSB1cGRhdGVzIGFsbCB0aGUgbWV0YWRh
dGEgb2YgdGhlIGNsYXNzLgogICAvLyBUaGlzIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdp
dGggUG9saWN5Ojp0cmFuc2ZlciB0byBtb3ZlIHRoZSBvYmplY3QgdG8KQEAgLTE1NDYsMTcgKzE0
MzIsMzQgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKIAogICAgIHNldF9jdHJsKGluZGV4LCB3YXNf
bmV2ZXJfZnVsbCA/IGtFbXB0eSA6IGtEZWxldGVkKTsKICAgICBncm93dGhfbGVmdCgpICs9IHdh
c19uZXZlcl9mdWxsOworICAgIGluZm96Xy5SZWNvcmRFcmFzZSgpOwogICB9CiAKICAgdm9pZCBp
bml0aWFsaXplX3Nsb3RzKCkgewogICAgIGFzc2VydChjYXBhY2l0eV8pOworICAgIC8vIEZvbGtz
IHdpdGggY3VzdG9tIGFsbG9jYXRvcnMgb2Z0ZW4gbWFrZSB1bndhcnJhbnRlZCBhc3N1bXB0aW9u
cyBhYm91dCB0aGUKKyAgICAvLyBiZWhhdmlvciBvZiB0aGVpciBjbGFzc2VzIHZpcy1hLXZpcyB0
cml2aWFsIGRlc3RydWN0YWJpbGl0eSBhbmQgd2hhdAorICAgIC8vIGNhbGxzIHRoZXkgd2lsbCBv
ciB3b250IG1ha2UuICBBdm9pZCBzYW1wbGluZyBmb3IgcGVvcGxlIHdpdGggY3VzdG9tCisgICAg
Ly8gYWxsb2NhdG9ycyB0byBnZXQgdXMgb3V0IG9mIHRoaXMgbWVzcy4gIFRoaXMgaXMgbm90IGEg
aGFyZCBndWFyYW50ZWUgYnV0CisgICAgLy8gYSB3b3JrYXJvdW5kIHdoaWxlIHdlIHBsYW4gdGhl
IGV4YWN0IGd1YXJhbnRlZSB3ZSB3YW50IHRvIHByb3ZpZGUuCisgICAgLy8KKyAgICAvLyBQZW9w
bGUgYXJlIG9mdGVuIHNsb3BweSB3aXRoIHRoZSBleGFjdCB0eXBlIG9mIHRoZWlyIGFsbG9jYXRv
ciAoc29tZXRpbWVzCisgICAgLy8gaXQgaGFzIGFuIGV4dHJhIGNvbnN0IG9yIGlzIG1pc3Npbmcg
dGhlIHBhaXIsIGJ1dCByZWJpbmRzIG1hZGUgaXQgd29yaworICAgIC8vIGFueXdheSkuICBUbyBh
dm9pZCB0aGUgYW1iaWd1aXR5LCB3ZSB3b3JrIG9mZiBTbG90QWxsb2Mgd2hpY2ggd2UgaGF2ZQor
ICAgIC8vIGJvdW5kIG1vcmUgY2FyZWZ1bGx5LgorICAgIGlmIChzdGQ6OmlzX3NhbWU8U2xvdEFs
bG9jLCBzdGQ6OmFsbG9jYXRvcjxzbG90X3R5cGU+Pjo6dmFsdWUgJiYKKyAgICAgICAgc2xvdHNf
ID09IG51bGxwdHIpIHsKKyAgICAgIGluZm96XyA9IFNhbXBsZSgpOworICAgIH0KKwogICAgIGF1
dG8gbGF5b3V0ID0gTWFrZUxheW91dChjYXBhY2l0eV8pOwogICAgIGNoYXIqIG1lbSA9IHN0YXRp
Y19jYXN0PGNoYXIqPigKICAgICAgICAgQWxsb2NhdGU8TGF5b3V0OjpBbGlnbm1lbnQoKT4oJmFs
bG9jX3JlZigpLCBsYXlvdXQuQWxsb2NTaXplKCkpKTsKICAgICBjdHJsXyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y3RybF90Kj4obGF5b3V0LnRlbXBsYXRlIFBvaW50ZXI8MD4obWVtKSk7CiAgICAgc2xv
dHNfID0gbGF5b3V0LnRlbXBsYXRlIFBvaW50ZXI8MT4obWVtKTsKICAgICByZXNldF9jdHJsKCk7
Ci0gICAgZ3Jvd3RoX2xlZnQoKSA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2FwYWNpdHlfICoga01h
eExvYWRGYWN0b3IpIC0gc2l6ZV87CisgICAgcmVzZXRfZ3Jvd3RoX2xlZnQoKTsKKyAgICBpbmZv
el8uUmVjb3JkU3RvcmFnZUNoYW5nZWQoc2l6ZV8sIGNhcGFjaXR5Xyk7CiAgIH0KIAogICB2b2lk
IGRlc3Ryb3lfc2xvdHMoKSB7CkBAIC0xNTg1LDExICsxNDg4LDE0IEBAIGNsYXNzIHJhd19oYXNo
X3NldCB7CiAgICAgY2FwYWNpdHlfID0gbmV3X2NhcGFjaXR5OwogICAgIGluaXRpYWxpemVfc2xv
dHMoKTsKIAorICAgIHNpemVfdCB0b3RhbF9wcm9iZV9sZW5ndGggPSAwOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpICE9IG9sZF9jYXBhY2l0eTsgKytpKSB7CiAgICAgICBpZiAoSXNGdWxsKG9s
ZF9jdHJsW2ldKSkgewogICAgICAgICBzaXplX3QgaGFzaCA9IFBvbGljeVRyYWl0czo6YXBwbHko
SGFzaEVsZW1lbnR7aGFzaF9yZWYoKX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQb2xpY3lUcmFpdHM6OmVsZW1lbnQob2xkX3Nsb3RzICsgaSkpOwotICAgICAg
ICBzaXplX3QgbmV3X2kgPSBmaW5kX2ZpcnN0X25vbl9mdWxsKGhhc2gpOworICAgICAgICBhdXRv
IHRhcmdldCA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAgICAgIHNpemVfdCBuZXdf
aSA9IHRhcmdldC5vZmZzZXQ7CisgICAgICAgIHRvdGFsX3Byb2JlX2xlbmd0aCArPSB0YXJnZXQu
cHJvYmVfbGVuZ3RoOwogICAgICAgICBzZXRfY3RybChuZXdfaSwgSDIoaGFzaCkpOwogICAgICAg
ICBQb2xpY3lUcmFpdHM6OnRyYW5zZmVyKCZhbGxvY19yZWYoKSwgc2xvdHNfICsgbmV3X2ksIG9s
ZF9zbG90cyArIGkpOwogICAgICAgfQpAQCAtMTYwMSwxMCArMTUwNywxMiBAQCBjbGFzcyByYXdf
aGFzaF9zZXQgewogICAgICAgRGVhbGxvY2F0ZTxMYXlvdXQ6OkFsaWdubWVudCgpPigmYWxsb2Nf
cmVmKCksIG9sZF9jdHJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
YXlvdXQuQWxsb2NTaXplKCkpOwogICAgIH0KKyAgICBpbmZvel8uUmVjb3JkUmVoYXNoKHRvdGFs
X3Byb2JlX2xlbmd0aCk7CiAgIH0KIAogICB2b2lkIGRyb3BfZGVsZXRlc193aXRob3V0X3Jlc2l6
ZSgpIEFCU0xfQVRUUklCVVRFX05PSU5MSU5FIHsKICAgICBhc3NlcnQoSXNWYWxpZENhcGFjaXR5
KGNhcGFjaXR5XykpOworICAgIGFzc2VydCghaXNfc21hbGwoKSk7CiAgICAgLy8gQWxnb3JpdGht
OgogICAgIC8vIC0gbWFyayBhbGwgREVMRVRFRCBzbG90cyBhcyBFTVBUWQogICAgIC8vIC0gbWFy
ayBhbGwgRlVMTCBzbG90cyBhcyBERUxFVEVECkBAIC0xNjI0LDEyICsxNTMyLDE1IEBAIGNsYXNz
IHJhd19oYXNoX3NldCB7CiAgICAgQ29udmVydERlbGV0ZWRUb0VtcHR5QW5kRnVsbFRvRGVsZXRl
ZChjdHJsXywgY2FwYWNpdHlfKTsKICAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxz
aXplb2Yoc2xvdF90eXBlKSwgYWxpZ25vZihzbG90X3R5cGUpPjo6dHlwZQogICAgICAgICByYXc7
CisgICAgc2l6ZV90IHRvdGFsX3Byb2JlX2xlbmd0aCA9IDA7CiAgICAgc2xvdF90eXBlKiBzbG90
ID0gcmVpbnRlcnByZXRfY2FzdDxzbG90X3R5cGUqPigmcmF3KTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSAhPSBjYXBhY2l0eV87ICsraSkgewogICAgICAgaWYgKCFJc0RlbGV0ZWQoY3RybF9b
aV0pKSBjb250aW51ZTsKICAgICAgIHNpemVfdCBoYXNoID0gUG9saWN5VHJhaXRzOjphcHBseShI
YXNoRWxlbWVudHtoYXNoX3JlZigpfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQb2xpY3lUcmFpdHM6OmVsZW1lbnQoc2xvdHNfICsgaSkpOwotICAgICAgc2l6ZV90
IG5ld19pID0gZmluZF9maXJzdF9ub25fZnVsbChoYXNoKTsKKyAgICAgIGF1dG8gdGFyZ2V0ID0g
ZmluZF9maXJzdF9ub25fZnVsbChoYXNoKTsKKyAgICAgIHNpemVfdCBuZXdfaSA9IHRhcmdldC5v
ZmZzZXQ7CisgICAgICB0b3RhbF9wcm9iZV9sZW5ndGggKz0gdGFyZ2V0LnByb2JlX2xlbmd0aDsK
IAogICAgICAgLy8gVmVyaWZ5IGlmIHRoZSBvbGQgYW5kIG5ldyBpIGZhbGwgd2l0aGluIHRoZSBz
YW1lIGdyb3VwIHdydCB0aGUgaGFzaC4KICAgICAgIC8vIElmIHRoZXkgZG8sIHdlIGRvbid0IG5l
ZWQgdG8gbW92ZSB0aGUgb2JqZWN0IGFzIGl0IGZhbGxzIGFscmVhZHkgaW4gdGhlCkBAIC0xNjYx
LDEzICsxNTcyLDE0IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgICAgICAgIC0taTsgIC8vIHJl
cGVhdAogICAgICAgfQogICAgIH0KLSAgICBncm93dGhfbGVmdCgpID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihjYXBhY2l0eV8gKiBrTWF4TG9hZEZhY3RvcikgLSBzaXplXzsKKyAgICByZXNldF9ncm93
dGhfbGVmdCgpOworICAgIGluZm96Xy5SZWNvcmRSZWhhc2godG90YWxfcHJvYmVfbGVuZ3RoKTsK
ICAgfQogCiAgIHZvaWQgcmVoYXNoX2FuZF9ncm93X2lmX25lY2Vzc2FyeSgpIHsKICAgICBpZiAo
Y2FwYWNpdHlfID09IDApIHsKLSAgICAgIHJlc2l6ZShHcm91cDo6a1dpZHRoIC0gMSk7Ci0gICAg
fSBlbHNlIGlmIChzaXplKCkgPD0ga01heExvYWRGYWN0b3IgLyAyICogY2FwYWNpdHlfKSB7Cisg
ICAgICByZXNpemUoMSk7CisgICAgfSBlbHNlIGlmIChzaXplKCkgPD0gQ2FwYWNpdHlUb0dyb3d0
aChjYXBhY2l0eSgpKSAvIDIpIHsKICAgICAgIC8vIFNxdWFzaCBERUxFVEVEIHdpdGhvdXQgZ3Jv
d2luZyBpZiB0aGVyZSBpcyBlbm91Z2ggY2FwYWNpdHkuCiAgICAgICBkcm9wX2RlbGV0ZXNfd2l0
aG91dF9yZXNpemUoKTsKICAgICB9IGVsc2UgewpAQCAtMTcwMiwyNCArMTYxNCwyNiBAQCBjbGFz
cyByYXdfaGFzaF9zZXQgewogICAvLyAtIHRoZSBpbnB1dCBpcyBhbHJlYWR5IGEgc2V0CiAgIC8v
IC0gdGhlcmUgYXJlIGVub3VnaCBzbG90cwogICAvLyAtIHRoZSBlbGVtZW50IHdpdGggdGhlIGhh
c2ggaXMgbm90IGluIHRoZSB0YWJsZQotICBzaXplX3QgZmluZF9maXJzdF9ub25fZnVsbChzaXpl
X3QgaGFzaCkgeworICBzdHJ1Y3QgRmluZEluZm8geworICAgIHNpemVfdCBvZmZzZXQ7CisgICAg
c2l6ZV90IHByb2JlX2xlbmd0aDsKKyAgfTsKKyAgRmluZEluZm8gZmluZF9maXJzdF9ub25fZnVs
bChzaXplX3QgaGFzaCkgewogICAgIGF1dG8gc2VxID0gcHJvYmUoaGFzaCk7CiAgICAgd2hpbGUg
KHRydWUpIHsKICAgICAgIEdyb3VwIGd7Y3RybF8gKyBzZXEub2Zmc2V0KCl9OwogICAgICAgYXV0
byBtYXNrID0gZy5NYXRjaEVtcHR5T3JEZWxldGVkKCk7CiAgICAgICBpZiAobWFzaykgewogI2lm
ICFkZWZpbmVkKE5ERUJVRykKLSAgICAgICAgLy8gV2Ugd2FudCB0byBmb3JjZSBzbWFsbCB0YWJs
ZXMgdG8gaGF2ZSByYW5kb20gZW50cmllcyB0b28sIHNvCi0gICAgICAgIC8vIGluIGRlYnVnIGJ1
aWxkIHdlIHdpbGwgcmFuZG9tbHkgaW5zZXJ0IGluIGVpdGhlciB0aGUgZnJvbnQgb3IgYmFjayBv
ZgorICAgICAgICAvLyBXZSB3YW50IHRvIGFkZCBlbnRyb3B5IGV2ZW4gd2hlbiBBU0xSIGlzIG5v
dCBlbmFibGVkLgorICAgICAgICAvLyBJbiBkZWJ1ZyBidWlsZCB3ZSB3aWxsIHJhbmRvbWx5IGlu
c2VydCBpbiBlaXRoZXIgdGhlIGZyb250IG9yIGJhY2sgb2YKICAgICAgICAgLy8gdGhlIGdyb3Vw
LgogICAgICAgICAvLyBUT0RPKGtmbSxzYmVuemEpOiByZXZpc2l0IGFmdGVyIHdlIGRvIHVuY29u
ZGl0aW9uYWwgbWl4aW5nCi0gICAgICAgIGlmIChTaG91bGRJbnNlcnRCYWNrd2FyZHMoaGFzaCwg
Y3RybF8pKQotICAgICAgICAgIHJldHVybiBzZXEub2Zmc2V0KG1hc2suSGlnaGVzdEJpdFNldCgp
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHJldHVybiBzZXEub2Zmc2V0KG1hc2suTG93ZXN0
Qml0U2V0KCkpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIHNlcS5vZmZzZXQobWFzay5Mb3dlc3RC
aXRTZXQoKSk7CisgICAgICAgIGlmICghaXNfc21hbGwoKSAmJiBTaG91bGRJbnNlcnRCYWNrd2Fy
ZHMoaGFzaCwgY3RybF8pKSB7CisgICAgICAgICAgcmV0dXJuIHtzZXEub2Zmc2V0KG1hc2suSGln
aGVzdEJpdFNldCgpKSwgc2VxLmluZGV4KCl9OworICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAg
cmV0dXJuIHtzZXEub2Zmc2V0KG1hc2suTG93ZXN0Qml0U2V0KCkpLCBzZXEuaW5kZXgoKX07CiAg
ICAgICB9CiAgICAgICBhc3NlcnQoc2VxLmluZGV4KCkgPCBjYXBhY2l0eV8gJiYgImZ1bGwgdGFi
bGUhIik7CiAgICAgICBzZXEubmV4dCgpOwpAQCAtMTc1OCwxNSArMTY3MiwxNyBAQCBjbGFzcyBy
YXdfaGFzaF9zZXQgewogICB9CiAKICAgc2l6ZV90IHByZXBhcmVfaW5zZXJ0KHNpemVfdCBoYXNo
KSBBQlNMX0FUVFJJQlVURV9OT0lOTElORSB7Ci0gICAgc2l6ZV90IHRhcmdldCA9IGZpbmRfZmly
c3Rfbm9uX2Z1bGwoaGFzaCk7Ci0gICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShncm93dGhfbGVm
dCgpID09IDAgJiYgIUlzRGVsZXRlZChjdHJsX1t0YXJnZXRdKSkpIHsKKyAgICBhdXRvIHRhcmdl
dCA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxT
RShncm93dGhfbGVmdCgpID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICFJc0Rl
bGV0ZWQoY3RybF9bdGFyZ2V0Lm9mZnNldF0pKSkgewogICAgICAgcmVoYXNoX2FuZF9ncm93X2lm
X25lY2Vzc2FyeSgpOwogICAgICAgdGFyZ2V0ID0gZmluZF9maXJzdF9ub25fZnVsbChoYXNoKTsK
ICAgICB9CiAgICAgKytzaXplXzsKLSAgICBncm93dGhfbGVmdCgpIC09IElzRW1wdHkoY3RybF9b
dGFyZ2V0XSk7Ci0gICAgc2V0X2N0cmwodGFyZ2V0LCBIMihoYXNoKSk7Ci0gICAgcmV0dXJuIHRh
cmdldDsKKyAgICBncm93dGhfbGVmdCgpIC09IElzRW1wdHkoY3RybF9bdGFyZ2V0Lm9mZnNldF0p
OworICAgIHNldF9jdHJsKHRhcmdldC5vZmZzZXQsIEgyKGhhc2gpKTsKKyAgICBpbmZvel8uUmVj
b3JkSW5zZXJ0KGhhc2gsIHRhcmdldC5wcm9iZV9sZW5ndGgpOworICAgIHJldHVybiB0YXJnZXQu
b2Zmc2V0OwogICB9CiAKICAgLy8gQ29uc3RydWN0cyB0aGUgdmFsdWUgaW4gdGhlIHNwYWNlIHBv
aW50ZWQgYnkgdGhlIGl0ZXJhdG9yLiBUaGlzIG9ubHkgd29ya3MKQEAgLTE4MDQsNiArMTcyMCwx
MCBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewogICAgIFNhbml0aXplclBvaXNvbk1lbW9yeVJlZ2lv
bihzbG90c18sIHNpemVvZihzbG90X3R5cGUpICogY2FwYWNpdHlfKTsKICAgfQogCisgIHZvaWQg
cmVzZXRfZ3Jvd3RoX2xlZnQoKSB7CisgICAgZ3Jvd3RoX2xlZnQoKSA9IENhcGFjaXR5VG9Hcm93
dGgoY2FwYWNpdHkoKSkgLSBzaXplXzsKKyAgfQorCiAgIC8vIFNldHMgdGhlIGNvbnRyb2wgYnl0
ZSwgYW5kIGlmIGBpIDwgR3JvdXA6OmtXaWR0aGAsIHNldCB0aGUgY2xvbmVkIGJ5dGUgYXQKICAg
Ly8gdGhlIGVuZCB0b28uCiAgIHZvaWQgc2V0X2N0cmwoc2l6ZV90IGksIGN0cmxfdCBoKSB7CkBA
IC0xODE2LDExICsxNzM2LDI4IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgICAgfQogCiAgICAg
Y3RybF9baV0gPSBoOwotICAgIGN0cmxfWygoaSAtIEdyb3VwOjprV2lkdGgpICYgY2FwYWNpdHlf
KSArIEdyb3VwOjprV2lkdGhdID0gaDsKKyAgICBjdHJsX1soKGkgLSBHcm91cDo6a1dpZHRoKSAm
IGNhcGFjaXR5XykgKyAxICsKKyAgICAgICAgICAoKEdyb3VwOjprV2lkdGggLSAxKSAmIGNhcGFj
aXR5XyldID0gaDsKICAgfQogCiAgIHNpemVfdCYgZ3Jvd3RoX2xlZnQoKSB7IHJldHVybiBzZXR0
aW5nc18udGVtcGxhdGUgZ2V0PDA+KCk7IH0KIAorICAvLyBUaGUgcmVwcmVzZW50YXRpb24gb2Yg
dGhlIG9iamVjdCBoYXMgdHdvIG1vZGVzOgorICAvLyAgLSBzbWFsbDogRm9yIGNhcGFjaXRpZXMg
PCBrV2lkdGgtMQorICAvLyAgLSBsYXJnZTogRm9yIHRoZSByZXN0LgorICAvLworICAvLyBEaWZm
ZXJlbmNlczoKKyAgLy8gIC0gSW4gc21hbGwgbW9kZSB3ZSBhcmUgYWJsZSB0byB1c2UgdGhlIHdo
b2xlIGNhcGFjaXR5LiBUaGUgZXh0cmEgY29udHJvbAorICAvLyAgYnl0ZXMgZ2l2ZSB1cyBhdCBs
ZWFzdCBvbmUgImVtcHR5IiBjb250cm9sIGJ5dGUgdG8gc3RvcCB0aGUgaXRlcmF0aW9uLgorICAv
LyAgVGhpcyBpcyBpbXBvcnRhbnQgdG8gbWFrZSAxIGEgdmFsaWQgY2FwYWNpdHkuCisgIC8vCisg
IC8vICAtIEluIHNtYWxsIG1vZGUgb25seSB0aGUgZmlyc3QgYGNhcGFjaXR5KClgIGNvbnRyb2wg
Ynl0ZXMgYWZ0ZXIgdGhlCisgIC8vICBzZW50aW5lbCBhcmUgdmFsaWQuIFRoZSByZXN0IGNvbnRh
aW4gZHVtbXkga0VtcHR5IHZhbHVlcyB0aGF0IGRvIG5vdAorICAvLyAgcmVwcmVzZW50IGEgcmVh
bCBzbG90LiBUaGlzIGlzIGltcG9ydGFudCB0byB0YWtlIGludG8gYWNjb3VudCBvbgorICAvLyAg
ZmluZF9maXJzdF9ub25fZnVsbCgpLCB3aGVyZSB3ZSBuZXZlciB0cnkgU2hvdWxkSW5zZXJ0QmFj
a3dhcmRzKCkgZm9yCisgIC8vICBzbWFsbCB0YWJsZXMuCisgIGJvb2wgaXNfc21hbGwoKSBjb25z
dCB7IHJldHVybiBjYXBhY2l0eV8gPCBHcm91cDo6a1dpZHRoIC0gMTsgfQorCiAgIGhhc2hlciYg
aGFzaF9yZWYoKSB7IHJldHVybiBzZXR0aW5nc18udGVtcGxhdGUgZ2V0PDE+KCk7IH0KICAgY29u
c3QgaGFzaGVyJiBoYXNoX3JlZigpIGNvbnN0IHsgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBn
ZXQ8MT4oKTsgfQogICBrZXlfZXF1YWwmIGVxX3JlZigpIHsgcmV0dXJuIHNldHRpbmdzXy50ZW1w
bGF0ZSBnZXQ8Mj4oKTsgfQpAQCAtMTgzMCwxMiArMTc2Nyw2IEBAIGNsYXNzIHJhd19oYXNoX3Nl
dCB7CiAgICAgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8Mz4oKTsKICAgfQogCi0gIC8v
IE9uIGF2ZXJhZ2UgZWFjaCBncm91cCBoYXMgMiBlbXB0eSBzbG90IChmb3IgdGhlIHZlY3Rvcml6
ZWQgY2FzZSkuCi0gIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBrTWF4TG9hZEZhY3Rvck51bWVy
YXRvciA9IDE0OwotICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qga01heExvYWRGYWN0b3JEZW5v
bWluYXRvciA9IDE2OwotICBzdGF0aWMgY29uc3RleHByIGZsb2F0IGtNYXhMb2FkRmFjdG9yID0K
LSAgICAgIDEuMCAqIGtNYXhMb2FkRmFjdG9yTnVtZXJhdG9yIC8ga01heExvYWRGYWN0b3JEZW5v
bWluYXRvcjsKLQogICAvLyBUT0RPKGFsa2lzKTogSW52ZXN0aWdhdGUgcmVtb3Zpbmcgc29tZSBv
ZiB0aGVzZSBmaWVsZHM6CiAgIC8vIC0gY3RybC9zbG90cyBjYW4gYmUgZGVyaXZlZCBmcm9tIGVh
Y2ggb3RoZXIKICAgLy8gLSBzaXplIGNhbiBiZSBtb3ZlZCBpbnRvIHRoZSBzbG90IGFycmF5CkBA
IC0xODQzLDYgKzE3NzQsNyBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewogICBzbG90X3R5cGUqIHNs
b3RzXyA9IG51bGxwdHI7ICAgICAvLyBbY2FwYWNpdHkgKiBzbG90X3R5cGVdCiAgIHNpemVfdCBz
aXplXyA9IDA7ICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBmdWxsIHNsb3RzCiAgIHNpemVf
dCBjYXBhY2l0eV8gPSAwOyAgICAgICAgICAgIC8vIHRvdGFsIG51bWJlciBvZiBzbG90cworICBI
YXNodGFibGV6SW5mb0hhbmRsZSBpbmZvel87CiAgIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6
Q29tcHJlc3NlZFR1cGxlPHNpemVfdCAvKiBncm93dGhfbGVmdCAqLywgaGFzaGVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZXF1YWwsIGFsbG9jYXRv
cl90eXBlPgogICAgICAgc2V0dGluZ3NfezAsIGhhc2hlcnt9LCBrZXlfZXF1YWx7fSwgYWxsb2Nh
dG9yX3R5cGV7fX07CkBAIC0xODk1LDEwICsxODI3LDkgQEAgc3RydWN0IEhhc2h0YWJsZURlYnVn
QWNjZXNzPFNldCwgYWJzbDo6dm9pZF90PHR5cGVuYW1lIFNldDo6cmF3X2hhc2hfc2V0Pj4gewog
ICB9CiAKICAgc3RhdGljIHNpemVfdCBMb3dlckJvdW5kQWxsb2NhdGVkQnl0ZVNpemUoc2l6ZV90
IHNpemUpIHsKLSAgICBzaXplX3QgY2FwYWNpdHkgPSBjb250YWluZXJfaW50ZXJuYWw6Ok5vcm1h
bGl6ZUNhcGFjaXR5KAotICAgICAgICBzdGQ6OmNlaWwoc2l6ZSAvIFNldDo6a01heExvYWRGYWN0
b3IpKTsKKyAgICBzaXplX3QgY2FwYWNpdHkgPSBHcm93dGhUb0xvd2VyYm91bmRDYXBhY2l0eShz
aXplKTsKICAgICBpZiAoY2FwYWNpdHkgPT0gMCkgcmV0dXJuIDA7Ci0gICAgYXV0byBsYXlvdXQg
PSBTZXQ6Ok1ha2VMYXlvdXQoY2FwYWNpdHkpOworICAgIGF1dG8gbGF5b3V0ID0gU2V0OjpNYWtl
TGF5b3V0KE5vcm1hbGl6ZUNhcGFjaXR5KGNhcGFjaXR5KSk7CiAgICAgc2l6ZV90IG0gPSBsYXlv
dXQuQWxsb2NTaXplKCk7CiAgICAgc2l6ZV90IHBlcl9zbG90ID0gVHJhaXRzOjpzcGFjZV91c2Vk
KHN0YXRpY19jYXN0PGNvbnN0IFNsb3QqPihudWxscHRyKSk7CiAgICAgaWYgKHBlcl9zbG90ICE9
IH5zaXplX3R7fSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19o
YXNoX3NldF9hbGxvY2F0b3JfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdf
aGFzaF9zZXRfYWxsb2NhdG9yX3Rlc3QuY2MKaW5kZXggODkxZmE0NTBmZTA4YzIyM2UyMDJiNThm
YzM4YTAyYjhiZjc3ODIyYi4uYTVlZmYwYjNkMjdmYTc3MDY2OGZkOGM0ZDM0MmQ1NWJkN2Y4ZDUy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldF9hbGxv
Y2F0b3JfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0
X2FsbG9jYXRvcl90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0X3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0X3Rlc3QuY2MKaW5k
ZXggY2QzM2EzYWNiOTE3ODg4ODg1NWZmOTFkZTk0MTQ2OTM0YzgzNzU1Ni4uZWQ0Y2E4Yzg4ZDNi
NjgyMzg1NjE3ZDU2MjUxYTc3NmUxMWNiY2ZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL3Jhd19oYXNoX3NldF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9yYXdfaGFzaF9zZXRfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtMTQsNyArMTQsNiBAQAogCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiCiAKLSNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxj
bWF0aD4KICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGRlcXVlPgpAQCAtNDksMTggKzQ4
LDQ3IEBAIG5hbWVzcGFjZSB7CiAKIHVzaW5nIDo6dGVzdGluZzo6RG91YmxlTmVhcjsKIHVzaW5n
IDo6dGVzdGluZzo6RWxlbWVudHNBcmU7Cit1c2luZyA6OnRlc3Rpbmc6OkdlOwordXNpbmcgOjp0
ZXN0aW5nOjpMdDsKIHVzaW5nIDo6dGVzdGluZzo6T3B0aW9uYWw7CiB1c2luZyA6OnRlc3Rpbmc6
OlBhaXI7CiB1c2luZyA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlOwogCiBURVNUKFV0
aWwsIE5vcm1hbGl6ZUNhcGFjaXR5KSB7Ci0gIGNvbnN0ZXhwciBzaXplX3Qga01pbkNhcGFjaXR5
ID0gR3JvdXA6OmtXaWR0aCAtIDE7Ci0gIEVYUEVDVF9FUShrTWluQ2FwYWNpdHksIE5vcm1hbGl6
ZUNhcGFjaXR5KDApKTsKLSAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSwgTm9ybWFsaXplQ2FwYWNp
dHkoMSkpOwotICBFWFBFQ1RfRVEoa01pbkNhcGFjaXR5LCBOb3JtYWxpemVDYXBhY2l0eSgyKSk7
Ci0gIEVYUEVDVF9FUShrTWluQ2FwYWNpdHksIE5vcm1hbGl6ZUNhcGFjaXR5KGtNaW5DYXBhY2l0
eSkpOwotICBFWFBFQ1RfRVEoa01pbkNhcGFjaXR5ICogMiArIDEsIE5vcm1hbGl6ZUNhcGFjaXR5
KGtNaW5DYXBhY2l0eSArIDEpKTsKLSAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSAqIDIgKyAxLCBO
b3JtYWxpemVDYXBhY2l0eShrTWluQ2FwYWNpdHkgKyAyKSk7CisgIEVYUEVDVF9FUSgxLCBOb3Jt
YWxpemVDYXBhY2l0eSgwKSk7CisgIEVYUEVDVF9FUSgxLCBOb3JtYWxpemVDYXBhY2l0eSgxKSk7
CisgIEVYUEVDVF9FUSgzLCBOb3JtYWxpemVDYXBhY2l0eSgyKSk7CisgIEVYUEVDVF9FUSgzLCBO
b3JtYWxpemVDYXBhY2l0eSgzKSk7CisgIEVYUEVDVF9FUSg3LCBOb3JtYWxpemVDYXBhY2l0eSg0
KSk7CisgIEVYUEVDVF9FUSg3LCBOb3JtYWxpemVDYXBhY2l0eSg3KSk7CisgIEVYUEVDVF9FUSgx
NSwgTm9ybWFsaXplQ2FwYWNpdHkoOCkpOworICBFWFBFQ1RfRVEoMTUsIE5vcm1hbGl6ZUNhcGFj
aXR5KDE1KSk7CisgIEVYUEVDVF9FUSgxNSAqIDIgKyAxLCBOb3JtYWxpemVDYXBhY2l0eSgxNSAr
IDEpKTsKKyAgRVhQRUNUX0VRKDE1ICogMiArIDEsIE5vcm1hbGl6ZUNhcGFjaXR5KDE1ICsgMikp
OworfQorCitURVNUKFV0aWwsIEdyb3d0aEFuZENhcGFjaXR5KSB7CisgIC8vIFZlcmlmeSB0aGF0
IEdyb3d0aFRvQ2FwYWNpdHkgZ2l2ZXMgdGhlIG1pbmltdW0gY2FwYWNpdHkgdGhhdCBoYXMgZW5v
dWdoCisgIC8vIGdyb3d0aC4KKyAgZm9yIChzaXplX3QgZ3Jvd3RoID0gMDsgZ3Jvd3RoIDwgMTAw
MDA7ICsrZ3Jvd3RoKSB7CisgICAgU0NPUEVEX1RSQUNFKGdyb3d0aCk7CisgICAgc2l6ZV90IGNh
cGFjaXR5ID0gTm9ybWFsaXplQ2FwYWNpdHkoR3Jvd3RoVG9Mb3dlcmJvdW5kQ2FwYWNpdHkoZ3Jv
d3RoKSk7CisgICAgLy8gVGhlIGNhcGFjaXR5IGlzIGxhcmdlIGVub3VnaCBmb3IgYGdyb3d0aGAK
KyAgICBFWFBFQ1RfVEhBVChDYXBhY2l0eVRvR3Jvd3RoKGNhcGFjaXR5KSwgR2UoZ3Jvd3RoKSk7
CisgICAgaWYgKGdyb3d0aCAhPSAwICYmIGNhcGFjaXR5ID4gMSkgeworICAgICAgLy8gVGhlcmUg
aXMgbm8gc21hbGxlciBjYXBhY2l0eSB0aGF0IHdvcmtzLgorICAgICAgRVhQRUNUX1RIQVQoQ2Fw
YWNpdHlUb0dyb3d0aChjYXBhY2l0eSAvIDIpLCBMdChncm93dGgpKTsKKyAgICB9CisgIH0KKwor
ICBmb3IgKHNpemVfdCBjYXBhY2l0eSA9IEdyb3VwOjprV2lkdGggLSAxOyBjYXBhY2l0eSA8IDEw
MDAwOworICAgICAgIGNhcGFjaXR5ID0gMiAqIGNhcGFjaXR5ICsgMSkgeworICAgIFNDT1BFRF9U
UkFDRShjYXBhY2l0eSk7CisgICAgc2l6ZV90IGdyb3d0aCA9IENhcGFjaXR5VG9Hcm93dGgoY2Fw
YWNpdHkpOworICAgIEVYUEVDVF9USEFUKGdyb3d0aCwgTHQoY2FwYWNpdHkpKTsKKyAgICBFWFBF
Q1RfTEUoR3Jvd3RoVG9Mb3dlcmJvdW5kQ2FwYWNpdHkoZ3Jvd3RoKSwgY2FwYWNpdHkpOworICAg
IEVYUEVDVF9FUShOb3JtYWxpemVDYXBhY2l0eShHcm93dGhUb0xvd2VyYm91bmRDYXBhY2l0eShn
cm93dGgpKSwgY2FwYWNpdHkpOworICB9CiB9CiAKIFRFU1QoVXRpbCwgcHJvYmVfc2VxKSB7CkBA
IC0xMDcsMTQgKzEzNSwxNCBAQCBURVNUKEJpdE1hc2ssIFdpdGhTaGlmdCkgewogfQogCiBURVNU
KEJpdE1hc2ssIExlYWRpbmdUcmFpbGluZykgewotICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMy
X3QsIDE2PigwYjAwMDExMDEwMDEwMDAwMDApLkxlYWRpbmdaZXJvcygpKSwgMyk7Ci0gIEVYUEVD
VF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDBiMDAwMTEwMTAwMTAwMDAwMCkuVHJhaWxpbmda
ZXJvcygpKSwgNik7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDB4MDAwMDFh
NDApLkxlYWRpbmdaZXJvcygpKSwgMyk7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwg
MTY+KDB4MDAwMDFhNDApLlRyYWlsaW5nWmVyb3MoKSksIDYpOwogCi0gIEVYUEVDVF9FUSgoQml0
TWFzazx1aW50MzJfdCwgMTY+KDBiMDAwMDAwMDAwMDAwMDAwMSkuTGVhZGluZ1plcm9zKCkpLCAx
NSk7Ci0gIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDBiMDAwMDAwMDAwMDAwMDAw
MSkuVHJhaWxpbmdaZXJvcygpKSwgMCk7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwg
MTY+KDB4MDAwMDAwMDEpLkxlYWRpbmdaZXJvcygpKSwgMTUpOworICBFWFBFQ1RfRVEoKEJpdE1h
c2s8dWludDMyX3QsIDE2PigweDAwMDAwMDAxKS5UcmFpbGluZ1plcm9zKCkpLCAwKTsKIAotICBF
WFBFQ1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2PigwYjEwMDAwMDAwMDAwMDAwMDApLkxlYWRp
bmdaZXJvcygpKSwgMCk7Ci0gIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDBiMTAw
MDAwMDAwMDAwMDAwMCkuVHJhaWxpbmdaZXJvcygpKSwgMTUpOworICBFWFBFQ1RfRVEoKEJpdE1h
c2s8dWludDMyX3QsIDE2PigweDAwMDA4MDAwKS5MZWFkaW5nWmVyb3MoKSksIDApOworICBFWFBF
Q1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2PigweDAwMDA4MDAwKS5UcmFpbGluZ1plcm9zKCkp
LCAxNSk7CiAKICAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQ2NF90LCA4LCAzPigweDAwMDAwMDgw
ODA4MDgwMDApLkxlYWRpbmdaZXJvcygpKSwgMyk7CiAgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50
NjRfdCwgOCwgMz4oMHgwMDAwMDA4MDgwODA4MDAwKS5UcmFpbGluZ1plcm9zKCkpLCAxKTsKQEAg
LTEzMCw0NSArMTU4LDUwIEBAIFRFU1QoR3JvdXAsIEVtcHR5R3JvdXApIHsKICAgZm9yIChoMl90
IGggPSAwOyBoICE9IDEyODsgKytoKSBFWFBFQ1RfRkFMU0UoR3JvdXB7RW1wdHlHcm91cCgpfS5N
YXRjaChoKSk7CiB9CiAKLSNpZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgogVEVTVChHcm91cCwgTWF0
Y2gpIHsKLSAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCBrRGVsZXRlZCwgMywga0VtcHR5
LCA1LCBrU2VudGluZWwsIDcsCi0gICAgICAgICAgICAgICAgICAgIDcsICAgICAgNSwgMywgICAg
ICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAgICAxfTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7Z3Jv
dXB9Lk1hdGNoKDApLCBFbGVtZW50c0FyZSgpKTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9
Lk1hdGNoKDEpLCBFbGVtZW50c0FyZSgxLCAxMSwgMTIsIDEzLCAxNCwgMTUpKTsKLSAgRVhQRUNU
X1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDMpLCBFbGVtZW50c0FyZSgzLCAxMCkpOwotICBFWFBF
Q1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goNSksIEVsZW1lbnRzQXJlKDUsIDkpKTsKLSAgRVhQ
RUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDcpLCBFbGVtZW50c0FyZSg3LCA4KSk7Ci19Ci0K
LVRFU1QoR3JvdXAsIE1hdGNoRW1wdHkpIHsKLSAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAx
LCBrRGVsZXRlZCwgMywga0VtcHR5LCA1LCBrU2VudGluZWwsIDcsCi0gICAgICAgICAgICAgICAg
ICAgIDcsICAgICAgNSwgMywgICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAgICAxfTsKLSAg
RVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoRW1wdHkoKSwgRWxlbWVudHNBcmUoMCwgNCkp
OworICBpZiAoR3JvdXA6OmtXaWR0aCA9PSAxNikgeworICAgIGN0cmxfdCBncm91cFtdID0ge2tF
bXB0eSwgMSwga0RlbGV0ZWQsIDMsIGtFbXB0eSwgNSwga1NlbnRpbmVsLCA3LAorICAgICAgICAg
ICAgICAgICAgICAgIDcsICAgICAgNSwgMywgICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAg
ICAxfTsKKyAgICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMCksIEVsZW1lbnRzQXJl
KCkpOworICAgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaCgxKSwgRWxlbWVudHNBcmUo
MSwgMTEsIDEyLCAxMywgMTQsIDE1KSk7CisgICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1h
dGNoKDMpLCBFbGVtZW50c0FyZSgzLCAxMCkpOworICAgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3Vw
fS5NYXRjaCg1KSwgRWxlbWVudHNBcmUoNSwgOSkpOworICAgIEVYUEVDVF9USEFUKEdyb3Vwe2dy
b3VwfS5NYXRjaCg3KSwgRWxlbWVudHNBcmUoNywgOCkpOworICB9IGVsc2UgaWYgKEdyb3VwOjpr
V2lkdGggPT0gOCkgeworICAgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0
ZWQsIDIsIDEsIGtTZW50aW5lbCwgMX07CisgICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1h
dGNoKDApLCBFbGVtZW50c0FyZSgpKTsKKyAgICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0
Y2goMSksIEVsZW1lbnRzQXJlKDEsIDUsIDcpKTsKKyAgICBFWFBFQ1RfVEhBVChHcm91cHtncm91
cH0uTWF0Y2goMiksIEVsZW1lbnRzQXJlKDIsIDQpKTsKKyAgfSBlbHNlIHsKKyAgICBGQUlMKCkg
PDwgIk5vIHRlc3QgY292ZXJhZ2UgZm9yIEdyb3VwOjprV2lkdGg9PSIgPDwgR3JvdXA6OmtXaWR0
aDsKKyAgfQogfQogCi1URVNUKEdyb3VwLCBNYXRjaEVtcHR5T3JEZWxldGVkKSB7Ci0gIGN0cmxf
dCBncm91cFtdID0ge2tFbXB0eSwgMSwga0RlbGV0ZWQsIDMsIGtFbXB0eSwgNSwga1NlbnRpbmVs
LCA3LAotICAgICAgICAgICAgICAgICAgICA3LCAgICAgIDUsIDMsICAgICAgICAxLCAxLCAgICAg
IDEsIDEsICAgICAgICAgMX07Ci0gIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaEVtcHR5
T3JEZWxldGVkKCksIEVsZW1lbnRzQXJlKDAsIDIsIDQpKTsKLX0KLSNlbHNlCi1URVNUKEdyb3Vw
LCBNYXRjaCkgewotICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1wdHksIDEsIDIsIGtEZWxldGVkLCAy
LCAxLCBrU2VudGluZWwsIDF9OwotICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMCks
IEVsZW1lbnRzQXJlKCkpOwotICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMSksIEVs
ZW1lbnRzQXJlKDEsIDUsIDcpKTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDIp
LCBFbGVtZW50c0FyZSgyLCA0KSk7Ci19CiBURVNUKEdyb3VwLCBNYXRjaEVtcHR5KSB7Ci0gIGN0
cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0ZWQsIDIsIDEsIGtTZW50aW5lbCwg
MX07Ci0gIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaEVtcHR5KCksIEVsZW1lbnRzQXJl
KDApKTsKKyAgaWYgKEdyb3VwOjprV2lkdGggPT0gMTYpIHsKKyAgICBjdHJsX3QgZ3JvdXBbXSA9
IHtrRW1wdHksIDEsIGtEZWxldGVkLCAzLCBrRW1wdHksIDUsIGtTZW50aW5lbCwgNywKKyAgICAg
ICAgICAgICAgICAgICAgICA3LCAgICAgIDUsIDMsICAgICAgICAxLCAxLCAgICAgIDEsIDEsICAg
ICAgICAgMX07CisgICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoRW1wdHkoKSwgRWxl
bWVudHNBcmUoMCwgNCkpOworICB9IGVsc2UgaWYgKEdyb3VwOjprV2lkdGggPT0gOCkgeworICAg
IGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0ZWQsIDIsIDEsIGtTZW50aW5l
bCwgMX07CisgICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoRW1wdHkoKSwgRWxlbWVu
dHNBcmUoMCkpOworICB9IGVsc2UgeworICAgIEZBSUwoKSA8PCAiTm8gdGVzdCBjb3ZlcmFnZSBm
b3IgR3JvdXA6OmtXaWR0aD09IiA8PCBHcm91cDo6a1dpZHRoOworICB9CiB9CiAKIFRFU1QoR3Jv
dXAsIE1hdGNoRW1wdHlPckRlbGV0ZWQpIHsKLSAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAx
LCAyLCBrRGVsZXRlZCwgMiwgMSwga1NlbnRpbmVsLCAxfTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7
Z3JvdXB9Lk1hdGNoRW1wdHlPckRlbGV0ZWQoKSwgRWxlbWVudHNBcmUoMCwgMykpOworICBpZiAo
R3JvdXA6OmtXaWR0aCA9PSAxNikgeworICAgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwg
a0RlbGV0ZWQsIDMsIGtFbXB0eSwgNSwga1NlbnRpbmVsLCA3LAorICAgICAgICAgICAgICAgICAg
ICAgIDcsICAgICAgNSwgMywgICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAgICAxfTsKKyAg
ICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2hFbXB0eU9yRGVsZXRlZCgpLCBFbGVtZW50
c0FyZSgwLCAyLCA0KSk7CisgIH0gZWxzZSBpZiAoR3JvdXA6OmtXaWR0aCA9PSA4KSB7CisgICAg
Y3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCAyLCBrRGVsZXRlZCwgMiwgMSwga1NlbnRpbmVs
LCAxfTsKKyAgICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2hFbXB0eU9yRGVsZXRlZCgp
LCBFbGVtZW50c0FyZSgwLCAzKSk7CisgIH0gZWxzZSB7CisgICAgRkFJTCgpIDw8ICJObyB0ZXN0
IGNvdmVyYWdlIGZvciBHcm91cDo6a1dpZHRoPT0iIDw8IEdyb3VwOjprV2lkdGg7CisgIH0KIH0K
LSNlbmRpZgogCiBURVNUKEJhdGNoLCBEcm9wRGVsZXRlcykgewogICBjb25zdGV4cHIgc2l6ZV90
IGtDYXBhY2l0eSA9IDYzOwpAQCAtMzEwLDcgKzM0MywyNSBAQCBzdHJ1Y3QgSW50VGFibGUKICAg
ICA6IHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIGNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZh
dWx0X2hhc2g8aW50NjRfdD4sCiAgICAgICAgICAgICAgICAgICAgc3RkOjplcXVhbF90bzxpbnQ2
NF90Piwgc3RkOjphbGxvY2F0b3I8aW50NjRfdD4+IHsKICAgdXNpbmcgQmFzZSA9IHR5cGVuYW1l
IEludFRhYmxlOjpyYXdfaGFzaF9zZXQ7Ci0gIEludFRhYmxlKCkge30KKyAgdXNpbmcgQmFzZTo6
QmFzZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEN1c3RvbUFsbG9jIDog
c3RkOjphbGxvY2F0b3I8VD4geworICBDdXN0b21BbGxvYygpIHt9CisKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+CisgIEN1c3RvbUFsbG9jKGNvbnN0IEN1c3RvbUFsbG9jPFU+JiBvdGhlcikge30K
KworICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5kIHsKKyAgICB1c2luZyBvdGhlciA9
IEN1c3RvbUFsbG9jPFU+OworICB9OworfTsKKworc3RydWN0IEN1c3RvbUFsbG9jSW50VGFibGUK
KyAgICA6IHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIGNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9k
ZWZhdWx0X2hhc2g8aW50NjRfdD4sCisgICAgICAgICAgICAgICAgICAgc3RkOjplcXVhbF90bzxp
bnQ2NF90PiwgQ3VzdG9tQWxsb2M8aW50NjRfdD4+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1l
IEN1c3RvbUFsbG9jSW50VGFibGU6OnJhd19oYXNoX3NldDsKICAgdXNpbmcgQmFzZTo6QmFzZTsK
IH07CiAKQEAgLTMzOCw2ICszODksNyBAQCBURVNUKFRhYmxlLCBFbXB0eUZ1bmN0b3JPcHRpbWl6
YXRpb24pIHsKICAgICBzaXplX3Qgc2l6ZTsKICAgICBzaXplX3QgY2FwYWNpdHk7CiAgICAgc2l6
ZV90IGdyb3d0aF9sZWZ0OworICAgIHZvaWQqIGluZm96OwogICB9OwogICBzdHJ1Y3QgU3RhdGVs
ZXNzSGFzaCB7CiAgICAgc2l6ZV90IG9wZXJhdG9yKCkoYWJzbDo6c3RyaW5nX3ZpZXcpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KQEAgLTM4MCwxMyArNDMyLDE1IEBAIFRFU1QoVGFibGUsIFByZWZldGNo
KSB7CiAgIHQucHJlZmV0Y2goMik7CiAKICAgLy8gRG8gbm90IHJ1biBpbiBkZWJ1ZyBtb2RlLCB3
aGVuIHByZWZldGNoIGlzIG5vdCBpbXBsZW1lbnRlZCwgb3Igd2hlbgotICAvLyBzYW5pdGl6ZXJz
IGFyZSBlbmFibGVkLgotI2lmIGRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAm
JiAhZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgJiYgXAotICAgICFkZWZpbmVkKE1FTU9SWV9T
QU5JVElaRVIpICYmICFkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpICYmICAgICAgICAgICAgXAot
ICAgICFkZWZpbmVkKFVOREVGSU5FRF9CRUhBVklPUl9TQU5JVElaRVIpCisgIC8vIHNhbml0aXpl
cnMgYXJlIGVuYWJsZWQsIG9yIG9uIFdlYkFzc2VtYmx5LgorI2lmIGRlZmluZWQoTkRFQlVHKSAm
JiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9feDg2XzY0X18pICYmICAgICAgICAgIFwK
KyAgICAhZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgJiYgIWRlZmluZWQoTUVNT1JZX1NBTklU
SVpFUikgJiYgICAgICAgICAgICBcCisgICAgIWRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikgJiYg
IWRlZmluZWQoVU5ERUZJTkVEX0JFSEFWSU9SX1NBTklUSVpFUikgJiYgXAorICAgICFkZWZpbmVk
KF9fRU1TQ1JJUFRFTl9fKQogICBjb25zdCBhdXRvIG5vdyA9IFtdIHsgcmV0dXJuIGFic2w6OmJh
c2VfaW50ZXJuYWw6OkN5Y2xlQ2xvY2s6Ok5vdygpOyB9OwogCi0gIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNpemUgPSAxMDAwMDAwOworICAvLyBNYWtlIHNpemUgZW5vdWdoIHRvIG5vdCBmaXQgaW4g
TDIgY2FjaGUgKDE2LjcgTWIpCisgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNpemUgPSAxIDw8IDIy
OwogICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgdC5pbnNlcnQoaSk7CiAKICAgaW50
NjRfdCBub19wcmVmZXRjaCA9IDAsIHByZWZldGNoID0gMDsKQEAgLTY4Nyw3ICs3NDEsNyBAQCBU
RVNUKFRhYmxlLCBSZWhhc2hXaXRoTm9SZXNpemUpIHsKICAgTW9kdWxvMTAwMEhhc2hUYWJsZSB0
OwogICAvLyBBZGRpbmcgdGhlIHNhbWUgbGVuZ3RoIChhbmQgdGhlIHNhbWUgaGFzaCkgc3RyaW5n
cwogICAvLyB0byBoYXZlIGF0IGxlYXN0IGtNaW5GdWxsR3JvdXBzIGdyb3VwcwotICAvLyB3aXRo
IEdyb3VwOjprV2lkdGggY29sbGlzaW9ucy4gVGhlbiBmZWVsIHVwdG8gTWF4RGVuc2l0eVNpemU7
CisgIC8vIHdpdGggR3JvdXA6OmtXaWR0aCBjb2xsaXNpb25zLiBUaGVuIGZpbGwgdXAgdG8gTWF4
RGVuc2l0eVNpemU7CiAgIGNvbnN0IHNpemVfdCBrTWluRnVsbEdyb3VwcyA9IDc7CiAgIHN0ZDo6
dmVjdG9yPGludD4ga2V5czsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBNYXhEZW5zaXR5U2l6
ZShHcm91cDo6a1dpZHRoICoga01pbkZ1bGxHcm91cHMpOyArK2kpIHsKQEAgLTc3OSw3ICs4MzMs
NyBAQCBURVNUKFRhYmxlLCBFbnN1cmVOb25RdWFkcmF0aWNBc0luUnVzdCkgewogVEVTVChUYWJs
ZSwgQ2xlYXJCdWcpIHsKICAgSW50VGFibGUgdDsKICAgY29uc3RleHByIHNpemVfdCBjYXBhY2l0
eSA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6R3JvdXA6OmtXaWR0aCAtIDE7Ci0gIGNvbnN0ZXhwciBz
aXplX3QgbWF4X3NpemUgPSBjYXBhY2l0eSAvIDI7CisgIGNvbnN0ZXhwciBzaXplX3QgbWF4X3Np
emUgPSBjYXBhY2l0eSAvIDIgKyAxOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heF9zaXpl
OyArK2kpIHsKICAgICB0Lmluc2VydChpKTsKICAgfQpAQCAtODEwLDYgKzg2NCwyNSBAQCBURVNU
KFRhYmxlLCBFcmFzZSkgewogICBFWFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7CiB9
CiAKK1RFU1QoVGFibGUsIEVyYXNlTWFpbnRhaW5zVmFsaWRJdGVyYXRvcikgeworICBJbnRUYWJs
ZSB0OworICBjb25zdCBpbnQga051bUVsZW1lbnRzID0gMTAwOworICBmb3IgKGludCBpID0gMDsg
aSA8IGtOdW1FbGVtZW50czsgaSArKykgeworICAgIEVYUEVDVF9UUlVFKHQuZW1wbGFjZShpKS5z
ZWNvbmQpOworICB9CisgIEVYUEVDVF9FUSh0LnNpemUoKSwga051bUVsZW1lbnRzKTsKKworICBp
bnQgbnVtX2VyYXNlX2NhbGxzID0gMDsKKyAgYXV0byBpdCA9IHQuYmVnaW4oKTsKKyAgd2hpbGUg
KGl0ICE9IHQuZW5kKCkpIHsKKyAgICB0LmVyYXNlKGl0KyspOworICAgIG51bV9lcmFzZV9jYWxs
cysrOworICB9CisKKyAgRVhQRUNUX1RSVUUodC5lbXB0eSgpKTsKKyAgRVhQRUNUX0VRKG51bV9l
cmFzZV9jYWxscywga051bUVsZW1lbnRzKTsKK30KKwogLy8gQ29sbGVjdCBOIGJhZCBrZXlzIGJ5
IGZvbGxvd2luZyBhbGdvcml0aG06CiAvLyAxLiBDcmVhdGUgYW4gZW1wdHkgdGFibGUgYW5kIHJl
c2VydmUgaXQgdG8gMiAqIE4uCiAvLyAyLiBJbnNlcnQgTiByYW5kb20gZWxlbWVudHMuCkBAIC0x
MDA4LDcgKzEwODEsNyBAQCBQcm9iZVN0YXRzIENvbGxlY3RQcm9iZVN0YXRzT25LZXlzWG9yZWRX
aXRoU2VlZChjb25zdCBzdGQ6OnZlY3RvcjxpbnQ2NF90PiYga2V5cwogCiBFeHBlY3RlZFN0YXRz
IFhvclNlZWRFeHBlY3RlZFN0YXRzKCkgewogICBjb25zdGV4cHIgYm9vbCBrUmFuZG9taXplc0lu
c2VydHMgPQotI2lmIE5ERUJVRworI2lmZGVmIE5ERUJVRwogICAgICAgZmFsc2U7CiAjZWxzZSAg
IC8vIE5ERUJVRwogICAgICAgdHJ1ZTsKQEAgLTEwMjksNyArMTEwMiw2IEBAIEV4cGVjdGVkU3Rh
dHMgWG9yU2VlZEV4cGVjdGVkU3RhdHMoKSB7CiAgICAgICAgICAge3swLjk1LCAwLjF9fSwKICAg
ICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMn0sIHswLjk5OSwgNH0sIHswLjk5OTksIDEwfX19
OwogICAgICAgfQotICAgICAgYnJlYWs7CiAgICAgY2FzZSAxNjoKICAgICAgIGlmIChrUmFuZG9t
aXplc0luc2VydHMpIHsKICAgICAgICAgcmV0dXJuIHswLjEsCkBAIC0xMDQyLDEyICsxMTE0LDEx
IEBAIEV4cGVjdGVkU3RhdHMgWG9yU2VlZEV4cGVjdGVkU3RhdHMoKSB7CiAgICAgICAgICAgICAg
ICAge3swLjk1LCAwLjA1fX0sCiAgICAgICAgICAgICAgICAge3swLjk1LCAwfSwgezAuOTksIDF9
LCB7MC45OTksIDR9LCB7MC45OTk5LCAxMH19fTsKICAgICAgIH0KLSAgICAgIGJyZWFrOwotICAg
IGRlZmF1bHQ6Ci0gICAgICBBQlNMX1JBV19MT0coRkFUQUwsICIlcyIsICJVbmtub3duIEdyb3Vw
IHdpZHRoIik7CiAgIH0KKyAgQUJTTF9SQVdfTE9HKEZBVEFMLCAiJXMiLCAiVW5rbm93biBHcm91
cCB3aWR0aCIpOwogICByZXR1cm4ge307CiB9CisKIFRFU1QoVGFibGUsIERJU0FCTEVEX0Vuc3Vy
ZU5vblF1YWRyYXRpY1RvcE5Yb3JTZWVkQnlQcm9iZVNlcUxlbmd0aCkgewogICBQcm9iZVN0YXRz
UGVyU2l6ZSBzdGF0czsKICAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBzaXplcyA9IHtHcm91cDo6a1dp
ZHRoIDw8IDUsIEdyb3VwOjprV2lkdGggPDwgMTB9OwpAQCAtMTEwNCw3ICsxMTc1LDcgQEAgUHJv
YmVTdGF0cyBDb2xsZWN0UHJvYmVTdGF0c09uTGluZWFybHlUcmFuc2Zvcm1lZEtleXMoCiAKIEV4
cGVjdGVkU3RhdHMgTGluZWFyVHJhbnNmb3JtRXhwZWN0ZWRTdGF0cygpIHsKICAgY29uc3RleHBy
IGJvb2wga1JhbmRvbWl6ZXNJbnNlcnRzID0KLSNpZiBOREVCVUcKKyNpZmRlZiBOREVCVUcKICAg
ICAgIGZhbHNlOwogI2Vsc2UgICAvLyBOREVCVUcKICAgICAgIHRydWU7CkBAIC0xMTI1LDcgKzEx
OTYsNiBAQCBFeHBlY3RlZFN0YXRzIExpbmVhclRyYW5zZm9ybUV4cGVjdGVkU3RhdHMoKSB7CiAg
ICAgICAgICAgICAgICAge3swLjk1LCAwLjN9fSwKICAgICAgICAgICAgICAgICB7ezAuOTUsIDB9
LCB7MC45OSwgM30sIHswLjk5OSwgMTV9LCB7MC45OTk5LCAyNX19fTsKICAgICAgIH0KLSAgICAg
IGJyZWFrOwogICAgIGNhc2UgMTY6CiAgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7CiAg
ICAgICAgIHJldHVybiB7MC4xLApAQCAtMTEzOCwxMiArMTIwOCwxMSBAQCBFeHBlY3RlZFN0YXRz
IExpbmVhclRyYW5zZm9ybUV4cGVjdGVkU3RhdHMoKSB7CiAgICAgICAgICAgICAgICAge3swLjk1
LCAwLjF9fSwKICAgICAgICAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMX0sIHswLjk5OSwg
Nn0sIHswLjk5OTksIDEwfX19OwogICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoK
LSAgICAgIEFCU0xfUkFXX0xPRyhGQVRBTCwgIiVzIiwgIlVua25vd24gR3JvdXAgd2lkdGgiKTsK
ICAgfQorICBBQlNMX1JBV19MT0coRkFUQUwsICIlcyIsICJVbmtub3duIEdyb3VwIHdpZHRoIik7
CiAgIHJldHVybiB7fTsKIH0KKwogVEVTVChUYWJsZSwgRElTQUJMRURfRW5zdXJlTm9uUXVhZHJh
dGljVG9wTkxpbmVhclRyYW5zZm9ybUJ5UHJvYmVTZXFMZW5ndGgpIHsKICAgUHJvYmVTdGF0c1Bl
clNpemUgc3RhdHM7CiAgIHN0ZDo6dmVjdG9yPHNpemVfdD4gc2l6ZXMgPSB7R3JvdXA6OmtXaWR0
aCA8PCA1LCBHcm91cDo6a1dpZHRoIDw8IDEwfTsKQEAgLTEyOTYsMzcgKzEzNjUsMzEgQEAgVEVT
VChUYWJsZSwgQ29uc3RydWN0RnJvbUluaXRMaXN0KSB7CiAKIFRFU1QoVGFibGUsIENvcHlDb25z
dHJ1Y3QpIHsKICAgSW50VGFibGUgdDsKLSAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOwogICB0
LmVtcGxhY2UoMCk7CiAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CiAgIHsKICAgICBJbnRUYWJs
ZSB1KHQpOwogICAgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRKHQubWF4
X2xvYWRfZmFjdG9yKCksIHUubWF4X2xvYWRfZmFjdG9yKCkpOwogICAgIEVYUEVDVF9USEFUKCp1
LmZpbmQoMCksIDApOwogICB9CiAgIHsKICAgICBJbnRUYWJsZSB1e3R9OwogICAgIEVYUEVDVF9F
USgxLCB1LnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRKHQubWF4X2xvYWRfZmFjdG9yKCksIHUubWF4
X2xvYWRfZmFjdG9yKCkpOwogICAgIEVYUEVDVF9USEFUKCp1LmZpbmQoMCksIDApOwogICB9CiAg
IHsKICAgICBJbnRUYWJsZSB1ID0gdDsKICAgICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOwotICAg
IEVYUEVDVF9FUSh0Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAg
ICBFWFBFQ1RfVEhBVCgqdS5maW5kKDApLCAwKTsKICAgfQogfQogCiBURVNUKFRhYmxlLCBDb3B5
Q29uc3RydWN0V2l0aEFsbG9jKSB7CiAgIFN0cmluZ1RhYmxlIHQ7Ci0gIHQubWF4X2xvYWRfZmFj
dG9yKC4zMjFmKTsKICAgdC5lbXBsYWNlKCJhIiwgImIiKTsKICAgRVhQRUNUX0VRKDEsIHQuc2l6
ZSgpKTsKICAgU3RyaW5nVGFibGUgdSh0LCBBbGxvYzxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0
ZDo6c3RyaW5nPj4oKSk7CiAgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7Ci0gIEVYUEVDVF9FUSh0
Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgRVhQRUNUX1RIQVQo
KnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7CiB9CiAKQEAgLTEzNDQsOTQgKzE0MDcsNzUg
QEAgVEVTVChUYWJsZSwgQWxsb2NXaXRoRXhwbGljaXRDdG9yKSB7CiBURVNUKFRhYmxlLCBNb3Zl
Q29uc3RydWN0KSB7CiAgIHsKICAgICBTdHJpbmdUYWJsZSB0OwotICAgIHQubWF4X2xvYWRfZmFj
dG9yKC4zMjFmKTsKLSAgICBjb25zdCBmbG9hdCBsZiA9IHQubWF4X2xvYWRfZmFjdG9yKCk7CiAg
ICAgdC5lbXBsYWNlKCJhIiwgImIiKTsKICAgICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOwogCiAg
ICAgU3RyaW5nVGFibGUgdShzdGQ6Om1vdmUodCkpOwogICAgIEVYUEVDVF9FUSgxLCB1LnNpemUo
KSk7Ci0gICAgRVhQRUNUX0VRKGxmLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgICBFWFBFQ1Rf
VEhBVCgqdS5maW5kKCJhIiksIFBhaXIoImEiLCAiYiIpKTsKICAgfQogICB7CiAgICAgU3RyaW5n
VGFibGUgdDsKLSAgICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7Ci0gICAgY29uc3QgZmxvYXQg
bGYgPSB0Lm1heF9sb2FkX2ZhY3RvcigpOwogICAgIHQuZW1wbGFjZSgiYSIsICJiIik7CiAgICAg
RVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKIAogICAgIFN0cmluZ1RhYmxlIHV7c3RkOjptb3ZlKHQp
fTsKICAgICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOwotICAgIEVYUEVDVF9FUShsZiwgdS5tYXhf
bG9hZF9mYWN0b3IoKSk7CiAgICAgRVhQRUNUX1RIQVQoKnUuZmluZCgiYSIpLCBQYWlyKCJhIiwg
ImIiKSk7CiAgIH0KICAgewogICAgIFN0cmluZ1RhYmxlIHQ7Ci0gICAgdC5tYXhfbG9hZF9mYWN0
b3IoLjMyMWYpOwotICAgIGNvbnN0IGZsb2F0IGxmID0gdC5tYXhfbG9hZF9mYWN0b3IoKTsKICAg
ICB0LmVtcGxhY2UoImEiLCAiYiIpOwogICAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CiAKICAg
ICBTdHJpbmdUYWJsZSB1ID0gc3RkOjptb3ZlKHQpOwogICAgIEVYUEVDVF9FUSgxLCB1LnNpemUo
KSk7Ci0gICAgRVhQRUNUX0VRKGxmLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgICBFWFBFQ1Rf
VEhBVCgqdS5maW5kKCJhIiksIFBhaXIoImEiLCAiYiIpKTsKICAgfQogfQogCiBURVNUKFRhYmxl
LCBNb3ZlQ29uc3RydWN0V2l0aEFsbG9jKSB7CiAgIFN0cmluZ1RhYmxlIHQ7Ci0gIHQubWF4X2xv
YWRfZmFjdG9yKC4zMjFmKTsKLSAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9sb2FkX2ZhY3Rvcigp
OwogICB0LmVtcGxhY2UoImEiLCAiYiIpOwogICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOwogICBT
dHJpbmdUYWJsZSB1KHN0ZDo6bW92ZSh0KSwgQWxsb2M8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBz
dGQ6OnN0cmluZz4+KCkpOwogICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOwotICBFWFBFQ1RfRVEo
bGYsIHUubWF4X2xvYWRfZmFjdG9yKCkpOwogICBFWFBFQ1RfVEhBVCgqdS5maW5kKCJhIiksIFBh
aXIoImEiLCAiYiIpKTsKIH0KIAogVEVTVChUYWJsZSwgQ29weUFzc2lnbikgewogICBTdHJpbmdU
YWJsZSB0OwotICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7CiAgIHQuZW1wbGFjZSgiYSIsICJi
Iik7CiAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CiAgIFN0cmluZ1RhYmxlIHU7CiAgIHUgPSB0
OwogICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOwotICBFWFBFQ1RfRVEodC5tYXhfbG9hZF9mYWN0
b3IoKSwgdS5tYXhfbG9hZF9mYWN0b3IoKSk7CiAgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEiKSwg
UGFpcigiYSIsICJiIikpOwogfQogCiBURVNUKFRhYmxlLCBDb3B5U2VsZkFzc2lnbikgewogICBT
dHJpbmdUYWJsZSB0OwotICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7Ci0gIGNvbnN0IGZsb2F0
IGxmID0gdC5tYXhfbG9hZF9mYWN0b3IoKTsKICAgdC5lbXBsYWNlKCJhIiwgImIiKTsKICAgRVhQ
RUNUX0VRKDEsIHQuc2l6ZSgpKTsKICAgdCA9IComdDsKICAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgp
KTsKLSAgRVhQRUNUX0VRKGxmLCB0Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgRVhQRUNUX1RIQVQo
KnQuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7CiB9CiAKIFRFU1QoVGFibGUsIE1vdmVBc3Np
Z24pIHsKICAgU3RyaW5nVGFibGUgdDsKLSAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOwotICBj
b25zdCBmbG9hdCBsZiA9IHQubWF4X2xvYWRfZmFjdG9yKCk7CiAgIHQuZW1wbGFjZSgiYSIsICJi
Iik7CiAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CiAgIFN0cmluZ1RhYmxlIHU7CiAgIHUgPSBz
dGQ6Om1vdmUodCk7CiAgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7Ci0gIEVYUEVDVF9FUShsZiwg
dS5tYXhfbG9hZF9mYWN0b3IoKSk7CiAgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEiKSwgUGFpcigi
YSIsICJiIikpOwogfQogCiBURVNUKFRhYmxlLCBFcXVhbGl0eSkgewogICBTdHJpbmdUYWJsZSB0
OwotICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4gdiA9
IHt7ImEiLCAiYiJ9LCB7ImFhIiwgImJiIn19OworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3Rk
OjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4gdiA9IHt7ImEiLCAiYiJ9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImFhIiwgImJiIn19Owog
ICB0Lmluc2VydChzdGQ6OmJlZ2luKHYpLCBzdGQ6OmVuZCh2KSk7CiAgIFN0cmluZ1RhYmxlIHUg
PSB0OwogICBFWFBFQ1RfRVEodSwgdCk7CkBAIC0xNDM5LDIwICsxNDgzLDI0IEBAIFRFU1QoVGFi
bGUsIEVxdWFsaXR5KSB7CiAKIFRFU1QoVGFibGUsIEVxdWFsaXR5MikgewogICBTdHJpbmdUYWJs
ZSB0OwotICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4g
djEgPSB7eyJhIiwgImIifSwgeyJhYSIsICJiYiJ9fTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWly
PHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYxID0ge3siYSIsICJiIn0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImFhIiwgImJi
In19OwogICB0Lmluc2VydChzdGQ6OmJlZ2luKHYxKSwgc3RkOjplbmQodjEpKTsKICAgU3RyaW5n
VGFibGUgdTsKLSAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmlu
Zz4+IHYyID0ge3siYSIsICJhIn0sIHsiYWEiLCAiYWEifX07CisgIHN0ZDo6dmVjdG9yPHN0ZDo6
cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2MiA9IHt7ImEiLCAiYSJ9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhYSIs
ICJhYSJ9fTsKICAgdS5pbnNlcnQoc3RkOjpiZWdpbih2MiksIHN0ZDo6ZW5kKHYyKSk7CiAgIEVY
UEVDVF9ORSh1LCB0KTsKIH0KIAogVEVTVChUYWJsZSwgRXF1YWxpdHkzKSB7CiAgIFN0cmluZ1Rh
YmxlIHQ7Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+
PiB2MSA9IHt7ImIiLCAiYiJ9LCB7ImJiIiwgImJiIn19OworICBzdGQ6OnZlY3RvcjxzdGQ6OnBh
aXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4gdjEgPSB7eyJiIiwgImIifSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYmIiLCAi
YmIifX07CiAgIHQuaW5zZXJ0KHN0ZDo6YmVnaW4odjEpLCBzdGQ6OmVuZCh2MSkpOwogICBTdHJp
bmdUYWJsZSB1OwotICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3Ry
aW5nPj4gdjIgPSB7eyJhIiwgImEifSwgeyJhYSIsICJhYSJ9fTsKKyAgc3RkOjp2ZWN0b3I8c3Rk
OjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYyID0ge3siYSIsICJhIn0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImFh
IiwgImFhIn19OwogICB1Lmluc2VydChzdGQ6OmJlZ2luKHYyKSwgc3RkOjplbmQodjIpKTsKICAg
RVhQRUNUX05FKHUsIHQpOwogfQpAQCAtMTY3Nyw3ICsxNzI1LDcgQEAgVEVTVChOb2RlcywgRXh0
cmFjdEluc2VydCkgewogICBFWFBFQ1RfRkFMU0Uobm9kZS5lbXB0eSgpKTsKIAogICBTdHJpbmdU
YWJsZSB0MjsKLSAgYXV0byByZXMgPSB0Mi5pbnNlcnQoc3RkOjptb3ZlKG5vZGUpKTsKKyAgU3Ry
aW5nVGFibGU6Omluc2VydF9yZXR1cm5fdHlwZSByZXMgPSB0Mi5pbnNlcnQoc3RkOjptb3ZlKG5v
ZGUpKTsKICAgRVhQRUNUX1RSVUUocmVzLmluc2VydGVkKTsKICAgRVhQRUNUX1RIQVQoKnJlcy5w
b3NpdGlvbiwgUGFpcihrMCwgIiIpKTsKICAgRVhQRUNUX0ZBTFNFKHJlcy5ub2RlKTsKQEAgLTE3
MDcsNzMgKzE3NTUsNDkgQEAgVEVTVChOb2RlcywgRXh0cmFjdEluc2VydCkgewogICBFWFBFQ1Rf
RkFMU0Uobm9kZSk7CiB9CiAKLVN0cmluZ1RhYmxlIE1ha2VTaW1wbGVUYWJsZShzaXplX3Qgc2l6
ZSkgewotICBTdHJpbmdUYWJsZSB0OwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgdC5lbXBsYWNlKHN0ZDo6c3RyaW5nKDEsICdBJyArIGkpLCAiIik7CitJbnRUYWJsZSBNYWtl
U2ltcGxlVGFibGUoc2l6ZV90IHNpemUpIHsKKyAgSW50VGFibGUgdDsKKyAgd2hpbGUgKHQuc2l6
ZSgpIDwgc2l6ZSkgdC5pbnNlcnQodC5zaXplKCkpOwogICByZXR1cm4gdDsKIH0KIAotc3RkOjpz
dHJpbmcgT3JkZXJPZkl0ZXJhdGlvbihjb25zdCBTdHJpbmdUYWJsZSYgdCkgewotICBzdGQ6OnN0
cmluZyBvcmRlcjsKLSAgZm9yIChhdXRvJiBwIDogdCkgb3JkZXIgKz0gcC5maXJzdDsKLSAgcmV0
dXJuIG9yZGVyOworc3RkOjp2ZWN0b3I8aW50PiBPcmRlck9mSXRlcmF0aW9uKGNvbnN0IEludFRh
YmxlJiB0KSB7CisgIHJldHVybiB7dC5iZWdpbigpLCB0LmVuZCgpfTsKIH0KIAorLy8gVGhlc2Ug
SXRlcmF0aW9uT3JkZXJDaGFuZ2VzIHRlc3RzIGRlcGVuZCBvbiBub24tZGV0ZXJtaW5pc3RpYyBi
ZWhhdmlvci4KKy8vIFdlIGFyZSBpbmplY3Rpbmcgbm9uLWRldGVybWluaXNtIGZyb20gdGhlIHBv
aW50ZXIgb2YgdGhlIHRhYmxlLCBidXQgZG8gc28gaW4KKy8vIGEgd2F5IHRoYXQgb25seSB0aGUg
cGFnZSBtYXR0ZXJzLiBXZSBoYXZlIHRvIHJldHJ5IGVub3VnaCB0aW1lcyB0byBtYWtlIHN1cmUK
Ky8vIHdlIGFyZSB0b3VjaGluZyBkaWZmZXJlbnQgbWVtb3J5IHBhZ2VzIHRvIGNhdXNlIHRoZSBv
cmRlcmluZyB0byBjaGFuZ2UuCisvLyBXZSBhbHNvIG5lZWQgdG8ga2VlcCB0aGUgb2xkIHRhYmxl
cyBhcm91bmQgdG8gYXZvaWQgZ2V0dGluZyB0aGUgc2FtZSBtZW1vcnkKKy8vIGJsb2NrcyBvdmVy
IGFuZCBvdmVyLgogVEVTVChUYWJsZSwgSXRlcmF0aW9uT3JkZXJDaGFuZ2VzQnlJbnN0YW5jZSkg
ewotICAvLyBOZWVkcyB0byBiZSBtb3JlIHRoYW4ga1dpZHRoIGVsZW1lbnRzIHRvIGJlIGFibGUg
dG8gYWZmZWN0IG9yZGVyLgotICBjb25zdCBTdHJpbmdUYWJsZSByZWZlcmVuY2UgPSBNYWtlU2lt
cGxlVGFibGUoMjApOwotCi0gIC8vIFNpbmNlIG9yZGVyIGlzIG5vbi1kZXRlcm1pbmlzdGljIHdl
IGNhbid0IGp1c3QgdHJ5IG9uY2UgYW5kIHZlcmlmeS4KLSAgLy8gV2UnbGwgdHJ5IHVudGlsIHdl
IGZpbmQgdGhhdCBvcmRlciBjaGFuZ2VkLiBJdCBzaG91bGQgbm90IHRha2UgbWFueSB0cmllcwot
ICAvLyBmb3IgdGhhdC4KLSAgLy8gSW1wb3J0YW50OiB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9sZCB0
YWJsZXMgYXJvdW5kLiBPdGhlcndpc2UgdGNtYWxsb2Mgd2lsbAotICAvLyBqdXN0IGdpdmUgdXMg
dGhlIHNhbWUgYmxvY2tzIGFuZCB3ZSB3b3VsZCBiZSBkb2luZyB0aGUgc2FtZSBvcmRlciBhZ2Fp
bi4KLSAgc3RkOjp2ZWN0b3I8U3RyaW5nVGFibGU+IGdhcmJhZ2U7Ci0gIGZvciAoaW50IGkgPSAw
OyBpIDwgMTA7ICsraSkgewotICAgIGF1dG8gdHJpYWwgPSBNYWtlU2ltcGxlVGFibGUoMjApOwot
ICAgIGlmIChPcmRlck9mSXRlcmF0aW9uKHRyaWFsKSAhPSBPcmRlck9mSXRlcmF0aW9uKHJlZmVy
ZW5jZSkpIHsKLSAgICAgIC8vIFdlIGFyZSBkb25lLgotICAgICAgcmV0dXJuOworICBmb3IgKHNp
emVfdCBzaXplIDogezIsIDYsIDEyLCAyMH0pIHsKKyAgICBjb25zdCBhdXRvIHJlZmVyZW5jZV90
YWJsZSA9IE1ha2VTaW1wbGVUYWJsZShzaXplKTsKKyAgICBjb25zdCBhdXRvIHJlZmVyZW5jZSA9
IE9yZGVyT2ZJdGVyYXRpb24ocmVmZXJlbmNlX3RhYmxlKTsKKworICAgIHN0ZDo6dmVjdG9yPElu
dFRhYmxlPiB0YWJsZXM7CisgICAgYm9vbCBmb3VuZF9kaWZmZXJlbmNlID0gZmFsc2U7CisgICAg
Zm9yIChpbnQgaSA9IDA7ICFmb3VuZF9kaWZmZXJlbmNlICYmIGkgPCA1MDAwOyArK2kpIHsKKyAg
ICAgIHRhYmxlcy5wdXNoX2JhY2soTWFrZVNpbXBsZVRhYmxlKHNpemUpKTsKKyAgICAgIGZvdW5k
X2RpZmZlcmVuY2UgPSBPcmRlck9mSXRlcmF0aW9uKHRhYmxlcy5iYWNrKCkpICE9IHJlZmVyZW5j
ZTsKKyAgICB9CisgICAgaWYgKCFmb3VuZF9kaWZmZXJlbmNlKSB7CisgICAgICBGQUlMKCkKKyAg
ICAgICAgICA8PCAiSXRlcmF0aW9uIG9yZGVyIHJlbWFpbmVkIHRoZSBzYW1lIGFjcm9zcyBtYW55
IGF0dGVtcHRzIHdpdGggc2l6ZSAiCisgICAgICAgICAgPDwgc2l6ZTsKICAgICB9Ci0gICAgZ2Fy
YmFnZS5wdXNoX2JhY2soc3RkOjptb3ZlKHRyaWFsKSk7CiAgIH0KLSAgRkFJTCgpOwogfQogCiBU
RVNUKFRhYmxlLCBJdGVyYXRpb25PcmRlckNoYW5nZXNPblJlaGFzaCkgewotICAvLyBTaW5jZSBv
cmRlciBpcyBub24tZGV0ZXJtaW5pc3RpYyB3ZSBjYW4ndCBqdXN0IHRyeSBvbmNlIGFuZCB2ZXJp
ZnkuCi0gIC8vIFdlJ2xsIHRyeSB1bnRpbCB3ZSBmaW5kIHRoYXQgb3JkZXIgY2hhbmdlZC4gSXQg
c2hvdWxkIG5vdCB0YWtlIG1hbnkgdHJpZXMKLSAgLy8gZm9yIHRoYXQuCi0gIC8vIEltcG9ydGFu
dDogd2UgaGF2ZSB0byBrZWVwIHRoZSBvbGQgdGFibGVzIGFyb3VuZC4gT3RoZXJ3aXNlIHRjbWFs
bG9jIHdpbGwKLSAgLy8ganVzdCBnaXZlIHVzIHRoZSBzYW1lIGJsb2NrcyBhbmQgd2Ugd291bGQg
YmUgZG9pbmcgdGhlIHNhbWUgb3JkZXIgYWdhaW4uCi0gIHN0ZDo6dmVjdG9yPFN0cmluZ1RhYmxl
PiBnYXJiYWdlOwotICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICAvLyBOZWVk
cyB0byBiZSBtb3JlIHRoYW4ga1dpZHRoIGVsZW1lbnRzIHRvIGJlIGFibGUgdG8gYWZmZWN0IG9y
ZGVyLgotICAgIFN0cmluZ1RhYmxlIHQgPSBNYWtlU2ltcGxlVGFibGUoMjApOwotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHJlZmVyZW5jZSA9IE9yZGVyT2ZJdGVyYXRpb24odCk7CisgIHN0ZDo6dmVj
dG9yPEludFRhYmxlPiBnYXJiYWdlOworICBmb3IgKGludCBpID0gMDsgaSA8IDUwMDA7ICsraSkg
eworICAgIGF1dG8gdCA9IE1ha2VTaW1wbGVUYWJsZSgyMCk7CisgICAgY29uc3QgYXV0byByZWZl
cmVuY2UgPSBPcmRlck9mSXRlcmF0aW9uKHQpOwogICAgIC8vIEZvcmNlIHJlaGFzaCB0byB0aGUg
c2FtZSBzaXplLgogICAgIHQucmVoYXNoKDApOwotICAgIHN0ZDo6c3RyaW5nIHRyaWFsID0gT3Jk
ZXJPZkl0ZXJhdGlvbih0KTsKLSAgICBpZiAodHJpYWwgIT0gcmVmZXJlbmNlKSB7Ci0gICAgICAv
LyBXZSBhcmUgZG9uZS4KLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZ2FyYmFnZS5wdXNoX2Jh
Y2soc3RkOjptb3ZlKHQpKTsKLSAgfQotICBGQUlMKCk7Ci19Ci0KLVRFU1QoVGFibGUsIEl0ZXJh
dGlvbk9yZGVyQ2hhbmdlc0ZvclNtYWxsVGFibGVzKSB7Ci0gIC8vIFNpbmNlIG9yZGVyIGlzIG5v
bi1kZXRlcm1pbmlzdGljIHdlIGNhbid0IGp1c3QgdHJ5IG9uY2UgYW5kIHZlcmlmeS4KLSAgLy8g
V2UnbGwgdHJ5IHVudGlsIHdlIGZpbmQgdGhhdCBvcmRlciBjaGFuZ2VkLgotICAvLyBJbXBvcnRh
bnQ6IHdlIGhhdmUgdG8ga2VlcCB0aGUgb2xkIHRhYmxlcyBhcm91bmQuIE90aGVyd2lzZSB0Y21h
bGxvYyB3aWxsCi0gIC8vIGp1c3QgZ2l2ZSB1cyB0aGUgc2FtZSBibG9ja3MgYW5kIHdlIHdvdWxk
IGJlIGRvaW5nIHRoZSBzYW1lIG9yZGVyIGFnYWluLgotICBTdHJpbmdUYWJsZSByZWZlcmVuY2Vf
dGFibGUgPSBNYWtlU2ltcGxlVGFibGUoNSk7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHJlZmVyZW5j
ZSA9IE9yZGVyT2ZJdGVyYXRpb24ocmVmZXJlbmNlX3RhYmxlKTsKLSAgc3RkOjp2ZWN0b3I8U3Ry
aW5nVGFibGU+IGdhcmJhZ2U7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgNTA7ICsraSkgewotICAg
IFN0cmluZ1RhYmxlIHQgPSBNYWtlU2ltcGxlVGFibGUoNSk7Ci0gICAgc3RkOjpzdHJpbmcgdHJp
YWwgPSBPcmRlck9mSXRlcmF0aW9uKHQpOworICAgIGF1dG8gdHJpYWwgPSBPcmRlck9mSXRlcmF0
aW9uKHQpOwogICAgIGlmICh0cmlhbCAhPSByZWZlcmVuY2UpIHsKICAgICAgIC8vIFdlIGFyZSBk
b25lLgogICAgICAgcmV0dXJuOwpAQCAtMTc4MywxMzYgKzE4MDcsMjIgQEAgVEVTVChUYWJsZSwg
SXRlcmF0aW9uT3JkZXJDaGFuZ2VzRm9yU21hbGxUYWJsZXMpIHsKICAgRkFJTCgpIDw8ICJJdGVy
YXRpb24gb3JkZXIgcmVtYWluZWQgdGhlIHNhbWUgYWNyb3NzIG1hbnkgYXR0ZW1wdHMuIjsKIH0K
IAotLy8gRmlsbCB0aGUgdGFibGUgdG8gMyBkaWZmZXJlbnQgbG9hZCBmYWN0b3JzIChtaW4sIG1l
ZGlhbiwgbWF4KSBhbmQgZXZhbHVhdGUKLS8vIHRoZSBwZXJjZW50YWdlIG9mIHBlcmZlY3QgaGl0
cyB1c2luZyB0aGUgZGVidWcgQVBJLgotdGVtcGxhdGUgPGNsYXNzIFRhYmxlLCBjbGFzcyBBZGRG
bj4KLXN0ZDo6dmVjdG9yPGRvdWJsZT4gQ29sbGVjdFBlcmZlY3RSYXRpb3MoVGFibGUgdCwgQWRk
Rm4gYWRkKSB7Ci0gIHVzaW5nIEtleSA9IHR5cGVuYW1lIFRhYmxlOjprZXlfdHlwZTsKLQotICAv
LyBGaXJzdCwgZmlsbCBlbm91Z2ggdG8gaGF2ZSBhIGdvb2QgZGlzdHJpYnV0aW9uLgotICBjb25z
dGV4cHIgc2l6ZV90IGtNaW5TaXplID0gMTAwMDA7Ci0gIHN0ZDo6dmVjdG9yPEtleT4ga2V5czsK
LSAgd2hpbGUgKHQuc2l6ZSgpIDwga01pblNpemUpIGtleXMucHVzaF9iYWNrKGFkZCh0KSk7Ci0g
IC8vIFRoZW4sIGluc2VydCB1bnRpbCB3ZSByZWFjaCBtaW4gbG9hZCBmYWN0b3IuCi0gIGRvdWJs
ZSBsZiA9IHQubG9hZF9mYWN0b3IoKTsKLSAgd2hpbGUgKGxmIDw9IHQubG9hZF9mYWN0b3IoKSkg
a2V5cy5wdXNoX2JhY2soYWRkKHQpKTsKLQotICAvLyBXZSBhcmUgbm93IGF0IG1pbiBsb2FkIGZh
Y3Rvci4gVGFrZSBhIHNuYXBzaG90LgotICBzaXplX3QgcGVyZmVjdCA9IDA7Ci0gIGF1dG8gdXBk
YXRlX3BlcmZlY3QgPSBbJl0oS2V5IGspIHsKLSAgICBwZXJmZWN0ICs9IEdldEhhc2h0YWJsZURl
YnVnTnVtUHJvYmVzKHQsIGspID09IDA7Ci0gIH07Ci0gIGZvciAoY29uc3QgYXV0byYgayA6IGtl
eXMpIHVwZGF0ZV9wZXJmZWN0KGspOworLy8gVmVyaWZ5IHRoYXQgcG9pbnRlcnMgYXJlIGludmFs
aWRhdGVkIGFzIHNvb24gYXMgYSBzZWNvbmQgZWxlbWVudCBpcyBpbnNlcnRlZC4KKy8vIFRoaXMg
cHJldmVudHMgZGVwZW5kZW5jeSBvbiBwb2ludGVyIHN0YWJpbGl0eSBvbiBzbWFsbCB0YWJsZXMu
CitURVNUKFRhYmxlLCBVbnN0YWJsZVBvaW50ZXJzKSB7CisgIEludFRhYmxlIHRhYmxlOwogCi0g
IHN0ZDo6dmVjdG9yPGRvdWJsZT4gcGVyZmVjdF9yYXRpb3M7Ci0gIC8vIEtlZXAgZ29pbmcgdW50
aWwgd2UgaGl0IG1heCBsb2FkIGZhY3Rvci4KLSAgd2hpbGUgKHQubG9hZF9mYWN0b3IoKSA8IC42
KSB7Ci0gICAgcGVyZmVjdF9yYXRpb3MucHVzaF9iYWNrKDEuMCAqIHBlcmZlY3QgLyB0LnNpemUo
KSk7Ci0gICAgdXBkYXRlX3BlcmZlY3QoYWRkKHQpKTsKLSAgfQotICB3aGlsZSAodC5sb2FkX2Zh
Y3RvcigpID4gLjUpIHsKLSAgICBwZXJmZWN0X3JhdGlvcy5wdXNoX2JhY2soMS4wICogcGVyZmVj
dCAvIHQuc2l6ZSgpKTsKLSAgICB1cGRhdGVfcGVyZmVjdChhZGQodCkpOwotICB9Ci0gIHJldHVy
biBwZXJmZWN0X3JhdGlvczsKLX0KLQotc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91
YmxlPj4gU3RyaW5nVGFibGVQZWZlY3RSYXRpb3MoKSB7Ci0gIGNvbnN0ZXhwciBib29sIGtSYW5k
b21pemVzSW5zZXJ0cyA9Ci0jaWYgTkRFQlVHCi0gICAgICBmYWxzZTsKLSNlbHNlICAgLy8gTkRF
QlVHCi0gICAgICB0cnVlOwotI2VuZGlmICAvLyBOREVCVUcKLQotICAvLyBUaGUgZWZmZWN0aXZl
IGxvYWQgZmFjdG9yIGlzIGxhcmdlciBpbiBub24tb3B0IG1vZGUgYmVjYXVzZSB3ZSBpbnNlcnQK
LSAgLy8gZWxlbWVudHMgb3V0IG9mIG9yZGVyLgotICBzd2l0Y2ggKGNvbnRhaW5lcl9pbnRlcm5h
bDo6R3JvdXA6OmtXaWR0aCkgewotICAgIGNhc2UgODoKLSAgICAgIGlmIChrUmFuZG9taXplc0lu
c2VydHMpIHsKLSAgICAgICAgcmV0dXJuIHt7MC45ODYsIDAuMDJ9LCB7MC45NSwgMC4wMn0sIHsw
Ljg5LCAwLjAyfX07Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4ge3swLjk5NSwgMC4w
MX0sIHswLjk3LCAwLjAxfSwgezAuODksIDAuMDJ9fTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwot
ICAgIGNhc2UgMTY6Ci0gICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7Ci0gICAgICAgIHJl
dHVybiB7ezAuOTczLCAwLjAxfSwgezAuOTY1LCAwLjAxfSwgezAuOTIsIDAuMDJ9fTsKLSAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiB7ezAuOTk1LCAwLjAwNX0sIHswLjk5LCAwLjAwNX0s
IHswLjk0LCAwLjAxfX07Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAg
ICAgLy8gSWdub3JlIGFueXRoaW5nIGVsc2UuCi0gICAgICByZXR1cm4ge307Ci0gIH0KLX0KLQot
Ly8gVGhpcyBpcyBhbG1vc3QgYSBjaGFuZ2UgZGV0ZWN0b3IsIGJ1dCBpdCBhbGxvd3MgdXMgdG8g
a25vdyBob3cgd2UgYXJlCi0vLyBhZmZlY3RpbmcgdGhlIHByb2JlIGRpc3RyaWJ1dGlvbi4KLVRF
U1QoVGFibGUsIEVmZmVjdGl2ZUxvYWRGYWN0b3JTdHJpbmdzKSB7Ci0gIHN0ZDo6dmVjdG9yPGRv
dWJsZT4gcGVyZmVjdF9yYXRpb3MgPQotICAgICAgQ29sbGVjdFBlcmZlY3RSYXRpb3MoU3RyaW5n
VGFibGUoKSwgW10oU3RyaW5nVGFibGUmIHQpIHsKLSAgICAgICAgcmV0dXJuIHQuZW1wbGFjZShz
dGQ6OnRvX3N0cmluZyh0LnNpemUoKSksICIiKS5maXJzdC0+Zmlyc3Q7Ci0gICAgICB9KTsKLQot
ICBhdXRvIHJhdGlvcyA9IFN0cmluZ1RhYmxlUGVmZWN0UmF0aW9zKCk7Ci0gIGlmIChyYXRpb3Mu
ZW1wdHkoKSkgcmV0dXJuOwotCi0gIEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zLmZyb250KCks
Ci0gICAgICAgICAgICAgIERvdWJsZU5lYXIocmF0aW9zWzBdLmZpcnN0LCByYXRpb3NbMF0uc2Vj
b25kKSk7Ci0gIEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zW3BlcmZlY3RfcmF0aW9zLnNpemUo
KSAvIDJdLAotICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1sxXS5maXJzdCwgcmF0aW9z
WzFdLnNlY29uZCkpOwotICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlvcy5iYWNrKCksCi0gICAg
ICAgICAgICAgIERvdWJsZU5lYXIocmF0aW9zWzJdLmZpcnN0LCByYXRpb3NbMl0uc2Vjb25kKSk7
Ci19Ci0KLXN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IEludFRhYmxlUGVm
ZWN0UmF0aW9zKCkgewotICBjb25zdGV4cHIgYm9vbCBrUmFuZG9taXplc0luc2VydHMgPQotI2lm
ZGVmIE5ERUJVRwotICAgICAgZmFsc2U7Ci0jZWxzZSAgIC8vIE5ERUJVRwotICAgICAgdHJ1ZTsK
LSNlbmRpZiAgLy8gTkRFQlVHCi0KLSAgLy8gVGhlIGVmZmVjdGl2ZSBsb2FkIGZhY3RvciBpcyBs
YXJnZXIgaW4gbm9uLW9wdCBtb2RlIGJlY2F1c2Ugd2UgaW5zZXJ0Ci0gIC8vIGVsZW1lbnRzIG91
dCBvZiBvcmRlci4KLSAgc3dpdGNoIChjb250YWluZXJfaW50ZXJuYWw6Okdyb3VwOjprV2lkdGgp
IHsKLSAgICBjYXNlIDg6Ci0gICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7Ci0gICAgICAg
IHJldHVybiB7ezAuOTksIDAuMDJ9LCB7MC45ODUsIDAuMDJ9LCB7MC45NSwgMC4wNX19OwotICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIHt7MC45OSwgMC4wMX0sIHswLjk5LCAwLjAxfSwg
ezAuOTUsIDAuMDJ9fTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgMTY6Ci0gICAg
ICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7Ci0gICAgICAgIHJldHVybiB7ezAuOTgsIDAuMDJ9
LCB7MC45NzgsIDAuMDJ9LCB7MC45NiwgMC4wMn19OwotICAgICAgfSBlbHNlIHsKLSAgICAgICAg
cmV0dXJuIHt7MC45OTgsIDAuMDAzfSwgezAuOTk1LCAwLjAxfSwgezAuOTc1LCAwLjAyfX07Ci0g
ICAgICB9Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgLy8gSWdub3JlIGFueXRo
aW5nIGVsc2UuCi0gICAgICByZXR1cm4ge307Ci0gIH0KLX0KKyAgY29uc3QgYXV0byBhZGRyID0g
WyZdKGludCBpKSB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmKnRh
YmxlLmZpbmQoaSkpOworICB9OwogCi0vLyBUaGlzIGlzIGFsbW9zdCBhIGNoYW5nZSBkZXRlY3Rv
ciwgYnV0IGl0IGFsbG93cyB1cyB0byBrbm93IGhvdyB3ZSBhcmUKLS8vIGFmZmVjdGluZyB0aGUg
cHJvYmUgZGlzdHJpYnV0aW9uLgotVEVTVChUYWJsZSwgRWZmZWN0aXZlTG9hZEZhY3RvckludHMp
IHsKLSAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBwZXJmZWN0X3JhdGlvcyA9IENvbGxlY3RQZXJmZWN0
UmF0aW9zKAotICAgICAgSW50VGFibGUoKSwgW10oSW50VGFibGUmIHQpIHsgcmV0dXJuICp0LmVt
cGxhY2UodC5zaXplKCkpLmZpcnN0OyB9KTsKKyAgdGFibGUuaW5zZXJ0KDApOworICBjb25zdCB1
aW50cHRyX3Qgb2xkX3B0ciA9IGFkZHIoMCk7CiAKLSAgYXV0byByYXRpb3MgPSBJbnRUYWJsZVBl
ZmVjdFJhdGlvcygpOwotICBpZiAocmF0aW9zLmVtcHR5KCkpIHJldHVybjsKKyAgLy8gVGhpcyBj
YXVzZXMgYSByZWhhc2guCisgIHRhYmxlLmluc2VydCgxKTsKIAotICBFWFBFQ1RfVEhBVChwZXJm
ZWN0X3JhdGlvcy5mcm9udCgpLAotICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1swXS5m
aXJzdCwgcmF0aW9zWzBdLnNlY29uZCkpOwotICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlvc1tw
ZXJmZWN0X3JhdGlvcy5zaXplKCkgLyAyXSwKLSAgICAgICAgICAgICAgRG91YmxlTmVhcihyYXRp
b3NbMV0uZmlyc3QsIHJhdGlvc1sxXS5zZWNvbmQpKTsKLSAgRVhQRUNUX1RIQVQocGVyZmVjdF9y
YXRpb3MuYmFjaygpLAotICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1syXS5maXJzdCwg
cmF0aW9zWzJdLnNlY29uZCkpOworICBFWFBFQ1RfTkUob2xkX3B0ciwgYWRkcigwKSk7CiB9CiAK
IC8vIENvbmZpcm0gdGhhdCB3ZSBhc3NlcnQgaWYgd2UgdHJ5IHRvIGVyYXNlKCkgZW5kKCkuCkBA
IC0xOTMxLDkgKzE4NDEsNTIgQEAgVEVTVChUYWJsZURlYXRoVGVzdCwgRXJhc2VPZkVuZEFzc2Vy
dHMpIHsKICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh0LmVyYXNlKHQuZW5kKCkpLCBrRGVh
dGhNc2cpOwogfQogCitURVNUKFJhd0hhc2hTYW1wbGVyVGVzdCwgU2FtcGxlKSB7CisgIC8vIEVu
YWJsZSB0aGUgZmVhdHVyZSBldmVuIGlmIHRoZSBwcm9kIGRlZmF1bHQgaXMgb2ZmLgorICBTZXRI
YXNodGFibGV6RW5hYmxlZCh0cnVlKTsKKyAgU2V0SGFzaHRhYmxlelNhbXBsZVBhcmFtZXRlcigx
MDApOworCisgIGF1dG8mIHNhbXBsZXIgPSBIYXNodGFibGV6U2FtcGxlcjo6R2xvYmFsKCk7Cisg
IHNpemVfdCBzdGFydF9zaXplID0gMDsKKyAgc3RhcnRfc2l6ZSArPSBzYW1wbGVyLkl0ZXJhdGUo
WyZdKGNvbnN0IEhhc2h0YWJsZXpJbmZvJikgeyArK3N0YXJ0X3NpemU7IH0pOworCisgIHN0ZDo6
dmVjdG9yPEludFRhYmxlPiB0YWJsZXM7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDAwMDsg
KytpKSB7CisgICAgdGFibGVzLmVtcGxhY2VfYmFjaygpOworICAgIHRhYmxlcy5iYWNrKCkuaW5z
ZXJ0KDEpOworICB9CisgIHNpemVfdCBlbmRfc2l6ZSA9IDA7CisgIGVuZF9zaXplICs9IHNhbXBs
ZXIuSXRlcmF0ZShbJl0oY29uc3QgSGFzaHRhYmxlekluZm8mKSB7ICsrZW5kX3NpemU7IH0pOwor
CisgIEVYUEVDVF9ORUFSKChlbmRfc2l6ZSAtIHN0YXJ0X3NpemUpIC8gc3RhdGljX2Nhc3Q8ZG91
YmxlPih0YWJsZXMuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgMC4wMSwgMC4wMDUpOworfQorCitU
RVNUKFJhd0hhc2hTYW1wbGVyVGVzdCwgRG9Ob3RTYW1wbGVDdXN0b21BbGxvY2F0b3JzKSB7Cisg
IC8vIEVuYWJsZSB0aGUgZmVhdHVyZSBldmVuIGlmIHRoZSBwcm9kIGRlZmF1bHQgaXMgb2ZmLgor
ICBTZXRIYXNodGFibGV6RW5hYmxlZCh0cnVlKTsKKyAgU2V0SGFzaHRhYmxlelNhbXBsZVBhcmFt
ZXRlcigxMDApOworCisgIGF1dG8mIHNhbXBsZXIgPSBIYXNodGFibGV6U2FtcGxlcjo6R2xvYmFs
KCk7CisgIHNpemVfdCBzdGFydF9zaXplID0gMDsKKyAgc3RhcnRfc2l6ZSArPSBzYW1wbGVyLkl0
ZXJhdGUoWyZdKGNvbnN0IEhhc2h0YWJsZXpJbmZvJikgeyArK3N0YXJ0X3NpemU7IH0pOworCisg
IHN0ZDo6dmVjdG9yPEN1c3RvbUFsbG9jSW50VGFibGU+IHRhYmxlczsKKyAgZm9yIChpbnQgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB0YWJsZXMuZW1wbGFjZV9iYWNrKCk7CisgICAg
dGFibGVzLmJhY2soKS5pbnNlcnQoMSk7CisgIH0KKyAgc2l6ZV90IGVuZF9zaXplID0gMDsKKyAg
ZW5kX3NpemUgKz0gc2FtcGxlci5JdGVyYXRlKFsmXShjb25zdCBIYXNodGFibGV6SW5mbyYpIHsg
KytlbmRfc2l6ZTsgfSk7CisKKyAgRVhQRUNUX05FQVIoKGVuZF9zaXplIC0gc3RhcnRfc2l6ZSkg
LyBzdGF0aWNfY2FzdDxkb3VibGU+KHRhYmxlcy5zaXplKCkpLAorICAgICAgICAgICAgICAwLjAw
LCAwLjAwMSk7Cit9CisKICNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgogVEVTVChTYW5pdGl6ZXIs
IFBvaXNvbmluZ1VudXNlZCkgewogICBJbnRUYWJsZSB0OworICB0LnJlc2VydmUoNSk7CiAgIC8v
IEluc2VydCBzb21ldGhpbmcgdG8gZm9yY2UgYW4gYWxsb2NhdGlvbi4KICAgaW50NjRfdCYgdjEg
PSAqdC5pbnNlcnQoMCkuZmlyc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
dGVzdF9pbnN0YW5jZV90cmFja2VyLmNjCmluZGV4IGIxOGUwYmI3YTFlYTVmZmZkYzk2MThmMWU3
OTNiOGZmOTJlZDkwMzguLjVhNjZjYjRkMTRkMjc3ZTA4NTU4ZTRjOWI2ODdjN2Q4ZjMxYTBjYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNr
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tl
ci5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5oCmluZGV4IGVjNDVm
NTc0MDM3ZmM4ZTBiNjkzN2JjZDhmYzFmNDI3NTZlMDgxMDguLmM0NzMxZGJlM2QxZDhiMzUzNjFk
Y2M0ZGIxZjVjY2MxOWMxZGZjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
dGVzdF9pbnN0YW5jZV90cmFja2VyLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKQEAgLTE4LDEwICsxOCwxMiBAQAogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVk
ZSA8b3N0cmVhbT4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvY29tcGFyZS5oIgorCiBuYW1lc3Bh
Y2UgYWJzbCB7CiBuYW1lc3BhY2UgdGVzdF9pbnRlcm5hbCB7CiAKLS8vIEEgdHlwZSB0aGF0IGNv
dW50cyBudW1iZXIgb2Ygb2NjdXJlbmNlcyBvZiB0aGUgdHlwZSwgdGhlIGxpdmUgb2NjdXJyZW5j
ZXMgb2YKKy8vIEEgdHlwZSB0aGF0IGNvdW50cyBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgdGhl
IHR5cGUsIHRoZSBsaXZlIG9jY3VycmVuY2VzIG9mCiAvLyB0aGUgdHlwZSwgYXMgd2VsbCBhcyB0
aGUgbnVtYmVyIG9mIGNvcGllcywgbW92ZXMsIHN3YXBzLCBhbmQgY29tcGFyaXNvbnMgdGhhdAog
Ly8gaGF2ZSBvY2N1cnJlZCBvbiB0aGUgdHlwZS4gVGhpcyBpcyB1c2VkIGFzIGEgYmFzZSBjbGFz
cyBmb3IgdGhlIGNvcHlhYmxlLAogLy8gY29weWFibGUrbW92YWJsZSwgYW5kIG1vdmFibGUgdHlw
ZXMgYmVsb3cgdGhhdCBhcmUgdXNlZCBpbiBhY3R1YWwgdGVzdHMuIFVzZQpAQCAtOTYsNiArOTgs
MTQgQEAgY2xhc3MgQmFzZUNvdW50ZWRJbnN0YW5jZSB7CiAgICAgcmV0dXJuIHZhbHVlXyA+PSB4
LnZhbHVlXzsKICAgfQogCisgIGFic2w6OndlYWtfb3JkZXJpbmcgY29tcGFyZShjb25zdCBCYXNl
Q291bnRlZEluc3RhbmNlJiB4KSBjb25zdCB7CisgICAgKytudW1fY29tcGFyaXNvbnNfOworICAg
IHJldHVybiB2YWx1ZV8gPCB4LnZhbHVlXworICAgICAgICAgICAgICAgPyBhYnNsOjp3ZWFrX29y
ZGVyaW5nOjpsZXNzCisgICAgICAgICAgICAgICA6IHZhbHVlXyA9PSB4LnZhbHVlXyA/IGFic2w6
OndlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogYWJzbDo6d2Vha19vcmRlcmluZzo6Z3JlYXRlcjsKKyAgfQorCiAgIGludCB2YWx1
ZSgpIGNvbnN0IHsKICAgICBpZiAoIWlzX2xpdmVfKSBzdGQ6OmFib3J0KCk7CiAgICAgcmV0dXJu
IHZhbHVlXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3Rh
bmNlX3RyYWNrZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3Rh
bmNlX3RyYWNrZXJfdGVzdC5jYwppbmRleCAwYWU1NzYzNmRmMjEzMzg5NzkyMTAzOTViYjM5OTZi
YmQ4Yzk3YjhlLi4xYzZhNGZhNzE1MGQzMzQ4N2ViMDc4MTU5MDhmNGFjMTkyY2NlNTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyX3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tl
cl90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0x
NzQsNiArMTc0LDggQEAgVEVTVChUZXN0SW5zdGFuY2VUcmFja2VyLCBDb21wYXJpc29ucykgewog
ICBFWFBFQ1RfRVEoNSwgdHJhY2tlci5jb21wYXJpc29ucygpKTsKICAgRVhQRUNUX0ZBTFNFKG9u
ZSA+PSB0d28pOwogICBFWFBFQ1RfRVEoNiwgdHJhY2tlci5jb21wYXJpc29ucygpKTsKKyAgRVhQ
RUNUX1RSVUUob25lLmNvbXBhcmUodHdvKSA8IDApOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSg3
LCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOwogCiAgIHRyYWNrZXIuUmVzZXRDb3BpZXNNb3Zlc1N3
YXBzKCk7CiAgIEVYUEVDVF9FUSgwLCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3RyYWNrZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC90cmFja2VkLmgKaW5kZXggN2QxNGFmMDMxMzhkM2VmZDY2MjM3Yjc5N2YzZWY3M2Mw
MDNjODgxNS4uNzUxNzNhYjAwYWFjZDE0N2IzZTAwZmU4YTI5YTRjOWM4ZmZiMzg2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3RyYWNrZWQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvdHJhY2tlZC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVk
X21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRl
cmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgKaW5kZXggMmZmYjY0NmNiMjY0YTY1ZWZhNGJlY2Nk
ZWYyY2EyOGUxNGU5YTVkNy4uNjg4MTdlNGU0Y2MwNjQ4YjQyYTQ5OTBjNjEzYzZlY2YxNjExMDkz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfY29u
c3RydWN0b3JfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRf
bWFwX2NvbnN0cnVjdG9yX3Rlc3QuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsK
IHRlbXBsYXRlIDxjbGFzcyBVbm9yZE1hcD4KIGNsYXNzIENvbnN0cnVjdG9yVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3Qge307CiAKLVRZUEVEX1RFU1RfQ0FTRV9QKENvbnN0cnVjdG9yVGVz
dCk7CitUWVBFRF9URVNUX1NVSVRFX1AoQ29uc3RydWN0b3JUZXN0KTsKIAogVFlQRURfVEVTVF9Q
KENvbnN0cnVjdG9yVGVzdCwgTm9BcmdzKSB7CiAgIFR5cGVQYXJhbSBtOwpAQCAtODMsOCArODMs
MjggQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRIYXNoRXF1YWxB
bGxvYykgewogICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKIH0KIAotVFlQRURf
VEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRBbGxvYykgewordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfc3RkX3Vub3JkZXJlZF9tYXAgOiBzdGQ6OmZhbHNlX3R5cGUg
e307CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorc3RydWN0IGlzX3N0ZF91bm9yZGVyZWRf
bWFwPHN0ZDo6dW5vcmRlcmVkX21hcDxULi4uPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKKwogI2lm
IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfTUFQX0NY
WDE3KQordXNpbmcgaGFzX2N4eDE0X3N0ZF9hcGlzID0gc3RkOjp0cnVlX3R5cGU7CisjZWxzZQor
dXNpbmcgaGFzX2N4eDE0X3N0ZF9hcGlzID0gc3RkOjpmYWxzZV90eXBlOworI2VuZGlmCisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgZXhwZWN0X2N4eDE0X2FwaXMgPQorICAgIGFic2w6
OmRpc2p1bmN0aW9uPGFic2w6Om5lZ2F0aW9uPGlzX3N0ZF91bm9yZGVyZWRfbWFwPFQ+PiwKKyAg
ICAgICAgICAgICAgICAgICAgICBoYXNfY3h4MTRfc3RkX2FwaXM+OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHlwZVBhcmFtPgordm9pZCBCdWNrZXRDb3VudEFsbG9jVGVzdChzdGQ6OmZhbHNlX3R5
cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIEJ1Y2tldENvdW50
QWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFy
YW06OmFsbG9jYXRvcl90eXBlOwogICBBIGFsbG9jKDApOwogICBUeXBlUGFyYW0gbSgxMjMsIGFs
bG9jKTsKQEAgLTkyLDExICsxMTIsMTcgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwg
QnVja2V0Q291bnRBbGxvYykgewogICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOwogICBFWFBFQ1Rf
VEhBVChtLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOwogICBFWFBFQ1RfR0Uo
bS5idWNrZXRfY291bnQoKSwgMTIzKTsKLSNlbmRpZgogfQogCi1UWVBFRF9URVNUX1AoQ29uc3Ry
dWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2hBbGxvYykgewotI2lmIGRlZmluZWQoVU5PUkRFUkVE
X01BUF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE3KQorVFlQRURfVEVTVF9Q
KENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRBbGxvYykgeworICBCdWNrZXRDb3VudEFsbG9j
VGVzdDxUeXBlUGFyYW0+KGV4cGVjdF9jeHgxNF9hcGlzPFR5cGVQYXJhbT4oKSk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIEJ1Y2tldENvdW50SGFzaEFsbG9jVGVz
dChzdGQ6OmZhbHNlX3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2
b2lkIEJ1Y2tldENvdW50SGFzaEFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBI
ID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CiAgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBl
UGFyYW06OmFsbG9jYXRvcl90eXBlOwogICBIIGhhc2hlcjsKQEAgLTEwNywxOCArMTMzLDM4IEBA
IFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEFsbG9jKSB7CiAg
IEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CiAgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5v
cmRlcmVkRWxlbWVudHNBcmUoKSk7CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMp
OwotI2VuZGlmCiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldEFsbG9j
KSB7CitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2hBbGxvYykg
eworICBCdWNrZXRDb3VudEhhc2hBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfY3h4MTRfYXBp
czxUeXBlUGFyYW0+KCkpOworfQorCiAjaWYgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0Nf
Q1RPUlMKK3VzaW5nIGhhc19hbGxvY19zdGRfY29uc3RydWN0b3JzID0gc3RkOjp0cnVlX3R5cGU7
CisjZWxzZQordXNpbmcgaGFzX2FsbG9jX3N0ZF9jb25zdHJ1Y3RvcnMgPSBzdGQ6OmZhbHNlX3R5
cGU7CisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBleHBlY3RfYWxsb2Nf
Y29uc3RydWN0b3JzID0KKyAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpuZWdhdGlvbjxpc19z
dGRfdW5vcmRlcmVkX21hcDxUPj4sCisgICAgICAgICAgICAgICAgICAgICAgaGFzX2FsbG9jX3N0
ZF9jb25zdHJ1Y3RvcnM+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBB
bGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBh
cmFtPgordm9pZCBBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNpbmcgQSA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CiAgIEEgYWxsb2MoMCk7CiAgIFR5cGVQYXJh
bSBtKGFsbG9jKTsKICAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CiAgIEVY
UEVDVF9UUlVFKG0uZW1wdHkoKSk7CiAgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRl
cmVkRWxlbWVudHNBcmUoKSk7Ci0jZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9y
VGVzdCwgQWxsb2MpIHsKKyAgQWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2FsbG9jX2NvbnN0
cnVjdG9yczxUeXBlUGFyYW0+KCkpOwogfQogCiBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0
LCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEVxdWFsQWxsb2MpIHsKQEAgLTE0MCw4ICsxODYsMTEg
QEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hF
cXVhbEFsbG9jKSB7CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwogfQogCi1U
WVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2MpIHsK
LSNpZiBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01B
UF9DWFgxNykKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIElucHV0SXRlcmF0
b3JCdWNrZXRBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHlwZVBhcmFtPgordm9pZCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2NUZXN0KHN0ZDo6dHJ1
ZV90eXBlKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQ
YXJhbT47CiAgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOwog
ICBBIGFsbG9jKDApOwpAQCAtMTUyLDExICsyMDEsMTcgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jKSB7CiAgIEVYUEVDVF9FUShtLmdldF9h
bGxvY2F0b3IoKSwgYWxsb2MpOwogICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpV
bm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOwogICBFWFBFQ1RfR0UobS5idWNrZXRf
Y291bnQoKSwgMTIzKTsKLSNlbmRpZgogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0
LCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jKSB7Ci0jaWYgZGVmaW5lZChVTk9SREVSRURf
TUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCitUWVBFRF9URVNUX1Ao
Q29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2MpIHsKKyAgSW5wdXRJdGVy
YXRvckJ1Y2tldEFsbG9jVGVzdDxUeXBlUGFyYW0+KGV4cGVjdF9jeHgxNF9hcGlzPFR5cGVQYXJh
bT4oKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIElucHV0SXRl
cmF0b3JCdWNrZXRIYXNoQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvY1Rl
c3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRl
ZFR5cGU8VHlwZVBhcmFtPjsKICAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVy
OwogICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKQEAgLTE3
MCw3ICsyMjUsMTAgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRv
ckJ1Y2tldEhhc2hBbGxvYykgewogICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9j
KTsKICAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNB
cmVBcnJheSh2YWx1ZXMpKTsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Ci0j
ZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1
Y2tldEhhc2hBbGxvYykgeworICBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jVGVzdDxUeXBl
UGFyYW0+KGV4cGVjdF9jeHgxNF9hcGlzPFR5cGVQYXJhbT4oKSk7CiB9CiAKIFRZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvcikgewpAQCAtMTkwLDggKzI0OCwxMSBA
QCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKICAgRVhQ
RUNUX0VRKG0sIG4pOwogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29u
c3RydWN0b3JBbGxvYykgewotI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JT
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBDb3B5Q29uc3RydWN0b3JBbGxv
Y1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFt
Pgordm9pZCBDb3B5Q29uc3RydWN0b3JBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNp
bmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKICAgdXNpbmcg
SCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOwogICB1c2luZyBFID0gdHlwZW5hbWUgVHlw
ZVBhcmFtOjprZXlfZXF1YWw7CkBAIC0yMDYsNyArMjY3LDEwIEBAIFRZUEVEX1RFU1RfUChDb25z
dHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvckFsbG9jKSB7CiAgIEVYUEVDVF9FUShtLmtleV9l
cSgpLCBuLmtleV9lcSgpKTsKICAgRVhQRUNUX05FKG0uZ2V0X2FsbG9jYXRvcigpLCBuLmdldF9h
bGxvY2F0b3IoKSk7CiAgIEVYUEVDVF9FUShtLCBuKTsKLSNlbmRpZgorfQorCitUWVBFRF9URVNU
X1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3JBbGxvYykgeworICBDb3B5Q29uc3Ry
dWN0b3JBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfYWxsb2NfY29uc3RydWN0b3JzPFR5cGVQ
YXJhbT4oKSk7CiB9CiAKIC8vIFRPRE8oYWxraXMpOiBUZXN0IG5vbi1wcm9wYWdhdGluZyBhbGxv
Y2F0b3JzIG9uIGNvcHkgY29uc3RydWN0b3JzLgpAQCAtMjI5LDggKzI5MywxMSBAQCBUWVBFRF9U
RVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3IpIHsKICAgRVhQRUNUX0VRKG0s
IG4pOwogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3JB
bGxvYykgewotI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JTCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBNb3ZlQ29uc3RydWN0b3JBbGxvY1Rlc3Qoc3Rk
OjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBN
b3ZlQ29uc3RydWN0b3JBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNpbmcgVCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKICAgdXNpbmcgSCA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6aGFzaGVyOwogICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpr
ZXlfZXF1YWw7CkBAIC0yNDYsNyArMzEzLDEwIEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIE1vdmVDb25zdHJ1Y3RvckFsbG9jKSB7CiAgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtl
eV9lcSgpKTsKICAgRVhQRUNUX05FKG0uZ2V0X2FsbG9jYXRvcigpLCBuLmdldF9hbGxvY2F0b3Io
KSk7CiAgIEVYUEVDVF9FUShtLCBuKTsKLSNlbmRpZgorfQorCitUWVBFRF9URVNUX1AoQ29uc3Ry
dWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3JBbGxvYykgeworICBNb3ZlQ29uc3RydWN0b3JBbGxv
Y1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfYWxsb2NfY29uc3RydWN0b3JzPFR5cGVQYXJhbT4oKSk7
CiB9CiAKIC8vIFRPRE8oYWxraXMpOiBUZXN0IG5vbi1wcm9wYWdhdGluZyBhbGxvY2F0b3JzIG9u
IG1vdmUgY29uc3RydWN0b3JzLgpAQCAtMjY5LDggKzMzOSwxMSBAQCBUWVBFRF9URVNUX1AoQ29u
c3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoRXF1YWxBbGxvYykgewogICBF
WFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0
cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MpIHsKLSNpZiBkZWZpbmVkKFVO
T1JERVJFRF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNykKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9j
VGVzdChzdGQ6OmZhbHNlX3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+
Cit2b2lkIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewog
ICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwogICB1
c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKICAgaGFzaF9pbnRl
cm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKQEAgLTI4MCwxMSArMzUzLDE3IEBAIFRZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jKSB7CiAgIEVYUEVD
VF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOwogICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwg
Ojp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOwogICBFWFBFQ1Rf
R0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKLSNlbmRpZgogfQogCi1UWVBFRF9URVNUX1AoQ29u
c3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2MpIHsKLSNpZiBkZWZp
bmVkKFVOT1JERVJFRF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNykK
K1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9j
KSB7CisgIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jVGVzdDxUeXBlUGFyYW0+KGV4cGVjdF9j
eHgxNF9hcGlzPFR5cGVQYXJhbT4oKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFy
YW0+Cit2b2lkIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90
eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbml0aWFsaXpl
ckxpc3RCdWNrZXRIYXNoQWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIFQgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CiAgIHVzaW5nIEggPSB0eXBl
bmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKICAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
YWxsb2NhdG9yX3R5cGU7CkBAIC0yOTcsNyArMzc2LDEwIEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1
Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvYykgewogICBFWFBFQ1RfRVEo
bS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKICAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVz
dGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKICAgRVhQRUNUX0dFKG0u
YnVja2V0X2NvdW50KCksIDEyMyk7Ci0jZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jKSB7CisgIEluaXRpYWxpemVy
TGlzdEJ1Y2tldEhhc2hBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfY3h4MTRfYXBpczxUeXBl
UGFyYW0+KCkpOwogfQogCiBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBBc3NpZ25tZW50
KSB7CkBAIC0zOTAsMTUgKzQ3MiwxNiBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBB
c3NpZ25tZW50T25TZWxmKSB7CiAKIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKAogICAgIENv
bnN0cnVjdG9yVGVzdCwgTm9BcmdzLCBCdWNrZXRDb3VudCwgQnVja2V0Q291bnRIYXNoLCBCdWNr
ZXRDb3VudEhhc2hFcXVhbCwKLSAgICBCdWNrZXRDb3VudEhhc2hFcXVhbEFsbG9jLCBCdWNrZXRD
b3VudEFsbG9jLCBCdWNrZXRDb3VudEhhc2hBbGxvYywKLSAgICBCdWNrZXRBbGxvYywgSW5wdXRJ
dGVyYXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9jLCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2MsCisg
ICAgQnVja2V0Q291bnRIYXNoRXF1YWxBbGxvYywgQnVja2V0Q291bnRBbGxvYywgQnVja2V0Q291
bnRIYXNoQWxsb2MsIEFsbG9jLAorICAgIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoRXF1YWxBbGxv
YywgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jLAogICAgIElucHV0SXRlcmF0b3JCdWNrZXRIYXNo
QWxsb2MsIENvcHlDb25zdHJ1Y3RvciwgQ29weUNvbnN0cnVjdG9yQWxsb2MsCiAgICAgTW92ZUNv
bnN0cnVjdG9yLCBNb3ZlQ29uc3RydWN0b3JBbGxvYywgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFz
aEVxdWFsQWxsb2MsCiAgICAgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MsIEluaXRpYWxpemVy
TGlzdEJ1Y2tldEhhc2hBbGxvYywgQXNzaWdubWVudCwKLSAgICBNb3ZlQXNzaWdubWVudCwgQXNz
aWdubWVudEZyb21Jbml0aWFsaXplckxpc3QsCi0gICAgQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlz
dGluZywgTW92ZUFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3RpbmcsCisgICAgTW92ZUFzc2lnbm1l
bnQsIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0LCBBc3NpZ25tZW50T3ZlcndyaXRlc0V4
aXN0aW5nLAorICAgIE1vdmVBc3NpZ25tZW50T3ZlcndyaXRlc0V4aXN0aW5nLAogICAgIEFzc2ln
bm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0T3ZlcndyaXRlc0V4aXN0aW5nLCBBc3NpZ25tZW50T25T
ZWxmKTsKIAogfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAogfSAgLy8gbmFtZXNw
YWNlIGFic2wKKwogI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURf
TUFQX0NPTlNUUlVDVE9SX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvdW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdC5oCmluZGV4IDFmMWI2YjQ4OWIzMDFlYjlmYWRk
MWJmODQ5MTljYWQ2MzdjOWFiOGIuLmViZDM2MTJiZGYzNzFmM2ZlOGI2MWZlYTZmZjQ4MDk3Mjg0
OWZlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFw
X2xvb2t1cF90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9t
YXBfbG9va3VwX3Rlc3QuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMjYsNyArMjYsNyBAQCBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKIHRlbXBs
YXRlIDxjbGFzcyBVbm9yZE1hcD4KIGNsYXNzIExvb2t1cFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHt9OwogCi1UWVBFRF9URVNUX0NBU0VfUChMb29rdXBUZXN0KTsKK1RZUEVEX1RFU1Rf
U1VJVEVfUChMb29rdXBUZXN0KTsKIAogVFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIEF0KSB7CiAg
IHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CkBAIC0x
MTEsNCArMTExLDUgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoTG9va3VwVGVzdCwgQXQs
IE9wZXJhdG9yQnJhY2tldCwgQ291bnQsIEZpbmQsCiAKIH0gIC8vIG5hbWVzcGFjZSBjb250YWlu
ZXJfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9DT05U
QUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9MT09LVVBfVEVTVF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tZW1iZXJzX3Rlc3QuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYmYzMWFiNDA5NTE2YmI2MzMzZDVlNzY3NGFiNTVhMTNhMzI0Y2M2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbWVtYmVy
c190ZXN0LmgKQEAgLTAsMCArMSw4NSBAQAorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBB
dXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01B
UF9NRU1CRVJTX1RFU1RfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRF
UkVEX01BUF9NRU1CRVJTX1RFU1RfSF8KKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1
ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJh
YnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNv
bnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBVbm9yZE1hcD4KK2NsYXNzIE1l
bWJlcnNUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworVFlQRURfVEVTVF9TVUlU
RV9QKE1lbWJlcnNUZXN0KTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVzZVR5cGUo
KSB7fQorCitUWVBFRF9URVNUX1AoTWVtYmVyc1Rlc3QsIFR5cGVkZWZzKSB7CisgIEVYUEVDVF9U
UlVFKChzdGQ6OmlzX3NhbWU8c3RkOjpwYWlyPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5
X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5
cGVQYXJhbTo6bWFwcGVkX3R5cGU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVu
YW1lIFR5cGVQYXJhbTo6dmFsdWVfdHlwZT4oKSkpOworICBFWFBFQ1RfVFJVRSgoYWJzbDo6Y29u
anVuY3Rpb248CisgICAgICAgICAgICAgICBhYnNsOjpuZWdhdGlvbjxzdGQ6OmlzX3NpZ25lZDx0
eXBlbmFtZSBUeXBlUGFyYW06OnNpemVfdHlwZT4+LAorICAgICAgICAgICAgICAgc3RkOjppc19p
bnRlZ3JhbDx0eXBlbmFtZSBUeXBlUGFyYW06OnNpemVfdHlwZT4+KCkpKTsKKyAgRVhQRUNUX1RS
VUUoKGFic2w6OmNvbmp1bmN0aW9uPAorICAgICAgICAgICAgICAgc3RkOjppc19zaWduZWQ8dHlw
ZW5hbWUgVHlwZVBhcmFtOjpkaWZmZXJlbmNlX3R5cGU+LAorICAgICAgICAgICAgICAgc3RkOjpp
c19pbnRlZ3JhbDx0eXBlbmFtZSBUeXBlUGFyYW06OmRpZmZlcmVuY2VfdHlwZT4+KCkpKTsKKyAg
RVhQRUNUX1RSVUUoKHN0ZDo6aXNfY29udmVydGlibGU8CisgICAgICAgICAgICAgICBkZWNsdHlw
ZShzdGQ6OmRlY2x2YWw8Y29uc3QgdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXImPigpKAorICAg
ICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCB0eXBlbmFtZSBUeXBlUGFyYW06Omtl
eV90eXBlJj4oKSkpLAorICAgICAgICAgICAgICAgc2l6ZV90PigpKSk7CisgIEVYUEVDVF9UUlVF
KChzdGQ6OmlzX2NvbnZlcnRpYmxlPAorICAgICAgICAgICAgICAgZGVjbHR5cGUoc3RkOjpkZWNs
dmFsPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsJj4oKSgKKyAgICAgICAgICAg
ICAgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfdHlwZSY+
KCksCisgICAgICAgICAgICAgICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IHR5cGVuYW1lIFR5cGVQ
YXJhbTo6a2V5X3R5cGUmPigpKSksCisgICAgICAgICAgICAgICBib29sPigpKSk7CisgIEVYUEVD
VF9UUlVFKChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTo6
dmFsdWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFy
YW06OnZhbHVlX3R5cGU+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTx0eXBlbmFt
ZSBUeXBlUGFyYW06OnZhbHVlX3R5cGUmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIFR5cGVQYXJhbTo6cmVmZXJlbmNlPigpKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6Omlz
X3NhbWU8Y29uc3QgdHlwZW5hbWUgVHlwZVBhcmFtOjp2YWx1ZV90eXBlJiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OmNvbnN0X3JlZmVyZW5jZT4oKSkp
OworICBFWFBFQ1RfVFJVRSgoc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6YWxsb2NhdG9yX3Ry
YWl0czwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFt
OjphbGxvY2F0b3JfdHlwZT46OnBvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZW5hbWUgVHlwZVBhcmFtOjpwb2ludGVyPigpKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAg
KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8CisgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlPjo6Y29uc3Rf
cG9pbnRlciwKKyAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjpjb25zdF9w
b2ludGVyPigpKSk7Cit9CisKK1RZUEVEX1RFU1RfUChNZW1iZXJzVGVzdCwgU2ltcGxlRnVuY3Rp
b25zKSB7CisgIEVYUEVDVF9HVChUeXBlUGFyYW0oKS5tYXhfc2l6ZSgpLCAwKTsKK30KKworVFlQ
RURfVEVTVF9QKE1lbWJlcnNUZXN0LCBCZWdpbkVuZCkgeworICBUeXBlUGFyYW0gdCA9IHt0eXBl
bmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGV7fX07CisgIEVYUEVDVF9FUSh0LmJlZ2luKCksIHQu
Y2JlZ2luKCkpOworICBFWFBFQ1RfRVEodC5lbmQoKSwgdC5jZW5kKCkpOworICBFWFBFQ1RfTkUo
dC5iZWdpbigpLCB0LmVuZCgpKTsKKyAgRVhQRUNUX05FKHQuY2JlZ2luKCksIHQuY2VuZCgpKTsK
K30KKworUkVHSVNURVJfVFlQRURfVEVTVF9TVUlURV9QKE1lbWJlcnNUZXN0LCBUeXBlZGVmcywg
U2ltcGxlRnVuY3Rpb25zLCBCZWdpbkVuZCk7CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlO
RVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9NRU1CRVJTX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oCmlu
ZGV4IGI2YzYzM2FlMjczNTdjMTQ1ZTZlMWYyMDZiYTJkMmNjMjRjODg1NGEuLjUyYTEwOTJlNmIy
MjA4ZTRhZGEyY2E0MGU1ZjgwMDY2ZGE0YmRiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaApAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjYsNyArMjYsNyBAQCBuYW1lc3Bh
Y2UgY29udGFpbmVyX2ludGVybmFsIHsKIHRlbXBsYXRlIDxjbGFzcyBVbm9yZE1hcD4KIGNsYXNz
IE1vZGlmaWVyc1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OwogCi1UWVBFRF9URVNU
X0NBU0VfUChNb2RpZmllcnNUZXN0KTsKK1RZUEVEX1RFU1RfU1VJVEVfUChNb2RpZmllcnNUZXN0
KTsKIAogVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIENsZWFyKSB7CiAgIHVzaW5nIFQgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CkBAIC0yNjksNCArMjY5LDUg
QEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoTW9kaWZpZXJzVGVzdCwgQ2xlYXIsIEluc2Vy
dCwgSW5zZXJ0SGludCwKIAogfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAogfSAg
Ly8gbmFtZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9V
Tk9SREVSRURfTUFQX01PRElGSUVSU19URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL3Vub3JkZXJlZF9tYXBfdGVzdC5jYwppbmRleCA0MGU3OTljZGE4OWMzYzkwNTUzYjM4ZGI3
YWIzMmEyYzE0ZWQwMjgwLi43MjU2N2VhYzMzZGMyZDZkYzUwNzc1MTk1YjJjMzE1ZWU4OWE0MDlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX3Rlc3QuY2MK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE2LDYgKzE2LDcg
QEAKIAogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfY29u
c3RydWN0b3JfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3Jk
ZXJlZF9tYXBfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC91bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCIKIAogbmFtZXNwYWNlIGFi
c2wgewpAQCAtMjksOSArMzAsMTAgQEAgdXNpbmcgTWFwVHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVz
PAogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgQWxsb2M8c3RkOjpwYWlyPGNvbnN0IHN0ZDo6c3RyaW5nLCBzdGQ6OnN0
cmluZz4+Pj47CiAKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVub3JkZXJlZE1hcCwg
Q29uc3RydWN0b3JUZXN0LCBNYXBUeXBlcyk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChVbm9yZGVyZWRNYXAsIExvb2t1cFRlc3QsIE1hcFR5cGVzKTsKLUlOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKFVub3JkZXJlZE1hcCwgTW9kaWZpZXJzVGVzdCwgTWFwVHlwZXMpOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKFVub3JkZXJlZE1hcCwgQ29uc3RydWN0b3JUZXN0
LCBNYXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoVW5vcmRlcmVkTWFw
LCBMb29rdXBUZXN0LCBNYXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1Ao
VW5vcmRlcmVkTWFwLCBNZW1iZXJzVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9TVUlURV9QKFVub3JkZXJlZE1hcCwgTW9kaWZpZXJzVGVzdCwgTWFwVHlwZXMpOwogCiB9
ICAvLyBuYW1lc3BhY2UKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9y
X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVj
dG9yX3Rlc3QuaAppbmRleCBjYjU5MzcwNDY4NWM0N2ZhYmExMzAzZTJjNTM5N2JjMTU1MjQ0ZTIy
Li5mNDg0NDY4MzkzZTRjZThkM2YwMzBhZWY4OWNjMmY3OGZiYzkzMmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3Jf
dGVzdC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNiwx
MiArMTYsMTQgQEAKICNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NF
VF9DT05TVFJVQ1RPUl9URVNUX0hfCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
dW5vcmRlcmVkX3NldD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJnbW9jay9nbW9j
ay5oIgogI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgogI2luY2x1ZGUgImFic2wvY29udGFp
bmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEv
dHlwZV90cmFpdHMuaCIKIAogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIGNvbnRhaW5lcl9p
bnRlcm5hbCB7CkBAIC0yOSw3ICszMSw3IEBAIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwg
ewogdGVtcGxhdGUgPGNsYXNzIFVub3JkTWFwPgogY2xhc3MgQ29uc3RydWN0b3JUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7fTsKIAotVFlQRURfVEVTVF9DQVNFX1AoQ29uc3RydWN0b3JU
ZXN0KTsKK1RZUEVEX1RFU1RfU1VJVEVfUChDb25zdHJ1Y3RvclRlc3QpOwogCiBUWVBFRF9URVNU
X1AoQ29uc3RydWN0b3JUZXN0LCBOb0FyZ3MpIHsKICAgVHlwZVBhcmFtIG07CkBAIC05MSw4ICs5
MywyOCBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2hFcXVh
bEFsbG9jKSB7CiAgIEVYUEVDVF9HRShjbS5idWNrZXRfY291bnQoKSwgMTIzKTsKIH0KIAotVFlQ
RURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRBbGxvYykgewordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfc3RkX3Vub3JkZXJlZF9zZXQgOiBzdGQ6OmZhbHNlX3R5
cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorc3RydWN0IGlzX3N0ZF91bm9yZGVy
ZWRfc2V0PHN0ZDo6dW5vcmRlcmVkX3NldDxULi4uPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKKwog
I2lmIGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfU0VU
X0NYWDE3KQordXNpbmcgaGFzX2N4eDE0X3N0ZF9hcGlzID0gc3RkOjp0cnVlX3R5cGU7CisjZWxz
ZQordXNpbmcgaGFzX2N4eDE0X3N0ZF9hcGlzID0gc3RkOjpmYWxzZV90eXBlOworI2VuZGlmCisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgZXhwZWN0X2N4eDE0X2FwaXMgPQorICAgIGFi
c2w6OmRpc2p1bmN0aW9uPGFic2w6Om5lZ2F0aW9uPGlzX3N0ZF91bm9yZGVyZWRfc2V0PFQ+PiwK
KyAgICAgICAgICAgICAgICAgICAgICBoYXNfY3h4MTRfc3RkX2FwaXM+OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBCdWNrZXRDb3VudEFsbG9jVGVzdChzdGQ6OmZhbHNl
X3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIEJ1Y2tldENv
dW50QWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBl
UGFyYW06OmFsbG9jYXRvcl90eXBlOwogICBBIGFsbG9jKDApOwogICBUeXBlUGFyYW0gbSgxMjMs
IGFsbG9jKTsKQEAgLTEwMCwxMSArMTIyLDE3IEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIEJ1Y2tldENvdW50QWxsb2MpIHsKICAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKICAgRVhQ
RUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKICAg
RVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Ci0jZW5kaWYKIH0KIAotVFlQRURfVEVT
VF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRIYXNoQWxsb2MpIHsKLSNpZiBkZWZpbmVk
KFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykKK1RZ
UEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50QWxsb2MpIHsKKyAgQnVja2V0
Q291bnRBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfY3h4MTRfYXBpczxUeXBlUGFyYW0+KCkp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBCdWNrZXRDb3VudEhh
c2hBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlw
ZVBhcmFtPgordm9pZCBCdWNrZXRDb3VudEhhc2hBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsK
ICAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOwogICB1c2luZyBBID0gdHlw
ZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKICAgSCBoYXNoZXI7CkBAIC0xMTUsMTgg
KzE0MywzOCBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2hB
bGxvYykgewogICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOwogICBFWFBFQ1RfVEhBVChrZXlzKG0p
LCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOwogICBFWFBFQ1RfR0UobS5idWNr
ZXRfY291bnQoKSwgMTIzKTsKLSNlbmRpZgogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBCdWNrZXRBbGxvYykgeworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0
Q291bnRIYXNoQWxsb2MpIHsKKyAgQnVja2V0Q291bnRIYXNoQWxsb2NUZXN0PFR5cGVQYXJhbT4o
ZXhwZWN0X2N4eDE0X2FwaXM8VHlwZVBhcmFtPigpKTsKK30KKwogI2lmIEFCU0xfVU5PUkRFUkVE
X1NVUFBPUlRTX0FMTE9DX0NUT1JTCit1c2luZyBoYXNfYWxsb2Nfc3RkX2NvbnN0cnVjdG9ycyA9
IHN0ZDo6dHJ1ZV90eXBlOworI2Vsc2UKK3VzaW5nIGhhc19hbGxvY19zdGRfY29uc3RydWN0b3Jz
ID0gc3RkOjpmYWxzZV90eXBlOworI2VuZGlmCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNp
bmcgZXhwZWN0X2FsbG9jX2NvbnN0cnVjdG9ycyA9CisgICAgYWJzbDo6ZGlzanVuY3Rpb248YWJz
bDo6bmVnYXRpb248aXNfc3RkX3Vub3JkZXJlZF9zZXQ8VD4+LAorICAgICAgICAgICAgICAgICAg
ICAgIGhhc19hbGxvY19zdGRfY29uc3RydWN0b3JzPjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5
cGVQYXJhbT4KK3ZvaWQgQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAg
IHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOwogICBBIGFsbG9j
KDApOwogICBUeXBlUGFyYW0gbShhbGxvYyk7CiAgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3Io
KSwgYWxsb2MpOwogICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOwogICBFWFBFQ1RfVEhBVChrZXlz
KG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOwotI2VuZGlmCit9CisKK1RZ
UEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEFsbG9jKSB7CisgIEFsbG9jVGVzdDxUeXBlUGFy
YW0+KGV4cGVjdF9hbGxvY19jb25zdHJ1Y3RvcnM8VHlwZVBhcmFtPigpKTsKIH0KIAogVFlQRURf
VEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9j
KSB7CkBAIC0xNDgsOCArMTk2LDExIEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElu
cHV0SXRlcmF0b3JCdWNrZXRIYXNoRXF1YWxBbGxvYykgewogICBFWFBFQ1RfR0UobS5idWNrZXRf
Y291bnQoKSwgMTIzKTsKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJ
dGVyYXRvckJ1Y2tldEFsbG9jKSB7Ci0jaWYgZGVmaW5lZChVTk9SREVSRURfU0VUX0NYWDE0KSB8
fCBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTcpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBh
cmFtPgordm9pZCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkg
e30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgSW5wdXRJdGVyYXRvckJ1
Y2tldEFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwogICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjphbGxvY2F0b3JfdHlwZTsKICAgQSBhbGxvYygwKTsKQEAgLTE2MCwxMSArMjExLDE3IEBA
IFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNrZXRBbGxvYykg
ewogICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKICAgRVhQRUNUX1RIQVQo
a2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOwog
ICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKLSNlbmRpZgogfQogCi1UWVBFRF9U
RVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jKSB7Ci0j
aWYgZGVmaW5lZChVTk9SREVSRURfU0VUX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9TRVRf
Q1hYMTcpCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0
QWxsb2MpIHsKKyAgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jVGVzdDxUeXBlUGFyYW0+KGV4cGVj
dF9jeHgxNF9hcGlzPFR5cGVQYXJhbT4oKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBl
UGFyYW0+Cit2b2lkIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxsb2NUZXN0KHN0ZDo6ZmFsc2Vf
dHlwZSkge30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgSW5wdXRJdGVy
YXRvckJ1Y2tldEhhc2hBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNpbmcgVCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKICAgdXNpbmcgSCA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6aGFzaGVyOwogICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjph
bGxvY2F0b3JfdHlwZTsKQEAgLTE3OCw3ICsyMzUsMTAgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvYykgewogICBFWFBFQ1RfRVEobS5n
ZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKICAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5n
OjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOwogICBFWFBFQ1RfR0UobS5idWNr
ZXRfY291bnQoKSwgMTIzKTsKLSNlbmRpZgorfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jKSB7CisgIElucHV0SXRlcmF0b3JCdWNr
ZXRIYXNoQWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2N4eDE0X2FwaXM8VHlwZVBhcmFtPigp
KTsKIH0KIAogVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7
CkBAIC0xOTYsMTAgKzI1NiwxNCBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5
Q29uc3RydWN0b3IpIHsKICAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkpOwogICBF
WFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKICAgRVhQRUNU
X0VRKG0sIG4pOworICBFWFBFQ1RfTkUoVHlwZVBhcmFtKDAsIGhhc2hlciwgZXF1YWwsIGFsbG9j
KSwgbik7CiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3Rv
ckFsbG9jKSB7Ci0jaWYgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIENvcHlDb25zdHJ1Y3RvckFsbG9jVGVzdChz
dGQ6OmZhbHNlX3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lk
IENvcHlDb25zdHJ1Y3RvckFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBUID0g
aGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwogICB1c2luZyBIID0gdHlw
ZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CiAgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06
OmtleV9lcXVhbDsKQEAgLTIxNCw3ICsyNzgsMTAgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9y
VGVzdCwgQ29weUNvbnN0cnVjdG9yQWxsb2MpIHsKICAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4u
a2V5X2VxKCkpOwogICBFWFBFQ1RfTkUobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRv
cigpKTsKICAgRVhQRUNUX0VRKG0sIG4pOwotI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25z
dHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvckFsbG9jKSB7CisgIENvcHlDb25zdHJ1Y3RvckFs
bG9jVGVzdDxUeXBlUGFyYW0+KGV4cGVjdF9hbGxvY19jb25zdHJ1Y3RvcnM8VHlwZVBhcmFtPigp
KTsKIH0KIAogLy8gVE9ETyhhbGtpcyk6IFRlc3Qgbm9uLXByb3BhZ2F0aW5nIGFsbG9jYXRvcnMg
b24gY29weSBjb25zdHJ1Y3RvcnMuCkBAIC0yMzcsOCArMzA0LDExIEBAIFRZUEVEX1RFU1RfUChD
b25zdHJ1Y3RvclRlc3QsIE1vdmVDb25zdHJ1Y3RvcikgewogICBFWFBFQ1RfRVEobSwgbik7CiB9
CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE1vdmVDb25zdHJ1Y3RvckFsbG9jKSB7
Ci0jaWYgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUeXBlUGFyYW0+Cit2b2lkIE1vdmVDb25zdHJ1Y3RvckFsbG9jVGVzdChzdGQ6OmZhbHNl
X3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIE1vdmVDb25z
dHJ1Y3RvckFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBUID0gaGFzaF9pbnRl
cm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwogICB1c2luZyBIID0gdHlwZW5hbWUgVHlw
ZVBhcmFtOjpoYXNoZXI7CiAgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVh
bDsKQEAgLTI1NCw3ICszMjQsMTAgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92
ZUNvbnN0cnVjdG9yQWxsb2MpIHsKICAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkp
OwogICBFWFBFQ1RfTkUobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKICAg
RVhQRUNUX0VRKG0sIG4pOwotI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIE1vdmVDb25zdHJ1Y3RvckFsbG9jKSB7CisgIE1vdmVDb25zdHJ1Y3RvckFsbG9jVGVzdDxU
eXBlUGFyYW0+KGV4cGVjdF9hbGxvY19jb25zdHJ1Y3RvcnM8VHlwZVBhcmFtPigpKTsKIH0KIAog
Ly8gVE9ETyhhbGtpcyk6IFRlc3Qgbm9uLXByb3BhZ2F0aW5nIGFsbG9jYXRvcnMgb24gbW92ZSBj
b25zdHJ1Y3RvcnMuCkBAIC0yNzcsOCArMzUwLDExIEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3Rv
clRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hFcXVhbEFsbG9jKSB7CiAgIEVYUEVDVF9H
RShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvYykgewotI2lmIGRlZmluZWQoVU5PUkRFUkVE
X1NFVF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfU0VUX0NYWDE3KQordGVtcGxhdGUgPHR5
cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2NUZXN0KHN0
ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQg
SW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5n
IFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CiAgIHVzaW5nIEEg
PSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOwogICBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0b3I8VD4gZ2VuOwpAQCAtMjg4LDExICszNjQsMTcgQEAgVFlQRURfVEVTVF9QKENvbnN0
cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MpIHsKICAgRVhQRUNUX0VRKG0u
Z2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CiAgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGlu
Zzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKICAgRVhQRUNUX0dFKG0uYnVj
a2V0X2NvdW50KCksIDEyMyk7Ci0jZW5kaWYKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVjdG9y
VGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jKSB7Ci0jaWYgZGVmaW5lZChVTk9S
REVSRURfU0VUX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTcpCitUWVBFRF9U
RVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvYykgeworICBJ
bml0aWFsaXplckxpc3RCdWNrZXRBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfY3h4MTRfYXBp
czxUeXBlUGFyYW0+KCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9p
ZCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgSW5pdGlhbGl6ZXJMaXN0QnVj
a2V0SGFzaEFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBUID0gaGFzaF9pbnRl
cm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwogICB1c2luZyBIID0gdHlwZW5hbWUgVHlw
ZVBhcmFtOjpoYXNoZXI7CiAgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRv
cl90eXBlOwpAQCAtMzA1LDEwICszODcsMTMgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVz
dCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jKSB7CiAgIEVYUEVDVF9FUShtLmdldF9h
bGxvY2F0b3IoKSwgYWxsb2MpOwogICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVu
b3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9j
b3VudCgpLCAxMjMpOwotI2VuZGlmCiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3Qs
IEFzc2lnbm1lbnQpIHsKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVy
TGlzdEJ1Y2tldEhhc2hBbGxvYykgeworICBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2NU
ZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2N4eDE0X2FwaXM8VHlwZVBhcmFtPigpKTsKK30KKworVFlQ
RURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQ29weUFzc2lnbm1lbnQpIHsKICAgdXNpbmcgVCA9
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKICAgdXNpbmcgSCA9IHR5
cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOwogICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjprZXlfZXF1YWw7CkBAIC0zOTQsMTUgKzQ3OSwxNiBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0
b3JUZXN0LCBBc3NpZ25tZW50T25TZWxmKSB7CiAKIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9Q
KAogICAgIENvbnN0cnVjdG9yVGVzdCwgTm9BcmdzLCBCdWNrZXRDb3VudCwgQnVja2V0Q291bnRI
YXNoLCBCdWNrZXRDb3VudEhhc2hFcXVhbCwKLSAgICBCdWNrZXRDb3VudEhhc2hFcXVhbEFsbG9j
LCBCdWNrZXRDb3VudEFsbG9jLCBCdWNrZXRDb3VudEhhc2hBbGxvYywKLSAgICBCdWNrZXRBbGxv
YywgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9jLCBJbnB1dEl0ZXJhdG9yQnVja2V0
QWxsb2MsCisgICAgQnVja2V0Q291bnRIYXNoRXF1YWxBbGxvYywgQnVja2V0Q291bnRBbGxvYywg
QnVja2V0Q291bnRIYXNoQWxsb2MsIEFsbG9jLAorICAgIElucHV0SXRlcmF0b3JCdWNrZXRIYXNo
RXF1YWxBbGxvYywgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jLAogICAgIElucHV0SXRlcmF0b3JC
dWNrZXRIYXNoQWxsb2MsIENvcHlDb25zdHJ1Y3RvciwgQ29weUNvbnN0cnVjdG9yQWxsb2MsCiAg
ICAgTW92ZUNvbnN0cnVjdG9yLCBNb3ZlQ29uc3RydWN0b3JBbGxvYywgSW5pdGlhbGl6ZXJMaXN0
QnVja2V0SGFzaEVxdWFsQWxsb2MsCi0gICAgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MsIElu
aXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvYywgQXNzaWdubWVudCwKLSAgICBNb3ZlQXNzaWdu
bWVudCwgQXNzaWdubWVudEZyb21Jbml0aWFsaXplckxpc3QsCi0gICAgQXNzaWdubWVudE92ZXJ3
cml0ZXNFeGlzdGluZywgTW92ZUFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3RpbmcsCisgICAgSW5p
dGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvYywg
Q29weUFzc2lnbm1lbnQsCisgICAgTW92ZUFzc2lnbm1lbnQsIEFzc2lnbm1lbnRGcm9tSW5pdGlh
bGl6ZXJMaXN0LCBBc3NpZ25tZW50T3ZlcndyaXRlc0V4aXN0aW5nLAorICAgIE1vdmVBc3NpZ25t
ZW50T3ZlcndyaXRlc0V4aXN0aW5nLAogICAgIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0
T3ZlcndyaXRlc0V4aXN0aW5nLCBBc3NpZ25tZW50T25TZWxmKTsKIAogfSAgLy8gbmFtZXNwYWNl
IGNvbnRhaW5lcl9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBB
QlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0NPTlNUUlVDVE9SX1RFU1RfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1
cF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9sb29rdXBf
dGVzdC5oCmluZGV4IGFjYTljNmE1ZGY3YjcyNWMxNzU5OTNmNDcwNjlkYTRlOTIxNzI5ZDMuLjA1
YjMyYjVkOTA2Yjk2NDIzYjAyNjI2MTVlOWY5MDRjNjcyYTViZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaApAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjYsNyArMjYsNyBAQCBuYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKIHRlbXBsYXRlIDxjbGFzcyBVbm9yZFNldD4KIGNs
YXNzIExvb2t1cFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OwogCi1UWVBFRF9URVNU
X0NBU0VfUChMb29rdXBUZXN0KTsKK1RZUEVEX1RFU1RfU1VJVEVfUChMb29rdXBUZXN0KTsKIAog
VFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIENvdW50KSB7CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVy
bmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CkBAIC04NSw0ICs4NSw1IEBAIFJFR0lTVEVS
X1RZUEVEX1RFU1RfQ0FTRV9QKExvb2t1cFRlc3QsIENvdW50LCBGaW5kLCBFcXVhbFJhbmdlKTsK
IAogfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFi
c2wKKwogI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0xP
T0tVUF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRl
cmVkX3NldF9tZW1iZXJzX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVy
ZWRfc2V0X21lbWJlcnNfdGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5NmM5NDVhMTFiZGY1OTgyNDExN2Zl
ZWZmNTIzOTFhYzdiZjhhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdW5vcmRlcmVkX3NldF9tZW1iZXJzX3Rlc3QuaApAQCAtMCwwICsxLDg0IEBACisvLyBD
b3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRB
SU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX01FTUJFUlNfVEVTVF9IXworI2RlZmluZSBBQlNM
X0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX01FTUJFUlNfVEVTVF9IXworCisjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorCituYW1l
c3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUg
PGNsYXNzIFVub3JkU2V0PgorY2xhc3MgTWVtYmVyc1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHt9OworCitUWVBFRF9URVNUX1NVSVRFX1AoTWVtYmVyc1Rlc3QpOworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3ZvaWQgVXNlVHlwZSgpIHt9CisKK1RZUEVEX1RFU1RfUChNZW1iZXJzVGVz
dCwgVHlwZWRlZnMpIHsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUeXBl
UGFyYW06OmtleV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5
cGVQYXJhbTo6dmFsdWVfdHlwZT4oKSkpOworICBFWFBFQ1RfVFJVRSgoYWJzbDo6Y29uanVuY3Rp
b248CisgICAgICAgICAgICAgICBhYnNsOjpuZWdhdGlvbjxzdGQ6OmlzX3NpZ25lZDx0eXBlbmFt
ZSBUeXBlUGFyYW06OnNpemVfdHlwZT4+LAorICAgICAgICAgICAgICAgc3RkOjppc19pbnRlZ3Jh
bDx0eXBlbmFtZSBUeXBlUGFyYW06OnNpemVfdHlwZT4+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKGFi
c2w6OmNvbmp1bmN0aW9uPAorICAgICAgICAgICAgICAgc3RkOjppc19zaWduZWQ8dHlwZW5hbWUg
VHlwZVBhcmFtOjpkaWZmZXJlbmNlX3R5cGU+LAorICAgICAgICAgICAgICAgc3RkOjppc19pbnRl
Z3JhbDx0eXBlbmFtZSBUeXBlUGFyYW06OmRpZmZlcmVuY2VfdHlwZT4+KCkpKTsKKyAgRVhQRUNU
X1RSVUUoKHN0ZDo6aXNfY29udmVydGlibGU8CisgICAgICAgICAgICAgICBkZWNsdHlwZShzdGQ6
OmRlY2x2YWw8Y29uc3QgdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXImPigpKAorICAgICAgICAg
ICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV90eXBl
Jj4oKSkpLAorICAgICAgICAgICAgICAgc2l6ZV90PigpKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6
OmlzX2NvbnZlcnRpYmxlPAorICAgICAgICAgICAgICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPGNv
bnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsJj4oKSgKKyAgICAgICAgICAgICAgICAg
ICBzdGQ6OmRlY2x2YWw8Y29uc3QgdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfdHlwZSY+KCksCisg
ICAgICAgICAgICAgICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6
a2V5X3R5cGUmPigpKSksCisgICAgICAgICAgICAgICBib29sPigpKSk7CisgIEVYUEVDVF9UUlVF
KChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTo6dmFsdWVf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OnZh
bHVlX3R5cGU+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUeXBl
UGFyYW06OnZhbHVlX3R5cGUmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1l
IFR5cGVQYXJhbTo6cmVmZXJlbmNlPigpKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3NhbWU8
Y29uc3QgdHlwZW5hbWUgVHlwZVBhcmFtOjp2YWx1ZV90eXBlJiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OmNvbnN0X3JlZmVyZW5jZT4oKSkpOworICBF
WFBFQ1RfVFJVRSgoc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxv
Y2F0b3JfdHlwZT46OnBvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5h
bWUgVHlwZVBhcmFtOjpwb2ludGVyPigpKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgKHN0ZDo6
aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8CisgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlPjo6Y29uc3RfcG9pbnRl
ciwKKyAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjpjb25zdF9wb2ludGVy
PigpKSk7Cit9CisKK1RZUEVEX1RFU1RfUChNZW1iZXJzVGVzdCwgU2ltcGxlRnVuY3Rpb25zKSB7
CisgIEVYUEVDVF9HVChUeXBlUGFyYW0oKS5tYXhfc2l6ZSgpLCAwKTsKK30KKworVFlQRURfVEVT
VF9QKE1lbWJlcnNUZXN0LCBCZWdpbkVuZCkgeworICBUeXBlUGFyYW0gdCA9IHt0eXBlbmFtZSBU
eXBlUGFyYW06OnZhbHVlX3R5cGV7fX07CisgIEVYUEVDVF9FUSh0LmJlZ2luKCksIHQuY2JlZ2lu
KCkpOworICBFWFBFQ1RfRVEodC5lbmQoKSwgdC5jZW5kKCkpOworICBFWFBFQ1RfTkUodC5iZWdp
bigpLCB0LmVuZCgpKTsKKyAgRVhQRUNUX05FKHQuY2JlZ2luKCksIHQuY2VuZCgpKTsKK30KKwor
UkVHSVNURVJfVFlQRURfVEVTVF9TVUlURV9QKE1lbWJlcnNUZXN0LCBUeXBlZGVmcywgU2ltcGxl
RnVuY3Rpb25zLCBCZWdpbkVuZCk7CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJu
YWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5U
RVJOQUxfVU5PUkRFUkVEX1NFVF9NRU1CRVJTX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oCmluZGV4IDli
ZWFjZjMzMTY5NzNkZDdiY2RjYjkzODJhMTM2YzE4ZDBhOGM3NmIuLjc5YThkNDIyYmUxZWY0ZmE0
MzVmMGJhOTkyNGE5NmU5MzE3NzU5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaApAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjYsNyArMjYsNyBAQCBuYW1lc3BhY2UgY29u
dGFpbmVyX2ludGVybmFsIHsKIHRlbXBsYXRlIDxjbGFzcyBVbm9yZFNldD4KIGNsYXNzIE1vZGlm
aWVyc1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OwogCi1UWVBFRF9URVNUX0NBU0Vf
UChNb2RpZmllcnNUZXN0KTsKK1RZUEVEX1RFU1RfU1VJVEVfUChNb2RpZmllcnNUZXN0KTsKIAog
VFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIENsZWFyKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CkBAIC0xODQsNCArMTg0LDUgQEAgUkVH
SVNURVJfVFlQRURfVEVTVF9DQVNFX1AoTW9kaWZpZXJzVGVzdCwgQ2xlYXIsIEluc2VydCwgSW5z
ZXJ0SGludCwKIAogfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAogfSAgLy8gbmFt
ZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVS
RURfU0VUX01PRElGSUVSU19URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdW5vcmRlcmVkX3NldF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vu
b3JkZXJlZF9zZXRfdGVzdC5jYwppbmRleCAxMjgxY2U1M2Q1ZTJlNDA3MjhmYjZjYThkZDkwYzBj
OTQ5OGFlZmEzLi42NDc4ZmFjMTdjN2QxYzI1ZGNjODMxMThkZGNkZTVjZDQ0ZWQwZjBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF90ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X3Rlc3QuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE2LDIxICsxNiwyMyBAQAog
CiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9jb25zdHJ1
Y3Rvcl90ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVk
X3NldF9sb29rdXBfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vu
b3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oIgogCiBuYW1lc3BhY2UgYWJzbCB7
CiBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKIG5hbWVzcGFjZSB7CiAKLXVzaW5nIFNl
dFR5cGVzID0KLSAgICA6OnRlc3Rpbmc6OlR5cGVzPHN0ZDo6dW5vcmRlcmVkX3NldDxpbnQsIFN0
YXRlZnVsVGVzdGluZ0hhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPGludD4+LAotICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp1bm9yZGVyZWRfc2V0PHN0ZDo6c3RyaW5nLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsVGVzdGluZ0Vx
dWFsLCBBbGxvYzxzdGQ6OnN0cmluZz4+PjsKK3VzaW5nIFNldFR5cGVzID0gOjp0ZXN0aW5nOjpU
eXBlczwKKyAgICBzdGQ6OnVub3JkZXJlZF9zZXQ8aW50LCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLCBT
dGF0ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgQWxsb2M8aW50Pj4s
CisgICAgc3RkOjp1bm9yZGVyZWRfc2V0PHN0ZDo6c3RyaW5nLCBTdGF0ZWZ1bFRlc3RpbmdIYXNo
LCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgQWxsb2M8c3Rk
OjpzdHJpbmc+Pj47CiAKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVub3JkZXJlZFNl
dCwgQ29uc3RydWN0b3JUZXN0LCBTZXRUeXBlcyk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NB
U0VfUChVbm9yZGVyZWRTZXQsIExvb2t1cFRlc3QsIFNldFR5cGVzKTsKLUlOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKFVub3JkZXJlZFNldCwgTW9kaWZpZXJzVGVzdCwgU2V0VHlwZXMpOwor
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKFVub3JkZXJlZFNldCwgQ29uc3RydWN0b3JU
ZXN0LCBTZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoVW5vcmRlcmVk
U2V0LCBMb29rdXBUZXN0LCBTZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRF
X1AoVW5vcmRlcmVkU2V0LCBNZW1iZXJzVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9TVUlURV9QKFVub3JkZXJlZFNldCwgTW9kaWZpZXJzVGVzdCwgU2V0VHlwZXMpOwog
CiB9ICAvLyBuYW1lc3BhY2UKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFwLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvbm9kZV9oYXNoX21hcC5oCmluZGV4IDYzNjllYzNhZDY0MzFhNDdlNjQzMTY1ODhlNDY3MTQz
MTdlNjFkOWEuLmE4NDFmNWFiZDAwMDIzZWIxMTRlZDg2NDY4ZmJiMzRiZGI3ZDBlZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFwLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL25vZGVfaGFzaF9tYXAuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL2FsZ29yaXRobS9jb250YWluZXIuaCIKICNpbmNs
dWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiCiAjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAgLy8g
SVdZVSBwcmFnbWE6IGV4cG9ydAogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL25v
ZGVfaGFzaF9wb2xpY3kuaCIKQEAgLTcxLDcgKzcyLDcgQEAgY2xhc3MgTm9kZUhhc2hNYXBQb2xp
Y3k7CiAvLyBCeSBkZWZhdWx0LCBgbm9kZV9oYXNoX21hcGAgdXNlcyB0aGUgYGFic2w6Okhhc2hg
IGhhc2hpbmcgZnJhbWV3b3JrLgogLy8gQWxsIGZ1bmRhbWVudGFsIGFuZCBBYnNlaWwgdHlwZXMg
dGhhdCBzdXBwb3J0IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrIGhhdmUKIC8vIGEgY29tcGF0
aWJsZSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgY29tcGFyaW5nIGluc2VydGlvbnMgaW50byBgbm9k
ZV9oYXNoX21hcGAuCi0vLyBJZiB5b3VyIHR5cGUgaXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhl
IGBhc2JsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQorLy8gSWYgeW91ciB0eXBlIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkIGJ5IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrLCBzZWUKIC8vIGFic2wvaGFz
aC9oYXNoLmggZm9yIGluZm9ybWF0aW9uIG9uIGV4dGVuZGluZyBBYnNlaWwgaGFzaGluZyB0byB1
c2VyLWRlZmluZWQKIC8vIHR5cGVzLgogLy8KQEAgLTkxLDcgKzkyLDcgQEAgY2xhc3MgTm9kZUhh
c2hNYXBQb2xpY3k7CiAvLyAgc3RkOjpzdHJpbmcgc2VhcmNoX2tleSA9ICJiIjsKIC8vICBhdXRv
IHJlc3VsdCA9IGR1Y2tzLmZpbmQoc2VhcmNoX2tleSk7CiAvLyAgaWYgKHJlc3VsdCAhPSBkdWNr
cy5lbmQoKSkgewotLy8gICAgc3RkOjpjb3V0IDw8ICJSZXN1bHQ6ICIgPDwgc2VhcmNoX2tleS0+
c2Vjb25kIDw8IHN0ZDo6ZW5kbDsKKy8vICAgIHN0ZDo6Y291dCA8PCAiUmVzdWx0OiAiIDw8IHJl
c3VsdC0+c2Vjb25kIDw8IHN0ZDo6ZW5kbDsKIC8vICB9CiB0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBj
bGFzcyBWYWx1ZSwKICAgICAgICAgICBjbGFzcyBIYXNoID0gYWJzbDo6Y29udGFpbmVyX2ludGVy
bmFsOjpoYXNoX2RlZmF1bHRfaGFzaDxLZXk+LApAQCAtMTA0LDYgKzEwNSw0NiBAQCBjbGFzcyBu
b2RlX2hhc2hfbWFwCiAgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBub2RlX2hhc2hfbWFwOjpyYXdf
aGFzaF9tYXA7CiAKICBwdWJsaWM6CisgIC8vIENvbnN0cnVjdG9ycyBhbmQgQXNzaWdubWVudCBP
cGVyYXRvcnMKKyAgLy8KKyAgLy8gQSBub2RlX2hhc2hfbWFwIHN1cHBvcnRzIHRoZSBzYW1lIG92
ZXJsb2FkIHNldCBhcyBgc3RkOjp1bm9yZGVyZWRfbWFwYAorICAvLyBmb3IgY29uc3RydWN0aW9u
IGFuZCBhc3NpZ25tZW50OgorICAvLworICAvLyAqICBEZWZhdWx0IGNvbnN0cnVjdG9yCisgIC8v
CisgIC8vICAgIC8vIE5vIGFsbG9jYXRpb24gZm9yIHRoZSB0YWJsZSdzIGVsZW1lbnRzIGlzIG1h
ZGUuCisgIC8vICAgIGFic2w6Om5vZGVfaGFzaF9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwMTsK
KyAgLy8KKyAgLy8gKiBJbml0aWFsaXplciBMaXN0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAg
YWJzbDo6bm9kZV9oYXNoX21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXAyID0KKyAgLy8gICAgICAg
e3sxLCAiaHVleSJ9LCB7MiwgImRld2V5In0sIHszLCAibG91aWUifSx9OworICAvLworICAvLyAq
IENvcHkgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpub2RlX2hhc2hfbWFwPGludCwg
c3RkOjpzdHJpbmc+IG1hcDMobWFwMik7CisgIC8vCisgIC8vICogQ29weSBhc3NpZ25tZW50IG9w
ZXJhdG9yCisgIC8vCisgIC8vICAvLyBIYXNoIGZ1bmN0b3IgYW5kIENvbXBhcmF0b3IgYXJlIGNv
cGllZCBhcyB3ZWxsCisgIC8vICBhYnNsOjpub2RlX2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+
IG1hcDQ7CisgIC8vICBtYXA0ID0gbWFwMzsKKyAgLy8KKyAgLy8gKiBNb3ZlIGNvbnN0cnVjdG9y
CisgIC8vCisgIC8vICAgLy8gTW92ZSBpcyBndWFyYW50ZWVkIGVmZmljaWVudAorICAvLyAgIGFi
c2w6Om5vZGVfaGFzaF9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwNShzdGQ6Om1vdmUobWFwNCkp
OworICAvLworICAvLyAqIE1vdmUgYXNzaWdubWVudCBvcGVyYXRvcgorICAvLworICAvLyAgIC8v
IE1heSBiZSBlZmZpY2llbnQgaWYgYWxsb2NhdG9ycyBhcmUgY29tcGF0aWJsZQorICAvLyAgIGFi
c2w6Om5vZGVfaGFzaF9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwNjsKKyAgLy8gICBtYXA2ID0g
c3RkOjptb3ZlKG1hcDUpOworICAvLworICAvLyAqIFJhbmdlIGNvbnN0cnVjdG9yCisgIC8vCisg
IC8vICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGludCwgc3RkOjpzdHJpbmc+PiB2ID0ge3sxLCAi
YSJ9LCB7MiwgImIifX07CisgIC8vICAgYWJzbDo6bm9kZV9oYXNoX21hcDxpbnQsIHN0ZDo6c3Ry
aW5nPiBtYXA3KHYuYmVnaW4oKSwgdi5lbmQoKSk7CiAgIG5vZGVfaGFzaF9tYXAoKSB7fQogICB1
c2luZyBCYXNlOjpCYXNlOwogCkBAIC01MjYsNSArNTY3LDE2IEBAIGNsYXNzIE5vZGVIYXNoTWFw
UG9saWN5CiAgIHN0YXRpYyBjb25zdCBWYWx1ZSYgdmFsdWUoY29uc3QgdmFsdWVfdHlwZSogZWxl
bSkgeyByZXR1cm4gZWxlbS0+c2Vjb25kOyB9CiB9OwogfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5l
cl9pbnRlcm5hbAorCituYW1lc3BhY2UgY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbCB7CisK
Ky8vIFNwZWNpYWxpemF0aW9uIG9mIHRyYWl0IGluIGFic2wvYWxnb3JpdGhtL2NvbnRhaW5lci5o
Cit0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBULCBjbGFzcyBIYXNoLCBjbGFzcyBLZXlFcXVh
bCwgY2xhc3MgQWxsb2NhdG9yPgorc3RydWN0IElzVW5vcmRlcmVkQ29udGFpbmVyPAorICAgIGFi
c2w6Om5vZGVfaGFzaF9tYXA8S2V5LCBULCBIYXNoLCBLZXlFcXVhbCwgQWxsb2NhdG9yPj4gOiBz
dGQ6OnRydWVfdHlwZSB7fTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9hbGdvcml0aG1f
aW50ZXJuYWwKKwogfSAgLy8gbmFtZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBBQlNMX0NPTlRB
SU5FUl9OT0RFX0hBU0hfTUFQX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9o
YXNoX21hcF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9tYXBfdGVzdC5jYwpp
bmRleCBiZDc4OTY0NGMyNGU4YzgxNzQxNDkzZTU1YmYwYjYxZTJmMzU2NjYwLi4wZjI3MTRhNzJj
ZWIzYjg1YjMxNDUzZDQ0OTVmMWU0Y2Q3YjZjNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvbm9kZV9oYXNoX21hcF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hf
bWFwX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90cmFja2Vk
LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25z
dHJ1Y3Rvcl90ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRl
cmVkX21hcF9sb29rdXBfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L3Vub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIgogCiBuYW1lc3BhY2UgYWJz
bCB7CkBAIC0zNCw5ICszNSwxMCBAQCB1c2luZyBNYXBUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8
CiAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsbG9jPHN0ZDo6cGFpcjxjb25zdCBzdGQ6OnN0cmluZywgc3RkOjpz
dHJpbmc+Pj4+OwogCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChOb2RlSGFzaE1hcCwg
Q29uc3RydWN0b3JUZXN0LCBNYXBUeXBlcyk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChOb2RlSGFzaE1hcCwgTG9va3VwVGVzdCwgTWFwVHlwZXMpOwotSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTm9kZUhhc2hNYXAsIE1vZGlmaWVyc1Rlc3QsIE1hcFR5cGVzKTsKK0lOU1RB
TlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChOb2RlSGFzaE1hcCwgQ29uc3RydWN0b3JUZXN0LCBN
YXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoTm9kZUhhc2hNYXAsIExv
b2t1cFRlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChOb2Rl
SGFzaE1hcCwgTWVtYmVyc1Rlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1Rf
U1VJVEVfUChOb2RlSGFzaE1hcCwgTW9kaWZpZXJzVGVzdCwgTWFwVHlwZXMpOwogCiB1c2luZyBN
ID0gYWJzbDo6bm9kZV9oYXNoX21hcDxzdGQ6OnN0cmluZywgVHJhY2tlZDxpbnQ+PjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9ub2RlX2hhc2hfc2V0LmgKaW5kZXggOTBkNGNlMGMxNjMxZDc4Y2ZlY2ZjZDhmYzI5YTFjNDg0
YWU5ZjYzNy4uMGNkMWZlNTdmOTY1NDQwZTk0YjNmY2MwNjM1YThhZjYyNjcwNGFmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvbm9kZV9oYXNoX3NldC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAorI2luY2x1
ZGUgImFic2wvYWxnb3JpdGhtL2NvbnRhaW5lci5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBv
cnQKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5Lmgi
CiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiICAvLyBJ
V1lVIHByYWdtYTogZXhwb3J0CkBAIC02Nyw3ICs2OCw3IEBAIHN0cnVjdCBOb2RlSGFzaFNldFBv
bGljeTsKIC8vIEJ5IGRlZmF1bHQsIGBub2RlX2hhc2hfc2V0YCB1c2VzIHRoZSBgYWJzbDo6SGFz
aGAgaGFzaGluZyBmcmFtZXdvcmsuCiAvLyBBbGwgZnVuZGFtZW50YWwgYW5kIEFic2VpbCB0eXBl
cyB0aGF0IHN1cHBvcnQgdGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdvcmsgaGF2ZQogLy8gYSBjb21w
YXRpYmxlIGVxdWFsaXR5IG9wZXJhdG9yIGZvciBjb21wYXJpbmcgaW5zZXJ0aW9ucyBpbnRvIGBu
b2RlX2hhc2hfc2V0YC4KLS8vIElmIHlvdXIgdHlwZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBieSB0
aGUgYGFzYmw6Okhhc2hgIGZyYW1ld29yaywgc2VlCisvLyBJZiB5b3VyIHR5cGUgaXMgbm90IHll
dCBzdXBwb3J0ZWQgYnkgdGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQogLy8gYWJzbC9o
YXNoL2hhc2guaCBmb3IgaW5mb3JtYXRpb24gb24gZXh0ZW5kaW5nIEFic2VpbCBoYXNoaW5nIHRv
IHVzZXItZGVmaW5lZAogLy8gdHlwZXMuCiAvLwpAQCAtOTYsNiArOTcsNDYgQEAgY2xhc3Mgbm9k
ZV9oYXNoX3NldAogICB1c2luZyBCYXNlID0gdHlwZW5hbWUgbm9kZV9oYXNoX3NldDo6cmF3X2hh
c2hfc2V0OwogCiAgcHVibGljOgorICAvLyBDb25zdHJ1Y3RvcnMgYW5kIEFzc2lnbm1lbnQgT3Bl
cmF0b3JzCisgIC8vCisgIC8vIEEgbm9kZV9oYXNoX3NldCBzdXBwb3J0cyB0aGUgc2FtZSBvdmVy
bG9hZCBzZXQgYXMgYHN0ZDo6dW5vcmRlcmVkX21hcGAKKyAgLy8gZm9yIGNvbnN0cnVjdGlvbiBh
bmQgYXNzaWdubWVudDoKKyAgLy8KKyAgLy8gKiAgRGVmYXVsdCBjb25zdHJ1Y3RvcgorICAvLwor
ICAvLyAgICAvLyBObyBhbGxvY2F0aW9uIGZvciB0aGUgdGFibGUncyBlbGVtZW50cyBpcyBtYWRl
LgorICAvLyAgICBhYnNsOjpub2RlX2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzZXQxOworICAvLwor
ICAvLyAqIEluaXRpYWxpemVyIExpc3QgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpu
b2RlX2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzZXQyID0KKyAgLy8gICAgICAge3siaHVleSJ9LCB7
ImRld2V5In0sIHsibG91aWUifSx9OworICAvLworICAvLyAqIENvcHkgY29uc3RydWN0b3IKKyAg
Ly8KKyAgLy8gICBhYnNsOjpub2RlX2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzZXQzKHNldDIpOwor
ICAvLworICAvLyAqIENvcHkgYXNzaWdubWVudCBvcGVyYXRvcgorICAvLworICAvLyAgLy8gSGFz
aCBmdW5jdG9yIGFuZCBDb21wYXJhdG9yIGFyZSBjb3BpZWQgYXMgd2VsbAorICAvLyAgYWJzbDo6
bm9kZV9oYXNoX3NldDxzdGQ6OnN0cmluZz4gc2V0NDsKKyAgLy8gIHNldDQgPSBzZXQzOworICAv
LworICAvLyAqIE1vdmUgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICAvLyBNb3ZlIGlzIGd1YXJh
bnRlZWQgZWZmaWNpZW50CisgIC8vICAgYWJzbDo6bm9kZV9oYXNoX3NldDxzdGQ6OnN0cmluZz4g
c2V0NShzdGQ6Om1vdmUoc2V0NCkpOworICAvLworICAvLyAqIE1vdmUgYXNzaWdubWVudCBvcGVy
YXRvcgorICAvLworICAvLyAgIC8vIE1heSBiZSBlZmZpY2llbnQgaWYgYWxsb2NhdG9ycyBhcmUg
Y29tcGF0aWJsZQorICAvLyAgIGFic2w6Om5vZGVfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHNldDY7
CisgIC8vICAgc2V0NiA9IHN0ZDo6bW92ZShzZXQ1KTsKKyAgLy8KKyAgLy8gKiBSYW5nZSBjb25z
dHJ1Y3RvcgorICAvLworICAvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ID0geyJhIiwg
ImIifTsKKyAgLy8gICBhYnNsOjpub2RlX2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzZXQ3KHYuYmVn
aW4oKSwgdi5lbmQoKSk7CiAgIG5vZGVfaGFzaF9zZXQoKSB7fQogICB1c2luZyBCYXNlOjpCYXNl
OwogCkBAIC0yMzIsOCArMjczLDcgQEAgY2xhc3Mgbm9kZV9oYXNoX3NldAogICAvLwogICAvLyBU
aGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFu
IGVsZW1lbnQgd2l0aCB0aGUKICAgLy8ga2V5IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNh
c2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQotICAvLyBkZXN0cm95ZWQg
aW1tZWRpYXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIga2V5IGlzIG5v
dAotICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5
LgogICAvLwogICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBh
bGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KICAgdXNpbmcgQmFzZTo6ZW1wbGFjZTsKQEAg
LTI0Nyw4ICsyODcsNyBAQCBjbGFzcyBub2RlX2hhc2hfc2V0CiAgIC8vCiAgIC8vIFRoZSBlbGVt
ZW50IG1heSBiZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVu
dCB3aXRoIHRoZQogICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUg
bmV3bHkgY29uc3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCi0gIC8vIGRlc3Ryb3llZCBpbW1lZGlh
dGVseS4gUHJlZmVyIGB0cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90Ci0gIC8v
IGNvcHlhYmxlIG9yIG1vdmVhYmxlLgorICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuCiAgIC8v
CiAgIC8vIElmIHJlaGFzaGluZyBvY2N1cnMgZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVy
YXRvcnMgYXJlIGludmFsaWRhdGVkLgogICB1c2luZyBCYXNlOjplbXBsYWNlX2hpbnQ7CkBAIC00
MzUsNSArNDc0LDE1IEBAIHN0cnVjdCBOb2RlSGFzaFNldFBvbGljeQogICBzdGF0aWMgc2l6ZV90
IGVsZW1lbnRfc3BhY2VfdXNlZChjb25zdCBUKikgeyByZXR1cm4gc2l6ZW9mKFQpOyB9CiB9Owog
fSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorCituYW1lc3BhY2UgY29udGFpbmVy
X2FsZ29yaXRobV9pbnRlcm5hbCB7CisKKy8vIFNwZWNpYWxpemF0aW9uIG9mIHRyYWl0IGluIGFi
c2wvYWxnb3JpdGhtL2NvbnRhaW5lci5oCit0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBIYXNo
LCBjbGFzcyBLZXlFcXVhbCwgY2xhc3MgQWxsb2NhdG9yPgorc3RydWN0IElzVW5vcmRlcmVkQ29u
dGFpbmVyPGFic2w6Om5vZGVfaGFzaF9zZXQ8S2V5LCBIYXNoLCBLZXlFcXVhbCwgQWxsb2NhdG9y
Pj4KKyAgICA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVy
X2FsZ29yaXRobV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBB
QlNMX0NPTlRBSU5FUl9OT0RFX0hBU0hfU0VUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvbm9kZV9oYXNoX3NldF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXRf
dGVzdC5jYwppbmRleCA3ZTQ5OGYwZjc3OWI0ZDZlNzY0ZWNhZmNhNjJiMWNiMDhjY2ZkNWFlLi4w
ZWE3NmU3Yzc4ZWM2NTMxYmQwOTI5YTY5MTVhNDU1MjY2YzM3YTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvbm9kZV9oYXNoX3NldF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9u
b2RlX2hhc2hfc2V0X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVy
bmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29u
dGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJh
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdC5oIgogI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rl
c3QuaCIKIAogbmFtZXNwYWNlIGFic2wgewpAQCAtMjksMTQgKzMwLDE1IEBAIHVzaW5nIDo6dGVz
dGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7CiB1c2luZyBTZXRUeXBlcyA9IDo6dGVzdGluZzo6
VHlwZXM8CiAgICAgbm9kZV9oYXNoX3NldDxpbnQsIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRl
ZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzxpbnQ+PiwKICAgICBub2RlX2hhc2hfc2V0PHN0ZDo6c3Ry
aW5nLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKLSAgICAgICAg
ICAgICAgICAgIEFsbG9jPGludD4+LAorICAgICAgICAgICAgICAgICAgQWxsb2M8c3RkOjpzdHJp
bmc+PiwKICAgICBub2RlX2hhc2hfc2V0PEVudW0sIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRl
ZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzxFbnVtPj4sCiAgICAgbm9kZV9oYXNoX3NldDxFbnVtQ2xh
c3MsIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVzdGluZ0VxdWFsLAogICAgICAgICAg
ICAgICAgICAgQWxsb2M8RW51bUNsYXNzPj4+OwogCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NB
U0VfUChOb2RlSGFzaFNldCwgQ29uc3RydWN0b3JUZXN0LCBTZXRUeXBlcyk7Ci1JTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChOb2RlSGFzaFNldCwgTG9va3VwVGVzdCwgU2V0VHlwZXMpOwot
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hTZXQsIE1vZGlmaWVyc1Rlc3Qs
IFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChOb2RlSGFzaFNldCwg
Q29uc3RydWN0b3JUZXN0LCBTZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRF
X1AoTm9kZUhhc2hTZXQsIExvb2t1cFRlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfU1VJVEVfUChOb2RlSGFzaFNldCwgTWVtYmVyc1Rlc3QsIFNldFR5cGVzKTsKK0lOU1RB
TlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChOb2RlSGFzaFNldCwgTW9kaWZpZXJzVGVzdCwgU2V0
VHlwZXMpOwogCiBURVNUKE5vZGVIYXNoU2V0LCBNb3ZlYWJsZU5vdENvcHlhYmxlQ29tcGlsZXMp
IHsKICAgbm9kZV9oYXNoX3NldDxzdGQ6OnVuaXF1ZV9wdHI8dm9pZCo+PiB0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29wdHMuYnpsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMuYnpsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1YzUwOGYxN2RmOTc0NzYxOGNhNTJjNWU0YjkzM2Y4MThlZTliOWM4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzLmJ6
bAorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0iIiJhYnNsIHNwZWNpZmljIGNvcHRz
LgotCi1GbGFncyBzcGVjaWZpZWQgaGVyZSBtdXN0IG5vdCBpbXBhY3QgQUJJLiBDb2RlIGNvbXBp
bGVkIHdpdGggYW5kIHdpdGhvdXQgdGhlc2UKLW9wdHMgd2lsbCBiZSBsaW5rZWQgdG9nZXRoZXIs
IGFuZCBpbiBzb21lIGNhc2VzIGhlYWRlcnMgY29tcGlsZWQgd2l0aCBhbmQKLXdpdGhvdXQgdGhl
c2Ugb3B0aW9ucyB3aWxsIGJlIHBhcnQgb2YgdGhlIHNhbWUgcHJvZ3JhbS4KLSIiIgotR0NDX0ZM
QUdTID0gWwotICAgICItV2FsbCIsCi0gICAgIi1XZXh0cmEiLAotICAgICItV2Nhc3QtcXVhbCIs
Ci0gICAgIi1XY29udmVyc2lvbi1udWxsIiwKLSAgICAiLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyIs
Ci0gICAgIi1Xb3Zlcmxlbmd0aC1zdHJpbmdzIiwKLSAgICAiLVdwb2ludGVyLWFyaXRoIiwKLSAg
ICAiLVd1bnVzZWQtbG9jYWwtdHlwZWRlZnMiLAotICAgICItV3VudXNlZC1yZXN1bHQiLAotICAg
ICItV3ZhcmFyZ3MiLAotICAgICItV3ZsYSIsICAjIHZhcmlhYmxlLWxlbmd0aCBhcnJheQotICAg
ICItV3dyaXRlLXN0cmluZ3MiLAotICAgICMgR29vZ2xlIHN0eWxlIGRvZXMgbm90IHVzZSB1bnNp
Z25lZCBpbnRlZ2VycywgdGhvdWdoIFNUTCBjb250YWluZXJzCi0gICAgIyBoYXZlIHVuc2lnbmVk
IHR5cGVzLgotICAgICItV25vLXNpZ24tY29tcGFyZSIsCi1dCi0KLUdDQ19URVNUX0ZMQUdTID0g
WwotICAgICItV25vLWNvbnZlcnNpb24tbnVsbCIsCi0gICAgIi1Xbm8tbWlzc2luZy1kZWNsYXJh
dGlvbnMiLAotICAgICItV25vLXNpZ24tY29tcGFyZSIsCi0gICAgIi1Xbm8tdW51c2VkLWZ1bmN0
aW9uIiwKLSAgICAiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKLSAgICAiLVduby11bnVzZWQtcHJp
dmF0ZS1maWVsZCIsCi1dCi0KLSMgRG9jcyBvbiBzaW5nbGUgZmxhZ3MgaXMgcHJlY2VkZWQgYnkg
YSBjb21tZW50LgotIyBEb2NzIG9uIGdyb3VwcyBvZiBmbGFncyBpcyBwcmVjZWRlZCBieSAjIyMu
Ci0KLUxMVk1fRkxBR1MgPSBbCi0gICAgIi1XYWxsIiwKLSAgICAiLVdleHRyYSIsCi0gICAgIi1X
ZXZlcnl0aGluZyIsCi0gICAgIyBBYnNlaWwgZG9lcyBub3Qgc3VwcG9ydCBDKys5OAotICAgICIt
V25vLWMrKzk4LWNvbXBhdC1wZWRhbnRpYyIsCi0gICAgIyBUdXJucyBvZmYgYWxsIGltcGxpY2l0
IGNvbnZlcnNpb24gd2FybmluZ3MuIE1vc3QgYXJlIHJlLWVuYWJsZWQgYmVsb3cuCi0gICAgIi1X
bm8tY29udmVyc2lvbiIsCi0gICAgIi1Xbm8tY292ZXJlZC1zd2l0Y2gtZGVmYXVsdCIsCi0gICAg
Ii1Xbm8tZGVwcmVjYXRlZCIsCi0gICAgIi1Xbm8tZGlzYWJsZWQtbWFjcm8tZXhwYW5zaW9uIiwK
LSAgICAiLVduby1kb3VibGUtcHJvbW90aW9uIiwKLSAgICAjIyMKLSAgICAjIFR1cm5lZCBvZmYg
YXMgdGhleSBpbmNsdWRlIHZhbGlkIEMrKyBjb2RlLgotICAgICItV25vLWNvbW1hIiwKLSAgICAi
LVduby1leHRyYS1zZW1pIiwKLSAgICAiLVduby1wYWNrZWQiLAotICAgICItV25vLXBhZGRlZCIs
Ci0gICAgIyMjCi0gICAgIyBHb29nbGUgc3R5bGUgZG9lcyBub3QgdXNlIHVuc2lnbmVkIGludGVn
ZXJzLCB0aG91Z2ggU1RMIGNvbnRhaW5lcnMKLSAgICAjIGhhdmUgdW5zaWduZWQgdHlwZXMuCi0g
ICAgIi1Xbm8tc2lnbi1jb21wYXJlIiwKLSAgICAjIyMKLSAgICAiLVduby1mbG9hdC1jb252ZXJz
aW9uIiwKLSAgICAiLVduby1mbG9hdC1lcXVhbCIsCi0gICAgIi1Xbm8tZm9ybWF0LW5vbmxpdGVy
YWwiLAotICAgICMgVG9vIGFnZ3Jlc3NpdmU6IHdhcm5zIG9uIENsYW5nIGV4dGVuc2lvbnMgZW5j
bG9zZWQgaW4gQ2xhbmctb25seQotICAgICMgY29tcGlsYXRpb24gcGF0aHMuCi0gICAgIi1Xbm8t
Z2NjLWNvbXBhdCIsCi0gICAgIyMjCi0gICAgIyBTb21lIGludGVybmFsIGdsb2JhbHMgYXJlIG5l
Y2Vzc2FyeS4gRG9uJ3QgZG8gdGhpcyBhdCBob21lLgotICAgICItV25vLWdsb2JhbC1jb25zdHJ1
Y3RvcnMiLAotICAgICItV25vLWV4aXQtdGltZS1kZXN0cnVjdG9ycyIsCi0gICAgIyMjCi0gICAg
Ii1Xbm8tbmVzdGVkLWFub24tdHlwZXMiLAotICAgICItV25vLW5vbi1tb2R1bGFyLWluY2x1ZGUt
aW4tbW9kdWxlIiwKLSAgICAiLVduby1vbGQtc3R5bGUtY2FzdCIsCi0gICAgIyBXYXJucyBvbiBw
cmVmZXJyZWQgdXNhZ2Ugb2Ygbm9uLVBPRCB0eXBlcyBzdWNoIGFzIHN0cmluZ192aWV3Ci0gICAg
Ii1Xbm8tcmFuZ2UtbG9vcC1hbmFseXNpcyIsCi0gICAgIi1Xbm8tcmVzZXJ2ZWQtaWQtbWFjcm8i
LAotICAgICItV25vLXNob3J0ZW4tNjQtdG8tMzIiLAotICAgICItV25vLXN3aXRjaC1lbnVtIiwK
LSAgICAiLVduby10aHJlYWQtc2FmZXR5LW5lZ2F0aXZlIiwKLSAgICAiLVduby11bmRlZiIsCi0g
ICAgIi1Xbm8tdW5rbm93bi13YXJuaW5nLW9wdGlvbiIsCi0gICAgIi1Xbm8tdW5yZWFjaGFibGUt
Y29kZSIsCi0gICAgIyBDYXVzZXMgd2FybmluZ3Mgb24gaW5jbHVkZSBndWFyZHMKLSAgICAiLVdu
by11bnVzZWQtbWFjcm9zIiwKLSAgICAiLVduby13ZWFrLXZ0YWJsZXMiLAotICAgICMjIwotICAg
ICMgSW1wbGljaXQgY29udmVyc2lvbiB3YXJuaW5ncyB0dXJuZWQgb2ZmIGJ5IC1Xbm8tY29udmVy
c2lvbgotICAgICMgd2hpY2ggYXJlIHJlLWVuYWJsZWQgYmVsb3cuCi0gICAgIi1XYml0ZmllbGQt
ZW51bS1jb252ZXJzaW9uIiwKLSAgICAiLVdib29sLWNvbnZlcnNpb24iLAotICAgICItV2NvbnN0
YW50LWNvbnZlcnNpb24iLAotICAgICItV2VudW0tY29udmVyc2lvbiIsCi0gICAgIi1XaW50LWNv
bnZlcnNpb24iLAotICAgICItV2xpdGVyYWwtY29udmVyc2lvbiIsCi0gICAgIi1Xbm9uLWxpdGVy
YWwtbnVsbC1jb252ZXJzaW9uIiwKLSAgICAiLVdudWxsLWNvbnZlcnNpb24iLAotICAgICItV29i
amMtbGl0ZXJhbC1jb252ZXJzaW9uIiwKLSAgICAiLVduby1zaWduLWNvbnZlcnNpb24iLAotICAg
ICItV3N0cmluZy1jb252ZXJzaW9uIiwKLSAgICAjIyMKLV0KLQotTExWTV9URVNUX0ZMQUdTID0g
WwotICAgICItV25vLWM5OS1leHRlbnNpb25zIiwKLSAgICAiLVduby1taXNzaW5nLW5vcmV0dXJu
IiwKLSAgICAiLVduby1taXNzaW5nLXByb3RvdHlwZXMiLAotICAgICItV25vLW1pc3NpbmctdmFy
aWFibGUtZGVjbGFyYXRpb25zIiwKLSAgICAiLVduby1udWxsLWNvbnZlcnNpb24iLAotICAgICIt
V25vLXNoYWRvdyIsCi0gICAgIi1Xbm8tc2hpZnQtc2lnbi1vdmVyZmxvdyIsCi0gICAgIi1Xbm8t
c2lnbi1jb21wYXJlIiwKLSAgICAiLVduby11bnVzZWQtZnVuY3Rpb24iLAotICAgICItV25vLXVu
dXNlZC1tZW1iZXItZnVuY3Rpb24iLAotICAgICItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAotICAg
ICItV25vLXVudXNlZC1wcml2YXRlLWZpZWxkIiwKLSAgICAiLVduby11bnVzZWQtdGVtcGxhdGUi
LAotICAgICItV25vLXVzZWQtYnV0LW1hcmtlZC11bnVzZWQiLAotICAgICItV25vLXplcm8tYXMt
bnVsbC1wb2ludGVyLWNvbnN0YW50IiwKLSAgICAjIGd0ZXN0IGRlcGVuZHMgb24gdGhpcyBHTlUg
ZXh0ZW5zaW9uIGJlaW5nIG9mZmVyZWQuCi0gICAgIi1Xbm8tZ251LXplcm8tdmFyaWFkaWMtbWFj
cm8tYXJndW1lbnRzIiwKLV0KLQotTVNWQ19GTEFHUyA9IFsKLSAgICAiL1czIiwKLSAgICAiL3dk
NDAwNSIsICAjIG1hY3JvLXJlZGVmaW5pdGlvbgotICAgICIvd2Q0MDY4IiwgICMgdW5rbm93biBw
cmFnbWEKLSAgICAiL3dkNDE4MCIsICAjIHF1YWxpZmllciBhcHBsaWVkIHRvIGZ1bmN0aW9uIHR5
cGUgaGFzIG5vIG1lYW5pbmc7IGlnbm9yZWQKLSAgICAiL3dkNDI0NCIsICAjIGNvbnZlcnNpb24g
ZnJvbSAndHlwZTEnIHRvICd0eXBlMicsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotICAgICIvd2Q0
MjY3IiwgICMgY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICd0eXBlJywgcG9zc2libGUgbG9z
cyBvZiBkYXRhCi0gICAgIi93ZDQ4MDAiLCAgIyBmb3JjaW5nIHZhbHVlIHRvIGJvb2wgJ3RydWUn
IG9yICdmYWxzZScgKHBlcmZvcm1hbmNlIHdhcm5pbmcpCi0gICAgIi9ETk9NSU5NQVgiLCAgIyBE
b24ndCBkZWZpbmUgbWluIGFuZCBtYXggbWFjcm9zICh3aW5kb3dzLmgpCi0gICAgIi9EV0lOMzJf
TEVBTl9BTkRfTUVBTiIsICAjIERvbid0IGJsb2F0IG5hbWVzcGFjZSB3aXRoIGluY29tcGF0aWJs
ZSB3aW5zb2NrIHZlcnNpb25zLgotICAgICIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiwgICMg
RG9uJ3Qgd2FybiBhYm91dCB1c2FnZSBvZiBpbnNlY3VyZSBDIGZ1bmN0aW9ucwotXQotCi1NU1ZD
X1RFU1RfRkxBR1MgPSBbCi0gICAgIi93ZDQwMTgiLCAgIyBzaWduZWQvdW5zaWduZWQgbWlzbWF0
Y2gKLSAgICAiL3dkNDEwMSIsICAjIHVucmVmZXJlbmNlZCBsb2NhbCB2YXJpYWJsZQotICAgICIv
d2Q0NTAzIiwgICMgZGVjb3JhdGVkIG5hbWUgbGVuZ3RoIGV4Y2VlZGVkLCBuYW1lIHdhcyB0cnVu
Y2F0ZWQKLV0KLQotIyAvV2FsbCB3aXRoIG1zdmMgaW5jbHVkZXMgdW5oZWxwZnVsIHdhcm5pbmdz
IHN1Y2ggYXMgQzQ3MTEsIEM0NzEwLCAuLi4KLUFCU0xfREVGQVVMVF9DT1BUUyA9IHNlbGVjdCh7
Ci0gICAgIi8vYWJzbDp3aW5kb3dzIjogTVNWQ19GTEFHUywKLSAgICAiLy9hYnNsOmxsdm1fY29t
cGlsZXIiOiBMTFZNX0ZMQUdTLAotICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IEdDQ19GTEFH
UywKLX0pCi0KLSMgaW4gYWJzZW5jZSBvZiBtb2R1bGVzICgtLWNvbXBpbGVyPWdjYyBvciAtYyBv
cHQpLCBjY190ZXN0cyBsZWFrIHRoZWlyIGNvcHRzCi0jIHRvIHRoZWlyIChpbmNsdWRlZCBoZWFk
ZXIpIGRlcGVuZGVuY2llcyBhbmQgZmFpbCB0byBidWlsZCBvdXRzaWRlIGFic2wKLUFCU0xfVEVT
VF9DT1BUUyA9IEFCU0xfREVGQVVMVF9DT1BUUyArIHNlbGVjdCh7Ci0gICAgIi8vYWJzbDp3aW5k
b3dzIjogTVNWQ19URVNUX0ZMQUdTLAotICAgICIvL2Fic2w6bGx2bV9jb21waWxlciI6IExMVk1f
VEVTVF9GTEFHUywKLSAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBHQ0NfVEVTVF9GTEFHUywK
LX0pCi0KLUFCU0xfRVhDRVBUSU9OU19GTEFHID0gc2VsZWN0KHsKLSAgICAiLy9hYnNsOndpbmRv
d3MiOiBbIi9VX0hBU19FWENFUFRJT05TIiwgIi9EX0hBU19FWENFUFRJT05TPTEiLCAiL0VIc2Mi
XSwKLSAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi1mZXhjZXB0aW9ucyJdLAotfSkKLQot
QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgPSBzZWxlY3QoewotICAgICIvL2NvbmRpdGlv
bnM6ZGVmYXVsdCI6IFtdLAotfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL0Fic2VpbENvbmZp
Z3VyZUNvcHRzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMvQWJzZWlsQ29uZmlndXJlQ29wdHMuY21ha2UK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGVjZTRjNmY0OGM3MzQ2MzUxYzRlMzQ5NDQ1NTBmZTJjODZmM2NmNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL0Fic2VpbENvbmZpZ3VyZUNvcHRzLmNtYWtlCkBA
IC0wLDAgKzEsNjAgQEAKKyMgU2VlIGFic2wvY29wdHMvY29wdHMucHkgYW5kIGFic2wvY29wdHMv
Z2VuZXJhdGVfY29wdHMucHkKK2luY2x1ZGUoR0VORVJBVEVEX0Fic2VpbENvcHRzKQorCitzZXQo
QUJTTF9MU0FOX0xJTktPUFRTICIiKQorc2V0KEFCU0xfSEFWRV9MU0FOIE9GRikKK3NldChBQlNM
X0RFRkFVTFRfTElOS09QVFMgIiIpCisKK2lmKCIke0NNQUtFX0NYWF9DT01QSUxFUl9JRH0iIFNU
UkVRVUFMICJHTlUiKQorICBzZXQoQUJTTF9ERUZBVUxUX0NPUFRTICIke0FCU0xfR0NDX0ZMQUdT
fSIpCisgIHNldChBQlNMX1RFU1RfQ09QVFMgIiR7QUJTTF9HQ0NfRkxBR1N9OyR7QUJTTF9HQ0Nf
VEVTVF9GTEFHU30iKQorICBzZXQoQUJTTF9FWENFUFRJT05TX0ZMQUcgIiR7QUJTTF9HQ0NfRVhD
RVBUSU9OU19GTEFHU30iKQorICBzZXQoQUJTTF9SQU5ET01fUkFOREVOX0NPUFRTICIke0FCU0xf
UkFORE9NX0hXQUVTX1g2NF9GTEFHU30iKQorZWxzZWlmKCIke0NNQUtFX0NYWF9DT01QSUxFUl9J
RH0iIE1BVENIRVMgIkNsYW5nIikKKyAgIyBNQVRDSEVTIHNvIHdlIGdldCBib3RoIENsYW5nIGFu
ZCBBcHBsZUNsYW5nCisgIGlmKE1TVkMpCisgICAgIyBjbGFuZy1jbCBpcyBoYWxmIE1TVkMsIGhh
bGYgTExWTQorICAgIHNldChBQlNMX0RFRkFVTFRfQ09QVFMgIiR7QUJTTF9DTEFOR19DTF9GTEFH
U30iKQorICAgIHNldChBQlNMX1RFU1RfQ09QVFMgIiR7QUJTTF9DTEFOR19DTF9GTEFHU307JHtB
QlNMX0NMQU5HX0NMX1RFU1RfRkxBR1N9IikKKyAgICBzZXQoQUJTTF9FWENFUFRJT05TX0ZMQUcg
IiR7QUJTTF9DTEFOR19DTF9FWENFUFRJT05TX0ZMQUdTfSIpCisgICAgc2V0KEFCU0xfREVGQVVM
VF9MSU5LT1BUUyAiJHtBQlNMX01TVkNfTElOS09QVFN9IikKKyAgICBzZXQoQUJTTF9SQU5ET01f
UkFOREVOX0NPUFRTICIke0FCU0xfUkFORE9NX0hXQUVTX01TVkNfWDY0X0ZMQUdTfSIpCisgIGVs
c2UoKQorICAgIHNldChBQlNMX0RFRkFVTFRfQ09QVFMgIiR7QUJTTF9MTFZNX0ZMQUdTfSIpCisg
ICAgc2V0KEFCU0xfVEVTVF9DT1BUUyAiJHtBQlNMX0xMVk1fRkxBR1N9OyR7QUJTTF9MTFZNX1RF
U1RfRkxBR1N9IikKKyAgICBzZXQoQUJTTF9FWENFUFRJT05TX0ZMQUcgIiR7QUJTTF9MTFZNX0VY
Q0VQVElPTlNfRkxBR1N9IikKKyAgICBzZXQoQUJTTF9SQU5ET01fUkFOREVOX0NPUFRTICIke0FC
U0xfUkFORE9NX0hXQUVTX1g2NF9GTEFHU30iKQorICAgIGlmKCIke0NNQUtFX0NYWF9DT01QSUxF
Ul9JRH0iIFNUUkVRVUFMICJDbGFuZyIpCisgICAgICAjIEFwcGxlQ2xhbmcgZG9lc24ndCBoYXZl
IGxzYW4KKyAgICAgICMgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24v
Y29kZV9kaWFnbm9zdGljcworICAgICAgaWYoTk9UIENNQUtFX0NYWF9DT01QSUxFUl9WRVJTSU9O
IFZFUlNJT05fTEVTUyAzLjUpCisgICAgICAgIHNldChBQlNMX0xTQU5fTElOS09QVFMgIi1mc2Fu
aXRpemU9bGVhayIpCisgICAgICAgIHNldChBQlNMX0hBVkVfTFNBTiBPTikKKyAgICAgIGVuZGlm
KCkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKK2Vsc2VpZigiJHtDTUFLRV9DWFhfQ09NUElMRVJf
SUR9IiBTVFJFUVVBTCAiTVNWQyIpCisgIHNldChBQlNMX0RFRkFVTFRfQ09QVFMgIiR7QUJTTF9N
U1ZDX0ZMQUdTfSIpCisgIHNldChBQlNMX1RFU1RfQ09QVFMgIiR7QUJTTF9NU1ZDX0ZMQUdTfTsk
e0FCU0xfTVNWQ19URVNUX0ZMQUdTfSIpCisgIHNldChBQlNMX0VYQ0VQVElPTlNfRkxBRyAiJHtB
QlNMX01TVkNfRVhDRVBUSU9OU19GTEFHU30iKQorICBzZXQoQUJTTF9ERUZBVUxUX0xJTktPUFRT
ICIke0FCU0xfTVNWQ19MSU5LT1BUU30iKQorICBzZXQoQUJTTF9SQU5ET01fUkFOREVOX0NPUFRT
ICIke0FCU0xfUkFORE9NX0hXQUVTX01TVkNfWDY0X0ZMQUdTfSIpCitlbHNlKCkKKyAgbWVzc2Fn
ZShXQVJOSU5HICJVbmtub3duIGNvbXBpbGVyOiAke0NNQUtFX0NYWF9DT01QSUxFUn0uICBCdWls
ZGluZyB3aXRoIG5vIGRlZmF1bHQgZmxhZ3MiKQorICBzZXQoQUJTTF9ERUZBVUxUX0NPUFRTICIi
KQorICBzZXQoQUJTTF9URVNUX0NPUFRTICIiKQorICBzZXQoQUJTTF9FWENFUFRJT05TX0ZMQUcg
IiIpCisgIHNldChBQlNMX1JBTkRPTV9SQU5ERU5fQ09QVFMgIiIpCitlbmRpZigpCisKKyMgVGhp
cyBmbGFnIGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgQmF6ZWwgYnVpbGRzIGFuZCBpcyBrZXB0IGhl
cmUgZm9yIGNvbnNpc3RlbmN5CitzZXQoQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgIiIp
CisKK2lmKCIke0NNQUtFX0NYWF9TVEFOREFSRH0iIEVRVUFMIDk4KQorICBtZXNzYWdlKEZBVEFM
X0VSUk9SICJBYnNlaWwgcmVxdWlyZXMgYXQgbGVhc3QgQysrMTEiKQorZWxzZWlmKE5PVCAiJHtD
TUFLRV9DWFhfU1RBTkRBUkR9IikKKyAgbWVzc2FnZShTVEFUVVMgIk5vIENNQUtFX0NYWF9TVEFO
REFSRCBzZXQsIGFzc3VtaW5nIDExIikKKyAgc2V0KEFCU0xfQ1hYX1NUQU5EQVJEIDExKQorZWxz
ZSgpCisgIHNldChBQlNMX0NYWF9TVEFOREFSRCAiJHtDTUFLRV9DWFhfU1RBTkRBUkR9IikKK2Vu
ZGlmKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL0dFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFr
ZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvcHRzL0dFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFrZQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MWJkNDBiMjhlZTFlNGY3ZmUxNThmNjMyZDljNzBmMGVjYTI3ZjcyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29wdHMvR0VORVJBVEVEX0Fic2VpbENvcHRzLmNtYWtlCkBAIC0wLDAgKzEsMjM2
IEBACisjIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgVEhJUyBGSUxFLgorIworIyAo
MSkgRWRpdCBhYnNsL2NvcHRzL2NvcHRzLnB5LgorIyAoMikgUnVuIGBweXRob24gPHBhdGhfdG9f
YWJzbD4vY29wdHMvZ2VuZXJhdGVfY29wdHMucHlgLgorCitsaXN0KEFQUEVORCBBQlNMX0NMQU5H
X0NMX0VYQ0VQVElPTlNfRkxBR1MKKyAgICAiL1VfSEFTX0VYQ0VQVElPTlMiCisgICAgIi9EX0hB
U19FWENFUFRJT05TPTEiCisgICAgIi9FSHNjIgorKQorCitsaXN0KEFQUEVORCBBQlNMX0NMQU5H
X0NMX0ZMQUdTCisgICAgIi9XMyIKKyAgICAiLVduby1jKys5OC1jb21wYXQtcGVkYW50aWMiCisg
ICAgIi1Xbm8tY29udmVyc2lvbiIKKyAgICAiLVduby1jb3ZlcmVkLXN3aXRjaC1kZWZhdWx0Igor
ICAgICItV25vLWRlcHJlY2F0ZWQiCisgICAgIi1Xbm8tZGlzYWJsZWQtbWFjcm8tZXhwYW5zaW9u
IgorICAgICItV25vLWRvdWJsZS1wcm9tb3Rpb24iCisgICAgIi1Xbm8tY29tbWEiCisgICAgIi1X
bm8tZXh0cmEtc2VtaSIKKyAgICAiLVduby1leHRyYS1zZW1pLXN0bXQiCisgICAgIi1Xbm8tcGFj
a2VkIgorICAgICItV25vLXBhZGRlZCIKKyAgICAiLVduby1zaWduLWNvbXBhcmUiCisgICAgIi1X
bm8tZmxvYXQtY29udmVyc2lvbiIKKyAgICAiLVduby1mbG9hdC1lcXVhbCIKKyAgICAiLVduby1m
b3JtYXQtbm9ubGl0ZXJhbCIKKyAgICAiLVduby1nY2MtY29tcGF0IgorICAgICItV25vLWdsb2Jh
bC1jb25zdHJ1Y3RvcnMiCisgICAgIi1Xbm8tZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgICIt
V25vLW5lc3RlZC1hbm9uLXR5cGVzIgorICAgICItV25vLW5vbi1tb2R1bGFyLWluY2x1ZGUtaW4t
bW9kdWxlIgorICAgICItV25vLW9sZC1zdHlsZS1jYXN0IgorICAgICItV25vLXJhbmdlLWxvb3At
YW5hbHlzaXMiCisgICAgIi1Xbm8tcmVzZXJ2ZWQtaWQtbWFjcm8iCisgICAgIi1Xbm8tc2hvcnRl
bi02NC10by0zMiIKKyAgICAiLVduby1zd2l0Y2gtZW51bSIKKyAgICAiLVduby10aHJlYWQtc2Fm
ZXR5LW5lZ2F0aXZlIgorICAgICItV25vLXVua25vd24td2FybmluZy1vcHRpb24iCisgICAgIi1X
bm8tdW5yZWFjaGFibGUtY29kZSIKKyAgICAiLVduby11bnVzZWQtbWFjcm9zIgorICAgICItV25v
LXdlYWstdnRhYmxlcyIKKyAgICAiLVduby16ZXJvLWFzLW51bGwtcG9pbnRlci1jb25zdGFudCIK
KyAgICAiLVdiaXRmaWVsZC1lbnVtLWNvbnZlcnNpb24iCisgICAgIi1XYm9vbC1jb252ZXJzaW9u
IgorICAgICItV2NvbnN0YW50LWNvbnZlcnNpb24iCisgICAgIi1XZW51bS1jb252ZXJzaW9uIgor
ICAgICItV2ludC1jb252ZXJzaW9uIgorICAgICItV2xpdGVyYWwtY29udmVyc2lvbiIKKyAgICAi
LVdub24tbGl0ZXJhbC1udWxsLWNvbnZlcnNpb24iCisgICAgIi1XbnVsbC1jb252ZXJzaW9uIgor
ICAgICItV29iamMtbGl0ZXJhbC1jb252ZXJzaW9uIgorICAgICItV25vLXNpZ24tY29udmVyc2lv
biIKKyAgICAiLVdzdHJpbmctY29udmVyc2lvbiIKKyAgICAiL0ROT01JTk1BWCIKKyAgICAiL0RX
SU4zMl9MRUFOX0FORF9NRUFOIgorICAgICIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIgorICAg
ICIvRF9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTIgorICAgICIvRF9FTkFCTEVfRVhURU5ERURfQUxJ
R05FRF9TVE9SQUdFIgorKQorCitsaXN0KEFQUEVORCBBQlNMX0NMQU5HX0NMX1RFU1RfRkxBR1MK
KyAgICAiLVduby1jOTktZXh0ZW5zaW9ucyIKKyAgICAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0
aW9ucyIKKyAgICAiLVduby1taXNzaW5nLW5vcmV0dXJuIgorICAgICItV25vLW1pc3NpbmctcHJv
dG90eXBlcyIKKyAgICAiLVduby1taXNzaW5nLXZhcmlhYmxlLWRlY2xhcmF0aW9ucyIKKyAgICAi
LVduby1udWxsLWNvbnZlcnNpb24iCisgICAgIi1Xbm8tc2hhZG93IgorICAgICItV25vLXNoaWZ0
LXNpZ24tb3ZlcmZsb3ciCisgICAgIi1Xbm8tc2lnbi1jb21wYXJlIgorICAgICItV25vLXVudXNl
ZC1mdW5jdGlvbiIKKyAgICAiLVduby11bnVzZWQtbWVtYmVyLWZ1bmN0aW9uIgorICAgICItV25v
LXVudXNlZC1wYXJhbWV0ZXIiCisgICAgIi1Xbm8tdW51c2VkLXByaXZhdGUtZmllbGQiCisgICAg
Ii1Xbm8tdW51c2VkLXRlbXBsYXRlIgorICAgICItV25vLXVzZWQtYnV0LW1hcmtlZC11bnVzZWQi
CisgICAgIi1Xbm8temVyby1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQiCisgICAgIi1Xbm8tZ251
LXplcm8tdmFyaWFkaWMtbWFjcm8tYXJndW1lbnRzIgorKQorCitsaXN0KEFQUEVORCBBQlNMX0dD
Q19FWENFUFRJT05TX0ZMQUdTCisgICAgIi1mZXhjZXB0aW9ucyIKKykKKworbGlzdChBUFBFTkQg
QUJTTF9HQ0NfRkxBR1MKKyAgICAiLVdhbGwiCisgICAgIi1XZXh0cmEiCisgICAgIi1XY2FzdC1x
dWFsIgorICAgICItV2NvbnZlcnNpb24tbnVsbCIKKyAgICAiLVdtaXNzaW5nLWRlY2xhcmF0aW9u
cyIKKyAgICAiLVdvdmVybGVuZ3RoLXN0cmluZ3MiCisgICAgIi1XcG9pbnRlci1hcml0aCIKKyAg
ICAiLVd1bnVzZWQtbG9jYWwtdHlwZWRlZnMiCisgICAgIi1XdW51c2VkLXJlc3VsdCIKKyAgICAi
LVd2YXJhcmdzIgorICAgICItV3ZsYSIKKyAgICAiLVd3cml0ZS1zdHJpbmdzIgorICAgICItV25v
LW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIgorICAgICItV25vLXNpZ24tY29tcGFyZSIKKykK
KworbGlzdChBUFBFTkQgQUJTTF9HQ0NfVEVTVF9GTEFHUworICAgICItV25vLWNvbnZlcnNpb24t
bnVsbCIKKyAgICAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICAiLVduby1taXNz
aW5nLWRlY2xhcmF0aW9ucyIKKyAgICAiLVduby1zaWduLWNvbXBhcmUiCisgICAgIi1Xbm8tdW51
c2VkLWZ1bmN0aW9uIgorICAgICItV25vLXVudXNlZC1wYXJhbWV0ZXIiCisgICAgIi1Xbm8tdW51
c2VkLXByaXZhdGUtZmllbGQiCispCisKK2xpc3QoQVBQRU5EIEFCU0xfTExWTV9FWENFUFRJT05T
X0ZMQUdTCisgICAgIi1mZXhjZXB0aW9ucyIKKykKKworbGlzdChBUFBFTkQgQUJTTF9MTFZNX0ZM
QUdTCisgICAgIi1XYWxsIgorICAgICItV2V4dHJhIgorICAgICItV2V2ZXJ5dGhpbmciCisgICAg
Ii1Xbm8tYysrOTgtY29tcGF0LXBlZGFudGljIgorICAgICItV25vLWNvbnZlcnNpb24iCisgICAg
Ii1Xbm8tY292ZXJlZC1zd2l0Y2gtZGVmYXVsdCIKKyAgICAiLVduby1kZXByZWNhdGVkIgorICAg
ICItV25vLWRpc2FibGVkLW1hY3JvLWV4cGFuc2lvbiIKKyAgICAiLVduby1kb3VibGUtcHJvbW90
aW9uIgorICAgICItV25vLWNvbW1hIgorICAgICItV25vLWV4dHJhLXNlbWkiCisgICAgIi1Xbm8t
ZXh0cmEtc2VtaS1zdG10IgorICAgICItV25vLXBhY2tlZCIKKyAgICAiLVduby1wYWRkZWQiCisg
ICAgIi1Xbm8tc2lnbi1jb21wYXJlIgorICAgICItV25vLWZsb2F0LWNvbnZlcnNpb24iCisgICAg
Ii1Xbm8tZmxvYXQtZXF1YWwiCisgICAgIi1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwiCisgICAgIi1X
bm8tZ2NjLWNvbXBhdCIKKyAgICAiLVduby1nbG9iYWwtY29uc3RydWN0b3JzIgorICAgICItV25v
LWV4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICAiLVduby1uZXN0ZWQtYW5vbi10eXBlcyIKKyAg
ICAiLVduby1ub24tbW9kdWxhci1pbmNsdWRlLWluLW1vZHVsZSIKKyAgICAiLVduby1vbGQtc3R5
bGUtY2FzdCIKKyAgICAiLVduby1yYW5nZS1sb29wLWFuYWx5c2lzIgorICAgICItV25vLXJlc2Vy
dmVkLWlkLW1hY3JvIgorICAgICItV25vLXNob3J0ZW4tNjQtdG8tMzIiCisgICAgIi1Xbm8tc3dp
dGNoLWVudW0iCisgICAgIi1Xbm8tdGhyZWFkLXNhZmV0eS1uZWdhdGl2ZSIKKyAgICAiLVduby11
bmtub3duLXdhcm5pbmctb3B0aW9uIgorICAgICItV25vLXVucmVhY2hhYmxlLWNvZGUiCisgICAg
Ii1Xbm8tdW51c2VkLW1hY3JvcyIKKyAgICAiLVduby13ZWFrLXZ0YWJsZXMiCisgICAgIi1Xbm8t
emVyby1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQiCisgICAgIi1XYml0ZmllbGQtZW51bS1jb252
ZXJzaW9uIgorICAgICItV2Jvb2wtY29udmVyc2lvbiIKKyAgICAiLVdjb25zdGFudC1jb252ZXJz
aW9uIgorICAgICItV2VudW0tY29udmVyc2lvbiIKKyAgICAiLVdpbnQtY29udmVyc2lvbiIKKyAg
ICAiLVdsaXRlcmFsLWNvbnZlcnNpb24iCisgICAgIi1Xbm9uLWxpdGVyYWwtbnVsbC1jb252ZXJz
aW9uIgorICAgICItV251bGwtY29udmVyc2lvbiIKKyAgICAiLVdvYmpjLWxpdGVyYWwtY29udmVy
c2lvbiIKKyAgICAiLVduby1zaWduLWNvbnZlcnNpb24iCisgICAgIi1Xc3RyaW5nLWNvbnZlcnNp
b24iCispCisKK2xpc3QoQVBQRU5EIEFCU0xfTExWTV9URVNUX0ZMQUdTCisgICAgIi1Xbm8tYzk5
LWV4dGVuc2lvbnMiCisgICAgIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgIi1X
bm8tbWlzc2luZy1ub3JldHVybiIKKyAgICAiLVduby1taXNzaW5nLXByb3RvdHlwZXMiCisgICAg
Ii1Xbm8tbWlzc2luZy12YXJpYWJsZS1kZWNsYXJhdGlvbnMiCisgICAgIi1Xbm8tbnVsbC1jb252
ZXJzaW9uIgorICAgICItV25vLXNoYWRvdyIKKyAgICAiLVduby1zaGlmdC1zaWduLW92ZXJmbG93
IgorICAgICItV25vLXNpZ24tY29tcGFyZSIKKyAgICAiLVduby11bnVzZWQtZnVuY3Rpb24iCisg
ICAgIi1Xbm8tdW51c2VkLW1lbWJlci1mdW5jdGlvbiIKKyAgICAiLVduby11bnVzZWQtcGFyYW1l
dGVyIgorICAgICItV25vLXVudXNlZC1wcml2YXRlLWZpZWxkIgorICAgICItV25vLXVudXNlZC10
ZW1wbGF0ZSIKKyAgICAiLVduby11c2VkLWJ1dC1tYXJrZWQtdW51c2VkIgorICAgICItV25vLXpl
cm8tYXMtbnVsbC1wb2ludGVyLWNvbnN0YW50IgorICAgICItV25vLWdudS16ZXJvLXZhcmlhZGlj
LW1hY3JvLWFyZ3VtZW50cyIKKykKKworbGlzdChBUFBFTkQgQUJTTF9NU1ZDX0VYQ0VQVElPTlNf
RkxBR1MKKyAgICAiL1VfSEFTX0VYQ0VQVElPTlMiCisgICAgIi9EX0hBU19FWENFUFRJT05TPTEi
CisgICAgIi9FSHNjIgorKQorCitsaXN0KEFQUEVORCBBQlNMX01TVkNfRkxBR1MKKyAgICAiL1cz
IgorICAgICIvRE5PTUlOTUFYIgorICAgICIvRFdJTjMyX0xFQU5fQU5EX01FQU4iCisgICAgIi9E
X0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiCisgICAgIi9EX1NDTF9TRUNVUkVfTk9fV0FSTklOR1Mi
CisgICAgIi9EX0VOQUJMRV9FWFRFTkRFRF9BTElHTkVEX1NUT1JBR0UiCisgICAgIi93ZDQwMDUi
CisgICAgIi93ZDQwNjgiCisgICAgIi93ZDQxODAiCisgICAgIi93ZDQyNDQiCisgICAgIi93ZDQy
NjciCisgICAgIi93ZDQ1MDMiCisgICAgIi93ZDQ4MDAiCispCisKK2xpc3QoQVBQRU5EIEFCU0xf
TVNWQ19MSU5LT1BUUworICAgICItaWdub3JlOjQyMjEiCispCisKK2xpc3QoQVBQRU5EIEFCU0xf
TVNWQ19URVNUX0ZMQUdTCisgICAgIi93ZDQwMTgiCisgICAgIi93ZDQxMDEiCisgICAgIi93ZDQ1
MDMiCisgICAgIi93ZDQ5OTYiCisgICAgIi9ETk9NSU5NQVgiCispCisKK2xpc3QoQVBQRU5EIEFC
U0xfUkFORE9NX0hXQUVTX0FSTTMyX0ZMQUdTCisgICAgIi1tZnB1PW5lb24iCispCisKK2xpc3Qo
QVBQRU5EIEFCU0xfUkFORE9NX0hXQUVTX0FSTTY0X0ZMQUdTCisgICAgIi1tYXJjaD1hcm12OC1h
K2NyeXB0byIKKykKKworbGlzdChBUFBFTkQgQUJTTF9SQU5ET01fSFdBRVNfTVNWQ19YNjRfRkxB
R1MKKyAgICAiL08yIgorICAgICIvT2IyIgorKQorCitsaXN0KEFQUEVORCBBQlNMX1JBTkRPTV9I
V0FFU19YNjRfRkxBR1MKKyAgICAiLW1hZXMiCisgICAgIi1tc3NlNC4xIgorKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29wdHMvR0VORVJBVEVEX2NvcHRzLmJ6bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL0dFTkVSQVRF
RF9jb3B0cy5iemwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJmMzMyZjQ5Y2QxZTVjNTI5MjM3OWIwYzViYTc5Y2M1
OWVlN2RmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL0dFTkVSQVRFRF9jb3B0cy5i
emwKQEAgLTAsMCArMSwyMzcgQEAKKyIiIkdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQg
VEhJUyBGSUxFLgorCisoMSkgRWRpdCBhYnNsL2NvcHRzL2NvcHRzLnB5LgorKDIpIFJ1biBgcHl0
aG9uIDxwYXRoX3RvX2Fic2w+L2NvcHRzL2dlbmVyYXRlX2NvcHRzLnB5YC4KKyIiIgorCitBQlNM
X0NMQU5HX0NMX0VYQ0VQVElPTlNfRkxBR1MgPSBbCisgICAgIi9VX0hBU19FWENFUFRJT05TIiwK
KyAgICAiL0RfSEFTX0VYQ0VQVElPTlM9MSIsCisgICAgIi9FSHNjIiwKK10KKworQUJTTF9DTEFO
R19DTF9GTEFHUyA9IFsKKyAgICAiL1czIiwKKyAgICAiLVduby1jKys5OC1jb21wYXQtcGVkYW50
aWMiLAorICAgICItV25vLWNvbnZlcnNpb24iLAorICAgICItV25vLWNvdmVyZWQtc3dpdGNoLWRl
ZmF1bHQiLAorICAgICItV25vLWRlcHJlY2F0ZWQiLAorICAgICItV25vLWRpc2FibGVkLW1hY3Jv
LWV4cGFuc2lvbiIsCisgICAgIi1Xbm8tZG91YmxlLXByb21vdGlvbiIsCisgICAgIi1Xbm8tY29t
bWEiLAorICAgICItV25vLWV4dHJhLXNlbWkiLAorICAgICItV25vLWV4dHJhLXNlbWktc3RtdCIs
CisgICAgIi1Xbm8tcGFja2VkIiwKKyAgICAiLVduby1wYWRkZWQiLAorICAgICItV25vLXNpZ24t
Y29tcGFyZSIsCisgICAgIi1Xbm8tZmxvYXQtY29udmVyc2lvbiIsCisgICAgIi1Xbm8tZmxvYXQt
ZXF1YWwiLAorICAgICItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKyAgICAiLVduby1nY2MtY29t
cGF0IiwKKyAgICAiLVduby1nbG9iYWwtY29uc3RydWN0b3JzIiwKKyAgICAiLVduby1leGl0LXRp
bWUtZGVzdHJ1Y3RvcnMiLAorICAgICItV25vLW5lc3RlZC1hbm9uLXR5cGVzIiwKKyAgICAiLVdu
by1ub24tbW9kdWxhci1pbmNsdWRlLWluLW1vZHVsZSIsCisgICAgIi1Xbm8tb2xkLXN0eWxlLWNh
c3QiLAorICAgICItV25vLXJhbmdlLWxvb3AtYW5hbHlzaXMiLAorICAgICItV25vLXJlc2VydmVk
LWlkLW1hY3JvIiwKKyAgICAiLVduby1zaG9ydGVuLTY0LXRvLTMyIiwKKyAgICAiLVduby1zd2l0
Y2gtZW51bSIsCisgICAgIi1Xbm8tdGhyZWFkLXNhZmV0eS1uZWdhdGl2ZSIsCisgICAgIi1Xbm8t
dW5rbm93bi13YXJuaW5nLW9wdGlvbiIsCisgICAgIi1Xbm8tdW5yZWFjaGFibGUtY29kZSIsCisg
ICAgIi1Xbm8tdW51c2VkLW1hY3JvcyIsCisgICAgIi1Xbm8td2Vhay12dGFibGVzIiwKKyAgICAi
LVduby16ZXJvLWFzLW51bGwtcG9pbnRlci1jb25zdGFudCIsCisgICAgIi1XYml0ZmllbGQtZW51
bS1jb252ZXJzaW9uIiwKKyAgICAiLVdib29sLWNvbnZlcnNpb24iLAorICAgICItV2NvbnN0YW50
LWNvbnZlcnNpb24iLAorICAgICItV2VudW0tY29udmVyc2lvbiIsCisgICAgIi1XaW50LWNvbnZl
cnNpb24iLAorICAgICItV2xpdGVyYWwtY29udmVyc2lvbiIsCisgICAgIi1Xbm9uLWxpdGVyYWwt
bnVsbC1jb252ZXJzaW9uIiwKKyAgICAiLVdudWxsLWNvbnZlcnNpb24iLAorICAgICItV29iamMt
bGl0ZXJhbC1jb252ZXJzaW9uIiwKKyAgICAiLVduby1zaWduLWNvbnZlcnNpb24iLAorICAgICIt
V3N0cmluZy1jb252ZXJzaW9uIiwKKyAgICAiL0ROT01JTk1BWCIsCisgICAgIi9EV0lOMzJfTEVB
Tl9BTkRfTUVBTiIsCisgICAgIi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiLAorICAgICIvRF9T
Q0xfU0VDVVJFX05PX1dBUk5JTkdTIiwKKyAgICAiL0RfRU5BQkxFX0VYVEVOREVEX0FMSUdORURf
U1RPUkFHRSIsCitdCisKK0FCU0xfQ0xBTkdfQ0xfVEVTVF9GTEFHUyA9IFsKKyAgICAiLVduby1j
OTktZXh0ZW5zaW9ucyIsCisgICAgIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiLAorICAg
ICItV25vLW1pc3Npbmctbm9yZXR1cm4iLAorICAgICItV25vLW1pc3NpbmctcHJvdG90eXBlcyIs
CisgICAgIi1Xbm8tbWlzc2luZy12YXJpYWJsZS1kZWNsYXJhdGlvbnMiLAorICAgICItV25vLW51
bGwtY29udmVyc2lvbiIsCisgICAgIi1Xbm8tc2hhZG93IiwKKyAgICAiLVduby1zaGlmdC1zaWdu
LW92ZXJmbG93IiwKKyAgICAiLVduby1zaWduLWNvbXBhcmUiLAorICAgICItV25vLXVudXNlZC1m
dW5jdGlvbiIsCisgICAgIi1Xbm8tdW51c2VkLW1lbWJlci1mdW5jdGlvbiIsCisgICAgIi1Xbm8t
dW51c2VkLXBhcmFtZXRlciIsCisgICAgIi1Xbm8tdW51c2VkLXByaXZhdGUtZmllbGQiLAorICAg
ICItV25vLXVudXNlZC10ZW1wbGF0ZSIsCisgICAgIi1Xbm8tdXNlZC1idXQtbWFya2VkLXVudXNl
ZCIsCisgICAgIi1Xbm8temVyby1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQiLAorICAgICItV25v
LWdudS16ZXJvLXZhcmlhZGljLW1hY3JvLWFyZ3VtZW50cyIsCitdCisKK0FCU0xfR0NDX0VYQ0VQ
VElPTlNfRkxBR1MgPSBbCisgICAgIi1mZXhjZXB0aW9ucyIsCitdCisKK0FCU0xfR0NDX0ZMQUdT
ID0gWworICAgICItV2FsbCIsCisgICAgIi1XZXh0cmEiLAorICAgICItV2Nhc3QtcXVhbCIsCisg
ICAgIi1XY29udmVyc2lvbi1udWxsIiwKKyAgICAiLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyIsCisg
ICAgIi1Xb3Zlcmxlbmd0aC1zdHJpbmdzIiwKKyAgICAiLVdwb2ludGVyLWFyaXRoIiwKKyAgICAi
LVd1bnVzZWQtbG9jYWwtdHlwZWRlZnMiLAorICAgICItV3VudXNlZC1yZXN1bHQiLAorICAgICIt
V3ZhcmFyZ3MiLAorICAgICItV3ZsYSIsCisgICAgIi1Xd3JpdGUtc3RyaW5ncyIsCisgICAgIi1X
bm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiLAorICAgICItV25vLXNpZ24tY29tcGFyZSIs
CitdCisKK0FCU0xfR0NDX1RFU1RfRkxBR1MgPSBbCisgICAgIi1Xbm8tY29udmVyc2lvbi1udWxs
IiwKKyAgICAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIsCisgICAgIi1Xbm8tbWlzc2lu
Zy1kZWNsYXJhdGlvbnMiLAorICAgICItV25vLXNpZ24tY29tcGFyZSIsCisgICAgIi1Xbm8tdW51
c2VkLWZ1bmN0aW9uIiwKKyAgICAiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKKyAgICAiLVduby11
bnVzZWQtcHJpdmF0ZS1maWVsZCIsCitdCisKK0FCU0xfTExWTV9FWENFUFRJT05TX0ZMQUdTID0g
WworICAgICItZmV4Y2VwdGlvbnMiLAorXQorCitBQlNMX0xMVk1fRkxBR1MgPSBbCisgICAgIi1X
YWxsIiwKKyAgICAiLVdleHRyYSIsCisgICAgIi1XZXZlcnl0aGluZyIsCisgICAgIi1Xbm8tYysr
OTgtY29tcGF0LXBlZGFudGljIiwKKyAgICAiLVduby1jb252ZXJzaW9uIiwKKyAgICAiLVduby1j
b3ZlcmVkLXN3aXRjaC1kZWZhdWx0IiwKKyAgICAiLVduby1kZXByZWNhdGVkIiwKKyAgICAiLVdu
by1kaXNhYmxlZC1tYWNyby1leHBhbnNpb24iLAorICAgICItV25vLWRvdWJsZS1wcm9tb3Rpb24i
LAorICAgICItV25vLWNvbW1hIiwKKyAgICAiLVduby1leHRyYS1zZW1pIiwKKyAgICAiLVduby1l
eHRyYS1zZW1pLXN0bXQiLAorICAgICItV25vLXBhY2tlZCIsCisgICAgIi1Xbm8tcGFkZGVkIiwK
KyAgICAiLVduby1zaWduLWNvbXBhcmUiLAorICAgICItV25vLWZsb2F0LWNvbnZlcnNpb24iLAor
ICAgICItV25vLWZsb2F0LWVxdWFsIiwKKyAgICAiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisg
ICAgIi1Xbm8tZ2NjLWNvbXBhdCIsCisgICAgIi1Xbm8tZ2xvYmFsLWNvbnN0cnVjdG9ycyIsCisg
ICAgIi1Xbm8tZXhpdC10aW1lLWRlc3RydWN0b3JzIiwKKyAgICAiLVduby1uZXN0ZWQtYW5vbi10
eXBlcyIsCisgICAgIi1Xbm8tbm9uLW1vZHVsYXItaW5jbHVkZS1pbi1tb2R1bGUiLAorICAgICIt
V25vLW9sZC1zdHlsZS1jYXN0IiwKKyAgICAiLVduby1yYW5nZS1sb29wLWFuYWx5c2lzIiwKKyAg
ICAiLVduby1yZXNlcnZlZC1pZC1tYWNybyIsCisgICAgIi1Xbm8tc2hvcnRlbi02NC10by0zMiIs
CisgICAgIi1Xbm8tc3dpdGNoLWVudW0iLAorICAgICItV25vLXRocmVhZC1zYWZldHktbmVnYXRp
dmUiLAorICAgICItV25vLXVua25vd24td2FybmluZy1vcHRpb24iLAorICAgICItV25vLXVucmVh
Y2hhYmxlLWNvZGUiLAorICAgICItV25vLXVudXNlZC1tYWNyb3MiLAorICAgICItV25vLXdlYWst
dnRhYmxlcyIsCisgICAgIi1Xbm8temVyby1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQiLAorICAg
ICItV2JpdGZpZWxkLWVudW0tY29udmVyc2lvbiIsCisgICAgIi1XYm9vbC1jb252ZXJzaW9uIiwK
KyAgICAiLVdjb25zdGFudC1jb252ZXJzaW9uIiwKKyAgICAiLVdlbnVtLWNvbnZlcnNpb24iLAor
ICAgICItV2ludC1jb252ZXJzaW9uIiwKKyAgICAiLVdsaXRlcmFsLWNvbnZlcnNpb24iLAorICAg
ICItV25vbi1saXRlcmFsLW51bGwtY29udmVyc2lvbiIsCisgICAgIi1XbnVsbC1jb252ZXJzaW9u
IiwKKyAgICAiLVdvYmpjLWxpdGVyYWwtY29udmVyc2lvbiIsCisgICAgIi1Xbm8tc2lnbi1jb252
ZXJzaW9uIiwKKyAgICAiLVdzdHJpbmctY29udmVyc2lvbiIsCitdCisKK0FCU0xfTExWTV9URVNU
X0ZMQUdTID0gWworICAgICItV25vLWM5OS1leHRlbnNpb25zIiwKKyAgICAiLVduby1kZXByZWNh
dGVkLWRlY2xhcmF0aW9ucyIsCisgICAgIi1Xbm8tbWlzc2luZy1ub3JldHVybiIsCisgICAgIi1X
bm8tbWlzc2luZy1wcm90b3R5cGVzIiwKKyAgICAiLVduby1taXNzaW5nLXZhcmlhYmxlLWRlY2xh
cmF0aW9ucyIsCisgICAgIi1Xbm8tbnVsbC1jb252ZXJzaW9uIiwKKyAgICAiLVduby1zaGFkb3ci
LAorICAgICItV25vLXNoaWZ0LXNpZ24tb3ZlcmZsb3ciLAorICAgICItV25vLXNpZ24tY29tcGFy
ZSIsCisgICAgIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKyAgICAiLVduby11bnVzZWQtbWVtYmVy
LWZ1bmN0aW9uIiwKKyAgICAiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKKyAgICAiLVduby11bnVz
ZWQtcHJpdmF0ZS1maWVsZCIsCisgICAgIi1Xbm8tdW51c2VkLXRlbXBsYXRlIiwKKyAgICAiLVdu
by11c2VkLWJ1dC1tYXJrZWQtdW51c2VkIiwKKyAgICAiLVduby16ZXJvLWFzLW51bGwtcG9pbnRl
ci1jb25zdGFudCIsCisgICAgIi1Xbm8tZ251LXplcm8tdmFyaWFkaWMtbWFjcm8tYXJndW1lbnRz
IiwKK10KKworQUJTTF9NU1ZDX0VYQ0VQVElPTlNfRkxBR1MgPSBbCisgICAgIi9VX0hBU19FWENF
UFRJT05TIiwKKyAgICAiL0RfSEFTX0VYQ0VQVElPTlM9MSIsCisgICAgIi9FSHNjIiwKK10KKwor
QUJTTF9NU1ZDX0ZMQUdTID0gWworICAgICIvVzMiLAorICAgICIvRE5PTUlOTUFYIiwKKyAgICAi
L0RXSU4zMl9MRUFOX0FORF9NRUFOIiwKKyAgICAiL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIs
CisgICAgIi9EX1NDTF9TRUNVUkVfTk9fV0FSTklOR1MiLAorICAgICIvRF9FTkFCTEVfRVhURU5E
RURfQUxJR05FRF9TVE9SQUdFIiwKKyAgICAiL3dkNDAwNSIsCisgICAgIi93ZDQwNjgiLAorICAg
ICIvd2Q0MTgwIiwKKyAgICAiL3dkNDI0NCIsCisgICAgIi93ZDQyNjciLAorICAgICIvd2Q0NTAz
IiwKKyAgICAiL3dkNDgwMCIsCitdCisKK0FCU0xfTVNWQ19MSU5LT1BUUyA9IFsKKyAgICAiLWln
bm9yZTo0MjIxIiwKK10KKworQUJTTF9NU1ZDX1RFU1RfRkxBR1MgPSBbCisgICAgIi93ZDQwMTgi
LAorICAgICIvd2Q0MTAxIiwKKyAgICAiL3dkNDUwMyIsCisgICAgIi93ZDQ5OTYiLAorICAgICIv
RE5PTUlOTUFYIiwKK10KKworQUJTTF9SQU5ET01fSFdBRVNfQVJNMzJfRkxBR1MgPSBbCisgICAg
Ii1tZnB1PW5lb24iLAorXQorCitBQlNMX1JBTkRPTV9IV0FFU19BUk02NF9GTEFHUyA9IFsKKyAg
ICAiLW1hcmNoPWFybXY4LWErY3J5cHRvIiwKK10KKworQUJTTF9SQU5ET01fSFdBRVNfTVNWQ19Y
NjRfRkxBR1MgPSBbCisgICAgIi9PMiIsCisgICAgIi9PYjIiLAorXQorCitBQlNMX1JBTkRPTV9I
V0FFU19YNjRfRkxBR1MgPSBbCisgICAgIi1tYWVzIiwKKyAgICAiLW1zc2U0LjEiLAorXQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL2Nv
bmZpZ3VyZV9jb3B0cy5iemwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0ZWZlNzdjMjFhMTljMzA4YTdmZmEwYTNl
NWU3YzQ1NGY0MDFkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL2NvbmZpZ3VyZV9j
b3B0cy5iemwKQEAgLTAsMCArMSw4OSBAQAorIiIiYWJzbCBzcGVjaWZpYyBjb3B0cy4KKworVGhp
cyBmaWxlIHNpbXBseSBzZWxlY3RzIHRoZSBjb3JyZWN0IG9wdGlvbnMgZnJvbSB0aGUgZ2VuZXJh
dGVkIGZpbGVzLiAgVG8KK2NoYW5nZSBBYnNlaWwgY29wdHMsIGVkaXQgYWJzbC9jb3B0cy9jb3B0
cy5weQorIiIiCisKK2xvYWQoCisgICAgIi8vYWJzbDpjb3B0cy9HRU5FUkFURURfY29wdHMuYnps
IiwKKyAgICAiQUJTTF9HQ0NfRVhDRVBUSU9OU19GTEFHUyIsCisgICAgIkFCU0xfR0NDX0ZMQUdT
IiwKKyAgICAiQUJTTF9HQ0NfVEVTVF9GTEFHUyIsCisgICAgIkFCU0xfTExWTV9FWENFUFRJT05T
X0ZMQUdTIiwKKyAgICAiQUJTTF9MTFZNX0ZMQUdTIiwKKyAgICAiQUJTTF9MTFZNX1RFU1RfRkxB
R1MiLAorICAgICJBQlNMX01TVkNfRVhDRVBUSU9OU19GTEFHUyIsCisgICAgIkFCU0xfTVNWQ19G
TEFHUyIsCisgICAgIkFCU0xfTVNWQ19MSU5LT1BUUyIsCisgICAgIkFCU0xfTVNWQ19URVNUX0ZM
QUdTIiwKKyAgICAiQUJTTF9SQU5ET01fSFdBRVNfQVJNMzJfRkxBR1MiLAorICAgICJBQlNMX1JB
TkRPTV9IV0FFU19BUk02NF9GTEFHUyIsCisgICAgIkFCU0xfUkFORE9NX0hXQUVTX01TVkNfWDY0
X0ZMQUdTIiwKKyAgICAiQUJTTF9SQU5ET01fSFdBRVNfWDY0X0ZMQUdTIiwKKykKKworQUJTTF9E
RUZBVUxUX0NPUFRTID0gc2VsZWN0KHsKKyAgICAiLy9hYnNsOndpbmRvd3MiOiBBQlNMX01TVkNf
RkxBR1MsCisgICAgIi8vYWJzbDpsbHZtX2NvbXBpbGVyIjogQUJTTF9MTFZNX0ZMQUdTLAorICAg
ICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IEFCU0xfR0NDX0ZMQUdTLAorfSkKKworIyBpbiBhYnNl
bmNlIG9mIG1vZHVsZXMgKC0tY29tcGlsZXI9Z2NjIG9yIC1jIG9wdCksIGNjX3Rlc3RzIGxlYWsg
dGhlaXIgY29wdHMKKyMgdG8gdGhlaXIgKGluY2x1ZGVkIGhlYWRlcikgZGVwZW5kZW5jaWVzIGFu
ZCBmYWlsIHRvIGJ1aWxkIG91dHNpZGUgYWJzbAorQUJTTF9URVNUX0NPUFRTID0gQUJTTF9ERUZB
VUxUX0NPUFRTICsgc2VsZWN0KHsKKyAgICAiLy9hYnNsOndpbmRvd3MiOiBBQlNMX01TVkNfVEVT
VF9GTEFHUywKKyAgICAiLy9hYnNsOmxsdm1fY29tcGlsZXIiOiBBQlNMX0xMVk1fVEVTVF9GTEFH
UywKKyAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBBQlNMX0dDQ19URVNUX0ZMQUdTLAorfSkK
KworQUJTTF9FWENFUFRJT05TX0ZMQUcgPSBzZWxlY3QoeworICAgICIvL2Fic2w6d2luZG93cyI6
IEFCU0xfTVNWQ19FWENFUFRJT05TX0ZMQUdTLAorICAgICIvL2Fic2w6bGx2bV9jb21waWxlciI6
IEFCU0xfTExWTV9FWENFUFRJT05TX0ZMQUdTLAorICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6
IEFCU0xfR0NDX0VYQ0VQVElPTlNfRkxBR1MsCit9KQorCitBQlNMX0VYQ0VQVElPTlNfRkxBR19M
SU5LT1BUUyA9IHNlbGVjdCh7CisgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogW10sCit9KQor
CitBQlNMX0RFRkFVTFRfTElOS09QVFMgPSBzZWxlY3QoeworICAgICIvL2Fic2w6d2luZG93cyI6
IEFCU0xfTVNWQ19MSU5LT1BUUywKKyAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbXSwKK30p
CisKKyMgQUJTTF9SQU5ET01fUkFOREVOX0NPUFRTIGJsYXplIGNvcHRzIGZsYWdzIHdoaWNoIGFy
ZSByZXF1aXJlZCBieSBlYWNoCisjIGVudmlyb25tZW50IHRvIGJ1aWxkIGFuIGFjY2VsZXJhdGVk
IFJhbmRlbkh3QWVzIGxpYnJhcnkuCitBQlNMX1JBTkRPTV9SQU5ERU5fQ09QVFMgPSBzZWxlY3Qo
eworICAgICMgQVBQTEUKKyAgICAiOmNwdV9kYXJ3aW5feDg2XzY0IjogQUJTTF9SQU5ET01fSFdB
RVNfWDY0X0ZMQUdTLAorICAgICI6Y3B1X2RhcndpbiI6IEFCU0xfUkFORE9NX0hXQUVTX1g2NF9G
TEFHUywKKyAgICAiOmNwdV94NjRfd2luZG93c19tc3ZjIjogQUJTTF9SQU5ET01fSFdBRVNfTVNW
Q19YNjRfRkxBR1MsCisgICAgIjpjcHVfeDY0X3dpbmRvd3MiOiBBQlNMX1JBTkRPTV9IV0FFU19N
U1ZDX1g2NF9GTEFHUywKKyAgICAiOmNwdV9oYXN3ZWxsIjogQUJTTF9SQU5ET01fSFdBRVNfWDY0
X0ZMQUdTLAorICAgICI6Y3B1X3BwYyI6IFsiLW1jcnlwdG8iXSwKKworICAgICMgU3VwcG9ydGVk
IGJ5IGRlZmF1bHQgb3IgdW5zdXBwb3J0ZWQuCisgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0Ijog
W10sCit9KQorCisjIGFic2xfcmFuZG9tX3JhbmRlbl9jb3B0c19pbml0OgorIyAgSW5pdGlhbGl6
ZSB0aGUgY29uZmlnIHRhcmdldHMgYmFzZWQgb24gY3B1LCBvcywgZXRjLiB1c2VkIHRvIHNlbGVj
dAorIyAgdGhlIHJlcXVpcmVkIHZhbHVlcyBmb3IgQUJTTF9SQU5ET01fUkFOREVOX0NPUFRTCitk
ZWYgYWJzbF9yYW5kb21fcmFuZGVuX2NvcHRzX2luaXQoKToKKyAgICAiIiJJbml0aWFsaXplIHRo
ZSBjb25maWdfc2V0dGluZ3MgdXNlZCBieSBBQlNMX1JBTkRPTV9SQU5ERU5fQ09QVFMuIiIiCisK
KyAgICAjIENQVSBjb25maWdzLgorICAgICMgVGhlc2UgY29uZmlncyBoYXZlIGNvbnNpc3RlbnQg
ZmxhZ3MgdG8gZW5hYmxlIEhXQUVTIGludHNydWN0aW9ucy4KKyAgICBjcHVfY29uZmlncyA9IFsK
KyAgICAgICAgInBwYyIsCisgICAgICAgICJoYXN3ZWxsIiwKKyAgICAgICAgImRhcndpbl94ODZf
NjQiLAorICAgICAgICAiZGFyd2luIiwKKyAgICAgICAgIng2NF93aW5kb3dzX21zdmMiLAorICAg
ICAgICAieDY0X3dpbmRvd3MiLAorICAgIF0KKyAgICBmb3IgY3B1IGluIGNwdV9jb25maWdzOgor
ICAgICAgICBuYXRpdmUuY29uZmlnX3NldHRpbmcoCisgICAgICAgICAgICBuYW1lID0gImNwdV8l
cyIgJSBjcHUsCisgICAgICAgICAgICB2YWx1ZXMgPSB7ImNwdSI6IGNwdX0sCisgICAgICAgICkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL2NvcHRzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMvY29wdHMucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDY4YWJjZWJjYzMzNDY5Mzk2NjQ4ZDAwZmEwNGRhYWZhNjBiOGQ3OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL2NvcHRzLnB5CkBAIC0wLDAgKzEsMjE0IEBACisi
IiJBYnNlaWwgY29tcGlsZXIgb3B0aW9ucy4KKworVGhpcyBpcyB0aGUgc291cmNlIG9mIHRydXRo
IGZvciBBYnNlaWwgY29tcGlsZXIgb3B0aW9ucy4gIFRvIG1vZGlmeSBBYnNlaWwKK2NvbXBpbGF0
aW9uIG9wdGlvbnM6CisKKyAgKDEpIEVkaXQgdGhlIGFwcHJvcHJpYXRlIGxpc3QgaW4gdGhpcyBm
aWxlIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybSB0aGUgZmxhZyBpcworICAgICAgbmVlZGVkIG9uLgor
ICAoMikgUnVuIGA8cGF0aF90b19hYnNsPi9jb3B0cy9nZW5lcmF0ZV9jb3B0cy5weWAuCisKK1Ro
ZSBnZW5lcmF0ZWQgY29wdHMgYXJlIGNvbnN1bWVkIGJ5IGNvbmZpZ3VyZV9jb3B0cy5iemwgYW5k
CitBYnNlaWxDb25maWd1cmVDb3B0cy5jbWFrZS4KKyIiIgorCisjIC9XYWxsIHdpdGggbXN2YyBp
bmNsdWRlcyB1bmhlbHBmdWwgd2FybmluZ3Mgc3VjaCBhcyBDNDcxMSwgQzQ3MTAsIC4uLgorTVNW
Q19CSUdfV0FSTklOR19GTEFHUyA9IFsKKyAgICAiL1czIiwKK10KKworTExWTV9CSUdfV0FSTklO
R19GTEFHUyA9IFsKKyAgICAiLVdhbGwiLAorICAgICItV2V4dHJhIiwKKyAgICAiLVdldmVyeXRo
aW5nIiwKK10KKworIyBEb2NzIG9uIHNpbmdsZSBmbGFncyBpcyBwcmVjZWRlZCBieSBhIGNvbW1l
bnQuCisjIERvY3Mgb24gZ3JvdXBzIG9mIGZsYWdzIGlzIHByZWNlZGVkIGJ5ICMjIy4KK0xMVk1f
RElTQUJMRV9XQVJOSU5HU19GTEFHUyA9IFsKKyAgICAjIEFic2VpbCBkb2VzIG5vdCBzdXBwb3J0
IEMrKzk4CisgICAgIi1Xbm8tYysrOTgtY29tcGF0LXBlZGFudGljIiwKKyAgICAjIFR1cm5zIG9m
ZiBhbGwgaW1wbGljaXQgY29udmVyc2lvbiB3YXJuaW5ncy4gTW9zdCBhcmUgcmUtZW5hYmxlZCBi
ZWxvdy4KKyAgICAiLVduby1jb252ZXJzaW9uIiwKKyAgICAiLVduby1jb3ZlcmVkLXN3aXRjaC1k
ZWZhdWx0IiwKKyAgICAiLVduby1kZXByZWNhdGVkIiwKKyAgICAiLVduby1kaXNhYmxlZC1tYWNy
by1leHBhbnNpb24iLAorICAgICItV25vLWRvdWJsZS1wcm9tb3Rpb24iLAorICAgICMjIworICAg
ICMgVHVybmVkIG9mZiBhcyB0aGV5IGluY2x1ZGUgdmFsaWQgQysrIGNvZGUuCisgICAgIi1Xbm8t
Y29tbWEiLAorICAgICItV25vLWV4dHJhLXNlbWkiLAorICAgICItV25vLWV4dHJhLXNlbWktc3Rt
dCIsCisgICAgIi1Xbm8tcGFja2VkIiwKKyAgICAiLVduby1wYWRkZWQiLAorICAgICMjIworICAg
ICMgR29vZ2xlIHN0eWxlIGRvZXMgbm90IHVzZSB1bnNpZ25lZCBpbnRlZ2VycywgdGhvdWdoIFNU
TCBjb250YWluZXJzCisgICAgIyBoYXZlIHVuc2lnbmVkIHR5cGVzLgorICAgICItV25vLXNpZ24t
Y29tcGFyZSIsCisgICAgIyMjCisgICAgIi1Xbm8tZmxvYXQtY29udmVyc2lvbiIsCisgICAgIi1X
bm8tZmxvYXQtZXF1YWwiLAorICAgICItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKyAgICAjIFRv
byBhZ2dyZXNzaXZlOiB3YXJucyBvbiBDbGFuZyBleHRlbnNpb25zIGVuY2xvc2VkIGluIENsYW5n
LW9ubHkKKyAgICAjIGNvbXBpbGF0aW9uIHBhdGhzLgorICAgICItV25vLWdjYy1jb21wYXQiLAor
ICAgICMjIworICAgICMgU29tZSBpbnRlcm5hbCBnbG9iYWxzIGFyZSBuZWNlc3NhcnkuIERvbid0
IGRvIHRoaXMgYXQgaG9tZS4KKyAgICAiLVduby1nbG9iYWwtY29uc3RydWN0b3JzIiwKKyAgICAi
LVduby1leGl0LXRpbWUtZGVzdHJ1Y3RvcnMiLAorICAgICMjIworICAgICItV25vLW5lc3RlZC1h
bm9uLXR5cGVzIiwKKyAgICAiLVduby1ub24tbW9kdWxhci1pbmNsdWRlLWluLW1vZHVsZSIsCisg
ICAgIi1Xbm8tb2xkLXN0eWxlLWNhc3QiLAorICAgICMgV2FybnMgb24gcHJlZmVycmVkIHVzYWdl
IG9mIG5vbi1QT0QgdHlwZXMgc3VjaCBhcyBzdHJpbmdfdmlldworICAgICItV25vLXJhbmdlLWxv
b3AtYW5hbHlzaXMiLAorICAgICItV25vLXJlc2VydmVkLWlkLW1hY3JvIiwKKyAgICAiLVduby1z
aG9ydGVuLTY0LXRvLTMyIiwKKyAgICAiLVduby1zd2l0Y2gtZW51bSIsCisgICAgIi1Xbm8tdGhy
ZWFkLXNhZmV0eS1uZWdhdGl2ZSIsCisgICAgIi1Xbm8tdW5rbm93bi13YXJuaW5nLW9wdGlvbiIs
CisgICAgIi1Xbm8tdW5yZWFjaGFibGUtY29kZSIsCisgICAgIyBDYXVzZXMgd2FybmluZ3Mgb24g
aW5jbHVkZSBndWFyZHMKKyAgICAiLVduby11bnVzZWQtbWFjcm9zIiwKKyAgICAiLVduby13ZWFr
LXZ0YWJsZXMiLAorICAgICMgQ2F1c2VzIHdhcm5pbmdzIG9uIHVzYWdlIG9mIHR5cGVzL2NvbXBh
cmUuaCBjb21wYXJpc29uIG9wZXJhdG9ycy4KKyAgICAiLVduby16ZXJvLWFzLW51bGwtcG9pbnRl
ci1jb25zdGFudCIsCisgICAgIyMjCisgICAgIyBJbXBsaWNpdCBjb252ZXJzaW9uIHdhcm5pbmdz
IHR1cm5lZCBvZmYgYnkgLVduby1jb252ZXJzaW9uCisgICAgIyB3aGljaCBhcmUgcmUtZW5hYmxl
ZCBiZWxvdy4KKyAgICAiLVdiaXRmaWVsZC1lbnVtLWNvbnZlcnNpb24iLAorICAgICItV2Jvb2wt
Y29udmVyc2lvbiIsCisgICAgIi1XY29uc3RhbnQtY29udmVyc2lvbiIsCisgICAgIi1XZW51bS1j
b252ZXJzaW9uIiwKKyAgICAiLVdpbnQtY29udmVyc2lvbiIsCisgICAgIi1XbGl0ZXJhbC1jb252
ZXJzaW9uIiwKKyAgICAiLVdub24tbGl0ZXJhbC1udWxsLWNvbnZlcnNpb24iLAorICAgICItV251
bGwtY29udmVyc2lvbiIsCisgICAgIi1Xb2JqYy1saXRlcmFsLWNvbnZlcnNpb24iLAorICAgICIt
V25vLXNpZ24tY29udmVyc2lvbiIsCisgICAgIi1Xc3RyaW5nLWNvbnZlcnNpb24iLAorXQorCitM
TFZNX1RFU1RfRElTQUJMRV9XQVJOSU5HU19GTEFHUyA9IFsKKyAgICAiLVduby1jOTktZXh0ZW5z
aW9ucyIsCisgICAgIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiLAorICAgICItV25vLW1p
c3Npbmctbm9yZXR1cm4iLAorICAgICItV25vLW1pc3NpbmctcHJvdG90eXBlcyIsCisgICAgIi1X
bm8tbWlzc2luZy12YXJpYWJsZS1kZWNsYXJhdGlvbnMiLAorICAgICItV25vLW51bGwtY29udmVy
c2lvbiIsCisgICAgIi1Xbm8tc2hhZG93IiwKKyAgICAiLVduby1zaGlmdC1zaWduLW92ZXJmbG93
IiwKKyAgICAiLVduby1zaWduLWNvbXBhcmUiLAorICAgICItV25vLXVudXNlZC1mdW5jdGlvbiIs
CisgICAgIi1Xbm8tdW51c2VkLW1lbWJlci1mdW5jdGlvbiIsCisgICAgIi1Xbm8tdW51c2VkLXBh
cmFtZXRlciIsCisgICAgIi1Xbm8tdW51c2VkLXByaXZhdGUtZmllbGQiLAorICAgICItV25vLXVu
dXNlZC10ZW1wbGF0ZSIsCisgICAgIi1Xbm8tdXNlZC1idXQtbWFya2VkLXVudXNlZCIsCisgICAg
Ii1Xbm8temVyby1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQiLAorICAgICMgZ3Rlc3QgZGVwZW5k
cyBvbiB0aGlzIEdOVSBleHRlbnNpb24gYmVpbmcgb2ZmZXJlZC4KKyAgICAiLVduby1nbnUtemVy
by12YXJpYWRpYy1tYWNyby1hcmd1bWVudHMiLAorXQorCitNU1ZDX1NUWUxFX0VYQ0VQVElPTlNf
RkxBR1MgPSBbCisgICAgIi9VX0hBU19FWENFUFRJT05TIiwKKyAgICAiL0RfSEFTX0VYQ0VQVElP
TlM9MSIsCisgICAgIi9FSHNjIgorXQorCitNU1ZDX0RFRklORVMgPSBbCisgICAgIi9ETk9NSU5N
QVgiLCAgIyBEb24ndCBkZWZpbmUgbWluIGFuZCBtYXggbWFjcm9zICh3aW5kb3dzLmgpCisgICAg
IyBEb24ndCBibG9hdCBuYW1lc3BhY2Ugd2l0aCBpbmNvbXBhdGlibGUgd2luc29jayB2ZXJzaW9u
cy4KKyAgICAiL0RXSU4zMl9MRUFOX0FORF9NRUFOIiwKKyAgICAjIERvbid0IHdhcm4gYWJvdXQg
dXNhZ2Ugb2YgaW5zZWN1cmUgQyBmdW5jdGlvbnMuCisgICAgIi9EX0NSVF9TRUNVUkVfTk9fV0FS
TklOR1MiLAorICAgICIvRF9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTIiwKKyAgICAjIEludHJvZHVj
ZWQgaW4gVlMgMjAxNyAxNS44LCBhbGxvdyBvdmVyYWxpZ25lZCB0eXBlcyBpbiBhbGlnbmVkX3N0
b3JhZ2UKKyAgICAiL0RfRU5BQkxFX0VYVEVOREVEX0FMSUdORURfU1RPUkFHRSIsCitdCisKK0NP
UFRfVkFSUyA9IHsKKyAgICAiQUJTTF9HQ0NfRkxBR1MiOiBbCisgICAgICAgICItV2FsbCIsCisg
ICAgICAgICItV2V4dHJhIiwKKyAgICAgICAgIi1XY2FzdC1xdWFsIiwKKyAgICAgICAgIi1XY29u
dmVyc2lvbi1udWxsIiwKKyAgICAgICAgIi1XbWlzc2luZy1kZWNsYXJhdGlvbnMiLAorICAgICAg
ICAiLVdvdmVybGVuZ3RoLXN0cmluZ3MiLAorICAgICAgICAiLVdwb2ludGVyLWFyaXRoIiwKKyAg
ICAgICAgIi1XdW51c2VkLWxvY2FsLXR5cGVkZWZzIiwKKyAgICAgICAgIi1XdW51c2VkLXJlc3Vs
dCIsCisgICAgICAgICItV3ZhcmFyZ3MiLAorICAgICAgICAiLVd2bGEiLCAgIyB2YXJpYWJsZS1s
ZW5ndGggYXJyYXkKKyAgICAgICAgIi1Xd3JpdGUtc3RyaW5ncyIsCisgICAgICAgICMgZ2NjLTQu
eCBoYXMgc3B1cmlvdXMgbWlzc2luZyBmaWVsZCBpbml0aWFsaXplciB3YXJuaW5ncy4KKyAgICAg
ICAgIyBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zNjc1MAor
ICAgICAgICAjIFJlbW92ZSB3aGVuIGdjYy00LnggaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KKyAg
ICAgICAgIi1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiLAorICAgICAgICAjIEdvb2ds
ZSBzdHlsZSBkb2VzIG5vdCB1c2UgdW5zaWduZWQgaW50ZWdlcnMsIHRob3VnaCBTVEwgY29udGFp
bmVycworICAgICAgICAjIGhhdmUgdW5zaWduZWQgdHlwZXMuCisgICAgICAgICItV25vLXNpZ24t
Y29tcGFyZSIsCisgICAgXSwKKyAgICAiQUJTTF9HQ0NfVEVTVF9GTEFHUyI6IFsKKyAgICAgICAg
Ii1Xbm8tY29udmVyc2lvbi1udWxsIiwKKyAgICAgICAgIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJh
dGlvbnMiLAorICAgICAgICAiLVduby1taXNzaW5nLWRlY2xhcmF0aW9ucyIsCisgICAgICAgICIt
V25vLXNpZ24tY29tcGFyZSIsCisgICAgICAgICItV25vLXVudXNlZC1mdW5jdGlvbiIsCisgICAg
ICAgICItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorICAgICAgICAiLVduby11bnVzZWQtcHJpdmF0
ZS1maWVsZCIsCisgICAgXSwKKyAgICAiQUJTTF9HQ0NfRVhDRVBUSU9OU19GTEFHUyI6IFsiLWZl
eGNlcHRpb25zIl0sCisgICAgIkFCU0xfTExWTV9GTEFHUyI6CisgICAgICAgIExMVk1fQklHX1dB
Uk5JTkdfRkxBR1MgKyBMTFZNX0RJU0FCTEVfV0FSTklOR1NfRkxBR1MsCisgICAgIkFCU0xfTExW
TV9URVNUX0ZMQUdTIjoKKyAgICAgICAgTExWTV9URVNUX0RJU0FCTEVfV0FSTklOR1NfRkxBR1Ms
CisgICAgIkFCU0xfTExWTV9FWENFUFRJT05TX0ZMQUdTIjogWyItZmV4Y2VwdGlvbnMiXSwKKyAg
ICAiQUJTTF9DTEFOR19DTF9GTEFHUyI6CisgICAgICAgIChNU1ZDX0JJR19XQVJOSU5HX0ZMQUdT
ICsgTExWTV9ESVNBQkxFX1dBUk5JTkdTX0ZMQUdTICsgTVNWQ19ERUZJTkVTKSwKKyAgICAiQUJT
TF9DTEFOR19DTF9URVNUX0ZMQUdTIjoKKyAgICAgICAgTExWTV9URVNUX0RJU0FCTEVfV0FSTklO
R1NfRkxBR1MsCisgICAgIkFCU0xfQ0xBTkdfQ0xfRVhDRVBUSU9OU19GTEFHUyI6CisgICAgICAg
IE1TVkNfU1RZTEVfRVhDRVBUSU9OU19GTEFHUywKKyAgICAiQUJTTF9NU1ZDX0ZMQUdTIjoKKyAg
ICAgICAgTVNWQ19CSUdfV0FSTklOR19GTEFHUyArIE1TVkNfREVGSU5FUyArIFsKKyAgICAgICAg
ICAgICIvd2Q0MDA1IiwgICMgbWFjcm8tcmVkZWZpbml0aW9uCisgICAgICAgICAgICAiL3dkNDA2
OCIsICAjIHVua25vd24gcHJhZ21hCisgICAgICAgICAgICAjIHF1YWxpZmllciBhcHBsaWVkIHRv
IGZ1bmN0aW9uIHR5cGUgaGFzIG5vIG1lYW5pbmc7IGlnbm9yZWQKKyAgICAgICAgICAgICIvd2Q0
MTgwIiwKKyAgICAgICAgICAgICMgY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywg
cG9zc2libGUgbG9zcyBvZiBkYXRhCisgICAgICAgICAgICAiL3dkNDI0NCIsCisgICAgICAgICAg
ICAjIGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAndHlwZScsIHBvc3NpYmxlIGxvc3Mgb2Yg
ZGF0YQorICAgICAgICAgICAgIi93ZDQyNjciLAorICAgICAgICAgICAgIyBUaGUgZGVjb3JhdGVk
IG5hbWUgd2FzIGxvbmdlciB0aGFuIHRoZSBjb21waWxlciBsaW1pdAorICAgICAgICAgICAgIi93
ZDQ1MDMiLAorICAgICAgICAgICAgIyBmb3JjaW5nIHZhbHVlIHRvIGJvb2wgJ3RydWUnIG9yICdm
YWxzZScgKHBlcmZvcm1hbmNlIHdhcm5pbmcpCisgICAgICAgICAgICAiL3dkNDgwMCIsCisgICAg
ICAgIF0sCisgICAgIkFCU0xfTVNWQ19URVNUX0ZMQUdTIjogWworICAgICAgICAiL3dkNDAxOCIs
ICAjIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaAorICAgICAgICAiL3dkNDEwMSIsICAjIHVucmVm
ZXJlbmNlZCBsb2NhbCB2YXJpYWJsZQorICAgICAgICAiL3dkNDUwMyIsICAjIGRlY29yYXRlZCBu
YW1lIGxlbmd0aCBleGNlZWRlZCwgbmFtZSB3YXMgdHJ1bmNhdGVkCisgICAgICAgICIvd2Q0OTk2
IiwgICMgdXNlIG9mIGRlcHJlY2F0ZWQgc3ltYm9sCisgICAgICAgICIvRE5PTUlOTUFYIiwgICMg
ZGlzYWJsZSB0aGUgbWluKCkgYW5kIG1heCgpIG1hY3JvcyBmcm9tIDx3aW5kb3dzLmg+CisgICAg
XSwKKyAgICAiQUJTTF9NU1ZDX0VYQ0VQVElPTlNfRkxBR1MiOgorICAgICAgICBNU1ZDX1NUWUxF
X0VYQ0VQVElPTlNfRkxBR1MsCisgICAgIkFCU0xfTVNWQ19MSU5LT1BUUyI6IFsKKyAgICAgICAg
IyBPYmplY3QgZmlsZSBkb2Vzbid0IGV4cG9ydCBhbnkgcHJldmlvdXNseSB1bmRlZmluZWQgc3lt
Ym9scworICAgICAgICAiLWlnbm9yZTo0MjIxIiwKKyAgICBdLAorICAgICMgIkhXQUVTIiBpcyBh
biBhYmJyZXZpYXRpb24gZm9yICJoYXJkd2FyZSBBRVMiIChBRVMgLSBBZHZhbmNlZCBFbmNyeXB0
aW9uCisgICAgIyBTdGFuZGFyZCkuIFRoZXNlIGZsYWdzIGFyZSB1c2VkIGZvciBkZXRlY3Rpbmcg
d2hldGhlciBvciBub3QgdGhlIHRhcmdldAorICAgICMgYXJjaGl0ZWN0dXJlIGhhcyBoYXJkd2Fy
ZSBzdXBwb3J0IGZvciBBRVMgaW5zdHJ1Y3Rpb25zIHdoaWNoIGNhbiBiZSB1c2VkCisgICAgIyB0
byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHNvbWUgcmFuZG9tIGJpdCBnZW5lcmF0b3JzLgorICAg
ICJBQlNMX1JBTkRPTV9IV0FFU19BUk02NF9GTEFHUyI6IFsiLW1hcmNoPWFybXY4LWErY3J5cHRv
Il0sCisgICAgIkFCU0xfUkFORE9NX0hXQUVTX0FSTTMyX0ZMQUdTIjogWyItbWZwdT1uZW9uIl0s
CisgICAgIkFCU0xfUkFORE9NX0hXQUVTX1g2NF9GTEFHUyI6IFsKKyAgICAgICAgIi1tYWVzIiwK
KyAgICAgICAgIi1tc3NlNC4xIiwKKyAgICBdLAorICAgICJBQlNMX1JBTkRPTV9IV0FFU19NU1ZD
X1g2NF9GTEFHUyI6IFsKKyAgICAgICAgIi9PMiIsICAjIE1heGltaXplIHNwZWVkCisgICAgICAg
ICIvT2IyIiwgICMgQWdncmVzc2l2ZSBpbmxpbmluZworICAgIF0sCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb3B0cy9nZW5lcmF0ZV9jb3B0cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL2dlbmVyYXRlX2NvcHRz
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBlNWRjOWZhZDI5NTFhYmNlNzcxNmQ2ZjJjMjJkYjc3N2RmMWU4MmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9nZW5lcmF0ZV9jb3B0cy5weQpAQCAtMCww
ICsxLDEwOSBAQAorIyEvdXNyL2Jpbi9weXRob24KKyIiIkdlbmVyYXRlIEFic2VpbCBjb21waWxl
IGNvbXBpbGUgb3B0aW9uIGNvbmZpZ3MuCisKK1VzYWdlOiA8cGF0aF90b19hYnNsPi9jb3B0cy9n
ZW5lcmF0ZV9jb3B0cy5weQorCitUaGUgY29uZmlncyBhcmUgZ2VuZXJhdGVkIGZyb20gY29wdHMu
cHkuCisiIiIKKworZnJvbSBvcyBpbXBvcnQgcGF0aAoraW1wb3J0IHN5cworZnJvbSBjb3B0cyBp
bXBvcnQgQ09QVF9WQVJTCisKKworIyBIZWxwZXIgZnVuY3Rpb25zCitkZWYgZmlsZV9oZWFkZXJf
bGluZXMoKToKKyAgcmV0dXJuIFsKKyAgICAgICJHRU5FUkFURUQhIERPIE5PVCBNQU5VQUxMWSBF
RElUIFRISVMgRklMRS4iLCAiIiwKKyAgICAgICIoMSkgRWRpdCBhYnNsL2NvcHRzL2NvcHRzLnB5
LiIsCisgICAgICAiKDIpIFJ1biBgcHl0aG9uIDxwYXRoX3RvX2Fic2w+L2NvcHRzL2dlbmVyYXRl
X2NvcHRzLnB5YC4iCisgIF0KKworCitkZWYgZmxhdHRlbigqbGlzdHMpOgorICByZXR1cm4gW2l0
ZW0gZm9yIHN1Ymxpc3QgaW4gbGlzdHMgZm9yIGl0ZW0gaW4gc3VibGlzdF0KKworCitkZWYgcmVs
YXRpdmVfZmlsZW5hbWUoZmlsZW5hbWUpOgorICByZXR1cm4gcGF0aC5qb2luKHBhdGguZGlybmFt
ZShfX2ZpbGVfXyksIGZpbGVuYW1lKQorCisKKyMgU3R5bGUgY2xhc3Nlcy4gIFRoZXNlIGNvbnRh
aW4gYWxsIHRoZSBzeW50YWN0aWMgc3R5bGluZyBuZWVkZWQgdG8gZ2VuZXJhdGUgYQorIyBjb3B0
IGZpbGUgZm9yIGRpZmZlcmVudCBidWlsZCB0b29scy4KK2NsYXNzIENNYWtlU3R5bGUob2JqZWN0
KToKKyAgIiIiU3R5bGUgb2JqZWN0IGZvciBDTWFrZSBjb3B0cyBmaWxlLiIiIgorCisgIGRlZiBz
ZXBhcmF0b3Ioc2VsZik6CisgICAgcmV0dXJuICIiCisKKyAgZGVmIGxpc3RfaW50cm9kdWNlcihz
ZWxmLCBuYW1lKToKKyAgICByZXR1cm4gImxpc3QoQVBQRU5EICIgKyBuYW1lCisKKyAgZGVmIGxp
c3RfY2xvc2VyKHNlbGYpOgorICAgIHJldHVybiAiKVxuIgorCisgIGRlZiBkb2NzdHJpbmcoc2Vs
Zik6CisgICAgcmV0dXJuICJcbiIuam9pbigoKCIjICIgKyBsaW5lKS5zdHJpcCgpIGZvciBsaW5l
IGluIGZpbGVfaGVhZGVyX2xpbmVzKCkpKQorCisgIGRlZiBmaWxlbmFtZShzZWxmKToKKyAgICBy
ZXR1cm4gIkdFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFrZSIKKworCitjbGFzcyBTdGFybGFya1N0
eWxlKG9iamVjdCk6CisgICIiIlN0eWxlIG9iamVjdCBmb3IgU3RhcmxhcmsgY29wdHMgZmlsZS4i
IiIKKworICBkZWYgc2VwYXJhdG9yKHNlbGYpOgorICAgIHJldHVybiAiLCIKKworICBkZWYgbGlz
dF9pbnRyb2R1Y2VyKHNlbGYsIG5hbWUpOgorICAgIHJldHVybiBuYW1lICsgIiA9IFsiCisKKyAg
ZGVmIGxpc3RfY2xvc2VyKHNlbGYpOgorICAgIHJldHVybiAiXVxuIgorCisgIGRlZiBkb2NzdHJp
bmcoc2VsZik6CisgICAgZG9jc3RyaW5nX3F1b3RlcyA9ICJcIlwiXCIiCisgICAgcmV0dXJuIGRv
Y3N0cmluZ19xdW90ZXMgKyAiXG4iLmpvaW4oCisgICAgICAgIGZsYXR0ZW4oZmlsZV9oZWFkZXJf
bGluZXMoKSwgW2RvY3N0cmluZ19xdW90ZXNdKSkKKworICBkZWYgZmlsZW5hbWUoc2VsZik6Cisg
ICAgcmV0dXJuICJHRU5FUkFURURfY29wdHMuYnpsIgorCisKK2RlZiBjb3B0X2xpc3QobmFtZSwg
YXJnX2xpc3QsIHN0eWxlKToKKyAgIiIiQ29wdCBmaWxlIGdlbmVyYXRpb24uIiIiCisKKyAgbWFr
ZV9saW5lID0gbGFtYmRhIHM6ICIgICAgXCIiICsgcyArICJcIiIgKyBzdHlsZS5zZXBhcmF0b3Io
KQorICBleHRlcm5hbF9zdHJfbGlzdCA9IFttYWtlX2xpbmUocykgZm9yIHMgaW4gYXJnX2xpc3Rd
CisKKyAgcmV0dXJuICJcbiIuam9pbigKKyAgICAgIGZsYXR0ZW4oCisgICAgICAgICAgW3N0eWxl
Lmxpc3RfaW50cm9kdWNlcihuYW1lKV0sCisgICAgICAgICAgZXh0ZXJuYWxfc3RyX2xpc3QsCisg
ICAgICAgICAgW3N0eWxlLmxpc3RfY2xvc2VyKCldKSkKKworCitkZWYgZ2VuZXJhdGVfY29wdF9m
aWxlKHN0eWxlKToKKyAgIiIiQ3JlYXRlcyBhIGdlbmVyYXRlZCBjb3B0IGZpbGUgdXNpbmcgdGhl
IGdpdmVuIHN0eWxlIG9iamVjdC4KKworICBBcmdzOgorICAgIHN0eWxlOiBlaXRoZXIgU3Rhcmxh
cmtTdHlsZSgpIG9yIENNYWtlU3R5bGUoKQorICAiIiIKKyAgd2l0aCBvcGVuKHJlbGF0aXZlX2Zp
bGVuYW1lKHN0eWxlLmZpbGVuYW1lKCkpLCAidyIpIGFzIGY6CisgICAgZi53cml0ZShzdHlsZS5k
b2NzdHJpbmcoKSkKKyAgICBmLndyaXRlKCJcbiIpCisgICAgZm9yIHZhcl9uYW1lLCBhcmdfbGlz
dCBpbiBzb3J0ZWQoQ09QVF9WQVJTLml0ZW1zKCkpOgorICAgICAgZi53cml0ZSgiXG4iKQorICAg
ICAgZi53cml0ZShjb3B0X2xpc3QodmFyX25hbWUsIGFyZ19saXN0LCBzdHlsZSkpCisKKworZGVm
IG1haW4oYXJndik6CisgIGlmIGxlbihhcmd2KSA+IDE6CisgICAgcmFpc2UgUnVudGltZUVycm9y
KCJnZW5lcmF0ZV9jb3B0cyBuZWVkcyBubyBjb21tYW5kIGxpbmUgYXJncyIpCisKKyAgZ2VuZXJh
dGVfY29wdF9maWxlKFN0YXJsYXJrU3R5bGUoKSkKKyAgZ2VuZXJhdGVfY29wdF9maWxlKENNYWtl
U3R5bGUoKSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICBtYWluKHN5cy5hcmd2
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdn
aW5nL0JVSUxELmJhemVsCmluZGV4IGUxZTdmY2VkNjlmYjlhOWNmNDQ4NDkzZGVlYWNkZTk4NjRk
OTc5ODkuLjkxM2NmYWZiMmRmNjI0MzczZjJmODQyYWEwN2JjODkxYjEzZGYzNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2RlYnVnZ2luZy9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJ
TEQuYmF6ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNSw4ICsxNSw5
IEBACiAjCiAKIGxvYWQoCi0gICAgIi8vYWJzbDpjb3B0cy5iemwiLAorICAgICIvL2Fic2w6Y29w
dHMvY29uZmlndXJlX2NvcHRzLmJ6bCIsCiAgICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCisgICAg
IkFCU0xfREVGQVVMVF9MSU5LT1BUUyIsCiAgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiApCiAKQEAg
LTMzLDYgKzM0LDcgQEAgY2NfbGlicmFyeSgKICAgICBdLAogICAgIGhkcnMgPSBbInN0YWNrdHJh
Y2UuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6ZGVidWdnaW5n
X2ludGVybmFsIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAgLTUzLDExICs1NSwxMyBAQCBj
Y19saWJyYXJ5KAogICAgICAgICAic3ltYm9saXplLmgiLAogICAgIF0sCiAgICAgY29wdHMgPSBB
QlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMs
CiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpkZWJ1Z2dpbmdfaW50ZXJuYWwiLAogICAgICAgICAi
OmRlbWFuZ2xlX2ludGVybmFsIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKICAgICAgICAgIi8v
YWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpkeW5hbWljX2Fu
bm90YXRpb25zIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOm1hbGxvY19pbnRlcm5hbCIsCiAgICAg
XSwKICkKQEAgLTY2LDYgKzcwLDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gInN5bWJvbGl6ZV90
ZXN0IiwKICAgICBzcmNzID0gWyJzeW1ib2xpemVfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJT
TF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6c3RhY2tfY29uc3VtcHRpb24iLAogICAgICAgICAiOnN5bWJv
bGl6ZSIsCkBAIC04NSw2ICs5MCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgICAgICJpbnRlcm5hbC9l
eGFtaW5lX3N0YWNrLmgiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9
IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKICAgICBkZXBzID0gWwogICAgICAgICAiOnN0YWNr
dHJhY2UiLApAQCAtOTksNiArMTA1LDcgQEAgY2NfbGlicmFyeSgKICAgICBzcmNzID0gWyJmYWls
dXJlX3NpZ25hbF9oYW5kbGVyLmNjIl0sCiAgICAgaGRycyA9IFsiZmFpbHVyZV9zaWduYWxfaGFu
ZGxlci5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpleGFtaW5l
X3N0YWNrIiwKICAgICAgICAgIjpzdGFja3RyYWNlIiwKQEAgLTExNSw3ICsxMjIsNyBAQCBjY190
ZXN0KAogICAgIGxpbmtvcHRzID0gc2VsZWN0KHsKICAgICAgICAgIi8vYWJzbDp3aW5kb3dzIjog
W10sCiAgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLXB0aHJlYWQiXSwKLSAgICB9
KSwKKyAgICB9KSArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAg
ICAiOmZhaWx1cmVfc2lnbmFsX2hhbmRsZXIiLAogICAgICAgICAiOnN0YWNrdHJhY2UiLApAQCAt
MTQ3LDggKzE1NCwxMCBAQCBjY19saWJyYXJ5KAogICAgICAgICAiaW50ZXJuYWwvdmRzb19zdXBw
b3J0LmgiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlu
a29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8v
YWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgICAg
ICIvL2Fic2wvYmFzZTpkeW5hbWljX2Fubm90YXRpb25zIiwKICAgICBdLAogKQpAQCAtMTY4LDYg
KzE3Nyw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJkZW1hbmdsZV90ZXN0IiwKICAgICBzcmNz
ID0gWyJpbnRlcm5hbC9kZW1hbmdsZV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1Rf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9
IFsKICAgICAgICAgIjpkZW1hbmdsZV9pbnRlcm5hbCIsCiAgICAgICAgICI6c3RhY2tfY29uc3Vt
cHRpb24iLApAQCAtMTgwLDIyICsxOTAsOSBAQCBjY190ZXN0KAogCiBjY19saWJyYXJ5KAogICAg
IG5hbWUgPSAibGVha19jaGVjayIsCi0gICAgc3JjcyA9IHNlbGVjdCh7Ci0gICAgICAgICMgVGhl
IGxlYWsgY2hlY2tpbmcgaW50ZXJmYWNlIGRlcGVuZHMgb24gd2VhayBmdW5jdGlvbgotICAgICAg
ICAjIGRlY2xhcmF0aW9ucyB0aGF0IG1heSBub3QgbmVjZXNzYXJpbHkgaGF2ZSBkZWZpbml0aW9u
cy4KLSAgICAgICAgIyBXaW5kb3dzIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzLCBhbmQgaW9zIHJlcXVp
cmVzCi0gICAgICAgICMgZ3VhcmFudGVlZCBkZWZpbml0aW9ucyBmb3Igd2VhayBzeW1ib2xzLgot
ICAgICAgICAiLy9hYnNsOmlvcyI6IFtdLAotICAgICAgICAiLy9hYnNsOndpbmRvd3MiOiBbXSwK
LSAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWwotICAgICAgICAgICAgImxlYWtfY2hl
Y2suY2MiLAotICAgICAgICBdLAotICAgIH0pLAotICAgIGhkcnMgPSBzZWxlY3QoewotICAgICAg
ICAiLy9hYnNsOmlvcyI6IFtdLAotICAgICAgICAiLy9hYnNsOndpbmRvd3MiOiBbXSwKLSAgICAg
ICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyJsZWFrX2NoZWNrLmgiXSwKLSAgICB9KSwKKyAg
ICBzcmNzID0gWyJsZWFrX2NoZWNrLmNjIl0sCisgICAgaGRycyA9IFsibGVha19jaGVjay5oIl0s
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsiLy9h
YnNsL2Jhc2U6Y29yZV9oZWFkZXJzIl0sCiApCiAKQEAgLTIwNSw2ICsyMDIsNyBAQCBjY19saWJy
YXJ5KAogY2NfbGlicmFyeSgKICAgICBuYW1lID0gImxlYWtfY2hlY2tfZGlzYWJsZSIsCiAgICAg
c3JjcyA9IFsibGVha19jaGVja19kaXNhYmxlLmNjIl0sCisgICAgbGlua29wdHMgPSBBQlNMX0RF
RkFVTFRfTElOS09QVFMsCiAgICAgbGlua3N0YXRpYyA9IDEsCiAgICAgYWx3YXlzbGluayA9IDEs
CiApCkBAIC0yMjUsNiArMjIzLDcgQEAgY2NfbGlicmFyeSgKICAgICAgICAgIi8vYWJzbDpsbHZt
X2NvbXBpbGVyIjogWyItRExFQUtfU0FOSVRJWkVSIl0sCiAgICAgICAgICIvL2NvbmRpdGlvbnM6
ZGVmYXVsdCI6IFtdLAogICAgIH0pLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAogICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCiApCiAKQEAg
LTIzNCw2ICsyMzMsNyBAQCBjY19saWJyYXJ5KAogICAgIHNyY3MgPSBbImxlYWtfY2hlY2suY2Mi
XSwKICAgICBoZHJzID0gWyJsZWFrX2NoZWNrLmgiXSwKICAgICBjb3B0cyA9IFsiLVVMRUFLX1NB
TklUSVpFUiJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHZp
c2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCiApCiAKQEAgLTI0NCw3ICsyNDQs
OCBAQCBjY190ZXN0KAogICAgICAgICAiLy9hYnNsOmxsdm1fY29tcGlsZXIiOiBbIi1EQUJTTF9F
WFBFQ1RfTEVBS19TQU5JVElaRVIiXSwKICAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0Ijog
W10sCiAgICAgfSksCi0gICAgbGlua29wdHMgPSBBQlNMX0xTQU5fTElOS09QVFMsCisgICAgbGlu
a29wdHMgPSBBQlNMX0xTQU5fTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAg
dGFncyA9IFsibm90c2FuIl0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpsZWFrX2NoZWNrX2Fw
aV9lbmFibGVkX2Zvcl90ZXN0aW5nIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAgLTI1Niw2
ICsyNTcsOCBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAibGVha19jaGVja19ub19sc2FuX3Rlc3Qi
LAogICAgIHNyY3MgPSBbImxlYWtfY2hlY2tfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gWyItVUFC
U0xfRVhQRUNUX0xFQUtfU0FOSVRJWkVSIl0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCisgICAgdGFncyA9IFsibm9hc2FuIl0sCiAgICAgZGVwcyA9IFsKICAgICAgICAg
IjpsZWFrX2NoZWNrX2FwaV9kaXNhYmxlZF9mb3JfdGVzdGluZyIsCiAgICAgICAgICIvL2Fic2wv
YmFzZSIsICAjIGZvciByYXdfbG9nZ2luZwpAQCAtMjcwLDcgKzI3Myw4IEBAIGNjX3Rlc3QoCiBj
Y190ZXN0KAogICAgIG5hbWUgPSAiZGlzYWJsZWRfbGVha19jaGVja190ZXN0IiwKICAgICBzcmNz
ID0gWyJsZWFrX2NoZWNrX2ZhaWxfdGVzdC5jYyJdLAotICAgIGxpbmtvcHRzID0gQUJTTF9MU0FO
X0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9MU0FOX0xJTktPUFRTICsgQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAorICAgIHRhZ3MgPSBbIm5vdHNhbiJdLAogICAgIGRlcHMgPSBbCiAgICAg
ICAgICI6bGVha19jaGVja19hcGlfZW5hYmxlZF9mb3JfdGVzdGluZyIsCiAgICAgICAgICI6bGVh
a19jaGVja19kaXNhYmxlIiwKQEAgLTI4NSw2ICsyODksNyBAQCBjY19saWJyYXJ5KAogICAgIHNy
Y3MgPSBbImludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uLmNjIl0sCiAgICAgaGRycyA9IFsiaW50
ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHZpc2liaWxp
dHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8v
YWJzbC9iYXNlIiwKQEAgLTI5Niw2ICszMDEsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAic3Rh
Y2tfY29uc3VtcHRpb25fdGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvc3RhY2tfY29uc3Vt
cHRpb25fdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtv
cHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3Rh
Y2tfY29uc3VtcHRpb24iLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZGVidWdnaW5nL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL0JVSUxELmduCmluZGV4IGQz
NTgyZDZhNDI2Zjc3NTcxNmViMTE3NjJkNTdhMTk5MWIwNGNiMzIuLmEzYzdjZmUyZjA0NTM1YWVm
YjQzNWI4MDZjMTE4OTIxMGYzMjU1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9CVUlM
RC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJTEQuZ24KQEAgLTIsMTEgKzIsMTggQEAKICMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQogIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogCi1pbXBvcnQoIi8v
YnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCiBpbXBvcnQoIi8vYnVpbGQvY29uZmlnL3Nhbml0
aXplcnMvc2FuaXRpemVycy5nbmkiKQoraW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5n
bmkiKQogCisjIFVzYWdlIG9mIEFic2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4
cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlz
dCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBz
Oi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09X
TkVSUworIworIyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9k
b2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9S
dTJkb2trMVgxdkJEVQogaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9
IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoi
LAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkv
Z29vZ2xldGVzdDpndGVzdCIsCkBAIC01Nyw2ICs2NCw3IEBAIHNvdXJjZV9zZXQoInN5bWJvbGl6
ZSIpIHsKICAgICAiOmRlbWFuZ2xlX2ludGVybmFsIiwKICAgICAiLi4vYmFzZSIsCiAgICAgIi4u
L2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vYmFzZTpkeW5hbWljX2Fubm90YXRpb25zIiwK
ICAgICAiLi4vYmFzZTptYWxsb2NfaW50ZXJuYWwiLAogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQ01ha2VMaXN0cy50
eHQKaW5kZXggNGFmMmVjOGE0MTE0M2NiYjExODE0MDdmMDRlYmIxMzU0N2NmNTJlOC4uMDAxZTI3
Mjc5MDQ5NGRhZTBkMzFmZTc3MzZjYWQ2ZDc0OGZmYjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVi
dWdnaW5nL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9DTWFrZUxpc3RzLnR4
dApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDIwNCArMTQsMzA1IEBA
CiAjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogIwogCi1saXN0KEFQUEVORCBERUJV
R0dJTkdfUFVCTElDX0hFQURFUlMKLSAgImZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuaCIKLSAgImxl
YWtfY2hlY2suaCIKLSAgInN0YWNrdHJhY2UuaCIKLSAgInN5bWJvbGl6ZS5oIgotKQotCi0jIFRP
RE8oY29oZW5qb24pIFRoZSBiZWxvdyBpcyBhbGwga2luZHMgb2Ygd3JvbmcuICBNYWtlIHRoaXMg
bWF0Y2ggd2hhdCB3ZSBkbyBpbgotIyBCYXplbAotbGlzdChBUFBFTkQgREVCVUdHSU5HX0lOVEVS
TkFMX0hFQURFUlMKLSAgImludGVybmFsL2FkZHJlc3NfaXNfcmVhZGFibGUuaCIKLSAgImludGVy
bmFsL2RlbWFuZ2xlLmgiCi0gICJpbnRlcm5hbC9lbGZfbWVtX2ltYWdlLmgiCi0gICJpbnRlcm5h
bC9leGFtaW5lX3N0YWNrLmgiCi0gICJpbnRlcm5hbC9zdGFja3RyYWNlX2NvbmZpZy5oIgotICAi
aW50ZXJuYWwvc3ltYm9saXplLmgiCi0gICJpbnRlcm5hbC92ZHNvX3N1cHBvcnQuaCIKLSkKLQot
bGlzdChBUFBFTkQgREVCVUdHSU5HX0lOVEVSTkFMX1NSQwotICAiaW50ZXJuYWwvYWRkcmVzc19p
c19yZWFkYWJsZS5jYyIKLSAgImludGVybmFsL2VsZl9tZW1faW1hZ2UuY2MiCi0gICJpbnRlcm5h
bC92ZHNvX3N1cHBvcnQuY2MiCi0pCi0KLQotbGlzdChBUFBFTkQgU1RBQ0tUUkFDRV9TUkMKLSAg
InN0YWNrdHJhY2UuY2MiCi0gICR7REVCVUdHSU5HX0lOVEVSTkFMX1NSQ30KLSAgJHtERUJVR0dJ
TkdfUFVCTElDX0hFQURFUlN9Ci0gICR7REVCVUdHSU5HX0lOVEVSTkFMX0hFQURFUlN9CithYnNs
X2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBzdGFja3RyYWNlCisgIEhEUlMKKyAgICAic3RhY2t0
cmFjZS5oIgorICBTUkNTCisgICAgInN0YWNrdHJhY2UuY2MiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpkZWJ1Z2dpbmdfaW50ZXJuYWwKKyAg
ICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgIFBVQkxJQwogKQogCi1saXN0
KEFQUEVORCBTWU1CT0xJWkVfU1JDCi0gICJzeW1ib2xpemUuY2MiCi0gICJzeW1ib2xpemVfZWxm
LmluYyIKLSAgInN5bWJvbGl6ZV91bmltcGxlbWVudGVkLmluYyIKLSAgInN5bWJvbGl6ZV93aW4z
Mi5pbmMiCi0gICJpbnRlcm5hbC9kZW1hbmdsZS5jYyIKLSAgJHtERUJVR0dJTkdfUFVCTElDX0hF
QURFUlN9Ci0gICR7REVCVUdHSU5HX0lOVEVSTkFMX0hFQURFUlN9Ci0gICR7REVCVUdHSU5HX0lO
VEVSTkFMX1NSQ30KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHN5bWJvbGl6ZQorICBI
RFJTCisgICAgInN5bWJvbGl6ZS5oIgorICAgICJpbnRlcm5hbC9zeW1ib2xpemUuaCIKKyAgU1JD
UworICAgICJzeW1ib2xpemUuY2MiCisgICAgInN5bWJvbGl6ZV9lbGYuaW5jIgorICAgICJzeW1i
b2xpemVfdW5pbXBsZW1lbnRlZC5pbmMiCisgICAgInN5bWJvbGl6ZV93aW4zMi5pbmMiCisgIENP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpkZWJ1Z2dpbmdfaW50ZXJuYWwKKyAg
ICBhYnNsOjpkZW1hbmdsZV9pbnRlcm5hbAorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3Jl
X2hlYWRlcnMKKyAgICBhYnNsOjpkeW5hbWljX2Fubm90YXRpb25zCisgICAgYWJzbDo6bWFsbG9j
X2ludGVybmFsCisgIFBVQkxJQwogKQogCi1saXN0KEFQUEVORCBGQUlMVVJFX1NJR05BTF9IQU5E
TEVSX1NSQwotICAiZmFpbHVyZV9zaWduYWxfaGFuZGxlci5jYyIKLSAgJHtERUJVR0dJTkdfUFVC
TElDX0hFQURFUlN9CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBzeW1ib2xpemVfdGVzdAor
ICBTUkNTCisgICAgInN5bWJvbGl6ZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNU
X0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RhY2tfY29uc3VtcHRpb24KKyAgICBhYnNsOjpz
eW1ib2xpemUKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJz
bDo6bWVtb3J5CisgICAgZ21vY2sKICkKIAotbGlzdChBUFBFTkQgRVhBTUlORV9TVEFDS19TUkMK
LSAgImludGVybmFsL2V4YW1pbmVfc3RhY2suY2MiCi0gICR7REVCVUdHSU5HX1BVQkxJQ19IRUFE
RVJTfQotICAke0RFQlVHR0lOR19JTlRFUk5BTF9IRUFERVJTfQorYWJzbF9jY19saWJyYXJ5KAor
ICBOQU1FCisgICAgZXhhbWluZV9zdGFjaworICBIRFJTCisgICAgImludGVybmFsL2V4YW1pbmVf
c3RhY2suaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9leGFtaW5lX3N0YWNrLmNjIgorICBDT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RhY2t0cmFj
ZQorICAgIGFic2w6OnN5bWJvbGl6ZQorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hl
YWRlcnMKICkKIAotYWJzbF9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX3N0YWNrdHJhY2UK
LSAgU09VUkNFUwotICAgICR7U1RBQ0tUUkFDRV9TUkN9Ci0gIEVYUE9SVF9OQU1FCi0gICAgc3Rh
Y2t0cmFjZQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZmFpbHVyZV9zaWduYWxfaGFu
ZGxlcgorICBIRFJTCisgICAgImZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuaCIKKyAgU1JDUworICAg
ICJmYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxU
X0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZXhhbWluZV9zdGFjaworICAgIGFic2w6OnN0YWNr
dHJhY2UKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29yZV9o
ZWFkZXJzCisgIFBVQkxJQwogKQogCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xf
c3ltYm9saXplCi0gIFNPVVJDRVMKLSAgICAke1NZTUJPTElaRV9TUkN9Ci0gIFBVQkxJQ19MSUJS
QVJJRVMKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGZhaWx1cmVfc2lnbmFsX2hhbmRsZXJf
dGVzdAorICBTUkNTCisgICAgImZhaWx1cmVfc2lnbmFsX2hhbmRsZXJfdGVzdC5jYyIKKyAgQ09Q
VFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmZhaWx1cmVfc2ln
bmFsX2hhbmRsZXIKKyAgICBhYnNsOjpzdGFja3RyYWNlCisgICAgYWJzbDo6c3ltYm9saXplCiAg
ICAgYWJzbDo6YmFzZQotICAgIGFic2xfbWFsbG9jX2ludGVybmFsCi0gIEVYUE9SVF9OQU1FCi0g
ICAgc3ltYm9saXplCisgICAgYWJzbDo6c3RyaW5ncworICAgIFRocmVhZHM6OlRocmVhZHMKKyAg
ICBnbW9jawogKQogCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfZmFpbHVyZV9z
aWduYWxfaGFuZGxlcgotICBTT1VSQ0VTCi0gICAgJHtGQUlMVVJFX1NJR05BTF9IQU5ETEVSX1NS
Q30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2xfYmFzZSBhYnNsOjpleGFtaW5lX3N0YWNr
IGFic2w6OnN0YWNrdHJhY2UgYWJzbF9zeW5jaHJvbml6YXRpb24KLSAgRVhQT1JUX05BTUUKLSAg
ICBmYWlsdXJlX3NpZ25hbF9oYW5kbGVyCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBk
ZWJ1Z2dpbmdfaW50ZXJuYWwKKyAgSERSUworICAgICJpbnRlcm5hbC9hZGRyZXNzX2lzX3JlYWRh
YmxlLmgiCisgICAgImludGVybmFsL2VsZl9tZW1faW1hZ2UuaCIKKyAgICAiaW50ZXJuYWwvc3Rh
Y2t0cmFjZV9hYXJjaDY0LWlubC5pbmMiCisgICAgImludGVybmFsL3N0YWNrdHJhY2VfYXJtLWlu
bC5pbmMiCisgICAgImludGVybmFsL3N0YWNrdHJhY2VfY29uZmlnLmgiCisgICAgImludGVybmFs
L3N0YWNrdHJhY2VfZ2VuZXJpYy1pbmwuaW5jIgorICAgICJpbnRlcm5hbC9zdGFja3RyYWNlX3Bv
d2VycGMtaW5sLmluYyIKKyAgICAiaW50ZXJuYWwvc3RhY2t0cmFjZV91bmltcGxlbWVudGVkLWlu
bC5pbmMiCisgICAgImludGVybmFsL3N0YWNrdHJhY2Vfd2luMzItaW5sLmluYyIKKyAgICAiaW50
ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5sLmluYyIKKyAgICAiaW50ZXJuYWwvdmRzb19zdXBwb3J0
LmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvYWRkcmVzc19pc19yZWFkYWJsZS5jYyIKKyAgICAi
aW50ZXJuYWwvZWxmX21lbV9pbWFnZS5jYyIKKyAgICAiaW50ZXJuYWwvdmRzb19zdXBwb3J0LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6
YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmR5bmFtaWNfYW5ub3RhdGlv
bnMKICkKIAotIyBJbnRlcm5hbC1vbmx5LiBQcm9qZWN0cyBleHRlcm5hbCB0byBBYnNlaWwgc2hv
dWxkIG5vdCBkZXBlbmQKLSMgZGlyZWN0bHkgb24gdGhpcyBsaWJyYXJ5LgotYWJzbF9saWJyYXJ5
KAotICBUQVJHRVQKLSAgICBhYnNsX2V4YW1pbmVfc3RhY2sKLSAgU09VUkNFUwotICAgICR7RVhB
TUlORV9TVEFDS19TUkN9Ci0gIEVYUE9SVF9OQU1FCi0gICAgZXhhbWluZV9zdGFjaworYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgZGVtYW5nbGVfaW50ZXJuYWwKKyAgSERSUworICAgICJp
bnRlcm5hbC9kZW1hbmdsZS5oIgorICBTUkNTCisgICAgImludGVybmFsL2RlbWFuZ2xlLmNjIgor
ICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFz
ZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICBQVUJMSUMKICkKIAotbGlzdChBUFBFTkQgTEVB
S19DSEVDS19TUkMKLSAgImxlYWtfY2hlY2suY2MiCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAg
ICBkZW1hbmdsZV90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvZGVtYW5nbGVfdGVzdC5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmRlbWFu
Z2xlX2ludGVybmFsCisgICAgYWJzbDo6c3RhY2tfY29uc3VtcHRpb24KKyAgICBhYnNsOjpiYXNl
CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6bWVtb3J5CisgICAgZ21vY2tfbWFp
bgogKQogCi0KLSMgbGVha19jaGVjayBsaWJyYXJ5Ci1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAot
ICAgIGFic2xfbGVha19jaGVjawotICBTT1VSQ0VTCi0gICAgJHtMRUFLX0NIRUNLX1NSQ30KLSAg
UFVCTElDX0xJQlJBUklFUwotICAgIGFic2xfYmFzZQotICBFWFBPUlRfTkFNRQorYWJzbF9jY19s
aWJyYXJ5KAorICBOQU1FCiAgICAgbGVha19jaGVjaworICBIRFJTCisgICAgImxlYWtfY2hlY2su
aCIKKyAgU1JDUworICAgICJsZWFrX2NoZWNrLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgIFBVQkxJQwogKQog
Ci0KLSMgY29tcG9uZW50IHRhcmdldAotYWJzbF9oZWFkZXJfbGlicmFyeSgKLSAgVEFSR0VUCi0g
ICAgYWJzbF9kZWJ1Z2dpbmcKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2xfc3RhY2t0cmFj
ZSBhYnNsX2xlYWtfY2hlY2sKLSAgRVhQT1JUX05BTUUKLSAgICBkZWJ1Z2dpbmcKK2Fic2xfY2Nf
bGlicmFyeSgKKyAgTkFNRQorICAgIGxlYWtfY2hlY2tfZGlzYWJsZQorICBTUkNTCisgICAgImxl
YWtfY2hlY2tfZGlzYWJsZS5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30K
KyAgUFVCTElDCiApCiAKLSMKLSMjIFRFU1RTCi0jCi0KLWxpc3QoQVBQRU5EIFNUQUNLX0NPTlNV
TVBUSU9OX1NSQwotICAiaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uY2MiCi0gICJpbnRlcm5h
bC9zdGFja19jb25zdW1wdGlvbi5oIgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgbGVh
a19jaGVja19hcGlfZW5hYmxlZF9mb3JfdGVzdGluZworICBIRFJTCisgICAgImxlYWtfY2hlY2su
aCIKKyAgU1JDUworICAgICJsZWFrX2NoZWNrLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQorICAgICQ8JDxCT09MOiR7QUJTTF9IQVZFX0xTQU59PjotRExFQUtfU0FOSVRJ
WkVSPgorICBURVNUT05MWQogKQogCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xf
c3RhY2tfY29uc3VtcHRpb24KLSAgU09VUkNFUwotICAgICR7U1RBQ0tfQ09OU1VNUFRJT05fU1JD
fQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgbGVha19jaGVja19hcGlfZGlzYWJsZWRf
Zm9yX3Rlc3RpbmcKKyAgSERSUworICAgICJsZWFrX2NoZWNrLmgiCisgIFNSQ1MKKyAgICAibGVh
a19jaGVjay5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgICAiLVVM
RUFLX1NBTklUSVpFUiIKKyAgVEVTVE9OTFkKICkKIAotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAg
ICBhYnNsX3N0YWNrX2NvbnN1bXB0aW9uX3Rlc3QKLSAgU09VUkNFUwotICAgICJpbnRlcm5hbC9z
dGFja19jb25zdW1wdGlvbl90ZXN0LmNjIgotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbF9z
dGFja19jb25zdW1wdGlvbgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgbGVha19jaGVja190
ZXN0CisgIFNSQ1MKKyAgICAibGVha19jaGVja190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJT
TF9ERUZBVUxUX0NPUFRTfQorICAgICIkPCQ8Qk9PTDoke0FCU0xfSEFWRV9MU0FOfT46LURBQlNM
X0VYUEVDVF9MRUFLX1NBTklUSVpFUj4iCisgIExJTktPUFRTCisgICAgIiR7QUJTTF9MU0FOX0xJ
TktPUFRTfSIKKyAgREVQUworICAgIGFic2w6OmxlYWtfY2hlY2tfYXBpX2VuYWJsZWRfZm9yX3Rl
c3RpbmcKICAgICBhYnNsOjpiYXNlCisgICAgZ21vY2tfbWFpbgogKQogCi1saXN0KEFQUEVORCBE
RU1BTkdMRV9URVNUX1NSQyAiaW50ZXJuYWwvZGVtYW5nbGVfdGVzdC5jYyIpCi0KLWFic2xfdGVz
dCgKLSAgVEFSR0VUCi0gICAgZGVtYW5nbGVfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtERU1BTkdM
RV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2xfc3ltYm9saXplIGFic2xf
c3RhY2tfY29uc3VtcHRpb24KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGxlYWtfY2hlY2tf
bm9fbHNhbl90ZXN0CisgIFNSQ1MKKyAgICAibGVha19jaGVja190ZXN0LmNjIgorICBDT1BUUwor
ICAgICR7QUJTTF9URVNUX0NPUFRTfQorICAgICItVUFCU0xfRVhQRUNUX0xFQUtfU0FOSVRJWkVS
IgorICBERVBTCisgICAgYWJzbDo6bGVha19jaGVja19hcGlfZGlzYWJsZWRfZm9yX3Rlc3RpbmcK
KyAgICBhYnNsOjpiYXNlCisgICAgZ21vY2tfbWFpbgogKQogCi1saXN0KEFQUEVORCBTWU1CT0xJ
WkVfVEVTVF9TUkMgInN5bWJvbGl6ZV90ZXN0LmNjIikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQK
LSAgICBzeW1ib2xpemVfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtTWU1CT0xJWkVfVEVTVF9TUkN9
Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsOjpiYXNlIGFic2w6Om1lbW9yeSBhYnNsX3N5
bWJvbGl6ZSBhYnNsX3N0YWNrX2NvbnN1bXB0aW9uCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAg
ICBkaXNhYmxlZF9sZWFrX2NoZWNrX3Rlc3QKKyAgU1JDUworICAgICJsZWFrX2NoZWNrX2ZhaWxf
dGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAg
ICAiJHtBQlNMX0xTQU5fTElOS09QVFN9IgorICBERVBTCisgICAgYWJzbDo6bGVha19jaGVja19h
cGlfZW5hYmxlZF9mb3JfdGVzdGluZworICAgIGFic2w6OmxlYWtfY2hlY2tfZGlzYWJsZQorICAg
IGFic2w6OmJhc2UKKyAgICBnbW9ja19tYWluCiApCiAKLWxpc3QoQVBQRU5EIEZBSUxVUkVfU0lH
TkFMX0hBTkRMRVJfVEVTVF9TUkMgImZhaWx1cmVfc2lnbmFsX2hhbmRsZXJfdGVzdC5jYyIpCi0K
LWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgZmFpbHVyZV9zaWduYWxfaGFuZGxlcl90ZXN0Ci0g
IFNPVVJDRVMKLSAgICAke0ZBSUxVUkVfU0lHTkFMX0hBTkRMRVJfVEVTVF9TUkN9Ci0gIFBVQkxJ
Q19MSUJSQVJJRVMKLSAgICBhYnNsX2V4YW1pbmVfc3RhY2sKLSAgICBhYnNsX2ZhaWx1cmVfc2ln
bmFsX2hhbmRsZXIKLSAgICBhYnNsX3N0YWNrdHJhY2UKLSAgICBhYnNsX3N5bWJvbGl6ZQorYWJz
bF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgc3RhY2tfY29uc3VtcHRpb24KKyAgSERSUworICAg
ICJpbnRlcm5hbC9zdGFja19jb25zdW1wdGlvbi5oIgorICBTUkNTCisgICAgImludGVybmFsL3N0
YWNrX2NvbnN1bXB0aW9uLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQor
ICBERVBTCiAgICAgYWJzbDo6YmFzZQotICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpjb3Jl
X2hlYWRlcnMKKyAgVEVTVE9OTFkKICkKIAotIyB0ZXN0IGxlYWtfY2hlY2tfdGVzdAotbGlzdChB
UFBFTkQgTEVBS19DSEVDS19URVNUX1NSQyAibGVha19jaGVja190ZXN0LmNjIikKK2Fic2xfY2Nf
dGVzdCgKKyAgTkFNRQorICAgIHN0YWNrX2NvbnN1bXB0aW9uX3Rlc3QKKyAgU1JDUworICAgICJp
bnRlcm5hbC9zdGFja19jb25zdW1wdGlvbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RhY2tfY29uc3VtcHRpb24KKyAgICBhYnNs
OjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgZ21vY2tfbWFpbgorKQogCi1hYnNs
X3Rlc3QoCi0gIFRBUkdFVAotICAgIGxlYWtfY2hlY2tfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtM
RUFLX0NIRUNLX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbF9sZWFrX2No
ZWNrCisjIGNvbXBvbmVudCB0YXJnZXQKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGRl
YnVnZ2luZworICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAg
YWJzbDo6c3RhY2t0cmFjZQorICAgIGFic2w6OmxlYWtfY2hlY2sKKyAgUFVCTElDCiApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvZmFpbHVyZV9zaWduYWxfaGFuZGxlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmNjCmluZGV4IGQ0Yjk1N2JjMmU0MThm
NDY4MWNiZjgwNGE4MGExNjc3OTJlZTNkYjguLmM2YTRkOTYyYjQyY2VhODhjMDliNTUzZWM2Mzgz
ODdkNWJmZWRlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9o
YW5kbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmNj
CkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMTksNyArMTE5
LDExIEBAIGNvbnN0IGNoYXIqIEZhaWx1cmVTaWduYWxUb1N0cmluZyhpbnQgc2lnbm8pIHsKICNp
Zm5kZWYgX1dJTjMyCiAKIHN0YXRpYyBib29sIFNldHVwQWx0ZXJuYXRlU3RhY2tPbmNlKCkgewor
I2lmIGRlZmluZWQoX193YXNtX18pIHx8IGRlZmluZWQgKF9fYXNqbXNfXykKICAgY29uc3Qgc2l6
ZV90IHBhZ2VfbWFzayA9IGdldHBhZ2VzaXplKCkgLSAxOworI2Vsc2UKKyAgY29uc3Qgc2l6ZV90
IHBhZ2VfbWFzayA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKSAtIDE7CisjZW5kaWYKICAgc2l6ZV90
IHN0YWNrX3NpemUgPSAoc3RkOjptYXgoU0lHU1RLU1osIDY1NTM2KSArIHBhZ2VfbWFzaykgJiB+
cGFnZV9tYXNrOwogI2lmIGRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpIHx8IGRlZmluZWQoTUVN
T1JZX1NBTklUSVpFUikgfHwgXAogICAgIGRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvZmFpbHVyZV9zaWduYWxfaGFuZGxlci5oCmluZGV4IGM1Nzk1NGU1ODc1Y2FjNGQ4
OTcxZDkwNjAwZmI4Y2M2MDEzMGQ4ZWIuLjFiZWI3OGI5Mzc4ODJhMDJhZDgwODE2ZDI0ODhhZTY1
NmNkNmE4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5k
bGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuaApAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZGVidWdnaW5nL2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyX3Rlc3QuY2MKaW5kZXggYmE1MjA5MTBmNDdmMjE3ZjI4
ZGM0OGQ0MmJjMjUzNWMyNjNlZjAzZC4uYmIyY2M0OGViNGE2MDI2MDFlZTgwNDdmOWFlZmZmZWM3
OWI0YTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ZhaWx1cmVfc2lnbmFsX2hhbmRs
ZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvZmFpbHVyZV9zaWduYWxfaGFuZGxlcl90
ZXN0LmNjCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMzMs
MTYgKzEzMywxNyBAQCBjb25zdGV4cHIgaW50IGtGYWlsdXJlU2lnbmFsc1tdID0gewogfTsKIAog
c3RkOjpzdHJpbmcgU2lnbmFsUGFyYW1Ub1N0cmluZyhjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJh
bUluZm88aW50PiYgaW5mbykgewotICBzdGQ6OnN0cmluZyByZXN1bHQgPSBhYnNsOjpkZWJ1Z2dp
bmdfaW50ZXJuYWw6OkZhaWx1cmVTaWduYWxUb1N0cmluZyhpbmZvLnBhcmFtKTsKKyAgc3RkOjpz
dHJpbmcgcmVzdWx0ID0KKyAgICAgIGFic2w6OmRlYnVnZ2luZ19pbnRlcm5hbDo6RmFpbHVyZVNp
Z25hbFRvU3RyaW5nKGluZm8ucGFyYW0pOwogICBpZiAocmVzdWx0LmVtcHR5KCkpIHsKICAgICBy
ZXN1bHQgPSBhYnNsOjpTdHJDYXQoaW5mby5wYXJhbSk7CiAgIH0KICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWJzbERlYXRoVGVzdCwgRmFpbHVyZVNpZ25h
bEhhbmRsZXJEZWF0aFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZh
bHVlc0luKGtGYWlsdXJlU2lnbmFscyksCi0gICAgICAgICAgICAgICAgICAgICAgICBTaWduYWxQ
YXJhbVRvU3RyaW5nKTsKK0lOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUChBYnNsRGVhdGhUZXN0LCBG
YWlsdXJlU2lnbmFsSGFuZGxlckRlYXRoVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICA6
OnRlc3Rpbmc6OlZhbHVlc0luKGtGYWlsdXJlU2lnbmFscyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgU2lnbmFsUGFyYW1Ub1N0cmluZyk7CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRI
X1RFU1QKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2FkZHJlc3NfaXNf
cmVhZGFibGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvYWRkcmVzc19pc19yZWFkYWJs
ZS5jYwppbmRleCA3NDU1YWEwYjQxNjQ1NmUwNGI3ZTM4ODUyMGNkMDBkMDg0MDA3Nzg4Li45OWM0
YzY0YmU4MWUyMWMxOWZlOGRlZTU3YmM3Njc1YWJmYjI3ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvaW50ZXJuYWwvYWRkcmVzc19pc19yZWFkYWJsZS5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1
Z2dpbmcvaW50ZXJuYWwvYWRkcmVzc19pc19yZWFkYWJsZS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVy
bmFsL2FkZHJlc3NfaXNfcmVhZGFibGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9hZGRy
ZXNzX2lzX3JlYWRhYmxlLmgKaW5kZXggOWQ0ODAzMDA2NWM4MTEzYjQxN2U5NGE3OTg5OTY5YzNj
NmVlN2Q0OS4uY2E4MDAzZTYyOTJhNGNkY2MxNDdkZWQ3NjIzNTdiNjhkN2RkNDQ5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2FkZHJlc3NfaXNfcmVhZGFibGUuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvYWRkcmVzc19pc19yZWFkYWJsZS5oCkBAIC00LDE0
ICs0LDEzIEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIC8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgog
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0vLwogCiAj
aWZuZGVmIEFCU0xfREVCVUdHSU5HX0lOVEVSTkFMX0FERFJFU1NfSVNfUkVBREFCTEVfSF8KICNk
ZWZpbmUgQUJTTF9ERUJVR0dJTkdfSU5URVJOQUxfQUREUkVTU19JU19SRUFEQUJMRV9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmNjCmluZGV4IDQ4MzU0NDU5YmM4NWY4NmRmYTBkMzE5
ZTk3NDExODhiM2U5ZDY3NDYuLjUyYTU1M2ZkMDU4NTY5OTkxOWZiMDhkMWI4NThkZTQ1NjEwYTUx
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZGVtYW5nbGUuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTc0OSw4ICs3NDksOCBAQCBzdGF0aWMgYm9vbCBQ
YXJzZVNvdXJjZU5hbWUoU3RhdGUgKnN0YXRlKSB7CiAvLyA8bG9jYWwtc291cmNlLW5hbWU+IDo6
PSBMIDxzb3VyY2UtbmFtZT4gWzxkaXNjcmltaW5hdG9yPl0KIC8vCiAvLyBSZWZlcmVuY2VzOgot
Ly8gICBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTMxNzc1Ci0v
LyAgIGh0dHA6Ly9nY2MuZ251Lm9yZy92aWV3Y3ZzP3ZpZXc9cmV2JnJldmlzaW9uPTEyNDQ2Nwor
Ly8gICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zMTc3NQor
Ly8gICBodHRwczovL2djYy5nbnUub3JnL3ZpZXdjdnM/dmlldz1yZXYmcmV2aXNpb249MTI0NDY3
CiBzdGF0aWMgYm9vbCBQYXJzZUxvY2FsU291cmNlTmFtZShTdGF0ZSAqc3RhdGUpIHsKICAgQ29t
cGxleGl0eUd1YXJkIGd1YXJkKHN0YXRlKTsKICAgaWYgKGd1YXJkLklzVG9vQ29tcGxleCgpKSBy
ZXR1cm4gZmFsc2U7CkBAIC0xMTY4LDYgKzExNjgsMTIgQEAgc3RhdGljIGJvb2wgUGFyc2VUeXBl
KFN0YXRlICpzdGF0ZSkgewogICB9CiAgIHN0YXRlLT5wYXJzZV9zdGF0ZSA9IGNvcHk7CiAKKyAg
Ly8gbnVsbHB0cl90LCBpLmUuIGRlY2x0eXBlKG51bGxwdHIpLgorICBpZiAoUGFyc2VUd29DaGFy
VG9rZW4oc3RhdGUsICJEbiIpKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgc3RhdGUtPnBh
cnNlX3N0YXRlID0gY29weTsKKwogICBpZiAoUGFyc2VPbmVDaGFyVG9rZW4oc3RhdGUsICdVJykg
JiYgUGFyc2VTb3VyY2VOYW1lKHN0YXRlKSAmJgogICAgICAgUGFyc2VUeXBlKHN0YXRlKSkgewog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTYzNiw2ICsxNjQyLDE1IEBAIHN0YXRpYyBib29sIFBhcnNl
RXhwcmVzc2lvbihTdGF0ZSAqc3RhdGUpIHsKICAgfQogICBzdGF0ZS0+cGFyc2Vfc3RhdGUgPSBj
b3B5OwogCisgIC8vIFBvaW50ZXItdG8tbWVtYmVyIGFjY2VzcyBleHByZXNzaW9ucy4gIFRoaXMg
cGFyc2VzIHRoZSBzYW1lIGFzIGEgYmluYXJ5CisgIC8vIG9wZXJhdG9yLCBidXQgaXQncyBpbXBs
ZW1lbnRlZCBzZXBhcmF0ZWx5IGJlY2F1c2UgImRzIiBzaG91bGRuJ3QgYmUKKyAgLy8gYWNjZXB0
ZWQgaW4gb3RoZXIgY29udGV4dHMgdGhhdCBwYXJzZSBhbiBvcGVyYXRvciBuYW1lLgorICBpZiAo
UGFyc2VUd29DaGFyVG9rZW4oc3RhdGUsICJkcyIpICYmIFBhcnNlRXhwcmVzc2lvbihzdGF0ZSkg
JiYKKyAgICAgIFBhcnNlRXhwcmVzc2lvbihzdGF0ZSkpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fQorICBzdGF0ZS0+cGFyc2Vfc3RhdGUgPSBjb3B5OworCiAgIC8vIFBhcmFtZXRlciBwYWNrIGV4
cGFuc2lvbgogICBpZiAoUGFyc2VUd29DaGFyVG9rZW4oc3RhdGUsICJzcCIpICYmIFBhcnNlRXhw
cmVzc2lvbihzdGF0ZSkpIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Rl
YnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2Rl
bWFuZ2xlLmgKaW5kZXggMmU3NTU2NGVkMzViNDdhMWUyZTJjN2E4ZDhjZGRmZTgyZDA2NjFkMS4u
ODFiYjBkZmQ0YmRhMWExZjBjYWRmZWU1ODg2ZTI1YWRlN2Q2YjIwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2lu
dGVybmFsL2RlbWFuZ2xlLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZV90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlX3Rlc3QuY2MKaW5kZXggYjlkOTAw
OGYwMDc3ZTY2MGJhYWIyMjZiMzBhOWZkM2U0ZTg2NDBhNC4uYTY4Y2UzMjQ5YmNiMmZjYTAzZDlk
MmQ0MGU3Y2UyN2U2NDFkNTdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFs
L2RlbWFuZ2xlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xl
X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTgx
LDggKzgxLDkgQEAgVEVTVChEZW1hbmdsZSwgQ2xvbmVzKSB7CiAvLyBUZXN0cyB0aGF0IHZlcmlm
eSB0aGF0IERlbWFuZ2xlIGZvb3RwcmludCBpcyB3aXRoaW4gc29tZSBsaW1pdC4KIC8vIFRoZXkg
YXJlIG5vdCB0byBiZSBydW4gdW5kZXIgc2FuaXRpemVycyBhcyB0aGUgc2FuaXRpemVycyBpbmNy
ZWFzZQogLy8gc3RhY2sgY29uc3VtcHRpb24gYnkgYWJvdXQgNHguCi0jaWYgZGVmaW5lZChBQlNM
X0lOVEVSTkFMX0hBVkVfREVCVUdHSU5HX1NUQUNLX0NPTlNVTVBUSU9OKSAmJiBcCi0gICAgIUFE
RFJFU1NfU0FOSVRJWkVSICYmICFNRU1PUllfU0FOSVRJWkVSICYmICFUSFJFQURfU0FOSVRJWkVS
CisjaWYgZGVmaW5lZChBQlNMX0lOVEVSTkFMX0hBVkVfREVCVUdHSU5HX1NUQUNLX0NPTlNVTVBU
SU9OKSAmJiAgIFwKKyAgICAhZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgJiYgIWRlZmluZWQo
TUVNT1JZX1NBTklUSVpFUikgJiYgXAorICAgICFkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpCiAK
IHN0YXRpYyBjb25zdCBjaGFyICpnX21hbmdsZWQ7CiBzdGF0aWMgY2hhciBnX2RlbWFuZ2xlX2J1
ZmZlcls0MDk2XTsKQEAgLTE3Niw2ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBUZXN0T25JbnB1dChj
b25zdCBjaGFyKiBpbnB1dCkgewogVEVTVChEZW1hbmdsZVJlZ3Jlc3Npb24sIE5lZ2F0aXZlTGVu
Z3RoKSB7CiAgIFRlc3RPbklucHV0KCJfWlpuNCIpOwogfQorCiBURVNUKERlbWFuZ2xlUmVncmVz
c2lvbiwgRGVlcGx5TmVzdGVkQXJyYXlUeXBlKSB7CiAgIGNvbnN0IGludCBkZXB0aCA9IDEwMDAw
MDsKICAgc3RkOjpzdHJpbmcgZGF0YSA9ICJfWlN0SSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1
Z2dpbmcvaW50ZXJuYWwvZWxmX21lbV9pbWFnZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5h
bC9lbGZfbWVtX2ltYWdlLmNjCmluZGV4IDNmNzQ3ZTdmOTU4ZWMxMmE2ZTVmMWUyY2RhYTk5Njgw
NjExNmQxZmYuLmU3NDA4YmNhOGU0MjhjNGYzYWE5ZjY5ZTJlNTZiYmM2MjJiNjE4MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9lbGZfbWVtX2ltYWdlLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9lbGZfbWVtX2ltYWdlLmNjCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50
ZXJuYWwvZWxmX21lbV9pbWFnZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2VsZl9tZW1f
aW1hZ2UuaAppbmRleCAzYjU3NzI2ODk1NDMzN2Q0YjE1MjUwODZhZDg0ZGI3OTQ0ZTM2NmI5Li5k
ODQyMDBkYjFlMWExMWYwNzQ1MDFhYTFmZjI5YzFmNmU1ZTNlNjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZWxmX21lbV9pbWFnZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9pbnRlcm5hbC9lbGZfbWVtX2ltYWdlLmgKQEAgLTUsNyArNSw3IEBACiAgKiB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAg
KiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICAqCi0gKiAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICogICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAgKgogICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTM0LDcgKzM0LDcgQEAKICNkZWZpbmUgQUJTTF9IQVZFX0VMRl9NRU1f
SU1BR0UgMQogI2VuZGlmCiAKLSNpZiBBQlNMX0hBVkVfRUxGX01FTV9JTUFHRQorI2lmZGVmIEFC
U0xfSEFWRV9FTEZfTUVNX0lNQUdFCiAKICNpbmNsdWRlIDxsaW5rLmg+ICAvLyBmb3IgRWxmVwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFjay5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9leGFtaW5lX3N0YWNrLmNjCmluZGV4IGZhZjg4ODM2
NzM1NmZlZjIyMzQwZjUzNGIxNWJlNTY5MGFlNzFmMmUuLjFlYmM3ODhmZTNkNmQ1MWYwMWVkZThm
NTY5ZTcxOTY2NzA0MTZiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9l
eGFtaW5lX3N0YWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9leGFtaW5lX3N0
YWNrLmNjCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFjay5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL2V4YW1pbmVfc3RhY2suaAppbmRleCBhMTZjMDNiMjc0OGY2ODYxZThl
MTU0M2ExNTNiMGM1ZGZkYzBhYTAxLi41NmM5NzYzZWI3MzMzNzRiMzY4MWM3Y2FiMDkzODIxNDA0
OGJhODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFj
ay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9leGFtaW5lX3N0YWNrLmgKQEAgLTUs
NyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Rl
YnVnZ2luZy9pbnRlcm5hbC9zdGFja19jb25zdW1wdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9p
bnRlcm5hbC9zdGFja19jb25zdW1wdGlvbi5jYwppbmRleCAyYjNiOTcyZWE1MzkwMmMxOTVkZTVh
MWE5ZGM5NTc5NzE4YTE3MGIzLi40YjA1ZjQ5NTVlZTBmNTU3NDNhZTgzYWI1ZDRlODk3ZWZlNWFj
ZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRp
b24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uLmNj
CkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVn
Z2luZy9pbnRlcm5hbC9zdGFja19jb25zdW1wdGlvbi5oCmluZGV4IDRjNWZhMGYwZDgyMWQ0OTYz
ZTM0YTgyZDQ1OGQwMmMwNGU1NjY4MDMuLmI4NjBhM2MxYTE3ZTEwMGY3ZDNiYzAxMzdkOGUyZjY2
YWMyZjI1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja19jb25z
dW1wdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja19jb25zdW1wdGlv
bi5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb25fdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja19jb25zdW1wdGlvbl90ZXN0LmNjCmluZGV4IDVj
ZTM4NDZlYzQ0OTcxNTkwYzM0MmM0OGM2Nzc2YTE2ZTcxY2FjOGMuLjY4YmZhMTI2ZTIzYjlkZDE2
OGJkZDI1MzU0ZWIzZTc5ZGY4ZGY5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRl
cm5hbC9zdGFja19jb25zdW1wdGlvbl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRl
cm5hbC9zdGFja19jb25zdW1wdGlvbl90ZXN0LmNjCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3Rh
Y2t0cmFjZV9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX2Nv
bmZpZy5oCmluZGV4IGRkNzEzZGE4YzBjN2Q3NjUwOWQwMzJiMDgyNjNkZTE3NDg2ZmZhNmUuLmQ0
ZTg0ODBhOGUyODBmMzhiZDk5OTM0ZmY1NGVkMmJiOWY2YWFhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVn
Z2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX2NvbmZpZy5oCkBAIC01LDcgKzUsNyBAQAogICogeW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAgKgotICog
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogICoKICAqIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC00MSw4ICs0MSw5IEBACiAjZGVmaW5lIEFCU0xfU1RBQ0tU
UkFDRV9JTkxfSEVBREVSIFwKICAgICAiYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFj
ZV9hYXJjaDY0LWlubC5pbmMiCiAjIGVsaWYgZGVmaW5lZChfX2FybV9fKQorLy8gTm90ZTogV2hl
biB1c2luZyBnbGliYyB0aGlzIG1heSByZXF1aXJlIC1mdW53aW5kLXRhYmxlcyB0byBmdW5jdGlv
biBwcm9wZXJseS4KICNkZWZpbmUgQUJTTF9TVEFDS1RSQUNFX0lOTF9IRUFERVIgXAotICAgICJh
YnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX2FybS1pbmwuaW5jIgorICAiYWJzbC9k
ZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9nZW5lcmljLWlubC5pbmMiCiAjIGVsc2UKICNk
ZWZpbmUgQUJTTF9TVEFDS1RSQUNFX0lOTF9IRUFERVIgXAogICAgImFic2wvZGVidWdnaW5nL2lu
dGVybmFsL3N0YWNrdHJhY2VfdW5pbXBsZW1lbnRlZC1pbmwuaW5jIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfZ2VuZXJpYy1pbmwuaW5jIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfZ2VuZXJpYy1pbmwuaW5jCmluZGV4IDJjOWNh
NDEwYzYwODNkZmExNzU4YWIxMTU1ODQxZjdmZWVkMmFjMmIuLjJlODc2ZmVmOTZjZjliN2JiZjEz
ZDRiODU3MGI4NGU0OTYzY2I3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5h
bC9zdGFja3RyYWNlX2dlbmVyaWMtaW5sLmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJu
YWwvc3RhY2t0cmFjZV9nZW5lcmljLWlubC5pbmMKQEAgLTEyLDEzICsxMiw0OCBAQAogI2RlZmlu
ZSBBQlNMX0RFQlVHR0lOR19JTlRFUk5BTF9TVEFDS1RSQUNFX0dFTkVSSUNfSU5MX0hfCiAKICNp
bmNsdWRlIDxleGVjaW5mby5oPgorI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxjc3RyaW5n
PgogCiAjaW5jbHVkZSAiYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5oIgogCisvLyBTb21ldGlt
ZXMsIHdlIGNhbiB0cnkgdG8gZ2V0IGEgc3RhY2sgdHJhY2UgZnJvbSB3aXRoaW4gYSBzdGFjawor
Ly8gdHJhY2UsIGJlY2F1c2Ugd2UgZG9uJ3QgYmxvY2sgc2lnbmFscyBpbnNpZGUgdGhpcyBjb2Rl
ICh3aGljaCB3b3VsZCBiZSB0b28KKy8vIGV4cGVuc2l2ZTogdGhlIHR3byBleHRyYSBzeXN0ZW0g
Y2FsbHMgcGVyIHN0YWNrIHRyYWNlIGRvIG1hdHRlciBoZXJlKS4KKy8vIFRoYXQgY2FuIGNhdXNl
IGEgc2VsZi1kZWFkbG9jay4KKy8vIFByb3RlY3QgYWdhaW5zdCBzdWNoIHJlZW50cmFudCBjYWxs
IGJ5IGZhaWxpbmcgdG8gZ2V0IGEgc3RhY2sgdHJhY2UuCisvLworLy8gV2UgdXNlIF9fdGhyZWFk
IGhlcmUgYmVjYXVzZSB0aGUgY29kZSBoZXJlIGlzIGV4dHJlbWVseSBsb3cgbGV2ZWwgLS0gaXQg
aXMKKy8vIGNhbGxlZCB3aGlsZSBjb2xsZWN0aW5nIHN0YWNrIHRyYWNlcyBmcm9tIHdpdGhpbiBt
YWxsb2MgYW5kIG1tYXAsIGFuZCB0aHVzCisvLyBjYW4gbm90IGNhbGwgYW55dGhpbmcgd2hpY2gg
bWlnaHQgY2FsbCBtYWxsb2Mgb3IgbW1hcCBpdHNlbGYuCitzdGF0aWMgX190aHJlYWQgaW50IHJl
Y3Vyc2l2ZSA9IDA7CisKKy8vIFRoZSBzdGFjayB0cmFjZSBmdW5jdGlvbiBtaWdodCBiZSBpbnZv
a2VkIHZlcnkgZWFybHkgaW4gdGhlIHByb2dyYW0ncworLy8gZXhlY3V0aW9uIChlLmcuIGZyb20g
dGhlIHZlcnkgZmlyc3QgbWFsbG9jIGlmIHVzaW5nIHRjbWFsbG9jKS4gQWxzbywgdGhlCisvLyBn
bGliYyBpbXBsZW1lbnRhdGlvbiBpdHNlbGYgd2lsbCB0cmlnZ2VyIG1hbGxvYyB0aGUgZmlyc3Qg
dGltZSBpdCBpcyBjYWxsZWQuCisvLyBBcyBzdWNoLCB3ZSBzdXBwcmVzcyB1c2FnZSBvZiBiYWNr
dHJhY2UgZHVyaW5nIHRoaXMgZWFybHkgc3RhZ2Ugb2YgZXhlY3V0aW9uLgorc3RhdGljIHN0ZDo6
YXRvbWljPGJvb2w+IGRpc2FibGVfc3RhY2t0cmFjZXModHJ1ZSk7ICAvLyBEaXNhYmxlZCB1bnRp
bCBoZWFsdGh5LgorLy8gV2FpdGluZyB1bnRpbCBzdGF0aWMgaW5pdGlhbGl6ZXJzIHJ1biBzZWVt
cyB0byBiZSBsYXRlIGVub3VnaC4KKy8vIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBpbnRvIHN0YWNr
dHJhY2UuY2Mgc28gdGhpcyB3aWxsIG9ubHkgcnVuIG9uY2UuCitzdGF0aWMgaW50IHN0YWNrdHJh
Y2VzX2VuYWJsZXIgPSBbXSgpIHsKKyAgdm9pZCogdW51c2VkX3N0YWNrWzFdOworICAvLyBGb3Jj
ZSB0aGUgZmlyc3QgYmFja3RyYWNlIHRvIGhhcHBlbiBlYXJseSB0byBnZXQgdGhlIG9uZS10aW1l
IHNoYXJlZCBsaWIKKyAgLy8gbG9hZGluZyAoYWxsb2NhdGlvbikgb3V0IG9mIHRoZSB3YXkuIEFm
dGVyIHRoZSBmaXJzdCBjYWxsIGl0IGlzIG11Y2ggc2FmZXIKKyAgLy8gdG8gdXNlIGJhY2t0cmFj
ZSBmcm9tIGEgc2lnbmFsIGhhbmRsZXIgaWYgd2UgY3Jhc2ggc29tZXdoZXJlIGxhdGVyLgorICBi
YWNrdHJhY2UodW51c2VkX3N0YWNrLCAxKTsKKyAgZGlzYWJsZV9zdGFja3RyYWNlcy5zdG9yZShm
YWxzZSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIHJldHVybiAwOworfSgpOworCiB0
ZW1wbGF0ZSA8Ym9vbCBJU19TVEFDS19GUkFNRVMsIGJvb2wgSVNfV0lUSF9DT05URVhUPgogc3Rh
dGljIGludCBVbndpbmRJbXBsKHZvaWQqKiByZXN1bHQsIGludCogc2l6ZXMsIGludCBtYXhfZGVw
dGgsIGludCBza2lwX2NvdW50LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnVj
cCwgaW50ICptaW5fZHJvcHBlZF9mcmFtZXMpIHsKKyAgaWYgKHJlY3Vyc2l2ZSB8fCBkaXNhYmxl
X3N0YWNrdHJhY2VzLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkpIHsKKyAgICByZXR1
cm4gMDsKKyAgfQorICArK3JlY3Vyc2l2ZTsKKworICBzdGF0aWNfY2FzdDx2b2lkPih1Y3ApOyAg
Ly8gVW51c2VkLgogICBzdGF0aWMgY29uc3QgaW50IGtTdGFja0xlbmd0aCA9IDY0OwogICB2b2lk
ICogc3RhY2tba1N0YWNrTGVuZ3RoXTsKICAgaW50IHNpemU7CkBAIC00NSw2ICs4MCw4IEBAIHN0
YXRpYyBpbnQgVW53aW5kSW1wbCh2b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLCBpbnQgbWF4X2Rl
cHRoLCBpbnQgc2tpcF9jb3VudCwKICAgICB9CiAgIH0KIAorICAtLXJlY3Vyc2l2ZTsKKwogICBy
ZXR1cm4gcmVzdWx0X2NvdW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50
ZXJuYWwvc3RhY2t0cmFjZV9wb3dlcnBjLWlubC5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJu
YWwvc3RhY2t0cmFjZV9wb3dlcnBjLWlubC5pbmMKaW5kZXggODYwYWMyYjNlNTgyNTEwNTk1Y2Jj
YmZmYjJiOWRjZjEwMWMyYzU1OS4uM2EwNzBlZTQ1ZDRiMDBkNWYyMThkMWE4ODc5MzQxMzgwM2U5
M2EyZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfcG93
ZXJwYy1pbmwuaW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3Bv
d2VycGMtaW5sLmluYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtMTQsOCArMTQsOCBAQAogLy8KIC8vIFByb2R1Y2Ugc3RhY2sgdHJhY2UuICBJJ20gZ3Vlc3Np
bmcgKGhvcGluZyEpIHRoZSBjb2RlIGlzIG11Y2ggbGlrZQogLy8gZm9yIHg4Ni4gIEZvciBhcHBs
ZSBtYWNoaW5lcywgYXQgbGVhc3QsIGl0IHNlZW1zIHRvIGJlOyBzZWUKLS8vICAgIGh0dHA6Ly9k
ZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vbWFjL3J1bnRpbWVodG1sL1JUQXJjaC01
OS5odG1sCi0vLyAgICBodHRwOi8vd3d3LmxpbnV4LWZvdW5kYXRpb24ub3JnL3NwZWMvRUxGL3Bw
YzY0L1BQQy1lbGY2NGFiaS0xLjkuaHRtbCNTVEFDSworLy8gICAgaHR0cHM6Ly9kZXZlbG9wZXIu
YXBwbGUuY29tL2RvY3VtZW50YXRpb24vbWFjL3J1bnRpbWVodG1sL1JUQXJjaC01OS5odG1sCisv
LyAgICBodHRwczovL3d3dy5saW51eC1mb3VuZGF0aW9uLm9yZy9zcGVjL0VMRi9wcGM2NC9QUEMt
ZWxmNjRhYmktMS45Lmh0bWwjU1RBQ0sKIC8vIExpbnV4IGhhcyBzaW1pbGFyIGNvZGU6IGh0dHA6
Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9saW51eHBwYy9wYXRjaD9pZD04ODgyCiAKICNpZm5kZWYg
QUJTTF9ERUJVR0dJTkdfSU5URVJOQUxfU1RBQ0tUUkFDRV9QT1dFUlBDX0lOTF9IXwpAQCAtMTYy
LDcgKzE2Miw3IEBAIEFCU0xfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWSAgIC8vIE1heSBy
ZWFkIHJhbmRvbSBlbGVtZW50cyBmcm9tIHN0YWNrLgogc3RhdGljIGludCBVbndpbmRJbXBsKHZv
aWQqKiByZXN1bHQsIGludCogc2l6ZXMsIGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnVjcCwgaW50ICptaW5fZHJvcHBlZF9m
cmFtZXMpIHsKICAgdm9pZCAqKnNwOwotICAvLyBBcHBsZSBPUyBYIHVzZXMgYW4gb2xkIHZlcnNp
b24gb2YgZ251IGFzIC0tIGJvdGggRGFyd2luIDcuOS4wIChQYW50aGVyKQorICAvLyBBcHBsZSBt
YWNPUyB1c2VzIGFuIG9sZCB2ZXJzaW9uIG9mIGdudSBhcyAtLSBib3RoIERhcndpbiA3LjkuMCAo
UGFudGhlcikKICAgLy8gYW5kIERhcndpbiA4LjguMSAoVGlnZXIpIHVzZSBhcyAxLjM4LiAgVGhp
cyBtZWFucyB3ZSBoYXZlIHRvIHVzZSBhCiAgIC8vIGRpZmZlcmVudCBhc20gc3ludGF4LiAgSSBk
b24ndCBrbm93IHF1aXRlIHRoZSBiZXN0IHdheSB0byBkaXNjcmltaW5hdGUKICAgLy8gc3lzdGVt
cyB1c2luZyB0aGUgb2xkIGFzIGZyb20gdGhlIG5ldyBvbmU7IEkndmUgZ29uZSB3aXRoIF9fQVBQ
TEVfXy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3dp
bjMyLWlubC5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV93aW4zMi1p
bmwuaW5jCmluZGV4IGE4ZjhhNTZhZmIzNzQ4MjIwZDUwMmUyNmExOTIxMDkxZWQ2YWIwN2EuLmI0
NjQ5MWY4MTQzZDAyOGQxMTAyYmViMDYxODFhYWFlOWJhYTNhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3dpbjMyLWlubC5pbmMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2Vfd2luMzItaW5sLmluYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzIsNyArMzIsNyBAQAogLy8gc2VydmVy
LgogLy8KIC8vIFRoaXMgY29kZSBpcyBpbnNwaXJlZCBieSBhIHBhdGNoIGZyb20gRGF2aWQgVml0
ZWs6Ci0vLyAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtcGVyZnRvb2xzL2lzc3Vl
cy9kZXRhaWw/aWQ9ODMKKy8vICAgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtcGVy
ZnRvb2xzL2lzc3Vlcy9kZXRhaWw/aWQ9ODMKIAogI2lmbmRlZiBBQlNMX0RFQlVHR0lOR19JTlRF
Uk5BTF9TVEFDS1RSQUNFX1dJTjMyX0lOTF9IXwogI2RlZmluZSBBQlNMX0RFQlVHR0lOR19JTlRF
Uk5BTF9TVEFDS1RSQUNFX1dJTjMyX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5n
L2ludGVybmFsL3N0YWNrdHJhY2VfeDg2LWlubC5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJu
YWwvc3RhY2t0cmFjZV94ODYtaW5sLmluYwppbmRleCBhYzg1YjkyMDMzMjQxN2NjZjAwYzEzOTYx
MzI1NDRkZjhiMzUyZWI4Li4yNWFhOGJkZjhjOGM4NjQwMTEzNDJhN2Q5MjY5YjVjZWI2NWRmODg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5s
LmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5sLmlu
YwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL2ludGVybmFsL2FkZHJlc3NfaXNfcmVhZGFi
bGUuaCIKICNpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC92ZHNvX3N1cHBvcnQuaCIg
IC8vIGEgbm8tb3Agb24gbm9uLWVsZiBvciBub24tZ2xpYmMgc3lzdGVtcwogI2luY2x1ZGUgImFi
c2wvZGVidWdnaW5nL3N0YWNrdHJhY2UuaCIKKwogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5h
bC9yYXdfbG9nZ2luZy5oIgogCiAjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoX19p
Mzg2X18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3ltYm9saXplLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3ltYm9saXplLmgKaW5kZXggOGQ5MjZmZWM0OGFh
ZThjMzY1MjE1NTM1MzE3Yzg1MzkyYjMwNTk4MC4uM2U1Mzc4OTMwOTdkYmNiMWQ1ZTg0Yzk5N2Qy
NTUwZDFmN2NhNGJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N5bWJv
bGl6ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zeW1ib2xpemUuaApAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjAsNyArMjAsNiBAQAogCiAj
aW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgImFic2wvYmFz
ZS9wb3J0LmgiICAvLyBOZWVkZWQgZm9yIHN0cmluZyB2cyBzdGQ6OnN0cmluZwogCiAjaWZkZWYg
QUJTTF9JTlRFUk5BTF9IQVZFX0VMRl9TWU1CT0xJWkUKICNlcnJvciBBQlNMX0lOVEVSTkFMX0hB
VkVfRUxGX1NZTUJPTElaRSBjYW5ub3QgYmUgZGlyZWN0bHkgc2V0CkBAIC00Miw5ICs0MSw5IEBA
IG5hbWVzcGFjZSBkZWJ1Z2dpbmdfaW50ZXJuYWwgewogLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nl
c3M7IG90aGVyd2lzZSByZXR1cm5zIGZhbHNlIGluIGNhc2Ugb2YgZXJyb3JzLgogLy8KIC8vIFRo
aXMgaXMgbm90IGFzeW5jLXNpZ25hbC1zYWZlLgotYm9vbCBGb3JFYWNoU2VjdGlvbigKLSAgICBp
bnQgZmQsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwg
Y29uc3QgRWxmVyhTaGRyKSAmKT4mCi0gICAgICAgICAgICAgICAgY2FsbGJhY2spOworYm9vbCBG
b3JFYWNoU2VjdGlvbihpbnQgZmQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248Ym9vbChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVsZlcoU2hkcikgJik+JiBjYWxsYmFjayk7
CiAKIC8vIEdldHMgdGhlIHNlY3Rpb24gaGVhZGVyIGZvciB0aGUgZ2l2ZW4gbmFtZSwgaWYgaXQg
ZXhpc3RzLiBSZXR1cm5zIHRydWUgb24KIC8vIHN1Y2Nlc3MuIE90aGVyd2lzZSwgcmV0dXJucyBm
YWxzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC92ZHNvX3N1cHBvcnQu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvdmRzb19zdXBwb3J0LmNjCmluZGV4IGU4MTI5
ZTg3ZGNhNzU1NjgxMDhiOTdmYjkxNmU2ZWQ5NzI1MGIxYmUuLjIzYzMwODQ3NGQ4OGIzNmVjYmZi
NGIzNTU4OTY2OThiMGNlYTc0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5h
bC92ZHNvX3N1cHBvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3Zkc29fc3Vw
cG9ydC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3Zkc29fc3VwcG9ydC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVi
dWdnaW5nL2ludGVybmFsL3Zkc29fc3VwcG9ydC5oCmluZGV4IDgwMDJjNzQwNWZhZGQ4YTFkMzU4
YjYzODA2YmVlYjM0OGQzYTgzNTAuLjk4OTViNDhkZDM2OGZmOTVjNjRjMTNlZGRmNWEwM2YwMmU4
MzAzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC92ZHNvX3N1cHBvcnQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvdmRzb19zdXBwb3J0LmgKQEAgLTUsNyAr
NSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVn
Z2luZy9sZWFrX2NoZWNrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2suY2MKaW5kZXgg
ZTAxZTVmOGM5MzdlYzFlZjU2ZWFjYTM3YzE3MWYzZGU5MTA4NGNjYS4uZmZlM2QxYmRhOWQ2MTM0
YzFmOWYyZmNiOTJmYTZiNzQ1NTFlMzM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xl
YWtfY2hlY2suY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2suY2MKQEAgLTQsMTMg
KzQsMTQgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCiAvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwogLy8gV3Jh
cHBlcnMgYXJvdW5kIGxzYW5faW50ZXJmYWNlIGZ1bmN0aW9ucy4KIC8vIFdoZW4gbHNhbiBpcyBu
b3QgbGlua2VkIGluLCB0aGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBhdmFpbGFibGUsCiAvLyB0aGVy
ZWZvcmUgQWJzZWlsIGNvZGUgd2hpY2ggZGVwZW5kcyBvbiB0aGVzZSBmdW5jdGlvbnMgaXMgY29u
ZGl0aW9uZWQgb24gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVjay5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2suaAppbmRleCBjOTMwNjg0ZTk1OThkNzQ4Njhm
ODllZTdlZmI3N2Q1YmFkYTU2ZGE2Li40ZDQ4OWM1ODI4NDlmNDNkODE0MWM0Y2IyZTBjNGE0MzFi
NGE2ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVjay5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrX2Rpc2Fi
bGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVja19kaXNhYmxlLmNjCmluZGV4IGRmMjJj
MWNhZTkxZDI5ZTNhNzQ5ZjU2ZTljM2IwODY1MjhjNjM5ZDguLjkyNGQ2ZTNkNTQzYjFiM2Y5MDVk
ODI2ZWM3OTcwNGJiNGRjYzc0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFrX2No
ZWNrX2Rpc2FibGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2tfZGlzYWJsZS5j
YwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2tfZmFpbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5n
L2xlYWtfY2hlY2tfZmFpbF90ZXN0LmNjCmluZGV4IGJmNTQxZmU4NDE1M2NkMWQ2ODgyYWU5ZWIw
NDJmOGVlMWUyMjRiMWEuLjI4ODdjZWFiMTQ3YWRjYTYyYzkwNTExNTM2YmVlMzYyNGEwMjZmYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrX2ZhaWxfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVja19mYWlsX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9s
ZWFrX2NoZWNrX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVja190ZXN0LmNjCmlu
ZGV4IGZlYmQxZWU0ZjkyOGQzZDliODVkYzdhODdkZGM3ZTg5YjExM2VhMzIuLjkzYTdlZGQyZDBl
YjljZWIyMDYzMjI4YmMyMTA4ZDE1ZTVmZDAyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9sZWFrX2NoZWNrX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2tfdGVz
dC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZGVidWdnaW5nL3N0YWNrdHJhY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0
cmFjZS5jYwppbmRleCA0NjNmYWQyNjljMTZhZmJhM2UzODNlZWQxMjkwNmM1NDg4NDlmMzhmLi45
ZGU4NzgyZjRjYWVlODA3Y2FjZjVkMDVkN2FhZjc0MTk2OGFlM2Q1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFj
ZS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgQUJTTF9TVEFDS1RSQUNFX0lOTF9IRUFERVIKICNlbHNlCiAjIGVy
cm9yIENhbm5vdCBjYWxjdWxhdGUgc3RhY2sgdHJhY2U6IHdpbGwgbmVlZCB0byB3cml0ZSBmb3Ig
eW91ciBlbnZpcm9ubWVudAorCiAjIGluY2x1ZGUgImFic2wvZGVidWdnaW5nL2ludGVybmFsL3N0
YWNrdHJhY2VfYWFyY2g2NC1pbmwuaW5jIgogIyBpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9pbnRl
cm5hbC9zdGFja3RyYWNlX2FybS1pbmwuaW5jIgogIyBpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9p
bnRlcm5hbC9zdGFja3RyYWNlX2dlbmVyaWMtaW5sLmluYyIKQEAgLTgwLDI5ICs4MSwyOSBAQCBB
QlNMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIGlubGluZSBpbnQgVW53aW5kKHZvaWQqKiByZXN1
bHQsIGludCogc2l6ZXMsCiAKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotQUJTTF9BVFRS
SUJVVEVfTk9JTkxJTkUKLWludCBHZXRTdGFja0ZyYW1lcyh2b2lkKiogcmVzdWx0LCBpbnQqIHNp
emVzLCBpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgeworQUJTTF9BVFRSSUJVVEVfTk9J
TkxJTkUgQUJTTF9BVFRSSUJVVEVfTk9fVEFJTF9DQUxMIGludCBHZXRTdGFja0ZyYW1lcygKKyAg
ICB2b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLCBpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3Vu
dCkgewogICByZXR1cm4gVW53aW5kPHRydWUsIGZhbHNlPihyZXN1bHQsIHNpemVzLCBtYXhfZGVw
dGgsIHNraXBfY291bnQsIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOwogfQogCi1BQlNMX0FUVFJJQlVURV9OT0lOTElORQotaW50IEdldFN0YWNrRnJhbWVz
V2l0aENvbnRleHQodm9pZCoqIHJlc3VsdCwgaW50KiBzaXplcywgaW50IG1heF9kZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50LCBjb25zdCB2b2lkKiB1
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWluX2Ryb3BwZWRfZnJhbWVz
KSB7CitBQlNMX0FUVFJJQlVURV9OT0lOTElORSBBQlNMX0FUVFJJQlVURV9OT19UQUlMX0NBTEwg
aW50CitHZXRTdGFja0ZyYW1lc1dpdGhDb250ZXh0KHZvaWQqKiByZXN1bHQsIGludCogc2l6ZXMs
IGludCBtYXhfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50
LCBjb25zdCB2b2lkKiB1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBtaW5fZHJv
cHBlZF9mcmFtZXMpIHsKICAgcmV0dXJuIFVud2luZDx0cnVlLCB0cnVlPihyZXN1bHQsIHNpemVz
LCBtYXhfZGVwdGgsIHNraXBfY291bnQsIHVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1pbl9kcm9wcGVkX2ZyYW1lcyk7CiB9CiAKLUFCU0xfQVRUUklCVVRFX05PSU5MSU5FCi1pbnQg
R2V0U3RhY2tUcmFjZSh2b2lkKiogcmVzdWx0LCBpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3Vu
dCkgeworQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUgQUJTTF9BVFRSSUJVVEVfTk9fVEFJTF9DQUxM
IGludCBHZXRTdGFja1RyYWNlKAorICAgIHZvaWQqKiByZXN1bHQsIGludCBtYXhfZGVwdGgsIGlu
dCBza2lwX2NvdW50KSB7CiAgIHJldHVybiBVbndpbmQ8ZmFsc2UsIGZhbHNlPihyZXN1bHQsIG51
bGxwdHIsIG1heF9kZXB0aCwgc2tpcF9jb3VudCwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOwogfQogCi1BQlNMX0FUVFJJQlVURV9OT0lOTElORQotaW50
IEdldFN0YWNrVHJhY2VXaXRoQ29udGV4dCh2b2lkKiogcmVzdWx0LCBpbnQgbWF4X2RlcHRoLCBp
bnQgc2tpcF9jb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCog
dWMsIGludCogbWluX2Ryb3BwZWRfZnJhbWVzKSB7CitBQlNMX0FUVFJJQlVURV9OT0lOTElORSBB
QlNMX0FUVFJJQlVURV9OT19UQUlMX0NBTEwgaW50CitHZXRTdGFja1RyYWNlV2l0aENvbnRleHQo
dm9pZCoqIHJlc3VsdCwgaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogdWMsIGludCogbWluX2Ryb3BwZWRfZnJhbWVzKSB7
CiAgIHJldHVybiBVbndpbmQ8ZmFsc2UsIHRydWU+KHJlc3VsdCwgbnVsbHB0ciwgbWF4X2RlcHRo
LCBza2lwX2NvdW50LCB1YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluX2Ryb3Bw
ZWRfZnJhbWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5oCmluZGV4IDhiODMxZTI2ODE1NTg3MDJmNDU0
ZDVkYmQzZTM3ZThlMjkzZTJhM2QuLjNmYzFjMDNmM2U2YjlhMTFiMjIyMzBkNDA1MjIyY2M5MTFl
NzM3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZGVidWdnaW5nL3N0YWNrdHJhY2UuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2RlYnVnZ2luZy9zeW1ib2xpemUuY2MKaW5kZXggYTM1ZTI0Y2MyOWE0Yjc4NTFkNDBlNjUy
YzM4NzgzNmZiNTA4MDIyNS4uMjRlM2E3ZjBhMGU1NmVlYTQxNTk1ZTk0ODg1NjdiY2Y1ZjJmNjY1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvc3ltYm9saXplLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvc3ltYm9saXplLmgKaW5kZXggMjRlNmU2NDcxYzY1ODBjMDY1YjU3MGQ4NTE5MzQy
ZDdjYjU4Yzg1Zi4uYTczZGJkOWVhYmVkZjA0NTUzN2U0MDdiM2Q1Y2ExNjllOTJmZDJlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9zeW1ib2xpemUuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZV9lbGYuaW5jIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVi
dWdnaW5nL3N5bWJvbGl6ZV9lbGYuaW5jCmluZGV4IGIxNmE0MmE2MmM5NWY1MGZkY2I0OTE0ZWY0
MWYyNzhjYzQxMDI0M2UuLjQ2MGRkMDNhMWQ2YmZkZWNjNjFkYWI3YWQwN2FhYmNlN2ZkOTcxYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfZWxmLmluYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvc3ltYm9saXplX2VsZi5pbmMKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTMwNSw3ICszMDUsNyBAQCBjbGFzcyBTeW1ib2xpemVyIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICp0bXBfYnVmLCBp
bnQgdG1wX2J1Zl9zaXplKTsKIAogICBlbnVtIHsKLSAgICBTWU1CT0xfQlVGX1NJWkUgPSAyMDQ4
LAorICAgIFNZTUJPTF9CVUZfU0laRSA9IDMwNzIsCiAgICAgVE1QX0JVRl9TSVpFID0gMTAyNCwK
ICAgICBTWU1CT0xfQ0FDSEVfTElORVMgPSAxMjgsCiAgIH07CkBAIC0zMzMsNyArMzMzLDExIEBA
IHN0YXRpYyBzdGQ6OmF0b21pYzxTeW1ib2xpemVyICo+IGdfY2FjaGVkX3N5bWJvbGl6ZXI7CiB9
ICAvLyBuYW1lc3BhY2UKIAogc3RhdGljIGludCBTeW1ib2xpemVyU2l6ZSgpIHsKKyNpZiBkZWZp
bmVkKF9fd2FzbV9fKSB8fCBkZWZpbmVkKF9fYXNtanNfXykKICAgaW50IHBhZ2VzaXplID0gZ2V0
cGFnZXNpemUoKTsKKyNlbHNlCisgIGludCBwYWdlc2l6ZSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpF
KTsKKyNlbmRpZgogICByZXR1cm4gKChzaXplb2YoU3ltYm9saXplcikgLSAxKSAvIHBhZ2VzaXpl
ICsgMSkgKiBwYWdlc2l6ZTsKIH0KIApAQCAtNzU4LDM3ICs3NjIsMjcgQEAgRmluZFN5bWJvbFJl
c3VsdCBTeW1ib2xpemVyOjpHZXRTeW1ib2xGcm9tT2JqZWN0RmlsZSgKICAgICB9CiAgIH0KIAot
ICAvLyBDb25zdWx0IGEgcmVndWxhciBzeW1ib2wgdGFibGUgZmlyc3QuCi0gIGlmICghR2V0U2Vj
dGlvbkhlYWRlckJ5VHlwZShvYmouZmQsIG9iai5lbGZfaGVhZGVyLmVfc2hudW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvYmouZWxmX2hlYWRlci5lX3Nob2ZmLCBTSFRfU1lNVEFC
LCAmc3ltdGFiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX2J1ZiwgdG1wX2J1
Zl9zaXplKSkgewotICAgIHJldHVybiBTWU1CT0xfTk9UX0ZPVU5EOwotICB9Ci0gIGlmICghUmVh
ZEZyb21PZmZzZXRFeGFjdCgKLSAgICAgICAgICBvYmouZmQsICZzdHJ0YWIsIHNpemVvZihzdHJ0
YWIpLAotICAgICAgICAgIG9iai5lbGZfaGVhZGVyLmVfc2hvZmYgKyBzeW10YWIuc2hfbGluayAq
IHNpemVvZihzeW10YWIpKSkgewotICAgIHJldHVybiBTWU1CT0xfTk9UX0ZPVU5EOwotICB9Ci0g
IGNvbnN0IEZpbmRTeW1ib2xSZXN1bHQgcmMgPQotICAgICAgRmluZFN5bWJvbChwYywgb2JqLmZk
LCBvdXQsIG91dF9zaXplLCByZWxvY2F0aW9uLCAmc3RydGFiLCAmc3ltdGFiLAotICAgICAgICAg
ICAgICAgICBvcGRfcHRyLCB0bXBfYnVmLCB0bXBfYnVmX3NpemUpOwotICBpZiAocmMgIT0gU1lN
Qk9MX05PVF9GT1VORCkgewotICAgIHJldHVybiByYzsgIC8vIEZvdW5kIHRoZSBzeW1ib2wgaW4g
YSByZWd1bGFyIHN5bWJvbCB0YWJsZS4KKyAgLy8gQ29uc3VsdCBhIHJlZ3VsYXIgc3ltYm9sIHRh
YmxlLCB0aGVuIGZhbGwgYmFjayB0byB0aGUgZHluYW1pYyBzeW1ib2wgdGFibGUuCisgIGZvciAo
Y29uc3QgYXV0byBzeW1ib2xfdGFibGVfdHlwZSA6IHtTSFRfU1lNVEFCLCBTSFRfRFlOU1lNfSkg
eworICAgIGlmICghR2V0U2VjdGlvbkhlYWRlckJ5VHlwZShvYmouZmQsIG9iai5lbGZfaGVhZGVy
LmVfc2hudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5lbGZfaGVhZGVy
LmVfc2hvZmYsIHN5bWJvbF90YWJsZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmc3ltdGFiLCB0bXBfYnVmLCB0bXBfYnVmX3NpemUpKSB7CisgICAgICBjb250aW51ZTsK
KyAgICB9CisgICAgaWYgKCFSZWFkRnJvbU9mZnNldEV4YWN0KAorICAgICAgICAgICAgb2JqLmZk
LCAmc3RydGFiLCBzaXplb2Yoc3RydGFiKSwKKyAgICAgICAgICAgIG9iai5lbGZfaGVhZGVyLmVf
c2hvZmYgKyBzeW10YWIuc2hfbGluayAqIHNpemVvZihzeW10YWIpKSkgeworICAgICAgY29udGlu
dWU7CisgICAgfQorICAgIGNvbnN0IEZpbmRTeW1ib2xSZXN1bHQgcmMgPQorICAgICAgICBGaW5k
U3ltYm9sKHBjLCBvYmouZmQsIG91dCwgb3V0X3NpemUsIHJlbG9jYXRpb24sICZzdHJ0YWIsICZz
eW10YWIsCisgICAgICAgICAgICAgICAgICAgb3BkX3B0ciwgdG1wX2J1ZiwgdG1wX2J1Zl9zaXpl
KTsKKyAgICBpZiAocmMgIT0gU1lNQk9MX05PVF9GT1VORCkgeworICAgICAgcmV0dXJuIHJjOwor
ICAgIH0KICAgfQogCi0gIC8vIElmIHRoZSBzeW1ib2wgaXMgbm90IGZvdW5kLCB0aGVuIGNvbnN1
bHQgYSBkeW5hbWljIHN5bWJvbCB0YWJsZS4KLSAgaWYgKCFHZXRTZWN0aW9uSGVhZGVyQnlUeXBl
KG9iai5mZCwgb2JqLmVsZl9oZWFkZXIuZV9zaG51bSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9iai5lbGZfaGVhZGVyLmVfc2hvZmYsIFNIVF9EWU5TWU0sICZzeW10YWIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBfYnVmLCB0bXBfYnVmX3NpemUpKSB7Ci0gICAg
cmV0dXJuIFNZTUJPTF9OT1RfRk9VTkQ7Ci0gIH0KLSAgaWYgKCFSZWFkRnJvbU9mZnNldEV4YWN0
KAotICAgICAgICAgIG9iai5mZCwgJnN0cnRhYiwgc2l6ZW9mKHN0cnRhYiksCi0gICAgICAgICAg
b2JqLmVsZl9oZWFkZXIuZV9zaG9mZiArIHN5bXRhYi5zaF9saW5rICogc2l6ZW9mKHN5bXRhYikp
KSB7Ci0gICAgcmV0dXJuIFNZTUJPTF9OT1RfRk9VTkQ7Ci0gIH0KLSAgcmV0dXJuIEZpbmRTeW1i
b2wocGMsIG9iai5mZCwgb3V0LCBvdXRfc2l6ZSwgcmVsb2NhdGlvbiwgJnN0cnRhYiwgJnN5bXRh
YiwKLSAgICAgICAgICAgICAgICAgICAgb3BkX3B0ciwgdG1wX2J1ZiwgdG1wX2J1Zl9zaXplKTsK
KyAgcmV0dXJuIFNZTUJPTF9OT1RfRk9VTkQ7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC05MjEsNiAr
OTE1LDE0IEBAIHN0YXRpYyBjb25zdCBjaGFyICpHZXRIZXgoY29uc3QgY2hhciAqc3RhcnQsIGNv
bnN0IGNoYXIgKmVuZCwKICAgcmV0dXJuIHA7CiB9CiAKKy8vIE5vcm1hbGx5IHdlIGFyZSBvbmx5
IGludGVyZXN0ZWQgaW4gInI/eCIgbWFwcy4KKy8vIE9uIHRoZSBQb3dlclBDLCBmdW5jdGlvbiBw
b2ludGVycyBwb2ludCB0byBkZXNjcmlwdG9ycyBpbiB0aGUgLm9wZAorLy8gc2VjdGlvbi4gIFRo
ZSBkZXNjcmlwdG9ycyB0aGVtc2VsdmVzIGFyZSBub3QgZXhlY3V0YWJsZSBjb2RlLCBzbworLy8g
d2UgbmVlZCB0byByZWxheCB0aGUgY2hlY2sgYmVsb3cgdG8gInI/PyIuCitzdGF0aWMgYm9vbCBT
aG91bGRVc2VNYXBwaW5nKGNvbnN0IGNoYXIgKmNvbnN0IGZsYWdzKSB7CisgIHJldHVybiBmbGFn
c1swXSA9PSAncicgJiYgKGtQbGF0Zm9ybVVzZXNPUERTZWN0aW9ucyB8fCBmbGFnc1syXSA9PSAn
eCcpOworfQorCiAvLyBSZWFkIC9wcm9jL3NlbGYvbWFwcyBhbmQgcnVuICJjYWxsYmFjayIgZm9y
IGVhY2ggbW1hcHBlZCBmaWxlIGZvdW5kLiAgSWYKIC8vICJjYWxsYmFjayIgcmV0dXJucyBmYWxz
ZSwgc3RvcCBzY2FubmluZyBhbmQgcmV0dXJuIHRydWUuIEVsc2UgY29udGludWUKIC8vIHNjYW5u
aW5nIC9wcm9jL3NlbGYvbWFwcy4gUmV0dXJuIHRydWUgaWYgbm8gcGFyc2UgZXJyb3IgaXMgZm91
bmQuCkBAIC05OTAsMTIgKzk5Miw4IEBAIHN0YXRpYyBBQlNMX0FUVFJJQlVURV9OT0lOTElORSBi
b29sIFJlYWRBZGRyTWFwKAogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIENo
ZWNrIGZsYWdzLiAgTm9ybWFsbHkgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiAici14IiBtYXBz
LiAgT24KLSAgICAvLyB0aGUgUG93ZXJQQywgZnVuY3Rpb24gcG9pbnRlcnMgcG9pbnQgdG8gZGVz
Y3JpcHRvcnMgaW4gdGhlIC5vcGQKLSAgICAvLyBzZWN0aW9uLiAgVGhlIGRlc2NyaXB0b3JzIHRo
ZW1zZWx2ZXMgYXJlIG5vdCBleGVjdXRhYmxlIGNvZGUuICBTbwotICAgIC8vIHdlIG5lZWQgdG8g
cmVsYXggdGhlIGNoZWNrIGJlbG93IHRvICJyKioiLgotICAgIGlmIChtZW1jbXAoZmxhZ3Nfc3Rh
cnQsICJyLXgiLCAzKSAhPSAwICYmICAvLyBOb3QgYSAici14IiBtYXAuCi0gICAgICAgICEoa1Bs
YXRmb3JtVXNlc09QRFNlY3Rpb25zICYmIGZsYWdzX3N0YXJ0WzBdID09ICdyJykpIHsKKyAgICAv
LyBDaGVjayBmbGFncy4KKyAgICBpZiAoIVNob3VsZFVzZU1hcHBpbmcoZmxhZ3Nfc3RhcnQpKSB7
CiAgICAgICBjb250aW51ZTsgIC8vIFdlIHNraXAgdGhpcyBtYXAuCiAgICAgfQogICAgICsrY3Vy
c29yOyAgLy8gU2tpcCAnICcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXpl
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3Rlc3QuY2MKaW5kZXggODAyOWZi
ZTlkMmU2ZmI3MjA4MTZlZjA0MzVlMDcwOTljYzM4NzI5Mi4uMDgwNjhjMzA3ZmRkZGJiODQ5ZDNm
NzI1MDVmYTVmMWVlYmVkNzdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6
ZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfdGVzdC5jYwpAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTA3LDcgKzEwNyw4IEBAIHN0
YXRpYyBjb25zdCBjaGFyICpUcnlTeW1ib2xpemVXaXRoTGltaXQodm9pZCAqcGMsIGludCBsaW1p
dCkgewogICAgIEFCU0xfUkFXX0NIRUNLKHN0cm5sZW4oaGVhcF9idWZmZXIuZ2V0KCksIGxpbWl0
KSA8IGxpbWl0LAogICAgICAgICAgICAgICAgICAgICJhYnNsOjpTeW1ib2xpemUoKSBkaWQgbm90
IHByb3Blcmx5IHRlcm1pbmF0ZSB0aGUgc3RyaW5nIik7CiAgICAgc3RybmNweSh0cnlfc3ltYm9s
aXplX2J1ZmZlciwgaGVhcF9idWZmZXIuZ2V0KCksCi0gICAgICAgICAgICBzaXplb2YodHJ5X3N5
bWJvbGl6ZV9idWZmZXIpKTsKKyAgICAgICAgICAgIHNpemVvZih0cnlfc3ltYm9saXplX2J1ZmZl
cikgLSAxKTsKKyAgICB0cnlfc3ltYm9saXplX2J1ZmZlcltzaXplb2YodHJ5X3N5bWJvbGl6ZV9i
dWZmZXIpIC0gMV0gPSAnXDAnOwogICB9CiAKICAgcmV0dXJuIGZvdW5kID8gdHJ5X3N5bWJvbGl6
ZV9idWZmZXIgOiBudWxscHRyOwpAQCAtMzkyLDE2ICszOTMsMjAgQEAgVEVTVChTeW1ib2xpemUs
IEZvckVhY2hTZWN0aW9uKSB7CiBleHRlcm4gIkMiIHsKIGlubGluZSB2b2lkICpBQlNMX0FUVFJJ
QlVURV9BTFdBWVNfSU5MSU5FIGlubGluZV9mdW5jKCkgewogICB2b2lkICpwYyA9IG51bGxwdHI7
Ci0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQotICBfX2FzbV9f
IF9fdm9sYXRpbGVfXygiY2FsbCAxZjsgMTogcG9wICUwIiA6ICI9ciIocGMpKTsKKyNpZiBkZWZp
bmVkKF9faTM4Nl9fKQorICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2FsbCAxZjtcbiAxOiBwb3Ag
JVtQQ10iIDogWyBQQyBdICI9ciIocGMpKTsKKyNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKKyAg
X19hc21fXyBfX3ZvbGF0aWxlX18oImxlYXEgMCglJXJpcCksJVtQQ107XG4iIDogWyBQQyBdICI9
ciIocGMpKTsKICNlbmRpZgogICByZXR1cm4gcGM7CiB9CiAKIHZvaWQgKkFCU0xfQVRUUklCVVRF
X05PSU5MSU5FIG5vbl9pbmxpbmVfZnVuYygpIHsKICAgdm9pZCAqcGMgPSBudWxscHRyOwotI2lm
IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKLSAgX19hc21fXyBfX3Zv
bGF0aWxlX18oImNhbGwgMWY7IDE6IHBvcCAlMCIgOiAiPXIiKHBjKSk7CisjaWYgZGVmaW5lZChf
X2kzODZfXykKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18oImNhbGwgMWY7XG4gMTogcG9wICVbUENd
IiA6IFsgUEMgXSAiPXIiKHBjKSk7CisjZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgIF9fYXNt
X18gX192b2xhdGlsZV9fKCJsZWFxIDAoJSVyaXApLCVbUENdO1xuIiA6IFsgUEMgXSAiPXIiKHBj
KSk7CiAjZW5kaWYKICAgcmV0dXJuIHBjOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5n
L3N5bWJvbGl6ZV91bmltcGxlbWVudGVkLmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVf
dW5pbXBsZW1lbnRlZC5pbmMKaW5kZXggMmEzZjRhY2IwZTFhMmQ2MWQxZWIxOGQ0YmE1ZTc4OTU5
M2ViNjJlZi4uN2M1ODBmZTQ0N2VkMDkyNmRlNDdhM2I4NDZlODBlNWVhMzQyMDYwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZV91bmltcGxlbWVudGVkLmluYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3VuaW1wbGVtZW50ZWQuaW5jCkBAIC00LDcgKzQsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yNiw2ICsyNiw5IEBAIGJvb2wgUmVtb3Zl
QWxsU3ltYm9sRGVjb3JhdG9ycyh2b2lkKSB7IHJldHVybiBmYWxzZTsgfQogYm9vbCBSZWdpc3Rl
ckZpbGVNYXBwaW5nSGludChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgdWludDY0X3QsIGNv
bnN0IGNoYXIgKikgewogICByZXR1cm4gZmFsc2U7CiB9Citib29sIEdldEZpbGVNYXBwaW5nSGlu
dChjb25zdCB2b2lkICoqLCBjb25zdCB2b2lkICoqLCB1aW50NjRfdCAqLCBjb25zdCBjaGFyICoq
KSB7CisgIHJldHVybiBmYWxzZTsKK30KIAogfSAgLy8gbmFtZXNwYWNlIGRlYnVnZ2luZ19pbnRl
cm5hbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3dpbjMyLmluYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfd2luMzIuaW5jCmluZGV4IGUzZmZmNzRkNDkzY2Uz
NWYwMWFlZDBiZDBmNWRhZGViYmI2Mzg3OTYuLjVhNTVmMjlkMjk2NjQ2MGYyZjZmMDAzN2RkYWIz
NjQwODlkMThiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfd2luMzIu
aW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfd2luMzIuaW5jCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNiw4ICsxNiwxNCBAQAogLy8gaHR0
cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM2
ODA1Nzgodj12cy44NSkuYXNweAogCiAjaW5jbHVkZSA8d2luZG93cy5oPgorCisvLyBNU1ZDIGhl
YWRlciBEYmdIZWxwLmggaGFzIGEgd2FybmluZyBmb3IgYW4gaWdub3JlZCB0eXBlZGVmLgorI3By
YWdtYSB3YXJuaW5nKHB1c2gpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MDkxKQogI2luY2x1
ZGUgPERiZ0hlbHAuaD4KLSNwcmFnbWEgY29tbWVudChsaWIsICJEYmdIZWxwIikKKyNwcmFnbWEg
d2FybmluZyhwb3ApCisKKyNwcmFnbWEgY29tbWVudChsaWIsICJkYmdoZWxwLmxpYiIpCiAKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y3N0cmluZz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2ZsYWdzL0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvQlVJTEQuYmF6ZWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmZlNjFlYWE4YThiNTkzZjE5ZTVjODY3YTY0YzNmNGM1ZjEzZGM3YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL0JVSUxELmJhemVsCkBAIC0wLDAgKzEsMzg0IEBACisjCisjICBDb3B5
cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisj
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
IyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKyMKKworbG9hZCgKKyAgICAiLy9hYnNsOmNvcHRzL2NvbmZp
Z3VyZV9jb3B0cy5iemwiLAorICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAorICAgICJBQlNMX0RF
RkFVTFRfTElOS09QVFMiLAorICAgICJBQlNMX1RFU1RfQ09QVFMiLAorKQorCitwYWNrYWdlKGRl
ZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdKQorCitsaWNlbnNlcyhb
Im5vdGljZSJdKSAgIyBBcGFjaGUgMi4wCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJpbnRl
cm5hbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImludGVybmFsL3Byb2dyYW1fbmFtZS5jYyIs
CisgICAgXSwKKyAgICBoZHJzID0gWworICAgICAgICAiaW50ZXJuYWwvcGF0aF91dGlsLmgiLAor
ICAgICAgICAiaW50ZXJuYWwvcHJvZ3JhbV9uYW1lLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBB
QlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMs
CisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbC9mbGFnczpfX3BrZ19fIiwKKyAg
ICBdLAorICAgIGRlcHMgPSBbCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIv
L2Fic2wvc3luY2hyb25pemF0aW9uIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5h
bWUgPSAiY29uZmlnIiwKKyAgICBzcmNzID0gWworICAgICAgICAidXNhZ2VfY29uZmlnLmNjIiwK
KyAgICBdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJjb25maWcuaCIsCisgICAgICAgICJ1c2Fn
ZV9jb25maWcuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAg
ICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAg
ICAiOmludGVybmFsIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAg
ICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0aW9uIiwK
KyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAibWFyc2hhbGxpbmciLAorICAg
IHNyY3MgPSBbCisgICAgICAgICJtYXJzaGFsbGluZy5jYyIsCisgICAgXSwKKyAgICBoZHJzID0g
WworICAgICAgICAibWFyc2hhbGxpbmcuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVG
QVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBk
ZXBzID0gWworICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8v
YWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzOnN0cl9mb3JtYXQiLAorICAg
IF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJoYW5kbGUiLAorICAgIHNyY3MgPSBb
CisgICAgICAgICJpbnRlcm5hbC9jb21tYW5kbGluZWZsYWcuY2MiLAorICAgIF0sCisgICAgaGRy
cyA9IFsKKyAgICAgICAgImludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5oIiwKKyAgICBdLAorICAg
IGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2wvZmxhZ3M6X19w
a2dfXyIsCisgICAgXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbmZpZyIsCisgICAgICAg
ICI6bWFyc2hhbGxpbmciLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNs
L2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAg
Ii8vYWJzbC9zeW5jaHJvbml6YXRpb24iLAorICAgICAgICAiLy9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAicmVnaXN0cnkiLAorICAg
IHNyY3MgPSBbCisgICAgICAgICJpbnRlcm5hbC9yZWdpc3RyeS5jYyIsCisgICAgICAgICJpbnRl
cm5hbC90eXBlX2VyYXNlZC5jYyIsCisgICAgXSwKKyAgICBoZHJzID0gWworICAgICAgICAiaW50
ZXJuYWwvcmVnaXN0cnkuaCIsCisgICAgICAgICJpbnRlcm5hbC90eXBlX2VyYXNlZC5oIiwKKyAg
ICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2wv
ZmxhZ3M6X19wa2dfXyIsCisgICAgXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbmZpZyIs
CisgICAgICAgICI6aGFuZGxlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8v
YWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpkeW5hbWljX2Fu
bm90YXRpb25zIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9z
eW5jaHJvbml6YXRpb24iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJm
bGFnIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZmxhZy5jYyIsCisgICAgXSwKKyAgICBoZHJz
ID0gWworICAgICAgICAiZGVjbGFyZS5oIiwKKyAgICAgICAgImZsYWcuaCIsCisgICAgICAgICJp
bnRlcm5hbC9mbGFnLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAg
ICAgICAgIjpjb25maWciLAorICAgICAgICAiOmhhbmRsZSIsCisgICAgICAgICI6bWFyc2hhbGxp
bmciLAorICAgICAgICAiOnJlZ2lzdHJ5IiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAg
ICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIs
CisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInVzYWdlX2ludGVybmFsIiwK
KyAgICBzcmNzID0gWworICAgICAgICAiaW50ZXJuYWwvdXNhZ2UuY2MiLAorICAgIF0sCisgICAg
aGRycyA9IFsKKyAgICAgICAgImludGVybmFsL3VzYWdlLmgiLAorICAgIF0sCisgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbC9mbGFnczpfX3BrZ19fIiwK
KyAgICBdLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29uZmlnIiwKKyAgICAgICAgIjpmbGFn
IiwKKyAgICAgICAgIjpoYW5kbGUiLAorICAgICAgICAiOmludGVybmFsIiwKKyAgICAgICAgIi8v
YWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb24iLAorICAgIF0s
CispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ1c2FnZSIsCisgICAgc3JjcyA9IFsKKyAg
ICAgICAgInVzYWdlLmNjIiwKKyAgICBdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJ1c2FnZS5o
IiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6dXNhZ2Vf
aW50ZXJuYWwiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3N5
bmNocm9uaXphdGlvbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInBh
cnNlIiwKKyAgICBzcmNzID0gWyJwYXJzZS5jYyJdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJp
bnRlcm5hbC9wYXJzZS5oIiwKKyAgICAgICAgInBhcnNlLmgiLAorICAgIF0sCisgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb25maWciLAorICAgICAgICAiOmZsYWciLAor
ICAgICAgICAiOmhhbmRsZSIsCisgICAgICAgICI6aW50ZXJuYWwiLAorICAgICAgICAiOnJlZ2lz
dHJ5IiwKKyAgICAgICAgIjp1c2FnZSIsCisgICAgICAgICI6dXNhZ2VfaW50ZXJuYWwiLAorICAg
ICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3N5bmNocm9uaXphdGlvbiIs
CisgICAgXSwKKykKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBVbml0IHRlc3RzIGluIGFscGFo
YWJldGljYWwgb3JkZXIuCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJjb21tYW5kbGluZWZsYWdf
dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImludGVy
bmFsL2NvbW1hbmRsaW5lZmxhZ190ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRl
cHMgPSBbCisgICAgICAgICI6ZmxhZyIsCisgICAgICAgICI6aGFuZGxlIiwKKyAgICAgICAgIjpy
ZWdpc3RyeSIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vYWJzbC9zdHJp
bmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAg
ICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiY29uZmlnX3Rlc3QiLAorICAgIHNpemUg
PSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJjb25maWdfdGVzdC5jYyIsCisgICAg
XSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbmZpZyIsCisgICAgICAg
ICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2Nf
dGVzdCgKKyAgICBuYW1lID0gImZsYWdfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAg
c3JjcyA9IFsKKyAgICAgICAgImZsYWdfdGVzdC5jYyIsCisgICAgICAgICJmbGFnX3Rlc3RfZGVm
cy5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmZsYWci
LAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xl
dGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJt
YXJzaGFsbGluZ190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAg
ICAgICAibWFyc2hhbGxpbmdfdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVT
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBz
ID0gWworICAgICAgICAiOm1hcnNoYWxsaW5nIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2ds
ZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
cGF0aF91dGlsX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAg
ICAgICJpbnRlcm5hbC9wYXRoX3V0aWxfdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFC
U0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAg
ICBkZXBzID0gWworICAgICAgICAiOmludGVybmFsIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dv
b2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUg
PSAicGFyc2VfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAg
ICAgInBhcnNlX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAg
ICAgICAgIjpmbGFnIiwKKyAgICAgICAgIjpwYXJzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZSIs
CisgICAgICAgICIvL2Fic2wvYmFzZTpzY29wZWRfc2V0X2VudiIsCisgICAgICAgICIvL2Fic2wv
c3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6c3BhbiIsCisgICAgICAgICJAY29tX2dv
b2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAg
ICBuYW1lID0gInByb2dyYW1fbmFtZV90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBz
cmNzID0gWworICAgICAgICAiaW50ZXJuYWwvcHJvZ3JhbV9uYW1lX3Rlc3QuY2MiLAorICAgIF0s
CisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjppbnRlcm5hbCIsCisgICAgICAg
ICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rl
c3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInR5cGVfZXJhc2Vk
X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJpbnRl
cm5hbC90eXBlX2VyYXNlZF90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMg
PSBbCisgICAgICAgICI6ZmxhZyIsCisgICAgICAgICI6cmVnaXN0cnkiLAorICAgICAgICAiLy9h
YnNsL21lbW9yeSIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJAY29tX2dv
b2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAg
ICBuYW1lID0gInVzYWdlX2NvbmZpZ190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBz
cmNzID0gWworICAgICAgICAidXNhZ2VfY29uZmlnX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb25maWciLAorICAgICAgICAiOmludGVybmFs
IiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2ds
ZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
dXNhZ2VfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAg
ImludGVybmFsL3VzYWdlX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1Rf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9
IFsKKyAgICAgICAgIjpjb25maWciLAorICAgICAgICAiOmZsYWciLAorICAgICAgICAiOmludGVy
bmFsIiwKKyAgICAgICAgIjpwYXJzZSIsCisgICAgICAgICI6dXNhZ2UiLAorICAgICAgICAiOnVz
YWdlX2ludGVybmFsIiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgICAgICAiLy9hYnNs
L3N0cmluZ3MiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0IiwKKyAg
ICBdLAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9C
VUlMRC5nbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNzNjNzRhYzRhOWI0ZGFiMzhmZTYwM2ZkMWNlZmM5ZDE4YTU1
NmIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvQlVJTEQuZ24KQEAgLTAsMCArMSwy
NTIgQEAKKyMgQ29weXJpZ2h0IDIwMTkgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQorCisjIFVzYWdlIG9mIEFi
c2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBi
ZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRv
IGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2No
cm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGluZm9y
bWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1l
bnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQoraWYgKGJ1
aWxkX3dpdGhfY2hyb21pdW0pIHsKKyAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3Rh
bnQvKiIsCisgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAorICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvKiIsCisgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCisg
IF0KK30gZWxzZSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCit9CisKKyMgQnVpbGQgdGFyZ2V0
cyBpbiB0aGlzIG1vZHVsZSBhcmUgbWFya2VkIGFzICJ0ZXN0b25seSIgYmVjYXVzZSBpdCBpcyBu
b3QgY2xlYXIKKyMgaG93IEFCU0xfRkxBRyB3aWxsIGludGVyYWN0IHdpdGggLy9iYXNlL2NvbW1h
bmRfbGluZS5oLgorIyBJZiB0aGlzIGlzIGEgcHJvYmxlbSwgZmVlbCBmcmVlIHRvIHJlbW92ZSAi
dGVzdG9ubHkiIGFuZCB1c2UgImFzc2VydF9ub19kZXBzIgorIyBvbiB0aGUgbWFpbiBDaHJvbWUg
YmluYXJ5LgorCitzb3VyY2Vfc2V0KCJpbnRlcm5hbCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisg
IGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQor
ICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1f
Y29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdz
X2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImludGVybmFsL3By
b2dyYW1fbmFtZS5jYyIsCisgIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9wYXRoX3V0
aWwuaCIsCisgICAgImludGVybmFsL3Byb2dyYW1fbmFtZS5oIiwKKyAgXQorICBkZXBzID0gWwor
ICAgICIuLi9zdHJpbmdzIiwKKyAgICAiLi4vc3luY2hyb25pemF0aW9uIiwKKyAgXQorICB2aXNp
YmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICI6KiIgXQorfQorCitzb3VyY2Vfc2V0KCJj
b25maWciKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29u
ZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVp
bGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZp
Z3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQor
ICBzb3VyY2VzID0gWworICAgICJ1c2FnZV9jb25maWcuY2MiLAorICBdCisgIHB1YmxpYyA9IFsK
KyAgICAiY29uZmlnLmgiLAorICAgICJ1c2FnZV9jb25maWcuaCIsCisgIF0KKyAgZGVwcyA9IFsK
KyAgICAiOmludGVybmFsIiwKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi9z
dHJpbmdzIiwKKyAgICAiLi4vc3luY2hyb25pemF0aW9uIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0
KCJtYXJzaGFsbGluZyIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAg
ICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJs
aWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29u
ZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgIm1hcnNoYWxsaW5nLmNjIiwKKyAgXQorICBwdWJs
aWMgPSBbCisgICAgIm1hcnNoYWxsaW5nLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uL2Jh
c2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3N0cmluZ3M6c3Ry
X2Zvcm1hdCIsCisgIF0KK30KKworc291cmNlX3NldCgiaGFuZGxlIikgeworICB0ZXN0b25seSA9
IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9j
b2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19j
aHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVs
dF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50
ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmNjIiwKKyAgXQorICBwdWJsaWMgPSBbCisgICAgImludGVy
bmFsL2NvbW1hbmRsaW5lZmxhZy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29uZmlnIiwK
KyAgICAiOm1hcnNoYWxsaW5nIiwKKyAgICAiLi4vYmFzZSIsCisgICAgIi4uL2Jhc2U6Y29yZV9o
ZWFkZXJzIiwKKyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3N5bmNocm9uaXphdGlvbiIsCisg
ICAgIi4uL3R5cGVzOm9wdGlvbmFsIiwKKyAgXQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJp
bGl0eSArPSBbICI6KiIgXQorfQorCitzb3VyY2Vfc2V0KCJyZWdpc3RyeSIpIHsKKyAgdGVzdG9u
bHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21p
dW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6
bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2Rl
ZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAg
ImludGVybmFsL3JlZ2lzdHJ5LmNjIiwKKyAgICAiaW50ZXJuYWwvdHlwZV9lcmFzZWQuY2MiLAor
ICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvcmVnaXN0cnkuaCIsCisgICAgImludGVy
bmFsL3R5cGVfZXJhc2VkLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb25maWciLAorICAg
ICI6aGFuZGxlIiwKKyAgICAiLi4vYmFzZSIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
KyAgICAiLi4vYmFzZTpkeW5hbWljX2Fubm90YXRpb25zIiwKKyAgICAiLi4vc3RyaW5ncyIsCisg
ICAgIi4uL3N5bmNocm9uaXphdGlvbiIsCisgIF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2li
aWxpdHkgKz0gWyAiOioiIF0KK30KKworc291cmNlX3NldCgiZmxhZyIpIHsKKyAgdGVzdG9ubHkg
PSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1f
Y29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9f
Y2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1
bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImZs
YWcuY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAiZGVjbGFyZS5oIiwKKyAgICAiZmxhZy5o
IiwKKyAgICAiaW50ZXJuYWwvZmxhZy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29uZmln
IiwKKyAgICAiOmhhbmRsZSIsCisgICAgIjptYXJzaGFsbGluZyIsCisgICAgIjpyZWdpc3RyeSIs
CisgICAgIi4uL2Jhc2UiLAorICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL3N0
cmluZ3MiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInVzYWdlX2ludGVybmFsIikgeworICB0ZXN0
b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv
bWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
ZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAg
ICAiaW50ZXJuYWwvdXNhZ2UuY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwv
dXNhZ2UuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvbmZpZyIsCisgICAgIjpmbGFnIiwK
KyAgICAiOmhhbmRsZSIsCisgICAgIjppbnRlcm5hbCIsCisgICAgIi4uL3N0cmluZ3MiLAorICAg
ICIuLi9zeW5jaHJvbml6YXRpb24iLAorICBdCisgIHZpc2liaWxpdHkgPSBbXQorICB2aXNpYmls
aXR5ICs9IFsgIjoqIiBdCit9CisKK3NvdXJjZV9zZXQoInVzYWdlIikgeworICB0ZXN0b25seSA9
IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9j
b2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19j
aHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVs
dF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAidXNh
Z2UuY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAidXNhZ2UuaCIsCisgIF0KKyAgZGVwcyA9
IFsKKyAgICAiOnVzYWdlX2ludGVybmFsIiwKKyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3N5
bmNocm9uaXphdGlvbiIsCisgIF0KK30KKworc291cmNlX3NldCgicGFyc2UiKSB7CisgIHRlc3Rv
bmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9t
aXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
Om5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9k
ZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0gWworICAg
ICJwYXJzZS5jYyIsCisgIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9wYXJzZS5oIiwK
KyAgICAicGFyc2UuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvbmZpZyIsCisgICAgIjpm
bGFnIiwKKyAgICAiOmhhbmRsZSIsCisgICAgIjppbnRlcm5hbCIsCisgICAgIjpyZWdpc3RyeSIs
CisgICAgIjp1c2FnZSIsCisgICAgIjp1c2FnZV9pbnRlcm5hbCIsCisgICAgIi4uL3N0cmluZ3Mi
LAorICAgICIuLi9zeW5jaHJvbml6YXRpb24iLAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9m
bGFncy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZhMWQ0ZTE3N2IzZTViYzNjOGZmNzJhODQ1NmZhNWQxOWNhMDMzYzcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9mbGFncy9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDM0NiBAQAorIwor
IyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisjCisjIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwg
ZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAg
IGZsYWdzX2ludGVybmFsCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcHJvZ3JhbV9uYW1lLmNjIgor
ICBIRFJTCisgICAgImludGVybmFsL3BhdGhfdXRpbC5oIgorICAgICJpbnRlcm5hbC9wcm9ncmFt
X25hbWUuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cmluZ3MK
KyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKyAgUFVCTElDCispCisKK2Fic2xfY2NfbGlicmFy
eSgKKyAgTkFNRQorICAgIGZsYWdzX2NvbmZpZworICBTUkNTCisgICAgInVzYWdlX2NvbmZpZy5j
YyIKKyAgSERSUworICAgICJjb25maWcuaCIKKyAgICAidXNhZ2VfY29uZmlnLmgiCisgIENPUFRT
CisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFV
TFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFnc19pbnRlcm5hbAorICAgIGFic2w6
OmNvcmVfaGVhZGVycworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRp
b24KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZmxhZ3NfbWFyc2hhbGxpbmcK
KyAgU1JDUworICAgICJtYXJzaGFsbGluZy5jYyIKKyAgSERSUworICAgICJtYXJzaGFsbGluZy5o
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisg
ICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN0cl9mb3JtYXQKKykKKworIyBJbnRlcm5hbC1v
bmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgK
KyAgTkFNRQorICAgIGZsYWdzX2hhbmRsZQorICBTUkNTCisgICAgImludGVybmFsL2NvbW1hbmRs
aW5lZmxhZy5jYyIKKyAgSERSUworICAgICJpbnRlcm5hbC9jb21tYW5kbGluZWZsYWcuaCIKKyAg
Q09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xf
REVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmZsYWdzX2NvbmZpZworICAgIGFi
c2w6OmZsYWdzX21hcnNoYWxsaW5nCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVh
ZGVycworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKyAgICBh
YnNsOjpvcHRpb25hbAorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5k
IG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZmxhZ3NfcmVnaXN0
cnkKKyAgU1JDUworICAgICJpbnRlcm5hbC9yZWdpc3RyeS5jYyIKKyAgICAiaW50ZXJuYWwvdHlw
ZV9lcmFzZWQuY2MiCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvcmVnaXN0cnkuaCIKKyAgICAiaW50
ZXJuYWwvdHlwZV9lcmFzZWQuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30K
KyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFi
c2w6OmZsYWdzX2NvbmZpZworICAgIGFic2w6OmZsYWdzX2hhbmRsZQorICAgIGFic2w6OmJhc2UK
KyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpkeW5hbWljX2Fubm90YXRpb25zCisg
ICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorKQorCithYnNsX2Nj
X2xpYnJhcnkoCisgIE5BTUUKKyAgICBmbGFncworICBTUkNTCisgICAgImZsYWcuY2MiCisgIEhE
UlMKKyAgICAiZGVjbGFyZS5oIgorICAgICJmbGFnLmgiCisgICAgImludGVybmFsL2ZsYWcuaCIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmZsYWdzX2NvbmZpZworICAg
IGFic2w6OmZsYWdzX2hhbmRsZQorICAgIGFic2w6OmZsYWdzX21hcnNoYWxsaW5nCisgICAgYWJz
bDo6ZmxhZ3NfcmVnaXN0cnkKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJz
CisgICAgYWJzbDo6c3RyaW5ncworKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3Qg
ZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZmxhZ3Nf
dXNhZ2VfaW50ZXJuYWwKKyAgU1JDUworICAgICJpbnRlcm5hbC91c2FnZS5jYyIKKyAgSERSUwor
ICAgICJpbnRlcm5hbC91c2FnZS5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRT
fQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAg
YWJzbDo6ZmxhZ3NfY29uZmlnCisgICAgYWJzbDo6ZmxhZ3MKKyAgICBhYnNsOjpmbGFnc19oYW5k
bGUKKyAgICBhYnNsOjpmbGFnc19pbnRlcm5hbAorICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNs
OjpzeW5jaHJvbml6YXRpb24KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZmxh
Z3NfdXNhZ2UKKyAgU1JDUworICAgICJ1c2FnZS5jYyIKKyAgSERSUworICAgICJ1c2FnZS5oIgor
ICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJT
TF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZmxhZ3NfdXNhZ2VfaW50ZXJu
YWwKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCispCisKK2Fi
c2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGZsYWdzX3BhcnNlCisgIFNSQ1MKKyAgICAicGFy
c2UuY2MiCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvcGFyc2UuaCIKKyAgICAicGFyc2UuaCIKKyAg
Q09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xf
REVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmZsYWdzX2NvbmZpZworICAgIGFi
c2w6OmZsYWdzCisgICAgYWJzbDo6ZmxhZ3NfaGFuZGxlCisgICAgYWJzbDo6ZmxhZ3NfaW50ZXJu
YWwKKyAgICBhYnNsOjpmbGFnc19yZWdpc3RyeQorICAgIGFic2w6OmZsYWdzX3VzYWdlCisgICAg
YWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorKQorCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjIFVuaXQgdGVzdHMgaW4gYWxwYWhhYmV0aWNhbCBvcmRlci4KKworYWJzbF9j
Y190ZXN0KAorICBOQU1FCisgICAgZmxhZ3NfY29tbWFuZGxpbmVmbGFnX3Rlc3QKKyAgU1JDUwor
ICAgICJpbnRlcm5hbC9jb21tYW5kbGluZWZsYWdfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmZsYWdzCisgICAgYWJzbDo6ZmxhZ3Nf
aGFuZGxlCisgICAgYWJzbDo6ZmxhZ3NfcmVnaXN0cnkKKyAgICBhYnNsOjptZW1vcnkKKyAgICBh
YnNsOjpzdHJpbmdzCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
KyAgICBmbGFnc19jb25maWdfdGVzdAorICBTUkNTCisgICAgImNvbmZpZ190ZXN0LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZmxhZ3NfY29u
ZmlnCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBmbGFn
c19mbGFnX3Rlc3QKKyAgU1JDUworICAgICJmbGFnX3Rlc3QuY2MiCisgICAgImZsYWdfdGVzdF9k
ZWZzLmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6ZmxhZ3MKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2Nj
X3Rlc3QoCisgIE5BTUUKKyAgICBmbGFnc19tYXJzaGFsbGluZ190ZXN0CisgIFNSQ1MKKyAgICAi
bWFyc2hhbGxpbmdfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAg
REVQUworICAgIGFic2w6OmZsYWdzX21hcnNoYWxsaW5nCisgICAgZ3Rlc3RfbWFpbgorKQorCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBmbGFnc19wYXJzZV90ZXN0CisgIFNSQ1MKKyAgICAi
cGFyc2VfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUwor
ICAgIGFic2w6OmZsYWdzCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmZsYWdzX3BhcnNlCisg
ICAgYWJzbDo6c2NvcGVkX3NldF9lbnYKKyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6c3RyaW5n
cworICAgIGdtb2NrX21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgZmxhZ3Nf
cGF0aF91dGlsX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9wYXRoX3V0aWxfdGVzdC5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmZsYWdz
X2ludGVybmFsCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAg
ICBmbGFnc19wcm9ncmFtX25hbWVfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3Byb2dyYW1f
bmFtZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6ZmxhZ3NfaW50ZXJuYWwKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ3Rlc3RfbWFp
bgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBmbGFnc190eXBlX2VyYXNlZF90ZXN0
CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvdHlwZV9lcmFzZWRfdGVzdC5jYyIKKyAgQ09QVFMKKyAg
ICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmZsYWdzCisgICAgYWJzbDo6
ZmxhZ3NfcmVnaXN0cnkKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjpzdHJpbmdzCisgICAg
Z3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBmbGFnc191c2FnZV9j
b25maWdfdGVzdAorICBTUkNTCisgICAgInVzYWdlX2NvbmZpZ190ZXN0LmNjIgorICBDT1BUUwor
ICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZmxhZ3NfY29uZmlnCisg
ICAgYWJzbDo6ZmxhZ3NfaW50ZXJuYWwKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ3Rlc3RfbWFp
bgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBmbGFnc191c2FnZV90ZXN0CisgIFNS
Q1MKKyAgICAiaW50ZXJuYWwvdXNhZ2VfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVT
VF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmZsYWdzX2NvbmZpZworICAgIGFic2w6OmZsYWdz
CisgICAgYWJzbDo6ZmxhZ3NfaW50ZXJuYWwKKyAgICBhYnNsOjpmbGFnc19wYXJzZQorICAgIGFi
c2w6OmZsYWdzX3VzYWdlCisgICAgYWJzbDo6bWVtb3J5CisgICAgYWJzbDo6c3RyaW5ncworICAg
IGd0ZXN0CispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9jb25maWcuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdz
L2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ZmQ5N2FkMGYzN2E1OTkyNjhlNGQwMzM2MDZiZWIzMTc4
MzY5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9jb25maWcuaApAQCAtMCwwICsx
LDQ4IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisj
aWZuZGVmIEFCU0xfRkxBR1NfQ09ORklHX0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfQ09ORklHX0hf
CisKKy8vIERldGVybWluZSBpZiB3ZSBzaG91bGQgc3RyaXAgc3RyaW5nIGxpdGVyYWxzIGZyb20g
dGhlIEZsYWcgb2JqZWN0cy4KKy8vIEJ5IGRlZmF1bHQgd2Ugc3RyaXAgc3RyaW5nIGxpdGVyYWxz
IG9uIG1vYmlsZSBwbGF0Zm9ybXMuCisjaWYgIWRlZmluZWQoQUJTTF9GTEFHU19TVFJJUF9OQU1F
UykKKworI2lmIGRlZmluZWQoX19BTkRST0lEX18pCisjZGVmaW5lIEFCU0xfRkxBR1NfU1RSSVBf
TkFNRVMgMQorCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25k
aXRpb25hbHMuaD4KKyNpZiBkZWZpbmVkKFRBUkdFVF9PU19JUEhPTkUpICYmIFRBUkdFVF9PU19J
UEhPTkUKKyNkZWZpbmUgQUJTTF9GTEFHU19TVFJJUF9OQU1FUyAxCisjZWxpZiBkZWZpbmVkKFRB
UkdFVF9PU19FTUJFRERFRCkgJiYgVEFSR0VUX09TX0VNQkVEREVECisjZGVmaW5lIEFCU0xfRkxB
R1NfU1RSSVBfTkFNRVMgMQorI2VuZGlmICAvLyBUQVJHRVRfT1NfKgorI2VuZGlmCisKKyNlbmRp
ZiAgLy8gIWRlZmluZWQoQUJTTF9GTEFHU19TVFJJUF9OQU1FUykKKworI2lmICFkZWZpbmVkKEFC
U0xfRkxBR1NfU1RSSVBfTkFNRVMpCisvLyBJZiBBQlNMX0ZMQUdTX1NUUklQX05BTUVTIHdhc24n
dCBzZXQgb24gdGhlIGNvbW1hbmQgbGluZSBvciBhYm92ZSwKKy8vIHRoZSBkZWZhdWx0IGlzIG5v
dCB0byBzdHJpcC4KKyNkZWZpbmUgQUJTTF9GTEFHU19TVFJJUF9OQU1FUyAwCisjZW5kaWYKKwor
I2lmICFkZWZpbmVkKEFCU0xfRkxBR1NfU1RSSVBfSEVMUCkKKy8vIEJ5IGRlZmF1bHQsIGlmIHdl
IHN0cmlwIG5hbWVzLCB3ZSBhbHNvIHN0cmlwIGhlbHAuCisjZGVmaW5lIEFCU0xfRkxBR1NfU1RS
SVBfSEVMUCBBQlNMX0ZMQUdTX1NUUklQX05BTUVTCisjZW5kaWYKKworI2VuZGlmICAvLyBBQlNM
X0ZMQUdTX0NPTkZJR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvY29uZmlnX3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9jb25maWdfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Mzg5OTg2NjdlNzA2YzMx
NWM5ZThlMDI2ZWM2OWYyZDUyZjVhOGM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3Mv
Y29uZmlnX3Rlc3QuY2MKQEAgLTAsMCArMSw2MSBAQAorLy8gIENvcHlyaWdodCAyMDE5IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9jb25maWcuaCIKKworI2lm
ZGVmIF9fQVBQTEVfXworI2luY2x1ZGUgPFRhcmdldENvbmRpdGlvbmFscy5oPgorI2VuZGlmCisK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaWZuZGVmIEFCU0xfRkxBR1NfU1RSSVBfTkFN
RVMKKyNlcnJvciBBQlNMX0ZMQUdTX1NUUklQX05BTUVTIGlzIG5vdCBkZWZpbmVkCisjZW5kaWYK
KworI2lmbmRlZiBBQlNMX0ZMQUdTX1NUUklQX0hFTFAKKyNlcnJvciBBQlNMX0ZMQUdTX1NUUklQ
X0hFTFAgaXMgbm90IGRlZmluZWQKKyNlbmRpZgorCituYW1lc3BhY2UgeworCisvLyBUZXN0IHRo
YXQgQUJTTF9GTEFHU19TVFJJUF9OQU1FUyBhbmQgQUJTTF9GTEFHU19TVFJJUF9IRUxQIGFyZSBj
b25maWd1cmVkIGhvdworLy8gd2UgZXhwZWN0IHRoZW0gdG8gYmUgY29uZmlndXJlZCBieSBkZWZh
dWx0LiBJZiB5b3Ugb3ZlcnJpZGUgdGhpcworLy8gY29uZmlndXJhdGlvbiwgdGhpcyB0ZXN0IHdp
bGwgZmFpbCwgYnV0IHRoZSBjb2RlIHNob3VsZCBzdGlsbCBiZSBzYWZlIHRvIHVzZS4KK1RFU1Qo
RmxhZ3NDb25maWdUZXN0LCBUZXN0KSB7CisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAgRVhQ
RUNUX0VRKEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMsIDEpOworICBFWFBFQ1RfRVEoQUJTTF9GTEFH
U19TVFJJUF9IRUxQLCAxKTsKKyNlbGlmIGRlZmluZWQoX19teXJpYWQyX18pCisgIEVYUEVDVF9F
UShBQlNMX0ZMQUdTX1NUUklQX05BTUVTLCAwKTsKKyAgRVhQRUNUX0VRKEFCU0xfRkxBR1NfU1RS
SVBfSEVMUCwgMCk7CisjZWxpZiBkZWZpbmVkKFRBUkdFVF9PU19JUEhPTkUpICYmIFRBUkdFVF9P
U19JUEhPTkUKKyAgRVhQRUNUX0VRKEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMsIDEpOworICBFWFBF
Q1RfRVEoQUJTTF9GTEFHU19TVFJJUF9IRUxQLCAxKTsKKyNlbGlmIGRlZmluZWQoVEFSR0VUX09T
X0VNQkVEREVEKSAmJiBUQVJHRVRfT1NfRU1CRURERUQKKyAgRVhQRUNUX0VRKEFCU0xfRkxBR1Nf
U1RSSVBfTkFNRVMsIDEpOworICBFWFBFQ1RfRVEoQUJTTF9GTEFHU19TVFJJUF9IRUxQLCAxKTsK
KyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorICBFWFBFQ1RfRVEoQUJTTF9GTEFHU19TVFJJUF9O
QU1FUywgMCk7CisgIEVYUEVDVF9FUShBQlNMX0ZMQUdTX1NUUklQX0hFTFAsIDApOworI2VsaWYg
ZGVmaW5lZChfV0lOMzIpCisgIEVYUEVDVF9FUShBQlNMX0ZMQUdTX1NUUklQX05BTUVTLCAwKTsK
KyAgRVhQRUNUX0VRKEFCU0xfRkxBR1NfU1RSSVBfSEVMUCwgMCk7CisjZWxpZiBkZWZpbmVkKF9f
bGludXhfXykKKyAgRVhQRUNUX0VRKEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMsIDApOworICBFWFBF
Q1RfRVEoQUJTTF9GTEFHU19TVFJJUF9IRUxQLCAwKTsKKyNlbmRpZgorfQorCit9ICAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2RlY2xhcmUuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2Rl
Y2xhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NTZlYzVlOWFlZjk5MmIyYTdmZTdjMjFhOGU3MjFkM2M3Zjg4
ZmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvZGVjbGFyZS5oCkBAIC0wLDAgKzEs
NTggQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IGRlY2xhcmUuaAorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgQUJTTF9ERUNMQVJFX0ZM
QUcgbWFjcm8sIGFsbG93aW5nIHlvdSB0byBkZWNsYXJlIGFuCisvLyBgYWJzbDo6RmxhZ2AgZm9y
IHVzZSB3aXRoaW4gYSB0cmFuc2xhdGlvbiB1bml0LiBZb3Ugc2hvdWxkIHBsYWNlIHRoaXMKKy8v
IGRlY2xhcmF0aW9uIHdpdGhpbiB0aGUgaGVhZGVyIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSAu
Y2MgZmlsZSB0aGF0IGRlZmluZXMKKy8vIGFuZCBvd25zIHRoZSBgRmxhZ2AuCisKKyNpZm5kZWYg
QUJTTF9GTEFHU19ERUNMQVJFX0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfREVDTEFSRV9IXworCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25hbWVzcGFjZSBhYnNsIHsK
K25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIGFic2w6OkZsYWc8VD4gcmVwcmVzZW50
cyBhIGZsYWcgb2YgdHlwZSAnVCcgY3JlYXRlZCBieSBBQlNMX0ZMQUcuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIEZsYWc7CisKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAor
CisvLyBGbGFnCisvLworLy8gRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiB0aGUgYGFic2w6OkZsYWdg
IHR5cGUgZm9yIHVzZSBpbiBkZWZpbmluZyB0aGUgbWFjcm8uCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3VzaW5nIEZsYWcgPSBmbGFnc19pbnRlcm5hbDo6RmxhZzxUPjsKKworfSAgLy8gbmFtZXNw
YWNlIGFic2wKKworLy8gQUJTTF9ERUNMQVJFX0ZMQUcoKQorLy8KKy8vIFRoaXMgbWFjcm8gaXMg
YSBjb252ZW5pZW5jZSBmb3IgZGVjbGFyaW5nIHVzZSBvZiBhbiBgYWJzbDo6RmxhZ2Agd2l0aGlu
IGEKKy8vIHRyYW5zbGF0aW9uIHVuaXQuIFRoaXMgbWFjcm8gc2hvdWxkIGJlIHVzZWQgd2l0aGlu
IGEgaGVhZGVyIGZpbGUgdG8KKy8vIGRlY2xhcmUgdXNhZ2Ugb2YgdGhlIGZsYWcgd2l0aGluIGFu
eSAuY2MgZmlsZSBpbmNsdWRpbmcgdGhhdCBoZWFkZXIgZmlsZS4KKy8vCisvLyBUaGUgQUJTTF9E
RUNMQVJFX0ZMQUcodHlwZSwgbmFtZSkgbWFjcm8gZXhwYW5kcyB0bzoKKy8vCisvLyAgIGV4dGVy
biBhYnNsOjpGbGFnPHR5cGU+IEZMQUdTX25hbWU7CisjZGVmaW5lIEFCU0xfREVDTEFSRV9GTEFH
KHR5cGUsIG5hbWUpIGV4dGVybiA6OmFic2w6OkZsYWc8dHlwZT4gRkxBR1NfIyNuYW1lCisKKyNl
bmRpZiAgLy8gQUJTTF9GTEFHU19ERUNMQVJFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9m
bGFnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZmxhZ3MvZmxhZy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTZjYzc1ZTM4NDMwMmE3
MmNiMzA1OThhYzlkODM2YzdlODdhZTg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3Mv
ZmxhZy5jYwpAQCAtMCwwICsxLDQ0IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9mbGFnLmgiCisKKyNpbmNsdWRl
IDxjc3RyaW5nPgorCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIFdlIHdhbnQgdG8gdmFsaWRhdGUg
dGhlIHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiB0eXBlIGRlZmluaXRpb24gYW5kCisvLyBkZWNsYXJh
dGlvbi4gVGhlIGxvY2stZnJlZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyB1cyB0byBk
byBpdCwKKy8vIHNvIGluIGRlYnVnIGJ1aWxkcyB3ZSBhbHdheXMgdXNlIHRoZSBzbG93ZXIgaW1w
bGVtZW50YXRpb24sIHdoaWNoIGFsd2F5cworLy8gdmFsaWRhdGVzIHRoZSB0eXBlLgorI2lmbmRl
ZiBOREVCVUcKKyNkZWZpbmUgQUJTTF9GTEFHU19BVE9NSUNfR0VUKFQpIFwKKyAgVCBHZXRGbGFn
KGNvbnN0IGFic2w6OkZsYWc8VD4mIGZsYWcpIHsgcmV0dXJuIGZsYWcuR2V0KCk7IH0KKyNlbHNl
CisjZGVmaW5lIEFCU0xfRkxBR1NfQVRPTUlDX0dFVChUKSAgICAgICAgIFwKKyAgVCBHZXRGbGFn
KGNvbnN0IGFic2w6OkZsYWc8VD4mIGZsYWcpIHsgXAorICAgIFQgcmVzdWx0OyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGZsYWcuQXRvbWljR2V0KCZyZXN1bHQpKSB7ICAg
ICAgIFwKKyAgICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIGZsYWcuR2V0
KCk7ICAgICAgICAgICAgICAgICAgIFwKKyAgfQorI2VuZGlmCisKK0FCU0xfRkxBR1NfSU5URVJO
QUxfRk9SX0VBQ0hfTE9DS19GUkVFKEFCU0xfRkxBR1NfQVRPTUlDX0dFVCkKKworI3VuZGVmIEFC
U0xfRkxBR1NfQVRPTUlDX0dFVAorCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZmxhZ3MvZmxhZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvZmxhZy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2Yzc3
MWNmNDliMWVkMGM5OGE0NTM5YTVmNTMyNmRjYmVhY2FmNzkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy9mbGFnLmgKQEAgLTAsMCArMSwyNTcgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIw
MTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IEZpbGU6IGZsYWcuaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlzIGhlYWRl
ciBmaWxlIGRlZmluZXMgdGhlIGBhYnNsOjpGbGFnPFQ+YCB0eXBlIGZvciBob2xkaW5nIGNvbW1h
bmQtbGluZQorLy8gZmxhZyBkYXRhLCBhbmQgYWJzdHJhY3Rpb25zIHRvIGNyZWF0ZSwgZ2V0IGFu
ZCBzZXQgc3VjaCBmbGFnIGRhdGEuCisvLworLy8gSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhh
dCB0aGlzIHR5cGUgaXMgKip1bnNwZWNpZmllZCoqIChhbiBpbXBsZW1lbnRhdGlvbgorLy8gZGV0
YWlsKSBhbmQgeW91IGRvIG5vdCBjb25zdHJ1Y3Qgb3IgbWFuaXB1bGF0ZSBhY3R1YWwgYGFic2w6
OkZsYWc8VD5gCisvLyBpbnN0YW5jZXMuIEluc3RlYWQsIHlvdSBkZWZpbmUgYW5kIGRlY2xhcmUg
ZmxhZ3MgdXNpbmcgdGhlCisvLyBgQUJTTF9GTEFHKClgIGFuZCBgQUJTTF9ERUNMQVJFX0ZMQUco
KWAgbWFjcm9zLCBhbmQgZ2V0IGFuZCBzZXQgZmxhZyB2YWx1ZXMKKy8vIHVzaW5nIHRoZSBgYWJz
bDo6R2V0RmxhZygpYCBhbmQgYGFic2w6OlNldEZsYWcoKWAgZnVuY3Rpb25zLgorCisjaWZuZGVm
IEFCU0xfRkxBR1NfRkxBR19IXworI2RlZmluZSBBQlNMX0ZMQUdTX0ZMQUdfSF8KKworI2luY2x1
ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2Nhc3RzLmgi
CisjaW5jbHVkZSAiYWJzbC9mbGFncy9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2Rl
Y2xhcmUuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5o
IgorI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvZmxhZy5oIgorI2luY2x1ZGUgImFic2wv
ZmxhZ3MvbWFyc2hhbGxpbmcuaCIKKworbmFtZXNwYWNlIGFic2wgeworCisvLyBGbGFnCisvLwor
Ly8gQW4gYGFic2w6OkZsYWdgIGhvbGRzIGEgY29tbWFuZC1saW5lIGZsYWcgdmFsdWUsIHByb3Zp
ZGluZyBhIHJ1bnRpbWUKKy8vIHBhcmFtZXRlciB0byBhIGJpbmFyeS4gU3VjaCBmbGFncyBzaG91
bGQgYmUgZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZQorLy8gYW5kIChwcmVmZXJhYmx5
KSBpbiB0aGUgbW9kdWxlIGNvbnRhaW5pbmcgdGhlIGJpbmFyeSdzIGBtYWluKClgIGZ1bmN0aW9u
LgorLy8KKy8vIFlvdSBzaG91bGQgbm90IGNvbnN0cnVjdCBhbmQgY2Fubm90IHVzZSB0aGUgYGFi
c2w6OkZsYWdgIHR5cGUgZGlyZWN0bHk7CisvLyBpbnN0ZWFkLCB5b3Ugc2hvdWxkIGRlY2xhcmUg
ZmxhZ3MgdXNpbmcgdGhlIGBBQlNMX0RFQ0xBUkVfRkxBRygpYCBtYWNybworLy8gd2l0aGluIGEg
aGVhZGVyIGZpbGUsIGFuZCBkZWZpbmUgeW91ciBmbGFnIHVzaW5nIGBBQlNMX0ZMQUcoKWAgd2l0
aGluIHlvdXIKKy8vIGhlYWRlcidzIGFzc29jaWF0ZWQgYC5jY2AgZmlsZS4gU3VjaCBmbGFncyB3
aWxsIGJlIG5hbWVkIGBGTEFHU19uYW1lYC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgIC5o
IGZpbGUKKy8vCisvLyAgICAgIC8vIERlY2xhcmVzIHVzYWdlIG9mIGEgZmxhZyBuYW1lZCAiRkxB
R1NfY291bnQiCisvLyAgICAgIEFCU0xfREVDTEFSRV9GTEFHKGludCwgY291bnQpOworLy8KKy8v
ICAgIC5jYyBmaWxlCisvLworLy8gICAgICAvLyBEZWZpbmVzIGEgZmxhZyBuYW1lZCAiRkxBR1Nf
Y291bnQiIHdpdGggYSBkZWZhdWx0IGBpbnRgIHZhbHVlIG9mIDAuCisvLyAgICAgIEFCU0xfRkxB
RyhpbnQsIGNvdW50LCAwLCAiQ291bnQgb2YgaXRlbXMgdG8gcHJvY2VzcyIpOworLy8KKy8vIE5v
IHB1YmxpYyBtZXRob2RzIG9mIGBhYnNsOjpGbGFnPFQ+YCBhcmUgcGFydCBvZiB0aGUgQWJzZWls
IEZsYWdzIEFQSS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgRmxhZyA9IGZsYWdzX2lu
dGVybmFsOjpGbGFnPFQ+OworCisvLyBHZXRGbGFnKCkKKy8vCisvLyBSZXR1cm5zIHRoZSB2YWx1
ZSAob2YgdHlwZSBgVGApIG9mIGFuIGBhYnNsOjpGbGFnPFQ+YCBpbnN0YW5jZSwgYnkgdmFsdWUu
IERvCisvLyBub3QgY29uc3RydWN0IGFuIGBhYnNsOjpGbGFnPFQ+YCBkaXJlY3RseSBhbmQgY2Fs
bCBgYWJzbDo6R2V0RmxhZygpYDsKKy8vIGluc3RlYWQsIHJlZmVyIHRvIGZsYWcncyBjb25zdHJ1
Y3RlZCB2YXJpYWJsZSBuYW1lIChlLmcuIGBGTEFHU19uYW1lYCkuCisvLyBCZWNhdXNlIHRoaXMg
ZnVuY3Rpb24gcmV0dXJucyBieSB2YWx1ZSBhbmQgbm90IGJ5IHJlZmVyZW5jZSwgaXQgaXMKKy8v
IHRocmVhZC1zYWZlLCBidXQgbm90ZSB0aGF0IHRoZSBvcGVyYXRpb24gbWF5IGJlIGV4cGVuc2l2
ZTsgYXMgYSByZXN1bHQsIGF2b2lkCisvLyBgYWJzbDo6R2V0RmxhZygpYCB3aXRoaW4gYW55IHRp
Z2h0IGxvb3BzLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICAvLyBGTEFHU19jb3VudCBpcyBh
IEZsYWcgb2YgdHlwZSBgaW50YAorLy8gICBpbnQgbXlfY291bnQgPSBhYnNsOjpHZXRGbGFnKEZM
QUdTX2NvdW50KTsKKy8vCisvLyAgIC8vIEZMQUdTX2ZpcnN0bmFtZSBpcyBhIEZsYWcgb2YgdHlw
ZSBgc3RkOjpzdHJpbmdgCisvLyAgIHN0ZDo6c3RyaW5nIGZpcnN0X25hbWUgPSBhYnNsOjpHZXRG
bGFnKEZMQUdTX2ZpcnN0bmFtZSk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QgR2V0RmxhZyhj
b25zdCBhYnNsOjpGbGFnPFQ+JiBmbGFnKSB7CisjZGVmaW5lIEFCU0xfRkxBR1NfSU5URVJOQUxf
TE9DS19GUkVFX1ZBTElEQVRFKEJJVCkgXAorICBzdGF0aWNfYXNzZXJ0KCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICFzdGQ6OmlzX3NhbWU8VCwgQklUPjo6dmFs
dWUsICAgICAgICAgICAgICAgICBcCisgICAgICAiRG8gbm90IHNwZWNpZnkgZXhwbGljaXQgdGVt
cGxhdGUgcGFyYW1ldGVycyB0byBhYnNsOjpHZXRGbGFnIik7CisgIEFCU0xfRkxBR1NfSU5URVJO
QUxfRk9SX0VBQ0hfTE9DS19GUkVFKEFCU0xfRkxBR1NfSU5URVJOQUxfTE9DS19GUkVFX1ZBTElE
QVRFKQorI3VuZGVmIEFCU0xfRkxBR1NfSU5URVJOQUxfTE9DS19GUkVFX1ZBTElEQVRFCisKKyAg
cmV0dXJuIGZsYWcuR2V0KCk7Cit9CisKKy8vIE92ZXJsb2FkIGZvciBgR2V0RmxhZygpYCBmb3Ig
dHlwZXMgdGhhdCBzdXBwb3J0IGxvY2stZnJlZSByZWFkcy4KKyNkZWZpbmUgQUJTTF9GTEFHU19J
TlRFUk5BTF9MT0NLX0ZSRUVfRVhQT1JUKFQpIFwKKyAgZXh0ZXJuIFQgR2V0RmxhZyhjb25zdCBh
YnNsOjpGbGFnPFQ+JiBmbGFnKTsKK0FCU0xfRkxBR1NfSU5URVJOQUxfRk9SX0VBQ0hfTE9DS19G
UkVFKEFCU0xfRkxBR1NfSU5URVJOQUxfTE9DS19GUkVFX0VYUE9SVCkKKyN1bmRlZiBBQlNMX0ZM
QUdTX0lOVEVSTkFMX0xPQ0tfRlJFRV9FWFBPUlQKKworLy8gU2V0RmxhZygpCisvLworLy8gU2V0
cyB0aGUgdmFsdWUgb2YgYW4gYGFic2w6OkZsYWdgIHRvIHRoZSB2YWx1ZSBgdmAuIERvIG5vdCBj
b25zdHJ1Y3QgYW4KKy8vIGBhYnNsOjpGbGFnPFQ+YCBkaXJlY3RseSBhbmQgY2FsbCBgYWJzbDo6
U2V0RmxhZygpYDsgaW5zdGVhZCwgdXNlIHRoZQorLy8gZmxhZydzIHZhcmlhYmxlIG5hbWUgKGUu
Zy4gYEZMQUdTX25hbWVgKS4gVGhpcyBmdW5jdGlvbiBpcworLy8gdGhyZWFkLXNhZmUsIGJ1dCBp
cyBwb3RlbnRpYWxseSBleHBlbnNpdmUuIEF2b2lkIHNldHRpbmcgZmxhZ3MgaW4gZ2VuZXJhbCwK
Ky8vIGJ1dCBlc3BlY2lhbGx5IHdpdGhpbiBwZXJmb3JtYW5jZS1jcml0aWNhbCBjb2RlLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFNldEZsYWcoYWJzbDo6RmxhZzxUPiogZmxhZywgY29u
c3QgVCYgdikgeworICBmbGFnLT5TZXQodik7Cit9CisKKy8vIE92ZXJsb2FkIG9mIGBTZXRGbGFn
KClgIHRvIGFsbG93IGNhbGxlcnMgdG8gcGFzcyBpbiBhIHZhbHVlIHRoYXQgaXMKKy8vIGNvbnZl
cnRpYmxlIHRvIGBUYC4gRS5nLiwgdXNlIHRoaXMgb3ZlcmxvYWQgdG8gcGFzcyBhICJjb25zdCBj
aGFyKiIgd2hlbiBgVGAKKy8vIGlzIGBzdGQ6OnN0cmluZ2AuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVj4KK3ZvaWQgU2V0RmxhZyhhYnNsOjpGbGFnPFQ+KiBmbGFnLCBjb25zdCBW
JiB2KSB7CisgIFQgdmFsdWUodik7CisgIGZsYWctPlNldCh2YWx1ZSk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSBhYnNsCisKKworLy8gQUJTTF9GTEFHKCkKKy8vCisvLyBUaGlzIG1hY3JvIGRlZmlu
ZXMgYW4gYGFic2w6OkZsYWc8VD5gIGluc3RhbmNlIG9mIGEgc3BlY2lmaWVkIHR5cGUgYFRgOgor
Ly8KKy8vICAgQUJTTF9GTEFHKFQsIG5hbWUsIGRlZmF1bHRfdmFsdWUsIGhlbHApOworLy8KKy8v
IHdoZXJlOgorLy8KKy8vICAgKiBgVGAgaXMgYSBzdXBwb3J0ZWQgZmxhZyB0eXBlIChzZWUgdGhl
IGxpc3Qgb2YgdHlwZXMgaW4gYG1hcnNoYWxsaW5nLmhgKSwKKy8vICAgKiBgbmFtZWAgZGVzaWdu
YXRlcyB0aGUgbmFtZSBvZiB0aGUgZmxhZyAoYXMgYSBnbG9iYWwgdmFyaWFibGUKKy8vICAgICBg
RkxBR1NfbmFtZWApLAorLy8gICAqIGBkZWZhdWx0X3ZhbHVlYCBpcyBhbiBleHByZXNzaW9uIGhv
bGRpbmcgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgZmxhZworLy8gICAgICh3aGljaCBtdXN0
IGJlIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gYFRgKSwKKy8vICAgKiBgaGVscGAgaXMgdGhl
IGhlbHAgdGV4dCwgd2hpY2ggY2FuIGFsc28gYmUgYW4gZXhwcmVzc2lvbi4KKy8vCisvLyBUaGlz
IG1hY3JvIGV4cGFuZHMgdG8gYSBmbGFnIG5hbWVkICdGTEFHU19uYW1lJyBvZiB0eXBlICdUJzoK
Ky8vCisvLyAgIGFic2w6OkZsYWc8VD4gRkxBR1NfbmFtZSA9IC4uLjsKKy8vCisvLyBOb3RlIHRo
YXQgYWxsIHN1Y2ggaW5zdGFuY2VzIGFyZSBjcmVhdGVkIGFzIGdsb2JhbCB2YXJpYWJsZXMuCisv
LworLy8gRm9yIGBBQlNMX0ZMQUcoKWAgdmFsdWVzIHRoYXQgeW91IHdpc2ggdG8gZXhwb3NlIHRv
IG90aGVyIHRyYW5zbGF0aW9uIHVuaXRzLAorLy8gaXQgaXMgcmVjb21tZW5kZWQgdG8gZGVmaW5l
IHRob3NlIGZsYWdzIHdpdGhpbiB0aGUgYC5jY2AgZmlsZSBhc3NvY2lhdGVkIHdpdGgKKy8vIHRo
ZSBoZWFkZXIgd2hlcmUgdGhlIGZsYWcgaXMgZGVjbGFyZWQuCisvLworLy8gTm90ZTogZG8gbm90
IGNvbnN0cnVjdCBvYmplY3RzIG9mIHR5cGUgYGFic2w6OkZsYWc8VD5gIGRpcmVjdGx5LiBPbmx5
IHVzZSB0aGUKKy8vIGBBQlNMX0ZMQUcoKWAgbWFjcm8gZm9yIHN1Y2ggY29uc3RydWN0aW9uLgor
I2RlZmluZSBBQlNMX0ZMQUcoVHlwZSwgbmFtZSwgZGVmYXVsdF92YWx1ZSwgaGVscCkgXAorICBB
QlNMX0ZMQUdfSU1QTChUeXBlLCBuYW1lLCBkZWZhdWx0X3ZhbHVlLCBoZWxwKQorCisvLyBBQlNM
X0ZMQUcoKS5PblVwZGF0ZSgpCisvLworLy8gRGVmaW5lcyBhIGZsYWcgb2YgdHlwZSBgVGAgd2l0
aCBhIGNhbGxiYWNrIGF0dGFjaGVkOgorLy8KKy8vICAgQUJTTF9GTEFHKFQsIG5hbWUsIGRlZmF1
bHRfdmFsdWUsIGhlbHApLk9uVXBkYXRlKGNhbGxiYWNrKTsKKy8vCisvLyBBZnRlciBhbnkgc2V0
dGluZyBvZiB0aGUgZmxhZyB2YWx1ZSwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGF0IGxl
YXN0CisvLyBvbmNlLiBBIHJhcGlkIHNlcXVlbmNlIG9mIGNoYW5nZXMgbWF5IGJlIG1lcmdlZCB0
b2dldGhlciBpbnRvIHRoZSBzYW1lCisvLyBjYWxsYmFjay4gTm8gY29uY3VycmVudCBjYWxscyB0
byB0aGUgY2FsbGJhY2sgd2lsbCBiZSBtYWRlIGZvciB0aGUgc2FtZQorLy8gZmxhZy4gQ2FsbGJh
Y2tzIGFyZSBhbGxvd2VkIHRvIHJlYWQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZsYWcgYnV0
IG11c3QKKy8vIG5vdCBtdXRhdGUgdGhhdCBmbGFnLgorLy8KKy8vIFRoZSB1cGRhdGUgbWVjaGFu
aXNtIGd1YXJhbnRlZXMgImV2ZW50dWFsIGNvbnNpc3RlbmN5IjsgaWYgdGhlIGNhbGxiYWNrCisv
LyBkZXJpdmVzIGFuIGF1eGlsaWFyeSBkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSBmbGFnIHZhbHVl
LCBpdCBpcyBndWFyYW50ZWVkCisvLyB0aGF0IGV2ZW50dWFsbHkgdGhlIGZsYWcgdmFsdWUgYW5k
IHRoZSBkZXJpdmVkIGRhdGEgc3RydWN0dXJlIHdpbGwgYmUKKy8vIGNvbnNpc3RlbnQuCisvLwor
Ly8gTm90ZTogQUJTTF9GTEFHLk9uVXBkYXRlKCkgZG9lcyBub3QgaGF2ZSBhIHB1YmxpYyBkZWZp
bml0aW9uLiBIZW5jZSwgdGhpcworLy8gY29tbWVudCBzZXJ2ZXMgYXMgaXRzIEFQSSBkb2N1bWVu
dGF0aW9uLgorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBJbXBsZW1lbnRhdGlvbiBk
ZXRhaWxzIGJlbG93IHRoaXMgc2VjdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8g
QUJTTF9GTEFHX0lNUEwgbWFjcm8gZGVmaW5pdGlvbiBjb25kaXRpb25hbCBvbiBBQlNMX0ZMQUdT
X1NUUklQX05BTUVTCisKKyNpZiBBQlNMX0ZMQUdTX1NUUklQX05BTUVTCisjZGVmaW5lIEFCU0xf
RkxBR19JTVBMX0ZMQUdOQU1FKHR4dCkgIiIKKyNkZWZpbmUgQUJTTF9GTEFHX0lNUExfRklMRU5B
TUUoKSAiIgorI2RlZmluZSBBQlNMX0ZMQUdfSU1QTF9SRUdJU1RSQVIoVCwgZmxhZykgXAorICBh
YnNsOjpmbGFnc19pbnRlcm5hbDo6RmxhZ1JlZ2lzdHJhcjxULCBmYWxzZT4oJmZsYWcpCisjZWxz
ZQorI2RlZmluZSBBQlNMX0ZMQUdfSU1QTF9GTEFHTkFNRSh0eHQpIHR4dAorI2RlZmluZSBBQlNM
X0ZMQUdfSU1QTF9GSUxFTkFNRSgpIF9fRklMRV9fCisjZGVmaW5lIEFCU0xfRkxBR19JTVBMX1JF
R0lTVFJBUihULCBmbGFnKSBcCisgIGFic2w6OmZsYWdzX2ludGVybmFsOjpGbGFnUmVnaXN0cmFy
PFQsIHRydWU+KCZmbGFnKQorI2VuZGlmCisKKy8vIEFCU0xfRkxBR19JTVBMIG1hY3JvIGRlZmlu
aXRpb24gY29uZGl0aW9uYWwgb24gQUJTTF9GTEFHU19TVFJJUF9IRUxQCisKKyNpZiBBQlNMX0ZM
QUdTX1NUUklQX0hFTFAKKyNkZWZpbmUgQUJTTF9GTEFHX0lNUExfRkxBR0hFTFAodHh0KSBhYnNs
OjpmbGFnc19pbnRlcm5hbDo6a1N0cmlwcGVkRmxhZ0hlbHAKKyNlbHNlCisjZGVmaW5lIEFCU0xf
RkxBR19JTVBMX0ZMQUdIRUxQKHR4dCkgdHh0CisjZW5kaWYKKworI2RlZmluZSBBQlNMX0ZMQUdf
SU1QTF9ERUNMQVJFX0hFTFBfV1JBUFBFUihuYW1lLCB0eHQpIFwKKyAgc3RhdGljIHN0ZDo6c3Ry
aW5nIEFic2xGbGFnc1dyYXBIZWxwIyNuYW1lKCkgeyAgICAgICBcCisgICAgcmV0dXJuIEFCU0xf
RkxBR19JTVBMX0ZMQUdIRUxQKHR4dCk7ICAgICAgICAgICAgICAgXAorICB9CisKKyNkZWZpbmUg
QUJTTF9GTEFHX0lNUExfREVDTEFSRV9ERUZfVkFMX1dSQVBQRVIobmFtZSwgVHlwZSwgZGVmYXVs
dF92YWx1ZSkgICBcCisgIHN0YXRpYyB2b2lkKiBBYnNsRmxhZ3NJbml0RmxhZyMjbmFtZSgpIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBhYnNsOjpmbGFn
c19pbnRlcm5hbDo6TWFrZUZyb21EZWZhdWx0VmFsdWU8VHlwZT4oZGVmYXVsdF92YWx1ZSk7IFwK
KyAgfQorCisvLyBBQlNMX0ZMQUdfSU1QTAorLy8KKy8vIE5vdGU6IE5hbWUgb2YgcmVnaXN0cmFy
IG9iamVjdCBpcyBub3QgYXJiaXRyYXJ5LiBJdCBpcyB1c2VkIHRvICJncmFiIgorLy8gZ2xvYmFs
IG5hbWUgZm9yIEZMQUdTX25vPGZsYWdfbmFtZT4gc3ltYm9sLCB0aHVzIHByZXZlbnRpbmcgdGhl
IHBvc3NpYmlsaXR5CisvLyBvZiBkZWZpbmluZyB0d28gZmxhZ3Mgd2l0aCBuYW1lcyBmb28gYW5k
IG5vZm9vLgorI2RlZmluZSBBQlNMX0ZMQUdfSU1QTChUeXBlLCBuYW1lLCBkZWZhdWx0X3ZhbHVl
LCBoZWxwKSAgICAgICAgICAgICBcCisgIG5hbWVzcGFjZSBhYnNsIC8qIGJsb2NrIGZsYWdzIGlu
IG5hbWVzcGFjZXMgKi8ge30gICAgICAgICAgICAgICAgIFwKKyAgQUJTTF9GTEFHX0lNUExfREVD
TEFSRV9ERUZfVkFMX1dSQVBQRVIobmFtZSwgVHlwZSwgZGVmYXVsdF92YWx1ZSkgXAorICBBQlNM
X0ZMQUdfSU1QTF9ERUNMQVJFX0hFTFBfV1JBUFBFUihuYW1lLCBoZWxwKSAgICAgICAgICAgICAg
ICAgICBcCisgIEFCU0xfQ09OU1RfSU5JVCBhYnNsOjpGbGFnPFR5cGU+IEZMQUdTXyMjbmFtZSgg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEFCU0xfRkxBR19JTVBMX0ZMQUdOQU1FKCNuYW1l
KSwgJkFic2xGbGFnc1dyYXBIZWxwIyNuYW1lLCAgICAgXAorICAgICAgQUJTTF9GTEFHX0lNUExf
RklMRU5BTUUoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAm
YWJzbDo6ZmxhZ3NfaW50ZXJuYWw6OkZsYWdNYXJzaGFsbGluZ09wczxUeXBlPiwgICAgICAgICAg
ICAgIFwKKyAgICAgICZBYnNsRmxhZ3NJbml0RmxhZyMjbmFtZSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICBleHRlcm4gYm9vbCBGTEFHU19ubyMjbmFtZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGJvb2wgRkxBR1Nfbm8jI25hbWUg
PSBBQlNMX0ZMQUdfSU1QTF9SRUdJU1RSQVIoVHlwZSwgRkxBR1NfIyNuYW1lKQorCisvLyBBQlNM
X1JFVElSRURfRkxBRworLy8KKy8vIERlc2lnbmF0ZXMgdGhlIGZsYWcgKHdoaWNoIGlzIHVzdWFs
bHkgcHJlLWV4aXN0aW5nKSBhcyAicmV0aXJlZC4iIEEgcmV0aXJlZAorLy8gZmxhZyBpcyBhIGZs
YWcgdGhhdCBpcyBub3cgdW51c2VkIGJ5IHRoZSBwcm9ncmFtLCBidXQgbWF5IHN0aWxsIGJlIHBh
c3NlZCBvbgorLy8gdGhlIGNvbW1hbmQgbGluZSwgdXN1YWxseSBieSBwcm9kdWN0aW9uIHNjcmlw
dHMuIEEgcmV0aXJlZCBmbGFnIGlzIGlnbm9yZWQKKy8vIGFuZCBjb2RlIGNhbid0IGFjY2VzcyBp
dCBhdCBydW50aW1lLgorLy8KKy8vIFRoaXMgbWFjcm8gcmVnaXN0ZXJzIGEgcmV0aXJlZCBmbGFn
IHdpdGggZ2l2ZW4gbmFtZSBhbmQgdHlwZSwgd2l0aCBhIG5hbWUKKy8vIGlkZW50aWNhbCB0byB0
aGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwgZmxhZyB5b3UgYXJlIHJldGlyaW5nLiBUaGUgcmV0aXJl
ZAorLy8gZmxhZydzIHR5cGUgY2FuIGNoYW5nZSBvdmVyIHRpbWUsIHNvIHRoYXQgeW91IGNhbiBy
ZXRpcmUgY29kZSB0byBzdXBwb3J0IGEKKy8vIGN1c3RvbSBmbGFnIHR5cGUuCisvLworLy8gVGhp
cyBtYWNybyBoYXMgdGhlIHNhbWUgc2lnbmF0dXJlIGFzIGBBQlNMX0ZMQUdgLiBUbyByZXRpcmUg
YSBmbGFnLCBzaW1wbHkKKy8vIHJlcGxhY2UgYW4gYEFCU0xfRkxBR2AgZGVmaW5pdGlvbiB3aXRo
IGBBQlNMX1JFVElSRURfRkxBR2AsIGxlYXZpbmcgdGhlCisvLyBhcmd1bWVudHMgdW5jaGFuZ2Vk
ICh1bmxlc3Mgb2YgY291cnNlIHlvdSBhY3R1YWxseSB3YW50IHRvIHJldGlyZSB0aGUgZmxhZwor
Ly8gdHlwZSBhdCB0aGlzIHRpbWUgYXMgd2VsbCkuCisvLworLy8gYGRlZmF1bHRfdmFsdWVgIGlz
IG9ubHkgdXNlZCBhcyBhIGRvdWJsZSBjaGVjayBvbiB0aGUgdHlwZS4gYGV4cGxhbmF0aW9uYCBp
cworLy8gdW51c2VkLgorLy8gVE9ETyhyb2dlZWZmKTogUmV0dXJuIGFuIGFub255bW91cyBzdHJ1
Y3QgaW5zdGVhZCBvZiBib29sLCBhbmQgcGxhY2UgaXQgaW50bworLy8gdGhlIHVubmFtZWQgbmFt
ZXNwYWNlLgorI2RlZmluZSBBQlNMX1JFVElSRURfRkxBRyh0eXBlLCBmbGFnbmFtZSwgZGVmYXVs
dF92YWx1ZSwgZXhwbGFuYXRpb24pIFwKKyAgQUJTTF9BVFRSSUJVVEVfVU5VU0VEIHN0YXRpYyBj
b25zdCBib29sIGlnbm9yZWRfIyNmbGFnbmFtZSA9ICAgICAgICBcCisgICAgICAoW10geyByZXR1
cm4gdHlwZShkZWZhdWx0X3ZhbHVlKTsgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgIGFic2w6OmZsYWdzX2ludGVybmFsOjpSZXRpcmVkRmxhZzx0eXBlPigjZmxhZ25hbWUp
KQorCisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfRkxBR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxh
Z3MvZmxhZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvZmxhZ190ZXN0LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFi
Y2Q3ZTk2ODY4ZTdhZTFiYTM5NmY2ZTBlMTJlYjEwM2Y3YWY5ZGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9mbGFnX3Rlc3QuY2MKQEAgLTAsMCArMSw0ODIgQEAKKy8vCisvLyAgQ29w
eXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2ZsYWdz
L2ZsYWcuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL251bWJlcnMuaCIKKyNpbmNsdWRl
ICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfc3Bs
aXQuaCIKKworQUJTTF9ERUNMQVJFX0ZMQUcoaW50NjRfdCwgbWlzdHlwZWRfaW50X2ZsYWcpOwor
QUJTTF9ERUNMQVJFX0ZMQUcoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LCBtaXN0eXBlZF9zdHJp
bmdfZmxhZyk7CisKK25hbWVzcGFjZSB7CisKK25hbWVzcGFjZSBmbGFncyA9IGFic2w6OmZsYWdz
X2ludGVybmFsOworCitzdGQ6OnN0cmluZyBUZXN0SGVscE1zZygpIHsgcmV0dXJuICJoZWxwIjsg
fQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkKiBUZXN0TWFrZURmbHQoKSB7CisgIHJldHVy
biBuZXcgVHt9OworfQordm9pZCBUZXN0Q2FsbGJhY2soKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2Jvb2wgVGVzdENvbnN0cnVjdGlvbkZvcigpIHsKKyAgY29uc3RleHByIGZsYWdzOjpG
bGFnPFQ+IGYxKCJmMSIsICZUZXN0SGVscE1zZywgImZpbGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmFic2w6OmZsYWdzX2ludGVybmFsOjpGbGFnTWFyc2hhbGxpbmdPcHM8VD4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmVGVzdE1ha2VEZmx0PFQ+KTsKKyAgRVhQ
RUNUX0VRKGYxLk5hbWUoKSwgImYxIik7CisgIEVYUEVDVF9FUShmMS5IZWxwKCksICJoZWxwIik7
CisgIEVYUEVDVF9FUShmMS5GaWxlbmFtZSgpLCAiZmlsZSIpOworCisgIEFCU0xfQ09OU1RfSU5J
VCBzdGF0aWMgZmxhZ3M6OkZsYWc8VD4gZjIoCisgICAgICAiZjIiLCAmVGVzdEhlbHBNc2csICJm
aWxlIiwgJmFic2w6OmZsYWdzX2ludGVybmFsOjpGbGFnTWFyc2hhbGxpbmdPcHM8VD4sCisgICAg
ICAmVGVzdE1ha2VEZmx0PFQ+KTsKKyAgZmxhZ3M6OkZsYWdSZWdpc3RyYXI8VCwgZmFsc2U+KCZm
MikuT25VcGRhdGUoVGVzdENhbGxiYWNrKTsKKworICBFWFBFQ1RfRVEoZjIuTmFtZSgpLCAiZjIi
KTsKKyAgRVhQRUNUX0VRKGYyLkhlbHAoKSwgImhlbHAiKTsKKyAgRVhQRUNUX0VRKGYyLkZpbGVu
YW1lKCksICJmaWxlIik7CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK3N0cnVjdCBVRFQgeworICBV
RFQoKSA9IGRlZmF1bHQ7CisgIFVEVChjb25zdCBVRFQmKSA9IGRlZmF1bHQ7Cit9OworYm9vbCBB
YnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCBVRFQqLCBzdGQ6OnN0cmluZyopIHsgcmV0
dXJuIHRydWU7IH0KK3N0ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxhZyhjb25zdCBVRFQmKSB7IHJl
dHVybiAiIjsgfQorCitURVNUKEZsYWdUZXN0LCBUZXN0Q29uc3RydWN0aW9uKSB7CisgIFRlc3RD
b25zdHJ1Y3Rpb25Gb3I8Ym9vbD4oKTsKKyAgVGVzdENvbnN0cnVjdGlvbkZvcjxpbnQxNl90Pigp
OworICBUZXN0Q29uc3RydWN0aW9uRm9yPHVpbnQxNl90PigpOworICBUZXN0Q29uc3RydWN0aW9u
Rm9yPGludDMyX3Q+KCk7CisgIFRlc3RDb25zdHJ1Y3Rpb25Gb3I8dWludDMyX3Q+KCk7CisgIFRl
c3RDb25zdHJ1Y3Rpb25Gb3I8aW50NjRfdD4oKTsKKyAgVGVzdENvbnN0cnVjdGlvbkZvcjx1aW50
NjRfdD4oKTsKKyAgVGVzdENvbnN0cnVjdGlvbkZvcjxkb3VibGU+KCk7CisgIFRlc3RDb25zdHJ1
Y3Rpb25Gb3I8ZmxvYXQ+KCk7CisgIFRlc3RDb25zdHJ1Y3Rpb25Gb3I8c3RkOjpzdHJpbmc+KCk7
CisKKyAgVGVzdENvbnN0cnVjdGlvbkZvcjxVRFQ+KCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K30gIC8vIG5hbWVzcGFjZQorCitBQlNMX0RFQ0xBUkVfRkxBRyhib29sLCB0ZXN0X2ZsYWdfMDEp
OworQUJTTF9ERUNMQVJFX0ZMQUcoaW50LCB0ZXN0X2ZsYWdfMDIpOworQUJTTF9ERUNMQVJFX0ZM
QUcoaW50MTZfdCwgdGVzdF9mbGFnXzAzKTsKK0FCU0xfREVDTEFSRV9GTEFHKHVpbnQxNl90LCB0
ZXN0X2ZsYWdfMDQpOworQUJTTF9ERUNMQVJFX0ZMQUcoaW50MzJfdCwgdGVzdF9mbGFnXzA1KTsK
K0FCU0xfREVDTEFSRV9GTEFHKHVpbnQzMl90LCB0ZXN0X2ZsYWdfMDYpOworQUJTTF9ERUNMQVJF
X0ZMQUcoaW50NjRfdCwgdGVzdF9mbGFnXzA3KTsKK0FCU0xfREVDTEFSRV9GTEFHKHVpbnQ2NF90
LCB0ZXN0X2ZsYWdfMDgpOworQUJTTF9ERUNMQVJFX0ZMQUcoZG91YmxlLCB0ZXN0X2ZsYWdfMDkp
OworQUJTTF9ERUNMQVJFX0ZMQUcoZmxvYXQsIHRlc3RfZmxhZ18xMCk7CitBQlNMX0RFQ0xBUkVf
RkxBRyhzdGQ6OnN0cmluZywgdGVzdF9mbGFnXzExKTsKKworbmFtZXNwYWNlIHsKKworI2lmICFB
QlNMX0ZMQUdTX1NUUklQX05BTUVTCisKK1RFU1QoRmxhZ1Rlc3QsIFRlc3RGbGFnRGVjbGFyYXRp
b24pIHsKKyAgLy8gdGVzdCB0aGF0IHdlIGNhbiBhY2Nlc3MgZmxhZyBvYmplY3RzLgorICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzAxLk5hbWUoKSwgInRlc3RfZmxhZ18wMSIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzAyLk5hbWUoKSwgInRlc3RfZmxhZ18wMiIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzAzLk5hbWUoKSwgInRlc3RfZmxhZ18wMyIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA0Lk5hbWUoKSwgInRlc3RfZmxhZ18wNCIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA1Lk5hbWUoKSwgInRlc3RfZmxhZ18wNSIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA2Lk5hbWUoKSwgInRlc3RfZmxhZ18wNiIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA3Lk5hbWUoKSwgInRlc3RfZmxhZ18wNyIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA4Lk5hbWUoKSwgInRlc3RfZmxhZ18wOCIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA5Lk5hbWUoKSwgInRlc3RfZmxhZ18wOSIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzEwLk5hbWUoKSwgInRlc3RfZmxhZ18xMCIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzExLk5hbWUoKSwgInRlc3RfZmxhZ18xMSIpOworfQorI2Vu
ZGlmICAvLyAhQUJTTF9GTEFHU19TVFJJUF9OQU1FUworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit9ICAv
LyBuYW1lc3BhY2UKKworQUJTTF9GTEFHKGJvb2wsIHRlc3RfZmxhZ18wMSwgdHJ1ZSwgInRlc3Qg
ZmxhZyAwMSIpOworQUJTTF9GTEFHKGludCwgdGVzdF9mbGFnXzAyLCAxMjM0LCAidGVzdCBmbGFn
IDAyIik7CitBQlNMX0ZMQUcoaW50MTZfdCwgdGVzdF9mbGFnXzAzLCAtMzQsICJ0ZXN0IGZsYWcg
MDMiKTsKK0FCU0xfRkxBRyh1aW50MTZfdCwgdGVzdF9mbGFnXzA0LCAxODksICJ0ZXN0IGZsYWcg
MDQiKTsKK0FCU0xfRkxBRyhpbnQzMl90LCB0ZXN0X2ZsYWdfMDUsIDEwNzY1LCAidGVzdCBmbGFn
IDA1Iik7CitBQlNMX0ZMQUcodWludDMyX3QsIHRlc3RfZmxhZ18wNiwgNDAwMDAsICJ0ZXN0IGZs
YWcgMDYiKTsKK0FCU0xfRkxBRyhpbnQ2NF90LCB0ZXN0X2ZsYWdfMDcsIC0xMjM0NTY3LCAidGVz
dCBmbGFnIDA3Iik7CitBQlNMX0ZMQUcodWludDY0X3QsIHRlc3RfZmxhZ18wOCwgOTg3NjU0Mywg
InRlc3QgZmxhZyAwOCIpOworQUJTTF9GTEFHKGRvdWJsZSwgdGVzdF9mbGFnXzA5LCAtOS44NzZl
LTUwLCAidGVzdCBmbGFnIDA5Iik7CitBQlNMX0ZMQUcoZmxvYXQsIHRlc3RfZmxhZ18xMCwgMS4y
MzRlMTJmLCAidGVzdCBmbGFnIDEwIik7CitBQlNMX0ZMQUcoc3RkOjpzdHJpbmcsIHRlc3RfZmxh
Z18xMSwgIiIsICJ0ZXN0IGZsYWcgMTEiKTsKKworbmFtZXNwYWNlIHsKKworI2lmICFBQlNMX0ZM
QUdTX1NUUklQX05BTUVTCitURVNUKEZsYWdUZXN0LCBUZXN0RmxhZ0RlZmluaXRpb24pIHsKKyAg
YWJzbDo6c3RyaW5nX3ZpZXcgZXhwZWN0ZWRfZmlsZV9uYW1lID0gImFic2wvZmxhZ3MvZmxhZ190
ZXN0LmNjIjsKKworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzAxLk5hbWUoKSwgInRlc3Rf
ZmxhZ18wMSIpOworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzAxLkhlbHAoKSwgInRlc3Qg
ZmxhZyAwMSIpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OkVuZHNXaXRoKEZMQUdTX3Rl
c3RfZmxhZ18wMS5GaWxlbmFtZSgpLCBleHBlY3RlZF9maWxlX25hbWUpKTsKKworICBFWFBFQ1Rf
RVEoRkxBR1NfdGVzdF9mbGFnXzAyLk5hbWUoKSwgInRlc3RfZmxhZ18wMiIpOworICBFWFBFQ1Rf
RVEoRkxBR1NfdGVzdF9mbGFnXzAyLkhlbHAoKSwgInRlc3QgZmxhZyAwMiIpOworICBFWFBFQ1Rf
VFJVRSgKKyAgICAgIGFic2w6OkVuZHNXaXRoKEZMQUdTX3Rlc3RfZmxhZ18wMi5GaWxlbmFtZSgp
LCBleHBlY3RlZF9maWxlX25hbWUpKTsKKworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzAz
Lk5hbWUoKSwgInRlc3RfZmxhZ18wMyIpOworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzAz
LkhlbHAoKSwgInRlc3QgZmxhZyAwMyIpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OkVu
ZHNXaXRoKEZMQUdTX3Rlc3RfZmxhZ18wMy5GaWxlbmFtZSgpLCBleHBlY3RlZF9maWxlX25hbWUp
KTsKKworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA0Lk5hbWUoKSwgInRlc3RfZmxhZ18w
NCIpOworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA0LkhlbHAoKSwgInRlc3QgZmxhZyAw
NCIpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OkVuZHNXaXRoKEZMQUdTX3Rlc3RfZmxh
Z18wNC5GaWxlbmFtZSgpLCBleHBlY3RlZF9maWxlX25hbWUpKTsKKworICBFWFBFQ1RfRVEoRkxB
R1NfdGVzdF9mbGFnXzA1Lk5hbWUoKSwgInRlc3RfZmxhZ18wNSIpOworICBFWFBFQ1RfRVEoRkxB
R1NfdGVzdF9mbGFnXzA1LkhlbHAoKSwgInRlc3QgZmxhZyAwNSIpOworICBFWFBFQ1RfVFJVRSgK
KyAgICAgIGFic2w6OkVuZHNXaXRoKEZMQUdTX3Rlc3RfZmxhZ18wNS5GaWxlbmFtZSgpLCBleHBl
Y3RlZF9maWxlX25hbWUpKTsKKworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA2Lk5hbWUo
KSwgInRlc3RfZmxhZ18wNiIpOworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA2LkhlbHAo
KSwgInRlc3QgZmxhZyAwNiIpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OkVuZHNXaXRo
KEZMQUdTX3Rlc3RfZmxhZ18wNi5GaWxlbmFtZSgpLCBleHBlY3RlZF9maWxlX25hbWUpKTsKKwor
ICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA3Lk5hbWUoKSwgInRlc3RfZmxhZ18wNyIpOwor
ICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA3LkhlbHAoKSwgInRlc3QgZmxhZyAwNyIpOwor
ICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OkVuZHNXaXRoKEZMQUdTX3Rlc3RfZmxhZ18wNy5G
aWxlbmFtZSgpLCBleHBlY3RlZF9maWxlX25hbWUpKTsKKworICBFWFBFQ1RfRVEoRkxBR1NfdGVz
dF9mbGFnXzA4Lk5hbWUoKSwgInRlc3RfZmxhZ18wOCIpOworICBFWFBFQ1RfRVEoRkxBR1NfdGVz
dF9mbGFnXzA4LkhlbHAoKSwgInRlc3QgZmxhZyAwOCIpOworICBFWFBFQ1RfVFJVRSgKKyAgICAg
IGFic2w6OkVuZHNXaXRoKEZMQUdTX3Rlc3RfZmxhZ18wOC5GaWxlbmFtZSgpLCBleHBlY3RlZF9m
aWxlX25hbWUpKTsKKworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA5Lk5hbWUoKSwgInRl
c3RfZmxhZ18wOSIpOworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFnXzA5LkhlbHAoKSwgInRl
c3QgZmxhZyAwOSIpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OkVuZHNXaXRoKEZMQUdT
X3Rlc3RfZmxhZ18wOS5GaWxlbmFtZSgpLCBleHBlY3RlZF9maWxlX25hbWUpKTsKKworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzEwLk5hbWUoKSwgInRlc3RfZmxhZ18xMCIpOworICBFWFBF
Q1RfRVEoRkxBR1NfdGVzdF9mbGFnXzEwLkhlbHAoKSwgInRlc3QgZmxhZyAxMCIpOworICBFWFBF
Q1RfVFJVRSgKKyAgICAgIGFic2w6OkVuZHNXaXRoKEZMQUdTX3Rlc3RfZmxhZ18xMC5GaWxlbmFt
ZSgpLCBleHBlY3RlZF9maWxlX25hbWUpKTsKKworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFn
XzExLk5hbWUoKSwgInRlc3RfZmxhZ18xMSIpOworICBFWFBFQ1RfRVEoRkxBR1NfdGVzdF9mbGFn
XzExLkhlbHAoKSwgInRlc3QgZmxhZyAxMSIpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6
OkVuZHNXaXRoKEZMQUdTX3Rlc3RfZmxhZ18xMS5GaWxlbmFtZSgpLCBleHBlY3RlZF9maWxlX25h
bWUpKTsKK30KKyNlbmRpZiAgLy8gIUFCU0xfRkxBR1NfU1RSSVBfTkFNRVMKKworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworVEVTVChGbGFnVGVzdCwgVGVzdERlZmF1bHQpIHsKKyAgRVhQRUNUX0VRKGFic2w6
OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzAxKSwgdHJ1ZSk7CisgIEVYUEVDVF9FUShhYnNsOjpH
ZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wMiksIDEyMzQpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0
RmxhZyhGTEFHU190ZXN0X2ZsYWdfMDMpLCAtMzQpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0Rmxh
ZyhGTEFHU190ZXN0X2ZsYWdfMDQpLCAxODkpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhG
TEFHU190ZXN0X2ZsYWdfMDUpLCAxMDc2NSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZM
QUdTX3Rlc3RfZmxhZ18wNiksIDQwMDAwKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxB
R1NfdGVzdF9mbGFnXzA3KSwgLTEyMzQ1NjcpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhG
TEFHU190ZXN0X2ZsYWdfMDgpLCA5ODc2NTQzKTsKKyAgRVhQRUNUX05FQVIoYWJzbDo6R2V0Rmxh
ZyhGTEFHU190ZXN0X2ZsYWdfMDkpLCAtOS44NzZlLTUwLCAxZS01NSk7CisgIEVYUEVDVF9ORUFS
KGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzEwKSwgMS4yMzRlMTJmLCAxZTVmKTsKKyAg
RVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzExKSwgIiIpOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitURVNUKEZsYWdUZXN0LCBUZXN0R2V0U2V0KSB7CisgIGFic2w6OlNl
dEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ18wMSwgZmFsc2UpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0
RmxhZyhGTEFHU190ZXN0X2ZsYWdfMDEpLCBmYWxzZSk7CisKKyAgYWJzbDo6U2V0RmxhZygmRkxB
R1NfdGVzdF9mbGFnXzAyLCAzMjEpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190
ZXN0X2ZsYWdfMDIpLCAzMjEpOworCisgIGFic2w6OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ18w
MywgNjcpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMDMpLCA2
Nyk7CisKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfdGVzdF9mbGFnXzA0LCAxKTsKKyAgRVhQRUNU
X0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzA0KSwgMSk7CisKKyAgYWJzbDo6U2V0
RmxhZygmRkxBR1NfdGVzdF9mbGFnXzA1LCAtOTA4KTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZs
YWcoRkxBR1NfdGVzdF9mbGFnXzA1KSwgLTkwOCk7CisKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1Nf
dGVzdF9mbGFnXzA2LCA0MDAxKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVz
dF9mbGFnXzA2KSwgNDAwMSk7CisKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfdGVzdF9mbGFnXzA3
LCAtMjM0NTYpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMDcp
LCAtMjM0NTYpOworCisgIGFic2w6OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ18wOCwgOTc1MzEw
KTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzA4KSwgOTc1MzEw
KTsKKworICBhYnNsOjpTZXRGbGFnKCZGTEFHU190ZXN0X2ZsYWdfMDksIDEuMDAwMDEpOworICBF
WFBFQ1RfTkVBUihhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wOSksIDEuMDAwMDEsIDFl
LTEwKTsKKworICBhYnNsOjpTZXRGbGFnKCZGTEFHU190ZXN0X2ZsYWdfMTAsIC0zLjU0Zik7Cisg
IEVYUEVDVF9ORUFSKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzEwKSwgLTMuNTRmLCAx
ZS02Zik7CisKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfdGVzdF9mbGFnXzExLCAiYXNkZiIpOwor
ICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMTEpLCAiYXNkZiIpOwor
fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgR2V0RGZsdDEoKSB7IHJldHVybiAxOyB9CisKK30g
IC8vIG5hbWVzcGFjZQorCitBQlNMX0ZMQUcoaW50LCB0ZXN0X2ZsYWdfMTIsIEdldERmbHQxKCks
ICJ0ZXN0IGZsYWcgMTIiKTsKK0FCU0xfRkxBRyhzdGQ6OnN0cmluZywgdGVzdF9mbGFnXzEzLCBh
YnNsOjpTdHJDYXQoIkFBQSIsICJCQkIiKSwKKyAgICAgICAgICAidGVzdCBmbGFnIDEzIik7CisK
K25hbWVzcGFjZSB7CisKK1RFU1QoRmxhZ1Rlc3QsIFRlc3ROb25Db25zdGV4cHJEZWZhdWx0KSB7
CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18xMiksIDEpOworICBF
WFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMTMpLCAiQUFBQkJCIik7Cit9
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK30gIC8vIG5hbWVzcGFjZQorCitBQlNMX0ZMQUcoYm9vbCwg
dGVzdF9mbGFnXzE0LCB0cnVlLCBhYnNsOjpTdHJDYXQoInRlc3QgIiwgImZsYWcgIiwgIjE0Iikp
OworCituYW1lc3BhY2UgeworCisjaWYgIUFCU0xfRkxBR1NfU1RSSVBfSEVMUAorVEVTVChGbGFn
VGVzdCwgVGVzdE5vbkNvbnN0ZXhwckhlbHApIHsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxh
Z18xNC5IZWxwKCksICJ0ZXN0IGZsYWcgMTQiKTsKK30KKyNlbmRpZiAgLy8hIEFCU0xfRkxBR1Nf
U1RSSVBfSEVMUAorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgY2JfdGVzdF92YWx1ZSA9IC0xOwor
dm9pZCBUZXN0RmxhZ0NCKCk7CisKK30gIC8vIG5hbWVzcGFjZQorCitBQlNMX0ZMQUcoaW50LCB0
ZXN0X2ZsYWdfd2l0aF9jYiwgMTAwLCAiIikuT25VcGRhdGUoVGVzdEZsYWdDQik7CisKK0FCU0xf
RkxBRyhpbnQsIHRlc3RfZmxhZ193aXRoX2xhbWJkYV9jYiwgMjAwLCAiIikuT25VcGRhdGUoW10o
KSB7CisgIGNiX3Rlc3RfdmFsdWUgPSBhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ193aXRo
X2xhbWJkYV9jYikgKworICAgICAgICAgICAgICAgICAgYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0
X2ZsYWdfd2l0aF9jYik7Cit9KTsKKworbmFtZXNwYWNlIHsKKwordm9pZCBUZXN0RmxhZ0NCKCkg
eyBjYl90ZXN0X3ZhbHVlID0gYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfd2l0aF9jYik7
IH0KKworLy8gVGVzdHMgc2lkZS1lZmZlY3RzIG9mIGNhbGxiYWNrIGludm9jYXRpb24uCitURVNU
KEZsYWdUZXN0LCBDYWxsYmFja0ludm9jYXRpb24pIHsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZs
YWcoRkxBR1NfdGVzdF9mbGFnX3dpdGhfY2IpLCAxMDApOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0
RmxhZyhGTEFHU190ZXN0X2ZsYWdfd2l0aF9sYW1iZGFfY2IpLCAyMDApOworICBFWFBFQ1RfRVEo
Y2JfdGVzdF92YWx1ZSwgMzAwKTsKKworICBhYnNsOjpTZXRGbGFnKCZGTEFHU190ZXN0X2ZsYWdf
d2l0aF9jYiwgMSk7CisgIEVYUEVDVF9FUShjYl90ZXN0X3ZhbHVlLCAxKTsKKworICBhYnNsOjpT
ZXRGbGFnKCZGTEFHU190ZXN0X2ZsYWdfd2l0aF9sYW1iZGFfY2IsIDMpOworICBFWFBFQ1RfRVEo
Y2JfdGVzdF92YWx1ZSwgNCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0cnVjdCBDdXN0b21V
RFQgeworICBDdXN0b21VRFQoKSA6IGEoMSksIGIoMSkge30KKyAgQ3VzdG9tVURUKGludCBhXywg
aW50IGJfKSA6IGEoYV8pLCBiKGJfKSB7fQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ3VzdG9tVURUJiBmMSwgY29uc3QgQ3VzdG9tVURUJiBmMikgeworICAgIHJldHVybiBmMS5h
ID09IGYyLmEgJiYgZjEuYiA9PSBmMi5iOworICB9CisKKyAgaW50IGE7CisgIGludCBiOworfTsK
K2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyBpbiwgQ3VzdG9tVURUKiBmLCBz
dGQ6OnN0cmluZyopIHsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IHBhcnRzID0K
KyAgICAgIGFic2w6OlN0clNwbGl0KGluLCAnOicsIGFic2w6OlNraXBXaGl0ZXNwYWNlKCkpOwor
CisgIGlmIChwYXJ0cy5zaXplKCkgIT0gMikgcmV0dXJuIGZhbHNlOworCisgIGlmICghYWJzbDo6
U2ltcGxlQXRvaShwYXJ0c1swXSwgJmYtPmEpKSByZXR1cm4gZmFsc2U7CisKKyAgaWYgKCFhYnNs
OjpTaW1wbGVBdG9pKHBhcnRzWzFdLCAmZi0+YikpIHJldHVybiBmYWxzZTsKKworICByZXR1cm4g
dHJ1ZTsKK30KK3N0ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxhZyhjb25zdCBDdXN0b21VRFQmIGYp
IHsKKyAgcmV0dXJuIGFic2w6OlN0ckNhdChmLmEsICI6IiwgZi5iKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKK0FCU0xfRkxBRyhDdXN0b21VRFQsIHRlc3RfZmxhZ18xNSwgQ3VzdG9tVURUKCks
ICJ0ZXN0IGZsYWcgMTUiKTsKKworbmFtZXNwYWNlIHsKKworVEVTVChGbGFnVGVzdCwgVGVzdEN1
c3RvbVVEVCkgeworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMTUp
LCBDdXN0b21VRFQoMSwgMSkpOworICBhYnNsOjpTZXRGbGFnKCZGTEFHU190ZXN0X2ZsYWdfMTUs
IEN1c3RvbVVEVCgyLCAzKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3Rf
ZmxhZ18xNSksIEN1c3RvbVVEVCgyLCAzKSk7Cit9CisKKy8vIE1TVkMgcHJvZHVjZXMgbGluayBl
cnJvciBvbiB0aGUgdHlwZSBtaXNtYXRjaC4KKy8vIExpbnV4IGRvZXMgbm90IGhhdmUgYnVpbGQg
ZXJyb3JzIGFuZCB2YWxpZGF0aW9ucyB3b3JrIGFzIGV4cGVjdGVkLgorI2lmIDAgIC8vICFkZWZp
bmVkKF9XSU4zMikgJiYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworVEVTVChGbGFndGVzdCwgVGVz
dFR5cGVNaXNtYXRjaFZhbGlkYXRpb25zKSB7CisgIC8vIEZvciBidWlsdGluIHR5cGVzLCBHZXRG
bGFnKCkgb25seSBkb2VzIHZhbGlkYXRpb24gaW4gZGVidWcgbW9kZS4KKyAgRVhQRUNUX0RFQlVH
X0RFQVRIKAorICAgICAgYWJzbDo6R2V0RmxhZyhGTEFHU19taXN0eXBlZF9pbnRfZmxhZyksCisg
ICAgICAiRmxhZyAnbWlzdHlwZWRfaW50X2ZsYWcnIGlzIGRlZmluZWQgYXMgb25lIHR5cGUgYW5k
IGRlY2xhcmVkICIKKyAgICAgICJhcyBhbm90aGVyIik7CisgIEVYUEVDVF9ERUFUSChhYnNsOjpT
ZXRGbGFnKCZGTEFHU19taXN0eXBlZF9pbnRfZmxhZywgMCksCisgICAgICAgICAgICAgICAiRmxh
ZyAnbWlzdHlwZWRfaW50X2ZsYWcnIGlzIGRlZmluZWQgYXMgb25lIHR5cGUgYW5kIGRlY2xhcmVk
ICIKKyAgICAgICAgICAgICAgICJhcyBhbm90aGVyIik7CisKKyAgRVhQRUNUX0RFQVRIKGFic2w6
OkdldEZsYWcoRkxBR1NfbWlzdHlwZWRfc3RyaW5nX2ZsYWcpLAorICAgICAgICAgICAgICAgIkZs
YWcgJ21pc3R5cGVkX3N0cmluZ19mbGFnJyBpcyBkZWZpbmVkIGFzIG9uZSB0eXBlIGFuZCAiCisg
ICAgICAgICAgICAgICAiZGVjbGFyZWQgYXMgYW5vdGhlciIpOworICBFWFBFQ1RfREVBVEgoCisg
ICAgICBhYnNsOjpTZXRGbGFnKCZGTEFHU19taXN0eXBlZF9zdHJpbmdfZmxhZywgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+e30pLAorICAgICAgIkZsYWcgJ21pc3R5cGVkX3N0cmluZ19mbGFnJyBp
cyBkZWZpbmVkIGFzIG9uZSB0eXBlIGFuZCBkZWNsYXJlZCBhcyAiCisgICAgICAiYW5vdGhlciIp
OworfQorCisjZW5kaWYKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQSBjb250cml2ZWQgdHlwZSB0
aGF0IG9mZmVycyBpbXBsaWNpdCBhbmQgZXhwbGljaXQgY29udmVyc2lvbiBmcm9tIHNwZWNpZmlj
CisvLyBzb3VyY2UgdHlwZXMuCitzdHJ1Y3QgQ29udmVyc2lvblRlc3RWYWwgeworICBDb252ZXJz
aW9uVGVzdFZhbCgpID0gZGVmYXVsdDsKKyAgZXhwbGljaXQgQ29udmVyc2lvblRlc3RWYWwoaW50
IGFfaW4pIDogYShhX2luKSB7fQorCisgIGVudW0gY2xhc3MgVmlhSW1wbGljaXRDb252IHsga1Rl
biA9IDEwLCBrRWxldmVuIH07CisgIC8vIE5PTElOVE5FWFRMSU5FCisgIENvbnZlcnNpb25UZXN0
VmFsKFZpYUltcGxpY2l0Q29udiBmcm9tKSA6IGEoc3RhdGljX2Nhc3Q8aW50Pihmcm9tKSkge30K
KworICBpbnQgYTsKK307CisKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyBp
biwgQ29udmVyc2lvblRlc3RWYWwqIHZhbF9vdXQsCisgICAgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmcqKSB7CisgIGlmICghYWJzbDo6U2ltcGxlQXRvaShpbiwgJnZhbF9vdXQtPmEpKSB7Cisg
ICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQorc3RkOjpzdHJpbmcgQWJz
bFVucGFyc2VGbGFnKGNvbnN0IENvbnZlcnNpb25UZXN0VmFsJiB2YWwpIHsKKyAgcmV0dXJuIGFi
c2w6OlN0ckNhdCh2YWwuYSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCisvLyBGbGFnIGRlZmF1
bHQgdmFsdWVzIGNhbiBiZSBzcGVjaWZpZWQgd2l0aCBhIHZhbHVlIHRoYXQgY29udmVydHMgdG8g
dGhlIGZsYWcKKy8vIHZhbHVlIHR5cGUgaW1wbGljaXRseS4KK0FCU0xfRkxBRyhDb252ZXJzaW9u
VGVzdFZhbCwgdGVzdF9mbGFnXzE2LAorICAgICAgICAgIENvbnZlcnNpb25UZXN0VmFsOjpWaWFJ
bXBsaWNpdENvbnY6OmtUZW4sICJ0ZXN0IGZsYWcgMTYiKTsKKworbmFtZXNwYWNlIHsKKworVEVT
VChGbGFnVGVzdCwgQ2FuU2V0VmlhSW1wbGljaXRDb252ZXJzaW9uKSB7CisgIEVYUEVDVF9FUShh
YnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18xNikuYSwgMTApOworICBhYnNsOjpTZXRGbGFn
KCZGTEFHU190ZXN0X2ZsYWdfMTYsCisgICAgICAgICAgICAgICAgQ29udmVyc2lvblRlc3RWYWw6
OlZpYUltcGxpY2l0Q29udjo6a0VsZXZlbik7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZM
QUdTX3Rlc3RfZmxhZ18xNikuYSwgMTEpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdHJ1Y3Qg
Tm9uRGZsdENvbnN0cnVjdGlibGUgeworIHB1YmxpYzoKKyAgLy8gVGhpcyBjb25zdHJ1Y3RvciB0
ZXN0cyB0aGF0IHdlIGNhbiBpbml0aWFsaXplIHRoZSBmbGFnIHdpdGggaW50IHZhbHVlCisgIE5v
bkRmbHRDb25zdHJ1Y3RpYmxlKGludCBpKSA6IHZhbHVlKGkpIHt9ICAvLyBOT0xJTlQKKworICAv
LyBUaGlzIGNvbnN0cnVjdG9yIHRlc3RzIHRoYXQgd2UgY2FuJ3QgaW5pdGlhbGl6ZSB0aGUgZmxh
ZyB3aXRoIGNoYXIgdmFsdWUKKyAgLy8gYnV0IGNhbiB3aXRoIGV4cGxpY2l0bHkgY29uc3RydWN0
ZWQgTm9uRGZsdENvbnN0cnVjdGlibGUuCisgIGV4cGxpY2l0IE5vbkRmbHRDb25zdHJ1Y3RpYmxl
KGNoYXIgYykgOiB2YWx1ZSgxMDAgKyBzdGF0aWNfY2FzdDxpbnQ+KGMpKSB7fQorCisgIGludCB2
YWx1ZTsKK307CisKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyBpbiwgTm9u
RGZsdENvbnN0cnVjdGlibGUqIG5kY19vdXQsCisgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcqKSB7CisgIHJldHVybiBhYnNsOjpTaW1wbGVBdG9pKGluLCAmbmRjX291dC0+dmFsdWUpOwor
fQorc3RkOjpzdHJpbmcgQWJzbFVucGFyc2VGbGFnKGNvbnN0IE5vbkRmbHRDb25zdHJ1Y3RpYmxl
JiBuZGMpIHsKKyAgcmV0dXJuIGFic2w6OlN0ckNhdChuZGMudmFsdWUpOworfQorCit9ICAvLyBu
YW1lc3BhY2UKKworQUJTTF9GTEFHKE5vbkRmbHRDb25zdHJ1Y3RpYmxlLCBuZGNfZmxhZzEsIE5v
bkRmbHRDb25zdHJ1Y3RpYmxlKCcxJyksCisgICAgICAgICAgIkZsYWcgd2l0aCBub24gZGVmYXVs
dCBjb25zdHJ1Y3RpYmxlIHR5cGUiKTsKK0FCU0xfRkxBRyhOb25EZmx0Q29uc3RydWN0aWJsZSwg
bmRjX2ZsYWcyLCAwLAorICAgICAgICAgICJGbGFnIHdpdGggbm9uIGRlZmF1bHQgY29uc3RydWN0
aWJsZSB0eXBlIik7CisKK25hbWVzcGFjZSB7CisKK1RFU1QoRmxhZ1Rlc3QsIFRlc3ROb25EZWZh
dWx0Q29uc3RydWN0aWJsZVR5cGUpIHsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1Nf
bmRjX2ZsYWcxKS52YWx1ZSwgJzEnICsgMTAwKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWco
RkxBR1NfbmRjX2ZsYWcyKS52YWx1ZSwgMCk7CisKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfbmRj
X2ZsYWcxLCBOb25EZmx0Q29uc3RydWN0aWJsZSgnQScpKTsKKyAgYWJzbDo6U2V0RmxhZygmRkxB
R1NfbmRjX2ZsYWcyLCAyNSk7CisKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfbmRj
X2ZsYWcxKS52YWx1ZSwgJ0EnICsgMTAwKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxB
R1NfbmRjX2ZsYWcyKS52YWx1ZSwgMjUpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit9ICAvLyBu
YW1lc3BhY2UKKworQUJTTF9SRVRJUkVEX0ZMQUcoYm9vbCwgb2xkX2Jvb2xfZmxhZywgdHJ1ZSwg
Im9sZCBkZXNjciIpOworQUJTTF9SRVRJUkVEX0ZMQUcoaW50LCBvbGRfaW50X2ZsYWcsIChpbnQp
c3RkOjpzcXJ0KDEwKSwgIm9sZCBkZXNjciIpOworQUJTTF9SRVRJUkVEX0ZMQUcoc3RkOjpzdHJp
bmcsIG9sZF9zdHJfZmxhZywgIiIsIGFic2w6OlN0ckNhdCgib2xkICIsICJkZXNjciIpKTsKKwor
bmFtZXNwYWNlIHsKKworVEVTVChGbGFnVGVzdCwgVGVzdFJldGlyZWRGbGFnUmVnaXN0cmF0aW9u
KSB7CisgIGJvb2wgaXNfYm9vbCA9IGZhbHNlOworICBFWFBFQ1RfVFJVRShmbGFnczo6SXNSZXRp
cmVkRmxhZygib2xkX2Jvb2xfZmxhZyIsICZpc19ib29sKSk7CisgIEVYUEVDVF9UUlVFKGlzX2Jv
b2wpOworICBFWFBFQ1RfVFJVRShmbGFnczo6SXNSZXRpcmVkRmxhZygib2xkX2ludF9mbGFnIiwg
JmlzX2Jvb2wpKTsKKyAgRVhQRUNUX0ZBTFNFKGlzX2Jvb2wpOworICBFWFBFQ1RfVFJVRShmbGFn
czo6SXNSZXRpcmVkRmxhZygib2xkX3N0cl9mbGFnIiwgJmlzX2Jvb2wpKTsKKyAgRVhQRUNUX0ZB
TFNFKGlzX2Jvb2wpOworICBFWFBFQ1RfRkFMU0UoZmxhZ3M6OklzUmV0aXJlZEZsYWcoInNvbWVf
b3RoZXJfZmxhZyIsICZpc19ib29sKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZmxhZ3MvZmxhZ190ZXN0X2RlZnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9mbGFnX3Rlc3Rf
ZGVmcy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMzY2YzU4MDMyNzk2NzBiOTc1YTIxNjQwNDRiNjcxZGU1ZmEy
ZjM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvZmxhZ190ZXN0X2RlZnMuY2MKQEAg
LTAsMCArMSwyMiBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKworLy8gVGhpcyBmaWxlIGlzIHVzZWQgdG8gdGVzdCB0aGUgbWlzbWF0Y2ggb2YgdGhlIGZs
YWcgdHlwZSBiZXR3ZWVuIGRlZmluaXRpb24KKy8vIGFuZCBkZWNsYXJhdGlvbi4gVGhlc2UgYXJl
IGRlZmluaXRpb25zLiBmbGFnX3Rlc3QuY2MgY29udGFpbnMgZGVjbGFyYXRpb25zLgorI2luY2x1
ZGUgPHN0cmluZz4KKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ZsYWcuaCIKKworQUJTTF9GTEFHKGlu
dCwgbWlzdHlwZWRfaW50X2ZsYWcsIDAsICIiKTsKK0FCU0xfRkxBRyhzdGQ6OnN0cmluZywgbWlz
dHlwZWRfc3RyaW5nX2ZsYWcsICIiLCAiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRl
cm5hbC9jb21tYW5kbGluZWZsYWcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGlu
ZWZsYWcuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA4MDBmYzBmYjBjNDQ4YjdmNWVmZTg1MTdjNWUwMTE3ZmQw
NTBiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5l
ZmxhZy5jYwpAQCAtMCwwICsxLDQ5NCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGlu
ZWZsYWcuaCIKKworI2luY2x1ZGUgPGNhc3NlcnQ+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50
ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgi
CisjaW5jbHVkZSAiYWJzbC9mbGFncy9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3Vz
YWdlX2NvbmZpZy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVk
ZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFt
ZXNwYWNlIGZsYWdzX2ludGVybmFsIHsKKworLy8gVGhlIGhlbHAgbWVzc2FnZSBpbmRpY2F0aW5n
IHRoYXQgdGhlIGNvbW1hbmRsaW5lIGZsYWcgaGFzIGJlZW4KKy8vICdzdHJpcHBlZCcuIEl0IHdp
bGwgbm90IHNob3cgdXAgd2hlbiBkb2luZyAiLWhlbHAiIGFuZCBpdHMKKy8vIHZhcmlhbnRzLiBU
aGUgZmxhZyBpcyBzdHJpcHBlZCBpZiBBQlNMX0ZMQUdTX1NUUklQX0hFTFAgaXMgc2V0IHRvIDEK
Ky8vIGJlZm9yZSBpbmNsdWRpbmcgYWJzbC9mbGFncy9mbGFnLmgKKworLy8gVGhpcyBpcyB1c2Vk
IGJ5IHRoaXMgZmlsZSwgYW5kIGFsc28gaW4gY29tbWFuZGxpbmVmbGFnc19yZXBvcnRpbmcuY2MK
K2NvbnN0IGNoYXIga1N0cmlwcGVkRmxhZ0hlbHBbXSA9ICJcMDAxXDAwMlwwMDNcMDA0ICh1bmtu
b3duKSBcMDA0XDAwM1wwMDJcMDAxIjsKKworbmFtZXNwYWNlIHsKKworLy8gQ3VycmVudGx5IHdl
IG9ubHkgdmFsaWRhdGUgZmxhZyB2YWx1ZXMgZm9yIHVzZXItZGVmaW5lZCBmbGFnIHR5cGVzLgor
Ym9vbCBTaG91bGRWYWxpZGF0ZUZsYWdWYWx1ZShjb25zdCBDb21tYW5kTGluZUZsYWcmIGZsYWcp
IHsKKyNkZWZpbmUgRE9OVF9WQUxJREFURShUKSBcCisgIGlmIChmbGFnLklzT2ZUeXBlPFQ+KCkp
IHJldHVybiBmYWxzZTsKKyAgQUJTTF9GTEFHU19JTlRFUk5BTF9GT1JfRUFDSF9MT0NLX0ZSRUUo
RE9OVF9WQUxJREFURSkKKyAgRE9OVF9WQUxJREFURShzdGQ6OnN0cmluZykKKyAgRE9OVF9WQUxJ
REFURShzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4pCisjdW5kZWYgRE9OVF9WQUxJREFURQorCisg
IHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworYWJzbDo6TXV0ZXgqIEluaXRG
bGFnKENvbW1hbmRMaW5lRmxhZyogZmxhZykgeworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGFi
c2w6Ok11dGV4IGluaXRfbG9jayhhYnNsOjprQ29uc3RJbml0KTsKKyAgYWJzbDo6TXV0ZXgqIG11
OworCisgIHsKKyAgICBhYnNsOjpNdXRleExvY2sgbG9jaygmaW5pdF9sb2NrKTsKKworICAgIGlm
IChmbGFnLT5sb2NrcyA9PSBudWxscHRyKSB7ICAvLyBNdXN0IGluaXRpYWxpemUgTXV0ZXhlcyBm
b3IgdGhpcyBmbGFnLgorICAgICAgZmxhZy0+bG9ja3MgPSBuZXcgZmxhZ3NfaW50ZXJuYWw6OkNv
bW1hbmRMaW5lRmxhZ0xvY2tzOworICAgIH0KKworICAgIG11ID0gJmZsYWctPmxvY2tzLT5wcmlt
YXJ5X211OworICB9CisKKyAgeworICAgIGFic2w6Ok11dGV4TG9jayBsb2NrKG11KTsKKworICAg
IGlmICghZmxhZy0+cmV0aXJlZCAmJiBmbGFnLT5kZWYgPT0gbnVsbHB0cikgeworICAgICAgLy8g
TmVlZCB0byBpbml0aWFsaXplIGRlZiBhbmQgY3VyIGZpZWxkcy4KKyAgICAgIGZsYWctPmRlZiA9
ICgqZmxhZy0+bWFrZV9pbml0X3ZhbHVlKSgpOworICAgICAgZmxhZy0+Y3VyID0gQ2xvbmUoZmxh
Zy0+b3AsIGZsYWctPmRlZik7CisgICAgICBVcGRhdGVDb3B5KGZsYWcpOworICAgICAgZmxhZy0+
aW5pdGVkLnN0b3JlKHRydWUsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICAgICAgZmxh
Zy0+SW52b2tlQ2FsbGJhY2soKTsKKyAgICB9CisgIH0KKworICBmbGFnLT5pbml0ZWQuc3RvcmUo
dHJ1ZSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CisgIHJldHVybiBtdTsKK30KKworLy8g
RW5zdXJlIHRoYXQgdGhlIGxhemlseSBpbml0aWFsaXplZCBmaWVsZHMgb2YgKmZsYWcgaGF2ZSBi
ZWVuIGluaXRpYWxpemVkLAorLy8gYW5kIHJldHVybiAmZmxhZy0+bG9ja3MtPnByaW1hcnlfbXUu
CithYnNsOjpNdXRleCogQ29tbWFuZExpbmVGbGFnOjpJbml0RmxhZ0lmTmVjZXNzYXJ5KCkgY29u
c3QKKyAgICBBQlNMX0xPQ0tfUkVUVVJORUQobG9ja3MtPnByaW1hcnlfbXUpIHsKKyAgaWYgKCF0
aGlzLT5pbml0ZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSkgeworICAgIHJldHVy
biBJbml0RmxhZyhjb25zdF9jYXN0PENvbW1hbmRMaW5lRmxhZyo+KHRoaXMpKTsKKyAgfQorCisg
IC8vIEFsbCBmaWVsZHMgaW5pdGlhbGl6ZWQ7IHRoaXMtPmxvY2tzIGlzIHRoZXJlZm9yZSBzYWZl
IHRvIHJlYWQuCisgIHJldHVybiAmdGhpcy0+bG9ja3MtPnByaW1hcnlfbXU7Cit9CisKK3ZvaWQg
Q29tbWFuZExpbmVGbGFnOjpEZXN0cm95KCkgY29uc3QgeworICAvLyBWYWx1ZXMgYXJlIGhlYXAg
YWxsb2NhdGVkIGZvciByZXRpcmVkIGFuZCBBYnNlaWwgRmxhZ3MuCisgIGlmIChJc1JldGlyZWQo
KSB8fCBJc0Fic2VpbEZsYWcoKSkgeworICAgIGlmICh0aGlzLT5jdXIpIERlbGV0ZSh0aGlzLT5v
cCwgdGhpcy0+Y3VyKTsKKyAgICBpZiAodGhpcy0+ZGVmKSBEZWxldGUodGhpcy0+b3AsIHRoaXMt
PmRlZik7CisgIH0KKworICBkZWxldGUgdGhpcy0+bG9ja3M7Cit9CisKK2Jvb2wgQ29tbWFuZExp
bmVGbGFnOjpJc01vZGlmaWVkKCkgY29uc3QgeworICBhYnNsOjpNdXRleExvY2sgbChJbml0Rmxh
Z0lmTmVjZXNzYXJ5KCkpOworICByZXR1cm4gbW9kaWZpZWQ7Cit9CisKK3ZvaWQgQ29tbWFuZExp
bmVGbGFnOjpTZXRNb2RpZmllZChib29sIGlzX21vZGlmaWVkKSB7CisgIGFic2w6Ok11dGV4TG9j
ayBsKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisgIG1vZGlmaWVkID0gaXNfbW9kaWZpZWQ7Cit9
CisKK2Jvb2wgQ29tbWFuZExpbmVGbGFnOjpJc1NwZWNpZmllZE9uQ29tbWFuZExpbmUoKSBjb25z
dCB7CisgIGFic2w6Ok11dGV4TG9jayBsKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisgIHJldHVy
biBvbl9jb21tYW5kX2xpbmU7Cit9CisKK2Fic2w6OnN0cmluZ192aWV3IENvbW1hbmRMaW5lRmxh
Zzo6VHlwZW5hbWUoKSBjb25zdCB7CisgIC8vIFdlIGRvIG5vdCBzdG9yZS9yZXBvcnQgdHlwZSBp
biBBYnNlaWwgRmxhZ3MsIHNvIHRoYXQgdXNlciBkbyBub3QgcmVseSBvbiBpbgorICAvLyBhdCBy
dW50aW1lCisgIGlmIChJc0Fic2VpbEZsYWcoKSB8fCBJc1JldGlyZWQoKSkgcmV0dXJuICIiOwor
CisjZGVmaW5lIEhBTkRMRV9WMV9CVUlMVElOX1RZUEUodCkgXAorICBpZiAoSXNPZlR5cGU8dD4o
KSkgeyAgICAgICAgICAgIFwKKyAgICByZXR1cm4gI3Q7ICAgICAgICAgICAgICAgICAgICBcCisg
IH0KKworICBIQU5ETEVfVjFfQlVJTFRJTl9UWVBFKGJvb2wpOworICBIQU5ETEVfVjFfQlVJTFRJ
Tl9UWVBFKGludDMyX3QpOworICBIQU5ETEVfVjFfQlVJTFRJTl9UWVBFKGludDY0X3QpOworICBI
QU5ETEVfVjFfQlVJTFRJTl9UWVBFKHVpbnQ2NF90KTsKKyAgSEFORExFX1YxX0JVSUxUSU5fVFlQ
RShkb3VibGUpOworI3VuZGVmIEhBTkRMRV9WMV9CVUlMVElOX1RZUEUKKworICBpZiAoSXNPZlR5
cGU8c3RkOjpzdHJpbmc+KCkpIHsKKyAgICByZXR1cm4gInN0cmluZyI7CisgIH0KKworICByZXR1
cm4gIiI7Cit9CisKK3N0ZDo6c3RyaW5nIENvbW1hbmRMaW5lRmxhZzo6RmlsZW5hbWUoKSBjb25z
dCB7CisgIHJldHVybiBmbGFnc19pbnRlcm5hbDo6R2V0VXNhZ2VDb25maWcoKS5ub3JtYWxpemVf
ZmlsZW5hbWUodGhpcy0+ZmlsZW5hbWUpOworfQorCitzdGQ6OnN0cmluZyBDb21tYW5kTGluZUZs
YWc6OkRlZmF1bHRWYWx1ZSgpIGNvbnN0IHsKKyAgYWJzbDo6TXV0ZXhMb2NrIGwoSW5pdEZsYWdJ
Zk5lY2Vzc2FyeSgpKTsKKworICByZXR1cm4gVW5wYXJzZSh0aGlzLT5tYXJzaGFsbGluZ19vcCwg
dGhpcy0+ZGVmKTsKK30KKworc3RkOjpzdHJpbmcgQ29tbWFuZExpbmVGbGFnOjpDdXJyZW50VmFs
dWUoKSBjb25zdCB7CisgIGFic2w6Ok11dGV4TG9jayBsKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7
CisKKyAgcmV0dXJuIFVucGFyc2UodGhpcy0+bWFyc2hhbGxpbmdfb3AsIHRoaXMtPmN1cik7Cit9
CisKK2Jvb2wgQ29tbWFuZExpbmVGbGFnOjpIYXNWYWxpZGF0b3JGbigpIGNvbnN0IHsKKyAgYWJz
bDo6TXV0ZXhMb2NrIGwoSW5pdEZsYWdJZk5lY2Vzc2FyeSgpKTsKKworICByZXR1cm4gdGhpcy0+
dmFsaWRhdG9yICE9IG51bGxwdHI7Cit9CisKK2Jvb2wgQ29tbWFuZExpbmVGbGFnOjpTZXRWYWxp
ZGF0b3JGbihGbGFnVmFsaWRhdG9yIGZuKSB7CisgIGFic2w6Ok11dGV4TG9jayBsKEluaXRGbGFn
SWZOZWNlc3NhcnkoKSk7CisKKyAgLy8gb2sgdG8gcmVnaXN0ZXIgdGhlIHNhbWUgZnVuY3Rpb24g
b3ZlciBhbmQgb3ZlciBhZ2FpbgorICBpZiAoZm4gPT0gdGhpcy0+dmFsaWRhdG9yKSByZXR1cm4g
dHJ1ZTsKKworICAvLyBDYW4ndCBzZXQgdmFsaWRhdG9yIHRvIGEgZGlmZmVyZW50IGZ1bmN0aW9u
LCB1bmxlc3MgcmVzZXQgZmlyc3QuCisgIGlmIChmbiAhPSBudWxscHRyICYmIHRoaXMtPnZhbGlk
YXRvciAhPSBudWxscHRyKSB7CisgICAgQUJTTF9JTlRFUk5BTF9MT0coCisgICAgICAgIFdBUk5J
TkcsIGFic2w6OlN0ckNhdCgiSWdub3JpbmcgU2V0VmFsaWRhdG9yRm4oKSBmb3IgZmxhZyAnIiwg
TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIic6IHZhbGlkYXRlLWZuIGFs
cmVhZHkgcmVnaXN0ZXJlZCIpKTsKKworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHRoaXMt
PnZhbGlkYXRvciA9IGZuOworICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDb21tYW5kTGluZUZs
YWc6Okludm9rZVZhbGlkYXRvcihjb25zdCB2b2lkKiB2YWx1ZSkgY29uc3QKKyAgICBBQlNMX0VY
Q0xVU0lWRV9MT0NLU19SRVFVSVJFRCh0aGlzLT5sb2Nrcy0+cHJpbWFyeV9tdSkgeworICBpZiAo
IXRoaXMtPnZhbGlkYXRvcikgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgKHZvaWQpdmFs
dWU7CisKKyAgQUJTTF9JTlRFUk5BTF9MT0coCisgICAgICBGQVRBTCwKKyAgICAgIGFic2w6OlN0
ckNhdCgiRmxhZyAnIiwgTmFtZSgpLAorICAgICAgICAgICAgICAgICAgICInIG9mIGVuY2Fwc3Vs
YXRlZCB0eXBlIHNob3VsZCBub3QgaGF2ZSBhIHZhbGlkYXRvciIpKTsKKworICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgQ29tbWFuZExpbmVGbGFnOjpTZXRDYWxsYmFjaygKKyAgICBjb25zdCBm
bGFnc19pbnRlcm5hbDo6RmxhZ0NhbGxiYWNrIG11dGF0aW9uX2NhbGxiYWNrKSB7CisgIGFic2w6
Ok11dGV4TG9jayBsKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisKKyAgY2FsbGJhY2sgPSBtdXRh
dGlvbl9jYWxsYmFjazsKKworICBJbnZva2VDYWxsYmFjaygpOworfQorCisvLyBJZiB0aGUgZmxh
ZyBoYXMgYSBtdXRhdGlvbiBjYWxsYmFjayB0aGlzIGZ1bmN0aW9uIGludm9rZXMgaXQuIFdoaWxl
IHRoZQorLy8gY2FsbGJhY2sgaXMgYmVpbmcgaW52b2tlZCB0aGUgcHJpbWFyeSBmbGFnJ3MgbXV0
ZXggaXMgdW5sb2NrZWQgYW5kIGl0IGlzCisvLyByZS1sb2NrZWQgYmFjayBhZnRlciBjYWxsIHRv
IGNhbGxiYWNrIGlzIGNvbXBsZXRlZC4gQ2FsbGJhY2sgaW52b2NhdGlvbiBpcworLy8gZ3VhcmRl
ZCBieSBmbGFnJ3Mgc2Vjb25kYXJ5IG11dGV4IGluc3RlYWQgd2hpY2ggcHJldmVudHMgY29uY3Vy
cmVudCBjYWxsYmFjaworLy8gaW52b2NhdGlvbi4gTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlIGZv
ciBvdGhlciB0aHJlYWQgdG8gZ3JhYiB0aGUgcHJpbWFyeQorLy8gbG9jayBhbmQgdXBkYXRlIGZs
YWcncyB2YWx1ZSBhdCBhbnkgdGltZSBkdXJpbmcgdGhlIGNhbGxiYWNrIGludm9jYXRpb24uCisv
LyBUaGlzIGlzIGJ5IGRlc2lnbi4gQ2FsbGJhY2sgY2FuIGdldCBhIHZhbHVlIG9mIHRoZSBmbGFn
IGlmIG5lY2Vzc2FyeSwgYnV0IGl0CisvLyBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgdmFs
dWUgaW5pdGlhdGVkIHRoZSBjYWxsYmFjayBhbmQgaXQgYWxzbyBjYW4gYmUKKy8vIGRpZmZlcmVu
dCBieSB0aGUgdGltZSB0aGUgY2FsbGJhY2sgaW52b2NhdGlvbiBpcyBjb21wbGV0ZWQuCisvLyBS
ZXF1aXJlcyB0aGF0ICpwcmltYXJ5X2xvY2sgYmUgaGVsZCBpbiBleGNsdXNpdmUgbW9kZTsgaXQg
bWF5IGJlIHJlbGVhc2VkCisvLyBhbmQgcmVhY3F1aXJlZCBieSB0aGUgaW1wbGVtZW50YXRpb24u
Cit2b2lkIENvbW1hbmRMaW5lRmxhZzo6SW52b2tlQ2FsbGJhY2soKQorICAgIEFCU0xfRVhDTFVT
SVZFX0xPQ0tTX1JFUVVJUkVEKHRoaXMtPmxvY2tzLT5wcmltYXJ5X211KSB7CisgIGlmICghdGhp
cy0+Y2FsbGJhY2spIHJldHVybjsKKworICAvLyBUaGUgY2FsbGJhY2sgbG9jayBpcyBndWFyYW50
ZWVkIGluaXRpYWxpemVkLCBiZWNhdXNlICpsb2Nrcy0+cHJpbWFyeV9tdQorICAvLyBleGlzdHMu
CisgIGFic2w6Ok11dGV4KiBjYWxsYmFja19tdSA9ICZ0aGlzLT5sb2Nrcy0+Y2FsbGJhY2tfbXU7
CisKKyAgLy8gV2hlbiBleGVjdXRpbmcgdGhlIGNhbGxiYWNrIHdlIG5lZWQgdGhlIHByaW1hcnkg
ZmxhZydzIG11dGV4IHRvIGJlIHVubG9ja2VkCisgIC8vIHNvIHRoYXQgY2FsbGJhY2sgY2FuIHJl
dHJpZXZlIHRoZSBmbGFnJ3MgdmFsdWUuCisgIHRoaXMtPmxvY2tzLT5wcmltYXJ5X211LlVubG9j
aygpOworCisgIHsKKyAgICBhYnNsOjpNdXRleExvY2sgbG9jayhjYWxsYmFja19tdSk7CisgICAg
dGhpcy0+Y2FsbGJhY2soKTsKKyAgfQorCisgIHRoaXMtPmxvY2tzLT5wcmltYXJ5X211LkxvY2so
KTsKK30KKworLy8gQXR0ZW1wdHMgdG8gcGFyc2Ugc3VwcGxpZWQgYHZhbHVlYCBzdHJpbmcgdXNp
bmcgcGFyc2luZyByb3V0aW5lIGluIHRoZSBgZmxhZ2AKKy8vIGFyZ3VtZW50LiBJZiBwYXJzaW5n
IGlzIHN1Y2Nlc3NmdWwsIGl0IHdpbGwgdHJ5IHRvIHZhbGlkYXRlIHRoYXQgdGhlIHBhcnNlZAor
Ly8gdmFsdWUgaXMgdmFsaWQgZm9yIHRoZSBzcGVjaWZpZWQgJ2ZsYWcnLiBGaW5hbGx5IHRoaXMg
ZnVuY3Rpb24gc3RvcmVzIHRoZQorLy8gcGFyc2VkIHZhbHVlIGluICdkc3QnIGFzc3VtaW5nIGl0
IGlzIGEgcG9pbnRlciB0byB0aGUgZmxhZydzIHZhbHVlIHR5cGUuIEluCisvLyBjYXNlIGlmIGFu
eSBlcnJvciBpcyBlbmNvdW50ZXJlZCBpbiBlaXRoZXIgc3RlcCwgdGhlIGVycm9yIG1lc3NhZ2Ug
aXMgc3RvcmVkCisvLyBpbiAnZXJyJworYm9vbCBUcnlQYXJzZUxvY2tlZChDb21tYW5kTGluZUZs
YWcqIGZsYWcsIHZvaWQqIGRzdCwgYWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWUsCisgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnIpCisgICAgQUJTTF9FWENMVVNJVkVfTE9DS1NfUkVR
VUlSRUQoZmxhZy0+bG9ja3MtPnByaW1hcnlfbXUpIHsKKyAgdm9pZCogdGVudGF0aXZlX3ZhbHVl
ID0gQ2xvbmUoZmxhZy0+b3AsIGZsYWctPmRlZik7CisgIHN0ZDo6c3RyaW5nIHBhcnNlX2VycjsK
KyAgaWYgKCFQYXJzZShmbGFnLT5tYXJzaGFsbGluZ19vcCwgdmFsdWUsIHRlbnRhdGl2ZV92YWx1
ZSwgJnBhcnNlX2VycikpIHsKKyAgICBhdXRvIHR5cGVfbmFtZSA9IGZsYWctPlR5cGVuYW1lKCk7
CisgICAgYWJzbDo6c3RyaW5nX3ZpZXcgZXJyX3NlcCA9IHBhcnNlX2Vyci5lbXB0eSgpID8gIiIg
OiAiOyAiOworICAgIGFic2w6OnN0cmluZ192aWV3IHR5cGVuYW1lX3NlcCA9IHR5cGVfbmFtZS5l
bXB0eSgpID8gIiIgOiAiICI7CisgICAgKmVyciA9IGFic2w6OlN0ckNhdCgiSWxsZWdhbCB2YWx1
ZSAnIiwgdmFsdWUsICInIHNwZWNpZmllZCBmb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZW5hbWVfc2VwLCB0eXBlX25hbWUsICIgZmxhZyAnIiwgZmxhZy0+TmFtZSgpLCAiJyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICBlcnJfc2VwLCBwYXJzZV9lcnIpOworICAgIERlbGV0ZShm
bGFnLT5vcCwgdGVudGF0aXZlX3ZhbHVlKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBp
ZiAoIWZsYWctPkludm9rZVZhbGlkYXRvcih0ZW50YXRpdmVfdmFsdWUpKSB7CisgICAgKmVyciA9
IGFic2w6OlN0ckNhdCgiRmFpbGVkIHZhbGlkYXRpb24gb2YgbmV3IHZhbHVlICciLAorICAgICAg
ICAgICAgICAgICAgICAgICAgVW5wYXJzZShmbGFnLT5tYXJzaGFsbGluZ19vcCwgdGVudGF0aXZl
X3ZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICInIGZvciBmbGFnICciLCBmbGFnLT5O
YW1lKCksICInIik7CisgICAgRGVsZXRlKGZsYWctPm9wLCB0ZW50YXRpdmVfdmFsdWUpOworICAg
IHJldHVybiBmYWxzZTsKKyAgfQorCisgIGZsYWctPmNvdW50ZXIrKzsKKyAgQ29weShmbGFnLT5v
cCwgdGVudGF0aXZlX3ZhbHVlLCBkc3QpOworICBEZWxldGUoZmxhZy0+b3AsIHRlbnRhdGl2ZV92
YWx1ZSk7CisgIHJldHVybiB0cnVlOworfQorCisvLyBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxh
ZyBiYXNlZCBvbiBzcGVjaWZpZWQgc3RyaW5nIGB2YWx1ZWAuIElmIHRoZSBmbGFnCisvLyB3YXMg
c3VjY2Vzc2Z1bGx5IHNldCB0byBuZXcgdmFsdWUsIGl0IHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNl
LCBzZXRzIGBlcnJgCisvLyB0byBpbmRpY2F0ZSB0aGUgZXJyb3IsIGxlYXZlcyB0aGUgZmxhZyB1
bmNoYW5nZWQsIGFuZCByZXR1cm5zIGZhbHNlLiBUaGVyZQorLy8gYXJlIHRocmVlIHdheXMgdG8g
c2V0IHRoZSBmbGFnJ3MgdmFsdWU6CisvLyAgKiBVcGRhdGUgdGhlIGN1cnJlbnQgZmxhZyB2YWx1
ZQorLy8gICogVXBkYXRlIHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1ZQorLy8gICogVXBkYXRlIHRo
ZSBjdXJyZW50IGZsYWcgdmFsdWUgaWYgaXQgd2FzIG5ldmVyIHNldCBiZWZvcmUKKy8vIFRoZSBt
b2RlIGlzIHNlbGVjdGVkIGJhc2VkIG9uICdzZXRfbW9kZScgcGFyYW1ldGVyLgorYm9vbCBDb21t
YW5kTGluZUZsYWc6OlNldEZyb21TdHJpbmcoYWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZVNvdXJjZSBzb3VyY2Us
IHN0ZDo6c3RyaW5nKiBlcnIpIHsKKyAgaWYgKElzUmV0aXJlZCgpKSByZXR1cm4gZmFsc2U7CisK
KyAgYWJzbDo6TXV0ZXhMb2NrIGwoSW5pdEZsYWdJZk5lY2Vzc2FyeSgpKTsKKworICAvLyBEaXJl
Y3QtYWNjZXNzIGZsYWdzIGNhbiBiZSBtb2RpZmllZCB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhl
CisgIC8vIGZsYWcgQVBJLiBEZXRlY3Qgc3VjaCBjaGFuZ2VzIGFuZCB1cGRhdGUgdGhlIGZsYWct
Pm1vZGlmaWVkIGJpdC4KKyAgaWYgKCFJc0Fic2VpbEZsYWcoKSkgeworICAgIGlmICghdGhpcy0+
bW9kaWZpZWQgJiYgQ2hhbmdlZERpcmVjdGx5KHRoaXMsIHRoaXMtPmN1ciwgdGhpcy0+ZGVmKSkg
eworICAgICAgdGhpcy0+bW9kaWZpZWQgPSB0cnVlOworICAgIH0KKyAgfQorCisgIHN3aXRjaCAo
c2V0X21vZGUpIHsKKyAgICBjYXNlIFNFVF9GTEFHU19WQUxVRTogeworICAgICAgLy8gc2V0IG9y
IG1vZGlmeSB0aGUgZmxhZydzIHZhbHVlCisgICAgICBpZiAoIVRyeVBhcnNlTG9ja2VkKHRoaXMs
IHRoaXMtPmN1ciwgdmFsdWUsIGVycikpIHJldHVybiBmYWxzZTsKKyAgICAgIHRoaXMtPm1vZGlm
aWVkID0gdHJ1ZTsKKyAgICAgIFVwZGF0ZUNvcHkodGhpcyk7CisgICAgICBJbnZva2VDYWxsYmFj
aygpOworCisgICAgICBpZiAoc291cmNlID09IGtDb21tYW5kTGluZSkgeworICAgICAgICB0aGlz
LT5vbl9jb21tYW5kX2xpbmUgPSB0cnVlOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgU0VUX0ZMQUdfSUZfREVGQVVMVDogeworICAgICAgLy8gc2V0IHRoZSBmbGFnJ3Mg
dmFsdWUsIGJ1dCBvbmx5IGlmIGl0IGhhc24ndCBiZWVuIHNldCBieSBzb21lb25lIGVsc2UKKyAg
ICAgIGlmICghdGhpcy0+bW9kaWZpZWQpIHsKKyAgICAgICAgaWYgKCFUcnlQYXJzZUxvY2tlZCh0
aGlzLCB0aGlzLT5jdXIsIHZhbHVlLCBlcnIpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIHRoaXMt
Pm1vZGlmaWVkID0gdHJ1ZTsKKyAgICAgICAgVXBkYXRlQ29weSh0aGlzKTsKKyAgICAgICAgSW52
b2tlQ2FsbGJhY2soKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRPRE8ocm9nZWVmZik6
IHJldmlldyBhbmQgZml4IHRoaXMgc2VtYW50aWMuIEN1cnJlbnRseSB3ZSBkbyBub3QgZmFpbAor
ICAgICAgICAvLyBpbiB0aGlzIGNhc2UgaWYgZmxhZyBpcyBtb2RpZmllZC4gVGhpcyBpcyBtaXNs
ZWFkaW5nIHNpbmNlIHRoZSBmbGFnJ3MKKyAgICAgICAgLy8gdmFsdWUgaXMgbm90IHVwZGF0ZWQg
ZXZlbiB0aG91Z2ggd2UgcmV0dXJuIHRydWUuCisgICAgICAgIC8vICplcnIgPSBhYnNsOjpTdHJD
YXQodGhpcy0+TmFtZSgpLCAiIGlzIGFscmVhZHkgc2V0IHRvICIsCisgICAgICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgQ3VycmVudFZhbHVlKCksICJcbiIpOworICAgICAgICAvLyByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgU0VUX0ZMQUdTX0RFRkFVTFQ6IHsKKyAgICAgIC8vIG1vZGlmeSB0aGUgZmxh
ZydzIGRlZmF1bHQtdmFsdWUKKyAgICAgIGlmICghVHJ5UGFyc2VMb2NrZWQodGhpcywgdGhpcy0+
ZGVmLCB2YWx1ZSwgZXJyKSkgcmV0dXJuIGZhbHNlOworCisgICAgICBpZiAoIXRoaXMtPm1vZGlm
aWVkKSB7CisgICAgICAgIC8vIE5lZWQgdG8gc2V0IGJvdGggZGVmdmFsdWUgKmFuZCogY3VycmVu
dCwgaW4gdGhpcyBjYXNlCisgICAgICAgIENvcHkodGhpcy0+b3AsIHRoaXMtPmRlZiwgdGhpcy0+
Y3VyKTsKKyAgICAgICAgVXBkYXRlQ29weSh0aGlzKTsKKyAgICAgICAgSW52b2tlQ2FsbGJhY2so
KTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAv
LyB1bmtub3duIHNldF9tb2RlCisgICAgICBhc3NlcnQoZmFsc2UpOworICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCit2b2lkIENvbW1hbmRMaW5l
RmxhZzo6U3RvcmVBdG9taWMoc2l6ZV90IHNpemUpIHsKKyAgaW50NjRfdCB0ID0gMDsKKyAgYXNz
ZXJ0KHNpemUgPD0gc2l6ZW9mKGludDY0X3QpKTsKKyAgbWVtY3B5KCZ0LCB0aGlzLT5jdXIsIHNp
emUpOworICB0aGlzLT5hdG9taWMuc3RvcmUodCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7
Cit9CisKK3ZvaWQgQ29tbWFuZExpbmVGbGFnOjpDaGVja0RlZmF1bHRWYWx1ZVBhcnNpbmdSb3Vu
ZHRyaXAoKSBjb25zdCB7CisgIHN0ZDo6c3RyaW5nIHYgPSBEZWZhdWx0VmFsdWUoKTsKKworICBh
YnNsOjpNdXRleExvY2sgbG9jayhJbml0RmxhZ0lmTmVjZXNzYXJ5KCkpOworCisgIHZvaWQqIGRz
dCA9IENsb25lKHRoaXMtPm9wLCB0aGlzLT5kZWYpOworICBzdGQ6OnN0cmluZyBlcnJvcjsKKyAg
aWYgKCFmbGFnc19pbnRlcm5hbDo6UGFyc2UodGhpcy0+bWFyc2hhbGxpbmdfb3AsIHYsIGRzdCwg
JmVycm9yKSkgeworICAgIEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAgICBGQVRBTCwKKyAgICAg
ICAgYWJzbDo6U3RyQ2F0KCJGbGFnICIsIE5hbWUoKSwgIiAoZnJvbSAiLCBGaWxlbmFtZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgIik6IHN0ZDo6c3RyaW5nIGZvcm0gb2YgZGVmYXVsdCB2YWx1
ZSAnIiwgdiwKKyAgICAgICAgICAgICAgICAgICAgICInIGNvdWxkIG5vdCBiZSBwYXJzZWQ7IGVy
cm9yPSIsIGVycm9yKSk7CisgIH0KKworICAvLyBXZSBkbyBub3QgY29tcGFyZSBkc3QgdG8gZGVm
IHNpbmNlIHBhcnNpbmcvdW5wYXJzaW5nIG1heSBtYWtlCisgIC8vIHNtYWxsIGNoYW5nZXMsIGUu
Zy4sIHByZWNpc2lvbiBsb3NzIGZvciBmbG9hdGluZyBwb2ludCB0eXBlcy4KKyAgRGVsZXRlKHRo
aXMtPm9wLCBkc3QpOworfQorCitib29sIENvbW1hbmRMaW5lRmxhZzo6VmFsaWRhdGVEZWZhdWx0
VmFsdWUoKSBjb25zdCB7CisgIGFic2w6Ok11dGV4TG9jayBsb2NrKEluaXRGbGFnSWZOZWNlc3Nh
cnkoKSk7CisgIHJldHVybiBJbnZva2VWYWxpZGF0b3IodGhpcy0+ZGVmKTsKK30KKworYm9vbCBD
b21tYW5kTGluZUZsYWc6OlZhbGlkYXRlSW5wdXRWYWx1ZShhYnNsOjpzdHJpbmdfdmlldyB2YWx1
ZSkgY29uc3QgeworICBhYnNsOjpNdXRleExvY2sgbChJbml0RmxhZ0lmTmVjZXNzYXJ5KCkpOyAg
Ly8gcHJvdGVjdCBkZWZhdWx0IHZhbHVlIGFjY2VzcworCisgIHZvaWQqIG9iaiA9IENsb25lKHRo
aXMtPm9wLCB0aGlzLT5kZWYpOworICBzdGQ6OnN0cmluZyBpZ25vcmVkX2Vycm9yOworICBjb25z
dCBib29sIHJlc3VsdCA9CisgICAgICBmbGFnc19pbnRlcm5hbDo6UGFyc2UodGhpcy0+bWFyc2hh
bGxpbmdfb3AsIHZhbHVlLCBvYmosICZpZ25vcmVkX2Vycm9yKSAmJgorICAgICAgSW52b2tlVmFs
aWRhdG9yKG9iaik7CisgIERlbGV0ZSh0aGlzLT5vcCwgb2JqKTsKKyAgcmV0dXJuIHJlc3VsdDsK
K30KKworY29uc3QgaW50NjRfdCBDb21tYW5kTGluZUZsYWc6OmtBdG9taWNJbml0OworCit2b2lk
IENvbW1hbmRMaW5lRmxhZzo6UmVhZCh2b2lkKiBkc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBmbGFnc19pbnRlcm5hbDo6RmxhZ09wRm4gZHN0X29wKSBjb25zdCB7CisgIGFi
c2w6OlJlYWRlck11dGV4TG9jayBsKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisKKyAgLy8gYGRz
dF9vcGAgaXMgdGhlIHVubWFyc2hhbGluZyBvcGVyYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGUg
ZGVjbGFyYXRpb24KKyAgLy8gdmlzaWJpbGUgYXQgdGhlIGNhbGwgc2l0ZS4gYG9wYCBpcyB0aGUg
RmxhZydzIGRlZmluZWQgdW5tYXJzaGFsbGluZworICAvLyBvcGVyYXRpb24uIFRoZXkgbXVzdCBt
YXRjaCBmb3IgdGhpcyBvcGVyYXRpb24gdG8gYmUgd2VsbC1kZWZpbmVkLgorICBpZiAoQUJTTF9Q
UkVESUNUX0ZBTFNFKGRzdF9vcCAhPSBvcCkpIHsKKyAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAg
ICAgICAgRVJST1IsCisgICAgICAgIGFic2w6OlN0ckNhdCgiRmxhZyAnIiwgbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICInIGlzIGRlZmluZWQgYXMgb25lIHR5cGUgYW5kIGRlY2xhcmVkIGFz
IGFub3RoZXIiKSk7CisgIH0KKyAgQ29weUNvbnN0cnVjdChvcCwgY3VyLCBkc3QpOworfQorCit2
b2lkIENvbW1hbmRMaW5lRmxhZzo6V3JpdGUoY29uc3Qgdm9pZCogc3JjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGZsYWdzX2ludGVybmFsOjpGbGFnT3BGbiBzcmNfb3ApIHsK
KyAgYWJzbDo6TXV0ZXhMb2NrIGwoSW5pdEZsYWdJZk5lY2Vzc2FyeSgpKTsKKworICAvLyBgc3Jj
X29wYCBpcyB0aGUgbWFyc2hhbGxpbmcgb3BlcmF0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRl
Y2xhcmF0aW9uCisgIC8vIHZpc2libGUgYXQgdGhlIGNhbGwgc2l0ZS4gYG9wYCBpcyB0aGUgRmxh
ZydzIGRlZmluZWQgbWFyc2hhbGxpbmcgb3BlcmF0aW9uLgorICAvLyBUaGV5IG11c3QgbWF0Y2gg
Zm9yIHRoaXMgb3BlcmF0aW9uIHRvIGJlIHdlbGwtZGVmaW5lZC4KKyAgaWYgKEFCU0xfUFJFRElD
VF9GQUxTRShzcmNfb3AgIT0gb3ApKSB7CisgICAgQUJTTF9JTlRFUk5BTF9MT0coCisgICAgICAg
IEVSUk9SLAorICAgICAgICBhYnNsOjpTdHJDYXQoIkZsYWcgJyIsIG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAiJyBpcyBkZWZpbmVkIGFzIG9uZSB0eXBlIGFuZCBkZWNsYXJlZCBhcyBhbm90
aGVyIikpOworICB9CisKKyAgaWYgKFNob3VsZFZhbGlkYXRlRmxhZ1ZhbHVlKCp0aGlzKSkgewor
ICAgIHZvaWQqIG9iaiA9IENsb25lKG9wLCBzcmMpOworICAgIHN0ZDo6c3RyaW5nIGlnbm9yZWRf
ZXJyb3I7CisgICAgc3RkOjpzdHJpbmcgc3JjX2FzX3N0ciA9IFVucGFyc2UobWFyc2hhbGxpbmdf
b3AsIHNyYyk7CisgICAgaWYgKCFQYXJzZShtYXJzaGFsbGluZ19vcCwgc3JjX2FzX3N0ciwgb2Jq
LCAmaWdub3JlZF9lcnJvcikgfHwKKyAgICAgICAgIUludm9rZVZhbGlkYXRvcihvYmopKSB7Cisg
ICAgICBBQlNMX0lOVEVSTkFMX0xPRyhFUlJPUiwgYWJzbDo6U3RyQ2F0KCJBdHRlbXB0IHRvIHNl
dCBmbGFnICciLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiJyB0byBpbnZhbGlkIHZhbHVlICIsIHNyY19hc19zdHIpKTsKKyAgICB9CisgICAgRGVs
ZXRlKG9wLCBvYmopOworICB9CisKKyAgbW9kaWZpZWQgPSB0cnVlOworICBjb3VudGVyKys7Cisg
IENvcHkob3AsIHNyYywgY3VyKTsKKworICBVcGRhdGVDb3B5KHRoaXMpOworICBJbnZva2VDYWxs
YmFjaygpOworfQorCitzdGQ6OnN0cmluZyBIZWxwVGV4dDo6R2V0SGVscFRleHQoKSBjb25zdCB7
CisgIGlmIChoZWxwX2Z1bmN0aW9uXykgcmV0dXJuIGhlbHBfZnVuY3Rpb25fKCk7CisgIGlmICho
ZWxwX21lc3NhZ2VfKSByZXR1cm4gaGVscF9tZXNzYWdlXzsKKworICByZXR1cm4ge307Cit9CisK
Ky8vIFVwZGF0ZSBhbnkgY29weSBvZiB0aGUgZmxhZyB2YWx1ZSB0aGF0IGlzIHN0b3JlZCBpbiBh
biBhdG9taWMgd29yZC4KKy8vIEluIGFkZGl0aW9uIGlmIGZsYWcgaGFzIGEgbXV0YXRpb24gY2Fs
bGJhY2sgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGl0Lgordm9pZCBVcGRhdGVDb3B5KENvbW1hbmRM
aW5lRmxhZyogZmxhZykgeworI2RlZmluZSBTVE9SRV9BVE9NSUMoVCkgICAgICAgICAgIFwKKyAg
ZWxzZSBpZiAoZmxhZy0+SXNPZlR5cGU8VD4oKSkgeyBcCisgICAgZmxhZy0+U3RvcmVBdG9taWMo
c2l6ZW9mKFQpKTsgXAorICB9CisKKyAgaWYgKGZhbHNlKSB7CisgIH0KKyAgQUJTTF9GTEFHU19J
TlRFUk5BTF9GT1JfRUFDSF9MT0NLX0ZSRUUoU1RPUkVfQVRPTUlDKQorI3VuZGVmIFNUT1JFX0FU
T01JQworfQorCisvLyBSZXR1cm4gdHJ1ZSBpZmYgZmxhZyB2YWx1ZSB3YXMgY2hhbmdlZCB2aWEg
ZGlyZWN0LWFjY2Vzcy4KK2Jvb2wgQ2hhbmdlZERpcmVjdGx5KENvbW1hbmRMaW5lRmxhZyogZmxh
ZywgY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYikgeworICBpZiAoIWZsYWctPklzQWJzZWls
RmxhZygpKSB7CisvLyBOZWVkIHRvIGNvbXBhcmUgdmFsdWVzIGZvciBkaXJlY3QtYWNjZXNzIGZs
YWdzLgorI2RlZmluZSBDSEFOR0VEX0ZPUl9UWVBFKFQpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmIChmbGFnLT5Jc09mVHlwZTxUPigpKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGEpICE9ICpyZWludGVycHJldF9jYXN0
PGNvbnN0IFQqPihiKTsgXAorICB9CisKKyAgICBDSEFOR0VEX0ZPUl9UWVBFKGJvb2wpOworICAg
IENIQU5HRURfRk9SX1RZUEUoaW50MzJfdCk7CisgICAgQ0hBTkdFRF9GT1JfVFlQRShpbnQ2NF90
KTsKKyAgICBDSEFOR0VEX0ZPUl9UWVBFKHVpbnQ2NF90KTsKKyAgICBDSEFOR0VEX0ZPUl9UWVBF
KGRvdWJsZSk7CisgICAgQ0hBTkdFRF9GT1JfVFlQRShzdGQ6OnN0cmluZyk7CisjdW5kZWYgQ0hB
TkdFRF9GT1JfVFlQRQorICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgZmxhZ3NfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGluZWZsYWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFs
L2NvbW1hbmRsaW5lZmxhZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MjQ0M2E3NzYwZTg5YWE2NDQwZTE3NmRk
MTljYTEzNWRjMzgwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9j
b21tYW5kbGluZWZsYWcuaApAQCAtMCwwICsxLDM4MyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE5
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfRkxBR1NfSU5URVJOQUxfQ09N
TUFORExJTkVGTEFHX0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfSU5URVJOQUxfQ09NTUFORExJTkVG
TEFHX0hfCisKKyNpbmNsdWRlIDxhdG9taWM+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9z
LmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9tYXJzaGFsbGluZy5oIgorI2luY2x1ZGUgImFic2wv
c3luY2hyb25pemF0aW9uL211dGV4LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworCisvLyBU
eXBlLXNwZWNpZmljIG9wZXJhdGlvbnMsIGVnLiwgcGFyc2luZywgY29weWluZywgZXRjLiBhcmUg
cHJvdmlkZWQKKy8vIGJ5IGZ1bmN0aW9uIHNwZWNpZmljIHRvIHRoYXQgdHlwZSB3aXRoIGEgc2ln
bmF0dXJlIG1hdGNoaW5nIEZsYWdPcEZuLgorZW51bSBGbGFnT3AgeworICBrRGVsZXRlLAorICBr
Q2xvbmUsCisgIGtDb3B5LAorICBrQ29weUNvbnN0cnVjdCwKKyAga1NpemVvZiwKKyAga1BhcnNl
LAorICBrVW5wYXJzZQorfTsKK3VzaW5nIEZsYWdPcEZuID0gdm9pZCogKCopKEZsYWdPcCwgY29u
c3Qgdm9pZCosIHZvaWQqKTsKK3VzaW5nIEZsYWdNYXJzaGFsbGluZ09wRm4gPSB2b2lkKiAoKiko
RmxhZ09wLCBjb25zdCB2b2lkKiwgdm9pZCosIHZvaWQqKTsKKworLy8gT3B0aW9ucyB0aGF0IGNv
bnRyb2wgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZS4KK2VudW0gRmxhZ1NldHRpbmdNb2Rl
IHsKKyAgLy8gdXBkYXRlIHRoZSBmbGFnJ3MgdmFsdWUgdW5jb25kaXRpb25hbGx5IChjYW4gY2Fs
bCB0aGlzIG11bHRpcGxlIHRpbWVzKS4KKyAgU0VUX0ZMQUdTX1ZBTFVFLAorICAvLyB1cGRhdGUg
dGhlIGZsYWcncyB2YWx1ZSwgYnV0ICpvbmx5IGlmKiBpdCBoYXMgbm90IHlldCBiZWVuIHVwZGF0
ZWQKKyAgLy8gd2l0aCBTRVRfRkxBR1NfVkFMVUUsIFNFVF9GTEFHX0lGX0RFRkFVTFQsIG9yICJG
TEFHU194eHggPSBub25kZWYiLgorICBTRVRfRkxBR19JRl9ERUZBVUxULAorICAvLyBzZXQgdGhl
IGZsYWcncyBkZWZhdWx0IHZhbHVlIHRvIHRoaXMuICBJZiB0aGUgZmxhZyBoYXMgbm90IGJlZW4g
dXBkYXRlZAorICAvLyB5ZXQgKHZpYSBTRVRfRkxBR1NfVkFMVUUsIFNFVF9GTEFHX0lGX0RFRkFV
TFQsIG9yICJGTEFHU194eHggPSBub25kZWYiKQorICAvLyBjaGFuZ2UgdGhlIGZsYWcncyBjdXJy
ZW50IHZhbHVlIHRvIHRoZSBuZXcgZGVmYXVsdCB2YWx1ZSBhcyB3ZWxsLgorICBTRVRfRkxBR1Nf
REVGQVVMVAorfTsKKworLy8gT3B0aW9ucyB0aGF0IGNvbnRyb2wgU2V0RnJvbVN0cmluZzogU291
cmNlIG9mIGEgdmFsdWUuCitlbnVtIFZhbHVlU291cmNlIHsKKyAgLy8gRmxhZyBpcyBiZWluZyBz
ZXQgYnkgdmFsdWUgc3BlY2lmaWVkIG9uIGEgY29tbWFuZCBsaW5lLgorICBrQ29tbWFuZExpbmUs
CisgIC8vIEZsYWcgaXMgYmVpbmcgc2V0IGJ5IHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgY29kZS4K
KyAga1Byb2dyYW1tYXRpY0NoYW5nZSwKK307CisKKy8vIFNpZ25hdHVyZSBmb3IgdGhlIGhlbHAg
Z2VuZXJhdGlvbiBmdW5jdGlvbiB1c2VkIGFzIGFuIGFyZ3VtZW50IGZvciB0aGUKKy8vIGFic2w6
OkZsYWcgY29uc3RydWN0b3IuCit1c2luZyBIZWxwR2VuRnVuYyA9IHN0ZDo6c3RyaW5nICgqKSgp
OworCisvLyBTaWduYXR1cmUgZm9yIHRoZSBmdW5jdGlvbiBnZW5lcmF0aW5nIHRoZSBpbml0aWFs
IGZsYWcgdmFsdWUgYmFzZWQgKHVzdWFsbHkKKy8vIGJhc2VkIG9uIGRlZmF1bHQgdmFsdWUgc3Vw
cGxpZWQgaW4gZmxhZydzIGRlZmluaXRpb24pCit1c2luZyBJbml0aWFsVmFsR2VuRnVuYyA9IHZv
aWQqICgqKSgpOworCitzdHJ1Y3QgQ29tbWFuZExpbmVGbGFnSW5mbzsKKworLy8gU2lnbmF0dXJl
IGZvciB0aGUgbXV0YXRpb24gY2FsbGJhY2sgdXNlZCBieSB3YXRjaGVkIEZsYWdzCisvLyBUaGUg
Y2FsbGJhY2sgaXMgbm9leGNlcHQuCisvLyBUT0RPKHJvZ2VlZmYpOiBhZGQgbm9leGNlcHQgYWZ0
ZXIgQysrMTcgc3VwcG9ydCBpcyBhZGRlZC4KK3VzaW5nIEZsYWdDYWxsYmFjayA9IHZvaWQgKCop
KCk7CisKK3VzaW5nIEZsYWdWYWxpZGF0b3IgPSBib29sICgqKSgpOworCitleHRlcm4gY29uc3Qg
Y2hhciBrU3RyaXBwZWRGbGFnSGVscFtdOworCisvLyBUaGUgcGVyLXR5cGUgZnVuY3Rpb24KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCogRmxhZ09wcyhGbGFnT3Agb3AsIGNvbnN0IHZvaWQq
IHYxLCB2b2lkKiB2MikgeworICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBrRGVsZXRlOgorICAg
ICAgZGVsZXRlIHN0YXRpY19jYXN0PGNvbnN0IFQqPih2MSk7CisgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBjYXNlIGtDbG9uZToKKyAgICAgIHJldHVybiBuZXcgVCgqc3RhdGljX2Nhc3Q8Y29u
c3QgVCo+KHYxKSk7CisgICAgY2FzZSBrQ29weToKKyAgICAgICpzdGF0aWNfY2FzdDxUKj4odjIp
ID0gKnN0YXRpY19jYXN0PGNvbnN0IFQqPih2MSk7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBjYXNlIGtDb3B5Q29uc3RydWN0OgorICAgICAgbmV3ICh2MikgVCgqc3RhdGljX2Nhc3Q8Y29u
c3QgVCo+KHYxKSk7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIGtTaXplb2Y6Cisg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2l6ZW9mKFQpKTsKKyAgICBkZWZh
dWx0OgorICAgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Cit2b2lkKiBGbGFnTWFyc2hhbGxpbmdPcHMoRmxhZ09wIG9wLCBjb25zdCB2b2lkKiB2MSwg
dm9pZCogdjIsIHZvaWQqIHYzKSB7CisgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIGtQYXJzZTog
eworICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgdGVtcG9yYXJ5IGluc3RhbmNlIG9mIHR5cGUgVCBi
YXNlZCBvbiBjdXJyZW50IHZhbHVlIGluCisgICAgICAvLyBkZXN0aW5hdGlvbiAod2hpY2ggaXMg
Z29pbmcgdG8gYmUgZmxhZydzIGRlZmF1bHQgdmFsdWUpLgorICAgICAgVCB0ZW1wKCpzdGF0aWNf
Y2FzdDxUKj4odjIpKTsKKyAgICAgIGlmICghYWJzbDo6UGFyc2VGbGFnPFQ+KCpzdGF0aWNfY2Fz
dDxjb25zdCBhYnNsOjpzdHJpbmdfdmlldyo+KHYxKSwgJnRlbXAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZyo+KHYzKSkpIHsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICB9CisgICAgICAqc3RhdGljX2Nhc3Q8VCo+KHYyKSA9IHN0
ZDo6bW92ZSh0ZW1wKTsKKyAgICAgIHJldHVybiB2MjsKKyAgICB9CisgICAgY2FzZSBrVW5wYXJz
ZToKKyAgICAgICpzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZyo+KHYyKSA9CisgICAgICAgICAgYWJz
bDo6VW5wYXJzZUZsYWc8VD4oKnN0YXRpY19jYXN0PGNvbnN0IFQqPih2MSkpOworICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBudWxscHRyOworICB9Cit9
CisKKy8vIEZ1bmN0aW9ucyB0aGF0IGludm9rZSBmbGFnLXR5cGUtc3BlY2lmaWMgb3BlcmF0aW9u
cy4KK2lubGluZSB2b2lkIERlbGV0ZShGbGFnT3BGbiBvcCwgY29uc3Qgdm9pZCogb2JqKSB7Cisg
IG9wKGZsYWdzX2ludGVybmFsOjprRGVsZXRlLCBvYmosIG51bGxwdHIpOworfQorCitpbmxpbmUg
dm9pZCogQ2xvbmUoRmxhZ09wRm4gb3AsIGNvbnN0IHZvaWQqIG9iaikgeworICByZXR1cm4gb3Ao
ZmxhZ3NfaW50ZXJuYWw6OmtDbG9uZSwgb2JqLCBudWxscHRyKTsKK30KKworaW5saW5lIHZvaWQg
Q29weShGbGFnT3BGbiBvcCwgY29uc3Qgdm9pZCogc3JjLCB2b2lkKiBkc3QpIHsKKyAgb3AoZmxh
Z3NfaW50ZXJuYWw6OmtDb3B5LCBzcmMsIGRzdCk7Cit9CisKK2lubGluZSB2b2lkIENvcHlDb25z
dHJ1Y3QoRmxhZ09wRm4gb3AsIGNvbnN0IHZvaWQqIHNyYywgdm9pZCogZHN0KSB7CisgIG9wKGZs
YWdzX2ludGVybmFsOjprQ29weUNvbnN0cnVjdCwgc3JjLCBkc3QpOworfQorCitpbmxpbmUgYm9v
bCBQYXJzZShGbGFnTWFyc2hhbGxpbmdPcEZuIG9wLCBhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCB2
b2lkKiBkc3QsCisgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJyb3IpIHsKKyAgcmV0
dXJuIG9wKGZsYWdzX2ludGVybmFsOjprUGFyc2UsICZ0ZXh0LCBkc3QsIGVycm9yKSAhPSBudWxs
cHRyOworfQorCitpbmxpbmUgc3RkOjpzdHJpbmcgVW5wYXJzZShGbGFnTWFyc2hhbGxpbmdPcEZu
IG9wLCBjb25zdCB2b2lkKiB2YWwpIHsKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworICBvcChmbGFn
c19pbnRlcm5hbDo6a1VucGFyc2UsIHZhbCwgJnJlc3VsdCwgbnVsbHB0cik7CisgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2lubGluZSBzaXplX3QgU2l6ZW9mKEZsYWdPcEZuIG9wKSB7CisgIC8vIFRo
aXMgc2VxdWVuY2Ugb2YgY2FzdHMgcmV2ZXJzZXMgdGhlIHNlcXVlbmNlIGZyb20gYmFzZTo6aW50
ZXJuYWw6OkZsYWdPcHMoKQorICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihyZWludGVycHJl
dF9jYXN0PGludHB0cl90PigKKyAgICAgIG9wKGZsYWdzX2ludGVybmFsOjprU2l6ZW9mLCBudWxs
cHRyLCBudWxscHRyKSkpOworfQorCisvLyBUaGUgZm9sbG93aW5nIHN0cnVjdCBjb250YWlucyB0
aGUgbG9ja3MgaW4gYSBDb21tYW5kTGluZUZsYWcgc3RydWN0LgorLy8gVGhleSBhcmUgaW4gYSBz
ZXBhcmF0ZSBzdHJ1Y3QgdGhhdCBpcyBsYXppbHkgYWxsb2NhdGVkIHRvIGF2b2lkIHByb2JsZW1z
CisvLyB3aXRoIHN0YXRpYyBpbml0aWFsaXphdGlvbiBhbmQgdG8gYXZvaWQgbXVsdGlwbGUgYWxs
b2NhdGlvbnMuCitzdHJ1Y3QgQ29tbWFuZExpbmVGbGFnTG9ja3MgeworICBhYnNsOjpNdXRleCBw
cmltYXJ5X211OyAgIC8vIHByb3RlY3RzIHNldmVyYWwgZmllbGRzIGluIENvbW1hbmRMaW5lRmxh
ZworICBhYnNsOjpNdXRleCBjYWxsYmFja19tdTsgIC8vIHVzZWQgdG8gc2VyaWFsaXplIGNhbGxi
YWNrcworfTsKKworLy8gSG9sZHMgZWl0aGVyIGEgcG9pbnRlciB0byBoZWxwIHRleHQgb3IgYSBm
dW5jdGlvbiB3aGljaCBwcm9kdWNlcyBpdC4gIFRoaXMgaXMKKy8vIG5lZWRlZCBmb3Igc3VwcG9y
dGluZyBib3RoIHN0YXRpYyBpbml0aWFsaXphdGlvbiBvZiBGbGFncyB3aGlsZSBzdXBwb3J0aW5n
CisvLyB0aGUgbGVnYWN5IHJlZ2lzdHJhdGlvbiBmcmFtZXdvcmsuICBXZSBjYW4ndCB1c2UgYWJz
bDo6dmFyaWFudDxjb25zdCBjaGFyKiwKKy8vIGNvbnN0IGNoYXIqKCopKCk+IHNpbmNlIGFueWJv
ZHkgcGFzc2luZyAwIG9yIG51bGxwdHIgaW4gdG8gYSBDb21tYW5kTGluZUZsYWcKKy8vIHdvdWxk
IGZpbmQgYW4gYW1iaWd1aXR5LgorY2xhc3MgSGVscFRleHQgeworIHB1YmxpYzoKKyAgc3RhdGlj
IGNvbnN0ZXhwciBIZWxwVGV4dCBGcm9tRnVuY3Rpb25Qb2ludGVyKGNvbnN0IEhlbHBHZW5GdW5j
IGZuKSB7CisgICAgcmV0dXJuIEhlbHBUZXh0KGZuLCBudWxscHRyKTsKKyAgfQorICBzdGF0aWMg
Y29uc3RleHByIEhlbHBUZXh0IEZyb21TdGF0aWNDU3RyaW5nKGNvbnN0IGNoYXIqIG1zZykgewor
ICAgIHJldHVybiBIZWxwVGV4dChudWxscHRyLCBtc2cpOworICB9CisKKyAgc3RkOjpzdHJpbmcg
R2V0SGVscFRleHQoKSBjb25zdDsKKworICBIZWxwVGV4dCgpID0gZGVsZXRlOworICBIZWxwVGV4
dChjb25zdCBIZWxwVGV4dCYpID0gZGVmYXVsdDsKKyAgSGVscFRleHQoSGVscFRleHQmJikgPSBk
ZWZhdWx0OworCisgcHJpdmF0ZToKKyAgZXhwbGljaXQgY29uc3RleHByIEhlbHBUZXh0KGNvbnN0
IEhlbHBHZW5GdW5jIGZuLCBjb25zdCBjaGFyKiBtc2cpCisgICAgICA6IGhlbHBfZnVuY3Rpb25f
KGZuKSwgaGVscF9tZXNzYWdlXyhtc2cpIHt9CisKKyAgSGVscEdlbkZ1bmMgaGVscF9mdW5jdGlv
bl87CisgIGNvbnN0IGNoYXIqIGhlbHBfbWVzc2FnZV87Cit9OworCisvLyBIb2xkcyBhbGwgaW5m
b3JtYXRpb24gZm9yIGEgZmxhZy4KK3N0cnVjdCBDb21tYW5kTGluZUZsYWcgeworICBjb25zdGV4
cHIgQ29tbWFuZExpbmVGbGFnKAorICAgICAgY29uc3QgY2hhciogbmFtZV9hcmcsIEhlbHBUZXh0
IGhlbHBfdGV4dCwgY29uc3QgY2hhciogZmlsZW5hbWVfYXJnLAorICAgICAgY29uc3QgZmxhZ3Nf
aW50ZXJuYWw6OkZsYWdPcEZuIG9wX2FyZywKKyAgICAgIGNvbnN0IGZsYWdzX2ludGVybmFsOjpG
bGFnTWFyc2hhbGxpbmdPcEZuIG1hcnNoYWxsaW5nX29wX2FyZywKKyAgICAgIGNvbnN0IGZsYWdz
X2ludGVybmFsOjpJbml0aWFsVmFsR2VuRnVuYyBpbml0aWFsX3ZhbHVlX2dlbiwKKyAgICAgIGNv
bnN0IGJvb2wgcmV0aXJlZF9hcmcsIHZvaWQqIGRlZl9hcmcsIHZvaWQqIGN1cl9hcmcpCisgICAg
ICA6IG5hbWUobmFtZV9hcmcpLAorICAgICAgICBoZWxwKGhlbHBfdGV4dCksCisgICAgICAgIGZp
bGVuYW1lKGZpbGVuYW1lX2FyZyksCisgICAgICAgIG9wKG9wX2FyZyksCisgICAgICAgIG1hcnNo
YWxsaW5nX29wKG1hcnNoYWxsaW5nX29wX2FyZyksCisgICAgICAgIG1ha2VfaW5pdF92YWx1ZShp
bml0aWFsX3ZhbHVlX2dlbiksCisgICAgICAgIHJldGlyZWQocmV0aXJlZF9hcmcpLAorICAgICAg
ICBpbml0ZWQoZmFsc2UpLAorICAgICAgICBtb2RpZmllZChmYWxzZSksCisgICAgICAgIG9uX2Nv
bW1hbmRfbGluZShmYWxzZSksCisgICAgICAgIHZhbGlkYXRvcihudWxscHRyKSwKKyAgICAgICAg
Y2FsbGJhY2sobnVsbHB0ciksCisgICAgICAgIGRlZihkZWZfYXJnKSwKKyAgICAgICAgY3VyKGN1
cl9hcmcpLAorICAgICAgICBjb3VudGVyKDApLAorICAgICAgICBhdG9taWMoa0F0b21pY0luaXQp
LAorICAgICAgICBsb2NrcyhudWxscHRyKSB7fQorCisgIC8vIFJldmVydCB0aGUgaW5pdCByb3V0
aW5lLgorICB2b2lkIERlc3Ryb3koKSBjb25zdDsKKworICAvLyBOb3QgY29weWFibGUvYXNzaWdu
YWJsZS4KKyAgQ29tbWFuZExpbmVGbGFnKGNvbnN0IENvbW1hbmRMaW5lRmxhZyYpID0gZGVsZXRl
OworICBDb21tYW5kTGluZUZsYWcmIG9wZXJhdG9yPShjb25zdCBDb21tYW5kTGluZUZsYWcmKSA9
IGRlbGV0ZTsKKworICBhYnNsOjpzdHJpbmdfdmlldyBOYW1lKCkgY29uc3QgeyByZXR1cm4gbmFt
ZTsgfQorICBzdGQ6OnN0cmluZyBIZWxwKCkgY29uc3QgeyByZXR1cm4gaGVscC5HZXRIZWxwVGV4
dCgpOyB9CisgIGJvb2wgSXNSZXRpcmVkKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+cmV0aXJlZDsg
fQorICBib29sIElzTW9kaWZpZWQoKSBjb25zdDsKKyAgdm9pZCBTZXRNb2RpZmllZChib29sIGlz
X21vZGlmaWVkKTsKKyAgYm9vbCBJc1NwZWNpZmllZE9uQ29tbWFuZExpbmUoKSBjb25zdDsKKyAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIGlzIGEgaGFuZGxlIHRvIGFuIEFic2VpbCBGbGFnLgor
ICBib29sIElzQWJzZWlsRmxhZygpIGNvbnN0IHsKKyAgICAvLyBTZXQgdG8gbnVsbCBmb3IgVjEg
ZmxhZ3MKKyAgICByZXR1cm4gdGhpcy0+bWFrZV9pbml0X3ZhbHVlICE9IG51bGxwdHI7CisgIH0K
KworICBhYnNsOjpzdHJpbmdfdmlldyBUeXBlbmFtZSgpIGNvbnN0OworICBzdGQ6OnN0cmluZyBG
aWxlbmFtZSgpIGNvbnN0OworICBzdGQ6OnN0cmluZyBEZWZhdWx0VmFsdWUoKSBjb25zdDsKKyAg
c3RkOjpzdHJpbmcgQ3VycmVudFZhbHVlKCkgY29uc3Q7CisKKyAgYm9vbCBIYXNWYWxpZGF0b3JG
bigpIGNvbnN0OworICBib29sIFNldFZhbGlkYXRvckZuKEZsYWdWYWxpZGF0b3IgZm4pOworICBi
b29sIEludm9rZVZhbGlkYXRvcihjb25zdCB2b2lkKiB2YWx1ZSkgY29uc3Q7CisKKyAgLy8gUmV0
dXJuIHRydWUgaWZmIGZsYWcgaGFzIHR5cGUgVC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
IGlubGluZSBib29sIElzT2ZUeXBlKCkgY29uc3QgeworICAgIHJldHVybiB0aGlzLT5vcCA9PSAm
ZmxhZ3NfaW50ZXJuYWw6OkZsYWdPcHM8VD47CisgIH0KKworICAvLyBBdHRlbXB0cyB0byByZXRy
aWV2ZSB0aGUgZmxhZyB2YWx1ZS4gUmV0dXJucyB2YWx1ZSBvbiBzdWNjZXNzLAorICAvLyBhYnNs
OjpudWxsb3B0IG90aGVyd2lzZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGFic2w6Om9w
dGlvbmFsPFQ+IEdldCgpIGNvbnN0IHsKKyAgICBpZiAoSXNSZXRpcmVkKCkgfHwgZmxhZ3NfaW50
ZXJuYWw6OkZsYWdPcHM8VD4gIT0gdGhpcy0+b3ApCisgICAgICByZXR1cm4gYWJzbDo6bnVsbG9w
dDsKKworICAgIFQgcmVzOworICAgIFJlYWQoJnJlcywgZmxhZ3NfaW50ZXJuYWw6OkZsYWdPcHM8
VD4pOworCisgICAgcmV0dXJuIHJlczsKKyAgfQorCisgIHZvaWQgU2V0Q2FsbGJhY2soY29uc3Qg
ZmxhZ3NfaW50ZXJuYWw6OkZsYWdDYWxsYmFjayBtdXRhdGlvbl9jYWxsYmFjayk7CisgIHZvaWQg
SW52b2tlQ2FsbGJhY2soKTsKKworICAvLyBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBiYXNl
ZCBvbiBzcGVjaWZpZWQgc3RkOjpzdHJpbmcgYHZhbHVlYC4gSWYgdGhlIGZsYWcKKyAgLy8gd2Fz
IHN1Y2Nlc3NmdWxseSBzZXQgdG8gbmV3IHZhbHVlLCBpdCByZXR1cm5zIHRydWUuIE90aGVyd2lz
ZSwgc2V0cyBgZXJyb3JgCisgIC8vIHRvIGluZGljYXRlIHRoZSBlcnJvciwgbGVhdmVzIHRoZSBm
bGFnIHVuY2hhbmdlZCwgYW5kIHJldHVybnMgZmFsc2UuIFRoZXJlCisgIC8vIGFyZSB0aHJlZSB3
YXlzIHRvIHNldCB0aGUgZmxhZydzIHZhbHVlOgorICAvLyAgKiBVcGRhdGUgdGhlIGN1cnJlbnQg
ZmxhZyB2YWx1ZQorICAvLyAgKiBVcGRhdGUgdGhlIGZsYWcncyBkZWZhdWx0IHZhbHVlCisgIC8v
ICAqIFVwZGF0ZSB0aGUgY3VycmVudCBmbGFnIHZhbHVlIGlmIGl0IHdhcyBuZXZlciBzZXQgYmVm
b3JlCisgIC8vIFRoZSBtb2RlIGlzIHNlbGVjdGVkIGJhc2VkIG9uIGBzZXRfbW9kZWAgcGFyYW1l
dGVyLgorICBib29sIFNldEZyb21TdHJpbmcoYWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICBmbGFnc19pbnRlcm5hbDo6RmxhZ1NldHRpbmdNb2RlIHNldF9tb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfaW50ZXJuYWw6OlZhbHVlU291cmNlIHNvdXJj
ZSwgc3RkOjpzdHJpbmcqIGVycm9yKTsKKworICB2b2lkIFN0b3JlQXRvbWljKHNpemVfdCBzaXpl
KTsKKworICB2b2lkIENoZWNrRGVmYXVsdFZhbHVlUGFyc2luZ1JvdW5kdHJpcCgpIGNvbnN0Owor
ICAvLyBJbnZva2UgdGhlIGZsYWcgdmFsaWRhdG9ycyBmb3Igb2xkIGZsYWdzLgorICAvLyBUT0RP
KHJvZ2VlZmYpOiBpbXBsZW1lbnQgcHJvcGVyIHZhbGlkYXRvcnMgZm9yIEFic2VpbCBGbGFncwor
ICBib29sIFZhbGlkYXRlRGVmYXVsdFZhbHVlKCkgY29uc3Q7CisgIGJvb2wgVmFsaWRhdGVJbnB1
dFZhbHVlKGFic2w6OnN0cmluZ192aWV3IHZhbHVlKSBjb25zdDsKKworICAvLyBDb25zdGFudCBj
b25maWd1cmF0aW9uIGZvciBhIHBhcnRpY3VsYXIgZmxhZy4KKyBwcml2YXRlOgorICBjb25zdCBj
aGFyKiBjb25zdCBuYW1lOworICBjb25zdCBIZWxwVGV4dCBoZWxwOworICBjb25zdCBjaGFyKiBj
b25zdCBmaWxlbmFtZTsKKworIHByb3RlY3RlZDoKKyAgY29uc3QgRmxhZ09wRm4gb3A7ICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFR5cGUtc3BlY2lmaWMgaGFuZGxlcgorICBjb25zdCBGbGFn
TWFyc2hhbGxpbmdPcEZuIG1hcnNoYWxsaW5nX29wOyAgLy8gTWFyc2hhbGxpbmcgb3BzIGhhbmRs
ZXIKKyAgY29uc3QgSW5pdGlhbFZhbEdlbkZ1bmMgbWFrZV9pbml0X3ZhbHVlOyAgIC8vIE1ha2Vz
IGluaXRpYWwgdmFsdWUgZm9yIHRoZSBmbGFnCisgIGNvbnN0IGJvb2wgcmV0aXJlZDsgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBJcyB0aGUgZmxhZyByZXRpcmVkPworICBzdGQ6OmF0b21pYzxi
b29sPiBpbml0ZWQ7ICAvLyBmaWVsZHMgaGF2ZSBiZWVuIGxhemlseSBpbml0aWFsaXplZAorCisg
IC8vIE11dGFibGUgc3RhdGUgKGd1YXJkZWQgYnkgbG9ja3MtPnByaW1hcnlfbXUpLgorICBib29s
IG1vZGlmaWVkOyAgICAgICAgICAgIC8vIEhhcyBmbGFnIHZhbHVlIGJlZW4gbW9kaWZpZWQ/Cisg
IGJvb2wgb25fY29tbWFuZF9saW5lOyAgICAgLy8gU3BlY2lmaWVkIG9uIGNvbW1hbmQgbGluZS4K
KyAgRmxhZ1ZhbGlkYXRvciB2YWxpZGF0b3I7ICAvLyBWYWxpZGF0b3IgZnVuY3Rpb24sIG9yIG51
bGxwdHIKKyAgRmxhZ0NhbGxiYWNrIGNhbGxiYWNrOyAgICAvLyBNdXRhdGlvbiBjYWxsYmFjaywg
b3IgbnVsbHB0cgorICB2b2lkKiBkZWY7ICAgICAgICAgICAgICAgIC8vIExhemlseSBpbml0aWFs
aXplZCBwb2ludGVyIHRvIGRlZmF1bHQgdmFsdWUKKyAgdm9pZCogY3VyOyAgICAgICAgICAgICAg
ICAvLyBMYXppbHkgaW5pdGlhbGl6ZWQgcG9pbnRlciB0byBjdXJyZW50IHZhbHVlCisgIGludDY0
X3QgY291bnRlcjsgICAgICAgICAgICAvLyBNdXRhdGlvbiBjb3VudGVyCisKKyAgLy8gRm9yIHNv
bWUgdHlwZXMsIGEgY29weSBvZiB0aGUgY3VycmVudCB2YWx1ZSBpcyBrZXB0IGluIGFuIGF0b21p
Y2FsbHkKKyAgLy8gYWNjZXNzaWJsZSBmaWVsZC4KKyAgc3RhdGljIGNvbnN0IGludDY0X3Qga0F0
b21pY0luaXQgPSAweGFiYWJhYmFiYWJhYmFiYWJsbDsKKyAgc3RkOjphdG9taWM8aW50NjRfdD4g
YXRvbWljOworCisgIC8vIExhemlseSBpbml0aWFsaXplZCBtdXRleGVzIGZvciB0aGlzIGZsYWcg
dmFsdWUuICBXZSBjYW5ub3QgaW5saW5lIGEKKyAgLy8gU3BpbkxvY2sgb3IgTXV0ZXggaGVyZSBi
ZWNhdXNlIHRob3NlIGhhdmUgbm9uLWNvbnN0ZXhwciBjb25zdHJ1Y3RvcnMgYW5kCisgIC8vIHNv
IHdvdWxkIHByZXZlbnQgY29uc3RhbnQgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyB0eXBlLgorICAv
LyBUT0RPKHJvZ2VlZmYpOiBmaXggaXQgb25jZSBNdXRleCBoYXMgY29uc3RleHByIGNvbnN0cnVj
dG9yCisgIHN0cnVjdCBDb21tYW5kTGluZUZsYWdMb2NrcyogbG9ja3M7ICAvLyBsb2NrcywgbGF6
aWxpeSBhbGxvY2F0ZWQuCisKKyAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhemlseSBpbml0aWFsaXpl
ZCBmaWVsZHMgb2YgKmZsYWcgaGF2ZSBiZWVuIGluaXRpYWxpemVkLAorICAvLyBhbmQgcmV0dXJu
IHRoZSBsb2NrIHdoaWNoIHNob3VsZCBiZSBsb2NrZWQgd2hlbiBmbGFnJ3Mgc3RhdGUgaXMgbXV0
YXRlZC4KKyAgYWJzbDo6TXV0ZXgqIEluaXRGbGFnSWZOZWNlc3NhcnkoKSBjb25zdDsKKworICAv
LyBjb3B5IGNvbnN0cnVjdCBuZXcgdmFsdWUgb2YgZmxhZydzIHR5cGUgaW4gYSBtZW1vcnkgcmVm
ZXJlbmNlZCBieSBkc3QKKyAgLy8gYmFzZWQgb24gY3VycmVudCBmbGFnJ3MgdmFsdWUKKyAgdm9p
ZCBSZWFkKHZvaWQqIGRzdCwgY29uc3QgZmxhZ3NfaW50ZXJuYWw6OkZsYWdPcEZuIGRzdF9vcCkg
Y29uc3Q7CisgIC8vIHVwZGF0ZXMgZmxhZydzIHZhbHVlIHRvICpzcmMgKGxvY2tlZCkKKyAgdm9p
ZCBXcml0ZShjb25zdCB2b2lkKiBzcmMsIGNvbnN0IGZsYWdzX2ludGVybmFsOjpGbGFnT3BGbiBz
cmNfb3ApOworCisgIGZyaWVuZCBjbGFzcyBGbGFnUmVnaXN0cnk7CisgIGZyaWVuZCBjbGFzcyBG
bGFnUHRyTWFwOworICBmcmllbmQgY2xhc3MgRmxhZ1NhdmVySW1wbDsKKyAgZnJpZW5kIHZvaWQg
RmlsbENvbW1hbmRMaW5lRmxhZ0luZm8oQ29tbWFuZExpbmVGbGFnKiBmbGFnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kTGluZUZsYWdJbmZvKiByZXN1bHQp
OworICBmcmllbmQgYm9vbCBUcnlQYXJzZUxvY2tlZChDb21tYW5kTGluZUZsYWcqIGZsYWcsIHZv
aWQqIGRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcg
dmFsdWUsIHN0ZDo6c3RyaW5nKiBlcnIpOworICBmcmllbmQgYWJzbDo6TXV0ZXgqIEluaXRGbGFn
KENvbW1hbmRMaW5lRmxhZyogZmxhZyk7Cit9OworCisvLyBVcGRhdGUgYW55IGNvcHkgb2YgdGhl
IGZsYWcgdmFsdWUgdGhhdCBpcyBzdG9yZWQgaW4gYW4gYXRvbWljIHdvcmQuCisvLyBJbiBhZGRp
dGlvbiBpZiBmbGFnIGhhcyBhIG11dGF0aW9uIGNhbGxiYWNrIHRoaXMgZnVuY3Rpb24gaW52b2tl
cyBpdC4gV2hpbGUKKy8vIGNhbGxiYWNrIGlzIGJlaW5nIGludm9rZWQgdGhlIHByaW1hcnkgZmxh
ZydzIG11dGV4IGlzIHVubG9ja2VkIGFuZCBpdCBpcworLy8gcmUtbG9ja2VkIGJhY2sgYWZ0ZXIg
Y2FsbCB0byBjYWxsYmFjayBpcyBjb21wbGV0ZWQuIENhbGxiYWNrIGludm9jYXRpb24gaXMKKy8v
IGd1YXJkZWQgYnkgZmxhZydzIHNlY29uZGFyeSBtdXRleCBpbnN0ZWFkIHdoaWNoIHByZXZlbnRz
IGNvbmN1cnJlbnQgY2FsbGJhY2sKKy8vIGludm9jYXRpb24uIE5vdGUgdGhhdCBpdCBpcyBwb3Nz
aWJsZSBmb3Igb3RoZXIgdGhyZWFkIHRvIGdyYWIgdGhlIHByaW1hcnkKKy8vIGxvY2sgYW5kIHVw
ZGF0ZSBmbGFnJ3MgdmFsdWUgYXQgYW55IHRpbWUgZHVyaW5nIHRoZSBjYWxsYmFjayBpbnZvY2F0
aW9uLgorLy8gVGhpcyBpcyBieSBkZXNpZ24uIENhbGxiYWNrIGNhbiBnZXQgYSB2YWx1ZSBvZiB0
aGUgZmxhZyBpZiBuZWNlc3NhcnksIGJ1dCBpdAorLy8gbWlnaHQgYmUgZGlmZmVyZW50IGZyb20g
dGhlIHZhbHVlIGluaXRpYXRlZCB0aGUgY2FsbGJhY2sgYW5kIGl0IGFsc28gY2FuIGJlCisvLyBk
aWZmZXJlbnQgYnkgdGhlIHRpbWUgdGhlIGNhbGxiYWNrIGludm9jYXRpb24gaXMgY29tcGxldGVk
LgorLy8gUmVxdWlyZXMgdGhhdCAqcHJpbWFyeV9sb2NrIGJlIGhlbGQgaW4gZXhjbHVzaXZlIG1v
ZGU7IGl0IG1heSBiZSByZWxlYXNlZAorLy8gYW5kIHJlYWNxdWlyZWQgYnkgdGhlIGltcGxlbWVu
dGF0aW9uLgordm9pZCBVcGRhdGVDb3B5KENvbW1hbmRMaW5lRmxhZyogZmxhZyk7CisvLyBSZXR1
cm4gdHJ1ZSBpZmYgZmxhZyB2YWx1ZSB3YXMgY2hhbmdlZCB2aWEgZGlyZWN0LWFjY2Vzcy4KK2Jv
b2wgQ2hhbmdlZERpcmVjdGx5KENvbW1hbmRMaW5lRmxhZyogZmxhZywgY29uc3Qgdm9pZCogYSwg
Y29uc3Qgdm9pZCogYik7CisKKy8vIFRoaXMgbWFjcm8gaXMgdGhlICJzb3VyY2Ugb2YgdHJ1dGgi
IGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZmxhZyB0eXBlcyB3ZQorLy8gZXhwZWN0IHRvIHBl
cmZvcm0gbG9jayBmcmVlIG9wZXJhdGlvbnMgb24uIFNwZWNpZmljYWxseSBpdCBnZW5lcmF0ZXMg
Y29kZSwKKy8vIGEgb25lIGFyZ3VtZW50IG1hY3JvIG9wZXJhdGluZyBvbiBhIHR5cGUsIHN1cHBs
aWVkIGFzIGEgbWFjcm8gYXJndW1lbnQsIGZvcgorLy8gZWFjaCB0eXBlIGluIHRoZSBsaXN0Lgor
I2RlZmluZSBBQlNMX0ZMQUdTX0lOVEVSTkFMX0ZPUl9FQUNIX0xPQ0tfRlJFRShBKSBcCisgIEEo
Ym9vbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQShzaG9y
dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBBKHVuc2lnbmVk
IHNob3J0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEEoaW50KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQSh1bnNpZ25lZCBpbnQpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBBKGxvbmcpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEEodW5zaWduZWQgbG9uZykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQShsb25nIGxvbmcpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICBBKHVuc2lnbmVkIGxvbmcgbG9uZykgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgIEEoZG91YmxlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgQShmbG9hdCkKKworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFs
Cit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfSU5URVJOQUxf
Q09NTUFORExJTkVGTEFHX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9jb21t
YW5kbGluZWZsYWdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxh
Z190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwZDU3YWRiZDI2MDY0ZTEyYjNhOGZlZmFjZDQwM2I4Nzdi
MWFhODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGlu
ZWZsYWdfdGVzdC5jYwpAQCAtMCwwICsxLDE5NiBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvY29t
bWFuZGxpbmVmbGFnLmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFi
c2wvZmxhZ3MvZmxhZy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcmVnaXN0cnku
aCIKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3MvbWF0Y2guaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorCitBQlNMX0ZM
QUcoaW50LCBpbnRfZmxhZywgMjAxLCAiaW50X2ZsYWcgaGVscCIpOworQUJTTF9GTEFHKHN0ZDo6
c3RyaW5nLCBzdHJpbmdfZmxhZywgImRmbHQiLAorICAgICAgICAgIGFic2w6OlN0ckNhdCgic3Ry
aW5nX2ZsYWciLCAiIGhlbHAiKSk7CitBQlNMX1JFVElSRURfRkxBRyhib29sLCBib29sX3JldGly
ZWRfZmxhZywgZmFsc2UsICJib29sX3JldGlyZWRfZmxhZyBoZWxwIik7CisKK25hbWVzcGFjZSB7
CisKK25hbWVzcGFjZSBmbGFncyA9IGFic2w6OmZsYWdzX2ludGVybmFsOworCitjbGFzcyBDb21t
YW5kTGluZUZsYWdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsgZmxhZ19zYXZlcl8gPSBhYnNsOjptYWtlX3VuaXF1ZTxm
bGFnczo6RmxhZ1NhdmVyPigpOyB9CisgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSB7IGZsYWdf
c2F2ZXJfLnJlc2V0KCk7IH0KKworIHByaXZhdGU6CisgIHN0ZDo6dW5pcXVlX3B0cjxmbGFnczo6
RmxhZ1NhdmVyPiBmbGFnX3NhdmVyXzsKK307CisKK1RFU1RfRihDb21tYW5kTGluZUZsYWdUZXN0
LCBUZXN0QXR0cmlidXRlc0FjY2Vzc01ldGhvZHMpIHsKKyAgYXV0byogZmxhZ18wMSA9IGZsYWdz
OjpGaW5kQ29tbWFuZExpbmVGbGFnKCJpbnRfZmxhZyIpOworCisgIEFTU0VSVF9UUlVFKGZsYWdf
MDEpOworICBFWFBFQ1RfRVEoZmxhZ18wMS0+TmFtZSgpLCAiaW50X2ZsYWciKTsKKyAgRVhQRUNU
X0VRKGZsYWdfMDEtPkhlbHAoKSwgImludF9mbGFnIGhlbHAiKTsKKyAgRVhQRUNUX0VRKGZsYWdf
MDEtPlR5cGVuYW1lKCksICIiKTsKKyAgRVhQRUNUX1RSVUUoIWZsYWdfMDEtPklzUmV0aXJlZCgp
KTsKKyAgRVhQRUNUX1RSVUUoZmxhZ18wMS0+SXNPZlR5cGU8aW50PigpKTsKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6RW5kc1dpdGgoCisgICAgICBmbGFnXzAxLT5GaWxlbmFtZSgpLAorICAgICAgImFi
c2wvZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnX3Rlc3QuY2MiKSk7CisKKyAgYXV0byog
ZmxhZ18wMiA9IGZsYWdzOjpGaW5kQ29tbWFuZExpbmVGbGFnKCJzdHJpbmdfZmxhZyIpOworCisg
IEFTU0VSVF9UUlVFKGZsYWdfMDIpOworICBFWFBFQ1RfRVEoZmxhZ18wMi0+TmFtZSgpLCAic3Ry
aW5nX2ZsYWciKTsKKyAgRVhQRUNUX0VRKGZsYWdfMDItPkhlbHAoKSwgInN0cmluZ19mbGFnIGhl
bHAiKTsKKyAgRVhQRUNUX0VRKGZsYWdfMDItPlR5cGVuYW1lKCksICIiKTsKKyAgRVhQRUNUX1RS
VUUoIWZsYWdfMDItPklzUmV0aXJlZCgpKTsKKyAgRVhQRUNUX1RSVUUoZmxhZ18wMi0+SXNPZlR5
cGU8c3RkOjpzdHJpbmc+KCkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpFbmRzV2l0aCgKKyAgICAg
IGZsYWdfMDItPkZpbGVuYW1lKCksCisgICAgICAiYWJzbC9mbGFncy9pbnRlcm5hbC9jb21tYW5k
bGluZWZsYWdfdGVzdC5jYyIpKTsKKworICBhdXRvKiBmbGFnXzAzID0gZmxhZ3M6OkZpbmRSZXRp
cmVkRmxhZygiYm9vbF9yZXRpcmVkX2ZsYWciKTsKKworICBBU1NFUlRfVFJVRShmbGFnXzAzKTsK
KyAgRVhQRUNUX0VRKGZsYWdfMDMtPk5hbWUoKSwgImJvb2xfcmV0aXJlZF9mbGFnIik7CisgIEVY
UEVDVF9FUShmbGFnXzAzLT5IZWxwKCksICIiKTsKKyAgRVhQRUNUX0VRKGZsYWdfMDMtPlR5cGVu
YW1lKCksICIiKTsKKyAgRVhQRUNUX1RSVUUoZmxhZ18wMy0+SXNSZXRpcmVkKCkpOworICBFWFBF
Q1RfVFJVRShmbGFnXzAzLT5Jc09mVHlwZTxib29sPigpKTsKKyAgRVhQRUNUX0VRKGZsYWdfMDMt
PkZpbGVuYW1lKCksICJSRVRJUkVEIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihD
b21tYW5kTGluZUZsYWdUZXN0LCBUZXN0VmFsdWVBY2Nlc3NNZXRob2RzKSB7CisgIGFic2w6OlNl
dEZsYWcoJkZMQUdTX2ludF9mbGFnLCAzMDEpOworICBhdXRvKiBmbGFnXzAxID0gZmxhZ3M6OkZp
bmRDb21tYW5kTGluZUZsYWcoImludF9mbGFnIik7CisKKyAgQVNTRVJUX1RSVUUoZmxhZ18wMSk7
CisgIEVYUEVDVF9FUShmbGFnXzAxLT5DdXJyZW50VmFsdWUoKSwgIjMwMSIpOworICBFWFBFQ1Rf
RVEoZmxhZ18wMS0+RGVmYXVsdFZhbHVlKCksICIyMDEiKTsKKworICBhYnNsOjpTZXRGbGFnKCZG
TEFHU19zdHJpbmdfZmxhZywgIm5ld19zdHJfdmFsdWUiKTsKKyAgYXV0byogZmxhZ18wMiA9IGZs
YWdzOjpGaW5kQ29tbWFuZExpbmVGbGFnKCJzdHJpbmdfZmxhZyIpOworCisgIEFTU0VSVF9UUlVF
KGZsYWdfMDIpOworICBFWFBFQ1RfRVEoZmxhZ18wMi0+Q3VycmVudFZhbHVlKCksICJuZXdfc3Ry
X3ZhbHVlIik7CisgIEVYUEVDVF9FUShmbGFnXzAyLT5EZWZhdWx0VmFsdWUoKSwgImRmbHQiKTsK
K30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKENvbW1hbmRMaW5lRmxhZ1Rlc3QsIFRlc3RT
ZXRGcm9tU3RyaW5nQ3VycmVudFZhbHVlKSB7CisgIHN0ZDo6c3RyaW5nIGVycjsKKworICBhdXRv
KiBmbGFnXzAxID0gZmxhZ3M6OkZpbmRDb21tYW5kTGluZUZsYWcoImludF9mbGFnIik7CisgIEVY
UEVDVF9GQUxTRShmbGFnXzAxLT5Jc1NwZWNpZmllZE9uQ29tbWFuZExpbmUoKSk7CisKKyAgRVhQ
RUNUX1RSVUUoZmxhZ18wMS0+U2V0RnJvbVN0cmluZygiMTEiLCBmbGFnczo6U0VUX0ZMQUdTX1ZB
TFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprUHJvZ3Jh
bW1hdGljQ2hhbmdlLCAmZXJyKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2lu
dF9mbGFnKSwgMTEpOworICBFWFBFQ1RfRkFMU0UoZmxhZ18wMS0+SXNTcGVjaWZpZWRPbkNvbW1h
bmRMaW5lKCkpOworCisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPlNldEZyb21TdHJpbmcoIi0xMjMi
LCBmbGFnczo6U0VUX0ZMQUdTX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzOjprUHJvZ3JhbW1hdGljQ2hhbmdlLCAmZXJyKSk7CisgIEVYUEVDVF9FUShh
YnNsOjpHZXRGbGFnKEZMQUdTX2ludF9mbGFnKSwgLTEyMyk7CisgIEVYUEVDVF9GQUxTRShmbGFn
XzAxLT5Jc1NwZWNpZmllZE9uQ29tbWFuZExpbmUoKSk7CisKKyAgRVhQRUNUX1RSVUUoIWZsYWdf
MDEtPlNldEZyb21TdHJpbmcoInh5eiIsIGZsYWdzOjpTRVRfRkxBR1NfVkFMVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprUHJvZ3JhbW1hdGljQ2hhbmdl
LCAmZXJyKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2ludF9mbGFnKSwgLTEy
Myk7CisgIEVYUEVDVF9FUShlcnIsICJJbGxlZ2FsIHZhbHVlICd4eXonIHNwZWNpZmllZCBmb3Ig
ZmxhZyAnaW50X2ZsYWcnIik7CisgIEVYUEVDVF9GQUxTRShmbGFnXzAxLT5Jc1NwZWNpZmllZE9u
Q29tbWFuZExpbmUoKSk7CisKKyAgRVhQRUNUX1RSVUUoIWZsYWdfMDEtPlNldEZyb21TdHJpbmco
IkExIiwgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3M6OmtQcm9ncmFtbWF0aWNDaGFuZ2UsICZlcnIpKTsKKyAgRVhQRUNU
X0VRKGFic2w6OkdldEZsYWcoRkxBR1NfaW50X2ZsYWcpLCAtMTIzKTsKKyAgRVhQRUNUX0VRKGVy
ciwgIklsbGVnYWwgdmFsdWUgJ0ExJyBzcGVjaWZpZWQgZm9yIGZsYWcgJ2ludF9mbGFnJyIpOwor
ICBFWFBFQ1RfRkFMU0UoZmxhZ18wMS0+SXNTcGVjaWZpZWRPbkNvbW1hbmRMaW5lKCkpOworCisg
IEVYUEVDVF9UUlVFKGZsYWdfMDEtPlNldEZyb21TdHJpbmcoIjB4MTAiLCBmbGFnczo6U0VUX0ZM
QUdTX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjpr
UHJvZ3JhbW1hdGljQ2hhbmdlLCAmZXJyKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZM
QUdTX2ludF9mbGFnKSwgMTYpOworICBFWFBFQ1RfRkFMU0UoZmxhZ18wMS0+SXNTcGVjaWZpZWRP
bkNvbW1hbmRMaW5lKCkpOworCisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPlNldEZyb21TdHJpbmco
IjAxMSIsIGZsYWdzOjpTRVRfRkxBR1NfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3M6OmtDb21tYW5kTGluZSwgJmVycikpOworICBFWFBFQ1RfRVEoYWJz
bDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDExKTsKKyAgRVhQRUNUX1RSVUUoZmxhZ18wMS0+
SXNTcGVjaWZpZWRPbkNvbW1hbmRMaW5lKCkpOworCisgIEVYUEVDVF9UUlVFKCFmbGFnXzAxLT5T
ZXRGcm9tU3RyaW5nKCIiLCBmbGFnczo6U0VUX0ZMQUdTX1ZBTFVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikp
OworICBFWFBFQ1RfRVEoZXJyLCAiSWxsZWdhbCB2YWx1ZSAnJyBzcGVjaWZpZWQgZm9yIGZsYWcg
J2ludF9mbGFnJyIpOworCisgIGF1dG8qIGZsYWdfMDIgPSBmbGFnczo6RmluZENvbW1hbmRMaW5l
RmxhZygic3RyaW5nX2ZsYWciKTsKKyAgRVhQRUNUX1RSVUUoZmxhZ18wMi0+U2V0RnJvbVN0cmlu
ZygieHl6IiwgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFnczo6a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikpOworICBFWFBF
Q1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19zdHJpbmdfZmxhZyksICJ4eXoiKTsKKworICBFWFBF
Q1RfVFJVRShmbGFnXzAyLT5TZXRGcm9tU3RyaW5nKCIiLCBmbGFnczo6U0VUX0ZMQUdTX1ZBTFVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprUHJvZ3JhbW1h
dGljQ2hhbmdlLCAmZXJyKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3N0cmlu
Z19mbGFnKSwgIiIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoQ29tbWFuZExpbmVG
bGFnVGVzdCwgVGVzdFNldEZyb21TdHJpbmdEZWZhdWx0VmFsdWUpIHsKKyAgc3RkOjpzdHJpbmcg
ZXJyOworCisgIGF1dG8qIGZsYWdfMDEgPSBmbGFnczo6RmluZENvbW1hbmRMaW5lRmxhZygiaW50
X2ZsYWciKTsKKworICBFWFBFQ1RfVFJVRShmbGFnXzAxLT5TZXRGcm9tU3RyaW5nKCIxMTEiLCBm
bGFnczo6U0VUX0ZMQUdTX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3M6OmtQcm9ncmFtbWF0aWNDaGFuZ2UsICZlcnIpKTsKKyAgRVhQRUNUX0VRKGZs
YWdfMDEtPkRlZmF1bHRWYWx1ZSgpLCAiMTExIik7CisKKyAgYXV0byogZmxhZ18wMiA9IGZsYWdz
OjpGaW5kQ29tbWFuZExpbmVGbGFnKCJzdHJpbmdfZmxhZyIpOworCisgIEVYUEVDVF9UUlVFKGZs
YWdfMDItPlNldEZyb21TdHJpbmcoImFiYyIsIGZsYWdzOjpTRVRfRkxBR1NfREVGQVVMVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6a1Byb2dyYW1tYXRpY0No
YW5nZSwgJmVycikpOworICBFWFBFQ1RfRVEoZmxhZ18wMi0+RGVmYXVsdFZhbHVlKCksICJhYmMi
KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKENvbW1hbmRMaW5lRmxhZ1Rlc3QsIFRl
c3RTZXRGcm9tU3RyaW5nSWZEZWZhdWx0KSB7CisgIHN0ZDo6c3RyaW5nIGVycjsKKworICBhdXRv
KiBmbGFnXzAxID0gZmxhZ3M6OkZpbmRDb21tYW5kTGluZUZsYWcoImludF9mbGFnIik7CisKKyAg
RVhQRUNUX1RSVUUoZmxhZ18wMS0+U2V0RnJvbVN0cmluZygiMjIiLCBmbGFnczo6U0VUX0ZMQUdf
SUZfREVGQVVMVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6
a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikpCisgICAgICA8PCBlcnI7CisgIEVYUEVDVF9FUShh
YnNsOjpHZXRGbGFnKEZMQUdTX2ludF9mbGFnKSwgMjIpOworCisgIEVYUEVDVF9UUlVFKGZsYWdf
MDEtPlNldEZyb21TdHJpbmcoIjMzIiwgZmxhZ3M6OlNFVF9GTEFHX0lGX0RFRkFVTFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OmtQcm9ncmFtbWF0aWNDaGFu
Z2UsICZlcnIpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfaW50X2ZsYWcpLCAy
Mik7CisgIC8vIEVYUEVDVF9FUShlcnIsICJFUlJPUjogaW50X2ZsYWcgaXMgYWxyZWFkeSBzZXQg
dG8gMjIiKTsKKworICAvLyBSZXNldCBiYWNrIHRvIGRlZmF1bHQgdmFsdWUKKyAgRVhQRUNUX1RS
VUUoZmxhZ18wMS0+U2V0RnJvbVN0cmluZygiMjAxIiwgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6a1Byb2dyYW1tYXRp
Y0NoYW5nZSwgJmVycikpOworCisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPlNldEZyb21TdHJpbmco
IjMzIiwgZmxhZ3M6OlNFVF9GTEFHX0lGX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3M6OmtQcm9ncmFtbWF0aWNDaGFuZ2UsICZlcnIpKTsKKyAgRVhQ
RUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfaW50X2ZsYWcpLCAyMDEpOworICAvLyBFWFBFQ1Rf
RVEoZXJyLCAiRVJST1I6IGludF9mbGFnIGlzIGFscmVhZHkgc2V0IHRvIDIwMSIpOworfQorCit9
ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL2ZsYWcuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2ZsYWdzL2ludGVybmFsL2ZsYWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzUwZGU1NDg2YmNkMWU2
YmFiYmNkMWZmOTEyZjk1MTc3ZTA0MzczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3Mv
aW50ZXJuYWwvZmxhZy5oCkBAIC0wLDAgKzEsMTIxIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9GTEFHU19JTlRFUk5BTF9GTEFH
X0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfSU5URVJOQUxfRkxBR19IXworCisjaW5jbHVkZSAiYWJz
bC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGluZWZsYWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdz
L2ludGVybmFsL3JlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBmbGFn
c19pbnRlcm5hbCB7CisKKy8vIFRoaXMgaXMgInVuc3BlY2lmaWVkIiBpbXBsZW1lbnRhdGlvbiBv
ZiBhYnNsOjpGbGFnPFQ+IHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZsYWcg
OiBwdWJsaWMgZmxhZ3NfaW50ZXJuYWw6OkNvbW1hbmRMaW5lRmxhZyB7CisgcHVibGljOgorICBj
b25zdGV4cHIgRmxhZyhjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBmbGFnc19pbnRlcm5hbDo6SGVs
cEdlbkZ1bmMgaGVscF9nZW4sCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1l
LAorICAgICAgICAgICAgICAgICBjb25zdCBmbGFnc19pbnRlcm5hbDo6RmxhZ01hcnNoYWxsaW5n
T3BGbiBtYXJzaGFsbGluZ19vcF9hcmcsCisgICAgICAgICAgICAgICAgIGNvbnN0IGZsYWdzX2lu
dGVybmFsOjpJbml0aWFsVmFsR2VuRnVuYyBpbml0aWFsX3ZhbHVlX2dlbikKKyAgICAgIDogZmxh
Z3NfaW50ZXJuYWw6OkNvbW1hbmRMaW5lRmxhZygKKyAgICAgICAgICAgIG5hbWUsIGZsYWdzX2lu
dGVybmFsOjpIZWxwVGV4dDo6RnJvbUZ1bmN0aW9uUG9pbnRlcihoZWxwX2dlbiksCisgICAgICAg
ICAgICBmaWxlbmFtZSwgJmZsYWdzX2ludGVybmFsOjpGbGFnT3BzPFQ+LCBtYXJzaGFsbGluZ19v
cF9hcmcsCisgICAgICAgICAgICBpbml0aWFsX3ZhbHVlX2dlbiwKKyAgICAgICAgICAgIC8qcmV0
aXJlZF9hcmc9Ki9mYWxzZSwgLypkZWZfYXJnPSovbnVsbHB0ciwKKyAgICAgICAgICAgIC8qY3Vy
X2FyZz0qL251bGxwdHIpIHt9CisKKyAgVCBHZXQoKSBjb25zdCB7CisgICAgLy8gSW1wbGVtZW50
YXRpb24gbm90ZXM6CisgICAgLy8KKyAgICAvLyBXZSBhcmUgd3JhcHBpbmcgYSB1bmlvbiBhcm91
bmQgdGhlIHZhbHVlIG9mIGBUYCB0byBzZXJ2ZSB0aHJlZSBwdXJwb3NlczoKKyAgICAvLworICAg
IC8vICAxLiBgVS52YWx1ZWAgaGFzIGNvcnJlY3Qgc2l6ZSBhbmQgYWxpZ25tZW50IGZvciBhIHZh
bHVlIG9mIHR5cGUgYFRgCisgICAgLy8gIDIuIFRoZSBgVS52YWx1ZWAgY29uc3RydWN0b3IgaXMg
bm90IGludm9rZWQgc2luY2UgVSdzIGNvbnN0cnVjdG9yIGRvZXMKKyAgICAvLyAgbm90CisgICAg
Ly8gICAgIGRvIGl0IGV4cGxpY2l0bHkuCisgICAgLy8gIDMuIFRoZSBgVS52YWx1ZWAgZGVzdHJ1
Y3RvciBpcyBpbnZva2VkIHNpbmNlIFUncyBkZXN0cnVjdG9yIGRvZXMgaXQKKyAgICAvLyAgICAg
ZXhwbGljaXRseS4gVGhpcyBtYWtlcyBgVWAgYSBraW5kIG9mIFJBSUkgd3JhcHBlciBhcm91bmQg
bm9uIGRlZmF1bHQKKyAgICAvLyAgICAgY29uc3RydWN0aWJsZSB2YWx1ZSBvZiBULCB3aGljaCBp
cyBkZXN0cnVjdGVkIHdoZW4gd2UgbGVhdmUgdGhlCisgICAgLy8gICAgIHNjb3BlLiBXZSBkbyBu
ZWVkIHRvIGRlc3Ryb3kgVS52YWx1ZSwgd2hpY2ggaXMgY29uc3RydWN0ZWQgYnkKKyAgICAvLyAg
ICAgQ29tbWFuZExpbmVGbGFnOjpSZWFkIGV2ZW4gdGhvdWdoIHdlIGxlZnQgaXQgaW4gYSBtb3Zl
ZC1mcm9tIHN0YXRlCisgICAgLy8gICAgIGFmdGVyIHN0ZDo6bW92ZS4KKyAgICAvLworICAgIC8v
IEFsbCBvZiB0aGlzIHNlcnZlcyB0byBhdm9pZCByZXF1aXJpbmcgYFRgIGJlaW5nIGRlZmF1bHQg
Y29uc3RydWN0aWJsZS4KKyAgICB1bmlvbiBVIHsKKyAgICAgIFQgdmFsdWU7CisgICAgICBVKCkg
e30KKyAgICAgIH5VKCkgeyB2YWx1ZS5+VCgpOyB9CisgICAgfTsKKyAgICBVIHU7CisKKyAgICB0
aGlzLT5SZWFkKCZ1LnZhbHVlLCAmZmxhZ3NfaW50ZXJuYWw6OkZsYWdPcHM8VD4pOworICAgIHJl
dHVybiBzdGQ6Om1vdmUodS52YWx1ZSk7CisgIH0KKworICBib29sIEF0b21pY0dldChUKiB2KSBj
b25zdCB7CisgICAgY29uc3QgaW50NjRfdCByID0gdGhpcy0+YXRvbWljLmxvYWQoc3RkOjptZW1v
cnlfb3JkZXJfYWNxdWlyZSk7CisgICAgaWYgKHIgIT0gZmxhZ3NfaW50ZXJuYWw6OkNvbW1hbmRM
aW5lRmxhZzo6a0F0b21pY0luaXQpIHsKKyAgICAgIG1lbWNweSh2LCAmciwgc2l6ZW9mKFQpKTsK
KyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisg
IHZvaWQgU2V0KGNvbnN0IFQmIHYpIHsgdGhpcy0+V3JpdGUoJnYsICZmbGFnc19pbnRlcm5hbDo6
RmxhZ09wczxUPik7IH0KK307CisKKy8vIFRoaXMgY2xhc3MgZmFjaWxpdGF0ZXMgRmxhZyBvYmpl
Y3QgcmVnaXN0cmF0aW9uIGFuZCB0YWlsIGV4cHJlc3Npb24tYmFzZWQKKy8vIGZsYWcgZGVmaW5p
dGlvbiwgZm9yIGV4YW1wbGU6CisvLyBBQlNMX0ZMQUcoaW50LCBmb28sIDQyLCAiRm9vIGhlbHAi
KS5PblVwZGF0ZShOb3RpZnlGb29XYXRjaGVyKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29s
IGRvX3JlZ2lzdGVyPgorY2xhc3MgRmxhZ1JlZ2lzdHJhciB7CisgcHVibGljOgorICBleHBsaWNp
dCBGbGFnUmVnaXN0cmFyKEZsYWc8VD4qIGZsYWcpIDogZmxhZ18oZmxhZykgeworICAgIGlmIChk
b19yZWdpc3RlcikgZmxhZ3NfaW50ZXJuYWw6OlJlZ2lzdGVyQ29tbWFuZExpbmVGbGFnKGZsYWdf
KTsKKyAgfQorCisgIEZsYWdSZWdpc3RyYXImIE9uVXBkYXRlKGZsYWdzX2ludGVybmFsOjpGbGFn
Q2FsbGJhY2sgY2IpICYmIHsKKyAgICBmbGFnXy0+U2V0Q2FsbGJhY2soY2IpOworICAgIHJldHVy
biAqdGhpczsKKyAgfQorCisgIC8vIE1ha2UgdGhlIHJlZ2lzdHJhciAiZGllIiBncmFjZWZ1bGx5
IGFzIGEgYm9vbCBvbiBhIGxpbmUgd2hlcmUgcmVnaXN0cmF0aW9uCisgIC8vIGhhcHBlbnMuIFJl
Z2lzdHJhciBvYmplY3RzIGFyZSBpbnRlbmRlZCB0byBsaXZlIG9ubHkgYXMgdGVtcG9yYXJ5Lgor
ICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfSAgLy8gTk9MSU5UCisKKyBw
cml2YXRlOgorICBGbGFnPFQ+KiBmbGFnXzsgIC8vIEZsYWcgYmVpbmcgcmVnaXN0ZXJlZCAobm90
IG93bmVkKS4KK307CisKKy8vIFRoaXMgc3RydWN0IGFuZCBjb3JyZXNwb25kaW5nIG92ZXJsb2Fk
IHRvIE1ha2VEZWZhdWx0VmFsdWUgYXJlIHVzZWQgdG8KKy8vIGZhY2lsaXRhdGUgdXNhZ2Ugb2Yg
e30gYXMgZGVmYXVsdCB2YWx1ZSBpbiBBQlNMX0ZMQUcgbWFjcm8uCitzdHJ1Y3QgRW1wdHlCcmFj
ZXMge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCogTWFrZUZyb21EZWZhdWx0VmFsdWUo
VCB0KSB7CisgIHJldHVybiBuZXcgVChzdGQ6Om1vdmUodCkpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK1QqIE1ha2VGcm9tRGVmYXVsdFZhbHVlKEVtcHR5QnJhY2VzKSB7CisgIHJldHVy
biBuZXcgVDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1l
c3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfSU5URVJOQUxfRkxBR19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcGFyc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVy
bmFsL3BhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQzYWNhNjFmNDA4YjNhYzMzYTMzNzA2NDI5M2YxZjI0
MDM3YTE2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3BhcnNlLmgK
QEAgLTAsMCArMSw0OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorCisjaWZuZGVmIEFCU0xfRkxBR1NfSU5URVJOQUxfUEFSU0VfSF8KKyNkZWZpbmUgQUJT
TF9GTEFHU19JTlRFUk5BTF9QQVJTRV9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUg
PHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvZGVjbGFyZS5oIgorCitBQlNMX0RFQ0xB
UkVfRkxBRyhzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4sIGZsYWdmaWxlKTsKK0FCU0xfREVDTEFS
RV9GTEFHKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiwgZnJvbWVudik7CitBQlNMX0RFQ0xBUkVf
RkxBRyhzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4sIHRyeWZyb21lbnYpOworQUJTTF9ERUNMQVJF
X0ZMQUcoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LCB1bmRlZm9rKTsKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsIHsKKworZW51bSBjbGFzcyBBcmd2TGlzdEFj
dGlvbiB7IGtSZW1vdmVQYXJzZWRBcmdzLCBrS2VlcFBhcnNlZEFyZ3MgfTsKK2VudW0gY2xhc3Mg
VXNhZ2VGbGFnc0FjdGlvbiB7IGtIYW5kbGVVc2FnZSwga0lnbm9yZVVzYWdlIH07CitlbnVtIGNs
YXNzIE9uVW5kZWZpbmVkRmxhZyB7CisgIGtJZ25vcmVVbmRlZmluZWQsCisgIGtSZXBvcnRVbmRl
ZmluZWQsCisgIGtBYm9ydElmVW5kZWZpbmVkCit9OworCitzdGQ6OnZlY3RvcjxjaGFyKj4gUGFy
c2VDb21tYW5kTGluZUltcGwoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBcmd2TGlzdEFjdGlvbiBhcmdfbGlzdF9hY3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNhZ2VGbGFnc0FjdGlvbiB1
c2FnZV9mbGFnX2FjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP
blVuZGVmaW5lZEZsYWcgb25fdW5kZWZfZmxhZyk7CisKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19p
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0ZMQUdTX0lO
VEVSTkFMX1BBUlNFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0
aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3BhdGhfdXRpbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2MTVj
MGU2YzU5MGVjNmU3ZTQ3MGRkZDEyYzAxMDc1MjRlNjhiNTMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0aWwuaApAQCAtMCwwICsxLDYwIEBACisvLworLy8g
IENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfRkxB
R1NfSU5URVJOQUxfUEFUSF9VVElMX0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfSU5URVJOQUxfUEFU
SF9VVElMX0hfCisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNl
IGZsYWdzX2ludGVybmFsIHsKKworLy8gQSBwb3J0YWJsZSBpbnRlcmZhY2UgdGhhdCByZXR1cm5z
IHRoZSBiYXNlbmFtZSBvZiB0aGUgZmlsZW5hbWUgcGFzc2VkIGFzIGFuCisvLyBhcmd1bWVudC4g
SXQgaXMgc2ltaWxhciB0byBiYXNlbmFtZSgzKQorLy8gPGh0dHBzOi8vbGludXguZGllLm5ldC9t
YW4vMy9iYXNlbmFtZT4uCisvLyBGb3IgZXhhbXBsZToKKy8vICAgICBmbGFnc19pbnRlcm5hbDo6
QmFzZW5hbWUoImEvYi9wcm9nL2ZpbGUuY2MiKQorLy8gcmV0dXJucyAiZmlsZS5jYyIKKy8vICAg
ICBmbGFnc19pbnRlcm5hbDo6QmFzZW5hbWUoImZpbGUuY2MiKQorLy8gcmV0dXJucyAiZmlsZS5j
YyIKK2lubGluZSBhYnNsOjpzdHJpbmdfdmlldyBCYXNlbmFtZShhYnNsOjpzdHJpbmdfdmlldyBm
aWxlbmFtZSkgeworICBhdXRvIGxhc3Rfc2xhc2hfcG9zID0gZmlsZW5hbWUuZmluZF9sYXN0X29m
KCIvXFwiKTsKKworICByZXR1cm4gbGFzdF9zbGFzaF9wb3MgPT0gYWJzbDo6c3RyaW5nX3ZpZXc6
Om5wb3MKKyAgICAgICAgICAgICA/IGZpbGVuYW1lCisgICAgICAgICAgICAgOiBmaWxlbmFtZS5z
dWJzdHIobGFzdF9zbGFzaF9wb3MgKyAxKTsKK30KKworLy8gQSBwb3J0YWJsZSBpbnRlcmZhY2Ug
dGhhdCByZXR1cm5zIHRoZSBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgZmlsZW5hbWUKKy8vIHBhc3Nl
ZCBhcyBhbiBhcmd1bWVudCwgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBzbGFzaC4KKy8vIFJldHVy
bnMgdGhlIGVtcHR5IHN0cmluZyBpZiBhIHNsYXNoIGlzIG5vdCBmb3VuZCBpbiB0aGUgaW5wdXQg
ZmlsZSBuYW1lLgorLy8gRm9yIGV4YW1wbGU6CisvLyAgICAgIGZsYWdzX2ludGVybmFsOjpQYWNr
YWdlKCJhL2IvcHJvZy9maWxlLmNjIikKKy8vIHJldHVybnMgImEvYi9wcm9nLyIKKy8vICAgICAg
ZmxhZ3NfaW50ZXJuYWw6OlBhY2thZ2UoImZpbGUuY2MiKQorLy8gcmV0dXJucyAiIgoraW5saW5l
IGFic2w6OnN0cmluZ192aWV3IFBhY2thZ2UoYWJzbDo6c3RyaW5nX3ZpZXcgZmlsZW5hbWUpIHsK
KyAgYXV0byBsYXN0X3NsYXNoX3BvcyA9IGZpbGVuYW1lLmZpbmRfbGFzdF9vZigiL1xcIik7CisK
KyAgcmV0dXJuIGxhc3Rfc2xhc2hfcG9zID09IGFic2w6OnN0cmluZ192aWV3OjpucG9zCisgICAg
ICAgICAgICAgPyBhYnNsOjpzdHJpbmdfdmlldygpCisgICAgICAgICAgICAgOiBmaWxlbmFtZS5z
dWJzdHIoMCwgbGFzdF9zbGFzaF9wb3MgKyAxKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGZsYWdz
X2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfRkxBR1Nf
SU5URVJOQUxfUEFUSF9VVElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9w
YXRoX3V0aWxfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3BhdGhfdXRpbF90ZXN0LmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIwOTEzNzNjODhlYWVjMDI0OGQyN2ZhZjk5MzNkNmE2NDg5NGJmYjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0aWxfdGVzdC5jYwpA
QCAtMCwwICsxLDQ2IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0aWwuaCIKKworI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK25hbWVzcGFjZSBmbGFncyA9
IGFic2w6OmZsYWdzX2ludGVybmFsOworCitURVNUKEZsYWdzUGF0aFV0aWxUZXN0LCBUZXN0QmFz
ZW5hbWUpIHsKKyAgRVhQRUNUX0VRKGZsYWdzOjpCYXNlbmFtZSgiIiksICIiKTsKKyAgRVhQRUNU
X0VRKGZsYWdzOjpCYXNlbmFtZSgiYS5jYyIpLCAiYS5jYyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6
OkJhc2VuYW1lKCJkaXIvYS5jYyIpLCAiYS5jYyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OkJhc2Vu
YW1lKCJkaXIxL2RpcjIvYS5jYyIpLCAiYS5jYyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OkJhc2Vu
YW1lKCIuLi9kaXIxL2RpcjIvYS5jYyIpLCAiYS5jYyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OkJh
c2VuYW1lKCIvZGlyMS9kaXIyL2EuY2MiKSwgImEuY2MiKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpC
YXNlbmFtZSgiL2RpcjEvZGlyMi8uLi9kaXIzL2EuY2MiKSwgImEuY2MiKTsKK30KKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworVEVTVChGbGFnc1BhdGhVdGlsVGVzdCwgVGVzdFBhY2thZ2UpIHsKKyAgRVhQ
RUNUX0VRKGZsYWdzOjpQYWNrYWdlKCIiKSwgIiIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OlBhY2th
Z2UoImEuY2MiKSwgIiIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OlBhY2thZ2UoImRpci9hLmNjIiks
ICJkaXIvIik7CisgIEVYUEVDVF9FUShmbGFnczo6UGFja2FnZSgiZGlyMS9kaXIyL2EuY2MiKSwg
ImRpcjEvZGlyMi8iKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpQYWNrYWdlKCIuLi9kaXIxL2RpcjIv
YS5jYyIpLCAiLi4vZGlyMS9kaXIyLyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OlBhY2thZ2UoIi9k
aXIxL2RpcjIvYS5jYyIpLCAiL2RpcjEvZGlyMi8iKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpQYWNr
YWdlKCIvZGlyMS9kaXIyLy4uL2RpcjMvYS5jYyIpLCAiL2RpcjEvZGlyMi8uLi9kaXIzLyIpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3By
b2dyYW1fbmFtZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMDgxMWYxNDQ4NjhmMjQwMDg2NDg3MjZhOGNlMjRlYTM1M2I0M2EzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcHJvZ3JhbV9uYW1lLmNjCkBAIC0wLDAg
KzEsNTMgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5oIgorCisjaW5jbHVk
ZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0aWwuaCIK
KyNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworCitBQlNMX0NPTlNUX0lOSVQgc3RhdGlj
IGFic2w6Ok11dGV4IHByb2dyYW1fbmFtZV9ndWFyZChhYnNsOjprQ29uc3RJbml0KTsKK0FCU0xf
Q09OU1RfSU5JVCBzdGF0aWMgc3RkOjpzdHJpbmcqIHByb2dyYW1fbmFtZQorICAgIEFCU0xfR1VB
UkRFRF9CWShwcm9ncmFtX25hbWVfZ3VhcmQpID0gbnVsbHB0cjsKKworc3RkOjpzdHJpbmcgUHJv
Z3JhbUludm9jYXRpb25OYW1lKCkgeworICBhYnNsOjpNdXRleExvY2sgbCgmcHJvZ3JhbV9uYW1l
X2d1YXJkKTsKKworICByZXR1cm4gcHJvZ3JhbV9uYW1lID8gKnByb2dyYW1fbmFtZSA6ICJVTktO
T1dOIjsKK30KKworc3RkOjpzdHJpbmcgU2hvcnRQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSB7Cisg
IGFic2w6Ok11dGV4TG9jayBsKCZwcm9ncmFtX25hbWVfZ3VhcmQpOworCisgIHJldHVybiBwcm9n
cmFtX25hbWUgPyBzdGQ6OnN0cmluZyhmbGFnc19pbnRlcm5hbDo6QmFzZW5hbWUoKnByb2dyYW1f
bmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgOiAiVU5LTk9XTiI7Cit9CisKK3ZvaWQgU2V0
UHJvZ3JhbUludm9jYXRpb25OYW1lKGFic2w6OnN0cmluZ192aWV3IHByb2dfbmFtZV9zdHIpIHsK
KyAgYWJzbDo6TXV0ZXhMb2NrIGwoJnByb2dyYW1fbmFtZV9ndWFyZCk7CisKKyAgaWYgKCFwcm9n
cmFtX25hbWUpCisgICAgcHJvZ3JhbV9uYW1lID0gbmV3IHN0ZDo6c3RyaW5nKHByb2dfbmFtZV9z
dHIpOworICBlbHNlCisgICAgcHJvZ3JhbV9uYW1lLT5hc3NpZ24ocHJvZ19uYW1lX3N0ci5kYXRh
KCksIHByb2dfbmFtZV9zdHIuc2l6ZSgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2lu
dGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50
ZXJuYWwvcHJvZ3JhbV9uYW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9wcm9ncmFtX25hbWUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMjZmMjRiYjY1MzM0YmFhOWZkOWUzNDEyM2ZmMTc4MzIzYjM2OWQzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcHJvZ3JhbV9uYW1lLmgKQEAg
LTAsMCArMSw0NyBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKworI2lmbmRlZiBBQlNMX0ZMQUdTX0lOVEVSTkFMX1BST0dSQU1fTkFNRV9IXworI2RlZmlu
ZSBBQlNMX0ZMQUdTX0lOVEVSTkFMX1BST0dSQU1fTkFNRV9IXworCisjaW5jbHVkZSA8c3RyaW5n
PgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLyBQcm9ncmFtIG5hbWUKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGZsYWdz
X2ludGVybmFsIHsKKworLy8gUmV0dXJucyBwcm9ncmFtIGludm9jYXRpb24gbmFtZSBvciAiVU5L
Tk9XTiIgaWYgYFNldFByb2dyYW1JbnZvY2F0aW9uTmFtZSgpYAorLy8gaXMgbmV2ZXIgY2FsbGVk
LiBBdCB0aGUgbW9tZW50IHRoaXMgaXMgYWx3YXlzIHNldCB0byBhcmd2WzBdIGFzIHBhcnQgb2YK
Ky8vIGxpYnJhcnkgaW5pdGlhbGl6YXRpb24uCitzdGQ6OnN0cmluZyBQcm9ncmFtSW52b2NhdGlv
bk5hbWUoKTsKKworLy8gUmV0dXJucyBiYXNlIG5hbWUgZm9yIHByb2dyYW0gaW52b2NhdGlvbiBu
YW1lLiBGb3IgZXhhbXBsZSwgaWYKKy8vICAgUHJvZ3JhbUludm9jYXRpb25OYW1lKCkgPT0gImEv
Yi9teWJpbmFyeSIKKy8vIHRoZW4KKy8vICAgU2hvcnRQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSA9
PSAibXliaW5hcnkiCitzdGQ6OnN0cmluZyBTaG9ydFByb2dyYW1JbnZvY2F0aW9uTmFtZSgpOwor
CisvLyBTZXRzIHByb2dyYW0gaW52b2NhdGlvbiBuYW1lIHRvIGEgbmV3IHZhbHVlLiBTaG91bGQg
b25seSBiZSBjYWxsZWQgb25jZQorLy8gZHVyaW5nIHByb2dyYW0gaW5pdGlhbGl6YXRpb24sIGJl
Zm9yZSBhbnkgdGhyZWFkcyBhcmUgc3Bhd25lZC4KK3ZvaWQgU2V0UHJvZ3JhbUludm9jYXRpb25O
YW1lKGFic2w6OnN0cmluZ192aWV3IHByb2dfbmFtZV9zdHIpOworCit9ICAvLyBuYW1lc3BhY2Ug
ZmxhZ3NfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9G
TEFHU19JTlRFUk5BTF9QUk9HUkFNX05BTUVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2lu
dGVybmFsL3Byb2dyYW1fbmFtZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcHJvZ3Jh
bV9uYW1lX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ2OTIxOGI4Mzk1YTNkY2E4N2ExMDEyNmNiYjU4
MGI5ZDFjODAzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dy
YW1fbmFtZV90ZXN0LmNjCkBAIC0wLDAgKzEsNjAgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3By
b2dyYW1fbmFtZS5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3MvbWF0Y2guaCIKKworbmFtZXNwYWNlIHsKKworbmFtZXNwYWNlIGZsYWdzID0gYWJz
bDo6ZmxhZ3NfaW50ZXJuYWw7CisKK1RFU1QoRmxhZ3NQYXRoVXRpbFRlc3QsIFRlc3RJbml0aWFs
UHJvZ2FtTmFtZSkgeworICBmbGFnczo6U2V0UHJvZ3JhbUludm9jYXRpb25OYW1lKCJhYnNsL2Zs
YWdzL3Byb2dyYW1fbmFtZV90ZXN0Iik7CisgIHN0ZDo6c3RyaW5nIHByb2dyYW1fbmFtZSA9IGZs
YWdzOjpQcm9ncmFtSW52b2NhdGlvbk5hbWUoKTsKKyAgZm9yIChjaGFyJiBjIDogcHJvZ3JhbV9u
YW1lKQorICAgIGlmIChjID09ICdcXCcpIGMgPSAnLyc7CisKKyNpZiAhZGVmaW5lZChfX3dhc21f
XykgJiYgIWRlZmluZWQoX19hc21qc19fKQorICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RfbmFt
ZSA9ICJhYnNsL2ZsYWdzL3Byb2dyYW1fbmFtZV90ZXN0IjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
ZXhwZWN0X2Jhc2VuYW1lID0gInByb2dyYW1fbmFtZV90ZXN0IjsKKyNlbHNlCisgIC8vIEZvciB0
YXJnZXRzIHRoYXQgZ2VuZXJhdGUgamF2YXNjcmlwdCBvciB3ZWJhc3NlbWJseSB0aGUgaW52b2Nh
dGlvbiBuYW1lCisgIC8vIGhhcyB0aGUgc3BlY2lhbCB2YWx1ZSBiZWxvdy4KKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgZXhwZWN0X25hbWUgPSAidGhpcy5wcm9ncmFtIjsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgZXhwZWN0X2Jhc2VuYW1lID0gInRoaXMucHJvZ3JhbSI7CisjZW5kaWYKKworICBFWFBFQ1Rf
VFJVRShhYnNsOjpFbmRzV2l0aChwcm9ncmFtX25hbWUsIGV4cGVjdF9uYW1lKSkgPDwgcHJvZ3Jh
bV9uYW1lOworICBFWFBFQ1RfRVEoZmxhZ3M6OlNob3J0UHJvZ3JhbUludm9jYXRpb25OYW1lKCks
IGV4cGVjdF9iYXNlbmFtZSk7Cit9CisKK1RFU1QoRmxhZ3NQYXRoVXRpbFRlc3QsIFRlc3RQcm9n
YW1OYW1lSW50ZXJmYWNlcykgeworICBmbGFnczo6U2V0UHJvZ3JhbUludm9jYXRpb25OYW1lKCJh
L215X3Rlc3QiKTsKKworICBFWFBFQ1RfRVEoZmxhZ3M6OlByb2dyYW1JbnZvY2F0aW9uTmFtZSgp
LCAiYS9teV90ZXN0Iik7CisgIEVYUEVDVF9FUShmbGFnczo6U2hvcnRQcm9ncmFtSW52b2NhdGlv
bk5hbWUoKSwgIm15X3Rlc3QiKTsKKworICBhYnNsOjpzdHJpbmdfdmlldyBub3RfbnVsbF90ZXJt
aW5hdGVkKCJhYnNsL2FhYS9iYmIiKTsKKyAgbm90X251bGxfdGVybWluYXRlZCA9IG5vdF9udWxs
X3Rlcm1pbmF0ZWQuc3Vic3RyKDEsIDEwKTsKKworICBmbGFnczo6U2V0UHJvZ3JhbUludm9jYXRp
b25OYW1lKG5vdF9udWxsX3Rlcm1pbmF0ZWQpOworCisgIEVYUEVDVF9FUShmbGFnczo6UHJvZ3Jh
bUludm9jYXRpb25OYW1lKCksICJic2wvYWFhL2JiIik7CisgIEVYUEVDVF9FUShmbGFnczo6U2hv
cnRQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSwgImJiIik7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcmVnaXN0cnkuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFn
cy9pbnRlcm5hbC9yZWdpc3RyeS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDc1YmQ4NDEyNmNkNjIwZTJiMGM4
NTgyNzc1YWNhMWY3NDRiZGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJu
YWwvcmVnaXN0cnkuY2MKQEAgLTAsMCArMSw0NDMgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOSBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcmVn
aXN0cnkuaCIKKworI2luY2x1ZGUgImFic2wvYmFzZS9keW5hbWljX2Fubm90YXRpb25zLmgiCisj
aW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJz
bC9mbGFncy9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3VzYWdlX2NvbmZpZy5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIK
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZsYWdSZWdpc3RyeSBpbXBsZW1lbnRhdGlvbgorLy8gICAg
QSBGbGFnUmVnaXN0cnkgaG9sZHMgYWxsIGZsYWcgb2JqZWN0cyBpbmRleGVkCisvLyAgICBieSB0
aGVpciBuYW1lcyBzbyB0aGF0IGlmIHlvdSBrbm93IGEgZmxhZydzIG5hbWUgeW91IGNhbiBhY2Nl
c3Mgb3IKKy8vICAgIHNldCBpdC4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGZsYWdz
X2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3ZvaWQgRGVzdHJveUZsYWcoQ29tbWFuZExpbmVG
bGFnKiBmbGFnKSBBQlNMX05PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeworICBmbGFnLT5EZXN0
cm95KCk7CisKKyAgLy8gQ29tbWFuZExpbmVGbGFnIGhhbmRsZSBvYmplY3QgaXMgaGVhcCBhbGxv
Y2F0ZWQgZm9yIG5vbiBBYnNlaWwgRmxhZ3MuCisgIGlmICghZmxhZy0+SXNBYnNlaWxGbGFnKCkp
IHsKKyAgICBkZWxldGUgZmxhZzsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vIEZsYWdSZWdpc3RyeQorLy8gICAgQSBGbGFnUmVnaXN0cnkgc2luZ2xldG9u
IG9iamVjdCBob2xkcyBhbGwgZmxhZyBvYmplY3RzIGluZGV4ZWQKKy8vICAgIGJ5IHRoZWlyIG5h
bWVzIHNvIHRoYXQgaWYgeW91IGtub3cgYSBmbGFnJ3MgbmFtZSAoYXMgYSBDCisvLyAgICBzdHJp
bmcpLCB5b3UgY2FuIGFjY2VzcyBvciBzZXQgaXQuICBJZiB0aGUgZnVuY3Rpb24gaXMgbmFtZWQK
Ky8vICAgIEZvb0xvY2tlZCgpLCB5b3UgbXVzdCBvd24gdGhlIHJlZ2lzdHJ5IGxvY2sgYmVmb3Jl
IGNhbGxpbmcKKy8vICAgIHRoZSBmdW5jdGlvbjsgb3RoZXJ3aXNlLCB5b3Ugc2hvdWxkICpub3Qq
IGhvbGQgdGhlIGxvY2ssIGFuZAorLy8gICAgdGhlIGZ1bmN0aW9uIHdpbGwgYWNxdWlyZSBpdCBp
dHNlbGYgaWYgbmVlZGVkLgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgRmxhZ1JlZ2lzdHJ5IHsK
KyBwdWJsaWM6CisgIEZsYWdSZWdpc3RyeSgpID0gZGVmYXVsdDsKKyAgfkZsYWdSZWdpc3RyeSgp
IHsKKyAgICBmb3IgKGF1dG8mIHAgOiBmbGFnc18pIHsKKyAgICAgIERlc3Ryb3lGbGFnKHAuc2Vj
b25kKTsKKyAgICB9CisgIH0KKworICAvLyBTdG9yZSBhIGZsYWcgaW4gdGhpcyByZWdpc3RyeS4g
IFRha2VzIG93bmVyc2hpcCBvZiAqZmxhZy4KKyAgdm9pZCBSZWdpc3RlckZsYWcoQ29tbWFuZExp
bmVGbGFnKiBmbGFnKTsKKworICB2b2lkIExvY2soKSBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNU
SU9OKGxvY2tfKSB7IGxvY2tfLkxvY2soKTsgfQorICB2b2lkIFVubG9jaygpIEFCU0xfVU5MT0NL
X0ZVTkNUSU9OKGxvY2tfKSB7IGxvY2tfLlVubG9jaygpOyB9CisKKyAgLy8gUmV0dXJucyB0aGUg
ZmxhZyBvYmplY3QgZm9yIHRoZSBzcGVjaWZpZWQgbmFtZSwgb3IgbnVsbHB0ciBpZiBub3QgZm91
bmQuCisgIC8vIFdpbGwgZW1pdCBhIHdhcm5pbmcgaWYgYSAncmV0aXJlZCcgZmxhZyBpcyBzcGVj
aWZpZWQuCisgIENvbW1hbmRMaW5lRmxhZyogRmluZEZsYWdMb2NrZWQoYWJzbDo6c3RyaW5nX3Zp
ZXcgbmFtZSk7CisKKyAgLy8gUmV0dXJucyB0aGUgcmV0aXJlZCBmbGFnIG9iamVjdCBmb3IgdGhl
IHNwZWNpZmllZCBuYW1lLCBvciBudWxscHRyIGlmIG5vdAorICAvLyBmb3VuZCBvciBub3QgcmV0
aXJlZC4gIERvZXMgbm90IGVtaXQgYSB3YXJuaW5nLgorICBDb21tYW5kTGluZUZsYWcqIEZpbmRS
ZXRpcmVkRmxhZ0xvY2tlZChhYnNsOjpzdHJpbmdfdmlldyBuYW1lKTsKKworICBzdGF0aWMgRmxh
Z1JlZ2lzdHJ5KiBHbG9iYWxSZWdpc3RyeSgpOyAgLy8gcmV0dXJucyBhIHNpbmdsZXRvbiByZWdp
c3RyeQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGNsYXNzIEZsYWdTYXZlckltcGw7ICAvLyByZWFk
cyBhbGwgdGhlIGZsYWdzIGluIG9yZGVyIHRvIGNvcHkgdGhlbQorICBmcmllbmQgdm9pZCBGb3JF
YWNoRmxhZ1VubG9ja2VkKAorICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKENvbW1hbmRMaW5lRmxh
ZyopPiB2aXNpdG9yKTsKKworICAvLyBUaGUgbWFwIGZyb20gbmFtZSB0byBmbGFnLCBmb3IgRmlu
ZEZsYWdMb2NrZWQoKS4KKyAgdXNpbmcgRmxhZ01hcCA9IHN0ZDo6bWFwPGFic2w6OnN0cmluZ192
aWV3LCBDb21tYW5kTGluZUZsYWcqPjsKKyAgdXNpbmcgRmxhZ0l0ZXJhdG9yID0gRmxhZ01hcDo6
aXRlcmF0b3I7CisgIHVzaW5nIEZsYWdDb25zdEl0ZXJhdG9yID0gRmxhZ01hcDo6Y29uc3RfaXRl
cmF0b3I7CisgIEZsYWdNYXAgZmxhZ3NfOworCisgIGFic2w6Ok11dGV4IGxvY2tfOworCisgIC8v
IERpc2FsbG93CisgIEZsYWdSZWdpc3RyeShjb25zdCBGbGFnUmVnaXN0cnkmKTsKKyAgRmxhZ1Jl
Z2lzdHJ5JiBvcGVyYXRvcj0oY29uc3QgRmxhZ1JlZ2lzdHJ5Jik7Cit9OworCitGbGFnUmVnaXN0
cnkqIEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0cnkoKSB7CisgIHN0YXRpYyBGbGFnUmVnaXN0
cnkqIGdsb2JhbF9yZWdpc3RyeSA9IG5ldyBGbGFnUmVnaXN0cnk7CisgIHJldHVybiBnbG9iYWxf
cmVnaXN0cnk7Cit9CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEZsYWdSZWdpc3RyeUxvY2sgewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgRmxhZ1JlZ2lzdHJ5TG9jayhGbGFnUmVnaXN0cnkqIGZyKSA6
IGZyXyhmcikgeyBmcl8tPkxvY2soKTsgfQorICB+RmxhZ1JlZ2lzdHJ5TG9jaygpIHsgZnJfLT5V
bmxvY2soKTsgfQorCisgcHJpdmF0ZToKKyAgRmxhZ1JlZ2lzdHJ5KiBjb25zdCBmcl87Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UKKwordm9pZCBGbGFnUmVnaXN0cnk6OlJlZ2lzdGVyRmxhZyhDb21t
YW5kTGluZUZsYWcqIGZsYWcpIHsKKyAgRmxhZ1JlZ2lzdHJ5TG9jayByZWdpc3RyeV9sb2NrKHRo
aXMpOworICBzdGQ6OnBhaXI8RmxhZ0l0ZXJhdG9yLCBib29sPiBpbnMgPQorICAgICAgZmxhZ3Nf
Lmluc2VydChGbGFnTWFwOjp2YWx1ZV90eXBlKGZsYWctPk5hbWUoKSwgZmxhZykpOworICBpZiAo
aW5zLnNlY29uZCA9PSBmYWxzZSkgeyAgLy8gbWVhbnMgdGhlIG5hbWUgd2FzIGFscmVhZHkgaW4g
dGhlIG1hcAorICAgIENvbW1hbmRMaW5lRmxhZyogb2xkX2ZsYWcgPSBpbnMuZmlyc3QtPnNlY29u
ZDsKKyAgICBpZiAoZmxhZy0+SXNSZXRpcmVkKCkgIT0gb2xkX2ZsYWctPklzUmV0aXJlZCgpKSB7
CisgICAgICAvLyBBbGwgcmVnaXN0cmF0aW9ucyBtdXN0IGFncmVlIG9uIHRoZSAncmV0aXJlZCcg
ZmxhZy4KKyAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVycm9yKAorICAgICAgICAg
IGFic2w6OlN0ckNhdCgKKyAgICAgICAgICAgICAgIlJldGlyZWQgZmxhZyAnIiwgZmxhZy0+TmFt
ZSgpLAorICAgICAgICAgICAgICAiJyB3YXMgZGVmaW5lZCBub3JtYWxseSBpbiBmaWxlICciLAor
ICAgICAgICAgICAgICAoZmxhZy0+SXNSZXRpcmVkKCkgPyBvbGRfZmxhZy0+RmlsZW5hbWUoKSA6
IGZsYWctPkZpbGVuYW1lKCkpLAorICAgICAgICAgICAgICAiJy4iKSwKKyAgICAgICAgICB0cnVl
KTsKKyAgICB9IGVsc2UgaWYgKGZsYWctPm9wICE9IG9sZF9mbGFnLT5vcCkgeworICAgICAgZmxh
Z3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdlRXJyb3IoCisgICAgICAgICAgYWJzbDo6U3RyQ2F0KCJG
bGFnICciLCBmbGFnLT5OYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICInIHdhcyBkZWZp
bmVkIG1vcmUgdGhhbiBvbmNlIGJ1dCB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgImRp
ZmZlcmluZyB0eXBlcy4gRGVmaW5lZCBpbiBmaWxlcyAnIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgb2xkX2ZsYWctPkZpbGVuYW1lKCksICInIGFuZCAnIiwgZmxhZy0+RmlsZW5hbWUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIicgd2l0aCB0eXBlcyAnIiwgb2xkX2ZsYWctPlR5cGVuYW1l
KCksICInIGFuZCAnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgZmxhZy0+VHlwZW5hbWUoKSwg
IicsIHJlc3BlY3RpdmVseS4iKSwKKyAgICAgICAgICB0cnVlKTsKKyAgICB9IGVsc2UgaWYgKG9s
ZF9mbGFnLT5Jc1JldGlyZWQoKSkgeworICAgICAgLy8gUmV0aXJlZCBkZWZpbml0aW9ucyBhcmUg
aWRlbXBvdGVudC4gSnVzdCBrZWVwIHRoZSBvbGQgb25lLgorICAgICAgRGVzdHJveUZsYWcoZmxh
Zyk7CisgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChvbGRfZmxhZy0+RmlsZW5hbWUoKSAh
PSBmbGFnLT5GaWxlbmFtZSgpKSB7CisgICAgICBmbGFnc19pbnRlcm5hbDo6UmVwb3J0VXNhZ2VF
cnJvcigKKyAgICAgICAgICBhYnNsOjpTdHJDYXQoIkZsYWcgJyIsIGZsYWctPk5hbWUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIicgd2FzIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UgKGluIGZp
bGVzICciLAorICAgICAgICAgICAgICAgICAgICAgICBvbGRfZmxhZy0+RmlsZW5hbWUoKSwgIicg
YW5kICciLCBmbGFnLT5GaWxlbmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAiJykuIiks
CisgICAgICAgICAgdHJ1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZsYWdzX2ludGVybmFsOjpS
ZXBvcnRVc2FnZUVycm9yKAorICAgICAgICAgIGFic2w6OlN0ckNhdCgKKyAgICAgICAgICAgICAg
IlNvbWV0aGluZyB3cm9uZyB3aXRoIGZsYWcgJyIsIGZsYWctPk5hbWUoKSwgIicgaW4gZmlsZSAn
IiwKKyAgICAgICAgICAgICAgZmxhZy0+RmlsZW5hbWUoKSwgIicuIE9uZSBwb3NzaWJpbGl0eTog
ZmlsZSAnIiwgZmxhZy0+RmlsZW5hbWUoKSwKKyAgICAgICAgICAgICAgIicgaXMgYmVpbmcgbGlu
a2VkIGJvdGggc3RhdGljYWxseSBhbmQgZHluYW1pY2FsbHkgaW50byB0aGlzICIKKyAgICAgICAg
ICAgICAgImV4ZWN1dGFibGUuIGUuZy4gc29tZSBmaWxlcyBsaXN0ZWQgYXMgc3JjcyB0byBhIHRl
c3QgYW5kIGFsc28gIgorICAgICAgICAgICAgICAibGlzdGVkIGFzIHNyY3Mgb2Ygc29tZSBzaGFy
ZWQgbGliIGRlcHMgb2YgdGhlIHNhbWUgdGVzdC4iKSwKKyAgICAgICAgICB0cnVlKTsKKyAgICB9
CisgICAgLy8gQWxsIGNhc2VzIGFib3ZlIGFyZSBmYXRhbCwgZXhjZXB0IGZvciB0aGUgcmV0aXJl
ZCBmbGFncy4KKyAgICBzdGQ6OmV4aXQoMSk7CisgIH0KK30KKworQ29tbWFuZExpbmVGbGFnKiBG
bGFnUmVnaXN0cnk6OkZpbmRGbGFnTG9ja2VkKGFic2w6OnN0cmluZ192aWV3IG5hbWUpIHsKKyAg
RmxhZ0NvbnN0SXRlcmF0b3IgaSA9IGZsYWdzXy5maW5kKG5hbWUpOworICBpZiAoaSA9PSBmbGFn
c18uZW5kKCkpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIGlmIChpLT5zZWNvbmQt
PklzUmV0aXJlZCgpKSB7CisgICAgZmxhZ3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdlRXJyb3IoCisg
ICAgICAgIGFic2w6OlN0ckNhdCgiQWNjZXNzaW5nIHJldGlyZWQgZmxhZyAnIiwgbmFtZSwgIici
KSwgZmFsc2UpOworICB9CisKKyAgcmV0dXJuIGktPnNlY29uZDsKK30KKworQ29tbWFuZExpbmVG
bGFnKiBGbGFnUmVnaXN0cnk6OkZpbmRSZXRpcmVkRmxhZ0xvY2tlZChhYnNsOjpzdHJpbmdfdmll
dyBuYW1lKSB7CisgIEZsYWdDb25zdEl0ZXJhdG9yIGkgPSBmbGFnc18uZmluZChuYW1lKTsKKyAg
aWYgKGkgPT0gZmxhZ3NfLmVuZCgpIHx8ICFpLT5zZWNvbmQtPklzUmV0aXJlZCgpKSB7CisgICAg
cmV0dXJuIG51bGxwdHI7CisgIH0KKworICByZXR1cm4gaS0+c2Vjb25kOworfQorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gRmxhZ1NhdmVyCisvLyBGbGFnU2F2ZXJJbXBsCisvLyAgICBUaGlzIGNsYXNz
IHN0b3JlcyB0aGUgc3RhdGVzIG9mIGFsbCBmbGFncyBhdCBjb25zdHJ1Y3QgdGltZSwKKy8vICAg
IGFuZCByZXN0b3JlcyBhbGwgZmxhZ3MgdG8gdGhhdCBzdGF0ZSBhdCBkZXN0cnVjdCB0aW1lLgor
Ly8gICAgSXRzIG1ham9yIGltcGxlbWVudGF0aW9uIGNoYWxsZW5nZSBpcyB0aGF0IGl0IG5ldmVy
IG1vZGlmaWVzCisvLyAgICBwb2ludGVycyBpbiB0aGUgJ21haW4nIHJlZ2lzdHJ5LCBzbyBnbG9i
YWwgRkxBR18qIHZhcnMgYWx3YXlzCisvLyAgICBwb2ludCB0byB0aGUgcmlnaHQgcGxhY2UuCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitjbGFzcyBGbGFnU2F2ZXJJbXBsIHsKKyBwdWJsaWM6CisgIC8vIENv
bnN0cnVjdHMgYW4gZW1wdHkgRmxhZ1NhdmVySW1wbCBvYmplY3QuCisgIEZsYWdTYXZlckltcGwo
KSB7fQorICB+RmxhZ1NhdmVySW1wbCgpIHsKKyAgICAvLyByZWNsYWltIG1lbW9yeSBmcm9tIGVh
Y2ggb2Ygb3VyIENvbW1hbmRMaW5lRmxhZ3MKKyAgICBmb3IgKGNvbnN0IFNhdmVkRmxhZyYgc3Jj
IDogYmFja3VwX3JlZ2lzdHJ5XykgeworICAgICAgRGVsZXRlKHNyYy5vcCwgc3JjLmN1cnJlbnQp
OworICAgICAgRGVsZXRlKHNyYy5vcCwgc3JjLmRlZmF1bHRfdmFsdWUpOworICAgIH0KKyAgfQor
CisgIC8vIFNhdmVzIHRoZSBmbGFnIHN0YXRlcyBmcm9tIHRoZSBmbGFnIHJlZ2lzdHJ5IGludG8g
dGhpcyBvYmplY3QuCisgIC8vIEl0J3MgYW4gZXJyb3IgdG8gY2FsbCB0aGlzIG1vcmUgdGhhbiBv
bmNlLgorICAvLyBNdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSByZWdpc3RyeSBtdXRleCBpcyBub3Qg
aGVsZC4KKyAgdm9pZCBTYXZlRnJvbVJlZ2lzdHJ5KCkgeworICAgIGFzc2VydChiYWNrdXBfcmVn
aXN0cnlfLmVtcHR5KCkpOyAgLy8gY2FsbCBvbmx5IG9uY2UhCisgICAgU2F2ZWRGbGFnIHNhdmVk
OworICAgIGZsYWdzX2ludGVybmFsOjpGb3JFYWNoRmxhZyhbJl0oZmxhZ3NfaW50ZXJuYWw6OkNv
bW1hbmRMaW5lRmxhZyogZmxhZykgeworICAgICAgaWYgKGZsYWctPklzUmV0aXJlZCgpKSByZXR1
cm47CisKKyAgICAgIHNhdmVkLm5hbWUgPSBmbGFnLT5OYW1lKCk7CisgICAgICBzYXZlZC5vcCA9
IGZsYWctPm9wOworICAgICAgc2F2ZWQubWFyc2hhbGxpbmdfb3AgPSBmbGFnLT5tYXJzaGFsbGlu
Z19vcDsKKyAgICAgIHsKKyAgICAgICAgYWJzbDo6TXV0ZXhMb2NrIGwoZmxhZy0+SW5pdEZsYWdJ
Zk5lY2Vzc2FyeSgpKTsKKyAgICAgICAgc2F2ZWQudmFsaWRhdG9yID0gZmxhZy0+dmFsaWRhdG9y
OworICAgICAgICBzYXZlZC5tb2RpZmllZCA9IGZsYWctPm1vZGlmaWVkOworICAgICAgICBzYXZl
ZC5vbl9jb21tYW5kX2xpbmUgPSBmbGFnLT5vbl9jb21tYW5kX2xpbmU7CisgICAgICAgIHNhdmVk
LmN1cnJlbnQgPSBDbG9uZShzYXZlZC5vcCwgZmxhZy0+Y3VyKTsKKyAgICAgICAgc2F2ZWQuZGVm
YXVsdF92YWx1ZSA9IENsb25lKHNhdmVkLm9wLCBmbGFnLT5kZWYpOworICAgICAgICBzYXZlZC5j
b3VudGVyID0gZmxhZy0+Y291bnRlcjsKKyAgICAgIH0KKyAgICAgIGJhY2t1cF9yZWdpc3RyeV8u
cHVzaF9iYWNrKHNhdmVkKTsKKyAgICB9KTsKKyAgfQorCisgIC8vIFJlc3RvcmVzIHRoZSBzYXZl
ZCBmbGFnIHN0YXRlcyBpbnRvIHRoZSBmbGFnIHJlZ2lzdHJ5LiAgV2UKKyAgLy8gYXNzdW1lIG5v
IGZsYWdzIHdlcmUgYWRkZWQgb3IgZGVsZXRlZCBmcm9tIHRoZSByZWdpc3RyeSBzaW5jZQorICAv
LyB0aGUgU2F2ZUZyb21SZWdpc3RyeTsgaWYgdGhleSB3ZXJlLCB0aGF0J3MgdHJvdWJsZSEgIE11
c3QgYmUKKyAgLy8gY2FsbGVkIHdoZW4gdGhlIHJlZ2lzdHJ5IG11dGV4IGlzIG5vdCBoZWxkLgor
ICB2b2lkIFJlc3RvcmVUb1JlZ2lzdHJ5KCkgeworICAgIEZsYWdSZWdpc3RyeSogY29uc3QgZ2xv
YmFsX3JlZ2lzdHJ5ID0gRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpOworICAgIEZsYWdS
ZWdpc3RyeUxvY2sgZnJsKGdsb2JhbF9yZWdpc3RyeSk7CisgICAgZm9yIChjb25zdCBTYXZlZEZs
YWcmIHNyYyA6IGJhY2t1cF9yZWdpc3RyeV8pIHsKKyAgICAgIENvbW1hbmRMaW5lRmxhZyogZmxh
ZyA9IGdsb2JhbF9yZWdpc3RyeS0+RmluZEZsYWdMb2NrZWQoc3JjLm5hbWUpOworICAgICAgLy8g
SWYgbnVsbCwgZmxhZyBnb3QgZGVsZXRlZCBmcm9tIHJlZ2lzdHJ5LgorICAgICAgaWYgKCFmbGFn
KSBjb250aW51ZTsKKworICAgICAgYm9vbCByZXN0b3JlZCA9IGZhbHNlOworICAgICAgeworICAg
ICAgICBhYnNsOjpNdXRleExvY2sgbChmbGFnLT5Jbml0RmxhZ0lmTmVjZXNzYXJ5KCkpOworICAg
ICAgICBmbGFnLT52YWxpZGF0b3IgPSBzcmMudmFsaWRhdG9yOworICAgICAgICBmbGFnLT5tb2Rp
ZmllZCA9IHNyYy5tb2RpZmllZDsKKyAgICAgICAgZmxhZy0+b25fY29tbWFuZF9saW5lID0gc3Jj
Lm9uX2NvbW1hbmRfbGluZTsKKyAgICAgICAgaWYgKGZsYWctPmNvdW50ZXIgIT0gc3JjLmNvdW50
ZXIgfHwKKyAgICAgICAgICAgIENoYW5nZWREaXJlY3RseShmbGFnLCBzcmMuZGVmYXVsdF92YWx1
ZSwgZmxhZy0+ZGVmKSkgeworICAgICAgICAgIHJlc3RvcmVkID0gdHJ1ZTsKKyAgICAgICAgICBD
b3B5KHNyYy5vcCwgc3JjLmRlZmF1bHRfdmFsdWUsIGZsYWctPmRlZik7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGZsYWctPmNvdW50ZXIgIT0gc3JjLmNvdW50ZXIgfHwKKyAgICAgICAgICAgIENo
YW5nZWREaXJlY3RseShmbGFnLCBzcmMuY3VycmVudCwgZmxhZy0+Y3VyKSkgeworICAgICAgICAg
IHJlc3RvcmVkID0gdHJ1ZTsKKyAgICAgICAgICBDb3B5KHNyYy5vcCwgc3JjLmN1cnJlbnQsIGZs
YWctPmN1cik7CisgICAgICAgICAgVXBkYXRlQ29weShmbGFnKTsKKyAgICAgICAgICBmbGFnLT5J
bnZva2VDYWxsYmFjaygpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmIChyZXN0b3Jl
ZCkgeworICAgICAgICBmbGFnLT5jb3VudGVyKys7CisKKyAgICAgICAgLy8gUmV2YWxpZGF0ZSB0
aGUgZmxhZyBiZWNhdXNlIHRoZSB2YWxpZGF0b3IgbWlnaHQgc3RvcmUgc3RhdGUgYmFzZWQKKyAg
ICAgICAgLy8gb24gdGhlIGZsYWcncyB2YWx1ZSwgd2hpY2gganVzdCBjaGFuZ2VkIGR1ZSB0byB0
aGUgcmVzdG9yZS4KKyAgICAgICAgLy8gRmFpbGluZyB2YWxpZGF0aW9uIGlzIGlnbm9yZWQgYmVj
YXVzZSBpdCdzIGFzc3VtZWQgdGhhdCB0aGUgZmxhZworICAgICAgICAvLyB3YXMgdmFsaWQgcHJl
dmlvdXNseSBhbmQgdGhlcmUncyBsaXR0bGUgdGhhdCBjYW4gYmUgZG9uZSBhYm91dCBpdAorICAg
ICAgICAvLyBoZXJlLCBhbnl3YXkuCisgICAgICAgIGZsYWctPlZhbGlkYXRlSW5wdXRWYWx1ZShm
bGFnLT5DdXJyZW50VmFsdWUoKSk7CisKKyAgICAgICAgQUJTTF9JTlRFUk5BTF9MT0coCisgICAg
ICAgICAgICBJTkZPLCBhYnNsOjpTdHJDYXQoIlJlc3RvcmUgc2F2ZWQgdmFsdWUgb2YgIiwgZmxh
Zy0+TmFtZSgpLCAiOiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVucGFyc2Uo
c3JjLm1hcnNoYWxsaW5nX29wLCBzcmMuY3VycmVudCkpKTsKKyAgICAgIH0KKyAgICB9CisgIH0K
KworIHByaXZhdGU6CisgIHN0cnVjdCBTYXZlZEZsYWcgeworICAgIGFic2w6OnN0cmluZ192aWV3
IG5hbWU7CisgICAgRmxhZ09wRm4gb3A7CisgICAgRmxhZ01hcnNoYWxsaW5nT3BGbiBtYXJzaGFs
bGluZ19vcDsKKyAgICBpbnQ2NF90IGNvdW50ZXI7CisgICAgYm9vbCBtb2RpZmllZDsKKyAgICBi
b29sIG9uX2NvbW1hbmRfbGluZTsKKyAgICBib29sICgqdmFsaWRhdG9yKSgpOworICAgIGNvbnN0
IHZvaWQqIGN1cnJlbnQ7ICAgICAgICAvLyBudWxscHRyIGFmdGVyIHJlc3RvcmUKKyAgICBjb25z
dCB2b2lkKiBkZWZhdWx0X3ZhbHVlOyAgLy8gbnVsbHB0ciBhZnRlciByZXN0b3JlCisgIH07CisK
KyAgc3RkOjp2ZWN0b3I8U2F2ZWRGbGFnPiBiYWNrdXBfcmVnaXN0cnlfOworCisgIEZsYWdTYXZl
ckltcGwoY29uc3QgRmxhZ1NhdmVySW1wbCYpOyAgLy8gbm8gY29weWluZyEKKyAgdm9pZCBvcGVy
YXRvcj0oY29uc3QgRmxhZ1NhdmVySW1wbCYpOworfTsKKworRmxhZ1NhdmVyOjpGbGFnU2F2ZXIo
KSA6IGltcGxfKG5ldyBGbGFnU2F2ZXJJbXBsKCkpIHsKKyAgaW1wbF8tPlNhdmVGcm9tUmVnaXN0
cnkoKTsKK30KKwordm9pZCBGbGFnU2F2ZXI6Oklnbm9yZSgpIHsKKyAgZGVsZXRlIGltcGxfOwor
ICBpbXBsXyA9IG51bGxwdHI7Cit9CisKK0ZsYWdTYXZlcjo6fkZsYWdTYXZlcigpIHsKKyAgaWYg
KCFpbXBsXykgcmV0dXJuOworCisgIGltcGxfLT5SZXN0b3JlVG9SZWdpc3RyeSgpOworICBkZWxl
dGUgaW1wbF87Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBHZXRBbGxGbGFncygpCisvLyAgICBU
aGUgbWFpbiB3YXkgdGhlIEZsYWdSZWdpc3RyeSBjbGFzcyBleHBvc2VzIGl0cyBkYXRhLiAgVGhp
cworLy8gICAgcmV0dXJucywgYXMgc3RyaW5ncywgYWxsIHRoZSBpbmZvIGFib3V0IGFsbCB0aGUg
ZmxhZ3MgaW4KKy8vICAgIHRoZSBtYWluIHJlZ2lzdHJ5LCBzb3J0ZWQgZmlyc3QgYnkgZmlsZW5h
bWUgdGhleSBhcmUgZGVmaW5lZAorLy8gICAgaW4sIGFuZCB0aGVuIGJ5IGZsYWduYW1lLgorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworc3RydWN0IEZpbGVuYW1lRmxhZ25hbWVMZXNzIHsKKyAgYm9vbCBvcGVy
YXRvcigpKGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8mIGEsCisgICAgICAgICAgICAgICAgICBj
b25zdCBDb21tYW5kTGluZUZsYWdJbmZvJiBiKSBjb25zdCB7CisgICAgaW50IGNtcCA9IGFic2w6
OnN0cmluZ192aWV3KGEuZmlsZW5hbWUpLmNvbXBhcmUoYi5maWxlbmFtZSk7CisgICAgaWYgKGNt
cCAhPSAwKSByZXR1cm4gY21wIDwgMDsKKyAgICByZXR1cm4gYS5uYW1lIDwgYi5uYW1lOworICB9
Cit9OworCit2b2lkIEZpbGxDb21tYW5kTGluZUZsYWdJbmZvKENvbW1hbmRMaW5lRmxhZyogZmxh
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZExpbmVGbGFnSW5mbyogcmVz
dWx0KSB7CisgIHJlc3VsdC0+bmFtZSA9IHN0ZDo6c3RyaW5nKGZsYWctPk5hbWUoKSk7CisgIHJl
c3VsdC0+dHlwZSA9IHN0ZDo6c3RyaW5nKGZsYWctPlR5cGVuYW1lKCkpOworICByZXN1bHQtPmRl
c2NyaXB0aW9uID0gZmxhZy0+SGVscCgpOworICByZXN1bHQtPmZpbGVuYW1lID0gZmxhZy0+Rmls
ZW5hbWUoKTsKKworICBpZiAoIWZsYWctPklzQWJzZWlsRmxhZygpKSB7CisgICAgaWYgKCFmbGFn
LT5Jc01vZGlmaWVkKCkgJiYgQ2hhbmdlZERpcmVjdGx5KGZsYWcsIGZsYWctPmN1ciwgZmxhZy0+
ZGVmKSkgeworICAgICAgZmxhZy0+bW9kaWZpZWQgPSB0cnVlOworICAgIH0KKyAgfQorCisgIHJl
c3VsdC0+Y3VycmVudF92YWx1ZSA9IGZsYWctPkN1cnJlbnRWYWx1ZSgpOworICByZXN1bHQtPmRl
ZmF1bHRfdmFsdWUgPSBmbGFnLT5EZWZhdWx0VmFsdWUoKTsKKyAgcmVzdWx0LT5pc19kZWZhdWx0
ID0gIWZsYWctPklzTW9kaWZpZWQoKTsKKyAgcmVzdWx0LT5oYXNfdmFsaWRhdG9yX2ZuID0gZmxh
Zy0+SGFzVmFsaWRhdG9yRm4oKTsKKyAgYWJzbDo6TXV0ZXhMb2NrIGwoZmxhZy0+SW5pdEZsYWdJ
Zk5lY2Vzc2FyeSgpKTsKKyAgcmVzdWx0LT5mbGFnX3B0ciA9IGZsYWctPklzQWJzZWlsRmxhZygp
ID8gbnVsbHB0ciA6IGZsYWctPmN1cjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29tbWFuZExp
bmVGbGFnKiBGaW5kQ29tbWFuZExpbmVGbGFnKGFic2w6OnN0cmluZ192aWV3IG5hbWUpIHsKKyAg
aWYgKG5hbWUuZW1wdHkoKSkgcmV0dXJuIG51bGxwdHI7CisgIEZsYWdSZWdpc3RyeSogY29uc3Qg
cmVnaXN0cnkgPSBGbGFnUmVnaXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCk7CisgIEZsYWdSZWdpc3Ry
eUxvY2sgZnJsKHJlZ2lzdHJ5KTsKKworICByZXR1cm4gcmVnaXN0cnktPkZpbmRGbGFnTG9ja2Vk
KG5hbWUpOworfQorCitDb21tYW5kTGluZUZsYWcqIEZpbmRSZXRpcmVkRmxhZyhhYnNsOjpzdHJp
bmdfdmlldyBuYW1lKSB7CisgIEZsYWdSZWdpc3RyeSogY29uc3QgcmVnaXN0cnkgPSBGbGFnUmVn
aXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCk7CisgIEZsYWdSZWdpc3RyeUxvY2sgZnJsKHJlZ2lzdHJ5
KTsKKworICByZXR1cm4gcmVnaXN0cnktPkZpbmRSZXRpcmVkRmxhZ0xvY2tlZChuYW1lKTsKK30K
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBGb3JFYWNoRmxhZ1VubG9ja2VkKHN0ZDo6ZnVuY3Rp
b248dm9pZChDb21tYW5kTGluZUZsYWcqKT4gdmlzaXRvcikgeworICBGbGFnUmVnaXN0cnkqIGNv
bnN0IHJlZ2lzdHJ5ID0gRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpOworICBmb3IgKEZs
YWdSZWdpc3RyeTo6RmxhZ0NvbnN0SXRlcmF0b3IgaSA9IHJlZ2lzdHJ5LT5mbGFnc18uYmVnaW4o
KTsKKyAgICAgICBpICE9IHJlZ2lzdHJ5LT5mbGFnc18uZW5kKCk7ICsraSkgeworICAgIHZpc2l0
b3IoaS0+c2Vjb25kKTsKKyAgfQorfQorCit2b2lkIEZvckVhY2hGbGFnKHN0ZDo6ZnVuY3Rpb248
dm9pZChDb21tYW5kTGluZUZsYWcqKT4gdmlzaXRvcikgeworICBGbGFnUmVnaXN0cnkqIGNvbnN0
IHJlZ2lzdHJ5ID0gRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpOworICBGbGFnUmVnaXN0
cnlMb2NrIGZybChyZWdpc3RyeSk7CisgIEZvckVhY2hGbGFnVW5sb2NrZWQodmlzaXRvcik7Cit9
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgR2V0QWxsRmxhZ3Moc3RkOjp2ZWN0b3I8Q29tbWFu
ZExpbmVGbGFnSW5mbz4qIE9VVFBVVCkgeworICBmbGFnc19pbnRlcm5hbDo6Rm9yRWFjaEZsYWco
WyZdKENvbW1hbmRMaW5lRmxhZyogZmxhZykgeworICAgIGlmIChmbGFnLT5Jc1JldGlyZWQoKSkg
cmV0dXJuOworCisgICAgQ29tbWFuZExpbmVGbGFnSW5mbyBmaTsKKyAgICBGaWxsQ29tbWFuZExp
bmVGbGFnSW5mbyhmbGFnLCAmZmkpOworICAgIE9VVFBVVC0+cHVzaF9iYWNrKGZpKTsKKyAgfSk7
CisKKyAgLy8gTm93IHNvcnQgdGhlIGZsYWdzLCBmaXJzdCBieSBmaWxlbmFtZSB0aGV5IG9jY3Vy
IGluLCB0aGVuIGFscGhhYmV0aWNhbGx5CisgIHN0ZDo6c29ydChPVVRQVVQtPmJlZ2luKCksIE9V
VFBVVC0+ZW5kKCksIEZpbGVuYW1lRmxhZ25hbWVMZXNzKCkpOworfQorCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitib29sIFJlZ2lzdGVyQ29tbWFuZExpbmVGbGFnKENvbW1hbmRMaW5lRmxhZyogZmxhZykg
eworICBGbGFnUmVnaXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCktPlJlZ2lzdGVyRmxhZyhmbGFnKTsK
KyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgUmV0aXJlKEZsYWdP
cEZuIG9wcywgRmxhZ01hcnNoYWxsaW5nT3BGbiBtYXJzaGFsbGluZ19vcHMsCisgICAgICAgICAg
ICBjb25zdCBjaGFyKiBuYW1lKSB7CisgIGF1dG8qIGZsYWcgPSBuZXcgQ29tbWFuZExpbmVGbGFn
KAorICAgICAgbmFtZSwKKyAgICAgIC8qaGVscF90ZXh0PSovYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6
OkhlbHBUZXh0OjpGcm9tU3RhdGljQ1N0cmluZyhudWxscHRyKSwKKyAgICAgIC8qZmlsZW5hbWVf
YXJnPSovIlJFVElSRUQiLCBvcHMsIG1hcnNoYWxsaW5nX29wcywKKyAgICAgIC8qaW5pdGlhbF92
YWx1ZV9nZW49Ki9udWxscHRyLAorICAgICAgLypyZXRpcmVkX2FyZz0qL3RydWUsIG51bGxwdHIs
IG51bGxwdHIpOworICBGbGFnUmVnaXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCktPlJlZ2lzdGVyRmxh
ZyhmbGFnKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgSXNS
ZXRpcmVkRmxhZyhhYnNsOjpzdHJpbmdfdmlldyBuYW1lLCBib29sKiB0eXBlX2lzX2Jvb2wpIHsK
KyAgYXNzZXJ0KCFuYW1lLmVtcHR5KCkpOworICBDb21tYW5kTGluZUZsYWcqIGZsYWcgPSBmbGFn
c19pbnRlcm5hbDo6RmluZFJldGlyZWRGbGFnKG5hbWUpOworICBpZiAoZmxhZyA9PSBudWxscHRy
KSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGFzc2VydCh0eXBlX2lzX2Jvb2wpOworICAq
dHlwZV9pc19ib29sID0gZmxhZy0+SXNPZlR5cGU8Ym9vbD4oKTsKKyAgcmV0dXJuIHRydWU7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3JlZ2lzdHJ5LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFn
cy9pbnRlcm5hbC9yZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3NTY2ZmJmNGFiNzBlOGQyNzc5N2Iy
NDE1OTgyMjdlYjI1MjljYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5h
bC9yZWdpc3RyeS5oCkBAIC0wLDAgKzEsMTY3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9GTEFHU19JTlRFUk5BTF9SRUdJU1RS
WV9IXworI2RlZmluZSBBQlNMX0ZMQUdTX0lOVEVSTkFMX1JFR0lTVFJZX0hfCisKKyNpbmNsdWRl
IDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNs
dWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9j
b21tYW5kbGluZWZsYWcuaCIKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEdsb2JhbCBmbGFncyByZWdp
c3RyeSBBUEkuCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7
CisKKy8vIENvbW1hbmRMaW5lRmxhZ0luZm8gaG9sZHMgYWxsIGluZm9ybWF0aW9uIGZvciBhIGZs
YWcuCitzdHJ1Y3QgQ29tbWFuZExpbmVGbGFnSW5mbyB7CisgIHN0ZDo6c3RyaW5nIG5hbWU7ICAg
ICAgICAgICAvLyB0aGUgbmFtZSBvZiB0aGUgZmxhZworICBzdGQ6OnN0cmluZyB0eXBlOyAgICAg
ICAgICAgLy8gRE8gTk9UIHVzZS4gVXNlIGZsYWctPklzT2ZUeXBlPFQ+KCkgaW5zdGVhZC4KKyAg
c3RkOjpzdHJpbmcgZGVzY3JpcHRpb247ICAgIC8vIHRoZSAiaGVscCB0ZXh0IiBhc3NvY2lhdGVk
IHdpdGggdGhlIGZsYWcKKyAgc3RkOjpzdHJpbmcgY3VycmVudF92YWx1ZTsgIC8vIHRoZSBjdXJy
ZW50IHZhbHVlLCBhcyBhIHN0ZDo6c3RyaW5nCisgIHN0ZDo6c3RyaW5nIGRlZmF1bHRfdmFsdWU7
ICAvLyB0aGUgZGVmYXVsdCB2YWx1ZSwgYXMgYSBzdGQ6OnN0cmluZworICBzdGQ6OnN0cmluZyBm
aWxlbmFtZTsgICAgICAgLy8gJ2NsZWFuZWQnIHZlcnNpb24gb2YgZmlsZW5hbWUgaG9sZGluZyB0
aGUgZmxhZworICBib29sIGhhc192YWxpZGF0b3JfZm47ICAvLyB0cnVlIGlmIFJlZ2lzdGVyRmxh
Z1ZhbGlkYXRvciBjYWxsZWQgb24gdGhpcyBmbGFnCisKKyAgYm9vbCBpc19kZWZhdWx0OyAgLy8g
dHJ1ZSBpZiB0aGUgZmxhZyBoYXMgdGhlIGRlZmF1bHQgdmFsdWUgYW5kCisgICAgICAgICAgICAg
ICAgICAgIC8vIGhhcyBub3QgYmVlbiBzZXQgZXhwbGljaXRseSBmcm9tIHRoZSBjbWRsaW5lCisg
ICAgICAgICAgICAgICAgICAgIC8vIG9yIHZpYSBTZXRDb21tYW5kTGluZU9wdGlvbi4KKworICAv
LyBudWxscHRyIGZvciBBQlNMX0ZMQUcuICBBIHBvaW50ZXIgdG8gdGhlIGZsYWcncyBjdXJyZW50
IHZhbHVlCisgIC8vIG90aGVyd2lzZS4gIEUuZy4sIGZvciBERUZJTkVfaW50MzIoZm9vLCAuLi4p
LCBmbGFnX3B0ciB3aWxsIGJlCisgIC8vICZGTEFHU19mb28uCisgIGNvbnN0IHZvaWQqIGZsYWdf
cHRyOworfTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIEZpbGxDb21tYW5kTGlu
ZUZsYWdJbmZvKENvbW1hbmRMaW5lRmxhZyogZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ29tbWFuZExpbmVGbGFnSW5mbyogcmVzdWx0KTsKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitDb21tYW5kTGluZUZsYWcqIEZpbmRDb21tYW5kTGluZUZsYWcoYWJzbDo6c3RyaW5n
X3ZpZXcgbmFtZSk7CitDb21tYW5kTGluZUZsYWcqIEZpbmRSZXRpcmVkRmxhZyhhYnNsOjpzdHJp
bmdfdmlldyBuYW1lKTsKKworLy8gRXhlY3V0ZXMgc3BlY2lmaWVkIHZpc2l0b3IgZm9yIGVhY2gg
bm9uLXJldGlyZWQgZmxhZyBpbiB0aGUgcmVnaXN0cnkuCisvLyBSZXF1aXJlcyB0aGUgY2FsbGVy
IGhvbGQgdGhlIHJlZ2lzdHJ5IGxvY2suCit2b2lkIEZvckVhY2hGbGFnVW5sb2NrZWQoc3RkOjpm
dW5jdGlvbjx2b2lkKENvbW1hbmRMaW5lRmxhZyopPiB2aXNpdG9yKTsKKy8vIEV4ZWN1dGVzIHNw
ZWNpZmllZCB2aXNpdG9yIGZvciBlYWNoIG5vbi1yZXRpcmVkIGZsYWcgaW4gdGhlIHJlZ2lzdHJ5
LiBXaGlsZQorLy8gY2FsbGJhY2sgYXJlIGV4ZWN1dGVkLCB0aGUgcmVnaXN0cnkgaXMgbG9ja2Vk
IGFuZCBjYW4ndCBiZSBjaGFuZ2VkLgordm9pZCBGb3JFYWNoRmxhZyhzdGQ6OmZ1bmN0aW9uPHZv
aWQoQ29tbWFuZExpbmVGbGFnKik+IHZpc2l0b3IpOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKy8vIFN0b3JlIHRoZSBsaXN0IG9mIGFsbCBmbGFncyBpbiAqT1VUUFVULCBzb3J0ZWQgYnkg
ZmlsZS4KK3ZvaWQgR2V0QWxsRmxhZ3Moc3RkOjp2ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5mbz4q
IE9VVFBVVCk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBSZWdpc3RlckNvbW1h
bmRMaW5lRmxhZyhDb21tYW5kTGluZUZsYWcqKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gUmV0aXJlZCByZWdpc3RyYXRpb25zOgorLy8KKy8vIFJldGlyZWQgZmxhZyByZWdpc3RyYXRp
b25zIGFyZSB0cmVhdGVkIHNwZWNpYWxseS4gQSAncmV0aXJlZCcgZmxhZyBpcworLy8gcHJvdmlk
ZWQgb25seSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGF1dG9tYXRlZCBpbnZvY2F0aW9ucyB0aGF0
IHN0aWxsCisvLyBuYW1lIGl0LiAgQSAncmV0aXJlZCcgZmxhZzoKKy8vICAgLSBpcyBub3QgYm91
bmQgdG8gYSBDKysgRkxBR1NfIHJlZmVyZW5jZS4KKy8vICAgLSBoYXMgYSB0eXBlIGFuZCBhIHZh
bHVlLCBidXQgdGhhdCB2YWx1ZSBpcyBpbnRlbnRpb25hbGx5IGluYWNjZXNzaWJsZS4KKy8vICAg
LSBkb2VzIG5vdCBhcHBlYXIgaW4gLS1oZWxwIG1lc3NhZ2VzLgorLy8gICAtIGlzIGZ1bGx5IHN1
cHBvcnRlZCBieSBfYWxsXyBmbGFnIHBhcnNpbmcgcm91dGluZXMuCisvLyAgIC0gY29uc3VtZXMg
YXJncyBub3JtYWxseSwgYW5kIGNvbXBsYWlucyBhYm91dCB0eXBlIG1pc21hdGNoZXMgaW4gaXRz
CisvLyAgICAgYXJndW1lbnQuCisvLyAgIC0gZW1pdHMgYSBjb21wbGFpbnQgYnV0IGRvZXMgbm90
IGRpZSAoZS5nLiBMT0coRVJST1IpKSBpZiBpdCBpcworLy8gICAgIGFjY2Vzc2VkIGJ5IG5hbWUg
dGhyb3VnaCB0aGUgZmxhZ3MgQVBJIGZvciBwYXJzaW5nIG9yIG90aGVyd2lzZS4KKy8vCisvLyBU
aGUgcmVnaXN0cmF0aW9ucyBmb3IgYSBmbGFnIGhhcHBlbiBpbiBhbiB1bnNwZWNpZmllZCBvcmRl
ciBhcyB0aGUKKy8vIGluaXRpYWxpemVycyBmb3IgdGhlIG5hbWVzcGFjZS1zY29wZSBvYmplY3Rz
IG9mIGEgcHJvZ3JhbSBhcmUgcnVuLgorLy8gQW55IG51bWJlciBvZiB3ZWFrIHJlZ2lzdHJhdGlv
bnMgZm9yIGEgZmxhZyBjYW4gd2Vha2x5IGRlZmluZSB0aGUgZmxhZy4KKy8vIE9uZSBub24td2Vh
ayByZWdpc3RyYXRpb24gd2lsbCB1cGdyYWRlIHRoZSBmbGFnIGZyb20gd2VhayB0byBub24td2Vh
ay4KKy8vIEZ1cnRoZXIgd2VhayByZWdpc3RyYXRpb25zIG9mIGEgbm9uLXdlYWsgZmxhZyBhcmUg
aWdub3JlZC4KKy8vCisvLyBUaGlzIG1lY2hhbmlzbSBpcyBkZXNpZ25lZCB0byBzdXBwb3J0IG1v
dmluZyBkZWFkIGZsYWdzIGludG8gYQorLy8gJ2dyYXZleWFyZCcgbGlicmFyeS4gIEFuIGV4YW1w
bGUgbWlncmF0aW9uOgorLy8KKy8vICAgMDogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gdGhpcyBGTEFH
U19mbGFnbmFtZSBpbiB0aGUgQysrIGNvZGViYXNlLgorLy8gICAxOiBSZWdpc3RlciBhcyAncmV0
aXJlZCcgaW4gb2xkX2xpYi4KKy8vICAgMjogTWFrZSBvbGRfbGliIGRlcGVuZCBvbiBncmF2ZXlh
cmQuCisvLyAgIDM6IEFkZCBhIHJlZHVuZGFudCAncmV0aXJlZCcgcmVnaXN0cmF0aW9uIHRvIGdy
YXZleWFyZC4KKy8vICAgNDogUmVtb3ZlIHRoZSBvbGRfbGliICdyZXRpcmVkJyByZWdpc3RyYXRp
b24uCisvLyAgIDU6IEV2ZW50dWFsbHkgZGVsZXRlIHRoZSBncmF2ZXlhcmQgcmVnaXN0cmF0aW9u
IGVudGlyZWx5LgorLy8KKy8vIFJldHVybnMgYm9vbCB0byBlbmFibGUgdXNlIGluIG5hbWVzcGFj
ZS1zY29wZSBpbml0aWFsaXplcnMuCisvLyBGb3IgZXhhbXBsZToKKy8vCisvLyAgIHN0YXRpYyBj
b25zdCBib29sIGR1bW15ID0gYmFzZTo6UmV0aXJlZEZsYWc8aW50MzJfdD4oIm15ZmxhZyIpOwor
Ly8KKy8vIE9yIHRvIGRlY2xhcmUgc2V2ZXJhbCBhdCBvbmNlOgorLy8KKy8vICAgc3RhdGljIGJv
b2wgZHVtbWllc1tdID0geworLy8gICAgICAgYmFzZTo6UmV0aXJlZEZsYWc8c3RkOjpzdHJpbmc+
KCJzb21lX3N0cmluZ19mbGFnIiksCisvLyAgICAgICBiYXNlOjpSZXRpcmVkRmxhZzxkb3VibGU+
KCJzb21lX2RvdWJsZV9mbGFnIiksCisvLyAgICAgICBiYXNlOjpSZXRpcmVkRmxhZzxpbnQzMl90
Pigic29tZV9pbnQzMl9mbGFnIikKKy8vICAgfTsKKworLy8gUmV0aXJlIGZsYWcgd2l0aCBuYW1l
ICJuYW1lIiBhbmQgdHlwZSBpbmRpY2F0ZWQgYnkgb3BzLgorYm9vbCBSZXRpcmUoRmxhZ09wRm4g
b3BzLCBGbGFnTWFyc2hhbGxpbmdPcEZuIG1hcnNoYWxsaW5nX29wcywKKyAgICAgICAgICAgIGNv
bnN0IGNoYXIqIG5hbWUpOworCisvLyBSZWdpc3RlcmVkIGEgcmV0aXJlZCBmbGFnIHdpdGggbmFt
ZSAnZmxhZ19uYW1lJyBhbmQgdHlwZSAnVCcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGlu
ZSBib29sIFJldGlyZWRGbGFnKGNvbnN0IGNoYXIqIGZsYWdfbmFtZSkgeworICByZXR1cm4gZmxh
Z3NfaW50ZXJuYWw6OlJldGlyZShmbGFnc19pbnRlcm5hbDo6RmxhZ09wczxUPiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdNYXJzaGFsbGluZ09w
czxUPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19uYW1lKTsKK30KKwor
Ly8gSWYgdGhlIGZsYWcgaXMgcmV0aXJlZCwgcmV0dXJucyB0cnVlIGFuZCBpbmRpY2F0ZXMgaW4g
fCp0eXBlX2lzX2Jvb2x8CisvLyB3aGV0aGVyIHRoZSB0eXBlIG9mIHRoZSByZXRpcmVkIGZsYWcg
aXMgYSBib29sLgorLy8gT25seSB0byBiZSBjYWxsZWQgYnkgY29kZSB0aGF0IG5lZWRzIHRvIGV4
cGxpY2l0bHkgaWdub3JlIHJldGlyZWQgZmxhZ3MuCitib29sIElzUmV0aXJlZEZsYWcoYWJzbDo6
c3RyaW5nX3ZpZXcgbmFtZSwgYm9vbCogdHlwZV9pc19ib29sKTsKKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gU2F2ZXMgdGhlIHN0YXRlcyAodmFsdWUsIGRlZmF1bHQgdmFsdWUsIHdoZXRo
ZXIgdGhlIHVzZXIgaGFzIHNldAorLy8gdGhlIGZsYWcsIHJlZ2lzdGVyZWQgdmFsaWRhdG9ycywg
ZXRjKSBvZiBhbGwgZmxhZ3MsIGFuZCByZXN0b3JlcworLy8gdGhlbSB3aGVuIHRoZSBGbGFnU2F2
ZXIgaXMgZGVzdHJveWVkLgorLy8KKy8vIFRoaXMgY2xhc3MgaXMgdGhyZWFkLXNhZmUuICBIb3dl
dmVyLCBpdHMgZGVzdHJ1Y3RvciB3cml0ZXMgdG8KKy8vIGV4YWN0bHkgdGhlIHNldCBvZiBmbGFn
cyB0aGF0IGhhdmUgY2hhbmdlZCB2YWx1ZSBkdXJpbmcgaXRzCisvLyBsaWZldGltZSwgc28gY29u
Y3VycmVudCBfZGlyZWN0XyBhY2Nlc3MgdG8gdGhvc2UgZmxhZ3MKKy8vIChpLmUuIEZMQUdTX2Zv
byBpbnN0ZWFkIG9mIHtHZXQsU2V0fUNvbW1hbmRMaW5lT3B0aW9uKCkpIGlzIHVuc2FmZS4KKwor
Y2xhc3MgRmxhZ1NhdmVyIHsKKyBwdWJsaWM6CisgIEZsYWdTYXZlcigpOworICB+RmxhZ1NhdmVy
KCk7CisKKyAgRmxhZ1NhdmVyKGNvbnN0IEZsYWdTYXZlciYpID0gZGVsZXRlOworICB2b2lkIG9w
ZXJhdG9yPShjb25zdCBGbGFnU2F2ZXImKSA9IGRlbGV0ZTsKKworICAvLyBQcmV2ZW50cyBzYXZl
ciBmcm9tIHJlc3RvcmluZyB0aGUgc2F2ZWQgc3RhdGUgb2YgZmxhZ3MuCisgIHZvaWQgSWdub3Jl
KCk7CisKKyBwcml2YXRlOgorICBjbGFzcyBGbGFnU2F2ZXJJbXBsKiBpbXBsXzsgIC8vIHdlIHVz
ZSBwaW1wbCBoZXJlIHRvIGtlZXAgQVBJIHN0ZWFkeQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGZs
YWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfRkxB
R1NfSU5URVJOQUxfUkVHSVNUUllfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFs
L3R5cGVfZXJhc2VkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvdHlwZV9lcmFzZWQuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjk4NDI5MWM4N2M3ZmZkN2E1NGZlOWE5NGYwMjVlZTYxZDFmMGE2NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3R5cGVfZXJhc2VkLmNjCkBAIC0wLDAg
KzEsMTA2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3R5cGVfZXJhc2VkLmgiCisKKyNpbmNsdWRl
ICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdz
L2NvbmZpZy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvdXNhZ2VfY29uZmlnLmgiCisjaW5jbHVk
ZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNl
IGZsYWdzX2ludGVybmFsIHsKKworYm9vbCBHZXRDb21tYW5kTGluZU9wdGlvbihhYnNsOjpzdHJp
bmdfdmlldyBuYW1lLCBzdGQ6OnN0cmluZyogdmFsdWUpIHsKKyAgaWYgKG5hbWUuZW1wdHkoKSkg
cmV0dXJuIGZhbHNlOworICBhc3NlcnQodmFsdWUpOworCisgIENvbW1hbmRMaW5lRmxhZyogZmxh
ZyA9IGZsYWdzX2ludGVybmFsOjpGaW5kQ29tbWFuZExpbmVGbGFnKG5hbWUpOworICBpZiAoZmxh
ZyA9PSBudWxscHRyIHx8IGZsYWctPklzUmV0aXJlZCgpKSB7CisgICAgcmV0dXJuIGZhbHNlOwor
ICB9CisKKyAgKnZhbHVlID0gZmxhZy0+Q3VycmVudFZhbHVlKCk7CisgIHJldHVybiB0cnVlOwor
fQorCitib29sIEdldENvbW1hbmRMaW5lRmxhZ0luZm8oYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kTGluZUZsYWdJbmZvKiBPVVRQVVQp
IHsKKyAgaWYgKG5hbWUuZW1wdHkoKSkgcmV0dXJuIGZhbHNlOworCisgIENvbW1hbmRMaW5lRmxh
ZyogZmxhZyA9IGZsYWdzX2ludGVybmFsOjpGaW5kQ29tbWFuZExpbmVGbGFnKG5hbWUpOworICBp
ZiAoZmxhZyA9PSBudWxscHRyIHx8IGZsYWctPklzUmV0aXJlZCgpKSB7CisgICAgcmV0dXJuIGZh
bHNlOworICB9CisKKyAgYXNzZXJ0KE9VVFBVVCk7CisgIEZpbGxDb21tYW5kTGluZUZsYWdJbmZv
KGZsYWcsIE9VVFBVVCk7CisgIHJldHVybiB0cnVlOworfQorCitDb21tYW5kTGluZUZsYWdJbmZv
IEdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZShhYnNsOjpzdHJpbmdfdmlldyBuYW1lKSB7Cisg
IENvbW1hbmRMaW5lRmxhZ0luZm8gaW5mbzsKKyAgaWYgKCFHZXRDb21tYW5kTGluZUZsYWdJbmZv
KG5hbWUsICZpbmZvKSkgeworICAgIEFCU0xfSU5URVJOQUxfTE9HKEZBVEFMLCBhYnNsOjpTdHJD
YXQoIkZsYWcgJyIsIG5hbWUsICInIGRvZXMgbm90IGV4aXN0IikpOworICB9CisgIHJldHVybiBp
bmZvOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIFNldENvbW1hbmRMaW5lT3B0aW9uKGFi
c2w6OnN0cmluZ192aWV3IG5hbWUsIGFic2w6OnN0cmluZ192aWV3IHZhbHVlKSB7CisgIHJldHVy
biBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKG5hbWUsIHZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc19pbnRlcm5hbDo6U0VUX0ZMQUdTX1ZBTFVF
KTsKK30KKworYm9vbCBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKGFic2w6OnN0cmluZ192
aWV3IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5n
X3ZpZXcgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhZ1NldHRp
bmdNb2RlIHNldF9tb2RlKSB7CisgIENvbW1hbmRMaW5lRmxhZyogZmxhZyA9IGZsYWdzX2ludGVy
bmFsOjpGaW5kQ29tbWFuZExpbmVGbGFnKG5hbWUpOworCisgIGlmICghZmxhZyB8fCBmbGFnLT5J
c1JldGlyZWQoKSkgcmV0dXJuIGZhbHNlOworCisgIHN0ZDo6c3RyaW5nIGVycm9yOworICBpZiAo
IWZsYWctPlNldEZyb21TdHJpbmcodmFsdWUsIHNldF9tb2RlLCBrUHJvZ3JhbW1hdGljQ2hhbmdl
LCAmZXJyb3IpKSB7CisgICAgLy8gRXJyb3JzIGhlcmUgYXJlIGFsbCBvZiB0aGUgZm9ybTogdGhl
IHByb3ZpZGVkIG5hbWUgd2FzIGEgcmVjb2duaXplZAorICAgIC8vIGZsYWcsIGJ1dCB0aGUgdmFs
dWUgd2FzIGludmFsaWQgKGJhZCB0eXBlLCBvciB2YWxpZGF0aW9uIGZhaWxlZCkuCisgICAgZmxh
Z3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdlRXJyb3IoZXJyb3IsIGZhbHNlKTsKKyAgICByZXR1cm4g
ZmFsc2U7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9v
bCBJc1ZhbGlkRmxhZ1ZhbHVlKGFic2w6OnN0cmluZ192aWV3IG5hbWUsIGFic2w6OnN0cmluZ192
aWV3IHZhbHVlKSB7CisgIENvbW1hbmRMaW5lRmxhZyogZmxhZyA9IGZsYWdzX2ludGVybmFsOjpG
aW5kQ29tbWFuZExpbmVGbGFnKG5hbWUpOworCisgIHJldHVybiBmbGFnICE9IG51bGxwdHIgJiYK
KyAgICAgICAgIChmbGFnLT5Jc1JldGlyZWQoKSB8fCBmbGFnLT5WYWxpZGF0ZUlucHV0VmFsdWUo
dmFsdWUpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBTcGVjaWZpZWRPbkNvbW1hbmRM
aW5lKGFic2w6OnN0cmluZ192aWV3IG5hbWUpIHsKKyAgQ29tbWFuZExpbmVGbGFnKiBmbGFnID0g
ZmxhZ3NfaW50ZXJuYWw6OkZpbmRDb21tYW5kTGluZUZsYWcobmFtZSk7CisgIGlmIChmbGFnICE9
IG51bGxwdHIgJiYgIWZsYWctPklzUmV0aXJlZCgpKSB7CisgICAgcmV0dXJuIGZsYWctPklzU3Bl
Y2lmaWVkT25Db21tYW5kTGluZSgpOworICB9CisgIHJldHVybiBmYWxzZTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvdHlwZV9lcmFzZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVy
bmFsL3R5cGVfZXJhc2VkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5ZDM2YjlmMzNmMDQ5ZjNiYmQxMjY0YTNj
YzUwNjQzYWRkZjJlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3R5
cGVfZXJhc2VkLmgKQEAgLTAsMCArMSw5NyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfRkxBR1NfSU5URVJOQUxfVFlQRV9FUkFT
RURfSF8KKyNkZWZpbmUgQUJTTF9GTEFHU19JTlRFUk5BTF9UWVBFX0VSQVNFRF9IXworCisjaW5j
bHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGlu
ZWZsYWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3JlZ2lzdHJ5LmgiCisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyBSZWdpc3RyeSBpbnRlcmZhY2VzIG9wZXJhdGluZyBvbiB0eXBlIGVy
YXNlZCBoYW5kbGVzLgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJu
YWwgeworCisvLyBJZiBhIGZsYWcgbmFtZWQgIm5hbWUiIGV4aXN0cywgc3RvcmUgaXRzIGN1cnJl
bnQgdmFsdWUgaW4gKk9VVFBVVAorLy8gYW5kIHJldHVybiB0cnVlLiAgRWxzZSByZXR1cm4gZmFs
c2Ugd2l0aG91dCBjaGFuZ2luZyAqT1VUUFVULgorLy8gVGhyZWFkLXNhZmUuCitib29sIEdldENv
bW1hbmRMaW5lT3B0aW9uKGFic2w6OnN0cmluZ192aWV3IG5hbWUsIHN0ZDo6c3RyaW5nKiB2YWx1
ZSk7CisKKy8vIElmIGEgZmxhZyBuYW1lZCAibmFtZSIgZXhpc3RzLCBzdG9yZSBpdHMgaW5mb3Jt
YXRpb24gaW4gKk9VVFBVVAorLy8gYW5kIHJldHVybiB0cnVlLiAgRWxzZSByZXR1cm4gZmFsc2Ug
d2l0aG91dCBjaGFuZ2luZyAqT1VUUFVULgorLy8gVGhyZWFkLXNhZmUuCitib29sIEdldENvbW1h
bmRMaW5lRmxhZ0luZm8oYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb21tYW5kTGluZUZsYWdJbmZvKiBPVVRQVVQpOworCisvLyBSZXR1cm5zIHRo
ZSBDb21tYW5kTGluZUZsYWdJbmZvIG9mIHRoZSBmbGFnbmFtZS4gIGV4aXQoKSB3aXRoIGFuCisv
LyBlcnJvciBjb2RlIGlmIG5hbWUgbm90IGZvdW5kLgorLy8gVGhyZWFkLXNhZmUuCitDb21tYW5k
TGluZUZsYWdJbmZvIEdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZShhYnNsOjpzdHJpbmdfdmll
dyBuYW1lKTsKKworLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBuYW1lZCAibmFtZSIgdG8g
dmFsdWUuICBJZiBzdWNjZXNzZnVsLAorLy8gcmV0dXJucyB0cnVlLiAgSWYgbm90IHN1Y2Nlc3Nm
dWwgKGUuZy4sIHRoZSBmbGFnIHdhcyBub3QgZm91bmQgb3IKKy8vIHRoZSB2YWx1ZSBpcyBub3Qg
YSB2YWxpZCB2YWx1ZSksIHJldHVybnMgZmFsc2UuCisvLyBUaHJlYWQtc2FmZS4KK2Jvb2wgU2V0
Q29tbWFuZExpbmVPcHRpb24oYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSwgYWJzbDo6c3RyaW5nX3Zp
ZXcgdmFsdWUpOworCitib29sIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoYWJzbDo6c3Ry
aW5nX3ZpZXcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpz
dHJpbmdfdmlldyB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFn
U2V0dGluZ01vZGUgc2V0X21vZGUpOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFJl
dHVybnMgdHJ1ZSBpZmYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdHJ1ZToK
Ky8vIChhKSAibmFtZSIgbmFtZXMgYSByZWdpc3RlcmVkIGZsYWcKKy8vIChiKSAidmFsdWUiIGNh
biBiZSBwYXJzZWQgc3VjY2VzZnVsbHkgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIHRoZSBmbGFn
CisvLyAoYykgcGFyc2VkIHZhbHVlIHBhc3NlcyBhbnkgdmFsaWRhdG9yIGFzc29jaWF0ZWQgd2l0
aCB0aGUgZmxhZworYm9vbCBJc1ZhbGlkRmxhZ1ZhbHVlKGFic2w6OnN0cmluZ192aWV3IG5hbWUs
IGFic2w6OnN0cmluZ192aWV3IHZhbHVlKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisv
LyBSZXR1cm5zIHRydWUgaWZmIGEgZmxhZyBuYW1lZCAibmFtZSIgd2FzIHNwZWNpZmllZCBvbiB0
aGUgY29tbWFuZCBsaW5lCisvLyAoZWl0aGVyIGRpcmVjdGx5LCBvciB2aWEgb25lIG9mIC0tZmxh
Z2ZpbGUgb3IgLS1mcm9tZW52IG9yIC0tdHJ5ZnJvbWVudikuCisvLworLy8gQW55IG5vbi1jb21t
YW5kLWxpbmUgbW9kaWZpY2F0aW9uIG9mIHRoZSBmbGFnIGRvZXMgbm90IGFmZmVjdCB0aGUKKy8v
IHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uLiAgU28gZm9yIGV4YW1wbGUsIGlmIGEgZmxhZyB3YXMg
cGFzc2VkIG9uCisvLyB0aGUgY29tbWFuZCBsaW5lIGJ1dCB0aGVuIHJlc2V0IHZpYSBTRVRfRkxB
R1NfREVGQVVMVCwgdGhpcworLy8gZnVuY3Rpb24gd2lsbCBzdGlsbCByZXR1cm4gdHJ1ZS4KK2Jv
b2wgU3BlY2lmaWVkT25Db21tYW5kTGluZShhYnNsOjpzdHJpbmdfdmlldyBuYW1lKTsKKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBJZiBhIGZsYWcgd2l0aCBzcGVjaWZpZWQgIm5hbWUi
IGV4aXN0cyBhbmQgaGFzIHR5cGUgVCwgc3RvcmUKKy8vIGl0cyBjdXJyZW50IHZhbHVlIGluICpk
c3QgYW5kIHJldHVybiB0cnVlLiAgRWxzZSByZXR1cm4gZmFsc2UKKy8vIHdpdGhvdXQgdG91Y2hp
bmcgKmRzdC4gIFQgbXVzdCBvYmV5IGFsbCBvZiB0aGUgcmVxdWlyZW1lbnRzIGZvcgorLy8gdHlw
ZXMgcGFzc2VkIHRvIERFRklORV9GTEFHLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUg
Ym9vbCBHZXRCeU5hbWUoYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSwgVCogZHN0KSB7CisgIENvbW1h
bmRMaW5lRmxhZyogZmxhZyA9IGZsYWdzX2ludGVybmFsOjpGaW5kQ29tbWFuZExpbmVGbGFnKG5h
bWUpOworICBpZiAoIWZsYWcpIHJldHVybiBmYWxzZTsKKworICBpZiAoYXV0byB2YWwgPSBmbGFn
LT5HZXQ8VD4oKSkgeworICAgICpkc3QgPSAqdmFsOworICAgIHJldHVybiB0cnVlOworICB9CisK
KyAgcmV0dXJuIGZhbHNlOworfQorCit9ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKK30g
IC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9GTEFHU19JTlRFUk5BTF9UWVBF
X0VSQVNFRF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvdHlwZV9lcmFzZWRf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3R5cGVfZXJhc2VkX3Rlc3QuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWM3NDlhNjA3NTQ4NWUwYmY1ZTg1ZWY1ZGNmMmMzNjAzOWU4M2Q0YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3R5cGVfZXJhc2VkX3Rlc3QuY2MKQEAgLTAs
MCArMSwxNDcgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3R5cGVfZXJhc2VkLmgiCisKKyNpbmNs
dWRlIDxjbWF0aD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9m
bGFncy9mbGFnLmgiCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKworQUJTTF9GTEFHKGludCwgaW50X2ZsYWcsIDEsICJp
bnRfZmxhZyBoZWxwIik7CitBQlNMX0ZMQUcoc3RkOjpzdHJpbmcsIHN0cmluZ19mbGFnLCAiZGZs
dCIsICJzdHJpbmdfZmxhZyBoZWxwIik7CitBQlNMX1JFVElSRURfRkxBRyhib29sLCBib29sX3Jl
dGlyZWRfZmxhZywgZmFsc2UsICJib29sX3JldGlyZWRfZmxhZyBoZWxwIik7CisKK25hbWVzcGFj
ZSB7CisKK25hbWVzcGFjZSBmbGFncyA9IGFic2w6OmZsYWdzX2ludGVybmFsOworCitjbGFzcyBU
eXBlRXJhc2VkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZSB7IGZsYWdfc2F2ZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8Zmxh
Z3M6OkZsYWdTYXZlcj4oKTsgfQorICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyBmbGFnX3Nh
dmVyXy5yZXNldCgpOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnVuaXF1ZV9wdHI8ZmxhZ3M6OkZs
YWdTYXZlcj4gZmxhZ19zYXZlcl87Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoVHlw
ZUVyYXNlZFRlc3QsIFRlc3RHZXRDb21tYW5kTGluZU9wdGlvbikgeworICBzdGQ6OnN0cmluZyB2
YWx1ZTsKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OkdldENvbW1hbmRMaW5lT3B0aW9uKCJpbnRfZmxh
ZyIsICZ2YWx1ZSkpOworICBFWFBFQ1RfRVEodmFsdWUsICIxIik7CisKKyAgRVhQRUNUX1RSVUUo
ZmxhZ3M6OkdldENvbW1hbmRMaW5lT3B0aW9uKCJzdHJpbmdfZmxhZyIsICZ2YWx1ZSkpOworICBF
WFBFQ1RfRVEodmFsdWUsICJkZmx0Iik7CisKKyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpHZXRDb21t
YW5kTGluZU9wdGlvbigiYm9vbF9yZXRpcmVkX2ZsYWciLCAmdmFsdWUpKTsKKworICBFWFBFQ1Rf
RkFMU0UoZmxhZ3M6OkdldENvbW1hbmRMaW5lT3B0aW9uKCJ1bmtub3duX2ZsYWciLCAmdmFsdWUp
KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFR5cGVFcmFzZWRUZXN0LCBUZXN0U2V0
Q29tbWFuZExpbmVPcHRpb24pIHsKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OlNldENvbW1hbmRMaW5l
T3B0aW9uKCJpbnRfZmxhZyIsICIxMDEiKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZM
QUdTX2ludF9mbGFnKSwgMTAxKTsKKworICBFWFBFQ1RfVFJVRShmbGFnczo6U2V0Q29tbWFuZExp
bmVPcHRpb24oInN0cmluZ19mbGFnIiwgImFzZGZnaCIpKTsKKyAgRVhQRUNUX0VRKGFic2w6Okdl
dEZsYWcoRkxBR1Nfc3RyaW5nX2ZsYWcpLCAiYXNkZmdoIik7CisKKyAgRVhQRUNUX0ZBTFNFKGZs
YWdzOjpTZXRDb21tYW5kTGluZU9wdGlvbigiYm9vbF9yZXRpcmVkX2ZsYWciLCAidHJ1ZSIpKTsK
KworICBFWFBFQ1RfRkFMU0UoZmxhZ3M6OlNldENvbW1hbmRMaW5lT3B0aW9uKCJ1bmtub3duX2Zs
YWciLCAidHJ1ZSIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFR5cGVFcmFzZWRU
ZXN0LCBUZXN0U2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZV9TRVRfRkxBR1NfVkFMVUUpIHsK
KyAgRVhQRUNUX1RSVUUoZmxhZ3M6OlNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoImludF9m
bGFnIiwgIjEwMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzOjpTRVRfRkxBR1NfVkFMVUUpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZs
YWcoRkxBR1NfaW50X2ZsYWcpLCAxMDEpOworCisgIEVYUEVDVF9UUlVFKGZsYWdzOjpTZXRDb21t
YW5kTGluZU9wdGlvbldpdGhNb2RlKCJzdHJpbmdfZmxhZyIsICJhc2RmZ2giLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdT
X1ZBTFVFKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3N0cmluZ19mbGFnKSwg
ImFzZGZnaCIpOworCisgIEVYUEVDVF9GQUxTRShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRpb25X
aXRoTW9kZSgiYm9vbF9yZXRpcmVkX2ZsYWciLCAidHJ1ZSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdTX1ZBTFVFKSk7
CisKKyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ1
bmtub3duX2ZsYWciLCAidHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdTX1ZBTFVFKSk7Cit9CisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK1RFU1RfRihUeXBlRXJhc2VkVGVzdCwgVGVzdFNldENvbW1hbmRMaW5lT3B0aW9u
V2l0aE1vZGVfU0VUX0ZMQUdfSUZfREVGQVVMVCkgeworICBFWFBFQ1RfVFJVRShmbGFnczo6U2V0
Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgiaW50X2ZsYWciLCAiMTAxIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNFVF9GTEFHX0lG
X0RFRkFVTFQpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfaW50X2ZsYWcpLCAx
MDEpOworCisgIC8vIFRoaXMgc2VtYW50aWMgaXMgYnJva2VuLiBXZSByZXR1cm4gdHJ1ZSBpbnN0
ZWFkIG9mIGZhbHNlLiBWYWx1ZSBpcyBub3QKKyAgLy8gdXBkYXRlZC4KKyAgRVhQRUNUX1RSVUUo
ZmxhZ3M6OlNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoImludF9mbGFnIiwgIjIwMiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjpT
RVRfRkxBR19JRl9ERUZBVUxUKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2lu
dF9mbGFnKSwgMTAxKTsKKworICBFWFBFQ1RfVFJVRShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRp
b25XaXRoTW9kZSgic3RyaW5nX2ZsYWciLCAiYXNkZmdoIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNFVF9GTEFHX0lGX0RFRkFVTFQp
KTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1Nfc3RyaW5nX2ZsYWcpLCAiYXNkZmdo
Iik7CisKKyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2Rl
KCJib29sX3JldGlyZWRfZmxhZyIsICJ0cnVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjpTRVRfRkxBR19JRl9ERUZBVUxUKSk7CisK
KyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ1bmtu
b3duX2ZsYWciLCAidHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdfSUZfREVGQVVMVCkpOworfQorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitURVNUX0YoVHlwZUVyYXNlZFRlc3QsIFRlc3RTZXRDb21tYW5kTGluZU9wdGlv
bldpdGhNb2RlX1NFVF9GTEFHU19ERUZBVUxUKSB7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpTZXRD
b21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJpbnRfZmxhZyIsICIxMDEiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdTX0RF
RkFVTFQpKTsKKworICBFWFBFQ1RfVFJVRShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRpb25XaXRo
TW9kZSgic3RyaW5nX2ZsYWciLCAiYXNkZmdoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNFVF9GTEFHU19ERUZBVUxUKSk7CisgIEVY
UEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3N0cmluZ19mbGFnKSwgImFzZGZnaCIpOworCisg
IEVYUEVDVF9GQUxTRShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgiYm9vbF9y
ZXRpcmVkX2ZsYWciLCAidHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdTX0RFRkFVTFQpKTsKKworICBFWFBFQ1Rf
RkFMU0UoZmxhZ3M6OlNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInVua25vd25fZmxhZyIs
ICJ0cnVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdzOjpTRVRfRkxBR1NfREVGQVVMVCkpOworCisgIC8vIFRoaXMgc2hvdWxkIGJlIHN1
Y2Nlc3NmdWxsLCBzaW5jZSBmbGFnIGlzIHN0aWxsIGlzIG5vdCBzZXQKKyAgRVhQRUNUX1RSVUUo
ZmxhZ3M6OlNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoImludF9mbGFnIiwgIjIwMiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjpT
RVRfRkxBR19JRl9ERUZBVUxUKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2lu
dF9mbGFnKSwgMjAyKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFR5cGVFcmFzZWRU
ZXN0LCBUZXN0SXNWYWxpZEZsYWdWYWx1ZSkgeworICBFWFBFQ1RfVFJVRShmbGFnczo6SXNWYWxp
ZEZsYWdWYWx1ZSgiaW50X2ZsYWciLCAiNTciKSk7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpJc1Zh
bGlkRmxhZ1ZhbHVlKCJpbnRfZmxhZyIsICItMTAxIikpOworICBFWFBFQ1RfRkFMU0UoZmxhZ3M6
OklzVmFsaWRGbGFnVmFsdWUoImludF9mbGFnIiwgIjEuMSIpKTsKKworICBFWFBFQ1RfVFJVRShm
bGFnczo6SXNWYWxpZEZsYWdWYWx1ZSgic3RyaW5nX2ZsYWciLCAiIyVeIyVeJCVER0hERyRXJWFk
c2YiKSk7CisKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OklzVmFsaWRGbGFnVmFsdWUoImJvb2xfcmV0
aXJlZF9mbGFnIiwgInRydWUiKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC91c2Fn
ZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMzA0ODUxNGFlMGI5YmM4YjI3MmZkN2E1MjlkOGU4ZTY4NjliMmFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuY2MKQEAgLTAs
MCArMSwzODMgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuaCIKKworI2luY2x1ZGUgPG1h
cD4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ZsYWcuaCIKKyNp
bmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3BhdGhfdXRpbC5oIgorI2luY2x1ZGUgImFic2wv
ZmxhZ3MvaW50ZXJuYWwvcHJvZ3JhbV9uYW1lLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy91c2Fn
ZV9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvYXNjaWkuaCIKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfc3BsaXQu
aCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNs
L3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgorCitBQlNMX0ZMQUcoYm9vbCwgaGVscCwgZmFsc2Us
CisgICAgICAgICAgInNob3cgaGVscCBvbiBpbXBvcnRhbnQgZmxhZ3MgZm9yIHRoaXMgYmluYXJ5
IFt0aXA6IGFsbCBmbGFncyBjYW4gIgorICAgICAgICAgICJoYXZlIHR3byBkYXNoZXNdIik7CitB
QlNMX0ZMQUcoYm9vbCwgaGVscGZ1bGwsIGZhbHNlLCAic2hvdyBoZWxwIG9uIGFsbCBmbGFncyIp
OworQUJTTF9GTEFHKGJvb2wsIGhlbHBzaG9ydCwgZmFsc2UsCisgICAgICAgICAgInNob3cgaGVs
cCBvbiBvbmx5IHRoZSBtYWluIG1vZHVsZSBmb3IgdGhpcyBwcm9ncmFtIik7CitBQlNMX0ZMQUco
Ym9vbCwgaGVscHBhY2thZ2UsIGZhbHNlLAorICAgICAgICAgICJzaG93IGhlbHAgb24gYWxsIG1v
ZHVsZXMgaW4gdGhlIG1haW4gcGFja2FnZSIpOworQUJTTF9GTEFHKGJvb2wsIHZlcnNpb24sIGZh
bHNlLCAic2hvdyB2ZXJzaW9uIGFuZCBidWlsZCBpbmZvIGFuZCBleGl0Iik7CitBQlNMX0ZMQUco
Ym9vbCwgb25seV9jaGVja19hcmdzLCBmYWxzZSwgImV4aXQgYWZ0ZXIgY2hlY2tpbmcgYWxsIGZs
YWdzIik7CitBQlNMX0ZMQUcoc3RkOjpzdHJpbmcsIGhlbHBvbiwgIiIsCisgICAgICAgICAgInNo
b3cgaGVscCBvbiB0aGUgbW9kdWxlcyBuYW1lZCBieSB0aGlzIGZsYWcgdmFsdWUiKTsKK0FCU0xf
RkxBRyhzdGQ6OnN0cmluZywgaGVscG1hdGNoLCAiIiwKKyAgICAgICAgICAic2hvdyBoZWxwIG9u
IG1vZHVsZXMgd2hvc2UgbmFtZSBjb250YWlucyB0aGUgc3BlY2lmaWVkIHN1YnN0ciIpOworCitu
YW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsK
KworLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGVtaXQgYW4gWE1MIGVsZW1lbnQgd2l0aCBgdGFn
YCBhbmQgYHRleHRgLgorLy8gSXQgYWRkcyBvcGVuaW5nIGFuZCBjbG9zaW5nIHRhZ3MgYW5kIGVz
Y2FwZXMgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0LgorLy8gRm9yIGV4YW1wbGU6Cisv
LyBzdGQ6OmNvdXQgPDwgWE1MRWxlbWVudCgidGl0bGUiLCAiTWlsayAmIENvb2tpZXMiKTsKKy8v
IHByaW50cyAiPHRpdGxlPk1pbGsgJmFtcDsgQ29va2llczwvdGl0bGU+IgorY2xhc3MgWE1MRWxl
bWVudCB7CisgcHVibGljOgorICBYTUxFbGVtZW50KGFic2w6OnN0cmluZ192aWV3IHRhZywgYWJz
bDo6c3RyaW5nX3ZpZXcgdHh0KQorICAgICAgOiB0YWdfKHRhZyksIHR4dF8odHh0KSB7fQorCisg
IGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MRWxlbWVudCYgeG1sX2VsZW0p
IHsKKyAgICBvdXQgPDwgIjwiIDw8IHhtbF9lbGVtLnRhZ18gPDwgIj4iOworCisgICAgZm9yIChh
dXRvIGMgOiB4bWxfZWxlbS50eHRfKSB7CisgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgY2Fz
ZSAnIic6CisgICAgICAgICAgb3V0IDw8ICImcXVvdDsiOworICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICdcJyc6CisgICAgICAgICAgb3V0IDw8ICImYXBvczsiOworICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICcmJzoKKyAgICAgICAgICBvdXQgPDwgIiZhbXA7IjsKKyAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnPCc6CisgICAgICAgICAgb3V0IDw8ICImbHQ7IjsK
KyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnPic6CisgICAgICAgICAgb3V0IDw8ICIm
Z3Q7IjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBvdXQg
PDwgYzsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gb3V0
IDw8ICI8LyIgPDwgeG1sX2VsZW0udGFnXyA8PCAiPiI7CisgIH0KKworIHByaXZhdGU6CisgIGFi
c2w6OnN0cmluZ192aWV3IHRhZ187CisgIGFic2w6OnN0cmluZ192aWV3IHR4dF87Cit9OworCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8gSGVscGVyIGNsYXNzIHRvIHByZXR0eS1wcmludCBpbmZvIGFib3V0
IGEgZmxhZy4KKworY2xhc3MgRmxhZ0hlbHBQcmV0dHlQcmludGVyIHsKKyBwdWJsaWM6CisgIC8v
IFByZXR0eSBwcmludGVyIGhvbGRzIG9uIHRvIHRoZSBzdGQ6Om9zdHJlYW0mIHJlZmVyZW5jZSB0
byBkaXJlY3QgYW4gb3V0cHV0CisgIC8vIHRvIHRoYXQgc3RyZWFtLgorICBGbGFnSGVscFByZXR0
eVByaW50ZXIoaW50IG1heF9saW5lX2xlbiwgc3RkOjpvc3RyZWFtKiBvdXQpCisgICAgICA6IG91
dF8oKm91dCksCisgICAgICAgIG1heF9saW5lX2xlbl8obWF4X2xpbmVfbGVuKSwKKyAgICAgICAg
bGluZV9sZW5fKDApLAorICAgICAgICBmaXJzdF9saW5lXyh0cnVlKSB7fQorCisgIHZvaWQgV3Jp
dGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBib29sIHdyYXBfbGluZSA9IGZhbHNlKSB7CisgICAg
Ly8gRW1wdHkgc3RkOjpzdHJpbmcgLSBkbyBub3RoaW5nLgorICAgIGlmIChzdHIuZW1wdHkoKSkg
cmV0dXJuOworCisgICAgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IHRva2VuczsKKyAg
ICBpZiAod3JhcF9saW5lKSB7CisgICAgICBmb3IgKGF1dG8gbGluZSA6IGFic2w6OlN0clNwbGl0
KHN0ciwgYWJzbDo6QnlBbnlDaGFyKCJcblxyIikpKSB7CisgICAgICAgIGlmICghdG9rZW5zLmVt
cHR5KCkpIHsKKyAgICAgICAgICAvLyBLZWVwIGxpbmUgc2VwYXJhdG9ycyBpbiB0aGUgaW5wdXQg
c3RkOjpzdHJpbmcuCisgICAgICAgICAgdG9rZW5zLnB1c2hfYmFjaygiXG4iKTsKKyAgICAgICAg
fQorICAgICAgICBmb3IgKGF1dG8gdG9rZW4gOgorICAgICAgICAgICAgIGFic2w6OlN0clNwbGl0
KGxpbmUsIGFic2w6OkJ5QW55Q2hhcigiIFx0IiksIGFic2w6OlNraXBFbXB0eSgpKSkgeworICAg
ICAgICAgIHRva2Vucy5wdXNoX2JhY2sodG9rZW4pOworICAgICAgICB9CisgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgIHRva2Vucy5wdXNoX2JhY2soc3RyKTsKKyAgICB9CisKKyAgICBmb3Ig
KGF1dG8gdG9rZW4gOiB0b2tlbnMpIHsKKyAgICAgIGJvb2wgbmV3X2xpbmUgPSAobGluZV9sZW5f
ID09IDApOworCisgICAgICAvLyBSZXNwZWN0IGxpbmUgc2VwYXJhdG9ycyBpbiB0aGUgaW5wdXQg
c3RkOjpzdHJpbmcuCisgICAgICBpZiAodG9rZW4gPT0gIlxuIikgeworICAgICAgICBFbmRMaW5l
KCk7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICAvLyBXcml0ZSB0aGUgdG9r
ZW4sIGVuZGluZyB0aGUgc3RkOjpzdHJpbmcgZmlyc3QgaWYgbmVjZXNzYXJ5L3Bvc3NpYmxlLgor
ICAgICAgaWYgKCFuZXdfbGluZSAmJiAobGluZV9sZW5fICsgdG9rZW4uc2l6ZSgpID49IG1heF9s
aW5lX2xlbl8pKSB7CisgICAgICAgIEVuZExpbmUoKTsKKyAgICAgICAgbmV3X2xpbmUgPSB0cnVl
OworICAgICAgfQorCisgICAgICBpZiAobmV3X2xpbmUpIHsKKyAgICAgICAgU3RhcnRMaW5lKCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBvdXRfIDw8ICcgJzsKKyAgICAgICAgKytsaW5lX2xl
bl87CisgICAgICB9CisKKyAgICAgIG91dF8gPDwgdG9rZW47CisgICAgICBsaW5lX2xlbl8gKz0g
dG9rZW4uc2l6ZSgpOworICAgIH0KKyAgfQorCisgIHZvaWQgU3RhcnRMaW5lKCkgeworICAgIGlm
IChmaXJzdF9saW5lXykgeworICAgICAgb3V0XyA8PCAiICAgICI7CisgICAgICBsaW5lX2xlbl8g
PSA0OworICAgICAgZmlyc3RfbGluZV8gPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgb3V0
XyA8PCAiICAgICAgIjsKKyAgICAgIGxpbmVfbGVuXyA9IDY7CisgICAgfQorICB9CisgIHZvaWQg
RW5kTGluZSgpIHsKKyAgICBvdXRfIDw8ICdcbic7CisgICAgbGluZV9sZW5fID0gMDsKKyAgfQor
CisgcHJpdmF0ZToKKyAgc3RkOjpvc3RyZWFtJiBvdXRfOworICBjb25zdCBpbnQgbWF4X2xpbmVf
bGVuXzsKKyAgaW50IGxpbmVfbGVuXzsKKyAgYm9vbCBmaXJzdF9saW5lXzsKK307CisKK3ZvaWQg
RmxhZ0hlbHBIdW1hblJlYWRhYmxlKGNvbnN0IGZsYWdzX2ludGVybmFsOjpDb21tYW5kTGluZUZs
YWcmIGZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om9zdHJlYW0qIG91dCkg
eworICBGbGFnSGVscFByZXR0eVByaW50ZXIgcHJpbnRlcig4MCwgb3V0KTsgIC8vIE1heCBsaW5l
IGxlbmd0aCBpcyA4MC4KKworICAvLyBGbGFnIG5hbWUuCisgIHByaW50ZXIuV3JpdGUoYWJzbDo6
U3RyQ2F0KCItIiwgZmxhZy5OYW1lKCkpKTsKKworICAvLyBGbGFnIGhlbHAuCisgIHByaW50ZXIu
V3JpdGUoYWJzbDo6U3RyQ2F0KCIoIiwgZmxhZy5IZWxwKCksICIpOyIpLCAvKndyYXBfbGluZT0q
L3RydWUpOworCisgIC8vIEZsYWcgZGF0YSB0eXBlIChmb3IgVjEgZmxhZ3Mgb25seSkuCisgIGlm
ICghZmxhZy5Jc0Fic2VpbEZsYWcoKSAmJiAhZmxhZy5Jc1JldGlyZWQoKSkgeworICAgIHByaW50
ZXIuV3JpdGUoYWJzbDo6U3RyQ2F0KCJ0eXBlOiAiLCBmbGFnLlR5cGVuYW1lKCksICI7IikpOwor
ICB9CisKKyAgLy8gVGhlIGxpc3RlZCBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdGhlIGFjdHVhbCBk
ZWZhdWx0IGZyb20gdGhlIGZsYWcKKyAgLy8gZGVmaW5pdGlvbiBpbiB0aGUgb3JpZ2luYXRpbmcg
c291cmNlIGZpbGUsIHVubGVzcyB0aGUgdmFsdWUgaGFzCisgIC8vIHN1YnNlcXVlbnRseSBiZWVu
IG1vZGlmaWVkIHVzaW5nIFNldENvbW1hbmRMaW5lT3B0aW9uKCkgd2l0aCBtb2RlCisgIC8vIFNF
VF9GTEFHU19ERUZBVUxULgorICBzdGQ6OnN0cmluZyBkZmx0X3ZhbCA9IGZsYWcuRGVmYXVsdFZh
bHVlKCk7CisgIGlmIChmbGFnLklzT2ZUeXBlPHN0ZDo6c3RyaW5nPigpKSB7CisgICAgZGZsdF92
YWwgPSBhYnNsOjpTdHJDYXQoIlwiIiwgZGZsdF92YWwsICJcIiIpOworICB9CisgIHByaW50ZXIu
V3JpdGUoYWJzbDo6U3RyQ2F0KCJkZWZhdWx0OiAiLCBkZmx0X3ZhbCwgIjsiKSk7CisKKyAgaWYg
KGZsYWcuSXNNb2RpZmllZCgpKSB7CisgICAgc3RkOjpzdHJpbmcgY3Vycl92YWwgPSBmbGFnLkN1
cnJlbnRWYWx1ZSgpOworICAgIGlmIChmbGFnLklzT2ZUeXBlPHN0ZDo6c3RyaW5nPigpKSB7Cisg
ICAgICBjdXJyX3ZhbCA9IGFic2w6OlN0ckNhdCgiXCIiLCBjdXJyX3ZhbCwgIlwiIik7CisgICAg
fQorICAgIHByaW50ZXIuV3JpdGUoYWJzbDo6U3RyQ2F0KCJjdXJyZW50bHk6ICIsIGN1cnJfdmFs
LCAiOyIpKTsKKyAgfQorCisgIHByaW50ZXIuRW5kTGluZSgpOworfQorCisvLyBTaG93cyBoZWxw
IGZvciBldmVyeSBmaWxlbmFtZSB3aGljaCBtYXRjaGVzIGFueSBvZiB0aGUgZmlsdGVycworLy8g
SWYgZmlsdGVycyBhcmUgZW1wdHksIHNob3dzIGhlbHAgZm9yIGV2ZXJ5IGZpbGUuCisvLyBJZiBh
IGZsYWcncyBoZWxwIG1lc3NhZ2UgaGFzIGJlZW4gc3RyaXBwZWQgKGUuZy4gYnkgYWRkaW5nICcj
ZGVmaW5lCisvLyBTVFJJUF9GTEFHX0hFTFAgMScgdGhlbiB0aGlzIGZsYWcgd2lsbCBub3QgYmUg
ZGlzcGxheWVkIGJ5ICctLWhlbHAnCisvLyBhbmQgaXRzIHZhcmlhbnRzLgordm9pZCBGbGFnc0hl
bHBJbXBsKHN0ZDo6b3N0cmVhbSYgb3V0LCBmbGFnc19pbnRlcm5hbDo6RmxhZ0tpbmRGaWx0ZXIg
ZmlsdGVyX2NiLAorICAgICAgICAgICAgICAgICAgIEhlbHBGb3JtYXQgZm9ybWF0LCBhYnNsOjpz
dHJpbmdfdmlldyBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpIHsKKyAgaWYgKGZvcm1hdCA9PSBIZWxw
Rm9ybWF0OjprSHVtYW5SZWFkYWJsZSkgeworICAgIG91dCA8PCBmbGFnc19pbnRlcm5hbDo6U2hv
cnRQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSA8PCAiOiAiCisgICAgICAgIDw8IHByb2dyYW1fdXNh
Z2VfbWVzc2FnZSA8PCAiXG5cbiI7CisgIH0gZWxzZSB7CisgICAgLy8gWE1MIHNjaGVtYSBpcyBu
b3QgYSBwYXJ0IG9mIG91ciBwdWJsaWMgQVBJIGZvciBub3cuCisgICAgb3V0IDw8ICI8P3htbCB2
ZXJzaW9uPVwiMS4wXCI/PlxuIgorICAgICAgICAvLyBUaGUgZG9jdW1lbnQuCisgICAgICAgIDw8
ICI8QWxsRmxhZ3M+XG4iCisgICAgICAgIC8vIFRoZSBwcm9ncmFtIG5hbWUgYW5kIHVzYWdlLgor
ICAgICAgICA8PCBYTUxFbGVtZW50KCJwcm9ncmFtIiwgZmxhZ3NfaW50ZXJuYWw6OlNob3J0UHJv
Z3JhbUludm9jYXRpb25OYW1lKCkpCisgICAgICAgIDw8ICdcbicKKyAgICAgICAgPDwgWE1MRWxl
bWVudCgidXNhZ2UiLCBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpIDw8ICdcbic7CisgIH0KKworICAv
LyBNYXAgb2YgcGFja2FnZSBuYW1lIHRvCisgIC8vICAgbWFwIG9mIGZpbGUgbmFtZSB0bworICAv
LyAgICAgdmVjdG9yIG9mIGZsYWdzIGluIHRoZSBmaWxlLgorICAvLyBUaGlzIG1hcCBpcyB1c2Vk
IHRvIG91dHB1dCBtYXRjaGluZyBmbGFncyBncm91cGVkIGJ5IHBhY2thZ2UgYW5kIGZpbGUKKyAg
Ly8gbmFtZS4KKyAgc3RkOjptYXA8c3RkOjpzdHJpbmcsCisgICAgICAgICAgIHN0ZDo6bWFwPHN0
ZDo6c3RyaW5nLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rvcjxjb25zdCBmbGFnc19p
bnRlcm5hbDo6Q29tbWFuZExpbmVGbGFnKj4+PgorICAgICAgbWF0Y2hpbmdfZmxhZ3M7CisKKyAg
ZmxhZ3NfaW50ZXJuYWw6OkZvckVhY2hGbGFnKFsmXShmbGFnc19pbnRlcm5hbDo6Q29tbWFuZExp
bmVGbGFnKiBmbGFnKSB7CisgICAgc3RkOjpzdHJpbmcgZmxhZ19maWxlbmFtZSA9IGZsYWctPkZp
bGVuYW1lKCk7CisKKyAgICAvLyBJZ25vcmUgcmV0aXJlZCBmbGFncy4KKyAgICBpZiAoZmxhZy0+
SXNSZXRpcmVkKCkpIHJldHVybjsKKworICAgIC8vIElmIHRoZSBmbGFnIGhhcyBiZWVuIHN0cmlw
cGVkLCBwcmV0ZW5kIHRoYXQgaXQgZG9lc24ndCBleGlzdC4KKyAgICBpZiAoZmxhZy0+SGVscCgp
ID09IGZsYWdzX2ludGVybmFsOjprU3RyaXBwZWRGbGFnSGVscCkgcmV0dXJuOworCisgICAgLy8g
TWFrZSBzdXJlIGZsYWcgc2F0aXNmaWVzIHRoZSBmaWx0ZXIKKyAgICBpZiAoIWZpbHRlcl9jYiB8
fCAhZmlsdGVyX2NiKGZsYWdfZmlsZW5hbWUpKSByZXR1cm47CisKKyAgICBtYXRjaGluZ19mbGFn
c1tzdGQ6OnN0cmluZyhmbGFnc19pbnRlcm5hbDo6UGFja2FnZShmbGFnX2ZpbGVuYW1lKSldCisg
ICAgICAgICAgICAgICAgICBbZmxhZ19maWxlbmFtZV0KKyAgICAgICAgICAgICAgICAgICAgICAu
cHVzaF9iYWNrKGZsYWcpOworICB9KTsKKworICBhYnNsOjpzdHJpbmdfdmlldworICAgICAgcGFj
a2FnZV9zZXBhcmF0b3I7ICAgICAgICAgICAgIC8vIGNvbnRyb2xzIGJsYW5rIGxpbmVzIGJldHdl
ZW4gcGFja2FnZXMuCisgIGFic2w6OnN0cmluZ192aWV3IGZpbGVfc2VwYXJhdG9yOyAgLy8gY29u
dHJvbHMgYmxhbmsgbGluZXMgYmV0d2VlbiBmaWxlcy4KKyAgZm9yIChjb25zdCBhdXRvJiBwYWNr
YWdlIDogbWF0Y2hpbmdfZmxhZ3MpIHsKKyAgICBpZiAoZm9ybWF0ID09IEhlbHBGb3JtYXQ6OmtI
dW1hblJlYWRhYmxlKSB7CisgICAgICBvdXQgPDwgcGFja2FnZV9zZXBhcmF0b3I7CisgICAgICBw
YWNrYWdlX3NlcGFyYXRvciA9ICJcblxuIjsKKyAgICB9CisKKyAgICBmaWxlX3NlcGFyYXRvciA9
ICIiOworICAgIGZvciAoY29uc3QgYXV0byYgZmxhZ3NfaW5fZmlsZSA6IHBhY2thZ2Uuc2Vjb25k
KSB7CisgICAgICBpZiAoZm9ybWF0ID09IEhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlKSB7Cisg
ICAgICAgIG91dCA8PCBmaWxlX3NlcGFyYXRvciA8PCAiICBGbGFncyBmcm9tICIgPDwgZmxhZ3Nf
aW5fZmlsZS5maXJzdAorICAgICAgICAgICAgPDwgIjpcbiI7CisgICAgICAgIGZpbGVfc2VwYXJh
dG9yID0gIlxuIjsKKyAgICAgIH0KKworICAgICAgZm9yIChjb25zdCBhdXRvKiBmbGFnIDogZmxh
Z3NfaW5fZmlsZS5zZWNvbmQpIHsKKyAgICAgICAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdIZWxwKG91
dCwgKmZsYWcsIGZvcm1hdCk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgaWYgKGZvcm1hdCA9
PSBIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSkgeworICAgIGlmIChmaWx0ZXJfY2IgJiYgbWF0
Y2hpbmdfZmxhZ3MuZW1wdHkoKSkgeworICAgICAgb3V0IDw8ICIgIE5vIG1vZHVsZXMgbWF0Y2hl
ZDogdXNlIC1oZWxwZnVsbFxuIjsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgLy8gVGhlIGVuZCBv
ZiB0aGUgZG9jdW1lbnQuCisgICAgb3V0IDw8ICI8L0FsbEZsYWdzPlxuIjsKKyAgfQorfQorCit9
ICAvLyBuYW1lc3BhY2UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFByb2R1Y2VzIHRoZSBoZWxwIG1l
c3NhZ2UgZGVzY3JpYmluZyBzcGVjaWZpYyBmbGFnLgordm9pZCBGbGFnSGVscChzdGQ6Om9zdHJl
YW0mIG91dCwgY29uc3QgZmxhZ3NfaW50ZXJuYWw6OkNvbW1hbmRMaW5lRmxhZyYgZmxhZywKKyAg
ICAgICAgICAgICAgSGVscEZvcm1hdCBmb3JtYXQpIHsKKyAgaWYgKGZvcm1hdCA9PSBIZWxwRm9y
bWF0OjprSHVtYW5SZWFkYWJsZSkKKyAgICBmbGFnc19pbnRlcm5hbDo6RmxhZ0hlbHBIdW1hblJl
YWRhYmxlKGZsYWcsICZvdXQpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUHJvZHVjZXMgdGhl
IGhlbHAgbWVzc2FnZXMgZm9yIGFsbCBmbGFncyBtYXRjaGluZyB0aGUgZmlsdGVyLgorLy8gSWYg
ZmlsdGVyIGlzIGVtcHR5IHByb2R1Y2VzIGhlbHAgbWVzc2FnZXMgZm9yIGFsbCBmbGFncy4KK3Zv
aWQgRmxhZ3NIZWxwKHN0ZDo6b3N0cmVhbSYgb3V0LCBhYnNsOjpzdHJpbmdfdmlldyBmaWx0ZXIs
IEhlbHBGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgcHJv
Z3JhbV91c2FnZV9tZXNzYWdlKSB7CisgIGZsYWdzX2ludGVybmFsOjpGbGFnS2luZEZpbHRlciBm
aWx0ZXJfY2IgPSBbJl0oYWJzbDo6c3RyaW5nX3ZpZXcgZmlsZW5hbWUpIHsKKyAgICByZXR1cm4g
ZmlsdGVyLmVtcHR5KCkgfHwgZmlsZW5hbWUuZmluZChmaWx0ZXIpICE9IGFic2w6OnN0cmluZ192
aWV3OjpucG9zOworICB9OworICBmbGFnc19pbnRlcm5hbDo6RmxhZ3NIZWxwSW1wbChvdXQsIGZp
bHRlcl9jYiwgZm9ybWF0LCBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gQ2hlY2tzIGFsbCB0aGUgJ3VzYWdlJyBjb21tYW5kIGxpbmUgZmxhZ3MgdG8gc2Vl
IGlmIGFueSBoYXZlIGJlZW4gc2V0LgorLy8gSWYgc28sIGhhbmRsZXMgdGhlbSBhcHByb3ByaWF0
ZWx5LgoraW50IEhhbmRsZVVzYWdlRmxhZ3Moc3RkOjpvc3RyZWFtJiBvdXQsCisgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldyBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpIHsKKyAg
aWYgKGFic2w6OkdldEZsYWcoRkxBR1NfaGVscHNob3J0KSkgeworICAgIGZsYWdzX2ludGVybmFs
OjpGbGFnc0hlbHBJbXBsKAorICAgICAgICBvdXQsIGZsYWdzX2ludGVybmFsOjpHZXRVc2FnZUNv
bmZpZygpLmNvbnRhaW5zX2hlbHBzaG9ydF9mbGFncywKKyAgICAgICAgSGVscEZvcm1hdDo6a0h1
bWFuUmVhZGFibGUsIHByb2dyYW1fdXNhZ2VfbWVzc2FnZSk7CisgICAgcmV0dXJuIDE7CisgIH0K
KworICBpZiAoYWJzbDo6R2V0RmxhZyhGTEFHU19oZWxwZnVsbCkpIHsKKyAgICAvLyBzaG93IGFs
bCBvcHRpb25zCisgICAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdzSGVscChvdXQsICIiLCBIZWxwRm9y
bWF0OjprSHVtYW5SZWFkYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dy
YW1fdXNhZ2VfbWVzc2FnZSk7CisgICAgcmV0dXJuIDE7CisgIH0KKworICBpZiAoIWFic2w6Okdl
dEZsYWcoRkxBR1NfaGVscG9uKS5lbXB0eSgpKSB7CisgICAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdz
SGVscCgKKyAgICAgICAgb3V0LCBhYnNsOjpTdHJDYXQoIi8iLCBhYnNsOjpHZXRGbGFnKEZMQUdT
X2hlbHBvbiksICIuIiksCisgICAgICAgIEhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlLCBwcm9n
cmFtX3VzYWdlX21lc3NhZ2UpOworICAgIHJldHVybiAxOworICB9CisKKyAgaWYgKCFhYnNsOjpH
ZXRGbGFnKEZMQUdTX2hlbHBtYXRjaCkuZW1wdHkoKSkgeworICAgIGZsYWdzX2ludGVybmFsOjpG
bGFnc0hlbHAob3V0LCBhYnNsOjpHZXRGbGFnKEZMQUdTX2hlbHBtYXRjaCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1fdXNhZ2VfbWVzc2FnZSk7CisgICAgcmV0dXJu
IDE7CisgIH0KKworICBpZiAoYWJzbDo6R2V0RmxhZyhGTEFHU19oZWxwKSkgeworICAgIGZsYWdz
X2ludGVybmFsOjpGbGFnc0hlbHBJbXBsKAorICAgICAgICBvdXQsIGZsYWdzX2ludGVybmFsOjpH
ZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBfZmxhZ3MsCisgICAgICAgIEhlbHBGb3JtYXQ6
OmtIdW1hblJlYWRhYmxlLCBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpOworCisgICAgb3V0IDw8ICJc
blRyeSAtLWhlbHBmdWxsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGZsYWdzLlxuIjsKKworICAgIHJl
dHVybiAxOworICB9CisKKyAgaWYgKGFic2w6OkdldEZsYWcoRkxBR1NfaGVscHBhY2thZ2UpKSB7
CisgICAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdzSGVscEltcGwoCisgICAgICAgIG91dCwgZmxhZ3Nf
aW50ZXJuYWw6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MsCisg
ICAgICAgIEhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlLCBwcm9ncmFtX3VzYWdlX21lc3NhZ2Up
OworCisgICAgb3V0IDw8ICJcblRyeSAtLWhlbHBmdWxsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGZs
YWdzLlxuIjsKKworICAgIHJldHVybiAxOworICB9CisKKyAgaWYgKGFic2w6OkdldEZsYWcoRkxB
R1NfdmVyc2lvbikpIHsKKyAgICBpZiAoZmxhZ3NfaW50ZXJuYWw6OkdldFVzYWdlQ29uZmlnKCku
dmVyc2lvbl9zdHJpbmcpCisgICAgICBvdXQgPDwgZmxhZ3NfaW50ZXJuYWw6OkdldFVzYWdlQ29u
ZmlnKCkudmVyc2lvbl9zdHJpbmcoKTsKKyAgICAvLyBVbmxpa2UgaGVscCwgd2UgbWF5IGJlIGFz
a2luZyBmb3IgdmVyc2lvbiBpbiBhIHNjcmlwdCwgc28gcmV0dXJuIDAKKyAgICByZXR1cm4gMDsK
KyAgfQorCisgIGlmIChhYnNsOjpHZXRGbGFnKEZMQUdTX29ubHlfY2hlY2tfYXJncykpIHsKKyAg
ICByZXR1cm4gMDsKKyAgfQorCisgIHJldHVybiAtMTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGZs
YWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxh
Z3MvaW50ZXJuYWwvdXNhZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzYwNzViMDgyOWQ5YWFlOTRiYTlmZmU2M2M1MDFlMjQ1NDU3YWI0MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlLmgKQEAgLTAsMCArMSw3OCBAQAor
Ly8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBB
QlNMX0ZMQUdTX0lOVEVSTkFMX1VTQUdFX0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfSU5URVJOQUxf
VVNBR0VfSF8KKworI2luY2x1ZGUgPGlvc2Z3ZD4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNs
dWRlICJhYnNsL2ZsYWdzL2RlY2xhcmUuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFs
L2NvbW1hbmRsaW5lZmxhZy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5o
IgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gVXNhZ2UgcmVwb3J0aW5nIGludGVyZmFjZXMKKworbmFt
ZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsIHsKKworLy8gVGhlIGZvcm1h
dCB0byByZXBvcnQgdGhlIGhlbHAgbWVzc2FnZXMgaW4uCitlbnVtIGNsYXNzIEhlbHBGb3JtYXQg
eworICBrSHVtYW5SZWFkYWJsZSwKK307CisKKy8vIE91dHB1dHMgdGhlIGhlbHAgbWVzc2FnZSBk
ZXNjcmliaW5nIHNwZWNpZmljIGZsYWcuCit2b2lkIEZsYWdIZWxwKHN0ZDo6b3N0cmVhbSYgb3V0
LCBjb25zdCBmbGFnc19pbnRlcm5hbDo6Q29tbWFuZExpbmVGbGFnJiBmbGFnLAorICAgICAgICAg
ICAgICBIZWxwRm9ybWF0IGZvcm1hdCA9IEhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlKTsKKwor
Ly8gUHJvZHVjZXMgdGhlIGhlbHAgbWVzc2FnZXMgZm9yIGFsbCBmbGFncyBtYXRjaGluZyB0aGUg
ZmlsdGVyLiBBIGZsYWcgbWF0Y2hlcworLy8gdGhlIGZpbHRlciBpZiBpdCBpcyBkZWZpbmVkIGlu
IGEgZmlsZSB3aXRoIGEgZmlsZW5hbWUgd2hpY2ggaW5jbHVkZXMKKy8vIGZpbHRlciBzdHJpbmcg
YXMgYSBzdWJzdHJpbmcuIFlvdSBjYW4gdXNlICcvJyBhbmQgJy4nIHRvIHJlc3RyaWN0IHRoZQor
Ly8gbWF0Y2hpbmcgdG8gYSBzcGVjaWZpYyBmaWxlIG5hbWVzLiBGb3IgZXhhbXBsZToKKy8vICAg
RmxhZ3NIZWxwKG91dCwgIi9wYXRoL3RvL2ZpbGUuIik7CisvLyByZXN0cmljdHMgaGVscCB0byBv
bmx5IGZsYWdzIHdoaWNoIHJlc2lkZXMgaW4gZmlsZXMgbmFtZWQgbGlrZToKKy8vICAuLi4vcGF0
aC90by9maWxlLjxleHQ+CisvLyBmb3IgYW55IGV4dGVuc2lvbiAnZXh0Jy4gSWYgdGhlIGZpbHRl
ciBpcyBlbXB0eSB0aGlzIGZ1bmN0aW9uIHByb2R1Y2VzIGhlbHAKKy8vIG1lc3NhZ2VzIGZvciBh
bGwgZmxhZ3MuCit2b2lkIEZsYWdzSGVscChzdGQ6Om9zdHJlYW0mIG91dCwgYWJzbDo6c3RyaW5n
X3ZpZXcgZmlsdGVyLAorICAgICAgICAgICAgICAgSGVscEZvcm1hdCBmb3JtYXQsIGFic2w6OnN0
cmluZ192aWV3IHByb2dyYW1fdXNhZ2VfbWVzc2FnZSk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8v
IElmIGFueSBvZiB0aGUgJ3VzYWdlJyByZWxhdGVkIGNvbW1hbmQgbGluZSBmbGFncyAobGlzdGVk
IG9uIHRoZSBib3R0b20gb2YKKy8vIHRoaXMgZmlsZSkgaGFzIGJlZW4gc2V0IHRoaXMgcm91dGlu
ZSBwcm9kdWNlcyBjb3JyZXNwb25kaW5nIGhlbHAgbWVzc2FnZSBpbgorLy8gdGhlIHNwZWNpZmll
ZCBvdXRwdXQgc3RyZWFtIGFuZCByZXR1cm5zOgorLy8gIDAgLSBpZiAidmVyc2lvbiIgb3IgIm9u
bHlfY2hlY2tfZmxhZ3MiIGZsYWdzIHdlcmUgc2V0IGFuZCBoYW5kbGVkLgorLy8gIDEgLSBpZiBz
b21lIG90aGVyICd1c2FnZScgcmVsYXRlZCBmbGFnIHdhcyBzZXQgYW5kIGhhbmRsZWQuCisvLyAt
MSAtIGlmIG5vIHVzYWdlIGZsYWdzIHdlcmUgc2V0IG9uIGEgY29tbW1hbmQgbGluZS4KKy8vIE5v
biBuZWdhdGl2ZSByZXR1cm4gdmFsdWVzIGFyZSBleHBlY3RlZCB0byBiZSB1c2VkIGFzIGFuIGV4
aXQgY29kZSBmb3IgYQorLy8gYmluYXJ5LgoraW50IEhhbmRsZVVzYWdlRmxhZ3Moc3RkOjpvc3Ry
ZWFtJiBvdXQsCisgICAgICAgICAgICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldyBwcm9ncmFt
X3VzYWdlX21lc3NhZ2UpOworCit9ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCisKK0FCU0xfREVDTEFSRV9GTEFHKGJvb2wsIGhlbHApOworQUJTTF9E
RUNMQVJFX0ZMQUcoYm9vbCwgaGVscGZ1bGwpOworQUJTTF9ERUNMQVJFX0ZMQUcoYm9vbCwgaGVs
cHNob3J0KTsKK0FCU0xfREVDTEFSRV9GTEFHKGJvb2wsIGhlbHBwYWNrYWdlKTsKK0FCU0xfREVD
TEFSRV9GTEFHKGJvb2wsIHZlcnNpb24pOworQUJTTF9ERUNMQVJFX0ZMQUcoYm9vbCwgb25seV9j
aGVja19hcmdzKTsKK0FCU0xfREVDTEFSRV9GTEFHKHN0ZDo6c3RyaW5nLCBoZWxwb24pOworQUJT
TF9ERUNMQVJFX0ZMQUcoc3RkOjpzdHJpbmcsIGhlbHBtYXRjaCk7CisKKyNlbmRpZiAgLy8gQUJT
TF9GTEFHU19JTlRFUk5BTF9VU0FHRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJu
YWwvdXNhZ2VfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlX3Rlc3QuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzgxZTFkMmIxNmFiYTU3NmUyYzE1OWVhMzgwMDVlM2E5ZDcyN2RiMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlX3Rlc3QuY2MKQEAgLTAsMCAr
MSw0MDQgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlLmgiCisKKyNpbmNsdWRlIDxzc3Ry
ZWFtPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2Zs
YWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3BhdGhfdXRpbC5oIgorI2luY2x1
ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcHJvZ3JhbV9uYW1lLmgiCisjaW5jbHVkZSAiYWJzbC9m
bGFncy9wYXJzZS5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvdXNhZ2UuaCIKKyNpbmNsdWRlICJh
YnNsL2ZsYWdzL3VzYWdlX2NvbmZpZy5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgorCitBQlNMX0ZMQUcoaW50LCB1c2Fn
ZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxLCAxMDEsCisgICAgICAgICAgInVzYWdlX3JlcG9ydGlu
Z190ZXN0X2ZsYWdfMDEgaGVscCBtZXNzYWdlIik7CitBQlNMX0ZMQUcoYm9vbCwgdXNhZ2VfcmVw
b3J0aW5nX3Rlc3RfZmxhZ18wMiwgZmFsc2UsCisgICAgICAgICAgInVzYWdlX3JlcG9ydGluZ190
ZXN0X2ZsYWdfMDIgaGVscCBtZXNzYWdlIik7CitBQlNMX0ZMQUcoZG91YmxlLCB1c2FnZV9yZXBv
cnRpbmdfdGVzdF9mbGFnXzAzLCAxLjAzLAorICAgICAgICAgICJ1c2FnZV9yZXBvcnRpbmdfdGVz
dF9mbGFnXzAzIGhlbHAgbWVzc2FnZSIpOworQUJTTF9GTEFHKGludDY0X3QsIHVzYWdlX3JlcG9y
dGluZ190ZXN0X2ZsYWdfMDQsIDEwMDAwMDAwMDAwMDAwMDRMLAorICAgICAgICAgICJ1c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzA0IGhlbHAgbWVzc2FnZSIpOworCitzdGF0aWMgY29uc3QgY2hh
ciBrVGVzdFVzYWdlTWVzc2FnZVtdID0gIkN1c3RvbSB1c2FnZSBtZXNzYWdlIjsKKworc3RydWN0
IFVEVCB7CisgIFVEVCgpID0gZGVmYXVsdDsKKyAgVURUKGNvbnN0IFVEVCYpID0gZGVmYXVsdDsK
K307Citib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIFVEVCosIHN0ZDo6c3Ry
aW5nKikgeyByZXR1cm4gdHJ1ZTsgfQorc3RkOjpzdHJpbmcgQWJzbFVucGFyc2VGbGFnKGNvbnN0
IFVEVCYpIHsgcmV0dXJuICJVRFR7fSI7IH0KKworQUJTTF9GTEFHKFVEVCwgdXNhZ2VfcmVwb3J0
aW5nX3Rlc3RfZmxhZ18wNSwge30sCisgICAgICAgICAgInVzYWdlX3JlcG9ydGluZ190ZXN0X2Zs
YWdfMDUgaGVscCBtZXNzYWdlIik7CisKK0FCU0xfRkxBRygKKyAgICBzdGQ6OnN0cmluZywgdXNh
Z2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiwge30sCisgICAgInVzYWdlX3JlcG9ydGluZ190ZXN0
X2ZsYWdfMDYgaGVscCBtZXNzYWdlLlxuIgorICAgICJcbiIKKyAgICAiU29tZSBtb3JlIGhlbHAu
XG4iCisgICAgIkV2ZW4gbW9yZSBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxv
bmcgbG9uZyBsb25nIGxvbmcgbG9uZyAiCisgICAgImhlbHAgbWVzc2FnZS4iKTsKKworbmFtZXNw
YWNlIHsKKworbmFtZXNwYWNlIGZsYWdzID0gYWJzbDo6ZmxhZ3NfaW50ZXJuYWw7CisKK3N0YXRp
YyBzdGQ6OnN0cmluZyBOb3JtYWxpemVGaWxlTmFtZShhYnNsOjpzdHJpbmdfdmlldyBmbmFtZSkg
eworI2lmZGVmIF9XSU4zMgorICBzdGQ6OnN0cmluZyBub3JtYWxpemVkKGZuYW1lKTsKKyAgc3Rk
OjpyZXBsYWNlKG5vcm1hbGl6ZWQuYmVnaW4oKSwgbm9ybWFsaXplZC5lbmQoKSwgJ1xcJywgJy8n
KTsKKyAgZm5hbWUgPSBub3JtYWxpemVkOworI2VuZGlmCisKKyAgYXV0byBhYnNsX3BvcyA9IGZu
YW1lLmZpbmQoIi9hYnNsLyIpOworICBpZiAoYWJzbF9wb3MgIT0gYWJzbDo6c3RyaW5nX3ZpZXc6
Om5wb3MpIHsKKyAgICBmbmFtZSA9IGZuYW1lLnN1YnN0cihhYnNsX3BvcyArIDEpOworICB9Cisg
IHJldHVybiBzdGQ6OnN0cmluZyhmbmFtZSk7Cit9CisKK2NsYXNzIFVzYWdlUmVwb3J0aW5nVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFVzYWdlUmVwb3J0aW5n
VGVzdCgpIHsKKyAgICAvLyBJbnN0YWxsIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgdXNlIG9uIHRo
aXMgdW5pdCB0ZXN0LgorICAgIC8vIEJpbmFyeSBtYXkgaW5zdGFsbCBhIGN1c3RvbSBjb25maWcg
YmVmb3JlIHRlc3RzIGFyZSBydW4uCisgICAgYWJzbDo6RmxhZ3NVc2FnZUNvbmZpZyBkZWZhdWx0
X2NvbmZpZzsKKyAgICBkZWZhdWx0X2NvbmZpZy5ub3JtYWxpemVfZmlsZW5hbWUgPSAmTm9ybWFs
aXplRmlsZU5hbWU7CisgICAgYWJzbDo6U2V0RmxhZ3NVc2FnZUNvbmZpZyhkZWZhdWx0X2NvbmZp
Zyk7CisgIH0KKworIHByaXZhdGU6CisgIGZsYWdzOjpGbGFnU2F2ZXIgZmxhZ19zYXZlcl87Cit9
OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCit1c2luZyBVc2FnZVJlcG9ydGluZ0RlYXRoVGVzdCA9IFVz
YWdlUmVwb3J0aW5nVGVzdDsKKworVEVTVF9GKFVzYWdlUmVwb3J0aW5nRGVhdGhUZXN0LCBUZXN0
U2V0UHJvZ3JhbVVzYWdlTWVzc2FnZSkgeworICBFWFBFQ1RfRVEoYWJzbDo6UHJvZ3JhbVVzYWdl
TWVzc2FnZSgpLCBrVGVzdFVzYWdlTWVzc2FnZSk7CisKKyNpZm5kZWYgX1dJTjMyCisgIC8vIFRP
RE8ocm9nZWVmZik6IGZpZ3VyZSBvdXQgd2h5IHRoaXMgZG9lcyBub3Qgd29yayBvbiBXaW5kb3dz
LgorICBFWFBFQ1RfREVBVEgoYWJzbDo6U2V0UHJvZ3JhbVVzYWdlTWVzc2FnZSgiY3VzdG9tIHVz
YWdlIG1lc3NhZ2UiKSwKKyAgICAgICAgICAgICAgICIuKlNldFByb2dyYW1Vc2FnZU1lc3NhZ2Vc
XChcXCkgY2FsbGVkIHR3aWNlLioiKTsKKyNlbmRpZgorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitU
RVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0LCBUZXN0RmxhZ0hlbHBIUkZfb25fZmxhZ18wMSkgewor
ICBjb25zdCBhdXRvKiBmbGFnID0gZmxhZ3M6OkZpbmRDb21tYW5kTGluZUZsYWcoInVzYWdlX3Jl
cG9ydGluZ190ZXN0X2ZsYWdfMDEiKTsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWY7CisK
KyAgZmxhZ3M6OkZsYWdIZWxwKHRlc3RfYnVmLCAqZmxhZywgZmxhZ3M6OkhlbHBGb3JtYXQ6OmtI
dW1hblJlYWRhYmxlKTsKKyAgRVhQRUNUX0VRKAorICAgICAgdGVzdF9idWYuc3RyKCksCisgICAg
ICBSIiggICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDEgKHVzYWdlX3JlcG9ydGluZ190
ZXN0X2ZsYWdfMDEgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEwMTsKKykiKTsKK30K
KworVEVTVF9GKFVzYWdlUmVwb3J0aW5nVGVzdCwgVGVzdEZsYWdIZWxwSFJGX29uX2ZsYWdfMDIp
IHsKKyAgY29uc3QgYXV0byogZmxhZyA9IGZsYWdzOjpGaW5kQ29tbWFuZExpbmVGbGFnKCJ1c2Fn
ZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAyIik7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVm
OworCisgIGZsYWdzOjpGbGFnSGVscCh0ZXN0X2J1ZiwgKmZsYWcsIGZsYWdzOjpIZWxwRm9ybWF0
OjprSHVtYW5SZWFkYWJsZSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHRlc3RfYnVmLnN0cigpLAor
ICAgICAgUiIoICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAyICh1c2FnZV9yZXBvcnRp
bmdfdGVzdF9mbGFnXzAyIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiBmYWxzZTsKKyki
KTsKK30KKworVEVTVF9GKFVzYWdlUmVwb3J0aW5nVGVzdCwgVGVzdEZsYWdIZWxwSFJGX29uX2Zs
YWdfMDMpIHsKKyAgY29uc3QgYXV0byogZmxhZyA9IGZsYWdzOjpGaW5kQ29tbWFuZExpbmVGbGFn
KCJ1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAzIik7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRl
c3RfYnVmOworCisgIGZsYWdzOjpGbGFnSGVscCh0ZXN0X2J1ZiwgKmZsYWcsIGZsYWdzOjpIZWxw
Rm9ybWF0OjprSHVtYW5SZWFkYWJsZSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHRlc3RfYnVmLnN0
cigpLAorICAgICAgUiIoICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAzICh1c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzAzIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxLjAz
OworKSIpOworfQorCitURVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0LCBUZXN0RmxhZ0hlbHBIUkZf
b25fZmxhZ18wNCkgeworICBjb25zdCBhdXRvKiBmbGFnID0gZmxhZ3M6OkZpbmRDb21tYW5kTGlu
ZUZsYWcoInVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDQiKTsKKyAgc3RkOjpzdHJpbmdzdHJl
YW0gdGVzdF9idWY7CisKKyAgZmxhZ3M6OkZsYWdIZWxwKHRlc3RfYnVmLCAqZmxhZywgZmxhZ3M6
OkhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlKTsKKyAgRVhQRUNUX0VRKAorICAgICAgdGVzdF9i
dWYuc3RyKCksCisgICAgICBSIiggICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDQgKHVz
YWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDQgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6
IDEwMDAwMDAwMDAwMDAwMDQ7CispIik7Cit9CisKK1RFU1RfRihVc2FnZVJlcG9ydGluZ1Rlc3Qs
IFRlc3RGbGFnSGVscEhSRl9vbl9mbGFnXzA1KSB7CisgIGNvbnN0IGF1dG8qIGZsYWcgPSBmbGFn
czo6RmluZENvbW1hbmRMaW5lRmxhZygidXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNSIpOwor
ICBzdGQ6OnN0cmluZ3N0cmVhbSB0ZXN0X2J1ZjsKKworICBmbGFnczo6RmxhZ0hlbHAodGVzdF9i
dWYsICpmbGFnLCBmbGFnczo6SGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUpOworICBFWFBFQ1Rf
RVEoCisgICAgICB0ZXN0X2J1Zi5zdHIoKSwKKyAgICAgIFIiKCAgICAtdXNhZ2VfcmVwb3J0aW5n
X3Rlc3RfZmxhZ18wNSAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNSBoZWxwIG1lc3NhZ2Up
OworICAgICAgZGVmYXVsdDogVURUe307CispIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
U1RfRihVc2FnZVJlcG9ydGluZ1Rlc3QsIFRlc3RGbGFnc0hlbHBIUkYpIHsKKyAgc3RkOjpzdHJp
bmcgdXNhZ2VfdGVzdF9mbGFnc19vdXQgPQorICAgICAgUiIodXNhZ2VfdGVzdDogQ3VzdG9tIHVz
YWdlIG1lc3NhZ2UKKworICBGbGFncyBmcm9tIGFic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2VfdGVz
dC5jYzoKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMSAodXNhZ2VfcmVwb3J0aW5n
X3Rlc3RfZmxhZ18wMSBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogMTAxOworICAgIC11
c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAyICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAy
IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiBmYWxzZTsKKyAgICAtdXNhZ2VfcmVwb3J0
aW5nX3Rlc3RfZmxhZ18wMyAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMyBoZWxwIG1lc3Nh
Z2UpOworICAgICAgZGVmYXVsdDogMS4wMzsKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxh
Z18wNCAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNCBoZWxwIG1lc3NhZ2UpOworICAgICAg
ZGVmYXVsdDogMTAwMDAwMDAwMDAwMDAwNDsKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxh
Z18wNSAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNSBoZWxwIG1lc3NhZ2UpOworICAgICAg
ZGVmYXVsdDogVURUe307CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDYgKHVzYWdl
X3JlcG9ydGluZ190ZXN0X2ZsYWdfMDYgaGVscCBtZXNzYWdlLgorCisgICAgICBTb21lIG1vcmUg
aGVscC4KKyAgICAgIEV2ZW4gbW9yZSBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25n
IGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBoZWxwCisgICAgICBtZXNzYWdlLik7IGRlZmF1bHQ6
ICIiOworKSI7CisKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWZfMDE7CisgIGZsYWdzOjpG
bGFnc0hlbHAodGVzdF9idWZfMDEsICJ1c2FnZV90ZXN0LmNjIiwKKyAgICAgICAgICAgICAgICAg
ICBmbGFnczo6SGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUsIGtUZXN0VXNhZ2VNZXNzYWdlKTsK
KyAgRVhQRUNUX0VRKHRlc3RfYnVmXzAxLnN0cigpLCB1c2FnZV90ZXN0X2ZsYWdzX291dCk7CisK
KyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWZfMDI7CisgIGZsYWdzOjpGbGFnc0hlbHAodGVz
dF9idWZfMDIsICJmbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0LmNjIiwKKyAgICAgICAgICAgICAg
ICAgICBmbGFnczo6SGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUsIGtUZXN0VXNhZ2VNZXNzYWdl
KTsKKyAgRVhQRUNUX0VRKHRlc3RfYnVmXzAyLnN0cigpLCB1c2FnZV90ZXN0X2ZsYWdzX291dCk7
CisKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWZfMDM7CisgIGZsYWdzOjpGbGFnc0hlbHAo
dGVzdF9idWZfMDMsICJ1c2FnZV90ZXN0IiwgZmxhZ3M6OkhlbHBGb3JtYXQ6OmtIdW1hblJlYWRh
YmxlLAorICAgICAgICAgICAgICAgICAgIGtUZXN0VXNhZ2VNZXNzYWdlKTsKKyAgRVhQRUNUX0VR
KHRlc3RfYnVmXzAzLnN0cigpLCB1c2FnZV90ZXN0X2ZsYWdzX291dCk7CisKKyAgc3RkOjpzdHJp
bmdzdHJlYW0gdGVzdF9idWZfMDQ7CisgIGZsYWdzOjpGbGFnc0hlbHAodGVzdF9idWZfMDQsICJm
bGFncy9pbnZhbGlkX2ZpbGVfbmFtZS5jYyIsCisgICAgICAgICAgICAgICAgICAgZmxhZ3M6Okhl
bHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlLCBrVGVzdFVzYWdlTWVzc2FnZSk7CisgIEVYUEVDVF9F
USh0ZXN0X2J1Zl8wNC5zdHIoKSwKKyAgICAgICAgICAgIFIiKHVzYWdlX3Rlc3Q6IEN1c3RvbSB1
c2FnZSBtZXNzYWdlCisKKyAgTm8gbW9kdWxlcyBtYXRjaGVkOiB1c2UgLWhlbHBmdWxsCispIik7
CisKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWZfMDU7CisgIGZsYWdzOjpGbGFnc0hlbHAo
dGVzdF9idWZfMDUsICIiLCBmbGFnczo6SGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUsCisgICAg
ICAgICAgICAgICAgICAga1Rlc3RVc2FnZU1lc3NhZ2UpOworICBzdGQ6OnN0cmluZyB0ZXN0X291
dCA9IHRlc3RfYnVmXzA1LnN0cigpOworICBhYnNsOjpzdHJpbmdfdmlldyB0ZXN0X291dF9zdHIo
dGVzdF9vdXQpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OlN0YXJ0c1dpdGgodGVzdF9v
dXRfc3RyLCAidXNhZ2VfdGVzdDogQ3VzdG9tIHVzYWdlIG1lc3NhZ2UiKSk7CisgIEVYUEVDVF9U
UlVFKGFic2w6OlN0ckNvbnRhaW5zKAorICAgICAgdGVzdF9vdXRfc3RyLCAiRmxhZ3MgZnJvbSBh
YnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlX3Rlc3QuY2M6IikpOworICBFWFBFQ1RfVFJVRShhYnNs
OjpTdHJDb250YWlucyh0ZXN0X291dF9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJGbGFncyBmcm9tIGFic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuY2M6IikpOworICBFWFBF
Q1RfVFJVRSgKKyAgICAgIGFic2w6OlN0ckNvbnRhaW5zKHRlc3Rfb3V0X3N0ciwgIi11c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzAxICIpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6U3RyQ29udGFp
bnModGVzdF9vdXRfc3RyLCAiLWhlbHAgKHNob3cgaGVscCIpKQorICAgICAgPDwgdGVzdF9vdXRf
c3RyOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0LCBU
ZXN0Tm9Vc2FnZUZsYWdzKSB7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmOworICBFWFBF
Q1RfRVEoZmxhZ3M6OkhhbmRsZVVzYWdlRmxhZ3ModGVzdF9idWYsIGtUZXN0VXNhZ2VNZXNzYWdl
KSwgLTEpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0
LCBUZXN0VXNhZ2VGbGFnX2hlbHBzaG9ydCkgeworICBhYnNsOjpTZXRGbGFnKCZGTEFHU19oZWxw
c2hvcnQsIHRydWUpOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmOworICBFWFBFQ1Rf
RVEoZmxhZ3M6OkhhbmRsZVVzYWdlRmxhZ3ModGVzdF9idWYsIGtUZXN0VXNhZ2VNZXNzYWdlKSwg
MSk7CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zi5zdHIoKSwKKyAgICAgICAgICAgIFIiKHVzYWdlX3Rl
c3Q6IEN1c3RvbSB1c2FnZSBtZXNzYWdlCisKKyAgRmxhZ3MgZnJvbSBhYnNsL2ZsYWdzL2ludGVy
bmFsL3VzYWdlX3Rlc3QuY2M6CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDEgKHVz
YWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDEgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6
IDEwMTsKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiAodXNhZ2VfcmVwb3J0aW5n
X3Rlc3RfZmxhZ18wMiBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogZmFsc2U7CisgICAg
LXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDMgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdf
MDMgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEuMDM7CisgICAgLXVzYWdlX3JlcG9y
dGluZ190ZXN0X2ZsYWdfMDQgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDQgaGVscCBtZXNz
YWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEwMDAwMDAwMDAwMDAwMDQ7CisgICAgLXVzYWdlX3JlcG9y
dGluZ190ZXN0X2ZsYWdfMDUgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUgaGVscCBtZXNz
YWdlKTsKKyAgICAgIGRlZmF1bHQ6IFVEVHt9OworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9m
bGFnXzA2ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA2IGhlbHAgbWVzc2FnZS4KKworICAg
ICAgU29tZSBtb3JlIGhlbHAuCisgICAgICBFdmVuIG1vcmUgbG9uZyBsb25nIGxvbmcgbG9uZyBs
b25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgaGVscAorICAgICAgbWVzc2Fn
ZS4pOyBkZWZhdWx0OiAiIjsKKykiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFVz
YWdlUmVwb3J0aW5nVGVzdCwgVGVzdFVzYWdlRmxhZ19oZWxwKSB7CisgIGFic2w6OlNldEZsYWco
JkZMQUdTX2hlbHAsIHRydWUpOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmOworICBF
WFBFQ1RfRVEoZmxhZ3M6OkhhbmRsZVVzYWdlRmxhZ3ModGVzdF9idWYsIGtUZXN0VXNhZ2VNZXNz
YWdlKSwgMSk7CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zi5zdHIoKSwKKyAgICAgICAgICAgIFIiKHVz
YWdlX3Rlc3Q6IEN1c3RvbSB1c2FnZSBtZXNzYWdlCisKKyAgRmxhZ3MgZnJvbSBhYnNsL2ZsYWdz
L2ludGVybmFsL3VzYWdlX3Rlc3QuY2M6CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdf
MDEgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDEgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRl
ZmF1bHQ6IDEwMTsKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiAodXNhZ2VfcmVw
b3J0aW5nX3Rlc3RfZmxhZ18wMiBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogZmFsc2U7
CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDMgKHVzYWdlX3JlcG9ydGluZ190ZXN0
X2ZsYWdfMDMgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEuMDM7CisgICAgLXVzYWdl
X3JlcG9ydGluZ190ZXN0X2ZsYWdfMDQgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDQgaGVs
cCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEwMDAwMDAwMDAwMDAwMDQ7CisgICAgLXVzYWdl
X3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUgaGVs
cCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IFVEVHt9OworICAgIC11c2FnZV9yZXBvcnRpbmdf
dGVzdF9mbGFnXzA2ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA2IGhlbHAgbWVzc2FnZS4K
KworICAgICAgU29tZSBtb3JlIGhlbHAuCisgICAgICBFdmVuIG1vcmUgbG9uZyBsb25nIGxvbmcg
bG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgaGVscAorICAgICAg
bWVzc2FnZS4pOyBkZWZhdWx0OiAiIjsKKworVHJ5IC0taGVscGZ1bGwgdG8gZ2V0IGEgbGlzdCBv
ZiBhbGwgZmxhZ3MuCispIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihVc2FnZVJl
cG9ydGluZ1Rlc3QsIFRlc3RVc2FnZUZsYWdfaGVscHBhY2thZ2UpIHsKKyAgYWJzbDo6U2V0Rmxh
ZygmRkxBR1NfaGVscHBhY2thZ2UsIHRydWUpOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3Rf
YnVmOworICBFWFBFQ1RfRVEoZmxhZ3M6OkhhbmRsZVVzYWdlRmxhZ3ModGVzdF9idWYsIGtUZXN0
VXNhZ2VNZXNzYWdlKSwgMSk7CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zi5zdHIoKSwKKyAgICAgICAg
ICAgIFIiKHVzYWdlX3Rlc3Q6IEN1c3RvbSB1c2FnZSBtZXNzYWdlCisKKyAgRmxhZ3MgZnJvbSBh
YnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlX3Rlc3QuY2M6CisgICAgLXVzYWdlX3JlcG9ydGluZ190
ZXN0X2ZsYWdfMDEgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDEgaGVscCBtZXNzYWdlKTsK
KyAgICAgIGRlZmF1bHQ6IDEwMTsKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiAo
dXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVs
dDogZmFsc2U7CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDMgKHVzYWdlX3JlcG9y
dGluZ190ZXN0X2ZsYWdfMDMgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEuMDM7Cisg
ICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDQgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2Zs
YWdfMDQgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEwMDAwMDAwMDAwMDAwMDQ7Cisg
ICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2Zs
YWdfMDUgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IFVEVHt9OworICAgIC11c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzA2ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA2IGhlbHAg
bWVzc2FnZS4KKworICAgICAgU29tZSBtb3JlIGhlbHAuCisgICAgICBFdmVuIG1vcmUgbG9uZyBs
b25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgaGVs
cAorICAgICAgbWVzc2FnZS4pOyBkZWZhdWx0OiAiIjsKKworVHJ5IC0taGVscGZ1bGwgdG8gZ2V0
IGEgbGlzdCBvZiBhbGwgZmxhZ3MuCispIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1Rf
RihVc2FnZVJlcG9ydGluZ1Rlc3QsIFRlc3RVc2FnZUZsYWdfdmVyc2lvbikgeworICBhYnNsOjpT
ZXRGbGFnKCZGTEFHU192ZXJzaW9uLCB0cnVlKTsKKworICBzdGQ6OnN0cmluZ3N0cmVhbSB0ZXN0
X2J1ZjsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5kbGVVc2FnZUZsYWdzKHRlc3RfYnVmLCBrVGVz
dFVzYWdlTWVzc2FnZSksIDApOworI2lmbmRlZiBOREVCVUcKKyAgRVhQRUNUX0VRKHRlc3RfYnVm
LnN0cigpLCAidXNhZ2VfdGVzdFxuRGVidWcgYnVpbGQgKE5ERUJVRyBub3QgI2RlZmluZWQpXG4i
KTsKKyNlbHNlCisgIEVYUEVDVF9FUSh0ZXN0X2J1Zi5zdHIoKSwgInVzYWdlX3Rlc3RcbiIpOwor
I2VuZGlmCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihVc2FnZVJlcG9ydGluZ1Rlc3Qs
IFRlc3RVc2FnZUZsYWdfb25seV9jaGVja19hcmdzKSB7CisgIGFic2w6OlNldEZsYWcoJkZMQUdT
X29ubHlfY2hlY2tfYXJncywgdHJ1ZSk7CisKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWY7
CisgIEVYUEVDVF9FUShmbGFnczo6SGFuZGxlVXNhZ2VGbGFncyh0ZXN0X2J1Ziwga1Rlc3RVc2Fn
ZU1lc3NhZ2UpLCAwKTsKKyAgRVhQRUNUX0VRKHRlc3RfYnVmLnN0cigpLCAiIik7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK1RFU1RfRihVc2FnZVJlcG9ydGluZ1Rlc3QsIFRlc3RVc2FnZUZsYWdf
aGVscG9uKSB7CisgIGFic2w6OlNldEZsYWcoJkZMQUdTX2hlbHBvbiwgImJsYS1ibGEiKTsKKwor
ICBzdGQ6OnN0cmluZ3N0cmVhbSB0ZXN0X2J1Zl8wMTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5k
bGVVc2FnZUZsYWdzKHRlc3RfYnVmXzAxLCBrVGVzdFVzYWdlTWVzc2FnZSksIDEpOworICBFWFBF
Q1RfRVEodGVzdF9idWZfMDEuc3RyKCksCisgICAgICAgICAgICBSIih1c2FnZV90ZXN0OiBDdXN0
b20gdXNhZ2UgbWVzc2FnZQorCisgIE5vIG1vZHVsZXMgbWF0Y2hlZDogdXNlIC1oZWxwZnVsbAor
KSIpOworCisgIGFic2w6OlNldEZsYWcoJkZMQUdTX2hlbHBvbiwgInVzYWdlX3Rlc3QiKTsKKwor
ICBzdGQ6OnN0cmluZ3N0cmVhbSB0ZXN0X2J1Zl8wMjsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5k
bGVVc2FnZUZsYWdzKHRlc3RfYnVmXzAyLCBrVGVzdFVzYWdlTWVzc2FnZSksIDEpOworICBFWFBF
Q1RfRVEodGVzdF9idWZfMDIuc3RyKCksCisgICAgICAgICAgICBSIih1c2FnZV90ZXN0OiBDdXN0
b20gdXNhZ2UgbWVzc2FnZQorCisgIEZsYWdzIGZyb20gYWJzbC9mbGFncy9pbnRlcm5hbC91c2Fn
ZV90ZXN0LmNjOgorICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxICh1c2FnZV9yZXBv
cnRpbmdfdGVzdF9mbGFnXzAxIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxMDE7Cisg
ICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2Zs
YWdfMDIgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IGZhbHNlOworICAgIC11c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzAzICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAzIGhlbHAg
bWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxLjAzOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVz
dF9mbGFnXzA0ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0IGhlbHAgbWVzc2FnZSk7Cisg
ICAgICBkZWZhdWx0OiAxMDAwMDAwMDAwMDAwMDA0OworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVz
dF9mbGFnXzA1ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA1IGhlbHAgbWVzc2FnZSk7Cisg
ICAgICBkZWZhdWx0OiBVRFR7fTsKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiAo
dXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiBoZWxwIG1lc3NhZ2UuCisKKyAgICAgIFNvbWUg
bW9yZSBoZWxwLgorICAgICAgRXZlbiBtb3JlIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25n
IGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGhlbHAKKyAgICAgIG1lc3NhZ2UuKTsgZGVm
YXVsdDogIiI7CispIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK30gIC8vIG5hbWVzcGFjZQor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CisgIGFic2w6OkdldEZsYWcoRkxB
R1NfdW5kZWZvayk7ICAvLyBGb3JjZSBsaW5raW5nIG9mIHBhcnNlLmNjCisgIGZsYWdzOjpTZXRQ
cm9ncmFtSW52b2NhdGlvbk5hbWUoInVzYWdlX3Rlc3QiKTsKKyAgYWJzbDo6U2V0UHJvZ3JhbVVz
YWdlTWVzc2FnZShrVGVzdFVzYWdlTWVzc2FnZSk7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoJmFyZ2MsIGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9mbGFncy9tYXJzaGFsbGluZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL21hcnNoYWxsaW5n
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYwMjVhZTdlODZjNGRjZmZkMzU1NzU1ZDFiNWE3MTQ4Yzg3NTY1MjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9tYXJzaGFsbGluZy5jYwpAQCAtMCwwICsx
LDE4OSBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwor
I2luY2x1ZGUgImFic2wvZmxhZ3MvbWFyc2hhbGxpbmcuaCIKKworI2luY2x1ZGUgPGxpbWl0cz4K
KworI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
bWF0Y2guaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbnVtYmVycy5oIgorI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQu
aCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2pvaW4uaCIKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3Mvc3RyX3NwbGl0LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBmbGFnc19p
bnRlcm5hbCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsUGFyc2VGbGFnIHNwZWNpYWxpemF0
aW9ucyBmb3IgYm9vbGVhbiB0eXBlLgorCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5n
X3ZpZXcgdGV4dCwgYm9vbCogZHN0LCBzdGQ6OnN0cmluZyopIHsKKyAgY29uc3QgY2hhcioga1Ry
dWVbXSA9IHsiMSIsICJ0IiwgInRydWUiLCAieSIsICJ5ZXMifTsKKyAgY29uc3QgY2hhcioga0Zh
bHNlW10gPSB7IjAiLCAiZiIsICJmYWxzZSIsICJuIiwgIm5vIn07CisgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKGtUcnVlKSA9PSBzaXplb2Yoa0ZhbHNlKSwgInRydWVfZmFsc2VfZXF1YWwiKTsKKwor
ICB0ZXh0ID0gYWJzbDo6U3RyaXBBc2NpaVdoaXRlc3BhY2UodGV4dCk7CisKKyAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBBQlNMX0FSUkFZU0laRShrVHJ1ZSk7ICsraSkgeworICAgIGlmIChhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKHRleHQsIGtUcnVlW2ldKSkgeworICAgICAgKmRzdCA9IHRydWU7
CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNh
c2UodGV4dCwga0ZhbHNlW2ldKSkgeworICAgICAgKmRzdCA9IGZhbHNlOworICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsgIC8vIGRpZG4ndCBtYXRjaCBhIGxl
Z2FsIGlucHV0Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsUGFyc2VGbGFnIGZvciBpbnRl
Z3JhbCB0eXBlcy4KKworLy8gUmV0dXJuIHRoZSBiYXNlIHRvIHVzZSBmb3IgcGFyc2luZyB0ZXh0
IGFzIGFuIGludGVnZXIuICBMZWFkaW5nIDB4CisvLyBwdXRzIHVzIGluIGJhc2UgMTYuICBCdXQg
bGVhZGluZyAwIGRvZXMgbm90IHB1dCB1cyBpbiBiYXNlIDguIEl0CisvLyBjYXVzZWQgdG9vIG1h
bnkgYnVncyB3aGVuIHdlIGhhZCB0aGF0IGJlaGF2aW9yLgorc3RhdGljIGludCBOdW1lcmljQmFz
ZShhYnNsOjpzdHJpbmdfdmlldyB0ZXh0KSB7CisgIGNvbnN0IGJvb2wgaGV4ID0gKHRleHQuc2l6
ZSgpID49IDIgJiYgdGV4dFswXSA9PSAnMCcgJiYKKyAgICAgICAgICAgICAgICAgICAgKHRleHRb
MV0gPT0gJ3gnIHx8IHRleHRbMV0gPT0gJ1gnKSk7CisgIHJldHVybiBoZXggPyAxNiA6IDEwOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK2lubGluZSBib29sIFBhcnNlRmxhZ0lt
cGwoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgSW50VHlwZSogZHN0KSB7CisgIHRleHQgPSBhYnNs
OjpTdHJpcEFzY2lpV2hpdGVzcGFjZSh0ZXh0KTsKKworICByZXR1cm4gYWJzbDo6bnVtYmVyc19p
bnRlcm5hbDo6c2FmZV9zdHJ0b2lfYmFzZSh0ZXh0LCBkc3QsIE51bWVyaWNCYXNlKHRleHQpKTsK
K30KKworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIHNob3J0KiBk
c3QsIHN0ZDo6c3RyaW5nKikgeworICBpbnQgdmFsOworICBpZiAoIVBhcnNlRmxhZ0ltcGwodGV4
dCwgJnZhbCkpIHJldHVybiBmYWxzZTsKKyAgaWYgKHN0YXRpY19jYXN0PHNob3J0Pih2YWwpICE9
IHZhbCkgIC8vIHdvcmtlZCwgYnV0IG51bWJlciBvdXQgb2YgcmFuZ2UKKyAgICByZXR1cm4gZmFs
c2U7CisgICpkc3QgPSBzdGF0aWNfY2FzdDxzaG9ydD4odmFsKTsKKyAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCB1bnNpZ25lZCBz
aG9ydCogZHN0LCBzdGQ6OnN0cmluZyopIHsKKyAgdW5zaWduZWQgaW50IHZhbDsKKyAgaWYgKCFQ
YXJzZUZsYWdJbXBsKHRleHQsICZ2YWwpKSByZXR1cm4gZmFsc2U7CisgIGlmIChzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBzaG9ydD4odmFsKSAhPQorICAgICAgdmFsKSAgLy8gd29ya2VkLCBidXQgbnVt
YmVyIG91dCBvZiByYW5nZQorICAgIHJldHVybiBmYWxzZTsKKyAgKmRzdCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIHNob3J0Pih2YWwpOworICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBBYnNsUGFy
c2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGludCogZHN0LCBzdGQ6OnN0cmluZyopIHsK
KyAgcmV0dXJuIFBhcnNlRmxhZ0ltcGwodGV4dCwgZHN0KTsKK30KKworYm9vbCBBYnNsUGFyc2VG
bGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIHVuc2lnbmVkIGludCogZHN0LCBzdGQ6OnN0cmlu
ZyopIHsKKyAgcmV0dXJuIFBhcnNlRmxhZ0ltcGwodGV4dCwgZHN0KTsKK30KKworYm9vbCBBYnNs
UGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGxvbmcqIGRzdCwgc3RkOjpzdHJpbmcq
KSB7CisgIHJldHVybiBQYXJzZUZsYWdJbXBsKHRleHQsIGRzdCk7Cit9CisKK2Jvb2wgQWJzbFBh
cnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCB1bnNpZ25lZCBsb25nKiBkc3QsIHN0ZDo6
c3RyaW5nKikgeworICByZXR1cm4gUGFyc2VGbGFnSW1wbCh0ZXh0LCBkc3QpOworfQorCitib29s
IEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgbG9uZyBsb25nKiBkc3QsIHN0
ZDo6c3RyaW5nKikgeworICByZXR1cm4gUGFyc2VGbGFnSW1wbCh0ZXh0LCBkc3QpOworfQorCiti
b29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgdW5zaWduZWQgbG9uZyBs
b25nKiBkc3QsCisgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqKSB7CisgIHJldHVybiBQ
YXJzZUZsYWdJbXBsKHRleHQsIGRzdCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsUGFy
c2VGbGFnIGZvciBmbG9hdGluZyBwb2ludCB0eXBlcy4KKworYm9vbCBBYnNsUGFyc2VGbGFnKGFi
c2w6OnN0cmluZ192aWV3IHRleHQsIGZsb2F0KiBkc3QsIHN0ZDo6c3RyaW5nKikgeworICByZXR1
cm4gYWJzbDo6U2ltcGxlQXRvZih0ZXh0LCBkc3QpOworfQorCitib29sIEFic2xQYXJzZUZsYWco
YWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgZG91YmxlKiBkc3QsIHN0ZDo6c3RyaW5nKikgeworICBy
ZXR1cm4gYWJzbDo6U2ltcGxlQXRvZCh0ZXh0LCBkc3QpOworfQorCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gQWJzbFBhcnNlRmxhZyBmb3Igc3RyaW5ncy4KKworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6
OnN0cmluZ192aWV3IHRleHQsIHN0ZDo6c3RyaW5nKiBkc3QsIHN0ZDo6c3RyaW5nKikgeworICBk
c3QtPmFzc2lnbih0ZXh0LmRhdGEoKSwgdGV4dC5zaXplKCkpOworICByZXR1cm4gdHJ1ZTsKK30K
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFic2xQYXJzZUZsYWcgZm9yIHZlY3RvciBvZiBzdHJpbmdz
LgorCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+KiBkc3QsCisgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqKSB7
CisgIC8vIEFuIGVtcHR5IGZsYWcgdmFsdWUgY29ycmVzcG9uZHMgdG8gYW4gZW1wdHkgdmVjdG9y
LCBub3QgYSB2ZWN0b3IKKyAgLy8gd2l0aCBhIHNpbmdsZSwgZW1wdHkgc3RkOjpzdHJpbmcuCisg
IGlmICh0ZXh0LmVtcHR5KCkpIHsKKyAgICBkc3QtPmNsZWFyKCk7CisgICAgcmV0dXJuIHRydWU7
CisgIH0KKyAgKmRzdCA9IGFic2w6OlN0clNwbGl0KHRleHQsICcsJywgYWJzbDo6QWxsb3dFbXB0
eSgpKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsVW5wYXJz
ZUZsYWcgc3BlY2lhbGl6YXRpb25zIGZvciB2YXJpb3VzIGJ1aWx0aW4gZmxhZyB0eXBlcy4KKwor
c3RkOjpzdHJpbmcgVW5wYXJzZShib29sIHYpIHsgcmV0dXJuIHYgPyAidHJ1ZSIgOiAiZmFsc2Ui
OyB9CitzdGQ6OnN0cmluZyBVbnBhcnNlKHNob3J0IHYpIHsgcmV0dXJuIGFic2w6OlN0ckNhdCh2
KTsgfQorc3RkOjpzdHJpbmcgVW5wYXJzZSh1bnNpZ25lZCBzaG9ydCB2KSB7IHJldHVybiBhYnNs
OjpTdHJDYXQodik7IH0KK3N0ZDo6c3RyaW5nIFVucGFyc2UoaW50IHYpIHsgcmV0dXJuIGFic2w6
OlN0ckNhdCh2KTsgfQorc3RkOjpzdHJpbmcgVW5wYXJzZSh1bnNpZ25lZCBpbnQgdikgeyByZXR1
cm4gYWJzbDo6U3RyQ2F0KHYpOyB9CitzdGQ6OnN0cmluZyBVbnBhcnNlKGxvbmcgdikgeyByZXR1
cm4gYWJzbDo6U3RyQ2F0KHYpOyB9CitzdGQ6OnN0cmluZyBVbnBhcnNlKHVuc2lnbmVkIGxvbmcg
dikgeyByZXR1cm4gYWJzbDo6U3RyQ2F0KHYpOyB9CitzdGQ6OnN0cmluZyBVbnBhcnNlKGxvbmcg
bG9uZyB2KSB7IHJldHVybiBhYnNsOjpTdHJDYXQodik7IH0KK3N0ZDo6c3RyaW5nIFVucGFyc2Uo
dW5zaWduZWQgbG9uZyBsb25nIHYpIHsgcmV0dXJuIGFic2w6OlN0ckNhdCh2KTsgfQordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0cmluZyBVbnBhcnNlRmxvYXRpbmdQb2ludFZhbChUIHYp
IHsKKyAgLy8gZGlnaXRzMTAgaXMgZ3VhcmFudGVlZCB0byByb3VuZHRyaXAgY29ycmVjdGx5IGlu
IHN0ZDo6c3RyaW5nIC0+IHZhbHVlIC0+IHN0ZDo6c3RyaW5nCisgIC8vIGNvbnZlcnNpb25zLCBi
dXQgbWF5IG5vdCBiZSBlbm91Z2ggdG8gcmVwcmVzZW50IGFsbCB0aGUgdmFsdWVzIGNvcnJlY3Rs
eS4KKyAgc3RkOjpzdHJpbmcgZGlnaXQxMF9zdHIgPQorICAgICAgYWJzbDo6U3RyRm9ybWF0KCIl
LipnIiwgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzMTAsIHYpOworICBpZiAoc3RkOjpp
c25hbih2KSB8fCBzdGQ6OmlzaW5mKHYpKSByZXR1cm4gZGlnaXQxMF9zdHI7CisKKyAgVCByb3Vu
ZHRyaXBfdmFsID0gMDsKKyAgc3RkOjpzdHJpbmcgZXJyOworICBpZiAoYWJzbDo6UGFyc2VGbGFn
KGRpZ2l0MTBfc3RyLCAmcm91bmR0cmlwX3ZhbCwgJmVycikgJiYKKyAgICAgIHJvdW5kdHJpcF92
YWwgPT0gdikgeworICAgIHJldHVybiBkaWdpdDEwX3N0cjsKKyAgfQorCisgIC8vIG1heF9kaWdp
dHMxMCBpcyB0aGUgbnVtYmVyIG9mIGJhc2UtMTAgZGlnaXRzIHRoYXQgYXJlIG5lY2Vzc2FyeSB0
byB1bmlxdWVseQorICAvLyByZXByZXNlbnQgYWxsIGRpc3RpbmN0IHZhbHVlcy4KKyAgcmV0dXJu
IGFic2w6OlN0ckZvcm1hdCgiJS4qZyIsIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heF9kaWdp
dHMxMCwgdik7Cit9CitzdGQ6OnN0cmluZyBVbnBhcnNlKGZsb2F0IHYpIHsgcmV0dXJuIFVucGFy
c2VGbG9hdGluZ1BvaW50VmFsKHYpOyB9CitzdGQ6OnN0cmluZyBVbnBhcnNlKGRvdWJsZSB2KSB7
IHJldHVybiBVbnBhcnNlRmxvYXRpbmdQb2ludFZhbCh2KTsgfQorc3RkOjpzdHJpbmcgQWJzbFVu
cGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHYpIHsgcmV0dXJuIHN0ZDo6c3RyaW5nKHYpOyB9
CitzdGQ6OnN0cmluZyBBYnNsVW5wYXJzZUZsYWcoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+JiB2KSB7CisgIHJldHVybiBhYnNsOjpTdHJKb2luKHYsICIsIik7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2ZsYWdzL21hcnNoYWxsaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9tYXJzaGFsbGluZy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY5ZTI5NTk0MzdhMWU4ZmUwNTI1ODY0MGJhNjlhYzAxMTQyOTk0Y2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9tYXJzaGFsbGluZy5oCkBAIC0wLDAgKzEsMjUzIEBA
CisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBtYXJzaGFsbGluZy5oCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyB0aGUgQVBJIGZvciBl
eHRlbmRpbmcgQWJzZWlsIGZsYWcgc3VwcG9ydCB0bworLy8gY3VzdG9tIHR5cGVzLCBhbmQgZGVm
aW5lcyB0aGUgc2V0IG9mIG92ZXJsb2FkcyBmb3IgZnVuZGFtZW50YWwgdHlwZXMuCisvLworLy8g
T3V0IG9mIHRoZSBib3gsIHRoZSBBYnNlaWwgZmxhZ3MgbGlicmFyeSBzdXBwb3J0cyB0aGUgZm9s
bG93aW5nIHR5cGVzOgorLy8KKy8vICogYGJvb2xgCisvLyAqIGBpbnQxNl90YAorLy8gKiBgdWlu
dDE2X3RgCisvLyAqIGBpbnQzMl90YAorLy8gKiBgdWludDMyX3RgCisvLyAqIGBpbnQ2NF90YAor
Ly8gKiBgdWludDY0X3RgCisvLyAqIGBmbG9hdGAKKy8vICogYGRvdWJsZWAKKy8vICogYHN0ZDo6
c3RyaW5nYAorLy8gKiBgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+YAorLy8KKy8vIE5vdGUgdGhh
dCBzdXBwb3J0IGZvciBpbnRlZ3JhbCB0eXBlcyBpcyBpbXBsZW1lbnRlZCB1c2luZyBvdmVybG9h
ZHMgZm9yCisvLyB2YXJpYWJsZS13aWR0aCBmdW5kYW1lbnRhbCB0eXBlcyAoYHNob3J0YCwgYGlu
dGAsIGBsb25nYCwgZXRjLikuIEhvd2V2ZXIsCisvLyB5b3Ugc2hvdWxkIHByZWZlciB0aGUgZml4
ZWQtd2lkdGggaW50ZWdyYWwgdHlwZXMgKGBpbnQzMl90YCwgYHVpbnQ2NF90YCwKKy8vIGV0Yy4p
IHdlJ3ZlIG5vdGVkIGFib3ZlIHdpdGhpbiBmbGFnIGRlZmluaXRpb25zLgorCisvLworLy8gSW4g
YWRkaXRpb24sIHNldmVyYWwgQWJzZWlsIGxpYnJhcmllcyBwcm92aWRlIHRoZWlyIG93biBjdXN0
b20gc3VwcG9ydCBmb3IKKy8vIEFic2VpbCBmbGFncy4KKy8vCisvLyBUaGUgQWJzZWlsIHRpbWUg
bGlicmFyeSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIHN1cHBvcnQgZm9yIGNpdmlsIHRpbWUgdmFs
dWVzOgorLy8KKy8vICogYGFic2w6OkNpdmlsU2Vjb25kYAorLy8gKiBgYWJzbDo6Q2l2aWxNaW51
dGVgCisvLyAqIGBhYnNsOjpDaXZpbEhvdXJgCisvLyAqIGBhYnNsOjpDaXZpbERheWAKKy8vICog
YGFic2w6OkNpdmlsTW9udGhgCisvLyAqIGBhYnNsOjpDaXZpbFllYXJgCisvLworLy8gYW5kIGFs
c28gcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZyBhYnNvbHV0ZSB0aW1lIHZhbHVl
czoKKy8vCisvLyAqIGBhYnNsOjpEdXJhdGlvbmAKKy8vICogYGFic2w6OlRpbWVgCisvLworLy8g
QWRkaXRpb25hbCBzdXBwb3J0IGZvciBBYnNlaWwgdHlwZXMgd2lsbCBiZSBub3RlZCBoZXJlIGFz
IGl0IGlzIGFkZGVkLgorLy8KKy8vIFlvdSBjYW4gYWxzbyBwcm92aWRlIHlvdXIgb3duIGN1c3Rv
bSBmbGFncyBieSBhZGRpbmcgb3ZlcmxvYWRzIGZvcgorLy8gYEFic2xQYXJzZUZsYWcoKWAgYW5k
IGBBYnNsVW5wYXJzZUZsYWcoKWAgdG8geW91ciB0eXBlIGRlZmluaXRpb25zLiAoU2VlCisvLyBi
ZWxvdy4pCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFkZGluZyBUeXBlIFN1cHBv
cnQgZm9yIEFic2VpbCBGbGFncworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUbyBh
ZGQgc3VwcG9ydCBmb3IgeW91ciB1c2VyLWRlZmluZWQgdHlwZSwgYWRkIG92ZXJsb2FkcyBvZiBg
QWJzbFBhcnNlRmxhZygpYAorLy8gYW5kIGBBYnNsVW5wYXJzZUZsYWcoKWAgYXMgZnJlZSAobm9u
LW1lbWJlcikgZnVuY3Rpb25zIHRvIHlvdXIgdHlwZS4gSWYgYFRgCisvLyBpcyBhIGNsYXNzIHR5
cGUsIHRoZXNlIGZ1bmN0aW9ucyBjYW4gYmUgZnJpZW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zLiBU
aGVzZQorLy8gb3ZlcmxvYWRzIG11c3QgYmUgYWRkZWQgdG8gdGhlIHNhbWUgbmFtZXNwYWNlIHdo
ZXJlIHRoZSB0eXBlIGlzIGRlZmluZWQsIHNvCisvLyB0aGF0IHRoZXkgY2FuIGJlIGRpc2NvdmVy
ZWQgYnkgQXJndW1lbnQtRGVwZW5kZW50IExvb2t1cCAoQURMKS4KKy8vCisvLyBFeGFtcGxlOgor
Ly8KKy8vICAgbmFtZXNwYWNlIGZvbyB7CisvLworLy8gICBlbnVtIE91dHB1dE1vZGUgeyBrUGxh
aW5UZXh0LCBrSHRtbCB9OworLy8KKy8vICAgLy8gQWJzbFBhcnNlRmxhZyBjb252ZXJ0cyBmcm9t
IGEgc3RyaW5nIHRvIE91dHB1dE1vZGUuCisvLyAgIC8vIE11c3QgYmUgaW4gc2FtZSBuYW1lc3Bh
Y2UgYXMgT3V0cHV0TW9kZS4KKy8vCisvLyAgIC8vIFBhcnNlcyBhbiBPdXRwdXRNb2RlIGZyb20g
dGhlIGNvbW1hbmQgbGluZSBmbGFnIHZhbHVlIGB0ZXh0LiBSZXR1cm5zCisvLyAgIC8vIGB0cnVl
YCBhbmQgc2V0cyBgKm1vZGVgIG9uIHN1Y2Nlc3M7IHJldHVybnMgYGZhbHNlYCBhbmQgc2V0cyBg
KmVycm9yYAorLy8gICAvLyBvbiBmYWlsdXJlLgorLy8gICBib29sIEFic2xQYXJzZUZsYWcoYWJz
bDo6c3RyaW5nX3ZpZXcgdGV4dCwKKy8vICAgICAgICAgICAgICAgICAgICAgIE91dHB1dE1vZGUq
IG1vZGUsCisvLyAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJyb3IpIHsKKy8v
ICAgICBpZiAodGV4dCA9PSAicGxhaW50ZXh0IikgeworLy8gICAgICAgKm1vZGUgPSBrUGxhaW5U
ZXh0OworLy8gICAgICAgcmV0dXJuIHRydWU7CisvLyAgICAgfQorLy8gICAgIGlmICh0ZXh0ID09
ICJodG1sIikgeworLy8gICAgICAgKm1vZGUgPSBrSHRtbDsKKy8vICAgICAgcmV0dXJuIHRydWU7
CisvLyAgICAgfQorLy8gICAgICplcnJvciA9ICJ1bmtub3duIHZhbHVlIGZvciBlbnVtZXJhdGlv
biI7CisvLyAgICAgcmV0dXJuIGZhbHNlOworLy8gIH0KKy8vCisvLyAgLy8gQWJzbFVucGFyc2VG
bGFnIGNvbnZlcnRzIGZyb20gYW4gT3V0cHV0TW9kZSB0byBhIHN0cmluZy4KKy8vICAvLyBNdXN0
IGJlIGluIHNhbWUgbmFtZXNwYWNlIGFzIE91dHB1dE1vZGUuCisvLworLy8gIC8vIFJldHVybnMg
YSB0ZXh0dWFsIGZsYWcgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgT3V0cHV0TW9kZSBgbW9k
ZWAuCisvLyAgc3RkOjpzdHJpbmcgQWJzbFVucGFyc2VGbGFnKE91dHB1dE1vZGUgbW9kZSkgewor
Ly8gICAgc3dpdGNoIChtb2RlKSB7CisvLyAgICAgIGNhc2Uga1BsYWluVGV4dDogcmV0dXJuICJw
bGFpbnRleHQiOworLy8gICAgICBjYXNlIGtIdG1sOiByZXR1cm4gImh0bWwiOworLy8gICAgfQor
Ly8gICAgcmV0dXJuIGFic2w6OlN0ckNhdChtb2RlKTsKKy8vICB9CisvLworLy8gTm90aWNlIHRo
YXQgbmVpdGhlciBgQWJzbFBhcnNlRmxhZygpYCBub3IgYEFic2xVbnBhcnNlRmxhZygpYCBhcmUg
Y2xhc3MKKy8vIG1lbWJlcnMsIGJ1dCBmcmVlIGZ1bmN0aW9ucy4gYEFic2xQYXJzZUZsYWcvQWJz
bFVucGFyc2VGbGFnKClgIG92ZXJsb2FkcworLy8gZm9yIGEgdHlwZSBzaG91bGQgb25seSBiZSBk
ZWNsYXJlZCBpbiB0aGUgc2FtZSBmaWxlIGFuZCBuYW1lc3BhY2UgYXMgc2FpZAorLy8gdHlwZS4g
VGhlIHByb3BlciBgQWJzbFBhcnNlRmxhZy9BYnNsVW5wYXJzZUZsYWcoKWAgaW1wbGVtZW50YXRp
b25zIGZvciBhCisvLyBnaXZlbiB0eXBlIHdpbGwgYmUgZGlzY292ZXJlZCB2aWEgQXJndW1lbnQt
RGVwZW5kZW50IExvb2t1cCAoQURMKS4KKy8vCisvLyBgQWJzbFBhcnNlRmxhZygpYCBtYXkgbmVl
ZCwgaW4gdHVybiwgdG8gcGFyc2Ugc2ltcGxlciBjb25zdGl0dWVudCB0eXBlcworLy8gdXNpbmcg
YGFic2w6OlBhcnNlRmxhZygpYC4gRm9yIGV4YW1wbGUsIGEgY3VzdG9tIHN0cnVjdCBgTXlGbGFn
VHlwZWAKKy8vIGNvbnNpc3Rpbmcgb2YgYSBgc3RkOjpwYWlyPGludCwgc3RkOjpzdHJpbmc+YCB3
b3VsZCBhZGQgYW4gYEFic2xQYXJzZUZsYWcoKWAKKy8vIG92ZXJsb2FkIGZvciBpdHMgYE15Rmxh
Z1R5cGVgIGxpa2Ugc286CisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIG5hbWVzcGFjZSBteV9m
bGFnX3R5cGUgeworLy8KKy8vICAgc3RydWN0IE15RmxhZ1R5cGUgeworLy8gICAgIHN0ZDo6cGFp
cjxpbnQsIHN0ZDo6c3RyaW5nPiBteV9mbGFnX2RhdGE7CisvLyAgIH07CisvLworLy8gICBib29s
IEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgTXlGbGFnVHlwZSogZmxhZywK
Ky8vICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnIpOworLy8KKy8vICAgc3Rk
OjpzdHJpbmcgQWJzbFVucGFyc2VGbGFnKGNvbnN0IE15RmxhZ1R5cGUmKTsKKy8vCisvLyAgIC8v
IFdpdGhpbiB0aGUgaW1wbGVtZW50YXRpb24sIGBBYnNsUGFyc2VGbGFnKClgIHdpbGwsIGluIHR1
cm4gaW52b2tlCisvLyAgIC8vIGBhYnNsOjpQYXJzZUZsYWcoKWAgb24gaXRzIGNvbnN0aXR1ZW50
IGBpbnRgIGFuZCBgc3RkOjpzdHJpbmdgIHR5cGVzCisvLyAgIC8vICh3aGljaCBoYXZlIGJ1aWx0
LWluIEFic2VpbCBmbGFnIHN1cHBvcnQuCisvLworLy8gICBib29sIEFic2xQYXJzZUZsYWcoYWJz
bDo6c3RyaW5nX3ZpZXcgdGV4dCwgTXlGbGFnVHlwZSogZmxhZywKKy8vICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nKiBlcnIpIHsKKy8vICAgICBzdGQ6OnBhaXI8YWJzbDo6c3RyaW5n
X3ZpZXcsIGFic2w6OnN0cmluZ192aWV3PiB0b2tlbnMgPQorLy8gICAgICAgICBhYnNsOjpTdHJT
cGxpdCh0ZXh0LCAnLCcpOworLy8gICAgIGlmICghYWJzbDo6UGFyc2VGbGFnKHRva2Vucy5maXJz
dCwgJmZsYWctPm15X2ZsYWdfZGF0YS5maXJzdCwgZXJyKSkKKy8vICAgICAgICAgcmV0dXJuIGZh
bHNlOworLy8gICAgIGlmICghYWJzbDo6UGFyc2VGbGFnKHRva2Vucy5zZWNvbmQsICZmbGFnLT5t
eV9mbGFnX2RhdGEuc2Vjb25kLCBlcnIpKQorLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisvLyAg
ICAgcmV0dXJuIHRydWU7CisvLyAgIH0KKy8vCisvLyAgIC8vIFNpbWlsYXJseSwgZm9yIHVucGFy
c2luZywgd2UgY2FuIHNpbXBseSBpbnZva2UgYGFic2w6OlVucGFyc2VGbGFnKClgIG9uCisvLyAg
IC8vIHRoZSBjb25zdGl0dWVudCB0eXBlcy4KKy8vICAgc3RkOjpzdHJpbmcgQWJzbFVucGFyc2VG
bGFnKGNvbnN0IE15RmxhZ1R5cGUmIGZsYWcpIHsKKy8vICAgICByZXR1cm4gYWJzbDo6U3RyQ2F0
KGFic2w6OlVucGFyc2VGbGFnKGZsYWcubXlfZmxhZ19kYXRhLmZpcnN0KSwKKy8vICAgICAgICAg
ICAgICAgICAgICAgICAgICIsIiwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlVu
cGFyc2VGbGFnKGZsYWcubXlfZmxhZ19kYXRhLnNlY29uZCkpOworLy8gICB9CisjaWZuZGVmIEFC
U0xfRkxBR1NfTUFSU0hBTExJTkdfSF8KKyNkZWZpbmUgQUJTTF9GTEFHU19NQVJTSEFMTElOR19I
XworCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
ZmxhZ3NfaW50ZXJuYWwgeworCisvLyBPdmVybG9hZHMgb2YgYEFic2xQYXJzZUZsYWcoKWAgYW5k
IGBBYnNsVW5wYXJzZUZsYWcoKWAgZm9yIGZ1bmRhbWVudGFsIHR5cGVzLgorYm9vbCBBYnNsUGFy
c2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCBib29sKiwgc3RkOjpzdHJpbmcqKTsKK2Jvb2wgQWJz
bFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgc2hvcnQqLCBzdGQ6OnN0cmluZyopOyAgICAg
ICAgICAgLy8gTk9MSU5UCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIHVu
c2lnbmVkIHNob3J0Kiwgc3RkOjpzdHJpbmcqKTsgIC8vIE5PTElOVAorYm9vbCBBYnNsUGFyc2VG
bGFnKGFic2w6OnN0cmluZ192aWV3LCBpbnQqLCBzdGQ6OnN0cmluZyopOyAgICAgICAgICAgICAv
LyBOT0xJTlQKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgdW5zaWduZWQg
aW50Kiwgc3RkOjpzdHJpbmcqKTsgICAgLy8gTk9MSU5UCitib29sIEFic2xQYXJzZUZsYWcoYWJz
bDo6c3RyaW5nX3ZpZXcsIGxvbmcqLCBzdGQ6OnN0cmluZyopOyAgICAgICAgICAgIC8vIE5PTElO
VAorYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCB1bnNpZ25lZCBsb25nKiwg
c3RkOjpzdHJpbmcqKTsgICAvLyBOT0xJTlQKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJp
bmdfdmlldywgbG9uZyBsb25nKiwgc3RkOjpzdHJpbmcqKTsgICAgICAgLy8gTk9MSU5UCitib29s
IEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIHVuc2lnbmVkIGxvbmcgbG9uZyosCisg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqKTsgIC8vIE5PTElOVAorYm9vbCBBYnNsUGFy
c2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCBmbG9hdCosIHN0ZDo6c3RyaW5nKik7Citib29sIEFi
c2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIGRvdWJsZSosIHN0ZDo6c3RyaW5nKik7Citi
b29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIHN0ZDo6c3RyaW5nKiwgc3RkOjpz
dHJpbmcqKTsKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+Kiwgc3RkOjpzdHJpbmcqKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Citib29sIEludm9rZVBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyBpbnB1dCwgVCogZHN0LCBz
dGQ6OnN0cmluZyogZXJyKSB7CisgIC8vIENvbW1lbnQgb24gbmV4dCBsaW5lIHByb3ZpZGVzIGEg
Z29vZCBjb21waWxlciBlcnJvciBtZXNzYWdlIGlmIFQKKyAgLy8gZG9lcyBub3QgaGF2ZSBBYnNs
UGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCBUKiwgc3RkOjpzdHJpbmcqKS4KKyAgcmV0dXJu
IEFic2xQYXJzZUZsYWcoaW5wdXQsIGRzdCwgZXJyKTsgIC8vIElzIFQgbWlzc2luZyBBYnNsUGFy
c2VGbGFnPworfQorCisvLyBTdHJpbmdzIGFuZCBzdGQ6OiBjb250YWluZXJzIGRvIG5vdCBoYXZl
IHRoZSBzYW1lIG92ZXJsb2FkIHJlc29sdXRpb24KKy8vIGNvbnNpZGVyYXRpb25zIGFzIGZ1bmRh
bWVudGFsIHR5cGVzLiBOYW1pbmcgdGhlc2UgJ0Fic2xVbnBhcnNlRmxhZycgbWVhbnMgd2UKKy8v
IGNhbiBhdm9pZCB0aGUgbmVlZCBmb3IgYWRkaXRpb25hbCBzcGVjaWFsaXphdGlvbnMgb2YgVW5w
YXJzZSAoYmVsb3cpLgorc3RkOjpzdHJpbmcgQWJzbFVucGFyc2VGbGFnKGFic2w6OnN0cmluZ192
aWV3IHYpOworc3RkOjpzdHJpbmcgQWJzbFVucGFyc2VGbGFnKGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIFVucGFy
c2UoY29uc3QgVCYgdikgeworICAvLyBDb21tZW50IG9uIG5leHQgbGluZSBwcm92aWRlcyBhIGdv
b2QgY29tcGlsZXIgZXJyb3IgbWVzc2FnZSBpZiBUIGRvZXMgbm90CisgIC8vIGhhdmUgVW5wYXJz
ZUZsYWcuCisgIHJldHVybiBBYnNsVW5wYXJzZUZsYWcodik7ICAvLyBJcyBUIG1pc3NpbmcgQWJz
bFVucGFyc2VGbGFnPworfQorCisvLyBPdmVybG9hZHMgZm9yIGJ1aWx0aW4gdHlwZXMuCitzdGQ6
OnN0cmluZyBVbnBhcnNlKGJvb2wgdik7CitzdGQ6OnN0cmluZyBVbnBhcnNlKHNob3J0IHYpOyAg
ICAgICAgICAgICAgIC8vIE5PTElOVAorc3RkOjpzdHJpbmcgVW5wYXJzZSh1bnNpZ25lZCBzaG9y
dCB2KTsgICAgICAvLyBOT0xJTlQKK3N0ZDo6c3RyaW5nIFVucGFyc2UoaW50IHYpOyAgICAgICAg
ICAgICAgICAgLy8gTk9MSU5UCitzdGQ6OnN0cmluZyBVbnBhcnNlKHVuc2lnbmVkIGludCB2KTsg
ICAgICAgIC8vIE5PTElOVAorc3RkOjpzdHJpbmcgVW5wYXJzZShsb25nIHYpOyAgICAgICAgICAg
ICAgICAvLyBOT0xJTlQKK3N0ZDo6c3RyaW5nIFVucGFyc2UodW5zaWduZWQgbG9uZyB2KTsgICAg
ICAgLy8gTk9MSU5UCitzdGQ6OnN0cmluZyBVbnBhcnNlKGxvbmcgbG9uZyB2KTsgICAgICAgICAg
IC8vIE5PTElOVAorc3RkOjpzdHJpbmcgVW5wYXJzZSh1bnNpZ25lZCBsb25nIGxvbmcgdik7ICAv
LyBOT0xJTlQKK3N0ZDo6c3RyaW5nIFVucGFyc2UoZmxvYXQgdik7CitzdGQ6OnN0cmluZyBVbnBh
cnNlKGRvdWJsZSB2KTsKKworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCisKKy8vIFBh
cnNlRmxhZygpCisvLworLy8gUGFyc2VzIGEgc3RyaW5nIHZhbHVlIGludG8gYSBmbGFnIHZhbHVl
IG9mIHR5cGUgYFRgLiBEbyBub3QgYWRkIG92ZXJsb2FkcyBvZgorLy8gdGhpcyBmdW5jdGlvbiBm
b3IgeW91ciB0eXBlIGRpcmVjdGx5OyBpbnN0ZWFkLCBhZGQgYW4gYEFic2xQYXJzZUZsYWcoKWAK
Ky8vIGZyZWUgZnVuY3Rpb24gYXMgZG9jdW1lbnRlZCBhYm92ZS4KKy8vCisvLyBTb21lIGltcGxl
bWVudGF0aW9ucyBvZiBgQWJzbFBhcnNlRmxhZygpYCBmb3IgdHlwZXMgd2hpY2ggY29uc2lzdCBv
ZiBvdGhlciwKKy8vIGNvbnN0aXR1ZW50IHR5cGVzIHdoaWNoIGFscmVhZHkgaGF2ZSBBYnNlaWwg
ZmxhZyBzdXBwb3J0LCBtYXkgbmVlZCB0byBjYWxsCisvLyBgYWJzbDo6UGFyc2VGbGFnKClgIG9u
IHRob3NlIGNvbnNpdHVlbnQgc3RyaW5nIHZhbHVlcy4gKFNlZSBhYm92ZS4pCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2lubGluZSBib29sIFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyBpbnB1
dCwgVCogZHN0LCBzdGQ6OnN0cmluZyogZXJyb3IpIHsKKyAgcmV0dXJuIGZsYWdzX2ludGVybmFs
OjpJbnZva2VQYXJzZUZsYWcoaW5wdXQsIGRzdCwgZXJyb3IpOworfQorCisvLyBVbnBhcnNlRmxh
ZygpCisvLworLy8gVW5wYXJzZXMgYSBmbGFnIHZhbHVlIG9mIHR5cGUgYFRgIGludG8gYSBzdHJp
bmcgdmFsdWUuIERvIG5vdCBhZGQgb3ZlcmxvYWRzCisvLyBvZiB0aGlzIGZ1bmN0aW9uIGZvciB5
b3VyIHR5cGUgZGlyZWN0bHk7IGluc3RlYWQsIGFkZCBhbiBgQWJzbFVucGFyc2VGbGFnKClgCisv
LyBmcmVlIGZ1bmN0aW9uIGFzIGRvY3VtZW50ZWQgYWJvdmUuCisvLworLy8gU29tZSBpbXBsZW1l
bnRhdGlvbnMgb2YgYEFic2xVbnBhcnNlRmxhZygpYCBmb3IgdHlwZXMgd2hpY2ggY29uc2lzdCBv
ZiBvdGhlciwKKy8vIGNvbnN0aXR1ZW50IHR5cGVzIHdoaWNoIGFscmVhZHkgaGF2ZSBBYnNlaWwg
ZmxhZyBzdXBwb3J0LCBtYXkgd2FudCB0byBjYWxsCisvLyBgYWJzbDo6VW5wYXJzZUZsYWcoKWAg
b24gdGhvc2UgY29uc3RpdHVlbnQgdHlwZXMuIChTZWUgYWJvdmUuKQordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitpbmxpbmUgc3RkOjpzdHJpbmcgVW5wYXJzZUZsYWcoY29uc3QgVCYgdikgeworICBy
ZXR1cm4gZmxhZ3NfaW50ZXJuYWw6OlVucGFyc2Uodik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCisKKyNlbmRpZiAgLy8gQUJTTF9GTEFHU19NQVJTSEFMTElOR19IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZmxhZ3MvbWFyc2hhbGxpbmdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL21hcnNoYWxsaW5n
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdjZDE5NDBlMzRkMjJkMGUzNWU1ODBiNTFlYjM2MjA2ZDBm
ZjE4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL21hcnNoYWxsaW5nX3Rlc3QuY2MK
QEAgLTAsMCArMSw4OTkgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL21hcnNoYWxsaW5nLmgiCisKKyNpbmNsdWRl
IDxjbWF0aD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK1RF
U1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0Qm9vbFBhcnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJy
OworICBib29sIHZhbHVlOworCisgIC8vIFRydWUgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIlRydWUiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUodmFsdWUp
OworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoInRydWUiLCAmdmFsdWUsICZlcnIpKTsK
KyAgRVhQRUNUX1RSVUUodmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIlRS
VUUiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUodmFsdWUpOworCisgIEVYUEVDVF9U
UlVFKGFic2w6OlBhcnNlRmxhZygiWWVzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVF
KHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJ5ZXMiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX1RSVUUodmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoIllFUyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJ0IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9U
UlVFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJUIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9UUlVFKHZhbHVlKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJz
ZUZsYWcoInkiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUodmFsdWUpOworICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIlkiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RS
VUUodmFsdWUpOworCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMSIsICZ2YWx1ZSwg
JmVycikpOworICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisKKyAgLy8gRmFsc2UgdmFsdWVzLgorICBF
WFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIkZhbHNlIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9GQUxTRSh2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiZmFsc2Ui
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6UGFyc2VGbGFnKCJGQUxTRSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0Uo
dmFsdWUpOworCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiTm8iLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0ZBTFNFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCJubyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UodmFsdWUpOworICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIk5PIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9G
QUxTRSh2YWx1ZSk7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJmIiwgJnZhbHVl
LCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRSh2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBh
cnNlRmxhZygiRiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UodmFsdWUpOworCisg
IEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygibiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfRkFMU0UodmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIk4iLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKHZhbHVlKTsKKworICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIjAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKHZhbHVlKTsK
KworICAvLyBXaGl0ZXNwYWNlIGhhbmRsaW5nLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoIiAgdHJ1ZSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisgIEVY
UEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygidHJ1ZSAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9UUlVFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIHRydWUg
ICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUodmFsdWUpOworCisgIC8vIEludmFs
aWQgaW5wdXQuCisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIgICIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJcbiIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJcdCIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIyIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVD
VF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIjExIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9G
QUxTRShhYnNsOjpQYXJzZUZsYWcoInR0IiwgJnZhbHVlLCAmZXJyKSk7Cit9CisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0SW50MTZQYXJzaW5nKSB7CisgIHN0
ZDo6c3RyaW5nIGVycjsKKyAgaW50MTZfdCB2YWx1ZTsKKworICAvLyBEZWNpbWFsIHZhbHVlcy4K
KyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMCIsICZ2
YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDApOworICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIi0xIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgLTEp
OworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEyMyIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfRVEodmFsdWUsIDEyMyk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygi
LTE4NzY1IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgLTE4NzY1KTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIrMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfRVEodmFsdWUsIDMpOworCisgIC8vIExlYWRpbmcgemVybyB2YWx1ZXMuCisgIEVYUEVDVF9U
UlVFKGFic2w6OlBhcnNlRmxhZygiMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZh
bHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCItMDAxIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgLTEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJz
ZUZsYWcoIjAwMDAxMDAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMDAp
OworCisgIC8vIEhleCB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMHgx
MCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDE2KTsKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6UGFyc2VGbGFnKCIwWDIzNCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEo
dmFsdWUsIDU2NCk7CisgIC8vIFRPRE8ocm9nZWVmZik6IGZpeCBiZWxvdyB2YWxpZGF0aW9ucwor
ICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCItMHg3RkZEIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9ORSh2YWx1ZSwgLTMpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFn
KCIrMHgzMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfTkUodmFsdWUsIDQ5KTsKKworICAv
LyBXaGl0ZXNwYWNlIGhhbmRsaW5nCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMTAg
ICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEwKTsKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6UGFyc2VGbGFnKCIgIDExIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2
YWx1ZSwgMTEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAgMDEyICAiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMik7CisgIEVYUEVDVF9UUlVFKGFic2w6
OlBhcnNlRmxhZygiIDB4MjIgICAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1
ZSwgMzQpOworCisgIC8vIEludmFsaWQgdmFsdWVzLgorICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFy
c2VGbGFnKCIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxh
ZygiICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIg
ICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCI0MDAw
MCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCItLTEi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXG4iLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXHQiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMlUiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiRkZGIiwgJnZhbHVlLCAm
ZXJyKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0
VWludDE2UGFyc2luZykgeworICBzdGQ6OnN0cmluZyBlcnI7CisgIHVpbnQxNl90IHZhbHVlOwor
CisgIC8vIERlY2ltYWwgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6UGFyc2VGbGFnKCIwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwg
MCk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMTIzIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTIzKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCIrMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDMpOworCisgIC8vIExl
YWRpbmcgemVybyB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDEiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCIwMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAx
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDAwMTAwIiwgJnZhbHVlLCAmZXJy
KSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTAwKTsKKworICAvLyBIZXggdmFsdWVzLgorICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4MTAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNU
X0VRKHZhbHVlLCAxNik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMFgyMzQiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCA1NjQpOworICAvLyBUT0RPKHJvZ2Vl
ZmYpOiBmaXggYmVsb3cgdmFsaWRhdGlvbnMKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxh
ZygiKzB4MzEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FKHZhbHVlLCA0OSk7CisKKyAg
Ly8gV2hpdGVzcGFjZSBoYW5kbGluZworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEw
ICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMCk7CisgIEVYUEVDVF9U
UlVFKGFic2w6OlBhcnNlRmxhZygiICAxMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEo
dmFsdWUsIDExKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDAxMiAgIiwgJnZh
bHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTIpOworICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIiAweDIyICAgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFs
dWUsIDM0KTsKKworICAvLyBJbnZhbGlkIHZhbHVlcy4KKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBh
cnNlRmxhZygiIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZs
YWcoIiAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygi
ICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiNzAw
MDAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiLTEi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiLS0xIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIlxuIiwgJnZh
bHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIlx0IiwgJnZhbHVl
LCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIjJVIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIkZGRiIsICZ2YWx1ZSwgJmVy
cikpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdElu
dDMyUGFyc2luZykgeworICBzdGQ6OnN0cmluZyBlcnI7CisgIGludDMyX3QgdmFsdWU7CisKKyAg
Ly8gRGVjaW1hbCB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMSIsICZ2
YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEpOworICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIjAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAwKTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCItMSIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRVEodmFsdWUsIC0xKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxMjMi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMjMpOworICBFWFBFQ1RfVFJV
RShhYnNsOjpQYXJzZUZsYWcoIi05ODc2NSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEo
dmFsdWUsIC05ODc2NSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiKzMiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAzKTsKKworICAvLyBMZWFkaW5nIHplcm8g
dmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAxIiwgJnZhbHVlLCAmZXJy
KSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxh
ZygiLTAwMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIC0xKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDAwMTAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9FUSh2YWx1ZSwgMTAwKTsKKworICAvLyBIZXggdmFsdWVzLgorICBFWFBFQ1RfVFJVRShh
YnNsOjpQYXJzZUZsYWcoIjB4MTAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVl
LCAxNik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMFgyMzQiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCA1NjQpOworICAvLyBUT0RPKHJvZ2VlZmYpOiBmaXgg
YmVsb3cgdmFsaWRhdGlvbnMKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiLTB4N0ZG
RkZGRkQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FKHZhbHVlLCAtMyk7CisgIEVYUEVD
VF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIisweDMxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVD
VF9ORSh2YWx1ZSwgNDkpOworCisgIC8vIFdoaXRlc3BhY2UgaGFuZGxpbmcKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6UGFyc2VGbGFnKCIxMCAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2
YWx1ZSwgMTApOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAgMTEiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBh
cnNlRmxhZygiICAwMTIgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEy
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgMHgyMiAgICAiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAzNCk7CisKKyAgLy8gSW52YWxpZCB2YWx1ZXMuCisg
IEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9G
QUxTRShhYnNsOjpQYXJzZUZsYWcoIiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxT
RShhYnNsOjpQYXJzZUZsYWcoIjcwMDAwMDAwMDAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVD
VF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIi0tMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1Rf
RkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJcbiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFM
U0UoYWJzbDo6UGFyc2VGbGFnKCJcdCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0Uo
YWJzbDo6UGFyc2VGbGFnKCIyVSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJz
bDo6UGFyc2VGbGFnKCJGRkYiLCAmdmFsdWUsICZlcnIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworVEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRlc3RVaW50MzJQYXJzaW5nKSB7CisgIHN0ZDo6c3Ry
aW5nIGVycjsKKyAgdWludDMyX3QgdmFsdWU7CisKKyAgLy8gRGVjaW1hbCB2YWx1ZXMuCisgIEVY
UEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1Rf
RVEodmFsdWUsIDEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAwKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCIxMjMiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMjMpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiszIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9FUSh2YWx1ZSwgMyk7CisKKyAgLy8gTGVhZGluZyB6ZXJvIHZhbHVlcy4KKyAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEo
dmFsdWUsIDEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAwMDAxMDAiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMDApOworCisgIC8vIEhleCB2YWx1ZXMu
CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMHgxMCIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfRVEodmFsdWUsIDE2KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIw
WDIzNCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDU2NCk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMHhGRkZGRkZGRCIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRVEodmFsdWUsIDQyOTQ5NjcyOTMpOworICAvLyBUT0RPKHJvZ2VlZmYpOiBmaXggYmVs
b3cgdmFsaWRhdGlvbnMKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiKzB4MzEiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FKHZhbHVlLCA0OSk7CisKKyAgLy8gV2hpdGVzcGFj
ZSBoYW5kbGluZworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEwICAiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMCk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBh
cnNlRmxhZygiICAxMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDExKTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDAxMiAgIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTIpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWco
IiAweDIyICAgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDM0KTsKKwor
ICAvLyBJbnZhbGlkIHZhbHVlcy4KKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIiAiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiICAiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMTQwMDAwMDAwMDAwIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIi0xIiwgJnZh
bHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIi0tMSIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJcbiIsICZ2YWx1ZSwg
JmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJcdCIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIyVSIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJGRkYiLCAmdmFsdWUsICZlcnIpKTsK
K30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRlc3RJbnQ2NFBh
cnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJyOworICBpbnQ2NF90IHZhbHVlOworCisgIC8vIERl
Y2ltYWwgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCIwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMCk7CisgIEVY
UEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiLTEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNU
X0VRKHZhbHVlLCAtMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMTIzIiwgJnZh
bHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTIzKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCItOTg3NjUiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVl
LCAtOTg3NjUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiszIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMyk7CisKKyAgLy8gTGVhZGluZyB6ZXJvIHZhbHVl
cy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMSIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfRVEodmFsdWUsIDEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAw
MSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEpOworICBFWFBFQ1RfVFJV
RShhYnNsOjpQYXJzZUZsYWcoIjAwMDAxMDAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VR
KHZhbHVlLCAxMDApOworCisgIC8vIEhleCB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBh
cnNlRmxhZygiMHgxMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDE2KTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwWEZGRkFBQUJCQkNDQ0RERCIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDExNTI4Mjc2ODQxOTcwMjcyOTMpOworICAv
LyBUT0RPKHJvZ2VlZmYpOiBmaXggYmVsb3cgdmFsaWRhdGlvbgorICBFWFBFQ1RfRkFMU0UoYWJz
bDo6UGFyc2VGbGFnKCItMHg3RkZGRkZGRkZGRkZGRkZFIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9ORSh2YWx1ZSwgLTIpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIrMHgz
MSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfTkUodmFsdWUsIDQ5KTsKKworICAvLyBXaGl0
ZXNwYWNlIGhhbmRsaW5nCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMTAgICIsICZ2
YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEwKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCIgIDExIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwg
MTEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAgMDEyICAiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNl
RmxhZygiIDB4N0YgICAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTI3
KTsKKworICAvLyBJbnZhbGlkIHZhbHVlcy4KKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxh
ZygiIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIiAi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiICAiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMHhGRkZGRkZG
RkZGRkZGRkZGRkYiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNl
RmxhZygiLS0xIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZs
YWcoIlxuIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWco
Ilx0IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIjJV
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIkZGRiIs
ICZ2YWx1ZSwgJmVycikpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5n
VGVzdCwgVGVzdFVJbnQ2NFBhcnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJyOworICB1aW50NjRf
dCB2YWx1ZTsKKworICAvLyBEZWNpbWFsIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCIxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVY
UEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1Rf
RVEodmFsdWUsIDApOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEyMyIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEyMyk7CisgIEVYUEVDVF9UUlVFKGFic2w6
OlBhcnNlRmxhZygiKzEzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTMp
OworCisgIC8vIExlYWRpbmcgemVybyB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNl
RmxhZygiMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNU
X0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDAwMzAwIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMzAwKTsKKworICAvLyBIZXggdmFs
dWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4MTAiLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxNik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxh
ZygiMFhGRkZGIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgNjU1MzUpOwor
ICAvLyBUT0RPKHJvZ2VlZmYpOiBmaXggYmVsb3cgdmFsaWRhdGlvbgorICBFWFBFQ1RfRkFMU0Uo
YWJzbDo6UGFyc2VGbGFnKCIrMHgzMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfTkUodmFs
dWUsIDQ5KTsKKworICAvLyBXaGl0ZXNwYWNlIGhhbmRsaW5nCisgIEVYUEVDVF9UUlVFKGFic2w6
OlBhcnNlRmxhZygiMTAgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEw
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDExIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWco
IiAgMDEyICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMik7CisKKyAg
Ly8gSW52YWxpZCB2YWx1ZXMuCisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIiIsICZ2
YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIgIiwgJnZhbHVl
LCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIiAgIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIjB4RkZGRkZGRkZGRkZGRkZG
RkZGIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIi0x
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIi0tMSIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJcbiIsICZ2
YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJcdCIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIyVSIsICZ2YWx1ZSwg
JmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJGRkYiLCAmdmFsdWUsICZl
cnIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRlc3RG
bG9hdFBhcnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJyOworICBmbG9hdCB2YWx1ZTsKKworICAv
LyBPcmRpbmFyeSB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMS4zIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GTE9BVF9FUSh2YWx1ZSwgMS4zZik7CisgIEVYUEVD
VF9UUlVFKGFic2w6OlBhcnNlRmxhZygiLTAuMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1Rf
RE9VQkxFX0VRKHZhbHVlLCAtMC4xZik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygi
KzAuMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgMC4wMWYp
OworCisgIC8vIFNjaWVudGlmaWMgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoIjEuMmUzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDEu
MmUzZik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiOS44NzY1NDAyZS0zNyIsICZ2
YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCA5Ljg3NjU0MDJlLTM3Zik7
CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMC4xMWUrMyIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAwLjExZSszZik7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OlBhcnNlRmxhZygiMS5lLTIzMDAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJM
RV9FUSh2YWx1ZSwgMC5mKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxLmUrMjMw
MCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfVFJVRShzdGQ6OmlzaW5mKHZhbHVlKSk7CisK
KyAgLy8gTGVhZGluZyB6ZXJvIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCIwMS42IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDEuNmYp
OworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAwMC4wMDAxIiwgJnZhbHVlLCAmZXJy
KSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDAuMDAwMWYpOworCisgIC8vIFRyYWlsaW5n
IHplcm8gdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIi01LjEwMDAiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgLTUuMWYpOworCisgIC8v
IEV4Y2VwdGlvbmFsIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJOYU4i
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc25hbih2YWx1ZSkpOworICBF
WFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIkluZiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfVFJVRShzdGQ6OmlzaW5mKHZhbHVlKSk7CisKKyAgLy8gSGV4IHZhbHVlcworICBFWFBFQ1Rf
VFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4MTAuMjNwMTIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQ
RUNUX0RPVUJMRV9FUSh2YWx1ZSwgNjYwOTYuZik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNl
RmxhZygiLTB4RjEuQTNwLTIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FQVIodmFsdWUs
IC02MC40MDkyZiwgNWUtNWYpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIisweDAu
MEFBcC0xMiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfTkVBUih2YWx1ZSwgMS4wMTMyOGUt
MDVmLCA1ZS0xMWYpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4LjAxcDEiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FQVIodmFsdWUsIDAuMDA3ODEyNWYsIDVlLThmKTsK
KworICAvLyBXaGl0ZXNwYWNlIGhhbmRsaW5nCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxh
ZygiMTAuMSAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDEw
LjFmKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDIuMzQiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgMi4zNGYpOworICBFWFBFQ1RfVFJVRShh
YnNsOjpQYXJzZUZsYWcoIiAgNS43ICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJM
RV9FUSh2YWx1ZSwgNS43Zik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAtMHhF
MC5GM3AwMSAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORUFSKHZhbHVlLCAtNDQ5Ljg5
ODQzNzVmLCA1ZS04Zik7CisKKyAgLy8gSW52YWxpZCB2YWx1ZXMuCisgIEVYUEVDVF9GQUxTRShh
YnNsOjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6
UGFyc2VGbGFnKCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJz
ZUZsYWcoIiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZs
YWcoIi0tMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFn
KCJcbiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJc
dCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIyLjN4
eHgiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMHgw
LjFwQUEiLCAmdmFsdWUsICZlcnIpKTsKKyAgLy8gVE9ETyhyb2dlZWZmKTogYmVsb3cgYXNzZXJ0
aW9uIHNob3VsZCBmYWlsCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMHgwLjEiLCAm
dmFsdWUsICZlcnIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rl
c3QsIFRlc3REb3VibGVQYXJzaW5nKSB7CisgIHN0ZDo6c3RyaW5nIGVycjsKKyAgZG91YmxlIHZh
bHVlOworCisgIC8vIE9yZGluYXJ5IHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCIxLjMiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgMS4z
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCItMC4xIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIC0wLjEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoIiswLjAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFs
dWUsIDAuMDEpOworCisgIC8vIFNjaWVudGlmaWMgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIjEuMmUzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEo
dmFsdWUsIDEuMmUzKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCI5LjAwMDAwMDAy
ZS0xMjMiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgOS4wMDAw
MDAwMmUtMTIzKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwLjExZSszIiwgJnZh
bHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDAuMTFlKzMpOworICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEuZS0yMzAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9ET1VCTEVfRVEodmFsdWUsIDApOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWco
IjEuZSsyMzAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNpbmYodmFs
dWUpKTsKKworICAvLyBMZWFkaW5nIHplcm8gdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoIjAxLjYiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1
ZSwgMS42KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDAuMDAwMSIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAwLjAwMDEpOworCisgIC8vIFRy
YWlsaW5nIHplcm8gdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIi01LjEw
MDAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgLTUuMSk7CisK
KyAgLy8gRXhjZXB0aW9uYWwgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWco
Ik5hTiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfVFJVRShzdGQ6OmlzbmFuKHZhbHVlKSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygibmFuIiwgJnZhbHVlLCAmZXJyKSk7Cisg
IEVYUEVDVF9UUlVFKHN0ZDo6aXNuYW4odmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCJJbmYiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc2luZih2
YWx1ZSkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoImluZiIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfVFJVRShzdGQ6OmlzaW5mKHZhbHVlKSk7CisKKyAgLy8gSGV4IHZhbHVl
cworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4MTAuMjNwMTIiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgNjYwOTYpOworICBFWFBFQ1RfVFJVRShh
YnNsOjpQYXJzZUZsYWcoIi0weEYxLkEzcC0yIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9O
RUFSKHZhbHVlLCAtNjAuNDA5MiwgNWUtNSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxh
ZygiKzB4MC4wQUFwLTEyIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORUFSKHZhbHVlLCAx
LjAxMzI4ZS0wNSwgNWUtMTEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4LjAx
cDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FQVIodmFsdWUsIDAuMDA3ODEyNSwgNWUt
OCk7CisKKyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJz
ZUZsYWcoIjEwLjEgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVl
LCAxMC4xKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDIuMzQiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgMi4zNCk7CisgIEVYUEVDVF9UUlVF
KGFic2w6OlBhcnNlRmxhZygiICA1LjcgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9V
QkxFX0VRKHZhbHVlLCA1LjcpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAgLTB4
RTAuRjNwMDEgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfTkVBUih2YWx1ZSwgLTQ0OS44
OTg0Mzc1LCA1ZS04KTsKKworICAvLyBJbnZhbGlkIHZhbHVlcy4KKyAgRVhQRUNUX0ZBTFNFKGFi
c2w6OlBhcnNlRmxhZygiIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQ
YXJzZUZsYWcoIiAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNl
RmxhZygiICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxh
ZygiLS0xIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWco
IlxuIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIlx0
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIjIuM3h4
eCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIweDAu
MXBBQSIsICZ2YWx1ZSwgJmVycikpOworICAvLyBUT0RPKHJvZ2VlZmYpOiBiZWxvdyBhc3NlcnRp
b24gc2hvdWxkIGZhaWwKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDAuMSIsICZ2
YWx1ZSwgJmVycikpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVz
dCwgVGVzdFN0cmluZ1BhcnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJyOworICBzdGQ6OnN0cmlu
ZyB2YWx1ZTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRVEodmFsdWUsICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgIiAiKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNU
X0VRKHZhbHVlLCAiICAgIik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiXG4iLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAiXG4iKTsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6UGFyc2VGbGFnKCJcdCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUs
ICJcdCIpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoImFzZGZnIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgImFzZGZnIik7CisgIEVYUEVDVF9UUlVFKGFic2w6
OlBhcnNlRmxhZygiYXNkZiBnaGprIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1
ZSwgImFzZGYgZ2hqayIpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoImFcbmJcbmMi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAiYVxuYlxuYyIpOworICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoImFzZFwwZmdoIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9FUSh2YWx1ZSwgImFzZCIpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIlxc
XFwiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAiXFxcXCIpOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdFZlY3Rvck9mU3RyaW5n
UGFyc2luZykgeworICBzdGQ6OnN0cmluZyBlcnI7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiB2YWx1ZTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRVEodmFsdWUsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPnt9KTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVD
VF9FUSh2YWx1ZSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHsiMSJ9KSk7CisgIEVYUEVDVF9U
UlVFKGFic2w6OlBhcnNlRmxhZygiYSxiIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2
YWx1ZSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHsiYSIsICJiIn0pKTsKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6UGFyc2VGbGFnKCJhLGIsYywiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VR
KHZhbHVlLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oeyJhIiwgImIiLCAiYyIsICIifSkpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoImEsLCIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRVEodmFsdWUsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7ImEiLCAiIiwgIiJ9KSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiLCIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRVEodmFsdWUsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7IiIsICIifSkpOworICBF
WFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoImEsIGIsYyAiLCAmdmFsdWUsICZlcnIpKTsKKyAg
RVhQRUNUX0VRKHZhbHVlLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oeyJhIiwgIiBiIiwgImMg
In0pKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRlc3RC
b29sVW5wYXJzaW5nKSB7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh0cnVlKSwgInRy
dWUiKTsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKGZhbHNlKSwgImZhbHNlIik7Cit9
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0SW50MTZVbnBh
cnNpbmcpIHsKKyAgaW50MTZfdCB2YWx1ZTsKKworICB2YWx1ZSA9IDE7CisgIEVYUEVDVF9FUShh
YnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxIik7CisgIHZhbHVlID0gMDsKKyAgRVhQRUNUX0VR
KGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjAiKTsKKyAgdmFsdWUgPSAtMTsKKyAgRVhQRUNU
X0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIi0xIik7CisgIHZhbHVlID0gOTg3NjsKKyAg
RVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjk4NzYiKTsKKyAgdmFsdWUgPSAt
OTg3OworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiLTk4NyIpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdFVpbnQxNlVucGFy
c2luZykgeworICB1aW50MTZfdCB2YWx1ZTsKKworICB2YWx1ZSA9IDE7CisgIEVYUEVDVF9FUShh
YnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxIik7CisgIHZhbHVlID0gMDsKKyAgRVhQRUNUX0VR
KGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjAiKTsKKyAgdmFsdWUgPSAxOTg3NjsKKyAgRVhQ
RUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjE5ODc2Iik7Cit9CisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0SW50MzJVbnBhcnNpbmcpIHsKKyAg
aW50MzJfdCB2YWx1ZTsKKworICB2YWx1ZSA9IDE7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNl
RmxhZyh2YWx1ZSksICIxIik7CisgIHZhbHVlID0gMDsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFy
c2VGbGFnKHZhbHVlKSwgIjAiKTsKKyAgdmFsdWUgPSAtMTsKKyAgRVhQRUNUX0VRKGFic2w6OlVu
cGFyc2VGbGFnKHZhbHVlKSwgIi0xIik7CisgIHZhbHVlID0gMTIzNDU7CisgIEVYUEVDVF9FUShh
YnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxMjM0NSIpOworICB2YWx1ZSA9IC05ODc7CisgIEVY
UEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICItOTg3Iik7Cit9CisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0VWludDMyVW5wYXJzaW5nKSB7Cisg
IHVpbnQzMl90IHZhbHVlOworCisgIHZhbHVlID0gMTsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFy
c2VGbGFnKHZhbHVlKSwgIjEiKTsKKyAgdmFsdWUgPSAwOworICBFWFBFQ1RfRVEoYWJzbDo6VW5w
YXJzZUZsYWcodmFsdWUpLCAiMCIpOworICB2YWx1ZSA9IDEyMzQ1MDA7CisgIEVYUEVDVF9FUShh
YnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxMjM0NTAwIik7Cit9CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0SW50NjRVbnBhcnNpbmcpIHsKKyAgaW50NjRf
dCB2YWx1ZTsKKworICB2YWx1ZSA9IDE7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2
YWx1ZSksICIxIik7CisgIHZhbHVlID0gMDsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFn
KHZhbHVlKSwgIjAiKTsKKyAgdmFsdWUgPSAtMTsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VG
bGFnKHZhbHVlKSwgIi0xIik7CisgIHZhbHVlID0gMTIzNDU2Nzg5TDsKKyAgRVhQRUNUX0VRKGFi
c2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjEyMzQ1Njc4OSIpOworICB2YWx1ZSA9IC05ODc2NTQz
MjFMOworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiLTk4NzY1NDMyMSIp
OworICB2YWx1ZSA9IDB4N0ZGRkZGRkZGRkZGRkZGRjsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFy
c2VGbGFnKHZhbHVlKSwgIjkyMjMzNzIwMzY4NTQ3NzU4MDciKTsKKyAgdmFsdWUgPSAweEZGRkZG
RkZGRkZGRkZGRkY7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICItMSIp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdFVpbnQ2
NFVucGFyc2luZykgeworICB1aW50NjRfdCB2YWx1ZTsKKworICB2YWx1ZSA9IDE7CisgIEVYUEVD
VF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxIik7CisgIHZhbHVlID0gMDsKKyAgRVhQ
RUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjAiKTsKKyAgdmFsdWUgPSAxMjM0NTY3
ODlMOworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMTIzNDU2Nzg5Iik7
CisgIHZhbHVlID0gMHhGRkZGRkZGRkZGRkZGRkZGOworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJz
ZUZsYWcodmFsdWUpLCAiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKTsKK30KKworLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworVEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRlc3RGbG9hdFVucGFyc2luZykgeworICBmbG9h
dCB2YWx1ZTsKKworICB2YWx1ZSA9IDEuMWY7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxh
Zyh2YWx1ZSksICIxLjEiKTsKKyAgdmFsdWUgPSAwLjAxZjsKKyAgRVhQRUNUX0VRKGFic2w6OlVu
cGFyc2VGbGFnKHZhbHVlKSwgIjAuMDEiKTsKKyAgdmFsdWUgPSAxLjIzZS0yZjsKKyAgRVhQRUNU
X0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjAuMDEyMyIpOworICB2YWx1ZSA9IC0wLjcx
ZjsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIi0wLjcxIik7Cit9CisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0RG91YmxlVW5wYXJz
aW5nKSB7CisgIGRvdWJsZSB2YWx1ZTsKKworICB2YWx1ZSA9IDEuMTsKKyAgRVhQRUNUX0VRKGFi
c2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjEuMSIpOworICB2YWx1ZSA9IDAuMDE7CisgIEVYUEVD
VF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwLjAxIik7CisgIHZhbHVlID0gMS4yM2Ut
MjsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjAuMDEyMyIpOworICB2
YWx1ZSA9IC0wLjcxOworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiLTAu
NzEiKTsKKyAgdmFsdWUgPSAtMDsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVl
KSwgIjAiKTsKKyAgdmFsdWUgPSBzdGQ6Om5hbigiIik7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBh
cnNlRmxhZyh2YWx1ZSksICJuYW4iKTsKKyAgdmFsdWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmluZmluaXR5KCk7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSks
ICJpbmYiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRl
c3RTdHJpbmdVbnBhcnNpbmcpIHsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKCIiKSwg
IiIpOworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcoIiAiKSwgIiAiKTsKKyAgRVhQRUNU
X0VRKGFic2w6OlVucGFyc2VGbGFnKCJxd2VydHkiKSwgInF3ZXJ0eSIpOworICBFWFBFQ1RfRVEo
YWJzbDo6VW5wYXJzZUZsYWcoIkFTREZHSCIpLCAiQVNERkdIIik7CisgIEVYUEVDVF9FUShhYnNs
OjpVbnBhcnNlRmxhZygiXG5cdCAgIiksICJcblx0ICAiKTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFRlc3RSb3VuZHRyaXAoVCB2KSB7CisgIFQg
bmV3X3Y7CisgIHN0ZDo6c3RyaW5nIGVycjsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KGFic2w6OlVucGFyc2VGbGFnKHYpLCAmbmV3X3YsICZlcnIpKTsKKyAgRVhQRUNUX0VRKG5ld192
LCB2KTsKK30KKworVEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRlc3RGbG9hdFJvdW5kVHJpcCkgewor
ICBUZXN0Um91bmR0cmlwKDAuMWYpOworICBUZXN0Um91bmR0cmlwKDAuMTJmKTsKKyAgVGVzdFJv
dW5kdHJpcCgwLjEyM2YpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNGYpOworICBUZXN0Um91bmR0
cmlwKDAuMTIzNDVmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NmYpOworICBUZXN0Um91bmR0
cmlwKDAuMTIzNDU2N2YpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2NzhmKTsKKworICBUZXN0
Um91bmR0cmlwKDAuMWUyMGYpOworICBUZXN0Um91bmR0cmlwKDAuMTJlMjBmKTsKKyAgVGVzdFJv
dW5kdHJpcCgwLjEyM2UyMGYpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNGUyMGYpOworICBUZXN0
Um91bmR0cmlwKDAuMTIzNDVlMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NmUyMGYpOwor
ICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2N2UyMGYpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2
NzhlMjBmKTsKKworICBUZXN0Um91bmR0cmlwKDAuMWUtMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgw
LjEyZS0yMGYpOworICBUZXN0Um91bmR0cmlwKDAuMTIzZS0yMGYpOworICBUZXN0Um91bmR0cmlw
KDAuMTIzNGUtMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1ZS0yMGYpOworICBUZXN0Um91
bmR0cmlwKDAuMTIzNDU2ZS0yMGYpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2N2UtMjBmKTsK
KyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4ZS0yMGYpOworfQorCitURVNUKE1hcnNoYWxsaW5n
VGVzdCwgVGVzdERvdWJsZVJvdW5kVHJpcCkgeworICBUZXN0Um91bmR0cmlwKDAuMSk7CisgIFRl
c3RSb3VuZHRyaXAoMC4xMik7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjMpOworICBUZXN0Um91bmR0
cmlwKDAuMTIzNCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NSk7CisgIFRlc3RSb3VuZHRyaXAo
MC4xMjM0NTYpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nyk7CisgIFRlc3RSb3VuZHRyaXAo
MC4xMjM0NTY3OCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3ODkpOworICBUZXN0Um91bmR0
cmlwKDAuMTIzNDU2Nzg5MSk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3ODkxMik7CisgIFRl
c3RSb3VuZHRyaXAoMC4xMjM0NTY3ODkxMjMpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5
MTIzNCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3ODkxMjM0NSk7CisgIFRlc3RSb3VuZHRy
aXAoMC4xMjM0NTY3ODkxMjM0NTYpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2
Nyk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3ODkxMjM0NTY3OCk7CisKKyAgVGVzdFJvdW5k
dHJpcCgwLjFlNTApOworICBUZXN0Um91bmR0cmlwKDAuMTJlNTApOworICBUZXN0Um91bmR0cmlw
KDAuMTIzZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzRlNTApOworICBUZXN0Um91bmR0cmlw
KDAuMTIzNDVlNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2ZTUwKTsKKyAgVGVzdFJvdW5k
dHJpcCgwLjEyMzQ1NjdlNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2NzhlNTApOworICBU
ZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4
OTFlNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTJlNTApOworICBUZXN0Um91bmR0
cmlwKDAuMTIzNDU2Nzg5MTIzZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyMzRl
NTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDVlNTApOworICBUZXN0Um91bmR0
cmlwKDAuMTIzNDU2Nzg5MTIzNDU2ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEy
MzQ1NjdlNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2NzhlNTApOworCisg
IFRlc3RSb3VuZHRyaXAoMC4xZS01MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMmUtNTApOworICBU
ZXN0Um91bmR0cmlwKDAuMTIzZS01MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0ZS01MCk7Cisg
IFRlc3RSb3VuZHRyaXAoMC4xMjM0NWUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2ZS01
MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3ZS01MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4x
MjM0NTY3OGUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5ZS01MCk7CisgIFRlc3RS
b3VuZHRyaXAoMC4xMjM0NTY3ODkxZS01MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3ODkx
MmUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzZS01MCk7CisgIFRlc3RSb3Vu
ZHRyaXAoMC4xMjM0NTY3ODkxMjM0ZS01MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3ODkx
MjM0NWUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2ZS01MCk7CisgIFRl
c3RSb3VuZHRyaXAoMC4xMjM0NTY3ODkxMjM0NTY3ZS01MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4x
MjM0NTY3ODkxMjM0NTY3OGUtNTApOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2ZsYWdzL3BhcnNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvcGFyc2UuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTZjNGQ2OGZjMjcwZTBjMDliNjgyNDI0ZWEwY2M0ZGY2ODliNzIzZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL3BhcnNlLmNjCkBAIC0wLDAgKzEsNzUxIEBACisvLworLy8gQ29weXJp
Z2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3Bh
cnNlLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgPGZzdHJlYW0+CisjaW5j
bHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8dHVwbGU+CisKKyNpZmRlZiBfV0lOMzIKKyNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImFic2wvZmxhZ3MvZmxhZy5oIgor
I2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcHJvZ3JhbV9uYW1lLmgiCisjaW5jbHVkZSAi
YWJzbC9mbGFncy9pbnRlcm5hbC9yZWdpc3RyeS5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50
ZXJuYWwvdXNhZ2UuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3VzYWdlLmgiCisjaW5jbHVkZSAi
YWJzbC9mbGFncy91c2FnZV9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2Nh
dC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpcC5oIgorI2luY2x1ZGUgImFic2wvc3lu
Y2hyb25pemF0aW9uL211dGV4LmgiCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBhYnNs
IHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCitBQlNMX0NPTlNU
X0lOSVQgYWJzbDo6TXV0ZXggcHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQoYWJzbDo6a0NvbnN0SW5p
dCk7CisKK0FCU0xfQ09OU1RfSU5JVCBib29sIGZsYWdmaWxlX25lZWRzX3Byb2Nlc3NpbmcKKyAg
ICBBQlNMX0dVQVJERURfQlkocHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpID0gZmFsc2U7CitBQlNM
X0NPTlNUX0lOSVQgYm9vbCBmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcKKyAgICBBQlNMX0dVQVJE
RURfQlkocHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpID0gZmFsc2U7CitBQlNMX0NPTlNUX0lOSVQg
Ym9vbCB0cnlmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcKKyAgICBBQlNMX0dVQVJERURfQlkocHJv
Y2Vzc2luZ19jaGVja3NfZ3VhcmQpID0gZmFsc2U7CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8g
bmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCitBQlNMX0ZM
QUcoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LCBmbGFnZmlsZSwge30sCisgICAgICAgICAgImNv
bW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIHRvIGxvYWQgZmxhZ3MgZnJvbSIpCisgICAgLk9u
VXBkYXRlKFtdKCkgeworICAgICAgaWYgKGFic2w6OkdldEZsYWcoRkxBR1NfZmxhZ2ZpbGUpLmVt
cHR5KCkpIHJldHVybjsKKworICAgICAgYWJzbDo6TXV0ZXhMb2NrIGwoJmFic2w6OmZsYWdzX2lu
dGVybmFsOjpwcm9jZXNzaW5nX2NoZWNrc19ndWFyZCk7CisKKyAgICAgIC8vIFNldHRpbmcgdGhp
cyBmbGFnIHR3aWNlIGJlZm9yZSBpdCBpcyBoYW5kbGVkIG1vc3QgbGlrZWx5IGFuIGludGVybmFs
CisgICAgICAvLyBlcnJvciBhbmQgc2hvdWxkIGJlIHJldmlld2VkIGJ5IGRldmVsb3BlcnMuCisg
ICAgICBpZiAoYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6OmZsYWdmaWxlX25lZWRzX3Byb2Nlc3Npbmcp
IHsKKyAgICAgICAgQUJTTF9JTlRFUk5BTF9MT0coV0FSTklORywgImZsYWdmaWxlIHNldCB0d2lj
ZSBiZWZvcmUgaXQgaXMgaGFuZGxlZCIpOworICAgICAgfQorCisgICAgICBhYnNsOjpmbGFnc19p
bnRlcm5hbDo6ZmxhZ2ZpbGVfbmVlZHNfcHJvY2Vzc2luZyA9IHRydWU7CisgICAgfSk7CitBQlNM
X0ZMQUcoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LCBmcm9tZW52LCB7fSwKKyAgICAgICAgICAi
Y29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZmxhZ3MgdG8gc2V0IGZyb20gdGhlIGVudmlyb25tZW50
IgorICAgICAgICAgICIgW3VzZSAnZXhwb3J0IEZMQUdTX2ZsYWcxPXZhbHVlJ10iKQorICAgIC5P
blVwZGF0ZShbXSgpIHsKKyAgICAgIGlmIChhYnNsOjpHZXRGbGFnKEZMQUdTX2Zyb21lbnYpLmVt
cHR5KCkpIHJldHVybjsKKworICAgICAgYWJzbDo6TXV0ZXhMb2NrIGwoJmFic2w6OmZsYWdzX2lu
dGVybmFsOjpwcm9jZXNzaW5nX2NoZWNrc19ndWFyZCk7CisKKyAgICAgIC8vIFNldHRpbmcgdGhp
cyBmbGFnIHR3aWNlIGJlZm9yZSBpdCBpcyBoYW5kbGVkIG1vc3QgbGlrZWx5IGFuIGludGVybmFs
CisgICAgICAvLyBlcnJvciBhbmQgc2hvdWxkIGJlIHJldmlld2VkIGJ5IGRldmVsb3BlcnMuCisg
ICAgICBpZiAoYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6OmZyb21lbnZfbmVlZHNfcHJvY2Vzc2luZykg
eworICAgICAgICBBQlNMX0lOVEVSTkFMX0xPRyhXQVJOSU5HLCAiZnJvbWVudiBzZXQgdHdpY2Ug
YmVmb3JlIGl0IGlzIGhhbmRsZWQuIik7CisgICAgICB9CisKKyAgICAgIGFic2w6OmZsYWdzX2lu
dGVybmFsOjpmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcgPSB0cnVlOworICAgIH0pOworQUJTTF9G
TEFHKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiwgdHJ5ZnJvbWVudiwge30sCisgICAgICAgICAg
ImNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZsYWdzIHRvIHRyeSB0byBzZXQgZnJvbSB0aGUgZW52
aXJvbm1lbnQgaWYgIgorICAgICAgICAgICJwcmVzZW50IikKKyAgICAuT25VcGRhdGUoW10oKSB7
CisgICAgICBpZiAoYWJzbDo6R2V0RmxhZyhGTEFHU190cnlmcm9tZW52KS5lbXB0eSgpKSByZXR1
cm47CisKKyAgICAgIGFic2w6Ok11dGV4TG9jayBsKCZhYnNsOjpmbGFnc19pbnRlcm5hbDo6cHJv
Y2Vzc2luZ19jaGVja3NfZ3VhcmQpOworCisgICAgICAvLyBTZXR0aW5nIHRoaXMgZmxhZyB0d2lj
ZSBiZWZvcmUgaXQgaXMgaGFuZGxlZCBtb3N0IGxpa2VseSBhbiBpbnRlcm5hbAorICAgICAgLy8g
ZXJyb3IgYW5kIHNob3VsZCBiZSByZXZpZXdlZCBieSBkZXZlbG9wZXJzLgorICAgICAgaWYgKGFi
c2w6OmZsYWdzX2ludGVybmFsOjp0cnlmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcpIHsKKyAgICAg
ICAgQUJTTF9JTlRFUk5BTF9MT0coV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
InRyeWZyb21lbnYgc2V0IHR3aWNlIGJlZm9yZSBpdCBpcyBoYW5kbGVkLiIpOworICAgICAgfQor
CisgICAgICBhYnNsOjpmbGFnc19pbnRlcm5hbDo6dHJ5ZnJvbWVudl9uZWVkc19wcm9jZXNzaW5n
ID0gdHJ1ZTsKKyAgICB9KTsKKworQUJTTF9GTEFHKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiwg
dW5kZWZvaywge30sCisgICAgICAgICAgImNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZsYWcgbmFt
ZXMgdGhhdCBpdCBpcyBva2F5IHRvIHNwZWNpZnkgIgorICAgICAgICAgICJvbiB0aGUgY29tbWFu
ZCBsaW5lIGV2ZW4gaWYgdGhlIHByb2dyYW0gZG9lcyBub3QgZGVmaW5lIGEgZmxhZyAiCisgICAg
ICAgICAgIndpdGggdGhhdCBuYW1lIik7CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBm
bGFnc19pbnRlcm5hbCB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEFyZ3NMaXN0IHsKKyBwdWJs
aWM6CisgIEFyZ3NMaXN0KCkgOiBuZXh0X2FyZ18oMCkge30KKyAgQXJnc0xpc3QoaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkgOiBhcmdzXyhhcmd2LCBhcmd2ICsgYXJnYyksIG5leHRfYXJnXygwKSB7
fQorICBleHBsaWNpdCBBcmdzTGlzdChjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGFy
Z3MpCisgICAgICA6IGFyZ3NfKGFyZ3MpLCBuZXh0X2FyZ18oMCkge30KKworICAvLyBSZXR1cm5z
IHN1Y2Nlc3Mgc3RhdHVzOiB0cnVlIGlmIHBhcnNpbmcgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3
aXNlLgorICBib29sIFJlYWRGcm9tRmxhZ2ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZsYWdfZmls
ZV9uYW1lKTsKKworICBpbnQgU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGFyZ3NfLnNpemUoKSAtIG5l
eHRfYXJnXzsgfQorICBpbnQgRnJvbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG5leHRfYXJnXzsg
fQorICBhYnNsOjpzdHJpbmdfdmlldyBGcm9udCgpIGNvbnN0IHsgcmV0dXJuIGFyZ3NfW25leHRf
YXJnX107IH0KKyAgdm9pZCBQb3BGcm9udCgpIHsgbmV4dF9hcmdfKys7IH0KKworIHByaXZhdGU6
CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBhcmdzXzsKKyAgaW50IG5leHRfYXJnXzsKK307
CisKK2Jvb2wgQXJnc0xpc3Q6OlJlYWRGcm9tRmxhZ2ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZs
YWdfZmlsZV9uYW1lKSB7CisgIHN0ZDo6aWZzdHJlYW0gZmxhZ19maWxlKGZsYWdfZmlsZV9uYW1l
KTsKKworICBpZiAoIWZsYWdfZmlsZSkgeworICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2Fn
ZUVycm9yKAorICAgICAgICBhYnNsOjpTdHJDYXQoIkNhbid0IG9wZW4gZmxhZ2ZpbGUgIiwgZmxh
Z19maWxlX25hbWUpLCB0cnVlKTsKKworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIC8vIFRo
aXMgYXJndW1lbnQgcmVwcmVzZW50cyBmYWtlIGFyZ3ZbMF0sIHdoaWNoIHNob3VsZCBiZSBwcmVz
ZW50IGluIGFsbCBhcmcKKyAgLy8gbGlzdHMuCisgIGFyZ3NfLnB1c2hfYmFjaygiIik7CisKKyAg
c3RkOjpzdHJpbmcgbGluZTsKKyAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKworICB3aGlsZSAoc3Rk
OjpnZXRsaW5lKGZsYWdfZmlsZSwgbGluZSkpIHsKKyAgICBhYnNsOjpzdHJpbmdfdmlldyBzdHJp
cHBlZCA9IGFic2w6OlN0cmlwTGVhZGluZ0FzY2lpV2hpdGVzcGFjZShsaW5lKTsKKworICAgIGlm
IChzdHJpcHBlZC5lbXB0eSgpIHx8IHN0cmlwcGVkWzBdID09ICcjJykgeworICAgICAgLy8gQ29t
bWVudCBvciBlbXB0eSBsaW5lOyBqdXN0IGlnbm9yZS4KKyAgICAgIGNvbnRpbnVlOworICAgIH0K
KworICAgIGlmIChzdHJpcHBlZFswXSA9PSAnLScpIHsKKyAgICAgIGlmIChzdHJpcHBlZCA9PSAi
LS0iKSB7CisgICAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVycm9yKAorICAgICAg
ICAgICAgIkZsYWdmaWxlIGNhbid0IGNvbnRhaW4gcG9zaXRpb24gYXJndW1lbnRzIG9yIC0tIiwg
dHJ1ZSk7CisKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICBicmVhazsKKyAgICAg
IH0KKworICAgICAgYXJnc18ucHVzaF9iYWNrKHN0ZDo6c3RyaW5nKHN0cmlwcGVkKSk7CisgICAg
ICBjb250aW51ZTsKKyAgICB9CisKKyAgICBmbGFnc19pbnRlcm5hbDo6UmVwb3J0VXNhZ2VFcnJv
cigKKyAgICAgICAgYWJzbDo6U3RyQ2F0KCJVbmV4cGVjdGVkIGxpbmUgaW4gdGhlIGZsYWdmaWxl
ICIsIGZsYWdfZmlsZV9uYW1lLCAiOiAiLAorICAgICAgICAgICAgICAgICAgICAgbGluZSksCisg
ICAgICAgIHRydWUpOworCisgICAgc3VjY2VzcyA9IGZhbHNlOworICB9CisKKyAgcmV0dXJuIHN1
Y2Nlc3M7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFJlYWRzIHRoZSBlbnZpcm9ubWVudCB2
YXJpYWJsZSB3aXRoIG5hbWUgYG5hbWVgIGFuZCBzdG9yZXMgcmVzdWx0cyBpbgorLy8gYHZhbHVl
YC4gSWYgdmFyaWFibGUgaXMgbm90IHByZXNlbnQgaW4gZW52aXJvbm1lbnQgcmV0dXJucyBmYWxz
ZSwgb3RoZXJ3aXNlCisvLyByZXR1cm5zIHRydWUuCitib29sIEdldEVudlZhcihjb25zdCBjaGFy
KiB2YXJfbmFtZSwgc3RkOjpzdHJpbmcqIHZhcl92YWx1ZSkgeworI2lmZGVmIF9XSU4zMgorICBj
aGFyIGJ1ZlsxMDI0XTsKKyAgYXV0byBnZXRfcmVzID0gR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEo
dmFyX25hbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICBpZiAoZ2V0X3JlcyA+PSBzaXplb2YoYnVm
KSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGlmIChnZXRfcmVzID09IDApIHsKKyAg
ICByZXR1cm4gZmFsc2U7CisgIH0KKworICAqdmFyX3ZhbHVlID0gc3RkOjpzdHJpbmcoYnVmLCBn
ZXRfcmVzKTsKKyNlbHNlCisgIGNvbnN0IGNoYXIqIHZhbCA9IDo6Z2V0ZW52KHZhcl9uYW1lKTsK
KyAgaWYgKHZhbCA9PSBudWxscHRyKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgKnZh
cl92YWx1ZSA9IHZhbDsKKyNlbmRpZgorCisgIHJldHVybiB0cnVlOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisvLyBSZXR1cm5zOgorLy8gIEZsYWcgbmFtZSBvciBlbXB0eSBpZiBhcmc9IC0tCisv
LyAgRmxhZyB2YWx1ZSBhZnRlciA9IGluIC0tZmxhZz12YWx1ZSAoZW1wdHkgaWYgLS1mb28pCisv
LyAgIklzIGVtcHR5IHZhbHVlIiBzdGF0dXMuIFRydWUgaWYgYXJnPSAtLWZvbz0sIGZhbHNlIG90
aGVyd2lzZS4gVGhpcyBpcworLy8gIHJlcXVpcmVkIHRvIHNlcGFyYXRlIC0tZm9vIGZyb20gLS1m
b289LgorLy8gRm9yIGV4YW1wbGU6CisvLyAgICAgIGFyZyAgICAgICAgICAgcmV0dXJuIHZhbHVl
cworLy8gICAiLS1mb289YmFyIiAtPiB7ImZvbyIsICJiYXIiLCBmYWxzZX0uCisvLyAgICItLWZv
byIgICAgIC0+IHsiZm9vIiwgIiIsIGZhbHNlfS4KKy8vICAgIi0tZm9vPSIgICAgLT4geyJmb28i
LCAiIiwgdHJ1ZX0uCitzdGQ6OnR1cGxlPGFic2w6OnN0cmluZ192aWV3LCBhYnNsOjpzdHJpbmdf
dmlldywgYm9vbD4gU3BsaXROYW1lQW5kVmFsdWUoCisgICAgYWJzbDo6c3RyaW5nX3ZpZXcgYXJn
KSB7CisgIC8vIEFsbG93IC1mb28gYW5kIC0tZm9vCisgIGFic2w6OkNvbnN1bWVQcmVmaXgoJmFy
ZywgIi0iKTsKKworICBpZiAoYXJnLmVtcHR5KCkpIHsKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1
cGxlKCIiLCAiIiwgZmFsc2UpOworICB9CisKKyAgYXV0byBlcXVhbF9zaWduX3BvcyA9IGFyZy5m
aW5kKCI9Iik7CisKKyAgYWJzbDo6c3RyaW5nX3ZpZXcgZmxhZ19uYW1lID0gYXJnLnN1YnN0cigw
LCBlcXVhbF9zaWduX3Bvcyk7CisKKyAgYWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWU7CisgIGJvb2wg
aXNfZW1wdHlfdmFsdWUgPSBmYWxzZTsKKworICBpZiAoZXF1YWxfc2lnbl9wb3MgIT0gYWJzbDo6
c3RyaW5nX3ZpZXc6Om5wb3MpIHsKKyAgICB2YWx1ZSA9IGFyZy5zdWJzdHIoZXF1YWxfc2lnbl9w
b3MgKyAxKTsKKyAgICBpc19lbXB0eV92YWx1ZSA9IHZhbHVlLmVtcHR5KCk7CisgIH0KKworICBy
ZXR1cm4gc3RkOjptYWtlX3R1cGxlKGZsYWdfbmFtZSwgdmFsdWUsIGlzX2VtcHR5X3ZhbHVlKTsK
K30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUmV0dXJuczoKKy8vICBmb3VuZCBmbGFnIG9yIG51
bGxwdHIKKy8vICBpcyBuZWdhdGl2ZSBpbiBjYXNlIG9mIC0tbm9mb28KK3N0ZDo6dHVwbGU8Q29t
bWFuZExpbmVGbGFnKiwgYm9vbD4gTG9jYXRlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyBmbGFnX25h
bWUpIHsKKyAgQ29tbWFuZExpbmVGbGFnKiBmbGFnID0gZmxhZ3NfaW50ZXJuYWw6OkZpbmRDb21t
YW5kTGluZUZsYWcoZmxhZ19uYW1lKTsKKyAgYm9vbCBpc19uZWdhdGl2ZSA9IGZhbHNlOworCisg
IGlmICghZmxhZyAmJiBhYnNsOjpDb25zdW1lUHJlZml4KCZmbGFnX25hbWUsICJubyIpKSB7Cisg
ICAgZmxhZyA9IGZsYWdzX2ludGVybmFsOjpGaW5kQ29tbWFuZExpbmVGbGFnKGZsYWdfbmFtZSk7
CisgICAgaXNfbmVnYXRpdmUgPSB0cnVlOworICB9CisKKyAgcmV0dXJuIHN0ZDo6bWFrZV90dXBs
ZShmbGFnLCBpc19uZWdhdGl2ZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFZlcmlmeSB0
aGF0IGRlZmF1bHQgdmFsdWVzIG9mIHR5cGVkIGZsYWdzIG11c3QgYmUgY29udmVydGlibGUgdG8g
c3RyaW5nIGFuZAorLy8gYmFjay4KK3ZvaWQgQ2hlY2tEZWZhdWx0VmFsdWVzUGFyc2luZ1JvdW5k
dHJpcCgpIHsKKyNpZm5kZWYgTkRFQlVHCisgIGZsYWdzX2ludGVybmFsOjpGb3JFYWNoRmxhZyhb
Jl0oQ29tbWFuZExpbmVGbGFnKiBmbGFnKSB7CisgICAgaWYgKGZsYWctPklzUmV0aXJlZCgpKSBy
ZXR1cm47CisKKyNkZWZpbmUgSUdOT1JFX1RZUEUoVCkgXAorICBpZiAoZmxhZy0+SXNPZlR5cGU8
VD4oKSkgcmV0dXJuOworCisgICAgQUJTTF9GTEFHU19JTlRFUk5BTF9GT1JfRUFDSF9MT0NLX0ZS
RUUoSUdOT1JFX1RZUEUpCisgICAgSUdOT1JFX1RZUEUoc3RkOjpzdHJpbmcpCisgICAgSUdOT1JF
X1RZUEUoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KQorI3VuZGVmIElHTk9SRV9UWVBFCisKKyAg
ICBmbGFnLT5DaGVja0RlZmF1bHRWYWx1ZVBhcnNpbmdSb3VuZHRyaXAoKTsKKyAgfSk7CisjZW5k
aWYKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUmV0dXJucyBzdWNjZXNzIHN0YXR1cywgd2hp
Y2ggaXMgdHJ1ZSBpZiB3ZSBzdWNjZXNzZnVsbHkgcmVhZCBhbGwgZmxhZyBmaWxlcywKKy8vIGlu
IHdoaWNoIGNhc2UgbmV3IEFyZ0xpc3RzIGFyZSBhcHBlbmRlZCB0byB0aGUgaW5wdXRfYXJncyBp
biBhIHJldmVyc2Ugb3JkZXIKKy8vIG9mIGZpbGUgbmFtZXMgaW4gdGhlIGlucHV0IGZsYWdmaWxl
cyBsaXN0LiBUaGlzIG9yZGVyIGVuc3VyZXMgdGhhdCBmbGFncyBmcm9tCisvLyB0aGUgZmlyc3Qg
ZmxhZ2ZpbGUgaW4gdGhlIGlucHV0IGxpc3QgYXJlIHByb2Nlc3NlZCBiZWZvcmUgdGhlIHNlY29u
ZCBmbGFnZmlsZQorLy8gZXRjLgorYm9vbCBSZWFkRmxhZ2ZpbGVzKGNvbnN0IHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiYgZmxhZ2ZpbGVzLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9y
PEFyZ3NMaXN0PiogaW5wdXRfYXJncykgeworICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICBmb3Ig
KGF1dG8gaXQgPSBmbGFnZmlsZXMucmJlZ2luKCk7IGl0ICE9IGZsYWdmaWxlcy5yZW5kKCk7ICsr
aXQpIHsKKyAgICBBcmdzTGlzdCBhbDsKKworICAgIGlmIChhbC5SZWFkRnJvbUZsYWdmaWxlKCpp
dCkpIHsKKyAgICAgIGlucHV0X2FyZ3MtPnB1c2hfYmFjayhhbCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICB9CisgIH0KKworICByZXR1cm4gc3VjY2VzczsKK30K
KworLy8gUmV0dXJucyBzdWNjZXNzIHN0YXR1cywgd2hpY2ggaXMgdHJ1ZSBpZiB3ZXJlIGFibGUg
dG8gbG9jYXRlIGFsbCBlbnZpcm9ubWVudAorLy8gdmFyaWFibGVzIGNvcnJlY3RseSBvciBpZiBm
YWlsX29uX2Fic2VudF9pbl9lbnYgaXMgZmFsc2UuIFRoZSBlbnZpcm9ubWVudAorLy8gdmFyaWFi
bGUgbmFtZXMgYXJlIGV4cGVjdGVkIHRvIGJlIG9mIHRoZSBmb3JtIGBGTEFHU188ZmxhZ19uYW1l
PmAsIHdoZXJlCisvLyBgZmxhZ19uYW1lYCBpcyBhIHN0cmluZyBmcm9tIHRoZSBpbnB1dCBmbGFn
X25hbWVzIGxpc3QuIElmIHN1Y2Nlc3NmdWwgd2UKKy8vIGFwcGVuZCBhIHNpbmdsZSBBcmdMaXN0
IGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0X2FyZ3MuCitib29sIFJlYWRGbGFnc0Zyb21FbnYoY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBmbGFnX25hbWVzLAorICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPEFyZ3NMaXN0PiogaW5wdXRfYXJncywKKyAgICAgICAgICAgICAg
ICAgICAgICBib29sIGZhaWxfb25fYWJzZW50X2luX2VudikgeworICBib29sIHN1Y2Nlc3MgPSB0
cnVlOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYXJnczsKKworICAvLyBUaGlzIGFyZ3Vt
ZW50IHJlcHJlc2VudHMgZmFrZSBhcmd2WzBdLCB3aGljaCBzaG91bGQgYmUgcHJlc2VudCBpbiBh
bGwgYXJnCisgIC8vIGxpc3RzLgorICBhcmdzLnB1c2hfYmFjaygiIik7CisKKyAgZm9yIChjb25z
dCBhdXRvJiBmbGFnX25hbWUgOiBmbGFnX25hbWVzKSB7CisgICAgLy8gQXZvaWQgaW5maW5pdGUg
cmVjdXJzaW9uLgorICAgIGlmIChmbGFnX25hbWUgPT0gImZyb21lbnYiIHx8IGZsYWdfbmFtZSA9
PSAidHJ5ZnJvbWVudiIpIHsKKyAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVycm9y
KAorICAgICAgICAgIGFic2w6OlN0ckNhdCgiSW5maW5pdGUgcmVjdXJzaW9uIG9uIGZsYWcgIiwg
ZmxhZ19uYW1lKSwgdHJ1ZSk7CisKKyAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgIGNvbnRp
bnVlOworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGVudm5hbWUgPSBhYnNsOjpTdHJD
YXQoIkZMQUdTXyIsIGZsYWdfbmFtZSk7CisgICAgc3RkOjpzdHJpbmcgZW52dmFsOworICAgIGlm
ICghR2V0RW52VmFyKGVudm5hbWUuY19zdHIoKSwgJmVudnZhbCkpIHsKKyAgICAgIGlmIChmYWls
X29uX2Fic2VudF9pbl9lbnYpIHsKKyAgICAgICAgZmxhZ3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdl
RXJyb3IoCisgICAgICAgICAgICBhYnNsOjpTdHJDYXQoZW52bmFtZSwgIiBub3QgZm91bmQgaW4g
ZW52aXJvbm1lbnQiKSwgdHJ1ZSk7CisKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAg
fQorCisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBhcmdzLnB1c2hfYmFjayhhYnNsOjpT
dHJDYXQoIi0tIiwgZmxhZ19uYW1lLCAiPSIsIGVudnZhbCkpOworICB9CisKKyAgaWYgKHN1Y2Nl
c3MpIHsKKyAgICBpbnB1dF9hcmdzLT5lbXBsYWNlX2JhY2soYXJncyk7CisgIH0KKworICByZXR1
cm4gc3VjY2VzczsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUmV0dXJucyBzdWNjZXNzIHN0
YXR1cywgd2hpY2ggaXMgdHJ1ZSBpZiB3ZXJlIGFibGUgdG8gaGFuZGxlIGFsbCBnZW5lcmF0b3IK
Ky8vIGZsYWdzIChmbGFnZmlsZSwgZnJvbWVudiwgdHJ5ZnJvbWVtdikgc3VjY2Vzc2Z1bGx5Lgor
Ym9vbCBIYW5kbGVHZW5lcmF0b3JGbGFncyhzdGQ6OnZlY3RvcjxBcmdzTGlzdD4qIGlucHV0X2Fy
Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiog
ZmxhZ2ZpbGVfdmFsdWUpIHsKKyAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKworICBhYnNsOjpNdXRl
eExvY2sgbCgmZmxhZ3NfaW50ZXJuYWw6OnByb2Nlc3NpbmdfY2hlY2tzX2d1YXJkKTsKKworICAv
LyBmbGFnZmlsZSBjb3VsZCBoYXZlIGJlZW4gc2V0IGVpdGhlciBvbiBhIGNvbW1hbmQgbGluZSBv
cgorICAvLyBwcm9ncmFtbWF0aWNhbGx5IGJlZm9yZSBpbnZva2luZyBQYXJzZUNvbW1hbmRMaW5l
LiBOb3RlIHRoYXQgd2UgZG8gbm90CisgIC8vIGFjdHVhbGx5IHByb2Nlc3MgYXJndW1lbnRzIHNw
ZWNpZmllZCBpbiB0aGUgZmxhZ2ZpbGUsIGJ1dCBpbnN0ZWFkCisgIC8vIGNyZWF0ZSBhIHNlY29u
ZGFyeSBhcmd1bWVudHMgbGlzdCB0byBiZSBwcm9jZXNzZWQgYWxvbmcgd2l0aCB0aGUgcmVzdAor
ICAvLyBvZiB0aGUgY29tYW1uZCBsaW5lIGFyZ3VtZW50cy4gU2luY2Ugd2UgYWx3YXlzIHRoZSBw
cm9jZXNzIG1vc3QgcmVjZW50bHkKKyAgLy8gY3JlYXRlZCBsaXN0IG9mIGFyZ3VtZW50cyBmaXJz
dCwgdGhpcyB3aWxsIHJlc3VsdCBpbiBmbGFnZmlsZSBhcmd1bWVudAorICAvLyBiZWluZyBwcm9j
ZXNzZWQgYmVmb3JlIGFueSBvdGhlciBhcmd1bWVudCBpbiB0aGUgY29tbWFuZCBsaW5lLiBJZgor
ICAvLyBGTEFHU19mbGFnZmlsZSBjb250YWlucyBtb3JlIHRoYW4gb25lIGZpbGUgbmFtZSB3ZSBj
cmVhdGUgbXVsdGlwbGUgbmV3CisgIC8vIGxldmVscyBvZiBhcmd1bWVudHMgaW4gYSByZXZlcnNl
IG9yZGVyIG9mIGZpbGUgbmFtZXMuIFRodXMgd2UgYWx3YXlzCisgIC8vIHByb2Nlc3MgYXJndW1l
bnRzIGZyb20gZmlyc3QgZmlsZSBiZWZvcmUgYXJndW1lbnRzIGNvbnRhaW5pbmcgaW4gYQorICAv
LyBzZWNvbmQgZmlsZSwgZXRjLiBJZiBmbGFnZmlsZSBjb250YWlucyBhbm90aGVyCisgIC8vIC0t
ZmxhZ2ZpbGUgaW5zaWRlIG9mIGl0LCBpdCB3aWxsIHByb2R1Y2UgbmV3IGxldmVsIG9mIGFyZ3Vt
ZW50cyBhbmQKKyAgLy8gcHJvY2Vzc2VkIGJlZm9yZSB0aGUgcmVzdCBvZiB0aGUgZmxhZ2ZpbGUu
IFdlIGFyZSBhbHNvIGNvbGxlY3RpbmcgYWxsCisgIC8vIGZsYWdmaWxlcyBzZXQgb24gb3JpZ2lu
YWwgY29tbWFuZCBsaW5lLiBVbmxpa2UgdGhlIHJlc3Qgb2YgdGhlIGZsYWdzLAorICAvLyB0aGlz
IGZsYWcgY2FuIGJlIHNldCBtdWx0aXBsZSB0aW1lcyBhbmQgaXMgZXhwZWN0ZWQgdG8gYmUgaGFu
ZGxlZAorICAvLyBtdWx0aXBsZSB0aW1lcy4gV2UgYXJlIGNvbGxlY3RpbmcgdGhlbSBhbGwgaW50
byBhIHNpbmdsZSBsaXN0IGFuZCBzZXQKKyAgLy8gdGhlIHZhbHVlIG9mIEZMQUdTX2ZsYWdmaWxl
IHRvIHRoYXQgdmFsdWUgYXQgdGhlIGVuZCBvZiB0aGUgcGFyc2luZy4KKyAgaWYgKGZsYWdzX2lu
dGVybmFsOjpmbGFnZmlsZV9uZWVkc19wcm9jZXNzaW5nKSB7CisgICAgYXV0byBmbGFnZmlsZXMg
PSBhYnNsOjpHZXRGbGFnKEZMQUdTX2ZsYWdmaWxlKTsKKworICAgIGlmIChpbnB1dF9hcmdzLT5z
aXplKCkgPT0gMSkgeworICAgICAgZmxhZ2ZpbGVfdmFsdWUtPmluc2VydChmbGFnZmlsZV92YWx1
ZS0+ZW5kKCksIGZsYWdmaWxlcy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFnZmlsZXMuZW5kKCkpOworICAgIH0KKworICAgIHN1Y2Nlc3MgJj0gUmVhZEZsYWdmaWxl
cyhmbGFnZmlsZXMsIGlucHV0X2FyZ3MpOworCisgICAgZmxhZ3NfaW50ZXJuYWw6OmZsYWdmaWxl
X25lZWRzX3Byb2Nlc3NpbmcgPSBmYWxzZTsKKyAgfQorCisgIC8vIFNpbWlsYXIgdG8gZmxhZ2Zp
bGUgZnJvbWVudi90cnlmcm9tZW12IGNhbiBiZSBzZXQgYm90aAorICAvLyBwcm9ncmFtbWF0aWNh
bGx5IGFuZCBhdCBydW50aW1lIG9uIGEgY29tbWFuZCBsaW5lLiBVbmxpa2UgZmxhZ2ZpbGUgdGhl
c2UKKyAgLy8gY2FuJ3QgYmUgcmVjdXJzaXZlLgorICBpZiAoZmxhZ3NfaW50ZXJuYWw6OmZyb21l
bnZfbmVlZHNfcHJvY2Vzc2luZykgeworICAgIGF1dG8gZmxhZ3NfbGlzdCA9IGFic2w6OkdldEZs
YWcoRkxBR1NfZnJvbWVudik7CisKKyAgICBzdWNjZXNzICY9IFJlYWRGbGFnc0Zyb21FbnYoZmxh
Z3NfbGlzdCwgaW5wdXRfYXJncywgdHJ1ZSk7CisKKyAgICBmbGFnc19pbnRlcm5hbDo6ZnJvbWVu
dl9uZWVkc19wcm9jZXNzaW5nID0gZmFsc2U7CisgIH0KKworICBpZiAoZmxhZ3NfaW50ZXJuYWw6
OnRyeWZyb21lbnZfbmVlZHNfcHJvY2Vzc2luZykgeworICAgIGF1dG8gZmxhZ3NfbGlzdCA9IGFi
c2w6OkdldEZsYWcoRkxBR1NfdHJ5ZnJvbWVudik7CisKKyAgICBzdWNjZXNzICY9IFJlYWRGbGFn
c0Zyb21FbnYoZmxhZ3NfbGlzdCwgaW5wdXRfYXJncywgZmFsc2UpOworCisgICAgZmxhZ3NfaW50
ZXJuYWw6OnRyeWZyb21lbnZfbmVlZHNfcHJvY2Vzc2luZyA9IGZhbHNlOworICB9CisKKyAgcmV0
dXJuIHN1Y2Nlc3M7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgUmVzZXRHZW5lcmF0b3JG
bGFncyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGZsYWdmaWxlX3ZhbHVlKSB7Cisg
IC8vIFNldHRpbmcgZmxhZ2ZpbGUgdG8gdGhlIHZhbHVlIHdoaWNoIGNvbGxhdGVzIGFsbCB0aGUg
dmFsdWVzIHNldCBvbiBhCisgIC8vIGNvbW1hbmQgbGluZSBhbmQgcHJvZ3JhbW1hdGljYWxseS4g
U28gaWYgY29tbWFuZCBsaW5lIGxvb2tlZCBsaWtlCisgIC8vIC0tZmxhZ2ZpbGU9ZjEgLS1mbGFn
ZmlsZT1mMiB0aGUgZmluYWwgdmFsdWUgb2YgdGhlIEZMQUdTX2ZsYWdmaWxlIGZsYWcgaXMKKyAg
Ly8gZ29pbmcgdG8gYmUgeyJmMSIsICJmMiJ9CisgIGlmICghZmxhZ2ZpbGVfdmFsdWUuZW1wdHko
KSkgeworICAgIGFic2w6OlNldEZsYWcoJkZMQUdTX2ZsYWdmaWxlLCBmbGFnZmlsZV92YWx1ZSk7
CisgICAgYWJzbDo6TXV0ZXhMb2NrIGwoJmZsYWdzX2ludGVybmFsOjpwcm9jZXNzaW5nX2NoZWNr
c19ndWFyZCk7CisgICAgZmxhZ3NfaW50ZXJuYWw6OmZsYWdmaWxlX25lZWRzX3Byb2Nlc3Npbmcg
PSBmYWxzZTsKKyAgfQorCisgIC8vIGZyb21lbnYvdHJ5ZnJvbWVudiBhcmUgc2V0IHRvIDx1bmRl
ZmluZWQ+IHZhbHVlLgorICBpZiAoIWFic2w6OkdldEZsYWcoRkxBR1NfZnJvbWVudikuZW1wdHko
KSkgeworICAgIGFic2w6OlNldEZsYWcoJkZMQUdTX2Zyb21lbnYsIHt9KTsKKyAgfQorICBpZiAo
IWFic2w6OkdldEZsYWcoRkxBR1NfdHJ5ZnJvbWVudikuZW1wdHkoKSkgeworICAgIGFic2w6OlNl
dEZsYWcoJkZMQUdTX3RyeWZyb21lbnYsIHt9KTsKKyAgfQorCisgIGFic2w6Ok11dGV4TG9jayBs
KCZmbGFnc19pbnRlcm5hbDo6cHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpOworICBmbGFnc19pbnRl
cm5hbDo6ZnJvbWVudl9uZWVkc19wcm9jZXNzaW5nID0gZmFsc2U7CisgIGZsYWdzX2ludGVybmFs
Ojp0cnlmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcgPSBmYWxzZTsKK30KKworLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworLy8gUmV0dXJuczoKKy8vICBzdWNjZXNzIHN0YXR1cworLy8gIGRlZHVjZWQgdmFsdWUK
Ky8vIFdlIGFyZSBhbHNvIG11dGF0aW5nIGN1cnJfbGlzdCBpbiBjYXNlIGlmIHdlIG5lZWQgdG8g
Z2V0IGEgaG9sZCBvZiBuZXh0CisvLyBhcmd1bWVudCBpbiB0aGUgaW5wdXQuCitzdGQ6OnR1cGxl
PGJvb2wsIGFic2w6OnN0cmluZ192aWV3PiBEZWR1Y2VGbGFnVmFsdWUoY29uc3QgQ29tbWFuZExp
bmVGbGFnJiBmbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfbmVnYXRpdmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19lbXB0
eV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBcmdzTGlzdCogY3Vycl9saXN0KSB7CisgIC8vIFZhbHVlIGlzIGVpdGhlciBhbiBhcmd1
bWVudCBzdWZmaXggYWZ0ZXIgYD1gIGluICItLWZvbz08dmFsdWU+IgorICAvLyBvciBzZXBhcmF0
ZSBhcmd1bWVudCBpbiBjYXNlIG9mICItLWZvbyIgIjx2YWx1ZT4iLgorCisgIC8vIGJvb2xlYW4g
ZmxhZ3MgaGF2ZSB0aGVzZSBmb3JtczoKKyAgLy8gICAtLWZvbworICAvLyAgIC0tbm9mb28KKyAg
Ly8gICAtLWZvbz10cnVlCisgIC8vICAgLS1mb289ZmFsc2UKKyAgLy8gICAtLW5vZm9vPTx2YWx1
ZT4gaXMgbm90IHN1cHBvcnRlZAorICAvLyAgIC0tZm9vIDx2YWx1ZT4gaXMgbm90IHN1cHBvcnRl
ZAorCisgIC8vIG5vbiBib29sZWFuIGZsYWdzIGhhdmUgdGhlc2UgZm9ybXM6CisgIC8vIC0tZm9v
PTx2YWx1ZT4KKyAgLy8gLS1mb28gPHZhbHVlPgorICAvLyAtLW5vZm9vIGlzIG5vdCBzdXBwb3J0
ZWQKKworICBpZiAoZmxhZy5Jc09mVHlwZTxib29sPigpKSB7CisgICAgaWYgKHZhbHVlLmVtcHR5
KCkpIHsKKyAgICAgIGlmIChpc19lbXB0eV92YWx1ZSkgeworICAgICAgICAvLyAiLS1ib29sX2Zs
YWc9IiBjYXNlCisgICAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVycm9yKAorICAg
ICAgICAgICAgYWJzbDo6U3RyQ2F0KAorICAgICAgICAgICAgICAgICJNaXNzaW5nIHRoZSB2YWx1
ZSBhZnRlciBhc3NpZ25tZW50IGZvciB0aGUgYm9vbGVhbiBmbGFnICciLAorICAgICAgICAgICAg
ICAgIGZsYWcuTmFtZSgpLCAiJyIpLAorICAgICAgICAgICAgdHJ1ZSk7CisgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdHVwbGUoZmFsc2UsICIiKTsKKyAgICAgIH0KKworICAgICAgLy8gIi0tYm9v
bF9mbGFnIiBjYXNlCisgICAgICB2YWx1ZSA9IGlzX25lZ2F0aXZlID8gIjAiIDogIjEiOworICAg
IH0gZWxzZSBpZiAoaXNfbmVnYXRpdmUpIHsKKyAgICAgIC8vICItLW5vYm9vbF9mbGFnPVkiIGNh
c2UKKyAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVycm9yKAorICAgICAgICAgIGFi
c2w6OlN0ckNhdCgiTmVnYXRpdmUgZm9ybSB3aXRoIGFzc2lnbm1lbnQgaXMgbm90IHZhbGlkIGZv
ciB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAiYm9vbGVhbiBmbGFnICciLAorICAgICAg
ICAgICAgICAgICAgICAgICBmbGFnLk5hbWUoKSwgIiciKSwKKyAgICAgICAgICB0cnVlKTsKKyAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoZmFsc2UsICIiKTsKKyAgICB9CisgIH0gZWxzZSBp
ZiAoaXNfbmVnYXRpdmUpIHsKKyAgICAvLyAiLS1ub2ludF9mbGFnPTEiIGNhc2UKKyAgICBmbGFn
c19pbnRlcm5hbDo6UmVwb3J0VXNhZ2VFcnJvcigKKyAgICAgICAgYWJzbDo6U3RyQ2F0KCJOZWdh
dGl2ZSBmb3JtIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGZsYWcgJyIsIGZsYWcuTmFtZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgIiciKSwKKyAgICAgICAgdHJ1ZSk7CisgICAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZShmYWxzZSwgIiIpOworICB9IGVsc2UgaWYgKHZhbHVlLmVtcHR5KCkgJiYgKCFp
c19lbXB0eV92YWx1ZSkpIHsKKyAgICBpZiAoY3Vycl9saXN0LT5TaXplKCkgPT0gMSkgeworICAg
ICAgLy8gIi0taW50X2ZsYWciIGNhc2UKKyAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2Fn
ZUVycm9yKAorICAgICAgICAgIGFic2w6OlN0ckNhdCgiTWlzc2luZyB0aGUgdmFsdWUgZm9yIHRo
ZSBmbGFnICciLCBmbGFnLk5hbWUoKSwgIiciKSwKKyAgICAgICAgICB0cnVlKTsKKyAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdHVwbGUoZmFsc2UsICIiKTsKKyAgICB9CisKKyAgICAvLyAiLS1pbnRf
ZmxhZyIgIjEwIiBjYXNlCisgICAgY3Vycl9saXN0LT5Qb3BGcm9udCgpOworICAgIHZhbHVlID0g
Y3Vycl9saXN0LT5Gcm9udCgpOworCisgICAgLy8gSGV1cmlzdGljIHRvIGRldGVjdCB0aGUgY2Fz
ZSB3aGVyZSBzb21lb25lIHRyZWF0cyBhIHN0ZDo6c3RyaW5nIGFyZworICAgIC8vIGxpa2UgYSBi
b29sIG9yIGp1c3QgZm9yZ2V0cyB0byBwYXNzIGEgdmFsdWU6CisgICAgLy8gLS1teV9zdHJpbmdf
dmFyIC0tZm9vPWJhcgorICAgIC8vIFdlIGxvb2sgZm9yIGEgZmxhZyBvZiBzdGQ6OnN0cmluZyB0
eXBlLCB3aG9zZSB2YWx1ZSBiZWdpbnMgd2l0aCBhCisgICAgLy8gZGFzaCBhbmQgY29ycmVzcG9u
ZHMgdG8ga25vd24gZmxhZyBvciBzdGFuZGFsb25lIC0tLgorICAgIGlmICh2YWx1ZVswXSA9PSAn
LScgJiYgZmxhZy5Jc09mVHlwZTxzdGQ6OnN0cmluZz4oKSkgeworICAgICAgYXV0byBtYXliZV9m
bGFnX25hbWUgPSBzdGQ6OmdldDwwPihTcGxpdE5hbWVBbmRWYWx1ZSh2YWx1ZS5zdWJzdHIoMSkp
KTsKKworICAgICAgaWYgKG1heWJlX2ZsYWdfbmFtZS5lbXB0eSgpIHx8CisgICAgICAgICAgc3Rk
OjpnZXQ8MD4oTG9jYXRlRmxhZyhtYXliZV9mbGFnX25hbWUpKSAhPSBudWxscHRyKSB7CisgICAg
ICAgIC8vICItLXN0cmluZ19mbGFnIiAiLS1rbm93bl9mbGFnIiBjYXNlCisgICAgICAgIEFCU0xf
SU5URVJOQUxfTE9HKAorICAgICAgICAgICAgV0FSTklORywKKyAgICAgICAgICAgIGFic2w6OlN0
ckNhdCgiRGlkIHlvdSByZWFsbHkgbWVhbiB0byBzZXQgZmxhZyAnIiwgZmxhZy5OYW1lKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIicgdG8gdGhlIHZhbHVlICciLCB2YWx1ZSwgIic/Iikp
OworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUodHJ1ZSwg
dmFsdWUpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIENhbklnbm9yZVVuZGVmaW5lZEZs
YWcoYWJzbDo6c3RyaW5nX3ZpZXcgZmxhZ19uYW1lKSB7CisgIGF1dG8gdW5kZWZvayA9IGFic2w6
OkdldEZsYWcoRkxBR1NfdW5kZWZvayk7CisgIGlmIChzdGQ6OmZpbmQodW5kZWZvay5iZWdpbigp
LCB1bmRlZm9rLmVuZCgpLCBmbGFnX25hbWUpICE9IHVuZGVmb2suZW5kKCkpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKKyAgfQorCisgIGlmIChhYnNsOjpDb25zdW1lUHJlZml4KCZmbGFnX25hbWUsICJu
byIpICYmCisgICAgICBzdGQ6OmZpbmQodW5kZWZvay5iZWdpbigpLCB1bmRlZm9rLmVuZCgpLCBm
bGFnX25hbWUpICE9IHVuZGVmb2suZW5kKCkpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisg
IHJldHVybiBmYWxzZTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K3N0ZDo6dmVjdG9yPGNoYXIqPiBQYXJzZUNvbW1hbmRMaW5lSW1wbChpbnQgYXJnYywgY2hhciog
YXJndltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3ZMaXN0
QWN0aW9uIGFyZ19saXN0X2FjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVc2FnZUZsYWdzQWN0aW9uIHVzYWdlX2ZsYWdfYWN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE9uVW5kZWZpbmVkRmxhZyBvbl91bmRlZl9mbGFnKSB7Cisg
IEFCU0xfSU5URVJOQUxfQ0hFQ0soYXJnYyA+IDAsICJNaXNzaW5nIGFyZ3ZbMF0iKTsKKworICAv
LyBUaGlzIHJvdXRpbmUgZG9lcyBub3QgcmV0dXJuIGFueXRoaW5nIHNpbmNlIHdlIGFib3J0IG9u
IGZhaWx1cmUuCisgIENoZWNrRGVmYXVsdFZhbHVlc1BhcnNpbmdSb3VuZHRyaXAoKTsKKworICBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZmxhZ2ZpbGVfdmFsdWU7CisKKyAgc3RkOjp2ZWN0b3I8
QXJnc0xpc3Q+IGlucHV0X2FyZ3M7CisgIGlucHV0X2FyZ3MucHVzaF9iYWNrKEFyZ3NMaXN0KGFy
Z2MsIGFyZ3YpKTsKKworICBzdGQ6OnZlY3RvcjxjaGFyKj4gb3V0cHV0X2FyZ3M7CisgIHN0ZDo6
dmVjdG9yPGNoYXIqPiBwb3NpdGlvbmFsX2FyZ3M7CisgIG91dHB1dF9hcmdzLnJlc2VydmUoYXJn
Yyk7CisKKyAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiB1bmRlZmluZWQgZmxhZ3MuIFRoZSBlbGVt
ZW50IG9mIHRoZSBsaXN0IGlzIHRoZSBwYWlyCisgIC8vIGNvbnNpc3Rpbmcgb2YgYm9vbGVhbiBp
bmRpY2F0aW5nIGlmIGZsYWcgY2FtZSBmcm9tIGNvbW1hbmQgbGluZSAodnMgZnJvbQorICAvLyBz
b21lIGZsYWcgZmlsZSB3ZSd2ZSByZWFkKSBhbmQgZmxhZyBuYW1lLgorICAvLyBUT0RPKHJvZ2Vl
ZmYpOiBFbGltaW5hdGUgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHBhaXIgYWZ0ZXIgY2xlYW51
cC4KKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGJvb2wsIHN0ZDo6c3RyaW5nPj4gdW5kZWZpbmVk
X2ZsYWdfbmFtZXM7CisKKyAgLy8gU2V0IHByb2dyYW0gaW52b2NhdGlvbiBuYW1lIGlmIGl0IGlz
IG5vdCBzZXQgYmVmb3JlLgorICBpZiAoUHJvZ3JhbUludm9jYXRpb25OYW1lKCkgPT0gIlVOS05P
V04iKSB7CisgICAgZmxhZ3NfaW50ZXJuYWw6OlNldFByb2dyYW1JbnZvY2F0aW9uTmFtZShhcmd2
WzBdKTsKKyAgfQorICBvdXRwdXRfYXJncy5wdXNoX2JhY2soYXJndlswXSk7CisKKyAgLy8gSXRl
cmF0ZSB0aHJvdWdoIHRoZSBsaXN0IG9mIHRoZSBpbnB1dCBhcmd1bWVudHMuIEZpcnN0IGxldmVs
IGFyZSBhcmd1bWVudHMKKyAgLy8gb3JpZ2luYXRlZCBmcm9tIGFyZ2MvYXJndi4gRm9sbG93aW5n
IGxldmVscyBhcmUgYXJndW1lbnRzIG9yaWdpbmF0ZWQgZnJvbQorICAvLyByZWN1cnNpdmUgcGFy
c2luZyBvZiBmbGFnZmlsZShzKS4KKyAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgd2hpbGUgKCFp
bnB1dF9hcmdzLmVtcHR5KCkpIHsKKyAgICAvLyAxMC4gRmlyc3Qgd2UgcHJvY2VzcyB0aGUgYnVp
bHQtaW4gZ2VuZXJhdG9yIGZsYWdzLgorICAgIHN1Y2Nlc3MgJj0gSGFuZGxlR2VuZXJhdG9yRmxh
Z3MoJmlucHV0X2FyZ3MsICZmbGFnZmlsZV92YWx1ZSk7CisKKyAgICAvLyAzMC4gU2VsZWN0IHRv
cC1tb3N0IChtb3N0IHJlY2VudCkgYXJndW1lbnRzIGxpc3QuIElmIGl0IGlzIGVtcHR5IGRyb3Ag
aXQKKyAgICAvLyBhbmQgcmUtdHJ5LgorICAgIEFyZ3NMaXN0JiBjdXJyX2xpc3QgPSBpbnB1dF9h
cmdzLmJhY2soKTsKKworICAgIGN1cnJfbGlzdC5Qb3BGcm9udCgpOworCisgICAgaWYgKGN1cnJf
bGlzdC5TaXplKCkgPT0gMCkgeworICAgICAgaW5wdXRfYXJncy5wb3BfYmFjaygpOworICAgICAg
Y29udGludWU7CisgICAgfQorCisgICAgLy8gNDAuIFBpY2sgdXAgdGhlIGZyb250IHJlbWFpbmlu
ZyBhcmd1bWVudCBpbiB0aGUgY3VycmVudCBsaXN0LiBJZiBjdXJyZW50CisgICAgLy8gc3RhY2sg
b2YgYXJndW1lbnQgbGlzdHMgY29udGFpbnMgb25seSBvbmUgZWxlbWVudCAtIHdlIGFyZSBwcm9j
ZXNzaW5nIGFuCisgICAgLy8gYXJndW1lbnQgZnJvbSB0aGUgb3JpZ2luYWwgYXJndi4KKyAgICBh
YnNsOjpzdHJpbmdfdmlldyBhcmcoY3Vycl9saXN0LkZyb250KCkpOworICAgIGJvb2wgYXJnX2Zy
b21fYXJndiA9IGlucHV0X2FyZ3Muc2l6ZSgpID09IDE7CisKKyAgICAvLyA1MC4gSWYgYXJndW1l
bnQgZG9lcyBub3Qgc3RhcnQgd2l0aCAtIG9yIGlzIGp1c3QgIi0iIC0gdGhpcyBpcworICAgIC8v
IHBvc2l0aW9uYWwgYXJndW1lbnQuCisgICAgaWYgKCFhYnNsOjpDb25zdW1lUHJlZml4KCZhcmcs
ICItIikgfHwgYXJnLmVtcHR5KCkpIHsKKyAgICAgIEFCU0xfSU5URVJOQUxfQ0hFQ0soYXJnX2Zy
b21fYXJndiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkZsYWdmaWxlIGNhbm5vdCBjb250
YWluIHBvc2l0aW9uYWwgYXJndW1lbnQiKTsKKworICAgICAgcG9zaXRpb25hbF9hcmdzLnB1c2hf
YmFjayhhcmd2W2N1cnJfbGlzdC5Gcm9udEluZGV4KCldKTsKKyAgICAgIGNvbnRpbnVlOworICAg
IH0KKworICAgIGlmIChhcmdfZnJvbV9hcmd2ICYmIChhcmdfbGlzdF9hY3QgPT0gQXJndkxpc3RB
Y3Rpb246OmtLZWVwUGFyc2VkQXJncykpIHsKKyAgICAgIG91dHB1dF9hcmdzLnB1c2hfYmFjayhh
cmd2W2N1cnJfbGlzdC5Gcm9udEluZGV4KCldKTsKKyAgICB9CisKKyAgICAvLyA2MC4gU3BsaXQg
dGhlIGN1cnJlbnQgYXJndW1lbnQgb24gJz0nIHRvIGZpZ3VyZSBvdXQgdGhlIGFyZ3VtZW50Cisg
ICAgLy8gbmFtZSBhbmQgdmFsdWUuIElmIGZsYWcgbmFtZSBpcyBlbXB0eSBpdCBtZWFucyB3ZSd2
ZSBnb3QgIi0tIi4gdmFsdWUKKyAgICAvLyBjYW4gYmUgZW1wdHkgZWl0aGVyIGlmIHRoZXJlIHdl
cmUgbm8gJz0nIGluIGFyZ3VtZW50IHN0ZDo6c3RyaW5nIGF0IGFsbCBvcgorICAgIC8vIGFuIGFy
Z3VtZW50IGxvb2tlZCBsaWtlICItLWZvbz0iLiBJbiBhIGxhdHRlciBjYXNlIGlzX2VtcHR5X3Zh
bHVlIGlzCisgICAgLy8gdHJ1ZS4KKyAgICBhYnNsOjpzdHJpbmdfdmlldyBmbGFnX25hbWU7Cisg
ICAgYWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWU7CisgICAgYm9vbCBpc19lbXB0eV92YWx1ZSA9IGZh
bHNlOworCisgICAgc3RkOjp0aWUoZmxhZ19uYW1lLCB2YWx1ZSwgaXNfZW1wdHlfdmFsdWUpID0g
U3BsaXROYW1lQW5kVmFsdWUoYXJnKTsKKworICAgIC8vIDcwLiAiLS0iIGFsb25lIG1lYW5zIHdo
YXQgaXQgZG9lcyBmb3IgR05VOiBzdG9wIGZsYWdzIHBhcnNpbmcuIFdlIGRvCisgICAgLy8gbm90
IHN1cHBvcnQgcG9zaXRpb25hbCBhcmd1bWVudHMgaW4gZmxhZ2ZpbGVzLCBzbyB3ZSBqdXN0IGRy
b3AgdGhlbS4KKyAgICBpZiAoZmxhZ19uYW1lLmVtcHR5KCkpIHsKKyAgICAgIEFCU0xfSU5URVJO
QUxfQ0hFQ0soYXJnX2Zyb21fYXJndiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkZsYWdm
aWxlIGNhbm5vdCBjb250YWluIHBvc2l0aW9uYWwgYXJndW1lbnQiKTsKKworICAgICAgY3Vycl9s
aXN0LlBvcEZyb250KCk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyA4MC4gTG9jYXRl
IHRoZSBmbGFnIGJhc2VkIG9uIGZsYWcgbmFtZS4gSGFuZGxlIGJvdGggLS1mb28gYW5kIC0tbm9m
b28KKyAgICBDb21tYW5kTGluZUZsYWcqIGZsYWcgPSBudWxscHRyOworICAgIGJvb2wgaXNfbmVn
YXRpdmUgPSBmYWxzZTsKKyAgICBzdGQ6OnRpZShmbGFnLCBpc19uZWdhdGl2ZSkgPSBMb2NhdGVG
bGFnKGZsYWdfbmFtZSk7CisKKyAgICBpZiAoZmxhZyA9PSBudWxscHRyKSB7CisgICAgICBpZiAo
b25fdW5kZWZfZmxhZyAhPSBPblVuZGVmaW5lZEZsYWc6OmtJZ25vcmVVbmRlZmluZWQpIHsKKyAg
ICAgICAgdW5kZWZpbmVkX2ZsYWdfbmFtZXMuZW1wbGFjZV9iYWNrKGFyZ19mcm9tX2FyZ3YsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyhmbGFn
X25hbWUpKTsKKyAgICAgIH0KKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIC8vIDkwLiBE
ZWR1Y2UgZmxhZydzIHZhbHVlIChmcm9tIHRoaXMgb3IgbmV4dCBhcmd1bWVudCkKKyAgICBhdXRv
IGN1cnJfaW5kZXggPSBjdXJyX2xpc3QuRnJvbnRJbmRleCgpOworICAgIGJvb2wgdmFsdWVfc3Vj
Y2VzcyA9IHRydWU7CisgICAgc3RkOjp0aWUodmFsdWVfc3VjY2VzcywgdmFsdWUpID0KKyAgICAg
ICAgRGVkdWNlRmxhZ1ZhbHVlKCpmbGFnLCB2YWx1ZSwgaXNfbmVnYXRpdmUsIGlzX2VtcHR5X3Zh
bHVlLCAmY3Vycl9saXN0KTsKKyAgICBzdWNjZXNzICY9IHZhbHVlX3N1Y2Nlc3M7CisKKyAgICAv
LyBJZiBhYm92ZSBjYWxsIGNvbnN1bWVkIGFuIGFyZ3VtZW50LCBpdCB3YXMgYSBzdGFuZGFsb25l
IHZhbHVlCisgICAgaWYgKGFyZ19mcm9tX2FyZ3YgJiYgKGFyZ19saXN0X2FjdCA9PSBBcmd2TGlz
dEFjdGlvbjo6a0tlZXBQYXJzZWRBcmdzKSAmJgorICAgICAgICAoY3Vycl9pbmRleCAhPSBjdXJy
X2xpc3QuRnJvbnRJbmRleCgpKSkgeworICAgICAgb3V0cHV0X2FyZ3MucHVzaF9iYWNrKGFyZ3Zb
Y3Vycl9saXN0LkZyb250SW5kZXgoKV0pOworICAgIH0KKworICAgIC8vIDEwMC4gU2V0IHRoZSBs
b2NhdGVkIGZsYWcgdG8gYSBuZXcgbmV3IHZhbHVlLCB1bmxlc3MgaXQgaXMgcmV0aXJlZC4KKyAg
ICAvLyBTZXR0aW5nIHJldGlyZWQgZmxhZyBmYWlscywgYnV0IHdlIGlnbm9yaW5nIGl0IGhlcmUu
CisgICAgaWYgKGZsYWctPklzUmV0aXJlZCgpKSBjb250aW51ZTsKKworICAgIHN0ZDo6c3RyaW5n
IGVycm9yOworICAgIGlmICghZmxhZy0+U2V0RnJvbVN0cmluZyh2YWx1ZSwgU0VUX0ZMQUdTX1ZB
TFVFLCBrQ29tbWFuZExpbmUsICZlcnJvcikpIHsKKyAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBv
cnRVc2FnZUVycm9yKGVycm9yLCB0cnVlKTsKKyAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICB9
CisgIH0KKworICBmb3IgKGNvbnN0IGF1dG8mIGZsYWdfbmFtZSA6IHVuZGVmaW5lZF9mbGFnX25h
bWVzKSB7CisgICAgaWYgKENhbklnbm9yZVVuZGVmaW5lZEZsYWcoZmxhZ19uYW1lLnNlY29uZCkp
IGNvbnRpbnVlOworCisgICAgZmxhZ3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdlRXJyb3IoCisgICAg
ICAgIGFic2w6OlN0ckNhdCgiVW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyAnIiwgZmxhZ19uYW1l
LnNlY29uZCwgIiciKSwKKyAgICAgICAgdHJ1ZSk7CisKKyAgICBzdWNjZXNzID0gZmFsc2U7Cisg
IH0KKworI2lmIEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMKKyAgaWYgKCFzdWNjZXNzKSB7CisgICAg
ZmxhZ3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdlRXJyb3IoCisgICAgICAgICJOT1RFOiBjb21tYW5k
IGxpbmUgZmxhZ3MgYXJlIGRpc2FibGVkIGluIHRoaXMgYnVpbGQiLCB0cnVlKTsKKyAgfQorI2Vu
ZGlmCisKKyAgaWYgKCFzdWNjZXNzKSB7CisgICAgZmxhZ3NfaW50ZXJuYWw6OkhhbmRsZVVzYWdl
RmxhZ3Moc3RkOjpjb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBy
b2dyYW1Vc2FnZU1lc3NhZ2UoKSk7CisgICAgc3RkOjpleGl0KDEpOworICB9CisKKyAgaWYgKHVz
YWdlX2ZsYWdfYWN0ID09IFVzYWdlRmxhZ3NBY3Rpb246OmtIYW5kbGVVc2FnZSkgeworICAgIGlu
dCBleGl0X2NvZGUgPSBmbGFnc19pbnRlcm5hbDo6SGFuZGxlVXNhZ2VGbGFncygKKyAgICAgICAg
c3RkOjpjb3V0LCBQcm9ncmFtVXNhZ2VNZXNzYWdlKCkpOworCisgICAgaWYgKGV4aXRfY29kZSAh
PSAtMSkgeworICAgICAgc3RkOjpleGl0KGV4aXRfY29kZSk7CisgICAgfQorICB9CisKKyAgUmVz
ZXRHZW5lcmF0b3JGbGFncyhmbGFnZmlsZV92YWx1ZSk7CisKKyAgLy8gUmVpbnN0YXRlIHBvc2l0
aW9uYWwgYXJncyB3aGljaCB3ZXJlIGludGVybWl4ZWQgd2l0aCBmbGFncyBpbiB0aGUgYXJndW1l
bnRzCisgIC8vIGxpc3QuCisgIGZvciAoYXV0byBhcmcgOiBwb3NpdGlvbmFsX2FyZ3MpIHsKKyAg
ICBvdXRwdXRfYXJncy5wdXNoX2JhY2soYXJnKTsKKyAgfQorCisgIC8vIEFsbCB0aGUgcmVtYWlu
aW5nIGFyZ3VtZW50cyBhcmUgcG9zaXRpb25hbC4KKyAgaWYgKCFpbnB1dF9hcmdzLmVtcHR5KCkp
IHsKKyAgICBmb3IgKGludCBhcmdfaW5kZXggPSBpbnB1dF9hcmdzLmJhY2soKS5Gcm9udEluZGV4
KCk7IGFyZ19pbmRleCA8IGFyZ2M7CisgICAgICAgICArK2FyZ19pbmRleCkgeworICAgICAgb3V0
cHV0X2FyZ3MucHVzaF9iYWNrKGFyZ3ZbYXJnX2luZGV4XSk7CisgICAgfQorICB9CisKKyAgcmV0
dXJuIG91dHB1dF9hcmdzOworfQorCit9ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKKwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworc3RkOjp2ZWN0b3I8Y2hhcio+IFBhcnNlQ29tbWFuZExpbmUoaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworICByZXR1cm4gZmxhZ3NfaW50ZXJuYWw6OlBhcnNlQ29t
bWFuZExpbmVJbXBsKAorICAgICAgYXJnYywgYXJndiwgZmxhZ3NfaW50ZXJuYWw6OkFyZ3ZMaXN0
QWN0aW9uOjprUmVtb3ZlUGFyc2VkQXJncywKKyAgICAgIGZsYWdzX2ludGVybmFsOjpVc2FnZUZs
YWdzQWN0aW9uOjprSGFuZGxlVXNhZ2UsCisgICAgICBmbGFnc19pbnRlcm5hbDo6T25VbmRlZmlu
ZWRGbGFnOjprQWJvcnRJZlVuZGVmaW5lZCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9wYXJzZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvcGFyc2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kYmI3NTEwMTU2ODZkMDc4NDMxMWI5OGNkOWFlMWZhMjZiNjIxZWM0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvcGFyc2UuaApAQCAtMCwwICsxLDU4IEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vIEZpbGU6IHBhcnNlLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gVGhpcyBmaWxlIGRlZmluZXMgdGhlIG1haW4gcGFyc2luZyBmdW5jdGlvbiBmb3IgQWJzZWls
IGZsYWdzOgorLy8gYGFic2w6OlBhcnNlQ29tbWFuZExpbmUoKWAuCisKKyNpZm5kZWYgQUJTTF9G
TEFHU19QQVJTRV9IXworI2RlZmluZSBBQlNMX0ZMQUdTX1BBUlNFX0hfCisKKyNpbmNsdWRlIDxz
dHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5h
bC9wYXJzZS5oIgorCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIFBhcnNlQ29tbWFuZExpbmUoKQor
Ly8KKy8vIFBhcnNlcyB0aGUgc2V0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcGFzc2VkIGlu
IHRoZSBgYXJnY2AgKGFyZ3VtZW50CisvLyBjb3VudCkgYW5kIGBhcmd2W11gIChhcmd1bWVudCB2
ZWN0b3IpIHBhcmFtZXRlcnMgZnJvbSBgbWFpbigpYCwgYXNzaWduaW5nCisvLyB2YWx1ZXMgdG8g
YW55IGRlZmluZWQgQWJzZWlsIGZsYWdzLiAoQW55IGFyZ3VtZW50cyBwYXNzZWQgYWZ0ZXIgdGhl
CisvLyBmbGFnLXRlcm1pbmF0aW5nIGRlbGltaXRlciAoYC0tYCkgYXJlIHRyZWF0ZWQgYXMgcG9z
aXRpb25hbCBhcmd1bWVudHMgYW5kCisvLyBpZ25vcmVkLikKKy8vCisvLyBBbnkgY29tbWFuZC1s
aW5lIGZsYWdzIChhbmQgYXJndW1lbnRzIHRvIHRob3NlIGZsYWdzKSBhcmUgcGFyc2VkIGludG8g
QWJzZWlsCisvLyBGbGFnIHZhbHVlcywgaWYgdGhvc2UgZmxhZ3MgYXJlIGRlZmluZWQuIEFueSB1
bmRlZmluZWQgZmxhZ3Mgd2lsbCBlaXRoZXIKKy8vIHJldHVybiBhbiBlcnJvciwgb3IgYmUgaWdu
b3JlZCBpZiB0aGF0IGZsYWcgaXMgZGVzaWduYXRlZCB1c2luZyBgdW5kZWZva2AgdG8KKy8vIGlu
ZGljYXRlICJ1bmRlZmluZWQgaXMgT0suIgorLy8KKy8vIEFueSBjb21tYW5kLWxpbmUgcG9zaXRp
b25hbCBhcmd1bWVudHMgbm90IHBhcnQgb2YgYW55IGNvbW1hbmQtbGluZSBmbGFnIChvcgorLy8g
YXJndW1lbnRzIHRvIGEgZmxhZykgYXJlIHJldHVybmVkIGluIGEgdmVjdG9yLCB3aXRoIHRoZSBw
cm9ncmFtIGludm9jYXRpb24KKy8vIG5hbWUgYXQgcG9zaXRpb24gMCBvZiB0aGF0IHZlY3Rvci4g
KE5vdGUgdGhhdCB0aGlzIGluY2x1ZGVzIHBvc2l0aW9uYWwKKy8vIGFyZ3VtZW50cyBhZnRlciB0
aGUgZmxhZy10ZXJtaW5hdGluZyBkZWxpbWl0ZXIgYC0tYC4pCisvLworLy8gQWZ0ZXIgYWxsIGZs
YWdzIGFuZCBmbGFnIGFyZ3VtZW50cyBhcmUgcGFyc2VkLCB0aGlzIGZ1bmN0aW9uIGxvb2tzIGZv
ciBhbnkKKy8vIGJ1aWx0LWluIHVzYWdlIGZsYWdzIChlLmcuIGAtLWhlbHBgKSwgYW5kIGlmIGFu
eSB3ZXJlIHNwZWNpZmllZCwgaXQgcmVwb3J0cworLy8gaGVscCBtZXNzYWdlcyBhbmQgdGhlbiBl
eGl0cyB0aGUgcHJvZ3JhbS4KK3N0ZDo6dmVjdG9yPGNoYXIqPiBQYXJzZUNvbW1hbmRMaW5lKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pOworCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYg
IC8vIEFCU0xfRkxBR1NfUEFSU0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3BhcnNlX3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9mbGFncy9wYXJzZV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0N2EzYmM3YmRj
YmQyYTNkNTA2ZmM0MDM2MDM1MTdkNzMyZWUyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9m
bGFncy9wYXJzZV90ZXN0LmNjCkBAIC0wLDAgKzEsODU4IEBACisvLworLy8gQ29weXJpZ2h0IDIw
MTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3BhcnNlLmgi
CisKKyNpbmNsdWRlIDxmc3RyZWFtPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9n
Z2luZy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9zY29wZWRfc2V0X2Vudi5oIgor
I2luY2x1ZGUgImFic2wvZmxhZ3MvZmxhZy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJf
Y2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuaCIKKyNpbmNsdWRlICJh
YnNsL3R5cGVzL3NwYW4uaCIKKworI2lmZGVmIF9XSU4zMgorI2luY2x1ZGUgPHdpbmRvd3MuaD4K
KyNlbmRpZgorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpiYXNlX2ludGVybmFsOjpTY29w
ZWRTZXRFbnY7CisKK3N0cnVjdCBVRFQgeworICBVRFQoKSA9IGRlZmF1bHQ7CisgIFVEVChjb25z
dCBVRFQmKSA9IGRlZmF1bHQ7CisgIFVEVChpbnQgdikgOiB2YWx1ZSh2KSB7fSAgLy8gTk9MSU5U
CisKKyAgaW50IHZhbHVlOworfTsKKworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192
aWV3IGluLCBVRFQqIHVkdCwgc3RkOjpzdHJpbmcqIGVycikgeworICBpZiAoaW4gPT0gIkEiKSB7
CisgICAgdWR0LT52YWx1ZSA9IDE7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgaWYgKGluID09
ICJBQUEiKSB7CisgICAgdWR0LT52YWx1ZSA9IDEwOworICAgIHJldHVybiB0cnVlOworICB9CisK
KyAgKmVyciA9ICJVc2UgdmFsdWVzIEEsIEFBQSBpbnN0ZWFkIjsKKyAgcmV0dXJuIGZhbHNlOwor
fQorc3RkOjpzdHJpbmcgQWJzbFVucGFyc2VGbGFnKGNvbnN0IFVEVCYgdWR0KSB7CisgIHJldHVy
biB1ZHQudmFsdWUgPT0gMSA/ICJBIiA6ICJBQUEiOworfQorCitzdGQ6OnN0cmluZyBHZXRUZXN0
VG1wRGlyRW52VmFyKGNvbnN0IGNoYXIqIGNvbnN0IGVudl92YXJfbmFtZSkgeworI2lmZGVmIF9X
SU4zMgorICBjaGFyIGJ1ZltNQVhfUEFUSF07CisgIGF1dG8gZ2V0X3JlcyA9IEdldEVudmlyb25t
ZW50VmFyaWFibGVBKGVudl92YXJfbmFtZSwgYnVmLCBzaXplb2YoYnVmKSk7CisgIGlmIChnZXRf
cmVzID49IHNpemVvZihidWYpIHx8IGdldF9yZXMgPT0gMCkgeworICAgIHJldHVybiAiIjsKKyAg
fQorCisgIHJldHVybiBzdGQ6OnN0cmluZyhidWYsIGdldF9yZXMpOworI2Vsc2UKKyAgY29uc3Qg
Y2hhciogdmFsID0gOjpnZXRlbnYoZW52X3Zhcl9uYW1lKTsKKyAgaWYgKHZhbCA9PSBudWxscHRy
KSB7CisgICAgcmV0dXJuICIiOworICB9CisKKyAgcmV0dXJuIHZhbDsKKyNlbmRpZgorfQorCitj
b25zdCBzdGQ6OnN0cmluZyYgR2V0VGVzdFRlbXBEaXIoKSB7CisgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyogdGVtcF9kaXJfbmFtZSA9IFtdKCkgLT4gc3RkOjpzdHJpbmcqIHsKKyAgICBzdGQ6OnN0cmlu
ZyogcmVzID0gbmV3IHN0ZDo6c3RyaW5nKEdldFRlc3RUbXBEaXJFbnZWYXIoIlRFU1RfVE1QRElS
IikpOworCisgICAgaWYgKHJlcy0+ZW1wdHkoKSkgeworICAgICAgKnJlcyA9IEdldFRlc3RUbXBE
aXJFbnZWYXIoIlRNUERJUiIpOworICAgIH0KKworICAgIGlmIChyZXMtPmVtcHR5KCkpIHsKKyNp
ZmRlZiBfV0lOMzIKKyAgICAgIGNoYXIgdGVtcF9wYXRoX2J1ZmZlcltNQVhfUEFUSF07CisKKyAg
ICAgIGF1dG8gbGVuID0gR2V0VGVtcFBhdGhBKE1BWF9QQVRILCB0ZW1wX3BhdGhfYnVmZmVyKTsK
KyAgICAgIGlmIChsZW4gPCBNQVhfUEFUSCAmJiBsZW4gIT0gMCkgeworICAgICAgICBzdGQ6OnN0
cmluZyB0ZW1wX2Rpcl9uYW1lID0gYWJzbDo6U3RyQ2F0KAorICAgICAgICAgICAgdGVtcF9wYXRo
X2J1ZmZlciwgIlxccGFyc2VfdGVzdC4iLCBHZXRDdXJyZW50UHJvY2Vzc0lkKCkpOworICAgICAg
ICBpZiAoQ3JlYXRlRGlyZWN0b3J5QSh0ZW1wX2Rpcl9uYW1lLmNfc3RyKCksIG51bGxwdHIpKSB7
CisgICAgICAgICAgKnJlcyA9IHRlbXBfZGlyX25hbWU7CisgICAgICAgIH0KKyAgICAgIH0KKyNl
bHNlCisgICAgICBjaGFyIHRlbXBfZGlyX3RlbXBsYXRlW10gPSAiL3RtcC9wYXJzZV90ZXN0LlhY
WFhYWCI7CisgICAgICBpZiAoYXV0byogdW5pcXVlX25hbWUgPSA6Om1rZHRlbXAodGVtcF9kaXJf
dGVtcGxhdGUpKSB7CisgICAgICAgICpyZXMgPSB1bmlxdWVfbmFtZTsKKyAgICAgIH0KKyNlbmRp
ZgorCisgICAgICBpZiAocmVzLT5lbXB0eSgpKSB7CisgICAgICAgIEFCU0xfSU5URVJOQUxfTE9H
KEZBVEFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIG1ha2UgdGVtcG9y
YXJ5IGRpcmVjdG9yeSBmb3IgZGF0YSBmaWxlcyIpOworICAgICAgfQorICAgIH0KKworI2lmZGVm
IF9XSU4zMgorICAgICpyZXMgKz0gIlxcIjsKKyNlbHNlCisgICAgKnJlcyArPSAiLyI7CisjZW5k
aWYKKworICAgIHJldHVybiByZXM7CisgIH0oKTsKKworICByZXR1cm4gKnRlbXBfZGlyX25hbWU7
Cit9CisKK3N0cnVjdCBGbGFnZmlsZURhdGEgeworICBjb25zdCBhYnNsOjpzdHJpbmdfdmlldyBm
aWxlX25hbWU7CisgIGNvbnN0IGFic2w6OlNwYW48Y29uc3QgY2hhciogY29uc3Q+IGZpbGVfbGlu
ZXM7Cit9OworCisvLyBjbGFuZy1mb3JtYXQgb2ZmCitjb25zdGV4cHIgY29uc3QgY2hhciogY29u
c3QgZmYxX2RhdGFbXSA9IHsKKyAgICAiIyBjb21tZW50ICAgICIsCisgICAgIiAgIyBjb21tZW50
ICAiLAorICAgICIiLAorICAgICIgICAgICIsCisgICAgIi0taW50X2ZsYWc9LTEiLAorICAgICIg
IC0tc3RyaW5nX2ZsYWc9cTJ3MiAgIiwKKyAgICAiICAjIyAgICIsCisgICAgIiAgLS1kb3VibGVf
ZmxhZz0wLjEiLAorICAgICItLWJvb2xfZmxhZz1ZICAiCit9OworCitjb25zdGV4cHIgY29uc3Qg
Y2hhciogY29uc3QgZmYyX2RhdGFbXSA9IHsKKyAgICAiIyBTZXR0aW5nIGxlZ2FjeSBmbGFnIiwK
KyAgICAiLS1sZWdhY3lfaW50PTExMTEiLAorICAgICItLWxlZ2FjeV9ib29sIiwKKyAgICAiLS1u
b2Jvb2xfZmxhZyIsCisgICAgIi0tbGVnYWN5X3N0cj1hcXN3IiwKKyAgICAiLS1pbnRfZmxhZz0x
MDAiLAorICAgICIgICAjIyA9PT09PT09PT09PT09IgorfTsKKy8vIGNsYW5nLWZvcm1hdCBvbgor
CisvLyBCdWlsZHMgZmxhZ2ZpbGUgZmxhZyBpbiB0aGUgZmxhZ2ZpbGVfZmxhZyBidWZmZXIgYW5k
IHJldHVybnMgaXQuIFRoaXMKKy8vIGZ1bmN0aW9uIGFsc28gY3JlYXRlcyBhIHRlbXBvcmFyeSBm
bGFnZmlsZSBiYXNlZCBvbiBGbGFnZmlsZURhdGEgaW5wdXQuCisvLyBXZSBjcmVhdGUgYSBmbGFn
ZmlsZSBpbiBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkgd2l0aCB0aGUgbmFtZSBzcGVjaWZpZWQgaW4K
Ky8vIEZsYWdmaWxlRGF0YSBhbmQgcG9wdWxhdGUgaXQgd2l0aCBsaW5lcyBzcGVjaWZlZCBpbiBG
bGFnZmlsZURhdGEuIElmICQwIGlzCisvLyByZWZlcmVuY2VkIGluIGFueSBvZiB0aGUgbGluZXMg
aW4gRmxhZ2ZpbGVEYXRhIHRoZXkgYXJlIHJlcGxhY2VkIHdpdGgKKy8vIHRlbXBvcmFyeSBkaXJl
Y3RvcnkgbG9jYXRpb24uIFRoaXMgd2F5IHdlIGNhbiB0ZXN0IGluY2x1c2lvbiBvZiBvbmUgZmxh
Z2ZpbGUKKy8vIGZyb20gYW5vdGhlciBmbGFnZmlsZS4KK2NvbnN0IGNoYXIqIEdldEZsYWdmaWxl
RmxhZyhjb25zdCBzdGQ6OnZlY3RvcjxGbGFnZmlsZURhdGE+JiBmZmQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIGZsYWdmaWxlX2ZsYWcpIHsKKyAgKmZsYWdmaWxl
X2ZsYWcgPSAiLS1mbGFnZmlsZT0iOworICBhYnNsOjpzdHJpbmdfdmlldyBzZXBhcmF0b3I7Cisg
IGZvciAoY29uc3QgYXV0byYgZmxhZ2ZpbGVfZGF0YSA6IGZmZCkgeworICAgIHN0ZDo6c3RyaW5n
IGZsYWdmaWxlX25hbWUgPQorICAgICAgICBhYnNsOjpTdHJDYXQoR2V0VGVzdFRlbXBEaXIoKSwg
ZmxhZ2ZpbGVfZGF0YS5maWxlX25hbWUpOworCisgICAgc3RkOjpvZnN0cmVhbSBmbGFnZmlsZV9v
dXQoZmxhZ2ZpbGVfbmFtZSk7CisgICAgZm9yIChhdXRvIGxpbmUgOiBmbGFnZmlsZV9kYXRhLmZp
bGVfbGluZXMpIHsKKyAgICAgIGZsYWdmaWxlX291dCA8PCBhYnNsOjpTdWJzdGl0dXRlKGxpbmUs
IEdldFRlc3RUZW1wRGlyKCkpIDw8ICJcbiI7CisgICAgfQorCisgICAgYWJzbDo6U3RyQXBwZW5k
KGZsYWdmaWxlX2ZsYWcsIHNlcGFyYXRvciwgZmxhZ2ZpbGVfbmFtZSk7CisgICAgc2VwYXJhdG9y
ID0gIiwiOworICB9CisKKyAgcmV0dXJuIGZsYWdmaWxlX2ZsYWctPmNfc3RyKCk7Cit9CisKK30g
IC8vIG5hbWVzcGFjZQorCitBQlNMX0ZMQUcoaW50LCBpbnRfZmxhZywgMSwgIiIpOworQUJTTF9G
TEFHKGRvdWJsZSwgZG91YmxlX2ZsYWcsIDEuMSwgIiIpOworQUJTTF9GTEFHKHN0ZDo6c3RyaW5n
LCBzdHJpbmdfZmxhZywgImEiLCAiIik7CitBQlNMX0ZMQUcoYm9vbCwgYm9vbF9mbGFnLCBmYWxz
ZSwgIiIpOworQUJTTF9GTEFHKFVEVCwgdWR0X2ZsYWcsIC0xLCAiIik7CitBQlNMX1JFVElSRURf
RkxBRyhpbnQsIGxlZ2FjeV9pbnQsIDEsICIiKTsKK0FCU0xfUkVUSVJFRF9GTEFHKGJvb2wsIGxl
Z2FjeV9ib29sLCBmYWxzZSwgIiIpOworQUJTTF9SRVRJUkVEX0ZMQUcoc3RkOjpzdHJpbmcsIGxl
Z2FjeV9zdHIsICJsIiwgIiIpOworCituYW1lc3BhY2UgeworCituYW1lc3BhY2UgZmxhZ3MgPSBh
YnNsOjpmbGFnc19pbnRlcm5hbDsKK3VzaW5nIHRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7CisK
K2NsYXNzIFBhcnNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcml2YXRlOgorICBm
bGFnczo6RmxhZ1NhdmVyIGZsYWdfc2F2ZXJfOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVt
cGxhdGUgPGludCBOPgorc3RkOjp2ZWN0b3I8Y2hhcio+IEludm9rZVBhcnNlKGNvbnN0IGNoYXIq
ICgmaW5fYXJndilbTl0pIHsKKyAgcmV0dXJuIGFic2w6OlBhcnNlQ29tbWFuZExpbmUoTiwgY29u
c3RfY2FzdDxjaGFyKio+KGluX2FyZ3YpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxh
dGUgPGludCBOPgordm9pZCBUZXN0UGFyc2UoY29uc3QgY2hhciogKCZpbl9hcmd2KVtOXSwgaW50
IGludF9mbGFnX3ZhbHVlLAorICAgICAgICAgICAgICAgZG91YmxlIGRvdWJsZV9mbGFnX3ZhbCwg
YWJzbDo6c3RyaW5nX3ZpZXcgc3RyaW5nX2ZsYWdfdmFsLAorICAgICAgICAgICAgICAgYm9vbCBi
b29sX2ZsYWdfdmFsLCBpbnQgZXhwX3Bvc2l0aW9uX2FyZ3MgPSAwKSB7CisgIGF1dG8gb3V0X2Fy
Z3MgPSBJbnZva2VQYXJzZShpbl9hcmd2KTsKKworICBFWFBFQ1RfRVEob3V0X2FyZ3Muc2l6ZSgp
LCAxICsgZXhwX3Bvc2l0aW9uX2FyZ3MpOworICBFWFBFQ1RfU1RSRVEob3V0X2FyZ3NbMF0sICJ0
ZXN0YmluIik7CisKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfaW50X2ZsYWcpLCBp
bnRfZmxhZ192YWx1ZSk7CisgIEVYUEVDVF9ORUFSKGFic2w6OkdldEZsYWcoRkxBR1NfZG91Ymxl
X2ZsYWcpLCBkb3VibGVfZmxhZ192YWwsIDAuMDAwMSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRG
bGFnKEZMQUdTX3N0cmluZ19mbGFnKSwgc3RyaW5nX2ZsYWdfdmFsKTsKKyAgRVhQRUNUX0VRKGFi
c2w6OkdldEZsYWcoRkxBR1NfYm9vbF9mbGFnKSwgYm9vbF9mbGFnX3ZhbCk7Cit9CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RFbXB0eUFyZ3YpIHsKKyAgY29uc3Qg
Y2hhciogaW5fYXJndltdID0geyJ0ZXN0YmluIn07CisKKyAgYXV0byBvdXRfYXJncyA9IEludm9r
ZVBhcnNlKGluX2FyZ3YpOworCisgIEVYUEVDVF9FUShvdXRfYXJncy5zaXplKCksIDEpOworICBF
WFBFQ1RfU1RSRVEob3V0X2FyZ3NbMF0sICJ0ZXN0YmluIik7Cit9CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RWYWxpZEludEFyZykgeworICBjb25zdCBjaGFyKiBp
bl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0taW50X2ZsYWc9MTAiLAor
ICB9OworICBUZXN0UGFyc2UoaW5fYXJnczEsIDEwLCAxLjEsICJhIiwgZmFsc2UpOworCisgIGNv
bnN0IGNoYXIqIGluX2FyZ3MyW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLWludF9m
bGFnPTAyMCIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMiwgMjAsIDEuMSwgImEiLCBmYWxz
ZSk7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczNbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAg
ICAgICItLWludF9mbGFnIiwKKyAgICAgICItMzAiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJn
czMsIC0zMCwgMS4xLCAiYSIsIGZhbHNlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzNFtdID0g
eworICAgICAgInRlc3RiaW4iLAorICAgICAgIi1pbnRfZmxhZyIsCisgICAgICAiMHgyMSIsCisg
IH07CisgIFRlc3RQYXJzZShpbl9hcmdzNCwgMzMsIDEuMSwgImEiLCBmYWxzZSk7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RWYWxpZERvdWJsZUFyZykgewor
ICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0t
ZG91YmxlX2ZsYWc9Mi4zIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAxLCAyLjMsICJh
IiwgZmFsc2UpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MyW10gPSB7CisgICAgICAidGVzdGJp
biIsCisgICAgICAiLS1kb3VibGVfZmxhZz0weDEuMiIsCisgIH07CisgIFRlc3RQYXJzZShpbl9h
cmdzMiwgMSwgMS4xMjUsICJhIiwgZmFsc2UpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MzW10g
PSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1kb3VibGVfZmxhZyIsCisgICAgICAiOTku
NyIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMywgMSwgOTkuNywgImEiLCBmYWxzZSk7CisK
KyAgY29uc3QgY2hhciogaW5fYXJnczRbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICIt
LWRvdWJsZV9mbGFnIiwKKyAgICAgICIweDIwLjEiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJn
czQsIDEsIDMyLjA2MjUsICJhIiwgZmFsc2UpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNU
X0YoUGFyc2VUZXN0LCBUZXN0VmFsaWRTdHJpbmdBcmcpIHsKKyAgY29uc3QgY2hhciogaW5fYXJn
czFbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLXN0cmluZ19mbGFnPWFxc3dkZSIs
CisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMSwgMSwgMS4xLCAiYXFzd2RlIiwgZmFsc2UpOwor
CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MyW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAi
LXN0cmluZ19mbGFnPWE9Yj1jIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MyLCAxLCAxLjEs
ICJhPWI9YyIsIGZhbHNlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzM1tdID0geworICAgICAg
InRlc3RiaW4iLAorICAgICAgIi0tc3RyaW5nX2ZsYWciLAorICAgICAgInpheHNjZCIsCisgIH07
CisgIFRlc3RQYXJzZShpbl9hcmdzMywgMSwgMS4xLCAiemF4c2NkIiwgZmFsc2UpOworCisgIGNv
bnN0IGNoYXIqIGluX2FyZ3M0W10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLXN0cmlu
Z19mbGFnIiwKKyAgICAgICItLWludF9mbGFnIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3M0
LCAxLCAxLjEsICItLWludF9mbGFnIiwgZmFsc2UpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3M1
W10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1zdHJpbmdfZmxhZyIsCisgICAgICAi
LS1ub19hX2ZsYWc9MTEiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczUsIDEsIDEuMSwgIi0t
bm9fYV9mbGFnPTExIiwgZmFsc2UpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFy
c2VUZXN0LCBUZXN0VmFsaWRCb29sQXJnKSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7
CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1ib29sX2ZsYWciLAorICB9OworICBUZXN0UGFy
c2UoaW5fYXJnczEsIDEsIDEuMSwgImEiLCB0cnVlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdz
MltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tbm9ib29sX2ZsYWciLAorICB9Owor
ICBUZXN0UGFyc2UoaW5fYXJnczIsIDEsIDEuMSwgImEiLCBmYWxzZSk7CisKKyAgY29uc3QgY2hh
ciogaW5fYXJnczNbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLWJvb2xfZmxhZz10
cnVlIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MzLCAxLCAxLjEsICJhIiwgdHJ1ZSk7CisK
KyAgY29uc3QgY2hhciogaW5fYXJnczRbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICIt
Ym9vbF9mbGFnPWZhbHNlIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3M0LCAxLCAxLjEsICJh
IiwgZmFsc2UpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0
VmFsaWRVRFRBcmcpIHsKKyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0
YmluIiwKKyAgICAgICItLXVkdF9mbGFnPUEiLAorICB9OworICBJbnZva2VQYXJzZShpbl9hcmdz
MSk7CisKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdWR0X2ZsYWcpLnZhbHVlLCAx
KTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geyJ0ZXN0YmluIiwgIi0tdWR0X2ZsYWci
LCAiQUFBIn07CisgIEludm9rZVBhcnNlKGluX2FyZ3MyKTsKKworICBFWFBFQ1RfRVEoYWJzbDo6
R2V0RmxhZyhGTEFHU191ZHRfZmxhZykudmFsdWUsIDEwKTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdFZhbGlkTXVsdGlwbGVBcmcpIHsKKyAgY29uc3QgY2hh
ciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwgICAgICAgICAgICItLWJvb2xfZmxh
ZyIsICAgICAgICItLWludF9mbGFnPTIiLAorICAgICAgIi0tZG91YmxlX2ZsYWc9MC4xIiwgIi0t
c3RyaW5nX2ZsYWc9YXNkIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAyLCAwLjEsICJh
c2QiLCB0cnVlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3Ri
aW4iLCAiLS1zdHJpbmdfZmxhZz0iLCAiLS1ub2Jvb2xfZmxhZyIsICItLWludF9mbGFnIiwKKyAg
ICAgICItMDExIiwgICAgIi0tZG91YmxlX2ZsYWciLCAgIi0xZS0yIiwKKyAgfTsKKyAgVGVzdFBh
cnNlKGluX2FyZ3MyLCAtMTEsIC0wLjAxLCAiIiwgZmFsc2UpOworCisgIGNvbnN0IGNoYXIqIGlu
X2FyZ3MzW10gPSB7CisgICAgICAidGVzdGJpbiIsICAgICAgICAgICItLWludF9mbGFnIiwgICAg
ICAgICAiLTAiLCAiLS1zdHJpbmdfZmxhZyIsICJcIlwiIiwKKyAgICAgICItLWJvb2xfZmxhZz10
cnVlIiwgIi0tZG91YmxlX2ZsYWc9MWUxOCIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMywg
MCwgMWUxOCwgIlwiXCIiLCB0cnVlKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFBh
cnNlVGVzdCwgVGVzdFBvc2l0aW9uYWxBcmdzKSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10g
PSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAicDEiLAorICAgICAgInAyIiwKKyAgfTsKKyAg
VGVzdFBhcnNlKGluX2FyZ3MxLCAxLCAxLjEsICJhIiwgZmFsc2UsIDIpOworCisgIGF1dG8gb3V0
X2FyZ3MxID0gSW52b2tlUGFyc2UoaW5fYXJnczEpOworCisgIEVYUEVDVF9TVFJFUShvdXRfYXJn
czFbMV0sICJwMSIpOworICBFWFBFQ1RfU1RSRVEob3V0X2FyZ3MxWzJdLCAicDIiKTsKKworICBj
b25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0taW50
X2ZsYWc9MiIsCisgICAgICAicDEiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczIsIDIsIDEu
MSwgImEiLCBmYWxzZSwgMSk7CisKKyAgYXV0byBvdXRfYXJnczIgPSBJbnZva2VQYXJzZShpbl9h
cmdzMik7CisKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdzMlsxXSwgInAxIik7CisKKyAgY29uc3Qg
Y2hhciogaW5fYXJnczNbXSA9IHsidGVzdGJpbiIsICJwMSIsICAgICAgICAgICItLWludF9mbGFn
PTMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwMiIsICAgICAgIi0tYm9vbF9mbGFn
IiwgInRydWUifTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MzLCAzLCAxLjEsICJhIiwgdHJ1ZSwgMyk7
CisKKyAgYXV0byBvdXRfYXJnczMgPSBJbnZva2VQYXJzZShpbl9hcmdzMyk7CisKKyAgRVhQRUNU
X1NUUkVRKG91dF9hcmdzM1sxXSwgInAxIik7CisgIEVYUEVDVF9TVFJFUShvdXRfYXJnczNbMl0s
ICJwMiIpOworICBFWFBFQ1RfU1RSRVEob3V0X2FyZ3MzWzNdLCAidHJ1ZSIpOworCisgIGNvbnN0
IGNoYXIqIGluX2FyZ3M0W10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS0iLAorICAg
ICAgInAxIiwKKyAgICAgICJwMiIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzNCwgMywgMS4x
LCAiYSIsIHRydWUsIDIpOworCisgIGF1dG8gb3V0X2FyZ3M0ID0gSW52b2tlUGFyc2UoaW5fYXJn
czQpOworCisgIEVYUEVDVF9TVFJFUShvdXRfYXJnczRbMV0sICJwMSIpOworICBFWFBFQ1RfU1RS
RVEob3V0X2FyZ3M0WzJdLCAicDIiKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzNVtdID0gewor
ICAgICAgInRlc3RiaW4iLCAicDEiLCAiLS1pbnRfZmxhZz00IiwgIi0tIiwgIi0tYm9vbF9mbGFn
IiwgImZhbHNlIiwgInAyIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3M1LCA0LCAxLjEsICJh
IiwgdHJ1ZSwgNCk7CisKKyAgYXV0byBvdXRfYXJnczUgPSBJbnZva2VQYXJzZShpbl9hcmdzNSk7
CisKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdzNVsxXSwgInAxIik7CisgIEVYUEVDVF9TVFJFUShv
dXRfYXJnczVbMl0sICItLWJvb2xfZmxhZyIpOworICBFWFBFQ1RfU1RSRVEob3V0X2FyZ3M1WzNd
LCAiZmFsc2UiKTsKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdzNVs0XSwgInAyIik7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK3VzaW5nIFBhcnNlRGVhdGhUZXN0ID0gUGFyc2VUZXN0OworCitURVNU
X0YoUGFyc2VEZWF0aFRlc3QsIFRlc3RVbmRlZmluZWRBcmcpIHsKKyAgY29uc3QgY2hhciogaW5f
YXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLXVuZGVmaW5lZF9mbGFnIiwK
KyAgfTsKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3MxKSwKKyAgICAgICAgICAg
ICAgICJVbmtub3duIGNvbW1hbmQgbGluZSBmbGFnICd1bmRlZmluZWRfZmxhZyciKTsKKworICBj
b25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tbm9w
cmVmaXhlZF9mbGFnIiwKKyAgfTsKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3My
KSwKKyAgICAgICAgICAgICAgICJVbmtub3duIGNvbW1hbmQgbGluZSBmbGFnICdub3ByZWZpeGVk
X2ZsYWcnIik7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczNbXSA9IHsKKyAgICAgICJ0ZXN0Ymlu
IiwKKyAgICAgICItLUludF9mbGFnPTEiLAorICB9OworICBFWFBFQ1RfREVBVEgoSW52b2tlUGFy
c2UoaW5fYXJnczMpLCAiVW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyAnSW50X2ZsYWcnIik7Cit9
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZURlYXRoVGVzdCwgVGVzdEludmFsaWRC
b29sRmxhZ0Zvcm1hdCkgeworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRl
c3RiaW4iLAorICAgICAgIi0tYm9vbF9mbGFnPSIsCisgIH07CisgIEVYUEVDVF9ERUFUSCgKKyAg
ICAgIEludm9rZVBhcnNlKGluX2FyZ3MxKSwKKyAgICAgICJNaXNzaW5nIHRoZSB2YWx1ZSBhZnRl
ciBhc3NpZ25tZW50IGZvciB0aGUgYm9vbGVhbiBmbGFnICdib29sX2ZsYWcnIik7CisKKyAgY29u
c3QgY2hhciogaW5fYXJnczJbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLW5vYm9v
bF9mbGFnPXRydWUiLAorICB9OworICBFWFBFQ1RfREVBVEgoSW52b2tlUGFyc2UoaW5fYXJnczIp
LAorICAgICAgICAgICAgICAgIk5lZ2F0aXZlIGZvcm0gd2l0aCBhc3NpZ25tZW50IGlzIG5vdCB2
YWxpZCBmb3IgdGhlIGJvb2xlYW4gIgorICAgICAgICAgICAgICAgImZsYWcgJ2Jvb2xfZmxhZyci
KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFBhcnNlRGVhdGhUZXN0LCBUZXN0SW52
YWxpZE5vbkJvb2xGbGFnRm9ybWF0KSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7Cisg
ICAgICAidGVzdGJpbiIsCisgICAgICAiLS1ub3N0cmluZ19mbGFnIiwKKyAgfTsKKyAgRVhQRUNU
X0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3MxKSwKKyAgICAgICAgICAgICAgICJOZWdhdGl2ZSBm
b3JtIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGZsYWcgJ3N0cmluZ19mbGFnJyIpOworCisgIGNvbnN0
IGNoYXIqIGluX2FyZ3MyW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1pbnRfZmxh
ZyIsCisgIH07CisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9hcmdzMiksCisgICAgICAg
ICAgICAgICAiTWlzc2luZyB0aGUgdmFsdWUgZm9yIHRoZSBmbGFnICdpbnRfZmxhZyciKTsKK30K
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFBhcnNlRGVhdGhUZXN0LCBUZXN0SW52YWxpZFVE
VEZsYWdGb3JtYXQpIHsKKyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0
YmluIiwKKyAgICAgICItLXVkdF9mbGFnPTEiLAorICB9OworICBFWFBFQ1RfREVBVEgoSW52b2tl
UGFyc2UoaW5fYXJnczEpLAorICAgICAgICAgICAgICAgIklsbGVnYWwgdmFsdWUgJzEnIHNwZWNp
ZmllZCBmb3IgZmxhZyAndWR0X2ZsYWcnOyBVc2UgdmFsdWVzIEEsICIKKyAgICAgICAgICAgICAg
ICJBQUEgaW5zdGVhZCIpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MyW10gPSB7CisgICAgICAi
dGVzdGJpbiIsCisgICAgICAiLS11ZHRfZmxhZyIsCisgICAgICAiQUEiLAorICB9OworICBFWFBF
Q1RfREVBVEgoSW52b2tlUGFyc2UoaW5fYXJnczIpLAorICAgICAgICAgICAgICAgIklsbGVnYWwg
dmFsdWUgJ0FBJyBzcGVjaWZpZWQgZm9yIGZsYWcgJ3VkdF9mbGFnJzsgVXNlIHZhbHVlcyAiCisg
ICAgICAgICAgICAgICAiQSwgQUFBIGluc3RlYWQiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
VEVTVF9GKFBhcnNlVGVzdCwgVGVzdExlZ2FjeUZsYWdzKSB7CisgIGNvbnN0IGNoYXIqIGluX2Fy
Z3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1sZWdhY3lfaW50PTExIiwKKyAg
fTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAxLCAxLjEsICJhIiwgZmFsc2UpOworCisgIGNvbnN0
IGNoYXIqIGluX2FyZ3MyW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1sZWdhY3lf
Ym9vbCIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMiwgMSwgMS4xLCAiYSIsIGZhbHNlKTsK
KworICBjb25zdCBjaGFyKiBpbl9hcmdzM1tdID0geworICAgICAgInRlc3RiaW4iLCAgICAgICAi
LS1sZWdhY3lfaW50IiwgIjIyIiwgICAgICAgICAgICItLWludF9mbGFnPTIiLAorICAgICAgIi0t
bGVnYWN5X2Jvb2wiLCAidHJ1ZSIsICAgICAgICAgIi0tbGVnYWN5X3N0ciIsICItLXN0cmluZ19m
bGFnPXF3ZSIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMywgMiwgMS4xLCAiYSIsIGZhbHNl
LCAxKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdFNpbXBs
ZVZhbGlkRmxhZ2ZpbGUpIHsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZzsKKworICBjb25z
dCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgR2V0RmxhZ2Zp
bGVGbGFnKHt7InBhcnNlX3Rlc3QuZmYxIiwgYWJzbDo6TWFrZUNvbnN0U3BhbihmZjFfZGF0YSl9
fSwKKyAgICAgICAgICAgICAgICAgICAgICAmZmxhZ2ZpbGVfZmxhZyksCisgIH07CisgIFRlc3RQ
YXJzZShpbl9hcmdzMSwgLTEsIDAuMSwgInEydzIgICIsIHRydWUpOworCisgIGNvbnN0IGNoYXIq
IGluX2FyZ3MyW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICBHZXRGbGFnZmlsZUZsYWco
e3sicGFyc2VfdGVzdC5mZjIiLCBhYnNsOjpNYWtlQ29uc3RTcGFuKGZmMl9kYXRhKX19LAorICAg
ICAgICAgICAgICAgICAgICAgICZmbGFnZmlsZV9mbGFnKSwKKyAgfTsKKyAgVGVzdFBhcnNlKGlu
X2FyZ3MyLCAxMDAsIDAuMSwgInEydzIgICIsIGZhbHNlKTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdFZhbGlkTXVsdGlGbGFnZmlsZSkgeworICBzdGQ6OnN0
cmluZyBmbGFnZmlsZV9mbGFnOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAg
ICAidGVzdGJpbiIsCisgICAgICBHZXRGbGFnZmlsZUZsYWcoe3sicGFyc2VfdGVzdC5mZjIiLCBh
YnNsOjpNYWtlQ29uc3RTcGFuKGZmMl9kYXRhKX0sCisgICAgICAgICAgICAgICAgICAgICAgIHsi
cGFyc2VfdGVzdC5mZjEiLCBhYnNsOjpNYWtlQ29uc3RTcGFuKGZmMV9kYXRhKX19LAorICAgICAg
ICAgICAgICAgICAgICAgICZmbGFnZmlsZV9mbGFnKSwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2Fy
Z3MxLCAtMSwgMC4xLCAicTJ3MiAgIiwgdHJ1ZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
U1RfRihQYXJzZVRlc3QsIFRlc3RGbGFnZmlsZU1peGVkV2l0aFJlZ3VsYXJGbGFncykgeworICBz
dGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7
CisgICAgICAidGVzdGJpbiIsICItLWludF9mbGFnPTMiLAorICAgICAgR2V0RmxhZ2ZpbGVGbGFn
KHt7InBhcnNlX3Rlc3QuZmYxIiwgYWJzbDo6TWFrZUNvbnN0U3BhbihmZjFfZGF0YSl9fSwKKyAg
ICAgICAgICAgICAgICAgICAgICAmZmxhZ2ZpbGVfZmxhZyksCisgICAgICAiLWRvdWJsZV9mbGFn
PTAuMiJ9OworICBUZXN0UGFyc2UoaW5fYXJnczEsIC0xLCAwLjIsICJxMncyICAiLCB0cnVlKTsK
K30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdEZsYWdmaWxlSW5G
bGFnZmlsZSkgeworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnOworCisgIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBjb25zdCBmZjNfZGF0YVtdID0geworICAgICAgIi0tZmxhZ2ZpbGU9JDAvcGFy
c2VfdGVzdC5mZjEiLAorICAgICAgIi0tZmxhZ2ZpbGU9JDAvcGFyc2VfdGVzdC5mZjIiLAorICB9
OworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAg
ICBHZXRGbGFnZmlsZUZsYWcoe3sicGFyc2VfdGVzdC5mZjMiLCBhYnNsOjpNYWtlQ29uc3RTcGFu
KGZmM19kYXRhKX19LAorICAgICAgICAgICAgICAgICAgICAgICZmbGFnZmlsZV9mbGFnKSwKKyAg
fTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAxMDAsIDAuMSwgInEydzIgICIsIGZhbHNlKTsKK30K
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFBhcnNlRGVhdGhUZXN0LCBUZXN0SW52YWxpZEZs
YWdmaWxlcykgeworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnOworCisgIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBjb25zdCBmZjRfZGF0YVtdID0geworICAgICItLXVua25vd25fZmxhZz0xMCIK
KyAgfTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAor
ICAgICAgR2V0RmxhZ2ZpbGVGbGFnKHt7InBhcnNlX3Rlc3QuZmY0IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFic2w6Ok1ha2VDb25zdFNwYW4oZmY0X2RhdGEpfX0sICZmbGFnZmlsZV9mbGFn
KSwKKyAgfTsKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3MxKSwKKyAgICAgICAg
ICAgICAgICJVbmtub3duIGNvbW1hbmQgbGluZSBmbGFnICd1bmtub3duX2ZsYWcnIik7CisKKyAg
Y29uc3RleHByIGNvbnN0IGNoYXIqIGNvbnN0IGZmNV9kYXRhW10gPSB7CisgICAgIi0taW50X2Zs
YWcgMTAiLAorICB9OworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MyW10gPSB7CisgICAgICAidGVz
dGJpbiIsCisgICAgICBHZXRGbGFnZmlsZUZsYWcoe3sicGFyc2VfdGVzdC5mZjUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgYWJzbDo6TWFrZUNvbnN0U3BhbihmZjVfZGF0YSl9fSwgJmZsYWdm
aWxlX2ZsYWcpLAorICB9OworICBFWFBFQ1RfREVBVEgoSW52b2tlUGFyc2UoaW5fYXJnczIpLAor
ICAgICAgICAgICAgICAgIlVua25vd24gY29tbWFuZCBsaW5lIGZsYWcgJ2ludF9mbGFnIDEwJyIp
OworCisgIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjb25zdCBmZjZfZGF0YVtdID0geworICAgICAg
Ii0taW50X2ZsYWc9MTAiLCAiLS0iLCAiYXJnMSIsICJhcmcyIiwgImFyZzMiLAorICB9OworCisg
IGNvbnN0IGNoYXIqIGluX2FyZ3MzW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICBHZXRG
bGFnZmlsZUZsYWcoe3sicGFyc2VfdGVzdC5mZjYiLCBhYnNsOjpNYWtlQ29uc3RTcGFuKGZmNl9k
YXRhKX19LAorICAgICAgICAgICAgICAgICAgICAgICZmbGFnZmlsZV9mbGFnKSwKKyAgfTsKKyAg
RVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3MzKSwKKyAgICAgICAgICAgICAgICJGbGFn
ZmlsZSBjYW4ndCBjb250YWluIHBvc2l0aW9uIGFyZ3VtZW50cyBvciAtLSIpOworCisgIGNvbnN0
IGNoYXIqIGluX2FyZ3M0W10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1mbGFnZmls
ZT1pbnZhbGlkX2ZsYWdfZmlsZSIsCisgIH07CisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShp
bl9hcmdzNCksICJDYW4ndCBvcGVuIGZsYWdmaWxlIGludmFsaWRfZmxhZ19maWxlIik7CisKKyAg
Y29uc3RleHByIGNvbnN0IGNoYXIqIGNvbnN0IGZmN19kYXRhW10gPSB7CisgICAgICAiLS1pbnRf
ZmxhZz0xMCIsCisgICAgICAiKmJpbioiLAorICAgICAgIi0tc3RyX2ZsYWc9YXFzdyIsCisgIH07
CisKKyAgY29uc3QgY2hhciogaW5fYXJnczVbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAg
IEdldEZsYWdmaWxlRmxhZyh7eyJwYXJzZV90ZXN0LmZmNyIsIGFic2w6Ok1ha2VDb25zdFNwYW4o
ZmY3X2RhdGEpfX0sCisgICAgICAgICAgICAgICAgICAgICAgJmZsYWdmaWxlX2ZsYWcpLAorICB9
OworICBFWFBFQ1RfREVBVEgoSW52b2tlUGFyc2UoaW5fYXJnczUpLAorICAgICAgICAgICAgICAg
IlVuZXhwZWN0ZWQgbGluZSBpbiB0aGUgZmxhZ2ZpbGUgLio6IFxcKmJpblxcKiIpOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0UmVhZGluZ1JlcXVpcmVkRmxh
Z3NGcm9tRW52KSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7InRlc3RiaW4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICItLWZyb21lbnY9aW50X2ZsYWcsYm9vbF9mbGFnLHN0
cmluZ19mbGFnIn07CisKKyAgU2NvcGVkU2V0RW52IHNldF9pbnRfZmxhZygiRkxBR1NfaW50X2Zs
YWciLCAiMzMiKTsKKyAgU2NvcGVkU2V0RW52IHNldF9ib29sX2ZsYWcoIkZMQUdTX2Jvb2xfZmxh
ZyIsICJUcnVlIik7CisgIFNjb3BlZFNldEVudiBzZXRfc3RyaW5nX2ZsYWcoIkZMQUdTX3N0cmlu
Z19mbGFnIiwgIkFRMTIiKTsKKworICBUZXN0UGFyc2UoaW5fYXJnczEsIDMzLCAxLjEsICJBUTEy
IiwgdHJ1ZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZURlYXRoVGVzdCwg
VGVzdFJlYWRpbmdVbnNldFJlcXVpcmVkRmxhZ3NGcm9tRW52KSB7CisgIGNvbnN0IGNoYXIqIGlu
X2FyZ3MxW10gPSB7InRlc3RiaW4iLCAiLS1mcm9tZW52PWludF9mbGFnIn07CisKKyAgRVhQRUNU
X0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3MxKSwKKyAgICAgICAgICAgICAgICJGTEFHU19pbnRf
ZmxhZyBub3QgZm91bmQgaW4gZW52aXJvbm1lbnQiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
VEVTVF9GKFBhcnNlRGVhdGhUZXN0LCBUZXN0UmVjdXJzaXZlRmxhZ3NGcm9tRW52KSB7CisgIGNv
bnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7InRlc3RiaW4iLCAiLS1mcm9tZW52PXRyeWZyb21lbnYi
fTsKKworICBTY29wZWRTZXRFbnYgc2V0X3RyeWZyb21lbnYoIkZMQUdTX3RyeWZyb21lbnYiLCAi
aW50X2ZsYWciKTsKKworICBFWFBFQ1RfREVBVEgoSW52b2tlUGFyc2UoaW5fYXJnczEpLCAiSW5m
aW5pdGUgcmVjdXJzaW9uIG9uIGZsYWcgdHJ5ZnJvbWVudiIpOworfQorCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0UmVhZGluZ09wdGlvbmFsRmxhZ3NGcm9tRW52KSB7
CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsICItLXRyeWZy
b21lbnY9aW50X2ZsYWcsYm9vbF9mbGFnLHN0cmluZ19mbGFnLG90aGVyX2ZsYWcifTsKKworICBT
Y29wZWRTZXRFbnYgc2V0X2ludF9mbGFnKCJGTEFHU19pbnRfZmxhZyIsICIxNyIpOworICBTY29w
ZWRTZXRFbnYgc2V0X2Jvb2xfZmxhZygiRkxBR1NfYm9vbF9mbGFnIiwgIlkiKTsKKworICBUZXN0
UGFyc2UoaW5fYXJnczEsIDE3LCAxLjEsICJhIiwgdHJ1ZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RSZWFkaW5nRmxhZ3NGcm9tRW52TW94ZWRXaXRoUmVn
dWxhckZsYWdzKSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJp
biIsCisgICAgICAiLS1ib29sX2ZsYWc9VCIsCisgICAgICAiLS10cnlmcm9tZW52PWludF9mbGFn
LGJvb2xfZmxhZyIsCisgICAgICAiLS1pbnRfZmxhZz0tMjEiLAorICB9OworCisgIFNjb3BlZFNl
dEVudiBzZXRfaW50X2ZsYWcoIkZMQUdTX2ludF9mbGFnIiwgIi0xNSIpOworICBTY29wZWRTZXRF
bnYgc2V0X2Jvb2xfZmxhZygiRkxBR1NfYm9vbF9mbGFnIiwgIkYiKTsKKworICBUZXN0UGFyc2Uo
aW5fYXJnczEsIC0yMSwgMS4xLCAiYSIsIGZhbHNlKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
VEVTVF9GKFBhcnNlVGVzdCwgVGVzdEtlZXBQYXJzZWRBcmdzKSB7CisgIGNvbnN0IGNoYXIqIGlu
X2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsICAgICAgICAiYXJnMSIsICItLWJvb2xfZmxh
ZyIsCisgICAgICAiLS1pbnRfZmxhZz0yMTEiLCAiYXJnMiIsICItLWRvdWJsZV9mbGFnPTEuMSIs
CisgICAgICAiLS1zdHJpbmdfZmxhZyIsICAiYXNkIiwgICItLSIsCisgICAgICAiYXJnMyIsICAg
ICAgICAgICAiYXJnNCIsCisgIH07CisKKyAgYXV0byBvdXRfYXJnczEgPSBJbnZva2VQYXJzZShp
bl9hcmdzMSk7CisKKyAgRVhQRUNUX1RIQVQoCisgICAgICBvdXRfYXJnczEsCisgICAgICBFbGVt
ZW50c0FyZUFycmF5KHthYnNsOjpzdHJpbmdfdmlldygidGVzdGJpbiIpLCBhYnNsOjpzdHJpbmdf
dmlldygiYXJnMSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXco
ImFyZzIiKSwgYWJzbDo6c3RyaW5nX3ZpZXcoImFyZzMiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFic2w6OnN0cmluZ192aWV3KCJhcmc0Iil9KSk7CisKKyAgYXV0byBvdXRfYXJnczIgPSBm
bGFnczo6UGFyc2VDb21tYW5kTGluZUltcGwoCisgICAgICAxMSwgY29uc3RfY2FzdDxjaGFyKio+
KGluX2FyZ3MxKSwgZmxhZ3M6OkFyZ3ZMaXN0QWN0aW9uOjprS2VlcFBhcnNlZEFyZ3MsCisgICAg
ICBmbGFnczo6VXNhZ2VGbGFnc0FjdGlvbjo6a0hhbmRsZVVzYWdlLAorICAgICAgZmxhZ3M6Ok9u
VW5kZWZpbmVkRmxhZzo6a0Fib3J0SWZVbmRlZmluZWQpOworCisgIEVYUEVDVF9USEFUKAorICAg
ICAgb3V0X2FyZ3MyLAorICAgICAgRWxlbWVudHNBcmVBcnJheSh7YWJzbDo6c3RyaW5nX3ZpZXco
InRlc3RiaW4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3KCIt
LWJvb2xfZmxhZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXco
Ii0taW50X2ZsYWc9MjExIiksCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpzdHJpbmdf
dmlldygiLS1kb3VibGVfZmxhZz0xLjEiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
OnN0cmluZ192aWV3KCItLXN0cmluZ19mbGFnIiksCisgICAgICAgICAgICAgICAgICAgICAgICBh
YnNsOjpzdHJpbmdfdmlldygiYXNkIiksIGFic2w6OnN0cmluZ192aWV3KCItLSIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoImFyZzEiKSwgYWJzbDo6c3RyaW5n
X3ZpZXcoImFyZzIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3
KCJhcmczIiksIGFic2w6OnN0cmluZ192aWV3KCJhcmc0Iil9KSk7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RJZ25vcmVVbmRlZmluZWRGbGFncykgeworICBj
b25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgImFyZzEi
LAorICAgICAgIi0tdW5kZWZfZmxhZz1hYSIsCisgICAgICAiLS1pbnRfZmxhZz0yMSIsCisgIH07
CisKKyAgYXV0byBvdXRfYXJnczEgPSBmbGFnczo6UGFyc2VDb21tYW5kTGluZUltcGwoCisgICAg
ICA0LCBjb25zdF9jYXN0PGNoYXIqKj4oaW5fYXJnczEpLCBmbGFnczo6QXJndkxpc3RBY3Rpb246
OmtSZW1vdmVQYXJzZWRBcmdzLAorICAgICAgZmxhZ3M6OlVzYWdlRmxhZ3NBY3Rpb246OmtIYW5k
bGVVc2FnZSwKKyAgICAgIGZsYWdzOjpPblVuZGVmaW5lZEZsYWc6OmtJZ25vcmVVbmRlZmluZWQp
OworCisgIEVYUEVDVF9USEFUKG91dF9hcmdzMSwgRWxlbWVudHNBcmVBcnJheSh7YWJzbDo6c3Ry
aW5nX3ZpZXcoInRlc3RiaW4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjpzdHJpbmdfdmlldygiYXJnMSIpfSkpOworCisgIEVYUEVDVF9FUShhYnNs
OjpHZXRGbGFnKEZMQUdTX2ludF9mbGFnKSwgMjEpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3My
W10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiYXJnMSIsCisgICAgICAiLS11bmRlZl9m
bGFnPWFhIiwKKyAgICAgICItLXN0cmluZ19mbGFnPUFBIiwKKyAgfTsKKworICBhdXRvIG91dF9h
cmdzMiA9IGZsYWdzOjpQYXJzZUNvbW1hbmRMaW5lSW1wbCgKKyAgICAgIDQsIGNvbnN0X2Nhc3Q8
Y2hhcioqPihpbl9hcmdzMiksIGZsYWdzOjpBcmd2TGlzdEFjdGlvbjo6a0tlZXBQYXJzZWRBcmdz
LAorICAgICAgZmxhZ3M6OlVzYWdlRmxhZ3NBY3Rpb246OmtIYW5kbGVVc2FnZSwKKyAgICAgIGZs
YWdzOjpPblVuZGVmaW5lZEZsYWc6OmtJZ25vcmVVbmRlZmluZWQpOworCisgIEVYUEVDVF9USEFU
KAorICAgICAgb3V0X2FyZ3MyLAorICAgICAgRWxlbWVudHNBcmVBcnJheSgKKyAgICAgICAgICB7
YWJzbDo6c3RyaW5nX3ZpZXcoInRlc3RiaW4iKSwgYWJzbDo6c3RyaW5nX3ZpZXcoIi0tdW5kZWZf
ZmxhZz1hYSIpLAorICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldygiLS1zdHJpbmdfZmxhZz1B
QSIpLCBhYnNsOjpzdHJpbmdfdmlldygiYXJnMSIpfSkpOworCisgIEVYUEVDVF9FUShhYnNsOjpH
ZXRGbGFnKEZMQUdTX3N0cmluZ19mbGFnKSwgIkFBIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K1RFU1RfRihQYXJzZURlYXRoVGVzdCwgVGVzdEhlbHBGbGFnSGFuZGxpbmcpIHsKKyAgY29uc3Qg
Y2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLWhlbHAiLAor
ICB9OworCisgIEVYUEVDVF9FWElUKEludm9rZVBhcnNlKGluX2FyZ3MxKSwgdGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoMSksICIiKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAg
ICAgInRlc3RiaW4iLAorICAgICAgIi0taGVscCIsCisgICAgICAiLS1pbnRfZmxhZz0zIiwKKyAg
fTsKKworICBhdXRvIG91dF9hcmdzMiA9IGZsYWdzOjpQYXJzZUNvbW1hbmRMaW5lSW1wbCgKKyAg
ICAgIDMsIGNvbnN0X2Nhc3Q8Y2hhcioqPihpbl9hcmdzMiksIGZsYWdzOjpBcmd2TGlzdEFjdGlv
bjo6a1JlbW92ZVBhcnNlZEFyZ3MsCisgICAgICBmbGFnczo6VXNhZ2VGbGFnc0FjdGlvbjo6a0ln
bm9yZVVzYWdlLAorICAgICAgZmxhZ3M6Ok9uVW5kZWZpbmVkRmxhZzo6a0Fib3J0SWZVbmRlZmlu
ZWQpOworCisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2ludF9mbGFnKSwgMyk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2UuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy91c2FnZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmY3YTNkYWIzOWNmZmE1NjFmMTVkZjUw
MTFlMTkxZWZhYmE1ZjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2UuY2MK
QEAgLTAsMCArMSw1NiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorI2luY2x1ZGUgImFic2wvZmxhZ3MvdXNhZ2UuaCIKKworI2luY2x1ZGUgPHN0cmluZz4K
KworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvdXNhZ2UuaCIKKyNpbmNsdWRlICJhYnNs
L3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
ZmxhZ3NfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKK0FCU0xfQ09OU1RfSU5JVCBhYnNsOjpNdXRl
eCB1c2FnZV9tZXNzYWdlX2d1YXJkKGFic2w6OmtDb25zdEluaXQpOworQUJTTF9DT05TVF9JTklU
IHN0ZDo6c3RyaW5nKiBwcm9ncmFtX3VzYWdlX21lc3NhZ2UKKyAgICBBQlNMX0dVQVJERURfQlko
dXNhZ2VfbWVzc2FnZV9ndWFyZCkgPSBudWxscHRyOworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBu
YW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFNldHMgdGhlICJ1
c2FnZSIgbWVzc2FnZSB0byBiZSB1c2VkIGJ5IGhlbHAgcmVwb3J0aW5nIHJvdXRpbmVzLgordm9p
ZCBTZXRQcm9ncmFtVXNhZ2VNZXNzYWdlKGFic2w6OnN0cmluZ192aWV3IG5ld191c2FnZV9tZXNz
YWdlKSB7CisgIGFic2w6Ok11dGV4TG9jayBsKCZmbGFnc19pbnRlcm5hbDo6dXNhZ2VfbWVzc2Fn
ZV9ndWFyZCk7CisKKyAgaWYgKGZsYWdzX2ludGVybmFsOjpwcm9ncmFtX3VzYWdlX21lc3NhZ2Ug
IT0gbnVsbHB0cikgeworICAgIEFCU0xfSU5URVJOQUxfTE9HKEZBVEFMLCAiU2V0UHJvZ3JhbVVz
YWdlTWVzc2FnZSgpIGNhbGxlZCB0d2ljZS4iKTsKKyAgICBzdGQ6OmV4aXQoMSk7CisgIH0KKwor
ICBmbGFnc19pbnRlcm5hbDo6cHJvZ3JhbV91c2FnZV9tZXNzYWdlID0gbmV3IHN0ZDo6c3RyaW5n
KG5ld191c2FnZV9tZXNzYWdlKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFJldHVybnMgdGhl
IHVzYWdlIG1lc3NhZ2Ugc2V0IGJ5IFNldFByb2dyYW1Vc2FnZU1lc3NhZ2UoKS4KKy8vIE5vdGU6
IFdlIGFibGUgdG8gcmV0dXJuIHN0cmluZ192aWV3IGhlcmUgb25seSBiZWNhdXNlIGNhbGxpbmcK
Ky8vIFNldFByb2dyYW1Vc2FnZU1lc3NhZ2UgdHdpY2UgaXMgcHJvaGliaXRlZC4KK2Fic2w6OnN0
cmluZ192aWV3IFByb2dyYW1Vc2FnZU1lc3NhZ2UoKSB7CisgIGFic2w6Ok11dGV4TG9jayBsKCZm
bGFnc19pbnRlcm5hbDo6dXNhZ2VfbWVzc2FnZV9ndWFyZCk7CisKKyAgcmV0dXJuIGZsYWdzX2lu
dGVybmFsOjpwcm9ncmFtX3VzYWdlX21lc3NhZ2UgIT0gbnVsbHB0cgorICAgICAgICAgICAgID8g
YWJzbDo6c3RyaW5nX3ZpZXcoKmZsYWdzX2ludGVybmFsOjpwcm9ncmFtX3VzYWdlX21lc3NhZ2Up
CisgICAgICAgICAgICAgOiAiV2FybmluZzogU2V0UHJvZ3JhbVVzYWdlTWVzc2FnZSgpIG5ldmVy
IGNhbGxlZCI7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9m
bGFncy91c2FnZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTEyMTA3MTM3
YWQ0NzFjOGEwMzJhZDgxNDM2ZTEzNmVhN2IyZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvdXNhZ2UuaApAQCAtMCwwICsxLDQwIEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRo
ZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfRkxBR1NfVVNBR0VfSF8KKyNkZWZp
bmUgQUJTTF9GTEFHU19VU0FHRV9IXworCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192
aWV3LmgiCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBVc2FnZSByZXBvcnRpbmcgaW50ZXJmYWNlcwor
CituYW1lc3BhY2UgYWJzbCB7CisKKy8vIFNldHMgdGhlICJ1c2FnZSIgbWVzc2FnZSB0byBiZSB1
c2VkIGJ5IGhlbHAgcmVwb3J0aW5nIHJvdXRpbmVzLgorLy8gRm9yIGV4YW1wbGU6CisvLyAgYWJz
bDo6U2V0UHJvZ3JhbVVzYWdlTWVzc2FnZSgKKy8vICAgICAgYWJzbDo6U3RyQ2F0KCJUaGlzIHBy
b2dyYW0gZG9lcyBub3RoaW5nLiAgU2FtcGxlIHVzYWdlOlxuIiwgYXJndlswXSwKKy8vICAgICAg
ICAgICAgICAgICAgICIgPHVzZWxlc3NhcmcxPiA8dXNlbGVzc2FyZzI+IikpOworLy8gRG8gbm90
IGluY2x1ZGUgY29tbWFuZGxpbmUgZmxhZ3MgaW4gdGhlIHVzYWdlOiB3ZSBkbyB0aGF0IGZvciB5
b3UhCisvLyBOb3RlOiBDYWxsaW5nIFNldFByb2dyYW1Vc2FnZU1lc3NhZ2UgdHdpY2Ugd2lsbCB0
cmlnZ2VyIGEgY2FsbCB0byBzdGQ6OmV4aXQuCit2b2lkIFNldFByb2dyYW1Vc2FnZU1lc3NhZ2Uo
YWJzbDo6c3RyaW5nX3ZpZXcgbmV3X3VzYWdlX21lc3NhZ2UpOworCisvLyBSZXR1cm5zIHRoZSB1
c2FnZSBtZXNzYWdlIHNldCBieSBTZXRQcm9ncmFtVXNhZ2VNZXNzYWdlKCkuCithYnNsOjpzdHJp
bmdfdmlldyBQcm9ncmFtVXNhZ2VNZXNzYWdlKCk7CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisK
KyNlbmRpZiAgLy8gQUJTTF9GTEFHU19VU0FHRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3Mv
dXNhZ2VfY29uZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2VfY29uZmlnLmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY5N2JmMzAwZGRlNzM4MDgzZThmZDlmZGMwNzZlODY4MTdhNTk0NjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9mbGFncy91c2FnZV9jb25maWcuY2MKQEAgLTAsMCArMSwxNTIgQEAKKy8vCisv
LyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNs
L2ZsYWdzL3VzYWdlX2NvbmZpZy5oIgorCisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8
bWVtb3J5PgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJh
YnNsL2ZsYWdzL2ludGVybmFsL3BhdGhfdXRpbC5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50
ZXJuYWwvcHJvZ3JhbV9uYW1lLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIK
KyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaXAuaCIKKyNpbmNsdWRlICJhYnNsL3N5bmNocm9u
aXphdGlvbi9tdXRleC5oIgorCitleHRlcm4gIkMiIHsKKworLy8gQWRkaXRpb25hbCByZXBvcnQg
b2YgZmF0YWwgdXNhZ2UgZXJyb3IgbWVzc2FnZSBiZWZvcmUgd2Ugc3RkOjpleGl0LiBFcnJvciBp
cworLy8gZmF0YWwgaWYgaXNfZmF0YWwgYXJndW1lbnQgdG8gUmVwb3J0VXNhZ2VFcnJvciBpcyB0
cnVlLgorQUJTTF9BVFRSSUJVVEVfV0VBSyB2b2lkIEFic2xJbnRlcm5hbFJlcG9ydEZhdGFsVXNh
Z2VFcnJvcihhYnNsOjpzdHJpbmdfdmlldykge30KKworfSAgLy8gZXh0ZXJuICJDIgorCituYW1l
c3BhY2UgYWJzbCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworCituYW1lc3BhY2Ugewor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gUmV0dXJucyB0cnVlIGlmIGZsYWdzIGRlZmluZWQgaW4gdGhl
IGZpbGVuYW1lIHNob3VsZCBiZSByZXBvcnRlZCB3aXRoCisvLyAtaGVscHNob3J0IGZsYWcuCisK
K2Jvb2wgQ29udGFpbnNIZWxwc2hvcnRGbGFncyhhYnNsOjpzdHJpbmdfdmlldyBmaWxlbmFtZSkg
eworICAvLyBCeSBkZWZhdWx0IHdlIG9ubHkgd2FudCBmbGFncyBpbiBiaW5hcnkncyBtYWluLiBX
ZSBleHBlY3QgdGhlIG1haW4KKyAgLy8gcm91dGluZSB0byByZXNpZGUgaW4gPHByb2dyYW0+LmNj
IG9yIDxwcm9ncmFtPi1tYWluLmNjIG9yCisgIC8vIDxwcm9ncmFtPl9tYWluLmNjLCB3aGVyZSB0
aGUgPHByb2dyYW0+IGlzIHRoZSBuYW1lIG9mIHRoZSBiaW5hcnkuCisgIGF1dG8gc3VmZml4ID0g
ZmxhZ3NfaW50ZXJuYWw6OkJhc2VuYW1lKGZpbGVuYW1lKTsKKyAgaWYgKCFhYnNsOjpDb25zdW1l
UHJlZml4KCZzdWZmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc19pbnRlcm5h
bDo6U2hvcnRQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSkpCisgICAgcmV0dXJuIGZhbHNlOworICBy
ZXR1cm4gYWJzbDo6U3RhcnRzV2l0aChzdWZmaXgsICIuIikgfHwgYWJzbDo6U3RhcnRzV2l0aChz
dWZmaXgsICItbWFpbi4iKSB8fAorICAgICAgICAgYWJzbDo6U3RhcnRzV2l0aChzdWZmaXgsICJf
bWFpbi4iKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFJldHVybnMgdHJ1ZSBpZiBmbGFncyBk
ZWZpbmVkIGluIHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcmVwb3J0ZWQgd2l0aAorLy8gLWhlbHBw
YWNrYWdlIGZsYWcuCisKK2Jvb2wgQ29udGFpbnNIZWxwcGFja2FnZUZsYWdzKGFic2w6OnN0cmlu
Z192aWV3IGZpbGVuYW1lKSB7CisgIC8vIFRPRE8ocm9nZWVmZik6IGltcGxlbWVudCBwcm9wZXJs
eSB3aGVuIHJlZ2lzdHJ5IGlzIGF2YWlsYWJsZS4KKyAgcmV0dXJuIENvbnRhaW5zSGVscHNob3J0
RmxhZ3MoZmlsZW5hbWUpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gR2VuZXJhdGVzIHByb2dy
YW0gdmVyc2lvbiBpbmZvcm1hdGlvbiBpbnRvIHN1cHBsaWVkIG91dHB1dC4KKworc3RkOjpzdHJp
bmcgVmVyc2lvblN0cmluZygpIHsKKyAgc3RkOjpzdHJpbmcgdmVyc2lvbl9zdHIoZmxhZ3NfaW50
ZXJuYWw6OlNob3J0UHJvZ3JhbUludm9jYXRpb25OYW1lKCkpOworCisgIHZlcnNpb25fc3RyICs9
ICJcbiI7CisKKyNpZiAhZGVmaW5lZChOREVCVUcpCisgIHZlcnNpb25fc3RyICs9ICJEZWJ1ZyBi
dWlsZCAoTkRFQlVHIG5vdCAjZGVmaW5lZClcbiI7CisjZW5kaWYKKworICByZXR1cm4gdmVyc2lv
bl9zdHI7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBOb3JtYWxpemVzIHRoZSBmaWxlbmFtZSBz
cGVjaWZpYyB0byB0aGUgYnVpbGQgc3lzdGVtL2ZpbGVzeXN0ZW0gdXNlZC4KKworc3RkOjpzdHJp
bmcgTm9ybWFsaXplRmlsZW5hbWUoYWJzbDo6c3RyaW5nX3ZpZXcgZmlsZW5hbWUpIHsKKyAgLy8g
U2tpcCBhbnkgbGVhZGluZyBzbGFzaGVzCisgIGF1dG8gcG9zID0gZmlsZW5hbWUuZmluZF9maXJz
dF9ub3Rfb2YoIlxcLyIpOworICBpZiAocG9zID09IGFic2w6OnN0cmluZ192aWV3OjpucG9zKSBy
ZXR1cm4gIiI7CisKKyAgZmlsZW5hbWUucmVtb3ZlX3ByZWZpeChwb3MpOworICByZXR1cm4gc3Rk
OjpzdHJpbmcoZmlsZW5hbWUpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBQlNMX0NPTlNUX0lO
SVQgYWJzbDo6TXV0ZXggY3VzdG9tX3VzYWdlX2NvbmZpZ19ndWFyZChhYnNsOjprQ29uc3RJbml0
KTsKK0FCU0xfQ09OU1RfSU5JVCBGbGFnc1VzYWdlQ29uZmlnKiBjdXN0b21fdXNhZ2VfY29uZmln
CisgICAgQUJTTF9HVUFSREVEX0JZKGN1c3RvbV91c2FnZV9jb25maWdfZ3VhcmQpID0gbnVsbHB0
cjsKKworfSAgLy8gbmFtZXNwYWNlCisKK0ZsYWdzVXNhZ2VDb25maWcgR2V0VXNhZ2VDb25maWco
KSB7CisgIGFic2w6Ok11dGV4TG9jayBsKCZjdXN0b21fdXNhZ2VfY29uZmlnX2d1YXJkKTsKKwor
ICBpZiAoY3VzdG9tX3VzYWdlX2NvbmZpZykgcmV0dXJuICpjdXN0b21fdXNhZ2VfY29uZmlnOwor
CisgIEZsYWdzVXNhZ2VDb25maWcgZGVmYXVsdF9jb25maWc7CisgIGRlZmF1bHRfY29uZmlnLmNv
bnRhaW5zX2hlbHBzaG9ydF9mbGFncyA9ICZDb250YWluc0hlbHBzaG9ydEZsYWdzOworICBkZWZh
dWx0X2NvbmZpZy5jb250YWluc19oZWxwX2ZsYWdzID0gJkNvbnRhaW5zSGVscHBhY2thZ2VGbGFn
czsKKyAgZGVmYXVsdF9jb25maWcuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MgPSAmQ29udGFp
bnNIZWxwcGFja2FnZUZsYWdzOworICBkZWZhdWx0X2NvbmZpZy52ZXJzaW9uX3N0cmluZyA9ICZW
ZXJzaW9uU3RyaW5nOworICBkZWZhdWx0X2NvbmZpZy5ub3JtYWxpemVfZmlsZW5hbWUgPSAmTm9y
bWFsaXplRmlsZW5hbWU7CisKKyAgcmV0dXJuIGRlZmF1bHRfY29uZmlnOworfQorCit2b2lkIFJl
cG9ydFVzYWdlRXJyb3IoYWJzbDo6c3RyaW5nX3ZpZXcgbXNnLCBib29sIGlzX2ZhdGFsKSB7Cisg
IHN0ZDo6Y2VyciA8PCAiRVJST1I6ICIgPDwgbXNnIDw8IHN0ZDo6ZW5kbDsKKworICBpZiAoaXNf
ZmF0YWwpIHsKKyAgICBBYnNsSW50ZXJuYWxSZXBvcnRGYXRhbFVzYWdlRXJyb3IobXNnKTsKKyAg
fQorfQorCit9ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKKwordm9pZCBTZXRGbGFnc1Vz
YWdlQ29uZmlnKEZsYWdzVXNhZ2VDb25maWcgdXNhZ2VfY29uZmlnKSB7CisgIGFic2w6Ok11dGV4
TG9jayBsKCZmbGFnc19pbnRlcm5hbDo6Y3VzdG9tX3VzYWdlX2NvbmZpZ19ndWFyZCk7CisKKyAg
aWYgKCF1c2FnZV9jb25maWcuY29udGFpbnNfaGVscHNob3J0X2ZsYWdzKQorICAgIHVzYWdlX2Nv
bmZpZy5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MgPQorICAgICAgICBmbGFnc19pbnRlcm5hbDo6
Q29udGFpbnNIZWxwc2hvcnRGbGFnczsKKworICBpZiAoIXVzYWdlX2NvbmZpZy5jb250YWluc19o
ZWxwX2ZsYWdzKQorICAgIHVzYWdlX2NvbmZpZy5jb250YWluc19oZWxwX2ZsYWdzID0gZmxhZ3Nf
aW50ZXJuYWw6OkNvbnRhaW5zSGVscHBhY2thZ2VGbGFnczsKKworICBpZiAoIXVzYWdlX2NvbmZp
Zy5jb250YWluc19oZWxwcGFja2FnZV9mbGFncykKKyAgICB1c2FnZV9jb25maWcuY29udGFpbnNf
aGVscHBhY2thZ2VfZmxhZ3MgPQorICAgICAgICBmbGFnc19pbnRlcm5hbDo6Q29udGFpbnNIZWxw
cGFja2FnZUZsYWdzOworCisgIGlmICghdXNhZ2VfY29uZmlnLnZlcnNpb25fc3RyaW5nKQorICAg
IHVzYWdlX2NvbmZpZy52ZXJzaW9uX3N0cmluZyA9IGZsYWdzX2ludGVybmFsOjpWZXJzaW9uU3Ry
aW5nOworCisgIGlmICghdXNhZ2VfY29uZmlnLm5vcm1hbGl6ZV9maWxlbmFtZSkKKyAgICB1c2Fn
ZV9jb25maWcubm9ybWFsaXplX2ZpbGVuYW1lID0gZmxhZ3NfaW50ZXJuYWw6Ok5vcm1hbGl6ZUZp
bGVuYW1lOworCisgIGlmIChmbGFnc19pbnRlcm5hbDo6Y3VzdG9tX3VzYWdlX2NvbmZpZykKKyAg
ICAqZmxhZ3NfaW50ZXJuYWw6OmN1c3RvbV91c2FnZV9jb25maWcgPSB1c2FnZV9jb25maWc7Cisg
IGVsc2UKKyAgICBmbGFnc19pbnRlcm5hbDo6Y3VzdG9tX3VzYWdlX2NvbmZpZyA9IG5ldyBGbGFn
c1VzYWdlQ29uZmlnKHVzYWdlX2NvbmZpZyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9mbGFncy91c2FnZV9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3VzYWdl
X2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlNTAxNmE5ZWUzMGZmMTkyZTFlMTgzNjJlZTMyNjA3ZjI4
YzYwMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy91c2FnZV9jb25maWcuaApAQCAt
MCwwICsxLDEzMSBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogdXNhZ2VfY29uZmlnLmgK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBmaWxlIGRlZmluZXMgdGhlIG1h
aW4gdXNhZ2UgcmVwb3J0aW5nIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlcyBhbmQKKy8vIGRvY3Vt
ZW50cyBBYnNlaWwncyBzdXBwb3J0ZWQgYnVpbHQtaW4gdXNhZ2UgZmxhZ3MuIElmIHRoZXNlIGZs
YWdzIGFyZSBmb3VuZAorLy8gd2hlbiBwYXJzaW5nIGEgY29tbWFuZC1saW5lLCBBYnNlaWwgd2ls
bCBleGl0IHRoZSBwcm9ncmFtIGFuZCBkaXNwbGF5CisvLyBhcHByb3ByaWF0ZSBoZWxwIG1lc3Nh
Z2VzLgorI2lmbmRlZiBBQlNMX0ZMQUdTX1VTQUdFX0NPTkZJR19IXworI2RlZmluZSBBQlNMX0ZM
QUdTX1VTQUdFX0NPTkZJR19IXworCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxz
dHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIEJ1aWx0LWluIFVzYWdlIEZsYWdzCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIEFic2VpbCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGJ1aWx0LWlu
IHVzYWdlIGZsYWdzLiBXaGVuIHBhc3NlZCwgdGhlc2UgZmxhZ3MKKy8vIGV4aXQgdGhlIHByb2dy
YW0gYW5kIDoKKy8vCisvLyAqIC0taGVscAorLy8gICAgIFNob3dzIGhlbHAgb24gaW1wb3J0YW50
IGZsYWdzIGZvciB0aGlzIGJpbmFyeQorLy8gKiAtLWhlbHBmdWxsCisvLyAgICAgU2hvd3MgaGVs
cCBvbiBhbGwgZmxhZ3MKKy8vICogLS1oZWxwc2hvcnQKKy8vICAgICBTaG93cyBoZWxwIG9uIG9u
bHkgdGhlIG1haW4gbW9kdWxlIGZvciB0aGlzIHByb2dyYW0KKy8vICogLS1oZWxwcGFja2FnZQor
Ly8gICAgIFNob3dzIGhlbHAgb24gYWxsIG1vZHVsZXMgaW4gdGhlIG1haW4gcGFja2FnZQorLy8g
KiAtLXZlcnNpb24KKy8vICAgICBTaG93cyB0aGUgdmVyc2lvbiBhbmQgYnVpbGQgaW5mbyBmb3Ig
dGhpcyBiaW5hcnkgYW5kIGV4aXRzCisvLyAqIC0tb25seV9jaGVja19hcmdzCisvLyAgICAgRXhp
dHMgYWZ0ZXIgY2hlY2tpbmcgYWxsIGZsYWdzCisvLyAqIC0taGVscG9uCisvLyAgICAgU2hvd3Mg
aGVscCBvbiB0aGUgbW9kdWxlcyBuYW1lZCBieSB0aGlzIGZsYWcgdmFsdWUKKy8vICogLS1oZWxw
bWF0Y2gKKy8vICAgICBTaG93cyBoZWxwIG9uIG1vZHVsZXMgd2hvc2UgbmFtZSBjb250YWlucyB0
aGUgc3BlY2lmaWVkIHN1YnN0cmluZworCituYW1lc3BhY2UgYWJzbCB7CisKK25hbWVzcGFjZSBm
bGFnc19pbnRlcm5hbCB7Cit1c2luZyBGbGFnS2luZEZpbHRlciA9IHN0ZDo6ZnVuY3Rpb248Ym9v
bCAoYWJzbDo6c3RyaW5nX3ZpZXcpPjsKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAor
CisvLyBGbGFnc1VzYWdlQ29uZmlnCisvLworLy8gVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhl
IGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIGZvciBjaGFuZ2luZyB0aGUgYmVoYXZpb3IKKy8vIG9m
IHRoZSB1c2FnZSByZXBvcnRpbmcgcm91dGluZXMgaW4gQWJzZWlsIEZsYWdzLgorc3RydWN0IEZs
YWdzVXNhZ2VDb25maWcgeworICAvLyBSZXR1cm5zIHRydWUgaWYgZmxhZ3MgZGVmaW5lZCBpbiB0
aGUgZ2l2ZW4gc291cmNlIGNvZGUgZmlsZSBzaG91bGQgYmUKKyAgLy8gcmVwb3J0ZWQgd2l0aCAt
LWhlbHBzaG9ydCBmbGFnLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGZpbGUKKyAgLy8gInBhdGgvdG8v
bXkvY29kZS5jYyIgZGVmaW5lcyB0aGUgZmxhZyAiLS1teV9mbGFnIiwgYW5kCisgIC8vIGNvbnRh
aW5zX2hlbHBzaG9ydF9mbGFncygicGF0aC90by9teS9jb2RlLmNjIikgcmV0dXJucyB0cnVlLCBp
bnZva2luZyB0aGUKKyAgLy8gcHJvZ3JhbSB3aXRoIC0taGVscHNob3J0IHdpbGwgaW5jbHVkZSBp
bmZvcm1hdGlvbiBhYm91dCAtLW15X2ZsYWcgaW4gdGhlCisgIC8vIHByb2dyYW0gb3V0cHV0Lgor
ICBmbGFnc19pbnRlcm5hbDo6RmxhZ0tpbmRGaWx0ZXIgY29udGFpbnNfaGVscHNob3J0X2ZsYWdz
OworCisgIC8vIFJldHVybnMgdHJ1ZSBpZiBmbGFncyBkZWZpbmVkIGluIHRoZSBmaWxlbmFtZSBz
aG91bGQgYmUgcmVwb3J0ZWQgd2l0aAorICAvLyAtLWhlbHAgZmxhZy4gRm9yIGV4YW1wbGUsIGlm
IHRoZSBmaWxlCisgIC8vICJwYXRoL3RvL215L2NvZGUuY2MiIGRlZmluZXMgdGhlIGZsYWcgIi0t
bXlfZmxhZyIsIGFuZAorICAvLyBjb250YWluc19oZWxwX2ZsYWdzKCJwYXRoL3RvL215L2NvZGUu
Y2MiKSByZXR1cm5zIHRydWUsIGludm9raW5nIHRoZQorICAvLyBwcm9ncmFtIHdpdGggLS1oZWxw
IHdpbGwgaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCAtLW15X2ZsYWcgaW4gdGhlCisgIC8vIHBy
b2dyYW0gb3V0cHV0LgorICBmbGFnc19pbnRlcm5hbDo6RmxhZ0tpbmRGaWx0ZXIgY29udGFpbnNf
aGVscF9mbGFnczsKKworICAvLyBSZXR1cm5zIHRydWUgaWYgZmxhZ3MgZGVmaW5lZCBpbiB0aGUg
ZmlsZW5hbWUgc2hvdWxkIGJlIHJlcG9ydGVkIHdpdGgKKyAgLy8gLS1oZWxwcGFja2FnZSBmbGFn
LiBGb3IgZXhhbXBsZSwgaWYgdGhlIGZpbGUKKyAgLy8gInBhdGgvdG8vbXkvY29kZS5jYyIgZGVm
aW5lcyB0aGUgZmxhZyAiLS1teV9mbGFnIiwgYW5kCisgIC8vIGNvbnRhaW5zX2hlbHBwYWNrYWdl
X2ZsYWdzKCJwYXRoL3RvL215L2NvZGUuY2MiKSByZXR1cm5zIHRydWUsIGludm9raW5nIHRoZQor
ICAvLyBwcm9ncmFtIHdpdGggLS1oZWxwcGFja2FnZSB3aWxsIGluY2x1ZGUgaW5mb3JtYXRpb24g
YWJvdXQgLS1teV9mbGFnIGluIHRoZQorICAvLyBwcm9ncmFtIG91dHB1dC4KKyAgZmxhZ3NfaW50
ZXJuYWw6OkZsYWdLaW5kRmlsdGVyIGNvbnRhaW5zX2hlbHBwYWNrYWdlX2ZsYWdzOworCisgIC8v
IEdlbmVyYXRlcyBzdGQ6OnN0cmluZyBjb250YWluaW5nIHByb2dyYW0gdmVyc2lvbi4gVGhpcyBp
cyB0aGUgc3RkOjpzdHJpbmcgcmVwb3J0ZWQKKyAgLy8gd2hlbiB1c2VyIHNwZWNpZmllcyAtLXZl
cnNpb24gaW4gYSBjb21tYW5kIGxpbmUuCisgIHN0ZDo6ZnVuY3Rpb248c3RkOjpzdHJpbmcoKT4g
dmVyc2lvbl9zdHJpbmc7CisKKyAgLy8gTm9ybWFsaXplcyB0aGUgZmlsZW5hbWUgc3BlY2lmaWMg
dG8gdGhlIGJ1aWxkIHN5c3RlbS9maWxlc3lzdGVtIHVzZWQuIFRoaXMKKyAgLy8gcm91dGluZSBp
cyB1c2VkIHdoZW4gd2UgcmVwb3J0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxhZyBkZWZp
bml0aW9uCisgIC8vIGxvY2F0aW9uLiBGb3IgaW5zdGFuY2UsIGlmIHlvdXIgYnVpbGQgcmVzaWRl
cyBhdCBzb21lIGxvY2F0aW9uIHlvdSBkbyBub3QKKyAgLy8gd2FudCB0byBleHBvc2UgaW4gdGhl
IHVzYWdlIG91dHB1dCwgeW91IGNhbiB0cmltIGl0IHRvIHNob3cgb25seSByZWxldmFudAorICAv
LyBwYXJ0LgorICAvLyBGb3IgZXhhbXBsZToKKyAgLy8gICBub3JtYWxpemVfZmlsZW5hbWUoIi9t
eV9jb21wYW55L3NvbWVfbG9uZ19wYXRoL3NyYy9wcm9qZWN0L2ZpbGUuY2MiKQorICAvLyBtaWdo
dCBwcm9kdWNlCisgIC8vICAgInByb2plY3QvZmlsZS5jYyIuCisgIHN0ZDo6ZnVuY3Rpb248c3Rk
OjpzdHJpbmcgKGFic2w6OnN0cmluZ192aWV3KT4gbm9ybWFsaXplX2ZpbGVuYW1lOworfTsKKwor
Ly8gU2V0RmxhZ3NVc2FnZUNvbmZpZygpCisvLworLy8gU2V0cyB0aGUgdXNhZ2UgcmVwb3J0aW5n
IGNvbmZpZ3VyYXRpb24gY2FsbGJhY2tzLiBJZiBhbnkgb2YgdGhlIGNhbGxiYWNrcyBhcmUKKy8v
IG5vdCBzZXQgaW4gdXNhZ2VfY29uZmlnIGluc3RhbmNlLCB0aGVuIHRoZSBkZWZhdWx0IHZhbHVl
IG9mIHRoZSBjYWxsYmFjayBpcworLy8gdXNlZC4KK3ZvaWQgU2V0RmxhZ3NVc2FnZUNvbmZpZyhG
bGFnc1VzYWdlQ29uZmlnIHVzYWdlX2NvbmZpZyk7CisKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5h
bCB7CisKK0ZsYWdzVXNhZ2VDb25maWcgR2V0VXNhZ2VDb25maWcoKTsKKwordm9pZCBSZXBvcnRV
c2FnZUVycm9yKGFic2w6OnN0cmluZ192aWV3IG1zZywgYm9vbCBpc19mYXRhbCk7CisKK30gIC8v
IG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworZXh0ZXJu
ICJDIiB7CisKKy8vIEFkZGl0aW9uYWwgcmVwb3J0IG9mIGZhdGFsIHVzYWdlIGVycm9yIG1lc3Nh
Z2UgYmVmb3JlIHdlIHN0ZDo6ZXhpdC4gRXJyb3IgaXMKKy8vIGZhdGFsIGlmIGlzX2ZhdGFsIGFy
Z3VtZW50IHRvIFJlcG9ydFVzYWdlRXJyb3IgaXMgdHJ1ZS4KK3ZvaWQgQWJzbEludGVybmFsUmVw
b3J0RmF0YWxVc2FnZUVycm9yKGFic2w6OnN0cmluZ192aWV3KTsKKworfSAgLy8gZXh0ZXJuICJD
IgorCisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfVVNBR0VfQ09ORklHX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy91c2FnZV9jb25maWdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3VzYWdlX2NvbmZp
Z190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiZGUxM2FmOGY4NDMzZTRmYmY4OTBlM2Y0MGY1OWZmZTQ2
Y2U3MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy91c2FnZV9jb25maWdfdGVzdC5j
YwpAQCAtMCwwICsxLDE5OCBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvdXNhZ2VfY29uZmlnLmgiCisKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcGF0aF91
dGlsLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9wcm9ncmFtX25hbWUuaCIKKyNp
bmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKworbmFtZXNwYWNlIHsKKworY2xhc3MgRmxh
Z3NVc2FnZUNvbmZpZ1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgor
ICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgeworICAgIC8vIEluc3RhbGwgRGVmYXVsdCBjb25maWcg
Zm9yIHRoZSB1c2Ugb24gdGhpcyB1bml0IHRlc3QuCisgICAgLy8gQmluYXJ5IG1heSBpbnN0YWxs
IGEgY3VzdG9tIGNvbmZpZyBiZWZvcmUgdGVzdHMgYXJlIHJ1bi4KKyAgICBhYnNsOjpGbGFnc1Vz
YWdlQ29uZmlnIGRlZmF1bHRfY29uZmlnOworICAgIGFic2w6OlNldEZsYWdzVXNhZ2VDb25maWco
ZGVmYXVsdF9jb25maWcpOworICB9Cit9OworCituYW1lc3BhY2UgZmxhZ3MgPSBhYnNsOjpmbGFn
c19pbnRlcm5hbDsKKworYm9vbCBUc3RDb250YWluc0hlbHBzaG9ydEZsYWdzKGFic2w6OnN0cmlu
Z192aWV3IGYpIHsKKyAgcmV0dXJuIGFic2w6OlN0YXJ0c1dpdGgoZmxhZ3M6OkJhc2VuYW1lKGYp
LCAicHJvZ25hbWUuIik7Cit9CisKK2Jvb2wgVHN0Q29udGFpbnNIZWxwcGFja2FnZUZsYWdzKGFi
c2w6OnN0cmluZ192aWV3IGYpIHsKKyAgcmV0dXJuIGFic2w6OkVuZHNXaXRoKGZsYWdzOjpQYWNr
YWdlKGYpLCAiYWFhLyIpOworfQorCitib29sIFRzdENvbnRhaW5zSGVscEZsYWdzKGFic2w6OnN0
cmluZ192aWV3IGYpIHsKKyAgcmV0dXJuIGFic2w6OkVuZHNXaXRoKGZsYWdzOjpQYWNrYWdlKGYp
LCAienp6LyIpOworfQorCitzdGQ6OnN0cmluZyBUc3RWZXJzaW9uU3RyaW5nKCkgeyByZXR1cm4g
InByb2dyYW0gMS4wLjAiOyB9CisKK3N0ZDo6c3RyaW5nIFRzdE5vcm1hbGl6ZUZpbGVuYW1lKGFi
c2w6OnN0cmluZ192aWV3IGZpbGVuYW1lKSB7CisgIHJldHVybiBzdGQ6OnN0cmluZyhmaWxlbmFt
ZS5zdWJzdHIoMikpOworfQorCit2b2lkIFRzdFJlcG9ydFVzYWdlTWVzc2FnZShhYnNsOjpzdHJp
bmdfdmlldyBtc2cpIHt9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihGbGFnc1VzYWdlQ29u
ZmlnVGVzdCwgVGVzdEdldFNldEZsYWdzVXNhZ2VDb25maWcpIHsKKyAgRVhQRUNUX1RSVUUoZmxh
Z3M6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscHNob3J0X2ZsYWdzKTsKKyAgRVhQRUNU
X1RSVUUoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscF9mbGFncyk7CisgIEVY
UEVDVF9UUlVFKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBwYWNrYWdlX2Zs
YWdzKTsKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkudmVyc2lvbl9zdHJp
bmcpOworICBFWFBFQ1RfVFJVRShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5ub3JtYWxpemVfZmls
ZW5hbWUpOworCisgIGFic2w6OkZsYWdzVXNhZ2VDb25maWcgZW1wdHlfY29uZmlnOworICBlbXB0
eV9jb25maWcuY29udGFpbnNfaGVscHNob3J0X2ZsYWdzID0gJlRzdENvbnRhaW5zSGVscHNob3J0
RmxhZ3M7CisgIGVtcHR5X2NvbmZpZy5jb250YWluc19oZWxwX2ZsYWdzID0gJlRzdENvbnRhaW5z
SGVscEZsYWdzOworICBlbXB0eV9jb25maWcuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MgPSAm
VHN0Q29udGFpbnNIZWxwcGFja2FnZUZsYWdzOworICBlbXB0eV9jb25maWcudmVyc2lvbl9zdHJp
bmcgPSAmVHN0VmVyc2lvblN0cmluZzsKKyAgZW1wdHlfY29uZmlnLm5vcm1hbGl6ZV9maWxlbmFt
ZSA9ICZUc3ROb3JtYWxpemVGaWxlbmFtZTsKKyAgYWJzbDo6U2V0RmxhZ3NVc2FnZUNvbmZpZyhl
bXB0eV9jb25maWcpOworCisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLmNv
bnRhaW5zX2hlbHBzaG9ydF9mbGFncyk7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRVc2FnZUNv
bmZpZygpLmNvbnRhaW5zX2hlbHBfZmxhZ3MpOworICBFWFBFQ1RfVFJVRShmbGFnczo6R2V0VXNh
Z2VDb25maWcoKS5jb250YWluc19oZWxwcGFja2FnZV9mbGFncyk7CisgIEVYUEVDVF9UUlVFKGZs
YWdzOjpHZXRVc2FnZUNvbmZpZygpLnZlcnNpb25fc3RyaW5nKTsKKyAgRVhQRUNUX1RSVUUoZmxh
Z3M6OkdldFVzYWdlQ29uZmlnKCkubm9ybWFsaXplX2ZpbGVuYW1lKTsKK30KKworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworVEVTVF9GKEZsYWdzVXNhZ2VDb25maWdUZXN0LCBUZXN0Q29udGFpbnNIZWxwc2hv
cnRGbGFncykgeworICBmbGFnczo6U2V0UHJvZ3JhbUludm9jYXRpb25OYW1lKCJ1c2FnZV9jb25m
aWdfdGVzdCIpOworCisgIGF1dG8gY29uZmlnID0gZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCk7Cisg
IEVYUEVDVF9UUlVFKGNvbmZpZy5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MoImFkaXIvY2QvdXNh
Z2VfY29uZmlnX3Rlc3QuY2MiKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgY29uZmlnLmNvbnRh
aW5zX2hlbHBzaG9ydF9mbGFncygiYWFhYS91c2FnZV9jb25maWdfdGVzdC1tYWluLmNjIikpOwor
ICBFWFBFQ1RfVFJVRShjb25maWcuY29udGFpbnNfaGVscHNob3J0X2ZsYWdzKCJhYmMvdXNhZ2Vf
Y29uZmlnX3Rlc3RfbWFpbi5jYyIpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbmZpZy5jb250YWluc19o
ZWxwc2hvcnRfZmxhZ3MoInVzYWdlX2NvbmZpZ19tYWluLmNjIikpOworCisgIGFic2w6OkZsYWdz
VXNhZ2VDb25maWcgZW1wdHlfY29uZmlnOworICBlbXB0eV9jb25maWcuY29udGFpbnNfaGVscHNo
b3J0X2ZsYWdzID0gJlRzdENvbnRhaW5zSGVscHNob3J0RmxhZ3M7CisgIGFic2w6OlNldEZsYWdz
VXNhZ2VDb25maWcoZW1wdHlfY29uZmlnKTsKKworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGZsYWdz
OjpHZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBzaG9ydF9mbGFncygiYWFhL3Byb2duYW1l
LmNwcCIpKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCku
Y29udGFpbnNfaGVscHNob3J0X2ZsYWdzKCJhYWEvcHJvZ21hbmUuY3BwIikpOworfQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitURVNUX0YoRmxhZ3NVc2FnZUNvbmZpZ1Rlc3QsIFRlc3RDb250YWluc0hl
bHBGbGFncykgeworICBmbGFnczo6U2V0UHJvZ3JhbUludm9jYXRpb25OYW1lKCJ1c2FnZV9jb25m
aWdfdGVzdCIpOworCisgIGF1dG8gY29uZmlnID0gZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCk7Cisg
IEVYUEVDVF9UUlVFKGNvbmZpZy5jb250YWluc19oZWxwX2ZsYWdzKCJ6enovdXNhZ2VfY29uZmln
X3Rlc3QuY2MiKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgY29uZmlnLmNvbnRhaW5zX2hlbHBf
ZmxhZ3MoImJkaXIvYS96enovdXNhZ2VfY29uZmlnX3Rlc3QtbWFpbi5jYyIpKTsKKyAgRVhQRUNU
X1RSVUUoCisgICAgICBjb25maWcuY29udGFpbnNfaGVscF9mbGFncygiLy9hcXNlL3p6ei91c2Fn
ZV9jb25maWdfdGVzdF9tYWluLmNjIikpOworICBFWFBFQ1RfRkFMU0UoY29uZmlnLmNvbnRhaW5z
X2hlbHBfZmxhZ3MoInp6ei9hYS91c2FnZV9jb25maWdfbWFpbi5jYyIpKTsKKworICBhYnNsOjpG
bGFnc1VzYWdlQ29uZmlnIGVtcHR5X2NvbmZpZzsKKyAgZW1wdHlfY29uZmlnLmNvbnRhaW5zX2hl
bHBfZmxhZ3MgPSAmVHN0Q29udGFpbnNIZWxwRmxhZ3M7CisgIGFic2w6OlNldEZsYWdzVXNhZ2VD
b25maWcoZW1wdHlfY29uZmlnKTsKKworICBFWFBFQ1RfVFJVRShmbGFnczo6R2V0VXNhZ2VDb25m
aWcoKS5jb250YWluc19oZWxwX2ZsYWdzKCJ6enovbWFpbi1ib2R5LmMiKSk7CisgIEVYUEVDVF9G
QUxTRSgKKyAgICAgIGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBfZmxhZ3Mo
Inp6ei9kaXIvbWFpbi1ib2R5LmMiKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihG
bGFnc1VzYWdlQ29uZmlnVGVzdCwgVGVzdENvbnRhaW5zSGVscHBhY2thZ2VGbGFncykgeworICBm
bGFnczo6U2V0UHJvZ3JhbUludm9jYXRpb25OYW1lKCJ1c2FnZV9jb25maWdfdGVzdCIpOworCisg
IGF1dG8gY29uZmlnID0gZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCk7CisgIEVYUEVDVF9UUlVFKGNv
bmZpZy5jb250YWluc19oZWxwcGFja2FnZV9mbGFncygiYWFhL3VzYWdlX2NvbmZpZ190ZXN0LmNj
IikpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGNvbmZpZy5jb250YWluc19oZWxwcGFja2FnZV9m
bGFncygiYmJkaXIvYWFhL3VzYWdlX2NvbmZpZ190ZXN0LW1haW4uY2MiKSk7CisgIEVYUEVDVF9U
UlVFKGNvbmZpZy5jb250YWluc19oZWxwcGFja2FnZV9mbGFncygKKyAgICAgICIvL2Fxc3dkZS9h
YWEvdXNhZ2VfY29uZmlnX3Rlc3RfbWFpbi5jYyIpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbmZpZy5j
b250YWluc19oZWxwcGFja2FnZV9mbGFncygiYWFkaXIvdXNhZ2VfY29uZmlnX21haW4uY2MiKSk7
CisKKyAgYWJzbDo6RmxhZ3NVc2FnZUNvbmZpZyBlbXB0eV9jb25maWc7CisgIGVtcHR5X2NvbmZp
Zy5jb250YWluc19oZWxwcGFja2FnZV9mbGFncyA9ICZUc3RDb250YWluc0hlbHBwYWNrYWdlRmxh
Z3M7CisgIGFic2w6OlNldEZsYWdzVXNhZ2VDb25maWcoZW1wdHlfY29uZmlnKTsKKworICBFWFBF
Q1RfVFJVRSgKKyAgICAgIGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBwYWNr
YWdlX2ZsYWdzKCJhYWEvbWFpbi1ib2R5LmMiKSk7CisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIGZs
YWdzOjpHZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBwYWNrYWdlX2ZsYWdzKCJhYWRpci9t
YWluLWJvZHkuYyIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKEZsYWdzVXNhZ2VD
b25maWdUZXN0LCBUZXN0VmVyc2lvblN0cmluZykgeworICBmbGFnczo6U2V0UHJvZ3JhbUludm9j
YXRpb25OYW1lKCJ1c2FnZV9jb25maWdfdGVzdCIpOworCisjaWZkZWYgTkRFQlVHCisgIHN0ZDo6
c3RyaW5nIGV4cGVjdGVkX291dHB1dCA9ICJ1c2FnZV9jb25maWdfdGVzdFxuIjsKKyNlbHNlCisg
IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dCA9CisgICAgICAidXNhZ2VfY29uZmlnX3Rlc3Rc
bkRlYnVnIGJ1aWxkIChOREVCVUcgbm90ICNkZWZpbmVkKVxuIjsKKyNlbmRpZgorCisgIEVYUEVD
VF9FUShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS52ZXJzaW9uX3N0cmluZygpLCBleHBlY3RlZF9v
dXRwdXQpOworCisgIGFic2w6OkZsYWdzVXNhZ2VDb25maWcgZW1wdHlfY29uZmlnOworICBlbXB0
eV9jb25maWcudmVyc2lvbl9zdHJpbmcgPSAmVHN0VmVyc2lvblN0cmluZzsKKyAgYWJzbDo6U2V0
RmxhZ3NVc2FnZUNvbmZpZyhlbXB0eV9jb25maWcpOworCisgIEVYUEVDVF9FUShmbGFnczo6R2V0
VXNhZ2VDb25maWcoKS52ZXJzaW9uX3N0cmluZygpLCAicHJvZ3JhbSAxLjAuMCIpOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitURVNUX0YoRmxhZ3NVc2FnZUNvbmZpZ1Rlc3QsIFRlc3ROb3JtYWxp
emVGaWxlbmFtZSkgeworICAvLyBUaGlzIHRlc3RzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9u
LgorICBFWFBFQ1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkubm9ybWFsaXplX2ZpbGVuYW1l
KCJhL2EuY2MiKSwgImEvYS5jYyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29uZmln
KCkubm9ybWFsaXplX2ZpbGVuYW1lKCIvYS9hLmNjIiksICJhL2EuY2MiKTsKKyAgRVhQRUNUX0VR
KGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6ZV9maWxlbmFtZSgiLy8vYS9hLmNjIiks
ICJhL2EuY2MiKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6
ZV9maWxlbmFtZSgiLyIpLCAiIik7CisKKyAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSBjdXN0b20g
aW1wbGVtZW50YXRpb24gaXMgY2FsbGVkLgorICBhYnNsOjpGbGFnc1VzYWdlQ29uZmlnIGVtcHR5
X2NvbmZpZzsKKyAgZW1wdHlfY29uZmlnLm5vcm1hbGl6ZV9maWxlbmFtZSA9ICZUc3ROb3JtYWxp
emVGaWxlbmFtZTsKKyAgYWJzbDo6U2V0RmxhZ3NVc2FnZUNvbmZpZyhlbXB0eV9jb25maWcpOwor
CisgIEVYUEVDVF9FUShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5ub3JtYWxpemVfZmlsZW5hbWUo
ImEvYS5jYyIpLCAiYS5jYyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCku
bm9ybWFsaXplX2ZpbGVuYW1lKCJhYWEvYS5jYyIpLCAiYS9hLmNjIik7CisKKyAgLy8gVGhpcyB0
ZXN0cyB0aGF0IHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGNhbGxlZC4KKyAgZW1wdHlf
Y29uZmlnLm5vcm1hbGl6ZV9maWxlbmFtZSA9IG51bGxwdHI7CisgIGFic2w6OlNldEZsYWdzVXNh
Z2VDb25maWcoZW1wdHlfY29uZmlnKTsKKworICBFWFBFQ1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29u
ZmlnKCkubm9ybWFsaXplX2ZpbGVuYW1lKCJhL2EuY2MiKSwgImEvYS5jYyIpOworICBFWFBFQ1Rf
RVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkubm9ybWFsaXplX2ZpbGVuYW1lKCIvYS9hLmNjIiks
ICJhL2EuY2MiKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6
ZV9maWxlbmFtZSgiLy8vYS9hLmNjIiksICJhL2EuY2MiKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpH
ZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6ZV9maWxlbmFtZSgiXFxhXFxhLmNjIiksICJhXFxhLmNj
Iik7CisgIEVYUEVDVF9FUShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5ub3JtYWxpemVfZmlsZW5h
bWUoIi8vIiksICIiKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLm5vcm1h
bGl6ZV9maWxlbmFtZSgiXFxcXCIpLCAiIik7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQlVJTEQuYmF6ZWwKaW5k
ZXggNTBhYTU1MDZjMTFjODdlZDBiNGEwNjQyYjk1MGJhMTYwZjhhMmY3OS4uOGMyZGFmNzAzYmNk
MWFmZmMzZmQ5ZThiNmYwZWVmYWNlNjVhZWMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlM
RC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxELmJhemVsCkBAIC01LDcgKzUsNyBAQAogIyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLApAQCAtMTUsOCArMTUsOSBAQAogIwogCiBsb2FkKAotICAgICIvL2Fic2w6
Y29wdHMuYnpsIiwKKyAgICAiLy9hYnNsOmNvcHRzL2NvbmZpZ3VyZV9jb3B0cy5iemwiLAogICAg
ICJBQlNMX0RFRkFVTFRfQ09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElOS09QVFMiLAogICAg
ICJBQlNMX1RFU1RfQ09QVFMiLAogKQogCkBAIC0zMiw2ICszMyw3IEBAIGNjX2xpYnJhcnkoCiAg
ICAgXSwKICAgICBoZHJzID0gWyJoYXNoLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiOmNpdHkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
QEAgLTUwLDYgKzUyLDcgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gImhhc2hfdGVzdGluZyIs
CiAgICAgdGVzdG9ubHkgPSAxLAogICAgIGhkcnMgPSBbImhhc2hfdGVzdGluZy5oIl0sCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAg
IjpzcHlfaGFzaF9zdGF0ZSIsCiAgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCkBA
IC02Myw2ICs2Niw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJoYXNoX3Rlc3QiLAogICAgIHNy
Y3MgPSBbImhhc2hfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAg
IGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAg
ICI6aGFzaCIsCiAgICAgICAgICI6aGFzaF90ZXN0aW5nIiwKQEAgLTgwLDYgKzg0LDcgQEAgY2Nf
bGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvc3B5X2hh
c2hfc3RhdGUuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtv
cHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJp
bGl0eTpwcml2YXRlIl0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNoIiwKQEAgLTkzLDkg
Kzk4LDkgQEAgY2NfbGlicmFyeSgKICAgICBzcmNzID0gWyJpbnRlcm5hbC9jaXR5LmNjIl0sCiAg
ICAgaGRycyA9IFsKICAgICAgICAgImludGVybmFsL2NpdHkuaCIsCi0gICAgICAgICJpbnRlcm5h
bC9jaXR5X2NyYy5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAor
ICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAg
ICAgICIvL2Fic2wvYmFzZTpjb25maWciLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFk
ZXJzIiwKQEAgLTEwNyw2ICsxMTIsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiY2l0eV90ZXN0
IiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC9jaXR5X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFC
U0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAg
ICBkZXBzID0gWwogICAgICAgICAiOmNpdHkiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xl
dGVzdC8vOmd0ZXN0X21haW4iLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5nbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2hhc2gvQlVJTEQuZ24KaW5kZXggNDBiNmIzYTIyYjM3MTMyYmI2ZWY5MmFiY2NmYmExZjY2
OWNmZTQ3Zi4uMjFiZjg4MWExZDk2NTliZjdiNzJjMTY1YzUzOWRhZmMxZGFmMTNhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxELmduCkBAIC00
LDggKzQsMTUgQEAKIAogaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCisj
IFVzYWdlIG9mIEFic2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9w
dC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2Ug
cmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hy
b21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIwor
IyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2ds
ZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgx
dkJEVQogaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsKKyAgICAi
Ly9saWJhc3Npc3RhbnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAogICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVz
dDpndGVzdCIsCkBAIC05MSw3ICs5OCw2IEBAIHNvdXJjZV9zZXQoImNpdHkiKSB7CiAgIHB1Ymxp
Y19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25m
aWciIF0KICAgcHVibGljID0gWwogICAgICJpbnRlcm5hbC9jaXR5LmgiLAotICAgICJpbnRlcm5h
bC9jaXR5X2NyYy5oIiwKICAgXQogICBzb3VyY2VzID0gWwogICAgICJpbnRlcm5hbC9jaXR5LmNj
IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0NN
YWtlTGlzdHMudHh0CmluZGV4IDM1MDgxZTM3NzRmOGYzMjJhOWQ3NWRhOTQ4ZWYyN2EyMjEzZDIy
N2UuLmZlYmM1NTFmY2VkYmY0NzUwOTBlMDYxODM0Yjc4NjcwNWZmNWQzMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2hhc2gvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9DTWFrZUxpc3RzLnR4
dApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDY3ICsxNCwxMDIgQEAK
ICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAjCiAKLWxpc3QoQVBQRU5EIEhBU0hf
UFVCTElDX0hFQURFUlMKLSAgImhhc2guaCIKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAg
IGhhc2gKKyAgSERSUworICAgICJoYXNoLmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvaGFzaC5j
YyIKKyAgICAiaW50ZXJuYWwvaGFzaC5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZW5kaWFuCisg
ICAgYWJzbDo6Zml4ZWRfYXJyYXkKKyAgICBhYnNsOjptZXRhCisgICAgYWJzbDo6aW50MTI4Cisg
ICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6Om9wdGlvbmFsCisgICAgYWJzbDo6dmFyaWFudAor
ICAgIGFic2w6OnV0aWxpdHkKKyAgICBhYnNsOjpjaXR5CisgIFBVQkxJQwogKQogCi1saXN0KEFQ
UEVORCBIQVNIX0lOVEVSTkFMX0hFQURFUlMKLSAgImludGVybmFsL2NpdHkuaCIKLSAgImludGVy
bmFsL2NpdHlfY3JjLmgiCi0gICJpbnRlcm5hbC9oYXNoLmgiCithYnNsX2NjX2xpYnJhcnkoCisg
IE5BTUUKKyAgICBoYXNoX3Rlc3RpbmcKKyAgSERSUworICAgICJoYXNoX3Rlc3RpbmcuaCIKKyAg
Q09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnNweV9oYXNo
X3N0YXRlCisgICAgYWJzbDo6bWV0YQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjp2YXJp
YW50CisgICAgZ21vY2sKKyAgVEVTVE9OTFkKICkKIAotIyBhYnNsX2hhc2ggbGlicmFyeQotbGlz
dChBUFBFTkQgSEFTSF9TUkMKLSAgImludGVybmFsL2NpdHkuY2MiCi0gICJpbnRlcm5hbC9oYXNo
LmNjIgotICAke0hBU0hfUFVCTElDX0hFQURFUlN9Ci0gICR7SEFTSF9JTlRFUk5BTF9IRUFERVJT
fQorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgaGFzaF90ZXN0CisgIFNSQ1MKKyAgICAiaGFz
aF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAg
YWJzbDo6aGFzaAorICAgIGFic2w6Omhhc2hfdGVzdGluZworICAgIGFic2w6OmNvcmVfaGVhZGVy
cworICAgIGFic2w6OmZsYXRfaGFzaF9zZXQKKyAgICBhYnNsOjpzcHlfaGFzaF9zdGF0ZQorICAg
IGFic2w6Om1ldGEKKyAgICBhYnNsOjppbnQxMjgKKyAgICBnbW9ja19tYWluCiApCiAKLXNldChI
QVNIX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6aGFzaCBhYnNsOjpjb250YWluZXIgYWJzbDo6c3Ry
aW5ncyBhYnNsOjpzdHJfZm9ybWF0IGFic2w6OnV0aWxpdHkpCi0KLWFic2xfbGlicmFyeSgKLSAg
VEFSR0VUCi0gICAgYWJzbF9oYXNoCi0gIFNPVVJDRVMKLSAgICAke0hBU0hfU1JDfQotICBQVUJM
SUNfTElCUkFSSUVTCi0gICAgJHtIQVNIX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIEVYUE9SVF9OQU1F
Ci0gICAgaGFzaAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgc3B5X2hhc2hfc3RhdGUK
KyAgSERSUworICAgICJpbnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oIgorICBDT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaAorICAgIGFic2w6OnN0
cmluZ3MKKyAgICBhYnNsOjpzdHJfZm9ybWF0CisgIFRFU1RPTkxZCiApCiAKLSMKLSMjIFRFU1RT
Ci0jCi0KLSMgdGVzdGluZyBzdXBwb3J0Ci1zZXQoSEFTSF9URVNUX0hFQURFUlMgaGFzaF90ZXN0
aW5nLmggaW50ZXJuYWwvc3B5X2hhc2hfc3RhdGUuaCkKLXNldChIQVNIX1RFU1RfUFVCTElDX0xJ
QlJBUklFUyBhYnNsOjpoYXNoIGFic2w6OmNvbnRhaW5lciBhYnNsOjpudW1lcmljIGFic2w6OnN0
cmluZ3MgYWJzbDo6c3RyX2Zvcm1hdCkKLQotIyBoYXNoX3Rlc3QKLXNldChIQVNIX1RFU1RfU1JD
ICJoYXNoX3Rlc3QuY2MiICR7SEFTSF9URVNUX0hFQURFUlN9KQotCi1hYnNsX3Rlc3QoCi0gIFRB
UkdFVAotICAgIGhhc2hfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtIQVNIX1RFU1RfU1JDfQotICBQ
VUJMSUNfTElCUkFSSUVTCi0gICAgJHtIQVNIX1RFU1RfUFVCTElDX0xJQlJBUklFU30KK2Fic2xf
Y2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGNpdHkKKyAgSERSUworICAgICJpbnRlcm5hbC9jaXR5
LmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvY2l0eS5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xf
REVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVf
aGVhZGVycworICAgIGFic2w6OmVuZGlhbgogKQogCi0jIGhhc2hfdGVzdAotc2V0KENJVFlfVEVT
VF9TUkMgImludGVybmFsL2NpdHlfdGVzdC5jYyIpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBjaXR5X3Rlc3QKLSAgU09VUkNFUwotICAgICR7Q0lU
WV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7SEFTSF9URVNUX1BVQkxJQ19M
SUJSQVJJRVN9CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvY2l0eV90ZXN0LmNjIgorICBDT1BUUwor
ICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y2l0eQorICAgIGdtb2Nr
X21haW4KICkKIAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2guaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gv
aGFzaC5oCmluZGV4IGM3YmE0YzJiN2E1YzE5OGY3NGNlMjczOTEwYmFjODgxYzQ1NTlmODkuLjI5
N2RjOWNiMjJhYzQ2NjMxMTY4YzBlYjc4MDQ0ZTI4Yjc5NzA3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2hhc2gvaGFzaC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaC5oCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yNSw4ICsyNSw4IEBACiAvLyAgICogYEFic2xIYXNo
VmFsdWVgLCBhbiBleHRlbnNpb24gcG9pbnQgdGhhdCBhbGxvd3MgeW91IHRvIGV4dGVuZCB0eXBl
cyB0bwogLy8gICAgIHN1cHBvcnQgQWJzZWlsIGhhc2hpbmcgd2l0aG91dCByZXF1aXJpbmcgeW91
IHRvIGRlZmluZSBhIGhhc2hpbmcKIC8vICAgICBhbGdvcml0aG0uCi0vLyAgICogYEhhc2hTdGF0
ZWAsIGEgdHlwZS1lcmFzZWQgY2xhc3Mgd2hpY2ggaW1wbGVtZW50IHRoZSBtYW5pcHVsYXRpb24g
b2YgdGhlCi0vLyAgICAgaGFzaCBzdGF0ZSAoSCkgaXRzZWxmLiBjb250YWluaW5nIG1lbWJlciBm
dW5jdGlvbnMgYGNvbWJpbmUoKWAgYW5kCisvLyAgICogYEhhc2hTdGF0ZWAsIGEgdHlwZS1lcmFz
ZWQgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyB0aGUgbWFuaXB1bGF0aW9uIG9mIHRoZQorLy8gICAg
IGhhc2ggc3RhdGUgKEgpIGl0c2VsZiwgY29udGFpbnMgbWVtYmVyIGZ1bmN0aW9ucyBgY29tYmlu
ZSgpYCBhbmQKIC8vICAgICBgY29tYmluZV9jb250aWd1b3VzKClgLCB3aGljaCB5b3UgY2FuIHVz
ZSB0byBjb250cmlidXRlIHRvIGFuIGV4aXN0aW5nCiAvLyAgICAgaGFzaCBzdGF0ZSB3aGVuIGhh
c2hpbmcgeW91ciB0eXBlcy4KIC8vCkBAIC0zNiwyNSArMzYsMzQgQEAKIC8vIGZyYW1ld29yayBi
eSBzaW1wbHkgY29tYmluaW5nIGl0cyBzdGF0ZSB3aXRoIHRoZSBzdGF0ZSBvZiBrbm93biwgaGFz
aGFibGUKIC8vIHR5cGVzLiBIYXNoaW5nIG9mIHRoYXQgY29tYmluZWQgc3RhdGUgaXMgc2VwYXJh
dGVseSBkb25lIGJ5IGBhYnNsOjpIYXNoYC4KIC8vCisvLyBPbmUgc2hvdWxkIGFzc3VtZSB0aGF0
IGEgaGFzaCBhbGdvcml0aG0gaXMgY2hvc2VuIHJhbmRvbWx5IGF0IHRoZSBzdGFydCBvZgorLy8g
ZWFjaCBwcm9jZXNzLiAgRS5nLiwgYWJzbDo6SGFzaDxpbnQ+KCkoOSkgaW4gb25lIHByb2Nlc3Mg
YW5kCisvLyBhYnNsOjpIYXNoPGludD4oKSg5KSBpbiBhbm90aGVyIHByb2Nlc3MgYXJlIGxpa2Vs
eSB0byBkaWZmZXIuCisvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIC8vIFN1cHBvc2Ugd2UgaGF2
ZSBhIGNsYXNzIGBDaXJjbGVgIGZvciB3aGljaCB3ZSB3YW50IHRvIGFkZCBoYXNoaW5nCisvLyAg
IC8vIFN1cHBvc2Ugd2UgaGF2ZSBhIGNsYXNzIGBDaXJjbGVgIGZvciB3aGljaCB3ZSB3YW50IHRv
IGFkZCBoYXNoaW5nOgogLy8gICBjbGFzcyBDaXJjbGUgewotLy8gICAgIHB1YmxpYzoKLS8vICAg
ICAgIC4uLgotLy8gICAgIHByaXZhdGU6Ci0vLyAgICAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IGNl
bnRlcl87Ci0vLyAgICAgICBpbnQgcmFkaXVzXzsKLS8vICAgICB9OwotLy8KLS8vICAgLy8gVG8g
YWRkIGhhc2hpbmcgc3VwcG9ydCB0byBgQ2lyY2xlYCwgd2Ugc2ltcGx5IG5lZWQgdG8gYWRkIGFu
IG9yZGluYXJ5Ci0vLyAgIC8vIGZ1bmN0aW9uIGBBYnNsSGFzaFZhbHVlKClgLCBhbmQgcmV0dXJu
IHRoZSBjb21iaW5lZCBoYXNoIHN0YXRlIG9mIHRoZQotLy8gICAvLyBleGlzdGluZyBoYXNoIHN0
YXRlIGFuZCB0aGUgY2xhc3Mgc3RhdGU6CisvLyAgICBwdWJsaWM6CisvLyAgICAgLi4uCisvLyAg
ICBwcml2YXRlOgorLy8gICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gY2VudGVyXzsKKy8vICAgICBp
bnQgcmFkaXVzXzsKKy8vICAgfTsKIC8vCisvLyAgIC8vIFRvIGFkZCBoYXNoaW5nIHN1cHBvcnQg
dG8gYENpcmNsZWAsIHdlIHNpbXBseSBuZWVkIHRvIGFkZCBhIGZyZWUKKy8vICAgLy8gKG5vbi1t
ZW1iZXIpIGZ1bmN0aW9uIGBBYnNsSGFzaFZhbHVlKClgLCBhbmQgcmV0dXJuIHRoZSBjb21iaW5l
ZCBoYXNoCisvLyAgIC8vIHN0YXRlIG9mIHRoZSBleGlzdGluZyBoYXNoIHN0YXRlIGFuZCB0aGUg
Y2xhc3Mgc3RhdGUuIFlvdSBjYW4gYWRkIHN1Y2ggYQorLy8gICAvLyBmcmVlIGZ1bmN0aW9uIHVz
aW5nIGEgZnJpZW5kIGRlY2xhcmF0aW9uIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3M6Cisv
LyAgIGNsYXNzIENpcmNsZSB7CisvLyAgICBwdWJsaWM6CisvLyAgICAgLi4uCiAvLyAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEg+CiAvLyAgICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIGNv
bnN0IENpcmNsZSYgYykgewogLy8gICAgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgp
LCBjLmNlbnRlcl8sIGMucmFkaXVzXyk7CiAvLyAgICAgfQorLy8gICAgIC4uLgorLy8gICB9Owog
Ly8KIC8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgQWRkaW5nIFR5cGUgU3VwcG9ydCB0byBg
YWJzbDo6SGFzaGAgYmVsb3cuCiAvLwpAQCAtNjksNyArNzgsNyBAQCBuYW1lc3BhY2UgYWJzbCB7
CiAvLyBgYWJzbDo6SGFzaGAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gYGFic2w6
Okhhc2g8VD5gIGlzIGEgY29udmVuaWVudCBnZW5lcmFsLXB1cnBvc2UgaGFzaCBmdW5jdG9yIGZv
ciBhIHR5cGUgYFRgCisvLyBgYWJzbDo6SGFzaDxUPmAgaXMgYSBjb252ZW5pZW50IGdlbmVyYWwt
cHVycG9zZSBoYXNoIGZ1bmN0b3IgZm9yIGFueSB0eXBlIGBUYAogLy8gc2F0aXNmeWluZyBhbnkg
b2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIChpbiBvcmRlcik6CiAvLwogLy8gICogVCBpcyBh
biBhcml0aG1ldGljIG9yIHBvaW50ZXIgdHlwZQpAQCAtOTgsNyArMTA3LDcgQEAgbmFtZXNwYWNl
IGFic2wgewogLy8gICAgKiBhYnNsOjpzdHJpbmdfdmlldwogLy8gICAgKiBhYnNsOjpJbmxpbmVk
VmVjdG9yCiAvLyAgICAqIGFic2w6OkZpeGVkQXJyYXkKLS8vICAgICogYWJzbDo6dW5pdDEyOAor
Ly8gICAgKiBhYnNsOjp1aW50MTI4CiAvLyAgICAqIGFic2w6OlRpbWUsIGFic2w6OkR1cmF0aW9u
LCBhbmQgYWJzbDo6VGltZVpvbmUKIC8vCiAvLyBOb3RlOiB0aGUgbGlzdCBhYm92ZSBpcyBub3Qg
bWVhbnQgdG8gYmUgZXhoYXVzdGl2ZS4gQWRkaXRpb25hbCB0eXBlIHN1cHBvcnQKQEAgLTE0Miw3
ICsxNTEsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLwogLy8gVGhlICJoYXNoIHN0YXRlIiBjb25j
ZXB0IGNvbnRhaW5zIHR3byBtZW1iZXIgZnVuY3Rpb25zIGZvciBtaXhpbmcgaGFzaCBzdGF0ZToK
IC8vCi0vLyAqIGBIOjpjb21iaW5lKClgCisvLyAqIGBIOjpjb21iaW5lKHN0YXRlLCB2YWx1ZXMu
Li4pYAogLy8KIC8vICAgQ29tYmluZXMgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB2YWx1ZXMgaW50
byBhIGhhc2ggc3RhdGUsIHJldHVybmluZyB0aGUKIC8vICAgdXBkYXRlZCBzdGF0ZS4gTm90ZSB0
aGF0IHRoZSBleGlzdGluZyBoYXNoIHN0YXRlIGlzIG1vdmUtb25seSBhbmQgbXVzdCBiZQpAQCAt
MTYwLDcgKzE2OSw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vICAgICBzdGF0ZSA9IEg6OmNvbWJp
bmUoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUyKTsKIC8vICAgICBzdGF0ZSA9IEg6OmNvbWJpbmUo
c3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUzKTsKIC8vCi0vLyAqIGBIOjpjb21iaW5lX2NvbnRpZ3Vv
dXMoKWAKKy8vICogYEg6OmNvbWJpbmVfY29udGlndW91cyhzdGF0ZSwgZGF0YSwgc2l6ZSlgCiAv
LwogLy8gICAgQ29tYmluZXMgYSBjb250aWd1b3VzIGFycmF5IG9mIGBzaXplYCBlbGVtZW50cyBp
bnRvIGEgaGFzaCBzdGF0ZSwKIC8vICAgIHJldHVybmluZyB0aGUgdXBkYXRlZCBzdGF0ZS4gTm90
ZSB0aGF0IHRoZSBleGlzdGluZyBoYXNoIHN0YXRlIGlzCkBAIC0yMzUsNyArMjQ0LDcgQEAgdXNp
bmcgSGFzaCA9IGFic2w6Omhhc2hfaW50ZXJuYWw6Okhhc2g8VD47CiAvLyAgICAgfQogLy8gICAg
cHJpdmF0ZToKIC8vICAgICB2aXJ0dWFsIHZvaWQgSGFzaFZhbHVlKGFic2w6Okhhc2hTdGF0ZSBz
dGF0ZSkgY29uc3QgPSAwOwotLy8gIH07CisvLyAgIH07CiAvLwogLy8gICBjbGFzcyBJbXBsIDog
SW50ZXJmYWNlIHsKIC8vICAgIHByaXZhdGU6CkBAIC0yNDMsNyArMjUyLDcgQEAgdXNpbmcgSGFz
aCA9IGFic2w6Omhhc2hfaW50ZXJuYWw6Okhhc2g8VD47CiAvLyAgICAgICBhYnNsOjpIYXNoU3Rh
dGU6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwgdjFfLCB2Ml8pOwogLy8gICAgIH0KIC8vICAg
ICBpbnQgdjFfOwotLy8gICAgIHN0cmluZyB2Ml87CisvLyAgICAgc3RkOjpzdHJpbmcgdjJfOwog
Ly8gICB9OwogY2xhc3MgSGFzaFN0YXRlIDogcHVibGljIGhhc2hfaW50ZXJuYWw6Okhhc2hTdGF0
ZUJhc2U8SGFzaFN0YXRlPiB7CiAgcHVibGljOgpAQCAtMzA5LDQgKzMxOCw1IEBAIGNsYXNzIEhh
c2hTdGF0ZSA6IHB1YmxpYyBoYXNoX2ludGVybmFsOjpIYXNoU3RhdGVCYXNlPEhhc2hTdGF0ZT4g
ewogfTsKIAogfSAgLy8gbmFtZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBBQlNMX0hBU0hfSEFT
SF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hh
c2hfdGVzdC5jYwppbmRleCA3YjZmYjJlN2FjMWNiMDkzMWM1ZTZiOTgzM2RlZjY0ZWFjZTJhYzc3
Li45YTY2N2JhNzAzYjRhNjI2ZDM1NDk2YjNiNDYyYmU4NmM2ZWVlMDExIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9oYXNoL2hhc2hfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2hfdGVzdC5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTUsNiArMTUsNyBAQAog
I2luY2x1ZGUgImFic2wvaGFzaC9oYXNoLmgiCiAKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRl
IDxiaXRzZXQ+CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxkZXF1ZT4KICNpbmNsdWRl
IDxmb3J3YXJkX2xpc3Q+CkBAIC01MCw3ICs1MSw3IEBAIHVzaW5nIGFic2w6Omhhc2hfaW50ZXJu
YWw6OlNweUhhc2hTdGF0ZTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgSGFzaFZhbHVl
SW50VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIH07Ci1UWVBFRF9URVNUX0NBU0VfUChI
YXNoVmFsdWVJbnRUZXN0KTsKK1RZUEVEX1RFU1RfU1VJVEVfUChIYXNoVmFsdWVJbnRUZXN0KTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTcHlIYXNoU3RhdGUgU3B5SGFzaChjb25zdCBUJiB2
YWx1ZSkgewpAQCAtODQsMTEgKzg1LDM0OSBAQCB1c2luZyBJbnRUeXBlcyA9IHRlc3Rpbmc6OlR5
cGVzPHVuc2lnbmVkIGNoYXIsIGNoYXIsIGludCwgaW50MzJfdCwgaW50NjRfdCwgdWludAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCwgc2l6ZV90PjsKIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBIYXNoVmFsdWVJbnRUZXN0LCBJbnRUeXBlcyk7CiAK
K2VudW0gTGVnYWN5RW51bSB7IGtWYWx1ZTEsIGtWYWx1ZTIsIGtWYWx1ZTMgfTsKKworZW51bSBj
bGFzcyBFbnVtQ2xhc3MgeyBrVmFsdWU0LCBrVmFsdWU1LCBrVmFsdWU2IH07CisKK1RFU1QoSGFz
aFZhbHVlVGVzdCwgRW51bUFuZEJvb2wpIHsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPExl
Z2FjeUVudW0+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8RW51bUNsYXNz
Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPGJvb2w+Ojp2YWx1ZSkpOwor
CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0
bHkoc3RkOjptYWtlX3R1cGxlKAorICAgICAgTGVnYWN5RW51bTo6a1ZhbHVlMSwgTGVnYWN5RW51
bTo6a1ZhbHVlMiwgTGVnYWN5RW51bTo6a1ZhbHVlMykpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShzdGQ6Om1ha2VfdHVwbGUoCisg
ICAgICBFbnVtQ2xhc3M6OmtWYWx1ZTQsIEVudW1DbGFzczo6a1ZhbHVlNSwgRW51bUNsYXNzOjpr
VmFsdWU2KSkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xI
YXNoQ29ycmVjdGx5KAorICAgICAgc3RkOjptYWtlX3R1cGxlKHRydWUsIGZhbHNlKSkpOworfQor
CitURVNUKEhhc2hWYWx1ZVRlc3QsIEZsb2F0aW5nUG9pbnQpIHsKKyAgRVhQRUNUX1RSVUUoKGlz
X2hhc2hhYmxlPGZsb2F0Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPGRv
dWJsZT46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxsb25nIGRvdWJsZT46
OnZhbHVlKSk7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNs
SGFzaENvcnJlY3RseSgKKyAgICAgIHN0ZDo6bWFrZV90dXBsZSg0Mi5mLCAwLmYsIC0wLmYsIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLAorICAgICAgICAgICAgICAgICAg
ICAgIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSkpKTsKKworICBFWFBF
Q1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAg
ICAgc3RkOjptYWtlX3R1cGxlKDQyLiwgMC4sIC0wLiwgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjppbmZpbml0eSgpLAorICAgICAgICAgICAgICAgICAgICAgIC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OmluZmluaXR5KCkpKSk7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5
VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAv
LyBBZGQgc29tZSB2YWx1ZXMgd2l0aCBzbWFsbCBleHBvbmVudCB0byB0ZXN0IHRoYXQgTk9STUFM
IHZhbHVlcyBhbHNvCisgICAgICAvLyBhcHBlbmQgdGhlaXIgY2F0ZWdvcnkuCisgICAgICAuNUws
IDEuTCwgMi5MLCA0LkwsIDQyLkwsIDAuTCwgLTAuTCwKKyAgICAgIDE3ICogc3RhdGljX2Nhc3Q8
bG9uZyBkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpLAorICAgICAg
c3RkOjpudW1lcmljX2xpbWl0czxsb25nIGRvdWJsZT46OmluZmluaXR5KCksCisgICAgICAtc3Rk
OjpudW1lcmljX2xpbWl0czxsb25nIGRvdWJsZT46OmluZmluaXR5KCkpKSk7Cit9CisKK1RFU1Qo
SGFzaFZhbHVlVGVzdCwgUG9pbnRlcikgeworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8aW50
Kj46OnZhbHVlKSk7CisKKyAgaW50IGk7CisgIGludCogcHRyID0gJmk7CisgIGludCogbiA9IG51
bGxwdHI7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFz
aENvcnJlY3RseSgKKyAgICAgIHN0ZDo6bWFrZV90dXBsZSgmaSwgcHRyLCBudWxscHRyLCBwdHIg
KyAxLCBuKSkpOworfQorCitURVNUKEhhc2hWYWx1ZVRlc3QsIFBvaW50ZXJBbGlnbm1lbnQpIHsK
KyAgLy8gV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBwb2ludGVyIGFsaWdubWVudCB3aWxsIG5v
dCBjYXVzZSBiaXRzIHRvIGJlCisgIC8vIHN0dWNrLgorCisgIGNvbnN0ZXhwciBzaXplX3Qga1Rv
dGFsU2l6ZSA9IDEgPDwgMjA7CisgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGRhdGEobmV3IGNo
YXJba1RvdGFsU2l6ZV0pOworICBjb25zdGV4cHIgc2l6ZV90IGtMb2cyTnVtVmFsdWVzID0gNTsK
KyAgY29uc3RleHByIHNpemVfdCBrTnVtVmFsdWVzID0gMSA8PCBrTG9nMk51bVZhbHVlczsKKwor
ICBmb3IgKHNpemVfdCBhbGlnbiA9IDE7IGFsaWduIDwga1RvdGFsU2l6ZSAvIGtOdW1WYWx1ZXM7
CisgICAgICAgYWxpZ24gPCA4ID8gYWxpZ24gKz0gMSA6IGFsaWduIDwgMTAyNCA/IGFsaWduICs9
IDggOiBhbGlnbiArPSAzMikgeworICAgIFNDT1BFRF9UUkFDRShhbGlnbik7CisgICAgQVNTRVJU
X0xFKGFsaWduICoga051bVZhbHVlcywga1RvdGFsU2l6ZSk7CisKKyAgICBzaXplX3QgYml0c19v
ciA9IDA7CisgICAgc2l6ZV90IGJpdHNfYW5kID0gfnNpemVfdHt9OworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBrTnVtVmFsdWVzOyArK2kpIHsKKyAgICAgIHNpemVfdCBoYXNoID0gYWJz
bDo6SGFzaDx2b2lkKj4oKShkYXRhLmdldCgpICsgaSAqIGFsaWduKTsKKyAgICAgIGJpdHNfb3Ig
fD0gaGFzaDsKKyAgICAgIGJpdHNfYW5kICY9IGhhc2g7CisgICAgfQorCisgICAgLy8gTGltaXQg
dGhlIHNjb3BlIHRvIHRoZSBiaXRzIHdlIHdvdWxkIGJlIHVzaW5nIGZvciBTd2lzc3RhYmxlLgor
ICAgIGNvbnN0ZXhwciBzaXplX3Qga01hc2sgPSAoMSA8PCAoa0xvZzJOdW1WYWx1ZXMgKyA3KSkg
LSAxOworICAgIHNpemVfdCBzdHVja19iaXRzID0gKH5iaXRzX29yIHwgYml0c19hbmQpICYga01h
c2s7CisgICAgRVhQRUNUX0VRKHN0dWNrX2JpdHMsIDApIDw8ICIweCIgPDwgc3RkOjpoZXggPDwg
c3R1Y2tfYml0czsKKyAgfQorfQorCitURVNUKEhhc2hWYWx1ZVRlc3QsIFBhaXJBbmRUdXBsZSkg
eworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8c3RkOjpwYWlyPGludCwgaW50Pj46OnZhbHVl
KSk7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxzdGQ6OnBhaXI8Y29uc3QgaW50JiwgY29u
c3QgaW50Jj4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8c3RkOjp0dXBs
ZTxpbnQmLCBpbnQmPj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxzdGQ6
OnR1cGxlPGludCYmLCBpbnQmJj4+Ojp2YWx1ZSkpOworCisgIEVYUEVDVF9UUlVFKGFic2w6OlZl
cmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoc3RkOjptYWtlX3R1cGxlKAorICAg
ICAgc3RkOjptYWtlX3BhaXIoMCwgNDIpLCBzdGQ6Om1ha2VfcGFpcigwLCA0MiksIHN0ZDo6bWFr
ZV9wYWlyKDQyLCAwKSwKKyAgICAgIHN0ZDo6bWFrZV9wYWlyKDAsIDApLCBzdGQ6Om1ha2VfcGFp
cig0MiwgNDIpLCBzdGQ6Om1ha2VfcGFpcigxLCA0MikpKSk7CisKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIHN0ZDo6bWFr
ZV90dXBsZShzdGQ6Om1ha2VfdHVwbGUoMCwgMCwgMCksIHN0ZDo6bWFrZV90dXBsZSgwLCAwLCA0
MiksCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3R1cGxlKDAsIDIzLCAwKSwgc3Rk
OjptYWtlX3R1cGxlKDE3LCAwLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2Vf
dHVwbGUoNDIsIDAsIDApLCBzdGQ6Om1ha2VfdHVwbGUoMywgOSwgOSksCisgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYWtlX3R1cGxlKDAsIDAsIC00MikpKSk7CisKKyAgLy8gVGVzdCB0aGF0
IHR1cGxlcyBvZiBsdmFsdWUgcmVmZXJlbmNlcyB3b3JrIChzbyB3ZSBuZWVkIGEgZmV3IGx2YWx1
ZXMpOgorICBpbnQgYSA9IDAsIGIgPSAxLCBjID0gMTcsIGQgPSAyMzsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShzdGQ6Om1ha2VfdHVw
bGUoCisgICAgICBzdGQ6OnRpZShhLCBhKSwgc3RkOjp0aWUoYSwgYiksIHN0ZDo6dGllKGIsIGMp
LCBzdGQ6OnRpZShjLCBkKSkpKTsKKworICAvLyBUZXN0IHRoYXQgdHVwbGVzIG9mIHJ2YWx1ZSBy
ZWZlcmVuY2VzIHdvcms6CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRz
QWJzbEhhc2hDb3JyZWN0bHkoc3RkOjptYWtlX3R1cGxlKAorICAgICAgc3RkOjpmb3J3YXJkX2Fz
X3R1cGxlKDAsIDAsIDApLCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoMCwgMCwgNDIpLAorICAgICAg
c3RkOjpmb3J3YXJkX2FzX3R1cGxlKDAsIDIzLCAwKSwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKDE3
LCAwLCAwKSwKKyAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSg0MiwgMCwgMCksIHN0ZDo6Zm9y
d2FyZF9hc190dXBsZSgzLCA5LCA5KSwKKyAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgwLCAw
LCAtNDIpKSkpOworfQorCitURVNUKEhhc2hWYWx1ZVRlc3QsIENvbWJpbmVDb250aWd1b3VzV29y
a3MpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp0dXBsZTxpbnQ+PiB2MSA9IHtzdGQ6Om1ha2VfdHVw
bGUoMSksIHN0ZDo6bWFrZV90dXBsZSgzKX07CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dHVwbGU8aW50
Pj4gdjIgPSB7c3RkOjptYWtlX3R1cGxlKDEpLCBzdGQ6Om1ha2VfdHVwbGUoMil9OworCisgIGF1
dG8gdmgxID0gU3B5SGFzaCh2MSk7CisgIGF1dG8gdmgyID0gU3B5SGFzaCh2Mik7CisgIEVYUEVD
VF9ORSh2aDEsIHZoMik7Cit9CisKK3N0cnVjdCBEdW1teURlbGV0ZXIgeworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgdm9pZCBvcGVyYXRvcigpIChUKiBwdHIpIHt9Cit9OworCitzdHJ1Y3Qg
U21hcnRQb2ludGVyRXEgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAg
Ym9vbCBvcGVyYXRvcigpKGNvbnN0IFQmIHQsIGNvbnN0IFUmIHUpIGNvbnN0IHsKKyAgICByZXR1
cm4gR2V0UHRyKHQpID09IEdldFB0cih1KTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgorICBzdGF0aWMgYXV0byBHZXRQdHIoY29uc3QgVCYgdCkgLT4gZGVjbHR5cGUoJip0KSB7Cisg
ICAgcmV0dXJuIHQgPyAmKnQgOiBudWxscHRyOworICB9CisKKyAgc3RhdGljIHN0ZDo6bnVsbHB0
cl90IEdldFB0cihzdGQ6Om51bGxwdHJfdCkgeyByZXR1cm4gbnVsbHB0cjsgfQorfTsKKworVEVT
VChIYXNoVmFsdWVUZXN0LCBTbWFydFBvaW50ZXJzKSB7CisgIEVYUEVDVF9UUlVFKChpc19oYXNo
YWJsZTxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChpc19o
YXNoYWJsZTxzdGQ6OnVuaXF1ZV9wdHI8aW50LCBEdW1teURlbGV0ZXI+Pjo6dmFsdWUpKTsKKyAg
RVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPHN0ZDo6c2hhcmVkX3B0cjxpbnQ+Pjo6dmFsdWUpKTsK
KworICBpbnQgaSwgajsKKyAgc3RkOjp1bmlxdWVfcHRyPGludCwgRHVtbXlEZWxldGVyPiB1bmlx
dWUxKCZpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPGludCwgRHVtbXlEZWxldGVyPiB1bmlxdWUyKCZp
KTsKKyAgc3RkOjp1bmlxdWVfcHRyPGludCwgRHVtbXlEZWxldGVyPiB1bmlxdWVfb3RoZXIoJmop
OworICBzdGQ6OnVuaXF1ZV9wdHI8aW50LCBEdW1teURlbGV0ZXI+IHVuaXF1ZV9udWxsOworCisg
IHN0ZDo6c2hhcmVkX3B0cjxpbnQ+IHNoYXJlZDEoJmksIER1bW15RGVsZXRlcigpKTsKKyAgc3Rk
OjpzaGFyZWRfcHRyPGludD4gc2hhcmVkMigmaSwgRHVtbXlEZWxldGVyKCkpOworICBzdGQ6OnNo
YXJlZF9wdHI8aW50PiBzaGFyZWRfb3RoZXIoJmosIER1bW15RGVsZXRlcigpKTsKKyAgc3RkOjpz
aGFyZWRfcHRyPGludD4gc2hhcmVkX251bGw7CisKKyAgLy8gU2FuaXR5IGNoZWNrIG9mIHRoZSBF
cSBmdW5jdGlvbi4KKyAgQVNTRVJUX1RSVUUoU21hcnRQb2ludGVyRXF7fSh1bmlxdWUxLCBzaGFy
ZWQxKSk7CisgIEFTU0VSVF9GQUxTRShTbWFydFBvaW50ZXJFcXt9KHVuaXF1ZTEsIHNoYXJlZF9v
dGhlcikpOworICBBU1NFUlRfVFJVRShTbWFydFBvaW50ZXJFcXt9KHVuaXF1ZV9udWxsLCBudWxs
cHRyKSk7CisgIEFTU0VSVF9GQUxTRShTbWFydFBvaW50ZXJFcXt9KHNoYXJlZDIsIG51bGxwdHIp
KTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29y
cmVjdGx5KAorICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKCZpLCBudWxscHRyLCAgICAgICAg
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUxLCB1bmlx
dWUyLCB1bmlxdWVfbnVsbCwgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
bWFrZV91bmlxdWU8aW50PigpLCAgICAgICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNoYXJlZDEsIHNoYXJlZDIsIHNoYXJlZF9udWxsLCAgLy8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1ha2Vfc2hhcmVkPGludD4oKSksCisgICAgICBTbWFydFBvaW50ZXJFcXt9
KSk7Cit9CisKK1RFU1QoSGFzaFZhbHVlVGVzdCwgRnVuY3Rpb25Qb2ludGVyKSB7CisgIHVzaW5n
IEZ1bmMgPSBpbnQgKCopKCk7CisgIEVYUEVDVF9UUlVFKGlzX2hhc2hhYmxlPEZ1bmM+Ojp2YWx1
ZSk7CisKKyAgRnVuYyBwMSA9IFtdIHsgcmV0dXJuIDI7IH0sIHAyID0gW10geyByZXR1cm4gMTsg
fTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJl
Y3RseSgKKyAgICAgIHN0ZDo6bWFrZV90dXBsZShwMSwgcDIsIG51bGxwdHIpKSk7Cit9CisKK3N0
cnVjdCBXcmFwSW5UdXBsZSB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGQ6OnR1cGxl
PGludCwgVCwgc2l6ZV90PiBvcGVyYXRvcigpKGNvbnN0IFQmIHQpIGNvbnN0IHsKKyAgICByZXR1
cm4gc3RkOjptYWtlX3R1cGxlKDcsIHQsIDB4ZGVhZGJlZWYpOworICB9Cit9OworCitURVNUKEhh
c2hWYWx1ZVRlc3QsIFN0cmluZ3MpIHsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPHN0ZDo6
c3RyaW5nPjo6dmFsdWUpKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBzbWFsbCA9ICJmb28iOwor
ICBjb25zdCBzdGQ6OnN0cmluZyBkdXAgPSAiZm9vZm9vIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
bGFyZ2UgPSAibGFyZ2UiOworICBjb25zdCBzdGQ6OnN0cmluZyBodWdlID0gc3RkOjpzdHJpbmco
NTAwMCwgJ2EnKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fi
c2xIYXNoQ29ycmVjdGx5KHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgIHN0ZDo6c3RyaW5nKCksIGFi
c2w6OnN0cmluZ192aWV3KCksCisgICAgICBzdGQ6OnN0cmluZygiIiksIGFic2w6OnN0cmluZ192
aWV3KCIiKSwKKyAgICAgIHN0ZDo6c3RyaW5nKHNtYWxsKSwgYWJzbDo6c3RyaW5nX3ZpZXcoc21h
bGwpLAorICAgICAgc3RkOjpzdHJpbmcoZHVwKSwgYWJzbDo6c3RyaW5nX3ZpZXcoZHVwKSwKKyAg
ICAgIHN0ZDo6c3RyaW5nKGxhcmdlKSwgYWJzbDo6c3RyaW5nX3ZpZXcobGFyZ2UpLAorICAgICAg
c3RkOjpzdHJpbmcoaHVnZSksIGFic2w6OnN0cmluZ192aWV3KGh1Z2UpKSkpOworCisgIC8vIEFs
c28gY2hlY2sgdGhhdCBuZXN0ZWQgdHlwZXMgbWFpbnRhaW4gdGhlIHNhbWUgaGFzaC4KKyAgY29u
c3QgV3JhcEluVHVwbGUgdHt9OworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVt
ZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgIHQoc3RkOjpzdHJp
bmcoKSksIHQoYWJzbDo6c3RyaW5nX3ZpZXcoKSksCisgICAgICB0KHN0ZDo6c3RyaW5nKCIiKSks
IHQoYWJzbDo6c3RyaW5nX3ZpZXcoIiIpKSwKKyAgICAgIHQoc3RkOjpzdHJpbmcoc21hbGwpKSwg
dChhYnNsOjpzdHJpbmdfdmlldyhzbWFsbCkpLAorICAgICAgdChzdGQ6OnN0cmluZyhkdXApKSwg
dChhYnNsOjpzdHJpbmdfdmlldyhkdXApKSwKKyAgICAgIHQoc3RkOjpzdHJpbmcobGFyZ2UpKSwg
dChhYnNsOjpzdHJpbmdfdmlldyhsYXJnZSkpLAorICAgICAgdChzdGQ6OnN0cmluZyhodWdlKSks
IHQoYWJzbDo6c3RyaW5nX3ZpZXcoaHVnZSkpKSkpOworCisgIC8vIE1ha2Ugc3VyZSB0aGF0IGhh
c2hpbmcgYSBgY29uc3QgY2hhcipgIGRvZXMgbm90IHVzZSBpdHMgc3RkOjpzdHJpbmctdmFsdWUu
CisgIEVYUEVDVF9ORShTcHlIYXNoKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPigiQUJDIikpLAor
ICAgICAgICAgICAgU3B5SGFzaChhYnNsOjpzdHJpbmdfdmlldygiQUJDIikpKTsKK30KKworVEVT
VChIYXNoVmFsdWVUZXN0LCBTdGRBcnJheSkgeworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8
c3RkOjphcnJheTxpbnQsIDM+Pjo6dmFsdWUpKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJp
ZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAgICAgc3RkOjptYWtlX3R1cGxl
KHN0ZDo6YXJyYXk8aW50LCAzPnt9LCBzdGQ6OmFycmF5PGludCwgMz57ezAsIDIzLCA0Mn19KSkp
OworfQorCitURVNUKEhhc2hWYWx1ZVRlc3QsIFN0ZEJpdHNldCkgeworICBFWFBFQ1RfVFJVRSgo
aXNfaGFzaGFibGU8c3RkOjpiaXRzZXQ8MjU3Pj46OnZhbHVlKSk7CisKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIHtzdGQ6
OmJpdHNldDwyPigiMDAiKSwgc3RkOjpiaXRzZXQ8Mj4oIjAxIiksIHN0ZDo6Yml0c2V0PDI+KCIx
MCIpLAorICAgICAgIHN0ZDo6Yml0c2V0PDI+KCIxMSIpfSkpOworICBFWFBFQ1RfVFJVRShhYnNs
OjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAgICAge3N0ZDo6Yml0
c2V0PDU+KCIxMDEwMSIpLCBzdGQ6OmJpdHNldDw1PigiMTAwMDEiKSwgc3RkOjpiaXRzZXQ8NT4o
KX0pKTsKKworICBjb25zdGV4cHIgaW50IGtOdW1CaXRzID0gMjU2OworICBzdGQ6OmFycmF5PHN0
ZDo6c3RyaW5nLCA2PiBiaXRfc3RyaW5nczsKKyAgYml0X3N0cmluZ3MuZmlsbChzdGQ6OnN0cmlu
ZyhrTnVtQml0cywgJzEnKSk7CisgIGJpdF9zdHJpbmdzWzFdWzBdID0gJzAnOworICBiaXRfc3Ry
aW5nc1syXVsxXSA9ICcwJzsKKyAgYml0X3N0cmluZ3NbM11ba051bUJpdHMgLyAzXSA9ICcwJzsK
KyAgYml0X3N0cmluZ3NbNF1ba051bUJpdHMgLSAyXSA9ICcwJzsKKyAgYml0X3N0cmluZ3NbNV1b
a051bUJpdHMgLSAxXSA9ICcwJzsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxl
bWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIHtzdGQ6OmJpdHNldDxrTnVtQml0cz4oYml0
X3N0cmluZ3NbMF0uY19zdHIoKSksCisgICAgICAgc3RkOjpiaXRzZXQ8a051bUJpdHM+KGJpdF9z
dHJpbmdzWzFdLmNfc3RyKCkpLAorICAgICAgIHN0ZDo6Yml0c2V0PGtOdW1CaXRzPihiaXRfc3Ry
aW5nc1syXS5jX3N0cigpKSwKKyAgICAgICBzdGQ6OmJpdHNldDxrTnVtQml0cz4oYml0X3N0cmlu
Z3NbM10uY19zdHIoKSksCisgICAgICAgc3RkOjpiaXRzZXQ8a051bUJpdHM+KGJpdF9zdHJpbmdz
WzRdLmNfc3RyKCkpLAorICAgICAgIHN0ZDo6Yml0c2V0PGtOdW1CaXRzPihiaXRfc3RyaW5nc1s1
XS5jX3N0cigpKX0pKTsKK30gIC8vIG5hbWVzcGFjZQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIEhhc2hWYWx1ZVNlcXVlbmNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307
CitUWVBFRF9URVNUX1NVSVRFX1AoSGFzaFZhbHVlU2VxdWVuY2VUZXN0KTsKKworVFlQRURfVEVT
VF9QKEhhc2hWYWx1ZVNlcXVlbmNlVGVzdCwgQmFzaWNVc2FnZSkgeworICBFWFBFQ1RfVFJVRSgo
aXNfaGFzaGFibGU8VHlwZVBhcmFtPjo6dmFsdWUpKTsKKworICB1c2luZyBWYWx1ZVR5cGUgPSB0
eXBlbmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGU7CisgIGF1dG8gYSA9IHN0YXRpY19jYXN0PFZh
bHVlVHlwZT4oMCk7CisgIGF1dG8gYiA9IHN0YXRpY19jYXN0PFZhbHVlVHlwZT4oMjMpOworICBh
dXRvIGMgPSBzdGF0aWNfY2FzdDxWYWx1ZVR5cGU+KDQyKTsKKworICBFWFBFQ1RfVFJVRShhYnNs
OjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAgICAgc3RkOjptYWtl
X3R1cGxlKFR5cGVQYXJhbSgpLCBUeXBlUGFyYW17fSwgVHlwZVBhcmFte2EsIGIsIGN9LAorICAg
ICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbXthLCBifSwgVHlwZVBhcmFte2IsIGN9KSkpOwor
fQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChIYXNoVmFsdWVTZXF1ZW5jZVRlc3QsIEJh
c2ljVXNhZ2UpOwordXNpbmcgSW50U2VxdWVuY2VUeXBlcyA9CisgICAgdGVzdGluZzo6VHlwZXM8
c3RkOjpkZXF1ZTxpbnQ+LCBzdGQ6OmZvcndhcmRfbGlzdDxpbnQ+LCBzdGQ6Omxpc3Q8aW50PiwK
KyAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+LCBzdGQ6OnZlY3Rvcjxib29sPiwg
c3RkOjpzZXQ8aW50PiwKKyAgICAgICAgICAgICAgICAgICBzdGQ6Om11bHRpc2V0PGludD4+Owor
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEhhc2hWYWx1ZVNlcXVlbmNlVGVzdCwg
SW50U2VxdWVuY2VUeXBlcyk7CisKKy8vIFByaXZhdGUgdHlwZSB0aGF0IG9ubHkgc3VwcG9ydHMg
QWJzbEhhc2hWYWx1ZSB0byBtYWtlIHN1cmUgb3VyIGNob3NlbiBoYXNoCisvLyBpbXBsZW50YXRp
b24gaXMgcmVjdXJzaXZlIHdpdGhpbiBhYnNsOjpIYXNoLgorLy8gSXQgdXNlcyBzdGQ6OmFicygp
IG9uIHRoZSB2YWx1ZSB0byBwcm92aWRlIGRpZmZlcmVudCBiaXR3aXNlIHJlcHJlc2VudGF0aW9u
cworLy8gb2YgdGhlIHNhbWUgbG9naWNhbCB2YWx1ZS4KK3N0cnVjdCBQcml2YXRlIHsKKyAgaW50
IGk7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEgg
aCwgUHJpdmF0ZSBwKSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBzdGQ6
OmFicyhwLmkpKTsKKyAgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oUHJpdmF0ZSBhLCBQ
cml2YXRlIGIpIHsKKyAgICByZXR1cm4gc3RkOjphYnMoYS5pKSA9PSBzdGQ6OmFicyhiLmkpOwor
ICB9CisKKyAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG8s
IFByaXZhdGUgcCkgeworICAgIHJldHVybiBvIDw8IHAuaTsKKyAgfQorfTsKKworVEVTVChIYXNo
VmFsdWVUZXN0LCBQcml2YXRlU2FuaXR5KSB7CisgIC8vIFNhbml0eSBjaGVjayB0aGF0IFByaXZh
dGUgaXMgd29ya2luZyBhcyB0aGUgdGVzdHMgYmVsb3cgZXhwZWN0IGl0IHRvIHdvcmsuCisgIEVY
UEVDVF9UUlVFKGlzX2hhc2hhYmxlPFByaXZhdGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9ORShTcHlI
YXNoKFByaXZhdGV7MH0pLCBTcHlIYXNoKFByaXZhdGV7MX0pKTsKKyAgRVhQRUNUX0VRKFNweUhh
c2goUHJpdmF0ZXsxfSksIFNweUhhc2goUHJpdmF0ZXsxfSkpOworfQorCitURVNUKEhhc2hWYWx1
ZVRlc3QsIE9wdGlvbmFsKSB7CisgIEVYUEVDVF9UUlVFKGlzX2hhc2hhYmxlPGFic2w6Om9wdGlv
bmFsPFByaXZhdGU+Pjo6dmFsdWUpOworCisgIHVzaW5nIE8gPSBhYnNsOjpvcHRpb25hbDxQcml2
YXRlPjsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENv
cnJlY3RseSgKKyAgICAgIHN0ZDo6bWFrZV90dXBsZShPe30sIE97ezF9fSwgT3t7LTF9fSwgT3t7
MTB9fSkpKTsKK30KKworVEVTVChIYXNoVmFsdWVUZXN0LCBWYXJpYW50KSB7CisgIHVzaW5nIFYg
PSBhYnNsOjp2YXJpYW50PFByaXZhdGUsIHN0ZDo6c3RyaW5nPjsKKyAgRVhQRUNUX1RSVUUoaXNf
aGFzaGFibGU8Vj46OnZhbHVlKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1w
bGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgIFYoUHJpdmF0
ZXsxfSksIFYoUHJpdmF0ZXstMX0pLCBWKFByaXZhdGV7Mn0pLCBWKCJBQkMiKSwgVigiQkNEIikp
KSk7CisKKyNpZiBBQlNMX01FVEFfSU5URVJOQUxfU1REX0hBU0hfU0ZJTkFFX0ZSSUVORExZXwor
ICBzdHJ1Y3QgUyB7fTsKKyAgRVhQRUNUX0ZBTFNFKGlzX2hhc2hhYmxlPGFic2w6OnZhcmlhbnQ8
Uz4+Ojp2YWx1ZSk7CisjZW5kaWYKK30KKworVEVTVChIYXNoVmFsdWVUZXN0LCBNYXBzKSB7Cisg
IEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPj46OnZh
bHVlKSk7CisKKyAgdXNpbmcgTSA9IHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+OworICBFWFBF
Q1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6
bWFrZV90dXBsZSgKKyAgICAgIE17fSwgTXt7MCwgImZvbyJ9fSwgTXt7MSwgImZvbyJ9fSwgTXt7
MCwgImJhciJ9fSwgTXt7MSwgImJhciJ9fSwKKyAgICAgIE17ezAsICJmb28ifSwgezQyLCAiYmFy
In19LCBNe3sxLCAiZm9vIn0sIHs0MiwgImJhciJ9fSwKKyAgICAgIE17ezEsICJmb28ifSwgezQz
LCAiYmFyIn19LCBNe3sxLCAiZm9vIn0sIHs0MywgImJheiJ9fSkpKTsKKworICB1c2luZyBNTSA9
IHN0ZDo6bXVsdGltYXA8aW50LCBzdGQ6OnN0cmluZz47CisgIEVYUEVDVF9UUlVFKGFic2w6OlZl
cmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoc3RkOjptYWtlX3R1cGxlKAorICAg
ICAgTU17fSwgTU17ezAsICJmb28ifX0sIE1Ne3sxLCAiZm9vIn19LCBNTXt7MCwgImJhciJ9fSwg
TU17ezEsICJiYXIifX0sCisgICAgICBNTXt7MCwgImZvbyJ9LCB7MCwgImJhciJ9fSwgTU17ezAs
ICJiYXIifSwgezAsICJmb28ifX0sCisgICAgICBNTXt7MCwgImZvbyJ9LCB7NDIsICJiYXIifX0s
IE1Ne3sxLCAiZm9vIn0sIHs0MiwgImJhciJ9fSwKKyAgICAgIE1Ne3sxLCAiZm9vIn0sIHsxLCAi
Zm9vIn0sIHs0MywgImJhciJ9fSwgTU17ezEsICJmb28ifSwgezQzLCAiYmF6In19KSkpOworfQor
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPgotc3RydWN0IElzSGFzaENh
bGxibGUgOiBzdGQ6OmZhbHNlX3R5cGUge307CitzdHJ1Y3QgSXNIYXNoQ2FsbGFibGUgOiBzdGQ6
OmZhbHNlX3R5cGUge307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IElzSGFzaENh
bGxibGU8VCwgYWJzbDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxhYnNsOjpIYXNoPFQ+
PigpKAorc3RydWN0IElzSGFzaENhbGxhYmxlPFQsIGFic2w6OnZvaWRfdDxkZWNsdHlwZShzdGQ6
OmRlY2x2YWw8YWJzbDo6SGFzaDxUPj4oKSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmRlY2x2YWw8Y29uc3QgVCY+KCkpKT4+IDogc3RkOjp0cnVlX3R5cGUge307CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+CkBAIC0xMDUsMTAgKzQ0NCwxMSBAQCBU
RVNUKElzSGFzaGFibGVUZXN0LCBWYWxpZEhhc2gpIHsKICAgRVhQRUNUX1RSVUUoc3RkOjppc19t
b3ZlX2NvbnN0cnVjdGlibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOwogICBFWFBFQ1RfVFJV
RShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOwogICBF
WFBFQ1RfVFJVRShhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFs
dWUpOwotICBFWFBFQ1RfVFJVRShJc0hhc2hDYWxsYmxlPGludD46OnZhbHVlKTsKKyAgRVhQRUNU
X1RSVUUoSXNIYXNoQ2FsbGFibGU8aW50Pjo6dmFsdWUpOwogICBFWFBFQ1RfVFJVRShJc0FnZ3Jl
Z2F0ZUluaXRpYWxpemFibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOwogfQotI2lmIEFCU0xf
SEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXyAmJiAhZGVmaW5lZChfX0FQUExFX18pCisKKyNpZiBB
QlNMX01FVEFfSU5URVJOQUxfU1REX0hBU0hfU0ZJTkFFX0ZSSUVORExZXwogVEVTVChJc0hhc2hh
YmxlVGVzdCwgUG9pc29uSGFzaCkgewogICBzdHJ1Y3QgWCB7fTsKICAgRVhQRUNUX0ZBTFNFKChp
c19oYXNoYWJsZTxYPjo6dmFsdWUpKTsKQEAgLTExNywxMCArNDU3LDEwIEBAIFRFU1QoSXNIYXNo
YWJsZVRlc3QsIFBvaXNvbkhhc2gpIHsKICAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNfbW92ZV9jb25z
dHJ1Y3RpYmxlPGFic2w6Okhhc2g8WD4+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9GQUxTRShhYnNsOjpp
c19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxYPj46OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNF
KGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpIYXNoPFg+Pjo6dmFsdWUpOwotICBFWFBF
Q1RfRkFMU0UoSXNIYXNoQ2FsbGJsZTxYPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoSXNIYXNo
Q2FsbGFibGU8WD46OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNFKElzQWdncmVnYXRlSW5pdGlhbGl6
YWJsZTxhYnNsOjpIYXNoPFg+Pjo6dmFsdWUpOwogfQotI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5U
RVJOQUxfQ0FOX1BPSVNPTl8KKyNlbmRpZiAgLy8gQUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNI
X1NGSU5BRV9GUklFTkRMWV8KIAogLy8gSGFzaGFibGUgdHlwZXMKIC8vCkBAIC0xMjksNyArNDY5
LDcgQEAgVEVTVChJc0hhc2hhYmxlVGVzdCwgUG9pc29uSGFzaCkgewogc3RydWN0IE5vT3Agewog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaENvZGU+CiAgIGZyaWVuZCBIYXNoQ29kZSBBYnNsSGFz
aFZhbHVlKEhhc2hDb2RlIGgsIE5vT3AgbikgewotICAgIHJldHVybiBzdGQ6Om1vdmUoaCk7Cisg
ICAgcmV0dXJuIGg7CiAgIH0KIH07CiAKQEAgLTE1OSw4ICs0OTksMTYgQEAgc3RydWN0IENvbWJp
bmVWYXJpYWRpYyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludCg0KSk7CiAgIH0K
IH07CitlbnVtIGNsYXNzIEludm9rZVRhZyB7CisgIGtVbmlxdWVseVJlcHJlc2VudGVkLAorICBr
SGFzaFZhbHVlLAorI2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXwor
ICBrTGVnYWN5SGFzaCwKKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVH
QUNZX0hBU0hfCisgIGtTdGRIYXNoLAorICBrTm9uZQorfTsKIAotdXNpbmcgSW52b2tlVGFnID0g
YWJzbDo6aGFzaF9pbnRlcm5hbDo6SW52b2tlSGFzaFRhZzsKIHRlbXBsYXRlIDxJbnZva2VUYWcg
VD4KIHVzaW5nIEludm9rZVRhZ0NvbnN0YW50ID0gc3RkOjppbnRlZ3JhbF9jb25zdGFudDxJbnZv
a2VUYWcsIFQ+OwogCkBAIC0xNzUsNiArNTIzLDcgQEAgc3RydWN0IE1pblRhZzxhPiA6IEludm9r
ZVRhZ0NvbnN0YW50PGE+IHt9OwogCiB0ZW1wbGF0ZSA8SW52b2tlVGFnLi4uIFRhZ3M+CiBzdHJ1
Y3QgQ3VzdG9tSGFzaFR5cGUgeworICBleHBsaWNpdCBDdXN0b21IYXNoVHlwZShzaXplX3QgdmFs
KSA6IHZhbHVlKHZhbCkge30KICAgc2l6ZV90IHZhbHVlOwogfTsKIApAQCAtMjQxLDE3ICs1OTAs
MTcgQEAgdm9pZCBUZXN0Q3VzdG9tSGFzaFR5cGUoSW52b2tlVGFnQ29uc3RhbnQ8SW52b2tlVGFn
OjprTm9uZT4sIFQuLi4pIHsKICAgRVhQRUNUX1RSVUUoaXNfaGFzaGFibGU8Y29uc3QgdHlwZSY+
KCkpOwogCiAgIGNvbnN0IHNpemVfdCBvZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bWlu
KHtUOjp2YWx1ZS4uLn0pKTsKLSAgRVhQRUNUX0VRKFNweUhhc2godHlwZXs3fSksIFNweUhhc2go
c2l6ZV90ezcgKyBvZmZzZXR9KSk7CisgIEVYUEVDVF9FUShTcHlIYXNoKHR5cGUoNykpLCBTcHlI
YXNoKHNpemVfdHs3ICsgb2Zmc2V0fSkpOwogfQogCiB2b2lkIFRlc3RDdXN0b21IYXNoVHlwZShJ
bnZva2VUYWdDb25zdGFudDxJbnZva2VUYWc6OmtOb25lPikgewotI2lmIEFCU0xfSEFTSF9JTlRF
Uk5BTF9DQU5fUE9JU09OXworI2lmIEFCU0xfTUVUQV9JTlRFUk5BTF9TVERfSEFTSF9TRklOQUVf
RlJJRU5ETFlfCiAgIC8vIGlzX2hhc2hhYmxlIGlzIGZhbHNlIGlmIHdlIGRvbid0IHN1cHBvcnQg
YW55IG9mIHRoZSBob29rcy4KICAgdXNpbmcgdHlwZSA9IEN1c3RvbUhhc2hUeXBlPD47CiAgIEVY
UEVDVF9GQUxTRShpc19oYXNoYWJsZTx0eXBlPigpKTsKICAgRVhQRUNUX0ZBTFNFKGlzX2hhc2hh
YmxlPGNvbnN0IHR5cGU+KCkpOwogICBFWFBFQ1RfRkFMU0UoaXNfaGFzaGFibGU8Y29uc3QgdHlw
ZSY+KCkpOwotI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8KKyNlbmRp
ZiAgLy8gQUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNIX1NGSU5BRV9GUklFTkRMWV8KIH0KIAog
dGVtcGxhdGUgPEludm9rZVRhZyBUYWcsIHR5cGVuYW1lLi4uIFQ+CkBAIC0yNzMsNyArNjIyLDcg
QEAgVEVTVChIYXNoVGVzdCwgTm9PcHNBcmVFcXVpdmFsZW50KSB7CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KIGNsYXNzIEhhc2hJbnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogfTsKLVRZ
UEVEX1RFU1RfQ0FTRV9QKEhhc2hJbnRUZXN0KTsKK1RZUEVEX1RFU1RfU1VJVEVfUChIYXNoSW50
VGVzdCk7CiAKIFRZUEVEX1RFU1RfUChIYXNoSW50VGVzdCwgQmFzaWNVc2FnZSkgewogICBFWFBF
Q1RfTkUoSGFzaDxOb09wPigpKHt9KSwgSGFzaDxUeXBlUGFyYW0+KCkoMCkpOwpAQCAtMzUyLDcg
KzcwMSw4IEBAIFRFU1QoSGFzaFRlc3QsIEhhc2hOb25VbmlxdWVseVJlcHJlc2VudGVkVHlwZSkg
ewogfQogCiBURVNUKEhhc2hUZXN0LCBTdGFuZGFyZEhhc2hDb250YWluZXJVc2FnZSkgewotICBz
dGQ6OnVub3JkZXJlZF9tYXA8aW50LCBzdGQ6OnN0cmluZywgSGFzaDxpbnQ+PiBtYXAgPSB7ezAs
ICJmb28ifSwgeyA0MiwgImJhciIgfX07CisgIHN0ZDo6dW5vcmRlcmVkX21hcDxpbnQsIHN0ZDo6
c3RyaW5nLCBIYXNoPGludD4+IG1hcCA9IHt7MCwgImZvbyJ9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezQyLCAiYmFyIn19OwogCiAg
IEVYUEVDVF9ORShtYXAuZmluZCgwKSwgbWFwLmVuZCgpKTsKICAgRVhQRUNUX0VRKG1hcC5maW5k
KDEpLCBtYXAuZW5kKCkpOwpAQCAtNDIyLDQgKzc3MiwyNCBAQCBURVNUKEhhc2hUZXN0LCBUeXBl
RXJhc2VkKSB7CiAgICAgICAgICAgICBTcHlIYXNoKHN0ZDo6bWFrZV9wYWlyKHNpemVfdHs3fSwg
MTcpKSk7CiB9CiAKK3N0cnVjdCBWYWx1ZVdpdGhCb29sQ29udmVyc2lvbiB7CisgIG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICBpbnQgaTsKK307CisKK30gIC8vIG5h
bWVzcGFjZQorbmFtZXNwYWNlIHN0ZCB7Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IGhhc2g8VmFsdWVX
aXRoQm9vbENvbnZlcnNpb24+IHsKKyAgc2l6ZV90IG9wZXJhdG9yKCkoVmFsdWVXaXRoQm9vbENv
bnZlcnNpb24gdikgeyByZXR1cm4gdi5pOyB9Cit9OworfSAgLy8gbmFtZXNwYWNlIHN0ZAorCitu
YW1lc3BhY2UgeworCitURVNUKEhhc2hUZXN0LCBEb2VzTm90VXNlSW1wbGljaXRDb252ZXJzaW9u
c1RvQm9vbCkgeworICBFWFBFQ1RfTkUoYWJzbDo6SGFzaDxWYWx1ZVdpdGhCb29sQ29udmVyc2lv
bj4oKShWYWx1ZVdpdGhCb29sQ29udmVyc2lvbnswfSksCisgICAgICAgICAgICBhYnNsOjpIYXNo
PFZhbHVlV2l0aEJvb2xDb252ZXJzaW9uPigpKFZhbHVlV2l0aEJvb2xDb252ZXJzaW9uezF9KSk7
Cit9CisKIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoX3Rlc3Rp
bmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgKaW5kZXggMWUzY2RhNjQ0NjdkZmFiMGVl
MTY2MWMwNzVmNjNjMDZiYzIxODAwZC4uYzQ1YmMxNTQ5ODJiNTFhMWE3ZmExMGZmNWM4MDU4ZjQ0
MDE0ZWZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoX3Rlc3RpbmcuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9oYXNoL2hhc2hfdGVzdGluZy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCkBAIC05MCw3ICs5MCw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEg+CiAvLyAgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBzdGF0ZSwgQmFkMiB4
KSB7CiAvLyAgICAgLy8gVXNlcyBhIGFuZCBiLgotLy8gICAgIHJldHVybiBIOjpjb21iaW5lKHgu
YSwgeC5iKTsKKy8vICAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCB4LmEs
IHguYik7CiAvLyAgIH0KIC8vICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShCYWQyIHgsIEJhZDIg
eSkgewogLy8gICAgIC8vIE9ubHkgdXNlcyBhLgpAQCAtMTA3LDcgKzEwNyw3IEBAIG5hbWVzcGFj
ZSBhYnNsIHsKIC8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CiAvLyAgIGZyaWVuZCBIIEFic2xI
YXNoVmFsdWUoSCBzdGF0ZSwgQmFkMyB4KSB7CiAvLyAgICAgLy8gT25seSB1c2VzIGEuCi0vLyAg
ICAgcmV0dXJuIEg6OmNvbWJpbmUoeC5hKTsKKy8vICAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6
Om1vdmUoc3RhdGUpLCB4LmEpOwogLy8gICB9CiAvLyAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0o
QmFkMyB4LCBCYWQzIHkpIHsKIC8vICAgICAvLyBVc2VzIGEgYW5kIGIuCkBAIC0xMjMsMTkgKzEy
MywyMSBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAgIGludCAqcCwgc2l6ZTsKIC8vICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEg+CiAvLyAgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBzdGF0ZSwgQmFk
NCB4KSB7Ci0vLyAgICAgcmV0dXJuIEg6OmNvbWJpbmVfcmFuZ2UoeC5wLCB4LnAgKyB4LnNpemUp
OworLy8gICAgIHJldHVybiBIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKHN0YXRlKSwg
eC5wLCB4LnAgKyB4LnNpemUpOwogLy8gICB9CiAvLyAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0o
QmFkNCB4LCBCYWQ0IHkpIHsKLS8vICAgICByZXR1cm4gc3RkOjplcXVhbCh4LnAsIHgucCArIHgu
c2l6ZSwgeS5wLCB5LnAgKyB5LnNpemUpOworLy8gICAgLy8gQ29tcGFyZSB0d28gcmFuZ2VzIGZv
ciBlcXVhbGl0eS4gQysrMTQgY29kZSBjYW4gaW5zdGVhZCB1c2Ugc3RkOjplcXVhbC4KKy8vICAg
ICByZXR1cm4gYWJzbDo6ZXF1YWwoeC5wLCB4LnAgKyB4LnNpemUsIHkucCwgeS5wICsgeS5zaXpl
KTsKIC8vICAgfQogLy8gfTsKIC8vCiAvLyBBbiBlYXN5IHNvbHV0aW9uIHRvIHRoaXMgaXMgdG8g
Y29tYmluZSB0aGUgc2l6ZSBhZnRlciBjb21iaW5pbmcgdGhlIHJhbmdlLAogLy8gbGlrZSBzbzoK
LS8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+Ci0vLyAgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUo
SCBzdGF0ZSwgQmFkNCB4KSB7Ci0vLyAgICAgcmV0dXJuIEg6OmNvbWJpbmUoSDo6Y29tYmluZV9y
YW5nZSh4LnAsIHgucCArIHguc2l6ZSksIHguc2l6ZSk7Ci0vLyAgIH0KKy8vIHRlbXBsYXRlIDx0
eXBlbmFtZSBIPgorLy8gZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBCYWQ0IHgpIHsK
Ky8vICAgcmV0dXJuIEg6OmNvbWJpbmUoCisvLyAgICAgICBIOjpjb21iaW5lX2NvbnRpZ3VvdXMo
c3RkOjptb3ZlKHN0YXRlKSwgeC5wLCB4LnAgKyB4LnNpemUpLCB4LnNpemUpOworLy8gfQogLy8K
IHRlbXBsYXRlIDxpbnQmLi4uIEV4cGxpY2l0QmFycmllciwgdHlwZW5hbWUgQ29udGFpbmVyPgog
QUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CkBAIC0xODgsNyAr
MTkwLDkgQEAgVmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShjb25zdCBDb250
YWluZXImIHZhbHVlcywgRXEgZXF1YWxzKSB7CiAgIHN0cnVjdCBJbmZvIHsKICAgICBjb25zdCBW
JiB2YWx1ZTsKICAgICBzaXplX3QgaW5kZXg7Ci0gICAgc3RkOjpzdHJpbmcgVG9TdHJpbmcoKSBj
b25zdCB7IHJldHVybiBhYnNsOjp2aXNpdChQcmludFZpc2l0b3J7aW5kZXh9LCB2YWx1ZSk7IH0K
KyAgICBzdGQ6OnN0cmluZyBUb1N0cmluZygpIGNvbnN0IHsKKyAgICAgIHJldHVybiBhYnNsOjp2
aXNpdChQcmludFZpc2l0b3J7aW5kZXh9LCB2YWx1ZSk7CisgICAgfQogICAgIFNweUhhc2hTdGF0
ZSBleHBhbmQoKSBjb25zdCB7IHJldHVybiBhYnNsOjp2aXNpdChFeHBhbmRWaXNpdG9ye30sIHZh
bHVlKTsgfQogICB9OwogCkBAIC0yMjcsNyArMjMxLDggQEAgVmVyaWZ5VHlwZUltcGxlbWVudHNB
YnNsSGFzaENvcnJlY3RseShjb25zdCBDb250YWluZXImIHZhbHVlcywgRXEgZXF1YWxzKSB7CiAg
IC8vIE5vdyB3ZSB2ZXJpZnkgdGhhdCBBYnNsSGFzaFZhbHVlIGlzIGFsc28gY29ycmVjdGx5IGlt
cGxlbWVudGVkLgogCiAgIGZvciAoY29uc3QgYXV0byYgYyA6IGNsYXNzZXMpIHsKLSAgICAvLyBB
bGwgZWxlbWVudHMgb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG11c3QgaGF2ZSB0aGUgc2FtZSBo
YXNoIGV4cGFuc2lvbi4KKyAgICAvLyBBbGwgZWxlbWVudHMgb2YgdGhlIGVxdWl2YWxlbmNlIGNs
YXNzIG11c3QgaGF2ZSB0aGUgc2FtZSBoYXNoCisgICAgLy8gZXhwYW5zaW9uLgogICAgIGNvbnN0
IFNweUhhc2hTdGF0ZSBleHBlY3RlZCA9IGNbMF0uZXhwYW5kKCk7CiAgICAgZm9yIChjb25zdCBJ
bmZvJiB2IDogYykgewogICAgICAgaWYgKHYuZXhwYW5kKCkgIT0gdi5leHBhbmQoKSkgewpAQCAt
Mjg1LDcgKzI5MCw3IEBAIHN0cnVjdCBUeXBlU2V0IHsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBUPgotc3RydWN0IE1ha2VUeXBlU2V0IDogVHlwZVNldDw+e307CitzdHJ1Y3QgTWFrZVR5
cGVTZXQgOiBUeXBlU2V0PD4ge307CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4g
VHM+CiBzdHJ1Y3QgTWFrZVR5cGVTZXQ8VCwgVHMuLi4+IDogTWFrZVR5cGVTZXQ8VHMuLi4+Ojp0
ZW1wbGF0ZSBJbnNlcnQ8VD46OnR5cGUge307CiAKQEAgLTM0Niw4ICszNTEsNyBAQCB0ZW1wbGF0
ZSA8aW50Ji4uLiwgdHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBFcT4KIEFCU0xfTVVTVF9V
U0VfUkVTVUxUIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdAogVmVyaWZ5VHlwZUltcGxlbWVudHNB
YnNsSGFzaENvcnJlY3RseShjb25zdCBDb250YWluZXImIHZhbHVlcywgRXEgZXF1YWxzKSB7CiAg
IHJldHVybiBoYXNoX2ludGVybmFsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVj
dGx5KAotICAgICAgaGFzaF9pbnRlcm5hbDo6Q29udGFpbmVyQXNWZWN0b3I8Q29udGFpbmVyPjo6
RG8odmFsdWVzKSwKLSAgICAgIGVxdWFscyk7CisgICAgICBoYXNoX2ludGVybmFsOjpDb250YWlu
ZXJBc1ZlY3RvcjxDb250YWluZXI+OjpEbyh2YWx1ZXMpLCBlcXVhbHMpOwogfQogCiB0ZW1wbGF0
ZSA8aW50Ji4uLiwgdHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwv
Y2l0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5jYwppbmRleCA4ZjcyZGQxYjdkMGM5
ZjUzOGQ5MWQ2MjdkZmYwNjYyZTRlMGM5YjJjLi5kYzc2NTBhNzllMGYyNWI3NzMwZmVjMGVlMjdk
ZDAxYTYyMDRjOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHkuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC0zNDAsMjUxICszNDAsNSBAQCB1aW50NjRfdCBDaXR5SGFzaDY0
V2l0aFNlZWRzKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90IHNlZWQwLAogICBy
ZXR1cm4gSGFzaExlbjE2KENpdHlIYXNoNjQocywgbGVuKSAtIHNlZWQwLCBzZWVkMSk7CiB9CiAK
LS8vIEEgc3Vicm91dGluZSBmb3IgQ2l0eUhhc2gxMjgoKS4gIFJldHVybnMgYSBkZWNlbnQgMTI4
LWJpdCBoYXNoIGZvciBzdHJpbmdzCi0vLyBvZiBhbnkgbGVuZ3RoIHJlcHJlc2VudGFibGUgaW4g
c2lnbmVkIGxvbmcuICBCYXNlZCBvbiBDaXR5IGFuZCBNdXJtdXIuCi1zdGF0aWMgdWludDEyOCBD
aXR5TXVybXVyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQxMjggc2VlZCkgewotICB1
aW50NjRfdCBhID0gVWludDEyOExvdzY0KHNlZWQpOwotICB1aW50NjRfdCBiID0gVWludDEyOEhp
Z2g2NChzZWVkKTsKLSAgdWludDY0X3QgYyA9IDA7Ci0gIHVpbnQ2NF90IGQgPSAwOwotICBpbnQ2
NF90IGwgPSBsZW4gLSAxNjsKLSAgaWYgKGwgPD0gMCkgeyAgLy8gbGVuIDw9IDE2Ci0gICAgYSA9
IFNoaWZ0TWl4KGEgKiBrMSkgKiBrMTsKLSAgICBjID0gYiAqIGsxICsgSGFzaExlbjB0bzE2KHMs
IGxlbik7Ci0gICAgZCA9IFNoaWZ0TWl4KGEgKyAobGVuID49IDggPyBGZXRjaDY0KHMpIDogYykp
OwotICB9IGVsc2UgeyAgLy8gbGVuID4gMTYKLSAgICBjID0gSGFzaExlbjE2KEZldGNoNjQocyAr
IGxlbiAtIDgpICsgazEsIGEpOwotICAgIGQgPSBIYXNoTGVuMTYoYiArIGxlbiwgYyArIEZldGNo
NjQocyArIGxlbiAtIDE2KSk7Ci0gICAgYSArPSBkOwotICAgIGRvIHsKLSAgICAgIGEgXj0gU2hp
ZnRNaXgoRmV0Y2g2NChzKSAqIGsxKSAqIGsxOwotICAgICAgYSAqPSBrMTsKLSAgICAgIGIgXj0g
YTsKLSAgICAgIGMgXj0gU2hpZnRNaXgoRmV0Y2g2NChzICsgOCkgKiBrMSkgKiBrMTsKLSAgICAg
IGMgKj0gazE7Ci0gICAgICBkIF49IGM7Ci0gICAgICBzICs9IDE2OwotICAgICAgbCAtPSAxNjsK
LSAgICB9IHdoaWxlIChsID4gMCk7Ci0gIH0KLSAgYSA9IEhhc2hMZW4xNihhLCBjKTsKLSAgYiA9
IEhhc2hMZW4xNihkLCBiKTsKLSAgcmV0dXJuIHVpbnQxMjgoYSBeIGIsIEhhc2hMZW4xNihiLCBh
KSk7Ci19Ci0KLXVpbnQxMjggQ2l0eUhhc2gxMjhXaXRoU2VlZChjb25zdCBjaGFyICpzLCBzaXpl
X3QgbGVuLCB1aW50MTI4IHNlZWQpIHsKLSAgaWYgKGxlbiA8IDEyOCkgewotICAgIHJldHVybiBD
aXR5TXVybXVyKHMsIGxlbiwgc2VlZCk7Ci0gIH0KLQotICAvLyBXZSBleHBlY3QgbGVuID49IDEy
OCB0byBiZSB0aGUgY29tbW9uIGNhc2UuICBLZWVwIDU2IGJ5dGVzIG9mIHN0YXRlOgotICAvLyB2
LCB3LCB4LCB5LCBhbmQgei4KLSAgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gdiwgdzsK
LSAgdWludDY0X3QgeCA9IFVpbnQxMjhMb3c2NChzZWVkKTsKLSAgdWludDY0X3QgeSA9IFVpbnQx
MjhIaWdoNjQoc2VlZCk7Ci0gIHVpbnQ2NF90IHogPSBsZW4gKiBrMTsKLSAgdi5maXJzdCA9IFJv
dGF0ZSh5IF4gazEsIDQ5KSAqIGsxICsgRmV0Y2g2NChzKTsKLSAgdi5zZWNvbmQgPSBSb3RhdGUo
di5maXJzdCwgNDIpICogazEgKyBGZXRjaDY0KHMgKyA4KTsKLSAgdy5maXJzdCA9IFJvdGF0ZSh5
ICsgeiwgMzUpICogazEgKyB4OwotICB3LnNlY29uZCA9IFJvdGF0ZSh4ICsgRmV0Y2g2NChzICsg
ODgpLCA1MykgKiBrMTsKLQotICAvLyBUaGlzIGlzIHRoZSBzYW1lIGlubmVyIGxvb3AgYXMgQ2l0
eUhhc2g2NCgpLCBtYW51YWxseSB1bnJvbGxlZC4KLSAgZG8gewotICAgIHggPSBSb3RhdGUoeCAr
IHkgKyB2LmZpcnN0ICsgRmV0Y2g2NChzICsgOCksIDM3KSAqIGsxOwotICAgIHkgPSBSb3RhdGUo
eSArIHYuc2Vjb25kICsgRmV0Y2g2NChzICsgNDgpLCA0MikgKiBrMTsKLSAgICB4IF49IHcuc2Vj
b25kOwotICAgIHkgKz0gdi5maXJzdCArIEZldGNoNjQocyArIDQwKTsKLSAgICB6ID0gUm90YXRl
KHogKyB3LmZpcnN0LCAzMykgKiBrMTsKLSAgICB2ID0gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhz
LCB2LnNlY29uZCAqIGsxLCB4ICsgdy5maXJzdCk7Ci0gICAgdyA9IFdlYWtIYXNoTGVuMzJXaXRo
U2VlZHMocyArIDMyLCB6ICsgdy5zZWNvbmQsIHkgKyBGZXRjaDY0KHMgKyAxNikpOwotICAgIHN0
ZDo6c3dhcCh6LCB4KTsKLSAgICBzICs9IDY0OwotICAgIHggPSBSb3RhdGUoeCArIHkgKyB2LmZp
cnN0ICsgRmV0Y2g2NChzICsgOCksIDM3KSAqIGsxOwotICAgIHkgPSBSb3RhdGUoeSArIHYuc2Vj
b25kICsgRmV0Y2g2NChzICsgNDgpLCA0MikgKiBrMTsKLSAgICB4IF49IHcuc2Vjb25kOwotICAg
IHkgKz0gdi5maXJzdCArIEZldGNoNjQocyArIDQwKTsKLSAgICB6ID0gUm90YXRlKHogKyB3LmZp
cnN0LCAzMykgKiBrMTsKLSAgICB2ID0gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhzLCB2LnNlY29u
ZCAqIGsxLCB4ICsgdy5maXJzdCk7Ci0gICAgdyA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocyAr
IDMyLCB6ICsgdy5zZWNvbmQsIHkgKyBGZXRjaDY0KHMgKyAxNikpOwotICAgIHN0ZDo6c3dhcCh6
LCB4KTsKLSAgICBzICs9IDY0OwotICAgIGxlbiAtPSAxMjg7Ci0gIH0gd2hpbGUgKEFCU0xfUFJF
RElDVF9UUlVFKGxlbiA+PSAxMjgpKTsKLSAgeCArPSBSb3RhdGUodi5maXJzdCArIHosIDQ5KSAq
IGswOwotICB5ID0geSAqIGswICsgUm90YXRlKHcuc2Vjb25kLCAzNyk7Ci0gIHogPSB6ICogazAg
KyBSb3RhdGUody5maXJzdCwgMjcpOwotICB3LmZpcnN0ICo9IDk7Ci0gIHYuZmlyc3QgKj0gazA7
Ci0gIC8vIElmIDAgPCBsZW4gPCAxMjgsIGhhc2ggdXAgdG8gNCBjaHVua3Mgb2YgMzIgYnl0ZXMg
ZWFjaCBmcm9tIHRoZSBlbmQgb2Ygcy4KLSAgZm9yIChzaXplX3QgdGFpbF9kb25lID0gMDsgdGFp
bF9kb25lIDwgbGVuOykgewotICAgIHRhaWxfZG9uZSArPSAzMjsKLSAgICB5ID0gUm90YXRlKHgg
KyB5LCA0MikgKiBrMCArIHYuc2Vjb25kOwotICAgIHcuZmlyc3QgKz0gRmV0Y2g2NChzICsgbGVu
IC0gdGFpbF9kb25lICsgMTYpOwotICAgIHggPSB4ICogazAgKyB3LmZpcnN0OwotICAgIHogKz0g
dy5zZWNvbmQgKyBGZXRjaDY0KHMgKyBsZW4gLSB0YWlsX2RvbmUpOwotICAgIHcuc2Vjb25kICs9
IHYuZmlyc3Q7Ci0gICAgdiA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocyArIGxlbiAtIHRhaWxf
ZG9uZSwgdi5maXJzdCArIHosIHYuc2Vjb25kKTsKLSAgICB2LmZpcnN0ICo9IGswOwotICB9Ci0g
IC8vIEF0IHRoaXMgcG9pbnQgb3VyIDU2IGJ5dGVzIG9mIHN0YXRlIHNob3VsZCBjb250YWluIG1v
cmUgdGhhbgotICAvLyBlbm91Z2ggaW5mb3JtYXRpb24gZm9yIGEgc3Ryb25nIDEyOC1iaXQgaGFz
aC4gIFdlIHVzZSB0d28KLSAgLy8gZGlmZmVyZW50IDU2LWJ5dGUtdG8tOC1ieXRlIGhhc2hlcyB0
byBnZXQgYSAxNi1ieXRlIGZpbmFsIHJlc3VsdC4KLSAgeCA9IEhhc2hMZW4xNih4LCB2LmZpcnN0
KTsKLSAgeSA9IEhhc2hMZW4xNih5ICsgeiwgdy5maXJzdCk7Ci0gIHJldHVybiB1aW50MTI4KEhh
c2hMZW4xNih4ICsgdi5zZWNvbmQsIHcuc2Vjb25kKSArIHksCi0gICAgICAgICAgICAgICAgIEhh
c2hMZW4xNih4ICsgdy5zZWNvbmQsIHkgKyB2LnNlY29uZCkpOwotfQotCi11aW50MTI4IENpdHlI
YXNoMTI4KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pIHsKLSAgcmV0dXJuIGxlbiA+PSAxNgot
ICAgICAgICAgICAgID8gQ2l0eUhhc2gxMjhXaXRoU2VlZChzICsgMTYsIGxlbiAtIDE2LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTI4KEZldGNoNjQocyksIEZldGNo
NjQocyArIDgpICsgazApKQotICAgICAgICAgICAgIDogQ2l0eUhhc2gxMjhXaXRoU2VlZChzLCBs
ZW4sIHVpbnQxMjgoazAsIGsxKSk7Ci19CiB9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAog
fSAgLy8gbmFtZXNwYWNlIGFic2wKLQotI2lmZGVmIF9fU1NFNF8yX18KLSNpbmNsdWRlIDxubW1p
bnRyaW4uaD4KLSNpbmNsdWRlICJhYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV9jcmMuaCIKLQotbmFt
ZXNwYWNlIGFic2wgewotbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgewotCi0vLyBSZXF1aXJlcyBs
ZW4gPj0gMjQwLgotc3RhdGljIHZvaWQgQ2l0eUhhc2hDcmMyNTZMb25nKGNvbnN0IGNoYXIgKnMs
IHNpemVfdCBsZW4sIHVpbnQzMl90IHNlZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDY0X3QgKnJlc3VsdCkgewotICB1aW50NjRfdCBhID0gRmV0Y2g2NChzICsgNTYpICsg
azA7Ci0gIHVpbnQ2NF90IGIgPSBGZXRjaDY0KHMgKyA5NikgKyBrMDsKLSAgdWludDY0X3QgYyA9
IHJlc3VsdFswXSA9IEhhc2hMZW4xNihiLCBsZW4pOwotICB1aW50NjRfdCBkID0gcmVzdWx0WzFd
ID0gRmV0Y2g2NChzICsgMTIwKSAqIGswICsgbGVuOwotICB1aW50NjRfdCBlID0gRmV0Y2g2NChz
ICsgMTg0KSArIHNlZWQ7Ci0gIHVpbnQ2NF90IGYgPSAwOwotICB1aW50NjRfdCBnID0gMDsKLSAg
dWludDY0X3QgaCA9IGMgKyBkOwotICB1aW50NjRfdCB4ID0gc2VlZDsKLSAgdWludDY0X3QgeSA9
IDA7Ci0gIHVpbnQ2NF90IHogPSAwOwotCi0gIC8vIDI0MCBieXRlcyBvZiBpbnB1dCBwZXIgaXRl
ci4KLSAgc2l6ZV90IGl0ZXJzID0gbGVuIC8gMjQwOwotICBsZW4gLT0gaXRlcnMgKiAyNDA7Ci0g
IGRvIHsKLSN1bmRlZiBDSFVOSwotI2RlZmluZSBDSFVOSyhyKSAgICAgICAgICAgICAgIFwKLSAg
UEVSTVVURTMoeCwgeiwgeSk7ICAgICAgICAgICBcCi0gIGIgKz0gRmV0Y2g2NChzKTsgICAgICAg
ICAgICAgXAotICBjICs9IEZldGNoNjQocyArIDgpOyAgICAgICAgIFwKLSAgZCArPSBGZXRjaDY0
KHMgKyAxNik7ICAgICAgICBcCi0gIGUgKz0gRmV0Y2g2NChzICsgMjQpOyAgICAgICAgXAotICBm
ICs9IEZldGNoNjQocyArIDMyKTsgICAgICAgIFwKLSAgYSArPSBiOyAgICAgICAgICAgICAgICAg
ICAgICBcCi0gIGggKz0gZjsgICAgICAgICAgICAgICAgICAgICAgXAotICBiICs9IGM7ICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgZiArPSBkOyAgICAgICAgICAgICAgICAgICAgICBcCi0gIGcg
Kz0gZTsgICAgICAgICAgICAgICAgICAgICAgXAotICBlICs9IHo7ICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgZyArPSB4OyAgICAgICAgICAgICAgICAgICAgICBcCi0gIHogPSBfbW1fY3JjMzJf
dTY0KHosIGIgKyBnKTsgXAotICB5ID0gX21tX2NyYzMyX3U2NCh5LCBlICsgaCk7IFwKLSAgeCA9
IF9tbV9jcmMzMl91NjQoeCwgZiArIGEpOyBcCi0gIGUgPSBSb3RhdGUoZSwgcik7ICAgICAgICAg
ICAgXAotICBjICs9IGU7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcyArPSA0MAotCi0gICAg
Q0hVTksoMCk7Ci0gICAgUEVSTVVURTMoYSwgaCwgYyk7Ci0gICAgQ0hVTksoMzMpOwotICAgIFBF
Uk1VVEUzKGEsIGgsIGYpOwotICAgIENIVU5LKDApOwotICAgIFBFUk1VVEUzKGIsIGgsIGYpOwot
ICAgIENIVU5LKDQyKTsKLSAgICBQRVJNVVRFMyhiLCBoLCBkKTsKLSAgICBDSFVOSygwKTsKLSAg
ICBQRVJNVVRFMyhiLCBoLCBlKTsKLSAgICBDSFVOSygzMyk7Ci0gICAgUEVSTVVURTMoYSwgaCwg
ZSk7Ci0gIH0gd2hpbGUgKC0taXRlcnMgPiAwKTsKLQotICB3aGlsZSAobGVuID49IDQwKSB7Ci0g
ICAgQ0hVTksoMjkpOwotICAgIGUgXj0gUm90YXRlKGEsIDIwKTsKLSAgICBoICs9IFJvdGF0ZShi
LCAzMCk7Ci0gICAgZyBePSBSb3RhdGUoYywgNDApOwotICAgIGYgKz0gUm90YXRlKGQsIDM0KTsK
LSAgICBQRVJNVVRFMyhjLCBoLCBnKTsKLSAgICBsZW4gLT0gNDA7Ci0gIH0KLSAgaWYgKGxlbiA+
IDApIHsKLSAgICBzID0gcyArIGxlbiAtIDQwOwotICAgIENIVU5LKDMzKTsKLSAgICBlIF49IFJv
dGF0ZShhLCA0Myk7Ci0gICAgaCArPSBSb3RhdGUoYiwgNDIpOwotICAgIGcgXj0gUm90YXRlKGMs
IDQxKTsKLSAgICBmICs9IFJvdGF0ZShkLCA0MCk7Ci0gIH0KLSAgcmVzdWx0WzBdIF49IGg7Ci0g
IHJlc3VsdFsxXSBePSBnOwotICBnICs9IGg7Ci0gIGEgPSBIYXNoTGVuMTYoYSwgZyArIHopOwot
ICB4ICs9IHkgPDwgMzI7Ci0gIGIgKz0geDsKLSAgYyA9IEhhc2hMZW4xNihjLCB6KSArIGg7Ci0g
IGQgPSBIYXNoTGVuMTYoZCwgZSArIHJlc3VsdFswXSk7Ci0gIGcgKz0gZTsKLSAgaCArPSBIYXNo
TGVuMTYoeCwgZik7Ci0gIGUgPSBIYXNoTGVuMTYoYSwgZCkgKyBnOwotICB6ID0gSGFzaExlbjE2
KGIsIGMpICsgYTsKLSAgeSA9IEhhc2hMZW4xNihnLCBoKSArIGM7Ci0gIHJlc3VsdFswXSA9IGUg
KyB6ICsgeSArIHg7Ci0gIGEgPSBTaGlmdE1peCgoYSArIHkpICogazApICogazAgKyBiOwotICBy
ZXN1bHRbMV0gKz0gYSArIHJlc3VsdFswXTsKLSAgYSA9IFNoaWZ0TWl4KGEgKiBrMCkgKiBrMCAr
IGM7Ci0gIHJlc3VsdFsyXSA9IGEgKyByZXN1bHRbMV07Ci0gIGEgPSBTaGlmdE1peCgoYSArIGUp
ICogazApICogazA7Ci0gIHJlc3VsdFszXSA9IGEgKyByZXN1bHRbMl07Ci19Ci0KLS8vIFJlcXVp
cmVzIGxlbiA8IDI0MC4KLXN0YXRpYyB2b2lkIENpdHlIYXNoQ3JjMjU2U2hvcnQoY29uc3QgY2hh
ciAqcywgc2l6ZV90IGxlbiwgdWludDY0X3QgKnJlc3VsdCkgewotICBjaGFyIGJ1ZlsyNDBdOwot
ICBtZW1jcHkoYnVmLCBzLCBsZW4pOwotICBtZW1zZXQoYnVmICsgbGVuLCAwLCAyNDAgLSBsZW4p
OwotICBDaXR5SGFzaENyYzI1NkxvbmcoYnVmLCAyNDAsIH5zdGF0aWNfY2FzdDx1aW50MzJfdD4o
bGVuKSwgcmVzdWx0KTsKLX0KLQotdm9pZCBDaXR5SGFzaENyYzI1Nihjb25zdCBjaGFyICpzLCBz
aXplX3QgbGVuLCB1aW50NjRfdCAqcmVzdWx0KSB7Ci0gIGlmIChBQlNMX1BSRURJQ1RfVFJVRShs
ZW4gPj0gMjQwKSkgewotICAgIENpdHlIYXNoQ3JjMjU2TG9uZyhzLCBsZW4sIDAsIHJlc3VsdCk7
Ci0gIH0gZWxzZSB7Ci0gICAgQ2l0eUhhc2hDcmMyNTZTaG9ydChzLCBsZW4sIHJlc3VsdCk7Ci0g
IH0KLX0KLQotdWludDEyOCBDaXR5SGFzaENyYzEyOFdpdGhTZWVkKGNvbnN0IGNoYXIgKnMsIHNp
emVfdCBsZW4sIHVpbnQxMjggc2VlZCkgewotICBpZiAobGVuIDw9IDkwMCkgewotICAgIHJldHVy
biBDaXR5SGFzaDEyOFdpdGhTZWVkKHMsIGxlbiwgc2VlZCk7Ci0gIH0gZWxzZSB7Ci0gICAgdWlu
dDY0X3QgcmVzdWx0WzRdOwotICAgIENpdHlIYXNoQ3JjMjU2KHMsIGxlbiwgcmVzdWx0KTsKLSAg
ICB1aW50NjRfdCB1ID0gVWludDEyOEhpZ2g2NChzZWVkKSArIHJlc3VsdFswXTsKLSAgICB1aW50
NjRfdCB2ID0gVWludDEyOExvdzY0KHNlZWQpICsgcmVzdWx0WzFdOwotICAgIHJldHVybiB1aW50
MTI4KEhhc2hMZW4xNih1LCB2ICsgcmVzdWx0WzJdKSwKLSAgICAgICAgICAgICAgICAgICBIYXNo
TGVuMTYoUm90YXRlKHYsIDMyKSwgdSAqIGswICsgcmVzdWx0WzNdKSk7Ci0gIH0KLX0KLQotdWlu
dDEyOCBDaXR5SGFzaENyYzEyOChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7Ci0gIGlmIChs
ZW4gPD0gOTAwKSB7Ci0gICAgcmV0dXJuIENpdHlIYXNoMTI4KHMsIGxlbik7Ci0gIH0gZWxzZSB7
Ci0gICAgdWludDY0X3QgcmVzdWx0WzRdOwotICAgIENpdHlIYXNoQ3JjMjU2KHMsIGxlbiwgcmVz
dWx0KTsKLSAgICByZXR1cm4gdWludDEyOChyZXN1bHRbMl0sIHJlc3VsdFszXSk7Ci0gIH0KLX0K
LQotfSAgLy8gbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSBhYnNsCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9o
YXNoL2ludGVybmFsL2NpdHkuaAppbmRleCA1NWIzN2I4NzVmMGIzZmQ4NDY3ZGE5OWRiZWQ0Mjk3
YWM4OWYxODE5Li5iNDNkMzQwN2RjYjQ0YzQ2YzM1ZjAyZjQzOTdlODgwZjQ1OWNlZGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVy
bmFsL2NpdHkuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
MTIsNyArMTIsNyBAQAogLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCiAvLwotLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2NpdHloYXNoLworLy8gaHR0
cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaXR5aGFzaC8KIC8vCiAvLyBUaGlzIGZpbGUgcHJvdmlk
ZXMgYSBmZXcgZnVuY3Rpb25zIGZvciBoYXNoaW5nIHN0cmluZ3MuICBBbGwgb2YgdGhlbSBhcmUK
IC8vIGhpZ2gtcXVhbGl0eSBmdW5jdGlvbnMgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSBwYXNzIHN0
YW5kYXJkIHRlc3RzIHN1Y2gKQEAgLTIzLDE1ICsyMyw2IEBACiAvLyBpcyBNdXJtdXIzLiAgRm9y
IDY0LWJpdCB4ODYgY29kZSwgQ2l0eUhhc2g2NCBpcyBhbiBleGNlbGxlbnQgY2hvaWNlIGZvciBo
YXNoCiAvLyB0YWJsZXMgYW5kIG1vc3Qgb3RoZXIgaGFzaGluZyAoZXhjbHVkaW5nIGNyeXB0b2dy
YXBoeSkuCiAvLwotLy8gRm9yIDY0LWJpdCB4ODYgY29kZSwgb24gbG9uZyBzdHJpbmdzLCB0aGUg
cGljdHVyZSBpcyBtb3JlIGNvbXBsaWNhdGVkLgotLy8gT24gbWFueSByZWNlbnQgSW50ZWwgQ1BV
cywgc3VjaCBhcyBOZWhhbGVtLCBXZXN0bWVyZSwgU2FuZHkgQnJpZGdlLCBldGMuLAotLy8gQ2l0
eUhhc2hDcmMxMjggYXBwZWFycyB0byBiZSBmYXN0ZXIgdGhhbiBhbGwgY29tcGV0aXRvcnMgb2Yg
Y29tcGFyYWJsZQotLy8gcXVhbGl0eS4gIENpdHlIYXNoMTI4IGlzIGFsc28gZ29vZCBidXQgbm90
IHF1aXRlIGFzIGZhc3QuICBXZSBiZWxpZXZlIG91cgotLy8gbmVhcmVzdCBjb21wZXRpdG9yIGlz
IEJvYiBKZW5raW5zJyBTcG9va3kuICBXZSBkb24ndCBoYXZlIGdyZWF0IGRhdGEgZm9yCi0vLyBv
dGhlciA2NC1iaXQgQ1BVcywgYnV0IGZvciBsb25nIHN0cmluZ3Mgd2Uga25vdyB0aGF0IFNwb29r
eSBpcyBzbGlnaHRseQotLy8gZmFzdGVyIHRoYW4gQ2l0eUhhc2ggb24gc29tZSByZWxhdGl2ZWx5
IHJlY2VudCBBTUQgeDg2LTY0IENQVXMsIGZvciBleGFtcGxlLgotLy8gTm90ZSB0aGF0IENpdHlI
YXNoQ3JjMTI4IGlzIGRlY2xhcmVkIGluIGNpdHljcmMuaC4KLS8vCiAvLyBGb3IgMzItYml0IHg4
NiBjb2RlLCB3ZSBkb24ndCBrbm93IG9mIGFueXRoaW5nIGZhc3RlciB0aGFuIENpdHlIYXNoMzIg
dGhhdAogLy8gaXMgb2YgY29tcGFyYWJsZSBxdWFsaXR5LiAgV2UgYmVsaWV2ZSBvdXIgbmVhcmVz
dCBjb21wZXRpdG9yIGlzIE11cm11cjNBLgogLy8gKE9uIDY0LWJpdCBDUFVzLCBpdCBpcyB0eXBp
Y2FsbHkgZmFzdGVyIHRvIHVzZSB0aGUgb3RoZXIgQ2l0eUhhc2ggdmFyaWFudHMuKQpAQCAtNTgs
NyArNDksNiBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gZm9yIHNpemVfdC4KICNpbmNsdWRl
IDx1dGlsaXR5PgogCi0KIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSBoYXNoX2ludGVybmFs
IHsKIApAQCAtNzksMTMgKzY5LDYgQEAgdWludDY0X3QgQ2l0eUhhc2g2NFdpdGhTZWVkKGNvbnN0
IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90IHNlZWQpOwogdWludDY0X3QgQ2l0eUhhc2g2
NFdpdGhTZWVkcyhjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50NjRfdCBzZWVkMCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNlZWQxKTsKIAotLy8gSGFzaCBmdW5j
dGlvbiBmb3IgYSBieXRlIGFycmF5LgotdWludDEyOCBDaXR5SGFzaDEyOChjb25zdCBjaGFyICpz
LCBzaXplX3QgbGVuKTsKLQotLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LiAgRm9y
IGNvbnZlbmllbmNlLCBhIDEyOC1iaXQgc2VlZCBpcyBhbHNvCi0vLyBoYXNoZWQgaW50byB0aGUg
cmVzdWx0LgotdWludDEyOCBDaXR5SGFzaDEyOFdpdGhTZWVkKGNvbnN0IGNoYXIgKnMsIHNpemVf
dCBsZW4sIHVpbnQxMjggc2VlZCk7Ci0KIC8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJh
eS4gIE1vc3QgdXNlZnVsIGluIDMyLWJpdCBiaW5hcmllcy4KIHVpbnQzMl90IENpdHlIYXNoMzIo
Y29uc3QgY2hhciAqcywgc2l6ZV90IGxlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50
ZXJuYWwvY2l0eV9jcmMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV9jcmMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJlNjU1N2QyMTNmMmI0MGE4YzQ3NGM2YTBjMjc5ZjBh
NmJjYWYyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9oYXNoL2ludGVybmFsL2NpdHlfY3JjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCi0vLwotLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
Ci0vLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCi0vLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
LS8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAot
Ly8KLS8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKLS8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0vLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLS8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKLS8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLy8KLS8vIFRoaXMg
ZmlsZSBkZWNsYXJlcyB0aGUgc3Vic2V0IG9mIHRoZSBDaXR5SGFzaCBmdW5jdGlvbnMgdGhhdCBy
ZXF1aXJlCi0vLyBfbW1fY3JjMzJfdTY0KCkuICBTZWUgdGhlIENpdHlIYXNoIFJFQURNRSBmb3Ig
ZGV0YWlscy4KLS8vCi0vLyBGdW5jdGlvbnMgaW4gdGhlIENpdHlIYXNoIGZhbWlseSBhcmUgbm90
IHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaHkuCi0KLSNpZm5kZWYgQUJTTF9IQVNIX0lOVEVSTkFM
X0NJVFlfQ1JDX0hfCi0jZGVmaW5lIEFCU0xfSEFTSF9JTlRFUk5BTF9DSVRZX0NSQ19IXwotCi0j
aW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL2NpdHkuaCIKLQotbmFtZXNwYWNlIGFic2wgewot
bmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgewotCi0vLyBIYXNoIGZ1bmN0aW9uIGZvciBhIGJ5dGUg
YXJyYXkuCi11aW50MTI4IENpdHlIYXNoQ3JjMTI4KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4p
OwotCi0vLyBIYXNoIGZ1bmN0aW9uIGZvciBhIGJ5dGUgYXJyYXkuICBGb3IgY29udmVuaWVuY2Us
IGEgMTI4LWJpdCBzZWVkIGlzIGFsc28KLS8vIGhhc2hlZCBpbnRvIHRoZSByZXN1bHQuCi11aW50
MTI4IENpdHlIYXNoQ3JjMTI4V2l0aFNlZWQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWlu
dDEyOCBzZWVkKTsKLQotLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LiAgU2V0cyBy
ZXN1bHRbMF0gLi4uIHJlc3VsdFszXS4KLXZvaWQgQ2l0eUhhc2hDcmMyNTYoY29uc3QgY2hhciAq
cywgc2l6ZV90IGxlbiwgdWludDY0X3QgKnJlc3VsdCk7Ci0KLX0gIC8vIG5hbWVzcGFjZSBoYXNo
X2ludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgYWJzbAotCi0jZW5kaWYgIC8vIEFCU0xfSEFTSF9J
TlRFUk5BTF9DSVRZX0NSQ19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfdGVzdC5jYwppbmRleCA2NzhkYTUz
ZDM0ZDA0ZDYwMTFmZTg3YjA2YTdlMjY2MTNiZGJlZjk5Li43MWI0ZWNjZWNmZjkxNmFjYmMyZDg4
YmQ3MGJjZDNmMzAwNTMxMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHlf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfdGVzdC5jYwpAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTgsOSArMTgsNiBAQAogI2luY2x1
ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgotI2lmZGVmIF9fU1NFNF8yX18KLSNpbmNsdWRlICJhYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV9j
cmMuaCIKLSNlbmRpZgogCiBuYW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2UgaGFzaF9pbnRlcm5h
bCB7CkBAIC0yOCw3ICsyNSw2IEBAIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsKIHN0YXRpYyBj
b25zdCB1aW50NjRfdCBrMCA9IDB4YzNhNWM4NWM5N2NiMzEyN1VMTDsKIHN0YXRpYyBjb25zdCB1
aW50NjRfdCBrU2VlZDAgPSAxMjM0NTY3Owogc3RhdGljIGNvbnN0IHVpbnQ2NF90IGtTZWVkMSA9
IGswOwotc3RhdGljIGNvbnN0IHVpbnQxMjgga1NlZWQxMjgoa1NlZWQwLCBrU2VlZDEpOwogc3Rh
dGljIGNvbnN0IGludCBrRGF0YVNpemUgPSAxIDw8IDIwOwogc3RhdGljIGNvbnN0IGludCBrVGVz
dFNpemUgPSAzMDA7CiAKQEAgLTQ5LDE3NTQgKzQ1LDUzOSBAQCB2b2lkIHNldHVwKCkgewogfQog
CiAjZGVmaW5lIEMoeCkgMHgjI3gjI1VMTAotc3RhdGljIGNvbnN0IHVpbnQ2NF90IHRlc3RkYXRh
W2tUZXN0U2l6ZV1bMTZdID0geworc3RhdGljIGNvbnN0IHVpbnQ2NF90IHRlc3RkYXRhW2tUZXN0
U2l6ZV1bNF0gPSB7CiAgICAge0MoOWFlMTZhM2IyZjkwNDA0ZiksIEMoNzUxMDZkYjg5MDIzN2E0
YSksIEMoM2ZlYWM1ZjYzNjAzOTc2NiksCi0gICAgIEMoM2RmMDlkZmM2NGMwOWEyYiksIEMoM2Ni
NTQwYzM5MmU1MWUyOSksIEMoNmI1NjM0M2ZlYWMwNjYzKSwKLSAgICAgQyg1YjdiYzUwZmQ4ZThh
ZDkyKSwgQygzZGYwOWRmYzY0YzA5YTJiKSwgQygzY2I1NDBjMzkyZTUxZTI5KSwKLSAgICAgQyg2
YjU2MzQzZmVhYzA2NjMpLCBDKDViN2JjNTBmZDhlOGFkOTIpLCBDKDk1MTYyZjI0ZTZhNWY5MzAp
LAotICAgICBDKDY4MDhiZGY0ZjFlYjA2ZTApLCBDKGIzYjFmM2E2N2I2MjRkODIpLCBDKGM5YTYy
ZjEyYmQ0Y2Q4MGIpLAogICAgICBDKGRjNTZkMTdhKX0sCiAgICAge0MoNTQxMTUwZTg3ZjQxNWU5
NiksIEMoMWFlZjBkMjRiMzE0OGExYSksIEMoYmFjYzMwMGUxZTgyMzQ1YSksCi0gICAgIEMoYzNj
ZGM0MWUxZGYzMzUxMyksIEMoMmMxMzhmZjI1OTZkNDJmNiksIEMoZjU4ZTkwODJhZWQzMDU1Ziks
Ci0gICAgIEMoMTYyZTE5MmIyOTU3MTYzZCksIEMoYzNjZGM0MWUxZGYzMzUxMyksIEMoMmMxMzhm
ZjI1OTZkNDJmNiksCi0gICAgIEMoZjU4ZTkwODJhZWQzMDU1ZiksIEMoMTYyZTE5MmIyOTU3MTYz
ZCksIEMoZmI5OWU4NWUwZDE2ZjkwYyksCi0gICAgIEMoNjA4NDYyYzE1YmRmMjdlOCksIEMoZTdk
MmM1Yzk0MzU3MmI2MiksIEMoMWJhYWE5MzI3NjQyNzk4YyksCiAgICAgIEMoOTk5MjkzMzQpfSwK
LSAgICB7QyhmMzc4NmE0YjI1ODI3YzEpLCBDKDM0ZWUxYTJiZjc2N2JkMWMpLCBDKDJmMTVjYTJl
YmZiNjMxZjIpLAotICAgICBDKDMxNDliYTFkYWM3NzI3MGQpLCBDKDcwZTJlMDc2ZTMwNzAzYyks
IEMoNTliY2M5NjU5YmM1Mjk2KSwKLSAgICAgQyg5ZWNiYzgxMzJhZTJmMWQ3KSwgQygzMTQ5YmEx
ZGFjNzcyNzBkKSwgQyg3MGUyZTA3NmUzMDcwM2MpLAotICAgICBDKDU5YmNjOTY1OWJjNTI5Niks
IEMoOWVjYmM4MTMyYWUyZjFkNyksIEMoYTAxZDMwNzg5YmFkN2NmMiksCi0gICAgIEMoYWUwM2Zl
MzcxOTgxYTBlMCksIEMoMTI3ZTM4ODNiODc4ODkzNCksIEMoZDBhYzNkNGMwYTZmY2EzMiksCi0g
ICAgIEMoNDI1MmVkYjcpfSwKKyAgICB7QyhmMzc4NmE0YjI1ODI3YzEpLCBDKDM0ZWUxYTJiZjc2
N2JkMWMpLCBDKDJmMTVjYTJlYmZiNjMxZjIpLCBDKDQyNTJlZGI3KX0sCiAgICAge0MoZWY5MjNh
N2ExYWY3OGVhYiksIEMoNzkxNjNiMWUxZTlhOWIxOCksIEMoZGYzYjJhY2E2ZTFlNGEzMCksCi0g
ICAgIEMoMjE5M2ZiNzYyMGNiZjIzYiksIEMoOGI2YThmZjA2Y2RhODMwMiksIEMoMWE0NDQ2OWFm
ZDNlMDkxZiksCi0gICAgIEMoOGIwNDQ5Mzc2NjEyNTA2KSwgQygyMTkzZmI3NjIwY2JmMjNiKSwg
Qyg4YjZhOGZmMDZjZGE4MzAyKSwKLSAgICAgQygxYTQ0NDY5YWZkM2UwOTFmKSwgQyg4YjA0NDkz
NzY2MTI1MDYpLCBDKGU5ZDlkNDFjMzJhZDkxZDEpLAotICAgICBDKGI0NGFiMDlmNThlM2M2MDgp
LCBDKDE5ZTkxNzVmOWZjZjc4NCksIEMoODM5YjNjOTU4MWI0YTQ4MCksIEMoZWJjMzRmM2MpfSwK
KyAgICAgQyhlYmMzNGYzYyl9LAogICAgIHtDKDExZGY1OTI1OTZmNDFkODgpLCBDKDg0M2VjMGJj
ZTkwNDJmOWMpLCBDKGNjZTJlYTFlMDhiMWViMzApLAotICAgICBDKDRkMDllNDJmMDljYzM0OTUp
LCBDKDY2NjIzNjYzMWI5ZjI1M2IpLCBDKGQyOGIzNzYzY2QwMmI2YTMpLAotICAgICBDKDQzYjI0
OWU1N2M0ZDBjMWIpLCBDKDRkMDllNDJmMDljYzM0OTUpLCBDKDY2NjIzNjYzMWI5ZjI1M2IpLAot
ICAgICBDKGQyOGIzNzYzY2QwMmI2YTMpLCBDKDQzYjI0OWU1N2M0ZDBjMWIpLCBDKDM4ODcxMDFj
OGFkZWExMDEpLAotICAgICBDKDhhOTM1NWQ0ZWZjOTFkZjApLCBDKDNlNjEwOTQ0Y2M5ZmVjZmQp
LCBDKDViZjllYjYwYjA4YWMwY2UpLAogICAgICBDKDI2ZjJiNDYzKX0sCiAgICAge0MoODMxZjQ0
OGJkYzU2MDBiMyksIEMoNjJhMjRiZTMxMjBhNjkxOSksIEMoMWI0NDA5OGE0MWUwMTBkYSksCi0g
ICAgIEMoZGMwN2RmNTNiOTQ5YzZiKSwgQyhkMmIxMWIyMDgxYWViMDAyKSwgQyhkMjEyYjAyYzFi
MTNmNzcyKSwKLSAgICAgQyhjMGJlZDI5N2I0YmUxOTEyKSwgQyhkYzA3ZGY1M2I5NDljNmIpLCBD
KGQyYjExYjIwODFhZWIwMDIpLAotICAgICBDKGQyMTJiMDJjMWIxM2Y3NzIpLCBDKGMwYmVkMjk3
YjRiZTE5MTIpLCBDKDY4MmQzZDJhZDMwNGU0YWYpLAotICAgICBDKDQwZTkxMTJhNjU1NDM3YTEp
LCBDKDI2OGIwOWY3ZWUwOTg0M2YpLCBDKDZiOTY5OGQ0Mzg1OWNhNDcpLAogICAgICBDKGIwNDJj
MDQ3KX0sCi0gICAge0MoM2VjYTgwM2U3MDMwNDg5NCksIEMoZDgwZGU3NjdlNGE5MjBhKSwgQyhh
NTFjZmJiMjkyZWZkNTNkKSwKLSAgICAgQyhkMTgzZGNkYTVmNzNlZGZhKSwgQygzYTkzY2JmNDBm
MzAxMjhjKSwgQygxYTkyNTQ0ZDBiNDFkYmRhKSwKLSAgICAgQyhhZWMyYzRiZWU4MTk3NWUxKSwg
QyhkMTgzZGNkYTVmNzNlZGZhKSwgQygzYTkzY2JmNDBmMzAxMjhjKSwKLSAgICAgQygxYTkyNTQ0
ZDBiNDFkYmRhKSwgQyhhZWMyYzRiZWU4MTk3NWUxKSwgQyg1ZjkxODE0ZDExMjZiYTRiKSwKLSAg
ICAgQyhmOGFjNTdlZWU4N2ZjZjFmKSwgQyhjNTVjNjQ0YTVkMDAyM2NkKSwgQyhhZGI3NjFlODI3
ODI1ZmYyKSwKLSAgICAgQyhlNzNiYjBhOCl9LAorICAgIHtDKDNlY2E4MDNlNzAzMDQ4OTQpLCBD
KGQ4MGRlNzY3ZTRhOTIwYSksIEMoYTUxY2ZiYjI5MmVmZDUzZCksIEMoZTczYmIwYTgpfSwKICAg
ICB7QygxYjVhMDYzZmI0YzdmOWYxKSwgQygzMThkYmMyNGFmNjZkZWU5KSwgQygxMGVmN2IzMmQ1
YzcxOWFmKSwKLSAgICAgQyhiMTQwYTAyZWY1Yzk3NzEyKSwgQyhiN2QwMGVmMDY1YjUxYjMzKSwg
Qyg2MzUxMjFkNTMyODk3ZDk4KSwKLSAgICAgQyg1MzJkYWYyMWIzMTJhNmQ2KSwgQyhiMTQwYTAy
ZWY1Yzk3NzEyKSwgQyhiN2QwMGVmMDY1YjUxYjMzKSwKLSAgICAgQyg2MzUxMjFkNTMyODk3ZDk4
KSwgQyg1MzJkYWYyMWIzMTJhNmQ2KSwgQyhjMGIwOWI3NWQ5NDM5MTApLAotICAgICBDKDhjODRk
ZmI1ZWYyYThlOTYpLCBDKGU1YzA2MDM0YjAzNTM0MzMpLCBDKDMxNzBmYWYxYzMzYTQ1ZGQpLAog
ICAgICBDKDkxZGZkZDc1KX0sCiAgICAge0MoYTBmMTAxNDlhMGU1MzhkNiksIEMoNjlkMDA4YzIw
Zjg3NDE5ZiksIEMoNDFiMzYzNzYxODViM2U5ZSksCi0gICAgIEMoMjZiNjY4OTk2MGNjZjgxZCks
IEMoNTVmMjNiMjdiYjllZmQ5NCksIEMoM2ExN2Y2MTY2ZGQ3NjVkYiksCi0gICAgIEMoYzg5MWE4
YTYyOTMxZTc4MiksIEMoMjZiNjY4OTk2MGNjZjgxZCksIEMoNTVmMjNiMjdiYjllZmQ5NCksCi0g
ICAgIEMoM2ExN2Y2MTY2ZGQ3NjVkYiksIEMoYzg5MWE4YTYyOTMxZTc4MiksIEMoMjM4NTJkYzM3
ZGRkMjYwNyksCi0gICAgIEMoOGI3ZjFiMWVjODk3ODI5ZSksIEMoZDFkNjk0NTJhNTRlZWQ4YSks
IEMoNTY0MzFmMmJkNzY2ZWMyNCksCiAgICAgIEMoYzg3Zjk1ZGUpfSwKICAgICB7QyhmYjhkOWM3
MDY2MGI5MTBiKSwgQyhhNDViMGNjMzQ3NmJmZjFiKSwgQyhiMjhkMTk5NjE0NGYwMjA3KSwKLSAg
ICAgQyg5OGVjMzExMTNlNWUzNWQyKSwgQyg1ZTRhZWI4NTNmMWI5YWE3KSwgQyhiY2Y1YzhmZTQ0
NjViN2M4KSwKLSAgICAgQyhiMWVhM2E4MjQzOTk2ZjE1KSwgQyg5OGVjMzExMTNlNWUzNWQyKSwg
Qyg1ZTRhZWI4NTNmMWI5YWE3KSwKLSAgICAgQyhiY2Y1YzhmZTQ0NjViN2M4KSwgQyhiMWVhM2E4
MjQzOTk2ZjE1KSwgQyhjYWJiY2NlZGI2NDA3NTcxKSwKLSAgICAgQyhkMWU0MGE4NGM0NDVlYzNh
KSwgQygzMzMwMmFhOTA4Y2Y0MDM5KSwgQyg5ZjE1Zjc5MjExYjVjZGY4KSwKICAgICAgQygzZjU1
MzhlZil9LAogICAgIHtDKDIzNjgyN2JlYWUyODJhNDYpLCBDKGU0Mzk3MDIyMTEzOWM5NDYpLCBD
KDRmM2FjNmZhYTgzN2EzYWEpLAotICAgICBDKDcxZmVjMGY5NzIyNDg5MTUpLCBDKDIxNzBlYzIw
NjFmMjQ1NzQpLCBDKDllYjM0NmI2Y2FhMzZlODIpLAotICAgICBDKDI5MDhmMGZkYmNhNDhlNzMp
LCBDKDcxZmVjMGY5NzIyNDg5MTUpLCBDKDIxNzBlYzIwNjFmMjQ1NzQpLAotICAgICBDKDllYjM0
NmI2Y2FhMzZlODIpLCBDKDI5MDhmMGZkYmNhNDhlNzMpLCBDKDgxMDFjOTlmMDdjNjRhYmIpLAot
ICAgICBDKGI5ZjRiMDJiMWI2YTk2YTcpLCBDKDU4M2EyYjEwY2QyMjJmODgpLCBDKDE5OWRhZTRj
ZjlkYjI0YyksIEMoNzBlYjFhMWYpfSwKKyAgICAgQyg3MGViMWExZil9LAogICAgIHtDKGMzODVl
NDM1MTM2ZWNmN2MpLCBDKGQ5ZDE3MzY4ZmY2YzRhMDgpLCBDKDFiMzFlZWQ0ZTUyNTFhNjcpLAot
ICAgICBDKGRmMDFhMzIyYzQzYTYyMDApLCBDKDI5OGI2NWExNzE0YjVhN2UpLCBDKDkzM2I4M2Yw
YWVkZjIzYyksCi0gICAgIEMoMTU3YmNiNDRkNjNmNzY1YSksIEMoZGYwMWEzMjJjNDNhNjIwMCks
IEMoMjk4YjY1YTE3MTRiNWE3ZSksCi0gICAgIEMoOTMzYjgzZjBhZWRmMjNjKSwgQygxNTdiY2I0
NGQ2M2Y3NjVhKSwgQyhkNmU5ZmM3YTI3MmQ4YjUxKSwKLSAgICAgQygzZWU1MDczZWYxYTliNzc3
KSwgQyg2MzE0OWUzMWZhYzAyYzU5KSwgQygyZjc5NzlmZjYzNmJhMWQ4KSwKICAgICAgQyhjZmQ2
M2I4Myl9LAogICAgIHtDKGUzZjY4MjhiNjAxNzA4NmQpLCBDKDIxYjRkMTkwMDU1NGIzYjApLCBD
KGJlZjM4YmUxODA5ZTI0ZjEpLAotICAgICBDKGQ5MzI1MTc1ODk4NWVlNmMpLCBDKDMyYTllOWY4
MmJhMmE5MzIpLCBDKDM4MjJhYWNhYTk1ZjMzMjkpLAotICAgICBDKGRiMzQ5YjJmOTBhNDkwZDgp
LCBDKGQ5MzI1MTc1ODk4NWVlNmMpLCBDKDMyYTllOWY4MmJhMmE5MzIpLAotICAgICBDKDM4MjJh
YWNhYTk1ZjMzMjkpLCBDKGRiMzQ5YjJmOTBhNDkwZDgpLCBDKDhkNDkxOTRhODk0YTE5Y2EpLAot
ICAgICBDKDc5YTc4YjA2ZTQyNzM4ZTYpLCBDKDdlMGYxZWRhM2QzOTBjNjYpLCBDKDFjMjkxZDdl
NjQxMTAwYTUpLAogICAgICBDKDg5NGE1MmVmKX0sCiAgICAge0MoODUxZmZmMjg1NTYxZGNhMCks
IEMoNGQxMjc3ZDczY2RmNDE2ZiksIEMoMjhjY2ZmYTYxMDEwZWJlMiksCi0gICAgIEMoNzdhNGNj
YWNkMTMxZDllZSksIEMoZTFkMDhlZWIyZjBlMjlhYSksIEMoNzBiOWUzMDUxMzgzZmE0NSksCi0g
ICAgIEMoNTgyZDAxMjA0MjVjYWJhKSwgQyg3N2E0Y2NhY2QxMzFkOWVlKSwgQyhlMWQwOGVlYjJm
MGUyOWFhKSwKLSAgICAgQyg3MGI5ZTMwNTEzODNmYTQ1KSwgQyg1ODJkMDEyMDQyNWNhYmEpLCBD
KGE3NDBlZWYxODQ2ZTQ1NjQpLAotICAgICBDKDU3MmRkZGI3NGFjM2FlMDApLCBDKGZkYjVjYTk1
NzkxNjNiYmQpLCBDKGE2NDliOWI3OTljNjE1ZDIpLAogICAgICBDKDljZGU2YTU0KX0sCiAgICAg
e0MoNjExNTJhNjM1OTVhOTZkOSksIEMoZDFhM2E5MWVmM2E3YmE0NSksIEMoNDQzYjZiYjRhNDkz
YWQwYyksCi0gICAgIEMoYTE1NDI5NmQxMTM2MmQwNiksIEMoZDBmMGJmMWYxY2IwMmZjMSksIEMo
Y2NiODdlMDkzMDlmOTBkMSksCi0gICAgIEMoYjI0YThlNDg4MTkxMTEwMSksIEMoYTE1NDI5NmQx
MTM2MmQwNiksIEMoZDBmMGJmMWYxY2IwMmZjMSksCi0gICAgIEMoY2NiODdlMDkzMDlmOTBkMSks
IEMoYjI0YThlNDg4MTkxMTEwMSksIEMoMWE0ODFiNDUyODU1OWY1OCksCi0gICAgIEMoYmY4Mzdh
MzE1MDg5Njk5NSksIEMoNDk4OWVmNmI5NDFhMzc1NyksIEMoMmU3MjVhYjcyZDBiMjk0OCksCiAg
ICAgIEMoNmM0ODk4ZDUpfSwKICAgICB7Qyg0NDQ3M2UwM2JlMzA2Yzg4KSwgQygzMDA5Nzc2MWY4
NzI0NzJhKSwgQyg5ZmQxYjY2OWJmYWQ4MmQ3KSwKLSAgICAgQygzYmFiMThiMTY0Mzk2NzgzKSwg
Qyg0N2UzODVmZjlkNGMwNmYpLCBDKDE4MDYyMDgxYmY1NThkZiksCi0gICAgIEMoNjM0MTZlYjY4
ZjEwNGEzNiksIEMoM2JhYjE4YjE2NDM5Njc4MyksIEMoNDdlMzg1ZmY5ZDRjMDZmKSwKLSAgICAg
QygxODA2MjA4MWJmNTU4ZGYpLCBDKDYzNDE2ZWI2OGYxMDRhMzYpLCBDKDRhYmRhMTU2MGM0N2Fj
ODApLAotICAgICBDKDFlYTBlNjNkYzY1ODdhZWUpLCBDKDMzZWM3OWQ5MmViYzFkZSksIEMoOTRm
OWRjY2VmNzcxZTA0OCksIEMoMTNlMTk3OGUpfSwKLSAgICB7QygzZWFkNWYyMWQzNDQwNTYpLCBD
KGZiNjQyMDM5M2NmYjA1YzMpLCBDKDQwNzkzMjM5NGNiYmQzMDMpLAotICAgICBDKGFjMDU5NjE3
ZjU5MDY2NzMpLCBDKDk0ZDUwZDNkY2QzMDY5YTcpLCBDKDJiMjZjM2I5MmRlYTBmMCksCi0gICAg
IEMoOTliNzM3NGNjNzhmYzNmYiksIEMoYWMwNTk2MTdmNTkwNjY3MyksIEMoOTRkNTBkM2RjZDMw
NjlhNyksCi0gICAgIEMoMmIyNmMzYjkyZGVhMGYwKSwgQyg5OWI3Mzc0Y2M3OGZjM2ZiKSwgQygx
YThlM2M3M2NkZDQwZWU4KSwKLSAgICAgQyhjYmI1ZmNhMDY3NDdmNDViKSwgQyhjZWVjNDQyMzhi
MjkxODQxKSwgQygyOGJmMzVjY2U5YzkwYTI1KSwgQyg1MWI0YmE4KX0sCisgICAgIEMoMTNlMTk3
OGUpfSwKKyAgICB7QygzZWFkNWYyMWQzNDQwNTYpLCBDKGZiNjQyMDM5M2NmYjA1YzMpLCBDKDQw
NzkzMjM5NGNiYmQzMDMpLCBDKDUxYjRiYTgpfSwKICAgICB7Qyg2YWJiZmRlMzdlZTAzYjViKSwg
Qyg4M2ZlYmYxODhkMmNjMTEzKSwgQyhjZGE3YjYyZDk0ZDViOGVlKSwKLSAgICAgQyhhNDM3NTU5
MGI4YWU3YzgyKSwgQygxNjhmZDQyZjllY2FlNGZmKSwgQygyM2JiZGU0M2RlMmNiMjE0KSwKLSAg
ICAgQyhhOGMzMzMxMTJhMjQzYzhjKSwgQyhhNDM3NTU5MGI4YWU3YzgyKSwgQygxNjhmZDQyZjll
Y2FlNGZmKSwKLSAgICAgQygyM2JiZGU0M2RlMmNiMjE0KSwgQyhhOGMzMzMxMTJhMjQzYzhjKSwg
QygxMGFjMDEyZThjNTE4YjQ5KSwKLSAgICAgQyg2NGE0NDYwNWQ4YjI5NDU4KSwgQyhhNjdlNzAx
ZDJhNjc5MDc1KSwgQygzYTNhMjBmNDNlYzkyMzAzKSwKICAgICAgQyhiNmIwNmU0MCl9LAotICAg
IHtDKDk0M2U3ZWQ2M2IzYzA4MCksIEMoMWVmMjA3ZTk0NDRlZjdmOCksIEMoZWY0YTlmOWY4YzZm
OWI0YSksCi0gICAgIEMoNmI1NGZjMzhkNmE4NDEwOCksIEMoMzJmNDIxMmE0N2E0NjY1KSwgQyg2
YjVhOWE4ZjY0ZWUxZGE2KSwKLSAgICAgQyg5Zjc0ZTg2YzZkYTY5NDIxKSwgQyg2YjU0ZmMzOGQ2
YTg0MTA4KSwgQygzMmY0MjEyYTQ3YTQ2NjUpLAotICAgICBDKDZiNWE5YThmNjRlZTFkYTYpLCBD
KDlmNzRlODZjNmRhNjk0MjEpLCBDKDk0NmRkMGNiMzBjMWEwOGUpLAotICAgICBDKGZkZjM3Njk1
NjkwN2VhYWEpLCBDKGE1OTA3NGM2ZWVjMDMwMjgpLCBDKGIxYTNhYmNmMjgzZjM0YWMpLCBDKDI0
MGEyZjIpfSwKKyAgICB7Qyg5NDNlN2VkNjNiM2MwODApLCBDKDFlZjIwN2U5NDQ0ZWY3ZjgpLCBD
KGVmNGE5ZjlmOGM2ZjliNGEpLCBDKDI0MGEyZjIpfSwKICAgICB7QyhkNzJjZTA1MTcxZWY4YTFh
KSwgQyhjNmJkNmJkODY5MjAzODk0KSwgQyhjNzYwZTYzOTY0NTVkMjNhKSwKLSAgICAgQyhmODZh
ZjBiNDBkY2NlN2IpLCBDKDhkM2MxNWQ2MTMzOTRkM2MpLCBDKDQ5MWU0MDA0OTFjZDRlY2UpLAot
ICAgICBDKDdjMTlkMzUzMGVhMzU0N2YpLCBDKGY4NmFmMGI0MGRjY2U3YiksIEMoOGQzYzE1ZDYx
MzM5NGQzYyksCi0gICAgIEMoNDkxZTQwMDQ5MWNkNGVjZSksIEMoN2MxOWQzNTMwZWEzNTQ3Ziks
IEMoMTM2Mjk2M2ExZGMzMmFmOSksCi0gICAgIEMoZmI5YmMxMTc2MmUxMzg1YyksIEMoOWUxNjRl
ZjFmNTM3NjA4MyksIEMoNmMxNTgxOWI1ZTgyOGE3ZSksCiAgICAgIEMoNWRjZWZjMzApfSwKICAg
ICB7Qyg0MTgyODMyYjUyZDYzNzM1KSwgQygzMzcwOTdlMTIzZWVhNDE0KSwgQyhiNWE3MmNhMDQ1
NmRmOTEwKSwKLSAgICAgQyg3ZWJjMDM0MjM1YmMxMjJmKSwgQyhkOWE3NzgzZDRlZGQ4MDQ5KSwg
Qyg1ZjhiMDRhMTVhZTQyMzYxKSwKLSAgICAgQyhmYzE5MzM2MzMzNjQ1M2RkKSwgQyg3ZWJjMDM0
MjM1YmMxMjJmKSwgQyhkOWE3NzgzZDRlZGQ4MDQ5KSwKLSAgICAgQyg1ZjhiMDRhMTVhZTQyMzYx
KSwgQyhmYzE5MzM2MzMzNjQ1M2RkKSwgQyg5YjZjNTAyMjRlZjhjNGY4KSwKLSAgICAgQyhiYTIy
NWM3OTQyZDE2YzNmKSwgQyg2ZjZkNTUyMjZhNzNjNDEyKSwgQyhhYmNhMDYxZmUwNzIxNTJhKSwK
ICAgICAgQyg3YTQ4YjEwNSl9LAogICAgIHtDKGQ2Y2RhZTg5MjU4NGEyY2IpLCBDKDU4ZGUwZmE0
ZWNhMTdkY2QpLCBDKDQzZGYzMGI4ZjVmMWNiMDApLAotICAgICBDKDllNGVhNWE0OTQxZTA5N2Qp
LCBDKDU0N2UwNDhkNWE5ZGFhYmEpLCBDKGViNmVjYmIwYjgzMWQxODUpLAotICAgICBDKGUwMTY4
ZGY1ZmFkMGM2NzApLCBDKDllNGVhNWE0OTQxZTA5N2QpLCBDKDU0N2UwNDhkNWE5ZGFhYmEpLAot
ICAgICBDKGViNmVjYmIwYjgzMWQxODUpLCBDKGUwMTY4ZGY1ZmFkMGM2NzApLCBDKGFmYTk3MDVm
OThjMmM5NmEpLAotICAgICBDKDc0OTQzNmY0ODEzN2E5NmIpLCBDKDc1OWMwNDFmYzIxZGY0ODYp
LCBDKGIyM2JmNDAwMTA3YWEyZWMpLAogICAgICBDKGZkNTUwMDdiKX0sCiAgICAge0MoNWM4ZTkw
YmMyNjdjNWVlNCksIEMoZTlhZTA0NDA3NWQ5OTJkOSksIEMoZjIzNGNiZmQxZjBhMWU1OSksCi0g
ICAgIEMoY2UyNzQ0NTIxOTQ0ZjE0YyksIEMoMTA0ZjgwMzJmOTlkYzE1MiksIEMoNGU3ZjQyNWJm
YWM2N2NhNyksCi0gICAgIEMoOTQ2MWI5MTFhMWM2ZDU4OSksIEMoY2UyNzQ0NTIxOTQ0ZjE0Yyks
IEMoMTA0ZjgwMzJmOTlkYzE1MiksCi0gICAgIEMoNGU3ZjQyNWJmYWM2N2NhNyksIEMoOTQ2MWI5
MTFhMWM2ZDU4OSksIEMoNWU1ZWNjNzI2ZGI4YjYwZCksCi0gICAgIEMoY2NlNjhiMDU4NjA4M2I1
MSksIEMoOGE3ZjhlNTRhOWNiYTBmYyksIEMoNDJmMDEwMTgxZDE2ZjA0OSksCiAgICAgIEMoNmI5
NTg5NGMpfSwKICAgICB7QyhiYmQ3ZjMwYWMzMTBhNmYzKSwgQyhiMjNiNTcwZDI2NjY2ODVmKSwg
QyhmYjEzZmIwOGM5ODE0ZmU3KSwKLSAgICAgQyg0ZWUxMDcwNDJlNTEyMzc0KSwgQygxZTJjOGMw
ZDE2MDk3ZTEzKSwgQygyMTBjNzUwMDk5NWFhMGU2KSwKLSAgICAgQyg2YzEzMTkwNTU3MTA2NDU3
KSwgQyg0ZWUxMDcwNDJlNTEyMzc0KSwgQygxZTJjOGMwZDE2MDk3ZTEzKSwKLSAgICAgQygyMTBj
NzUwMDk5NWFhMGU2KSwgQyg2YzEzMTkwNTU3MTA2NDU3KSwgQyhhOTliMzFjOTY3NzdmMzgxKSwK
LSAgICAgQyg4MzEyYWU4MzAxZDM4NmMwKSwgQyhlZDUwNDJiMmE0ZmE5NmEzKSwgQyhkNzFkMWJi
MjM5MDdmZTk3KSwKICAgICAgQygzMzYwZTgyNyl9LAotICAgIHtDKDM2YTA5N2FhNDk1MTlkOTcp
LCBDKDgyMDQzODBhNzNjNDA2NSksIEMoNzdjMjAwNGJkZDllMjc2YSksCi0gICAgIEMoNmVlMWY4
MTdjZTBiN2FlZSksIEMoZTlkY2IzNTA3ZjA1OTZjYSksIEMoNmJjNjNjNjY2YjUxMDBlMiksCi0g
ICAgIEMoZTBiMDU2ZjE4MjE3NTJhZiksIEMoNmVlMWY4MTdjZTBiN2FlZSksIEMoZTlkY2IzNTA3
ZjA1OTZjYSksCi0gICAgIEMoNmJjNjNjNjY2YjUxMDBlMiksIEMoZTBiMDU2ZjE4MjE3NTJhZiks
IEMoOGVhMTExNGU2MDI5MjY3OCksCi0gICAgIEMoOTA0YjgwYjQ2YmVjYzc3KSwgQyg0NmNkOWJi
NmU5ZGZmNTJmKSwgQyg0YzkxZTNiNjk4MzU1NTQwKSwgQyg0NTE3N2UwYil9LAotICAgIHtDKGRj
NzhjYjAzMmM0OTIxNyksIEMoMTEyNDY0MDgzZjgzZTAzYSksIEMoOTZhZTUzZTI4MTcwYzBmNSks
Ci0gICAgIEMoZDM2N2ZmNTQ5NTJhOTU4KSwgQyhjZGFkOTMwNjU3MzcxMTQ3KSwgQyhhYTI0ZGMy
YTk1NzNkNWZlKSwKLSAgICAgQyhlYjEzNmRhYTg5ZGE1MTEwKSwgQyhkMzY3ZmY1NDk1MmE5NTgp
LCBDKGNkYWQ5MzA2NTczNzExNDcpLAotICAgICBDKGFhMjRkYzJhOTU3M2Q1ZmUpLCBDKGViMTM2
ZGFhODlkYTUxMTApLCBDKGRlNjIzMDA1ZjZkNDYwNTcpLAotICAgICBDKGI1MGMwYzkyYjk1ZTli
N2YpLCBDKGE4YWE1NDA1MGI4MWM5NzgpLCBDKDU3M2ZiNWM3ODk1YWY5YjUpLAotICAgICBDKDdj
NmZmZmU0KX0sCisgICAge0MoMzZhMDk3YWE0OTUxOWQ5NyksIEMoODIwNDM4MGE3M2M0MDY1KSwg
Qyg3N2MyMDA0YmRkOWUyNzZhKSwgQyg0NTE3N2UwYil9LAorICAgIHtDKGRjNzhjYjAzMmM0OTIx
NyksIEMoMTEyNDY0MDgzZjgzZTAzYSksIEMoOTZhZTUzZTI4MTcwYzBmNSksIEMoN2M2ZmZmZTQp
fSwKICAgICB7Qyg0NDE1OTNlMGRhOTIyZGZlKSwgQyg5MzZlZjQ2MDYxNDY5YjMyKSwgQygyMDRh
MTkyMTE5N2RkZDg3KSwKLSAgICAgQyg1MGQ4YTcwZTdhOGQ4ZjU2KSwgQygyNTZkMTUwYWU3NWRh
Yjc2KSwgQyhlODFmNGM0YTE5ODkwMzZhKSwKLSAgICAgQyhkMGY4ZGIzNjVmOWQ3ZTAwKSwgQyg1
MGQ4YTcwZTdhOGQ4ZjU2KSwgQygyNTZkMTUwYWU3NWRhYjc2KSwKLSAgICAgQyhlODFmNGM0YTE5
ODkwMzZhKSwgQyhkMGY4ZGIzNjVmOWQ3ZTAwKSwgQyg3NTNkNjg2Njc3YjE0NTIyKSwKLSAgICAg
Qyg5Zjc2ZTBjYjZmMmQwYTY2KSwgQyhhYjE0Zjk1OTg4ZWMwZDM5KSwgQyg5NzYyMWQ5ZGE5Yzk4
MTJmKSwKICAgICAgQyhiYmM3OGRhNCl9LAogICAgIHtDKDJiYTM4ODNkNzFjYzIxMzMpLCBDKDcy
ZjJiYmIzMmJlZDFhM2MpLCBDKDI3ZTFiZDk2ZDQ4NDMyNTEpLAotICAgICBDKGE5MGY3NjFlOGRi
MTU0M2EpLCBDKGMzMzllMjNjMDk3MDNjZDgpLCBDKGYwYzY2MjRjNGIwOThmZDMpLAotICAgICBD
KDFiYWUyMDUzZTQxZmE0ZDkpLCBDKGE5MGY3NjFlOGRiMTU0M2EpLCBDKGMzMzllMjNjMDk3MDNj
ZDgpLAotICAgICBDKGYwYzY2MjRjNGIwOThmZDMpLCBDKDFiYWUyMDUzZTQxZmE0ZDkpLCBDKDM1
ODllMjczYzIyYmEwNTkpLAotICAgICBDKDYzNzk4MjQ2ZTU5MTFhMGIpLCBDKDE4ZTcxMGVjMjY4
ZmM1ZGMpLCBDKDcxNGExMjJkZTFkMDc0ZjMpLAogICAgICBDKGM1YzI1ZDM5KX0sCiAgICAge0Mo
ZjJiNmQyYWRmODQyMzYwMCksIEMoNzUxNGUyZjAxNmE0ODcyMiksIEMoNDMwNDU3NDNhNTAzOTZi
YSksCi0gICAgIEMoMjNkYWNiODExNjUyYWQ0ZiksIEMoYzk4MmRhNDgwZTBkNGM3ZCksIEMoM2E5
YzhlZDVhMzk5ZDBhOSksCi0gICAgIEMoOTUxYjhkMDg0NjkxZDRlNCksIEMoMjNkYWNiODExNjUy
YWQ0ZiksIEMoYzk4MmRhNDgwZTBkNGM3ZCksCi0gICAgIEMoM2E5YzhlZDVhMzk5ZDBhOSksIEMo
OTUxYjhkMDg0NjkxZDRlNCksIEMoZDlmODdiNDk4OGNmZjJmNyksCi0gICAgIEMoMjE3YTE5MWQ5
ODZhYTNiYyksIEMoNmFkMjNjNTZiNDgwMzUwKSwgQyhkZDc4NjczOTM4Y2ViMmU3KSwgQyhiNmU1
ZDA2ZSl9LAorICAgICBDKGI2ZTVkMDZlKX0sCiAgICAge0MoMzhmZmZlN2YzNjgwZDYzYyksIEMo
ZDUxMzMyNTI1NWE3YTZkMSksIEMoMzFlZDQ3NzkwZjZjYTYyZiksCi0gICAgIEMoYzgwMWZhYWEw
YTJlMzMxZiksIEMoNDkxZGJjNTgyNzljN2Y4OCksIEMoOWMwMTc4ODQ4MzIxYzk3YSksCi0gICAg
IEMoOWQ5MzRmODE0ZjRkNmEzYyksIEMoYzgwMWZhYWEwYTJlMzMxZiksIEMoNDkxZGJjNTgyNzlj
N2Y4OCksCi0gICAgIEMoOWMwMTc4ODQ4MzIxYzk3YSksIEMoOWQ5MzRmODE0ZjRkNmEzYyksIEMo
NjA2YTNlNGZjODc2MzE5MiksCi0gICAgIEMoYmMxNWNiMzZhNjc3ZWU4NCksIEMoNTJkNTkwNDE1
N2UxZmU3MSksIEMoMTU4OGRkOGIxMTQ1Yjc5YiksCiAgICAgIEMoNjE3ODUwNGUpfSwKLSAgICB7
QyhiNzQ3N2JmMGI5Y2UzN2M2KSwgQyg2M2IxYzU4MGE3ZmQwMmE0KSwgQyhmNjQzM2I5ZjEwYTVk
YWMpLAotICAgICBDKDY4ZGQ3NmRiOWQ2NGVjYTcpLCBDKDM2Mjk3NjgyYjY0YjY3KSwgQyg0MmIx
OTJkNzFmNDE0YjdhKSwKLSAgICAgQyg3OTY5MmNlZjQ0ZmEwMjA2KSwgQyg2OGRkNzZkYjlkNjRl
Y2E3KSwgQygzNjI5NzY4MmI2NGI2NyksCi0gICAgIEMoNDJiMTkyZDcxZjQxNGI3YSksIEMoNzk2
OTJjZWY0NGZhMDIwNiksIEMoZjA5NzkyNTJmNDc3NmQwNyksCi0gICAgIEMoNGI4N2NkNGYxYzli
YmY1MiksIEMoNTFiODRiYmM2MzEyYzcxMCksIEMoMTUwNzIwZmJmODU0MjhhNyksCi0gICAgIEMo
YmQ0YzM2MzcpfSwKKyAgICB7QyhiNzQ3N2JmMGI5Y2UzN2M2KSwgQyg2M2IxYzU4MGE3ZmQwMmE0
KSwgQyhmNjQzM2I5ZjEwYTVkYWMpLCBDKGJkNGMzNjM3KX0sCiAgICAge0MoNTViZGIwZTcxZTNl
ZGViZCksIEMoYzdhYjU2MmJjZjA1NjhiYyksIEMoNDMxNjYzMzJmOWVlNjg0ZiksCi0gICAgIEMo
YjJlMjU5NjRjZDQwOTExNyksIEMoYTAxMDU5OWQ2Mjg3YzQxMiksIEMoZmE1ZDY0NjFlNzY4ZGRh
MiksCi0gICAgIEMoY2IzY2U3NGU4ZWM0ZjkwNiksIEMoYjJlMjU5NjRjZDQwOTExNyksIEMoYTAx
MDU5OWQ2Mjg3YzQxMiksCi0gICAgIEMoZmE1ZDY0NjFlNzY4ZGRhMiksIEMoY2IzY2U3NGU4ZWM0
ZjkwNiksIEMoNjEyMGFiZmQ1NDFhMjYxMCksCi0gICAgIEMoYWE4OGIxNDhjYzk1Nzk0ZCksIEMo
MjY4NmNhMzVkZjY1OTBlMyksIEMoYzZiMDJkMTg2MTZjZTk0ZCksCiAgICAgIEMoNmU3YWM0NzQp
fSwKLSAgICB7Qyg3ODJmYTFiMDhiNDc1ZTcpLCBDKGZiNzEzODk1MWM2MWIyM2IpLCBDKDk4Mjkx
MDVlMjM0ZmIxMWUpLAotICAgICBDKDlhOGM0MzFmNTAwZWYwNmUpLCBDKGQ4NDg1ODFhNTgwYjZj
MTIpLCBDKGZlY2ZlMTFlMTNhMmJkYjQpLAotICAgICBDKDZjNGZhMDI3M2Q3ZGIwOGMpLCBDKDlh
OGM0MzFmNTAwZWYwNmUpLCBDKGQ4NDg1ODFhNTgwYjZjMTIpLAotICAgICBDKGZlY2ZlMTFlMTNh
MmJkYjQpLCBDKDZjNGZhMDI3M2Q3ZGIwOGMpLCBDKDQ4MmY0M2JmNWFlNTlmY2IpLAotICAgICBD
KGY2NTFmYmNhMTA1ZDc5ZTYpLCBDKGYwOWY3ODY5NWQ4NjU4MTcpLCBDKDdhOTlkMDA5MjA4NWNm
NDcpLAotICAgICBDKDFmYjRiNTE4KX0sCisgICAge0MoNzgyZmExYjA4YjQ3NWU3KSwgQyhmYjcx
Mzg5NTFjNjFiMjNiKSwgQyg5ODI5MTA1ZTIzNGZiMTFlKSwgQygxZmI0YjUxOCl9LAogICAgIHtD
KGM1ZGMxOWI4NzZkMzdhODApLCBDKDE1ZmZjZmY2NjZjZmQ3MTApLCBDKGU4YzMwYzcyMDAzMTAz
ZTIpLAotICAgICBDKDc4NzA3NjViNDcwYjJjNWQpLCBDKDc4YTkxMDNmZjk2MGQ4MiksIEMoN2Ji
NTBmZmM5ZmFjNzRiMyksCi0gICAgIEMoNDc3ZTcwYWIyYjM0N2RiMiksIEMoNzg3MDc2NWI0NzBi
MmM1ZCksIEMoNzhhOTEwM2ZmOTYwZDgyKSwKLSAgICAgQyg3YmI1MGZmYzlmYWM3NGIzKSwgQyg0
NzdlNzBhYjJiMzQ3ZGIyKSwgQyhhNjI1MjM4YmRmN2MwN2NmKSwKLSAgICAgQygxMTI4ZDUxNTE3
NDgwOWY1KSwgQyhiMGYxNjQ3ZTgyZjQ1ODczKSwgQygxNzc5MmQxYzRmMjIyYzM5KSwKICAgICAg
QygzMWQxM2Q2ZCl9LAogICAgIHtDKDVlMTE0MTcxMWQyZDY3MDYpLCBDKGI1MzdmNmRlZThkZTY5
MzMpLCBDKDNhZjBhMWZiYmUwMjdjNTQpLAotICAgICBDKGVhMzQ5ZGJjMTZjMmU0NDEpLCBDKDM4
YTc0NTViNmE4Nzc1NDcpLCBDKDVmOTdiOTc1MGUzNjU0MTEpLAotICAgICBDKGU4Y2RlN2Y5M2Fm
NDlhMyksIEMoZWEzNDlkYmMxNmMyZTQ0MSksIEMoMzhhNzQ1NWI2YTg3NzU0NyksCi0gICAgIEMo
NWY5N2I5NzUwZTM2NTQxMSksIEMoZThjZGU3ZjkzYWY0OWEzKSwgQyhiYTEwMTkyNWVjMWY3ZTI2
KSwKLSAgICAgQyhkNWU4NGNhYjgxOTJjNzFlKSwgQyhlMjU2NDI3NzI2ZmRkNjMzKSwgQyhhNGYz
OGUyYzYxMTY4OTBkKSwKICAgICAgQygyNmZhNzJlMyl9LAotICAgIHtDKDc4MmVkZjZkYTAwMTIz
NGYpLCBDKGY0OGNiZDVjNjZjNDhmMyksIEMoODA4NzU0ZDFlNjRlMmEzMiksCi0gICAgIEMoNWQ5
ZGRlNzczNTNiMWE2ZCksIEMoMTFmNThjNTQ1ODFmYThiMSksIEMoZGE5MGZhN2MyOGMzNzQ3OCks
Ci0gICAgIEMoNWU5YTJlYWZjNjcwYTg4YSksIEMoNWQ5ZGRlNzczNTNiMWE2ZCksIEMoMTFmNThj
NTQ1ODFmYThiMSksCi0gICAgIEMoZGE5MGZhN2MyOGMzNzQ3OCksIEMoNWU5YTJlYWZjNjcwYTg4
YSksIEMoZTM1ZTFiYzE3MmUwMTFlZiksCi0gICAgIEMoYmY5MjU1YTQ0NTBhZTdmZSksIEMoNTVm
ODUxOTRlMjZiYzU1ZiksIEMoNGYzMjc4NzNlMTRkMGU1NCksCi0gICAgIEMoNmE3NDMzYmYpfSwK
KyAgICB7Qyg3ODJlZGY2ZGEwMDEyMzRmKSwgQyhmNDhjYmQ1YzY2YzQ4ZjMpLCBDKDgwODc1NGQx
ZTY0ZTJhMzIpLCBDKDZhNzQzM2JmKX0sCiAgICAge0MoZDI2Mjg1ODQyZmYwNGQ0NCksIEMoOGYz
OGQ3MTM0MWVhY2NhOSksIEMoNWNhNDM2ZjRkYjdhODgzYyksCi0gICAgIEMoYmY0MWU1Mzc2Yjlm
MGVlYyksIEMoMjI1MmQyMWViN2UxYzBlOSksIEMoZjRiNzBhOTcxODU1ZTczMiksCi0gICAgIEMo
NDBjNzY5NWFhMzY2MmFmZCksIEMoYmY0MWU1Mzc2YjlmMGVlYyksIEMoMjI1MmQyMWViN2UxYzBl
OSksCi0gICAgIEMoZjRiNzBhOTcxODU1ZTczMiksIEMoNDBjNzY5NWFhMzY2MmFmZCksIEMoNzcw
ZmUxOWUxNmFiNzNiYiksCi0gICAgIEMoZDYwM2ViZGE2MzkzZDc0OSksIEMoZTU4YzYyNDM5YWE1
MGRiZCksIEMoOTZkNTFlNWEwMmQyZDdjZiksCiAgICAgIEMoNGU2ZGY3NTgpfSwKICAgICB7Qyhj
NmFiODMwODY1YTZiYWU2KSwgQyg2YWE4ZThkZDRiOTg4MTVjKSwgQyhlZmUzODQ2NzEzYzM3MWU1
KSwKLSAgICAgQyhhMTkyNGNiZjBiNWY5MjIyKSwgQyg3ZjQ4NzIzNjljMmI0MjU4KSwgQyhjZDZk
YTMwNTMwZjNlYTg5KSwKLSAgICAgQyhiN2Y4YjlhNzA0ZTZjZWExKSwgQyhhMTkyNGNiZjBiNWY5
MjIyKSwgQyg3ZjQ4NzIzNjljMmI0MjU4KSwKLSAgICAgQyhjZDZkYTMwNTMwZjNlYTg5KSwgQyhi
N2Y4YjlhNzA0ZTZjZWExKSwgQyhmYTA2ZmY0MDQzM2ZkNTM1KSwKLSAgICAgQyhmYjFjMzZmZThm
MDczN2YxKSwgQyhiYjcwNTA1NjExNzFmODApLCBDKGIxYmMyMzIzNTkzNWQ4OTcpLCBDKGQ1N2Y2
M2VhKX0sCi0gICAge0MoNDRiM2ExOTI5MjMyODkyKSwgQyg2MWRjYTBlOTE0ZmMyMTcpLCBDKGE2
MDdjYzE0MjA5NmI5NjQpLAotICAgICBDKGY3ZGJjODQzM2M4OWIyNzQpLCBDKDJmNWY3MDU4MWM5
YjdkMzIpLCBDKDM5YmY1ZTVmZWM4MmRjY2EpLAotICAgICBDKDhhZGU1NjM4ODkwMWE2MTkpLCBD
KGY3ZGJjODQzM2M4OWIyNzQpLCBDKDJmNWY3MDU4MWM5YjdkMzIpLAotICAgICBDKDM5YmY1ZTVm
ZWM4MmRjY2EpLCBDKDhhZGU1NjM4ODkwMWE2MTkpLCBDKGMxYzZhNzI1Y2FhYjNlYTkpLAotICAg
ICBDKGMxYzc5MDZjMmY4MGI4OTgpLCBDKDljMzg3MWEwNGNjODg0ZTYpLCBDKGRmMDE4MTNjYmJk
ZjIxN2YpLAotICAgICBDKDUyZWY3M2IzKX0sCi0gICAge0MoNGI2MDNkNzkzMmE4ZGU0ZiksIEMo
ZmFlNjRjNDY0YjhhOGY0NSksIEMoOGZhZmFiNzU2NjFkNjAyYSksCi0gICAgIEMoOGZmZTg3MGVm
NGFkYzA4NyksIEMoNjViZWEyYmU0MWY1NWI1NCksIEMoODJmMzUwM2Y2MzZhZWYxKSwKLSAgICAg
Qyg1Zjc4YTI4MjM3OGI2YmIwKSwgQyg4ZmZlODcwZWY0YWRjMDg3KSwgQyg2NWJlYTJiZTQxZjU1
YjU0KSwKLSAgICAgQyg4MmYzNTAzZjYzNmFlZjEpLCBDKDVmNzhhMjgyMzc4YjZiYjApLCBDKDdi
ZjI0MjJjMGJlY2VkZGIpLAotICAgICBDKDlkMjM4ZDQ3ODAxMTRiZCksIEMoN2FkMTk4MzExOTA2
NTk3ZiksIEMoZWM4Zjg5MmMwNDIyYWNhMyksIEMoM2NiMzZjMyl9LAorICAgICBDKGQ1N2Y2M2Vh
KX0sCisgICAge0MoNDRiM2ExOTI5MjMyODkyKSwgQyg2MWRjYTBlOTE0ZmMyMTcpLCBDKGE2MDdj
YzE0MjA5NmI5NjQpLCBDKDUyZWY3M2IzKX0sCisgICAge0MoNGI2MDNkNzkzMmE4ZGU0ZiksIEMo
ZmFlNjRjNDY0YjhhOGY0NSksIEMoOGZhZmFiNzU2NjFkNjAyYSksIEMoM2NiMzZjMyl9LAogICAg
IHtDKDRlYzBiNTRjZjE1NjZhZmYpLCBDKDMwZDJjNzI2OWIyMDZiZjQpLCBDKDc3YzIyZTgyMjk1
ZTEwNjEpLAotICAgICBDKDNkZjliMDQ0MzQ3NzE1NDIpLCBDKGZlZGRjZTc4NWNjYjY2MWYpLCBD
KGE2NDRhZmY3MTY5MjgyOTcpLAotICAgICBDKGRkNDZhZWU3MzgyNGI0ZWQpLCBDKDNkZjliMDQ0
MzQ3NzE1NDIpLCBDKGZlZGRjZTc4NWNjYjY2MWYpLAotICAgICBDKGE2NDRhZmY3MTY5MjgyOTcp
LCBDKGRkNDZhZWU3MzgyNGI0ZWQpLCBDKGJmOGQ3MTg3OWRhMjliMDIpLAotICAgICBDKGZjODJk
Y2NiZmM4MDIyYTApLCBDKDMxYmZjZDBkOWY0OGQxZDMpLCBDKGM2NGVlMjRkMGU3YjVmOGIpLAog
ICAgICBDKDcyYzM5YmVhKX0sCiAgICAge0MoZWQ4YjdhNGIzNDk1NGZmNyksIEMoNTY0MzJkZTMx
ZjRlZTc1NyksIEMoODViZDNhYmFhNTcyYjE1NSksCi0gICAgIEMoN2QyYzM4YTkyNmRjMWI4OCks
IEMoNTI0NWI5ZWI0Y2Q2NzkxZCksIEMoZmI1M2FiMDNiOWFkMDg1NSksCi0gICAgIEMoMzY2NDAy
NmM4ZmM2NjlkNyksIEMoN2QyYzM4YTkyNmRjMWI4OCksIEMoNTI0NWI5ZWI0Y2Q2NzkxZCksCi0g
ICAgIEMoZmI1M2FiMDNiOWFkMDg1NSksIEMoMzY2NDAyNmM4ZmM2NjlkNyksIEMoNDUwMjRkNTA4
MGJjMTk2KSwKLSAgICAgQyhiMjM2ZWJlYzJjYzI3NDApLCBDKDI3MjMxYWQwZTM0NDNiZTQpLCBD
KDE0NTc4MGI2M2Y4MDkyNTApLCBDKGE2NWFhMjVjKX0sCisgICAgIEMoYTY1YWEyNWMpfSwKICAg
ICB7Qyg1ZDI4YjQzNjk0MTc2YzI2KSwgQyg3MTRjYzhiYzEyZDA2MGFlKSwgQygzNDM3NzI2Mjcz
YTgzZmU2KSwKLSAgICAgQyg4NjRiMWIyOGVjMTZlYTg2KSwgQyg2YTc4YTVhNDAzOWVjMmI5KSwg
Qyg4ZTk1OTUzM2UzNWE3NjYpLAotICAgICBDKDM0N2I3YzIyYjc1YWU2NWYpLCBDKDg2NGIxYjI4
ZWMxNmVhODYpLCBDKDZhNzhhNWE0MDM5ZWMyYjkpLAotICAgICBDKDhlOTU5NTMzZTM1YTc2Niks
IEMoMzQ3YjdjMjJiNzVhZTY1ZiksIEMoNTAwNTg5MmJiNjFlNjQ3YyksCi0gICAgIEMoZmU2NDY1
MTliNGExODk0ZCksIEMoY2Q4MDEwMjZmNzRhOGE1MyksIEMoODcxMzQ2M2U5YTFhYjljZSksCiAg
ICAgIEMoNzQ3NDA1MzkpfSwKICAgICB7Qyg2YTFlZjM2MzllMWQyMDJlKSwgQyg5MTliYzFiZDE0
NWFkOTI4KSwgQygzMGYzZjdlNDhjMjhhNzczKSwKLSAgICAgQygyZThjNDlkN2M3YWFhNTI3KSwg
Qyg1ZTIzMjhmYzg3MDFkYjdjKSwgQyg4OWVmMWFmY2E4MWY3ZGU4KSwKLSAgICAgQyhiMTg1N2Ri
MTE5ODVkMjk2KSwgQygyZThjNDlkN2M3YWFhNTI3KSwgQyg1ZTIzMjhmYzg3MDFkYjdjKSwKLSAg
ICAgQyg4OWVmMWFmY2E4MWY3ZGU4KSwgQyhiMTg1N2RiMTE5ODVkMjk2KSwgQygxNzc2M2Q2OTVm
NjE2MTE1KSwKLSAgICAgQyhiOGY3YmYxZmNkYzgzMjJjKSwgQyhjZjBjNjE5MzhhYjA3YTI3KSwg
QygxMTIyZDNlNmVkYjRlODY2KSwKICAgICAgQyhjM2FlM2MyNil9LAotICAgIHtDKDE1OWY0ZDll
MDMwN2IxMTEpLCBDKDNlMTc5MTRhNTY3NWEwYyksIEMoYWY4NDliZDQyNTA0N2I1MSksCi0gICAg
IEMoM2I2OWVkYWRmMzU3NDMyYiksIEMoM2EyZTMxMWMxMjFlNmJmMiksIEMoMzgwZmFkMWUyODhk
NTdlNSksCi0gICAgIEMoYmY3YzdlOGVmMGUzYjgzYSksIEMoM2I2OWVkYWRmMzU3NDMyYiksIEMo
M2EyZTMxMWMxMjFlNmJmMiksCi0gICAgIEMoMzgwZmFkMWUyODhkNTdlNSksIEMoYmY3YzdlOGVm
MGUzYjgzYSksIEMoOTI5NjZkNWY0MzU2YWU5YiksCi0gICAgIEMoMmEwM2ZjNjZjNGQ2YzAzNiks
IEMoMjUxNmQ4YmRkYjBkNTI1OSksIEMoYjNmZmU5NzM3ZmY1MDkwKSwgQyhmMjlkYjhhMil9LAor
ICAgIHtDKDE1OWY0ZDllMDMwN2IxMTEpLCBDKDNlMTc5MTRhNTY3NWEwYyksIEMoYWY4NDliZDQy
NTA0N2I1MSksIEMoZjI5ZGI4YTIpfSwKICAgICB7QyhjYzBhODQwNzI1YTdlMjViKSwgQyg1N2M2
OTQ1NDM5NmUxOTNhKSwgQyg5NzZlYWY3ZWVlMGI0NTQwKSwKLSAgICAgQyhjZDdhNDY4NTBiOTVl
OTAxKSwgQyhjNTdmN2QwNjBkZGEyNDZmKSwgQyg2Yjk0MDZlYWQ2NDA3OWJmKSwKLSAgICAgQygx
MWIyOGUyMGE1NzNiN2JkKSwgQyhjZDdhNDY4NTBiOTVlOTAxKSwgQyhjNTdmN2QwNjBkZGEyNDZm
KSwKLSAgICAgQyg2Yjk0MDZlYWQ2NDA3OWJmKSwgQygxMWIyOGUyMGE1NzNiN2JkKSwgQygyZDZk
YjM1NmU5MzY5YWNlKSwKLSAgICAgQyhkYzBhZmUxMGZiYTE5MyksIEMoNWNkYjEwODg1ZGJiZmNl
KSwgQyg1YzcwMGUyMDU3ODJlMzVhKSwgQygxZWY0Y2JmNCl9LAorICAgICBDKDFlZjRjYmY0KX0s
CiAgICAge0MoYTJiMjdlZTIyZjYzYzNmMSksIEMoOWViZGUwY2UxYjM5NzZiMiksIEMoMmZlNmE5
MmEyNTdhZjMwOCksCi0gICAgIEMoOGMxZGY5MjdhOTMwYWY1OSksIEMoYTQ2MmY0NDIzYzllMzg0
ZSksIEMoMjM2NTQyMjU1YjJhZDhkOSksCi0gICAgIEMoNTk1ZDIwMWEyYzE5ZDViYyksIEMoOGMx
ZGY5MjdhOTMwYWY1OSksIEMoYTQ2MmY0NDIzYzllMzg0ZSksCi0gICAgIEMoMjM2NTQyMjU1YjJh
ZDhkOSksIEMoNTk1ZDIwMWEyYzE5ZDViYyksIEMoMjJjODdkNDYwNGE2N2YzKSwKLSAgICAgQyg1
ODVhMDZlYjRiYzQ0YzRmKSwgQyhiNDE3NWE3YWM3ZWFiY2Q4KSwgQyhhNDU3ZDNlZWJhMTRhYjhj
KSwKICAgICAgQyhhOWJlNmM0MSl9LAotICAgIHtDKGQ4ZjJmMjM0ODk5YmNhYjMpLCBDKGIxMGIw
MzcyOTdjM2ExNjgpLCBDKGRlYmVhMmM1MTBjZWRhN2YpLAotICAgICBDKDk0OThmZWZiODkwMjg3
Y2UpLCBDKGFlNjhjMmJlNWIxYTY5YTYpLCBDKDYxODlkZmJhMzRlZDY1NmMpLAotICAgICBDKDkx
NjU4Zjk1ODM2ZTUyMDYpLCBDKDk0OThmZWZiODkwMjg3Y2UpLCBDKGFlNjhjMmJlNWIxYTY5YTYp
LAotICAgICBDKDYxODlkZmJhMzRlZDY1NmMpLCBDKDkxNjU4Zjk1ODM2ZTUyMDYpLCBDKGMwYmI0
ZmZmMzJhZWNkNGQpLAotICAgICBDKDk0MTI1ZjUwNWE1MGVlZjkpLCBDKDZhYzQwNmU3Y2ZiY2U1
YmIpLCBDKDM0NGE0YjFkY2RiN2Y1ZDgpLCBDKGZhMzE4MDEpfSwKKyAgICB7QyhkOGYyZjIzNDg5
OWJjYWIzKSwgQyhiMTBiMDM3Mjk3YzNhMTY4KSwgQyhkZWJlYTJjNTEwY2VkYTdmKSwgQyhmYTMx
ODAxKX0sCiAgICAge0MoNTg0ZjI4NTQzODY0ODQ0ZiksIEMoZDdjZWU5ZmMyZDQ2ZjIwZCksIEMo
YTM4ZGNhNTY1NzM4NzIwNSksCi0gICAgIEMoN2EwYjZkYmFiOWExNGU2OSksIEMoYzZkMGE5ZDZi
MGUzMWFjNCksIEMoYTY3NGQ4NTgxMmM3Y2Y2KSwKLSAgICAgQyg2MzUzOGMwMzUxMDQ5OTQwKSwg
Qyg3YTBiNmRiYWI5YTE0ZTY5KSwgQyhjNmQwYTlkNmIwZTMxYWM0KSwKLSAgICAgQyhhNjc0ZDg1
ODEyYzdjZjYpLCBDKDYzNTM4YzAzNTEwNDk5NDApLCBDKDk3MTBlNWYwYmM5M2QxZCksCi0gICAg
IEMoYzJiZWE1YmQ3YzU0ZGRkNCksIEMoNDg3MzlhZjJiZWQwZDMyZCksIEMoYmEyYzRlMDllMjFm
YmE4NSksCiAgICAgIEMoODMzMWM1ZDgpfSwKLSAgICB7QyhhOTRiZTQ2ZGQ5YWE0MWFmKSwgQyhh
NTdlNWI3NzIzZDNmOWJkKSwgQygzNGJmODQ1YTUyZmQyZiksCi0gICAgIEMoODQzYjU4NDYzYzhk
ZjBhZSksIEMoNzRiMjU4MzI0ZTkxNjA0NSksIEMoYmRkNzM1MzIzMGViMmIzOCksCi0gICAgIEMo
ZmFkMzFmY2VkN2FiYWRlNSksIEMoODQzYjU4NDYzYzhkZjBhZSksIEMoNzRiMjU4MzI0ZTkxNjA0
NSksCi0gICAgIEMoYmRkNzM1MzIzMGViMmIzOCksIEMoZmFkMzFmY2VkN2FiYWRlNSksIEMoMjQz
NmFlYWZiMDA0NmY4NSksCi0gICAgIEMoNjViYzlhZjllNWUzMzE2MSksIEMoOTI3MzNiMWIzYWU5
MDYyOCksIEMoZjQ4MTQzZWFmNzhhN2E4OSksCi0gICAgIEMoZTk4NzZkYjgpfSwKKyAgICB7Qyhh
OTRiZTQ2ZGQ5YWE0MWFmKSwgQyhhNTdlNWI3NzIzZDNmOWJkKSwgQygzNGJmODQ1YTUyZmQyZiks
IEMoZTk4NzZkYjgpfSwKICAgICB7Qyg5YTg3YmVhMjI3NDkxZDIwKSwgQyhhNDY4NjU3ZTJiOWM0
M2U3KSwgQyhhZjliYTYwZGI4ZDg5ZWY3KSwKLSAgICAgQyhjYzc2ZjQyOWVhN2ExMmJiKSwgQyg1
ZjMwZWFmMmJiMTQ4NzBhKSwgQyg0MzRlODI0Y2IzZTBjZDExKSwKLSAgICAgQyg0MzFhNGQzODJl
MzlkMTZlKSwgQyhjYzc2ZjQyOWVhN2ExMmJiKSwgQyg1ZjMwZWFmMmJiMTQ4NzBhKSwKLSAgICAg
Qyg0MzRlODI0Y2IzZTBjZDExKSwgQyg0MzFhNGQzODJlMzlkMTZlKSwgQyg5ZTUxZjkxM2M0Nzcz
YTgpLAotICAgICBDKDMyYWIxOTI1ODIzZDBhZGQpLCBDKDk5YzYxYjU0YzFkOGY2OWQpLCBDKDM4
Y2ZiODBmMDJiNDNiMWYpLAogICAgICBDKDI3YjA2MDRlKX0sCiAgICAge0MoMjc2ODhjMjQ5NThk
MWE1YyksIEMoZTNiNGExYzk0MjljZjI1MyksIEMoNDhhOTU4MTFmNzBkNjRiYyksCi0gICAgIEMo
MzI4MDYzMjI5ZGIyMjg4NCksIEMoNjdlOWM5NWY4YmE5NjAyOCksIEMoN2M2YmYwMWM2MDQzNjA3
NSksCi0gICAgIEMoZmE1NTE2MWU3ZDkwMzBiMiksIEMoMzI4MDYzMjI5ZGIyMjg4NCksIEMoNjdl
OWM5NWY4YmE5NjAyOCksCi0gICAgIEMoN2M2YmYwMWM2MDQzNjA3NSksIEMoZmE1NTE2MWU3ZDkw
MzBiMiksIEMoZGFkYmMyZjBkYWI5MTY4MSksCi0gICAgIEMoZGEzOWQ3YTQ5MzRjYTExKSwgQygx
NjJlODQ1ZDI0YzFiNDVjKSwgQyhlYjViOWRjZDhjNmVkMzFiKSwgQyhkY2VjMDdmMil9LAorICAg
ICBDKGRjZWMwN2YyKX0sCiAgICAge0MoNWQxZDM3NzkwYTE4NzNhZCksIEMoZWQ5Y2Q0YmNjNWZh
MTA5MCksIEMoY2U1MWNkZTA1ZDhjZDk2YSksCi0gICAgIEMoZjcyYzI2ZTYyNDQwN2U2NiksIEMo
YTBlYjU0MWJkYmM2ZDQwOSksIEMoYzNmNDBhMmY0MGIzYjIxMyksCi0gICAgIEMoNmE3ODRkZTY4
Nzk0NDkyZCksIEMoZjcyYzI2ZTYyNDQwN2U2NiksIEMoYTBlYjU0MWJkYmM2ZDQwOSksCi0gICAg
IEMoYzNmNDBhMmY0MGIzYjIxMyksIEMoNmE3ODRkZTY4Nzk0NDkyZCksIEMoMTBhMzhhMjNkYmVm
NzkzNyksCi0gICAgIEMoNmE1NTYwZjg1MzI1MjI3OCksIEMoYzMzODdiYmYzYzdiODJiYSksIEMo
ZmJlZTdjMTJlYjA3MjgwNSksCiAgICAgIEMoY2ZmMGE4MmEpfSwKICAgICB7QygxZjAzZmQxOGI3
MTFlZWE5KSwgQyg1NjZkODliMTk0NmQzODFhKSwgQyg2ZTk2ZTgzZmM5MjU2M2FiKSwKLSAgICAg
Qyg0MDVmNjZjZjhjYWUxYTMyKSwgQyhkNzI2MTc0MGQ4ZjE4Y2U2KSwgQyhmZWEzYWY2NGE0MTNk
MGIyKSwKLSAgICAgQyhkNjRkMTgxMGU4MzUyMGZlKSwgQyg0MDVmNjZjZjhjYWUxYTMyKSwgQyhk
NzI2MTc0MGQ4ZjE4Y2U2KSwKLSAgICAgQyhmZWEzYWY2NGE0MTNkMGIyKSwgQyhkNjRkMTgxMGU4
MzUyMGZlKSwgQyhlMTMzNGEwMGE1ODBjNmU4KSwKLSAgICAgQyg0NTQwNDllMWI1MmMxNWYpLCBD
KDg4OTVkODIzZDk3NzgyNDcpLCBDKGVmYTdmMmU4OGI4MjY2MTgpLCBDKGZlYzgzNjIxKX0sCi0g
ICAge0MoZjAzMTZmMjg2Y2Y1MjdiNiksIEMoZjg0YzI5NTM4ZGUxYWE1YSksIEMoNzYxMmVkM2M5
MjNkNGE3MSksCi0gICAgIEMoZDRlY2NlYmU5MzkzZWU4YSksIEMoMmViNzg2N2MyMzE4Y2M1OSks
IEMoMWNlNjIxZmQ3MDBmZTM5NiksCi0gICAgIEMoNjg2NDUwZDdhMzQ2ODc4YSksIEMoZDRlY2Nl
YmU5MzkzZWU4YSksIEMoMmViNzg2N2MyMzE4Y2M1OSksCi0gICAgIEMoMWNlNjIxZmQ3MDBmZTM5
NiksIEMoNjg2NDUwZDdhMzQ2ODc4YSksIEMoNzVhNWYzNzU3OWY4YjRjYiksCi0gICAgIEMoNTAw
Y2MxNmViNjU0MWRjNyksIEMoYjdiMDIzMTdiNTM5ZDlhNiksIEMoMzUxOWRkZmY1YmMyMGEyOSks
IEMoNzQzZDhkYyl9LAorICAgICBDKGZlYzgzNjIxKX0sCisgICAge0MoZjAzMTZmMjg2Y2Y1Mjdi
NiksIEMoZjg0YzI5NTM4ZGUxYWE1YSksIEMoNzYxMmVkM2M5MjNkNGE3MSksIEMoNzQzZDhkYyl9
LAogICAgIHtDKDI5NzAwOGJjYjNlMzQwMWQpLCBDKDYxYThlNDA3ZjgyYjBjNjkpLCBDKGE0YTM1
YmZmMDUyNGZhMGUpLAotICAgICBDKDdhNjFkOGY1NTJhNTM0NDIpLCBDKDgyMWQxZDhkOGNmYWNm
MzUpLCBDKDdjYzA2MzYxYjg2ZDA1NTkpLAotICAgICBDKDExOWI2MTdhOGMyYmUxOTkpLCBDKDdh
NjFkOGY1NTJhNTM0NDIpLCBDKDgyMWQxZDhkOGNmYWNmMzUpLAotICAgICBDKDdjYzA2MzYxYjg2
ZDA1NTkpLCBDKDExOWI2MTdhOGMyYmUxOTkpLCBDKDI5OTY0ODdkYTY3MjE3NTkpLAotICAgICBD
KDYxYTkwMTM3NjA3MGI5MWQpLCBDKGQ4OGRlZTEyYWU5YzliM2MpLCBDKDU2NjU0OTFiZTFmYTUz
YTcpLAogICAgICBDKDY0ZDQxZDI2KX0sCi0gICAge0MoNDNjNjI1MjQxMWVlM2JlKSwgQyhiNGNh
MWI4MDc3Nzc3MTY4KSwgQygyNzQ2ZGMzZjdkYTE3MzdmKSwKLSAgICAgQygyMjQ3YTRiMjA1OGQx
YzUwKSwgQygxYjNmYTE4NGIxZDdiY2MwKSwgQyhkZWI4NTYxMzk5NWMwNmVkKSwKLSAgICAgQyhj
YmUxZDk1NzQ4NWEzY2NkKSwgQygyMjQ3YTRiMjA1OGQxYzUwKSwgQygxYjNmYTE4NGIxZDdiY2Mw
KSwKLSAgICAgQyhkZWI4NTYxMzk5NWMwNmVkKSwgQyhjYmUxZDk1NzQ4NWEzY2NkKSwgQyhkZmUy
NDFmOGYzM2M5NmI2KSwKLSAgICAgQyg2NTk3ZWIwNTAxOWMyMTA5KSwgQyhkYTM0NGIyYTYzYTIx
OWNmKSwgQyg3OWI4ZTM4ODc2MTIzNzhhKSwKLSAgICAgQyhhY2Q5MGM4MSl9LAorICAgIHtDKDQz
YzYyNTI0MTFlZTNiZSksIEMoYjRjYTFiODA3Nzc3NzE2OCksIEMoMjc0NmRjM2Y3ZGExNzM3Ziks
IEMoYWNkOTBjODEpfSwKICAgICB7QyhjZTM4YTlhNTRmYWQ2NTk5KSwgQyg2ZDZmNGE5MGI5ZTg3
NTVlKSwgQyhjM2VjYzc5ZmYxMDVkZTNmKSwKLSAgICAgQyhlOGI5ZWU5NmVmYTJkMGUpLCBDKDkw
MTIyOTA1YzRhYjUzNTgpLCBDKDg0ZjgwYzgzMmQ3MTk3OWMpLAotICAgICBDKDIyOTMxMGYzZmZi
YmY0YzYpLCBDKGU4YjllZTk2ZWZhMmQwZSksIEMoOTAxMjI5MDVjNGFiNTM1OCksCi0gICAgIEMo
ODRmODBjODMyZDcxOTc5YyksIEMoMjI5MzEwZjNmZmJiZjRjNiksIEMoY2M5ZWI0MjEwMGNkNjNh
NyksCi0gICAgIEMoN2EyODNmMmYzZGE3YjlmKSwgQygzNTliMDYxZDMxNGU3YTcyKSwgQyhkMGQ5
NTk3MjAwMjg4NjIpLCBDKDdjNzQ2YTRiKX0sCi0gICAge0MoMjcwYTkzMDVmZWY3MGNmKSwgQyg2
MDAxOTM5OTlkODg0ZjNhKSwgQyhmNGQ0OWVhZTA5ZWQ4YTEpLAotICAgICBDKDJlMDkxYjg1NjYw
ZjEyOTgpLCBDKGJmZTM3ZmFlMWNkZDY0YzkpLCBDKDhkZGRmYmFiOTMwZjY0OTQpLAotICAgICBD
KDJjY2Y0YjA4ZjVkNDE3YSksIEMoMmUwOTFiODU2NjBmMTI5OCksIEMoYmZlMzdmYWUxY2RkNjRj
OSksCi0gICAgIEMoOGRkZGZiYWI5MzBmNjQ5NCksIEMoMmNjZjRiMDhmNWQ0MTdhKSwgQygzNjVj
MmVlODU1ODJmZTYpLAotICAgICBDKGRlZTAyN2JjZDM2ZGI2MmEpLCBDKGIxNTA5OTRkM2M3ZTU4
MzgpLCBDKGZkZmQxYTBlNjkyZTQzNmQpLAotICAgICBDKGIxMDQ3ZTk5KX0sCisgICAgIEMoN2M3
NDZhNGIpfSwKKyAgICB7QygyNzBhOTMwNWZlZjcwY2YpLCBDKDYwMDE5Mzk5OWQ4ODRmM2EpLCBD
KGY0ZDQ5ZWFlMDllZDhhMSksIEMoYjEwNDdlOTkpfSwKICAgICB7QyhlNzFiZTdjMjhlODRkMTE5
KSwgQyhlYjZhY2U1OTkzMjczNmU2KSwgQyg3MGM0Mzk3ODA3YmExMmM1KSwKLSAgICAgQyg3YTlk
Nzc3ODFhYzUzNTA5KSwgQyg0NDg5YzNjY2ZkYTNiMzljKSwgQyhmYTcyMmQ0ZjI0M2I0OTY0KSwK
LSAgICAgQygyNWYxNTgwMGJmZmRkMTIyKSwgQyg3YTlkNzc3ODFhYzUzNTA5KSwgQyg0NDg5YzNj
Y2ZkYTNiMzljKSwKLSAgICAgQyhmYTcyMmQ0ZjI0M2I0OTY0KSwgQygyNWYxNTgwMGJmZmRkMTIy
KSwgQyhlZDg1ZTQxNTdmYmQzMjk3KSwKLSAgICAgQyhhYWIxOTY3MjI3ZDU5ZWZkKSwgQygyMTk5
NjMxMjEyZWIzODM5KSwgQygzZTRjMTkzNTlhYWUxY2MyKSwKICAgICAgQyhkMWZkMTA2OCl9LAog
ICAgIHtDKGI1YjU4YzI0YjUzYWFhMTkpLCBDKGQyYTZhYjA3NzNkZDg5N2YpLCBDKGVmNzYyZmUw
MWVjYjViOTcpLAotICAgICBDKDlkZWVmYmNmYTRjYWIxZjEpLCBDKGI1OGY1OTQzY2QyNDkyYmEp
LCBDKGE5NmRjYzRkMWY0NzgyYTcpLAotICAgICBDKDEwMmI2MmE4MjMwOWRkZTUpLCBDKDlkZWVm
YmNmYTRjYWIxZjEpLCBDKGI1OGY1OTQzY2QyNDkyYmEpLAotICAgICBDKGE5NmRjYzRkMWY0Nzgy
YTcpLCBDKDEwMmI2MmE4MjMwOWRkZTUpLCBDKDM1ZmU1MjY4NDc2M2IzMzgpLAotICAgICBDKGFm
ZTI2MTY2NTFlYWFkMWYpLCBDKDQzZTM4NzE1YmRmYTA1ZTcpLCBDKDgzYzliYTgzYjVlYzRhNDAp
LAogICAgICBDKDU2NDg2MDc3KX0sCiAgICAge0MoNDRkZDU5YmQzMDE5OTVjZiksIEMoM2NjYWJk
NzY0OTNhZGExYSksIEMoNTQwZGI0Yzg3ZDU1ZWYyMyksCi0gICAgIEMoY2ZjNmQ3YWRkYTM1Nzk3
KSwgQygxNGM3ZDFmMzIzMzJjZjAzKSwgQygyZDU1M2ZmYmZmM2JlOTlkKSwKLSAgICAgQyhjOTFj
NGVlMGNiNTYzMTgyKSwgQyhjZmM2ZDdhZGRhMzU3OTcpLCBDKDE0YzdkMWYzMjMzMmNmMDMpLAot
ICAgICBDKDJkNTUzZmZiZmYzYmU5OWQpLCBDKGM5MWM0ZWUwY2I1NjMxODIpLCBDKDlhYTVlNTA3
ZjQ5MTM2ZjApLAotICAgICBDKDc2MGM1ZGQxYTgyYzQ4ODgpLCBDKGJlZWE3ZTk3NGExY2ZiNWMp
LCBDKDY0MGIyNDc3NzRmZTRiZjcpLAogICAgICBDKDYwNjliZTgwKX0sCi0gICAge0MoYjRkNDc4
OWViNmYyNjMwYiksIEMoYmY2OTczMjYzY2U4ZWYwZSksIEMoZDFjNzVjNTA4NDRiOWQzKSwKLSAg
ICAgQyhiY2U5MDU5MDBjMWVjNmVhKSwgQyhjMzBmMzA0ZjQwNDU0ODdkKSwgQyhhNWM1NTAxNjZi
M2ExNDJiKSwKLSAgICAgQygyZjQ4MmI0ZTM1MzI3Mjg3KSwgQyhiY2U5MDU5MDBjMWVjNmVhKSwg
QyhjMzBmMzA0ZjQwNDU0ODdkKSwKLSAgICAgQyhhNWM1NTAxNjZiM2ExNDJiKSwgQygyZjQ4MmI0
ZTM1MzI3Mjg3KSwgQygxNWIyMWRkZGRmMzU1NDM4KSwKLSAgICAgQyg0OTY0NzFmYTMwMDZiYWIp
LCBDKDJhOGZkNDU4ZDA2YzFhMzIpLCBDKGRiOTFlOGFlODEyZjBiOGQpLCBDKDIwNzgzNTliKX0s
CisgICAge0MoYjRkNDc4OWViNmYyNjMwYiksIEMoYmY2OTczMjYzY2U4ZWYwZSksIEMoZDFjNzVj
NTA4NDRiOWQzKSwgQygyMDc4MzU5Yil9LAogICAgIHtDKDEyODA3ODMzYzQ2MzczN2MpLCBDKDU4
ZTkyN2VhM2IzNzc2YjQpLCBDKDcyZGQyMGVmMWMyZjhhZDApLAotICAgICBDKDkxMGI2MTBkZTdh
OTY3YmYpLCBDKDgwMWJjODYyMTIwZjZiZjUpLCBDKDk2NTNlZmVlZDU4OTc2ODEpLAotICAgICBD
KGY1MzY3ZmY4M2U5ZWJiYjMpLCBDKDkxMGI2MTBkZTdhOTY3YmYpLCBDKDgwMWJjODYyMTIwZjZi
ZjUpLAotICAgICBDKDk2NTNlZmVlZDU4OTc2ODEpLCBDKGY1MzY3ZmY4M2U5ZWJiYjMpLCBDKGNm
NTZkNDg5YWZkMWIwYmYpLAotICAgICBDKGM3Yzc5MzcxNWNhZTNkZTgpLCBDKDYzMWY5MWQ2NGFi
YWU0N2MpLCBDKDVmMWY0MmZiMTRhNDQ0YTIpLAogICAgICBDKDllYTIxMDA0KX0sCiAgICAge0Mo
ZTg4NDE5OTIyYjg3MTc2ZiksIEMoYmNmMzJmNDFhN2RkYmY2ZiksIEMoZDZlYmVmZDgwODVjMWEw
ZiksCi0gICAgIEMoZDFkNDRmZTk5NDUxZWY3MiksIEMoZWM5NTFiYThlNTFlMzU0NSksIEMoYzBj
YTg2YjM2MDc0NmU5NiksCi0gICAgIEMoYWE2NzljYzA2NmE4MDQwYiksIEMoZDFkNDRmZTk5NDUx
ZWY3MiksIEMoZWM5NTFiYThlNTFlMzU0NSksCi0gICAgIEMoYzBjYTg2YjM2MDc0NmU5NiksIEMo
YWE2NzljYzA2NmE4MDQwYiksIEMoNTEwNjU4NjFlY2U2ZmZjMSksCi0gICAgIEMoNzY3NzczNjhh
Mjk5N2UxMSksIEMoODdmMjc4ZjQ2NzMxMTAwYyksIEMoYmJhYTQxNDBiZGJhNDUyNyksCiAgICAg
IEMoOWM5Y2ZlODgpfSwKICAgICB7QygxMDUxOTFlMGVjOGY3ZjYwKSwgQyg1OTE4ZGJmY2NhOTcx
ZTc5KSwgQyg2YjI4NWM4YTk0NDc2N2I5KSwKLSAgICAgQyhkM2U4NmFjNGY1ZWNjZmE0KSwgQyhl
NTM5OWRmMmIxMDZjYTEpLCBDKDgxNGFhZGZhY2QyMTdmMWQpLAotICAgICBDKDI3NTRlM2RlZjFj
NDA1YTkpLCBDKGQzZTg2YWM0ZjVlY2NmYTQpLCBDKGU1Mzk5ZGYyYjEwNmNhMSksCi0gICAgIEMo
ODE0YWFkZmFjZDIxN2YxZCksIEMoMjc1NGUzZGVmMWM0MDVhOSksIEMoOTkyOTAzMjNiOWYwNmU3
NCksCi0gICAgIEMoYTk3ODJlMDQzZjI3MTQ2MSksIEMoMTNjOGIzYjhjMjc1YTg2MCksIEMoNjAz
OGQ2MjBlNTgxZTllNyksCiAgICAgIEMoYjcwYTZkZGQpfSwKICAgICB7QyhhNWI4OGJmNzM5OWE5
ZjA3KSwgQyhmY2EzZGRmZDk2NDYxY2M0KSwgQyhlYmU3MzhmZGMwMjgyZmM2KSwKLSAgICAgQyg2
OWFmYmM4MDA2MDZkMGZiKSwgQyg2MTA0Yjk3YTlkYjEyZGY3KSwgQyhmY2MwOTE5OGJiOTBiZjlm
KSwKLSAgICAgQyhjNWUwNzdlNDFhNjViYTkxKSwgQyg2OWFmYmM4MDA2MDZkMGZiKSwgQyg2MTA0
Yjk3YTlkYjEyZGY3KSwKLSAgICAgQyhmY2MwOTE5OGJiOTBiZjlmKSwgQyhjNWUwNzdlNDFhNjVi
YTkxKSwgQyhkYjI2MTgzNWVlOGFhMDhlKSwKLSAgICAgQyhkYjBlZTY2MmU1Nzk2ZGM5KSwgQyhm
YzE4ODBlY2VjNDk5ZTVmKSwgQyg2NDg4NjZmYmUxNTAyMDM0KSwKICAgICAgQyhkZWEzNzI5OCl9
LAogICAgIHtDKGQwOGMzZjU3NDdkODRmNTApLCBDKDRlNzA4YjI3ZDFiNmY4YWMpLCBDKDcwZjcw
ZmQ3MzQ4ODg2MDYpLAotICAgICBDKDkwOWFlMDE5ZDc2MWQwMTkpLCBDKDM2OGJmNGFhYjFiODZl
ZjkpLCBDKDMwOGJkNjE2ZDU0NjAyMzkpLAotICAgICBDKDRmZDMzMjY5Zjc2NzgzZWEpLCBDKDkw
OWFlMDE5ZDc2MWQwMTkpLCBDKDM2OGJmNGFhYjFiODZlZjkpLAotICAgICBDKDMwOGJkNjE2ZDU0
NjAyMzkpLCBDKDRmZDMzMjY5Zjc2NzgzZWEpLCBDKDdkNTNiMzdjMTk3MTNlYWIpLAotICAgICBD
KDZiYmE2ZWFiZGE1OGE4OTcpLCBDKDkxYWJiNTBlZmMxMTYwNDcpLCBDKDRlOTAyZjM0N2UwZTBl
MzUpLAogICAgICBDKDhmNDgwODE5KX0sCi0gICAge0MoMmY3MmQxMmE0MDA0NGI0YiksIEMoODg5
Njg5MzUyZmVjNTNkZSksIEMoZjAzZTZhZDg3ZWIyZjM2KSwKLSAgICAgQyhlZjc5ZjI4ZDg3NGI5
ZTJkKSwgQyhiNTEyMDg5ZThlNjNiNzZjKSwgQygyNGRjMDY4MzNiZjE5M2E5KSwKLSAgICAgQygz
YzIzMzA4YmE4ZTk5ZDdlKSwgQyhlZjc5ZjI4ZDg3NGI5ZTJkKSwgQyhiNTEyMDg5ZThlNjNiNzZj
KSwKLSAgICAgQygyNGRjMDY4MzNiZjE5M2E5KSwgQygzYzIzMzA4YmE4ZTk5ZDdlKSwgQyg1Y2Vm
ZjdiODVjYWNlZmI3KSwKLSAgICAgQyhlZjM5MDMzODg5OGNkNzMpLCBDKGIxMjk2N2Q3ZDIyNTRm
NTQpLCBDKGRlODc0Y2JkOGFlZjdiNzUpLCBDKDMwYjNiMTYpfSwKKyAgICB7QygyZjcyZDEyYTQw
MDQ0YjRiKSwgQyg4ODk2ODkzNTJmZWM1M2RlKSwgQyhmMDNlNmFkODdlYjJmMzYpLCBDKDMwYjNi
MTYpfSwKICAgICB7QyhhYTFmNjFmZGM1YzJlMTFlKSwgQyhjMmM1NmNkMTEyNzdhYjI3KSwgQyhh
MWU3MzA2OWZkZjFmOTRmKSwKLSAgICAgQyg4MTg0YmFiMzZiYjc5ZGYwKSwgQyhjODE5MjljZTg2
NTViOTQwKSwgQygzMDFiMTFiZjhhNGQ4Y2U4KSwKLSAgICAgQyg3MzEyNmZkNDVhYjc1ZGU5KSwg
Qyg4MTg0YmFiMzZiYjc5ZGYwKSwgQyhjODE5MjljZTg2NTViOTQwKSwKLSAgICAgQygzMDFiMTFi
ZjhhNGQ4Y2U4KSwgQyg3MzEyNmZkNDVhYjc1ZGU5KSwgQyg0YmQ2Zjc2ZTQ4ODgyMjlhKSwKLSAg
ICAgQyg5YWFlMzU1YjU0YTc1NmQ1KSwgQyhjYTNkZTk3MjZmNmU5OWQ1KSwgQyg4M2Y4MGNhYzVi
YzM2ODUyKSwKICAgICAgQyhmMzFiYzRlOCl9LAogICAgIHtDKDk0ODliMzZmZTIyNDYyNDQpLCBD
KDMzNTUzNjcwMzNiZTc0YjgpLCBDKDVmNTdjMjI3N2NiY2U1MTYpLAotICAgICBDKGJjNjE0MTRm
OTgwMmVjYWYpLCBDKDhlZGQxZTdhNTA1NjI5MjQpLCBDKDQ4ZjRhYjc0YTM1ZTk1ZjIpLAotICAg
ICBDKGNjMWFmY2ZkOTlhMTgwZTcpLCBDKGJjNjE0MTRmOTgwMmVjYWYpLCBDKDhlZGQxZTdhNTA1
NjI5MjQpLAotICAgICBDKDQ4ZjRhYjc0YTM1ZTk1ZjIpLCBDKGNjMWFmY2ZkOTlhMTgwZTcpLCBD
KDUxN2RkNWUzYWNmNjYxMTApLAotICAgICBDKDdkZDNhZDllODk3OGIzMGQpLCBDKDFmNmQ1ZGZj
NzBkZTgxMmIpLCBDKDk0N2RhYWJhNjQ0MWFhZjMpLAogICAgICBDKDQxOWY5NTNiKX0sCiAgICAg
e0MoMzU4ZDdjMDQ3NmEwNDRjZCksIEMoZTBiN2I0N2JjYmQ4ODU0ZiksIEMoZmZiNDJlYzY5Njcw
NTUxOSksCi0gICAgIEMoZDQ1ZTQ0YzI2M2U5NWMzOCksIEMoZGY2MWRiNTM5MjNhZTNiMSksIEMo
ZjJiYzk0OGNjNGZjMDI3YyksCi0gICAgIEMoOGE4MDAwYzYwNjY3NzJhMyksIEMoZDQ1ZTQ0YzI2
M2U5NWMzOCksIEMoZGY2MWRiNTM5MjNhZTNiMSksCi0gICAgIEMoZjJiYzk0OGNjNGZjMDI3Yyks
IEMoOGE4MDAwYzYwNjY3NzJhMyksIEMoOWZkOTNjOTQyZDMxZmExNyksCi0gICAgIEMoZDc2NTFl
Y2ViZTA5Y2JkMyksIEMoNjg2ODJjZWZiNmE2ZjE2NSksIEMoNTQxZWI5OWEyZGNlZTQwZSksCiAg
ICAgIEMoMjBlOWU3NmQpfSwKICAgICB7QyhiMGM0OGRmMTQyNzUyNjVhKSwgQyg5ZGE0NDQ4OTc1
OTA1ZWZhKSwgQyhkNzE2NjE4ZTQxNGNlYjZkKSwKLSAgICAgQygzMGU4ODhhZjcwZGYxZTU2KSwg
Qyg0YmVlNTRiZDQ3Mjc0ZjY5KSwgQygxNzhiNDA1OWUxYTBhZmU1KSwKLSAgICAgQyg2ZTJjOTZi
N2Y1OGU1MTc4KSwgQygzMGU4ODhhZjcwZGYxZTU2KSwgQyg0YmVlNTRiZDQ3Mjc0ZjY5KSwKLSAg
ICAgQygxNzhiNDA1OWUxYTBhZmU1KSwgQyg2ZTJjOTZiN2Y1OGU1MTc4KSwgQyhiYjQyOWQzYjky
NzVlOWJjKSwKLSAgICAgQyhjMTk4MDEzZjA5Y2FmZGM2KSwgQyhlYzBhNmVlNGZiNWRlMzQ4KSwg
Qyg3NDRlMWU4ZWQyZWIxZWIwKSwKICAgICAgQyg2NDZmMGZmOCl9LAogICAgIHtDKGRhYTcwYmIz
MDA5NTY1ODgpLCBDKDQxMGVhNjg4M2EyNDBjNmQpLCBDKGY1YzgyMzlmYjU2NzNlYjMpLAotICAg
ICBDKDhiMWQ3YmI0OTAzYzEwNWYpLCBDKGNmYjFjMzIyYjczODkxZDQpLCBDKDVmM2I3OTJiMjJm
MDcyOTcpLAotICAgICBDKGZkNjQwNjFmOGJlODY4MTEpLCBDKDhiMWQ3YmI0OTAzYzEwNWYpLCBD
KGNmYjFjMzIyYjczODkxZDQpLAotICAgICBDKDVmM2I3OTJiMjJmMDcyOTcpLCBDKGZkNjQwNjFm
OGJlODY4MTEpLCBDKDFkMmRiNzEyOTIxY2ZjMmIpLAotICAgICBDKGNkMWIyYjJmMmNlZTE4YWUp
LCBDKDZiNmY4NzkwZGM3ZmViMDkpLCBDKDQ2YzE3OWVmYTNmMGY1MTgpLAogICAgICBDKGVlYjdl
Y2E4KX0sCi0gICAge0MoNGVjOTdhMjBiNmM0YzdjMiksIEMoNTkxM2IxY2Q0NTRmMjlmZCksIEMo
YTk2MjlmOWRhZjA2ZDY4NSksCi0gICAgIEMoODUyYzk0OTkxNTZhOGYzKSwgQygzYTE4MGE2YWJm
Yjc5MDE2KSwgQyg5ZmMzYzQ3NjQwMzdjM2M5KSwKLSAgICAgQygyODkwYzQyZmMwZDk3MmNmKSwg
Qyg4NTJjOTQ5OTE1NmE4ZjMpLCBDKDNhMTgwYTZhYmZiNzkwMTYpLAotICAgICBDKDlmYzNjNDc2
NDAzN2MzYzkpLCBDKDI4OTBjNDJmYzBkOTcyY2YpLCBDKDFmOTIyMzFkNGU1Mzc2NTEpLAotICAg
ICBDKGZhYjhiYjA3YWE1NGI3YjkpLCBDKGUwNWQyZDc3MWM0ODVlZDQpLCBDKGQ1MGIzNGJmODA4
Y2E3MzEpLCBDKDgxMTJiYjkpfSwKKyAgICB7Qyg0ZWM5N2EyMGI2YzRjN2MyKSwgQyg1OTEzYjFj
ZDQ1NGYyOWZkKSwgQyhhOTYyOWY5ZGFmMDZkNjg1KSwgQyg4MTEyYmI5KX0sCiAgICAge0MoNWMz
MzIzNjI4NDM1YTJlOCksIEMoMWJlYTQ1Y2U5ZTcyYTZlMyksIEMoOTA0ZjBhNzAyN2RkYjUyZSks
Ci0gICAgIEMoOTM5ZjMxZGUxNGRjZGM3YiksIEMoYTY4ZmRmNDM3OWRmMDY4KSwgQyhmMTY5ZTFm
MGI4MzUyNzlkKSwKLSAgICAgQyg3NDk4ZTQzMmY5NjE5YjI3KSwgQyg5MzlmMzFkZTE0ZGNkYzdi
KSwgQyhhNjhmZGY0Mzc5ZGYwNjgpLAotICAgICBDKGYxNjllMWYwYjgzNTI3OWQpLCBDKDc0OThl
NDMyZjk2MTliMjcpLCBDKDFhYTJhMWYxMTA4OGU3ODUpLAotICAgICBDKGQ2YWQ3MmY0NTcyOWRl
NzgpLCBDKDlhNjM4MTQxNTdjODAyNjcpLCBDKDU1NTM4ZTM1YzY0OGU0MzUpLAogICAgICBDKDg1
YTZkNDc3KX0sCiAgICAge0MoYzFlZjI2YmVhMjYwYWJkYiksIEMoNmVlNDIzZjIxMzdmOTI4MCks
IEMoZGYyMTE4Yjk0NmVkMGI0MyksCi0gICAgIEMoMTFiODdmYjFiOTAwY2MzOSksIEMoZTMzZTU5
YjkwZGQ4MTViMSksIEMoYWE2Y2I1YzRiYWZhZTc0MSksCi0gICAgIEMoNzM5Njk5OTUxY2E4Yzcx
MyksIEMoMTFiODdmYjFiOTAwY2MzOSksIEMoZTMzZTU5YjkwZGQ4MTViMSksCi0gICAgIEMoYWE2
Y2I1YzRiYWZhZTc0MSksIEMoNzM5Njk5OTUxY2E4YzcxMyksIEMoMmI0Mzg5YTk2NzMxMDA3Nyks
Ci0gICAgIEMoMWQ1MzgyNTY4YTMxYzJjOSksIEMoNTVkMWU3ODdmYmU2ODk5MSksIEMoMjc3YzI1
NGJjMzEzMDFlNyksCiAgICAgIEMoNTZmNzZjODQpfSwKICAgICB7Qyg2YmU3MzgxYjExNWQ2NTNh
KSwgQyhlZDA0NjE5MDc1OGVhNTExKSwgQyhkZTZhNDVmZmMzZWQxMTU5KSwKLSAgICAgQyhhNjQ3
NjBlNDA0MTQ0N2QwKSwgQyhlM2VhYzQ5ZjNlMGM1MTA5KSwgQyhkZDg2YzRkNGNiNjI1OGUyKSwK
LSAgICAgQyhlZmE5ODU3YWZkMDQ2YzdmKSwgQyhhNjQ3NjBlNDA0MTQ0N2QwKSwgQyhlM2VhYzQ5
ZjNlMGM1MTA5KSwKLSAgICAgQyhkZDg2YzRkNGNiNjI1OGUyKSwgQyhlZmE5ODU3YWZkMDQ2Yzdm
KSwgQyhmYWI3OTNkYWU4MjQ2ZjE2KSwKLSAgICAgQyhjOWUzYjEyMWIzMWQwOTRjKSwgQyhhMmEw
ZjU1ODU4NDY1MjI2KSwgQyhkYmE2ZjBmZjM5NDM2MzQ0KSwKICAgICAgQyg5YWY0NWQ1NSl9LAog
ICAgIHtDKGFlM2VlY2UxNzExYjIxMDUpLCBDKDE0ZmQzZjQwMjdmODFhNGEpLCBDKGFiYjdlNDUx
NzdkMTUxZGIpLAotICAgICBDKDUwMWYzZTliMTg4NjFlNDQpLCBDKDQ2NTIwMTE3MDA3NGU3ZDgp
LCBDKDk2ZDVjOTE5NzBmMmNiMTIpLAotICAgICBDKDQwZmQyOGM0MzUwNmM5NWQpLCBDKDUwMWYz
ZTliMTg4NjFlNDQpLCBDKDQ2NTIwMTE3MDA3NGU3ZDgpLAotICAgICBDKDk2ZDVjOTE5NzBmMmNi
MTIpLCBDKDQwZmQyOGM0MzUwNmM5NWQpLCBDKGU4NmM0YjA3ODAyYWFmZjMpLAotICAgICBDKGYz
MTdkMTQxMTIzNzJhNzApLCBDKDY0MWIxM2U1ODc3MTE2NTApLCBDKDQ5MTU0MjFhYjEwOTBlYWEp
LAogICAgICBDKGQxYzMzNzYwKX0sCiAgICAge0MoMzc2YzI4NTg4YjhmYjM4OSksIEMoNmIwNDVl
ODRkODQ5MWVkMiksIEMoNGU4NTdlZmZiN2Q0ZTdkYyksCi0gICAgIEMoMTU0ZGQ3OWZkMmY5ODRi
NCksIEMoZjExMTcxNzc1NjIyYzFjMyksIEMoMWZiZTMwOTgyZTc4ZTZmMCksCi0gICAgIEMoYTQ2
MGExNWRjZjMyN2U0NCksIEMoMTU0ZGQ3OWZkMmY5ODRiNCksIEMoZjExMTcxNzc1NjIyYzFjMyks
Ci0gICAgIEMoMWZiZTMwOTgyZTc4ZTZmMCksIEMoYTQ2MGExNWRjZjMyN2U0NCksIEMoZjM1OWUw
OTAwY2MzZDU4MiksCi0gICAgIEMoN2UxMTA3MDQ0Nzk3NmQwMCksIEMoMzI0ZTZkYWYyNzZlYTRi
NSksIEMoN2FhNmUyZGYwY2M5NGZhMiksCiAgICAgIEMoYzU2YmJmNjkpfSwKICAgICB7Qyg1OGQ5
NDM1MDNiYjY3NDhmKSwgQyg0MTljNmM4ZTg4YWM3MGY2KSwgQyg1ODY3NjBjYmYzZDNkMzY4KSwK
LSAgICAgQyhiN2UxNjQ5NzlkNWNjZmMxKSwgQygxMmNiNDIzMGQyNmJmMjg2KSwgQyhmMWJmOTEw
ZDQ0YmQ4NGNiKSwKLSAgICAgQyhiMzJjMjRjNmE0MDI3MiksIEMoYjdlMTY0OTc5ZDVjY2ZjMSks
IEMoMTJjYjQyMzBkMjZiZjI4NiksCi0gICAgIEMoZjFiZjkxMGQ0NGJkODRjYiksIEMoYjMyYzI0
YzZhNDAyNzIpLCBDKDExZWQxMmUzNGM0OGMwMzkpLAotICAgICBDKGIwYzI1MzhlNTFkMGE2YWMp
LCBDKDQyNjliYjc3M2UxZDU1M2EpLCBDKGUzNWE5ZGJhYmQzNDg2NyksIEMoYWJlY2ZiOWIpfSwK
KyAgICAgQyhhYmVjZmI5Yil9LAogICAgIHtDKGRmZmY1OTg5ZjVjZmQ5YTEpLCBDKGJjZWUyZTdl
YTNhOTZmODMpLCBDKDY4MWM3ODc0YWRiMjkwMTcpLAotICAgICBDKDNmZjZjOGFjN2MzNmI2M2Ep
LCBDKDQ4YmM4ODMxZDg0OWUzMjYpLCBDKDMwYjA3OGU3NmIwMjE0ZTIpLAotICAgICBDKDQyOTU0
ZTZhZDcyMWI5MjApLCBDKDNmZjZjOGFjN2MzNmI2M2EpLCBDKDQ4YmM4ODMxZDg0OWUzMjYpLAot
ICAgICBDKDMwYjA3OGU3NmIwMjE0ZTIpLCBDKDQyOTU0ZTZhZDcyMWI5MjApLCBDKGY5YWViMzNk
MTY0YjQ0NzIpLAotICAgICBDKDdiMzUzYjExMDgzMWRiZGMpLCBDKDE2ZjY0YzgyZjQ0YWUxN2Ip
LCBDKGI3MTI0NGNjMTY0YjNiMmIpLAogICAgICBDKDhkZTEzMjU1KX0sCiAgICAge0MoN2ZiMTll
YjFhNDk2ZThmNSksIEMoZDQ5ZTVkZmRiNWMwODMzZiksIEMoYzBkNWQ3YjJmN2M0OGRjNyksCi0g
ICAgIEMoMWE1NzMxM2EzMmYyMmRkZSksIEMoMzBhZjQ2ZTQ5ODUwYmY4YiksIEMoYWEwZmU4ZDEy
ZjgwOGY4MyksCi0gICAgIEMoNDQzZTMxZDcwODczYmI2YiksIEMoMWE1NzMxM2EzMmYyMmRkZSks
IEMoMzBhZjQ2ZTQ5ODUwYmY4YiksCi0gICAgIEMoYWEwZmU4ZDEyZjgwOGY4MyksIEMoNDQzZTMx
ZDcwODczYmI2YiksIEMoYmJlYjY3YzQ5YzlmZGMxMyksCi0gICAgIEMoMThmMWUyYTg4ZjU5Zjlk
NSksIEMoZmIxYjA1MDM4ZTVkZWYxMSksIEMoZDA0NTBiNWNlNGMzOWM1MiksCiAgICAgIEMoYTk4
ZWUyOTkpfSwKICAgICB7Qyg1ZGJhNWIwZGFkY2NkYmFhKSwgQyg0YmE4ZGE4ZGVkODdmY2RjKSwg
QyhmNjkzZmRkMjViYWRmMmYwKSwKLSAgICAgQyhlOTAyOWU2MzY0Mjg2NTg3KSwgQyhhZTY5ZjQ5
ZWNiNDY3MjZjKSwgQygxOGUwMDI2NzkyMTdjNDA1KSwKLSAgICAgQyhiZDZkNjZlODUzMzJhZTlm
KSwgQyhlOTAyOWU2MzY0Mjg2NTg3KSwgQyhhZTY5ZjQ5ZWNiNDY3MjZjKSwKLSAgICAgQygxOGUw
MDI2NzkyMTdjNDA1KSwgQyhiZDZkNjZlODUzMzJhZTlmKSwgQyg2YmYzMzBiMWMzNTNkZDJhKSwK
LSAgICAgQyg3NGU5ZjJlNzFlM2E0MTUyKSwgQygzZjg1NTYwYjUwZjZjNDEzKSwgQyhkMzNhNTJh
NDdlYWVkMmI0KSwKICAgICAgQygzMDE1ZjU1Nil9LAogICAgIHtDKDY4OGJlZjRiMTM1YTY4Mjkp
LCBDKDhkMzFkODJhYmNkNTRlOGUpLCBDKGY5NWY4YTMwZDU1MDM2ZDcpLAotICAgICBDKDNkOGM5
MGUyN2FhMmUxNDcpLCBDKDJlYzkzN2NlMGFhMjM2YjQpLCBDKDg5YjU2Mzk5NmQzYTBiNzgpLAot
ICAgICBDKDM5YjAyNDEzYjIzYzNmMDgpLCBDKDNkOGM5MGUyN2FhMmUxNDcpLCBDKDJlYzkzN2Nl
MGFhMjM2YjQpLAotICAgICBDKDg5YjU2Mzk5NmQzYTBiNzgpLCBDKDM5YjAyNDEzYjIzYzNmMDgp
LCBDKDhkNDc1YTJlNjRmYWYyZDIpLAotICAgICBDKDQ4NTY3ZjdkY2E0NmVjYWYpLCBDKDI1NGNk
YTA4ZDVmODdhNmQpLCBDKGVjNmFlOWY3MjljNDcwMzkpLAogICAgICBDKDVhNDMwZTI5KX0sCiAg
ICAge0MoZDgzMjNiZTA1NDMzYTQxMiksIEMoOGQ0OGZhMmIyYjc2MTQxZCksIEMoM2QzNDZmMjM5
NzgzMzZhNSksCi0gICAgIEMoNGQ1MGM3NTM3NTYyMDMzZiksIEMoNTdkYzc2MjViNjFkZmU4OSks
IEMoOTcyM2E5ZjRjMDhhZDkzYSksCi0gICAgIEMoNTMwOTU5NmY0OGFiNDU2YiksIEMoNGQ1MGM3
NTM3NTYyMDMzZiksIEMoNTdkYzc2MjViNjFkZmU4OSksCi0gICAgIEMoOTcyM2E5ZjRjMDhhZDkz
YSksIEMoNTMwOTU5NmY0OGFiNDU2YiksIEMoN2U0NTMwODgwMTlkMjIwZiksCi0gICAgIEMoODc3
NjA2N2JhNmFiOTcxNCksIEMoNjdlMWQwNmJkMTk1ZGUzOSksIEMoNzRhMWEzMmY4OTk0YjkxOCks
CiAgICAgIEMoMjc5N2FkZDApfSwKICAgICB7QygzYjU0MDQyNzhhNTVhN2ZjKSwgQygyM2NhMGIz
MjdjMmQwYTgxKSwgQyhhNmQ2NTMyOTU3MWM4OTJjKSwKLSAgICAgQyg0NTUwNDgwMWUwZTYwNjZi
KSwgQyg4NmU2YzZkNjE1MmEzZDA0KSwgQyg0ZjNkYjFjNTNlY2EyOTUyKSwKLSAgICAgQyhkMjRk
NjliM2U5ZWYxMGYzKSwgQyg0NTUwNDgwMWUwZTYwNjZiKSwgQyg4NmU2YzZkNjE1MmEzZDA0KSwK
LSAgICAgQyg0ZjNkYjFjNTNlY2EyOTUyKSwgQyhkMjRkNjliM2U5ZWYxMGYzKSwgQyg5M2EwZGUy
MjE5ZTY2YTcwKSwKLSAgICAgQyg4OTMyYzcxMTVjY2IxZjhhKSwgQyg1ZWY1MDNmZGYyODQxYThj
KSwgQygzODA2NGRkOWVmYTgwYTQxKSwKICAgICAgQygyN2Q1NTAxNil9LAogICAgIHtDKDJhOTZh
M2Y5NmM1ZTliYmMpLCBDKDhjYWY4NTY2ZTIxMmRkYTgpLCBDKDkwNGRlNTU5Y2ExNmU0NWUpLAot
ICAgICBDKGYxM2JjMmQ5YzJmZTIyMmUpLCBDKGJlNGNjZWM5YTZjZGNjZmQpLCBDKDM3YjJjYmRk
OTczYTNhYzkpLAotICAgICBDKDdiMzIyM2NkOWM5NDk3YmUpLCBDKGYxM2JjMmQ5YzJmZTIyMmUp
LCBDKGJlNGNjZWM5YTZjZGNjZmQpLAotICAgICBDKDM3YjJjYmRkOTczYTNhYzkpLCBDKDdiMzIy
M2NkOWM5NDk3YmUpLCBDKGQ1OTA0NDQwZjM3NmY4ODkpLAotICAgICBDKDYyYjEzMTg3Njk5YzQ3
M2MpLCBDKDQ3NTFiODkyNTFmMjY3MjYpLCBDKDk1MDBkODRmYTNhNjFiYTgpLAogICAgICBDKDg0
OTQ1YTgyKX0sCiAgICAge0MoMjJiZWJmZGNjMjZkMThmZiksIEMoNGI0ZDhkY2IxMDgwN2JhMSks
IEMoNDAyNjVlZWUzMGM2Yjg5NiksCi0gICAgIEMoMzc1MmI0MjMwNzNiMTE5YSksIEMoMzc3ZGM1
ZWI3YzY2MmJkYiksIEMoMmI5ZjA3ZjkzYTZjMjViOSksCi0gICAgIEMoOTZmMjRlZGUyYmRjMDcx
OCksIEMoMzc1MmI0MjMwNzNiMTE5YSksIEMoMzc3ZGM1ZWI3YzY2MmJkYiksCi0gICAgIEMoMmI5
ZjA3ZjkzYTZjMjViOSksIEMoOTZmMjRlZGUyYmRjMDcxOCksIEMoZjc2OTliMTJjMzE0MTdiZCks
Ci0gICAgIEMoMTdiMzY2ZjQwMWM1OGIyKSwgQyhiZjYwMTg4ZDVmNDM3YjM3KSwgQyg0ODQ0MzZl
NTZkZjE3ZjA0KSwgQygzZWY3ZTIyNCl9LAorICAgICBDKDNlZjdlMjI0KX0sCiAgICAge0MoNjI3
YTIyNDllYzZiYmNjMiksIEMoYzA1NzhiNDYyYTQ2NzM1YSksIEMoNDk3NGI4ZWUxYzJkNGYxZiks
Ci0gICAgIEMoZWJkYmI5MThlYjZkODM3ZiksIEMoOGZiNWYyMThkZDg0MTQ3YyksIEMoYzc3ZGQx
Zjg4MWRmMmM1NCksCi0gICAgIEMoNjJlYWMyOThlYzIyNmRjMyksIEMoZWJkYmI5MThlYjZkODM3
ZiksIEMoOGZiNWYyMThkZDg0MTQ3YyksCi0gICAgIEMoYzc3ZGQxZjg4MWRmMmM1NCksIEMoNjJl
YWMyOThlYzIyNmRjMyksIEMoNDNlZGVkODNjNGI2MGJkMCksCi0gICAgIEMoOWEwYTQwM2I1NDg3
NTAzYiksIEMoMjVmMzA1ZDkxNDdmMGJkYSksIEMoM2FkNDE3ZjUxMWJjMWU2NCksCiAgICAgIEMo
MzVlZDhkYzgpfSwKLSAgICB7QygzYWJhZjE2NjdiYTJmM2UwKSwgQyhlZTc4NDc2YjVlZWFkYzEp
LCBDKDdlNTZhYzBhNmNhNGYzZjQpLAotICAgICBDKGYxYjliNDEzZGY5ZDc5ZWQpLCBDKGE3NjIx
YjZmZDAyZGI1MDMpLCBDKGQ5MmY3YmE5OTI4YTRmZmUpLAotICAgICBDKDUzZjU2YmFiZGNhZTk2
YTYpLCBDKGYxYjliNDEzZGY5ZDc5ZWQpLCBDKGE3NjIxYjZmZDAyZGI1MDMpLAotICAgICBDKGQ5
MmY3YmE5OTI4YTRmZmUpLCBDKDUzZjU2YmFiZGNhZTk2YTYpLCBDKDUzMDJiODlmYzQ4NzEzYWIp
LAotICAgICBDKGQwM2UzYjA0ZGJlN2EyZjIpLCBDKGZhNzRlZjhhZjZkMzc2YTcpLCBDKDEwM2M4
Y2RlYTEwNTBlZjIpLAotICAgICBDKDZhNzVlNDNkKX0sCisgICAge0MoM2FiYWYxNjY3YmEyZjNl
MCksIEMoZWU3ODQ3NmI1ZWVhZGMxKSwgQyg3ZTU2YWMwYTZjYTRmM2Y0KSwgQyg2YTc1ZTQzZCl9
LAogICAgIHtDKDM5MzFhYzY4YzVmMWIyYzkpLCBDKGVmZTM4OTIzNjNhYjBmYjApLCBDKDQwYjcw
NzI2ODMzN2NkMzYpLAotICAgICBDKGE1M2E2YjY0YjFhYzg1YzkpLCBDKGQ1MGU3Zjg2ZWUxYjgz
MmIpLCBDKDdiYWIwOGZkZDI2YmEwYTQpLAotICAgICBDKDc1ODc3NDNjMThmZTI0NzUpLCBDKGE1
M2E2YjY0YjFhYzg1YzkpLCBDKGQ1MGU3Zjg2ZWUxYjgzMmIpLAotICAgICBDKDdiYWIwOGZkZDI2
YmEwYTQpLCBDKDc1ODc3NDNjMThmZTI0NzUpLCBDKGUzYjVkNWQ0OTBjZjU3NjEpLAotICAgICBD
KGRmYzA1M2Y3ZDA2NWVkZDUpLCBDKDQyZmZkOGQ1ZmI3MDEyOWYpLCBDKDU5OWNhMzg2NzdjY2Nk
YzMpLAogICAgICBDKDIzNWQ5ODA1KX0sCi0gICAge0MoYjk4ZmIwNjA2ZjQxNjc1NCksIEMoNDZh
NmU1NTQ3YmE5OWMxZSksIEMoYzkwOWQ4MjExMmE4ZWQyKSwKLSAgICAgQyhkYmZhYWU5NjQyYjMy
MDVhKSwgQyhmNjc2YTEzMzk0MDJiY2I5KSwgQyhmNGYxMmE1YjFhYzExZjI5KSwKLSAgICAgQyg3
ZGI4YmFkODEyNDlkZWU0KSwgQyhkYmZhYWU5NjQyYjMyMDVhKSwgQyhmNjc2YTEzMzk0MDJiY2I5
KSwKLSAgICAgQyhmNGYxMmE1YjFhYzExZjI5KSwgQyg3ZGI4YmFkODEyNDlkZWU0KSwgQyhiMjZl
NDZmMmRhOTU5MjJlKSwKLSAgICAgQygyYWFlZGQ1ZTEyZTNjNjExKSwgQyhhMGUyZDkwODI5NjYw
NzQpLCBDKGM2NGRhOGExNjdhZGQ2M2QpLCBDKGY3ZDY5NTcyKX0sCisgICAge0MoYjk4ZmIwNjA2
ZjQxNjc1NCksIEMoNDZhNmU1NTQ3YmE5OWMxZSksIEMoYzkwOWQ4MjExMmE4ZWQyKSwgQyhmN2Q2
OTU3Mil9LAogICAgIHtDKDdmNzcyOWEzM2U1OGZjYzQpLCBDKDJlNGJjMWU3YTAyM2VhZDQpLCBD
KGU3MDcwMDhlYTdjYTYyMjIpLAotICAgICBDKDQ3NDE4YTcxODAwMzM0YTApLCBDKGQxMDM5NWQ4
ZmM2NGQ4YTQpLCBDKDgyNTdhMzAwNjJjYjY2ZiksCi0gICAgIEMoNjc4NmY5YjJkYzFmZjE4YSks
IEMoNDc0MThhNzE4MDAzMzRhMCksIEMoZDEwMzk1ZDhmYzY0ZDhhNCksCi0gICAgIEMoODI1N2Ez
MDA2MmNiNjZmKSwgQyg2Nzg2ZjliMmRjMWZmMThhKSwgQyg1NjMzZjQzN2JiMmYxODBmKSwKLSAg
ICAgQyhlNWEzYTQwNTczN2QyMmQ2KSwgQyhjYTBmZjFlZjZmN2YwYjc0KSwgQyhkMGFlNjAwNjg0
YjE2ZGY4KSwKICAgICAgQyhiYWNkMDE5OSl9LAogICAgIHtDKDQyYTBhYTljZTgyODQ4YjMpLCBD
KDU3MjMyNzMwZTZiZWUxNzUpLCBDKGY4OWJiM2YzNzA3ODIwMzEpLAotICAgICBDKGNhYTMzY2Y5
YjRmNjYxOWMpLCBDKGIyYzg2NDhhZDQ5YzIwOWYpLCBDKDllODllY2UwNzEyZGIxYzApLAotICAg
ICBDKDEwMWQ4Mjc0YTcxMWE1NGIpLCBDKGNhYTMzY2Y5YjRmNjYxOWMpLCBDKGIyYzg2NDhhZDQ5
YzIwOWYpLAotICAgICBDKDllODllY2UwNzEyZGIxYzApLCBDKDEwMWQ4Mjc0YTcxMWE1NGIpLCBD
KDUzOGU3OWYxZTcwMTM1Y2QpLAotICAgICBDKGUxZjVhNzZmOTgzYzg0NGUpLCBDKDY1M2MwODJm
ZDY2MDg4ZmMpLCBDKDFiOWM5YjQ2NGI2NTQ5NTgpLAogICAgICBDKGU0MjhmNTBlKX0sCiAgICAg
e0MoNmIyYzZkMzg0MDhhNDg4OSksIEMoZGUzZWY2ZjY4ZmIyNTg4NSksIEMoMjA3NTRmNDU2YzIw
MzM2MSksCi0gICAgIEMoOTQxZjUwMjNjMGM5NDNmOSksIEMoZGZkZWI5NTY0ZmQ2NmYyNCksIEMo
MjE0MGNlYzcwNmI5ZDQwNiksCi0gICAgIEMoN2IyMjQyOWIxMzFlOWM3MiksIEMoOTQxZjUwMjNj
MGM5NDNmOSksIEMoZGZkZWI5NTY0ZmQ2NmYyNCksCi0gICAgIEMoMjE0MGNlYzcwNmI5ZDQwNiks
IEMoN2IyMjQyOWIxMzFlOWM3MiksIEMoOTQyMTVjMjJlYjk0MGY0NSksCi0gICAgIEMoZDI4Yjll
ZDQ3NGY3MjQ5YSksIEMoNmYyNWU4OGYyZmJmOWY1NiksIEMoYjY3MThmOWU2MDViMzhhYyksCiAg
ICAgIEMoODFlYWFhZDMpfSwKICAgICB7Qyg5MzAzODBhMzc0MWU4NjJhKSwgQygzNDhkMjg2Mzhk
YzcxNjU4KSwgQyg4OWRlZGNmZDE2NTRlYTBkKSwKLSAgICAgQyg3ZTdmNjE2ODQwODAxMDYpLCBD
KDgzN2FjZTk3OTQ1ODI5NzYpLCBDKDVhYzhjYTc2YTM1N2ViMWIpLAotICAgICBDKDMyYjU4MzA4
NjI1NjYxZmIpLCBDKDdlN2Y2MTY4NDA4MDEwNiksIEMoODM3YWNlOTc5NDU4Mjk3NiksCi0gICAg
IEMoNWFjOGNhNzZhMzU3ZWIxYiksIEMoMzJiNTgzMDg2MjU2NjFmYiksIEMoYzA5NzA1YzQ1NzIw
MjVkOSksCi0gICAgIEMoZjkxODdmNmFmMDI5MTMwMyksIEMoMWMwZWRkOGVlNGIwMjUzOCksIEMo
ZTZjYjEwNWRhYTA1NzhhKSwgQyhhZGRiZDNlMyl9LAorICAgICBDKGFkZGJkM2UzKX0sCiAgICAg
e0MoOTQ4MDhiNWQyYWEyNWY5YSksIEMoY2VjNzI5NjgxMjgxOTVlMCksIEMoZDlmNGRhMmJkYzFl
MTMwZiksCi0gICAgIEMoMjcyZDhkZDc0ZjMwMDZjYyksIEMoZWM2YzJhZDFlYzAzZjU1NCksIEMo
NGFkMjc2YjI0OWE1ZDVkZCksCi0gICAgIEMoNTQ5YTIyYTE3YzBjZGUxMiksIEMoMjcyZDhkZDc0
ZjMwMDZjYyksIEMoZWM2YzJhZDFlYzAzZjU1NCksCi0gICAgIEMoNGFkMjc2YjI0OWE1ZDVkZCks
IEMoNTQ5YTIyYTE3YzBjZGUxMiksIEMoNjAyMTE5Y2I4MjRkN2NkZSksCi0gICAgIEMoZjRkM2Nl
ZjI0MGVmMzVmYSksIEMoZTg4OTg5NWUwMTkxMWJjNyksIEMoNzg1YTdlNWFjMjBlODUyYiksCiAg
ICAgIEMoZTY2ZGJjYTApfSwKICAgICB7QyhiMzFhYmIwOGFlNmUzZDM4KSwgQyg5ZWI5YTk1Y2Jk
OWU4MjIzKSwgQyg4MDE5ZTc5YjdlZTk0ZWE5KSwKLSAgICAgQyg3YjIyNzFhN2EzMjQ4ZTIyKSwg
QygzYjRmNzAwZTVhMGJhNTIzKSwgQyg4ZWJjNTIwYzIyNzIwNmZlKSwKLSAgICAgQyhkYTNmODYx
NDkwZjVkMjkxKSwgQyg3YjIyNzFhN2EzMjQ4ZTIyKSwgQygzYjRmNzAwZTVhMGJhNTIzKSwKLSAg
ICAgQyg4ZWJjNTIwYzIyNzIwNmZlKSwgQyhkYTNmODYxNDkwZjVkMjkxKSwgQyhkMDhhNjg5Zjlm
M2FhNjBlKSwKLSAgICAgQyg1NDdjMWI5N2EwNjg2NjFmKSwgQyg0YjE1YTY3ZmEyOTE3MmYwKSwg
QyhlYWY0MGMwODUxOTFkODBmKSwKICAgICAgQyhhZmUxMWZkNSl9LAogICAgIHtDKGRjY2I1NTM0
YTg5M2VhMWEpLCBDKGNlNzFjMzk4NzA4YzYxMzEpLCBDKGZlMjM5NjMxNTQ1N2MxNjQpLAotICAg
ICBDKDNmMTIyOWY0ZDBmZDk2ZmIpLCBDKDMzMTMwYWE1ZmE5ZDQzZjIpLCBDKGU0MjY5M2Q1YjM0
ZTYzYWIpLAotICAgICBDKDJmNGVmMmJlNjdmNjIxMDQpLCBDKDNmMTIyOWY0ZDBmZDk2ZmIpLCBD
KDMzMTMwYWE1ZmE5ZDQzZjIpLAotICAgICBDKGU0MjY5M2Q1YjM0ZTYzYWIpLCBDKDJmNGVmMmJl
NjdmNjIxMDQpLCBDKDM3MmU1MTUzNTE2ZTM3YjkpLAotICAgICBDKGFmOWVjMTQyYWIxMmNjODYp
LCBDKDc3NzkyMGMwOTM0NWUzNTkpLCBDKGU3YzRhMzgzYmVmOGFkYzYpLAogICAgICBDKGE3MWE0
MDZmKX0sCiAgICAge0MoNjM2OTE2MzU2NTgxNGRlNiksIEMoOGZlYjg2ZmIzOGQwOGMyZiksIEMo
NDk3NjkzMzQ4NWNjOWEyMCksCi0gICAgIEMoN2QzZTgyZDViYTI5YTkwZCksIEMoZDU5ODNjYzkz
YTlkMTI2YSksIEMoMzdlOWRmZDk1MGU3YjY5MiksCi0gICAgIEMoODA2NzNiZTZhNzg4OGI4Nyks
IEMoN2QzZTgyZDViYTI5YTkwZCksIEMoZDU5ODNjYzkzYTlkMTI2YSksCi0gICAgIEMoMzdlOWRm
ZDk1MGU3YjY5MiksIEMoODA2NzNiZTZhNzg4OGI4NyksIEMoNTdmNzMyZGM2MDA4MDhiYyksCi0g
ICAgIEMoNTk0NzcxOTk4MDJjYzc4YiksIEMoZjgyNDgxMGViOGYyYzJkZSksIEMoYzRhMzQzN2Yw
NWIzYjYxYyksCiAgICAgIEMoOWQ5MGVhZjUpfSwKICAgICB7QyhlZGVlNGZmMjUzZDlmOWIzKSwg
Qyg5NmVmNzZmYjI3OWVmMGFkKSwgQyhhNGQyMDRkMTc5ZGIyNDYwKSwKLSAgICAgQygxZjNkY2Rm
YTUxMzUxMmQ2KSwgQyg0ZGM3ZWMwNzI4MzExN2U0KSwgQyg0NDM4YmFlODhhZTI4YmY5KSwKLSAg
ICAgQyhhYTdlYWU3MmM5MjQ0YTBkKSwgQygxZjNkY2RmYTUxMzUxMmQ2KSwgQyg0ZGM3ZWMwNzI4
MzExN2U0KSwKLSAgICAgQyg0NDM4YmFlODhhZTI4YmY5KSwgQyhhYTdlYWU3MmM5MjQ0YTBkKSwg
QyhiOWFlZGM4ZDNlY2M3MmRmKSwKLSAgICAgQyhiNzVhOGViMDkwYTc3ZDYyKSwgQyg2YjE1Njc3
ZjljZDkxNTA3KSwgQyg1MWQ4MjgyY2IzYTlkZGJmKSwKICAgICAgQyg2NjY1ZGIxMCl9LAogICAg
IHtDKDk0MTk5M2RmNmU2MzMyMTQpLCBDKDkyOWJjMWJlY2E1YjcyYzYpLCBDKDE0MWZjNTJiOGQ1
NTU3MmQpLAotICAgICBDKGIzYjc4MmFkMzA4ZjIxZWQpLCBDKDRmMjY3NjQ4NTA0MWRlZTApLCBD
KGJmZTI3OWFlZDVjYjRiYzgpLAotICAgICBDKDJhNjI1MDhhNDY3YTIyZmYpLCBDKGIzYjc4MmFk
MzA4ZjIxZWQpLCBDKDRmMjY3NjQ4NTA0MWRlZTApLAotICAgICBDKGJmZTI3OWFlZDVjYjRiYzgp
LCBDKDJhNjI1MDhhNDY3YTIyZmYpLCBDKGU3NGQyOWVhYjc0MjM4NWQpLAotICAgICBDKDU2YjA1
Y2Q5MGVjZmMyOTMpLCBDKGM2MDM3MjhlYTczZjg4NDQpLCBDKDg2MzhmY2QyMWJjNjkyYzQpLAog
ICAgICBDKDljOTc3Y2JmKX0sCiAgICAge0MoODU5ODM4MjkzZjY0Y2Q0YyksIEMoNDg0NDAzYjM5
ZDQ0YWQ3OSksIEMoYmY2NzRlNjRkNjRiOTMzOSksCi0gICAgIEMoNDRkNjhhZmRhOTU2OGYwOCks
IEMoNDc4NTY4ZWQ1MWNhMWQ2NSksIEMoNjc5YzIwNGFkM2Q5ZTc2NiksCi0gICAgIEMoYjI4ZTc4
ODg3ODQ4OGRjMSksIEMoNDRkNjhhZmRhOTU2OGYwOCksIEMoNDc4NTY4ZWQ1MWNhMWQ2NSksCi0g
ICAgIEMoNjc5YzIwNGFkM2Q5ZTc2NiksIEMoYjI4ZTc4ODg3ODQ4OGRjMSksIEMoZDAwMWE4NGQz
YTg0ZmFlNiksCi0gICAgIEMoZDM3Njk1OGZlNGNiOTEzZSksIEMoMTc0MzUyNzdlMzZjODZmMCks
IEMoMjM2NTdiMjYzYzM0N2FhNiksCiAgICAgIEMoZWU4M2RkZDQpfSwKLSAgICB7QyhjMTliNTY0
OGUwZDlmNTU1KSwgQygzMjhlNDdiMmI3NTYyOTkzKSwgQyhlNzU2YjkyYmE0YmQ2YTUxKSwKLSAg
ICAgQyhjMzMxNGUzNjI3NjRkZGI4KSwgQyg2NDgxYzA4NGVlOWVjNmI1KSwgQyhlZGUyM2ZiOWEy
NTE3NzEpLAotICAgICBDKGJkNjE3ZjI2NDMzMjQ1OTApLCBDKGMzMzE0ZTM2Mjc2NGRkYjgpLCBD
KDY0ODFjMDg0ZWU5ZWM2YjUpLAotICAgICBDKGVkZTIzZmI5YTI1MTc3MSksIEMoYmQ2MTdmMjY0
MzMyNDU5MCksIEMoZDJkMzBjOWI5NWUwMzBmNSksCi0gICAgIEMoOGE1MTczMTJmZmM1Nzk1ZSks
IEMoOGIxZjMyNTAzM2JkNTM1ZSksIEMoM2VlNmU4NjdlMDNmMjg5MiksIEMoMjY1MTljYyl9LAor
ICAgIHtDKGMxOWI1NjQ4ZTBkOWY1NTUpLCBDKDMyOGU0N2IyYjc1NjI5OTMpLCBDKGU3NTZiOTJi
YTRiZDZhNTEpLCBDKDI2NTE5Y2MpfSwKICAgICB7QyhmOTYzYjYzYjkwMDZjMjQ4KSwgQyg5ZTli
ZjcyN2ZmYWEwMGJjKSwgQyhjNzNiYWNjNzViOTE3ZTNhKSwKLSAgICAgQygyYzZhYTcwNjEyOWNj
NTRjKSwgQygxN2E3MDZmNTlhNDlmMDg2KSwgQyhjN2MxZWVjNDU1MjE3MTQ1KSwKLSAgICAgQyg2
YWRmZGM2ZTA3NjAyZDQyKSwgQygyYzZhYTcwNjEyOWNjNTRjKSwgQygxN2E3MDZmNTlhNDlmMDg2
KSwKLSAgICAgQyhjN2MxZWVjNDU1MjE3MTQ1KSwgQyg2YWRmZGM2ZTA3NjAyZDQyKSwgQyhmYjc1
ZmNhMzBkODQ4ZGQyKSwKLSAgICAgQyg1MjI4YzllZDE0NjUzZWQ0KSwgQyg5NTM5NTg5MTAxNTNi
MWEyKSwgQyhhNDMwMTAzYTI0ZjQyYTVkKSwKICAgICAgQyhhNDg1YTUzZil9LAogICAgIHtDKDZh
OGFhMDg1MmE4YzFmM2IpLCBDKGM4ZjFlNWUyMDZhMjEwMTYpLCBDKDJhYTU1NGFlZDFlYmI1MjQp
LAotICAgICBDKGZjM2UzYzMyMmNkNWQ4OWIpLCBDKGI3ZTM5MTFkYzJiZDRlYmIpLCBDKGZjZDZk
YTVlNWZhZTgzM2EpLAotICAgICBDKDUxZWQzYzQxZjg3ZjkxMTgpLCBDKGZjM2UzYzMyMmNkNWQ4
OWIpLCBDKGI3ZTM5MTFkYzJiZDRlYmIpLAotICAgICBDKGZjZDZkYTVlNWZhZTgzM2EpLCBDKDUx
ZWQzYzQxZjg3ZjkxMTgpLCBDKGYzMTc1MGNiYzE5YzQyMGEpLAotICAgICBDKDE4NmRhYjFhYmFk
YTFkODYpLCBDKGNhN2Y4OGNiODk0YjNjZDcpLCBDKDI4NTllZWIxYzM3Mzc5MGMpLAogICAgICBD
KGY2MmJjNDEyKX0sCiAgICAge0MoNzQwNDI4YjRkNDVlNWZiOCksIEMoNGM5NWE0Y2U5MjJjYjBh
NSksIEMoZTk5YzNiYTc4ZmVhZTc5NiksCi0gICAgIEMoOTE0ZjFlYTJmZGNlYmY1YyksIEMoOTU2
NjQ1M2MwN2NkMDYwMSksIEMoOTg0MWJmNjZkMDQ2MmNkKSwKLSAgICAgQyg3OTE0MGMxYzE4NTM2
YWViKSwgQyg5MTRmMWVhMmZkY2ViZjVjKSwgQyg5NTY2NDUzYzA3Y2QwNjAxKSwKLSAgICAgQyg5
ODQxYmY2NmQwNDYyY2QpLCBDKDc5MTQwYzFjMTg1MzZhZWIpLCBDKGE5NjNiOTMwYjA1ODIwYzIp
LAotICAgICBDKDZhN2Q5ZmEwYzhjNDUxNTMpLCBDKDY0MjE0YzQwZDA3Y2YzOWIpLCBDKDcwNTdk
YWYxZDgwNmMwMTQpLAogICAgICBDKDg5NzVhNDM2KX0sCi0gICAge0MoNjU4Yjg4M2IzYTg3MmI4
NiksIEMoMmYwZTMwM2YwZjY0ODI3YSksIEMoOTc1MzM3ZTIzZGM0NWUxKSwKLSAgICAgQyg5OTQ2
OGE5MTc5ODYxNjJiKSwgQyg3YjMxNDM0YWFjNmUwYWYwKSwgQyhmNjkxNWMxNTYyYzdkODJmKSwK
LSAgICAgQyhlNDA3MWQ4MmE2ZGQ3MWRiKSwgQyg5OTQ2OGE5MTc5ODYxNjJiKSwgQyg3YjMxNDM0
YWFjNmUwYWYwKSwKLSAgICAgQyhmNjkxNWMxNTYyYzdkODJmKSwgQyhlNDA3MWQ4MmE2ZGQ3MWRi
KSwgQyg1ZjUzMzFmMDc3YjVkOTk2KSwKLSAgICAgQyg3YjMxNGJhMjFiNzQ3YTRmKSwgQyg1YTcz
Y2I5NTIxZGExN2Y1KSwgQygxMmVkNDM1ZmFlMjg2ZDg2KSwKLSAgICAgQyg5NGZmN2Y0MSl9LAot
ICAgIHtDKDZkZjBhOTc3ZGE1ZDI3ZDQpLCBDKDg5MWRkMGU3Y2IxOTUwOCksIEMoZmQ2NTQzNGEw
YjcxZTY4MCksCi0gICAgIEMoODc5OWU0NzQwZTU3M2M1MCksIEMoOWU3MzliNTJkMGYzNDFlOCks
IEMoY2RmZDM0YmE3ZDdiMDNlYiksCi0gICAgIEMoNTA2MTgxMmNlNmM4ODQ5OSksIEMoODc5OWU0
NzQwZTU3M2M1MCksIEMoOWU3MzliNTJkMGYzNDFlOCksCi0gICAgIEMoY2RmZDM0YmE3ZDdiMDNl
YiksIEMoNTA2MTgxMmNlNmM4ODQ5OSksIEMoNjEyYjhkOGYyNDExZGM1YyksCi0gICAgIEMoODc4
YmQ4ODNkMjljNzc4NyksIEMoNDdhODQ2NzI3MTgyYmIpLCBDKGVjNDk0OTUwOGM4YjNiOWEpLCBD
KDc2MGFhMDMxKX0sCi0gICAge0MoYTkwMDI3NTQ2NGFlMDdlZiksIEMoMTFmMmNmZGEzNGJlYjRh
MyksIEMoOWFiZjkxZTVhMWMzOGU0KSwKLSAgICAgQyg4MDYzZDgwYWIyNmYzZDZkKSwgQyg0MTc3
YjRiOWI0ZjAzOTNmKSwgQyg2ZGU0MmJhODY3MmI5NjQwKSwKLSAgICAgQyhkMGJjY2RiNzJjNTFj
MTgpLCBDKDgwNjNkODBhYjI2ZjNkNmQpLCBDKDQxNzdiNGI5YjRmMDM5M2YpLAotICAgICBDKDZk
ZTQyYmE4NjcyYjk2NDApLCBDKGQwYmNjZGI3MmM1MWMxOCksIEMoYWYzZjYxMWI3ZjIyY2YxMiks
Ci0gICAgIEMoMzg2M2M0MTQ5MjY0NTc1NSksIEMoOTI4YzdhNjE2YThmMTRmOSksIEMoYTgyYzc4
ZWIyZWFkYzU4YiksCi0gICAgIEMoM2JkYTc2ZGYpfSwKKyAgICB7Qyg2NThiODgzYjNhODcyYjg2
KSwgQygyZjBlMzAzZjBmNjQ4MjdhKSwgQyg5NzUzMzdlMjNkYzQ1ZTEpLCBDKDk0ZmY3ZjQxKX0s
CisgICAge0MoNmRmMGE5NzdkYTVkMjdkNCksIEMoODkxZGQwZTdjYjE5NTA4KSwgQyhmZDY1NDM0
YTBiNzFlNjgwKSwgQyg3NjBhYTAzMSl9LAorICAgIHtDKGE5MDAyNzU0NjRhZTA3ZWYpLCBDKDEx
ZjJjZmRhMzRiZWI0YTMpLCBDKDlhYmY5MWU1YTFjMzhlNCksIEMoM2JkYTc2ZGYpfSwKICAgICB7
Qyg4MTBiYzhhYTBjNDBiY2IwKSwgQyg0NDhhMDE5NTY4ZDAxNDQxKSwgQyhmNjBlYzUyZjYwZDNh
ZWFlKSwKLSAgICAgQyg1MmM0NDgzN2FhNmRmYzc3KSwgQygxNWQ4ZDhmY2NkZDZkYzViKSwgQygz
NDViNzkzY2NmYTkzMDU1KSwKLSAgICAgQyg5MzIxNjBmZTgwMmNhOTc1KSwgQyg1MmM0NDgzN2Fh
NmRmYzc3KSwgQygxNWQ4ZDhmY2NkZDZkYzViKSwKLSAgICAgQygzNDViNzkzY2NmYTkzMDU1KSwg
Qyg5MzIxNjBmZTgwMmNhOTc1KSwgQyhhNjI0YjBkZDkzZmMxOGNkKSwKLSAgICAgQyhkOTU1YjI1
NGMyMDM3ZjFlKSwgQyhlNTQwNTMzZDM3MGE2NjRjKSwgQygyYmE0ZWMxMjUxNGU5ZDcpLCBDKDQ5
OGUyZTY1KX0sCisgICAgIEMoNDk4ZTJlNjUpfSwKICAgICB7QygyMjAzNjMyN2RlYjU5ZWQ3KSwg
QyhhZGMwNWNlYjk3MDI2YTAyKSwgQyg0OGJmZjA2NTQyNjI2NzJiKSwKLSAgICAgQyhjNzkxYjMx
M2FiYTNmMjU4KSwgQyg0NDNjNzc1N2E0NzI3YmVlKSwgQyhlMzBlNGIyMzcyMTcxYmRmKSwKLSAg
ICAgQyhmM2RiOTg2YzQxNTZmM2NiKSwgQyhjNzkxYjMxM2FiYTNmMjU4KSwgQyg0NDNjNzc1N2E0
NzI3YmVlKSwKLSAgICAgQyhlMzBlNGIyMzcyMTcxYmRmKSwgQyhmM2RiOTg2YzQxNTZmM2NiKSwg
QyhhOTM5YWVmYWI5N2M2ZTE1KSwKLSAgICAgQyhkYmViOGFjZjFkNWIwZTZjKSwgQygxZTBlYWI2
NjdhNzk1YmJhKSwgQyg4MGRkNTM5OTAyZGY0ZDUwKSwKICAgICAgQyhkMzhkZWI0OCl9LAogICAg
IHtDKDdkMTRkZmE5NzcyYjAwYzgpLCBDKDU5NTczNWVmYzdlZWFlZDcpLCBDKDI5ODcyODU0Zjk0
YzM1MDcpLAotICAgICBDKGJjMjQxNTc5ZDgzNDg0MDEpLCBDKDE2ZGM4MzI4MDRkNzI4ZjApLCBD
KGU5Y2M3MWFlNjRlM2YwOWUpLAotICAgICBDKGJlZjYzNGJjOTc4YmFjMzEpLCBDKGJjMjQxNTc5
ZDgzNDg0MDEpLCBDKDE2ZGM4MzI4MDRkNzI4ZjApLAotICAgICBDKGU5Y2M3MWFlNjRlM2YwOWUp
LCBDKGJlZjYzNGJjOTc4YmFjMzEpLCBDKDdmNjRiMWZhMmE5MTI5ZSksCi0gICAgIEMoNzFkODMx
YmQ1MzBhYzdmMyksIEMoYzdhZDBhOGE2ZDViZTZmMSksIEMoODJhN2QzYTgxNWM3YWFhYiksCiAg
ICAgIEMoODJiM2ZiNmIpfSwKICAgICB7QygyZDc3N2NkZGI5MTI2NzVkKSwgQygyNzhkN2IxMDcy
MmExM2Y5KSwgQyhmNWMwMmJmYjdjYzA3OGFmKSwKLSAgICAgQyg0MjgzMDAxMjM5ODg4ODM2KSwg
QyhmNDRjYTM5YTZmNzlkYjg5KSwgQyhlZDE4NjEyMmQ3MWJjYzlmKSwKLSAgICAgQyg4NjIwMDE3
YWI1ZjNiYTNiKSwgQyg0MjgzMDAxMjM5ODg4ODM2KSwgQyhmNDRjYTM5YTZmNzlkYjg5KSwKLSAg
ICAgQyhlZDE4NjEyMmQ3MWJjYzlmKSwgQyg4NjIwMDE3YWI1ZjNiYTNiKSwgQyhlNzg3NDcyMTg3
ZjE3NmMpLAotICAgICBDKDI2N2U2NGM0NzI4Y2YxODEpLCBDKGYxYmE0YjMwMDdjMTVlMzApLCBD
KDhlM2E3NWQ1YjAyZWNmYzApLAogICAgICBDKGU1MDBlMjVmKX0sCiAgICAge0MoZjJlYzk4ODI0
ZThhYTYxMyksIEMoNWViN2UzZmI1M2ZlM2JlZCksIEMoMTJjMjI4NjA0NjZlMWRkNCksCi0gICAg
IEMoMzc0ZGQ0Mjg4ZTBiNzJlNSksIEMoZmY4OTE2ZGI3MDZjMGRmNCksIEMoY2IxYTllODVkZTVl
NGI4ZCksCi0gICAgIEMoZDRkMTJhZmI2N2EyNzY1OSksIEMoMzc0ZGQ0Mjg4ZTBiNzJlNSksIEMo
ZmY4OTE2ZGI3MDZjMGRmNCksCi0gICAgIEMoY2IxYTllODVkZTVlNGI4ZCksIEMoZDRkMTJhZmI2
N2EyNzY1OSksIEMoZmViNjkwOTVkMWJhMTc1YSksCi0gICAgIEMoZTIwMDNhYWIyM2E0N2ZhZCks
IEMoODE2M2EzZWNhYjg5NGI0OSksIEMoNDZkMzU2Njc0Y2UwNDFmNiksCiAgICAgIEMoYmQyYmIw
N2MpfSwKICAgICB7Qyg1ZTc2Mzk4OGUyMWY0ODdmKSwgQygyNDE4OWRlODA2NWQ4ZGM1KSwgQyhk
MTUxOWQyNDAzYjYyYWEwKSwKLSAgICAgQyg5MTM2NDU2NzQwMTE5ODE1KSwgQyg0ZDhmZjc3MzNi
MjdlYjgzKSwgQyhlYTMwNDBiYzBjNzE3ZWY4KSwKLSAgICAgQyg3NjE3YWI0MDBkZmFkYmMpLCBD
KDkxMzY0NTY3NDAxMTk4MTUpLCBDKDRkOGZmNzczM2IyN2ViODMpLAotICAgICBDKGVhMzA0MGJj
MGM3MTdlZjgpLCBDKDc2MTdhYjQwMGRmYWRiYyksIEMoZmIzMzY3NzBjMTBiMTdhMSksCi0gICAg
IEMoNjEyM2I2OGI1YjMxZjE1MSksIEMoMWUxNDdkNWYyOTVlY2NmMiksIEMoOWVjYmIxMzMzNTU2
Zjk3NyksCiAgICAgIEMoM2EyYjQzMWQpfSwKICAgICB7Qyg0ODk0OWRjMzI3YmI5NmFkKSwgQyhl
MWZkMjE2MzZjNWM1MGI0KSwgQygzZjZlYjdmMTNhODcxMmI0KSwKLSAgICAgQygxNGNmN2YwMmRh
YjBlZWU4KSwgQyg2ZDAxNzUwNjA1ZTg5NDQ1KSwgQyg0ZjFjZjQwMDZlNjEzYjc4KSwKLSAgICAg
Qyg1N2M0MGM0ZGIzMmJlYzNiKSwgQygxNGNmN2YwMmRhYjBlZWU4KSwgQyg2ZDAxNzUwNjA1ZTg5
NDQ1KSwKLSAgICAgQyg0ZjFjZjQwMDZlNjEzYjc4KSwgQyg1N2M0MGM0ZGIzMmJlYzNiKSwgQygx
ZmRlNWEzNDdmNGEzMjZlKSwKLSAgICAgQyhjYjVhNTQzMDhhZGIwZTNmKSwgQygxNDk5NGIyYmE0
NDdhMjNjKSwgQyg3MDY3ZDBhYmI0MjU3YjY4KSwKICAgICAgQyg3MzIyYTgzZCl9LAogICAgIHtD
KGI3YzQyMDlmYjI0YTg1YzUpLCBDKGIzNWZlYjMxOWM3OWNlMTApLCBDKGYwZDNkZTE5MTgzM2I5
MjIpLAotICAgICBDKDU3MGQ2Mjc1OGRkZjYzOTcpLCBDKDVlMDIwNGZiNjhhN2I4MDApLCBDKDQz
ODNhOTIzNmY4YjVhMmIpLAotICAgICBDKDdiYzFhNjQ2NDFkODAzYTQpLCBDKDU3MGQ2Mjc1OGRk
ZjYzOTcpLCBDKDVlMDIwNGZiNjhhN2I4MDApLAotICAgICBDKDQzODNhOTIzNmY4YjVhMmIpLCBD
KDdiYzFhNjQ2NDFkODAzYTQpLCBDKDU0MzRkNjEyODUwOTlmN2EpLAotICAgICBDKGQ0OTQ0OWFh
Y2RkNWRkNjcpLCBDKDk3ODU1YmEwZTlhN2Q3NWQpLCBDKGRhNjczMjgwNjJmM2E2MmYpLAogICAg
ICBDKGE2NDVjYTFjKX0sCiAgICAge0MoOWM5ZTViZTA5NDNkNGIwNSksIEMoYjczZGM2OWU0NTIw
MWNiYiksIEMoYWFiMTcxODBiZmU1MDgzZCksCi0gICAgIEMoYzczOGE3N2E5YTU1ZjBlMiksIEMo
NzA1MjIxYWRkZWRkODFkZiksIEMoZmQ5YmQ4ZDM5N2FiY2ZhMyksCi0gICAgIEMoOGNjZjAwMDRh
YTg2Yjc5NSksIEMoYzczOGE3N2E5YTU1ZjBlMiksIEMoNzA1MjIxYWRkZWRkODFkZiksCi0gICAg
IEMoZmQ5YmQ4ZDM5N2FiY2ZhMyksIEMoOGNjZjAwMDRhYTg2Yjc5NSksIEMoMmJiNWRiMjI4MDA2
ODIwNiksCi0gICAgIEMoOGMyMmQyOWYzMDdhMDFkKSwgQygyNzRhMjJkZTAyZjQ3M2M4KSwgQyhi
ODc5MTg3MGY0MjY4MTgyKSwgQyg4OTA5YTQ1YSl9LAorICAgICBDKDg5MDlhNDVhKX0sCiAgICAg
e0MoMzg5OGJjYTRkZmQ2NjM4ZCksIEMoZjkxMWZmMzVlZmVmMDE2NyksIEMoMjRiZGY2OWU1MDkx
ZmM4OCksCi0gICAgIEMoOWI4MjU2N2FiNjU2MDc5NiksIEMoODkxYjY5NDYyYjQxYzIyNCksIEMo
OGVjY2M3ZTRmM2FmM2I1MSksCi0gICAgIEMoMzgxZTU0YzNjOGYxYzdkMCksIEMoOWI4MjU2N2Fi
NjU2MDc5NiksIEMoODkxYjY5NDYyYjQxYzIyNCksCi0gICAgIEMoOGVjY2M3ZTRmM2FmM2I1MSks
IEMoMzgxZTU0YzNjOGYxYzdkMCksIEMoYzgwZmJjNDg5YTU1OGE1NSksCi0gICAgIEMoMWJhODhl
MDYyYTY2M2FmNyksIEMoYWY3YjFlZjFjMDExNjMwMyksIEMoYmQyMGUxYTVhNmIxYTBjZCksCiAg
ICAgIEMoYmQzMDA3NGMpfSwKLSAgICB7Qyg1YjVkMjU1NzQwMGU2OGU3KSwgQyg5OGQ2MTAwMzM1
NzRjZWUpLCBDKGRmZDA4NzcyY2UzODVkZWIpLAotICAgICBDKDNjMTNlODk0MzY1ZGM2YzIpLCBD
KDI2ZmM3YmJjZGEzZjBlZiksIEMoZGJiNzExMDZjZGJmZWEzNiksCi0gICAgIEMoNzg1MjM5YTc0
MmM2ZDI2ZCksIEMoM2MxM2U4OTQzNjVkYzZjMiksIEMoMjZmYzdiYmNkYTNmMGVmKSwKLSAgICAg
QyhkYmI3MTEwNmNkYmZlYTM2KSwgQyg3ODUyMzlhNzQyYzZkMjZkKSwgQyhmODEwYzQxNWFlMDVi
MmY0KSwKLSAgICAgQyhiYjliOWU3Mzk4NTI2MDg4KSwgQyg3MDEyOGYxYmY4MzBhMzJiKSwgQyhi
Y2M3M2Y4MmI2NDEwODk5KSwKLSAgICAgQyhjMTdjZjAwMSl9LAorICAgIHtDKDViNWQyNTU3NDAw
ZTY4ZTcpLCBDKDk4ZDYxMDAzMzU3NGNlZSksIEMoZGZkMDg3NzJjZTM4NWRlYiksIEMoYzE3Y2Yw
MDEpfSwKICAgICB7QyhhOTI3ZWQ4YjJiZjA5YmI2KSwgQyg2MDZlNTJmMTBhZTk0ZWNhKSwgQyg3
MWMyMjAzZmViMzVhOWVlKSwKLSAgICAgQyg2ZTY1ZWMxNGE4ZmI1NjUpLCBDKDM0YmZmNmYyZWU1
YTdmNzkpLCBDKDJlMzI5YTViZTJjMDExYiksCi0gICAgIEMoNzMxNjFjOTMzMzFiMTRmOSksIEMo
NmU2NWVjMTRhOGZiNTY1KSwgQygzNGJmZjZmMmVlNWE3Zjc5KSwKLSAgICAgQygyZTMyOWE1YmUy
YzAxMWIpLCBDKDczMTYxYzkzMzMxYjE0ZjkpLCBDKDE1ZDEzZjI0MDhhZWNmODgpLAotICAgICBD
KDlmNWI2MWI4YTRiNTViMzEpLCBDKDhmZTI1YTQzYjI5NmRiYTYpLCBDKGJkYWQwM2I3MzAwZjI4
NGUpLAogICAgICBDKDI2ZmZkMjVhKX0sCiAgICAge0MoOGQyNTc0NjQxNGFlZGYyOCksIEMoMzRi
MTYyOWQyOGIzM2QzYSksIEMoNGQ1Mzk0YWVhNWY4MmQ3YiksCi0gICAgIEMoMzc5Zjc2NDU4YTNj
ODk1NyksIEMoNzlkZDA4MGY5ODQzYWY3NyksIEMoYzQ2ZjBhNzg0N2Y2MGMxZCksCi0gICAgIEMo
YWYxNTc5YzU3OTc3MDNjYyksIEMoMzc5Zjc2NDU4YTNjODk1NyksIEMoNzlkZDA4MGY5ODQzYWY3
NyksCi0gICAgIEMoYzQ2ZjBhNzg0N2Y2MGMxZCksIEMoYWYxNTc5YzU3OTc3MDNjYyksIEMoOGI3
ZDMxZjMzODc1NWMxNCksCi0gICAgIEMoMmVmZjk3Njc5NTEyYWFhOCksIEMoZGYwN2Q2OGUwNzUx
NzllZCksIEMoYzhmYTZjN2E3MjllN2YxZiksCiAgICAgIEMoZjFkOGNlM2MpfSwKICAgICB7Qyhi
NWJiZGI3MzQ1ODcxMmYyKSwgQygxZmY4ODdiM2MyYTM1MTM3KSwgQyg3ZjcyMzFmNzAyZDBhY2U5
KSwKLSAgICAgQygxZTZmMDkxMGMzZDI1YmQ4KSwgQyhhZDllMjUwODYyMTAyNDY3KSwgQygxYzg0
MmEwN2FiYWIzMGNkKSwKLSAgICAgQyhjZDgxMjQxNzZiYWMwMWFjKSwgQygxZTZmMDkxMGMzZDI1
YmQ4KSwgQyhhZDllMjUwODYyMTAyNDY3KSwKLSAgICAgQygxYzg0MmEwN2FiYWIzMGNkKSwgQyhj
ZDgxMjQxNzZiYWMwMWFjKSwgQyhlYTZlYmU3YTc5YjY3ZWRjKSwKLSAgICAgQyg3M2Y1OThhYzlk
YjI2NzEzKSwgQyg0ZjRlNzJkNzQ2MGI4ZmMpLCBDKDM2NWRjNGI5ZmRmMTNmMjEpLCBDKDNlZThm
YjE3KX0sCisgICAgIEMoM2VlOGZiMTcpfSwKICAgICB7QygzZDMyYTI2ZTNhYjlkMjU0KSwgQyhm
YzQwNzA1NzRkYzMwZDNhKSwgQyhmMDI2Mjk1NzljMmIyN2M5KSwKLSAgICAgQyhiMWNmMDliMDE4
NGE0ODM0KSwgQyg1YzAzZGI0OGViNmNjMTU5KSwgQyhmMThjN2ZjZjM0ZDFkZjQ3KSwKLSAgICAg
QyhkZmIwNDM0MTllY2YxZmE5KSwgQyhiMWNmMDliMDE4NGE0ODM0KSwgQyg1YzAzZGI0OGViNmNj
MTU5KSwKLSAgICAgQyhmMThjN2ZjZjM0ZDFkZjQ3KSwgQyhkZmIwNDM0MTllY2YxZmE5KSwgQyhk
Y2Q3OGQxM2Y5Y2E2NThmKSwKLSAgICAgQyg0MzU1ZDQwOGZmZThlNDlmKSwgQyg4MWVlZmVlOTA4
YjU5M2I0KSwgQyg1OTBjMjEzYzIwZTk4MWEzKSwKICAgICAgQyhhNzdhY2MyYSl9LAotICAgIHtD
KDkzNzFkM2MzNWZhNWU5YTUpLCBDKDQyOTY3Y2Y0ZDAxZjMwKSwgQyg2NTJkMWVlYWU3MDQxNDVj
KSwKLSAgICAgQyhjZWFmMWEwZDE1MjM0ZjE1KSwgQygxNDUwYTU0ZTQ1YmE5YjkpLCBDKDY1ZTlj
MWZkODg1YWE5MzIpLAotICAgICBDKDM1NGQ0YmMwMzRiYThjYmUpLCBDKGNlYWYxYTBkMTUyMzRm
MTUpLCBDKDE0NTBhNTRlNDViYTliOSksCi0gICAgIEMoNjVlOWMxZmQ4ODVhYTkzMiksIEMoMzU0
ZDRiYzAzNGJhOGNiZSksIEMoOGZkNGZmNDg0YzA4ZmI0YiksCi0gICAgIEMoYmY0Njc0OTg2NmY2
OWJhMCksIEMoY2YxYzIxZWRlODJjOTQ3NyksIEMoNDIxNzU0OGM0M2RhMTA5KSwgQyhmNDU1NmRl
ZSl9LAotICAgIHtDKGNiYWEzY2I4ZjY0ZjU0ZTApLCBDKDc2YzNiNDhlZTVjMDg0MTcpLCBDKDlm
N2QyNGU4N2U2MWNlOSksCi0gICAgIEMoODViOGU1M2YyMmUxOTUwNyksIEMoYmI1NzEzNzczOWNh
NDg2YiksIEMoYzc3ZjEzMWNjYTM4Zjc2MSksCi0gICAgIEMoYzU2YWMzY2YyNzViZTEyMSksIEMo
ODViOGU1M2YyMmUxOTUwNyksIEMoYmI1NzEzNzczOWNhNDg2YiksCi0gICAgIEMoYzc3ZjEzMWNj
YTM4Zjc2MSksIEMoYzU2YWMzY2YyNzViZTEyMSksIEMoOWVjMWE2YzkxMDlkMjY4NSksCi0gICAg
IEMoM2RhZDA5MjJlNzZhZmRiMCksIEMoZmQ1OGNiZjk1Mjk1ODEwMyksIEMoN2IwNGM5MDhlNzg2
MzlhMSksCi0gICAgIEMoZGUyODdhNjQpfSwKKyAgICB7Qyg5MzcxZDNjMzVmYTVlOWE1KSwgQyg0
Mjk2N2NmNGQwMWYzMCksIEMoNjUyZDFlZWFlNzA0MTQ1YyksIEMoZjQ1NTZkZWUpfSwKKyAgICB7
QyhjYmFhM2NiOGY2NGY1NGUwKSwgQyg3NmMzYjQ4ZWU1YzA4NDE3KSwgQyg5ZjdkMjRlODdlNjFj
ZTkpLCBDKGRlMjg3YTY0KX0sCiAgICAge0MoYjJlMjNlODExNmMyYmE5ZiksIEMoN2U0ZDljMDA2
MDEwMTE1MSksIEMoMzMxMGRhNWU1MDI4ZjM2NyksCi0gICAgIEMoYWRjNTJkZGRiNzZmNmU1ZSks
IEMoNGFhZDRlOTI1YTk2MmI2OCksIEMoMjA0Yjc5YjdmNzE2OGU2NCksCi0gICAgIEMoZGYyOWVk
NjY3MWMzNjk1MiksIEMoYWRjNTJkZGRiNzZmNmU1ZSksIEMoNGFhZDRlOTI1YTk2MmI2OCksCi0g
ICAgIEMoMjA0Yjc5YjdmNzE2OGU2NCksIEMoZGYyOWVkNjY3MWMzNjk1MiksIEMoZTAyOTI3Y2Fj
Mzk2ZDIxMCksCi0gICAgIEMoNWQ1MDBlNzE3NDJiNjM4YSksIEMoNWM5OTk4YWY3ZjI3YjEyNCks
IEMoM2ZiYTlhMjU3M2RjMmY3KSwgQyg4NzhlNTViOSl9LAotICAgIHtDKDhhYTc3ZjUyZDc4Njhl
YjkpLCBDKDRkNTViZDU4NzU4NGU2ZTIpLCBDKGQyZGIzNzA0MWY0OTVmNSksCi0gICAgIEMoY2Uw
MzBkMTViNWZlMmY0KSwgQyg4NmI0YTdhMDc4MGMyNDMxKSwgQyhlZTA3MGE5YWU1YjUxZGI3KSwK
LSAgICAgQyhlZGMyOTNkOTU5NWJlNWQ4KSwgQyhjZTAzMGQxNWI1ZmUyZjQpLCBDKDg2YjRhN2Ew
NzgwYzI0MzEpLAotICAgICBDKGVlMDcwYTlhZTViNTFkYjcpLCBDKGVkYzI5M2Q5NTk1YmU1ZDgp
LCBDKDNkZmM1ZWMxMDgyNjBhMmIpLAotICAgICBDKDhhZmUyOGM3MTIzYmY0ZTIpLCBDKGRhODJl
ZjM4MDIzYTdhNWYpLCBDKDNlMWY3N2IwMTc0Yjc3YzMpLCBDKDc2NDg0ODYpfSwKKyAgICAgQyg4
NzhlNTViOSl9LAorICAgIHtDKDhhYTc3ZjUyZDc4NjhlYjkpLCBDKDRkNTViZDU4NzU4NGU2ZTIp
LCBDKGQyZGIzNzA0MWY0OTVmNSksIEMoNzY0ODQ4Nil9LAogICAgIHtDKDg1OGZlYTkyMmM3ZmUw
YzMpLCBDKGNmZTgzMjZiZjczM2JjNmYpLCBDKDRlNWUyMDE4Y2Y4ZjdkZmMpLAotICAgICBDKDY0
ZmQxYmMwMTFlNWJhYjcpLCBDKDVjOWU4NTg3MjgwMTU1NjgpLCBDKDk3YWM0MmMyYjAwYjI5YjEp
LAotICAgICBDKDdmODljYWYwOGMxMDlhZWUpLCBDKDY0ZmQxYmMwMTFlNWJhYjcpLCBDKDVjOWU4
NTg3MjgwMTU1NjgpLAotICAgICBDKDk3YWM0MmMyYjAwYjI5YjEpLCBDKDdmODljYWYwOGMxMDlh
ZWUpLCBDKDlhOGFmMzRmZDBlOWRhY2YpLAotICAgICBDKGJiYzU0MTYxYWExNTA3ZTApLCBDKDdj
ZGE3MjNjY2JiZmU1ZWUpLCBDKDJjMjg5ZDgzOWZiOTNmNTgpLAogICAgICBDKDU3YWMwZmIxKX0s
CiAgICAge0MoNDZlZjI1ZmRlYzgzOTJiMSksIEMoZTQ4ZDdiNmQ0MmE1Y2QzNSksIEMoNTZhNmZl
MWMxNzUyOTljYSksCi0gICAgIEMoZmRmYTgzNmI0MWRjZWY2MiksIEMoMmY4ZGI4MDMwZTg0N2Ux
YiksIEMoNWJhMGE0OWFjNGY5YjBmOCksCi0gICAgIEMoZGFlODk3ZWQzZTNmY2U0NCksIEMoZmRm
YTgzNmI0MWRjZWY2MiksIEMoMmY4ZGI4MDMwZTg0N2UxYiksCi0gICAgIEMoNWJhMGE0OWFjNGY5
YjBmOCksIEMoZGFlODk3ZWQzZTNmY2U0NCksIEMoOWM0MzJlMzFhZWY2MjZlNyksCi0gICAgIEMo
OWEzNmUxYzZjZDZlM2RkKSwgQyg1MDk1YTE2N2MzNGQxOWQpLCBDKGE3MDAwNWNmYTZiYWJiZWEp
LCBDKGQwMTk2N2NhKX0sCisgICAgIEMoZDAxOTY3Y2EpfSwKICAgICB7Qyg4ZDA3OGY3MjZiMmRm
NDY0KSwgQyhiNTBlZTcxY2RjYWJiMjk5KSwgQyhmNGFmMzAwMTA2ZjljN2JhKSwKLSAgICAgQyg3
ZDIyMmNhYWUwMjUxNThhKSwgQyhjYzAyOGQ1ZmQ0MDI0MWI5KSwgQyhkZDQyNTE1YjYzOWU2Zjk3
KSwKLSAgICAgQyhlMDhlODY1MzFhNThmODdmKSwgQyg3ZDIyMmNhYWUwMjUxNThhKSwgQyhjYzAy
OGQ1ZmQ0MDI0MWI5KSwKLSAgICAgQyhkZDQyNTE1YjYzOWU2Zjk3KSwgQyhlMDhlODY1MzFhNThm
ODdmKSwgQyhkOTM2MTJjODM1YjM3ZDdiKSwKLSAgICAgQyg5MWRkNjE3MjliMmZhN2Y0KSwgQyhi
YTc2NWExYmRkYTA5ZGI3KSwgQyg1NTI1OGI0NTFiMmIxMjk3KSwKICAgICAgQyg5NmVjZGY3NCl9
LAogICAgIHtDKDM1ZWE4NmU2OTYwY2E5NTApLCBDKDM0ZmUxZmUyMzRmYzVjNzYpLCBDKGEwMDIw
N2EzZGMyYTcyYjcpLAotICAgICBDKDgwMzk1ZTQ4NzM5ZTFhNjcpLCBDKDc0YTY3ZDhmN2Y0M2Mz
ZDcpLCBDKGRkMmJkZDFkNjIyNDZjNmUpLAotICAgICBDKGExZjQ0Mjk4YmE4MGFjZjYpLCBDKDgw
Mzk1ZTQ4NzM5ZTFhNjcpLCBDKDc0YTY3ZDhmN2Y0M2MzZDcpLAotICAgICBDKGRkMmJkZDFkNjIy
NDZjNmUpLCBDKGExZjQ0Mjk4YmE4MGFjZjYpLCBDKGFkODZkODZjMTg3YmYzOCksCi0gICAgIEMo
MjZmZWVhMWYyZWVlMjQwZCksIEMoZWQ3ZjFmZDA2NmIyMzg5NyksIEMoYTc2OGNmMWUwZmJiNTAy
KSwgQyg3NzlmNTUwNil9LAorICAgICBDKDc3OWY1NTA2KX0sCiAgICAge0MoOGFlZTllZGJjMTVk
ZDAxMSksIEMoNTFmNTgzOWRjODQ2MjY5NSksIEMoYjIyMTNlMTdjMzdkY2EyZCksCi0gICAgIEMo
MTMzYjI5OWE5Mzk3NDVjNSksIEMoNzk2ZTJhYWMwNTNmNTJiMyksIEMoZThkOWZlMTUyMWE0YTIy
MiksCi0gICAgIEMoODE5YTg4NjNlNWQxYzI5MCksIEMoMTMzYjI5OWE5Mzk3NDVjNSksIEMoNzk2
ZTJhYWMwNTNmNTJiMyksCi0gICAgIEMoZThkOWZlMTUyMWE0YTIyMiksIEMoODE5YTg4NjNlNWQx
YzI5MCksIEMoYzA3MzdmMGZlMzRkMzZhZCksCi0gICAgIEMoZTZkNmQ0YTI2N2E1Y2MzMSksIEMo
OTgzMDBhNzkxMTY3NGMyMyksIEMoYmVmMTg5NjYxYzI1NzA5OCksCiAgICAgIEMoM2M5NGMyZGUp
fSwKICAgICB7QyhjM2UxNDJiYTk4NDMyZGRhKSwgQyg5MTFkMDYwY2FiMTI2MTg4KSwgQyhiNzUz
ZmJmYTgzNjViODQ0KSwKLSAgICAgQyhmZDFhOWJhNWU3MWIwOGEyKSwgQyg3YWMwZGMyZWQ3Nzc4
NTMzKSwgQyhiNTQzMTYxZmYxNzcxODhhKSwKLSAgICAgQyg0OTJmYzA4YTYxODZmM2Y0KSwgQyhm
ZDFhOWJhNWU3MWIwOGEyKSwgQyg3YWMwZGMyZWQ3Nzc4NTMzKSwKLSAgICAgQyhiNTQzMTYxZmYx
NzcxODhhKSwgQyg0OTJmYzA4YTYxODZmM2Y0KSwgQyhmYzQ3NDVmNTE2YWZkM2I2KSwKLSAgICAg
Qyg4OGMzMDM3MGE1MzA4MGUpLCBDKDY1YTFiYjM0YWJjNDY1ZTIpLCBDKGFiYmQxNDY2MjkxMWM4
YjMpLCBDKDM5Zjk4ZmFmKX0sCisgICAgIEMoMzlmOThmYWYpfSwKICAgICB7QygxMjNiYTZiOTlj
OGNkOGRiKSwgQyg0NDhlNTgyNjcyZWUwN2M0KSwgQyhjZWJlMzc5MjkyZGI5ZTY1KSwKLSAgICAg
Qyg5MzhmNWJiYWI1NDRkM2Q2KSwgQyhkMmE5NWY5ZjJkMzc2ZDczKSwgQyg2OGIyZjE2MTQ5ZTgx
YWEzKSwKLSAgICAgQyhhZDdlMzJmODJkODZjNzlkKSwgQyg5MzhmNWJiYWI1NDRkM2Q2KSwgQyhk
MmE5NWY5ZjJkMzc2ZDczKSwKLSAgICAgQyg2OGIyZjE2MTQ5ZTgxYWEzKSwgQyhhZDdlMzJmODJk
ODZjNzlkKSwgQyg0NTc0MDE1YWU4NjI2Y2UyKSwKLSAgICAgQyg0NTVhYTYxMzczODZhNTgyKSwg
Qyg2NThhZDI1NDJlOGVjMjApLCBDKGUzMWQ3YmUyY2EzNWQwMCksIEMoN2FmMzExOTkpfSwKKyAg
ICAgQyg3YWYzMTE5OSl9LAogICAgIHtDKGJhODdhY2VmNzlkMTRmNTMpLCBDKGIzZTBmY2FlNjNh
MTE1NTgpLCBDKGQ1YWMzMTNhNTkzYTlmNDUpLAotICAgICBDKGVlYTVmNWE5Zjc0YWY1OTEpLCBD
KDU3ODcxMGJjYzM2ZmJlYTIpLCBDKDdhODM5MzQzMjE4ODkzMWQpLAotICAgICBDKDcwNWNmYzVl
YzdjYzE3MiksIEMoZWVhNWY1YTlmNzRhZjU5MSksIEMoNTc4NzEwYmNjMzZmYmVhMiksCi0gICAg
IEMoN2E4MzkzNDMyMTg4OTMxZCksIEMoNzA1Y2ZjNWVjN2NjMTcyKSwgQyhkYTg1ZWJlNWZjNDI3
OTc2KSwKLSAgICAgQyhiZmE1YzdhNDU0ZGY1NGM4KSwgQyg0NjMyYjcyYTgxYmY2NmQyKSwgQyg1
ZGQ3Mjg3N2RiNTM5ZWUyKSwKICAgICAgQyhlMzQxYTlkNil9LAotICAgIHtDKGJjZDM5NTdkNTcx
N2RjMyksIEMoMmRhNzQ2NzQxYjAzYTAwNyksIEMoODczODE2ZjRiMWVjZTQ3MiksCi0gICAgIEMo
MmI4MjZmMWEyYzA4YzI4OSksIEMoZGE1MGY1Njg2M2I1NWU3NCksIEMoYjE4NzEyZjZiM2VlZDgz
YiksCi0gICAgIEMoYmRjN2NjMDVhYjRjNjg1ZiksIEMoMmI4MjZmMWEyYzA4YzI4OSksIEMoZGE1
MGY1Njg2M2I1NWU3NCksCi0gICAgIEMoYjE4NzEyZjZiM2VlZDgzYiksIEMoYmRjN2NjMDVhYjRj
Njg1ZiksIEMoOWU0NWZiODMzZDFiMGFmKSwKLSAgICAgQyhkNzIxMzA4MWRiMjlkODJlKSwgQyhk
MmE2YjZjNmEwOWVkNTVlKSwgQyg5OGE3Njg2Y2JhMzIzY2E5KSwKLSAgICAgQyhjYTI0YWVlYil9
LAorICAgIHtDKGJjZDM5NTdkNTcxN2RjMyksIEMoMmRhNzQ2NzQxYjAzYTAwNyksIEMoODczODE2
ZjRiMWVjZTQ3MiksIEMoY2EyNGFlZWIpfSwKICAgICB7Qyg2MTQ0MmZmNTU2MDkxNjhlKSwgQyg2
NDQ3YzVmYzc2ZThjOWNmKSwgQyg2YTg0NmRlODNhZTE1NzI4KSwKLSAgICAgQyhlZmZjMjY2M2Nm
ZmM3NzdmKSwgQyg5MzIxNGY4ZjQ2M2FmYmVkKSwgQyhhMTU2ZWYwNjA2NmY0ZTRlKSwKLSAgICAg
QyhhNDA3YjZlZDg3NjlkNTFlKSwgQyhlZmZjMjY2M2NmZmM3NzdmKSwgQyg5MzIxNGY4ZjQ2M2Fm
YmVkKSwKLSAgICAgQyhhMTU2ZWYwNjA2NmY0ZTRlKSwgQyhhNDA3YjZlZDg3NjlkNTFlKSwgQyhi
YjJmOWVkMjk3NDVjMDJhKSwKLSAgICAgQyg5ODFlZWNkNDM1YjM2YWQ5KSwgQyg0NjFhNWEwNWZi
OWNkZmY0KSwgQyhiZDZjYjJhODdiOWY5MTBjKSwKICAgICAgQyhiMjI1MmI1Nyl9LAotICAgIHtD
KGRiZTRiMWIyZDE3NDc1N2YpLCBDKDUwNjUxMmRhMTg3MTI2NTYpLCBDKDY4NTdmM2UwYjhkZDk1
ZiksCi0gICAgIEMoNWE0ZmMyNzI4YTliYjY3MSksIEMoZWJiOTcxNTIyZWMzODc1OSksIEMoMWE1
YTA5M2U2Y2YxZjcyYiksCi0gICAgIEMoNzI5YjA1N2ZlNzg0ZjUwNCksIEMoNWE0ZmMyNzI4YTli
YjY3MSksIEMoZWJiOTcxNTIyZWMzODc1OSksCi0gICAgIEMoMWE1YTA5M2U2Y2YxZjcyYiksIEMo
NzI5YjA1N2ZlNzg0ZjUwNCksIEMoNzFmY2JmNDJhNzY3ZjljZiksCi0gICAgIEMoMTE0Y2ZlNzcy
ZGE2Y2RkKSwgQyg2MGNkZjljYjYyOWQ5ZDdhKSwgQyhlMjcwZDEwYWQwODhiMjRlKSwgQyg3MmM4
MWRhMSl9LAorICAgIHtDKGRiZTRiMWIyZDE3NDc1N2YpLCBDKDUwNjUxMmRhMTg3MTI2NTYpLCBD
KDY4NTdmM2UwYjhkZDk1ZiksIEMoNzJjODFkYTEpfSwKICAgICB7Qyg1MzFlOGU3N2IzNjMxNjFj
KSwgQyhlZWNlMGI0M2UyZGFlMDMwKSwgQyg4Mjk0YjgyYzc4ZjM0ZWQxKSwKLSAgICAgQyhlNzc3
YjFmZDU4MDU4MmYyKSwgQyg3Yjg4MGY1OGRhMTEyNjk5KSwgQyg1NjJjNmIxODlhNjMzM2Y0KSwK
LSAgICAgQygxMzlkNjRmODhhNjExZDQpLCBDKGU3NzdiMWZkNTgwNTgyZjIpLCBDKDdiODgwZjU4
ZGExMTI2OTkpLAotICAgICBDKDU2MmM2YjE4OWE2MzMzZjQpLCBDKDEzOWQ2NGY4OGE2MTFkNCks
IEMoNTNkOGVmMTdlZGE2NGZhNCksCi0gICAgIEMoYmYzZWRlZDE0ZGM2MGEwNCksIEMoMmI1YzU1
OWNmNWVjMDdjNSksIEMoODg5NWY3MzM5ZDAzYTQ4YSksCiAgICAgIEMoNmI5ZmNlOTUpfSwKICAg
ICB7QyhmNzFlOWM5MjZkNzExZTJiKSwgQyhkNzdhZjI4NTNhNGNlYWExKSwgQyg5YWEwZDZkNzZh
MzZmYWU3KSwKLSAgICAgQyhkZDE2Y2QwZmJjMDgzOTMpLCBDKDI5YTQxNGE1ZDhjNTg5NjIpLCBD
KDcyNzkzZDhkMTAyMmI1YjIpLAotICAgICBDKDJlOGU2OWNmN2NiZmZkZjApLCBDKGRkMTZjZDBm
YmMwODM5MyksIEMoMjlhNDE0YTVkOGM1ODk2MiksCi0gICAgIEMoNzI3OTNkOGQxMDIyYjViMiks
IEMoMmU4ZTY5Y2Y3Y2JmZmRmMCksIEMoMzcyMWMwNDczYWE5OWM5YSksCi0gICAgIEMoMWNmZjRl
ZDljMzFjZDkxYyksIEMoNDk5MDczNTAzM2NjNDgyYiksIEMoN2ZkZjhjNzAxYzcyZjU3NyksCiAg
ICAgIEMoMTkzOTk4NTcpfSwKICAgICB7QyhjYjIwYWMyOGY1MmRmMzY4KSwgQyhlNjcwNWVlNzg4
MDk5NmRlKSwgQyg5YjY2NWNjM2VjNjk3MmYyKSwKLSAgICAgQyg0MjYwZThjMjU0ZTk5MjRiKSwg
QyhmMTk3YTZlYjQ1OTE1NzJkKSwgQyg4ZTg2N2ZmMGZiN2FiMjdjKSwKLSAgICAgQyhmOTU1MDJm
YjUwM2VmYWYzKSwgQyg0MjYwZThjMjU0ZTk5MjRiKSwgQyhmMTk3YTZlYjQ1OTE1NzJkKSwKLSAg
ICAgQyg4ZTg2N2ZmMGZiN2FiMjdjKSwgQyhmOTU1MDJmYjUwM2VmYWYzKSwgQygzMGM0MTg3NmIw
OGUzZTIyKSwKLSAgICAgQyg5NThlMjQxOWUzY2QyMmY0KSwgQyhmMGYzYWExZmUxMTlhMTA3KSwg
Qyg0ODE2NjIzMTBhMzc5MTAwKSwKICAgICAgQygzYzU3YTk5NCl9LAogICAgIHtDKGU0YTc5NGI0
YWNiOTRiNTUpLCBDKDg5Nzk1MzU4MDU3YjY2MWIpLCBDKDljNGNkY2VjMTc2ZDdhNzApLAotICAg
ICBDKDQ4OTBhODNlZTQzNWJjOGIpLCBDKGQ4YzFjMDBmY2ViMDA5MTQpLCBDKDllNzExMWJhMjM0
ZjkwMGYpLAotICAgICBDKGViOGRiYWIzNjRkOGI2MDQpLCBDKDQ4OTBhODNlZTQzNWJjOGIpLCBD
KGQ4YzFjMDBmY2ViMDA5MTQpLAotICAgICBDKDllNzExMWJhMjM0ZjkwMGYpLCBDKGViOGRiYWIz
NjRkOGI2MDQpLCBDKGIzMjYxNDUyOTYzZWViYiksCi0gICAgIEMoNmNmOTRiMDI3OTJjNGY5NSks
IEMoZDg4ZmE4MTVlZjFlOGZjKSwgQygyZDY4N2FmNjY2MDRjNzMpLCBDKGMwNTNlNzI5KX0sCisg
ICAgIEMoYzA1M2U3MjkpfSwKICAgICB7QyhjYjk0MmU5MTQ0M2U3MjA4KSwgQyhlMzM1ZGU4MTI1
NTY3YzJhKSwgQyhkNGQ3NGQyNjhiODZkZjFmKSwKLSAgICAgQyg4YmEwZmRkMmZmYzhiMjM5KSwg
QyhmNDEzYjM2NmMxZmZlMDJmKSwgQyhjMDViMjcxN2M1OWE4YTI4KSwKLSAgICAgQyg5ODExODhl
YWI0ZmNjOGZiKSwgQyg4YmEwZmRkMmZmYzhiMjM5KSwgQyhmNDEzYjM2NmMxZmZlMDJmKSwKLSAg
ICAgQyhjMDViMjcxN2M1OWE4YTI4KSwgQyg5ODExODhlYWI0ZmNjOGZiKSwgQyhlNTYzZjQ5YTFk
OTA3MmJhKSwKLSAgICAgQygzYzZhM2FhNGEyNjM2N2RjKSwgQyhiYTBkYjEzNDQ4NjUzZjM0KSwg
QygzMTA2NWQ3NTYwNzRkN2Q2KSwKICAgICAgQyg1MWNiYmJhNyl9LAogICAgIHtDKGVjY2E3NTYz
YzIwM2Y3YmEpLCBDKDE3N2FlMjQyM2VmMzRiYjIpLCBDKGY2MGI3MjQzNDAwYzU3MzEpLAotICAg
ICBDKGNmMWVkYmZlNzMzMGU5NGUpLCBDKDg4MTk0NTkwNmJjYjNjYzYpLCBDKDRhY2YwMjkzMjQ0
ODU1ZGEpLAotICAgICBDKDY1YWUwNDJjMWMyYTI4YzIpLCBDKGNmMWVkYmZlNzMzMGU5NGUpLCBD
KDg4MTk0NTkwNmJjYjNjYzYpLAotICAgICBDKDRhY2YwMjkzMjQ0ODU1ZGEpLCBDKDY1YWUwNDJj
MWMyYTI4YzIpLCBDKGIyNWZhMGExY2FiMzM1NTkpLAotICAgICBDKGQ5OGU4ZGFhMjgxMjQxMzEp
LCBDKGZjZTE3ZjUwYjljMzUxYjMpLCBDKDNmOTk1Y2NmNzM4Njg2NGIpLAogICAgICBDKDFhY2Rl
NzlhKX0sCiAgICAge0MoMTY1MmNiOTQwMTc3YzhiNSksIEMoOGM0ZmU3ZDg1ZDJhNmQ2ZCksIEMo
ZjYyMTZhZDA5N2U1NGU3MiksCi0gICAgIEMoZjY1MjFiOTEyYjM2OGFlNiksIEMoYTlmZTRlZmY4
MWQwM2U3MyksIEMoZDZmNjIzNjI5ZjgwZDFhMyksCi0gICAgIEMoMmI5NjA0ZjMyY2I3ZGMzNCks
IEMoZjY1MjFiOTEyYjM2OGFlNiksIEMoYTlmZTRlZmY4MWQwM2U3MyksCi0gICAgIEMoZDZmNjIz
NjI5ZjgwZDFhMyksIEMoMmI5NjA0ZjMyY2I3ZGMzNCksIEMoMmE0M2Q4NGRjZjU5YzdlMiksCi0g
ICAgIEMoZDBhMTk3YzcwYzVkYWUwYiksIEMoNmU4NGQ0YmJjNzFkNzZhMCksIEMoYzdlOTQ2MjAz
NzhjNmNiMiksCiAgICAgIEMoMmQxNjBkMTMpfSwKICAgICB7QygzMWZlZDBmYzA0YzEzY2U4KSwg
QygzZDVkMDNkYmY3ZmYyNDBhKSwgQyg3MjdjNWM5YjUxNTgxMjAzKSwKLSAgICAgQyg2YjVmZmMx
ZjU0ZmVjYjI5KSwgQyhhOGU4ZTdhZDViOWEyMWQ5KSwgQyhjNGQ1YTMyY2Q2YWFjMjJkKSwKLSAg
ICAgQyhkN2UyNzRhZDIyZDRhNzlhKSwgQyg2YjVmZmMxZjU0ZmVjYjI5KSwgQyhhOGU4ZTdhZDVi
OWEyMWQ5KSwKLSAgICAgQyhjNGQ1YTMyY2Q2YWFjMjJkKSwgQyhkN2UyNzRhZDIyZDRhNzlhKSwg
QygzNjg4NDFlYTU3MzFhMTEyKSwKLSAgICAgQyhmZWFmN2JjMmU3M2NhNDhmKSwgQyg2MzZmYjI3
MmU5ZWExZjYpLCBDKDVkOWNiNzU4MGMzZjYyMDcpLCBDKDc4N2Y1ODAxKX0sCisgICAgIEMoNzg3
ZjU4MDEpfSwKICAgICB7QyhlN2I2Njg5NDc1OTBiOWIzKSwgQyhiYWE0MWFkMzI5MzhkM2ZhKSwg
QyhhYmNiYzhkNGNhNGIzOWU0KSwKLSAgICAgQygzODFlZTFiN2VhNTM0ZjRlKSwgQyhkYTM3NTk4
MjhlM2RlNDI5KSwgQygzZTAxNWQ3NjcyOWY5OTU1KSwKLSAgICAgQyhjYmJlYzUxYTY0ODVmYmRl
KSwgQygzODFlZTFiN2VhNTM0ZjRlKSwgQyhkYTM3NTk4MjhlM2RlNDI5KSwKLSAgICAgQygzZTAx
NWQ3NjcyOWY5OTU1KSwgQyhjYmJlYzUxYTY0ODVmYmRlKSwgQyg5Yjg2NjA1MjgxZjIwNzI3KSwK
LSAgICAgQyhmYzZmY2Y1MDg2NzY5ODJhKSwgQygzYjEzNWY3YTgxM2ExMDQwKSwgQyhkM2E0NzA2
YmVhMWRiOWM5KSwKICAgICAgQyhjOTYyOTgyOCl9LAogICAgIHtDKDFkZTIxMTk5MjNlOGVmM2Mp
LCBDKDZhYjI3YzA5NmNmMmZlMTQpLCBDKDhjMzY1OGVkY2E5NTg4OTEpLAotICAgICBDKDRjYzhl
ZDNhZGE1ZjBmMiksIEMoNGE0OTZiNzdjMWYxYzA0ZSksIEMoOTA4NWIwYTg2MjA4NDIwMSksCi0g
ICAgIEMoYTE4OTRiZGU5ZTNkZWUyMSksIEMoNGNjOGVkM2FkYTVmMGYyKSwgQyg0YTQ5NmI3N2Mx
ZjFjMDRlKSwKLSAgICAgQyg5MDg1YjBhODYyMDg0MjAxKSwgQyhhMTg5NGJkZTllM2RlZTIxKSwg
QygzNjdmYjQ3MmRjNWIyNzdkKSwKLSAgICAgQyg3ZDM5Y2NjYTE2ZmM2NzQ1KSwgQyg3NjNmOTg4
ZDcwZGI5MTA2KSwgQyhhOGI2NmY3ZmVjYjcwZjAyKSwKICAgICAgQyhiZTEzOTIzMSl9LAogICAg
IHtDKDEyNjlkZjFlNjllMTRmYTcpLCBDKDk5MmY5ZDU4YWM1MDQxYjcpLCBDKGU5N2ZjZjY5NWE3
Y2JiYjQpLAotICAgICBDKGU1ZDA1NDk4MDJkMTUwMDgpLCBDKDQyNGMxMzRlY2QwZGI4MzQpLCBD
KDZmYzQ0ZmQ5MWJlMTVjNmMpLAotICAgICBDKGExYTVlZjk1ZDUwZTUzN2QpLCBDKGU1ZDA1NDk4
MDJkMTUwMDgpLCBDKDQyNGMxMzRlY2QwZGI4MzQpLAotICAgICBDKDZmYzQ0ZmQ5MWJlMTVjNmMp
LCBDKGExYTVlZjk1ZDUwZTUzN2QpLCBDKGQxZTNkYWY1ZDA1ZjUzMDgpLAotICAgICBDKDRjN2Y4
MTYwMGVhYTEzMjcpLCBDKDEwOWQxYjhkMWY5ZDBkMmIpLCBDKDg3MWU4Njk5ZTBhZWI4NjIpLAog
ICAgICBDKDdkZjY5OWVmKX0sCiAgICAge0MoODIwODI2ZDdhYmE1NjdmZiksIEMoMWY3M2QyOGUw
MzZhNTJmMyksIEMoNDFjNGM1YTczZjNiMDg5MyksCi0gICAgIEMoYWEwZDc0ZDRhOThkYjg5Yiks
IEMoMzZmZDQ4NmQwN2M1NmUxZCksIEMoZDBhZDIzY2JiNjY2MGQ4YSksCi0gICAgIEMoMTI2NGE4
NDY2NWIzNWUxOSksIEMoYWEwZDc0ZDRhOThkYjg5YiksIEMoMzZmZDQ4NmQwN2M1NmUxZCksCi0g
ICAgIEMoZDBhZDIzY2JiNjY2MGQ4YSksIEMoMTI2NGE4NDY2NWIzNWUxOSksIEMoNzg5NjgyYmY3
ZDc4MWIzMyksCi0gICAgIEMoNmJmYTZhYmQyZmI1NzIyZCksIEMoNjc3OWNiMzYyM2QzMzkwMCks
IEMoNDM1Y2E1MjE0ZTFlZTVmMCksCiAgICAgIEMoOGNlNmI5NmQpfSwKICAgICB7QyhmZmUwNTQ3
ZTQ5MjNjZWY5KSwgQygzNTM0ZWQ0OWI5ZGE1YjAyKSwgQyg1NDhhMjczNzAwZmJhMDNkKSwKLSAg
ICAgQygyOGFjODRjYTcwOTU4ZjdlKSwgQyhkOGFlNTc1YTY4ZmFhNzMxKSwgQygyYWFhZWU5Yjlk
Y2ZmZDRjKSwKLSAgICAgQyg2YzdmYWFiNWMyODVjNmRhKSwgQygyOGFjODRjYTcwOTU4ZjdlKSwg
QyhkOGFlNTc1YTY4ZmFhNzMxKSwKLSAgICAgQygyYWFhZWU5YjlkY2ZmZDRjKSwgQyg2YzdmYWFi
NWMyODVjNmRhKSwgQyg0NWQ5NDIzNWY5OWJhNzhmKSwKLSAgICAgQyhhYjVlYTE2ZjM5NDk3ZjVi
KSwgQyhmYjRkNmM4NmZjY2JkY2EzKSwgQyg4MTA0ZTYzMTBhNWZkMmM3KSwKICAgICAgQyg2Zjll
ZDk5Yyl9LAogICAgIHtDKDcyZGE4ZDFiMTFkOGJjOGIpLCBDKGJhOTRiNTZiOTFiNjgxYzYpLCBD
KDRlOGNjNTFiZDliMGZjOGMpLAotICAgICBDKDQzNTA1ZWQxMzNiZTY3MmEpLCBDKGU4ZjJmOWQ5
NzNjMjc3NGUpLCBDKDY3N2I5YjljN2NhZDZkOTcpLAotICAgICBDKDRlMWY1ZDU2ZWYxN2I5MDYp
LCBDKDQzNTA1ZWQxMzNiZTY3MmEpLCBDKGU4ZjJmOWQ5NzNjMjc3NGUpLAotICAgICBDKDY3N2I5
YjljN2NhZDZkOTcpLCBDKDRlMWY1ZDU2ZWYxN2I5MDYpLCBDKGVlYTNhNjAzOGY5ODM3NjcpLAot
ICAgICBDKDg3MTA5ZjA3N2Y4NmRiMDEpLCBDKGVjYzFjYTQxZjc0ZDYxY2MpLCBDKDM0YTg3ZTg2
ZTgzYmVkMTcpLAogICAgICBDKGUwMjQ0Nzk2KX0sCi0gICAge0MoZDYyYWI0ZTNmODhmYzc5Nyks
IEMoZWE4NmM3YWViNjI4M2FlNCksIEMoYjViOTNlMDlhN2ZlNDY1KSwKLSAgICAgQyg0MzQ0YTFh
MDEzNGFmZTIpLCBDKGZmNWMxN2YwMmI2MjM0MWQpLCBDKDMyMTRjNmE1ODdjZTQ2NDQpLAotICAg
ICBDKGE5MDVlN2VkMDYyOWQwNWMpLCBDKDQzNDRhMWEwMTM0YWZlMiksIEMoZmY1YzE3ZjAyYjYy
MzQxZCksCi0gICAgIEMoMzIxNGM2YTU4N2NlNDY0NCksIEMoYTkwNWU3ZWQwNjI5ZDA1YyksIEMo
YjVjNzI2OTBjZDcxNmU4MiksCi0gICAgIEMoN2M2MDk3NjQ5ZTZlYmU3YiksIEMoN2NlZWU4YzZl
NTZhNGRjZCksIEMoODBjYTg0OWRjNTNlYjllNCksCi0gICAgIEMoNGNjZjdlNzUpfSwKKyAgICB7
QyhkNjJhYjRlM2Y4OGZjNzk3KSwgQyhlYTg2YzdhZWI2MjgzYWU0KSwgQyhiNWI5M2UwOWE3ZmU0
NjUpLCBDKDRjY2Y3ZTc1KX0sCiAgICAge0MoZDBmMDZjMjhjN2IzNjgyMyksIEMoMTAwOGNiMDg3
NGRlNGJiOCksIEMoZDZjN2ZmODE2YzdhNzM3YiksCi0gICAgIEMoNDg5YjY5N2ZlMzBhYTY1Ziks
IEMoNGRhMGZiNjIxZmRjNzgxNyksIEMoZGM0MzU4M2I4MmM1ODEwNyksCi0gICAgIEMoNGIwMjYx
ZGViZGVjM2NkNiksIEMoNDg5YjY5N2ZlMzBhYTY1ZiksIEMoNGRhMGZiNjIxZmRjNzgxNyksCi0g
ICAgIEMoZGM0MzU4M2I4MmM1ODEwNyksIEMoNGIwMjYxZGViZGVjM2NkNiksIEMoYTk3NDhkN2I2
YzBlMDE2YyksCi0gICAgIEMoN2U4ODI4ZjdiYTRiMDM0YiksIEMoZGEwZmE1NDM0OGEyNTEyYSks
IEMoZWJmOTc0NWMwOTYyZjlhZCksCiAgICAgIEMoOTE1Y2VmODYpfSwKICAgICB7Qyg5OWI3MDQy
NDYwZDcyZWM2KSwgQygyYTUzZTVlMmI4ZTc5NWMyKSwgQyg1M2E3ODEzMmQ5ZTFiM2UzKSwKLSAg
ICAgQyhjMDQzZTY3ZTZmYzY0MTE4KSwgQyhmZjBhYmZlOTI2ZDg0NGQzKSwgQyhmMmE5ZmU1ZGIy
ZTkxMGZlKSwKLSAgICAgQyhjZTM1MmNkYzg0YTk2NGRkKSwgQyhjMDQzZTY3ZTZmYzY0MTE4KSwg
QyhmZjBhYmZlOTI2ZDg0NGQzKSwKLSAgICAgQyhmMmE5ZmU1ZGIyZTkxMGZlKSwgQyhjZTM1MmNk
Yzg0YTk2NGRkKSwgQyhiODliYzAyOGFhNWU2MDYzKSwKLSAgICAgQyhhMzU0ZTdmZGFjMDQ0NTlj
KSwgQyg2OGQ2NTQ3ZTZlOTgwMTg5KSwgQyhjOTY4ZGRkZmQ1NzM3NzNlKSwKICAgICAgQyg1Y2I1
OTQ4Mil9LAotICAgIHtDKDRmNGRmY2ZjMGVjMmJhZTUpLCBDKDg0MTIzMzE0ODI2OGExYjgpLCBD
KDkyNDhhNzZhYjhiZTBkMyksCi0gICAgIEMoMzM0YzVhMjViNTkwM2E4YyksIEMoNGM5NGZlZjQ0
MzEyMjEyOCksIEMoNzQzZTdkODQ1NDY1NWM0MCksCi0gICAgIEMoMWFiMWU2ZDE0NTJhZTJjZCks
IEMoMzM0YzVhMjViNTkwM2E4YyksIEMoNGM5NGZlZjQ0MzEyMjEyOCksCi0gICAgIEMoNzQzZTdk
ODQ1NDY1NWM0MCksIEMoMWFiMWU2ZDE0NTJhZTJjZCksIEMoZmVjNzY2ZGU0YThlNDc2YyksCi0g
ICAgIEMoY2MwOTI5ZGE5NTY3ZTcxYiksIEMoNWY5ZWY1YjVmMTUwYzM1YSksIEMoODc2NTljYWJk
NjQ5NzY4ZiksCi0gICAgIEMoNmNhM2Y1MzIpfSwKKyAgICB7Qyg0ZjRkZmNmYzBlYzJiYWU1KSwg
Qyg4NDEyMzMxNDgyNjhhMWI4KSwgQyg5MjQ4YTc2YWI4YmUwZDMpLCBDKDZjYTNmNTMyKX0sCiAg
ICAge0MoZmU4NmJmOWQ0NDIyYjlhZSksIEMoZWJjZTg5YzkwNjQxZWY5YyksIEMoMWM4NGUyMjky
YzBiNTY1OSksCi0gICAgIEMoOGJkZTYyNWExMGE4YzUwZCksIEMoZWI4MjcxZGVkMWY3OWEwYiks
IEMoMTRkYzY4NDRmMGRlN2EzYyksCi0gICAgIEMoZjg1YjJmOTU0MWU3ZTZkYSksIEMoOGJkZTYy
NWExMGE4YzUwZCksIEMoZWI4MjcxZGVkMWY3OWEwYiksCi0gICAgIEMoMTRkYzY4NDRmMGRlN2Ez
YyksIEMoZjg1YjJmOTU0MWU3ZTZkYSksIEMoMmZlMjJjZmQxNjgzYjk2MSksCi0gICAgIEMoZWEx
ZDc1YzViN2FhMDFjYSksIEMoOWVlZjYwYTQ0ODc2YmI5NSksIEMoOTUwYzgxOGU1MDVjNmY3Ziks
CiAgICAgIEMoZTI0ZjM4NTkpfSwKICAgICB7QyhhOTBkODEwNjA5MzJkYmIwKSwgQyg4YWNmYWE4
OGM1ZmJlOTJiKSwgQyg3YzZmMzQ0N2U5MGY3ZjNmKSwKLSAgICAgQyhkZDUyZmMxNGM4ZGQzMTQz
KSwgQygxYmM3NTA4NTE2ZTQwNjI4KSwgQygzMDU5NzMwMjY2YWRlNjI2KSwKLSAgICAgQyhmZmE1
MjY4MjJmMzkxYzIpLCBDKGRkNTJmYzE0YzhkZDMxNDMpLCBDKDFiYzc1MDg1MTZlNDA2MjgpLAot
ICAgICBDKDMwNTk3MzAyNjZhZGU2MjYpLCBDKGZmYTUyNjgyMmYzOTFjMiksIEMoZTI1MjMyZDdh
ZmM4YTQwNiksCi0gICAgIEMoZDJiOGE1YTNmM2I1ZjY3MCksIEMoNjYzMGYzM2VkYjdkZmUzMiks
IEMoYzcxMjUwYmE2OGM0ZWE4NiksCiAgICAgIEMoYWRmNWE5YzcpfSwKICAgICB7QygxNzkzOGEx
YjBlN2Y1OTUyKSwgQygyMmNhZGQyZjU2ZjhhNGJlKSwgQyg4NGIwZDExODNkNWVkN2MxKSwKLSAg
ICAgQyhjMTMzNmI5MmZlZjkxYmY2KSwgQyg4MDMzMmEzOTQ1ZjMzZmE5KSwgQyhhMGY2OGI4NmY3
MjZmZjkyKSwKLSAgICAgQyhhM2RiNTI4MmNmNWY0YzBiKSwgQyhjMTMzNmI5MmZlZjkxYmY2KSwg
Qyg4MDMzMmEzOTQ1ZjMzZmE5KSwKLSAgICAgQyhhMGY2OGI4NmY3MjZmZjkyKSwgQyhhM2RiNTI4
MmNmNWY0YzBiKSwgQyg4MjY0MGI2ZmM0OTE2NjA3KSwKLSAgICAgQygyZGMyYTNhYTFhODk0MTc1
KSwgQyg4YjRjODUyYmRlZTdjYzkpLCBDKDEwYjlkMGEwOGI1NWZmODMpLCBDKDMyMjY0Yjc1KX0s
CisgICAgIEMoMzIyNjRiNzUpfSwKICAgICB7QyhkZTllMGNiMGUxNmY2ZTZkKSwgQygyMzhlNjI4
M2FhNGY2NTk0KSwgQyg0ZmI5YzkxNGMyZjBhMTNiKSwKLSAgICAgQyg0OTdjYjkxMmI2NzBmM2Ip
LCBDKGQ5NjNhM2YwMmZmNGE1YjYpLCBDKDRmY2NlZmFlMTFiNTAzOTEpLAotICAgICBDKDQyYmE0
N2RiM2Y3NjcyZiksIEMoNDk3Y2I5MTJiNjcwZjNiKSwgQyhkOTYzYTNmMDJmZjRhNWI2KSwKLSAg
ICAgQyg0ZmNjZWZhZTExYjUwMzkxKSwgQyg0MmJhNDdkYjNmNzY3MmYpLCBDKDFkNmI2NTVhMTg4
OWZlZWYpLAotICAgICBDKDVmMzE5YWJmOGZhZmExOWYpLCBDKDcxNWMyZTQ5ZGViMTQ2MjApLCBD
KDhkOTE1MzA4MmVjZGNlYTQpLAogICAgICBDKGE2NGIzMzc2KX0sCi0gICAge0MoNmQ0Yjg3NmQ5
YjE0NmQxYSksIEMoYWFiMmQ2NGNlOGYyNjczOSksIEMoZDMxNWY5MzYwMGU4M2ZlNSksCi0gICAg
IEMoMmZlOWZhYmRiZTdmZGQ0KSwgQyg3NTVkYjI0OWEyZDgxYTY5KSwgQyhmMjc5MjlmMzYwNDQ2
ZDcxKSwKLSAgICAgQyg3OWExYmY5NTdjMGMxYjkyKSwgQygyZmU5ZmFiZGJlN2ZkZDQpLCBDKDc1
NWRiMjQ5YTJkODFhNjkpLAotICAgICBDKGYyNzkyOWYzNjA0NDZkNzEpLCBDKDc5YTFiZjk1N2Mw
YzFiOTIpLCBDKDNjOGEyOGQ0YzkzNmM5Y2QpLAotICAgICBDKGRmMGQzZDEzYjJjNmE5MDIpLCBD
KGM3NjcwMmRkOTdjZDJlZGQpLCBDKDFhYTIyMGY3YmUxNjUxNyksIEMoZDMzODkwZSl9LAorICAg
IHtDKDZkNGI4NzZkOWIxNDZkMWEpLCBDKGFhYjJkNjRjZThmMjY3MzkpLCBDKGQzMTVmOTM2MDBl
ODNmZTUpLCBDKGQzMzg5MGUpfSwKICAgICB7QyhlNjk4ZmEzZjU0ZTZlYTIyKSwgQyhiZDI4ZTIw
ZTc0NTUzNThjKSwgQyg5YWNlMTYxZjZlYTc2ZTY2KSwKLSAgICAgQyhkNTNmYjdlM2M5M2E5ZTQp
LCBDKDczN2FlNzFiMDUxYmYxMDgpLCBDKDdhYzcxZmViODRjMmRmNDIpLAotICAgICBDKDNkODA3
NWNkMjkzYTE1YjQpLCBDKGQ1M2ZiN2UzYzkzYTllNCksIEMoNzM3YWU3MWIwNTFiZjEwOCksCi0g
ICAgIEMoN2FjNzFmZWI4NGMyZGY0MiksIEMoM2Q4MDc1Y2QyOTNhMTViNCksIEMoYmY4Y2VlNWUw
OTVkOGE3YyksCi0gICAgIEMoZTcwODZiM2M3NjA4MTQzYSksIEMoZTU1YjBjMmZhOTM4ZDcwYyks
IEMoZmZmYjVmNThlNjQzNjQ5YyksCiAgICAgIEMoOTI2ZDRiNjMpfSwKICAgICB7Qyg3YmMwZGVl
ZDRmYjM0OWY3KSwgQygxNzcxYWZmMjVkYzcyMmZhKSwgQygxOWZmMDY0NGQ5NjgxOTE3KSwKLSAg
ICAgQyhjZjdkN2YyNWJkNzBjZDJjKSwgQyg5NDY0ZWQ5YmFlYjQxYjRmKSwgQyhiOTA2NGY1YzNj
YjExYjcxKSwKLSAgICAgQygyMzdlMzkyMjliMDEyYjIwKSwgQyhjZjdkN2YyNWJkNzBjZDJjKSwg
Qyg5NDY0ZWQ5YmFlYjQxYjRmKSwKLSAgICAgQyhiOTA2NGY1YzNjYjExYjcxKSwgQygyMzdlMzky
MjliMDEyYjIwKSwgQyhkZDU0ZDNmNWQ5ODJkZmZlKSwKLSAgICAgQyg3ZmM3NTYyZGJmYzgxZGJm
KSwgQyg1YjBkZDE5MjRmNzA5NDUpLCBDKGYxNzYwNTM3ZDgyNjExMzUpLCBDKGQ1MWJhNTM5KX0s
CisgICAgIEMoZDUxYmE1MzkpfSwKICAgICB7QyhkYjRiMTVlODg1MzNmNjIyKSwgQygyNTZkNmQy
NDE5YjQxY2U5KSwgQyg5ZDdjNTM3ODM5Njc2NWQ1KSwKLSAgICAgQyg5MDQwZTViOTM2Yjg2NjFi
KSwgQygyNzZlMDhmYTUzYWMyN2ZkKSwgQyg4Yzk0NGQzOWMyYmRkMmNjKSwKLSAgICAgQyhlMjUx
NGM5ODAyYTU3NDNjKSwgQyg5MDQwZTViOTM2Yjg2NjFiKSwgQygyNzZlMDhmYTUzYWMyN2ZkKSwK
LSAgICAgQyg4Yzk0NGQzOWMyYmRkMmNjKSwgQyhlMjUxNGM5ODAyYTU3NDNjKSwgQyhlODIxMDdi
MTFhYzkwMzg2KSwKLSAgICAgQyg3ZDZhMjJiYzM1MDU1ZTYpLCBDKGZkNmVhOWQxYzQzOGQ4YWUp
LCBDKGJlNjAxNTE0OWU5ODE1NTMpLCBDKDdmMzc2MzZkKX0sCisgICAgIEMoN2YzNzYzNmQpfSwK
ICAgICB7Qyg5MjI4MzQ3MzVlODZlY2IyKSwgQygzNjMzODI2ODViODgzMjhlKSwgQyhlOWM5Mjk2
MGQ3MTQ0NjMwKSwKLSAgICAgQyg4NDMxYjFiZmQwYTIzNzljKSwgQyg5MDM4MzkxM2FlYTI4M2Y5
KSwgQyhhNjE2MzgzMWViNDkyNGQyKSwKLSAgICAgQyg1ZjM5MjFiNGY5MDg0YWVlKSwgQyg4NDMx
YjFiZmQwYTIzNzljKSwgQyg5MDM4MzkxM2FlYTI4M2Y5KSwKLSAgICAgQyhhNjE2MzgzMWViNDky
NGQyKSwgQyg1ZjM5MjFiNGY5MDg0YWVlKSwgQyg3YTcwMDYxYTE0NzNlNTc5KSwKLSAgICAgQyg1
YjE5ZDgwZGNkMmM2MzMxKSwgQyg2MTk2Yjk3OTMxZmFhZDI3KSwgQyg4NjliZjY4MjhlMjM3YzNm
KSwKICAgICAgQyhiOTgwMjZjMCl9LAogICAgIHtDKDMwZjFkNzJjODEyZjFlYjgpLCBDKGI1Njdj
ZDRhNjljZDg5ODkpLCBDKDgyMGI2Yzk5MmE1MWYwYmMpLAotICAgICBDKGM1NDY3N2E4MDM2NzEy
NWUpLCBDKDMyMDRmYmRiYTQ2MmU2MDYpLCBDKDg1NjMyNzhhZmM5ZWFlNjkpLAotICAgICBDKDI2
MjE0N2RkNGJmN2U1NjYpLCBDKGM1NDY3N2E4MDM2NzEyNWUpLCBDKDMyMDRmYmRiYTQ2MmU2MDYp
LAotICAgICBDKDg1NjMyNzhhZmM5ZWFlNjkpLCBDKDI2MjE0N2RkNGJmN2U1NjYpLCBDKDIxNzhi
NjNlN2VlMmQyMzApLAotICAgICBDKGU5YzYxYWQ4MWY1YmZmMjYpLCBDKDlhZjdhODFiM2M1MDFl
Y2EpLCBDKDQ0MTA0YTM4NTlmMDIzOGYpLAogICAgICBDKGI4Nzc3NjdlKX0sCi0gICAge0MoMTY4
ODg0MjY3ZjM4MTdlOSksIEMoNWIzNzZlMDUwZjYzNzY0NSksIEMoMWMxODMxNGFiZDM0NDk3YSks
Ci0gICAgIEMoOTU5OGY2YWIwNjgzZmNjMiksIEMoMWM4MDVhYmY3YjgwZTFlZSksIEMoZGVjOWFj
NDJlZTBkMGYzMiksCi0gICAgIEMoOGNkNzJlMzkxMmQyNDY2MyksIEMoOTU5OGY2YWIwNjgzZmNj
MiksIEMoMWM4MDVhYmY3YjgwZTFlZSksCi0gICAgIEMoZGVjOWFjNDJlZTBkMGYzMiksIEMoOGNk
NzJlMzkxMmQyNDY2MyksIEMoMWYwMjVkNDA1ZjFjMWQ4NyksCi0gICAgIEMoYmY3YjYyMjFlMTY2
OGY4ZiksIEMoNTIzMTZmNjRlNjkyZGJiMCksIEMoN2JmNDNkZjYxZWM1MWIzOSksIEMoYWVmYWU3
Nyl9LAotICAgIHtDKDgyZTc4NTk2ZWUzZTU2YTcpLCBDKDI1Njk3ZDljODdmMzBkOTgpLCBDKDc2
MDBhODM0MjgzNDkyNGQpLAotICAgICBDKDZiYTM3MmY0YjdhYjI2OGIpLCBDKDhjMzIzN2NmMWZl
MjQzZGYpLCBDKDM4MzNmYzUxMDEyOTAzZGYpLAotICAgICBDKDhlMzEzMTAxMDhjNTY4M2YpLCBD
KDZiYTM3MmY0YjdhYjI2OGIpLCBDKDhjMzIzN2NmMWZlMjQzZGYpLAotICAgICBDKDM4MzNmYzUx
MDEyOTAzZGYpLCBDKDhlMzEzMTAxMDhjNTY4M2YpLCBDKDEyNjU5MzcxNWMyZGU0MjkpLAotICAg
ICBDKDQ4Y2E4ZjM1YTNmNTRiOTApLCBDKGI5MzIyYjYzMmY0ZjhiMCksIEMoOTI2YmIxNjliNzMz
NzY5MyksIEMoZjY4NjkxMSl9LAorICAgIHtDKDE2ODg4NDI2N2YzODE3ZTkpLCBDKDViMzc2ZTA1
MGY2Mzc2NDUpLCBDKDFjMTgzMTRhYmQzNDQ5N2EpLCBDKGFlZmFlNzcpfSwKKyAgICB7Qyg4MmU3
ODU5NmVlM2U1NmE3KSwgQygyNTY5N2Q5Yzg3ZjMwZDk4KSwgQyg3NjAwYTgzNDI4MzQ5MjRkKSwg
QyhmNjg2OTExKX0sCiAgICAge0MoYWEyZDZjZjIyZTNjYzI1MiksIEMoOWI0ZGVjNGY1ZTE3OWYx
NiksIEMoNzZmYjBmYmExZDk5YTk5YSksCi0gICAgIEMoOWE2MmFmM2RiYmExNDBkYSksIEMoMjc4
NTdlYTA0NGU5ZGZjMSksIEMoMzNhYmNlOWRhMjI3MjY0NyksCi0gICAgIEMoYjIyYTc5OTNhYWYz
MjU1NiksIEMoOWE2MmFmM2RiYmExNDBkYSksIEMoMjc4NTdlYTA0NGU5ZGZjMSksCi0gICAgIEMo
MzNhYmNlOWRhMjI3MjY0NyksIEMoYjIyYTc5OTNhYWYzMjU1NiksIEMoYmY4Zjg4ZjgwMTliZWRm
MCksCi0gICAgIEMoZWQyZDdmMDFmYjI3MzkwNSksIEMoNmI0NWYxNTkwMWI0ODFjZCksIEMoZjg4
ZWJiNDEzYmE2YThkNSksCiAgICAgIEMoM2RlYWRmMTIpfSwKICAgICB7Qyg3YmY1ZmZkN2Y2OTM4
NWM3KSwgQyhmYzA3N2IxZDhiYzgyODc5KSwgQyg5YzA0ZTM2ZjllZDgzYTI0KSwKLSAgICAgQyg4
MjA2NWM2MmU2NTgyMTg4KSwgQyg4ZWY3ODdmZDM1NmY1ZTQzKSwgQygyOTIyZTUzZTM2ZTE3ZGZh
KSwKLSAgICAgQyg5ODA1ZjIyM2QzODUwMTBiKSwgQyg4MjA2NWM2MmU2NTgyMTg4KSwgQyg4ZWY3
ODdmZDM1NmY1ZTQzKSwKLSAgICAgQygyOTIyZTUzZTM2ZTE3ZGZhKSwgQyg5ODA1ZjIyM2QzODUw
MTBiKSwgQyg2OTIxNTRmMzQ5MWI3ODdkKSwKLSAgICAgQyhlN2U2NDcwMGU0MTRmYmYpLCBDKDc1
N2Q0ZDRhYjY1MDY5YTApLCBDKGNkMDI5NDQ2YThlMzQ4ZTIpLCBDKGNjZjAyYTRlKX0sCisgICAg
IEMoY2NmMDJhNGUpfSwKICAgICB7QyhlODljOGZmOWY5YzZlMzRiKSwgQyhmNTRjMGY2NjlhNDlm
NmM0KSwgQyhmYzNlNDZmNWQ4NDZhZGVmKSwKLSAgICAgQygyMmYyYWEzZGYyMjIxY2MpLCBDKGY2
NmZlYTkwZjVkNjIxNzQpLCBDKGI3NWRlZmFlYWExZGQyYTcpLAotICAgICBDKDliOTk0Y2Q5YTcy
MTRmZDUpLCBDKDIyZjJhYTNkZjIyMjFjYyksIEMoZjY2ZmVhOTBmNWQ2MjE3NCksCi0gICAgIEMo
Yjc1ZGVmYWVhYTFkZDJhNyksIEMoOWI5OTRjZDlhNzIxNGZkNSksIEMoZmFjNjc1YTMxODA0Yjc3
MyksCi0gICAgIEMoOThiY2IzYjgyMGM1MGZjNiksIEMoZTE0YWY2NGQyOGNmMDg4NSksIEMoMjc0
NjZmYmQyYjM2MGViNSksCiAgICAgIEMoMTc2YzE3MjIpfSwKLSAgICB7QyhhMThmYmNkY2NkMTFl
MWY0KSwgQyg4MjQ4MjE2NzUxZGZkNjVlKSwgQyg0MGMwODlmMjA4ZDg5ZDdjKSwKLSAgICAgQygy
MjliNzlhYjY5YWU5N2QpLCBDKGE4N2FhYmMyZWMyNmU1ODIpLCBDKGJlMmIwNTM3MjFlYjI2ZDIp
LAotICAgICBDKDEwZmViZDdmMGMzZDZmY2IpLCBDKDIyOWI3OWFiNjlhZTk3ZCksIEMoYTg3YWFi
YzJlYzI2ZTU4MiksCi0gICAgIEMoYmUyYjA1MzcyMWViMjZkMiksIEMoMTBmZWJkN2YwYzNkNmZj
YiksIEMoOWNjNWI5YjJmNmUzYmY3YiksCi0gICAgIEMoNjU1ZDg0OTVmZTYyNGE4NiksIEMoNjM4
MWE5ZjNkMWYyYmQ3ZSksIEMoNzllYmFiYmZjMjVjODNlMiksIEMoMjZmODJhZCl9LAorICAgIHtD
KGExOGZiY2RjY2QxMWUxZjQpLCBDKDgyNDgyMTY3NTFkZmQ2NWUpLCBDKDQwYzA4OWYyMDhkODlk
N2MpLCBDKDI2ZjgyYWQpfSwKICAgICB7QygyZDU0ZjQwY2M0MDg4YjE3KSwgQyg1OWQxNTYzM2Iw
Y2QxMzk5KSwgQyhhOGNjMDRiYjFiZmZkMTViKSwKLSAgICAgQyhkMzMyY2RiMDczZDhkYzQ2KSwg
QygyNzJjNTY0NjY4NjhjYjQ2KSwgQyg3ZTdmY2JlMzVjYTZjM2YzKSwKLSAgICAgQyhlZThmNTFl
NWE3MDM5OWQ0KSwgQyhkMzMyY2RiMDczZDhkYzQ2KSwgQygyNzJjNTY0NjY4NjhjYjQ2KSwKLSAg
ICAgQyg3ZTdmY2JlMzVjYTZjM2YzKSwgQyhlZThmNTFlNWE3MDM5OWQ0KSwgQygxNjczN2E5Yzc1
ODFmZTdiKSwKLSAgICAgQyhlZDA0YmY1MmY0Yjc1ZGNiKSwgQyg5NzA3ZmZiMzZiZDMwYzFhKSwg
QygxMzkwZjIzNmZkYzBkZTNlKSwKICAgICAgQyhiNTI0NGY0Mil9LAogICAgIHtDKDY5Mjc2OTQ2
Y2I0ZTg3YzcpLCBDKDYyYmRiZTYxODNiZTZmYTkpLCBDKDNiYTk3NzNkYWM0NDJhMWEpLAotICAg
ICBDKDcwMmUyYWZjN2Y1YTE4MjUpLCBDKDhjNDliMTFlYTgxNTFmZGMpLCBDKGNhZjNmZWY2MWY1
YTg2ZmEpLAotICAgICBDKGVmMGIyZWU4NjQ5ZDcyNzIpLCBDKDcwMmUyYWZjN2Y1YTE4MjUpLCBD
KDhjNDliMTFlYTgxNTFmZGMpLAotICAgICBDKGNhZjNmZWY2MWY1YTg2ZmEpLCBDKGVmMGIyZWU4
NjQ5ZDcyNzIpLCBDKDllMzRhNGUwOGQ5NDQxZTEpLAotICAgICBDKDdiZGMwY2Q2NGQ1YWY1MzMp
LCBDKGE5MjZiMTRkOTllM2Q4NjgpLCBDKGZjYTkyM2ExNzc4OGNjZTQpLAogICAgICBDKDQ5YTY4
OWU1KX0sCi0gICAge0MoNjY4MTc0YTNmNDQzZGYxZCksIEMoNDA3Mjk5MzkyZGExY2U4NiksIEMo
YzJhM2Y3ZDdmMmM1YmUyOCksCi0gICAgIEMoYTU5MGIyMDJhN2E1ODA3YiksIEMoOTY4ZDI1OTNm
N2NjYjU0ZSksIEMoOWRkOGQ2NjllM2U5NWRlYyksCi0gICAgIEMoZWUwY2M1ZGQ1OGI2ZTkzYSks
IEMoYTU5MGIyMDJhN2E1ODA3YiksIEMoOTY4ZDI1OTNmN2NjYjU0ZSksCi0gICAgIEMoOWRkOGQ2
NjllM2U5NWRlYyksIEMoZWUwY2M1ZGQ1OGI2ZTkzYSksIEMoYWM2NWQ1YTk0NjZmYjQ4MyksCi0g
ICAgIEMoMjIxYmU1MzhiMmM5ZDgwNiksIEMoNWNiZTk0NDE3ODRmOWZkOSksIEMoZDRjN2Q1ZDZl
M2MxMjJiOCksIEMoNTlmY2RkMyl9LAotICAgIHtDKDVlMjliZTg0N2JkNTA0NiksIEMoYjU2MWM3
ZjE5YzhmODBjMyksIEMoNWU1YWJkNTAyMWNjYWVhZiksCi0gICAgIEMoNzQzMmQ2Mzg4OGUwYzMw
NiksIEMoNzRiYmNlZWVkNDc5Y2I3MSksIEMoNjQ3MTU4NjU5OTU3NWZkZiksCi0gICAgIEMoNmE4
NTlhZDIzMzY1Y2JhMiksIEMoNzQzMmQ2Mzg4OGUwYzMwNiksIEMoNzRiYmNlZWVkNDc5Y2I3MSks
Ci0gICAgIEMoNjQ3MTU4NjU5OTU3NWZkZiksIEMoNmE4NTlhZDIzMzY1Y2JhMiksIEMoZjljZWVj
ODRhY2QxOGRjYyksCi0gICAgIEMoNzRhMjQyZmYxOTA3NDM3YyksIEMoZjcwODkwMTk0ZTFlZTkx
MyksIEMoNzc3ZGZjYjRiYjAxZjBiYSksCi0gICAgIEMoNGY0YjA0ZTkpfSwKKyAgICB7Qyg2Njgx
NzRhM2Y0NDNkZjFkKSwgQyg0MDcyOTkzOTJkYTFjZTg2KSwgQyhjMmEzZjdkN2YyYzViZTI4KSwg
Qyg1OWZjZGQzKX0sCisgICAge0MoNWUyOWJlODQ3YmQ1MDQ2KSwgQyhiNTYxYzdmMTljOGY4MGMz
KSwgQyg1ZTVhYmQ1MDIxY2NhZWFmKSwgQyg0ZjRiMDRlOSl9LAogICAgIHtDKGNkMGQ3OWYyMTY0
ZGEwMTQpLCBDKDRjMzg2YmI1YzVkNmNhMGMpLCBDKDhlNzcxYjAzNjQ3YzNiNjMpLAotICAgICBD
KDY5ZGIyMzg3NWNiMGI3MTUpLCBDKGFkYThkZDkxNTA0YWUzN2YpLCBDKDQ2YmYxOGRiZjA0NWVk
NmEpLAotICAgICBDKGUxYjVmNjdiMDY0NWFiNjMpLCBDKDY5ZGIyMzg3NWNiMGI3MTUpLCBDKGFk
YThkZDkxNTA0YWUzN2YpLAotICAgICBDKDQ2YmYxOGRiZjA0NWVkNmEpLCBDKGUxYjVmNjdiMDY0
NWFiNjMpLCBDKDg3N2JlOGY1ZGNkZGZmNCksCi0gICAgIEMoNmQ0NzFiNWY5Y2EyZTJkMSksIEMo
ODAyYzg2ZDZmNDk1YjliYiksIEMoYTFmOWI5YjIyYjNiZTcwNCksCiAgICAgIEMoOGIwMGY4OTEp
fSwKICAgICB7QyhlMGU2ZmMwYjE2MjhhZjFkKSwgQygyOWJlNWZiNGMyN2EyOTQ5KSwgQygxYzNm
NzgxYTYwNGQzNjMwKSwKLSAgICAgQyhjNGFmN2ZhZjg4MzAzM2FhKSwgQyg5YmQyOTZjNGU5NDUz
Y2FjKSwgQyhjYTQ1NDI2YzFmN2UzM2Y5KSwKLSAgICAgQyhhNmJiZGNmNzA3NGQ0MGM1KSwgQyhj
NGFmN2ZhZjg4MzAzM2FhKSwgQyg5YmQyOTZjNGU5NDUzY2FjKSwKLSAgICAgQyhjYTQ1NDI2YzFm
N2UzM2Y5KSwgQyhhNmJiZGNmNzA3NGQ0MGM1KSwgQyhlMTNhMDA1ZDcxNDI3MzNiKSwKLSAgICAg
QyhjMDJiNzkyNWM1ZWVlZmFmKSwgQyhkMzkxMTlhNjA0NDFlMmQ1KSwgQygzYzI0YzcxMGRmOGY0
ZDQzKSwKICAgICAgQygxNmUxMTRmMyl9LAogICAgIHtDKDIwNTg5Mjc2NjRhZGZkOTMpLCBDKDZl
OGY5NjhjNzk2M2JhYTUpLCBDKGFmM2RjZWQ2ZmZmN2MzOTQpLAotICAgICBDKDQyZTM0Y2YzZDUz
Yzc4NzYpLCBDKDljZGRiYjI2NDI0ZGM1ZSksIEMoNjRmNjM0MGE2ZDhlZGRhZCksCi0gICAgIEMo
MjE5NmU0ODhlYjJhM2E0YiksIEMoNDJlMzRjZjNkNTNjNzg3NiksIEMoOWNkZGJiMjY0MjRkYzVl
KSwKLSAgICAgQyg2NGY2MzQwYTZkOGVkZGFkKSwgQygyMTk2ZTQ4OGViMmEzYTRiKSwgQyhjOWU5
ZGEyNTkxMWExNmZkKSwKLSAgICAgQyhlMjFiNDY4M2YzZTE5NmE4KSwgQyhjYjgwYmYxYTRjNmZk
YmI0KSwgQyg1Mzc5MmU5YjNjM2U2N2Y4KSwKICAgICAgQyhkNmI2ZGFkYyl9LAogICAgIHtDKGRj
MTA3Mjg1ZmQ4ZTFhZjcpLCBDKGE4NjQxYTA2MDkzMjFmM2YpLCBDKGRiMDZlODlmZmRjNTQ0NjYp
LAotICAgICBDKGJjYzdhODFlZDU0MzI0MjkpLCBDKGI2ZDdiZGM2YWQyZTgxZjEpLCBDKDkzNjA1
ZWM0NzFhYTM3ZGIpLAotICAgICBDKGEyYTczZjhhODVhOGUzOTcpLCBDKGJjYzdhODFlZDU0MzI0
MjkpLCBDKGI2ZDdiZGM2YWQyZTgxZjEpLAotICAgICBDKDkzNjA1ZWM0NzFhYTM3ZGIpLCBDKGEy
YTczZjhhODVhOGUzOTcpLCBDKDEwYTAxMmI4Y2E3YWMyNGIpLAotICAgICBDKGFhYzVmZDYzMzUx
NTk1Y2YpLCBDKDViYjRjNjQ4YTIyNmRlYTApLCBDKDlkMTFlY2IyYjVjMDVjNWYpLAogICAgICBD
KDg5N2UyMGFjKX0sCi0gICAge0MoZmJiYTFhZmUyZTMyODBmMSksIEMoNzU1YTVmMzkyZjA3ZmNl
KSwgQyg5ZTQ0YTlhMTU0MDI4MDlhKSwKLSAgICAgQyg2MjI2YTMyZTI1MDk5ODQ4KSwgQyhlYTg5
NTY2MWVjZjUzMDA0KSwgQyg0ZDdlMDE1OGRiMjIyOGI5KSwKLSAgICAgQyhlNWE3ZDgyOTIyZjY5
ODQyKSwgQyg2MjI2YTMyZTI1MDk5ODQ4KSwgQyhlYTg5NTY2MWVjZjUzMDA0KSwKLSAgICAgQyg0
ZDdlMDE1OGRiMjIyOGI5KSwgQyhlNWE3ZDgyOTIyZjY5ODQyKSwgQygyY2VhNzcxM2I2OTg0MGNh
KSwKLSAgICAgQygxOGRlN2I5YWU5MzgzNzViKSwgQyhmMTI3Y2NhMDhmM2NjNjY1KSwgQyhiMWMy
MmQ3Mjc2NjVhZDIpLCBDKGY5OTZlMDVkKX0sCisgICAge0MoZmJiYTFhZmUyZTMyODBmMSksIEMo
NzU1YTVmMzkyZjA3ZmNlKSwgQyg5ZTQ0YTlhMTU0MDI4MDlhKSwgQyhmOTk2ZTA1ZCl9LAogICAg
IHtDKGJmYTEwNzg1ZGRjMTAxMWIpLCBDKGI2ZTFjNGQyZjY3MGY3ZGUpLCBDKDUxN2Q5NTYwNGU0
ZmNjMWYpLAotICAgICBDKGNhNjU1MmEwZGZiODJjNzMpLCBDKGIwMjRjZGYwOWUzNGJhMDcpLCBD
KDY2Y2Q4YzVhOTVkNzM5M2IpLAotICAgICBDKGUzOTM5YWNmNzkwZDRhNzQpLCBDKGNhNjU1MmEw
ZGZiODJjNzMpLCBDKGIwMjRjZGYwOWUzNGJhMDcpLAotICAgICBDKDY2Y2Q4YzVhOTVkNzM5M2Ip
LCBDKGUzOTM5YWNmNzkwZDRhNzQpLCBDKDk3ODI3NTQxYTFlZjA1MWUpLAotICAgICBDKGFjMmZj
ZTQ3ZWJlNjUwMGMpLCBDKGIzZjA2ZDNiZGRmM2JkNmEpLCBDKDFkNzRhZmIyNWUxY2U1ZmUpLAog
ICAgICBDKGM0MzA2YWY2KX0sCi0gICAge0MoNTM0Y2MzNWYwZWUxZWI0ZSksIEMoYjcwMzgyMGYx
ZjNiM2RjZSksIEMoODg0YWExNjRjZjIyMzYzKSwKLSAgICAgQyhmMTRlZjdmNDdkOGE1N2EzKSwg
Qyg4MGQxZjg2ZjJlMDYxZDdjKSwgQyg0MDFkNmMyZjE1MWI1YTYyKSwKLSAgICAgQyhlOTg4NDYw
MjI0MTA4OTQ0KSwgQyhmMTRlZjdmNDdkOGE1N2EzKSwgQyg4MGQxZjg2ZjJlMDYxZDdjKSwKLSAg
ICAgQyg0MDFkNmMyZjE1MWI1YTYyKSwgQyhlOTg4NDYwMjI0MTA4OTQ0KSwgQyg3ODA0ZDQxMzVm
NjhjZDE5KSwKLSAgICAgQyg1NDg3YjRiMzllNjlmZThlKSwgQyg4Y2M1OTk5MDE1MzU4YTI3KSwg
Qyg4ZjM3MjliNjFjMmQ1NjAxKSwKLSAgICAgQyg2ZGNhZDQzMyl9LAotICAgIHtDKDdjYTZlMzkz
Mzk5NWRhYyksIEMoZmQxMThjNzdkYWE4MTg4KSwgQygzYWNlYjdiNWU3ZGE2NTQ1KSwKLSAgICAg
QyhjODM4OTc5OTQ0NTQ4MGRiKSwgQyg1Mzg5ZjVkZjhhYWNkNTBkKSwgQyhkMTM2NTgxZjIyZmFi
NWYpLAotICAgICBDKGMyZjMxZjg1OTkxZGE0MTcpLCBDKGM4Mzg5Nzk5NDQ1NDgwZGIpLCBDKDUz
ODlmNWRmOGFhY2Q1MGQpLAotICAgICBDKGQxMzY1ODFmMjJmYWI1ZiksIEMoYzJmMzFmODU5OTFk
YTQxNyksIEMoYWVmYmY5ZmY4NDAzNWE0MyksCi0gICAgIEMoOGFjY2JhZjQ0YWRhZGQ3YyksIEMo
ZTU3ZjM2NTczNDRiNjdmNSksIEMoMjE0OTBlNWU4YWJkZWM1MSksCi0gICAgIEMoM2MwNzM3NGQp
fSwKKyAgICB7Qyg1MzRjYzM1ZjBlZTFlYjRlKSwgQyhiNzAzODIwZjFmM2IzZGNlKSwgQyg4ODRh
YTE2NGNmMjIzNjMpLCBDKDZkY2FkNDMzKX0sCisgICAge0MoN2NhNmUzOTMzOTk1ZGFjKSwgQyhm
ZDExOGM3N2RhYTgxODgpLCBDKDNhY2ViN2I1ZTdkYTY1NDUpLCBDKDNjMDczNzRkKX0sCiAgICAg
e0MoZjBkNjA0NGY2ZWZkNzU5OCksIEMoZTA0NGQ2YmE0MzY5ODU2ZSksIEMoOTE5NjhlNGY4Yzhh
MWE0YyksCi0gICAgIEMoNzBiZDE5Njg5OTZiZmZjMiksIEMoNGM2MTNkZTVkOGFiMzJhYyksIEMo
ZmUxZjRmOTcyMDZmNzlkOCksCi0gICAgIEMoYWMwNDM0ZjJjNGUyMTNhOSksIEMoNzBiZDE5Njg5
OTZiZmZjMiksIEMoNGM2MTNkZTVkOGFiMzJhYyksCi0gICAgIEMoZmUxZjRmOTcyMDZmNzlkOCks
IEMoYWMwNDM0ZjJjNGUyMTNhOSksIEMoNzQ5MGU5ZDgyY2ZlMjJjYSksCi0gICAgIEMoNWZiYmY3
Zjk4NzQ1NDIzOCksIEMoYzM5ZTBkYzgzNjhjZTk0OSksIEMoMjIyMDFkMzg5NDY3NmM3MSksCiAg
ICAgIEMoZjBmNDYwMmMpfSwKICAgICB7QygzZDY5ZTUyMDQ5ODc5ZDYxKSwgQyg3NjYxMDYzNmVh
OWY3NGZlKSwgQyhlOWJmNTYwMmY4OTMxMGMwKSwKLSAgICAgQyg4ZWViMTc3YTg2MDUzYzExKSwg
QyhlMzkwMTIyYzM0NWYzNGEyKSwgQygxZTMwZTQ3YWZiYWFmOGQ2KSwKLSAgICAgQyg3Yjg5MmY2
OGU1ZjkxNzMyKSwgQyg4ZWViMTc3YTg2MDUzYzExKSwgQyhlMzkwMTIyYzM0NWYzNGEyKSwKLSAg
ICAgQygxZTMwZTQ3YWZiYWFmOGQ2KSwgQyg3Yjg5MmY2OGU1ZjkxNzMyKSwgQyhiODc5MjI1MjVm
YTQ0MTU4KSwKLSAgICAgQyhmNDQwYTFlZTFhMWE3NjZiKSwgQyhlZThlZmFkMjc5ZDA4YzVjKSwg
Qyg0MjFmOTEwYzViNjAyMTZlKSwKICAgICAgQygzZTFlYTA3MSl9LAotICAgIHtDKDc5ZGEyNDJh
MTZhY2FlMzEpLCBDKDE4M2M1ZjQzOGUyOWQ0MCksIEMoNmQzNTE3MTBhZTkyZjNkZSksCi0gICAg
IEMoMjcyMzNiMjhiNWIxMWU5YiksIEMoYzdkZmU4OTg4YTk0MjcwMCksIEMoNTcwZWQxMWM0YWJh
ZDk4NCksCi0gICAgIEMoNGI0YzA0NjMyZjQ4MzExYSksIEMoMjcyMzNiMjhiNWIxMWU5YiksIEMo
YzdkZmU4OTg4YTk0MjcwMCksCi0gICAgIEMoNTcwZWQxMWM0YWJhZDk4NCksIEMoNGI0YzA0NjMy
ZjQ4MzExYSksIEMoMTJmMzMyMzU0NDJjYmY5KSwKLSAgICAgQyhhMzUzMTVjYTBiNWI4Y2RiKSwg
QyhkOGFiZGU2MmVhZDU1MDZiKSwgQyhmYzBmY2Y4NDc4YWQ1MjY2KSwKLSAgICAgQyg2NzU4MGYw
Yyl9LAorICAgIHtDKDc5ZGEyNDJhMTZhY2FlMzEpLCBDKDE4M2M1ZjQzOGUyOWQ0MCksIEMoNmQz
NTE3MTBhZTkyZjNkZSksIEMoNjc1ODBmMGMpfSwKICAgICB7Qyg0NjFjODI2NTZhNzRmYjU3KSwg
QyhkODRiNDkxYjI3NWFhMGY3KSwgQyg4ZjI2MmNiMjlhNmViOGIyKSwKLSAgICAgQyg0OWZhMzA3
MGJjN2IwNmQwKSwgQyhmMTJlZDQ0NmJkMGMwNTM5KSwgQyg2ZDQzYWM1ZDFkZDRiMjQwKSwKLSAg
ICAgQyg3NjA5NTI0ZmU5MGJlYzkzKSwgQyg0OWZhMzA3MGJjN2IwNmQwKSwgQyhmMTJlZDQ0NmJk
MGMwNTM5KSwKLSAgICAgQyg2ZDQzYWM1ZDFkZDRiMjQwKSwgQyg3NjA5NTI0ZmU5MGJlYzkzKSwg
QygzOTFjMmIyZTA3NmVjMjQxKSwKLSAgICAgQyhmNWU2MmRlZGE3ODM5ZjdiKSwgQygzYzdiMzE4
NmExMGQ4NzBmKSwgQyg3N2VmNGYyY2JhNGYxMDA1KSwKICAgICAgQyg0ZTEwOTQ1NCl9LAotICAg
IHtDKDUzYzFhNjZkMGIxMzAwMyksIEMoNzMxZjA2MGU2ZmU3OTdmYyksIEMoZGFhNTY4MTE3OTEz
NzFlMyksCi0gICAgIEMoNTc0NjYwNDZjZjY4OTZlZCksIEMoOGFjMzdlMGU4YjI1YjBjNiksIEMo
M2U2MDc0YjUyYWQzY2YxOCksCi0gICAgIEMoYWE0OTFjZTdiNDVkYjI5NyksIEMoNTc0NjYwNDZj
ZjY4OTZlZCksIEMoOGFjMzdlMGU4YjI1YjBjNiksCi0gICAgIEMoM2U2MDc0YjUyYWQzY2YxOCks
IEMoYWE0OTFjZTdiNDVkYjI5NyksIEMoZjdhOTIyN2M1ZTVlMjJjMyksCi0gICAgIEMoM2Q5MmUw
ODQxZTI5Y2UyOCksIEMoMmQzMGRhNWIyODU5ZTU5ZCksIEMoZmYzN2ZhMWM5Y2JmYWZjMiksCi0g
ICAgIEMoODhhNDc0YTcpfSwKLSAgICB7QyhkM2EyZWZlYzBmMDQ3ZTkpLCBDKDFjYWJjZTU4ODUz
ZTU4ZWEpLCBDKDdhMTdiMmVhZTMyNTZiZTQpLAotICAgICBDKGMyZGNjOTc1OGM5MTAxNzEpLCBD
KGNiNWNkZGFlZmY0ZGRiNDApLCBDKDVkN2NjNTg2OWJhZWZlZjEpLAotICAgICBDKDk2NDRjNTg1
M2FmOWNmZWIpLCBDKGMyZGNjOTc1OGM5MTAxNzEpLCBDKGNiNWNkZGFlZmY0ZGRiNDApLAotICAg
ICBDKDVkN2NjNTg2OWJhZWZlZjEpLCBDKDk2NDRjNTg1M2FmOWNmZWIpLCBDKDI1NWM5NjgxODQ2
OTRlZTEpLAotICAgICBDKDRlNGQ3MjZlZGEzNjA5MjcpLCBDKDdkMjdkZDViNmQxMDAzNzcpLCBD
KDlhMzAwZTIwMjBkZGVhMmMpLCBDKDViNWJlZGQpfSwKKyAgICB7Qyg1M2MxYTY2ZDBiMTMwMDMp
LCBDKDczMWYwNjBlNmZlNzk3ZmMpLCBDKGRhYTU2ODExNzkxMzcxZTMpLCBDKDg4YTQ3NGE3KX0s
CisgICAge0MoZDNhMmVmZWMwZjA0N2U5KSwgQygxY2FiY2U1ODg1M2U1OGVhKSwgQyg3YTE3YjJl
YWUzMjU2YmU0KSwgQyg1YjViZWRkKX0sCiAgICAge0MoNDNjNjRkNzQ4NGY3ZjliMiksIEMoNWRh
MDAyYjY0YWFmYWViNyksIEMoYjU3NmMxZTQ1ODAwYTcxNiksCi0gICAgIEMoM2VlODRkM2Q1YjRj
YTAwYiksIEMoNWNiYzZkNzAxODk0YzNmOSksIEMoZDllOTQ2ZjVhZTFjYTk1KSwKLSAgICAgQygy
NGNhMDZlNjdmMGIxODMzKSwgQygzZWU4NGQzZDViNGNhMDBiKSwgQyg1Y2JjNmQ3MDE4OTRjM2Y5
KSwKLSAgICAgQyhkOWU5NDZmNWFlMWNhOTUpLCBDKDI0Y2EwNmU2N2YwYjE4MzMpLCBDKDM0MTNk
NDZiNDE1MjY1MGUpLAotICAgICBDKGNiZGZkYmMyYWI1MTZmOWMpLCBDKDJhYWQ4YWNiNzM5ZTBj
NmMpLCBDKDJiZmM5NTBkOWY5ZmE5NzcpLAogICAgICBDKDFhYWRkZmE3KX0sCiAgICAge0MoYTdk
ZWM2YWQ4MWNmN2ZhMSksIEMoMTgwYzFhYjcwODY4MzA2MyksIEMoOTVlMGZkNzAwOGQ2N2NmZiks
Ci0gICAgIEMoNmIxMWM1MDczNjg3MjA4KSwgQyg3ZTBhNTdkZTBkNDUzZjMpLCBDKGU0OGMyNjdk
NGY2NDY4NjcpLAotICAgICBDKDIxNjhlOTEzNjM3NWY5Y2IpLCBDKDZiMTFjNTA3MzY4NzIwOCks
IEMoN2UwYTU3ZGUwZDQ1M2YzKSwKLSAgICAgQyhlNDhjMjY3ZDRmNjQ2ODY3KSwgQygyMTY4ZTkx
MzYzNzVmOWNiKSwgQyg2NGRhMTk0YWVlZWE3ZmRmKSwKLSAgICAgQyhhM2I5ZjAxZmE1ODg1Njc4
KSwgQyhjMzE2ZjhlZTJlYjJiZDE3KSwgQyhhN2U0ZDgwZjgzZTQ0MjdmKSwKICAgICAgQyg1YmUw
N2ZkOCl9LAotICAgIHtDKDU0MDhhMWRmOTlkNGFmZiksIEMoYjk1NjVlNTg4NzQwZjZiZCksIEMo
YWJmMjQxODEzYjA4MDA2ZSksCi0gICAgIEMoN2RhOWU4MWQ4OWZkYTdhZCksIEMoMjc0MTU3Y2Fi
ZTcxNDQwZCksIEMoMmMyMmQ5YTQ4MGIzMzFmNyksCi0gICAgIEMoZTgzNWM4YWM3NDY0NzJkNSks
IEMoN2RhOWU4MWQ4OWZkYTdhZCksIEMoMjc0MTU3Y2FiZTcxNDQwZCksCi0gICAgIEMoMmMyMmQ5
YTQ4MGIzMzFmNyksIEMoZTgzNWM4YWM3NDY0NzJkNSksIEMoMjAzOGNlODE3YTIwMWFlNCksCi0g
ICAgIEMoNDZmMzI4OWRmZTFjNWU0MCksIEMoNDM1NTc4YTQyZDRiN2M1NiksIEMoZjk2ZDlmNDA5
ZmNmNTYxKSwgQyhjYmNhODYwNil9LAorICAgIHtDKDU0MDhhMWRmOTlkNGFmZiksIEMoYjk1NjVl
NTg4NzQwZjZiZCksIEMoYWJmMjQxODEzYjA4MDA2ZSksIEMoY2JjYTg2MDYpfSwKICAgICB7Qyhh
OGIyN2E2YmNhZWVlZDRiKSwgQyhhZWMxZWVkZWQ2YTg3ZTM5KSwgQyg5ZGFmMjQ2ZDZmZWQ4MzI2
KSwKLSAgICAgQyhkNDVhOTM4Yjc5ZjU0ZThmKSwgQygzNjZiMjE5ZDZkMTMzZTQ4KSwgQyg1YjE0
YmUzYzI1YzQ5NDA1KSwKLSAgICAgQyhmZGQ3OTFkNDg4MTFhNTcyKSwgQyhkNDVhOTM4Yjc5ZjU0
ZThmKSwgQygzNjZiMjE5ZDZkMTMzZTQ4KSwKLSAgICAgQyg1YjE0YmUzYzI1YzQ5NDA1KSwgQyhm
ZGQ3OTFkNDg4MTFhNTcyKSwgQygzZGU2N2I4ZDllOTVkMzM1KSwKLSAgICAgQyg5MDNjMDEzMDdj
ZmJlZWQ1KSwgQyhhZjdkNjVmMzIyNzRmMWQxKSwgQyg0ZGJhMTQxYjVmYzAzYzQyKSwKICAgICAg
QyhiZGU2NGQwMSl9LAogICAgIHtDKDlhOTUyYTgyNDZmZGMyNjkpLCBDKGQwZGNmY2FjNzRlZjI3
OGMpLCBDKDI1MGY3MTM5ODM2ZjBmMWYpLAotICAgICBDKGM4M2QzYzVmNGU1ZjAzMjApLCBDKDY5
NGU3YWRlYjJiZjMyZTUpLCBDKDdhZDA5NTM4YTNkYTI3ZjUpLAotICAgICBDKDJiNWMxOGY5MzRh
YTUzMDMpLCBDKGM4M2QzYzVmNGU1ZjAzMjApLCBDKDY5NGU3YWRlYjJiZjMyZTUpLAotICAgICBD
KDdhZDA5NTM4YTNkYTI3ZjUpLCBDKDJiNWMxOGY5MzRhYTUzMDMpLCBDKGM0ZGFkNzcwM2QzNDMy
NmUpLAotICAgICBDKDgyNTU2OWUyYmNkYzZhMjUpLCBDKGI4M2QyNjc3MDljYTkwMGQpLCBDKDQ0
ZWQwNTE1MWY1ZDc0ZTYpLAogICAgICBDKGVlOTBjZjMzKX0sCiAgICAge0MoYzkzMDg0MWQxZDg4
Njg0ZiksIEMoNWViNjZlYjE4YjdmOTY3MiksIEMoZTQ1NWQ0MTMwMDhhMjU0NiksCi0gICAgIEMo
YmMyNzFiYzBkZjE0ZDY0NyksIEMoYjA3MTEwMGE5ZmYyZWRiYiksIEMoMmIxYTRjMWNjMzFhMTE5
YSksCi0gICAgIEMoYjVkN2NhYTFiZDk0NmNlZiksIEMoYmMyNzFiYzBkZjE0ZDY0NyksIEMoYjA3
MTEwMGE5ZmYyZWRiYiksCi0gICAgIEMoMmIxYTRjMWNjMzFhMTE5YSksIEMoYjVkN2NhYTFiZDk0
NmNlZiksIEMoZTAyNjIzYWUxMGY0YWFkZCksCi0gICAgIEMoZDc5ZjYwMDM4OWNkMDZmZCksIEMo
MWU4ZGE3OTY1MzAzZTYyYiksIEMoODZmNTBlMTBlZWFiMDkyNSksCiAgICAgIEMoNDMwNWMzY2Up
fSwKLSAgICB7Qyg5NGRjNjk3MWUzY2YwNzFhKSwgQyg5OTRjNzAwM2I3M2IyYjM0KSwgQyhlYTE2
ZTg1OTc4Njk0ZTUpLAotICAgICBDKDMzNmMxYjU5YTFmYzE5ZjYpLCBDKGMxNzNhY2FlY2M0NzEz
MDUpLCBDKGRiMTI2N2QyNGYzZjNmMzYpLAotICAgICBDKGU5YTVlZTk4NjI3YTZlNzgpLCBDKDMz
NmMxYjU5YTFmYzE5ZjYpLCBDKGMxNzNhY2FlY2M0NzEzMDUpLAotICAgICBDKGRiMTI2N2QyNGYz
ZjNmMzYpLCBDKGU5YTVlZTk4NjI3YTZlNzgpLCBDKDcxOGYzMzQyMDQzMDVhZTUpLAotICAgICBD
KGUzYjUzYzE0OGY5OGQyMmMpLCBDKGExODQwMTJkZjg0ODkyNiksIEMoNmU5NjM4NjEyN2Q1MTE4
MyksIEMoNGIzYTFkNzYpfSwKLSAgICB7Qyg3ZmM5ODAwNmUyNWNhYzkpLCBDKDc3ZmVlMDQ4NGNk
YTg2YTcpLCBDKDM3NmVjM2Q0NDcwNjA0NTYpLAotICAgICBDKDg0MDY0YTZkY2Y5MTYzNDApLCBD
KGZiZjU1YTI2NzkwZTBlYmIpLCBDKDJlN2Y4NDE1MWMzMWE1YzIpLAotICAgICBDKDlmN2Y2ZDc2
Yjk1MGY5YmYpLCBDKDg0MDY0YTZkY2Y5MTYzNDApLCBDKGZiZjU1YTI2NzkwZTBlYmIpLAotICAg
ICBDKDJlN2Y4NDE1MWMzMWE1YzIpLCBDKDlmN2Y2ZDc2Yjk1MGY5YmYpLCBDKDEyNWUwOTRmYmVl
MmIxNDYpLAotICAgICBDKDU3MDZhYTcyYjJlZWY3YzIpLCBDKDFjNGEyZGFhOTA1ZWU2NmUpLCBD
KDgzZDQ4MDI5YjU0NTE2OTQpLAotICAgICBDKGE4YmI2ZDgwKX0sCi0gICAge0MoYmQ3ODFjNDQ1
NDEwM2Y2KSwgQyg2MTIxOTczMjJmNDljOTMxKSwgQyhiOWNmMTdmZDdlNTQ2MmQ1KSwKLSAgICAg
QyhlMzhlNTI2Y2QzMzI0MzY0KSwgQyg4NWYyYjYzYTViNWU4NDBhKSwgQyg0ODVkN2NlZjVhYWFk
ZDg3KSwKLSAgICAgQyhkMmI4MzdhNDYyZjZkYjZkKSwgQyhlMzhlNTI2Y2QzMzI0MzY0KSwgQyg4
NWYyYjYzYTViNWU4NDBhKSwKLSAgICAgQyg0ODVkN2NlZjVhYWFkZDg3KSwgQyhkMmI4MzdhNDYy
ZjZkYjZkKSwgQygzZTQxY2VmMDMxNTIwZDlhKSwKLSAgICAgQyg4MmRmNzM5MDJkN2Y2N2UpLCBD
KDNiYTZmZDU0YzE1MjU3Y2IpLCBDKDIyZjkxZjA3OWJlNDJkNDApLCBDKDFmOWZhNjA3KX0sCisg
ICAge0MoOTRkYzY5NzFlM2NmMDcxYSksIEMoOTk0YzcwMDNiNzNiMmIzNCksIEMoZWExNmU4NTk3
ODY5NGU1KSwgQyg0YjNhMWQ3Nil9LAorICAgIHtDKDdmYzk4MDA2ZTI1Y2FjOSksIEMoNzdmZWUw
NDg0Y2RhODZhNyksIEMoMzc2ZWMzZDQ0NzA2MDQ1NiksIEMoYThiYjZkODApfSwKKyAgICB7Qyhi
ZDc4MWM0NDU0MTAzZjYpLCBDKDYxMjE5NzMyMmY0OWM5MzEpLCBDKGI5Y2YxN2ZkN2U1NDYyZDUp
LCBDKDFmOWZhNjA3KX0sCiAgICAge0MoZGE2MGU2YjE0NDc5ZjlkZiksIEMoM2JkY2NmNjllY2Ux
Njc5MiksIEMoMThlYmY0NWM0ZmVjZmRjOSksCi0gICAgIEMoMTY4MThlZTlkMzhjNjY2NCksIEMo
NTUxOWZhOWExZTM1YTMyOSksIEMoY2JkMDAwMWU0YjA4ZWQ4KSwKLSAgICAgQyg0MWE5NjVlMzdh
MGM3MzFiKSwgQygxNjgxOGVlOWQzOGM2NjY0KSwgQyg1NTE5ZmE5YTFlMzVhMzI5KSwKLSAgICAg
QyhjYmQwMDAxZTRiMDhlZDgpLCBDKDQxYTk2NWUzN2EwYzczMWIpLCBDKDY2ZTdiNWRjY2ExY2Ey
OGYpLAotICAgICBDKDk2M2IyZDk5MzYxNDM0N2QpLCBDKDliNmZjNmY0MWQ0MTExMDYpLCBDKGFh
YWVjYWNjZjc4NDhjMGMpLAogICAgICBDKDhkMGU0ZWQyKX0sCi0gICAge0MoNGNhNTZhMzQ4YjZj
NGQzKSwgQyg2MDYxODUzN2MzODcyNTE0KSwgQygyZmJiOWYwZTY1ODcxYjA5KSwKLSAgICAgQygz
MDI3ODAxNjgzMGRkZDQzKSwgQyhmMDQ2NjQ2ZDkwMTJlMDc0KSwgQyhjNjJhNTgwNGY2ZTdjOWRh
KSwKLSAgICAgQyg5OGQ1MWY1ODMwZTJiYzFlKSwgQygzMDI3ODAxNjgzMGRkZDQzKSwgQyhmMDQ2
NjQ2ZDkwMTJlMDc0KSwKLSAgICAgQyhjNjJhNTgwNGY2ZTdjOWRhKSwgQyg5OGQ1MWY1ODMwZTJi
YzFlKSwgQyg3YjJjYmU1ZDM3ZTNmMjllKSwKLSAgICAgQyg3YjhjM2VkNTBiZGE0YWEwKSwgQygz
ZWE2MGNjMjQ2MzllMDM4KSwgQyhmNzcwNmRlOWZiMGI1ODAxKSwKLSAgICAgQygxYmYzMTM0Nyl9
LAorICAgIHtDKDRjYTU2YTM0OGI2YzRkMyksIEMoNjA2MTg1MzdjMzg3MjUxNCksIEMoMmZiYjlm
MGU2NTg3MWIwOSksIEMoMWJmMzEzNDcpfSwKICAgICB7QyhlYmQyMmQ0YjcwOTQ2NDAxKSwgQyg2
ODYzNjAyYmY3MTM5MDE3KSwgQyhjMGIxYWM0ZTExYjAwNjY2KSwKLSAgICAgQyg3ZDI3ODJiODJi
ZDQ5NGI2KSwgQyg5NzE1OWJhMWMyNmIzMDRiKSwgQyg0MmIzYjBmZDQzMWIyYWMyKSwKLSAgICAg
QyhmYWE4MWY4MjY5MWM4MzBjKSwgQyg3ZDI3ODJiODJiZDQ5NGI2KSwgQyg5NzE1OWJhMWMyNmIz
MDRiKSwKLSAgICAgQyg0MmIzYjBmZDQzMWIyYWMyKSwgQyhmYWE4MWY4MjY5MWM4MzBjKSwgQyg3
Y2M2NDQ5MjM0YzdlMTg1KSwKLSAgICAgQyhhZWFhNmZhNjQzY2E4NmE1KSwgQygxNDEyZGIxYzBm
MmUwMTMzKSwgQyg0ZGYyZmUzZTQwNzI5MzRmKSwKICAgICAgQygxYWUzZmM1Yil9LAotICAgIHtD
KDNjYzQ2OTNkNmNiY2IwYyksIEMoNTAxNjg5ZWExYzcwZmZhKSwgQygxMGE0MzUzZTljODllMzY0
KSwKLSAgICAgQyg1OGM4YWJhNzQ3NWUyZDk1KSwgQygzZTJmMjkxNjk4Yzk0MjdhKSwgQyhlODcx
MGQxOWM5ZGU5ZTQxKSwKLSAgICAgQyg2NWRkYTIyZWIwNGNmOTUzKSwgQyg1OGM4YWJhNzQ3NWUy
ZDk1KSwgQygzZTJmMjkxNjk4Yzk0MjdhKSwKLSAgICAgQyhlODcxMGQxOWM5ZGU5ZTQxKSwgQyg2
NWRkYTIyZWIwNGNmOTUzKSwgQyhkNzcyOWM0OGMyNTBjZmZhKSwKLSAgICAgQyhlZjc2MTYyYjJk
ZGZiYTRiKSwgQyg1MjM3MWUxN2Y0ZDUxZjZkKSwgQyhkZGQwMDIxMTJmZjBjODMzKSwKLSAgICAg
Qyg0NTljMzkzMCl9LAorICAgIHtDKDNjYzQ2OTNkNmNiY2IwYyksIEMoNTAxNjg5ZWExYzcwZmZh
KSwgQygxMGE0MzUzZTljODllMzY0KSwgQyg0NTljMzkzMCl9LAogICAgIHtDKDM4OTA4ZTQzZjdi
YTVlZjApLCBDKDFhYjAzNWQ0ZTc3ODFlNzYpLCBDKDQxZDEzM2U4YzBhNjhmZjcpLAotICAgICBD
KGQxMDkwODkzYWZhYWI4YmMpLCBDKDk2YzRmZTY5MjI3NzI4MDcpLCBDKDQ1MjI0MjZjMmI0MjA1
ZWIpLAotICAgICBDKGVmYWQ5OWExMjYyZTdlMGQpLCBDKGQxMDkwODkzYWZhYWI4YmMpLCBDKDk2
YzRmZTY5MjI3NzI4MDcpLAotICAgICBDKDQ1MjI0MjZjMmI0MjA1ZWIpLCBDKGVmYWQ5OWExMjYy
ZTdlMGQpLCBDKGM3Njk2MDI5YWJkYjQ2NWUpLAotICAgICBDKDRlMThlYWYwM2Q1MTc2NTEpLCBD
KGQwMDZiY2VkNTRjODZhYzgpLCBDKDQzMzAzMjZkMTAyMTg2MGMpLAogICAgICBDKGUwMGM0MTg0
KX0sCi0gICAge0MoMzQ5ODNjY2M2YWE0MDIwNSksIEMoMjE4MDJjYWQzNGU3MmJjNCksIEMoMTk0
M2U4ZmIzYzE3YmI4KSwKLSAgICAgQyhmYzk0NzE2N2Y2OWMwZGE1KSwgQyhhZTc5Y2ZkYjkxYjZm
NmMxKSwgQyg3YjI1MWQwNGMyNmNiZGEzKSwKLSAgICAgQygxMjhhMzNhNzkwNjBkMjVlKSwgQyhm
Yzk0NzE2N2Y2OWMwZGE1KSwgQyhhZTc5Y2ZkYjkxYjZmNmMxKSwKLSAgICAgQyg3YjI1MWQwNGMy
NmNiZGEzKSwgQygxMjhhMzNhNzkwNjBkMjVlKSwgQygxZWNhODQyZGJmZTAxOGRkKSwKLSAgICAg
Qyg1MGE0Y2QyZWUwYmE5YzYzKSwgQyhjMmY1Yzk3ZDgzOTk2ODJmKSwgQygzZjkyOWZjN2NiZThl
Y2JiKSwKLSAgICAgQyhmZmM3YTc4MSl9LAorICAgIHtDKDM0OTgzY2NjNmFhNDAyMDUpLCBDKDIx
ODAyY2FkMzRlNzJiYzQpLCBDKDE5NDNlOGZiM2MxN2JiOCksIEMoZmZjN2E3ODEpfSwKICAgICB7
Qyg4NjIxNWM0NWRjYWM5OTA1KSwgQyhlYTU0NmFmZTg1MWNhZTRiKSwgQyhkODViNjQ1N2U0ODll
Mzc0KSwKLSAgICAgQyhiNzYwOWM4ZTcwMzg2ZDY2KSwgQygzNmU2Y2NjMjc4ZDE2MzZkKSwgQygy
Zjg3MzMwN2MwOGU2YTFjKSwKLSAgICAgQygxMGYyNTJhNzU4NTA1Mjg5KSwgQyhiNzYwOWM4ZTcw
Mzg2ZDY2KSwgQygzNmU2Y2NjMjc4ZDE2MzZkKSwKLSAgICAgQygyZjg3MzMwN2MwOGU2YTFjKSwg
QygxMGYyNTJhNzU4NTA1Mjg5KSwgQyhjODk3NzY0NmU4MWFiNGI2KSwKLSAgICAgQyg4MDE3Yjc0
NWNkODAyMTNiKSwgQyg5NjA2ODdkYjM1OWJlYTApLCBDKGVmNGE0NzA2NjA3OTk0ODgpLCBDKDZh
MTI1NDgwKX0sCisgICAgIEMoNmExMjU0ODApfSwKICAgICB7Qyg0MjBmYzI1NWMzOGRiMTc1KSwg
QyhkNTAzY2QwZjNjMTIwOGQxKSwgQyhkNDY4NGU3NGM4MjVhMGJjKSwKLSAgICAgQyg0YzEwNTM3
NDQzMTUyZjNkKSwgQyg3MjA0NTFkM2M4OTVlMjVkKSwgQyhhZmY2MGM0ZDExZjUxM2ZkKSwKLSAg
ICAgQyg4ODFlOGQ2ZDJkNWZiOTUzKSwgQyg0YzEwNTM3NDQzMTUyZjNkKSwgQyg3MjA0NTFkM2M4
OTVlMjVkKSwKLSAgICAgQyhhZmY2MGM0ZDExZjUxM2ZkKSwgQyg4ODFlOGQ2ZDJkNWZiOTUzKSwg
Qyg5ZGVjMDM0YTA0M2YxZjU1KSwKLSAgICAgQyhlMjdhMGMyMmU3YmZiMzlkKSwgQygyMjIwYjk1
OTEyODMyNCksIEMoNTMyNDAyNzIxNTJkYmQ4YiksIEMoODhhMTUxMmIpfSwKKyAgICAgQyg4OGEx
NTEyYil9LAogICAgIHtDKDFkN2EzMWY1YmM4ZmUyZjkpLCBDKDQ3NjM5OTEwOTJkY2Y4MzYpLCBD
KGVkNjk1ZjU1Yjk3NDE2ZjQpLAotICAgICBDKGYyNjVlZGIwYzFjNDExZDcpLCBDKDMwZTFlOWVj
NTI2MmI3ZTYpLCBDKGMyYzNiYTA2MWNlNzk1N2EpLAotICAgICBDKGQ5NzVmOTNiODlhMTY0MDkp
LCBDKGYyNjVlZGIwYzFjNDExZDcpLCBDKDMwZTFlOWVjNTI2MmI3ZTYpLAotICAgICBDKGMyYzNi
YTA2MWNlNzk1N2EpLCBDKGQ5NzVmOTNiODlhMTY0MDkpLCBDKGU5ZDcwMzEyM2Y0MzQ1MGEpLAot
ICAgICBDKDQxMzgzZmVkZmVkNjdjODIpLCBDKDZlOWY0M2VjYmJiZDYwMDQpLCBDKGM3Y2NkMjNh
MjRlNzdiOCksIEMoNTQ5YmJiZTUpfSwKKyAgICAgQyg1NDliYmJlNSl9LAogICAgIHtDKDk0MTI5
YTg0YzM3NmEyNmUpLCBDKGMyNDVlODU5ZGMyMzE5MzMpLCBDKDFiOGY3NGZlY2Y5MTc0NTMpLAot
ICAgICBDKGU5MzY5ZDJlOTAwN2U3NGIpLCBDKGIxMzc1OTE1ZDExMzYwNTIpLCBDKDkyNmMyMDIx
ZmUxZDIzNTEpLAotICAgICBDKDFkOTQzYWRkYWFhMmU3ZTYpLCBDKGU5MzY5ZDJlOTAwN2U3NGIp
LCBDKGIxMzc1OTE1ZDExMzYwNTIpLAotICAgICBDKDkyNmMyMDIxZmUxZDIzNTEpLCBDKDFkOTQz
YWRkYWFhMmU3ZTYpLCBDKGY1ZjUxNTg2OWMyNDY3MzgpLAotICAgICBDKDdlMzA5Y2QwZTFjMGYy
YTApLCBDKDE1M2MzYzM2Y2Y1MjNlM2IpLCBDKDQ5MzFjNjY4NzJlYTY3NTgpLAogICAgICBDKGMx
MzNkMzhjKX0sCi0gICAge0MoMWQzYTk4MDlkYWIwNWM4ZCksIEMoYWRkZGViNGY3MWM5M2U4KSwg
QyhlZjM0MmViMzY2MzFlZGIpLAotICAgICBDKDMwMWQ3YTYxYzRiM2RiY2EpLCBDKDg2MTMzNmMz
ZjA1NTJkNjEpLCBDKDEyYzZkYjk0NzQ3MTMwMGYpLAotICAgICBDKGE2NzllZjBlZDc2MWRlYjkp
LCBDKDMwMWQ3YTYxYzRiM2RiY2EpLCBDKDg2MTMzNmMzZjA1NTJkNjEpLAotICAgICBDKDEyYzZk
Yjk0NzQ3MTMwMGYpLCBDKGE2NzllZjBlZDc2MWRlYjkpLCBDKDVmNzEzYjcyMGVmY2QxNDcpLAot
ICAgICBDKDM3YWMzMzBhMzMzYWE2YiksIEMoMzMwOWRjOWVjMTYxNmVlZiksIEMoNTIzMDFkN2E5
MDgwMjZiNSksIEMoZmNhY2UzNDgpfSwKKyAgICB7QygxZDNhOTgwOWRhYjA1YzhkKSwgQyhhZGRk
ZWI0ZjcxYzkzZTgpLCBDKGVmMzQyZWIzNjYzMWVkYiksIEMoZmNhY2UzNDgpfSwKICAgICB7Qyg5
MGZhM2NjYmQ2MDg0OGRhKSwgQyhkZmE2ZTA1OTViNTY5ZTExKSwgQyhlNTg1ZDA2N2ExZjUxMzVk
KSwKLSAgICAgQyg2Y2VmODY2ZWMyOTVhYmVhKSwgQyhjNDg2YzBkOTIxNGJlYjJkKSwgQyhkNmU0
OTA5NDRkNWZlMTAwKSwKLSAgICAgQyg1OWRmMzE3NWQ3MmM5ZjM4KSwgQyg2Y2VmODY2ZWMyOTVh
YmVhKSwgQyhjNDg2YzBkOTIxNGJlYjJkKSwKLSAgICAgQyhkNmU0OTA5NDRkNWZlMTAwKSwgQyg1
OWRmMzE3NWQ3MmM5ZjM4KSwgQygzZjIzYWViNGMwNGQxNDQzKSwKLSAgICAgQyg5YmYwNTE1Y2Q4
ZDI0NzcwKSwgQyg5NTg1NTRmNjBjY2FhZGUyKSwgQyg1MTgyODYzYzkwMTMyZmU4KSwKICAgICAg
QyhlZDdiNmY5YSl9LAogICAgIHtDKDJkYmI0ZmM3MWI1NTQ1MTQpLCBDKDk2NTBlMDRiODZiZTBm
ODIpLCBDKDYwZjIzMDRmYmE5Mjc0ZDMpLAotICAgICBDKGZjZmI5NDQzZTk5N2NhYiksIEMoZjEz
MzEwZDk2ZGVjMjc3MiksIEMoNzA5Y2FkMjA0NTI1MWFmMiksCi0gICAgIEMoYWZkMGQzMGNjNjM3
NmRhZCksIEMoZmNmYjk0NDNlOTk3Y2FiKSwgQyhmMTMzMTBkOTZkZWMyNzcyKSwKLSAgICAgQyg3
MDljYWQyMDQ1MjUxYWYyKSwgQyhhZmQwZDMwY2M2Mzc2ZGFkKSwgQyg1OWQ0YmVkMzBkNTUwZDBk
KSwKLSAgICAgQyg1ODAwNmQ0ZTIyZDhhYWQxKSwgQyhlZWUxMmQyMzYyZDFmMTNiKSwgQygzNWNm
MWQ3ZmFhZjFkMjI4KSwKICAgICAgQyg2ZDkwN2RkYSl9LAogICAgIHtDKGI5OGJmNDI3NGQxODM3
NGEpLCBDKDFiNjY5ZmQ0YzdmOWExOWEpLCBDKGIxZjU5NzJiODhiYTJiN2EpLAotICAgICBDKDcz
MTE5Yzk5ZTZkNTA4YmUpLCBDKDVkNDAzNmExODc3MzUzODUpLCBDKDhmYTY2ZTE5MmZkODM4MzEp
LAotICAgICBDKDJhYmY2NGI2YjU5MmVkNTcpLCBDKDczMTE5Yzk5ZTZkNTA4YmUpLCBDKDVkNDAz
NmExODc3MzUzODUpLAotICAgICBDKDhmYTY2ZTE5MmZkODM4MzEpLCBDKDJhYmY2NGI2YjU5MmVk
NTcpLCBDKGQ0NTAxZjk1ZGQ4NGIwOGMpLAotICAgICBDKGJmMTU1MjQzOWM4YmVhMDIpLCBDKDRm
NTZmZTc1M2JhN2UwYmEpLCBDKDRjYThkMzVjYzA1OGNmY2QpLAogICAgICBDKDdhNGQ0OGQ1KX0s
CiAgICAge0MoZDY3ODFkMGI1ZTE4ZWI2OCksIEMoYjk5MjkxM2NhZTA5YjUzMyksIEMoNThmNjAy
MWNhYWVlM2E0MCksCi0gICAgIEMoYWFmY2I3NzQ5N2I1YTIwYiksIEMoNDExODE5ZTVlNzliNzdh
MyksIEMoYmQ3Nzk1NzljNTFjNzdjZSksCi0gICAgIEMoNThkMTFmNWRjZjVkMDc1ZCksIEMoYWFm
Y2I3NzQ5N2I1YTIwYiksIEMoNDExODE5ZTVlNzliNzdhMyksCi0gICAgIEMoYmQ3Nzk1NzljNTFj
NzdjZSksIEMoNThkMTFmNWRjZjVkMDc1ZCksIEMoOWVhZTc2Y2RlMWNiNDIzMyksCi0gICAgIEMo
MzJmZTI1YTliZjY1Nzk3MCksIEMoMWMwYzgwNzk0OGVkYjA2YSksIEMoYjhmMjlhM2RmYWVlMjU0
ZCksCiAgICAgIEMoZTY4NmYzZGIpfSwKLSAgICB7QygyMjY2NTFjZjE4ZjQ4ODRjKSwgQyg1OTUw
NTJhODc0ZjBmNTFjKSwgQyhjOWI3NTE2MmIyM2JhYjQyKSwKLSAgICAgQygzZjQ0Zjg3M2JlNDgx
MmVjKSwgQyg0Mjc2NjJjMWRiZmFhN2IyKSwgQyhhMjA3ZmY5NjM4ZmI2NTU4KSwKLSAgICAgQyhh
NzM4ZDkxOWU0NWY1NTBmKSwgQygzZjQ0Zjg3M2JlNDgxMmVjKSwgQyg0Mjc2NjJjMWRiZmFhN2Iy
KSwKLSAgICAgQyhhMjA3ZmY5NjM4ZmI2NTU4KSwgQyhhNzM4ZDkxOWU0NWY1NTBmKSwgQyhjYjE4
NmVhMDU3MTdlN2Q2KSwKLSAgICAgQygxY2E3ZDY4YTU4NzFmZGMxKSwgQyg1ZDRjMTE5ZWE4ZWYz
NzUwKSwgQyg3MmI2YTEwZmEyZmY5NDA2KSwgQyhjY2U3YzU1KX0sCi0gICAge0MoYTczNGZiMDQ3
ZDMxNjJkNiksIEMoZTUyMzE3MGQyNDBiYTNhNSksIEMoMTI1YTY5NzI4MDk3MzBlOCksCi0gICAg
IEMoZDM5NmEyOTc3OTljMjRhMSksIEMoOGZlZTk5MmUzMDY5YmFkNSksIEMoMmUzYTAxYjA2OTdj
Y2Y1NyksCi0gICAgIEMoZWU5YzczOTBiZDkwMWNmYSksIEMoZDM5NmEyOTc3OTljMjRhMSksIEMo
OGZlZTk5MmUzMDY5YmFkNSksCi0gICAgIEMoMmUzYTAxYjA2OTdjY2Y1NyksIEMoZWU5YzczOTBi
ZDkwMWNmYSksIEMoNTZmMmQ5ZGEwYWYyOGFmMiksCi0gICAgIEMoM2ZkZDM3YjJmZTg0MzdjYiks
IEMoM2QxM2VlZWI2MGQ2YWVjMCksIEMoMjQzMmFlNjJlODAwYTVjZSksIEMoZjU4Yjk2Yil9LAor
ICAgIHtDKDIyNjY1MWNmMThmNDg4NGMpLCBDKDU5NTA1MmE4NzRmMGY1MWMpLCBDKGM5Yjc1MTYy
YjIzYmFiNDIpLCBDKGNjZTdjNTUpfSwKKyAgICB7QyhhNzM0ZmIwNDdkMzE2MmQ2KSwgQyhlNTIz
MTcwZDI0MGJhM2E1KSwgQygxMjVhNjk3MjgwOTczMGU4KSwgQyhmNThiOTZiKX0sCiAgICAge0Mo
YzZkZjYzNjRhMjRmNzVhMyksIEMoYzI5NGUyYzg0YzRmNWRmOCksIEMoYTg4ZGY2NWM2YTg5MzEz
YiksCi0gICAgIEMoODk1ZmU4NDQzMTgzZGE3NCksIEMoYzdmMmY2Zjg5NWE2NzMzNCksIEMoYTBk
NmI2YTUwNjY5MWQzMSksCi0gICAgIEMoMjRmNTE3MTJiNDU5YTlmMCksIEMoODk1ZmU4NDQzMTgz
ZGE3NCksIEMoYzdmMmY2Zjg5NWE2NzMzNCksCi0gICAgIEMoYTBkNmI2YTUwNjY5MWQzMSksIEMo
MjRmNTE3MTJiNDU5YTlmMCksIEMoMTczYTY5OTQ4MWI5ZTA4OCksCi0gICAgIEMoMWRlZTliNzdi
Y2JmNDVkMyksIEMoMzJiOThhNjQ2YTg2NjdkMCksIEMoM2FkY2Q0ZWUyOGY0MmEwZSksCiAgICAg
IEMoMWJiZjZmNjApfSwKLSAgICB7QyhkOGQxMzY0YzFmYmNkMTApLCBDKDJkN2NjN2Y1NDgzMmRl
YWEpLCBDKDRlMjJjODc2YTdjNTc2MjUpLAotICAgICBDKGEzZDVkMTEzN2QzMGM0YmQpLCBDKDFl
N2Q3MDZhNDliZGZiOWUpLCBDKGM2MzI4MmIyMGFkODZkYjIpLAotICAgICBDKGFlYzk3ZmEwNzkx
NmJmZDYpLCBDKGEzZDVkMTEzN2QzMGM0YmQpLCBDKDFlN2Q3MDZhNDliZGZiOWUpLAotICAgICBD
KGM2MzI4MmIyMGFkODZkYjIpLCBDKGFlYzk3ZmEwNzkxNmJmZDYpLCBDKDdjOWJhM2U1MmQ0NGY3
M2UpLAotICAgICBDKGFmNjJmZDI0NTgxMTE4NWQpLCBDKDhhOWQyZGFjZDg3Mzc2NTIpLCBDKGJk
MmNjZTI3N2Q1ZmJlYzApLAotICAgICBDKGNlNWUwY2MyKX0sCisgICAge0MoZDhkMTM2NGMxZmJj
ZDEwKSwgQygyZDdjYzdmNTQ4MzJkZWFhKSwgQyg0ZTIyYzg3NmE3YzU3NjI1KSwgQyhjZTVlMGNj
Mil9LAogICAgIHtDKGFhZTA2ZjkxNDZkYjg4NWYpLCBDKDM1OTg3MzY0NDFlMjgwZDkpLCBDKGZi
YTMzOWIxMTcwODNlNTUpLAotICAgICBDKGIyMmJmMDhkOWY4YWVjZjcpLCBDKGMxODI3MzBkZTMz
N2I5MjIpLCBDKDJiOWFkYzg3YTA0NTBhNDYpLAotICAgICBDKDE5MmMyOWE5Y2ZjMDBhYWQpLCBD
KGIyMmJmMDhkOWY4YWVjZjcpLCBDKGMxODI3MzBkZTMzN2I5MjIpLAotICAgICBDKDJiOWFkYzg3
YTA0NTBhNDYpLCBDKDE5MmMyOWE5Y2ZjMDBhYWQpLCBDKDlmZDczM2YxZDg0YTU5ZDkpLAotICAg
ICBDKGQ4NmJkNWM5ODM5YWNlMTUpLCBDKGFmMjBiNTczMDMxNzI4NzYpLCBDKDlmNjNjYjcxNjFi
NTM2NGMpLAogICAgICBDKDU4NGNmZDZmKX0sCiAgICAge0MoODk1NWVmMDc2MzFlM2JjYyksIEMo
N2Q3MDk2NWVhMzkyNmY4MyksIEMoMzlhZWQ0MTM0ZjhiMmRiNiksCi0gICAgIEMoODgyZWZjMjU2
MTcxNWE5YyksIEMoZWY4MTMyYTE4YTU0MDIyMSksIEMoYjIwYTNjODdhOGMyNTdjMSksCi0gICAg
IEMoZjU0MWI4NjI4ZmFkNmMyMyksIEMoODgyZWZjMjU2MTcxNWE5YyksIEMoZWY4MTMyYTE4YTU0
MDIyMSksCi0gICAgIEMoYjIwYTNjODdhOGMyNTdjMSksIEMoZjU0MWI4NjI4ZmFkNmMyMyksIEMo
OTU1MmFlZDU3YTZlMDQ2NyksCi0gICAgIEMoNGQ5ZmRkNTY4Njc2MTFhNyksIEMoYzMzMDI3OWJm
MjNiOWVhYiksIEMoNDRkYmJhZWEyZmNiOGViYSksCiAgICAgIEMoOGY5YmJjMzMpfSwKICAgICB7
QyhhZDYxMWM2MDljZmJlNDEyKSwgQyhkM2MwMGIxOGJmMjUzODc3KSwgQyg5MGIyMTcyZTFmM2Qw
YmZkKSwKLSAgICAgQygzNzFhOThiMmNiMDg0ODgzKSwgQygzM2EyODg2ZWU5ZjAwNjYzKSwgQyhi
ZTk1Njg4MThlZDZlNmJkKSwKLSAgICAgQyhmMjQ0YTBmYTI2NzM0NjlhKSwgQygzNzFhOThiMmNi
MDg0ODgzKSwgQygzM2EyODg2ZWU5ZjAwNjYzKSwKLSAgICAgQyhiZTk1Njg4MThlZDZlNmJkKSwg
QyhmMjQ0YTBmYTI2NzM0NjlhKSwgQyhiNDQ3MDUwYmQzZTU1OWU5KSwKLSAgICAgQyhkM2I2OTVk
YWU3YTEzMzgzKSwgQyhkZWQwYmI2NWJlNDcxMTg4KSwgQyhjYTNjN2EyYjc4OTIyY2FlKSwKICAg
ICAgQyhkNzY0MGQ5NSl9LAotICAgIHtDKGQ1MzM5YWRjMjk1ZDVkNjkpLCBDKGI2MzNjYzFkY2I4
YjU4NmEpLCBDKGVlODQxODRjZjViMWFlYWYpLAotICAgICBDKDg5ZjNhYWI5OWFmYmQ2MzYpLCBD
KGY0MjBlMDA0ZjgxNDhiOWEpLCBDKDY4MTgwNzNmYWE3OTdjN2MpLAotICAgICBDKGRkM2I0ZTIx
Y2JiZjQyY2EpLCBDKDg5ZjNhYWI5OWFmYmQ2MzYpLCBDKGY0MjBlMDA0ZjgxNDhiOWEpLAotICAg
ICBDKDY4MTgwNzNmYWE3OTdjN2MpLCBDKGRkM2I0ZTIxY2JiZjQyY2EpLCBDKDZhMmI3ZGIyNjEx
NjQ4NDQpLAotICAgICBDKGNiZWFkNjNkMTg5NTg1MmEpLCBDKDkzZDM3ZTFlYWUwNWUyZjkpLCBD
KDVkMDZkYjI3MDNmYmMzYWUpLCBDKDNkMTJhMmIpfSwKKyAgICB7QyhkNTMzOWFkYzI5NWQ1ZDY5
KSwgQyhiNjMzY2MxZGNiOGI1ODZhKSwgQyhlZTg0MTg0Y2Y1YjFhZWFmKSwgQygzZDEyYTJiKX0s
CiAgICAge0MoNDBkMGFlZmY1MjEzNzVhOCksIEMoNzdiYTFhZDdlY2ViZDUwNiksIEMoNTQ3YzZm
MWE3ZDlkZjQyNyksCi0gICAgIEMoMjFjMmJlMDk4MzI3ZjQ5YiksIEMoN2UwMzUwNjVhYzdiYmVm
NSksIEMoNmQ3MzQ4ZTYzMDIzZmIzNSksCi0gICAgIEMoOWQ0MjdkYzFiNjdjMzgzMCksIEMoMjFj
MmJlMDk4MzI3ZjQ5YiksIEMoN2UwMzUwNjVhYzdiYmVmNSksCi0gICAgIEMoNmQ3MzQ4ZTYzMDIz
ZmIzNSksIEMoOWQ0MjdkYzFiNjdjMzgzMCksIEMoNGUzZDAxOGE0Mzg1ODM0MSksCi0gICAgIEMo
Y2Y5MjRiYjQ0ZDZiNDNjNSksIEMoNDYxOGI2YTI2ZTM0NDZhZSksIEMoNTRkMzAxM2ZhYzNlZDQ2
OSksCiAgICAgIEMoYWFlYWZlZDApfSwKICAgICB7Qyg4YjJkNTRhZTFhM2RmNzY5KSwgQygxMWU3
YWRhZWUzMjE2Njc5KSwgQygzNDgzNzgxZWZjNTYzZTAzKSwKLSAgICAgQyg5ZDA5N2RkMzE1MmFi
MTA3KSwgQyg1MWUyMWQyNDEyNmU4NTYzKSwgQyhjYmE1NmNhYzg4NGExMzU0KSwKLSAgICAgQygz
OWFiYjFiNTk1ZjBhOTc3KSwgQyg5ZDA5N2RkMzE1MmFiMTA3KSwgQyg1MWUyMWQyNDEyNmU4NTYz
KSwKLSAgICAgQyhjYmE1NmNhYzg4NGExMzU0KSwgQygzOWFiYjFiNTk1ZjBhOTc3KSwgQyg4MWU2
ZGQxYzExMDk4NDhmKSwKLSAgICAgQygxNjQ0YjIwOTgyNmQ3YjE1KSwgQyg2YWM2N2U0ZTRiNDgx
MmYwKSwgQyhiM2E5ZjU2MjJjOTM1YmY3KSwKICAgICAgQyg5NWI5YjgxNCl9LAogICAgIHtDKDk5
YzE3NTgxOWI0ZWFlMjgpLCBDKDkzMmU4ZmY5ZjdhNDAwNDMpLCBDKGVjNzhkY2FiMDdjYTlmN2Mp
LAotICAgICBDKGMxYTc4YjgyYmE4MTViNzQpLCBDKDQ1OGNiZGZjODJlYjMyMmEpLCBDKDE3ZjRh
MTkyMzc2ZWQ4ZDcpLAotICAgICBDKDZmOWU5Mjk2OGJjOGNjZWYpLCBDKGMxYTc4YjgyYmE4MTVi
NzQpLCBDKDQ1OGNiZGZjODJlYjMyMmEpLAotICAgICBDKDE3ZjRhMTkyMzc2ZWQ4ZDcpLCBDKDZm
OWU5Mjk2OGJjOGNjZWYpLCBDKDkzZTA5OGMzMzNiMzk5MDUpLAotICAgICBDKGQ1OWIxY2FjZTQ0
YjdmZGMpLCBDKGY3YTY0ZWQ3OGM2NGM3YzUpLCBDKDdjNmVjYTVkZDg3ZWMxY2UpLAogICAgICBD
KDQ1ZmJlNjZlKX0sCiAgICAge0MoMmE0MTgzMzU3NzliODJmYyksIEMoYWYwMjk1OTg3ODQ5YTc2
YiksIEMoYzEyYmM1ZmYwMjEzZjQ2ZSksCi0gICAgIEMoNWFlZWFkOGQ2Y2IyNWJiOSksIEMoNzM5
MzE1Zjc3NDNlYzNmZiksIEMoOWFiNDhkMjcxMTFkMmRjYyksCi0gICAgIEMoNWI4N2JkMzVhOTc1
OTI5YiksIEMoNWFlZWFkOGQ2Y2IyNWJiOSksIEMoNzM5MzE1Zjc3NDNlYzNmZiksCi0gICAgIEMo
OWFiNDhkMjcxMTFkMmRjYyksIEMoNWI4N2JkMzVhOTc1OTI5YiksIEMoYzNkZDhkNmQ5NWE0NmJi
MyksCi0gICAgIEMoN2JmOTA5MzIxNWE0ZjQ4MyksIEMoY2I1NTdkNmVkODQyODViZCksIEMoZGFm
NTg0MjJmMjYxZmRiNSksCiAgICAgIEMoYjRiYWE3YTgpfSwKLSAgICB7QygzYjFmYzZhM2QyNzll
NjdkKSwgQyg3MGVhMWU0OWMyMjYzOTYpLCBDKDI1NTA1YWRjZjEwNDY5N2MpLAotICAgICBDKGJh
MWZmYmEyOWYwMzY3YWEpLCBDKGEyMGJlYzFkZDE1YThiNmMpLCBDKGU5YmY2MWQyZGFiMGY3NzQp
LAotICAgICBDKGY0ZjM1YmY1ODcwYTA0OWMpLCBDKGJhMWZmYmEyOWYwMzY3YWEpLCBDKGEyMGJl
YzFkZDE1YThiNmMpLAotICAgICBDKGU5YmY2MWQyZGFiMGY3NzQpLCBDKGY0ZjM1YmY1ODcwYTA0
OWMpLCBDKDI2Nzg3ZWZhNWI5MjM4NSksCi0gICAgIEMoM2Q5NTMzNTkwY2UzMGI1OSksIEMoYTRk
YTNlNDA1MzBhMDFkNCksIEMoNjM5NWRlYWVmYjcwMDY3YyksCi0gICAgIEMoODNlOTYyZmUpfSwK
LSAgICB7QyhkOTdlYWNkZjEwZjFjM2M5KSwgQyhiNTRmNDY1NDA0M2EzNmUwKSwgQyhiMTI4ZjZl
YjA5ZDEyMzQpLAotICAgICBDKGQ4YWQ3ZWM4NGE5YzlhYTIpLCBDKGUyNTZjZmZlZDExZjY5ZTYp
LCBDKDJjZjY1ZTQ5NThhZDViZGEpLAotICAgICBDKGNmYmY5YjAzMjQ1OTg5YTcpLCBDKGQ4YWQ3
ZWM4NGE5YzlhYTIpLCBDKGUyNTZjZmZlZDExZjY5ZTYpLAotICAgICBDKDJjZjY1ZTQ5NThhZDVi
ZGEpLCBDKGNmYmY5YjAzMjQ1OTg5YTcpLCBDKDlmYTUxZTY2ODZjZjQ0NDQpLAotICAgICBDKDk0
MjVjMTE3YTM0NjA5ZDUpLCBDKGIyNWY3ZTJjNmYzMGU5NiksIEMoZWE1NDc3YzNmMmI1YWZkMSks
IEMoYWFjMzUzMWMpfSwKKyAgICB7QygzYjFmYzZhM2QyNzllNjdkKSwgQyg3MGVhMWU0OWMyMjYz
OTYpLCBDKDI1NTA1YWRjZjEwNDY5N2MpLCBDKDgzZTk2MmZlKX0sCisgICAge0MoZDk3ZWFjZGYx
MGYxYzNjOSksIEMoYjU0ZjQ2NTQwNDNhMzZlMCksIEMoYjEyOGY2ZWIwOWQxMjM0KSwgQyhhYWMz
NTMxYyl9LAogICAgIHtDKDI5M2E1YzFjNGUyMDNjZDQpLCBDKDZiMzMyOWYxYzEzMGNlZmUpLCBD
KGYyZTMyZjhlYzc2YWFjOTEpLAotICAgICBDKDM2MWUwYTYyYzgxODdiZmYpLCBDKDYwODk5NzFi
Yjg0ZDcxMzMpLCBDKDkzZGY3NzQxNTg4ZGQ1MGIpLAotICAgICBDKGMyYTliNmFiY2QxZDgwYjEp
LCBDKDM2MWUwYTYyYzgxODdiZmYpLCBDKDYwODk5NzFiYjg0ZDcxMzMpLAotICAgICBDKDkzZGY3
NzQxNTg4ZGQ1MGIpLCBDKGMyYTliNmFiY2QxZDgwYjEpLCBDKDRkMmY4Njg2OWQ3OWJjNTkpLAot
ICAgICBDKDg1Y2QyNGQ4YWE1NzBmZiksIEMoYjBkY2Y2ZWYwZTk0YmJiNSksIEMoMjAzN2M2OWFh
N2E3ODQyMSksIEMoMmIxZGI3Y2MpfSwKKyAgICAgQygyYjFkYjdjYyl9LAogICAgIHtDKDQyOTBl
MDE4ZmZhZWRkZTcpLCBDKGExNDk0ODU0NTQxOGViNWUpLCBDKDcyZDg1MWIyMDIyODQ2MzYpLAot
ICAgICBDKDRlYzAyZjNkMmYyYjIzZjIpLCBDKGFiMzU4MDcwOGFhN2MzMzkpLCBDKGNkY2UwNjZm
YmFiM2Y2NSksCi0gICAgIEMoZDhlZDNlY2YzYzc2NDdiOSksIEMoNGVjMDJmM2QyZjJiMjNmMiks
IEMoYWIzNTgwNzA4YWE3YzMzOSksCi0gICAgIEMoY2RjZTA2NmZiYWIzZjY1KSwgQyhkOGVkM2Vj
ZjNjNzY0N2I5KSwgQyg2ZDIyMDRiM2UzMWYzNDRhKSwKLSAgICAgQyg2MWE0ZDg3ZjgwZWU2MWQ3
KSwgQyg0NDZjNDNkYmVkNGI3MjhmKSwgQyg3MzEzMGFjOTRmNTg3NDdlKSwKICAgICAgQyhjZjAw
Y2QzMSl9LAogICAgIHtDKGY5MTlhNTljYmRlOGJmMmYpLCBDKGE1NmQwNDIwM2IyZGM1YTUpLCBD
KDM4YjA2NzUzYWM4NzFlNDgpLAotICAgICBDKGMyYzlmYzYzN2RiZGZjZmEpLCBDKDI5MmFiODMw
NmQxNDlkNzUpLCBDKDdmNDM2Yjg3NGI5ZmZjMDcpLAotICAgICBDKGE1YjU2YjAxMjkyMThiODAp
LCBDKGMyYzlmYzYzN2RiZGZjZmEpLCBDKDI5MmFiODMwNmQxNDlkNzUpLAotICAgICBDKDdmNDM2
Yjg3NGI5ZmZjMDcpLCBDKGE1YjU2YjAxMjkyMThiODApLCBDKDkxODhmN2JkYzQ3ZWMwNTApLAot
ICAgICBDKGNmZTkzNDVkMDNhMTVhZGUpLCBDKDQwYjUyMGZiMjc1MGM0OWUpLCBDKGMyZTgzZDM0
Mzk2OGFmMmUpLAogICAgICBDKDdkM2M0M2I4KX0sCiAgICAge0MoMWQ3MGEzZjU1MjFkN2ZhNCks
IEMoZmI5N2IzZmRjNTg5MTk2NSksIEMoMjk5ZDQ5YmJiZTM1MzVhZiksCi0gICAgIEMoZTFhODI4
NmE3ZDY3OTQ2ZSksIEMoNTJiZDk1NmYwNDdiMjk4KSwgQyhjYmQ3NDMzMmRkNDIwNGFjKSwKLSAg
ICAgQygxMmI1YmU3NzUyNzIxOTc2KSwgQyhlMWE4Mjg2YTdkNjc5NDZlKSwgQyg1MmJkOTU2ZjA0
N2IyOTgpLAotICAgICBDKGNiZDc0MzMyZGQ0MjA0YWMpLCBDKDEyYjViZTc3NTI3MjE5NzYpLCBD
KDI3ODQyNmUyN2Y2MjA0YjYpLAotICAgICBDKDkzMmNhN2E3Y2Q2MTAxODEpLCBDKDQxNjQ3MzIx
ZjBhNTkxNGQpLCBDKDQ4ZjRhYTYxYTBhZTgwZGIpLAogICAgICBDKGNiZDVmYWM2KX0sCiAgICAg
e0MoNmFmOThkN2I2NTZkMGQ3YyksIEMoZDJlOTlhZTk2ZDZiNWMwYyksIEMoZjYzYmQxNjAzZWY4
MDYyNyksCi0gICAgIEMoYmRlNTEwMzNhYzA0MTNmOCksIEMoYmMwMjcyZjY5MWFlYzYyOSksIEMo
NjIwNDMzMjY1MWJlYmM0NCksCi0gICAgIEMoMWNiZjAwZGUwMjZlYTliZCksIEMoYmRlNTEwMzNh
YzA0MTNmOCksIEMoYmMwMjcyZjY5MWFlYzYyOSksCi0gICAgIEMoNjIwNDMzMjY1MWJlYmM0NCks
IEMoMWNiZjAwZGUwMjZlYTliZCksIEMoYjljN2VkNmE3NWYzZmYxZSksCi0gICAgIEMoN2UzMTBi
NzZhNTgwOGU0ZiksIEMoYWNiYmQxYWFkNTUzMTg4NSksIEMoZmMyNDVmMjQ3M2FkZWI5YyksCiAg
ICAgIEMoNzZkMGZlYzQpfSwKLSAgICB7QygzOTViN2E4YWRiOTZhYjc1KSwgQyg1ODJkZjcxNjVi
MjBmNGEpLCBDKGU1MmJkMzBlOWZmNjU3ZjkpLAotICAgICBDKDZjNzEwNjQ5OTZjYmVjOGIpLCBD
KDM1MmM1MzVlZGVlZmNiODkpLCBDKGFjN2YwYWJhMTVjZDVlY2QpLAotICAgICBDKDNhYmExY2E4
MzUzZTVjNjApLCBDKDZjNzEwNjQ5OTZjYmVjOGIpLCBDKDM1MmM1MzVlZGVlZmNiODkpLAotICAg
ICBDKGFjN2YwYWJhMTVjZDVlY2QpLCBDKDNhYmExY2E4MzUzZTVjNjApLCBDKDVjMzBhMjg4YTgw
Y2U2NDYpLAotICAgICBDKGMyOTQwNDg4YjY2MTc2NzQpLCBDKDkyNWY4Y2M2NmIzNzA1NzUpLCBD
KGFhNjVkMTI4M2I5YmIwZWYpLAotICAgICBDKDQwNWUzNDAyKX0sCisgICAge0MoMzk1YjdhOGFk
Yjk2YWI3NSksIEMoNTgyZGY3MTY1YjIwZjRhKSwgQyhlNTJiZDMwZTlmZjY1N2Y5KSwgQyg0MDVl
MzQwMil9LAogICAgIHtDKDM4MjJkZDgyYzdkZjAxMmYpLCBDKGI5MDI5YjQwYmQ5ZjEyMmIpLCBD
KGZkMjViOTg4NDY4MjY2YzQpLAotICAgICBDKDQzZTQ3YmQ1YmFiMWUwZWYpLCBDKDRhNzFmMzYz
NDIxZjI4MmYpLCBDKDg4MGIyZjMyYTJiNGUyODkpLAotICAgICBDKDEyOTlkNGVkYTlkM2VhZGYp
LCBDKDQzZTQ3YmQ1YmFiMWUwZWYpLCBDKDRhNzFmMzYzNDIxZjI4MmYpLAotICAgICBDKDg4MGIy
ZjMyYTJiNGUyODkpLCBDKDEyOTlkNGVkYTlkM2VhZGYpLCBDKGQ3MTNhNDAyMjZmNTU2NCksCi0g
ICAgIEMoNGQ4ZDM0ZmVkYzc2OTQwNiksIEMoYTg1MDAxYjI5Y2Q5Y2FjMyksIEMoY2FlOTIzNTJh
NDFmZDJiMCksCiAgICAgIEMoYzczMmM0ODEpfSwKICAgICB7Qyg3OWY3ZWZlNGE4MGI5NTFhKSwg
QyhkZDNhM2ZkZGZjNmM5YzQxKSwgQyhhYjRjODEyZjllMjdhYTQwKSwKLSAgICAgQyg4MzI5NTRl
YzlkMGRlMzMzKSwgQyg5NGMzOTBhYTliY2I2YjhhKSwgQyhmM2IzMmFmZGMxZjA0ZjgyKSwKLSAg
ICAgQyhkMjI5YzNiNzJlNGI5YTc0KSwgQyg4MzI5NTRlYzlkMGRlMzMzKSwgQyg5NGMzOTBhYTli
Y2I2YjhhKSwKLSAgICAgQyhmM2IzMmFmZGMxZjA0ZjgyKSwgQyhkMjI5YzNiNzJlNGI5YTc0KSwg
QygxZDExODYwZDdlZDYyNGE2KSwKLSAgICAgQyhjYWRlZTIwYjM0NDFiOTg0KSwgQyg3NTMwNzA3
OWJmMzA2ZjdiKSwgQyg4NzkwMmFhM2I5NzUzYmE0KSwKICAgICAgQyhhOGQxMjNjOSl9LAotICAg
IHtDKGFlNmU1OWY1ZjA1NTkyMWEpLCBDKGU5ZDliN2JmNjhlODIpLCBDKDVjZTRlNGE1YjI2OWNj
NTkpLAotICAgICBDKDQ5NjAxMTE3ODk3Mjc1NjcpLCBDKDE0OWI4YTM3YzcxMjVhYjYpLCBDKDc4
YzdhMTNhYjk3NDkzODIpLAotICAgICBDKDFjNjExMzEyNjBjYTE1MWEpLCBDKDQ5NjAxMTE3ODk3
Mjc1NjcpLCBDKDE0OWI4YTM3YzcxMjVhYjYpLAotICAgICBDKDc4YzdhMTNhYjk3NDkzODIpLCBD
KDFjNjExMzEyNjBjYTE1MWEpLCBDKDFlOTMyNzZiMzVjMzA5YTApLAotICAgICBDKDI2MThmNTYy
MzBhY2RlNTgpLCBDKGFmNjExMzBhMThlNGZlYmYpLCBDKDcxNDVkZWIxOGU4OWJlZmUpLAotICAg
ICBDKDFlODBhZDdkKX0sCisgICAge0MoYWU2ZTU5ZjVmMDU1OTIxYSksIEMoZTlkOWI3YmY2OGU4
MiksIEMoNWNlNGU0YTViMjY5Y2M1OSksIEMoMWU4MGFkN2QpfSwKICAgICB7Qyg4OTU5ZGJiZjA3
Mzg3ZDM2KSwgQyhiNDY1OGFmY2U0OGVhMzVkKSwgQyg4ZjNmODI0MzdkOGNiOGQ2KSwKLSAgICAg
Qyg2NTY2ZDc0OTU0OTg2YmE1KSwgQyg5OWQ1MjM1Y2M4MjUxOWE3KSwgQygyNTdhMjM4MDVjMmQ4
MjUpLAotICAgICBDKGFkNzVjY2I5NjhlOTM0MDMpLCBDKDY1NjZkNzQ5NTQ5ODZiYTUpLCBDKDk5
ZDUyMzVjYzgyNTE5YTcpLAotICAgICBDKDI1N2EyMzgwNWMyZDgyNSksIEMoYWQ3NWNjYjk2OGU5
MzQwMyksIEMoYjQ1YmQ0Y2Y3OGUxMWY3ZiksCi0gICAgIEMoODBjNTUzNmJkYzQ4Nzk4MyksIEMo
YTRmZDc2ZWNiZjAxOGM4YSksIEMoM2I5ZGFjNzhhN2E3MGQ0MyksCiAgICAgIEMoNTJhZWI4NjMp
fSwKICAgICB7Qyg0NzM5NjEzMjM0Mjc4YTQ5KSwgQyg5OWVhNWJjZDM0MGJmNjYzKSwgQygyNTg2
NDA5MTJlNzEyYjEyKSwKLSAgICAgQyhjOGEyODI3NDA0OTkxNDAyKSwgQyg3ZWU1ZTc4NTUwZjAy
Njc1KSwgQygyZWM1Mzk1MmRiNWFjNjYyKSwKLSAgICAgQygxNTI2NDA1YTlkZjY3OTRiKSwgQyhj
OGEyODI3NDA0OTkxNDAyKSwgQyg3ZWU1ZTc4NTUwZjAyNjc1KSwKLSAgICAgQygyZWM1Mzk1MmRi
NWFjNjYyKSwgQygxNTI2NDA1YTlkZjY3OTRiKSwgQyhlZGRjNjI3MTE3MGM1ZTFmKSwKLSAgICAg
QyhmNWE4NWY5ODYwMDFkOWQ2KSwgQyg5NTQyN2M2NzdiZjU4ZDU4KSwgQyg1M2VkNjY2ZGZhODVj
YjI5KSwKICAgICAgQyhlZjdjMGMxOCl9LAogICAgIHtDKDQyMGU2YzkyNmJjNTQ4NDEpLCBDKDk2
ZGJiZjZmNGU3Yzc1Y2QpLCBDKGQ4ZDQwZmE3MGMzYzY3YmIpLAotICAgICBDKDNlZGJjMTBlNGJm
ZWU5MWIpLCBDKGYwZDY4MTMwNGMyOGVmNjgpLCBDKDc3ZWE2MDIwMjlhYWFmOWMpLAotICAgICBD
KDkwZjA3MGJkMjRjODQ4M2MpLCBDKDNlZGJjMTBlNGJmZWU5MWIpLCBDKGYwZDY4MTMwNGMyOGVm
NjgpLAotICAgICBDKDc3ZWE2MDIwMjlhYWFmOWMpLCBDKDkwZjA3MGJkMjRjODQ4M2MpLCBDKDI4
YmM4ZTQxZTA4Y2ViODYpLAotICAgICBDKDFlYjU2ZTQ4YTY1NjkxZWYpLCBDKDlmZWE1MzAxYzky
MDJmMGUpLCBDKDNmY2I2NTA5MWFhOWYxMzUpLAogICAgICBDKGI2YWQ0YjY4KX0sCiAgICAge0Mo
Yzg2MDFiYWI1NjFiYzFiNyksIEMoNzJiMjYyNzJhMGZmODY5YSksIEMoNTZmZGZjOTg2ZDZiYzNj
NCksCi0gICAgIEMoODM3MDc3MzBjYWQ3MjVkNCksIEMoYzljYTg4YzNhNzc5Njc0YSksIEMoZTFj
Njk2ZmJiZDlhYTkzMyksCi0gICAgIEMoNzIzZjNiYWFiMWMxN2E0NSksIEMoODM3MDc3MzBjYWQ3
MjVkNCksIEMoYzljYTg4YzNhNzc5Njc0YSksCi0gICAgIEMoZTFjNjk2ZmJiZDlhYTkzMyksIEMo
NzIzZjNiYWFiMWMxN2E0NSksIEMoZjgyYWJjN2ExZDg1MTY4MiksCi0gICAgIEMoMzA2ODM4MzY4
MThlODU3ZCksIEMoNzhiZmEzZTg5YTVhYjIzZiksIEMoNjkyODIzNDQ4MmIzMTgxNyksCiAgICAg
IEMoYzFlNDZiMTcpfSwKLSAgICB7QyhiMmQyOTQ5MzFhMGUyMGViKSwgQygyODRmZmQ5YTA4MTVi
YzM4KSwgQygxZjhhMTAzYWFjOWJiZTYpLAotICAgICBDKDFlZjhlOThlMWVhNTcyNjkpLCBDKDU5
NzExMTYyNzJmNDVhOGIpLCBDKDE4N2FkNjhjZTk1ZDhlYWMpLAotICAgICBDKGU5NGU5M2VlNGU4
ZWNhYTYpLCBDKDFlZjhlOThlMWVhNTcyNjkpLCBDKDU5NzExMTYyNzJmNDVhOGIpLAotICAgICBD
KDE4N2FkNjhjZTk1ZDhlYWMpLCBDKGU5NGU5M2VlNGU4ZWNhYTYpLCBDKGEwZmYyYTU4NjExODM4
YjUpLAotICAgICBDKGIwMWUwMzg0OWJmYmFlNmYpLCBDKGQwODFlMjAyZTI4ZWEzYWIpLCBDKDUx
ODM2YmNlZTc2MmJmMTMpLAotICAgICBDKDU3YjhkZjI1KX0sCisgICAge0MoYjJkMjk0OTMxYTBl
MjBlYiksIEMoMjg0ZmZkOWEwODE1YmMzOCksIEMoMWY4YTEwM2FhYzliYmU2KSwgQyg1N2I4ZGYy
NSl9LAogICAgIHtDKDc5NjZmNTNjMzdiNmM2ZDcpLCBDKDhlNmFiY2ZiM2FhMmI4OGYpLCBDKDdm
MmU1ZTA3MjRlNWYzNDUpLAotICAgICBDKDNlZWI2MGMzZjVmODE0M2QpLCBDKGEyNWFlYzA1YzQy
MmEyNGYpLCBDKGIwMjZiMDNhZDNjY2E0ZGIpLAotICAgICBDKGU2ZTAzMDAyOGNjMDJhMDIpLCBD
KDNlZWI2MGMzZjVmODE0M2QpLCBDKGEyNWFlYzA1YzQyMmEyNGYpLAotICAgICBDKGIwMjZiMDNh
ZDNjY2E0ZGIpLCBDKGU2ZTAzMDAyOGNjMDJhMDIpLCBDKDE2ZmU2NzkzMzhiMzRiZmMpLAotICAg
ICBDKGMxYmUzODViNWM4YTlkZTQpLCBDKDY1YWY1ZGY2NTY3NTMwZWIpLCBDKGVkM2IzMDNkZjRk
YzYzMzUpLAogICAgICBDKGU5ZmEzNmQ2KX0sCiAgICAge0MoYmU5YmIwYWJkMDNiNzM2OCksIEMo
MTNiY2E5M2EzMDMxYmU1NSksIEMoZTg2NGY0ZjUyYjU1YjQ3MiksCi0gICAgIEMoMzZhOGQxM2Ey
Y2JiMDkzOSksIEMoMjU0YWM3MzkwNzQxMzIzMCksIEMoNzM1MjBkMTUyMjMxNWE3MCksCi0gICAg
IEMoOGM5ZmRiNWNmMWUxYTUwNyksIEMoMzZhOGQxM2EyY2JiMDkzOSksIEMoMjU0YWM3MzkwNzQx
MzIzMCksCi0gICAgIEMoNzM1MjBkMTUyMjMxNWE3MCksIEMoOGM5ZmRiNWNmMWUxYTUwNyksIEMo
YjM2NDA1NzBiOTI2ODg2KSwKLSAgICAgQyhmYmEyMzQ0ZWU4N2Y3YmFiKSwgQyhkZTU3MzQxYWI0
NDhkZjA1KSwgQygzODU2MTJlZTA5NGZhOTc3KSwKICAgICAgQyg4ZjhkYWVmYyl9LAotICAgIHtD
KGEwOGQxMjhjNWYxNjQ5YmUpLCBDKGE4MTY2YzNkYmJlMTlhYWQpLCBDKGNiOWY5MTRmODI5ZWM2
MmMpLAotICAgICBDKDViMmI3Y2E4NTZmYWQxYzMpLCBDKDgwOTMwMjJkNjgyZTM3NWQpLCBDKGVh
NWQxNjNiYTdlYTIzMWYpLAotICAgICBDKGQ2MTgxZDAxMmMwZGU2NDEpLCBDKDViMmI3Y2E4NTZm
YWQxYzMpLCBDKDgwOTMwMjJkNjgyZTM3NWQpLAotICAgICBDKGVhNWQxNjNiYTdlYTIzMWYpLCBD
KGQ2MTgxZDAxMmMwZGU2NDEpLCBDKGU3ZDQwZDBhYjhiMDgxNTkpLAotICAgICBDKDJlODIzMjBm
NTFiM2E2N2UpLCBDKDI3YzJlMzU2ZWEwYjYzYTMpLCBDKDU4ODQyZDAxYTJiMWQwNzcpLCBDKDZl
MWJiN2UpfSwKKyAgICB7QyhhMDhkMTI4YzVmMTY0OWJlKSwgQyhhODE2NmMzZGJiZTE5YWFkKSwg
QyhjYjlmOTE0ZjgyOWVjNjJjKSwgQyg2ZTFiYjdlKX0sCiAgICAge0MoN2MzODZmMGZmZTA0NjVh
YyksIEMoNTMwNDE5YzlkODQzZGJmMyksIEMoNzQ1MGUzYTRmNzJiOGQ4YyksCi0gICAgIEMoNDhi
MjE4ZTNiNzIxODEwZCksIEMoZDM3NTdhYzg2MDliYzdmYyksIEMoMTExYmEwMmE4OGFlZmM4KSwK
LSAgICAgQyhlODYzNDMxMzdkM2JmYzJhKSwgQyg0OGIyMThlM2I3MjE4MTBkKSwgQyhkMzc1N2Fj
ODYwOWJjN2ZjKSwKLSAgICAgQygxMTFiYTAyYTg4YWVmYzgpLCBDKGU4NjM0MzEzN2QzYmZjMmEp
LCBDKDQ0YWQyNmI1MTY2MWI1MDcpLAotICAgICBDKGRiMTI2ODY3MDI3NGY1MWUpLCBDKDYyYTVl
NzViZWFlODc1ZjMpLCBDKGUyNjZlN2E0NGM1ZjI4YzYpLAogICAgICBDKGZkMDA3NmYwKX0sCi0g
ICAge0MoYmIzNjIwOTRlN2VmNGY4KSwgQyhmZjNjMmE0ODk2NmY5NzI1KSwgQyg1NTE1MjgwM2Fj
ZDRhN2ZlKSwKLSAgICAgQygxNTc0N2Q4YzUwNWZmZDAwKSwgQyg0MzhhMTVmMzkxMzEyY2Q2KSwg
QyhlNDZjYTYyYzI2ZDgyMWY1KSwKLSAgICAgQyhiZTc4ZDc0YzlmNzljYjQ0KSwgQygxNTc0N2Q4
YzUwNWZmZDAwKSwgQyg0MzhhMTVmMzkxMzEyY2Q2KSwKLSAgICAgQyhlNDZjYTYyYzI2ZDgyMWY1
KSwgQyhiZTc4ZDc0YzlmNzljYjQ0KSwgQyhhOGFhMTlmM2FhNTlmMDlhKSwKLSAgICAgQyhlZmZi
M2NkZGFiMmM5MjY3KSwgQyhkNzhlNDFhZDk3Y2IxNmE1KSwgQyhhY2U2ODIxNTEzNTI3ZDMyKSwK
LSAgICAgQyg4OTliMTdiNil9LAorICAgIHtDKGJiMzYyMDk0ZTdlZjRmOCksIEMoZmYzYzJhNDg5
NjZmOTcyNSksIEMoNTUxNTI4MDNhY2Q0YTdmZSksIEMoODk5YjE3YjYpfSwKICAgICB7QyhjZDgw
ZGVhMjQzMjFlZWE0KSwgQyg1MmI0ZmRjODEzMGMyYjE1KSwgQyhmM2VhMTAwYjE1NGJmYjgyKSwK
LSAgICAgQyhkOWNjZWYxZDRiZTQ2OTg4KSwgQyg1ZWRlMGM0ZTM4M2E1ZTY2KSwgQyhkYTY5Njgz
NzE2YTU0ZDFlKSwKLSAgICAgQyhiZmMzZmRmMDJkMjQyZDI0KSwgQyhkOWNjZWYxZDRiZTQ2OTg4
KSwgQyg1ZWRlMGM0ZTM4M2E1ZTY2KSwKLSAgICAgQyhkYTY5NjgzNzE2YTU0ZDFlKSwgQyhiZmMz
ZmRmMDJkMjQyZDI0KSwgQygyMGVkMzAyNzQ2NTFiM2Y1KSwKLSAgICAgQyg0YzY1OTgyNDE2OWU4
NmM2KSwgQyg2MzcyMjZkYWU1YjUyYTBlKSwgQyg3ZTA1MGRiZDFjNzFkYzdmKSwKICAgICAgQyhl
M2U4NGUzMSl9LAogICAgIHtDKGQ1OTlhMDQxMjUzNzJjM2EpLCBDKDMxMzEzNmM1NmE1NmYzNjMp
LCBDKDFlOTkzYzM2Nzc2MjU4MzIpLAotICAgICBDKDI4NzBhOTljNzZhNTg3YTQpLCBDKDk5Zjc0
Y2MwYjE4MmRkYTQpLCBDKDhhNWU4OTViMmYwY2E3YjYpLAotICAgICBDKDNkNzg4ODJkNWUwYmIx
ZGMpLCBDKDI4NzBhOTljNzZhNTg3YTQpLCBDKDk5Zjc0Y2MwYjE4MmRkYTQpLAotICAgICBDKDhh
NWU4OTViMmYwY2E3YjYpLCBDKDNkNzg4ODJkNWUwYmIxZGMpLCBDKGY0NjYxMjM3MzJhM2UyNWUp
LAotICAgICBDKGFjYTVlNTk3MTZhNDBlNTApLCBDKDI2MWQyZTczODNkMGU2ODYpLCBDKGNlOTM2
MmQ2YTQyYzE1YTcpLAogICAgICBDKGVlZjc5YjZiKX0sCi0gICAge0MoZGJiZjU0MWU5ZGZkYTBh
KSwgQygxNDc5ZmNlYjZkYjRmODQ0KSwgQygzMWFiNTc2YjU5MDYyNTM0KSwKLSAgICAgQyhhMzMz
NWM0MTc2ODdjZjNhKSwgQyg5MmZmMTE0YWM0NWNkYTc1KSwgQyhjM2I4YTYyNzM4NGYxM2I1KSwK
LSAgICAgQyhjNGYyNWRlMzNkZThiM2Y3KSwgQyhhMzMzNWM0MTc2ODdjZjNhKSwgQyg5MmZmMTE0
YWM0NWNkYTc1KSwKLSAgICAgQyhjM2I4YTYyNzM4NGYxM2I1KSwgQyhjNGYyNWRlMzNkZThiM2Y3
KSwgQyhlYWNiZjUyMDU3OGM1OTY0KSwKLSAgICAgQyg0Y2IxOWM1YWIyNGYzMjE1KSwgQyhlN2Q4
YTZmNjdmMGM2ZTcpLCBDKDMyNWMyNDEzZWI3NzBhZGEpLCBDKDg2OGUzMzE1KX0sCi0gICAge0Mo
YzJlZTMyODhiZTRmZTJiZiksIEMoYzY1ZDJmNWRkZjMyYjkyKSwgQyhhZjZlY2RmMTIxYmE1NDg1
KSwKLSAgICAgQyhjN2NkNDhmN2FiZjFmZTU5KSwgQyhjZTYwMDY1NmFjZTZmNTNhKSwgQyg4YTk0
YTQzODFiMTA4YjM0KSwKLSAgICAgQyhmOWQxMjc2YzY0YmY1OWZiKSwgQyhjN2NkNDhmN2FiZjFm
ZTU5KSwgQyhjZTYwMDY1NmFjZTZmNTNhKSwKLSAgICAgQyg4YTk0YTQzODFiMTA4YjM0KSwgQyhm
OWQxMjc2YzY0YmY1OWZiKSwgQygyMTljZTcwZmY1YTExMmE1KSwKLSAgICAgQyhlNjAyNmM1NzZl
MmQyOGQ3KSwgQyhiOGU0NjdmMjUwMTVlM2E2KSwgQyg5NTBjYjkwNGYzN2FmNzEwKSwKLSAgICAg
Qyg0NjM5YTQyNil9LAorICAgIHtDKGRiYmY1NDFlOWRmZGEwYSksIEMoMTQ3OWZjZWI2ZGI0Zjg0
NCksIEMoMzFhYjU3NmI1OTA2MjUzNCksIEMoODY4ZTMzMTUpfSwKKyAgICB7QyhjMmVlMzI4OGJl
NGZlMmJmKSwgQyhjNjVkMmY1ZGRmMzJiOTIpLCBDKGFmNmVjZGYxMjFiYTU0ODUpLCBDKDQ2Mzlh
NDI2KX0sCiAgICAge0MoZDg2NjAzY2VkMWVkNDczMCksIEMoZjlkZTcxOGFhYWRhNzcwOSksIEMo
ZGI4Yjk3NTUxOTRjNjUzNSksCi0gICAgIEMoZDgwM2UxZWVhZDQ3NjA0YyksIEMoYWQwMGY3NjEx
OTcwYTcxYiksIEMoYmM1MDAzNmIxNmNlNzFmNSksCi0gICAgIEMoYWZiYTk2MjEwYTJjYTdkNiks
IEMoZDgwM2UxZWVhZDQ3NjA0YyksIEMoYWQwMGY3NjExOTcwYTcxYiksCi0gICAgIEMoYmM1MDAz
NmIxNmNlNzFmNSksIEMoYWZiYTk2MjEwYTJjYTdkNiksIEMoMjhmN2E3YmUxZDY3NjVmMCksCi0g
ICAgIEMoOTdiZDg4OGI5MzkzOGM2OCksIEMoNmFkNDFkMWI0MDdkZWQ0OSksIEMoYjliZmVjMDk4
ZGM1NDNlNCksCiAgICAgIEMoZjMyMTM2NDYpfSwKICAgICB7Qyg5MTUyNjNjNjcxYjI4ODA5KSwg
QyhhODE1Mzc4ZTdhZDc2MmZkKSwgQyhhYmVjNmRjOWI2NjlmNTU5KSwKLSAgICAgQyhkMTdjOTI4
YzUzNDI0NzdmKSwgQyg3NDUxMzBiNzk1MjU0YWQ1KSwgQyg4YzVkYjkyNmZlODhmOGJhKSwKLSAg
ICAgQyg3NDJhOTVjOTUzZTZkOTc0KSwgQyhkMTdjOTI4YzUzNDI0NzdmKSwgQyg3NDUxMzBiNzk1
MjU0YWQ1KSwKLSAgICAgQyg4YzVkYjkyNmZlODhmOGJhKSwgQyg3NDJhOTVjOTUzZTZkOTc0KSwg
QygyNzlkYjgwNTdiNWQzZTk2KSwKLSAgICAgQyg5ODE2ODQxMTU2NWI0ZWM0KSwgQyg1MGE3MmM1
NGZhMTEyNWZhKSwgQygyNzc2NmE2MzVkYjczNjM4KSwKICAgICAgQygxN2YxNDhlOSl9LAotICAg
IHtDKDJiNjdjZGQzOGMzMDdhNWUpLCBDKGNiMWQ0NWJiNWM5ZmUxYyksIEMoODAwYmFmMmEwMmVj
MThhZCksCi0gICAgIEMoNjUzMWMxZmUzMmJjYjQxNyksIEMoOGM5NzBkOGRmOGNkYmViNCksIEMo
OTE3YmE1ZmM2N2U3MmI0MCksCi0gICAgIEMoNGI2NWU0ZTI2M2UwYTQyNiksIEMoNjUzMWMxZmUz
MmJjYjQxNyksIEMoOGM5NzBkOGRmOGNkYmViNCksCi0gICAgIEMoOTE3YmE1ZmM2N2U3MmI0MCks
IEMoNGI2NWU0ZTI2M2UwYTQyNiksIEMoZTBkZTMzY2U4OGE4YjNhOSksCi0gICAgIEMoZjhlZjk4
YTQzN2UxNmIwOCksIEMoYTUxNjJjMGM3YzVmN2I2MiksIEMoZGJkYWM0MzM2MWIyYjg4MSksCi0g
ICAgIEMoYmZkOTQ4ODApfSwKKyAgICB7QygyYjY3Y2RkMzhjMzA3YTVlKSwgQyhjYjFkNDViYjVj
OWZlMWMpLCBDKDgwMGJhZjJhMDJlYzE4YWQpLCBDKGJmZDk0ODgwKX0sCiAgICAge0MoMmQxMDc0
MTkwNzNiOWNkMCksIEMoYTk2ZGIwNzQwY2VmOGY1NCksIEMoZWM0MWVlOTFiM2VjZGMxYiksCi0g
ICAgIEMoZmZlMzE5NjU0YzhlN2ViYyksIEMoNmE2N2I4ZjEzZWFkNWE3MiksIEMoNmRkMTBhMzRm
ODBkNTMyZiksCi0gICAgIEMoNmU5Y2ZhZWNlOWZiY2E0KSwgQyhmZmUzMTk2NTRjOGU3ZWJjKSwg
Qyg2YTY3YjhmMTNlYWQ1YTcyKSwKLSAgICAgQyg2ZGQxMGEzNGY4MGQ1MzJmKSwgQyg2ZTljZmFl
Y2U5ZmJjYTQpLCBDKGI0NDY4ZWI2YTMwYWE3ZTkpLAotICAgICBDKGU4Nzk5NWJlZTQ4MzIyMmEp
LCBDKGQwMzZjMmM5MGM2MDkzOTEpLCBDKDg1MzMwNmU4MmZhMzIyNDcpLAogICAgICBDKGJiMWZh
N2YzKX0sCi0gICAge0MoZjNlOTQ4N2VjMGUyNmRmYyksIEMoMWFiMWY2MzIyNGU4MzdmYSksIEMo
MTE5OTgzYmI1YTgxMjVkOCksCi0gICAgIEMoODk1MGNmY2Y0YmRmNjIyYyksIEMoODg0N2RjYTgy
ZWZlZWYyZiksIEMoNjQ2Yjc1YjAyNjcwODE2OSksCi0gICAgIEMoMjFjYWI0YjE2ODdiZDhiKSwg
Qyg4OTUwY2ZjZjRiZGY2MjJjKSwgQyg4ODQ3ZGNhODJlZmVlZjJmKSwKLSAgICAgQyg2NDZiNzVi
MDI2NzA4MTY5KSwgQygyMWNhYjRiMTY4N2JkOGIpLCBDKDI0M2I0ODlhOWVhZTYyMzEpLAotICAg
ICBDKDVmM2U2MzRjNGI3Nzk4NzYpLCBDKGZmOGFiZDE1NDhlYWY2NDYpLCBDKGM3OTYyZjVmMDE1
MTkxNGIpLCBDKDg4ODE2YjEpfSwKKyAgICB7QyhmM2U5NDg3ZWMwZTI2ZGZjKSwgQygxYWIxZjYz
MjI0ZTgzN2ZhKSwgQygxMTk5ODNiYjVhODEyNWQ4KSwgQyg4ODgxNmIxKX0sCiAgICAge0MoMTE2
MDk4N2M4ZmU4NmY3ZCksIEMoODc5ZTZkYjE0ODFlYjkxYiksIEMoZDdkY2I4MDJiZmU2ODg1ZCks
Ci0gICAgIEMoMTQ0NTNiNWNjM2Q4MjM5NiksIEMoNGVmNzAwYzMzZWQyNzhiYyksIEMoMTYzOWM3
MmZmYzAwZDEyZSksCi0gICAgIEMoZmIxNDBlZTYxNTVmNzAwZCksIEMoMTQ0NTNiNWNjM2Q4MjM5
NiksIEMoNGVmNzAwYzMzZWQyNzhiYyksCi0gICAgIEMoMTYzOWM3MmZmYzAwZDEyZSksIEMoZmIx
NDBlZTYxNTVmNzAwZCksIEMoMmU2YjVjOTZhNjYyMDg2MiksCi0gICAgIEMoYTFmMTM2OTk4Y2Jl
MTljKSwgQyg3NGUwNThhM2I2YzVhNzEyKSwgQyg5M2RjZjZiZDMzOTI4YjE3KSwgQyg1YzJmYWVi
Myl9LAorICAgICBDKDVjMmZhZWIzKX0sCiAgICAge0MoZWFiODExMmM1NjBiOTY3YiksIEMoOTdm
NTUwYjU4ZTg5ZGJhZSksIEMoODQ2ZWQ1MDZkMzA0MDUxZiksCi0gICAgIEMoMjc2YWEzNzc0NGI1
YTAyOCksIEMoOGMxMDgwMGVlOTBlYTU3MyksIEMoZTZlNTdkMmIzM2ExZTBiNyksCi0gICAgIEMo
OTFmODM1NjNjZDNiOWRkYSksIEMoMjc2YWEzNzc0NGI1YTAyOCksIEMoOGMxMDgwMGVlOTBlYTU3
MyksCi0gICAgIEMoZTZlNTdkMmIzM2ExZTBiNyksIEMoOTFmODM1NjNjZDNiOWRkYSksIEMoYWZi
YjQ3Mzk1NzA3MzhhMSksCi0gICAgIEMoNDQwYmE5OGRhNWQ4ZjY5KSwgQyhmZGU0ZTliMGVkYTIw
MzUwKSwgQyhlNjdkZmE1YTIxMzhmYTEpLCBDKDUxYjVmYzZmKX0sCisgICAgIEMoNTFiNWZjNmYp
fSwKICAgICB7QygxYWRkY2YwMzg2ZDM1MzUxKSwgQyhiNWY0MzY1NjFmOGYxNDg0KSwgQyg4NWQz
OGUyMjE4MWM5YmIxKSwKLSAgICAgQyhmZjVjMDNmMDAzYzFmZWZlKSwgQyhlMTA5ODY3MGFmZTdm
ZjYpLCBDKGVhNDQ1MDMwY2Y4NmRlMTkpLAotICAgICBDKGYxNTVjNjhiNWMyOTY3ZjgpLCBDKGZm
NWMwM2YwMDNjMWZlZmUpLCBDKGUxMDk4NjcwYWZlN2ZmNiksCi0gICAgIEMoZWE0NDUwMzBjZjg2
ZGUxOSksIEMoZjE1NWM2OGI1YzI5NjdmOCksIEMoOTVkMzFiMTQ1ZGJiMmU5ZSksCi0gICAgIEMo
OTE0ZmUxY2EzZGViMzI2NSksIEMoNjA2NjAyMGIxMzU4Y2NjMSksIEMoYzc0YmI3ZTJkZWUxNTAz
NiksCiAgICAgIEMoMzNkOTQ3NTIpfSwKICAgICB7QyhkNDQ1YmE4NGJmODAzZTA5KSwgQygxMjE2
YzI0OTcwMzhmODA0KSwgQygyMjkzMjE2ZWEyMjM3MjA3KSwKLSAgICAgQyhlMjE2NDQ1MWM2NTFh
ZGZiKSwgQyhiMjUzNGU2NTQ3N2Y5ODIzKSwgQyg0ZDcwNjkxYTY5NjcxZTM0KSwKLSAgICAgQygx
NWJlNDk2M2RiZGU4MTQzKSwgQyhlMjE2NDQ1MWM2NTFhZGZiKSwgQyhiMjUzNGU2NTQ3N2Y5ODIz
KSwKLSAgICAgQyg0ZDcwNjkxYTY5NjcxZTM0KSwgQygxNWJlNDk2M2RiZGU4MTQzKSwgQyg3NjJl
NzVjNDA2YzVlOWEzKSwKLSAgICAgQyg3Yjc1NzlmN2UwMzU2ODQxKSwgQyg0ODA1MzNlYjA2NmRm
Y2U1KSwgQyg5MGFlMTRlYTZiZmViNGFlKSwKICAgICAgQyhiMGM5Mjk0OCl9LAogICAgIHtDKDM3
MjM1YTA5NmE4YmU0MzUpLCBDKGQ5YjczMTMwNDkzNTg5YzIpLCBDKDNiMTAyNGY1OTM3OGQzYmUp
LAotICAgICBDKGFkMTU5ZjU0MmQ4MWYwNGUpLCBDKDQ5NjI2YTk3YTk0NjA5NiksIEMoZDhkMzk5
OGJmMDlmZDMwNCksCi0gICAgIEMoZDEyN2E0MTFlYWU2OTQ1OSksIEMoYWQxNTlmNTQyZDgxZjA0
ZSksIEMoNDk2MjZhOTdhOTQ2MDk2KSwKLSAgICAgQyhkOGQzOTk4YmYwOWZkMzA0KSwgQyhkMTI3
YTQxMWVhZTY5NDU5KSwgQyg4ZjMyNTNjNGViNzg1YTdiKSwKLSAgICAgQyg0MDQ5MDYyZjM3ZTYy
Mzk3KSwgQyhiOWZhMDRkM2I2NzBlNWMxKSwgQygxMjExYTc5NjdhYzkzNTBmKSwKICAgICAgQyhj
NzE3MTU5MCl9LAogICAgIHtDKDc2M2FkNmVhMmZlMWM5OWQpLCBDKGNmN2FmNTM2OGFjMWUyNmIp
LCBDKDRkNWU0NTFiM2JiOGQzZDQpLAotICAgICBDKDM3MTJlYjkxM2QwNGUyZjIpLCBDKDJmOTUw
MGQzMTljODRkODkpLCBDKDRhYzZlYjIxYThjZjA2ZjkpLAotICAgICBDKDdkMTkxN2FmY2RlNDI3
NDQpLCBDKDM3MTJlYjkxM2QwNGUyZjIpLCBDKDJmOTUwMGQzMTljODRkODkpLAotICAgICBDKDRh
YzZlYjIxYThjZjA2ZjkpLCBDKDdkMTkxN2FmY2RlNDI3NDQpLCBDKDZiNTg2MDRiNWRkMTA5MDMp
LAotICAgICBDKGM0Mjg4ZGZiYzFlMzE5ZmMpLCBDKDIzMGY3NWNhOTY4MTdjNmUpLCBDKDg4OTRj
YmEzYjc2Mzc1NmMpLAogICAgICBDKDI0MGE2N2ZiKX0sCiAgICAge0MoZWE2MjdmYzg0Y2QxYjg1
NyksIEMoODVlMzcyNDk0NTIwMDcxZiksIEMoNjllYzYxODAwODQ1NzgwYiksCi0gICAgIEMoYTNj
MWM1Y2ExYjAzNjcpLCBDKGViNjkzMzk5NzI3MmJiM2QpLCBDKDc2YTcyY2I2MjY5MmE2NTUpLAot
ICAgICBDKDE0MGJiNTUzMWVkZjc1NmUpLCBDKGEzYzFjNWNhMWIwMzY3KSwgQyhlYjY5MzM5OTcy
NzJiYjNkKSwKLSAgICAgQyg3NmE3MmNiNjI2OTJhNjU1KSwgQygxNDBiYjU1MzFlZGY3NTZlKSwg
Qyg4ZDBkODA2N2QxYzkyNWY0KSwKLSAgICAgQyg3YjNmYTU2ZDhkNzdhMTBjKSwgQygyYmQwMDI4
N2IwOTQ2ZDg4KSwgQyhmMDhjOGU0YmQ2NWI4OTcwKSwKICAgICAgQyhlMTg0M2NkNSl9LAogICAg
IHtDKDFmMmZmZDc5ZjJjZGMwYzgpLCBDKDcyNmExYmMzMWIzMzdhYWEpLCBDKDY3OGI3ZjI3NWVm
OTY0MzQpLAotICAgICBDKDVhYTgyYmZhYTk5ZDM5NzgpLCBDKGMxOGY5NmNhZGU1Y2UxOGQpLCBD
KDM4NDA0NDkxZjllMzRjMDMpLAotICAgICBDKDg5MWZiODkyNmJhMDQxOGMpLCBDKDVhYTgyYmZh
YTk5ZDM5NzgpLCBDKGMxOGY5NmNhZGU1Y2UxOGQpLAotICAgICBDKDM4NDA0NDkxZjllMzRjMDMp
LCBDKDg5MWZiODkyNmJhMDQxOGMpLCBDKGU1ZjY5YTYzOTgxMTRjMTUpLAotICAgICBDKDdiOGRl
ZDM2MjNiYzZiMWQpLCBDKDJmM2U1YzVkYTVmZjcwZTgpLCBDKDFhYjE0MmFkZGVhNmE5ZWMpLAog
ICAgICBDKGZkYTE0NTJiKX0sCiAgICAge0MoMzlhOWUxNDZlYzRiMzIxMCksIEMoZjYzZjc1ODAy
YTc4YjFhYyksIEMoZTJlMjI1MzljOTQ3NDFjMyksCi0gICAgIEMoOGIzMDVkNTMyZTYxMjI2ZSks
IEMoY2FlYWU4MGRhMmVhMmUpLCBDKDg4YTYyODlhNzZhYzY4NGUpLAotICAgICBDKDhjZTViNWY5
ZGYxY2JkODUpLCBDKDhiMzA1ZDUzMmU2MTIyNmUpLCBDKGNhZWFlODBkYTJlYTJlKSwKLSAgICAg
Qyg4OGE2Mjg5YTc2YWM2ODRlKSwgQyg4Y2U1YjVmOWRmMWNiZDg1KSwgQyg4YWUxZmM0Nzk4ZTAw
ZDU3KSwKLSAgICAgQyhlNzE2NGI4ZmIzNjRmYzQ2KSwgQyg2YTk3OGM5YmQzYTY2OTQzKSwgQyhl
ZjEwZDVhZTRkZDA4ZGMpLCBDKGEyY2FkMzMwKX0sCisgICAgIEMoYTJjYWQzMzApfSwKICAgICB7
Qyg3NGNiYTMwM2UyZGQ5ZDZkKSwgQyg2OTI2OTliODMyODlmYWQxKSwgQyhkZmI5YWE3ODc0Njc4
NDgwKSwKLSAgICAgQyg3NTEzOTBhOGE1YzQxYmRjKSwgQyg2ZWU1ZmJmODc2MDVkMzQpLCBDKDZj
YTczZjYxMGYzYThmN2MpLAotICAgICBDKGU4OThiM2M5OTY1NzBhZCksIEMoNzUxMzkwYThhNWM0
MWJkYyksIEMoNmVlNWZiZjg3NjA1ZDM0KSwKLSAgICAgQyg2Y2E3M2Y2MTBmM2E4ZjdjKSwgQyhl
ODk4YjNjOTk2NTcwYWQpLCBDKDk4MTY4YTU4NThmYzcxMTApLAotICAgICBDKDZmOTg3ZmEyN2Fh
MGRhYTIpLCBDKGYyNWUzZTE4MGQ0YjM2YTMpLCBDKGQwYjAzNDk1YWViMWJlOGEpLAogICAgICBD
KDUzNDY3ZTE2KX0sCiAgICAge0MoNGNiYzJiNzNhNDMwNzFlMCksIEMoNTZjNWRiNGM0Y2E0ZTBi
NyksIEMoMWIyNzVhMTYyZjQ2YmQzZCksCi0gICAgIEMoYjg3YTMyNmU0MTM2MDRiZiksIEMoZDhm
OWE1ZmEyMTRiMDNhYiksIEMoOGE4YmI4MjY1NzcxY2Y4OCksCi0gICAgIEMoYTY1NTMxOTA1NGY2
ZTcwZiksIEMoYjg3YTMyNmU0MTM2MDRiZiksIEMoZDhmOWE1ZmEyMTRiMDNhYiksCi0gICAgIEMo
OGE4YmI4MjY1NzcxY2Y4OCksIEMoYTY1NTMxOTA1NGY2ZTcwZiksIEMoYjQ5OWNiOGU2NWE5YWY0
NCksCi0gICAgIEMoYmVlN2ZhZmNjODMwNzQ5MSksIEMoNWQyZTU1ZmE5YjI3Y2RhMiksIEMoNjNi
MTIwZjVmYjJkNmVlNSksCiAgICAgIEMoZGExNGE4ZDApfSwKICAgICB7Qyg4NzU2MzhiOTcxNWQy
MjIxKSwgQyhkOWJhMDYxNWMwYzU4NzQwKSwgQyg2MTZkNGJlMmRmZTgyNWFhKSwKLSAgICAgQyg1
ZGYyNWYxM2VhN2JjMjg0KSwgQygxNjVlZGZhYWZkMjU5OGZiKSwgQyhhZjcyMTVjNWM3MThjNjk2
KSwKLSAgICAgQyhlOWYyZjljYTY1NWU3NjkpLCBDKDVkZjI1ZjEzZWE3YmMyODQpLCBDKDE2NWVk
ZmFhZmQyNTk4ZmIpLAotICAgICBDKGFmNzIxNWM1YzcxOGM2OTYpLCBDKGU5ZjJmOWNhNjU1ZTc2
OSksIEMoZTQ1OWNmY2I1NjVkM2QyZCksCi0gICAgIEMoNDFkMDMyNjMxYmUyNDE4YSksIEMoYzUw
NWRiMDVmZDk0NmY2MCksIEMoNTQ5OTAzOTRhNzE0ZjVkZSksCiAgICAgIEMoNjczMzM1NTEpfSwK
ICAgICB7QyhmYjY4NmIyNzgyOTk0YThkKSwgQyhlZGVlNjA2OTM3NTZiYjQ4KSwgQyhlNmJjM2Nh
ZTBkZWQyZWY1KSwKLSAgICAgQyg1OGViNGQwM2IyYzNkZGY1KSwgQyg2ZDI1NDI5OTVmOTE4OWYx
KSwgQyhjMGJlZWM1OGE1ZjVmZWEyKSwKLSAgICAgQyhlZDY3NDM2ZjQyZTJhNzhiKSwgQyg1OGVi
NGQwM2IyYzNkZGY1KSwgQyg2ZDI1NDI5OTVmOTE4OWYxKSwKLSAgICAgQyhjMGJlZWM1OGE1ZjVm
ZWEyKSwgQyhlZDY3NDM2ZjQyZTJhNzhiKSwgQyhkZmVjNzYzY2RiMmI1MTkzKSwKLSAgICAgQyg3
MjRhOGQ1MzQ1YmQyZDYpLCBDKDk0ZDRmZDFiODE0NTdjMjMpLCBDKDI4ZTg3YzUwY2RlZGU0NTMp
LCBDKGEwZWJkNjZlKX0sCisgICAgIEMoYTBlYmQ2NmUpfSwKICAgICB7QyhhYjIxZDgxYTkxMWU2
NzIzKSwgQyg0YzMxYjA3MzU0ODUyZjU5KSwgQyg4MzVkYTM4NGM5Mzg0NzQ0KSwKLSAgICAgQyg3
Zjc1OWRkZGM2ZTg1NDlhKSwgQyg2MTZkZDBjYTAyMmM4NzM1KSwgQyg5NDcxN2FkNGJjMTVjZWIz
KSwKLSAgICAgQyhmNjZjN2JlODA4YWIzNmUpLCBDKDdmNzU5ZGRkYzZlODU0OWEpLCBDKDYxNmRk
MGNhMDIyYzg3MzUpLAotICAgICBDKDk0NzE3YWQ0YmMxNWNlYjMpLCBDKGY2NmM3YmU4MDhhYjM2
ZSksIEMoYWY4Mjg2YjU1MGIyZjRiNyksCi0gICAgIEMoNzQ1YmQyMTdkMjBhOWY0MCksIEMoYzcz
YmZiOWM1NDMwZjAxNSksIEMoNTVlNjU5MjI2NjZlM2ZjMiksCiAgICAgIEMoNGI3Njk1OTMpfSwK
ICAgICB7QygzM2QwMTNjYzBjZDQ2ZWNmKSwgQygzZGU3MjY0MjNhZWExMjJjKSwgQygxMTZhZjUx
MTE3ZmUyMWE5KSwKLSAgICAgQyhmMjcxYmE0NzRlZGM1NjJkKSwgQyhlNjU5NmU2N2Y5ZGQzZWJk
KSwgQyhjMGEyODhlZGY4MDhmMzgzKSwKLSAgICAgQyhiM2RlZjcwNjgxYzZiYWJjKSwgQyhmMjcx
YmE0NzRlZGM1NjJkKSwgQyhlNjU5NmU2N2Y5ZGQzZWJkKSwKLSAgICAgQyhjMGEyODhlZGY4MDhm
MzgzKSwgQyhiM2RlZjcwNjgxYzZiYWJjKSwgQyg3ZGE3ODY0ZTk5ODliMDk1KSwKLSAgICAgQyhi
ZjJmODcxODY5M2NkOGExKSwgQygyNjRhOTE0NDE2NmRhNzc2KSwgQyg2MWFkOTA2NzY4NzBiZWI2
KSwKICAgICAgQyg2YWE3NTYyNCl9LAotICAgIHtDKDhjYTkyYzdjZDM5ZmFlNWQpLCBDKDMxN2U2
MjBlMWJmMjBmMSksIEMoNGYwYjMzYmYyMTk0Yjk3ZiksCi0gICAgIEMoNDU3NDRhZmNmMTMxZGJl
ZSksIEMoOTcyMjIzOTJjMjU1OTM1MCksIEMoNDk4YTE5YjI4MGM2ZDZlZCksCi0gICAgIEMoODNh
YzJjMzZhY2RiOGQ0OSksIEMoNDU3NDRhZmNmMTMxZGJlZSksIEMoOTcyMjIzOTJjMjU1OTM1MCks
Ci0gICAgIEMoNDk4YTE5YjI4MGM2ZDZlZCksIEMoODNhYzJjMzZhY2RiOGQ0OSksIEMoN2E2OTY0
NWMyOTRkYWE2MiksCi0gICAgIEMoYWJlOWQyYmU4Mjc1YjNkMiksIEMoMzk1NDIwMTlkZTM3MTA4
NSksIEMoN2Y0ZWZhYzg0ODhjZDZhZCksCi0gICAgIEMoNjAyYTNmOTYpfSwKLSAgICB7QyhmZGRl
M2IwM2YwMThmNDNlKSwgQygzOGY5MzI5NDZjNzg2NjApLCBDKGM4NDA4NGNlOTQ2ODUxZWUpLAot
ICAgICBDKGI2ZGQwOWJhNzg1MWM3YWYpLCBDKDU3MGRlNGUxYmIxM2IxMzMpLCBDKGM0ZTc4NGVi
OTcyMTE2NDIpLAotICAgICBDKDgyODVhN2ZjZGNjN2M1OGQpLCBDKGI2ZGQwOWJhNzg1MWM3YWYp
LCBDKDU3MGRlNGUxYmIxM2IxMzMpLAotICAgICBDKGM0ZTc4NGViOTcyMTE2NDIpLCBDKDgyODVh
N2ZjZGNjN2M1OGQpLCBDKGQ0MjFmNDc5OTBkYTg5OWIpLAotICAgICBDKDhhZWQ0MDljOTk3ZWFh
MTMpLCBDKDdhMDQ1OTI5YzJlMjljY2YpLCBDKGIzNzM2ODJhNjIwMmM4NmIpLAotICAgICBDKGNk
MTgzYzRkKX0sCisgICAge0MoOGNhOTJjN2NkMzlmYWU1ZCksIEMoMzE3ZTYyMGUxYmYyMGYxKSwg
Qyg0ZjBiMzNiZjIxOTRiOTdmKSwgQyg2MDJhM2Y5Nil9LAorICAgIHtDKGZkZGUzYjAzZjAxOGY0
M2UpLCBDKDM4ZjkzMjk0NmM3ODY2MCksIEMoYzg0MDg0Y2U5NDY4NTFlZSksIEMoY2QxODNjNGQp
fSwKICAgICB7Qyg5Yzg1MDIwNTBlOWM5NDU4KSwgQyhkNmQyYTFhNjk5NjRiZWI5KSwgQygxNjc1
NzY2ZjQ4MDIyOWI1KSwKLSAgICAgQygyMTZlMWQ2Yzg2Y2I1MjRjKSwgQyhkMDFjZjZmZDRmNDA2
NWMwKSwgQyhmZmZhNGVjNWI0ODJlYTBmKSwKLSAgICAgQyhhMGUyMGVlNmE1NDA0YWMxKSwgQygy
MTZlMWQ2Yzg2Y2I1MjRjKSwgQyhkMDFjZjZmZDRmNDA2NWMwKSwKLSAgICAgQyhmZmZhNGVjNWI0
ODJlYTBmKSwgQyhhMGUyMGVlNmE1NDA0YWMxKSwgQyhjMWIwMzdlNGVlYmFmODVlKSwKLSAgICAg
Qyg2MzRlM2Q3YzNlYmY4OWViKSwgQyhiY2RhOTcyMzU4YzY3ZDEpLCBDKGZkMTM1MjE4MWU1Yjg1
NzgpLCBDKDk2MGE0ZDA3KX0sCisgICAgIEMoOTYwYTRkMDcpfSwKICAgICB7QygzNDgxNzZjYTJm
YTJmZGQyKSwgQygzYTg5YzUxNGNjMzYwYzJkKSwgQyg5ZjkwYjhhZmIzMThkNmQwKSwKLSAgICAg
QyhiY2VlZTA3YzExYTlhYzMwKSwgQygyZTJkNDdkZmY4ZTc3ZWI3KSwgQygxMWEzOTRjZDdiNmQ2
MTRhKSwKLSAgICAgQygxZDdjNDFkNTRlMTVjYjRhKSwgQyhiY2VlZTA3YzExYTlhYzMwKSwgQygy
ZTJkNDdkZmY4ZTc3ZWI3KSwKLSAgICAgQygxMWEzOTRjZDdiNmQ2MTRhKSwgQygxZDdjNDFkNTRl
MTVjYjRhKSwgQygxNWJhYTVhZTczMTJiMGZjKSwKLSAgICAgQyhmMzk4ZjU5NmNjOTg0NjM1KSwg
Qyg4YWI4ZmRmODdhNjc4OGU4KSwgQyhiMmI1YzEyMzRhYjQ3ZTIpLCBDKDlhZTk5OGM0KX0sCisg
ICAgIEMoOWFlOTk4YzQpfSwKICAgICB7Qyg0YTNkM2RmYmJhZWExMzBiKSwgQyg0ZTIyMWM5MjBm
NjFlZDAxKSwgQyg1NTNmZDZjZDEzMDQ1MzFmKSwKLSAgICAgQyhiZDJiMzFiNTYwODE0M2ZlKSwg
QyhhYjcxN2ExMGYyNTU0ODUzKSwgQygyOTM4NTdmMDRkMTk0ZDIyKSwKLSAgICAgQyhkNTFiZThm
YTg2ZjI1NGYwKSwgQyhiZDJiMzFiNTYwODE0M2ZlKSwgQyhhYjcxN2ExMGYyNTU0ODUzKSwKLSAg
ICAgQygyOTM4NTdmMDRkMTk0ZDIyKSwgQyhkNTFiZThmYTg2ZjI1NGYwKSwgQygxZWVlMzllMDc2
ODY5MDdlKSwKLSAgICAgQyg2MzkwMzlmZTBlOGQzMDUyKSwgQyhkNmVjMTQ3MGNlZjk3ZmYpLCBD
KDM3MGM4MmI4NjAwMzRmMGYpLCBDKDc0ZTIxNzlkKX0sCisgICAgIEMoNzRlMjE3OWQpfSwKICAg
ICB7QyhiMzcxZjc2OGNkZjRlZGI5KSwgQyhiZGVmMmFjZTZkMmRlMGYwKSwgQyhlMDViNDEwMGY3
ZjFiYWVjKSwKLSAgICAgQyhiOWUwZDQxNWI0ZWJkNTM0KSwgQyhjOTdjMmEyN2VmYWEzM2Q3KSwg
Qyg1OTFjZGIzNWY4NGVmOWRhKSwKLSAgICAgQyhhNTdkMDJkMGU4ZTM3NTZjKSwgQyhiOWUwZDQx
NWI0ZWJkNTM0KSwgQyhjOTdjMmEyN2VmYWEzM2Q3KSwKLSAgICAgQyg1OTFjZGIzNWY4NGVmOWRh
KSwgQyhhNTdkMDJkMGU4ZTM3NTZjKSwgQygyM2Y1NWYxMmQ3YzVjODdiKSwKLSAgICAgQyg0Yzdj
YTBmZTIzMjIxMTAxKSwgQyhkYmMzMDIwNDgwMzM0NTY0KSwgQyhkOTg1OTkyZjMyYzIzNmIxKSwK
ICAgICAgQyhlZTliYWUyNSl9LAotICAgIHtDKDdhMWQyZTk2OTM0ZjYxZiksIEMoZWIxNzYwYWU2
YWY3ZDk2MSksIEMoODg3ZWIwZGEwNjMwMDVkZiksCi0gICAgIEMoMjIyOGQ2NzI1ZTMxYjhhYiks
IEMoOWI5OGY3ZTRkMDE0MmU3MCksIEMoYjZhOGMyMTE1YjhlMGZlNyksCi0gICAgIEMoYjU5MWUy
ZjVhYjliOTRiMSksIEMoMjIyOGQ2NzI1ZTMxYjhhYiksIEMoOWI5OGY3ZTRkMDE0MmU3MCksCi0g
ICAgIEMoYjZhOGMyMTE1YjhlMGZlNyksIEMoYjU5MWUyZjVhYjliOTRiMSksIEMoNmMxZmVhYTgw
NjUzMThlMCksCi0gICAgIEMoNGU3ZTJjYTIxYzJlODFmYiksIEMoZTlmZTVkOGNlNzk5M2M0NSks
IEMoZWU0MTFmYTJmMTJjZjhkZiksCi0gICAgIEMoYjY2ZWRmMTApfSwKKyAgICB7Qyg3YTFkMmU5
NjkzNGY2MWYpLCBDKGViMTc2MGFlNmFmN2Q5NjEpLCBDKDg4N2ViMGRhMDYzMDA1ZGYpLCBDKGI2
NmVkZjEwKX0sCiAgICAge0MoOGJlNTNkNDY2ZDQ3MjhmMiksIEMoODZhNWFjOGUwZDQxNjY0MCks
IEMoOTg0YWE0NjRjZGI1YzhiYiksCi0gICAgIEMoODcwNDllNjhmNWQzOGU1OSksIEMoN2Q4Y2U0
NGVjNmJkNzc1MSksIEMoY2MyOGQwOGFiNDE0ODM5YyksCi0gICAgIEMoNmM4ZjBiZDM0ZmU4NDNl
MyksIEMoODcwNDllNjhmNWQzOGU1OSksIEMoN2Q4Y2U0NGVjNmJkNzc1MSksCi0gICAgIEMoY2My
OGQwOGFiNDE0ODM5YyksIEMoNmM4ZjBiZDM0ZmU4NDNlMyksIEMoYjg0OTZkY2RjMDFmM2U0Nyks
Ci0gICAgIEMoMmYwMzEyNWMyODJhYzI2KSwgQyg4MmE4Nzk3YmEzZjVlZjA3KSwgQyg3Yzk3N2E0
ZDEwYmY1MmI4KSwgQyhkNjIwOTczNyl9LAotICAgIHtDKDgyOTY3N2ViMDNhYmYwNDIpLCBDKDQz
Y2FkMDA0YjZiYzJjMCksIEMoZjJmMjI0NzU2ODAzOTcxYSksCi0gICAgIEMoOThkMGRiZjc5NjQ4
MDE4NyksIEMoZmJjYjVmM2UxYmVmNTc0MiksIEMoNWFmMmEwNDYzYmY2ZTkyMSksCi0gICAgIEMo
YWQ5NTU1YmYwMTIwYjNhMyksIEMoOThkMGRiZjc5NjQ4MDE4NyksIEMoZmJjYjVmM2UxYmVmNTc0
MiksCi0gICAgIEMoNWFmMmEwNDYzYmY2ZTkyMSksIEMoYWQ5NTU1YmYwMTIwYjNhMyksIEMoMjgz
ZTM5YjNkYzk5ZjQ0NyksCi0gICAgIEMoYmVkYWExYTRhMDI1MGMyOCksIEMoOWQ1MDU0NjYyNGZm
OWE1NyksIEMoNGFiYWY1MjNkMWMwOTBmNiksIEMoYjk5NGE4OCl9LAotICAgIHtDKDc1NDQzNWJh
ZTM0OTZmYyksIEMoNTcwN2ZjMDA2ZjA5NGRjZiksIEMoODk1MWM4NmFiMTlkOGU0MCksCi0gICAg
IEMoNTdjNTIwOGU4ZjAyMWE3NyksIEMoZjc2NTNmYmI2OWNkOTI3NiksIEMoYTQ4NDQxMGFmMjFk
NzVjYiksCi0gICAgIEMoZjE5YjY4NDRiM2Q2MjdlOCksIEMoNTdjNTIwOGU4ZjAyMWE3NyksIEMo
Zjc2NTNmYmI2OWNkOTI3NiksCi0gICAgIEMoYTQ4NDQxMGFmMjFkNzVjYiksIEMoZjE5YjY4NDRi
M2Q2MjdlOCksIEMoZjM3NDAwZmMzZmZkOTUxNCksCi0gICAgIEMoMzZhZTBkODIxNzM0ZWRmZCks
IEMoNWYzNzgyMGFmMWYxZjMwNiksIEMoYmU2MzdkNDBlNmE1YWQwKSwgQyhhMDVkNDNjMCl9LAor
ICAgICBDKGQ2MjA5NzM3KX0sCisgICAge0MoODI5Njc3ZWIwM2FiZjA0MiksIEMoNDNjYWQwMDRi
NmJjMmMwKSwgQyhmMmYyMjQ3NTY4MDM5NzFhKSwgQyhiOTk0YTg4KX0sCisgICAge0MoNzU0NDM1
YmFlMzQ5NmZjKSwgQyg1NzA3ZmMwMDZmMDk0ZGNmKSwgQyg4OTUxYzg2YWIxOWQ4ZTQwKSwgQyhh
MDVkNDNjMCl9LAogICAgIHtDKGZkYTk4NzdlYThlMzgwNWYpLCBDKDMxZTg2OGI2ZmZkNTIxYjcp
LCBDKGIwOGM5MDY4MWZiNmEwZmQpLAotICAgICBDKDY4MTEwYTdmODNmNWQzZmYpLCBDKDZkNzdl
MDQ1OTAxYjg1YTgpLCBDKDg0ZWY2ODExMTMwMzZkOGIpLAotICAgICBDKDNiOWY4ZTM5MjhmNTYx
NjApLCBDKDY4MTEwYTdmODNmNWQzZmYpLCBDKDZkNzdlMDQ1OTAxYjg1YTgpLAotICAgICBDKDg0
ZWY2ODExMTMwMzZkOGIpLCBDKDNiOWY4ZTM5MjhmNTYxNjApLCBDKGZjOGI3ZjU2YzEzMDgzNSks
Ci0gICAgIEMoYTExZjNlODAwNjM4ZTg0MSksIEMoZDk1NzIyNjdmNWNmMjhjMSksIEMoNzg5N2M4
MTQ5ODAzZjJhYSksCiAgICAgIEMoYzc5ZjczYTgpfSwKICAgICB7QygyZTM2ZjUyM2NhOGY1ZWI1
KSwgQyg4YjIyOTMyZjg5YjI3NTEzKSwgQygzMzFjZDZlY2JmYWRjMWJiKSwKLSAgICAgQyhkMWJm
ZTRkZjEyYjA0Y2JmKSwgQyhmNThjMTcyNDNmZDYzODQyKSwgQygzYTQ1M2NkYmE4MGE2MGFmKSwK
LSAgICAgQyg1NzM3YjJjYTc0NzBlYTk1KSwgQyhkMWJmZTRkZjEyYjA0Y2JmKSwgQyhmNThjMTcy
NDNmZDYzODQyKSwKLSAgICAgQygzYTQ1M2NkYmE4MGE2MGFmKSwgQyg1NzM3YjJjYTc0NzBlYTk1
KSwgQyg1NGQ0NGEzZjQ0NzcwMzBjKSwKLSAgICAgQyg4MTY4ZTAyZDQ4NjlhYTdmKSwgQyg3N2Yz
ODNhMTc3Nzg1NTlkKSwgQyg5NWUxNzM3ZDc3YTI2OGZjKSwKICAgICAgQyhhNDkwYWZmNSl9LAog
ICAgIHtDKDIxYTM3OGVmNzY4MjgyMDgpLCBDKGE1YzEzMDM3ZmE4NDFkYTIpLCBDKDUwNmQyMmE1
M2ZiZTk4MTIpLAotICAgICBDKDYxYzljOTVkOTEwMTdkYTUpLCBDKDE2ZjdjODNiYTY4ZjUyNzkp
LCBDKDljMDYxOWIwODA4ZDA1ZjcpLAotICAgICBDKDgzYzExN2NlNGU2YjcwYTMpLCBDKDYxYzlj
OTVkOTEwMTdkYTUpLCBDKDE2ZjdjODNiYTY4ZjUyNzkpLAotICAgICBDKDljMDYxOWIwODA4ZDA1
ZjcpLCBDKDgzYzExN2NlNGU2YjcwYTMpLCBDKGNmYjRjOGFmN2ZkMDE0MTMpLAotICAgICBDKGZk
ZWYwNGU2MDJlNzIyOTYpLCBDKGVkNjEyNGQzMzc4ODliMSksIEMoNDkxOWM4NjcwN2I4MzBkYSks
IEMoZGZhZDY1YjQpfSwKLSAgICB7QyhjY2RkNTYwMDA1NGIxNmNhKSwgQyhmNzg4NDZlODQyMDRj
YjdiKSwgQygxZjlmYWVjODJjMjRlYWM5KSwKLSAgICAgQyg1ODYzNDAwNGM3YjJkMTlhKSwgQygy
NGJiNWY1MWVkM2I5MDczKSwgQyg0NjQwOWRlMDE4MDMzZDAwKSwKLSAgICAgQyg0YTk4MDVlZWQ1
YWM4MDJlKSwgQyg1ODYzNDAwNGM3YjJkMTlhKSwgQygyNGJiNWY1MWVkM2I5MDczKSwKLSAgICAg
Qyg0NjQwOWRlMDE4MDMzZDAwKSwgQyg0YTk4MDVlZWQ1YWM4MDJlKSwgQyhlMThkZThkYjMwNmJh
ZjgyKSwKLSAgICAgQyg0NmJiZjc1ZjFmYTAyNWZmKSwgQyg1ZmFmMmZiMDliZTA5NDg3KSwgQygz
ZmJjNjJiZDRlNTU4ZmIzKSwgQygxZDA3ZGZiKX0sCisgICAgIEMoZGZhZDY1YjQpfSwKKyAgICB7
QyhjY2RkNTYwMDA1NGIxNmNhKSwgQyhmNzg4NDZlODQyMDRjYjdiKSwgQygxZjlmYWVjODJjMjRl
YWM5KSwgQygxZDA3ZGZiKX0sCiAgICAge0MoNzg1NDQ2OGY0ZTBjYWJkMCksIEMoM2EzZjZiNGYw
OThkMDY5MiksIEMoYWUyNDIzZWM3Nzk5ZDMwZCksCi0gICAgIEMoMjljMzUyOWViMTY1ZWViYSks
IEMoNDQzZGUzNzAzYjY1N2MzNSksIEMoNjZhY2JjZTMxYWUxYmM4ZCksCi0gICAgIEMoMWFjYzk5
ZWZmZTFkNTQ3ZSksIEMoMjljMzUyOWViMTY1ZWViYSksIEMoNDQzZGUzNzAzYjY1N2MzNSksCi0g
ICAgIEMoNjZhY2JjZTMxYWUxYmM4ZCksIEMoMWFjYzk5ZWZmZTFkNTQ3ZSksIEMoY2YwN2Y4YTU3
OTA2NTczZCksCi0gICAgIEMoMzFiYWZiMGJiYjlhODZlNyksIEMoNDBjNjk0OTI3MDJhOTM0Niks
IEMoN2RmNjFmZGFhMGI4NThhZiksCiAgICAgIEMoNDE2ZGY5YTApfSwKICAgICB7Qyg3Zjg4ZGI1
MzQ2ZDhmOTk3KSwgQyg4OGVhYzlhYWNjNjUzNzk4KSwgQyg2OGE0ZDAyOTVmOGVlZmExKSwKLSAg
ICAgQyhhZTU5Y2E4NmY0YzMzMjNkKSwgQygyNTkwNmMwOTkwNmQ1YzRjKSwgQyg4ZGQyYWEwYzBh
NjU4NGFlKSwKLSAgICAgQygyMzJhN2Q5NmIzOGY0MGU5KSwgQyhhZTU5Y2E4NmY0YzMzMjNkKSwg
QygyNTkwNmMwOTkwNmQ1YzRjKSwKLSAgICAgQyg4ZGQyYWEwYzBhNjU4NGFlKSwgQygyMzJhN2Q5
NmIzOGY0MGU5KSwgQyg4OTg2ZWUwMGEyZWQwMDQyKSwKLSAgICAgQyhjNDlhZTdlNDI4YzhhN2Qx
KSwgQyhiN2RkODI4MDcxM2FjOWMyKSwgQyhlMDE4NzIwYWVkMWViYzI4KSwKICAgICAgQygxZjhm
YjljYyl9LAogICAgIHtDKGJiM2ZiNWZiMDFkNjBmY2YpLCBDKDFiN2NjMDg0N2EyMTVlYjYpLCBD
KDEyNDZjOTk0NDM3OTkwYTEpLAotICAgICBDKGQ0ZWRjOTU0YzA3Y2Q4ZjMpLCBDKDIyNGY0N2U3
YzAwYTMwYWIpLCBDKGQ1YWQ3YWQ3ZjQxZWYwYzYpLAotICAgICBDKDU5ZTA4OTI4MWQ4NjlmZDcp
LCBDKGQ0ZWRjOTU0YzA3Y2Q4ZjMpLCBDKDIyNGY0N2U3YzAwYTMwYWIpLAotICAgICBDKGQ1YWQ3
YWQ3ZjQxZWYwYzYpLCBDKDU5ZTA4OTI4MWQ4NjlmZDcpLCBDKGYyOTM0MGQwN2ExNGI2ZjEpLAot
ICAgICBDKGM4N2M1ZWY3NmQ5YzRlZjMpLCBDKDQ2MzExODc5NDE5M2E5YSksIEMoMjkyMmRjYjA1
NDBmMGRiYyksIEMoN2FiZjQ4ZTMpfSwKKyAgICAgQyg3YWJmNDhlMyl9LAogICAgIHtDKDJlNzgz
ZTE3NjFhY2Q4NGQpLCBDKDM5MTU4MDQyYmFjOTc1YTApLCBDKDFjZDIxYzVhODA3MTE4OGQpLAot
ICAgICBDKGIxYjdlYzQ0ZjkzMDIxNzYpLCBDKDVjYjQ3NjQ1MGRjMGMyOTcpLCBDKGRjNWVmNjUy
NTIxZWY2YTIpLAotICAgICBDKDNjYzc5YTllMzM0ZTFmODQpLCBDKGIxYjdlYzQ0ZjkzMDIxNzYp
LCBDKDVjYjQ3NjQ1MGRjMGMyOTcpLAotICAgICBDKGRjNWVmNjUyNTIxZWY2YTIpLCBDKDNjYzc5
YTllMzM0ZTFmODQpLCBDKDc2OWUyYTI4M2RiY2M2NTEpLAotICAgICBDKDlmMjRiMTA1Yzg1MTFk
M2YpLCBDKGMzMWMxNTU3NWRlMmYyN2UpLCBDKGVjZmVjZjMyYzNhZTJkNjYpLAogICAgICBDKGRl
YTRlM2RkKX0sCiAgICAge0MoMzkyMDU4MjUxY2YyMmFjYyksIEMoOTQ0ZWM0NDc1ZWFkNDYyMCks
IEMoYjMzMGExMGI1Y2I5NDE2NiksCi0gICAgIEMoNTRiYzliZWU3Y2JlMTc2NyksIEMoNDg1ODIw
YmRiZTQ0MjQzMSksIEMoNTRkNjEyMGVhMjk3MmU5MCksCi0gICAgIEMoZjQzN2EwMzQxZjI5Yjcy
YSksIEMoNTRiYzliZWU3Y2JlMTc2NyksIEMoNDg1ODIwYmRiZTQ0MjQzMSksCi0gICAgIEMoNTRk
NjEyMGVhMjk3MmU5MCksIEMoZjQzN2EwMzQxZjI5YjcyYSksIEMoOGYzMDg4NWM3ODRkNTcwNCks
Ci0gICAgIEMoYWE5NTM3NmIxNmM3OTA2YSksIEMoZTgyNjkyOGNmYWY5M2RjMyksIEMoMjBlOGY1
NGQxYzE2ZDdkOCksCiAgICAgIEMoYzYwNjRmMjIpfSwKLSAgICB7QyhhZGY1YzFlNWQ2NDE5OTQ3
KSwgQygyYTk3NDdiYzY1OWQyOGFhKSwgQyg5NWM1YjhjYjFmNWQ2MmMpLAotICAgICBDKDgwOTcz
ZWE1MzJiMGYzMTApLCBDKGE0NzE4MjlhYTljMTdkZDkpLCBDKGMyZmYzNDc5Mzk0ODA0YWIpLAot
ICAgICBDKDZiZjQ0Zjg2MDY3NTM2MzYpLCBDKDgwOTczZWE1MzJiMGYzMTApLCBDKGE0NzE4Mjlh
YTljMTdkZDkpLAotICAgICBDKGMyZmYzNDc5Mzk0ODA0YWIpLCBDKDZiZjQ0Zjg2MDY3NTM2MzYp
LCBDKDUxODRkMjk3M2U2ZGQ4MjcpLAotICAgICBDKDEyMWI5NjM2OWEzMzJkOWEpLCBDKDVjMjVk
MzQ3NWFiNjllNTApLCBDKDI2ZDI5NjFkNjI4ODQxNjgpLAotICAgICBDKDc0M2JlZDljKX0sCisg
ICAge0MoYWRmNWMxZTVkNjQxOTk0NyksIEMoMmE5NzQ3YmM2NTlkMjhhYSksIEMoOTVjNWI4Y2Ix
ZjVkNjJjKSwgQyg3NDNiZWQ5Yyl9LAogICAgIHtDKDZiYzFkYjJjMmJlZTVhYmEpLCBDKGU2M2Iw
ZWQ2MzUzMDczOTgpLCBDKDdiMmVjYTExMWYzMGRiYmMpLAotICAgICBDKDIzMGQyYjNlNDdmMDk4
MzApLCBDKGVjODYyNGE4MjFjMWNhZjQpLCBDKGVhNmVjNDExY2RiZjFjYjEpLAotICAgICBDKDVm
MzhhZTgyYWYzNjRlMjcpLCBDKDIzMGQyYjNlNDdmMDk4MzApLCBDKGVjODYyNGE4MjFjMWNhZjQp
LAotICAgICBDKGVhNmVjNDExY2RiZjFjYjEpLCBDKDVmMzhhZTgyYWYzNjRlMjcpLCBDKGE1MTll
ZjUxNWVhNzE4N2MpLAotICAgICBDKDZiYWQ1ZWZhN2ViYWUwNWYpLCBDKDc0OGFiYWNiMTFhNzRh
NjMpLCBDKGEyOGVlZjk2M2QxMzk2ZWIpLAogICAgICBDKGZjZTI1NGQ1KX0sCiAgICAge0MoYjAw
Zjg5ODIyOWVmYTUwOCksIEMoODNiNzU5MGFkN2Y2OTg1YyksIEMoMjc4MGU3MGEwNTkyZTQxZCks
Ci0gICAgIEMoNzEyMjQxM2JkYmM5NDAzNSksIEMoZTdmOTBmYWUzM2JmNzc2MyksIEMoNGI2YmQw
ZmIzMGIxMjM4NyksCi0gICAgIEMoNTU3MzU5YzBjNDRmNDhjYSksIEMoNzEyMjQxM2JkYmM5NDAz
NSksIEMoZTdmOTBmYWUzM2JmNzc2MyksCi0gICAgIEMoNGI2YmQwZmIzMGIxMjM4NyksIEMoNTU3
MzU5YzBjNDRmNDhjYSksIEMoZDU2NTZjM2Q2YmM1ZjBkKSwKLSAgICAgQyg5ODNmZjhlNWU3ODRk
YTk5KSwgQyg2Mjg0Nzk2NzFiNDQ1YmYpLCBDKGUxNzlhMWUyN2NlNjhmNWQpLCBDKGU0N2VjOWQx
KX0sCisgICAgIEMoZTQ3ZWM5ZDEpfSwKICAgICB7QyhiNTZlYjc2OWNlMGQ5YThjKSwgQyhjZTE5
NjExN2JmYmNhZjA0KSwgQyhiMjZjM2MzNzk3ZDY2MTY1KSwKLSAgICAgQyg1ZWQxMjMzOGY2MzBh
Yjc2KSwgQyhmYWIxOWZjYjMxOTExNmQpLCBDKDE2N2Y1ZjQyYjUyMTcyNGIpLAotICAgICBDKGM0
YWE1NmM0MDk1NjhkNzQpLCBDKDVlZDEyMzM4ZjYzMGFiNzYpLCBDKGZhYjE5ZmNiMzE5MTE2ZCks
Ci0gICAgIEMoMTY3ZjVmNDJiNTIxNzI0YiksIEMoYzRhYTU2YzQwOTU2OGQ3NCksIEMoNzVmZmY0
YjQyZjhlOTc3OCksCi0gICAgIEMoOTQyMThmOTQ3MTBjMWVhMyksIEMoYjdiMDVlZmI3MzhiMDZh
NiksIEMoODNmZmYyZGVhYmY5Y2QzKSwgQygzMzRhMTQ1Yyl9LAorICAgICBDKDMzNGExNDVjKX0s
CiAgICAge0MoNzBjMDYzNzY3NWI5NDE1MCksIEMoMjU5ZTE2NjkzMDViMGExNSksIEMoNDZlMWRk
OWZkMzg3YTU4ZCksCi0gICAgIEMoZmNhNGU1YmM5MjkyNzg4ZSksIEMoY2Q1MDlkYzFmYWNjZTQx
YyksIEMoYmJiYTU3NWE1OWQ4MmZlKSwKLSAgICAgQyg0ZTJlNzFjMTViNDVkNGQzKSwgQyhmY2E0
ZTViYzkyOTI3ODhlKSwgQyhjZDUwOWRjMWZhY2NlNDFjKSwKLSAgICAgQyhiYmJhNTc1YTU5ZDgy
ZmUpLCBDKDRlMmU3MWMxNWI0NWQ0ZDMpLCBDKDVkYzU0NTgyZWFkOTk5YyksCi0gICAgIEMoNzI2
MTJkMTU3MTk2M2M2ZiksIEMoMzAzMThhOWQyZDNkMTgyOSksIEMoNzg1ZGQwMGY0Y2M5YzlhMCks
CiAgICAgIEMoYWRlYzFlM2MpfSwKICAgICB7Qyg3NGMwYjhhNjgyMWZhYWZlKSwgQyhhYmFjMzlk
NzQ5MTM3MGU3KSwgQyhmYWYwYjJhNDhhNGU2YWVkKSwKLSAgICAgQyg5NjdlOTcwZGY5NjczZDJh
KSwgQyhkNDY1MjQ3Y2ZmYTQxNWMwKSwgQygzM2ExZGYwY2ExMTA3NzIyKSwKLSAgICAgQyg0OWZj
MmExMGFkY2U0YTMyKSwgQyg5NjdlOTcwZGY5NjczZDJhKSwgQyhkNDY1MjQ3Y2ZmYTQxNWMwKSwK
LSAgICAgQygzM2ExZGYwY2ExMTA3NzIyKSwgQyg0OWZjMmExMGFkY2U0YTMyKSwgQyhjNTcwN2Uw
NzlhMjg0MzA4KSwKLSAgICAgQyg1NzMwMjgyNjY2MzVkZGE2KSwgQyhmNzg2ZjVlZWU2MTI3ZmEw
KSwgQyhiMzBkNzljZWJmYjUxMjY2KSwKICAgICAgQyhmNmE5ZmJmOCl9LAogICAgIHtDKDVmYjVl
NDhhYzdiN2ZhNGYpLCBDKGE5NjE3MGYwOGY1YWNiYzcpLCBDKGJiZjVjNjNkNGY1MmExZTUpLAot
ICAgICBDKDZjYzA5ZTYwNzAwNTYzZTkpLCBDKGQxOGYyMzIyMWU5NjQ3OTEpLCBDKGZmYzIzZWVl
ZjdhZjI2ZWIpLAotICAgICBDKDY5M2E5NTRhMzYyMmEzMTUpLCBDKDgxNTMwOGEzMmE5YjBkYWYp
LCBDKGVmYjJhYjI3YmY2ZmQwYmQpLAotICAgICBDKDlmMWZmYzA5ODYxMTExMTgpLCBDKGY5YTNh
YTE3NzhlYTM5ODUpLCBDKDY5OGZlNTRiMmI5MzkzM2IpLAotICAgICBDKGRhY2MyYjI4NDA0ZDBm
MTApLCBDKDgxNTMwOGEzMmE5YjBkYWYpLCBDKGVmYjJhYjI3YmY2ZmQwYmQpLAogICAgICBDKDUz
OTgyMTBjKX0sCiB9OwogCiB2b2lkIFRlc3RVbmNoYW5naW5nKGNvbnN0IHVpbnQ2NF90KiBleHBl
Y3RlZCwgaW50IG9mZnNldCwgaW50IGxlbikgewotICBjb25zdCB1aW50MTI4IHUgPSBDaXR5SGFz
aDEyOChkYXRhICsgb2Zmc2V0LCBsZW4pOwotICBjb25zdCB1aW50MTI4IHYgPSBDaXR5SGFzaDEy
OFdpdGhTZWVkKGRhdGEgKyBvZmZzZXQsIGxlbiwga1NlZWQxMjgpOwogICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRbMF0sIENpdHlIYXNoNjQoZGF0YSArIG9mZnNldCwgbGVuKSk7Ci0gIEVYUEVDVF9FUShl
eHBlY3RlZFsxNV0sIENpdHlIYXNoMzIoZGF0YSArIG9mZnNldCwgbGVuKSk7CisgIEVYUEVDVF9F
UShleHBlY3RlZFszXSwgQ2l0eUhhc2gzMihkYXRhICsgb2Zmc2V0LCBsZW4pKTsKICAgRVhQRUNU
X0VRKGV4cGVjdGVkWzFdLCBDaXR5SGFzaDY0V2l0aFNlZWQoZGF0YSArIG9mZnNldCwgbGVuLCBr
U2VlZDApKTsKICAgRVhQRUNUX0VRKGV4cGVjdGVkWzJdLAogICAgICAgICAgICAgQ2l0eUhhc2g2
NFdpdGhTZWVkcyhkYXRhICsgb2Zmc2V0LCBsZW4sIGtTZWVkMCwga1NlZWQxKSk7Ci0gIEVYUEVD
VF9FUShleHBlY3RlZFszXSwgVWludDEyOExvdzY0KHUpKTsKLSAgRVhQRUNUX0VRKGV4cGVjdGVk
WzRdLCBVaW50MTI4SGlnaDY0KHUpKTsKLSAgRVhQRUNUX0VRKGV4cGVjdGVkWzVdLCBVaW50MTI4
TG93NjQodikpOwotICBFWFBFQ1RfRVEoZXhwZWN0ZWRbNl0sIFVpbnQxMjhIaWdoNjQodikpOwot
I2lmZGVmIF9fU1NFNF8yX18KLSAgY29uc3QgdWludDEyOCB5ID0gQ2l0eUhhc2hDcmMxMjgoZGF0
YSArIG9mZnNldCwgbGVuKTsKLSAgY29uc3QgdWludDEyOCB6ID0gQ2l0eUhhc2hDcmMxMjhXaXRo
U2VlZChkYXRhICsgb2Zmc2V0LCBsZW4sIGtTZWVkMTI4KTsKLSAgdWludDY0X3QgY3JjMjU2X3Jl
c3VsdHNbNF07Ci0gIENpdHlIYXNoQ3JjMjU2KGRhdGEgKyBvZmZzZXQsIGxlbiwgY3JjMjU2X3Jl
c3VsdHMpOwotICBFWFBFQ1RfRVEoZXhwZWN0ZWRbN10sIFVpbnQxMjhMb3c2NCh5KSk7Ci0gIEVY
UEVDVF9FUShleHBlY3RlZFs4XSwgVWludDEyOEhpZ2g2NCh5KSk7Ci0gIEVYUEVDVF9FUShleHBl
Y3RlZFs5XSwgVWludDEyOExvdzY0KHopKTsKLSAgRVhQRUNUX0VRKGV4cGVjdGVkWzEwXSwgVWlu
dDEyOEhpZ2g2NCh6KSk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgRVhQ
RUNUX0VRKGV4cGVjdGVkWzExICsgaV0sIGNyYzI1Nl9yZXN1bHRzW2ldKTsKLSAgfQotI2VuZGlm
CiB9CiAKIFRFU1QoQ2l0eUhhc2hUZXN0LCBVbmNoYW5naW5nKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9oYXNoL2ludGVybmFsL2hhc2guY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2guY2MKaW5k
ZXggNGJmNjQwOTZlN2VhYTNiMzQ2ZWQyZjJhMjJkZjJjZDJhOGU3MTU3NC4uNGFiN2E5ZjhiZmQ5
NzI3NDU0OTZlYmVlYTc5ZmRiMWVkOWZhYWY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRl
cm5hbC9oYXNoLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5jYwpAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9p
bnRlcm5hbC9oYXNoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2guaAppbmRleCA3ODIxN2Qy
ZmU3NjAwMDNjYjgzZThhMzE3YTU5MTg1ZTgyYTczMGY3Li40ZmY0YTEyNmYwY2QwYTFjOWY1ZWM4
ODdiMjAyMDA5Mjk3OTYzNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2gu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2guaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjIxLDcgKzIyMSw5IEBAIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfZW51bTxFbnVtPjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xIYXNoVmFsdWUo
CiB9CiAvLyBBYnNsSGFzaFZhbHVlKCkgZm9yIGhhc2hpbmcgZmxvYXRpbmctcG9pbnQgdmFsdWVz
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgRmxvYXQ+Ci10eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PEZsb2F0Pjo6dmFsdWUsIEg+Ojp0eXBlCit0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8RmxvYXQsIGZsb2F0Pjo6dmFsdWUg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8RmxvYXQsIGRvdWJs
ZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgSD46OnR5cGUKIEFic2xIYXNoVmFs
dWUoSCBoYXNoX3N0YXRlLCBGbG9hdCB2YWx1ZSkgewogICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6
aGFzaF9ieXRlcyhzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlID09IDAgPyAwIDogdmFsdWUpOwpAQCAtMjMxLDggKzIzMyw5IEBA
IEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBGbG9hdCB2YWx1ZSkgewogLy8gRm9yIGV4YW1w
bGUsIGluIHg4NiBzaXplb2YobG9uZyBkb3VibGUpPT0xNiBidXQgaXQgb25seSByZWFsbHkgdXNl
cyA4MC1iaXRzCiAvLyBvZiBpdC4gVGhpcyBtZWFucyB3ZSBjYW4ndCB1c2UgaGFzaF9ieXRlcyBv
biBhIGxvbmcgZG91YmxlIGFuZCBoYXZlIHRvCiAvLyBjb252ZXJ0IGl0IHRvIHNvbWV0aGluZyBl
bHNlIGZpcnN0LgotdGVtcGxhdGUgPHR5cGVuYW1lIEg+Ci1IIEFic2xIYXNoVmFsdWUoSCBoYXNo
X3N0YXRlLCBsb25nIGRvdWJsZSB2YWx1ZSkgewordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVu
YW1lIExvbmdEb3VibGU+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8TG9u
Z0RvdWJsZSwgbG9uZyBkb3VibGU+Ojp2YWx1ZSwgSD46OnR5cGUKK0Fic2xIYXNoVmFsdWUoSCBo
YXNoX3N0YXRlLCBMb25nRG91YmxlIHZhbHVlKSB7CiAgIGNvbnN0IGludCBjYXRlZ29yeSA9IHN0
ZDo6ZnBjbGFzc2lmeSh2YWx1ZSk7CiAgIHN3aXRjaCAoY2F0ZWdvcnkpIHsKICAgICBjYXNlIEZQ
X0lORklOSVRFOgpAQCAtMjY0LDcgKzI2NywxMiBAQCBIIEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0
YXRlLCBsb25nIGRvdWJsZSB2YWx1ZSkgewogLy8gQWJzbEhhc2hWYWx1ZSgpIGZvciBoYXNoaW5n
IHBvaW50ZXJzCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KIEggQWJzbEhhc2hW
YWx1ZShIIGhhc2hfc3RhdGUsIFQqIHB0cikgewotICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6aGFz
aF9ieXRlcyhzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHB0cik7CisgIGF1dG8gdiA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihwdHIpOworICAvLyBEdWUgdG8gYWxpZ25tZW50LCBwb2ludGVy
cyB0ZW5kIHRvIGhhdmUgbG93IGJpdHMgYXMgemVybywgYW5kIHRoZSBuZXh0IGZldworICAvLyBi
aXRzIGZvbGxvdyBhIHBhdHRlcm4gc2luY2UgdGhleSBhcmUgYWxzbyBtdWx0aXBsZXMgb2Ygc29t
ZSBiYXNlIHZhbHVlLgorICAvLyBNaXhpbmcgdGhlIHBvaW50ZXIgdHdpY2UgaGVscHMgcHJldmVu
dCBzdHVjayBsb3cgYml0cyBmb3IgY2VydGFpbiBhbGlnbm1lbnQKKyAgLy8gdmFsdWVzLgorICBy
ZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHYsIHYpOwogfQogCiAvLyBB
YnNsSGFzaFZhbHVlKCkgZm9yIGhhc2hpbmcgbnVsbHB0cl90CkBAIC00OTQsNiArNTAyLDE1IEBA
IEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBjb25zdCBhYnNsOjp2YXJpYW50PFQuLi4+JiB2
KSB7CiAgIH0KICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB2Lmlu
ZGV4KCkpOwogfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWJzbEhhc2hWYWx1ZSBm
b3IgT3RoZXIgVHlwZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEFic2xIYXNoVmFs
dWUgZm9yIGhhc2hpbmcgc3RkOjpiaXRzZXQgaXMgbm90IGRlZmluZWQsIGZvciB0aGUgc2FtZSBy
ZWFzb24gYXMKKy8vIGZvciB2ZWN0b3I8Ym9vbD4gKHNlZSBzdGQ6OnZlY3RvciBhYm92ZSk6IEl0
IGRvZXMgbm90IGV4cG9zZSB0aGUgcmF3IGJ5dGVzLAorLy8gYW5kIGEgZmFsbGJhY2sgdG8gc3Rk
OjpoYXNoPD4gaXMgbW9zdCBsaWtlbHkgZmFzdGVyLgorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiAvLyBoYXNoX3JhbmdlX29yX2J5dGVzKCkKQEAgLTUxOCw1MyArNTM1LDIyIEBAIGhhc2hf
cmFuZ2Vfb3JfYnl0ZXMoSCBoYXNoX3N0YXRlLCBjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ewogICByZXR1cm4gaGFzaF9zdGF0ZTsKIH0KIAotLy8gSW52b2tlSGFzaFRhZwotLy8KLS8vIElu
dm9rZUhhc2goSCwgY29uc3QgVCYpIGludm9rZXMgdGhlIGFwcHJvcHJpYXRlIGhhc2ggaW1wbGVt
ZW50YXRpb24gZm9yIGEKLS8vIGhhc2hlciBvZiB0eXBlIGBIYCBhbmQgYSB2YWx1ZSBvZiB0eXBl
IGBUYC4gSWYgYFRgIGlzIG5vdCBoYXNoYWJsZSwgdGhlcmUKLS8vIHdpbGwgYmUgbm8gbWF0Y2hp
bmcgb3ZlcmxvYWQgb2YgSW52b2tlSGFzaCgpLgotLy8gTm90ZTogU29tZSBwbGF0Zm9ybXMgKGVn
IE1TVkMpIGRvIG5vdCBzdXBwb3J0IHRoZSBkZXRlY3QgaWRpb20gb24KLS8vIHN0ZDo6aGFzaC4g
SW4gdGhvc2UgcGxhdGZvcm1zIHRoZSBsYXN0IGZhbGxiYWNrIHdpbGwgYmUgc3RkOjpoYXNoIGFu
ZAotLy8gSW52b2tlSGFzaCgpIHdpbGwgYWx3YXlzIGhhdmUgYSB2YWxpZCBvdmVybG9hZCBldmVu
IGlmIHN0ZDo6aGFzaDxUPiBpcyBub3QKLS8vIHZhbGlkLgotLy8KLS8vIFdlIHRyeSB0aGUgZm9s
bG93aW5nIG9wdGlvbnMgaW4gb3JkZXI6Ci0vLyAgICogSWYgaXNfdW5pcXVlbHlfcmVwcmVzZW50
ZWQsIGhhc2ggYnl0ZXMgZGlyZWN0bHkuCi0vLyAgICogQURMIEFic2xIYXNoVmFsdWUoSCwgY29u
c3QgVCYpIGNhbGwuCi0vLyAgICogc3RkOjpoYXNoPFQ+Ci0KLS8vIEluIE1TVkMgd2UgY2FuJ3Qg
cHJvYmUgc3RkOjpoYXNoIG9yIHN0ZGV4dDo6aGFzaCBiZWNhdXNlIGl0IHRyaWdnZXJzIGEKLS8v
IHN0YXRpY19hc3NlcnQgaW5zdGVhZCBvZiBmYWlsaW5nIHN1YnN0aXR1dGlvbi4KLSNpZiBkZWZp
bmVkKF9NU0NfVkVSKQotI2RlZmluZSBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8gMAot
I2Vsc2UgICAvLyBfTVNDX1ZFUgotI2RlZmluZSBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNP
Tl8gMQotI2VuZGlmICAvLyBfTVNDX1ZFUgotCiAjaWYgZGVmaW5lZChBQlNMX0lOVEVSTkFMX0xF
R0FDWV9IQVNIX05BTUVTUEFDRSkgJiYgXAotICAgIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9J
U09OXworICAgIEFCU0xfTUVUQV9JTlRFUk5BTF9TVERfSEFTSF9TRklOQUVfRlJJRU5ETFlfCiAj
ZGVmaW5lIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXyAxCiAjZWxzZQog
I2RlZmluZSBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8gMAogI2VuZGlm
CiAKLWVudW0gY2xhc3MgSW52b2tlSGFzaFRhZyB7Ci0gIGtVbmlxdWVseVJlcHJlc2VudGVkLAot
ICBrSGFzaFZhbHVlLAotI2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNI
XwotICBrTGVnYWN5SGFzaCwKLSNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRf
TEVHQUNZX0hBU0hfCi0gIGtTdGRIYXNoLAotICBrTm9uZQotfTsKLQogLy8gSGFzaFNlbGVjdAog
Ly8KIC8vIFR5cGUgdHJhaXQgdG8gc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBoYXNoIGltcGxlbWVu
dGF0aW9uIHRvIHVzZS4KLS8vIEhhc2hTZWxlY3Q8VD46OnZhbHVlIGlzIGFuIGluc3RhbmNlIG9m
IEludm9rZUhhc2hUYWcgdGhhdCBpbmRpY2F0ZXMgdGhlIGJlc3QKLS8vIGF2YWlsYWJsZSBoYXNo
aW5nIG1lY2hhbmlzbS4KLS8vIFNlZSBgTm90ZWAgYWJvdmUgYWJvdXQgTVNWQy4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorLy8gSGFzaFNlbGVjdDo6dHlwZTxUPiB3aWxsIGdpdmUgdGhlIHByb3Bl
ciBoYXNoIGltcGxlbWVudGF0aW9uLCB0byBiZSBpbnZva2VkCisvLyBhczoKKy8vICAgSGFzaFNl
bGVjdDo6dHlwZTxUPjo6SW52b2tlKHN0YXRlLCB2YWx1ZSkKKy8vIEFsc28sIEhhc2hTZWxlY3Q6
OnR5cGU8VD46OnZhbHVlIGlzIGEgYm9vbGVhbiBlcXVhbCB0byBgdHJ1ZWAgaWYgdGhlcmUgaXMg
YQorLy8gdmFsaWQgYEludm9rZWAgZnVuY3Rpb24uIFR5cGVzIHRoYXQgYXJlIG5vdCBoYXNoYWJs
ZSB3aWxsIGhhdmUgYSA6OnZhbHVlIG9mCisvLyBgZmFsc2VgLgogc3RydWN0IEhhc2hTZWxlY3Qg
ewogIHByaXZhdGU6CiAgIHN0cnVjdCBTdGF0ZSA6IEhhc2hTdGF0ZUJhc2U8U3RhdGU+IHsKQEAg
LTU3Myw5NSArNTU5LDc1IEBAIHN0cnVjdCBIYXNoU2VsZWN0IHsKICAgICB1c2luZyBTdGF0ZTo6
SGFzaFN0YXRlQmFzZTo6Y29tYmluZV9jb250aWd1b3VzOwogICB9OwogCi0gIC8vIGBQcm9iZTxW
LCBUYWc+Ojp2YWx1ZWAgZXZhbHVhdGVzIHRvIGBWPFQ+Ojp2YWx1ZWAgaWYgaXQgaXMgYSB2YWxp
ZAotICAvLyBleHByZXNzaW9uLCBhbmQgYGZhbHNlYCBvdGhlcndpc2UuCi0gIC8vIGBQcm9iZTxW
LCBUYWc+Ojp0YWdgIGFsd2F5cyBldmFsdWF0ZXMgdG8gYFRhZ2AuCi0gIHRlbXBsYXRlIDx0ZW1w
bGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFYsIEludm9rZUhhc2hUYWcgVGFnPgotICBzdHJ1Y3QgUHJv
YmUgewotICAgcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8VjxVPjo6dmFsdWUsIGludD46OnR5cGUgPSAwPgotICAgIHN0YXRpYyBzdGQ6
OnRydWVfdHlwZSBUZXN0KGludCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3Rh
dGljIHN0ZDo6ZmFsc2VfdHlwZSBUZXN0KGNoYXIpOwotCi0gICBwdWJsaWM6Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBJbnZva2VIYXNoVGFnIGtUYWcgPSBUYWc7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHZhbHVlID0gZGVjbHR5cGUoCi0gICAgICAgIFRlc3Q8YWJzbDo6cmVtb3ZlX2NvbnN0
X3Q8YWJzbDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj4oMCkpOjp2YWx1ZTsKKyAgc3RydWN0IFVu
aXF1ZWx5UmVwcmVzZW50ZWRQcm9iZSB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVu
YW1lIFQ+CisgICAgc3RhdGljIGF1dG8gSW52b2tlKEggc3RhdGUsIGNvbnN0IFQmIHZhbHVlKQor
ICAgICAgICAtPiBhYnNsOjplbmFibGVfaWZfdDxpc191bmlxdWVseV9yZXByZXNlbnRlZDxUPjo6
dmFsdWUsIEg+IHsKKyAgICAgIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5dGVzKHN0ZDo6
bW92ZShzdGF0ZSksIHZhbHVlKTsKKyAgICB9CiAgIH07CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+Ci0gIHVzaW5nIFByb2JlVW5pcXVlbHlSZXByZXNlbnRlZCA9IGlzX3VuaXF1ZWx5X3JlcHJl
c2VudGVkPFU+OwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICB1c2luZyBQcm9iZUhhc2hW
YWx1ZSA9Ci0gICAgICBzdGQ6OmlzX3NhbWU8U3RhdGUsIGRlY2x0eXBlKEFic2xIYXNoVmFsdWUo
c3RkOjpkZWNsdmFsPFN0YXRlPigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCBVJj4oKSkpPjsKKyAgc3RydWN0IEhh
c2hWYWx1ZVByb2JlIHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KKyAg
ICBzdGF0aWMgYXV0byBJbnZva2UoSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUpIC0+IGFic2w6OmVu
YWJsZV9pZl90PAorICAgICAgICBzdGQ6OmlzX3NhbWU8SCwKKyAgICAgICAgICAgICAgICAgICAg
IGRlY2x0eXBlKEFic2xIYXNoVmFsdWUoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUpKT46OnZhbHVl
LAorICAgICAgICBIPiB7CisgICAgICByZXR1cm4gQWJzbEhhc2hWYWx1ZShzdGQ6Om1vdmUoc3Rh
dGUpLCB2YWx1ZSk7CisgICAgfQorICB9OwogCisgIHN0cnVjdCBMZWdhY3lIYXNoUHJvYmUgewog
I2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXwotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4KLSAgdXNpbmcgUHJvYmVMZWdhY3lIYXNoID0KLSAgICAgIHN0ZDo6aXNfY29u
dmVydGlibGU8ZGVjbHR5cGUoQUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9OQU1FU1BBQ0U6Omhh
c2g8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU+KCkoc3RkOjpkZWNsdmFs
PGNvbnN0IFUmPigpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdD47CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIGF1dG8gSW52b2tl
KEggc3RhdGUsIGNvbnN0IFQmIHZhbHVlKSAtPiBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICAg
c3RkOjppc19jb252ZXJ0aWJsZTwKKyAgICAgICAgICAgIGRlY2x0eXBlKEFCU0xfSU5URVJOQUxf
TEVHQUNZX0hBU0hfTkFNRVNQQUNFOjpoYXNoPFQ+KCkodmFsdWUpKSwKKyAgICAgICAgICAgIHNp
emVfdD46OnZhbHVlLAorICAgICAgICBIPiB7CisgICAgICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6
aGFzaF9ieXRlcygKKyAgICAgICAgICBzdGQ6Om1vdmUoc3RhdGUpLAorICAgICAgICAgIEFCU0xf
SU5URVJOQUxfTEVHQUNZX0hBU0hfTkFNRVNQQUNFOjpoYXNoPFQ+e30odmFsdWUpKTsKKyAgICB9
CiAjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworICB9
OwogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICB1c2luZyBQcm9iZVN0ZEhhc2ggPQotI2lm
IEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXwotICAgICAgc3RkOjppc19jb252ZXJ0aWJs
ZTxkZWNsdHlwZShzdGQ6Omhhc2g8VT4oKShzdGQ6OmRlY2x2YWw8Y29uc3QgVSY+KCkpKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90PjsKLSNlbHNlICAgLy8gQUJTTF9IQVNIX0lO
VEVSTkFMX0NBTl9QT0lTT05fCi0gICAgICBzdGQ6OnRydWVfdHlwZTsKLSNlbmRpZiAgLy8gQUJT
TF9IQVNIX0lOVEVSTkFMX0NBTl9QT0lTT05fCisgIHN0cnVjdCBTdGRIYXNoUHJvYmUgeworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBhdXRvIEludm9r
ZShIIHN0YXRlLCBjb25zdCBUJiB2YWx1ZSkKKyAgICAgICAgLT4gYWJzbDo6ZW5hYmxlX2lmX3Q8
dHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaGFibGU8VD46OnZhbHVlLCBIPiB7CisgICAgICBy
ZXR1cm4gaGFzaF9pbnRlcm5hbDo6aGFzaF9ieXRlcyhzdGQ6Om1vdmUoc3RhdGUpLCBzdGQ6Omhh
c2g8VD57fSh2YWx1ZSkpOworICAgIH0KKyAgfTsKIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4K
LSAgdXNpbmcgUHJvYmVOb25lID0gc3RkOjp0cnVlX3R5cGU7CisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBIYXNoLCB0eXBlbmFtZSBUPgorICBzdHJ1Y3QgUHJvYmUgOiBIYXNoIHsKKyAgIHByaXZhdGU6
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lID0gZGVjbHR5cGUoSDo6SW52b2tl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpkZWNsdmFsPFN0YXRlPigpLCBz
dGQ6OmRlY2x2YWw8Y29uc3QgVCY+KCkpKT4KKyAgICBzdGF0aWMgc3RkOjp0cnVlX3R5cGUgVGVz
dChpbnQpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBzdGQ6OmZhbHNl
X3R5cGUgVGVzdChjaGFyKTsKKworICAgcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCB2YWx1ZSA9IGRlY2x0eXBlKFRlc3Q8SGFzaD4oMCkpOjp2YWx1ZTsKKyAgfTsKIAogIHB1Ymxp
YzoKICAgLy8gUHJvYmUgZWFjaCBpbXBsZW1lbnRhdGlvbiBpbiBvcmRlci4KLSAgLy8gZGlzanVu
Y3Rpb24gcHJvdmlkZXMgc2hvcnQgY2lyY3V0aW5nIHdydCBpbnN0YW50aWF0aW9uLgotICBzdGF0
aWMgY29uc3RleHByIEludm9rZUhhc2hUYWcgdmFsdWUgPSBhYnNsOjpkaXNqdW5jdGlvbjwKLSAg
ICAgIFByb2JlPFByb2JlVW5pcXVlbHlSZXByZXNlbnRlZCwgSW52b2tlSGFzaFRhZzo6a1VuaXF1
ZWx5UmVwcmVzZW50ZWQ+LAotICAgICAgUHJvYmU8UHJvYmVIYXNoVmFsdWUsIEludm9rZUhhc2hU
YWc6OmtIYXNoVmFsdWU+LAotI2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9I
QVNIXwotICAgICAgUHJvYmU8UHJvYmVMZWdhY3lIYXNoLCBJbnZva2VIYXNoVGFnOjprTGVnYWN5
SGFzaD4sCi0jZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNI
XwotICAgICAgUHJvYmU8UHJvYmVTdGRIYXNoLCBJbnZva2VIYXNoVGFnOjprU3RkSGFzaD4sCi0g
ICAgICBQcm9iZTxQcm9iZU5vbmUsIEludm9rZUhhc2hUYWc6OmtOb25lPj46OmtUYWc7CisgIC8v
IGRpc2p1bmN0aW9uIHByb3ZpZGVzIHNob3J0IGNpcmN1aXRpbmcgd3J0IGluc3RhbnRpYXRpb24u
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICB1c2luZyBBcHBseSA9IGFic2w6OmRpc2p1bmN0
aW9uPCAgICAgICAgIC8vCisgICAgICBQcm9iZTxVbmlxdWVseVJlcHJlc2VudGVkUHJvYmUsIFQ+
LCAgLy8KKyAgICAgIFByb2JlPEhhc2hWYWx1ZVByb2JlLCBUPiwgICAgICAgICAgICAvLworICAg
ICAgUHJvYmU8TGVnYWN5SGFzaFByb2JlLCBUPiwgICAgICAgICAgIC8vCisgICAgICBQcm9iZTxT
dGRIYXNoUHJvYmUsIFQ+LCAgICAgICAgICAgICAgLy8KKyAgICAgIHN0ZDo6ZmFsc2VfdHlwZT47
CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19oYXNoYWJsZSA6IHN0ZDo6
aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgSGFzaFNlbGVjdDxUPjo6dmFsdWUgIT0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludm9rZUhhc2hU
YWc6OmtOb25lPiB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+Ci1hYnNs
OjplbmFibGVfaWZfdDxIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSA9PSBJbnZva2VIYXNoVGFnOjprVW5p
cXVlbHlSZXByZXNlbnRlZCwKLSAgICAgICAgICAgICAgICAgIEg+Ci1JbnZva2VIYXNoKEggc3Rh
dGUsIGNvbnN0IFQmIHZhbHVlKSB7Ci0gIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5dGVz
KHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5
cGVuYW1lIFQ+Ci1hYnNsOjplbmFibGVfaWZfdDxIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSA9PSBJbnZv
a2VIYXNoVGFnOjprSGFzaFZhbHVlLCBIPgotSW52b2tlSGFzaChIIHN0YXRlLCBjb25zdCBUJiB2
YWx1ZSkgewotICByZXR1cm4gQWJzbEhhc2hWYWx1ZShzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZSk7
Ci19Ci0KLSNpZiBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8KLXRlbXBs
YXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgotYWJzbDo6ZW5hYmxlX2lmX3Q8SGFzaFNlbGVj
dDxUPjo6dmFsdWUgPT0gSW52b2tlSGFzaFRhZzo6a0xlZ2FjeUhhc2gsIEg+Ci1JbnZva2VIYXNo
KEggc3RhdGUsIGNvbnN0IFQmIHZhbHVlKSB7Ci0gIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNo
X2J5dGVzKAotICAgICAgc3RkOjptb3ZlKHN0YXRlKSwgQUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFT
SF9OQU1FU1BBQ0U6Omhhc2g8VD57fSh2YWx1ZSkpOwotfQotI2VuZGlmICAvLyBBQlNMX0hBU0hf
SU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5
cGVuYW1lIFQ+Ci1hYnNsOjplbmFibGVfaWZfdDxIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSA9PSBJbnZv
a2VIYXNoVGFnOjprU3RkSGFzaCwgSD4KLUludm9rZUhhc2goSCBzdGF0ZSwgY29uc3QgVCYgdmFs
dWUpIHsKLSAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoc3RkOjptb3ZlKHN0YXRl
KSwgc3RkOjpoYXNoPFQ+e30odmFsdWUpKTsKLX0KK3N0cnVjdCBpc19oYXNoYWJsZQorICAgIDog
c3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBIYXNoU2VsZWN0Ojp0ZW1wbGF0ZSBBcHBseTxU
Pjo6dmFsdWU+IHt9OwogCiAvLyBDaXR5SGFzaFN0YXRlCiBjbGFzcyBDaXR5SGFzaFN0YXRlIDog
cHVibGljIEhhc2hTdGF0ZUJhc2U8Q2l0eUhhc2hTdGF0ZT4gewpAQCAtNjc0LDcgKzY0MCw4IEBA
IGNsYXNzIENpdHlIYXNoU3RhdGUgOiBwdWJsaWMgSGFzaFN0YXRlQmFzZTxDaXR5SGFzaFN0YXRl
PiB7CiAjZW5kaWYgIC8vIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4CiAKICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50NjRfdCBrTXVsID0KLSAgICAgIHNpemVvZihzaXplX3QpID09IDQgPyB1aW50
NjRfdHsweGNjOWUyZDUxfSA6IHVpbnQ2NF90ezB4OWRkZmVhMDhlYjM4MmQ2OX07CisgICAgICBz
aXplb2Yoc2l6ZV90KSA9PSA0ID8gdWludDY0X3R7MHhjYzllMmQ1MX0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiB1aW50NjRfdHsweDlkZGZlYTA4ZWIzODJkNjl9OwogCiAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICB1c2luZyBJbnRlZ3JhbEZhc3RQYXRoID0KQEAgLTg3MSw3ICs4Mzgs
OCBAQCBzdHJ1Y3QgSGFzaAogdGVtcGxhdGUgPHR5cGVuYW1lIEg+CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUuLi4gVHM+CiBIIEhhc2hTdGF0ZUJhc2U8SD46OmNvbWJpbmUoSCBzdGF0
ZSwgY29uc3QgVCYgdmFsdWUsIGNvbnN0IFRzJi4uLiB2YWx1ZXMpIHsKLSAgcmV0dXJuIEg6OmNv
bWJpbmUoaGFzaF9pbnRlcm5hbDo6SW52b2tlSGFzaChzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZSks
CisgIHJldHVybiBIOjpjb21iaW5lKGhhc2hfaW50ZXJuYWw6Okhhc2hTZWxlY3Q6OnRlbXBsYXRl
IEFwcGx5PFQ+OjpJbnZva2UoCisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoc3Rh
dGUpLCB2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy4uLik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvcHJpbnRfaGFzaF9vZi5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gv
aW50ZXJuYWwvcHJpbnRfaGFzaF9vZi5jYwppbmRleCBiNmRmMzFjYzVlODViOTA0NmUwYTU0ZWJj
YmU4MzliYzYwNDAyMTc1Li5jMzkyMTI1YTY5ZmFmNmI1ODU5MmVkMTIyZTk1Mzk2NDExM2NiODNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL3ByaW50X2hhc2hfb2YuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvaGFzaC9pbnRlcm5hbC9wcmludF9oYXNoX29mLmNjCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL3Nw
eV9oYXNoX3N0YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL3NweV9oYXNoX3N0YXRlLmgKaW5k
ZXggMDNkNzk1YjA5MDAxZTNkYzMwMzAxMzczOGY2MjQ2YWEyZGUwYWM1Zi4uYzRjYzhkMDczMzdj
MDExOTY2MWUzNDVlOTg4ZTI4ZGY2MWE5NGNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRl
cm5hbC9zcHlfaGFzaF9zdGF0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvc3B5X2hhc2hf
c3RhdGUuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzks
OCArMzksNyBAQCBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbCB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIGNsYXNzIFNweUhhc2hTdGF0ZUltcGwgOiBwdWJsaWMgSGFzaFN0YXRlQmFzZTxTcHlIYXNo
U3RhdGVJbXBsPFQ+PiB7CiAgcHVibGljOgotICBTcHlIYXNoU3RhdGVJbXBsKCkKLSAgICAgIDog
ZXJyb3JfKHN0ZDo6bWFrZV9zaGFyZWQ8YWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+PigpKSB7
CisgIFNweUhhc2hTdGF0ZUltcGwoKSA6IGVycm9yXyhzdGQ6Om1ha2Vfc2hhcmVkPGFic2w6Om9w
dGlvbmFsPHN0ZDo6c3RyaW5nPj4oKSkgewogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc192b2lk
PFQ+Ojp2YWx1ZSwgIiIpOwogICB9CiAKQEAgLTE3MCw3ICsxNjksNiBAQCBjbGFzcyBTcHlIYXNo
U3RhdGVJbXBsIDogcHVibGljIEhhc2hTdGF0ZUJhc2U8U3B5SGFzaFN0YXRlSW1wbDxUPj4gewog
ICAvLyBBYnNsSGFzaFZhbHVlIGRpcmVjdGx5IChiZWNhdXNlIHRoZSBoYXNoIHN0YXRlIHR5cGUg
ZG9lcyBub3QgbWF0Y2gpLgogICBzdGF0aWMgYm9vbCBkaXJlY3RfYWJzbF9oYXNoX3ZhbHVlX2Vy
cm9yXzsKIAotCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBoYXNoX3JlcHJlc2VudGF0aW9u
XzsKICAgLy8gVGhpcyBpcyBhIHNoYXJlZF9wdHIgYmVjYXVzZSB3ZSB3YW50IGFsbCBpbnN0YW5j
ZXMgb2YgdGhlIHBhcnRpY3VsYXIKICAgLy8gU3B5SGFzaFN0YXRlIHJ1biB0byBzaGFyZSB0aGUg
ZmllbGQuIFRoaXMgd2F5IHdlIGNhbiBzZXQgdGhlIGVycm9yIGZvcgpAQCAtMjAwLDcgKzE5OCw3
IEBAIGJvb2wgUnVuT25TdGFydHVwPGY+OjpydW4gPSAoZigpLCB0cnVlKTsKIHRlbXBsYXRlIDwK
ICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAogICAgIC8vIE9ubHkgdHJpZ2dlciBmb3Igd2hl
biAoVCAhPSBVKSwKLSAgICBhYnNsOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFQsIFU+Ojp2
YWx1ZSwgaW50PiA9IDAsCisgICAgdHlwZW5hbWUgPSBhYnNsOjplbmFibGVfaWZfdDwhc3RkOjpp
c19zYW1lPFQsIFU+Ojp2YWx1ZT4sCiAgICAgLy8gVGhpcyBzdGF0ZW1lbnQgd29ya3MgaW4gdHdv
IHdheXM6CiAgICAgLy8gIC0gRmlyc3QsIGl0IGluc3RhbnRpYXRlcyBSdW5PblN0YXJ0dXAgYW5k
IGZvcmNlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YKICAgICAvLyAgICBgcnVuYCwgd2hpY2ggc2V0
IHRoZSBnbG9iYWwgdmFyaWFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuYmF6
ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuYmF6ZWwKaW5kZXggODlhMzEyZWFjNGIxOWJmODhiYTFm
MjEwMGNhMDQ1ZDFjYzMyNzg1ZS4uZjgxNWVmOTQwYTI1YmVlODU5YTFiZTdiYjIzYjE2NWM5YjEx
MWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L0JVSUxELmJhemVsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeS9CVUlMRC5iYXplbApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1
LDggKzE1LDkgQEAKICMKIAogbG9hZCgKLSAgICAiLy9hYnNsOmNvcHRzLmJ6bCIsCisgICAgIi8v
YWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKICAgICAiQUJTTF9ERUZBVUxUX0NPUFRT
IiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRTIiwKICAgICAiQUJTTF9URVNUX0NPUFRTIiwK
ICAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUciLAogICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBR19M
SU5LT1BUUyIsCkBAIC0zMCw2ICszMSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJtZW1v
cnkiLAogICAgIGhkcnMgPSBbIm1lbW9yeS5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9
IFsKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgICAgICIvL2Fic2wv
bWV0YTp0eXBlX3RyYWl0cyIsCkBAIC00MCw2ICs0Miw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9
ICJtZW1vcnlfdGVzdCIsCiAgICAgc3JjcyA9IFsibWVtb3J5X3Rlc3QuY2MiXSwKICAgICBjb3B0
cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICBkZXBzID0gWwogICAgICAgICAiOm1lbW9yeSIsCiAgICAgICAgICIvL2Fic2wvYmFz
ZSIsCkBAIC01NCw3ICs1Nyw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICJtZW1vcnlfZXhjZXB0aW9u
X3NhZmV0eV90ZXN0LmNjIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsg
QUJTTF9FWENFUFRJT05TX0ZMQUcsCi0gICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxB
R19MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRT
ICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6bWVtb3J5
IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZyIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuZ24KaW5k
ZXggMzAyMjRjNmExMTI0MDIzYzQzZWFhNDFiNTQ5NmJkZDFjMzM3YWU5YS4uMDZiYzRjNWFiY2Yz
NzExZWYzOTUzM2FkZGM1M2U5YjNiZGY0YTIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L0JV
SUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9CVUlMRC5nbgpAQCAtNCw4ICs0LDE1IEBACiAKIGlt
cG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIikKIAorIyBVc2FnZSBvZiBBYnNlaWwg
aW4gQ2hyb21pdW0gaXMgZ3VhcmRlZCBieSBhbiBleHBsaWNpdCBvcHQtaW4gbGlzdCwgYmVmb3Jl
CisjIGFkZGluZyBwcm9qZWN0cyB0byB0aGlzIGxpc3QgcGxlYXNlIHJlYWNoIG91dCB0byBjeHhA
Y2hyb21pdW0ub3JnIGFuZCBDQzoKKyMgLSBodHRwczovL2NzLmNocm9taXVtLm9yZy9jaHJvbWl1
bS9zcmMvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9PV05FUlMKKyMKKyMgTW9yZSBpbmZvcm1hdGlv
biBjYW4gYmUgZm91bmQgYXQ6CisjIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2Qv
MURnUzEtQTNyemJvVExqcGY0bTFzcWtKZ1dqbllfUnUyZG9razFYMXZCRFUKIGlmIChidWlsZF93
aXRoX2Nocm9taXVtKSB7CiAgIHZpc2liaWxpdHkgPSBbCisgICAgIi8vbGliYXNzaXN0YW50Lyoi
LAogICAgICIvL3RoaXJkX3BhcnR5L3dlYnJ0Yy8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Q6Z3Rlc3QiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvbWVtb3J5L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L0NNYWtlTGlz
dHMudHh0CmluZGV4IDU5NThmNWM1MmJmYjZkYWNiMDFmMTgxYWI5NGY2NGI1Y2E2Y2ZmODguLjBh
ODEyMjAzYmZiZjJiYzY4ZTY0YTM5OTg3OTVkMTdiYWM2N2NlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L21lbW9yeS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQ01ha2VMaXN0cy50eHQK
QEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNCw1OCArMTQsNDUgQEAKICMg
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAjCiAKLWxpc3QoQVBQRU5EIE1FTU9SWV9Q
VUJMSUNfSEVBREVSUwotICAibWVtb3J5LmgiCi0pCi0KLQotYWJzbF9oZWFkZXJfbGlicmFyeSgK
LSAgVEFSR0VUCi0gICAgYWJzbF9tZW1vcnkKLSAgRVhQT1JUX05BTUUKK2Fic2xfY2NfbGlicmFy
eSgKKyAgTkFNRQogICAgIG1lbW9yeQorICBIRFJTCisgICAgIm1lbW9yeS5oIgorICBDT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29yZV9oZWFkZXJz
CisgICAgYWJzbDo6bWV0YQorICBQVUJMSUMKICkKIAotIwotIyMgVEVTVFMKLSMKLQotIyB0ZXN0
IG1lbW9yeV90ZXN0Ci1saXN0KEFQUEVORCBNRU1PUllfVEVTVF9TUkMKLSAgIm1lbW9yeV90ZXN0
LmNjIgotICAke01FTU9SWV9QVUJMSUNfSEVBREVSU30KLSkKLXNldChNRU1PUllfVEVTVF9QVUJM
SUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbDo6bWVtb3J5KQotCi0KLQotYWJzbF90ZXN0KAot
ICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIG1lbW9yeV90ZXN0Ci0gIFNPVVJD
RVMKLSAgICAke01FTU9SWV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7TUVN
T1JZX1RFU1RfUFVCTElDX0xJQlJBUklFU30KLSkKLQotCi0jIHRlc3QgbWVtb3J5X2V4Y2VwdGlv
bl9zYWZldHlfdGVzdAotc2V0KE1FTU9SWV9FWENFUFRJT05fU0FGRVRZX1RFU1RfU1JDICJtZW1v
cnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIikKLXNldChNRU1PUllfRVhDRVBUSU9OX1NBRkVU
WV9URVNUX1BVQkxJQ19MSUJSQVJJRVMKLSAgYWJzbDo6bWVtb3J5Ci0gIGFic2xfYmFzZV9pbnRl
cm5hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcKKyAgU1JDUworICAgICJtZW1vcnlfdGVzdC5j
YyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6Om1l
bW9yeQorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBnbW9ja19t
YWluCiApCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAg
ICBtZW1vcnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke01FTU9SWV9F
WENFUFRJT05fU0FGRVRZX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtNRU1P
UllfRVhDRVBUSU9OX1NBRkVUWV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIFBSSVZBVEVfQ09N
UElMRV9GTEFHUworICBTUkNTCisgICAgIm1lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CiAgICAgJHtBQlNMX0VYQ0VQVElPTlNf
RkxBR30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTfQor
ICBERVBTCisgICAgYWJzbDo6bWVtb3J5CisgICAgYWJzbDo6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0
aW5nCisgICAgZ21vY2tfbWFpbgogKQotCi0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21l
bW9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeS5oCmluZGV4IDFlYWVjMGY0MGFlYWQ1N2Q2OTJl
NGI4NThlNjQyMTQwNDU2NDVmODEuLjVhNGExYTFkZmUyNTk4NzE0ZjMxMTRjY2EyM2ZkZDE0NWRj
MmYyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnkuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1v
cnkvbWVtb3J5LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTQ3LDE5ICs0NywxNCBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAgIFgqIE5ld1goaW50LCBpbnQp
OwogLy8gICBhdXRvIHggPSBXcmFwVW5pcXVlKE5ld1goMSwgMikpOyAgLy8gJ3gnIGlzIHN0ZDo6
dW5pcXVlX3B0cjxYPi4KIC8vCi0vLyBUaGUgcHVycG9zZSBvZiBXcmFwVW5pcXVlIGlzIHRvIGF1
dG9tYXRpY2FsbHkgZGVkdWNlIHRoZSBwb2ludGVyIHR5cGUuIElmIHlvdQotLy8gd2lzaCB0byBt
YWtlIHRoZSB0eXBlIGV4cGxpY2l0LCBmb3IgcmVhZGFiaWxpdHkgcmVhc29ucyBvciBiZWNhdXNl
IHlvdSBwcmVmZXIKLS8vIHRvIHVzZSBhIGJhc2UtY2xhc3MgcG9pbnRlciByYXRoZXIgdGhhbiBh
IGRlcml2ZWQgb25lLCBqdXN0IHVzZQorLy8gRG8gbm90IGNhbGwgV3JhcFVuaXF1ZSB3aXRoIGFu
IGV4cGxpY2l0IHR5cGUsIGFzIGluCisvLyBgV3JhcFVuaXF1ZTxYPihOZXdYKDEsIDIpKWAuICBU
aGUgcHVycG9zZSBvZiBXcmFwVW5pcXVlIGlzIHRvIGF1dG9tYXRpY2FsbHkKKy8vIGRlZHVjZSB0
aGUgcG9pbnRlciB0eXBlLiBJZiB5b3Ugd2lzaCB0byBtYWtlIHRoZSB0eXBlIGV4cGxpY2l0LCBq
dXN0IHVzZQogLy8gYHN0ZDo6dW5pcXVlX3B0cmAgZGlyZWN0bHkuCiAvLwotLy8gRXhhbXBsZToK
LS8vICAgWCogRmFjdG9yeShpbnQsIGludCk7Ci0vLyAgIGF1dG8geCA9IHN0ZDo6dW5pcXVlX3B0
cjxYPihGYWN0b3J5KDEsIDIpKTsKKy8vICAgYXV0byB4ID0gc3RkOjp1bmlxdWVfcHRyPFg+KE5l
d1goMSwgMikpOwogLy8gICAgICAgICAgICAgICAgICAtIG9yIC0KLS8vICAgc3RkOjp1bmlxdWVf
cHRyPFg+IHgoRmFjdG9yeSgxLCAyKSk7Ci0vLwotLy8gVGhpcyBoYXMgdGhlIGFkZGVkIGFkdmFu
dGFnZSBvZiB3b3JraW5nIHdoZXRoZXIgRmFjdG9yeSByZXR1cm5zIGEgcmF3Ci0vLyBwb2ludGVy
IG9yIGEgYHN0ZDo6dW5pcXVlX3B0cmAuCisvLyAgIHN0ZDo6dW5pcXVlX3B0cjxYPiB4KE5ld1go
MSwgMikpOwogLy8KIC8vIFdoaWxlIGBhYnNsOjpXcmFwVW5pcXVlYCBpcyB1c2VmdWwgZm9yIGNh
cHR1cmluZyB0aGUgb3V0cHV0IG9mIGEgcmF3CiAvLyBwb2ludGVyIGZhY3RvcnksIHByZWZlciAn
YWJzbDo6bWFrZV91bmlxdWU8VD4oYXJncy4uLiknIG92ZXIKQEAgLTEyMCw3ICsxMTUsNyBAQCB1
c2luZyBzdGQ6Om1ha2VfdW5pcXVlOwogLy8KIC8vIEZvciBtb3JlIGJhY2tncm91bmQgb24gd2h5
IGBzdGQ6OnVuaXF1ZV9wdHI8VD4obmV3IFQoYSxiKSlgIGlzIHByb2JsZW1hdGljLAogLy8gc2Vl
IEhlcmIgU3V0dGVyJ3MgZXhwbGFuYXRpb24gb24KLS8vIChFeGNlcHRpb24tU2FmZSBGdW5jdGlv
biBDYWxscylbaHR0cDovL2hlcmJzdXR0ZXIuY29tL2dvdHcvXzEwMi9dLgorLy8gKEV4Y2VwdGlv
bi1TYWZlIEZ1bmN0aW9uIENhbGxzKVtodHRwczovL2hlcmJzdXR0ZXIuY29tL2dvdHcvXzEwMi9d
LgogLy8gKEluIGdlbmVyYWwsIHJldmlld2VycyBzaG91bGQgdHJlYXQgYG5ldyBUKGEsYilgIHdp
dGggc2NydXRpbnkuKQogLy8KIC8vIEV4YW1wbGUgdXNhZ2U6CkBAIC01OTksNyArNTk0LDcgQEAg
c3RydWN0IGFsbG9jYXRvcl90cmFpdHMgewogICAgIHJldHVybiBhLm1heF9zaXplKCk7CiAgIH0K
ICAgc3RhdGljIHNpemVfdHlwZSBtYXhfc2l6ZV9pbXBsKGNoYXIsIGNvbnN0IEFsbG9jJikgewot
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdHlwZT46Om1heCgpIC8gc2l6ZW9m
KHZhbHVlX3R5cGUpOworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3R5cGU+
OjptYXgpKCkgLyBzaXplb2YodmFsdWVfdHlwZSk7CiAgIH0KIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQT4KQEAgLTY0Niw3ICs2NDEsNyBAQCBzdHJ1Y3QgYWxsb2NhdG9yX2lzX25vdGhyb3cKICAg
ICA6IG1lbW9yeV9pbnRlcm5hbDo6RXh0cmFjdE9yVDxtZW1vcnlfaW50ZXJuYWw6OkdldElzTm90
aHJvdywgQWxsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmYWxz
ZV90eXBlPiB7fTsKIAotI2lmIEFCU0xfQUxMT0NBVE9SX05PVEhST1cKKyNpZiBkZWZpbmVkKEFC
U0xfQUxMT0NBVE9SX05PVEhST1cpICYmIEFCU0xfQUxMT0NBVE9SX05PVEhST1cKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogc3RydWN0IGFsbG9jYXRvcl9pc19ub3Rocm93PHN0ZDo6YWxsb2NhdG9y
PFQ+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9Owogc3RydWN0IGRlZmF1bHRfYWxsb2NhdG9yX2lzX25v
dGhyb3cgOiBzdGQ6OnRydWVfdHlwZSB7fTsKQEAgLTY1NSw1OSArNjUwLDQyIEBAIHN0cnVjdCBk
ZWZhdWx0X2FsbG9jYXRvcl9pc19ub3Rocm93IDogc3RkOjpmYWxzZV90eXBlIHt9OwogI2VuZGlm
CiAKIG5hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwgewotI2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJ
T05TICAvLyBDb25zdHJ1Y3RSYW5nZQogdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvciwgdHlw
ZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lLi4uIEFyZ3M+CiB2b2lkIENvbnN0cnVjdFJhbmdlKEFs
bG9jYXRvciYgYWxsb2MsIEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LAogICAgICAgICAg
ICAgICAgICAgICBjb25zdCBBcmdzJi4uLiBhcmdzKSB7CiAgIGZvciAoSXRlcmF0b3IgY3VyID0g
Zmlyc3Q7IGN1ciAhPSBsYXN0OyArK2N1cikgewotICAgIHRyeSB7Ci0gICAgICBzdGQ6OmFsbG9j
YXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KGFsbG9jLCBjdXIsIGFyZ3MuLi4pOwot
ICAgIH0gY2F0Y2ggKC4uLikgeworICAgIEFCU0xfSU5URVJOQUxfVFJZIHsKKyAgICAgIHN0ZDo6
YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoYWxsb2MsIHN0ZDo6YWRkcmVz
c29mKCpjdXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmdzLi4uKTsKKyAgICB9CisgICAgQUJTTF9JTlRFUk5BTF9DQVRDSF9BTlkgewogICAg
ICAgd2hpbGUgKGN1ciAhPSBmaXJzdCkgewogICAgICAgICAtLWN1cjsKLSAgICAgICAgc3RkOjph
bGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koYWxsb2MsIGN1cik7CisgICAgICAg
IHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KGFsbG9jLCBzdGQ6OmFk
ZHJlc3NvZigqY3VyKSk7CiAgICAgICB9Ci0gICAgICB0aHJvdzsKKyAgICAgIEFCU0xfSU5URVJO
QUxfUkVUSFJPVzsKICAgICB9CiAgIH0KIH0KLSNlbHNlICAgLy8gQUJTTF9IQVZFX0VYQ0VQVElP
TlMgIC8vIENvbnN0cnVjdFJhbmdlCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yLCB0eXBl
bmFtZSBJdGVyYXRvciwgdHlwZW5hbWUuLi4gQXJncz4KLXZvaWQgQ29uc3RydWN0UmFuZ2UoQWxs
b2NhdG9yJiBhbGxvYywgSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKLSAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7
ICsrZmlyc3QpIHsKLSAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3Ry
dWN0KGFsbG9jLCBmaXJzdCwgYXJncy4uLik7Ci0gIH0KLX0KLSNlbmRpZiAgLy8gQUJTTF9IQVZF
X0VYQ0VQVElPTlMgIC8vIENvbnN0cnVjdFJhbmdlCiAKLSNpZmRlZiBBQlNMX0hBVkVfRVhDRVBU
SU9OUyAgLy8gQ29weVJhbmdlCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yLCB0eXBlbmFt
ZSBJdGVyYXRvciwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KIHZvaWQgQ29weVJhbmdlKEFsbG9j
YXRvciYgYWxsb2MsIEl0ZXJhdG9yIGRlc3RpbmF0aW9uLCBJbnB1dEl0ZXJhdG9yIGZpcnN0LAog
ICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBsYXN0KSB7CiAgIGZvciAoSXRlcmF0b3IgY3Vy
ID0gZGVzdGluYXRpb247IGZpcnN0ICE9IGxhc3Q7CiAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZD4o
KytjdXIpLCBzdGF0aWNfY2FzdDx2b2lkPigrK2ZpcnN0KSkgewotICAgIHRyeSB7Ci0gICAgICBz
dGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KGFsbG9jLCBjdXIsICpm
aXJzdCk7Ci0gICAgfSBjYXRjaCAoLi4uKSB7CisgICAgQUJTTF9JTlRFUk5BTF9UUlkgeworICAg
ICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdChhbGxvYywgc3Rk
OjphZGRyZXNzb2YoKmN1ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpmaXJzdCk7CisgICAgfQorICAgIEFCU0xfSU5URVJOQUxfQ0FUQ0hfQU5Z
IHsKICAgICAgIHdoaWxlIChjdXIgIT0gZGVzdGluYXRpb24pIHsKICAgICAgICAgLS1jdXI7Ci0g
ICAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KGFsbG9jLCBj
dXIpOworICAgICAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6ZGVzdHJveShh
bGxvYywgc3RkOjphZGRyZXNzb2YoKmN1cikpOwogICAgICAgfQotICAgICAgdGhyb3c7CisgICAg
ICBBQlNMX0lOVEVSTkFMX1JFVEhST1c7CiAgICAgfQogICB9CiB9Ci0jZWxzZSAgIC8vIEFCU0xf
SEFWRV9FWENFUFRJT05TICAvLyBDb3B5UmFuZ2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0
b3IsIHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgotdm9pZCBDb3B5
UmFuZ2UoQWxsb2NhdG9yJiBhbGxvYywgSXRlcmF0b3IgZGVzdGluYXRpb24sIElucHV0SXRlcmF0
b3IgZmlyc3QsCi0gICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGxhc3QpIHsKLSAgZm9yICg7
IGZpcnN0ICE9IGxhc3Q7Ci0gICAgICAgc3RhdGljX2Nhc3Q8dm9pZD4oKytkZXN0aW5hdGlvbiks
IHN0YXRpY19jYXN0PHZvaWQ+KCsrZmlyc3QpKSB7Ci0gICAgc3RkOjphbGxvY2F0b3JfdHJhaXRz
PEFsbG9jYXRvcj46OmNvbnN0cnVjdChhbGxvYywgZGVzdGluYXRpb24sICpmaXJzdCk7Ci0gIH0K
LX0KLSNlbmRpZiAgLy8gQUJTTF9IQVZFX0VYQ0VQVElPTlMgIC8vIENvcHlSYW5nZQogfSAgLy8g
bmFtZXNwYWNlIG1lbW9yeV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9tZW1vcnkvbWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwppbmRleCAwMGQyYjE5MmNm
YzMyZGY2MjQzNjNjYTg2M2VjNzlmOTBmNjE4NWI1Li5hMWMzOTcwNzJlN2I3ZDU1NzkzYWE3MTg0
ZTkyYjIzNTMyMTgyY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X2V4Y2VwdGlv
bl9zYWZldHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9y
eV90ZXN0LmNjCmluZGV4IDJlNDUzZTIyYmE1YmEzOWNmZDY5MGZjNTkxZTRhZmU0ODdjYjc4YTku
LmM0NzgyMGU1NGFiMDczNjIzOGE5YThiNWI1ZmM5N2IzNTU3OTM1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21lbW9yeS9tZW1vcnlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X3Rlc3Qu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTY5LDYgKzY5
LDQ1IEBAIFRFU1QoTWFrZVVuaXF1ZVRlc3QsIEJhc2ljKSB7CiAgIEVYUEVDVF9FUSgiaGkiLCAq
cCk7CiB9CiAKKy8vIEluaXRpYWxpemF0aW9uVmVyaWZpZXIgZmlsbHMgaW4gYSBwYXR0ZXJuIHdo
ZW4gYWxsb2NhdGVkIHNvIHdlIGNhbgorLy8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBpdHMgZGVmYXVs
dCBhbmQgdmFsdWUgaW5pdGlhbGl6ZWQgc3RhdGVzICh3aXRob3V0CisvLyBhY2Nlc3NpbmcgdHJ1
bHkgdW5pbml0aWFsaXplZCBtZW1vcnkpLgorc3RydWN0IEluaXRpYWxpemF0aW9uVmVyaWZpZXIg
eworICBzdGF0aWMgY29uc3RleHByIGludCBrRGVmYXVsdFNjYWxhciA9IDB4NDM7CisgIHN0YXRp
YyBjb25zdGV4cHIgaW50IGtEZWZhdWx0QXJyYXkgPSAweDRCOworCisgIHN0YXRpYyB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90IG4pIHsKKyAgICB2b2lkKiByZXQgPSA6Om9wZXJhdG9yIG5ldyhu
KTsKKyAgICBtZW1zZXQocmV0LCBrRGVmYXVsdFNjYWxhciwgbik7CisgICAgcmV0dXJuIHJldDsK
KyAgfQorCisgIHN0YXRpYyB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QgbikgeworICAgIHZv
aWQqIHJldCA9IDo6b3BlcmF0b3IgbmV3W10obik7CisgICAgbWVtc2V0KHJldCwga0RlZmF1bHRB
cnJheSwgbik7CisgICAgcmV0dXJuIHJldDsKKyAgfQorCisgIGludCBhOworICBpbnQgYjsKK307
CisKK1RFU1QoSW5pdGlhbGl6YXRpb24sIE1ha2VVbmlxdWUpIHsKKyAgYXV0byBwID0gYWJzbDo6
bWFrZV91bmlxdWU8SW5pdGlhbGl6YXRpb25WZXJpZmllcj4oKTsKKworICBFWFBFQ1RfRVEoMCwg
cC0+YSk7CisgIEVYUEVDVF9FUSgwLCBwLT5iKTsKK30KKworVEVTVChJbml0aWFsaXphdGlvbiwg
TWFrZVVuaXF1ZUFycmF5KSB7CisgIGF1dG8gcCA9IGFic2w6Om1ha2VfdW5pcXVlPEluaXRpYWxp
emF0aW9uVmVyaWZpZXJbXT4oMik7CisKKyAgRVhQRUNUX0VRKDAsIHBbMF0uYSk7CisgIEVYUEVD
VF9FUSgwLCBwWzBdLmIpOworICBFWFBFQ1RfRVEoMCwgcFsxXS5hKTsKKyAgRVhQRUNUX0VRKDAs
IHBbMV0uYik7Cit9CisKIHN0cnVjdCBNb3ZlT25seSB7CiAgIE1vdmVPbmx5KCkgPSBkZWZhdWx0
OwogICBleHBsaWNpdCBNb3ZlT25seShpbnQgaTEpIDogaXAxe25ldyBpbnR7aTF9fSB7fQpAQCAt
MTQ1LDcgKzE4NCw3IEBAIFRFU1QoTWFrZV9VbmlxdWVUZXN0LCBOb3RBbWJpZ3VvdXNXaXRoU3Rk
TWFrZVVuaXF1ZSkgewogICAgIGV4cGxpY2l0IFRha2VzU3RkVHlwZShjb25zdCBzdGQ6OnZlY3Rv
cjxpbnQ+ICZ2ZWMpIHt9CiAgIH07CiAgIHVzaW5nIGFic2w6Om1ha2VfdW5pcXVlOwotICBtYWtl
X3VuaXF1ZTxUYWtlc1N0ZFR5cGU+KHN0ZDo6dmVjdG9yPGludD4oKSk7CisgICh2b2lkKW1ha2Vf
dW5pcXVlPFRha2VzU3RkVHlwZT4oc3RkOjp2ZWN0b3I8aW50PigpKTsKIH0KIAogI2lmIDAKQEAg
LTU4MSw3ICs2MjAsNyBAQCBURVNUKEFsbG9jYXRvclRyYWl0cywgRnVuY3Rpb25zRnVsbCkgewog
fQogCiBURVNUKEFsbG9jYXRvck5vVGhyb3dUZXN0LCBEZWZhdWx0QWxsb2NhdG9yKSB7Ci0jaWYg
QUJTTF9BTExPQ0FUT1JfTk9USFJPVworI2lmIGRlZmluZWQoQUJTTF9BTExPQ0FUT1JfTk9USFJP
VykgJiYgQUJTTF9BTExPQ0FUT1JfTk9USFJPVwogICBFWFBFQ1RfVFJVRShhYnNsOjpkZWZhdWx0
X2FsbG9jYXRvcl9pc19ub3Rocm93Ojp2YWx1ZSk7CiAjZWxzZQogICBFWFBFQ1RfRkFMU0UoYWJz
bDo6ZGVmYXVsdF9hbGxvY2F0b3JfaXNfbm90aHJvdzo6dmFsdWUpOwpAQCAtNTg5LDcgKzYyOCw3
IEBAIFRFU1QoQWxsb2NhdG9yTm9UaHJvd1Rlc3QsIERlZmF1bHRBbGxvY2F0b3IpIHsKIH0KIAog
VEVTVChBbGxvY2F0b3JOb1Rocm93VGVzdCwgU3RkQWxsb2NhdG9yKSB7Ci0jaWYgQUJTTF9BTExP
Q0FUT1JfTk9USFJPVworI2lmIGRlZmluZWQoQUJTTF9BTExPQ0FUT1JfTk9USFJPVykgJiYgQUJT
TF9BTExPQ0FUT1JfTk9USFJPVwogICBFWFBFQ1RfVFJVRShhYnNsOjphbGxvY2F0b3JfaXNfbm90
aHJvdzxzdGQ6OmFsbG9jYXRvcjxpbnQ+Pjo6dmFsdWUpOwogI2Vsc2UKICAgRVhQRUNUX0ZBTFNF
KGFic2w6OmFsbG9jYXRvcl9pc19ub3Rocm93PHN0ZDo6YWxsb2NhdG9yPGludD4+Ojp2YWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS9CVUlMRC5i
YXplbAppbmRleCBkYmM5NzE3ZGRkMzNjMmZhNDRhNmFmYjAwZmJiN2RkMWE5NTc4Yjg4Li5lMDA0
YjUwOWYyN2U0NDk1ZDAzZWMzZGZmYjQ4YzY0Yjg5NjEzMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9t
ZXRhL0JVSUxELmJhemVsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvQlVJTEQuYmF6ZWwKQEAgLTEsNiArMSw3
IEBACiBsb2FkKAotICAgICIvL2Fic2w6Y29wdHMuYnpsIiwKKyAgICAiLy9hYnNsOmNvcHRzL2Nv
bmZpZ3VyZV9jb3B0cy5iemwiLAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAorICAgICJBQlNM
X0RFRkFVTFRfTElOS09QVFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogKQogCkBAIC0xMiw2
ICsxMyw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJ0eXBlX3RyYWl0cyIsCiAgICAgaGRy
cyA9IFsidHlwZV90cmFpdHMuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAor
ICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAg
ICAgICIvL2Fic2wvYmFzZTpjb25maWciLAogICAgIF0sCkBAIC0yMSw5ICsyMyw5IEBAIGNjX3Rl
c3QoCiAgICAgbmFtZSA9ICJ0eXBlX3RyYWl0c190ZXN0IiwKICAgICBzcmNzID0gWyJ0eXBlX3Ry
YWl0c190ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjp0eXBl
X3RyYWl0cyIsCi0gICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICAgICAi
QGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAogICAgIF0sCiApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9tZXRhL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS9CVUlMRC5nbgppbmRleCA2NzU3
MjE5YzI3MzU0OTk0ZTVkYTBjNWU0NjEzZGRhODg5NDA0MDZkLi5mMmU1YmUyMDZlZGM3MTcyMDE1
NjhjZWZmMzJlN2ZjOGI0MWM3OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL21ldGEvQlVJTEQuZ24KQEAgLTQsOCArNCwxNSBAQAogCiBpbXBvcnQoIi8vYnVp
bGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCiAKKyMgVXNhZ2Ugb2YgQWJzZWlsIGluIENocm9taXVt
IGlzIGd1YXJkZWQgYnkgYW4gZXhwbGljaXQgb3B0LWluIGxpc3QsIGJlZm9yZQorIyBhZGRpbmcg
cHJvamVjdHMgdG8gdGhpcyBsaXN0IHBsZWFzZSByZWFjaCBvdXQgdG8gY3h4QGNocm9taXVtLm9y
ZyBhbmQgQ0M6CisjIC0gaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvT1dORVJTCisjCisjIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZv
dW5kIGF0OgorIyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFEZ1MxLUEzcnpi
b1RManBmNG0xc3FrSmdXam5ZX1J1MmRva2sxWDF2QkRVCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1
bSkgewogICB2aXNpYmlsaXR5ID0gWworICAgICIvL2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90
aGlyZF9wYXJ0eS93ZWJydGMvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwK
ICAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L21ldGEvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL0NNYWtlTGlzdHMudHh0CmluZGV4IGFk
YjBjZWI3NTRkZjUyNzgwMWRmNTc2NzQ4YmY1YzI4MTZlOTU0YWEuLjY3MmVhZDJmZDBhNTkzNzY3
MDQxNzI1NDhkMTM3NGE4NWViYTIyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS9DTWFrZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcgQEAKICMg
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMg
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTE0LDM5ICsxNCwzNyBAQAogIyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KICMKIAotbGlzdChBUFBFTkQgTUVUQV9QVUJMSUNfSEVBREVSUwotICAidHlw
ZV90cmFpdHMuaCIKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHR5cGVfdHJhaXRzCisg
IEhEUlMKKyAgICAidHlwZV90cmFpdHMuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbmZpZworICBQVUJMSUMKICkKIAotCi0jCi0jIyBU
RVNUUwotIwotCi0jIHRlc3QgdHlwZV90cmFpdHNfdGVzdAotbGlzdChBUFBFTkQgVFlQRV9UUkFJ
VFNfVEVTVF9TUkMKLSAgInR5cGVfdHJhaXRzX3Rlc3QuY2MiCi0gICR7TUVUQV9QVUJMSUNfSEVB
REVSU30KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHR5cGVfdHJhaXRzX3Rlc3QKKyAgU1JD
UworICAgICJ0eXBlX3RyYWl0c190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6dHlwZV90cmFpdHMKKyAgICBnbW9ja19tYWluCiApCiAK
LWFic2xfaGVhZGVyX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfbWV0YQotICBQVUJMSUNf
TElCUkFSSUVTCi0gICAgYWJzbDo6YmFzZQotICBFWFBPUlRfTkFNRQorIyBjb21wb25lbnQgdGFy
Z2V0CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKICAgICBtZXRhCi0gKQotCi1hYnNsX3Rlc3Qo
Ci0gIFRBUkdFVAotICAgIHR5cGVfdHJhaXRzX3Rlc3QKLSAgU09VUkNFUwotICAgICR7VFlQRV9U
UkFJVFNfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsOjpiYXNlCi0gICAg
YWJzbDo6bWV0YQorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6dHlwZV90cmFpdHMKKyAgUFVCTElDCiApCi0KLQotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9tZXRhL3R5cGVfdHJhaXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgKaW5kZXggMjNl
YmQ2ZWQwOTkwZmQzZDk1MTBkNGQ5MTA2NmYwNzRjZmUxMTEwMS4uOTI3MjQ0ZTA5ZGZiMzlhNmFl
MWEwYjVjOWJmZGI3NmJkN2Q2ZWM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90eXBlX3RyYWl0
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHMuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjIsNyArMjIsNyBAQAogLy8gc3VwcG9ydCB0eXBlIGlu
ZmVyZW5jZSwgY2xhc3NpZmljYXRpb24sIGFuZCB0cmFuc2Zvcm1hdGlvbiwgYXMgd2VsbCBhcwog
Ly8gbWFrZSBpdCBlYXNpZXIgdG8gd3JpdGUgdGVtcGxhdGVzIGJhc2VkIG9uIGdlbmVyaWMgdHlw
ZSBiZWhhdmlvci4KIC8vCi0vLyBTZWUgaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAv
aGVhZGVyL3R5cGVfdHJhaXRzCisvLyBTZWUgaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cv
Y3BwL2hlYWRlci90eXBlX3RyYWl0cwogLy8KIC8vIFdBUk5JTkc6IHVzZSBvZiBtYW55IG9mIHRo
ZSBjb25zdHJ1Y3RzIGluIHRoaXMgaGVhZGVyIHdpbGwgY291bnQgYXMgImNvbXBsZXgKIC8vIHRl
bXBsYXRlIG1ldGFwcm9ncmFtbWluZyIsIHNvIGJlZm9yZSBwcm9jZWVkaW5nLCBwbGVhc2UgY2Fy
ZWZ1bGx5IGNvbnNpZGVyCkBAIC00Myw4ICs0MywzOSBAQAogCiBuYW1lc3BhY2UgYWJzbCB7CiAK
Ky8vIERlZmluZWQgYW5kIGRvY3VtZW50ZWQgbGF0ZXIgb24gaW4gdGhpcyBmaWxlLgordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTsKKwog
bmFtZXNwYWNlIHR5cGVfdHJhaXRzX2ludGVybmFsIHsKIAorLy8gU2lsZW5jZSBNU1ZDIHdhcm5p
bmdzIGFib3V0IHRoZSBkZXN0cnVjdG9yIGJlaW5nIGRlZmluZWQgYXMgZGVsZXRlZC4KKyNpZiBk
ZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX0dOVUNfXykKKyNwcmFnbWEgd2FybmluZyhw
dXNoKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0NjI0KQorI2VuZGlmICAvLyBkZWZpbmVk
KF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX0dOVUNfXykKKwordGVtcGxhdGUgPGNsYXNzIFQ+Cit1
bmlvbiBTaW5nbGVNZW1iZXJVbmlvbiB7CisgIFQgdDsKK307CisKKy8vIFJlc3RvcmUgdGhlIHN0
YXRlIG9mIHRoZSBkZXN0cnVjdG9yIHdhcm5pbmcgdGhhdCB3YXMgc2lsZW5jZWQgYWJvdmUuCisj
aWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19HTlVDX18pCisjcHJhZ21hIHdhcm5p
bmcocG9wKQorI2VuZGlmICAvLyBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX0dOVUNf
XykKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgSXNUcml2aWFsbHlNb3ZlQXNzaWduYWJs
ZVJlZmVyZW5jZSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+Citz
dHJ1Y3QgSXNUcml2aWFsbHlNb3ZlQXNzaWduYWJsZVJlZmVyZW5jZTxUJj4KKyAgICA6IGFic2w6
OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8VD46OnR5cGUge307CisKK3RlbXBsYXRlIDxj
bGFzcyBUPgorc3RydWN0IElzVHJpdmlhbGx5TW92ZUFzc2lnbmFibGVSZWZlcmVuY2U8VCYmPgor
ICAgIDogYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxUPjo6dHlwZSB7fTsKKwog
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIFRzPgogc3RydWN0IFZvaWRUSW1wbCB7CiAgIHVzaW5nIHR5
cGUgPSB2b2lkOwpAQCAtMTkzLDYgKzIyNCwyMyBAQCBzdHJ1Y3QgZGlzanVuY3Rpb248PiA6IHN0
ZDo6ZmFsc2VfdHlwZSB7fTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IG5lZ2F0aW9u
IDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhVDo6dmFsdWU+IHt9OwogCisvLyBpc19m
dW5jdGlvbigpCisvLworLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXNzZWQgdHlwZSBgVGAg
aXMgYSBmdW5jdGlvbiB0eXBlLgorLy8KKy8vIFRoaXMgbWV0YWZ1bmN0aW9uIGlzIGRlc2lnbmVk
IHRvIGJlIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgdGhlIEMrKzExCisvLyBgc3RkOjppc19m
dW5jdGlvbigpYCBtZXRhZnVuY3Rpb24gZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgaW5jb21wbGV0
ZSBDKysxMQorLy8gc3VwcG9ydCAoc3VjaCBhcyBsaWJzdGRjKysgNC54KS4KKy8vCisvLyBUaGlz
IG1ldGFmdW5jdGlvbiB3b3JrcyBiZWNhdXNlIGFwcGVuZGluZyBgY29uc3RgIHRvIGEgdHlwZSBk
b2VzIG5vdGhpbmcgdG8KKy8vIGZ1bmN0aW9uIHR5cGVzIGFuZCByZWZlcmVuY2UgdHlwZXMgKGFu
ZCBmb3JtcyBhIGNvbnN0LXF1YWxpZmllZCB0eXBlCisvLyBvdGhlcndpc2UpLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfZnVuY3Rpb24KKyAgICA6IHN0ZDo6aW50ZWdyYWxfY29u
c3RhbnQ8CisgICAgICAgICAgYm9vbCwgIShzdGQ6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgfHwK
KyAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjphZGRfY29uc3Q8
VD46OnR5cGU+Ojp2YWx1ZSk+IHt9OworCiAvLyBpc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlKCkK
IC8vCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBhc3NlZCB0eXBlIGBUYCBpcyB0cml2aWFs
bHkgZGVzdHJ1Y3RhYmxlLgpAQCAtMjQ2LDcgKzI5NCw3IEBAIHN0cnVjdCBpc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlCiAvLyBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgY2hlY2ssIHRoZSBjYWxs
IHRvIHN0ZDo6ZGVjbHZhbCBpcyBjb25zaWRlcmVkCiAvLyB0cml2aWFsLiIKIC8vCi0vLyBOb3Rl
cyBmcm9tIGh0dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL3R5cGVzL2lzX2NvbnN0cnVj
dGlibGU6CisvLyBOb3RlcyBmcm9tIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC90
eXBlcy9pc19jb25zdHJ1Y3RpYmxlOgogLy8gSW4gbWFueSBpbXBsZW1lbnRhdGlvbnMsIGlzX25v
dGhyb3dfY29uc3RydWN0aWJsZSBhbHNvIGNoZWNrcyBpZiB0aGUKIC8vIGRlc3RydWN0b3IgdGhy
b3dzIGJlY2F1c2UgaXQgaXMgZWZmZWN0aXZlbHkgbm9leGNlcHQoVChhcmcpKS4gU2FtZQogLy8g
YXBwbGllcyB0byBpc190cml2aWFsbHlfY29uc3RydWN0aWJsZSwgd2hpY2gsIGluIHRoZXNlIGlt
cGxlbWVudGF0aW9ucywgYWxzbwpAQCAtMjc1LDYgKzMyMyw0MCBAQCBzdHJ1Y3QgaXNfdHJpdmlh
bGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZQogI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX0lTX1RS
SVZJQUxMWV9DT05TVFJVQ1RJQkxFCiB9OwogCisvLyBpc190cml2aWFsbHlfbW92ZV9jb25zdHJ1
Y3RpYmxlKCkKKy8vCisvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBhc3NlZCB0eXBlIGBUYCBp
cyB0cml2aWFsbHkgbW92ZSBjb25zdHJ1Y3RpYmxlLgorLy8KKy8vIFRoaXMgbWV0YWZ1bmN0aW9u
IGlzIGRlc2lnbmVkIHRvIGJlIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgdGhlIEMrKzExCisv
LyBgc3RkOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlKClgIG1ldGFmdW5jdGlvbiBm
b3IgcGxhdGZvcm1zIHRoYXQgaGF2ZQorLy8gaW5jb21wbGV0ZSBDKysxMSBzdXBwb3J0IChzdWNo
IGFzIGxpYnN0ZGMrKyA0LngpLiBPbiBhbnkgcGxhdGZvcm1zIHRoYXQgZG8KKy8vIGZ1bGx5IHN1
cHBvcnQgQysrMTEsIHdlIGNoZWNrIHdoZXRoZXIgdGhpcyB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0
IGFzIHRoZSBzdGQKKy8vIGltcGxlbWVudGF0aW9uLgorLy8KKy8vIE5PVEU6IGBUIG9iaihkZWNs
dmFsPFQ+KCkpO2AgbmVlZHMgdG8gYmUgd2VsbC1mb3JtZWQgYW5kIG5vdCBjYWxsIGFueQorLy8g
bm9udHJpdmlhbCBvcGVyYXRpb24uICBOb250cml2aWFsbHkgZGVzdHJ1Y3RpYmxlIHR5cGVzIHdp
bGwgY2F1c2UgdGhlCisvLyBleHByZXNzaW9uIHRvIGJlIG5vbnRyaXZpYWwuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3N0cnVjdCBpc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlCisgICAg
OiBzdGQ6OmNvbmRpdGlvbmFsPAorICAgICAgICAgIHN0ZDo6aXNfb2JqZWN0PFQ+Ojp2YWx1ZSAm
JiAhc3RkOjppc19hcnJheTxUPjo6dmFsdWUsCisgICAgICAgICAgc3RkOjppc19tb3ZlX2NvbnN0
cnVjdGlibGU8CisgICAgICAgICAgICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpTaW5nbGVNZW1i
ZXJVbmlvbjxUPj4sCisgICAgICAgICAgc3RkOjppc19yZWZlcmVuY2U8VD4+Ojp0eXBlOjp0eXBl
IHsKKyNpZmRlZiBBQlNMX0hBVkVfU1REX0lTX1RSSVZJQUxMWV9DT05TVFJVQ1RJQkxFCisgcHJp
dmF0ZToKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNvbXBsaWFudCA9CisgICAgICBzdGQ6Omlz
X3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlID09CisgICAgICBpc190cml2
aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlOjp2YWx1ZTsKKyAgc3RhdGljX2Fzc2VydChjb21wbGlh
bnQgfHwgc3RkOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAiTm90IGNvbXBsaWFudCB3aXRoIHN0ZDo6aXNfdHJpdmlhbGx5X21vdmVf
Y29uc3RydWN0aWJsZTsgIgorICAgICAgICAgICAgICAgICJTdGFuZGFyZDogZmFsc2UsIEltcGxl
bWVudGF0aW9uOiB0cnVlIik7CisgIHN0YXRpY19hc3NlcnQoY29tcGxpYW50IHx8ICFzdGQ6Omlz
X3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlLAorICAgICAgICAgICAgICAg
ICJOb3QgY29tcGxpYW50IHdpdGggc3RkOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxl
OyAiCisgICAgICAgICAgICAgICAgIlN0YW5kYXJkOiB0cnVlLCBJbXBsZW1lbnRhdGlvbjogZmFs
c2UiKTsKKyNlbmRpZiAgLy8gQUJTTF9IQVZFX1NURF9JU19UUklWSUFMTFlfQ09OU1RSVUNUSUJM
RQorfTsKKwogLy8gaXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZSgpCiAvLwogLy8gRGV0
ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXNzZWQgdHlwZSBgVGAgaXMgdHJpdmlhbGx5IGNvcHkgY29u
c3RydWN0aWJsZS4KQEAgLTI5MCw5ICszNzIsMTEgQEAgc3RydWN0IGlzX3RyaXZpYWxseV9kZWZh
dWx0X2NvbnN0cnVjdGlibGUKIC8vIGV4cHJlc3Npb24gdG8gYmUgbm9udHJpdmlhbC4KIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGUK
LSAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19oYXNfdHJpdmlhbF9jb3B5KFQp
ICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29weV9jb25z
dHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZT4geworICAgIDogc3RkOjpjb25k
aXRpb25hbDwKKyAgICAgICAgICBzdGQ6OmlzX29iamVjdDxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNf
YXJyYXk8VD46OnZhbHVlLAorICAgICAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPAor
ICAgICAgICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6U2luZ2xlTWVtYmVyVW5pb248VD4+
LAorICAgICAgICAgIHN0ZDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxUPj46OnR5cGU6OnR5cGUgewog
I2lmZGVmIEFCU0xfSEFWRV9TVERfSVNfVFJJVklBTExZX0NPTlNUUlVDVElCTEUKICBwcml2YXRl
OgogICBzdGF0aWMgY29uc3RleHByIGJvb2wgY29tcGxpYW50ID0KQEAgLTMwNyw2ICszOTEsNDIg
QEAgc3RydWN0IGlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGUKICNlbmRpZiAgLy8gQUJT
TF9IQVZFX1NURF9JU19UUklWSUFMTFlfQ09OU1RSVUNUSUJMRQogfTsKIAorLy8gaXNfdHJpdmlh
bGx5X21vdmVfYXNzaWduYWJsZSgpCisvLworLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXNz
ZWQgdHlwZSBgVGAgaXMgdHJpdmlhbGx5IG1vdmUgYXNzaWduYWJsZS4KKy8vCisvLyBUaGlzIG1l
dGFmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIHRo
ZSBDKysxMQorLy8gYHN0ZDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZSgpYCBtZXRhZnVu
Y3Rpb24gZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUKKy8vIGluY29tcGxldGUgQysrMTEgc3VwcG9y
dCAoc3VjaCBhcyBsaWJzdGRjKysgNC54KS4gT24gYW55IHBsYXRmb3JtcyB0aGF0IGRvCisvLyBm
dWxseSBzdXBwb3J0IEMrKzExLCB3ZSBjaGVjayB3aGV0aGVyIHRoaXMgeWllbGRzIHRoZSBzYW1l
IHJlc3VsdCBhcyB0aGUgc3RkCisvLyBpbXBsZW1lbnRhdGlvbi4KKy8vCisvLyBOT1RFOiBgaXNf
YXNzaWduYWJsZTxULCBVPjo6dmFsdWVgIGlzIGB0cnVlYCBpZiB0aGUgZXhwcmVzc2lvbgorLy8g
YGRlY2x2YWw8VD4oKSA9IGRlY2x2YWw8VT4oKWAgaXMgd2VsbC1mb3JtZWQgd2hlbiB0cmVhdGVk
IGFzIGFuIHVuZXZhbHVhdGVkCisvLyBvcGVyYW5kLiBgaXNfdHJpdmlhbGx5X2Fzc2lnbmFibGU8
VCwgVT5gIHJlcXVpcmVzIHRoZSBhc3NpZ25tZW50IHRvIGNhbGwgbm8KKy8vIG9wZXJhdGlvbiB0
aGF0IGlzIG5vdCB0cml2aWFsLiBgaXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTxUPmAgaXMg
c2ltcGx5CisvLyBgaXNfdHJpdmlhbGx5X2Fzc2lnbmFibGU8VCYsIFQ+YC4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IGlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGUKKyAgICA6IHN0
ZDo6Y29uZGl0aW9uYWw8CisgICAgICAgICAgc3RkOjppc19vYmplY3Q8VD46OnZhbHVlICYmICFz
dGQ6OmlzX2FycmF5PFQ+Ojp2YWx1ZSwKKyAgICAgICAgICBzdGQ6OmlzX21vdmVfYXNzaWduYWJs
ZTx0eXBlX3RyYWl0c19pbnRlcm5hbDo6U2luZ2xlTWVtYmVyVW5pb248VD4+LAorICAgICAgICAg
IHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc1RyaXZpYWxseU1vdmVBc3NpZ25hYmxlUmVmZXJlbmNl
PFQ+Pjo6dHlwZTo6CisgICAgICAgICAgdHlwZSB7CisjaWZkZWYgQUJTTF9IQVZFX1NURF9JU19U
UklWSUFMTFlfQVNTSUdOQUJMRQorIHByaXZhdGU6CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBj
b21wbGlhbnQgPQorICAgICAgc3RkOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2
YWx1ZSA9PQorICAgICAgaXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTo6dmFsdWU7CisgIHN0
YXRpY19hc3NlcnQoY29tcGxpYW50IHx8IHN0ZDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJs
ZTxUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIk5vdCBjb21wbGlhbnQgd2l0aCBzdGQ6Omlz
X3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU7ICIKKyAgICAgICAgICAgICAgICAiU3RhbmRhcmQ6
IGZhbHNlLCBJbXBsZW1lbnRhdGlvbjogdHJ1ZSIpOworICBzdGF0aWNfYXNzZXJ0KGNvbXBsaWFu
dCB8fCAhc3RkOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSwKKyAgICAg
ICAgICAgICAgICAiTm90IGNvbXBsaWFudCB3aXRoIHN0ZDo6aXNfdHJpdmlhbGx5X21vdmVfYXNz
aWduYWJsZTsgIgorICAgICAgICAgICAgICAgICJTdGFuZGFyZDogdHJ1ZSwgSW1wbGVtZW50YXRp
b246IGZhbHNlIik7CisjZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfSVNfVFJJVklBTExZX0FTU0lH
TkFCTEUKK307CisKIC8vIGlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGUoKQogLy8KIC8vIERl
dGVybWluZXMgd2hldGhlciB0aGUgcGFzc2VkIHR5cGUgYFRgIGlzIHRyaXZpYWxseSBjb3B5IGFz
c2lnbmFibGUuCkBAIC0zNDEsNiArNDYxLDQ5IEBAIHN0cnVjdCBpc190cml2aWFsbHlfY29weV9h
c3NpZ25hYmxlCiAjZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfSVNfVFJJVklBTExZX0FTU0lHTkFC
TEUKIH07CiAKK25hbWVzcGFjZSB0eXBlX3RyYWl0c19pbnRlcm5hbCB7CisvLyBpc190cml2aWFs
bHlfY29weWFibGUoKQorLy8KKy8vIERldGVybWluZXMgd2hldGhlciB0aGUgcGFzc2VkIHR5cGUg
YFRgIGlzIHRyaXZpYWxseSBjb3B5YWJsZS4KKy8vCisvLyBUaGlzIG1ldGFmdW5jdGlvbiBpcyBk
ZXNpZ25lZCB0byBiZSBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIHRoZSBDKysxMQorLy8gYHN0
ZDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlKClgIG1ldGFmdW5jdGlvbiBmb3IgcGxhdGZvcm1zIHRo
YXQgaGF2ZQorLy8gaW5jb21wbGV0ZSBDKysxMSBzdXBwb3J0IChzdWNoIGFzIGxpYnN0ZGMrKyA0
LngpLiBXZSB1c2UgdGhlIEMrKzE3IGRlZmluaXRpb24KKy8vIG9mIFRyaXZpYWxseUNvcHlhYmxl
LgorLy8KKy8vIE5PVEU6IGBpc190cml2aWFsbHlfY29weWFibGU8VD46OnZhbHVlYCBpcyBgdHJ1
ZWAgaWYgYWxsIG9mIFQncyBjb3B5L21vdmUKKy8vIGNvbnN0cnVjdG9ycy9hc3NpZ25tZW50IG9w
ZXJhdG9ycyBhcmUgdHJpdmlhbCBvciBkZWxldGVkLCBUIGhhcyBhdCBsZWFzdAorLy8gb25lIG5v
bi1kZWxldGVkIGNvcHkvbW92ZSBjb25zdHJ1Y3Rvci9hc3NpZ25tZW50IG9wZXJhdG9yLCBhbmQg
VCBpcyB0cml2aWFsbHkKKy8vIGRlc3RydWN0aWJsZS4gQXJyYXlzIG9mIHRyaXZpYWxseSBjb3B5
YWJsZSB0eXBlcyBhcmUgdHJpdmlhbGx5IGNvcHlhYmxlLgorLy8KKy8vIFdlIGV4cG9zZSB0aGlz
IG1ldGFmdW5jdGlvbiBvbmx5IGZvciBpbnRlcm5hbCB1c2Ugd2l0aGluIGFic2wuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIGlzX3RyaXZpYWxseV9jb3B5YWJsZV9pbXBsIHsKKyAgdXNp
bmcgRXh0ZW50c1JlbW92ZWQgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9hbGxfZXh0ZW50czxUPjo6
dHlwZTsKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIGtJc0NvcHlPck1vdmVDb25zdHJ1Y3RpYmxl
ID0KKyAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPEV4dGVudHNSZW1vdmVkPjo6dmFs
dWUgfHwKKyAgICAgIHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPEV4dGVudHNSZW1vdmVkPjo6
dmFsdWU7CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBrSXNDb3B5T3JNb3ZlQXNzaWduYWJsZSA9
CisgICAgICBhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8RXh0ZW50c1JlbW92ZWQ+Ojp2YWx1ZSB8
fAorICAgICAgYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPEV4dGVudHNSZW1vdmVkPjo6dmFsdWU7
CisKKyBwdWJsaWM6CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBrVmFsdWUgPQorICAgICAgKF9f
aGFzX3RyaXZpYWxfY29weShFeHRlbnRzUmVtb3ZlZCkgfHwgIWtJc0NvcHlPck1vdmVDb25zdHJ1
Y3RpYmxlKSAmJgorICAgICAgKF9faGFzX3RyaXZpYWxfYXNzaWduKEV4dGVudHNSZW1vdmVkKSB8
fCAha0lzQ29weU9yTW92ZUFzc2lnbmFibGUpICYmCisgICAgICAoa0lzQ29weU9yTW92ZUNvbnN0
cnVjdGlibGUgfHwga0lzQ29weU9yTW92ZUFzc2lnbmFibGUpICYmCisgICAgICBpc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPEV4dGVudHNSZW1vdmVkPjo6dmFsdWUgJiYKKyAgICAgIC8vIFdlIG5l
ZWQgdG8gY2hlY2sgZm9yIHRoaXMgZXhwbGljaXRseSBiZWNhdXNlIG90aGVyd2lzZSB3ZSdsbCBz
YXkKKyAgICAgIC8vIHJlZmVyZW5jZXMgYXJlIHRyaXZpYWwgY29weWFibGUgd2hlbiBjb21waWxl
ZCBieSBNU1ZDLgorICAgICAgIXN0ZDo6aXNfcmVmZXJlbmNlPEV4dGVudHNSZW1vdmVkPjo6dmFs
dWU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc190cml2aWFsbHlfY29w
eWFibGUKKyAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8CisgICAgICAgICAgYm9vbCwgdHlw
ZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZV9pbXBsPFQ+OjprVmFsdWU+
IHt9OworfSAgLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzX2ludGVybmFsCisKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLyBDKysxNCAiX3QiIHRyYWl0IGFsaWFzZXMKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC00MTMsMjQgKzU3NiwxMzkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB1
c2luZyByZXN1bHRfb2ZfdCA9IHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPFQ+Ojp0eXBlOwogCiBu
YW1lc3BhY2UgdHlwZV90cmFpdHNfaW50ZXJuYWwgeworLy8gSW4gTVNWQyB3ZSBjYW4ndCBwcm9i
ZSBzdGQ6Omhhc2ggb3Igc3RkZXh0OjpoYXNoIGJlY2F1c2UgaXQgdHJpZ2dlcnMgYQorLy8gc3Rh
dGljX2Fzc2VydCBpbnN0ZWFkIG9mIGZhaWxpbmcgc3Vic3RpdHV0aW9uLiBMaWJjKysgcHJpb3Ig
dG8gNC4wCisvLyBhbHNvIHVzZWQgYSBzdGF0aWNfYXNzZXJ0LgorLy8KKyNpZiBkZWZpbmVkKF9N
U0NfVkVSKSB8fCAoZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pICYmIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0xJQkNQUF9WRVJTSU9OIDwgNDAwMCAmJiBfTElCQ1BQX1NURF9WRVIgPiAx
MSkKKyNkZWZpbmUgQUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNIX1NGSU5BRV9GUklFTkRMWV8g
MAorI2Vsc2UKKyNkZWZpbmUgQUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNIX1NGSU5BRV9GUklF
TkRMWV8gMQorI2VuZGlmCisKKyNpZiAhQUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNIX1NGSU5B
RV9GUklFTkRMWV8KIHRlbXBsYXRlIDx0eXBlbmFtZSBLZXksIHR5cGVuYW1lID0gc2l6ZV90Pgor
c3RydWN0IElzSGFzaGFibGUgOiBzdGQ6OnRydWVfdHlwZSB7fTsKKyNlbHNlICAgLy8gQUJTTF9N
RVRBX0lOVEVSTkFMX1NURF9IQVNIX1NGSU5BRV9GUklFTkRMWV8KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lID0gdm9pZD4KIHN0cnVjdCBJc0hhc2hhYmxlIDogc3RkOjpmYWxzZV90
eXBlIHt9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5Pgotc3RydWN0IElzSGFzaGFibGU8S2V5
LAotICAgICAgICAgICAgICAgICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPHN0ZDo6aGFzaDxLZXk+
PigpKHN0ZDo6ZGVjbHZhbDxLZXk+KCkpKT4KLSAgICA6IHN0ZDo6dHJ1ZV90eXBlIHt9Oworc3Ry
dWN0IElzSGFzaGFibGU8CisgICAgS2V5LAorICAgIGFic2w6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
Y29udmVydGlibGU8CisgICAgICAgIGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxzdGQ6Omhhc2g8S2V5
PiY+KCkoc3RkOjpkZWNsdmFsPEtleSBjb25zdCY+KCkpKSwKKyAgICAgICAgc3RkOjpzaXplX3Q+
Ojp2YWx1ZT4+IDogc3RkOjp0cnVlX3R5cGUge307CisjZW5kaWYgIC8vICFBQlNMX01FVEFfSU5U
RVJOQUxfU1REX0hBU0hfU0ZJTkFFX0ZSSUVORExZXworCitzdHJ1Y3QgQXNzZXJ0SGFzaEVuYWJs
ZWRIZWxwZXIgeworIHByaXZhdGU6CisgIHN0YXRpYyB2b2lkIFNpbmsoLi4uKSB7fQorICBzdHJ1
Y3QgTkFUIHt9OworCisgIHRlbXBsYXRlIDxjbGFzcyBLZXk+CisgIHN0YXRpYyBhdXRvIEdldFJl
dHVyblR5cGUoaW50KQorICAgICAgLT4gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPHN0ZDo6aGFzaDxL
ZXk+PigpKHN0ZDo6ZGVjbHZhbDxLZXkgY29uc3QmPigpKSk7CisgIHRlbXBsYXRlIDxjbGFzcyBL
ZXk+CisgIHN0YXRpYyBOQVQgR2V0UmV0dXJuVHlwZSguLi4pOworCisgIHRlbXBsYXRlIDxjbGFz
cyBLZXk+CisgIHN0YXRpYyBzdGQ6Om51bGxwdHJfdCBEb0l0KCkgeworICAgIHN0YXRpY19hc3Nl
cnQoSXNIYXNoYWJsZTxLZXk+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICJzdGQ6Omhhc2g8
S2V5PiBkb2VzIG5vdCBwcm92aWRlIGEgY2FsbCBvcGVyYXRvciIpOworICAgIHN0YXRpY19hc3Nl
cnQoCisgICAgICAgIHN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPHN0ZDo6aGFzaDxLZXk+
Pjo6dmFsdWUsCisgICAgICAgICJzdGQ6Omhhc2g8S2V5PiBtdXN0IGJlIGRlZmF1bHQgY29uc3Ry
dWN0aWJsZSB3aGVuIGl0IGlzIGVuYWJsZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KAorICAgICAg
ICBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxzdGQ6Omhhc2g8S2V5Pj46OnZhbHVlLAorICAg
ICAgICAic3RkOjpoYXNoPEtleT4gbXVzdCBiZSBjb3B5IGNvbnN0cnVjdGlibGUgd2hlbiBpdCBp
cyBlbmFibGVkIik7CisgICAgc3RhdGljX2Fzc2VydChhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8
c3RkOjpoYXNoPEtleT4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICJzdGQ6Omhhc2g8S2V5
PiBtdXN0IGJlIGNvcHkgYXNzaWduYWJsZSB3aGVuIGl0IGlzIGVuYWJsZWQiKTsKKyAgICAvLyBp
c19kZXN0cnVjdGlibGUgaXMgdW5jaGVja2VkIGFzIGl0J3MgaW1wbGllZCBieSBlYWNoIG9mIHRo
ZQorICAgIC8vIGlzX2NvbnN0cnVjdGlibGUgY2hlY2tzLgorICAgIHVzaW5nIFJldHVyblR5cGUg
PSBkZWNsdHlwZShHZXRSZXR1cm5UeXBlPEtleT4oMCkpOworICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lPFJldHVyblR5cGUsIE5BVD46OnZhbHVlIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjppc19zYW1lPFJldHVyblR5cGUsIHNpemVfdD46OnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgInN0ZDo6aGFzaDxLZXk+IG11c3QgcmV0dXJuIHNpemVfdCIpOworICAgIHJldHVybiBu
dWxscHRyOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzLi4uIFRzPgorICBmcmllbmQgdm9pZCBB
c3NlcnRIYXNoRW5hYmxlZCgpOworfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEtleT4KLXN0cnVj
dCBJc0hhc2hFbmFibGVkCi0gICAgOiBhYnNsOjpjb25qdW5jdGlvbjxzdGQ6OmlzX2RlZmF1bHRf
Y29uc3RydWN0aWJsZTxzdGQ6Omhhc2g8S2V5Pj4sCi0gICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxzdGQ6Omhhc2g8S2V5Pj4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmlzX2Rlc3RydWN0aWJsZTxzdGQ6Omhhc2g8S2V5Pj4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8c3RkOjpoYXNoPEtleT4+
LAotICAgICAgICAgICAgICAgICAgICAgICAgSXNIYXNoYWJsZTxLZXk+PiB7fTsKK3RlbXBsYXRl
IDxjbGFzcy4uLiBUcz4KK2lubGluZSB2b2lkIEFzc2VydEhhc2hFbmFibGVkKCkgeworICB1c2lu
ZyBIZWxwZXIgPSBBc3NlcnRIYXNoRW5hYmxlZEhlbHBlcjsKKyAgSGVscGVyOjpTaW5rKEhlbHBl
cjo6RG9JdDxUcz4oKS4uLik7Cit9CiAKIH0gIC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0c19pbnRl
cm5hbAogCisvLyBBbiBpbnRlcm5hbCBuYW1lc3BhY2UgdGhhdCBpcyByZXF1aXJlZCB0byBpbXBs
ZW1lbnQgdGhlIEMrKzE3IHN3YXAgdHJhaXRzLgorLy8gSXQgaXMgbm90IGZ1cnRoZXIgbmVzdGVk
IGluIHR5cGVfdHJhaXRzX2ludGVybmFsIHRvIGF2b2lkIGxvbmcgc3ltYm9sIG5hbWVzLgorbmFt
ZXNwYWNlIHN3YXBfaW50ZXJuYWwgeworCisvLyBOZWNlc3NhcnkgZm9yIHRoZSB0cmFpdHMuCit1
c2luZyBzdGQ6OnN3YXA7CisKKy8vIFRoaXMgZGVjbGFyYXRpb24gcHJldmVudHMgZ2xvYmFsIGBz
d2FwYCBhbmQgYGFic2w6OnN3YXBgIG92ZXJsb2FkcyBmcm9tIGJlaW5nCisvLyBjb25zaWRlcmVk
IHVubGVzcyBBREwgcGlja3MgdGhlbSB1cC4KK3ZvaWQgc3dhcCgpOworCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4KK3VzaW5nIElzU3dhcHBhYmxlSW1wbCA9IGRlY2x0eXBlKHN3YXAoc3RkOjpkZWNsdmFs
PFQmPigpLCBzdGQ6OmRlY2x2YWw8VCY+KCkpKTsKKworLy8gTk9URTogVGhpcyBkYW5jZSB3aXRo
IHRoZSBkZWZhdWx0IHRlbXBsYXRlIHBhcmFtZXRlciBpcyBmb3IgTVNWQy4KK3RlbXBsYXRlIDxj
bGFzcyBULAorICAgICAgICAgIGNsYXNzIElzTm9leGNlcHQgPSBzdGQ6OmludGVncmFsX2NvbnN0
YW50PAorICAgICAgICAgICAgICBib29sLCBub2V4Y2VwdChzd2FwKHN0ZDo6ZGVjbHZhbDxUJj4o
KSwgc3RkOjpkZWNsdmFsPFQmPigpKSk+PgordXNpbmcgSXNOb3Rocm93U3dhcHBhYmxlSW1wbCA9
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzTm9leGNlcHQ6OnZhbHVlPjo6dHlwZTsKKworLy8g
SXNTd2FwcGFibGUKKy8vCisvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHN0YW5kYXJkIHN3YXAg
aWRpb20gaXMgYSB2YWxpZCBleHByZXNzaW9uIGZvcgorLy8gYXJndW1lbnRzIG9mIHR5cGUgYFRg
LgordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgSXNTd2FwcGFibGUKKyAgICA6IGFic2w6OnR5
cGVfdHJhaXRzX2ludGVybmFsOjppc19kZXRlY3RlZDxJc1N3YXBwYWJsZUltcGwsIFQ+IHt9Owor
CisvLyBJc05vdGhyb3dTd2FwcGFibGUKKy8vCisvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHN0
YW5kYXJkIHN3YXAgaWRpb20gaXMgYSB2YWxpZCBleHByZXNzaW9uIGZvcgorLy8gYXJndW1lbnRz
IG9mIHR5cGUgYFRgIGFuZCBpcyBub2V4Y2VwdC4KK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0
IElzTm90aHJvd1N3YXBwYWJsZQorICAgIDogYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6Omlz
X2RldGVjdGVkPElzTm90aHJvd1N3YXBwYWJsZUltcGwsIFQ+IHt9OworCisvLyBTd2FwKCkKKy8v
CisvLyBQZXJmb3JtcyB0aGUgc3dhcCBpZGlvbSBmcm9tIGEgbmFtZXNwYWNlIHdoZXJlIHZhbGlk
IGNhbmRpZGF0ZXMgbWF5IG9ubHkgYmUKKy8vIGZvdW5kIGluIGBzdGRgIG9yIHZpYSBBREwuCit0
ZW1wbGF0ZSA8Y2xhc3MgVCwgYWJzbDo6ZW5hYmxlX2lmX3Q8SXNTd2FwcGFibGU8VD46OnZhbHVl
LCBpbnQ+ID0gMD4KK3ZvaWQgU3dhcChUJiBsaHMsIFQmIHJocykgbm9leGNlcHQoSXNOb3Rocm93
U3dhcHBhYmxlPFQ+Ojp2YWx1ZSkgeworICBzd2FwKGxocywgcmhzKTsKK30KKworLy8gU3RkU3dh
cElzVW5jb25zdHJhaW5lZAorLy8KKy8vIFNvbWUgc3RhbmRhcmQgbGlicmFyeSBpbXBsZW1lbnRh
dGlvbnMgYXJlIGJyb2tlbiBpbiB0aGF0IHRoZXkgZG8gbm90CisvLyBjb25zdHJhaW4gYHN0ZDo6
c3dhcGAuIFRoaXMgd2lsbCBlZmZlY3RpdmVseSB0ZWxsIHVzIGlmIHdlIGFyZSBkZWFsaW5nIHdp
dGgKKy8vIG9uZSBvZiB0aG9zZSBpbXBsZW1lbnRhdGlvbnMuCit1c2luZyBTdGRTd2FwSXNVbmNv
bnN0cmFpbmVkID0gSXNTd2FwcGFibGU8dm9pZCgpPjsKKworfSAgLy8gbmFtZXNwYWNlIHN3YXBf
aW50ZXJuYWwKKworbmFtZXNwYWNlIHR5cGVfdHJhaXRzX2ludGVybmFsIHsKKworLy8gTWFrZSB0
aGUgc3dhcC1yZWxhdGVkIHRyYWl0cy9mdW5jdGlvbiBhY2Nlc3NpYmxlIGZyb20gdGhpcyBuYW1l
c3BhY2UuCit1c2luZyBzd2FwX2ludGVybmFsOjpJc05vdGhyb3dTd2FwcGFibGU7Cit1c2luZyBz
d2FwX2ludGVybmFsOjpJc1N3YXBwYWJsZTsKK3VzaW5nIHN3YXBfaW50ZXJuYWw6OlN3YXA7Cit1
c2luZyBzd2FwX2ludGVybmFsOjpTdGRTd2FwSXNVbmNvbnN0cmFpbmVkOworCit9ICAvLyBuYW1l
c3BhY2UgdHlwZV90cmFpdHNfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKICNlbmRp
ZiAgLy8gQUJTTF9NRVRBX1RZUEVfVFJBSVRTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5
cGVfdHJhaXRzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzX3Rlc3QuY2MKaW5kZXgg
ZjUxZjVkZWRlZTQzNWQ2ODNiNGIyZjVlYjMwMTJiZDYxYjVlMmFhMy4uYTdhOWM1YzkxN2ZmMjNh
YzA2NTg1MTliNWY2ZmVkMmQzM2IyNDM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90eXBlX3Ry
YWl0c190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHNfdGVzdC5jYwpAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjE0LDYgKzIxNCwyOSBAQCBj
bGFzcyBEZWxldGVkRGVmYXVsdEN0b3IgewogICBpbnQgbl87CiB9OwogCitjbGFzcyBUcml2aWFs
TW92ZUN0b3IgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgVHJpdmlhbE1vdmVDdG9yKGludCBuKSA6
IG5fKG4pIHt9CisgIFRyaXZpYWxNb3ZlQ3RvcihUcml2aWFsTW92ZUN0b3ImJikgPSBkZWZhdWx0
OworICBUcml2aWFsTW92ZUN0b3ImIG9wZXJhdG9yPShjb25zdCBUcml2aWFsTW92ZUN0b3ImIHQp
IHsKKyAgICBuXyA9IHQubl87CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyBwcml2YXRlOgor
ICBpbnQgbl87Cit9OworCitjbGFzcyBOb250cml2aWFsTW92ZUN0b3IgeworIHB1YmxpYzoKKyAg
ZXhwbGljaXQgTm9udHJpdmlhbE1vdmVDdG9yKGludCBuKSA6IG5fKG4pIHt9CisgIE5vbnRyaXZp
YWxNb3ZlQ3RvcihOb250cml2aWFsTW92ZUN0b3ImJiB0KSBub2V4Y2VwdCA6IG5fKHQubl8pIHt9
CisgIE5vbnRyaXZpYWxNb3ZlQ3RvciYgb3BlcmF0b3I9KGNvbnN0IE5vbnRyaXZpYWxNb3ZlQ3Rv
ciYpID0gZGVmYXVsdDsKKworIHByaXZhdGU6CisgIGludCBuXzsKK307CisKIGNsYXNzIFRyaXZp
YWxDb3B5Q3RvciB7CiAgcHVibGljOgogICBleHBsaWNpdCBUcml2aWFsQ29weUN0b3IoaW50IG4p
IDogbl8obikge30KQEAgLTI0Nyw2ICsyNzAsMjkgQEAgY2xhc3MgRGVsZXRlZENvcHlDdG9yIHsK
ICAgaW50IG5fOwogfTsKIAorY2xhc3MgVHJpdmlhbE1vdmVBc3NpZ24geworIHB1YmxpYzoKKyAg
ZXhwbGljaXQgVHJpdmlhbE1vdmVBc3NpZ24oaW50IG4pIDogbl8obikge30KKyAgVHJpdmlhbE1v
dmVBc3NpZ24oY29uc3QgVHJpdmlhbE1vdmVBc3NpZ24mIHQpIDogbl8odC5uXykge30KKyAgVHJp
dmlhbE1vdmVBc3NpZ24mIG9wZXJhdG9yPShUcml2aWFsTW92ZUFzc2lnbiYmKSA9IGRlZmF1bHQ7
CisgIH5Ucml2aWFsTW92ZUFzc2lnbigpIHt9ICAvLyBjYW4gaGF2ZSBub250cml2aWFsIGRlc3Ry
dWN0b3IKKyBwcml2YXRlOgorICBpbnQgbl87Cit9OworCitjbGFzcyBOb250cml2aWFsTW92ZUFz
c2lnbiB7CisgcHVibGljOgorICBleHBsaWNpdCBOb250cml2aWFsTW92ZUFzc2lnbihpbnQgbikg
OiBuXyhuKSB7fQorICBOb250cml2aWFsTW92ZUFzc2lnbihjb25zdCBOb250cml2aWFsTW92ZUFz
c2lnbiYpID0gZGVmYXVsdDsKKyAgTm9udHJpdmlhbE1vdmVBc3NpZ24mIG9wZXJhdG9yPShOb250
cml2aWFsTW92ZUFzc2lnbiYmIHQpIG5vZXhjZXB0IHsKKyAgICBuXyA9IHQubl87CisgICAgcmV0
dXJuICp0aGlzOworICB9CisKKyBwcml2YXRlOgorICBpbnQgbl87Cit9OworCiBjbGFzcyBUcml2
aWFsQ29weUFzc2lnbiB7CiAgcHVibGljOgogICBleHBsaWNpdCBUcml2aWFsQ29weUFzc2lnbihp
bnQgbikgOiBuXyhuKSB7fQpAQCAtMjgwLDEwICszMjYsMjAgQEAgY2xhc3MgRGVsZXRlZENvcHlB
c3NpZ24gewogICBpbnQgbl87CiB9OwogCi1zdHJ1Y3QgTm9uQ29weWFibGUgewotICBOb25Db3B5
YWJsZSgpID0gZGVmYXVsdDsKLSAgTm9uQ29weWFibGUoY29uc3QgTm9uQ29weWFibGUmKSA9IGRl
bGV0ZTsKLSAgTm9uQ29weWFibGUmIG9wZXJhdG9yPShjb25zdCBOb25Db3B5YWJsZSYpID0gZGVs
ZXRlOworc3RydWN0IE1vdmFibGVOb25Db3B5YWJsZSB7CisgIE1vdmFibGVOb25Db3B5YWJsZSgp
ID0gZGVmYXVsdDsKKyAgTW92YWJsZU5vbkNvcHlhYmxlKGNvbnN0IE1vdmFibGVOb25Db3B5YWJs
ZSYpID0gZGVsZXRlOworICBNb3ZhYmxlTm9uQ29weWFibGUoTW92YWJsZU5vbkNvcHlhYmxlJiYp
ID0gZGVmYXVsdDsKKyAgTW92YWJsZU5vbkNvcHlhYmxlJiBvcGVyYXRvcj0oY29uc3QgTW92YWJs
ZU5vbkNvcHlhYmxlJikgPSBkZWxldGU7CisgIE1vdmFibGVOb25Db3B5YWJsZSYgb3BlcmF0b3I9
KE1vdmFibGVOb25Db3B5YWJsZSYmKSA9IGRlZmF1bHQ7Cit9OworCitzdHJ1Y3QgTm9uQ29weWFi
bGVPck1vdmFibGUgeworICBOb25Db3B5YWJsZU9yTW92YWJsZSgpID0gZGVmYXVsdDsKKyAgTm9u
Q29weWFibGVPck1vdmFibGUoY29uc3QgTm9uQ29weWFibGVPck1vdmFibGUmKSA9IGRlbGV0ZTsK
KyAgTm9uQ29weWFibGVPck1vdmFibGUoTm9uQ29weWFibGVPck1vdmFibGUmJikgPSBkZWxldGU7
CisgIE5vbkNvcHlhYmxlT3JNb3ZhYmxlJiBvcGVyYXRvcj0oY29uc3QgTm9uQ29weWFibGVPck1v
dmFibGUmKSA9IGRlbGV0ZTsKKyAgTm9uQ29weWFibGVPck1vdmFibGUmIG9wZXJhdG9yPShOb25D
b3B5YWJsZU9yTW92YWJsZSYmKSA9IGRlbGV0ZTsKIH07CiAKIGNsYXNzIEJhc2UgewpAQCAtMzI5
LDYgKzM4NSwyMiBAQCBjbGFzcyBCYXNlIHsKICNkZWZpbmUgQUJTTF9HQ0NfQlVHX1RSSVZJQUxM
WV9DT05TVFJVQ1RJQkxFX09OX0FSUkFZX09GX05PTlRSSVZJQUwgMQogI2VuZGlmCiAKK1RFU1Qo
VHlwZVRyYWl0c1Rlc3QsIFRlc3RJc0Z1bmN0aW9uKSB7CisgIHN0cnVjdCBDYWxsYWJsZSB7Cisg
ICAgdm9pZCBvcGVyYXRvcigpKCkge30KKyAgfTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfZnVu
Y3Rpb248dm9pZCgpPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19mdW5jdGlvbjx2
b2lkKCkmPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19mdW5jdGlvbjx2b2lkKCkg
Y29uc3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX2Z1bmN0aW9uPHZvaWQoKSBu
b2V4Y2VwdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfZnVuY3Rpb248dm9pZCgu
Li4pIG5vZXhjZXB0Pjo6dmFsdWUpOworCisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19mdW5jdGlv
bjx2b2lkKCopKCk+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19mdW5jdGlvbjx2
b2lkKCYpKCk+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19mdW5jdGlvbjxpbnQ+
Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19mdW5jdGlvbjxDYWxsYWJsZT46OnZh
bHVlKTsKK30KKwogVEVTVChUeXBlVHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxEZXN0cnVjdG9yKSB7
CiAgIC8vIFZlcmlmeSB0aGF0IGFyaXRobWV0aWMgdHlwZXMgYW5kIHBvaW50ZXJzIGhhdmUgdHJp
dmlhbCBkZXN0cnVjdG9ycy4KICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxib29sPjo6dmFsdWUpOwpAQCAtNDc0LDYgKzU0Niw3OSBAQCBURVNUKFR5cGVUcmFp
dHNUZXN0LCBUZXN0VHJpdmlhbERlZmF1bHRDdG9yKSB7CiAjZW5kaWYKIH0KIAorVEVTVChUeXBl
VHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxNb3ZlQ3RvcikgeworICAvLyBWZXJpZnkgdGhhdCBhcml0
aG1ldGljIHR5cGVzIGFuZCBwb2ludGVycyBoYXZlIHRyaXZpYWwgbW92ZQorICAvLyBjb25zdHJ1
Y3RvcnMuCisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGli
bGU8Ym9vbD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVf
Y29uc3RydWN0aWJsZTxjaGFyPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2
aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPHVuc2lnbmVkIGNoYXI+Ojp2YWx1ZSk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8c2lnbmVkIGNoYXI+
Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVj
dGlibGU8d2NoYXJfdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5
X21vdmVfY29uc3RydWN0aWJsZTxpbnQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6Omlz
X3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8dW5zaWduZWQgaW50Pjo6dmFsdWUpOworICBF
WFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPGludDE2X3Q+
Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVj
dGlibGU8dWludDE2X3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxs
eV9tb3ZlX2NvbnN0cnVjdGlibGU8aW50NjRfdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTx1aW50NjRfdD46OnZhbHVlKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxmbG9hdD46
OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0
aWJsZTxkb3VibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9t
b3ZlX2NvbnN0cnVjdGlibGU8bG9uZyBkb3VibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8c3RkOjpzdHJpbmcqPjo6dmFsdWUp
OworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPFRy
aXZpYWwqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9j
b25zdHJ1Y3RpYmxlPGNvbnN0IHN0ZDo6c3RyaW5nKj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxjb25zdCBUcml2aWFsKj46OnZh
bHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJs
ZTxzdGQ6OnN0cmluZyoqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFs
bHlfbW92ZV9jb25zdHJ1Y3RpYmxlPFRyaXZpYWwqKj46OnZhbHVlKTsKKworICAvLyBSZWZlcmVu
Y2UgdHlwZXMKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0
aWJsZTxpbnQmPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92
ZV9jb25zdHJ1Y3RpYmxlPGludCYmPjo6dmFsdWUpOworCisgIC8vIHR5cGVzIHdpdGggY29tcGls
ZXIgZ2VuZXJhdGVkIG1vdmUgY3RvcnMKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5
X21vdmVfY29uc3RydWN0aWJsZTxUcml2aWFsPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNs
Ojppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPFRyaXZpYWxNb3ZlQ3Rvcj46OnZhbHVl
KTsKKworICAvLyBWZXJpZnkgdGhhdCB0eXBlcyB3aXRob3V0IHRoZW0gKGkuZS4gbm9udHJpdmlh
bCBvciBkZWxldGVkKSBhcmUgbm90LgorICBFWFBFQ1RfRkFMU0UoCisgICAgICBhYnNsOjppc190
cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPE5vbnRyaXZpYWxDb3B5Q3Rvcj46OnZhbHVlKTsK
KyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8RGVs
ZXRlZENvcHlDdG9yPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBhYnNsOjppc190
cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPE5vbkNvcHlhYmxlT3JNb3ZhYmxlPjo6dmFsdWUp
OworCisjaWZkZWYgQUJTTF9UUklWSUFMTFlfQ09OU1RSVUNUSUJMRV9WRVJJRllfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRQorICAvLyB0eXBlIHdpdGggbm9udHJpdmlhbCBkZXN0cnVjdG9yIGFyZSBu
b250cml2aWFsIG1vdmUgY29uc3RydWJ0aWJsZQorICBFWFBFQ1RfRkFMU0UoCisgICAgICBhYnNs
Ojppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPE5vbnRyaXZpYWxEZXN0cnVjdG9yPjo6
dmFsdWUpOworI2VuZGlmCisKKyAgLy8gdHlwZXMgd2l0aCB2dGFibGVzCisgIEVYUEVDVF9GQUxT
RShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPEJhc2U+Ojp2YWx1ZSk7CisK
KyAgLy8gVmVyaWZ5IHRoYXQgc2ltcGxlX3BhaXIgb2Ygc3VjaCB0eXBlcyBpcyB0cml2aWFsbHkg
bW92ZSBjb25zdHJ1Y3RpYmxlCisgIEVYUEVDVF9UUlVFKAorICAgICAgKGFic2w6OmlzX3RyaXZp
YWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8c2ltcGxlX3BhaXI8aW50LCBjaGFyKj4+Ojp2YWx1ZSkp
OworICBFWFBFQ1RfVFJVRSgoCisgICAgICBhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1
Y3RpYmxlPHNpbXBsZV9wYWlyPGludCwgVHJpdmlhbD4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJV
RSgoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTwKKyAgICAgICAgICAgICAg
IHNpbXBsZV9wYWlyPGludCwgVHJpdmlhbE1vdmVDdG9yPj46OnZhbHVlKSk7CisKKyAgLy8gVmVy
aWZ5IHRoYXQgdHlwZXMgd2l0aG91dCB0cml2aWFsIG1vdmUgY29uc3RydWN0b3JzIGFyZQorICAv
LyBjb3JyZWN0bHkgbWFya2VkIGFzIHN1Y2guCisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2
aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPHN0ZDo6c3RyaW5nPjo6dmFsdWUpOworICBFWFBFQ1Rf
RkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxzdGQ6OnZlY3Rvcjxp
bnQ+Pjo6dmFsdWUpOworCisgIC8vIFZlcmlmeSB0aGF0IHNpbXBsZV9wYWlycyBvZiB0eXBlcyB3
aXRob3V0IHRyaXZpYWwgbW92ZSBjb25zdHJ1Y3RvcnMKKyAgLy8gYXJlIG5vdCBtYXJrZWQgYXMg
dHJpdmlhbC4KKyAgRVhQRUNUX0ZBTFNFKChhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1
Y3RpYmxlPAorICAgICAgICAgICAgICAgIHNpbXBsZV9wYWlyPGludCwgc3RkOjpzdHJpbmc+Pjo6
dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1
Y3RpYmxlPAorICAgICAgICAgICAgICAgIHNpbXBsZV9wYWlyPHN0ZDo6c3RyaW5nLCBpbnQ+Pjo6
dmFsdWUpKTsKKworICAvLyBWZXJpZnkgdGhhdCBhcnJheXMgYXJlIG5vdAorICB1c2luZyBpbnQx
MCA9IGludFsxMF07CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25z
dHJ1Y3RpYmxlPGludDEwPjo6dmFsdWUpOworfQorCiBURVNUKFR5cGVUcmFpdHNUZXN0LCBUZXN0
VHJpdmlhbENvcHlDdG9yKSB7CiAgIC8vIFZlcmlmeSB0aGF0IGFyaXRobWV0aWMgdHlwZXMgYW5k
IHBvaW50ZXJzIGhhdmUgdHJpdmlhbCBjb3B5CiAgIC8vIGNvbnN0cnVjdG9ycy4KQEAgLTQ5OCw2
ICs2NDMsMTAgQEAgVEVTVChUeXBlVHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxDb3B5Q3Rvcikgewog
ICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPHN0ZDo6
c3RyaW5nKio+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5
X2NvbnN0cnVjdGlibGU8VHJpdmlhbCoqPjo6dmFsdWUpOwogCisgIC8vIFJlZmVyZW5jZSB0eXBl
cworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPGlu
dCY+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfY29weV9jb25z
dHJ1Y3RpYmxlPGludCYmPjo6dmFsdWUpOworCiAgIC8vIHR5cGVzIHdpdGggY29tcGlsZXIgZ2Vu
ZXJhdGVkIGNvcHkgY3RvcnMKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlf
Y29uc3RydWN0aWJsZTxUcml2aWFsPjo6dmFsdWUpOwogICBFWFBFQ1RfVFJVRShhYnNsOjppc190
cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPFRyaXZpYWxDb3B5Q3Rvcj46OnZhbHVlKTsKQEAg
LTUwNyw3ICs2NTYsOSBAQCBURVNUKFR5cGVUcmFpdHNUZXN0LCBUZXN0VHJpdmlhbENvcHlDdG9y
KSB7CiAgICAgICBhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPE5vbnRyaXZp
YWxDb3B5Q3Rvcj46OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9j
b3B5X2NvbnN0cnVjdGlibGU8RGVsZXRlZENvcHlDdG9yPjo6dmFsdWUpOwogICBFWFBFQ1RfRkFM
U0UoCi0gICAgICBhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPE5vbkNvcHlh
YmxlPjo6dmFsdWUpOworICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJs
ZTxNb3ZhYmxlTm9uQ29weWFibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIGFi
c2w6OmlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8Tm9uQ29weWFibGVPck1vdmFibGU+
Ojp2YWx1ZSk7CiAKICNpZmRlZiBBQlNMX1RSSVZJQUxMWV9DT05TVFJVQ1RJQkxFX1ZFUklGWV9U
UklWSUFMTFlfREVTVFJVQ1RJQkxFCiAgIC8vIHR5cGUgd2l0aCBub250cml2aWFsIGRlc3RydWN0
b3IgYXJlIG5vbnRyaXZpYWwgY29weSBjb25zdHJ1YnRpYmxlCkBAIC01NDMsNiArNjk0LDc0IEBA
IFRFU1QoVHlwZVRyYWl0c1Rlc3QsIFRlc3RUcml2aWFsQ29weUN0b3IpIHsKICAgRVhQRUNUX0ZB
TFNFKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8aW50MTA+Ojp2YWx1ZSk7
CiB9CiAKK1RFU1QoVHlwZVRyYWl0c1Rlc3QsIFRlc3RUcml2aWFsTW92ZUFzc2lnbikgeworICAv
LyBWZXJpZnkgdGhhdCBhcml0aG1ldGljIHR5cGVzIGFuZCBwb2ludGVycyBoYXZlIHRyaXZpYWwg
bW92ZQorICAvLyBhc3NpZ25tZW50IG9wZXJhdG9ycy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNf
dHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxib29sPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShh
YnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPGNoYXI+Ojp2YWx1ZSk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8dW5zaWduZWQgY2hhcj46
OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJs
ZTxzaWduZWQgY2hhcj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5
X21vdmVfYXNzaWduYWJsZTx3Y2hhcl90Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpp
c190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPGludD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTx1bnNpZ25lZCBpbnQ+Ojp2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8aW50MTZf
dD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWdu
YWJsZTx1aW50MTZfdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5
X21vdmVfYXNzaWduYWJsZTxpbnQ2NF90Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpp
c190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPHVpbnQ2NF90Pjo6dmFsdWUpOworICBFWFBFQ1Rf
VFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPGZsb2F0Pjo6dmFsdWUpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPGRvdWJsZT46
OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJs
ZTxsb25nIGRvdWJsZT46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5
X21vdmVfYXNzaWduYWJsZTxzdGQ6OnN0cmluZyo+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8VHJpdmlhbCo+Ojp2YWx1ZSk7CisgIEVY
UEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8Y29uc3Qgc3RkOjpz
dHJpbmcqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9h
c3NpZ25hYmxlPGNvbnN0IFRyaXZpYWwqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpp
c190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPHN0ZDo6c3RyaW5nKio+Ojp2YWx1ZSk7CisgIEVY
UEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8VHJpdmlhbCoqPjo6
dmFsdWUpOworCisgIC8vIGNvbnN0IHF1YWxpZmllZCB0eXBlcyBhcmUgbm90IGFzc2lnbmFibGUK
KyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8Y29uc3Qg
aW50Pjo6dmFsdWUpOworCisgIC8vIHR5cGVzIHdpdGggY29tcGlsZXIgZ2VuZXJhdGVkIG1vdmUg
YXNzaWdubWVudAorICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25h
YmxlPFRyaXZpYWw+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9t
b3ZlX2Fzc2lnbmFibGU8VHJpdmlhbE1vdmVBc3NpZ24+Ojp2YWx1ZSk7CisKKyAgLy8gVmVyaWZ5
IHRoYXQgdHlwZXMgd2l0aG91dCB0aGVtIChpLmUuIG5vbnRyaXZpYWwgb3IgZGVsZXRlZCkgYXJl
IG5vdC4KKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8
Tm9udHJpdmlhbENvcHlBc3NpZ24+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190
cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPERlbGV0ZWRDb3B5QXNzaWduPjo6dmFsdWUpOworICBF
WFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxOb25Db3B5YWJs
ZU9yTW92YWJsZT46OnZhbHVlKTsKKworICAvLyB0eXBlcyB3aXRoIHZ0YWJsZXMKKyAgRVhQRUNU
X0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8QmFzZT46OnZhbHVlKTsK
KworICAvLyBWZXJpZnkgdGhhdCBzaW1wbGVfcGFpciBpcyB0cml2aWFsbHkgYXNzaWduYWJsZQor
ICBFWFBFQ1RfVFJVRSgKKyAgICAgIChhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxl
PHNpbXBsZV9wYWlyPGludCwgY2hhcio+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAg
ICAoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxzaW1wbGVfcGFpcjxpbnQsIFRy
aXZpYWw+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKGFic2w6OmlzX3RyaXZpYWxseV9tb3Zl
X2Fzc2lnbmFibGU8CisgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxpbnQsIFRyaXZpYWxNb3Zl
QXNzaWduPj46OnZhbHVlKSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgdHlwZXMgbm90IHRyaXZpYWxs
eSBtb3ZlIGFzc2lnbmFibGUgYXJlCisgIC8vIGNvcnJlY3RseSBtYXJrZWQgYXMgc3VjaC4KKyAg
RVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8c3RkOjpzdHJp
bmc+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3Np
Z25hYmxlPHN0ZDo6dmVjdG9yPGludD4+Ojp2YWx1ZSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgc2lt
cGxlX3BhaXJzIG9mIHR5cGVzIG5vdCB0cml2aWFsbHkgbW92ZSBhc3NpZ25hYmxlCisgIC8vIGFy
ZSBub3QgbWFya2VkIGFzIHRyaXZpYWwuCisgIEVYUEVDVF9GQUxTRSgoYWJzbDo6aXNfdHJpdmlh
bGx5X21vdmVfYXNzaWduYWJsZTwKKyAgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxpbnQsIHN0
ZDo6c3RyaW5nPj46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoYWJzbDo6aXNfdHJpdmlhbGx5
X21vdmVfYXNzaWduYWJsZTwKKyAgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxzdGQ6OnN0cmlu
ZywgaW50Pj46OnZhbHVlKSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgYXJyYXlzIGFyZSBub3QgdHJp
dmlhbGx5IG1vdmUgYXNzaWduYWJsZQorICB1c2luZyBpbnQxMCA9IGludFsxMF07CisgIEVYUEVD
VF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPGludDEwPjo6dmFsdWUp
OworCisgIC8vIFZlcmlmeSB0aGF0IHJlZmVyZW5jZXMgYXJlIGhhbmRsZWQgY29ycmVjdGx5Cisg
IEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8VHJpdmlhbCYm
Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25h
YmxlPFRyaXZpYWwmPjo6dmFsdWUpOworfQorCiBURVNUKFR5cGVUcmFpdHNUZXN0LCBUZXN0VHJp
dmlhbENvcHlBc3NpZ24pIHsKICAgLy8gVmVyaWZ5IHRoYXQgYXJpdGhtZXRpYyB0eXBlcyBhbmQg
cG9pbnRlcnMgaGF2ZSB0cml2aWFsIGNvcHkKICAgLy8gYXNzaWdubWVudCBvcGVyYXRvcnMuCkBA
IC01NzcsNyArNzk2LDggQEAgVEVTVChUeXBlVHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxDb3B5QXNz
aWduKSB7CiAgIC8vIFZlcmlmeSB0aGF0IHR5cGVzIHdpdGhvdXQgdGhlbSAoaS5lLiBub250cml2
aWFsIG9yIGRlbGV0ZWQpIGFyZSBub3QuCiAgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFs
bHlfY29weV9hc3NpZ25hYmxlPE5vbnRyaXZpYWxDb3B5QXNzaWduPjo6dmFsdWUpOwogICBFWFBF
Q1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTxEZWxldGVkQ29weUFz
c2lnbj46OnZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2Fz
c2lnbmFibGU8Tm9uQ29weWFibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190
cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPE1vdmFibGVOb25Db3B5YWJsZT46OnZhbHVlKTsKKyAg
RVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGU8Tm9uQ29weWFi
bGVPck1vdmFibGU+Ojp2YWx1ZSk7CiAKICAgLy8gdHlwZXMgd2l0aCB2dGFibGVzCiAgIEVYUEVD
VF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPEJhc2U+Ojp2YWx1ZSk7
CkBAIC02MTEsNiArODMxLDExNiBAQCBURVNUKFR5cGVUcmFpdHNUZXN0LCBUZXN0VHJpdmlhbENv
cHlBc3NpZ24pIHsKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWdu
YWJsZTxUcml2aWFsJj46OnZhbHVlKTsKIH0KIAorVEVTVChUeXBlVHJhaXRzVGVzdCwgVGVzdFRy
aXZpYWxseUNvcHlhYmxlKSB7CisgIC8vIFZlcmlmeSB0aGF0IGFyaXRobWV0aWMgdHlwZXMgYW5k
IHBvaW50ZXJzIGFyZSB0cml2aWFsbHkgY29weWFibGUuCisgIEVYUEVDVF9UUlVFKGFic2w6OnR5
cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8Ym9vbD46OnZhbHVlKTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9j
b3B5YWJsZTxjaGFyPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVf
dHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8dW5zaWduZWQgY2hhcj46OnZh
bHVlKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6
aXNfdHJpdmlhbGx5X2NvcHlhYmxlPHNpZ25lZCBjaGFyPjo6dmFsdWUpOworICBFWFBFQ1RfVFJV
RSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFi
bGU8d2NoYXJfdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6dHlwZV90cmFpdHNfaW50
ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxpbnQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVF
KAorICAgICAgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJs
ZTx1bnNpZ25lZCBpbnQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6dHlw
ZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxpbnQxNl90Pjo6dmFsdWUp
OworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190
cml2aWFsbHlfY29weWFibGU8dWludDE2X3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKAorICAg
ICAgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxpbnQ2
NF90Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2lu
dGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8dWludDY0X3Q+Ojp2YWx1ZSk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8
ZmxvYXQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFs
Ojppc190cml2aWFsbHlfY29weWFibGU8ZG91YmxlPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgK
KyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8
bG9uZyBkb3VibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6dHlwZV90
cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxzdGQ6OnN0cmluZyo+Ojp2YWx1
ZSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6Omlz
X3RyaXZpYWxseV9jb3B5YWJsZTxUcml2aWFsKj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTwKKyAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgKKyAgICAg
IGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8Y29uc3Qg
VHJpdmlhbCo+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6dHlwZV90cmFp
dHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxzdGQ6OnN0cmluZyoqPjo6dmFsdWUp
OworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190
cml2aWFsbHlfY29weWFibGU8VHJpdmlhbCoqPjo6dmFsdWUpOworCisgIC8vIGNvbnN0IHF1YWxp
ZmllZCB0eXBlcyBhcmUgbm90IGFzc2lnbmFibGUgYnV0IGFyZSBjb25zdHJ1Y3RpYmxlCisgIEVY
UEVDVF9UUlVFKAorICAgICAgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxs
eV9jb3B5YWJsZTxjb25zdCBpbnQ+Ojp2YWx1ZSk7CisKKyAgLy8gVHJpdmlhbCBjb3B5IGNvbnN0
cnVjdG9yL2Fzc2lnbm1lbnQgYW5kIGRlc3RydWN0b3IuCisgIEVYUEVDVF9UUlVFKAorICAgICAg
YWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxUcml2aWFs
Pjo6dmFsdWUpOworICAvLyBUcml2aWFsIGNvcHkgYXNzaWdubWVudCwgYnV0IG5vbi10cml2aWFs
IGNvcHkgY29uc3RydWN0b3IvZGVzdHJ1Y3Rvci4KKyAgRVhQRUNUX0ZBTFNFKGFic2w6OnR5cGVf
dHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgICBU
cml2aWFsQ29weUFzc2lnbj46OnZhbHVlKTsKKyAgLy8gVHJpdmlhbCBjb3B5IGNvbnN0cnVjdG9y
LCBidXQgbm9uLXRyaXZpYWwgYXNzaWdubWVudC4KKyAgRVhQRUNUX0ZBTFNFKGFic2w6OnR5cGVf
dHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgICBU
cml2aWFsQ29weUN0b3I+Ojp2YWx1ZSk7CisKKyAgLy8gVHlwZXMgd2l0aCBhIG5vbi10cml2aWFs
IGNvcHkgY29uc3RydWN0b3IvYXNzaWdubWVudAorICBFWFBFQ1RfRkFMU0UoYWJzbDo6dHlwZV90
cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTwKKyAgICAgICAgICAgICAgIE5v
bnRyaXZpYWxDb3B5Q3Rvcj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OnR5cGVfdHJh
aXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgICBOb250
cml2aWFsQ29weUFzc2lnbj46OnZhbHVlKTsKKworICAvLyBUeXBlcyB3aXRob3V0IGNvcHkgY29u
c3RydWN0b3IvYXNzaWdubWVudCwgYnV0IHdpdGggbW92ZQorICAvLyBNU1ZDIGRpc2FncmVlcyB3
aXRoIG90aGVyIGNvbXBpbGVycyBhYm91dCB0aGlzOgorICAvLyBFWFBFQ1RfVFJVRShhYnNsOjp0
eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPAorICAvLyAgICAgICAg
ICAgICBNb3ZhYmxlTm9uQ29weWFibGU+Ojp2YWx1ZSk7CisKKyAgLy8gVHlwZXMgd2l0aG91dCBj
b3B5L21vdmUgY29uc3RydWN0b3IvYXNzaWdubWVudAorICBFWFBFQ1RfRkFMU0UoYWJzbDo6dHlw
ZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTwKKyAgICAgICAgICAgICAg
IE5vbkNvcHlhYmxlT3JNb3ZhYmxlPjo6dmFsdWUpOworCisgIC8vIE5vIGNvcHkgYXNzaWduLCBi
dXQgaGFzIHRyaXZpYWwgY29weSBjb25zdHJ1Y3Rvci4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6dHlw
ZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTwKKyAgICAgICAgICAgICAg
RGVsZXRlZENvcHlBc3NpZ24+Ojp2YWx1ZSk7CisKKyAgLy8gdHlwZXMgd2l0aCB2dGFibGVzCisg
IEVYUEVDVF9GQUxTRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2Nv
cHlhYmxlPEJhc2U+Ojp2YWx1ZSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgc2ltcGxlX3BhaXIgaXMg
dHJpdmlhbGx5IGNvcHlhYmxlIGlmIG1lbWJlcnMgYXJlCisgIEVYUEVDVF9UUlVFKChhYnNsOjp0
eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPAorICAgICAgICAgICAg
ICAgc2ltcGxlX3BhaXI8aW50LCBjaGFyKj4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoYWJz
bDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTwKKyAgICAgICAg
ICAgICAgIHNpbXBsZV9wYWlyPGludCwgVHJpdmlhbD4+Ojp2YWx1ZSkpOworCisgIC8vIFZlcmlm
eSB0aGF0IHR5cGVzIG5vdCB0cml2aWFsbHkgY29weWFibGUgYXJlCisgIC8vIGNvcnJlY3RseSBt
YXJrZWQgYXMgc3VjaC4KKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgYWJzbDo6dHlwZV90cmFpdHNf
aW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxzdGQ6OnN0cmluZz46OnZhbHVlKTsKKyAg
RVhQRUNUX0ZBTFNFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29w
eWFibGU8CisgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+Pjo6dmFsdWUpOworCisgIC8v
IFZlcmlmeSB0aGF0IHNpbXBsZV9wYWlycyBvZiB0eXBlcyBub3QgdHJpdmlhbGx5IGNvcHlhYmxl
CisgIC8vIGFyZSBub3QgbWFya2VkIGFzIHRyaXZpYWwuCisgIEVYUEVDVF9GQUxTRSgoYWJzbDo6
dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTwKKyAgICAgICAgICAg
ICAgICBzaW1wbGVfcGFpcjxpbnQsIHN0ZDo6c3RyaW5nPj46OnZhbHVlKSk7CisgIEVYUEVDVF9G
QUxTRSgoYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTwK
KyAgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxzdGQ6OnN0cmluZywgaW50Pj46OnZhbHVlKSk7
CisgIEVYUEVDVF9GQUxTRSgoYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxs
eV9jb3B5YWJsZTwKKyAgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxpbnQsIFRyaXZpYWxDb3B5
QXNzaWduPj46OnZhbHVlKSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgYXJyYXlzIG9mIHRyaXZpYWxs
eSBjb3B5YWJsZSB0eXBlcyBhcmUgdHJpdmlhbGx5IGNvcHlhYmxlCisgIHVzaW5nIGludDEwID0g
aW50WzEwXTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3Ry
aXZpYWxseV9jb3B5YWJsZTxpbnQxMD46OnZhbHVlKTsKKyAgdXNpbmcgaW50MTB4MTAgPSBpbnRb
MTBdWzEwXTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5h
bDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPGludDEweDEwPjo6dmFsdWUpOworCisgIC8vIFZlcmlm
eSB0aGF0IHJlZmVyZW5jZXMgYXJlIGhhbmRsZWQgY29ycmVjdGx5CisgIEVYUEVDVF9GQUxTRSgK
KyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8
VHJpdmlhbCYmPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBhYnNsOjp0eXBlX3Ry
YWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPFRyaXZpYWwmPjo6dmFsdWUpOwor
fQorCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfRVhQRUNUX0FMSUFTX0VRVUlWQUxFTkNFKHRyYWl0
X25hbWUsIC4uLikgICAgICAgICAgXAogICBFWFBFQ1RfVFJVRSgoc3RkOjppc19zYW1lPHR5cGVu
YW1lIHN0ZDo6dHJhaXRfbmFtZTxfX1ZBX0FSR1NfXz46OnR5cGUsIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhYnNsOjp0cmFpdF9uYW1lIyNfdDxfX1ZBX0FSR1NfXz4+Ojp2YWx1ZSkp
CkBAIC05NTMsNCArMTI4Myw4NSBAQCBURVNUKFR5cGVUcmFpdHNUZXN0LCBJc01vdmVBc3NpZ25h
YmxlKSB7CiAjZW5kaWYgIC8vIF9MSUJDUFBfVkVSU0lPTgogfQogCituYW1lc3BhY2UgYWRsX25h
bWVzcGFjZSB7CisKK3N0cnVjdCBEZWxldGVkU3dhcCB7Cit9OworCit2b2lkIHN3YXAoRGVsZXRl
ZFN3YXAmLCBEZWxldGVkU3dhcCYpID0gZGVsZXRlOworCitzdHJ1Y3QgU3BlY2lhbE5vZXhjZXB0
U3dhcCB7CisgIFNwZWNpYWxOb2V4Y2VwdFN3YXAoU3BlY2lhbE5vZXhjZXB0U3dhcCYmKSB7fQor
ICBTcGVjaWFsTm9leGNlcHRTd2FwJiBvcGVyYXRvcj0oU3BlY2lhbE5vZXhjZXB0U3dhcCYmKSB7
IHJldHVybiAqdGhpczsgfQorICB+U3BlY2lhbE5vZXhjZXB0U3dhcCgpID0gZGVmYXVsdDsKK307
CisKK3ZvaWQgc3dhcChTcGVjaWFsTm9leGNlcHRTd2FwJiwgU3BlY2lhbE5vZXhjZXB0U3dhcCYp
IG5vZXhjZXB0IHt9CisKK30gIC8vIG5hbWVzcGFjZSBhZGxfbmFtZXNwYWNlCisKK1RFU1QoVHlw
ZVRyYWl0c1Rlc3QsIElzU3dhcHBhYmxlKSB7CisgIHVzaW5nIGFic2w6OnR5cGVfdHJhaXRzX2lu
dGVybmFsOjpJc1N3YXBwYWJsZTsKKyAgdXNpbmcgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6
OlN0ZFN3YXBJc1VuY29uc3RyYWluZWQ7CisKKyAgRVhQRUNUX1RSVUUoSXNTd2FwcGFibGU8aW50
Pjo6dmFsdWUpOworCisgIHN0cnVjdCBTIHt9OworICBFWFBFQ1RfVFJVRShJc1N3YXBwYWJsZTxT
Pjo6dmFsdWUpOworCisgIHN0cnVjdCBOb0NvbnN0cnVjdCB7CisgICAgTm9Db25zdHJ1Y3QoTm9D
b25zdHJ1Y3QmJikgPSBkZWxldGU7CisgICAgTm9Db25zdHJ1Y3QmIG9wZXJhdG9yPShOb0NvbnN0
cnVjdCYmKSB7IHJldHVybiAqdGhpczsgfQorICAgIH5Ob0NvbnN0cnVjdCgpID0gZGVmYXVsdDsK
KyAgfTsKKworICBFWFBFQ1RfRVEoSXNTd2FwcGFibGU8Tm9Db25zdHJ1Y3Q+Ojp2YWx1ZSwgU3Rk
U3dhcElzVW5jb25zdHJhaW5lZDo6dmFsdWUpOworICBzdHJ1Y3QgTm9Bc3NpZ24geworICAgIE5v
QXNzaWduKE5vQXNzaWduJiYpIHt9CisgICAgTm9Bc3NpZ24mIG9wZXJhdG9yPShOb0Fzc2lnbiYm
KSA9IGRlbGV0ZTsKKyAgICB+Tm9Bc3NpZ24oKSA9IGRlZmF1bHQ7CisgIH07CisKKyAgRVhQRUNU
X0VRKElzU3dhcHBhYmxlPE5vQXNzaWduPjo6dmFsdWUsIFN0ZFN3YXBJc1VuY29uc3RyYWluZWQ6
OnZhbHVlKTsKKworICBFWFBFQ1RfRkFMU0UoSXNTd2FwcGFibGU8YWRsX25hbWVzcGFjZTo6RGVs
ZXRlZFN3YXA+Ojp2YWx1ZSk7CisKKyAgRVhQRUNUX1RSVUUoSXNTd2FwcGFibGU8YWRsX25hbWVz
cGFjZTo6U3BlY2lhbE5vZXhjZXB0U3dhcD46OnZhbHVlKTsKK30KKworVEVTVChUeXBlVHJhaXRz
VGVzdCwgSXNOb3Rocm93U3dhcHBhYmxlKSB7CisgIHVzaW5nIGFic2w6OnR5cGVfdHJhaXRzX2lu
dGVybmFsOjpJc05vdGhyb3dTd2FwcGFibGU7CisgIHVzaW5nIGFic2w6OnR5cGVfdHJhaXRzX2lu
dGVybmFsOjpTdGRTd2FwSXNVbmNvbnN0cmFpbmVkOworCisgIEVYUEVDVF9UUlVFKElzTm90aHJv
d1N3YXBwYWJsZTxpbnQ+Ojp2YWx1ZSk7CisKKyAgc3RydWN0IE5vbk5vZXhjZXB0TW92ZXMgewor
ICAgIE5vbk5vZXhjZXB0TW92ZXMoTm9uTm9leGNlcHRNb3ZlcyYmKSB7fQorICAgIE5vbk5vZXhj
ZXB0TW92ZXMmIG9wZXJhdG9yPShOb25Ob2V4Y2VwdE1vdmVzJiYpIHsgcmV0dXJuICp0aGlzOyB9
CisgICAgfk5vbk5vZXhjZXB0TW92ZXMoKSA9IGRlZmF1bHQ7CisgIH07CisKKyAgRVhQRUNUX0ZB
TFNFKElzTm90aHJvd1N3YXBwYWJsZTxOb25Ob2V4Y2VwdE1vdmVzPjo6dmFsdWUpOworCisgIHN0
cnVjdCBOb0NvbnN0cnVjdCB7CisgICAgTm9Db25zdHJ1Y3QoTm9Db25zdHJ1Y3QmJikgPSBkZWxl
dGU7CisgICAgTm9Db25zdHJ1Y3QmIG9wZXJhdG9yPShOb0NvbnN0cnVjdCYmKSB7IHJldHVybiAq
dGhpczsgfQorICAgIH5Ob0NvbnN0cnVjdCgpID0gZGVmYXVsdDsKKyAgfTsKKworICBFWFBFQ1Rf
RkFMU0UoSXNOb3Rocm93U3dhcHBhYmxlPE5vQ29uc3RydWN0Pjo6dmFsdWUpOworCisgIHN0cnVj
dCBOb0Fzc2lnbiB7CisgICAgTm9Bc3NpZ24oTm9Bc3NpZ24mJikge30KKyAgICBOb0Fzc2lnbiYg
b3BlcmF0b3I9KE5vQXNzaWduJiYpID0gZGVsZXRlOworICAgIH5Ob0Fzc2lnbigpID0gZGVmYXVs
dDsKKyAgfTsKKworICBFWFBFQ1RfRkFMU0UoSXNOb3Rocm93U3dhcHBhYmxlPE5vQXNzaWduPjo6
dmFsdWUpOworCisgIEVYUEVDVF9GQUxTRShJc05vdGhyb3dTd2FwcGFibGU8YWRsX25hbWVzcGFj
ZTo6RGVsZXRlZFN3YXA+Ojp2YWx1ZSk7CisKKyAgRVhQRUNUX1RSVUUoSXNOb3Rocm93U3dhcHBh
YmxlPGFkbF9uYW1lc3BhY2U6OlNwZWNpYWxOb2V4Y2VwdFN3YXA+Ojp2YWx1ZSk7Cit9CisKIH0g
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5iYXplbCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL251bWVyaWMvQlVJTEQuYmF6ZWwKaW5kZXggMzI0Y2U2Njk1ZTQwMmM4OTczZmM1YjVkZjI1
N2FhNWYyNjUyMDNkZC4uZDliNTYxZGZlY2EyYWViMzU2ZjdhNGM5ZDFhODZmNjU4Y2EzNWRiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmlj
L0JVSUxELmJhemVsCkBAIC00LDcgKzQsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTMsOCAr
MTMsOSBAQAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIAogbG9hZCgKLSAgICAi
Ly9hYnNsOmNvcHRzLmJ6bCIsCisgICAgIi8vYWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnps
IiwKICAgICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRT
IiwKICAgICAiQUJTTF9URVNUX0NPUFRTIiwKICkKIApAQCAtMzEsNiArMzIsNyBAQCBjY19saWJy
YXJ5KAogICAgIF0sCiAgICAgaGRycyA9IFsiaW50MTI4LmgiXSwKICAgICBjb3B0cyA9IEFCU0xf
REVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAg
ICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKICAgICAgICAgIi8vYWJz
bC9iYXNlOmNvcmVfaGVhZGVycyIsCkBAIC00NSw2ICs0Nyw3IEBAIGNjX3Rlc3QoCiAgICAgICAg
ICJpbnQxMjhfdGVzdC5jYyIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAg
ICAgICAiOmludDEyOCIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCkBAIC01OSw2ICs2Miw3IEBA
IGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJpbnQxMjhfYmVuY2htYXJrIiwKICAgICBzcmNzID0gWyJp
bnQxMjhfYmVuY2htYXJrLmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFncyA9IFsiYmVuY2htYXJr
Il0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjppbnQxMjgiLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bnVtZXJpYy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvQlVJTEQuZ24KaW5kZXggZmRmYTJlMjcx
ZmZmZmRmMzNkNmM3MzA3ZmU1NGU5OTVmNGM5Nzg5Yi4uNTViNmQwYjllZGViOWExZjUxYjhlNTg5
MjNiNWU2NmRiYTUzNmU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5nbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9udW1lcmljL0JVSUxELmduCkBAIC02LDYgKzYsNyBAQCBpbXBvcnQoIi8vYnVpbGRf
b3ZlcnJpZGVzL2J1aWxkLmduaSIpCiAKIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CiAgIHZp
c2liaWxpdHkgPSBbCisgICAgIi8vbGliYXNzaXN0YW50LyoiLAogICAgICIvL3RoaXJkX3BhcnR5
L3dlYnJ0Yy8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAogICAgICIvL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3Q6Z3Rlc3QiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvQ01ha2VMaXN0cy50eHQKaW5kZXggMzM2MGIy
ZWU3MjZlMWExOThmNTljMzQ2NmYyMWNlNWEzYmYwOGI5MC4uMjQyODg5ZjA4OGFkNjQ3ZWY3N2M2
OGM4MTYyNzA1MjVkMTg5YjAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAog
IyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwot
IyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApAQCAtMTQsNDkgKzE0LDQ3IEBACiAjIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgogIwogCi1saXN0KEFQUEVORCBOVU1FUklDX1BVQkxJQ19IRUFERVJTCi0g
ICJpbnQxMjguaCIKLSkKLQotCi0jIGxpYnJhcnkgMTI4Ci1saXN0KEFQUEVORCBJTlQxMjhfU1JD
Ci0gICJpbnQxMjguY2MiCi0gICR7TlVNRVJJQ19QVUJMSUNfSEVBREVSU30KLSkKLWFic2xfbGli
cmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9pbnQxMjgKLSAgU09VUkNFUwotICAgICR7SU5UMTI4
X1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7SU5UMTI4X1BVQkxJQ19MSUJSQVJJRVN9
Ci0gIEVYUE9SVF9OQU1FCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKICAgICBpbnQxMjgKKyAg
SERSUworICAgICJpbnQxMjguaCIKKyAgU1JDUworICAgICJpbnQxMjguY2MiCisgICAgImludDEy
OF9oYXZlX2ludHJpbnNpYy5pbmMiCisgICAgImludDEyOF9ub19pbnRyaW5zaWMuaW5jIgorICBD
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29uZmln
CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgIFBVQkxJQwogKQogCi0KLWFic2xfaGVhZGVyX2xp
YnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfbnVtZXJpYwotICBQVUJMSUNfTElCUkFSSUVTCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBpbnQxMjhfdGVzdAorICBTUkNTCisgICAgImludDEy
OF9zdHJlYW1fdGVzdC5jYyIKKyAgICAiaW50MTI4X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIERFUFMKICAgICBhYnNsOjppbnQxMjgKLSAgRVhQT1JUX05BTUUK
LSAgICBudW1lcmljCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAg
IGFic2w6Omhhc2hfdGVzdGluZworICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAgZ21vY2tfbWFp
bgogKQogCi0jIHRlc3QgaW50MTI4X3Rlc3QKLXNldChJTlQxMjhfVEVTVF9TUkMgImludDEyOF90
ZXN0LmNjIikKLXNldChJTlQxMjhfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6Om51bWVyaWMg
YWJzbDo6YmFzZSkKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBpbnQxMjhfdGVzdAotICBT
T1VSQ0VTCi0gICAgJHtJTlQxMjhfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAk
e0lOVDEyOF9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisjIGNvbXBvbmVudCB0YXJnZXQKK2Fic2xf
Y2NfbGlicmFyeSgKKyAgTkFNRQorICAgIG51bWVyaWMKKyAgQ09QVFMKKyAgICAke0FCU0xfREVG
QVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmludDEyOAorICBQVUJMSUMKICkKLQotCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQx
MjguY2MKaW5kZXggY2Q3OTUzNGYzYmZkOWY2NTBlZDE1OGYzNWI1ZDg2Yzc0ZjE3OGNkMy4uOTNi
NjJjNTI5MDFlMmQzOTNlMjVkMTFlNWYyZDU4MDc1M2RjODk1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bnVtZXJpYy9pbnQxMjguY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjguY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNs
dWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGlvbWFuaXA+Ci0j
aW5jbHVkZSA8aW9zdHJlYW0+ICAvLyBOT0xJTlQocmVhZGFiaWxpdHkvc3RyZWFtcykKKyNpbmNs
dWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UKHJlYWRhYmlsaXR5L3N0cmVhbXMpCiAjaW5jbHVkZSA8
c3N0cmVhbT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CkBAIC02
NSw3ICs2NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IEZsczEyOCh1aW50MTI4IG4pIHsKIAogLy8g
TG9uZyBkaXZpc2lvbi9tb2R1bG8gZm9yIHVpbnQxMjggaW1wbGVtZW50ZWQgdXNpbmcgdGhlIHNo
aWZ0LXN1YnRyYWN0CiAvLyBkaXZpc2lvbiBhbGdvcml0aG0gYWRhcHRlZCBmcm9tOgotLy8gaHR0
cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81Mzg2Mzc3L2RpdmlzaW9uLXdpdGhvdXQt
dXNpbmcKKy8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUzODYzNzcvZGl2
aXNpb24td2l0aG91dC11c2luZwogdm9pZCBEaXZNb2RJbXBsKHVpbnQxMjggZGl2aWRlbmQsIHVp
bnQxMjggZGl2aXNvciwgdWludDEyOCogcXVvdGllbnRfcmV0LAogICAgICAgICAgICAgICAgIHVp
bnQxMjgqIHJlbWFpbmRlcl9yZXQpIHsKICAgYXNzZXJ0KGRpdmlzb3IgIT0gMCk7CkBAIC0xMjMs
NiArMTIzLDI4IEBAIHVpbnQxMjggTWFrZVVpbnQxMjhGcm9tRmxvYXQoVCB2KSB7CiAKICAgcmV0
dXJuIE1ha2VVaW50MTI4KDAsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2KSk7CiB9CisKKyNpZiBk
ZWZpbmVkKF9fY2xhbmdfXykgJiYgIWRlZmluZWQoX19TU0UzX18pCisvLyBXb3JrYXJvdW5kIGZv
ciBjbGFuZyBidWc6IGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyODkK
Ky8vIENhc3RpbmcgZnJvbSBsb25nIGRvdWJsZSB0byB1aW50NjRfdCBpcyBtaXNjb21waWxlZCBh
bmQgZHJvcHMgYml0cy4KKy8vIEl0IGlzIG1vcmUgd29yaywgc28gb25seSB1c2Ugd2hlbiB3ZSBu
ZWVkIHRoZSB3b3JrYXJvdW5kLgordWludDEyOCBNYWtlVWludDEyOEZyb21GbG9hdChsb25nIGRv
dWJsZSB2KSB7CisgIC8vIEdvIDUwIGJpdHMgYXQgYSB0aW1lLCB0aGF0IGZpdHMgaW4gYSBkb3Vi
bGUKKyAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0cyA+
PSA1MCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBkb3Vi
bGU+OjpkaWdpdHMgPD0gMTUwLCAiIik7CisgIC8vIFVuZGVmaW5lZCBiZWhhdmlvciBpZiB2IGlz
IG5vdCBmaW5pdGUgb3IgY2Fubm90IGZpdCBpbnRvIHVpbnQxMjguCisgIGFzc2VydChzdGQ6Omlz
ZmluaXRlKHYpICYmIHYgPiAtMSAmJiB2IDwgc3RkOjpsZGV4cCgxLjBMLCAxMjgpKTsKKworICB2
ID0gc3RkOjpsZGV4cCh2LCAtMTAwKTsKKyAgdWludDY0X3QgdzAgPSBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6OnRydW5jKHYpKSk7CisgIHYgPSBzdGQ6Omxk
ZXhwKHYgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHcwKSwgNTApOworICB1aW50NjRfdCB3MSA9IHN0
YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6dHJ1bmModikpKTsK
KyAgdiA9IHN0ZDo6bGRleHAodiAtIHN0YXRpY19jYXN0PGRvdWJsZT4odzEpLCA1MCk7CisgIHVp
bnQ2NF90IHcyID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3Rk
Ojp0cnVuYyh2KSkpOworICByZXR1cm4gKHN0YXRpY19jYXN0PHVpbnQxMjg+KHcwKSA8PCAxMDAp
IHwgKHN0YXRpY19jYXN0PHVpbnQxMjg+KHcxKSA8PCA1MCkgfAorICAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDEyOD4odzIpOworfQorI2VuZGlmICAvLyBfX2NsYW5nX18gJiYgIV9fU1NFM19fCiB9
ICAvLyBuYW1lc3BhY2UKIAogdWludDEyODo6dWludDEyOChmbG9hdCB2KSA6IHVpbnQxMjgoTWFr
ZVVpbnQxMjhGcm9tRmxvYXQodikpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEy
OC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjguaAppbmRleCA3OWI2MmE3NTg2Njk1ZDViMmY0MzFk
MzhhZjUyYTBhYjIyNzRhZTJjLi4xMGJlOGVjYTQyZTdjMTQ3Y2E4ODk0OTI1N2U2NmIyNWZhNGQ5
MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVy
aWMvaW50MTI4LmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTE5LDggKzE5LDggQEAKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgMTI4LWJpdCBp
bnRlZ2VyIHR5cGVzLgogLy8KLS8vIEN1cnJlbnRseSwgdGhpcyBmaWxlIGRlZmluZXMgYHVpbnQx
MjhgLCBhbiB1bnNpZ25lZCAxMjgtYml0IGludGVnZXI7IGEgc2lnbmVkCi0vLyAxMjgtYml0IGlu
dGVnZXIgaXMgZm9ydGhjb21pbmcuCisvLyBDdXJyZW50bHksIHRoaXMgZmlsZSBkZWZpbmVzIGB1
aW50MTI4YCwgYW4gdW5zaWduZWQgMTI4LWJpdCBpbnRlZ2VyOworLy8gYSBzaWduZWQgMTI4LWJp
dCBpbnRlZ2VyIGlzIGZvcnRoY29taW5nLgogCiAjaWZuZGVmIEFCU0xfTlVNRVJJQ19JTlQxMjhf
SF8KICNkZWZpbmUgQUJTTF9OVU1FUklDX0lOVDEyOF9IXwpAQCAtMzcsOCArMzcsMjEgQEAKICNp
bmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL3BvcnQuaCIK
IAotbmFtZXNwYWNlIGFic2wgeworI2lmIGRlZmluZWQoX01TQ19WRVIpCisvLyBJbiB2ZXJ5IG9s
ZCB2ZXJzaW9ucyBvZiBNU1ZDIGFuZCB3aGVuIHRoZSAvWmM6d2NoYXJfdCBmbGFnIGlzIG9mZiwg
d2NoYXJfdCBpcworLy8gYSB0eXBlZGVmIGZvciB1bnNpZ25lZCBzaG9ydC4gIE90aGVyd2lzZSB3
Y2hhcl90IGlzIG1hcHBlZCB0byB0aGUgX193Y2hhcl90CisvLyBidWlsdGluIHR5cGUuICBXZSBu
ZWVkIHRvIG1ha2Ugc3VyZSBub3QgdG8gZGVmaW5lIG9wZXJhdG9yIHdjaGFyX3QoKQorLy8gYWxv
bmdzaWRlIG9wZXJhdG9yIHVuc2lnbmVkIHNob3J0KCkgaW4gdGhlc2UgaW5zdGFuY2VzLgorI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX1dDSEFSX1QgX193Y2hhcl90CisjaWYgZGVmaW5lZChfTV9YNjQp
CisjaW5jbHVkZSA8aW50cmluLmg+CisjcHJhZ21hIGludHJpbnNpYyhfdW11bDEyOCkKKyNlbmRp
ZiAgLy8gZGVmaW5lZChfTV9YNjQpCisjZWxzZSAgIC8vIGRlZmluZWQoX01TQ19WRVIpCisjZGVm
aW5lIEFCU0xfSU5URVJOQUxfV0NIQVJfVCB3Y2hhcl90CisjZW5kaWYgIC8vIGRlZmluZWQoX01T
Q19WRVIpCiAKK25hbWVzcGFjZSBhYnNsIHsKIAogLy8gdWludDEyOAogLy8KQEAgLTEyNiw3ICsx
MzksNyBAQCBjbGFzcwogICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgdW5zaWduZWQgY2hh
cigpIGNvbnN0OwogICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgY2hhcjE2X3QoKSBjb25z
dDsKICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGNoYXIzMl90KCkgY29uc3Q7Ci0gIGNv
bnN0ZXhwciBleHBsaWNpdCBvcGVyYXRvciB3Y2hhcl90KCkgY29uc3Q7CisgIGNvbnN0ZXhwciBl
eHBsaWNpdCBvcGVyYXRvciBBQlNMX0lOVEVSTkFMX1dDSEFSX1QoKSBjb25zdDsKICAgY29uc3Rl
eHByIGV4cGxpY2l0IG9wZXJhdG9yIHNob3J0KCkgY29uc3Q7ICAvLyBOT0xJTlQocnVudGltZS9p
bnQpCiAgIC8vIE5PTElOVE5FWFRMSU5FKHJ1bnRpbWUvaW50KQogICBjb25zdGV4cHIgZXhwbGlj
aXQgb3BlcmF0b3IgdW5zaWduZWQgc2hvcnQoKSBjb25zdDsKQEAgLTIyNyw4ICsyNDAsOCBAQCBz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgdWludDEyOCB2KTsKIC8v
IFRPRE8oc3RyZWwpIGFkZCBvcGVyYXRvcj4+KHN0ZDo6aXN0cmVhbSYsIHVpbnQxMjgpCiAKIGNv
bnN0ZXhwciB1aW50MTI4IFVpbnQxMjhNYXgoKSB7Ci0gIHJldHVybiB1aW50MTI4KHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSwKLSAgICAgICAgICAgICAgICAgc3RkOjpudW1l
cmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKKyAgcmV0dXJuIHVpbnQxMjgoKHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgpKCksCisgICAgICAgICAgICAgICAgIChzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KSgpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGFi
c2wKQEAgLTI2Niw5ICsyNzksOSBAQCBjbGFzcyBudW1lcmljX2xpbWl0czxhYnNsOjp1aW50MTI4
PiB7CiAjZW5kaWYgIC8vIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4CiAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKIAotICBzdGF0aWMgY29uc3RleHBy
IGFic2w6OnVpbnQxMjggbWluKCkgeyByZXR1cm4gMDsgfQorICBzdGF0aWMgY29uc3RleHByIGFi
c2w6OnVpbnQxMjggKG1pbikoKSB7IHJldHVybiAwOyB9CiAgIHN0YXRpYyBjb25zdGV4cHIgYWJz
bDo6dWludDEyOCBsb3dlc3QoKSB7IHJldHVybiAwOyB9Ci0gIHN0YXRpYyBjb25zdGV4cHIgYWJz
bDo6dWludDEyOCBtYXgoKSB7IHJldHVybiBhYnNsOjpVaW50MTI4TWF4KCk7IH0KKyAgc3RhdGlj
IGNvbnN0ZXhwciBhYnNsOjp1aW50MTI4IChtYXgpKCkgeyByZXR1cm4gYWJzbDo6VWludDEyOE1h
eCgpOyB9CiAgIHN0YXRpYyBjb25zdGV4cHIgYWJzbDo6dWludDEyOCBlcHNpbG9uKCkgeyByZXR1
cm4gMDsgfQogICBzdGF0aWMgY29uc3RleHByIGFic2w6OnVpbnQxMjggcm91bmRfZXJyb3IoKSB7
IHJldHVybiAwOyB9CiAgIHN0YXRpYyBjb25zdGV4cHIgYWJzbDo6dWludDEyOCBpbmZpbml0eSgp
IHsgcmV0dXJuIDA7IH0KQEAgLTM4NCwxMyArMzk3LDEzIEBAIGNvbnN0ZXhwciB1aW50MTI4Ojp1
aW50MTI4KHVpbnQ2NF90IGhpZ2gsIHVpbnQ2NF90IGxvdykKIAogY29uc3RleHByIHVpbnQxMjg6
OnVpbnQxMjgoaW50IHYpCiAgICAgOiBsb197c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHYpfSwKLSAg
ICAgIGhpX3t2IDwgMCA/IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSA6IDB9
IHt9CisgICAgICBoaV97diA8IDAgPyAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCkoKSA6IDB9IHt9CiBjb25zdGV4cHIgdWludDEyODo6dWludDEyOChsb25nIHYpICAvLyBOT0xJ
TlQocnVudGltZS9pbnQpCiAgICAgOiBsb197c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHYpfSwKLSAg
ICAgIGhpX3t2IDwgMCA/IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSA6IDB9
IHt9CisgICAgICBoaV97diA8IDAgPyAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCkoKSA6IDB9IHt9CiBjb25zdGV4cHIgdWludDEyODo6dWludDEyOChsb25nIGxvbmcgdikgIC8v
IE5PTElOVChydW50aW1lL2ludCkKICAgICA6IGxvX3tzdGF0aWNfY2FzdDx1aW50NjRfdD4odil9
LAotICAgICAgaGlfe3YgPCAwID8gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
IDogMH0ge30KKyAgICAgIGhpX3t2IDwgMCA/IChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90
Pjo6bWF4KSgpIDogMH0ge30KIAogY29uc3RleHByIHVpbnQxMjg6OnVpbnQxMjgodW5zaWduZWQg
aW50IHYpIDogbG9fe3Z9LCBoaV97MH0ge30KIC8vIE5PTElOVE5FWFRMSU5FKHJ1bnRpbWUvaW50
KQpAQCAtNDEzLDEzICs0MjYsMTMgQEAgY29uc3RleHByIHVpbnQxMjg6OnVpbnQxMjgodWludDY0
X3QgaGlnaCwgdWludDY0X3QgbG93KQogICAgIDogaGlfe2hpZ2h9LCBsb197bG93fSB7fQogCiBj
b25zdGV4cHIgdWludDEyODo6dWludDEyOChpbnQgdikKLSAgICA6IGhpX3t2IDwgMCA/IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSA6IDB9LAorICAgIDogaGlfe3YgPCAwID8g
KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgpKCkgOiAwfSwKICAgICAgIGxvX3tz
dGF0aWNfY2FzdDx1aW50NjRfdD4odil9IHt9CiBjb25zdGV4cHIgdWludDEyODo6dWludDEyOChs
b25nIHYpICAvLyBOT0xJTlQocnVudGltZS9pbnQpCi0gICAgOiBoaV97diA8IDAgPyBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgOiAwfSwKKyAgICA6IGhpX3t2IDwgMCA/IChz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KSgpIDogMH0sCiAgICAgICBsb197c3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHYpfSB7fQogY29uc3RleHByIHVpbnQxMjg6OnVpbnQxMjgobG9u
ZyBsb25nIHYpICAvLyBOT0xJTlQocnVudGltZS9pbnQpCi0gICAgOiBoaV97diA8IDAgPyBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgOiAwfSwKKyAgICA6IGhpX3t2IDwgMCA/
IChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KSgpIDogMH0sCiAgICAgICBsb197
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHYpfSB7fQogCiBjb25zdGV4cHIgdWludDEyODo6dWludDEy
OCh1bnNpZ25lZCBpbnQgdikgOiBoaV97MH0sIGxvX3t2fSB7fQpAQCAtNDYzLDggKzQ3Niw4IEBA
IGNvbnN0ZXhwciB1aW50MTI4OjpvcGVyYXRvciBjaGFyMzJfdCgpIGNvbnN0IHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNoYXIzMl90Pihsb18pOwogfQogCi1jb25zdGV4cHIgdWludDEyODo6b3Bl
cmF0b3Igd2NoYXJfdCgpIGNvbnN0IHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PHdjaGFyX3Q+KGxv
Xyk7Citjb25zdGV4cHIgdWludDEyODo6b3BlcmF0b3IgQUJTTF9JTlRFUk5BTF9XQ0hBUl9UKCkg
Y29uc3QgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8QUJTTF9JTlRFUk5BTF9XQ0hBUl9UPihsb18p
OwogfQogCiAvLyBOT0xJTlRORVhUTElORShydW50aW1lL2ludCkKQEAgLTY2MSw2ICs2NzQsMTIg
QEAgaW5saW5lIHVpbnQxMjggb3BlcmF0b3IqKHVpbnQxMjggbGhzLCB1aW50MTI4IHJocykgewog
ICAvLyBjYW4gYmUgdXNlZCBmb3IgdWludDEyOCBzdG9yYWdlLgogICByZXR1cm4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgX19pbnQxMjg+KGxocykgKgogICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgX19pbnQxMjg+KHJocyk7CisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9N
X1g2NCkKKyAgdWludDY0X3QgY2Fycnk7CisgIHVpbnQ2NF90IGxvdyA9IF91bXVsMTI4KFVpbnQx
MjhMb3c2NChsaHMpLCBVaW50MTI4TG93NjQocmhzKSwgJmNhcnJ5KTsKKyAgcmV0dXJuIE1ha2VV
aW50MTI4KFVpbnQxMjhMb3c2NChsaHMpICogVWludDEyOEhpZ2g2NChyaHMpICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBVaW50MTI4SGlnaDY0KGxocykgKiBVaW50MTI4TG93NjQocmhzKSAr
IGNhcnJ5LAorICAgICAgICAgICAgICAgICAgICAgbG93KTsKICNlbHNlICAgLy8gQUJTTF9IQVZF
X0lOVFJJTlNJQzEyOAogICB1aW50NjRfdCBhMzIgPSBVaW50MTI4TG93NjQobGhzKSA+PiAzMjsK
ICAgdWludDY0X3QgYTAwID0gVWludDEyOExvdzY0KGxocykgJiAweGZmZmZmZmZmOwpAQCAtNzA4
LDQgKzcyNyw2IEBAIGlubGluZSB1aW50MTI4JiB1aW50MTI4OjpvcGVyYXRvci0tKCkgewogCiB9
ICAvLyBuYW1lc3BhY2UgYWJzbAogCisjdW5kZWYgQUJTTF9JTlRFUk5BTF9XQ0hBUl9UCisKICNl
bmRpZiAgLy8gQUJTTF9OVU1FUklDX0lOVDEyOF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJp
Yy9pbnQxMjhfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfYmVuY2htYXJrLmNj
CmluZGV4IDFjYjdkMGVkODdlMGNhMTdkZWI1ZGZlYTBkNzE4YTEwZDc1ODkyZmMuLmE1NTAyZDky
N2MwODVjODYzY2IwYWI4NGNkZDE4OWYwMzk5MTNlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVy
aWMvaW50MTI4X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9iZW5jaG1h
cmsuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL251bWVyaWMvaW50MTI4X2hhdmVfaW50cmluc2ljLmluYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVy
aWMvaW50MTI4X2hhdmVfaW50cmluc2ljLmluYwppbmRleCBlZTJhMDkzMDE4ZDk1NTMxNWY5NTI4
MjA1NzAyOWNiMmZkNTkwMjc2Li5jN2VhNjgzNDUzMDdhOTI0YTA3YmFkYTgyNDNkM2RmMjgzMTcx
NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9oYXZlX2ludHJpbnNpYy5pbmMK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfaGF2ZV9pbnRyaW5zaWMuaW5jCkBAIC01LDcgKzUs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNSw0ICsxNSw0IEBACiAKIC8vIFRo
aXMgZmlsZSBjb250YWlucyA6aW50MTI4IGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhhdCBkZXBl
bmQgb24gaW50ZXJuYWwKIC8vIHJlcHJlc2VudGF0aW9uIHdoZW4gQUJTTF9IQVZFX0lOVFJJTlNJ
Q19JTlQxMjggaXMgZGVmaW5lZC4gVGhpcyBmaWxlIGlzCi0vLyBpbmNsdWRlZCBieSBpbnQxMjgu
aC4KKy8vIGluY2x1ZGVkIGJ5IGludDEyOC5oIGFuZCByZWxpZXMgb24gQUJTTF9JTlRFUk5BTF9X
Q0hBUl9UIGJlaW5nIGRlZmluZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9u
b19pbnRyaW5zaWMuaW5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfbm9faW50cmluc2ljLmluYwpp
bmRleCAwZDBiM2NmZGViMTI1YTQyOTFkNWEzZGM1ZjNjNTA1NTJiMWE0MGM5Li4wNDZjYjliM2E0
MDcwOGFlNTAzNTg3NjBiNjcyZDc2ZWZmN2NiMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmlj
L2ludDEyOF9ub19pbnRyaW5zaWMuaW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X25vX2lu
dHJpbnNpYy5pbmMKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTE1LDQgKzE1LDQgQEAKIAogLy8gVGhpcyBmaWxlIGNvbnRhaW5zIDppbnQxMjggaW1wbGVtZW50
YXRpb24gZGV0YWlscyB0aGF0IGRlcGVuZCBvbiBpbnRlcm5hbAogLy8gcmVwcmVzZW50YXRpb24g
d2hlbiBBQlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOCBpcyAqbm90KiBkZWZpbmVkLiBUaGlzIGZp
bGUKLS8vIGlzIGluY2x1ZGVkIGJ5IGludDEyOC5oLgorLy8gaXMgaW5jbHVkZWQgYnkgaW50MTI4
LmggYW5kIHJlbGllcyBvbiBBQlNMX0lOVEVSTkFMX1dDSEFSX1QgYmVpbmcgZGVmaW5lZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3N0cmVhbV90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVt
ZXJpYy9pbnQxMjhfc3RyZWFtX3Rlc3QuY2MKaW5kZXggMDllZmFhZDRlN2ZiYWQyZGQ3ODQ5ZWJj
ZTQ5MmFlN2QwZGNjMjcwYS4uM2NmYTlkYzE4MzVhNTZjZTY2OThlZmM3YjYxYzUwYmE4NzE1NDBk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfc3RyZWFtX3Rlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbnVtZXJpYy9pbnQxMjhfc3RyZWFtX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF90ZXN0LmNjCmluZGV4IGRmZTM0NzVhY2EwNjI3
YjI5ZTYzM2NjMmY4NWNlODQ2YjYxYmMzZjEuLjVlMWI1ZWMzNTJiMGE1Mzg2OGJjNDJkYTk0NGVh
MjNmYzk5MTRmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3Rlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApAQCAtNTEsNyArNTEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
IGNsYXNzIFVpbnQxMjhGbG9hdFRyYWl0c1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9
OwogdHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGZsb2F0LCBkb3VibGUsIGxvbmcgZG91YmxlPiBG
bG9hdGluZ1BvaW50VHlwZXM7CiAKLVRZUEVEX1RFU1RfQ0FTRShVaW50MTI4SW50ZWdlclRyYWl0
c1Rlc3QsIEludGVnZXJUeXBlcyk7CitUWVBFRF9URVNUX1NVSVRFKFVpbnQxMjhJbnRlZ2VyVHJh
aXRzVGVzdCwgSW50ZWdlclR5cGVzKTsKIAogVFlQRURfVEVTVChVaW50MTI4SW50ZWdlclRyYWl0
c1Rlc3QsIENvbnN0cnVjdEFzc2lnblRlc3QpIHsKICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Nv
bnN0cnVjdGlibGU8YWJzbDo6dWludDEyOCwgVHlwZVBhcmFtPjo6dmFsdWUsCkBAIC02Miw3ICs2
Miw3IEBAIFRZUEVEX1RFU1QoVWludDEyOEludGVnZXJUcmFpdHNUZXN0LCBDb25zdHJ1Y3RBc3Np
Z25UZXN0KSB7CiAgICAgICAgICAgICAgICAgIlR5cGVQYXJhbSBtdXN0IG5vdCBiZSBhc3NpZ25h
YmxlIGZyb20gYWJzbDo6dWludDEyOCIpOwogfQogCi1UWVBFRF9URVNUX0NBU0UoVWludDEyOEZs
b2F0VHJhaXRzVGVzdCwgRmxvYXRpbmdQb2ludFR5cGVzKTsKK1RZUEVEX1RFU1RfU1VJVEUoVWlu
dDEyOEZsb2F0VHJhaXRzVGVzdCwgRmxvYXRpbmdQb2ludFR5cGVzKTsKIAogVFlQRURfVEVTVChV
aW50MTI4RmxvYXRUcmFpdHNUZXN0LCBDb25zdHJ1Y3RBc3NpZ25UZXN0KSB7CiAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6OnVpbnQxMjgsIFR5cGVQYXJhbT46OnZh
bHVlLApAQCAtMjcxLDYgKzI3MSwyMCBAQCBURVNUKFVpbnQxMjgsIENvbnZlcnNpb25UZXN0cykg
ewogICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8YWJzbDo6dWludDEyOD4ocm91bmRfdG9femVybyks
IDApOwogICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8YWJzbDo6dWludDEyOD4ocm91bmRfdG9fZml2
ZSksIDUpOwogICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8YWJzbDo6dWludDEyOD4ocm91bmRfdG9f
bmluZSksIDkpOworCisgIGFic2w6OnVpbnQxMjggaGlnaGVzdF9wcmVjaXNpb25faW5fbG9uZ19k
b3VibGUgPQorICAgICAgfmFic2w6OnVpbnQxMjh7fSA+PiAoMTI4IC0gc3RkOjpudW1lcmljX2xp
bWl0czxsb25nIGRvdWJsZT46OmRpZ2l0cyk7CisgIEVYUEVDVF9FUShoaWdoZXN0X3ByZWNpc2lv
bl9pbl9sb25nX2RvdWJsZSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGFic2w6OnVpbnQxMjg+
KAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGxvbmcgZG91YmxlPihoaWdoZXN0X3ByZWNp
c2lvbl9pbl9sb25nX2RvdWJsZSkpKTsKKyAgLy8gQXBwbHkgYSBtYXNrIGp1c3QgdG8gbWFrZSBz
dXJlIGFsbCB0aGUgYml0cyBhcmUgdGhlIHJpZ2h0IHBsYWNlLgorICBjb25zdCBhYnNsOjp1aW50
MTI4IGFyYml0cmFyeV9tYXNrID0KKyAgICAgIGFic2w6Ok1ha2VVaW50MTI4KDB4YTI5ZjYyMjY3
N2RlZDc1MSwgMHhmOGNhNjZhZGQwNzZmNDY4KTsKKyAgRVhQRUNUX0VRKGhpZ2hlc3RfcHJlY2lz
aW9uX2luX2xvbmdfZG91YmxlICYgYXJiaXRyYXJ5X21hc2ssCisgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxhYnNsOjp1aW50MTI4PihzdGF0aWNfY2FzdDxsb25nIGRvdWJsZT4oCisgICAgICAgICAg
ICAgICAgaGlnaGVzdF9wcmVjaXNpb25faW5fbG9uZ19kb3VibGUgJiBhcmJpdHJhcnlfbWFzaykp
KTsKKworICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8YWJzbDo6dWludDEyOD4oLTAuMUwpLCAwKTsK
IH0KIAogVEVTVChVaW50MTI4LCBPcGVyYXRvckFzc2lnblJldHVyblJlZikgewpAQCAtNDQwLDQg
KzQ1NCwyOSBAQCBURVNUKFVpbnQxMjgsIE51bWVyaWNMaW1pdHNUZXN0KSB7CiAgIEVYUEVDVF9F
UShhYnNsOjpVaW50MTI4TWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8YWJzbDo6dWludDEyOD46
Om1heCgpKTsKIH0KIAorVEVTVChVaW50MTI4LCBIYXNoKSB7CisgIEVYUEVDVF9UUlVFKGFic2w6
OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoeworICAgICAgLy8gU29tZSBz
aW1wbGUgdmFsdWVzCisgICAgICBhYnNsOjp1aW50MTI4ezB9LAorICAgICAgYWJzbDo6dWludDEy
OHsxfSwKKyAgICAgIH5hYnNsOjp1aW50MTI4e30sCisgICAgICAvLyA2NCBiaXQgbGltaXRzCisg
ICAgICBhYnNsOjp1aW50MTI4e3N0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpfSwK
KyAgICAgIGFic2w6OnVpbnQxMjh7c3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
fSArIDAsCisgICAgICBhYnNsOjp1aW50MTI4e3N0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+
OjptYXgoKX0gKyAxLAorICAgICAgYWJzbDo6dWludDEyOHtzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQ2NF90Pjo6bWF4KCl9ICsgMiwKKyAgICAgIC8vIEtlZXBpbmcgaGlnaCBzYW1lCisgICAgICBh
YnNsOjp1aW50MTI4ezF9IDw8IDYyLAorICAgICAgYWJzbDo6dWludDEyOHsxfSA8PCA2MywKKyAg
ICAgIC8vIEtlZXBpbmcgbG93IHNhbWUKKyAgICAgIGFic2w6OnVpbnQxMjh7MX0gPDwgNjQsCisg
ICAgICBhYnNsOjp1aW50MTI4ezF9IDw8IDY1LAorICAgICAgLy8gMTI4IGJpdCBsaW1pdHMKKyAg
ICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8YWJzbDo6dWludDEyOD46Om1heCgpLAorICAgICAgc3Rk
OjpudW1lcmljX2xpbWl0czxhYnNsOjp1aW50MTI4Pjo6bWF4KCkgLSAxLAorICAgICAgc3RkOjpu
dW1lcmljX2xpbWl0czxhYnNsOjp1aW50MTI4Pjo6bWluKCkgKyAxLAorICAgICAgc3RkOjpudW1l
cmljX2xpbWl0czxhYnNsOjp1aW50MTI4Pjo6bWluKCksCisgIH0pKTsKK30KKwogfSAgLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vQlVJTEQuYmF6ZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc1ODdiZjlhOWE0MDIwYzYzYTIxMWZmYTU2N2E4
NDUzMjU0ZWVkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9CVUlMRC5iYXplbApA
QCAtMCwwICsxLDM5MCBAQAorIyBBQlNMIHJhbmRvbS1udW1iZXIgZ2VuZXJhdGlvbiBsaWJyYXJp
ZXMuCisKK2xvYWQoCisgICAgIi8vYWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKKyAg
ICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRTIiwKKyAg
ICAiQUJTTF9FWENFUFRJT05TX0ZMQUciLAorICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5L
T1BUUyIsCisgICAgIkFCU0xfVEVTVF9DT1BUUyIsCispCisKK3BhY2thZ2UoZGVmYXVsdF92aXNp
YmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0pCisKK2xpY2Vuc2VzKFsibm90aWNlIl0p
ICAjIEFwYWNoZSAyLjAKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInJhbmRvbSIsCisgICAg
aGRycyA9IFsicmFuZG9tLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAg
ICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAg
ICAiOmRpc3RyaWJ1dGlvbnMiLAorICAgICAgICAiOnNlZWRfc2VxdWVuY2VzIiwKKyAgICAgICAg
Ii8vYWJzbC9yYW5kb20vaW50ZXJuYWw6bm9uc2VjdXJlX2Jhc2UiLAorICAgICAgICAiLy9hYnNs
L3JhbmRvbS9pbnRlcm5hbDpwY2dfZW5naW5lIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50
ZXJuYWw6cG9vbF91cmJnIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6cmFuZGVu
X2VuZ2luZSIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImRpc3RyaWJ1
dGlvbnMiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJkaXNjcmV0ZV9kaXN0cmlidXRpb24uY2Mi
LAorICAgICAgICAiZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmNjIiwKKyAgICBdLAorICAgIGhkcnMg
PSBbCisgICAgICAgICJiZXJub3VsbGlfZGlzdHJpYnV0aW9uLmgiLAorICAgICAgICAiYmV0YV9k
aXN0cmlidXRpb24uaCIsCisgICAgICAgICJkaXNjcmV0ZV9kaXN0cmlidXRpb24uaCIsCisgICAg
ICAgICJkaXN0cmlidXRpb25fZm9ybWF0X3RyYWl0cy5oIiwKKyAgICAgICAgImRpc3RyaWJ1dGlv
bnMuaCIsCisgICAgICAgICJleHBvbmVudGlhbF9kaXN0cmlidXRpb24uaCIsCisgICAgICAgICJn
YXVzc2lhbl9kaXN0cmlidXRpb24uaCIsCisgICAgICAgICJsb2dfdW5pZm9ybV9pbnRfZGlzdHJp
YnV0aW9uLmgiLAorICAgICAgICAicG9pc3Nvbl9kaXN0cmlidXRpb24uaCIsCisgICAgICAgICJ1
bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIsCisgICAgICAgICJ1bmlmb3JtX3JlYWxfZGlzdHJp
YnV0aW9uLmgiLAorICAgICAgICAiemlwZl9kaXN0cmlidXRpb24uaCIsCisgICAgXSwKKyAgICBj
b3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiLy9hYnNsL2Jhc2U6YmFzZV9pbnRlcm5h
bCIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNs
L21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpkaXN0
cmlidXRpb25faW1wbCIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1
dGlvbnMiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpmYXN0X3VuaWZvcm1fYml0
cyIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmZhc3RtYXRoIiwKKyAgICAgICAg
Ii8vYWJzbC9yYW5kb20vaW50ZXJuYWw6aW9zdHJlYW1fc3RhdGVfc2F2ZXIiLAorICAgICAgICAi
Ly9hYnNsL3JhbmRvbS9pbnRlcm5hbDp0cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9p
bnRlcm5hbDp1bmlmb3JtX2hlbHBlciIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAg
ICAgICIvL2Fic2wvdHlwZXM6c3BhbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBu
YW1lID0gInNlZWRfZ2VuX2V4Y2VwdGlvbiIsCisgICAgc3JjcyA9IFsic2VlZF9nZW5fZXhjZXB0
aW9uLmNjIl0sCisgICAgaGRycyA9IFsic2VlZF9nZW5fZXhjZXB0aW9uLmgiXSwKKyAgICBjb3B0
cyA9IEFCU0xfREVGQVVMVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxpbmtv
cHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgZGVwcyA9IFsiLy9hYnNsL2Jhc2U6Y29uZmlnIl0sCispCisKK2NjX2xpYnJhcnko
CisgICAgbmFtZSA9ICJzZWVkX3NlcXVlbmNlcyIsCisgICAgc3JjcyA9IFsic2VlZF9zZXF1ZW5j
ZXMuY2MiXSwKKyAgICBoZHJzID0gWworICAgICAgICAic2VlZF9zZXF1ZW5jZXMuaCIsCisgICAg
XSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
REVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOnNlZWRfZ2VuX2V4Y2Vw
dGlvbiIsCisgICAgICAgICIvL2Fic2wvY29udGFpbmVyOmlubGluZWRfdmVjdG9yIiwKKyAgICAg
ICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6bm9uc2VjdXJlX2Jhc2UiLAorICAgICAgICAiLy9h
YnNsL3JhbmRvbS9pbnRlcm5hbDpwb29sX3VyYmciLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9p
bnRlcm5hbDpzYWx0ZWRfc2VlZF9zZXEiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5h
bDpzZWVkX21hdGVyaWFsIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpzcGFuIiwKKyAgICBdLAor
KQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiYmVybm91bGxpX2Rpc3RyaWJ1dGlvbl90ZXN0IiwK
KyAgICBzaXplID0gInNtYWxsIiwKKyAgICB0aW1lb3V0ID0gImV0ZXJuYWwiLCAgIyBBbmRyb2lk
IGNhbiB0YWtlIGEgdmVyeSBsb25nIHRpbWUKKyAgICBzcmNzID0gWyJiZXJub3VsbGlfZGlzdHJp
YnV0aW9uX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmRp
c3RyaWJ1dGlvbnMiLAorICAgICAgICAiOnJhbmRvbSIsCisgICAgICAgICIvL2Fic2wvcmFuZG9t
L2ludGVybmFsOnNlcXVlbmNlX3VyYmciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVz
dC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJiZXRh
X2Rpc3RyaWJ1dGlvbl90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICB0aW1lb3V0ID0g
ImV0ZXJuYWwiLCAgIyBBbmRyb2lkIGNhbiB0YWtlIGEgdmVyeSBsb25nIHRpbWUKKyAgICBzcmNz
ID0gWyJiZXRhX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1Rf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9
IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIjpyYW5kb20iLAorICAgICAg
ICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpkaXN0cmli
dXRpb25fdGVzdF91dGlsIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6c2VxdWVu
Y2VfdXJiZyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvc3Ry
aW5nczpzdHJfZm9ybWF0IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVz
dF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZGlzdHJpYnV0aW9u
c190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZGlz
dHJpYnV0aW9uc190ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6cmFuZG9tIiwKKyAgICAgICAgIi8v
YWJzbC9yYW5kb20vaW50ZXJuYWw6ZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVz
dCgKKyAgICBuYW1lID0gImdlbmVyYXRvcnNfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisg
ICAgc3JjcyA9IFsiZ2VuZXJhdG9yc190ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1Rf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9
IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIjpyYW5kb20iLAorICAgICAg
ICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2Nj
X3Rlc3QoCisgICAgbmFtZSA9ICJsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uX3Rlc3QiLAor
ICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWworICAgICAgICAibG9nX3VuaWZvcm1f
aW50X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMg
PSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6cmFuZG9tIiwKKyAgICAg
ICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisg
ICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1dGlvbl90ZXN0X3V0aWwiLAor
ICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpzZXF1ZW5jZV91cmJnIiwKKyAgICAgICAg
Ii8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzOnN0cl9mb3JtYXQiLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCisp
CisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJkaXNjcmV0ZV9kaXN0cmlidXRpb25fdGVzdCIsCisg
ICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbCisgICAgICAgICJkaXNjcmV0ZV9kaXN0
cmlidXRpb25fdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAg
ICAgICAiOmRpc3RyaWJ1dGlvbnMiLAorICAgICAgICAiOnJhbmRvbSIsCisgICAgICAgICIvL2Fi
c2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1dGlvbl90
ZXN0X3V0aWwiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpzZXF1ZW5jZV91cmJn
IiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2ds
ZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
cG9pc3Nvbl9kaXN0cmlidXRpb25fdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgdGlt
ZW91dCA9ICJldGVybmFsIiwgICMgQW5kcm9pZCBjYW4gdGFrZSBhIHZlcnkgbG9uZyB0aW1lCisg
ICAgc3JjcyA9IFsKKyAgICAgICAgInBvaXNzb25fZGlzdHJpYnV0aW9uX3Rlc3QuY2MiLAorICAg
IF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RF
RkFVTFRfTElOS09QVFMsCisgICAgdGFncyA9IFsKKyAgICAgICAgIyBUb28gU2xvdy4KKyAgICAg
ICAgIm5vX3Rlc3RfYW5kcm9pZF9hcm0iLAorICAgICAgICAibm9fdGVzdF9sb29uaXgiLAorICAg
IF0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIjpy
YW5kb20iLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29y
ZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9jb250YWluZXI6ZmxhdF9oYXNoX21hcCIsCisg
ICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1dGlvbl90ZXN0X3V0aWwiLAor
ICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpzZXF1ZW5jZV91cmJnIiwKKyAgICAgICAg
Ii8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzOnN0cl9mb3JtYXQiLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCisp
CisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJleHBvbmVudGlhbF9kaXN0cmlidXRpb25fdGVzdCIs
CisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZXhwb25lbnRpYWxfZGlzdHJpYnV0
aW9uX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3Ry
aWJ1dGlvbnMiLAorICAgICAgICAiOnJhbmRvbSIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisg
ICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL3JhbmRv
bS9pbnRlcm5hbDpkaXN0cmlidXRpb25fdGVzdF91dGlsIiwKKyAgICAgICAgIi8vYWJzbC9yYW5k
b20vaW50ZXJuYWw6c2VxdWVuY2VfdXJiZyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisg
ICAgICAgICIvL2Fic2wvc3RyaW5nczpzdHJfZm9ybWF0IiwKKyAgICAgICAgIkBjb21fZ29vZ2xl
X2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5h
bWUgPSAiZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHRpbWVvdXQgPSAiZXRlcm5hbCIsICAjIEFuZHJvaWQgY2FuIHRha2UgYSB2ZXJ5IGxvbmcg
dGltZQorICAgIHNyY3MgPSBbCisgICAgICAgICJnYXVzc2lhbl9kaXN0cmlidXRpb25fdGVzdC5j
YyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9
IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3RyaWJ1
dGlvbnMiLAorICAgICAgICAiOnJhbmRvbSIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAg
ICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9p
bnRlcm5hbDpkaXN0cmlidXRpb25fdGVzdF91dGlsIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20v
aW50ZXJuYWw6c2VxdWVuY2VfdXJiZyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAg
ICAgICIvL2Fic2wvc3RyaW5nczpzdHJfZm9ybWF0IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dv
b2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUg
PSAidW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwK
KyAgICB0aW1lb3V0ID0gImxvbmciLAorICAgIHNyY3MgPSBbCisgICAgICAgICJ1bmlmb3JtX2lu
dF9kaXN0cmlidXRpb25fdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0g
WworICAgICAgICAiOmRpc3RyaWJ1dGlvbnMiLAorICAgICAgICAiOnJhbmRvbSIsCisgICAgICAg
ICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1
dGlvbl90ZXN0X3V0aWwiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpzZXF1ZW5j
ZV91cmJnIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xl
X2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5h
bWUgPSAidW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbl90ZXN0IiwKKyAgICBzaXplID0gIm1lZGl1
bSIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgInVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb25fdGVz
dC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB0YWdzID0gWworICAgICAgICAibm9fdGVz
dF9hbmRyb2lkX2FybSIsCisgICAgICAgICJub190ZXN0X2FuZHJvaWRfYXJtNjQiLAorICAgICAg
ICAibm9fdGVzdF9hbmRyb2lkX3g4NiIsCisgICAgXSwKKyAgICBkZXBzID0gWworICAgICAgICAi
OmRpc3RyaWJ1dGlvbnMiLAorICAgICAgICAiOnJhbmRvbSIsCisgICAgICAgICIvL2Fic2wvYmFz
ZSIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1dGlvbl90ZXN0X3V0
aWwiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpzZXF1ZW5jZV91cmJnIiwKKyAg
ICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3Qv
LzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiemlwZl9k
aXN0cmlidXRpb25fdGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbCisg
ICAgICAgICJ6aXBmX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6cmFuZG9t
IiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJu
YWw6ZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVy
bmFsOnNlcXVlbmNlX3VyYmciLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAi
QGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rl
c3QoCisgICAgbmFtZSA9ICJleGFtcGxlc190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAg
ICBzcmNzID0gWyJleGFtcGxlc190ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsK
KyAgICAgICAgIjpyYW5kb20iLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0
ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJzZWVkX3NlcXVl
bmNlc190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJzZWVkX3NlcXVl
bmNlc190ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpyYW5k
b20iLAorICAgICAgICAiOnNlZWRfc2VxdWVuY2VzIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20v
aW50ZXJuYWw6bm9uc2VjdXJlX2Jhc2UiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVz
dC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK0JFTkNITUFSS19UQUdTID0gWworICAgICJi
ZW5jaG1hcmsiLAorICAgICJub190ZXN0X2FuZHJvaWRfYXJtIiwKKyAgICAibm9fdGVzdF9hbmRy
b2lkX2FybTY0IiwKKyAgICAibm9fdGVzdF9hbmRyb2lkX3g4NiIsCisgICAgIm5vX3Rlc3RfZGFy
d2luX3g4Nl82NCIsCisgICAgIm5vX3Rlc3RfaW9zX3g4Nl82NCIsCisgICAgIm5vX3Rlc3RfbG9v
bml4IiwKKyAgICAibm9fdGVzdF9tc3ZjX3g2NCIsCisgICAgIm5vX3Rlc3Rfd2FzbSIsCitdCisK
KyMgQmVuY2htYXJrcyBmb3IgdmFyaW91cyBtZXRob2RzIC8gdGVzdCB1dGlsaXRpZXMKK2NjX2Jp
bmFyeSgKKyAgICBuYW1lID0gImJlbmNobWFya3MiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBz
cmNzID0gWworICAgICAgICAiYmVuY2htYXJrcy5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFC
U0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAg
ICB0YWdzID0gQkVOQ0hNQVJLX1RBR1MsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmli
dXRpb25zIiwKKyAgICAgICAgIjpyYW5kb20iLAorICAgICAgICAiOnNlZWRfc2VxdWVuY2VzIiwK
KyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvbWV0
YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmZhc3RfdW5p
Zm9ybV9iaXRzIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6cmFuZGVuX2VuZ2lu
ZSIsCisgICAgICAgICJAY29tX2dpdGh1Yl9nb29nbGVfYmVuY2htYXJrLy86YmVuY2htYXJrX21h
aW4iLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vQlVJTEQuZ24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vQlVJTEQuZ24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBlMDk0YTVjNDQxYjRiNTY5NzFmMWI4ZjZj
Zjg4OTE3MDc0M2IwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9CVUlMRC5nbgpA
QCAtMCwwICsxLDEyNiBAQAorIyBDb3B5cmlnaHQgMjAxOCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorCitpbXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCisKKyMg
VXNhZ2Ugb2YgQWJzZWlsIGluIENocm9taXVtIGlzIGd1YXJkZWQgYnkgYW4gZXhwbGljaXQgb3B0
LWluIGxpc3QsIGJlZm9yZQorIyBhZGRpbmcgcHJvamVjdHMgdG8gdGhpcyBsaXN0IHBsZWFzZSBy
ZWFjaCBvdXQgdG8gY3h4QGNocm9taXVtLm9yZyBhbmQgQ0M6CisjIC0gaHR0cHM6Ly9jcy5jaHJv
bWl1bS5vcmcvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvT1dORVJTCisjCisj
IE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGF0OgorIyBodHRwczovL2RvY3MuZ29vZ2xl
LmNvbS9kb2N1bWVudC9kLzFEZ1MxLUEzcnpib1RManBmNG0xc3FrSmdXam5ZX1J1MmRva2sxWDF2
QkRVCitpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgeworICB2aXNpYmlsaXR5ID0gWworICAgICIv
L2xpYmFzc2lzdGFudC8qIiwKKyAgICAiLy90aGlyZF9wYXJ0eS93ZWJydGMvKiIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
Omd0ZXN0IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9vcGVuc2NyZWVuLyoiLAorICBdCit9IGVsc2Ug
eworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorfQorCitzb3VyY2Vfc2V0KCJyYW5kb20iKSB7Cisg
IGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQor
ICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1f
Y29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdz
X2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAicmFuZG9tLmgiLAor
ICBdCisgIGRlcHMgPSBbCisgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAiOnNlZWRfc2VxdWVu
Y2VzIiwKKyAgICAiLi4vcmFuZG9tL2ludGVybmFsOm5vbnNlY3VyZV9iYXNlIiwKKyAgICAiLi4v
cmFuZG9tL2ludGVybmFsOnBjZ19lbmdpbmUiLAorICAgICIuLi9yYW5kb20vaW50ZXJuYWw6cG9v
bF91cmJnIiwKKyAgICAiLi4vcmFuZG9tL2ludGVybmFsOnJhbmRlbl9lbmdpbmUiLAorICBdCit9
CisKK3NvdXJjZV9zZXQoImRpc3RyaWJ1dGlvbnMiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNf
Y29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmln
IiBdCisgIHB1YmxpYyA9IFsKKyAgICAiYmVybm91bGxpX2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAi
YmV0YV9kaXN0cmlidXRpb24uaCIsCisgICAgImRpc2NyZXRlX2Rpc3RyaWJ1dGlvbi5oIiwKKyAg
ICAiZGlzdHJpYnV0aW9uX2Zvcm1hdF90cmFpdHMuaCIsCisgICAgImRpc3RyaWJ1dGlvbnMuaCIs
CisgICAgImV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAiZ2F1c3NpYW5fZGlzdHJp
YnV0aW9uLmgiLAorICAgICJsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgiLAorICAgICJw
b2lzc29uX2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAidW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgi
LAorICAgICJ1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLmgiLAorICAgICJ6aXBmX2Rpc3RyaWJ1
dGlvbi5oIiwKKyAgXQorICBzb3VyY2VzID0gWworICAgICJkaXNjcmV0ZV9kaXN0cmlidXRpb24u
Y2MiLAorICAgICJnYXVzc2lhbl9kaXN0cmlidXRpb24uY2MiLAorICBdCisgIGRlcHMgPSBbCisg
ICAgIi4uL2Jhc2U6YmFzZV9pbnRlcm5hbCIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
KyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpkaXN0
cmlidXRpb25faW1wbCIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpkaXN0cmlidXRpb25zIiwK
KyAgICAiLi4vcmFuZG9tL2ludGVybmFsOmZhc3RfdW5pZm9ybV9iaXRzIiwKKyAgICAiLi4vcmFu
ZG9tL2ludGVybmFsOmZhc3RtYXRoIiwKKyAgICAiLi4vcmFuZG9tL2ludGVybmFsOmlvc3RyZWFt
X3N0YXRlX3NhdmVyIiwKKyAgICAiLi4vcmFuZG9tL2ludGVybmFsOnRyYWl0cyIsCisgICAgIi4u
L3JhbmRvbS9pbnRlcm5hbDp1bmlmb3JtX2hlbHBlciIsCisgICAgIi4uL3N0cmluZ3MiLAorICAg
ICIuLi90eXBlczpzcGFuIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJzZWVkX2dlbl9leGNlcHRp
b24iKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1f
Y29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9f
Y2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1
bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAic2Vl
ZF9nZW5fZXhjZXB0aW9uLmgiLAorICBdCisgIHNvdXJjZXMgPSBbCisgICAgInNlZWRfZ2VuX2V4
Y2VwdGlvbi5jYyIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vYmFzZTpjb25maWciLAorICBd
Cit9CisKK3NvdXJjZV9zZXQoInNlZWRfc2VxdWVuY2VzIikgeworICBjb25maWdzIC09IFsgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisg
ICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVi
bGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2Nv
bmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgInNlZWRfc2VxdWVuY2VzLmgiLAorICBdCisgIHNv
dXJjZXMgPSBbCisgICAgInNlZWRfc2VxdWVuY2VzLmNjIiwKKyAgXQorICBkZXBzID0gWworICAg
ICI6c2VlZF9nZW5fZXhjZXB0aW9uIiwKKyAgICAiLi4vY29udGFpbmVyOmlubGluZWRfdmVjdG9y
IiwKKyAgICAiLi4vcmFuZG9tL2ludGVybmFsOm5vbnNlY3VyZV9iYXNlIiwKKyAgICAiLi4vcmFu
ZG9tL2ludGVybmFsOnBvb2xfdXJiZyIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpzYWx0ZWRf
c2VlZF9zZXEiLAorICAgICIuLi9yYW5kb20vaW50ZXJuYWw6c2VlZF9tYXRlcmlhbCIsCisgICAg
Ii4uL3R5cGVzOnNwYW4iLAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ1YzA2
NTgzZTdiODNmMDdlZmQ3NmE3YjYxYTJkY2VkMWM5NTM5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDEwMzQgQEAKKyMKKyMgQ29weXJp
Z2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisjCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJh
bmRvbV9yYW5kb20KKyAgSERSUworICAgICJyYW5kb20uaCIKKyAgQ09QVFMKKyAgICAke0FCU0xf
REVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30K
KyAgREVQUworICAgIGFic2w6OnJhbmRvbV9kaXN0cmlidXRpb25zCisgICAgYWJzbDo6cmFuZG9t
X2ludGVybmFsX25vbnNlY3VyZV9iYXNlCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3BjZ19l
bmdpbmUKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcG9vbF91cmJnCisgICAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsX3JhbmRlbl9lbmdpbmUKKyAgICBhYnNsOjpyYW5kb21fc2VlZF9zZXF1ZW5j
ZXMKKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2Rpc3RyaWJ1dGlv
bnMKKyAgU1JDUworICAgICJkaXNjcmV0ZV9kaXN0cmlidXRpb24uY2MiCisgICAgImdhdXNzaWFu
X2Rpc3RyaWJ1dGlvbi5jYyIKKyAgSERSUworICAgICJiZXJub3VsbGlfZGlzdHJpYnV0aW9uLmgi
CisgICAgImJldGFfZGlzdHJpYnV0aW9uLmgiCisgICAgImRpc2NyZXRlX2Rpc3RyaWJ1dGlvbi5o
IgorICAgICJkaXN0cmlidXRpb25fZm9ybWF0X3RyYWl0cy5oIgorICAgICJkaXN0cmlidXRpb25z
LmgiCisgICAgImV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbi5oIgorICAgICJnYXVzc2lhbl9kaXN0
cmlidXRpb24uaCIKKyAgICAibG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oIgorICAgICJw
b2lzc29uX2Rpc3RyaWJ1dGlvbi5oIgorICAgICJ1bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIK
KyAgICAidW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oIgorICAgICJ6aXBmX2Rpc3RyaWJ1dGlv
bi5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZV9pbnRlcm5h
bAorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9kaXN0
cmlidXRpb25faW1wbAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25zCisg
ICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Zhc3RfdW5pZm9ybV9iaXRzCisgICAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsX2Zhc3RtYXRoCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2lvc3RyZWFt
X3N0YXRlX3NhdmVyCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3RyYWl0cworICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF91bmlmb3JtX2hlbHBlcgorICAgIGFic2w6OnN0cmluZ3MKKyAgICBh
YnNsOjpzcGFuCisgICAgYWJzbDo6dHlwZV90cmFpdHMKKykKKworYWJzbF9jY19saWJyYXJ5KAor
ICBOQU1FCisgICAgcmFuZG9tX3NlZWRfZ2VuX2V4Y2VwdGlvbgorICBTUkNTCisgICAgInNlZWRf
Z2VuX2V4Y2VwdGlvbi5jYyIKKyAgSERSUworICAgICJzZWVkX2dlbl9leGNlcHRpb24uaCIKKyAg
Q09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgICAke0FCU0xfRVhDRVBUSU9OU19G
TEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9Cisg
ICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb25maWcKKykK
KworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX3NlZWRfc2VxdWVuY2VzCisg
IFNSQ1MKKyAgICAic2VlZF9zZXF1ZW5jZXMuY2MiCisgIEhEUlMKKyAgICAic2VlZF9zZXF1ZW5j
ZXMuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAg
ICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmlubGluZWRfdmVj
dG9yCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX25vbnNlY3VyZV9iYXNlCisgICAgYWJzbDo6
cmFuZG9tX2ludGVybmFsX3Bvb2xfdXJiZworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9zYWx0
ZWRfc2VlZF9zZXEKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2VlZF9tYXRlcmlhbAorICAg
IGFic2w6OnJhbmRvbV9zZWVkX2dlbl9leGNlcHRpb24KKyAgICBhYnNsOjpzcGFuCispCisKK2Fi
c2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9iZXJub3VsbGlfZGlzdHJpYnV0aW9uX3Rl
c3QKKyAgU1JDUworICAgICJiZXJub3VsbGlfZGlzdHJpYnV0aW9uX3Rlc3QuY2MiCisgIENPUFRT
CisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRf
TElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucworICAgIGFi
c2w6OnJhbmRvbV9yYW5kb20KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2VxdWVuY2VfdXJi
ZworICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
KyAgICByYW5kb21fYmV0YV9kaXN0cmlidXRpb25fdGVzdAorICBTUkNTCisgICAgImJldGFfZGlz
dHJpYnV0aW9uX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJ
TktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpy
YW5kb21fZGlzdHJpYnV0aW9ucworICAgIGFic2w6OnJhbmRvbV9yYW5kb20KKyAgICBhYnNsOjpi
YXNlCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwKKyAg
ICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2VxdWVuY2VfdXJiZworICAgIGFic2w6OnN0cmluZ3MK
KyAgICBhYnNsOjpzdHJfZm9ybWF0CisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCisKK2Fi
c2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9kaXN0cmlidXRpb25zX3Rlc3QKKyAgU1JD
UworICAgICJkaXN0cmlidXRpb25zX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucworICAgIGFic2w6OnJhbmRvbV9yYW5kb20K
KyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbAorICAgIGdt
b2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5k
b21fZ2VuZXJhdG9yc190ZXN0CisgIFNSQ1MKKyAgICAiZ2VuZXJhdG9yc190ZXN0LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0xJTktPUFRTfQorICAgIGFic2w6OnJhbmRvbV9kaXN0cmlidXRpb25zCisgICAgYWJzbDo6
cmFuZG9tX3JhbmRvbQorICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rl
c3QoCisgIE5BTUUKKyAgICByYW5kb21fbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90ZXN0
CisgIFNSQ1MKKyAgICAibG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0xJTktPUFRTfQorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAg
ICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9k
aXN0cmlidXRpb25fdGVzdF91dGlsCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3NlcXVlbmNl
X3VyYmcKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9tCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFi
c2w6OnN0cl9mb3JtYXQKKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190
ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2Rpc2NyZXRlX2Rpc3RyaWJ1dGlvbl90ZXN0CisgIFNS
Q1MKKyAgICAiZGlzY3JldGVfZGlzdHJpYnV0aW9uX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6cmFuZG9tX2Rpc3RyaWJ1dGlvbnMK
KyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbAorICAgIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbF9zZXF1ZW5jZV91cmJnCisgICAgYWJzbDo6cmFuZG9tX3JhbmRv
bQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4KKykKKworYWJz
bF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX3BvaXNzb25fZGlzdHJpYnV0aW9uX3Rlc3QK
KyAgU1JDUworICAgICJwb2lzc29uX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIgorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktP
UFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2Rpc3RyaWJ1dGlvbnMKKyAgICBhYnNsOjpy
YW5kb21fcmFuZG9tCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAg
IGFic2w6OmZsYXRfaGFzaF9tYXAKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0
aW9uX3Rlc3RfdXRpbAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9zZXF1ZW5jZV91cmJnCisg
ICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN0cl9mb3JtYXQKKyAgICBnbW9jaworICAgIGd0
ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2V4cG9uZW50
aWFsX2Rpc3RyaWJ1dGlvbl90ZXN0CisgIFNSQ1MKKyAgICAiZXhwb25lbnRpYWxfZGlzdHJpYnV0
aW9uX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRT
CisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisg
ICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6cmFuZG9tX2Rpc3RyaWJ1dGlvbnMKKyAg
ICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbAorICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9zZXF1ZW5jZV91cmJnCisgICAgYWJzbDo6cmFuZG9tX3JhbmRvbQor
ICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzdHJfZm9ybWF0CisgICAgZ21vY2sKKyAgICBn
dGVzdF9tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9nYXVzc2lh
bl9kaXN0cmlidXRpb25fdGVzdAorICBTUkNTCisgICAgImdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl90
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFi
c2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnJhbmRvbV9kaXN0cmlidXRpb25zCisgICAgYWJz
bDo6cmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwKKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfc2VxdWVuY2VfdXJiZworICAgIGFic2w6OnJhbmRvbV9yYW5kb20KKyAgICBh
YnNsOjpzdHJpbmdzCisgICAgYWJzbDo6c3RyX2Zvcm1hdAorICAgIGdtb2NrCisgICAgZ3Rlc3Rf
bWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21fdW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uX3Rlc3QKKyAgU1JDUworICAgICJ1bmlmb3JtX2ludF9kaXN0cmlidXRpb25f
dGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAg
ICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBh
YnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9kaXN0
cmlidXRpb25fdGVzdF91dGlsCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3NlcXVlbmNlX3Vy
YmcKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9tCisgICAgYWJzbDo6c3RyaW5ncworICAgIGdtb2Nr
CisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21f
dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbl90ZXN0CisgIFNSQ1MKKyAgICAidW5pZm9ybV9yZWFs
X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQor
ICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJz
bDo6YmFzZQorICAgIGFic2w6OnJhbmRvbV9kaXN0cmlidXRpb25zCisgICAgYWJzbDo6cmFuZG9t
X2ludGVybmFsX2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwKKyAgICBhYnNsOjpyYW5kb21faW50ZXJu
YWxfc2VxdWVuY2VfdXJiZworICAgIGFic2w6OnJhbmRvbV9yYW5kb20KKyAgICBhYnNsOjpzdHJp
bmdzCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQorICAgIHJhbmRvbV96aXBmX2Rpc3RyaWJ1dGlvbl90ZXN0CisgIFNSQ1MKKyAgICAiemlwZl9k
aXN0cmlidXRpb25fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAg
TElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6
OmJhc2UKKyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucworICAgIGFic2w6OnJhbmRvbV9p
bnRlcm5hbF9kaXN0cmlidXRpb25fdGVzdF91dGlsCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFs
X3NlcXVlbmNlX3VyYmcKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9tCisgICAgYWJzbDo6c3RyaW5n
cworICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
KyAgICByYW5kb21fZXhhbXBsZXNfdGVzdAorICBTUkNTCisgICAgImV4YW1wbGVzX3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9tCisgICAg
Z3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21fc2VlZF9z
ZXF1ZW5jZXNfdGVzdAorICBTUkNTCisgICAgInNlZWRfc2VxdWVuY2VzX3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFV
TFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21fc2VlZF9zZXF1ZW5jZXMKKyAg
ICBhYnNsOjpyYW5kb21faW50ZXJuYWxfbm9uc2VjdXJlX2Jhc2UKKyAgICBhYnNsOjpyYW5kb21f
cmFuZG9tCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCisKKyMgSW50ZXJuYWwtb25seSB0
YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5B
TUUKKyAgICByYW5kb21faW50ZXJuYWxfdHJhaXRzCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdHJh
aXRzLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisg
ICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb25maWcKKykK
KworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fi
c2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25f
Y2FsbGVyCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2NhbGxlci5oIgorICBD
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0xJTktPUFRTfQorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVw
ZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2lu
dGVybmFsX2Rpc3RyaWJ1dGlvbnMKKyAgSERSUworICAgICJpbnRlcm5hbC9kaXN0cmlidXRpb25z
LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJu
YWxfZGlzdHJpYnV0aW9uX2NhbGxlcgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9mYXN0X3Vu
aWZvcm1fYml0cworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9mYXN0bWF0aAorICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF90cmFpdHMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfdW5pZm9y
bV9oZWxwZXIKKyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnR5
cGVfdHJhaXRzCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24g
ZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxf
ZmFzdF91bmlmb3JtX2JpdHMKKyAgSERSUworICAgICJpbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0
cy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBk
byBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAg
cmFuZG9tX2ludGVybmFsX3NlZWRfbWF0ZXJpYWwKKyAgU1JDUworICAgICJpbnRlcm5hbC9zZWVk
X21hdGVyaWFsLmNjIgorICBIRFJTCisgICAgImludGVybmFsL3NlZWRfbWF0ZXJpYWwuaCIKKyAg
Q09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xf
REVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3Jl
X2hlYWRlcnMKKyAgICBhYnNsOjpvcHRpb25hbAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9m
YXN0X3VuaWZvcm1fYml0cworICAgIGFic2w6OnNwYW4KKyAgICBhYnNsOjpzdHJpbmdzCispCisK
KyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNs
X2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcG9vbF91cmJnCisgIFNS
Q1MKKyAgICAiaW50ZXJuYWwvcG9vbF91cmJnLmNjIgorICBIRFJTCisgICAgImludGVybmFsL3Bv
b2xfdXJiZy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQor
ICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmVuZGlh
bgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9yYW5kZW4KKyAgICBhYnNsOjpyYW5kb21faW50
ZXJuYWxfc2VlZF9tYXRlcmlhbAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF90cmFpdHMKKyAg
ICBhYnNsOjpyYW5kb21fc2VlZF9nZW5fZXhjZXB0aW9uCisgICAgYWJzbDo6c3BhbgorKQorCisj
IEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX2V4cGxpY2l0X3NlZWRfc2Vx
CisgIEhEUlMKKyAgICAgICJpbnRlcm5hbC9yYW5kb21faW50ZXJuYWxfZXhwbGljaXRfc2VlZF9z
ZXEuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAg
ICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgVEVTVE9OTFkKKykKKworIyBJbnRlcm5hbC1v
bmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgK
KyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9zZXF1ZW5jZV91cmJnCisgIEhEUlMKKyAgICAi
aW50ZXJuYWwvc2VxdWVuY2VfdXJiZy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NP
UFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBURVNUT05M
WQorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5
LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3NhbHRlZF9z
ZWVkX3NlcQorICBIRFJTCisgICAgImludGVybmFsL3NhbHRlZF9zZWVkX3NlcS5oIgorICBDT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6aW5saW5lZF92ZWN0b3IKKyAgICBhYnNs
OjpvcHRpb25hbAorICAgIGFic2w6OnNwYW4KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2Vl
ZF9tYXRlcmlhbAorICAgIGFic2w6OnR5cGVfdHJhaXRzCispCisKKyMgSW50ZXJuYWwtb25seSB0
YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5B
TUUKKyAgICByYW5kb21faW50ZXJuYWxfaW9zdHJlYW1fc3RhdGVfc2F2ZXIKKyAgSERSUworICAg
ICJpbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oIgorICBDT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQor
ICBERVBTCisgICAgYWJzbDo6aW50MTI4CisgICAgYWJzbDo6dHlwZV90cmFpdHMKKykKKworIyBJ
bnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2Nf
bGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25faW1wbAor
ICBIRFJTCisgICAgImludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsLmgiCisgIENPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElO
S09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiaXRzCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJz
bDo6aW50MTI4CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Zhc3RtYXRoCisgICAgYWJzbDo6
cmFuZG9tX2ludGVybmFsX3RyYWl0cworKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBu
b3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFu
ZG9tX2ludGVybmFsX2Zhc3RtYXRoCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvZmFzdG1hdGguaCIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmJpdHMKKykKKworIyBJbnRl
cm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGli
cmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9ub25zZWN1cmVfYmFzZQorICBIRFJT
CisgICAgImludGVybmFsL25vbnNlY3VyZV9iYXNlLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpvcHRpb25hbAorICAgIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbF9wb29sX3VyYmcKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxf
c2FsdGVkX3NlZWRfc2VxCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3NlZWRfbWF0ZXJpYWwK
KyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnR5cGVfdHJhaXRz
CispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHku
CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcGNnX2VuZ2lu
ZQorICBIRFJTCisgICAgImludGVybmFsL3BjZ19lbmdpbmUuaCIKKyAgQ09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BU
U30KKyAgREVQUworICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmludDEyOAorICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9mYXN0bWF0aAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9pb3N0
cmVhbV9zdGF0ZV9zYXZlcgorICAgIGFic2w6OnR5cGVfdHJhaXRzCispCisKKyMgSW50ZXJuYWwt
b25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcmFuZGVuX2VuZ2luZQorICBIRFJTCisgICAg
ImludGVybmFsL3JhbmRlbl9lbmdpbmUuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUwor
ICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9pb3N0cmVhbV9zdGF0ZV9zYXZlcgorICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9yYW5kZW4KKyAgICBhYnNsOjp0eXBlX3RyYWl0cworKQorCisjIElu
dGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19s
aWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3BsYXRmb3JtCisgIEhEUlMKKyAg
ICAiaW50ZXJuYWwvcmFuZGVuX3RyYWl0cy5oIgorICAgICJpbnRlcm5hbC9yYW5kZW4ta2V5cy5p
bmMiCisgICAgImludGVybmFsL3BsYXRmb3JtLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFV
TFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CispCisK
KyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNs
X2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcmFuZGVuCisgIFNSQ1MK
KyAgICAiaW50ZXJuYWwvcmFuZGVuLmNjIgorICBIRFJTCisgICAgImludGVybmFsL3JhbmRlbi5o
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9wbGF0Zm9ybQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9yYW5k
ZW5faHdhZXMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcmFuZGVuX3Nsb3cKKykKKworIyBJ
bnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2Nf
bGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9yYW5kZW5fc2xvdworICBTUkNT
CisgICAgImludGVybmFsL3JhbmRlbl9zbG93LmNjIgorICBIRFJTCisgICAgImludGVybmFsL3Jh
bmRlbl9zbG93LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfcGxhdGZvcm0KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90
IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRv
bV9pbnRlcm5hbF9yYW5kZW5faHdhZXMKKyAgU1JDUworICAgICJpbnRlcm5hbC9yYW5kZW5fZGV0
ZWN0LmNjIgorICBIRFJTCisgICAgImludGVybmFsL3JhbmRlbl9kZXRlY3QuaCIKKyAgICAiaW50
ZXJuYWwvcmFuZGVuX2h3YWVzLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9
CisgICAgJHtBQlNMX1JBTkRPTV9SQU5ERU5fQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcGxh
dGZvcm0KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcmFuZGVuX2h3YWVzX2ltcGwKKykKKwor
IyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xf
Y2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9yYW5kZW5faHdhZXNfaW1w
bAorICBTUkNTCisgICAgImludGVybmFsL3JhbmRlbl9od2Flcy5jYyIKKyAgICAiaW50ZXJuYWwv
cmFuZGVuX2h3YWVzLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgICAg
JHtBQlNMX1JBTkRPTV9SQU5ERU5fQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFV
TFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcGxhdGZvcm0K
KykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4K
K2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRp
b25fdGVzdF91dGlsCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvY2hpX3NxdWFyZS5jYyIKKyAgICAi
aW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5jYyIKKyAgSERSUworICAgICJpbnRlcm5h
bC9jaGlfc3F1YXJlLmgiCisgICAgImludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaCIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpj
b3JlX2hlYWRlcnMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6c3RyX2Zvcm1hdAorICAg
IGFic2w6OnNwYW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBv
biBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF90
cmFpdHNfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3RyYWl0c190ZXN0LmNjIgorICBDT1BU
UworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxU
X0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3RyYWl0cworICAg
IGd0ZXN0X21haW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBv
biBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9k
aXN0cmlidXRpb25faW1wbF90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvZGlzdHJpYnV0aW9u
X2ltcGxfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09Q
VFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmJpdHMK
KyAgICBhYnNsOjpmbGFncworICAgIGFic2w6OmludDEyOAorICAgIGFic2w6OnJhbmRvbV9pbnRl
cm5hbF9kaXN0cmlidXRpb25faW1wbAorICAgIGd0ZXN0X21haW4KKykKKworIyBJbnRlcm5hbC1v
bmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAg
TkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25fdGVzdF91dGlsX3Rlc3QKKyAg
U1JDUworICAgICJpbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsX3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFV
TFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0
aW9uX3Rlc3RfdXRpbAorICAgIGd0ZXN0X21haW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdl
dCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAg
IHJhbmRvbV9pbnRlcm5hbF9mYXN0bWF0aF90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvZmFz
dG1hdGhfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09Q
VFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnJhbmRv
bV9pbnRlcm5hbF9mYXN0bWF0aAorICAgIGd0ZXN0X21haW4KKykKKworIyBJbnRlcm5hbC1vbmx5
IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQorICAgIHJhbmRvbV9pbnRlcm5hbF9leHBsaWNpdF9zZWVkX3NlcV90ZXN0CisgIFNSQ1MKKyAg
ICAiaW50ZXJuYWwvZXhwbGljaXRfc2VlZF9zZXFfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30K
KyAgREVQUworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9leHBsaWNpdF9zZWVkX3NlcQorICAg
IGFic2w6OnJhbmRvbV9zZWVkX3NlcXVlbmNlcworICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgor
KQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5Lgor
YWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3NhbHRlZF9zZWVkX3Nl
cV90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvc2FsdGVkX3NlZWRfc2VxX3Rlc3QuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2FsdGVk
X3NlZWRfc2VxCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCisKKyMgSW50ZXJuYWwtb25s
eSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rlc3QoCisgIE5B
TUUKKyAgICByYW5kb21faW50ZXJuYWxfY2hpX3NxdWFyZV90ZXN0CisgIFNSQ1MKKyAgICAiaW50
ZXJuYWwvY2hpX3NxdWFyZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRT
fQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAg
YWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlv
bl90ZXN0X3V0aWwKKyAgICBndGVzdF9tYWluCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQs
IGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBy
YW5kb21faW50ZXJuYWxfZmFzdF91bmlmb3JtX2JpdHNfdGVzdAorICBTUkNTCisgICAgImludGVy
bmFsL2Zhc3RfdW5pZm9ybV9iaXRzX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZmFzdF91bmlmb3JtX2JpdHMKKyAgICBndGVzdF9t
YWluCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0
bHkuCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfbm9uc2VjdXJl
X2Jhc2VfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL25vbnNlY3VyZV9iYXNlX3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfbm9u
c2VjdXJlX2Jhc2UKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9tCisgICAgYWJzbDo6cmFuZG9tX2Rp
c3RyaWJ1dGlvbnMKKyAgICBhYnNsOjpyYW5kb21fc2VlZF9zZXF1ZW5jZXMKKyAgICBhYnNsOjpz
dHJpbmdzCisgICAgZ3Rlc3RfbWFpbgorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBu
b3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9t
X2ludGVybmFsX3NlZWRfbWF0ZXJpYWxfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3NlZWRf
bWF0ZXJpYWxfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElO
S09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnJh
bmRvbV9pbnRlcm5hbF9zZWVkX21hdGVyaWFsCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCisp
CisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcG9vbF91cmJnX3Rlc3QK
KyAgU1JDUworICAgICJpbnRlcm5hbC9wb29sX3VyYmdfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BU
U30KKyAgREVQUworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9wb29sX3VyYmcKKyAgICBhYnNs
OjpzcGFuCisgICAgYWJzbDo6dHlwZV90cmFpdHMKKyAgICBndGVzdF9tYWluCispCisKKyMgSW50
ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rl
c3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcGNnX2VuZ2luZV90ZXN0CisgIFNSQ1MK
KyAgICAiaW50ZXJuYWwvcGNnX2VuZ2luZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2V4cGxpY2l0X3NlZWRfc2VxCisgICAgYWJz
bDo6cmFuZG9tX2ludGVybmFsX3BjZ19lbmdpbmUKKyAgICBhYnNsOjp0aW1lCisgICAgZ21vY2sK
KyAgICBndGVzdF9tYWluCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBl
bmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJu
YWxfcmFuZGVuX2VuZ2luZV90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcmFuZGVuX2VuZ2lu
ZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAg
IGFic2w6OnJhbmRvbV9pbnRlcm5hbF9leHBsaWNpdF9zZWVkX3NlcQorICAgIGFic2w6OnJhbmRv
bV9pbnRlcm5hbF9yYW5kZW5fZW5naW5lCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnRp
bWUKKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdl
dCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAg
IHJhbmRvbV9pbnRlcm5hbF9yYW5kZW5fdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3JhbmRl
bl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2lu
dGVybmFsX3JhbmRlbgorICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAgZ3Rlc3RfbWFpbgorKQor
CisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJz
bF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3JhbmRlbl9zbG93X3Rlc3QK
KyAgU1JDUworICAgICJpbnRlcm5hbC9yYW5kZW5fc2xvd190ZXN0LmNjIgorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktP
UFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3JhbmRlbl9zbG93CisgICAg
Z3Rlc3RfbWFpbgorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9u
IGRpcmVjdGx5LgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3Jh
bmRlbl9od2Flc190ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcmFuZGVuX2h3YWVzX3Rlc3Qu
Y2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtB
QlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxf
cGxhdGZvcm0KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcmFuZGVuX2h3YWVzCisgICAgYWJz
bDo6cmFuZG9tX2ludGVybmFsX3JhbmRlbl9od2Flc19pbXBsCisgICAgYWJzbDo6YmFzZQorICAg
IGFic2w6OnN0cl9mb3JtYXQKKyAgICBnbW9jaworICAgIGd0ZXN0CispCisKKyMgSW50ZXJuYWwt
b25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfdW5pZm9ybV9oZWxwZXIKKyAgSERSUworICAg
ICJpbnRlcm5hbC91bmlmb3JtX2hlbHBlci5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxU
X0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBT
CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Rpc3Ry
aWJ1dGlvbl9pbXBsCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Zhc3RfdW5pZm9ybV9iaXRz
CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2lvc3RyZWFtX3N0YXRlX3NhdmVyCisgICAgYWJz
bDo6cmFuZG9tX2ludGVybmFsX3RyYWl0cworICAgIGFic2w6OnR5cGVfdHJhaXRzCispCisKKyMg
SW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2Nj
X3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfaW9zdHJlYW1fc3RhdGVfc2F2ZXJf
dGVzdAorICBTUkNTCisgICAgImludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyX3Rlc3QuY2Mi
CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjpyYW5kb21faW50ZXJuYWxfaW9zdHJlYW1fc3RhdGVfc2F2ZXIKKyAgICBndGVzdF9tYWlu
CispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmVuY2htYXJrcy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9iZW5jaG1hcmtzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3YmJiOTgxMGE3NzM4NWM4YWQzZjQxM2EyMzM4
ODhmOTM5NjQ1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmVuY2htYXJrcy5j
YwpAQCAtMCwwICsxLDM4MyBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisKKy8vIEJlbmNobWFya3MgZm9yIGFic2wgcmFuZG9tIGRpc3RyaWJ1dGlvbnMgYXMgd2Vs
bCBhcyBhIHNlbGVjdGlvbiBvZiB0aGUKKy8vIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IHJhbmRvbSBk
aXN0cmlidXRpb25zLgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRkZWY+
CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgorI2luY2x1
ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9i
YXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorI2luY2x1
ZGUgImFic2wvcmFuZG9tL2Jlcm5vdWxsaV9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNs
L3JhbmRvbS9iZXRhX2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2V4cG9u
ZW50aWFsX2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2dhdXNzaWFuX2Rp
c3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9y
bV9iaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2VuZ2luZS5o
IgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2xvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9wb2lzc29uX2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUg
ImFic2wvcmFuZG9tL3JhbmRvbS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3VuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3VuaWZvcm1fcmVhbF9kaXN0
cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS96aXBmX2Rpc3RyaWJ1dGlvbi5oIgor
I2luY2x1ZGUgImJlbmNobWFyay9iZW5jaG1hcmsuaCIKKworbmFtZXNwYWNlIHsKKworLy8gU2Vl
ZCBkYXRhIHRvIGF2b2lkIHJlYWRpbmcgcmFuZG9tX2RldmljZSgpIGZvciBiZW5jaG1hcmtzLgor
dWludDMyX3Qga1NlZWREYXRhW10gPSB7CisgICAgMHgxQjUxMDA1MiwgMHg5QTUzMjkxNSwgMHhE
NjBGNTczRiwgMHhCQzlCQzZFNCwgMHgyQjYwQTQ3NiwgMHg4MUU2NzQwMCwKKyAgICAweDA4QkE2
RkI1LCAweDU3MUJFOTFGLCAweEYyOTZFQzZCLCAweDJBMEREOTE1LCAweEI2NjM2NTIxLCAweEU3
QjlGOUI2LAorICAgIDB4RkYzNDA1MkUsIDB4QzU4NTU2NjQsIDB4NTNCMDJENUQsIDB4QTk5RjhG
QTEsIDB4MDhCQTQ3OTksIDB4NkU4NTA3NkEsCisgICAgMHg0QjdBNzBFOSwgMHhCNUIzMjk0NCwg
MHhEQjc1MDkyRSwgMHhDNDE5MjYyMywgMHhBRDZFQTZCMCwgMHg0OUE3REY3RCwKKyAgICAweDlD
RUU2MEI4LCAweDhGRURCMjY2LCAweEVDQUE4QzcxLCAweDY5OUExOEZGLCAweDU2NjQ1MjZDLCAw
eEMyQjE5RUUxLAorICAgIDB4MTkzNjAyQTUsIDB4NzUwOTRDMjksIDB4QTA1OTEzNDAsIDB4RTQx
ODNBM0UsIDB4M0Y1NDk4OUEsIDB4NUI0MjlENjUsCisgICAgMHg2QjhGRTRENiwgMHg5OUY3M0ZE
NiwgMHhBMUQyOUMwNywgMHhFRkU4MzBGNSwgMHg0RDJEMzhFNiwgMHhGMDI1NURDMSwKKyAgICAw
eDRDREQyMDg2LCAweDg0NzBFQjI2LCAweDYzODJFOUM2LCAweDAyMUVDQzVFLCAweDA5Njg2QjNG
LCAweDNFQkFFRkM5LAorICAgIDB4M0M5NzE4MTQsIDB4NkI2QTcwQTEsIDB4Njg3RjM1ODQsIDB4
NTJBMEUyODYsIDB4MTMxOThBMkUsIDB4MDM3MDczNDQsCit9OworCisvLyBQcmVjb21waWxlZFNl
ZWRTZXEgcHJvdmlkZXMga1NlZWREYXRhIHRvIGEgY29uZm9ybWluZworLy8gcmFuZG9tIGVuZ2lu
ZSB0byBzcGVlZCBpbml0aWFsaXphdGlvbiBpbiB0aGUgYmVuY2htYXJrcy4KK2NsYXNzIFByZWNv
bXBpbGVkU2VlZFNlcSB7CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IHVpbnQzMl90
OworCisgIFByZWNvbXBpbGVkU2VlZFNlcSgpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0
ZXJhdG9yPgorICBQcmVjb21waWxlZFNlZWRTZXEoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVu
ZCkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgUHJlY29tcGlsZWRTZWVkU2VxKHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbCkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0
SXRlcmF0b3I+CisgIHZvaWQgZ2VuZXJhdGUoT3V0SXRlcmF0b3IgYmVnaW4sIE91dEl0ZXJhdG9y
IGVuZCkgeworICAgIHN0YXRpYyBzaXplX3QgaWR4ID0gMDsKKyAgICBmb3IgKDsgYmVnaW4gIT0g
ZW5kOyBiZWdpbisrKSB7CisgICAgICAqYmVnaW4gPSBrU2VlZERhdGFbaWR4KytdOworICAgICAg
aWYgKGlkeCA+PSBBQlNMX0FSUkFZU0laRShrU2VlZERhdGEpKSB7CisgICAgICAgIGlkeCA9IDA7
CisgICAgICB9CisgICAgfQorICB9CisKKyAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBB
QlNMX0FSUkFZU0laRShrU2VlZERhdGEpOyB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dEl0
ZXJhdG9yPgorICB2b2lkIHBhcmFtKE91dEl0ZXJhdG9yIG91dCkgY29uc3QgeworICAgIHN0ZDo6
Y29weShzdGQ6OmJlZ2luKGtTZWVkRGF0YSksIHN0ZDo6ZW5kKGtTZWVkRGF0YSksIG91dCk7Cisg
IH0KK307CisKKy8vIHVzZV9kZWZhdWx0X2luaXRpYWxpemF0aW9uPFQ+IGluZGljYXRlcyB3aGV0
aGVyIHRoZSByYW5kb20gZW5naW5lCisvLyBUIG11c3QgYmUgZGVmYXVsdCBpbml0aWFsaXplZCwg
b3Igd2hldGhlciB3ZSBtYXkgaW5pdGlhbGl6ZSBpdCB1c2luZworLy8gYSBzZWVkIHNlcXVlbmNl
LiBUaGlzIGlzIHVzZWQgYmVjYXVzZSBzb21lIGVuZ2luZXMgZG8gbm90IGFjY2VwdCBzZWVkCisv
LyBzZXF1ZW5jZS1iYXNlZCBpbml0aWFsaXphdGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFPgor
dXNpbmcgdXNlX2RlZmF1bHRfaW5pdGlhbGl6YXRpb24gPSBzdGQ6OmZhbHNlX3R5cGU7CisKKy8v
IG1ha2VfZW5naW5lPFQsIFNTZXE+IHJldHVybnMgYSByYW5kb21fZW5naW5lIHdoaWNoIGlzIGlu
aXRpYWxpemVkLAorLy8gZWl0aGVyIHZpYSB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvciwgd2hlbiB1
c2VfZGVmYXVsdF9pbml0aWFsaXphdGlvbjxUPgorLy8gaXMgdHJ1ZSwgb3IgdmlhIHRoZSBpbmRp
Y2F0ZWQgc2VlZCBzZXF1ZW5jZSwgU1NlcS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdpbmUsIHR5
cGVuYW1lIFNTZXEgPSBQcmVjb21waWxlZFNlZWRTZXE+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVf
aWZfdDwhdXNlX2RlZmF1bHRfaW5pdGlhbGl6YXRpb248RW5naW5lPjo6dmFsdWUsIEVuZ2luZT4K
K21ha2VfZW5naW5lKCkgeworICAvLyBJbml0aWFsaXplIHRoZSByYW5kb20gZW5naW5lIHVzaW5n
IHRoZSBzZWVkIHNlcXVlbmNlIFNTZXEsIHdoaWNoCisgIC8vIGlzIGNvbnN0cnVjdGVkIGZyb20g
dGhlIHByZWNvbXBpbGVkIHNlZWQgZGF0YS4KKyAgU1NlcSBzZXEoc3RkOjpiZWdpbihrU2VlZERh
dGEpLCBzdGQ6OmVuZChrU2VlZERhdGEpKTsKKyAgcmV0dXJuIEVuZ2luZShzZXEpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lLCB0eXBlbmFtZSBTU2VxID0gUHJlY29tcGlsZWRTZWVk
U2VxPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8dXNlX2RlZmF1bHRfaW5pdGlhbGl6YXRp
b248RW5naW5lPjo6dmFsdWUsIEVuZ2luZT4KK21ha2VfZW5naW5lKCkgeworICAvLyBJbml0aWFs
aXplIHRoZSByYW5kb20gZW5naW5lIHVzaW5nIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yLgorICBy
ZXR1cm4gRW5naW5lKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdpbmUsIHR5cGVuYW1l
IFNTZXE+Cit2b2lkIEJNX0NvbnN0cnVjdChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBm
b3IgKGF1dG8gXyA6IHN0YXRlKSB7CisgICAgYXV0byBybmcgPSBtYWtlX2VuZ2luZTxFbmdpbmUs
IFNTZXE+KCk7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHJuZygpKTsKKyAgfQorfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lPgordm9pZCBCTV9EaXJlY3QoYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIEVuZ2luZTo6cmVz
dWx0X3R5cGU7CisgIC8vIERpcmVjdCB1c2Ugb2YgdGhlIFVSQkcuCisgIGF1dG8gcm5nID0gbWFr
ZV9lbmdpbmU8RW5naW5lPigpOworICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7CisgICAgYmVuY2ht
YXJrOjpEb05vdE9wdGltaXplKHJuZygpKTsKKyAgfQorICBzdGF0ZS5TZXRCeXRlc1Byb2Nlc3Nl
ZChzaXplb2YodmFsdWVfdHlwZSkgKiBzdGF0ZS5pdGVyYXRpb25zKCkpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRW5naW5lPgordm9pZCBCTV9HZW5lcmF0ZShiZW5jaG1hcms6OlN0YXRlJiBz
dGF0ZSkgeworICAvLyBzdGQ6OmdlbmVyYXRlIG1ha2VzIGEgY29weSBvZiB0aGUgUk5HOyB0aHVz
IHRoaXMgdGVzdHMgdGhlCisgIC8vIGNvcHktY29uc3RydWN0b3IgZWZmaWNpZW5jeS4KKyAgdXNp
bmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIEVuZ2luZTo6cmVzdWx0X3R5cGU7CisgIHN0ZDo6dmVj
dG9yPHZhbHVlX3R5cGU+IHYoNjQpOworICBhdXRvIHJuZyA9IG1ha2VfZW5naW5lPEVuZ2luZT4o
KTsKKyAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nQmF0Y2goNjQpKSB7CisgICAgc3RkOjpnZW5l
cmF0ZShzdGQ6OmJlZ2luKHYpLCBzdGQ6OmVuZCh2KSwgcm5nKTsKKyAgfQorfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRW5naW5lLCBzaXplX3QgZWxlbXM+Cit2b2lkIEJNX1NodWZmbGUoYmVuY2ht
YXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgLy8gRGlyZWN0IHVzZSBvZiB0aGUgRW5naW5lLgorICBz
dGQ6OnZlY3Rvcjx1aW50MzJfdD4gdihlbGVtcyk7CisgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmlu
Z0JhdGNoKGVsZW1zKSkgeworICAgIGF1dG8gcm5nID0gbWFrZV9lbmdpbmU8RW5naW5lPigpOwor
ICAgIHN0ZDo6c2h1ZmZsZShzdGQ6OmJlZ2luKHYpLCBzdGQ6OmVuZCh2KSwgcm5nKTsKKyAgfQor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lLCBzaXplX3QgZWxlbXM+Cit2b2lkIEJNX1No
dWZmbGVSZXVzZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICAvLyBEaXJlY3QgdXNlIG9m
IHRoZSBFbmdpbmUuCisgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiB2KGVsZW1zKTsKKyAgYXV0byBy
bmcgPSBtYWtlX2VuZ2luZTxFbmdpbmU+KCk7CisgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZ0Jh
dGNoKGVsZW1zKSkgeworICAgIHN0ZDo6c2h1ZmZsZShzdGQ6OmJlZ2luKHYpLCBzdGQ6OmVuZCh2
KSwgcm5nKTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lLCB0eXBlbmFtZSBE
aXN0LCB0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBCTV9EaXN0KGJlbmNobWFyazo6U3RhdGUmIHN0
YXRlLCBBcmdzJiYuLi4gYXJncykgeworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgRGlz
dDo6cmVzdWx0X3R5cGU7CisgIGF1dG8gcm5nID0gbWFrZV9lbmdpbmU8RW5naW5lPigpOworICBE
aXN0IGRpc3tzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi59OworICAvLyBDb21wYXJlIHRoZSBm
b2xsb3dpbmcgbG9vcCBwZXJmb3JtYW5jZToKKyAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgeworICAg
IGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShkaXMocm5nKSk7CisgIH0KKyAgc3RhdGUuU2V0Qnl0
ZXNQcm9jZXNzZWQoc2l6ZW9mKHZhbHVlX3R5cGUpICogc3RhdGUuaXRlcmF0aW9ucygpKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZSwgdHlwZW5hbWUgRGlzdD4KK3ZvaWQgQk1fTGFy
Z2UoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVu
YW1lIERpc3Q6OnJlc3VsdF90eXBlOworICB2b2xhdGlsZSB2YWx1ZV90eXBlIGtNaW4gPSAwOwor
ICB2b2xhdGlsZSB2YWx1ZV90eXBlIGtNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHZhbHVlX3R5
cGU+OjptYXgoKSAvIDIgKyAxOworICBCTV9EaXN0PEVuZ2luZSwgRGlzdD4oc3RhdGUsIGtNaW4s
IGtNYXgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lLCB0eXBlbmFtZSBEaXN0Pgor
dm9pZCBCTV9TbWFsbChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICB1c2luZyB2YWx1ZV90
eXBlID0gdHlwZW5hbWUgRGlzdDo6cmVzdWx0X3R5cGU7CisgIHZvbGF0aWxlIHZhbHVlX3R5cGUg
a01pbiA9IDA7CisgIHZvbGF0aWxlIHZhbHVlX3R5cGUga01heCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dmFsdWVfdHlwZT46Om1heCgpIC8gNjQgKyAxOworICBCTV9EaXN0PEVuZ2luZSwgRGlzdD4o
c3RhdGUsIGtNaW4sIGtNYXgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lLCB0eXBl
bmFtZSBEaXN0LCBpbnQgQT4KK3ZvaWQgQk1fQmVybm91bGxpKGJlbmNobWFyazo6U3RhdGUmIHN0
YXRlKSB7CisgIHZvbGF0aWxlIGRvdWJsZSBhID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihBKSAvIDEw
MDAwMDA7CisgIEJNX0Rpc3Q8RW5naW5lLCBEaXN0PihzdGF0ZSwgYSk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBFbmdpbmUsIHR5cGVuYW1lIERpc3QsIGludCBBLCBpbnQgQj4KK3ZvaWQgQk1f
QmV0YShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICB1c2luZyB2YWx1ZV90eXBlID0gdHlw
ZW5hbWUgRGlzdDo6cmVzdWx0X3R5cGU7CisgIHZvbGF0aWxlIHZhbHVlX3R5cGUgYSA9IHN0YXRp
Y19jYXN0PHZhbHVlX3R5cGU+KEEpIC8gMTAwOworICB2b2xhdGlsZSB2YWx1ZV90eXBlIGIgPSBz
dGF0aWNfY2FzdDx2YWx1ZV90eXBlPihCKSAvIDEwMDsKKyAgQk1fRGlzdDxFbmdpbmUsIERpc3Q+
KHN0YXRlLCBhLCBiKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZSwgdHlwZW5hbWUg
RGlzdCwgaW50IEE+Cit2b2lkIEJNX0dhbW1hKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cisg
IHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBEaXN0OjpyZXN1bHRfdHlwZTsKKyAgdm9sYXRp
bGUgdmFsdWVfdHlwZSBhID0gc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oQSkgLyAxMDA7CisgIEJN
X0Rpc3Q8RW5naW5lLCBEaXN0PihzdGF0ZSwgYSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBF
bmdpbmUsIHR5cGVuYW1lIERpc3QsIGludCBBID0gMTAwPgordm9pZCBCTV9Qb2lzc29uKGJlbmNo
bWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHZvbGF0aWxlIGRvdWJsZSBhID0gc3RhdGljX2Nhc3Q8
ZG91YmxlPihBKSAvIDEwMDsKKyAgQk1fRGlzdDxFbmdpbmUsIERpc3Q+KHN0YXRlLCBhKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZSwgdHlwZW5hbWUgRGlzdCwgaW50IFEgPSAyLCBp
bnQgViA9IDE+Cit2b2lkIEJNX1ppcGYoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgdXNp
bmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIERpc3Q6OnJlc3VsdF90eXBlOworICB2b2xhdGlsZSBk
b3VibGUgcSA9IFE7CisgIHZvbGF0aWxlIGRvdWJsZSB2ID0gVjsKKyAgQk1fRGlzdDxFbmdpbmUs
IERpc3Q+KHN0YXRlLCBzdGQ6Om51bWVyaWNfbGltaXRzPHZhbHVlX3R5cGU+OjptYXgoKSwgcSwg
dik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdpbmUsIHR5cGVuYW1lIERpc3Q+Cit2b2lk
IEJNX1RocmVhZChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICB1c2luZyB2YWx1ZV90eXBl
ID0gdHlwZW5hbWUgRGlzdDo6cmVzdWx0X3R5cGU7CisgIGF1dG8gcm5nID0gbWFrZV9lbmdpbmU8
RW5naW5lPigpOworICBEaXN0IGRpc3t9OworICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7CisgICAg
YmVuY2htYXJrOjpEb05vdE9wdGltaXplKGRpcyhybmcpKTsKKyAgfQorICBzdGF0ZS5TZXRCeXRl
c1Byb2Nlc3NlZChzaXplb2YodmFsdWVfdHlwZSkgKiBzdGF0ZS5pdGVyYXRpb25zKCkpOworfQor
CisvLyBOT1RFUzoKKy8vCisvLyBzdGQ6Omdlb21ldHJpY19kaXN0cmlidXRpb24gaXMgc2ltaWxh
ciB0byB0aGUgemlwZiBkaXN0cmlidXRpb25zLgorLy8gVGhlIGFsZ29yaXRobSBmb3IgdGhlIGdl
b21ldHJpY19kaXN0cmlidXRpb24gaXMsIGJhc2ljYWxseSwKKy8vIGZsb29yKGxvZygxLVgpIC8g
bG9nKDEtcCkpCisKKy8vIE5vcm1hbCBiZW5jaG1hcmsgc3VpdGUKKyNkZWZpbmUgQk1fQkFTSUMo
RW5naW5lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9Db25zdHJ1Y3QsIEVuZ2luZSwgUHJlY29t
cGlsZWRTZWVkU2VxKTsgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1f
Q29uc3RydWN0LCBFbmdpbmUsIHN0ZDo6c2VlZF9zZXEpOyAgICAgICAgICAgICAgICAgICAgIFwK
KyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0RpcmVjdCwgRW5naW5lKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9TaHVmZmxl
LCBFbmdpbmUsIDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5D
SE1BUktfVEVNUExBVEUoQk1fU2h1ZmZsZSwgRW5naW5lLCAxMDApOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NodWZmbGUsIEVuZ2lu
ZSwgMTAwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19U
RU1QTEFURShCTV9TaHVmZmxlUmV1c2UsIEVuZ2luZSwgMTAwKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fU2h1ZmZsZVJldXNlLCBFbmdpbmUs
IDEwMDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRF
KEJNX0Rpc3QsIEVuZ2luZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkZhc3RVbmlm
b3JtQml0czx1aW50MzJfdD4pOyAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlz
dCwgRW5naW5lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICAgICAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6RmFzdFVuaWZvcm1CaXRz
PHVpbnQ2NF90Pik7ICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdp
bmUsIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDMyX3Q+KTsgXAorICBCRU5DSE1B
UktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5lLCBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
bjxpbnQ2NF90Pik7IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
ICAgICBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50MzJfdD4pOyAgICAgICAgICAg
ICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5lLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIGFi
c2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ2NF90Pik7ICAgICAgICAgICAgICAgICBc
CisgIEJFTkNITUFSS19URU1QTEFURShCTV9MYXJnZSwgRW5naW5lLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlm
b3JtX2ludF9kaXN0cmlidXRpb248aW50MzJfdD4pOyAgICAgICAgICAgICAgICAgIFwKKyAgQkVO
Q0hNQVJLX1RFTVBMQVRFKEJNX0xhcmdlLCBFbmdpbmUsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbjxpbnQ2NF90Pik7ICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktf
VEVNUExBVEUoQk1fTGFyZ2UsIEVuZ2luZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6OnVuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbjxpbnQzMl90Pik7ICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFU
RShCTV9MYXJnZSwgRW5naW5lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9u
PGludDY0X3Q+KTsgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Rp
c3QsIEVuZ2luZSwgc3RkOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGZsb2F0Pik7ICBcCisg
IEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsIHN0ZDo6dW5pZm9ybV9yZWFsX2Rp
c3RyaWJ1dGlvbjxkb3VibGU+KTsgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5n
aW5lLCBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGZsb2F0Pik7IFwKKyAgQkVOQ0hN
QVJLX1RFTVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1
dGlvbjxkb3VibGU+KQorCisjZGVmaW5lIEJNX0NPUFkoRW5naW5lKSBCRU5DSE1BUktfVEVNUExB
VEUoQk1fR2VuZXJhdGUsIEVuZ2luZSkKKworI2RlZmluZSBCTV9USFJFQUQoRW5naW5lKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1Q
TEFURShCTV9UaHJlYWQsIEVuZ2luZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICAgICAgICAgIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ2NF90
PikgICAgICAgXAorICAgICAgLT5UaHJlYWRQZXJDcHUoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9UaHJlYWQs
IEVuZ2luZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAg
ICAgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248ZG91YmxlPikgICAgICAgXAorICAg
ICAgLT5UaHJlYWRQZXJDcHUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9TaHVmZmxlLCBFbmdpbmUsIDEwMCkt
PlRocmVhZFBlckNwdSgpOyAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NodWZmbGUs
IEVuZ2luZSwgMTAwMCktPlRocmVhZFBlckNwdSgpOyAgICAgXAorICBCRU5DSE1BUktfVEVNUExB
VEUoQk1fU2h1ZmZsZVJldXNlLCBFbmdpbmUsIDEwMCktPlRocmVhZFBlckNwdSgpOyBcCisgIEJF
TkNITUFSS19URU1QTEFURShCTV9TaHVmZmxlUmV1c2UsIEVuZ2luZSwgMTAwMCktPlRocmVhZFBl
ckNwdSgpOworCisjZGVmaW5lIEJNX0VYVEVOREVEKEVuZ2luZSkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAvKiAtLS0tLS0tLS0tLS0tLSBF
eHRlbmRlZCBVbmlmb3JtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gICAgICAgICAgICAgICAg
IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NtYWxsLCBFbmdpbmUsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQzMl90Pik7ICAgICAgICAgICAgICAgICAgXAorICBC
RU5DSE1BUktfVEVNUExBVEUoQk1fU21hbGwsIEVuZ2luZSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pZm9ybV9p
bnRfZGlzdHJpYnV0aW9uPGludDY0X3Q+KTsgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFS
S19URU1QTEFURShCTV9TbWFsbCwgRW5naW5lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dW5pZm9ybV9pbnRfZGlz
dHJpYnV0aW9uPGludDMyX3Q+KTsgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBM
QVRFKEJNX1NtYWxsLCBFbmdpbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAgICAgICAgICBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRp
b248aW50NjRfdD4pOyAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1f
U21hbGwsIEVuZ2luZSwgc3RkOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGZsb2F0Pik7IFwK
KyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NtYWxsLCBFbmdpbmUsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaWZv
cm1fcmVhbF9kaXN0cmlidXRpb248ZG91YmxlPik7ICAgICAgICAgICAgICAgICAgXAorICBCRU5D
SE1BUktfVEVNUExBVEUoQk1fU21hbGwsIEVuZ2luZSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6OnVuaWZvcm1fcmVh
bF9kaXN0cmlidXRpb248ZmxvYXQ+KTsgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19U
RU1QTEFURShCTV9TbWFsbCwgRW5naW5lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3Ry
aWJ1dGlvbjxkb3VibGU+KTsgICAgICAgICAgICAgICAgIFwKKyAgLyogLS0tLS0tLS0tLS0tLS0g
T3RoZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsIHN0ZDo6bm9ybWFsX2Rp
c3RyaWJ1dGlvbjxkb3VibGU+KTsgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlz
dCwgRW5naW5lLCBhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb248ZG91YmxlPik7ICAgIFwKKyAg
QkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwgc3RkOjpleHBvbmVudGlhbF9kaXN0
cmlidXRpb248ZG91YmxlPik7ICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdp
bmUsIGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+KTsgXAorICBCRU5DSE1B
UktfVEVNUExBVEUoQk1fUG9pc3NvbiwgRW5naW5lLCBzdGQ6OnBvaXNzb25fZGlzdHJpYnV0aW9u
PGludDY0X3Q+LCAgIFwKKyAgICAgICAgICAgICAgICAgICAgIDEwMCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1Q
TEFURShCTV9Qb2lzc29uLCBFbmdpbmUsIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPGludDY0
X3Q+LCAgXAorICAgICAgICAgICAgICAgICAgICAgMTAwKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJN
X1BvaXNzb24sIEVuZ2luZSwgc3RkOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxpbnQ2NF90PiwgICBc
CisgICAgICAgICAgICAgICAgICAgICAxMCAqIDEwMCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fUG9pc3Nv
biwgRW5naW5lLCBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxpbnQ2NF90PiwgIFwKKyAgICAg
ICAgICAgICAgICAgICAgIDEwICogMTAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9Qb2lzc29uLCBFbmdp
bmUsIHN0ZDo6cG9pc3Nvbl9kaXN0cmlidXRpb248aW50NjRfdD4sICAgXAorICAgICAgICAgICAg
ICAgICAgICAgMTMgKiAxMDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1BvaXNzb24sIEVuZ2luZSwgYWJz
bDo6cG9pc3Nvbl9kaXN0cmlidXRpb248aW50NjRfdD4sICBcCisgICAgICAgICAgICAgICAgICAg
ICAxMyAqIDEwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5lLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6
OmxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50MzJfdD4pOyAgICAgICAgICAgICBcCisg
IEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bG9nX3Vu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ2NF90Pik7ICAgICAgICAgICAgIFwKKyAgQkVOQ0hN
QVJLX1RFTVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwgc3RkOjpnZW9tZXRyaWNfZGlzdHJpYnV0aW9u
PGludDY0X3Q+KTsgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9aaXBmLCBFbmdpbmUsIGFi
c2w6OnppcGZfZGlzdHJpYnV0aW9uPHVpbnQ2NF90Pik7ICAgICAgXAorICBCRU5DSE1BUktfVEVN
UExBVEUoQk1fWmlwZiwgRW5naW5lLCBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjx1aW50NjRfdD4s
IDIsICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIDMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShC
TV9CZXJub3VsbGksIEVuZ2luZSwgc3RkOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uLCAgICAgICAg
XAorICAgICAgICAgICAgICAgICAgICAgMjU3MzA1KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Jlcm5v
dWxsaSwgRW5naW5lLCBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uLCAgICAgICBcCisgICAg
ICAgICAgICAgICAgICAgICAyNTczMDUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fQmV0YSwgRW5naW5l
LCBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxkb3VibGU+LCA2NSwgICAgIFwKKyAgICAgICAgICAg
ICAgICAgICAgIDQxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9CZXRhLCBFbmdpbmUsIGFic2w6
OmJldGFfZGlzdHJpYnV0aW9uPGRvdWJsZT4sIDk5LCAgICAgXAorICAgICAgICAgICAgICAgICAg
ICAgMzMwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0JldGEsIEVuZ2luZSwgYWJzbDo6YmV0YV9k
aXN0cmlidXRpb248ZG91YmxlPiwgMTUwLCAgICBcCisgICAgICAgICAgICAgICAgICAgICAxNTAp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICBCRU5DSE1BUktfVEVNUExBVEUoQk1fQmV0YSwgRW5naW5lLCBhYnNsOjpiZXRhX2Rpc3RyaWJ1
dGlvbjxkb3VibGU+LCA0MTAsICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIDU4MCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNI
TUFSS19URU1QTEFURShCTV9CZXRhLCBFbmdpbmUsIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPGZs
b2F0PiwgNjUsIDQxKTsgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fQmV0YSwgRW5naW5lLCBh
YnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxmbG9hdD4sIDk5LCAgICAgIFwKKyAgICAgICAgICAgICAg
ICAgICAgIDMzMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9CZXRhLCBFbmdpbmUsIGFic2w6OmJl
dGFfZGlzdHJpYnV0aW9uPGZsb2F0PiwgMTUwLCAgICAgXAorICAgICAgICAgICAgICAgICAgICAg
MTUwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0JldGEsIEVuZ2luZSwgYWJzbDo6YmV0YV9kaXN0
cmlidXRpb248ZmxvYXQ+LCA0MTAsICAgICBcCisgICAgICAgICAgICAgICAgICAgICA1ODApOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBC
RU5DSE1BUktfVEVNUExBVEUoQk1fR2FtbWEsIEVuZ2luZSwgc3RkOjpnYW1tYV9kaXN0cmlidXRp
b248ZmxvYXQ+LCAxOTkpOyAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0dhbW1hLCBFbmdp
bmUsIHN0ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPGRvdWJsZT4sIDE5OSk7CisKKy8vIEFCU0wgUmVj
b21tZW5kZWQgaW50ZXJmYWNlcy4KK0JNX0JBU0lDKGFic2w6Okluc2VjdXJlQml0R2VuKTsgIC8v
ID09PSBwY2c2NF8yMDE4X2VuZ2luZQorQk1fQkFTSUMoYWJzbDo6Qml0R2VuKTsgICAgLy8gPT09
IHJhbmRlbl9lbmdpbmU8dWludDY0X3Q+LgorQk1fVEhSRUFEKGFic2w6OkJpdEdlbik7CitCTV9F
WFRFTkRFRChhYnNsOjpCaXRHZW4pOworCisvLyBJbnN0YW50aWF0ZSBiZW5jaG1hcmtzIGZvciBt
dWx0aXBsZSBlbmdpbmVzLgordXNpbmcgcmFuZGVuX2VuZ2luZV82NCA9IGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6cmFuZGVuX2VuZ2luZTx1aW50NjRfdD47Cit1c2luZyByYW5kZW5fZW5naW5lXzMy
ID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpyYW5kZW5fZW5naW5lPHVpbnQzMl90PjsKKworLy8g
Q29tcGFyaXNvbiBpbnRlcmZhY2VzLgorQk1fQkFTSUMoc3RkOjptdDE5OTM3XzY0KTsKK0JNX0NP
UFkoc3RkOjptdDE5OTM3XzY0KTsKK0JNX0VYVEVOREVEKHN0ZDo6bXQxOTkzN182NCk7CitCTV9C
QVNJQyhyYW5kZW5fZW5naW5lXzY0KTsKK0JNX0NPUFkocmFuZGVuX2VuZ2luZV82NCk7CitCTV9F
WFRFTkRFRChyYW5kZW5fZW5naW5lXzY0KTsKKworQk1fQkFTSUMoc3RkOjptdDE5OTM3KTsKK0JN
X0NPUFkoc3RkOjptdDE5OTM3KTsKK0JNX0JBU0lDKHJhbmRlbl9lbmdpbmVfMzIpOworQk1fQ09Q
WShyYW5kZW5fZW5naW5lXzMyKTsKKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vYmVybm91bGxpX2Rpc3RyaWJ1dGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Jlcm5vdWxs
aV9kaXN0cmlidXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjZmY2I2ZTAxMmRjNTFiN2NlYzIwNTRjOTcx
MTA1MDNiMGIyYzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Jlcm5vdWxsaV9k
aXN0cmlidXRpb24uaApAQCAtMCwwICsxLDE5OCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFi
c2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fQkVSTk9VTExJX0RJU1RSSUJV
VElPTl9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9CRVJOT1VMTElfRElTVFJJQlVUSU9OX0hfCisK
KyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGlzdHJlYW0+CisjaW5jbHVkZSA8bGltaXRz
PgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL29wdGltaXphdGlvbi5oIgorI2luY2x1ZGUgImFic2wv
cmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCIKKworbmFtZXNwYWNlIGFic2wgewor
CisvLyBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uIGlzIGEgZHJvcCBpbiByZXBsYWNlbWVu
dCBmb3IKKy8vIHN0ZDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbi4gSXQgZ3VhcmFudGVlcyB0aGF0
IChnaXZlbiBhIHBlcmZlY3QKKy8vIFVuaWZvcm1SYW5kb21CaXRHZW5lcmF0b3IpIHRoZSBhY2Nl
cHRhbmNlIHByb2JhYmlsaXR5IGlzICpleGFjdGx5KiBlcXVhbCB0bworLy8gdGhlIGdpdmVuIGRv
dWJsZS4KKy8vCisvLyBUaGUgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0IGRvdWJsZSBpcyBJ
RUVFNzU0CitjbGFzcyBiZXJub3VsbGlfZGlzdHJpYnV0aW9uIHsKKyBwdWJsaWM6CisgIHVzaW5n
IHJlc3VsdF90eXBlID0gYm9vbDsKKworICBjbGFzcyBwYXJhbV90eXBlIHsKKyAgIHB1YmxpYzoK
KyAgICB1c2luZyBkaXN0cmlidXRpb25fdHlwZSA9IGJlcm5vdWxsaV9kaXN0cmlidXRpb247CisK
KyAgICBleHBsaWNpdCBwYXJhbV90eXBlKGRvdWJsZSBwID0gMC41KSA6IHByb2JfKHApIHsKKyAg
ICAgIGFzc2VydChwID49IDAuMCAmJiBwIDw9IDEuMCk7CisgICAgfQorCisgICAgZG91YmxlIHAo
KSBjb25zdCB7IHJldHVybiBwcm9iXzsgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBwYXJhbV90eXBlJiBwMSwgY29uc3QgcGFyYW1fdHlwZSYgcDIpIHsKKyAgICAgIHJldHVy
biBwMS5wKCkgPT0gcDIucCgpOworICAgIH0KKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IHBhcmFtX3R5cGUmIHAxLCBjb25zdCBwYXJhbV90eXBlJiBwMikgeworICAgICAgcmV0dXJu
IHAxLnAoKSAhPSBwMi5wKCk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGRvdWJsZSBwcm9i
XzsKKyAgfTsKKworICBiZXJub3VsbGlfZGlzdHJpYnV0aW9uKCkgOiBiZXJub3VsbGlfZGlzdHJp
YnV0aW9uKDAuNSkge30KKworICBleHBsaWNpdCBiZXJub3VsbGlfZGlzdHJpYnV0aW9uKGRvdWJs
ZSBwKSA6IHBhcmFtXyhwKSB7fQorCisgIGV4cGxpY2l0IGJlcm5vdWxsaV9kaXN0cmlidXRpb24o
cGFyYW1fdHlwZSBwKSA6IHBhcmFtXyhwKSB7fQorCisgIC8vIG5vLW9wCisgIHZvaWQgcmVzZXQo
KSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICBib29sIG9wZXJhdG9yKCkoVVJC
RyYgZykgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICByZXR1cm4gR2VuZXJh
dGUocGFyYW1fLnAoKSwgZyk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAg
Ym9vbCBvcGVyYXRvcigpKFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgcGFyYW0pIHsKKyAgICByZXR1cm4g
R2VuZXJhdGUocGFyYW0ucCgpLCBnKTsKKyAgfQorCisgIHBhcmFtX3R5cGUgcGFyYW0oKSBjb25z
dCB7IHJldHVybiBwYXJhbV87IH0KKyAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBwYXJh
bSkgeyBwYXJhbV8gPSBwYXJhbTsgfQorCisgIGRvdWJsZSBwKCkgY29uc3QgeyByZXR1cm4gcGFy
YW1fLnAoKTsgfQorCisgIHJlc3VsdF90eXBlKG1pbikoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICByZXN1bHRfdHlwZShtYXgpKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgZDEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgZDIpIHsK
KyAgICByZXR1cm4gZDEucGFyYW1fID09IGQyLnBhcmFtXzsKKyAgfQorCisgIGZyaWVuZCBib29s
IG9wZXJhdG9yIT0oY29uc3QgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgZDEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgZDIpIHsKKyAgICBy
ZXR1cm4gZDEucGFyYW1fICE9IGQyLnBhcmFtXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50NjRfdCBrUDMyID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IDMy
OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICBzdGF0aWMgYm9vbCBHZW5lcmF0ZShk
b3VibGUgcCwgVVJCRyYgZyk7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorCisgIHBh
cmFtX3R5cGUgcGFyYW1fOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFt
ZSBUcmFpdHM+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPDwo
CisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcywgIC8vIE5PTElOVChy
dW50aW1lL3JlZmVyZW5jZXMpCisgICAgY29uc3QgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgeCkg
eworICBhdXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjptYWtlX29zdHJlYW1fc3RhdGVfc2F2
ZXIob3MpOworICBvcy5wcmVjaXNpb24ocmFuZG9tX2ludGVybmFsOjpzdHJlYW1fcHJlY2lzaW9u
X2hlbHBlcjxkb3VibGU+OjprUHJlY2lzaW9uKTsKKyAgb3MgPDwgeC5wKCk7CisgIHJldHVybiBv
czsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHM+CitzdGQ6
OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPj4oCisgICAgc3RkOjpiYXNp
Y19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBpcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5j
ZXMpCisgICAgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgeCkgeyAgICAgICAgICAgIC8vIE5PTElO
VChydW50aW1lL3JlZmVyZW5jZXMpCisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1h
a2VfaXN0cmVhbV9zdGF0ZV9zYXZlcihpcyk7CisgIGF1dG8gcCA9IHJhbmRvbV9pbnRlcm5hbDo6
cmVhZF9mbG9hdGluZ19wb2ludDxkb3VibGU+KGlzKTsKKyAgaWYgKCFpcy5mYWlsKCkpIHsKKyAg
ICB4LnBhcmFtKGJlcm5vdWxsaV9kaXN0cmlidXRpb246OnBhcmFtX3R5cGUocCkpOworICB9Cisg
IHJldHVybiBpczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Citib29sIGJlcm5vdWxs
aV9kaXN0cmlidXRpb246OkdlbmVyYXRlKGRvdWJsZSBwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVUkJHJiBnKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2Vz
KQorICByYW5kb21faW50ZXJuYWw6OkZhc3RVbmlmb3JtQml0czx1aW50MzJfdD4gZmFzdF91MzI7
CisKKyAgd2hpbGUgKHRydWUpIHsKKyAgICAvLyBUaGVyZSBhcmUgdHdvIGFzcGVjdHMgb2YgdGhl
IGRlZmluaXRpb24gb2YgYGNgIGJlbG93IHRoYXQgYXJlIHdvcnRoCisgICAgLy8gY29tbWVudGlu
ZyBvbi4gIEZpcnN0LCBiZWNhdXNlIGBwYCBpcyBpbiB0aGUgcmFuZ2UgWzAsIDFdLCBgY2AgaXMg
aW4gdGhlCisgICAgLy8gcmFuZ2UgWzAsIDJeMzJdIHdoaWNoIGRvZXMgbm90IGZpdCBpbiBhIHVp
bnQzMl90IGFuZCB0aGVyZWZvcmUgcmVxdWlyZXMKKyAgICAvLyA2NCBiaXRzLgorICAgIC8vCisg
ICAgLy8gU2Vjb25kLCBgY2AgaXMgY29uc3RydWN0ZWQgYnkgZmlyc3QgY2FzdGluZyBleHBsaWNp
dGx5IHRvIGEgc2lnbmVkCisgICAgLy8gaW50ZWdlciBhbmQgdGhlbiBjb252ZXJ0aW5nIGltcGxp
Y2l0bHkgdG8gYW4gdW5zaWduZWQgaW50ZWdlciBvZiB0aGUgc2FtZQorICAgIC8vIHNpemUuICBU
aGlzIGlzIGRvbmUgYmVjYXVzZSB0aGUgaGFyZHdhcmUgY29udmVyc2lvbiBpbnN0cnVjdGlvbnMg
cHJvZHVjZQorICAgIC8vIHNpZ25lZCBpbnRlZ2VycyBmcm9tIGRvdWJsZTsgaWYgdGFrZW4gYXMg
YSB1aW50NjRfdCB0aGUgY29udmVyc2lvbiB3b3VsZAorICAgIC8vIGJlIHdyb25nIGZvciBkb3Vi
bGVzIGdyZWF0ZXIgdGhhbiAyXjYzIChub3QgcmVsZXZhbnQgaW4gdGhpcyB1c2UtY2FzZSkuCisg
ICAgLy8gSWYgY29udmVydGVkIGRpcmVjdGx5IHRvIGFuIHVuc2lnbmVkIGludGVnZXIsIHRoZSBj
b21waWxlciB3b3VsZCBlbmQgdXAKKyAgICAvLyBlbWl0dGluZyBjb2RlIHRvIGhhbmRsZSBzdWNo
IGxhcmdlIHZhbHVlcyB0aGF0IGFyZSBub3QgcmVsZXZhbnQgZHVlIHRvCisgICAgLy8gdGhlIGtu
b3duIGJvdW5kcyBvbiBgY2AuICBUbyBhdm9pZCB0aGVzZSBleHRyYSBpbnN0cnVjdGlvbnMgdGhp
cworICAgIC8vIGltcGxlbWVudGF0aW9uIGNvbnZlcnRzIGZpcnN0IHRvIHRoZSBzaWduZWQgdHlw
ZSBhbmQgdGhlbiB1c2UgdGhlCisgICAgLy8gaW1wbGljaXQgY29udmVyc2lvbiB0byB1bnNpZ25l
ZCAod2hpY2ggaXMgYSBuby1vcCkuCisgICAgY29uc3QgdWludDY0X3QgYyA9IHN0YXRpY19jYXN0
PGludDY0X3Q+KHAgKiBrUDMyKTsKKyAgICBjb25zdCB1aW50MzJfdCB2ID0gZmFzdF91MzIoZyk7
CisgICAgLy8gRkFTVCBQQVRIOiB0aGlzIHBhdGggZmFpbHMgd2l0aCBwcm9iYWJpbGl0eSAxLzJe
MzIuICBOb3RlIHRoYXQgc2ltcGx5CisgICAgLy8gcmV0dXJuaW5nIHYgPD0gYyB3b3VsZCBhcHBy
b3hpbWF0ZSBQIHZlcnkgd2VsbCAodXAgdG8gYW4gYWJzb2x1dGUgZXJyb3IKKyAgICAvLyBvZiAx
LzJeMzIpOyB0aGUgc2xvdyBwYXRoICh0YWtlbiBpbiB0aGF0IHJhbmdlIG9mIHBvc3NpYmxlIGVy
cm9yLCBpbiB0aGUKKyAgICAvLyBjYXNlIG9mIGVxdWFsaXR5KSBlbGltaW5hdGVzIHRoZSByZW1h
aW5pbmcgZXJyb3IuCisgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKHYgIT0gYykpIHJldHVybiB2
IDwgYzsKKworICAgIC8vIEl0IGlzIGd1YXJhbnRlZWQgdGhhdCBgcWAgaXMgc3RyaWN0bHkgbGVz
cyB0aGFuIDEsIGJlY2F1c2UgaWYgYHFgIHdlcmUKKyAgICAvLyBncmVhdGVyIHRoYW4gb3IgZXF1
YWwgdG8gMSwgdGhlIHNhbWUgd291bGQgYmUgdHJ1ZSBmb3IgYHBgLiBDZXJ0YWlubHkgYHBgCisg
ICAgLy8gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAxLCBhbmQgaWYgYHAgPT0gMWAsIHRoZW4gdGhl
IGZhc3QgcGF0aCB3b3VsZAorICAgIC8vIG5lY2Vzc2FyeSBoYXZlIGJlZW4gdGFrZW4gYWxyZWFk
eS4KKyAgICBjb25zdCBkb3VibGUgcSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oYykgLyBrUDMyOwor
CisgICAgLy8gVGhlIHByb2JhYmlsaXR5IG9mIGFjY2VwdGFuY2Ugb24gdGhlIGZhc3QgcGF0aCBp
cyBgcWAgYW5kIHNvIHRoZQorICAgIC8vIHByb2JhYmlsaXR5IG9mIGFjY2VwdGFuY2UgaGVyZSBz
aG91bGQgYmUgYHAgLSBxYC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBgcWAgaXMgb2J0YWlu
ZWQgZnJvbSBgcGAgdmlhIHNvbWUgc2hpZnRzIGFuZCBjb252ZXJzaW9ucywgdGhlCisgICAgLy8g
dXBzaG90IG9mIHdoaWNoIGlzIHRoYXQgYHFgIGlzIHNpbXBseSBgcGAgd2l0aCBzb21lIG9mIHRo
ZQorICAgIC8vIGxlYXN0LXNpZ25pZmljYW50IGJpdHMgb2YgaXRzIG1hbnRpc3NhIHNldCB0byB6
ZXJvLiBUaGlzIG1lYW5zIHRoYXQgdGhlCisgICAgLy8gZGlmZmVyZW5jZSBgcCAtIHFgIHdpbGwg
bm90IGhhdmUgYW55IHJvdW5kaW5nIGVycm9ycy4gVG8gc2VlIHdoeSwgcHJldGVuZAorICAgIC8v
IHRoYXQgZG91YmxlIGhhcyAxMCBiaXRzIG9mIHJlc29sdXRpb24gYW5kIHEgaXMgb2J0YWluZWQg
ZnJvbSBgcGAgaW4gc3VjaAorICAgIC8vIGEgd2F5IHRoYXQgdGhlIDQgbGVhc3Qtc2lnbmlmaWNh
bnQgYml0cyBvZiBpdHMgbWFudGlzc2EgYXJlIHNldCB0byB6ZXJvLgorICAgIC8vIEZvciBleGFt
cGxlOgorICAgIC8vICAgcCAgID0gMS4xMTAwMTExMDExICogMl4tMQorICAgIC8vICAgcSAgID0g
MS4xMTAwMTEwMDAwICogMl4tMQorICAgIC8vIHAgLSBxID0gMS4wMTEgICAgICAgICogMl4tOAor
ICAgIC8vIFRoZSBkaWZmZXJlbmNlIGBwIC0gcWAgaGFzIGV4YWN0bHkgdGhlIG5vbnplcm8gbWFu
dGlzc2EgYml0cyB0aGF0IHdlcmUKKyAgICAvLyAibG9zdCIgaW4gYHFgIHByb2R1Y2luZyBhIG51
bWJlciB3aGljaCBpcyBjZXJ0YWlubHkgcmVwcmVzZW50YWJsZSBpbiBhCisgICAgLy8gZG91Ymxl
LgorICAgIGNvbnN0IGRvdWJsZSBsZWZ0ID0gcCAtIHE7CisKKyAgICAvLyBCeSBjb25zdHJ1Y3Rp
b24sIHRoZSBwcm9iYWJpbGl0eSBvZiBiZWluZyBvbiB0aGlzIHNsb3cgcGF0aCBpcyAxLzJeMzIs
IHNvCisgICAgLy8gUChhY2NlcHQgaW4gc2xvdyBwYXRoKSA9IFAoYWNjZXB0fCBpbiBzbG93IHBh
dGgpICogUChzbG93IHBhdGgpLAorICAgIC8vIHdoaWNoIG1lYW5zIHRoZSBwcm9iYWJpbGl0eSBv
ZiBhY2NlcHRhbmNlIGhlcmUgaXMgYDEgLyAobGVmdCAqIGtQMzIpYDoKKyAgICBjb25zdCBkb3Vi
bGUgaGVyZSA9IGxlZnQgKiBrUDMyOworCisgICAgLy8gVGhlIHNpbXBsZXN0IHdheSB0byBjb21w
dXRlIHRoZSByZXN1bHQgb2YgdGhpcyB0cmlhbCBpcyB0byByZXBlYXQgdGhlCisgICAgLy8gd2hv
bGUgYWxnb3JpdGhtIHdpdGggdGhlIG5ldyBwcm9iYWJpbGl0eS4gVGhpcyB0ZXJtaW5hdGVzIGJl
Y2F1c2UgZXZlbgorICAgIC8vIGdpdmVuICBhcmJpdHJhcmlseSB1bmZyaWVuZGx5ICJyYW5kb20i
IGJpdHMsIGVhY2ggaXRlcmF0aW9uIGVpdGhlcgorICAgIC8vIG11bHRpcGxpZXMgYSB0aW55IHBy
b2JhYmlsaXR5IGJ5IDJeMzIgKGlmIGMgPT0gMCkgb3Igc3RyaXBzIG9mZiBzb21lCisgICAgLy8g
bnVtYmVyIG9mIG5vbnplcm8gbWFudGlzc2EgYml0cy4gVGhhdCBwcm9jZXNzIGlzIGJvdW5kZWQu
CisgICAgaWYgKGhlcmUgPT0gMCkgcmV0dXJuIGZhbHNlOworICAgIHAgPSBoZXJlOworICB9Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fQkVSTk9V
TExJX0RJU1RSSUJVVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Jlcm5vdWxsaV9k
aXN0cmlidXRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9u
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJjM2I5OWNkNGZmZGM3ZTc5YzgyNGNmYmM5ZDAwZmE4OWI3
OGMwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0
aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSwyMTMgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vYmVybm91bGxpX2Rpc3RyaWJ1
dGlvbi5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRl
IDxyYW5kb20+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1
ZW5jZV91cmJnLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIEJlcm5vdWxsaVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxzdGQ6OnBhaXI8ZG91YmxlLCBzaXplX3Q+PiB7Cit9OworCitURVNUX1AoQmVybm91bGxpVGVz
dCwgU2VyaWFsaXplKSB7CisgIGNvbnN0IGRvdWJsZSBkID0gR2V0UGFyYW0oKS5maXJzdDsKKyAg
YWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiBiZWZvcmUoZCk7CisKKyAgeworICAgIGFic2w6
OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gdmlhX3BhcmFteworICAgICAgICBhYnNsOjpiZXJub3Vs
bGlfZGlzdHJpYnV0aW9uOjpwYXJhbV90eXBlKGQpfTsKKyAgICBFWFBFQ1RfRVEodmlhX3BhcmFt
LCBiZWZvcmUpOworICB9CisKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8IGJlZm9y
ZTsKKyAgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiBhZnRlcigwLjY3ODkpOworCisgIEVY
UEVDVF9ORShiZWZvcmUucCgpLCBhZnRlci5wKCkpOworICBFWFBFQ1RfTkUoYmVmb3JlLnBhcmFt
KCksIGFmdGVyLnBhcmFtKCkpOworICBFWFBFQ1RfTkUoYmVmb3JlLCBhZnRlcik7CisKKyAgc3Mg
Pj4gYWZ0ZXI7CisKKyAgRVhQRUNUX0VRKGJlZm9yZS5wKCksIGFmdGVyLnAoKSk7CisgIEVYUEVD
VF9FUShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgIEVYUEVDVF9FUShiZWZvcmUs
IGFmdGVyKTsKK30KKworVEVTVF9QKEJlcm5vdWxsaVRlc3QsIEFjY3VyYWN5KSB7CisgIC8vIFNh
ZGx5LCB0aGUgY2xhaW0gdG8gZmFtZSBmb3IgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBwcmVjaXNl
IGFjY3VyYWN5LCB3aGljaAorICAvLyBpcyB2ZXJ5LCB2ZXJ5IGhhcmQgdG8gbWVhc3VyZSwgdGhl
IGltcHJvdmVtZW50cyBjb21lIGFzIHRyaWFscyBhcHByb2FjaCB0aGUKKyAgLy8gbGltaXQgb2Yg
ZG91YmxlIGFjY3VyYWN5OyB0aHVzIHRoZSBvdXRjb21lIGRpZmZlcnMgZnJvbSB0aGUKKyAgLy8g
c3RkOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uIHdpdGggYSBwcm9iYWJpbGl0eSBvZiBhcHByb3hp
bWF0ZWx5IDEgaW4gMl4tNTMuCisgIGNvbnN0IHN0ZDo6cGFpcjxkb3VibGUsIHNpemVfdD4gcGFy
YSA9IEdldFBhcmFtKCk7CisgIHNpemVfdCB0cmlhbHMgPSBwYXJhLnNlY29uZDsKKyAgZG91Ymxl
IHAgPSBwYXJhLmZpcnN0OworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZzsKKworICBzaXpl
X3QgeWVzID0gMDsKKyAgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiBkaXN0KHApOworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRyaWFsczsgKytpKSB7CisgICAgaWYgKGRpc3Qocm5nKSkg
eWVzKys7CisgIH0KKworICAvLyBDb21wdXRlIHRoZSBkaXN0cmlidXRpb24gcGFyYW1ldGVycyBm
b3IgYSBiaW5vbWlhbCB0ZXN0LCB1c2luZyBhIG5vcm1hbAorICAvLyBhcHByb3hpbWF0aW9uIGZv
ciB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCwgYXMgdGhlcmUgYXJlIGEgc3VmZmljaWVudGx5Cisg
IC8vIGxhcmdlIG51bWJlciBvZiB0cmlhbHMgdGhhdCB0aGUgY2VudHJhbCBsaW1pdCB0aGVvcmVt
IGFwcGxpZXMuCisgIGNvbnN0IGRvdWJsZSBzdGRkZXZfcCA9IHN0ZDo6c3FydCgocCAqICgxLjAg
LSBwKSkgLyB0cmlhbHMpOworICBjb25zdCBkb3VibGUgZXhwZWN0ZWQgPSB0cmlhbHMgKiBwOwor
ICBjb25zdCBkb3VibGUgc3RkZGV2ID0gdHJpYWxzICogc3RkZGV2X3A7CisKKyAgLy8gNSBzaWdt
YSwgYXBwcm92ZWQgYnkgUmljaGFyZCBGZXlubWFuCisgIEVYUEVDVF9ORUFSKHllcywgZXhwZWN0
ZWQsIDUgKiBzdGRkZXYpCisgICAgICA8PCAiQCIgPDwgcCA8PCAiLCAiCisgICAgICA8PCBzdGQ6
OmFicyhzdGF0aWNfY2FzdDxkb3VibGU+KHllcykgLSBleHBlY3RlZCkgLyBzdGRkZXYgPDwgIiBz
dGRkZXYiOworfQorCisvLyBUaGVyZSBtdXN0IGJlIG1hbnkgbW9yZSB0cmlhbHMgdG8gbWFrZSB0
aGUgbWVhbiBhcHByb3hpbWF0ZWx5IG5vcm1hbCBmb3IgYHBgCisvLyBjbG9zZXMgdG8gMCBvciAx
LgorSU5TVEFOVElBVEVfVEVTVF9TVUlURV9QKAorICAgIEFsbCwgQmVybm91bGxpVGVzdCwKKyAg
ICA6OnRlc3Rpbmc6OlZhbHVlcygKKyAgICAgICAgLy8gVHlwaWNhbCB2YWx1ZXMuCisgICAgICAg
IHN0ZDo6bWFrZV9wYWlyKDAsIDMwMDAwKSwgc3RkOjptYWtlX3BhaXIoMWUtMywgMzAwMDAwMDAp
LAorICAgICAgICBzdGQ6Om1ha2VfcGFpcigwLjEsIDMwMDAwMDApLCBzdGQ6Om1ha2VfcGFpcigw
LjUsIDMwMDAwMDApLAorICAgICAgICBzdGQ6Om1ha2VfcGFpcigwLjksIDMwMDAwMDAwKSwgc3Rk
OjptYWtlX3BhaXIoMC45OTksIDMwMDAwMDAwKSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoMSwg
MzAwMDApLAorICAgICAgICAvLyBCb3VuZGFyeSBjYXNlcy4KKyAgICAgICAgc3RkOjptYWtlX3Bh
aXIoc3RkOjpuZXh0YWZ0ZXIoMS4wLCAwLjApLCAxKSwgIC8vIH4xIC0gZXBzaWxvbgorICAgICAg
ICBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSwg
MSksCisgICAgICAgIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6bWluKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEuMCksICAvLyBtaW4gKyBlcHNpbG9uCisgICAgICAgICAgICAgICAgICAgICAgIDEpLAor
ICAgICAgICBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigp
LCAgLy8gc21hbGxlc3Qgbm9ybWFsCisgICAgICAgICAgICAgICAgICAgICAgIDEpLAorICAgICAg
ICBzdGQ6Om1ha2VfcGFpcigKKyAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6ZGVub3JtX21pbigpLCAgLy8gc21hbGxlc3QgZGVub3JtCisgICAgICAgICAgICAxKSwKKyAg
ICAgICAgc3RkOjptYWtlX3BhaXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptaW4oKSAv
IDIsIDEpLCAgLy8gZGVub3JtCisgICAgICAgIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bmV4dGFmdGVy
KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWluKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMCksICAvLyBkZW5vcm1fbWF4CisgICAgICAgICAgICAgICAg
ICAgICAgIDEpKSk7CisKKy8vIE5PVEU6IGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gaXMg
bm90IGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLgorVEVTVChCZXJub3VsbGlUZXN0LCBTdGFiaWxp
dHlUZXN0KSB7CisgIC8vIGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gc3RhYmlsaXR5IHJl
bGllcyBvbiBGYXN0VW5pZm9ybUJpdHMgYW5kCisgIC8vIGludGVnZXIgYXJpdGhtZXRpYy4KKyAg
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoeworICAgICAgMHgwMDAz
ZWI3NmY2ZjdmNzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGwsIDB4QzMzMkRERUZCRTZDNUFB
NXVsbCwKKyAgICAgIDB4NjU1ODIxODU2OEFCOTcwMnVsbCwgMHgyQUVGN0RBRDVCNkUyRjg0dWxs
LCAweDE1MjFCNjI4MjkwNzYxNzB1bGwsCisgICAgICAweEVDREQ0Nzc1NjE5RjE1MTB1bGwsIDB4
MTNDQ0E4MzBFQjYxQkQ5NnVsbCwgMHgwMzM0RkUxRUFBMDM2M0NGdWxsLAorICAgICAgMHhCNTcz
NUM5MDRDNzBBMjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1bGwsIDB4RUVDQzg2QkM2MDYyMkNB
N3VsbCwKKyAgICAgIDB4NDg2NGYyMmMwNTliZjI5ZXVsbCwgMHgyNDc4NTZkOGI4NjI2NjVjdWxs
LCAweGU0NmU4NmU5YTEzMzdlMTB1bGwsCisgICAgICAweGQ4Yzg1NDFmMzUxOWIxMzN1bGwsIDB4
ZTc1YjUxNjJjNTY3YjllNHVsbCwgMHhmNzMyZTVkZWQ3MDA5YzVidWxsLAorICAgICAgMHhiMTcw
Yjk4MzUzMTIxZWFjdWxsLCAweDFlYzJlODk4NmQyMzYyY2F1bGwsIDB4ODE0YzhlMzVmZTlhOTYx
YXVsbCwKKyAgICAgIDB4MGMzY2Q1OWM5YjYzOGEwMnVsbCwgMHhjYjNiYjY0NzhhMDc3MTVjdWxs
LCAweDEyMjRlNjJjOTc4YmJjN2Z1bGwsCisgICAgICAweDY3MWVmMmNiMDRlODFmNmV1bGwsIDB4
M2MxY2JkODExZWFmMTgwOHVsbCwgMHgxYmJjMjNjZmE4ZmFjNzIxdWxsLAorICAgICAgMHhhNGMy
Y2RhNjVlNTk2YTUxdWxsLCAweGI3NzIxNmZhZDM3YWRmOTF1bGwsIDB4ODM2ZDc5NDQ1N2MwODg0
OXVsbCwKKyAgICAgIDB4ZTA4M2RmMDM0NzVmNDlkN3VsbCwgMHhiYzlmZWI1MTJlNmIwZDZjdWxs
LCAweGIxMmQ3NGZkZDcxOGM4YzV1bGwsCisgICAgICAweDEyZmYwOTY1M2JmYmU0Y2F1bGwsIDB4
OGRkMDNhMTA1YmM0ZWU3ZXVsbCwgMHg1NzM4MzQxMDQ1YmEwZDg1dWxsLAorICAgICAgMHhlM2Zk
NzIyZGM2NWFkMDlldWxsLCAweDVhMTRmZDIxZWEyYTU3MDV1bGwsIDB4MTRlNmVhNGQ2ZWRiMGM3
M3VsbCwKKyAgICAgIDB4Mjc1YjBkYzdlMGExOGFjZnVsbCwgMHgzNmNlYmUwZDI2NTM2ODJldWxs
LCAweDAzNjFlOWIyMzg2MTU5NmJ1bGwsCisgIH0pOworCisgIC8vIEdlbmVyYXRlIGEgc3RkOjpz
dHJpbmcgb2YgJzAnIGFuZCAnMScgZm9yIHRoZSBkaXN0cmlidXRpb24gb3V0cHV0LgorICBhdXRv
IGdlbmVyYXRlID0gWyZ1cmJnXShhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uJiBkaXN0KSB7
CisgICAgc3RkOjpzdHJpbmcgb3V0cHV0OworICAgIG91dHB1dC5yZXNlcnZlKDM2KTsKKyAgICB1
cmJnLnJlc2V0KCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzNTsgaSsrKSB7CisgICAgICBv
dXRwdXQuYXBwZW5kKGRpc3QodXJiZykgPyAiMSIgOiAiMCIpOworICAgIH0KKyAgICByZXR1cm4g
b3V0cHV0OworICB9OworCisgIGNvbnN0IGRvdWJsZSBrUCA9IDAuMDMzMTI4OTg2MjM2MjsKKyAg
eworICAgIGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gZGlzdChrUCk7CisgICAgYXV0byB2
ID0gZ2VuZXJhdGUoZGlzdCk7CisgICAgRVhQRUNUX0VRKDM1LCB1cmJnLmludm9jYXRpb25zKCkp
OworICAgIEVYUEVDVF9FUSh2LCAiMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAi
KSA8PCBkaXN0OworICB9CisgIHsKKyAgICBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uIGRp
c3Qoa1AgKiAxMC4wKTsKKyAgICBhdXRvIHYgPSBnZW5lcmF0ZShkaXN0KTsKKyAgICBFWFBFQ1Rf
RVEoMzUsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQRUNUX0VRKHYsICIwMDAwMDEwMDAx
MDAxMDAxMDAxMDAwMDAxMTAwMDAxMTAxMCIpIDw8IGRpc3Q7CisgIH0KKyAgeworICAgIGFic2w6
OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gZGlzdChrUCAqIDIwLjApOworICAgIGF1dG8gdiA9IGdl
bmVyYXRlKGRpc3QpOworICAgIEVYUEVDVF9FUSgzNSwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAg
ICBFWFBFQ1RfRVEodiwgIjAwMDExMTEwMDEwMTEwMTEwMDExMDExMTExMTEwMTExMDExIikgPDwg
ZGlzdDsKKyAgfQorICB7CisgICAgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiBkaXN0KDEu
MCAtIGtQKTsKKyAgICBhdXRvIHYgPSBnZW5lcmF0ZShkaXN0KTsKKyAgICBFWFBFQ1RfRVEoMzUs
IHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQRUNUX0VRKHYsICIxMTExMTExMTExMTExMTEx
MTExMTAxMTExMTExMTExMTExMSIpIDw8IGRpc3Q7CisgIH0KK30KKworVEVTVChCZXJub3VsbGlU
ZXN0LCBTdGFiaWxpdHlUZXN0MikgeworICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNl
X3VyYmcgdXJiZygKKyAgICAgIHsweDAwMDNlYjc2ZjZmN2Y3NTV1bGwsIDB4RkZDRUE1MEZEQjJG
OTUzQnVsbCwgMHhDMzMyRERFRkJFNkM1QUE1dWxsLAorICAgICAgIDB4NjU1ODIxODU2OEFCOTcw
MnVsbCwgMHgyQUVGN0RBRDVCNkUyRjg0dWxsLCAweDE1MjFCNjI4MjkwNzYxNzB1bGwsCisgICAg
ICAgMHhFQ0RENDc3NTYxOUYxNTEwdWxsLCAweDEzQ0NBODMwRUI2MUJEOTZ1bGwsIDB4MDMzNEZF
MUVBQTAzNjNDRnVsbCwKKyAgICAgICAweEI1NzM1QzkwNEM3MEEyMzl1bGwsIDB4RDU5RTlFMEJD
QkFBREUxNHVsbCwgMHhFRUNDODZCQzYwNjIyQ0E3dWxsfSk7CisKKyAgLy8gR2VuZXJhdGUgYSBz
dGQ6OnN0cmluZyBvZiAnMCcgYW5kICcxJyBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBvdXRwdXQuCisg
IGF1dG8gZ2VuZXJhdGUgPSBbJnVyYmddKGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24mIGRp
c3QpIHsKKyAgICBzdGQ6OnN0cmluZyBvdXRwdXQ7CisgICAgb3V0cHV0LnJlc2VydmUoMTMpOwor
ICAgIHVyYmcucmVzZXQoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEyOyBpKyspIHsKKyAg
ICAgIG91dHB1dC5hcHBlbmQoZGlzdCh1cmJnKSA/ICIxIiA6ICIwIik7CisgICAgfQorICAgIHJl
dHVybiBvdXRwdXQ7CisgIH07CisKKyAgY29uc3RleHByIGRvdWJsZSBiMCA9IDEuMCAvIDEzLjAg
LyAwLjI7CisgIGNvbnN0ZXhwciBkb3VibGUgYjEgPSAyLjAgLyAxMy4wIC8gMC4yOworICBjb25z
dGV4cHIgZG91YmxlIGIzID0gKDUuMCAvIDEzLjAgLyAwLjIpIC0gKCgxIC0gYjApICsgKDEgLSBi
MSkgKyAoMSAtIGIxKSk7CisgIHsKKyAgICBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uIGRp
c3QoYjApOworICAgIGF1dG8gdiA9IGdlbmVyYXRlKGRpc3QpOworICAgIEVYUEVDVF9FUSgxMiwg
dXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfRVEodiwgIjAwMDAxMTEwMDEwMSIpIDw8
IGRpc3Q7CisgIH0KKyAgeworICAgIGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gZGlzdChi
MSk7CisgICAgYXV0byB2ID0gZ2VuZXJhdGUoZGlzdCk7CisgICAgRVhQRUNUX0VRKDEyLCB1cmJn
Lmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9FUSh2LCAiMDAxMTExMTAxMTAxIikgPDwgZGlz
dDsKKyAgfQorICB7CisgICAgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiBkaXN0KGIzKTsK
KyAgICBhdXRvIHYgPSBnZW5lcmF0ZShkaXN0KTsKKyAgICBFWFBFQ1RfRVEoMTIsIHVyYmcuaW52
b2NhdGlvbnMoKSk7CisgICAgRVhQRUNUX0VRKHYsICIwMDExMTExMDExMTEiKSA8PCBkaXN0Owor
ICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2JldGFf
ZGlzdHJpYnV0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmV0YV9kaXN0cmlidXRpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kN2FmZDYxYzdmYjE4MDZkN2Y5NGUzZTEwOTdmNjAwYjRiMTJjM2M5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2JldGFfZGlzdHJpYnV0aW9uLmgKQEAgLTAsMCArMSw0MTQg
QEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFC
U0xfUkFORE9NX0JFVEFfRElTVFJJQlVUSU9OX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0JFVEFf
RElTVFJJQlVUSU9OX0hfCisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNtYXRoPgor
I2luY2x1ZGUgPGlzdHJlYW0+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG9zdHJlYW0+
CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5h
bC9kaXN0cmlidXRpb25faW1wbC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zh
c3RfdW5pZm9ybV9iaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1h
dGguaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZl
ci5oIgorCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uOgor
Ly8gR2VuZXJhdGUgYSBmbG9hdGluZy1wb2ludCB2YXJpYXRlIGNvbmZvcm1pbmcgdG8gYSBCZXRh
IGRpc3RyaWJ1dGlvbjoKKy8vICAgcGRmKHgpIFxwcm9wdG8geF4oYWxwaGEtMSkgKiAoMS14KV4o
YmV0YS0xKSwKKy8vIHdoZXJlIHRoZSBwYXJhbXMgYWxwaGEgYW5kIGJldGEgYXJlIGJvdGggc3Ry
aWN0bHkgcG9zaXRpdmUgcmVhbCB2YWx1ZXMuCisvLworLy8gVGhlIHN1cHBvcnQgaXMgdGhlIG9w
ZW4gaW50ZXJ2YWwgKDAsIDEpLCBidXQgdGhlIHJldHVybiB2YWx1ZSBtaWdodCBiZSBlcXVhbAor
Ly8gdG8gMCBvciAxLCBkdWUgdG8gbnVtZXJpY2FsIGVycm9ycyB3aGVuIGFscGhhIGFuZCBiZXRh
IGFyZSB2ZXJ5IGRpZmZlcmVudC4KKy8vCisvLyBVc2FnZSBub3RlOiBPbmUgdXNhZ2UgaXMgdGhh
dCBhbHBoYSBhbmQgYmV0YSBhcmUgY291bnRzIG9mIG51bWJlciBvZgorLy8gc3VjY2Vzc2VzIGFu
ZCBmYWlsdXJlcy4gV2hlbiB0aGUgdG90YWwgbnVtYmVyIG9mIHRyaWFscyBhcmUgbGFyZ2UsIGNv
bnNpZGVyCisvLyBhcHByb3hpbWF0aW5nIGEgYmV0YSBkaXN0cmlidXRpb24gd2l0aCBhIEdhdXNz
aWFuIGRpc3RyaWJ1dGlvbiB3aXRoIHRoZSBzYW1lCisvLyBtZWFuIGFuZCB2YXJpYW5jZS4gT25l
IGNvdWxkIHVzZSB0aGUgc2tld25lc3MsIHdoaWNoIGRlcGVuZHMgb25seSBvbiB0aGUKKy8vIHNt
YWxsZXIgb2YgYWxwaGEgYW5kIGJldGEgd2hlbiB0aGUgbnVtYmVyIG9mIHRyaWFscyBhcmUgc3Vm
ZmljaWVudGx5IGxhcmdlLAorLy8gdG8gcXVhbnRpZnkgaG93IGZhciBhIGJldGEgZGlzdHJpYnV0
aW9uIGlzIGZyb20gdGhlIG5vcm1hbCBkaXN0cmlidXRpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
UmVhbFR5cGUgPSBkb3VibGU+CitjbGFzcyBiZXRhX2Rpc3RyaWJ1dGlvbiB7CisgcHVibGljOgor
ICB1c2luZyByZXN1bHRfdHlwZSA9IFJlYWxUeXBlOworCisgIGNsYXNzIHBhcmFtX3R5cGUgewor
ICAgcHVibGljOgorICAgIHVzaW5nIGRpc3RyaWJ1dGlvbl90eXBlID0gYmV0YV9kaXN0cmlidXRp
b247CisKKyAgICBleHBsaWNpdCBwYXJhbV90eXBlKHJlc3VsdF90eXBlIGFscGhhLCByZXN1bHRf
dHlwZSBiZXRhKQorICAgICAgICA6IGFscGhhXyhhbHBoYSksIGJldGFfKGJldGEpIHsKKyAgICAg
IGFzc2VydChhbHBoYSA+PSAwKTsKKyAgICAgIGFzc2VydChiZXRhID49IDApOworICAgICAgYXNz
ZXJ0KGFscGhhIDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpKTsK
KyAgICAgIGFzc2VydChiZXRhIDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6
bWF4KSgpKTsKKyAgICAgIGlmIChhbHBoYSA9PSAwIHx8IGJldGEgPT0gMCkgeworICAgICAgICBt
ZXRob2RfID0gREVHRU5FUkFURV9TTUFMTDsKKyAgICAgICAgeF8gPSAoYWxwaGEgPj0gYmV0YSkg
PyAxIDogMDsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgLy8gYV8gPSBtaW4oYmV0
YSwgYWxwaGEpLCBiXyA9IG1heChiZXRhLCBhbHBoYSkuCisgICAgICBpZiAoYmV0YSA8IGFscGhh
KSB7CisgICAgICAgIGludmVydGVkXyA9IHRydWU7CisgICAgICAgIGFfID0gYmV0YTsKKyAgICAg
ICAgYl8gPSBhbHBoYTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGludmVydGVkXyA9IGZhbHNl
OworICAgICAgICBhXyA9IGFscGhhOworICAgICAgICBiXyA9IGJldGE7CisgICAgICB9CisgICAg
ICBpZiAoYV8gPD0gMSAmJiBiXyA+PSBUaHJlc2hvbGRGb3JMYXJnZUEoKSkgeworICAgICAgICBt
ZXRob2RfID0gREVHRU5FUkFURV9TTUFMTDsKKyAgICAgICAgeF8gPSBpbnZlcnRlZF8gPyByZXN1
bHRfdHlwZSgxKSA6IHJlc3VsdF90eXBlKDApOworICAgICAgICByZXR1cm47CisgICAgICB9Cisg
ICAgICAvLyBGb3IgdGhyZXNob2xkIHZhbHVlcywgc2VlIGFsc286CisgICAgICAvLyBFdmFsdWF0
aW9uIG9mIEJldGEgR2VuZXJhdGlvbiBBbGdvcml0aG1zLCBZaW5nLUNoYW8gSHVuZywgZXQuIGFs
LgorICAgICAgLy8gRmVicnVhcnksIDIwMDkuCisgICAgICBpZiAoKGJfIDwgMS4wICYmIGFfICsg
Yl8gPD0gMS4yKSB8fCBhXyA8PSBUaHJlc2hvbGRGb3JTbWFsbEEoKSkgeworICAgICAgICAvLyBD
aG9vc2UgSm9laG5rIG92ZXIgQ2hlbmcgd2hlbiBpdCdzIGZhc3RlciBvciB3aGVuIENoZW5nIGVu
Y291bnRlcnMKKyAgICAgICAgLy8gbnVtZXJpY2FsIGlzc3Vlcy4KKyAgICAgICAgbWV0aG9kXyA9
IEpPRUhOSzsKKyAgICAgICAgYV8gPSByZXN1bHRfdHlwZSgxKSAvIGFscGhhXzsKKyAgICAgICAg
Yl8gPSByZXN1bHRfdHlwZSgxKSAvIGJldGFfOworICAgICAgICBpZiAoc3RkOjppc2luZihhXykg
fHwgc3RkOjppc2luZihiXykpIHsKKyAgICAgICAgICBtZXRob2RfID0gREVHRU5FUkFURV9TTUFM
TDsKKyAgICAgICAgICB4XyA9IGludmVydGVkXyA/IHJlc3VsdF90eXBlKDEpIDogcmVzdWx0X3R5
cGUoMCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgaWYgKGFf
ID49IFRocmVzaG9sZEZvckxhcmdlQSgpKSB7CisgICAgICAgIG1ldGhvZF8gPSBERUdFTkVSQVRF
X0xBUkdFOworICAgICAgICAvLyBOb3RlOiBvbiBQUEMgZm9yIGxvbmcgZG91YmxlLCBldmFsdWF0
aW5nCisgICAgICAgIC8vIGBzdGQ6Om51bWVyaWNfbGltaXRzOjptYXgoKSAvIFRocmVzaG9sZEZv
ckxhcmdlQWAgcmVzdWx0cyBpbiBOYU4uCisgICAgICAgIHJlc3VsdF90eXBlIHIgPSBhXyAvIGJf
OworICAgICAgICB4XyA9IChpbnZlcnRlZF8gPyByZXN1bHRfdHlwZSgxKSA6IHIpIC8gKDEgKyBy
KTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgeF8gPSBhXyArIGJfOworICAgICAg
bG9nX3hfID0gc3RkOjpsb2coeF8pOworICAgICAgaWYgKGFfIDw9IDEpIHsKKyAgICAgICAgbWV0
aG9kXyA9IENIRU5HX0JBOworICAgICAgICB5XyA9IHJlc3VsdF90eXBlKDEpIC8gYV87CisgICAg
ICAgIGdhbW1hXyA9IGFfICsgYV87CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIG1l
dGhvZF8gPSBDSEVOR19CQjsKKyAgICAgIHJlc3VsdF90eXBlIHIgPSAoYV8gLSAxKSAvIChiXyAt
IDEpOworICAgICAgeV8gPSBzdGQ6OnNxcnQoKDEgKyByKSAvIChiXyAqIHIgKiAyIC0gciArIDEp
KTsKKyAgICAgIGdhbW1hXyA9IGFfICsgcmVzdWx0X3R5cGUoMSkgLyB5XzsKKyAgICB9CisKKyAg
ICByZXN1bHRfdHlwZSBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIGFscGhhXzsgfQorICAgIHJlc3Vs
dF90eXBlIGJldGEoKSBjb25zdCB7IHJldHVybiBiZXRhXzsgfQorCisgICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7Cisg
ICAgICByZXR1cm4gYS5hbHBoYV8gPT0gYi5hbHBoYV8gJiYgYS5iZXRhXyA9PSBiLmJldGFfOwor
ICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcGFyYW1fdHlwZSYgYSwg
Y29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuICEoYSA9PSBiKTsKKyAgICB9CisK
KyAgIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIGJldGFfZGlzdHJpYnV0aW9uOworCisjaWZk
ZWYgQ09NUElMRVJfTVNWQworICAgIC8vIE1TVkMgZG9lcyBub3QgaGF2ZSBjb25zdGV4cHIgaW1w
bGVtZW50YXRpb25zIGZvciBzdGQ6OmxvZyBhbmQgc3RkOjpleHAKKyAgICAvLyBzbyB0aGV5IGFy
ZSBjb21wdXRlZCBhdCBydW50aW1lLgorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9MT0df
RVhQX0NPTlNURVhQUgorI2Vsc2UKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfTE9HX0VY
UF9DT05TVEVYUFIgY29uc3RleHByCisjZW5kaWYKKworICAgIC8vIFRoZSB0aHJlc2hvbGQgZm9y
IHdoZXRoZXIgc3RkOjpleHAoMS9hKSBpcyBmaW5pdGUuCisgICAgLy8gTm90ZSB0aGF0IHRoaXMg
dmFsdWUgaXMgcXVpdGUgbGFyZ2UsIGFuZCBhIHNtYWxsZXIgYV8gaXMgTk9UIGFibm9ybWFsLgor
ICAgIHN0YXRpYyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9MT0dfRVhQX0NPTlNURVhQUiByZXN1bHRf
dHlwZQorICAgIFRocmVzaG9sZEZvclNtYWxsQSgpIHsKKyAgICAgIHJldHVybiByZXN1bHRfdHlw
ZSgxKSAvCisgICAgICAgICAgICAgc3RkOjpsb2coKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0
X3R5cGU+OjptYXgpKCkpOworICAgIH0KKworICAgIC8vIFRoZSB0aHJlc2hvbGQgZm9yIHdoZXRo
ZXIgYSAqIHN0ZDo6bG9nKGEpIGlzIGZpbml0ZS4KKyAgICBzdGF0aWMgQUJTTF9SQU5ET01fSU5U
RVJOQUxfTE9HX0VYUF9DT05TVEVYUFIgcmVzdWx0X3R5cGUKKyAgICBUaHJlc2hvbGRGb3JMYXJn
ZUEoKSB7CisgICAgICByZXR1cm4gc3RkOjpleHAoCisgICAgICAgICAgc3RkOjpsb2coKHN0ZDo6
bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCkpIC0KKyAgICAgICAgICBzdGQ6Omxv
ZyhzdGQ6OmxvZygoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCkoKSkpIC0K
KyAgICAgICAgICBUaHJlc2hvbGRQYWRkaW5nKCkpOworICAgIH0KKworI3VuZGVmIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX0xPR19FWFBfQ09OU1RFWFBSCisKKyAgICAvLyBQYWQgdGhlIHRocmVzaG9s
ZCBmb3IgbGFyZ2UgQSBmb3IgbG9uZyBkb3VibGUgb24gUFBDLiBUaGlzIGlzIGRvbmUgdmlhIGEK
KyAgICAvLyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiBiZWxvdy4KKyAgICBzdGF0aWMgY29uc3Rl
eHByIHJlc3VsdF90eXBlIFRocmVzaG9sZFBhZGRpbmcoKSB7IHJldHVybiAwOyB9CisKKyAgICBl
bnVtIE1ldGhvZCB7CisgICAgICBKT0VITkssICAgIC8vIFVzZXMgYWxnb3JpdGhtIEpvZWhuawor
ICAgICAgQ0hFTkdfQkEsICAvLyBVc2VzIGFsZ29yaXRobSBCQSBpbiBDaGVuZworICAgICAgQ0hF
TkdfQkIsICAvLyBVc2VzIGFsZ29yaXRobSBCQiBpbiBDaGVuZworCisgICAgICAvLyBOb3RlOiBT
ZWUgYWxzbzoKKyAgICAgIC8vICAgSHVuZyBldCBhbC4gRXZhbHVhdGlvbiBvZiBiZXRhIGdlbmVy
YXRpb24gYWxnb3JpdGhtcy4gQ29tbXVuaWNhdGlvbnMKKyAgICAgIC8vICAgaW4gU3RhdGlzdGlj
cy1TaW11bGF0aW9uIGFuZCBDb21wdXRhdGlvbiAzOC40ICgyMDA5KTogNzUwLTc3MC4KKyAgICAg
IC8vIGVzcGVjaWFsbHk6CisgICAgICAvLyAgIFplY2huZXIsIEhlaW56LCBhbmQgRXJuc3QgU3Rh
ZGxvYmVyLiBHZW5lcmF0aW5nIGJldGEgdmFyaWF0ZXMgdmlhCisgICAgICAvLyAgIHBhdGNod29y
ayByZWplY3Rpb24uIENvbXB1dGluZyA1MC4xICgxOTkzKTogMS0xOC4KKworICAgICAgREVHRU5F
UkFURV9TTUFMTCwgIC8vIGFfIGlzIGFibm9ybWFsbHkgc21hbGwuCisgICAgICBERUdFTkVSQVRF
X0xBUkdFLCAgLy8gYV8gaXMgYWJub3JtYWxseSBsYXJnZS4KKyAgICB9OworCisgICAgcmVzdWx0
X3R5cGUgYWxwaGFfOworICAgIHJlc3VsdF90eXBlIGJldGFfOworCisgICAgcmVzdWx0X3R5cGUg
YV87ICAvLyB0aGUgc21hbGxlciBvZiB7YWxwaGEsIGJldGF9LCBvciAxLjAvYWxwaGFfIGluIEpP
RUhOSworICAgIHJlc3VsdF90eXBlIGJfOyAgLy8gdGhlIGxhcmdlciBvZiB7YWxwaGEsIGJldGF9
LCBvciAxLjAvYmV0YV8gaW4gSk9FSE5LCisgICAgcmVzdWx0X3R5cGUgeF87ICAvLyBhbHBoYSAr
IGJldGEsIG9yIHRoZSByZXN1bHQgaW4gZGVnZW5lcmF0ZSBjYXNlcworICAgIHJlc3VsdF90eXBl
IGxvZ194XzsgIC8vIGxvZyh4XykKKyAgICByZXN1bHRfdHlwZSB5XzsgICAgICAvLyAiYmV0YSIg
aW4gQ2hlbmcKKyAgICByZXN1bHRfdHlwZSBnYW1tYV87ICAvLyAiZ2FtbWEiIGluIENoZW5nCisK
KyAgICBNZXRob2QgbWV0aG9kXzsKKworICAgIC8vIFBsYWNpbmcgdGhpcyBsYXN0IGZvciBvcHRp
bWFsIGFsaWdubWVudC4KKyAgICAvLyBXaGV0aGVyIGFscGhhXyAhPSBhXywgaS5lLiB0cnVlIGlm
ZiBhbHBoYV8gPiBiZXRhXy4KKyAgICBib29sIGludmVydGVkXzsKKworICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxSZWFsVHlwZT46OnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgIkNsYXNzLXRlbXBsYXRlIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPD4gbXVzdCBiZSAi
CisgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyaXplZCB1c2luZyBhIGZsb2F0aW5nLXBvaW50
IHR5cGUuIik7CisgIH07CisKKyAgYmV0YV9kaXN0cmlidXRpb24oKSA6IGJldGFfZGlzdHJpYnV0
aW9uKDEpIHt9CisKKyAgZXhwbGljaXQgYmV0YV9kaXN0cmlidXRpb24ocmVzdWx0X3R5cGUgYWxw
aGEsIHJlc3VsdF90eXBlIGJldGEgPSAxKQorICAgICAgOiBwYXJhbV8oYWxwaGEsIGJldGEpIHt9
CisKKyAgZXhwbGljaXQgYmV0YV9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgcCkgOiBw
YXJhbV8ocCkge30KKworICB2b2lkIHJlc2V0KCkge30KKworICAvLyBHZW5lcmF0aW5nIGZ1bmN0
aW9ucworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3Io
KShVUkJHJiBnKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHJldHVybiAo
KnRoaXMpKGcsIHBhcmFtXyk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAg
cmVzdWx0X3R5cGUgb3BlcmF0b3IoKShVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJl
bmNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBwKTsKKwor
ICBwYXJhbV90eXBlIHBhcmFtKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQgcGFy
YW0oY29uc3QgcGFyYW1fdHlwZSYgcCkgeyBwYXJhbV8gPSBwOyB9CisKKyAgcmVzdWx0X3R5cGUo
bWluKSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgcmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsg
cmV0dXJuIDE7IH0KKworICByZXN1bHRfdHlwZSBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFt
Xy5hbHBoYSgpOyB9CisgIHJlc3VsdF90eXBlIGJldGEoKSBjb25zdCB7IHJldHVybiBwYXJhbV8u
YmV0YSgpOyB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBiZXRhX2Rpc3RyaWJ1
dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiZXRhX2Rpc3RyaWJ1dGlv
biYgYikgeworICAgIHJldHVybiBhLnBhcmFtXyA9PSBiLnBhcmFtXzsKKyAgfQorICBmcmllbmQg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGJldGFfZGlzdHJpYnV0aW9uJiBhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGJldGFfZGlzdHJpYnV0aW9uJiBiKSB7CisgICAgcmV0dXJuIGEu
cGFyYW1fICE9IGIucGFyYW1fOworICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgQWxnb3JpdGhtSm9laG5rKFVSQkcmIGcsICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgcGFyYW1fdHlwZSYgcCk7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3Vs
dF90eXBlIEFsZ29yaXRobUNoZW5nKFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVu
Y2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBwKTsK
KworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgRGVnZW5lcmF0ZUNh
c2UoVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIHApIHsKKyAgICBpZiAocC5tZXRob2Rf
ID09IHBhcmFtX3R5cGU6OkRFR0VORVJBVEVfU01BTEwgJiYgcC5hbHBoYV8gPT0gcC5iZXRhXykg
eworICAgICAgLy8gUmV0dXJucyAwIG9yIDEgd2l0aCBlcXVhbCBwcm9iYWJpbGl0eS4KKyAgICAg
IHJhbmRvbV9pbnRlcm5hbDo6RmFzdFVuaWZvcm1CaXRzPHVpbnQ4X3Q+IGZhc3RfdTg7CisgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KChmYXN0X3U4KGcpICYgMHgxMCkgIT0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7ICAvLyBwaWNrIGFueSBz
aW5nbGUgYml0LgorICAgIH0KKyAgICByZXR1cm4gcC54XzsKKyAgfQorCisgIHBhcmFtX3R5cGUg
cGFyYW1fOworICByYW5kb21faW50ZXJuYWw6OkZhc3RVbmlmb3JtQml0czx1aW50NjRfdD4gZmFz
dF91NjRfOworfTsKKworI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX1BQ
QzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IFwKKyAgICBkZWZpbmVkKF9fcHBjX18p
IHx8IGRlZmluZWQoX19QUENfXykKKy8vIFBQQyBuZWVkcyBhIG1vcmUgc3RyaW5nZW50IGJvdW5k
YXJ5IGZvciBsb25nIGRvdWJsZS4KK3RlbXBsYXRlIDw+Citjb25zdGV4cHIgbG9uZyBkb3VibGUK
K2JldGFfZGlzdHJpYnV0aW9uPGxvbmcgZG91YmxlPjo6cGFyYW1fdHlwZTo6VGhyZXNob2xkUGFk
ZGluZygpIHsKKyAgcmV0dXJuIDEwOworfQorI2VuZGlmCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBS
ZWFsVHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordHlwZW5hbWUgYmV0YV9kaXN0cmli
dXRpb248UmVhbFR5cGU+OjpyZXN1bHRfdHlwZQorYmV0YV9kaXN0cmlidXRpb248UmVhbFR5cGU+
OjpBbGdvcml0aG1Kb2VobmsoCisgICAgVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVy
ZW5jZXMpCisgICAgY29uc3QgcGFyYW1fdHlwZSYgcCkgeworICAvLyBCYXNlZCBvbiBKb2Vobmss
IE0uIEQuIEVyemV1Z3VuZyB2b24gYmV0YXZlcnRlaWx0ZW4gdW5kIGdhbW1hdmVydGVpbHRlbgor
ICAvLyBadWZhbGxzemFobGVuLiBNZXRyaWthIDguMSAoMTk2NCk6IDUtMTUuCisgIC8vIFRoaXMg
bWV0aG9kIGlzIGRlc2NyaWJlZCBpbiBLbnV0aCwgVm9sIDIgKFRoaXJkIEVkaXRpb24pLCBwcCAx
MzQuCisgIHVzaW5nIFJhbmRVNjRUb1JlYWwgPSB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OlJh
bmRVNjRUb1JlYWw8cmVzdWx0X3R5cGU+OworICB1c2luZyByYW5kb21faW50ZXJuYWw6OlBvc2l0
aXZlVmFsdWVUOworICByZXN1bHRfdHlwZSB1LCB2LCB4LCB5LCB6OworICBmb3IgKDs7KSB7Cisg
ICAgdSA9IFJhbmRVNjRUb1JlYWw6OnRlbXBsYXRlIFZhbHVlPFBvc2l0aXZlVmFsdWVULCBmYWxz
ZT4oZmFzdF91NjRfKGcpKTsKKyAgICB2ID0gUmFuZFU2NFRvUmVhbDo6dGVtcGxhdGUgVmFsdWU8
UG9zaXRpdmVWYWx1ZVQsIGZhbHNlPihmYXN0X3U2NF8oZykpOworCisgICAgLy8gRGlyZWN0IG1l
dGhvZC4gc3RkOjpwb3cgaXMgc2xvdyBmb3IgZmxvYXQsIHNvIHJlbHkgb24gdGhlIG9wdGltaXpl
ciB0bworICAgIC8vIHJlbW92ZSB0aGUgc3RkOjpwb3coKSBwYXRoIGZvciB0aGF0IGNhc2UuCisg
ICAgaWYgKCFzdGQ6OmlzX3NhbWU8ZmxvYXQsIHJlc3VsdF90eXBlPjo6dmFsdWUpIHsKKyAgICAg
IHggPSBzdGQ6OnBvdyh1LCBwLmFfKTsKKyAgICAgIHkgPSBzdGQ6OnBvdyh2LCBwLmJfKTsKKyAg
ICAgIHogPSB4ICsgeTsKKyAgICAgIGlmICh6ID4gMSkgeworICAgICAgICAvLyBSZWplY3QgaWYg
YW5kIG9ubHkgaWYgYHggKyB5ID4gMS4wYAorICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAg
ICAgIGlmICh6ID4gMCkgeworICAgICAgICAvLyBXaGVuIGJvdGggYWxwaGEgYW5kIGJldGEgYXJl
IHNtYWxsLCB4IGFuZCB5IGFyZSBib3RoIGNsb3NlIHRvIDAsIHNvCisgICAgICAgIC8vIGRpdmlk
ZSBieSAoeCt5KSBkaXJlY3RseSBtYXkgcmVzdWx0IGluIG5hbi4KKyAgICAgICAgcmV0dXJuIHgg
LyB6OworICAgICAgfQorICAgIH0KKworICAgIC8vIExvZyB0cmFuc2Zvcm0uCisgICAgLy8geCA9
IGxvZyggcG93KHUsIHAuYV8pICksIHkgPSBsb2coIHBvdyh2LCBwLmJfKSApCisgICAgLy8gc2lu
Y2UgdSwgdiA8PSAxLjAsICB4LCB5IDwgMC4KKyAgICB4ID0gc3RkOjpsb2codSkgKiBwLmFfOwor
ICAgIHkgPSBzdGQ6OmxvZyh2KSAqIHAuYl87CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpIHx8
ICFzdGQ6OmlzZmluaXRlKHkpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgLy8geiA9
IGxvZyggcG93KHUsIGEpICsgcG93KHYsIGIpICkKKyAgICB6ID0geCA+IHkgPyAoeCArIHN0ZDo6
bG9nKDEgKyBzdGQ6OmV4cCh5IC0geCkpKQorICAgICAgICAgICAgICA6ICh5ICsgc3RkOjpsb2co
MSArIHN0ZDo6ZXhwKHggLSB5KSkpOworICAgIC8vIFJlamVjdCBpZmYgbG9nKHgreSkgPiAwLgor
ICAgIGlmICh6ID4gMCkgeworICAgICAgY29udGludWU7CisgICAgfQorICAgIHJldHVybiBzdGQ6
OmV4cCh4IC0geik7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlPgordGVt
cGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSBiZXRhX2Rpc3RyaWJ1dGlvbjxSZWFsVHlw
ZT46OnJlc3VsdF90eXBlCitiZXRhX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46OkFsZ29yaXRobUNo
ZW5nKAorICAgIFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNv
bnN0IHBhcmFtX3R5cGUmIHApIHsKKyAgLy8gQmFzZWQgb24gQ2hlbmcsIFJ1c3NlbGwgQ0guIEdl
bmVyYXRpbmcgYmV0YSB2YXJpYXRlcyB3aXRoIG5vbmludGVncmFsCisgIC8vIHNoYXBlIHBhcmFt
ZXRlcnMuIENvbW11bmljYXRpb25zIG9mIHRoZSBBQ00gMjEuNCAoMTk3OCk6IDMxNy0zMjIuCisg
IC8vIChodHRwczovL2RsLmFjbS5vcmcvY2l0YXRpb24uY2ZtP2lkPTM1OTQ4MikuCisgIHVzaW5n
IFJhbmRVNjRUb1JlYWwgPSB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OlJhbmRVNjRUb1JlYWw8
cmVzdWx0X3R5cGU+OworICB1c2luZyByYW5kb21faW50ZXJuYWw6OlBvc2l0aXZlVmFsdWVUOwor
CisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUga0xvZ0ZvdXIgPQorICAgICAgcmVzdWx0
X3R5cGUoMS4zODYyOTQzNjExMTk4OTA2MTg4MzQ0NjQyNDI5MTYzNTMxMzYxKTsgIC8vIGxvZyg0
KQorICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlIGtTID0KKyAgICAgIHJlc3VsdF90eXBl
KDIuNjA5NDM3OTEyNDM0MTAwMzc0NjAwNzU5MzMzMjI2MTg3Nik7ICAvLyAxK2xvZyg1KQorCisg
IGNvbnN0IGJvb2wgdXNlX2FsZ29yaXRobV9iYSA9IChwLm1ldGhvZF8gPT0gcGFyYW1fdHlwZTo6
Q0hFTkdfQkEpOworICByZXN1bHRfdHlwZSB1MSwgdTIsIHYsIHcsIHosIHIsIHMsIHQsIGJ3X2lu
diwgbGhzOworICBmb3IgKDs7KSB7CisgICAgdTEgPSBSYW5kVTY0VG9SZWFsOjp0ZW1wbGF0ZSBW
YWx1ZTxQb3NpdGl2ZVZhbHVlVCwgZmFsc2U+KGZhc3RfdTY0XyhnKSk7CisgICAgdTIgPSBSYW5k
VTY0VG9SZWFsOjp0ZW1wbGF0ZSBWYWx1ZTxQb3NpdGl2ZVZhbHVlVCwgZmFsc2U+KGZhc3RfdTY0
XyhnKSk7CisgICAgdiA9IHAueV8gKiBzdGQ6OmxvZyh1MSAvICgxIC0gdTEpKTsKKyAgICB3ID0g
cC5hXyAqIHN0ZDo6ZXhwKHYpOworICAgIGJ3X2ludiA9IHJlc3VsdF90eXBlKDEpIC8gKHAuYl8g
KyB3KTsKKyAgICByID0gcC5nYW1tYV8gKiB2IC0ga0xvZ0ZvdXI7CisgICAgcyA9IHAuYV8gKyBy
IC0gdzsKKyAgICB6ID0gdTEgKiB1MSAqIHUyOworICAgIGlmICghdXNlX2FsZ29yaXRobV9iYSAm
JiBzICsga1MgPj0gNSAqIHopIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICB0ID0gc3RkOjps
b2coeik7CisgICAgaWYgKCF1c2VfYWxnb3JpdGhtX2JhICYmIHMgPj0gdCkgeworICAgICAgYnJl
YWs7CisgICAgfQorICAgIGxocyA9IHAueF8gKiAocC5sb2dfeF8gKyBzdGQ6OmxvZyhid19pbnYp
KSArIHI7CisgICAgaWYgKGxocyA+PSB0KSB7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAg
cmV0dXJuIHAuaW52ZXJ0ZWRfID8gKDEgLSB3ICogYndfaW52KSA6IHcgKiBid19pbnY7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgor
dHlwZW5hbWUgYmV0YV9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpyZXN1bHRfdHlwZQorYmV0YV9k
aXN0cmlidXRpb248UmVhbFR5cGU+OjpvcGVyYXRvcigpKFVSQkcmIGcsICAvLyBOT0xJTlQocnVu
dGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHBhcmFtX3R5cGUmIHApIHsKKyAgc3dpdGNoIChwLm1ldGhvZF8pIHsKKyAgICBjYXNl
IHBhcmFtX3R5cGU6OkpPRUhOSzoKKyAgICAgIHJldHVybiBBbGdvcml0aG1Kb2VobmsoZywgcCk7
CisgICAgY2FzZSBwYXJhbV90eXBlOjpDSEVOR19CQToKKyAgICAgIEFCU0xfRkFMTFRIUk9VR0hf
SU5URU5ERUQ7CisgICAgY2FzZSBwYXJhbV90eXBlOjpDSEVOR19CQjoKKyAgICAgIHJldHVybiBB
bGdvcml0aG1DaGVuZyhnLCBwKTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIERlZ2VuZXJh
dGVDYXNlKGcsIHApOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBSZWFsVHlwZT4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwg
VHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0
cz4mIG9zLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBjb25zdCBiZXRhX2Rp
c3RyaWJ1dGlvbjxSZWFsVHlwZT4mIHgpIHsKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5h
bDo6bWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKG9zKTsKKyAgb3MucHJlY2lzaW9uKHJhbmRvbV9p
bnRlcm5hbDo6c3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8UmVhbFR5cGU+OjprUHJlY2lzaW9uKTsK
KyAgb3MgPDwgeC5hbHBoYSgpIDw8IG9zLmZpbGwoKSA8PCB4LmJldGEoKTsKKyAgcmV0dXJuIG9z
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgUmVhbFR5cGU+CitzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9y
Pj4oCisgICAgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBpcywgIC8vIE5PTElO
VChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgYmV0YV9kaXN0cmlidXRpb248UmVhbFR5cGU+JiB4
KSB7ICAgICAgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgIHVzaW5nIHJlc3VsdF90
eXBlID0gdHlwZW5hbWUgYmV0YV9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpyZXN1bHRfdHlwZTsK
KyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1lIGJldGFfZGlzdHJpYnV0aW9uPFJlYWxUeXBl
Pjo6cGFyYW1fdHlwZTsKKyAgcmVzdWx0X3R5cGUgYWxwaGEsIGJldGE7CisKKyAgYXV0byBzYXZl
ciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9pc3RyZWFtX3N0YXRlX3NhdmVyKGlzKTsKKyAgYWxw
aGEgPSByYW5kb21faW50ZXJuYWw6OnJlYWRfZmxvYXRpbmdfcG9pbnQ8cmVzdWx0X3R5cGU+KGlz
KTsKKyAgaWYgKGlzLmZhaWwoKSkgcmV0dXJuIGlzOworICBiZXRhID0gcmFuZG9tX2ludGVybmFs
OjpyZWFkX2Zsb2F0aW5nX3BvaW50PHJlc3VsdF90eXBlPihpcyk7CisgIGlmICghaXMuZmFpbCgp
KSB7CisgICAgeC5wYXJhbShwYXJhbV90eXBlKGFscGhhLCBiZXRhKSk7CisgIH0KKyAgcmV0dXJu
IGlzOworfQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9N
X0JFVEFfRElTVFJJQlVUSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmV0YV9kaXN0
cmlidXRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9iZXRhX2Rpc3RyaWJ1dGlvbl90ZXN0LmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk2NmFkMDhiNWM5MTUxNDZiNWZkYjkwNjAwMzZiZGY2MzVjNGI2MjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmV0YV9kaXN0cmlidXRpb25fdGVzdC5jYwpA
QCAtMCwwICsxLDYxNCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9iZXRhX2Rpc3RyaWJ1dGlvbi5oIgorCisjaW5jbHVk
ZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNp
bmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3N0cmVhbT4K
KyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFu
ZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3Mvc3RyX2Zvcm1hdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfcmVwbGFj
ZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpcC5oIgorCituYW1lc3BhY2UgeworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK2NsYXNzIEJldGFEaXN0cmlidXRpb25JbnRlcmZh
Y2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKwordXNpbmcgUmVhbFR5cGVzID0g
Ojp0ZXN0aW5nOjpUeXBlczxmbG9hdCwgZG91YmxlLCBsb25nIGRvdWJsZT47CitUWVBFRF9URVNU
X0NBU0UoQmV0YURpc3RyaWJ1dGlvbkludGVyZmFjZVRlc3QsIFJlYWxUeXBlcyk7CisKK1RZUEVE
X1RFU1QoQmV0YURpc3RyaWJ1dGlvbkludGVyZmFjZVRlc3QsIFNlcmlhbGl6ZVRlc3QpIHsKKyAg
Ly8gVGhlIHRocmVzaG9sZCBmb3Igd2hldGhlciBzdGQ6OmV4cCgxL2EpIGlzIGZpbml0ZS4KKyAg
Y29uc3QgVHlwZVBhcmFtIGtTbWFsbEEgPQorICAgICAgMS4wZiAvIHN0ZDo6bG9nKChzdGQ6Om51
bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCkoKSk7CisgIC8vIFRoZSB0aHJlc2hvbGQgZm9y
IHdoZXRoZXIgYSAqIHN0ZDo6bG9nKGEpIGlzIGZpbml0ZS4KKyAgY29uc3QgVHlwZVBhcmFtIGtM
YXJnZUEgPQorICAgICAgc3RkOjpleHAoc3RkOjpsb2coKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlw
ZVBhcmFtPjo6bWF4KSgpKSAtCisgICAgICAgICAgICAgICBzdGQ6OmxvZyhzdGQ6OmxvZygoc3Rk
OjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgpKCkpKSk7CisgIGNvbnN0IFR5cGVQYXJh
bSBrTGFyZ2VBUFBDID0gc3RkOjpleHAoCisgICAgICBzdGQ6OmxvZygoc3RkOjpudW1lcmljX2xp
bWl0czxUeXBlUGFyYW0+OjptYXgpKCkpIC0KKyAgICAgIHN0ZDo6bG9nKHN0ZDo6bG9nKChzdGQ6
Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCkoKSkpIC0gMTAuMGYpOworICB1c2luZyBw
YXJhbV90eXBlID0gdHlwZW5hbWUgYWJzbDo6YmV0YV9kaXN0cmlidXRpb248VHlwZVBhcmFtPjo6
cGFyYW1fdHlwZTsKKworICBjb25zdGV4cHIgaW50IGtDb3VudCA9IDEwMDA7CisgIGFic2w6Oklu
c2VjdXJlQml0R2VuIGdlbjsKKyAgY29uc3QgVHlwZVBhcmFtIGtWYWx1ZXNbXSA9IHsKKyAgICAg
IFR5cGVQYXJhbSgxZS0yMCksIFR5cGVQYXJhbSgxZS0xMiksIFR5cGVQYXJhbSgxZS04KSwgVHlw
ZVBhcmFtKDFlLTQpLAorICAgICAgVHlwZVBhcmFtKDFlLTMpLCBUeXBlUGFyYW0oMC4xKSwgVHlw
ZVBhcmFtKDAuMjUpLAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoVHlwZVBhcmFtKDAuNSksIFR5cGVQ
YXJhbSgwKSksICAvLyAwLjUgLSBlcHNpbG9uCisgICAgICBzdGQ6Om5leHRhZnRlcihUeXBlUGFy
YW0oMC41KSwgVHlwZVBhcmFtKDEpKSwgIC8vIDAuNSArIGVwc2lsb24KKyAgICAgIFR5cGVQYXJh
bSgwLjUpLCBUeXBlUGFyYW0oMS4wKSwgICAgICAgICAgICAgICAgLy8KKyAgICAgIHN0ZDo6bmV4
dGFmdGVyKFR5cGVQYXJhbSgxKSwgVHlwZVBhcmFtKDApKSwgICAgLy8gMSAtIGVwc2lsb24KKyAg
ICAgIHN0ZDo6bmV4dGFmdGVyKFR5cGVQYXJhbSgxKSwgVHlwZVBhcmFtKDIpKSwgICAgLy8gMSAr
IGVwc2lsb24KKyAgICAgIFR5cGVQYXJhbSgxMi41KSwgVHlwZVBhcmFtKDFlMiksIFR5cGVQYXJh
bSgxZTgpLCBUeXBlUGFyYW0oMWUxMiksCisgICAgICBUeXBlUGFyYW0oMWUyMCksICAgICAgICAg
ICAgICAgICAgICAgICAgLy8KKyAgICAgIGtTbWFsbEEsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLworICAgICAgc3RkOjpuZXh0YWZ0ZXIoa1NtYWxsQSwgVHlwZVBhcmFtKDApKSwg
IC8vCisgICAgICBzdGQ6Om5leHRhZnRlcihrU21hbGxBLCBUeXBlUGFyYW0oMSkpLCAgLy8KKyAg
ICAgIGtMYXJnZUEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgc3Rk
OjpuZXh0YWZ0ZXIoa0xhcmdlQSwgVHlwZVBhcmFtKDApKSwgIC8vCisgICAgICBzdGQ6Om5leHRh
ZnRlcihrTGFyZ2VBLCBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpKSwKKyAg
ICAgIGtMYXJnZUFQUEMsICAvLworICAgICAgc3RkOjpuZXh0YWZ0ZXIoa0xhcmdlQVBQQywgVHlw
ZVBhcmFtKDApKSwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKGtMYXJnZUFQUEMsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8VHlwZVBhcmFtPjo6bWF4KCkpLAorICAgICAgLy8gQm91bmRhcnkgY2FzZXMuCisg
ICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpLAorICAgICAgc3RkOjpu
dW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjplcHNpbG9uKCksCisgICAgICBzdGQ6Om5leHRhZnRl
cihzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1pbigpLAorICAgICAgICAgICAgICAg
ICAgICAgVHlwZVBhcmFtKDEpKSwgICAgICAgICAgICAgICAgICAvLyBtaW4gKyBlcHNpbG9uCisg
ICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1pbigpLCAgICAgICAgIC8vIHNt
YWxsZXN0IG5vcm1hbAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjpkZW5v
cm1fbWluKCksICAvLyBzbWFsbGVzdCBkZW5vcm0KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
VHlwZVBhcmFtPjo6bWluKCkgLyAyLCAgICAgLy8gZGVub3JtCisgICAgICBzdGQ6Om5leHRhZnRl
cihzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1pbigpLAorICAgICAgICAgICAgICAg
ICAgICAgVHlwZVBhcmFtKDApKSwgIC8vIGRlbm9ybV9tYXgKKyAgfTsKKyAgZm9yIChUeXBlUGFy
YW0gYWxwaGEgOiBrVmFsdWVzKSB7CisgICAgZm9yIChUeXBlUGFyYW0gYmV0YSA6IGtWYWx1ZXMp
IHsKKyAgICAgIEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAgICAgIElORk8sIGFic2w6OlN0ckZv
cm1hdCgiU21va2UgdGVzdCBmb3IgQmV0YSglZiwgJWYpIiwgYWxwaGEsIGJldGEpKTsKKworICAg
ICAgcGFyYW1fdHlwZSBwYXJhbShhbHBoYSwgYmV0YSk7CisgICAgICBhYnNsOjpiZXRhX2Rpc3Ry
aWJ1dGlvbjxUeXBlUGFyYW0+IGJlZm9yZShhbHBoYSwgYmV0YSk7CisgICAgICBFWFBFQ1RfRVEo
YmVmb3JlLmFscGhhKCksIHBhcmFtLmFscGhhKCkpOworICAgICAgRVhQRUNUX0VRKGJlZm9yZS5i
ZXRhKCksIHBhcmFtLmJldGEoKSk7CisKKyAgICAgIHsKKyAgICAgICAgYWJzbDo6YmV0YV9kaXN0
cmlidXRpb248VHlwZVBhcmFtPiB2aWFfcGFyYW0ocGFyYW0pOworICAgICAgICBFWFBFQ1RfRVEo
dmlhX3BhcmFtLCBiZWZvcmUpOworICAgICAgICBFWFBFQ1RfRVEodmlhX3BhcmFtLnBhcmFtKCks
IGJlZm9yZS5wYXJhbSgpKTsKKyAgICAgIH0KKworICAgICAgLy8gU21va2UgdGVzdC4KKyAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwga0NvdW50OyArK2kpIHsKKyAgICAgICAgYXV0byBzYW1wbGUg
PSBiZWZvcmUoZ2VuKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RkOjppc2Zpbml0ZShzYW1wbGUp
KTsKKyAgICAgICAgRVhQRUNUX0dFKHNhbXBsZSwgYmVmb3JlLm1pbigpKTsKKyAgICAgICAgRVhQ
RUNUX0xFKHNhbXBsZSwgYmVmb3JlLm1heCgpKTsKKyAgICAgIH0KKworICAgICAgLy8gVmFsaWRh
dGUgc3RyZWFtIHNlcmlhbGl6YXRpb24uCisgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAg
ICAgIHNzIDw8IGJlZm9yZTsKKyAgICAgIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPFR5cGVQYXJh
bT4gYWZ0ZXIoMy44ZiwgMS40M2YpOworICAgICAgRVhQRUNUX05FKGJlZm9yZS5hbHBoYSgpLCBh
ZnRlci5hbHBoYSgpKTsKKyAgICAgIEVYUEVDVF9ORShiZWZvcmUuYmV0YSgpLCBhZnRlci5iZXRh
KCkpOworICAgICAgRVhQRUNUX05FKGJlZm9yZS5wYXJhbSgpLCBhZnRlci5wYXJhbSgpKTsKKyAg
ICAgIEVYUEVDVF9ORShiZWZvcmUsIGFmdGVyKTsKKworICAgICAgc3MgPj4gYWZ0ZXI7CisKKyNp
ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVk
KF9fcG93ZXJwY19fKSB8fCBcCisgICAgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBD
X18pCisgICAgICBpZiAoc3RkOjppc19zYW1lPFR5cGVQYXJhbSwgbG9uZyBkb3VibGU+Ojp2YWx1
ZSkgeworICAgICAgICAvLyBSb3VuZHRyaXBwaW5nIGZsb2F0aW5nIHBvaW50IHZhbHVlcyByZXF1
aXJlcyBzdWZmaWNpZW50IHByZWNpc2lvbgorICAgICAgICAvLyB0byByZWNvbnN0cnVjdCB0aGUg
ZXhhY3QgdmFsdWUuIEl0IHR1cm5zIG91dCB0aGF0IGxvbmcgZG91YmxlCisgICAgICAgIC8vIGhh
cyBzb21lIGVycm9ycyBkb2luZyB0aGlzIG9uIHBwYy4KKyAgICAgICAgaWYgKGFscGhhIDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkgJiYKKyAgICAgICAgICAgIGFscGhhID49
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCkpIHsKKyAgICAgICAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8ZG91YmxlPihiZWZvcmUuYWxwaGEoKSksCisgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oYWZ0ZXIuYWxwaGEoKSkpCisgICAgICAgICAgICAg
IDw8IHNzLnN0cigpOworICAgICAgICB9CisgICAgICAgIGlmIChiZXRhIDw9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6bWF4KCkgJiYKKyAgICAgICAgICAgIGJldGEgPj0gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSkgeworICAgICAgICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxkb3VibGU+KGJlZm9yZS5iZXRhKCkpLAorICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxkb3VibGU+KGFmdGVyLmJldGEoKSkpCisgICAgICAgICAgICAgIDw8IHNzLnN0cigp
OworICAgICAgICB9CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorI2VuZGlmCisKKyAgICAg
IEVYUEVDVF9FUShiZWZvcmUuYWxwaGEoKSwgYWZ0ZXIuYWxwaGEoKSk7CisgICAgICBFWFBFQ1Rf
RVEoYmVmb3JlLmJldGEoKSwgYWZ0ZXIuYmV0YSgpKTsKKyAgICAgIEVYUEVDVF9FUShiZWZvcmUs
IGFmdGVyKSAgICAgICAgICAgLy8KKyAgICAgICAgICA8PCBzcy5zdHIoKSA8PCAiICIgICAgICAg
ICAgICAgLy8KKyAgICAgICAgICA8PCAoc3MuZ29vZCgpID8gImdvb2QgIiA6ICIiKSAgLy8KKyAg
ICAgICAgICA8PCAoc3MuYmFkKCkgPyAiYmFkICIgOiAiIikgICAgLy8KKyAgICAgICAgICA8PCAo
c3MuZW9mKCkgPyAiZW9mICIgOiAiIikgICAgLy8KKyAgICAgICAgICA8PCAoc3MuZmFpbCgpID8g
ImZhaWwgIiA6ICIiKTsKKyAgICB9CisgIH0KK30KKworVFlQRURfVEVTVChCZXRhRGlzdHJpYnV0
aW9uSW50ZXJmYWNlVGVzdCwgRGVnZW5lcmF0ZUNhc2VzKSB7CisgIC8vIEV4dHJlbWUgY2FzZXMg
d2hlbiB0aGUgcGFyYW1zIGFyZSBhYm5vcm1hbC4KKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2Vu
OworICBjb25zdGV4cHIgaW50IGtDb3VudCA9IDEwMDA7CisgIGNvbnN0IFR5cGVQYXJhbSBrU21h
bGxWYWx1ZXNbXSA9IHsKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWlu
KCksCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46OmRlbm9ybV9taW4oKSwK
KyAgICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWlu
KCksCisgICAgICAgICAgICAgICAgICAgICBUeXBlUGFyYW0oMCkpLCAgLy8gZGVub3JtX21heAor
ICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjplcHNpbG9uKCksCisgIH07Cisg
IGNvbnN0IFR5cGVQYXJhbSBrTGFyZ2VWYWx1ZXNbXSA9IHsKKyAgICAgIHN0ZDo6bnVtZXJpY19s
aW1pdHM8VHlwZVBhcmFtPjo6bWF4KCkgKiBzdGF0aWNfY2FzdDxUeXBlUGFyYW0+KDAuOTk5OSks
CisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpIC0gMSwKKyAgICAg
IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWF4KCksCisgIH07CisgIHsKKyAgICAv
LyBTbWFsbCBhbHBoYSBhbmQgYmV0YS4KKyAgICAvLyBVc2VmdWwgV29sZnJhbUFscGhhIHBsb3Rz
OgorICAgIC8vICAgKiBwbG90IEludmVyc2VCZXRhUmVndWxhcml6ZWRbeCwgMC4wMDAxLCAwLjAw
MDFdIGZyb20gMC40OTUgdG8gMC41MDUKKyAgICAvLyAgICogQmV0YVsxLjAsIDAuMDAwMDAwMSwg
MC4wMDAwMDAxXQorICAgIC8vICAgKiBCZXRhWzAuOTk5OSwgMC4wMDAwMDAxLCAwLjAwMDAwMDFd
CisgICAgZm9yIChUeXBlUGFyYW0gYWxwaGEgOiBrU21hbGxWYWx1ZXMpIHsKKyAgICAgIGZvciAo
VHlwZVBhcmFtIGJldGEgOiBrU21hbGxWYWx1ZXMpIHsKKyAgICAgICAgaW50IHplcm9zID0gMDsK
KyAgICAgICAgaW50IG9uZXMgPSAwOworICAgICAgICBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxU
eXBlUGFyYW0+IGQoYWxwaGEsIGJldGEpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtD
b3VudDsgKytpKSB7CisgICAgICAgICAgVHlwZVBhcmFtIHggPSBkKGdlbik7CisgICAgICAgICAg
aWYgKHggPT0gMC4wKSB7CisgICAgICAgICAgICB6ZXJvcysrOworICAgICAgICAgIH0gZWxzZSBp
ZiAoeCA9PSAxLjApIHsKKyAgICAgICAgICAgIG9uZXMrKzsKKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgRVhQRUNUX0VRKG9uZXMgKyB6ZXJvcywga0NvdW50KTsKKyAgICAgICAgaWYg
KGFscGhhID09IGJldGEpIHsKKyAgICAgICAgICBFWFBFQ1RfTkUob25lcywgMCk7CisgICAgICAg
ICAgRVhQRUNUX05FKHplcm9zLCAwKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQor
ICB7CisgICAgLy8gU21hbGwgYWxwaGEsIGxhcmdlIGJldGEuCisgICAgLy8gVXNlZnVsIFdvbGZy
YW1BbHBoYSBwbG90czoKKyAgICAvLyAgICogcGxvdCBJbnZlcnNlQmV0YVJlZ3VsYXJpemVkW3gs
IDAuMDAwMSwgMTAwMDBdIGZyb20gMC45OTUgdG8gMQorICAgIC8vICAgKiBCZXRhWzAsIDAuMDAw
MDAwMSwgMTAwMDAwMF0KKyAgICAvLyAgICogQmV0YVswLjAwMSwgMC4wMDAwMDAxLCAxMDAwMDAw
XQorICAgIC8vICAgKiBCZXRhWzEsIDAuMDAwMDAwMSwgMTAwMDAwMF0KKyAgICBmb3IgKFR5cGVQ
YXJhbSBhbHBoYSA6IGtTbWFsbFZhbHVlcykgeworICAgICAgZm9yIChUeXBlUGFyYW0gYmV0YSA6
IGtMYXJnZVZhbHVlcykgeworICAgICAgICBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxUeXBlUGFy
YW0+IGQoYWxwaGEsIGJldGEpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtDb3VudDsg
KytpKSB7CisgICAgICAgICAgRVhQRUNUX0VRKGQoZ2VuKSwgMC4wKTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0KKyAgfQorICB7CisgICAgLy8gTGFyZ2UgYWxwaGEsIHNtYWxsIGJldGEuCisg
ICAgLy8gVXNlZnVsIFdvbGZyYW1BbHBoYSBwbG90czoKKyAgICAvLyAgICogcGxvdCBJbnZlcnNl
QmV0YVJlZ3VsYXJpemVkW3gsIDEwMDAwLCAwLjAwMDFdIGZyb20gMCB0byAwLjAwMQorICAgIC8v
ICAgKiBCZXRhWzAuOTksIDEwMDAwMDAsIDAuMDAwMDAwMV0KKyAgICAvLyAgICogQmV0YVsxLCAx
MDAwMDAwLCAwLjAwMDAwMDFdCisgICAgZm9yIChUeXBlUGFyYW0gYWxwaGEgOiBrTGFyZ2VWYWx1
ZXMpIHsKKyAgICAgIGZvciAoVHlwZVBhcmFtIGJldGEgOiBrU21hbGxWYWx1ZXMpIHsKKyAgICAg
ICAgYWJzbDo6YmV0YV9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBkKGFscGhhLCBiZXRhKTsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQ291bnQ7ICsraSkgeworICAgICAgICAgIEVYUEVD
VF9FUShkKGdlbiksIDEuMCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKyAgewor
ICAgIC8vIExhcmdlIGFscGhhIGFuZCBiZXRhLgorICAgIGFic2w6OmJldGFfZGlzdHJpYnV0aW9u
PFR5cGVQYXJhbT4gZChzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRz
PFR5cGVQYXJhbT46Om1heCgpKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGtDb3VudDsgKytp
KSB7CisgICAgICBFWFBFQ1RfRVEoZChnZW4pLCAwLjUpOworICAgIH0KKyAgfQorICB7CisgICAg
Ly8gTGFyZ2UgYWxwaGEgYW5kIGJldGEgYnV0IHVuZXF1YWwuCisgICAgYWJzbDo6YmV0YV9kaXN0
cmlidXRpb248VHlwZVBhcmFtPiBkKAorICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQ
YXJhbT46Om1heCgpLAorICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1h
eCgpICogMC45OTk5KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGtDb3VudDsgKytpKSB7Cisg
ICAgICBUeXBlUGFyYW0geCA9IGQoZ2VuKTsKKyAgICAgIEVYUEVDVF9ORSh4LCAwLjVmKTsKKyAg
ICAgIEVYUEVDVF9GTE9BVF9FUSh4LCAwLjUwMDAyNWYpOworICAgIH0KKyAgfQorfQorCitjbGFz
cyBCZXRhRGlzdHJpYnV0aW9uTW9kZWwgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgQmV0YURpc3Ry
aWJ1dGlvbk1vZGVsKDo6dGVzdGluZzo6dHVwbGU8ZG91YmxlLCBkb3VibGU+IHApCisgICAgICA6
IGFscGhhXyg6OnRlc3Rpbmc6OmdldDwwPihwKSksIGJldGFfKDo6dGVzdGluZzo6Z2V0PDE+KHAp
KSB7fQorCisgIGRvdWJsZSBNZWFuKCkgY29uc3QgeyByZXR1cm4gYWxwaGFfIC8gKGFscGhhXyAr
IGJldGFfKTsgfQorCisgIGRvdWJsZSBWYXJpYW5jZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gYWxw
aGFfICogYmV0YV8gLyAoYWxwaGFfICsgYmV0YV8gKyAxKSAvIChhbHBoYV8gKyBiZXRhXykgLwor
ICAgICAgICAgICAoYWxwaGFfICsgYmV0YV8pOworICB9CisKKyAgZG91YmxlIEt1cnRvc2lzKCkg
Y29uc3QgeworICAgIHJldHVybiAzICsgNiAqCisgICAgICAgICAgICAgICAgICAgKChhbHBoYV8g
LSBiZXRhXykgKiAoYWxwaGFfIC0gYmV0YV8pICogKGFscGhhXyArIGJldGFfICsgMSkgLQorICAg
ICAgICAgICAgICAgICAgICBhbHBoYV8gKiBiZXRhXyAqICgyICsgYWxwaGFfICsgYmV0YV8pKSAv
CisgICAgICAgICAgICAgICAgICAgYWxwaGFfIC8gYmV0YV8gLyAoYWxwaGFfICsgYmV0YV8gKyAy
KSAvIChhbHBoYV8gKyBiZXRhXyArIDMpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIGNvbnN0IGRv
dWJsZSBhbHBoYV87CisgIGNvbnN0IGRvdWJsZSBiZXRhXzsKK307CisKK2NsYXNzIEJldGFEaXN0
cmlidXRpb25UZXN0CisgICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPDo6dGVz
dGluZzo6dHVwbGU8ZG91YmxlLCBkb3VibGU+PiwKKyAgICAgIHB1YmxpYyBCZXRhRGlzdHJpYnV0
aW9uTW9kZWwgeworIHB1YmxpYzoKKyAgQmV0YURpc3RyaWJ1dGlvblRlc3QoKSA6IEJldGFEaXN0
cmlidXRpb25Nb2RlbChHZXRQYXJhbSgpKSB7fQorCisgcHJvdGVjdGVkOgorICB0ZW1wbGF0ZSA8
Y2xhc3MgRD4KKyAgYm9vbCBTaW5nbGVaVGVzdE9uTWVhbkFuZFZhcmlhbmNlKGRvdWJsZSBwLCBz
aXplX3Qgc2FtcGxlcyk7CisKKyAgdGVtcGxhdGUgPGNsYXNzIEQ+CisgIGJvb2wgU2luZ2xlQ2hp
U3F1YXJlZFRlc3QoZG91YmxlIHAsIHNpemVfdCBzYW1wbGVzLCBzaXplX3QgYnVja2V0cyk7CisK
KyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gcm5nXzsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBEPgor
Ym9vbCBCZXRhRGlzdHJpYnV0aW9uVGVzdDo6U2luZ2xlWlRlc3RPbk1lYW5BbmRWYXJpYW5jZShk
b3VibGUgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHNhbXBsZXMpIHsKKyAgRCBkaXMoYWxwaGFfLCBiZXRhXyk7CisKKyAg
c3RkOjp2ZWN0b3I8ZG91YmxlPiBkYXRhOworICBkYXRhLnJlc2VydmUoc2FtcGxlcyk7CisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FtcGxlczsgaSsrKSB7CisgICAgY29uc3QgZG91YmxlIHZh
cmlhdGUgPSBkaXMocm5nXyk7CisgICAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNuYW4odmFyaWF0ZSkp
OworICAgIC8vIE5vdGUgdGhhdCBlcXVhbGl0eSBpcyBhbGxvd2VkIG9uIGJvdGggc2lkZXMuCisg
ICAgRVhQRUNUX0dFKHZhcmlhdGUsIDAuMCk7CisgICAgRVhQRUNUX0xFKHZhcmlhdGUsIDEuMCk7
CisgICAgZGF0YS5wdXNoX2JhY2sodmFyaWF0ZSk7CisgIH0KKworICAvLyBXZSB2YWxpZGF0ZSB0
aGF0IHRoZSBzYW1wbGUgbWVhbiBhbmQgc2FtcGxlIHZhcmlhbmNlIGFyZSBpbmRlZWQgZnJvbSBh
CisgIC8vIEJldGEgZGlzdHJpYnV0aW9uIHdpdGggdGhlIGdpdmVuIHNoYXBlIHBhcmFtZXRlcnMu
CisgIGNvbnN0IGF1dG8gbSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1
dGlvbk1vbWVudHMoZGF0YSk7CisKKyAgLy8gVGhlIHZhcmlhbmNlIG9mIHRoZSBzYW1wbGUgbWVh
biBpcyB2YXJpYW5jZSAvIG4uCisgIGNvbnN0IGRvdWJsZSBtZWFuX3N0ZGRldiA9IHN0ZDo6c3Fy
dChWYXJpYW5jZSgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihtLm4pKTsKKworICAvLyBUaGUgdmFy
aWFuY2Ugb2YgdGhlIHNhbXBsZSB2YXJpYW5jZSBpcyAoYXBwcm94aW1hdGVseSk6CisgIC8vICAg
KGt1cnRvc2lzIC0gMSkgKiB2YXJpYW5jZV4yIC8gbgorICBjb25zdCBkb3VibGUgdmFyaWFuY2Vf
c3RkZGV2ID0gc3RkOjpzcXJ0KAorICAgICAgKEt1cnRvc2lzKCkgLSAxKSAqIFZhcmlhbmNlKCkg
KiBWYXJpYW5jZSgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihtLm4pKTsKKyAgLy8geiBzY29yZSBm
b3IgdGhlIHNhbXBsZSB2YXJpYW5jZS4KKyAgY29uc3QgZG91YmxlIHpfdmFyaWFuY2UgPSAobS52
YXJpYW5jZSAtIFZhcmlhbmNlKCkpIC8gdmFyaWFuY2Vfc3RkZGV2OworCisgIGNvbnN0IGRvdWJs
ZSBtYXhfZXJyID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpNYXhFcnJvclRvbGVyYW5jZShwKTsK
KyAgY29uc3QgZG91YmxlIHpfbWVhbiA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6WlNjb3JlKE1l
YW4oKSwgbSk7CisgIGNvbnN0IGJvb2wgcGFzcyA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJu
YWw6Ok5lYXIoInoiLCB6X21lYW4sIDAuMCwgbWF4X2VycikgJiYKKyAgICAgIGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6TmVhcigiel92YXJpYW5jZSIsIHpfdmFyaWFuY2UsIDAuMCwgbWF4X2Vycik7
CisgIGlmICghcGFzcykgeworICAgIEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAgICBJTkZPLAor
ICAgICAgICBhYnNsOjpTdHJGb3JtYXQoCisgICAgICAgICAgICAiQmV0YSglZiwgJWYpLCAiCisg
ICAgICAgICAgICAibWVhbjogc2FtcGxlICVmLCBleHBlY3QgJWYsIHdoaWNoIGlzICVmIHN0ZGRl
dnMgYXdheSwgIgorICAgICAgICAgICAgInZhcmlhbmNlOiBzYW1wbGUgJWYsIGV4cGVjdCAlZiwg
d2hpY2ggaXMgJWYgc3RkZGV2cyBhd2F5LiIsCisgICAgICAgICAgICBhbHBoYV8sIGJldGFfLCBt
Lm1lYW4sIE1lYW4oKSwKKyAgICAgICAgICAgIHN0ZDo6YWJzKG0ubWVhbiAtIE1lYW4oKSkgLyBt
ZWFuX3N0ZGRldiwgbS52YXJpYW5jZSwgVmFyaWFuY2UoKSwKKyAgICAgICAgICAgIHN0ZDo6YWJz
KG0udmFyaWFuY2UgLSBWYXJpYW5jZSgpKSAvIHZhcmlhbmNlX3N0ZGRldikpOworICB9CisgIHJl
dHVybiBwYXNzOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRD4KK2Jvb2wgQmV0YURpc3RyaWJ1dGlv
blRlc3Q6OlNpbmdsZUNoaVNxdWFyZWRUZXN0KGRvdWJsZSBwLCBzaXplX3Qgc2FtcGxlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBidWNr
ZXRzKSB7CisgIGNvbnN0ZXhwciBkb3VibGUga0VyciA9IDFlLTc7CisgIHN0ZDo6dmVjdG9yPGRv
dWJsZT4gY3V0b2ZmcywgZXhwZWN0ZWQ7CisgIGNvbnN0IGRvdWJsZSBidWNrZXRfd2lkdGggPSAx
LjAgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGJ1Y2tldHMpOworICBpbnQgaSA9IDE7CisgIGludCB1
bm1lcmdlZF9idWNrZXRzID0gMDsKKyAgZm9yICg7IGkgPCBidWNrZXRzOyArK2kpIHsKKyAgICBj
b25zdCBkb3VibGUgcCA9IGJ1Y2tldF93aWR0aCAqIHN0YXRpY19jYXN0PGRvdWJsZT4oaSk7Cisg
ICAgY29uc3QgZG91YmxlIGJvdW5kYXJ5ID0KKyAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpCZXRhSW5jb21wbGV0ZUludihhbHBoYV8sIGJldGFfLCBwKTsKKyAgICAvLyBUaGUgaW50ZW50
aW9uIGlzIHRvIGFkZCBgYm91bmRhcnlgIHRvIHRoZSBsaXN0IG9mIGBjdXRvZmZzYC4gSXQgYmVj
b21lcworICAgIC8vIHByb2JsZW1hdGljLCBob3dldmVyLCB3aGVuIHRoZSBib3VuZGFyeSB2YWx1
ZXMgYXJlIG5vdCBtb25vdG9uZSwgZHVlIHRvCisgICAgLy8gbnVtZXJpY2FsIGlzc3VlcyB3aGVu
IGNvbXB1dGluZyB0aGUgaW52ZXJzZSByZWd1bGFyaXplZCBpbmNvbXBsZXRlCisgICAgLy8gQmV0
YSBmdW5jdGlvbi4gSW4gdGhlc2UgY2FzZXMsIHdlIG1lcmdlIHRoYXQgYnVja2V0IHdpdGggaXRz
IHByZXZpb3VzCisgICAgLy8gbmVpZ2hib3IgYW5kIG1lcmdlIHRoZWlyIGV4cGVjdGVkIGNvdW50
cy4KKyAgICBpZiAoKGN1dG9mZnMuZW1wdHkoKSAmJiBib3VuZGFyeSA8IGtFcnIpIHx8CisgICAg
ICAgICghY3V0b2Zmcy5lbXB0eSgpICYmIGJvdW5kYXJ5IDw9IGN1dG9mZnMuYmFjaygpKSkgewor
ICAgICAgdW5tZXJnZWRfYnVja2V0cysrOworICAgICAgY29udGludWU7CisgICAgfQorICAgIGlm
IChib3VuZGFyeSA+PSAxLjAgLSAxZS0xMCkgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIGN1
dG9mZnMucHVzaF9iYWNrKGJvdW5kYXJ5KTsKKyAgICBleHBlY3RlZC5wdXNoX2JhY2soc3RhdGlj
X2Nhc3Q8ZG91YmxlPigxICsgdW5tZXJnZWRfYnVja2V0cykgKgorICAgICAgICAgICAgICAgICAg
ICAgICBidWNrZXRfd2lkdGggKiBzdGF0aWNfY2FzdDxkb3VibGU+KHNhbXBsZXMpKTsKKyAgICB1
bm1lcmdlZF9idWNrZXRzID0gMDsKKyAgfQorICBjdXRvZmZzLnB1c2hfYmFjayhzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpOworICAvLyBNZXJnZSBhbGwgcmVtYWluaW5n
IGJ1Y2tldHMuCisgIGV4cGVjdGVkLnB1c2hfYmFjayhzdGF0aWNfY2FzdDxkb3VibGU+KGJ1Y2tl
dHMgLSBpICsgMSkgKiBidWNrZXRfd2lkdGggKgorICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8ZG91YmxlPihzYW1wbGVzKSk7CisgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IG1l
cmdlIGFsbCB0aGUgYnVja2V0cywgbWFraW5nIHRoaXMgdGVzdAorICAvLyBtZWFuaW5nbGVzcy4K
KyAgRVhQRUNUX0dFKGN1dG9mZnMuc2l6ZSgpLCAzKSA8PCBhbHBoYV8gPDwgIiwgIiA8PCBiZXRh
XzsKKworICBEIGRpcyhhbHBoYV8sIGJldGFfKTsKKworICBzdGQ6OnZlY3RvcjxpbnQzMl90PiBj
b3VudHMoY3V0b2Zmcy5zaXplKCksIDApOworICBmb3IgKGludCBpID0gMDsgaSA8IHNhbXBsZXM7
IGkrKykgeworICAgIGNvbnN0IGRvdWJsZSB4ID0gZGlzKHJuZ18pOworICAgIGF1dG8gaXQgPSBz
dGQ6OnVwcGVyX2JvdW5kKGN1dG9mZnMuYmVnaW4oKSwgY3V0b2Zmcy5lbmQoKSwgeCk7CisgICAg
Y291bnRzW3N0ZDo6ZGlzdGFuY2UoY3V0b2Zmcy5iZWdpbigpLCBpdCldKys7CisgIH0KKworICAv
LyBOdWxsLWh5cG90aGVzaXMgaXMgdGhhdCB0aGUgZGlzdHJpYnV0aW9uIGlzIGJldGEgZGlzdHJp
YnV0ZWQgd2l0aCB0aGUKKyAgLy8gcHJvdmlkZWQgYWxwaGEsIGJldGEgcGFyYW1zIChub3QgZXN0
aW1hdGVkIGZyb20gdGhlIGRhdGEpLgorICBjb25zdCBpbnQgZG9mID0gY3V0b2Zmcy5zaXplKCkg
LSAxOworCisgIGNvbnN0IGRvdWJsZSBjaGlfc3F1YXJlID0gYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpDaGlTcXVhcmUoCisgICAgICBjb3VudHMuYmVnaW4oKSwgY291bnRzLmVuZCgpLCBleHBlY3Rl
ZC5iZWdpbigpLCBleHBlY3RlZC5lbmQoKSk7CisgIGNvbnN0IGJvb2wgcGFzcyA9CisgICAgICAo
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVQVmFsdWUoY2hpX3NxdWFyZSwgZG9mKSA+
PSBwKTsKKyAgaWYgKCFwYXNzKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjdXRvZmZzLnNp
emUoKTsgaSsrKSB7CisgICAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAgICAgICBJTkZPLCBh
YnNsOjpTdHJGb3JtYXQoImN1dG9mZlslZF0gPSAlZiwgYWN0dWFsIGNvdW50ICVkLCBleHBlY3Rl
ZCAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIGN1dG9mZnNbaV0sIGNv
dW50c1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
PihleHBlY3RlZFtpXSkpKTsKKyAgICB9CisKKyAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAg
ICAgSU5GTywgYWJzbDo6U3RyRm9ybWF0KAorICAgICAgICAgICAgICAgICAgIkJldGEoJWYsICVm
KSAlcyAlZiwgcCA9ICVmIiwgYWxwaGFfLCBiZXRhXywKKyAgICAgICAgICAgICAgICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6a0NoaVNxdWFyZWQsIGNoaV9zcXVhcmUsCisgICAgICAgICAgICAg
ICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVBWYWx1ZShjaGlfc3F1YXJlLCBk
b2YpKSk7CisgIH0KKyAgcmV0dXJuIHBhc3M7Cit9CisKK1RFU1RfUChCZXRhRGlzdHJpYnV0aW9u
VGVzdCwgVGVzdFNhbXBsZVN0YXRpc3RpY3MpIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga1J1
bnMgPSAyMDsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga1BGYWlsID0gMC4wMjsKKyAgY29u
c3QgZG91YmxlIHAgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSZXF1aXJlZFN1Y2Nl
c3NQcm9iYWJpbGl0eShrUEZhaWwsIGtSdW5zKTsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga1Nh
bXBsZUNvdW50ID0gMTAwMDA7CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtCdWNrZXRDb3VudCA9
IDEwMDsKKyAgaW50IGZhaWxlZCA9IDA7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1J1bnM7ICsr
aSkgeworICAgIGlmICghU2luZ2xlWlRlc3RPbk1lYW5BbmRWYXJpYW5jZTxhYnNsOjpiZXRhX2Rp
c3RyaWJ1dGlvbjxkb3VibGU+PigKKyAgICAgICAgICAgIHAsIGtTYW1wbGVDb3VudCkpIHsKKyAg
ICAgIGZhaWxlZCsrOworICAgIH0KKyAgICBpZiAoIVNpbmdsZUNoaVNxdWFyZWRUZXN0PGFic2w6
OmJldGFfZGlzdHJpYnV0aW9uPGRvdWJsZT4+KAorICAgICAgICAgICAgMC4wMDUsIGtTYW1wbGVD
b3VudCwga0J1Y2tldENvdW50KSkgeworICAgICAgZmFpbGVkKys7CisgICAgfQorICB9CisgIC8v
IFNldCBzbyB0aGF0IHRoZSB0ZXN0IGlzIG5vdCBmbGFreSBhdCAtLXJ1bnNfcGVyX3Rlc3Q9MTAw
MDAKKyAgRVhQRUNUX0xFKGZhaWxlZCwgNSk7Cit9CisKK3N0ZDo6c3RyaW5nIFBhcmFtTmFtZSgK
KyAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88Ojp0ZXN0aW5nOjp0dXBsZTxkb3Vi
bGUsIGRvdWJsZT4+JiBpbmZvKSB7CisgIHN0ZDo6c3RyaW5nIG5hbWUgPSBhYnNsOjpTdHJDYXQo
ImFscGhhXyIsIDo6dGVzdGluZzo6Z2V0PDA+KGluZm8ucGFyYW0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJfX2JldGFfIiwgOjp0ZXN0aW5nOjpnZXQ8MT4oaW5mby5wYXJh
bSkpOworICByZXR1cm4gYWJzbDo6U3RyUmVwbGFjZUFsbChuYW1lLCB7eyIrIiwgIl8ifSwgeyIt
IiwgIl8ifSwgeyIuIiwgIl8ifX0pOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgKKyAg
ICBUZXN0U2FtcGxlU3RhdGlzdGljc0NvbWJpbmF0aW9ucywgQmV0YURpc3RyaWJ1dGlvblRlc3Qs
CisgICAgOjp0ZXN0aW5nOjpDb21iaW5lKDo6dGVzdGluZzo6VmFsdWVzKDAuMSwgMC4yLCAwLjks
IDEuMSwgMi41LCAxMC4wLCAxMjMuNCksCisgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGlu
Zzo6VmFsdWVzKDAuMSwgMC4yLCAwLjksIDEuMSwgMi41LCAxMC4wLCAxMjMuNCkpLAorICAgIFBh
cmFtTmFtZSk7CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIFRlc3RTYW1wbGVTdGF0
aXN0aWNzX1NlbGVjdGVkUGFpcnMsIEJldGFEaXN0cmlidXRpb25UZXN0LAorICAgIDo6dGVzdGlu
Zzo6VmFsdWVzKHN0ZDo6bWFrZV9wYWlyKDAuNSwgMTAwMCksIHN0ZDo6bWFrZV9wYWlyKDEwMDAs
IDAuNSksCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIoOTAwLCAxMDAwKSwg
c3RkOjptYWtlX3BhaXIoMTAwMDAsIDIwMDAwKSwKKyAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1ha2VfcGFpcig0ZTUsIDJlNyksIHN0ZDo6bWFrZV9wYWlyKDFlNywgMWU1KSksCisgICAgUGFy
YW1OYW1lKTsKKworLy8gTk9URTogYWJzbDo6YmV0YV9kaXN0cmlidXRpb24gaXMgbm90IGd1YXJh
bnRlZWQgdG8gYmUgc3RhYmxlLgorVEVTVChCZXRhRGlzdHJpYnV0aW9uVGVzdCwgU3RhYmlsaXR5
VGVzdCkgeworICAvLyBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbiBzdGFiaWxpdHkgcmVsaWVzIG9u
IHRoZSBzdGFiaWxpdHkgb2YKKyAgLy8gYWJzbDo6cmFuZG9tX2ludGVybmE6OlJhbmRVNjRUb0Rv
dWJsZSwgc3RkOjpleHAsIHN0ZDo6bG9nLCBzdGQ6OnBvdywKKyAgLy8gYW5kIHN0ZDo6c3FydC4K
KyAgLy8KKyAgLy8gVGhpcyB0ZXN0IGFsc28gZGVwZW5kcyBvbiB0aGUgc3RhYmlsaXR5IG9mIHN0
ZDo6ZnJleHAuCisgIHVzaW5nIHRlc3Rpbmc6OkVsZW1lbnRzQXJlOworICBhYnNsOjpyYW5kb21f
aW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZyh7CisgICAgICAweGZmZmYwMDAwMDAwMGU2Yzh1
bGwsIDB4ZmZmZjAwMDAwMDAwMDZjOHVsbCwgMHg4MDAwMDM3NjYyOTVDRkE5dWxsLAorICAgICAg
MHgxMUM4MTk2ODRFNzM0QTQxdWxsLCAweDgzMjYwMzc2NjI5NUNGQTl1bGwsIDB4N2ZiZTc2Yzhi
NDM5NTgwMHVsbCwKKyAgICAgIDB4QjM0NzJEQ0E3QjE0QTk0QXVsbCwgMHgwMDAzZWI3NmY2Zjdm
NzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGwsCisgICAgICAweDEzQ0NBODMwRUI2MUJEOTZ1
bGwsIDB4MDMzNEZFMUVBQTAzNjNDRnVsbCwgMHgwMDAzNUM5MDRDNzBBMjM5dWxsLAorICAgICAg
MHgwMDAwOUUwQkNCQUFERTE0dWxsLCAweDAwMDAwMDAwMDA2MjJDQTd1bGwsIDB4NDg2NGYyMmMw
NTliZjI5ZXVsbCwKKyAgICAgIDB4MjQ3ODU2ZDhiODYyNjY1Y3VsbCwgMHhlNDZlODZlOWExMzM3
ZTEwdWxsLCAweGQ4Yzg1NDFmMzUxOWIxMzN1bGwsCisgICAgICAweGZmZTc1YjUyYzU2N2I5ZTR1
bGwsIDB4ZmZmZmY3MzJlNTcwOWM1YnVsbCwgMHhmZjFmN2YwYjk4MzUzMmFjdWxsLAorICAgICAg
MHgxZWMyZTg5ODZkMjM2MmNhdWxsLCAweEMzMzJEREVGQkU2QzVBQTV1bGwsIDB4NjU1ODIxODU2
OEFCOTcwMnVsbCwKKyAgICAgIDB4MkFFRjdEQUQ1QjZFMkY4NHVsbCwgMHgxNTIxQjYyODI5MDc2
MTcwdWxsLCAweEVDREQ0Nzc1NjE5RjE1MTB1bGwsCisgICAgICAweDgxNGM4ZTM1ZmU5YTk2MWF1
bGwsIDB4MGMzY2Q1OWM5YjYzOGEwMnVsbCwgMHhjYjNiYjY0NzhhMDc3MTVjdWxsLAorICAgICAg
MHgxMjI0ZTYyYzk3OGJiYzdmdWxsLCAweDY3MWVmMmNiMDRlODFmNmV1bGwsIDB4M2MxY2JkODEx
ZWFmMTgwOHVsbCwKKyAgICAgIDB4MWJiYzIzY2ZhOGZhYzcyMXVsbCwgMHhhNGMyY2RhNjVlNTk2
YTUxdWxsLCAweGI3NzIxNmZhZDM3YWRmOTF1bGwsCisgICAgICAweDgzNmQ3OTQ0NTdjMDg4NDl1
bGwsIDB4ZTA4M2RmMDM0NzVmNDlkN3VsbCwgMHhiYzlmZWI1MTJlNmIwZDZjdWxsLAorICAgICAg
MHhiMTJkNzRmZGQ3MThjOGM1dWxsLCAweDEyZmYwOTY1M2JmYmU0Y2F1bGwsIDB4OGRkMDNhMTA1
YmM0ZWU3ZXVsbCwKKyAgICAgIDB4NTczODM0MTA0NWJhMGQ4NXVsbCwgMHhmM2ZkNzIyZGM2NWFk
MDlldWxsLCAweGZhMTRmZDIxZWEyYTU3MDV1bGwsCisgICAgICAweGZmZTZlYTRkNmVkYjBjNzN1
bGwsIDB4RDA3RTlFRkUyQkYxMUZCNHVsbCwgMHg5NURCREE0REFFOTA5MTk4dWxsLAorICAgICAg
MHhFQUFEOEU3MTZCOTNENUEwdWxsLCAweEQwOEVEMUQwQUZDNzI1RTB1bGwsIDB4OEUzQzVCMkY4
RTc1OTRCN3VsbCwKKyAgICAgIDB4OEZGNkUyRkJGMjEyMkI2NHVsbCwgMHg4ODg4QjgxMjkwMERG
MDFDdWxsLCAweDRGQUQ1RUEwNjg4RkMzMUN1bGwsCisgICAgICAweEQxQ0ZGMTkxQjNBOEMxQUR1
bGwsIDB4MkYyRjIyMThCRTBFMTc3N3VsbCwgMHhFQTc1MkRGRThCMDIxRkExdWxsLAorICB9KTsK
KworICAvLyBDb252ZXJ0IHRoZSByZWFsLXZhbHVlZCByZXN1bHQgaW50byBhIHVuaXQ2NCB3aGVy
ZSB3ZSBjb21wYXJlCisgIC8vIDUgKGZsb2F0KSBvciAxMCAoZG91YmxlKSBkZWNpbWFsIGRpZ2l0
cyBwbHVzIHRoZSBiYXNlLTIgZXhwb25lbnQuCisgIGF1dG8gZmxvYXRfdG9fdTY0ID0gW10oZmxv
YXQgZCkgeworICAgIGludCBleHAgPSAwOworICAgIGF1dG8gZiA9IHN0ZDo6ZnJleHAoZCwgJmV4
cCk7CisgICAgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMWU1ICogZikgKiAxMDAwMCkg
KyBzdGQ6OmFicyhleHApOworICB9OworICBhdXRvIGRvdWJsZV90b191NjQgPSBbXShkb3VibGUg
ZCkgeworICAgIGludCBleHAgPSAwOworICAgIGF1dG8gZiA9IHN0ZDo6ZnJleHAoZCwgJmV4cCk7
CisgICAgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMWUxMCAqIGYpICogMTAwMDApICsg
c3RkOjphYnMoZXhwKTsKKyAgfTsKKworICBzdGQ6OnZlY3Rvcjx1aW50NjRfdD4gb3V0cHV0KDIw
KTsKKyAgeworICAgIC8vIEFsZ29yaXRobSBKb2VobmsgKGZsb2F0KQorICAgIGFic2w6OmJldGFf
ZGlzdHJpYnV0aW9uPGZsb2F0PiBkaXN0KDAuMWYsIDAuMmYpOworICAgIHN0ZDo6Z2VuZXJhdGUo
c3RkOjpiZWdpbihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLAorICAgICAgICAgICAgICAgICAg
WyZdIHsgcmV0dXJuIGZsb2F0X3RvX3U2NChkaXN0KHVyYmcpKTsgfSk7CisgICAgRVhQRUNUX0VR
KDQ0LCB1cmJnLmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9USEFUKG91dHB1dCwgIC8vCisg
ICAgICAgICAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUoCisgICAgICAgICAgICAgICAgICAg
IDk5ODM0MDAwMCwgNjE5MDMwMDA0LCA1MDAwMDAwMDEsIDk5OTk5MDAwMCwgOTk2MjgwMDAwLAor
ICAgICAgICAgICAgICAgICAgICA1MDAwMDAwMDEsIDg0NDc0MDAwNCwgODQ3MjEwMDAxLCA5OTk5
NzAwMDAsIDg3MjMyMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgNTg1NDgwMDA3LCA5MzMyODAw
MDAsIDg2OTA4MDA0MiwgNjQ3NjcwMDMxLCA1MjgyNDAwMDQsCisgICAgICAgICAgICAgICAgICAg
IDk2OTk4MDAwNCwgNjI2MDUwMDA4LCA5MTU5MzAwMDIsIDgzMzQ0MDAzMywgODc4MDQwMDE1KSk7
CisgIH0KKworICB1cmJnLnJlc2V0KCk7CisgIHsKKyAgICAvLyBBbGdvcml0aG0gSm9laG5rIChk
b3VibGUpCisgICAgYWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZG91YmxlPiBkaXN0KDAuMSwgMC4y
KTsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0
KSwKKyAgICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBkb3VibGVfdG9fdTY0KGRpc3QodXJi
ZykpOyB9KTsKKyAgICBFWFBFQ1RfRVEoNDQsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQ
RUNUX1RIQVQoCisgICAgICAgIG91dHB1dCwgIC8vCisgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRz
QXJlKAorICAgICAgICAgICAgOTk4MzQ3MTMwMDAwMDAsIDYxOTAzMzU2ODcwMDA0LCA1MDAwMDAw
MDAwMDAwMSwgOTk5OTk3MjExNzAwMDAsCisgICAgICAgICAgICA5OTYyODM3NDc3MDAwMCwgOTk5
OTk5OTk5OTAwMDAsIDg0NDc0Mzk3ODYwMDA0LCA4NDcyMTI3NjI0MDAwMSwKKyAgICAgICAgICAg
IDk5OTk3NDA3NDkwMDAwLCA4NzIzMjUyODEyMDAwMCwgNTg1NDgzNjQ3ODAwMDcsIDkzMzI4OTMy
OTEwMDAwLAorICAgICAgICAgICAgODY5MDgyMzc3NzAwNDIsIDY0NzY3OTE3OTMwMDMxLCA1Mjgy
NDU4MTk3MDAwNCwgOTY5OTg1NDQxNDAwMDQsCisgICAgICAgICAgICA2MjYwNTk0NjI3MDAwOCwg
OTE1OTM2MDQzODAwMDIsIDgzMzQ1MDMxNzQwMDMzLCA4NzgwNDM5NzIzMDAxNSkpOworICB9CisK
KyAgdXJiZy5yZXNldCgpOworICB7CisgICAgLy8gQWxnb3JpdGhtIENoZW5nIDEKKyAgICBhYnNs
OjpiZXRhX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IGRpc3QoMC45LCAyLjApOworICAgIHN0ZDo6Z2Vu
ZXJhdGUoc3RkOjpiZWdpbihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLAorICAgICAgICAgICAg
ICAgICAgWyZdIHsgcmV0dXJuIGRvdWJsZV90b191NjQoZGlzdCh1cmJnKSk7IH0pOworICAgIEVY
UEVDVF9FUSg2MiwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfVEhBVCgKKyAgICAg
ICAgb3V0cHV0LCAgLy8KKyAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUoCisgICAgICAgICAg
ICA2MjA2OTAwNDc4MDAwMSwgNjQ0MzMyMDQ0NTAwMDEsIDUzNjA3NDE2NTYwMDAwLCA4OTY0NDI5
NTQzMDAwOCwKKyAgICAgICAgICAgIDYxNDM0NTg2MzEwMDE5LCA1NTE3MjYxNTg5MDAwMiwgNjIx
ODcxNjE0OTAwMDAsIDU2NDMzNjg0ODEwMDAzLAorICAgICAgICAgICAgODA0NTQ2MjIwNTAwMDUs
IDg2NDE4NTU4NzEwMDAzLCA5MjkyMDUxNDcwMDAwMSwgNjQ2NDUxODQ2ODAwMDEsCisgICAgICAg
ICAgICA1ODU0OTE4MzM4MDAwMCwgODQ4ODEyODM2NTAwMDUsIDcxMDc4NzI4NTkwMDAyLCA2OTk0
OTY5NDk3MDAwMCwKKyAgICAgICAgICAgIDczMTU3NDYxNzEwMDAxLCA2ODU5MjE5MTMwMDAwMSwg
NzA3NDc2MjM5MDAwMDAsIDc4NTg0Njk2OTMwMDA1KSk7CisgIH0KKworICB1cmJnLnJlc2V0KCk7
CisgIHsKKyAgICAvLyBBbGdvcml0aG0gQ2hlbmcgMgorICAgIGFic2w6OmJldGFfZGlzdHJpYnV0
aW9uPGRvdWJsZT4gZGlzdCgxLjUsIDIuNSk7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2lu
KG91dHB1dCksIHN0ZDo6ZW5kKG91dHB1dCksCisgICAgICAgICAgICAgICAgICBbJl0geyByZXR1
cm4gZG91YmxlX3RvX3U2NChkaXN0KHVyYmcpKTsgfSk7CisgICAgRVhQRUNUX0VRKDU0LCB1cmJn
Lmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9USEFUKAorICAgICAgICBvdXRwdXQsICAvLwor
ICAgICAgICB0ZXN0aW5nOjpFbGVtZW50c0FyZSgKKyAgICAgICAgICAgIDc1MDAwMDI5MjUwMDAx
LCA3Njc1MTQ4Mjg2MDAwMSwgNTMyNjQ1NzUyMjAwMDAsIDY5MTkzMTMzNjUwMDA1LAorICAgICAg
ICAgICAgNzgwMjgzMjQ0NzAwMTMsIDkxNTczNTg3NTYwMDAyLCA1OTE2NzUyMzc3MDAwMCwgNjA2
NTg2MTg1NjAwMDIsCisgICAgICAgICAgICA4MDA3NTg3MDU0MDAwMCwgOTQxNDEzMjA0NjAwMDQs
IDYzMTk2NTkyNzcwMDAzLCA3ODg4MzkwNjMwMDAwMiwKKyAgICAgICAgICAgIDk2Nzk3OTkyNTkw
MDAxLCA3NjkwNzU4NzgwMDAwMSwgNTY2NDUxNjc1NjAwMDAsIDY1NDA4MzAyMjgwMDAzLAorICAg
ICAgICAgICAgNTM0MDExNTYzMjAwMDEsIDY0NzMxMjM4NTcwMDAwLCA4MzA2NTU3Mzc1MDAwMSwg
Nzk3ODgzMzM4MjAwMDEpKTsKKyAgfQorfQorCisvLyBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9u
LXNwZWNpZmljIHRlc3QuIElmIGFueSBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbgorLy8gY2hh
bmdlcywgdGhlbiBpdCBpcyBsaWtlbHkgdGhhdCB0aGlzIHRlc3Qgd2lsbCBjaGFuZ2UgYXMgd2Vs
bC4gIEFsc28sIGlmCisvLyBkZXBlbmRlbmNpZXMgb2YgdGhlIGRpc3RyaWJ1dGlvbiBjaGFuZ2Us
IHN1Y2ggYXMgUmFuZFU2NFRvRG91YmxlLCB0aGVuIHRoaXMKKy8vIGlzIGFsc28gbGlrZWx5IHRv
IGNoYW5nZS4KK1RFU1QoQmV0YURpc3RyaWJ1dGlvblRlc3QsIEFsZ29yaXRobUJvdW5kcykgewor
ICB7CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisgICAg
ICAgIHsweDdmYmU3NmM4YjQzOTU4MDB1bGwsIDB4ODAwMDAwMDAwMDAwMDAwMHVsbH0pOworICAg
IC8vIHU9MC40OTksIHY9MC41CisgICAgYWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZG91YmxlPiBk
aXN0KDFlLTQsIDFlLTQpOworICAgIGRvdWJsZSBhID0gZGlzdCh1cmJnKTsKKyAgICBFWFBFQ1Rf
RVEoYSwgMi4wMjAyODYwODYxNTY3MTA4NTI5ZS0wOSk7CisgICAgRVhQRUNUX0VRKDIsIHVyYmcu
aW52b2NhdGlvbnMoKSk7CisgIH0KKworICAvLyBUZXN0IHRoYXQgYm90aCB0aGUgZmxvYXQgJiBk
b3VibGUgYWxnb3JpdGhtcyBhcHByb3ByaWF0ZWx5IHJlamVjdCB0aGUKKyAgLy8gaW5pdGlhbCBk
cmF3LgorICB7CisgICAgLy8gMS9hbHBoYSA9IDEvYmV0YSA9IDIuCisgICAgYWJzbDo6YmV0YV9k
aXN0cmlidXRpb248ZmxvYXQ+IGRpc3QoMC41LCAwLjUpOworCisgICAgLy8gZmlyc3QgdHdvIG91
dHB1dHMgYXJlIGNsb3NlIHRvIDEuMCAtIGVwc2lsb24sCisgICAgLy8gdGh1czogICh1IF4gMiAr
IHYgXiAyKSA+IDEuMAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1
cmJnKAorICAgICAgICB7MHhmZmZmMDAwMDAwMDZlNmM4dWxsLCAweGZmZmYwMDAwMDAwN2M3Yzh1
bGwsIDB4ODAwMDAzNzY2Mjk1Q0ZBOXVsbCwKKyAgICAgICAgIDB4MTFDODE5Njg0RTczNEE0MXVs
bH0pOworICAgIHsKKyAgICAgIGRvdWJsZSB5ID0gYWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZG91
YmxlPigwLjUsIDAuNSkodXJiZyk7CisgICAgICBFWFBFQ1RfRVEoNCwgdXJiZy5pbnZvY2F0aW9u
cygpKTsKKyAgICAgIEVYUEVDVF9FUSh5LCAwLjk4MTA2Njg5NTI2MzM4NjIpIDw8IHk7CisgICAg
fQorCisgICAgLy8gLi4uYW5kOiAgbG9nKHUpICogYSB+PSBsb2codikgKiBiIH49IC0wLjAyCisg
ICAgLy8gdGh1cyB6IH49IC0wLjAyICsgbG9nKDEgKyBlKH4wKSkKKyAgICAvLyAgICAgICAgfj0g
LTAuMDIgKyAwLjY5CisgICAgLy8gdGh1cyB6ID4gMAorICAgIHVyYmcucmVzZXQoKTsKKyAgICB7
CisgICAgICBmbG9hdCB4ID0gYWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZmxvYXQ+KDAuNSwgMC41
KSh1cmJnKTsKKyAgICAgIEVYUEVDVF9FUSg0LCB1cmJnLmludm9jYXRpb25zKCkpOworICAgICAg
RVhQRUNUX05FQVIoMC45ODEwNjY4ODI2MTAzMjEwNCwgeCwgMC4wMDAwMDA1KSA8PCB4IDw8ICJm
IjsKKyAgICB9CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vZGlzY3JldGVfZGlzdHJpYnV0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc2NyZXRlX2Rp
c3RyaWJ1dGlvbi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmMwOWM1MTgwYjM5OTRhMGM5NTljNjJkNWRmNDk4
ZTc3ZTYwOGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc2NyZXRlX2Rpc3Ry
aWJ1dGlvbi5jYwpAQCAtMCwwICsxLDk2IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2Rpc2NyZXRlX2Rpc3RyaWJ1dGlv
bi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKwor
Ly8gSW5pdGlhbGl6ZXMgdGhlIGRpc3RyaWJ1dGlvbiB0YWJsZSBmb3IgV2Fsa2VyJ3MgQWxpYXNp
bmcgYWxnb3JpdGhtLCBkZXNjcmliZWQKKy8vIGluIEtudXRoLCBWb2wgMi4gYXMgd2VsbCBhcyBp
biBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGlhc19tZXRob2QKK3N0ZDo6dmVjdG9y
PHN0ZDo6cGFpcjxkb3VibGUsIHNpemVfdD4+IEluaXREaXNjcmV0ZURpc3RyaWJ1dGlvbigKKyAg
ICBzdGQ6OnZlY3Rvcjxkb3VibGU+KiBwcm9iYWJpbGl0aWVzKSB7CisgIC8vIFRoZSBlbXB0eS1j
YXNlIHNob3VsZCBhbHJlYWR5IGJlIGhhbmRsZWQgYnkgdGhlIGNvbnN0cnVjdG9yLgorICBhc3Nl
cnQocHJvYmFiaWxpdGllcyk7CisgIGFzc2VydCghcHJvYmFiaWxpdGllcy0+ZW1wdHkoKSk7CisK
KyAgLy8gU3RlcCAxLiBOb3JtYWxpemUgdGhlIGlucHV0IHByb2JhYmlsaXRpZXMgdG8gMS4wLgor
ICBkb3VibGUgc3VtID0gc3RkOjphY2N1bXVsYXRlKHN0ZDo6YmVnaW4oKnByb2JhYmlsaXRpZXMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5kKCpwcm9iYWJpbGl0aWVz
KSwgMC4wKTsKKyAgaWYgKHN0ZDo6ZmFicyhzdW0gLSAxLjApID4gMWUtNikgeworICAgIC8vIFNj
YWxlIGBwcm9iYWJpbGl0aWVzYCBvbmx5IHdoZW4gdGhlIHN1bSBpcyB0b28gZmFyIGZyb20gMS4w
LiAgU2NhbGluZworICAgIC8vIHVuY29uZGl0aW9uYWxseSB3aWxsIGFsdGVyIHRoZSBwcm9iYWJp
bGl0aWVzIHNsaWdodGx5LgorICAgIGZvciAoZG91YmxlJiBpdGVtIDogKnByb2JhYmlsaXRpZXMp
IHsKKyAgICAgIGl0ZW0gPSBpdGVtIC8gc3VtOworICAgIH0KKyAgfQorCisgIC8vIFN0ZXAgMi4g
QXQgdGhpcyBwb2ludCBgcHJvYmFiaWxpdGllc2AgaXMgc2V0IHRvIHRoZSBjb25kaXRpb25hbAor
ICAvLyBwcm9iYWJpbGl0aWVzIG9mIGVhY2ggZWxlbWVudCB3aGljaCBzdW0gdG8gMS4wLCB0byB3
aXRoaW4gcmVhc29uYWJsZSBlcnJvci4KKyAgLy8gVGhlc2UgdmFsdWVzIGFyZSB1c2VkIHRvIGNv
bnN0cnVjdCB0aGUgcHJvcG9ydGlvbmFsIHByb2JhYmlsaXR5IHRhYmxlcyBmb3IKKyAgLy8gdGhl
IHNlbGVjdGlvbiBwaGFzZXMgb2YgV2Fsa2VyJ3MgQWxpYXNpbmcgYWxnb3JpdGhtLgorICAvLwor
ICAvLyBUbyBjb25zdHJ1Y3QgdGhlIHRhYmxlLCBwaWNrIGFuIGVsZW1lbnQgd2hpY2ggaXMgdW5k
ZXItZnVsbCAoaS5lLiwgYW4KKyAgLy8gZWxlbWVudCBmb3Igd2hpY2ggYCgqcHJvYmFiaWxpdGll
cylbaV0gPCAxLjAvbmApLCBhbmQgcGFpciBpdCB3aXRoIGFuCisgIC8vIGVsZW1lbnQgd2hpY2gg
aXMgb3Zlci1mdWxsIChpLmUuLCBhbiBlbGVtZW50IGZvciB3aGljaAorICAvLyBgKCpwcm9iYWJp
bGl0aWVzKVtpXSA+IDEuMC9uYCkuIFRoZSBzbWFsbGVyIHZhbHVlIGNhbiBhbHdheXMgYmUgcmV0
aXJlZC4KKyAgLy8gVGhlIGxhcmdlciBtYXkgc3RpbGwgYmUgZ3JlYXRlciB0aGFuIDEuMC9uLCBv
ciBtYXkgbm93IGJlIGxlc3MgdGhhbiAxLjAvbiwKKyAgLy8gYW5kIHB1dCBiYWNrIG9udG8gdGhl
IGFwcHJvcHJpYXRlIGNvbGxlY3Rpb24uCisgIGNvbnN0IHNpemVfdCBuID0gcHJvYmFiaWxpdGll
cy0+c2l6ZSgpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBzaXplX3Q+PiBxOwor
ICBxLnJlc2VydmUobik7CisKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBvdmVyOworICBzdGQ6OnZl
Y3RvcjxzaXplX3Q+IHVuZGVyOworICBzaXplX3QgaWR4ID0gMDsKKyAgZm9yIChjb25zdCBkb3Vi
bGUgaXRlbSA6ICpwcm9iYWJpbGl0aWVzKSB7CisgICAgYXNzZXJ0KGl0ZW0gPj0gMCk7CisgICAg
Y29uc3QgZG91YmxlIHYgPSBpdGVtICogbjsKKyAgICBxLmVtcGxhY2VfYmFjayh2LCAwKTsKKyAg
ICBpZiAodiA8IDEuMCkgeworICAgICAgdW5kZXIucHVzaF9iYWNrKGlkeCsrKTsKKyAgICB9IGVs
c2UgeworICAgICAgb3Zlci5wdXNoX2JhY2soaWR4KyspOworICAgIH0KKyAgfQorICB3aGlsZSAo
IW92ZXIuZW1wdHkoKSAmJiAhdW5kZXIuZW1wdHkoKSkgeworICAgIGF1dG8gbG8gPSB1bmRlci5i
YWNrKCk7CisgICAgdW5kZXIucG9wX2JhY2soKTsKKyAgICBhdXRvIGhpID0gb3Zlci5iYWNrKCk7
CisgICAgb3Zlci5wb3BfYmFjaygpOworCisgICAgcVtsb10uc2Vjb25kID0gaGk7CisgICAgY29u
c3QgZG91YmxlIHIgPSBxW2hpXS5maXJzdCAtICgxLjAgLSBxW2xvXS5maXJzdCk7CisgICAgcVto
aV0uZmlyc3QgPSByOworICAgIGlmIChyIDwgMS4wKSB7CisgICAgICB1bmRlci5wdXNoX2JhY2so
aGkpOworICAgIH0gZWxzZSB7CisgICAgICBvdmVyLnB1c2hfYmFjayhoaSk7CisgICAgfQorICB9
CisKKyAgLy8gRHVlIHRvIHJvdW5kaW5nIGVycm9ycywgdGhlcmUgbWF5IGJlIHVuLXBhaXJlZCBl
bGVtZW50cyBpbiBlaXRoZXIKKyAgLy8gY29sbGVjdGlvbjsgdGhlc2Ugc2hvdWxkIGFsbCBiZSB2
YWx1ZXMgbmVhciAxLjAuICBGb3IgdGhlc2UgdmFsdWVzLCBzZXQgYHFgCisgIC8vIHRvIDEuMCBh
bmQgc2V0IHRoZSBhbHRlcm5hdGUgdG8gdGhlIGlkZW50aXR5LgorICBmb3IgKGF1dG8gaSA6IG92
ZXIpIHsKKyAgICBxW2ldID0gezEuMCwgaX07CisgIH0KKyAgZm9yIChhdXRvIGkgOiB1bmRlcikg
eworICAgIHFbaV0gPSB7MS4wLCBpfTsKKyAgfQorICByZXR1cm4gcTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9kaXNjcmV0ZV9kaXN0cmlidXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXNj
cmV0ZV9kaXN0cmlidXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTYwZjAzYzVmZGRkMDZiNDkyMmQ3YWMz
YTlkZWY2NzJjMjIxODEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc2NyZXRl
X2Rpc3RyaWJ1dGlvbi5oCkBAIC0wLDAgKzEsMjQ1IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9ESVNDUkVURV9ESVNUUklC
VVRJT05fSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fRElTQ1JFVEVfRElTVFJJQlVUSU9OX0hfCisK
KyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGlzdHJlYW0+
CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8dHlwZV90
cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9y
YW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS91bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIKKworbmFtZXNwYWNlIGFic2wgeworCisv
LyBhYnNsOjpkaXNjcmV0ZV9kaXN0cmlidXRpb24KKy8vCisvLyBBIGRpc2NyZXRlIGRpc3RyaWJ1
dGlvbiBwcm9kdWNlcyByYW5kb20gaW50ZWdlcnMgaSwgd2hlcmUgMCA8PSBpIDwgbgorLy8gZGlz
dHJpYnV0ZWQgYWNjb3JkaW5nIHRvIHRoZSBkaXNjcmV0ZSBwcm9iYWJpbGl0eSBmdW5jdGlvbjoK
Ky8vCisvLyAgICAgUChpfHAwLC4uLixwbuKIkjEpPXBpCisvLworLy8gVGhpcyBjbGFzcyBpcyBh
biBpbXBsZW1lbnRhdGlvbiBvZiBkaXNjcmV0ZV9kaXN0cmlidXRpb24gKHNlZQorLy8gW3JhbmQu
ZGlzdC5zYW1wLmRpc2NyZXRlXSkuCisvLworLy8gVGhlIGFsZ29yaXRobSB1c2VkIGlzIFdhbGtl
cidzIEFsaWFzaW5nIGFsZ29yaXRobSwgZGVzY3JpYmVkIGluIEtudXRoLCBWb2wgMi4KKy8vIGFi
c2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbiB0YWtlcyBPKE4pIHRpbWUgdG8gcHJlY29tcHV0ZSB0
aGUgcHJvYmFiaWxpdGllcworLy8gKHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZiBwb3NzaWJsZSBv
dXRjb21lcyBpbiB0aGUgZGlzdHJpYnV0aW9uKSBhdAorLy8gY29uc3RydWN0aW9uLCBhbmQgdGhl
biB0YWtlcyBPKDEpIHRpbWUgZm9yIGVhY2ggdmFyaWF0ZSBnZW5lcmF0aW9uLiAgTWFueQorLy8g
b3RoZXIgaW1wbGVtZW50YXRpb25zIGFsc28gdGFrZSBPKE4pIHRpbWUgdG8gY29uc3RydWN0IGFu
IG9yZGVyZWQgc2VxdWVuY2Ugb2YKKy8vIHBhcnRpYWwgc3VtcywgcGx1cyBPKGxvZyBOKSB0aW1l
IHBlciB2YXJpYXRlIHRvIGJpbmFyeSBzZWFyY2guCisvLwordGVtcGxhdGUgPHR5cGVuYW1lIElu
dFR5cGUgPSBpbnQ+CitjbGFzcyBkaXNjcmV0ZV9kaXN0cmlidXRpb24geworIHB1YmxpYzoKKyAg
dXNpbmcgcmVzdWx0X3R5cGUgPSBJbnRUeXBlOworCisgIGNsYXNzIHBhcmFtX3R5cGUgeworICAg
cHVibGljOgorICAgIHVzaW5nIGRpc3RyaWJ1dGlvbl90eXBlID0gZGlzY3JldGVfZGlzdHJpYnV0
aW9uOworCisgICAgcGFyYW1fdHlwZSgpIHsgaW5pdCgpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgICBleHBsaWNpdCBwYXJhbV90eXBlKElucHV0SXRlcmF0
b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kKQorICAgICAgICA6IHBfKGJlZ2luLCBlbmQpIHsK
KyAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBwYXJhbV90eXBlKHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxkb3VibGU+IHdlaWdodHMpIDogcF8od2VpZ2h0cykgeworICAgICAgaW5p
dCgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBVbmFyeU9wZXJhdGlvbj4KKyAgICBl
eHBsaWNpdCBwYXJhbV90eXBlKHNpemVfdCBudywgZG91YmxlIHhtaW4sIGRvdWJsZSB4bWF4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgVW5hcnlPcGVyYXRpb24gZncpIHsKKyAgICAgIGlmIChu
dyA+IDApIHsKKyAgICAgICAgcF8ucmVzZXJ2ZShudyk7CisgICAgICAgIGRvdWJsZSBkZWx0YSA9
ICh4bWF4IC0geG1pbikgLyBzdGF0aWNfY2FzdDxkb3VibGU+KG53KTsKKyAgICAgICAgYXNzZXJ0
KGRlbHRhID4gMCk7CisgICAgICAgIGRvdWJsZSB0ID0gZGVsdGEgKiAwLjU7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnc7ICsraSkgeworICAgICAgICAgIHBfLnB1c2hfYmFjayhm
dyh4bWluICsgaSAqIGRlbHRhICsgdCkpOworICAgICAgICB9CisgICAgICB9CisgICAgICBpbml0
KCk7CisgICAgfQorCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8ZG91YmxlPiYgcHJvYmFiaWxpdGll
cygpIGNvbnN0IHsgcmV0dXJuIHBfOyB9CisgICAgc2l6ZV90IG4oKSBjb25zdCB7IHJldHVybiBw
Xy5zaXplKCkgLSAxOyB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhcmFt
X3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAgICAgIHJldHVybiBhLnByb2JhYmls
aXRpZXMoKSA9PSBiLnByb2JhYmlsaXRpZXMoKTsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAg
ICAgIHJldHVybiAhKGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBkaXNjcmV0ZV9kaXN0cmlidXRpb247CisKKyAgICB2b2lkIGluaXQoKTsKKworICAgIHN0
ZDo6dmVjdG9yPGRvdWJsZT4gcF87ICAgICAgICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplZCBw
cm9iYWJpbGl0aWVzCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgc2l6ZV90Pj4g
cV87ICAvLyAoYWNjZXB0YW5jZSwgYWx0ZXJuYXRlKSBwYWlycworCisgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2ludGVncmFsPHJlc3VsdF90eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAg
ICAiQ2xhc3MtdGVtcGxhdGUgYWJzbDo6ZGlzY3JldGVfZGlzdHJpYnV0aW9uPD4gbXVzdCBiZSAi
CisgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyaXplZCB1c2luZyBhbiBpbnRlZ3JhbCB0eXBl
LiIpOworICB9OworCisgIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbigpIDogcGFyYW1fKCkge30KKwor
ICBleHBsaWNpdCBkaXNjcmV0ZV9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgcCkgOiBw
YXJhbV8ocCkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgZXhw
bGljaXQgZGlzY3JldGVfZGlzdHJpYnV0aW9uKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRl
cmF0b3IgZW5kKQorICAgICAgOiBwYXJhbV8oYmVnaW4sIGVuZCkge30KKworICBleHBsaWNpdCBk
aXNjcmV0ZV9kaXN0cmlidXRpb24oc3RkOjppbml0aWFsaXplcl9saXN0PGRvdWJsZT4gd2VpZ2h0
cykKKyAgICAgIDogcGFyYW1fKHdlaWdodHMpIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFVuYXJ5
T3BlcmF0aW9uPgorICBleHBsaWNpdCBkaXNjcmV0ZV9kaXN0cmlidXRpb24oc2l6ZV90IG53LCBk
b3VibGUgeG1pbiwgZG91YmxlIHhtYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmFyeU9wZXJhdGlvbiBmdykKKyAgICAgIDogcGFyYW1fKG53LCB4bWluLCB4bWF4LCBzdGQ6
Om1vdmUoZncpKSB7fQorCisgIHZvaWQgcmVzZXQoKSB7fQorCisgIC8vIGdlbmVyYXRpbmcgZnVu
Y3Rpb25zCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRv
cigpKFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgcmV0dXJu
ICgqdGhpcykoZywgcGFyYW1fKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgor
ICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZl
cmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIHApOwor
CisgIGNvbnN0IHBhcmFtX3R5cGUmIHBhcmFtKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fOyB9Cisg
IHZvaWQgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgcCkgeyBwYXJhbV8gPSBwOyB9CisKKyAgcmVz
dWx0X3R5cGUobWluKSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgcmVzdWx0X3R5cGUobWF4KSgp
IGNvbnN0IHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KHBhcmFtXy5uKCkp
OworICB9ICAvLyBpbmNsdXNpdmUKKworICAvLyBOT1RFIFtyYW5kLmRpc3Quc2FtcGxlLmRpc2Ny
ZXRlXSByZXR1cm5zIGEgc3RkOjp2ZWN0b3I8ZG91YmxlPiBub3QgYQorICAvLyBjb25zdCBzdGQ6
OnZlY3Rvcjxkb3VibGU+Ji4KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8ZG91YmxlPiYgcHJvYmFiaWxp
dGllcygpIGNvbnN0IHsKKyAgICByZXR1cm4gcGFyYW1fLnByb2JhYmlsaXRpZXMoKTsKKyAgfQor
CisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgZGlzY3JldGVfZGlzdHJpYnV0aW9uJiBh
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbiYg
YikgeworICAgIHJldHVybiBhLnBhcmFtXyA9PSBiLnBhcmFtXzsKKyAgfQorICBmcmllbmQgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbiYgYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBkaXNjcmV0ZV9kaXN0cmlidXRpb24mIGIpIHsKKyAgICByZXR1
cm4gYS5wYXJhbV8gIT0gYi5wYXJhbV87CisgIH0KKworIHByaXZhdGU6CisgIHBhcmFtX3R5cGUg
cGFyYW1fOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEltcGxlbWVudGF0aW9uIGRl
dGFpbHMgb25seSBiZWxvdworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIHJhbmRv
bV9pbnRlcm5hbCB7CisKKy8vIFVzaW5nIHRoZSB2ZWN0b3IgYCpwcm9iYWJpbGl0aWVzYCwgd2hv
c2UgdmFsdWVzIGFyZSB0aGUgd2VpZ2h0cyBvcgorLy8gcHJvYmFiaWxpdGllcyBvZiBhbiBlbGVt
ZW50IGJlaW5nIHNlbGVjdGVkLCBjb25zdHJ1Y3RzIHRoZSBwcm9wb3J0aW9uYWwKKy8vIHByb2Jh
YmlsaXRpZXMgdXNlZCBieSB0aGUgZGlzY3JldGUgZGlzdHJpYnV0aW9uLiAgYCpwcm9iYWJpbGl0
aWVzYCB3aWxsIGJlCisvLyBzY2FsZWQsIGlmIG5lY2Vzc2FyeSwgc28gdGhhdCBpdHMgZW50cmll
cyBzdW0gdG8gYSB2YWx1ZSBzdWZmaWNpZW50bHkgY2xvc2UKKy8vIHRvIDEuMC4KK3N0ZDo6dmVj
dG9yPHN0ZDo6cGFpcjxkb3VibGUsIHNpemVfdD4+IEluaXREaXNjcmV0ZURpc3RyaWJ1dGlvbigK
KyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+KiBwcm9iYWJpbGl0aWVzKTsKKworfSAgLy8gbmFtZXNw
YWNlIHJhbmRvbV9pbnRlcm5hbAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK3ZvaWQg
ZGlzY3JldGVfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOjppbml0KCkgeworICBp
ZiAocF8uZW1wdHkoKSkgeworICAgIHBfLnB1c2hfYmFjaygxLjApOworICAgIHFfLmVtcGxhY2Vf
YmFjaygxLjAsIDApOworICB9IGVsc2UgeworICAgIGFzc2VydChuKCkgPD0gKHN0ZDo6bnVtZXJp
Y19saW1pdHM8SW50VHlwZT46Om1heCkoKSk7CisgICAgcV8gPSByYW5kb21faW50ZXJuYWw6Oklu
aXREaXNjcmV0ZURpc3RyaWJ1dGlvbigmcF8pOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJbnRUeXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSBkaXNjcmV0ZV9k
aXN0cmlidXRpb248SW50VHlwZT46OnJlc3VsdF90eXBlCitkaXNjcmV0ZV9kaXN0cmlidXRpb248
SW50VHlwZT46Om9wZXJhdG9yKCkoCisgICAgVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3Jl
ZmVyZW5jZXMpCisgICAgY29uc3QgcGFyYW1fdHlwZSYgcCkgeworICBjb25zdCBhdXRvIGlkeCA9
IGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT4oMCwgcC5uKCkpKGcp
OworICBjb25zdCBhdXRvJiBxID0gcC5xX1tpZHhdOworICBjb25zdCBib29sIHNlbGVjdGVkID0g
YWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbihxLmZpcnN0KShnKTsKKyAgcmV0dXJuIHNlbGVj
dGVkID8gaWR4IDogc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KHEuc2Vjb25kKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEludFR5cGU+
CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3Rk
OjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcywgIC8vIE5PTElOVChydW50aW1lL3Jl
ZmVyZW5jZXMpCisgICAgY29uc3QgZGlzY3JldGVfZGlzdHJpYnV0aW9uPEludFR5cGU+JiB4KSB7
CisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZl
cihvcyk7CisgIGNvbnN0IGF1dG8mIHByb2JhYmlsaXRpZXMgPSB4LnBhcmFtKCkucHJvYmFiaWxp
dGllcygpOworICBvcyA8PCBwcm9iYWJpbGl0aWVzLnNpemUoKTsKKworICBvcy5wcmVjaXNpb24o
cmFuZG9tX2ludGVybmFsOjpzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjxkb3VibGU+OjprUHJlY2lz
aW9uKTsKKyAgZm9yIChjb25zdCBhdXRvJiBwIDogcHJvYmFiaWxpdGllcykgeworICAgIG9zIDw8
IG9zLmZpbGwoKSA8PCBwOworICB9CisgIHJldHVybiBvczsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEludFR5cGU+CitzdGQ6OmJhc2lj
X2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPj4oCisgICAgc3RkOjpiYXNpY19pc3Ry
ZWFtPENoYXJULCBUcmFpdHM+JiBpcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisg
ICAgZGlzY3JldGVfZGlzdHJpYnV0aW9uPEludFR5cGU+JiB4KSB7ICAgIC8vIE5PTElOVChydW50
aW1lL3JlZmVyZW5jZXMpCisgIHVzaW5nIHBhcmFtX3R5cGUgPSB0eXBlbmFtZSBkaXNjcmV0ZV9k
aXN0cmlidXRpb248SW50VHlwZT46OnBhcmFtX3R5cGU7CisgIGF1dG8gc2F2ZXIgPSByYW5kb21f
aW50ZXJuYWw6Om1ha2VfaXN0cmVhbV9zdGF0ZV9zYXZlcihpcyk7CisKKyAgc2l6ZV90IG47Cisg
IHN0ZDo6dmVjdG9yPGRvdWJsZT4gcDsKKworICBpcyA+PiBuOworICBpZiAoaXMuZmFpbCgpKSBy
ZXR1cm4gaXM7CisgIGlmIChuID4gMCkgeworICAgIHAucmVzZXJ2ZShuKTsKKyAgICBmb3IgKElu
dFR5cGUgaSA9IDA7IGkgPCBuICYmICFpcy5mYWlsKCk7ICsraSkgeworICAgICAgYXV0byB0bXAg
PSByYW5kb21faW50ZXJuYWw6OnJlYWRfZmxvYXRpbmdfcG9pbnQ8ZG91YmxlPihpcyk7CisgICAg
ICBpZiAoaXMuZmFpbCgpKSByZXR1cm4gaXM7CisgICAgICBwLnB1c2hfYmFjayh0bXApOworICAg
IH0KKyAgfQorICB4LnBhcmFtKHBhcmFtX3R5cGUocC5iZWdpbigpLCBwLmVuZCgpKSk7CisgIHJl
dHVybiBpczsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JB
TkRPTV9ESVNDUkVURV9ESVNUUklCVVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9k
aXNjcmV0ZV9kaXN0cmlidXRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXNjcmV0ZV9kaXN0
cmlidXRpb25fdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Mjk2ZjBhYzIyNmFiYTc2YzE5ZDQ3NjZjNzFm
MDYxYTNmMGZhZTJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc2NyZXRlX2Rp
c3RyaWJ1dGlvbl90ZXN0LmNjCkBAIC0wLDAgKzEsMjQ2IEBACisvLyBDb3B5cmlnaHQgMjAxNyBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2Rpc2NyZXRlX2Rp
c3RyaWJ1dGlvbi5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNp
bmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPG51bWVyaWM+
CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dp
bmcuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9jaGlfc3F1YXJlLmgiCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3NlcXVlbmNlX3VyYmcuaCIKKyNpbmNsdWRlICJh
YnNsL3JhbmRvbS9yYW5kb20uaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpcC5oIgorCituYW1lc3BhY2UgeworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgSW50VHlwZT4KK2NsYXNzIERpc2NyZXRlRGlzdHJpYnV0aW9uVHlwZVRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCit1c2luZyBJbnRUeXBlcyA9IDo6dGVzdGlu
Zzo6VHlwZXM8aW50OF90LCB1aW50OF90LCBpbnQxNl90LCB1aW50MTZfdCwgaW50MzJfdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCwgaW50NjRfdCwgdWludDY0
X3Q+OworVFlQRURfVEVTVF9TVUlURShEaXNjcmV0ZURpc3RyaWJ1dGlvblR5cGVUZXN0LCBJbnRU
eXBlcyk7CisKK1RZUEVEX1RFU1QoRGlzY3JldGVEaXN0cmlidXRpb25UeXBlVGVzdCwgUGFyYW1T
ZXJpYWxpemVUZXN0KSB7CisgIHVzaW5nIHBhcmFtX3R5cGUgPQorICAgICAgdHlwZW5hbWUgYWJz
bDo6ZGlzY3JldGVfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7CisKKyAgYWJz
bDo6ZGlzY3JldGVfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZW1wdHk7CisgIEVYUEVDVF9USEFU
KGVtcHR5LnByb2JhYmlsaXRpZXMoKSwgdGVzdGluZzo6RWxlbWVudHNBcmUoMS4wKSk7CisKKyAg
YWJzbDo6ZGlzY3JldGVfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gYmVmb3JlKHsxLjAsIDIuMCwg
MS4wfSk7CisKKyAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgcHJvYmFiaWxpdGllcyBzdW0gdG8gMS4w
LiBXZSBwaWNrZWQgdmFsdWVzIHdoaWNoCisgIC8vIGNhbiBiZSByZXByZXNlbnRlZCBleGFjdGx5
IHRvIGF2b2lkIGZsb2F0aW5nLXBvaW50IHJvdW5kb2ZmIGVycm9yLgorICBkb3VibGUgcyA9IDA7
CisgIGZvciAoY29uc3QgYXV0byYgeCA6IGJlZm9yZS5wcm9iYWJpbGl0aWVzKCkpIHsKKyAgICBz
ICs9IHg7CisgIH0KKyAgRVhQRUNUX0VRKHMsIDEuMCk7CisgIEVYUEVDVF9USEFUKGJlZm9yZS5w
cm9iYWJpbGl0aWVzKCksIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKDAuMjUsIDAuNSwgMC4yNSkpOwor
CisgIC8vIFZhbGlkYXRlIHRoZSBzYW1lIGRhdGEgdmlhIGFuIGluaXRpYWxpemVyIGxpc3QuCisg
IHsKKyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IGRhdGEoezEuMCwgMi4wLCAxLjB9KTsKKworICAg
IGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IHZpYV9wYXJhbXsKKyAgICAg
ICAgcGFyYW1fdHlwZShzdGQ6OmJlZ2luKGRhdGEpLCBzdGQ6OmVuZChkYXRhKSl9OworCisgICAg
RVhQRUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nc3RyZWFt
IHNzOworICBzcyA8PCBiZWZvcmU7CisgIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxUeXBl
UGFyYW0+IGFmdGVyOworCisgIEVYUEVDVF9ORShiZWZvcmUsIGFmdGVyKTsKKworICBzcyA+PiBh
ZnRlcjsKKworICBFWFBFQ1RfRVEoYmVmb3JlLCBhZnRlcik7Cit9CisKK1RZUEVEX1RFU1QoRGlz
Y3JldGVEaXN0cmlidXRpb25UeXBlVGVzdCwgQ29uc3RydWN0b3IpIHsKKyAgYXV0byBmbiA9IFtd
KGRvdWJsZSB4KSB7IHJldHVybiB4OyB9OworICB7CisgICAgYWJzbDo6ZGlzY3JldGVfZGlzdHJp
YnV0aW9uPGludD4gdW5hcnkoMCwgMS4wLCA5LjAsIGZuKTsKKyAgICBFWFBFQ1RfVEhBVCh1bmFy
eS5wcm9iYWJpbGl0aWVzKCksIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKDEuMCkpOworICB9CisKKyAg
eworICAgIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxpbnQ+IHVuYXJ5KDIsIDEuMCwgOS4w
LCBmbik7CisgICAgLy8gPT4gZm4oMS4wICsgMCAqIDQgKyAyKSA9PiAzCisgICAgLy8gPT4gZm4o
MS4wICsgMSAqIDQgKyAyKSA9PiA3CisgICAgRVhQRUNUX1RIQVQodW5hcnkucHJvYmFiaWxpdGll
cygpLCB0ZXN0aW5nOjpFbGVtZW50c0FyZSgwLjMsIDAuNykpOworICB9Cit9CisKK1RFU1QoRGlz
Y3JldGVEaXN0cmlidXRpb25UZXN0LCBJbml0RGlzY3JldGVEaXN0cmlidXRpb24pIHsKKyAgdXNp
bmcgdGVzdGluZzo6UGFpcjsKKworICB7CisgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBwKHsxLjAs
IDIuMCwgMy4wfSk7CisgICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgc2l6ZV90Pj4g
cSA9CisgICAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6SW5pdERpc2NyZXRlRGlzdHJpYnV0
aW9uKCZwKTsKKworICAgIEVYUEVDVF9USEFUKHAsIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKDEgLyA2
LjAsIDIgLyA2LjAsIDMgLyA2LjApKTsKKworICAgIC8vIEVhY2ggYnVja2V0IGlzIHA9MS8zLCBz
byBidWNrZXQgMCB3aWxsIHNlbmQgaGFsZiBpdCdzIHRyYWZmaWMKKyAgICAvLyB0byBidWNrZXQg
Miwgd2hpbGUgdGhlIHJlc3Qgd2lsbCByZXRhaW4gYWxsIG9mIHRoZWlyIHRyYWZmaWMuCisgICAg
RVhQRUNUX1RIQVQocSwgdGVzdGluZzo6RWxlbWVudHNBcmUoUGFpcigwLjUsIDIpLCAgLy8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKDEuMCwgMSksICAvLwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoMS4wLCAyKSkpOwor
ICB9CisKKyAgeworICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gcCh7MS4wLCAyLjAsIDMuMCwgNS4w
LCAyLjB9KTsKKworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIHNpemVfdD4+IHEg
PQorICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkluaXREaXNjcmV0ZURpc3RyaWJ1dGlv
bigmcCk7CisKKyAgICBFWFBFQ1RfVEhBVChwLCB0ZXN0aW5nOjpFbGVtZW50c0FyZSgxIC8gMTMu
MCwgMiAvIDEzLjAsIDMgLyAxMy4wLCA1IC8gMTMuMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyIC8gMTMuMCkpOworCisgICAgLy8gQSBtb3JlIGNvbXBsZXggYnVj
a2V0aW5nIHNvbHV0aW9uOiBFYWNoIGJ1Y2tldCBoYXMgcD0wLjIKKyAgICAvLyBTbyBidWNrZXRz
IDAsIDEsIDQgd2lsbCBzZW5kIHRoZWlyIGFsdGVybmF0ZSB0cmFmZmljIGVsc2V3aGVyZSwgd2hp
Y2gKKyAgICAvLyBoYXBwZW5zIHRvIGJlIGJ1Y2tldCAzLgorICAgIC8vIEhvd2V2ZXIsIHN1bW1p
bmcgdXAgdGhhdCBhbHRlcm5hdGUgdHJhZmZpYyBnaXZlcyBidWNrZXQgMyB0b28gbXVjaAorICAg
IC8vIHRyYWZmaWMsIHNvIGl0IHdpbGwgc2VuZCBzb21lIHRyYWZmaWMgdG8gYnVja2V0IDIuCisg
ICAgY29uc3RleHByIGRvdWJsZSBiMCA9IDEuMCAvIDEzLjAgLyAwLjI7CisgICAgY29uc3RleHBy
IGRvdWJsZSBiMSA9IDIuMCAvIDEzLjAgLyAwLjI7CisgICAgY29uc3RleHByIGRvdWJsZSBiMyA9
ICg1LjAgLyAxMy4wIC8gMC4yKSAtICgoMSAtIGIwKSArICgxIC0gYjEpICsgKDEgLSBiMSkpOwor
CisgICAgRVhQRUNUX1RIQVQocSwgdGVzdGluZzo6RWxlbWVudHNBcmUoUGFpcihiMCwgMyksICAg
Ly8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKGIxLCAzKSwg
ICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoMS4wLCAy
KSwgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcihiMywg
MiksICAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKGIx
LCAzKSkpOworICB9Cit9CisKK1RFU1QoRGlzY3JldGVEaXN0cmlidXRpb25UZXN0LCBDaGlTcXVh
cmVkVGVzdDUwKSB7CisgIHVzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6a0NoaVNxdWFyZWQ7
CisKKyAgY29uc3RleHByIHNpemVfdCBrVHJpYWxzID0gMTAwMDA7CisgIGNvbnN0ZXhwciBpbnQg
a0J1Y2tldHMgPSA1MDsgIC8vIGluY2x1c2l2ZSwgc28gYWN0YWxseSArMQorCisgIC8vIDEtaW4t
MTAwMDAwIHRocmVzaG9sZCwgYnV0IHJlbWVtYmVyLCB0aGVyZSBhcmUgYWJvdXQgOCB0ZXN0cwor
ICAvLyBpbiB0aGlzIGZpbGUuIEFuZCB0aGUgdGVzdCBjb3VsZCBmYWlsIGZvciBvdGhlciByZWFz
b25zLgorICAvLyBFbXBpcmljYWxseSB2YWxpZGF0ZWQgd2l0aCAtLXJ1bnNfcGVyX3Rlc3Q9MTAw
MDAuCisgIGNvbnN0IGludCBrVGhyZXNob2xkID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6Q2hpU3F1YXJlVmFsdWUoa0J1Y2tldHMsIDAuOTk5OTkpOworCisgIHN0ZDo6dmVjdG9yPGRv
dWJsZT4gd2VpZ2h0cyhrQnVja2V0cywgMCk7CisgIHN0ZDo6aW90YShzdGQ6OmJlZ2luKHdlaWdo
dHMpLCBzdGQ6OmVuZCh3ZWlnaHRzKSwgMSk7CisgIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlv
bjxpbnQ+IGRpc3Qoc3RkOjpiZWdpbih3ZWlnaHRzKSwgc3RkOjplbmQod2VpZ2h0cykpOworCisg
IGFic2w6Okluc2VjdXJlQml0R2VuIHJuZzsKKworICBzdGQ6OnZlY3RvcjxpbnQzMl90PiBjb3Vu
dHMoa0J1Y2tldHMsIDApOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtUcmlhbHM7IGkrKykg
eworICAgIGF1dG8geCA9IGRpc3Qocm5nKTsKKyAgICBjb3VudHNbeF0rKzsKKyAgfQorCisgIC8v
IFNjYWxlIHdlaWdodHMuCisgIGRvdWJsZSBzdW0gPSAwOworICBmb3IgKGRvdWJsZSB4IDogd2Vp
Z2h0cykgeworICAgIHN1bSArPSB4OworICB9CisgIGZvciAoZG91YmxlJiB4IDogd2VpZ2h0cykg
eworICAgIHggPSBrVHJpYWxzICogKHggLyBzdW0pOworICB9CisKKyAgZG91YmxlIGNoaV9zcXVh
cmUgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmUoc3RkOjpiZWdpbihj
b3VudHMpLCBzdGQ6OmVuZChjb3VudHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpiZWdpbih3ZWlnaHRzKSwgc3RkOjplbmQod2VpZ2h0cykpOworCisgIGlm
IChjaGlfc3F1YXJlID4ga1RocmVzaG9sZCkgeworICAgIGRvdWJsZSBwX3ZhbHVlID0KKyAgICAg
ICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVQVmFsdWUoY2hpX3NxdWFyZSwga0J1
Y2tldHMpOworCisgICAgLy8gQ2hpLXNxdWFyZWQgdGVzdCBmYWlsZWQuIE91dHB1dCBkb2VzIG5v
dCBhcHBlYXIgdG8gYmUgdW5pZm9ybS4KKyAgICBzdGQ6OnN0cmluZyBtc2c7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb3VudHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIGFic2w6OlN0ckFw
cGVuZCgmbXNnLCBpLCAiOiAiLCBjb3VudHNbaV0sICIgdnMgIiwgd2VpZ2h0c1tpXSwgIlxuIik7
CisgICAgfQorICAgIGFic2w6OlN0ckFwcGVuZCgmbXNnLCBrQ2hpU3F1YXJlZCwgIiBwLXZhbHVl
ICIsIHBfdmFsdWUsICJcbiIpOworICAgIGFic2w6OlN0ckFwcGVuZCgmbXNnLCAiSGlnaCAiLCBr
Q2hpU3F1YXJlZCwgIiB2YWx1ZTogIiwgY2hpX3NxdWFyZSwgIiA+ICIsCisgICAgICAgICAgICAg
ICAgICAgIGtUaHJlc2hvbGQpOworICAgIEFCU0xfUkFXX0xPRyhJTkZPLCAiJXMiLCBtc2cuY19z
dHIoKSk7CisgICAgRkFJTCgpIDw8IG1zZzsKKyAgfQorfQorCitURVNUKERpc2NyZXRlRGlzdHJp
YnV0aW9uVGVzdCwgU3RhYmlsaXR5VGVzdCkgeworICAvLyBhYnNsOjpkaXNjcmV0ZV9kaXN0cmli
dXRpb24gc3RhYmlsaXRpeSByZWxpZXMgb24KKyAgLy8gYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJp
YnV0aW9uIGFuZCBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uLgorICBhYnNsOjpyYW5kb21f
aW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAgICAgIHsweDAwMDNlYjc2ZjZmN2Y3NTV1
bGwsIDB4RkZDRUE1MEZEQjJGOTUzQnVsbCwgMHhDMzMyRERFRkJFNkM1QUE1dWxsLAorICAgICAg
IDB4NjU1ODIxODU2OEFCOTcwMnVsbCwgMHgyQUVGN0RBRDVCNkUyRjg0dWxsLCAweDE1MjFCNjI4
MjkwNzYxNzB1bGwsCisgICAgICAgMHhFQ0RENDc3NTYxOUYxNTEwdWxsLCAweDEzQ0NBODMwRUI2
MUJEOTZ1bGwsIDB4MDMzNEZFMUVBQTAzNjNDRnVsbCwKKyAgICAgICAweEI1NzM1QzkwNEM3MEEy
Mzl1bGwsIDB4RDU5RTlFMEJDQkFBREUxNHVsbCwgMHhFRUNDODZCQzYwNjIyQ0E3dWxsfSk7CisK
KyAgc3RkOjp2ZWN0b3I8aW50PiBvdXRwdXQoNik7CisKKyAgeworICAgIGFic2w6OmRpc2NyZXRl
X2Rpc3RyaWJ1dGlvbjxpbnQzMl90PiBkaXN0KHsxLjAsIDIuMCwgMy4wLCA1LjAsIDIuMH0pOwor
ICAgIEVYUEVDVF9FUSgwLCBkaXN0Lm1pbigpKTsKKyAgICBFWFBFQ1RfRVEoNCwgZGlzdC5tYXgo
KSk7CisgICAgZm9yIChhdXRvJiB2IDogb3V0cHV0KSB7CisgICAgICB2ID0gZGlzdCh1cmJnKTsK
KyAgICB9CisgICAgRVhQRUNUX0VRKDEyLCB1cmJnLmludm9jYXRpb25zKCkpOworICB9CisKKyAg
Ly8gV2l0aCAxMiBjYWxscyB0byB1cmJnLCBlYWNoIGNhbGwgaW50byBkaXNjcmV0ZV9kaXN0cmli
dXRpb24gY29uc3VtZXMKKyAgLy8gcHJlY2lzZWx5IDIgdmFsdWVzOiBvbmUgZm9yIHRoZSB1bmlm
b3JtIGNhbGwsIGFuZCBhIHNlY29uZCBmb3IgdGhlCisgIC8vIGJlcm5vdWxsaS4KKyAgLy8KKyAg
Ly8gR2l2ZW4gdGhlIGFsdCBtYXBwaW5nOiAwPT4zLCAxPT4zLCAyPT4yLCAzPT4yLCA0PT4zLCB3
ZSBjYW4KKyAgLy8KKyAgLy8gdW5pZm9ybTogICAgICA0NDMyMTAxNDMxMzEKKyAgLy8gYmVybm91
bGxpOiBiMCAwMDAwMTExMDAxMDEKKyAgLy8gYmVybm91bGxpOiBiMSAwMDExMTExMDExMDEKKyAg
Ly8gYmVybm91bGxpOiBiMiAxMTExMTExMTExMTEKKyAgLy8gYmVybm91bGxpOiBiMyAwMDExMTEx
MDExMTEKKyAgLy8gYmVybm91bGxpOiBiNCAwMDExMTExMDExMDEKKyAgLy8gLi4uCisgIEVYUEVD
VF9USEFUKG91dHB1dCwgdGVzdGluZzo6RWxlbWVudHNBcmUoMywgMywgMSwgMywgMywgMykpOwor
CisgIHsKKyAgICB1cmJnLnJlc2V0KCk7CisgICAgYWJzbDo6ZGlzY3JldGVfZGlzdHJpYnV0aW9u
PGludDY0X3Q+IGRpc3QoezEuMCwgMi4wLCAzLjAsIDUuMCwgMi4wfSk7CisgICAgRVhQRUNUX0VR
KDAsIGRpc3QubWluKCkpOworICAgIEVYUEVDVF9FUSg0LCBkaXN0Lm1heCgpKTsKKyAgICBmb3Ig
KGF1dG8mIHYgOiBvdXRwdXQpIHsKKyAgICAgIHYgPSBkaXN0KHVyYmcpOworICAgIH0KKyAgICBF
WFBFQ1RfRVEoMTIsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgIH0KKyAgRVhQRUNUX1RIQVQob3V0
cHV0LCB0ZXN0aW5nOjpFbGVtZW50c0FyZSgzLCAzLCAwLCAzLCAwLCA0KSk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbl9mb3JtYXRf
dHJhaXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZGlzdHJpYnV0aW9uX2Zvcm1hdF90cmFpdHMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZjI4YzkwNjk0NTM4M2QyY2U2NzBiZjI2NmE3MDZiYzZmMDBhMzk3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbl9mb3JtYXRfdHJhaXRzLmgKQEAg
LTAsMCArMSwyNDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisjaWZuZGVmIEFCU0xfUkFORE9NX0RJU1RSSUJVVElPTl9GT1JNQVRfVFJBSVRTX0hf
CisjZGVmaW5lIEFCU0xfUkFORE9NX0RJU1RSSUJVVElPTl9GT1JNQVRfVFJBSVRTX0hfCisKKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZWluZm8+CisK
KyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vYmV0YV9k
aXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9leHBvbmVudGlhbF9kaXN0cmli
dXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb24uaCIK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9sb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgiCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJh
YnNsL3JhbmRvbS91bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS91bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20v
emlwZl9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfam9pbi5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5n
cy9zdHJpbmdfdmlldy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvc3Bhbi5oIgorCituYW1lc3Bh
Y2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gU2NhbGFyVHlwZU5h
bWUgZGVmaW5lcyBhIHByZWZlcnJlZCBoaWVyYXJjaHkgb2YgcHJlZmVycmVkIHR5cGUgbmFtZXMg
Zm9yCisvLyBzY2FsYXJzLCBhbmQgaXMgZXZhbHVhdGVkIGF0IGNvbXBpbGUgdGltZSBmb3IgdGhl
IHNwZWNpZmljIHR5cGUKKy8vIHNwZWNpYWxpemF0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Citjb25zdGV4cHIgY29uc3QgY2hhciogU2NhbGFyVHlwZU5hbWUoKSB7CisgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19pbnRlZ3JhbDxUPigpIHx8IHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD4oKSwg
IiIpOworICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgcmV0dXJuCisgICAgICAgIHN0ZDo6aXNf
c2FtZTxULCBmbG9hdD46OnZhbHVlID8gImZsb2F0IiA6CisgICAgICAgIHN0ZDo6aXNfc2FtZTxU
LCBkb3VibGU+Ojp2YWx1ZSA/ICJkb3VibGUiIDoKKyAgICAgICAgc3RkOjppc19zYW1lPFQsIGxv
bmcgZG91YmxlPjo6dmFsdWUgPyAibG9uZyBkb3VibGUiIDoKKyAgICAgICAgc3RkOjppc19zYW1l
PFQsIGJvb2w+Ojp2YWx1ZSA/ICJib29sIiA6CisgICAgICAgIHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2
YWx1ZSAmJiBzaXplb2YoVCkgPT0gMSA/ICJpbnQ4X3QiIDoKKyAgICAgICAgc3RkOjppc19zaWdu
ZWQ8VD46OnZhbHVlICYmIHNpemVvZihUKSA9PSAyID8gImludDE2X3QiIDoKKyAgICAgICAgc3Rk
Ojppc19zaWduZWQ8VD46OnZhbHVlICYmIHNpemVvZihUKSA9PSA0ID8gImludDMyX3QiIDoKKyAg
ICAgICAgc3RkOjppc19zaWduZWQ8VD46OnZhbHVlICYmIHNpemVvZihUKSA9PSA4ID8gImludDY0
X3QiIDoKKyAgICAgICAgc3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUgJiYgc2l6ZW9mKFQpID09
IDEgPyAidWludDhfdCIgOgorICAgICAgICBzdGQ6OmlzX3Vuc2lnbmVkPFQ+Ojp2YWx1ZSAmJiBz
aXplb2YoVCkgPT0gMiA/ICJ1aW50MTZfdCIgOgorICAgICAgICBzdGQ6OmlzX3Vuc2lnbmVkPFQ+
Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gNCA/ICJ1aW50MzJfdCIgOgorICAgICAgICBzdGQ6Omlz
X3Vuc2lnbmVkPFQ+Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gOCA/ICJ1aW50NjRfdCIgOgorICAg
ICAgICAgICAgInVuZGVmaW5lZCI7CisgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgIC8vIE5PVEU6
IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHR5cGVpZChUKS5uYW1lKCksIGJ1dCB0aGF0J3MgYW4K
KyAgLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZCBhdHRyaWJ1dGUgd2hpY2ggZG9lcyBub3QgbmVj
ZXNzYXJpbHkKKyAgLy8gY29ycmVzcG9uZCB0byBhIG5hbWUuIFdlIGNvdWxkIHBvdGVudGlhbGx5
IGRlbWFuZ2xlIGl0CisgIC8vIHVzaW5nLCBlLmcuIGFiaTo6X19jeGFfZGVtYW5nbGUuCit9CisK
Ky8vIERpc3RyaWJ1dGlvbiB0cmFpdHMgdXNlZCBieSBEaXN0cmlidXRpb25DYWxsZXIgYW5kIGlu
dGVybmFsIGltcGxlbWVudGF0aW9uCisvLyBkZXRhaWxzIG9mIHRoZSBtb2NraW5nIGZyYW1ld29y
ay4KKy8qCitzdHJ1Y3QgRGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzIHsKKyAgIC8vIFJldHVybnMg
dGhlIHBhcmFtZXRlcml6ZWQgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uLgorICAg
c3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBGdW5jdGlvbk5hbWUoKQorICAgLy8gRm9ybWF0
IERpc3RyVCBwYXJhbWV0ZXJzLgorICAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEFyZ3MoRGlz
dHJUJiBkaXN0KTsKKyAgIC8vIEZvcm1hdCBEaXN0clQ6OnJlc3VsdF90eXBlIHJlc3VsdHMuCisg
ICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0UmVzdWx0cyhEaXN0clQmIGRpc3QpOworfTsKKyov
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGlzdHJUPgorc3RydWN0IERpc3RyaWJ1dGlvbkZvcm1hdFRy
YWl0czsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFI+CitzdHJ1Y3QgRGlzdHJpYnV0aW9uRm9ybWF0
VHJhaXRzPGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxSPj4geworICB1c2luZyBkaXN0
cmlidXRpb25fdCA9IGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxSPjsKKyAgdXNpbmcg
cmVzdWx0X3QgPSB0eXBlbmFtZSBkaXN0cmlidXRpb25fdDo6cmVzdWx0X3R5cGU7CisKKyAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBOYW1lKCkgeyByZXR1cm4gIlVuaWZvcm0iOyB9CisK
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZ1bmN0aW9uTmFtZSgpIHsKKyAgICByZXR1cm4gYWJzbDo6
U3RyQ2F0KE5hbWUoKSwgIjwiLCBTY2FsYXJUeXBlTmFtZTxSPigpLCAiPiIpOworICB9CisgIHN0
YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRBcmdzKGNvbnN0IGRpc3RyaWJ1dGlvbl90JiBkKSB7Cisg
ICAgcmV0dXJuIGFic2w6OlN0ckNhdCgiYWJzbDo6SW50ZXJ2YWxDbG9zZWRDbG9zZWQsICIsIChk
Lm1pbikoKSwgIiwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIChkLm1heCkoKSk7CisgIH0K
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFJlc3VsdHMoYWJzbDo6U3Bhbjxjb25zdCByZXN1
bHRfdD4gcmVzdWx0cykgeworICAgIHJldHVybiBhYnNsOjpTdHJKb2luKHJlc3VsdHMsICIsICIp
OworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KK3N0cnVjdCBEaXN0cmlidXRpb25G
b3JtYXRUcmFpdHM8YWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxSPj4geworICB1c2lu
ZyBkaXN0cmlidXRpb25fdCA9IGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248Uj47Cisg
IHVzaW5nIHJlc3VsdF90ID0gdHlwZW5hbWUgZGlzdHJpYnV0aW9uX3Q6OnJlc3VsdF90eXBlOwor
CisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogTmFtZSgpIHsgcmV0dXJuICJVbmlmb3Jt
IjsgfQorCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGdW5jdGlvbk5hbWUoKSB7CisgICAgcmV0dXJu
IGFic2w6OlN0ckNhdChOYW1lKCksICI8IiwgU2NhbGFyVHlwZU5hbWU8Uj4oKSwgIj4iKTsKKyAg
fQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0QXJncyhjb25zdCBkaXN0cmlidXRpb25fdCYg
ZCkgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoKGQubWluKSgpLCAiLCAiLCAoZC5tYXgpKCkp
OworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRSZXN1bHRzKGFic2w6OlNwYW48Y29u
c3QgcmVzdWx0X3Q+IHJlc3VsdHMpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RySm9pbihyZXN1bHRz
LCAiLCAiKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFI+CitzdHJ1Y3QgRGlzdHJp
YnV0aW9uRm9ybWF0VHJhaXRzPGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxSPj4gewor
ICB1c2luZyBkaXN0cmlidXRpb25fdCA9IGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxS
PjsKKyAgdXNpbmcgcmVzdWx0X3QgPSB0eXBlbmFtZSBkaXN0cmlidXRpb25fdDo6cmVzdWx0X3R5
cGU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBOYW1lKCkgeyByZXR1cm4gIkV4
cG9uZW50aWFsIjsgfQorCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGdW5jdGlvbk5hbWUoKSB7Cisg
ICAgcmV0dXJuIGFic2w6OlN0ckNhdChOYW1lKCksICI8IiwgU2NhbGFyVHlwZU5hbWU8Uj4oKSwg
Ij4iKTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0QXJncyhjb25zdCBkaXN0cmli
dXRpb25fdCYgZCkgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoZC5sYW1iZGEoKSk7CisgIH0K
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFJlc3VsdHMoYWJzbDo6U3Bhbjxjb25zdCByZXN1
bHRfdD4gcmVzdWx0cykgeworICAgIHJldHVybiBhYnNsOjpTdHJKb2luKHJlc3VsdHMsICIsICIp
OworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KK3N0cnVjdCBEaXN0cmlidXRpb25G
b3JtYXRUcmFpdHM8YWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248Uj4+IHsKKyAgdXNpbmcgZGlz
dHJpYnV0aW9uX3QgPSBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxSPjsKKyAgdXNpbmcgcmVz
dWx0X3QgPSB0eXBlbmFtZSBkaXN0cmlidXRpb25fdDo6cmVzdWx0X3R5cGU7CisKKyAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiBOYW1lKCkgeyByZXR1cm4gIlBvaXNzb24iOyB9CisKKyAg
c3RhdGljIHN0ZDo6c3RyaW5nIEZ1bmN0aW9uTmFtZSgpIHsKKyAgICByZXR1cm4gYWJzbDo6U3Ry
Q2F0KE5hbWUoKSwgIjwiLCBTY2FsYXJUeXBlTmFtZTxSPigpLCAiPiIpOworICB9CisgIHN0YXRp
YyBzdGQ6OnN0cmluZyBGb3JtYXRBcmdzKGNvbnN0IGRpc3RyaWJ1dGlvbl90JiBkKSB7CisgICAg
cmV0dXJuIGFic2w6OlN0ckNhdChkLm1lYW4oKSk7CisgIH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5n
IEZvcm1hdFJlc3VsdHMoYWJzbDo6U3Bhbjxjb25zdCByZXN1bHRfdD4gcmVzdWx0cykgeworICAg
IHJldHVybiBhYnNsOjpTdHJKb2luKHJlc3VsdHMsICIsICIpOworICB9Cit9OworCit0ZW1wbGF0
ZSA8Pgorc3RydWN0IERpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxhYnNsOjpiZXJub3VsbGlfZGlz
dHJpYnV0aW9uPiB7CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gYWJzbDo6YmVybm91bGxpX2Rp
c3RyaWJ1dGlvbjsKKyAgdXNpbmcgcmVzdWx0X3QgPSB0eXBlbmFtZSBkaXN0cmlidXRpb25fdDo6
cmVzdWx0X3R5cGU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBOYW1lKCkgeyBy
ZXR1cm4gIkJlcm5vdWxsaSI7IH0KKworICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIEZ1
bmN0aW9uTmFtZSgpIHsgcmV0dXJuIE5hbWUoKTsgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9y
bWF0QXJncyhjb25zdCBkaXN0cmlidXRpb25fdCYgZCkgeworICAgIHJldHVybiBhYnNsOjpTdHJD
YXQoZC5wKCkpOworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRSZXN1bHRzKGFic2w6
OlNwYW48Y29uc3QgcmVzdWx0X3Q+IHJlc3VsdHMpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RySm9p
bihyZXN1bHRzLCAiLCAiKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFI+CitzdHJ1
Y3QgRGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzPGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPFI+PiB7
CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gYWJzbDo6YmV0YV9kaXN0cmlidXRpb248Uj47Cisg
IHVzaW5nIHJlc3VsdF90ID0gdHlwZW5hbWUgZGlzdHJpYnV0aW9uX3Q6OnJlc3VsdF90eXBlOwor
CisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogTmFtZSgpIHsgcmV0dXJuICJCZXRhIjsg
fQorCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGdW5jdGlvbk5hbWUoKSB7CisgICAgcmV0dXJuIGFi
c2w6OlN0ckNhdChOYW1lKCksICI8IiwgU2NhbGFyVHlwZU5hbWU8Uj4oKSwgIj4iKTsKKyAgfQor
ICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0QXJncyhjb25zdCBkaXN0cmlidXRpb25fdCYgZCkg
eworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoZC5hbHBoYSgpLCAiLCAiLCBkLmJldGEoKSk7Cisg
IH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFJlc3VsdHMoYWJzbDo6U3Bhbjxjb25zdCBy
ZXN1bHRfdD4gcmVzdWx0cykgeworICAgIHJldHVybiBhYnNsOjpTdHJKb2luKHJlc3VsdHMsICIs
ICIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KK3N0cnVjdCBEaXN0cmlidXRp
b25Gb3JtYXRUcmFpdHM8YWJzbDo6emlwZl9kaXN0cmlidXRpb248Uj4+IHsKKyAgdXNpbmcgZGlz
dHJpYnV0aW9uX3QgPSBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjxSPjsKKyAgdXNpbmcgcmVzdWx0
X3QgPSB0eXBlbmFtZSBkaXN0cmlidXRpb25fdDo6cmVzdWx0X3R5cGU7CisKKyAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBjaGFyKiBOYW1lKCkgeyByZXR1cm4gIlppcGYiOyB9CisKKyAgc3RhdGlj
IHN0ZDo6c3RyaW5nIEZ1bmN0aW9uTmFtZSgpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RyQ2F0KE5h
bWUoKSwgIjwiLCBTY2FsYXJUeXBlTmFtZTxSPigpLCAiPiIpOworICB9CisgIHN0YXRpYyBzdGQ6
OnN0cmluZyBGb3JtYXRBcmdzKGNvbnN0IGRpc3RyaWJ1dGlvbl90JiBkKSB7CisgICAgcmV0dXJu
IGFic2w6OlN0ckNhdChkLmsoKSwgIiwgIiwgZC52KCksICIsICIsIGQucSgpKTsKKyAgfQorICBz
dGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0UmVzdWx0cyhhYnNsOjpTcGFuPGNvbnN0IHJlc3VsdF90
PiByZXN1bHRzKSB7CisgICAgcmV0dXJuIGFic2w6OlN0ckpvaW4ocmVzdWx0cywgIiwgIik7Cisg
IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSPgorc3RydWN0IERpc3RyaWJ1dGlvbkZvcm1h
dFRyYWl0czxhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb248Uj4+IHsKKyAgdXNpbmcgZGlzdHJp
YnV0aW9uX3QgPSBhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb248Uj47CisgIHVzaW5nIHJlc3Vs
dF90ID0gdHlwZW5hbWUgZGlzdHJpYnV0aW9uX3Q6OnJlc3VsdF90eXBlOworCisgIHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgY2hhciogTmFtZSgpIHsgcmV0dXJuICJHYXVzc2lhbiI7IH0KKworICBz
dGF0aWMgc3RkOjpzdHJpbmcgRnVuY3Rpb25OYW1lKCkgeworICAgIHJldHVybiBhYnNsOjpTdHJD
YXQoTmFtZSgpLCAiPCIsIFNjYWxhclR5cGVOYW1lPFI+KCksICI+Iik7CisgIH0KKyAgc3RhdGlj
IHN0ZDo6c3RyaW5nIEZvcm1hdEFyZ3MoY29uc3QgZGlzdHJpYnV0aW9uX3QmIGQpIHsKKyAgICBy
ZXR1cm4gYWJzbDo6U3RySm9pbihzdGQ6Om1ha2VfdHVwbGUoZC5tZWFuKCksIGQuc3RkZGV2KCkp
LCAiLCAiKTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0UmVzdWx0cyhhYnNsOjpT
cGFuPGNvbnN0IHJlc3VsdF90PiByZXN1bHRzKSB7CisgICAgcmV0dXJuIGFic2w6OlN0ckpvaW4o
cmVzdWx0cywgIiwgIik7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSPgorc3RydWN0
IERpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0
aW9uPFI+PiB7CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gYWJzbDo6bG9nX3VuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbjxSPjsKKyAgdXNpbmcgcmVzdWx0X3QgPSB0eXBlbmFtZSBkaXN0cmlidXRp
b25fdDo6cmVzdWx0X3R5cGU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBOYW1l
KCkgeyByZXR1cm4gIkxvZ1VuaWZvcm0iOyB9CisKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZ1bmN0
aW9uTmFtZSgpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RyQ2F0KE5hbWUoKSwgIjwiLCBTY2FsYXJU
eXBlTmFtZTxSPigpLCAiPiIpOworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRBcmdz
KGNvbnN0IGRpc3RyaWJ1dGlvbl90JiBkKSB7CisgICAgcmV0dXJuIGFic2w6OlN0ckpvaW4oc3Rk
OjptYWtlX3R1cGxlKChkLm1pbikoKSwgKGQubWF4KSgpLCBkLmJhc2UoKSksICIsICIpOworICB9
CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRSZXN1bHRzKGFic2w6OlNwYW48Y29uc3QgcmVz
dWx0X3Q+IHJlc3VsdHMpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RySm9pbihyZXN1bHRzLCAiLCAi
KTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFt
ZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9ESVNUUklCVVRJT05fRk9STUFU
X1RSQUlUU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbnMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9kaXN0cmlidXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhiYTNjZGJlODVlM2U2ZWNh
ZDAyMDUyYjM2MGQwNmVhYWVlMzk4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9k
aXN0cmlidXRpb25zLmgKQEAgLTAsMCArMSw0NDIgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBk
aXN0cmlidXRpb25zLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBoZWFk
ZXIgZGVmaW5lcyBmdW5jdGlvbnMgcmVwcmVzZW50aW5nIGRpc3RyaWJ1dGlvbnMsIHdoaWNoIHlv
dSB1c2UgaW4KKy8vIGNvbWJpbmF0aW9uIHdpdGggYW4gQWJzZWlsIHJhbmRvbSBiaXQgZ2VuZXJh
dG9yIHRvIHByb2R1Y2UgcmFuZG9tIHZhbHVlcworLy8gYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBv
ZiB0aGF0IGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUaGUgQWJzZWlsIHJhbmRvbSBsaWJyYXJ5IGRl
ZmluZXMgdGhlIGZvbGxvd2luZyBkaXN0cmlidXRpb25zIHdpdGhpbiB0aGlzCisvLyBmaWxlOgor
Ly8KKy8vICAgKiBgYWJzbDo6VW5pZm9ybWAgZm9yIHVuaWZvcm0gKGNvbnN0YW50KSBkaXN0cmli
dXRpb25zIGhhdmluZyBjb25zdGFudAorLy8gICAgIHByb2JhYmlsaXR5CisvLyAgICogYGFic2w6
OkJlcm5vdWxsaWAgZm9yIGRpc2NyZXRlIGRpc3RyaWJ1dGlvbnMgaGF2aW5nIGV4YWN0bHkgdHdv
IG91dGNvbWVzCisvLyAgICogYGFic2w6OkJldGFgIGZvciBjb250aW51b3VzIGRpc3RyaWJ1dGlv
bnMgcGFyYW1ldGVyaXplZCB0aHJvdWdoIHR3bworLy8gICAgIGZyZWUgcGFyYW1ldGVycworLy8g
ICAqIGBhYnNsOjpFeHBvbmVudGlhbGAgZm9yIGRpc2NyZXRlIGRpc3RyaWJ1dGlvbnMgb2YgZXZl
bnRzIG9jY3VycmluZworLy8gICAgIGNvbnRpbnVvdXNseSBhbmQgaW5kZXBlbmRlbnRseSBhdCBh
IGNvbnN0YW50IGF2ZXJhZ2UgcmF0ZQorLy8gICAqIGBhYnNsOjpHYXVzc2lhbmAgKGFsc28ga25v
d24gYXMgIm5vcm1hbCBkaXN0cmlidXRpb25zIikgZm9yIGNvbnRpbnVvdXMKKy8vICAgICBkaXN0
cmlidXRpb25zIHVzaW5nIGFuIGFzc29jaWF0ZWQgcXVhZHJhdGljIGZ1bmN0aW9uCisvLyAgICog
YGFic2w6OkxvZ1VuaWZvcm1gIGZvciBjb250aW51b3VzIHVuaWZvcm0gZGlzdHJpYnV0aW9ucyB3
aGVyZSB0aGUgbG9nCisvLyAgICAgdG8gdGhlIGdpdmVuIGJhc2Ugb2YgYWxsIHZhbHVlcyBpcyB1
bmlmb3JtCisvLyAgICogYGFic2w6OlBvaXNzb25gIGZvciBkaXNjcmV0ZSBwcm9iYWJpbGl0eSBk
aXN0cmlidXRpb25zIHRoYXQgZXhwcmVzcyB0aGUKKy8vICAgICBwcm9iYWJpbGl0eSBvZiBhIGdp
dmVuIG51bWJlciBvZiBldmVudHMgb2NjdXJyaW5nIHdpdGhpbiBhIGZpeGVkIGludGVydmFsCisv
LyAgICogYGFic2w6OlppcGZgIGZvciBkaXNjcmV0ZSBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb25z
IGNvbW1vbmx5IHVzZWQgZm9yCisvLyAgICAgbW9kZWxsaW5nIG9mIHJhcmUgZXZlbnRzCisvLwor
Ly8gUHJlZmVyIHVzZSBvZiB0aGVzZSBkaXN0cmlidXRpb24gZnVuY3Rpb24gY2xhc3NlcyBvdmVy
IG1hbnVhbCBjb25zdHJ1Y3Rpb24gb2YKKy8vIHlvdXIgb3duIGRpc3RyaWJ1dGlvbiBjbGFzc2Vz
LCBhcyBpdCBhbGxvd3MgbGlicmFyeSBtYWludGFpbmVycyBncmVhdGVyCisvLyBmbGV4aWJpbGl0
eSB0byBjaGFuZ2UgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gaW4gdGhlIGZ1dHVyZS4K
KworI2lmbmRlZiBBQlNMX1JBTkRPTV9ESVNUUklCVVRJT05TX0hfCisjZGVmaW5lIEFCU0xfUkFO
RE9NX0RJU1RSSUJVVElPTlNfSF8KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxj
bWF0aD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHR5
cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2lubGluZV92YXJpYWJs
ZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2Jlcm5vdWxsaV9kaXN0cmlidXRpb24uaCIKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS9iZXRhX2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFic2wv
cmFuZG9tL2Rpc3RyaWJ1dGlvbl9mb3JtYXRfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vZ2F1
c3NpYW5fZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlz
dHJpYnV0aW9ucy5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2ludGVybmFsL3VuaWZvcm1faGVscGVyLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0Cisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL3BvaXNzb25fZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3pp
cGZfZGlzdHJpYnV0aW9uLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKKworQUJTTF9JTlRFUk5BTF9J
TkxJTkVfQ09OU1RFWFBSKHJhbmRvbV9pbnRlcm5hbDo6SW50ZXJ2YWxDbG9zZWRDbG9zZWRULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVydmFsQ2xvc2VkQ2xvc2VkLCB7fSk7
CitBQlNMX0lOVEVSTkFMX0lOTElORV9DT05TVEVYUFIocmFuZG9tX2ludGVybmFsOjpJbnRlcnZh
bENsb3NlZENsb3NlZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJ2YWxD
bG9zZWQsIHt9KTsKK0FCU0xfSU5URVJOQUxfSU5MSU5FX0NPTlNURVhQUihyYW5kb21faW50ZXJu
YWw6OkludGVydmFsQ2xvc2VkT3BlblQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW50ZXJ2YWxDbG9zZWRPcGVuLCB7fSk7CitBQlNMX0lOVEVSTkFMX0lOTElORV9DT05TVEVYUFIo
cmFuZG9tX2ludGVybmFsOjpJbnRlcnZhbE9wZW5PcGVuVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnRlcnZhbE9wZW5PcGVuLCB7fSk7CitBQlNMX0lOVEVSTkFMX0lOTElORV9D
T05TVEVYUFIocmFuZG9tX2ludGVybmFsOjpJbnRlcnZhbE9wZW5PcGVuVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnRlcnZhbE9wZW4sIHt9KTsKK0FCU0xfSU5URVJOQUxfSU5M
SU5FX0NPTlNURVhQUihyYW5kb21faW50ZXJuYWw6OkludGVydmFsT3BlbkNsb3NlZFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJ2YWxPcGVuQ2xvc2VkLCB7fSk7CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNsOjpVbmlmb3JtPFQ+KHRhZywgYml0Z2VuLCBs
bywgaGkpCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIGBhYnNsOjpVbmlmb3JtKClg
IHByb2R1Y2VzIHJhbmRvbSB2YWx1ZXMgb2YgdHlwZSBgVGAgdW5pZm9ybWx5IGRpc3RyaWJ1dGVk
IGluCisvLyBhIGRlZmluZWQgaW50ZXJ2YWwge2xvLCBoaX0uIFRoZSBpbnRlcnZhbCBgdGFnYCBk
ZWZpbmVzIHRoZSB0eXBlIG9mIGludGVydmFsCisvLyB3aGljaCBzaG91bGQgYmUgb25lIG9mIHRo
ZSBmb2xsb3dpbmcgcG9zc2libGUgdmFsdWVzOgorLy8KKy8vICAgKiBgYWJzbDo6SW50ZXJ2YWxP
cGVuT3BlbmAKKy8vICAgKiBgYWJzbDo6SW50ZXJ2YWxPcGVuQ2xvc2VkYAorLy8gICAqIGBhYnNs
OjpJbnRlcnZhbENsb3NlZE9wZW5gCisvLyAgICogYGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2Vk
YAorLy8KKy8vIHdoZXJlICJvcGVuIiByZWZlcnMgdG8gYW4gZXhjbHVzaXZlIHZhbHVlIChleGNs
dWRlZCkgZnJvbSB0aGUgb3V0cHV0LCB3aGlsZQorLy8gImNsb3NlZCIgcmVmZXJzIHRvIGFuIGlu
Y2x1c2l2ZSB2YWx1ZSAoaW5jbHVkZWQpIGZyb20gdGhlIG91dHB1dC4KKy8vCisvLyBJbiB0aGUg
YWJzZW5jZSBvZiBhbiBleHBsaWNpdCByZXR1cm4gdHlwZSBgVGAsIGBhYnNsOjpVbmlmb3JtKClg
IHdpbGwgZGVkdWNlCisvLyB0aGUgcmV0dXJuIHR5cGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGVu
ZHBvaW50IGFyZ3VtZW50cyB7QSBsbywgQiBoaX0uCisvLyBHaXZlbiB0aGVzZSBlbmRwb2ludHMs
IG9uZSBvZiB7QSwgQn0gd2lsbCBiZSBjaG9zZW4gYXMgdGhlIHJldHVybiB0eXBlLCBpZgorLy8g
YSB0eXBlIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCBpbnRvIHRoZSBvdGhlciBpbiBhIGxv
c3NsZXNzIHdheS4gVGhlCisvLyBsYWNrIG9mIGFueSBzdWNoIGltcGxjaXQgY29udmVyc2lvbiBi
ZXR3ZWVuIHtBLCBCfSB3aWxsIHByb2R1Y2UgYQorLy8gY29tcGlsZS10aW1lIGVycm9yCisvLwor
Ly8gU2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuaWZvcm1fZGlzdHJpYnV0aW9u
Xyhjb250aW51b3VzKQorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhYnNsOjpCaXRHZW4gYml0
Z2VuOworLy8KKy8vICAgLy8gUHJvZHVjZSBhIHJhbmRvbSBmbG9hdCB2YWx1ZSBiZXR3ZWVuIDAu
MCBhbmQgMS4wLCBpbmNsdXNpdmUKKy8vICAgYXV0byB4ID0gYWJzbDo6VW5pZm9ybShhYnNsOjpJ
bnRlcnZhbENsb3NlZENsb3NlZCwgYml0Z2VuLCAwLjBmLCAxLjBmKTsKKy8vCisvLyAgIC8vIFRo
ZSBtb3N0IGNvbW1vbiBpbnRlcnZhbCBvZiBgYWJzbDo6SW50ZXJ2YWxDbG9zZWRPcGVuYCBpcyBh
dmFpbGFibGUgYnkKKy8vICAgLy8gZGVmYXVsdDoKKy8vCisvLyAgIGF1dG8geCA9IGFic2w6OlVu
aWZvcm0oYml0Z2VuLCAwLjBmLCAxLjBmKTsKKy8vCisvLyAgIC8vIFJldHVybi10eXBlcyBhcmUg
dHlwaWNhbGx5IGluZmVycmVkIGZyb20gdGhlIGFyZ3VtZW50cywgaG93ZXZlciBjYWxsZXJzCisv
LyAgIC8vIGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgYW4gZXhwbGljaXQgcmV0dXJuLXR5cGUgdG8g
dGhlIHRlbXBsYXRlLgorLy8KKy8vICAgYXV0byB4ID0gYWJzbDo6VW5pZm9ybTxmbG9hdD4oYml0
Z2VuLCAwLCAxKTsKKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiA9IHZvaWQsIHR5cGVuYW1lIFRh
Z1R5cGUsIHR5cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwhc3RkOjpp
c19zYW1lPFIsIHZvaWQ+Ojp2YWx1ZSwgUj4gIC8vCitVbmlmb3JtKFRhZ1R5cGUgdGFnLAorICAg
ICAgICBVUkJHJiYgdXJiZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAg
IFIgbG8sIFIgaGkpIHsKKyAgdXNpbmcgZ2VuX3QgPSBhYnNsOjpkZWNheV90PFVSQkc+OworICBy
ZXR1cm4gcmFuZG9tX2ludGVybmFsOjpVbmlmb3JtSW1wbDxSLCBUYWdUeXBlLCBnZW5fdD4odGFn
LCB1cmJnLCBsbywgaGkpOworfQorCisvLyBhYnNsOjpVbmlmb3JtPFQ+KGJpdGdlbiwgbG8sIGhp
KQorLy8KKy8vIE92ZXJsb2FkIG9mIGBVbmlmb3JtKClgIHVzaW5nIHRoZSBkZWZhdWx0IGNsb3Nl
ZC1vcGVuIGludGVydmFsIG9mIFtsbywgaGkpLAorLy8gYW5kIHJldHVybmluZyB2YWx1ZXMgb2Yg
dHlwZSBgVGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBSID0gdm9pZCwgdHlwZW5hbWUgVVJCRz4KK3R5
cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8Uiwgdm9pZD46OnZhbHVlLCBS
PiAgLy8KK1VuaWZvcm0oVVJCRyYmIHVyYmcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2Vz
KQorICAgICAgICBSIGxvLCBSIGhpKSB7CisgIGNvbnN0ZXhwciBhdXRvIHRhZyA9IGFic2w6Oklu
dGVydmFsQ2xvc2VkT3BlbjsKKyAgdXNpbmcgdGFnX3QgPSBkZWNsdHlwZSh0YWcpOworICB1c2lu
ZyBnZW5fdCA9IGFic2w6OmRlY2F5X3Q8VVJCRz47CisKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5h
bDo6VW5pZm9ybUltcGw8UiwgdGFnX3QsIGdlbl90Pih0YWcsIHVyYmcsIGxvLCBoaSk7Cit9CisK
Ky8vIGFic2w6OlVuaWZvcm0odGFnLCBiaXRnZW4sIGxvLCBoaSkKKy8vCisvLyBPdmVybG9hZCBv
ZiBgVW5pZm9ybSgpYCB1c2luZyBkaWZmZXJlbnQgKGJ1dCBjb21wYXRpYmxlKSBsbywgaGkgdHlw
ZXMuIE5vdGUKKy8vIHRoYXQgYSBjb21waWxlLWVycm9yIHdpbGwgcmVzdWx0IGlmIHRoZSByZXR1
cm4gdHlwZSBjYW5ub3QgYmUgZGVkdWNlZAorLy8gY29ycmVjdGx5IGZyb20gdGhlIHBhc3NlZCB0
eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBSID0gdm9pZCwgdHlwZW5hbWUgVGFnVHlwZSwgdHlw
ZW5hbWUgVVJCRywgdHlwZW5hbWUgQSwKKyAgICAgICAgICB0eXBlbmFtZSBCPgordHlwZW5hbWUg
YWJzbDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPFIsIHZvaWQ+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJhbmRvbV9pbnRlcm5hbDo6dW5pZm9ybV9pbmZlcnJlZF9yZXR1
cm5fdDxBLCBCPj4KK1VuaWZvcm0oVGFnVHlwZSB0YWcsCisgICAgICAgIFVSQkcmJiB1cmJnLCAg
Ly8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgQSBsbywgQiBoaSkgeworICB1
c2luZyBnZW5fdCA9IGFic2w6OmRlY2F5X3Q8VVJCRz47CisgIHVzaW5nIHJldHVybl90ID0gdHlw
ZW5hbWUgcmFuZG9tX2ludGVybmFsOjp1bmlmb3JtX2luZmVycmVkX3JldHVybl90PEEsIEI+Owor
CisgIHJldHVybiByYW5kb21faW50ZXJuYWw6OlVuaWZvcm1JbXBsPHJldHVybl90LCBUYWdUeXBl
LCBnZW5fdD4odGFnLCB1cmJnLCBsbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaSk7Cit9CisKKy8vIGFic2w6OlVuaWZv
cm0oYml0Z2VuLCBsbywgaGkpCisvLworLy8gT3ZlcmxvYWQgb2YgYFVuaWZvcm0oKWAgdXNpbmcg
ZGlmZmVyZW50IChidXQgY29tcGF0aWJsZSkgbG8sIGhpIHR5cGVzIGFuZCB0aGUKKy8vIGRlZmF1
bHQgY2xvc2VkLW9wZW4gaW50ZXJ2YWwgb2YgW2xvLCBoaSkuIE5vdGUgdGhhdCBhIGNvbXBpbGUt
ZXJyb3Igd2lsbAorLy8gcmVzdWx0IGlmIHRoZSByZXR1cm4gdHlwZSBjYW5ub3QgYmUgZGVkdWNl
ZCBjb3JyZWN0bHkgZnJvbSB0aGUgcGFzc2VkIHR5cGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFIg
PSB2b2lkLCB0eXBlbmFtZSBVUkJHLCB0eXBlbmFtZSBBLCB0eXBlbmFtZSBCPgordHlwZW5hbWUg
YWJzbDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPFIsIHZvaWQ+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJhbmRvbV9pbnRlcm5hbDo6dW5pZm9ybV9pbmZlcnJlZF9yZXR1
cm5fdDxBLCBCPj4KK1VuaWZvcm0oVVJCRyYmIHVyYmcsICAvLyBOT0xJTlQocnVudGltZS9yZWZl
cmVuY2VzKQorICAgICAgICBBIGxvLCBCIGhpKSB7CisgIGNvbnN0ZXhwciBhdXRvIHRhZyA9IGFi
c2w6OkludGVydmFsQ2xvc2VkT3BlbjsKKyAgdXNpbmcgdGFnX3QgPSBkZWNsdHlwZSh0YWcpOwor
ICB1c2luZyBnZW5fdCA9IGFic2w6OmRlY2F5X3Q8VVJCRz47CisgIHVzaW5nIHJldHVybl90ID0g
dHlwZW5hbWUgcmFuZG9tX2ludGVybmFsOjp1bmlmb3JtX2luZmVycmVkX3JldHVybl90PEEsIEI+
OworCisgIHJldHVybiByYW5kb21faW50ZXJuYWw6OlVuaWZvcm1JbXBsPHJldHVybl90LCB0YWdf
dCwgZ2VuX3Q+KHRhZywgdXJiZywgbG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpKTsKK30KKworLy8gYWJzbDo6VW5pZm9y
bTx1bnNpZ25lZCBUPihiaXRnZW4pCisvLworLy8gT3ZlcmxvYWQgb2YgVW5pZm9ybSgpIHVzaW5n
IHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBvZiBhIGdpdmVuIHR5cGUKKy8vIGBUYCAo
d2hpY2ggbXVzdCBiZSB1bnNpZ25lZCksIHJldHVybmluZyBhIHZhbHVlIG9mIHR5cGUgYHVuc2ln
bmVkIFRgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIGFi
c2w6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NpZ25lZDxSPjo6dmFsdWUsIFI+ICAvLworVW5pZm9y
bShVUkJHJiYgdXJiZykgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgY29uc3Rl
eHByIGF1dG8gdGFnID0gYWJzbDo6SW50ZXJ2YWxDbG9zZWRDbG9zZWQ7CisgIGNvbnN0ZXhwciBh
dXRvIGxvID0gc3RkOjpudW1lcmljX2xpbWl0czxSPjo6bG93ZXN0KCk7CisgIGNvbnN0ZXhwciBh
dXRvIGhpID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8Uj46Om1heCkoKTsKKyAgdXNpbmcgdGFnX3Qg
PSBkZWNsdHlwZSh0YWcpOworICB1c2luZyBnZW5fdCA9IGFic2w6OmRlY2F5X3Q8VVJCRz47CisK
KyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6VW5pZm9ybUltcGw8UiwgdGFnX3QsIGdlbl90Pih0
YWcsIHVyYmcsIGxvLCBoaSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNs
OjpCZXJub3VsbGkoYml0Z2VuLCBwKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBg
YWJzbDo6QmVybm91bGxpYCBwcm9kdWNlcyBhIHJhbmRvbSBib29sZWFuIHZhbHVlLCB3aXRoIHBy
b2JhYmlsaXR5IGBwYAorLy8gKHdoZXJlIDAuMCA8PSBwIDw9IDEuMCkgZXF1YWxpbmcgYHRydWVg
LgorLy8KKy8vIFByZWZlciBgYWJzbDo6QmVybm91bGxpYCB0byBwcm9kdWNlIGJvb2xlYW4gdmFs
dWVzIG92ZXIgb3RoZXIgYWx0ZXJuYXRpdmVzCisvLyBzdWNoIGFzIGNvbXBhcmluZyBhbiBgYWJz
bDo6VW5pZm9ybSgpYCB2YWx1ZSB0byBhIHNwZWNpZmljIG91dHB1dC4KKy8vCisvLyBTZWUgaHR0
cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmVybm91bGxpX2Rpc3RyaWJ1dGlvbgorLy8KKy8v
IEV4YW1wbGU6CisvLworLy8gICBhYnNsOjpCaXRHZW4gYml0Z2VuOworLy8gICAuLi4KKy8vICAg
aWYgKGFic2w6OkJlcm5vdWxsaShiaXRnZW4sIDEuMC8zNzIxLjApKSB7CisvLyAgICAgc3RkOjpj
b3V0IDw8ICJBc3Rlcm9pZCBmaWVsZCBuYXZpZ2F0aW9uIHN1Y2Nlc3NmdWwuIjsKKy8vICAgfQor
Ly8KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorYm9vbCBCZXJub3VsbGkoVVJCRyYmIHVyYmcs
ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgZG91YmxlIHAp
IHsKKyAgdXNpbmcgZ2VuX3QgPSBhYnNsOjpkZWNheV90PFVSQkc+OworICB1c2luZyBkaXN0cmli
dXRpb25fdCA9IGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb247CisgIHVzaW5nIGZvcm1hdF90
ID0gcmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8ZGlzdHJpYnV0aW9u
X3Q+OworCisgIHJldHVybiByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkNhbGxlcjxnZW5f
dD46OnRlbXBsYXRlIENhbGw8CisgICAgICBkaXN0cmlidXRpb25fdCwgZm9ybWF0X3Q+KCZ1cmJn
LCBwKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6OkJldGE8VD4oYml0
Z2VuLCBhbHBoYSwgYmV0YSkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gYGFic2w6
OkJldGFgIHByb2R1Y2VzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGRpc3RyaWJ1dGVkIGluIHRo
ZSBjbG9zZWQKKy8vIGludGVydmFsIFswLDFdIGFuZCBwYXJhbWV0ZXJpemVkIGJ5IHR3byB2YWx1
ZXMgYGFscGhhYCBhbmQgYGJldGFgIGFzIHBlciBhCisvLyBCZXRhIGRpc3RyaWJ1dGlvbi4gYFRg
IG11c3QgYmUgYSBmbG9hdGluZyBwb2ludCB0eXBlLCBidXQgbWF5IGJlIGluZmVycmVkCisvLyBm
cm9tIHRoZSB0eXBlcyBvZiBgYWxwaGFgIGFuZCBgYmV0YWAuCisvLworLy8gU2VlIGh0dHBzOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL0JldGFfZGlzdHJpYnV0aW9uLgorLy8KKy8vIEV4YW1wbGU6
CisvLworLy8gICBhYnNsOjpCaXRHZW4gYml0Z2VuOworLy8gICAuLi4KKy8vICAgZG91YmxlIHNh
bXBsZSA9IGFic2w6OkJldGEoYml0Z2VuLCAzLjAsIDIuMCk7CisvLwordGVtcGxhdGUgPHR5cGVu
YW1lIFJlYWxUeXBlLCB0eXBlbmFtZSBVUkJHPgorUmVhbFR5cGUgQmV0YShVUkJHJiYgdXJiZywg
IC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgIFJlYWxUeXBlIGFs
cGhhLCBSZWFsVHlwZSBiZXRhKSB7CisgIHN0YXRpY19hc3NlcnQoCisgICAgICBzdGQ6OmlzX2Zs
b2F0aW5nX3BvaW50PFJlYWxUeXBlPjo6dmFsdWUsCisgICAgICAiVGVtcGxhdGUtYXJndW1lbnQg
J1JlYWxUeXBlJyBtdXN0IGJlIGEgZmxvYXRpbmctcG9pbnQgdHlwZSwgaW4gIgorICAgICAgImFi
c2w6OkJldGE8UmVhbFR5cGUsIFVSQkc+KC4uLikiKTsKKworICB1c2luZyBnZW5fdCA9IGFic2w6
OmRlY2F5X3Q8VVJCRz47CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gdHlwZW5hbWUgYWJzbDo6
YmV0YV9kaXN0cmlidXRpb248UmVhbFR5cGU+OworICB1c2luZyBmb3JtYXRfdCA9IHJhbmRvbV9p
bnRlcm5hbDo6RGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzPGRpc3RyaWJ1dGlvbl90PjsKKworICBy
ZXR1cm4gcmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25DYWxsZXI8Z2VuX3Q+Ojp0ZW1wbGF0
ZSBDYWxsPAorICAgICAgZGlzdHJpYnV0aW9uX3QsIGZvcm1hdF90PigmdXJiZywgYWxwaGEsIGJl
dGEpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6RXhwb25lbnRpYWw8
VD4oYml0Z2VuLCBsYW1iZGEgPSAxKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBg
YWJzbDo6RXhwb25lbnRpYWxgIHByb2R1Y2VzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGZvciBk
aXNjcmV0ZQorLy8gZGlzdHJpYnV0aW9ucyBvZiBldmVudHMgb2NjdXJyaW5nIGNvbnRpbnVvdXNs
eSBhbmQgaW5kZXBlbmRlbnRseSBhdCBhCisvLyBjb25zdGFudCBhdmVyYWdlIHJhdGUuIGBUYCBt
dXN0IGJlIGEgZmxvYXRpbmcgcG9pbnQgdHlwZSwgYnV0IG1heSBiZSBpbmZlcnJlZAorLy8gZnJv
bSB0aGUgdHlwZSBvZiBgbGFtYmRhYC4KKy8vCisvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvRXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uLgorLy8KKy8vIEV4YW1wbGU6CisvLwor
Ly8gICBhYnNsOjpCaXRHZW4gYml0Z2VuOworLy8gICAuLi4KKy8vICAgZG91YmxlIGNhbGxfbGVu
Z3RoID0gYWJzbDo6RXhwb25lbnRpYWwoYml0Z2VuLCA3LjApOworLy8KK3RlbXBsYXRlIDx0eXBl
bmFtZSBSZWFsVHlwZSwgdHlwZW5hbWUgVVJCRz4KK1JlYWxUeXBlIEV4cG9uZW50aWFsKFVSQkcm
JiB1cmJnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAg
ICAgIFJlYWxUeXBlIGxhbWJkYSA9IDEpIHsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIHN0ZDo6
aXNfZmxvYXRpbmdfcG9pbnQ8UmVhbFR5cGU+Ojp2YWx1ZSwKKyAgICAgICJUZW1wbGF0ZS1hcmd1
bWVudCAnUmVhbFR5cGUnIG11c3QgYmUgYSBmbG9hdGluZy1wb2ludCB0eXBlLCBpbiAiCisgICAg
ICAiYWJzbDo6RXhwb25lbnRpYWw8UmVhbFR5cGUsIFVSQkc+KC4uLikiKTsKKworICB1c2luZyBn
ZW5fdCA9IGFic2w6OmRlY2F5X3Q8VVJCRz47CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gdHlw
ZW5hbWUgYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjsKKyAgdXNpbmcg
Zm9ybWF0X3QgPSByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxkaXN0
cmlidXRpb25fdD47CisKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9uQ2Fs
bGVyPGdlbl90Pjo6dGVtcGxhdGUgQ2FsbDwKKyAgICAgIGRpc3RyaWJ1dGlvbl90LCBmb3JtYXRf
dD4oJnVyYmcsIGxhbWJkYSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNs
OjpHYXVzc2lhbjxUPihiaXRnZW4sIG1lYW4gPSAwLCBzdGRkZXYgPSAxKQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBgYWJzbDo6R2F1c3NpYW5gIHByb2R1Y2VzIGEgZmxvYXRpbmcg
cG9pbnQgbnVtYmVyIHNlbGVjdGVkIGZyb20gdGhlIEdhdXNzaWFuCisvLyAoaWUuICJOb3JtYWwi
KSBkaXN0cmlidXRpb24uIGBUYCBtdXN0IGJlIGEgZmxvYXRpbmcgcG9pbnQgdHlwZSwgYnV0IG1h
eSBiZQorLy8gaW5mZXJyZWQgZnJvbSB0aGUgdHlwZXMgb2YgYG1lYW5gIGFuZCBgc3RkZGV2YC4K
Ky8vCisvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTm9ybWFsX2Rpc3RyaWJ1
dGlvbgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhYnNsOjpCaXRHZW4gYml0Z2VuOworLy8g
ICAuLi4KKy8vICAgZG91YmxlIGdpcmFmZmVfaGVpZ2h0ID0gYWJzbDo6R2F1c3NpYW4oYml0Z2Vu
LCAxNi4zLCAzLjMpOworLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlwZSwgdHlwZW5hbWUg
VVJCRz4KK1JlYWxUeXBlIEdhdXNzaWFuKFVSQkcmJiB1cmJnLCAgLy8gTk9MSU5UKHJ1bnRpbWUv
cmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgIFJlYWxUeXBlIG1lYW4gPSAwLCBSZWFsVHlw
ZSBzdGRkZXYgPSAxKSB7CisgIHN0YXRpY19hc3NlcnQoCisgICAgICBzdGQ6OmlzX2Zsb2F0aW5n
X3BvaW50PFJlYWxUeXBlPjo6dmFsdWUsCisgICAgICAiVGVtcGxhdGUtYXJndW1lbnQgJ1JlYWxU
eXBlJyBtdXN0IGJlIGEgZmxvYXRpbmctcG9pbnQgdHlwZSwgaW4gIgorICAgICAgImFic2w6Okdh
dXNzaWFuPFJlYWxUeXBlLCBVUkJHPiguLi4pIik7CisKKyAgdXNpbmcgZ2VuX3QgPSBhYnNsOjpk
ZWNheV90PFVSQkc+OworICB1c2luZyBkaXN0cmlidXRpb25fdCA9IHR5cGVuYW1lIGFic2w6Omdh
dXNzaWFuX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT47CisgIHVzaW5nIGZvcm1hdF90ID0gcmFuZG9t
X2ludGVybmFsOjpEaXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8ZGlzdHJpYnV0aW9uX3Q+OworCisg
IHJldHVybiByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkNhbGxlcjxnZW5fdD46OnRlbXBs
YXRlIENhbGw8CisgICAgICBkaXN0cmlidXRpb25fdCwgZm9ybWF0X3Q+KCZ1cmJnLCBtZWFuLCBz
dGRkZXYpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6TG9nVW5pZm9y
bTxUPihiaXRnZW4sIGxvLCBoaSwgYmFzZSA9IDIpCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIGBhYnNsOjpMb2dVbmlmb3JtYCBwcm9kdWNlcyByYW5kb20gdmFsdWVzIGRpc3RyaWJ1
dGVkIHdoZXJlIHRoZSBsb2cgdG8gYQorLy8gZ2l2ZW4gYmFzZSBvZiBhbGwgdmFsdWVzIGlzIHVu
aWZvcm0gaW4gYSBjbG9zZWQgaW50ZXJ2YWwgW2xvLCBoaV0uIGBUYCBtdXN0CisvLyBiZSBhbiBp
bnRlZ3JhbCB0eXBlLCBidXQgbWF5IGJlIGluZmVycmVkIGZyb20gdGhlIHR5cGVzIG9mIGBsb2Ag
YW5kIGBoaWAuCisvLworLy8gSS5lLiwgYExvZ1VuaWZvcm0oMCwgbiwgYilgIGlzIHVuaWZvcm1s
eSBkaXN0cmlidXRlZCBhY3Jvc3MgYnVja2V0cworLy8gWzBdLCBbMSwgYi0xXSwgW2IsIGJeMi0x
XSAuLiBbYl4oay0xKSwgKGJeayktMV0gLi4gW2JeZmxvb3IobG9nKG4sIGIpKSwgbl0KKy8vIGFu
ZCBpcyB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgd2l0aGluIGVhY2ggYnVja2V0LgorLy8KKy8vIFRo
ZSByZXN1bHRpbmcgcHJvYmFiaWxpdHkgZGVuc2l0eSBpcyBpbnZlcnNlbHkgcmVsYXRlZCB0byBi
dWNrZXQgc2l6ZSwgdGhvdWdoCisvLyB2YWx1ZXMgaW4gdGhlIGZpbmFsIGJ1Y2tldCBtYXkgYmUg
bW9yZSBsaWtlbHkgdGhhbiBwcmV2aW91cyB2YWx1ZXMuIChJbiB0aGUKKy8vIGV4dHJlbWUgY2Fz
ZSB3aGVyZSBuID0gYl5pIHRoZSBmaW5hbCB2YWx1ZSB3aWxsIGJlIHRpZWQgd2l0aCB6ZXJvIGFz
IHRoZSBtb3N0CisvLyBwcm9iYWJsZSByZXN1bHQuCisvLworLy8gSWYgYGxvYCBpcyBub256ZXJv
IHRoZW4gdGhpcyBkaXN0cmlidXRpb24gaXMgc2hpZnRlZCB0byB0aGUgZGVzaXJlZCBpbnRlcnZh
bCwKKy8vIHNvIExvZ1VuaWZvcm0obG8sIGhpLCBiKSBpcyBlcXVpdmFsZW50IHRvIExvZ1VuaWZv
cm0oMCwgaGktbG8sIGIpK2xvLgorLy8KKy8vIFNlZSBodHRwOi8vZWNvbGVnby5mYWNpbGlhLnNl
L2Vjb2xlZ28vc2hvdy9Mb2ctVW5pZm9ybSUyMERpc3RyaWJ1dGlvbgorLy8KKy8vIEV4YW1wbGU6
CisvLworLy8gICBhYnNsOjpCaXRHZW4gYml0Z2VuOworLy8gICAuLi4KKy8vICAgaW50IHYgPSBh
YnNsOjpMb2dVbmlmb3JtKGJpdGdlbiwgMCwgMTAwMCk7CisvLwordGVtcGxhdGUgPHR5cGVuYW1l
IEludFR5cGUsIHR5cGVuYW1lIFVSQkc+CitJbnRUeXBlIExvZ1VuaWZvcm0oVVJCRyYmIHVyYmcs
ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgIEludFR5
cGUgbG8sIEludFR5cGUgaGksIEludFR5cGUgYmFzZSA9IDIpIHsKKyAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2ludGVncmFsPEludFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiVGVtcGxh
dGUtYXJndW1lbnQgJ0ludFR5cGUnIG11c3QgYmUgYW4gaW50ZWdyYWwgdHlwZSwgaW4gIgorICAg
ICAgICAgICAgICAgICJhYnNsOjpMb2dVbmlmb3JtPEludFR5cGUsIFVSQkc+KC4uLikiKTsKKwor
ICB1c2luZyBnZW5fdCA9IGFic2w6OmRlY2F5X3Q8VVJCRz47CisgIHVzaW5nIGRpc3RyaWJ1dGlv
bl90ID0gdHlwZW5hbWUgYWJzbDo6bG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxJbnRUeXBl
PjsKKyAgdXNpbmcgZm9ybWF0X3QgPSByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkZvcm1h
dFRyYWl0czxkaXN0cmlidXRpb25fdD47CisKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6RGlz
dHJpYnV0aW9uQ2FsbGVyPGdlbl90Pjo6dGVtcGxhdGUgQ2FsbDwKKyAgICAgIGRpc3RyaWJ1dGlv
bl90LCBmb3JtYXRfdD4oJnVyYmcsIGxvLCBoaSwgYmFzZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLyBhYnNsOjpQb2lzc29uPFQ+KGJpdGdlbiwgbWVhbiA9IDEpCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIGBhYnNsOjpQb2lzc29uYCBwcm9kdWNlcyBkaXNjcmV0
ZSBwcm9iYWJpbGl0aWVzIGZvciBhIGdpdmVuIG51bWJlciBvZiBldmVudHMKKy8vIG9jY3Vycmlu
ZyB3aXRoaW4gYSBmaXhlZCBpbnRlcnZhbCB3aXRoaW4gdGhlIGNsb3NlZCBpbnRlcnZhbCBbMCwg
bWF4XS4gYFRgCisvLyBtdXN0IGJlIGFuIGludGVncmFsIHR5cGUuCisvLworLy8gU2VlIGh0dHBz
Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BvaXNzb25fZGlzdHJpYnV0aW9uCisvLworLy8gRXhh
bXBsZToKKy8vCisvLyAgIGFic2w6OkJpdEdlbiBiaXRnZW47CisvLyAgIC4uLgorLy8gICBpbnQg
cmVxdWVzdHNfcGVyX21pbnV0ZSA9IGFic2w6OlBvaXNzb248aW50PihiaXRnZW4sIDMuMik7Cisv
LwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGUsIHR5cGVuYW1lIFVSQkc+CitJbnRUeXBlIFBv
aXNzb24oVVJCRyYmIHVyYmcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAg
ICAgICAgICAgIGRvdWJsZSBtZWFuID0gMS4wKSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19p
bnRlZ3JhbDxJbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIlRlbXBsYXRlLWFyZ3Vt
ZW50ICdJbnRUeXBlJyBtdXN0IGJlIGFuIGludGVncmFsIHR5cGUsIGluICIKKyAgICAgICAgICAg
ICAgICAiYWJzbDo6UG9pc3NvbjxJbnRUeXBlLCBVUkJHPiguLi4pIik7CisKKyAgdXNpbmcgZ2Vu
X3QgPSBhYnNsOjpkZWNheV90PFVSQkc+OworICB1c2luZyBkaXN0cmlidXRpb25fdCA9IHR5cGVu
YW1lIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPEludFR5cGU+OworICB1c2luZyBmb3JtYXRf
dCA9IHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzPGRpc3RyaWJ1dGlv
bl90PjsKKworICByZXR1cm4gcmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25DYWxsZXI8Z2Vu
X3Q+Ojp0ZW1wbGF0ZSBDYWxsPAorICAgICAgZGlzdHJpYnV0aW9uX3QsIGZvcm1hdF90PigmdXJi
ZywgbWVhbik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNsOjpaaXBmPFQ+
KGJpdGdlbiwgaGkgPSBtYXgsIHEgPSAyLCB2ID0gMSkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gYGFic2w6OlppcGZgIHByb2R1Y2VzIGRpc2NyZXRlIHByb2JhYmlsaXRpZXMgY29t
bW9ubHkgdXNlZCBmb3IgbW9kZWxsaW5nIG9mCisvLyByYXJlIGV2ZW50cyBvdmVyIHRoZSBjbG9z
ZWQgaW50ZXJ2YWwgWzAsIGhpXS4gVGhlIHBhcmFtZXRlcnMgYHZgIGFuZCBgcWAKKy8vIGRldGVy
bWluZSB0aGUgc2tldyBvZiB0aGUgZGlzdHJpYnV0aW9uLiBgVGAgIG11c3QgYmUgYW4gaW50ZWdy
YWwgdHlwZSwgYnV0CisvLyBtYXkgYmUgaW5mZXJyZWQgZnJvbSB0aGUgdHlwZSBvZiBgaGlgLgor
Ly8KKy8vIFNlZSBodHRwOi8vbWF0aHdvcmxkLndvbGZyYW0uY29tL1ppcGZEaXN0cmlidXRpb24u
aHRtbAorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhYnNsOjpCaXRHZW4gYml0Z2VuOworLy8g
ICAuLi4KKy8vICAgaW50IHRlcm1fcmFuayA9IGFic2w6OlppcGY8aW50PihiaXRnZW4pOworLy8K
K3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlLCB0eXBlbmFtZSBVUkJHPgorSW50VHlwZSBaaXBm
KFVSQkcmJiB1cmJnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAg
ICBJbnRUeXBlIGhpID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46Om1heCkoKSwgZG91
YmxlIHEgPSAyLjAsCisgICAgICAgICAgICAgZG91YmxlIHYgPSAxLjApIHsKKyAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2ludGVncmFsPEludFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAi
VGVtcGxhdGUtYXJndW1lbnQgJ0ludFR5cGUnIG11c3QgYmUgYW4gaW50ZWdyYWwgdHlwZSwgaW4g
IgorICAgICAgICAgICAgICAgICJhYnNsOjpaaXBmPEludFR5cGUsIFVSQkc+KC4uLikiKTsKKwor
ICB1c2luZyBnZW5fdCA9IGFic2w6OmRlY2F5X3Q8VVJCRz47CisgIHVzaW5nIGRpc3RyaWJ1dGlv
bl90ID0gdHlwZW5hbWUgYWJzbDo6emlwZl9kaXN0cmlidXRpb248SW50VHlwZT47CisgIHVzaW5n
IGZvcm1hdF90ID0gcmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8ZGlz
dHJpYnV0aW9uX3Q+OworCisgIHJldHVybiByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkNh
bGxlcjxnZW5fdD46OnRlbXBsYXRlIENhbGw8CisgICAgICBkaXN0cmlidXRpb25fdCwgZm9ybWF0
X3Q+KCZ1cmJnLCBoaSwgcSwgdik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRp
ZiAgLy8gQUJTTF9SQU5ET01fRElTVFJJQlVUSU9OU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2Rpc3RyaWJ1dGlvbnNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXN0cmlidXRpb25zX3Rl
c3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWI4Mjg2OGQ1MzIwMzQzYzVmOGMwMDYxZTYyZDNhMmUyOTI0ZjZl
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXN0cmlidXRpb25zX3Rlc3QuY2MK
QEAgLTAsMCArMSw0OTQgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vZGlzdHJpYnV0aW9ucy5oIgorCisjaW5jbHVkZSA8
Y21hdGg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8
dmVjdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vcmFuZG9tLmgiCisKK25hbWVzcGFjZSB7CisKK2NvbnN0ZXhwciBpbnQga1NpemUgPSA0MDAw
MDA7CisKK2NsYXNzIFJhbmRvbURpc3RyaWJ1dGlvbnNUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3Qge307CisKK1RFU1RfRihSYW5kb21EaXN0cmlidXRpb25zVGVzdCwgVW5pZm9ybUJvdW5kRnVu
Y3Rpb25zKSB7CisgIHVzaW5nIGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2VkOworICB1c2luZyBh
YnNsOjpJbnRlcnZhbENsb3NlZE9wZW47CisgIHVzaW5nIGFic2w6OkludGVydmFsT3BlbkNsb3Nl
ZDsKKyAgdXNpbmcgYWJzbDo6SW50ZXJ2YWxPcGVuT3BlbjsKKyAgdXNpbmcgYWJzbDo6cmFuZG9t
X2ludGVybmFsOjp1bmlmb3JtX2xvd2VyX2JvdW5kOworICB1c2luZyBhYnNsOjpyYW5kb21faW50
ZXJuYWw6OnVuaWZvcm1fdXBwZXJfYm91bmQ7CisKKyAgLy8gYWJzbDo6dW5pZm9ybV9pbnRfZGlz
dHJpYnV0aW9uIG5hdGl2ZWx5IGFzc3VtZXMgSW50ZXJ2YWxDbG9zZWRDbG9zZWQKKyAgLy8gYWJz
bDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbiBuYXRpdmVseSBhc3N1bWVzIEludGVydmFsQ2xv
c2VkT3BlbgorCisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsT3BlbkNs
b3NlZCwgMCwgMTAwKSwgMSk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVy
dmFsT3Blbk9wZW4sIDAsIDEwMCksIDEpOworICBFWFBFQ1RfR1QodW5pZm9ybV9sb3dlcl9ib3Vu
ZDxmbG9hdD4oSW50ZXJ2YWxPcGVuQ2xvc2VkLCAwLCAxLjApLCAwKTsKKyAgRVhQRUNUX0dUKHVu
aWZvcm1fbG93ZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsT3Blbk9wZW4sIDAsIDEuMCksIDApOwor
ICBFWFBFQ1RfR1QodW5pZm9ybV9sb3dlcl9ib3VuZDxkb3VibGU+KEludGVydmFsT3BlbkNsb3Nl
ZCwgMCwgMS4wKSwgMCk7CisgIEVYUEVDVF9HVCh1bmlmb3JtX2xvd2VyX2JvdW5kPGRvdWJsZT4o
SW50ZXJ2YWxPcGVuT3BlbiwgMCwgMS4wKSwgMCk7CisKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93
ZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIDAsIDEwMCksIDApOworICBFWFBFQ1RfRVEo
dW5pZm9ybV9sb3dlcl9ib3VuZChJbnRlcnZhbENsb3NlZE9wZW4sIDAsIDEwMCksIDApOworICBF
WFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZDxmbG9hdD4oSW50ZXJ2YWxDbG9zZWRDbG9zZWQs
IDAsIDEuMCksIDApOworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZDxmbG9hdD4oSW50
ZXJ2YWxDbG9zZWRPcGVuLCAwLCAxLjApLCAwKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJf
Ym91bmQ8ZG91YmxlPihJbnRlcnZhbENsb3NlZENsb3NlZCwgMCwgMS4wKSwgMCk7CisgIEVYUEVD
VF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kPGRvdWJsZT4oSW50ZXJ2YWxDbG9zZWRPcGVuLCAwLCAx
LjApLCAwKTsKKworICBFWFBFQ1RfRVEodW5pZm9ybV91cHBlcl9ib3VuZChJbnRlcnZhbE9wZW5P
cGVuLCAwLCAxMDApLCA5OSk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kKEludGVy
dmFsQ2xvc2VkT3BlbiwgMCwgMTAwKSwgOTkpOworICBFWFBFQ1RfRVEodW5pZm9ybV91cHBlcl9i
b3VuZDxmbG9hdD4oSW50ZXJ2YWxPcGVuT3BlbiwgMCwgMS4wKSwgMS4wKTsKKyAgRVhQRUNUX0VR
KHVuaWZvcm1fdXBwZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsQ2xvc2VkT3BlbiwgMCwgMS4wKSwg
MS4wKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQ8ZG91YmxlPihJbnRlcnZhbE9w
ZW5PcGVuLCAwLCAxLjApLCAxLjApOworICBFWFBFQ1RfRVEodW5pZm9ybV91cHBlcl9ib3VuZDxk
b3VibGU+KEludGVydmFsQ2xvc2VkT3BlbiwgMCwgMS4wKSwgMS4wKTsKKworICBFWFBFQ1RfRVEo
dW5pZm9ybV91cHBlcl9ib3VuZChJbnRlcnZhbE9wZW5DbG9zZWQsIDAsIDEwMCksIDEwMCk7Cisg
IEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kKEludGVydmFsQ2xvc2VkQ2xvc2VkLCAwLCAx
MDApLCAxMDApOworICBFWFBFQ1RfR1QodW5pZm9ybV91cHBlcl9ib3VuZDxmbG9hdD4oSW50ZXJ2
YWxPcGVuQ2xvc2VkLCAwLCAxLjApLCAxLjApOworICBFWFBFQ1RfR1QodW5pZm9ybV91cHBlcl9i
b3VuZDxmbG9hdD4oSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIDAsIDEuMCksIDEuMCk7CisgIEVYUEVD
VF9HVCh1bmlmb3JtX3VwcGVyX2JvdW5kPGRvdWJsZT4oSW50ZXJ2YWxPcGVuQ2xvc2VkLCAwLCAx
LjApLCAxLjApOworICBFWFBFQ1RfR1QodW5pZm9ybV91cHBlcl9ib3VuZDxkb3VibGU+KEludGVy
dmFsQ2xvc2VkQ2xvc2VkLCAwLCAxLjApLCAxLjApOworCisgIC8vIE5lZ2F0aXZlIHZhbHVlIHRl
c3RzCisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsT3BlbkNsb3NlZCwg
LTEwMCwgLTEpLCAtOTkpOworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZChJbnRlcnZh
bE9wZW5PcGVuLCAtMTAwLCAtMSksIC05OSk7CisgIEVYUEVDVF9HVCh1bmlmb3JtX2xvd2VyX2Jv
dW5kPGZsb2F0PihJbnRlcnZhbE9wZW5DbG9zZWQsIC0yLjAsIC0xLjApLCAtMi4wKTsKKyAgRVhQ
RUNUX0dUKHVuaWZvcm1fbG93ZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsT3Blbk9wZW4sIC0yLjAs
IC0xLjApLCAtMi4wKTsKKyAgRVhQRUNUX0dUKHVuaWZvcm1fbG93ZXJfYm91bmQ8ZG91YmxlPihJ
bnRlcnZhbE9wZW5DbG9zZWQsIC0yLjAsIC0xLjApLCAtMi4wKTsKKyAgRVhQRUNUX0dUKHVuaWZv
cm1fbG93ZXJfYm91bmQ8ZG91YmxlPihJbnRlcnZhbE9wZW5PcGVuLCAtMi4wLCAtMS4wKSwgLTIu
MCk7CisKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRDbG9z
ZWQsIC0xMDAsIC0xKSwgLTEwMCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kKElu
dGVydmFsQ2xvc2VkT3BlbiwgLTEwMCwgLTEpLCAtMTAwKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1f
bG93ZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsQ2xvc2VkQ2xvc2VkLCAtMi4wLCAtMS4wKSwgLTIu
MCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kPGZsb2F0PihJbnRlcnZhbENsb3Nl
ZE9wZW4sIC0yLjAsIC0xLjApLCAtMi4wKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91
bmQ8ZG91YmxlPihJbnRlcnZhbENsb3NlZENsb3NlZCwgLTIuMCwgLTEuMCksCisgICAgICAgICAg
ICAtMi4wKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91bmQ8ZG91YmxlPihJbnRlcnZh
bENsb3NlZE9wZW4sIC0yLjAsIC0xLjApLCAtMi4wKTsKKworICBFWFBFQ1RfRVEodW5pZm9ybV91
cHBlcl9ib3VuZChJbnRlcnZhbE9wZW5PcGVuLCAtMTAwLCAtMSksIC0yKTsKKyAgRVhQRUNUX0VR
KHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRPcGVuLCAtMTAwLCAtMSksIC0yKTsK
KyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsT3Blbk9wZW4s
IC0yLjAsIC0xLjApLCAtMS4wKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQ8Zmxv
YXQ+KEludGVydmFsQ2xvc2VkT3BlbiwgLTIuMCwgLTEuMCksIC0xLjApOworICBFWFBFQ1RfRVEo
dW5pZm9ybV91cHBlcl9ib3VuZDxkb3VibGU+KEludGVydmFsT3Blbk9wZW4sIC0yLjAsIC0xLjAp
LCAtMS4wKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQ8ZG91YmxlPihJbnRlcnZh
bENsb3NlZE9wZW4sIC0yLjAsIC0xLjApLCAtMS4wKTsKKworICBFWFBFQ1RfRVEodW5pZm9ybV91
cHBlcl9ib3VuZChJbnRlcnZhbE9wZW5DbG9zZWQsIC0xMDAsIC0xKSwgLTEpOworICBFWFBFQ1Rf
RVEodW5pZm9ybV91cHBlcl9ib3VuZChJbnRlcnZhbENsb3NlZENsb3NlZCwgLTEwMCwgLTEpLCAt
MSk7CisgIEVYUEVDVF9HVCh1bmlmb3JtX3VwcGVyX2JvdW5kPGZsb2F0PihJbnRlcnZhbE9wZW5D
bG9zZWQsIC0yLjAsIC0xLjApLCAtMS4wKTsKKyAgRVhQRUNUX0dUKHVuaWZvcm1fdXBwZXJfYm91
bmQ8ZmxvYXQ+KEludGVydmFsQ2xvc2VkQ2xvc2VkLCAtMi4wLCAtMS4wKSwgLTEuMCk7CisgIEVY
UEVDVF9HVCh1bmlmb3JtX3VwcGVyX2JvdW5kPGRvdWJsZT4oSW50ZXJ2YWxPcGVuQ2xvc2VkLCAt
Mi4wLCAtMS4wKSwgLTEuMCk7CisgIEVYUEVDVF9HVCh1bmlmb3JtX3VwcGVyX2JvdW5kPGRvdWJs
ZT4oSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIC0yLjAsIC0xLjApLAorICAgICAgICAgICAgLTEuMCk7
CisKKyAgLy8gRWRnZSBjYXNlczogdGhlIG5leHQgdmFsdWUgdG93YXJkIGl0c2VsZiBpcyBpdHNl
bGYuCisgIGNvbnN0IGRvdWJsZSBkID0gMS4wOworICBjb25zdCBmbG9hdCBmID0gMS4wOworICBF
WFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZChJbnRlcnZhbE9wZW5DbG9zZWQsIGQsIGQpLCBk
KTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxPcGVuQ2xvc2VkLCBm
LCBmKSwgZik7CisKKyAgRVhQRUNUX0dUKHVuaWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxPcGVu
Q2xvc2VkLCAxLjAsIDIuMCksIDEuMCk7CisgIEVYUEVDVF9MVCh1bmlmb3JtX2xvd2VyX2JvdW5k
KEludGVydmFsT3BlbkNsb3NlZCwgMS4wLCArMC4wKSwgMS4wKTsKKyAgRVhQRUNUX0xUKHVuaWZv
cm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxPcGVuQ2xvc2VkLCAxLjAsIC0wLjApLCAxLjApOworICBF
WFBFQ1RfTFQodW5pZm9ybV9sb3dlcl9ib3VuZChJbnRlcnZhbE9wZW5DbG9zZWQsIDEuMCwgLTEu
MCksIDEuMCk7CisKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxDbG9z
ZWRDbG9zZWQsIDAuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSksCisgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWF4KCkpOworICBFWFBFQ1RfRVEodW5pZm9ybV91cHBlcl9ib3VuZChJbnRl
cnZhbENsb3NlZENsb3NlZCwgMC4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKSwKKyAgICAgICAgICAgIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworfQorCitzdHJ1Y3QgSW52YWxpZCB7fTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+CithdXRvIEluZmVycmVkVW5pZm9ybVJl
dHVyblQoaW50KQorICAgIC0+IGRlY2x0eXBlKGFic2w6OlVuaWZvcm0oc3RkOjpkZWNsdmFsPGFi
c2w6Okluc2VjdXJlQml0R2VuJj4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6ZGVjbHZhbDxBPigpLCBzdGQ6OmRlY2x2YWw8Qj4oKSkpOworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUsIHR5cGVuYW1lPgorSW52YWxpZCBJbmZlcnJlZFVuaWZvcm1SZXR1cm5UKC4uLik7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUYWdUeXBlLCB0eXBlbmFtZSBBLCB0eXBlbmFtZSBCPgorYXV0byBJ
bmZlcnJlZFRhZ2dlZFVuaWZvcm1SZXR1cm5UKGludCkKKyAgICAtPiBkZWNsdHlwZShhYnNsOjpV
bmlmb3JtKHN0ZDo6ZGVjbHZhbDxUYWdUeXBlPigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpkZWNsdmFsPGFic2w6Okluc2VjdXJlQml0R2VuJj4oKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxBPigpLCBzdGQ6OmRlY2x2YWw8Qj4oKSkp
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4KK0ludmFsaWQgSW5m
ZXJyZWRUYWdnZWRVbmlmb3JtUmV0dXJuVCguLi4pOworCisvLyBHaXZlbiB0eXBlcyA8QSwgQiwg
RXhwZWN0PiwgQ2hlY2tBcmdzSW5mZXJUeXBlKCkgdmVyaWZpZXMgdGhhdAorLy8KKy8vICAgYWJz
bDo6VW5pZm9ybShnZW4sIEF7fSwgQnt9KQorLy8KKy8vIHJldHVybnMgdGhlIHR5cGUgIkV4cGVj
dCIuCisvLworLy8gVGhpcyBpbnRlcmZhY2UgY2FuIGFsc28gYmUgdXNlZCB0byBhc3NlcnQgdGhh
dCBhIGdpdmVuIGFic2w6OlVuaWZvcm0oKQorLy8gb3ZlcmxvYWQgZG9lcyBub3QgZXhpc3QgLyB3
aWxsIG5vdCBjb21waWxlLiBHaXZlbiB0eXBlcyA8QSwgQj4sIHRoZQorLy8gZXhwcmVzc2lvbgor
Ly8KKy8vICAgZGVjbHR5cGUoYWJzbDo6VW5pZm9ybSguLi4sIHN0ZDo6ZGVjbHZhbDxBPigpLCBz
dGQ6OmRlY2x2YWw8Qj4oKSkpCisvLworLy8gd2lsbCBub3QgY29tcGlsZSwgbGVhdmluZyB0aGUg
ZGVmaW5pdGlvbiBvZiBJbmZlcnJlZFVuaWZvcm1SZXR1cm5UPEEsIEI+IHRvCisvLyByZXNvbHZl
ICh2aWEgU0ZJTkFFKSB0byB0aGUgb3ZlcmxvYWQgd2hpY2ggcmV0dXJucyB0eXBlICJJbnZhbGlk
Ii4gVGhpcworLy8gYWxsb3dzIHRlc3RzIHRvIGFzc2VydCB0aGF0IGFuIGludm9jYXRpb24gc3Vj
aCBhcworLy8KKy8vICAgYWJzbDo6VW5pZm9ybShnZW4sIDEuMjNmLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludD46Om1heCgpIC0gMSkKKy8vCisvLyBzaG91bGQgbm90IGNvbXBpbGUsIHNpbmNlIG5l
aXRoZXIgdHlwZSwgZmxvYXQgbm9yIGludCwgY2FuIHByZWNpc2VseQorLy8gcmVwcmVzZW50IGJv
dGggZW5kcG9pbnQtdmFsdWVzLiBXcml0aW5nOgorLy8KKy8vICAgQ2hlY2tBcmdzSW5mZXJUeXBl
PGZsb2F0LCBpbnQsIEludmFsaWQ+KCkKKy8vCisvLyB3aWxsIGFzc2VydCB0aGF0IHRoaXMgb3Zl
cmxvYWQgZG9lcyBub3QgZXhpc3QuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQiwg
dHlwZW5hbWUgRXhwZWN0Pgordm9pZCBDaGVja0FyZ3NJbmZlclR5cGUoKSB7CisgIHN0YXRpY19h
c3NlcnQoCisgICAgICBhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAgICBzdGQ6OmlzX3NhbWU8
RXhwZWN0LCBkZWNsdHlwZShJbmZlcnJlZFVuaWZvcm1SZXR1cm5UPEEsIEI+KDApKT4sCisgICAg
ICAgICAgc3RkOjppc19zYW1lPEV4cGVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgZGVjbHR5
cGUoSW5mZXJyZWRVbmlmb3JtUmV0dXJuVDxCLCBBPigwKSk+Pjo6dmFsdWUsCisgICAgICAiIik7
CisgIHN0YXRpY19hc3NlcnQoCisgICAgICBhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAgICBz
dGQ6OmlzX3NhbWU8RXhwZWN0LAorICAgICAgICAgICAgICAgICAgICAgICBkZWNsdHlwZShJbmZl
cnJlZFRhZ2dlZFVuaWZvcm1SZXR1cm5UPAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkludGVydmFsT3Blbk9wZW5ULCBBLCBCPigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDApKT4sCisgICAgICAgICAgc3RkOjppc19zYW1lPEV4cGVj
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgZGVjbHR5cGUoSW5mZXJyZWRUYWdnZWRVbmlmb3Jt
UmV0dXJuVDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6cmFuZG9tX2lu
dGVybmFsOjpJbnRlcnZhbE9wZW5PcGVuVCwgQiwgQT4oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwKSk+Pjo6dmFsdWUsCisgICAgICAiIik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBB
LCB0eXBlbmFtZSBCLCB0eXBlbmFtZSBFeHBsaWNpdFJldD4KK2F1dG8gRXhwbGljaXRVbmlmb3Jt
UmV0dXJuVChpbnQpIC0+IGRlY2x0eXBlKAorICAgIGFic2w6OlVuaWZvcm08RXhwbGljaXRSZXQ+
KCpzdGQ6OmRlY2x2YWw8YWJzbDo6SW5zZWN1cmVCaXRHZW4qPigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxBPigpLCBzdGQ6OmRlY2x2YWw8Qj4oKSkpOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZSBFeHBsaWNpdFJldD4KK0lu
dmFsaWQgRXhwbGljaXRVbmlmb3JtUmV0dXJuVCguLi4pOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFnVHlwZSwgdHlwZW5hbWUgQSwgdHlwZW5hbWUgQiwgdHlwZW5hbWUgRXhwbGljaXRSZXQ+Cith
dXRvIEV4cGxpY2l0VGFnZ2VkVW5pZm9ybVJldHVyblQoaW50KSAtPiBkZWNsdHlwZShhYnNsOjpV
bmlmb3JtPEV4cGxpY2l0UmV0PigKKyAgICBzdGQ6OmRlY2x2YWw8VGFnVHlwZT4oKSwgKnN0ZDo6
ZGVjbHZhbDxhYnNsOjpJbnNlY3VyZUJpdEdlbio+KCksCisgICAgc3RkOjpkZWNsdmFsPEE+KCks
IHN0ZDo6ZGVjbHZhbDxCPigpKSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5
cGVuYW1lLCB0eXBlbmFtZSBFeHBsaWNpdFJldD4KK0ludmFsaWQgRXhwbGljaXRUYWdnZWRVbmlm
b3JtUmV0dXJuVCguLi4pOworCisvLyBHaXZlbiB0eXBlcyA8QSwgQiwgRXhwZWN0PiwgQ2hlY2tB
cmdzUmV0dXJuRXhwZWN0ZWRUeXBlKCkgdmVyaWZpZXMgdGhhdAorLy8KKy8vICAgYWJzbDo6VW5p
Zm9ybTxFeHBlY3Q+KGdlbiwgQXt9LCBCe30pCisvLworLy8gcmV0dXJucyB0aGUgdHlwZSAiRXhw
ZWN0IiwgYW5kIHRoYXQgdGhlIGZ1bmN0aW9uLW92ZXJsb2FkIGhhcyB0aGUgc2lnbmF0dXJlCisv
LworLy8gICBFeHBlY3QoVVJCRyYsIEV4cGVjdCwgRXhwZWN0KQordGVtcGxhdGUgPHR5cGVuYW1l
IEEsIHR5cGVuYW1lIEIsIHR5cGVuYW1lIEV4cGVjdD4KK3ZvaWQgQ2hlY2tBcmdzUmV0dXJuRXhw
ZWN0ZWRUeXBlKCkgeworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgYWJzbDo6Y29uanVuY3Rpb248
CisgICAgICAgICAgc3RkOjppc19zYW1lPEV4cGVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ZGVjbHR5cGUoRXhwbGljaXRVbmlmb3JtUmV0dXJuVDxBLCBCLCBFeHBlY3Q+KDApKT4sCisgICAg
ICAgICAgc3RkOjppc19zYW1lPEV4cGVjdCwgZGVjbHR5cGUoRXhwbGljaXRVbmlmb3JtUmV0dXJu
VDxCLCBBLCBFeHBlY3Q+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKSk+
Pjo6dmFsdWUsCisgICAgICAiIik7CisgIHN0YXRpY19hc3NlcnQoCisgICAgICBhYnNsOjpjb25q
dW5jdGlvbjwKKyAgICAgICAgICBzdGQ6OmlzX3NhbWU8RXhwZWN0LAorICAgICAgICAgICAgICAg
ICAgICAgICBkZWNsdHlwZShFeHBsaWNpdFRhZ2dlZFVuaWZvcm1SZXR1cm5UPAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkludGVydmFsT3Bl
bk9wZW5ULCBBLCBCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBlY3Q+KDAp
KT4sCisgICAgICAgICAgc3RkOjppc19zYW1lPEV4cGVjdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgZGVjbHR5cGUoRXhwbGljaXRUYWdnZWRVbmlmb3JtUmV0dXJuVDwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpJbnRlcnZhbE9wZW5PcGVu
VCwgQiwgQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwZWN0PigwKSk+Pjo6
dmFsdWUsCisgICAgICAiIik7Cit9CisKK1RFU1RfRihSYW5kb21EaXN0cmlidXRpb25zVGVzdCwg
VW5pZm9ybVR5cGVJbmZlcmVuY2UpIHsKKyAgLy8gSW5mZXJzIGNvbW1vbiB0eXBlcy4KKyAgQ2hl
Y2tBcmdzSW5mZXJUeXBlPHVpbnQxNl90LCB1aW50MTZfdCwgdWludDE2X3Q+KCk7CisgIENoZWNr
QXJnc0luZmVyVHlwZTx1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90PigpOworICBDaGVja0Fy
Z3NJbmZlclR5cGU8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdD4oKTsKKyAgQ2hlY2tBcmdz
SW5mZXJUeXBlPGludDE2X3QsIGludDE2X3QsIGludDE2X3Q+KCk7CisgIENoZWNrQXJnc0luZmVy
VHlwZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8
aW50NjRfdCwgaW50NjRfdCwgaW50NjRfdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGZsb2F0
LCBmbG9hdCwgZmxvYXQ+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxkb3VibGUsIGRvdWJsZSwg
ZG91YmxlPigpOworCisgIC8vIEV4cGxpY2l0bHktc3BlY2lmaWVkIHJldHVybi12YWx1ZXMgb3Zl
cnJpZGUgaW5mZXJlbmNlcy4KKyAgQ2hlY2tBcmdzUmV0dXJuRXhwZWN0ZWRUeXBlPGludDE2X3Qs
IGludDE2X3QsIGludDMyX3Q+KCk7CisgIENoZWNrQXJnc1JldHVybkV4cGVjdGVkVHlwZTx1aW50
MTZfdCwgdWludDE2X3QsIGludDMyX3Q+KCk7CisgIENoZWNrQXJnc1JldHVybkV4cGVjdGVkVHlw
ZTxpbnQxNl90LCBpbnQxNl90LCBpbnQ2NF90PigpOworICBDaGVja0FyZ3NSZXR1cm5FeHBlY3Rl
ZFR5cGU8aW50MTZfdCwgaW50MzJfdCwgaW50NjRfdD4oKTsKKyAgQ2hlY2tBcmdzUmV0dXJuRXhw
ZWN0ZWRUeXBlPGludDE2X3QsIGludDMyX3QsIGRvdWJsZT4oKTsKKyAgQ2hlY2tBcmdzUmV0dXJu
RXhwZWN0ZWRUeXBlPGZsb2F0LCBmbG9hdCwgZG91YmxlPigpOworICBDaGVja0FyZ3NSZXR1cm5F
eHBlY3RlZFR5cGU8aW50LCBpbnQsIGludDE2X3Q+KCk7CisKKyAgLy8gUHJvcGVybHkgcHJvbW90
ZXMgdWludDE2X3QuCisgIENoZWNrQXJnc0luZmVyVHlwZTx1aW50MTZfdCwgdWludDMyX3QsIHVp
bnQzMl90PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDE2X3QsIHVpbnQ2NF90LCB1aW50
NjRfdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQxNl90LCBpbnQzMl90LCBpbnQzMl90
PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDE2X3QsIGludDY0X3QsIGludDY0X3Q+KCk7
CisgIENoZWNrQXJnc0luZmVyVHlwZTx1aW50MTZfdCwgZmxvYXQsIGZsb2F0PigpOworICBDaGVj
a0FyZ3NJbmZlclR5cGU8dWludDE2X3QsIGRvdWJsZSwgZG91YmxlPigpOworCisgIC8vIFByb3Bl
cmx5IHByb21vdGVzIGludDE2X3QuCisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQxNl90LCBpbnQz
Ml90LCBpbnQzMl90PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8aW50MTZfdCwgaW50NjRfdCwg
aW50NjRfdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGludDE2X3QsIGZsb2F0LCBmbG9hdD4o
KTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGludDE2X3QsIGRvdWJsZSwgZG91YmxlPigpOworCisg
IC8vIEludmFsaWQgKHUpaW50MTZfdC1wYWlyaW5ncyBkbyBub3QgY29tcGlsZS4KKyAgLy8gU2Vl
ICJDaGVja0FyZ3NJbmZlclR5cGUiIGNvbW1lbnRzIGFib3ZlLCBmb3IgaG93IHRoaXMgaXMgYWNo
aWV2ZWQuCisgIENoZWNrQXJnc0luZmVyVHlwZTx1aW50MTZfdCwgaW50MTZfdCwgSW52YWxpZD4o
KTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGludDE2X3QsIHVpbnQzMl90LCBJbnZhbGlkPigpOwor
ICBDaGVja0FyZ3NJbmZlclR5cGU8aW50MTZfdCwgdWludDY0X3QsIEludmFsaWQ+KCk7CisKKyAg
Ly8gUHJvcGVybHkgcHJvbW90ZXMgdWludDMyX3QuCisgIENoZWNrQXJnc0luZmVyVHlwZTx1aW50
MzJfdCwgdWludDY0X3QsIHVpbnQ2NF90PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDMy
X3QsIGludDY0X3QsIGludDY0X3Q+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTx1aW50MzJfdCwg
ZG91YmxlLCBkb3VibGU+KCk7CisKKyAgLy8gUHJvcGVybHkgcHJvbW90ZXMgaW50MzJfdC4KKyAg
Q2hlY2tBcmdzSW5mZXJUeXBlPGludDMyX3QsIGludDY0X3QsIGludDY0X3Q+KCk7CisgIENoZWNr
QXJnc0luZmVyVHlwZTxpbnQzMl90LCBkb3VibGUsIGRvdWJsZT4oKTsKKworICAvLyBJbnZhbGlk
ICh1KWludDMyX3QtcGFpcmluZ3MgZG8gbm90IGNvbXBpbGUuCisgIENoZWNrQXJnc0luZmVyVHlw
ZTx1aW50MzJfdCwgaW50MzJfdCwgSW52YWxpZD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGlu
dDMyX3QsIHVpbnQ2NF90LCBJbnZhbGlkPigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8aW50MzJf
dCwgZmxvYXQsIEludmFsaWQ+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTx1aW50MzJfdCwgZmxv
YXQsIEludmFsaWQ+KCk7CisKKyAgLy8gSW52YWxpZCAodSlpbnQ2NF90LXBhaXJpbmdzIGRvIG5v
dCBjb21waWxlLgorICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDY0X3QsIGludDY0X3QsIEludmFs
aWQ+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQ2NF90LCBmbG9hdCwgSW52YWxpZD4oKTsK
KyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGludDY0X3QsIGRvdWJsZSwgSW52YWxpZD4oKTsKKworICAv
LyBQcm9wZXJseSBwcm9tb3RlcyBmbG9hdC4KKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGZsb2F0LCBk
b3VibGUsIGRvdWJsZT4oKTsKKworICAvLyBFeGFtcGxlcy4KKyAgYWJzbDo6SW5zZWN1cmVCaXRH
ZW4gZ2VuOworICBFWFBFQ1RfTkUoMSwgYWJzbDo6VW5pZm9ybShnZW4sIHN0YXRpY19jYXN0PHVp
bnQxNl90PigwKSwgMS4wZikpOworICBFWFBFQ1RfTkUoMSwgYWJzbDo6VW5pZm9ybShnZW4sIDAs
IDEuMCkpOworICBFWFBFQ1RfTkUoMSwgYWJzbDo6VW5pZm9ybShhYnNsOjpJbnRlcnZhbE9wZW5P
cGVuLCBnZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQx
Nl90PigwKSwgMS4wZikpOworICBFWFBFQ1RfTkUoMSwgYWJzbDo6VW5pZm9ybShhYnNsOjpJbnRl
cnZhbE9wZW5PcGVuLCBnZW4sIDAsIDEuMCkpOworICBFWFBFQ1RfTkUoMSwgYWJzbDo6VW5pZm9y
bShhYnNsOjpJbnRlcnZhbE9wZW5PcGVuLCBnZW4sIC0xLCAxLjApKTsKKyAgRVhQRUNUX05FKDEs
IGFic2w6OlVuaWZvcm08ZG91YmxlPihhYnNsOjpJbnRlcnZhbE9wZW5PcGVuLCBnZW4sIC0xLCAx
KSk7CisgIEVYUEVDVF9ORSgxLCBhYnNsOjpVbmlmb3JtPGZsb2F0PihhYnNsOjpJbnRlcnZhbE9w
ZW5PcGVuLCBnZW4sIDAsIDEpKTsKKyAgRVhQRUNUX05FKDEsIGFic2w6OlVuaWZvcm08ZmxvYXQ+
KGdlbiwgMCwgMSkpOworfQorCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0aW9uc1Rlc3QsIFVuaWZv
cm1Ob0JvdW5kcykgeworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47CisKKyAgYWJzbDo6VW5p
Zm9ybTx1aW50OF90PihnZW4pOworICBhYnNsOjpVbmlmb3JtPHVpbnQxNl90PihnZW4pOworICBh
YnNsOjpVbmlmb3JtPHVpbnQzMl90PihnZW4pOworICBhYnNsOjpVbmlmb3JtPHVpbnQ2NF90Pihn
ZW4pOworfQorCisvLyBUT0RPKGxhcik6IFZhbGlkYXRlIHByb3BlcnRpZXMgb2Ygbm9uLWRlZmF1
bHQgaW50ZXJ2YWwtc2VtYW50aWNzLgorVEVTVF9GKFJhbmRvbURpc3RyaWJ1dGlvbnNUZXN0LCBV
bmlmb3JtUmVhbCkgeworICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHZhbHVlcyhrU2l6ZSk7CisKKyAg
YWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBmb3IgKGludCBpID0gMDsgaSA8IGtTaXplOyBp
KyspIHsKKyAgICB2YWx1ZXNbaV0gPSBhYnNsOjpVbmlmb3JtKGdlbiwgMCwgMS4wKTsKKyAgfQor
CisgIGNvbnN0IGF1dG8gbW9tZW50cyA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNv
bXB1dGVEaXN0cmlidXRpb25Nb21lbnRzKHZhbHVlcyk7CisgIEVYUEVDVF9ORUFSKDAuNSwgbW9t
ZW50cy5tZWFuLCAwLjAyKTsKKyAgRVhQRUNUX05FQVIoMSAvIDEyLjAsIG1vbWVudHMudmFyaWFu
Y2UsIDAuMDIpOworICBFWFBFQ1RfTkVBUigwLjAsIG1vbWVudHMuc2tld25lc3MsIDAuMDIpOwor
ICBFWFBFQ1RfTkVBUig5IC8gNS4wLCBtb21lbnRzLmt1cnRvc2lzLCAwLjAyKTsKK30KKworVEVT
VF9GKFJhbmRvbURpc3RyaWJ1dGlvbnNUZXN0LCBVbmlmb3JtSW50KSB7CisgIHN0ZDo6dmVjdG9y
PGRvdWJsZT4gdmFsdWVzKGtTaXplKTsKKworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47Cisg
IGZvciAoaW50IGkgPSAwOyBpIDwga1NpemU7IGkrKykgeworICAgIGNvbnN0IGludDY0X3Qga01h
eCA9IDEwMDAwMDAwMDAwMDBsbDsKKyAgICBpbnQ2NF90IGogPSBhYnNsOjpVbmlmb3JtKGFic2w6
OkludGVydmFsQ2xvc2VkQ2xvc2VkLCBnZW4sIDAsIGtNYXgpOworICAgIC8vIGNvbnZlcnQgdG8g
ZG91YmxlLgorICAgIHZhbHVlc1tpXSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oaikgLyBzdGF0aWNf
Y2FzdDxkb3VibGU+KGtNYXgpOworICB9CisKKyAgY29uc3QgYXV0byBtb21lbnRzID0KKyAgICAg
IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1vbWVudHModmFsdWVz
KTsKKyAgRVhQRUNUX05FQVIoMC41LCBtb21lbnRzLm1lYW4sIDAuMDIpOworICBFWFBFQ1RfTkVB
UigxIC8gMTIuMCwgbW9tZW50cy52YXJpYW5jZSwgMC4wMik7CisgIEVYUEVDVF9ORUFSKDAuMCwg
bW9tZW50cy5za2V3bmVzcywgMC4wMik7CisgIEVYUEVDVF9ORUFSKDkgLyA1LjAsIG1vbWVudHMu
a3VydG9zaXMsIDAuMDIpOworCisgIC8qCisgIC8vIE5PVEU6IFRoZXNlIGFyZSBub3Qgc3VwcG9y
dGVkIGJ5IGFic2w6OlVuaWZvcm0sIHdoaWNoIGlzIHNwZWNpYWxpemVkCisgIC8vIG9uIGludGVn
ZXIgYW5kIHJlYWwgdmFsdWVkIHR5cGVzLgorCisgIGVudW0gRSB7IEUwLCBFMSB9OyAgICAvLyBl
bnVtCisgIGVudW0gUyA6IGludCB7IFMwLCBTMSB9OyAgICAvLyBzaWduZWQgZW51bQorICBlbnVt
IFUgOiB1bnNpZ25lZCBpbnQgeyBVMCwgVTEgfTsgIC8vIHVuc2lnbmVkIGVudW0KKworICBhYnNs
OjpVbmlmb3JtKGdlbiwgRTAsIEUxKTsKKyAgYWJzbDo6VW5pZm9ybShnZW4sIFMwLCBTMSk7Cisg
IGFic2w6OlVuaWZvcm0oZ2VuLCBVMCwgVTEpOworICAqLworfQorCitURVNUX0YoUmFuZG9tRGlz
dHJpYnV0aW9uc1Rlc3QsIEV4cG9uZW50aWFsKSB7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdmFs
dWVzKGtTaXplKTsKKworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47CisgIGZvciAoaW50IGkg
PSAwOyBpIDwga1NpemU7IGkrKykgeworICAgIHZhbHVlc1tpXSA9IGFic2w6OkV4cG9uZW50aWFs
PGRvdWJsZT4oZ2VuKTsKKyAgfQorCisgIGNvbnN0IGF1dG8gbW9tZW50cyA9CisgICAgICBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OkNvbXB1dGVEaXN0cmlidXRpb25Nb21lbnRzKHZhbHVlcyk7Cisg
IEVYUEVDVF9ORUFSKDEuMCwgbW9tZW50cy5tZWFuLCAwLjAyKTsKKyAgRVhQRUNUX05FQVIoMS4w
LCBtb21lbnRzLnZhcmlhbmNlLCAwLjAyNSk7CisgIEVYUEVDVF9ORUFSKDIuMCwgbW9tZW50cy5z
a2V3bmVzcywgMC4xKTsKKyAgRVhQRUNUX0xUKDUuMCwgbW9tZW50cy5rdXJ0b3Npcyk7Cit9CisK
K1RFU1RfRihSYW5kb21EaXN0cmlidXRpb25zVGVzdCwgUG9pc3NvbkRlZmF1bHQpIHsKKyAgc3Rk
Ojp2ZWN0b3I8ZG91YmxlPiB2YWx1ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJlQml0R2Vu
IGdlbjsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVzW2ld
ID0gYWJzbDo6UG9pc3NvbjxpbnQ2NF90PihnZW4pOworICB9CisKKyAgY29uc3QgYXV0byBtb21l
bnRzID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1v
bWVudHModmFsdWVzKTsKKyAgRVhQRUNUX05FQVIoMS4wLCBtb21lbnRzLm1lYW4sIDAuMDIpOwor
ICBFWFBFQ1RfTkVBUigxLjAsIG1vbWVudHMudmFyaWFuY2UsIDAuMDIpOworICBFWFBFQ1RfTkVB
UigxLjAsIG1vbWVudHMuc2tld25lc3MsIDAuMDI1KTsKKyAgRVhQRUNUX0xUKDIuMCwgbW9tZW50
cy5rdXJ0b3Npcyk7Cit9CisKK1RFU1RfRihSYW5kb21EaXN0cmlidXRpb25zVGVzdCwgUG9pc3Nv
bkxhcmdlKSB7CisgIGNvbnN0ZXhwciBkb3VibGUga01lYW4gPSAxMDAwMDAwMDAuMDsKKyAgc3Rk
Ojp2ZWN0b3I8ZG91YmxlPiB2YWx1ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJlQml0R2Vu
IGdlbjsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVzW2ld
ID0gYWJzbDo6UG9pc3NvbjxpbnQ2NF90PihnZW4sIGtNZWFuKTsKKyAgfQorCisgIGNvbnN0IGF1
dG8gbW9tZW50cyA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNvbXB1dGVEaXN0cmli
dXRpb25Nb21lbnRzKHZhbHVlcyk7CisgIEVYUEVDVF9ORUFSKGtNZWFuLCBtb21lbnRzLm1lYW4s
IGtNZWFuICogMC4wMTUpOworICBFWFBFQ1RfTkVBUihrTWVhbiwgbW9tZW50cy52YXJpYW5jZSwg
a01lYW4gKiAwLjAxNSk7CisgIEVYUEVDVF9ORUFSKHN0ZDo6c3FydChrTWVhbiksIG1vbWVudHMu
c2tld25lc3MsIGtNZWFuICogMC4wMik7CisgIEVYUEVDVF9MVCgyLjAsIG1vbWVudHMua3VydG9z
aXMpOworfQorCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0aW9uc1Rlc3QsIEJlcm5vdWxsaSkgewor
ICBjb25zdGV4cHIgZG91YmxlIGtQID0gMC41MTUxNTE1MTUxOworICBzdGQ6OnZlY3Rvcjxkb3Vi
bGU+IHZhbHVlcyhrU2l6ZSk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBmb3Ig
KGludCBpID0gMDsgaSA8IGtTaXplOyBpKyspIHsKKyAgICB2YWx1ZXNbaV0gPSBhYnNsOjpCZXJu
b3VsbGkoZ2VuLCBrUCk7CisgIH0KKworICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJz
bDo6cmFuZG9tX2ludGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOwor
ICBFWFBFQ1RfTkVBUihrUCwgbW9tZW50cy5tZWFuLCAwLjAxKTsKK30KKworVEVTVF9GKFJhbmRv
bURpc3RyaWJ1dGlvbnNUZXN0LCBCZXRhKSB7CisgIGNvbnN0ZXhwciBkb3VibGUga0FscGhhID0g
Mi4wOworICBjb25zdGV4cHIgZG91YmxlIGtCZXRhID0gMy4wOworICBzdGQ6OnZlY3Rvcjxkb3Vi
bGU+IHZhbHVlcyhrU2l6ZSk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBmb3Ig
KGludCBpID0gMDsgaSA8IGtTaXplOyBpKyspIHsKKyAgICB2YWx1ZXNbaV0gPSBhYnNsOjpCZXRh
KGdlbiwga0FscGhhLCBrQmV0YSk7CisgIH0KKworICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAg
ICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1
ZXMpOworICBFWFBFQ1RfTkVBUigwLjQsIG1vbWVudHMubWVhbiwgMC4wMSk7Cit9CisKK1RFU1Rf
RihSYW5kb21EaXN0cmlidXRpb25zVGVzdCwgWmlwZikgeworICBzdGQ6OnZlY3Rvcjxkb3VibGU+
IHZhbHVlcyhrU2l6ZSk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBmb3IgKGlu
dCBpID0gMDsgaSA8IGtTaXplOyBpKyspIHsKKyAgICB2YWx1ZXNbaV0gPSBhYnNsOjpaaXBmPGlu
dDY0X3Q+KGdlbiwgMTAwKTsKKyAgfQorCisgIC8vIFRoZSBtZWFuIG9mIGEgemlwZiBkaXN0cmli
dXRpb24gaXM6IEgoTiwgcy0xKSAvIEgoTixzKS4KKyAgLy8gR2l2ZW4gdGhlIHBhcmFtZXRlciB2
ID0gMSwgdGhpcyBnaXZlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uOgorICAvLyAoSG4oMTAwLCAx
KSAtIEhuKDEsMSkpIC8gKEhuKDEwMCwyKSAtIEhuKDEsMikpID0gNi41OTQ0CisgIGNvbnN0IGF1
dG8gbW9tZW50cyA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNvbXB1dGVEaXN0cmli
dXRpb25Nb21lbnRzKHZhbHVlcyk7CisgIEVYUEVDVF9ORUFSKDYuNTk0NCwgbW9tZW50cy5tZWFu
LCAyMDAwKSA8PCBtb21lbnRzOworfQorCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0aW9uc1Rlc3Qs
IEdhdXNzaWFuKSB7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdmFsdWVzKGtTaXplKTsKKworICBh
YnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1NpemU7IGkr
KykgeworICAgIHZhbHVlc1tpXSA9IGFic2w6OkdhdXNzaWFuPGRvdWJsZT4oZ2VuKTsKKyAgfQor
CisgIGNvbnN0IGF1dG8gbW9tZW50cyA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNv
bXB1dGVEaXN0cmlidXRpb25Nb21lbnRzKHZhbHVlcyk7CisgIEVYUEVDVF9ORUFSKDAuMCwgbW9t
ZW50cy5tZWFuLCAwLjAyKTsKKyAgRVhQRUNUX05FQVIoMS4wLCBtb21lbnRzLnZhcmlhbmNlLCAw
LjA0KTsKKyAgRVhQRUNUX05FQVIoMCwgbW9tZW50cy5za2V3bmVzcywgMC4yKTsKKyAgRVhQRUNU
X05FQVIoMy4wLCBtb21lbnRzLmt1cnRvc2lzLCAwLjUpOworfQorCitURVNUX0YoUmFuZG9tRGlz
dHJpYnV0aW9uc1Rlc3QsIExvZ1VuaWZvcm0pIHsKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiB2YWx1
ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdlbjsKKyAgZm9yIChpbnQgaSA9
IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVzW2ldID0gYWJzbDo6TG9nVW5pZm9ybTxp
bnQ2NF90PihnZW4sIDAsICgxIDw8IDEwKSAtIDEpOworICB9CisKKyAgLy8gVGhlIG1lYW4gaXMg
dGhlIHN1bSBvZiB0aGUgZnJhY3Rpb25hbCBtZWFucyBvZiB0aGUgdW5pZm9ybSBkaXN0cmlidXRp
b25zOgorICAvLyBbMC4uMF1bMS4uMV1bMi4uM11bNC4uN11bOC4uMTVdWzE2Li4zMV1bMzIuLjYz
XQorICAvLyBbNjQuLjEyN11bMTI4Li4yNTVdWzI1Ni4uNTExXVs1MTIuLjEwMjNdCisgIGNvbnN0
IGRvdWJsZSBtZWFuID0gKDAgKyAxICsgMSArIDIgKyAzICsgNCArIDcgKyA4ICsgMTUgKyAxNiAr
IDMxICsgMzIgKyA2MyArCisgICAgICAgICAgICAgICAgICAgICAgIDY0ICsgMTI3ICsgMTI4ICsg
MjU1ICsgMjU2ICsgNTExICsgNTEyICsgMTAyMykgLworICAgICAgICAgICAgICAgICAgICAgICgy
LjAgKiAxMS4wKTsKKworICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJzbDo6cmFuZG9t
X2ludGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICBFWFBFQ1Rf
TkVBUihtZWFuLCBtb21lbnRzLm1lYW4sIDIpIDw8IG1vbWVudHM7Cit9CisKK30gIC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2V4YW1wbGVzX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vZXhhbXBsZXNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGNiNTE0NmYzZDAzNjU1NGYzYzEz
MzU5OGEyMGM1NGE5YWM3MDI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2V4YW1w
bGVzX3Rlc3QuY2MKQEAgLTAsMCArMSw5OSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxjaW50dHlwZXM+CisjaW5jbHVkZSA8cmFuZG9tPgor
I2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9yYW5kb20uaCIKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Cit2b2lkIFVzZShUKSB7fQorCitURVNUKEV4YW1wbGVzLCBCYXNpYykgeworICBh
YnNsOjpCaXRHZW4gZ2VuOworICBzdGQ6OnZlY3RvcjxpbnQ+IG9ianMgPSB7MTAsIDIwLCAzMCwg
NDAsIDUwfTsKKworICAvLyBDaG9vc2UgYW4gZWxlbWVudCBmcm9tIGEgc2V0LgorICBhdXRvIGVs
ZW0gPSBvYmpzW2Fic2w6OlVuaWZvcm0oZ2VuLCAwdSwgb2Jqcy5zaXplKCkpXTsKKyAgVXNlKGVs
ZW0pOworCisgIC8vIEdlbmVyYXRlIGEgdW5pZm9ybSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDYuCisg
IGF1dG8gZGljZV9yb2xsID0gYWJzbDo6VW5pZm9ybTxpbnQ+KGFic2w6OkludGVydmFsQ2xvc2Vk
Q2xvc2VkLCBnZW4sIDEsIDYpOworICBVc2UoZGljZV9yb2xsKTsKKworICAvLyBHZW5lcmF0ZSBh
IHJhbmRvbSBieXRlLgorICBhdXRvIGJ5dGUgPSBhYnNsOjpVbmlmb3JtPHVpbnQ4X3Q+KGdlbik7
CisgIFVzZShieXRlKTsKKworICAvLyBHZW5lcmF0ZSBhIGZyYWN0aW9uYWwgdmFsdWUgZnJvbSBb
MGYsIDFmKS4KKyAgYXV0byBmcmFjdGlvbiA9IGFic2w6OlVuaWZvcm08ZmxvYXQ+KGdlbiwgMCwg
MSk7CisgIFVzZShmcmFjdGlvbik7CisKKyAgLy8gVG9zcyBhIGZhaXIgY29pbjsgNTAvNTAgcHJv
YmFiaWxpdHkuCisgIGJvb2wgY29pbl90b3NzID0gYWJzbDo6QmVybm91bGxpKGdlbiwgMC41KTsK
KyAgVXNlKGNvaW5fdG9zcyk7CisKKyAgLy8gU2VsZWN0IGEgZmlsZSBzaXplIGJldHdlZW4gMWsg
YW5kIDEwTUIsIGJpYXNlZCB0b3dhcmRzIHNtYWxsZXIgZmlsZSBzaXplcy4KKyAgYXV0byBmaWxl
X3NpemUgPSBhYnNsOjpMb2dVbmlmb3JtPHNpemVfdD4oZ2VuLCAxMDAwLCAxMCAqIDEwMDAgKiAx
MDAwKTsKKyAgVXNlKGZpbGVfc2l6ZSk7CisKKyAgLy8gUmFuZG9taXplIChzaHVmZmxlKSBhIGNv
bGxlY3Rpb24uCisgIHN0ZDo6c2h1ZmZsZShzdGQ6OmJlZ2luKG9ianMpLCBzdGQ6OmVuZChvYmpz
KSwgZ2VuKTsKK30KKworVEVTVChFeGFtcGxlcywgQ3JlYXRlaW5nQ29ycmVsYXRlZFZhcmlhdGVT
ZXF1ZW5jZXMpIHsKKyAgLy8gVW5leHBlY3RlZCBQUk5HIGNvcnJlbGF0aW9uIGlzIG9mdGVuIGEg
c291cmNlIG9mIGJ1Z3MsCisgIC8vIHNvIHdoZW4gdXNpbmcgYWJzbDo6Qml0R2VuIGl0IG11c3Qg
YmUgYW4gaW50ZW50aW9uYWwgY2hvaWNlLgorICAvLyBOT1RFOiBBbGwgb2YgdGhlc2Ugb25seSBl
eGhpYml0IHByb2Nlc3MtbGV2ZWwgc3RhYmlsaXR5LgorCisgIC8vIENyZWF0ZSBhIGNvcnJlbGF0
ZWQgc2VxdWVuY2UgZnJvbSBzeXN0ZW0gZW50cm9weS4KKyAgeworICAgIGF1dG8gbXlfc2VlZCA9
IGFic2w6Ok1ha2VTZWVkU2VxKCk7CisKKyAgICBhYnNsOjpCaXRHZW4gZ2VuXzEobXlfc2VlZCk7
CisgICAgYWJzbDo6Qml0R2VuIGdlbl8yKG15X3NlZWQpOyAgLy8gUHJvZHVjZXMgc2FtZSB2YXJp
YXRlcyBhcyBnZW5fMS4KKworICAgIEVYUEVDVF9FUShhYnNsOjpCZXJub3VsbGkoZ2VuXzEsIDAu
NSksIGFic2w6OkJlcm5vdWxsaShnZW5fMiwgMC41KSk7CisgICAgRVhQRUNUX0VRKGFic2w6OlVu
aWZvcm08dWludDMyX3Q+KGdlbl8xKSwgYWJzbDo6VW5pZm9ybTx1aW50MzJfdD4oZ2VuXzIpKTsK
KyAgfQorCisgIC8vIENyZWF0ZSBhIGNvcnJlbGF0ZWQgc2VxdWVuY2UgZnJvbSBhbiBleGlzdGlu
ZyBVUkJHLgorICB7CisgICAgYWJzbDo6Qml0R2VuIGdlbjsKKworICAgIGF1dG8gbXlfc2VlZCA9
IGFic2w6OkNyZWF0ZVNlZWRTZXFGcm9tKCZnZW4pOworICAgIGFic2w6OkJpdEdlbiBnZW5fMSht
eV9zZWVkKTsKKyAgICBhYnNsOjpCaXRHZW4gZ2VuXzIobXlfc2VlZCk7CisKKyAgICBFWFBFQ1Rf
RVEoYWJzbDo6QmVybm91bGxpKGdlbl8xLCAwLjUpLCBhYnNsOjpCZXJub3VsbGkoZ2VuXzIsIDAu
NSkpOworICAgIEVYUEVDVF9FUShhYnNsOjpVbmlmb3JtPHVpbnQzMl90PihnZW5fMSksIGFic2w6
OlVuaWZvcm08dWludDMyX3Q+KGdlbl8yKSk7CisgIH0KKworICAvLyBBbiBhbHRlcm5hdGUgY29u
c3RydWN0aW9uIHdoaWNoIHVzZXMgdXNlci1zdXBwbGllZCBkYXRhCisgIC8vIGluc3RlYWQgb2Yg
YSByYW5kb20gc2VlZC4KKyAgeworICAgIGNvbnN0IGNoYXIga0RhdGFbXSA9ICJBIHNpbXBsZSBz
ZWVkIHN0cmluZyI7CisgICAgc3RkOjpzZWVkX3NlcSBteV9zZWVkKHN0ZDo6YmVnaW4oa0RhdGEp
LCBzdGQ6OmVuZChrRGF0YSkpOworCisgICAgYWJzbDo6Qml0R2VuIGdlbl8xKG15X3NlZWQpOwor
ICAgIGFic2w6OkJpdEdlbiBnZW5fMihteV9zZWVkKTsKKworICAgIEVYUEVDVF9FUShhYnNsOjpC
ZXJub3VsbGkoZ2VuXzEsIDAuNSksIGFic2w6OkJlcm5vdWxsaShnZW5fMiwgMC41KSk7CisgICAg
RVhQRUNUX0VRKGFic2w6OlVuaWZvcm08dWludDMyX3Q+KGdlbl8xKSwgYWJzbDo6VW5pZm9ybTx1
aW50MzJfdD4oZ2VuXzIpKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZXhw
b25lbnRpYWxfZGlzdHJpYnV0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZXhwb25lbnRpYWxfZGlzdHJp
YnV0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhhZjE5NzU3NWMxNjYxYmZkN2VmZmM5ZGM1ZjA5ZTFhZDMy
MGRkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9leHBvbmVudGlhbF9kaXN0cmli
dXRpb24uaApAQCAtMCwwICsxLDE1NyBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBB
dXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fRVhQT05FTlRJQUxfRElTVFJJQlVUSU9O
X0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0VYUE9ORU5USUFMX0RJU1RSSUJVVElPTl9IXworCisj
aW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxpc3RyZWFtPgor
I2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsLmgiCisjaW5jbHVkZSAiYWJzbC9y
YW5kb20vaW50ZXJuYWwvZmFzdF91bmlmb3JtX2JpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oIgorCituYW1lc3BhY2UgYWJzbCB7CisK
Ky8vIGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjoKKy8vIEdlbmVyYXRlcyBhIG51bWJl
ciBjb25mb3JtaW5nIHRvIGFuIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiBhbmQgaXMKKy8vIGVx
dWl2YWxlbnQgdG8gdGhlIHN0YW5kYXJkIFtyYW5kLmRpc3QucG9pcy5leHBdIGRpc3RyaWJ1dGlv
bi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlwZSA9IGRvdWJsZT4KK2NsYXNzIGV4cG9uZW50
aWFsX2Rpc3RyaWJ1dGlvbiB7CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IFJlYWxU
eXBlOworCisgIGNsYXNzIHBhcmFtX3R5cGUgeworICAgcHVibGljOgorICAgIHVzaW5nIGRpc3Ry
aWJ1dGlvbl90eXBlID0gZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uOworCisgICAgZXhwbGljaXQg
cGFyYW1fdHlwZShyZXN1bHRfdHlwZSBsYW1iZGEgPSAxKSA6IGxhbWJkYV8obGFtYmRhKSB7Cisg
ICAgICBhc3NlcnQobGFtYmRhID4gMCk7CisgICAgICBuZWdfaW52X2xhbWJkYV8gPSAtcmVzdWx0
X3R5cGUoMSkgLyBsYW1iZGFfOworICAgIH0KKworICAgIHJlc3VsdF90eXBlIGxhbWJkYSgpIGNv
bnN0IHsgcmV0dXJuIGxhbWJkYV87IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgcGFyYW1fdHlwZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuIGEu
bGFtYmRhXyA9PSBiLmxhbWJkYV87CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICByZXR1
cm4gIShhID09IGIpOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgZXhw
b25lbnRpYWxfZGlzdHJpYnV0aW9uOworCisgICAgcmVzdWx0X3R5cGUgbGFtYmRhXzsKKyAgICBy
ZXN1bHRfdHlwZSBuZWdfaW52X2xhbWJkYV87CisKKyAgICBzdGF0aWNfYXNzZXJ0KAorICAgICAg
ICBzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFJlYWxUeXBlPjo6dmFsdWUsCisgICAgICAgICJDbGFz
cy10ZW1wbGF0ZSBhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248PiBtdXN0IGJlIHBhcmFt
ZXRlcml6ZWQgIgorICAgICAgICAidXNpbmcgYSBmbG9hdGluZy1wb2ludCB0eXBlLiIpOworICB9
OworCisgIGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbigpIDogZXhwb25lbnRpYWxfZGlzdHJpYnV0
aW9uKDEpIHt9CisKKyAgZXhwbGljaXQgZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uKHJlc3VsdF90
eXBlIGxhbWJkYSkgOiBwYXJhbV8obGFtYmRhKSB7fQorCisgIGV4cGxpY2l0IGV4cG9uZW50aWFs
X2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBwKSA6IHBhcmFtXyhwKSB7fQorCisgIHZv
aWQgcmVzZXQoKSB7fQorCisgIC8vIEdlbmVyYXRpbmcgZnVuY3Rpb25zCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcpIHsgIC8vIE5P
TElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgcmV0dXJuICgqdGhpcykoZywgcGFyYW1fKTsK
KyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRv
cigpKFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIHApOworCisgIHBhcmFtX3R5cGUgcGFyYW0o
KSBjb25zdCB7IHJldHVybiBwYXJhbV87IH0KKyAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBl
JiBwKSB7IHBhcmFtXyA9IHA7IH0KKworICByZXN1bHRfdHlwZShtaW4pKCkgY29uc3QgeyByZXR1
cm4gMDsgfQorICByZXN1bHRfdHlwZShtYXgpKCkgY29uc3QgeworICAgIHJldHVybiBzdGQ6Om51
bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6aW5maW5pdHkoKTsKKyAgfQorCisgIHJlc3VsdF90
eXBlIGxhbWJkYSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXy5sYW1iZGEoKTsgfQorCisgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uJiBhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbiYgYikg
eworICAgIHJldHVybiBhLnBhcmFtXyA9PSBiLnBhcmFtXzsKKyAgfQorICBmcmllbmQgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbiYgYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBleHBvbmVudGlhbF9kaXN0cmlidXRpb24mIGIpIHsKKyAgICBy
ZXR1cm4gYS5wYXJhbV8gIT0gYi5wYXJhbV87CisgIH0KKworIHByaXZhdGU6CisgIHBhcmFtX3R5
cGUgcGFyYW1fOworICByYW5kb21faW50ZXJuYWw6OkZhc3RVbmlmb3JtQml0czx1aW50NjRfdD4g
ZmFzdF91NjRfOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEltcGxlbWVudGF0aW9u
IGRldGFpbHMgZm9sbG93CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgUmVhbFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIGV4cG9uZW50
aWFsX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46OnJlc3VsdF90eXBlCitleHBvbmVudGlhbF9kaXN0
cmlidXRpb248UmVhbFR5cGU+OjpvcGVyYXRvcigpKAorICAgIFVSQkcmIGcsICAvLyBOT0xJTlQo
cnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0IHBhcmFtX3R5cGUmIHApIHsKKyAgdXNpbmcg
cmFuZG9tX2ludGVybmFsOjpOZWdhdGl2ZVZhbHVlVDsKKyAgY29uc3QgcmVzdWx0X3R5cGUgdSA9
IHJhbmRvbV9pbnRlcm5hbDo6UmFuZFU2NFRvUmVhbDwKKyAgICAgIHJlc3VsdF90eXBlPjo6dGVt
cGxhdGUgVmFsdWU8TmVnYXRpdmVWYWx1ZVQsIGZhbHNlPihmYXN0X3U2NF8oZykpOworICAvLyBs
b2cxcCgteCkgaXMgbWF0aGVtYXRpY2FsbHkgZXF1aXZhbGVudCB0byBsb2coMSAtIHgpIGJ1dCBo
YXMgbW9yZQorICAvLyBhY2N1cmFjeSBmb3IgeCBuZWFyIHplcm8uCisgIHJldHVybiBwLm5lZ19p
bnZfbGFtYmRhXyAqIHN0ZDo6bG9nMXAodSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBSZWFsVHlwZT4KK3N0ZDo6YmFzaWNfb3N0cmVh
bTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hh
clQsIFRyYWl0cz4mIG9zLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBjb25z
dCBleHBvbmVudGlhbF9kaXN0cmlidXRpb248UmVhbFR5cGU+JiB4KSB7CisgIGF1dG8gc2F2ZXIg
PSByYW5kb21faW50ZXJuYWw6Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZlcihvcyk7CisgIG9zLnBy
ZWNpc2lvbihyYW5kb21faW50ZXJuYWw6OnN0cmVhbV9wcmVjaXNpb25faGVscGVyPFJlYWxUeXBl
Pjo6a1ByZWNpc2lvbik7CisgIG9zIDw8IHgubGFtYmRhKCk7CisgIHJldHVybiBvczsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFJlYWxU
eXBlPgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcj4+KAorICAg
IHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAgIC8vIE5PTElOVChydW50
aW1lL3JlZmVyZW5jZXMpCisgICAgZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPiYg
eCkgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgdXNpbmcgcmVzdWx0X3R5cGUg
PSB0eXBlbmFtZSBleHBvbmVudGlhbF9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpyZXN1bHRfdHlw
ZTsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1lIGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlv
bjxSZWFsVHlwZT46OnBhcmFtX3R5cGU7CisgIHJlc3VsdF90eXBlIGxhbWJkYTsKKworICBhdXRv
IHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjptYWtlX2lzdHJlYW1fc3RhdGVfc2F2ZXIoaXMpOwor
ICBsYW1iZGEgPSByYW5kb21faW50ZXJuYWw6OnJlYWRfZmxvYXRpbmdfcG9pbnQ8cmVzdWx0X3R5
cGU+KGlzKTsKKyAgaWYgKCFpcy5mYWlsKCkpIHsKKyAgICB4LnBhcmFtKHBhcmFtX3R5cGUobGFt
YmRhKSk7CisgIH0KKyAgcmV0dXJuIGlzOworfQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
ZW5kaWYgIC8vIEFCU0xfUkFORE9NX0VYUE9ORU5USUFMX0RJU1RSSUJVVElPTl9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL2V4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2V4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZm
ODg2NWMyNTk5ZmFjNzRlM2FiYTZlMmVjOTcwNzRmYzM4MTRmZTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uX3Rlc3QuY2MKQEAgLTAsMCAr
MSw0MjIgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uLmgiCisKKyNpbmNsdWRl
IDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNs
dWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNp
bmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+Cisj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ21v
Y2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFz
ZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9jaGlfc3F1YXJlLmgiCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5oIgorI2luY2x1ZGUg
ImFic2wvcmFuZG9tL2ludGVybmFsL3NlcXVlbmNlX3VyYmcuaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9yYW5kb20uaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1
ZGUgImFic2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0
cl9yZXBsYWNlLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmlwLmgiCisKK25hbWVzcGFj
ZSB7CisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6a0NoaVNxdWFyZWQ7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBSZWFsVHlwZT4KK2NsYXNzIEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVHlw
ZWRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKwordXNpbmcgUmVhbFR5cGVzID0g
Ojp0ZXN0aW5nOjpUeXBlczxmbG9hdCwgZG91YmxlLCBsb25nIGRvdWJsZT47CitUWVBFRF9URVNU
X0NBU0UoRXhwb25lbnRpYWxEaXN0cmlidXRpb25UeXBlZFRlc3QsIFJlYWxUeXBlcyk7CisKK1RZ
UEVEX1RFU1QoRXhwb25lbnRpYWxEaXN0cmlidXRpb25UeXBlZFRlc3QsIFNlcmlhbGl6ZVRlc3Qp
IHsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9CisgICAgICB0eXBlbmFtZSBhYnNsOjpleHBvbmVudGlh
bF9kaXN0cmlidXRpb248VHlwZVBhcmFtPjo6cGFyYW1fdHlwZTsKKworICBjb25zdCBUeXBlUGFy
YW0ga1BhcmFtc1tdID0geworICAgICAgLy8gQ2FzZXMgYXJvdW5kIDEuCisgICAgICAxLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgc3RkOjpuZXh0
YWZ0ZXIoVHlwZVBhcmFtKDEpLCBUeXBlUGFyYW0oMCkpLCAgLy8gMSAtIGVwc2lsb24KKyAgICAg
IHN0ZDo6bmV4dGFmdGVyKFR5cGVQYXJhbSgxKSwgVHlwZVBhcmFtKDIpKSwgIC8vIDEgKyBlcHNp
bG9uCisgICAgICAvLyBUeXBpY2FsIGNhc2VzLgorICAgICAgVHlwZVBhcmFtKDFlLTgpLCBUeXBl
UGFyYW0oMWUtNCksIFR5cGVQYXJhbSgxKSwgVHlwZVBhcmFtKDIpLAorICAgICAgVHlwZVBhcmFt
KDFlNCksIFR5cGVQYXJhbSgxZTgpLCBUeXBlUGFyYW0oMWUyMCksIFR5cGVQYXJhbSgyLjUpLAor
ICAgICAgLy8gQm91bmRhcnkgY2FzZXMuCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQ
YXJhbT46Om1heCgpLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjplcHNp
bG9uKCksCisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJh
bT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtKDEpKSwgICAgICAgICAg
IC8vIG1pbiArIGVwc2lsb24KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6
bWluKCksICAvLyBzbWFsbGVzdCBub3JtYWwKKyAgICAgIC8vIFRoZXJlIGFyZSBzb21lIGVycm9y
cyBkZWFsaW5nIHdpdGggZGVub3JtcyBvbiBhcHBsZSBwbGF0Zm9ybXMuCisgICAgICBzdGQ6Om51
bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46OmRlbm9ybV9taW4oKSwgIC8vIHNtYWxsZXN0IGRlbm9y
bQorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSAvIDIsICAgICAv
LyBkZW5vcm0KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBh
cmFtPjo6bWluKCksCisgICAgICAgICAgICAgICAgICAgICBUeXBlUGFyYW0oMCkpLCAgLy8gZGVu
b3JtX21heAorICB9OworCisgIGNvbnN0ZXhwciBpbnQga0NvdW50ID0gMTAwMDsKKyAgYWJzbDo6
SW5zZWN1cmVCaXRHZW4gZ2VuOworCisgIGZvciAoY29uc3QgVHlwZVBhcmFtIGxhbWJkYSA6IGtQ
YXJhbXMpIHsKKyAgICAvLyBTb21lIHZhbHVlcyBtYXkgYmUgaW52YWxpZDsgc2tpcCB0aG9zZS4K
KyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobGFtYmRhKSkgY29udGludWU7CisgICAgQUJTTF9BU1NF
UlQobGFtYmRhID4gMCk7CisKKyAgICBjb25zdCBwYXJhbV90eXBlIHBhcmFtKGxhbWJkYSk7CisK
KyAgICBhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBiZWZvcmUobGFt
YmRhKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLmxhbWJkYSgpLCBwYXJhbS5sYW1iZGEoKSk7CisK
KyAgICB7CisgICAgICBhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiB2
aWFfcGFyYW0ocGFyYW0pOworICAgICAgRVhQRUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAg
ICAgIEVYUEVDVF9FUSh2aWFfcGFyYW0ucGFyYW0oKSwgYmVmb3JlLnBhcmFtKCkpOworICAgIH0K
KworICAgIC8vIFNtb2tlIHRlc3QuCisgICAgYXV0byBzYW1wbGVfbWluID0gYmVmb3JlLm1heCgp
OworICAgIGF1dG8gc2FtcGxlX21heCA9IGJlZm9yZS5taW4oKTsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGtDb3VudDsgaSsrKSB7CisgICAgICBhdXRvIHNhbXBsZSA9IGJlZm9yZShnZW4pOwor
ICAgICAgRVhQRUNUX0dFKHNhbXBsZSwgYmVmb3JlLm1pbigpKSA8PCBiZWZvcmU7CisgICAgICBF
WFBFQ1RfTEUoc2FtcGxlLCBiZWZvcmUubWF4KCkpIDw8IGJlZm9yZTsKKyAgICAgIGlmIChzYW1w
bGUgPiBzYW1wbGVfbWF4KSBzYW1wbGVfbWF4ID0gc2FtcGxlOworICAgICAgaWYgKHNhbXBsZSA8
IHNhbXBsZV9taW4pIHNhbXBsZV9taW4gPSBzYW1wbGU7CisgICAgfQorICAgIGlmICghc3RkOjpp
c19zYW1lPFR5cGVQYXJhbSwgbG9uZyBkb3VibGU+Ojp2YWx1ZSkgeworICAgICAgQUJTTF9JTlRF
Uk5BTF9MT0coSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlN0ckZvcm1hdCgi
UmFuZ2UgeyVmfTogJWYsICVmLCBsYW1iZGE9JWYiLCBsYW1iZGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX21pbiwgc2FtcGxlX21heCwgbGFtYmRhKSk7
CisgICAgfQorCisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgICAgc3MgPDwgYmVmb3JlOwor
CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGxhbWJkYSkpIHsKKyAgICAgIC8vIFN0cmVhbXMgZG8g
bm90IGRlc2VyaWFsaXplIGluZi9uYW4gY29ycmVjdGx5LgorICAgICAgY29udGludWU7CisgICAg
fQorICAgIC8vIFZhbGlkYXRlIHN0cmVhbSBzZXJpYWxpemF0aW9uLgorICAgIGFic2w6OmV4cG9u
ZW50aWFsX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGFmdGVyKDM0LjU2Zik7CisKKyAgICBFWFBF
Q1RfTkUoYmVmb3JlLmxhbWJkYSgpLCBhZnRlci5sYW1iZGEoKSk7CisgICAgRVhQRUNUX05FKGJl
Zm9yZS5wYXJhbSgpLCBhZnRlci5wYXJhbSgpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLCBhZnRl
cik7CisKKyAgICBzcyA+PiBhZnRlcjsKKworI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwg
ZGVmaW5lZChfX1BQQzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IFwKKyAgICBkZWZp
bmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19QUENfXykKKyAgICBpZiAoc3RkOjppc19zYW1lPFR5
cGVQYXJhbSwgbG9uZyBkb3VibGU+Ojp2YWx1ZSkgeworICAgICAgLy8gUm91bmR0cmlwcGluZyBm
bG9hdGluZyBwb2ludCB2YWx1ZXMgcmVxdWlyZXMgc3VmZmljaWVudCBwcmVjaXNpb24gdG8KKyAg
ICAgIC8vIHJlY29uc3RydWN0IHRoZSBleGFjdCB2YWx1ZS4gSXQgdHVybnMgb3V0IHRoYXQgbG9u
ZyBkb3VibGUgaGFzIHNvbWUKKyAgICAgIC8vIGVycm9ycyBkb2luZyB0aGlzIG9uIHBwYywgcGFy
dGljdWxhcmx5IGZvciB2YWx1ZXMKKyAgICAgIC8vIG5lYXIgezEuMCArLy0gZXBzaWxvbn0uCisg
ICAgICBpZiAobGFtYmRhIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkgJiYK
KyAgICAgICAgICBsYW1iZGEgPj0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3Qo
KSkgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8ZG91YmxlPihiZWZvcmUubGFtYmRh
KCkpLAorICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihhZnRlci5sYW1iZGEo
KSkpCisgICAgICAgICAgICA8PCBzcy5zdHIoKTsKKyAgICAgIH0KKyAgICAgIGNvbnRpbnVlOwor
ICAgIH0KKyNlbmRpZgorCisgICAgRVhQRUNUX0VRKGJlZm9yZS5sYW1iZGEoKSwgYWZ0ZXIubGFt
YmRhKCkpICAvLworICAgICAgICA8PCBzcy5zdHIoKSA8PCAiICIgICAgICAgICAgICAgICAgICAg
ICAgLy8KKyAgICAgICAgPDwgKHNzLmdvb2QoKSA/ICJnb29kICIgOiAiIikgICAgICAgICAgIC8v
CisgICAgICAgIDw8IChzcy5iYWQoKSA/ICJiYWQgIiA6ICIiKSAgICAgICAgICAgICAvLworICAg
ICAgICA8PCAoc3MuZW9mKCkgPyAiZW9mICIgOiAiIikgICAgICAgICAgICAgLy8KKyAgICAgICAg
PDwgKHNzLmZhaWwoKSA/ICJmYWlsICIgOiAiIik7CisgIH0KK30KKworLy8gaHR0cDovL3d3dy5p
dGwubmlzdC5nb3YvZGl2ODk4L2hhbmRib29rL2VkYS9zZWN0aW9uMy9lZGEzNjY3Lmh0bQorCitj
bGFzcyBFeHBvbmVudGlhbE1vZGVsIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEV4cG9uZW50aWFs
TW9kZWwoZG91YmxlIGxhbWJkYSkKKyAgICAgIDogbGFtYmRhXyhsYW1iZGEpLCBiZXRhXygxLjAg
LyBsYW1iZGEpIHt9CisKKyAgZG91YmxlIGxhbWJkYSgpIGNvbnN0IHsgcmV0dXJuIGxhbWJkYV87
IH0KKworICBkb3VibGUgbWVhbigpIGNvbnN0IHsgcmV0dXJuIGJldGFfOyB9CisgIGRvdWJsZSB2
YXJpYW5jZSgpIGNvbnN0IHsgcmV0dXJuIGJldGFfICogYmV0YV87IH0KKyAgZG91YmxlIHN0ZGRl
digpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6c3FydCh2YXJpYW5jZSgpKTsgfQorICBkb3VibGUgc2tl
dygpIGNvbnN0IHsgcmV0dXJuIDI7IH0KKyAgZG91YmxlIGt1cnRvc2lzKCkgY29uc3QgeyByZXR1
cm4gNi4wOyB9CisKKyAgZG91YmxlIENERihkb3VibGUgeCkgeyByZXR1cm4gMS4wIC0gc3RkOjpl
eHAoLWxhbWJkYV8gKiB4KTsgfQorCisgIC8vIFRoZSBpbnZlcnNlIENERiwgb3IgUGVyY2VudFBv
aW50IGZ1bmN0aW9uIG9mIHRoZSBkaXN0cmlidXRpb24KKyAgZG91YmxlIEludmVyc2VDREYoZG91
YmxlIHApIHsKKyAgICBBQlNMX0FTU0VSVChwID49IDAuMCk7CisgICAgQUJTTF9BU1NFUlQocCA8
IDEuMCk7CisgICAgcmV0dXJuIC1iZXRhXyAqIHN0ZDo6bG9nKDEuMCAtIHApOworICB9CisKKyBw
cml2YXRlOgorICBjb25zdCBkb3VibGUgbGFtYmRhXzsKKyAgY29uc3QgZG91YmxlIGJldGFfOwor
fTsKKworc3RydWN0IFBhcmFtIHsKKyAgZG91YmxlIGxhbWJkYTsKKyAgZG91YmxlIHBfZmFpbDsK
KyAgaW50IHRyaWFsczsKK307CisKK2NsYXNzIEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVGVzdHMg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxQYXJhbT4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIEV4cG9uZW50aWFsTW9kZWwgeworIHB1YmxpYzoK
KyAgRXhwb25lbnRpYWxEaXN0cmlidXRpb25UZXN0cygpIDogRXhwb25lbnRpYWxNb2RlbChHZXRQ
YXJhbSgpLmxhbWJkYSkge30KKworICAvLyBTaW5nbGVaVGVzdCBwcm92aWRlcyBhIGJhc2ljIHot
c3F1YXJlZCB0ZXN0IG9mIHRoZSBtZWFuIHZzLiBleHBlY3RlZAorICAvLyBtZWFuIGZvciBkYXRh
IGdlbmVyYXRlZCBieSB0aGUgcG9pc3NvbiBkaXN0cmlidXRpb24uCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBEPgorICBib29sIFNpbmdsZVpUZXN0KGNvbnN0IGRvdWJsZSBwLCBjb25zdCBzaXplX3Qg
c2FtcGxlcyk7CisKKyAgLy8gU2luZ2xlQ2hpU3F1YXJlZFRlc3QgcHJvdmlkZXMgYSBiYXNpYyBj
aGktc3F1YXJlZCB0ZXN0IG9mIHRoZSBub3JtYWwKKyAgLy8gZGlzdHJpYnV0aW9uLgorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRD4KKyAgZG91YmxlIFNpbmdsZUNoaVNxdWFyZWRUZXN0KCk7CisKKyAg
YWJzbDo6SW5zZWN1cmVCaXRHZW4gcm5nXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEPgor
Ym9vbCBFeHBvbmVudGlhbERpc3RyaWJ1dGlvblRlc3RzOjpTaW5nbGVaVGVzdChjb25zdCBkb3Vi
bGUgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc2l6ZV90IHNhbXBsZXMpIHsKKyAgRCBkaXMobGFtYmRhKCkpOworCisgIHN0ZDo6dmVjdG9y
PGRvdWJsZT4gZGF0YTsKKyAgZGF0YS5yZXNlcnZlKHNhbXBsZXMpOworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNhbXBsZXM7IGkrKykgeworICAgIGNvbnN0IGRvdWJsZSB4ID0gZGlzKHJuZ18p
OworICAgIGRhdGEucHVzaF9iYWNrKHgpOworICB9CisKKyAgY29uc3QgYXV0byBtID0gYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyhkYXRhKTsKKyAgY29u
c3QgZG91YmxlIG1heF9lcnIgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok1heEVycm9yVG9sZXJh
bmNlKHApOworICBjb25zdCBkb3VibGUgeiA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6WlNjb3Jl
KG1lYW4oKSwgbSk7CisgIGNvbnN0IGJvb2wgcGFzcyA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6
TmVhcigieiIsIHosIDAuMCwgbWF4X2Vycik7CisKKyAgaWYgKCFwYXNzKSB7CisgICAgQUJTTF9J
TlRFUk5BTF9MT0coCisgICAgICAgIElORk8sIGFic2w6OlN0ckZvcm1hdCgicD0lZiBtYXhfZXJy
PSVmXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGxhbWJkYT0lZlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBtZWFuPSVmIHZzLiAlZlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiBzdGRkZXY9JWYgdnMuICVmXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiIHNrZXduZXNzPSVmIHZzLiAlZlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiBrdXJ0b3Npcz0lZiB2cy4gJWZcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgej0lZiB2cy4gMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwLCBtYXhfZXJyLCBsYW1iZGEoKSwgbS5tZWFuLCBtZWFuKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnNxcnQobS52YXJpYW5jZSksIHN0ZGRldigpLCBtLnNrZXduZXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tldygpLCBtLmt1cnRvc2lzLCBrdXJ0
b3NpcygpLCB6KSk7CisgIH0KKyAgcmV0dXJuIHBhc3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBEPgorZG91YmxlIEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVGVzdHM6OlNpbmdsZUNoaVNxdWFy
ZWRUZXN0KCkgeworICBjb25zdCBzaXplX3Qga1NhbXBsZXMgPSAxMDAwMDsKKyAgY29uc3QgaW50
IGtCdWNrZXRzID0gNTA7CisKKyAgLy8gVGhlIEludmVyc2VDREYgaXMgdGhlIHBlcmNlbnQgcG9p
bnQgZnVuY3Rpb24gb2YgdGhlIGRpc3RyaWJ1dGlvbiwgYW5kIGNhbgorICAvLyBiZSB1c2VkIHRv
IGFzc2lnbiBidWNrZXRzIHJvdWdobHkgdW5pZm9ybWx5LgorICBzdGQ6OnZlY3Rvcjxkb3VibGU+
IGN1dG9mZnM7CisgIGNvbnN0IGRvdWJsZSBrSW5jID0gMS4wIC8gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihrQnVja2V0cyk7CisgIGZvciAoZG91YmxlIHAgPSBrSW5jOyBwIDwgMS4wOyBwICs9IGtJbmMp
IHsKKyAgICBjdXRvZmZzLnB1c2hfYmFjayhJbnZlcnNlQ0RGKHApKTsKKyAgfQorICBpZiAoY3V0
b2Zmcy5iYWNrKCkgIT0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSB7
CisgICAgY3V0b2Zmcy5wdXNoX2JhY2soc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpKTsKKyAgfQorCisgIEQgZGlzKGxhbWJkYSgpKTsKKworICBzdGQ6OnZlY3RvcjxpbnQz
Ml90PiBjb3VudHMoY3V0b2Zmcy5zaXplKCksIDApOworICBmb3IgKGludCBqID0gMDsgaiA8IGtT
YW1wbGVzOyBqKyspIHsKKyAgICBjb25zdCBkb3VibGUgeCA9IGRpcyhybmdfKTsKKyAgICBhdXRv
IGl0ID0gc3RkOjp1cHBlcl9ib3VuZChjdXRvZmZzLmJlZ2luKCksIGN1dG9mZnMuZW5kKCksIHgp
OworICAgIGNvdW50c1tzdGQ6OmRpc3RhbmNlKGN1dG9mZnMuYmVnaW4oKSwgaXQpXSsrOworICB9
CisKKyAgLy8gTnVsbC1oeXBvdGhlc2lzIGlzIHRoYXQgdGhlIGRpc3RyaWJ1dGlvbiBpcyBleHBv
bmVudGlhbGx5IGRpc3RyaWJ1dGVkCisgIC8vIHdpdGggdGhlIHByb3ZpZGVkIGxhbWJkYSAobm90
IGVzdGltYXRlZCBmcm9tIHRoZSBkYXRhKS4KKyAgY29uc3QgaW50IGRvZiA9IHN0YXRpY19jYXN0
PGludD4oY291bnRzLnNpemUoKSkgLSAxOworCisgIC8vIE91ciB0aHJlc2hvbGQgZm9yIGxvZ2dp
bmcgaXMgMS1pbi01MC4KKyAgY29uc3QgZG91YmxlIHRocmVzaG9sZCA9IGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6Q2hpU3F1YXJlVmFsdWUoZG9mLCAwLjk4KTsKKworICBjb25zdCBkb3VibGUgZXhw
ZWN0ZWQgPQorICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihrU2FtcGxlcykgLyBzdGF0aWNfY2Fz
dDxkb3VibGU+KGNvdW50cy5zaXplKCkpOworCisgIGRvdWJsZSBjaGlfc3F1YXJlID0gYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVXaXRoRXhwZWN0ZWQoCisgICAgICBzdGQ6OmJlZ2lu
KGNvdW50cyksIHN0ZDo6ZW5kKGNvdW50cyksIGV4cGVjdGVkKTsKKyAgZG91YmxlIHAgPSBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVBWYWx1ZShjaGlfc3F1YXJlLCBkb2YpOworCisg
IGlmIChjaGlfc3F1YXJlID4gdGhyZXNob2xkKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
dXRvZmZzLnNpemUoKTsgaSsrKSB7CisgICAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAgICAg
ICBJTkZPLCBhYnNsOjpTdHJGb3JtYXQoIiVkIDogKCVmKSA9ICVkIiwgaSwgY3V0b2Zmc1tpXSwg
Y291bnRzW2ldKSk7CisgICAgfQorCisgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywKKyAgICAg
ICAgICAgICAgICAgICAgICBhYnNsOjpTdHJDYXQoImxhbWJkYSAiLCBsYW1iZGEoKSwgIlxuIiwg
ICAgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQgIiwg
ZXhwZWN0ZWQsICJcbiIsICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
Q2hpU3F1YXJlZCwgIiAiLCBjaGlfc3F1YXJlLCAiICgiLCBwLCAiKVxuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga0NoaVNxdWFyZWQsICIgQCAwLjk4ID0gIiwgdGhyZXNo
b2xkKSk7CisgIH0KKyAgcmV0dXJuIHA7Cit9CisKK1RFU1RfUChFeHBvbmVudGlhbERpc3RyaWJ1
dGlvblRlc3RzLCBaVGVzdCkgeworICBjb25zdCBzaXplX3Qga1NhbXBsZXMgPSAxMDAwMDsKKyAg
Y29uc3QgYXV0byYgcGFyYW0gPSBHZXRQYXJhbSgpOworICBjb25zdCBpbnQgZXhwZWN0ZWRfZmFp
bHVyZXMgPQorICAgICAgc3RkOjptYXgoMSwgc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmNlaWwocGFy
YW0udHJpYWxzICogcGFyYW0ucF9mYWlsKSkpOworICBjb25zdCBkb3VibGUgcCA9IGFic2w6OnJh
bmRvbV9pbnRlcm5hbDo6UmVxdWlyZWRTdWNjZXNzUHJvYmFiaWxpdHkoCisgICAgICBwYXJhbS5w
X2ZhaWwsIHBhcmFtLnRyaWFscyk7CisKKyAgaW50IGZhaWx1cmVzID0gMDsKKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCBwYXJhbS50cmlhbHM7IGkrKykgeworICAgIGZhaWx1cmVzICs9IFNpbmdsZVpU
ZXN0PGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+PihwLCBrU2FtcGxlcykK
KyAgICAgICAgICAgICAgICAgICAgPyAwCisgICAgICAgICAgICAgICAgICAgIDogMTsKKyAgfQor
ICBFWFBFQ1RfTEUoZmFpbHVyZXMsIGV4cGVjdGVkX2ZhaWx1cmVzKTsKK30KKworVEVTVF9QKEV4
cG9uZW50aWFsRGlzdHJpYnV0aW9uVGVzdHMsIENoaVNxdWFyZWRUZXN0KSB7CisgIGNvbnN0IGlu
dCBrVHJpYWxzID0gMjA7CisgIGludCBmYWlsdXJlcyA9IDA7CisKKyAgZm9yIChpbnQgaSA9IDA7
IGkgPCBrVHJpYWxzOyBpKyspIHsKKyAgICBkb3VibGUgcF92YWx1ZSA9CisgICAgICAgIFNpbmds
ZUNoaVNxdWFyZWRUZXN0PGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+Pigp
OworICAgIGlmIChwX3ZhbHVlIDwgMC4wMDUpIHsgIC8vIDEvMjAwCisgICAgICBmYWlsdXJlcysr
OworICAgIH0KKyAgfQorCisgIC8vIFRoZXJlIGlzIGEgMC4xMCUgY2hhbmNlIG9mIHByb2R1Y2lu
ZyBhdCBsZWFzdCBvbmUgZmFpbHVyZSwgc28gcmFpc2UgdGhlCisgIC8vIGZhaWx1cmUgdGhyZXNo
b2xkIGhpZ2ggZW5vdWdoIHRvIGFsbG93IGZvciBhIGZsYWtlIHJhdGUgPCAxMCwwMDAuCisgIEVY
UEVDVF9MRShmYWlsdXJlcywgNCk7Cit9CisKK3N0ZDo6dmVjdG9yPFBhcmFtPiBHZW5QYXJhbXMo
KSB7CisgIHJldHVybiB7CisgICAgICBQYXJhbXsxLjAsIDAuMDIsIDEwMH0sCisgICAgICBQYXJh
bXsyLjUsIDAuMDIsIDEwMH0sCisgICAgICBQYXJhbXsxMCwgMC4wMiwgMTAwfSwKKyAgICAgIC8v
IGxhcmdlCisgICAgICBQYXJhbXsxZTQsIDAuMDIsIDEwMH0sCisgICAgICBQYXJhbXsxZTksIDAu
MDIsIDEwMH0sCisgICAgICAvLyBzbWFsbAorICAgICAgUGFyYW17MC4xLCAwLjAyLCAxMDB9LAor
ICAgICAgUGFyYW17MWUtMywgMC4wMiwgMTAwfSwKKyAgICAgIFBhcmFtezFlLTUsIDAuMDIsIDEw
MH0sCisgIH07Cit9CisKK3N0ZDo6c3RyaW5nIFBhcmFtTmFtZShjb25zdCA6OnRlc3Rpbmc6OlRl
c3RQYXJhbUluZm88UGFyYW0+JiBpbmZvKSB7CisgIGNvbnN0IGF1dG8mIHAgPSBpbmZvLnBhcmFt
OworICBzdGQ6OnN0cmluZyBuYW1lID0gYWJzbDo6U3RyQ2F0KCJsYW1iZGFfIiwgYWJzbDo6U2l4
RGlnaXRzKHAubGFtYmRhKSk7CisgIHJldHVybiBhYnNsOjpTdHJSZXBsYWNlQWxsKG5hbWUsIHt7
IisiLCAiXyJ9LCB7Ii0iLCAiXyJ9LCB7Ii4iLCAiXyJ9fSk7Cit9CisKK0lOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKCwgRXhwb25lbnRpYWxEaXN0cmlidXRpb25UZXN0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4oR2VuUGFyYW1zKCkpLCBQYXJhbU5hbWUpOwor
CisvLyBOT1RFOiBhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb24gaXMgbm90IGd1YXJhbnRl
ZWQgdG8gYmUgc3RhYmxlLgorVEVTVChFeHBvbmVudGlhbERpc3RyaWJ1dGlvblRlc3QsIFN0YWJp
bGl0eVRlc3QpIHsKKyAgLy8gYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uIHN0YWJpbGl0
eSByZWxpZXMgb24gc3RkOjpsb2cxcCBhbmQKKyAgLy8gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3Ry
aWJ1dGlvbi4KKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisg
ICAgICB7MHgwMDAzZWI3NmY2ZjdmNzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGwsIDB4QzMz
MkRERUZCRTZDNUFBNXVsbCwKKyAgICAgICAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4MkFFRjdE
QUQ1QjZFMkY4NHVsbCwgMHgxNTIxQjYyODI5MDc2MTcwdWxsLAorICAgICAgIDB4RUNERDQ3NzU2
MTlGMTUxMHVsbCwgMHgxM0NDQTgzMEVCNjFCRDk2dWxsLCAweDAzMzRGRTFFQUEwMzYzQ0Z1bGws
CisgICAgICAgMHhCNTczNUM5MDRDNzBBMjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1bGwsIDB4
RUVDQzg2QkM2MDYyMkNBN3VsbH0pOworCisgIHN0ZDo6dmVjdG9yPGludD4gb3V0cHV0KDE0KTsK
KworICB7CisgICAgYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4gZGlzdDsK
KyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwK
KyAgICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDEwMDAwLjAg
KiBkaXN0KHVyYmcpKTsgfSk7CisKKyAgICBFWFBFQ1RfRVEoMTQsIHVyYmcuaW52b2NhdGlvbnMo
KSk7CisgICAgRVhQRUNUX1RIQVQob3V0cHV0LAorICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkVs
ZW1lbnRzQXJlKDAsIDcxOTEzLCAxNDM3NSwgNTAzOSwgMTgzNSwgODYxLCAyNTkzNiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MDQsIDEyNiwgMTIzMzcsIDE3OTg0LCAy
NzAwMiwgMCwgNzE5MTMpKTsKKyAgfQorCisgIHVyYmcucmVzZXQoKTsKKyAgeworICAgIGFic2w6
OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxmbG9hdD4gZGlzdDsKKyAgICBzdGQ6OmdlbmVyYXRl
KHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwKKyAgICAgICAgICAgICAgICAg
IFsmXSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDEwMDAwLjBmICogZGlzdCh1cmJnKSk7IH0p
OworCisgICAgRVhQRUNUX0VRKDE0LCB1cmJnLmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9U
SEFUKG91dHB1dCwKKyAgICAgICAgICAgICAgICB0ZXN0aW5nOjpFbGVtZW50c0FyZSgwLCA3MTkx
MywgMTQzNzUsIDUwMzksIDE4MzUsIDg2MSwgMjU5MzYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgODA0LCAxMjYsIDEyMzM3LCAxNzk4NCwgMjcwMDIsIDAsIDcxOTEzKSk7
CisgIH0KK30KKworVEVTVChFeHBvbmVudGlhbERpc3RyaWJ1dGlvblRlc3QsIEFsZ29yaXRobUJv
dW5kcykgeworICAvLyBSZWxpZXMgb24gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbiwg
c28gc29tZSBvZiB0aGVzZSBjb21tZW50cworICAvLyByZWZlcmVuY2UgdGhhdC4KKyAgYWJzbDo6
ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4gZGlzdDsKKworICB7CisgICAgLy8gVGhp
cyByZXR1cm5zIHRoZSBzbWFsbGVzdCB2YWx1ZSA+MCBmcm9tIGFic2w6OnVuaWZvcm1fcmVhbF9k
aXN0cmlidXRpb24uCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVy
YmcoezB4MDAwMDAwMDAwMDAwMDAwMXVsbH0pOworICAgIGRvdWJsZSBhID0gZGlzdCh1cmJnKTsK
KyAgICBFWFBFQ1RfRVEoYSwgNS40MjEwMTA4NjI0Mjc1MjIxNzAwNGUtMjApOworICB9CisKKyAg
eworICAgIC8vIFRoaXMgcmV0dXJucyBhIHZhbHVlIHZlcnkgbmVhciAwLjUgZnJvbSBhYnNsOjp1
bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2Vx
dWVuY2VfdXJiZyB1cmJnKHsweDdmZmZmZmZmZmZmZmZmZWZ1bGx9KTsKKyAgICBkb3VibGUgYSA9
IGRpc3QodXJiZyk7CisgICAgRVhQRUNUX0VRKGEsIDAuNjkzMTQ3MTgwNTU5OTQ1MTc1MjA0KTsK
KyAgfQorCisgIHsKKyAgICAvLyBUaGlzIHJldHVybnMgdGhlIGxhcmdlc3QgdmFsdWUgPDEgZnJv
bSBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLgorICAgIC8vIFdvbGZyYW1BbHBoYTog
fjM5LjE0Mzk0NjU4MDg5ODc3NjYyODMwNTg1NDcyOTYzNDE5MTUyOTIxODcyNTMKKyAgICBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZyh7MHhGRkZGRkZGRkZGRkZGRmVG
dWxsfSk7CisgICAgZG91YmxlIGEgPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9FUShhLCAzNi43
MzY4MDA1Njk2NzcxMDA3MjUxKTsKKyAgfQorICB7CisgICAgLy8gVGhpcyAqQUxTTyogcmV0dXJu
cyB0aGUgbGFyZ2VzdCB2YWx1ZSA8MS4KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVl
bmNlX3VyYmcgdXJiZyh7MHhGRkZGRkZGRkZGRkZGRkZGdWxsfSk7CisgICAgZG91YmxlIGEgPSBk
aXN0KHVyYmcpOworICAgIEVYUEVDVF9FUShhLCAzNi43MzY4MDA1Njk2NzcxMDA3MjUxKTsKKyAg
fQorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nYXVzc2lh
bl9kaXN0cmlidXRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVkZDg0NjE5NDE0MWY2NWQ0MGIwYzhmMGIwNDcyZTc0Y2VmYzg2ZDYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmNjCkBA
IC0wLDAgKzEsMTAyIEBACisvLyBCRUdJTiBHRU5FUkFURUQgQ09ERTsgRE8gTk9UIEVESVQKKy8v
IGNsYW5nLWZvcm1hdCBvZmYKKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2dhdXNzaWFuX2Rpc3Ry
aWJ1dGlvbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFs
IHsKKworY29uc3QgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2Jhc2U6OlRhYmxlcworICAgIGdhdXNz
aWFuX2Rpc3RyaWJ1dGlvbl9iYXNlOjp6Z18gPSB7CisgICAgezMuNzEzMDg2MjQ2NzQyNTUwNSwg
My40NDI2MTk4NTU4OTkwMDAyMTQsIDMuMjIzMDg0OTg0NTgxMTQxNTY1LAorICAgICAzLjA4MzIy
ODg1ODIxNjg2ODMxOCwgMi45Nzg2OTYyNTI2NDc3Nzk4MTksIDIuODk0MzQ0MDA3MDIxNTI4OTQy
LAorICAgICAyLjgyMzEyNTM1MDU0ODkxMDQ1LCAyLjc2MTE2OTM3MjM4NzE3Njg1NywgMi43MDYx
MTM1NzMxMjE4MTk1NDksCisgICAgIDIuNjU2NDA2NDExMjYxMzU5Njc5LCAyLjYxMDk3MjI0ODQz
MTg0NzM4NywgMi41NjkwMzM2MjU5MjQ5Mzc3OCwKKyAgICAgMi41MzAwMDk2NzIzODg4Mjc0NTcs
IDIuNDkzNDU0NTIyMDk1MzcyMTA2LCAyLjQ1OTAxODE3NzQxMTgzMDQ4NiwKKyAgICAgMi40MjY0
MjA2NDU1MzM3NDk4MDksIDIuMzk1NDM0Mjc4MDExMDYyNDU3LCAyLjM2NTg3MTM3MDExNzYzODU5
NSwKKyAgICAgMi4zMzc1NzUyNDEzMzkyMzY3NzYsIDIuMzEwNDEzNjgzNjk4NzYyOTg4LCAyLjI4
NDI3NDA1OTY3NzQ3MTc2OSwKKyAgICAgMi4yNTkwNTk1NzM4NjkxOTgwOSwgMi4yMzQ2ODYzOTU1
OTA5NzkwMzYsIDIuMjExMDgxNDA4ODc4NzAyOTcsCisgICAgIDIuMTg4MTgwNDMyMDc2MDQ4NzMx
LCAyLjE2NTkyNjc5Mzc0ODkyMTQ5NywgMi4xNDQyNzAxODIzNjAzOTQ5MDUsCisgICAgIDIuMTIz
MTY1NzA4NjczOTc2MTM4LCAyLjEwMjU3MzEzNTE4OTIzNzYwOCwgMi4wODI0NTYyMzc5OTIwMTU5
NTcsCisgICAgIDIuMDYyNzgyMjc0NTA4MzA3OTc4LCAyLjA0MzUyMTUzNjY1NTA2NzE5NCwgMi4w
MjQ2NDY5NzMzNzczODQ2NCwKKyAgICAgMi4wMDYxMzM4Njk5NjM0NzEyMDYsIDEuOTg3OTU5NTc0
MTI3NjE5MDMzLCAxLjk3MDEwMzI2MDg1NDMyNTYzMywKKyAgICAgMS45NTI1NDU3Mjk1NTM1NTU3
NjQsIDEuOTM1MjY5MjI4Mjk2NjIxOTU3LCAxLjkxODI1NzMwMDg2NDUwODk2MywKKyAgICAgMS45
MDE0OTQ2NTMxMDUxNTA0MjMsIDEuODg0OTY3MDM1NzA3NzU4MTQzLCAxLjg2ODY2MTE0MDk5NDQ4
Nzc2OCwKKyAgICAgMS44NTI1NjQ1MTE3MjgwOTAwMDIsIDEuODM2NjY1NDYwMjU4NDQ0OTA0LCAx
LjgyMDk1Mjk5NjU5NjEyNDQxOCwKKyAgICAgMS44MDU0MTY3NjQyMTkyMjczNjYsIDEuNzkwMDQ2
OTgyNTk5ODU3NTA2LCAxLjc3NDgzNDM5NTU4NjA2ODM3LAorICAgICAxLjc1OTc3MDIyNDg5OTU5
MjMzOSwgMS43NDQ4NDYxMjgxMTM3OTkyNDQsIDEuNzMwMDU0MTYwNTYzNzI5MTgyLAorICAgICAx
LjcxNTM4Njc0MDcxMzY2NjQ4LCAxLjcwMDgzNjYxODU2OTkxNTc0OCwgMS42ODYzOTY4NDY3Nzkx
NjcwMTQsCisgICAgIDEuNjcyMDYwNzU0MDk3NTk5OCwgMS42NTc4MjE5MjA5NTQwMjMyNTQsIDEu
NjQzNjc0MTU2ODYyODY3NDQxLAorICAgICAxLjYyOTYxMTQ3OTQ3MDYzMzU2MiwgMS42MTU2Mjgw
OTUwNDMxNTk2MjksIDEuNjAxNzE4MzgwMjIxMzc2NTgxLAorICAgICAxLjU4Nzg3Njg2NDg5MDU3
NDU1OCwgMS41NzQwOTgyMTYwMjI5OTkyNjQsIDEuNTYwMzc3MjIyMzY2MTY3MzgyLAorICAgICAx
LjU0NjcwODc3OTg1OTkwODg0NCwgMS41MzMwODc4Nzc2NzQwNDE3NTUsIDEuNTE5NTA5NTg0NzY1
OTM4NTU5LAorICAgICAxLjUwNTk2OTAzNjg2MzIwMTkzNywgMS40OTI0NjE0MjM3ODEzNTI3MTQs
IDEuNDc4OTgxOTc2OTg5OTIyODQyLAorICAgICAxLjQ2NTUyNTk1NzM0MjcwOTI5NiwgMS40NTIw
ODg2NDI4ODkyMjI3OTIsIDEuNDM4NjY1MzE2Njg0NTYxNTQ2LAorICAgICAxLjQyNTI1MTI1NDUx
NDA1ODMxOSwgMS40MTE4NDE3MTI0NDcwNTU5MTksIDEuMzk4NDMxOTE0MTMxMDAzNTM5LAorICAg
ICAxLjM4NTAxNzAzNzczMjY1MDA1OCwgMS4zNzE1OTIyMDI0MjczNDA4MTIsIDEuMzU4MTUyNDU0
MzMwMTQxNTM0LAorICAgICAxLjM0NDY5Mjc1MTc1MzU0NTE5LCAxLjMzMTIwNzk0OTY2NTYyNTI3
OSwgMS4zMTc2OTI3ODMyMDk0MTIyOTksCisgICAgIDEuMzA0MTQxODUwMTI4NjE1MDU0LCAxLjI5
MDU0OTU5MTkyNjE5NDg5NCwgMS4yNzY5MTAyNzM1NjAxNTM2MywKKyAgICAgMS4yNjMyMTc5NjE0
NTQ2MTkyODcsIDEuMjQ5NDY2NDk5NTczMDY2NDM2LCAxLjIzNTY0OTQ4MzI2MzM2MDY2LAorICAg
ICAxLjIyMTc2MDIzMDUzOTk5NDM4NSwgMS4yMDc3OTE3NTA0MTU5NDc2NjIsIDEuMTkzNzM2NzA3
ODMzMTI2NDY1LAorICAgICAxLjE3OTU4NzM4NDY2Mzk4NjE2LCAxLjE2NTMzNTYzNjE2NDc1MDIy
MiwgMS4xNTA5NzI4NDIxNDg4NjU0MTYsCisgICAgIDEuMTM2NDg5ODUyMDEzMTU4Nzc0LCAxLjEy
MTg3NjkyMjU4MjU0MDIzNywgMS4xMDcxMjM2NDc1MzQwMzQwMjgsCisgICAgIDEuMDkyMjE4ODc2
OTA3Mjc1MzcxLCAxLjA3NzE1MDYyNDg5Mjg5MzQ4MiwgMS4wNjE5MDU5NjM2OTQ4MjIwNDIsCisg
ICAgIDEuMDQ2NDcwOTAwNzY0MDQyOTIyLCAxLjAzMDgzMDIzNjA2ODE5MjkwNywgMS4wMTQ5Njcz
OTUyNTEzMjc4NDIsCisgICAgIDAuOTk4ODY0MjMzNDkyOTgwODEzMSwgMC45ODI1MDA4MDM1MTU0
MjYzNDY0LCAwLjk2NTg1NTA3OTQwMTE0NzAwOTgsCisgICAgIDAuOTQ4OTAyNjI1NTExMzAzNDQz
NiwgMC45MzE2MTYxOTY2MTUxNDc5NDAxLCAwLjkxMzk2NTI1MTAyMzAyOTI3OTIsCisgICAgIDAu
ODk1OTE1MzUyNTgwOTM0Njg3NCwgMC44Nzc0Mjc0MjkxMTI5MjA0ODcyLCAwLjg1ODQ1Njg0MzE5
MzgwOTk5MzEsCisgICAgIDAuODM4OTUyMjE0Mjk3NTc0MTYxNCwgMC44MTg4NTM5MDY3MDAzNTM4
NTA3LCAwLjc5ODA5MjA2MDY0NDA1MzQ2OTMsCisgICAgIDAuNzc2NTgzOTg3ODk0NzU2MzU1Nywg
MC43NTQyMzA2NjQ0NTQwNTIwNjg4LCAwLjczMDkxMTkxMDY0MjQ4NTA2MzEsCisgICAgIDAuNzA2
NDc5NjExMzM1NDMyNTc3OSwgMC42ODA3NDc5MTg2NjkxNTA1MjAyLCAwLjY1MzQ3ODYzODczOTk3
MTAyOTUsCisgICAgIDAuNjI0MzU4NTk3MzM2MDQ2MTUwNSwgMC41OTI5NjI5NDI0NzE0NDM0MzI3
LCAwLjU1ODY5MjE3ODQwODE3OTg2MjUsCisgICAgIDAuNTIwNjU2MDM4NzYyMDU0Njg0OCwgMC40
Nzc0Mzc4MzcyOTY2ODMwNDMxLCAwLjQyNjU0Nzk4NjM1NTQxNTI0MjksCisgICAgIDAuMzYyODcx
NDMxMDk3MDIxMTkwOSwgMC4yNzIzMjA4NjQ4MTM5NDc3Mzg0LCAwfSwKKyAgICB7MC4wMDEwMTQz
NTI1NjQxMjAzNzc0MTMsIDAuMDAyNjY5NjI5MDgzODgwOTIyNzkzLCAwLjAwNTU0ODk5NTIyMDc3
MTM0NTc5MiwKKyAgICAgMC4wMDg2MjQ0ODQ0MTI4NTk4ODg2MDcsIDAuMDExODM5NDc4NjU3ODg0
ODY4NjEsIDAuMDE1MTY3Mjk4MDEwNTQ2NTY5NzYsCisgICAgIDAuMDE4NTkyMTAyNzM3MDExMjkx
NTEsIDAuMDIyMTAzMzA0NjE1OTI3MDk0NzUsIDAuMDI1NjkzMjkxOTM1OTM0MjgxNTEsCisgICAg
IDAuMDI5MzU2MzE3NDQwMDA2ODUwMjMsIDAuMDMzMDg3ODg2MTQ2MjI1NzU3NTgsIDAuMDM2ODg0
Mzg4Nzg2NjU2MjE2NDUsCisgICAgIDAuMDQwNzQyODY4MDc0NDQ0MTc0NTgsIDAuMDQ0NjYwODYy
MjAwNDkxNDMxNTcsIDAuMDQ4NjM2Mjk1ODU5ODY3ODA0OTYsCisgICAgIDAuMDUyNjY3NDAxOTAz
MDUxMDA0NjEsIDAuMDU2NzUyNjYzNDgxMDQ5ODQ3NTksIDAuMDYwODkwNzcwMzQ4MDQwNDEyNzcs
CisgICAgIDAuMDY1MDgwNTg1MjEzMDY4MDQ1NjcsIDAuMDY5MzIxMTE3MzkzNTc3OTIxNzksIDAu
MDczNjExNTAxODg0MTEzNDE3MjIsCisgICAgIDAuMDc3OTUwOTgyNTEzOTczNDYzMDEsIDAuMDgy
MzM4ODk4MjQyMjM1NzUyOTMsIDAuMDg2Nzc0NjcxODk0NzgwMjg5MTksCisgICAgIDAuMDkxMjU3
ODAwODI2ODMwMzY4MDksIDAuMDk1Nzg3ODQ5MTIxNzMxNTIyLCAwLjEwMDM2NDQ0MTAyODY1NTk5
MjksCisgICAgIDAuMTA0OTg3MjU1NDA5NDIxNDI4OSwgMC4xMDk2NTYwMjEwMTQ4NDA0NTQ2LCAw
LjExNDM3MDUxMjQ0ODg2NjEzMjMsCisgICAgIDAuMTE5MTMwNTQ2NzA3NjUwOTU1NiwgMC4xMjM5
MzU5ODAyMDI4Njc5NzM2LCAwLjEyODc4NjcwNjE5NTk0MzQwMTIsCisgICAgIDAuMTMzNjgyNjUy
NTgzNDM5NjE1MSwgMC4xMzg2MjM3Nzk5ODQ1OTQ4ODA0LCAwLjE0MzYxMDA4MDA5MDYyODAzMzks
CisgICAgIDAuMTQ4NjQxNTc0MjQyMzQyNTA1NywgMC4xNTM3MTgzMTIyMDgxODE5Mzk3LCAwLjE1
ODg0MDM3MTEzOTQ3OTU3NDgsCisgICAgIDAuMTY0MDA3ODU0NjgzNDIwNjM0MSwgMC4xNjkyMjA4
OTIyMzczNjUzMDU3LCAwLjE3NDQ3OTYzODMzMDc4OTgzMjQsCisgICAgIDAuMTc5Nzg0MjcyMTIz
Mjk1ODQwNywgMC4xODUxMzQ5OTcwMDg5OTI2MDc4LCAwLjE5MDUzMjA0MDMxOTEzNzU2MzMsCisg
ICAgIDAuMTk1OTc1NjUzMTE2Mjc4MTUzNCwgMC4yMDE0NjYxMTAwNzQzMTQwODY1LCAwLjIwNzAw
MzcwOTQzOTkyNjkzNjIsCisgICAgIDAuMjEyNTg4NzczMDcxNzMwNzEzNCwgMC4yMTgyMjE2NDY1
NTQzMDU4NDI2LCAwLjIyMzkwMjY5OTM4NTAwODg5NjUsCisgICAgIDAuMjI5NjMyMzI1MjMyMTE2
NjAyLCAwLjIzNTQxMDk0MjI2MzQ3OTU1NTYsIDAuMjQxMjM4OTkzNTQ1NDQwMjg4OSwKKyAgICAg
MC4yNDcxMTY5NDc1MTIzMjE4NTUxLCAwLjI1MzA0NTI5ODUwNzMyNjE1NTEsIDAuMjU5MDI0NTY3
Mzk2MjA1Mjc0MiwKKyAgICAgMC4yNjUwNTUzMDIyNTU1ODk3MDg3LCAwLjI3MTEzODA3OTEzODM4
NTIyNCwgMC4yNzcyNzM1MDI5MTkxODg3ODU3LAorICAgICAwLjI4MzQ2MjIwODIyMzIzMzY0NzEs
IDAuMjg5NzA0ODYwNDQyOTYwNTY1NiwgMC4yOTYwMDIxNTY4NDY5MzM3MDYxLAorICAgICAwLjMw
MjM1NDgyNzc4NjQ4NDI1OTMsIDAuMzA4NzYzNjM4MDA2MTgxODM5NywgMC4zMTUyMjkzODgwNjUw
MTE2MDY1LAorICAgICAwLjMyMTc1MjkxNTg3NTk4NTU5MDEsIDAuMzI4MzM1MDk4MzcyODUwOTY0
MiwgMC4zMzQ5NzY4NTMzMTM1ODk5NTA2LAorICAgICAwLjM0MTY3OTE0MTIzMTU1MTI5NzcsIDAu
MzQ4NDQyOTY3NTQ2MzI3NDc1NiwgMC4zNTUyNjkzODQ4NDc5MTgwMzUsCisgICAgIDAuMzYyMTU5
NDk1MzY5MzE4NDYyNiwgMC4zNjkxMTQ0NTM2NjQ0NzMxNTIyLCAwLjM3NjEzNTQ2OTUxMDU2MzUz
NiwKKyAgICAgMC4zODMyMjM4MTEwNTU5MDIxNDE2LCAwLjM5MDM4MDgwODIzNzMxNTU3OTcsIDAu
Mzk3NjA3ODU2NDkzODc0MzY3NiwKKyAgICAgMC40MDQ5MDY0MjA4MDcyMjM5OTksIDAuNDEyMjc4
MDQwMTAyNjYyMDU3OCwgMC40MTk3MjQzMzIwNDk1NzUzNzcxLAorICAgICAwLjQyNzI0Njk5ODMw
NDk5NzA3MjEsIDAuNDM0ODQ3ODMwMjQ5OTkxODUxMywgMC40NDI1Mjg3MTUyNzU0Njk0OTc1LAor
ICAgICAwLjQ1MDI5MTY0MzY4MjA0MDI3NjgsIDAuNDU4MTM4NzE2MjY3ODczMTE0LCAwLjQ2NjA3
MjE1MjY4OTQ1NzIzMDksCisgICAgIDAuNDc0MDk0MzAwNjkzMDE4MDU1OSwgMC40ODIyMDc2NDYz
Mjk0ODYzNzI0LCAwLjQ5MDQxNDgyNTI4Mzg0NTMzNDgsCisgICAgIDAuNDk4NzE4NjM1NDcwOTgw
NzIwMSwgMC41MDcxMjIwNTEwNzU1NzAxNzk0LCAwLjUxNTYyODIzODI0NDAwMzA1NjUsCisgICAg
IDAuNTI0MjQwNTcyNjcyOTg1Mjk0NCwgMC41MzI5NjI2NTkzODM4MzczNTYxLCAwLjU0MTc5ODM1
NTAyNTQyNjYxNDUsCisgICAgIDAuNTUwNzUxNzkzMTE0NjA1NzU4OCwgMC41NTk4Mjc0MTI3MDQw
ODgyMDA5LCAwLjU2OTAyOTk5MTA2Nzk1MjM3ODcsCisgICAgIDAuNTc4MzY0NjgxMTE5NzY0Njg5
OCwgMC41ODc4MzcwNTQ0MzQ3MDgxMjgzLCAwLjU5NzQ1MzE1MDk0NDUxODM0MDgsCisgICAgIDAu
NjA3MjE5NTM2NjI1MTIxOTU4NCwgMC42MTcxNDMzNzA4MTg4ODI1OTczLCAwLjYyNzIzMjQ4NTI0
OTkyOTAyODIsCisgICAgIDAuNjM3NDk1NDc3MzM1MDQ0MDgwNiwgMC42NDc5NDE4MjExMTAyMjQy
NDc1LCAwLjY1ODU4MjAwMDA1MDA4OTgyMTksCisgICAgIDAuNjY5NDI3NjY3MzQ4ODkyMTQxNCwg
MC42ODA0OTE4NDA5OTczMzU4Mzk1LCAwLjY5MTc4OTE0MzQzNjY3Njk2NzYsCisgICAgIDAuNzAz
MzM2MDk5MDE2MTYwMDEwMSwgMC43MTUxNTE1MDc0MTA1MDA1OTc2LCAwLjcyNzI1NjkxODM0NDE4
NjgyMDEsCisgICAgIDAuNzM5Njc3MjQzNjcyNjQ5MzA5NCwgMC43NTI0NDE1NTkxNzQ2MTM0MTY5
LCAwLjc2NTU4NDE3Mzg5NzcwNjYxMDIsCisgICAgIDAuNzc5MTQ2MDg1OTI5Njg5ODEzNCwgMC43
OTMxNzcwMTE3NzEzMDcyODMyLCAwLjgwNzczODI5NDY4Mjk2Mjc2NTIsCisgICAgIDAuODIyOTA3
MjExMzgxNDExMzE4NywgMC44Mzg3ODM2MDUyOTU5OTIwNTE5LCAwLjg1NTUwMDYwNzg2OTQ1MzE0
NDYsCisgICAgIDAuODczMjQzMDQ4OTEwMDcyMjA2LCAwLjg5MjI4MTY1MDc4NDAyODk5MDEsIDAu
OTEzMDQzNjQ3OTcxNzQzNDIxNywKKyAgICAgMC45MzYyODI2ODE2ODUwNjMyMzM5LCAwLjk2MzU5
OTY5MzEyNzA5MDU5NTIsIDF9fTsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAor
fSAgLy8gbmFtZXNwYWNlIGFic2wKKworLy8gY2xhbmctZm9ybWF0IG9uCisvLyBFTkQgR0VORVJB
VEVEIENPREUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb24u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDEz
NDdiY2UwYTA1YmZjNjY3NDUzOTgzNGExNTAxODllMWFlOTk0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5oCkBAIC0wLDAgKzEsMjYwIEBACisv
LyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JB
TkRPTV9HQVVTU0lBTl9ESVNUUklCVVRJT05fSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fR0FVU1NJ
QU5fRElTVFJJQlVUSU9OX0hfCisKKy8vIGFic2w6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbiBpbXBs
ZW1lbnRzIHRoZSBaaWdndXJhdCBhbGdvcml0aG0KKy8vIGZvciBnZW5lcmF0aW5nIHJhbmRvbSBn
YXVzc2lhbiBudW1iZXJzLgorLy8KKy8vIEltcGxlbWVudGF0aW9uIGJhc2VkIG9uICJUaGUgWmln
Z3VyYXQgTWV0aG9kIGZvciBHZW5lcmF0aW5nIFJhbmRvbSBWYXJpYWJsZXMiCisvLyBieSBHZW9y
Z2UgTWFyc2FnbGlhIGFuZCBXYWkgV2FuIFRzYW5nOiBodHRwOi8vd3d3LmpzdGF0c29mdC5vcmcv
djA1L2kwOC8KKy8vCisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2lu
Y2x1ZGUgPGlzdHJlYW0+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGwuaCIK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyLmgiCisKK25h
bWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBhYnNsOjpn
YXVzc2lhbl9kaXN0cmlidXRpb25fYmFzZSBpbXBsZW1lbnRzIHRoZSB1bmRlcmx5aW5nIHppZ2d1
cmF0IGFsZ29yaXRobQorLy8gdXNpbmcgdGhlIHppZ2d1cmF0IHRhYmxlcyBnZW5lcmF0ZWQgYnkg
dGhlIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9nZW50YWJsZXMKKy8vIGJpbmFyeS4KKy8vCisvLyBU
aGUgc3BlY2lmaWMgYWxnb3JpdGhtIGhhcyBzb21lIG9mIHRoZSBpbXByb3ZlbWVudHMgc3VnZ2Vz
dGVkIGJ5IHRoZQorLy8gMjAwNSBwYXBlciwgIkFuIEltcHJvdmVkIFppZ2d1cmF0IE1ldGhvZCB0
byBHZW5lcmF0ZSBOb3JtYWwgUmFuZG9tIFNhbXBsZXMiLAorLy8gSnVyZ2VuIEEgRG9vcm5pay4g
IChodHRwczovL3d3dy5kb29ybmlrLmNvbS9yZXNlYXJjaC96aWdndXJhdC5wZGYpCitjbGFzcyBn
YXVzc2lhbl9kaXN0cmlidXRpb25fYmFzZSB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVVJCRz4KKyAgaW5saW5lIGRvdWJsZSB6aWdub3IoVVJCRyYgZyk7ICAvLyBOT0xJTlQocnVu
dGltZS9yZWZlcmVuY2VzKQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGNsYXNzIFRhYmxlR2VuZXJh
dG9yOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICBpbmxpbmUgZG91YmxlIHppZ25v
cl9mYWxsYmFjayhVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBuZWcpOworCisgIC8vIENvbnN0YW50cyB1
c2VkIGZvciB0aGUgZ2F1c3NpYW4gZGlzdHJpYnV0aW9uLgorICBzdGF0aWMgY29uc3RleHByIGRv
dWJsZSBrUiA9IDMuNDQyNjE5ODU1ODk5OyAgLy8gU3RhcnQgb2YgdGhlIHRhaWwuCisgIHN0YXRp
YyBjb25zdGV4cHIgZG91YmxlIGtSSW52ID0gMC4yOTA0NzY0NTE2MTQ3NDMxNzsgIC8vIH49ICgx
LjAgLyBrUikgLgorICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrViA9IDkuOTEyNTYzMDM1MjYy
MTdlLTM7CisgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qga01hc2sgPSAweDA3ZjsKKworICAv
LyBUaGUgemlnZ3VyYXQgdGFibGVzIHN0b3JlIHRoZSBwZGYoZikgYW5kIGludmVyc2UtcGRmKHgp
IGZvciBlcXVhbC1hcmVhCisgIC8vIHBvaW50cyBvbiBvbmUtaGFsZiBvZiB0aGUgbm9ybWFsIGRp
c3RyaWJ1dGlvbiwgd2hlcmUgdGhlIHBkZiBmdW5jdGlvbiwKKyAgLy8gcGRmID0gZSBeICgtMS8y
ICp4XjIpLCBhc3N1bWVzIHRoYXQgdGhlIG1lYW4gPSAwICYgc3RkZGV2ID0gMS4KKyAgLy8KKyAg
Ly8gVGhlc2UgdGFibGVzIGFyZSBqdXN0IG92ZXIgMmtiIGluIHNpemU7IGxhcmdlciB0YWJsZXMg
bWlnaHQgaW1wcm92ZSB0aGUKKyAgLy8gZGlzdHJpYnV0aW9ucywgYnV0IGFsc28gbGVhZCB0byBt
b3JlIGNhY2hlIHBvbGx1dGlvbi4KKyAgLy8KKyAgLy8geCA9IHszLjcxMzA4LCAzLjQ0MjYxLCAz
LjIyMzA4LCAuLi4sIDB9CisgIC8vIGYgPSB7MC4wMDEwMSwgMC4wMDI2NiwgMC4wMDU1NCwgLi4u
LCAxfQorICBzdHJ1Y3QgVGFibGVzIHsKKyAgICBkb3VibGUgeFtrTWFzayArIDJdOworICAgIGRv
dWJsZSBmW2tNYXNrICsgMl07CisgIH07CisgIHN0YXRpYyBjb25zdCBUYWJsZXMgemdfOworICBy
YW5kb21faW50ZXJuYWw6OkZhc3RVbmlmb3JtQml0czx1aW50NjRfdD4gZmFzdF91NjRfOworfTsK
KworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorCisvLyBhYnNsOjpnYXVzc2lhbl9k
aXN0cmlidXRpb246CisvLyBHZW5lcmF0ZXMgYSBudW1iZXIgY29uZm9ybWluZyB0byBhIEdhdXNz
aWFuIGRpc3RyaWJ1dGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlwZSA9IGRvdWJsZT4K
K2NsYXNzIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbiA6IHJhbmRvbV9pbnRlcm5hbDo6Z2F1c3NpYW5f
ZGlzdHJpYnV0aW9uX2Jhc2UgeworIHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSBSZWFs
VHlwZTsKKworICBjbGFzcyBwYXJhbV90eXBlIHsKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBkaXN0
cmlidXRpb25fdHlwZSA9IGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbjsKKworICAgIGV4cGxpY2l0IHBh
cmFtX3R5cGUocmVzdWx0X3R5cGUgbWVhbiA9IDAsIHJlc3VsdF90eXBlIHN0ZGRldiA9IDEpCisg
ICAgICAgIDogbWVhbl8obWVhbiksIHN0ZGRldl8oc3RkZGV2KSB7fQorCisgICAgLy8gUmV0dXJu
cyB0aGUgbWVhbiBkaXN0cmlidXRpb24gcGFyYW1ldGVyLiAgVGhlIG1lYW4gc3BlY2lmaWVzIHRo
ZSBsb2NhdGlvbgorICAgIC8vIG9mIHRoZSBwZWFrLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC4w
LgorICAgIHJlc3VsdF90eXBlIG1lYW4oKSBjb25zdCB7IHJldHVybiBtZWFuXzsgfQorCisgICAg
Ly8gUmV0dXJucyB0aGUgZGV2aWF0aW9uIGRpc3RyaWJ1dGlvbiBwYXJhbWV0ZXIuICBUaGUgZGVm
YXVsdCB2YWx1ZSBpcyAxLjAuCisgICAgcmVzdWx0X3R5cGUgc3RkZGV2KCkgY29uc3QgeyByZXR1
cm4gc3RkZGV2XzsgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXJhbV90
eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICByZXR1cm4gYS5tZWFuXyA9PSBi
Lm1lYW5fICYmIGEuc3RkZGV2XyA9PSBiLnN0ZGRldl87CisgICAgfQorCisgICAgZnJpZW5kIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7
CisgICAgICByZXR1cm4gIShhID09IGIpOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICByZXN1
bHRfdHlwZSBtZWFuXzsKKyAgICByZXN1bHRfdHlwZSBzdGRkZXZfOworCisgICAgc3RhdGljX2Fz
c2VydCgKKyAgICAgICAgc3RkOjppc19mbG9hdGluZ19wb2ludDxSZWFsVHlwZT46OnZhbHVlLAor
ICAgICAgICAiQ2xhc3MtdGVtcGxhdGUgYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uPD4gbXVz
dCBiZSBwYXJhbWV0ZXJpemVkICIKKyAgICAgICAgInVzaW5nIGEgZmxvYXRpbmctcG9pbnQgdHlw
ZS4iKTsKKyAgfTsKKworICBnYXVzc2lhbl9kaXN0cmlidXRpb24oKSA6IGdhdXNzaWFuX2Rpc3Ry
aWJ1dGlvbigwKSB7fQorCisgIGV4cGxpY2l0IGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbihyZXN1bHRf
dHlwZSBtZWFuLCByZXN1bHRfdHlwZSBzdGRkZXYgPSAxKQorICAgICAgOiBwYXJhbV8obWVhbiwg
c3RkZGV2KSB7fQorCisgIGV4cGxpY2l0IGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJh
bV90eXBlJiBwKSA6IHBhcmFtXyhwKSB7fQorCisgIHZvaWQgcmVzZXQoKSB7fQorCisgIC8vIEdl
bmVyYXRpbmcgZnVuY3Rpb25zCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRf
dHlwZSBvcGVyYXRvcigpKFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMp
CisgICAgcmV0dXJuICgqdGhpcykoZywgcGFyYW1fKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcsICAvLyBOT0xJTlQo
cnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFt
X3R5cGUmIHApOworCisgIHBhcmFtX3R5cGUgcGFyYW0oKSBjb25zdCB7IHJldHVybiBwYXJhbV87
IH0KKyAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBwKSB7IHBhcmFtXyA9IHA7IH0KKwor
ICByZXN1bHRfdHlwZShtaW4pKCkgY29uc3QgeworICAgIHJldHVybiAtc3RkOjpudW1lcmljX2xp
bWl0czxyZXN1bHRfdHlwZT46OmluZmluaXR5KCk7CisgIH0KKyAgcmVzdWx0X3R5cGUobWF4KSgp
IGNvbnN0IHsKKyAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Omlu
ZmluaXR5KCk7CisgIH0KKworICByZXN1bHRfdHlwZSBtZWFuKCkgY29uc3QgeyByZXR1cm4gcGFy
YW1fLm1lYW4oKTsgfQorICByZXN1bHRfdHlwZSBzdGRkZXYoKSBjb25zdCB7IHJldHVybiBwYXJh
bV8uc3RkZGV2KCk7IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGdhdXNzaWFu
X2Rpc3RyaWJ1dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnYXVzc2lh
bl9kaXN0cmlidXRpb24mIGIpIHsKKyAgICByZXR1cm4gYS5wYXJhbV8gPT0gYi5wYXJhbV87Cisg
IH0KKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBnYXVzc2lhbl9kaXN0cmlidXRpb24m
IGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2F1c3NpYW5fZGlzdHJpYnV0aW9u
JiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fICE9IGIucGFyYW1fOworICB9CisKKyBwcml2YXRl
OgorICBwYXJhbV90eXBlIHBhcmFtXzsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBJ
bXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9ubHkgYmVsb3cKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgor
dHlwZW5hbWUgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjo6cmVzdWx0X3R5cGUKK2dh
dXNzaWFuX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46Om9wZXJhdG9yKCkoCisgICAgVVJCRyYgZywg
IC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgY29uc3QgcGFyYW1fdHlwZSYgcCkg
eworICByZXR1cm4gcC5tZWFuKCkgKyBwLnN0ZGRldigpICogc3RhdGljX2Nhc3Q8cmVzdWx0X3R5
cGU+KHppZ25vcihnKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBSZWFsVHlwZT4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJh
aXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4m
IG9zLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBjb25zdCBnYXVzc2lhbl9k
aXN0cmlidXRpb248UmVhbFR5cGU+JiB4KSB7CisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJu
YWw6Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZlcihvcyk7CisgIG9zLnByZWNpc2lvbihyYW5kb21f
aW50ZXJuYWw6OnN0cmVhbV9wcmVjaXNpb25faGVscGVyPFJlYWxUeXBlPjo6a1ByZWNpc2lvbik7
CisgIG9zIDw8IHgubWVhbigpIDw8IG9zLmZpbGwoKSA8PCB4LnN0ZGRldigpOworICByZXR1cm4g
b3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBSZWFsVHlwZT4KK3N0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0
b3I+PigKKyAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzLCAgLy8gTk9M
SU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBnYXVzc2lhbl9kaXN0cmlidXRpb248UmVhbFR5
cGU+JiB4KSB7ICAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgdXNpbmcgcmVzdWx0
X3R5cGUgPSB0eXBlbmFtZSBnYXVzc2lhbl9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpyZXN1bHRf
dHlwZTsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1lIGdhdXNzaWFuX2Rpc3RyaWJ1dGlv
bjxSZWFsVHlwZT46OnBhcmFtX3R5cGU7CisKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5h
bDo6bWFrZV9pc3RyZWFtX3N0YXRlX3NhdmVyKGlzKTsKKyAgYXV0byBtZWFuID0gcmFuZG9tX2lu
dGVybmFsOjpyZWFkX2Zsb2F0aW5nX3BvaW50PHJlc3VsdF90eXBlPihpcyk7CisgIGlmIChpcy5m
YWlsKCkpIHJldHVybiBpczsKKyAgYXV0byBzdGRkZXYgPSByYW5kb21faW50ZXJuYWw6OnJlYWRf
ZmxvYXRpbmdfcG9pbnQ8cmVzdWx0X3R5cGU+KGlzKTsKKyAgaWYgKCFpcy5mYWlsKCkpIHsKKyAg
ICB4LnBhcmFtKHBhcmFtX3R5cGUobWVhbiwgc3RkZGV2KSk7CisgIH0KKyAgcmV0dXJuIGlzOwor
fQorCituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFVS
Qkc+CitpbmxpbmUgZG91YmxlIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlOjp6aWdub3JfZmFs
bGJhY2soVVJCRyYgZywgYm9vbCBuZWcpIHsKKyAgLy8gVGhpcyBmYWxsYmFjayBwYXRoIGhhcHBl
bnMgYXBwcm94aW1hdGVseSAwLjA1JSBvZiB0aGUgdGltZS4KKyAgZG91YmxlIHgsIHk7CisgIGRv
IHsKKyAgICAvLyBrUkludiA9IDEvciwgVSgwLCAxKQorICAgIHggPSBrUkludiAqIHN0ZDo6bG9n
KFJhbmRVNjRUb0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgZmFsc2U+KGZhc3RfdTY0XyhnKSkpOwor
ICAgIHkgPSAtc3RkOjpsb2coUmFuZFU2NFRvRG91YmxlPFBvc2l0aXZlVmFsdWVULCBmYWxzZT4o
ZmFzdF91NjRfKGcpKSk7CisgIH0gd2hpbGUgKCh5ICsgeSkgPCAoeCAqIHgpKTsKKyAgcmV0dXJu
IG5lZyA/ICh4IC0ga1IpIDogKGtSIC0geCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJH
PgoraW5saW5lIGRvdWJsZSBnYXVzc2lhbl9kaXN0cmlidXRpb25fYmFzZTo6emlnbm9yKAorICAg
IFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgIHdoaWxlICh0cnVl
KSB7CisgICAgLy8gV2UgdXNlIGEgc2luZ2xlIHVpbnQ2NF90IHRvIGdlbmVyYXRlIGJvdGggYSBk
b3VibGUgYW5kIGEgc3RyaXAuCisgICAgLy8gVGhlc2UgYml0cyBhcmUgdW51c2VkIHdoZW4gdGhl
IGdlbmVyYXRlZCBkb3VibGUgaXMgPiAxLzJeNS4KKyAgICAvLyBUaGlzIG1heSBpbnRyb2R1Y2Ug
c29tZSBiaWFzIGZyb20gdGhlIGR1cGxpY2F0ZWQgbG93IGJpdHMgb2Ygc21hbGwKKyAgICAvLyB2
YWx1ZXMgKHRob3NlIHNtYWxsZXIgdGhhbiAxLzJeNSwgd2hpY2ggYWxsIGVuZCB1cCBvbiB0aGUg
bGVmdCB0YWlsKS4KKyAgICB1aW50NjRfdCBiaXRzID0gZmFzdF91NjRfKGcpOworICAgIGludCBp
ID0gc3RhdGljX2Nhc3Q8aW50PihiaXRzICYga01hc2spOyAgLy8gcGljayBhIHJhbmRvbSBzdHJp
cAorICAgIGRvdWJsZSBqID0gUmFuZFU2NFRvRG91YmxlPFNpZ25lZFZhbHVlVCwgZmFsc2U+KGJp
dHMpOyAgLy8gVSgtMSwgMSkKKyAgICBjb25zdCBkb3VibGUgeCA9IGogKiB6Z18ueFtpXTsKKwor
ICAgIC8vIFJldGFuZ3VsYXIgYm94LiBIYW5kbGVzID45NyUgb2YgYWxsIGNhc2VzLgorICAgIC8v
IEZvciBhbnkgZ2l2ZW4gYm94LCB0aGlzIGhhbmRsZXMgYmV0d2VlbiA3NSUgYW5kIDk5JSBvZiB2
YWx1ZXMuCisgICAgLy8gRXF1aXZhbGVudCB0byBVKDAxKSA8ICh4W2krMV0gLyB4W2ldKSwgYW5k
IHdoZW4gaSA9PSAwLCB+OTMuNSUKKyAgICBpZiAoc3RkOjphYnMoeCkgPCB6Z18ueFtpICsgMV0p
IHsKKyAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIC8vIGkgPT0gMDogQmFzZSBib3guIFNh
bXBsZSB1c2luZyBhIHJhdGlvIG9mIHVuaWZvcm1zLgorICAgIGlmIChpID09IDApIHsKKyAgICAg
IC8vIFRoaXMgcGF0aCBoYXBwZW5zIGFib3V0IDAuMDUlIG9mIHRoZSB0aW1lLgorICAgICAgcmV0
dXJuIHppZ25vcl9mYWxsYmFjayhnLCBqIDwgMCk7CisgICAgfQorCisgICAgLy8gaSA+IDA6IFdl
ZGdlIHNhbXBsZXMgdXNpbmcgcHJlY29tcHV0ZWQgdmFsdWVzLgorICAgIGRvdWJsZSB2ID0gUmFu
ZFU2NFRvRG91YmxlPFBvc2l0aXZlVmFsdWVULCBmYWxzZT4oZmFzdF91NjRfKGcpKTsgIC8vIFUo
MCwgMSkKKyAgICBpZiAoKHpnXy5mW2kgKyAxXSArIHYgKiAoemdfLmZbaV0gLSB6Z18uZltpICsg
MV0pKSA8CisgICAgICAgIHN0ZDo6ZXhwKC0wLjUgKiB4ICogeCkpIHsKKyAgICAgIHJldHVybiB4
OworICAgIH0KKworICAgIC8vIFRoZSB3ZWRnZSB3YXMgbWlzc2VkOyByZWplY3QgdGhlIHZhbHVl
IGFuZCB0cnkgYWdhaW4uCisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5h
bAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9HQVVTU0lB
Tl9ESVNUUklCVVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0
cmlidXRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb25fdGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40N2MyOTg5ZDM0MGI3ZTUyZjhmNjA1ZmI3NTViMDJkYTYwMWM1Nzgw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbl90
ZXN0LmNjCkBAIC0wLDAgKzEsNTczIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5o
IgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNz
dGRkZWY+CisjaW5jbHVkZSA8aW9zPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHJh
bmRvbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAi
Z21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wv
YmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3Mu
aCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9jaGlfc3F1YXJlLmgiCisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5oIgorI2luY2x1
ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3NlcXVlbmNlX3VyYmcuaCIKKyNpbmNsdWRlICJhYnNs
L3JhbmRvbS9yYW5kb20uaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cl9yZXBsYWNlLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmlwLmgiCisKK25hbWVz
cGFjZSB7CisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6a0NoaVNxdWFyZWQ7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlwZT4KK2NsYXNzIEdhdXNzaWFuRGlzdHJpYnV0aW9uSW50
ZXJmYWNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3VzaW5nIFJlYWxUeXBl
cyA9IDo6dGVzdGluZzo6VHlwZXM8ZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3VibGU+OworVFlQRURf
VEVTVF9DQVNFKEdhdXNzaWFuRGlzdHJpYnV0aW9uSW50ZXJmYWNlVGVzdCwgUmVhbFR5cGVzKTsK
KworVFlQRURfVEVTVChHYXVzc2lhbkRpc3RyaWJ1dGlvbkludGVyZmFjZVRlc3QsIFNlcmlhbGl6
ZVRlc3QpIHsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9CisgICAgICB0eXBlbmFtZSBhYnNsOjpnYXVz
c2lhbl9kaXN0cmlidXRpb248VHlwZVBhcmFtPjo6cGFyYW1fdHlwZTsKKworICBjb25zdCBUeXBl
UGFyYW0ga1BhcmFtc1tdID0geworICAgICAgLy8gQ2FzZXMgYXJvdW5kIDEuCisgICAgICAxLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgc3RkOjpu
ZXh0YWZ0ZXIoVHlwZVBhcmFtKDEpLCBUeXBlUGFyYW0oMCkpLCAgLy8gMSAtIGVwc2lsb24KKyAg
ICAgIHN0ZDo6bmV4dGFmdGVyKFR5cGVQYXJhbSgxKSwgVHlwZVBhcmFtKDIpKSwgIC8vIDEgKyBl
cHNpbG9uCisgICAgICAvLyBBcmJpdHJhcnkgdmFsdWVzLgorICAgICAgVHlwZVBhcmFtKDFlLTgp
LCBUeXBlUGFyYW0oMWUtNCksIFR5cGVQYXJhbSgyKSwgVHlwZVBhcmFtKDFlNCksCisgICAgICBU
eXBlUGFyYW0oMWU4KSwgVHlwZVBhcmFtKDFlMjApLCBUeXBlUGFyYW0oMi41KSwKKyAgICAgIC8v
IEJvdW5kYXJ5IGNhc2VzLgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+Ojpp
bmZpbml0eSgpLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSwK
KyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6ZXBzaWxvbigpLAorICAgICAg
c3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSwKKyAg
ICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbSgxKSksICAgICAgICAgICAvLyBtaW4gKyBlcHNp
bG9uCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1pbigpLCAgLy8gc21h
bGxlc3Qgbm9ybWFsCisgICAgICAvLyBUaGVyZSBhcmUgc29tZSBlcnJvcnMgZGVhbGluZyB3aXRo
IGRlbm9ybXMgb24gYXBwbGUgcGxhdGZvcm1zLgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxU
eXBlUGFyYW0+OjpkZW5vcm1fbWluKCksICAvLyBzbWFsbGVzdCBkZW5vcm0KKyAgICAgIHN0ZDo6
bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWluKCkgLyAyLAorICAgICAgc3RkOjpuZXh0YWZ0
ZXIoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSwKKyAgICAgICAgICAgICAg
ICAgICAgIFR5cGVQYXJhbSgwKSksICAvLyBkZW5vcm1fbWF4CisgIH07CisKKyAgY29uc3RleHBy
IGludCBrQ291bnQgPSAxMDAwOworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47CisKKyAgLy8g
VXNlIGEgbG9vcCB0byBnZW5lcmF0ZSB0aGUgY29tYmluYXRpb25zIG9mIHsrLy14LCArLy15fSwg
YW5kIGFzc2lnbiB4LCB5IHRvCisgIC8vIGFsbCB2YWx1ZXMgaW4ga1BhcmFtcywKKyAgZm9yIChj
b25zdCBhdXRvIG1vZCA6IHswLCAxLCAyLCAzfSkgeworICAgIGZvciAoY29uc3QgYXV0byB4IDog
a1BhcmFtcykgeworICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpKSBjb250aW51ZTsKKyAgICAg
IGZvciAoY29uc3QgYXV0byB5IDoga1BhcmFtcykgeworICAgICAgICBjb25zdCBUeXBlUGFyYW0g
bWVhbiA9IChtb2QgJiAweDEpID8gLXggOiB4OworICAgICAgICBjb25zdCBUeXBlUGFyYW0gc3Rk
ZGV2ID0gKG1vZCAmIDB4MikgPyAteSA6IHk7CisgICAgICAgIGNvbnN0IHBhcmFtX3R5cGUgcGFy
YW0obWVhbiwgc3RkZGV2KTsKKworICAgICAgICBhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb248
VHlwZVBhcmFtPiBiZWZvcmUobWVhbiwgc3RkZGV2KTsKKyAgICAgICAgRVhQRUNUX0VRKGJlZm9y
ZS5tZWFuKCksIHBhcmFtLm1lYW4oKSk7CisgICAgICAgIEVYUEVDVF9FUShiZWZvcmUuc3RkZGV2
KCksIHBhcmFtLnN0ZGRldigpKTsKKworICAgICAgICB7CisgICAgICAgICAgYWJzbDo6Z2F1c3Np
YW5fZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gdmlhX3BhcmFtKHBhcmFtKTsKKyAgICAgICAgICBF
WFBFQ1RfRVEodmlhX3BhcmFtLCBiZWZvcmUpOworICAgICAgICAgIEVYUEVDVF9FUSh2aWFfcGFy
YW0ucGFyYW0oKSwgYmVmb3JlLnBhcmFtKCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gU21v
a2UgdGVzdC4KKyAgICAgICAgYXV0byBzYW1wbGVfbWluID0gYmVmb3JlLm1heCgpOworICAgICAg
ICBhdXRvIHNhbXBsZV9tYXggPSBiZWZvcmUubWluKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwga0NvdW50OyBpKyspIHsKKyAgICAgICAgICBhdXRvIHNhbXBsZSA9IGJlZm9yZShnZW4p
OworICAgICAgICAgIGlmIChzYW1wbGUgPiBzYW1wbGVfbWF4KSBzYW1wbGVfbWF4ID0gc2FtcGxl
OworICAgICAgICAgIGlmIChzYW1wbGUgPCBzYW1wbGVfbWluKSBzYW1wbGVfbWluID0gc2FtcGxl
OworICAgICAgICAgIEVYUEVDVF9HRShzYW1wbGUsIGJlZm9yZS5taW4oKSkgPDwgYmVmb3JlOwor
ICAgICAgICAgIEVYUEVDVF9MRShzYW1wbGUsIGJlZm9yZS5tYXgoKSkgPDwgYmVmb3JlOworICAg
ICAgICB9CisgICAgICAgIGlmICghc3RkOjppc19zYW1lPFR5cGVQYXJhbSwgbG9uZyBkb3VibGU+
Ojp2YWx1ZSkgeworICAgICAgICAgIEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAgICAgICAgICBJ
TkZPLCBhYnNsOjpTdHJGb3JtYXQoIlJhbmdleyVmLCAlZn06ICVmLCAlZiIsIG1lYW4sIHN0ZGRl
diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9taW4sIHNhbXBs
ZV9tYXgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAg
ICAgICBzcyA8PCBiZWZvcmU7CisKKyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1lYW4pIHx8
ICFzdGQ6OmlzZmluaXRlKHN0ZGRldikpIHsKKyAgICAgICAgICAvLyBTdHJlYW1zIGRvIG5vdCBw
YXJzZSBpbmYvbmFuLgorICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gVmFsaWRhdGUgc3RyZWFtIHNlcmlhbGl6YXRpb24uCisgICAgICAgIGFic2w6OmdhdXNzaWFu
X2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGFmdGVyKC0wLjUzZiwgMi4zNDU2Zik7CisKKyAgICAg
ICAgRVhQRUNUX05FKGJlZm9yZS5tZWFuKCksIGFmdGVyLm1lYW4oKSk7CisgICAgICAgIEVYUEVD
VF9ORShiZWZvcmUuc3RkZGV2KCksIGFmdGVyLnN0ZGRldigpKTsKKyAgICAgICAgRVhQRUNUX05F
KGJlZm9yZS5wYXJhbSgpLCBhZnRlci5wYXJhbSgpKTsKKyAgICAgICAgRVhQRUNUX05FKGJlZm9y
ZSwgYWZ0ZXIpOworCisgICAgICAgIHNzID4+IGFmdGVyOworCisjaWYgZGVmaW5lZChfX3Bvd2Vy
cGM2NF9fKSB8fCBkZWZpbmVkKF9fUFBDNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwg
XAorICAgIGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX1BQQ19fKQorICAgICAgICBpZiAo
c3RkOjppc19zYW1lPFR5cGVQYXJhbSwgbG9uZyBkb3VibGU+Ojp2YWx1ZSkgeworICAgICAgICAg
IC8vIFJvdW5kdHJpcHBpbmcgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIHJlcXVpcmVzIHN1ZmZpY2ll
bnQgcHJlY2lzaW9uCisgICAgICAgICAgLy8gdG8gcmVjb25zdHJ1Y3QgdGhlIGV4YWN0IHZhbHVl
LiAgSXQgdHVybnMgb3V0IHRoYXQgbG9uZyBkb3VibGUKKyAgICAgICAgICAvLyBoYXMgc29tZSBl
cnJvcnMgZG9pbmcgdGhpcyBvbiBwcGMsIHBhcnRpY3VsYXJseSBmb3IgdmFsdWVzCisgICAgICAg
ICAgLy8gbmVhciB7MS4wICsvLSBlcHNpbG9ufS4KKyAgICAgICAgICBpZiAobWVhbiA8PSBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpICYmCisgICAgICAgICAgICAgIG1lYW4gPj0g
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSkgeworICAgICAgICAgICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PGRvdWJsZT4oYmVmb3JlLm1lYW4oKSksCisgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihhZnRlci5tZWFuKCkpKQorICAgICAgICAgICAg
ICAgIDw8IHNzLnN0cigpOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoc3RkZGV2IDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkgJiYKKyAgICAgICAgICAgICAgc3RkZGV2
ID49IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCkpIHsKKyAgICAgICAgICAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDxkb3VibGU+KGJlZm9yZS5zdGRkZXYoKSksCisgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihhZnRlci5zdGRkZXYoKSkpCisgICAg
ICAgICAgICAgICAgPDwgc3Muc3RyKCk7CisgICAgICAgICAgfQorICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBFWFBFQ1RfRVEoYmVmb3JlLm1lYW4oKSwg
YWZ0ZXIubWVhbigpKTsKKyAgICAgICAgRVhQRUNUX0VRKGJlZm9yZS5zdGRkZXYoKSwgYWZ0ZXIu
c3RkZGV2KCkpICAvLworICAgICAgICAgICAgPDwgc3Muc3RyKCkgPDwgIiAiICAgICAgICAgICAg
ICAgICAgICAgIC8vCisgICAgICAgICAgICA8PCAoc3MuZ29vZCgpID8gImdvb2QgIiA6ICIiKSAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgIDw8IChzcy5iYWQoKSA/ICJiYWQgIiA6ICIiKSAgICAg
ICAgICAgICAvLworICAgICAgICAgICAgPDwgKHNzLmVvZigpID8gImVvZiAiIDogIiIpICAgICAg
ICAgICAgIC8vCisgICAgICAgICAgICA8PCAoc3MuZmFpbCgpID8gImZhaWwgIiA6ICIiKTsKKyAg
ICAgIH0KKyAgICB9CisgIH0KK30KKworLy8gaHR0cDovL3d3dy5pdGwubmlzdC5nb3YvZGl2ODk4
L2hhbmRib29rL2VkYS9zZWN0aW9uMy9lZGEzNjYxLmh0bQorCitjbGFzcyBHYXVzc2lhbk1vZGVs
IHsKKyBwdWJsaWM6CisgIEdhdXNzaWFuTW9kZWwoZG91YmxlIG1lYW4sIGRvdWJsZSBzdGRkZXYp
IDogbWVhbl8obWVhbiksIHN0ZGRldl8oc3RkZGV2KSB7fQorCisgIGRvdWJsZSBtZWFuKCkgY29u
c3QgeyByZXR1cm4gbWVhbl87IH0KKyAgZG91YmxlIHZhcmlhbmNlKCkgY29uc3QgeyByZXR1cm4g
c3RkZGV2KCkgKiBzdGRkZXYoKTsgfQorICBkb3VibGUgc3RkZGV2KCkgY29uc3QgeyByZXR1cm4g
c3RkZGV2XzsgfQorICBkb3VibGUgc2tldygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgZG91Ymxl
IGt1cnRvc2lzKCkgY29uc3QgeyByZXR1cm4gMy4wOyB9CisKKyAgLy8gVGhlIGludmVyc2UgQ0RG
LCBvciBQZXJjZW50UG9pbnQgZnVuY3Rpb24uCisgIGRvdWJsZSBJbnZlcnNlQ0RGKGRvdWJsZSBw
KSB7CisgICAgQUJTTF9BU1NFUlQocCA+PSAwLjApOworICAgIEFCU0xfQVNTRVJUKHAgPCAxLjAp
OworICAgIHJldHVybiBtZWFuKCkgKyBzdGRkZXYoKSAqIC1hYnNsOjpyYW5kb21faW50ZXJuYWw6
OkludmVyc2VOb3JtYWxTdXJ2aXZhbChwKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3QgZG91
YmxlIG1lYW5fOworICBjb25zdCBkb3VibGUgc3RkZGV2XzsKK307CisKK3N0cnVjdCBQYXJhbSB7
CisgIGRvdWJsZSBtZWFuOworICBkb3VibGUgc3RkZGV2OworICBkb3VibGUgcF9mYWlsOyAgLy8g
Wi1UZXN0IHByb2JhYmlsaXR5IG9mIGZhaWx1cmUuCisgIGludCB0cmlhbHM7ICAgICAvLyBaLVRl
c3QgdHJpYWxzLgorfTsKKworLy8gR2F1c3NpYW5EaXN0cmlidXRpb25UZXN0cyBpbXBsZW1lbnRz
IGEgei10ZXN0IGZvciB0aGUgZ2F1c3NpYW4KKy8vIGRpc3RyaWJ1dGlvbi4KK2NsYXNzIEdhdXNz
aWFuRGlzdHJpYnV0aW9uVGVzdHMgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxQYXJh
bT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEdhdXNzaWFuTW9k
ZWwgeworIHB1YmxpYzoKKyAgR2F1c3NpYW5EaXN0cmlidXRpb25UZXN0cygpCisgICAgICA6IEdh
dXNzaWFuTW9kZWwoR2V0UGFyYW0oKS5tZWFuLCBHZXRQYXJhbSgpLnN0ZGRldikge30KKworICAv
LyBTaW5nbGVaVGVzdCBwcm92aWRlcyBhIGJhc2ljIHotc3F1YXJlZCB0ZXN0IG9mIHRoZSBtZWFu
IHZzLiBleHBlY3RlZAorICAvLyBtZWFuIGZvciBkYXRhIGdlbmVyYXRlZCBieSB0aGUgcG9pc3Nv
biBkaXN0cmlidXRpb24uCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBEPgorICBib29sIFNpbmdsZVpU
ZXN0KGNvbnN0IGRvdWJsZSBwLCBjb25zdCBzaXplX3Qgc2FtcGxlcyk7CisKKyAgLy8gU2luZ2xl
Q2hpU3F1YXJlZFRlc3QgcHJvdmlkZXMgYSBiYXNpYyBjaGktc3F1YXJlZCB0ZXN0IG9mIHRoZSBu
b3JtYWwKKyAgLy8gZGlzdHJpYnV0aW9uLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRD4KKyAgZG91
YmxlIFNpbmdsZUNoaVNxdWFyZWRUZXN0KCk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gcm5n
XzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEPgorYm9vbCBHYXVzc2lhbkRpc3RyaWJ1dGlv
blRlc3RzOjpTaW5nbGVaVGVzdChjb25zdCBkb3VibGUgcCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHNhbXBsZXMpIHsKKyAgRCBkaXMo
bWVhbigpLCBzdGRkZXYoKSk7CisKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBkYXRhOworICBkYXRh
LnJlc2VydmUoc2FtcGxlcyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FtcGxlczsgaSsr
KSB7CisgICAgY29uc3QgZG91YmxlIHggPSBkaXMocm5nXyk7CisgICAgZGF0YS5wdXNoX2JhY2so
eCk7CisgIH0KKworICBjb25zdCBkb3VibGUgbWF4X2VyciA9IGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6TWF4RXJyb3JUb2xlcmFuY2UocCk7CisgIGNvbnN0IGF1dG8gbSA9IGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1vbWVudHMoZGF0YSk7CisgIGNvbnN0IGRvdWJs
ZSB6ID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpaU2NvcmUobWVhbigpLCBtKTsKKyAgY29uc3Qg
Ym9vbCBwYXNzID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpOZWFyKCJ6IiwgeiwgMC4wLCBtYXhf
ZXJyKTsKKworICAvLyBOT1RFOiBJbmZvcm1hdGlvbmFsIHN0YXRpc3RpY2FsIHRlc3Q6CisgIC8v
CisgIC8vIENvbXB1dGUgdGhlIEphcnF1ZS1CZXJhIHRlc3Qgc3RhdGlzdGljIGdpdmVuIHRoZSBl
eGNlc3Mgc2tld25lc3MKKyAgLy8gYW5kIGt1cnRvc2lzLiBUaGUgc3RhdGlzdGljIGlzIGRyYXdu
IGZyb20gYSBjaGktc3F1YXJlKDIpIGRpc3RyaWJ1dGlvbi4KKyAgLy8gaHR0cHM6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvSmFycXVlJUUyJTgwJTkzQmVyYV90ZXN0CisgIC8vCisgIC8vIFRoZSBu
dWxsLWh5cG90aGVzaXMgKG5vcm1hbCBkaXN0cmlidXRpb24pIGlzIHJlamVjdGVkIHdoZW4KKyAg
Ly8gKHAgPSAwLjA1ID0+IGpiID4gNS45OSkKKyAgLy8gKHAgPSAwLjAxID0+IGpiID4gOS4yMSkK
KyAgLy8gTk9URTogSkIgaGFzIGEgbGFyZ2UgdHlwZS1JIGVycm9yIHJhdGUsIHNvIGl0IHdpbGwg
cmVqZWN0IHRoZQorICAvLyBudWxsLWh5cG90aGVzaXMgZXZlbiB3aGVuIGl0IGlzIHRydWUgbW9y
ZSBvZnRlbiB0aGFuIHRoZSB6LXRlc3QuCisgIC8vCisgIGNvbnN0IGRvdWJsZSBqYiA9CisgICAg
ICBzdGF0aWNfY2FzdDxkb3VibGU+KG0ubikgLyA2LjAgKgorICAgICAgKHN0ZDo6cG93KG0uc2tl
d25lc3MsIDIuMCkgKyBzdGQ6OnBvdyhtLmt1cnRvc2lzIC0gMy4wLCAyLjApIC8gNC4wKTsKKwor
ICBpZiAoIXBhc3MgfHwgamIgPiA5LjIxKSB7CisgICAgQUJTTF9JTlRFUk5BTF9MT0coCisgICAg
ICAgIElORk8sIGFic2w6OlN0ckZvcm1hdCgicD0lZiBtYXhfZXJyPSVmXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIG1lYW49JWYgdnMuICVmXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiIHN0ZGRldj0lZiB2cy4gJWZcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgc2tld25lc3M9JWYgdnMuICVmXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIGt1cnRvc2lzPSVmIHZzLiAlZlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiB6PSVmIHZzLiAwXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGpi
PSVmIHZzLiA5LjIxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIG1heF9lcnIs
IG0ubWVhbiwgbWVhbigpLCBzdGQ6OnNxcnQobS52YXJpYW5jZSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGRkZXYoKSwgbS5za2V3bmVzcywgc2tldygpLCBtLmt1cnRvc2lzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3VydG9zaXMoKSwgeiwgamIpKTsKKyAgfQor
ICByZXR1cm4gcGFzczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEQ+Citkb3VibGUgR2F1c3Np
YW5EaXN0cmlidXRpb25UZXN0czo6U2luZ2xlQ2hpU3F1YXJlZFRlc3QoKSB7CisgIGNvbnN0IHNp
emVfdCBrU2FtcGxlcyA9IDEwMDAwOworICBjb25zdCBpbnQga0J1Y2tldHMgPSA1MDsKKworICAv
LyBUaGUgSW52ZXJzZUNERiBpcyB0aGUgcGVyY2VudCBwb2ludCBmdW5jdGlvbiBvZiB0aGUKKyAg
Ly8gZGlzdHJpYnV0aW9uLCBhbmQgY2FuIGJlIHVzZWQgdG8gYXNzaWduIGJ1Y2tldHMKKyAgLy8g
cm91Z2hseSB1bmlmb3JtbHkuCisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gY3V0b2ZmczsKKyAgY29u
c3QgZG91YmxlIGtJbmMgPSAxLjAgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGtCdWNrZXRzKTsKKyAg
Zm9yIChkb3VibGUgcCA9IGtJbmM7IHAgPCAxLjA7IHAgKz0ga0luYykgeworICAgIGN1dG9mZnMu
cHVzaF9iYWNrKEludmVyc2VDREYocCkpOworICB9CisgIGlmIChjdXRvZmZzLmJhY2soKSAhPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpIHsKKyAgICBjdXRvZmZzLnB1
c2hfYmFjayhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpOworICB9CisK
KyAgRCBkaXMobWVhbigpLCBzdGRkZXYoKSk7CisKKyAgc3RkOjp2ZWN0b3I8aW50MzJfdD4gY291
bnRzKGN1dG9mZnMuc2l6ZSgpLCAwKTsKKyAgZm9yIChpbnQgaiA9IDA7IGogPCBrU2FtcGxlczsg
aisrKSB7CisgICAgY29uc3QgZG91YmxlIHggPSBkaXMocm5nXyk7CisgICAgYXV0byBpdCA9IHN0
ZDo6dXBwZXJfYm91bmQoY3V0b2Zmcy5iZWdpbigpLCBjdXRvZmZzLmVuZCgpLCB4KTsKKyAgICBj
b3VudHNbc3RkOjpkaXN0YW5jZShjdXRvZmZzLmJlZ2luKCksIGl0KV0rKzsKKyAgfQorCisgIC8v
IE51bGwtaHlwb3RoZXNpcyBpcyB0aGF0IHRoZSBkaXN0cmlidXRpb24gaXMgYSBnYXVzc2lhbiBk
aXN0cmlidXRpb24KKyAgLy8gd2l0aCB0aGUgcHJvdmlkZWQgbWVhbiBhbmQgc3RkZGV2IChub3Qg
ZXN0aW1hdGVkIGZyb20gdGhlIGRhdGEpLgorICBjb25zdCBpbnQgZG9mID0gc3RhdGljX2Nhc3Q8
aW50Pihjb3VudHMuc2l6ZSgpKSAtIDE7CisKKyAgLy8gT3VyIHRocmVzaG9sZCBmb3IgbG9nZ2lu
ZyBpcyAxLWluLTUwLgorICBjb25zdCBkb3VibGUgdGhyZXNob2xkID0gYWJzbDo6cmFuZG9tX2lu
dGVybmFsOjpDaGlTcXVhcmVWYWx1ZShkb2YsIDAuOTgpOworCisgIGNvbnN0IGRvdWJsZSBleHBl
Y3RlZCA9CisgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KGtTYW1wbGVzKSAvIHN0YXRpY19jYXN0
PGRvdWJsZT4oY291bnRzLnNpemUoKSk7CisKKyAgZG91YmxlIGNoaV9zcXVhcmUgPSBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVdpdGhFeHBlY3RlZCgKKyAgICAgIHN0ZDo6YmVnaW4o
Y291bnRzKSwgc3RkOjplbmQoY291bnRzKSwgZXhwZWN0ZWQpOworICBkb3VibGUgcCA9IGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlUFZhbHVlKGNoaV9zcXVhcmUsIGRvZik7CisKKyAg
Ly8gTG9nIGlmIHRoZSBjaGlfc3F1YXJlIHZhbHVlIGlzIGFib3ZlIHRoZSB0aHJlc2hvbGQuCisg
IGlmIChjaGlfc3F1YXJlID4gdGhyZXNob2xkKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
dXRvZmZzLnNpemUoKTsgaSsrKSB7CisgICAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAgICAg
ICBJTkZPLCBhYnNsOjpTdHJGb3JtYXQoIiVkIDogKCVmKSA9ICVkIiwgaSwgY3V0b2Zmc1tpXSwg
Y291bnRzW2ldKSk7CisgICAgfQorCisgICAgQUJTTF9JTlRFUk5BTF9MT0coCisgICAgICAgIElO
Rk8sIGFic2w6OlN0ckNhdCgibWVhbj0iLCBtZWFuKCksICIgc3RkZGV2PSIsIHN0ZGRldigpLCAi
XG4iLCAgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGV4cGVjdGVkICIsIGV4cGVj
dGVkLCAiXG4iLCAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrQ2hpU3F1YXJlZCwgIiAiLCBjaGlfc3F1YXJlLCAiICgiLCBwLCAiKVxuIiwgIC8vCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrQ2hpU3F1YXJlZCwgIiBAIDAuOTggPSAiLCB0aHJlc2hv
bGQpKTsKKyAgfQorICByZXR1cm4gcDsKK30KKworVEVTVF9QKEdhdXNzaWFuRGlzdHJpYnV0aW9u
VGVzdHMsIFpUZXN0KSB7CisgIC8vIFRPRE8oYWJzbC10ZWFtKTogUnVuIHRoZXNlIHRlc3RzIGFn
YWluc3Qgc3RkOjpub3JtYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4KKyAgLy8gdG8gdmFsaWRhdGUg
b3V0Y29tZXMgYXJlIHNpbWlsYXIuCisgIGNvbnN0IHNpemVfdCBrU2FtcGxlcyA9IDEwMDAwOwor
ICBjb25zdCBhdXRvJiBwYXJhbSA9IEdldFBhcmFtKCk7CisgIGNvbnN0IGludCBleHBlY3RlZF9m
YWlsdXJlcyA9CisgICAgICBzdGQ6Om1heCgxLCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Y2VpbChw
YXJhbS50cmlhbHMgKiBwYXJhbS5wX2ZhaWwpKSk7CisgIGNvbnN0IGRvdWJsZSBwID0gYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpSZXF1aXJlZFN1Y2Nlc3NQcm9iYWJpbGl0eSgKKyAgICAgIHBhcmFt
LnBfZmFpbCwgcGFyYW0udHJpYWxzKTsKKworICBpbnQgZmFpbHVyZXMgPSAwOworICBmb3IgKGlu
dCBpID0gMDsgaSA8IHBhcmFtLnRyaWFsczsgaSsrKSB7CisgICAgZmFpbHVyZXMgKz0KKyAgICAg
ICAgU2luZ2xlWlRlc3Q8YWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uPGRvdWJsZT4+KHAsIGtT
YW1wbGVzKSA/IDAgOiAxOworICB9CisgIEVYUEVDVF9MRShmYWlsdXJlcywgZXhwZWN0ZWRfZmFp
bHVyZXMpOworfQorCitURVNUX1AoR2F1c3NpYW5EaXN0cmlidXRpb25UZXN0cywgQ2hpU3F1YXJl
ZFRlc3QpIHsKKyAgY29uc3QgaW50IGtUcmlhbHMgPSAyMDsKKyAgaW50IGZhaWx1cmVzID0gMDsK
KworICBmb3IgKGludCBpID0gMDsgaSA8IGtUcmlhbHM7IGkrKykgeworICAgIGRvdWJsZSBwX3Zh
bHVlID0KKyAgICAgICAgU2luZ2xlQ2hpU3F1YXJlZFRlc3Q8YWJzbDo6Z2F1c3NpYW5fZGlzdHJp
YnV0aW9uPGRvdWJsZT4+KCk7CisgICAgaWYgKHBfdmFsdWUgPCAwLjAwMjUpIHsgIC8vIDEvNDAw
CisgICAgICBmYWlsdXJlcysrOworICAgIH0KKyAgfQorICAvLyBUaGVyZSBpcyBhIDAuMDUlIGNo
YW5jZSBvZiBwcm9kdWNpbmcgYXQgbGVhc3Qgb25lIGZhaWx1cmUsIHNvIHJhaXNlIHRoZQorICAv
LyBmYWlsdXJlIHRocmVzaG9sZCBoaWdoIGVub3VnaCB0byBhbGxvdyBmb3IgYSBmbGFrZSByYXRl
IG9mIGxlc3MgdGhhbiBvbmUgaW4KKyAgLy8gMTAsMDAwLgorICBFWFBFQ1RfTEUoZmFpbHVyZXMs
IDQpOworfQorCitzdGQ6OnZlY3RvcjxQYXJhbT4gR2VuUGFyYW1zKCkgeworICByZXR1cm4gewor
ICAgICAgLy8gTWVhbiBhcm91bmQgMC4KKyAgICAgIFBhcmFtezAuMCwgMS4wLCAwLjAxLCAxMDB9
LAorICAgICAgUGFyYW17MC4wLCAxZTIsIDAuMDEsIDEwMH0sCisgICAgICBQYXJhbXswLjAsIDFl
NCwgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezAuMCwgMWU4LCAwLjAxLCAxMDB9LAorICAgICAg
UGFyYW17MC4wLCAxZTE2LCAwLjAxLCAxMDB9LAorICAgICAgUGFyYW17MC4wLCAxZS0zLCAwLjAx
LCAxMDB9LAorICAgICAgUGFyYW17MC4wLCAxZS01LCAwLjAxLCAxMDB9LAorICAgICAgUGFyYW17
MC4wLCAxZS05LCAwLjAxLCAxMDB9LAorICAgICAgUGFyYW17MC4wLCAxZS0xNywgMC4wMSwgMTAw
fSwKKworICAgICAgLy8gTWVhbiBhcm91bmQgMS4KKyAgICAgIFBhcmFtezEuMCwgMS4wLCAwLjAx
LCAxMDB9LAorICAgICAgUGFyYW17MS4wLCAxZTIsIDAuMDEsIDEwMH0sCisgICAgICBQYXJhbXsx
LjAsIDFlLTIsIDAuMDEsIDEwMH0sCisKKyAgICAgIC8vIE1lYW4gYXJvdW5kIDEwMCAvIC0xMDAK
KyAgICAgIFBhcmFtezFlMiwgMS4wLCAwLjAxLCAxMDB9LAorICAgICAgUGFyYW17LTFlMiwgMS4w
LCAwLjAxLCAxMDB9LAorICAgICAgUGFyYW17MWUyLCAxZTYsIDAuMDEsIDEwMH0sCisgICAgICBQ
YXJhbXstMWUyLCAxZTYsIDAuMDEsIDEwMH0sCisKKyAgICAgIC8vIE1vcmUgZXh0cmVtZQorICAg
ICAgUGFyYW17MWU0LCAxZTQsIDAuMDEsIDEwMH0sCisgICAgICBQYXJhbXsxZTgsIDFlNCwgMC4w
MSwgMTAwfSwKKyAgICAgIFBhcmFtezFlMTIsIDFlNCwgMC4wMSwgMTAwfSwKKyAgfTsKK30KKwor
c3RkOjpzdHJpbmcgUGFyYW1OYW1lKGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxQYXJh
bT4mIGluZm8pIHsKKyAgY29uc3QgYXV0byYgcCA9IGluZm8ucGFyYW07CisgIHN0ZDo6c3RyaW5n
IG5hbWUgPSBhYnNsOjpTdHJDYXQoIm1lYW5fIiwgYWJzbDo6U2l4RGlnaXRzKHAubWVhbiksICJf
X3N0ZGRldl8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlNpeERp
Z2l0cyhwLnN0ZGRldikpOworICByZXR1cm4gYWJzbDo6U3RyUmVwbGFjZUFsbChuYW1lLCB7eyIr
IiwgIl8ifSwgeyItIiwgIl8ifSwgeyIuIiwgIl8ifX0pOworfQorCitJTlNUQU5USUFURV9URVNU
X1NVSVRFX1AoLCBHYXVzc2lhbkRpc3RyaWJ1dGlvblRlc3RzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4oR2VuUGFyYW1zKCkpLCBQYXJhbU5hbWUpOworCisv
LyBOT1RFOiBhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb24gaXMgbm90IGd1YXJhbnRlZWQgdG8g
YmUgc3RhYmxlLgorVEVTVChHYXVzc2lhbkRpc3RyaWJ1dGlvblRlc3QsIFN0YWJpbGl0eVRlc3Qp
IHsKKyAgLy8gYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uIHN0YWJpbGl0eSByZWxpZXMgb24g
dGhlIHVuZGVybHlpbmcgemlnbm9yCisgIC8vIGRhdGEsIGFic2w6OnJhbmRvbV9pbnRlcm5hOjpS
YW5kVTY0VG9Eb3VibGUsIHN0ZDo6ZXhwLCBzdGQ6OmxvZywgYW5kCisgIC8vIHN0ZDo6YWJzLgor
ICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAgICAgIHsweDAw
MDNlYjc2ZjZmN2Y3NTV1bGwsIDB4RkZDRUE1MEZEQjJGOTUzQnVsbCwgMHhDMzMyRERFRkJFNkM1
QUE1dWxsLAorICAgICAgIDB4NjU1ODIxODU2OEFCOTcwMnVsbCwgMHgyQUVGN0RBRDVCNkUyRjg0
dWxsLCAweDE1MjFCNjI4MjkwNzYxNzB1bGwsCisgICAgICAgMHhFQ0RENDc3NTYxOUYxNTEwdWxs
LCAweDEzQ0NBODMwRUI2MUJEOTZ1bGwsIDB4MDMzNEZFMUVBQTAzNjNDRnVsbCwKKyAgICAgICAw
eEI1NzM1QzkwNEM3MEEyMzl1bGwsIDB4RDU5RTlFMEJDQkFBREUxNHVsbCwgMHhFRUNDODZCQzYw
NjIyQ0E3dWxsfSk7CisKKyAgc3RkOjp2ZWN0b3I8aW50PiBvdXRwdXQoMTEpOworCisgIHsKKyAg
ICBhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb248ZG91YmxlPiBkaXN0OworICAgIHN0ZDo6Z2Vu
ZXJhdGUoc3RkOjpiZWdpbihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLAorICAgICAgICAgICAg
ICAgICAgWyZdIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oMTAwMDAwMDAuMCAqIGRpc3QodXJi
ZykpOyB9KTsKKworICAgIEVYUEVDVF9FUSgxMywgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBF
WFBFQ1RfVEhBVChvdXRwdXQsICAvLworICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRz
QXJlKDE0OTQsIDI1NTE4ODQxLCA5OTkxNTUwLCAxMzUxODU2LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0yMDM3MzIzOCwgMzQ1NjY4MiwgMzMzNTMwLCAtNjgwNDk4MSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMTUyNzk1ODAsIC0xNjQ1OTY1
NCwgMTQ5NCkpOworICB9CisKKyAgdXJiZy5yZXNldCgpOworICB7CisgICAgYWJzbDo6Z2F1c3Np
YW5fZGlzdHJpYnV0aW9uPGZsb2F0PiBkaXN0OworICAgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdp
bihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLAorICAgICAgICAgICAgICAgICAgWyZdIHsgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oMTAwMDAwMC4wZiAqIGRpc3QodXJiZykpOyB9KTsKKworICAg
IEVYUEVDVF9FUSgxMywgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfVEhBVCgKKyAg
ICAgICAgb3V0cHV0LCAgLy8KKyAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUoMTQ5LCAyNTUx
ODg0LCA5OTkxNTUsIDEzNTE4NSwgLTIwMzczMjMsIDM0NTY2OCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzMzNTMsIC02ODA0OTgsIC0xNTI3OTU4LCAtMTY0NTk2NSwgMTQ5KSk7Cisg
IH0KK30KKworLy8gVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyB0ZXN0LiBJZiBh
bnkgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24KKy8vIGNoYW5nZXMsIHRoZW4gaXQgaXMgbGlr
ZWx5IHRoYXQgdGhpcyB0ZXN0IHdpbGwgY2hhbmdlIGFzIHdlbGwuCisvLyBBbHNvLCBpZiBkZXBl
bmRlbmNpZXMgb2YgdGhlIGRpc3RyaWJ1dGlvbiBjaGFuZ2UsIHN1Y2ggYXMgUmFuZFU2NFRvRG91
YmxlLAorLy8gdGhlbiB0aGlzIGlzIGFsc28gbGlrZWx5IHRvIGNoYW5nZS4KK1RFU1QoR2F1c3Np
YW5EaXN0cmlidXRpb25UZXN0LCBBbGdvcml0aG1Cb3VuZHMpIHsKKyAgYWJzbDo6Z2F1c3NpYW5f
ZGlzdHJpYnV0aW9uPGRvdWJsZT4gZGlzdDsKKworICAvLyBJbiB+OTUlIG9mIGNhc2VzLCBhIHNp
bmdsZSB2YWx1ZSBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBvdXRwdXQuCisgIC8vIGZvciBhbGwg
aW5wdXRzIHdoZXJlIHx4fCA8IDAuNzUwNDYxMDIxMzg5IHRoaXMgc2hvdWxkIGJlIHRoZSBjYXNl
LgorICAvLworICAvLyBUaGUgZXhhY3QgY29uc3RyYWludHMgYXJlIGJhc2VkIG9uIHRoZSB6aWdn
dXJhdCB0YWJsZXMsIGFuZCBhbnkKKyAgLy8gY2hhbmdlcyB0byB0aGUgemlnZ3VyYXQgdGFibGVz
IG1heSByZXF1aXJlIGFkanVzdGluZyB0aGVzZSBib3VuZHMuCisgIC8vCisgIC8vIGZvciBpIGlu
IHJhbmdlKDAsIGxlbihYKS0xKToKKyAgLy8gICBwcmludCBpLCBYW2krMV0vWFtpXSwgKFhbaSsx
XS9YW2ldID4gMC45ODQzNzUpCisgIC8vCisgIC8vIDAuMTI1IDw9IHx2YWx1ZXN8IDw9IDAuNzUK
KyAgY29uc3QgdWludDY0X3Qga1ZhbHVlc1tdID0geworICAgICAgMHgxMDAwMDAwMDAwMDAwMTAw
dWxsLCAweDIwMDAwMDAwMDAwMDAxMDB1bGwsIDB4MzAwMDAwMDAwMDAwMDEwMHVsbCwKKyAgICAg
IDB4NDAwMDAwMDAwMDAwMDEwMHVsbCwgMHg1MDAwMDAwMDAwMDAwMTAwdWxsLCAweDYwMDAwMDAw
MDAwMDAxMDB1bGwsCisgICAgICAvLyBuZWdhdGl2ZSB2YWx1ZXMKKyAgICAgIDB4OTAwMDAwMDAw
MDAwMDEwMHVsbCwgMHhhMDAwMDAwMDAwMDAwMTAwdWxsLCAweGIwMDAwMDAwMDAwMDAxMDB1bGws
CisgICAgICAweGMwMDAwMDAwMDAwMDAxMDB1bGwsIDB4ZDAwMDAwMDAwMDAwMDEwMHVsbCwgMHhl
MDAwMDAwMDAwMDAwMTAwdWxsfTsKKworICAvLyAwLjg3NSA8PSB8dmFsdWVzfCA8PSAwLjk4NDM3
NQorICBjb25zdCB1aW50NjRfdCBrRXh0cmFWYWx1ZXNbXSA9IHsKKyAgICAgIDB4NzAwMDAwMDAw
MDAwMDEwMHVsbCwgMHg3ODAwMDAwMDAwMDAwMTAwdWxsLCAgLy8KKyAgICAgIDB4N2MwMDAwMDAw
MDAwMDEwMHVsbCwgMHg3ZTAwMDAwMDAwMDAwMTAwdWxsLCAgLy8KKyAgICAgIC8vIG5lZ2F0aXZl
IHZhbHVlcworICAgICAgMHhmMDAwMDAwMDAwMDAwMTAwdWxsLCAweGY4MDAwMDAwMDAwMDAxMDB1
bGwsICAvLworICAgICAgMHhmYzAwMDAwMDAwMDAwMTAwdWxsLCAweGZlMDAwMDAwMDAwMDAxMDB1
bGx9OworCisgIGF1dG8gbWFrZV9ib3ggPSBbXSh1aW50NjRfdCB2LCB1aW50NjRfdCBib3gpIHsK
KyAgICByZXR1cm4gKHYgJiAweGZmZmZmZmZmZmZmZmZmODB1bGwpIHwgYm94OworICB9OworCisg
IC8vIFRoZSBib3ggaXMgdGhlIGxvd2VyIDcgYml0cyBvZiB0aGUgdmFsdWUuIFdoZW4gdGhlIGJv
eCA9PSAwLCB0aGVuCisgIC8vIHRoZSBhbGdvcml0aG0gdXNlcyBhbiBlc2NhcGUgaGF0Y2ggdG8g
c2VsZWN0IHRoZSByZXN1bHQgZm9yIGxhcmdlCisgIC8vIG91dHB1dHMuCisgIGZvciAodWludDY0
X3QgYm94ID0gMDsgYm94IDwgMHg3ZjsgYm94KyspIHsKKyAgICBmb3IgKGNvbnN0IHVpbnQ2NF90
IHYgOiBrVmFsdWVzKSB7CisgICAgICAvLyBFeHRyYSB2YWx1ZXMgYXJlIGFkZGVkIHRvIHRoZSBz
ZXF1ZW5jZSB0byBhdHRlbXB0IHRvIGF2b2lkCisgICAgICAvLyBpbmZpbml0ZSBsb29wcyBmcm9t
IHJlamVjdGlvbiBzYW1wbGluZyBvbiBidWdzL2Vycm9ycy4KKyAgICAgIGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKAorICAgICAgICAgIHttYWtlX2JveCh2LCBib3gp
LCAweDAwMDNlYjc2ZjZmN2Y3NTV1bGwsIDB4NUZDRUE1MEZEQjJGOTUzQnVsbH0pOworCisgICAg
ICBhdXRvIGEgPSBkaXN0KHVyYmcpOworICAgICAgRVhQRUNUX0VRKDEsIHVyYmcuaW52b2NhdGlv
bnMoKSkgPDwgYm94IDw8ICIgIiA8PCBzdGQ6OmhleCA8PCB2OworICAgICAgaWYgKHYgJiAweDgw
MDAwMDAwMDAwMDAwMDB1bGwpIHsKKyAgICAgICAgRVhQRUNUX0xUKGEsIDAuMCkgPDwgYm94IDw8
ICIgIiA8PCBzdGQ6OmhleCA8PCB2OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgRVhQRUNUX0dU
KGEsIDAuMCkgPDwgYm94IDw8ICIgIiA8PCBzdGQ6OmhleCA8PCB2OworICAgICAgfQorICAgIH0K
KyAgICBpZiAoYm94ID4gMTAgJiYgYm94IDwgMTAwKSB7CisgICAgICAvLyBUaGUgY2VudGVyIGJv
eGVzIHVzZSB0aGUgZmFzdCBhbGdvcml0aG0gZm9yIG1vcmUKKyAgICAgIC8vIHRoYW4gOTguNDM3
NSUgb2YgdmFsdWVzLgorICAgICAgZm9yIChjb25zdCB1aW50NjRfdCB2IDoga0V4dHJhVmFsdWVz
KSB7CisgICAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKAor
ICAgICAgICAgICAge21ha2VfYm94KHYsIGJveCksIDB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHg1
RkNFQTUwRkRCMkY5NTNCdWxsfSk7CisKKyAgICAgICAgYXV0byBhID0gZGlzdCh1cmJnKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDEsIHVyYmcuaW52b2NhdGlvbnMoKSkgPDwgYm94IDw8ICIgIiA8PCBz
dGQ6OmhleCA8PCB2OworICAgICAgICBpZiAodiAmIDB4ODAwMDAwMDAwMDAwMDAwMHVsbCkgewor
ICAgICAgICAgIEVYUEVDVF9MVChhLCAwLjApIDw8IGJveCA8PCAiICIgPDwgc3RkOjpoZXggPDwg
djsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBFWFBFQ1RfR1QoYSwgMC4wKSA8PCBib3gg
PDwgIiAiIDw8IHN0ZDo6aGV4IDw8IHY7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0K
KworICAvLyBXaGVuIHRoZSBib3ggPT0gMCwgdGhlIGZhbGxiYWNrIGFsZ29yaXRobSB1c2VzIGEg
cmF0aW8gb2YgdW5pZm9ybXMsCisgIC8vIHdoaWNoIGNvbnN1bWVzIDIgYWRkaXRpb25hbCB2YWx1
ZXMgZnJvbSB0aGUgdXJiZy4KKyAgLy8gRmFsbGJhY2sgYWxzbyByZXF1aXJlcyB0aGF0IHRoZSBp
bml0aWFsIHZhbHVlIGJlID4gMC45MjcxNTg2MDI2MDk2NjgxLgorICBhdXRvIG1ha2VfZmFsbGJh
Y2sgPSBbXSh1aW50NjRfdCB2KSB7IHJldHVybiAodiAmIDB4ZmZmZmZmZmZmZmZmZmY4MHVsbCk7
IH07CisKKyAgZG91YmxlIHRhaWxbMl07CisgIHsKKyAgICAvLyAwLjkzNzUKKyAgICBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAgICAgICAge21ha2VfZmFsbGJh
Y2soMHg3ODAwMDAwMDAwMDAwMDAwdWxsKSwgMHgxM0NDQTgzMEVCNjFCRDk2dWxsLAorICAgICAg
ICAgMHgwMDAwMDA3NmY2ZjdmNzU1dWxsfSk7CisgICAgdGFpbFswXSA9IGRpc3QodXJiZyk7Cisg
ICAgRVhQRUNUX0VRKDMsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQRUNUX0dUKHRhaWxb
MF0sIDApOworICB9CisgIHsKKyAgICAvLyAtMC45Mzc1CisgICAgYWJzbDo6cmFuZG9tX2ludGVy
bmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisgICAgICAgIHttYWtlX2ZhbGxiYWNrKDB4ZjgwMDAw
MDAwMDAwMDAwMHVsbCksIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbCwKKyAgICAgICAgIDB4MDAwMDAw
NzZmNmY3Zjc1NXVsbH0pOworICAgIHRhaWxbMV0gPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9F
USgzLCB1cmJnLmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9MVCh0YWlsWzFdLCAwKTsKKyAg
fQorICBFWFBFQ1RfRVEodGFpbFswXSwgLXRhaWxbMV0pOworICBFWFBFQ1RfRVEoNDE4NjEwLCBz
dGF0aWNfY2FzdDxpbnQ2NF90Pih0YWlsWzBdICogMTAwMDAwLjApKTsKKworICAvLyBXaGVuIHRo
ZSBib3ggIT0gMCwgdGhlIGZhbGxiYWNrIGFsZ29yaXRobSBjb21wdXRlcyBhIHdlZGdlIGZ1bmN0
aW9uLgorICAvLyBEZXBlbmRpbmcgb24gdGhlIGJveCwgdGhlIHRocmVzaG9sZCBmb3IgdmFyaWVz
IGFzIGhpZ2ggYXMKKyAgLy8gMC45OTE1MjI0ODAyMjguCisgIHsKKyAgICAvLyAwLjk5MjE4NzUs
IDAuODc1CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisg
ICAgICAgIHttYWtlX2JveCgweDdmMDAwMDAwMDAwMDAwMDB1bGwsIDEyMCksIDB4ZTAwMDAwMDAw
MDAwMDAwMXVsbCwKKyAgICAgICAgIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbH0pOworICAgIHRhaWxb
MF0gPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9FUSgyLCB1cmJnLmludm9jYXRpb25zKCkpOwor
ICAgIEVYUEVDVF9HVCh0YWlsWzBdLCAwKTsKKyAgfQorICB7CisgICAgLy8gLTAuOTkyMTg3NSwg
MC44NzUKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAg
ICAgICAge21ha2VfYm94KDB4ZmYwMDAwMDAwMDAwMDAwMHVsbCwgMTIwKSwgMHhlMDAwMDAwMDAw
MDAwMDAxdWxsLAorICAgICAgICAgMHgxM0NDQTgzMEVCNjFCRDk2dWxsfSk7CisgICAgdGFpbFsx
XSA9IGRpc3QodXJiZyk7CisgICAgRVhQRUNUX0VRKDIsIHVyYmcuaW52b2NhdGlvbnMoKSk7Cisg
ICAgRVhQRUNUX0xUKHRhaWxbMV0sIDApOworICB9CisgIEVYUEVDVF9FUSh0YWlsWzBdLCAtdGFp
bFsxXSk7CisgIEVYUEVDVF9FUSg2MTk0OCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGFpbFswXSAq
IDEwMDAwMC4wKSk7CisKKyAgLy8gRmFsbGJhY2sgcmVqZWN0ZWQsIHRyeSBhZ2Fpbi4KKyAgewor
ICAgIC8vIC0wLjk5MjE4NzUsIDAuMDYyNQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2Vx
dWVuY2VfdXJiZyB1cmJnKAorICAgICAgICB7bWFrZV9ib3goMHhmZjAwMDAwMDAwMDAwMDAwdWxs
LCAxMjApLCAweDEwMDAwMDAwMDAwMDAwMDEsCisgICAgICAgICBtYWtlX2JveCgweDEwMDAwMDAw
MDAwMDAxMDB1bGwsIDUwKSwgMHgxM0NDQTgzMEVCNjFCRDk2dWxsfSk7CisgICAgZGlzdCh1cmJn
KTsKKyAgICBFWFBFQ1RfRVEoMywgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgfQorfQorCit9ICAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nZW5lcmF0b3JzX3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vZ2VuZXJhdG9yc190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxNzI1ZjEzOWNk
M2M5NWY3NDI4ZTBmMGM0Y2NjNmE1MTVmOTc5N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vZ2VuZXJhdG9yc190ZXN0LmNjCkBAIC0wLDAgKzEsMTc5IEBACisvLyBDb3B5cmlnaHQg
MjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVk
ZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9kaXN0cmlidXRpb25z
LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisKK25hbWVzcGFjZSB7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordm9pZCBUZXN0VW5pZm9ybShVUkJHKiBnZW4pIHsKKyAg
Ly8gW2EsIGIpIGRlZmF1bHQtc2VtYW50aWNzLCBpbmZlcnJlZCB0eXBlcy4KKyAgYWJzbDo6VW5p
Zm9ybSgqZ2VuLCAwLCAxMDApOyAgICAgLy8gaW50CisgIGFic2w6OlVuaWZvcm0oKmdlbiwgMCwg
MS4wKTsgICAgIC8vIFByb21vdGVkIHRvIGRvdWJsZQorICBhYnNsOjpVbmlmb3JtKCpnZW4sIDAu
MGYsIDEuMCk7ICAvLyBQcm9tb3RlZCB0byBkb3VibGUKKyAgYWJzbDo6VW5pZm9ybSgqZ2VuLCAw
LjAsIDEuMCk7ICAgLy8gZG91YmxlCisgIGFic2w6OlVuaWZvcm0oKmdlbiwgLTEsIDFMKTsgICAg
IC8vIFByb21vdGVkIHRvIGxvbmcKKworICAvLyBSb2xsIGEgZGllLgorICBhYnNsOjpVbmlmb3Jt
KGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2VkLCAqZ2VuLCAxLCA2KTsKKworICAvLyBHZXQgYSBm
cmFjdGlvbi4KKyAgYWJzbDo6VW5pZm9ybShhYnNsOjpJbnRlcnZhbE9wZW5PcGVuLCAqZ2VuLCAw
LjAsIDEuMCk7CisKKyAgLy8gQXNzaWduIGEgdmFsdWUgdG8gYSByYW5kb20gZWxlbWVudC4KKyAg
c3RkOjp2ZWN0b3I8aW50PiBlbGVtcyA9IHsxMCwgMjAsIDMwLCA0MCwgNTB9OworICBlbGVtc1th
YnNsOjpVbmlmb3JtKCpnZW4sIDB1LCBlbGVtcy5zaXplKCkpXSA9IDU7CisgIGVsZW1zW2Fic2w6
OlVuaWZvcm08c2l6ZV90PigqZ2VuLCAwLCBlbGVtcy5zaXplKCkpXSA9IDM7CisKKyAgLy8gQ2hv
b3NlIHNvbWUgZXBzaWxvbiBhcm91bmQgemVyby4KKyAgYWJzbDo6VW5pZm9ybShhYnNsOjpJbnRl
cnZhbE9wZW5PcGVuLCAqZ2VuLCAtMS4wLCAxLjApOworCisgIC8vIChhLCBiKSBzZW1hbnRpY3Ms
IGluZmVycmVkIHR5cGVzLgorICBhYnNsOjpVbmlmb3JtKGFic2w6OkludGVydmFsT3Blbk9wZW4s
ICpnZW4sIDAsIDEuMCk7ICAvLyBQcm9tb3RlZCB0byBkb3VibGUKKworICAvLyBFeHBsaWN0IG92
ZXJyaWRpbmcgb2YgdHlwZXMuCisgIGFic2w6OlVuaWZvcm08aW50PigqZ2VuLCAwLCAxMDApOwor
ICBhYnNsOjpVbmlmb3JtPGludDhfdD4oKmdlbiwgMCwgMTAwKTsKKyAgYWJzbDo6VW5pZm9ybTxp
bnQxNl90PigqZ2VuLCAwLCAxMDApOworICBhYnNsOjpVbmlmb3JtPHVpbnQxNl90PigqZ2VuLCAw
LCAxMDApOworICBhYnNsOjpVbmlmb3JtPGludDMyX3Q+KCpnZW4sIDAsIDEgPDwgMTApOworICBh
YnNsOjpVbmlmb3JtPHVpbnQzMl90PigqZ2VuLCAwLCAxIDw8IDEwKTsKKyAgYWJzbDo6VW5pZm9y
bTxpbnQ2NF90PigqZ2VuLCAwLCAxIDw8IDEwKTsKKyAgYWJzbDo6VW5pZm9ybTx1aW50NjRfdD4o
KmdlbiwgMCwgMSA8PCAxMCk7CisKKyAgYWJzbDo6VW5pZm9ybTxmbG9hdD4oKmdlbiwgMC4wLCAx
LjApOworICBhYnNsOjpVbmlmb3JtPGZsb2F0PigqZ2VuLCAwLCAxKTsKKyAgYWJzbDo6VW5pZm9y
bTxmbG9hdD4oKmdlbiwgLTEsIDEpOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oKmdlbiwgMC4w
LCAxLjApOworCisgIGFic2w6OlVuaWZvcm08ZmxvYXQ+KCpnZW4sIC0xLjAsIDApOworICBhYnNs
OjpVbmlmb3JtPGRvdWJsZT4oKmdlbiwgLTEuMCwgMCk7CisKKyAgLy8gVGFnZ2VkCisgIGFic2w6
OlVuaWZvcm08ZG91YmxlPihhYnNsOjpJbnRlcnZhbENsb3NlZENsb3NlZCwgKmdlbiwgMCwgMSk7
CisgIGFic2w6OlVuaWZvcm08ZG91YmxlPihhYnNsOjpJbnRlcnZhbENsb3NlZE9wZW4sICpnZW4s
IDAsIDEpOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oYWJzbDo6SW50ZXJ2YWxPcGVuT3Blbiwg
KmdlbiwgMCwgMSk7CisgIGFic2w6OlVuaWZvcm08ZG91YmxlPihhYnNsOjpJbnRlcnZhbE9wZW5D
bG9zZWQsICpnZW4sIDAsIDEpOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oYWJzbDo6SW50ZXJ2
YWxDbG9zZWRDbG9zZWQsICpnZW4sIDAsIDEpOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oYWJz
bDo6SW50ZXJ2YWxPcGVuT3BlbiwgKmdlbiwgMCwgMSk7CisKKyAgYWJzbDo6VW5pZm9ybTxpbnQ+
KGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2VkLCAqZ2VuLCAwLCAxMDApOworICBhYnNsOjpVbmlm
b3JtPGludD4oYWJzbDo6SW50ZXJ2YWxDbG9zZWRPcGVuLCAqZ2VuLCAwLCAxMDApOworICBhYnNs
OjpVbmlmb3JtPGludD4oYWJzbDo6SW50ZXJ2YWxPcGVuT3BlbiwgKmdlbiwgMCwgMTAwKTsKKyAg
YWJzbDo6VW5pZm9ybTxpbnQ+KGFic2w6OkludGVydmFsT3BlbkNsb3NlZCwgKmdlbiwgMCwgMTAw
KTsKKyAgYWJzbDo6VW5pZm9ybTxpbnQ+KGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2VkLCAqZ2Vu
LCAwLCAxMDApOworICBhYnNsOjpVbmlmb3JtPGludD4oYWJzbDo6SW50ZXJ2YWxPcGVuT3Blbiwg
KmdlbiwgMCwgMTAwKTsKKworICAvLyBXaXRoICpnZW5lcmF0b3IgYXMgYW4gUi12YWx1ZSByZWZl
cmVuY2UuCisgIGFic2w6OlVuaWZvcm08aW50PihVUkJHKCksIDAsIDEwMCk7CisgIGFic2w6OlVu
aWZvcm08ZG91YmxlPihVUkJHKCksIDAuMCwgMS4wKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFVSQkc+Cit2b2lkIFRlc3RFeHBvbmVudGlhbChVUkJHKiBnZW4pIHsKKyAgYWJzbDo6RXhwb25l
bnRpYWw8ZmxvYXQ+KCpnZW4pOworICBhYnNsOjpFeHBvbmVudGlhbDxkb3VibGU+KCpnZW4pOwor
ICBhYnNsOjpFeHBvbmVudGlhbDxkb3VibGU+KFVSQkcoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBVUkJHPgordm9pZCBUZXN0UG9pc3NvbihVUkJHKiBnZW4pIHsKKyAgLy8gW3JhbmQuZGlz
dC5wb2lzXSBJbmRpY2F0ZXMgdGhhdCB0aGUgc3RkOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbgorICAv
LyBpcyBwYXJhbWV0ZXJpemVkIGJ5IEludFR5cGUsIGhvd2V2ZXIgTVNWQyBkb2VzIG5vdCBhbGxv
dyA4LWJpdAorICAvLyB0eXBlcy4KKyAgYWJzbDo6UG9pc3NvbjxpbnQ+KCpnZW4pOworICBhYnNs
OjpQb2lzc29uPGludDE2X3Q+KCpnZW4pOworICBhYnNsOjpQb2lzc29uPHVpbnQxNl90PigqZ2Vu
KTsKKyAgYWJzbDo6UG9pc3NvbjxpbnQzMl90PigqZ2VuKTsKKyAgYWJzbDo6UG9pc3Nvbjx1aW50
MzJfdD4oKmdlbik7CisgIGFic2w6OlBvaXNzb248aW50NjRfdD4oKmdlbik7CisgIGFic2w6OlBv
aXNzb248dWludDY0X3Q+KCpnZW4pOworICBhYnNsOjpQb2lzc29uPHVpbnQ2NF90PihVUkJHKCkp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3ZvaWQgVGVzdEJlcm5vdWxsaShVUkJH
KiBnZW4pIHsKKyAgYWJzbDo6QmVybm91bGxpKCpnZW4sIDAuNSk7CisgIGFic2w6OkJlcm5vdWxs
aSgqZ2VuLCAwLjUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3ZvaWQgVGVzdFpp
cGYoVVJCRyogZ2VuKSB7CisgIGFic2w6OlppcGY8aW50PigqZ2VuLCAxMDApOworICBhYnNsOjpa
aXBmPGludDhfdD4oKmdlbiwgMTAwKTsKKyAgYWJzbDo6WmlwZjxpbnQxNl90PigqZ2VuLCAxMDAp
OworICBhYnNsOjpaaXBmPHVpbnQxNl90PigqZ2VuLCAxMDApOworICBhYnNsOjpaaXBmPGludDMy
X3Q+KCpnZW4sIDEgPDwgMTApOworICBhYnNsOjpaaXBmPHVpbnQzMl90PigqZ2VuLCAxIDw8IDEw
KTsKKyAgYWJzbDo6WmlwZjxpbnQ2NF90PigqZ2VuLCAxIDw8IDEwKTsKKyAgYWJzbDo6WmlwZjx1
aW50NjRfdD4oKmdlbiwgMSA8PCAxMCk7CisgIGFic2w6OlppcGY8dWludDY0X3Q+KFVSQkcoKSwg
MSA8PCAxMCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordm9pZCBUZXN0R2F1c3Np
YW4oVVJCRyogZ2VuKSB7CisgIGFic2w6OkdhdXNzaWFuPGZsb2F0PigqZ2VuLCAxLjAsIDEuMCk7
CisgIGFic2w6OkdhdXNzaWFuPGRvdWJsZT4oKmdlbiwgMS4wLCAxLjApOworICBhYnNsOjpHYXVz
c2lhbjxkb3VibGU+KFVSQkcoKSwgMS4wLCAxLjApOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VVJCRz4KK3ZvaWQgVGVzdExvZ05vcm1hbChVUkJHKiBnZW4pIHsKKyAgYWJzbDo6TG9nVW5pZm9y
bTxpbnQ+KCpnZW4sIDAsIDEwMCk7CisgIGFic2w6OkxvZ1VuaWZvcm08aW50OF90PigqZ2VuLCAw
LCAxMDApOworICBhYnNsOjpMb2dVbmlmb3JtPGludDE2X3Q+KCpnZW4sIDAsIDEwMCk7CisgIGFi
c2w6OkxvZ1VuaWZvcm08dWludDE2X3Q+KCpnZW4sIDAsIDEwMCk7CisgIGFic2w6OkxvZ1VuaWZv
cm08aW50MzJfdD4oKmdlbiwgMCwgMSA8PCAxMCk7CisgIGFic2w6OkxvZ1VuaWZvcm08dWludDMy
X3Q+KCpnZW4sIDAsIDEgPDwgMTApOworICBhYnNsOjpMb2dVbmlmb3JtPGludDY0X3Q+KCpnZW4s
IDAsIDEgPDwgMTApOworICBhYnNsOjpMb2dVbmlmb3JtPHVpbnQ2NF90PigqZ2VuLCAwLCAxIDw8
IDEwKTsKKyAgYWJzbDo6TG9nVW5pZm9ybTx1aW50NjRfdD4oVVJCRygpLCAwLCAxIDw8IDEwKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit2b2lkIENvbXBhdGliaWxpdHlUZXN0KCkg
eworICBVUkJHIGdlbjsKKworICBUZXN0VW5pZm9ybSgmZ2VuKTsKKyAgVGVzdEV4cG9uZW50aWFs
KCZnZW4pOworICBUZXN0UG9pc3NvbigmZ2VuKTsKKyAgVGVzdEJlcm5vdWxsaSgmZ2VuKTsKKyAg
VGVzdFppcGYoJmdlbik7CisgIFRlc3RHYXVzc2lhbigmZ2VuKTsKKyAgVGVzdExvZ05vcm1hbCgm
Z2VuKTsKK30KKworVEVTVChzdGRfbXQxOTkzN182NCwgQ29tcGF0aWJpbGl0eSkgeworICAvLyBW
YWxpZGF0ZSB3aXRoIHN0ZDo6bXQxOTkzN182NAorICBDb21wYXRpYmlsaXR5VGVzdDxzdGQ6Om10
MTk5MzdfNjQ+KCk7Cit9CisKK1RFU1QoQml0R2VuLCBDb21wYXRpYmlsaXR5KSB7CisgIC8vIFZh
bGlkYXRlIHdpdGggYWJzbDo6Qml0R2VuCisgIENvbXBhdGliaWxpdHlUZXN0PGFic2w6OkJpdEdl
bj4oKTsKK30KKworVEVTVChJbnNlY3VyZUJpdEdlbiwgQ29tcGF0aWJpbGl0eSkgeworICAvLyBW
YWxpZGF0ZSB3aXRoIGFic2w6Okluc2VjdXJlQml0R2VuCisgIENvbXBhdGliaWxpdHlUZXN0PGFi
c2w6Okluc2VjdXJlQml0R2VuPigpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC9CVUlMRC5iYXplbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDU0NzFhNjFjOTc2ZjM0NzRmNTg3N2Q4YTZjNDMy
YmQ1Zjg1YzMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL0JVSUxE
LmJhemVsCkBAIC0wLDAgKzEsNjU4IEBACisjIEludGVybmFsLW9ubHkgaW1wbGVtZW50YXRpb24g
Y2xhc3NlcyBmb3IgQWJzZWlsIFJhbmRvbQorbG9hZCgKKyAgICAiLy9hYnNsOmNvcHRzL2NvbmZp
Z3VyZV9jb3B0cy5iemwiLAorICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAorICAgICJBQlNMX0RF
RkFVTFRfTElOS09QVFMiLAorICAgICJBQlNMX1JBTkRPTV9SQU5ERU5fQ09QVFMiLAorICAgICJB
QlNMX1RFU1RfQ09QVFMiLAorICAgICJhYnNsX3JhbmRvbV9yYW5kZW5fY29wdHNfaW5pdCIsCisp
CisKK3BhY2thZ2UoZGVmYXVsdF92aXNpYmlsaXR5ID0gWworICAgICIvL2Fic2wvcmFuZG9tOl9f
cGtnX18iLAorXSkKKworbGljZW5zZXMoWyJub3RpY2UiXSkgICMgQXBhY2hlIDIuMAorCitjY19s
aWJyYXJ5KAorICAgIG5hbWUgPSAidHJhaXRzIiwKKyAgICBoZHJzID0gWyJ0cmFpdHMuaCJdLAor
ICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2wvcmFuZG9t
Ol9fcGtnX18iLAorICAgIF0sCisgICAgZGVwcyA9IFsiLy9hYnNsL2Jhc2U6Y29uZmlnIl0sCisp
CisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJkaXN0cmlidXRpb25fY2FsbGVyIiwKKyAgICBo
ZHJzID0gWyJkaXN0cmlidXRpb25fY2FsbGVyLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVM
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB2aXNp
YmlsaXR5ID0gWworICAgICAgICAiLy9hYnNsL3JhbmRvbTpfX3BrZ19fIiwKKyAgICBdLAorKQor
CitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiZGlzdHJpYnV0aW9ucyIsCisgICAgaGRycyA9IFsK
KyAgICAgICAgImRpc3RyaWJ1dGlvbnMuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVG
QVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBk
ZXBzID0gWworICAgICAgICAiOmRpc3RyaWJ1dGlvbl9jYWxsZXIiLAorICAgICAgICAiOmZhc3Rf
dW5pZm9ybV9iaXRzIiwKKyAgICAgICAgIjpmYXN0bWF0aCIsCisgICAgICAgICI6dHJhaXRzIiwK
KyAgICAgICAgIjp1bmlmb3JtX2hlbHBlciIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3Ry
YWl0cyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6
c3BhbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImZhc3RfdW5pZm9y
bV9iaXRzIiwKKyAgICBoZHJzID0gWworICAgICAgICAiZmFzdF91bmlmb3JtX2JpdHMuaCIsCisg
ICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB2aXNpYmlsaXR5ID0gWworICAgICAgICAiLy9hYnNs
L3JhbmRvbTpfX3BrZ19fIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAi
c2VlZF9tYXRlcmlhbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgInNlZWRfbWF0ZXJpYWwuY2Mi
LAorICAgIF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgInNlZWRfbWF0ZXJpYWwuaCIsCisgICAg
XSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
REVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmZhc3RfdW5pZm9ybV9i
aXRzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVf
aGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvdHlw
ZXM6b3B0aW9uYWwiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOnNwYW4iLAorICAgIF0sCispCisK
K2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJwb29sX3VyYmciLAorICAgIHNyY3MgPSBbCisgICAg
ICAgICJwb29sX3VyYmcuY2MiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgInBvb2xf
dXJiZy5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxp
bmtvcHRzID0gc2VsZWN0KHsKKyAgICAgICAgIi8vYWJzbDp3aW5kb3dzIjogW10sCisgICAgICAg
ICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLXB0aHJlYWQiXSwKKyAgICB9KSArIEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOnJhbmRlbiIsCisgICAgICAg
ICI6c2VlZF9tYXRlcmlhbCIsCisgICAgICAgICI6dHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9i
YXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCisgICAgICAgICIvL2Fic2wvYmFz
ZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6ZW5kaWFuIiwKKyAgICAgICAg
Ii8vYWJzbC9yYW5kb206c2VlZF9nZW5fZXhjZXB0aW9uIiwKKyAgICAgICAgIi8vYWJzbC90eXBl
czpzcGFuIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiZXhwbGljaXRf
c2VlZF9zZXEiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWworICAgICAgICAiZXhw
bGljaXRfc2VlZF9zZXEuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKykKKworY2NfbGlicmFy
eSgKKyAgICBuYW1lID0gInNlcXVlbmNlX3VyYmciLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBo
ZHJzID0gWworICAgICAgICAic2VxdWVuY2VfdXJiZy5oIiwKKyAgICBdLAorICAgIGNvcHRzID0g
QUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAic2FsdGVkX3NlZWRfc2VxIiwKKyAgICBo
ZHJzID0gWworICAgICAgICAic2FsdGVkX3NlZWRfc2VxLmgiLAorICAgIF0sCisgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpzZWVkX21hdGVyaWFsIiwKKyAgICAgICAgIi8v
YWJzbC9jb250YWluZXI6aW5saW5lZF92ZWN0b3IiLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlw
ZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgICAgICAgIi8v
YWJzbC90eXBlczpzcGFuIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAi
aW9zdHJlYW1fc3RhdGVfc2F2ZXIiLAorICAgIGhkcnMgPSBbImlvc3RyZWFtX3N0YXRlX3NhdmVy
LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiLy9hYnNsL21ldGE6
dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL251bWVyaWM6aW50MTI4IiwKKyAgICBdLAor
KQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiZGlzdHJpYnV0aW9uX2ltcGwiLAorICAgIGhk
cnMgPSBbCisgICAgICAgICJkaXN0cmlidXRpb25faW1wbC5oIiwKKyAgICBdLAorICAgIGNvcHRz
ID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZmFzdG1hdGgiLAorICAgICAgICAiOnRyYWl0
cyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpiaXRzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNv
bmZpZyIsCisgICAgICAgICIvL2Fic2wvbnVtZXJpYzppbnQxMjgiLAorICAgIF0sCispCisKK2Nj
X2xpYnJhcnkoCisgICAgbmFtZSA9ICJmYXN0bWF0aCIsCisgICAgaGRycyA9IFsKKyAgICAgICAg
ImZhc3RtYXRoLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsiLy9hYnNs
L2Jhc2U6Yml0cyJdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAibm9uc2VjdXJlX2Jh
c2UiLAorICAgIGhkcnMgPSBbIm5vbnNlY3VyZV9iYXNlLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xf
REVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAg
ICBkZXBzID0gWworICAgICAgICAiOnBvb2xfdXJiZyIsCisgICAgICAgICI6c2FsdGVkX3NlZWRf
c2VxIiwKKyAgICAgICAgIjpzZWVkX21hdGVyaWFsIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNv
cmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAg
ICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICAg
ICAgICAiLy9hYnNsL3R5cGVzOnNwYW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAg
bmFtZSA9ICJwY2dfZW5naW5lIiwKKyAgICBoZHJzID0gWyJwY2dfZW5naW5lLmgiXSwKKyAgICBj
b3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmZhc3RtYXRoIiwKKyAgICAgICAgIjpp
b3N0cmVhbV9zdGF0ZV9zYXZlciIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLAorICAg
ICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL251bWVyaWM6
aW50MTI4IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAicmFuZGVuX2Vu
Z2luZSIsCisgICAgaGRycyA9IFsicmFuZGVuX2VuZ2luZS5oIl0sCisgICAgY29wdHMgPSBBQlNM
X0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjppb3N0cmVhbV9zdGF0ZV9zYXZlciIsCisgICAgICAgICI6
cmFuZGVuIiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICBdLAorKQor
CitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAicGxhdGZvcm0iLAorICAgIGhkcnMgPSBbCisgICAg
ICAgICJyYW5kZW5fdHJhaXRzLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgdGV4dHVh
bF9oZHJzID0gWworICAgICAgICAicmFuZGVuLWtleXMuaW5jIiwKKyAgICAgICAgInBsYXRmb3Jt
LmgiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJyYW5kZW4iLAorICAg
IHNyY3MgPSBbCisgICAgICAgICJyYW5kZW4uY2MiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAg
ICAgICAgInJhbmRlbi5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICI6cGxhdGZvcm0iLAorICAgICAgICAiOnJhbmRlbl9od2FlcyIsCisgICAgICAgICI6
cmFuZGVuX3Nsb3ciLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgIF0sCispCisKK2NjX2xp
YnJhcnkoCisgICAgbmFtZSA9ICJyYW5kZW5fc2xvdyIsCisgICAgc3JjcyA9IFsicmFuZGVuX3Ns
b3cuY2MiXSwKKyAgICBoZHJzID0gWyJyYW5kZW5fc2xvdy5oIl0sCisgICAgY29wdHMgPSBBQlNM
X0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpwbGF0Zm9ybSIsCisgICAgXSwKKykKKworYWJzbF9yYW5k
b21fcmFuZGVuX2NvcHRzX2luaXQoKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAicmFuZGVu
X2h3YWVzIiwKKyAgICBzcmNzID0gWworICAgICAgICAicmFuZGVuX2RldGVjdC5jYyIsCisgICAg
XSwKKyAgICBoZHJzID0gWworICAgICAgICAicmFuZGVuX2RldGVjdC5oIiwKKyAgICAgICAgInJh
bmRlbl9od2Flcy5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAor
ICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAg
ICAgICI6cGxhdGZvcm0iLAorICAgICAgICAiOnJhbmRlbl9od2Flc19pbXBsIiwKKyAgICBdLAor
KQorCisjIGJ1aWxkIHdpdGggLS1zYXZlX3RlbXBzIHRvIHNlZSBhc3NlbWJseSBsYW5ndWFnZSBv
dXRwdXQuCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAicmFuZGVuX2h3YWVzX2ltcGwiLAorICAg
IHNyY3MgPSBbCisgICAgICAgICJyYW5kZW5faHdhZXMuY2MiLAorICAgICAgICAicmFuZGVuX2h3
YWVzLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMgKyBBQlNMX1JB
TkRPTV9SQU5ERU5fQ09QVFMgKyBzZWxlY3QoeworICAgICAgICAiLy9hYnNsOndpbmRvd3MiOiBb
XSwKKyAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItV25vLXBhc3MtZmFpbGVkIl0s
CisgICAgfSksCisgICAgIyBjb3B0cyBpbiBSQU5ERU5fSFdBRVNfQ09QVFMgY2FuIG1ha2UgdGhp
cyB0YXJnZXQgdW51c2FibGUgYXMgYSBtb2R1bGUKKyAgICAjIGxlYWRpbmcgdG8gYSBDbGFuZyBk
aWFnbm9zdGljLiBGdXJ0aGVybW9yZSwgaXQgb25seSBoYXMgYSBwcml2YXRlIGhlYWRlcgorICAg
ICMgYW55d2F5IGFuZCB0aHVzIHRoZXJlIHdvdWxkbid0IGJlIGFueSBnYWluIGZyb20gdXNpbmcg
aXQgYXMgYSBtb2R1bGUuCisgICAgZmVhdHVyZXMgPSBbIi1oZWFkZXJfbW9kdWxlcyJdLAorICAg
IGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbIjpwbGF0Zm9y
bSJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnYXVzc2lhbl9kaXN0cmlidXRpb25f
Z2VudGFibGVzIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZ2F1c3NpYW5fZGlzdHJpYnV0aW9u
X2dlbnRhYmxlcy5jYyIsCisgICAgXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
KyAgICAgICAgIi8vYWJzbC9yYW5kb206ZGlzdHJpYnV0aW9ucyIsCisgICAgXSwKKykKKworY2Nf
bGlicmFyeSgKKyAgICBuYW1lID0gImRpc3RyaWJ1dGlvbl90ZXN0X3V0aWwiLAorICAgIHRlc3Rv
bmx5ID0gMSwKKyAgICBzcmNzID0gWworICAgICAgICAiY2hpX3NxdWFyZS5jYyIsCisgICAgICAg
ICJkaXN0cmlidXRpb25fdGVzdF91dGlsLmNjIiwKKyAgICBdLAorICAgIGhkcnMgPSBbCisgICAg
ICAgICJjaGlfc3F1YXJlLmgiLAorICAgICAgICAiZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5oIiwK
KyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICIvL2Fic2wvYmFz
ZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNs
L3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisgICAgICAg
ICIvL2Fic2wvdHlwZXM6c3BhbiIsCisgICAgXSwKKykKKworIyBDb21tb24gdGFncyBmb3IgdGVz
dHMsIGV0Yy4KK0FCU0xfUkFORE9NX05PTlBPUlRBQkxFX1RBR1MgPSBbCisgICAgIm5vX3Rlc3Rf
YW5kcm9pZF9hcm0iLAorICAgICJub190ZXN0X2FuZHJvaWRfYXJtNjQiLAorICAgICJub190ZXN0
X2FuZHJvaWRfeDg2IiwKKyAgICAibm9fdGVzdF9kYXJ3aW5feDg2XzY0IiwKKyAgICAibm9fdGVz
dF9pb3NfeDg2XzY0IiwKKyAgICAibm9fdGVzdF9sb29uaXgiLAorICAgICJub190ZXN0X21zdmNf
eDY0IiwKKyAgICAibm9fdGVzdF93YXNtIiwKK10KKworY2NfdGVzdCgKKyAgICBuYW1lID0gInRy
YWl0c190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJ0cmFpdHNfdGVz
dC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6dHJhaXRzIiwKKyAg
ICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQor
CitjY190ZXN0KAorICAgIG5hbWUgPSAiZGlzdHJpYnV0aW9uX2ltcGxfdGVzdCIsCisgICAgc2l6
ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZGlzdHJpYnV0aW9uX2ltcGxfdGVzdC5jYyJdLAor
ICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9uX2ltcGwiLAor
ICAgICAgICAiLy9hYnNsL2Jhc2U6Yml0cyIsCisgICAgICAgICIvL2Fic2wvZmxhZ3M6ZmxhZyIs
CisgICAgICAgICIvL2Fic2wvbnVtZXJpYzppbnQxMjgiLAorICAgICAgICAiQGNvbV9nb29nbGVf
Z29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFt
ZSA9ICJkaXN0cmlidXRpb25fdGVzdF91dGlsX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImRpc3RyaWJ1dGlvbl90ZXN0X3V0aWxfdGVzdC5jYyJdLAorICAgIGNvcHRz
ID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAg
ICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKwor
Y2NfdGVzdCgKKyAgICBuYW1lID0gImZhc3RtYXRoX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwi
LAorICAgIHNyY3MgPSBbImZhc3RtYXRoX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVT
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBz
ID0gWworICAgICAgICAiOmZhc3RtYXRoIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRl
c3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZXhw
bGljaXRfc2VlZF9zZXFfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsi
ZXhwbGljaXRfc2VlZF9zZXFfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICI6ZXhwbGljaXRfc2VlZF9zZXEiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbTpzZWVk
X3NlcXVlbmNlcyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFp
biIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInNhbHRlZF9zZWVkX3NlcV90
ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJzYWx0ZWRfc2VlZF9zZXFf
dGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6c2FsdGVkX3Nl
ZWRfc2VxIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwK
KyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiY2hpX3NxdWFyZV90ZXN0IiwKKyAg
ICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiY2hpX3NxdWFyZV90ZXN0
LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJp
YnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCisp
CisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJmYXN0X3VuaWZvcm1fYml0c190ZXN0IiwKKyAgICBz
aXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZmFzdF91bmlmb3JtX2JpdHNf
dGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmZh
c3RfdW5pZm9ybV9iaXRzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVz
dF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAibm9uc2VjdXJlX2Jh
c2VfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgIm5v
bnNlY3VyZV9iYXNlX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsK
KyAgICAgICAgIjpub25zZWN1cmVfYmFzZSIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tIiwKKyAg
ICAgICAgIi8vYWJzbC9yYW5kb206ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICIvL2Fic2wvcmFu
ZG9tOnNlZWRfc2VxdWVuY2VzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAg
IkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190
ZXN0KAorICAgIG5hbWUgPSAic2VlZF9tYXRlcmlhbF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gWyJzZWVkX21hdGVyaWFsX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFC
U0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAg
ICBkZXBzID0gWworICAgICAgICAiOnNlZWRfbWF0ZXJpYWwiLAorICAgICAgICAiQGNvbV9nb29n
bGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAg
bmFtZSA9ICJwb29sX3VyYmdfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9
IFsKKyAgICAgICAgInBvb2xfdXJiZ190ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJT
TF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAg
IGRlcHMgPSBbCisgICAgICAgICI6cG9vbF91cmJnIiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5
cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpzcGFuIiwKKyAgICAgICAgIkBjb21f
Z29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAor
ICAgIG5hbWUgPSAicGNnX2VuZ2luZV90ZXN0IiwKKyAgICBzaXplID0gIm1lZGl1bSIsICAjIFRy
eWluZyB0byBtZWFzdXJlIGFjY3VyYWN5LgorICAgIHNyY3MgPSBbInBjZ19lbmdpbmVfdGVzdC5j
YyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGZsYWt5ID0gMSwKKyAgICBs
aW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAi
OmV4cGxpY2l0X3NlZWRfc2VxIiwKKyAgICAgICAgIjpwY2dfZW5naW5lIiwKKyAgICAgICAgIi8v
YWJzbC90aW1lIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWlu
IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAicmFuZGVuX2VuZ2luZV90ZXN0
IiwKKyAgICBzaXplID0gIm1lZGl1bSIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgInJhbmRlbl9l
bmdpbmVfdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAg
ICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAg
ICAiOmV4cGxpY2l0X3NlZWRfc2VxIiwKKyAgICAgICAgIjpyYW5kZW5fZW5naW5lIiwKKyAgICAg
ICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8v
YWJzbC90aW1lIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWlu
IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAicmFuZGVuX3Rlc3QiLAorICAg
IHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbInJhbmRlbl90ZXN0LmNjIl0sCisgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpyYW5kZW4iLAorICAgICAgICAiLy9hYnNsL21l
dGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0
X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJyYW5kZW5fc2xvd190
ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJyYW5kZW5fc2xvd190ZXN0
LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpyYW5kZW5fc2xvdyIs
CisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwK
KykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInJhbmRlbl9od2Flc190ZXN0IiwKKyAgICBzaXpl
ID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJyYW5kZW5faHdhZXNfdGVzdC5jYyJdLAorICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAorICAgIHRhZ3MgPSBBQlNMX1JBTkRPTV9OT05QT1JUQUJMRV9UQUdTLAorICAgIGRlcHMg
PSBbCisgICAgICAgICI6cGxhdGZvcm0iLAorICAgICAgICAiOnJhbmRlbl9od2FlcyIsCisgICAg
ICAgICI6cmFuZGVuX2h3YWVzX2ltcGwiLCAgIyBidWlsZF9jbGVhbmVyOiBrZWVwCisgICAgICAg
ICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvc3RyaW5nczpzdHJfZm9ybWF0IiwKKyAg
ICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAgXSwKKykKKworY2Nf
bGlicmFyeSgKKyAgICBuYW1lID0gIm5hbm9iZW5jaG1hcmsiLAorICAgIHNyY3MgPSBbIm5hbm9i
ZW5jaG1hcmsuY2MiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAg
ICB0ZXh0dWFsX2hkcnMgPSBbIm5hbm9iZW5jaG1hcmsuaCJdLAorICAgIGRlcHMgPSBbCisgICAg
ICAgICI6cGxhdGZvcm0iLAorICAgICAgICAiOnJhbmRlbl9lbmdpbmUiLAorICAgICAgICAiLy9h
YnNsL2Jhc2UiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ1bmlmb3Jt
X2hlbHBlciIsCisgICAgaGRycyA9IFsidW5pZm9ybV9oZWxwZXIuaCJdLAorICAgIGNvcHRzID0g
QUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9uX2ltcGwiLAorICAgICAgICAi
OmZhc3RfdW5pZm9ybV9iaXRzIiwKKyAgICAgICAgIjppb3N0cmVhbV9zdGF0ZV9zYXZlciIsCisg
ICAgICAgICI6dHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisg
ICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgXSwKKykKKworY2NfdGVzdCgK
KyAgICBuYW1lID0gIm5hbm9iZW5jaG1hcmtfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisg
ICAgc3JjcyA9IFsibmFub2JlbmNobWFya190ZXN0LmNjIl0sCisgICAgZmxha3kgPSAxLAorICAg
IGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHRhZ3MgPSBbCisgICAgICAg
ICJiZW5jaG1hcmsiLAorICAgICAgICAibm9fdGVzdF9pb3NfeDg2XzY0IiwKKyAgICAgICAgIm5v
X3Rlc3RfbG9vbml4IiwgICMgQ3Jhc2hpbmcuCisgICAgXSwKKyAgICBkZXBzID0gWworICAgICAg
ICAiOm5hbm9iZW5jaG1hcmsiLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9h
YnNsL3N0cmluZ3MiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJyYW5kZW5f
YmVuY2htYXJrcyIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbInJhbmRlbl9i
ZW5jaG1hcmtzLmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX1JBTkRP
TV9SQU5ERU5fQ09QVFMsCisgICAgZmxha3kgPSAxLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAorICAgIHRhZ3MgPSBBQlNMX1JBTkRPTV9OT05QT1JUQUJMRV9UQUdTICsg
WyJiZW5jaG1hcmsiXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOm5hbm9iZW5jaG1hcmsiLAor
ICAgICAgICAiOnBsYXRmb3JtIiwKKyAgICAgICAgIjpyYW5kZW4iLAorICAgICAgICAiOnJhbmRl
bl9lbmdpbmUiLAorICAgICAgICAiOnJhbmRlbl9od2FlcyIsCisgICAgICAgICI6cmFuZGVuX2h3
YWVzX2ltcGwiLAorICAgICAgICAiOnJhbmRlbl9zbG93IiwKKyAgICAgICAgIi8vYWJzbC9iYXNl
IiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAg
IG5hbWUgPSAiaW9zdHJlYW1fc3RhdGVfc2F2ZXJfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIs
CisgICAgc3JjcyA9IFsiaW9zdHJlYW1fc3RhdGVfc2F2ZXJfdGVzdC5jYyJdLAorICAgIGxpbmtv
cHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aW9z
dHJlYW1fc3RhdGVfc2F2ZXIiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0
ZXN0X21haW4iLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwv
QlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvQlVJTEQuZ24KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA0
ODBmNDMzOGQ3ODlmODhkYzhiMDAzZDRkNGVkMmQ4ZmIxNzFlYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9CVUlMRC5nbgpAQCAtMCwwICsxLDQ1OSBAQAorIyBDb3B5
cmlnaHQgMjAxOCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitpbXBvcnQoIi8v
YnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCisKKyMgVXNhZ2Ugb2YgQWJzZWlsIGluIENocm9t
aXVtIGlzIGd1YXJkZWQgYnkgYW4gZXhwbGljaXQgb3B0LWluIGxpc3QsIGJlZm9yZQorIyBhZGRp
bmcgcHJvamVjdHMgdG8gdGhpcyBsaXN0IHBsZWFzZSByZWFjaCBvdXQgdG8gY3h4QGNocm9taXVt
Lm9yZyBhbmQgQ0M6CisjIC0gaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvT1dORVJTCisjCisjIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJl
IGZvdW5kIGF0OgorIyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFEZ1MxLUEz
cnpib1RManBmNG0xc3FrSmdXam5ZX1J1MmRva2sxWDF2QkRVCitpZiAoYnVpbGRfd2l0aF9jaHJv
bWl1bSkgeworICB2aXNpYmlsaXR5ID0gWworICAgICIvL2xpYmFzc2lzdGFudC8qIiwKKyAgICAi
Ly90aGlyZF9wYXJ0eS93ZWJydGMvKiIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8q
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKKyAgICAiLy90aGlyZF9w
YXJ0eS9vcGVuc2NyZWVuLyoiLAorICBdCit9IGVsc2UgeworICB2aXNpYmlsaXR5ID0gWyAiKiIg
XQorfQorCitzb3VyY2Vfc2V0KCJ0cmFpdHMiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9j
b25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29u
ZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBd
CisgIHB1YmxpYyA9IFsKKyAgICAidHJhaXRzLmgiLAorICBdCisgIHZpc2liaWxpdHkgPSBbXQor
ICB2aXNpYmlsaXR5ICs9IFsgIi4uLy4uL3JhbmRvbS8qIiBdCisgIGRlcHMgPSBbCisgICAgIi4u
Ly4uL2Jhc2U6Y29uZmlnIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJkaXN0cmlidXRpb25fY2Fs
bGVyIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVt
X2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5v
X2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZh
dWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImRp
c3RyaWJ1dGlvbl9jYWxsZXIuaCIsCisgIF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxp
dHkgKz0gWyAiLi4vLi4vcmFuZG9tLyoiIF0KK30KKworc291cmNlX3NldCgiZGlzdHJpYnV0aW9u
cyIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9j
b2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19j
aHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVs
dF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJkaXN0
cmlidXRpb25zLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpkaXN0cmlidXRpb25fY2FsbGVy
IiwKKyAgICAiOmZhc3RfdW5pZm9ybV9iaXRzIiwKKyAgICAiOmZhc3RtYXRoIiwKKyAgICAiOnRy
YWl0cyIsCisgICAgIjp1bmlmb3JtX2hlbHBlciIsCisgICAgIi4uLy4uL21ldGE6dHlwZV90cmFp
dHMiLAorICAgICIuLi8uLi9zdHJpbmdzIiwKKyAgICAiLi4vLi4vdHlwZXM6c3BhbiIsCisgIF0K
K30KKworc291cmNlX3NldCgiZmFzdF91bmlmb3JtX2JpdHMiKSB7CisgIGNvbmZpZ3MgLT0gWyAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsK
KyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBw
dWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVf
Y29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiZmFzdF91bmlmb3JtX2JpdHMuaCIsCisgIF0K
KyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxpdHkgKz0gWyAiLi4vLi4vcmFuZG9tLyoiIF0K
K30KKworc291cmNlX3NldCgic2VlZF9tYXRlcmlhbCIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1
aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAg
ICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1Ymxp
Y19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25m
aWciIF0KKyAgcHVibGljID0gWworICAgICJzZWVkX21hdGVyaWFsLmgiLAorICBdCisgIHNvdXJj
ZXMgPSBbCisgICAgInNlZWRfbWF0ZXJpYWwuY2MiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpm
YXN0X3VuaWZvcm1fYml0cyIsCisgICAgIi4uLy4uL2Jhc2UiLAorICAgICIuLi8uLi9iYXNlOmNv
cmVfaGVhZGVycyIsCisgICAgIi4uLy4uL3N0cmluZ3MiLAorICAgICIuLi8uLi90eXBlczpvcHRp
b25hbCIsCisgICAgIi4uLy4uL3R5cGVzOnNwYW4iLAorICBdCit9CisKK3NvdXJjZV9zZXQoInBv
b2xfdXJiZyIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv
bWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
ZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAg
ICJwb29sX3VyYmcuaCIsCisgIF0KKyAgc291cmNlcyA9IFsKKyAgICAicG9vbF91cmJnLmNjIiwK
KyAgXQorICBkZXBzID0gWworICAgICI6cmFuZGVuIiwKKyAgICAiOnNlZWRfbWF0ZXJpYWwiLAor
ICAgICI6dHJhaXRzIiwKKyAgICAiLi4vLi4vYmFzZSIsCisgICAgIi4uLy4uL2Jhc2U6Y29uZmln
IiwKKyAgICAiLi4vLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi8uLi9iYXNlOmVuZGlh
biIsCisgICAgIi4uLy4uL3JhbmRvbTpzZWVkX2dlbl9leGNlcHRpb24iLAorICAgICIuLi8uLi90
eXBlczpzcGFuIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJleHBsaWNpdF9zZWVkX3NlcSIpIHsK
KyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGls
ZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9
IFsKKyAgICAiZXhwbGljaXRfc2VlZF9zZXEuaCIsCisgIF0KK30KKworc291cmNlX3NldCgic2Vx
dWVuY2VfdXJiZyIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNf
Y29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmln
IiBdCisgIHB1YmxpYyA9IFsKKyAgICAic2VxdWVuY2VfdXJiZy5oIiwKKyAgXQorfQorCitzb3Vy
Y2Vfc2V0KCJzYWx0ZWRfc2VlZF9zZXEiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmln
cyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisg
IHB1YmxpYyA9IFsKKyAgICAic2FsdGVkX3NlZWRfc2VxLmgiLAorICBdCisgIGRlcHMgPSBbCisg
ICAgIjpzZWVkX21hdGVyaWFsIiwKKyAgICAiLi4vLi4vY29udGFpbmVyOmlubGluZWRfdmVjdG9y
IiwKKyAgICAiLi4vLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4uLy4uL3R5cGVzOm9wdGlv
bmFsIiwKKyAgICAiLi4vLi4vdHlwZXM6c3BhbiIsCisgIF0KK30KKworc291cmNlX3NldCgiaW9z
dHJlYW1fc3RhdGVfc2F2ZXIiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1Ymxp
YyA9IFsKKyAgICAiaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAg
ICAiLi4vLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4uLy4uL251bWVyaWM6aW50MTI4IiwK
KyAgXQorfQorCitzb3VyY2Vfc2V0KCJkaXN0cmlidXRpb25faW1wbCIpIHsKKyAgY29uZmlncyAt
PSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3Mg
Kz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBd
CisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5j
bHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJkaXN0cmlidXRpb25faW1wbC5oIiwK
KyAgXQorICBkZXBzID0gWworICAgICI6ZmFzdG1hdGgiLAorICAgICI6dHJhaXRzIiwKKyAgICAi
Li4vLi4vYmFzZTpiaXRzIiwKKyAgICAiLi4vLi4vYmFzZTpjb25maWciLAorICAgICIuLi8uLi9u
dW1lcmljOmludDEyOCIsCisgIF0KK30KKworc291cmNlX3NldCgiZmFzdG1hdGgiKSB7CisgIGNv
bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBj
b25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2Nj
IiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiZmFzdG1hdGguaCIsCisg
IF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vLi4vYmFzZTpiaXRzIiwKKyAgXQorfQorCitzb3VyY2Vf
c2V0KCJub25zZWN1cmVfYmFzZSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2Nv
bmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0g
WyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVi
bGljID0gWworICAgICJub25zZWN1cmVfYmFzZS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6
cG9vbF91cmJnIiwKKyAgICAiOnNhbHRlZF9zZWVkX3NlcSIsCisgICAgIjpzZWVkX21hdGVyaWFs
IiwKKyAgICAiLi4vLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi8uLi9tZXRhOnR5cGVf
dHJhaXRzIiwKKyAgICAiLi4vLi4vc3RyaW5ncyIsCisgICAgIi4uLy4uL3R5cGVzOm9wdGlvbmFs
IiwKKyAgICAiLi4vLi4vdHlwZXM6c3BhbiIsCisgIF0KK30KKworc291cmNlX3NldCgicGNnX2Vu
Z2luZSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1
bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpu
b19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVm
YXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJw
Y2dfZW5naW5lLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpmYXN0bWF0aCIsCisgICAgIjpp
b3N0cmVhbV9zdGF0ZV9zYXZlciIsCisgICAgIi4uLy4uL2Jhc2U6Y29uZmlnIiwKKyAgICAiLi4v
Li4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4uLy4uL251bWVyaWM6aW50MTI4IiwKKyAgXQor
fQorCitzb3VyY2Vfc2V0KCJyYW5kZW5fZW5naW5lIikgeworICBjb25maWdzIC09IFsgIi8vYnVp
bGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGlj
X2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZp
ZyIgXQorICBwdWJsaWMgPSBbCisgICAgInJhbmRlbl9lbmdpbmUuaCIsCisgIF0KKyAgZGVwcyA9
IFsKKyAgICAiOmlvc3RyZWFtX3N0YXRlX3NhdmVyIiwKKyAgICAiOnJhbmRlbiIsCisgICAgIi4u
Ly4uL21ldGE6dHlwZV90cmFpdHMiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInBsYXRmb3JtIikg
eworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUi
IF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9t
aXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2Nm
bGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgInBsYXRmb3Jt
LmgiLAorICAgICJyYW5kZW4ta2V5cy5pbmMiLAorICAgICJyYW5kZW5fdHJhaXRzLmgiLAorICBd
Cit9CisKK3NvdXJjZV9zZXQoInJhbmRlbiIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2Nv
bmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1
aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25m
aWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0K
KyAgcHVibGljID0gWworICAgICJyYW5kZW4uaCIsCisgIF0KKyAgc291cmNlcyA9IFsKKyAgICAi
cmFuZGVuLmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICI6cGxhdGZvcm0iLAorICAgICI6cmFu
ZGVuX2h3YWVzIiwKKyAgICAiOnJhbmRlbl9zbG93IiwKKyAgICAiLi4vLi4vYmFzZSIsCisgIF0K
K30KKworc291cmNlX3NldCgicmFuZGVuX3Nsb3ciKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNf
Y29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmln
IiBdCisgIHB1YmxpYyA9IFsKKyAgICAicmFuZGVuX3Nsb3cuaCIsCisgIF0KKyAgc291cmNlcyA9
IFsKKyAgICAicmFuZGVuX3Nsb3cuY2MiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpwbGF0Zm9y
bSIsCisgIF0KK30KKworc291cmNlX3NldCgicmFuZGVuX2h3YWVzIikgeworICBjb25maWdzIC09
IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyAr
PSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0K
KyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNs
dWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgInJhbmRlbl9kZXRlY3QuaCIsCisgICAg
InJhbmRlbl9od2Flcy5oIiwKKyAgXQorICBzb3VyY2VzID0gWworICAgICJyYW5kZW5fZGV0ZWN0
LmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICI6cGxhdGZvcm0iLAorICAgICI6cmFuZGVuX2h3
YWVzX2ltcGwiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInJhbmRlbl9od2Flc19pbXBsIikgewor
ICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0K
KyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVt
X2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFn
c19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0gWworICAgICJyYW5kZW5faHdh
ZXMuY2MiLAorICAgICJyYW5kZW5faHdhZXMuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOnBs
YXRmb3JtIiwKKyAgXQorfQorCitleGVjdXRhYmxlKCJnYXVzc2lhbl9kaXN0cmlidXRpb25fZ2Vu
dGFibGVzIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9t
aXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
Om5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9k
ZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0gWworICAg
ICJnYXVzc2lhbl9kaXN0cmlidXRpb25fZ2VudGFibGVzLmNjIiwKKyAgXQorICBkZXBzID0gWwor
ICAgICIuLi8uLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uLy4uL3JhbmRvbTpkaXN0cmli
dXRpb25zIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJkaXN0cmlidXRpb25fdGVzdF91dGlsIikg
eworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21w
aWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGlj
ID0gWworICAgICJjaGlfc3F1YXJlLmgiLAorICAgICJkaXN0cmlidXRpb25fdGVzdF91dGlsLmgi
LAorICBdCisgIHNvdXJjZXMgPSBbCisgICAgImNoaV9zcXVhcmUuY2MiLAorICAgICJkaXN0cmli
dXRpb25fdGVzdF91dGlsLmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi8uLi9iYXNlIiwK
KyAgICAiLi4vLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi8uLi9zdHJpbmdzIiwKKyAg
ICAiLi4vLi4vc3RyaW5nczpzdHJfZm9ybWF0IiwKKyAgICAiLi4vLi4vdHlwZXM6c3BhbiIsCisg
IF0KK30KKworc291cmNlX3NldCgibmFub2JlbmNobWFyayIpIHsKKyAgY29uZmlncyAtPSBbICIv
L2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWwor
ICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1
YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9j
b25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAibmFub2JlbmNobWFyay5jYyIsCisgIF0KKyAg
ZGVwcyA9IFsKKyAgICAiOnBsYXRmb3JtIiwKKyAgICAiOnJhbmRlbl9lbmdpbmUiLAorICAgICIu
Li8uLi9iYXNlIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1bmlmb3JtX2hlbHBlciIpIHsKKyAg
Y29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisg
IGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9j
b2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3Nf
Y2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJ1bmlmb3JtX2hlbHBl
ci5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6ZGlzdHJpYnV0aW9uX2ltcGwiLAorICAgICI6
ZmFzdF91bmlmb3JtX2JpdHMiLAorICAgICI6aW9zdHJlYW1fc3RhdGVfc2F2ZXIiLAorICAgICI6
dHJhaXRzIiwKKyAgICAiLi4vLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi8uLi9tZXRh
OnR5cGVfdHJhaXRzIiwKKyAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFs
L2NoaV9zcXVhcmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMGFjYzk0Nzc4ODM3NDRmNTljNjk0MWRmYTM2MTgyNzFjNzJiNTM2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuY2MKQEAgLTAsMCAr
MSwyMzAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorCisjaW5jbHVkZSA8Y21h
dGg+CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91
dGlsLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgewor
bmFtZXNwYWNlIHsKKworI2lmIGRlZmluZWQoX19FTVNDUklQVEVOX18pCisvLyBXb3JrYXJvdW5k
IF9fRU1TQ1JJUFRFTl9fIGVycm9yOiBsbHZtX2ZtYV9mNjQgbm90IGZvdW5kLgoraW5saW5lIGRv
dWJsZSBmbWEoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgeworICByZXR1cm4gKHggKiB5
KSArIHo7Cit9CisjZW5kaWYKKworLy8gVXNlIEhvcm5lcidzIG1ldGhvZCB0byBldmFsdWF0ZSBh
IHBvbHlub21pYWwuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQgTj4KK2lubGluZSBU
IEV2YWx1YXRlUG9seW5vbWlhbChUIHgsIGNvbnN0IFQgKCZwb2x5KVtOXSkgeworI2lmICFkZWZp
bmVkKF9fRU1TQ1JJUFRFTl9fKQorICB1c2luZyBzdGQ6OmZtYTsKKyNlbmRpZgorICBUIHAgPSBw
b2x5W04gLSAxXTsKKyAgZm9yICh1bnNpZ25lZCBpID0gMjsgaSA8PSBOOyBpKyspIHsKKyAgICBw
ID0gZm1hKHAsIHgsIHBvbHlbTiAtIGldKTsKKyAgfQorICByZXR1cm4gcDsKK30KKworc3RhdGlj
IGNvbnN0ZXhwciBpbnQga0xhcmdlRE9GID0gMTUwOworCisvLyBSZXR1cm5zIHRoZSBwcm9iYWJp
bGl0eSBvZiBhIG5vcm1hbCB6LXZhbHVlLgorLy8KKy8vIEFkYXB0ZWQgZnJvbSB0aGUgUE9aIGZ1
bmN0aW9uIGluOgorLy8gICAgIEliYmV0c29uIEQsIEFsZ29yaXRobSAyMDkKKy8vICAgICBDb2xs
ZWN0ZWQgQWxnb3JpdGhtcyBvZiB0aGUgQ0FDTSAxOTYzIHAuIDYxNgorLy8KK2RvdWJsZSBQT1oo
ZG91YmxlIHopIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga1AxW10gPSB7CisgICAgICAw
Ljc5Nzg4NDU2MDU5MywgIC0wLjUzMTkyMzAwNzMwMCwgMC4zMTkxNTI5MzI2OTQsCisgICAgICAt
MC4xNTE5Njg3NTEzNjQsIDAuMDU5MDU0MDM1NjQyLCAgLTAuMDE5MTk4MjkyMDA0LAorICAgICAg
MC4wMDUxOTg3NzUwMTksICAtMC4wMDEwNzUyMDQwNDcsIDAuMDAwMTI0ODE4OTg3LAorICB9Owor
ICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrUDJbXSA9IHsKKyAgICAgIDAuOTk5OTM2NjU3NTI0
LCAgMC4wMDA1MzUzMTA4NDksICAtMC4wMDIxNDEyNjg3NDEsIDAuMDA1MzUzNTc5MTA4LAorICAg
ICAgLTAuMDA5Mjc5NDUzMzQxLCAwLjAxMTYzMDQ0NzMxOSwgIC0wLjAxMDU1NzYyNTAwNiwgMC4w
MDY1NDk3OTEyMTQsCisgICAgICAtMC4wMDIwMzQyNTQ4NzQsIC0wLjAwMDc5NDYyMDgyMCwgMC4w
MDEzOTA2MDQyODQsICAtMC4wMDA2NzY5MDQ5ODYsCisgICAgICAtMC4wMDAwMTk1MzgxMzIsIDAu
MDAwMTUyNTI5MjkwLCAgLTAuMDAwMDQ1MjU1NjU5LAorICB9OworCisgIGNvbnN0IGRvdWJsZSBr
Wk1heCA9IDYuMDsgIC8vIE1heGltdW0gbWVhbmluZ2Z1bCB6LXZhbHVlLgorICBpZiAoeiA9PSAw
LjApIHsKKyAgICByZXR1cm4gMC41OworICB9CisgIGRvdWJsZSB4OworICBkb3VibGUgeSA9IDAu
NSAqIHN0ZDo6ZmFicyh6KTsKKyAgaWYgKHkgPj0gKGtaTWF4ICogMC41KSkgeworICAgIHggPSAx
LjA7CisgIH0gZWxzZSBpZiAoeSA8IDEuMCkgeworICAgIGRvdWJsZSB3ID0geSAqIHk7CisgICAg
eCA9IEV2YWx1YXRlUG9seW5vbWlhbCh3LCBrUDEpICogeSAqIDIuMDsKKyAgfSBlbHNlIHsKKyAg
ICB5IC09IDIuMDsKKyAgICB4ID0gRXZhbHVhdGVQb2x5bm9taWFsKHksIGtQMik7CisgIH0KKyAg
cmV0dXJuIHogPiAwLjAgPyAoKHggKyAxLjApICogMC41KSA6ICgoMS4wIC0geCkgKiAwLjUpOwor
fQorCisvLyBBcHByb3hpbWF0ZXMgdGhlIHN1cnZpdmFsIGZ1bmN0aW9uIG9mIHRoZSBub3JtYWwg
ZGlzdHJpYnV0aW9uLgorLy8KKy8vIEFsZ29yaXRobSAyNi4yLjE4LCBmcm9tOgorLy8gW0FicmFt
b3dpdHogYW5kIFN0ZWd1biwgSGFuZGJvb2sgb2YgTWF0aGVtYXRpY2FsIEZ1bmN0aW9ucyxwLjkz
Ml0KKy8vIGh0dHA6Ly9wZW9wbGUubWF0aC5zZnUuY2EvfmNibS9hYW5kcy9hYnJhbW93aXR6X2Fu
ZF9zdGVndW4ucGRmCisvLworZG91YmxlIG5vcm1hbF9zdXJ2aXZhbChkb3VibGUgeikgeworICAv
LyBNYXliZSByZXBsYWNlIHdpdGggdGhlIGFsdGVybmF0ZSBmb3JtdWxhdGlvbi4KKyAgLy8gMC41
ICogZXJmYygoeCAtIG1lYW4pLyhzcXJ0KDIpICogc2lnbWEpKQorICBzdGF0aWMgY29uc3RleHBy
IGRvdWJsZSBrUltdID0geworICAgICAgMS4wLCAwLjE5Njg1NCwgMC4xMTUxOTQsIDAuMDAwMzQ0
LCAwLjAxOTUyNywKKyAgfTsKKyAgZG91YmxlIHIgPSBFdmFsdWF0ZVBvbHlub21pYWwoeiwga1Ip
OworICByICo9IHI7CisgIHJldHVybiAwLjUgLyAociAqIHIpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UKKworLy8gQ2FsY3VsYXRlcyB0aGUgY3JpdGljYWwgY2hpLXNxdWFyZSB2YWx1ZSBnaXZlbiBk
ZWdyZWVzLW9mLWZyZWVkb20gYW5kIGEKKy8vIHAtdmFsdWUsIHVzdWFsbHkgdXNpbmcgYmlzZWN0
aW9uLiBBbHNvIGtub3duIGJ5IHRoZSBuYW1lIENSSVRDSEkuCitkb3VibGUgQ2hpU3F1YXJlVmFs
dWUoaW50IGRvZiwgZG91YmxlIHApIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga0NoaUVw
c2lsb24gPQorICAgICAgMC4wMDAwMDE7ICAvLyBBY2N1cmFjeSBvZiB0aGUgYXBwcm94aW1hdGlv
bi4KKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga0NoaU1heCA9CisgICAgICA5OTk5OS4wOyAg
Ly8gTWF4aW11bSBjaGktc3F1YXJlZCB2YWx1ZS4KKworICBjb25zdCBkb3VibGUgcF92YWx1ZSA9
IDEuMCAtIHA7CisgIGlmIChkb2YgPCAxIHx8IHBfdmFsdWUgPiAxLjApIHsKKyAgICByZXR1cm4g
MC4wOworICB9CisKKyAgaWYgKGRvZiA+IGtMYXJnZURPRikgeworICAgIC8vIEZvciBsYXJnZSBk
ZWdyZWVzIG9mIGZyZWVkb20sIHVzZSB0aGUgbm9ybWFsIGFwcHJveGltYXRpb24gYnkKKyAgICAv
LyAgICAgV2lsc29uLCBFLiBCLiBhbmQgSGlsZmVydHksIE0uIE0uICgxOTMxKQorICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgY2hpXjIgLSBtZWFuCisgICAgLy8gICAgICAgICAgICAgICAgWiA9
IC0tLS0tLS0tLS0tLS0tCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICBzdGRkZXYKKyAg
ICBjb25zdCBkb3VibGUgeiA9IEludmVyc2VOb3JtYWxTdXJ2aXZhbChwX3ZhbHVlKTsKKyAgICBj
b25zdCBkb3VibGUgbWVhbiA9IDEgLSAyLjAgLyAoOSAqIGRvZik7CisgICAgY29uc3QgZG91Ymxl
IHZhcmlhbmNlID0gMi4wIC8gKDkgKiBkb2YpOworICAgIC8vIENhbm5vdCB1c2UgdGhpcyBtZXRo
b2QgaWYgdGhlIHZhcmlhbmNlIGlzIDAuCisgICAgaWYgKHZhcmlhbmNlICE9IDApIHsKKyAgICAg
IHJldHVybiBzdGQ6OnBvdyh6ICogc3RkOjpzcXJ0KHZhcmlhbmNlKSArIG1lYW4sIDMuMCkgKiBk
b2Y7CisgICAgfQorICB9CisKKyAgaWYgKHBfdmFsdWUgPD0gMC4wKSByZXR1cm4ga0NoaU1heDsK
KworICAvLyBPdGhlcndpc2Ugc2VhcmNoIGZvciB0aGUgcCB2YWx1ZSBieSBiaXNlY3Rpb24KKyAg
ZG91YmxlIG1pbl9jaGlzcSA9IDAuMDsKKyAgZG91YmxlIG1heF9jaGlzcSA9IGtDaGlNYXg7Cisg
IGRvdWJsZSBjdXJyZW50ID0gZG9mIC8gc3RkOjpzcXJ0KHBfdmFsdWUpOworICB3aGlsZSAoKG1h
eF9jaGlzcSAtIG1pbl9jaGlzcSkgPiBrQ2hpRXBzaWxvbikgeworICAgIGlmIChDaGlTcXVhcmVQ
VmFsdWUoY3VycmVudCwgZG9mKSA8IHBfdmFsdWUpIHsKKyAgICAgIG1heF9jaGlzcSA9IGN1cnJl
bnQ7CisgICAgfSBlbHNlIHsKKyAgICAgIG1pbl9jaGlzcSA9IGN1cnJlbnQ7CisgICAgfQorICAg
IGN1cnJlbnQgPSAobWF4X2NoaXNxICsgbWluX2NoaXNxKSAqIDAuNTsKKyAgfQorICByZXR1cm4g
Y3VycmVudDsKK30KKworLy8gQ2FsY3VsYXRlcyB0aGUgcC12YWx1ZSAocHJvYmFiaWxpdHkpIG9m
IGEgZ2l2ZW4gY2hpLXNxdWFyZSB2YWx1ZQorLy8gYW5kIGRlZ3JlZXMgb2YgZnJlZWRvbS4KKy8v
CisvLyBBZGFwdGVkIGZyb20gdGhlIFBPQ0hJU1EgZnVuY3Rpb24gZnJvbToKKy8vICAgICBIaWxs
LCBJLiBELiBhbmQgUGlrZSwgTS4gQy4gIEFsZ29yaXRobSAyOTkKKy8vICAgICBDb2xsZWN0ZWQg
QWxnb3JpdGhtcyBvZiB0aGUgQ0FDTSAxOTYzIHAuIDI0MworLy8KK2RvdWJsZSBDaGlTcXVhcmVQ
VmFsdWUoZG91YmxlIGNoaV9zcXVhcmUsIGludCBkb2YpIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBk
b3VibGUga0xvZ1NxcnRQaSA9CisgICAgICAwLjU3MjM2NDk0MjkyNDcwMDA4NzA3MTcxMzU7ICAv
LyBMb2dbU3FydFtQaV1dCisgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGtJbnZlcnNlU3FydFBp
ID0KKyAgICAgIDAuNTY0MTg5NTgzNTQ3NzU2Mjg2OTQ4MDc5NTsgIC8vIDEvKFNxcnRbUGldKQor
CisgIC8vIEZvciBsYXJnZSBkZWdyZWVzIG9mIGZyZWVkb20sIHVzZSB0aGUgbm9ybWFsIGFwcHJv
eGltYXRpb24gYnkKKyAgLy8gICAgIFdpbHNvbiwgRS4gQi4gYW5kIEhpbGZlcnR5LCBNLiBNLiAo
MTkzMSkKKyAgLy8gVmlhIFdpa2lwZWRpYToKKyAgLy8gICBCeSB0aGUgQ2VudHJhbCBMaW1pdCBU
aGVvcmVtLCBiZWNhdXNlIHRoZSBjaGktc3F1YXJlIGRpc3RyaWJ1dGlvbiBpcyB0aGUKKyAgLy8g
ICBzdW0gb2YgayBpbmRlcGVuZGVudCByYW5kb20gdmFyaWFibGVzIHdpdGggZmluaXRlIG1lYW4g
YW5kIHZhcmlhbmNlLCBpdAorICAvLyAgIGNvbnZlcmdlcyB0byBhIG5vcm1hbCBkaXN0cmlidXRp
b24gZm9yIGxhcmdlIGsuCisgIGlmIChkb2YgPiBrTGFyZ2VET0YpIHsKKyAgICAvLyBSZS1zY2Fs
ZSBldmVyeXRoaW5nLgorICAgIGNvbnN0IGRvdWJsZSBjaGlfc3F1YXJlX3NjYWxlZCA9IHN0ZDo6
cG93KGNoaV9zcXVhcmUgLyBkb2YsIDEuMCAvIDMpOworICAgIGNvbnN0IGRvdWJsZSBtZWFuID0g
MSAtIDIuMCAvICg5ICogZG9mKTsKKyAgICBjb25zdCBkb3VibGUgdmFyaWFuY2UgPSAyLjAgLyAo
OSAqIGRvZik7CisgICAgLy8gSWYgdmFyaWFuY2UgaXMgMCwgdGhpcyBtZXRob2QgY2Fubm90IGJl
IHVzZWQuCisgICAgaWYgKHZhcmlhbmNlICE9IDApIHsKKyAgICAgIGNvbnN0IGRvdWJsZSB6ID0g
KGNoaV9zcXVhcmVfc2NhbGVkIC0gbWVhbikgLyBzdGQ6OnNxcnQodmFyaWFuY2UpOworICAgICAg
aWYgKHogPiAwKSB7CisgICAgICAgIHJldHVybiBub3JtYWxfc3Vydml2YWwoeik7CisgICAgICB9
IGVsc2UgaWYgKHogPCAwKSB7CisgICAgICAgIHJldHVybiAxLjAgLSBub3JtYWxfc3Vydml2YWwo
LXopOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDAuNTsKKyAgICAgIH0KKyAgICB9
CisgIH0KKworICAvLyBUaGUgY2hpIHNxdWFyZSBmdW5jdGlvbiBpcyA+PSAwIGZvciBhbnkgZGVn
cmVlcyBvZiBmcmVlZG9tLgorICAvLyBJbiBvdGhlciB3b3JkcywgcHJvYmFiaWxpdHkgdGhhdCB0
aGUgY2hpIHNxdWFyZSBmdW5jdGlvbiA+PSAwIGlzIDEuCisgIGlmIChjaGlfc3F1YXJlIDw9IDAu
MCkgcmV0dXJuIDEuMDsKKworICAvLyBJZiB0aGUgZGVncmVlcyBvZiBmcmVlZG9tIGlzIHplcm8s
IHRoZSBjaGkgc3F1YXJlIGZ1bmN0aW9uIGlzIGFsd2F5cyAwIGJ5CisgIC8vIGRlZmluaXRpb24u
IEluIG90aGVyIHdvcmRzLCB0aGUgcHJvYmFiaWxpdHkgdGhhdCB0aGUgY2hpIHNxdWFyZSBmdW5j
dGlvbgorICAvLyBpcyA+IDAgaXMgemVybyAoY2hpIHNxdWFyZSB2YWx1ZXMgPD0gMCBoYXZlIGJl
ZW4gZmlsdGVyZWQgYWJvdmUpLgorICBpZiAoZG9mIDwgMSkgcmV0dXJuIDA7CisKKyAgYXV0byBj
YXBwZWRfZXhwID0gW10oZG91YmxlIHgpIHsgcmV0dXJuIHggPCAtMjAgPyAwLjAgOiBzdGQ6OmV4
cCh4KTsgfTsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga0JpZ1ggPSAyMDsKKworICBkb3Vi
bGUgYSA9IDAuNSAqIGNoaV9zcXVhcmU7CisgIGNvbnN0IGJvb2wgZXZlbiA9ICEoZG9mICYgMSk7
ICAvLyBUcnVlIGlmIGRvZiBpcyBhbiBldmVuIG51bWJlci4KKyAgY29uc3QgZG91YmxlIHkgPSBj
YXBwZWRfZXhwKC1hKTsKKyAgZG91YmxlIHMgPSBldmVuID8geSA6ICgyLjAgKiBQT1ooLXN0ZDo6
c3FydChjaGlfc3F1YXJlKSkpOworCisgIGlmIChkb2YgPD0gMikgeworICAgIHJldHVybiBzOwor
ICB9CisKKyAgY2hpX3NxdWFyZSA9IDAuNSAqIChkb2YgLSAxLjApOworICBkb3VibGUgeiA9IChl
dmVuID8gMS4wIDogMC41KTsKKyAgaWYgKGEgPiBrQmlnWCkgeworICAgIGRvdWJsZSBlID0gKGV2
ZW4gPyAwLjAgOiBrTG9nU3FydFBpKTsKKyAgICBkb3VibGUgYyA9IHN0ZDo6bG9nKGEpOworICAg
IHdoaWxlICh6IDw9IGNoaV9zcXVhcmUpIHsKKyAgICAgIGUgPSBzdGQ6OmxvZyh6KSArIGU7Cisg
ICAgICBzICs9IGNhcHBlZF9leHAoYyAqIHogLSBhIC0gZSk7CisgICAgICB6ICs9IDEuMDsKKyAg
ICB9CisgICAgcmV0dXJuIHM7CisgIH0KKworICBkb3VibGUgZSA9IChldmVuID8gMS4wIDogKGtJ
bnZlcnNlU3FydFBpIC8gc3RkOjpzcXJ0KGEpKSk7CisgIGRvdWJsZSBjID0gMC4wOworICB3aGls
ZSAoeiA8PSBjaGlfc3F1YXJlKSB7CisgICAgZSA9IGUgKiAoYSAvIHopOworICAgIGMgPSBjICsg
ZTsKKyAgICB6ICs9IDEuMDsKKyAgfQorICByZXR1cm4gYyAqIHkgKyBzOworfQorCit9ICAvLyBu
YW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRl
cm5hbC9jaGlfc3F1YXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE4NjQ2ZjI3NGNkMzc0MTAwYWZkMGJlNjUy
NmNlYWVlOWFjNTNhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9j
aGlfc3F1YXJlLmgKQEAgLTAsMCArMSw4NSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfQ0hJX1NRVUFSRV9I
XworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9DSElfU1FVQVJFX0hfCisKKy8vIFRoZSBj
aGktc3F1YXJlIHN0YXRpc3RpYy4KKy8vCisvLyBVc2VmdWwgZm9yIGV2YWx1YXRpbmcgaWYgYERg
IGluZGVwZW5kZW50IHJhbmRvbSB2YXJpYWJsZXMgYXJlIGJlaGF2aW5nIGFzCisvLyBleHBlY3Rl
ZCwgb3IgaWYgdHdvIGRpc3RyaWJ1dGlvbnMgYXJlIHNpbWlsYXIuICAoYERgIGlzIHRoZSBkZWdy
ZWVzIG9mCisvLyBmcmVlZG9tKS4KKy8vCisvLyBFYWNoIGJ1Y2tldCBzaG91bGQgaGF2ZSBhbiBl
eHBlY3RlZCBjb3VudCBvZiAxMCBvciBtb3JlIGZvciB0aGUgY2hpIHNxdWFyZSB0bworLy8gYmUg
bWVhbmluZ2Z1bC4KKworI2luY2x1ZGUgPGNhc3NlcnQ+CisKK25hbWVzcGFjZSBhYnNsIHsKK25h
bWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCitjb25zdGV4cHIgY29uc3QgY2hhciBrQ2hpU3F1
YXJlZFtdID0gImNoaS1zcXVhcmVkIjsKKworLy8gUmV0dXJucyB0aGUgbWVhc3VyZWQgY2hpIHNx
dWFyZSB2YWx1ZSwgdXNpbmcgYSBzaW5nbGUgZXhwZWN0ZWQgdmFsdWUuICBUaGlzCisvLyBhc3N1
bWVzIHRoYXQgdGhlIHZhbHVlcyBpbiBbYmVnaW4sIGVuZCkgYXJlIHVuaWZvcm1seSBkaXN0cmli
dXRlZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KK2RvdWJsZSBDaGlTcXVhcmVXaXRo
RXhwZWN0ZWQoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCwgZG91YmxlIGV4cGVjdGVkKSB7
CisgIC8vIENvbXB1dGUgdGhlIHN1bSBhbmQgdGhlIG51bWJlciBvZiBidWNrZXRzLgorICBhc3Nl
cnQoZXhwZWN0ZWQgPj0gMTApOyAgLy8gcmVxdWlyZSBhdCBsZWFzdCAxMCBzYW1wbGVzIHBlciBi
dWNrZXQuCisgIGRvdWJsZSBjaGlfc3F1YXJlID0gMDsKKyAgZm9yIChhdXRvIGl0ID0gYmVnaW47
IGl0ICE9IGVuZDsgaXQrKykgeworICAgIGRvdWJsZSBkID0gc3RhdGljX2Nhc3Q8ZG91YmxlPigq
aXQpIC0gZXhwZWN0ZWQ7CisgICAgY2hpX3NxdWFyZSArPSBkICogZDsKKyAgfQorICBjaGlfc3F1
YXJlID0gY2hpX3NxdWFyZSAvIGV4cGVjdGVkOworICByZXR1cm4gY2hpX3NxdWFyZTsKK30KKwor
Ly8gUmV0dXJucyB0aGUgbWVhc3VyZWQgY2hpIHNxdWFyZSB2YWx1ZSwgdGFraW5nIHRoZSBhY3R1
YWwgdmFsdWUgb2YgZWFjaCBidWNrZXQKKy8vIGZyb20gdGhlIGZpcnN0IHNldCBvZiBpdGVyYXRv
cnMsIGFuZCB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgZWFjaCBidWNrZXQgZnJvbQorLy8gdGhlIHNl
Y29uZCBzZXQgb2YgaXRlcmF0b3JzLgordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBl
bmFtZSBFeHBlY3RlZD4KK2RvdWJsZSBDaGlTcXVhcmUoSXRlcmF0b3IgaXQsIEl0ZXJhdG9yIGVu
ZCwgRXhwZWN0ZWQgZWl0LCBFeHBlY3RlZCBlZW5kKSB7CisgIGRvdWJsZSBjaGlfc3F1YXJlID0g
MDsKKyAgZm9yICg7IGl0ICE9IGVuZCAmJiBlaXQgIT0gZWVuZDsgKytpdCwgKytlaXQpIHsKKyAg
ICBpZiAoKml0ID4gMCkgeworICAgICAgYXNzZXJ0KCplaXQgPiAwKTsKKyAgICB9CisgICAgZG91
YmxlIGUgPSBzdGF0aWNfY2FzdDxkb3VibGU+KCplaXQpOworICAgIGRvdWJsZSBkID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPigqaXQgLSAqZWl0KTsKKyAgICBpZiAoZCAhPSAwKSB7CisgICAgICBhc3Nl
cnQoZSA+IDApOworICAgICAgY2hpX3NxdWFyZSArPSAoZCAqIGQpIC8gZTsKKyAgICB9CisgIH0K
KyAgYXNzZXJ0KGl0ID09IGVuZCAmJiBlaXQgPT0gZWVuZCk7CisgIHJldHVybiBjaGlfc3F1YXJl
OworfQorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJl
IHVzZWQgZm9yIGFuIGFyYml0cmFyeSBzaWduaWZpY2FuY2UgbGV2ZWwuCisvLworCisvLyBDYWxj
dWxhdGVzIGNyaXRpY2FsIGNoaS1zcXVhcmUgdmFsdWVzIHRvIHByb2R1Y2UgdGhlIGdpdmVuIHAt
dmFsdWUgdXNpbmcgYQorLy8gYmlzZWN0aW9uIHNlYXJjaCBmb3IgYSB2YWx1ZSB3aXRoaW4gZXBz
aWxvbiwgcmVseWluZyBvbiB0aGUgbW9ub3RvbmljaXR5IG9mCisvLyBDaGlTcXVhcmVQVmFsdWUo
KS4KK2RvdWJsZSBDaGlTcXVhcmVWYWx1ZShpbnQgZG9mLCBkb3VibGUgcCk7CisKKy8vIENhbGN1
bGF0ZXMgdGhlIHAtdmFsdWUgKHByb2JhYmlsaXR5KSBvZiBhIGdpdmVuIGNoaS1zcXVhcmUgdmFs
dWUuCitkb3VibGUgQ2hpU3F1YXJlUFZhbHVlKGRvdWJsZSBjaGlfc3F1YXJlLCBpbnQgZG9mKTsK
KworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
KworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9DSElfU1FVQVJFX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZV90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL2NoaV9zcXVhcmVfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDI1ZGVmYWMxMmNl
MDZiYjdiOTdkMGE1YmEwYTNmY2YyODUxYWQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL2NoaV9zcXVhcmVfdGVzdC5jYwpAQCAtMCwwICsxLDM2NSBAQAorLy8gQ29w
eXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9jaGlfc3F1YXJlLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2lu
Y2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisKK3VzaW5nIGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6Q2hpU3F1YXJlOwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlT
cXVhcmVQVmFsdWU7Cit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVZhbHVl
OwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVXaXRoRXhwZWN0ZWQ7CisK
K25hbWVzcGFjZSB7CisKK1RFU1QoQ2hpU3F1YXJlLCBWYWx1ZSkgeworICBzdHJ1Y3QgeworICAg
IGludCBsaW5lOworICAgIGRvdWJsZSBjaGlfc3F1YXJlOworICAgIGludCBkZjsKKyAgICBkb3Vi
bGUgY29uZmlkZW5jZTsKKyAgfSBjb25zdCBzcGVjc1tdID0geworICAgICAgLy8gVGVzdGluZyBs
b29rdXAgYXQgMSUgY29uZmlkZW5jZQorICAgICAge19fTElORV9fLCAwLCAwLCAwLjAxfSwKKyAg
ICAgIHtfX0xJTkVfXywgMC4wMDAxNiwgMSwgMC4wMX0sCisgICAgICB7X19MSU5FX18sIDEuNjQ2
NTAsIDgsIDAuMDF9LAorICAgICAge19fTElORV9fLCA1LjgxMjIxLCAxNiwgMC4wMX0sCisgICAg
ICB7X19MSU5FX18sIDE1Ni40MzE5LCAyMDAsIDAuMDF9LAorICAgICAge19fTElORV9fLCAxMTIx
LjM3ODQsIDEyMzQsIDAuMDF9LAorICAgICAge19fTElORV9fLCA1MzU1Ny4xNjI5LCA1NDMyMSwg
MC4wMX0sCisgICAgICB7X19MSU5FX18sIDY1MTY2Mi42NjQ3LCA2NTQzMjEsIDAuMDF9LAorCisg
ICAgICAvLyBUZXN0aW5nIGxvb2t1cCBhdCA5OSUgY29uZmlkZW5jZQorICAgICAge19fTElORV9f
LCAwLCAwLCAwLjk5fSwKKyAgICAgIHtfX0xJTkVfXywgNi42MzUsIDEsIDAuOTl9LAorICAgICAg
e19fTElORV9fLCAyMC4wOTAsIDgsIDAuOTl9LAorICAgICAge19fTElORV9fLCAzMi4wMDAsIDE2
LCAwLjk5fSwKKyAgICAgIHtfX0xJTkVfXywgMjQ5LjQ0NTYsIDIwMCwgMC45OX0sCisgICAgICB7
X19MSU5FX18sIDExMzEuMTU3MywgMTAyMywgMC45OX0sCisgICAgICB7X19MSU5FX18sIDEzNTIu
NTAzOCwgMTIzNCwgMC45OX0sCisgICAgICB7X19MSU5FX18sIDU1MDkwLjczNTYsIDU0MzIxLCAw
Ljk5fSwKKyAgICAgIHtfX0xJTkVfXywgNjU2OTg1LjE1MTQsIDY1NDMyMSwgMC45OX0sCisKKyAg
ICAgIC8vIFRlc3RpbmcgbG9va3VwIGF0IDk5LjklIGNvbmZpZGVuY2UKKyAgICAgIHtfX0xJTkVf
XywgMTYuMjY1OSwgMywgMC45OTl9LAorICAgICAge19fTElORV9fLCAyMi40NTgwLCA2LCAwLjk5
OX0sCisgICAgICB7X19MSU5FX18sIDI2Ny41NDA5LCAyMDAsIDAuOTk5fSwKKyAgICAgIHtfX0xJ
TkVfXywgMTE2OC41MDMzLCAxMDIzLCAwLjk5OX0sCisgICAgICB7X19MSU5FX18sIDU1MzQ1LjE3
NDEsIDU0MzIxLCAwLjk5OX0sCisgICAgICB7X19MSU5FX18sIDY1Nzg2MS43Mjg0LCA2NTQzMjEs
IDAuOTk5fSwKKyAgICAgIHtfX0xJTkVfXywgNTEuMTc3MiwgMjQsIDAuOTk5fSwKKyAgICAgIHtf
X0xJTkVfXywgNTkuNzAwMywgMzAsIDAuOTk5fSwKKyAgICAgIHtfX0xJTkVfXywgMzcuNjk4NCwg
MTUsIDAuOTk5fSwKKyAgICAgIHtfX0xJTkVfXywgMjkuNTg5OCwgMTAsIDAuOTk5fSwKKyAgICAg
IHtfX0xJTkVfXywgMjcuODc3NiwgOSwgMC45OTl9LAorCisgICAgICAvLyBUZXN0aW5nIGxvb2t1
cCBhdCByYW5kb20gY29uZmlkZW5jZXMKKyAgICAgIHtfX0xJTkVfXywgMC4wMDAxNTcwODgsIDEs
IDAuMDF9LAorICAgICAge19fTElORV9fLCA1LjMxODUyLCAyLCAwLjkzfSwKKyAgICAgIHtfX0xJ
TkVfXywgMS45MjI1NiwgNCwgMC4yNX0sCisgICAgICB7X19MSU5FX18sIDEwLjc3MDksIDEzLCAw
LjM3fSwKKyAgICAgIHtfX0xJTkVfXywgMjYuMjUxNCwgMTcsIDAuOTN9LAorICAgICAge19fTElO
RV9fLCAzNi40Nzk5LCAyOSwgMC44NH0sCisgICAgICB7X19MSU5FX18sIDI1LjgxOCwgMzEsIDAu
Mjd9LAorICAgICAge19fTElORV9fLCA2My4zMzQ2LCA2NCwgMC41MH0sCisgICAgICB7X19MSU5F
X18sIDE5Ni4yMTEsIDEyOCwgMC45OTk5fSwKKyAgICAgIHtfX0xJTkVfXywgMjE1LjIxLCAyNDMs
IDAuMTB9LAorICAgICAge19fTElORV9fLCAyODUuMzkzLCAyNTYsIDAuOTB9LAorICAgICAge19f
TElORV9fLCA5ODQuNTA0LCAxMDI0LCAwLjE5MjN9LAorICAgICAge19fTElORV9fLCAyMDQzLjg1
LCAyMDQ4LCAwLjQ3ODN9LAorICAgICAge19fTElORV9fLCA0ODAwNC42LCA0ODI3MywgMC4xOTR9
LAorICB9OworICBmb3IgKGNvbnN0IGF1dG8mIHNwZWMgOiBzcGVjcykgeworICAgIFNDT1BFRF9U
UkFDRShzcGVjLmxpbmUpOworICAgIC8vIFZlcmlmeSBhbGwgdmFsdWVzIGFyZSBoYXZlIGF0IG1v
c3QgYSAxJSByZWxhdGl2ZSBlcnJvci4KKyAgICBjb25zdCBkb3VibGUgdmFsID0gQ2hpU3F1YXJl
VmFsdWUoc3BlYy5kZiwgc3BlYy5jb25maWRlbmNlKTsKKyAgICBjb25zdCBkb3VibGUgZXJyID0g
c3RkOjptYXgoNWUtNiwgc3BlYy5jaGlfc3F1YXJlIC8gNWUzKTsgIC8vIDEgcGFydCBpbiA1MDAw
CisgICAgRVhQRUNUX05FQVIoc3BlYy5jaGlfc3F1YXJlLCB2YWwsIGVycikgPDwgc3BlYy5saW5l
OworICB9CisKKyAgLy8gUmVsYXhlZCB0ZXN0IGZvciBleHRyZW1lIHZhbHVlcywgZnJvbQorICAv
LyAgaHR0cDovL3d3dy5jaXBoZXJzYnlyaXR0ZXIuY29tL0pBVkFTQ1JQL05PUk1DSElLLkhUTSND
aGlTcXVhcmUKKyAgRVhQRUNUX05FQVIoNDkuMjY4MCwgQ2hpU3F1YXJlVmFsdWUoMTAwLCAxZS02
KSwgNSk7ICAvLyAwLjAwMCcwMDUgbWFyaworICBFWFBFQ1RfTkVBUigxMjMuNDk5LCBDaGlTcXVh
cmVWYWx1ZSgyMDAsIDFlLTYpLCA1KTsgIC8vIDAuMDAwJzAwNSBtYXJrCisKKyAgRVhQRUNUX05F
QVIoMTQ5LjQ0OSwgQ2hpU3F1YXJlVmFsdWUoMTAwLCAwLjk5OSksIDAuMDEpOworICBFWFBFQ1Rf
TkVBUigxNjEuMzE4LCBDaGlTcXVhcmVWYWx1ZSgxMDAsIDAuOTk5OSksIDAuMDEpOworICBFWFBF
Q1RfTkVBUigxNzIuMDk4LCBDaGlTcXVhcmVWYWx1ZSgxMDAsIDAuOTk5OTkpLCAwLjAxKTsKKwor
ICBFWFBFQ1RfTkVBUigzODEuNDI2LCBDaGlTcXVhcmVWYWx1ZSgzMDAsIDAuOTk5KSwgMC4wNSk7
CisgIEVYUEVDVF9ORUFSKDM5OS43NTYsIENoaVNxdWFyZVZhbHVlKDMwMCwgMC45OTk5KSwgMC4x
KTsKKyAgRVhQRUNUX05FQVIoNDE2LjEyNiwgQ2hpU3F1YXJlVmFsdWUoMzAwLCAwLjk5OTk5KSwg
MC4yKTsKK30KKworVEVTVChDaGlTcXVhcmVUZXN0LCBQVmFsdWUpIHsKKyAgc3RydWN0IHsKKyAg
ICBpbnQgbGluZTsKKyAgICBkb3VibGUgcHZhbDsKKyAgICBkb3VibGUgY2hpX3NxdWFyZTsKKyAg
ICBpbnQgZGY7CisgIH0gc3RhdGljIGNvbnN0IHNwZWNzW10gPSB7CisgICAgICB7X19MSU5FX18s
IDEsIDAsIDB9LAorICAgICAge19fTElORV9fLCAwLCAwLjAwMSwgMH0sCisgICAgICB7X19MSU5F
X18sIDEuMDAwLCAwLCA0NTN9LAorICAgICAge19fTElORV9fLCAwLjEzNDQ3MSwgNzk3Mi41Miwg
NzgzNH0sCisgICAgICB7X19MSU5FX18sIDAuMjAzOTIyLCAyOC4zMiwgMjN9LAorICAgICAge19f
TElORV9fLCAwLjczNzE3MSwgNDgyNzQsIDQ4NDcyfSwKKyAgICAgIHtfX0xJTkVfXywgMC40NDQx
NDYsIDU4My4xMjM0LCA1Nzl9LAorICAgICAge19fTElORV9fLCAwLjI5NDgxNCwgMTM4LjIsIDEz
MH0sCisgICAgICB7X19MSU5FX18sIDAuMDgxNjUzMiwgMTIuNjMsIDd9LAorICAgICAge19fTElO
RV9fLCAwLCA2ODIuMzIsIDY3fSwKKyAgICAgIHtfX0xJTkVfXywgMC40OTQwNSwgOTk5LCA5OTl9
LAorICAgICAge19fTElORV9fLCAxLjAwMCwgMCwgOTk5OX0sCisgICAgICB7X19MSU5FX18sIDAu
OTk3NDc3LCAwLjAwMDAxLCAxfSwKKyAgICAgIHtfX0xJTkVfXywgMCwgNTgyMy4yMSwgNTA0MH0s
CisgIH07CisgIGZvciAoY29uc3QgYXV0byYgc3BlYyA6IHNwZWNzKSB7CisgICAgU0NPUEVEX1RS
QUNFKHNwZWMubGluZSk7CisgICAgY29uc3QgZG91YmxlIHB2YWwgPSBDaGlTcXVhcmVQVmFsdWUo
c3BlYy5jaGlfc3F1YXJlLCBzcGVjLmRmKTsKKyAgICBFWFBFQ1RfTkVBUihzcGVjLnB2YWwsIHB2
YWwsIDFlLTMpOworICB9Cit9CisKK1RFU1QoQ2hpU3F1YXJlVGVzdCwgQ2FsY0NoaVNxdWFyZSkg
eworICBzdHJ1Y3QgeworICAgIGludCBsaW5lOworICAgIHN0ZDo6dmVjdG9yPGludD4gZXhwZWN0
ZWQ7CisgICAgc3RkOjp2ZWN0b3I8aW50PiBhY3R1YWw7CisgIH0gY29uc3Qgc3BlY3NbXSA9IHsK
KyAgICAgIHtfX0xJTkVfXywKKyAgICAgICB7NTYsIDIzNCwgNzYsIDEsIDU0NiwgMSwgODcsIDM0
NSwgMSwgMjM0fSwKKyAgICAgICB7MiwgMTMyLCA0LCA0MywgMjM0LCA4LCAzNDUsIDgsIDIzNiwg
NTZ9fSwKKyAgICAgIHtfX0xJTkVfXywKKyAgICAgICB7MTIzLCAzNiwgMjM0LCAzNjcsIDM0NSwg
MiwgNDU2LCA1NjcsIDIzNCwgNTY3fSwKKyAgICAgICB7MTIzLCA1NiwgMjM0NSwgOCwgMzQ1LCA4
LCAyMzQ1LCAyMywgNDgsIDI2N319LAorICAgICAge19fTElORV9fLAorICAgICAgIHsxMjMsIDIz
NCwgMzQ1LCA0NTYsIDU2NywgNjc4LCA3ODksIDg5MCwgOTgsIDc2fSwKKyAgICAgICB7MTIzLCAy
MzQsIDM0NSwgNDU2LCA1NjcsIDY3OCwgNzg5LCA4OTAsIDk4LCA3Nn19LAorICAgICAge19fTElO
RV9fLCB7MywgNjc1LCAyMywgODYsIDIsIDgsIDJ9LCB7NDU2LCA2NzUsIDIzLCA4NiwgMjMsIDY1
LCAyfX0sCisgICAgICB7X19MSU5FX18sIHsxfSwgezIzfX0sCisgIH07CisgIGZvciAoY29uc3Qg
YXV0byYgc3BlYyA6IHNwZWNzKSB7CisgICAgU0NPUEVEX1RSQUNFKHNwZWMubGluZSk7CisgICAg
ZG91YmxlIGNoaV9zcXVhcmUgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3BlYy5leHBl
Y3RlZC5zaXplKCk7ICsraSkgeworICAgICAgY29uc3QgZG91YmxlIGRpZmYgPSBzcGVjLmFjdHVh
bFtpXSAtIHNwZWMuZXhwZWN0ZWRbaV07CisgICAgICBjaGlfc3F1YXJlICs9IChkaWZmICogZGlm
ZikgLyBzcGVjLmV4cGVjdGVkW2ldOworICAgIH0KKyAgICBFWFBFQ1RfTkVBUihjaGlfc3F1YXJl
LAorICAgICAgICAgICAgICAgIENoaVNxdWFyZShzdGQ6OmJlZ2luKHNwZWMuYWN0dWFsKSwgc3Rk
OjplbmQoc3BlYy5hY3R1YWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJlZ2lu
KHNwZWMuZXhwZWN0ZWQpLCBzdGQ6OmVuZChzcGVjLmV4cGVjdGVkKSksCisgICAgICAgICAgICAg
ICAgMWUtNSk7CisgIH0KK30KKworVEVTVChDaGlTcXVhcmVUZXN0LCBDYWxjQ2hpU3F1YXJlSW50
NjQpIHsKKyAgY29uc3QgaW50NjRfdCBkYXRhWzNdID0gezkxMDI5MzQ4NywgOTEwMjkyNDkxLCA5
MTAyMTY3ODB9OworICAvLyAkIHB5dGhvbiAtYyAiaW1wb3J0IHNjaXB5LnN0YXRzCisgIC8vID4g
cHJpbnQgc2NpcHkuc3RhdHMuY2hpc3F1YXJlKFs5MTAyOTM0ODcsIDkxMDI5MjQ5MSwgOTEwMjE2
NzgwXSlbMF0iCisgIC8vIDQuMjU0MTAxMjM1MjQKKyAgZG91YmxlIHN1bSA9IHN0ZDo6YWNjdW11
bGF0ZShzdGQ6OmJlZ2luKGRhdGEpLCBzdGQ6OmVuZChkYXRhKSwgZG91YmxlezB9KTsKKyAgc2l6
ZV90IG4gPSBzdGQ6OmRpc3RhbmNlKHN0ZDo6YmVnaW4oZGF0YSksIHN0ZDo6ZW5kKGRhdGEpKTsK
KyAgZG91YmxlIGEgPSBDaGlTcXVhcmVXaXRoRXhwZWN0ZWQoc3RkOjpiZWdpbihkYXRhKSwgc3Rk
OjplbmQoZGF0YSksIHN1bSAvIG4pOworICBFWFBFQ1RfTkVBUig0LjI1NDEwMSwgYSwgMWUtNik7
CisKKyAgLy8gLi4uIE9yIHdpdGgga25vd24gdmFsdWVzLgorICBkb3VibGUgYiA9CisgICAgICBD
aGlTcXVhcmVXaXRoRXhwZWN0ZWQoc3RkOjpiZWdpbihkYXRhKSwgc3RkOjplbmQoZGF0YSksIDkx
MDI2NzU4Ni4wKTsKKyAgRVhQRUNUX05FQVIoNC4yNTQxMDEsIGIsIDFlLTYpOworfQorCitURVNU
KENoaVNxdWFyZVRlc3QsIFRhYmxlRGF0YSkgeworICAvLyBUZXN0IGRhdGEgZnJvbQorICAvLyBo
dHRwOi8vd3d3Lml0bC5uaXN0Lmdvdi9kaXY4OTgvaGFuZGJvb2svZWRhL3NlY3Rpb24zL2VkYTM2
NzQuaHRtCisgIC8vICAgIDAuOTAgICAgICAwLjk1ICAgICAwLjk3NSAgICAgIDAuOTkgICAgIDAu
OTk5CisgIGNvbnN0IGRvdWJsZSBkYXRhWzEwMF1bNV0gPSB7CisgICAgICAvKiAxKi8gezIuNzA2
LCAzLjg0MSwgNS4wMjQsIDYuNjM1LCAxMC44Mjh9LAorICAgICAgLyogMiovIHs0LjYwNSwgNS45
OTEsIDcuMzc4LCA5LjIxMCwgMTMuODE2fSwKKyAgICAgIC8qIDMqLyB7Ni4yNTEsIDcuODE1LCA5
LjM0OCwgMTEuMzQ1LCAxNi4yNjZ9LAorICAgICAgLyogNCovIHs3Ljc3OSwgOS40ODgsIDExLjE0
MywgMTMuMjc3LCAxOC40Njd9LAorICAgICAgLyogNSovIHs5LjIzNiwgMTEuMDcwLCAxMi44MzMs
IDE1LjA4NiwgMjAuNTE1fSwKKyAgICAgIC8qIDYqLyB7MTAuNjQ1LCAxMi41OTIsIDE0LjQ0OSwg
MTYuODEyLCAyMi40NTh9LAorICAgICAgLyogNyovIHsxMi4wMTcsIDE0LjA2NywgMTYuMDEzLCAx
OC40NzUsIDI0LjMyMn0sCisgICAgICAvKiA4Ki8gezEzLjM2MiwgMTUuNTA3LCAxNy41MzUsIDIw
LjA5MCwgMjYuMTI1fSwKKyAgICAgIC8qIDkqLyB7MTQuNjg0LCAxNi45MTksIDE5LjAyMywgMjEu
NjY2LCAyNy44Nzd9LAorICAgICAgLyoxMCovIHsxNS45ODcsIDE4LjMwNywgMjAuNDgzLCAyMy4y
MDksIDI5LjU4OH0sCisgICAgICAvKjExKi8gezE3LjI3NSwgMTkuNjc1LCAyMS45MjAsIDI0Ljcy
NSwgMzEuMjY0fSwKKyAgICAgIC8qMTIqLyB7MTguNTQ5LCAyMS4wMjYsIDIzLjMzNywgMjYuMjE3
LCAzMi45MTB9LAorICAgICAgLyoxMyovIHsxOS44MTIsIDIyLjM2MiwgMjQuNzM2LCAyNy42ODgs
IDM0LjUyOH0sCisgICAgICAvKjE0Ki8gezIxLjA2NCwgMjMuNjg1LCAyNi4xMTksIDI5LjE0MSwg
MzYuMTIzfSwKKyAgICAgIC8qMTUqLyB7MjIuMzA3LCAyNC45OTYsIDI3LjQ4OCwgMzAuNTc4LCAz
Ny42OTd9LAorICAgICAgLyoxNiovIHsyMy41NDIsIDI2LjI5NiwgMjguODQ1LCAzMi4wMDAsIDM5
LjI1Mn0sCisgICAgICAvKjE3Ki8gezI0Ljc2OSwgMjcuNTg3LCAzMC4xOTEsIDMzLjQwOSwgNDAu
NzkwfSwKKyAgICAgIC8qMTgqLyB7MjUuOTg5LCAyOC44NjksIDMxLjUyNiwgMzQuODA1LCA0Mi4z
MTJ9LAorICAgICAgLyoxOSovIHsyNy4yMDQsIDMwLjE0NCwgMzIuODUyLCAzNi4xOTEsIDQzLjgy
MH0sCisgICAgICAvKjIwKi8gezI4LjQxMiwgMzEuNDEwLCAzNC4xNzAsIDM3LjU2NiwgNDUuMzE1
fSwKKyAgICAgIC8qMjEqLyB7MjkuNjE1LCAzMi42NzEsIDM1LjQ3OSwgMzguOTMyLCA0Ni43OTd9
LAorICAgICAgLyoyMiovIHszMC44MTMsIDMzLjkyNCwgMzYuNzgxLCA0MC4yODksIDQ4LjI2OH0s
CisgICAgICAvKjIzKi8gezMyLjAwNywgMzUuMTcyLCAzOC4wNzYsIDQxLjYzOCwgNDkuNzI4fSwK
KyAgICAgIC8qMjQqLyB7MzMuMTk2LCAzNi40MTUsIDM5LjM2NCwgNDIuOTgwLCA1MS4xNzl9LAor
ICAgICAgLyoyNSovIHszNC4zODIsIDM3LjY1MiwgNDAuNjQ2LCA0NC4zMTQsIDUyLjYyMH0sCisg
ICAgICAvKjI2Ki8gezM1LjU2MywgMzguODg1LCA0MS45MjMsIDQ1LjY0MiwgNTQuMDUyfSwKKyAg
ICAgIC8qMjcqLyB7MzYuNzQxLCA0MC4xMTMsIDQzLjE5NSwgNDYuOTYzLCA1NS40NzZ9LAorICAg
ICAgLyoyOCovIHszNy45MTYsIDQxLjMzNywgNDQuNDYxLCA0OC4yNzgsIDU2Ljg5Mn0sCisgICAg
ICAvKjI5Ki8gezM5LjA4NywgNDIuNTU3LCA0NS43MjIsIDQ5LjU4OCwgNTguMzAxfSwKKyAgICAg
IC8qMzAqLyB7NDAuMjU2LCA0My43NzMsIDQ2Ljk3OSwgNTAuODkyLCA1OS43MDN9LAorICAgICAg
LyozMSovIHs0MS40MjIsIDQ0Ljk4NSwgNDguMjMyLCA1Mi4xOTEsIDYxLjA5OH0sCisgICAgICAv
KjMyKi8gezQyLjU4NSwgNDYuMTk0LCA0OS40ODAsIDUzLjQ4NiwgNjIuNDg3fSwKKyAgICAgIC8q
MzMqLyB7NDMuNzQ1LCA0Ny40MDAsIDUwLjcyNSwgNTQuNzc2LCA2My44NzB9LAorICAgICAgLyoz
NCovIHs0NC45MDMsIDQ4LjYwMiwgNTEuOTY2LCA1Ni4wNjEsIDY1LjI0N30sCisgICAgICAvKjM1
Ki8gezQ2LjA1OSwgNDkuODAyLCA1My4yMDMsIDU3LjM0MiwgNjYuNjE5fSwKKyAgICAgIC8qMzYq
LyB7NDcuMjEyLCA1MC45OTgsIDU0LjQzNywgNTguNjE5LCA2Ny45ODV9LAorICAgICAgLyozNyov
IHs0OC4zNjMsIDUyLjE5MiwgNTUuNjY4LCA1OS44OTMsIDY5LjM0N30sCisgICAgICAvKjM4Ki8g
ezQ5LjUxMywgNTMuMzg0LCA1Ni44OTYsIDYxLjE2MiwgNzAuNzAzfSwKKyAgICAgIC8qMzkqLyB7
NTAuNjYwLCA1NC41NzIsIDU4LjEyMCwgNjIuNDI4LCA3Mi4wNTV9LAorICAgICAgLyo0MCovIHs1
MS44MDUsIDU1Ljc1OCwgNTkuMzQyLCA2My42OTEsIDczLjQwMn0sCisgICAgICAvKjQxKi8gezUy
Ljk0OSwgNTYuOTQyLCA2MC41NjEsIDY0Ljk1MCwgNzQuNzQ1fSwKKyAgICAgIC8qNDIqLyB7NTQu
MDkwLCA1OC4xMjQsIDYxLjc3NywgNjYuMjA2LCA3Ni4wODR9LAorICAgICAgLyo0MyovIHs1NS4y
MzAsIDU5LjMwNCwgNjIuOTkwLCA2Ny40NTksIDc3LjQxOX0sCisgICAgICAvKjQ0Ki8gezU2LjM2
OSwgNjAuNDgxLCA2NC4yMDEsIDY4LjcxMCwgNzguNzUwfSwKKyAgICAgIC8qNDUqLyB7NTcuNTA1
LCA2MS42NTYsIDY1LjQxMCwgNjkuOTU3LCA4MC4wNzd9LAorICAgICAgLyo0NiovIHs1OC42NDEs
IDYyLjgzMCwgNjYuNjE3LCA3MS4yMDEsIDgxLjQwMH0sCisgICAgICAvKjQ3Ki8gezU5Ljc3NCwg
NjQuMDAxLCA2Ny44MjEsIDcyLjQ0MywgODIuNzIwfSwKKyAgICAgIC8qNDgqLyB7NjAuOTA3LCA2
NS4xNzEsIDY5LjAyMywgNzMuNjgzLCA4NC4wMzd9LAorICAgICAgLyo0OSovIHs2Mi4wMzgsIDY2
LjMzOSwgNzAuMjIyLCA3NC45MTksIDg1LjM1MX0sCisgICAgICAvKjUwKi8gezYzLjE2NywgNjcu
NTA1LCA3MS40MjAsIDc2LjE1NCwgODYuNjYxfSwKKyAgICAgIC8qNTEqLyB7NjQuMjk1LCA2OC42
NjksIDcyLjYxNiwgNzcuMzg2LCA4Ny45Njh9LAorICAgICAgLyo1MiovIHs2NS40MjIsIDY5Ljgz
MiwgNzMuODEwLCA3OC42MTYsIDg5LjI3Mn0sCisgICAgICAvKjUzKi8gezY2LjU0OCwgNzAuOTkz
LCA3NS4wMDIsIDc5Ljg0MywgOTAuNTczfSwKKyAgICAgIC8qNTQqLyB7NjcuNjczLCA3Mi4xNTMs
IDc2LjE5MiwgODEuMDY5LCA5MS44NzJ9LAorICAgICAgLyo1NSovIHs2OC43OTYsIDczLjMxMSwg
NzcuMzgwLCA4Mi4yOTIsIDkzLjE2OH0sCisgICAgICAvKjU2Ki8gezY5LjkxOSwgNzQuNDY4LCA3
OC41NjcsIDgzLjUxMywgOTQuNDYxfSwKKyAgICAgIC8qNTcqLyB7NzEuMDQwLCA3NS42MjQsIDc5
Ljc1MiwgODQuNzMzLCA5NS43NTF9LAorICAgICAgLyo1OCovIHs3Mi4xNjAsIDc2Ljc3OCwgODAu
OTM2LCA4NS45NTAsIDk3LjAzOX0sCisgICAgICAvKjU5Ki8gezczLjI3OSwgNzcuOTMxLCA4Mi4x
MTcsIDg3LjE2NiwgOTguMzI0fSwKKyAgICAgIC8qNjAqLyB7NzQuMzk3LCA3OS4wODIsIDgzLjI5
OCwgODguMzc5LCA5OS42MDd9LAorICAgICAgLyo2MSovIHs3NS41MTQsIDgwLjIzMiwgODQuNDc2
LCA4OS41OTEsIDEwMC44ODh9LAorICAgICAgLyo2MiovIHs3Ni42MzAsIDgxLjM4MSwgODUuNjU0
LCA5MC44MDIsIDEwMi4xNjZ9LAorICAgICAgLyo2MyovIHs3Ny43NDUsIDgyLjUyOSwgODYuODMw
LCA5Mi4wMTAsIDEwMy40NDJ9LAorICAgICAgLyo2NCovIHs3OC44NjAsIDgzLjY3NSwgODguMDA0
LCA5My4yMTcsIDEwNC43MTZ9LAorICAgICAgLyo2NSovIHs3OS45NzMsIDg0LjgyMSwgODkuMTc3
LCA5NC40MjIsIDEwNS45ODh9LAorICAgICAgLyo2NiovIHs4MS4wODUsIDg1Ljk2NSwgOTAuMzQ5
LCA5NS42MjYsIDEwNy4yNTh9LAorICAgICAgLyo2NyovIHs4Mi4xOTcsIDg3LjEwOCwgOTEuNTE5
LCA5Ni44MjgsIDEwOC41MjZ9LAorICAgICAgLyo2OCovIHs4My4zMDgsIDg4LjI1MCwgOTIuNjg5
LCA5OC4wMjgsIDEwOS43OTF9LAorICAgICAgLyo2OSovIHs4NC40MTgsIDg5LjM5MSwgOTMuODU2
LCA5OS4yMjgsIDExMS4wNTV9LAorICAgICAgLyo3MCovIHs4NS41MjcsIDkwLjUzMSwgOTUuMDIz
LCAxMDAuNDI1LCAxMTIuMzE3fSwKKyAgICAgIC8qNzEqLyB7ODYuNjM1LCA5MS42NzAsIDk2LjE4
OSwgMTAxLjYyMSwgMTEzLjU3N30sCisgICAgICAvKjcyKi8gezg3Ljc0MywgOTIuODA4LCA5Ny4z
NTMsIDEwMi44MTYsIDExNC44MzV9LAorICAgICAgLyo3MyovIHs4OC44NTAsIDkzLjk0NSwgOTgu
NTE2LCAxMDQuMDEwLCAxMTYuMDkyfSwKKyAgICAgIC8qNzQqLyB7ODkuOTU2LCA5NS4wODEsIDk5
LjY3OCwgMTA1LjIwMiwgMTE3LjM0Nn0sCisgICAgICAvKjc1Ki8gezkxLjA2MSwgOTYuMjE3LCAx
MDAuODM5LCAxMDYuMzkzLCAxMTguNTk5fSwKKyAgICAgIC8qNzYqLyB7OTIuMTY2LCA5Ny4zNTEs
IDEwMS45OTksIDEwNy41ODMsIDExOS44NTB9LAorICAgICAgLyo3NyovIHs5My4yNzAsIDk4LjQ4
NCwgMTAzLjE1OCwgMTA4Ljc3MSwgMTIxLjEwMH0sCisgICAgICAvKjc4Ki8gezk0LjM3NCwgOTku
NjE3LCAxMDQuMzE2LCAxMDkuOTU4LCAxMjIuMzQ4fSwKKyAgICAgIC8qNzkqLyB7OTUuNDc2LCAx
MDAuNzQ5LCAxMDUuNDczLCAxMTEuMTQ0LCAxMjMuNTk0fSwKKyAgICAgIC8qODAqLyB7OTYuNTc4
LCAxMDEuODc5LCAxMDYuNjI5LCAxMTIuMzI5LCAxMjQuODM5fSwKKyAgICAgIC8qODEqLyB7OTcu
NjgwLCAxMDMuMDEwLCAxMDcuNzgzLCAxMTMuNTEyLCAxMjYuMDgzfSwKKyAgICAgIC8qODIqLyB7
OTguNzgwLCAxMDQuMTM5LCAxMDguOTM3LCAxMTQuNjk1LCAxMjcuMzI0fSwKKyAgICAgIC8qODMq
LyB7OTkuODgwLCAxMDUuMjY3LCAxMTAuMDkwLCAxMTUuODc2LCAxMjguNTY1fSwKKyAgICAgIC8q
ODQqLyB7MTAwLjk4MCwgMTA2LjM5NSwgMTExLjI0MiwgMTE3LjA1NywgMTI5LjgwNH0sCisgICAg
ICAvKjg1Ki8gezEwMi4wNzksIDEwNy41MjIsIDExMi4zOTMsIDExOC4yMzYsIDEzMS4wNDF9LAor
ICAgICAgLyo4NiovIHsxMDMuMTc3LCAxMDguNjQ4LCAxMTMuNTQ0LCAxMTkuNDE0LCAxMzIuMjc3
fSwKKyAgICAgIC8qODcqLyB7MTA0LjI3NSwgMTA5Ljc3MywgMTE0LjY5MywgMTIwLjU5MSwgMTMz
LjUxMn0sCisgICAgICAvKjg4Ki8gezEwNS4zNzIsIDExMC44OTgsIDExNS44NDEsIDEyMS43Njcs
IDEzNC43NDZ9LAorICAgICAgLyo4OSovIHsxMDYuNDY5LCAxMTIuMDIyLCAxMTYuOTg5LCAxMjIu
OTQyLCAxMzUuOTc4fSwKKyAgICAgIC8qOTAqLyB7MTA3LjU2NSwgMTEzLjE0NSwgMTE4LjEzNiwg
MTI0LjExNiwgMTM3LjIwOH0sCisgICAgICAvKjkxKi8gezEwOC42NjEsIDExNC4yNjgsIDExOS4y
ODIsIDEyNS4yODksIDEzOC40Mzh9LAorICAgICAgLyo5MiovIHsxMDkuNzU2LCAxMTUuMzkwLCAx
MjAuNDI3LCAxMjYuNDYyLCAxMzkuNjY2fSwKKyAgICAgIC8qOTMqLyB7MTEwLjg1MCwgMTE2LjUx
MSwgMTIxLjU3MSwgMTI3LjYzMywgMTQwLjg5M30sCisgICAgICAvKjk0Ki8gezExMS45NDQsIDEx
Ny42MzIsIDEyMi43MTUsIDEyOC44MDMsIDE0Mi4xMTl9LAorICAgICAgLyo5NSovIHsxMTMuMDM4
LCAxMTguNzUyLCAxMjMuODU4LCAxMjkuOTczLCAxNDMuMzQ0fSwKKyAgICAgIC8qOTYqLyB7MTE0
LjEzMSwgMTE5Ljg3MSwgMTI1LjAwMCwgMTMxLjE0MSwgMTQ0LjU2N30sCisgICAgICAvKjk3Ki8g
ezExNS4yMjMsIDEyMC45OTAsIDEyNi4xNDEsIDEzMi4zMDksIDE0NS43ODl9LAorICAgICAgLyo5
OCovIHsxMTYuMzE1LCAxMjIuMTA4LCAxMjcuMjgyLCAxMzMuNDc2LCAxNDcuMDEwfSwKKyAgICAg
IC8qOTkqLyB7MTE3LjQwNywgMTIzLjIyNSwgMTI4LjQyMiwgMTM0LjY0MiwgMTQ4LjIzMH0sCisg
ICAgICAvKjEwMCovIHsxMTguNDk4LCAxMjQuMzQyLCAxMjkuNTYxLCAxMzUuODA3LCAxNDkuNDQ5
fQorICAgICAgLyoqL307CisKKyAgLy8gICAgMC45MCAgICAgIDAuOTUgICAgIDAuOTc1ICAgICAg
MC45OSAgICAgMC45OTkKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBBQlNMX0FSUkFZU0laRShkYXRh
KTsgaSsrKSB7CisgICAgY29uc3QgZG91YmxlIEUgPSAwLjAwMDE7CisgICAgRVhQRUNUX05FQVIo
Q2hpU3F1YXJlUFZhbHVlKGRhdGFbaV1bMF0sIGkgKyAxKSwgMC4xMCwgRSkKKyAgICAgICAgPDwg
aSA8PCAiICIgPDwgZGF0YVtpXVswXTsKKyAgICBFWFBFQ1RfTkVBUihDaGlTcXVhcmVQVmFsdWUo
ZGF0YVtpXVsxXSwgaSArIDEpLCAwLjA1LCBFKQorICAgICAgICA8PCBpIDw8ICIgIiA8PCBkYXRh
W2ldWzFdOworICAgIEVYUEVDVF9ORUFSKENoaVNxdWFyZVBWYWx1ZShkYXRhW2ldWzJdLCBpICsg
MSksIDAuMDI1LCBFKQorICAgICAgICA8PCBpIDw8ICIgIiA8PCBkYXRhW2ldWzJdOworICAgIEVY
UEVDVF9ORUFSKENoaVNxdWFyZVBWYWx1ZShkYXRhW2ldWzNdLCBpICsgMSksIDAuMDEsIEUpCisg
ICAgICAgIDw8IGkgPDwgIiAiIDw8IGRhdGFbaV1bM107CisgICAgRVhQRUNUX05FQVIoQ2hpU3F1
YXJlUFZhbHVlKGRhdGFbaV1bNF0sIGkgKyAxKSwgMC4wMDEsIEUpCisgICAgICAgIDw8IGkgPDwg
IiAiIDw8IGRhdGFbaV1bNF07CisKKyAgICBjb25zdCBkb3VibGUgRiA9IDAuMTsKKyAgICBFWFBF
Q1RfTkVBUihDaGlTcXVhcmVWYWx1ZShpICsgMSwgMC45MCksIGRhdGFbaV1bMF0sIEYpIDw8IGk7
CisgICAgRVhQRUNUX05FQVIoQ2hpU3F1YXJlVmFsdWUoaSArIDEsIDAuOTUpLCBkYXRhW2ldWzFd
LCBGKSA8PCBpOworICAgIEVYUEVDVF9ORUFSKENoaVNxdWFyZVZhbHVlKGkgKyAxLCAwLjk3NSks
IGRhdGFbaV1bMl0sIEYpIDw8IGk7CisgICAgRVhQRUNUX05FQVIoQ2hpU3F1YXJlVmFsdWUoaSAr
IDEsIDAuOTkpLCBkYXRhW2ldWzNdLCBGKSA8PCBpOworICAgIEVYUEVDVF9ORUFSKENoaVNxdWFy
ZVZhbHVlKGkgKyAxLCAwLjk5OSksIGRhdGFbaV1bNF0sIEYpIDw8IGk7CisgIH0KK30KKworVEVT
VChDaGlTcXVhcmVUZXN0LCBDaGlTcXVhcmVUd29JdGVyYXRvcikgeworICAvLyBUZXN0IGRhdGEg
ZnJvbSBodHRwOi8vd3d3LnN0YXQueWFsZS5lZHUvQ291cnNlcy8xOTk3LTk4LzEwMS9jaGlnZi5o
dG0KKyAgLy8gTnVsbC1oeXBvdGhlc2lzOiBUaGlzIGRhdGEgaXMgbm9ybWFsbHkgZGlzdHJpYnV0
ZWQuCisgIGNvbnN0IGludCBjb3VudHNbMTBdID0gezYsIDYsIDE4LCAzMywgMzgsIDM4LCAyOCwg
MjEsIDksIDN9OworICBjb25zdCBkb3VibGUgZXhwZWN0ZWRbMTBdID0gezQuNiwgIDguOCwgIDE4
LjQsIDMwLjAsIDM4LjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzguMiwgMzAu
MCwgMTguNCwgOC44LCAgNC42fTsKKyAgZG91YmxlIGNoaV9zcXVhcmUgPSBDaGlTcXVhcmUoc3Rk
OjpiZWdpbihjb3VudHMpLCBzdGQ6OmVuZChjb3VudHMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmJlZ2luKGV4cGVjdGVkKSwgc3RkOjplbmQoZXhwZWN0ZWQpKTsKKyAg
RVhQRUNUX05FQVIoY2hpX3NxdWFyZSwgMi42OSwgMC4wMDEpOworCisgIC8vIERlZ3JlZXMgb2Yg
ZnJlZWRvbTogMTAgYmlucy4gdHdvIGVzdGltYXRlZCBwYXJhbWV0ZXJzLiA9IDEwIC0gMiAtIDEu
CisgIGNvbnN0IGludCBkb2YgPSA3OworICAvLyBUaGUgY3JpdGljYWwgdmFsdWUgb2YgNywgOTUl
ID0+IDE0LjA2NyAoc2VlIGFib3ZlIHRlc3QpCisgIGRvdWJsZSBwX3ZhbHVlXzA1ID0gQ2hpU3F1
YXJlUFZhbHVlKDE0LjA2NywgZG9mKTsKKyAgRVhQRUNUX05FQVIocF92YWx1ZV8wNSwgMC4wNSwg
MC4wMDEpOyAgLy8gOTUlLWlsZSBwLXZhbHVlCisKKyAgZG91YmxlIHBfYWN0dWFsID0gQ2hpU3F1
YXJlUFZhbHVlKGNoaV9zcXVhcmUsIGRvZik7CisgIEVYUEVDVF9HVChwX2FjdHVhbCwgMC4wNSk7
ICAvLyBBY2NlcHQgdGhlIG51bGwgaHlwb3RoZXNpcy4KK30KKworVEVTVChDaGlTcXVhcmVUZXN0
LCBEaWNlUm9sbHMpIHsKKyAgLy8gQXNzdW1lIHdlIGFyZSB0ZXN0aW5nIDEwMiBmYWlyIGRpY2Ug
cm9sbHMuCisgIC8vIE51bGwtaHlwb3RoZXNpczogVGhpcyBkYXRhIGlzIGZhaXJseSBkaXN0cmli
dXRlZC4KKyAgLy8KKyAgLy8gVGhlIGRvZiB2YWx1ZSBvZiA0LCBAOTUlID0gOS40ODggKHNlZSBh
Ym92ZSB0ZXN0KQorICAvLyBUaGUgZG9mIHZhbHVlIG9mIDUsIEA5NSUgPSAxMS4wNzAKKyAgY29u
c3QgaW50IHJvbGxzWzZdID0gezIyLCAxMSwgMTcsIDE0LCAyMCwgMTh9OworICBkb3VibGUgc3Vt
ID0gc3RkOjphY2N1bXVsYXRlKHN0ZDo6YmVnaW4ocm9sbHMpLCBzdGQ6OmVuZChyb2xscyksIGRv
dWJsZXswfSk7CisgIHNpemVfdCBuID0gc3RkOjpkaXN0YW5jZShzdGQ6OmJlZ2luKHJvbGxzKSwg
c3RkOjplbmQocm9sbHMpKTsKKworICBkb3VibGUgYSA9IENoaVNxdWFyZVdpdGhFeHBlY3RlZChz
dGQ6OmJlZ2luKHJvbGxzKSwgc3RkOjplbmQocm9sbHMpLCBzdW0gLyBuKTsKKyAgRVhQRUNUX05F
QVIoYSwgNC43MDU4OCwgMWUtNSk7CisgIEVYUEVDVF9MVChhLCBDaGlTcXVhcmVWYWx1ZSg0LCAw
Ljk1KSk7CisKKyAgZG91YmxlIHBfYSA9IENoaVNxdWFyZVBWYWx1ZShhLCA0KTsKKyAgRVhQRUNU
X05FQVIocF9hLCAwLjMxODgyOCwgMWUtNSk7ICAvLyBBY2NlcHQgdGhlIG51bGwgaHlwb3RoZXNp
cy4KKworICBkb3VibGUgYiA9IENoaVNxdWFyZVdpdGhFeHBlY3RlZChzdGQ6OmJlZ2luKHJvbGxz
KSwgc3RkOjplbmQocm9sbHMpLCAxNy4wKTsKKyAgRVhQRUNUX05FQVIoYiwgNC43MDU4OCwgMWUt
NSk7CisgIEVYUEVDVF9MVChiLCBDaGlTcXVhcmVWYWx1ZSg1LCAwLjk1KSk7CisKKyAgZG91Ymxl
IHBfYiA9IENoaVNxdWFyZVBWYWx1ZShiLCA1KTsKKyAgRVhQRUNUX05FQVIocF9iLCAwLjQ1Mjgx
ODAsIDFlLTUpOyAgLy8gQWNjZXB0IHRoZSBudWxsIGh5cG90aGVzaXMuCit9CisKK30gIC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9j
YWxsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fY2FsbGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDMxOGUxZjgwNzJlYzEwZjhmYTQzMzU1MjQwNjYzYWFjNjZlMjgxOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fY2FsbGVyLmgK
QEAgLTAsMCArMSw1NiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9ESVNUUklCVVRJT05fQ0FM
TEVSX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTl9DQUxMRVJf
SF8KKworI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBy
YW5kb21faW50ZXJuYWwgeworCisvLyBEaXN0cmlidXRpb25DYWxsZXIgcHJvdmlkZXMgYW4gb3Bw
b3J0dW5pdHkgdG8gb3ZlcmxvYWQgdGhlIGdlbmVyYWwKKy8vIG1lY2hhbmlzbSBmb3IgY2FsbGlu
ZyBhIGRpc3RyaWJ1dGlvbiwgYWxsb3dpbmcgZm9yIG1vY2stUk5HIGNsYXNzZXMKKy8vIHRvIGlu
dGVyY2VwdCBzdWNoIGNhbGxzLgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CitzdHJ1Y3QgRGlz
dHJpYnV0aW9uQ2FsbGVyIHsKKyAgLy8gQ2FsbCB0aGUgcHJvdmlkZWQgZGlzdHJpYnV0aW9uIHR5
cGUuIFRoZSBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZAorICAvLyB0byBiZSBleHBsaWNpdGx5IHNw
ZWNpZmllZC4KKyAgLy8gRGlzdHJUIGlzIHRoZSBkaXN0cmlidXRpb24gdHlwZS4KKyAgLy8gRm9y
bWF0VCBpcyB0aGUgZm9ybWF0dGVyIHR5cGU6CisgIC8vCisgIC8vIHN0cnVjdCBGb3JtYXRUIHsK
KyAgLy8gICB1c2luZyByZXN1bHRfdHlwZSA9IGRpc3RyaWJ1dGlvbl90OjpyZXN1bHRfdHlwZTsK
KyAgLy8gICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0Q2FsbCgKKyAgLy8gICAgICAgY29uc3Qg
ZGlzdHJpYnV0aW9uX3QmIGRpc3RyLAorICAvLyAgICAgICBhYnNsOjpTcGFuPGNvbnN0IHJlc3Vs
dF90eXBlPik7CisgIC8vCisgIC8vICAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEV4cGVjdGF0
aW9uKAorICAvLyAgICAgICBhYnNsOjpzdHJpbmdfdmlldyBtYXRjaF9hcmdzLAorICAvLyAgICAg
ICBhYnNsOjpTcGFuPGNvbnN0IHJlc3VsdF90PiByZXN1bHRzKTsKKyAgLy8gfQorICAvLworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRGlzdHJULCB0eXBlbmFtZSBGb3JtYXRULCB0eXBlbmFtZS4uLiBB
cmdzPgorICBzdGF0aWMgdHlwZW5hbWUgRGlzdHJUOjpyZXN1bHRfdHlwZSBDYWxsKFVSQkcqIHVy
YmcsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgRGlzdHJUIGRpc3Qoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKKyAgICByZXR1cm4gZGlzdCgqdXJiZyk7CisgIH0KK307CisKK30gIC8vIG5h
bWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAg
Ly8gQUJTTF9SQU5ET01fSU5URVJOQUxfRElTVFJJQlVUSU9OX0NBTExFUl9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjZmZmIwZmI1MDRi
ZThjMWEwMzdhMzIxZGIzYTU4MWUxN2M5ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsLmgKQEAgLTAsMCArMSwyNjAgQEAKKy8vIENv
cHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9N
X0lOVEVSTkFMX0RJU1RSSUJVVElPTl9JTVBMX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVS
TkFMX0RJU1RSSUJVVElPTl9JTVBMX0hfCisKKy8vIFRoaXMgZmlsZSBjb250YWlucyBzb21lIGlt
cGxlbWVudGF0aW9uIGRldGFpbHMgd2hpY2ggYXJlIHVzZWQgYnkgb25lIG9yIG1vcmUKKy8vIG9m
IHRoZSBhYnNsIHJhbmRvbSBudW1iZXIgZGlzdHJpYnV0aW9ucy4KKworI2luY2x1ZGUgPGNmbG9h
dD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0
cmluZz4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpZiAo
ZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KSkgJiYgZGVmaW5lZChfTV9JQTY0KQor
I2luY2x1ZGUgPGludHJpbi5oPiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGVfb3JkZXIpCisjcHJh
Z21hIGludHJpbnNpYyhfdW11bDEyOCkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VU0VfVU1VTDEy
OCAxCisjZW5kaWYKKworI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvaW50ZXJuYWwvYml0cy5oIgorI2luY2x1ZGUgImFic2wvbnVtZXJpYy9pbnQxMjgu
aCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0bWF0aC5oIgorI2luY2x1ZGUg
ImFic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0cy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gQ3JlYXRlcyBhIGRvdWJsZSBmcm9tIGBiaXRz
YCwgd2l0aCB0aGUgdGVtcGxhdGUgZmllbGRzIGNvbnRyb2xsaW5nIHRoZQorLy8gb3V0cHV0Lgor
Ly8KKy8vIFJhbmRVNjRUbyBpcyBib3RoIG1vcmUgZWZmaWNpZW50IGFuZCBnZW5lcmF0ZXMgbW9y
ZSB1bmlxdWUgdmFsdWVzIGluIHRoZQorLy8gcmVzdWx0IGludGVydmFsIHRoYW4ga25vd24gaW1w
bGVtZW50YXRpb25zIG9mIHN0ZDo6Z2VuZXJhdGVfY2Fub25pY2FsKCkuCisvLworLy8gVGhlIGBT
aWduZWRgIHBhcmFtZXRlciBjb250cm9scyB3aGV0aGVyIHBvc2l0aXZlLCBuZWdhdGl2ZSwgb3Ig
Ym90aCBhcmUKKy8vIHJldHVybmVkICh0aHVzIGFmZmVjdGluZyB0aGUgb3V0cHV0IGludGVydmFs
KS4KKy8vICAgV2hlbiBTaWduZWQgPT0gU2lnbmVkVmFsdWVULCByYW5nZSBpcyBVKC0xLCAxKQor
Ly8gICBXaGVuIFNpZ25lZCA9PSBOZWdhdGl2ZVZhbHVlVCwgcmFuZ2UgaXMgVSgtMSwgMCkKKy8v
ICAgV2hlbiBTaWduZWQgPT0gUG9zaXRpdmVWYWx1ZVQsIHJhbmdlIGlzIFUoMCwgMSkKKy8vCisv
LyBXaGVuIHRoZSBgSW5jbHVkZVplcm9gIHBhcmFtZXRlciBpcyB0cnVlLCB0aGUgZnVuY3Rpb24g
bWF5IHJldHVybiAwIGZvciBzb21lCisvLyBpbnB1dHMsIG90aGVyd2lzZSBpdCBuZXZlciByZXR1
cm5zIDAuCisvLworLy8gVGhlIGBFeHBvbmVudEJpYXNgIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRo
ZSBzY2FsZSBvZiB0aGUgb3V0cHV0IHJhbmdlIGJ5CisvLyBhZGp1c3RpbmcgdGhlIGV4cG9uZW50
LgorLy8KKy8vIFdoZW4gYSB2YWx1ZSBpbiBVKDAsMSkgaXMgcmVxdWlyZWQsIHVzZToKKy8vICAg
UmFuZFU2NFRvRG91YmxlPFBvc2l0aXZlVmFsdWVULCB0cnVlLCAwPigpOworLy8KKy8vIFdoZW4g
YSB2YWx1ZSBpbiBVKC0xLDEpIGlzIHJlcXVpcmVkLCB1c2U6CisvLyAgIFJhbmRVNjRUb0RvdWJs
ZTxTaWduZWRWYWx1ZVQsIGZhbHNlLCAwPigpID0+IFUoLTEsIDEpCisvLyBUaGlzIGdlbmVyYXRl
cyBtb3JlIGRpc3RpbmN0IHZhbHVlcyB0aGFuIHRoZSBtYXRoZW1hdGljYWxseSBlcXVpdmFsZW50
CisvLyBleHByZXNzaW9uIGBVKDAsIDEpICogMi4wIC0gMS4wYCwgYW5kIGlzIHByZWZlcmFibGUu
CisvLworLy8gU2NhbGluZyB0aGUgcmVzdWx0IGJ5IHBvd2VycyBvZiAyIChhbmQgYXZvaWRpbmcg
YSBtdWx0aXBseSkgaXMgYWxzbyBwb3NzaWJsZToKKy8vICAgUmFuZFU2NFRvRG91YmxlPFBvc2l0
aXZlVmFsdWVULCBmYWxzZSwgMT4oKTsgID0+IFUoMCwgMikKKy8vICAgUmFuZFU2NFRvRG91Ymxl
PFBvc2l0aXZlVmFsdWVULCBmYWxzZSwgLTE+KCk7ICA9PiBVKDAsIDAuNSkKKy8vCisKKy8vIFRy
aXN0YXRlIHR5cGVzIGNvbnRyb2xsaW5nIHRoZSBvdXRwdXQuCitzdHJ1Y3QgUG9zaXRpdmVWYWx1
ZVQge307CitzdHJ1Y3QgTmVnYXRpdmVWYWx1ZVQge307CitzdHJ1Y3QgU2lnbmVkVmFsdWVUIHt9
OworCisvLyBSYW5kVTY0VG9Eb3VibGUgaXMgdGhlIGRvdWJsZS1yZXN1bHQgdmFyaWFudCBvZiBS
YW5kVTY0VG8sIGRlc2NyaWJlZCBhYm92ZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBTaWduZWQsIGJv
b2wgSW5jbHVkZVplcm8sIGludCBFeHBvbmVudEJpYXMgPSAwPgoraW5saW5lIGRvdWJsZSBSYW5k
VTY0VG9Eb3VibGUodWludDY0X3QgYml0cykgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxTaWduZWQsIFBvc2l0aXZlVmFsdWVUPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAg
c3RkOjppc19zYW1lPFNpZ25lZCwgTmVnYXRpdmVWYWx1ZVQ+Ojp2YWx1ZSB8fAorICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmlzX3NhbWU8U2lnbmVkLCBTaWduZWRWYWx1ZVQ+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAiIik7CisKKyAgLy8gTWF5YmUgdXNlIHRoZSBsZWZ0LW1vc3QgYml0IGZv
ciBhIHNpZ24gYml0LgorICB1aW50NjRfdCBzaWduID0gc3RkOjppc19zYW1lPFNpZ25lZCwgTmVn
YXRpdmVWYWx1ZVQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgID8gMHg4MDAwMDAwMDAw
MDAwMDAwdWxsCisgICAgICAgICAgICAgICAgICAgICAgOiAwOyAgLy8gU2lnbiBiaXRzLgorCisg
IGlmIChzdGQ6OmlzX3NhbWU8U2lnbmVkLCBTaWduZWRWYWx1ZVQ+Ojp2YWx1ZSkgeworICAgIHNp
Z24gPSBiaXRzICYgMHg4MDAwMDAwMDAwMDAwMDAwdWxsOworICAgIGJpdHMgPSBiaXRzICYgMHg3
RkZGRkZGRkZGRkZGRkZGdWxsOworICB9CisgIGlmIChJbmNsdWRlWmVybykgeworICAgIGlmIChi
aXRzID09IDB1KSByZXR1cm4gMDsKKyAgfQorCisgIC8vIE51bWJlciBvZiBsZWFkaW5nIHplcm9z
IGlzIG1hcHBlZCB0byB0aGUgZXhwb25lbnQ6IDJeLWNsegorICBpbnQgY2x6ID0gYmFzZV9pbnRl
cm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChiaXRzKTsKKyAgLy8gU2hpZnQgbnVtYmVyIGxlZnQg
dG8gZXJhc2UgbGVhZGluZyB6ZXJvcy4KKyAgYml0cyA8PD0gSW5jbHVkZVplcm8gPyBjbHogOiAo
Y2x6ICYgNjMpOworCisgIC8vIFNoaWZ0IG51bWJlciByaWdodCB0byByZW1vdmUgYml0cyB0aGF0
IG92ZXJmbG93IGRvdWJsZSBtYW50aXNzYS4gIFRoZQorICAvLyBkaXJlY3Rpb24gb2YgdGhlIHNo
aWZ0IGRlcGVuZHMgb24gYGNsemAuCisgIGJpdHMgPj49ICg2NCAtIERCTF9NQU5UX0RJRyk7CisK
KyAgLy8gQ29tcHV0ZSBJRUVFIDc1NCBkb3VibGUgZXhwb25lbnQuCisgIC8vIEluIHRoZSBTaWdu
ZWQgY2FzZSwgYml0cyBpcyBhIDYzLWJpdCBudW1iZXIgd2l0aCBhIDAgbXNiLiAgQWRqdXN0IHRo
ZQorICAvLyBleHBvbmVudCB0byBhY2NvdW50IGZvciB0aGF0LgorICBjb25zdCB1aW50NjRfdCBl
eHAgPQorICAgICAgKHN0ZDo6aXNfc2FtZTxTaWduZWQsIFNpZ25lZFZhbHVlVD46OnZhbHVlID8g
MTAyM1UgOiAxMDIyVSkgKworICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEV4cG9uZW50Qmlh
cyAtIGNseik7CisgIGNvbnN0ZXhwciBpbnQga0V4cCA9IERCTF9NQU5UX0RJRyAtIDE7CisgIC8v
IENvbnN0cnVjdCBJRUVFIDc1NCBkb3VibGUgZnJvbSBleHBvbmVudCBhbmQgbWFudGlzc2EuCisg
IGNvbnN0IHVpbnQ2NF90IHZhbCA9IHNpZ24gfCAoZXhwIDw8IGtFeHApIHwgKGJpdHMgJiAoKDFV
TEwgPDwga0V4cCkgLSAxVSkpOworCisgIGRvdWJsZSByZXM7CisgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKHJlcykgPT0gc2l6ZW9mKHZhbCksICJkb3VibGUgaXMgbm90IDY0IGJpdCIpOworICAvLyBN
ZW1jcHkgdmFsdWUgZnJvbSAidmFsIiB0byAicmVzIiB0byBhdm9pZCBhbGlhc2luZyBwcm9ibGVt
cy4gIEFzc3VtZXMgdGhhdAorICAvLyBlbmRpYW4tbmVzcyBpcyBzYW1lIGZvciBkb3VibGUgYW5k
IHVpbnQ2NF90LgorICBzdGQ6Om1lbWNweSgmcmVzLCAmdmFsLCBzaXplb2YocmVzKSk7CisKKyAg
cmV0dXJuIHJlczsKK30KKworLy8gUmFuZFU2NFRvRmxvYXQgaXMgdGhlIGZsb2F0LXJlc3VsdCB2
YXJpYW50IG9mIFJhbmRVNjRUbywgZGVzY3JpYmVkIGFib3ZlLgordGVtcGxhdGUgPHR5cGVuYW1l
IFNpZ25lZCwgYm9vbCBJbmNsdWRlWmVybywgaW50IEV4cG9uZW50QmlhcyA9IDA+CitpbmxpbmUg
ZmxvYXQgUmFuZFU2NFRvRmxvYXQodWludDY0X3QgYml0cykgeworICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxTaWduZWQsIFBvc2l0aXZlVmFsdWVUPjo6dmFsdWUgfHwKKyAgICAgICAgICAg
ICAgICAgICAgc3RkOjppc19zYW1lPFNpZ25lZCwgTmVnYXRpdmVWYWx1ZVQ+Ojp2YWx1ZSB8fAor
ICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8U2lnbmVkLCBTaWduZWRWYWx1ZVQ+Ojp2
YWx1ZSwKKyAgICAgICAgICAgICAgICAiIik7CisKKyAgLy8gTWF5YmUgdXNlIHRoZSBsZWZ0LW1v
c3QgYml0IGZvciBhIHNpZ24gYml0LgorICB1aW50NjRfdCBzaWduID0gc3RkOjppc19zYW1lPFNp
Z25lZCwgTmVnYXRpdmVWYWx1ZVQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgID8gMHg4
MDAwMDAwMHVsCisgICAgICAgICAgICAgICAgICAgICAgOiAwOyAgLy8gU2lnbiBiaXRzLgorCisg
IGlmIChzdGQ6OmlzX3NhbWU8U2lnbmVkLCBTaWduZWRWYWx1ZVQ+Ojp2YWx1ZSkgeworICAgIHVp
bnQ2NF90IGEgPSBiaXRzICYgMHg4MDAwMDAwMDAwMDAwMDAwdWxsOworICAgIHNpZ24gPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oYSA+PiAzMik7CisgICAgYml0cyA9IGJpdHMgJiAweDdGRkZGRkZG
RkZGRkZGRkZ1bGw7CisgIH0KKyAgaWYgKEluY2x1ZGVaZXJvKSB7CisgICAgaWYgKGJpdHMgPT0g
MHUpIHJldHVybiAwOworICB9CisKKyAgLy8gTnVtYmVyIG9mIGxlYWRpbmcgemVyb3MgaXMgbWFw
cGVkIHRvIHRoZSBleHBvbmVudDogMl4tY2x6CisgIGludCBjbHogPSBiYXNlX2ludGVybmFsOjpD
b3VudExlYWRpbmdaZXJvczY0KGJpdHMpOworICAvLyBTaGlmdCBudW1iZXIgbGVmdCB0byBlcmFz
ZSBsZWFkaW5nIHplcm9zLgorICBiaXRzIDw8PSBJbmNsdWRlWmVybyA/IGNseiA6IChjbHogJiA2
Myk7CisgIC8vIFNoaWZ0IG51bWJlciByaWdodCB0byByZW1vdmUgYml0cyB0aGF0IG92ZXJmbG93
IGRvdWJsZSBtYW50aXNzYS4gIFRoZQorICAvLyBkaXJlY3Rpb24gb2YgdGhlIHNoaWZ0IGRlcGVu
ZHMgb24gYGNsemAuCisgIGJpdHMgPj49ICg2NCAtIEZMVF9NQU5UX0RJRyk7CisKKyAgLy8gQ29u
c3RydWN0IElFRUUgNzU0IGZsb2F0IGV4cG9uZW50LgorICAvLyBJbiB0aGUgU2lnbmVkIGNhc2Us
IGJpdHMgaXMgYSA2My1iaXQgbnVtYmVyIHdpdGggYSAwIG1zYi4gIEFkanVzdCB0aGUKKyAgLy8g
ZXhwb25lbnQgdG8gYWNjb3VudCBmb3IgdGhhdC4KKyAgY29uc3QgdWludDMyX3QgZXhwID0KKyAg
ICAgIChzdGQ6OmlzX3NhbWU8U2lnbmVkLCBTaWduZWRWYWx1ZVQ+Ojp2YWx1ZSA/IDEyN1UgOiAx
MjZVKSArCisgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oRXhwb25lbnRCaWFzIC0gY2x6KTsK
KyAgY29uc3RleHByIGludCBrRXhwID0gRkxUX01BTlRfRElHIC0gMTsKKyAgY29uc3QgdWludDMy
X3QgdmFsID0gc2lnbiB8IChleHAgPDwga0V4cCkgfCAoYml0cyAmICgoMVUgPDwga0V4cCkgLSAx
VSkpOworCisgIGZsb2F0IHJlczsKKyAgc3RhdGljX2Fzc2VydChzaXplb2YocmVzKSA9PSBzaXpl
b2YodmFsKSwgImZsb2F0IGlzIG5vdCAzMiBiaXQiKTsKKyAgLy8gQXNzdW1lcyB0aGF0IGVuZGlh
bi1uZXNzIGlzIHNhbWUgZm9yIGZsb2F0IGFuZCB1aW50MzJfdC4KKyAgc3RkOjptZW1jcHkoJnJl
cywgJnZhbCwgc2l6ZW9mKHJlcykpOworCisgIHJldHVybiByZXM7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBSZXN1bHQ+CitzdHJ1Y3QgUmFuZFU2NFRvUmVhbCB7CisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBTaWduZWQsIGJvb2wgSW5jbHVkZVplcm8sIGludCBFeHBvbmVudEJpYXMgPSAwPgorICBz
dGF0aWMgaW5saW5lIFJlc3VsdCBWYWx1ZSh1aW50NjRfdCBiaXRzKSB7CisgICAgcmV0dXJuIFJh
bmRVNjRUb0RvdWJsZTxTaWduZWQsIEluY2x1ZGVaZXJvLCBFeHBvbmVudEJpYXM+KGJpdHMpOwor
ICB9Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFJhbmRVNjRUb1JlYWw8ZmxvYXQ+IHsKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFNpZ25lZCwgYm9vbCBJbmNsdWRlWmVybywgaW50IEV4cG9uZW50
QmlhcyA9IDA+CisgIHN0YXRpYyBpbmxpbmUgZmxvYXQgVmFsdWUodWludDY0X3QgYml0cykgewor
ICAgIHJldHVybiBSYW5kVTY0VG9GbG9hdDxTaWduZWQsIEluY2x1ZGVaZXJvLCBFeHBvbmVudEJp
YXM+KGJpdHMpOworICB9Cit9OworCitpbmxpbmUgdWludDEyOCBNdWx0aXBseVU2NFRvVTEyOCh1
aW50NjRfdCBhLCB1aW50NjRfdCBiKSB7CisjaWYgZGVmaW5lZChBQlNMX0hBVkVfSU5UUklOU0lD
X0lOVDEyOCkKKyAgcmV0dXJuIHVpbnQxMjgoc3RhdGljX2Nhc3Q8X191aW50MTI4X3Q+KGEpICog
Yik7CisjZWxpZiBkZWZpbmVkKEFCU0xfSU5URVJOQUxfVVNFX1VNVUwxMjgpCisgIC8vIHVpbnQ2
NF90ICogdWludDY0X3QgPT4gdWludDEyOCBtdWx0aXBseSB1c2luZyBpbXVsIGludHJpbnNpYyBv
biBNU1ZDLgorICB1aW50NjRfdCBoaWdoID0gMDsKKyAgY29uc3QgdWludDY0X3QgbG93ID0gX3Vt
dWwxMjgoYSwgYiwgJmhpZ2gpOworICByZXR1cm4gYWJzbDo6TWFrZVVpbnQxMjgoaGlnaCwgbG93
KTsKKyNlbHNlCisgIC8vIHVpbnQxMjgoYSkgKiB1aW50MTI4KGIpIGluIGVtdWxhdGVkIG1vZGUg
Y29tcHV0ZXMgYSBmdWxsIDEyOC1iaXQgeCAxMjgtYml0CisgIC8vIG11bHRpcGx5LiAgSG93ZXZl
ciB0aGVyZSBhcmUgbWFueSBjYXNlcyB3aGVyZSB0aGF0IGlzIG5vdCBuZWNlc3NhcnksIGFuZCBp
dAorICAvLyBpcyBvbmx5IG5lY2Vzc2FyeSB0byBzdXBwb3J0IGEgNjQtYml0IHggNjQtYml0ID0g
MTI4LWJpdCBtdWx0aXBseS4gIFRoaXMgaXMKKyAgLy8gZm9yIHRob3NlIGNhc2VzLgorICBjb25z
dCB1aW50NjRfdCBhMDAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYSk7CisgIGNvbnN0IHVpbnQ2
NF90IGEzMiA9IGEgPj4gMzI7CisgIGNvbnN0IHVpbnQ2NF90IGIwMCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PihiKTsKKyAgY29uc3QgdWludDY0X3QgYjMyID0gYiA+PiAzMjsKKworICBjb25zdCB1
aW50NjRfdCBjMDAgPSBhMDAgKiBiMDA7CisgIGNvbnN0IHVpbnQ2NF90IGMzMmEgPSBhMDAgKiBi
MzI7CisgIGNvbnN0IHVpbnQ2NF90IGMzMmIgPSBhMzIgKiBiMDA7CisgIGNvbnN0IHVpbnQ2NF90
IGM2NCA9IGEzMiAqIGIzMjsKKworICBjb25zdCB1aW50MzJfdCBjYXJyeSA9CisgICAgICBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oKChjMDAgPj4gMzIpICsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGMz
MmEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGMzMmIpKSA+PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyKTsKKworICByZXR1cm4g
YWJzbDo6TWFrZVVpbnQxMjgoYzY0ICsgKGMzMmEgPj4gMzIpICsgKGMzMmIgPj4gMzIpICsgY2Fy
cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjMDAgKyAoYzMyYSA8PCAzMikgKyAoYzMy
YiA8PCAzMikpOworI2VuZGlmCit9CisKKy8vIHdpZGVfbXVsdGlwbHk8VD4gbXVsdGlwbGllcyB0
d28gTi1iaXQgdmFsdWVzIHRvIGEgMk4tYml0IHJlc3VsdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBV
SW50VHlwZT4KK3N0cnVjdCB3aWRlX211bHRpcGx5IHsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3Qga04gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFVJbnRUeXBlPjo6ZGlnaXRzOworICB1c2luZyBp
bnB1dF90eXBlID0gVUludFR5cGU7CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgcmFu
ZG9tX2ludGVybmFsOjp1bnNpZ25lZF9iaXRzPGtOICogMj46OnR5cGU7CisKKyAgc3RhdGljIHJl
c3VsdF90eXBlIG11bHRpcGx5KGlucHV0X3R5cGUgYSwgaW5wdXRfdHlwZSBiKSB7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPihhKSAqIGI7CisgIH0KKworICBzdGF0aWMgaW5w
dXRfdHlwZSBoaShyZXN1bHRfdHlwZSByKSB7IHJldHVybiByID4+IGtOOyB9CisgIHN0YXRpYyBp
bnB1dF90eXBlIGxvKHJlc3VsdF90eXBlIHIpIHsgcmV0dXJuIHI7IH0KKworICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8VUludFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAi
Q2xhc3MtdGVtcGxhdGUgd2lkZV9tdWx0aXBseTw+IGFyZ3VtZW50IG11c3QgYmUgdW5zaWduZWQu
Iik7Cit9OworCisjaWZuZGVmIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4Cit0ZW1wbGF0ZSA8
Pgorc3RydWN0IHdpZGVfbXVsdGlwbHk8dWludDY0X3Q+IHsKKyAgdXNpbmcgaW5wdXRfdHlwZSA9
IHVpbnQ2NF90OworICB1c2luZyByZXN1bHRfdHlwZSA9IHVpbnQxMjg7CisKKyAgc3RhdGljIHJl
c3VsdF90eXBlIG11bHRpcGx5KHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpIHsKKyAgICByZXR1cm4g
TXVsdGlwbHlVNjRUb1UxMjgoYSwgYik7CisgIH0KKworICBzdGF0aWMgdWludDY0X3QgaGkocmVz
dWx0X3R5cGUgcikgeyByZXR1cm4gVWludDEyOEhpZ2g2NChyKTsgfQorICBzdGF0aWMgdWludDY0
X3QgbG8ocmVzdWx0X3R5cGUgcikgeyByZXR1cm4gVWludDEyOExvdzY0KHIpOyB9Cit9OworI2Vu
ZGlmCisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfRElTVFJJQlVUSU9OX0lNUExf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25faW1wbF90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsX3Rlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDllN2EzMThjY2M1NGNjZmNiMjg0NThmNjExNmE1Mzk5ZWU0YzA5YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25faW1wbF90
ZXN0LmNjCkBAIC0wLDAgKzEsNTA2IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9p
bXBsLmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9p
bnRlcm5hbC9iaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9mbGFnLmgiCisjaW5jbHVkZSAi
YWJzbC9udW1lcmljL2ludDEyOC5oIgorCitBQlNMX0ZMQUcoaW50NjRfdCwgYWJzbF9yYW5kb21f
dGVzdF90cmlhbHMsIDUwMDAwLAorICAgICAgICAgICJOdW1iZXIgb2YgdHJpYWxzIGZvciB0aGUg
cHJvYmFiaWxpdHkgdGVzdHMuIik7CisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6TmVn
YXRpdmVWYWx1ZVQ7Cit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlBvc2l0aXZlVmFsdWVU
OwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSYW5kVTY0VG9Eb3VibGU7Cit1c2luZyBh
YnNsOjpyYW5kb21faW50ZXJuYWw6OlJhbmRVNjRUb0Zsb2F0OwordXNpbmcgYWJzbDo6cmFuZG9t
X2ludGVybmFsOjpTaWduZWRWYWx1ZVQ7CisKK25hbWVzcGFjZSB7CisKK1RFU1QoRGlzdHJpYnV0
aW9uSW1wbFRlc3QsIFU2NFRvRmxvYXRfUG9zaXRpdmVfTm9aZXJvX1Rlc3QpIHsKKyAgYXV0byBU
b0Zsb2F0ID0gW10odWludDY0X3QgYSkgeworICAgIHJldHVybiBSYW5kVTY0VG9GbG9hdDxQb3Np
dGl2ZVZhbHVlVCwgZmFsc2U+KGEpOworICB9OworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDAwMDAw
MDAwMDAwMDAwMDApLCAyLjcxMDUwNTQzMWUtMjBmKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHgw
MDAwMDAwMDAwMDAwMDAxKSwgNS40MjEwMTA4NjJlLTIwZik7CisgIEVYUEVDVF9FUShUb0Zsb2F0
KDB4ODAwMDAwMDAwMDAwMDAwMCksIDAuNSk7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4RkZGRkZG
RkZGRkZGRkZGRiksIDAuOTk5OTk5OTQwNGYpOworfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxU
ZXN0LCBVNjRUb0Zsb2F0X1Bvc2l0aXZlX1plcm9fVGVzdCkgeworICBhdXRvIFRvRmxvYXQgPSBb
XSh1aW50NjRfdCBhKSB7CisgICAgcmV0dXJuIFJhbmRVNjRUb0Zsb2F0PFBvc2l0aXZlVmFsdWVU
LCB0cnVlPihhKTsKKyAgfTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAw
KSwgMC4wKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAxKSwgNS40MjEw
MTA4NjJlLTIwZik7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4ODAwMDAwMDAwMDAwMDAwMCksIDAu
NSk7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4RkZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5OTQw
NGYpOworfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRUb0Zsb2F0X05lZ2F0aXZl
X05vWmVyb19UZXN0KSB7CisgIGF1dG8gVG9GbG9hdCA9IFtdKHVpbnQ2NF90IGEpIHsKKyAgICBy
ZXR1cm4gUmFuZFU2NFRvRmxvYXQ8TmVnYXRpdmVWYWx1ZVQsIGZhbHNlPihhKTsKKyAgfTsKKyAg
RVhQRUNUX0VRKFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAwKSwgLTIuNzEwNTA1NDMxZS0yMGYp
OworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDAwMDAwMDAwMDAwMDAwMDEpLCAtNS40MjEwMTA4NjJl
LTIwZik7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4ODAwMDAwMDAwMDAwMDAwMCksIC0wLjUpOwor
ICBFWFBFQ1RfRVEoVG9GbG9hdCgweEZGRkZGRkZGRkZGRkZGRkYpLCAtMC45OTk5OTk5NDA0Zik7
Cit9CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1wbFRlc3QsIFU2NFRvRmxvYXRfU2lnbmVkX05vWmVy
b19UZXN0KSB7CisgIGF1dG8gVG9GbG9hdCA9IFtdKHVpbnQ2NF90IGEpIHsKKyAgICByZXR1cm4g
UmFuZFU2NFRvRmxvYXQ8U2lnbmVkVmFsdWVULCBmYWxzZT4oYSk7CisgIH07CisgIEVYUEVDVF9F
UShUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMCksIDUuNDIxMDEwODYyZS0yMGYpOworICBFWFBF
Q1RfRVEoVG9GbG9hdCgweDAwMDAwMDAwMDAwMDAwMDEpLCAxLjA4NDIwMjE3MmUtMTlmKTsKKyAg
RVhQRUNUX0VRKFRvRmxvYXQoMHg3RkZGRkZGRkZGRkZGRkZGKSwgMC45OTk5OTk5NDA0Zik7Cisg
IEVYUEVDVF9FUShUb0Zsb2F0KDB4ODAwMDAwMDAwMDAwMDAwMCksIC01LjQyMTAxMDg2MmUtMjBm
KTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHg4MDAwMDAwMDAwMDAwMDAxKSwgLTEuMDg0MjAyMTcy
ZS0xOWYpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweEZGRkZGRkZGRkZGRkZGRkYpLCAtMC45OTk5
OTk5NDA0Zik7Cit9CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1wbFRlc3QsIFU2NFRvRmxvYXRfU2ln
bmVkX1plcm9fVGVzdCkgeworICBhdXRvIFRvRmxvYXQgPSBbXSh1aW50NjRfdCBhKSB7CisgICAg
cmV0dXJuIFJhbmRVNjRUb0Zsb2F0PFNpZ25lZFZhbHVlVCwgdHJ1ZT4oYSk7CisgIH07CisgIEVY
UEVDVF9FUShUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMCksIDApOworICBFWFBFQ1RfRVEoVG9G
bG9hdCgweDAwMDAwMDAwMDAwMDAwMDEpLCAxLjA4NDIwMjE3MmUtMTlmKTsKKyAgRVhQRUNUX0VR
KFRvRmxvYXQoMHg3RkZGRkZGRkZGRkZGRkZGKSwgMC45OTk5OTk5NDA0Zik7CisgIEVYUEVDVF9F
UShUb0Zsb2F0KDB4ODAwMDAwMDAwMDAwMDAwMCksIDApOworICBFWFBFQ1RfRVEoVG9GbG9hdCgw
eDgwMDAwMDAwMDAwMDAwMDEpLCAtMS4wODQyMDIxNzJlLTE5Zik7CisgIEVYUEVDVF9FUShUb0Zs
b2F0KDB4RkZGRkZGRkZGRkZGRkZGRiksIC0wLjk5OTk5OTk0MDRmKTsKK30KKworVEVTVChEaXN0
cmlidXRpb25JbXBsVGVzdCwgVTY0VG9GbG9hdF9TaWduZWRfQmlhc19UZXN0KSB7CisgIGF1dG8g
VG9GbG9hdCA9IFtdKHVpbnQ2NF90IGEpIHsKKyAgICByZXR1cm4gUmFuZFU2NFRvRmxvYXQ8U2ln
bmVkVmFsdWVULCB0cnVlLCAxPihhKTsKKyAgfTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHgwMDAw
MDAwMDAwMDAwMDAwKSwgMCk7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAw
MSksIDIgKiAxLjA4NDIwMjE3MmUtMTlmKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHg3RkZGRkZG
RkZGRkZGRkZGKSwgMiAqIDAuOTk5OTk5OTQwNGYpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgw
MDAwMDAwMDAwMDAwMDApLCAwKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHg4MDAwMDAwMDAwMDAw
MDAxKSwgMiAqIC0xLjA4NDIwMjE3MmUtMTlmKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHhGRkZG
RkZGRkZGRkZGRkZGKSwgMiAqIC0wLjk5OTk5OTk0MDRmKTsKK30KKworVEVTVChEaXN0cmlidXRp
b25JbXBsVGVzdCwgVTY0VG9GbG9hdFRlc3QpIHsKKyAgYXV0byBUb0Zsb2F0ID0gW10odWludDY0
X3QgYSkgLT4gZmxvYXQgeworICAgIHJldHVybiBSYW5kVTY0VG9GbG9hdDxQb3NpdGl2ZVZhbHVl
VCwgdHJ1ZT4oYSk7CisgIH07CisKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAw
MDAwKSwgMC4wZik7CisKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHg4MDAwMDAwMDAwMDAwMDAwKSwg
MC41Zik7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4ODAwMDAwMDAwMDAwMDAwMSksIDAuNWYpOwor
ICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgwMDAwMEZGRkZGRkZGRkYpLCAwLjVmKTsKKyAgRVhQRUNU
X0VRKFRvRmxvYXQoMHhGRkZGRkZGRkZGRkZGRkZGKSwgMC45OTk5OTk5NDA0Zik7CisKKyAgRVhQ
RUNUX0dUKFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAxKSwgMC4wZik7CisKKyAgRVhQRUNUX05F
KFRvRmxvYXQoMHg3RkZGRkYwMDAwMDAwMDAwKSwgVG9GbG9hdCgweDdGRkZGRUZGRkZGRkZGRkYp
KTsKKworICBFWFBFQ1RfTFQoVG9GbG9hdCgweEZGRkZGRkZGRkZGRkZGRkYpLCAxLjBmKTsKKyAg
aW50MzJfdCB0d29fdG9fMjQgPSAxIDw8IDI0OworICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oVG9GbG9hdCgweEZGRkZGRkZGRkZGRkZGRkYpICogdHdvX3RvXzI0KSwKKyAgICAgICAg
ICAgIHR3b190b18yNCAtIDEpOworICBFWFBFQ1RfTkUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVG9G
bG9hdCgweEZGRkZGRkZGRkZGRkZGRkYpICogdHdvX3RvXzI0ICogMiksCisgICAgICAgICAgICB0
d29fdG9fMjQgKiAyIC0gMSk7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4RkZGRkZGRkZGRkZGRkZG
RiksIFRvRmxvYXQoMHhGRkZGRkYwMDAwMDAwMDAwKSk7CisgIEVYUEVDVF9ORShUb0Zsb2F0KDB4
RkZGRkZGRkZGRkZGRkZGRiksIFRvRmxvYXQoMHhGRkZGRkVGRkZGRkZGRkZGKSk7CisgIEVYUEVD
VF9FUShUb0Zsb2F0KDB4N0ZGRkZGRkZGRkZGRkZGRiksIFRvRmxvYXQoMHg3RkZGRkY4MDAwMDAw
MDAwKSk7CisgIEVYUEVDVF9ORShUb0Zsb2F0KDB4N0ZGRkZGRkZGRkZGRkZGRiksIFRvRmxvYXQo
MHg3RkZGRkY3RkZGRkZGRkZGKSk7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4M0ZGRkZGRkZGRkZG
RkZGRiksIFRvRmxvYXQoMHgzRkZGRkZDMDAwMDAwMDAwKSk7CisgIEVYUEVDVF9ORShUb0Zsb2F0
KDB4M0ZGRkZGRkZGRkZGRkZGRiksIFRvRmxvYXQoMHgzRkZGRkZCRkZGRkZGRkZGKSk7CisKKyAg
Ly8gRm9yIHZhbHVlcyB3aGVyZSBldmVyeSBiaXQgY291bnRzLCB0aGUgdmFsdWVzIHNjYWxlIGFz
IG11bHRpcGxlcyBvZiB0aGUKKyAgLy8gaW5wdXQuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAw
OyArK2kpIHsKKyAgICBFWFBFQ1RfRVEoaSAqIFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAxKSwg
VG9GbG9hdChpKSk7CisgIH0KKworICAvLyBGb3IgZWFjaCBpOiB2YWx1ZSBnZW5lcmF0ZWQgZnJv
bSAoMSA8PCBpKS4KKyAgZmxvYXQgZXhwX3ZhbHVlc1s2NF07CisgIGV4cF92YWx1ZXNbNjNdID0g
MC41ZjsKKyAgZm9yIChpbnQgaSA9IDYyOyBpID49IDA7IC0taSkgZXhwX3ZhbHVlc1tpXSA9IDAu
NWYgKiBleHBfdmFsdWVzW2kgKyAxXTsKKyAgY29uc3RleHByIHVpbnQ2NF90IG9uZSA9IDE7Cisg
IGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7ICsraSkgeworICAgIEVYUEVDVF9FUShUb0Zsb2F0KG9u
ZSA8PCBpKSwgZXhwX3ZhbHVlc1tpXSk7CisgICAgZm9yIChpbnQgaiA9IDE7IGogPCBGTFRfTUFO
VF9ESUcgJiYgaSAtIGogPj0gMDsgKytqKSB7CisgICAgICBFWFBFQ1RfTkUoZXhwX3ZhbHVlc1tp
XSArIGV4cF92YWx1ZXNbaSAtIGpdLCBleHBfdmFsdWVzW2ldKTsKKyAgICAgIEVYUEVDVF9FUShU
b0Zsb2F0KChvbmUgPDwgaSkgKyAob25lIDw8IChpIC0gaikpKSwKKyAgICAgICAgICAgICAgICBl
eHBfdmFsdWVzW2ldICsgZXhwX3ZhbHVlc1tpIC0gal0pOworICAgIH0KKyAgICBmb3IgKGludCBq
ID0gRkxUX01BTlRfRElHOyBpIC0gaiA+PSAwOyArK2opIHsKKyAgICAgIEVYUEVDVF9FUShleHBf
dmFsdWVzW2ldICsgZXhwX3ZhbHVlc1tpIC0gal0sIGV4cF92YWx1ZXNbaV0pOworICAgICAgRVhQ
RUNUX0VRKFRvRmxvYXQoKG9uZSA8PCBpKSArIChvbmUgPDwgKGkgLSBqKSkpLCBleHBfdmFsdWVz
W2ldKTsKKyAgICB9CisgIH0KK30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwgVTY0VG9E
b3VibGVfUG9zaXRpdmVfTm9aZXJvX1Rlc3QpIHsKKyAgYXV0byBUb0RvdWJsZSA9IFtdKHVpbnQ2
NF90IGEpIHsKKyAgICByZXR1cm4gUmFuZFU2NFRvRG91YmxlPFBvc2l0aXZlVmFsdWVULCBmYWxz
ZT4oYSk7CisgIH07CisKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMCks
IDIuNzEwNTA1NDMxMjEzNzYxMDg1ZS0yMCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAw
MDAwMDAwMDAwMDEpLCA1LjQyMTAxMDg2MjQyNzUyMjE3MDA0ZS0yMCk7CisgIEVYUEVDVF9FUShU
b0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDIpLCAxLjA4NDIwMjE3MjQ4NTUwNDQzNGUtMTkpOwor
ICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAwKSwgMC41KTsKKyAgRVhQRUNU
X0VRKFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5OTk5OTk5OTk5ODg4OTc4
KTsKK30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwgVTY0VG9Eb3VibGVfUG9zaXRpdmVf
WmVyb19UZXN0KSB7CisgIGF1dG8gVG9Eb3VibGUgPSBbXSh1aW50NjRfdCBhKSB7CisgICAgcmV0
dXJuIFJhbmRVNjRUb0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgdHJ1ZT4oYSk7CisgIH07CisKKyAg
RVhQRUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMCksIDAuMCk7CisgIEVYUEVDVF9F
UShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDEpLCA1LjQyMTAxMDg2MjQyNzUyMjE3MDA0ZS0y
MCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDgwMDAwMDAwMDAwMDAwMDApLCAwLjUpOworICBF
WFBFQ1RfRVEoVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZGKSwgMC45OTk5OTk5OTk5OTk5OTk4
ODg5NzgpOworfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRUb0RvdWJsZV9OZWdh
dGl2ZV9Ob1plcm9fVGVzdCkgeworICBhdXRvIFRvRG91YmxlID0gW10odWludDY0X3QgYSkgewor
ICAgIHJldHVybiBSYW5kVTY0VG9Eb3VibGU8TmVnYXRpdmVWYWx1ZVQsIGZhbHNlPihhKTsKKyAg
fTsKKworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAwKSwgLTIuNzEwNTA1
NDMxMjEzNzYxMDg1ZS0yMCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAw
MDEpLCAtNS40MjEwMTA4NjI0Mjc1MjIxNzAwNGUtMjApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUo
MHgwMDAwMDAwMDAwMDAwMDAyKSwgLTEuMDg0MjAyMTcyNDg1NTA0NDM0ZS0xOSk7CisgIEVYUEVD
VF9FUShUb0RvdWJsZSgweDgwMDAwMDAwMDAwMDAwMDApLCAtMC41KTsKKyAgRVhQRUNUX0VRKFRv
RG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGRiksIC0wLjk5OTk5OTk5OTk5OTk5OTg4ODk3OCk7Cit9
CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1wbFRlc3QsIFU2NFRvRG91YmxlX1NpZ25lZF9Ob1plcm9f
VGVzdCkgeworICBhdXRvIFRvRG91YmxlID0gW10odWludDY0X3QgYSkgeworICAgIHJldHVybiBS
YW5kVTY0VG9Eb3VibGU8U2lnbmVkVmFsdWVULCBmYWxzZT4oYSk7CisgIH07CisKKyAgRVhQRUNU
X0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMCksIDUuNDIxMDEwODYyNDI3NTIyMTcwMDRl
LTIwKTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMSksIDEuMDg0MjAy
MTcyNDg1NTA0NDM0ZS0xOSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkZG
RkYpLCAwLjk5OTk5OTk5OTk5OTk5OTg4ODk3OCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDgw
MDAwMDAwMDAwMDAwMDApLCAtNS40MjEwMTA4NjI0Mjc1MjIxNzAwNGUtMjApOworICBFWFBFQ1Rf
RVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAxKSwgLTEuMDg0MjAyMTcyNDg1NTA0NDM0ZS0x
OSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZGRkYpLCAtMC45OTk5OTk5
OTk5OTk5OTk4ODg5NzgpOworfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRUb0Rv
dWJsZV9TaWduZWRfWmVyb19UZXN0KSB7CisgIGF1dG8gVG9Eb3VibGUgPSBbXSh1aW50NjRfdCBh
KSB7CisgICAgcmV0dXJuIFJhbmRVNjRUb0RvdWJsZTxTaWduZWRWYWx1ZVQsIHRydWU+KGEpOwor
ICB9OworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAwKSwgMCk7CisgIEVY
UEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDEpLCAxLjA4NDIwMjE3MjQ4NTUwNDQz
NGUtMTkpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg3RkZGRkZGRkZGRkZGRkZGKSwgMC45OTk5
OTk5OTk5OTk5OTk4ODg5NzgpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAw
MDAwKSwgMCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDgwMDAwMDAwMDAwMDAwMDEpLCAtMS4w
ODQyMDIxNzI0ODU1MDQ0MzRlLTE5KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4RkZGRkZGRkZG
RkZGRkZGRiksIC0wLjk5OTk5OTk5OTk5OTk5OTg4ODk3OCk7Cit9CisKK1RFU1QoRGlzdHJpYnV0
aW9uSW1wbFRlc3QsIFU2NFRvRG91YmxlX1NpZ25lZF9CaWFzX1Rlc3QpIHsKKyAgYXV0byBUb0Rv
dWJsZSA9IFtdKHVpbnQ2NF90IGEpIHsKKyAgICByZXR1cm4gUmFuZFU2NFRvRG91YmxlPFNpZ25l
ZFZhbHVlVCwgdHJ1ZSwgLTE+KGEpOworICB9OworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAw
MDAwMDAwMDAwMDAwKSwgMCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAw
MDEpLCAxLjA4NDIwMjE3MjQ4NTUwNDQzNGUtMTkgLyAyKTsKKyAgRVhQRUNUX0VRKFRvRG91Ymxl
KDB4N0ZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5OTk5OTk5OTk5ODg4OTc4IC8gMik7CisgIEVY
UEVDVF9FUShUb0RvdWJsZSgweDgwMDAwMDAwMDAwMDAwMDApLCAwKTsKKyAgRVhQRUNUX0VRKFRv
RG91YmxlKDB4ODAwMDAwMDAwMDAwMDAwMSksIC0xLjA4NDIwMjE3MjQ4NTUwNDQzNGUtMTkgLyAy
KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGRiksIC0wLjk5OTk5OTk5
OTk5OTk5OTg4ODk3OCAvIDIpOworfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRU
b0RvdWJsZVRlc3QpIHsKKyAgYXV0byBUb0RvdWJsZSA9IFtdKHVpbnQ2NF90IGEpIHsKKyAgICBy
ZXR1cm4gUmFuZFU2NFRvRG91YmxlPFBvc2l0aXZlVmFsdWVULCB0cnVlPihhKTsKKyAgfTsKKwor
ICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAwKSwgMC4wKTsKKyAgRVhQRUNU
X0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMCksIDAuMCk7CisKKyAgRVhQRUNUX0VRKFRv
RG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMSksIDUuNDIxMDEwODYyNDI3NTIyMTcwMDRlLTIwKTsK
KyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4N2ZmZmZmZmZmZmZmZmZlZiksIDAuNDk5OTk5OTk5OTk5
OTk5OTQ0NDg5KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4ODAwMDAwMDAwMDAwMDAwMCksIDAu
NSk7CisKKyAgLy8gRm9yIHZhbHVlcyA+IDAuNSwgUmFuZFU2NFRvRG91YmxlIGRpc2NhcmRzIHVw
IHRvIDExIGJpdHMuICg2NC01MykuCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDgwMDAwMDAwMDAw
MDAwMDEpLCAwLjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwN0ZGKSwg
MC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5
OTk5OTk5OTk5ODg4OTc4KTsKKyAgRVhQRUNUX05FKFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRjgw
MCksIFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRjdGRikpOworCisgIEVYUEVDVF9MVChUb0RvdWJs
ZSgweEZGRkZGRkZGRkZGRkZGRkYpLCAxLjApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhGRkZG
RkZGRkZGRkZGRkZGKSwgVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGODAwKSk7CisgIEVYUEVDVF9O
RShUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZGRkYpLCBUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkY3
RkYpKTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRkZGRiksIFRvRG91Ymxl
KDB4N0ZGRkZGRkZGRkZGRkMwMCkpOworICBFWFBFQ1RfTkUoVG9Eb3VibGUoMHg3RkZGRkZGRkZG
RkZGRkZGKSwgVG9Eb3VibGUoMHg3RkZGRkZGRkZGRkZGQkZGKSk7CisgIEVYUEVDVF9FUShUb0Rv
dWJsZSgweDNGRkZGRkZGRkZGRkZGRkYpLCBUb0RvdWJsZSgweDNGRkZGRkZGRkZGRkZFMDApKTsK
KyAgRVhQRUNUX05FKFRvRG91YmxlKDB4M0ZGRkZGRkZGRkZGRkZGRiksIFRvRG91YmxlKDB4M0ZG
RkZGRkZGRkZGRkRGRikpOworCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDEwMDAwMDAwMDAwMDAw
MDEpLCAwLjA2MjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgyMDAwMDAwMDAwMDAwMDAxKSwg
MC4xMjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgzMDAwMDAwMDAwMDAwMDAxKSwgMC4xODc1
KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4NDAwMDAwMDAwMDAwMDAwMSksIDAuMjUpOworICBF
WFBFQ1RfRVEoVG9Eb3VibGUoMHg1MDAwMDAwMDAwMDAwMDAxKSwgMC4zMTI1KTsKKyAgRVhQRUNU
X0VRKFRvRG91YmxlKDB4NjAwMDAwMDAwMDAwMDAwMSksIDAuMzc1KTsKKyAgRVhQRUNUX0VRKFRv
RG91YmxlKDB4NzAwMDAwMDAwMDAwMDAwMSksIDAuNDM3NSk7CisgIEVYUEVDVF9FUShUb0RvdWJs
ZSgweDgwMDAwMDAwMDAwMDAwMDEpLCAwLjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg5MDAw
MDAwMDAwMDAwMDAxKSwgMC41NjI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4YTAwMDAwMDAw
MDAwMDAwMSksIDAuNjI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4YjAwMDAwMDAwMDAwMDAw
MSksIDAuNjg3NSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweGMwMDAwMDAwMDAwMDAwMDEpLCAw
Ljc1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4ZDAwMDAwMDAwMDAwMDAwMSksIDAuODEyNSk7
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweGUwMDAwMDAwMDAwMDAwMDEpLCAwLjg3NSk7CisgIEVY
UEVDVF9FUShUb0RvdWJsZSgweGYwMDAwMDAwMDAwMDAwMDEpLCAwLjkzNzUpOworCisgIC8vIExh
cmdlIHBvd2VycyBvZiAyLgorICBpbnQ2NF90IHR3b190b181MyA9IGludDY0X3R7MX0gPDwgNTM7
CisgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ2NF90PihUb0RvdWJsZSgweEZGRkZGRkZGRkZG
RkZGRkYpICogdHdvX3RvXzUzKSwKKyAgICAgICAgICAgIHR3b190b181MyAtIDEpOworICBFWFBF
Q1RfTkUoc3RhdGljX2Nhc3Q8aW50NjRfdD4oVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZGKSAq
IHR3b190b181MyAqIDIpLAorICAgICAgICAgICAgdHdvX3RvXzUzICogMiAtIDEpOworCisgIC8v
IEZvciB2YWx1ZXMgd2hlcmUgZXZlcnkgYml0IGNvdW50cywgdGhlIHZhbHVlcyBzY2FsZSBhcyBt
dWx0aXBsZXMgb2YgdGhlCisgIC8vIGlucHV0LgorICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsg
KytpKSB7CisgICAgRVhQRUNUX0VRKGkgKiBUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDEpLCBU
b0RvdWJsZShpKSk7CisgIH0KKworICAvLyBGb3IgZWFjaCBpOiB2YWx1ZSBnZW5lcmF0ZWQgZnJv
bSAoMSA8PCBpKS4KKyAgZG91YmxlIGV4cF92YWx1ZXNbNjRdOworICBleHBfdmFsdWVzWzYzXSA9
IDAuNTsKKyAgZm9yIChpbnQgaSA9IDYyOyBpID49IDA7IC0taSkgZXhwX3ZhbHVlc1tpXSA9IDAu
NSAqIGV4cF92YWx1ZXNbaSArIDFdOworICBjb25zdGV4cHIgdWludDY0X3Qgb25lID0gMTsKKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA2NDsgKytpKSB7CisgICAgRVhQRUNUX0VRKFRvRG91YmxlKG9u
ZSA8PCBpKSwgZXhwX3ZhbHVlc1tpXSk7CisgICAgZm9yIChpbnQgaiA9IDE7IGogPCBEQkxfTUFO
VF9ESUcgJiYgaSAtIGogPj0gMDsgKytqKSB7CisgICAgICBFWFBFQ1RfTkUoZXhwX3ZhbHVlc1tp
XSArIGV4cF92YWx1ZXNbaSAtIGpdLCBleHBfdmFsdWVzW2ldKTsKKyAgICAgIEVYUEVDVF9FUShU
b0RvdWJsZSgob25lIDw8IGkpICsgKG9uZSA8PCAoaSAtIGopKSksCisgICAgICAgICAgICAgICAg
ZXhwX3ZhbHVlc1tpXSArIGV4cF92YWx1ZXNbaSAtIGpdKTsKKyAgICB9CisgICAgZm9yIChpbnQg
aiA9IERCTF9NQU5UX0RJRzsgaSAtIGogPj0gMDsgKytqKSB7CisgICAgICBFWFBFQ1RfRVEoZXhw
X3ZhbHVlc1tpXSArIGV4cF92YWx1ZXNbaSAtIGpdLCBleHBfdmFsdWVzW2ldKTsKKyAgICAgIEVY
UEVDVF9FUShUb0RvdWJsZSgob25lIDw8IGkpICsgKG9uZSA8PCAoaSAtIGopKSksIGV4cF92YWx1
ZXNbaV0pOworICAgIH0KKyAgfQorfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRU
b0RvdWJsZVNpZ25lZFRlc3QpIHsKKyAgYXV0byBUb0RvdWJsZSA9IFtdKHVpbnQ2NF90IGEpIHsK
KyAgICByZXR1cm4gUmFuZFU2NFRvRG91YmxlPFNpZ25lZFZhbHVlVCwgZmFsc2U+KGEpOworICB9
OworCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDApLCA1LjQyMTAxMDg2
MjQyNzUyMjE3MDA0ZS0yMCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAw
MDEpLCAxLjA4NDIwMjE3MjQ4NTUwNDQzNGUtMTkpOworCisgIEVYUEVDVF9FUShUb0RvdWJsZSgw
eDgwMDAwMDAwMDAwMDAwMDApLCAtNS40MjEwMTA4NjI0Mjc1MjIxNzAwNGUtMjApOworICBFWFBF
Q1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAxKSwgLTEuMDg0MjAyMTcyNDg1NTA0NDM0
ZS0xOSk7CisKKyAgY29uc3QgZG91YmxlIGVfcGx1cyA9IFRvRG91YmxlKDB4MDAwMDAwMDAwMDAw
MDAwMSk7CisgIGNvbnN0IGRvdWJsZSBlX21pbnVzID0gVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAw
MDAxKTsKKyAgRVhQRUNUX0VRKGVfcGx1cywgMS4wODQyMDIxNzI0ODU1MDQ0MzRlLTE5KTsKKyAg
RVhQRUNUX0VRKGVfbWludXMsIC0xLjA4NDIwMjE3MjQ4NTUwNDQzNGUtMTkpOworCisgIEVYUEVD
VF9FUShUb0RvdWJsZSgweDNmZmZmZmZmZmZmZmZmZWYpLCAwLjQ5OTk5OTk5OTk5OTk5OTk0NDQ4
OSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweGJmZmZmZmZmZmZmZmZmZWYpLCAtMC40OTk5OTk5
OTk5OTk5OTk5NDQ0ODkpOworCisgIC8vIEZvciB2YWx1ZXMgPiAwLjUsIFJhbmRVNjRUb0RvdWJs
ZSBkaXNjYXJkcyB1cCB0byAxMCBiaXRzLiAoNjMtNTMpLgorICBFWFBFQ1RfRVEoVG9Eb3VibGUo
MHg0MDAwMDAwMDAwMDAwMDAwKSwgMC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4NDAwMDAw
MDAwMDAwMDAwMSksIDAuNSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDQwMDAwMDAwMDAwMDAz
RkYpLCAwLjUpOworCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEMwMDAwMDAwMDAwMDAwMDApLCAt
MC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4QzAwMDAwMDAwMDAwMDAwMSksIC0wLjUpOwor
ICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhDMDAwMDAwMDAwMDAwM0ZGKSwgLTAuNSk7CisKKyAgRVhQ
RUNUX0VRKFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRkZGZSksIDAuOTk5OTk5OTk5OTk5OTk5ODg4
OTc4KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGZSksIC0wLjk5OTk5
OTk5OTk5OTk5OTg4ODk3OCk7CisKKyAgRVhQRUNUX05FKFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZG
RjgwMCksIFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRjdGRikpOworCisgIEVYUEVDVF9MVChUb0Rv
dWJsZSgweDdGRkZGRkZGRkZGRkZGRkYpLCAxLjApOworICBFWFBFQ1RfR1QoVG9Eb3VibGUoMHg3
RkZGRkZGRkZGRkZGRkZGKSwgMC45OTk5OTk5OTk5KTsKKworICBFWFBFQ1RfR1QoVG9Eb3VibGUo
MHhGRkZGRkZGRkZGRkZGRkZlKSwgLTEuMCk7CisgIEVYUEVDVF9MVChUb0RvdWJsZSgweEZGRkZG
RkZGRkZGRkZGRmUpLCAtMC45OTk5OTk5OTkpOworCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEZG
RkZGRkZGRkZGRkZGRmUpLCBUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZDMDApKTsKKyAgRVhQRUNU
X0VRKFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRkZGRiksIFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZG
RkMwMCkpOworICBFWFBFQ1RfTkUoVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZlKSwgVG9Eb3Vi
bGUoMHhGRkZGRkZGRkZGRkZGM0ZGKSk7CisgIEVYUEVDVF9ORShUb0RvdWJsZSgweDdGRkZGRkZG
RkZGRkZGRkYpLCBUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkYzRkYpKTsKKworICBFWFBFQ1RfRVEo
VG9Eb3VibGUoMHgxMDAwMDAwMDAwMDAwMDAxKSwgMC4xMjUpOworICBFWFBFQ1RfRVEoVG9Eb3Vi
bGUoMHgyMDAwMDAwMDAwMDAwMDAxKSwgMC4yNSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDMw
MDAwMDAwMDAwMDAwMDEpLCAwLjM3NSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDQwMDAwMDAw
MDAwMDAwMDEpLCAwLjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg1MDAwMDAwMDAwMDAwMDAx
KSwgMC42MjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg2MDAwMDAwMDAwMDAwMDAxKSwgMC43
NSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDcwMDAwMDAwMDAwMDAwMDEpLCAwLjg3NSk7Cisg
IEVYUEVDVF9FUShUb0RvdWJsZSgweDc4MDAwMDAwMDAwMDAwMDEpLCAwLjkzNzUpOworICBFWFBF
Q1RfRVEoVG9Eb3VibGUoMHg3YzAwMDAwMDAwMDAwMDAxKSwgMC45Njg3NSk7CisgIEVYUEVDVF9F
UShUb0RvdWJsZSgweDdlMDAwMDAwMDAwMDAwMDEpLCAwLjk4NDM3NSk7CisgIEVYUEVDVF9FUShU
b0RvdWJsZSgweDdmMDAwMDAwMDAwMDAwMDEpLCAwLjk5MjE4NzUpOworCisgIC8vIDB4ODAwMDAw
MDAwMDAwMDAwMCB+PSAwCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDkwMDAwMDAwMDAwMDAwMDEp
LCAtMC4xMjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhhMDAwMDAwMDAwMDAwMDAxKSwgLTAu
MjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhiMDAwMDAwMDAwMDAwMDAxKSwgLTAuMzc1KTsK
KyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4YzAwMDAwMDAwMDAwMDAwMSksIC0wLjUpOworICBFWFBF
Q1RfRVEoVG9Eb3VibGUoMHhkMDAwMDAwMDAwMDAwMDAxKSwgLTAuNjI1KTsKKyAgRVhQRUNUX0VR
KFRvRG91YmxlKDB4ZTAwMDAwMDAwMDAwMDAwMSksIC0wLjc1KTsKKyAgRVhQRUNUX0VRKFRvRG91
YmxlKDB4ZjAwMDAwMDAwMDAwMDAwMSksIC0wLjg3NSk7CisKKyAgLy8gTGFyZ2UgcG93ZXJzIG9m
IDIuCisgIGludDY0X3QgdHdvX3RvXzUzID0gaW50NjRfdHsxfSA8PCA1MzsKKyAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PGludDY0X3Q+KFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRkZGRikgKiB0d29f
dG9fNTMpLAorICAgICAgICAgICAgdHdvX3RvXzUzIC0gMSk7CisgIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZGRkYpICogdHdvX3RvXzUzKSwK
KyAgICAgICAgICAgIC0odHdvX3RvXzUzIC0gMSkpOworCisgIEVYUEVDVF9ORShzdGF0aWNfY2Fz
dDxpbnQ2NF90PihUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkZGRkYpICogdHdvX3RvXzUzICogMiks
CisgICAgICAgICAgICB0d29fdG9fNTMgKiAyIC0gMSk7CisKKyAgLy8gRm9yIHZhbHVlcyB3aGVy
ZSBldmVyeSBiaXQgY291bnRzLCB0aGUgdmFsdWVzIHNjYWxlIGFzIG11bHRpcGxlcyBvZiB0aGUK
KyAgLy8gaW5wdXQuCisgIGZvciAoaW50IGkgPSAxOyBpIDwgMTAwOyArK2kpIHsKKyAgICBFWFBF
Q1RfRVEoaSAqIGVfcGx1cywgVG9Eb3VibGUoaSkpIDw8IGk7CisgICAgRVhQRUNUX0VRKGkgKiBl
X21pbnVzLCBUb0RvdWJsZSgweDgwMDAwMDAwMDAwMDAwMDAgfCBpKSkgPDwgaTsKKyAgfQorfQor
CitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBFeGhhdXN0aXZlRmxvYXQpIHsKKyAgdXNpbmcg
YWJzbDo6YmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NDsKKyAgYXV0byBUb0Zsb2F0
ID0gW10odWludDY0X3QgYSkgeworICAgIHJldHVybiBSYW5kVTY0VG9GbG9hdDxQb3NpdGl2ZVZh
bHVlVCwgdHJ1ZT4oYSk7CisgIH07CisKKyAgLy8gUmVseSBvbiBSYW5kVTY0VG9GbG9hdCBnZW5l
cmF0aW5nIHZhbHVlcyBmcm9tIGdyZWF0ZXN0IHRvIGxlYXN0IHdoZW4KKyAgLy8gc3VwcGxpZWQg
d2l0aCB1aW50NjRfdCB2YWx1ZXMgZnJvbSBncmVhdGVzdCAoMHhmZmYuLi4pIHRvIGxlYXN0ICgw
eDApLiAgVGh1cywKKyAgLy8gdGhpcyBhbGdvcml0aG0gc3RvcmVzIHRoZSBwcmV2aW91cyB2YWx1
ZSwgYW5kIGlmIHRoZSBuZXcgdmFsdWUgaXMgYXQKKyAgLy8gZ3JlYXRlciB0aGFuIG9yIGVxdWFs
IHRvIHRoZSBwcmV2aW91cyB2YWx1ZSwgdGhlbiB0aGVyZSBpcyBhIGNvbGxpc2lvbiBpbgorICAv
LyB0aGUgZ2VuZXJhdGlvbiBhbGdvcml0aG0uCisgIC8vCisgIC8vIFVzZSB0aGUgY29tcHV0YXRp
b24gYmVsb3cgdG8gY29udmVydCB0aGUgcmFuZG9tIHZhbHVlIGludG8gYSByZXN1bHQ6CisgIC8v
ICAgZG91YmxlIHJlcyA9IGEoKSAqICgxLjBmIC0gc2FtcGxlKSArIGIoKSAqIHNhbXBsZTsKKyAg
ZmxvYXQgbGFzdF9mID0gMS4wLCBsYXN0X2cgPSAyLjA7CisgIHVpbnQ2NF90IGZfY29sbGlzaW9u
cyA9IDAsIGdfY29sbGlzaW9ucyA9IDA7CisgIHVpbnQ2NF90IGZfdW5pcXVlID0gMCwgZ191bmlx
dWUgPSAwOworICB1aW50NjRfdCB0b3RhbCA9IDA7CisgIGF1dG8gY291bnQgPSBbJl0oY29uc3Qg
ZmxvYXQgcikgeworICAgIHRvdGFsKys7CisgICAgLy8gYGZgIGlzIG1hcHBlZCB0byB0aGUgcmFu
Z2UgWzAsIDEpIChkZWZhdWx0KQorICAgIGNvbnN0IGZsb2F0IGYgPSAwLjBmICogKDEuMGYgLSBy
KSArIDEuMGYgKiByOworICAgIGlmIChmID49IGxhc3RfZikgeworICAgICAgZl9jb2xsaXNpb25z
Kys7CisgICAgfSBlbHNlIHsKKyAgICAgIGZfdW5pcXVlKys7CisgICAgICBsYXN0X2YgPSBmOwor
ICAgIH0KKyAgICAvLyBgZ2AgaXMgbWFwcGVkIHRvIHRoZSByYW5nZSBbMSwgMikKKyAgICBjb25z
dCBmbG9hdCBnID0gMS4wZiAqICgxLjBmIC0gcikgKyAyLjBmICogcjsKKyAgICBpZiAoZyA+PSBs
YXN0X2cpIHsKKyAgICAgIGdfY29sbGlzaW9ucysrOworICAgIH0gZWxzZSB7CisgICAgICBnX3Vu
aXF1ZSsrOworICAgICAgbGFzdF9nID0gZzsKKyAgICB9CisgIH07CisKKyAgc2l6ZV90IGxpbWl0
ID0gYWJzbDo6R2V0RmxhZyhGTEFHU19hYnNsX3JhbmRvbV90ZXN0X3RyaWFscyk7CisKKyAgLy8g
R2VuZXJhdGUgYWxsIHVpbnQ2NF90IHdoaWNoIGhhdmUgdW5pcXVlIGZsb2F0aW5nIHBvaW50IHZh
bHVlcy4KKyAgLy8gQ291bnRpbmcgZG93biBmcm9tIDB4RkZGRkZGRkZGRkZGRkZGRnUgLi4uIDB4
MHUKKyAgdWludDY0X3QgeCA9IH51aW50NjRfdCgwKTsKKyAgZm9yICg7IHggIT0gMCAmJiBsaW1p
dCA+IDA7KSB7CisgICAgY29uc3RleHByIGludCBrRGlnID0gKDY0IC0gRkxUX01BTlRfRElHKTsK
KyAgICAvLyBTZXQgYSBkZWNyZW1lbnQgdmFsdWUgJiB0aGUgbmV4dCBwb2ludCBhdCB3aGljaCB0
byBjaGFuZ2UKKyAgICAvLyB0aGUgZGVjcmVtZW50IHZhbHVlLiBCeSBkZWZhdWx0IHRoZXNlIGFy
ZSAxLCAwLgorICAgIHVpbnQ2NF90IGRlYyA9IDE7CisgICAgdWludDY0X3QgY2hrID0gMDsKKwor
ICAgIC8vIEFkanVzdCBkZWNyZW1lbnQgYW5kIGNoZWNrIHZhbHVlIGJhc2VkIG9uIGhvdyBtYW55
IGxlYWRpbmcgMAorICAgIC8vIGJpdHMgYXJlIHNldCBpbiB0aGUgY3VycmVudCB2YWx1ZS4KKyAg
ICBjb25zdCBpbnQgY2x6ID0gQ291bnRMZWFkaW5nWmVyb3M2NCh4KTsKKyAgICBpZiAoY2x6IDwg
a0RpZykgeworICAgICAgZGVjIDw8PSAoa0RpZyAtIGNseik7CisgICAgICBjaGsgPSAofnVpbnQ2
NF90KDApKSA+PiAoY2x6ICsgMSk7CisgICAgfQorICAgIGZvciAoOyB4ID4gY2hrICYmIGxpbWl0
ID4gMDsgeCAtPSBkZWMpIHsKKyAgICAgIGNvdW50KFRvRmxvYXQoeCkpOworICAgICAgLS1saW1p
dDsKKyAgICB9CisgIH0KKworICBzdGF0aWNfYXNzZXJ0KEZMVF9NQU5UX0RJRyA9PSAyNCwKKyAg
ICAgICAgICAgICAgICAiVGhlIGZsb2F0IHR5cGUgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBhIDI0IGJp
dCBtYW50aXNzYS4iKTsKKworICBpZiAobGltaXQgIT0gMCkgeworICAgIC8vIFRoZXJlIGFyZSBi
ZXR3ZWVuIDJeMjggYW5kIDJeMjkgdW5pcXVlIHZhbHVlcyBpbiB0aGUgcmFuZ2UgWzAsIDEpLiAg
Rm9yCisgICAgLy8gdGhlIGxvdyB2YWx1ZXMgb2YgeCwgdGhlcmUgYXJlIDJeMjQgLTEgdW5pcXVl
IHZhbHVlcy4gIE9uY2UgeCA+IDJeMjQsCisgICAgLy8gdGhlcmUgYXJlIDQwICogMl4yNCB1bmlx
dWUgdmFsdWVzLiBUaHVzOgorICAgIC8vICgyICsgNCArIDggLi4uICsgMl4yMykgKyA0MCAqIDJe
MjMKKyAgICBFWFBFQ1RfTFQoMSA8PCAyOCwgZl91bmlxdWUpOworICAgIEVYUEVDVF9FUSgoMSA8
PCAyNCkgKyA0MCAqICgxIDw8IDIzKSAtIDEsIGZfdW5pcXVlKTsKKyAgICBFWFBFQ1RfRVEodG90
YWwsIGZfdW5pcXVlKTsKKyAgICBFWFBFQ1RfRVEoMCwgZl9jb2xsaXNpb25zKTsKKworICAgIC8v
IEV4cGVjdCBhdCBsZWFzdCAyXjIzIHVuaXF1ZSB2YWx1ZXMgZm9yIHRoZSByYW5nZSBbMSwgMikK
KyAgICBFWFBFQ1RfTEUoMSA8PCAyMywgZ191bmlxdWUpOworICAgIEVYUEVDVF9FUSh0b3RhbCAt
IGdfdW5pcXVlLCBnX2NvbGxpc2lvbnMpOworICB9Cit9CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1w
bFRlc3QsIE11bHRpcGx5VTY0VG9VMTI4VGVzdCkgeworICB1c2luZyBhYnNsOjpyYW5kb21faW50
ZXJuYWw6Ok11bHRpcGx5VTY0VG9VMTI4OworICBjb25zdGV4cHIgdWludDY0X3QgazEgPSAxOwor
ICBjb25zdGV4cHIgdWludDY0X3Qga01heCA9IH5zdGF0aWNfY2FzdDx1aW50NjRfdD4oMCk7CisK
KyAgRVhQRUNUX0VRKGFic2w6OnVpbnQxMjgoMCksIE11bHRpcGx5VTY0VG9VMTI4KDAsIDApKTsK
KworICAvLyBNYXggdWludDY0CisgIEVYUEVDVF9FUShNdWx0aXBseVU2NFRvVTEyOChrTWF4LCBr
TWF4KSwKKyAgICAgICAgICAgIGFic2w6Ok1ha2VVaW50MTI4KDB4ZmZmZmZmZmZmZmZmZmZmZSwg
MHgwMDAwMDAwMDAwMDAwMDAxKSk7CisgIEVYUEVDVF9FUShhYnNsOjpNYWtlVWludDEyOCgwLCBr
TWF4KSwgTXVsdGlwbHlVNjRUb1UxMjgoa01heCwgMSkpOworICBFWFBFQ1RfRVEoYWJzbDo6TWFr
ZVVpbnQxMjgoMCwga01heCksIE11bHRpcGx5VTY0VG9VMTI4KDEsIGtNYXgpKTsKKyAgZm9yIChp
bnQgaSA9IDA7IGkgPCA2NDsgKytpKSB7CisgICAgRVhQRUNUX0VRKGFic2w6Ok1ha2VVaW50MTI4
KDAsIGtNYXgpIDw8IGksCisgICAgICAgICAgICAgIE11bHRpcGx5VTY0VG9VMTI4KGtNYXgsIGsx
IDw8IGkpKTsKKyAgICBFWFBFQ1RfRVEoYWJzbDo6TWFrZVVpbnQxMjgoMCwga01heCkgPDwgaSwK
KyAgICAgICAgICAgICAgTXVsdGlwbHlVNjRUb1UxMjgoazEgPDwgaSwga01heCkpOworICB9CisK
KyAgLy8gMS1iaXQgeCAxLWJpdC4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA2NDsgKytpKSB7Cisg
ICAgZm9yIChpbnQgaiA9IDA7IGogPCA2NDsgKytqKSB7CisgICAgICBFWFBFQ1RfRVEoYWJzbDo6
TWFrZVVpbnQxMjgoMCwgMSkgPDwgKGkgKyBqKSwKKyAgICAgICAgICAgICAgICBNdWx0aXBseVU2
NFRvVTEyOChrMSA8PCBpLCBrMSA8PCBqKSk7CisgICAgICBFWFBFQ1RfRVEoYWJzbDo6TWFrZVVp
bnQxMjgoMCwgMSkgPDwgKGkgKyBqKSwKKyAgICAgICAgICAgICAgICBNdWx0aXBseVU2NFRvVTEy
OChrMSA8PCBpLCBrMSA8PCBqKSk7CisgICAgfQorICB9CisKKyAgLy8gVmVyaWZpZWQgbXVsdGlw
bGllcworICBFWFBFQ1RfRVEoTXVsdGlwbHlVNjRUb1UxMjgoMHhmZmZmZWVlZWRkZGRjY2NjLCAw
eGJiYmJhYWFhOTk5OTg4ODgpLAorICAgICAgICAgICAgYWJzbDo6TWFrZVVpbnQxMjgoMHhiYmJi
OWUyNjkyYzVkZGRjLCAweGMyOGY3NTMxMDQ4ZDJjNjApKTsKKyAgRVhQRUNUX0VRKE11bHRpcGx5
VTY0VG9VMTI4KDB4MDEyMzQ1Njc4OWFiY2RlZiwgMHhmZWRjYmE5ODc2NTQzMjEwKSwKKyAgICAg
ICAgICAgIGFic2w6Ok1ha2VVaW50MTI4KDB4MDEyMWZhMDBhZDc3ZDc0MiwgMHgyMjM2ZDg4ZmU1
NjE4Y2YwKSk7CisgIEVYUEVDVF9FUShNdWx0aXBseVU2NFRvVTEyOCgweDAxMjM0NTY3ODlhYmNk
ZWYsIDB4ZmRiOTc1MzFlY2E4NjQyMCksCisgICAgICAgICAgICBhYnNsOjpNYWtlVWludDEyOCgw
eDAxMjBhZTk5ZDI2NzI1ZmMsIDB4Y2UxOTdmMGVjYWMzMTllMCkpOworICBFWFBFQ1RfRVEoTXVs
dGlwbHlVNjRUb1UxMjgoMHg5N2E4N2Y0ZjI2MWJhM2YyLCAweGZlZGNiYTk4NzY1NDMyMTApLAor
ICAgICAgICAgICAgYWJzbDo6TWFrZVVpbnQxMjgoMHg5NmZiZjFhOGFlNzhkMGJhLCAweDVhNmRk
NGI3MWYyNzgzMjApKTsKKyAgRVhQRUNUX0VRKE11bHRpcGx5VTY0VG9VMTI4KDB4ZmVkY2JhOTg3
NjU0MzIxMCwgMHhmZGI5NzUzMWVjYTg2NDIwKSwKKyAgICAgICAgICAgIGFic2w6Ok1ha2VVaW50
MTI4KDB4ZmM5OGM2OTgxYTQxM2UyMiwgMHgzNDJkMGJiZjQ4OTQ4MjAwKSk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlv
bl90ZXN0X3V0aWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3Rf
dXRpbC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NWM4ZDU5NmViZjg1MTU5YWZiMTEzZjc0NjRmOTFjMzhkMGQx
OTAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlv
bl90ZXN0X3V0aWwuY2MKQEAgLTAsMCArMSw0MTYgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJp
YnV0aW9uX3Rlc3RfdXRpbC5oIgorCisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjbWF0
aD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJz
bC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jv
cy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9z
dHJpbmdzL3N0cl9mb3JtYXQuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRv
bV9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCisjaWYgZGVmaW5lZChfX0VNU0NSSVBURU5fXykK
Ky8vIFdvcmthcm91bmQgX19FTVNDUklQVEVOX18gZXJyb3I6IGxsdm1fZm1hX2Y2NCBub3QgZm91
bmQuCitpbmxpbmUgZG91YmxlIGZtYShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KSB7IHJl
dHVybiAoeCAqIHkpICsgejsgfQorI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQorCitEaXN0cmli
dXRpb25Nb21lbnRzIENvbXB1dGVEaXN0cmlidXRpb25Nb21lbnRzKAorICAgIGFic2w6OlNwYW48
Y29uc3QgZG91YmxlPiBkYXRhX3BvaW50cykgeworICBEaXN0cmlidXRpb25Nb21lbnRzIHJlc3Vs
dDsKKworICAvLyBDb21wdXRlIG0xCisgIGZvciAoZG91YmxlIHggOiBkYXRhX3BvaW50cykgewor
ICAgIHJlc3VsdC5uKys7CisgICAgcmVzdWx0Lm1lYW4gKz0geDsKKyAgfQorICByZXN1bHQubWVh
biAvPSBzdGF0aWNfY2FzdDxkb3VibGU+KHJlc3VsdC5uKTsKKworICAvLyBDb21wdXRlIG0yLCBt
MywgbTQKKyAgZm9yIChkb3VibGUgeCA6IGRhdGFfcG9pbnRzKSB7CisgICAgZG91YmxlIHYgPSB4
IC0gcmVzdWx0Lm1lYW47CisgICAgcmVzdWx0LnZhcmlhbmNlICs9IHYgKiB2OworICAgIHJlc3Vs
dC5za2V3bmVzcyArPSB2ICogdiAqIHY7CisgICAgcmVzdWx0Lmt1cnRvc2lzICs9IHYgKiB2ICog
diAqIHY7CisgIH0KKyAgcmVzdWx0LnZhcmlhbmNlIC89IHN0YXRpY19jYXN0PGRvdWJsZT4ocmVz
dWx0Lm4gLSAxKTsKKworICByZXN1bHQuc2tld25lc3MgLz0gc3RhdGljX2Nhc3Q8ZG91YmxlPihy
ZXN1bHQubik7CisgIHJlc3VsdC5za2V3bmVzcyAvPSBzdGQ6OnBvdyhyZXN1bHQudmFyaWFuY2Us
IDEuNSk7CisKKyAgcmVzdWx0Lmt1cnRvc2lzIC89IHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0
Lm4pOworICByZXN1bHQua3VydG9zaXMgLz0gc3RkOjpwb3cocmVzdWx0LnZhcmlhbmNlLCAyLjAp
OworICByZXR1cm4gcmVzdWx0OworCisgIC8vIFdoZW4gdmFsaWRhdGluZyB0aGUgbWluL21heCBj
b3VudCwgdGhlIGZvbGxvd2luZyBjb25maWRlbmNlIGludGVydmFscyBtYXkKKyAgLy8gYmUgb2Yg
dXNlOgorICAvLyAzLjI5MSAqIHN0ZGRldiA9IDk5LjklIENJCisgIC8vIDIuNTc2ICogc3RkZGV2
ID0gOTklIENJCisgIC8vIDEuOTYgKiBzdGRkZXYgID0gOTUlIENJCisgIC8vIDEuNjUgKiBzdGRk
ZXYgID0gOTAlIENJCit9CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0m
IG9zLCBjb25zdCBEaXN0cmlidXRpb25Nb21lbnRzJiBtb21lbnRzKSB7CisgIHJldHVybiBvcyA8
PCBhYnNsOjpTdHJGb3JtYXQoIm1lYW49JWYsIHN0ZGRldj0lZiwgc2tld25lc3M9JWYsIGt1cnRv
c2lzPSVmIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb21lbnRzLm1lYW4sIHN0
ZDo6c3FydChtb21lbnRzLnZhcmlhbmNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb21lbnRzLnNrZXduZXNzLCBtb21lbnRzLmt1cnRvc2lzKTsKK30KKworZG91YmxlIEludmVy
c2VOb3JtYWxTdXJ2aXZhbChkb3VibGUgeCkgeworICAvLyBpbnZfc2YodSkgPSAtc3FydCgyKSAq
IGVyZmludigydS0xKQorICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrU3FydDIgPSAxLjQxNDIx
MzU2MjM3MzA5NTA0ODg7CisgIHJldHVybiAta1NxcnQyICogYWJzbDo6cmFuZG9tX2ludGVybmFs
OjplcmZpbnYoMiAqIHggLSAxLjApOworfQorCitib29sIE5lYXIoYWJzbDo6c3RyaW5nX3ZpZXcg
bXNnLCBkb3VibGUgYWN0dWFsLCBkb3VibGUgZXhwZWN0ZWQsIGRvdWJsZSBib3VuZCkgeworICBh
c3NlcnQoYm91bmQgPiAwLjApOworICBkb3VibGUgZGVsdGEgPSBmYWJzKGV4cGVjdGVkIC0gYWN0
dWFsKTsKKyAgaWYgKGRlbHRhIDwgYm91bmQpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisg
IHN0ZDo6c3RyaW5nIGZvcm1hdHRlZCA9IGFic2w6OlN0ckNhdCgKKyAgICAgIG1zZywgIiBhY3R1
YWw9IiwgYWN0dWFsLCAiIGV4cGVjdGVkPSIsIGV4cGVjdGVkLCAiIGVycj0iLCBkZWx0YSAvIGJv
dW5kKTsKKyAgQUJTTF9SQVdfTE9HKElORk8sICIlcyIsIGZvcm1hdHRlZC5jX3N0cigpKTsKKyAg
cmV0dXJuIGZhbHNlOworfQorCisvLyBUT0RPKGFic2wtdGVhbSk6IFJlcGxhY2Ugd2l0aCBhbiAi
QUJTTF9IQVZFX1NQRUNJQUxfTUFUSCIgYW5kIHRyeQorLy8gdG8gdXNlIHN0ZDo6YmV0YSgpLiAg
QXMgb2YgdGhpcyB3cml0aW5nIFAwMjI2UjEgaXMgbm90IGltcGxlbWVudGVkCisvLyBpbiBsaWJj
Kys6IGh0dHA6Ly9saWJjeHgubGx2bS5vcmcvY3h4MXpfc3RhdHVzLmh0bWwKK2RvdWJsZSBiZXRh
KGRvdWJsZSBwLCBkb3VibGUgcSkgeworICAvLyBCZXRhKHgsIHkpID0gR2FtbWEoeCkgKiBHYW1t
YSh5KSAvIEdhbW1hKHgreSkKKyAgZG91YmxlIGxiZXRhID0gc3RkOjpsZ2FtbWEocCkgKyBzdGQ6
OmxnYW1tYShxKSAtIHN0ZDo6bGdhbW1hKHAgKyBxKTsKKyAgcmV0dXJuIHN0ZDo6ZXhwKGxiZXRh
KTsKK30KKworLy8gQXBwcm94aW1hdGlvbiB0byBpbnZlcnNlIG9mIHRoZSBFcnJvciBGdW5jdGlv
biBpbiBkb3VibGUgcHJlY2lzaW9uLgorLy8gKGh0dHA6Ly9wZW9wbGUubWF0aHMub3guYWMudWsv
Z2lsZXNtL2ZpbGVzL2dlbXNfZXJmaW52LnBkZikKK2RvdWJsZSBlcmZpbnYoZG91YmxlIHgpIHsK
KyNpZiAhZGVmaW5lZChfX0VNU0NSSVBURU5fXykKKyAgdXNpbmcgc3RkOjpmbWE7CisjZW5kaWYK
KworICBkb3VibGUgdyA9IDAuMDsKKyAgZG91YmxlIHAgPSAwLjA7CisgIHcgPSAtc3RkOjpsb2co
KDEuMCAtIHgpICogKDEuMCArIHgpKTsKKyAgaWYgKHcgPCA2LjI1MDAwMCkgeworICAgIHcgPSB3
IC0gMy4xMjUwMDA7CisgICAgcCA9IC0zLjY0NDQxMjA2NDAxNzgxOTY5OTZlLTIxOworICAgIHAg
PSBmbWEocCwgdywgLTEuNjg1MDU5MTM4MTgyMDE2NTg5ZS0xOSk7CisgICAgcCA9IGZtYShwLCB3
LCAxLjI4NTg0ODA3MTUyNTY0MDAxNjdlLTE4KTsKKyAgICBwID0gZm1hKHAsIHcsIDEuMTE1Nzg3
NzY3ODAyNTE4MDk2ZS0xNyk7CisgICAgcCA9IGZtYShwLCB3LCAtMS4zMzMxNzE2NjI4NTQ2MjA5
MDZlLTE2KTsKKyAgICBwID0gZm1hKHAsIHcsIDIuMDk3Mjc2Nzg3NTk2ODU2MTYzN2UtMTcpOwor
ICAgIHAgPSBmbWEocCwgdywgNi42Mzc2MzgxMzQzNTgzMjM4MzI1ZS0xNSk7CisgICAgcCA9IGZt
YShwLCB3LCAtNC4wNTQ1NjYyNzI5NzUyMDY4NjM5ZS0xNCk7CisgICAgcCA9IGZtYShwLCB3LCAt
OC4xNTE5MzQxOTc2MDU0NzIxNTIyZS0xNCk7CisgICAgcCA9IGZtYShwLCB3LCAyLjYzMzUwOTMx
NTMwODIzMjI5NzdlLTEyKTsKKyAgICBwID0gZm1hKHAsIHcsIC0xLjI5NzUxMzMyNTM0NTM1MzI0
OThlLTExKTsKKyAgICBwID0gZm1hKHAsIHcsIC01LjQxNTQxMjA1NDI5NDYyNzkzMTdlLTExKTsK
KyAgICBwID0gZm1hKHAsIHcsIDEuMDUxMjEyMjczMzIxNTMyMjg1ZS0wOSk7CisgICAgcCA9IGZt
YShwLCB3LCAtNC4xMTI2MzM5ODAzNDY5ODM2OTc2ZS0wOSk7CisgICAgcCA9IGZtYShwLCB3LCAt
Mi45MDcwMzY5OTU3ODgyMDA1MDg2ZS0wOCk7CisgICAgcCA9IGZtYShwLCB3LCA0LjIzNDc4Nzc4
Mjc5MzI0MDM1MThlLTA3KTsKKyAgICBwID0gZm1hKHAsIHcsIC0xLjM2NTQ2OTIwMDA4MzQ2Nzg2
NDVlLTA2KTsKKyAgICBwID0gZm1hKHAsIHcsIC0xLjM4ODI1MjMzNjI3ODY0Njg3MTllLTA1KTsK
KyAgICBwID0gZm1hKHAsIHcsIDAuMDAwMTg2NzM0MjA4MDM0MDU3MTM1Mik7CisgICAgcCA9IGZt
YShwLCB3LCAtMC4wMDA3NDA3MDI1MzQxNjYyNjY5NzUxMik7CisgICAgcCA9IGZtYShwLCB3LCAt
MC4wMDYwMzM2NzA4NzE0MzAxNDkwNTMzKTsKKyAgICBwID0gZm1hKHAsIHcsIDAuMjQwMTU4MTgy
NDI1NTg5NjE2OTMpOworICAgIHAgPSBmbWEocCwgdywgMS42NTM2NTQ1NjI2ODMxMDI3MzU2KTsK
KyAgfSBlbHNlIGlmICh3IDwgMTYuMDAwMDAwKSB7CisgICAgdyA9IHN0ZDo6c3FydCh3KSAtIDMu
MjUwMDAwOworICAgIHAgPSAyLjIxMzczNzY5MjE3NzU3ODcwNDllLTA5OworICAgIHAgPSBmbWEo
cCwgdywgOS4wNzU2NTYxOTM4ODg1MzkwOTc5ZS0wOCk7CisgICAgcCA9IGZtYShwLCB3LCAtMi43
NTE3NDA2Mjk3MDY0NTQ1NDI4ZS0wNyk7CisgICAgcCA9IGZtYShwLCB3LCAxLjgyMzk2MjkyMTQz
ODkyMjc3NTVlLTA4KTsKKyAgICBwID0gZm1hKHAsIHcsIDEuNTAyNzQwMzk2ODkwOTgyNzYyN2Ut
MDYpOworICAgIHAgPSBmbWEocCwgdywgLTQuMDEzODY3NTI2OTgxNTQ1OTY5ZS0wNik7CisgICAg
cCA9IGZtYShwLCB3LCAyLjkyMzQ0NDkwODk5NTU0NDYwNDRlLTA2KTsKKyAgICBwID0gZm1hKHAs
IHcsIDEuMjQ3NTMwNDQ4MTY3MTc3ODcyM2UtMDUpOworICAgIHAgPSBmbWEocCwgdywgLTQuNzMx
ODIyOTAwOTA1NTczMzk4MWUtMDUpOworICAgIHAgPSBmbWEocCwgdywgNi44Mjg0ODUxNDU5NTcz
MTc1NDQ4ZS0wNSk7CisgICAgcCA9IGZtYShwLCB3LCAyLjQwMzExMTAzODcwOTc4OTM5OTllLTA1
KTsKKyAgICBwID0gZm1hKHAsIHcsIC0wLjAwMDM1NTAzNzUyMDM2Mjg0NzQ3OTYpOworICAgIHAg
PSBmbWEocCwgdywgMC4wMDA5NTMyODkzNzk3MzczODA0OTcwMyk7CisgICAgcCA9IGZtYShwLCB3
LCAtMC4wMDE2ODgyNzU1NTYwMjM1MDQ3MzEzKTsKKyAgICBwID0gZm1hKHAsIHcsIDAuMDAyNDkx
NDQyMDk2MTA3ODUwODA2Nik7CisgICAgcCA9IGZtYShwLCB3LCAtMC4wMDM3NTEyMDg1MDc1Njky
NDEyMTA3KTsKKyAgICBwID0gZm1hKHAsIHcsIDAuMDA1MzcwOTE0NTUzNTkwMDYzNjE3KTsKKyAg
ICBwID0gZm1hKHAsIHcsIDEuMDA1MjU4OTY3Njk0MTU5MjMzNCk7CisgICAgcCA9IGZtYShwLCB3
LCAzLjA4Mzg4NTYxMDQ5MjIyMDc2MzUpOworICB9IGVsc2UgeworICAgIHcgPSBzdGQ6OnNxcnQo
dykgLSA1LjAwMDAwMDsKKyAgICBwID0gLTIuNzEwOTkyMDYxNjQzODU3MzI0M2UtMTE7CisgICAg
cCA9IGZtYShwLCB3LCAtMi41NTU2NDE4MTY5OTY1MjUyMDU1ZS0xMCk7CisgICAgcCA9IGZtYShw
LCB3LCAxLjUwNzY1NzI2OTM1MDA1NDgwODNlLTA5KTsKKyAgICBwID0gZm1hKHAsIHcsIC0zLjc4
OTQ2NTQ0MDEyNjczNjk5MzdlLTA5KTsKKyAgICBwID0gZm1hKHAsIHcsIDcuNjE1NzAxMjA4MDc4
MzM5MzgwNGUtMDkpOworICAgIHAgPSBmbWEocCwgdywgLTEuNDk2MDAyNjYyNzE0OTI0MDQ3OGUt
MDgpOworICAgIHAgPSBmbWEocCwgdywgMi45MTQ3OTUzNDUwOTAxMDgwODI2ZS0wOCk7CisgICAg
cCA9IGZtYShwLCB3LCAtNi43NzExOTk3NzU4NDUyMzM5NDk4ZS0wOCk7CisgICAgcCA9IGZtYShw
LCB3LCAyLjI5MDA0ODIyMjgwMjY2NTQ3MTdlLTA3KTsKKyAgICBwID0gZm1hKHAsIHcsIC05Ljky
OTgyNzI5NDIzMTcwMDI1MzllLTA3KTsKKyAgICBwID0gZm1hKHAsIHcsIDQuNTI2MDYyNTk3MjIz
MTUzNzAzOWUtMDYpOworICAgIHAgPSBmbWEocCwgdywgLTEuOTY4MTc3ODEwNTUzMTY3MDU2N2Ut
MDUpOworICAgIHAgPSBmbWEocCwgdywgNy41OTk1Mjc3MDMwMDE3NzYxMTM5ZS0wNSk7CisgICAg
cCA9IGZtYShwLCB3LCAtMC4wMDAyMTUwMzAxMTkzMDA0NDQ3NzM0Nyk7CisgICAgcCA9IGZtYShw
LCB3LCAtMC4wMDAxMzg3MTkzMTgzMzYyMzEyMjAyNik7CisgICAgcCA9IGZtYShwLCB3LCAxLjAx
MDMwMDQ2NDg2NDUzNDM5NzcpOworICAgIHAgPSBmbWEocCwgdywgNC44NDk5MDY0MDE0MDg1ODQ0
MjIxKTsKKyAgfQorICByZXR1cm4gcCAqIHg7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIERpcmVj
dCBpbXBsZW1lbnRhdGlvbiBvZiBBUzYzLCBCRVRBSU4oKQorLy8gaHR0cHM6Ly93d3cuanN0b3Iu
b3JnL3N0YWJsZS8yMzQ2Nzk3P3NlcT0zI3BhZ2Vfc2Nhbl90YWJfY29udGVudHMuCisvLworLy8g
QkVUQUlOKHgsIHAsIHEsIGJldGEpCisvLyAgeDogICAgIHRoZSB2YWx1ZSBvZiB0aGUgdXBwZXIg
bGltaXQgeC4KKy8vICBwOiAgICAgdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgcC4KKy8vICBx
OiAgICAgdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgcS4KKy8vICBiZXRhOiAgdGhlIHZhbHVl
IG9mIGxuIEIocCwgcSkKKy8vCitkb3VibGUgQmV0YUluY29tcGxldGVJbXBsKGNvbnN0IGRvdWJs
ZSB4LCBjb25zdCBkb3VibGUgcCwgY29uc3QgZG91YmxlIHEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGRvdWJsZSBiZXRhKSB7CisgIGlmIChwIDwgKHAgKyBxKSAqIHgpIHsKKyAg
ICAvLyBJbmNvbXBsZXRlIGJldGEgZnVuY3Rpb24gaXMgc3ltbWV0cmljYWwsIHNvIHJldHVybiB0
aGUgY29tcGxlbWVudC4KKyAgICByZXR1cm4gMS4gLSBCZXRhSW5jb21wbGV0ZUltcGwoMS4wIC0g
eCwgcSwgcCwgYmV0YSk7CisgIH0KKworICBkb3VibGUgcHNxID0gcCArIHE7CisgIGNvbnN0IGRv
dWJsZSBrRXJyID0gMWUtMTQ7CisgIGNvbnN0IGRvdWJsZSB4YyA9IDEuIC0geDsKKyAgY29uc3Qg
ZG91YmxlIHByZSA9CisgICAgICBzdGQ6OmV4cChwICogc3RkOjpsb2coeCkgKyAocSAtIDEuKSAq
IHN0ZDo6bG9nKHhjKSAtIGJldGEpIC8gcDsKKworICBkb3VibGUgdGVybSA9IDEuOworICBkb3Vi
bGUgYWkgPSAxLjsKKyAgZG91YmxlIHJlc3VsdCA9IDEuOworICBpbnQgbnMgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHEgKyB4YyAqIHBzcSk7CisKKyAgLy8gVXNlIHRoZSBzb3BlciByZWR1Y3Rpb24gZm9y
dW1sYS4KKyAgZG91YmxlIHJ4ID0gKG5zID09IDApID8geCA6IHggLyB4YzsKKyAgZG91YmxlIHRl
bXAgPSBxIC0gYWk7CisgIGZvciAoOzspIHsKKyAgICB0ZXJtID0gdGVybSAqIHRlbXAgKiByeCAv
IChwICsgYWkpOworICAgIHJlc3VsdCA9IHJlc3VsdCArIHRlcm07CisgICAgdGVtcCA9IHN0ZDo6
ZmFicyh0ZXJtKTsKKyAgICBpZiAodGVtcCA8IGtFcnIgJiYgdGVtcCA8IGtFcnIgKiByZXN1bHQp
IHsKKyAgICAgIHJldHVybiByZXN1bHQgKiBwcmU7CisgICAgfQorICAgIGFpID0gYWkgKyAxLjsK
KyAgICAtLW5zOworICAgIGlmIChucyA+PSAwKSB7CisgICAgICB0ZW1wID0gcSAtIGFpOworICAg
ICAgaWYgKG5zID09IDApIHsKKyAgICAgICAgcnggPSB4OworICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICB0ZW1wID0gcHNxOworICAgICAgcHNxID0gcHNxICsgMS47CisgICAgfQorICB9CisK
KyAgLy8gTk9URTogU2VlIGFsc28gVE9NUyBBbG9ncml0aG0gNzA4LgorICAvLyBodHRwOi8vd3d3
Lm5ldGxpYi5vcmcvdG9tcy9pbmRleC5odG1sCisgIC8vCisgIC8vIE5PVEU6IFRoZSBOV1NDIGxp
YnJhcnkgYWxzbyBpbmNsdWRlcyBCUkFUSU8gLyBJU1VCWCAocDg3KQorICAvLyBodHRwczovL2Fy
Y2hpdmUub3JnL2RldGFpbHMvRFRJQ19BREEyNjE1MTEvcGFnZS9uNzUKK30KKworLy8gRGlyZWN0
IGltcGxlbWVudGF0aW9uIG9mIEFTMTA5LCBYSU5CVEEocCwgcSwgYmV0YSwgYWxwaGEpCisvLyBo
dHRwczovL3d3dy5qc3Rvci5vcmcvc3RhYmxlLzIzNDY3OTg/cmVhZC1ub3c9MSZzZXE9NCNwYWdl
X3NjYW5fdGFiX2NvbnRlbnRzCisvLyBodHRwczovL3d3dy5qc3Rvci5vcmcvc3RhYmxlLzIzNDY4
ODc/c2VxPTEjcGFnZV9zY2FuX3RhYl9jb250ZW50cworLy8KKy8vIFhJTkJUQShwLCBxLCBiZXRh
LCBhbGhwYSkKKy8vICBwOiAgICAgdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgcC4KKy8vICBx
OiAgICAgdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgcS4KKy8vICBiZXRhOiAgdGhlIHZhbHVl
IG9mIGxuIEIocCwgcSkKKy8vICBhbHBoYTogdGhlIHZhbHVlIG9mIHRoZSBsb3dlciB0YWlsIGFy
ZWEuCisvLworZG91YmxlIEJldGFJbmNvbXBsZXRlSW52SW1wbChjb25zdCBkb3VibGUgcCwgY29u
c3QgZG91YmxlIHEsIGNvbnN0IGRvdWJsZSBiZXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBkb3VibGUgYWxwaGEpIHsKKyAgaWYgKGFscGhhIDwgMC41KSB7CisgICAgLy8g
SW52ZXJzZSBJbmNvbXBsZXRlIGJldGEgZnVuY3Rpb24gaXMgc3ltbWV0cmljYWwsIHJldHVybiB0
aGUgY29tcGxlbWVudC4KKyAgICByZXR1cm4gMS4gLSBCZXRhSW5jb21wbGV0ZUludkltcGwocSwg
cCwgYmV0YSwgMS4gLSBhbHBoYSk7CisgIH0KKyAgY29uc3QgZG91YmxlIGtFcnIgPSAxZS0xNDsK
KyAgZG91YmxlIHZhbHVlID0ga0VycjsKKworICAvLyBDb21wdXRlIHRoZSBpbml0aWFsIGVzdGlt
YXRlLgorICB7CisgICAgZG91YmxlIHIgPSBzdGQ6OnNxcnQoLXN0ZDo6bG9nKGFscGhhICogYWxw
aGEpKTsKKyAgICBkb3VibGUgeSA9CisgICAgICAgIHIgLSBmbWEociwgMC4yNzA2MSwgMi4zMDc1
MykgLyBmbWEociwgZm1hKHIsIDAuMDQ0ODEsIDAuOTkyMjkpLCAxLjApOworICAgIGlmIChwID4g
MS4gJiYgcSA+IDEuKSB7CisgICAgICByID0gKHkgKiB5IC0gMy4pIC8gNi47CisgICAgICBkb3Vi
bGUgcyA9IDEuIC8gKHAgKyBwIC0gMS4pOworICAgICAgZG91YmxlIHQgPSAxLiAvIChxICsgcSAt
IDEuKTsKKyAgICAgIGRvdWJsZSBoID0gMi4gLyBzICsgdDsKKyAgICAgIGRvdWJsZSB3ID0KKyAg
ICAgICAgICB5ICogc3RkOjpzcXJ0KGggKyByKSAvIGggLSAodCAtIHMpICogKHIgKyA1LiAvIDYu
IC0gdCAvICgzLiAqIGgpKTsKKyAgICAgIHZhbHVlID0gcCAvIChwICsgcSAqIHN0ZDo6ZXhwKHcg
KyB3KSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHIgPSBxICsgcTsKKyAgICAgIGRvdWJsZSB0ID0g
MS4wIC8gKDkuICogcSk7CisgICAgICBkb3VibGUgdSA9IDEuMCAtIHQgKyB5ICogc3RkOjpzcXJ0
KHQpOworICAgICAgdCA9IHIgKiAodSAqIHUgKiB1KTsKKyAgICAgIGlmICh0IDw9IDApIHsKKyAg
ICAgICAgdmFsdWUgPSAxLjAgLSBzdGQ6OmV4cCgoc3RkOjpsb2coKDEuMCAtIGFscGhhKSAqIHEp
ICsgYmV0YSkgLyBxKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHQgPSAoNC4wICogcCArIHIg
LSAyLjApIC8gdDsKKyAgICAgICAgaWYgKHQgPD0gMSkgeworICAgICAgICAgIHZhbHVlID0gc3Rk
OjpleHAoKHN0ZDo6bG9nKGFscGhhICogcCkgKyBiZXRhKSAvIHApOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIHZhbHVlID0gMS4wIC0gMi4wIC8gKHQgKyAxLjApOworICAgICAgICB9Cisg
ICAgICB9CisgICAgfQorICB9CisKKyAgLy8gU29sdmUgZm9yIHggdXNpbmcgYSBtb2RpZmllZCBu
ZXd0b24tcmFwaHNvbiBtZXRob2QgdXNpbmcgdGhlIGZ1bmN0aW9uCisgIC8vIEJldGFJbmNvbXBs
ZXRlLgorICB7CisgICAgdmFsdWUgPSBzdGQ6Om1heCh2YWx1ZSwga0Vycik7CisgICAgdmFsdWUg
PSBzdGQ6Om1pbih2YWx1ZSwgMS4wIC0ga0Vycik7CisKKyAgICBjb25zdCBkb3VibGUgciA9IDEu
MCAtIHA7CisgICAgY29uc3QgZG91YmxlIHQgPSAxLjAgLSBxOworICAgIGRvdWJsZSB5OworICAg
IGRvdWJsZSB5cHJldiA9IDA7CisgICAgZG91YmxlIHNxID0gMTsKKyAgICBkb3VibGUgcHJldiA9
IDE7CisgICAgZm9yICg7OykgeworICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDEuMCkg
eworICAgICAgICAvLyBFcnJvciBjYXNlOyB2YWx1ZSB3ZW50IGluZmluaXRlLgorICAgICAgICBy
ZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworICAgICAgfSBl
bHNlIGlmICh2YWx1ZSA9PSAwIHx8IHZhbHVlID09IDEpIHsKKyAgICAgICAgeSA9IHZhbHVlOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgeSA9IEJldGFJbmNvbXBsZXRlSW1wbCh2YWx1ZSwgcCwg
cSwgYmV0YSk7CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh5KSkgeworICAgICAgICAgIHJl
dHVybiB5OworICAgICAgICB9CisgICAgICB9CisgICAgICB5ID0gKHkgLSBhbHBoYSkgKgorICAg
ICAgICAgIHN0ZDo6ZXhwKGJldGEgKyByICogc3RkOjpsb2codmFsdWUpICsgdCAqIHN0ZDo6bG9n
KDEuMCAtIHZhbHVlKSk7CisgICAgICBpZiAoeSAqIHlwcmV2IDw9IDApIHsKKyAgICAgICAgcHJl
diA9IHN0ZDo6bWF4KHNxLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpKTsKKyAg
ICAgIH0KKyAgICAgIGRvdWJsZSBnID0gMS4wOworICAgICAgZm9yICg7OykgeworICAgICAgICBj
b25zdCBkb3VibGUgYWRqID0gZyAqIHk7CisgICAgICAgIGNvbnN0IGRvdWJsZSBhZGpfc3EgPSBh
ZGogKiBhZGo7CisgICAgICAgIGlmIChhZGpfc3EgPj0gcHJldikgeworICAgICAgICAgIGcgPSBn
IC8gMy4wOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGRv
dWJsZSB0eCA9IHZhbHVlIC0gYWRqOworICAgICAgICBpZiAodHggPCAwIHx8IHR4ID4gMSkgewor
ICAgICAgICAgIGcgPSBnIC8gMy4wOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmIChwcmV2IDwga0VycikgeworICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoeSAqIHkgPCBrRXJyKSB7CisgICAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgICAgICB9CisgICAgICAgIGlmICh0eCA9PSB2YWx1ZSkgeworICAgICAgICAgIHJldHVy
biB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHggPT0gMCB8fCB0eCA9PSAxKSB7Cisg
ICAgICAgICAgZyA9IGcgLyAzLjA7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAg
ICAgICAgdmFsdWUgPSB0eDsKKyAgICAgICAgeXByZXYgPSB5OworICAgICAgICBicmVhazsKKyAg
ICAgIH0KKyAgICB9CisgIH0KKworICAvLyBOT1RFUzogU2VlIGFsc286IEFzeW1wdG90aWMgaW52
ZXJzaW9uIG9mIHRoZSBpbmNvbXBsZXRlIGJldGEgZnVuY3Rpb24uCisgIC8vIGh0dHBzOi8vY29y
ZS5hYy51ay9kb3dubG9hZC9wZGYvODIxNDA3MjMucGRmCisgIC8vCisgIC8vIE5PVEU6IFNlZSB0
aGUgQm9vc3QgbGlicmFyeSBkb2N1bWVudGF0aW9uIGFzIHdlbGw6CisgIC8vIGh0dHBzOi8vd3d3
LmJvb3N0Lm9yZy9kb2MvbGlicy8xXzUyXzAvbGlicy9tYXRoL2RvYy9zZl9hbmRfZGlzdC9odG1s
L21hdGhfdG9vbGtpdC9zcGVjaWFsL3NmX2JldGEvaWJldGFfZnVuY3Rpb24uaHRtbAorfQorCit9
ICAvLyBuYW1lc3BhY2UKKworZG91YmxlIEJldGFJbmNvbXBsZXRlKGNvbnN0IGRvdWJsZSB4LCBj
b25zdCBkb3VibGUgcCwgY29uc3QgZG91YmxlIHEpIHsKKyAgLy8gRXJyb3IgY2FzZXMuCisgIGlm
IChwIDwgMCB8fCBxIDwgMCB8fCB4IDwgMCB8fCB4ID4gMS4wKSB7CisgICAgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgfQorICBpZiAoeCA9PSAwIHx8
IHggPT0gMSkgeworICAgIHJldHVybiB4OworICB9CisgIC8vIGxuKEJldGEocCwgcSkpCisgIGRv
dWJsZSBiZXRhID0gc3RkOjpsZ2FtbWEocCkgKyBzdGQ6OmxnYW1tYShxKSAtIHN0ZDo6bGdhbW1h
KHAgKyBxKTsKKyAgcmV0dXJuIEJldGFJbmNvbXBsZXRlSW1wbCh4LCBwLCBxLCBiZXRhKTsKK30K
KworZG91YmxlIEJldGFJbmNvbXBsZXRlSW52KGNvbnN0IGRvdWJsZSBwLCBjb25zdCBkb3VibGUg
cSwgY29uc3QgZG91YmxlIGFscGhhKSB7CisgIC8vIEVycm9yIGNhc2VzLgorICBpZiAocCA8IDAg
fHwgcSA8IDAgfHwgYWxwaGEgPCAwIHx8IGFscGhhID4gMS4wKSB7CisgICAgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgfQorICBpZiAoYWxwaGEgPT0g
MCB8fCBhbHBoYSA9PSAxKSB7CisgICAgcmV0dXJuIGFscGhhOworICB9CisgIC8vIGxuKEJldGEo
cCwgcSkpCisgIGRvdWJsZSBiZXRhID0gc3RkOjpsZ2FtbWEocCkgKyBzdGQ6OmxnYW1tYShxKSAt
IHN0ZDo6bGdhbW1hKHAgKyBxKTsKKyAgcmV0dXJuIEJldGFJbmNvbXBsZXRlSW52SW1wbChwLCBx
LCBiZXRhLCBhbHBoYSk7Cit9CisKKy8vIEdpdmVuIGBudW1fdHJpYWxzYCB0cmlhbHMgZWFjaCB3
aXRoIHByb2JhYmlsaXR5IGBwYCBvZiBzdWNjZXNzLCB0aGUKKy8vIHByb2JhYmlsaXR5IG9mIG5v
IGZhaWx1cmVzIGlzIGBwXmtgLiBUbyBlbnN1cmUgdGhlIHByb2JhYmlsaXR5IG9mIGEgZmFpbHVy
ZQorLy8gaXMgbm8gbW9yZSB0aGFuIGBwX2ZhaWxgLCBpdCBtdXN0IGJlIHRoYXQgYHBeayA9PSAx
IC0gcF9mYWlsYC4gVGhpcyBmdW5jdGlvbgorLy8gY29tcHV0ZXMgYHBgIGZyb20gdGhhdCBlcXVh
dGlvbi4KK2RvdWJsZSBSZXF1aXJlZFN1Y2Nlc3NQcm9iYWJpbGl0eShjb25zdCBkb3VibGUgcF9m
YWlsLCBjb25zdCBpbnQgbnVtX3RyaWFscykgeworICBkb3VibGUgcCA9IHN0ZDo6ZXhwKHN0ZDo6
bG9nKDEuMCAtIHBfZmFpbCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KG51bV90cmlhbHMpKTsKKyAg
QUJTTF9BU1NFUlQocCA+IDApOworICByZXR1cm4gcDsKK30KKworZG91YmxlIFpTY29yZShkb3Vi
bGUgZXhwZWN0ZWRfbWVhbiwgY29uc3QgRGlzdHJpYnV0aW9uTW9tZW50cyYgbW9tZW50cykgewor
ICByZXR1cm4gKG1vbWVudHMubWVhbiAtIGV4cGVjdGVkX21lYW4pIC8KKyAgICAgICAgIChzdGQ6
OnNxcnQobW9tZW50cy52YXJpYW5jZSkgLworICAgICAgICAgIHN0ZDo6c3FydChzdGF0aWNfY2Fz
dDxkb3VibGU+KG1vbWVudHMubikpKTsKK30KKworZG91YmxlIE1heEVycm9yVG9sZXJhbmNlKGRv
dWJsZSBhY2NlcHRhbmNlX3Byb2JhYmlsaXR5KSB7CisgIGRvdWJsZSBvbmVfc2lkZWRfcHZhbHVl
ID0gMC41ICogKDEuMCAtIGFjY2VwdGFuY2VfcHJvYmFiaWxpdHkpOworICBjb25zdCBkb3VibGUg
bWF4X2VyciA9IEludmVyc2VOb3JtYWxTdXJ2aXZhbChvbmVfc2lkZWRfcHZhbHVlKTsKKyAgQUJT
TF9BU1NFUlQobWF4X2VyciA+IDApOworICByZXR1cm4gbWF4X2VycjsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1YmE0
OWZhN2UxZWM1ZjAwOWU5YjU2MjQ0MmM4NTkwNmU0NDRkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5oCkBAIC0wLDAgKzEs
MTExIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRl
ZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9ESVNUUklCVVRJT05fVEVTVF9VVElMX0hfCisjZGVmaW5l
IEFCU0xfUkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTl9URVNUX1VUSUxfSF8KKworI2luY2x1
ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8dmVjdG9yPgorCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYWJzbC90eXBl
cy9zcGFuLmgiCisKKy8vIE5PVEU6IFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSB0ZXN0
IG9ubHksIGFuZCBhcmUgc2hvdWxkIG5vdCBiZSB1c2VkIGluCisvLyBub24tdGVzdCBjb2RlLgor
CituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gaHR0
cDovL3dlYnNwYWNlLnNoaXAuZWR1L3BnbWFyci9HZW80NDEvTGVjdHVyZXMvTGVjJTIwNSUyMC0l
MjBOb3JtYWxpdHklMjBUZXN0aW5nLnBkZgorCisvLyBDb21wdXRlIHRoZSAxc3QgdG8gNHRoIHN0
YW5kYXJkIG1vbWVudHM6CisvLyBtZWFuLCB2YXJpYW5jZSwgc2tld25lc3MsIGFuZCBrdXJ0b3Np
cy4KKy8vIGh0dHA6Ly93d3cuaXRsLm5pc3QuZ292L2Rpdjg5OC9oYW5kYm9vay9lZGEvc2VjdGlv
bjMvZWRhMzViLmh0bQorc3RydWN0IERpc3RyaWJ1dGlvbk1vbWVudHMgeworICBzaXplX3QgbiA9
IDA7CisgIGRvdWJsZSBtZWFuID0gMC4wOworICBkb3VibGUgdmFyaWFuY2UgPSAwLjA7CisgIGRv
dWJsZSBza2V3bmVzcyA9IDAuMDsKKyAgZG91YmxlIGt1cnRvc2lzID0gMC4wOworfTsKK0Rpc3Ry
aWJ1dGlvbk1vbWVudHMgQ29tcHV0ZURpc3RyaWJ1dGlvbk1vbWVudHMoCisgICAgYWJzbDo6U3Bh
bjxjb25zdCBkb3VibGU+IGRhdGFfcG9pbnRzKTsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IERpc3RyaWJ1dGlvbk1vbWVudHMmIG1vbWVudHMpOwor
CisvLyBDb21wdXRlcyB0aGUgWi1zY29yZSBmb3IgYSBzZXQgb2YgZGF0YSB3aXRoIHRoZSBnaXZl
biBkaXN0cmlidXRpb24gbW9tZW50cworLy8gY29tcGFyZWQgYWdhaW5zdCBgZXhwZWN0ZWRfbWVh
bmAuCitkb3VibGUgWlNjb3JlKGRvdWJsZSBleHBlY3RlZF9tZWFuLCBjb25zdCBEaXN0cmlidXRp
b25Nb21lbnRzJiBtb21lbnRzKTsKKworLy8gUmV0dXJucyB0aGUgcHJvYmFiaWxpdHkgb2Ygc3Vj
Y2VzcyByZXF1aXJlZCBmb3IgYSBzaW5nbGUgdHJpYWwgdG8gZW5zdXJlIHRoYXQKKy8vIGFmdGVy
IGBudW1fdHJpYWxzYCB0cmlhbHMsIHRoZSBwcm9iYWJpbGl0eSBvZiBhdCBsZWFzdCBvbmUgZmFp
bHVyZSBpcyBubyBtb3JlCisvLyB0aGFuIGBwX2ZhaWxgLgorZG91YmxlIFJlcXVpcmVkU3VjY2Vz
c1Byb2JhYmlsaXR5KGRvdWJsZSBwX2ZhaWwsIGludCBudW1fdHJpYWxzKTsKKworLy8gQ29tcHV0
ZXMgdGhlIG1heGltdW0gZGlzdGFuY2UgZnJvbSB0aGUgbWVhbiB0b2xlcmFibGUsIGZvciBaLVRl
c3RzIHRoYXQgYXJlCisvLyBleHBlY3RlZCB0byBwYXNzIHdpdGggYGFjY2VwdGFuY2VfcHJvYmFi
aWxpdHlgLiBXaWxsIHRlcm1pbmF0ZSBpZiB0aGUKKy8vIHJlc3VsdGluZyB0b2xlcmFuY2UgaXMg
emVybyAoZHVlIHRvIHBhc3NpbmcgaW4gMC4wIGZvcgorLy8gYGFjY2VwdGFuY2VfcHJvYmFiaWxp
dHlgIG9yIHJvdW5kaW5nIGVycm9ycykuCisvLworLy8gRm9yIGV4YW1wbGUsCisvLyBNYXhFcnJv
clRvbGVyYW5jZSgwLjAwMSkgPSAwLjAKKy8vIE1heEVycm9yVG9sZXJhbmNlKDAuNSkgPSB+MC40
NworLy8gTWF4RXJyb3JUb2xlcmFuY2UoMS4wKSA9IGluZgorZG91YmxlIE1heEVycm9yVG9sZXJh
bmNlKGRvdWJsZSBhY2NlcHRhbmNlX3Byb2JhYmlsaXR5KTsKKworLy8gQXBwcm94aW1hdGlvbiB0
byBpbnZlcnNlIG9mIHRoZSBFcnJvciBGdW5jdGlvbiBpbiBkb3VibGUgcHJlY2lzaW9uLgorLy8g
KGh0dHA6Ly9wZW9wbGUubWF0aHMub3guYWMudWsvZ2lsZXNtL2ZpbGVzL2dlbXNfZXJmaW52LnBk
ZikKK2RvdWJsZSBlcmZpbnYoZG91YmxlIHgpOworCisvLyBCZXRhKHAsIHEpID0gR2FtbWEocCkg
KiBHYW1tYShxKSAvIEdhbW1hKHArcSkKK2RvdWJsZSBiZXRhKGRvdWJsZSBwLCBkb3VibGUgcSk7
CisKKy8vIFRoZSBpbnZlcnNlIG9mIHRoZSBub3JtYWwgc3Vydml2YWwgZnVuY3Rpb24uCitkb3Vi
bGUgSW52ZXJzZU5vcm1hbFN1cnZpdmFsKGRvdWJsZSB4KTsKKworLy8gUmV0dXJucyB3aGV0aGVy
IGFjdHVhbCBpcyAibmVhciIgZXhwZWN0ZWQsIGJhc2VkIG9uIHRoZSBib3VuZC4KK2Jvb2wgTmVh
cihhYnNsOjpzdHJpbmdfdmlldyBtc2csIGRvdWJsZSBhY3R1YWwsIGRvdWJsZSBleHBlY3RlZCwg
ZG91YmxlIGJvdW5kKTsKKworLy8gSW1wbGVtZW50cyB0aGUgaW5jb21wbGV0ZSByZWd1bGFyaXpl
ZCBiZXRhIGZ1bmN0aW9uLCBBUzYzLCBCRVRBSU4uCisvLyAgICBodHRwczovL3d3dy5qc3Rvci5v
cmcvc3RhYmxlLzIzNDY3OTcKKy8vCisvLyBCZXRhSW5jb21wbGV0ZSh4LCBwLCBxKSwgd2hlcmUK
Ky8vICAgYHhgIGlzIHRoZSB2YWx1ZSBvZiB0aGUgdXBwZXIgbGltaXQKKy8vICAgYHBgIGlzIGJl
dGEgcGFyYW1ldGVyIHAsIGBxYCBpcyBiZXRhIHBhcmFtZXRlciBxLgorLy8KKy8vIE5PVEU6IFRo
aXMgaXMgYSB0ZXN0LW9ubHkgZnVuY3Rpb24gd2hpY2ggaXMgb25seSBhY2N1cmF0ZSB0byB3aXRo
aW4sIGF0IG1vc3QsCisvLyAxZS0xMyBvZiB0aGUgYWN0dWFsIHZhbHVlLgorLy8KK2RvdWJsZSBC
ZXRhSW5jb21wbGV0ZShkb3VibGUgeCwgZG91YmxlIHAsIGRvdWJsZSBxKTsKKworLy8gSW1wbGVt
ZW50cyB0aGUgaW52ZXJzZSBvZiB0aGUgaW5jb21wbGV0ZSByZWd1bGFyaXplZCBiZXRhIGZ1bmN0
aW9uLCBBUzEwOSwKKy8vIFhJTkJUQS4KKy8vICAgaHR0cHM6Ly93d3cuanN0b3Iub3JnL3N0YWJs
ZS8yMzQ2Nzk4CisvLyAgIGh0dHBzOi8vd3d3LmpzdG9yLm9yZy9zdGFibGUvMjM0Njg4NworLy8K
Ky8vIEJldGFJbmNvbXBsZXRlSW52KHAsIHEsIGJldGEsIGFsaHBhKQorLy8gICBgcGAgaXMgYmV0
YSBwYXJhbWV0ZXIgcCwgYHFgIGlzIGJldGEgcGFyYW1ldGVyIHEuCisvLyAgIGBhbHBoYWAgaXMg
dGhlIHZhbHVlIG9mIHRoZSBsb3dlciB0YWlsIGFyZWEuCisvLworLy8gTk9URTogVGhpcyBpcyBh
IHRlc3Qtb25seSBmdW5jdGlvbiBhbmQsIHdoZW4gc3VjY2Vzc2Z1bCwgaXMgb25seSBhY2N1cmF0
ZSB0bworLy8gd2l0aGluIH4xZS02IG9mIHRoZSBhY3R1YWwgdmFsdWU7IHRoZXJlIGFyZSBzb21l
IGNhc2VzIHdoZXJlIGl0IGRpdmVyZ2VzIGZyb20KKy8vIHRoZSBhY3R1YWwgdmFsdWUgYnkgbXVj
aCBtb3JlIHRoYW4gdGhhdC4gIFRoZSBmdW5jdGlvbiB1c2VzIE5ld3RvbidzIG1ldGhvZCwKKy8v
IGFuZCB0aHVzIHRoZSBydW50aW1lIGlzIGhpZ2hseSB2YXJpYWJsZS4KK2RvdWJsZSBCZXRhSW5j
b21wbGV0ZUludihkb3VibGUgcCwgZG91YmxlIHEsIGRvdWJsZSBhbHBoYSk7CisKK30gIC8vIG5h
bWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAg
Ly8gQUJTTF9SQU5ET01fSU5URVJOQUxfRElTVFJJQlVUSU9OX1RFU1RfVVRJTF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWxfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsX3Rlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzQ5ZDQ0ZmI0Nzk2OTU0ZDhjZDQ3ZDZjOTM0Njg4MzZjOWM5NjQwYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91
dGlsX3Rlc3QuY2MKQEAgLTAsMCArMSwxOTMgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0
aW9uX3Rlc3RfdXRpbC5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNl
IHsKKworVEVTVChUZXN0VXRpbCwgSW52ZXJzZUVyZikgeworICBjb25zdCBzdHJ1Y3QgeworICAg
IGNvbnN0IGRvdWJsZSB6OworICAgIGNvbnN0IGRvdWJsZSB2YWx1ZTsKKyAgfSBrRXJmSW52VGFi
bGVbXSA9IHsKKyAgICAgIHswLjAwMDAwMDEsIDguODYyMjdlLTh9LAorICAgICAgezAuMDAwMDEs
IDguODYyMjdlLTZ9LAorICAgICAgezAuNSwgMC40NzY5MzYyNzYyMDQ0fSwKKyAgICAgIHswLjYs
IDAuNTk1MTE2MDgxNDQ5OX0sCisgICAgICB7MC45OTk5OSwgMy4xMjM0MTMyNzQzfSwKKyAgICAg
IHswLjk5OTk5OTksIDMuNzY2NTYyNTgxNn0sCisgICAgICB7MC45OTk5OTk5NDQsIDMuODQwMzg1
MDY5MDU2Njk4NX0sICAvLyA9IGxvZygoMS14KSAqICgxK3gpKSA9fiAxNi4wMDQKKyAgICAgIHsw
Ljk5OTk5OTk5OSwgNC4zMjAwMDUzODQ5MTM0NDUyfSwKKyAgfTsKKworICBmb3IgKGNvbnN0IGF1
dG8mIGRhdGEgOiBrRXJmSW52VGFibGUpIHsKKyAgICBhdXRvIHZhbHVlID0gYWJzbDo6cmFuZG9t
X2ludGVybmFsOjplcmZpbnYoZGF0YS56KTsKKworICAgIC8vIExvZyB1c2luZyB0aGUgV29sZnJh
bS1hbHBoYSBmdW5jdGlvbiBuYW1lICYgcGFyYW1ldGVycy4KKyAgICBFWFBFQ1RfTkVBUih2YWx1
ZSwgZGF0YS52YWx1ZSwgMWUtOCkKKyAgICAgICAgPDwgIiBJbnZlcnNlRXJmWyIgPDwgZGF0YS56
IDw8ICJdICAoZXhwZWN0ZWQ9IiA8PCBkYXRhLnZhbHVlIDw8ICIpICAtPiAiCisgICAgICAgIDw8
IHZhbHVlOworICB9Cit9CisKK2NvbnN0IHN0cnVjdCB7CisgIGNvbnN0IGRvdWJsZSBwOworICBj
b25zdCBkb3VibGUgcTsKKyAgY29uc3QgZG91YmxlIHg7CisgIGNvbnN0IGRvdWJsZSBhbHBoYTsK
K30ga0JldGFUYWJsZVtdID0geworICAgIHswLjUsIDAuNSwgMC4wMSwgMC4wNjM3Njg1NjA4NTg1
MTk4NX0sCisgICAgezAuNSwgMC41LCAwLjEsIDAuMjA0ODMyNzY0Njk5MTMzNX0sCisgICAgezAu
NSwgMC41LCAxLCAxfSwKKyAgICB7MSwgMC41LCAwLCAwfSwKKyAgICB7MSwgMC41LCAwLjAxLCAw
LjAwNTAxMjU2Mjg5MzM4MDA0NX0sCisgICAgezEsIDAuNSwgMC4xLCAwLjA1MTMxNjcwMTk0OTQ4
NjJ9LAorICAgIHsxLCAwLjUsIDAuNSwgMC4yOTI4OTMyMTg4MTM0NTI1fSwKKyAgICB7MSwgMSwg
MC41LCAwLjV9LAorICAgIHsyLCAyLCAwLjEsIDAuMDI4fSwKKyAgICB7MiwgMiwgMC4yLCAwLjEw
NH0sCisgICAgezIsIDIsIDAuMywgMC4yMTZ9LAorICAgIHsyLCAyLCAwLjQsIDAuMzUyfSwKKyAg
ICB7MiwgMiwgMC41LCAwLjV9LAorICAgIHsyLCAyLCAwLjYsIDAuNjQ4fSwKKyAgICB7MiwgMiwg
MC43LCAwLjc4NH0sCisgICAgezIsIDIsIDAuOCwgMC44OTZ9LAorICAgIHsyLCAyLCAwLjksIDAu
OTcyfSwKKyAgICB7NS41LCA1LCAwLjUsIDAuNDM2MTkwODg1MDU1OTc3N30sCisgICAgezEwLCAw
LjUsIDAuOSwgMC4xNTE2NDA5MDk2MzQ2OTc5fSwKKyAgICB7MTAsIDUsIDAuNSwgMC4wODk3ODI3
MTQ4NDM3NX0sCisgICAgezEwLCA1LCAxLCAxfSwKKyAgICB7MTAsIDEwLCAwLjUsIDAuNX0sCisg
ICAgezIwLCA1LCAwLjgsIDAuNDU5ODc3MzI5NzU3NTc5MX0sCisgICAgezIwLCAxMCwgMC42LCAw
LjIxNDY4MTYxMDIzNzE3Mzl9LAorICAgIHsyMCwgMTAsIDAuOCwgMC45NTA3MzY0ODI2OTU3ODc1
fSwKKyAgICB7MjAsIDIwLCAwLjUsIDAuNX0sCisgICAgezIwLCAyMCwgMC42LCAwLjg5Nzk0MTM2
ODcxMDU5MTh9LAorICAgIHszMCwgMTAsIDAuNywgMC4yMjQxMjk3NDkxODA4MzY2fSwKKyAgICB7
MzAsIDEwLCAwLjgsIDAuNzU4NjQwNTQ4NzE5MjA4Nn0sCisgICAgezQwLCAyMCwgMC43LCAwLjcw
MDE3ODMyNDc0NzcwNjl9LAorICAgIHsxLCAwLjUsIDAuMSwgMC4wNTEzMTY3MDE5NDk0ODYyfSwK
KyAgICB7MSwgMC41LCAwLjIsIDAuMTA1NTcyODA5MDAwMDg0MX0sCisgICAgezEsIDAuNSwgMC4z
LCAwLjE2MzMzOTk3MzQ2NTkyNDV9LAorICAgIHsxLCAwLjUsIDAuNCwgMC4yMjU0MDMzMzA3NTg1
MTY2fSwKKyAgICB7MSwgMiwgMC4yLCAwLjM2fSwKKyAgICB7MSwgMywgMC4yLCAwLjQ4OH0sCisg
ICAgezEsIDQsIDAuMiwgMC41OTA0fSwKKyAgICB7MSwgNSwgMC4yLCAwLjY3MjMyfSwKKyAgICB7
MiwgMiwgMC4zLCAwLjIxNn0sCisgICAgezMsIDIsIDAuMywgMC4wODM3fSwKKyAgICB7NCwgMiwg
MC4zLCAwLjAzMDc4fSwKKyAgICB7NSwgMiwgMC4zLCAwLjAxMDkzNX0sCisKKyAgICAvLyBUaGVz
ZSB2YWx1ZXMgdGVzdCBzbWFsbCAmIGxhcmdlIHBvaW50cyBhbG9uZyB0aGUgcmFuZ2Ugb2YgdGhl
IEJldGEKKyAgICAvLyBmdW5jdGlvbi4KKyAgICAvLworICAgIC8vIFdoZW4gc2VsZWN0aW5nIHRl
c3QgcG9pbnRzLCByZW1lbWJlciB0aGF0IGlmIEJldGFJbmNvbXBsZXRlKHgsIHAsIHEpCisgICAg
Ly8gcmV0dXJucyB0aGUgc2FtZSB2YWx1ZSB0byB3aXRoaW4gdGhlIGxpbWl0cyBvZiBwcmVjaXNp
b24gb3ZlciBhIGxhcmdlCisgICAgLy8gZG9tYWluIG9mIHRoZSBpbnB1dCwgeCwgdGhlbiBCZXRh
SW5jb21wbGV0ZUludihhbHBoYSwgcCwgcSkgbWF5IHJldHVybiBhbgorICAgIC8vIGVzc2VudGlh
bGx5IGFyYml0cmFyeSB2YWx1ZSB3aGVyZSBCZXRhSW5jb21wbGV0ZSh4LCBwLCBxKSA9fiBhbHBo
YS4KKworICAgIC8vIEJldGFSZWd1bGFyaXplZFt4LCAwLjAwMDAxLCAwLjAwMDAxXSwKKyAgICAv
LyBGb3IgeCBpbiB7fjAuMDAxIC4uLiB+MC45OTl9LCA9PiB+MC41CisgICAgezFlLTUsIDFlLTUs
IDFlLTUsIDAuNDk5OTQyNDM4ODE4NDYzODMxMX0sCisgICAgezFlLTUsIDFlLTUsICgxLjAgLSAx
ZS04KSwgMC41MDAwOTIwOTQ4Mzg5MjMyOTY0fSwKKworICAgIC8vIEJldGFSZWd1bGFyaXplZFt4
LCAwLjAwMDAxLCAxMDAwMF0uCisgICAgLy8gRm9yIHggaW4ge35lcHNpbG9uIC4uLiAxLjB9LCA9
PiB+MQorICAgIHsxZS01LCAxZTUsIDFlLTYsIDAuOTk5OTgxNzcwODEzMDA2NjkzNn0sCisgICAg
ezFlLTUsIDFlNSwgKDEuMCAtIDFlLTcpLCAxLjB9LAorCisgICAgLy8gQmV0YVJlZ3VsYXJpemVk
W3gsIDEwMDAwLCAwLjAwMDAxXS4KKyAgICAvLyBGb3IgeCBpbiB7MCAuLiAxLWVwc2lsb259LCA9
PiB+MAorICAgIHsxZTUsIDFlLTUsIDFlLTYsIDB9LAorICAgIHsxZTUsIDFlLTUsICgxLjAgLSAx
ZS02KSwgMS44MjI5MTg2OTkzMzA2MzY5ZS01fSwKK307CisKK1RFU1QoQmV0YVRlc3QsIEJldGFJ
bmNvbXBsZXRlKSB7CisgIGZvciAoY29uc3QgYXV0byYgZGF0YSA6IGtCZXRhVGFibGUpIHsKKyAg
ICBhdXRvIHZhbHVlID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpCZXRhSW5jb21wbGV0ZShkYXRh
LngsIGRhdGEucCwgZGF0YS5xKTsKKworICAgIC8vIExvZyB1c2luZyB0aGUgV29sZnJhbS1hbHBo
YSBmdW5jdGlvbiBuYW1lICYgcGFyYW1ldGVycy4KKyAgICBFWFBFQ1RfTkVBUih2YWx1ZSwgZGF0
YS5hbHBoYSwgMWUtMTIpCisgICAgICAgIDw8ICIgQmV0YVJlZ3VsYXJpemVkWyIgPDwgZGF0YS54
IDw8ICIsICIgPDwgZGF0YS5wIDw8ICIsICIgPDwgZGF0YS5xCisgICAgICAgIDw8ICJdICAoZXhw
ZWN0ZWQ9IiA8PCBkYXRhLmFscGhhIDw8ICIpICAtPiAiIDw8IHZhbHVlOworICB9Cit9CisKK1RF
U1QoQmV0YVRlc3QsIEJldGFJbmNvbXBsZXRlSW52KSB7CisgIGZvciAoY29uc3QgYXV0byYgZGF0
YSA6IGtCZXRhVGFibGUpIHsKKyAgICBhdXRvIHZhbHVlID0KKyAgICAgICAgYWJzbDo6cmFuZG9t
X2ludGVybmFsOjpCZXRhSW5jb21wbGV0ZUludihkYXRhLnAsIGRhdGEucSwgZGF0YS5hbHBoYSk7
CisKKyAgICAvLyBMb2cgdXNpbmcgdGhlIFdvbGZyYW0tYWxwaGEgZnVuY3Rpb24gbmFtZSAmIHBh
cmFtZXRlcnMuCisgICAgRVhQRUNUX05FQVIodmFsdWUsIGRhdGEueCwgMWUtNikKKyAgICAgICAg
PDwgIiBJbnZlcnNlQmV0YVJlZ3VsYXJpemVkWyIgPDwgZGF0YS5hbHBoYSA8PCAiLCAiIDw8IGRh
dGEucCA8PCAiLCAiCisgICAgICAgIDw8IGRhdGEucSA8PCAiXSAgKGV4cGVjdGVkPSIgPDwgZGF0
YS54IDw8ICIpICAtPiAiIDw8IHZhbHVlOworICB9Cit9CisKK1RFU1QoTWF4RXJyb3JUb2xlcmFu
Y2UsIE1heEVycm9yVG9sZXJhbmNlKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUs
IGRvdWJsZT4+IGNhc2VzID0geworICAgICAgezAuMDAwMDAwMSwgOC44NjIyN2UtOCAqIDEuNDE0
MjEzNTYyMzd9LAorICAgICAgezAuMDAwMDEsIDguODYyMjdlLTYgKiAxLjQxNDIxMzU2MjM3fSwK
KyAgICAgIHswLjUsIDAuNDc2OTM2Mjc2MjA0NCAqIDEuNDE0MjEzNTYyMzd9LAorICAgICAgezAu
NiwgMC41OTUxMTYwODE0NDk5ICogMS40MTQyMTM1NjIzN30sCisgICAgICB7MC45OTk5OSwgMy4x
MjM0MTMyNzQzICogMS40MTQyMTM1NjIzN30sCisgICAgICB7MC45OTk5OTk5LCAzLjc2NjU2MjU4
MTYgKiAxLjQxNDIxMzU2MjM3fSwKKyAgICAgIHswLjk5OTk5OTk0NCwgMy44NDAzODUwNjkwNTY2
OTg1ICogMS40MTQyMTM1NjIzN30sCisgICAgICB7MC45OTk5OTk5OTksIDQuMzIwMDA1Mzg0OTEz
NDQ1MiAqIDEuNDE0MjEzNTYyMzd9fTsKKyAgZm9yIChhdXRvIGVudHJ5IDogY2FzZXMpIHsKKyAg
ICBFWFBFQ1RfTkVBUihhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok1heEVycm9yVG9sZXJhbmNlKGVu
dHJ5LmZpcnN0KSwKKyAgICAgICAgICAgICAgICBlbnRyeS5zZWNvbmQsIDFlLTgpOworICB9Cit9
CisKK1RFU1QoWlNjb3JlLCBXaXRoU2FtZU1lYW4pIHsKKyAgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpEaXN0cmlidXRpb25Nb21lbnRzIG07CisgIG0ubiA9IDEwMDsKKyAgbS5tZWFuID0gNTsKKyAg
bS52YXJpYW5jZSA9IDE7CisgIEVYUEVDVF9ORUFSKGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6WlNj
b3JlKDUsIG0pLCAwLCAxZS0xMik7CisKKyAgbS5uID0gMTsKKyAgbS5tZWFuID0gMDsKKyAgbS52
YXJpYW5jZSA9IDE7CisgIEVYUEVDVF9ORUFSKGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6WlNjb3Jl
KDAsIG0pLCAwLCAxZS0xMik7CisKKyAgbS5uID0gMTAwMDA7CisgIG0ubWVhbiA9IC01OworICBt
LnZhcmlhbmNlID0gMTAwOworICBFWFBFQ1RfTkVBUihhYnNsOjpyYW5kb21faW50ZXJuYWw6OlpT
Y29yZSgtNSwgbSksIDAsIDFlLTEyKTsKK30KKworVEVTVChaU2NvcmUsIERpZmZlcmVudE1lYW4p
IHsKKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25Nb21lbnRzIG07CisgIG0u
biA9IDEwMDsKKyAgbS5tZWFuID0gNTsKKyAgbS52YXJpYW5jZSA9IDE7CisgIEVYUEVDVF9ORUFS
KGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6WlNjb3JlKDQsIG0pLCAxMCwgMWUtMTIpOworCisgIG0u
biA9IDE7CisgIG0ubWVhbiA9IDA7CisgIG0udmFyaWFuY2UgPSAxOworICBFWFBFQ1RfTkVBUihh
YnNsOjpyYW5kb21faW50ZXJuYWw6OlpTY29yZSgtMSwgbSksIDEsIDFlLTEyKTsKKworICBtLm4g
PSAxMDAwMDsKKyAgbS5tZWFuID0gLTU7CisgIG0udmFyaWFuY2UgPSAxMDA7CisgIEVYUEVDVF9O
RUFSKGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6WlNjb3JlKC00LCBtKSwgLTEwLCAxZS0xMik7Cit9
Cit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0
cmlidXRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9ucy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM0ZGIzYjMyNmY0Y2Y5NTVkZGVkMmQxNzRiZjZhYTgwYzVlN2VkNGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9ucy5oCkBAIC0wLDAg
KzEsODIgQEAKKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZu
ZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTlNfSF8KKyNkZWZpbmUgQUJTTF9S
QU5ET01fSU5URVJOQUxfRElTVFJJQlVUSU9OU19IXworCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fY2FsbGVyLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvdW5p
Zm9ybV9oZWxwZXIuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRl
cm5hbCB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRD4KK3N0cnVjdCBEaXN0cmlidXRpb25Gb3JtYXRU
cmFpdHM7CisKKy8vIFVuaWZvcm1JbXBsIGltcGxlbWVudHMgdGhlIGNvcmUgbG9naWMgb2YgdGhl
IFVuaWZvcm08VD4gY2FsbCwgd2hpY2ggaXMgdG8KKy8vIHNlbGVjdCB0aGUgY29ycmVjdCBkaXN0
cmlidXRpb24gdHlwZSwgY29tcHV0ZSB0aGUgYm91bmRzIGJhc2VkIG9uIHRoZQorLy8gaW50ZXJ2
YWwgdGFnLCBhbmQgdGhlbiBnZW5lcmF0ZSBhIHZhbHVlLgordGVtcGxhdGUgPHR5cGVuYW1lIE51
bVR5cGUsIHR5cGVuYW1lIFRhZ1R5cGUsIHR5cGVuYW1lIFVSQkc+CitOdW1UeXBlIFVuaWZvcm1J
bXBsKFRhZ1R5cGUgdGFnLAorICAgICAgICAgICAgICAgICAgICBVUkJHJiB1cmJnLCAgLy8gTk9M
SU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAgTnVtVHlwZSBsbywg
TnVtVHlwZSBoaSkgeworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgc3RkOjppc19hcml0aG1ldGlj
PE51bVR5cGU+Ojp2YWx1ZSwKKyAgICAgICJhYnNsOjpVbmlmb3JtPFQ+KCkgbXVzdCB1c2UgYW4g
aW50ZWdlciBvciByZWFsIHBhcmFtZXRlciB0eXBlLiIpOworCisgIHVzaW5nIGRpc3RyaWJ1dGlv
bl90ID0KKyAgICAgIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19pbnRlZ3JhbDxO
dW1UeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnVu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxOdW1UeXBlPiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxOdW1UeXBlPj46OnR5cGU7
CisgIHVzaW5nIGZvcm1hdF90ID0gcmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25Gb3JtYXRU
cmFpdHM8ZGlzdHJpYnV0aW9uX3Q+OworCisgIGF1dG8gYSA9IHJhbmRvbV9pbnRlcm5hbDo6dW5p
Zm9ybV9sb3dlcl9ib3VuZDxOdW1UeXBlPih0YWcsIGxvLCBoaSk7CisgIGF1dG8gYiA9IHJhbmRv
bV9pbnRlcm5hbDo6dW5pZm9ybV91cHBlcl9ib3VuZDxOdW1UeXBlPih0YWcsIGxvLCBoaSk7Cisg
IC8vIFRPRE8obGFyKTogaXQgZG9lc24ndCBtYWtlIGEgbG90IG9mIHNlbnNlIHRvIGFzayBmb3Ig
YSByYW5kb20gbnVtYmVyIGluIGFuCisgIC8vIGVtcHR5IHJhbmdlLiAgUmlnaHQgbm93IHdlIGp1
c3QgcmV0dXJuIGEgYm91bmRhcnktLWV2ZW4gdGhvdWdoIHRoYXQKKyAgLy8gYm91bmRhcnkgaXMg
bm90IGFuIGFjY2VwdGFibGUgdmFsdWUhICBJcyB0aGVyZSBzb21ldGhpbmcgYmV0dGVyIHdlIGNh
biBkbworICAvLyBoZXJlPworCisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsK
KyAgaWYgKGEgPiBiKSByZXR1cm4gYTsKKyAgcmV0dXJuIERpc3RyaWJ1dGlvbkNhbGxlcjxnZW5f
dD46OnRlbXBsYXRlIENhbGw8ZGlzdHJpYnV0aW9uX3QsIGZvcm1hdF90PigKKyAgICAgICZ1cmJn
LCBhLCBiKTsKK30KKworLy8gSW4gdGhlIGFic2VuY2Ugb2YgYW4gZXhwbGljaXRseSBwcm92aWRl
ZCByZXR1cm4tdHlwZSwgdGhlIHRlbXBsYXRlCisvLyAidW5pZm9ybV9pbmZlcnJlZF9yZXR1cm5f
dDxBLCBCPiIgaXMgdXNlZCB0byBkZXJpdmUgYSBzdWl0YWJsZSB0eXBlLCBiYXNlZCBvbgorLy8g
dGhlIGRhdGEtdHlwZXMgb2YgdGhlIGVuZHBvaW50LWFyZ3VtZW50cyB7QSBsbywgQiBoaX0uCisv
LworLy8gR2l2ZW4gZW5kcG9pbnRzIHtBIGxvLCBCIGhpfSwgb25lIG9mIHtBLCBCfSB3aWxsIGJl
IGNob3NlbiBhcyB0aGUKKy8vIHJldHVybi10eXBlLCBpZiBvbmUgdHlwZSBjYW4gYmUgaW1wbGlj
aXRseSBjb252ZXJ0ZWQgaW50byB0aGUgb3RoZXIsIGluIGEKKy8vIGxvc3NsZXNzIHdheS4gVGhl
IHRlbXBsYXRlICJpc193aWRlbmluZ19jb252ZXJ0aWJsZSIgaW1wbGVtZW50cyB0aGUKKy8vIGNv
bXBpbGUtdGltZSBsb2dpYyBmb3IgZGVjaWRpbmcgaWYgc3VjaCBhIGNvbnZlcnNpb24gaXMgcG9z
c2libGUuCisvLworLy8gSWYgbm8gc3VjaCBjb252ZXJzaW9uIGJldHdlZW4ge0EsIEJ9IGV4aXN0
cywgdGhlbiB0aGUgb3ZlcmxvYWQgZm9yCisvLyBhYnNsOjpVbmlmb3JtKCkgd2lsbCBiZSBkaXNj
YXJkZWQsIGFuZCB0aGUgY2FsbCB3aWxsIGJlIGlsbC1mb3JtZWQuCisvLyBSZXR1cm4tdHlwZSBm
b3IgYWJzbDo6VW5pZm9ybSgpIHdoZW4gdGhlIHJldHVybi10eXBlIGlzIGluZmVycmVkLgordGVt
cGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+Cit1c2luZyB1bmlmb3JtX2luZmVycmVkX3Jl
dHVybl90ID0KKyAgICBhYnNsOjplbmFibGVfaWZfdDxhYnNsOjpkaXNqdW5jdGlvbjxpc193aWRl
bmluZ19jb252ZXJ0aWJsZTxBLCBCPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpc193aWRlbmluZ19jb252ZXJ0aWJsZTxCLCBBPj46OnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzX3dpZGVuaW5nX2NvbnZlcnRpYmxlPEEsIEI+Ojp2YWx1ZSwgQiwgQT46OnR5
cGU+OworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTlNfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL2V4cGxpY2l0X3NlZWRfc2VxLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY2
MGVjZTUwMDE3NWZmODRiMDE2ZDU1NzcwZWNiYzkwZjE5ZDY3ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcS5oCkBAIC0wLDAgKzEsODcg
QEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFC
U0xfUkFORE9NX0lOVEVSTkFMX0VYUExJQ0lUX1NFRURfU0VRX0hfCisjZGVmaW5lIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX0VYUExJQ0lUX1NFRURfU0VRX0hfCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+
CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGluaXRp
YWxpemVyX2xpc3Q+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8dmVjdG9yPgorCitu
YW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gVGhpcyBj
bGFzcyBjb25mb3JtcyB0byB0aGUgQysrIFN0YW5kYXJkICJTZWVkIFNlcXVlbmNlIiBjb25jZXB0
CisvLyBbcmFuZC5yZXEuc2VlZHNlcV0uCisvLworLy8gQW4gIkV4cGxpY2l0U2VlZFNlcSIgaXMg
bWVhbnQgdG8gcHJvdmlkZSBhIGNvbmZvcm1hbnQgaW50ZXJmYWNlIGZvcgorLy8gZm9yd2FyZGlu
ZyBwcmUtY29tcHV0ZWQgc2VlZCBtYXRlcmlhbCB0byB0aGUgY29uc3RydWN0b3Igb2YgYSBjbGFz
cworLy8gY29uZm9ybWluZyB0byB0aGUgIlVuaWZvcm0gUmFuZG9tIEJpdCBHZW5lcmF0b3IiIGNv
bmNlcHQuIFRoaXMgY2xhc3MgbWFrZXMgbm8KKy8vIGF0dGVtcHQgdG8gbXV0YXRlIHRoZSBzdGF0
ZSBwcm92aWRlZCBieSBpdHMgY29uc3RydWN0b3IsIGFuZCByZXR1cm5zIGl0CisvLyBkaXJlY3Rs
eSB2aWEgRXhwbGljaXRTZWVkU2VxOjpnZW5lcmF0ZSgpLgorLy8KKy8vIElmIHRoaXMgY2xhc3Mg
aXMgYXNrZWQgdG8gZ2VuZXJhdGUgbW9yZSBzZWVkIG1hdGVyaWFsIHRoYW4gd2FzIHByb3ZpZGVk
IHRvCisvLyB0aGUgY29uc3RydWN0b3IsIHRoZW4gdGhlIHJlbWFpbmluZyBieXRlcyB3aWxsIGJl
IGZpbGxlZCB3aXRoIGRldGVybWluaXN0aWMsCisvLyBub25yYW5kb20gZGF0YS4KK2NsYXNzIEV4
cGxpY2l0U2VlZFNlcSB7CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IHVpbnQzMl90
OworCisgIEV4cGxpY2l0U2VlZFNlcSgpIDogc3RhdGVfKCkge30KKworICAvLyBDb3B5IGFuZCBt
b3ZlIGJvdGggYWxsb3dlZC4KKyAgRXhwbGljaXRTZWVkU2VxKGNvbnN0IEV4cGxpY2l0U2VlZFNl
cSYgb3RoZXIpID0gZGVmYXVsdDsKKyAgRXhwbGljaXRTZWVkU2VxJiBvcGVyYXRvcj0oY29uc3Qg
RXhwbGljaXRTZWVkU2VxJiBvdGhlcikgPSBkZWZhdWx0OworICBFeHBsaWNpdFNlZWRTZXEoRXhw
bGljaXRTZWVkU2VxJiYgb3RoZXIpID0gZGVmYXVsdDsKKyAgRXhwbGljaXRTZWVkU2VxJiBvcGVy
YXRvcj0oRXhwbGljaXRTZWVkU2VxJiYgb3RoZXIpID0gZGVmYXVsdDsKKworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSXRlcmF0b3I+CisgIEV4cGxpY2l0U2VlZFNlcShJdGVyYXRvciBiZWdpbiwgSXRl
cmF0b3IgZW5kKSB7CisgICAgZm9yIChhdXRvIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgaXQrKykg
eworICAgICAgc3RhdGVfLnB1c2hfYmFjaygqaXQgJiAweGZmZmZmZmZmKTsKKyAgICB9CisgIH0K
KworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgRXhwbGljaXRTZWVkU2VxKHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxUPiBpbCkKKyAgICAgIDogRXhwbGljaXRTZWVkU2VxKGlsLmJlZ2luKCksIGls
LmVuZCgpKSB7fQorCisgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gc3RhdGVfLnNpemUo
KTsgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRJdGVyYXRvcj4KKyAgdm9pZCBwYXJhbShP
dXRJdGVyYXRvciBvdXQpIGNvbnN0IHsKKyAgICBzdGQ6OmNvcHkoc3RkOjpiZWdpbihzdGF0ZV8p
LCBzdGQ6OmVuZChzdGF0ZV8pLCBvdXQpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE91
dEl0ZXJhdG9yPgorICB2b2lkIGdlbmVyYXRlKE91dEl0ZXJhdG9yIGJlZ2luLCBPdXRJdGVyYXRv
ciBlbmQpIHsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGJlZ2luICE9IGVuZDsgYmVnaW4r
KykgeworICAgICAgKmJlZ2luID0gc3RhdGVfLmVtcHR5KCkgPyAwIDogc3RhdGVfW2luZGV4Kytd
OworICAgICAgaWYgKGluZGV4ID49IHN0YXRlXy5zaXplKCkpIHsKKyAgICAgICAgaW5kZXggPSAw
OworICAgICAgfQorICAgIH0KKyAgfQorCisgcHJvdGVjdGVkOgorICBzdGQ6OnZlY3Rvcjx1aW50
MzJfdD4gc3RhdGVfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9FWFBM
SUNJVF9TRUVEX1NFUV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2V4cGxp
Y2l0X3NlZWRfc2VxX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZXhwbGljaXRfc2Vl
ZF9zZXFfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTVhZDczOTQ4YjkzY2YwYzU1ODk5YjJkNWMxMzk2
YWQ3NGE1ZWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2V4cGxp
Y2l0X3NlZWRfc2VxX3Rlc3QuY2MKQEAgLTAsMCArMSwyMDQgQEAKKy8vIENvcHlyaWdodCAyMDE3
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwv
ZXhwbGljaXRfc2VlZF9zZXEuaCIKKworI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHJh
bmRvbT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3NlZWRfc2VxdWVu
Y2VzLmgiCisKK25hbWVzcGFjZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBTc2VxPgorYm9vbCBD
b25mb3Jtc1RvSW50ZXJmYWNlKCkgeworICAvLyBDaGVjayB0aGF0IHRoZSBTZWVkU2VxdWVuY2Ug
Y2FuIGJlIGRlZmF1bHQtY29uc3RydWN0ZWQuCisgIHsgU3NlcSBkZWZhdWx0X2NvbnN0cnVjdGVk
X3NlcTsgfQorICAvLyBDaGVjayB0aGF0IHRoZSBTZWVkU2VxdWVuY2UgY2FuIGJlIGNvbnN0cnVj
dGVkIHdpdGggdHdvIGl0ZXJhdG9ycy4KKyAgeworICAgIHVpbnQzMl90IGluaXRfYXJyYXlbXSA9
IHsxLCAzLCA1LCA3LCA5fTsKKyAgICBTc2VxIGl0ZXJhdG9yX2NvbnN0cnVjdGVkX3NlcShpbml0
X2FycmF5LCAmaW5pdF9hcnJheVs1XSk7CisgIH0KKyAgLy8gQ2hlY2sgdGhhdCB0aGUgU2VlZFNl
cXVlbmNlIGNhbiBiZSBzdGQ6OmluaXRpYWxpemVyX2xpc3QtY29uc3RydWN0ZWQuCisgIHsgU3Nl
cSBsaXN0X2NvbnN0cnVjdGVkX3NlcSA9IHsxLCAzLCA1LCA3LCA5LCAxMSwgMTN9OyB9CisgIC8v
IENoZWNrIHRoYXQgcGFyYW0oKSBhbmQgc2l6ZSgpIHJldHVybiBzdGF0ZSBwcm92aWRlZCB0byBj
b25zdHJ1Y3Rvci4KKyAgeworICAgIHVpbnQzMl90IGluaXRfYXJyYXlbXSA9IHsxLCAyLCAzLCA0
LCA1fTsKKyAgICBTc2VxIHNlcShpbml0X2FycmF5LCAmaW5pdF9hcnJheVtBQlNMX0FSUkFZU0la
RShpbml0X2FycmF5KV0pOworICAgIEVYUEVDVF9FUShzZXEuc2l6ZSgpLCBBQlNMX0FSUkFZU0la
RShpbml0X2FycmF5KSk7CisKKyAgICB1aW50MzJfdCBzdGF0ZV9hcnJheVtBQlNMX0FSUkFZU0la
RShpbml0X2FycmF5KV07CisgICAgc2VxLnBhcmFtKHN0YXRlX2FycmF5KTsKKworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgQUJTTF9BUlJBWVNJWkUoc3RhdGVfYXJyYXkpOyBpKyspIHsKKyAgICAg
IEVYUEVDVF9FUShzdGF0ZV9hcnJheVtpXSwgaSArIDEpOworICAgIH0KKyAgfQorICAvLyBDaGVj
ayBmb3IgcHJlc2VuY2Ugb2YgZ2VuZXJhdGUoKSBtZXRob2QuCisgIHsKKyAgICBTc2VxIHNlcTsK
KyAgICB1aW50MzJfdCBzZWVkc1s1XTsKKworICAgIHNlcS5nZW5lcmF0ZShzZWVkcywgJnNlZWRz
W0FCU0xfQVJSQVlTSVpFKHNlZWRzKV0pOworICB9CisgIHJldHVybiB0cnVlOworfQorfSAgLy8g
bmFtZXNwYWNlCisKK1RFU1QoU2VlZFNlcXVlbmNlcywgQ2hlY2tJbnRlcmZhY2VzKSB7CisgIC8v
IENvbnRyb2wgY2FzZQorICBFWFBFQ1RfVFJVRShDb25mb3Jtc1RvSW50ZXJmYWNlPHN0ZDo6c2Vl
ZF9zZXE+KCkpOworCisgIC8vIEFic2VpbCBjbGFzc2VzCisgIEVYUEVDVF9UUlVFKENvbmZvcm1z
VG9JbnRlcmZhY2U8YWJzbDo6cmFuZG9tX2ludGVybmFsOjpFeHBsaWNpdFNlZWRTZXE+KCkpOwor
fQorCitURVNUKEV4cGxpY2l0U2VlZFNlcSwgRGVmYXVsdENvbnN0cnVjdG9yR2VuZXJhdGVzWmVy
b3MpIHsKKyAgY29uc3Qgc2l6ZV90IGtOdW1CbG9ja3MgPSAxMjg7CisKKyAgdWludDMyX3Qgb3V0
cHV0c1trTnVtQmxvY2tzXTsKKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpFeHBsaWNpdFNlZWRT
ZXEgc2VxOworICBzZXEuZ2VuZXJhdGUob3V0cHV0cywgJm91dHB1dHNba051bUJsb2Nrc10pOwor
CisgIGZvciAodWludDMyX3QmIHNlZWQgOiBvdXRwdXRzKSB7CisgICAgRVhQRUNUX0VRKHNlZWQs
IDApOworICB9Cit9CisKK1RFU1QoRXhwbGljaXRTZWVxU2VxLCBTZWVkTWF0ZXJpYWxJc0Zvcndh
cmRlZElkZW50aWNhbGx5KSB7CisgIGNvbnN0IHNpemVfdCBrTnVtQmxvY2tzID0gMTI4OworCisg
IHVpbnQzMl90IHNlZWRfbWF0ZXJpYWxba051bUJsb2Nrc107CisgIHN0ZDo6cmFuZG9tX2Rldmlj
ZSB1cmFuZG9teyIvZGV2L3VyYW5kb20ifTsKKyAgZm9yICh1aW50MzJfdCYgc2VlZCA6IHNlZWRf
bWF0ZXJpYWwpIHsKKyAgICBzZWVkID0gdXJhbmRvbSgpOworICB9CisgIGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6RXhwbGljaXRTZWVkU2VxIHNlcShzZWVkX21hdGVyaWFsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlZWRfbWF0ZXJpYWxba051bUJsb2Nr
c10pOworCisgIC8vIENoZWNrIHRoYXQgb3V0cHV0IGlzIHNhbWUgYXMgc2VlZC1tYXRlcmlhbCBw
cm92aWRlZCB0byBjb25zdHJ1Y3Rvci4KKyAgeworICAgIGNvbnN0IHNpemVfdCBrTnVtR2VuZXJh
dGVkID0ga051bUJsb2NrcyAvIDI7CisgICAgdWludDMyX3Qgb3V0cHV0c1trTnVtR2VuZXJhdGVk
XTsKKyAgICBzZXEuZ2VuZXJhdGUob3V0cHV0cywgJm91dHB1dHNba051bUdlbmVyYXRlZF0pOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUdlbmVyYXRlZDsgaSsrKSB7CisgICAgICBF
WFBFQ1RfRVEob3V0cHV0c1tpXSwgc2VlZF9tYXRlcmlhbFtpXSk7CisgICAgfQorICB9CisgIC8v
IENoZWNrIHRoYXQgU2VlZFNlcXVlbmNlIGlzIHN0YXRlbGVzcyBiZXR3ZWVuIGludm9jYXRpb25z
OiBEZXNwaXRlIHRoZSBsYXN0CisgIC8vIGludm9jYXRpb24gb2YgZ2VuZXJhdGUoKSBvbmx5IGNv
bnN1bWluZyBoYWxmIG9mIHRoZSBpbnB1dC1lbnRyb3B5LCB0aGUgc2FtZQorICAvLyBlbnRyb3B5
IHdpbGwgYmUgcmVjeWNsZWQgZm9yIHRoZSBuZXh0IGludm9jYXRpb24uCisgIHsKKyAgICBjb25z
dCBzaXplX3Qga051bUdlbmVyYXRlZCA9IGtOdW1CbG9ja3M7CisgICAgdWludDMyX3Qgb3V0cHV0
c1trTnVtR2VuZXJhdGVkXTsKKyAgICBzZXEuZ2VuZXJhdGUob3V0cHV0cywgJm91dHB1dHNba051
bUdlbmVyYXRlZF0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUdlbmVyYXRlZDsg
aSsrKSB7CisgICAgICBFWFBFQ1RfRVEob3V0cHV0c1tpXSwgc2VlZF9tYXRlcmlhbFtpXSk7Cisg
ICAgfQorICB9CisgIC8vIENoZWNrIHRoYXQgd2hlbiBtb3JlIHNlZWQtbWF0ZXJpYWwgaXMgYXNr
ZWQgZm9yIHRoYW4gaXMgcHJvdmlkZWQsIG5vbnplcm8KKyAgLy8gdmFsdWVzIGFyZSBzdGlsbCB3
cml0dGVuLgorICB7CisgICAgY29uc3Qgc2l6ZV90IGtOdW1HZW5lcmF0ZWQgPSBrTnVtQmxvY2tz
ICogMjsKKyAgICB1aW50MzJfdCBvdXRwdXRzW2tOdW1HZW5lcmF0ZWRdOworICAgIHNlcS5nZW5l
cmF0ZShvdXRwdXRzLCAmb3V0cHV0c1trTnVtR2VuZXJhdGVkXSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBrTnVtR2VuZXJhdGVkOyBpKyspIHsKKyAgICAgIEVYUEVDVF9FUShvdXRwdXRz
W2ldLCBzZWVkX21hdGVyaWFsW2kgJSBrTnVtQmxvY2tzXSk7CisgICAgfQorICB9Cit9CisKK1RF
U1QoRXhwbGljaXRTZWVkU2VxLCBDb3B5QW5kTW92ZUNvbnN0cnVjdG9ycykgeworICB1c2luZyB0
ZXN0aW5nOjpFYWNoOworICB1c2luZyB0ZXN0aW5nOjpFcTsKKyAgdXNpbmcgdGVzdGluZzo6Tm90
OworICB1c2luZyB0ZXN0aW5nOjpQb2ludHdpc2U7CisKKyAgdWludDMyX3QgZW50cm9weVs0XTsK
KyAgc3RkOjpyYW5kb21fZGV2aWNlIHVyYW5kb20oIi9kZXYvdXJhbmRvbSIpOworICBmb3IgKHVp
bnQzMl90JiBlbnRyeSA6IGVudHJvcHkpIHsKKyAgICBlbnRyeSA9IHVyYW5kb20oKTsKKyAgfQor
ICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkV4cGxpY2l0U2VlZFNlcSBzZXFfZnJvbV9lbnRyb3B5
KHN0ZDo6YmVnaW4oZW50cm9weSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjplbmQoZW50cm9weSkpOworICAvLyBDb3B5IGNv
bnN0cnVjdG9yLgorICB7CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpFeHBsaWNpdFNlZWRT
ZXEgc2VxX2NvcHkoc2VxX2Zyb21fZW50cm9weSk7CisgICAgRVhQRUNUX0VRKHNlcV9jb3B5LnNp
emUoKSwgc2VxX2Zyb21fZW50cm9weS5zaXplKCkpOworCisgICAgc3RkOjp2ZWN0b3I8dWludDMy
X3Q+IHNlZWRzXzE7CisgICAgc2VlZHNfMS5yZXNpemUoMTAwMCwgMCk7CisgICAgc3RkOjp2ZWN0
b3I8dWludDMyX3Q+IHNlZWRzXzI7CisgICAgc2VlZHNfMi5yZXNpemUoMTAwMCwgMSk7CisKKyAg
ICBzZXFfZnJvbV9lbnRyb3B5LmdlbmVyYXRlKHNlZWRzXzEuYmVnaW4oKSwgc2VlZHNfMS5lbmQo
KSk7CisgICAgc2VxX2NvcHkuZ2VuZXJhdGUoc2VlZHNfMi5iZWdpbigpLCBzZWVkc18yLmVuZCgp
KTsKKworICAgIEVYUEVDVF9USEFUKHNlZWRzXzEsIFBvaW50d2lzZShFcSgpLCBzZWVkc18yKSk7
CisgIH0KKyAgLy8gQXNzaWdubWVudCBvcGVyYXRvci4KKyAgeworICAgIGZvciAodWludDMyX3Qm
IGVudHJ5IDogZW50cm9weSkgeworICAgICAgZW50cnkgPSB1cmFuZG9tKCk7CisgICAgfQorICAg
IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6RXhwbGljaXRTZWVkU2VxIGFub3RoZXJfc2VxKHN0ZDo6
YmVnaW4oZW50cm9weSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjplbmQoZW50cm9weSkpOworCisgICAgc3RkOjp2ZWN0b3I8dWlu
dDMyX3Q+IHNlZWRzXzE7CisgICAgc2VlZHNfMS5yZXNpemUoMTAwMCwgMCk7CisgICAgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+IHNlZWRzXzI7CisgICAgc2VlZHNfMi5yZXNpemUoMTAwMCwgMCk7CisK
KyAgICBzZXFfZnJvbV9lbnRyb3B5LmdlbmVyYXRlKHNlZWRzXzEuYmVnaW4oKSwgc2VlZHNfMS5l
bmQoKSk7CisgICAgYW5vdGhlcl9zZXEuZ2VuZXJhdGUoc2VlZHNfMi5iZWdpbigpLCBzZWVkc18y
LmVuZCgpKTsKKworICAgIC8vIEFzc2VydCBwcmVjb25kaXRpb246IFNlcXVlbmNlcyBnZW5lcmF0
ZWQgYnkgc2VlZC1zZXF1ZW5jZXMgYXJlIG5vdCBlcXVhbC4KKyAgICBFWFBFQ1RfVEhBVChzZWVk
c18xLCBOb3QoUG9pbnR3aXNlKEVxKCksIHNlZWRzXzIpKSk7CisKKyAgICAvLyBBcHBseSB0aGUg
YXNzaWdubWVudC1vcGVyYXRvci4KKyAgICBhbm90aGVyX3NlcSA9IHNlcV9mcm9tX2VudHJvcHk7
CisKKyAgICAvLyBSZS1nZW5lcmF0ZSBzZWVkcy4KKyAgICBzZXFfZnJvbV9lbnRyb3B5LmdlbmVy
YXRlKHNlZWRzXzEuYmVnaW4oKSwgc2VlZHNfMS5lbmQoKSk7CisgICAgYW5vdGhlcl9zZXEuZ2Vu
ZXJhdGUoc2VlZHNfMi5iZWdpbigpLCBzZWVkc18yLmVuZCgpKTsKKworICAgIC8vIFNlZWRzIGdl
bmVyYXRlZCBieSBzZWVkLXNlcXVlbmNlcyBzaG91bGQgbm93IGJlIGVxdWFsLgorICAgIEVYUEVD
VF9USEFUKHNlZWRzXzEsIFBvaW50d2lzZShFcSgpLCBzZWVkc18yKSk7CisgIH0KKyAgLy8gTW92
ZSBjb25zdHJ1Y3Rvci4KKyAgeworICAgIC8vIEdldCBzZWVkcyBmcm9tIHNlZWQtc2VxdWVuY2Ug
Y29uc3RydWN0ZWQgZnJvbSBlbnRyb3B5LgorICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVk
c18xOworICAgIHNlZWRzXzEucmVzaXplKDEwMDAsIDApOworICAgIHNlcV9mcm9tX2VudHJvcHku
Z2VuZXJhdGUoc2VlZHNfMS5iZWdpbigpLCBzZWVkc18xLmVuZCgpKTsKKworICAgIC8vIEFwcGx5
IG1vdmUtY29uc3RydWN0b3IgbW92ZSB0aGUgc2VxdWVuY2UgdG8gYW5vdGhlciBpbnN0YW5jZS4K
KyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkV4cGxpY2l0U2VlZFNlcSBtb3ZlZF9zZXEoCisg
ICAgICAgIHN0ZDo6bW92ZShzZXFfZnJvbV9lbnRyb3B5KSk7CisgICAgc3RkOjp2ZWN0b3I8dWlu
dDMyX3Q+IHNlZWRzXzI7CisgICAgc2VlZHNfMi5yZXNpemUoMTAwMCwgMSk7CisgICAgbW92ZWRf
c2VxLmdlbmVyYXRlKHNlZWRzXzIuYmVnaW4oKSwgc2VlZHNfMi5lbmQoKSk7CisgICAgLy8gVmVy
aWZ5IHRoYXQgc2VlZHMgcHJvZHVjZWQgYnkgbW92ZWQtaW5zdGFuY2UgYXJlIHRoZSBzYW1lIGFz
IG9yaWdpbmFsLgorICAgIEVYUEVDVF9USEFUKHNlZWRzXzEsIFBvaW50d2lzZShFcSgpLCBzZWVk
c18yKSk7CisKKyAgICAvLyBWZXJpZnkgdGhhdCB0aGUgbW92ZWQtZnJvbSBpbnN0YW5jZSBub3cg
YmVoYXZlcyBsaWtlIGEKKyAgICAvLyBkZWZhdWx0LWNvbnN0cnVjdGVkIGluc3RhbmNlLgorICAg
IEVYUEVDVF9FUShzZXFfZnJvbV9lbnRyb3B5LnNpemUoKSwgMCk7CisgICAgc2VxX2Zyb21fZW50
cm9weS5nZW5lcmF0ZShzZWVkc18xLmJlZ2luKCksIHNlZWRzXzEuZW5kKCkpOworICAgIEVYUEVD
VF9USEFUKHNlZWRzXzEsIEVhY2goRXEoMCkpKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJu
YWwvZmFzdF91bmlmb3JtX2JpdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGRmOTJmM2Q5OWY3OTdkMTZjMmM5
YjMyYWEwOWFhODljMDc1NjU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVy
bmFsL2Zhc3RfdW5pZm9ybV9iaXRzLmgKQEAgLTAsMCArMSwyNjAgQEAKKy8vIENvcHlyaWdodCAy
MDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFM
X0ZBU1RfVU5JRk9STV9CSVRTX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0ZBU1Rf
VU5JRk9STV9CSVRTX0hfCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+
CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCituYW1lc3BhY2Ug
YWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKy8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgaW5wdXQgdmFsdWUgaXMgemVybyBvciBhIHBvd2VyIG9mIHR3by4gVXNlZnVsIGZvcgorLy8g
ZGV0ZXJtaW5pbmcgaWYgdGhlIHJhbmdlIG9mIG91dHB1dCB2YWx1ZXMgaW4gYSBVUkJHCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVUludFR5cGU+Citjb25zdGV4cHIgYm9vbCBJc1Bvd2VyT2ZUd29Pclpl
cm8oVUludFR5cGUgbikgeworICByZXR1cm4gKG4gPT0gMCkgfHwgKChuICYgKG4gLSAxKSkgPT0g
MCk7Cit9CisKKy8vIENvbXB1dGVzIHRoZSBsZW5ndGggb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBw
cm9kdWNpYmxlIGJ5IHRoZSBVUkJHLCBvciByZXR1cm5zCisvLyB6ZXJvIGlmIHRoYXQgd291bGQg
ZW5jb21wYXNzIHRoZSBlbnRpcmUgcmFuZ2Ugb2YgcmVwcmVzZW50YWJsZSB2YWx1ZXMgaW4KKy8v
IFVSQkc6OnJlc3VsdF90eXBlLgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Citjb25zdGV4cHIg
dHlwZW5hbWUgVVJCRzo6cmVzdWx0X3R5cGUgUmFuZ2VTaXplKCkgeworICB1c2luZyByZXN1bHRf
dHlwZSA9IHR5cGVuYW1lIFVSQkc6OnJlc3VsdF90eXBlOworICByZXR1cm4gKChVUkJHOjptYXgp
KCkgPT0gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCkgJiYKKyAgICAg
ICAgICAoVVJCRzo6bWluKSgpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+Ojps
b3dlc3QoKSkKKyAgICAgICAgICAgICA/IHJlc3VsdF90eXBlezB9CisgICAgICAgICAgICAgOiAo
VVJCRzo6bWF4KSgpIC0gKFVSQkc6Om1pbikoKSArIHJlc3VsdF90eXBlezF9OworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVUludFR5cGU+Citjb25zdGV4cHIgVUludFR5cGUgTGFyZ2VzdFBvd2Vy
T2ZUd29MZXNzVGhhbk9yRXF1YWxUbyhVSW50VHlwZSBuKSB7CisgIHJldHVybiBuIDwgMiA/IG4g
OiAyICogTGFyZ2VzdFBvd2VyT2ZUd29MZXNzVGhhbk9yRXF1YWxUbyhuIC8gMik7Cit9CisKKy8v
IEdpdmVuIGEgVVJCRyBnZW5lcmF0aW5nIHZhbHVlcyBpbiB0aGUgY2xvc2VkIGludGVydmFsIFtM
bywgSGldLCByZXR1cm5zIHRoZQorLy8gbGFyZ2VzdCBwb3dlciBvZiB0d28gbGVzcyB0aGFuIG9y
IGVxdWFsIHRvIGBIaSAtIExvICsgMWAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK2NvbnN0
ZXhwciB0eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlwZSBQb3dlck9mVHdvU3ViUmFuZ2VTaXplKCkg
eworICByZXR1cm4gTGFyZ2VzdFBvd2VyT2ZUd29MZXNzVGhhbk9yRXF1YWxUbyhSYW5nZVNpemU8
VVJCRz4oKSk7Cit9CisKKy8vIENvbXB1dGVzIHRoZSBmbG9vciBvZiB0aGUgbG9nLiAoaS5lLiwg
c3RkOjpmbG9vcihzdGQ6OmxvZzIoTikpOwordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgor
Y29uc3RleHByIFVJbnRUeXBlIEludGVnZXJMb2cyKFVJbnRUeXBlIG4pIHsKKyAgcmV0dXJuIChu
IDw9IDEpID8gMCA6IDEgKyBJbnRlZ2VyTG9nMihuIC8gMik7Cit9CisKKy8vIFJldHVybnMgdGhl
IG51bWJlciBvZiBiaXRzIG9mIHJhbmRvbW5lc3MgcmV0dXJuZWQgdGhyb3VnaAorLy8gYFBvd2Vy
T2ZUd29WYXJpYXRlKHVyYmcpYC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorY29uc3RleHBy
IHNpemVfdCBOdW1CaXRzKCkgeworICByZXR1cm4gUmFuZ2VTaXplPFVSQkc+KCkgPT0gMAorICAg
ICAgICAgICAgID8gc3RkOjpudW1lcmljX2xpbWl0czx0eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlw
ZT46OmRpZ2l0cworICAgICAgICAgICAgIDogSW50ZWdlckxvZzIoUG93ZXJPZlR3b1N1YlJhbmdl
U2l6ZTxVUkJHPigpKTsKK30KKworLy8gR2l2ZW4gYSBzaGlmdCB2YWx1ZSBgbmAsIGNvbnN0cnVj
dHMgYSBtYXNrIHdpdGggZXhhY3RseSB0aGUgbG93IGBuYCBiaXRzIHNldC4KKy8vIElmIGBuID09
IDBgLCBhbGwgYml0cyBhcmUgc2V0LgordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgorY29u
c3RleHByIFVJbnRUeXBlIE1hc2tGcm9tU2hpZnQoVUludFR5cGUgbikgeworICByZXR1cm4gKChu
ICUgc3RkOjpudW1lcmljX2xpbWl0czxVSW50VHlwZT46OmRpZ2l0cykgPT0gMCkKKyAgICAgICAg
ICAgICA/IH5VSW50VHlwZXswfQorICAgICAgICAgICAgIDogKFVJbnRUeXBlezF9IDw8IG4pIC0g
VUludFR5cGV7MX07Cit9CisKKy8vIEZhc3RVbmlmb3JtQml0cyBpbXBsZW1lbnRzIGEgZmFzdCBw
YXRoIHRvIGFjcXVpcmUgdW5pZm9ybSBpbmRlcGVuZGVudCBiaXRzCisvLyBmcm9tIGEgdHlwZSB3
aGljaCBjb25mb3JtcyB0byB0aGUgW3JhbmQucmVxLnVyYmddIGNvbmNlcHQuCisvLyBQYXJhbWV0
ZXJpemVkIGJ5OgorLy8gIGBVSW50VHlwZWA6IHRoZSByZXN1bHQgKG91dHB1dCkgdHlwZQorLy8K
Ky8vIFRoZSBzdGQ6OmluZGVwZW5kZW50X2JpdHNfZW5naW5lIFtyYW5kLmFkYXB0LmliaXRzXSBh
ZGFwdG9yIGNhbiBiZQorLy8gaW5zdGFudGlhdGVkIGZyb20gYW4gZXhpc3RpbmcgZ2VuZXJhdG9y
IHRocm91Z2ggYSBjb3B5IG9yIGEgbW92ZS4gSXQgZG9lcworLy8gbm90LCBob3dldmVyLCBmYWNp
bGl0YXRlIHRoZSBwcm9kdWN0aW9uIG9mIHBzZXVkb3JhbmRvbSBiaXRzIGZyb20gYW4gdW4tb3du
ZWQKKy8vIGdlbmVyYXRvciB0aGF0IHdpbGwgb3V0bGl2ZSB0aGUgc3RkOjppbmRlcGVuZGVudF9i
aXRzX2VuZ2luZSBpbnN0YW5jZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVSW50VHlwZSA9IHVpbnQ2
NF90PgorY2xhc3MgRmFzdFVuaWZvcm1CaXRzIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90
eXBlID0gVUludFR5cGU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZShtaW4pKCkg
eyByZXR1cm4gMDsgfQorICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1heCkoKSB7Cisg
ICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpOworICB9
CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCko
VVJCRyYgZyk7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorCisgcHJpdmF0ZToKKyAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3Vuc2lnbmVkPFVJbnRUeXBlPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgIkNsYXNzLXRlbXBsYXRlIEZhc3RVbmlmb3JtQml0czw+IG11c3QgYmUgcGFyYW1l
dGVyaXplZCB1c2luZyAiCisgICAgICAgICAgICAgICAgImFuIHVuc2lnbmVkIHR5cGUuIik7CisK
KyAgLy8gUG93ZXJPZlR3b1ZhcmlhdGUoKSBnZW5lcmF0ZXMgYSBzaW5nbGUgcmFuZG9tIHZhcmlh
dGUsIGFsd2F5cyByZXR1cm5pbmcgYQorICAvLyB2YWx1ZSBpbiB0aGUgaGFsZi1vcGVuIGludGVy
dmFsIGBbMCwgUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxVUkJHPigpKWAuIElmCisgIC8vIHRoZSBV
UkJHIGFscmVhZHkgZ2VuZXJhdGVzIHZhbHVlcyBpbiBhIHBvd2VyLW9mLXR3byByYW5nZSwgdGhl
IGdlbmVyYXRvcgorICAvLyBpdHNlbGYgaXMgdXNlZC4gT3RoZXJ3aXNlLCB3ZSB1c2UgcmVqZWN0
aW9uIHNhbXBsaW5nIG9uIHRoZSBsYXJnZXN0CisgIC8vIHBvc3NpYmxlIHBvd2VyLW9mLXR3by1z
aXplZCBzdWJyYW5nZS4KKyAgc3RydWN0IFBvd2VyT2ZUd29UYWcge307CisgIHN0cnVjdCBSZWpl
Y3Rpb25TYW1wbGluZ1RhZyB7fTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHN0YXRp
YyB0eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlwZSBQb3dlck9mVHdvVmFyaWF0ZSgKKyAgICAgIFVS
QkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgdXNpbmcgdGFnID0K
KyAgICAgICAgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxJc1Bvd2VyT2ZUd29Pclplcm8oUmFu
Z2VTaXplPFVSQkc+KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvd2Vy
T2ZUd29UYWcsIFJlamVjdGlvblNhbXBsaW5nVGFnPjo6dHlwZTsKKyAgICByZXR1cm4gUG93ZXJP
ZlR3b1ZhcmlhdGUoZywgdGFne30pOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+
CisgIHN0YXRpYyB0eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlwZSBQb3dlck9mVHdvVmFyaWF0ZSgK
KyAgICAgIFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgUG93
ZXJPZlR3b1RhZykgeworICAgIHJldHVybiBnKCkgLSAoVVJCRzo6bWluKSgpOworICB9CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHN0YXRpYyB0eXBlbmFtZSBVUkJHOjpyZXN1bHRf
dHlwZSBQb3dlck9mVHdvVmFyaWF0ZSgKKyAgICAgIFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGlt
ZS9yZWZlcmVuY2VzKQorICAgICAgUmVqZWN0aW9uU2FtcGxpbmdUYWcpIHsKKyAgICAvLyBVc2Ug
cmVqZWN0aW9uIHNhbXBsaW5nIHRvIGVuc3VyZSB1bmlmb3JtaXR5IGFjcm9zcyB0aGUgcmFuZ2Uu
CisgICAgdHlwZW5hbWUgVVJCRzo6cmVzdWx0X3R5cGUgdTsKKyAgICBkbyB7CisgICAgICB1ID0g
ZygpIC0gKFVSQkc6Om1pbikoKTsKKyAgICB9IHdoaWxlICh1ID49IFBvd2VyT2ZUd29TdWJSYW5n
ZVNpemU8VVJCRz4oKSk7CisgICAgcmV0dXJuIHU7CisgIH0KKworICAvLyBHZW5lcmF0ZSgpIGdl
bmVyYXRlcyBhIHJhbmRvbSB2YWx1ZSwgZGlzcGF0Y2hlZCBvbiB3aGV0aGVyCisgIC8vIHRoZSB1
bmRlcmx5aW5nIFVSQkcgbXVzdCBsb29wIG92ZXIgbXVsdGlwbGUgY2FsbHMgb3Igbm90LgorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgR2VuZXJhdGUoVVJCRyYgZywg
IC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dHJ1ZV90eXBlIC8qIGF2b2lkX2xvb3BpbmcgKi8pOworCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVUkJHPgorICByZXN1bHRfdHlwZSBHZW5lcmF0ZShVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRp
bWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmYWxzZV90eXBlIC8q
IGF2b2lkX2xvb3BpbmcgKi8pOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgor
dGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSBGYXN0VW5pZm9ybUJpdHM8VUludFR5
cGU+OjpyZXN1bHRfdHlwZQorRmFzdFVuaWZvcm1CaXRzPFVJbnRUeXBlPjo6b3BlcmF0b3IoKShV
UkJHJiBnKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAvLyBrUmFuZ2VNYXNr
IGlzIHRoZSBtYXNrIHVzZWQgd2hlbiBzYW1wbGluZyB2YXJpYXRlcyBmcm9tIHRoZSBVUkJHIHdo
ZW4gdGhlCisgIC8vIHdpZHRoIG9mIHRoZSBVUkJHIHJhbmdlIGlzIG5vdCBhIHBvd2VyIG9mIDIu
CisgIC8vIFkgPSAoMiBeIGtSYW5nZSkgLSAxCisgIHN0YXRpY19hc3NlcnQoKFVSQkc6Om1heCko
KSA+IChVUkJHOjptaW4pKCksCisgICAgICAgICAgICAgICAgIlVSQkc6Om1heCBhbmQgVVJCRzo6
bWluIG1heSBub3QgYmUgZXF1YWwuIik7CisgIHVzaW5nIHVyYmdfcmVzdWx0X3R5cGUgPSB0eXBl
bmFtZSBVUkJHOjpyZXN1bHRfdHlwZTsKKyAgY29uc3RleHByIHVyYmdfcmVzdWx0X3R5cGUga1Jh
bmdlTWFzayA9CisgICAgICBSYW5nZVNpemU8VVJCRz4oKSA9PSAwCisgICAgICAgICAgPyAoc3Rk
OjpudW1lcmljX2xpbWl0czx1cmJnX3Jlc3VsdF90eXBlPjo6bWF4KSgpCisgICAgICAgICAgOiBz
dGF0aWNfY2FzdDx1cmJnX3Jlc3VsdF90eXBlPihQb3dlck9mVHdvU3ViUmFuZ2VTaXplPFVSQkc+
KCkgLSAxKTsKKyAgcmV0dXJuIEdlbmVyYXRlKGcsIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9v
bCwgKGtSYW5nZU1hc2sgPj0gKG1heCkoKSk+e30pOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VUludFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIEZhc3RVbmlmb3Jt
Qml0czxVSW50VHlwZT46OnJlc3VsdF90eXBlCitGYXN0VW5pZm9ybUJpdHM8VUludFR5cGU+OjpH
ZW5lcmF0ZShVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dHJ1ZV90eXBlIC8qIGF2b2lkX2xvb3Bp
bmcgKi8pIHsKKyAgLy8gVGhlIHdpZHRoIG9mIHRoZSByZXN1bHRfdHlwZSBpcyBsZXNzIHRoYW4g
dGhhbiB0aGUgd2lkdGggb2YgdGhlIHJhbmRvbSBiaXRzCisgIC8vIHByb3ZpZGVkIGJ5IFVSQkcu
ICBUaHVzLCBnZW5lcmF0ZSBhIHNpbmdsZSB2YWx1ZSBhbmQgdGhlbiBzaW1wbHkgbWFzayBvZmYK
KyAgLy8gdGhlIHJlcXVpcmVkIGJpdHMuCisKKyAgcmV0dXJuIFBvd2VyT2ZUd29WYXJpYXRlKGcp
ICYgKG1heCkoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgordGVtcGxhdGUg
PHR5cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSBGYXN0VW5pZm9ybUJpdHM8VUludFR5cGU+OjpyZXN1
bHRfdHlwZQorRmFzdFVuaWZvcm1CaXRzPFVJbnRUeXBlPjo6R2VuZXJhdGUoVVJCRyYgZywgIC8v
IE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmZhbHNlX3R5cGUgLyogYXZvaWRfbG9vcGluZyAqLykgeworICAvLyBTZWUg
W3JhbmQuYWRhcHQuaWJpdHNdIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGNvbnN0YW50cyBjYWxj
dWxhdGVkIGJlbG93LgorICAvLworICAvLyBJdCBpcyBwcmVmZXJhYmxlIHRvIHVzZSByb3VnaGx5
IHRoZSBzYW1lIG51bWJlciBvZiBiaXRzIGZyb20gZWFjaCBnZW5lcmF0b3IKKyAgLy8gY2FsbCwg
aG93ZXZlciB0aGlzIGlzIG9ubHkgcG9zc2libGUgd2hlbiB0aGUgbnVtYmVyIG9mIGJpdHMgcHJv
dmlkZWQgYnkgdGhlCisgIC8vIFVSQkcgaXMgYSBkaXZpc29yIG9mIHRoZSBudW1iZXIgb2YgYml0
cyBpbiBgcmVzdWx0X3R5cGVgLiBJbiBhbGwgb3RoZXIKKyAgLy8gY2FzZXMsIHRoZSBudW1iZXIg
b2YgYml0cyB1c2VkIGNhbm5vdCBhbHdheXMgYmUgdGhlIHNhbWUsIGJ1dCBpdCBjYW4gYmUKKyAg
Ly8gZ3VhcmFudGVlZCB0byBiZSBvZmYgYnkgYXQgbW9zdCAxLiBUaHVzIHdlIHJ1biB0d28gbG9v
cHMsIG9uZSB3aXRoIGEKKyAgLy8gc21hbGxlciBiaXQtd2lkdGggc2l6ZSAoYGtTbWFsbFdpZHRo
YCkgYW5kIG9uZSB3aXRoIGEgbGFyZ2VyIHdpZHRoIHNpemUKKyAgLy8gKHNhdGlzZnlpbmcgYGtM
YXJnZVdpZHRoID09IGtTbWFsbFdpZHRoICsgMWApLiBUaGUgbG9vcHMgYXJlIHJ1bgorICAvLyBg
a1NtYWxsSXRlcnNgIGFuZCBga0xhcmdlSXRlcnNgIHRpbWVzIHJlc3BlY3RpdmVseSBzdWNoCisg
IC8vIHRoYXQKKyAgLy8KKyAgLy8gICAgYGtUb3RhbFdpZHRoID09IGtTbWFsbEl0ZXJzICoga1Nt
YWxsV2lkdGgKKyAgLy8gICAgICAgICAgICAgICAgICAgICsga0xhcmdlSXRlcnMgKiBrTGFyZ2VX
aWR0aGAKKyAgLy8KKyAgLy8gd2hlcmUgYGtUb3RhbFdpZHRoYCBpcyB0aGUgdG90YWwgbnVtYmVy
IG9mIGJpdHMgaW4gYHJlc3VsdF90eXBlYC4KKyAgLy8KKyAgY29uc3RleHByIHNpemVfdCBrVG90
YWxXaWR0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjpkaWdpdHM7CisgIGNv
bnN0ZXhwciBzaXplX3Qga1VyYmdXaWR0aCA9IE51bUJpdHM8VVJCRz4oKTsKKyAgY29uc3RleHBy
IHNpemVfdCBrVG90YWxJdGVycyA9CisgICAgICBrVG90YWxXaWR0aCAvIGtVcmJnV2lkdGggKyAo
a1RvdGFsV2lkdGggJSBrVXJiZ1dpZHRoICE9IDApOworICBjb25zdGV4cHIgc2l6ZV90IGtTbWFs
bFdpZHRoID0ga1RvdGFsV2lkdGggLyBrVG90YWxJdGVyczsKKyAgY29uc3RleHByIHNpemVfdCBr
TGFyZ2VXaWR0aCA9IGtTbWFsbFdpZHRoICsgMTsKKyAgLy8KKyAgLy8gQmVjYXVzZSBga0xhcmdl
V2lkdGggPT0ga1NtYWxsV2lkdGggKyAxYCwgaXQgZm9sbG93cyB0aGF0CisgIC8vCisgIC8vICAg
ICBga1RvdGFsV2lkdGggPT0ga1RvdGFsSXRlcnMgKiBrU21hbGxXaWR0aCArIGtMYXJnZUl0ZXJz
YAorICAvLworICAvLyBhbmQgdGhlcmVmb3JlCisgIC8vCisgIC8vICAgICBga0xhcmdlSXRlcnMg
PT0ga1RvdGFsV2lkdGggJSBrU21hbGxXaWR0aGAKKyAgLy8KKyAgLy8gSW50dWl0aXZlbHksIGVh
Y2ggaXRlcmF0aW9uIHdpdGggdGhlIGxhcmdlIHdpZHRoIGFjY291bnRzIGZvciBvbmUgdW5pdAor
ICAvLyBvZiB0aGUgcmVtYWluZGVyIHdoZW4gYGtUb3RhbFdpZHRoYCBpcyBkaXZpZGVkIGJ5IGBr
U21hbGxXaWR0aGAuIEFzCisgIC8vIG1lbnRpb25lZCBhYm92ZSwgaWYgdGhlIFVSQkcgd2lkdGgg
aXMgYSBkaXZpc29yIG9mIGBrVG90YWxXaWR0aGAsIHRoZW4KKyAgLy8gdGhlcmUgd291bGQgYmUg
bm8gbmVlZCBmb3IgYW55IGxhcmdlIGl0ZXJhdGlvbnMgKGkuZS4sIG9uZSBsb29wIHdvdWxkCisg
IC8vIHN1ZmZpY2UpLCBhbmQgaW5kZWVkLCBpbiB0aGlzIGNhc2UsIGBrTGFyZ2VJdGVyc2Agd291
bGQgYmUgemVyby4KKyAgY29uc3RleHByIHNpemVfdCBrTGFyZ2VJdGVycyA9IGtUb3RhbFdpZHRo
ICUga1NtYWxsV2lkdGg7CisgIGNvbnN0ZXhwciBzaXplX3Qga1NtYWxsSXRlcnMgPQorICAgICAg
KGtUb3RhbFdpZHRoIC0gKGtMYXJnZVdpZHRoICoga0xhcmdlSXRlcnMpKSAvIGtTbWFsbFdpZHRo
OworCisgIHN0YXRpY19hc3NlcnQoCisgICAgICBrVG90YWxXaWR0aCA9PSBrU21hbGxJdGVycyAq
IGtTbWFsbFdpZHRoICsga0xhcmdlSXRlcnMgKiBrTGFyZ2VXaWR0aCwKKyAgICAgICJFcnJvciBp
biBsb29waW5nIGNvbnN0YW50IGNhbGN1bGF0aW9ucy4iKTsKKworICByZXN1bHRfdHlwZSBzID0g
MDsKKworICBjb25zdGV4cHIgc2l6ZV90IGtTbWFsbFNoaWZ0ID0ga1NtYWxsV2lkdGggJSBrVG90
YWxXaWR0aDsKKyAgY29uc3RleHByIHJlc3VsdF90eXBlIGtTbWFsbE1hc2sgPSBNYXNrRnJvbVNo
aWZ0KHJlc3VsdF90eXBle2tTbWFsbFNoaWZ0fSk7CisgIGZvciAoc2l6ZV90IG4gPSAwOyBuIDwg
a1NtYWxsSXRlcnM7ICsrbikgeworICAgIHMgPSAocyA8PCBrU21hbGxTaGlmdCkgKworICAgICAg
ICAoc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KFBvd2VyT2ZUd29WYXJpYXRlKGcpKSAmIGtTbWFs
bE1hc2spOworICB9CisKKyAgY29uc3RleHByIHNpemVfdCBrTGFyZ2VTaGlmdCA9IGtMYXJnZVdp
ZHRoICUga1RvdGFsV2lkdGg7CisgIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBrTGFyZ2VNYXNrID0g
TWFza0Zyb21TaGlmdChyZXN1bHRfdHlwZXtrTGFyZ2VTaGlmdH0pOworICBmb3IgKHNpemVfdCBu
ID0gMDsgbiA8IGtMYXJnZUl0ZXJzOyArK24pIHsKKyAgICBzID0gKHMgPDwga0xhcmdlU2hpZnQp
ICsKKyAgICAgICAgKHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPihQb3dlck9mVHdvVmFyaWF0ZShn
KSkgJiBrTGFyZ2VNYXNrKTsKKyAgfQorCisgIHN0YXRpY19hc3NlcnQoCisgICAgICBrTGFyZ2VT
aGlmdCA9PSBrU21hbGxTaGlmdCArIDEgfHwKKyAgICAgICAgICAoa0xhcmdlU2hpZnQgPT0gMCAm
JgorICAgICAgICAgICBrU21hbGxTaGlmdCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90
eXBlPjo6ZGlnaXRzIC0gMSksCisgICAgICAiRXJyb3IgaW4gbG9vcGluZyBjb25zdGFudCBjYWxj
dWxhdGlvbnMiKTsKKworICByZXR1cm4gczsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9p
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9J
TlRFUk5BTF9GQVNUX1VOSUZPUk1fQklUU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwv
ZmFzdF91bmlmb3JtX2JpdHNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjJlODI2ODdkZDZhNjg3OWEy
MDllYmRmMjMxNDg1NTFlOGJkMTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzX3Rlc3QuY2MKQEAgLTAsMCArMSwyNzIgQEAKKy8vIENv
cHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvZmFzdF91bmlmb3JtX2JpdHMuaCIKKworI2luY2x1ZGUgPHJhbmRvbT4KKwor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBy
YW5kb21faW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5
cGU+CitjbGFzcyBGYXN0VW5pZm9ybUJpdHNUeXBlZFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHt9OworCit1c2luZyBJbnRUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8dWludDhfdCwgdWlu
dDE2X3QsIHVpbnQzMl90LCB1aW50NjRfdD47CisKK1RZUEVEX1RFU1RfU1VJVEUoRmFzdFVuaWZv
cm1CaXRzVHlwZWRUZXN0LCBJbnRUeXBlcyk7CisKK1RZUEVEX1RFU1QoRmFzdFVuaWZvcm1CaXRz
VHlwZWRUZXN0LCBCYXNpY1Rlc3QpIHsKKyAgdXNpbmcgTGltaXRzID0gc3RkOjpudW1lcmljX2xp
bWl0czxUeXBlUGFyYW0+OworICB1c2luZyBGYXN0Qml0cyA9IEZhc3RVbmlmb3JtQml0czxUeXBl
UGFyYW0+OworCisgIEVYUEVDVF9FUSgwLCBGYXN0Qml0czo6bWluKCkpOworICBFWFBFQ1RfRVEo
TGltaXRzOjptYXgoKSwgRmFzdEJpdHM6Om1heCgpKTsKKworICBjb25zdGV4cHIgaW50IGtJdGVy
cyA9IDEwMDAwOworICBzdGQ6OnJhbmRvbV9kZXZpY2UgcmQ7CisgIHN0ZDo6bXQxOTkzNyBnZW4o
cmQoKSk7CisgIEZhc3RCaXRzIGZhc3Q7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga0l0ZXJzOyBp
KyspIHsKKyAgICBjb25zdCBhdXRvIHYgPSBmYXN0KGdlbik7CisgICAgRVhQRUNUX0xFKHYsIEZh
c3RCaXRzOjptYXgoKSk7CisgICAgRVhQRUNUX0dFKHYsIEZhc3RCaXRzOjptaW4oKSk7CisgIH0K
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlLCBVSW50VHlwZSBMbywgVUludFR5cGUg
SGksIFVJbnRUeXBlIFZhbCA9IExvPgorc3RydWN0IEZha2VVcmJnIHsKKyAgdXNpbmcgcmVzdWx0
X3R5cGUgPSBVSW50VHlwZTsKKworICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1heCko
KSB7IHJldHVybiBIaTsgfQorICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1pbikoKSB7
IHJldHVybiBMbzsgfQorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkgeyByZXR1cm4gVmFsOyB9
Cit9OworCit1c2luZyBVcm5nT2RkYml0cyA9IEZha2VVcmJnPHVpbnQ4X3QsIDEsIDB4ZmUsIDB4
NzM+OwordXNpbmcgVXJuZzRiaXRzID0gRmFrZVVyYmc8dWludDhfdCwgMSwgMHgxMCwgMj47Cit1
c2luZyBVcm5nMzFiaXRzID0gRmFrZVVyYmc8dWludDMyX3QsIDEsIDB4ZmZmZmZmZmUsIDB4NjAw
NzBmMDM+OwordXNpbmcgVXJuZzMyYml0cyA9IEZha2VVcmJnPHVpbnQzMl90LCAwLCAweGZmZmZm
ZmZmLCAweDc0MDEwZjAxPjsKKworVEVTVChGYXN0VW5pZm9ybUJpdHNUZXN0LCBJc1Bvd2VyT2ZU
d29Pclplcm8pIHsKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQ4X3R7MH0p
KTsKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQ4X3R7MX0pKTsKKyAgRVhQ
RUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQ4X3R7Mn0pKTsKKyAgRVhQRUNUX0ZBTFNF
KElzUG93ZXJPZlR3b09yWmVybyh1aW50OF90ezN9KSk7CisgIEVYUEVDVF9UUlVFKElzUG93ZXJP
ZlR3b09yWmVybyh1aW50OF90ezE2fSkpOworICBFWFBFQ1RfRkFMU0UoSXNQb3dlck9mVHdvT3Ja
ZXJvKHVpbnQ4X3R7MTd9KSk7CisgIEVYUEVDVF9GQUxTRShJc1Bvd2VyT2ZUd29Pclplcm8oKHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCkoKSkpOworCisgIEVYUEVDVF9UUlVFKElz
UG93ZXJPZlR3b09yWmVybyh1aW50MTZfdHswfSkpOworICBFWFBFQ1RfVFJVRShJc1Bvd2VyT2ZU
d29Pclplcm8odWludDE2X3R7MX0pKTsKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJv
KHVpbnQxNl90ezJ9KSk7CisgIEVYUEVDVF9GQUxTRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDE2
X3R7M30pKTsKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQxNl90ezE2fSkp
OworICBFWFBFQ1RfRkFMU0UoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQxNl90ezE3fSkpOworICBF
WFBFQ1RfRkFMU0UoSXNQb3dlck9mVHdvT3JaZXJvKChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQx
Nl90Pjo6bWF4KSgpKSk7CisKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQz
Ml90ezB9KSk7CisgIEVYUEVDVF9UUlVFKElzUG93ZXJPZlR3b09yWmVybyh1aW50MzJfdHsxfSkp
OworICBFWFBFQ1RfVFJVRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDMyX3R7Mn0pKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzUG93ZXJPZlR3b09yWmVybyh1aW50MzJfdHszfSkpOworICBFWFBFQ1RfVFJV
RShJc1Bvd2VyT2ZUd29Pclplcm8odWludDMyX3R7MzJ9KSk7CisgIEVYUEVDVF9GQUxTRShJc1Bv
d2VyT2ZUd29Pclplcm8odWludDMyX3R7MTd9KSk7CisgIEVYUEVDVF9GQUxTRShJc1Bvd2VyT2ZU
d29Pclplcm8oKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgpKCkpKTsKKworICBF
WFBFQ1RfVFJVRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDY0X3R7MH0pKTsKKyAgRVhQRUNUX1RS
VUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQ2NF90ezF9KSk7CisgIEVYUEVDVF9UUlVFKElzUG93
ZXJPZlR3b09yWmVybyh1aW50NjRfdHsyfSkpOworICBFWFBFQ1RfRkFMU0UoSXNQb3dlck9mVHdv
T3JaZXJvKHVpbnQ2NF90ezN9KSk7CisgIEVYUEVDVF9UUlVFKElzUG93ZXJPZlR3b09yWmVybyh1
aW50NjRfdHs2NH0pKTsKKyAgRVhQRUNUX0ZBTFNFKElzUG93ZXJPZlR3b09yWmVybyh1aW50NjRf
dHsxN30pKTsKKyAgRVhQRUNUX0ZBTFNFKElzUG93ZXJPZlR3b09yWmVybygoc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46Om1heCkoKSkpOworfQorCitURVNUKEZhc3RVbmlmb3JtQml0c1Rl
c3QsIEludGVnZXJMb2cyKSB7CisgIEVYUEVDVF9FUShJbnRlZ2VyTG9nMih1aW50MTZfdHswfSks
IDApOworICBFWFBFQ1RfRVEoSW50ZWdlckxvZzIodWludDE2X3R7MX0pLCAwKTsKKyAgRVhQRUNU
X0VRKEludGVnZXJMb2cyKHVpbnQxNl90ezJ9KSwgMSk7CisgIEVYUEVDVF9FUShJbnRlZ2VyTG9n
Mih1aW50MTZfdHszfSksIDEpOworICBFWFBFQ1RfRVEoSW50ZWdlckxvZzIodWludDE2X3R7NH0p
LCAyKTsKKyAgRVhQRUNUX0VRKEludGVnZXJMb2cyKHVpbnQxNl90ezV9KSwgMik7CisgIEVYUEVD
VF9FUShJbnRlZ2VyTG9nMihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpLCA2
Myk7Cit9CisKK1RFU1QoRmFzdFVuaWZvcm1CaXRzVGVzdCwgUmFuZ2VTaXplKSB7CisgIEVYUEVD
VF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ4X3QsIDAsIDM+PigpKSwgNCk7CisgIEVYUEVD
VF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ4X3QsIDIsIDI+PigpKSwgMSk7CisgIEVYUEVD
VF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ4X3QsIDIsIDU+PigpKSwgNCk7CisgIEVYUEVD
VF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ4X3QsIDIsIDY+PigpKSwgNSk7CisgIEVYUEVD
VF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ4X3QsIDIsIDEwPj4oKSksIDkpOworICBFWFBF
Q1RfRVEoCisgICAgICAoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ4X3QsIDAsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDhfdD46Om1heCgpPj4oKSksCisgICAgICAwKTsKKworICBFWFBFQ1RfRVEo
KFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MTZfdCwgMCwgMz4+KCkpLCA0KTsKKyAgRVhQRUNUX0VR
KChSYW5nZVNpemU8RmFrZVVyYmc8dWludDE2X3QsIDIsIDI+PigpKSwgMSk7CisgIEVYUEVDVF9F
USgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQxNl90LCAyLCA1Pj4oKSksIDQpOworICBFWFBFQ1Rf
RVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MTZfdCwgMiwgNj4+KCkpLCA1KTsKKyAgRVhQRUNU
X0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDE2X3QsIDEwMDAsIDEwMTc+PigpKSwgMTgpOwor
ICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTwKKyAgICAgICAgICAgICAgICBGYWtlVXJiZzx1aW50MTZf
dCwgMCwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpPj4oKSksCisgICAgICAg
ICAgICAwKTsKKworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MzJfdCwgMCwg
Mz4+KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDMyX3QsIDIs
IDI+PigpKSwgMSk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAy
LCA1Pj4oKSksIDQpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MzJfdCwg
MiwgNj4+KCkpLCA1KTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDMyX3Qs
IDEwMDAsIDEwMTc+PigpKSwgMTgpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1
aW50MzJfdCwgMCwgMHhmZmZmZmZmZj4+KCkpLCAwKTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8
RmFrZVVyYmc8dWludDMyX3QsIDEsIDB4ZmZmZmZmZmY+PigpKSwgMHhmZmZmZmZmZik7CisgIEVY
UEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAxLCAweGZmZmZmZmZlPj4oKSks
IDB4ZmZmZmZmZmUpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MzJfdCwg
MiwgMHhmZmZmZmZmZT4+KCkpLCAweGZmZmZmZmZkKTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8
CisgICAgICAgICAgICAgICAgRmFrZVVyYmc8dWludDMyX3QsIDAsIHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDMyX3Q+OjptYXgoKT4+KCkpLAorICAgICAgICAgICAgMCk7CisKKyAgRVhQRUNUX0VR
KChSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDAsIDM+PigpKSwgNCk7CisgIEVYUEVDVF9F
USgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAyLCAyPj4oKSksIDEpOworICBFWFBFQ1Rf
RVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMiwgNT4+KCkpLCA0KTsKKyAgRVhQRUNU
X0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDIsIDY+PigpKSwgNSk7CisgIEVYUEVD
VF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAxMDAwLCAxMDE3Pj4oKSksIDE4KTsK
KyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDAsIDB4ZmZmZmZmZmY+
PigpKSwgMHgxMDAwMDAwMDB1bGwpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1
aW50NjRfdCwgMSwgMHhmZmZmZmZmZj4+KCkpLCAweGZmZmZmZmZmdWxsKTsKKyAgRVhQRUNUX0VR
KChSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDEsIDB4ZmZmZmZmZmU+PigpKSwgMHhmZmZm
ZmZmZXVsbCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAyLCAw
eGZmZmZmZmZlPj4oKSksIDB4ZmZmZmZmZmR1bGwpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxG
YWtlVXJiZzx1aW50NjRfdCwgMCwgMHhmZmZmZmZmZmZmZmZmZmZmdWxsPj4oKSksIDB1bGwpOwor
ICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMSwgMHhmZmZmZmZmZmZm
ZmZmZmZmdWxsPj4oKSksCisgICAgICAgICAgICAweGZmZmZmZmZmZmZmZmZmZmZ1bGwpOworICBF
WFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMSwgMHhmZmZmZmZmZmZmZmZm
ZmZldWxsPj4oKSksCisgICAgICAgICAgICAweGZmZmZmZmZmZmZmZmZmZmV1bGwpOworICBFWFBF
Q1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMiwgMHhmZmZmZmZmZmZmZmZmZmZl
dWxsPj4oKSksCisgICAgICAgICAgICAweGZmZmZmZmZmZmZmZmZmZmR1bGwpOworICBFWFBFQ1Rf
RVEoKFJhbmdlU2l6ZTwKKyAgICAgICAgICAgICAgICBGYWtlVXJiZzx1aW50NjRfdCwgMCwgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpPj4oKSksCisgICAgICAgICAgICAwKTsK
K30KKworVEVTVChGYXN0VW5pZm9ybUJpdHNUZXN0LCBQb3dlck9mVHdvU3ViUmFuZ2VTaXplKSB7
CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90LCAw
LCAzPj4oKSksIDQpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVy
Ymc8dWludDhfdCwgMiwgMj4+KCkpLCAxKTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFu
Z2VTaXplPEZha2VVcmJnPHVpbnQ4X3QsIDIsIDU+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUG93
ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90LCAyLCA2Pj4oKSksIDQpOworICBF
WFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDhfdCwgMiwgMTA+
PigpKSwgOCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTwKKyAgICAgICAg
ICAgICAgICBGYWtlVXJiZzx1aW50OF90LCAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+
OjptYXgoKT4+KCkpLAorICAgICAgICAgICAgMCk7CisKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdv
U3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQxNl90LCAwLCAzPj4oKSksIDQpOworICBFWFBFQ1Rf
RVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDE2X3QsIDIsIDI+PigpKSwg
MSk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MTZf
dCwgMiwgNT4+KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZh
a2VVcmJnPHVpbnQxNl90LCAyLCA2Pj4oKSksIDQpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29T
dWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDE2X3QsIDEwMDAsIDEwMTc+PigpKSwgMTYpOworICBF
WFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8CisgICAgICAgICAgICAgICAgRmFrZVVy
Ymc8dWludDE2X3QsIDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKT4+KCkp
LAorICAgICAgICAgICAgMCk7CisKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXpl
PEZha2VVcmJnPHVpbnQzMl90LCAwLCAzPj4oKSksIDQpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZU
d29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDMyX3QsIDIsIDI+PigpKSwgMSk7CisgIEVYUEVD
VF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MzJfdCwgMiwgNT4+KCkp
LCA0KTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQz
Ml90LCAyLCA2Pj4oKSksIDQpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8
RmFrZVVyYmc8dWludDMyX3QsIDEwMDAsIDEwMTc+PigpKSwgMTYpOworICBFWFBFQ1RfRVEoKFBv
d2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDMyX3QsIDAsIDB4ZmZmZmZmZmY+Pigp
KSwgMCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50
MzJfdCwgMSwgMHhmZmZmZmZmZj4+KCkpLAorICAgICAgICAgICAgMHg4MDAwMDAwMCk7CisgIEVY
UEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MzJfdCwgMSwgMHhm
ZmZmZmZmZT4+KCkpLAorICAgICAgICAgICAgMHg4MDAwMDAwMCk7CisgIEVYUEVDVF9FUSgoUG93
ZXJPZlR3b1N1YlJhbmdlU2l6ZTwKKyAgICAgICAgICAgICAgICBGYWtlVXJiZzx1aW50MzJfdCwg
MCwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpPj4oKSksCisgICAgICAgICAg
ICAwKTsKKworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWlu
dDY0X3QsIDAsIDM+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6
ZTxGYWtlVXJiZzx1aW50NjRfdCwgMiwgMj4+KCkpLCAxKTsKKyAgRVhQRUNUX0VRKChQb3dlck9m
VHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAyLCA1Pj4oKSksIDQpOworICBFWFBF
Q1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDIsIDY+Pigp
KSwgNCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50
NjRfdCwgMTAwMCwgMTAxNz4+KCkpLCAxNik7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJh
bmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMCwgMHhmZmZmZmZmZj4+KCkpLAorICAgICAgICAg
ICAgMHgxMDAwMDAwMDB1bGwpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8
RmFrZVVyYmc8dWludDY0X3QsIDEsIDB4ZmZmZmZmZmY+PigpKSwKKyAgICAgICAgICAgIDB4ODAw
MDAwMDB1bGwpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8
dWludDY0X3QsIDEsIDB4ZmZmZmZmZmU+PigpKSwKKyAgICAgICAgICAgIDB4ODAwMDAwMDB1bGwp
OworICBFWFBFQ1RfRVEoCisgICAgICAoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1
aW50NjRfdCwgMCwgMHhmZmZmZmZmZmZmZmZmZmZmdWxsPj4oKSksCisgICAgICAwKTsKKyAgRVhQ
RUNUX0VRKAorICAgICAgKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3Qs
IDEsIDB4ZmZmZmZmZmZmZmZmZmZmZnVsbD4+KCkpLAorICAgICAgMHg4MDAwMDAwMDAwMDAwMDAw
dWxsKTsKKyAgRVhQRUNUX0VRKAorICAgICAgKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVy
Ymc8dWludDY0X3QsIDEsIDB4ZmZmZmZmZmZmZmZmZmZmZXVsbD4+KCkpLAorICAgICAgMHg4MDAw
MDAwMDAwMDAwMDAwdWxsKTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPAor
ICAgICAgICAgICAgICAgIEZha2VVcmJnPHVpbnQ2NF90LCAwLCBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQ2NF90Pjo6bWF4KCk+PigpKSwKKyAgICAgICAgICAgIDApOworfQorCitURVNUKEZhc3RV
bmlmb3JtQml0c1Rlc3QsIFVybmc0X1ZhcmlvdXNPdXRwdXRzKSB7CisgIC8vIFRlc3RzIHRoYXQg
aG93IHZhbHVlcyBhcmUgY29tcG9zZWQ7IHRoZSBzaW5nbGUtYml0IGRlbHRhcyBzaG91bGQgYmUg
c3ByZWFkCisgIC8vIGFjcm9zcyBlYWNoIGludm9jYXRpb24uCisgIFVybmc0Yml0cyB1cm5nNDsK
KyAgVXJuZzMxYml0cyB1cm5nMzE7CisgIFVybmczMmJpdHMgdXJuZzMyOworCisgIC8vIDgtYml0
IHR5cGVzCisgIHsKKyAgICBGYXN0VW5pZm9ybUJpdHM8dWludDhfdD4gZmFzdDg7CisgICAgRVhQ
RUNUX0VRKDB4MTEsIGZhc3Q4KHVybmc0KSk7CisgICAgRVhQRUNUX0VRKDB4MiwgZmFzdDgodXJu
ZzMxKSk7CisgICAgRVhQRUNUX0VRKDB4MSwgZmFzdDgodXJuZzMyKSk7CisgIH0KKworICAvLyAx
Ni1iaXQgdHlwZXMKKyAgeworICAgIEZhc3RVbmlmb3JtQml0czx1aW50MTZfdD4gZmFzdDE2Owor
ICAgIEVYUEVDVF9FUSgweDExMTEsIGZhc3QxNih1cm5nNCkpOworICAgIEVYUEVDVF9FUSgweGYw
MiwgZmFzdDE2KHVybmczMSkpOworICAgIEVYUEVDVF9FUSgweGYwMSwgZmFzdDE2KHVybmczMikp
OworICB9CisKKyAgLy8gMzItYml0IHR5cGVzCisgIHsKKyAgICBGYXN0VW5pZm9ybUJpdHM8dWlu
dDMyX3Q+IGZhc3QzMjsKKyAgICBFWFBFQ1RfRVEoMHgxMTExMTExMSwgZmFzdDMyKHVybmc0KSk7
CisgICAgRVhQRUNUX0VRKDB4MGYwMjBmMDIsIGZhc3QzMih1cm5nMzEpKTsKKyAgICBFWFBFQ1Rf
RVEoMHg3NDAxMGYwMSwgZmFzdDMyKHVybmczMikpOworICB9CisKKyAgLy8gNjQtYml0IHR5cGVz
CisgIHsKKyAgICBGYXN0VW5pZm9ybUJpdHM8dWludDY0X3Q+IGZhc3Q2NDsKKyAgICBFWFBFQ1Rf
RVEoMHgxMTExMTExMTExMTExMTExLCBmYXN0NjQodXJuZzQpKTsKKyAgICBFWFBFQ1RfRVEoMHgz
ODc4MTFjM2MwODcwZjAyLCBmYXN0NjQodXJuZzMxKSk7CisgICAgRVhQRUNUX0VRKDB4NzQwMTBm
MDE3NDAxMGYwMSwgZmFzdDY0KHVybmczMikpOworICB9Cit9CisKK1RFU1QoRmFzdFVuaWZvcm1C
aXRzVGVzdCwgVVJCRzMyYml0UmVncmVzc2lvbikgeworICAvLyBWYWxpZGF0ZSB3aXRoIGRldGVy
bWluaXN0aWMgMzItYml0IHN0ZDo6bWluc3RkX3JhbmQKKyAgLy8gdG8gZW5zdXJlIHRoYXQgb3Bl
cmF0b3IoKSBwZXJmb3JtcyBhcyBleHBlY3RlZC4KKyAgc3RkOjptaW5zdGRfcmFuZCBnZW4oMSk7
CisgIEZhc3RVbmlmb3JtQml0czx1aW50NjRfdD4gZmFzdDY0OworCisgIEVYUEVDVF9FUSgweDA1
ZTQ3MDk1Zjg0N2MxMjJ1bGwsIGZhc3Q2NChnZW4pKTsKKyAgRVhQRUNUX0VRKDB4OGY4MmMxYmEz
MGI2NGQyMnVsbCwgZmFzdDY0KGdlbikpOworICBFWFBFQ1RfRVEoMHgzYjk3MWEzNTU4MTU1MDM5
dWxsLCBmYXN0NjQoZ2VuKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNl
IHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC9mYXN0bWF0aC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Zhc3Rt
YXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGJkMTg0MTA1Mzk5MzdmOGQxMTJmNTgxODJkN2QwNjdhMzc1YzFh
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0bWF0aC5oCkBA
IC0wLDAgKzEsNzIgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
CisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX0ZBU1RNQVRIX0hfCisjZGVmaW5lIEFCU0xf
UkFORE9NX0lOVEVSTkFMX0ZBU1RNQVRIX0hfCisKKy8vIFRoaXMgZmlsZSBjb250YWlucyBmYXN0
IG1hdGggZnVuY3Rpb25zIChiaXR3aXNlIG9wcyBhcyB3ZWxsIGFzIHNvbWUgb3RoZXJzKQorLy8g
d2hpY2ggYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdmFyaW91cyBhYnNsIHJhbmRvbSBu
dW1iZXIgZGlzdHJpYnV0aW9ucy4KKworI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8Y21h
dGg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKworI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9i
aXRzLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgewor
CisvLyBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgYml0IHNldC4KK2lubGluZSBp
bnQgTGVhZGluZ1NldEJpdCh1aW50NjRfdCBuKSB7CisgIHJldHVybiA2NCAtIGJhc2VfaW50ZXJu
YWw6OkNvdW50TGVhZGluZ1plcm9zNjQobik7Cit9CisKKy8vIENvbXB1dGUgbG9nMihuKSB1c2lu
ZyBpbnRlZ2VyIG9wZXJhdGlvbnMuCisvLyBXaGlsZSBzdGQ6OmxvZzIgaXMgbW9yZSBhY2N1cmF0
ZSB0aGFuIHN0ZDo6bG9nKG4pIC8gc3RkOjpsb2coMiksIGZvcgorLy8gdmVyeSBsYXJnZSBudW1i
ZXJzLS10aG9zZSBjbG9zZSB0byBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkg
LSAyLAorLy8gZm9yIGluc3RhbmNlLS1zdGQ6OmxvZzIgcm91bmRzIHVwIHJhdGhlciB0aGFuIGRv
d24sIHdoaWNoIGludHJvZHVjZXMKKy8vIGRlZmluaXRlIHNrZXcgaW4gdGhlIHJlc3VsdHMuCitp
bmxpbmUgaW50IEludExvZzJGbG9vcih1aW50NjRfdCBuKSB7CisgIHJldHVybiAobiA8PSAxKSA/
IDAgOiAoNjMgLSBiYXNlX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0KG4pKTsKK30KK2lu
bGluZSBpbnQgSW50TG9nMkNlaWwodWludDY0X3QgbikgeworICByZXR1cm4gKG4gPD0gMSkgPyAw
IDogKDY0IC0gYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChuIC0gMSkpOworfQor
CitpbmxpbmUgZG91YmxlIFN0aXJsaW5nTG9nRmFjdG9yaWFsKGRvdWJsZSBuKSB7CisgIGFzc2Vy
dChuID49IDEpOworICAvLyBVc2luZyBTdGlybGluZydzIGFwcHJveGltYXRpb24uCisgIGNvbnN0
ZXhwciBkb3VibGUga0xvZzJQSSA9IDEuODM3ODc3MDY2NDA5MzQ1NDgzNTY7CisgIGNvbnN0IGRv
dWJsZSBsb2duID0gc3RkOjpsb2cobik7CisgIGNvbnN0IGRvdWJsZSBuaW52ID0gMS4wIC8gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihuKTsKKyAgcmV0dXJuIG4gKiBsb2duIC0gbiArIDAuNSAqIChrTG9n
MlBJICsgbG9nbikgKyAoMS4wIC8gMTIuMCkgKiBuaW52IC0KKyAgICAgICAgICgxLjAgLyAzNjAu
MCkgKiBuaW52ICogbmludiAqIG5pbnY7Cit9CisKKy8vIFJvdGF0ZSB2YWx1ZSByaWdodC4KKy8v
CisvLyBXZSBvbmx5IGltcGxlbWVudCB0aGUgdWludDMyX3QgLyB1aW50NjRfdCB2ZXJzaW9ucyBi
ZWNhdXNlCisvLyAxKSB0aG9zZSBhcmUgdGhlIG9ubHkgb25lcyB3ZSB1c2UsIGFuZAorLy8gMikg
dGhvc2UgYXJlIHRoZSBvbmx5IG9uZXMgd2hlcmUgY2xhbmcgZGV0ZWN0cyB0aGUgcm90YXRlIGlk
aW9tIGNvcnJlY3RseS4KK2lubGluZSBjb25zdGV4cHIgdWludDMyX3Qgcm90cih1aW50MzJfdCB2
YWx1ZSwgdWludDhfdCBiaXRzKSB7CisgIHJldHVybiAodmFsdWUgPj4gKGJpdHMgJiAzMSkpIHwg
KHZhbHVlIDw8ICgoLWJpdHMpICYgMzEpKTsKK30KK2lubGluZSBjb25zdGV4cHIgdWludDY0X3Qg
cm90cih1aW50NjRfdCB2YWx1ZSwgdWludDhfdCBiaXRzKSB7CisgIHJldHVybiAodmFsdWUgPj4g
KGJpdHMgJiA2MykpIHwgKHZhbHVlIDw8ICgoLWJpdHMpICYgNjMpKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAv
LyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9GQVNUTUFUSF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL2Zhc3RtYXRoX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFz
dG1hdGhfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTg1OWMyNWRlNGNkZDE2NjczOGIwZTg2NmZjYmIx
MjczYjQ3NTBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Zhc3Rt
YXRoX3Rlc3QuY2MKQEAgLTAsMCArMSwxMTAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1hdGgu
aCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBkZWZpbmVkKF9fbmF0aXZlX2Ns
aWVudF9fKSB8fCBkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQorLy8gTkFDTCBoYXMgYSBsZXNzIGFj
Y3VyYXRlIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6bG9nMiB0aGFuIG1vc3Qgb2YKKy8vIHRoZSBv
dGhlciBwbGF0Zm9ybXMuIEZvciBzb21lIHZhbHVlcyB3aGljaCBzaG91bGQgaGF2ZSBpbnRlZ3Jh
bCByZXN1bHRzLAorLy8gc29tZXRpbWVzIE5BQ0wgcmV0dXJucyBzbGlnaHRseSBsYXJnZXIgdmFs
dWVzLgorLy8KKy8vIFRoZSBNVVNMIGxpYmMgdXNlZCBieSBlbXNjcmlwdGVuIGFsc28gaGFzIGEg
c2ltaWxhciBidWcuCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOQUNDVVJBVEVfTE9HMgorI2VuZGlm
CisKK25hbWVzcGFjZSB7CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1wbFRlc3QsIExlYWRpbmdTZXRC
aXQpIHsKKyAgdXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpMZWFkaW5nU2V0Qml0OworICBj
b25zdGV4cHIgdWludDY0X3Qga1plcm8gPSAwOworICBFWFBFQ1RfRVEoMCwgTGVhZGluZ1NldEJp
dChrWmVybykpOworICBFWFBFQ1RfRVEoNjQsIExlYWRpbmdTZXRCaXQofmtaZXJvKSk7CisKKyAg
Zm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IDY0OyBpbmRleCsrKSB7CisgICAgdWludDY0X3Qg
eCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSA8PCBpbmRleDsKKyAgICBFWFBFQ1RfRVEoaW5k
ZXggKyAxLCBMZWFkaW5nU2V0Qml0KHgpKSA8PCBpbmRleDsKKyAgICBFWFBFQ1RfRVEoaW5kZXgg
KyAxLCBMZWFkaW5nU2V0Qml0KHggKyB4IC0gMSkpIDw8IGluZGV4OworICB9Cit9CisKK1RFU1Qo
RmFzdE1hdGhUZXN0LCBJbnRMb2cyRmxvb3JUZXN0KSB7CisgIHVzaW5nIGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6SW50TG9nMkZsb29yOworICBjb25zdGV4cHIgdWludDY0X3Qga1plcm8gPSAwOwor
ICBFWFBFQ1RfRVEoMCwgSW50TG9nMkZsb29yKDApKTsgIC8vIGJvdW5kYXJ5LiByZXR1cm4gMC4K
KyAgRVhQRUNUX0VRKDAsIEludExvZzJGbG9vcigxKSk7CisgIEVYUEVDVF9FUSgxLCBJbnRMb2cy
Rmxvb3IoMikpOworICBFWFBFQ1RfRVEoNjMsIEludExvZzJGbG9vcih+a1plcm8pKTsKKworICAv
LyBBIGJvdW5kYXJ5IGNhc2U6IENvbnZlcnRpbmcgMHhmZmZmZmZmZmZmZmZmZmZmIHJlcXVpcmVz
ID4gNTMKKyAgLy8gYml0cyBvZiBwcmVjaXNpb24sIHNvIHRoZSBjb252ZXJzaW9uIHRvIGRvdWJs
ZSByb3VuZHMgdXAsCisgIC8vIGFuZCB0aGUgcmVzdWx0IG9mIHN0ZDo6bG9nMih4KSA+IEludExv
ZzJGbG9vcih4KS4KKyAgRVhQRUNUX0xUKEludExvZzJGbG9vcih+a1plcm8pLCBzdGF0aWNfY2Fz
dDxpbnQ+KHN0ZDo6bG9nMih+a1plcm8pKSk7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA2NDsg
aSsrKSB7CisgICAgY29uc3QgdWludDY0X3QgaV9wb3dfMiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90
PigxKSA8PCBpOworICAgIEVYUEVDVF9FUShpLCBJbnRMb2cyRmxvb3IoaV9wb3dfMikpOworICAg
IEVYUEVDVF9FUShpLCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bG9nMihpX3Bvd18yKSkpOworCisg
ICAgdWludDY0X3QgeSA9IGlfcG93XzI7CisgICAgZm9yIChpbnQgaiA9IGkgLSAxOyBqID4gMDsg
LS1qKSB7CisgICAgICB5ID0geSB8IChpX3Bvd18yID4+IGopOworICAgICAgRVhQRUNUX0VRKGks
IEludExvZzJGbG9vcih5KSk7CisgICAgfQorICB9Cit9CisKK1RFU1QoRmFzdE1hdGhUZXN0LCBJ
bnRMb2cyQ2VpbFRlc3QpIHsKKyAgdXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpJbnRMb2cy
Q2VpbDsKKyAgY29uc3RleHByIHVpbnQ2NF90IGtaZXJvID0gMDsKKyAgRVhQRUNUX0VRKDAsIElu
dExvZzJDZWlsKDApKTsgIC8vIGJvdW5kYXJ5LiByZXR1cm4gMC4KKyAgRVhQRUNUX0VRKDAsIElu
dExvZzJDZWlsKDEpKTsKKyAgRVhQRUNUX0VRKDEsIEludExvZzJDZWlsKDIpKTsKKyAgRVhQRUNU
X0VRKDY0LCBJbnRMb2cyQ2VpbCh+a1plcm8pKTsKKworICAvLyBBIGJvdW5kYXJ5IGNhc2U6IENv
bnZlcnRpbmcgMHhmZmZmZmZmZmZmZmZmZmZmIHJlcXVpcmVzID4gNTMKKyAgLy8gYml0cyBvZiBw
cmVjaXNpb24sIHNvIHRoZSBjb252ZXJzaW9uIHRvIGRvdWJsZSByb3VuZHMgdXAsCisgIC8vIGFu
ZCB0aGUgcmVzdWx0IG9mIHN0ZDo6bG9nMih4KSA+IEludExvZzJGbG9vcih4KS4KKyAgRVhQRUNU
X0xFKEludExvZzJDZWlsKH5rWmVybyksIHN0YXRpY19jYXN0PGludD4oc3RkOjpsb2cyKH5rWmVy
bykpKTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IDY0OyBpKyspIHsKKyAgICBjb25zdCB1aW50
NjRfdCBpX3Bvd18yID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IGk7CisgICAgRVhQRUNU
X0VRKGksIEludExvZzJDZWlsKGlfcG93XzIpKTsKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5BQ0NV
UkFURV9MT0cyCisgICAgRVhQRUNUX0VRKGksIHN0YXRpY19jYXN0PGludD4oc3RkOjpjZWlsKHN0
ZDo6bG9nMihpX3Bvd18yKSkpKTsKKyNlbmRpZgorCisgICAgdWludDY0X3QgeSA9IGlfcG93XzI7
CisgICAgZm9yIChpbnQgaiA9IGkgLSAxOyBqID4gMDsgLS1qKSB7CisgICAgICB5ID0geSB8IChp
X3Bvd18yID4+IGopOworICAgICAgRVhQRUNUX0VRKGkgKyAxLCBJbnRMb2cyQ2VpbCh5KSk7Cisg
ICAgfQorICB9Cit9CisKK1RFU1QoRmFzdE1hdGhUZXN0LCBTdGlybGluZ0xvZ0ZhY3RvcmlhbCkg
eworICB1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlN0aXJsaW5nTG9nRmFjdG9yaWFsOwor
CisgIEVYUEVDVF9ORUFSKFN0aXJsaW5nTG9nRmFjdG9yaWFsKDEuMCksIDAsIDFlLTMpOworICBF
WFBFQ1RfTkVBUihTdGlybGluZ0xvZ0ZhY3RvcmlhbCgxLjUwKSwgMC4yODQ2ODMsIDFlLTMpOwor
ICBFWFBFQ1RfTkVBUihTdGlybGluZ0xvZ0ZhY3RvcmlhbCgyLjApLCAwLjY5MzE0NzE4MDU2LCAx
ZS00KTsKKworICBmb3IgKGludCBpID0gMjsgaSA8IDUwOyBpKyspIHsKKyAgICBkb3VibGUgZCA9
IHN0YXRpY19jYXN0PGRvdWJsZT4oaSk7CisgICAgRVhQRUNUX05FQVIoU3RpcmxpbmdMb2dGYWN0
b3JpYWwoZCksIHN0ZDo6bGdhbW1hKGQgKyAxKSwgM2UtNSk7CisgIH0KK30KKworfSAgLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZ2F1c3NpYW5fZGlzdHJp
YnV0aW9uX2dlbnRhYmxlcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9nYXVzc2lhbl9kaXN0
cmlidXRpb25fZ2VudGFibGVzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YTIzY2IyZjkxZjUyMzRlYzEwNzM1
NDAyN2Q3MWFhZWE1MzUxMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJu
YWwvZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2dlbnRhYmxlcy5jYwpAQCAtMCwwICsxLDE0NSBAQAor
Ly8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKy8vIEdlbmVyYXRlcyBn
YXVzc2lhbl9kaXN0cmlidXRpb24uY2MKKy8vCisvLyAkIGJsYXplIHJ1biA6Z2F1c3NpYW5fZGlz
dHJpYnV0aW9uX2dlbnRhYmxlcyA+IGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5jYworLy8KKyNpbmNs
dWRlICJhYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb24uaCIKKworI2luY2x1ZGUgPGNt
YXRoPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3Mu
aCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CituYW1l
c3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Cit2b2lkIEZvcm1hdEFy
cmF5Q29udGVudHMoc3RkOjpvc3RyZWFtKiBvcywgVCAoJmRhdGEpW05dKSB7CisgIGlmICghc3Rk
OjpudW1lcmljX2xpbWl0czxUPjo6aXNfZXhhY3QpIHsKKyAgICAvLyBOb3RlOiBUIGlzIGVpdGhl
ciBhbiBpbnRlZ2VyIG9yIGEgZmxvYXQuCisgICAgLy8gZmxvYXQgcmVxdWlyZXMgaGlnaGVyIHBy
ZWNpc2lvbiB0byBlbnN1cmUgdGhhdCB2YWx1ZXMgYXJlCisgICAgLy8gcmVwcm9kdWNlZCBleGFj
dGx5LgorICAgIC8vIFRyaXZpYTogQzk5IGhhcyBoZXhhZGVjaW1hbCBmbG9hdGluZyBwb2ludCBs
aXRlcmFscywgYnV0IEMrKzExIGRvZXMgbm90LgorICAgIC8vIFVzaW5nIHRoZW0gd291bGQgcmVt
b3ZlIGFsbCBjb25jZXJuIG9mIHByZWNpc2lvbiBsb3NzLgorICAgIG9zLT5wcmVjaXNpb24oc3Rk
OjpudW1lcmljX2xpbWl0czxUPjo6bWF4X2RpZ2l0czEwICsgMik7CisgIH0KKyAgKm9zIDw8ICIg
ICAgeyI7CisgIHN0ZDo6c3RyaW5nIHNlcGFyYXRvciA9ICIiOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IE47ICsraSkgeworICAgICpvcyA8PCBzZXBhcmF0b3IgPDwgZGF0YVtpXTsKKyAgICBp
ZiAoKGkgKyAxKSAlIDMgIT0gMCkgeworICAgICAgc2VwYXJhdG9yID0gIiwgIjsKKyAgICB9IGVs
c2UgeworICAgICAgc2VwYXJhdG9yID0gIixcbiAgICAgIjsKKyAgICB9CisgIH0KKyAgKm9zIDw8
ICJ9IjsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2NsYXNzIFRhYmxlR2VuZXJhdG9yIDogcHVi
bGljIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlIHsKKyBwdWJsaWM6CisgIFRhYmxlR2VuZXJh
dG9yKCk7CisgIHZvaWQgUHJpbnQoc3RkOjpvc3RyZWFtKiBvcyk7CisKKyAgdXNpbmcgZ2F1c3Np
YW5fZGlzdHJpYnV0aW9uX2Jhc2U6OmtNYXNrOworICB1c2luZyBnYXVzc2lhbl9kaXN0cmlidXRp
b25fYmFzZTo6a1I7CisgIHVzaW5nIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlOjprVjsKKwor
IHByaXZhdGU6CisgIFRhYmxlcyB0YWJsZXNfOworfTsKKworLy8gWmlnZ3VyYXQgZ2F1c3NpYW4g
aW5pdGlhbGl6YXRpb24uICBGb3IgYW4gZXhwbGFuYXRpb24gb2YgdGhlIGFsZ29yaXRobSwgc2Vl
CisvLyB0aGUgTWFyc2FnbGlhIHBhcGVyLCAiVGhlIFppZ2d1cmF0IE1ldGhvZCBmb3IgR2VuZXJh
dGluZyBSYW5kb20gVmFyaWFibGVzIi4KKy8vICAgaHR0cDovL3d3dy5qc3RhdHNvZnQub3JnL3Yw
NS9pMDgvCisvLworLy8gRnVydGhlciBkZXRhaWxzIGFyZSBhdmFpbGFibGUgaW4gdGhlIERvb3Ju
aWsgcGFwZXIKKy8vICAgaHR0cHM6Ly93d3cuZG9vcm5pay5jb20vcmVzZWFyY2gvemlnZ3VyYXQu
cGRmCisvLworVGFibGVHZW5lcmF0b3I6OlRhYmxlR2VuZXJhdG9yKCkgeworICAvLyBUaGUgY29u
c3RhbnRzIGhlcmUgc2hvdWxkIG1hdGNoIHRoZSB2YWx1ZXMgaW4gZ2F1c3NpYW5fZGlzdHJpYnV0
aW9uLmgKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0MgPSBrTWFzayArIDE7CisKKyAgc3RhdGlj
X2Fzc2VydCgoQUJTTF9BUlJBWVNJWkUodGFibGVzXy54KSA9PSBrQyArIDEpLAorICAgICAgICAg
ICAgICAgICJ4QXJyYXkgbXVzdCBiZSBsZW5ndGgga01hc2sgKyAyIik7CisKKyAgc3RhdGljX2Fz
c2VydCgoQUJTTF9BUlJBWVNJWkUodGFibGVzXy54KSA9PSBBQlNMX0FSUkFZU0laRSh0YWJsZXNf
LmYpKSwKKyAgICAgICAgICAgICAgICAiZnggYW5kIHggYXJyYXlzIG11c3QgYmUgaWRlbnRpY2Fs
IGxlbmd0aCIpOworCisgIGF1dG8gZiA9IFtdKGRvdWJsZSB4KSB7IHJldHVybiBzdGQ6OmV4cCgt
MC41ICogeCAqIHgpOyB9OworICBhdXRvIGZfaW52ID0gW10oZG91YmxlIHgpIHsgcmV0dXJuIHN0
ZDo6c3FydCgtMi4wICogc3RkOjpsb2coeCkpOyB9OworCisgIHRhYmxlc18ueFswXSA9IGtWIC8g
ZihrUik7CisgIHRhYmxlc18uZlswXSA9IGYodGFibGVzXy54WzBdKTsKKworICB0YWJsZXNfLnhb
MV0gPSBrUjsKKyAgdGFibGVzXy5mWzFdID0gZih0YWJsZXNfLnhbMV0pOworCisgIHRhYmxlc18u
eFtrQ10gPSAwLjA7CisgIHRhYmxlc18uZltrQ10gPSBmKHRhYmxlc18ueFtrQ10pOyAgLy8gMS4w
CisKKyAgZm9yIChpbnQgaSA9IDI7IGkgPCBrQzsgaSsrKSB7CisgICAgZG91YmxlIHYgPSAoa1Yg
LyB0YWJsZXNfLnhbaSAtIDFdKSArIHRhYmxlc18uZltpIC0gMV07CisgICAgdGFibGVzXy54W2ld
ID0gZl9pbnYodik7CisgICAgdGFibGVzXy5mW2ldID0gdjsKKyAgfQorfQorCit2b2lkIFRhYmxl
R2VuZXJhdG9yOjpQcmludChzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAiLy8gQkVHSU4g
R0VORVJBVEVEIENPREU7IERPIE5PVCBFRElUXG4iCisgICAgICAgICAiLy8gY2xhbmctZm9ybWF0
IG9mZlxuIgorICAgICAgICAgIlxuIgorICAgICAgICAgIiNpbmNsdWRlIFwiYWJzbC9yYW5kb20v
Z2F1c3NpYW5fZGlzdHJpYnV0aW9uLmhcIlxuIgorICAgICAgICAgIlxuIgorICAgICAgICAgLy8g
Im5hbWVzcGFjZSAiIGFuZCAiYWJzbCIgYXJlIGJyb2tlbiBhcGFydCBzbyBhcyBub3QgdG8gY29u
ZmxpY3Qgd2l0aAorICAgICAgICAgLy8gc2NyaXB0IHRoYXQgYWRkcyB0aGUgTFRTIGlubGluZSBu
YW1lc3BhY2UuCisgICAgICAgICAibmFtZXNwYWNlICIKKyAgICAgICAgICJhYnNsIHtcbiIKKyAg
ICAgICAgICJuYW1lc3BhY2UgIgorICAgICAgICAgInJhbmRvbV9pbnRlcm5hbCB7XG4iCisgICAg
ICAgICAiXG4iCisgICAgICAgICAiY29uc3QgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2Jhc2U6OlRh
Ymxlc1xuIgorICAgICAgICAgIiAgICBnYXVzc2lhbl9kaXN0cmlidXRpb25fYmFzZTo6emdfID0g
e1xuIjsKKyAgRm9ybWF0QXJyYXlDb250ZW50cyhvcywgdGFibGVzXy54KTsKKyAgKm9zIDw8ICIs
XG4iOworICBGb3JtYXRBcnJheUNvbnRlbnRzKG9zLCB0YWJsZXNfLmYpOworICAqb3MgPDwgIn07
XG4iCisgICAgICAgICAiXG4iCisgICAgICAgICAifSAgLy8gbmFtZXNwYWNlICIKKyAgICAgICAg
ICJyYW5kb21faW50ZXJuYWxcbiIKKyAgICAgICAgICJ9ICAvLyBuYW1lc3BhY2UgIgorICAgICAg
ICAgImFic2xcbiIKKyAgICAgICAgICJcbiIKKyAgICAgICAgICIvLyBjbGFuZy1mb3JtYXQgb25c
biIKKyAgICAgICAgICIvLyBFTkQgR0VORVJBVEVEIENPREUiOworICAqb3MgPDwgc3RkOjplbmRs
OworfQorCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorCitpbnQgbWFpbihpbnQsIGNoYXIqKikgeworICBzdGQ6OmNlcnIgPDwgIlxuQ29weSB0
aGUgb3V0cHV0IHRvIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5jYyIgPDwgc3RkOjplbmRsOworICBh
YnNsOjpyYW5kb21faW50ZXJuYWw6OlRhYmxlR2VuZXJhdG9yIGdlbmVyYXRvcjsKKyAgZ2VuZXJh
dG9yLlByaW50KCZzdGQ6OmNvdXQpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGY4OGZhNzZiY2RlMGVj
MDA1YjlhODJmZDEwOTM3MDQwYzVhNDIyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oCkBAIC0wLDAgKzEsMjQzIEBACisvLyBD
b3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRP
TV9JTlRFUk5BTF9JT1NUUkVBTV9TVEFURV9TQVZFUl9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9J
TlRFUk5BTF9JT1NUUkVBTV9TVEFURV9TQVZFUl9IXworCisjaW5jbHVkZSA8Y21hdGg+CisjaW5j
bHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9u
dW1lcmljL2ludDEyOC5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2lu
dGVybmFsIHsKKworLy8gVGhlIG51bGxfc3RhdGVfc2F2ZXIgZG9lcyBub3RoaW5nLgordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBudWxsX3N0YXRlX3NhdmVyIHsKKyBwdWJsaWM6CisgIHVz
aW5nIHN0cmVhbV90eXBlID0gVDsKKyAgdXNpbmcgZmxhZ3NfdHlwZSA9IHN0ZDo6aW9zX2Jhc2U6
OmZtdGZsYWdzOworCisgIG51bGxfc3RhdGVfc2F2ZXIoVCYsIGZsYWdzX3R5cGUpIHt9CisgIH5u
dWxsX3N0YXRlX3NhdmVyKCkge30KK307CisKKy8vIG9zdHJlYW1fc3RhdGVfc2F2ZXIgaXMgYSBS
QUlJIG9iamVjdCB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBjb21tb24KKy8vIGJhc2ljX29zdHJl
YW0gZmxhZ3MgdXNlZCB3aGVuIGltcGxlbWVudGluZyBgb3BlcmF0b3IgPDwoKWAgb24gYW55IG9m
CisvLyB0aGUgYWJzbCByYW5kb20gZGlzdHJpYnV0aW9ucy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBP
U3RyZWFtPgorY2xhc3Mgb3N0cmVhbV9zdGF0ZV9zYXZlciB7CisgcHVibGljOgorICB1c2luZyBv
c3RyZWFtX3R5cGUgPSBPU3RyZWFtOworICB1c2luZyBmbGFnc190eXBlID0gc3RkOjppb3NfYmFz
ZTo6Zm10ZmxhZ3M7CisgIHVzaW5nIGZpbGxfdHlwZSA9IHR5cGVuYW1lIG9zdHJlYW1fdHlwZTo6
Y2hhcl90eXBlOworICB1c2luZyBwcmVjaXNpb25fdHlwZSA9IHN0ZDo6c3RyZWFtc2l6ZTsKKwor
ICBvc3RyZWFtX3N0YXRlX3NhdmVyKG9zdHJlYW1fdHlwZSYgb3MsICAvLyBOT0xJTlQocnVudGlt
ZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzX3R5cGUgZmxhZ3MsIGZp
bGxfdHlwZSBmaWxsKQorICAgICAgOiBvc18ob3MpLAorICAgICAgICBmbGFnc18ob3MuZmxhZ3Mo
ZmxhZ3MpKSwKKyAgICAgICAgZmlsbF8ob3MuZmlsbChmaWxsKSksCisgICAgICAgIHByZWNpc2lv
bl8ob3MucHJlY2lzaW9uKCkpIHsKKyAgICAvLyBTYXZlIHN0YXRlIGluIGluaXRpYWxpemVkIHZh
cmlhYmxlcy4KKyAgfQorCisgIH5vc3RyZWFtX3N0YXRlX3NhdmVyKCkgeworICAgIC8vIFJlc3Rv
cmUgc2F2ZWQgc3RhdGUuCisgICAgb3NfLnByZWNpc2lvbihwcmVjaXNpb25fKTsKKyAgICBvc18u
ZmlsbChmaWxsXyk7CisgICAgb3NfLmZsYWdzKGZsYWdzXyk7CisgIH0KKworIHByaXZhdGU6Cisg
IG9zdHJlYW1fdHlwZSYgb3NfOworICBjb25zdCBmbGFnc190eXBlIGZsYWdzXzsKKyAgY29uc3Qg
ZmlsbF90eXBlIGZpbGxfOworICBjb25zdCBwcmVjaXNpb25fdHlwZSBwcmVjaXNpb25fOworfTsK
KworI2lmIGRlZmluZWQoX19OREtfTUFKT1JfXykgJiYgX19OREtfTUFKT1JfXyA8IDE2CisjZGVm
aW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0lPU1RSRUFNX0hFWEZMT0FUIDEKKyNlbHNlCisjZGVm
aW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0lPU1RSRUFNX0hFWEZMT0FUIDAKKyNlbmRpZgorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cz4KK29zdHJlYW1fc3RhdGVf
c2F2ZXI8c3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+PiBtYWtlX29zdHJlYW1fc3Rh
dGVfc2F2ZXIoCisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcywgIC8v
IE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgc3RkOjppb3NfYmFzZTo6Zm10ZmxhZ3Mg
ZmxhZ3MgPSBzdGQ6Omlvc19iYXNlOjpkZWMgfCBzdGQ6Omlvc19iYXNlOjpsZWZ0IHwKKyNpZiBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9JT1NUUkVBTV9IRVhGTE9BVAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjppb3NfYmFzZTo6Zml4ZWQgfAorI2VuZGlmCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Omlvc19iYXNlOjpzY2llbnRpZmljKSB7
CisgIHVzaW5nIHJlc3VsdF90eXBlID0gb3N0cmVhbV9zdGF0ZV9zYXZlcjxzdGQ6OmJhc2ljX29z
dHJlYW08Q2hhclQsIFRyYWl0cz4+OworICByZXR1cm4gcmVzdWx0X3R5cGUob3MsIGZsYWdzLCBv
cy53aWRlbignICcpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBhYnNs
OjplbmFibGVfaWZfdDwhc3RkOjppc19iYXNlX29mPHN0ZDo6aW9zX2Jhc2UsIFQ+Ojp2YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxfc3RhdGVfc2F2ZXI8VD4+CittYWtlX29z
dHJlYW1fc3RhdGVfc2F2ZXIoVCYgaXMsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aW9zX2Jhc2U6OmZtdGZsYWdzIGZsYWdzID0g
c3RkOjppb3NfYmFzZTo6ZGVjKSB7CisgIHN0ZDo6Y2VyciA8PCAibnVsbF9zdGF0ZV9zYXZlciI7
CisgIHVzaW5nIHJlc3VsdF90eXBlID0gbnVsbF9zdGF0ZV9zYXZlcjxUPjsKKyAgcmV0dXJuIHJl
c3VsdF90eXBlKGlzLCBmbGFncyk7Cit9CisKKy8vIHN0cmVhbV9wcmVjaXNpb25faGVscGVyPHR5
cGU+OjprUHJlY2lzaW9uIHJldHVybnMgdGhlIGJhc2UgMTAgcHJlY2lzaW9uCisvLyByZXF1aXJl
ZCB0byBzdHJlYW0gYW5kIHJlY29uc3RydWN0IGEgcmVhbCB0eXBlIGV4YWN0IGJpbmFyeSB2YWx1
ZSB0aHJvdWdoCisvLyBhIGJpbmFyeS0+ZGVjaW1hbC0+YmluYXJ5IHRyYW5zaXRpb24uCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBzdHJlYW1fcHJlY2lzaW9uX2hlbHBlciB7CisgIC8v
IG1heF9kaWdpdHMxMCBtYXkgYmUgMCBvbiBNU1ZDOyBpZiBzbywgdXNlIGRpZ2l0czEwICsgMy4K
KyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga1ByZWNpc2lvbiA9CisgICAgICAoc3RkOjpudW1lcmlj
X2xpbWl0czxUPjo6bWF4X2RpZ2l0czEwID4gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRz
MTApCisgICAgICAgICAgPyBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXhfZGlnaXRzMTAKKyAg
ICAgICAgICA6IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMxMCArIDMpOworfTsKKwor
dGVtcGxhdGUgPD4KK3N0cnVjdCBzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjxmbG9hdD4geworICBz
dGF0aWMgY29uc3RleHByIGludCBrUHJlY2lzaW9uID0gOTsKK307Cit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IHN0cmVhbV9wcmVjaXNpb25faGVscGVyPGRvdWJsZT4geworICBzdGF0aWMgY29uc3RleHBy
IGludCBrUHJlY2lzaW9uID0gMTc7Cit9OwordGVtcGxhdGUgPD4KK3N0cnVjdCBzdHJlYW1fcHJl
Y2lzaW9uX2hlbHBlcjxsb25nIGRvdWJsZT4geworICBzdGF0aWMgY29uc3RleHByIGludCBrUHJl
Y2lzaW9uID0gMzY7ICAvLyBhc3N1bWluZyBmcDEyOAorfTsKKworLy8gaXN0cmVhbV9zdGF0ZV9z
YXZlciBpcyBhIFJBSUkgb2JqZWN0IHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGNvbW1vbgorLy8g
c3RkOjpiYXNpY19pc3RyZWFtPD4gZmxhZ3MgdXNlZCB3aGVuIGltcGxlbWVudGluZyBgb3BlcmF0
b3IgPj4oKWAgb24gYW55IG9mCisvLyB0aGUgYWJzbCByYW5kb20gZGlzdHJpYnV0aW9ucy4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBJU3RyZWFtPgorY2xhc3MgaXN0cmVhbV9zdGF0ZV9zYXZlciB7Cisg
cHVibGljOgorICB1c2luZyBpc3RyZWFtX3R5cGUgPSBJU3RyZWFtOworICB1c2luZyBmbGFnc190
eXBlID0gc3RkOjppb3NfYmFzZTo6Zm10ZmxhZ3M7CisKKyAgaXN0cmVhbV9zdGF0ZV9zYXZlcihp
c3RyZWFtX3R5cGUmIGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAg
ICAgICAgICAgICAgICBmbGFnc190eXBlIGZsYWdzKQorICAgICAgOiBpc18oaXMpLCBmbGFnc18o
aXMuZmxhZ3MoZmxhZ3MpKSB7fQorCisgIH5pc3RyZWFtX3N0YXRlX3NhdmVyKCkgeyBpc18uZmxh
Z3MoZmxhZ3NfKTsgfQorCisgcHJpdmF0ZToKKyAgaXN0cmVhbV90eXBlJiBpc187CisgIGZsYWdz
X3R5cGUgZmxhZ3NfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBU
cmFpdHM+Citpc3RyZWFtX3N0YXRlX3NhdmVyPHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJh
aXRzPj4gbWFrZV9pc3RyZWFtX3N0YXRlX3NhdmVyKAorICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxD
aGFyVCwgVHJhaXRzPiYgaXMsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHN0
ZDo6aW9zX2Jhc2U6OmZtdGZsYWdzIGZsYWdzID0gc3RkOjppb3NfYmFzZTo6ZGVjIHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aW9zX2Jhc2U6OnNjaWVudGlmaWMg
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppb3NfYmFzZTo6c2tp
cHdzKSB7CisgIHVzaW5nIHJlc3VsdF90eXBlID0gaXN0cmVhbV9zdGF0ZV9zYXZlcjxzdGQ6OmJh
c2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4+OworICByZXR1cm4gcmVzdWx0X3R5cGUoaXMsIGZs
YWdzKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVf
aWZfdDwhc3RkOjppc19iYXNlX29mPHN0ZDo6aW9zX2Jhc2UsIFQ+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxfc3RhdGVfc2F2ZXI8VD4+CittYWtlX2lzdHJlYW1fc3Rh
dGVfc2F2ZXIoVCYgaXMsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aW9zX2Jhc2U6OmZtdGZsYWdzIGZsYWdzID0gc3RkOjppb3Nf
YmFzZTo6ZGVjKSB7CisgIHVzaW5nIHJlc3VsdF90eXBlID0gbnVsbF9zdGF0ZV9zYXZlcjxUPjsK
KyAgcmV0dXJuIHJlc3VsdF90eXBlKGlzLCBmbGFncyk7Cit9CisKKy8vIHN0cmVhbV9mb3JtYXRf
dHlwZTxUPiBpcyBhIGhlbHBlciBzdHJ1Y3QgdG8gY29udmVydCB0eXBlcyB3aGljaAorLy8gYmFz
aWNfaW9zdHJlYW0gY2Fubm90IG91dHB1dCBhcyBkZWNpbWFsIG51bWJlcnMgaW50byB0eXBlcyB3
aGljaAorLy8gYmFzaWNfaW9zdHJlYW0gY2FuIG91dHB1dCBhcyBkZWNpbWFsIG51bWJlcnMuIFNw
ZWNpZmljYWxseToKKy8vICogc2lnbmVkL3Vuc2lnbmVkIGNoYXItd2lkdGggdHlwZXMgYXJlIGNv
bnZlcnRlZCB0byBpbnQuCisvLyAqIFRPRE8obGFyKTogX19pbnQxMjggPT4gdWludDEyOCwgZXhj
ZXB0IHRoZXJlIGlzIG5vIG9wZXJhdG9yIDw8IHlldC4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBzdHJlYW1fZm9ybWF0X3R5cGUKKyAgICA6IHB1YmxpYyBzdGQ6OmNvbmRpdGlv
bmFsPChzaXplb2YoVCkgPT0gc2l6ZW9mKGNoYXIpKSwgaW50LCBUPiB7fTsKKworLy8gc3RyZWFt
X3UxMjhfaGVscGVyIGFsbG93cyB1cyB0byB3cml0ZSBvdXQgZWl0aGVyIGFic2w6OnVpbnQxMjgg
b3IKKy8vIF9fdWludDEyOF90IHR5cGVzIGluIHRoZSBzYW1lIHdheSwgd2hpY2ggZW5hYmxlcyB0
aGVpciB1c2UgYXMgaW50ZXJuYWwKKy8vIHN0YXRlIG9mIFBSTkcgZW5naW5lcy4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IHN0cmVhbV91MTI4X2hlbHBlcjsKKwordGVtcGxhdGUgPD4K
K3N0cnVjdCBzdHJlYW1fdTEyOF9oZWxwZXI8YWJzbDo6dWludDEyOD4geworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSVN0cmVhbT4KKyAgaW5saW5lIGFic2w6OnVpbnQxMjggcmVhZChJU3RyZWFtJiBp
bikgeworICAgIHVpbnQ2NF90IGggPSAwOworICAgIHVpbnQ2NF90IGwgPSAwOworICAgIGluID4+
IGggPj4gbDsKKyAgICByZXR1cm4gYWJzbDo6TWFrZVVpbnQxMjgoaCwgbCk7CisgIH0KKworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgT1N0cmVhbT4KKyAgaW5saW5lIHZvaWQgd3JpdGUoYWJzbDo6dWlu
dDEyOCB2YWwsIE9TdHJlYW0mIG91dCkgeworICAgIHVpbnQ2NF90IGggPSBVaW50MTI4SGlnaDY0
KHZhbCk7CisgICAgdWludDY0X3QgbCA9IFVpbnQxMjhMb3c2NCh2YWwpOworICAgIG91dCA8PCBo
IDw8IG91dC5maWxsKCkgPDwgbDsKKyAgfQorfTsKKworI2lmZGVmIEFCU0xfSEFWRV9JTlRSSU5T
SUNfSU5UMTI4Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IHN0cmVhbV91MTI4X2hlbHBlcjxfX3VpbnQx
MjhfdD4geworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSVN0cmVhbT4KKyAgaW5saW5lIF9fdWludDEy
OF90IHJlYWQoSVN0cmVhbSYgaW4pIHsKKyAgICB1aW50NjRfdCBoID0gMDsKKyAgICB1aW50NjRf
dCBsID0gMDsKKyAgICBpbiA+PiBoID4+IGw7CisgICAgcmV0dXJuIChzdGF0aWNfY2FzdDxfX3Vp
bnQxMjhfdD4oaCkgPDwgNjQpIHwgbDsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBPU3Ry
ZWFtPgorICBpbmxpbmUgdm9pZCB3cml0ZShfX3VpbnQxMjhfdCB2YWwsIE9TdHJlYW0mIG91dCkg
eworICAgIHVpbnQ2NF90IGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsID4+IDY0dSk7Cisg
ICAgdWludDY0X3QgbCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWwpOworICAgIG91dCA8PCBo
IDw8IG91dC5maWxsKCkgPDwgbDsKKyAgfQorfTsKKyNlbmRpZgorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRmxvYXRUeXBlLCB0eXBlbmFtZSBJU3RyZWFtPgoraW5saW5lIEZsb2F0VHlwZSByZWFkX2Zs
b2F0aW5nX3BvaW50KElTdHJlYW0mIGlzKSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19mbG9h
dGluZ19wb2ludDxGbG9hdFR5cGU+Ojp2YWx1ZSwgIiIpOworICBGbG9hdFR5cGUgZGVzdDsKKyAg
aXMgPj4gZGVzdDsKKyAgLy8gUGFyc2luZyBhIGRvdWJsZSB2YWx1ZSBtYXkgcmVwb3J0IGEgc3Vi
bm9ybWFsIHZhbHVlIGFzIGFuIGVycm9yCisgIC8vIGRlc3BpdGUgYmVpbmcgYWJsZSB0byByZXBy
ZXNlbnQgaXQuCisgIC8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3EvNTI0MTA5MzEv
MzI4NjY1MworICAvLyBJdCBtYXkgYWxzbyByZXBvcnQgYW4gdW5kZXJmbG93IHdoZW4gcGFyc2lu
ZyBET1VCTEVfTUlOIGFzIGFuCisgIC8vIEVSQU5HRSBlcnJvciwgYXMgdGhlIHBhcnNlZCB2YWx1
ZSBtYXkgYmUgc21hbGxlciB0aGFuIERPVUJMRV9NSU4KKyAgLy8gYW5kIHJvdW5kZWQgdXAuCisg
IC8vIFNlZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzQyMDA1NDYyCisgIGlmIChpcy5m
YWlsKCkgJiYKKyAgICAgIChzdGQ6OmZhYnMoZGVzdCkgPT0gKHN0ZDo6bnVtZXJpY19saW1pdHM8
RmxvYXRUeXBlPjo6bWluKSgpIHx8CisgICAgICAgc3RkOjpmcGNsYXNzaWZ5KGRlc3QpID09IEZQ
X1NVQk5PUk1BTCkpIHsKKyAgICBpcy5jbGVhcihpcy5yZHN0YXRlKCkgJiAofnN0ZDo6aW9zX2Jh
c2U6OmZhaWxiaXQpKTsKKyAgfQorICByZXR1cm4gZGVzdDsKK30KKworfSAgLy8gbmFtZXNwYWNl
IHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9JT1NUUkVBTV9TVEFURV9TQVZFUl9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXJfdGVzdC5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZWNiYWFjMTQzZGNmM2UyMDQwNjFhYmVlNDcxZGViNDBhNmM3Y2I4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyX3Rlc3QuY2MKQEAg
LTAsMCArMSwzNjkgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCIK
KworI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjptYWtlX2lzdHJlYW1fc3RhdGVfc2F2ZXI7Cit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6
Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZlcjsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6
c3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordHlwZW5h
bWUgYWJzbDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+ICAvLwor
U3RyZWFtUm91bmRUcmlwKFQgdCkgeworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgeworICAg
IGF1dG8gc2F2ZXIgPSBtYWtlX29zdHJlYW1fc3RhdGVfc2F2ZXIoc3MpOworICAgIHNzLnByZWNp
c2lvbihzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjxUPjo6a1ByZWNpc2lvbik7CisgICAgc3MgPDwg
dDsKKyAgfQorICBUIHJlc3VsdCA9IDA7CisgIHsKKyAgICBhdXRvIHNhdmVyID0gbWFrZV9pc3Ry
ZWFtX3N0YXRlX3NhdmVyKHNzKTsKKyAgICBzcyA+PiByZXN1bHQ7CisgIH0KKyAgRVhQRUNUX0ZB
TFNFKHNzLmZhaWwoKSkgICAgICAgICAgICAvLworICAgICAgPDwgc3Muc3RyKCkgPDwgIiAiICAg
ICAgICAgICAgIC8vCisgICAgICA8PCAoc3MuZ29vZCgpID8gImdvb2QgIiA6ICIiKSAgLy8KKyAg
ICAgIDw8IChzcy5iYWQoKSA/ICJiYWQgIiA6ICIiKSAgICAvLworICAgICAgPDwgKHNzLmVvZigp
ID8gImVvZiAiIDogIiIpICAgIC8vCisgICAgICA8PCAoc3MuZmFpbCgpID8gImZhaWwgIiA6ICIi
KTsKKworICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVu
YW1lIGFic2w6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBU
PiAgLy8KK1N0cmVhbVJvdW5kVHJpcChUIHQpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7Cisg
IHsKKyAgICBhdXRvIHNhdmVyID0gbWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKHNzKTsKKyAgICBz
cy5wcmVjaXNpb24oc3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8VD46OmtQcmVjaXNpb24pOworICAg
IHNzIDw8IHQ7CisgIH0KKyAgVCByZXN1bHQgPSAwOworICB7CisgICAgYXV0byBzYXZlciA9IG1h
a2VfaXN0cmVhbV9zdGF0ZV9zYXZlcihzcyk7CisgICAgcmVzdWx0ID0gYWJzbDo6cmFuZG9tX2lu
dGVybmFsOjpyZWFkX2Zsb2F0aW5nX3BvaW50PFQ+KHNzKTsKKyAgfQorICBFWFBFQ1RfRkFMU0Uo
c3MuZmFpbCgpKSAgICAgICAgICAgIC8vCisgICAgICA8PCBzcy5zdHIoKSA8PCAiICIgICAgICAg
ICAgICAgLy8KKyAgICAgIDw8IChzcy5nb29kKCkgPyAiZ29vZCAiIDogIiIpICAvLworICAgICAg
PDwgKHNzLmJhZCgpID8gImJhZCAiIDogIiIpICAgIC8vCisgICAgICA8PCAoc3MuZW9mKCkgPyAi
ZW9mICIgOiAiIikgICAgLy8KKyAgICAgIDw8IChzcy5mYWlsKCkgPyAiZmFpbCAiIDogIiIpOwor
CisgIHJldHVybiByZXN1bHQ7Cit9CisKK1RFU1QoSU9TdHJlYW1TdGF0ZVNhdmVyLCBCYXNpY1Nh
dmVyU3RhdGUpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzLnByZWNpc2lvbigyKTsK
KyAgc3MuZmlsbCgneCcpOworICBzcy5mbGFncyhzdGQ6Omlvc19iYXNlOjpkZWMgfCBzdGQ6Omlv
c19iYXNlOjpyaWdodCk7CisKKyAgeworICAgIGF1dG8gc2F2ZXIgPSBtYWtlX29zdHJlYW1fc3Rh
dGVfc2F2ZXIoc3MpOworICAgIHNzLnByZWNpc2lvbigxMCk7CisgICAgRVhQRUNUX05FKCd4Jywg
c3MuZmlsbCgpKTsKKyAgICBFWFBFQ1RfRVEoMTAsIHNzLnByZWNpc2lvbigpKTsKKyAgICBFWFBF
Q1RfTkUoc3RkOjppb3NfYmFzZTo6ZGVjIHwgc3RkOjppb3NfYmFzZTo6cmlnaHQsIHNzLmZsYWdz
KCkpOworCisgICAgc3MgPDwgMS4yMzsKKyAgfQorCisgIEVYUEVDVF9FUSgneCcsIHNzLmZpbGwo
KSk7CisgIEVYUEVDVF9FUSgyLCBzcy5wcmVjaXNpb24oKSk7CisgIEVYUEVDVF9FUShzdGQ6Omlv
c19iYXNlOjpkZWMgfCBzdGQ6Omlvc19iYXNlOjpyaWdodCwgc3MuZmxhZ3MoKSk7Cit9CisKK1RF
U1QoSU9TdHJlYW1TdGF0ZVNhdmVyLCBSb3VuZFRyaXBJbnRzKSB7CisgIGNvbnN0IHVpbnQ2NF90
IGtVaW50VmFsdWVzW10gPSB7CisgICAgICAwLAorICAgICAgMSwKKyAgICAgIHN0YXRpY19jYXN0
PHVpbnQ2NF90PigtMSksCisgICAgICAyLAorICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0y
KSwKKworICAgICAgMSA8PCA3LAorICAgICAgMSA8PCA4LAorICAgICAgMSA8PCAxNiwKKyAgICAg
IDF1bGwgPDwgMzIsCisgICAgICAxdWxsIDw8IDUwLAorICAgICAgMXVsbCA8PCA2MiwKKyAgICAg
IDF1bGwgPDwgNjMsCisKKyAgICAgICgxIDw8IDcpIC0gMSwKKyAgICAgICgxIDw8IDgpIC0gMSwK
KyAgICAgICgxIDw8IDE2KSAtIDEsCisgICAgICAoMXVsbCA8PCAzMikgLSAxLAorICAgICAgKDF1
bGwgPDwgNTApIC0gMSwKKyAgICAgICgxdWxsIDw8IDYyKSAtIDEsCisgICAgICAoMXVsbCA8PCA2
MykgLSAxLAorCisgICAgICBzdGF0aWNfY2FzdDx1aW50NjRfdD4oLSgxIDw8IDgpKSwKKyAgICAg
IHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKDEgPDwgMTYpKSwKKyAgICAgIHN0YXRpY19jYXN0PHVp
bnQ2NF90PigtKDFsbCA8PCAzMikpLAorICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0oMWxs
IDw8IDUwKSksCisgICAgICBzdGF0aWNfY2FzdDx1aW50NjRfdD4oLSgxbGwgPDwgNjIpKSwKKwor
ICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0oMSA8PCA4KSAtIDEpLAorICAgICAgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KC0oMSA8PCAxNikgLSAxKSwKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2
NF90PigtKDFsbCA8PCAzMikgLSAxKSwKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKDFs
bCA8PCA1MCkgLSAxKSwKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKDFsbCA8PCA2Mikg
LSAxKSwKKyAgfTsKKworICBmb3IgKGNvbnN0IHVpbnQ2NF90IHUgOiBrVWludFZhbHVlcykgewor
ICAgIEVYUEVDVF9FUSh1LCBTdHJlYW1Sb3VuZFRyaXA8dWludDY0X3Q+KHUpKTsKKworICAgIGlu
dDY0X3QgeCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KHUpOworICAgIEVYUEVDVF9FUSh4LCBTdHJl
YW1Sb3VuZFRyaXA8aW50NjRfdD4oeCkpOworCisgICAgZG91YmxlIGQgPSBzdGF0aWNfY2FzdDxk
b3VibGU+KHgpOworICAgIEVYUEVDVF9FUShkLCBTdHJlYW1Sb3VuZFRyaXA8ZG91YmxlPihkKSk7
CisKKyAgICBmbG9hdCBmID0gZDsKKyAgICBFWFBFQ1RfRVEoZiwgU3RyZWFtUm91bmRUcmlwPGZs
b2F0PihmKSk7CisgIH0KK30KKworVEVTVChJT1N0cmVhbVN0YXRlU2F2ZXIsIFJvdW5kVHJpcEZs
b2F0cykgeworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgc3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8
ZmxvYXQ+OjprUHJlY2lzaW9uID49IDksCisgICAgICAic3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8
ZmxvYXQ+OjprUHJlY2lzaW9uIHNob3VsZCBiZSBhdCBsZWFzdCA5Iik7CisKKyAgY29uc3QgZmxv
YXQga1ZhbHVlc1tdID0geworICAgICAgMSwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKDEuMGYsIDAu
MGYpLCAgLy8gMSAtIGVwc2lsb24KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKDEuMGYsIDIuMGYpLCAg
Ly8gMSArIGVwc2lsb24KKworICAgICAgMS4wZSsxZiwKKyAgICAgIDEuMGUtMWYsCisgICAgICAx
LjBlKzJmLAorICAgICAgMS4wZS0yZiwKKyAgICAgIDEuMGUrMTBmLAorICAgICAgMS4wZS0xMGYs
CisKKyAgICAgIDAuMDAwMDAwNTExMTAwMDAxMTEzMTExMTExMTFmLAorICAgICAgLTAuMDAwMDAw
NTExMTAwMDAxMTEyMTExMTExMTFmLAorCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NWUr
NmYsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NWUtNmYsCisgICAgICAxLjIzNDY3ODkx
MjM0NTY3ODkxMjM0NWUrMzBmLAorICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlLTMwZiwK
KyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1ZSszOGYsCisgICAgICAxLjAyMzQ2Nzg5MTIz
NDU2Nzg5MTIzNDVlLTM4ZiwKKworICAgICAgLy8gQm91bmRhcnkgY2FzZXMuCisgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6bG93ZXN0KCksCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6ZXBz
aWxvbigpLAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAgMS4wZiksICAgICAgICAgICAgICAgLy8gbWlu
ICsgZXBzaWxvbgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1pbigpLCAgLy8g
c21hbGxlc3Qgbm9ybWFsCisgICAgICAvLyBUaGVyZSBhcmUgc29tZSBlcnJvcnMgZGVhbGluZyB3
aXRoIGRlbm9ybXMgb24gYXBwbGUgcGxhdGZvcm1zLgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46OmRlbm9ybV9taW4oKSwgIC8vIHNtYWxsZXN0IGRlbm9ybQorICAgICAgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46Om1pbigpIC8gMiwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgIDAu
MGYpLCAgLy8gZGVub3JtX21heAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OmRlbm9ybV9taW4oKSwgMS4wZiksCisgIH07CisKKyAgZm9yIChjb25zdCBm
bG9hdCBmIDoga1ZhbHVlcykgeworICAgIEVYUEVDVF9FUShmLCBTdHJlYW1Sb3VuZFRyaXA8Zmxv
YXQ+KGYpKTsKKyAgICBFWFBFQ1RfRVEoLWYsIFN0cmVhbVJvdW5kVHJpcDxmbG9hdD4oLWYpKTsK
KworICAgIGRvdWJsZSBkID0gZjsKKyAgICBFWFBFQ1RfRVEoZCwgU3RyZWFtUm91bmRUcmlwPGRv
dWJsZT4oZCkpOworICAgIEVYUEVDVF9FUSgtZCwgU3RyZWFtUm91bmRUcmlwPGRvdWJsZT4oLWQp
KTsKKworICAgIC8vIEF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvciAob3ZlcmZsb3cvdW5kZXJmbG93
KS4KKyAgICBpZiAoZCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSAmJgor
ICAgICAgICBkID49IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Omxvd2VzdCgpKSB7Cisg
ICAgICBpbnQ2NF90IHggPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihmKTsKKyAgICAgIEVYUEVDVF9F
USh4LCBTdHJlYW1Sb3VuZFRyaXA8aW50NjRfdD4oeCkpOworICAgIH0KKyAgfQorfQorCitURVNU
KElPU3RyZWFtU3RhdGVTYXZlciwgUm91bmRUcmlwRG91YmxlcykgeworICBzdGF0aWNfYXNzZXJ0
KAorICAgICAgc3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8ZG91YmxlPjo6a1ByZWNpc2lvbiA+PSAx
NywKKyAgICAgICJzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjxkb3VibGU+OjprUHJlY2lzaW9uIHNo
b3VsZCBiZSBhdCBsZWFzdCAxNyIpOworCisgIGNvbnN0IGRvdWJsZSBrVmFsdWVzW10gPSB7Cisg
ICAgICAxLAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoMS4wLCAwLjApLCAgLy8gMSAtIGVwc2lsb24K
KyAgICAgIHN0ZDo6bmV4dGFmdGVyKDEuMCwgMi4wKSwgIC8vIDEgKyBlcHNpbG9uCisKKyAgICAg
IDEuMGUrMSwKKyAgICAgIDEuMGUtMSwKKyAgICAgIDEuMGUrMiwKKyAgICAgIDEuMGUtMiwKKyAg
ICAgIDEuMGUrMTAsCisgICAgICAxLjBlLTEwLAorCisgICAgICAwLjAwMDAwMDUxMTEwMDAwMTEx
MzExMTExMTExLAorICAgICAgLTAuMDAwMDAwNTExMTAwMDAxMTEyMTExMTExMTEsCisKKyAgICAg
IDEuMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1ZSs2LAorICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIz
NDVlLTYsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NWUrMzAsCisgICAgICAxLjIzNDY3
ODkxMjM0NTY3ODkxMjM0NWUtMzAsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NWUrMzgs
CisgICAgICAxLjAyMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlLTM4LAorCisgICAgICAxLjBlKzEwMCwK
KyAgICAgIDEuMGUtMTAwLAorICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlKzMwOCwKKyAg
ICAgIDEuMDIzNDY3ODkxMjM0NTY3ODkxMjM0NWUtMzA4LAorICAgICAgMi4yMjUwNzM4NTg1MDcy
MDEzOGUtMzA4LAorCisgICAgICAvLyBCb3VuZGFyeSBjYXNlcy4KKyAgICAgIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6bWF4KCksCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Omxvd2VzdCgpLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjplcHNpbG9u
KCksCisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1p
bigpLAorICAgICAgICAgICAgICAgICAgICAgMS4wKSwgICAgICAgICAgICAgICAgIC8vIG1pbiAr
IGVwc2lsb24KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWluKCksICAvLyBz
bWFsbGVzdCBub3JtYWwKKyAgICAgIC8vIFRoZXJlIGFyZSBzb21lIGVycm9ycyBkZWFsaW5nIHdp
dGggZGVub3JtcyBvbiBhcHBsZSBwbGF0Zm9ybXMuCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmRlbm9ybV9taW4oKSwgIC8vIHNtYWxsZXN0IGRlbm9ybQorICAgICAgc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjptaW4oKSAvIDIsCisgICAgICBzdGQ6Om5leHRhZnRlcihz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAg
MC4wKSwgIC8vIGRlbm9ybV9tYXgKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6ZGVub3JtX21pbigpLCAxLjBmKSwKKyAgfTsKKworICBmb3IgKGNvbnN0
IGRvdWJsZSBkIDoga1ZhbHVlcykgeworICAgIEVYUEVDVF9FUShkLCBTdHJlYW1Sb3VuZFRyaXA8
ZG91YmxlPihkKSk7CisgICAgRVhQRUNUX0VRKC1kLCBTdHJlYW1Sb3VuZFRyaXA8ZG91YmxlPigt
ZCkpOworCisgICAgLy8gQXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yIChvdmVyZmxvdy91bmRlcmZs
b3cpLgorICAgIGlmIChkIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAmJgor
ICAgICAgICBkID49IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpsb3dlc3QoKSkgeworICAg
ICAgZmxvYXQgZiA9IHN0YXRpY19jYXN0PGZsb2F0PihkKTsKKyAgICAgIEVYUEVDVF9FUShmLCBT
dHJlYW1Sb3VuZFRyaXA8ZmxvYXQ+KGYpKTsKKyAgICB9CisKKyAgICAvLyBBdm9pZCB1bmRlZmlu
ZWQgYmVoYXZpb3IgKG92ZXJmbG93L3VuZGVyZmxvdykuCisgICAgaWYgKGQgPD0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkgJiYKKyAgICAgICAgZCA+PSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDY0X3Q+Ojpsb3dlc3QoKSkgeworICAgICAgaW50NjRfdCB4ID0gc3RhdGljX2Nh
c3Q8aW50NjRfdD4oZCk7CisgICAgICBFWFBFQ1RfRVEoeCwgU3RyZWFtUm91bmRUcmlwPGludDY0
X3Q+KHgpKTsKKyAgICB9CisgIH0KK30KKworVEVTVChJT1N0cmVhbVN0YXRlU2F2ZXIsIFJvdW5k
VHJpcExvbmdEb3VibGVzKSB7CisgIC8vIFRlY2huaWNhbGx5LCBDKysgb25seSBndWFyYW50ZWVz
IHRoYXQgbG9uZyBkb3VibGUgaXMgYXQgbGVhc3QgYXMgbGFyZ2UgYXMgYQorICAvLyBkb3VibGUu
ICBQcmFjdGljYWxseSBpdCB2YXJpZXMgZnJvbSA2NC1iaXRzIHRvIDEyOC1iaXRzLgorICAvLwor
ICAvLyBTbyBpdCBpcyBiZXN0IHRvIGNvbnNpZGVyIGxvbmcgZG91YmxlIGEgYmVzdC1lZmZvcnQg
ZXh0ZW5kZWQgcHJlY2lzaW9uCisgIC8vIHR5cGUuCisKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAg
IHN0cmVhbV9wcmVjaXNpb25faGVscGVyPGxvbmcgZG91YmxlPjo6a1ByZWNpc2lvbiA+PSAzNiwK
KyAgICAgICJzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjxsb25nIGRvdWJsZT46OmtQcmVjaXNpb24g
c2hvdWxkIGJlIGF0IGxlYXN0IDM2Iik7CisKKyAgdXNpbmcgcmVhbF90eXBlID0gbG9uZyBkb3Vi
bGU7CisgIGNvbnN0IHJlYWxfdHlwZSBrVmFsdWVzW10gPSB7CisgICAgICAxLAorICAgICAgc3Rk
OjpuZXh0YWZ0ZXIoMS4wLCAwLjApLCAgLy8gMSAtIGVwc2lsb24KKyAgICAgIHN0ZDo6bmV4dGFm
dGVyKDEuMCwgMi4wKSwgIC8vIDEgKyBlcHNpbG9uCisKKyAgICAgIDEuMGUrMSwKKyAgICAgIDEu
MGUtMSwKKyAgICAgIDEuMGUrMiwKKyAgICAgIDEuMGUtMiwKKyAgICAgIDEuMGUrMTAsCisgICAg
ICAxLjBlLTEwLAorCisgICAgICAwLjAwMDAwMDUxMTEwMDAwMTExMzExMTExMTExLAorICAgICAg
LTAuMDAwMDAwNTExMTAwMDAxMTEyMTExMTExMTEsCisKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4
OTEyMzQ1Njc4OTEyMzQ1Njc4OWUrNiwKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4
OTEyMzQ1Njc4OWUtNiwKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4
OWUrMzAsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODllLTMwLAor
ICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5ZSszOCwKKyAgICAgIDEu
MjM0Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OWUtMzgsCisgICAgICAxLjIzNDY3ODkx
MjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODllKzMwOCwKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4
OTEyMzQ1Njc4OTEyMzQ1Njc4OWUtMzA4LAorCisgICAgICAxLjBlKzEwMCwKKyAgICAgIDEuMGUt
MTAwLAorICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlKzMwOCwKKyAgICAgIDEuMDIzNDY3
ODkxMjM0NTY3ODkxMjM0NWUtMzA4LAorCisgICAgICAvLyBCb3VuZGFyeSBjYXNlcy4KKyAgICAg
IHN0ZDo6bnVtZXJpY19saW1pdHM8cmVhbF90eXBlPjo6bWF4KCksCisgICAgICBzdGQ6Om51bWVy
aWNfbGltaXRzPHJlYWxfdHlwZT46Omxvd2VzdCgpLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czxyZWFsX3R5cGU+OjplcHNpbG9uKCksCisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVy
aWNfbGltaXRzPHJlYWxfdHlwZT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAgcmVhbF90
eXBlKDEpKSwgICAgICAgICAgIC8vIG1pbiArIGVwc2lsb24KKyAgICAgIHN0ZDo6bnVtZXJpY19s
aW1pdHM8cmVhbF90eXBlPjo6bWluKCksICAvLyBzbWFsbGVzdCBub3JtYWwKKyAgICAgIC8vIFRo
ZXJlIGFyZSBzb21lIGVycm9ycyBkZWFsaW5nIHdpdGggZGVub3JtcyBvbiBhcHBsZSBwbGF0Zm9y
bXMuCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHJlYWxfdHlwZT46OmRlbm9ybV9taW4oKSwg
IC8vIHNtYWxsZXN0IGRlbm9ybQorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxyZWFsX3R5cGU+
OjptaW4oKSAvIDIsCisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRzPHJl
YWxfdHlwZT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAgMC4wKSwgIC8vIGRlbm9ybV9t
YXgKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVhbF90eXBlPjo6
ZGVub3JtX21pbigpLCAxLjBmKSwKKyAgfTsKKworICBpbnQgaW5kZXggPSAtMTsKKyAgZm9yIChj
b25zdCBsb25nIGRvdWJsZSBkZCA6IGtWYWx1ZXMpIHsKKyAgICBpbmRleCsrOworICAgIEVYUEVD
VF9FUShkZCwgU3RyZWFtUm91bmRUcmlwPHJlYWxfdHlwZT4oZGQpKSA8PCBpbmRleDsKKyAgICBF
WFBFQ1RfRVEoLWRkLCBTdHJlYW1Sb3VuZFRyaXA8cmVhbF90eXBlPigtZGQpKSA8PCBpbmRleDsK
KworICAgIC8vIEF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvciAob3ZlcmZsb3cvdW5kZXJmbG93KS4K
KyAgICBpZiAoZGQgPD0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSAmJgorICAg
ICAgICBkZCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpKSB7CisgICAg
ICBkb3VibGUgZCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oZGQpOworICAgICAgRVhQRUNUX0VRKGQs
IFN0cmVhbVJvdW5kVHJpcDxkb3VibGU+KGQpKTsKKyAgICB9CisKKyAgICAvLyBBdm9pZCB1bmRl
ZmluZWQgYmVoYXZpb3IgKG92ZXJmbG93L3VuZGVyZmxvdykuCisgICAgaWYgKGRkIDw9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpICYmCisgICAgICAgIGRkID49IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Omxvd2VzdCgpKSB7CisgICAgICBpbnQ2NF90IHggPSBzdGF0
aWNfY2FzdDxpbnQ2NF90PihkZCk7CisgICAgICBFWFBFQ1RfRVEoeCwgU3RyZWFtUm91bmRUcmlw
PGludDY0X3Q+KHgpKTsKKyAgICB9CisgIH0KK30KKworVEVTVChTdHJUb0RUZXN0LCBEb3VibGVN
aW4pIHsKKyAgY29uc3QgY2hhciBrVltdID0gIjIuMjI1MDczODU4NTA3MjAxMzhlLTMwOCI7Cisg
IGNoYXIqIGVuZDsKKyAgZG91YmxlIHggPSBzdGQ6OnN0cnRvZChrViwgJmVuZCk7CisgIEVYUEVD
VF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpLCB4KTsKKyAgLy8gZXJybm8g
bWF5IGVxdWFsIEVSQU5HRS4KK30KKworVEVTVChTdHJUb0RUZXN0LCBEb3VibGVEZW5vcm1NaW4p
IHsKKyAgY29uc3QgY2hhciBrVltdID0gIjQuOTQwNjU2NDU4NDEyNDY1NDRlLTMyNCI7CisgIGNo
YXIqIGVuZDsKKyAgZG91YmxlIHggPSBzdGQ6OnN0cnRvZChrViwgJmVuZCk7CisgIEVYUEVDVF9F
UShzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRlbm9ybV9taW4oKSwgeCk7CisgIC8vIGVy
cm5vIG1heSBlcXVhbCBFUkFOR0UuCit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL25hbWVkX2dlbmVyYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9p
bnRlcm5hbC9uYW1lZF9nZW5lcmF0b3IuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE2OGEyNWJlMmU3MmFlMWVk
YjhkMGE2YWIwZjM5MjYxYzliODJjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9p
bnRlcm5hbC9uYW1lZF9nZW5lcmF0b3IuY2MKQEAgLTAsMCArMSwzMCBAQAorLy8gQ29weXJpZ2h0
IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1
ZGUgPGlvc3RyZWFtPgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisKKy8vIFRo
aXMgcHJvZ3JhbSBpcyB1c2VkIGluIGludGVncmF0aW9uIHRlc3RzLgorCitpbnQgbWFpbigpIHsK
KyAgYXV0byBzZWVkX3NlcSA9IGFic2w6Ok1ha2VUYWdnZWRTZWVkU2VxKCJURVNUX0dFTkVSQVRP
UiIsIHN0ZDo6Y2Vycik7CisgIGFic2w6OkJpdEdlbiBybmcoc2VlZF9zZXEpOworICBjb25zdGV4
cHIgc2l6ZV90IGtTZXF1ZW5jZUxlbmd0aCA9IDg7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
a1NlcXVlbmNlTGVuZ3RoOyBpKyspIHsKKyAgICBzdGQ6OmNvdXQgPDwgcm5nKCkgPDwgIlxuIjsK
KyAgfQorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9u
YW5vYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmsuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2YzNzgwMGM2ODMwMDNjZjhiY2YxM2RjNWE0NmUwMjgyMDk3MDZjNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9uYW5vYmVuY2htYXJrLmNjCkBA
IC0wLDAgKzEsODEwIEBACisvLyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1h
cmsuaCIKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPiAg
Ly8gc29ydAorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUg
PGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxjc3RyaW5nPiAgLy8gbWVt
Y3B5CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGls
aXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9y
YXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3BsYXRmb3JtLmgi
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2VuZ2luZS5oIgorCisvLyBP
UworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkKKyNkZWZpbmUgQUJTTF9P
U19XSU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKKworI2VsaWYgZGVmaW5lZChf
X0FORFJPSURfXykKKyNkZWZpbmUgQUJTTF9PU19BTkRST0lECisKKyNlbGlmIGRlZmluZWQoX19s
aW51eF9fKQorI2RlZmluZSBBQlNMX09TX0xJTlVYCisjaW5jbHVkZSA8c2NoZWQuaD4gICAgICAg
IC8vIE5PTElOVAorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+ICAvLyBOT0xJTlQKKyNlbmRpZgor
CisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzY0KSAmJiAhZGVmaW5lZChBQlNMX09TX1dJTikK
KyNpbmNsdWRlIDxjcHVpZC5oPiAgLy8gTk9MSU5UCisjZW5kaWYKKworLy8gX19wcGNfZ2V0X3Rp
bWViYXNlX2ZyZXEKKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9QUEMpCisjaW5jbHVkZSA8c3lzL3Bs
YXRmb3JtL3BwYy5oPiAgLy8gTk9MSU5UCisjZW5kaWYKKworLy8gY2xvY2tfZ2V0dGltZQorI2lm
IGRlZmluZWQoQUJTTF9BUkNIX0FSTSkgfHwgZGVmaW5lZChBQlNMX0FSQ0hfQUFSQ0g2NCkKKyNp
bmNsdWRlIDx0aW1lLmg+ICAvLyBOT0xJTlQKKyNlbmRpZgorCisvLyBBQlNMX0hBVkVfQVRUUklC
VVRFCisjaWYgIWRlZmluZWQoQUJTTF9IQVZFX0FUVFJJQlVURSkKKyNpZmRlZiBfX2hhc19hdHRy
aWJ1dGUKKyNkZWZpbmUgQUJTTF9IQVZFX0FUVFJJQlVURSh4KSBfX2hhc19hdHRyaWJ1dGUoeCkK
KyNlbHNlCisjZGVmaW5lIEFCU0xfSEFWRV9BVFRSSUJVVEUoeCkgMAorI2VuZGlmCisjZW5kaWYK
KworLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX05FVkVSX0lOTElORSBwcmV2ZW50
cyBpbmxpbmluZyBvZiB0aGUgbWV0aG9kLgorI2lmIEFCU0xfSEFWRV9BVFRSSUJVVEUobm9pbmxp
bmUpIHx8IChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pKQorI2RlZmlu
ZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfTkVWRVJfSU5MSU5FIF9fYXR0cmlidXRl
X18oKG5vaW5saW5lKSkKKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX0FUVFJJQlVURV9ORVZFUl9JTkxJTkUgX19kZWNsc3BlYyhub2lubGluZSkK
KyNlbHNlCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9ORVZFUl9JTkxJ
TkUKKyNlbmRpZgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFs
X25hbm9iZW5jaG1hcmsgeworbmFtZXNwYWNlIHsKKworLy8gRm9yIGNvZGUgZm9sZGluZy4KK25h
bWVzcGFjZSBwbGF0Zm9ybSB7CisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzY0KQorCisvLyBU
T0RPKGphbndhcyk6IE1lcmdlIHdpdGggdGhlIG9uZSBpbiByYW5kZW5faHdhZXMuY2M/Cit2b2lk
IENwdWlkKGNvbnN0IHVpbnQzMl90IGxldmVsLCBjb25zdCB1aW50MzJfdCBjb3VudCwKKyAgICAg
ICAgICAgdWludDMyX3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIGFiY2QpIHsKKyNp
ZiBkZWZpbmVkKEFCU0xfT1NfV0lOKQorICBpbnQgcmVnc1s0XTsKKyAgX19jcHVpZGV4KHJlZ3Ms
IGxldmVsLCBjb3VudCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgYWJj
ZFtpXSA9IHJlZ3NbaV07CisgIH0KKyNlbHNlCisgIHVpbnQzMl90IGEsIGIsIGMsIGQ7CisgIF9f
Y3B1aWRfY291bnQobGV2ZWwsIGNvdW50LCBhLCBiLCBjLCBkKTsKKyAgYWJjZFswXSA9IGE7Cisg
IGFiY2RbMV0gPSBiOworICBhYmNkWzJdID0gYzsKKyAgYWJjZFszXSA9IGQ7CisjZW5kaWYKK30K
Kworc3RkOjpzdHJpbmcgQnJhbmRTdHJpbmcoKSB7CisgIGNoYXIgYnJhbmRfc3RyaW5nWzQ5XTsK
KyAgdWludDMyX3QgYWJjZFs0XTsKKworICAvLyBDaGVjayBpZiBicmFuZCBzdGQ6OnN0cmluZyBp
cyBzdXBwb3J0ZWQgKGl0IGlzIG9uIGFsbCByZWFzb25hYmxlIEludGVsL0FNRCkKKyAgQ3B1aWQo
MHg4MDAwMDAwMFUsIDAsIGFiY2QpOworICBpZiAoYWJjZFswXSA8IDB4ODAwMDAwMDRVKSB7Cisg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CisgIH0KKworICBmb3IgKGludCBpID0gMDsgaSA8IDM7
ICsraSkgeworICAgIENwdWlkKDB4ODAwMDAwMDJVICsgaSwgMCwgYWJjZCk7CisgICAgbWVtY3B5
KGJyYW5kX3N0cmluZyArIGkgKiAxNiwgJmFiY2QsIHNpemVvZihhYmNkKSk7CisgIH0KKyAgYnJh
bmRfc3RyaW5nWzQ4XSA9IDA7CisgIHJldHVybiBicmFuZF9zdHJpbmc7Cit9CisKKy8vIFJldHVy
bnMgdGhlIGZyZXF1ZW5jeSBxdW90ZWQgaW5zaWRlIHRoZSBicmFuZCBzdHJpbmcuIFRoaXMgZG9l
cyBub3QKKy8vIGFjY291bnQgZm9yIHRocm90dGxpbmcgbm9yIFR1cmJvIEJvb3N0LgorZG91Ymxl
IE5vbWluYWxDbG9ja1JhdGUoKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBicmFuZF9zdHJpbmcg
PSBCcmFuZFN0cmluZygpOworICAvLyBCcmFuZCBzdHJpbmdzIGluY2x1ZGUgdGhlIG1heGltdW0g
Y29uZmlndXJlZCBmcmVxdWVuY3kuIFRoZXNlIHByZWZpeGVzIGFyZQorICAvLyBkZWZpbmVkIGJ5
IEludGVsIENQVUlEIGRvY3VtZW50YXRpb24uCisgIGNvbnN0IGNoYXIqIHByZWZpeGVzWzNdID0g
eyJNSHoiLCAiR0h6IiwgIlRIeiJ9OworICBjb25zdCBkb3VibGUgbXVsdGlwbGllcnNbM10gPSB7
MUU2LCAxRTksIDFFMTJ9OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDM7ICsraSkgeworICAg
IGNvbnN0IHNpemVfdCBwb3NfcHJlZml4ID0gYnJhbmRfc3RyaW5nLmZpbmQocHJlZml4ZXNbaV0p
OworICAgIGlmIChwb3NfcHJlZml4ICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICBjb25z
dCBzaXplX3QgcG9zX3NwYWNlID0gYnJhbmRfc3RyaW5nLnJmaW5kKCcgJywgcG9zX3ByZWZpeCAt
IDEpOworICAgICAgaWYgKHBvc19zcGFjZSAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyBkaWdpdHMgPQorICAgICAgICAgICAgYnJhbmRfc3RyaW5nLnN1
YnN0cihwb3Nfc3BhY2UgKyAxLCBwb3NfcHJlZml4IC0gcG9zX3NwYWNlIC0gMSk7CisgICAgICAg
IHJldHVybiBzdGQ6OnN0b2QoZGlnaXRzKSAqIG11bHRpcGxpZXJzW2ldOworICAgICAgfQorICAg
IH0KKyAgfQorCisgIHJldHVybiAwLjA7Cit9CisKKyNlbmRpZiAgLy8gQUJTTF9BUkNIX1g4Nl82
NAorfSAgLy8gbmFtZXNwYWNlIHBsYXRmb3JtCisKKy8vIFByZXZlbnRzIHRoZSBjb21waWxlciBm
cm9tIGVsaWRpbmcgdGhlIGNvbXB1dGF0aW9ucyB0aGF0IGxlZCB0byAib3V0cHV0Ii4KK3RlbXBs
YXRlIDxjbGFzcyBUPgoraW5saW5lIHZvaWQgUHJldmVudEVsaXNpb24oVCYmIG91dHB1dCkgewor
I2lmbmRlZiBBQlNMX09TX1dJTgorICAvLyBXb3JrcyBieSBpbmRpY2F0aW5nIHRvIHRoZSBjb21w
aWxlciB0aGF0ICJvdXRwdXQiIGlzIGJlaW5nIHJlYWQgYW5kCisgIC8vIG1vZGlmaWVkLiBUaGUg
K3IgY29uc3RyYWludCBhdm9pZHMgdW5uZWNlc3Nhcnkgd3JpdGVzIHRvIG1lbW9yeSwgYnV0IG9u
bHkKKyAgLy8gd29ya3MgZm9yIGJ1aWx0LWluIHR5cGVzICh0eXBpY2FsbHkgRnVuY091dHB1dCku
CisgIGFzbSB2b2xhdGlsZSgiIiA6ICIrciIob3V0cHV0KSA6IDogIm1lbW9yeSIpOworI2Vsc2UK
KyAgLy8gTVNWQyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBhc3NlbWJseSBhbnltb3JlIChhbmQg
bmV2ZXIgc3VwcG9ydGVkIEdDQydzCisgIC8vIFJUTCBjb25zdHJhaW50cykuIFNlbGYtYXNzaWdu
bWVudCB3aXRoICNwcmFnbWEgb3B0aW1pemUoIm9mZiIpIG1pZ2h0IGJlCisgIC8vIGV4cGVjdGVk
IHRvIHByZXZlbnQgZWxpc2lvbiwgYnV0IGl0IGRvZXMgbm90IHdpdGggTVNWQyAyMDE1LiBUeXBl
LXB1bm5pbmcKKyAgLy8gd2l0aCB2b2xhdGlsZSBwb2ludGVycyBnZW5lcmF0ZXMgaW5lZmZpY2ll
bnQgY29kZSBvbiBNU1ZDIDIwMTcuCisgIHN0YXRpYyBzdGQ6OmF0b21pYzxUPiBkdW1teShUe30p
OworICBkdW1teS5zdG9yZShvdXRwdXQsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworI2Vu
ZGlmCit9CisKK25hbWVzcGFjZSB0aW1lciB7CisKKy8vIFN0YXJ0L1N0b3AgcmV0dXJuIGFic29s
dXRlIHRpbWVzdGFtcHMgYW5kIG11c3QgYmUgcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZQorLy8g
YW5kIGFmdGVyIHRoZSByZWdpb24gdG8gbWVhc3VyZS4gV2UgcHJvdmlkZSBzZXBhcmF0ZSBTdGFy
dC9TdG9wIGZ1bmN0aW9ucworLy8gYmVjYXVzZSB0aGV5IHVzZSBkaWZmZXJlbnQgZmVuY2VzLgor
Ly8KKy8vIEJhY2tncm91bmQ6IFJEVFNDIGlzIG5vdCAnc2VyaWFsaXppbmcnOyBlYXJsaWVyIGlu
c3RydWN0aW9ucyBtYXkgY29tcGxldGUKKy8vIGFmdGVyIGl0LCBhbmQvb3IgbGF0ZXIgaW5zdHJ1
Y3Rpb25zIG1heSBjb21wbGV0ZSBiZWZvcmUgaXQuICdGZW5jZXMnIGVuc3VyZQorLy8gcmVnaW9u
cycgZWxhcHNlZCB0aW1lcyBhcmUgaW5kZXBlbmRlbnQgb2Ygc3VjaCByZW9yZGVyaW5nLiBUaGUg
b25seQorLy8gZG9jdW1lbnRlZCB1bnByaXZpbGVnZWQgc2VyaWFsaXppbmcgaW5zdHJ1Y3Rpb24g
aXMgQ1BVSUQsIHdoaWNoIGFjdHMgYXMgYQorLy8gZnVsbCBmZW5jZSAobm8gcmVvcmRlcmluZyBh
Y3Jvc3MgaXQgaW4gZWl0aGVyIGRpcmVjdGlvbikuIFVuZm9ydHVuYXRlbHkKKy8vIHRoZSBsYXRl
bmN5IG9mIENQVUlEIHZhcmllcyB3aWxkbHkgKHBlcmhhcHMgbWFkZSB3b3JzZSBieSBub3QgaW5p
dGlhbGl6aW5nCisvLyBpdHMgRUFYIGlucHV0KS4gQmVjYXVzZSBpdCBjYW5ub3QgcmVsaWFibHkg
YmUgZGVkdWN0ZWQgZnJvbSB0aGUgcmVnaW9uJ3MKKy8vIGVsYXBzZWQgdGltZSwgaXQgbXVzdCBu
b3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlZ2lvbiB0byBtZWFzdXJlIChpLmUuCisvLyBiZXR3ZWVu
IHRoZSB0d28gUkRUU0MpLgorLy8KKy8vIFRoZSBuZXdlciBSRFRTQ1AgaXMgc29tZXRpbWVzIGRl
c2NyaWJlZCBhcyBzZXJpYWxpemluZywgYnV0IGl0IGFjdHVhbGx5CisvLyBvbmx5IHNlcnZlcyBh
cyBhIGhhbGYtZmVuY2Ugd2l0aCByZWxlYXNlIHNlbWFudGljcy4gQWx0aG91Z2ggYWxsCisvLyBp
bnN0cnVjdGlvbnMgaW4gdGhlIHJlZ2lvbiB3aWxsIGNvbXBsZXRlIGJlZm9yZSB0aGUgZmluYWwg
dGltZXN0YW1wIGlzCisvLyBjYXB0dXJlZCwgc3Vic2VxdWVudCBpbnN0cnVjdGlvbnMgbWF5IGxl
YWsgaW50byB0aGUgcmVnaW9uIGFuZCBpbmNyZWFzZSB0aGUKKy8vIGVsYXBzZWQgdGltZS4gSW5z
ZXJ0aW5nIGFub3RoZXIgZmVuY2UgYWZ0ZXIgdGhlIGZpbmFsIFJEVFNDUCB3b3VsZCBwcmV2ZW50
CisvLyBzdWNoIHJlb3JkZXJpbmcgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG1lYXN1cmVkIHJlZ2lv
bi4KKy8vCisvLyBGb3J0dW5hdGVseSwgc3VjaCBhIGZlbmNlIGV4aXN0cy4gVGhlIExGRU5DRSBp
bnN0cnVjdGlvbiBpcyBvbmx5IGRvY3VtZW50ZWQKKy8vIHRvIGRlbGF5IGxhdGVyIGxvYWRzIHVu
dGlsIGVhcmxpZXIgbG9hZHMgYXJlIHZpc2libGUuIEhvd2V2ZXIsIEludGVsJ3MKKy8vIHJlZmVy
ZW5jZSBtYW51YWwgc2F5cyBpdCBhY3RzIGFzIGEgZnVsbCBmZW5jZSAod2FpdGluZyB1bnRpbCBh
bGwgZWFybGllcgorLy8gaW5zdHJ1Y3Rpb25zIGhhdmUgY29tcGxldGVkLCBhbmQgZGVsYXlpbmcg
bGF0ZXIgaW5zdHJ1Y3Rpb25zIHVudGlsIGl0CisvLyBjb21wbGV0ZXMpLiBBTUQgYXNzaWducyB0
aGUgc2FtZSBiZWhhdmlvciB0byBNRkVOQ0UuCisvLworLy8gV2UgbmVlZCBhIGZlbmNlIGJlZm9y
ZSB0aGUgaW5pdGlhbCBSRFRTQyB0byBwcmV2ZW50IGVhcmxpZXIgaW5zdHJ1Y3Rpb25zCisvLyBm
cm9tIGxlYWtpbmcgaW50byB0aGUgcmVnaW9uLCBhbmQgYXJndWFibHkgYW5vdGhlciBhZnRlciBS
RFRTQyB0byBhdm9pZAorLy8gcmVnaW9uIGluc3RydWN0aW9ucyBmcm9tIGNvbXBsZXRpbmcgYmVm
b3JlIHRoZSB0aW1lc3RhbXAgaXMgcmVjb3JkZWQuCisvLyBXaGVuIHN1cnJvdW5kZWQgYnkgZmVu
Y2VzLCB0aGUgYWRkaXRpb25hbCBSRFRTQ1AgaGFsZi1mZW5jZSBwcm92aWRlcyBubworLy8gYmVu
ZWZpdCwgc28gdGhlIGluaXRpYWwgdGltZXN0YW1wIGNhbiBiZSByZWNvcmRlZCB2aWEgUkRUU0Ms
IHdoaWNoIGhhcworLy8gbG93ZXIgb3ZlcmhlYWQgdGhhbiBSRFRTQ1AgYmVjYXVzZSBpdCBkb2Vz
IG5vdCByZWFkIFRTQ19BVVguIEluIHN1bW1hcnksCisvLyB3ZSBkZWZpbmUgU3RhcnQgPSBMRkVO
Q0UvUkRUU0MvTEZFTkNFOyBTdG9wID0gUkRUU0NQL0xGRU5DRS4KKy8vCisvLyBVc2luZyBTdGFy
dCtTdGFydCBsZWFkcyB0byBoaWdoZXIgdmFyaWFuY2UgYW5kIG92ZXJoZWFkIHRoYW4gU3RvcCtT
dG9wLgorLy8gSG93ZXZlciwgU3RvcCtTdG9wIGluY2x1ZGVzIGFuIExGRU5DRSBpbiB0aGUgcmVn
aW9uIG1lYXN1cmVtZW50cywgd2hpY2gKKy8vIGFkZHMgYSBkZWxheSBkZXBlbmRlbnQgb24gZWFy
bGllciBsb2Fkcy4gVGhlIGNvbWJpbmF0aW9uIG9mIFN0YXJ0K1N0b3AKKy8vIGlzIGZhc3RlciB0
aGFuIFN0YXJ0K1N0YXJ0IGFuZCBtb3JlIGNvbnNpc3RlbnQgdGhhbiBTdG9wK1N0b3AgYmVjYXVz
ZQorLy8gdGhlIGZpcnN0IExGRU5DRSBhbHJlYWR5IGRlbGF5ZWQgc3Vic2VxdWVudCBsb2FkcyBi
ZWZvcmUgdGhlIG1lYXN1cmVkCisvLyByZWdpb24uIFRoaXMgY29tYmluYXRpb24gc2VlbXMgbm90
IHRvIGhhdmUgYmVlbiBjb25zaWRlcmVkIGluIHByaW9yIHdvcms6CisvLyBodHRwOi8vYWthcm9z
LmNzLmJlcmtlbGV5LmVkdS9seHIvYWthcm9zL2tlcm4vYXJjaC94ODYvcmR0c2NfdGVzdC5jCisv
LworLy8gTm90ZTogcGVyZm9ybWFuY2UgY291bnRlcnMgY2FuIG1lYXN1cmUgJ2V4YWN0JyBpbnN0
cnVjdGlvbnMtcmV0aXJlZCBvcgorLy8gKHVuaGFsdGVkKSBjeWNsZSBjb3VudHMuIFRoZSBSRFBN
QyBpbnN0cnVjdGlvbiBpcyBub3Qgc2VyaWFsaXppbmcgYW5kIGFsc28KKy8vIHJlcXVpcmVzIGZl
bmNlcy4gVW5mb3J0dW5hdGVseSwgaXQgaXMgbm90IGFjY2Vzc2libGUgb24gYWxsIE9TZXMgYW5k
IHdlCisvLyBwcmVmZXIgdG8gYXZvaWQga2VybmVsLW1vZGUgZHJpdmVycy4gUGVyZm9ybWFuY2Ug
Y291bnRlcnMgYXJlIGFsc28gYWZmZWN0ZWQKKy8vIGJ5IHNldmVyYWwgdW5kZXIvb3Zlci1jb3Vu
dCBlcnJhdGEsIHNvIHdlIHVzZSB0aGUgVFNDIGluc3RlYWQuCisKKy8vIFJldHVybnMgYSA2NC1i
aXQgdGltZXN0YW1wIGluIHVuaXQgb2YgJ3RpY2tzJzsgdG8gY29udmVydCB0byBzZWNvbmRzLAor
Ly8gZGl2aWRlIGJ5IEludmFyaWFudFRpY2tzUGVyU2Vjb25kLgoraW5saW5lIHVpbnQ2NF90IFN0
YXJ0NjQoKSB7CisgIHVpbnQ2NF90IHQ7CisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQorICBh
c20gdm9sYXRpbGUoIm1mc3ByICUwLCAlMSIgOiAiPXIiKHQpIDogImkiKDI2OCkpOworI2VsaWYg
ZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzY0KQorI2lmIGRlZmluZWQoQUJTTF9PU19XSU4pCisgIF9S
ZWFkV3JpdGVCYXJyaWVyKCk7CisgIF9tbV9sZmVuY2UoKTsKKyAgX1JlYWRXcml0ZUJhcnJpZXIo
KTsKKyAgdCA9IF9fcmR0c2MoKTsKKyAgX1JlYWRXcml0ZUJhcnJpZXIoKTsKKyAgX21tX2xmZW5j
ZSgpOworICBfUmVhZFdyaXRlQmFycmllcigpOworI2Vsc2UKKyAgYXNtIHZvbGF0aWxlKAorICAg
ICAgImxmZW5jZVxuXHQiCisgICAgICAicmR0c2Ncblx0IgorICAgICAgInNobCAkMzIsICUlcmR4
XG5cdCIKKyAgICAgICJvciAlJXJkeCwgJTBcblx0IgorICAgICAgImxmZW5jZSIKKyAgICAgIDog
Ij1hIih0KQorICAgICAgOgorICAgICAgLy8gIm1lbW9yeSIgYXZvaWRzIHJlb3JkZXJpbmcuIHJk
eCA9IFRTQyA+PiAzMi4KKyAgICAgIC8vICJjYyIgPSBmbGFncyBtb2RpZmllZCBieSBTSEwuCisg
ICAgICA6ICJyZHgiLCAibWVtb3J5IiwgImNjIik7CisjZW5kaWYKKyNlbHNlCisgIC8vIEZhbGwg
YmFjayB0byBPUyAtIHVuc3VyZSBob3cgdG8gcmVsaWFibHkgcXVlcnkgY250dmN0X2VsMCBmcmVx
dWVuY3kuCisgIHRpbWVzcGVjIHRzOworICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAm
dHMpOworICB0ID0gdHMudHZfc2VjICogMTAwMDAwMDAwMExMICsgdHMudHZfbnNlYzsKKyNlbmRp
ZgorICByZXR1cm4gdDsKK30KKworaW5saW5lIHVpbnQ2NF90IFN0b3A2NCgpIHsKKyAgdWludDY0
X3QgdDsKKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9YODZfNjQpCisjaWYgZGVmaW5lZChBQlNMX09T
X1dJTikKKyAgX1JlYWRXcml0ZUJhcnJpZXIoKTsKKyAgdW5zaWduZWQgYXV4OworICB0ID0gX19y
ZHRzY3AoJmF1eCk7CisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7CisgIF9tbV9sZmVuY2UoKTsKKyAg
X1JlYWRXcml0ZUJhcnJpZXIoKTsKKyNlbHNlCisgIC8vIFVzZSBpbmxpbmUgYXNtIGJlY2F1c2Ug
X19yZHRzY3AgZ2VuZXJhdGVzIGNvZGUgdG8gc3RvcmUgVFNDX0FVWCAoZWN4KS4KKyAgYXNtIHZv
bGF0aWxlKAorICAgICAgInJkdHNjcFxuXHQiCisgICAgICAic2hsICQzMiwgJSVyZHhcblx0Igor
ICAgICAgIm9yICUlcmR4LCAlMFxuXHQiCisgICAgICAibGZlbmNlIgorICAgICAgOiAiPWEiKHQp
CisgICAgICA6CisgICAgICAvLyAibWVtb3J5IiBhdm9pZHMgcmVvcmRlcmluZy4gcmN4ID0gVFND
X0FVWC4gcmR4ID0gVFNDID4+IDMyLgorICAgICAgLy8gImNjIiA9IGZsYWdzIG1vZGlmaWVkIGJ5
IFNITC4KKyAgICAgIDogInJjeCIsICJyZHgiLCAibWVtb3J5IiwgImNjIik7CisjZW5kaWYKKyNl
bHNlCisgIHQgPSBTdGFydDY0KCk7CisjZW5kaWYKKyAgcmV0dXJuIHQ7Cit9CisKKy8vIFJldHVy
bnMgYSAzMi1iaXQgdGltZXN0YW1wIHdpdGggYWJvdXQgNCBjeWNsZXMgbGVzcyBvdmVyaGVhZCB0
aGFuCisvLyBTdGFydDY0LiBPbmx5IHN1aXRhYmxlIGZvciBtZWFzdXJpbmcgdmVyeSBzaG9ydCBy
ZWdpb25zIGJlY2F1c2UgdGhlCisvLyB0aW1lc3RhbXAgb3ZlcmZsb3dzIGFib3V0IG9uY2UgYSBz
ZWNvbmQuCitpbmxpbmUgdWludDMyX3QgU3RhcnQzMigpIHsKKyAgdWludDMyX3QgdDsKKyNpZiBk
ZWZpbmVkKEFCU0xfQVJDSF9YODZfNjQpCisjaWYgZGVmaW5lZChBQlNMX09TX1dJTikKKyAgX1Jl
YWRXcml0ZUJhcnJpZXIoKTsKKyAgX21tX2xmZW5jZSgpOworICBfUmVhZFdyaXRlQmFycmllcigp
OworICB0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KF9fcmR0c2MoKSk7CisgIF9SZWFkV3JpdGVC
YXJyaWVyKCk7CisgIF9tbV9sZmVuY2UoKTsKKyAgX1JlYWRXcml0ZUJhcnJpZXIoKTsKKyNlbHNl
CisgIGFzbSB2b2xhdGlsZSgKKyAgICAgICJsZmVuY2Vcblx0IgorICAgICAgInJkdHNjXG5cdCIK
KyAgICAgICJsZmVuY2UiCisgICAgICA6ICI9YSIodCkKKyAgICAgIDoKKyAgICAgIC8vICJtZW1v
cnkiIGF2b2lkcyByZW9yZGVyaW5nLiByZHggPSBUU0MgPj4gMzIuCisgICAgICA6ICJyZHgiLCAi
bWVtb3J5Iik7CisjZW5kaWYKKyNlbHNlCisgIHQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oU3Rh
cnQ2NCgpKTsKKyNlbmRpZgorICByZXR1cm4gdDsKK30KKworaW5saW5lIHVpbnQzMl90IFN0b3Az
MigpIHsKKyAgdWludDMyX3QgdDsKKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9YODZfNjQpCisjaWYg
ZGVmaW5lZChBQlNMX09TX1dJTikKKyAgX1JlYWRXcml0ZUJhcnJpZXIoKTsKKyAgdW5zaWduZWQg
YXV4OworICB0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KF9fcmR0c2NwKCZhdXgpKTsKKyAgX1Jl
YWRXcml0ZUJhcnJpZXIoKTsKKyAgX21tX2xmZW5jZSgpOworICBfUmVhZFdyaXRlQmFycmllcigp
OworI2Vsc2UKKyAgLy8gVXNlIGlubGluZSBhc20gYmVjYXVzZSBfX3JkdHNjcCBnZW5lcmF0ZXMg
Y29kZSB0byBzdG9yZSBUU0NfQVVYIChlY3gpLgorICBhc20gdm9sYXRpbGUoCisgICAgICAicmR0
c2NwXG5cdCIKKyAgICAgICJsZmVuY2UiCisgICAgICA6ICI9YSIodCkKKyAgICAgIDoKKyAgICAg
IC8vICJtZW1vcnkiIGF2b2lkcyByZW9yZGVyaW5nLiByY3ggPSBUU0NfQVVYLiByZHggPSBUU0Mg
Pj4gMzIuCisgICAgICA6ICJyY3giLCAicmR4IiwgIm1lbW9yeSIpOworI2VuZGlmCisjZWxzZQor
ICB0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFN0b3A2NCgpKTsKKyNlbmRpZgorICByZXR1cm4g
dDsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRpbWVyCisKK25hbWVzcGFjZSByb2J1c3Rfc3RhdGlz
dGljcyB7CisKKy8vIFNvcnRzIGludGVncmFsIHZhbHVlcyBpbiBhc2NlbmRpbmcgb3JkZXIgKGUu
Zy4gZm9yIE1vZGUpLiBBYm91dCAzeCBmYXN0ZXIKKy8vIHRoYW4gc3RkOjpzb3J0IGZvciBpbnB1
dCBkaXN0cmlidXRpb25zIHdpdGggdmVyeSBmZXcgdW5pcXVlIHZhbHVlcy4KK3RlbXBsYXRlIDxj
bGFzcyBUPgordm9pZCBDb3VudGluZ1NvcnQoVCogdmFsdWVzLCBzaXplX3QgbnVtX3ZhbHVlcykg
eworICAvLyBVbmlxdWUgdmFsdWVzIGFuZCB0aGVpciBmcmVxdWVuY3kgKHNpbWlsYXIgdG8gZmxh
dF9tYXApLgorICB1c2luZyBVbmlxdWUgPSBzdGQ6OnBhaXI8VCwgaW50PjsKKyAgc3RkOjp2ZWN0
b3I8VW5pcXVlPiB1bmlxdWU7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX3ZhbHVlczsg
KytpKSB7CisgICAgY29uc3QgVCB2YWx1ZSA9IHZhbHVlc1tpXTsKKyAgICBjb25zdCBhdXRvIHBv
cyA9CisgICAgICAgIHN0ZDo6ZmluZF9pZih1bmlxdWUuYmVnaW4oKSwgdW5pcXVlLmVuZCgpLAor
ICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXShjb25zdCBVbmlxdWUgdSkgeyByZXR1cm4gdS5m
aXJzdCA9PSB2YWx1ZTsgfSk7CisgICAgaWYgKHBvcyA9PSB1bmlxdWUuZW5kKCkpIHsKKyAgICAg
IHVuaXF1ZS5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIodmFsdWUsIDEpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgKytwb3MtPnNlY29uZDsKKyAgICB9CisgIH0KKworICAvLyBTb3J0IGluIGFzY2Vu
ZGluZyBvcmRlciBvZiB2YWx1ZSAocGFpci5maXJzdCkuCisgIHN0ZDo6c29ydCh1bmlxdWUuYmVn
aW4oKSwgdW5pcXVlLmVuZCgpKTsKKworICAvLyBXcml0ZSB0aGF0IG1hbnkgY29waWVzIG9mIGVh
Y2ggdW5pcXVlIHZhbHVlIHRvIHRoZSBhcnJheS4KKyAgVCogQUJTTF9SQU5ET01fSU5URVJOQUxf
UkVTVFJJQ1QgcCA9IHZhbHVlczsKKyAgZm9yIChjb25zdCBhdXRvJiB2YWx1ZV9jb3VudCA6IHVu
aXF1ZSkgeworICAgIHN0ZDo6ZmlsbChwLCBwICsgdmFsdWVfY291bnQuc2Vjb25kLCB2YWx1ZV9j
b3VudC5maXJzdCk7CisgICAgcCArPSB2YWx1ZV9jb3VudC5zZWNvbmQ7CisgIH0KKyAgQUJTTF9S
QVdfQ0hFQ0socCA9PSB2YWx1ZXMgKyBudW1fdmFsdWVzLCAiRGlkIG5vdCBwcm9kdWNlIGVub3Vn
aCBvdXRwdXQiKTsKK30KKworLy8gQHJldHVybiBpIGluIFtpZHhfYmVnaW4sIGlkeF9iZWdpbiAr
IGhhbGZfY291bnQpIHRoYXQgbWluaW1pemVzCisvLyBzb3J0ZWRbaSArIGhhbGZfY291bnRdIC0g
c29ydGVkW2ldLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzaXplX3QgTWluUmFuZ2UoY29uc3Qg
VCogY29uc3QgQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc29ydGVkLAorICAgICAgICAg
ICAgICAgIGNvbnN0IHNpemVfdCBpZHhfYmVnaW4sIGNvbnN0IHNpemVfdCBoYWxmX2NvdW50KSB7
CisgIFQgbWluX3JhbmdlID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCkoKTsKKyAgc2l6
ZV90IG1pbl9pZHggPSAwOworCisgIGZvciAoc2l6ZV90IGlkeCA9IGlkeF9iZWdpbjsgaWR4IDwg
aWR4X2JlZ2luICsgaGFsZl9jb3VudDsgKytpZHgpIHsKKyAgICBBQlNMX1JBV19DSEVDSyhzb3J0
ZWRbaWR4XSA8PSBzb3J0ZWRbaWR4ICsgaGFsZl9jb3VudF0sICJOb3Qgc29ydGVkIik7CisgICAg
Y29uc3QgVCByYW5nZSA9IHNvcnRlZFtpZHggKyBoYWxmX2NvdW50XSAtIHNvcnRlZFtpZHhdOwor
ICAgIGlmIChyYW5nZSA8IG1pbl9yYW5nZSkgeworICAgICAgbWluX3JhbmdlID0gcmFuZ2U7Cisg
ICAgICBtaW5faWR4ID0gaWR4OworICAgIH0KKyAgfQorCisgIHJldHVybiBtaW5faWR4OworfQor
CisvLyBSZXR1cm5zIGFuIGVzdGltYXRlIG9mIHRoZSBtb2RlIGJ5IGNhbGxpbmcgTWluUmFuZ2Ug
b24gc3VjY2Vzc2l2ZWx5CisvLyBoYWx2ZWQgaW50ZXJ2YWxzLiAic29ydGVkIiBtdXN0IGJlIGlu
IGFzY2VuZGluZyBvcmRlci4gVGhpcyBpcyB0aGUKKy8vIEhhbGYgU2FtcGxlIE1vZGUgZXN0aW1h
dG9yIHByb3Bvc2VkIGJ5IEJpY2tlbCBpbiAiT24gYSBmYXN0LCByb2J1c3QKKy8vIGVzdGltYXRv
ciBvZiB0aGUgbW9kZSIsIHdpdGggY29tcGxleGl0eSBPKE4gbG9nIE4pLiBUaGUgbW9kZSBpcyBs
ZXNzCisvLyBhZmZlY3RlZCBieSBvdXRsaWVycyBpbiBoaWdobHktc2tld2VkIGRpc3RyaWJ1dGlv
bnMgdGhhbiB0aGUgbWVkaWFuLgorLy8gVGhlIGF2ZXJhZ2luZyBvcGVyYXRpb24gYmVsb3cgYXNz
dW1lcyAiVCIgaXMgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitUIE1vZGVPZlNvcnRlZChjb25zdCBUKiBjb25zdCBBQlNMX1JBTkRPTV9JTlRFUk5BTF9S
RVNUUklDVCBzb3J0ZWQsCisgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgbnVtX3ZhbHVlcykg
eworICBzaXplX3QgaWR4X2JlZ2luID0gMDsKKyAgc2l6ZV90IGhhbGZfY291bnQgPSBudW1fdmFs
dWVzIC8gMjsKKyAgd2hpbGUgKGhhbGZfY291bnQgPiAxKSB7CisgICAgaWR4X2JlZ2luID0gTWlu
UmFuZ2Uoc29ydGVkLCBpZHhfYmVnaW4sIGhhbGZfY291bnQpOworICAgIGhhbGZfY291bnQgPj49
IDE7CisgIH0KKworICBjb25zdCBUIHggPSBzb3J0ZWRbaWR4X2JlZ2luICsgMF07CisgIGlmICho
YWxmX2NvdW50ID09IDApIHsKKyAgICByZXR1cm4geDsKKyAgfQorICBBQlNMX1JBV19DSEVDSyho
YWxmX2NvdW50ID09IDEsICJTaG91bGQgc3RvcCBhdCBoYWxmX2NvdW50PTEiKTsKKyAgY29uc3Qg
VCBhdmVyYWdlID0gKHggKyBzb3J0ZWRbaWR4X2JlZ2luICsgMV0gKyAxKSAvIDI7CisgIHJldHVy
biBhdmVyYWdlOworfQorCisvLyBSZXR1cm5zIHRoZSBtb2RlLiBTaWRlIGVmZmVjdDogc29ydHMg
InZhbHVlcyIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QgTW9kZShUKiB2YWx1ZXMsIGNvbnN0
IHNpemVfdCBudW1fdmFsdWVzKSB7CisgIENvdW50aW5nU29ydCh2YWx1ZXMsIG51bV92YWx1ZXMp
OworICByZXR1cm4gTW9kZU9mU29ydGVkKHZhbHVlcywgbnVtX3ZhbHVlcyk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK1QgTW9kZShUICgmdmFsdWVzKVtOXSkgeworICBy
ZXR1cm4gTW9kZSgmdmFsdWVzWzBdLCBOKTsKK30KKworLy8gUmV0dXJucyB0aGUgbWVkaWFuIHZh
bHVlLiBTaWRlIGVmZmVjdDogc29ydHMgInZhbHVlcyIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K1QgTWVkaWFuKFQqIHZhbHVlcywgY29uc3Qgc2l6ZV90IG51bV92YWx1ZXMpIHsKKyAgQUJTTF9S
QVdfQ0hFQ0sobnVtX3ZhbHVlcyAhPSAwLCAiRW1wdHkgaW5wdXQiKTsKKyAgc3RkOjpzb3J0KHZh
bHVlcywgdmFsdWVzICsgbnVtX3ZhbHVlcyk7CisgIGNvbnN0IHNpemVfdCBoYWxmID0gbnVtX3Zh
bHVlcyAvIDI7CisgIC8vIE9kZCBjb3VudDogcmV0dXJuIG1pZGRsZQorICBpZiAobnVtX3ZhbHVl
cyAlIDIpIHsKKyAgICByZXR1cm4gdmFsdWVzW2hhbGZdOworICB9CisgIC8vIEV2ZW4gY291bnQ6
IHJldHVybiBhdmVyYWdlIG9mIG1pZGRsZSB0d28uCisgIHJldHVybiAodmFsdWVzW2hhbGZdICsg
dmFsdWVzW2hhbGYgLSAxXSArIDEpIC8gMjsKK30KKworLy8gUmV0dXJucyBhIHJvYnVzdCBtZWFz
dXJlIG9mIHZhcmlhYmlsaXR5LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitUIE1lZGlhbkFic29s
dXRlRGV2aWF0aW9uKGNvbnN0IFQqIHZhbHVlcywgY29uc3Qgc2l6ZV90IG51bV92YWx1ZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQgbWVkaWFuKSB7CisgIEFCU0xfUkFXX0NI
RUNLKG51bV92YWx1ZXMgIT0gMCwgIkVtcHR5IGlucHV0Iik7CisgIHN0ZDo6dmVjdG9yPFQ+IGFi
c19kZXZpYXRpb25zOworICBhYnNfZGV2aWF0aW9ucy5yZXNlcnZlKG51bV92YWx1ZXMpOworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV92YWx1ZXM7ICsraSkgeworICAgIGNvbnN0IGludDY0
X3QgYWJzID0gc3RkOjphYnMoaW50NjRfdCh2YWx1ZXNbaV0pIC0gaW50NjRfdChtZWRpYW4pKTsK
KyAgICBhYnNfZGV2aWF0aW9ucy5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8VD4oYWJzKSk7CisgIH0K
KyAgcmV0dXJuIE1lZGlhbihhYnNfZGV2aWF0aW9ucy5kYXRhKCksIG51bV92YWx1ZXMpOworfQor
Cit9ICAvLyBuYW1lc3BhY2Ugcm9idXN0X3N0YXRpc3RpY3MKKworLy8gVGlja3MgOj0gcGxhdGZv
cm0tc3BlY2lmaWMgdGltZXIgdmFsdWVzIChDUFUgY3ljbGVzIG9uIHg4NikuIE11c3QgYmUKKy8v
IHVuc2lnbmVkIHRvIGd1YXJhbnRlZSB3cmFwYXJvdW5kIG9uIG92ZXJmbG93LiAzMiBiaXQgdGlt
ZXJzIGFyZSBmYXN0ZXIgdG8KKy8vIHJlYWQgdGhhbiA2NCBiaXQuCit1c2luZyBUaWNrcyA9IHVp
bnQzMl90OworCisvLyBSZXR1cm5zIHRpbWVyIG92ZXJoZWFkIC8gbWluaW11bSBtZWFzdXJhYmxl
IGRpZmZlcmVuY2UuCitUaWNrcyBUaW1lclJlc29sdXRpb24oKSB7CisgIC8vIE5lc3RlZCBsb29w
IGF2b2lkcyBleGNlZWRpbmcgc3RhY2svTDEgY2FwYWNpdHkuCisgIFRpY2tzIHJlcGV0aXRpb25z
W1BhcmFtczo6a1RpbWVyU2FtcGxlc107CisgIGZvciAoc2l6ZV90IHJlcCA9IDA7IHJlcCA8IFBh
cmFtczo6a1RpbWVyU2FtcGxlczsgKytyZXApIHsKKyAgICBUaWNrcyBzYW1wbGVzW1BhcmFtczo6
a1RpbWVyU2FtcGxlc107CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBQYXJhbXM6OmtUaW1l
clNhbXBsZXM7ICsraSkgeworICAgICAgY29uc3QgVGlja3MgdDAgPSB0aW1lcjo6U3RhcnQzMigp
OworICAgICAgY29uc3QgVGlja3MgdDEgPSB0aW1lcjo6U3RvcDMyKCk7CisgICAgICBzYW1wbGVz
W2ldID0gdDEgLSB0MDsKKyAgICB9CisgICAgcmVwZXRpdGlvbnNbcmVwXSA9IHJvYnVzdF9zdGF0
aXN0aWNzOjpNb2RlKHNhbXBsZXMpOworICB9CisgIHJldHVybiByb2J1c3Rfc3RhdGlzdGljczo6
TW9kZShyZXBldGl0aW9ucyk7Cit9CisKK3N0YXRpYyBjb25zdCBUaWNrcyB0aW1lcl9yZXNvbHV0
aW9uID0gVGltZXJSZXNvbHV0aW9uKCk7CisKKy8vIEVzdGltYXRlcyB0aGUgZXhwZWN0ZWQgdmFs
dWUgb2YgImxhbWJkYSIgdmFsdWVzIHdpdGggYSB2YXJpYWJsZSBudW1iZXIgb2YKKy8vIHNhbXBs
ZXMgdW50aWwgdGhlIHZhcmlhYmlsaXR5ICJyZWxfbWFkIiBpcyBsZXNzIHRoYW4gIm1heF9yZWxf
bWFkIi4KK3RlbXBsYXRlIDxjbGFzcyBMYW1iZGE+CitUaWNrcyBTYW1wbGVVbnRpbFN0YWJsZShj
b25zdCBkb3VibGUgbWF4X3JlbF9tYWQsIGRvdWJsZSogcmVsX21hZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFBhcmFtcyYgcCwgY29uc3QgTGFtYmRhJiBsYW1iZGEpIHsKKyAgYXV0
byBtZWFzdXJlX2R1cmF0aW9uID0gWyZsYW1iZGFdKCkgLT4gVGlja3MgeworICAgIGNvbnN0IFRp
Y2tzIHQwID0gdGltZXI6OlN0YXJ0MzIoKTsKKyAgICBsYW1iZGEoKTsKKyAgICBjb25zdCBUaWNr
cyB0MSA9IHRpbWVyOjpTdG9wMzIoKTsKKyAgICByZXR1cm4gdDEgLSB0MDsKKyAgfTsKKworICAv
LyBDaG9vc2UgaW5pdGlhbCBzYW1wbGVzX3Blcl9ldmFsIGJhc2VkIG9uIGEgc2luZ2xlIGVzdGlt
YXRlZCBkdXJhdGlvbi4KKyAgVGlja3MgZXN0ID0gbWVhc3VyZV9kdXJhdGlvbigpOworICBzdGF0
aWMgY29uc3QgZG91YmxlIHRpY2tzX3Blcl9zZWNvbmQgPSBJbnZhcmlhbnRUaWNrc1BlclNlY29u
ZCgpOworICBjb25zdCBzaXplX3QgdGlja3NfcGVyX2V2YWwgPSB0aWNrc19wZXJfc2Vjb25kICog
cC5zZWNvbmRzX3Blcl9ldmFsOworICBzaXplX3Qgc2FtcGxlc19wZXJfZXZhbCA9IHRpY2tzX3Bl
cl9ldmFsIC8gZXN0OworICBzYW1wbGVzX3Blcl9ldmFsID0gKHN0ZDo6bWF4KShzYW1wbGVzX3Bl
cl9ldmFsLCBwLm1pbl9zYW1wbGVzX3Blcl9ldmFsKTsKKworICBzdGQ6OnZlY3RvcjxUaWNrcz4g
c2FtcGxlczsKKyAgc2FtcGxlcy5yZXNlcnZlKDEgKyBzYW1wbGVzX3Blcl9ldmFsKTsKKyAgc2Ft
cGxlcy5wdXNoX2JhY2soZXN0KTsKKworICAvLyBQZXJjZW50YWdlIGlzIHRvbyBzdHJpY3QgZm9y
IHRpbnkgZGlmZmVyZW5jZXMsIHNvIGFsc28gYWxsb3cgYSBzbWFsbAorICAvLyBhYnNvbHV0ZSAi
bWVkaWFuIGFic29sdXRlIGRldmlhdGlvbiIuCisgIGNvbnN0IFRpY2tzIG1heF9hYnNfbWFkID0g
KHRpbWVyX3Jlc29sdXRpb24gKyA5OSkgLyAxMDA7CisgICpyZWxfbWFkID0gMC4wOyAgLy8gZW5z
dXJlIGluaXRpYWxpemVkCisKKyAgZm9yIChzaXplX3QgZXZhbCA9IDA7IGV2YWwgPCBwLm1heF9l
dmFsczsgKytldmFsLCBzYW1wbGVzX3Blcl9ldmFsICo9IDIpIHsKKyAgICBzYW1wbGVzLnJlc2Vy
dmUoc2FtcGxlcy5zaXplKCkgKyBzYW1wbGVzX3Blcl9ldmFsKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNhbXBsZXNfcGVyX2V2YWw7ICsraSkgeworICAgICAgY29uc3QgVGlja3MgciA9
IG1lYXN1cmVfZHVyYXRpb24oKTsKKyAgICAgIHNhbXBsZXMucHVzaF9iYWNrKHIpOworICAgIH0K
KworICAgIGlmIChzYW1wbGVzLnNpemUoKSA+PSBwLm1pbl9tb2RlX3NhbXBsZXMpIHsKKyAgICAg
IGVzdCA9IHJvYnVzdF9zdGF0aXN0aWNzOjpNb2RlKHNhbXBsZXMuZGF0YSgpLCBzYW1wbGVzLnNp
emUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIEZvciAiZmV3IiAoZGVwZW5kcyBhbHNvIG9u
IHRoZSB2YXJpYW5jZSkgc2FtcGxlcywgTWVkaWFuIGlzIHNhZmVyLgorICAgICAgZXN0ID0gcm9i
dXN0X3N0YXRpc3RpY3M6Ok1lZGlhbihzYW1wbGVzLmRhdGEoKSwgc2FtcGxlcy5zaXplKCkpOwor
ICAgIH0KKyAgICBBQlNMX1JBV19DSEVDSyhlc3QgIT0gMCwgIkVzdGltYXRvciByZXR1cm5lZCB6
ZXJvIGR1cmF0aW9uIik7CisKKyAgICAvLyBNZWRpYW4gYWJzb2x1dGUgZGV2aWF0aW9uIChtYWQp
IGlzIGEgcm9idXN0IG1lYXN1cmUgb2YgJ3ZhcmlhYmlsaXR5Jy4KKyAgICBjb25zdCBUaWNrcyBh
YnNfbWFkID0gcm9idXN0X3N0YXRpc3RpY3M6Ok1lZGlhbkFic29sdXRlRGV2aWF0aW9uKAorICAg
ICAgICBzYW1wbGVzLmRhdGEoKSwgc2FtcGxlcy5zaXplKCksIGVzdCk7CisgICAgKnJlbF9tYWQg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludD4oYWJzX21hZCkpIC8gZXN0Owor
CisgICAgaWYgKCpyZWxfbWFkIDw9IG1heF9yZWxfbWFkIHx8IGFic19tYWQgPD0gbWF4X2Fic19t
YWQpIHsKKyAgICAgIGlmIChwLnZlcmJvc2UpIHsKKyAgICAgICAgQUJTTF9SQVdfTE9HKElORk8s
CisgICAgICAgICAgICAgICAgICAgICAiJTZ6dSBzYW1wbGVzID0+ICU1dSAoYWJzX21hZD0lNHUs
IHJlbF9tYWQ9JTQuMmYlJSlcbiIsCisgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzLnNpemUo
KSwgZXN0LCBhYnNfbWFkLCAqcmVsX21hZCAqIDEwMC4wKTsKKyAgICAgIH0KKyAgICAgIHJldHVy
biBlc3Q7CisgICAgfQorICB9CisKKyAgaWYgKHAudmVyYm9zZSkgeworICAgIEFCU0xfUkFXX0xP
RyhXQVJOSU5HLAorICAgICAgICAgICAgICAgICAicmVsX21hZD0lNC4yZiUlIHN0aWxsIGV4Y2Vl
ZHMgJTQuMmYlJSBhZnRlciAlNnp1IHNhbXBsZXMuXG4iLAorICAgICAgICAgICAgICAgICAqcmVs
X21hZCAqIDEwMC4wLCBtYXhfcmVsX21hZCAqIDEwMC4wLCBzYW1wbGVzLnNpemUoKSk7CisgIH0K
KyAgcmV0dXJuIGVzdDsKK30KKwordXNpbmcgSW5wdXRWZWMgPSBzdGQ6OnZlY3RvcjxGdW5jSW5w
dXQ+OworCisvLyBSZXR1cm5zIHZlY3RvciBvZiB1bmlxdWUgaW5wdXQgdmFsdWVzLgorSW5wdXRW
ZWMgVW5pcXVlSW5wdXRzKGNvbnN0IEZ1bmNJbnB1dCogaW5wdXRzLCBjb25zdCBzaXplX3QgbnVt
X2lucHV0cykgeworICBJbnB1dFZlYyB1bmlxdWUoaW5wdXRzLCBpbnB1dHMgKyBudW1faW5wdXRz
KTsKKyAgc3RkOjpzb3J0KHVuaXF1ZS5iZWdpbigpLCB1bmlxdWUuZW5kKCkpOworICB1bmlxdWUu
ZXJhc2Uoc3RkOjp1bmlxdWUodW5pcXVlLmJlZ2luKCksIHVuaXF1ZS5lbmQoKSksIHVuaXF1ZS5l
bmQoKSk7CisgIHJldHVybiB1bmlxdWU7Cit9CisKKy8vIFJldHVybnMgaG93IG9mdGVuIHdlIG5l
ZWQgdG8gY2FsbCBmdW5jIGZvciBzdWZmaWNpZW50IHByZWNpc2lvbiwgb3IgemVybworLy8gb24g
ZmFpbHVyZSAoZS5nLiB0aGUgZWxhcHNlZCB0aW1lIGlzIHRvbyBsb25nIGZvciBhIDMyLWJpdCB0
aWNrIGNvdW50KS4KK3NpemVfdCBOdW1Ta2lwKGNvbnN0IEZ1bmMgZnVuYywgY29uc3Qgdm9pZCog
YXJnLCBjb25zdCBJbnB1dFZlYyYgdW5pcXVlLAorICAgICAgICAgICAgICAgY29uc3QgUGFyYW1z
JiBwKSB7CisgIC8vIE1pbiBlbGFwc2VkIHRpY2tzIGZvciBhbnkgaW5wdXQuCisgIFRpY2tzIG1p
bl9kdXJhdGlvbiA9IH4wdTsKKworICBmb3IgKGNvbnN0IEZ1bmNJbnB1dCBpbnB1dCA6IHVuaXF1
ZSkgeworICAgIC8vIE1ha2Ugc3VyZSBhIDMyLWJpdCB0aW1lciBpcyBzdWZmaWNpZW50LgorICAg
IGNvbnN0IHVpbnQ2NF90IHQwID0gdGltZXI6OlN0YXJ0NjQoKTsKKyAgICBQcmV2ZW50RWxpc2lv
bihmdW5jKGFyZywgaW5wdXQpKTsKKyAgICBjb25zdCB1aW50NjRfdCB0MSA9IHRpbWVyOjpTdG9w
NjQoKTsKKyAgICBjb25zdCB1aW50NjRfdCBlbGFwc2VkID0gdDEgLSB0MDsKKyAgICBpZiAoZWxh
cHNlZCA+PSAoMVVMTCA8PCAzMCkpIHsKKyAgICAgIEFCU0xfUkFXX0xPRyhXQVJOSU5HLAorICAg
ICAgICAgICAgICAgICAgICJNZWFzdXJlbWVudCBmYWlsZWQ6IG5lZWQgNjQtYml0IHRpbWVyIGZv
ciBpbnB1dD0lenVcbiIsCisgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90Pihp
bnB1dCkpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZG91YmxlIHJlbF9tYWQ7Cisg
ICAgY29uc3QgVGlja3MgdG90YWwgPSBTYW1wbGVVbnRpbFN0YWJsZSgKKyAgICAgICAgcC50YXJn
ZXRfcmVsX21hZCwgJnJlbF9tYWQsIHAsCisgICAgICAgIFtmdW5jLCBhcmcsIGlucHV0XSgpIHsg
UHJldmVudEVsaXNpb24oZnVuYyhhcmcsIGlucHV0KSk7IH0pOworICAgIG1pbl9kdXJhdGlvbiA9
IChzdGQ6Om1pbikobWluX2R1cmF0aW9uLCB0b3RhbCAtIHRpbWVyX3Jlc29sdXRpb24pOworICB9
CisKKyAgLy8gTnVtYmVyIG9mIHJlcGV0aXRpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoZSB0YXJn
ZXQgcmVzb2x1dGlvbi4KKyAgY29uc3Qgc2l6ZV90IG1heF9za2lwID0gcC5wcmVjaXNpb25fZGl2
aXNvcjsKKyAgLy8gTnVtYmVyIG9mIHJlcGV0aXRpb25zIGdpdmVuIHRoZSBlc3RpbWF0ZWQgZHVy
YXRpb24uCisgIGNvbnN0IHNpemVfdCBudW1fc2tpcCA9CisgICAgICBtaW5fZHVyYXRpb24gPT0g
MCA/IDAgOiAobWF4X3NraXAgKyBtaW5fZHVyYXRpb24gLSAxKSAvIG1pbl9kdXJhdGlvbjsKKyAg
aWYgKHAudmVyYm9zZSkgeworICAgIEFCU0xfUkFXX0xPRyhJTkZPLCAicmVzPSV1IG1heF9za2lw
PSV6dSBtaW5fZHVyPSV1IG51bV9za2lwPSV6dVxuIiwKKyAgICAgICAgICAgICAgICAgdGltZXJf
cmVzb2x1dGlvbiwgbWF4X3NraXAsIG1pbl9kdXJhdGlvbiwgbnVtX3NraXApOworICB9CisgIHJl
dHVybiBudW1fc2tpcDsKK30KKworLy8gUmVwbGljYXRlcyBpbnB1dHMgdW50aWwgd2UgY2FuIG9t
aXQgIm51bV9za2lwIiBvY2N1cnJlbmNlcyBvZiBhbiBpbnB1dC4KK0lucHV0VmVjIFJlcGxpY2F0
ZUlucHV0cyhjb25zdCBGdW5jSW5wdXQqIGlucHV0cywgY29uc3Qgc2l6ZV90IG51bV9pbnB1dHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bV91bmlxdWUsIGNvbnN0
IHNpemVfdCBudW1fc2tpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXJhbXMm
IHApIHsKKyAgSW5wdXRWZWMgZnVsbDsKKyAgaWYgKG51bV91bmlxdWUgPT0gMSkgeworICAgIGZ1
bGwuYXNzaWduKHAuc3Vic2V0X3JhdGlvICogbnVtX3NraXAsIGlucHV0c1swXSk7CisgICAgcmV0
dXJuIGZ1bGw7CisgIH0KKworICBmdWxsLnJlc2VydmUocC5zdWJzZXRfcmF0aW8gKiBudW1fc2tp
cCAqIG51bV9pbnB1dHMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHAuc3Vic2V0X3JhdGlv
ICogbnVtX3NraXA7ICsraSkgeworICAgIGZ1bGwuaW5zZXJ0KGZ1bGwuZW5kKCksIGlucHV0cywg
aW5wdXRzICsgbnVtX2lucHV0cyk7CisgIH0KKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpyYW5k
ZW5fZW5naW5lPHVpbnQzMl90PiBybmc7CisgIHN0ZDo6c2h1ZmZsZShmdWxsLmJlZ2luKCksIGZ1
bGwuZW5kKCksIHJuZyk7CisgIHJldHVybiBmdWxsOworfQorCisvLyBDb3BpZXMgdGhlICJmdWxs
IiB0byAic3Vic2V0IiBpbiB0aGUgc2FtZSBvcmRlciwgYnV0IHdpdGggIm51bV9za2lwIgorLy8g
cmFuZG9tbHkgc2VsZWN0ZWQgb2NjdXJyZW5jZXMgb2YgImlucHV0X3RvX3NraXAiIHJlbW92ZWQu
Cit2b2lkIEZpbGxTdWJzZXQoY29uc3QgSW5wdXRWZWMmIGZ1bGwsIGNvbnN0IEZ1bmNJbnB1dCBp
bnB1dF90b19za2lwLAorICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBudW1fc2tpcCwgSW5w
dXRWZWMqIHN1YnNldCkgeworICBjb25zdCBzaXplX3QgY291bnQgPSBzdGQ6OmNvdW50KGZ1bGwu
YmVnaW4oKSwgZnVsbC5lbmQoKSwgaW5wdXRfdG9fc2tpcCk7CisgIC8vIEdlbmVyYXRlIG51bV9z
a2lwIHJhbmRvbSBpbmRpY2VzOiB3aGljaCBvY2N1cnJlbmNlIHRvIHNraXAuCisgIHN0ZDo6dmVj
dG9yPHVpbnQzMl90PiBvbWl0OworICAvLyBSZXBsYWNlbWVudCBmb3Igc3RkOjppb3RhLCBub3Qg
eWV0IGF2YWlsYWJsZSBpbiBNU1ZDIGJ1aWxkcy4KKyAgb21pdC5yZXNlcnZlKGNvdW50KTsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgb21pdC5wdXNoX2JhY2so
aSk7CisgIH0KKyAgLy8gb21pdFtdIGlzIHRoZSBzYW1lIG9uIGV2ZXJ5IGNhbGwsIGJ1dCB0aGF0
J3MgT0sgYmVjYXVzZSB0aGV5IGlkZW50aWZ5IHRoZQorICAvLyBOdGggaW5zdGFuY2Ugb2YgaW5w
dXRfdG9fc2tpcCwgc28gdGhlIHBvc2l0aW9uIHdpdGhpbiBmdWxsW10gZGlmZmVycy4KKyAgYWJz
bDo6cmFuZG9tX2ludGVybmFsOjpyYW5kZW5fZW5naW5lPHVpbnQzMl90PiBybmc7CisgIHN0ZDo6
c2h1ZmZsZShvbWl0LmJlZ2luKCksIG9taXQuZW5kKCksIHJuZyk7CisgIG9taXQucmVzaXplKG51
bV9za2lwKTsKKyAgc3RkOjpzb3J0KG9taXQuYmVnaW4oKSwgb21pdC5lbmQoKSk7CisKKyAgdWlu
dDMyX3Qgb2NjdXJyZW5jZSA9IH4wdTsgIC8vIDAgYWZ0ZXIgcHJlaW5jcmVtZW50CisgIHNpemVf
dCBpZHhfb21pdCA9IDA7ICAgICAgICAvLyBjdXJzb3Igd2l0aGluIG9taXRbXQorICBzaXplX3Qg
aWR4X3N1YnNldCA9IDA7ICAgICAgLy8gY3Vyc29yIHdpdGhpbiAqc3Vic2V0CisgIGZvciAoY29u
c3QgRnVuY0lucHV0IG5leHQgOiBmdWxsKSB7CisgICAgaWYgKG5leHQgPT0gaW5wdXRfdG9fc2tp
cCkgeworICAgICAgKytvY2N1cnJlbmNlOworICAgICAgLy8gSGF2ZW4ndCByZW1vdmVkIGVub3Vn
aCBhbHJlYWR5CisgICAgICBpZiAoaWR4X29taXQgPCBudW1fc2tpcCkgeworICAgICAgICAvLyBU
aGlzIG9uZSBpcyB1cCBmb3IgcmVtb3ZhbAorICAgICAgICBpZiAob2NjdXJyZW5jZSA9PSBvbWl0
W2lkeF9vbWl0XSkgeworICAgICAgICAgICsraWR4X29taXQ7CisgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGlkeF9zdWJzZXQgPCBzdWJzZXQt
PnNpemUoKSkgeworICAgICAgKCpzdWJzZXQpW2lkeF9zdWJzZXQrK10gPSBuZXh0OworICAgIH0K
KyAgfQorICBBQlNMX1JBV19DSEVDSyhpZHhfc3Vic2V0ID09IHN1YnNldC0+c2l6ZSgpLCAiaWR4
X3N1YnNldCBub3QgYXQgZW5kIik7CisgIEFCU0xfUkFXX0NIRUNLKGlkeF9vbWl0ID09IG9taXQu
c2l6ZSgpLCAiaWR4X29taXQgbm90IGF0IGVuZCIpOworICBBQlNMX1JBV19DSEVDSyhvY2N1cnJl
bmNlID09IGNvdW50IC0gMSwgIm9jY3VycmVuY2Ugbm90IGF0IGVuZCIpOworfQorCisvLyBSZXR1
cm5zIHRvdGFsIHRpY2tzIGVsYXBzZWQgZm9yIGFsbCBpbnB1dHMuCitUaWNrcyBUb3RhbER1cmF0
aW9uKGNvbnN0IEZ1bmMgZnVuYywgY29uc3Qgdm9pZCogYXJnLCBjb25zdCBJbnB1dFZlYyogaW5w
dXRzLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXJhbXMmIHAsIGRvdWJsZSogbWF4X3Jl
bF9tYWQpIHsKKyAgZG91YmxlIHJlbF9tYWQ7CisgIGNvbnN0IFRpY2tzIGR1cmF0aW9uID0KKyAg
ICAgIFNhbXBsZVVudGlsU3RhYmxlKHAudGFyZ2V0X3JlbF9tYWQsICZyZWxfbWFkLCBwLCBbZnVu
YywgYXJnLCBpbnB1dHNdKCkgeworICAgICAgICBmb3IgKGNvbnN0IEZ1bmNJbnB1dCBpbnB1dCA6
ICppbnB1dHMpIHsKKyAgICAgICAgICBQcmV2ZW50RWxpc2lvbihmdW5jKGFyZywgaW5wdXQpKTsK
KyAgICAgICAgfQorICAgICAgfSk7CisgICptYXhfcmVsX21hZCA9IChzdGQ6Om1heCkoKm1heF9y
ZWxfbWFkLCByZWxfbWFkKTsKKyAgcmV0dXJuIGR1cmF0aW9uOworfQorCisvLyAoTmVhcmx5KSBl
bXB0eSBGdW5jIGZvciBtZWFzdXJpbmcgdGltZXIgb3ZlcmhlYWQvcmVzb2x1dGlvbi4KK0FCU0xf
UkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9ORVZFUl9JTkxJTkUgRnVuY091dHB1dAorRW1wdHlG
dW5jKGNvbnN0IHZvaWQqIGFyZywgY29uc3QgRnVuY0lucHV0IGlucHV0KSB7CisgIHJldHVybiBp
bnB1dDsKK30KKworLy8gUmV0dXJucyBvdmVyaGVhZCBvZiBhY2Nlc3NpbmcgaW5wdXRzW10gYW5k
IGNhbGxpbmcgYSBmdW5jdGlvbjsgdGhpcyB3aWxsCisvLyBiZSBkZWR1Y3RlZCBmcm9tIGZ1dHVy
ZSBUb3RhbER1cmF0aW9uIHJldHVybiB2YWx1ZXMuCitUaWNrcyBPdmVyaGVhZChjb25zdCB2b2lk
KiBhcmcsIGNvbnN0IElucHV0VmVjKiBpbnB1dHMsIGNvbnN0IFBhcmFtcyYgcCkgeworICBkb3Vi
bGUgcmVsX21hZDsKKyAgLy8gWmVybyB0b2xlcmFuY2UgYmVjYXVzZSByZXBlYXRhYmlsaXR5IGlz
IGNydWNpYWwgYW5kIEVtcHR5RnVuYyBpcyBmYXN0LgorICByZXR1cm4gU2FtcGxlVW50aWxTdGFi
bGUoMC4wLCAmcmVsX21hZCwgcCwgW2FyZywgaW5wdXRzXSgpIHsKKyAgICBmb3IgKGNvbnN0IEZ1
bmNJbnB1dCBpbnB1dCA6ICppbnB1dHMpIHsKKyAgICAgIFByZXZlbnRFbGlzaW9uKEVtcHR5RnVu
YyhhcmcsIGlucHV0KSk7CisgICAgfQorICB9KTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK3Zv
aWQgUGluVGhyZWFkVG9DUFUoaW50IGNwdSkgeworICAvLyBXZSBtaWdodCBtaWdyYXRlIHRvIGFu
b3RoZXIgQ1BVIGJlZm9yZSBwaW5uaW5nIGJlbG93LCBidXQgYXQgbGVhc3QgY3B1CisgIC8vIHdp
bGwgYmUgb25lIG9mIHRoZSBDUFVzIG9uIHdoaWNoIHRoaXMgdGhyZWFkIHJhbi4KKyNpZiBkZWZp
bmVkKEFCU0xfT1NfV0lOKQorICBpZiAoY3B1IDwgMCkgeworICAgIGNwdSA9IHN0YXRpY19jYXN0
PGludD4oR2V0Q3VycmVudFByb2Nlc3Nvck51bWJlcigpKTsKKyAgICBBQlNMX1JBV19DSEVDSyhj
cHUgPj0gMCwgIlBpblRocmVhZFRvQ1BVIGRldGVjdCBmYWlsZWQiKTsKKyAgICBpZiAoY3B1ID49
IDY0KSB7CisgICAgICAvLyBOT1RFOiBPbiB3aW5lLCBhdCBsZWFzdCwgR2V0Q3VycmVudFByb2Nl
c3Nvck51bWJlcigpIHNvbWV0aW1lcyByZXR1cm5zCisgICAgICAvLyBhIHZhbHVlID4gNjQsIHdo
aWNoIGlzIG91dCBvZiByYW5nZS4gV2hlbiB0aGlzIGhhcHBlbnMsIGxvZyBhIG1lc3NhZ2UKKyAg
ICAgIC8vIGFuZCBkb24ndCBzZXQgYSBjcHUgYWZmaW5pdHkuCisgICAgICBBQlNMX1JBV19MT0co
RVJST1IsICJJbnZhbGlkIENQVSBudW1iZXI6ICVkIiwgY3B1KTsKKyAgICAgIHJldHVybjsKKyAg
ICB9CisgIH0gZWxzZSBpZiAoY3B1ID49IDY0KSB7CisgICAgLy8gVXNlciBzcGVjaWZpZWQgYW4g
ZXhwbGljaXQgQ1BVIGFmZmluaXR5ID4gdGhlIHZhbGlkIHJhbmdlLgorICAgIEFCU0xfUkFXX0xP
RyhGQVRBTCwgIkludmFsaWQgQ1BVIG51bWJlcjogJWQiLCBjcHUpOworICB9CisgIGNvbnN0IERX
T1JEX1BUUiBwcmV2ID0gU2V0VGhyZWFkQWZmaW5pdHlNYXNrKEdldEN1cnJlbnRUaHJlYWQoKSwg
MVVMTCA8PCBjcHUpOworICBBQlNMX1JBV19DSEVDSyhwcmV2ICE9IDAsICJTZXRBZmZpbml0eSBm
YWlsZWQiKTsKKyNlbGlmIGRlZmluZWQoQUJTTF9PU19MSU5VWCkgJiYgIWRlZmluZWQoQUJTTF9P
U19BTkRST0lEKQorICBpZiAoY3B1IDwgMCkgeworICAgIGNwdSA9IHNjaGVkX2dldGNwdSgpOwor
ICAgIEFCU0xfUkFXX0NIRUNLKGNwdSA+PSAwLCAiUGluVGhyZWFkVG9DUFUgZGV0ZWN0IGZhaWxl
ZCIpOworICB9CisgIGNvbnN0IHBpZF90IHBpZCA9IDA7ICAvLyBjdXJyZW50IHRocmVhZAorICBj
cHVfc2V0X3Qgc2V0OworICBDUFVfWkVSTygmc2V0KTsKKyAgQ1BVX1NFVChjcHUsICZzZXQpOwor
ICBjb25zdCBpbnQgZXJyID0gc2NoZWRfc2V0YWZmaW5pdHkocGlkLCBzaXplb2Yoc2V0KSwgJnNl
dCk7CisgIEFCU0xfUkFXX0NIRUNLKGVyciA9PSAwLCAiU2V0QWZmaW5pdHkgZmFpbGVkIik7Cisj
ZW5kaWYKK30KKworLy8gUmV0dXJucyB0aWNrIHJhdGUuIEludmFyaWFudCBtZWFucyB0aGUgdGlj
ayBjb3VudGVyIGZyZXF1ZW5jeSBpcyBpbmRlcGVuZGVudAorLy8gb2YgQ1BVIHRocm90dGxpbmcg
b3Igc2xlZXAuIE1heSBiZSBleHBlbnNpdmUsIGNhbGxlciBzaG91bGQgY2FjaGUgdGhlIHJlc3Vs
dC4KK2RvdWJsZSBJbnZhcmlhbnRUaWNrc1BlclNlY29uZCgpIHsKKyNpZiBkZWZpbmVkKEFCU0xf
QVJDSF9QUEMpCisgIHJldHVybiBfX3BwY19nZXRfdGltZWJhc2VfZnJlcSgpOworI2VsaWYgZGVm
aW5lZChBQlNMX0FSQ0hfWDg2XzY0KQorICAvLyBXZSBhc3N1bWUgdGhlIFRTQyBpcyBpbnZhcmlh
bnQ7IGl0IGlzIG9uIGFsbCByZWNlbnQgSW50ZWwvQU1EIENQVXMuCisgIHJldHVybiBwbGF0Zm9y
bTo6Tm9taW5hbENsb2NrUmF0ZSgpOworI2Vsc2UKKyAgLy8gRmFsbCBiYWNrIHRvIGNsb2NrX2dl
dHRpbWUgbmFub3NlY29uZHMuCisgIHJldHVybiAxRTk7CisjZW5kaWYKK30KKworc2l6ZV90IE1l
YXN1cmVJbXBsKGNvbnN0IEZ1bmMgZnVuYywgY29uc3Qgdm9pZCogYXJnLCBjb25zdCBzaXplX3Qg
bnVtX3NraXAsCisgICAgICAgICAgICAgICAgICAgY29uc3QgSW5wdXRWZWMmIHVuaXF1ZSwgY29u
c3QgSW5wdXRWZWMmIGZ1bGwsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUGFyYW1zJiBwLCBS
ZXN1bHQqIHJlc3VsdHMpIHsKKyAgY29uc3QgZmxvYXQgbXVsID0gMS4wZiAvIHN0YXRpY19jYXN0
PGludD4obnVtX3NraXApOworCisgIElucHV0VmVjIHN1YnNldChmdWxsLnNpemUoKSAtIG51bV9z
a2lwKTsKKyAgY29uc3QgVGlja3Mgb3ZlcmhlYWQgPSBPdmVyaGVhZChhcmcsICZmdWxsLCBwKTsK
KyAgY29uc3QgVGlja3Mgb3ZlcmhlYWRfc2tpcCA9IE92ZXJoZWFkKGFyZywgJnN1YnNldCwgcCk7
CisgIGlmIChvdmVyaGVhZCA8IG92ZXJoZWFkX3NraXApIHsKKyAgICBBQlNMX1JBV19MT0coV0FS
TklORywgIk1lYXN1cmVtZW50IGZhaWxlZDogb3ZlcmhlYWQgJXUgPCAldVxuIiwgb3ZlcmhlYWQs
CisgICAgICAgICAgICAgICAgIG92ZXJoZWFkX3NraXApOworICAgIHJldHVybiAwOworICB9CisK
KyAgaWYgKHAudmVyYm9zZSkgeworICAgIEFCU0xfUkFXX0xPRyhJTkZPLCAiI2lucHV0cz0lNXp1
LCU1enUgb3ZlcmhlYWQ9JTV1LCU1dVxuIiwgZnVsbC5zaXplKCksCisgICAgICAgICAgICAgICAg
IHN1YnNldC5zaXplKCksIG92ZXJoZWFkLCBvdmVyaGVhZF9za2lwKTsKKyAgfQorCisgIGRvdWJs
ZSBtYXhfcmVsX21hZCA9IDAuMDsKKyAgY29uc3QgVGlja3MgdG90YWwgPSBUb3RhbER1cmF0aW9u
KGZ1bmMsIGFyZywgJmZ1bGwsIHAsICZtYXhfcmVsX21hZCk7CisKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB1bmlxdWUuc2l6ZSgpOyArK2kpIHsKKyAgICBGaWxsU3Vic2V0KGZ1bGwsIHVuaXF1
ZVtpXSwgbnVtX3NraXAsICZzdWJzZXQpOworICAgIGNvbnN0IFRpY2tzIHRvdGFsX3NraXAgPSBU
b3RhbER1cmF0aW9uKGZ1bmMsIGFyZywgJnN1YnNldCwgcCwgJm1heF9yZWxfbWFkKTsKKworICAg
IGlmICh0b3RhbCA8IHRvdGFsX3NraXApIHsKKyAgICAgIEFCU0xfUkFXX0xPRyhXQVJOSU5HLCAi
TWVhc3VyZW1lbnQgZmFpbGVkOiB0b3RhbCAldSA8ICV1XG4iLCB0b3RhbCwKKyAgICAgICAgICAg
ICAgICAgICB0b3RhbF9za2lwKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGNvbnN0
IFRpY2tzIGR1cmF0aW9uID0gKHRvdGFsIC0gb3ZlcmhlYWQpIC0gKHRvdGFsX3NraXAgLSBvdmVy
aGVhZF9za2lwKTsKKyAgICByZXN1bHRzW2ldLmlucHV0ID0gdW5pcXVlW2ldOworICAgIHJlc3Vs
dHNbaV0udGlja3MgPSBkdXJhdGlvbiAqIG11bDsKKyAgICByZXN1bHRzW2ldLnZhcmlhYmlsaXR5
ID0gbWF4X3JlbF9tYWQ7CisgIH0KKworICByZXR1cm4gdW5pcXVlLnNpemUoKTsKK30KKworc2l6
ZV90IE1lYXN1cmUoY29uc3QgRnVuYyBmdW5jLCBjb25zdCB2b2lkKiBhcmcsIGNvbnN0IEZ1bmNJ
bnB1dCogaW5wdXRzLAorICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bV9pbnB1dHMsIFJl
c3VsdCogcmVzdWx0cywgY29uc3QgUGFyYW1zJiBwKSB7CisgIEFCU0xfUkFXX0NIRUNLKG51bV9p
bnB1dHMgIT0gMCwgIk5vIGlucHV0cyIpOworCisgIGNvbnN0IElucHV0VmVjIHVuaXF1ZSA9IFVu
aXF1ZUlucHV0cyhpbnB1dHMsIG51bV9pbnB1dHMpOworICBjb25zdCBzaXplX3QgbnVtX3NraXAg
PSBOdW1Ta2lwKGZ1bmMsIGFyZywgdW5pcXVlLCBwKTsgIC8vIG5ldmVyIDAKKyAgaWYgKG51bV9z
a2lwID09IDApIHJldHVybiAwOyAgLy8gTnVtU2tpcCBhbHJlYWR5IHByaW50ZWQgZXJyb3IgbWVz
c2FnZQorCisgIGNvbnN0IElucHV0VmVjIGZ1bGwgPQorICAgICAgUmVwbGljYXRlSW5wdXRzKGlu
cHV0cywgbnVtX2lucHV0cywgdW5pcXVlLnNpemUoKSwgbnVtX3NraXAsIHApOworCisgIC8vIE1l
YXN1cmVJbXBsIG1heSBmYWlsIHVwIHRvIHAubWF4X21lYXN1cmVfcmV0cmllcyB0aW1lcy4KKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwLm1heF9tZWFzdXJlX3JldHJpZXM7IGkrKykgeworICAg
IGF1dG8gcmVzdWx0ID0gTWVhc3VyZUltcGwoZnVuYywgYXJnLCBudW1fc2tpcCwgdW5pcXVlLCBm
dWxsLCBwLCByZXN1bHRzKTsKKyAgICBpZiAocmVzdWx0ICE9IDApIHsKKyAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICB9CisgIC8vIEFsbCByZXRyaWVzIGZhaWxlZC4gKFVudXN1YWwpCisg
IHJldHVybiAwOworfQorCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsX25hbm9iZW5j
aG1hcmsKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50
ZXJuYWwvbmFub2JlbmNobWFyay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1h
cmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMmI2NTBkMTkxYjdjY2QzZGJmZGMwMmE3ZWI5YzM1MWFmYjAyMWQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmsu
aApAQCAtMCwwICsxLDE2OCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfTkFOT0JFTkNI
TUFSS19IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9OQU5PQkVOQ0hNQVJLX0hfCisK
Ky8vIEJlbmNobWFya3MgZnVuY3Rpb25zIG9mIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgd2l0
aCByZWFsaXN0aWMgYnJhbmNoCisvLyBwcmVkaWN0aW9uIGhpdCByYXRlcy4gVXNlcyBhIHJvYnVz
dCBlc3RpbWF0b3IgdG8gc3VtbWFyaXplIHRoZSBtZWFzdXJlbWVudHMuCisvLyBUaGUgcHJlY2lz
aW9uIGlzIGFib3V0IDAuMiUuCisvLworLy8gRXhhbXBsZXM6IHNlZSBuYW5vYmVuY2htYXJrX3Rl
c3QuY2MuCisvLworLy8gQmFja2dyb3VuZDogTWljcm9iZW5jaG1hcmtzIHN1Y2ggYXMgaHR0cDov
L2dpdGh1Yi5jb20vZ29vZ2xlL2JlbmNobWFyaworLy8gY2FuIG1lYXN1cmUgZWxhcHNlZCB0aW1l
cyBvbiB0aGUgb3JkZXIgb2YgYSBtaWNyb3NlY29uZC4gU2hvcnRlciBmdW5jdGlvbnMKKy8vIGFy
ZSB0eXBpY2FsbHkgbWVhc3VyZWQgYnkgcmVwZWF0aW5nIHRoZW0gdGhvdXNhbmRzIG9mIHRpbWVz
IGFuZCBkaXZpZGluZworLy8gdGhlIHRvdGFsIGVsYXBzZWQgdGltZSBieSB0aGlzIGNvdW50LiBV
bmZvcnR1bmF0ZWx5LCByZXBldGl0aW9uIChlc3BlY2lhbGx5CisvLyB3aXRoIHRoZSBzYW1lIGlu
cHV0IHBhcmFtZXRlciEpIGluZmx1ZW5jZXMgdGhlIHJ1bnRpbWUuIEluIHRpbWUtY3JpdGljYWwK
Ky8vIGNvZGUsIGl0IGlzIHJlYXNvbmFibGUgdG8gZXhwZWN0IHdhcm0gaW5zdHJ1Y3Rpb24vZGF0
YSBjYWNoZXMgYW5kIFRMQnMsCisvLyBidXQgYSBwZXJmZWN0IHJlY29yZCBvZiB3aGljaCBicmFu
Y2hlcyB3aWxsIGJlIHRha2VuIGlzIHVucmVhbGlzdGljLgorLy8gVW5sZXNzIHRoZSBhcHBsaWNh
dGlvbiBhbHNvIHJlcGVhdGVkbHkgaW52b2tlcyB0aGUgbWVhc3VyZWQgZnVuY3Rpb24gd2l0aAor
Ly8gdGhlIHNhbWUgcGFyYW1ldGVyLCB0aGUgYmVuY2htYXJrIGlzIG1lYXN1cmluZyBzb21ldGhp
bmcgdmVyeSBkaWZmZXJlbnQgLQorLy8gYSBiZXN0LWNhc2UgcmVzdWx0LCBhbG1vc3QgYXMgaWYg
dGhlIHBhcmFtZXRlciB3ZXJlIG1hZGUgYSBjb21waWxlLXRpbWUKKy8vIGNvbnN0YW50LiBUaGlz
IG1heSBsZWFkIHRvIGVycm9uZW91cyBjb25jbHVzaW9ucyBhYm91dCBicmFuY2gtaGVhdnkKKy8v
IGFsZ29yaXRobXMgb3V0cGVyZm9ybWluZyBicmFuY2gtZnJlZSBhbHRlcm5hdGl2ZXMuCisvLwor
Ly8gT3VyIGFwcHJvYWNoIGRpZmZlcnMgaW4gdGhyZWUgd2F5cy4gQWRkaW5nIGZlbmNlcyB0byB0
aGUgdGltZXIgZnVuY3Rpb25zCisvLyByZWR1Y2VzIHZhcmlhYmlsaXR5IGR1ZSB0byBpbnN0cnVj
dGlvbiByZW9yZGVyaW5nLCBpbXByb3ZpbmcgdGhlIHRpbWVyCisvLyByZXNvbHV0aW9uIHRvIGFi
b3V0IDQwIENQVSBjeWNsZXMuIEhvd2V2ZXIsIHNob3J0ZXIgZnVuY3Rpb25zIG11c3Qgc3RpbGwK
Ky8vIGJlIGludm9rZWQgcmVwZWF0ZWRseS4gRm9yIG1vcmUgcmVhbGlzdGljIGJyYW5jaCBwcmVk
aWN0aW9uIHBlcmZvcm1hbmNlLAorLy8gd2UgdmFyeSB0aGUgaW5wdXQgcGFyYW1ldGVyIGFjY29y
ZGluZyB0byBhIHVzZXItc3BlY2lmaWVkIGRpc3RyaWJ1dGlvbi4KKy8vIFRodXMsIGluc3RlYWQg
b2YgVmFyeUlucHV0cyhNZWFzdXJlKFJlcGVhdChmdW5jKSkpLCB3ZSBjaGFuZ2UgdGhlCisvLyBs
b29wIG5lc3RpbmcgdG8gTWVhc3VyZShSZXBlYXQoVmFyeUlucHV0cyhmdW5jKSkpLiBXZSBhbHNv
IGVzdGltYXRlIHRoZQorLy8gY2VudHJhbCB0ZW5kZW5jeSBvZiB0aGUgbWVhc3VyZW1lbnQgc2Ft
cGxlcyB3aXRoIHRoZSAiaGFsZiBzYW1wbGUgbW9kZSIsCisvLyB3aGljaCBpcyBtb3JlIHJvYnVz
dCB0byBvdXRsaWVycyBhbmQgc2tld2VkIGRhdGEgdGhhbiB0aGUgbWVhbiBvciBtZWRpYW4uCisK
Ky8vIE5PVEU6IGZvciBjb21wYXRpYmlsaXR5IHdpdGggbXVsdGlwbGUgdHJhbnNsYXRpb24gdW5p
dHMgY29tcGlsZWQgd2l0aAorLy8gZGlzdGluY3QgZmxhZ3MsIGF2b2lkICNpbmNsdWRpbmcgaGVh
ZGVycyB0aGF0IGRlZmluZSBmdW5jdGlvbnMuCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNs
dWRlIDxzdGRpbnQuaD4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRl
cm5hbF9uYW5vYmVuY2htYXJrIHsKKworLy8gSW5wdXQgaW5mbHVlbmNpbmcgdGhlIGZ1bmN0aW9u
IGJlaW5nIG1lYXN1cmVkIChlLmcuIG51bWJlciBvZiBieXRlcyB0byBjb3B5KS4KK3VzaW5nIEZ1
bmNJbnB1dCA9IHNpemVfdDsKKworLy8gIlByb29mIG9mIHdvcmsiIHJldHVybmVkIGJ5IEZ1bmMg
dG8gZW5zdXJlIHRoZSBjb21waWxlciBkb2VzIG5vdCBlbGlkZSBpdC4KK3VzaW5nIEZ1bmNPdXRw
dXQgPSB1aW50NjRfdDsKKworLy8gRnVuY3Rpb24gdG8gbWVhc3VyZTogZWl0aGVyIDEpIGEgY2Fw
dHVyZWxlc3MgbGFtYmRhIG9yIGZ1bmN0aW9uIHdpdGggdHdvCisvLyBhcmd1bWVudHMgb3IgMikg
YSBsYW1iZGEgd2l0aCBjYXB0dXJlLCBpbiB3aGljaCBjYXNlIHRoZSBmaXJzdCBhcmd1bWVudAor
Ly8gaXMgcmVzZXJ2ZWQgZm9yIHVzZSBieSBNZWFzdXJlQ2xvc3VyZS4KK3VzaW5nIEZ1bmMgPSBG
dW5jT3V0cHV0ICgqKShjb25zdCB2b2lkKiwgRnVuY0lucHV0KTsKKworLy8gSW50ZXJuYWwgcGFy
YW1ldGVycyB0aGF0IGRldGVybWluZSBwcmVjaXNpb24vcmVzb2x1dGlvbi9tZWFzdXJpbmcgdGlt
ZS4KK3N0cnVjdCBQYXJhbXMgeworICAvLyBGb3IgbWVhc3VyaW5nIHRpbWVyIG92ZXJoZWFkL3Jl
c29sdXRpb24uIFVzZWQgaW4gYSBuZXN0ZWQgbG9vcCA9PgorICAvLyBxdWFkcmF0aWMgdGltZSwg
YWNjZXB0YWJsZSBiZWNhdXNlIHdlIGtub3cgdGltZXIgb3ZlcmhlYWQgaXMgImxvdyIuCisgIC8v
IGNvbnN0ZXhwciBiZWNhdXNlIHRoaXMgaXMgdXNlZCB0byBkZWZpbmUgYXJyYXkgYm91bmRzLgor
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrVGltZXJTYW1wbGVzID0gMjU2OworCisgIC8vIEJl
c3QtY2FzZSBwcmVjaXNpb24sIGV4cHJlc3NlZCBhcyBhIGRpdmlzb3Igb2YgdGhlIHRpbWVyIHJl
c29sdXRpb24uCisgIC8vIExhcmdlciA9PiBtb3JlIGNhbGxzIHRvIEZ1bmMgYW5kIGhpZ2hlciBw
cmVjaXNpb24uCisgIHNpemVfdCBwcmVjaXNpb25fZGl2aXNvciA9IDEwMjQ7CisKKyAgLy8gUmF0
aW8gYmV0d2VlbiBmdWxsIGFuZCBzdWJzZXQgaW5wdXQgZGlzdHJpYnV0aW9uIHNpemVzLiBDYW5u
b3QgYmUgbGVzcworICAvLyB0aGFuIDI7IGxhcmdlciB2YWx1ZXMgaW5jcmVhc2UgbWVhc3VyZW1l
bnQgdGltZSBidXQgbW9yZSBmYWl0aGZ1bGx5CisgIC8vIG1vZGVsIHRoZSBnaXZlbiBpbnB1dCBk
aXN0cmlidXRpb24uCisgIHNpemVfdCBzdWJzZXRfcmF0aW8gPSAyOworCisgIC8vIFRvZ2V0aGVy
IHdpdGggdGhlIGVzdGltYXRlZCBGdW5jIGR1cmF0aW9uLCBkZXRlcm1pbmVzIGhvdyBtYW55IHRp
bWVzIHRvCisgIC8vIGNhbGwgRnVuYyBiZWZvcmUgY2hlY2tpbmcgdGhlIHNhbXBsZSB2YXJpYWJp
bGl0eS4gTGFyZ2VyIHZhbHVlcyBpbmNyZWFzZQorICAvLyBtZWFzdXJlbWVudCB0aW1lLCBtZW1v
cnkvY2FjaGUgdXNlIGFuZCBwcmVjaXNpb24uCisgIGRvdWJsZSBzZWNvbmRzX3Blcl9ldmFsID0g
NEUtMzsKKworICAvLyBUaGUgbWluaW11bSBudW1iZXIgb2Ygc2FtcGxlcyBiZWZvcmUgZXN0aW1h
dGluZyB0aGUgY2VudHJhbCB0ZW5kZW5jeS4KKyAgc2l6ZV90IG1pbl9zYW1wbGVzX3Blcl9ldmFs
ID0gNzsKKworICAvLyBUaGUgbW9kZSBpcyBiZXR0ZXIgdGhhbiBtZWRpYW4gZm9yIGVzdGltYXRp
bmcgdGhlIGNlbnRyYWwgdGVuZGVuY3kgb2YKKyAgLy8gc2tld2VkL2ZhdC10YWlsZWQgZGlzdHJp
YnV0aW9ucywgYnV0IGl0IHJlcXVpcmVzIHN1ZmZpY2llbnQgc2FtcGxlcworICAvLyByZWxhdGl2
ZSB0byB0aGUgd2lkdGggb2YgaGFsZi1yYW5nZXMuCisgIHNpemVfdCBtaW5fbW9kZV9zYW1wbGVz
ID0gNjQ7CisKKyAgLy8gTWF4aW11bSBwZXJtaXNzaWJsZSB2YXJpYWJpbGl0eSAoPSBtZWRpYW4g
YWJzb2x1dGUgZGV2aWF0aW9uIC8gY2VudGVyKS4KKyAgZG91YmxlIHRhcmdldF9yZWxfbWFkID0g
MC4wMDI7CisKKyAgLy8gQWJvcnQgYWZ0ZXIgdGhpcyBtYW55IGV2YWxzIHdpdGhvdXQgcmVhY2hp
bmcgdGFyZ2V0X3JlbF9tYWQuIFRoaXMKKyAgLy8gcHJldmVudHMgaW5maW5pdGUgbG9vcHMuCisg
IHNpemVfdCBtYXhfZXZhbHMgPSA5OworCisgIC8vIFJldHJ5IHRoZSBtZWFzdXJlIGxvb3AgdXAg
dG8gdGhpcyBtYW55IHRpbWVzLgorICBzaXplX3QgbWF4X21lYXN1cmVfcmV0cmllcyA9IDI7CisK
KyAgLy8gV2hldGhlciB0byBwcmludCBhZGRpdGlvbmFsIHN0YXRpc3RpY3MgdG8gc3Rkb3V0Lgor
ICBib29sIHZlcmJvc2UgPSB0cnVlOworfTsKKworLy8gTWVhc3VyZW1lbnQgcmVzdWx0IGZvciBl
YWNoIHVuaXF1ZSBpbnB1dC4KK3N0cnVjdCBSZXN1bHQgeworICBGdW5jSW5wdXQgaW5wdXQ7CisK
KyAgLy8gUm9idXN0IGVzdGltYXRlIChtb2RlIG9yIG1lZGlhbikgb2YgZHVyYXRpb24uCisgIGZs
b2F0IHRpY2tzOworCisgIC8vIE1lYXN1cmUgb2YgdmFyaWFiaWxpdHkgKG1lZGlhbiBhYnNvbHV0
ZSBkZXZpYXRpb24gcmVsYXRpdmUgdG8gInRpY2tzIikuCisgIGZsb2F0IHZhcmlhYmlsaXR5Owor
fTsKKworLy8gRW5zdXJlcyB0aGUgdGhyZWFkIGlzIHJ1bm5pbmcgb24gdGhlIHNwZWNpZmllZCBj
cHUsIGFuZCBubyBvdGhlcnMuCisvLyBSZWR1Y2VzIG5vaXNlIGR1ZSB0byBkZXN5bmNocm9uaXpl
ZCBzb2NrZXQgUkRUU0MgYW5kIGNvbnRleHQgc3dpdGNoZXMuCisvLyBJZiAiY3B1IiBpcyBuZWdh
dGl2ZSwgcGluIHRvIHRoZSBjdXJyZW50bHkgcnVubmluZyBjb3JlLgordm9pZCBQaW5UaHJlYWRU
b0NQVShjb25zdCBpbnQgY3B1ID0gLTEpOworCisvLyBSZXR1cm5zIHRpY2sgcmF0ZSwgdXNlZnVs
IGZvciBjb252ZXJ0aW5nIG1lYXN1cmVtZW50cyB0byBzZWNvbmRzLiBJbnZhcmlhbnQKKy8vIG1l
YW5zIHRoZSB0aWNrIGNvdW50ZXIgZnJlcXVlbmN5IGlzIGluZGVwZW5kZW50IG9mIENQVSB0aHJv
dHRsaW5nIG9yIHNsZWVwLgorLy8gVGhpcyBjYWxsIG1heSBiZSBleHBlbnNpdmUsIGNhbGxlcnMg
c2hvdWxkIGNhY2hlIHRoZSByZXN1bHQuCitkb3VibGUgSW52YXJpYW50VGlja3NQZXJTZWNvbmQo
KTsKKworLy8gUHJlY2lzZWx5IG1lYXN1cmVzIHRoZSBudW1iZXIgb2YgdGlja3MgZWxhcHNlZCB3
aGVuIGNhbGxpbmcgImZ1bmMiIHdpdGggdGhlCisvLyBnaXZlbiBpbnB1dHMsIHNodWZmbGVkIHRv
IGVuc3VyZSByZWFsaXN0aWMgYnJhbmNoIHByZWRpY3Rpb24gaGl0IHJhdGVzLgorLy8KKy8vICJm
dW5jIiByZXR1cm5zIGEgJ3Byb29mIG9mIHdvcmsnIHRvIGVuc3VyZSBpdHMgY29tcHV0YXRpb25z
IGFyZSBub3QgZWxpZGVkLgorLy8gImFyZyIgaXMgcGFzc2VkIHRvIEZ1bmMsIG9yIHJlc2VydmVk
IGZvciBpbnRlcm5hbCB1c2UgYnkgTWVhc3VyZUNsb3N1cmUuCisvLyAiaW5wdXRzIiBpcyBhbiBh
cnJheSBvZiAibnVtX2lucHV0cyIgKG5vdCBuZWNlc3NhcmlseSB1bmlxdWUpIGFyZ3VtZW50cyB0
bworLy8gICAiZnVuYyIuIFRoZSB2YWx1ZXMgc2hvdWxkIGJlIGNob3NlbiB0byBtYXhpbWl6ZSBj
b3ZlcmFnZSBvZiAiZnVuYyIuIFRoaXMKKy8vICAgcmVwcmVzZW50cyBhIGRpc3RyaWJ1dGlvbiwg
c28gYSB2YWx1ZSdzIGZyZXF1ZW5jeSBzaG91bGQgcmVmbGVjdCBpdHMKKy8vICAgcHJvYmFiaWxp
dHkgaW4gdGhlIHJlYWwgYXBwbGljYXRpb24uIE9yZGVyIGRvZXMgbm90IG1hdHRlcjsgZm9yIGV4
YW1wbGUsIGEKKy8vICAgdW5pZm9ybSBkaXN0cmlidXRpb24gb3ZlciBbMCwgNCkgY291bGQgYmUg
cmVwcmVzZW50ZWQgYXMgezMsMCwyLDF9LgorLy8gUmV0dXJucyBob3cgbWFueSBSZXN1bHQgd2Vy
ZSB3cml0dGVuIHRvICJyZXN1bHRzIjogb25lIHBlciB1bmlxdWUgaW5wdXQsIG9yCisvLyAgIHpl
cm8gaWYgdGhlIG1lYXN1cmVtZW50IGZhaWxlZCAoYW4gZXJyb3IgbWVzc2FnZSBnb2VzIHRvIHN0
ZGVycikuCitzaXplX3QgTWVhc3VyZShjb25zdCBGdW5jIGZ1bmMsIGNvbnN0IHZvaWQqIGFyZywg
Y29uc3QgRnVuY0lucHV0KiBpbnB1dHMsCisgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgbnVt
X2lucHV0cywgUmVzdWx0KiByZXN1bHRzLAorICAgICAgICAgICAgICAgY29uc3QgUGFyYW1zJiBw
ID0gUGFyYW1zKCkpOworCisvLyBDYWxscyBvcGVyYXRvcigpIG9mIHRoZSBnaXZlbiBjbG9zdXJl
IChsYW1iZGEgZnVuY3Rpb24pLgordGVtcGxhdGUgPGNsYXNzIENsb3N1cmU+CitzdGF0aWMgRnVu
Y091dHB1dCBDYWxsQ2xvc3VyZShjb25zdCB2b2lkKiBmLCBjb25zdCBGdW5jSW5wdXQgaW5wdXQp
IHsKKyAgcmV0dXJuICgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBDbG9zdXJlKj4oZikpKGlucHV0
KTsKK30KKworLy8gU2FtZSBhcyBNZWFzdXJlLCBleGNlcHQgImNsb3N1cmUiIGlzIHR5cGljYWxs
eSBhIGxhbWJkYSBmdW5jdGlvbiBvZgorLy8gRnVuY0lucHV0IC0+IEZ1bmNPdXRwdXQgd2l0aCBh
IGNhcHR1cmUgbGlzdC4KK3RlbXBsYXRlIDxjbGFzcyBDbG9zdXJlPgorc3RhdGljIGlubGluZSBz
aXplX3QgTWVhc3VyZUNsb3N1cmUoY29uc3QgQ2xvc3VyZSYgY2xvc3VyZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmNJbnB1dCogaW5wdXRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bV9pbnB1dHMsIFJl
c3VsdCogcmVzdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFBhcmFtcyYgcCA9IFBhcmFtcygpKSB7CisgIHJldHVybiBNZWFzdXJlKHJlaW50ZXJwcmV0X2Nh
c3Q8RnVuYz4oJkNhbGxDbG9zdXJlPENsb3N1cmU+KSwKKyAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJmNsb3N1cmUpLCBpbnB1dHMsIG51bV9pbnB1dHMsCisg
ICAgICAgICAgICAgICAgIHJlc3VsdHMsIHApOworfQorCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9t
X2ludGVybmFsX25hbm9iZW5jaG1hcmsKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAg
Ly8gQUJTTF9SQU5ET01fSU5URVJOQUxfTkFOT0JFTkNITUFSS19IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmtfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9p
bnRlcm5hbC9uYW5vYmVuY2htYXJrX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgzMzQ1YThiNDc0NDAz
YWM0ODEwY2MwMmRjNjBjYjg5OTYxM2NkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9uYW5vYmVuY2htYXJrX3Rlc3QuY2MKQEAgLTAsMCArMSw3NSBAQAorLy8gQ29w
eXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9uYW5vYmVuY2htYXJrLmgiCisKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbnVt
YmVycy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsX25h
bm9iZW5jaG1hcmsgeworbmFtZXNwYWNlIHsKKwordWludDY0X3QgRGl2KGNvbnN0IHZvaWQqLCBG
dW5jSW5wdXQgaW4pIHsKKyAgLy8gSGVyZSB3ZSdyZSBtZWFzdXJpbmcgdGhlIHRocm91Z2hwdXQg
YmVjYXVzZSBiZW5jaG1hcmsgaW52b2NhdGlvbnMgYXJlCisgIC8vIGluZGVwZW5kZW50LgorICBj
b25zdCBpbnQ2NF90IGQxID0gMHhGRkZGRkZGRkZGbGwgLyBpbnQ2NF90KGluKTsgIC8vIElESVYK
KyAgcmV0dXJuIGQxOworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IE4+Cit2b2lkIE1lYXN1cmVEaXYo
Y29uc3QgRnVuY0lucHV0ICgmaW5wdXRzKVtOXSkgeworICBSZXN1bHQgcmVzdWx0c1tOXTsKKyAg
UGFyYW1zIHBhcmFtczsKKyAgcGFyYW1zLm1heF9ldmFscyA9IDY7ICAvLyBhdm9pZCB0ZXN0IHRp
bWVvdXQKKyAgY29uc3Qgc2l6ZV90IG51bV9yZXN1bHRzID0gTWVhc3VyZSgmRGl2LCBudWxscHRy
LCBpbnB1dHMsIE4sIHJlc3VsdHMsIHBhcmFtcyk7CisgIGlmIChudW1fcmVzdWx0cyA9PSAwKSB7
CisgICAgQUJTTF9SQVdfTE9HKAorICAgICAgICBXQVJOSU5HLAorICAgICAgICAiV0FSTklORzog
TWVhc3VyZW1lbnQgZmFpbGVkLCBzaG91bGQgbm90IGhhcHBlbiB3aGVuIHVzaW5nICIKKyAgICAg
ICAgIlBpblRocmVhZFRvQ1BVIHVubGVzcyB0aGUgcmVnaW9uIHRvIG1lYXN1cmUgdGFrZXMgPiAx
IHNlY29uZC5cbiIpOworICAgIHJldHVybjsKKyAgfQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bV9yZXN1bHRzOyArK2kpIHsKKyAgICBBQlNMX1JBV19MT0coSU5GTywgIiU1enU6ICU2LjJm
IHRpY2tzOyBNQUQ9JTQuMmYlJVxuIiwgcmVzdWx0c1tpXS5pbnB1dCwKKyAgICAgICAgICAgICAg
ICAgcmVzdWx0c1tpXS50aWNrcywgcmVzdWx0c1tpXS52YXJpYWJpbGl0eSAqIDEwMC4wKTsKKyAg
ICBBQlNMX1JBV19DSEVDSyhyZXN1bHRzW2ldLnRpY2tzICE9IDAuMGYsICJaZXJvIGR1cmF0aW9u
Iik7CisgIH0KK30KKwordm9pZCBSdW5BbGwoY29uc3QgaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkg
eworICAvLyBBdm9pZCBtaWdyYXRpbmcgYmV0d2VlbiBjb3JlcyAtIGltcG9ydGFudCBvbiBtdWx0
aS1zb2NrZXQgc3lzdGVtcy4KKyAgaW50IGNwdSA9IC0xOworICBpZiAoYXJnYyA9PSAyKSB7Cisg
ICAgaWYgKCFTaW1wbGVBdG9pKGFyZ3ZbMV0sICZjcHUpKSB7CisgICAgICBBQlNMX1JBV19MT0co
RkFUQUwsICJUaGUgb3B0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhIENQVSBudW1iZXIgPj0gMC5c
biIpOworICAgIH0KKyAgfQorICBQaW5UaHJlYWRUb0NQVShjcHUpOworCisgIC8vIHVucHJlZGlj
dGFibGUgPT0gMSBidXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qga25vdyB0aGF0LgorICBjb25zdCBG
dW5jSW5wdXQgdW5wcmVkaWN0YWJsZSA9IGFyZ2MgIT0gOTk5OworICBzdGF0aWMgY29uc3QgRnVu
Y0lucHV0IGlucHV0c1tdID0ge3VucHJlZGljdGFibGUgKiAxMCwgdW5wcmVkaWN0YWJsZSAqIDEw
MH07CisKKyAgTWVhc3VyZURpdihpbnB1dHMpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8v
IG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWxfbmFub2JlbmNobWFyaworfSAgLy8gbmFtZXNwYWNl
IGFic2wKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfbmFub2JlbmNobWFyazo6UnVuQWxsKGFyZ2MsIGFyZ3YpOworICByZXR1cm4g
MDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9ub25zZWN1cmVfYmFzZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL25vbnNlY3VyZV9iYXNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg0
N2U3NGJlZjZiYmM3YTM3MDA3NGE2MTgzYjZjYzY1OWJlMmY4YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9ub25zZWN1cmVfYmFzZS5oCkBAIC0wLDAgKzEsMTQ4IEBA
CisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9OT05TRUNVUkVfQkFTRV9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9J
TlRFUk5BTF9OT05TRUNVUkVfQkFTRV9IXworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1
ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8aXRlcmF0b3I+Cisj
aW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisj
aW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20v
aW50ZXJuYWwvcG9vbF91cmJnLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2Fs
dGVkX3NlZWRfc2VxLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRl
cmlhbC5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL3NwYW4uaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRl
cm5hbCB7CisKKy8vIEVhY2ggaW5zdGFuY2Ugb2YgTm9uc2VjdXJlVVJCR0Jhc2U8VVJCRz4gd2ls
bCBiZSBzZWVkZWQgYnkgdmFyaWF0ZXMgcHJvZHVjZWQKKy8vIGJ5IGEgdGhyZWFkLXVuaXF1ZSBV
UkJHLWluc3RhbmNlLgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CitjbGFzcyBOb25zZWN1cmVV
UkJHQmFzZSB7CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIFVSQkc6
OnJlc3VsdF90eXBlOworCisgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKKyAgTm9uc2VjdXJlVVJC
R0Jhc2UoKSA6IHVyYmdfKENvbnN0cnVjdFVSQkcoKSkge30KKworICAvLyBDb3B5IGRpc2FsbG93
ZWQsIG1vdmUgYWxsb3dlZC4KKyAgTm9uc2VjdXJlVVJCR0Jhc2UoY29uc3QgTm9uc2VjdXJlVVJC
R0Jhc2UmKSA9IGRlbGV0ZTsKKyAgTm9uc2VjdXJlVVJCR0Jhc2UmIG9wZXJhdG9yPShjb25zdCBO
b25zZWN1cmVVUkJHQmFzZSYpID0gZGVsZXRlOworICBOb25zZWN1cmVVUkJHQmFzZShOb25zZWN1
cmVVUkJHQmFzZSYmKSA9IGRlZmF1bHQ7CisgIE5vbnNlY3VyZVVSQkdCYXNlJiBvcGVyYXRvcj0o
Tm9uc2VjdXJlVVJCR0Jhc2UmJikgPSBkZWZhdWx0OworCisgIC8vIENvbnN0cnVjdG9yIHVzaW5n
IGEgc2VlZAorICB0ZW1wbGF0ZSA8Y2xhc3MgU1NlcSwgdHlwZW5hbWUgPSB0eXBlbmFtZSBhYnNs
OjplbmFibGVfaWZfdDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAhc3RkOjppc19zYW1l
PFNTZXEsIE5vbnNlY3VyZVVSQkdCYXNlPjo6dmFsdWU+PgorICBleHBsaWNpdCBOb25zZWN1cmVV
UkJHQmFzZShTU2VxJiYgc2VxKQorICAgICAgOiB1cmJnXyhDb25zdHJ1Y3RVUkJHKHN0ZDo6Zm9y
d2FyZDxTU2VxPihzZXEpKSkge30KKworICAvLyBOb3RlOiBvbiBNU1ZDLCBtaW4oKSBvciBtYXgo
KSBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgTUlOKCkgb3IgTUFYKCksIHNvIHdlCisgIC8vIGVuY2xv
c2UgbWluKCkgb3IgbWF4KCkgaW4gcGFyZW5zIGFzIChtaW4pKCkgYW5kIChtYXgpKCkuCisgIC8v
IEFkZGl0aW9uYWxseSwgY2xhbmctZm9ybWF0IHJlcXVpcmVzIG5vIHNwYWNlIGJlZm9yZSB0aGlz
IGNvbnN0cnVjdGlvbi4KKworICAvLyBOb25zZWN1cmVVUkJHQmFzZTo6bWluKCkKKyAgc3RhdGlj
IGNvbnN0ZXhwciByZXN1bHRfdHlwZShtaW4pKCkgeyByZXR1cm4gKFVSQkc6Om1pbikoKTsgfQor
CisgIC8vIE5vbnNlY3VyZVVSQkdCYXNlOjptYXgoKQorICBzdGF0aWMgY29uc3RleHByIHJlc3Vs
dF90eXBlKG1heCkoKSB7IHJldHVybiAoVVJCRzo6bWF4KSgpOyB9CisKKyAgLy8gTm9uc2VjdXJl
VVJCR0Jhc2U6Om9wZXJhdG9yKCkoKQorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkgeyByZXR1
cm4gdXJiZ18oKTsgfQorCisgIC8vIE5vbnNlY3VyZVVSQkdCYXNlOjpkaXNjYXJkKCkKKyAgdm9p
ZCBkaXNjYXJkKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZXMpIHsgIC8vIE5PTElOVChydW50aW1l
L2ludCkKKyAgICB1cmJnXy5kaXNjYXJkKHZhbHVlcyk7CisgIH0KKworICBib29sIG9wZXJhdG9y
PT0oY29uc3QgTm9uc2VjdXJlVVJCR0Jhc2UmIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIHVy
YmdfID09IG90aGVyLnVyYmdfOworICB9CisKKyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vbnNl
Y3VyZVVSQkdCYXNlJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiAhKHVyYmdfID09IG90aGVy
LnVyYmdfKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gU2VlZGVyIGlzIGEgY3VzdG9tIHNlZWQg
c2VxdWVuY2UgdHlwZSB3aGVyZSBnZW5lcmF0ZSgpIGZpbGxzIHRoZSBwcm92aWRlZAorICAvLyBi
dWZmZXIgdmlhIHRoZSBSYW5kZW5Qb29sIGVudHJvcHkgc291cmNlLgorICBzdHJ1Y3QgU2VlZGVy
IHsKKyAgICB1c2luZyByZXN1bHRfdHlwZSA9IHVpbnQzMl90OworCisgICAgc2l6ZV90IHNpemUo
KSB7IHJldHVybiAwOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0SXRlcmF0b3I+Cisg
ICAgdm9pZCBwYXJhbShPdXRJdGVyYXRvcikgY29uc3Qge30KKworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KKyAgICB2b2lkIGdlbmVyYXRlKFJhbmRvbUFjY2Vz
c0l0ZXJhdG9yIGJlZ2luLCBSYW5kb21BY2Nlc3NJdGVyYXRvciBlbmQpIHsKKyAgICAgIGlmIChi
ZWdpbiAhPSBlbmQpIHsKKyAgICAgICAgLy8gYmVnaW4sIGVuZCBtdXN0IGJlIHJhbmRvbSBhY2Nl
c3MgaXRlcmF0b3JzIGFzc2lnbmFibGUgZnJvbSB1aW50MzJfdC4KKyAgICAgICAgZ2VuZXJhdGVf
aW1wbCgKKyAgICAgICAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc2l6ZW9mKCpi
ZWdpbikgPT0gc2l6ZW9mKHVpbnQzMl90KT57fSwKKyAgICAgICAgICAgIGJlZ2luLCBlbmQpOwor
ICAgICAgfQorICAgIH0KKworICAgIC8vIENvbW1vbmx5LCBnZW5lcmF0ZSBpcyBpbnZva2VkIHdp
dGggYSBwb2ludGVyIHRvIGEgYnVmZmVyIHdoaWNoCisgICAgLy8gY2FuIGJlIGNhc3QgdG8gYSB1
aW50MzJfdC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Cisg
ICAgdm9pZCBnZW5lcmF0ZV9pbXBsKHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4s
CisgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGJlZ2luLCBSYW5k
b21BY2Nlc3NJdGVyYXRvciBlbmQpIHsKKyAgICAgIGF1dG8gYnVmZmVyID0gYWJzbDo6TWFrZVNw
YW4oYmVnaW4sIGVuZCk7CisgICAgICBhdXRvIHRhcmdldCA9IGFic2w6Ok1ha2VTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihidWZmZXIuZGF0YSgpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnVmZmVyLnNpemUoKSk7CisgICAgICBSYW5kZW5Qb29sPHVpbnQz
Ml90Pjo6RmlsbCh0YXJnZXQpOworICAgIH0KKworICAgIC8vIFRoZSBub24tdWludDMyX3QgY2Fz
ZSBzaG91bGQgYmUgdW5jb21tb24sIGFuZCBpbnZvbHZlcyBhbiBleHRyYSBjb3B5LAorICAgIC8v
IGZpbGxpbmcgdGhlIHVpbnQzMl90IGJ1ZmZlciBhbmQgdGhlbiBtaXhpbmcgaW50byB0aGUgb3V0
cHV0LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KKyAgICB2
b2lkIGdlbmVyYXRlX2ltcGwoc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBmYWxzZT4sCisg
ICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGJlZ2luLCBSYW5kb21B
Y2Nlc3NJdGVyYXRvciBlbmQpIHsKKyAgICAgIGNvbnN0IHNpemVfdCBuID0gc3RkOjpkaXN0YW5j
ZShiZWdpbiwgZW5kKTsKKyAgICAgIGFic2w6OklubGluZWRWZWN0b3I8dWludDMyX3QsIDg+IGRh
dGEobiwgMCk7CisgICAgICBSYW5kZW5Qb29sPHVpbnQzMl90Pjo6RmlsbChhYnNsOjpNYWtlU3Bh
bihkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCkpKTsKKyAgICAgIHN0ZDo6Y29weShzdGQ6OmJlZ2lu
KGRhdGEpLCBzdGQ6OmVuZChkYXRhKSwgYmVnaW4pOworICAgIH0KKyAgfTsKKworICBzdGF0aWMg
VVJCRyBDb25zdHJ1Y3RVUkJHKCkgeworICAgIFNlZWRlciBzZWVkZXI7CisgICAgcmV0dXJuIFVS
Qkcoc2VlZGVyKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBTU2VxPgorICBzdGF0aWMg
VVJCRyBDb25zdHJ1Y3RVUkJHKFNTZXEmJiBzZXEpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVy
ZW5jZXMpCisgICAgYXV0byBzYWx0ZWRfc2VxID0KKyAgICAgICAgcmFuZG9tX2ludGVybmFsOjpN
YWtlU2FsdGVkU2VlZFNlcShzdGQ6OmZvcndhcmQ8U1NlcT4oc2VxKSk7CisgICAgcmV0dXJuIFVS
Qkcoc2FsdGVkX3NlcSk7CisgIH0KKworICBVUkJHIHVyYmdfOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9OT05TRUNVUkVfQkFTRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL25vbnNlY3VyZV9iYXNlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50
ZXJuYWwvbm9uc2VjdXJlX2Jhc2VfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWRlOTkwMTljZTA5OGYx
ZDVjYmY1MWU0MjExYmJkOWZhZTE4NDYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2ludGVybmFsL25vbnNlY3VyZV9iYXNlX3Rlc3QuY2MKQEAgLTAsMCArMSwyNDQgQEAKKy8vIENv
cHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvbm9uc2VjdXJlX2Jhc2UuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8cmFuZG9tPgor
I2luY2x1ZGUgPHNzdHJlYW0+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
ImFic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbnMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9yYW5k
b20uaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorCituYW1lc3BhY2Ugewor
Cit1c2luZyBFeGFtcGxlTm9uc2VjdXJlVVJCRyA9CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpOb25zZWN1cmVVUkJHQmFzZTxzdGQ6Om10MTk5Mzc+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3ZvaWQgVXNlKGNvbnN0IFQmKSB7fQorCit9ICAvLyBuYW1lc3BhY2UKKworVEVTVChOb25z
ZWN1cmVVUkJHQmFzZSwgRGVmYXVsdENvbnN0cnVjdG9ySXNWYWxpZCkgeworICBFeGFtcGxlTm9u
c2VjdXJlVVJCRyB1cmJnOworfQorCisvLyBFbnN1cmUgdGhhdCB0aGUgcmVjb21tZW5kZWQgdGVt
cGxhdGUtaW5zdGFudGlhdGlvbnMgYXJlIHZhbGlkLgorVEVTVChSZWNvbW1lbmRlZFRlbXBsYXRl
cywgQ2FuQmVDb25zdHJ1Y3RlZCkgeworICBhYnNsOjpCaXRHZW4gZGVmYXVsdF9nZW5lcmF0b3I7
CisgIGFic2w6Okluc2VjdXJlQml0R2VuIGluc2VjdXJlX2dlbmVyYXRvcjsKK30KKworVEVTVChS
ZWNvbW1lbmRlZFRlbXBsYXRlcywgQ2FuRGlzY2FyZFZhbHVlcykgeworICBhYnNsOjpCaXRHZW4g
ZGVmYXVsdF9nZW5lcmF0b3I7CisgIGFic2w6Okluc2VjdXJlQml0R2VuIGluc2VjdXJlX2dlbmVy
YXRvcjsKKworICBkZWZhdWx0X2dlbmVyYXRvci5kaXNjYXJkKDUpOworICBpbnNlY3VyZV9nZW5l
cmF0b3IuZGlzY2FyZCg1KTsKK30KKworVEVTVChOb25zZWN1cmVVUkJHQmFzZSwgU3RhbmRhcmRJ
bnRlcmZhY2UpIHsKKyAgLy8gTmFtZXMgYWZ0ZXIgZGVmaW5pdGlvbiBvZiBbcmFuZC5yZXEudXJi
Z10gaW4gQysrIHN0YW5kYXJkLgorICAvLyBlIHVzIGEgdmFsdWUgb2YgRQorICAvLyB2IGlzIGEg
bHZhbHVlIG9mIEUKKyAgLy8geCwgeSBhcmUgcG9zc2libHkgY29uc3QgdmFsdWVzIG9mIEUKKyAg
Ly8gcyBpcyBhIHZhbHVlIG9mIFQKKyAgLy8gcSBpcyBhIHZhbHVlIHNhdGlzZnlpbmcgcmVxdWly
ZW1lbnRzIG9mIHNlZWRfc2VxdWVuY2UKKyAgLy8geiBpcyBhIHZhbHVlIG9mIHR5cGUgdW5zaWdu
ZWQgbG9uZyBsb25nCisgIC8vIG9zIGlzIGEgc29tZSBzcGVjaWFsaXphdGlvbiBvZiBiYXNpY19v
c3RyZWFtCisgIC8vIGlzIGlzIGEgc29tZSBzcGVjaWFsaXphdGlvbiBvZiBiYXNpY19pc3RyZWFt
CisKKyAgdXNpbmcgRSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Tm9uc2VjdXJlVVJCR0Jhc2U8
c3RkOjptaW5zdGRfcmFuZD47CisKKyAgdXNpbmcgVCA9IHR5cGVuYW1lIEU6OnJlc3VsdF90eXBl
OworCisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPEU+Ojp2YWx1
ZSwKKyAgICAgICAgICAgICAgICAiTm9uc2VjdXJlVVJCR0Jhc2Ugc2hvdWxkIG5vdCBiZSBjb3B5
IGNvbnN0cnVjdGlibGUiKTsKKworICBzdGF0aWNfYXNzZXJ0KCFhYnNsOjppc19jb3B5X2Fzc2ln
bmFibGU8RT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJOb25zZWN1cmVVUkJHQmFzZSBzaG91
bGQgbm90IGJlIGNvcHkgYXNzaWduYWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19t
b3ZlX2NvbnN0cnVjdGlibGU8RT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJOb25zZWN1cmVV
UkJHQmFzZSBzaG91bGQgYmUgbW92ZSBjb25zdHJ1Y3RpYmxlIik7CisKKyAgc3RhdGljX2Fzc2Vy
dChhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8RT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJO
b25zZWN1cmVVUkJHQmFzZSBzaG91bGQgYmUgbW92ZSBhc3NpZ25hYmxlIik7CisKKyAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEU+KCkoKSksIFQ+Ojp2
YWx1ZSwKKyAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3IoKSBtdXN0IGJl
IHJlc3VsdF90eXBlIik7CisKKyAgeworICAgIGNvbnN0IEUgeCwgeTsKKyAgICBVc2UoeCk7Cisg
ICAgVXNlKHkpOworCisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoeCA9
PSB5KSwgYm9vbD46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlIG9mIG9w
ZXJhdG9yPT0gbXVzdCBiZSBib29sIik7CisKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZSh4ICE9IHkpLCBib29sPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAicmV0
dXJuIHR5cGUgb2Ygb3BlcmF0b3I9PSBtdXN0IGJlIGJvb2wiKTsKKyAgfQorCisgIEUgZTsKKyAg
c3RkOjpzZWVkX3NlcSBxezEsIDIsIDN9OworCisgIEV7fTsKKyAgRXtxfTsKKworICAvLyBDb3B5
IGNvbnN0cnVjdG9yIG5vdCBzdXBwb3J0ZWQuCisgIC8vIEV7eH07CisKKyAgLy8gcmVzdWx0X3R5
cGUgc2VlZCBjb25zdHJ1Y3RvciBub3Qgc3VwcG9ydGVkLgorICAvLyBFe1R7MX19OworCisgIC8v
IE1vdmUgY29uc3RydWN0b3JzIGFyZSBzdXBwb3J0ZWQuCisgIHsKKyAgICBFIHRtcChxKTsKKyAg
ICBFIG0gPSBzdGQ6Om1vdmUodG1wKTsKKyAgICBFIG4oc3RkOjptb3ZlKG0pKTsKKyAgICBFWFBF
Q1RfVFJVRShlICE9IG4pOworICB9CisKKyAgLy8gQ29tcGFyaXNvbnMgd29yay4KKyAgeworICAg
IC8vIE1TVkMgZW1pdHMgZXJyb3IgMjcxOCB3aGVuIHVzaW5nIEVYUEVDVF9FUShlLCB4KQorICAg
IC8vICAqIGFjdHVhbCBwYXJhbWV0ZXIgd2l0aCBfX2RlY2xzcGVjKGFsaWduKCcjJykpIHdvbid0
IGJlIGFsaWduZWQKKyAgICBFIGEocSk7CisgICAgRSBiKHEpOworCisgICAgRVhQRUNUX1RSVUUo
YSAhPSBlKTsKKyAgICBFWFBFQ1RfVFJVRShhID09IGIpOworCisgICAgYSgpOworICAgIEVYUEVD
VF9UUlVFKGEgIT0gYik7CisgIH0KKworICAvLyBlLnNlZWQocykgbm90IHN1cHBvcnRlZC4KKwor
ICAvLyBbcmFuZC5yZXEuZW5nXSBzcGVjaWZpZXMgdGhlIHBhcmFtZXRlciBhcyAndW5zaWduZWQg
bG9uZyBsb25nJworICAvLyBlLmRpc2NhcmQodW5zaWduZWQgbG9uZyBsb25nKSBpcyBzdXBwb3J0
ZWQuCisgIHVuc2lnbmVkIGxvbmcgbG9uZyB6ID0gMTsgIC8vIE5PTElOVChydW50aW1lL2ludCkK
KyAgZS5kaXNjYXJkKHopOworfQorCitURVNUKE5vbnNlY3VyZVVSQkdCYXNlLCBTZWVkU2VxQ29u
c3RydWN0b3JJc1ZhbGlkKSB7CisgIHN0ZDo6c2VlZF9zZXEgc2VxOworICBFeGFtcGxlTm9uc2Vj
dXJlVVJCRyByYmcoc2VxKTsKK30KKworVEVTVChOb25zZWN1cmVVUkJHQmFzZSwgQ29tcGF0aWJs
ZVdpdGhEaXN0cmlidXRpb25VdGlscykgeworICBFeGFtcGxlTm9uc2VjdXJlVVJCRyByYmc7CisK
KyAgYWJzbDo6VW5pZm9ybShyYmcsIDAsIDEwMCk7CisgIGFic2w6OlVuaWZvcm0ocmJnLCAwLjUs
IDAuNyk7CisgIGFic2w6OlBvaXNzb248dWludDMyX3Q+KHJiZyk7CisgIGFic2w6OkV4cG9uZW50
aWFsPGZsb2F0PihyYmcpOworfQorCitURVNUKE5vbnNlY3VyZVVSQkdCYXNlLCBDb21wYXRpYmxl
V2l0aFN0ZERpc3RyaWJ1dGlvbnMpIHsKKyAgRXhhbXBsZU5vbnNlY3VyZVVSQkcgcmJnOworCisg
IHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPHVpbnQzMl90PigwLCAxMDApKHJiZyk7Cisg
IHN0ZDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxmbG9hdD4oKShyYmcpOworICBzdGQ6OmJl
cm5vdWxsaV9kaXN0cmlidXRpb24oMC4yKShyYmcpOworfQorCitURVNUKE5vbnNlY3VyZVVSQkdC
YXNlLCBDb25zZWN1dGl2ZURlZmF1bHRJbnN0YW5jZXNZaWVsZFVuaXF1ZVZhcmlhdGVzKSB7Cisg
IGNvbnN0IHNpemVfdCBrTnVtU2FtcGxlcyA9IDEyODsKKworICBFeGFtcGxlTm9uc2VjdXJlVVJC
RyByYmcxOworICBFeGFtcGxlTm9uc2VjdXJlVVJCRyByYmcyOworCisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwga051bVNhbXBsZXM7IGkrKykgeworICAgIEVYUEVDVF9ORShyYmcxKCksIHJiZzIo
KSk7CisgIH0KK30KKworVEVTVChOb25zZWN1cmVVUkJHQmFzZSwgRXF1YWxTZWVkU2VxdWVuY2Vz
WWllbGRFcXVhbFZhcmlhdGVzKSB7CisgIHN0ZDo6c2VlZF9zZXEgc2VxOworCisgIEV4YW1wbGVO
b25zZWN1cmVVUkJHIHJiZzEoc2VxKTsKKyAgRXhhbXBsZU5vbnNlY3VyZVVSQkcgcmJnMihzZXEp
OworCisgIC8vIEV4YW1wbGVOb25zZWN1cmVVUkJHIHJiZzMoezEsIDIsIDN9KTsgIC8vIFNob3Vs
ZCBub3QgY29tcGlsZS4KKworICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7
CisgICAgRVhQRUNUX0VRKHJiZzEoKSwgcmJnMigpKTsKKyAgfQorCisgIHJiZzEuZGlzY2FyZCgx
MDApOworICByYmcyLmRpc2NhcmQoMTAwKTsKKworICAvLyBUaGUgc2VxdWVuY2VzIHNob3VsZCBj
b250aW51ZSBhZnRlciBkaXNjYXJkaW5nCisgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICBFWFBFQ1RfRVEocmJnMSgpLCByYmcyKCkpOworICB9Cit9CisKKy8vIFRo
aXMgaXMgYSBQUk5HLWNvbXBhdGlibGUgdHlwZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gdGVz
dAorLy8gdGhhdCBOb25zZWN1cmVVUkJHQmFzZTo6U2VlZGVyIGNhbiBjb3JyZWN0bHkgaGFuZGxl
IGl0ZXJhdG9ycworLy8gdG8gYXJiaXRyYXJ5IG5vbi11aW50MzJfdCBzaXplIHR5cGVzLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgU2VlZGVyVGVzdEVuZ2luZSB7CisgIHVzaW5nIHJl
c3VsdF90eXBlID0gVDsKKworICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1pbikoKSB7
CisgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWluKSgpOwor
ICB9CisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUobWF4KSgpIHsKKyAgICByZXR1cm4g
KHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCk7CisgIH0KKworICB0ZW1w
bGF0ZSA8Y2xhc3MgU2VlZFNlcXVlbmNlLAorICAgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICAgICAgICAgICAhc3RkOjppc19zYW1lPFNlZWRT
ZXF1ZW5jZSwgU2VlZGVyVGVzdEVuZ2luZT46OnZhbHVlPj4KKyAgZXhwbGljaXQgU2VlZGVyVGVz
dEVuZ2luZShTZWVkU2VxdWVuY2UmJiBzZXEpIHsKKyAgICBzZWVkKHNlcSk7CisgIH0KKworICBT
ZWVkZXJUZXN0RW5naW5lKGNvbnN0IFNlZWRlclRlc3RFbmdpbmUmKSA9IGRlZmF1bHQ7CisgIFNl
ZWRlclRlc3RFbmdpbmUmIG9wZXJhdG9yPShjb25zdCBTZWVkZXJUZXN0RW5naW5lJikgPSBkZWZh
dWx0OworICBTZWVkZXJUZXN0RW5naW5lKFNlZWRlclRlc3RFbmdpbmUmJikgPSBkZWZhdWx0Owor
ICBTZWVkZXJUZXN0RW5naW5lJiBvcGVyYXRvcj0oU2VlZGVyVGVzdEVuZ2luZSYmKSA9IGRlZmF1
bHQ7CisKKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpIHsgcmV0dXJuIHN0YXRlWzBdOyB9CisK
KyAgdGVtcGxhdGUgPGNsYXNzIFNlZWRTZXF1ZW5jZT4KKyAgdm9pZCBzZWVkKFNlZWRTZXF1ZW5j
ZSYmIHNlcSkgeworICAgIHN0ZDo6ZmlsbChzdGQ6OmJlZ2luKHN0YXRlKSwgc3RkOjplbmQoc3Rh
dGUpLCBUKDApKTsKKyAgICBzZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihzdGF0ZSksIHN0ZDo6ZW5k
KHN0YXRlKSk7CisgIH0KKworICBUIHN0YXRlWzJdOworfTsKKworVEVTVChOb25zZWN1cmVVUkJH
QmFzZSwgU2VlZGVyV29ya3NGb3JVMzIpIHsKKyAgdXNpbmcgVTMyID0KKyAgICAgIGFic2w6OnJh
bmRvbV9pbnRlcm5hbDo6Tm9uc2VjdXJlVVJCR0Jhc2U8U2VlZGVyVGVzdEVuZ2luZTx1aW50MzJf
dD4+OworICBVMzIgeDsKKyAgRVhQRUNUX05FKDAsIHgoKSk7Cit9CisKK1RFU1QoTm9uc2VjdXJl
VVJCR0Jhc2UsIFNlZWRlcldvcmtzRm9yVTY0KSB7CisgIHVzaW5nIFU2NCA9CisgICAgICBhYnNs
OjpyYW5kb21faW50ZXJuYWw6Ok5vbnNlY3VyZVVSQkdCYXNlPFNlZWRlclRlc3RFbmdpbmU8dWlu
dDY0X3Q+PjsKKworICBVNjQgeDsKKyAgRVhQRUNUX05FKDAsIHgoKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcGNnX2VuZ2luZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVy
bmFsL3BjZ19lbmdpbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWRmNGVhZmZmYTRiYWE5NzYyOTVhZTE5MTk5
ODJjZDlmODRjZDlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3Bj
Z19lbmdpbmUuaApAQCAtMCwwICsxLDMwNSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfUENHX0VOR0lORV9I
XworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9QQ0dfRU5HSU5FX0hfCisKKyNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKKyNpbmNsdWRl
ICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL251bWVyaWMvaW50MTI4
LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1hdGguaCIKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oIgorCituYW1lc3Bh
Y2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gcGNnX2VuZ2luZSBp
cyBhIHNpbXBsaWZpZWQgaW1wbGVtZW50YXRpb24gb2YgTWVsaXNzYSBPJ05laWwncyBQQ0cgZW5n
aW5lIGluCisvLyBDKysuICBQQ0cgY29tYmluZXMgYSBsaW5lYXIgY29uZ3J1ZW50aWFsIGdlbmVy
YXRvciAoTENHKSB3aXRoIG91dHB1dCBzdGF0ZQorLy8gbWl4aW5nIGZ1bmN0aW9ucyB0byBnZW5l
cmF0ZSBlYWNoIHJhbmRvbSB2YXJpYXRlLiAgcGNnX2VuZ2luZSBzdXBwb3J0cyBvbmx5IGEKKy8v
IHNpbmdsZSBzZXF1ZW5jZSAob25lc2VxKSwgYW5kIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtcy4K
Ky8vCisvLyBwY2dfZW5naW5lIGlzIHBhcmFtZXRlcml6ZWQgYnkgdHdvIHR5cGVzOgorLy8gICBQ
YXJhbXMsIHdoaWNoIHByb3ZpZGVzIHRoZSBtdWx0aXBsaWVyIGFuZCBpbmNyZW1lbnQgdmFsdWVz
OworLy8gICBNaXgsIHdoaWNoIG1peGVzIHRoZSBzdGF0ZSBpbnRvIHRoZSByZXN1bHQuCisvLwor
dGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtcywgdHlwZW5hbWUgTWl4PgorY2xhc3MgcGNnX2VuZ2lu
ZSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVuYW1lIFBhcmFtczo6c3RhdGVf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTWl4OjpzdGF0ZV90
eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIkNsYXNzLXRlbXBsYXRlIGFic2w6OnBjZ19l
bmdpbmUgbXVzdCBiZSBwYXJhbWV0ZXJpemVkIGJ5ICIKKyAgICAgICAgICAgICAgICAiUGFyYW1z
IGFuZCBNaXggd2l0aCBpZGVudGljYWwgc3RhdGVfdHlwZSIpOworCisgIHN0YXRpY19hc3NlcnQo
c3RkOjppc191bnNpZ25lZDx0eXBlbmFtZSBNaXg6OnJlc3VsdF90eXBlPjo6dmFsdWUsCisgICAg
ICAgICAgICAgICAgIkNsYXNzLXRlbXBsYXRlIGFic2w6OnBjZ19lbmdpbmUgbXVzdCBiZSBwYXJh
bWV0ZXJpemVkIGJ5ICIKKyAgICAgICAgICAgICAgICAiYW4gdW5zaWduZWQgTWl4OjpyZXN1bHRf
dHlwZSIpOworCisgIHVzaW5nIHBhcmFtc190eXBlID0gUGFyYW1zOworICB1c2luZyBtaXhfdHlw
ZSA9IE1peDsKKyAgdXNpbmcgc3RhdGVfdHlwZSA9IHR5cGVuYW1lIE1peDo6c3RhdGVfdHlwZTsK
KworIHB1YmxpYzoKKyAgLy8gQysrMTEgVVJCRyBpbnRlcmZhY2U6CisgIHVzaW5nIHJlc3VsdF90
eXBlID0gdHlwZW5hbWUgTWl4OjpyZXN1bHRfdHlwZTsKKworICBzdGF0aWMgY29uc3RleHByIHJl
c3VsdF90eXBlKG1pbikoKSB7CisgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3Vs
dF90eXBlPjo6bWluKSgpOworICB9CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZSht
YXgpKCkgeworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1h
eCkoKTsKKyAgfQorCisgIGV4cGxpY2l0IHBjZ19lbmdpbmUodWludDY0X3Qgc2VlZF92YWx1ZSA9
IDApIHsgc2VlZChzZWVkX3ZhbHVlKTsgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBTZWVkU2VxdWVu
Y2UsCisgICAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PAor
ICAgICAgICAgICAgICAgICFzdGQ6OmlzX3NhbWU8U2VlZFNlcXVlbmNlLCBwY2dfZW5naW5lPjo6
dmFsdWU+PgorICBleHBsaWNpdCBwY2dfZW5naW5lKFNlZWRTZXF1ZW5jZSYmIHNlcSkgeworICAg
IHNlZWQoc2VxKTsKKyAgfQorCisgIHBjZ19lbmdpbmUoY29uc3QgcGNnX2VuZ2luZSYpID0gZGVm
YXVsdDsKKyAgcGNnX2VuZ2luZSYgb3BlcmF0b3I9KGNvbnN0IHBjZ19lbmdpbmUmKSA9IGRlZmF1
bHQ7CisgIHBjZ19lbmdpbmUocGNnX2VuZ2luZSYmKSA9IGRlZmF1bHQ7CisgIHBjZ19lbmdpbmUm
IG9wZXJhdG9yPShwY2dfZW5naW5lJiYpID0gZGVmYXVsdDsKKworICByZXN1bHRfdHlwZSBvcGVy
YXRvcigpKCkgeworICAgIC8vIEFkdmFuY2UgdGhlIExDRyBzdGF0ZSwgYWx3YXlzIHVzaW5nIHRo
ZSBuZXcgdmFsdWUgdG8gZ2VuZXJhdGUgdGhlIG91dHB1dC4KKyAgICBzdGF0ZV8gPSBsY2coc3Rh
dGVfKTsKKyAgICByZXR1cm4gTWl4e30oc3RhdGVfKTsKKyAgfQorCisgIHZvaWQgc2VlZCh1aW50
NjRfdCBzZWVkX3ZhbHVlID0gMCkgeworICAgIHN0YXRlX3R5cGUgdG1wID0gc2VlZF92YWx1ZTsK
KyAgICBzdGF0ZV8gPSBsY2codG1wICsgUGFyYW1zOjppbmNyZW1lbnQoKSk7CisgIH0KKworICB0
ZW1wbGF0ZSA8Y2xhc3MgU2VlZFNlcXVlbmNlPgorICB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZf
dDwKKyAgICAgICFzdGQ6OmlzX2NvbnZlcnRpYmxlPFNlZWRTZXF1ZW5jZSwgdWludDY0X3Q+Ojp2
YWx1ZSwgdm9pZD4KKyAgc2VlZChTZWVkU2VxdWVuY2UmJiBzZXEpIHsKKyAgICByZXNlZWQoc2Vx
KTsKKyAgfQorCisgIHZvaWQgZGlzY2FyZCh1aW50NjRfdCBjb3VudCkgeyBzdGF0ZV8gPSBhZHZh
bmNlKHN0YXRlXywgY291bnQpOyB9CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBjZ19lbmdp
bmUmIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIHN0YXRlXyA9PSBvdGhlci5zdGF0ZV87Cisg
IH0KKworICBib29sIG9wZXJhdG9yIT0oY29uc3QgcGNnX2VuZ2luZSYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIENoYXJULCBj
bGFzcyBUcmFpdHM+CisgIGZyaWVuZCB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwoc2l6ZW9m
KHN0YXRlX3R5cGUpID09IDE2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiY+CisgIG9wZXJhdG9yPDwoCisgICAg
ICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9zLCAgLy8gTk9MSU5UKHJ1bnRp
bWUvcmVmZXJlbmNlcykKKyAgICAgIGNvbnN0IHBjZ19lbmdpbmUmIGVuZ2luZSkgeworICAgIGF1
dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZlcihvcyk7
CisgICAgcmFuZG9tX2ludGVybmFsOjpzdHJlYW1fdTEyOF9oZWxwZXI8c3RhdGVfdHlwZT4gaGVs
cGVyOworICAgIGhlbHBlci53cml0ZShwY2dfZW5naW5lOjpwYXJhbXNfdHlwZTo6bXVsdGlwbGll
cigpLCBvcyk7CisgICAgb3MgPDwgb3MuZmlsbCgpOworICAgIGhlbHBlci53cml0ZShwY2dfZW5n
aW5lOjpwYXJhbXNfdHlwZTo6aW5jcmVtZW50KCksIG9zKTsKKyAgICBvcyA8PCBvcy5maWxsKCk7
CisgICAgaGVscGVyLndyaXRlKGVuZ2luZS5zdGF0ZV8sIG9zKTsKKyAgICByZXR1cm4gb3M7Cisg
IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KKyAgZnJpZW5kIHR5
cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PChzaXplb2Yoc3RhdGVfdHlwZSkgPD0gOCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQs
IFRyYWl0cz4mPgorICBvcGVyYXRvcjw8KAorICAgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJU
LCBUcmFpdHM+JiBvcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICBjb25z
dCBwY2dfZW5naW5lJiBlbmdpbmUpIHsKKyAgICBhdXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFs
OjptYWtlX29zdHJlYW1fc3RhdGVfc2F2ZXIob3MpOworICAgIG9zIDw8IHBjZ19lbmdpbmU6OnBh
cmFtc190eXBlOjptdWx0aXBsaWVyKCkgPDwgb3MuZmlsbCgpOworICAgIG9zIDw8IHBjZ19lbmdp
bmU6OnBhcmFtc190eXBlOjppbmNyZW1lbnQoKSA8PCBvcy5maWxsKCk7CisgICAgb3MgPDwgZW5n
aW5lLnN0YXRlXzsKKyAgICByZXR1cm4gb3M7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hh
clQsIGNsYXNzIFRyYWl0cz4KKyAgZnJpZW5kIHR5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PChz
aXplb2Yoc3RhdGVfdHlwZSkgPT0gMTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+Jj4KKyAgb3BlcmF0b3I+PigK
KyAgICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAvLyBOT0xJTlQo
cnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgcGNnX2VuZ2luZSYgZW5naW5lKSB7ICAgICAgICAg
ICAgICAgICAgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgcmFuZG9tX2ludGVy
bmFsOjpzdHJlYW1fdTEyOF9oZWxwZXI8c3RhdGVfdHlwZT4gaGVscGVyOworICAgIGF1dG8gbXVs
dCA9IGhlbHBlci5yZWFkKGlzKTsKKyAgICBhdXRvIGluYyA9IGhlbHBlci5yZWFkKGlzKTsKKyAg
ICBhdXRvIHRtcCA9IGhlbHBlci5yZWFkKGlzKTsKKyAgICBpZiAobXVsdCAhPSBwY2dfZW5naW5l
OjpwYXJhbXNfdHlwZTo6bXVsdGlwbGllcigpIHx8CisgICAgICAgIGluYyAhPSBwY2dfZW5naW5l
OjpwYXJhbXNfdHlwZTo6aW5jcmVtZW50KCkpIHsKKyAgICAgIC8vIHNpZ25hbCBmYWlsdXJlIGJ5
IHNldHRpbmcgdGhlIGZhaWxiaXQuCisgICAgICBpcy5zZXRzdGF0ZShpcy5yZHN0YXRlKCkgfCBz
dGQ6Omlvc19iYXNlOjpmYWlsYml0KTsKKyAgICB9CisgICAgaWYgKCFpcy5mYWlsKCkpIHsKKyAg
ICAgIGVuZ2luZS5zdGF0ZV8gPSB0bXA7CisgICAgfQorICAgIHJldHVybiBpczsKKyAgfQorCisg
IHRlbXBsYXRlIDxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgorICBmcmllbmQgdHlwZW5hbWUg
YWJzbDo6ZW5hYmxlX2lmX3Q8KHNpemVvZihzdGF0ZV90eXBlKSA8PSA4KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRz
PiY+CisgIG9wZXJhdG9yPj4oCisgICAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0
cz4mIGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgIHBjZ19lbmdpbmUm
IGVuZ2luZSkgeyAgICAgICAgICAgICAgICAgICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2Vz
KQorICAgIHN0YXRlX3R5cGUgbXVsdHt9LCBpbmN7fSwgdG1we307CisgICAgaXMgPj4gbXVsdCA+
PiBpbmMgPj4gdG1wOworICAgIGlmIChtdWx0ICE9IHBjZ19lbmdpbmU6OnBhcmFtc190eXBlOjpt
dWx0aXBsaWVyKCkgfHwKKyAgICAgICAgaW5jICE9IHBjZ19lbmdpbmU6OnBhcmFtc190eXBlOjpp
bmNyZW1lbnQoKSkgeworICAgICAgLy8gc2lnbmFsIGZhaWx1cmUgYnkgc2V0dGluZyB0aGUgZmFp
bGJpdC4KKyAgICAgIGlzLnNldHN0YXRlKGlzLnJkc3RhdGUoKSB8IHN0ZDo6aW9zX2Jhc2U6OmZh
aWxiaXQpOworICAgIH0KKyAgICBpZiAoIWlzLmZhaWwoKSkgeworICAgICAgZW5naW5lLnN0YXRl
XyA9IHRtcDsKKyAgICB9CisgICAgcmV0dXJuIGlzOworICB9CisKKyBwcml2YXRlOgorICBzdGF0
ZV90eXBlIHN0YXRlXzsKKworICAvLyBSZXR1cm5zIHRoZSBsaW5lYXItY29uZ3J1ZW50aWFsIGdl
bmVyYXRvciBuZXh0IHN0YXRlLgorICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBzdGF0ZV90eXBl
IGxjZyhzdGF0ZV90eXBlIHMpIHsKKyAgICByZXR1cm4gcyAqIFBhcmFtczo6bXVsdGlwbGllcigp
ICsgUGFyYW1zOjppbmNyZW1lbnQoKTsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIGxpbmVhci1j
b25ncnVlbnRpYWwgYXJiaXRyYXJ5IHNlZWsgc3RhdGUuCisgIGlubGluZSBzdGF0ZV90eXBlIGFk
dmFuY2Uoc3RhdGVfdHlwZSBzLCB1aW50NjRfdCBuKSBjb25zdCB7CisgICAgc3RhdGVfdHlwZSBt
dWx0ID0gUGFyYW1zOjptdWx0aXBsaWVyKCk7CisgICAgc3RhdGVfdHlwZSBpbmMgPSBQYXJhbXM6
OmluY3JlbWVudCgpOworICAgIHN0YXRlX3R5cGUgbSA9IDE7CisgICAgc3RhdGVfdHlwZSBpID0g
MDsKKyAgICB3aGlsZSAobiA+IDApIHsKKyAgICAgIGlmIChuICYgMSkgeworICAgICAgICBtICo9
IG11bHQ7CisgICAgICAgIGkgPSBpICogbXVsdCArIGluYzsKKyAgICAgIH0KKyAgICAgIGluYyA9
IChtdWx0ICsgMSkgKiBpbmM7CisgICAgICBtdWx0ICo9IG11bHQ7CisgICAgICBuID4+PSAxOwor
ICAgIH0KKyAgICByZXR1cm4gbSAqIHMgKyBpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFNl
ZWRTZXF1ZW5jZT4KKyAgdm9pZCByZXNlZWQoU2VlZFNlcXVlbmNlJiBzZXEpIHsKKyAgICB1c2lu
ZyBzZXF1ZW5jZV9yZXN1bHRfdHlwZSA9IHR5cGVuYW1lIFNlZWRTZXF1ZW5jZTo6cmVzdWx0X3R5
cGU7CisgICAgY29uc3RleHByIHNpemVfdCBrQnVmZmVyU2l6ZSA9CisgICAgICAgIHNpemVvZihz
dGF0ZV90eXBlKSAvIHNpemVvZihzZXF1ZW5jZV9yZXN1bHRfdHlwZSk7CisgICAgc2VxdWVuY2Vf
cmVzdWx0X3R5cGUgYnVmZmVyW2tCdWZmZXJTaXplXTsKKyAgICBzZXEuZ2VuZXJhdGUoc3RkOjpi
ZWdpbihidWZmZXIpLCBzdGQ6OmVuZChidWZmZXIpKTsKKyAgICAvLyBDb252ZXJ0IHRoZSBzZWVk
IG91dHB1dCB0byBhIHNpbmdsZSBzdGF0ZSB2YWx1ZS4KKyAgICBzdGF0ZV90eXBlIHRtcCA9IGJ1
ZmZlclswXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGtCdWZmZXJTaXplOyBpKyspIHsK
KyAgICAgIHRtcCA8PD0gKHNpemVvZihzZXF1ZW5jZV9yZXN1bHRfdHlwZSkgKiA4KTsKKyAgICAg
IHRtcCB8PSBidWZmZXJbaV07CisgICAgfQorICAgIHN0YXRlXyA9IGxjZyh0bXAgKyBwYXJhbXNf
dHlwZTo6aW5jcmVtZW50KCkpOworICB9Cit9OworCisvLyBQYXJhbWV0ZXJpemVkIGltcGxlbWVu
dGF0aW9uIG9mIHRoZSBQQ0cgMTI4LWJpdCBvbmVzZXEgc3RhdGUuCisvLyBUaGlzIHByb3ZpZGVz
IHN0YXRlX3R5cGUsIG11bHRpcGxpZXIsIGFuZCBpbmNyZW1lbnQgZm9yIHBjZ19lbmdpbmUuCit0
ZW1wbGF0ZSA8dWludDY0X3Qga011bHRBLCB1aW50NjRfdCBrTXVsdEIsIHVpbnQ2NF90IGtJbmNB
LCB1aW50NjRfdCBrSW5jQj4KK2NsYXNzIHBjZzEyOF9wYXJhbXMgeworIHB1YmxpYzoKKyNpZiBB
QlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOAorICB1c2luZyBzdGF0ZV90eXBlID0gX191aW50MTI4
X3Q7CisgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIHN0YXRlX3R5cGUgbWFrZV91MTI4KHVpbnQ2
NF90IGEsIHVpbnQ2NF90IGIpIHsKKyAgICByZXR1cm4gKHN0YXRpY19jYXN0PF9fdWludDEyOF90
PihhKSA8PCA2NCkgfCBiOworICB9CisjZWxzZQorICB1c2luZyBzdGF0ZV90eXBlID0gYWJzbDo6
dWludDEyODsKKyAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgc3RhdGVfdHlwZSBtYWtlX3UxMjgo
dWludDY0X3QgYSwgdWludDY0X3QgYikgeworICAgIHJldHVybiBhYnNsOjpNYWtlVWludDEyOChh
LCBiKTsKKyAgfQorI2VuZGlmCisKKyAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgc3RhdGVfdHlw
ZSBtdWx0aXBsaWVyKCkgeworICAgIHJldHVybiBtYWtlX3UxMjgoa011bHRBLCBrTXVsdEIpOwor
ICB9CisgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIHN0YXRlX3R5cGUgaW5jcmVtZW50KCkgewor
ICAgIHJldHVybiBtYWtlX3UxMjgoa0luY0EsIGtJbmNCKTsKKyAgfQorfTsKKworLy8gSW1wbGVt
ZW50YXRpb24gb2YgdGhlIFBDRyB4c2xfcnJfMTI4XzY0IDEyOC1iaXQgbWl4aW5nIGZ1bmN0aW9u
LCB3aGljaAorLy8gYWNjZXB0cyBhbiBpbnB1dCBvZiBzdGF0ZV90eXBlIGFuZCBtaXhlcyBpdCBp
bnRvIGFuIG91dHB1dCBvZiByZXN1bHRfdHlwZS4KK3N0cnVjdCBwY2dfeHNsX3JyXzEyOF82NCB7
CisjaWYgQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgKKyAgdXNpbmcgc3RhdGVfdHlwZSA9IF9f
dWludDEyOF90OworI2Vsc2UKKyAgdXNpbmcgc3RhdGVfdHlwZSA9IGFic2w6OnVpbnQxMjg7Cisj
ZW5kaWYKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB1aW50NjRfdDsKKworICBpbmxpbmUgdWludDY0
X3Qgb3BlcmF0b3IoKShzdGF0ZV90eXBlIHN0YXRlKSB7CisgICAgLy8gVGhpcyBpcyBlcXVpdmFs
ZW50IHRvIHRoZSB4c2xfcnJfMTI4XzY0IG1peGluZyBmdW5jdGlvbi4KKyNpZiBBQlNMX0hBVkVf
SU5UUklOU0lDX0lOVDEyOAorICAgIHVpbnQ2NF90IHJvdGF0ZSA9IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihzdGF0ZSA+PiAxMjJ1KTsKKyAgICBzdGF0ZSBePSBzdGF0ZSA+PiA2NDsKKyAgICB1aW50
NjRfdCBzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRlKTsKKyNlbHNlCisgICAgdWludDY0
X3QgaCA9IFVpbnQxMjhIaWdoNjQoc3RhdGUpOworICAgIHVpbnQ2NF90IHJvdGF0ZSA9IGggPj4g
NTh1OworICAgIHVpbnQ2NF90IHMgPSBVaW50MTI4TG93NjQoc3RhdGUpIF4gaDsKKyNlbmRpZgor
ICAgIHJldHVybiByYW5kb21faW50ZXJuYWw6OnJvdHIocywgcm90YXRlKTsKKyAgfQorfTsKKwor
Ly8gUGFyYW1ldGVyaXplZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUENHIDY0LWJpdCBvbmVzZXEg
c3RhdGUuCisvLyBUaGlzIHByb3ZpZGVzIHN0YXRlX3R5cGUsIG11bHRpcGxpZXIsIGFuZCBpbmNy
ZW1lbnQgZm9yIHBjZ19lbmdpbmUuCit0ZW1wbGF0ZSA8dWludDY0X3Qga011bHQsIHVpbnQ2NF90
IGtJbmM+CitjbGFzcyBwY2c2NF9wYXJhbXMgeworIHB1YmxpYzoKKyAgdXNpbmcgc3RhdGVfdHlw
ZSA9IHVpbnQ2NF90OworICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBzdGF0ZV90eXBlIG11bHRp
cGxpZXIoKSB7IHJldHVybiBrTXVsdDsgfQorICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBzdGF0
ZV90eXBlIGluY3JlbWVudCgpIHsgcmV0dXJuIGtJbmM7IH0KK307CisKKy8vIEltcGxlbWVudGF0
aW9uIG9mIHRoZSBQQ0cgeHNoX3JyXzY0XzMyIDY0LWJpdCBtaXhpbmcgZnVuY3Rpb24sIHdoaWNo
IGFjY2VwdHMKKy8vIGFuIGlucHV0IG9mIHN0YXRlX3R5cGUgYW5kIG1peGVzIGl0IGludG8gYW4g
b3V0cHV0IG9mIHJlc3VsdF90eXBlLgorc3RydWN0IHBjZ194c2hfcnJfNjRfMzIgeworICB1c2lu
ZyBzdGF0ZV90eXBlID0gdWludDY0X3Q7CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdWludDMyX3Q7
CisgIGlubGluZSB1aW50MzJfdCBvcGVyYXRvcigpKHVpbnQ2NF90IHN0YXRlKSB7CisgICAgcmV0
dXJuIHJhbmRvbV9pbnRlcm5hbDo6cm90cigKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KCgoc3RhdGUgPj4gMTgpIF4gc3RhdGUpID4+IDI3KSwgc3RhdGUgPj4gNTkpOworICB9Cit9Owor
CisvLyBTdGFibGUgcGNnX2VuZ2luZSBpbXBsZW1lbnRhdGlvbnM6CisvLyBUaGlzIGlzIGEgNjQt
Yml0IGdlbmVyYXRvciB1c2luZyAxMjgtYml0cyBvZiBzdGF0ZS4KKy8vIFRoZSBvdXRwdXQgc2Vx
dWVuY2UgaXMgZXF1aXZhbGVudCB0byBNZWxpc3NhIE8nTmVpbCdzIHBjZzY0X29uZXNlcS4KK3Vz
aW5nIHBjZzY0XzIwMThfZW5naW5lID0gcGNnX2VuZ2luZTwKKyAgICByYW5kb21faW50ZXJuYWw6
OnBjZzEyOF9wYXJhbXM8MHgyMzYwZWQwNTFmYzY1ZGE0dWxsLCAweDQzODVkZjY0OWZjY2Y2NDV1
bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTg1MWY0MmQ0Yzk1N2Yy
ZCwgMHgxNDA1N2I3ZWY3Njc4MTRmPiwKKyAgICByYW5kb21faW50ZXJuYWw6OnBjZ194c2xfcnJf
MTI4XzY0PjsKKworLy8gVGhpcyBpcyBhIDMyLWJpdCBnZW5lcmF0b3IgdXNpbmcgNjQtYml0cyBv
ZiBzdGF0ZS4KKy8vIFRoaXMgaXMgZXF1aXZhbGVudCB0byBNZWxpc3NhIE8nTmVpbCdzIHBjZzMy
X29uZXNlcS4KK3VzaW5nIHBjZzMyXzIwMThfZW5naW5lID0gcGNnX2VuZ2luZTwKKyAgICByYW5k
b21faW50ZXJuYWw6OnBjZzY0X3BhcmFtczwweDU4NTFmNDJkNGM5NTdmMmR1bGwsIDB4MTQwNTdi
N2VmNzY3ODE0ZnVsbD4sCisgICAgcmFuZG9tX2ludGVybmFsOjpwY2dfeHNoX3JyXzY0XzMyPjsK
KworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
KworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9QQ0dfRU5HSU5FX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcGNnX2VuZ2luZV90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL3BjZ19lbmdpbmVfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDc2M2U4OWViNTgw
NWQwYmEzNjcyNmYzNGM2ZDJjMzAzZmFkZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL3BjZ19lbmdpbmVfdGVzdC5jYwpAQCAtMCwwICsxLDYzOCBAQAorLy8gQ29w
eXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9wY2dfZW5naW5lLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8Yml0c2V0PgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgorCisjaW5j
bHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
ImFic2wvcmFuZG9tL2ludGVybmFsL2V4cGxpY2l0X3NlZWRfc2VxLmgiCisjaW5jbHVkZSAiYWJz
bC90aW1lL2Nsb2NrLmgiCisKKyNkZWZpbmUgVVBEQVRFX0dPTERFTiAwCisKK25hbWVzcGFjZSB7
CisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6RXhwbGljaXRTZWVkU2VxOwordXNpbmcg
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpwY2czMl8yMDE4X2VuZ2luZTsKK3VzaW5nIGFic2w6OnJh
bmRvbV9pbnRlcm5hbDo6cGNnNjRfMjAxOF9lbmdpbmU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBF
bmdpbmVUeXBlPgorY2xhc3MgUENHRW5naW5lVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
e307CisKK3VzaW5nIEVuZ2luZVR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczxwY2c2NF8yMDE4X2Vu
Z2luZSwgcGNnMzJfMjAxOF9lbmdpbmU+OworCitUWVBFRF9URVNUX1NVSVRFKFBDR0VuZ2luZVRl
c3QsIEVuZ2luZVR5cGVzKTsKKworVFlQRURfVEVTVChQQ0dFbmdpbmVUZXN0LCBWZXJpZnlSZXNl
ZWRDaGFuZ2VzQWxsVmFsdWVzKSB7CisgIHVzaW5nIGVuZ2luZV90eXBlID0gVHlwZVBhcmFtOwor
ICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIGVuZ2luZV90eXBlOjpyZXN1bHRfdHlwZTsK
KworICBjb25zdCBzaXplX3Qga051bU91dHB1dHMgPSAxNjsKKyAgZW5naW5lX3R5cGUgZW5naW5l
OworCisgIC8vIE1TVkMgZW1pdHMgZXJyb3IgMjcxOSB3aXRob3V0IHRoZSB1c2Ugb2Ygc3RkOjpy
ZWYgYmVsb3cuCisgIC8vICAqIGZvcm1hbCBwYXJhbWV0ZXIgd2l0aCBfX2RlY2xzcGVjKGFsaWdu
KCcjJykpIHdvbid0IGJlIGFsaWduZWQKKworICB7CisgICAgc3RkOjpzZWVkX3NlcSBzZXExezEs
IDIsIDMsIDQsIDUsIDYsIDd9OworICAgIGVuZ2luZS5zZWVkKHNlcTEpOworICB9CisgIHJlc3Vs
dF90eXBlIGFba051bU91dHB1dHNdOworICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4oYSksIHN0
ZDo6ZW5kKGEpLCBzdGQ6OnJlZihlbmdpbmUpKTsKKworICB7CisgICAgc3RkOjpyYW5kb21fZGV2
aWNlIHJkOworICAgIHN0ZDo6c2VlZF9zZXEgc2VxMntyZCgpLCByZCgpLCByZCgpfTsKKyAgICBl
bmdpbmUuc2VlZChzZXEyKTsKKyAgfQorICByZXN1bHRfdHlwZSBiW2tOdW1PdXRwdXRzXTsKKyAg
c3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKGIpLCBzdGQ6OmVuZChiKSwgc3RkOjpyZWYoZW5naW5l
KSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgdHdvIHVuY29ycmVsYXRlZCB2YWx1ZXMgaGF2ZSB+NTAl
IG9mIHRoZXJlIGJpdHMgaW4gY29tbW9uLiBVc2UKKyAgLy8gYSAxMCUgbWFyZ2luLW9mLWVycm9y
IHRvIHJlZHVjZSBmbGFraW5lc3MuCisgIHNpemVfdCBjaGFuZ2VkX2JpdHMgPSAwOworICBzaXpl
X3QgdW5jaGFuZ2VkX2JpdHMgPSAwOworICBzaXplX3QgdG90YWxfc2V0ID0gMDsKKyAgc2l6ZV90
IHRvdGFsX2JpdHMgPSAwOworICBzaXplX3QgZXF1YWxfY291bnQgPSAwOworICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGtOdW1PdXRwdXRzOyArK2kpIHsKKyAgICBlcXVhbF9jb3VudCArPSAoYVtp
XSA9PSBiW2ldKSA/IDEgOiAwOworICAgIHN0ZDo6Yml0c2V0PHNpemVvZihyZXN1bHRfdHlwZSkg
KiA4PiBiaXRzZXQoYVtpXSBeIGJbaV0pOworICAgIGNoYW5nZWRfYml0cyArPSBiaXRzZXQuY291
bnQoKTsKKyAgICB1bmNoYW5nZWRfYml0cyArPSBiaXRzZXQuc2l6ZSgpIC0gYml0c2V0LmNvdW50
KCk7CisKKyAgICBzdGQ6OmJpdHNldDxzaXplb2YocmVzdWx0X3R5cGUpICogOD4gYV9zZXQoYVtp
XSk7CisgICAgc3RkOjpiaXRzZXQ8c2l6ZW9mKHJlc3VsdF90eXBlKSAqIDg+IGJfc2V0KGJbaV0p
OworICAgIHRvdGFsX3NldCArPSBhX3NldC5jb3VudCgpICsgYl9zZXQuY291bnQoKTsKKyAgICB0
b3RhbF9iaXRzICs9IDIgKiA4ICogc2l6ZW9mKHJlc3VsdF90eXBlKTsKKyAgfQorICAvLyBPbiBh
dmVyYWdlLCBoYWxmIHRoZSBiaXRzIGFyZSBjaGFuZ2VkIGJldHdlZW4gdHdvIGNhbGxzLgorICBF
WFBFQ1RfTEUoY2hhbmdlZF9iaXRzLCAwLjYwICogKGNoYW5nZWRfYml0cyArIHVuY2hhbmdlZF9i
aXRzKSk7CisgIEVYUEVDVF9HRShjaGFuZ2VkX2JpdHMsIDAuNDAgKiAoY2hhbmdlZF9iaXRzICsg
dW5jaGFuZ2VkX2JpdHMpKTsKKworICAvLyB2ZXJpZnkgdXNpbmcgYSBxdWljayBub3JtYWwtYXBw
cm94aW1hdGlvbiB0byB0aGUgYmlub21pYWwuCisgIEVYUEVDVF9ORUFSKHRvdGFsX3NldCwgdG90
YWxfYml0cyAqIDAuNSwgNCAqIHN0ZDo6c3FydCh0b3RhbF9iaXRzKSkKKyAgICAgIDw8ICJAIiA8
PCB0b3RhbF9zZXQgLyBzdGF0aWNfY2FzdDxkb3VibGU+KHRvdGFsX2JpdHMpOworCisgIC8vIEFs
c28sIEFbaV0gPT0gQltpXSB3aXRoIHByb2JhYmlsaXR5ICgxL3JhbmdlKSAqIE4uCisgIC8vIEdp
dmUgdGhpcyBhIHByZXR0eSB3aWRlIGxhdGl0dWRlLCB0aG91Z2guCisgIGNvbnN0IGRvdWJsZSBr
RXhwZWN0ZWQgPSBrTnVtT3V0cHV0cyAvICgxLjAgKiBzaXplb2YocmVzdWx0X3R5cGUpICogOCk7
CisgIEVYUEVDVF9MRShlcXVhbF9jb3VudCwgMS4wICsga0V4cGVjdGVkKTsKK30KKworLy8gTnVt
YmVyIG9mIHZhbHVlcyB0aGF0IG5lZWRzIHRvIGJlIGNvbnN1bWVkIHRvIGNsZWFuIHR3byBzaXpl
cyBvZiBidWZmZXIKKy8vIGFuZCB0cmlnZ2VyIHRoaXJkIHJlZnJlc2guIChzbGlnaHRseSBvdmVy
ZXN0aW1hdGVzIHRoZSBhY3R1YWwgc3RhdGUgc2l6ZSkuCitjb25zdGV4cHIgc2l6ZV90IGtUd29C
dWZmZXJWYWx1ZXMgPSAxNjsKKworVFlQRURfVEVTVChQQ0dFbmdpbmVUZXN0LCBWZXJpZnlEaXNj
YXJkKSB7CisgIHVzaW5nIGVuZ2luZV90eXBlID0gVHlwZVBhcmFtOworCisgIGZvciAoc2l6ZV90
IG51bV91c2VkID0gMDsgbnVtX3VzZWQgPCBrVHdvQnVmZmVyVmFsdWVzOyArK251bV91c2VkKSB7
CisgICAgZW5naW5lX3R5cGUgZW5naW5lX3VzZWQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1fdXNlZDsgKytpKSB7CisgICAgICBlbmdpbmVfdXNlZCgpOworICAgIH0KKworICAgIGZv
ciAoc2l6ZV90IG51bV9kaXNjYXJkID0gMDsgbnVtX2Rpc2NhcmQgPCBrVHdvQnVmZmVyVmFsdWVz
OworICAgICAgICAgKytudW1fZGlzY2FyZCkgeworICAgICAgZW5naW5lX3R5cGUgZW5naW5lMSA9
IGVuZ2luZV91c2VkOworICAgICAgZW5naW5lX3R5cGUgZW5naW5lMiA9IGVuZ2luZV91c2VkOwor
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fZGlzY2FyZDsgKytpKSB7CisgICAgICAg
IGVuZ2luZTEoKTsKKyAgICAgIH0KKyAgICAgIGVuZ2luZTIuZGlzY2FyZChudW1fZGlzY2FyZCk7
CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtUd29CdWZmZXJWYWx1ZXM7ICsraSkgewor
ICAgICAgICBjb25zdCBhdXRvIHIxID0gZW5naW5lMSgpOworICAgICAgICBjb25zdCBhdXRvIHIy
ID0gZW5naW5lMigpOworICAgICAgICBBU1NFUlRfRVEocjEsIHIyKSA8PCAidXNlZD0iIDw8IG51
bV91c2VkIDw8ICIgZGlzY2FyZD0iIDw8IG51bV9kaXNjYXJkOworICAgICAgfQorICAgIH0KKyAg
fQorfQorCitUWVBFRF9URVNUKFBDR0VuZ2luZVRlc3QsIFN0cmVhbU9wZXJhdG9yc1Jlc3VsdCkg
eworICB1c2luZyBlbmdpbmVfdHlwZSA9IFR5cGVQYXJhbTsKKworICBzdGQ6Ondvc3RyaW5nc3Ry
ZWFtIG9zOworICBzdGQ6Ondpc3RyaW5nc3RyZWFtIGlzOworICBlbmdpbmVfdHlwZSBlbmdpbmU7
CisKKyAgRVhQRUNUX0VRKCYob3MgPDwgZW5naW5lKSwgJm9zKTsKKyAgRVhQRUNUX0VRKCYoaXMg
Pj4gZW5naW5lKSwgJmlzKTsKK30KKworVFlQRURfVEVTVChQQ0dFbmdpbmVUZXN0LCBTdHJlYW1T
ZXJpYWxpemF0aW9uKSB7CisgIHVzaW5nIGVuZ2luZV90eXBlID0gVHlwZVBhcmFtOworCisgIGZv
ciAoc2l6ZV90IGRpc2NhcmQgPSAwOyBkaXNjYXJkIDwga1R3b0J1ZmZlclZhbHVlczsgKytkaXNj
YXJkKSB7CisgICAgRXhwbGljaXRTZWVkU2VxIHNlZWRfc2VxdWVuY2V7MTIsIDM0LCA1Nn07Cisg
ICAgZW5naW5lX3R5cGUgZW5naW5lKHNlZWRfc2VxdWVuY2UpOworICAgIGVuZ2luZS5kaXNjYXJk
KGRpc2NhcmQpOworCisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICAgIHN0cmVhbSA8
PCBlbmdpbmU7CisKKyAgICBlbmdpbmVfdHlwZSBuZXdfZW5naW5lOworICAgIHN0cmVhbSA+PiBu
ZXdfZW5naW5lOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNjQ7ICsraSkgeworICAgICAg
RVhQRUNUX0VRKGVuZ2luZSgpLCBuZXdfZW5naW5lKCkpIDw8ICIgIiA8PCBpOworICAgIH0KKyAg
fQorfQorCitjb25zdGV4cHIgc2l6ZV90IGtOdW1Hb2xkZW5PdXRwdXRzID0gMTI3OworCisvLyBU
aGlzIHRlc3QgaXMgY2hlY2tpbmcgaWYgcmFuZGVuX2VuZ2luZSBpcyBtZWV0cyBpbnRlcmZhY2Ug
cmVxdWlyZW1lbnRzCisvLyBkZWZpbmVkIGluIFtyYW5kLnJlcS51cmJnXS4KK1RZUEVEX1RFU1Qo
UENHRW5naW5lVGVzdCwgUmFuZG9tTnVtYmVyRW5naW5lSW50ZXJmYWNlKSB7CisgIHVzaW5nIGVu
Z2luZV90eXBlID0gVHlwZVBhcmFtOworCisgIHVzaW5nIEUgPSBlbmdpbmVfdHlwZTsKKyAgdXNp
bmcgVCA9IHR5cGVuYW1lIEU6OnJlc3VsdF90eXBlOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19jb3B5X2NvbnN0cnVjdGlibGU8RT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJlbmdpbmVf
dHlwZSBtdXN0IGJlIGNvcHkgY29uc3RydWN0aWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoYWJz
bDo6aXNfY29weV9hc3NpZ25hYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiZW5naW5l
X3R5cGUgbXVzdCBiZSBjb3B5IGFzc2lnbmFibGUiKTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiZW5naW5l
X3R5cGUgbXVzdCBiZSBtb3ZlIGNvbnN0cnVjdGlibGUiKTsKKworICBzdGF0aWNfYXNzZXJ0KGFi
c2w6OmlzX21vdmVfYXNzaWduYWJsZTxFPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgImVuZ2lu
ZV90eXBlIG11c3QgYmUgbW92ZSBhc3NpZ25hYmxlIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWU8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEU+KCkoKSksIFQ+Ojp2YWx1ZSwKKyAgICAg
ICAgICAgICAgICAicmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3IoKSBtdXN0IGJlIHJlc3VsdF90eXBl
Iik7CisKKyAgLy8gTmFtZXMgYWZ0ZXIgZGVmaW5pdGlvbiBvZiBbcmFuZC5yZXEudXJiZ10gaW4g
QysrIHN0YW5kYXJkLgorICAvLyBlIHVzIGEgdmFsdWUgb2YgRQorICAvLyB2IGlzIGEgbHZhbHVl
IG9mIEUKKyAgLy8geCwgeSBhcmUgcG9zc2libHkgY29uc3QgdmFsdWVzIG9mIEUKKyAgLy8gcyBp
cyBhIHZhbHVlIG9mIFQKKyAgLy8gcSBpcyBhIHZhbHVlIHNhdGlzZnlpbmcgcmVxdWlyZW1lbnRz
IG9mIHNlZWRfc2VxdWVuY2UKKyAgLy8geiBpcyBhIHZhbHVlIG9mIHR5cGUgdW5zaWduZWQgbG9u
ZyBsb25nCisgIC8vIG9zIGlzIGEgc29tZSBzcGVjaWFsaXphdGlvbiBvZiBiYXNpY19vc3RyZWFt
CisgIC8vIGlzIGlzIGEgc29tZSBzcGVjaWFsaXphdGlvbiBvZiBiYXNpY19pc3RyZWFtCisKKyAg
RSBlLCB2OworICBjb25zdCBFIHgsIHk7CisgIFQgcyA9IDE7CisgIHN0ZDo6c2VlZF9zZXEgcXsx
LCAyLCAzfTsKKyAgdW5zaWduZWQgbG9uZyBsb25nIHogPSAxOyAgLy8gTk9MSU5UKHJ1bnRpbWUv
aW50KQorICBzdGQ6Ondvc3RyaW5nc3RyZWFtIG9zOworICBzdGQ6Ondpc3RyaW5nc3RyZWFtIGlz
OworCisgIEV7fTsKKyAgRXt4fTsKKyAgRXtzfTsKKyAgRXtxfTsKKworICBlLnNlZWQoKTsKKwor
ICAvLyBNU1ZDIGVtaXRzIGVycm9yIDI3MTggd2hlbiB1c2luZyBFWFBFQ1RfRVEoZSwgeCkKKyAg
Ly8gICogYWN0dWFsIHBhcmFtZXRlciB3aXRoIF9fZGVjbHNwZWMoYWxpZ24oJyMnKSkgd29uJ3Qg
YmUgYWxpZ25lZAorICBFWFBFQ1RfVFJVRShlID09IHgpOworCisgIGUuc2VlZChxKTsKKyAgewor
ICAgIEUgdG1wKHEpOworICAgIEVYUEVDVF9UUlVFKGUgPT0gdG1wKTsKKyAgfQorCisgIGUoKTsK
KyAgeworICAgIEUgdG1wKHEpOworICAgIEVYUEVDVF9UUlVFKGUgIT0gdG1wKTsKKyAgfQorCisg
IGUuZGlzY2FyZCh6KTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZSh4
ID09IHkpLCBib29sPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgInJldHVybiB0eXBlIG9mIG9w
ZXJhdG9yPT0gbXVzdCBiZSBib29sIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8
ZGVjbHR5cGUoeCAhPSB5KSwgYm9vbD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJyZXR1cm4g
dHlwZSBvZiBvcGVyYXRvcj09IG11c3QgYmUgYm9vbCIpOworfQorCitUWVBFRF9URVNUKFBDR0Vu
Z2luZVRlc3QsIFJhbmRlbkVuZ2luZVNGSU5BRVRlc3QpIHsKKyAgdXNpbmcgZW5naW5lX3R5cGUg
PSBUeXBlUGFyYW07CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgZW5naW5lX3R5cGU6
OnJlc3VsdF90eXBlOworCisgIHsKKyAgICBlbmdpbmVfdHlwZSBlbmdpbmUocmVzdWx0X3R5cGUo
MSkpOworICAgIGVuZ2luZS5zZWVkKHJlc3VsdF90eXBlKDEpKTsKKyAgfQorCisgIHsKKyAgICBy
ZXN1bHRfdHlwZSBuID0gMTsKKyAgICBlbmdpbmVfdHlwZSBlbmdpbmUobik7CisgICAgZW5naW5l
LnNlZWQobik7CisgIH0KKworICB7CisgICAgZW5naW5lX3R5cGUgZW5naW5lKDEpOworICAgIGVu
Z2luZS5zZWVkKDEpOworICB9CisKKyAgeworICAgIGludCBuID0gMTsKKyAgICBlbmdpbmVfdHlw
ZSBlbmdpbmUobik7CisgICAgZW5naW5lLnNlZWQobik7CisgIH0KKworICB7CisgICAgc3RkOjpz
ZWVkX3NlcSBzZWVkX3NlcTsKKyAgICBlbmdpbmVfdHlwZSBlbmdpbmUoc2VlZF9zZXEpOworICAg
IGVuZ2luZS5zZWVkKHNlZWRfc2VxKTsKKyAgfQorCisgIHsKKyAgICBlbmdpbmVfdHlwZSBlbmdp
bmV7c3RkOjpzZWVkX3NlcSgpfTsKKyAgICBlbmdpbmUuc2VlZChzdGQ6OnNlZWRfc2VxKCkpOwor
ICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gU3RhYmlsaXR5IHRlc3RzIGZvciBwY2c2NF8yMDE4
X2VuZ2luZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitURVNUKFBDRzY0MjAxOEVuZ2luZVRlc3QsIFZlcmlmeUdv
bGRlbikgeworICBjb25zdGV4cHIgdWludDY0X3Qga0dvbGRlbltrTnVtR29sZGVuT3V0cHV0c10g
PSB7CisgICAgICAweDAxMDcwMTk2ZTY5NWY4ZjEsIDB4NzAzZWM4NDBjNTlmNDQ5MywgMHhlNTQ5
NTQ5MTRiM2E0NGZhLAorICAgICAgMHg5NjEzMGZmMjA0YjkyODVlLCAweDdkOWZkZWY1MzVjZWIy
MWEsIDB4NjY2ZmVlZDQyZTEyMTlhMCwKKyAgICAgIDB4OTgxZjY4NTcyMWM4MzI2ZiwgMHhhZDgw
NzEwZDZlYWI0ZGRhLCAweGUyMDJjNDgwYjAzN2EwMjksCisgICAgICAweDVkMzM5MGVhZWRkOTA3
ZTIsIDB4MDc1NmJlZmIzOWM2YjhhYSwgMHgxZmI0NGJhNjYzNGQ2MmEzLAorICAgICAgMHg4ZDIw
NDIzNjYyNDI2NjQyLCAweDM0ZWE5MTAxNjdhMzlmYjQsIDB4OTMwMTBiNDNhODBkMGFiNiwKKyAg
ICAgIDB4NjYzZGIwOGE5OGZjNTY4YSwgMHg3MjBiMGExMzM1OTU2ZmFlLCAweDJjMzU0ODNlMzFl
MWQzYmEsCisgICAgICAweDQyOWYzOTc3NjMzNzQwOWQsIDB4YjQ2ZDk5ZTYzODY4NzM0NCwgMHgx
MDUzNzBiOTZhZWRjYWVlLAorICAgICAgMHgzOTk5ZTkyZjgxMWNmZjcxLCAweGQyMzBmOGJjYjU5
MWNmYzksIDB4MGRjZTNkYjJiYTdiZGVhNSwKKyAgICAgIDB4Y2YyZjUyYzkxZWVjOTlhZiwgMHgy
YmM3YzI0YThiOTk4YTM5LCAweGJkOGFmMWIwZDU5OWExOWMsCisgICAgICAweDU2YmM0NWFiYzY2
MDU5ZjUsIDB4MTcwYTQ2ZGMxNzBmN2YxZSwgMHhjMjVkYWY1Mjc3Yjg1ZmFkLAorICAgICAgMHhl
NjI5YzJlMGM5NDhlYWRiLCAweDE3MjBhNzk2OTE1NTQyZWQsIDB4MjJmYjBjYWE0ZjkwOTk1MSwK
KyAgICAgIDB4N2UwYzBmNDE3NWFjZDgzZCwgMHhkOWZjYWIzN2ZmMmE4NjBjLCAweGFiMjI4MGZi
MjA1NGJhZDEsCisgICAgICAweDU4ZThhMDZmMzdmYTllOTksIDB4YzNhNTJhMzBiMDY1MjhjNywg
MHgwMTc1Zjc3M2ExM2ZjMWJkLAorICAgICAgMHg3MzFjZmM1ODRiMDBlODQwLCAweDQwNGNjN2Iy
NjQ4MDY5Y2IsIDB4NWJjMjkxNTNiMGI3Zjc4MywKKyAgICAgIDB4NzcxMzEwYTM4Y2M5OTlkMSwg
MHg3NjZhNTcyZjBhNzFhOTE2LCAweDkwZjQ1MGZiNGZjNDgzNDgsCisgICAgICAweGYwODBlYTNl
MWM3YjFhMGQsIDB4MTU0NzFhNDUwN2Q2NmE0NCwgMHg3ZDU4ZTU1YTc4ZjNkZjY5LAorICAgICAg
MHgwMTMwYTA5NDU3NmFjOTljLCAweDQ2NjY5Y2IyZDA0YjFkODcsIDB4MTdhYjViZWQyMDE5MTg0
MCwKKyAgICAgIDB4OTViMTc3ZDI2MGFkZmYzZSwgMHgwMjVmYjYyNGI2ZWU0YzA3LCAweGIzNWRl
NDMzMDE1NGE5NWYsCisgICAgICAweGU4NTEwZmZmNjdlMjRjNzksIDB4MTMyYzNjYmNkNzZlZDJk
MywgMHgzNWU3Y2MxNDVhMDkzOTA0LAorICAgICAgMHg5ZjViNWI1ZjgxNTgzYjc5LCAweDNlZTc0
OWE1MzM5NjYyMzMsIDB4NGFmODU4ODZjZGVkYThjZCwKKyAgICAgIDB4MGNhNTM4MGVjYjNlZjNh
YSwgMHg0ZjY3NGViNzY2MWQzMTkyLCAweDg4YTI5YWFkMDBjZDc3MzMsCisgICAgICAweDcwYjYy
N2NhMDQ1ZmZhYzYsIDB4NTkxMmI0M2VhODg3NjIzZCwgMHg5NWRjOWZjNmY2MmNmMjIxLAorICAg
ICAgMHg5MjYwODFhMTJhNWM5MDViLCAweDljNTdkNGNkN2RmY2U2NTEsIDB4ODVhYjJjYmYyM2Uz
YmI1ZCwKKyAgICAgIDB4YzVjZDY2OWY2MzAyMzE1MiwgMHgzMDY3YmUwZmFkNWQ4OThlLCAweDEy
YjU2ZjQ0NGNiNTNkMDUsCisgICAgICAweGJjMmU1YTY0MGMzNDM0ZmMsIDB4OTI4MGJmZjBlNDYx
M2ZlMSwgMHg5ODgxOTA5NGM1Mjg3NDNlLAorICAgICAgMHg5OTlkMWM5OGQ4MjlkZjMzLCAweDlm
ZjgyYTAxMmRjODkyNDIsIDB4Zjk5MTgzZWQzOWM4YmU5NCwKKyAgICAgIDB4ZjBmNTkxNjFjZDQy
MWM1NSwgMHgzYzcwNTczMGMyZjZjNDhkLCAweDY2YWQ4NWM2ZTkyNzhhNjEsCisgICAgICAweDJh
MzQyOGU0YTQyOGQ1ZDAsIDB4NzkyMDdkNjhmZDA0OTQwZCwgMHhlYTdmMmI0MDJlZGM4NDMwLAor
ICAgICAgMHhhMDZiNDE5YWM4NTdmNjNiLCAweGNiMWRkMGU2ZmJjNDdlMWMsIDB4NGY1NTIyOTIw
MGFkYTZhNCwKKyAgICAgIDB4OTY0N2I1ZTYzNTljOTI3ZiwgMHgzMGJmOGY5MTk3YzdlZmU1LCAw
eGE3OTUxOTUyOWNjMzg0ZDAsCisgICAgICAweGJiMjJjNGYzMzlhZDY0OTcsIDB4ZDdiOTc4MmY1
OWQxNDE3NSwgMHgwZGZmMTJmZmYyZWMwMTE4LAorICAgICAgMHhhMzMxYWQ4MzA1MzQzYTdjLCAw
eDQ4ZGFkN2UzZjE3ZTA4NjIsIDB4MzI0YzZmYjNmZDNjOTY2NSwKKyAgICAgIDB4ZjBlNDM1MGU3
OTMzZGZjNCwgMHg3Y2NkYTJmMzBiOGIwM2I2LCAweGEwYWZjNjE3OTAwNWRlNDAsCisgICAgICAw
eGVlNjVkYTZkMDYzYjNhMzAsIDB4Yjk1MDZmNDJmMmJmZTg3YSwgMHhjOWEyZTI2YjBlZjViYWEw
LAorICAgICAgMHgzOWZhOWQ0ZjQ5NTAxMWQ2LCAweGJlY2MyMWE0NWQwMjM5NDgsIDB4NmJmNDg0
YzY1OTNmNzM3ZiwKKyAgICAgIDB4ODA2NWUwMDcwY2FkYzNiNywgMHg5ZWY2MTdlZDhkNDE5Nzk5
LCAweGFjNjkyY2Y4YzIzM2RkMTUsCisgICAgICAweGQyZWQ4NzU4M2M0ZWJiOTgsIDB4YWQ5NWJh
MWJlYmZlZGM2MiwgMHg5YjYwYjE2MGE4MjY0ZTQzLAorICAgICAgMHgwYmM4YzQ1ZjcxZmNmMjVi
LCAweDRhNzgwMzVjZGYxYzk5MzEsIDB4NDYwMmRjMTA2NjY3ZTAyOSwKKyAgICAgIDB4YjMzNWEz
YzI1MDQ5OGFjOCwgMHgwMjU2ZWJjNGRmMjBjYWI4LCAweDBjNjFlZmQxNTNmMGM4ZDksCisgICAg
ICAweGU1ZDAxNTBhNGY4MDZmODgsIDB4OTlkNjUyMWQzNTFlN2Q4NywgMHg4ZDQ4ODhjOWY4MGY0
MzI1LAorICAgICAgMHgxMDZjNTczNWMxYmE4NjhkLCAweDczNDE0ODgxYjg4MGE4NzgsIDB4ODA4
YTlhNThhMzA2NDc1MSwKKyAgICAgIDB4MzM5YTI5ZjM3NDZkZTNkNSwgMHg1NDEwZDdmYTRmODcz
ODk2LCAweGQ4NDYyM2M4MWQ3YjhhMDMsCisgICAgICAweDFmN2M3ZTdhN2Y0N2Y0NjIsCisgIH07
CisKKyAgcGNnNjRfMjAxOF9lbmdpbmUgZW5naW5lKDApOworI2lmIFVQREFURV9HT0xERU4KKyAg
KHZvaWQpa0dvbGRlbjsgIC8vIFNpbGVuY2Ugd2FybmluZy4KKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBrTnVtR29sZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwMTZseCwgIiwg
ZW5naW5lKCkpOworICAgIGlmIChpICUgMyA9PSAyKSB7CisgICAgICBwcmludGYoIlxuIik7Cisg
ICAgfQorICB9CisgIHByaW50ZigiXG5cblxuIik7CisjZWxzZQorICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW0gOiBrR29sZGVuKSB7CisgICAgRVhQRUNUX0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQor
ICBlbmdpbmUuc2VlZCgpOworICBmb3IgKGNvbnN0IGF1dG8mIGVsZW0gOiBrR29sZGVuKSB7Cisg
ICAgRVhQRUNUX0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQorI2VuZGlmCit9CisKK1RFU1QoUENH
NjQyMDE4RW5naW5lVGVzdCwgVmVyaWZ5R29sZGVuU2VlZGVkKSB7CisgIGNvbnN0ZXhwciB1aW50
NjRfdCBrR29sZGVuW2tOdW1Hb2xkZW5PdXRwdXRzXSA9IHsKKyAgICAgIDB4YjAzOTg4ZjFlMzk2
OTFlZSwgMHhiZDJhMWViNWFjMzFlOTdhLCAweDhmMDBkNmQ0MzM2MzRkMDIsCisgICAgICAweDE4
MjNjMjhkNDgzZDU3NzYsIDB4MDAwYzNlZTNlMWFlYjc0YSwgMHhmYTgyZWYyN2E0ZjNkZjljLAor
ICAgICAgMHhjNmYzODIzMDg2NTRlNDU0LCAweDQxNGFmYjFhMjM4OTk2YzIsIDB4NDcwM2E0YmMy
NTJlYjQxMSwKKyAgICAgIDB4OTlkNjRmNjJjOGY3ZjY1NCwgMHhiYjA3ZWJlMTFhMzRmYTQ0LCAw
eDc5ZWIwNmEzNjNjMDYxMzEsCisgICAgICAweGY2NmFkMzc1NmYxYzZiMjEsIDB4MTMwYzAxZDVl
ODY5ZjQ1NywgMHg1Y2EyYjk5NjNhZWNiYzgxLAorICAgICAgMHhmZWY3YmViYzFkZTI3ZTZjLCAw
eDFkMTc0ZmFhNWVkMmNkYmYsIDB4ZDc1YjdhNzczZjJiYjg4OSwKKyAgICAgIDB4YzM1Yzg3MjMy
N2ExNzBhNSwgMHg0NmRhNmQ4ODY0NmE0MmZlLCAweDQ2MjI5ODVlMDQ0MmRhZTIsCisgICAgICAw
eGJlM2NiZDY3Mjk3ZjFmOWIsIDB4ZTdjMzdiNGE0Nzk4YmZkMSwgMHgxNzNkNWRmYWQxNWEyNWMz
LAorICAgICAgMHgwZWI2ODQ5YmEyOTYxNTIyLCAweGIwZmY3MjQ2ZTY3MDBkNzMsIDB4ODhjYjlj
NDJkM2FmYTU3NywKKyAgICAgIDB4YjYwOTczMWRiZDk0ZDkxNywgMHhkMzk0MWNkYTA0YjQwMDgx
LCAweDI4ZDE0MGY3NDA5YmVhM2EsCisgICAgICAweDNjOTY2OTlhOTIwYTEyNGEsIDB4ZGIyOGJl
NTIxOTU4YjJmZCwgMHgwYTNmNDRkYjNkNGM1MTI0LAorICAgICAgMHg3YWM4ZTYwYmExM2I3MGQy
LCAweDc1ZjAzYTQxZGVkNTE5NWEsIDB4YWVkMTBhYzdjNGU0ODI1ZCwKKyAgICAgIDB4YjkyYTNi
MThhYWRiN2FkYywgMHhkYTQ1ZTAwODFmMmJjYTQ2LCAweDc0ZDM5YWIzNzUzMTQzZmMsCisgICAg
ICAweGI2ODYwMzgwMThmYWM5Y2EsIDB4NGNjMzA5ZmU5OTU0MmRiYiwgMHhmM2UxYTRmY2IzMTEw
OTdjLAorICAgICAgMHg1ODc2M2Q2ZmE2OThkNjlkLCAweGQxMWMzNjVkYmVjZDhkNjAsIDB4MmMx
NWQ1NTcyNWIxZGVlNywKKyAgICAgIDB4ODk4MDVmMjU0ZDg1NjU4YywgMHgyMzc0YzQ0ZGZjNjIx
NThiLCAweDlhODM1MGZhNzk5NTMyOGQsCisgICAgICAweDE5OGY4Mzg5NzBjZjkxZGEsIDB4OTZh
ZmY1Njk1NjJjMGU1MywgMHhkNzZjOGM1MmI3ZWM2ZTNmLAorICAgICAgMHgyM2EwMWNkOWFlNGJh
YTgxLCAweDNhZGIzNjZiNmQwMmE4OTMsIDB4YjMzMTNlMmE0YzViMzMzZiwKKyAgICAgIDB4MDRj
MTEyMzBiOTZhNTQyNSwgMHgxZjdmN2FmMDQ3ODdkNTcxLCAweGFkZGIwMTkzNjUyNzVlYzcsCisg
ICAgICAweDVjOTYwNDY4Y2NiMDlmNDIsIDB4ODQzOGRiNjk4YzY5YTQ0YSwgMHg0OTJiZTFlNDYx
MTE2MzdlLAorICAgICAgMHg5YzZjMDFlMTgxMDBjNjEwLCAweGJmZTQ4ZTc1YjdkMGFjZWIsIDB4
YjVlMGI4OWVjMWNlNmEwMCwKKyAgICAgIDB4OWQyODBlY2JjMmZlODk5NywgMHgyOTBkOWU5OTFi
YTVmY2FiLCAweGVlYzViZWM3ZDlkMmE0ZjAsCisgICAgICAweDcyNmU4MTQ4OGYxOTE1MGUsIDB4
MWE2ZGY3OTU1YTdlNDYyYywgMHgzN2ExMmQxNzRiYTQ2YmI1LAorICAgICAgMHgzY2RjZGZmZDk2
YjFiNWM1LCAweDJjNWQ1YWMxMDY2MWEyNmUsIDB4YTc0MmVkMThmMjJlNTBjNCwKKyAgICAgIDB4
MDBlMGVkODhmZjBkOGEzNSwgMHgzZDNjMTcxOGNiMWVmYzBiLCAweDFkNzBjNTFmZmJjY2JmMTEs
CisgICAgICAweGZiYmI4OTUxMzJhNDA5MmYsIDB4NjE5ZDI3ZjJmYjA5NWYyNCwgMHg2OWFmNjgy
MDA5ODVlNWM0LAorICAgICAgMHhiZWU0ODg1ZjU3MzczZjhkLCAweDEwYjdhNmJmZTA1ODdlNDAs
IDB4YTg4NWU2Y2YyZjdlNWYwYSwKKyAgICAgIDB4NTlmODc5NDY0Zjc2NzU1MCwgMHgyNGU4MDVk
NjkwNTY5OTBkLCAweDg2MDk3MGI5MTEwOTU4OTEsCisgICAgICAweGNhMzE4OTk1NGY4NDE3MGQs
IDB4NjY1MmE1ZWRkNDU5MDEzNCwgMHg1ZTEwMDhjZWY3NjE3NGJmLAorICAgICAgMHhjYmQ0MTc4
ODFmMmJjZmU1LCAweGZkNDlmYzlkNzA2ZWNkMTcsIDB4ZWViZjU0MDIyMWViZDA2NiwKKyAgICAg
IDB4NDZhZjc2Nzk0NjQ1MDRjYiwgMHhkNDAyODQ4Njk0Njk1NmYxLCAweGQ0ZjQxODY0Yjg2YzIx
MDMsCisgICAgICAweDdhZjA5MGU3NTE1ODMzNzIsIDB4OThjZGFhMDkyNzhjYjY0MiwgMHhmZmQ0
MmI5MjEyMTU2MDJmLAorICAgICAgMHgxZDA1YmVjODQ2NmIxNzQwLCAweGYwMzZmYTc4YTAxMzIw
NDQsIDB4Nzg3ODgwNTg5ZDFlY2M3OCwKKyAgICAgIDB4NTY0NDU1MmNmZWYzMzIzMCwgMHgwYTk3
ZTI3NWZlMDY4ODRiLCAweDk2ZDFiMTMzMzNkNDcwYjUsCisgICAgICAweGM4YjNjZGFkNTJkM2Iw
MzQsIDB4MDkxMzU3YjlkYjczNzZmZCwgMHhhNWZlNDIzMjU1NWVkZjhjLAorICAgICAgMHgzMzcx
YmMzYjZhZGE3NmI1LCAweDdkZWViMjMwMDQ3N2M5OTUsIDB4NmZjNmQ0MjQ0ZjI4NDljMSwKKyAg
ICAgIDB4NzUwZThjYzc5N2NhMzQwYSwgMHg4MTcyODYxM2NkNzk4OTlmLCAweDM0NjdmNGVlNmY5
YWViOTMsCisgICAgICAweDVlZjBhOTA1ZjU4YzY0MGYsIDB4NDMyZGI4NWU1MTAxYzk4YSwgMHg2
NDg4ZTk2ZjQ2YWM4MGMyLAorICAgICAgMHgyMmZkZGIyODI2MjUwNDhjLCAweDE1YjI4N2EwYmMy
ZDRjNWQsIDB4YTdlMjM0M2VmMWYyOGJjZSwKKyAgICAgIDB4Yzg3ZWUxYWE4OWJlZDA5ZSwgMHgy
MjA2MTAxMDc4MTJjNWU5LCAweGNiZGFiNmZjZDY0MGY1ODYsCisgICAgICAweDhkNDEwNDc5NzA5
Mjg3ODQsIDB4MWFhNDMxNTA5ZWMxYWRlMCwgMHhhYzNmMGJlNTNmNTE4ZGRjLAorICAgICAgMHgx
NmY0NDI4YWQ4MWQwY2JiLCAweDY3NWIxM2MyNzM2ZmM0YmIsIDB4NmRiMDczYWZkZDg3ZTMyZCwK
KyAgICAgIDB4NTcyZjNjYTJmMWEwNzhjNiwKKyAgfTsKKworICBFeHBsaWNpdFNlZWRTZXEgc2Vl
ZF9zZXF1ZW5jZXsxMiwgMzQsIDU2fTsKKyAgcGNnNjRfMjAxOF9lbmdpbmUgZW5naW5lKHNlZWRf
c2VxdWVuY2UpOworI2lmIFVQREFURV9HT0xERU4KKyAgKHZvaWQpa0dvbGRlbjsgIC8vIFNpbGVu
Y2Ugd2FybmluZy4KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtR29sZGVuT3V0cHV0czsg
KytpKSB7CisgICAgcHJpbnRmKCIweCUwMTZseCwgIiwgZW5naW5lKCkpOworICAgIGlmIChpICUg
MyA9PSAyKSB7CisgICAgICBwcmludGYoIlxuIik7CisgICAgfQorICB9CisgIHByaW50ZigiXG5c
blxuIik7CisjZWxzZQorICBmb3IgKGNvbnN0IGF1dG8mIGVsZW0gOiBrR29sZGVuKSB7CisgICAg
RVhQRUNUX0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQorICBlbmdpbmUuc2VlZChzZWVkX3NlcXVl
bmNlKTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9F
UShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyNlbmRpZgorfQorCitURVNUKFBDRzY0MjAxOEVuZ2lu
ZVRlc3QsIFZlcmlmeUdvbGRlbkZyb21EZXNlcmlhbGl6ZWRFbmdpbmUpIHsKKyAgY29uc3RleHBy
IHVpbnQ2NF90IGtHb2xkZW5ba051bUdvbGRlbk91dHB1dHNdID0geworICAgICAgMHhkZDQyNWI0
N2I0MTEzZGVhLCAweDFiMDcxNzY0NzlkNDQ0YjAsIDB4NmIzOTEwMjc1ODZmMmU0MiwKKyAgICAg
IDB4YTE2NmYyYjE1ZjRhMjE0MywgMHhmZmI2ZGJkN2ExNzllZTk3LCAweGIyYzAwMDM1MzY1YmYw
YjEsCisgICAgICAweDhmYmI1MThiNDU4NTU1MjEsIDB4ZmM3ODlhNTVkZGY4N2MzYiwgMHg0Mjk1
MzFmMGYxN2ZmMzU1LAorICAgICAgMHhiZTcwODU2MGQ2MDNkMjgzLCAweDViZmY0MTUxNzVjNWNi
NmIsIDB4ZTgxMzQ5MWY0YWQ0NTM5NCwKKyAgICAgIDB4YTg1M2Y0NTA2ZDU1ODgwZCwgMHg3ZTUz
ODQ1M2U1NjgxNzJlLCAweGUxMDFmMWUwOThkZGQwZWMsCisgICAgICAweDZlZTMxMjY2ZWU0Yzc2
NmQsIDB4YTg3ODZkOTJkNjZiMzlkNywgMHhmZWU2MjJhMmFjZjVlNWIwLAorICAgICAgMHg1ZmU4
ZTgyYzEwMmZhN2IzLCAweDAxZjEwYmU0Y2RiNTNjOWQsIDB4YmUwNTQ1MzY2Zjg1NzAyMiwKKyAg
ICAgIDB4MTJlNzRmMDEwYTMzOWJjYSwgMHhiMTBkODVjYTQwZDVjZTM0LCAweGU4MGQ2ZmViYTUw
NTQ4NzUsCisgICAgICAweDJiN2MxZWU2ZDU2N2Q0ZWUsIDB4MmE5Y2QwNDNiZmQwM2I2NiwgMHg1
Y2ZjNTMxYmQyMzlmM2YxLAorICAgICAgMHgxYzQ3MzRlNDY0N2Q3MGY1LCAweDg1YThmNjBmMDA2
YjU3NjAsIDB4NmE0MjM5Y2U3NmRjYTM4NywKKyAgICAgIDB4OGRhMGY4NmQ3MzM5MzM1YywgMHhm
MDU1YjA0Njg1NTEzNzRkLCAweDQ4NmU4NTY3ZTliZWE5YTAsCisgICAgICAweDRjYjUzMWI4NDA1
MTkyZGQsIDB4ZjgxM2IxZWUzMTU3MTEwYiwgMHgyMTRjMmE2NjRhODc1ZDhlLAorICAgICAgMHg3
NDUzMTIzN2IyOWIzNWY3LCAweGE2ZjAyNjdiYjc3YTc3MWUsIDB4NjRiNTUyYmZmNTQxODRhNCwK
KyAgICAgIDB4YTJkNmY3YWYyZDc1YjZmYywgMHg0NjBhMTAwMThlMDNiNWFiLCAweDc2ZmQxZmRj
YjgxZDA4MDAsCisgICAgICAweDc2ZjVmODE4MDUwNzBkOWQsIDB4MWZiNzVjYjFhNzBiMjg5YSwg
MHg5ZGZkMjVhMDIyYzRiMjdmLAorICAgICAgMHg5YTMxYTE0YTgwNTI4ZTllLCAweDkxMGRjNTY1
ZGRjMjU4MjAsIDB4ZDZhZWY4ZTJiMDkzNmMxMCwKKyAgICAgIDB4ZTE3NzNjNTA3ZmU3MDIyNSwg
MHhlMDI3ZmQ3YWFkZDYzMmJjLCAweGMxZmVjYjQyNzA4OWM4YjgsCisgICAgICAweGI1Yzc0YzY5
ZmE5ZGJmMjYsIDB4NzFiZjliMGU0NjcwMjI3ZCwgMHgyNWY0OGZhZDIwNWRjZmRkLAorICAgICAg
MHg5MDUyNDhlYzRkNjg5YzU2LCAweDVjMmI3NjMxYjBkZTVjOWQsIDB4OWYyZWUwZjhmNDg1MDM2
YywKKyAgICAgIDB4ZmQ2Y2U0ZWJiOTBiZjdlYSwgMHhkNDM1ZDIwMDQ2MDg1NTc0LCAweDZiN2Vh
ZGNiMDYyNWY5ODYsCisgICAgICAweDY3OWQ3ZDQ0YjQ4YmU4OWUsIDB4NDk2ODNiOGUxY2RjNDlk
ZSwgMHg0MzY2Y2Y3NmU5YTJmNGNhLAorICAgICAgMHg1NDAyNmVjMWNkYWQ3YmVkLCAweGE5YTA0
Mzg1MjA3ZjI4ZDMsIDB4YzhlNjZkZTRlYmEwNzRiMiwKKyAgICAgIDB4NDBiMDhjNDJkZTBmNGNj
MCwgMHgxZDRjNWUwZTkzYzViYmMwLCAweDE5YjgwNzkyZTQ3MGFlMmQsCisgICAgICAweDZmY2Fh
ZWFhNGMyYTViZDksIDB4YTkyY2IwN2M0MjM4NDM4ZSwgMHg4YmI1YzkxOGEwMDdlMjk4LAorICAg
ICAgMHg3Y2Q2NzFlOTQ0ODc0Y2Y0LCAweDg4MTY2NDcwYjFiYTNjYWMsIDB4ZDAxM2Q0NzZlYWVl
YWRlNiwKKyAgICAgIDB4Y2VlNDE2OTQ3MTg5YjNjMywgMHg1ZDdjMTZhYjBkY2U2MDg4LCAweGQz
NTc4YTVjMzJiMTNkMjcsCisgICAgICAweDM4NzVkYjVhZGM5Y2M5NzMsIDB4ZmJkYWJhMDFjNWI1
ZGM1NiwgMHhmZmM0ZmRkMzkxYjIzMWMzLAorICAgICAgMHgyMzM0NTIwZWNiMTY0ZmVjLCAweDM2
MWMxMTVlN2I2ZGUxZmEsIDB4ZWVlNTgxMDZjYzM1NjNkNywKKyAgICAgIDB4OGI3ZjM1YThkYjI1
ZWJiOCwgMHhiMjlkMDAyMTFlMmNhZmE2LCAweDIyYTM5ZmU0NjE0YjY0NmIsCisgICAgICAweDky
Y2E2ZGU4Yjk5ODUwNmQsIDB4NDA5MjJmZTNkMzg4ZDFkYiwgMHg5ZGE0N2YxZTU0MGY4MDJhLAor
ICAgICAgMHg4MTFkY2VlYmYxNmEyNWRiLCAweGY2NTI0YWUyMmUwZTUzYTksIDB4NTJkOWU3ODBh
MTZlYjk5ZCwKKyAgICAgIDB4NGY1MDQyODZiYjgzMDIwNywgMHhmNjY1NGQ0Nzg2YmQ1Y2MzLCAw
eDAwYmQ5ODMxNjAwM2E3ZTEsCisgICAgICAweGVmZGEwNTRhNmFiOGY1ZjMsIDB4NDZjZmIwZjRj
MTg3MjgyNywgMHhjMjJiMzE2OTY1YzBmM2IyLAorICAgICAgMHhkMWEyODA4N2M3ZTc1NjJhLCAw
eGFhNGY2YTA5NGI3ZjVjZmYsIDB4ZmUyYmM4NTNhMDQxZjdkYSwKKyAgICAgIDB4ZTlkNTMxNDAy
YTgzYzNiYSwgMHhlNTQ1ZDg2NjNkM2NlNGRkLCAweGZhMmRjZDdkOTFhMTNmYTgsCisgICAgICAw
eGRhMWEwODBlNTJhMTI3YjgsIDB4MTljOThmMWY4MDljM2Q4NCwgMHgyY2VmMTA5YWY0Njc4Yzg4
LAorICAgICAgMHg1MzQ2MmFjY2FiM2I5MTMyLCAweDE3NmIxM2E4MDQxNTM5NGUsIDB4ZWE3MDA0
N2VmNmJjMTc4YiwKKyAgICAgIDB4NTdiY2E4MDUwNmQ2ZGNkZiwgMHhkODUzYmEwOWZmMDlmNWM0
LCAweDc1ZjRkZjNhN2RkZDQ3NzUsCisgICAgICAweDIwOWMzNjdhZGU2MmY0ZmUsIDB4YTlhMGJi
Yzc0ZDVmNDY4MiwgMHg1ZGZlMzRiYWRhODZjMjFhLAorICAgICAgMHhjMmMwNWJiY2QzODU2NmQx
LCAweDZkZTgwODhlMzQ4YzkxNmEsIDB4NmE3MDAxYzYwMDBjMjE5NiwKKyAgICAgIDB4ZDlmYjUx
ODY1ZmM0YTM2NywgMHgxMmYzMjBlNDQ0ZWNlOGZmLCAweDZkNTZmN2Y3OTNkNjUwMzUsCisgICAg
ICAweDEzOGYzMWI3YTg2NWY4YWEsIDB4NThmYzY4YjQwMjZiOWFkZiwgMHhjZDQ4OTU0Yjc5ZmI2
NDM2LAorICAgICAgMHgyN2RmY2U0YTAyMzJhZjg3LAorICB9OworCisjaWYgVVBEQVRFX0dPTERF
TgorICAodm9pZClrR29sZGVuOyAgLy8gU2lsZW5jZSB3YXJuaW5nLgorICBzdGQ6OnNlZWRfc2Vx
IHNlZWRfc2VxdWVuY2V7MSwgMiwgM307CisgIHBjZzY0XzIwMThfZW5naW5lIGVuZ2luZShzZWVk
X3NlcXVlbmNlKTsKKyAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgc3RyZWFtIDw8IGVu
Z2luZTsKKyAgYXV0byBzdHIgPSBzdHJlYW0uc3RyKCk7CisgIHByaW50ZigiJXNcblxuIiwgc3Ry
LmNfc3RyKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1Hb2xkZW5PdXRwdXRzOyAr
K2kpIHsKKyAgICBwcmludGYoIjB4JTAxNmx4LCAiLCBlbmdpbmUoKSk7CisgICAgaWYgKGkgJSAz
ID09IDIpIHsKKyAgICAgIHByaW50ZigiXG4iKTsKKyAgICB9CisgIH0KKyAgcHJpbnRmKCJcblxu
XG4iKTsKKyNlbHNlCisgIHBjZzY0XzIwMThfZW5naW5lIGVuZ2luZTsKKyAgc3RkOjppc3RyaW5n
c3RyZWFtIHN0cmVhbSgKKyAgICAgICIyNTQ5Mjk3OTk1MzU1NDEzOTI0IDQ4NjU1NDA1OTU3MTQ0
MjIzNDEgNjM2NDEzNjIyMzg0Njc5MzAwNSAiCisgICAgICAiMTQ0MjY5NTA0MDg4ODk2MzQwNyAx
ODA4ODUxOTk1NzU2NTMzNjk5NSA0ODQ1MzY5MzY4MTU4ODI2NzA4Iik7CisgIHN0cmVhbSA+PiBl
bmdpbmU7CisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1Rf
RVEoZWxlbSwgZW5naW5lKCkpOworICB9CisjZW5kaWYKK30KKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBT
dGFiaWxpdHkgdGVzdHMgZm9yIHBjZzMyXzIwMThfZW5naW5lCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RFU1Qo
UENHMzIyMDE4RW5naW5lVGVzdCwgVmVyaWZ5R29sZGVuKSB7CisgIGNvbnN0ZXhwciB1aW50MzJf
dCBrR29sZGVuW2tOdW1Hb2xkZW5PdXRwdXRzXSA9IHsKKyAgICAgIDB4N2E3ZWNiZDksIDB4ODlm
ZDZjMDYsIDB4YWU2NDZhYTgsIDB4Y2QzY2Y5NDUsIDB4NjIwNGIzMDMsIDB4MTk4Yzg1ODUsCisg
ICAgICAweDQ5ZmNlNjExLCAweGQxZTkyOTdhLCAweDE0MmQ5NDQwLCAweGVlNzVmNTZiLCAweDQ3
M2E5MTE3LCAweGUzYTQ1OTAzLAorICAgICAgMHhiY2U4MDdhMSwgMHhlNTRlNWY0ZCwgMHg0OTdk
NmM1MSwgMHg2MTgyOTE2NiwgMHhhNzQwNDc0YiwgMHgwMzE5MTJhOCwKKyAgICAgIDB4OWRlM2Rl
ZmEsIDB4ZDI2NmRiZjEsIDB4MGYzOGJlYmIsIDB4ZWMzYzRmNjUsIDB4MDdjNTA1N2QsIDB4YmJj
ZTAzYzgsCisgICAgICAweGZkMmFjN2E4LCAweGZmY2Y0NzczLCAweDViMTBhZmZiLCAweGVkZTFj
ODQyLCAweGUyMmIwMWI3LCAweGRhMTMzYzhjLAorICAgICAgMHhhZjg5YjBmNCwgMHgyNWQxYjhi
YywgMHg5ZjYyNTQ4MiwgMHg3YmZkNjg4MiwgMHgyZTIyMTBjMCwgMHgyYzhmYjlhNiwKKyAgICAg
IDB4NDJjYjNiODMsIDB4NDBjZTBkYWIsIDB4NjQ0YTM1MTAsIDB4MzYyMzBlZjIsIDB4ZTJjYjZk
NDMsIDB4MTAxMmIzNDMsCisgICAgICAweDc0NmM2YzlmLCAweDM2NzE0Y2Y4LCAweGVkMWY1MDI2
LCAweDhiYmJmODNlLCAweGU5ODcxMGY0LCAweDhhMmFmYTM2LAorICAgICAgMHgwOTAzNTM0OSwg
MHg2ZGMxYTQ4NywgMHg2ODJiNjM0YiwgMHhjMTA2Nzk0ZiwgMHg3ZGQ3OGJlYiwgMHg2MjhjMjYy
YiwKKyAgICAgIDB4ODUyZmIyMzIsIDB4YjE1M2FjNGMsIDB4NGYxNjlkMWIsIDB4YTY5YWI3NzQs
IDB4NGJkNGI2ZjIsIDB4ZGMzNTFkZDMsCisgICAgICAweDkzZmYzYzhjLCAweGEzMDgxOWFiLCAw
eGZmMDc3NThjLCAweDVhYjEzYzYyLCAweGQxNmQ3ZmI1LCAweGM0OTUwZmZhLAorICAgICAgMHhk
MzA5YWU0OSwgMHhiOTY3N2E4NywgMHg0NDY0ZTMxNywgMHg5MGRjNDRmMSwgMHhjNjk0YzFkNCwg
MHgxZDVlMTE2OCwKKyAgICAgIDB4YWRmMzdhMmQsIDB4ZGEzODk5MGQsIDB4MWVjNGJkMzMsIDB4
MzZjYTI1Y2UsIDB4ZmEwZGM3NmEsIDB4OTY4YTlkNDMsCisgICAgICAweDY5NTBhYzM5LCAweGRk
MzI3NmJjLCAweDA2ZDVhNzFlLCAweDFmNmYyODJkLCAweDVjNjI2YzYyLCAweGRkZTNmYzMxLAor
ICAgICAgMHgxNTIxOTRjZSwgMHhjMzVlZDE0YywgMHhiMWY3MjI0ZSwgMHg0N2Y3NmJiOCwgMHhi
MzRmZGQwOCwgMHg3MDExMzk1ZSwKKyAgICAgIDB4MTYyZDJhNDksIDB4MGQxYmYwOWYsIDB4OTQy
OGE5NTIsIDB4MDNjNWMzNDQsIDB4ZDM1MjU2MTYsIDB4NzgxNmZmZjMsCisgICAgICAweDZiY2Vi
OGE4LCAweDgzNDVhMDgxLCAweDM2NjQyMGZkLCAweDE4MmFiZWRhLCAweDcwZjgyNzQ1LCAweGFm
MTVkZWQ4LAorICAgICAgMHhjN2Y1MmNhMiwgMHhhOThkYjljNSwgMHg5MTlkOTliYSwgMHg5YzM3
NmMxYywgMHhlZDhkMzRjMiwgMHg3MTZhZTlmNSwKKyAgICAgIDB4ZWYwNjJmYTUsIDB4ZWUzYjZj
NTYsIDB4NTIzMjU2NTgsIDB4NjFhZmE5YzMsIDB4ZmRhZjAyZjAsIDB4OTYxY2YzYWIsCisgICAg
ICAweDlmMjkxNTY1LCAweDRmYmYzMDQ1LCAweDA1OTBjODk5LCAweGRlOTAxMzg1LCAweDQ1MDA1
ZmZiLCAweDUwOWRiMTYyLAorICAgICAgMHgyNjJmYTk0MSwgMHg0YzQyMTY1MywgMHg0YjE3YzIx
ZSwgMHhlYTBkMTUzMCwgMHhkZTgwMzg0NSwgMHg2MWJmZDUxNSwKKyAgICAgIDB4NDM4NTIzZWYs
CisgIH07CisKKyAgcGNnMzJfMjAxOF9lbmdpbmUgZW5naW5lKDApOworI2lmIFVQREFURV9HT0xE
RU4KKyAgKHZvaWQpa0dvbGRlbjsgIC8vIFNpbGVuY2Ugd2FybmluZy4KKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBrTnVtR29sZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwOHgs
ICIsIGVuZ2luZSgpKTsKKyAgICBpZiAoaSAlIDYgPT0gNSkgeworICAgICAgcHJpbnRmKCJcbiIp
OworICAgIH0KKyAgfQorICBwcmludGYoIlxuXG5cbiIpOworI2Vsc2UKKyAgZm9yIChjb25zdCBh
dXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7Cisg
IH0KKyAgZW5naW5lLnNlZWQoKTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikg
eworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyNlbmRpZgorfQorCitURVNU
KFBDRzMyMjAxOEVuZ2luZVRlc3QsIFZlcmlmeUdvbGRlblNlZWRlZCkgeworICBjb25zdGV4cHIg
dWludDMyX3Qga0dvbGRlbltrTnVtR29sZGVuT3V0cHV0c10gPSB7CisgICAgICAweDYwYjVhNjRj
LCAweDk3ODUwMmY5LCAweDgwYTc1ZjYwLCAweDI0MWYxMTU4LCAweGE0Y2QxZGJiLCAweGU3Mjg0
MDE3LAorICAgICAgMHgzYjY3OGRhNSwgMHg1MjIzZWM5OSwgMHhlNGJkZDVkOSwgMHg3MjE5MGU2
ZCwgMHhlNmU3MDJjOSwgMHhmZjgwYzc2OCwKKyAgICAgIDB4Y2YxMjZlZDMsIDB4MWZiZDIwYWIs
IDB4NjA5ODA0ODksIDB4YmM3MmJmODksIDB4NDA3YWM2YzAsIDB4MDBiZjNjNTEsCisgICAgICAw
eGY5MDg3ODk3LCAweDE3MmU0ZWI2LCAweGU5ZTRmNDQzLCAweDFhNjA5OGJmLCAweGJmNDRmOGMy
LCAweGRkODRhMGU1LAorICAgICAgMHhkOWE1MjM2NCwgMHhjMGUyZTc4NiwgMHgwNjFhZTJiYSwg
MHg5ZmFjYjhlMywgMHg2MTA5NDMyZCwgMHhkNGUwYTAxMywKKyAgICAgIDB4YmQ4ZWI5YTYsIDB4
N2U4NmMzYjYsIDB4NjI5YzBlNjgsIDB4MDUzMzc0MzAsIDB4YjQ5NWI5ZjQsIDB4MTFjY2Q2NWQs
CisgICAgICAweGI1NzhkYjI1LCAweDY2ZjEyNDZkLCAweDZlZjIwYTdmLCAweDVlNDI5ODEyLCAw
eDExNzcyMTMwLCAweGI5NDRiNWMyLAorICAgICAgMHgwMTYyNDEyOCwgMHhhMjM4NWFiNywgMHhk
M2UxMGQzNSwgMHhiZTU3MGVjMywgMHhjOTUxNjU2ZiwgMHhiZTg5NDRhMCwKKyAgICAgIDB4N2Jl
NDEwNjIsIDB4NTcwOWY5MTksIDB4ZDc0NWZlZGEsIDB4OTg3MGI5YWUsIDB4YjQ0YjgxNjgsIDB4
MTllNzY4M2IsCisgICAgICAweGRlZDgwMTdmLCAweGM2ZTRkNTQ0LCAweDkxYWU0MjI1LCAweGQ2
NzQ1ZmJhLCAweGI5OTJmMjg0LCAweDY1YjEyYjMzLAorICAgICAgMHhhOWQ1ZmRiNCwgMHhmMTA1
Y2UxYSwgMHgzNWNhMWE2ZSwgMHgyZmY3MGRkMCwgMHhkODMzNWU0OSwgMHhmYjcxZGRmMiwKKyAg
ICAgIDB4Y2FlYWJiODksIDB4NWM2ZjVmODQsIDB4OWE4MTFhN2QsIDB4YmNlY2JiZDEsIDB4MGY2
NjFiYTAsIDB4OWFkOTNiOWQsCisgICAgICAweGVkZDIzZTBiLCAweDQyMDYyZjQ4LCAweGQzOGRk
N2U0LCAweDZjZDYzYzljLCAweDY0MGI5OGFlLCAweDRiZmY1NjUzLAorICAgICAgMHgxMjYyNjM3
MSwgMHgxMzI2NjAxNywgMHhlN2E2OThkOCwgMHgzOWM3NDY2NywgMHhlOGZkZjJlMywgMHg1Mjgw
M2JmOCwKKyAgICAgIDB4MmFmNjg5NWIsIDB4OTEzMzViN2IsIDB4Njk5ZTQ5NjEsIDB4MDBhNDBm
ZmYsIDB4MjUzZmYyYjYsIDB4NGE2Y2Y2NzIsCisgICAgICAweDk1ODRlODVmLCAweGYyYTUwMDBj
LCAweDRkNThhYmE4LCAweGI4NTEzZTZhLCAweDc2N2ZhZDY1LCAweDhlMzI2ZjllLAorICAgICAg
MHgxODJmMTVhMSwgMHgxNjNkYWI1MiwgMHhkZjk5Yzc4MCwgMHgwNDcyODJhMSwgMHhlZTRmOTBk
ZCwgMHhkNTAzOTRhZSwKKyAgICAgIDB4NmM5ZmQ1ZjAsIDB4YjA2YTkxOTQsIDB4Mzg3ZTM4NDAs
IDB4MDRhOTQ4N2IsIDB4ZjY3OGE0YzIsIDB4ZDBhNzg4MTAsCisgICAgICAweGQ1MDJjOTdlLCAw
eGQ2YTliMTJhLCAweDRhY2NjNWRjLCAweDQxNmVkNTNlLCAweDUwNDExNTM2LCAweGVlYjg5YzI0
LAorICAgICAgMHg4MTNhNzkwMiwgMHgwMzRlYmNhNiwgMHhmZmE1MmU3YywgMHg3ZWNkM2QwZSwg
MHhmYTM3YTBkMiwgMHhiMWZiZTJjMSwKKyAgICAgIDB4YjdlZmM2ZDEsIDB4ZWZhNGNjZWUsIDB4
ZjZmODA0MjQsIDB4MjI4M2YzZDksIDB4Njg3MzIyODQsIDB4OTRmM2I1YzgsCisgICAgICAweGJi
ZGVjZWI5LAorICB9OworCisgIEV4cGxpY2l0U2VlZFNlcSBzZWVkX3NlcXVlbmNlezEyLCAzNCwg
NTZ9OworICBwY2czMl8yMDE4X2VuZ2luZSBlbmdpbmUoc2VlZF9zZXF1ZW5jZSk7CisjaWYgVVBE
QVRFX0dPTERFTgorICAodm9pZClrR29sZGVuOyAgLy8gU2lsZW5jZSB3YXJuaW5nLgorICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGtOdW1Hb2xkZW5PdXRwdXRzOyArK2kpIHsKKyAgICBwcmludGYo
IjB4JTA4eCwgIiwgZW5naW5lKCkpOworICAgIGlmIChpICUgNiA9PSA1KSB7CisgICAgICBwcmlu
dGYoIlxuIik7CisgICAgfQorICB9CisgIHByaW50ZigiXG5cblxuIik7CisjZWxzZQorICBmb3Ig
KGNvbnN0IGF1dG8mIGVsZW0gOiBrR29sZGVuKSB7CisgICAgRVhQRUNUX0VRKGVsZW0sIGVuZ2lu
ZSgpKTsKKyAgfQorICBlbmdpbmUuc2VlZChzZWVkX3NlcXVlbmNlKTsKKyAgZm9yIChjb25zdCBh
dXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7Cisg
IH0KKyNlbmRpZgorfQorCitURVNUKFBDRzMyMjAxOEVuZ2luZVRlc3QsIFZlcmlmeUdvbGRlbkZy
b21EZXNlcmlhbGl6ZWRFbmdpbmUpIHsKKyAgY29uc3RleHByIHVpbnQ2NF90IGtHb2xkZW5ba051
bUdvbGRlbk91dHB1dHNdID0geworICAgICAgMHg3ODBmNzA0MiwgMHhiYTEzNzIxNSwgMHg0M2Fi
NmYyMiwgMHgwY2I1NWY0NiwgMHg0NGIyNjI3ZCwgMHg4MzU1OTdhZiwKKyAgICAgIDB4ZWE5NzNl
YTEsIDB4MGQyYWJkMzUsIDB4NGZkZDYwMWMsIDB4YWM0MzQyZmUsIDB4N2RiN2U5M2MsIDB4ZTU2
ZWJjYWYsCisgICAgICAweDM1OTY0NzBhLCAweDc3NzBhOWFkLCAweDliODkzMzIwLCAweDU3ZGIz
NDE1LCAweGI0MzJkZTU0LCAweGEwMmJhZjcxLAorICAgICAgMHhhMjU2YWFkYiwgMHg4ODkyMWZj
NywgMHhhMzVmYTZiMywgMHhkZTNlY2E0NiwgMHg2MDU3MzlhNywgMHhhODkwYjgyYiwKKyAgICAg
IDB4ZTQ1N2I3YWQsIDB4MzM1ZmI5MDMsIDB4ZWIwNjc5MGMsIDB4YjNjNTRiZjYsIDB4NjE0MWU0
NDIsIDB4YTU5OWE0ODIsCisgICAgICAweGI3ODk4N2NjLCAweGM2MWRmZTlkLCAweDBmMWQ2YWNl
LCAweDE3NDYwNTk0LCAweDhmNmE1MDYxLCAweDA4M2RjMzU0LAorICAgICAgMHhlOWMzMzdmYiwg
MHhjZmQxMDVmNywgMHg5MjY3NjRiNiwgMHg2MzhkMjRkYywgMHhlYWFjNjUwYSwgMHg2N2QyY2I5
YywKKyAgICAgIDB4ZDgwNzczM2MsIDB4MjA1ZmM1MmUsIDB4ZjUzOTllMmUsIDB4NmM0NmRkY2Ms
IDB4YjYwM2U4NzUsIDB4Y2UxMTNhMjUsCisgICAgICAweDNjOGQ0ODEzLCAweGZiNTg0ZGI4LCAw
eGY2ZDI1NWZmLCAweGVhODA5NTRmLCAweDQyZThiZTg1LCAweGIyZmVlZTcyLAorICAgICAgMHg2
MmJkOGQxNiwgMHgxYmU0YTE0MiwgMHg5N2RjYTFhNCwgMHhkZDZlNzMzMywgMHhiMmNhYTIwZSwg
MHhhMTJiMTU4OCwKKyAgICAgIDB4ZWIzYTVhMWEsIDB4NmZhNWJhODksIDB4MDc3ZWE5MzEsIDB4
OGRkYjE3MTMsIDB4MGRkMDMwNzksIDB4MmMyYmE5NjUsCisgICAgICAweGE3N2ZhYzE3LCAweGM4
MzI1NzQyLCAweDhiYjg5M2JmLCAweGMyMzE1NzQxLCAweGVhY2VlZTkyLCAweDgxZGQyZWUyLAor
ICAgICAgMHhlNTIxNDIxNiwgMHgxYjliOGZiMiwgMHgwMTY0NmQwMywgMHgyNGZhY2MyNSwgMHhk
OGMwZTBiYiwgMHhhMzNmZTEwNiwKKyAgICAgIDB4ZjM0ZmU5NzYsIDB4YjNiNGI0NGUsIDB4NjU2
MThmZWQsIDB4MDMyYzYxOTIsIDB4YTlkZDcyY2UsIDB4ZjM5MTg4N2IsCisgICAgICAweGY0MWM2
YTZlLCAweDA1YzRiZDZkLCAweDM3ZmEyNjBlLCAweDQ2YjA1NjU5LCAweGI1ZjYzNDhhLCAweDYy
ZDI2ZDg5LAorICAgICAgMHgzOWY2NDUyZCwgMHhiMTdiMzBhMiwgMHhiZGQ4Mjc0MywgMHgzOGVj
YWUzYiwgMHhmZTkwZjBhMiwgMHhjYjJkMjI2ZCwKKyAgICAgIDB4Y2Y4YTBiMWMsIDB4MGVlZDNk
NGQsIDB4YTFmNjljZmMsIDB4ZDdhYzNiYTUsIDB4Y2U5ZDlhNmIsIDB4MTIxZGViNGMsCisgICAg
ICAweDRhMGQwM2YzLCAweGMxODIxZWQxLCAweDU5YzI0OWFjLCAweGMwYWJiNDc0LCAweDI4MTQ5
OTg1LCAweGZkOWE4MmJhLAorICAgICAgMHg1OTYwYzNiMiwgMHhlZmYwMGNiYSwgMHg2MDczYWEx
NywgMHgyNWRjMDkxOSwgMHg5OTc2NjI2ZSwgMHhkZDJjY2MzMywKKyAgICAgIDB4MzllY2I2ZWMs
IDB4YzZlMTVkMTMsIDB4ZmFjOTRjZmQsIDB4MjhjZmQzNGYsIDB4ZjJkMmMzMmQsIDB4NTFjMjNk
MDgsCisgICAgICAweDRmZGIyZjQ4LCAweDk3YmFhODA3LCAweGYyYzEwMDRjLCAweGM0YWU4MTM2
LCAweDcxZjMxYzk0LCAweDhjOTJkNjAxLAorICAgICAgMHgzNmNhZjVjZCwKKyAgfTsKKworI2lm
IFVQREFURV9HT0xERU4KKyAgKHZvaWQpa0dvbGRlbjsgIC8vIFNpbGVuY2Ugd2FybmluZy4KKyAg
c3RkOjpzZWVkX3NlcSBzZWVkX3NlcXVlbmNlezEsIDIsIDN9OworICBwY2czMl8yMDE4X2VuZ2lu
ZSBlbmdpbmUoc2VlZF9zZXF1ZW5jZSk7CisgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07Cisg
IHN0cmVhbSA8PCBlbmdpbmU7CisgIGF1dG8gc3RyID0gc3RyZWFtLnN0cigpOworICBwcmludGYo
IiVzXG5cbiIsIHN0ci5jX3N0cigpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtR29s
ZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwOHgsICIsIGVuZ2luZSgpKTsKKyAg
ICBpZiAoaSAlIDYgPT0gNSkgeworICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKyAgfQorICBw
cmludGYoIlxuXG5cbiIpOworCisgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyNlbHNlCisgIHBjZzMy
XzIwMThfZW5naW5lIGVuZ2luZTsKKyAgc3RkOjppc3RyaW5nc3RyZWFtIHN0cmVhbSgKKyAgICAg
ICI2MzY0MTM2MjIzODQ2NzkzMDA1IDE0NDI2OTUwNDA4ODg5NjM0MDcgNjUzNzAyODE1NzI3MDY1
OTg5NCIpOworICBzdHJlYW0gPj4gZW5naW5lOworICBmb3IgKGNvbnN0IGF1dG8mIGVsZW0gOiBr
R29sZGVuKSB7CisgICAgRVhQRUNUX0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQorI2VuZGlmCit9
CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3Bs
YXRmb3JtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcGxhdGZvcm0uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NWE0MmNiYjgwZWFlY2RjYWI0MjcyOGNhNjMyMzMyZmY1MWI1ZmQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3BsYXRmb3JtLmgKQEAgLTAsMCArMSwxNzAgQEAKKy8v
IENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX1BMQVRGT1JNX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1BM
QVRGT1JNX0hfCisKKy8vIEhFUk1FVElDIE5PVEU6IFRoZSByYW5kZW5faHdhZXMgdGFyZ2V0IG11
c3Qgbm90IGludHJvZHVjZSBkdXBsaWNhdGUKKy8vIHN5bWJvbHMgZnJvbSBhcmJpdHJhcnkgc3lz
dGVtIGFuZCBvdGhlciBoZWFkZXJzLCBzaW5jZSBpdCBtYXkgYmUgYnVpbHQKKy8vIHdpdGggZGlm
ZmVyZW50IGZsYWdzIGZyb20gb3RoZXIgdGFyZ2V0cywgdXNpbmcgZGlmZmVyZW50IGxldmVscyBv
ZgorLy8gb3B0aW1pemF0aW9uLCBwb3RlbnRpYWxseSBpbnRyb2R1Y2luZyBPRFIgdmlvbGF0aW9u
cy4KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFBsYXRmb3JtIEZlYXR1cmUgQ2hlY2tz
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBDdXJyZW50bHkgc3VwcG9ydGVkIG9wZXJh
dGluZyBzeXN0ZW1zIGFuZCBhc3NvY2lhdGVkIHByZXByb2Nlc3NvcgorLy8gc3ltYm9sczoKKy8v
CisvLyAgIExpbnV4IGFuZCBMaW51eC1kZXJpdmVkICAgICAgICAgICBfX2xpbnV4X18KKy8vICAg
QW5kcm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fQU5EUk9JRF9fIChpbXBsaWVzIF9f
bGludXhfXykKKy8vICAgTGludXggKG5vbi1BbmRyb2lkKSAgICAgICAgICAgICAgIF9fbGludXhf
XyAmJiAhX19BTkRST0lEX18KKy8vICAgRGFyd2luIChtYWNPUyBhbmQgaU9TKSAgICAgICAgICAg
IF9fQVBQTEVfXworLy8gICBBa2Fyb3MgKGh0dHA6Ly9ha2Fyb3Mub3JnKSAgICAgICAgX19yb3Nf
XworLy8gICBXaW5kb3dzICAgICAgICAgICAgICAgICAgICAgICAgICAgX1dJTjMyCisvLyAgIE5h
Q0wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25hdGl2ZV9jbGllbnRfXworLy8gICBB
c21KUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hc21qc19fCisvLyAgIFdlYkFzc2Vt
Ymx5ICAgICAgICAgICAgICAgICAgICAgICBfX3dhc21fXworLy8gICBGdWNoc2lhICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19GdWNoc2lhX18KKy8vCisvLyBOb3RlIHRoYXQgc2luY2UgQW5k
cm9pZCBkZWZpbmVzIGJvdGggX19BTkRST0lEX18gYW5kIF9fbGludXhfXywgb25lCisvLyBtYXkg
cHJvYmUgZm9yIGVpdGhlciBMaW51eCBvciBBbmRyb2lkIGJ5IHNpbXBseSB0ZXN0aW5nIGZvciBf
X2xpbnV4X18uCisvLworLy8gTk9URTogRm9yIF9fQVBQTEVfXyBwbGF0Zm9ybXMsIHdlIHVzZSAj
aW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisvLyB0byBkaXN0aW5ndWlzaCBvcyB2YXJp
YW50cy4KKy8vCisvLyBodHRwOi8vbmFkZWF1c29mdHdhcmUuY29tL2FydGljbGVzLzIwMTIvMDEv
Y19jX3RpcF9ob3dfdXNlX2NvbXBpbGVyX3ByZWRlZmluZWRfbWFjcm9zX2RldGVjdF9vcGVyYXRp
bmdfc3lzdGVtCisKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25k
aXRpb25hbHMuaD4KKyNlbmRpZgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQXJjaGl0
ZWN0dXJlIENoZWNrcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gVGhlc2UgcHJlcHJv
Y2Vzc29yIGRpcmVjdGl2ZXMgYXJlIHRyeWluZyB0byBkZXRlcm1pbmUgQ1BVIGFyY2hpdGVjdHVy
ZSwKKy8vIGluY2x1ZGluZyBuZWNlc3NhcnkgaGVhZGVycyB0byBzdXBwb3J0IGhhcmR3YXJlIEFF
Uy4KKy8vCisvLyBBQlNMX0FSQ0hfe1g4Ni9QUEMvQVJNfSBtYWNyb3MgZGV0ZXJtaW5lIHRoZSBw
bGF0Zm9ybS4KKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194ODZfNjQpIHx8
IGRlZmluZWQoX01fQU1ENjQpIHx8IFwKKyAgICBkZWZpbmVkKF9NX1g2NCkKKyNkZWZpbmUgQUJT
TF9BUkNIX1g4Nl82NAorI2VsaWYgZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX01fSVg4NikK
KyNkZWZpbmUgQUJTTF9BUkNIX1g4Nl8zMgorI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwg
ZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQoX01fQVJNNjQpCisjZGVmaW5lIEFCU0xfQVJD
SF9BQVJDSDY0CisjZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19BUk1FTF9fKSB8
fCBkZWZpbmVkKF9NX0FSTSkKKyNkZWZpbmUgQUJTTF9BUkNIX0FSTQorI2VsaWYgZGVmaW5lZChf
X3Bvd2VycGM2NF9fKSB8fCBkZWZpbmVkKF9fUFBDNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNf
XykgfHwgXAorICAgIGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX1BQQ19fKQorI2RlZmlu
ZSBBQlNMX0FSQ0hfUFBDCisjZWxzZQorLy8gVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgorLy8g
ICogaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wcmVkZWYvd2lraS9BcmNoaXRlY3R1cmVzLwor
Ly8gICogaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9iMDA4NGtheS5h
c3B4CisvLyAgKiBmb3IgZ2NjLCBjbGFuZzogImVjaG8gfCBnY2MgLUUgLWRNIC0iCisjZW5kaWYK
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEF0dHJpYnV0ZSBDaGVja3MKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKy8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIGFubm90
YXRlcyB3aGV0aGVyIHBvaW50ZXJzIG1heSBiZSBjb25zaWRlcmVkCisvLyB0byBiZSB1bmFsaWFz
ZWQuCisjaWYgZGVmaW5lZChfX2NsYW5nX18pIHx8IGRlZmluZWQoX19HTlVDX18pCisjZGVmaW5l
IEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIF9fcmVzdHJpY3RfXworI2VsaWYgZGVmaW5l
ZChfTVNDX1ZFUikKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1QgX19yZXN0
cmljdAorI2Vsc2UKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1QKKyNlbmRp
ZgorCisvLyBBQlNMX0hBVkVfQUNDRUxFUkFURURfQUVTIGluZGljYXRlcyB3aGV0aGVyIHRoZSBj
dXJyZW50bHkgYWN0aXZlIGNvbXBpbGVyCisvLyBmbGFncyAoZS5nLiAtbWFlcykgYWxsb3cgdXNp
bmcgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgQUVTIGluc3RydWN0aW9ucywgd2hpY2gKKy8vIGltcGxp
ZXMgdXMgYXNzdW1pbmcgdGhhdCB0aGUgdGFyZ2V0IHBsYXRmb3JtIHN1cHBvcnRzIHRoZW0uCisj
ZGVmaW5lIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMgMAorCisjaWYgZGVmaW5lZChBQlNMX0FS
Q0hfWDg2XzY0KQorCisjaWYgZGVmaW5lZChfX0FFU19fKSB8fCBkZWZpbmVkKF9fQVZYX18pCisj
dW5kZWYgQUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUworI2RlZmluZSBBQlNMX0hBVkVfQUNDRUxF
UkFURURfQUVTIDEKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKEFCU0xfQVJDSF9QUEMpCisKKy8v
IFJlbHkgb24gVlNYIGFuZCBDUllQVE8gZXh0ZW5zaW9ucyBmb3IgdmNpcGhlciBvbiBQb3dlclBD
LgorI2lmIChkZWZpbmVkKF9fVkVDX18pIHx8IGRlZmluZWQoX19BTFRJVkVDX18pKSAmJiBkZWZp
bmVkKF9fVlNYX18pICYmIFwKKyAgICBkZWZpbmVkKF9fQ1JZUFRPX18pCisjdW5kZWYgQUJTTF9I
QVZFX0FDQ0VMRVJBVEVEX0FFUworI2RlZmluZSBBQlNMX0hBVkVfQUNDRUxFUkFURURfQUVTIDEK
KyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKEFCU0xfQVJDSF9BUk0pIHx8IGRlZmluZWQoQUJTTF9B
UkNIX0FBUkNINjQpCisKKy8vIGh0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC90b3BpYy9j
b20uYXJtLmRvYy5paGkwMDUzYy9JSEkwMDUzQ19hY2xlXzJfMC5wZGYKKy8vIFJlbHkgb24gTkVP
TitDUllQVE8gZXh0ZW5zaW9ucyBmb3IgQVJNLgorI2lmIGRlZmluZWQoX19BUk1fTkVPTikgJiYg
ZGVmaW5lZChfX0FSTV9GRUFUVVJFX0NSWVBUTykKKyN1bmRlZiBBQlNMX0hBVkVfQUNDRUxFUkFU
RURfQUVTCisjZGVmaW5lIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMgMQorI2VuZGlmCisKKyNl
bmRpZgorCisvLyBOYUNsIGRvZXMgbm90IGFsbG93IEFFUy4KKyNpZiBkZWZpbmVkKF9fbmF0aXZl
X2NsaWVudF9fKQorI3VuZGVmIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMKKyNkZWZpbmUgQUJT
TF9IQVZFX0FDQ0VMRVJBVEVEX0FFUyAwCisjZW5kaWYKKworLy8gQUJTTF9SQU5ET01fSU5URVJO
QUxfQUVTX0RJU1BBVENIIGluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW50bHkgYWN0aXZlCisv
LyBwbGF0Zm9ybSBoYXMsIG9yIHNob3VsZCB1c2UgcnVuLXRpbWUgZGlzcGF0Y2ggZm9yIHNlbGVj
dGluZyB0aGUKKy8vIGFjY2xlcmF0ZWQgUmFuZGVuIGltcGxlbWVudGF0aW9uLgorI2RlZmluZSBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0ggMAorCisjaWYgZGVmaW5lZChBQlNMX0FS
Q0hfWDg2XzY0KQorLy8gRGlzcGF0Y2ggaXMgYXZhaWxhYmxlIG9uIHg4Nl82NAorI3VuZGVmIEFC
U0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSAorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRF
Uk5BTF9BRVNfRElTUEFUQ0ggMQorI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQo
QUJTTF9BUkNIX1BQQykKKy8vIE9yIHdoZW4gcnVubmluZyBsaW51eCBQUEMKKyN1bmRlZiBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0gKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJO
QUxfQUVTX0RJU1BBVENIIDEKKyNlbGlmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKEFC
U0xfQVJDSF9BQVJDSDY0KQorLy8gT3Igd2hlbiBydW5uaW5nIGxpbnV4IEFBcmNoNjQKKyN1bmRl
ZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0gKKyNkZWZpbmUgQUJTTF9SQU5ET01f
SU5URVJOQUxfQUVTX0RJU1BBVENIIDEKKyNlbGlmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZp
bmVkKEFCU0xfQVJDSF9BUk0pICYmIChfX0FSTV9BUkNIID49IDgpCisvLyBPciB3aGVuIHJ1bm5p
bmcgbGludXggQVJNIHY4IG9yIGhpZ2hlci4KKy8vIChUaGlzIGNhcHR1cmVzIGEgbG90IG9mIEFu
ZHJvaWQgY29uZmlndXJhdGlvbnMuKQorI3VuZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19E
SVNQQVRDSAorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0ggMQorI2Vu
ZGlmCisKKy8vIE5hQ2wgZG9lcyBub3QgYWxsb3cgZGlzcGF0Y2guCisjaWYgZGVmaW5lZChfX25h
dGl2ZV9jbGllbnRfXykKKyN1bmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0gK
KyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENIIDAKKyNlbmRpZgorCisv
LyBpT1MgZG9lcyBub3Qgc3VwcG9ydCBkaXNwYXRjaCwgZXZlbiBvbiB4ODYsIHNpbmNlIGFwcGxp
Y2F0aW9ucworLy8gc2hvdWxkIGJlIGJ1bmRsZWQgYXMgZmF0IGJpbmFyaWVzLCB3aXRoIGEgZGlm
ZmVyZW50IGJ1aWxkIHRhaWxvcmVkIGZvcgorLy8gZWFjaCBzcGVjaWZpYyBzdXBwb3J0ZWQgcGxh
dGZvcm0vYXJjaGl0ZWN0dXJlLgorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoVEFSR0VUX09T
X0lQSE9ORSB8fCBUQVJHRVRfT1NfSVBIT05FX1NJTVVMQVRPUikKKyN1bmRlZiBBQlNMX1JBTkRP
TV9JTlRFUk5BTF9BRVNfRElTUEFUQ0gKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVT
X0RJU1BBVENIIDAKKyNlbmRpZgorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1BM
QVRGT1JNX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJnLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmUxYzFm
NmZlMjY4ODE5OTU2YjdiNGFmYzc2ZGQxOTkwNmQxZTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZy5jYwpAQCAtMCwwICsxLDI1MiBAQAorLy8gQ29w
eXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9wb29sX3VyYmcuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRl
IDxhdG9taWM+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1
ZGUgPGl0ZXJhdG9yPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKyNpbmNs
dWRlICJhYnNsL2Jhc2UvY2FsbF9vbmNlLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbmZpZy5o
IgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9lbmRpYW4uaCIKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJu
YWwvc3BpbmxvY2suaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvc3lzaW5mby5oIgor
I2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC91bmFsaWduZWRfYWNjZXNzLmgiCisjaW5jbHVk
ZSAiYWJzbC9iYXNlL29wdGltaXphdGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVy
bmFsL3JhbmRlbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJp
YWwuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9zZWVkX2dlbl9leGNlcHRpb24uaCIKKwordXNp
bmcgYWJzbDo6YmFzZV9pbnRlcm5hbDo6U3BpbkxvY2s7Cit1c2luZyBhYnNsOjpiYXNlX2ludGVy
bmFsOjpTcGluTG9ja0hvbGRlcjsKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRv
bV9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCisvLyBSYW5kZW5Qb29sRW50cnkgaXMgYSB0aHJl
YWQtc2FmZSBwc2V1ZG9yYW5kb20gYml0IGdlbmVyYXRvciwgaW1wbGVtZW50aW5nIGEKKy8vIHNp
bmdsZSBnZW5lcmF0b3Igd2l0aGluIGEgUmFuZGVuUG9vbDxUPi4gSXQgaXMgYW4gaW50ZXJuYWwg
aW1wbGVtZW50YXRpb24KKy8vIGRldGFpbCwgYW5kIGRvZXMgbm90IGFpbSB0byBjb25mb3JtIHRv
IFtyYW5kLnJlcS51cm5nXS4KKy8vCisvLyBOT1RFOiBUaGVyZSBhcmUgYWxpZ25tZW50IGlzc3Vl
cyB3aGVuIHVzZWQgb24gQVJNLCBmb3IgaW5zdGFuY2UuCisvLyBTZWUgdGhlIGFsbG9jYXRpb24g
Y29kZSBpbiBQb29sQWxpZ25lZEFsbG9jKCkuCitjbGFzcyBSYW5kZW5Qb29sRW50cnkgeworIHB1
YmxpYzoKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N0YXRlID0gUmFuZGVuVHJhaXRzOjpr
U3RhdGVCeXRlcyAvIHNpemVvZih1aW50MzJfdCk7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGtDYXBhY2l0eSA9CisgICAgICBSYW5kZW5UcmFpdHM6OmtDYXBhY2l0eUJ5dGVzIC8gc2l6ZW9m
KHVpbnQzMl90KTsKKworICB2b2lkIEluaXQoYWJzbDo6U3Bhbjxjb25zdCB1aW50MzJfdD4gZGF0
YSkgeworICAgIFNwaW5Mb2NrSG9sZGVyIGwoJm11Xyk7ICAvLyBBbHdheXMgdW5jb250ZXN0ZWQu
CisgICAgc3RkOjpjb3B5KGRhdGEuYmVnaW4oKSwgZGF0YS5lbmQoKSwgc3RkOjpiZWdpbihzdGF0
ZV8pKTsKKyAgICBuZXh0XyA9IGtTdGF0ZTsKKyAgfQorCisgIC8vIENvcHkgYnl0ZXMgaW50byBv
dXQuCisgIHZvaWQgRmlsbCh1aW50OF90KiBvdXQsIHNpemVfdCBieXRlcykgQUJTTF9MT0NLU19F
WENMVURFRChtdV8pOworCisgIC8vIFJldHVybnMgcmFuZG9tIGJpdHMgZnJvbSB0aGUgYnVmZmVy
IGluIHVuaXRzIG9mIFQuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBpbmxpbmUgVCBHZW5l
cmF0ZSgpIEFCU0xfTE9DS1NfRVhDTFVERUQobXVfKTsKKworICBpbmxpbmUgdm9pZCBNYXliZVJl
ZmlsbCgpIEFCU0xfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKG11XykgeworICAgIGlmIChuZXh0
XyA+PSBrU3RhdGUpIHsKKyAgICAgIG5leHRfID0ga0NhcGFjaXR5OworICAgICAgaW1wbF8uR2Vu
ZXJhdGUoc3RhdGVfKTsKKyAgICB9CisgIH0KKworIHByaXZhdGU6CisgIC8vIFJhbmRlbiBVUkJH
IHN0YXRlLgorICB1aW50MzJfdCBzdGF0ZV9ba1N0YXRlXSBBQlNMX0dVQVJERURfQlkobXVfKTsg
IC8vIEZpcnN0IHRvIHNhdGlzZnkgYWxpZ25tZW50LgorICBTcGluTG9jayBtdV87CisgIGNvbnN0
IFJhbmRlbiBpbXBsXzsKKyAgc2l6ZV90IG5leHRfIEFCU0xfR1VBUkRFRF9CWShtdV8pOworfTsK
KwordGVtcGxhdGUgPD4KK2lubGluZSB1aW50OF90IFJhbmRlblBvb2xFbnRyeTo6R2VuZXJhdGU8
dWludDhfdD4oKSB7CisgIFNwaW5Mb2NrSG9sZGVyIGwoJm11Xyk7CisgIE1heWJlUmVmaWxsKCk7
CisgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0ZV9bbmV4dF8rK10pOworfQorCit0
ZW1wbGF0ZSA8PgoraW5saW5lIHVpbnQxNl90IFJhbmRlblBvb2xFbnRyeTo6R2VuZXJhdGU8dWlu
dDE2X3Q+KCkgeworICBTcGluTG9ja0hvbGRlciBsKCZtdV8pOworICBNYXliZVJlZmlsbCgpOwor
ICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHN0YXRlX1tuZXh0XysrXSk7Cit9CisKK3Rl
bXBsYXRlIDw+CitpbmxpbmUgdWludDMyX3QgUmFuZGVuUG9vbEVudHJ5OjpHZW5lcmF0ZTx1aW50
MzJfdD4oKSB7CisgIFNwaW5Mb2NrSG9sZGVyIGwoJm11Xyk7CisgIE1heWJlUmVmaWxsKCk7Cisg
IHJldHVybiBzdGF0ZV9bbmV4dF8rK107Cit9CisKK3RlbXBsYXRlIDw+CitpbmxpbmUgdWludDY0
X3QgUmFuZGVuUG9vbEVudHJ5OjpHZW5lcmF0ZTx1aW50NjRfdD4oKSB7CisgIFNwaW5Mb2NrSG9s
ZGVyIGwoJm11Xyk7CisgIGlmIChuZXh0XyA+PSBrU3RhdGUgLSAxKSB7CisgICAgbmV4dF8gPSBr
Q2FwYWNpdHk7CisgICAgaW1wbF8uR2VuZXJhdGUoc3RhdGVfKTsKKyAgfQorICBhdXRvIHAgPSBz
dGF0ZV8gKyBuZXh0XzsKKyAgbmV4dF8gKz0gMjsKKworICB1aW50NjRfdCByZXN1bHQ7CisgIHN0
ZDo6bWVtY3B5KCZyZXN1bHQsIHAsIHNpemVvZihyZXN1bHQpKTsKKyAgcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCBSYW5kZW5Qb29sRW50cnk6OkZpbGwodWludDhfdCogb3V0LCBzaXplX3QgYnl0
ZXMpIHsKKyAgU3BpbkxvY2tIb2xkZXIgbCgmbXVfKTsKKyAgd2hpbGUgKGJ5dGVzID4gMCkgewor
ICAgIE1heWJlUmVmaWxsKCk7CisgICAgc2l6ZV90IHJlbWFpbmluZyA9IChrU3RhdGUgLSBuZXh0
XykgKiBzaXplb2Yoc3RhdGVfWzBdKTsKKyAgICBzaXplX3QgdG9fY29weSA9IHN0ZDo6bWluKGJ5
dGVzLCByZW1haW5pbmcpOworICAgIHN0ZDo6bWVtY3B5KG91dCwgJnN0YXRlX1tuZXh0X10sIHRv
X2NvcHkpOworICAgIG91dCArPSB0b19jb3B5OworICAgIGJ5dGVzIC09IHRvX2NvcHk7CisgICAg
bmV4dF8gKz0gKHRvX2NvcHkgKyBzaXplb2Yoc3RhdGVfWzBdKSAtIDEpIC8gc2l6ZW9mKHN0YXRl
X1swXSk7CisgIH0KK30KKworLy8gTnVtYmVyIG9mIHBvb2xlZCB1cmJnIGVudHJpZXMuCitzdGF0
aWMgY29uc3RleHByIGludCBrUG9vbFNpemUgPSA4OworCisvLyBTaGFyZWQgcG9vbCBlbnRyaWVz
Lgorc3RhdGljIGFic2w6Om9uY2VfZmxhZyBwb29sX29uY2U7CitBQlNMX0NBQ0hFTElORV9BTElH
TkVEIHN0YXRpYyBSYW5kZW5Qb29sRW50cnkqIHNoYXJlZF9wb29sc1trUG9vbFNpemVdOworCisv
LyBSZXR1cm5zIGFuIGlkIGluIHRoZSByYW5nZSBbMCAuLi4ga1Bvb2xTaXplKSwgd2hpY2ggaW5k
ZXhlcyBpbnRvIHRoZQorLy8gcG9vbCBvZiByYW5kb20gZW5naW5lcy4KKy8vCisvLyBFYWNoIHRo
cmVhZCB0byBhY2Nlc3MgdGhlIHBvb2wgaXMgYXNzaWduZWQgYSBzZXF1ZW50aWFsIElEICh3aXRo
b3V0IHJldXNlKQorLy8gZnJvbSB0aGUgcG9vbC1pZCBzcGFjZTsgdGhlIGlkIGlzIGNhY2hlZCBp
biBhIHRocmVhZF9sb2NhbCB2YXJpYWJsZS4KKy8vIFRoaXMgaWQgaXMgYXNzaWduZWQgYmFzZWQg
b24gdGhlIGFycml2YWwtb3JkZXIgb2YgdGhlIHRocmVhZCB0byB0aGUKKy8vIEdldFBvb2xJRCBj
YWxsOyB0aGlzIGhhcyBubyBiaW5hcnksIENMLCBvciBydW50aW1lIHN0YWJpbGl0eSBiZWNhdXNl
CisvLyBvbiBzdWJzZXF1ZW50IHJ1bnMgdGhlIG9yZGVyIHdpdGhpbiB0aGUgc2FtZSBwcm9ncmFt
IG1heSBiZSBzaWduaWZpY2FudGx5CisvLyBkaWZmZXJlbnQuIEhvd2V2ZXIsIGFzIG90aGVyIHRo
cmVhZCBJRHMgYXJlIG5vdCBhc3NpZ25lZCBzZXF1ZW50aWFsbHksCisvLyB0aGlzIGlzIG5vdCBl
eHBlY3RlZCB0byBtYXR0ZXIuCitpbnQgR2V0UG9vbElEKCkgeworICBzdGF0aWNfYXNzZXJ0KGtQ
b29sU2l6ZSA+PSAxLAorICAgICAgICAgICAgICAgICJBdCBsZWFzdCBvbmUgdXJiZyBpbnN0YW5j
ZSBpcyByZXF1aXJlZCBmb3IgUG9vbFVSQkciKTsKKworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGlj
IHN0ZDo6YXRvbWljPGludDY0X3Q+IHNlcXVlbmNlezB9OworCisjaWZkZWYgQUJTTF9IQVZFX1RI
UkVBRF9MT0NBTAorICBzdGF0aWMgdGhyZWFkX2xvY2FsIGludCBteV9wb29sX2lkID0gLTE7Cisg
IGlmIChBQlNMX1BSRURJQ1RfRkFMU0UobXlfcG9vbF9pZCA8IDApKSB7CisgICAgbXlfcG9vbF9p
ZCA9IChzZXF1ZW5jZSsrICUga1Bvb2xTaXplKTsKKyAgfQorICByZXR1cm4gbXlfcG9vbF9pZDsK
KyNlbHNlCisgIHN0YXRpYyBwdGhyZWFkX2tleV90IHRpZF9rZXkgPSBbXSB7CisgICAgcHRocmVh
ZF9rZXlfdCB0bXBfa2V5OworICAgIGludCBlcnIgPSBwdGhyZWFkX2tleV9jcmVhdGUoJnRtcF9r
ZXksIG51bGxwdHIpOworICAgIGlmIChlcnIpIHsKKyAgICAgIEFCU0xfUkFXX0xPRyhGQVRBTCwg
InB0aHJlYWRfa2V5X2NyZWF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycik7CisgICAgfQorICAgIHJl
dHVybiB0bXBfa2V5OworICB9KCk7CisKKyAgLy8gU3RvcmUgdGhlIHZhbHVlIGluIHRoZSBwdGhy
ZWFkX3tnZXQvc2V0fXNwZWNpZmljLiBIb3dldmVyIGFuIHVuaW5pdGlhbGl6ZWQKKyAgLy8gdmFs
dWUgaXMgMCwgc28gYWRkICsxIHRvIGRpc3Rpbmd1aXNoIGZyb20gdGhlIG51bGwgdmFsdWUuCisg
IGludHB0cl90IG15X3Bvb2xfaWQgPQorICAgICAgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
cHRocmVhZF9nZXRzcGVjaWZpYyh0aWRfa2V5KSk7CisgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0Uo
bXlfcG9vbF9pZCA9PSAwKSkgeworICAgIC8vIE5vIGFsbG9jYXRlZCBJRCwgYWxsb2NhdGUgdGhl
IG5leHQgdmFsdWUsIGNhY2hlIGl0LCBhbmQgcmV0dXJuLgorICAgIG15X3Bvb2xfaWQgPSAoc2Vx
dWVuY2UrKyAlIGtQb29sU2l6ZSkgKyAxOworICAgIGludCBlcnIgPSBwdGhyZWFkX3NldHNwZWNp
ZmljKHRpZF9rZXksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG15X3Bvb2xfaWQpKTsKKyAgICBp
ZiAoZXJyKSB7CisgICAgICBBQlNMX1JBV19MT0coRkFUQUwsICJwdGhyZWFkX3NldHNwZWNpZmlj
IGZhaWxlZCB3aXRoICVkIiwgZXJyKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIG15X3Bvb2xfaWQg
LSAxOworI2VuZGlmCit9CisKKy8vIEFsbG9jYXRlIGEgUmFuZGVuUG9vbEVudHJ5IHdpdGggYXQg
bGVhc3QgMzItYnl0ZSBhbGlnbm1lbnQsIHdoaWNoIGlzIHJlcXVpcmVkCisvLyBieSBBUk0gcGxh
dGZvcm0gY29kZS4KK1JhbmRlblBvb2xFbnRyeSogUG9vbEFsaWduZWRBbGxvYygpIHsKKyAgY29u
c3RleHByIHNpemVfdCBrQWxpZ25tZW50ID0KKyAgICAgIEFCU0xfQ0FDSEVMSU5FX1NJWkUgPiAz
MiA/IEFCU0xfQ0FDSEVMSU5FX1NJWkUgOiAzMjsKKworICAvLyBOb3QgYWxsIHRoZSBwbGF0Zm9y
bXMgdGhhdCB3ZSBidWlsZCBmb3IgaGF2ZSBzdGQ6OmFsaWduZWRfYWxsb2MsIGhvd2V2ZXIKKyAg
Ly8gc2luY2Ugd2UgbmV2ZXIgZnJlZSB0aGVzZSBvYmplY3RzLCB3ZSBjYW4gb3ZlciBhbGxvY2F0
ZSBhbmQgbXVuZ2UgdGhlCisgIC8vIHBvaW50ZXJzIHRvIHRoZSBjb3JyZWN0IGFsaWdubWVudC4K
KyAgdm9pZCogbWVtb3J5ID0gc3RkOjptYWxsb2Moc2l6ZW9mKFJhbmRlblBvb2xFbnRyeSkgKyBr
QWxpZ25tZW50KTsKKyAgYXV0byB4ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obWVtb3J5
KTsKKyAgYXV0byB5ID0geCAlIGtBbGlnbm1lbnQ7CisgIHZvaWQqIGFsaWduZWQgPQorICAgICAg
KHkgPT0gMCkgPyBtZW1vcnkgOiByZWludGVycHJldF9jYXN0PHZvaWQqPih4ICsga0FsaWdubWVu
dCAtIHkpOworICByZXR1cm4gbmV3IChhbGlnbmVkKSBSYW5kZW5Qb29sRW50cnkoKTsKK30KKwor
Ly8gQWxsb2NhdGUgYW5kIGluaXRpYWxpemUga1Bvb2xTaXplIG9iamVjdHMgb2YgdHlwZSBSYW5k
ZW5Qb29sRW50cnkuCisvLworLy8gVGhlIGluaXRpYWxpemF0aW9uIHN0cmF0ZWd5IGlzIHRvIGlu
aXRpYWxpemUgb25lIG9iamVjdCBkaXJlY3RseSBmcm9tCisvLyBPUyBlbnRyb3B5LCB0aGVuIHRv
IHVzZSB0aGF0IG9iamVjdCB0byBzZWVkIGFsbCBvZiB0aGUgaW5kaXZpZHVhbAorLy8gcG9vbCBp
bnN0YW5jZXMuCit2b2lkIEluaXRQb29sVVJCRygpIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3Qga1NlZWRTaXplID0KKyAgICAgIFJhbmRlblRyYWl0czo6a1N0YXRlQnl0ZXMgLyBzaXplb2Yo
dWludDMyX3QpOworICAvLyBSZWFkIHRoZSBzZWVkIGRhdGEgZnJvbSBPUyBlbnRyb3B5IG9uY2Uu
CisgIHVpbnQzMl90IHNlZWRfbWF0ZXJpYWxba1Bvb2xTaXplICoga1NlZWRTaXplXTsKKyAgaWYg
KCFyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5KAorICAgICAg
ICAgIGFic2w6Ok1ha2VTcGFuKHNlZWRfbWF0ZXJpYWwpKSkgeworICAgIHJhbmRvbV9pbnRlcm5h
bDo6VGhyb3dTZWVkR2VuRXhjZXB0aW9uKCk7CisgIH0KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBr
UG9vbFNpemU7IGkrKykgeworICAgIHNoYXJlZF9wb29sc1tpXSA9IFBvb2xBbGlnbmVkQWxsb2Mo
KTsKKyAgICBzaGFyZWRfcG9vbHNbaV0tPkluaXQoCisgICAgICAgIGFic2w6Ok1ha2VTcGFuKCZz
ZWVkX21hdGVyaWFsW2kgKiBrU2VlZFNpemVdLCBrU2VlZFNpemUpKTsKKyAgfQorfQorCisvLyBS
ZXR1cm5zIHRoZSBwb29sIGVudHJ5IGZvciB0aGUgY3VycmVudCB0aHJlYWQuCitSYW5kZW5Qb29s
RW50cnkqIEdldFBvb2xGb3JDdXJyZW50VGhyZWFkKCkgeworICBhYnNsOjpjYWxsX29uY2UocG9v
bF9vbmNlLCBJbml0UG9vbFVSQkcpOworICByZXR1cm4gc2hhcmVkX3Bvb2xzW0dldFBvb2xJRCgp
XTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordHlwZW5h
bWUgUmFuZGVuUG9vbDxUPjo6cmVzdWx0X3R5cGUgUmFuZGVuUG9vbDxUPjo6R2VuZXJhdGUoKSB7
CisgIGF1dG8qIHBvb2wgPSBHZXRQb29sRm9yQ3VycmVudFRocmVhZCgpOworICByZXR1cm4gcG9v
bC0+R2VuZXJhdGU8VD4oKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFJhbmRl
blBvb2w8VD46OkZpbGwoYWJzbDo6U3BhbjxyZXN1bHRfdHlwZT4gZGF0YSkgeworICBhdXRvKiBw
b29sID0gR2V0UG9vbEZvckN1cnJlbnRUaHJlYWQoKTsKKyAgcG9vbC0+RmlsbChyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksCisgICAgICAgICAgICAgZGF0YS5zaXplKCkg
KiBzaXplb2YocmVzdWx0X3R5cGUpKTsKK30KKwordGVtcGxhdGUgY2xhc3MgUmFuZGVuUG9vbDx1
aW50OF90PjsKK3RlbXBsYXRlIGNsYXNzIFJhbmRlblBvb2w8dWludDE2X3Q+OwordGVtcGxhdGUg
Y2xhc3MgUmFuZGVuUG9vbDx1aW50MzJfdD47Cit0ZW1wbGF0ZSBjbGFzcyBSYW5kZW5Qb29sPHVp
bnQ2NF90PjsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNw
YWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmcuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjJkZDRiZmNl
ZWJhMmQ5ZmE3MzgxMWE2YjRmMjBiOWQ5MWY2MWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZy5oCkBAIC0wLDAgKzEsMTI5IEBACisvLyBDb3B5cmln
aHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRF
Uk5BTF9QT09MX1VSQkdfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfUE9PTF9VUkJH
X0hfCisKKyNpbmNsdWRlIDxjaW50dHlwZXM+CisjaW5jbHVkZSA8bGltaXRzPgorCisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9z
cGFuLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgewor
CisvLyBSYW5kZW5Qb29sIGlzIGEgdGhyZWFkLXNhZmUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3Ig
W3JhbmRvbS5yZXEudXJiZ10gdGhhdAorLy8gdXNlcyBhbiB1bmRlcmx5aW5nIHBvb2wgb2YgUmFu
ZGVuIGdlbmVyYXRvcnMgdG8gZ2VuZXJhdGUgdmFsdWVzLiAgRWFjaCB0aHJlYWQKKy8vIGhhcyBh
ZmZpbml0eSB0byBvbmUgaW5zdGFuY2Ugb2YgdGhlIHVuZGVybHlpbmcgcG9vbCBnZW5lcmF0b3Jz
LiAgQ29uY3VycmVudAorLy8gYWNjZXNzIGlzIGd1YXJkZWQgYnkgYSBzcGluLWxvY2suCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFJhbmRlblBvb2wgeworIHB1YmxpYzoKKyAgdXNpbmcg
cmVzdWx0X3R5cGUgPSBUOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8cmVzdWx0
X3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiUmFuZGVuUG9vbCB0ZW1wbGF0ZSBhcmd1
bWVudCBtdXN0IGJlIGEgYnVpbHQtaW4gdW5zaWduZWQgIgorICAgICAgICAgICAgICAgICJpbnRl
Z2VyIHR5cGUiKTsKKworICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1pbikoKSB7Cisg
ICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWluKSgpOworICB9
CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZShtYXgpKCkgeworICAgIHJldHVybiAo
c3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCkoKTsKKyAgfQorCisgIFJhbmRl
blBvb2woKSB7fQorCisgIC8vIFJldHVybnMgYSBzaW5nbGUgdmFsdWUuCisgIGlubGluZSByZXN1
bHRfdHlwZSBvcGVyYXRvcigpKCkgeyByZXR1cm4gR2VuZXJhdGUoKTsgfQorCisgIC8vIEZpbGwg
ZGF0YSB3aXRoIHJhbmRvbSB2YWx1ZXMuCisgIHN0YXRpYyB2b2lkIEZpbGwoYWJzbDo6U3Bhbjxy
ZXN1bHRfdHlwZT4gZGF0YSk7CisKKyBwcm90ZWN0ZWQ6CisgIC8vIEdlbmVyYXRlIHJldHVybnMg
YSBzaW5nbGUgdmFsdWUuCisgIHN0YXRpYyByZXN1bHRfdHlwZSBHZW5lcmF0ZSgpOworfTsKKwor
ZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIFJhbmRlblBvb2w8dWludDhfdD47CitleHRlcm4gdGVtcGxh
dGUgY2xhc3MgUmFuZGVuUG9vbDx1aW50MTZfdD47CitleHRlcm4gdGVtcGxhdGUgY2xhc3MgUmFu
ZGVuUG9vbDx1aW50MzJfdD47CitleHRlcm4gdGVtcGxhdGUgY2xhc3MgUmFuZGVuUG9vbDx1aW50
NjRfdD47CisKKy8vIFBvb2xVUkJHIHVzZXMgYW4gdW5kZXJseWluZyBwb29sIG9mIHJhbmRvbSBn
ZW5lcmF0b3JzIHRvIGltcGxlbWVudCBhCisvLyB0aHJlYWQtY29tcGF0aWJsZSBbcmFuZG9tLnJl
cS51cmJnXSBpbnRlcmZhY2Ugd2l0aCBhbiBpbnRlcm5hbCBjYWNoZSBvZgorLy8gdmFsdWVzLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBrQnVmZmVyU2l6ZT4KK2NsYXNzIFBvb2xVUkJH
IHsKKyAgLy8gSW5oZXJpdGFuY2UgdG8gYWNjZXNzIHRoZSBwcm90ZWN0ZWQgc3RhdGljIG1lbWJl
cnMgb2YgUmFuZGVuUG9vbC4KKyAgdXNpbmcgdW5zaWduZWRfdHlwZSA9IHR5cGVuYW1lIG1ha2Vf
dW5zaWduZWRfYml0czxUPjo6dHlwZTsKKyAgdXNpbmcgUG9vbFR5cGUgPSBSYW5kZW5Qb29sPHVu
c2lnbmVkX3R5cGU+OworICB1c2luZyBTcGFuVHlwZSA9IGFic2w6OlNwYW48dW5zaWduZWRfdHlw
ZT47CisKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga0luaXRpYWxCdWZmZXIgPSBrQnVmZmVy
U2l6ZSArIDE7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtIYWxmQnVmZmVyID0ga0J1ZmZl
clNpemUgLyAyOworCisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IFQ7CisKKyAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3Vuc2lnbmVkPHJlc3VsdF90eXBlPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgIlBvb2xVUkJHIG11c3QgYmUgcGFyYW1ldGVyaXplZCBieSBhbiB1bnNpZ25lZCBp
bnRlZ2VyIHR5cGUiKTsKKworICBzdGF0aWNfYXNzZXJ0KGtCdWZmZXJTaXplID4gMSwKKyAgICAg
ICAgICAgICAgICAiUG9vbFVSQkcgbXVzdCBiZSBwYXJhbWV0ZXJpemVkIGJ5IGEgYnVmZmVyLXNp
emUgPiAxIik7CisKKyAgc3RhdGljX2Fzc2VydChrQnVmZmVyU2l6ZSA8PSAyNTYsCisgICAgICAg
ICAgICAgICAgIlBvb2xVUkJHIG11c3QgYmUgcGFyYW1ldGVyaXplZCBieSBhIGJ1ZmZlci1zaXpl
IDw9IDI1NiIpOworCisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUobWluKSgpIHsKKyAg
ICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptaW4pKCk7CisgIH0K
KworICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1heCkoKSB7CisgICAgcmV0dXJuIChz
dGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpOworICB9CisKKyAgUG9vbFVS
QkcoKSA6IG5leHRfKGtJbml0aWFsQnVmZmVyKSB7fQorCisgIC8vIGNvcHktY29uc3RydWN0b3Ig
ZG9lcyBub3QgY29weSBjYWNoZS4KKyAgUG9vbFVSQkcoY29uc3QgUG9vbFVSQkcmKSA6IG5leHRf
KGtJbml0aWFsQnVmZmVyKSB7fQorICBjb25zdCBQb29sVVJCRyYgb3BlcmF0b3I9KGNvbnN0IFBv
b2xVUkJHJikgeworICAgIG5leHRfID0ga0luaXRpYWxCdWZmZXI7CisgICAgcmV0dXJuICp0aGlz
OworICB9CisKKyAgLy8gbW92ZS1jb25zdHJ1Y3RvciBkb2VzIG1vdmUgY2FjaGUuCisgIFBvb2xV
UkJHKFBvb2xVUkJHJiYpID0gZGVmYXVsdDsKKyAgUG9vbFVSQkcmIG9wZXJhdG9yPShQb29sVVJC
RyYmKSA9IGRlZmF1bHQ7CisKKyAgaW5saW5lIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKSB7Cisg
ICAgaWYgKG5leHRfID49IGtCdWZmZXJTaXplKSB7CisgICAgICBuZXh0XyA9IChrQnVmZmVyU2l6
ZSA+IDIgJiYgbmV4dF8gPiBrQnVmZmVyU2l6ZSkgPyBrSGFsZkJ1ZmZlciA6IDA7CisgICAgICBQ
b29sVHlwZTo6RmlsbChTcGFuVHlwZShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkX3R5cGUqPihz
dGF0ZV8gKyBuZXh0XyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQnVmZmVyU2l6
ZSAtIG5leHRfKSk7CisgICAgfQorICAgIHJldHVybiBzdGF0ZV9bbmV4dF8rK107CisgIH0KKwor
IHByaXZhdGU6CisgIC8vIEJ1ZmZlciBzaXplLgorICBzaXplX3QgbmV4dF87ICAvLyBpbmRleCB3
aXRoaW4gc3RhdGVfCisgIHJlc3VsdF90eXBlIHN0YXRlX1trQnVmZmVyU2l6ZV07Cit9OworCit9
ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
ZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1BPT0xfVVJCR19IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3Bvb2xfdXJiZ190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzZjRlYWNmMTZmZTY0ODkyMjMw
ZjYxZTQxZDk3MGM4NzIyMTJmNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50
ZXJuYWwvcG9vbF91cmJnX3Rlc3QuY2MKQEAgLTAsMCArMSwxODIgQEAKKy8vIENvcHlyaWdodCAy
MDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJu
YWwvcG9vbF91cmJnLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Yml0c2V0
PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8aXRlcmF0
b3I+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBl
X3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvc3Bhbi5oIgorCit1c2luZyBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OlBvb2xVUkJHOwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpS
YW5kZW5Qb29sOworCituYW1lc3BhY2UgeworCisvLyBpc19yYW5kZW5fcG9vbCB0cmFpdCBpcyB0
cnVlIHdoZW4gcGFyYW1ldGVyaXplZCBieSBhbiBSYW5kZW5Qb29sCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3VzaW5nIGlzX3JhbmRlbl9wb29sID0gdHlwZW5hbWUgYWJzbDo6ZGlzanVuY3Rpb248
ICAvLworICAgIHN0ZDo6aXNfc2FtZTxULCBSYW5kZW5Qb29sPHVpbnQ4X3Q+PiwgICAgICAgICAg
IC8vCisgICAgc3RkOjppc19zYW1lPFQsIFJhbmRlblBvb2w8dWludDE2X3Q+PiwgICAgICAgICAg
Ly8KKyAgICBzdGQ6OmlzX3NhbWU8VCwgUmFuZGVuUG9vbDx1aW50MzJfdD4+LCAgICAgICAgICAv
LworICAgIHN0ZDo6aXNfc2FtZTxULCBSYW5kZW5Qb29sPHVpbnQ2NF90Pj4+OyAgICAgICAgIC8v
CisKKy8vIE15RmlsbCBlaXRoZXIgY2FsbHMgUmFuZGVuUG9vbDo6RmlsbCgpIG9yIHN0ZDo6Z2Vu
ZXJhdGUoLi4uLCBybmcpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KK3R5cGVu
YW1lIGFic2w6OmVuYWJsZV9pZl90PGFic2w6Om5lZ2F0aW9uPGlzX3JhbmRlbl9wb29sPFQ+Pjo6
dmFsdWUsIHZvaWQ+ICAvLworTXlGaWxsKFQmIHJuZywgYWJzbDo6U3BhbjxWPiBkYXRhKSB7ICAv
LyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4o
ZGF0YSksIHN0ZDo6ZW5kKGRhdGEpLCBybmcpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVj4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PGlzX3JhbmRlbl9wb29sPFQ+
Ojp2YWx1ZSwgdm9pZD4gIC8vCitNeUZpbGwoVCYgcm5nLCBhYnNsOjpTcGFuPFY+IGRhdGEpIHsg
IC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgIHJuZy5GaWxsKGRhdGEpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lVHlwZT4KK2NsYXNzIFBvb2xVUkJHVHlwZWRUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKwordXNpbmcgRW5naW5lVHlwZXMgPSA6OnRlc3Rp
bmc6OlR5cGVzPCAgLy8KKyAgICBSYW5kZW5Qb29sPHVpbnQ4X3Q+LCAgICAgICAgICAgICAgIC8v
CisgICAgUmFuZGVuUG9vbDx1aW50MTZfdD4sICAgICAgICAgICAgICAvLworICAgIFJhbmRlblBv
b2w8dWludDMyX3Q+LCAgICAgICAgICAgICAgLy8KKyAgICBSYW5kZW5Qb29sPHVpbnQ2NF90Piwg
ICAgICAgICAgICAgIC8vCisgICAgUG9vbFVSQkc8dWludDhfdCwgMj4sICAgICAgICAgICAgICAv
LworICAgIFBvb2xVUkJHPHVpbnQxNl90LCAyPiwgICAgICAgICAgICAgLy8KKyAgICBQb29sVVJC
Rzx1aW50MzJfdCwgMj4sICAgICAgICAgICAgIC8vCisgICAgUG9vbFVSQkc8dWludDY0X3QsIDI+
LCAgICAgICAgICAgICAvLworICAgIFBvb2xVUkJHPHVuc2lnbmVkIGludCwgOD4sICAgICAgICAg
Ly8gTk9MSU5UKHJ1bnRpbWUvaW50KQorICAgIFBvb2xVUkJHPHVuc2lnbmVkIGxvbmcsIDg+LCAg
ICAgICAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorICAgIFBvb2xVUkJHPHVuc2lnbmVkIGxvbmcg
aW50LCA0PiwgICAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorICAgIFBvb2xVUkJHPHVuc2lnbmVk
IGxvbmcgbG9uZywgND4+OyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorCitUWVBFRF9URVNUX1NV
SVRFKFBvb2xVUkJHVHlwZWRUZXN0LCBFbmdpbmVUeXBlcyk7CisKKy8vIFRoaXMgdGVzdCBpcyBj
aGVja3MgdGhhdCB0aGUgZW5naW5lcyBtZWV0IHRoZSBVUkJHIGludGVyZmFjZSByZXF1aXJlbWVu
dHMKKy8vIGRlZmluZWQgaW4gW3JhbmQucmVxLnVyYmddLgorVFlQRURfVEVTVChQb29sVVJCR1R5
cGVkVGVzdCwgVVJCR0ludGVyZmFjZSkgeworICB1c2luZyBFID0gVHlwZVBhcmFtOworICB1c2lu
ZyBUID0gdHlwZW5hbWUgRTo6cmVzdWx0X3R5cGU7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2NvcHlfY29uc3RydWN0aWJsZTxFPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgImVuZ2luZSBt
dXN0IGJlIGNvcHkgY29uc3RydWN0aWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoYWJzbDo6aXNf
Y29weV9hc3NpZ25hYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiZW5naW5lIG11c3Qg
YmUgY29weSBhc3NpZ25hYmxlIik7CisKKyAgRSBlOworICBjb25zdCBFIHg7CisKKyAgZSgpOwor
CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKGUoKSksIFQ+Ojp2YWx1ZSwK
KyAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3IoKSBtdXN0IGJlIHJlc3Vs
dF90eXBlIik7CisKKyAgRSB1MCh4KTsKKyAgdTAoKTsKKworICBFIHUxID0gZTsKKyAgdTEoKTsK
K30KKworLy8gVGhpcyB2YWxpZGF0ZXMgdGhhdCBzZXF1ZW5jZXMgYXJlIGluZGVwZW5kZW50Lgor
VFlQRURfVEVTVChQb29sVVJCR1R5cGVkVGVzdCwgVmVyaWZ5U2VxdWVuY2VzKSB7CisgIHVzaW5n
IEUgPSBUeXBlUGFyYW07CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgRTo6cmVzdWx0
X3R5cGU7CisKKyAgRSBybmc7CisgICh2b2lkKXJuZygpOyAgLy8gRGlzY2FyZCBvbmUgdmFsdWUu
CisKKyAgY29uc3RleHByIGludCBrTnVtT3V0cHV0cyA9IDY0OworICByZXN1bHRfdHlwZSBhW2tO
dW1PdXRwdXRzXTsKKyAgcmVzdWx0X3R5cGUgYltrTnVtT3V0cHV0c107CisgIHN0ZDo6ZmlsbChz
dGQ6OmJlZ2luKGIpLCBzdGQ6OmVuZChiKSwgMCk7CisKKyAgLy8gRmlsbCBhIHVzaW5nIEZpbGwg
b3IgZ2VuZXJhdGUsIGRlcGVuZGluZyBvbiB0aGUgZW5naW5lIHR5cGUuCisgIHsKKyAgICBFIHgg
PSBybmc7CisgICAgTXlGaWxsKHgsIGFic2w6Ok1ha2VTcGFuKGEpKTsKKyAgfQorCisgIC8vIEZp
bGwgYiB1c2luZyBzdGQ6OmdlbmVyYXRlKCkuCisgIHsKKyAgICBFIHggPSBybmc7CisgICAgc3Rk
OjpnZW5lcmF0ZShzdGQ6OmJlZ2luKGIpLCBzdGQ6OmVuZChiKSwgeCk7CisgIH0KKworICAvLyBU
ZXN0IHRoYXQgZ2VuZXJhdGVkIHNlcXVlbmNlIGNoYW5nZWQgYXMgc2VxdWVuY2Ugb2YgYml0cywg
aS5lLiBpZiBhYm91dAorICAvLyBoYWxmIG9mIHRoZSBiaXRlcyB3ZXJlIGZsaXBwZWQgYmV0d2Vl
biB0d28gbm9uLWNvcnJlbGF0ZWQgdmFsdWVzLgorICBzaXplX3QgY2hhbmdlZF9iaXRzID0gMDsK
KyAgc2l6ZV90IHVuY2hhbmdlZF9iaXRzID0gMDsKKyAgc2l6ZV90IHRvdGFsX3NldCA9IDA7Cisg
IHNpemVfdCB0b3RhbF9iaXRzID0gMDsKKyAgc2l6ZV90IGVxdWFsX2NvdW50ID0gMDsKKyAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBrTnVtT3V0cHV0czsgKytpKSB7CisgICAgZXF1YWxfY291bnQg
Kz0gKGFbaV0gPT0gYltpXSkgPyAxIDogMDsKKyAgICBzdGQ6OmJpdHNldDxzaXplb2YocmVzdWx0
X3R5cGUpICogOD4gYml0c2V0KGFbaV0gXiBiW2ldKTsKKyAgICBjaGFuZ2VkX2JpdHMgKz0gYml0
c2V0LmNvdW50KCk7CisgICAgdW5jaGFuZ2VkX2JpdHMgKz0gYml0c2V0LnNpemUoKSAtIGJpdHNl
dC5jb3VudCgpOworCisgICAgc3RkOjpiaXRzZXQ8c2l6ZW9mKHJlc3VsdF90eXBlKSAqIDg+IGFf
c2V0KGFbaV0pOworICAgIHN0ZDo6Yml0c2V0PHNpemVvZihyZXN1bHRfdHlwZSkgKiA4PiBiX3Nl
dChiW2ldKTsKKyAgICB0b3RhbF9zZXQgKz0gYV9zZXQuY291bnQoKSArIGJfc2V0LmNvdW50KCk7
CisgICAgdG90YWxfYml0cyArPSAyICogOCAqIHNpemVvZihyZXN1bHRfdHlwZSk7CisgIH0KKyAg
Ly8gT24gYXZlcmFnZSwgaGFsZiB0aGUgYml0cyBhcmUgY2hhbmdlZCBiZXR3ZWVuIHR3byBjYWxs
cy4KKyAgRVhQRUNUX0xFKGNoYW5nZWRfYml0cywgMC42MCAqIChjaGFuZ2VkX2JpdHMgKyB1bmNo
YW5nZWRfYml0cykpOworICBFWFBFQ1RfR0UoY2hhbmdlZF9iaXRzLCAwLjQwICogKGNoYW5nZWRf
Yml0cyArIHVuY2hhbmdlZF9iaXRzKSk7CisKKyAgLy8gdmVyaWZ5IHVzaW5nIGEgcXVpY2sgbm9y
bWFsLWFwcHJveGltYXRpb24gdG8gdGhlIGJpbm9taWFsLgorICBFWFBFQ1RfTkVBUih0b3RhbF9z
ZXQsIHRvdGFsX2JpdHMgKiAwLjUsIDQgKiBzdGQ6OnNxcnQodG90YWxfYml0cykpCisgICAgICA8
PCAiQCIgPDwgdG90YWxfc2V0IC8gc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbF9iaXRzKTsKKwor
ICAvLyBBbHNvLCBBW2ldID09IEJbaV0gd2l0aCBwcm9iYWJpbGl0eSAoMS9yYW5nZSkgKiBOLgor
ICAvLyBHaXZlIHRoaXMgYSBwcmV0dHkgd2lkZSBsYXRpdHVkZSwgdGhvdWdoLgorICBjb25zdCBk
b3VibGUga0V4cGVjdGVkID0ga051bU91dHB1dHMgLyAoMS4wICogc2l6ZW9mKHJlc3VsdF90eXBl
KSAqIDgpOworICBFWFBFQ1RfTEUoZXF1YWxfY291bnQsIDEuMCArIGtFeHBlY3RlZCk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZQorCisvKgorJCBuYW5vYmVuY2htYXJrcyAxIFJhbmRlblBvb2wgY29u
c3RydWN0CiskIG5hbm9iZW5jaG1hcmtzIDEgUG9vbFVSQkcgY29uc3RydWN0CisKK1JhbmRlblBv
b2w8dWludDMyX3Q+IHwgMSAgICB8IDEwMDAgfCAgICA0ODQ4Mi4wMCB0aWNrcyB8IDQ4LjQ4IHRp
Y2tzIHwgMTMuOSBucworUmFuZGVuUG9vbDx1aW50MzJfdD4gfCAxMCAgIHwgMjAwMCB8ICAxMDI4
Nzk1LjAwIHRpY2tzIHwgNTEuNDQgdGlja3MgfCAxNC43IG5zCitSYW5kZW5Qb29sPHVpbnQzMl90
PiB8IDEwMCAgfCAxMDAwIHwgIDUxMTk5NjguMDAgdGlja3MgfCA1MS4yMCB0aWNrcyB8IDE0LjYg
bnMKK1JhbmRlblBvb2w8dWludDMyX3Q+IHwgMTAwMCB8ICA1MDAgfCAyNTg2NzkzNi4wMCB0aWNr
cyB8IDUxLjc0IHRpY2tzIHwgMTQuOCBucworCitSYW5kZW5Qb29sPHVpbnQ2NF90PiB8IDEgICAg
fCAxMDAwIHwgICAgNDk5MjEuMDAgdGlja3MgfCA0OS45MiB0aWNrcyB8IDE0LjMgbnMKK1JhbmRl
blBvb2w8dWludDY0X3Q+IHwgMTAgICB8IDIwMDAgfCAgMTIwODI2OS4wMCB0aWNrcyB8IDYwLjQx
IHRpY2tzIHwgMTcuMyBucworUmFuZGVuUG9vbDx1aW50NjRfdD4gfCAxMDAgIHwgMTAwMCB8ICA1
ODQ0OTU1LjAwIHRpY2tzIHwgNTguNDUgdGlja3MgfCAxNi43IG5zCitSYW5kZW5Qb29sPHVpbnQ2
NF90PiB8IDEwMDAgfCAgNTAwIHwgMjg3Njc0MDQuMDAgdGlja3MgfCA1Ny41MyB0aWNrcyB8IDE2
LjQgbnMKKworUG9vbFVSQkc8dWludDMyX3QsOD4gfCAxICAgIHwgMTAwMCB8ICAgIDg2NDMxLjAw
IHRpY2tzIHwgODYuNDMgdGlja3MgfCAyNC43IG5zCitQb29sVVJCRzx1aW50MzJfdCw4PiB8IDEw
ICAgfCAxMDAwIHwgICAyMDYxOTEuMDAgdGlja3MgfCAyMC42MiB0aWNrcyB8ICA1LjkgbnMKK1Bv
b2xVUkJHPHVpbnQzMl90LDg+IHwgMTAwICB8IDEwMDAgfCAgMTUxNjA0OS4wMCB0aWNrcyB8IDE1
LjE2IHRpY2tzIHwgIDQuMyBucworUG9vbFVSQkc8dWludDMyX3QsOD4gfCAxMDAwIHwgIDUwMCB8
ICA3NjEzOTM2LjAwIHRpY2tzIHwgMTUuMjMgdGlja3MgfCAgNC40IG5zCisKK1Bvb2xVUkJHPHVp
bnQ2NF90LDQ+IHwgMSAgICB8IDEwMDAgfCAgICA5NjY2OC4wMCB0aWNrcyB8IDk2LjY3IHRpY2tz
IHwgMjcuNiBucworUG9vbFVSQkc8dWludDY0X3QsND4gfCAxMCAgIHwgMTAwMCB8ICAgMjgyNDIz
LjAwIHRpY2tzIHwgMjguMjQgdGlja3MgfCAgOC4xIG5zCitQb29sVVJCRzx1aW50NjRfdCw0PiB8
IDEwMCAgfCAxMDAwIHwgIDI2MDk1ODcuMDAgdGlja3MgfCAyNi4xMCB0aWNrcyB8ICA3LjUgbnMK
K1Bvb2xVUkJHPHVpbnQ2NF90LDQ+IHwgMTAwMCB8ICA1MDAgfCAxMjQwODc1Ny4wMCB0aWNrcyB8
IDI0LjgyIHRpY2tzIHwgIDcuMSBucworCisqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3JhbmRlbi1rZXlzLmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4ta2V5
cy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmE0YjE2NjgzNTM3NzU4ZTZjZjYyZTU4MjM4Y2Y2MDJlMzI0MWYz
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4ta2V5cy5p
bmMKQEAgLTAsMCArMSwyMDcgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9LRVlTX0lOQ18KKyNk
ZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0tFWVNfSU5DXworCisvLyBUZXh0dWFs
IGhlYWRlciB0byBpbmNsdWRlIHRoZSByYW5kZW5fa2V5cyB3aGVyZSBuZWNlc3NhcnkuCisvLyBS
RVFVSVJFUzogc3RydWN0IHU2NHgye30KKy8vCisvLyBQUk9WSURFUzoga0tleXMKKy8vIFBST1ZJ
REVTOiByb3VuZF9rZXlzW10KKworLy8gIk5vdGhpbmcgdXAgbXkgc2xlZXZlIiBudW1iZXJzIGZy
b20gdGhlIGZpcnN0IGhleCBkaWdpdHMgb2YgUGksIG9idGFpbmVkCisvLyBmcm9tIGh0dHA6Ly9o
ZXhwaS5zb3VyY2Vmb3JnZS5uZXQvLiBUaGUgYXJyYXkgd2FzIGdlbmVyYXRlZCBieSBmb2xsb3dp
bmcKKy8vIFB5dGhvbiBzY3JpcHQ6CisvKgorcHl0aG9uIDw8IEVPRgorIiIiR2VuZXJhdGVzIFJh
bmRlbiByb3VuZCBrZXlzIGFycmF5IGZyb20gcGktaGV4LjYyNTAwLnR4dCBmaWxlLiIiIgoraW1w
b3J0IGJpbmFzY2lpCisKK0tFWVMgPSAxMzYKKworZGVmIGNodW5rcyhsLCBuKToKKyAgICAiIiJZ
aWVsZCBzdWNjZXNzaXZlIG4tc2l6ZWQgY2h1bmtzIGZyb20gbC4iIiIKKyAgICBmb3IgaSBpbiBy
YW5nZSgwLCBsZW4obCksIG4pOgorICAgICAgICB5aWVsZCBsW2k6aSArIG5dCisKK2RlZiBwYWly
d2lzZSh0KToKKyAgICAiIiJUcmFuc2Zvcm1zIHNlcXVlbmNlIGludG8gc2VxdWVuY2Ugb2YgcGFp
cnMuIiIiCisgICAgaXQgPSBpdGVyKHQpCisgICAgcmV0dXJuIHppcChpdCxpdCkKKworZGVmIGRp
Z2l0c19mcm9tX3BpKCk6CisgICIiIlJlYWRzIGRpZ2l0cyBmcm9tIGhleHBpLnNvdXJjZWZvcmdl
Lm5ldCBmaWxlLiIiIgorICB3aXRoIG9wZW4oInBpLWhleC42MjUwMC50eHQiKSBhcyBmaWxlOgor
ICAgIHJldHVybiBmaWxlLnJlYWQoKQorCitkZWYgZGlnaXRzX2Zyb21fdXJhbmRvbSgpOgorICAi
IiJSZWFkcyBkaWdpdHMgZnJvbSAvZGV2L3VyYW5kb20uIiIiCisgIHdpdGggb3BlbigiL2Rldi91
cmFuZG9tIikgYXMgZmlsZToKKyAgICByZXR1cm4gYmluYXNjaWkuaGV4bGlmeShmaWxlLnJlYWQo
S0VZUyAqIDE2KSkKKworZGlnaXRzID0gZGlnaXRzX2Zyb21fcGkoKQorcHJpbnQoInN0YXRpYyBj
b25zdGV4cHIgY29uc3Qgc2l6ZV90IGtSb3VuZEtleXMgPSB7MH07XG4iLmZvcm1hdChLRVlTKSkK
K3ByaW50KCJhbGlnbmFzKDE2KSBjb25zdGV4cHIgY29uc3QgdTY0eDIgcm91bmRfa2V5c1trUm91
bmRLZXlzXSA9IHsiKQorCitmb3IgaSwgKGhpLCBsbykgaW4gemlwKHJhbmdlKEtFWVMpLCBwYWly
d2lzZShjaHVua3MoZGlnaXRzLCAxNikpKToKKyAgaGkgPSAiMHh7MH11bGwiLmZvcm1hdChoaSkK
KyAgbG8gPSAiMHh7MH11bGwiLmZvcm1hdChsbykKKyAgcHJpbnQoIiAgdTY0eDIoezB9LCB7MX0p
ezJ9Ii5mb3JtYXQoaGksIGxvLCAnLCcgaWYgaSsxIDwgS0VZUyBlbHNlICcnKSkKKworcHJpbnQo
In07IikKK0VPRgorKi8KKworc3RhdGljIGNvbnN0ZXhwciBjb25zdCBzaXplX3Qga1JvdW5kS2V5
cyA9IDEzNjsKKworYWxpZ25hcygxNikgY29uc3RleHByIHU2NHgyIHJvdW5kX2tleXNba1JvdW5k
S2V5c10gPSB7CisgICAgdTY0eDIoMHgyNDNGNkE4ODg1QTMwOEQzdWxsLCAweDEzMTk4QTJFMDM3
MDczNDR1bGwpLAorICAgIHU2NHgyKDB4QTQwOTM4MjIyOTlGMzFEMHVsbCwgMHgwODJFRkE5OEVD
NEU2Qzg5dWxsKSwKKyAgICB1NjR4MigweDQ1MjgyMUU2MzhEMDEzNzd1bGwsIDB4QkU1NDY2Q0Yz
NEU5MEM2Q3VsbCksCisgICAgdTY0eDIoMHhDMEFDMjlCN0M5N0M1MEREdWxsLCAweDNGODRENUI1
QjU0NzA5MTd1bGwpLAorICAgIHU2NHgyKDB4OTIxNkQ1RDk4OTc5RkIxQnVsbCwgMHhEMTMxMEJB
Njk4REZCNUFDdWxsKSwKKyAgICB1NjR4MigweDJGRkQ3MkRCRDAxQURGQjd1bGwsIDB4QjhFMUFG
RUQ2QTI2N0U5NnVsbCksCisgICAgdTY0eDIoMHhCQTdDOTA0NUYxMkM3Rjk5dWxsLCAweDI0QTE5
OTQ3QjM5MTZDRjd1bGwpLAorICAgIHU2NHgyKDB4MDgwMUYyRTI4NThFRkMxNnVsbCwgMHg2MzY5
MjBEODcxNTc0RTY5dWxsKSwKKyAgICB1NjR4MigweEE0NThGRUEzRjQ5MzNEN0V1bGwsIDB4MEQ5
NTc0OEY3MjhFQjY1OHVsbCksCisgICAgdTY0eDIoMHg3MThCQ0Q1ODgyMTU0QUVFdWxsLCAweDdC
NTRBNDFEQzI1QTU5QjV1bGwpLAorICAgIHU2NHgyKDB4OUMzMEQ1MzkyQUYyNjAxM3VsbCwgMHhD
NUQxQjAyMzI4NjA4NUYwdWxsKSwKKyAgICB1NjR4MigweENBNDE3OTE4QjhEQjM4RUZ1bGwsIDB4
OEU3OURDQjA2MDNBMTgwRXVsbCksCisgICAgdTY0eDIoMHg2QzlFMEU4QkIwMUU4QTNFdWxsLCAw
eEQ3MTU3N0MxQkQzMTRCMjd1bGwpLAorICAgIHU2NHgyKDB4NzhBRjJGREE1NTYwNUM2MHVsbCwg
MHhFNjU1MjVGM0FBNTVBQjk0dWxsKSwKKyAgICB1NjR4MigweDU3NDg5ODYyNjNFODE0NDB1bGws
IDB4NTVDQTM5NkEyQUFCMTBCNnVsbCksCisgICAgdTY0eDIoMHhCNENDNUMzNDExNDFFOENFdWxs
LCAweEExNTQ4NkFGN0M3MkU5OTN1bGwpLAorICAgIHU2NHgyKDB4QjNFRTE0MTE2MzZGQkMyQXVs
bCwgMHgyQkE5QzU1RDc0MTgzMUY2dWxsKSwKKyAgICB1NjR4MigweENFNUMzRTE2OUI4NzkzMUV1
bGwsIDB4QUZENkJBMzM2QzI0Q0Y1Q3VsbCksCisgICAgdTY0eDIoMHg3QTMyNTM4MTI4OTU4Njc3
dWxsLCAweDNCOEY0ODk4NkI0QkI5QUZ1bGwpLAorICAgIHU2NHgyKDB4QzRCRkU4MUI2NjI4MjE5
M3VsbCwgMHg2MUQ4MDlDQ0ZCMjFBOTkxdWxsKSwKKyAgICB1NjR4MigweDQ4N0NBQzYwNURFQzgw
MzJ1bGwsIDB4RUY4NDVENURFOTg1NzVCMXVsbCksCisgICAgdTY0eDIoMHhEQzI2MjMwMkVCNjUx
Qjg4dWxsLCAweDIzODkzRTgxRDM5NkFDQzV1bGwpLAorICAgIHU2NHgyKDB4MEY2RDZGRjM4M0Y0
NDIzOXVsbCwgMHgyRTBCNDQ4MkE0ODQyMDA0dWxsKSwKKyAgICB1NjR4MigweDY5QzhGMDRBOUUx
RjlCNUV1bGwsIDB4MjFDNjY4NDJGNkU5NkM5QXVsbCksCisgICAgdTY0eDIoMHg2NzBDOUM2MUFC
RDM4OEYwdWxsLCAweDZBNTFBMEQyRDg1NDJGNjh1bGwpLAorICAgIHU2NHgyKDB4OTYwRkE3MjhB
QjUxMzNBM3VsbCwgMHg2RUVGMEI2QzEzN0EzQkU0dWxsKSwKKyAgICB1NjR4MigweEJBM0JGMDUw
N0VGQjJBOTh1bGwsIDB4QTFGMTY1MUQzOUFGMDE3NnVsbCksCisgICAgdTY0eDIoMHg2NkNBNTkz
RTgyNDMwRTg4dWxsLCAweDhDRUU4NjE5NDU2RjlGQjR1bGwpLAorICAgIHU2NHgyKDB4N0Q4NEE1
QzMzQjhCNUVCRXVsbCwgMHhFMDZGNzVEODg1QzEyMDczdWxsKSwKKyAgICB1NjR4MigweDQwMUE0
NDlGNTZDMTZBQTZ1bGwsIDB4NEVEM0FBNjIzNjNGNzcwNnVsbCksCisgICAgdTY0eDIoMHgxQkZF
REY3MjQyOUIwMjNEdWxsLCAweDM3RDBENzI0RDAwQTEyNDh1bGwpLAorICAgIHU2NHgyKDB4REIw
RkVBRDM0OUYxQzA5QnVsbCwgMHgwNzUzNzJDOTgwOTkxQjdCdWxsKSwKKyAgICB1NjR4MigweDI1
RDQ3OUQ4RjZFOERFRjd1bGwsIDB4RTNGRTUwMUFCNjc5NEMzQnVsbCksCisgICAgdTY0eDIoMHg5
NzZDRTBCRDA0QzAwNkJBdWxsLCAweEMxQTk0RkI2NDA5RjYwQzR1bGwpLAorICAgIHU2NHgyKDB4
NUU1QzlFQzIxOTZBMjQ2M3VsbCwgMHg2OEZCNkZBRjNFNkM1M0I1dWxsKSwKKyAgICB1NjR4Migw
eDEzMzlCMkVCM0I1MkVDNkZ1bGwsIDB4NkRGQzUxMUY5QjMwOTUyQ3VsbCksCisgICAgdTY0eDIo
MHhDQzgxNDU0NEFGNUVCRDA5dWxsLCAweEJFRTNEMDA0REUzMzRBRkR1bGwpLAorICAgIHU2NHgy
KDB4NjYwRjI4MDcxOTJFNEJCM3VsbCwgMHhDMENCQTg1NzQ1Qzg3NDBGdWxsKSwKKyAgICB1NjR4
MigweEQyMEI1RjM5QjlEM0ZCREJ1bGwsIDB4NTU3OUMwQkQxQTYwMzIwQXVsbCksCisgICAgdTY0
eDIoMHhENkExMDBDNjQwMkM3Mjc5dWxsLCAweDY3OUYyNUZFRkIxRkEzQ0N1bGwpLAorICAgIHU2
NHgyKDB4OEVBNUU5RjhEQjMyMjJGOHVsbCwgMHgzQzc1MTZERkZENjE2QjE1dWxsKSwKKyAgICB1
NjR4MigweDJGNTAxRUM4QUQwNTUyQUJ1bGwsIDB4MzIzREI1RkFGRDIzODc2MHVsbCksCisgICAg
dTY0eDIoMHg1MzMxN0I0ODNFMDBERjgydWxsLCAweDlFNUM1N0JCQ0E2RjhDQTB1bGwpLAorICAg
IHU2NHgyKDB4MUE4NzU2MkVERjE3NjlEQnVsbCwgMHhENTQyQThGNjI4N0VGRkMzdWxsKSwKKyAg
ICB1NjR4MigweEFDNjczMkM2OEM0RjU1NzN1bGwsIDB4Njk1QjI3QjBCQkNBNThDOHVsbCksCisg
ICAgdTY0eDIoMHhFMUZGQTM1REI4RjAxMUEwdWxsLCAweDEwRkEzRDk4RkQyMTgzQjh1bGwpLAor
ICAgIHU2NHgyKDB4NEFGQ0I1NkMyREQxRDM1QnVsbCwgMHg5QTUzRTQ3OUI2Rjg0NTY1dWxsKSwK
KyAgICB1NjR4MigweEQyOEU0OUJDNEJGQjk3OTB1bGwsIDB4RTFEREYyREFBNENCN0UzM3VsbCks
CisgICAgdTY0eDIoMHg2MkZCMTM0MUNFRTRDNkU4dWxsLCAweEVGMjBDQURBMzY3NzRDMDF1bGwp
LAorICAgIHU2NHgyKDB4RDA3RTlFRkUyQkYxMUZCNHVsbCwgMHg5NURCREE0REFFOTA5MTk4dWxs
KSwKKyAgICB1NjR4MigweEVBQUQ4RTcxNkI5M0Q1QTB1bGwsIDB4RDA4RUQxRDBBRkM3MjVFMHVs
bCksCisgICAgdTY0eDIoMHg4RTNDNUIyRjhFNzU5NEI3dWxsLCAweDhGRjZFMkZCRjIxMjJCNjR1
bGwpLAorICAgIHU2NHgyKDB4ODg4OEI4MTI5MDBERjAxQ3VsbCwgMHg0RkFENUVBMDY4OEZDMzFD
dWxsKSwKKyAgICB1NjR4MigweEQxQ0ZGMTkxQjNBOEMxQUR1bGwsIDB4MkYyRjIyMThCRTBFMTc3
N3VsbCksCisgICAgdTY0eDIoMHhFQTc1MkRGRThCMDIxRkExdWxsLCAweEU1QTBDQzBGQjU2Rjc0
RTh1bGwpLAorICAgIHU2NHgyKDB4MThBQ0YzRDZDRTg5RTI5OXVsbCwgMHhCNEE4NEZFMEZEMTNF
MEI3dWxsKSwKKyAgICB1NjR4MigweDdDQzQzQjgxRDJBREE4RDl1bGwsIDB4MTY1RkEyNjY4MDk1
NzcwNXVsbCksCisgICAgdTY0eDIoMHg5M0NDNzMxNDIxMUExNDc3dWxsLCAweEU2QUQyMDY1NzdC
NUZBODZ1bGwpLAorICAgIHU2NHgyKDB4Qzc1NDQyRjVGQjlEMzVDRnVsbCwgMHhFQkNEQUYwQzdC
M0U4OUEwdWxsKSwKKyAgICB1NjR4MigweEQ2NDExQkQzQUUxRTdFNDl1bGwsIDB4MDAyNTBFMkQy
MDcxQjM1RXVsbCksCisgICAgdTY0eDIoMHgyMjY4MDBCQjU3QjhFMEFGdWxsLCAweDI0NjQzNjlC
RjAwOUI5MUV1bGwpLAorICAgIHU2NHgyKDB4NTU2MzkxMUQ1OURGQTZBQXVsbCwgMHg3OEMxNDM4
OUQ5NUE1MzdGdWxsKSwKKyAgICB1NjR4MigweDIwN0Q1QkEyMDJFNUI5QzV1bGwsIDB4ODMyNjAz
NzY2Mjk1Q0ZBOXVsbCksCisgICAgdTY0eDIoMHgxMUM4MTk2ODRFNzM0QTQxdWxsLCAweEIzNDcy
RENBN0IxNEE5NEF1bGwpLAorICAgIHU2NHgyKDB4MUI1MTAwNTI5QTUzMjkxNXVsbCwgMHhENjBG
NTczRkJDOUJDNkU0dWxsKSwKKyAgICB1NjR4MigweDJCNjBBNDc2ODFFNjc0MDB1bGwsIDB4MDhC
QTZGQjU1NzFCRTkxRnVsbCksCisgICAgdTY0eDIoMHhGMjk2RUM2QjJBMEREOTE1dWxsLCAweEI2
NjM2NTIxRTdCOUY5QjZ1bGwpLAorICAgIHU2NHgyKDB4RkYzNDA1MkVDNTg1NTY2NHVsbCwgMHg1
M0IwMkQ1REE5OUY4RkExdWxsKSwKKyAgICB1NjR4MigweDA4QkE0Nzk5NkU4NTA3NkF1bGwsIDB4
NEI3QTcwRTlCNUIzMjk0NHVsbCksCisgICAgdTY0eDIoMHhEQjc1MDkyRUM0MTkyNjIzdWxsLCAw
eEFENkVBNkIwNDlBN0RGN0R1bGwpLAorICAgIHU2NHgyKDB4OUNFRTYwQjg4RkVEQjI2NnVsbCwg
MHhFQ0FBOEM3MTY5OUExOEZGdWxsKSwKKyAgICB1NjR4MigweDU2NjQ1MjZDQzJCMTlFRTF1bGws
IDB4MTkzNjAyQTU3NTA5NEMyOXVsbCksCisgICAgdTY0eDIoMHhBMDU5MTM0MEU0MTgzQTNFdWxs
LCAweDNGNTQ5ODlBNUI0MjlENjV1bGwpLAorICAgIHU2NHgyKDB4NkI4RkU0RDY5OUY3M0ZENnVs
bCwgMHhBMUQyOUMwN0VGRTgzMEY1dWxsKSwKKyAgICB1NjR4MigweDREMkQzOEU2RjAyNTVEQzF1
bGwsIDB4NENERDIwODY4NDcwRUIyNnVsbCksCisgICAgdTY0eDIoMHg2MzgyRTlDNjAyMUVDQzVF
dWxsLCAweDA5Njg2QjNGM0VCQUVGQzl1bGwpLAorICAgIHU2NHgyKDB4M0M5NzE4MTQ2QjZBNzBB
MXVsbCwgMHg2ODdGMzU4NDUyQTBFMjg2dWxsKSwKKyAgICB1NjR4MigweEI3OUM1MzA1QUE1MDA3
Mzd1bGwsIDB4M0UwNzg0MUM3RkRFQUU1Q3VsbCksCisgICAgdTY0eDIoMHg4RTdENDRFQzU3MTZG
MkI4dWxsLCAweEIwM0FEQTM3RjA1MDBDMER1bGwpLAorICAgIHU2NHgyKDB4RjAxQzFGMDQwMjAw
QjNGRnVsbCwgMHhBRTBDRjUxQTNDQjU3NEIydWxsKSwKKyAgICB1NjR4MigweDI1ODM3QTU4REMw
OTIxQkR1bGwsIDB4RDE5MTEzRjk3Q0E5MkZGNnVsbCksCisgICAgdTY0eDIoMHg5NDMyNDc3MzIy
RjU0NzAxdWxsLCAweDNBRTVFNTgxMzdDMkRBREN1bGwpLAorICAgIHU2NHgyKDB4QzhCNTc2MzQ5
QUYzRERBN3VsbCwgMHhBOTQ0NjE0NjBGRDAwMzBFdWxsKSwKKyAgICB1NjR4MigweEVDQzhDNzNF
QTQ3NTFFNDF1bGwsIDB4RTIzOENEOTkzQkVBMEUyRnVsbCksCisgICAgdTY0eDIoMHgzMjgwQkJB
MTE4M0VCMzMxdWxsLCAweDRFNTQ4QjM4NEY2REI5MDh1bGwpLAorICAgIHU2NHgyKDB4NkY0MjBE
MDNGNjBBMDRCRnVsbCwgMHgyQ0I4MTI5MDI0OTc3Qzc5dWxsKSwKKyAgICB1NjR4MigweDU2NzlC
MDcyQkNBRjg5QUZ1bGwsIDB4REU5QTc3MUZEOTkzMDgxMHVsbCksCisgICAgdTY0eDIoMHhCMzhC
QUUxMkRDQ0YzRjJFdWxsLCAweDU1MTI3MjFGMkU2QjcxMjR1bGwpLAorICAgIHU2NHgyKDB4NTAx
QURERTY5Rjg0Q0Q4N3VsbCwgMHg3QTU4NDcxODc0MDhEQTE3dWxsKSwKKyAgICB1NjR4MigweEJD
OUY5QUJDRTk0QjdEOEN1bGwsIDB4RUM3QUVDM0FEQjg1MURGQXVsbCksCisgICAgdTY0eDIoMHg2
MzA5NDM2NkM0NjRDM0QydWxsLCAweEVGMUMxODQ3MzIxNUQ4MDh1bGwpLAorICAgIHU2NHgyKDB4
REQ0MzNCMzcyNEMyQkExNnVsbCwgMHgxMkExNEQ0MzJBNjVDNDUxdWxsKSwKKyAgICB1NjR4Migw
eDUwOTQwMDAyMTMzQUU0RER1bGwsIDB4NzFERkY4OUUxMDMxNEU1NXVsbCksCisgICAgdTY0eDIo
MHg4MUFDNzdENjVGMTExOTlCdWxsLCAweDA0MzU1NkYxRDdBM0M3NkJ1bGwpLAorICAgIHU2NHgy
KDB4M0MxMTE4M0I1OTI0QTUwOXVsbCwgMHhGMjhGRTZFRDk3RjFGQkZBdWxsKSwKKyAgICB1NjR4
MigweDlFQkFCRjJDMUUxNTNDNkV1bGwsIDB4ODZFMzQ1NzBFQUU5NkZCMXVsbCksCisgICAgdTY0
eDIoMHg4NjBFNUUwQTVBM0UyQUIzdWxsLCAweDc3MUZFNzFDNEUzRDA2RkF1bGwpLAorICAgIHU2
NHgyKDB4Mjk2NURDQjk5OUU3MUQwRnVsbCwgMHg4MDNFODlENjUyNjZDODI1dWxsKSwKKyAgICB1
NjR4MigweDJFNENDOTc4OUMxMEIzNkF1bGwsIDB4QzYxNTBFQkE5NEUyRUE3OHVsbCksCisgICAg
dTY0eDIoMHhBNkZDM0M1MzFFMEEyREY0dWxsLCAweEYyRjc0RUE3MzYxRDJCM0R1bGwpLAorICAg
IHU2NHgyKDB4MTkzOTI2MEYxOUMyNzk2MHVsbCwgMHg1MjIzQTcwOEY3MTMxMkI2dWxsKSwKKyAg
ICB1NjR4MigweEVCQURGRTZFRUFDMzFGNjZ1bGwsIDB4RTNCQzQ1OTVBNjdCQzg4M3VsbCksCisg
ICAgdTY0eDIoMHhCMTdGMzdEMTAxOENGRjI4dWxsLCAweEMzMzJEREVGQkU2QzVBQTV1bGwpLAor
ICAgIHU2NHgyKDB4NjU1ODIxODU2OEFCOTcwMnVsbCwgMHhFRUNFQTUwRkRCMkY5NTNCdWxsKSwK
KyAgICB1NjR4MigweDJBRUY3REFENUI2RTJGODR1bGwsIDB4MTUyMUI2MjgyOTA3NjE3MHVsbCks
CisgICAgdTY0eDIoMHhFQ0RENDc3NTYxOUYxNTEwdWxsLCAweDEzQ0NBODMwRUI2MUJEOTZ1bGwp
LAorICAgIHU2NHgyKDB4MDMzNEZFMUVBQTAzNjNDRnVsbCwgMHhCNTczNUM5MDRDNzBBMjM5dWxs
KSwKKyAgICB1NjR4MigweEQ1OUU5RTBCQ0JBQURFMTR1bGwsIDB4RUVDQzg2QkM2MDYyMkNBN3Vs
bCksCisgICAgdTY0eDIoMHg5Q0FCNUNBQkIyRjM4NDZFdWxsLCAweDY0OEIxRUFGMTlCREYwQ0F1
bGwpLAorICAgIHU2NHgyKDB4QTAyMzY5Qjk2NTVBQkI1MHVsbCwgMHg0MDY4NUEzMjNDMkFCNEIz
dWxsKSwKKyAgICB1NjR4MigweDMxOUVFOUQ1QzAyMUI4Rjd1bGwsIDB4OUI1NDBCMTk4NzVGQTA5
OXVsbCksCisgICAgdTY0eDIoMHg5NUY3OTk3RTYyM0Q3REE4dWxsLCAweEY4Mzc4ODlBOTdFMzJE
Nzd1bGwpLAorICAgIHU2NHgyKDB4MTFFRDkzNUYxNjY4MTI4MXVsbCwgMHgwRTM1ODgyOUM3RTYx
RkQ2dWxsKSwKKyAgICB1NjR4MigweDk2REVERkExNzg1OEJBOTl1bGwsIDB4NTdGNTg0QTUxQjIy
NzI2M3VsbCksCisgICAgdTY0eDIoMHg5QjgzQzNGRjFBQzI0Njk2dWxsLCAweENEQjMwQUVCNTMy
RTMwNTR1bGwpLAorICAgIHU2NHgyKDB4OEZEOTQ4RTQ2REJDMzEyOHVsbCwgMHg1OEVCRjJFRjM0
QzZGRkVBdWxsKSwKKyAgICB1NjR4MigweEZFMjhFRDYxRUU3QzNDNzN1bGwsIDB4NUQ0QTE0RDlF
ODY0QjdFM3VsbCksCisgICAgdTY0eDIoMHg0MjEwNUQxNDIwM0UxM0UwdWxsLCAweDQ1RUVFMkI2
QTNBQUFCRUF1bGwpLAorICAgIHU2NHgyKDB4REI2QzRGMTVGQUNCNEZEMHVsbCwgMHhDNzQyRjQ0
MkVGNkFCQkI1dWxsKSwKKyAgICB1NjR4MigweDY1NEYzQjFENDFDRDIxMDV1bGwsIDB4RDgxRTc5
OUU4Njg1NERDN3VsbCksCisgICAgdTY0eDIoMHhFNDRCNDc2QTNEODE2MjUwdWxsLCAweENGNjJB
MUYyNUI4RDI2NDZ1bGwpLAorICAgIHU2NHgyKDB4RkM4ODgzQTBDMUM3QjZBM3VsbCwgMHg3RjE1
MjRDMzY5Q0I3NDkydWxsKSwKKyAgICB1NjR4MigweDQ3ODQ4QTBCNTY5MkIyODV1bGwsIDB4MDk1
QkJGMDBBRDE5NDg5RHVsbCksCisgICAgdTY0eDIoMHgxNDYyQjE3NDIzODIwRDAwdWxsLCAweDU4
NDI4RDJBMEM1NUY1RUF1bGwpLAorICAgIHU2NHgyKDB4MURBREY0M0UyMzNGNzA2MXVsbCwgMHgz
MzcyRjA5MjhEOTM3RTQxdWxsKSwKKyAgICB1NjR4MigweEQ2NUZFQ0YxNkMyMjNCREJ1bGwsIDB4
N0NERTM3NTlDQkVFNzQ2MHVsbCksCisgICAgdTY0eDIoMHg0MDg1RjJBN0NFNzczMjZFdWxsLCAw
eEE2MDc4MDg0MTlGODUwOUV1bGwpLAorICAgIHU2NHgyKDB4RThFRkQ4NTU2MUQ5OTczNXVsbCwg
MHhBOTY5QTdBQUM1MEMwNkMydWxsKSwKKyAgICB1NjR4MigweDVBMDRBQkZDODAwQkNBREN1bGws
IDB4OUU0NDdBMkVDMzQ1MzQ4NHVsbCksCisgICAgdTY0eDIoMHhGREQ1NjcwNTBFMUU5RUM5dWxs
LCAweERCNzNEQkQzMTA1NTg4Q0R1bGwpLAorICAgIHU2NHgyKDB4Njc1RkRBNzlFMzY3NDM0MHVs
bCwgMHhDNUM0MzQ2NTcxM0UzOEQ4dWxsKSwKKyAgICB1NjR4MigweDNEMjhGODlFRjE2REZGMjB1
bGwsIDB4MTUzRTIxRTc4RkIwM0Q0QXVsbCksCisgICAgdTY0eDIoMHhFNkUzOUYyQkRCODNBREY3
dWxsLCAweEU5M0Q1QTY4OTQ4MTQwRjd1bGwpLAorICAgIHU2NHgyKDB4RjY0QzI2MUM5NDY5Mjkz
NHVsbCwgMHg0MTE1MjBGNzc2MDJENEY3dWxsKSwKKyAgICB1NjR4MigweEJDRjQ2QjJFRDRBMTAw
Njh1bGwsIDB4RDQwODI0NzEzMzIwRjQ2QXVsbCksCisgICAgdTY0eDIoMHg0M0I3RDRCNzUwMDA2
MUFGdWxsLCAweDFFMzlGNjJFOTcyNDQ1NDZ1bGwpfTsKKworI2VuZGlmICAvLyBBQlNMX1JBTkRP
TV9JTlRFUk5BTF9SQU5ERU5fS0VZU19JTkNfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50
ZXJuYWwvcmFuZGVuLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbi5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYWI4MDc1YTU0Zjg5ZTZhMjhiNjk1ZmExNTk5ZTk2MWM0MDY3M2I4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbi5jYwpAQCAtMCwwICsxLDg5IEBA
CisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbi5oIgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVy
bmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVu
X2RldGVjdC5oIgorCisvLyBSQU5EZW4gPSBSQU5Eb20gZ2VuZXJhdG9yIG9yIGJlZXRyb290cyBp
biBTd2lzcyBHZXJtYW4uCisvLyAnU3Ryb25nJyAod2VsbC1kaXN0cmlidXRlZCwgdW5wcmVkaWN0
YWJsZSwgYmFja3RyYWNraW5nLXJlc2lzdGFudCkgcmFuZG9tCisvLyBnZW5lcmF0b3IsIGZhc3Rl
ciBpbiBzb21lIGJlbmNobWFya3MgdGhhbiBzdGQ6Om10MTk5MzdfNjQgYW5kIHBjZzY0X2MzMi4K
Ky8vCisvLyBIaWdoLWxldmVsIHN1bW1hcnk6CisvLyAxKSBSZXZlcmllIChzZWUgIkEgUm9idXN0
IGFuZCBTcG9uZ2UtTGlrZSBQUk5HIHdpdGggSW1wcm92ZWQgRWZmaWNpZW5jeSIpIGlzCisvLyAg
ICBhIHNwb25nZS1saWtlIHJhbmRvbSBnZW5lcmF0b3IgdGhhdCByZXF1aXJlcyBhIGNyeXB0b2dy
YXBoaWMgcGVybXV0YXRpb24uCisvLyAgICBJdCBpbXByb3ZlcyB1cG9uICJQcm92YWJseSBSb2J1
c3QgU3BvbmdlLUJhc2VkIFBSTkdzIGFuZCBLREZzIiBieQorLy8gICAgYWNoaWV2aW5nIGJhY2t0
cmFja2luZyByZXNpc3RhbmNlIHdpdGggb25seSBvbmUgUGVybXV0ZSgpIHBlciBidWZmZXIuCisv
LworLy8gMikgIlNpbXBpcmEgdjI6IEEgRmFtaWx5IG9mIEVmZmljaWVudCBQZXJtdXRhdGlvbnMg
VXNpbmcgdGhlIEFFUyBSb3VuZAorLy8gICAgRnVuY3Rpb24iIGNvbnN0cnVjdHMgdXAgdG8gMTAy
NC1iaXQgcGVybXV0YXRpb25zIHVzaW5nIGFuIGltcHJvdmVkCisvLyAgICBHZW5lcmFsaXplZCBG
ZWlzdGVsIG5ldHdvcmsgd2l0aCAyLXJvdW5kIEFFUy0xMjggZnVuY3Rpb25zLiBUaGlzIEZlaXN0
ZWwKKy8vICAgIGJsb2NrIHNodWZmbGUgYWNoaWV2ZXMgZGlmZnVzaW9uIGZhc3RlciBhbmQgaXMg
bGVzcyB2dWxuZXJhYmxlIHRvCisvLyAgICBzbGljZWQtYmljbGlxdWUgYXR0YWNrcyB0aGFuIHRo
ZSBUeXBlLTIgY3ljbGljIHNodWZmbGUuCisvLworLy8gMykgIkltcHJvdmluZyB0aGUgR2VuZXJh
bGl6ZWQgRmVpc3RlbCIgYW5kICJOZXcgY3JpdGVyaW9uIGZvciBkaWZmdXNpb24KKy8vICAgIHBy
b3BlcnR5IiBleHRlbmRzIHRoZSBzYW1lIGtpbmQgb2YgaW1wcm92ZWQgRmVpc3RlbCBibG9jayBz
aHVmZmxlIHRvIDE2CisvLyAgICBicmFuY2hlcywgd2hpY2ggZW5hYmxlcyBhIDIwNDgtYml0IHBl
cm11dGF0aW9uLgorLy8KKy8vIFdlIGNvbWJpbmUgdGhlc2UgdGhyZWUgaWRlYXMgYW5kIGFsc28g
Y2hhbmdlIFNpbXBpcmEncyBzdWJyb3VuZCBrZXlzIGZyb20KKy8vIHN0cnVjdHVyZWQvbG93LWVu
dHJvcHkgY291bnRlcnMgdG8gZGlnaXRzIG9mIFBpLgorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgcmFuZG9tX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3N0cnVjdCBSYW5kZW5TdGF0
ZSB7CisgIGNvbnN0IHZvaWQqIGtleXM7CisgIGJvb2wgaGFzX2NyeXB0bzsKK307CisKK1JhbmRl
blN0YXRlIEdldFJhbmRlblN0YXRlKCkgeworICBzdGF0aWMgY29uc3QgUmFuZGVuU3RhdGUgc3Rh
dGUgPSBbXSgpIHsKKyAgICBSYW5kZW5TdGF0ZSB0bXA7CisjaWYgQUJTTF9SQU5ET01fSU5URVJO
QUxfQUVTX0RJU1BBVENICisgICAgLy8gSFcgQUVTIERpc3BhdGNoLgorICAgIGlmIChIYXNSYW5k
ZW5Id0Flc0ltcGxlbWVudGF0aW9uKCkgJiYgQ1BVU3VwcG9ydHNSYW5kZW5Id0FlcygpKSB7Cisg
ICAgICB0bXAuaGFzX2NyeXB0byA9IHRydWU7CisgICAgICB0bXAua2V5cyA9IFJhbmRlbkh3QWVz
OjpHZXRLZXlzKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRtcC5oYXNfY3J5cHRvID0gZmFsc2U7
CisgICAgICB0bXAua2V5cyA9IFJhbmRlblNsb3c6OkdldEtleXMoKTsKKyAgICB9CisjZWxpZiBB
QlNMX0hBVkVfQUNDRUxFUkFURURfQUVTCisgICAgLy8gSFcgQUVTIGlzIGVuYWJsZWQuCisgICAg
dG1wLmhhc19jcnlwdG8gPSB0cnVlOworICAgIHRtcC5rZXlzID0gUmFuZGVuSHdBZXM6OkdldEtl
eXMoKTsKKyNlbHNlCisgICAgLy8gSFcgQUVTIGlzIGRpc2FibGVkLgorICAgIHRtcC5oYXNfY3J5
cHRvID0gZmFsc2U7CisgICAgdG1wLmtleXMgPSBSYW5kZW5TbG93OjpHZXRLZXlzKCk7CisjZW5k
aWYKKyAgICByZXR1cm4gdG1wOworICB9KCk7CisgIHJldHVybiBzdGF0ZTsKK30KKworfSAgLy8g
bmFtZXNwYWNlCisKK1JhbmRlbjo6UmFuZGVuKCkgeworICBhdXRvIHRtcCA9IEdldFJhbmRlblN0
YXRlKCk7CisgIGtleXNfID0gdG1wLmtleXM7CisjaWYgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVT
X0RJU1BBVENICisgIGhhc19jcnlwdG9fID0gdG1wLmhhc19jcnlwdG87CisjZW5kaWYKK30KKwor
fSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4uaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9p
bnRlcm5hbC9yYW5kZW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGZmMjU0NTk2ODg1MjYxYjY1YTY3YWVkNjE2
Y2MwYmEwNzkwZGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3Jh
bmRlbi5oCkBAIC0wLDAgKzEsMTAwIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SQU5ERU5fSF8KKyNkZWZp
bmUgQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0hfCisKKyNpbmNsdWRlIDxjc3RkZGVmPgor
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcGxhdGZvcm0uaCIKKyNpbmNsdWRlICJh
YnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9yYW5kZW5fc2xvdy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFs
L3JhbmRlbl90cmFpdHMuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9p
bnRlcm5hbCB7CisKKy8vIFJBTkRlbiA9IFJBTkRvbSBnZW5lcmF0b3Igb3IgYmVldHJvb3RzIGlu
IFN3aXNzIEdlcm1hbi4KKy8vICdTdHJvbmcnICh3ZWxsLWRpc3RyaWJ1dGVkLCB1bnByZWRpY3Rh
YmxlLCBiYWNrdHJhY2tpbmctcmVzaXN0YW50KSByYW5kb20KKy8vIGdlbmVyYXRvciwgZmFzdGVy
IGluIHNvbWUgYmVuY2htYXJrcyB0aGFuIHN0ZDo6bXQxOTkzN182NCBhbmQgcGNnNjRfYzMyLgor
Ly8KKy8vIFJhbmRlbiBpbXBsZW1lbnRzIHRoZSBiYXNpYyBzdGF0ZSBtYW5pcHVsYXRpb24gbWV0
aG9kcy4KK2NsYXNzIFJhbmRlbiB7CisgcHVibGljOgorICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBrU3RhdGVCeXRlcyA9IFJhbmRlblRyYWl0czo6a1N0YXRlQnl0ZXM7CisgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IGtDYXBhY2l0eUJ5dGVzID0gUmFuZGVuVHJhaXRzOjprQ2FwYWNpdHlCeXRl
czsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1NlZWRCeXRlcyA9IFJhbmRlblRyYWl0czo6
a1NlZWRCeXRlczsKKworICB+UmFuZGVuKCkgPSBkZWZhdWx0OworCisgIFJhbmRlbigpOworCisg
IC8vIEdlbmVyYXRlIHVwZGF0ZXMgdGhlIHJhbmRlbiBzcG9uZ2UuIFRoZSBvdXRlciBwb3J0aW9u
IG9mIHRoZSBzcG9uZ2UKKyAgLy8gKGtDYXBhY2l0eUJ5dGVzIC4uIGtTdGF0ZUJ5dGVzKSBtYXkg
YmUgY29uc3VtZWQgYXMgUFJORyBzdGF0ZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVf
dCBOPgorICB2b2lkIEdlbmVyYXRlKFQgKCZzdGF0ZSlbTl0pIGNvbnN0IHsKKyAgICBzdGF0aWNf
YXNzZXJ0KE4gKiBzaXplb2YoVCkgPT0ga1N0YXRlQnl0ZXMsCisgICAgICAgICAgICAgICAgICAi
UmFuZGVuOjpHZW5lcmF0ZSgpIHJlcXVpcmVzIGtTdGF0ZUJ5dGVzIG9mIHN0YXRlIik7CisjaWYg
QUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENICisgICAgLy8gSFcgQUVTIERpc3BhdGNo
LgorICAgIGlmIChoYXNfY3J5cHRvXykgeworICAgICAgUmFuZGVuSHdBZXM6OkdlbmVyYXRlKGtl
eXNfLCBzdGF0ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIFJhbmRlblNsb3c6OkdlbmVyYXRlKGtl
eXNfLCBzdGF0ZSk7CisgICAgfQorI2VsaWYgQUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUworICAg
IC8vIEhXIEFFUyBpcyBlbmFibGVkLgorICAgIFJhbmRlbkh3QWVzOjpHZW5lcmF0ZShrZXlzXywg
c3RhdGUpOworI2Vsc2UKKyAgICAvLyBIVyBBRVMgaXMgZGlzYWJsZWQuCisgICAgUmFuZGVuU2xv
dzo6R2VuZXJhdGUoa2V5c18sIHN0YXRlKTsKKyNlbmRpZgorICB9CisKKyAgLy8gQWJzb3JiIGlu
Y29ycG9yYXRlcyBhZGRpdGlvbmFsIHNlZWQgbWF0ZXJpYWwgaW50byB0aGUgcmFuZGVuIHNwb25n
ZS4gIEFmdGVyCisgIC8vIGFic29yYiByZXR1cm5zLCBHZW5lcmF0ZSBtdXN0IGJlIGNhbGxlZCBi
ZWZvcmUgdGhlIHN0YXRlIG1heSBiZSBjb25zdW1lZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFMs
IHNpemVfdCBNLCB0eXBlbmFtZSBULCBzaXplX3QgTj4KKyAgdm9pZCBBYnNvcmIoY29uc3QgUyAo
JnNlZWQpW01dLCBUICgmc3RhdGUpW05dKSBjb25zdCB7CisgICAgc3RhdGljX2Fzc2VydChNICog
c2l6ZW9mKFMpID09IFJhbmRlblRyYWl0czo6a1NlZWRCeXRlcywKKyAgICAgICAgICAgICAgICAg
ICJSYW5kZW46OkFic29yYigpIHJlcXVpcmVzIGtTZWVkQnl0ZXMgb2Ygc2VlZCIpOworCisgICAg
c3RhdGljX2Fzc2VydChOICogc2l6ZW9mKFQpID09IFJhbmRlblRyYWl0czo6a1N0YXRlQnl0ZXMs
CisgICAgICAgICAgICAgICAgICAiUmFuZGVuOjpBYnNvcmIoKSByZXF1aXJlcyBrU3RhdGVCeXRl
cyBvZiBzdGF0ZSIpOworI2lmIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSAorICAg
IC8vIEhXIEFFUyBEaXNwYXRjaC4KKyAgICBpZiAoaGFzX2NyeXB0b18pIHsKKyAgICAgIFJhbmRl
bkh3QWVzOjpBYnNvcmIoc2VlZCwgc3RhdGUpOworICAgIH0gZWxzZSB7CisgICAgICBSYW5kZW5T
bG93OjpBYnNvcmIoc2VlZCwgc3RhdGUpOworICAgIH0KKyNlbGlmIEFCU0xfSEFWRV9BQ0NFTEVS
QVRFRF9BRVMKKyAgICAvLyBIVyBBRVMgaXMgZW5hYmxlZC4KKyAgICBSYW5kZW5Id0Flczo6QWJz
b3JiKHNlZWQsIHN0YXRlKTsKKyNlbHNlCisgICAgLy8gSFcgQUVTIGlzIGRpc2FibGVkLgorICAg
IFJhbmRlblNsb3c6OkFic29yYihzZWVkLCBzdGF0ZSk7CisjZW5kaWYKKyAgfQorCisgcHJpdmF0
ZToKKyAgY29uc3Qgdm9pZCoga2V5c187CisjaWYgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJ
U1BBVENICisgIGJvb2wgaGFzX2NyeXB0b187CisjZW5kaWYKK307CisKK30gIC8vIG5hbWVzcGFj
ZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJT
TF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50
ZXJuYWwvcmFuZGVuX2JlbmNobWFya3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVu
X2JlbmNobWFya3MuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU4OTE3MmMwNDY2ZDI1NzU1MDFkMmFlZTc5ZmFk
NDQ2ZjhjMWZlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5k
ZW5fYmVuY2htYXJrcy5jYwpAQCAtMCwwICsxLDE3NCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3Jh
bmRlbi5oIgorCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RkaW8+CisjaW5jbHVk
ZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5o
IgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmsuaCIKKyNpbmNs
dWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9wbGF0Zm9ybS5oIgorI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2ludGVybmFsL3JhbmRlbl9lbmdpbmUuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRl
cm5hbC9yYW5kZW5faHdhZXMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5k
ZW5fc2xvdy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9udW1iZXJzLmgiCisKK25hbWVzcGFj
ZSB7CisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmFuZGVuOwordXNpbmcgYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpSYW5kZW5Id0FlczsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6UmFuZGVuU2xvdzsKKwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsX25hbm9iZW5jaG1h
cms6OkZ1bmNJbnB1dDsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9uYW5vYmVuY2htYXJr
OjpGdW5jT3V0cHV0OwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsX25hbm9iZW5jaG1hcms6
OkludmFyaWFudFRpY2tzUGVyU2Vjb25kOwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsX25h
bm9iZW5jaG1hcms6Ok1lYXN1cmVDbG9zdXJlOwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFs
X25hbm9iZW5jaG1hcms6OlBhcmFtczsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9uYW5v
YmVuY2htYXJrOjpQaW5UaHJlYWRUb0NQVTsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9u
YW5vYmVuY2htYXJrOjpSZXN1bHQ7CisKKy8vIExvY2FsIHN0YXRlIHBhcmFtZXRlcnMuCitzdGF0
aWMgY29uc3RleHByIHNpemVfdCBrU3RhdGVTaXplVCA9IFJhbmRlbjo6a1N0YXRlQnl0ZXMgLyBz
aXplb2YodWludDY0X3QpOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1NlZWRTaXplVCA9IFJh
bmRlbjo6a1NlZWRCeXRlcyAvIHNpemVvZih1aW50MzJfdCk7CisKKy8vIFJhbmRlbiBpbXBsZW1l
bnRhdGlvbiBiZW5jaG1hcmtzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWJzb3Ji
Rm4gOiBwdWJsaWMgVCB7CisgIG11dGFibGUgdWludDY0X3Qgc3RhdGVba1N0YXRlU2l6ZVRdID0g
e307CisgIG11dGFibGUgdWludDMyX3Qgc2VlZFtrU2VlZFNpemVUXSA9IHt9OworCisgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGJ5dGVzKCkgeyByZXR1cm4gc2l6ZW9mKHNlZWQpOyB9CisKKyAg
RnVuY091dHB1dCBvcGVyYXRvcigpKGNvbnN0IEZ1bmNJbnB1dCBudW1faXRlcnMpIGNvbnN0IHsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9pdGVyczsgKytpKSB7CisgICAgICB0aGlz
LT5BYnNvcmIoc2VlZCwgc3RhdGUpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGVbMF07CisgIH0K
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEdlbmVyYXRlRm4gOiBwdWJsaWMg
VCB7CisgIG11dGFibGUgdWludDY0X3Qgc3RhdGVba1N0YXRlU2l6ZVRdOworICBHZW5lcmF0ZUZu
KCkgeyBzdGQ6Om1lbXNldChzdGF0ZSwgMCwgc2l6ZW9mKHN0YXRlKSk7IH0KKworICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBieXRlcygpIHsgcmV0dXJuIHNpemVvZihzdGF0ZSk7IH0KKworICBG
dW5jT3V0cHV0IG9wZXJhdG9yKCkoY29uc3QgRnVuY0lucHV0IG51bV9pdGVycykgY29uc3Qgewor
ICAgIGNvbnN0IGF1dG8qIGtleXMgPSB0aGlzLT5HZXRLZXlzKCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBudW1faXRlcnM7ICsraSkgeworICAgICAgdGhpcy0+R2VuZXJhdGUoa2V5cywg
c3RhdGUpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGVbMF07CisgIH0KK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBVSW50Pgorc3RydWN0IEVuZ2luZSB7CisgIG11dGFibGUgYWJzbDo6cmFuZG9t
X2ludGVybmFsOjpyYW5kZW5fZW5naW5lPFVJbnQ+IHJuZzsKKworICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBieXRlcygpIHsgcmV0dXJuIHNpemVvZihVSW50KTsgfQorCisgIEZ1bmNPdXRwdXQg
b3BlcmF0b3IoKShjb25zdCBGdW5jSW5wdXQgbnVtX2l0ZXJzKSBjb25zdCB7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1faXRlcnMgLSAxOyArK2kpIHsKKyAgICAgIHJuZygpOworICAg
IH0KKyAgICByZXR1cm4gcm5nKCk7CisgIH0KK307CisKK3RlbXBsYXRlIDxzaXplX3QgTj4KK3Zv
aWQgUHJpbnQoY29uc3QgY2hhciogbmFtZSwgY29uc3Qgc2l6ZV90IG4sIGNvbnN0IFJlc3VsdCAo
JnJlc3VsdHMpW05dLAorICAgICAgICAgICBjb25zdCBzaXplX3QgYnl0ZXMpIHsKKyAgaWYgKG4g
PT0gMCkgeworICAgIEFCU0xfUkFXX0xPRygKKyAgICAgICAgV0FSTklORywKKyAgICAgICAgIldB
Uk5JTkc6IE1lYXN1cmVtZW50IGZhaWxlZCwgc2hvdWxkIG5vdCBoYXBwZW4gd2hlbiB1c2luZyAi
CisgICAgICAgICJQaW5UaHJlYWRUb0NQVSB1bmxlc3MgdGhlIHJlZ2lvbiB0byBtZWFzdXJlIHRh
a2VzID4gMSBzZWNvbmQuXG4iKTsKKyAgICByZXR1cm47CisgIH0KKworICBzdGF0aWMgY29uc3Qg
ZG91YmxlIG5zX3Blcl90aWNrID0gMWU5IC8gSW52YXJpYW50VGlja3NQZXJTZWNvbmQoKTsKKyAg
c3RhdGljIGNvbnN0ZXhwciBjb25zdCBkb3VibGUga05zUGVyUyA9IDFlOTsgICAgICAgICAgICAg
ICAgIC8vIG5zL3MKKyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBkb3VibGUga01CUGVyQnl0ZSA9
IDEuMCAvIDEwNDg1NzYuMDsgIC8vIE1iIC8gYgorICBzdGF0aWMgYXV0byBoZWFkZXIgPSBbXSB7
CisgICAgcmV0dXJuIHByaW50ZigiJTIwcyAlOHM6ICUxMnMgdGlja3M7ICU5cyAgKCU5cykgJThz
XG4iLCAiTmFtZSIsICJDb3VudCIsCisgICAgICAgICAgICAgICAgICAiVG90YWwiLCAiVmFyaWFu
Y2UiLCAiVGltZSIsICJieXRlcy9zIik7CisgIH0oKTsKKyAgKHZvaWQpaGVhZGVyOworCisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgY29uc3QgZG91YmxlIHRpY2tzX3Bl
cl9jYWxsID0gcmVzdWx0c1tpXS50aWNrcyAvIHJlc3VsdHNbaV0uaW5wdXQ7CisgICAgY29uc3Qg
ZG91YmxlIG5zX3Blcl9jYWxsID0gbnNfcGVyX3RpY2sgKiB0aWNrc19wZXJfY2FsbDsKKyAgICBj
b25zdCBkb3VibGUgYnl0ZXNfcGVyX25zID0gYnl0ZXMgLyBuc19wZXJfY2FsbDsKKyAgICBjb25z
dCBkb3VibGUgbWJfcGVyX3MgPSBieXRlc19wZXJfbnMgKiBrTnNQZXJTICoga01CUGVyQnl0ZTsK
KyAgICAvLyBPdXRwdXQKKyAgICBwcmludGYoIiUyMHMgJTh6dTogJTEyLjJmIHRpY2tzOyBNQUQ9
JTQuMmYlJSAgKCU2LjFmIG5zKSAlOC4xZiBNYi9zXG4iLAorICAgICAgICAgICBuYW1lLCByZXN1
bHRzW2ldLmlucHV0LCByZXN1bHRzW2ldLnRpY2tzLAorICAgICAgICAgICByZXN1bHRzW2ldLnZh
cmlhYmlsaXR5ICogMTAwLjAsIG5zX3Blcl9jYWxsLCBtYl9wZXJfcyk7CisgIH0KK30KKworLy8g
RmFpbHMgaGVyZQordGVtcGxhdGUgPHR5cGVuYW1lIE9wLCBzaXplX3QgTj4KK3ZvaWQgTWVhc3Vy
ZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBGdW5jSW5wdXQgKCZpbnB1dHMpW05dKSB7CisgIE9w
IG9wOworCisgIFJlc3VsdCByZXN1bHRzW05dOworICBQYXJhbXMgcGFyYW1zOworICBwYXJhbXMu
dmVyYm9zZSA9IGZhbHNlOworICBwYXJhbXMubWF4X2V2YWxzID0gNjsgIC8vIGF2b2lkIHRlc3Qg
dGltZW91dAorICBjb25zdCBzaXplX3QgbnVtX3Jlc3VsdHMgPSBNZWFzdXJlQ2xvc3VyZShvcCwg
aW5wdXRzLCBOLCByZXN1bHRzLCBwYXJhbXMpOworICBQcmludChuYW1lLCBudW1fcmVzdWx0cywg
cmVzdWx0cywgb3AuYnl0ZXMoKSk7Cit9CisKKy8vIHVucHJlZGljdGFibGUgPT0gMSBidXQgdGhl
IGNvbXBpbGVyIGRvZXMgbm90IGtub3cgdGhhdC4KK3ZvaWQgUnVuQWxsKGNvbnN0IGludCBhcmdj
LCBjaGFyKiBhcmd2W10pIHsKKyAgaWYgKGFyZ2MgPT0gMikgeworICAgIGludCBjcHUgPSAtMTsK
KyAgICBpZiAoIWFic2w6OlNpbXBsZUF0b2koYXJndlsxXSwgJmNwdSkpIHsKKyAgICAgIEFCU0xf
UkFXX0xPRyhGQVRBTCwgIlRoZSBvcHRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGEgQ1BVIG51bWJl
ciA+PSAwLlxuIik7CisgICAgfQorICAgIFBpblRocmVhZFRvQ1BVKGNwdSk7CisgIH0KKworICAv
LyBUaGUgY29tcGlsZXIgY2Fubm90IHJlZHVjZSB0aGlzIHRvIGEgY29uc3RhbnQuCisgIGNvbnN0
IEZ1bmNJbnB1dCB1bnByZWRpY3RhYmxlID0gKGFyZ2MgIT0gOTk5KTsKKyAgc3RhdGljIGNvbnN0
IEZ1bmNJbnB1dCBpbnB1dHNbXSA9IHt1bnByZWRpY3RhYmxlICogMTAwLCB1bnByZWRpY3RhYmxl
ICogMTAwMH07CisKKyNpZiAhZGVmaW5lZChBQlNMX0lOVEVSTkFMX0RJU0FCTEVfQUVTKSAmJiBB
QlNMX0hBVkVfQUNDRUxFUkFURURfQUVTCisgIE1lYXN1cmU8QWJzb3JiRm48UmFuZGVuSHdBZXM+
PigiQWJzb3JiIChId0FlcykiLCBpbnB1dHMpOworI2VuZGlmCisgIE1lYXN1cmU8QWJzb3JiRm48
UmFuZGVuU2xvdz4+KCJBYnNvcmIgKFNsb3cpIiwgaW5wdXRzKTsKKworI2lmICFkZWZpbmVkKEFC
U0xfSU5URVJOQUxfRElTQUJMRV9BRVMpICYmIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMKKyAg
TWVhc3VyZTxHZW5lcmF0ZUZuPFJhbmRlbkh3QWVzPj4oIkdlbmVyYXRlIChId0FlcykiLCBpbnB1
dHMpOworI2VuZGlmCisgIE1lYXN1cmU8R2VuZXJhdGVGbjxSYW5kZW5TbG93Pj4oIkdlbmVyYXRl
IChTbG93KSIsIGlucHV0cyk7CisKKyAgLy8gTWVhc3VyZSB0aGUgcHJvZHVjdGlvbiBlbmdpbmUu
CisgIHN0YXRpYyBjb25zdCBGdW5jSW5wdXQgaW5wdXRzMVtdID0ge3VucHJlZGljdGFibGUgKiAx
MDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnByZWRpY3RhYmxl
ICogMTAwMDB9OworICBNZWFzdXJlPEVuZ2luZTx1aW50NjRfdD4+KCJyYW5kZW5fZW5naW5lPHVp
bnQ2NF90PiIsIGlucHV0czEpOworICBNZWFzdXJlPEVuZ2luZTx1aW50MzJfdD4+KCJyYW5kZW5f
ZW5naW5lPHVpbnQzMl90PiIsIGlucHV0czEpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworICBSdW5BbGwoYXJnYywgYXJndik7Cisg
IHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9k
ZXRlY3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2RldGVjdC5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNTk0NmIyMTljYzJjNDg3NjMzNDY5NDdjNDJjNzgyNTZkYjRlNzM0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9kZXRlY3QuY2MKQEAgLTAsMCAr
MSwyMTkgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4iQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworLy8gSEVS
TUVUSUMgTk9URTogVGhlIHJhbmRlbl9od2FlcyB0YXJnZXQgbXVzdCBub3QgaW50cm9kdWNlIGR1
cGxpY2F0ZQorLy8gc3ltYm9scyBmcm9tIGFyYml0cmFyeSBzeXN0ZW0gYW5kIG90aGVyIGhlYWRl
cnMsIHNpbmNlIGl0IG1heSBiZSBidWlsdAorLy8gd2l0aCBkaWZmZXJlbnQgZmxhZ3MgZnJvbSBv
dGhlciB0YXJnZXRzLCB1c2luZyBkaWZmZXJlbnQgbGV2ZWxzIG9mCisvLyBvcHRpbWl6YXRpb24s
IHBvdGVudGlhbGx5IGludHJvZHVjaW5nIE9EUiB2aW9sYXRpb25zLgorCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2RldGVjdC5oIgorCisjaW5jbHVkZSA8Y3N0ZGludD4K
KyNpbmNsdWRlIDxjc3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcGxh
dGZvcm0uaCIKKworI2lmIGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkKKyNkZWZpbmUgQUJTTF9J
TlRFUk5BTF9VU0VfWDg2X0NQVUlECisjZWxpZiBkZWZpbmVkKEFCU0xfQVJDSF9QUEMpIHx8IGRl
ZmluZWQoQUJTTF9BUkNIX0FSTSkgfHwgXAorICAgIGRlZmluZWQoQUJTTF9BUkNIX0FBUkNINjQp
CisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VU0VfQU5E
Uk9JRF9HRVRBVVhWQUwKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VU0VfR0VUQVVYVkFMCisjZWxp
ZiBkZWZpbmVkKF9fbGludXhfXykKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VU0VfTElOVVhfR0VU
QVVYVkFMCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVVNFX0dFVEFVWFZBTAorI2VuZGlmCisjZW5k
aWYKKworI2lmIGRlZmluZWQoQUJTTF9JTlRFUk5BTF9VU0VfWDg2X0NQVUlEKQorI2lmIGRlZmlu
ZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkKKyNpbmNsdWRlIDxpbnRyaW4uaD4gIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlX29yZGVyKQorI3ByYWdtYSBpbnRyaW5zaWMoX19jcHVpZCkKKyNl
bHNlCisvLyBNU1ZDLWVxdWl2YWxlbnQgX19jcHVpZCBpbnRyaW5zaWMgZnVuY3Rpb24uCitzdGF0
aWMgdm9pZCBfX2NwdWlkKGludCBjcHVfaW5mb1s0XSwgaW50IGluZm9fdHlwZSkgeworICBfX2Fz
bV9fIHZvbGF0aWxlKCJjcHVpZCBcblx0IgorICAgICAgICAgICAgICAgICAgIDogIj1hIihjcHVf
aW5mb1swXSksICI9YiIoY3B1X2luZm9bMV0pLCAiPWMiKGNwdV9pbmZvWzJdKSwKKyAgICAgICAg
ICAgICAgICAgICAgICI9ZCIoY3B1X2luZm9bM10pCisgICAgICAgICAgICAgICAgICAgOiAiYSIo
aW5mb190eXBlKSwgImMiKDApKTsKK30KKyNlbmRpZgorI2VuZGlmICAvLyBBQlNMX0lOVEVSTkFM
X1VTRV9YODZfQ1BVSUQKKworLy8gT24gbGludXgsIGp1c3QgdXNlIHRoZSBjLWxpYnJhcnkgZ2V0
YXV4dmFsIGNhbGwuCisjaWYgZGVmaW5lZChBQlNMX0lOVEVSTkFMX1VTRV9MSU5VWF9HRVRBVVhW
QUwpCisKK2V4dGVybiAiQyIgdW5zaWduZWQgbG9uZyBnZXRhdXh2YWwodW5zaWduZWQgbG9uZyB0
eXBlKTsgIC8vIE5PTElOVChydW50aW1lL2ludCkKKworc3RhdGljIHVpbnQzMl90IEdldEF1eHZh
bCh1aW50MzJfdCBod2NhcF90eXBlKSB7CisgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
Z2V0YXV4dmFsKGh3Y2FwX3R5cGUpKTsKK30KKworI2VuZGlmCisKKy8vIE9uIGFuZHJvaWQsIHBy
b2JlIHRoZSBzeXN0ZW0ncyBDIGxpYnJhcnkgZm9yIGdldGF1eHZhbCgpLgorLy8gVGhpcyBpcyB0
aGUgc2FtZSB0ZWNobmlxdWUgdXNlZCBieSB0aGUgYW5kcm9pZCBOREsgY3B1IGZlYXR1cmVzIGxp
YnJhcnkKKy8vIGFzIHdlbGwgYXMgdGhlIGdvb2dsZSBvcGVuLXNvdXJjZSBjcHVfZmVhdHVyZXMg
bGlicmFyeS4KKy8vCisvLyBUT0RPKGFic2wtdGVhbSk6IENvbnNpZGVyIGltcGxlbWVudGluZyBh
IGZhbGxiYWNrIG9mIGRpcmVjdGx5IHJlYWRpbmcKKy8vIC9wcm9jL3NlbGYvYXV4dmFsLgorI2lm
IGRlZmluZWQoQUJTTF9JTlRFUk5BTF9VU0VfQU5EUk9JRF9HRVRBVVhWQUwpCisjaW5jbHVkZSA8
ZGxmY24uaD4KKworc3RhdGljIHVpbnQzMl90IEdldEF1eHZhbCh1aW50MzJfdCBod2NhcF90eXBl
KSB7CisgIC8vIE5PTElOVE5FWFRMSU5FKHJ1bnRpbWUvaW50KQorICB0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgKCpnZXRhdXh2YWxfZnVuY190KSh1bnNpZ25lZCBsb25nKTsKKworICBkbGVycm9yKCk7
ICAvLyBDbGVhbmluZyBlcnJvciBzdGF0ZSBiZWZvcmUgY2FsbGluZyBkbG9wZW4uCisgIHZvaWQq
IGxpYmNfaGFuZGxlID0gZGxvcGVuKCJsaWJjLnNvIiwgUlRMRF9OT1cpOworICBpZiAoIWxpYmNf
aGFuZGxlKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgdWludDMyX3QgcmVzdWx0ID0gMDsKKyAg
dm9pZCogc3ltID0gZGxzeW0obGliY19oYW5kbGUsICJnZXRhdXh2YWwiKTsKKyAgaWYgKHN5bSkg
eworICAgIGdldGF1eHZhbF9mdW5jX3QgZnVuYzsKKyAgICBtZW1jcHkoJmZ1bmMsICZzeW0sIHNp
emVvZihmdW5jKSk7CisgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgqZnVuYyko
aHdjYXBfdHlwZSkpOworICB9CisgIGRsY2xvc2UobGliY19oYW5kbGUpOworICByZXR1cm4gcmVz
dWx0OworfQorCisjZW5kaWYKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9p
bnRlcm5hbCB7CisKKy8vIFRoZSBkZWZhdWx0IHJldHVybiBhdCB0aGUgZW5kIG9mIHRoZSBmdW5j
dGlvbiBtaWdodCBiZSB1bnJlYWNoYWJsZSBkZXBlbmRpbmcKKy8vIG9uIHRoZSBjb25maWd1cmF0
aW9uLiBJZ25vcmUgdGhhdCB3YXJuaW5nLgorI2lmIGRlZmluZWQoX19jbGFuZ19fKQorI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV3VucmVhY2hhYmxlLWNvZGUtcmV0dXJuIgorI2VuZGlmCisKKy8vIENQVVN1cHBvcnRzUmFu
ZGVuSHdBZXMgcmV0dXJucyB3aGV0aGVyIHRoZSBDUFUgaXMgYSBtaWNyb2FyY2hpdGVjdHVyZQor
Ly8gd2hpY2ggc3VwcG9ydHMgdGhlIGNycHl0by9hZXMgaW5zdHJ1Y3Rpb25zIG9yIGV4dGVuc2lv
bnMgbmVjZXNzYXJ5IHRvIHVzZSB0aGUKKy8vIGFjY2VsZXJhdGVkIFJhbmRlbkh3QWVzIGltcGxl
bWVudGF0aW9uLgorLy8KKy8vIDEuIEZvciB4ODYgaXQgaXMgc3VmZmljaWVudCB0byB1c2UgdGhl
IENQVUlEIGluc3RydWN0aW9uIHRvIGRldGVjdCB3aGV0aGVyCisvLyAgICB0aGUgY3B1IHN1cHBv
cnRzIEFFUyBpbnN0cnVjdGlvbnMuIERvbmUuCisvLworLy8gRm9uIG5vbi14ODYgaXQgaXMgbXVj
aCBtb3JlIGNvbXBsaWNhdGVkLgorLy8KKy8vIDIuIFdoZW4gQUJTTF9JTlRFUk5BTF9VU0VfR0VU
QVVYVkFMIGlzIGRlZmluZWQsIHVzZSBnZXRhdXh2YWwoKSAoZWl0aGVyCisvLyAgICB0aGUgZGly
ZWN0IGMtbGlicmFyeSB2ZXJzaW9uLCBvciB0aGUgYW5kcm9pZCBwcm9iaW5nIHZlcnNpb24gd2hp
Y2ggbG9hZHMKKy8vICAgIGxpYmMpLCBhbmQgcmVhZCB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0eSBi
aXRzLgorLy8gICAgVGhpcyBpcyBiYXNlZCBvbiB0aGUgdGVjaG5pcXVlIHVzZWQgYnkgYm9yaW5n
c3NsIHVzZXMgdG8gZGV0ZWN0CisvLyAgICBjcHUgY2FwYWJpbGl0aWVzLCBhbmQgc2hvdWxkIGFs
bG93IHVzIHRvIGVuYWJsZSBjcnlwdG8gaW4gdGhlIGFuZHJvaWQKKy8vICAgIGJ1aWxkcyB3aGVy
ZSBpdCBpcyBzdXBwb3J0ZWQuCisvLworLy8gMy4gVXNlIHRoZSBkZWZhdWx0IGZvciB0aGUgY29t
cGlsZXIgYXJjaGl0ZWN0dXJlLgorLy8KKworYm9vbCBDUFVTdXBwb3J0c1JhbmRlbkh3QWVzKCkg
eworI2lmIGRlZmluZWQoQUJTTF9JTlRFUk5BTF9VU0VfWDg2X0NQVUlEKQorICAvLyAxLiBGb3Ig
eDg2OiBVc2UgQ1BVSUQgdG8gZGV0ZWN0IHRoZSByZXF1aXJlZCBBRVMgaW5zdHJ1Y3Rpb24gc2V0
LgorICBpbnQgcmVnc1s0XTsKKyAgX19jcHVpZChyZWludGVycHJldF9jYXN0PGludCo+KHJlZ3Mp
LCAxKTsKKyAgcmV0dXJuIHJlZ3NbMl0gJiAoMSA8PCAyNSk7ICAvLyBBRVMKKworI2VsaWYgZGVm
aW5lZChBQlNMX0lOVEVSTkFMX1VTRV9HRVRBVVhWQUwpCisgIC8vIDIuIFVzZSBnZXRhdXh2YWwo
KSB0byByZWFkIHRoZSBoYXJkd2FyZSBiaXRzIGFuZCBkZXRlcm1pbmUKKyAgLy8gY3B1IGNhcGFi
aWxpdGllcy4KKworI2RlZmluZSBBVF9IV0NBUCAxNgorI2RlZmluZSBBVF9IV0NBUDIgMjYKKyNp
ZiBkZWZpbmVkKEFCU0xfQVJDSF9QUEMpCisgIC8vIEZvciBQb3dlciAvIFBQQzogRXhwZWN0IHRo
YXQgdGhlIGNwdSBzdXBwb3J0cyBWQ1JZUFRPCisgIC8vIFNlZSBodHRwczovL21lbWJlcnMub3Bl
bnBvd2VyZm91bmRhdGlvbi5vcmcvZG9jdW1lbnQvZGwvNTc2CisgIC8vIFZDUllQVE8gc2hvdWxk
IGJlIHByZXNlbnQgaW4gUE9XRVI4ID49IDIuMDcuCisgIC8vIFVzZXMgTGludXgga2VybmVsIGNv
bnN0YW50cyBmcm9tIGFyY2gvcG93ZXJwYy9pbmNsdWRlL3VhcGkvYXNtL2NwdXRhYmxlLmgKKyAg
c3RhdGljIGNvbnN0IHVpbnQzMl90IGtWQ1JZUFRPID0gMHgwMjAwMDAwMDsKKyAgY29uc3QgdWlu
dDMyX3QgaHdjYXAgPSBHZXRBdXh2YWwoQVRfSFdDQVAyKTsKKyAgcmV0dXJuIChod2NhcCAmIGtW
Q1JZUFRPKSAhPSAwOworCisjZWxpZiBkZWZpbmVkKEFCU0xfQVJDSF9BUk0pCisgIC8vIEZvciBB
Uk06IFJlcXVpcmUgY3J5cHRvK25lb24KKyAgLy8gaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9o
ZWxwL2luZGV4LmpzcD90b3BpYz0vY29tLmFybS5kb2MuZGRpMDUwMGYvQ0lIQklCQkEuaHRtbAor
ICAvLyBVc2VzIExpbnV4IGtlcm5lbCBjb25zdGFudHMgZnJvbSBhcmNoL2FybTY0L2luY2x1ZGUv
YXNtL2h3Y2FwLmgKKyAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtORU9OID0gMSA8PCAxMjsKKyAg
dWludDMyX3QgaHdjYXAgPSBHZXRBdXh2YWwoQVRfSFdDQVApOworICBpZiAoKGh3Y2FwICYga05F
T04pID09IDApIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICAvLyBBbmQgdXNlIGl0IGFn
YWluIHRvIGRldGVjdCBBRVMuCisgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrQUVTID0gMSA8PCAw
OworICBjb25zdCB1aW50MzJfdCBod2NhcDIgPSBHZXRBdXh2YWwoQVRfSFdDQVAyKTsKKyAgcmV0
dXJuIChod2NhcDIgJiBrQUVTKSAhPSAwOworCisjZWxpZiBkZWZpbmVkKEFCU0xfQVJDSF9BQVJD
SDY0KQorICAvLyBGb3IgQUFSQ0g2NDogUmVxdWlyZSBjcnlwdG8rbmVvbgorICAvLyBodHRwOi8v
aW5mb2NlbnRlci5hcm0uY29tL2hlbHAvaW5kZXguanNwP3RvcGljPS9jb20uYXJtLmRvYy5kZGkw
NTAwZi9DSUhCSUJCQS5odG1sCisgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrTkVPTiA9IDEgPDwg
MTsKKyAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtBRVMgPSAxIDw8IDM7CisgIGNvbnN0IHVpbnQz
Ml90IGh3Y2FwID0gR2V0QXV4dmFsKEFUX0hXQ0FQKTsKKyAgcmV0dXJuICgoaHdjYXAgJiBrTkVP
TikgIT0gMCkgJiYgKChod2NhcCAmIGtBRVMpICE9IDApOworI2VuZGlmCisKKyNlbHNlICAvLyBB
QlNMX0lOVEVSTkFMX1VTRV9HRVRBVVhWQUwKKyAgLy8gMy4gQnkgZGVmYXVsdCwgYXNzdW1lIHRo
YXQgdGhlIGNvbXBpbGVyIGRlZmF1bHQuCisgIHJldHVybiBBQlNMX0hBVkVfQUNDRUxFUkFURURf
QUVTID8gdHJ1ZSA6IGZhbHNlOworCisjZW5kaWYKKyAgLy8gTk9URTogVGhlcmUgYXJlIHNvbWUg
b3RoZXIgdGVjaG5pcXVlcyB0aGF0IG1heSBiZSB3b3J0aCB0cnlpbmc6CisgIC8vCisgIC8vICog
VXNlIGFuIGVudmlyb25tZW50IHZhcmlhYmxlOiBBQlNMX1JBTkRPTV9VU0VfSFdBRVMKKyAgLy8K
KyAgLy8gKiBSZWx5IG9uIGNvbXBpbGVyLWdlbmVyYXRlZCB0YXJnZXQtYmFzZWQgZGlzcGF0Y2gu
CisgIC8vIFVzaW5nIHg4Ni9nY2MgaXQgbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgor
ICAvLworICAvLyBpbnQgX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJhZXMiKSkpIEhhc0FlcygpIHsg
cmV0dXJuIDE7IH0KKyAgLy8gaW50IF9fYXR0cmlidXRlX18oKHRhcmdldCgiZGVmYXVsdCIpKSkg
SGFzQWVzKCkgeyByZXR1cm4gMDsgfQorICAvLworICAvLyBUaGlzIGRvZXMgbm90IHdvcmsgb24g
YWxsIGFyY2hpdGVjdHVyZS9jb21waWxlciBjb21iaW5hdGlvbnMuCisgIC8vCisgIC8vICogT24g
TGludXggY29uc2lkZXIgcmVhZGluZyAvcHJvYy9jcHVpbmZvIGFuZC9vciAvcHJvYy9zZWxmL2F1
eHYuCisgIC8vIFRoZXNlIGZpbGVzIGhhdmUgbGluZXMgd2hpY2ggYXJlIGVhc3kgdG8gcGFyc2U7
IGZvciBBUk0vQUFSQ0g2NCBpdCBpcyBxdWl0ZQorICAvLyBlYXN5IHRvIGZpbmQgdGhlIEZlYXR1
cmVzOiBsaW5lIGFuZCBleHRyYWN0IGFlcyAvIG5lb24uIExpa2V3aXNlIGZvcgorICAvLyBQUEMu
CisgIC8vCisgIC8vICogRm9yayBhIHByb2Nlc3MgYW5kIHRlc3QgZm9yIFNJR0lMTDoKKyAgLy8K
KyAgLy8gKiBNYW55IGFyY2hpdGVjdHVyZXMgaGF2ZSBpbnN0cnVjdGlvbnMgdG8gcmVhZCB0aGUg
SVNBLiBVbmZvcnR1bmF0ZWx5CisgIC8vICAgbW9zdCBvZiB0aG9zZSByZXF1aXJlIHRoYXQgdGhl
IGNvZGUgaXMgcnVubmluZyBpbiByaW5nIDAgLworICAvLyAgIHByb3RlY3RlZC1tb2RlLgorICAv
LworICAvLyAgIFRoZXJlIGFyZSBzZXZlcmFsIGV4YW1wbGVzLiBlLmcuIFZhbGdyaW5kIGRldGVj
dHMgUFBDIElTQSAyLjA3OgorICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9sdS16ZXJvL3ZhbGdy
aW5kL2Jsb2IvbWFzdGVyL25vbmUvdGVzdHMvcHBjNjQvdGVzdF9pc2FfMl8wN19wYXJ0MS5jCisg
IC8vCisgIC8vICAgTVJTIDxYdD4sIElEX0FBNjRJU0FSMF9FTDEgOyBSZWFkIElEX0FBNjRJU0FS
MF9FTDEgaW50byBYdAorICAvLworICAvLyAgIHVpbnQ2NF90IHZhbDsKKyAgLy8gICBfX2FzbSBf
X3ZvbGF0aWxlKCJtcnMgJTAsIGlkX2FhNjRpc2FyMF9lbDEiIDoiPSZyIiAodmFsKSk7CisgIC8v
CisgIC8vICogVXNlIGEgQ1BVSUQtc3R5bGUgaGV1cmlzdGljIGRhdGFiYXNlLgorICAvLworICAv
LyAqIE9uIEFwcGxlIChfX0FQUExFX18pLCBBRVMgaXMgYXZhaWxhYmxlIG9uIEFybSB2OC4KKyAg
Ly8gICBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80NTYzNzg4OC9ob3ctdG8t
ZGV0ZXJtaW5lLWFybXY4LWZlYXR1cmVzLWF0LXJ1bnRpbWUtb24taW9zCit9CisKKyNpZiBkZWZp
bmVkKF9fY2xhbmdfXykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCit9
ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9kZXRlY3QuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9pbnRlcm5hbC9yYW5kZW5fZGV0ZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRjNWM2NjcyMzkxNzQ2
MTliYWRiMzAyN2JhNTczYmZiY2FiNjgwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9yYW5kZW5fZGV0ZWN0LmgKQEAgLTAsMCArMSwyOSBAQAorLy8gQ29weXJpZ2h0
IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJO
QUxfUkFOREVOX0RFVEVDVF9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SQU5ERU5f
REVURUNUX0hfCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwg
eworCisvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGN1cnJlbnQgQ1BVIHN1cHBvcnRzIFJhbmRlbkh3
QWVzIGltcGxlbWVudGF0aW9uLgorLy8gVGhpcyB0eXBpY2FsbHkgaW52b2x2ZXMgc3VwcG9ydGlu
ZyBjcnlwdG9ncmFwaGljIGV4dGVuc2lvbnMgb24gd2hpY2hldmVyCisvLyBwbGF0Zm9ybSBpcyBj
dXJyZW50bHkgcnVubmluZy4KK2Jvb2wgQ1BVU3VwcG9ydHNSYW5kZW5Id0FlcygpOworCit9ICAv
LyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5k
aWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9ERVRFQ1RfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50
ZXJuYWwvcmFuZGVuX2VuZ2luZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyMjEyYTEzN2MzNmQxZGFiYmVlY2Y5
NjlkZDUyN2U5OGQ2MzJjNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJu
YWwvcmFuZGVuX2VuZ2luZS5oCkBAIC0wLDAgKzEsMjI4IEBACisvLyBDb3B5cmlnaHQgMjAxNyBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SQU5E
RU5fRU5HSU5FX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9FTkdJTkVf
SF8KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjaW50dHlwZXM+CisjaW5jbHVk
ZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNp
bmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJhYnNs
L21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0
cmVhbV9zdGF0ZV9zYXZlci5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3JhbmRl
bi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKwor
Ly8gRGV0ZXJtaW5pc3RpYyBwc2V1ZG9yYW5kb20gYnl0ZSBnZW5lcmF0b3Igd2l0aCBiYWNrdHJh
Y2tpbmcgcmVzaXN0YW5jZQorLy8gKGxlYWtpbmcgdGhlIHN0YXRlIGRvZXMgbm90IGNvbXByb21p
c2UgcHJpb3Igb3V0cHV0cykuIEJhc2VkIG9uIFJldmVyaWUKKy8vIChzZWUgIkEgUm9idXN0IGFu
ZCBTcG9uZ2UtTGlrZSBQUk5HIHdpdGggSW1wcm92ZWQgRWZmaWNpZW5jeSIpIGluc3RhbnRpYXRl
ZAorLy8gd2l0aCBhbiBpbXByb3ZlZCBTaW1waXJhLWxpa2UgcGVybXV0YXRpb24uCisvLyBSZXR1
cm5zIHZhbHVlcyBvZiB0eXBlICJUIiAobXVzdCBiZSBhIGJ1aWx0LWluIHVuc2lnbmVkIGludGVn
ZXIgdHlwZSkuCisvLworLy8gUkFORGVuID0gUkFORG9tIGdlbmVyYXRvciBvciBiZWV0cm9vdHMg
aW4gU3dpc3MgSGlnaCBHZXJtYW4uCisvLyAnU3Ryb25nJyAod2VsbC1kaXN0cmlidXRlZCwgdW5w
cmVkaWN0YWJsZSwgYmFja3RyYWNraW5nLXJlc2lzdGFudCkgcmFuZG9tCisvLyBnZW5lcmF0b3Is
IGZhc3RlciBpbiBzb21lIGJlbmNobWFya3MgdGhhbiBzdGQ6Om10MTk5MzdfNjQgYW5kIHBjZzY0
X2MzMi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgYWxpZ25hcygxNikgcmFuZGVuX2Vu
Z2luZSB7CisgcHVibGljOgorICAvLyBDKysxMSBVUkJHIGludGVyZmFjZToKKyAgdXNpbmcgcmVz
dWx0X3R5cGUgPSBUOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8cmVzdWx0X3R5
cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAicmFuZGVuX2VuZ2luZSB0ZW1wbGF0ZSBhcmd1
bWVudCBtdXN0IGJlIGEgYnVpbHQtaW4gdW5zaWduZWQgIgorICAgICAgICAgICAgICAgICJpbnRl
Z2VyIHR5cGUiKTsKKworICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1pbikoKSB7Cisg
ICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWluKSgpOworICB9
CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZShtYXgpKCkgeworICAgIHJldHVybiAo
c3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCkoKTsKKyAgfQorCisgIGV4cGxp
Y2l0IHJhbmRlbl9lbmdpbmUocmVzdWx0X3R5cGUgc2VlZF92YWx1ZSA9IDApIHsgc2VlZChzZWVk
X3ZhbHVlKTsgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBTZWVkU2VxdWVuY2UsCisgICAgICAgICAg
ICB0eXBlbmFtZSA9IHR5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAg
ICFzdGQ6OmlzX3NhbWU8U2VlZFNlcXVlbmNlLCByYW5kZW5fZW5naW5lPjo6dmFsdWU+PgorICBl
eHBsaWNpdCByYW5kZW5fZW5naW5lKFNlZWRTZXF1ZW5jZSYmIHNlcSkgeworICAgIHNlZWQoc2Vx
KTsKKyAgfQorCisgIHJhbmRlbl9lbmdpbmUoY29uc3QgcmFuZGVuX2VuZ2luZSYpID0gZGVmYXVs
dDsKKworICAvLyBSZXR1cm5zIHJhbmRvbSBiaXRzIGZyb20gdGhlIGJ1ZmZlciBpbiB1bml0cyBv
ZiByZXN1bHRfdHlwZS4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpIHsKKyAgICAvLyBSZWZp
bGwgdGhlIGJ1ZmZlciBpZiBuZWVkZWQgKHVubGlrZWx5KS4KKyAgICBpZiAobmV4dF8gPj0ga1N0
YXRlU2l6ZVQpIHsKKyAgICAgIG5leHRfID0ga0NhcGFjaXR5VDsKKyAgICAgIGltcGxfLkdlbmVy
YXRlKHN0YXRlXyk7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRlX1tuZXh0XysrXTsKKyAgfQor
CisgIHRlbXBsYXRlIDxjbGFzcyBTZWVkU2VxdWVuY2U+CisgIHR5cGVuYW1lIGFic2w6OmVuYWJs
ZV9pZl90PAorICAgICAgIXN0ZDo6aXNfY29udmVydGlibGU8U2VlZFNlcXVlbmNlLCByZXN1bHRf
dHlwZT46OnZhbHVlPgorICBzZWVkKFNlZWRTZXF1ZW5jZSYmIHNlcSkgeworICAgIC8vIFplcm9l
cyB0aGUgc3RhdGUuCisgICAgc2VlZCgpOworICAgIHJlc2VlZChzZXEpOworICB9CisKKyAgdm9p
ZCBzZWVkKHJlc3VsdF90eXBlIHNlZWRfdmFsdWUgPSAwKSB7CisgICAgbmV4dF8gPSBrU3RhdGVT
aXplVDsKKyAgICAvLyBaZXJvZXMgdGhlIGlubmVyIHN0YXRlIGFuZCBmaWxscyB0aGUgb3V0ZXIg
c3RhdGUgd2l0aCBzZWVkX3ZhbHVlIHRvCisgICAgLy8gbWltaWNzIGJlaGF2aW91ciBvZiByZXNl
ZWQKKyAgICBzdGQ6OmZpbGwoc3RkOjpiZWdpbihzdGF0ZV8pLCBzdGQ6OmJlZ2luKHN0YXRlXykg
KyBrQ2FwYWNpdHlULCAwKTsKKyAgICBzdGQ6OmZpbGwoc3RkOjpiZWdpbihzdGF0ZV8pICsga0Nh
cGFjaXR5VCwgc3RkOjplbmQoc3RhdGVfKSwgc2VlZF92YWx1ZSk7CisgIH0KKworICAvLyBJbnNl
cnRzIGVudHJvcHkgaW50byAocGFydCBvZikgdGhlIHN0YXRlLiBDYWxsaW5nIHRoaXMgcGVyaW9k
aWNhbGx5IHdpdGgKKyAgLy8gc3VmZmljaWVudCBlbnRyb3B5IGVuc3VyZXMgcHJlZGljdGlvbiBy
ZXNpc3RhbmNlIChhdHRhY2tlcnMgY2Fubm90IHByZWRpY3QKKyAgLy8gZnV0dXJlIG91dHB1dHMg
ZXZlbiBpZiBzdGF0ZSBpcyBjb21wcm9taXNlZCkuCisgIHRlbXBsYXRlIDxjbGFzcyBTZWVkU2Vx
dWVuY2U+CisgIHZvaWQgcmVzZWVkKFNlZWRTZXF1ZW5jZSYgc2VxKSB7CisgICAgdXNpbmcgc2Vx
dWVuY2VfcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSBTZWVkU2VxdWVuY2U6OnJlc3VsdF90eXBlOwor
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHNlcXVlbmNlX3Jlc3VsdF90eXBlKSA9PSA0LAorICAg
ICAgICAgICAgICAgICAgIlNlZWRTZXF1ZW5jZTo6cmVzdWx0X3R5cGUgbXVzdCBiZSAzMi1iaXQi
KTsKKworICAgIGNvbnN0ZXhwciBzaXplX3Qga0J1ZmZlclNpemUgPQorICAgICAgICBSYW5kZW46
OmtTZWVkQnl0ZXMgLyBzaXplb2Yoc2VxdWVuY2VfcmVzdWx0X3R5cGUpOworICAgIGFsaWduYXMo
MTYpIHNlcXVlbmNlX3Jlc3VsdF90eXBlIGJ1ZmZlcltrQnVmZmVyU2l6ZV07CisKKyAgICAvLyBS
YW5kZW46OkFic29yYiBYT1JzIHRoZSBzZWVkIGludG8gc3RhdGUsIHdoaWNoIGlzIHRoZW4gbWl4
ZWQgYnkgYSBjYWxsCisgICAgLy8gdG8gUmFuZGVuOjpHZW5lcmF0ZS4gU2VlZGluZyB3aXRoIG9u
bHkgdGhlIHByb3ZpZGVkIGVudHJvcHkgaXMgcHJlZmVycmVkCisgICAgLy8gdG8gdXNpbmcgYW4g
YXJiaXRyYXJ5IGdlbmVyYXRlKCkgY2FsbCwgc28gdXNlIFtyYW5kLnJlcS5zZWVkX3NlcV0KKyAg
ICAvLyBzaXplIGFzIGEgcHJveHkgZm9yIHRoZSBudW1iZXIgb2YgZW50cm9weSB1bml0cyB0aGF0
IGNhbiBiZSBnZW5lcmF0ZWQKKyAgICAvLyB3aXRob3V0IHJlbHlpbmcgb24gc2VlZCBzZXF1ZW5j
ZSBtaXhpbmcuLi4KKyAgICBjb25zdCBzaXplX3QgZW50cm9weV9zaXplID0gc2VxLnNpemUoKTsK
KyAgICBpZiAoZW50cm9weV9zaXplIDwga0J1ZmZlclNpemUpIHsKKyAgICAgIC8vIC4uLiBhbmQg
b25seSByZXF1ZXN0IHRoYXQgbWFueSB2YWx1ZXMsIG9yIDI1Ni1iaXRzLCB3aGVuIHVuc3BlY2lm
aWVkLgorICAgICAgY29uc3Qgc2l6ZV90IHJlcXVlc3RlZF9lbnRyb3B5ID0gKGVudHJvcHlfc2l6
ZSA9PSAwKSA/IDh1IDogZW50cm9weV9zaXplOworICAgICAgc3RkOjpmaWxsKHN0ZDo6YmVnaW4o
YnVmZmVyKSArIHJlcXVlc3RlZF9lbnRyb3B5LCBzdGQ6OmVuZChidWZmZXIpLCAwKTsKKyAgICAg
IHNlcS5nZW5lcmF0ZShzdGQ6OmJlZ2luKGJ1ZmZlciksIHN0ZDo6YmVnaW4oYnVmZmVyKSArIHJl
cXVlc3RlZF9lbnRyb3B5KTsKKyAgICAgIC8vIFRoZSBSYW5kZW4gcGFwZXIgc3VnZ2VzdHMgcHJl
ZmVyZW50aWFsbHkgaW5pdGlhbGl6aW5nIGV2ZW4tbnVtYmVyZWQKKyAgICAgIC8vIDEyOC1iaXQg
dmVjdG9ycyBvZiB0aGUgcmFuZGVuIHN0YXRlICh0aGVyZSBhcmUgMTYgc3VjaCB2ZWN0b3JzKS4K
KyAgICAgIC8vIFRoZSBzZWVkIGRhdGEgaXMgbWVyZ2VkIGludG8gdGhlIHN0YXRlIG9mZnNldCBi
eSAxMjgtYml0cywgd2hpY2gKKyAgICAgIC8vIGltcGxpZXMgcHJlZmVyaW5nIHNlZWQgYnl0ZXMg
WzE2Li4zMSwgLi4uLCAyMDguLjIyM10uIFNpbmNlIHRoZQorICAgICAgLy8gYnVmZmVyIGlzIDMy
LWJpdCB2YWx1ZXMsIHdlIHN3YXAgdGhlIGNvcnJlc3BvbmRpbmcgYnVmZmVyIHBvc2l0aW9ucyBp
bgorICAgICAgLy8gMTI4LWJpdCBjaHVua3MuCisgICAgICBzaXplX3QgZHN0ID0ga0J1ZmZlclNp
emU7CisgICAgICB3aGlsZSAoZHN0ID4gNykgeworICAgICAgICAvLyBsZWF2ZSB0aGUgb2RkIGJ1
Y2tldCBhcy1pcy4KKyAgICAgICAgZHN0IC09IDQ7CisgICAgICAgIHNpemVfdCBzcmMgPSBkc3Qg
Pj4gMTsKKyAgICAgICAgLy8gc3dhcCAxMjgtYml0cyBpbnRvIHRoZSBldmVuIGJ1Y2tldAorICAg
ICAgICBzdGQ6OnN3YXAoYnVmZmVyWy0tZHN0XSwgYnVmZmVyWy0tc3JjXSk7CisgICAgICAgIHN0
ZDo6c3dhcChidWZmZXJbLS1kc3RdLCBidWZmZXJbLS1zcmNdKTsKKyAgICAgICAgc3RkOjpzd2Fw
KGJ1ZmZlclstLWRzdF0sIGJ1ZmZlclstLXNyY10pOworICAgICAgICBzdGQ6OnN3YXAoYnVmZmVy
Wy0tZHN0XSwgYnVmZmVyWy0tc3JjXSk7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHNl
cS5nZW5lcmF0ZShzdGQ6OmJlZ2luKGJ1ZmZlciksIHN0ZDo6ZW5kKGJ1ZmZlcikpOworICAgIH0K
KyAgICBpbXBsXy5BYnNvcmIoYnVmZmVyLCBzdGF0ZV8pOworCisgICAgLy8gR2VuZXJhdGUgd2ls
bCBiZSBjYWxsZWQgd2hlbiBvcGVyYXRvcigpIGlzIGNhbGxlZAorICAgIG5leHRfID0ga1N0YXRl
U2l6ZVQ7CisgIH0KKworICB2b2lkIGRpc2NhcmQodWludDY0X3QgY291bnQpIHsKKyAgICB1aW50
NjRfdCBzdGVwID0gc3RkOjptaW48dWludDY0X3Q+KGtTdGF0ZVNpemVUIC0gbmV4dF8sIGNvdW50
KTsKKyAgICBjb3VudCAtPSBzdGVwOworCisgICAgY29uc3RleHByIHVpbnQ2NF90IGtSYXRlVCA9
IGtTdGF0ZVNpemVUIC0ga0NhcGFjaXR5VDsKKyAgICB3aGlsZSAoY291bnQgPiAwKSB7CisgICAg
ICBuZXh0XyA9IGtDYXBhY2l0eVQ7CisgICAgICBpbXBsXy5HZW5lcmF0ZShzdGF0ZV8pOworICAg
ICAgc3RlcCA9IHN0ZDo6bWluPHVpbnQ2NF90PihrUmF0ZVQsIGNvdW50KTsKKyAgICAgIGNvdW50
IC09IHN0ZXA7CisgICAgfQorICAgIG5leHRfICs9IHN0ZXA7CisgIH0KKworICBib29sIG9wZXJh
dG9yPT0oY29uc3QgcmFuZGVuX2VuZ2luZSYgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gbmV4
dF8gPT0gb3RoZXIubmV4dF8gJiYKKyAgICAgICAgICAgc3RkOjplcXVhbChzdGQ6OmJlZ2luKHN0
YXRlXyksIHN0ZDo6ZW5kKHN0YXRlXyksCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjpiZWdp
bihvdGhlci5zdGF0ZV8pKTsKKyAgfQorCisgIGJvb2wgb3BlcmF0b3IhPShjb25zdCByYW5kZW5f
ZW5naW5lJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAg
fQorCisgIHRlbXBsYXRlIDxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgorICBmcmllbmQgc3Rk
OjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgICAgc3RkOjpi
YXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVy
ZW5jZXMpCisgICAgICBjb25zdCByYW5kZW5fZW5naW5lPFQ+JiBlbmdpbmUpIHsgICAgICAgLy8g
Tk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICB1c2luZyBudW1lcmljX3R5cGUgPQorICAg
ICAgICB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OnN0cmVhbV9mb3JtYXRfdHlwZTxyZXN1bHRf
dHlwZT46OnR5cGU7CisgICAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9vc3Ry
ZWFtX3N0YXRlX3NhdmVyKG9zKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW0gOiBlbmdpbmUu
c3RhdGVfKSB7CisgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IGBlbGVtYCBpcyBgdWludDhfdGAs
IGl0IG11c3QgYmUgY2FzdCB0byBzb21ldGhpbmcKKyAgICAgIC8vIGxhcmdlciBzbyB0aGF0IGl0
IHByaW50cyBhcyBhbiBpbnRlZ2VyIHJhdGhlciB0aGFuIGEgY2hhcmFjdGVyLiBGb3IKKyAgICAg
IC8vIHNpbXBsaWNpdHksIGFwcGx5IHRoZSBjYXN0IGFsbCBjaXJjdW1zdGFuY2VzLgorICAgICAg
b3MgPDwgc3RhdGljX2Nhc3Q8bnVtZXJpY190eXBlPihlbGVtKSA8PCBvcy5maWxsKCk7CisgICAg
fQorICAgIG9zIDw8IGVuZ2luZS5uZXh0XzsKKyAgICByZXR1cm4gb3M7CisgIH0KKworICB0ZW1w
bGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KKyAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0
cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0b3I+PigKKyAgICAgIHN0ZDo6YmFzaWNfaXN0cmVh
bTxDaGFyVCwgVHJhaXRzPiYgaXMsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAg
ICAgcmFuZGVuX2VuZ2luZTxUPiYgZW5naW5lKSB7ICAgICAgICAgICAgIC8vIE5PTElOVChydW50
aW1lL3JlZmVyZW5jZXMpCisgICAgdXNpbmcgbnVtZXJpY190eXBlID0KKyAgICAgICAgdHlwZW5h
bWUgcmFuZG9tX2ludGVybmFsOjpzdHJlYW1fZm9ybWF0X3R5cGU8cmVzdWx0X3R5cGU+Ojp0eXBl
OworICAgIHJlc3VsdF90eXBlIHN0YXRlW2tTdGF0ZVNpemVUXTsKKyAgICBzaXplX3QgbmV4dDsK
KyAgICBmb3IgKGF1dG8mIGVsZW0gOiBzdGF0ZSkgeworICAgICAgLy8gSXQgaXMgbm90IHBvc3Np
YmxlIHRvIHJlYWQgdWludDhfdCBmcm9tIHdpZGUgc3RyZWFtcywgc28gaXQgaXMKKyAgICAgIC8v
IG5lY2Vzc2FyeSB0byByZWFkIGEgd2lkZXIgdHlwZSBhbmQgdGhlbiBjYXN0IGl0IHRvIHVpbnQ4
X3QuCisgICAgICBudW1lcmljX3R5cGUgdmFsdWU7CisgICAgICBpcyA+PiB2YWx1ZTsKKyAgICAg
IGVsZW0gPSBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4odmFsdWUpOworICAgIH0KKyAgICBpcyA+
PiBuZXh0OworICAgIGlmIChpcy5mYWlsKCkpIHsKKyAgICAgIHJldHVybiBpczsKKyAgICB9Cisg
ICAgc3RkOjptZW1jcHkoZW5naW5lLnN0YXRlXywgc3RhdGUsIHNpemVvZihlbmdpbmUuc3RhdGVf
KSk7CisgICAgZW5naW5lLm5leHRfID0gbmV4dDsKKyAgICByZXR1cm4gaXM7CisgIH0KKworIHBy
aXZhdGU6CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTdGF0ZVNpemVUID0KKyAgICAgIFJh
bmRlbjo6a1N0YXRlQnl0ZXMgLyBzaXplb2YocmVzdWx0X3R5cGUpOworICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBrQ2FwYWNpdHlUID0KKyAgICAgIFJhbmRlbjo6a0NhcGFjaXR5Qnl0ZXMgLyBz
aXplb2YocmVzdWx0X3R5cGUpOworCisgIC8vIEZpcnN0IGtDYXBhY2l0eVQgYXJlIGBpbm5lcics
IHRoZSBvdGhlcnMgYXJlIGFjY2Vzc2libGUgcmFuZG9tIGJpdHMuCisgIGFsaWduYXMoMTYpIHJl
c3VsdF90eXBlIHN0YXRlX1trU3RhdGVTaXplVF07CisgIHNpemVfdCBuZXh0XzsgIC8vIGluZGV4
IHdpdGhpbiBzdGF0ZV8KKyAgUmFuZGVuIGltcGxfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJh
bmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JB
TkRPTV9JTlRFUk5BTF9SQU5ERU5fRU5HSU5FX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
aW50ZXJuYWwvcmFuZGVuX2VuZ2luZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3Jh
bmRlbl9lbmdpbmVfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGU3Njg1YmRkYWQ0NzQzOTRlNmNlNjlk
YzFkZGU2YjI1N2RlZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFs
L3JhbmRlbl9lbmdpbmVfdGVzdC5jYwpAQCAtMCwwICsxLDY1NiBAQAorLy8gQ29weXJpZ2h0IDIw
MTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5h
bC9yYW5kZW5fZW5naW5lLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Yml0
c2V0PgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgorCisjaW5jbHVkZSAi
Z21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wv
YmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVy
bmFsL2V4cGxpY2l0X3NlZWRfc2VxLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQu
aCIKKyNpbmNsdWRlICJhYnNsL3RpbWUvY2xvY2suaCIKKworI2RlZmluZSBVUERBVEVfR09MREVO
IDAKKwordXNpbmcgcmFuZGVuX3U2NCA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2Vu
Z2luZTx1aW50NjRfdD47Cit1c2luZyByYW5kZW5fdTMyID0gYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpyYW5kZW5fZW5naW5lPHVpbnQzMl90PjsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6
RXhwbGljaXRTZWVkU2VxOworCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVUlu
dFR5cGU+CitjbGFzcyBSYW5kZW5FbmdpbmVUeXBlZFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHt9OworCit1c2luZyBVSW50VHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPHVpbnQ4X3QsIHVp
bnQxNl90LCB1aW50MzJfdCwgdWludDY0X3Q+OworCitUWVBFRF9URVNUX1NVSVRFKFJhbmRlbkVu
Z2luZVR5cGVkVGVzdCwgVUludFR5cGVzKTsKKworVFlQRURfVEVTVChSYW5kZW5FbmdpbmVUeXBl
ZFRlc3QsIFZlcmlmeVJlc2VlZENoYW5nZXNBbGxWYWx1ZXMpIHsKKyAgdXNpbmcgcmFuZGVuID0g
dHlwZW5hbWUgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpyYW5kZW5fZW5naW5lPFR5cGVQYXJhbT47
CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgcmFuZGVuOjpyZXN1bHRfdHlwZTsKKwor
ICBjb25zdCBzaXplX3Qga051bU91dHB1dHMgPSAoc2l6ZW9mKHJhbmRlbikgKiAyIC8gc2l6ZW9m
KFR5cGVQYXJhbSkpICsgMTsKKyAgcmFuZGVuIGVuZ2luZTsKKworICAvLyBNU1ZDIGVtaXRzIGVy
cm9yIDI3MTkgd2l0aG91dCB0aGUgdXNlIG9mIHN0ZDo6cmVmIGJlbG93LgorICAvLyAgKiBmb3Jt
YWwgcGFyYW1ldGVyIHdpdGggX19kZWNsc3BlYyhhbGlnbignIycpKSB3b24ndCBiZSBhbGlnbmVk
CisKKyAgeworICAgIHN0ZDo6c2VlZF9zZXEgc2VxMXsxLCAyLCAzLCA0LCA1LCA2LCA3fTsKKyAg
ICBlbmdpbmUuc2VlZChzZXExKTsKKyAgfQorICByZXN1bHRfdHlwZSBhW2tOdW1PdXRwdXRzXTsK
KyAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKGEpLCBzdGQ6OmVuZChhKSwgc3RkOjpyZWYoZW5n
aW5lKSk7CisKKyAgeworICAgIHN0ZDo6cmFuZG9tX2RldmljZSByZDsKKyAgICBzdGQ6OnNlZWRf
c2VxIHNlcTJ7cmQoKSwgcmQoKSwgcmQoKX07CisgICAgZW5naW5lLnNlZWQoc2VxMik7CisgIH0K
KyAgcmVzdWx0X3R5cGUgYltrTnVtT3V0cHV0c107CisgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdp
bihiKSwgc3RkOjplbmQoYiksIHN0ZDo6cmVmKGVuZ2luZSkpOworCisgIC8vIFRlc3QgdGhhdCBn
ZW5lcmF0ZWQgc2VxdWVuY2UgY2hhbmdlZCBhcyBzZXF1ZW5jZSBvZiBiaXRzLCBpLmUuIGlmIGFi
b3V0CisgIC8vIGhhbGYgb2YgdGhlIGJpdGVzIHdlcmUgZmxpcHBlZCBiZXR3ZWVuIHR3byBub24t
Y29ycmVsYXRlZCB2YWx1ZXMuCisgIHNpemVfdCBjaGFuZ2VkX2JpdHMgPSAwOworICBzaXplX3Qg
dW5jaGFuZ2VkX2JpdHMgPSAwOworICBzaXplX3QgdG90YWxfc2V0ID0gMDsKKyAgc2l6ZV90IHRv
dGFsX2JpdHMgPSAwOworICBzaXplX3QgZXF1YWxfY291bnQgPSAwOworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGtOdW1PdXRwdXRzOyArK2kpIHsKKyAgICBlcXVhbF9jb3VudCArPSAoYVtpXSA9
PSBiW2ldKSA/IDEgOiAwOworICAgIHN0ZDo6Yml0c2V0PHNpemVvZihyZXN1bHRfdHlwZSkgKiA4
PiBiaXRzZXQoYVtpXSBeIGJbaV0pOworICAgIGNoYW5nZWRfYml0cyArPSBiaXRzZXQuY291bnQo
KTsKKyAgICB1bmNoYW5nZWRfYml0cyArPSBiaXRzZXQuc2l6ZSgpIC0gYml0c2V0LmNvdW50KCk7
CisKKyAgICBzdGQ6OmJpdHNldDxzaXplb2YocmVzdWx0X3R5cGUpICogOD4gYV9zZXQoYVtpXSk7
CisgICAgc3RkOjpiaXRzZXQ8c2l6ZW9mKHJlc3VsdF90eXBlKSAqIDg+IGJfc2V0KGJbaV0pOwor
ICAgIHRvdGFsX3NldCArPSBhX3NldC5jb3VudCgpICsgYl9zZXQuY291bnQoKTsKKyAgICB0b3Rh
bF9iaXRzICs9IDIgKiA4ICogc2l6ZW9mKHJlc3VsdF90eXBlKTsKKyAgfQorICAvLyBPbiBhdmVy
YWdlLCBoYWxmIHRoZSBiaXRzIGFyZSBjaGFuZ2VkIGJldHdlZW4gdHdvIGNhbGxzLgorICBFWFBF
Q1RfTEUoY2hhbmdlZF9iaXRzLCAwLjYwICogKGNoYW5nZWRfYml0cyArIHVuY2hhbmdlZF9iaXRz
KSk7CisgIEVYUEVDVF9HRShjaGFuZ2VkX2JpdHMsIDAuNDAgKiAoY2hhbmdlZF9iaXRzICsgdW5j
aGFuZ2VkX2JpdHMpKTsKKworICAvLyBWZXJpZnkgdXNpbmcgYSBxdWljayBub3JtYWwtYXBwcm94
aW1hdGlvbiB0byB0aGUgYmlub21pYWwuCisgIEVYUEVDVF9ORUFSKHRvdGFsX3NldCwgdG90YWxf
Yml0cyAqIDAuNSwgNCAqIHN0ZDo6c3FydCh0b3RhbF9iaXRzKSkKKyAgICAgIDw8ICJAIiA8PCB0
b3RhbF9zZXQgLyBzdGF0aWNfY2FzdDxkb3VibGU+KHRvdGFsX2JpdHMpOworCisgIC8vIEFsc28s
IEFbaV0gPT0gQltpXSB3aXRoIHByb2JhYmlsaXR5ICgxL3JhbmdlKSAqIE4uCisgIC8vIEdpdmUg
dGhpcyBhIHByZXR0eSB3aWRlIGxhdGl0dWRlLCB0aG91Z2guCisgIGNvbnN0IGRvdWJsZSBrRXhw
ZWN0ZWQgPSBrTnVtT3V0cHV0cyAvICgxLjAgKiBzaXplb2YocmVzdWx0X3R5cGUpICogOCk7Cisg
IEVYUEVDVF9MRShlcXVhbF9jb3VudCwgMS4wICsga0V4cGVjdGVkKTsKK30KKworLy8gTnVtYmVy
IG9mIHZhbHVlcyB0aGF0IG5lZWRzIHRvIGJlIGNvbnN1bWVkIHRvIGNsZWFuIHR3byBzaXplcyBv
ZiBidWZmZXIKKy8vIGFuZCB0cmlnZ2VyIHRoaXJkIHJlZnJlc2guIChzbGlnaHRseSBvdmVyZXN0
aW1hdGVzIHRoZSBhY3R1YWwgc3RhdGUgc2l6ZSkuCitjb25zdGV4cHIgc2l6ZV90IGtUd29CdWZm
ZXJWYWx1ZXMgPSBzaXplb2YocmFuZGVuX3U2NCkgLyBzaXplb2YodWludDE2X3QpICsgMTsKKwor
VFlQRURfVEVTVChSYW5kZW5FbmdpbmVUeXBlZFRlc3QsIFZlcmlmeURpc2NhcmQpIHsKKyAgdXNp
bmcgcmFuZGVuID0gdHlwZW5hbWUgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpyYW5kZW5fZW5naW5l
PFR5cGVQYXJhbT47CisKKyAgZm9yIChzaXplX3QgbnVtX3VzZWQgPSAwOyBudW1fdXNlZCA8IGtU
d29CdWZmZXJWYWx1ZXM7ICsrbnVtX3VzZWQpIHsKKyAgICByYW5kZW4gZW5naW5lX3VzZWQ7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fdXNlZDsgKytpKSB7CisgICAgICBlbmdpbmVf
dXNlZCgpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IG51bV9kaXNjYXJkID0gMDsgbnVtX2Rp
c2NhcmQgPCBrVHdvQnVmZmVyVmFsdWVzOworICAgICAgICAgKytudW1fZGlzY2FyZCkgeworICAg
ICAgcmFuZGVuIGVuZ2luZTEgPSBlbmdpbmVfdXNlZDsKKyAgICAgIHJhbmRlbiBlbmdpbmUyID0g
ZW5naW5lX3VzZWQ7CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9kaXNjYXJkOyAr
K2kpIHsKKyAgICAgICAgZW5naW5lMSgpOworICAgICAgfQorICAgICAgZW5naW5lMi5kaXNjYXJk
KG51bV9kaXNjYXJkKTsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga1R3b0J1ZmZlclZh
bHVlczsgKytpKSB7CisgICAgICAgIGNvbnN0IGF1dG8gcjEgPSBlbmdpbmUxKCk7CisgICAgICAg
IGNvbnN0IGF1dG8gcjIgPSBlbmdpbmUyKCk7CisgICAgICAgIEFTU0VSVF9FUShyMSwgcjIpIDw8
ICJ1c2VkPSIgPDwgbnVtX3VzZWQgPDwgIiBkaXNjYXJkPSIgPDwgbnVtX2Rpc2NhcmQ7CisgICAg
ICB9CisgICAgfQorICB9Cit9CisKK1RZUEVEX1RFU1QoUmFuZGVuRW5naW5lVHlwZWRUZXN0LCBT
dHJlYW1PcGVyYXRvcnNSZXN1bHQpIHsKKyAgdXNpbmcgcmFuZGVuID0gdHlwZW5hbWUgYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpyYW5kZW5fZW5naW5lPFR5cGVQYXJhbT47CisgIHN0ZDo6d29zdHJp
bmdzdHJlYW0gb3M7CisgIHN0ZDo6d2lzdHJpbmdzdHJlYW0gaXM7CisgIHJhbmRlbiBlbmdpbmU7
CisKKyAgRVhQRUNUX0VRKCYob3MgPDwgZW5naW5lKSwgJm9zKTsKKyAgRVhQRUNUX0VRKCYoaXMg
Pj4gZW5naW5lKSwgJmlzKTsKK30KKworVFlQRURfVEVTVChSYW5kZW5FbmdpbmVUeXBlZFRlc3Qs
IFN0cmVhbVNlcmlhbGl6YXRpb24pIHsKKyAgdXNpbmcgcmFuZGVuID0gdHlwZW5hbWUgYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpyYW5kZW5fZW5naW5lPFR5cGVQYXJhbT47CisKKyAgZm9yIChzaXpl
X3QgZGlzY2FyZCA9IDA7IGRpc2NhcmQgPCBrVHdvQnVmZmVyVmFsdWVzOyArK2Rpc2NhcmQpIHsK
KyAgICBFeHBsaWNpdFNlZWRTZXEgc2VlZF9zZXF1ZW5jZXsxMiwgMzQsIDU2fTsKKyAgICByYW5k
ZW4gZW5naW5lKHNlZWRfc2VxdWVuY2UpOworICAgIGVuZ2luZS5kaXNjYXJkKGRpc2NhcmQpOwor
CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICAgIHN0cmVhbSA8PCBlbmdpbmU7CisK
KyAgICByYW5kZW4gbmV3X2VuZ2luZTsKKyAgICBzdHJlYW0gPj4gbmV3X2VuZ2luZTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDY0OyArK2kpIHsKKyAgICAgIEVYUEVDVF9FUShlbmdpbmUo
KSwgbmV3X2VuZ2luZSgpKSA8PCAiICIgPDwgaTsKKyAgICB9CisgIH0KK30KKworY29uc3RleHBy
IHNpemVfdCBrTnVtR29sZGVuT3V0cHV0cyA9IDEyNzsKKworLy8gVGhpcyB0ZXN0IGlzIGNoZWNr
aW5nIGlmIHJhbmRlbl9lbmdpbmUgaXMgbWVldHMgaW50ZXJmYWNlIHJlcXVpcmVtZW50cworLy8g
ZGVmaW5lZCBpbiBbcmFuZC5yZXEudXJiZ10uCitUWVBFRF9URVNUKFJhbmRlbkVuZ2luZVR5cGVk
VGVzdCwgUmFuZG9tTnVtYmVyRW5naW5lSW50ZXJmYWNlKSB7CisgIHVzaW5nIHJhbmRlbiA9IHR5
cGVuYW1lIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTxUeXBlUGFyYW0+Owor
CisgIHVzaW5nIEUgPSByYW5kZW47CisgIHVzaW5nIFQgPSB0eXBlbmFtZSBFOjpyZXN1bHRfdHlw
ZTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPEU+Ojp2YWx1
ZSwKKyAgICAgICAgICAgICAgICAicmFuZGVuX2VuZ2luZSBtdXN0IGJlIGNvcHkgY29uc3RydWN0
aWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPEU+Ojp2
YWx1ZSwKKyAgICAgICAgICAgICAgICAicmFuZGVuX2VuZ2luZSBtdXN0IGJlIGNvcHkgYXNzaWdu
YWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8RT46
OnZhbHVlLAorICAgICAgICAgICAgICAgICJyYW5kZW5fZW5naW5lIG11c3QgYmUgbW92ZSBjb25z
dHJ1Y3RpYmxlIik7CisKKyAgc3RhdGljX2Fzc2VydChhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8
RT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJyYW5kZW5fZW5naW5lIG11c3QgYmUgbW92ZSBh
c3NpZ25hYmxlIik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoc3Rk
OjpkZWNsdmFsPEU+KCkoKSksIFQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAicmV0dXJuIHR5
cGUgb2Ygb3BlcmF0b3IoKSBtdXN0IGJlIHJlc3VsdF90eXBlIik7CisKKyAgLy8gTmFtZXMgYWZ0
ZXIgZGVmaW5pdGlvbiBvZiBbcmFuZC5yZXEudXJiZ10gaW4gQysrIHN0YW5kYXJkLgorICAvLyBl
IHVzIGEgdmFsdWUgb2YgRQorICAvLyB2IGlzIGEgbHZhbHVlIG9mIEUKKyAgLy8geCwgeSBhcmUg
cG9zc2libHkgY29uc3QgdmFsdWVzIG9mIEUKKyAgLy8gcyBpcyBhIHZhbHVlIG9mIFQKKyAgLy8g
cSBpcyBhIHZhbHVlIHNhdGlzZnlpbmcgcmVxdWlyZW1lbnRzIG9mIHNlZWRfc2VxdWVuY2UKKyAg
Ly8geiBpcyBhIHZhbHVlIG9mIHR5cGUgdW5zaWduZWQgbG9uZyBsb25nCisgIC8vIG9zIGlzIGEg
c29tZSBzcGVjaWFsaXphdGlvbiBvZiBiYXNpY19vc3RyZWFtCisgIC8vIGlzIGlzIGEgc29tZSBz
cGVjaWFsaXphdGlvbiBvZiBiYXNpY19pc3RyZWFtCisKKyAgRSBlLCB2OworICBjb25zdCBFIHgs
IHk7CisgIFQgcyA9IDE7CisgIHN0ZDo6c2VlZF9zZXEgcXsxLCAyLCAzfTsKKyAgdW5zaWduZWQg
bG9uZyBsb25nIHogPSAxOyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorICBzdGQ6Ondvc3RyaW5n
c3RyZWFtIG9zOworICBzdGQ6Ondpc3RyaW5nc3RyZWFtIGlzOworCisgIEV7fTsKKyAgRXt4fTsK
KyAgRXtzfTsKKyAgRXtxfTsKKworICBlLnNlZWQoKTsKKworICAvLyBNU1ZDIGVtaXRzIGVycm9y
IDI3MTggd2hlbiB1c2luZyBFWFBFQ1RfRVEoZSwgeCkKKyAgLy8gICogYWN0dWFsIHBhcmFtZXRl
ciB3aXRoIF9fZGVjbHNwZWMoYWxpZ24oJyMnKSkgd29uJ3QgYmUgYWxpZ25lZAorICBFWFBFQ1Rf
VFJVRShlID09IHgpOworCisgIGUuc2VlZChxKTsKKyAgeworICAgIEUgdG1wKHEpOworICAgIEVY
UEVDVF9UUlVFKGUgPT0gdG1wKTsKKyAgfQorCisgIGUoKTsKKyAgeworICAgIEUgdG1wKHEpOwor
ICAgIEVYUEVDVF9UUlVFKGUgIT0gdG1wKTsKKyAgfQorCisgIGUuZGlzY2FyZCh6KTsKKworICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZSh4ID09IHkpLCBib29sPjo6dmFsdWUs
CisgICAgICAgICAgICAgICAgInJldHVybiB0eXBlIG9mIG9wZXJhdG9yPT0gbXVzdCBiZSBib29s
Iik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoeCAhPSB5KSwgYm9v
bD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZSBvZiBvcGVyYXRvcj09IG11
c3QgYmUgYm9vbCIpOworfQorCitUWVBFRF9URVNUKFJhbmRlbkVuZ2luZVR5cGVkVGVzdCwgUmFu
ZGVuRW5naW5lU0ZJTkFFVGVzdCkgeworICB1c2luZyByYW5kZW4gPSB0eXBlbmFtZSBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OnJhbmRlbl9lbmdpbmU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgcmVzdWx0
X3R5cGUgPSB0eXBlbmFtZSByYW5kZW46OnJlc3VsdF90eXBlOworCisgIHsKKyAgICByYW5kZW4g
ZW5naW5lKHJlc3VsdF90eXBlKDEpKTsKKyAgICBlbmdpbmUuc2VlZChyZXN1bHRfdHlwZSgxKSk7
CisgIH0KKworICB7CisgICAgcmVzdWx0X3R5cGUgbiA9IDE7CisgICAgcmFuZGVuIGVuZ2luZShu
KTsKKyAgICBlbmdpbmUuc2VlZChuKTsKKyAgfQorCisgIHsKKyAgICByYW5kZW4gZW5naW5lKDEp
OworICAgIGVuZ2luZS5zZWVkKDEpOworICB9CisKKyAgeworICAgIGludCBuID0gMTsKKyAgICBy
YW5kZW4gZW5naW5lKG4pOworICAgIGVuZ2luZS5zZWVkKG4pOworICB9CisKKyAgeworICAgIHN0
ZDo6c2VlZF9zZXEgc2VlZF9zZXE7CisgICAgcmFuZGVuIGVuZ2luZShzZWVkX3NlcSk7CisgICAg
ZW5naW5lLnNlZWQoc2VlZF9zZXEpOworICB9CisKKyAgeworICAgIHJhbmRlbiBlbmdpbmV7c3Rk
OjpzZWVkX3NlcSgpfTsKKyAgICBlbmdpbmUuc2VlZChzdGQ6OnNlZWRfc2VxKCkpOworICB9Cit9
CisKK1RFU1QoUmFuZGVuVGVzdCwgVmVyaWZ5R29sZGVuUmFuZGVuNjREZWZhdWx0KSB7CisgIGNv
bnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW2tOdW1Hb2xkZW5PdXRwdXRzXSA9IHsKKyAgICAgIDB4
YzNjMTRmMTM0ZTQzMzk3NywgMHhkZGE5ZjQ3Y2Q5MDQxMGVlLCAweDg4N2JmMzA4N2ZkOGNhMTAs
CisgICAgICAweGYwYjc4MGY1NDVjNzI5MTIsIDB4MTVkYmIxZDM3Njk2NTk5ZiwgMHgzMGVjNjNi
YWZmM2M2ZDU5LAorICAgICAgMHhiMjlmNzM2MDZmN2YyMGE2LCAweDAyODA4YTMxNmY0OWE1NGMs
IDB4M2I4ZmVhZjlkNWM4ZTUwZSwKKyAgICAgIDB4OWNiZjYwNWUzZmQ5ZGU4YSwgMHhjOTcwYWUx
YTc4MTgzYmJiLCAweGQ4YjJmZmQzNTYzMDFlZDUsCisgICAgICAweGY0YjMyN2ZlMGZjNzNjMzcs
IDB4Y2RmZDhkNzZlYjhmOWExOSwgMHhjM2E1MDZlYjkxNDIwYzlkLAorICAgICAgMHhkNWFmMDVk
ZDNlZmY5NTU2LCAweDQ4ZGIxYmI3OGY4M2M0YTEsIDB4NzAyMzkyMGUwZDZiZmU4YywKKyAgICAg
IDB4NThkMzU3NTgzNDk1NmQ0MiwgMHhlZDFlZjRjMjZiODdiODQwLCAweDhlZWYzMmEyM2UwYjJk
ZjMsCisgICAgICAweDQ5N2NhYmYzNDMxMTU0ZmMsIDB4NGUyNDM3MDU3MDAyOWE4YiwgMHhkODhi
NTc0OWYwOTBlNWVhLAorICAgICAgMHhjNjUxYTU4MmE5NzA2OTJmLCAweDc4ZmNlYzJjYmI2MzQy
ZjUsIDB4NDYzY2I3NDU2MTJmNTVkYiwKKyAgICAgIDB4MzUyZWU0YWQxODE2YWZlMywgMHgwMjZm
ZjM3NGMxMDFkYTdlLCAweDgxMWVmMDgyMWMzZGU4NTEsCisgICAgICAweDZmN2U2MTY3MDRjNGZh
NTksIDB4YTA2NjAzNzk5OTJkNThmYywgMHgwNGIwYTM3NGEzYjc5NWM3LAorICAgICAgMHg5MTVm
MzQ0NTY4NWRhNzk4LCAweDI2ODAyYThhYzc2NTcxY2UsIDB4NDY2MzM1MjUzM2NlMTg4MiwKKyAg
ICAgIDB4YjlmZGVmYjRhMjRkYzczOCwgMHg1NTg4YmEzYTRkNmU2YzUxLCAweGEyMTAxYTQyZDM1
ZjE5NTYsCisgICAgICAweDYwNzE5NWE1ZTIwMGY1ZmQsIDB4N2UxMDAzMDhmMzI5MDc2NCwgMHhl
MWU1ZTAzYzc1OWMwNzA5LAorICAgICAgMHgwODI1NzJjYzVkYTY2MDZmLCAweGNiY2Y1ODUzOTll
NDMyZjEsIDB4ZThhMmJlNGY4MzM1ZDhmMSwKKyAgICAgIDB4MDkwNDQ2OWFjYmZlZThmMiwgMHhm
MDhiZDMxYjZkYWVjZDUxLCAweDA4ZThhMWYxYTY5ZGE2OWEsCisgICAgICAweDY1NDJhMjBhYWQ1
N2JmZjUsIDB4MmU5NzA1YmIwNTNkNmI0NiwgMHhkYTJmYzlkYjA3MTNjMzkxLAorICAgICAgMHg3
OGUzYTgxMDIxM2I2ZmZiLCAweGRjMTZhNTljZGQ4NWY4YTYsIDB4YzA5MzI3MThjZDU1NzgxZiwK
KyAgICAgIDB4YjliZmIyOWMyYjIwYmZlNSwgMHhiOTcyODljMWJlMGYyZjljLCAweGMwYTJhMGU0
MDNhODkyZDQsCisgICAgICAweDU1MjRiYjgzNDc3MTQzNWIsIDB4ODI2NWRhM2QzOWQxYTc1MCwg
MHhmZjRhZjNhYjhkMWI3OGM1LAorICAgICAgMHhmMGVjNWY0MjRiY2FkNzdmLCAweDY2ZTQ1NWY2
Mjc0OTUxODksIDB4YzgyZDMxMjBiNTdlMzI3MCwKKyAgICAgIDB4MzQyNGU0N2RjMjI1OTZlMywg
MHhiYzBjOTUxMjljY2VkY2RkLCAweGMxOTFjNTk1YWZjNGRjYmYsCisgICAgICAweDEyMDM5MmJk
MmJiNzA5MzksIDB4N2Y5MDY1MGVhNmNkNmFiNCwgMHg3Mjg3NDkxODMyNjk1YWQzLAorICAgICAg
MHhhN2M4ZmFjNWE3OTE3ZWIwLCAweGQwODhjYjk0MThiZTAzNjEsIDB4N2MxYmY5ODM5YzdjMWNl
NSwKKyAgICAgIDB4ZTJlOTkxZmE1OGUxZTc5ZSwgMHg3ODU2NWNkZWZkMjhjNGFkLCAweDczNTFi
OWZlZjk4YmFmYWQsCisgICAgICAweDJhOWVhYzI4YjA4Yzk2YmYsIDB4NmM0ZjE3OTY5NmNiMjIy
NSwgMHgxM2E2ODU4NjFiYWI4N2UwLAorICAgICAgMHg2NGM2ZGU1YWEwNTAxOTcxLCAweDMwNTM3
NDI1Y2FjNzA5OTEsIDB4MDE1OTBkOWRjNmM1MzJiNywKKyAgICAgIDB4N2UwNWUzYWE4ZWM3MjBk
YywgMHg3NGEwN2Q5YzU0ZTNlNjNmLCAweDczODE4NDM4OGYzYmMxZDIsCisgICAgICAweDI2ZmZk
YzUwNjdiZTNhY2IsIDB4NmJjZGYxODU1NjFmMjU1ZiwgMHhhMGVhZjJlMWNmOTliMWM2LAorICAg
ICAgMHgxNzFkZjgxOTM0ZjY4NjA0LCAweDdlYTVhMjE2NjU2ODNlNWEsIDB4NWQxY2IwMjA3NWJh
MWNlYSwKKyAgICAgIDB4OTU3ZjM4Y2JkMjEyM2ZkZiwgMHhiYTYzNjRlZmY4MGRlMDJmLCAweDYw
NmUwYTBlNDFkNDUyZWUsCisgICAgICAweDg5MmQ4MzE3ZGU4MmY3YTIsIDB4ZTcwN2IxZGI1MGY3
YjQzZSwgMHg0ZWIyODgyNjc2NmZjZjViLAorICAgICAgMHg1YTM2MmQ1NmU4MGEwOTUxLCAweDZl
ZTIxN2RmMTY1MjdkNzgsIDB4ZjY3Mzc5NjJiYTZiMjNkZCwKKyAgICAgIDB4NDQzZTYzODU3ZDQw
NzZjYSwgMHg3OTBkOWE1ZjA0OGFkZmViLCAweGQ3OTZiMDUyMTUxZWU5NGQsCisgICAgICAweDAz
M2VkOTVjMTJiMDRhMDMsIDB4OGI4MzNmZjg0ODkzZGE1ZCwgMHgzZDY3MjRiMWJiMTVlYWI5LAor
ICAgICAgMHg5ODc3YzQyMjUwNjFjYTc2LCAweGQ2OGQ2ODEwYWRmNzRmYjMsIDB4NDJlNTM1MmZl
MzBjZTk4OSwKKyAgICAgIDB4MjY1YjU2NWE3NDMxZmRlNywgMHgzY2RiZjdlMzU4ZGY0YjhiLCAw
eDI5MjJhNDdmNmQzZTg3NzksCisgICAgICAweDUyZDIyNDJmNjViMzdmODgsIDB4NWQ4MzZkNmUy
OTU4ZDZiNSwgMHgyOWQ0MGYwMDU2NmQ1ZTI2LAorICAgICAgMHgyODhkYjBlMTEyNGIxNGEwLCAw
eDZjMDU2NjA4YjdkOWMxYjYsIDB4MGI5NDcxYmRiOGYxOWQzMiwKKyAgICAgIDB4OGZiOTQ2NTA0
ZmFhNmM5ZCwgMHg4OTQzYTk0NjQ1NDAyNTFjLCAweGZkMWZlMjdkMTQ0YTA5ZTAsCisgICAgICAw
eGVhNmFjNDU4ZGExNDFiZGEsIDB4ODA0OGYyMTc2MzNmY2UzNiwgMHhmZWRhMTM4NGFkZTc0ZDMx
LAorICAgICAgMHg0MzM0YjhiMDJmZjc2MTJmLCAweGRiYzg0NDFmNTIyN2UyMTYsIDB4MDk2ZDEx
OWEzNjA1Yzg1YiwKKyAgICAgIDB4MmI3MmIzMWMyMWI3ZDdkMH07CisKKyAgcmFuZGVuX3U2NCBl
bmdpbmU7CisjaWYgVVBEQVRFX0dPTERFTgorICAodm9pZClrR29sZGVuOyAgLy8gU2lsZW5jZSB3
YXJuaW5nLgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1Hb2xkZW5PdXRwdXRzOyArK2kp
IHsKKyAgICBwcmludGYoIjB4JTAxNmx4LCAiLCBlbmdpbmUoKSk7CisgICAgaWYgKGkgJSAzID09
IDIpIHsKKyAgICAgIHByaW50ZigiXG4iKTsKKyAgICB9CisgIH0KKyAgcHJpbnRmKCJcblxuXG4i
KTsKKyNlbHNlCisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBF
Q1RfRVEoZWxlbSwgZW5naW5lKCkpOworICB9CisgIGVuZ2luZS5zZWVkKCk7CisgIGZvciAoY29u
c3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkp
OworICB9CisjZW5kaWYKK30KKworVEVTVChSYW5kZW5UZXN0LCBWZXJpZnlHb2xkZW5SYW5kZW42
NFNlZWRlZCkgeworICBjb25zdGV4cHIgdWludDY0X3Qga0dvbGRlbltrTnVtR29sZGVuT3V0cHV0
c10gPSB7CisgICAgICAweDgzYTllNThmOTRkM2RjZDUsIDB4NzBiYmRmZjNkOTc5NDlmYiwgMHgw
NDM4NDgxZjc0NzFjMWI0LAorICAgICAgMHgzNGZkYzU4ZWU1ZmI1OTMwLCAweGNlZWU0ZjJkMmE5
MzdkMTcsIDB4YjVhMjZhNjhlNDMyYWVhOSwKKyAgICAgIDB4OGI2NDc3NGEzZmI1MTc0MCwgMHhk
ODlhYzFmYzc0MjQ5Yzc0LCAweDAzOTEwZDFkMjNmYzNmZGYsCisgICAgICAweGQzOGY2MzA4Nzhh
YTg5N2YsIDB4MGVlOGYwZjU2MTVmN2U0NCwgMHg5OGY1YTUzZGY4Mjc5ZDUyLAorICAgICAgMHhi
NDAzZjUyYzI1OTM4ZDBlLCAweDI0MDA3Mjk5NmVhNmU4MzgsIDB4ZDNhNzkxMjQ2MTkwZmE2MSwK
KyAgICAgIDB4YWFlZGQzZGY3YTdiNGY4MCwgMHhjNmVhY2FiZTA1ZGVhZjZlLCAweGI3OTY3ZGQ4
NzkwZWRmNGQsCisgICAgICAweDlhMGE4ZTY3ZTA0OWQyNzksIDB4MDQ5NGY2MDZhZWJjMjNlNywg
MHg1OThkY2Q2ODdiYzNlMGVlLAorICAgICAgMHgwMTBhYzgxODAyZDQ1MmExLCAweDY0MDdjODcx
NjBhYTI4NDIsIDB4NWE1NmUyNzY0ODZmOTNhMCwKKyAgICAgIDB4Yzg4N2EzOTlkNDZhOGYwMiwg
MHg5ZTFlNjEwMGZlOTNiNzQwLCAweDEyZDAyZTMzMGY4OTAxZjYsCisgICAgICAweGMzOWNhNTJi
NDdlNzkwYjcsIDB4YjBiMGEyZmExMWU4MmU2MSwgMHgxNTQyZDg0MWEzMDM4MDZhLAorICAgICAg
MHgxZmU2NTlmZDdkNmU5ZDg2LCAweGI4YzkwZDgwNzQ2NTQxYWMsIDB4MjM5ZDU2YTU2NjlkZGM5
NCwKKyAgICAgIDB4ZDQwZGI1N2M4MTIzZDEzYywgMHgzYWJjMjQxNDE1M2EwZGIwLCAweDliYWQ2
NjU2MzBjYjhkNjEsCisgICAgICAweDBiZDFmYjkwZWUzZjRiYmMsIDB4OGYwYjRkN2UwNzliNGU0
MiwgMHhmYTBmYjBlMGVlNTllNzkzLAorICAgICAgMHg1MTA4MGIyODNlMDcxMTAwLCAweDJjNGI5
ZTcxNTA4MWNjMTUsIDB4YmUxMGVkNDlkZTQ5NDFkZiwKKyAgICAgIDB4ZjhlYWFjOWQ0YjFiMGQz
NywgMHg0YmNjZTRiNTQ2MDVlMTM5LCAweGE2NDcyMmI3Njc2NWRkYTYsCisgICAgICAweGI5Mzc3
ZDczOGNhMjhhYjUsIDB4Nzc5ZmFkODFhOGNjYzFhZiwgMHg2NWNiM2VlNjFmZmQzYmE3LAorICAg
ICAgMHhkNzRlNzkwODc4NjI4MzZmLCAweGQwNWI5YzU4NGMzZjI1YmYsIDB4MmJhOTNhNDY5MzU3
OTgyNywKKyAgICAgIDB4ZDgxNTMwYWZmMDU0MjBjZSwgMHhlYzA2Y2VhMjE1NDc4NjIxLCAweDRi
MTc5OGE2Nzk2ZDY1YWQsCisgICAgICAweGYxNDJmM2ZiM2E2ZjZmYTYsIDB4MDAyYjdiZjdlMjM3
YjU2MCwgMHhmNDdmMjYwNWVmNjViNGY4LAorICAgICAgMHg5ODA0ZWM1NTE3ZWZmYzE4LCAweGFl
ZDNkN2Y4YjdkNDgxY2QsIDB4NTY1MWMyNGMxY2UzMzhkMSwKKyAgICAgIDB4M2U3YTM4MjA4YmYw
YTNjNiwgMHg2Nzk2YTdiNjE0NTM0YWVkLCAweDBkMGYzYjg0ODM1ODQ2MGYsCisgICAgICAweDBm
YTVmZTc2MDBiMTk1MjQsIDB4MmIwY2YzODI1M2ZhYWVkYywgMHgxMGRmOTE4ODIzM2E5ZmQ2LAor
ICAgICAgMHgzYTEwMDMzODgwMTM4YjU5LCAweDVmYjBiMGQyMzk0OGU4MGYsIDB4OWU3NmY3YjAy
ZmJmNTM1MCwKKyAgICAgIDB4MDgxNjA1MjMwNGIxYTk4NSwgMHgzMGM5ODgwZGI0MWZkMjE4LCAw
eDE0YWEzOTliNjVlMjBmMjgsCisgICAgICAweGUxNDU0YThjYWNlNzg3YjQsIDB4MzI1YWM5NzFi
NmM2ZjBmNSwgMHg3MTZiMWFhMjc4NGYzZDM2LAorICAgICAgMHgzZDVjZTE0YWNjZmQxNDRmLCAw
eDZjMGM5NzcxMGY2NTE3OTIsIDB4YmM1YjBmNTlmYjMzMzUzMiwKKyAgICAgIDB4MmE5MGE3ZDIx
NDA0NzBiYywgMHg4ZGEyNjlmNTVjMWUxYzhkLCAweGNmYzM3MTQzODk1NzkyY2EsCisgICAgICAw
eGJlMjFlYWIxZjMwYjIzOGYsIDB4OGM0NzIyOWRlZTRkNjVmZCwgMHg1NzQzNjE0ZWQxZWQ3ZDU0
LAorICAgICAgMHgzNTEzNzJhOTllOWM0NzZlLCAweDJiZDVlYTE1ZTVkYjA4NWYsIDB4NjkyNWZk
ZTQ2ZTBhZjRjYSwKKyAgICAgIDB4ZWQzZWRhMmJkYzFmNDViZCwgMHhkZWY2OGM2OGQ0NjBmYTZl
LCAweGU0MmEwZGU3NjI1M2UyYjUsCisgICAgICAweDRlNTE3NmRjYmMyOWMzMDUsIDB4YmZkODVm
YmE5ZjgxMGY2ZSwgMHg3NmE1YTJhOWJlYjgxNWM2LAorICAgICAgMHgwMWVkYzRkZGNlYWY0MTRj
LCAweGE0ZTk4OTA0YjRiYjNiNGIsIDB4MDBiZDYzYWM3ZDJmMWRkZCwKKyAgICAgIDB4Yjg0OTFm
ZTZlOTk4ZGRiYiwgMHhiMzg2YTM0NjNkZGE2ODAwLCAweDAwODE4ODc2ODg4NzE2MTksCisgICAg
ICAweDMzZDM5NGIzMzQ0ZTlhMzgsIDB4ODE1ZGJhNjVhM2E4YmFmOSwgMHg0MjMyZjZlYzAyYzJm
ZDFhLAorICAgICAgMHhiNWNmZjYwM2VkZDIwODM0LCAweDU4MDE4OTI0M2Y2ODc2NjMsIDB4YThk
NWEyY2JkYzI3ZmU5OSwKKyAgICAgIDB4NzI1ZDg4MTY5M2ZhMDEzMSwgMHhhMmJlMmMxM2RiMmM3
YWM1LCAweDdiNmE5NjE0YjUwOWZkNzgsCisgICAgICAweGI2YjEzNmQ3MWU3MTc2MzYsIDB4NjYw
ZjFhNzFhZmYwNDZlYSwgMHgwYmExMGFlMzQ2YzhlYzllLAorICAgICAgMHhlNjZkZGU1M2UzMTQ1
YjQxLCAweDNiMTgyODhjODhjMjZiZTYsIDB4NGQ5ZDlkMmZmMDJkYjkzMywKKyAgICAgIDB4NDE2
N2RhOGM3MGY0NmU4YSwgMHhmMTgzYmVlZjhjNjMxOGI0LCAweDRkODg5ZTFlNzFlZWVlZjEsCisg
ICAgICAweDcxNzVjNzFhZDY2ODliNmIsIDB4ZmI5ZTQyYmVhY2QxYjdkZCwgMHhjMzNkMGU5MWIy
OWI1ZTBkLAorICAgICAgMHhkMzliODMyOTFjZTQ3OTIyLCAweGM0ZDU3MGZiODQ5M2QxMmUsIDB4
MjNkNWE1NzI0ZjQyNGFlNiwKKyAgICAgIDB4NTI0NWYxNjE4NzZiNjYxNiwgMHgzOGQ3N2RiZDIx
YWI1NzhkLCAweDljMzQyMzMxMWY0ZWNiZmUsCisgICAgICAweDc2ZmUzMTM4OWJhY2Q5ZDUsCisg
IH07CisKKyAgRXhwbGljaXRTZWVkU2VxIHNlZWRfc2VxdWVuY2V7MTIsIDM0LCA1Nn07CisgIHJh
bmRlbl91NjQgZW5naW5lKHNlZWRfc2VxdWVuY2UpOworI2lmIFVQREFURV9HT0xERU4KKyAgKHZv
aWQpa0dvbGRlbjsgIC8vIFNpbGVuY2Ugd2FybmluZy4KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBrTnVtR29sZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwMTZseCwgIiwgZW5n
aW5lKCkpOworICAgIGlmIChpICUgMyA9PSAyKSB7CisgICAgICBwcmludGYoIlxuIik7CisgICAg
fQorICB9CisgIHByaW50ZigiXG5cblxuIik7CisjZWxzZQorICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW0gOiBrR29sZGVuKSB7CisgICAgRVhQRUNUX0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQorICBl
bmdpbmUuc2VlZChzZWVkX3NlcXVlbmNlKTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dv
bGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyNlbmRpZgorfQor
CitURVNUKFJhbmRlblRlc3QsIFZlcmlmeUdvbGRlblJhbmRlbjMyRGVmYXVsdCkgeworICBjb25z
dGV4cHIgdWludDY0X3Qga0dvbGRlblsyICoga051bUdvbGRlbk91dHB1dHNdID0geworICAgICAg
MHg0ZTQzMzk3NywgMHhjM2MxNGYxMywgMHhkOTA0MTBlZSwgMHhkZGE5ZjQ3YywgMHg3ZmQ4Y2Ex
MCwgMHg4ODdiZjMwOCwKKyAgICAgIDB4NDVjNzI5MTIsIDB4ZjBiNzgwZjUsIDB4NzY5NjU5OWYs
IDB4MTVkYmIxZDMsIDB4ZmYzYzZkNTksIDB4MzBlYzYzYmEsCisgICAgICAweDZmN2YyMGE2LCAw
eGIyOWY3MzYwLCAweDZmNDlhNTRjLCAweDAyODA4YTMxLCAweGQ1YzhlNTBlLCAweDNiOGZlYWY5
LAorICAgICAgMHgzZmQ5ZGU4YSwgMHg5Y2JmNjA1ZSwgMHg3ODE4M2JiYiwgMHhjOTcwYWUxYSwg
MHg1NjMwMWVkNSwgMHhkOGIyZmZkMywKKyAgICAgIDB4MGZjNzNjMzcsIDB4ZjRiMzI3ZmUsIDB4
ZWI4ZjlhMTksIDB4Y2RmZDhkNzYsIDB4OTE0MjBjOWQsIDB4YzNhNTA2ZWIsCisgICAgICAweDNl
ZmY5NTU2LCAweGQ1YWYwNWRkLCAweDhmODNjNGExLCAweDQ4ZGIxYmI3LCAweDBkNmJmZThjLCAw
eDcwMjM5MjBlLAorICAgICAgMHgzNDk1NmQ0MiwgMHg1OGQzNTc1OCwgMHg2Yjg3Yjg0MCwgMHhl
ZDFlZjRjMiwgMHgzZTBiMmRmMywgMHg4ZWVmMzJhMiwKKyAgICAgIDB4NDMxMTU0ZmMsIDB4NDk3
Y2FiZjMsIDB4NzAwMjlhOGIsIDB4NGUyNDM3MDUsIDB4ZjA5MGU1ZWEsIDB4ZDg4YjU3NDksCisg
ICAgICAweGE5NzA2OTJmLCAweGM2NTFhNTgyLCAweGJiNjM0MmY1LCAweDc4ZmNlYzJjLCAweDYx
MmY1NWRiLCAweDQ2M2NiNzQ1LAorICAgICAgMHgxODE2YWZlMywgMHgzNTJlZTRhZCwgMHhjMTAx
ZGE3ZSwgMHgwMjZmZjM3NCwgMHgxYzNkZTg1MSwgMHg4MTFlZjA4MiwKKyAgICAgIDB4MDRjNGZh
NTksIDB4NmY3ZTYxNjcsIDB4OTkyZDU4ZmMsIDB4YTA2NjAzNzksIDB4YTNiNzk1YzcsIDB4MDRi
MGEzNzQsCisgICAgICAweDY4NWRhNzk4LCAweDkxNWYzNDQ1LCAweGM3NjU3MWNlLCAweDI2ODAy
YThhLCAweDMzY2UxODgyLCAweDQ2NjMzNTI1LAorICAgICAgMHhhMjRkYzczOCwgMHhiOWZkZWZi
NCwgMHg0ZDZlNmM1MSwgMHg1NTg4YmEzYSwgMHhkMzVmMTk1NiwgMHhhMjEwMWE0MiwKKyAgICAg
IDB4ZTIwMGY1ZmQsIDB4NjA3MTk1YTUsIDB4ZjMyOTA3NjQsIDB4N2UxMDAzMDgsIDB4NzU5YzA3
MDksIDB4ZTFlNWUwM2MsCisgICAgICAweDVkYTY2MDZmLCAweDA4MjU3MmNjLCAweDk5ZTQzMmYx
LCAweGNiY2Y1ODUzLCAweDgzMzVkOGYxLCAweGU4YTJiZTRmLAorICAgICAgMHhjYmZlZThmMiwg
MHgwOTA0NDY5YSwgMHg2ZGFlY2Q1MSwgMHhmMDhiZDMxYiwgMHhhNjlkYTY5YSwgMHgwOGU4YTFm
MSwKKyAgICAgIDB4YWQ1N2JmZjUsIDB4NjU0MmEyMGEsIDB4MDUzZDZiNDYsIDB4MmU5NzA1YmIs
IDB4MDcxM2MzOTEsIDB4ZGEyZmM5ZGIsCisgICAgICAweDIxM2I2ZmZiLCAweDc4ZTNhODEwLCAw
eGRkODVmOGE2LCAweGRjMTZhNTljLCAweGNkNTU3ODFmLCAweGMwOTMyNzE4LAorICAgICAgMHgy
YjIwYmZlNSwgMHhiOWJmYjI5YywgMHhiZTBmMmY5YywgMHhiOTcyODljMSwgMHgwM2E4OTJkNCwg
MHhjMGEyYTBlNCwKKyAgICAgIDB4NDc3MTQzNWIsIDB4NTUyNGJiODMsIDB4MzlkMWE3NTAsIDB4
ODI2NWRhM2QsIDB4OGQxYjc4YzUsIDB4ZmY0YWYzYWIsCisgICAgICAweDRiY2FkNzdmLCAweGYw
ZWM1ZjQyLCAweDI3NDk1MTg5LCAweDY2ZTQ1NWY2LCAweGI1N2UzMjcwLCAweGM4MmQzMTIwLAor
ICAgICAgMHhjMjI1OTZlMywgMHgzNDI0ZTQ3ZCwgMHg5Y2NlZGNkZCwgMHhiYzBjOTUxMiwgMHhh
ZmM0ZGNiZiwgMHhjMTkxYzU5NSwKKyAgICAgIDB4MmJiNzA5MzksIDB4MTIwMzkyYmQsIDB4YTZj
ZDZhYjQsIDB4N2Y5MDY1MGUsIDB4MzI2OTVhZDMsIDB4NzI4NzQ5MTgsCisgICAgICAweGE3OTE3
ZWIwLCAweGE3YzhmYWM1LCAweDE4YmUwMzYxLCAweGQwODhjYjk0LCAweDljN2MxY2U1LCAweDdj
MWJmOTgzLAorICAgICAgMHg1OGUxZTc5ZSwgMHhlMmU5OTFmYSwgMHhmZDI4YzRhZCwgMHg3ODU2
NWNkZSwgMHhmOThiYWZhZCwgMHg3MzUxYjlmZSwKKyAgICAgIDB4YjA4Yzk2YmYsIDB4MmE5ZWFj
MjgsIDB4OTZjYjIyMjUsIDB4NmM0ZjE3OTYsIDB4MWJhYjg3ZTAsIDB4MTNhNjg1ODYsCisgICAg
ICAweGEwNTAxOTcxLCAweDY0YzZkZTVhLCAweGNhYzcwOTkxLCAweDMwNTM3NDI1LCAweGM2YzUz
MmI3LCAweDAxNTkwZDlkLAorICAgICAgMHg4ZWM3MjBkYywgMHg3ZTA1ZTNhYSwgMHg1NGUzZTYz
ZiwgMHg3NGEwN2Q5YywgMHg4ZjNiYzFkMiwgMHg3MzgxODQzOCwKKyAgICAgIDB4NjdiZTNhY2Is
IDB4MjZmZmRjNTAsIDB4NTYxZjI1NWYsIDB4NmJjZGYxODUsIDB4Y2Y5OWIxYzYsIDB4YTBlYWYy
ZTEsCisgICAgICAweDM0ZjY4NjA0LCAweDE3MWRmODE5LCAweDY1NjgzZTVhLCAweDdlYTVhMjE2
LCAweDc1YmExY2VhLCAweDVkMWNiMDIwLAorICAgICAgMHhkMjEyM2ZkZiwgMHg5NTdmMzhjYiwg
MHhmODBkZTAyZiwgMHhiYTYzNjRlZiwgMHg0MWQ0NTJlZSwgMHg2MDZlMGEwZSwKKyAgICAgIDB4
ZGU4MmY3YTIsIDB4ODkyZDgzMTcsIDB4NTBmN2I0M2UsIDB4ZTcwN2IxZGIsIDB4NzY2ZmNmNWIs
IDB4NGViMjg4MjYsCisgICAgICAweGU4MGEwOTUxLCAweDVhMzYyZDU2LCAweDE2NTI3ZDc4LCAw
eDZlZTIxN2RmLCAweGJhNmIyM2RkLCAweGY2NzM3OTYyLAorICAgICAgMHg3ZDQwNzZjYSwgMHg0
NDNlNjM4NSwgMHgwNDhhZGZlYiwgMHg3OTBkOWE1ZiwgMHgxNTFlZTk0ZCwgMHhkNzk2YjA1MiwK
KyAgICAgIDB4MTJiMDRhMDMsIDB4MDMzZWQ5NWMsIDB4NDg5M2RhNWQsIDB4OGI4MzNmZjgsIDB4
YmIxNWVhYjksIDB4M2Q2NzI0YjEsCisgICAgICAweDUwNjFjYTc2LCAweDk4NzdjNDIyLCAweGFk
Zjc0ZmIzLCAweGQ2OGQ2ODEwLCAweGUzMGNlOTg5LCAweDQyZTUzNTJmLAorICAgICAgMHg3NDMx
ZmRlNywgMHgyNjViNTY1YSwgMHg1OGRmNGI4YiwgMHgzY2RiZjdlMywgMHg2ZDNlODc3OSwgMHgy
OTIyYTQ3ZiwKKyAgICAgIDB4NjViMzdmODgsIDB4NTJkMjI0MmYsIDB4Mjk1OGQ2YjUsIDB4NWQ4
MzZkNmUsIDB4NTY2ZDVlMjYsIDB4MjlkNDBmMDAsCisgICAgICAweDEyNGIxNGEwLCAweDI4OGRi
MGUxLCAweGI3ZDljMWI2LCAweDZjMDU2NjA4LCAweGI4ZjE5ZDMyLCAweDBiOTQ3MWJkLAorICAg
ICAgMHg0ZmFhNmM5ZCwgMHg4ZmI5NDY1MCwgMHg0NTQwMjUxYywgMHg4OTQzYTk0NiwgMHgxNDRh
MDllMCwgMHhmZDFmZTI3ZCwKKyAgICAgIDB4ZGExNDFiZGEsIDB4ZWE2YWM0NTgsIDB4NjMzZmNl
MzYsIDB4ODA0OGYyMTcsIDB4YWRlNzRkMzEsIDB4ZmVkYTEzODQsCisgICAgICAweDJmZjc2MTJm
LCAweDQzMzRiOGIwLCAweDUyMjdlMjE2LCAweGRiYzg0NDFmLCAweDM2MDVjODViLCAweDA5NmQx
MTlhLAorICAgICAgMHgyMWI3ZDdkMCwgMHgyYjcyYjMxY307CisKKyAgcmFuZGVuX3UzMiBlbmdp
bmU7CisjaWYgVVBEQVRFX0dPTERFTgorICAodm9pZClrR29sZGVuOyAgLy8gU2lsZW5jZSB3YXJu
aW5nLgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDIgKiBrTnVtR29sZGVuT3V0cHV0czsgKytp
KSB7CisgICAgcHJpbnRmKCIweCUwOHgsICIsIGVuZ2luZSgpKTsKKyAgICBpZiAoaSAlIDYgPT0g
NSkgeworICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKyAgfQorICBwcmludGYoIlxuXG5cbiIp
OworI2Vsc2UKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVD
VF9FUShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyAgZW5naW5lLnNlZWQoKTsKKyAgZm9yIChjb25z
dCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7
CisgIH0KKyNlbmRpZgorfQorCitURVNUKFJhbmRlblRlc3QsIFZlcmlmeUdvbGRlblJhbmRlbjMy
U2VlZGVkKSB7CisgIGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuWzIgKiBrTnVtR29sZGVuT3V0
cHV0c10gPSB7CisgICAgICAweDk0ZDNkY2Q1LCAweDgzYTllNThmLCAweGQ5Nzk0OWZiLCAweDcw
YmJkZmYzLCAweDc0NzFjMWI0LCAweDA0Mzg0ODFmLAorICAgICAgMHhlNWZiNTkzMCwgMHgzNGZk
YzU4ZSwgMHgyYTkzN2QxNywgMHhjZWVlNGYyZCwgMHhlNDMyYWVhOSwgMHhiNWEyNmE2OCwKKyAg
ICAgIDB4M2ZiNTE3NDAsIDB4OGI2NDc3NGEsIDB4NzQyNDljNzQsIDB4ZDg5YWMxZmMsIDB4MjNm
YzNmZGYsIDB4MDM5MTBkMWQsCisgICAgICAweDc4YWE4OTdmLCAweGQzOGY2MzA4LCAweDYxNWY3
ZTQ0LCAweDBlZThmMGY1LCAweGY4Mjc5ZDUyLCAweDk4ZjVhNTNkLAorICAgICAgMHgyNTkzOGQw
ZSwgMHhiNDAzZjUyYywgMHg2ZWE2ZTgzOCwgMHgyNDAwNzI5OSwgMHg2MTkwZmE2MSwgMHhkM2E3
OTEyNCwKKyAgICAgIDB4N2E3YjRmODAsIDB4YWFlZGQzZGYsIDB4MDVkZWFmNmUsIDB4YzZlYWNh
YmUsIDB4NzkwZWRmNGQsIDB4Yjc5NjdkZDgsCisgICAgICAweGUwNDlkMjc5LCAweDlhMGE4ZTY3
LCAweGFlYmMyM2U3LCAweDA0OTRmNjA2LCAweDdiYzNlMGVlLCAweDU5OGRjZDY4LAorICAgICAg
MHgwMmQ0NTJhMSwgMHgwMTBhYzgxOCwgMHg2MGFhMjg0MiwgMHg2NDA3Yzg3MSwgMHg0ODZmOTNh
MCwgMHg1YTU2ZTI3NiwKKyAgICAgIDB4ZDQ2YThmMDIsIDB4Yzg4N2EzOTksIDB4ZmU5M2I3NDAs
IDB4OWUxZTYxMDAsIDB4MGY4OTAxZjYsIDB4MTJkMDJlMzMsCisgICAgICAweDQ3ZTc5MGI3LCAw
eGMzOWNhNTJiLCAweDExZTgyZTYxLCAweGIwYjBhMmZhLCAweGEzMDM4MDZhLCAweDE1NDJkODQx
LAorICAgICAgMHg3ZDZlOWQ4NiwgMHgxZmU2NTlmZCwgMHg3NDY1NDFhYywgMHhiOGM5MGQ4MCwg
MHg2NjlkZGM5NCwgMHgyMzlkNTZhNSwKKyAgICAgIDB4ODEyM2QxM2MsIDB4ZDQwZGI1N2MsIDB4
MTUzYTBkYjAsIDB4M2FiYzI0MTQsIDB4MzBjYjhkNjEsIDB4OWJhZDY2NTYsCisgICAgICAweGVl
M2Y0YmJjLCAweDBiZDFmYjkwLCAweDA3OWI0ZTQyLCAweDhmMGI0ZDdlLCAweGVlNTllNzkzLCAw
eGZhMGZiMGUwLAorICAgICAgMHgzZTA3MTEwMCwgMHg1MTA4MGIyOCwgMHg1MDgxY2MxNSwgMHgy
YzRiOWU3MSwgMHhkZTQ5NDFkZiwgMHhiZTEwZWQ0OSwKKyAgICAgIDB4NGIxYjBkMzcsIDB4Zjhl
YWFjOWQsIDB4NDYwNWUxMzksIDB4NGJjY2U0YjUsIDB4Njc2NWRkYTYsIDB4YTY0NzIyYjcsCisg
ICAgICAweDhjYTI4YWI1LCAweGI5Mzc3ZDczLCAweGE4Y2NjMWFmLCAweDc3OWZhZDgxLCAweDFm
ZmQzYmE3LCAweDY1Y2IzZWU2LAorICAgICAgMHg3ODYyODM2ZiwgMHhkNzRlNzkwOCwgMHg0YzNm
MjViZiwgMHhkMDViOWM1OCwgMHg5MzU3OTgyNywgMHgyYmE5M2E0NiwKKyAgICAgIDB4ZjA1NDIw
Y2UsIDB4ZDgxNTMwYWYsIDB4MTU0Nzg2MjEsIDB4ZWMwNmNlYTIsIDB4Nzk2ZDY1YWQsIDB4NGIx
Nzk4YTYsCisgICAgICAweDNhNmY2ZmE2LCAweGYxNDJmM2ZiLCAweGUyMzdiNTYwLCAweDAwMmI3
YmY3LCAweGVmNjViNGY4LCAweGY0N2YyNjA1LAorICAgICAgMHgxN2VmZmMxOCwgMHg5ODA0ZWM1
NSwgMHhiN2Q0ODFjZCwgMHhhZWQzZDdmOCwgMHgxY2UzMzhkMSwgMHg1NjUxYzI0YywKKyAgICAg
IDB4OGJmMGEzYzYsIDB4M2U3YTM4MjAsIDB4MTQ1MzRhZWQsIDB4Njc5NmE3YjYsIDB4ODM1ODQ2
MGYsIDB4MGQwZjNiODQsCisgICAgICAweDAwYjE5NTI0LCAweDBmYTVmZTc2LCAweDUzZmFhZWRj
LCAweDJiMGNmMzgyLCAweDIzM2E5ZmQ2LCAweDEwZGY5MTg4LAorICAgICAgMHg4MDEzOGI1OSwg
MHgzYTEwMDMzOCwgMHgzOTQ4ZTgwZiwgMHg1ZmIwYjBkMiwgMHgyZmJmNTM1MCwgMHg5ZTc2Zjdi
MCwKKyAgICAgIDB4MDRiMWE5ODUsIDB4MDgxNjA1MjMsIDB4YjQxZmQyMTgsIDB4MzBjOTg4MGQs
IDB4NjVlMjBmMjgsIDB4MTRhYTM5OWIsCisgICAgICAweGFjZTc4N2I0LCAweGUxNDU0YThjLCAw
eGI2YzZmMGY1LCAweDMyNWFjOTcxLCAweDc4NGYzZDM2LCAweDcxNmIxYWEyLAorICAgICAgMHhj
Y2ZkMTQ0ZiwgMHgzZDVjZTE0YSwgMHgwZjY1MTc5MiwgMHg2YzBjOTc3MSwgMHhmYjMzMzUzMiwg
MHhiYzViMGY1OSwKKyAgICAgIDB4MTQwNDcwYmMsIDB4MmE5MGE3ZDIsIDB4NWMxZTFjOGQsIDB4
OGRhMjY5ZjUsIDB4ODk1NzkyY2EsIDB4Y2ZjMzcxNDMsCisgICAgICAweGYzMGIyMzhmLCAweGJl
MjFlYWIxLCAweGVlNGQ2NWZkLCAweDhjNDcyMjlkLCAweGQxZWQ3ZDU0LCAweDU3NDM2MTRlLAor
ICAgICAgMHg5ZTljNDc2ZSwgMHgzNTEzNzJhOSwgMHhlNWRiMDg1ZiwgMHgyYmQ1ZWExNSwgMHg2
ZTBhZjRjYSwgMHg2OTI1ZmRlNCwKKyAgICAgIDB4ZGMxZjQ1YmQsIDB4ZWQzZWRhMmIsIDB4ZDQ2
MGZhNmUsIDB4ZGVmNjhjNjgsIDB4NjI1M2UyYjUsIDB4ZTQyYTBkZTcsCisgICAgICAweGJjMjlj
MzA1LCAweDRlNTE3NmRjLCAweDlmODEwZjZlLCAweGJmZDg1ZmJhLCAweGJlYjgxNWM2LCAweDc2
YTVhMmE5LAorICAgICAgMHhjZWFmNDE0YywgMHgwMWVkYzRkZCwgMHhiNGJiM2I0YiwgMHhhNGU5
ODkwNCwgMHg3ZDJmMWRkZCwgMHgwMGJkNjNhYywKKyAgICAgIDB4ZTk5OGRkYmIsIDB4Yjg0OTFm
ZTYsIDB4M2RkYTY4MDAsIDB4YjM4NmEzNDYsIDB4ODg4NzE2MTksIDB4MDA4MTg4NzYsCisgICAg
ICAweDM0NGU5YTM4LCAweDMzZDM5NGIzLCAweGEzYThiYWY5LCAweDgxNWRiYTY1LCAweDAyYzJm
ZDFhLCAweDQyMzJmNmVjLAorICAgICAgMHhlZGQyMDgzNCwgMHhiNWNmZjYwMywgMHgzZjY4NzY2
MywgMHg1ODAxODkyNCwgMHhkYzI3ZmU5OSwgMHhhOGQ1YTJjYiwKKyAgICAgIDB4OTNmYTAxMzEs
IDB4NzI1ZDg4MTYsIDB4ZGIyYzdhYzUsIDB4YTJiZTJjMTMsIDB4YjUwOWZkNzgsIDB4N2I2YTk2
MTQsCisgICAgICAweDFlNzE3NjM2LCAweGI2YjEzNmQ3LCAweGFmZjA0NmVhLCAweDY2MGYxYTcx
LCAweDQ2YzhlYzllLCAweDBiYTEwYWUzLAorICAgICAgMHhlMzE0NWI0MSwgMHhlNjZkZGU1Mywg
MHg4OGMyNmJlNiwgMHgzYjE4Mjg4YywgMHhmMDJkYjkzMywgMHg0ZDlkOWQyZiwKKyAgICAgIDB4
NzBmNDZlOGEsIDB4NDE2N2RhOGMsIDB4OGM2MzE4YjQsIDB4ZjE4M2JlZWYsIDB4NzFlZWVlZjEs
IDB4NGQ4ODllMWUsCisgICAgICAweGQ2Njg5YjZiLCAweDcxNzVjNzFhLCAweGFjZDFiN2RkLCAw
eGZiOWU0MmJlLCAweGIyOWI1ZTBkLCAweGMzM2QwZTkxLAorICAgICAgMHgxY2U0NzkyMiwgMHhk
MzliODMyOSwgMHg4NDkzZDEyZSwgMHhjNGQ1NzBmYiwgMHg0ZjQyNGFlNiwgMHgyM2Q1YTU3MiwK
KyAgICAgIDB4ODc2YjY2MTYsIDB4NTI0NWYxNjEsIDB4MjFhYjU3OGQsIDB4MzhkNzdkYmQsIDB4
MWY0ZWNiZmUsIDB4OWMzNDIzMzEsCisgICAgICAweDliYWNkOWQ1LCAweDc2ZmUzMTM4LAorICB9
OworCisgIEV4cGxpY2l0U2VlZFNlcSBzZWVkX3NlcXVlbmNlezEyLCAzNCwgNTZ9OworICByYW5k
ZW5fdTMyIGVuZ2luZShzZWVkX3NlcXVlbmNlKTsKKyNpZiBVUERBVEVfR09MREVOCisgICh2b2lk
KWtHb2xkZW47ICAvLyBTaWxlbmNlIHdhcm5pbmcuCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
MiAqIGtOdW1Hb2xkZW5PdXRwdXRzOyArK2kpIHsKKyAgICBwcmludGYoIjB4JTA4eCwgIiwgZW5n
aW5lKCkpOworICAgIGlmIChpICUgNiA9PSA1KSB7CisgICAgICBwcmludGYoIlxuIik7CisgICAg
fQorICB9CisgIHByaW50ZigiXG5cblxuIik7CisjZWxzZQorICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW0gOiBrR29sZGVuKSB7CisgICAgRVhQRUNUX0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQorICBl
bmdpbmUuc2VlZChzZWVkX3NlcXVlbmNlKTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dv
bGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyNlbmRpZgorfQor
CitURVNUKFJhbmRlblRlc3QsIFZlcmlmeUdvbGRlbkZyb21EZXNlcmlhbGl6ZWRFbmdpbmUpIHsK
KyAgY29uc3RleHByIHVpbnQ2NF90IGtHb2xkZW5ba051bUdvbGRlbk91dHB1dHNdID0geworICAg
ICAgMHgwNjdmOWY5YWI5MTk2NTdhLCAweDA1MzQ2MDU5MTI5ODg1ODMsIDB4OGEzMDNmNzJmZWFh
NjczZiwKKyAgICAgIDB4NzdiN2ZkNzQ3OTA5MTg1YywgMHhkOWFmOTA0MDNjNTZkODkxLCAweGQ5
MzljNmNiMjA0ZDE0YjUsCisgICAgICAweDdmYmU2Yjk1NGE0N2I0ODMsIDB4OGIzMWE0N2NjMzRj
NzY4ZCwgMHgzYTllNTQ2ZGEyNzAxYTljLAorICAgICAgMHg1MjQ2NTM5MDQ2MjUzZTcxLCAweDQx
NzE5MWZmYjJhODQ4YTEsIDB4N2IxYzdiZjVhNTAwMWQwOSwKKyAgICAgIDB4OTQ4OWIxNWQxOTRm
MjM2MSwgMHhmY2ViZGVlYTNiY2QyNDYxLCAweGQ2NDMwMjdjODU0Y2VjOTcsCisgICAgICAweDU4
ODUzOTdmOTFlMGQyMWMsIDB4NTMxNzNiMGVmYWUzMGQ1OCwgMHgxYzljNzExNjg0NDlmYWMxLAor
ICAgICAgMHhlMzU4MjAyYjcxMWVkOGFhLCAweDk0ZTM5MThlZDFkODIyN2MsIDB4NWJiNGUyNTE0
NTAxNDRjZiwKKyAgICAgIDB4YjVjN2E1MTliNDg5YWYzYiwgMHg2ZjhiNTYwYjFmN2IzNDY5LCAw
eGZkZTExZGQ0YTFjNzRlZWYsCisgICAgICAweDMzMzgzZDJmNzY0NTdkY2YsIDB4MzA2MGMwZWM2
ZGI5ZmNlMSwgMHgxOGY0NTFmY2RkZWVjNzY2LAorICAgICAgMHhlNzNjNWQ2YjlmMjZkYTJhLCAw
eDhkNGNjNTY2NjcxYjMyYTQsIDB4YjgxODliNzM3NzZiYzlmZiwKKyAgICAgIDB4NDk3YTcwZjlj
YWYwYmMyMywgMHgyM2FmY2M1MDk3OTFkY2VhLCAweDE4YWY3MGRjNGIyN2QzMDYsCisgICAgICAw
eGQzODUzZjk1NWEwY2U1YjksIDB4NDQxZGI2YzAxYTBhZmIxNywgMHhkMDEzNmMzZmI4ZTFmMTNm
LAorICAgICAgMHg1ZTRmZDZmYzJmMzM3ODNjLCAweGUwZDI0NTQ4YWRiNWRhNTEsIDB4MGY0ZDgz
NjJhN2QzNDg1YSwKKyAgICAgIDB4OWY1NzJkNjgyNzBmYTU2MywgMHg2MzUxZmJjODIzMDI0Mzkz
LCAweGE2NmRiZmM2MTgxMGU5YWIsCisgICAgICAweDBmZjE3ZmMxNGI2NTFhZjgsIDB4ZDc0YzU1
ZGFmYjk5ZTYyMywgMHgzNjMwM2JjMWFkODVjNmMyLAorICAgICAgMHg0OTIwY2Q2YTJhZjdlODk3
LCAweDBiODg0OGFkZGMzMGZlY2QsIDB4OWUxNTYyZWRhNjQ4OGU5MywKKyAgICAgIDB4MTk3NTUz
ODA3ZDYwNzgyOCwgMHhiZWY1ZWFlZGE1ZTIxMjM1LCAweDE4ZDkxZDI2MTZhY2E1MjcsCisgICAg
ICAweGI3ODIxOTM3ZjVjODczY2QsIDB4MmNkNGFlNTY1MGRiZWVmYywgMHhiMzVhNjQzNzZmNzVm
ZmRmLAorICAgICAgMHg5MjI2ZDQxNGQ2NDdmZTA3LCAweDY2M2YzZGI0NTViYmIzNWUsIDB4YTgy
OWVlYWQ2YWU5MzI0NywKKyAgICAgIDB4N2ZkNjljMjA0ZGQwZDI1ZiwgMHhiZTE0MTFmODkxYzlh
Y2IxLCAweGQ0NzZmMzRhNTA2ZDVmMTEsCisgICAgICAweGY0MjNkMjgzMTY0OWM1Y2EsIDB4MWU1
MDM5NjI5NTFhYmQ3NSwgMHhlY2NjOWU4YjFlMzRiNTM3LAorICAgICAgMHhiMTFhMTQ3Mjk0MDQ0
ODU0LCAweGM0Y2YyN2YwYWJmNDkyOWQsIDB4ZTkxOTNhYmY2ZmEyNGM4YywKKyAgICAgIDB4YTk0
YTI1OWUzYWJhODgwOCwgMHgyMWRjNDE0MTk3ZGVmZmEzLCAweGEyYWUyMTFkMWZmNjIyYWUsCisg
ICAgICAweGZlMzk5NWM0NmJlNWE0ZjQsIDB4ZTk5ODRjMjg0YmYxMTEyOCwgMHhjYjFjZTlkMmYw
ODUxYTgwLAorICAgICAgMHg0MmZlZTE3OTcxZDg3Y2Q4LCAweGFjNzZhOThkMTc3YWRjODgsIDB4
YTA5NzNiM2RlZGM0YWY2ZiwKKyAgICAgIDB4ZGY1NmQ2YmJjYjFiOGU4NiwgMHhmMWU2NDg1ZjQw
N2IxMWM5LCAweDJjNjNkZTRkZWNjYjE1YzAsCisgICAgICAweDZmZTY5ZGIzMmVkNGZhZDcsIDB4
YWE1MWE2NWY4NGJjYTFmMSwgMHgyNDJmMmVlODFkNjA4YWZjLAorICAgICAgMHg4ZWI4OGIyYjY5
ZmMxNTNiLCAweDIyYzIwMDk4YmFmNzNmZDEsIDB4NTc3NTk0NjZmNTc2NDg4YywKKyAgICAgIDB4
MDc1Y2E1NjJjZWExYmU5ZCwgMHg5YTc0ODE0ZDczZDI4ODkxLCAweDczZDE1NTVmYzAyZjRkM2Qs
CisgICAgICAweGMxN2Y4ZjIxMGVlODkzMzcsIDB4NDZjY2E3OTk5ZWFlYWZkNCwgMHg1ZGI4ZDZh
MzI3YTBkOGFjLAorICAgICAgMHhiNzliNGY5M2M3MzhkN2ExLCAweDk5OTQ1MTJmMDAzNmRlZDEs
IDB4ZDM4ODMwMjZmMzg3NDdmNCwKKyAgICAgIDB4ZjMxZjc0NTgwNzhkMDk3YywgMHg3MzZjZTRk
NDgwNjgwNjY5LCAweDdhNDk2ZjRjN2UxMDMzZTMsCisgICAgICAweGVjZjg1YmYyOTdmYmM2OGMs
IDB4OWUzN2UxZDBmMjRmM2M0ZSwgMHgxNWI2ZTA2N2NhMDc0NmZjLAorICAgICAgMHhkZDRhMzk5
MDVjNWRiODFjLCAweGI1ZGZhZmE3YmNmZGY3ZGEsIDB4Y2E2NjQ2ZmI2ZjkyYTI3NiwKKyAgICAg
IDB4MWM2YjM1ZjM2M2VmMGVmZCwgMHg2YTMzZDA2MDM3YWQ5Zjc2LCAweDQ1NTQ0MjQxYWZkOGY4
MGYsCisgICAgICAweDgzZjhkODNmODU5YzkwYzUsIDB4MjJhZWE5YzUzNjVlOGMxOSwgMHhmYWMz
NWIxMWYyMGI2YTZhLAorICAgICAgMHhkMWFjZjQ5ZDFhMjdkZDJmLCAweGYyODFjZDA5YzRmZWQ0
MDUsIDB4MDc2MDAwYTQyY2QzOGU0ZiwKKyAgICAgIDB4NmFjZTMwMDU2NTA3MDQ0NSwgMHg0NjNh
NjI3ODFiZGRjNGRiLCAweDE0NzcxMjZiNDZiNTY5YWMsCisgICAgICAweDEyN2YyYmIxNTAzNWZi
YjgsIDB4ZGZhMzA5NDYwNDljMDRhOCwgMHg4OTA3MmE1ODZiYThkZDNlLAorICAgICAgMHg2MmM4
MDk1ODJiYjdlNzRkLCAweDIyYzBjMzY0MTQwNmMyOGIsIDB4OWI2NmUzNmM0N2ZmMDA0ZCwKKyAg
ICAgIDB4YjljZDJjNzUxOTY1MzMzMCwgMHgxODYwOGQ3OWNkN2E1OThkLCAweDkyYzBiZDEzMjNl
NTNlMzIsCisgICAgICAweDg4N2ZmMDBkZTg1MjRhYTUsIDB4YTA3NDQxMGI3ODdhYmQxMCwgMHgx
OGFiNDFiODA1N2EyMDYzLAorICAgICAgMHgxNTYwYWJmMjZiYzVmOTg3fTsKKworI2lmIFVQREFU
RV9HT0xERU4KKyAgKHZvaWQpa0dvbGRlbjsgIC8vIFNpbGVuY2Ugd2FybmluZy4KKyAgc3RkOjpz
ZWVkX3NlcSBzZWVkX3NlcXVlbmNlezEsIDIsIDMsIDQsIDV9OworICByYW5kZW5fdTY0IGVuZ2lu
ZShzZWVkX3NlcXVlbmNlKTsKKyAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgc3RyZWFt
IDw8IGVuZ2luZTsKKyAgYXV0byBzdHIgPSBzdHJlYW0uc3RyKCk7CisgIHByaW50ZigiJXNcblxu
Iiwgc3RyLmNfc3RyKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1Hb2xkZW5PdXRw
dXRzOyArK2kpIHsKKyAgICBwcmludGYoIjB4JTAxNmx4LCAiLCBlbmdpbmUoKSk7CisgICAgaWYg
KGkgJSAzID09IDIpIHsKKyAgICAgIHByaW50ZigiXG4iKTsKKyAgICB9CisgIH0KKyAgcHJpbnRm
KCJcblxuXG4iKTsKKyNlbHNlCisgIHJhbmRlbl91NjQgZW5naW5lOworICBzdGQ6OmlzdHJpbmdz
dHJlYW0gc3RyZWFtKAorICAgICAgIjAgMCA5ODI0NTAxNDM5ODg3Mjg3NDc5IDMyNDIyODQzOTUz
NTIzOTQ3ODUgMjQzODM2NTMwNzc0OTMzNzc3ICIKKyAgICAgICI0MDQ3OTQxODA0NzA4MzY1NTk2
IDE3MTY1NDY4MTI3Mjk4Mzg1ODAyIDk0OTI3NjEwMzY0NTg4OTI1NSAiCisgICAgICAiMTA2NTk5
NzAzOTQ5OTg2NTc5MjEgMTY1NzU3MDgzNjgxMDkyOTc4NyAxMTY5Nzc0NjI2NjY2ODA1MTQ1MiAi
CisgICAgICAiOTk2NzIwOTk2OTI5OTkwNTIzMCAxNDE0MDM5MDMzMTE2MTUyNDQzMCA3MzgzMDE0
MTI0MTgzMjcxNjg0ICIKKyAgICAgICIxMzE0NjcxOTEyNzcwMjMzNzg1MiAxMzk4MzE1NTIyMDI5
NTgwNzE3MSAxMTEyMTEyNTU4NzU0MjM1OTI2NCAiCisgICAgICAiMTk1NzU3ODEwOTkzMjUyNjk1
IDE3MTM4NTgwMjQzMTAzMTc4NDkyIDExMzI2MDMwNzQ3MjYwOTIwNTAxICIKKyAgICAgICI4NTg1
MDk3MzIyNDc0OTY1NTkwIDE4MzQyNTgyODM5MzI4MzUwOTk1IDE1MDUyOTgyODI0MjA5NzI0NjM0
ICIKKyAgICAgICI3MzIxODYxMzQzODc0NjgzNjA5IDE4MDY3ODY5MTE3Nzg3Njc4MjYgMTAxMDA4
NTA4NDI2NjU1NzI5NTUgIgorICAgICAgIjkyNDkzMjg5NTA2NTM5ODUwNzggMTM2MDA2MjQ4MzUz
MjY5MDk3NTkgMTExMzc5NjAwNjA5NDM4NjAyNTEgIgorICAgICAgIjEwMjA4NzgxMzQxNzkyMzI5
NjI5IDkyODI3MjM5NzE0NzE1MjU1NzcgMTYzNzMyNzE2MTk0ODY4MTEwMzIgMzIiKTsKKyAgc3Ry
ZWFtID4+IGVuZ2luZTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAg
IEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyNlbmRpZgorfQorCitURVNUKFJhbmRl
blRlc3QsIElzRmFzdE9yU2xvdykgeworICAvLyByYW5kZW5fZW5naW5lIHR5cGljYWxseSBjb3N0
cyB+NW5zIHBlciB2YWx1ZSBmb3IgdGhlIG9wdGltaXplZCBjb2RlIHBhdGhzLAorICAvLyBhbmQg
dGhlIH4xMDAwbnMgcGVyIHZhbHVlIGZvciBzbG93IGNvZGUgcGF0aHMuICBIb3dldmVyIHdoZW4g
cnVubmluZyB1bmRlcgorICAvLyBtc2FuLCBhc2FuLCBldGMuIGl0IGNhbiB0YWtlIG11Y2ggbG9u
Z2VyLgorICAvLworICAvLyBUaGUgZXN0aW1hdGVkIG9wZXJhdGlvbiB0aW1lIGlzIHNvbWV0aGlu
ZyBsaWtlOgorICAvLworICAvLyBsaW51eCwgb3B0aW1pemVkIH41bnMKKyAgLy8gcHBjLCBvcHRp
bWl6ZWQgfjducworICAvLyBuYWNsIChzbG93KSwgfjExMDBucworICAvLworICAvLyBga0NvdW50
YCBpcyBjaG9zZW4gYmVsb3cgc28gdGhhdCwgaW4gZGVidWcgYnVpbGRzIGFuZCB3aXRob3V0IGhh
cmR3YXJlCisgIC8vIGFjY2VsZXJhdGlvbiwgdGhlIHRlc3QgKGFzc3VtaW5nIH4xdXMgcGVyIGNh
bGwpIHNob3VsZCBmaW5pc2ggaW4gfjAuMXMKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga0Nv
dW50ID0gMTAwMDAwOworICByYW5kZW5fdTY0IGVuZ2luZTsKKyAgcmFuZGVuX3U2NDo6cmVzdWx0
X3R5cGUgc3VtID0gMDsKKyAgYXV0byBzdGFydCA9IGFic2w6OkdldEN1cnJlbnRUaW1lTmFub3Mo
KTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQ291bnQ7IGkrKykgeworICAgIHN1bSArPSBlbmdp
bmUoKTsKKyAgfQorICBhdXRvIGR1cmF0aW9uID0gYWJzbDo6R2V0Q3VycmVudFRpbWVOYW5vcygp
IC0gc3RhcnQ7CisKKyAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywgYWJzbDo6U3RyQ2F0KHN0YXRp
Y19jYXN0PGRvdWJsZT4oZHVyYXRpb24pIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KGtDb3VudCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAibnMiKSk7CisKKyAgRVhQRUNUX0dUKHN1bSwgMCk7
CisgIEVYUEVDVF9HRShkdXJhdGlvbiwga0NvdW50KTsgIC8vIFNob3VsZCBiZSBzbG93ZXIgdGhh
biAxbnMgcGVyIGNhbGwuCit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL3JhbmRlbl9od2Flcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9y
YW5kZW5faHdhZXMuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI4MmQxZDA3YWQ4ZWY1NzY4OWNlM2VjOWUxMjZi
ODZkMzBkYmU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5k
ZW5faHdhZXMuY2MKQEAgLTAsMCArMSw3MDAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisvLyBIRVJNRVRJQyBOT1RFOiBUaGUgcmFuZGVuX2h3YWVzIHRhcmdl
dCBtdXN0IG5vdCBpbnRyb2R1Y2UgZHVwbGljYXRlCisvLyBzeW1ib2xzIGZyb20gYXJiaXRyYXJ5
IHN5c3RlbSBhbmQgb3RoZXIgaGVhZGVycywgc2luY2UgaXQgbWF5IGJlIGJ1aWx0CisvLyB3aXRo
IGRpZmZlcmVudCBmbGFncyBmcm9tIG90aGVyIHRhcmdldHMsIHVzaW5nIGRpZmZlcmVudCBsZXZl
bHMgb2YKKy8vIG9wdGltaXphdGlvbiwgcG90ZW50aWFsbHkgaW50cm9kdWNpbmcgT0RSIHZpb2xh
dGlvbnMuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMuaCIK
KworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL3BsYXRmb3JtLmgiCisKKy8vIEFCU0xfSEFWRV9BVFRSSUJVVEUK
KyNpZiAhZGVmaW5lZChBQlNMX0hBVkVfQVRUUklCVVRFKQorI2lmZGVmIF9faGFzX2F0dHJpYnV0
ZQorI2RlZmluZSBBQlNMX0hBVkVfQVRUUklCVVRFKHgpIF9faGFzX2F0dHJpYnV0ZSh4KQorI2Vs
c2UKKyNkZWZpbmUgQUJTTF9IQVZFX0FUVFJJQlVURSh4KSAwCisjZW5kaWYKKyNlbmRpZgorCisj
aWYgQUJTTF9IQVZFX0FUVFJJQlVURShhbHdheXNfaW5saW5lKSB8fCBcCisgICAgKGRlZmluZWQo
X19HTlVDX18pICYmICFkZWZpbmVkKF9fY2xhbmdfXykpCisjZGVmaW5lIEFCU0xfUkFORE9NX0lO
VEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFwKKyAgX19hdHRyaWJ1dGVfXygoYWx3YXlz
X2lubGluZSkpCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8gV2UgY2FuIGFjaGlldmUgc29t
ZXRoaW5nIHNpbWlsYXIgdG8gYXR0cmlidXRlKChhbHdheXNfaW5saW5lKSkgd2l0aCBNU1ZDIGJ5
CisvLyB1c2luZyB0aGUgX19mb3JjZWlubGluZSBrZXl3b3JkLCBob3dldmVyIHRoaXMgaXMgbm90
IHBlcmZlY3QuIE1TVkMgaXMKKy8vIG11Y2ggbGVzcyBhZ2dyZXNzaXZlIGFib3V0IGlubGluaW5n
LCBhbmQgZXZlbiB3aXRoIHRoZSBfX2ZvcmNlaW5saW5lIGtleXdvcmQuCisjZGVmaW5lIEFCU0xf
UkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIF9fZm9yY2VpbmxpbmUKKyNl
bHNlCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5F
CisjZW5kaWYKKworLy8gQUJTTF9BVFRSSUJVVEVfRkxBVFRFTiBlbmFibGVzIG11Y2ggbW9yZSBh
Z2dyZXNzaXZlIGlubGluaW5nIHdpdGhpbgorLy8gdGhlIGluZGljYXRlZCBmdW5jdGlvbi4KKyN1
bmRlZiBBQlNMX0FUVFJJQlVURV9GTEFUVEVOCisjaWYgQUJTTF9IQVZFX0FUVFJJQlVURShmbGF0
dGVuKSB8fCAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKSkKKyNkZWZp
bmUgQUJTTF9BVFRSSUJVVEVfRkxBVFRFTiBfX2F0dHJpYnV0ZV9fKChmbGF0dGVuKSkKKyNlbHNl
CisjZGVmaW5lIEFCU0xfQVRUUklCVVRFX0ZMQVRURU4KKyNlbmRpZgorCisvLyBBQlNMX1JBTkRF
Tl9IV0FFU19JTVBMIGluZGljYXRlcyB3aGV0aGVyIHRoaXMgZmlsZSB3aWxsIGNvbnRhaW4KKy8v
IGEgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgaW1wbGVtZW50YXRpb24gb2YgcmFuZGVuLCBvciB3aGV0
aGVyIGl0CisvLyB3aWxsIGNvbnRhaW4gc3R1YnMgdGhhdCBleGl0IHRoZSBwcm9jZXNzLgorI2lm
IGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkgfHwgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzMyKQor
Ly8gVGhlIHBsYXRmb3JtLmggZGlyZWN0aXZlcyBhcmUgc3VmZmljaWVudCB0byBpbmRpY2F0ZSB3
aGV0aGVyCisvLyB3ZSBzaG91bGQgYnVpbGQgYWNjZWxlcmF0ZWQgaW1wbGVtZW50YXRpb25zIGZv
ciB4ODYuCisjaWYgKEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMgfHwgQUJTTF9SQU5ET01fSU5U
RVJOQUxfQUVTX0RJU1BBVENIKQorI2RlZmluZSBBQlNMX1JBTkRFTl9IV0FFU19JTVBMIDEKKyNl
bmRpZgorI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQorLy8gVGhlIHBsYXRmb3JtLmggZGly
ZWN0aXZlcyBhcmUgc3VmZmljaWVudCB0byBpbmRpY2F0ZSB3aGV0aGVyCisvLyB3ZSBzaG91bGQg
YnVpbGQgYWNjZWxlcmF0ZWQgaW1wbGVtZW50YXRpb25zIGZvciBQUEMuCisvLworLy8gTk9URTog
VGhpcyBoYXMgbW9zdGx5IGJlZW4gdGVzdGVkIG9uIDY0LWJpdCBQb3dlciB2YXJpYW50cywKKy8v
IGFuZCBub3QgZW1iZWRkZWQgY3B1cyBzdWNoIGFzIHBvd2VycGMzMi04NTQwCisjaWYgQUJTTF9I
QVZFX0FDQ0VMRVJBVEVEX0FFUworI2RlZmluZSBBQlNMX1JBTkRFTl9IV0FFU19JTVBMIDEKKyNl
bmRpZgorI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfQVJNKSB8fCBkZWZpbmVkKEFCU0xfQVJDSF9B
QVJDSDY0KQorLy8gQVJNIGlzIHNvbWV3aGF0IG1vcmUgY29tcGxpY2F0ZWQuIFdlIG1pZ2h0IHN1
cHBvcnQgY3J5cHRvIG5hdGl2ZWx5Li4uCisjaWYgQUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUyB8
fCBcCisgICAgKGRlZmluZWQoX19BUk1fTkVPTikgJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0NS
WVBUTykpCisjZGVmaW5lIEFCU0xfUkFOREVOX0hXQUVTX0lNUEwgMQorCisjZWxpZiBBQlNMX1JB
TkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0ggJiYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiBcCisg
ICAgKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID4gNCB8fCBfX0dOVUNfXyA9PSA0ICYm
IF9fR05VQ19NSU5PUl9fID4gOSkKKy8vIC4uLm9yLCBvbiBHQ0MsIHdlIGNhbiB1c2UgYW4gQVNN
IGRpcmVjdGl2ZSB0bworLy8gaW5zdHJ1Y3QgdGhlIGFzc2VtYmVyIHRvIGFsbG93IGNyeXB0byBp
bnN0cnVjdGlvbnMuCisjZGVmaW5lIEFCU0xfUkFOREVOX0hXQUVTX0lNUEwgMQorI2RlZmluZSBB
QlNMX1JBTkRFTl9IV0FFU19JTVBMX0NSWVBUT19ESVJFQ1RJVkUgMQorI2VuZGlmCisjZWxzZQor
Ly8gSFdBRVMgaXMgdW5zdXBwb3J0ZWQgYnkgdGhlc2UgYXJjaGl0ZWN0dXJlcyAvIHBsYXRmb3Jt
czoKKy8vICAgX19teXJpYWQyX18KKy8vICAgX19taXBzX18KKy8vCisvLyBPdGhlciBhcmNoaXRl
Y3R1cmVzIC8gcGxhdGZvcm1zIGFyZSB1bmtub3duLgorLy8KKy8vIFNlZSB0aGUgQWJzZWlsIGRv
Y3VtZW50YXRpb24gb24gc3VwcG9ydGVkIG1hY3JvcyBhdDoKKy8vIGh0dHBzOi8vYWJzZWlsLmlv
L2RvY3MvY3BwL3BsYXRmb3Jtcy9tYWNyb3MKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoQUJTTF9S
QU5ERU5fSFdBRVNfSU1QTCkKKy8vIE5vIGFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9uIGlzIHN1
cHBvcnRlZC4KKy8vIFRoZSBSYW5kZW5Id0FlcyBmdW5jdGlvbnMgYXJlIHN0dWJzIHRoYXQgcHJp
bnQgYW4gZXJyb3IgYW5kIGV4aXQuCisKKyNpbmNsdWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8Y3N0
ZGxpYj4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisK
Ky8vIE5vIGFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9uLgorYm9vbCBIYXNSYW5kZW5Id0Flc0lt
cGxlbWVudGF0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKworLy8gTk9MSU5UTkVYVExJTkUKK2Nv
bnN0IHZvaWQqIFJhbmRlbkh3QWVzOjpHZXRLZXlzKCkgeworICAvLyBBdHRlbXB0ZWQgdG8gZGlz
cGF0Y2ggdG8gYW4gdW5zdXBwb3J0ZWQgZGlzcGF0Y2ggdGFyZ2V0LgorICBjb25zdCBpbnQgZCA9
IEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSDsKKyAgZnByaW50ZihzdGRlcnIsICJB
RVMgSGFyZHdhcmUgZGV0ZWN0aW9uIGZhaWxlZCAoJWQpLlxuIiwgZCk7CisgIGV4aXQoMSk7Cisg
IHJldHVybiBudWxscHRyOworfQorCisvLyBOT0xJTlRORVhUTElORQordm9pZCBSYW5kZW5Id0Fl
czo6QWJzb3JiKGNvbnN0IHZvaWQqLCB2b2lkKikgeworICAvLyBBdHRlbXB0ZWQgdG8gZGlzcGF0
Y2ggdG8gYW4gdW5zdXBwb3J0ZWQgZGlzcGF0Y2ggdGFyZ2V0LgorICBjb25zdCBpbnQgZCA9IEFC
U0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSDsKKyAgZnByaW50ZihzdGRlcnIsICJBRVMg
SGFyZHdhcmUgZGV0ZWN0aW9uIGZhaWxlZCAoJWQpLlxuIiwgZCk7CisgIGV4aXQoMSk7Cit9CisK
Ky8vIE5PTElOVE5FWFRMSU5FCit2b2lkIFJhbmRlbkh3QWVzOjpHZW5lcmF0ZShjb25zdCB2b2lk
Kiwgdm9pZCopIHsKKyAgLy8gQXR0ZW1wdGVkIHRvIGRpc3BhdGNoIHRvIGFuIHVuc3VwcG9ydGVk
IGRpc3BhdGNoIHRhcmdldC4KKyAgY29uc3QgaW50IGQgPSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9B
RVNfRElTUEFUQ0g7CisgIGZwcmludGYoc3RkZXJyLCAiQUVTIEhhcmR3YXJlIGRldGVjdGlvbiBm
YWlsZWQgKCVkKS5cbiIsIGQpOworICBleGl0KDEpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcmFu
ZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZWxzZSAgLy8gZGVmaW5lZChB
QlNMX1JBTkRFTl9IV0FFU19JTVBMKQorLy8KKy8vIEFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9u
cyBhcmUgc3VwcG9ydGVkLgorLy8gV2UgbmVlZCB0aGUgcGVyLWFyY2hpdGVjdHVyZSBpbmNsdWRl
cyBhbmQgZGVmaW5lcy4KKy8vCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5k
ZW5fdHJhaXRzLmgiCisKKy8vIEFCU0xfRlVOQ1RJT05fQUxJR04zMiBkZWZpbmVzIGEgMzItYnl0
ZSBhbGlnbm1lbnQgYXR0cmlidXRlCisvLyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUu
CisvLworLy8gTk9URTogRGV0ZXJtaW5lIHdoZXRoZXIgd2UgYWN0dWFsbHkgaGF2ZSBhbnkgd2lu
cyBmcm9tIEFMSUdOMzIKKy8vIHVzaW5nIG1pY3JvYmVuY2htYXJrcy4gSWYgbm90LCByZW1vdmUu
CisjdW5kZWYgQUJTTF9GVU5DVElPTl9BTElHTjMyCisjaWYgQUJTTF9IQVZFX0FUVFJJQlVURShh
bGlnbmVkKSB8fCAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKSkKKyNk
ZWZpbmUgQUJTTF9GVU5DVElPTl9BTElHTjMyIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSkK
KyNlbHNlCisjZGVmaW5lIEFCU0xfRlVOQ1RJT05fQUxJR04zMgorI2VuZGlmCisKKy8vIFRBUkdF
VF9DUllQVE8gZGVmaW5lcyBhIGNyeXB0byBhdHRyaWJ1dGUgZm9yIGVhY2ggYXJjaGl0ZWN0dXJl
LgorLy8KKy8vIE5PVEU6IEV2YWx1YXRlIHdoZXRoZXIgd2Ugc2hvdWxkIGVsaW1pbmF0ZSBBQlNM
X1RBUkdFVF9DUllQVE8uCisjaWYgKGRlZmluZWQoX19jbGFuZ19fKSB8fCBkZWZpbmVkKF9fR05V
Q19fKSkKKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9YODZfNjQpIHx8IGRlZmluZWQoQUJTTF9BUkNI
X1g4Nl8zMikKKyNkZWZpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPIF9fYXR0cmlidXRlX18oKHRhcmdl
dCgiYWVzIikpKQorI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQorI2RlZmluZSBBQlNMX1RB
UkdFVF9DUllQVE8gX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJjcnlwdG8iKSkpCisjZWxzZQorI2Rl
ZmluZSBBQlNMX1RBUkdFVF9DUllQVE8KKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgQUJTTF9UQVJH
RVRfQ1JZUFRPCisjZW5kaWYKKworI2lmIGRlZmluZWQoQUJTTF9BUkNIX1BQQykKKy8vIE5PVEU6
IEtlZXAgaW4gbWluZCB0aGF0IFBQQyBjYW4gb3BlcmF0ZSBpbiBsaXR0bGUtZW5kaWFuIG9yIGJp
Zy1lbmRpYW4gbW9kZSwKKy8vIGhvd2V2ZXIgdGhlIFBQQyBhbHRpdmVjIHZlY3RvciByZWdpc3Rl
cnMgKGFuZCB0aHVzIHRoZSBBRVMgaW5zdHJ1Y3Rpb25zKQorLy8gYWx3YXlzIG9wZXJhdGUgaW4g
YmlnLWVuZGlhbiBtb2RlLgorCisjaW5jbHVkZSA8YWx0aXZlYy5oPgorLy8gPGFsdGl2ZWMuaD4g
I2RlZmluZXMgdmVjdG9yIF9fdmVjdG9yOyBpbiBDKyssIHRoaXMgaXMgYmFkIGZvcm0uCisjdW5k
ZWYgdmVjdG9yCisKKy8vIFJlbHkgb24gdGhlIFBvd2VyUEMgQWx0aVZlYyB2ZWN0b3Igb3BlcmF0
aW9ucyBmb3IgYWNjZWxlcmF0ZWQgQUVTCisvLyBpbnN0cnVjdGlvbnMuIEdDQyBzdXBwb3J0IG9m
IHRoZSBQUEMgdmVjdG9yIHR5cGVzIGlzIGRlc2NyaWJlZCBpbjoKKy8vIGh0dHBzOi8vZ2NjLmdu
dS5vcmcvb25saW5lZG9jcy9nY2MtNC45LjAvZ2NjL1Bvd2VyUEMtQWx0aVZlY18wMDJmVlNYLUJ1
aWx0LWluLUZ1bmN0aW9ucy5odG1sCisvLworLy8gQWxyZWFkeSBwcm92aWRlcyBvcGVyYXRvcl49
LgordXNpbmcgVmVjdG9yMTI4ID0gX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nOyAgLy8gTk9M
SU5UKHJ1bnRpbWUvaW50KQorCituYW1lc3BhY2UgeworCitpbmxpbmUgQUJTTF9UQVJHRVRfQ1JZ
UFRPIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFZlY3RvcjEy
OAorUmV2ZXJzZUJ5dGVzKGNvbnN0IFZlY3RvcjEyOCYgdikgeworICAvLyBSZXZlcnNlcyB0aGUg
Ynl0ZXMgb2YgdGhlIHZlY3Rvci4KKyAgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgY2hhciBwZXJt
ID0gezE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3LCAgNiwgIDUsICA0LCAgMywgIDIsICAxLCAwfTsKKyAgcmV0dXJu
IHZlY19wZXJtKHYsIHYsIHBlcm0pOworfQorCisvLyBXQVJOSU5HOiB0aGVzZSBsb2FkL3N0b3Jl
IGluIG5hdGl2ZSBieXRlIG9yZGVyLiBJdCBpcyBPSyB0byBsb2FkIGFuZCB0aGVuCisvLyBzdG9y
ZSBhbiB1bmNoYW5nZWQgdmVjdG9yLCBidXQgaW50ZXJwcmV0aW5nIHRoZSBiaXRzIGFzIGEgbnVt
YmVyIG9yIGlucHV0CisvLyB0byBBRVMgd2lsbCBoYXZlIHVuZGVmaW5lZCByZXN1bHRzLgoraW5s
aW5lIEFCU0xfVEFSR0VUX0NSWVBUTyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxX
QVlTX0lOTElORSBWZWN0b3IxMjgKK1ZlY3RvcjEyOExvYWQoY29uc3Qgdm9pZCogQUJTTF9SQU5E
T01fSU5URVJOQUxfUkVTVFJJQ1QgZnJvbSkgeworICByZXR1cm4gdmVjX3ZzeF9sZCgwLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFZlY3RvcjEyOCo+KGZyb20pKTsKK30KKworaW5saW5lIEFCU0xf
VEFSR0VUX0NSWVBUTyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElO
RSB2b2lkCitWZWN0b3IxMjhTdG9yZShjb25zdCBWZWN0b3IxMjgmIHYsIHZvaWQqIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX1JFU1RSSUNUIHRvKSB7CisgIHZlY192c3hfc3QodiwgMCwgcmVpbnRlcnBy
ZXRfY2FzdDxWZWN0b3IxMjgqPih0bykpOworfQorCisvLyBPbmUgcm91bmQgb2YgQUVTLiAicm91
bmRfa2V5IiBpcyBhIHB1YmxpYyBjb25zdGFudCBmb3IgYnJlYWtpbmcgdGhlCisvLyBzeW1tZXRy
eSBvZiBBRVMgKGVuc3VyZXMgcHJldmlvdXNseSBlcXVhbCBjb2x1bW5zIGRpZmZlciBhZnRlcndh
cmRzKS4KK2lubGluZSBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9SQU5ET01fSU5URVJOQUxfQVRU
UklCVVRFX0FMV0FZU19JTkxJTkUgVmVjdG9yMTI4CitBZXNSb3VuZChjb25zdCBWZWN0b3IxMjgm
IHN0YXRlLCBjb25zdCBWZWN0b3IxMjgmIHJvdW5kX2tleSkgeworICByZXR1cm4gVmVjdG9yMTI4
KF9fYnVpbHRpbl9jcnlwdG9fdmNpcGhlcihzdGF0ZSwgcm91bmRfa2V5KSk7Cit9CisKKy8vIEVu
YWJsZXMgbmF0aXZlIGxvYWRzIGluIHRoZSByb3VuZCBsb29wIGJ5IHByZS1zd2FwcGluZy4KK2lu
bGluZSBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FM
V0FZU19JTkxJTkUgdm9pZAorU3dhcEVuZGlhbih1aW50NjRfdCogQUJTTF9SQU5ET01fSU5URVJO
QUxfUkVTVFJJQ1Qgc3RhdGUpIHsKKyAgdXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSYW5k
ZW5UcmFpdHM7CisgIGNvbnN0ZXhwciBzaXplX3Qga0xhbmVzID0gMjsKKyAgY29uc3RleHByIHNp
emVfdCBrRmVpc3RlbEJsb2NrcyA9IFJhbmRlblRyYWl0czo6a0ZlaXN0ZWxCbG9ja3M7CisKKyAg
Zm9yICh1aW50MzJfdCBicmFuY2ggPSAwOyBicmFuY2ggPCBrRmVpc3RlbEJsb2NrczsgKyticmFu
Y2gpIHsKKyAgICBjb25zdCBWZWN0b3IxMjggdiA9IFJldmVyc2VCeXRlcyhWZWN0b3IxMjhMb2Fk
KHN0YXRlICsga0xhbmVzICogYnJhbmNoKSk7CisgICAgVmVjdG9yMTI4U3RvcmUodiwgc3RhdGUg
KyBrTGFuZXMgKiBicmFuY2gpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCisjZWxpZiBk
ZWZpbmVkKEFCU0xfQVJDSF9BUk0pIHx8IGRlZmluZWQoQUJTTF9BUkNIX0FBUkNINjQpCisKKy8v
IFRoaXMgYXNtIGRpcmVjdGl2ZSB3aWxsIGNhdXNlIHRoZSBmaWxlIHRvIGJlIGNvbXBpbGVkIHdp
dGggY3J5cHRvIGV4dGVuc2lvbnMKKy8vIHdoZXRoZXIgb3Igbm90IHRoZSBjcHUtYXJjaGl0ZWN0
dXJlIHN1cHBvcnRzIGl0LgorI2lmIEFCU0xfUkFOREVOX0hXQUVTX0lNUExfQ1JZUFRPX0RJUkVD
VElWRQorYXNtKCIuYXJjaF9leHRlbnNpb24gIGNyeXB0b1xuIik7CisKKy8vIE92ZXJyaWRlIG1p
c3NpbmcgZGVmaW5lcy4KKyNpZiAhZGVmaW5lZChfX0FSTV9ORU9OKQorI2RlZmluZSBfX0FSTV9O
RU9OIDEKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoX19BUk1fRkVBVFVSRV9DUllQVE8pCisjZGVm
aW5lIF9fQVJNX0ZFQVRVUkVfQ1JZUFRPIDEKKyNlbmRpZgorCisjZW5kaWYKKworLy8gUmVseSBv
biB0aGUgQVJNIE5FT04rQ3J5cHRvIGFkdmFuY2VkIHNpbWQgdHlwZXMsIGRlZmluZWQgaW4gPGFy
bV9uZW9uLmg+LgorLy8gdWludDh4MTZfdCBpcyB0aGUgdXNlciBhbGlhcyBmb3IgdW5kZXJseWlu
ZyBfX3NpbWQxMjhfdWludDhfdCB0eXBlLgorLy8gaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9o
ZWxwL3RvcGljL2NvbS5hcm0uZG9jLmloaTAwNzNhL0lISTAwNzNBX2FybV9uZW9uX2ludHJpbnNp
Y3NfcmVmLnBkZgorLy8KKy8vIDxhcm1fbmVvbj4gZGVmaW5lcyB0aGUgZm9sbG93aW5nCisvLwor
Ly8gdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3ZlY3Rvcl90eXBlKDE2KSkpIHVpbnQ4X3Qg
dWludDh4MTZfdDsKKy8vIHR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSgx
NikpKSBpbnQ4X3QgaW50OHgxNl90OworLy8gdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3Bv
bHl2ZWN0b3JfdHlwZSgxNikpKSBpbnQ4X3QgcG9seTh4MTZfdDsKKy8vCisvLyB2bGQxcV92Cisv
LyB2c3QxcV92CisvLyB2YWVzZXFfdgorLy8gdmFlc21jcV92CisjaW5jbHVkZSA8YXJtX25lb24u
aD4KKworLy8gQWxyZWFkeSBwcm92aWRlcyBvcGVyYXRvcl49LgordXNpbmcgVmVjdG9yMTI4ID0g
dWludDh4MTZfdDsKKworbmFtZXNwYWNlIHsKKworaW5saW5lIEFCU0xfVEFSR0VUX0NSWVBUTyBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBWZWN0b3IxMjgKK1Zl
Y3RvcjEyOExvYWQoY29uc3Qgdm9pZCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1QgZnJv
bSkgeworICByZXR1cm4gdmxkMXFfdTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZnJvbSkpOworfQorCitpbmxpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPIEFCU0xfUkFORE9NX0lOVEVS
TkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIHZvaWQKK1ZlY3RvcjEyOFN0b3JlKGNvbnN0IFZl
Y3RvcjEyOCYgdiwgdm9pZCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1QgdG8pIHsKKyAg
dnN0MXFfdTgocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odG8pLCB2KTsKK30KKworLy8gT25l
IHJvdW5kIG9mIEFFUy4gInJvdW5kX2tleSIgaXMgYSBwdWJsaWMgY29uc3RhbnQgZm9yIGJyZWFr
aW5nIHRoZQorLy8gc3ltbWV0cnkgb2YgQUVTIChlbnN1cmVzIHByZXZpb3VzbHkgZXF1YWwgY29s
dW1ucyBkaWZmZXIgYWZ0ZXJ3YXJkcykuCitpbmxpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPIEFCU0xf
UkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFZlY3RvcjEyOAorQWVzUm91
bmQoY29uc3QgVmVjdG9yMTI4JiBzdGF0ZSwgY29uc3QgVmVjdG9yMTI4JiByb3VuZF9rZXkpIHsK
KyAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGFsd2F5cyB1c2UgdGhlIGZ1bGwgcm91bmQgZnVuY3Rp
b24gLSBvbWl0dGluZyB0aGUKKyAgLy8gZmluYWwgTWl4Q29sdW1ucyByZWR1Y2VzIHNlY3VyaXR5
IFtodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEwLzA0MS5wZGZdCisgIC8vIGFuZCBkb2VzIG5v
dCBoZWxwIGJlY2F1c2Ugd2UgbmV2ZXIgZGVjcnlwdC4KKyAgLy8KKyAgLy8gTm90ZSB0aGF0IEFS
TSBkaXZpZGVzIEFFUyBpbnN0cnVjdGlvbnMgZGlmZmVyZW50bHkgdGhhbiB4ODYgLyBQUEMsCisg
IC8vIEFuZCB3ZSBuZWVkIHRvIHNraXAgdGhlIGZpcnN0IEFkZFJvdW5kS2V5IHN0ZXAgYW5kIGFk
ZCBhbiBleHRyYQorICAvLyBBZGRSb3VuZEtleSBzdGVwIHRvIHRoZSBlbmQuIEx1Y2t5IGZvciB1
cyB0aGlzIGlzIGp1c3QgWE9SLgorICByZXR1cm4gdmFlc21jcV91OCh2YWVzZXFfdTgoc3RhdGUs
IHVpbnQ4eDE2X3R7fSkpIF4gcm91bmRfa2V5OworfQorCitpbmxpbmUgQUJTTF9UQVJHRVRfQ1JZ
UFRPIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIHZvaWQKK1N3
YXBFbmRpYW4odWludDY0X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUKSB7fQorCit9
ICAvLyBuYW1lc3BhY2UKKworI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzY0KSB8fCBkZWZp
bmVkKEFCU0xfQVJDSF9YODZfMzIpCisvLyBPbiB4ODYgd2UgcmVseSBvbiB0aGUgYWVzbmkgaW5z
dHJ1Y3Rpb25zCisjaW5jbHVkZSA8d21taW50cmluLmg+CisKK25hbWVzcGFjZSB7CisKKy8vIFZl
Y3RvcjEyOCBjbGFzcyBpcyBvbmx5IHdyYXBwZXIgZm9yIF9fbTEyOGksIGJlbmNobWFyayBpbmRp
Y2F0ZXMgdGhhdCBpdCdzCisvLyBmYXN0ZXIgdGhhbiB1c2luZyBfX20xMjhpIGRpcmVjdGx5Lgor
Y2xhc3MgVmVjdG9yMTI4IHsKKyBwdWJsaWM6CisgIC8vIENvbnZlcnQgZnJvbS90byBpbnRyaW5z
aWNzLgorICBpbmxpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJ
TkUgZXhwbGljaXQgVmVjdG9yMTI4KAorICAgICAgY29uc3QgX19tMTI4aSYgVmVjdG9yMTI4KQor
ICAgICAgOiBkYXRhXyhWZWN0b3IxMjgpIHt9CisKKyAgaW5saW5lIEFCU0xfUkFORE9NX0lOVEVS
TkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIF9fbTEyOGkgZGF0YSgpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gZGF0YV87CisgIH0KKworICBpbmxpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklC
VVRFX0FMV0FZU19JTkxJTkUgVmVjdG9yMTI4JiBvcGVyYXRvcl49KAorICAgICAgY29uc3QgVmVj
dG9yMTI4JiBvdGhlcikgeworICAgIGRhdGFfID0gX21tX3hvcl9zaTEyOChkYXRhXywgb3RoZXIu
ZGF0YSgpKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworIHByaXZhdGU6CisgIF9fbTEyOGkg
ZGF0YV87Cit9OworCitpbmxpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPIEFCU0xfUkFORE9NX0lOVEVS
TkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFZlY3RvcjEyOAorVmVjdG9yMTI4TG9hZChjb25z
dCB2b2lkKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBmcm9tKSB7CisgIHJldHVybiBW
ZWN0b3IxMjgoX21tX2xvYWRfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBfX20xMjhpKj4o
ZnJvbSkpKTsKK30KKworaW5saW5lIEFCU0xfVEFSR0VUX0NSWVBUTyBBQlNMX1JBTkRPTV9JTlRF
Uk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSB2b2lkCitWZWN0b3IxMjhTdG9yZShjb25zdCBW
ZWN0b3IxMjgmIHYsIHZvaWQqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHRvKSB7Cisg
IF9tbV9zdG9yZV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkgKiBBQlNMX1JBTkRPTV9J
TlRFUk5BTF9SRVNUUklDVD4odG8pLAorICAgICAgICAgICAgICAgICAgdi5kYXRhKCkpOworfQor
CisvLyBPbmUgcm91bmQgb2YgQUVTLiAicm91bmRfa2V5IiBpcyBhIHB1YmxpYyBjb25zdGFudCBm
b3IgYnJlYWtpbmcgdGhlCisvLyBzeW1tZXRyeSBvZiBBRVMgKGVuc3VyZXMgcHJldmlvdXNseSBl
cXVhbCBjb2x1bW5zIGRpZmZlciBhZnRlcndhcmRzKS4KK2lubGluZSBBQlNMX1RBUkdFVF9DUllQ
VE8gQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgVmVjdG9yMTI4
CitBZXNSb3VuZChjb25zdCBWZWN0b3IxMjgmIHN0YXRlLCBjb25zdCBWZWN0b3IxMjgmIHJvdW5k
X2tleSkgeworICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gYWx3YXlzIHVzZSB0aGUgZnVsbCByb3Vu
ZCBmdW5jdGlvbiAtIG9taXR0aW5nIHRoZQorICAvLyBmaW5hbCBNaXhDb2x1bW5zIHJlZHVjZXMg
c2VjdXJpdHkgW2h0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTAvMDQxLnBkZl0KKyAgLy8gYW5k
IGRvZXMgbm90IGhlbHAgYmVjYXVzZSB3ZSBuZXZlciBkZWNyeXB0LgorICByZXR1cm4gVmVjdG9y
MTI4KF9tbV9hZXNlbmNfc2kxMjgoc3RhdGUuZGF0YSgpLCByb3VuZF9rZXkuZGF0YSgpKSk7Cit9
CisKK2lubGluZSBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklC
VVRFX0FMV0FZU19JTkxJTkUgdm9pZAorU3dhcEVuZGlhbih1aW50NjRfdCogQUJTTF9SQU5ET01f
SU5URVJOQUxfUkVTVFJJQ1QpIHt9CisKK30gIC8vIG5hbWVzcGFjZQorCisjZW5kaWYKKworbmFt
ZXNwYWNlIHsKKworLy8gdTY0eDIgaXMgYSAxMjgtYml0LCAoMiB4IHVpbnQ2NF90IGxhbmVzKSBz
dHJ1Y3QgdXNlZCB0byBzdG9yZQorLy8gdGhlIHJhbmRlbl9rZXlzLgorc3RydWN0IGFsaWduYXMo
MTYpIHU2NHgyIHsKKyAgY29uc3RleHByIHU2NHgyKHVpbnQ2NF90IGhpLCB1aW50NjRfdCBsbykK
KyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9QUEMpCisgICAgICAvLyBUaGlzIGhhcyBiZWVuIHRlc3Rl
ZCB3aXRoIFBQQyBydW5uaW5nIGluIGxpdHRsZS1lbmRpYW4gbW9kZTsKKyAgICAgIC8vIFdlIGJ5
dGUtc3dhcCB0aGUgdTY0eDIgc3RydWN0dXJlIGZyb20gbGl0dGxlLWVuZGlhbiB0byBiaWctZW5k
aWFuCisgICAgICAvLyBiZWNhdXNlIGFsdGl2ZWMgYWx3YXlzIHJ1bnMgaW4gYmlnLWVuZGlhbiBt
b2RlLgorICAgICAgOiB2e19fYnVpbHRpbl9ic3dhcDY0KGhpKSwgX19idWlsdGluX2Jzd2FwNjQo
bG8pfSB7CisjZWxzZQorICAgICAgOiB2e2xvLCBoaX0geworI2VuZGlmCisgIH0KKworICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHU2NHgyJiBvdGhlcikgY29uc3QgeworICAgIHJl
dHVybiB2WzBdID09IG90aGVyLnZbMF0gJiYgdlsxXSA9PSBvdGhlci52WzFdOworICB9CisKKyAg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCB1NjR4MiYgb3RoZXIpIGNvbnN0IHsKKyAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgIH0KKworICB1aW50NjRfdCB2WzJdOworfTsg
IC8vIG5hbWVzcGFjZQorCisjaWZkZWYgX19jbGFuZ19fCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFn
bWFzIgorI2VuZGlmCisKKy8vIEF0IHRoaXMgcG9pbnQsIGFsbCBvZiB0aGUgcGxhdGZvcm0tc3Bl
Y2lmaWMgZmVhdHVyZXMgaGF2ZSBiZWVuIGRlZmluZWQgLworLy8gaW1wbGVtZW50ZWQuCisvLwor
Ly8gUkVRVUlSRVM6IHVzaW5nIHU2NHgyID0gLi4uCisvLyBSRVFVSVJFUzogdXNpbmcgVmVjdG9y
MTI4ID0gLi4uCisvLyBSRVFVSVJFUzogVmVjdG9yMTI4IFZlY3RvcjEyOExvYWQodm9pZCopIHsu
Li59CisvLyBSRVFVSVJFUzogdm9pZCBWZWN0b3IxMjhTdG9yZShWZWN0b3IxMjgsIHZvaWQqKSB7
Li4ufQorLy8gUkVRVUlSRVM6IFZlY3RvcjEyOCBBZXNSb3VuZChWZWN0b3IxMjgsIFZlY3RvcjEy
OCkgey4uLn0KKy8vIFJFUVVJUkVTOiB2b2lkIFN3YXBFbmRpYW4odWludDY0X3QqKSB7Li4ufQor
Ly8KKy8vIFBST1ZJREVTOiBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJhbmRlbkh3QWVzOjpBYnNv
cmIKKy8vIFBST1ZJREVTOiBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJhbmRlbkh3QWVzOjpHZW5l
cmF0ZQorCisvLyBSQU5EZW4gPSBSQU5Eb20gZ2VuZXJhdG9yIG9yIGJlZXRyb290cyBpbiBTd2lz
cyBHZXJtYW4uCisvLyAnU3Ryb25nJyAod2VsbC1kaXN0cmlidXRlZCwgdW5wcmVkaWN0YWJsZSwg
YmFja3RyYWNraW5nLXJlc2lzdGFudCkgcmFuZG9tCisvLyBnZW5lcmF0b3IsIGZhc3RlciBpbiBz
b21lIGJlbmNobWFya3MgdGhhbiBzdGQ6Om10MTk5MzdfNjQgYW5kIHBjZzY0X2MzMi4KKy8vCisv
LyBIaWdoLWxldmVsIHN1bW1hcnk6CisvLyAxKSBSZXZlcmllIChzZWUgIkEgUm9idXN0IGFuZCBT
cG9uZ2UtTGlrZSBQUk5HIHdpdGggSW1wcm92ZWQgRWZmaWNpZW5jeSIpIGlzCisvLyAgICBhIHNw
b25nZS1saWtlIHJhbmRvbSBnZW5lcmF0b3IgdGhhdCByZXF1aXJlcyBhIGNyeXB0b2dyYXBoaWMg
cGVybXV0YXRpb24uCisvLyAgICBJdCBpbXByb3ZlcyB1cG9uICJQcm92YWJseSBSb2J1c3QgU3Bv
bmdlLUJhc2VkIFBSTkdzIGFuZCBLREZzIiBieQorLy8gICAgYWNoaWV2aW5nIGJhY2t0cmFja2lu
ZyByZXNpc3RhbmNlIHdpdGggb25seSBvbmUgUGVybXV0ZSgpIHBlciBidWZmZXIuCisvLworLy8g
MikgIlNpbXBpcmEgdjI6IEEgRmFtaWx5IG9mIEVmZmljaWVudCBQZXJtdXRhdGlvbnMgVXNpbmcg
dGhlIEFFUyBSb3VuZAorLy8gICAgRnVuY3Rpb24iIGNvbnN0cnVjdHMgdXAgdG8gMTAyNC1iaXQg
cGVybXV0YXRpb25zIHVzaW5nIGFuIGltcHJvdmVkCisvLyAgICBHZW5lcmFsaXplZCBGZWlzdGVs
IG5ldHdvcmsgd2l0aCAyLXJvdW5kIEFFUy0xMjggZnVuY3Rpb25zLiBUaGlzIEZlaXN0ZWwKKy8v
ICAgIGJsb2NrIHNodWZmbGUgYWNoaWV2ZXMgZGlmZnVzaW9uIGZhc3RlciBhbmQgaXMgbGVzcyB2
dWxuZXJhYmxlIHRvCisvLyAgICBzbGljZWQtYmljbGlxdWUgYXR0YWNrcyB0aGFuIHRoZSBUeXBl
LTIgY3ljbGljIHNodWZmbGUuCisvLworLy8gMykgIkltcHJvdmluZyB0aGUgR2VuZXJhbGl6ZWQg
RmVpc3RlbCIgYW5kICJOZXcgY3JpdGVyaW9uIGZvciBkaWZmdXNpb24KKy8vICAgIHByb3BlcnR5
IiBleHRlbmRzIHRoZSBzYW1lIGtpbmQgb2YgaW1wcm92ZWQgRmVpc3RlbCBibG9jayBzaHVmZmxl
IHRvIDE2CisvLyAgICBicmFuY2hlcywgd2hpY2ggZW5hYmxlcyBhIDIwNDgtYml0IHBlcm11dGF0
aW9uLgorLy8KKy8vIFdlIGNvbWJpbmUgdGhlc2UgdGhyZWUgaWRlYXMgYW5kIGFsc28gY2hhbmdl
IFNpbXBpcmEncyBzdWJyb3VuZCBrZXlzIGZyb20KKy8vIHN0cnVjdHVyZWQvbG93LWVudHJvcHkg
Y291bnRlcnMgdG8gZGlnaXRzIG9mIFBpLgorCisvLyBSYW5kZW4gY29uc3RhbnRzLgordXNpbmcg
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpSYW5kZW5UcmFpdHM7Citjb25zdGV4cHIgc2l6ZV90IGtT
dGF0ZUJ5dGVzID0gUmFuZGVuVHJhaXRzOjprU3RhdGVCeXRlczsKK2NvbnN0ZXhwciBzaXplX3Qg
a0NhcGFjaXR5Qnl0ZXMgPSBSYW5kZW5UcmFpdHM6OmtDYXBhY2l0eUJ5dGVzOworY29uc3RleHBy
IHNpemVfdCBrRmVpc3RlbEJsb2NrcyA9IFJhbmRlblRyYWl0czo6a0ZlaXN0ZWxCbG9ja3M7Citj
b25zdGV4cHIgc2l6ZV90IGtGZWlzdGVsUm91bmRzID0gUmFuZGVuVHJhaXRzOjprRmVpc3RlbFJv
dW5kczsKK2NvbnN0ZXhwciBzaXplX3Qga0ZlaXN0ZWxGdW5jdGlvbnMgPSBSYW5kZW5UcmFpdHM6
OmtGZWlzdGVsRnVuY3Rpb25zOworCisvLyBJbmRlcGVuZGVudCBrZXlzICgyNzIgPSAyLjEgS2lC
KSBmb3IgdGhlIGZpcnN0IEFFUyBzdWJyb3VuZCBvZiBlYWNoIGZ1bmN0aW9uLgorY29uc3RleHBy
IHNpemVfdCBrS2V5cyA9IGtGZWlzdGVsUm91bmRzICoga0ZlaXN0ZWxGdW5jdGlvbnM7CisKKy8v
IElOQ0xVREUga2V5cy4KKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4ta2V5
cy5pbmMiCisKK3N0YXRpY19hc3NlcnQoa0tleXMgPT0ga1JvdW5kS2V5cywgImtLZXlzIGFuZCBr
Um91bmRLZXlzIG11c3QgYmUgZXF1YWwiKTsKK3N0YXRpY19hc3NlcnQocm91bmRfa2V5c1trS2V5
cyAtIDFdICE9IHU2NHgyKDAsIDApLAorICAgICAgICAgICAgICAiVG9vIGZldyByb3VuZF9rZXlz
IGluaXRpYWxpemVycyIpOworCisvLyBOdW1iZXIgb2YgdWludDY0X3QgbGFuZXMgcGVyIDEyOC1i
aXQgdmVjdG9yOworY29uc3RleHByIHNpemVfdCBrTGFuZXMgPSAyOworCisvLyBCbG9jayBzaHVm
ZmxlcyBhcHBsaWVzIGEgc2h1ZmZsZSB0byB0aGUgZW50aXJlIHN0YXRlIGJldHdlZW4gQUVTIHJv
dW5kcy4KKy8vIEltcHJvdmVkIG9kZC1ldmVuIHNodWZmbGUgZnJvbSAiTmV3IGNyaXRlcmlvbiBm
b3IgZGlmZnVzaW9uIHByb3BlcnR5Ii4KK2lubGluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRS
SUJVVEVfQUxXQVlTX0lOTElORSBBQlNMX1RBUkdFVF9DUllQVE8gdm9pZAorQmxvY2tTaHVmZmxl
KHVpbnQ2NF90KiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBzdGF0ZSkgeworICBzdGF0
aWNfYXNzZXJ0KGtGZWlzdGVsQmxvY2tzID09IDE2LCAiRXhwZWN0aW5nIDE2IEZlaXN0ZWxCbG9j
a3MuIik7CisKKyAgY29uc3RleHByIHNpemVfdCBzaHVmZmxlW2tGZWlzdGVsQmxvY2tzXSA9IHs3
LCAgMiwgMTMsIDQsICAxMSwgOCwgIDMsIDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTUsIDAsIDksICAxMCwgMSwgIDE0LCA1LCAxMn07CisKKyAgLy8g
VGhlIGZ1bGx5IHVucm9sbGVkIGxvb3Agd2l0aG91dCB0aGUgbWVtY3B5IGltcHJvdmVzIHRoZSBz
cGVlZCBieSBhYm91dAorICAvLyAzMCUgb3ZlciB0aGUgZXF1aXZhbGVudCBsb29wLgorICBjb25z
dCBWZWN0b3IxMjggdjAgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogc2h1ZmZsZVsw
XSk7CisgIGNvbnN0IFZlY3RvcjEyOCB2MSA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMg
KiBzaHVmZmxlWzFdKTsKKyAgY29uc3QgVmVjdG9yMTI4IHYyID0gVmVjdG9yMTI4TG9hZChzdGF0
ZSArIGtMYW5lcyAqIHNodWZmbGVbMl0pOworICBjb25zdCBWZWN0b3IxMjggdjMgPSBWZWN0b3Ix
MjhMb2FkKHN0YXRlICsga0xhbmVzICogc2h1ZmZsZVszXSk7CisgIGNvbnN0IFZlY3RvcjEyOCB2
NCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzRdKTsKKyAgY29uc3Qg
VmVjdG9yMTI4IHY1ID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIHNodWZmbGVbNV0p
OworICBjb25zdCBWZWN0b3IxMjggdjYgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICog
c2h1ZmZsZVs2XSk7CisgIGNvbnN0IFZlY3RvcjEyOCB2NyA9IFZlY3RvcjEyOExvYWQoc3RhdGUg
KyBrTGFuZXMgKiBzaHVmZmxlWzddKTsKKyAgY29uc3QgVmVjdG9yMTI4IHcwID0gVmVjdG9yMTI4
TG9hZChzdGF0ZSArIGtMYW5lcyAqIHNodWZmbGVbOF0pOworICBjb25zdCBWZWN0b3IxMjggdzEg
PSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogc2h1ZmZsZVs5XSk7CisgIGNvbnN0IFZl
Y3RvcjEyOCB3MiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzEwXSk7
CisgIGNvbnN0IFZlY3RvcjEyOCB3MyA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBz
aHVmZmxlWzExXSk7CisgIGNvbnN0IFZlY3RvcjEyOCB3NCA9IFZlY3RvcjEyOExvYWQoc3RhdGUg
KyBrTGFuZXMgKiBzaHVmZmxlWzEyXSk7CisgIGNvbnN0IFZlY3RvcjEyOCB3NSA9IFZlY3RvcjEy
OExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzEzXSk7CisgIGNvbnN0IFZlY3RvcjEyOCB3
NiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzE0XSk7CisgIGNvbnN0
IFZlY3RvcjEyOCB3NyA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzE1
XSk7CisKKyAgVmVjdG9yMTI4U3RvcmUodjAsIHN0YXRlICsga0xhbmVzICogMCk7CisgIFZlY3Rv
cjEyOFN0b3JlKHYxLCBzdGF0ZSArIGtMYW5lcyAqIDEpOworICBWZWN0b3IxMjhTdG9yZSh2Miwg
c3RhdGUgKyBrTGFuZXMgKiAyKTsKKyAgVmVjdG9yMTI4U3RvcmUodjMsIHN0YXRlICsga0xhbmVz
ICogMyk7CisgIFZlY3RvcjEyOFN0b3JlKHY0LCBzdGF0ZSArIGtMYW5lcyAqIDQpOworICBWZWN0
b3IxMjhTdG9yZSh2NSwgc3RhdGUgKyBrTGFuZXMgKiA1KTsKKyAgVmVjdG9yMTI4U3RvcmUodjYs
IHN0YXRlICsga0xhbmVzICogNik7CisgIFZlY3RvcjEyOFN0b3JlKHY3LCBzdGF0ZSArIGtMYW5l
cyAqIDcpOworICBWZWN0b3IxMjhTdG9yZSh3MCwgc3RhdGUgKyBrTGFuZXMgKiA4KTsKKyAgVmVj
dG9yMTI4U3RvcmUodzEsIHN0YXRlICsga0xhbmVzICogOSk7CisgIFZlY3RvcjEyOFN0b3JlKHcy
LCBzdGF0ZSArIGtMYW5lcyAqIDEwKTsKKyAgVmVjdG9yMTI4U3RvcmUodzMsIHN0YXRlICsga0xh
bmVzICogMTEpOworICBWZWN0b3IxMjhTdG9yZSh3NCwgc3RhdGUgKyBrTGFuZXMgKiAxMik7Cisg
IFZlY3RvcjEyOFN0b3JlKHc1LCBzdGF0ZSArIGtMYW5lcyAqIDEzKTsKKyAgVmVjdG9yMTI4U3Rv
cmUodzYsIHN0YXRlICsga0xhbmVzICogMTQpOworICBWZWN0b3IxMjhTdG9yZSh3Nywgc3RhdGUg
KyBrTGFuZXMgKiAxNSk7Cit9CisKKy8vIEZlaXN0ZWwgcm91bmQgZnVuY3Rpb24gdXNpbmcgdHdv
IEFFUyBzdWJyb3VuZHMuIFZlcnkgc2ltaWxhciB0byBGKCkKKy8vIGZyb20gU2ltcGlyYSB2Miwg
YnV0IHdpdGggaW5kZXBlbmRlbnQgc3Vicm91bmQga2V5cy4gVXNlcyAxNyBBRVMgcm91bmRzCisv
LyBwZXIgMTYgYnl0ZXMgKHZzLiAxMCBmb3IgQUVTLUNUUikuIENvbXB1dGluZyBlaWdodCByb3Vu
ZCBmdW5jdGlvbnMgaW4KKy8vIHBhcmFsbGVsIGhpZGVzIHRoZSA3LWN5Y2xlIEFFU05JIGxhdGVu
Y3kgb24gSFNXLiBOb3RlIHRoYXQgdGhlIEZlaXN0ZWwKKy8vIFhPUnMgYXJlICdmcmVlJyAoaW5j
bHVkZWQgaW4gdGhlIHNlY29uZCBBRVMgaW5zdHJ1Y3Rpb24pLgoraW5saW5lIEFCU0xfUkFORE9N
X0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIEFCU0xfVEFSR0VUX0NSWVBUTyBjb25z
dAorICAgIHU2NHgyKgorICAgIEZlaXN0ZWxSb3VuZCh1aW50NjRfdCogQUJTTF9SQU5ET01fSU5U
RVJOQUxfUkVTVFJJQ1Qgc3RhdGUsCisgICAgICAgICAgICAgICAgIGNvbnN0IHU2NHgyKiBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBrZXlzKSB7CisgIHN0YXRpY19hc3NlcnQoa0ZlaXN0
ZWxCbG9ja3MgPT0gMTYsICJFeHBlY3RpbmcgMTYgRmVpc3RlbEJsb2Nrcy4iKTsKKworICAvLyBN
U1ZDIGRvZXMgYSBob3JyaWJsZSBqb2IgYXQgdW5yb2xsaW5nIGxvb3BzLgorICAvLyBTbyB3ZSB1
bnJvbGwgdGhlIGxvb3AgYnkgaGFuZCB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZS4KKyAgY29u
c3QgVmVjdG9yMTI4IHMwID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIDApOworICBj
b25zdCBWZWN0b3IxMjggczEgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMSk7Cisg
IGNvbnN0IFZlY3RvcjEyOCBzMiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAyKTsK
KyAgY29uc3QgVmVjdG9yMTI4IHMzID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIDMp
OworICBjb25zdCBWZWN0b3IxMjggczQgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICog
NCk7CisgIGNvbnN0IFZlY3RvcjEyOCBzNSA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMg
KiA1KTsKKyAgY29uc3QgVmVjdG9yMTI4IHM2ID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5l
cyAqIDYpOworICBjb25zdCBWZWN0b3IxMjggczcgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xh
bmVzICogNyk7CisgIGNvbnN0IFZlY3RvcjEyOCBzOCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBr
TGFuZXMgKiA4KTsKKyAgY29uc3QgVmVjdG9yMTI4IHM5ID0gVmVjdG9yMTI4TG9hZChzdGF0ZSAr
IGtMYW5lcyAqIDkpOworICBjb25zdCBWZWN0b3IxMjggczEwID0gVmVjdG9yMTI4TG9hZChzdGF0
ZSArIGtMYW5lcyAqIDEwKTsKKyAgY29uc3QgVmVjdG9yMTI4IHMxMSA9IFZlY3RvcjEyOExvYWQo
c3RhdGUgKyBrTGFuZXMgKiAxMSk7CisgIGNvbnN0IFZlY3RvcjEyOCBzMTIgPSBWZWN0b3IxMjhM
b2FkKHN0YXRlICsga0xhbmVzICogMTIpOworICBjb25zdCBWZWN0b3IxMjggczEzID0gVmVjdG9y
MTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIDEzKTsKKyAgY29uc3QgVmVjdG9yMTI4IHMxNCA9IFZl
Y3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxNCk7CisgIGNvbnN0IFZlY3RvcjEyOCBzMTUg
PSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMTUpOworCisgIC8vIEVuY29kZSBldmVu
IGJsb2NrcyB3aXRoIGtleXMuCisgIGNvbnN0IFZlY3RvcjEyOCBlMCA9IEFlc1JvdW5kKHMwLCBW
ZWN0b3IxMjhMb2FkKGtleXMgKyAwKSk7CisgIGNvbnN0IFZlY3RvcjEyOCBlMiA9IEFlc1JvdW5k
KHMyLCBWZWN0b3IxMjhMb2FkKGtleXMgKyAxKSk7CisgIGNvbnN0IFZlY3RvcjEyOCBlNCA9IEFl
c1JvdW5kKHM0LCBWZWN0b3IxMjhMb2FkKGtleXMgKyAyKSk7CisgIGNvbnN0IFZlY3RvcjEyOCBl
NiA9IEFlc1JvdW5kKHM2LCBWZWN0b3IxMjhMb2FkKGtleXMgKyAzKSk7CisgIGNvbnN0IFZlY3Rv
cjEyOCBlOCA9IEFlc1JvdW5kKHM4LCBWZWN0b3IxMjhMb2FkKGtleXMgKyA0KSk7CisgIGNvbnN0
IFZlY3RvcjEyOCBlMTAgPSBBZXNSb3VuZChzMTAsIFZlY3RvcjEyOExvYWQoa2V5cyArIDUpKTsK
KyAgY29uc3QgVmVjdG9yMTI4IGUxMiA9IEFlc1JvdW5kKHMxMiwgVmVjdG9yMTI4TG9hZChrZXlz
ICsgNikpOworICBjb25zdCBWZWN0b3IxMjggZTE0ID0gQWVzUm91bmQoczE0LCBWZWN0b3IxMjhM
b2FkKGtleXMgKyA3KSk7CisKKyAgLy8gRW5jb2RlIG9kZCBibG9ja3Mgd2l0aCBldmVuIG91dHB1
dCBmcm9tIGFib3ZlLgorICBjb25zdCBWZWN0b3IxMjggbzEgPSBBZXNSb3VuZChlMCwgczEpOwor
ICBjb25zdCBWZWN0b3IxMjggbzMgPSBBZXNSb3VuZChlMiwgczMpOworICBjb25zdCBWZWN0b3Ix
MjggbzUgPSBBZXNSb3VuZChlNCwgczUpOworICBjb25zdCBWZWN0b3IxMjggbzcgPSBBZXNSb3Vu
ZChlNiwgczcpOworICBjb25zdCBWZWN0b3IxMjggbzkgPSBBZXNSb3VuZChlOCwgczkpOworICBj
b25zdCBWZWN0b3IxMjggbzExID0gQWVzUm91bmQoZTEwLCBzMTEpOworICBjb25zdCBWZWN0b3Ix
MjggbzEzID0gQWVzUm91bmQoZTEyLCBzMTMpOworICBjb25zdCBWZWN0b3IxMjggbzE1ID0gQWVz
Um91bmQoZTE0LCBzMTUpOworCisgIC8vIFN0b3JlIG9kZCBibG9ja3MuIChUaGVzZSB3aWxsIGJl
IHNodWZmbGVkIGxhdGVyKS4KKyAgVmVjdG9yMTI4U3RvcmUobzEsIHN0YXRlICsga0xhbmVzICog
MSk7CisgIFZlY3RvcjEyOFN0b3JlKG8zLCBzdGF0ZSArIGtMYW5lcyAqIDMpOworICBWZWN0b3Ix
MjhTdG9yZShvNSwgc3RhdGUgKyBrTGFuZXMgKiA1KTsKKyAgVmVjdG9yMTI4U3RvcmUobzcsIHN0
YXRlICsga0xhbmVzICogNyk7CisgIFZlY3RvcjEyOFN0b3JlKG85LCBzdGF0ZSArIGtMYW5lcyAq
IDkpOworICBWZWN0b3IxMjhTdG9yZShvMTEsIHN0YXRlICsga0xhbmVzICogMTEpOworICBWZWN0
b3IxMjhTdG9yZShvMTMsIHN0YXRlICsga0xhbmVzICogMTMpOworICBWZWN0b3IxMjhTdG9yZShv
MTUsIHN0YXRlICsga0xhbmVzICogMTUpOworCisgIHJldHVybiBrZXlzICsgODsKK30KKworLy8g
Q3J5cHRvZ3JhcGhpYyBwZXJtdXRhdGlvbiBiYXNlZCB2aWEgdHlwZS0yIEdlbmVyYWxpemVkIEZl
aXN0ZWwgTmV0d29yay4KKy8vIEluZGlzdGluZ3Vpc2hhYmxlIGZyb20gaWRlYWwgYnkgY2hvc2Vu
LWNpcGhlcnRleHQgYWR2ZXJzYXJpZXMgdXNpbmcgbGVzcyB0aGFuCisvLyAyXjY0IHF1ZXJpZXMg
aWYgdGhlIHJvdW5kIGZ1bmN0aW9uIGlzIGEgUFJGLiBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIGI9
OCBjYXNlCisvLyBvZiBTaW1waXJhIHYyLCBidXQgbW9yZSBlZmZpY2llbnQgdGhhbiBpdHMgZ2Vu
ZXJpYyBjb25zdHJ1Y3Rpb24gZm9yIGI9MTYuCitpbmxpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxf
QVRUUklCVVRFX0FMV0FZU19JTkxJTkUgQUJTTF9UQVJHRVRfQ1JZUFRPIHZvaWQKK1Blcm11dGUo
Y29uc3Qgdm9pZCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qga2V5cywKKyAgICAgICAg
dWludDY0X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHN0YXRlKSB7CisgIGNvbnN0
IHU2NHgyKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBrZXlzMTI4ID0KKyAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IHU2NHgyKj4oa2V5cyk7CisKKyAgLy8gKFN1Y2Nlc3NmdWxseSB1bnJv
bGxlZDsgdGhlIGZpcnN0IGl0ZXJhdGlvbiBqdW1wcyBpbnRvIHRoZSBzZWNvbmQgaGFsZikKKyNp
ZmRlZiBfX2NsYW5nX18KKyNwcmFnbWEgY2xhbmcgbG9vcCB1bnJvbGxfY291bnQoMikKKyNlbmRp
ZgorICBmb3IgKHNpemVfdCByb3VuZCA9IDA7IHJvdW5kIDwga0ZlaXN0ZWxSb3VuZHM7ICsrcm91
bmQpIHsKKyAgICBrZXlzMTI4ID0gRmVpc3RlbFJvdW5kKHN0YXRlLCBrZXlzMTI4KTsKKyAgICBC
bG9ja1NodWZmbGUoc3RhdGUpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCituYW1lc3Bh
Y2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworYm9vbCBIYXNSYW5kZW5I
d0Flc0ltcGxlbWVudGF0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfQorCitjb25zdCB2b2lkKiBBQlNM
X1RBUkdFVF9DUllQVE8gQUJTTF9GVU5DVElPTl9BTElHTjMyIEFCU0xfQVRUUklCVVRFX0ZMQVRU
RU4KK1JhbmRlbkh3QWVzOjpHZXRLZXlzKCkgeworICAvLyBSb3VuZCBrZXlzIGZvciBvbmUgQUVT
IHBlciBGZWlzdGVsIHJvdW5kIGFuZCBicmFuY2guCisgIC8vIFRoZSBjYW5vbmljYWwgaW1wbGVt
ZW50YXRpb24gdXNlcyBmaXJzdCBkaWdpdHMgb2YgUGkuCisgIHJldHVybiByb3VuZF9rZXlzOwor
fQorCisvLyBOT0xJTlRORVhUTElORQordm9pZCBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9GVU5D
VElPTl9BTElHTjMyIEFCU0xfQVRUUklCVVRFX0ZMQVRURU4KK1JhbmRlbkh3QWVzOjpBYnNvcmIo
Y29uc3Qgdm9pZCogc2VlZF92b2lkLCB2b2lkKiBzdGF0ZV92b2lkKSB7CisgIHVpbnQ2NF90KiBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBzdGF0ZSA9CisgICAgICByZWludGVycHJldF9j
YXN0PHVpbnQ2NF90Kj4oc3RhdGVfdm9pZCk7CisgIGNvbnN0IHVpbnQ2NF90KiBBQlNMX1JBTkRP
TV9JTlRFUk5BTF9SRVNUUklDVCBzZWVkID0KKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDY0X3QqPihzZWVkX3ZvaWQpOworCisgIGNvbnN0ZXhwciBzaXplX3Qga0NhcGFjaXR5Qmxv
Y2tzID0ga0NhcGFjaXR5Qnl0ZXMgLyBzaXplb2YoVmVjdG9yMTI4KTsKKyAgY29uc3RleHByIHNp
emVfdCBrU3RhdGVCbG9ja3MgPSBrU3RhdGVCeXRlcyAvIHNpemVvZihWZWN0b3IxMjgpOworCisg
IHN0YXRpY19hc3NlcnQoa0NhcGFjaXR5QmxvY2tzICogc2l6ZW9mKFZlY3RvcjEyOCkgPT0ga0Nh
cGFjaXR5Qnl0ZXMsCisgICAgICAgICAgICAgICAgIk5vdCBpKlYiKTsKKyAgc3RhdGljX2Fzc2Vy
dChrQ2FwYWNpdHlCbG9ja3MgPT0gMSwgIlVuZXhwZWN0ZWQgUmFuZGVuIGtDYXBhY2l0eUJsb2Nr
cyIpOworICBzdGF0aWNfYXNzZXJ0KGtTdGF0ZUJsb2NrcyA9PSAxNiwgIlVuZXhwZWN0ZWQgUmFu
ZGVuIGtTdGF0ZUJsb2NrcyIpOworCisgIFZlY3RvcjEyOCBiMSA9IFZlY3RvcjEyOExvYWQoc3Rh
dGUgKyBrTGFuZXMgKiAxKTsKKyAgYjEgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICog
MCk7CisgIFZlY3RvcjEyOFN0b3JlKGIxLCBzdGF0ZSArIGtMYW5lcyAqIDEpOworCisgIFZlY3Rv
cjEyOCBiMiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAyKTsKKyAgYjIgXj0gVmVj
dG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogMSk7CisgIFZlY3RvcjEyOFN0b3JlKGIyLCBzdGF0
ZSArIGtMYW5lcyAqIDIpOworCisgIFZlY3RvcjEyOCBiMyA9IFZlY3RvcjEyOExvYWQoc3RhdGUg
KyBrTGFuZXMgKiAzKTsKKyAgYjMgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogMik7
CisgIFZlY3RvcjEyOFN0b3JlKGIzLCBzdGF0ZSArIGtMYW5lcyAqIDMpOworCisgIFZlY3RvcjEy
OCBiNCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiA0KTsKKyAgYjQgXj0gVmVjdG9y
MTI4TG9hZChzZWVkICsga0xhbmVzICogMyk7CisgIFZlY3RvcjEyOFN0b3JlKGI0LCBzdGF0ZSAr
IGtMYW5lcyAqIDQpOworCisgIFZlY3RvcjEyOCBiNSA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBr
TGFuZXMgKiA1KTsKKyAgYjUgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogNCk7Cisg
IFZlY3RvcjEyOFN0b3JlKGI1LCBzdGF0ZSArIGtMYW5lcyAqIDUpOworCisgIFZlY3RvcjEyOCBi
NiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiA2KTsKKyAgYjYgXj0gVmVjdG9yMTI4
TG9hZChzZWVkICsga0xhbmVzICogNSk7CisgIFZlY3RvcjEyOFN0b3JlKGI2LCBzdGF0ZSArIGtM
YW5lcyAqIDYpOworCisgIFZlY3RvcjEyOCBiNyA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFu
ZXMgKiA3KTsKKyAgYjcgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogNik7CisgIFZl
Y3RvcjEyOFN0b3JlKGI3LCBzdGF0ZSArIGtMYW5lcyAqIDcpOworCisgIFZlY3RvcjEyOCBiOCA9
IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiA4KTsKKyAgYjggXj0gVmVjdG9yMTI4TG9h
ZChzZWVkICsga0xhbmVzICogNyk7CisgIFZlY3RvcjEyOFN0b3JlKGI4LCBzdGF0ZSArIGtMYW5l
cyAqIDgpOworCisgIFZlY3RvcjEyOCBiOSA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMg
KiA5KTsKKyAgYjkgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogOCk7CisgIFZlY3Rv
cjEyOFN0b3JlKGI5LCBzdGF0ZSArIGtMYW5lcyAqIDkpOworCisgIFZlY3RvcjEyOCBiMTAgPSBW
ZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMTApOworICBiMTAgXj0gVmVjdG9yMTI4TG9h
ZChzZWVkICsga0xhbmVzICogOSk7CisgIFZlY3RvcjEyOFN0b3JlKGIxMCwgc3RhdGUgKyBrTGFu
ZXMgKiAxMCk7CisKKyAgVmVjdG9yMTI4IGIxMSA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFu
ZXMgKiAxMSk7CisgIGIxMSBePSBWZWN0b3IxMjhMb2FkKHNlZWQgKyBrTGFuZXMgKiAxMCk7Cisg
IFZlY3RvcjEyOFN0b3JlKGIxMSwgc3RhdGUgKyBrTGFuZXMgKiAxMSk7CisKKyAgVmVjdG9yMTI4
IGIxMiA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxMik7CisgIGIxMiBePSBWZWN0
b3IxMjhMb2FkKHNlZWQgKyBrTGFuZXMgKiAxMSk7CisgIFZlY3RvcjEyOFN0b3JlKGIxMiwgc3Rh
dGUgKyBrTGFuZXMgKiAxMik7CisKKyAgVmVjdG9yMTI4IGIxMyA9IFZlY3RvcjEyOExvYWQoc3Rh
dGUgKyBrTGFuZXMgKiAxMyk7CisgIGIxMyBePSBWZWN0b3IxMjhMb2FkKHNlZWQgKyBrTGFuZXMg
KiAxMik7CisgIFZlY3RvcjEyOFN0b3JlKGIxMywgc3RhdGUgKyBrTGFuZXMgKiAxMyk7CisKKyAg
VmVjdG9yMTI4IGIxNCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxNCk7CisgIGIx
NCBePSBWZWN0b3IxMjhMb2FkKHNlZWQgKyBrTGFuZXMgKiAxMyk7CisgIFZlY3RvcjEyOFN0b3Jl
KGIxNCwgc3RhdGUgKyBrTGFuZXMgKiAxNCk7CisKKyAgVmVjdG9yMTI4IGIxNSA9IFZlY3RvcjEy
OExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxNSk7CisgIGIxNSBePSBWZWN0b3IxMjhMb2FkKHNlZWQg
KyBrTGFuZXMgKiAxNCk7CisgIFZlY3RvcjEyOFN0b3JlKGIxNSwgc3RhdGUgKyBrTGFuZXMgKiAx
NSk7Cit9CisKKy8vIE5PTElOVE5FWFRMSU5FCit2b2lkIEFCU0xfVEFSR0VUX0NSWVBUTyBBQlNM
X0ZVTkNUSU9OX0FMSUdOMzIgQUJTTF9BVFRSSUJVVEVfRkxBVFRFTgorUmFuZGVuSHdBZXM6Okdl
bmVyYXRlKGNvbnN0IHZvaWQqIGtleXMsIHZvaWQqIHN0YXRlX3ZvaWQpIHsKKyAgc3RhdGljX2Fz
c2VydChrQ2FwYWNpdHlCeXRlcyA9PSBzaXplb2YoVmVjdG9yMTI4KSwgIkNhcGFjaXR5IG1pc21h
dGNoIik7CisKKyAgdWludDY0X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHN0YXRl
ID0KKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihzdGF0ZV92b2lkKTsKKworICBj
b25zdCBWZWN0b3IxMjggcHJldl9pbm5lciA9IFZlY3RvcjEyOExvYWQoc3RhdGUpOworCisgIFN3
YXBFbmRpYW4oc3RhdGUpOworCisgIFBlcm11dGUoa2V5cywgc3RhdGUpOworCisgIFN3YXBFbmRp
YW4oc3RhdGUpOworCisgIC8vIEVuc3VyZSBiYWNrdHJhY2tpbmcgcmVzaXN0YW5jZS4KKyAgVmVj
dG9yMTI4IGlubmVyID0gVmVjdG9yMTI4TG9hZChzdGF0ZSk7CisgIGlubmVyIF49IHByZXZfaW5u
ZXI7CisgIFZlY3RvcjEyOFN0b3JlKGlubmVyLCBzdGF0ZSk7Cit9CisKKyNpZmRlZiBfX2NsYW5n
X18KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCit9ICAvLyBuYW1lc3Bh
Y2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIChB
QlNMX1JBTkRFTl9IV0FFU19JTVBMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFs
L3JhbmRlbl9od2Flcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9od2Flcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ4ZTYwNTVmMDFhOThiODU3NWEwODI4YjdiOGU0NzgyMTRjY2Y3YjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2h3YWVzLmgKQEAgLTAs
MCArMSw0NiBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNp
Zm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0hXQUVTX0hfCisjZGVmaW5lIEFCU0xf
UkFORE9NX0lOVEVSTkFMX1JBTkRFTl9IV0FFU19IXworCisvLyBIRVJNRVRJQyBOT1RFOiBUaGUg
cmFuZGVuX2h3YWVzIHRhcmdldCBtdXN0IG5vdCBpbnRyb2R1Y2UgZHVwbGljYXRlCisvLyBzeW1i
b2xzIGZyb20gYXJiaXRyYXJ5IHN5c3RlbSBhbmQgb3RoZXIgaGVhZGVycywgc2luY2UgaXQgbWF5
IGJlIGJ1aWx0CisvLyB3aXRoIGRpZmZlcmVudCBmbGFncyBmcm9tIG90aGVyIHRhcmdldHMsIHVz
aW5nIGRpZmZlcmVudCBsZXZlbHMgb2YKKy8vIG9wdGltaXphdGlvbiwgcG90ZW50aWFsbHkgaW50
cm9kdWNpbmcgT0RSIHZpb2xhdGlvbnMuCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBy
YW5kb21faW50ZXJuYWwgeworCisvLyBSQU5EZW4gPSBSQU5Eb20gZ2VuZXJhdG9yIG9yIGJlZXRy
b290cyBpbiBTd2lzcyBHZXJtYW4uCisvLyAnU3Ryb25nJyAod2VsbC1kaXN0cmlidXRlZCwgdW5w
cmVkaWN0YWJsZSwgYmFja3RyYWNraW5nLXJlc2lzdGFudCkgcmFuZG9tCisvLyBnZW5lcmF0b3Is
IGZhc3RlciBpbiBzb21lIGJlbmNobWFya3MgdGhhbiBzdGQ6Om10MTk5MzdfNjQgYW5kIHBjZzY0
X2MzMi4KKy8vCisvLyBSYW5kZW5Id0FlcyBpbXBsZW1lbnRzIHRoZSBiYXNpYyBzdGF0ZSBtYW5p
cHVsYXRpb24gbWV0aG9kcy4KK2NsYXNzIFJhbmRlbkh3QWVzIHsKKyBwdWJsaWM6CisgIHN0YXRp
YyB2b2lkIEdlbmVyYXRlKGNvbnN0IHZvaWQqIGtleXMsIHZvaWQqIHN0YXRlX3ZvaWQpOworICBz
dGF0aWMgdm9pZCBBYnNvcmIoY29uc3Qgdm9pZCogc2VlZF92b2lkLCB2b2lkKiBzdGF0ZV92b2lk
KTsKKyAgc3RhdGljIGNvbnN0IHZvaWQqIEdldEtleXMoKTsKK307CisKKy8vIEhhc1JhbmRlbkh3
QWVzSW1wbGVtZW50YXRpb24gcmV0dXJucyB0cnVlIHdoZW4gdGhlcmUgaXMgYW4gYWNjZWxlcmF0
ZWQKKy8vIGltcGxlbWVudGF0aW9uLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgSWYgdGhlcmUgaXMg
bm8gaW1wbGVtZW50YXRpb24sCisvLyB0aGVuIGF0dGVtcHRpbmcgdG8gdXNlIGl0IHdpbGwgYWJv
cnQgdGhlIHByb2dyYW0uCitib29sIEhhc1JhbmRlbkh3QWVzSW1wbGVtZW50YXRpb24oKTsKKwor
fSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKwor
I2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SQU5ERU5fSFdBRVNfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXNfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2NiZDQ2YjJk
ZDU4MmYxNjg4NTgzZGJlYWZhYzA5YjYyNThhYzRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL3JhbmRlbl9od2Flc190ZXN0LmNjCkBAIC0wLDAgKzEsMTAyIEBACisv
LyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wv
cmFuZG9tL2ludGVybmFsL3JhbmRlbl9od2Flcy5oIgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2su
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5h
bC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3BsYXRmb3Jt
LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2RldGVjdC5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl90cmFpdHMuaCIKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OlJhbmRlbkh3QWVzOwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpSYW5kZW5UcmFpdHM7CisKK3N0cnVjdCByYW5kZW4geworICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBrU3RhdGVTaXplVCA9CisgICAgICBSYW5kZW5UcmFpdHM6OmtTdGF0ZUJ5dGVzIC8gc2l6
ZW9mKHVpbnQ2NF90KTsKKyAgdWludDY0X3Qgc3RhdGVba1N0YXRlU2l6ZVRdOworICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBrU2VlZFNpemVUID0KKyAgICAgIFJhbmRlblRyYWl0czo6a1NlZWRC
eXRlcyAvIHNpemVvZih1aW50MzJfdCk7CisgIHVpbnQzMl90IHNlZWRba1NlZWRTaXplVF07Cit9
OworCitURVNUKFJhbmRlbkh3QWVzVGVzdCwgRGVmYXVsdCkgeworICBFWFBFQ1RfVFJVRShhYnNs
OjpyYW5kb21faW50ZXJuYWw6OkNQVVN1cHBvcnRzUmFuZGVuSHdBZXMoKSk7CisKKyAgY29uc3Rl
eHByIHVpbnQ2NF90IGtHb2xkZW5bXSA9IHsKKyAgICAgIDB4NmM2NTM0MDkwZWU2ZDNlZSwgMHgw
NDRlMmI5YjlkNTMzM2M2LCAweGMzYzE0ZjEzNGU0MzM5NzcsCisgICAgICAweGRkYTlmNDdjZDkw
NDEwZWUsIDB4ODg3YmYzMDg3ZmQ4Y2ExMCwgMHhmMGI3ODBmNTQ1YzcyOTEyLAorICAgICAgMHgx
NWRiYjFkMzc2OTY1OTlmLCAweDMwZWM2M2JhZmYzYzZkNTksIDB4YjI5ZjczNjA2ZjdmMjBhNiwK
KyAgICAgIDB4MDI4MDhhMzE2ZjQ5YTU0YywgMHgzYjhmZWFmOWQ1YzhlNTBlLCAweDljYmY2MDVl
M2ZkOWRlOGEsCisgICAgICAweGM5NzBhZTFhNzgxODNiYmIsIDB4ZDhiMmZmZDM1NjMwMWVkNSwg
MHhmNGIzMjdmZTBmYzczYzM3LAorICAgICAgMHhjZGZkOGQ3NmViOGY5YTE5LCAweGMzYTUwNmVi
OTE0MjBjOWQsIDB4ZDVhZjA1ZGQzZWZmOTU1NiwKKyAgICAgIDB4NDhkYjFiYjc4ZjgzYzRhMSwg
MHg3MDIzOTIwZTBkNmJmZThjLCAweDU4ZDM1NzU4MzQ5NTZkNDIsCisgICAgICAweGVkMWVmNGMy
NmI4N2I4NDAsIDB4OGVlZjMyYTIzZTBiMmRmMywgMHg0OTdjYWJmMzQzMTE1NGZjLAorICAgICAg
MHg0ZTI0MzcwNTcwMDI5YThiLCAweGQ4OGI1NzQ5ZjA5MGU1ZWEsIDB4YzY1MWE1ODJhOTcwNjky
ZiwKKyAgICAgIDB4NzhmY2VjMmNiYjYzNDJmNSwgMHg0NjNjYjc0NTYxMmY1NWRiLCAweDM1MmVl
NGFkMTgxNmFmZTMsCisgICAgICAweDAyNmZmMzc0YzEwMWRhN2UsIDB4ODExZWYwODIxYzNkZTg1
MSwKKyAgfTsKKworICBhbGlnbmFzKDE2KSByYW5kZW4gZDsKKyAgbWVtc2V0KGQuc3RhdGUsIDAs
IHNpemVvZihkLnN0YXRlKSk7CisgIFJhbmRlbkh3QWVzOjpHZW5lcmF0ZShSYW5kZW5Id0Flczo6
R2V0S2V5cygpLCBkLnN0YXRlKTsKKworICB1aW50NjRfdCogaWQgPSBkLnN0YXRlOworICBmb3Ig
KGNvbnN0IGF1dG8mIGVsZW0gOiBrR29sZGVuKSB7CisgICAgYXV0byBhID0gYWJzbDo6U3RyRm9y
bWF0KCIlI3giLCBlbGVtKTsKKyAgICBhdXRvIGIgPSBhYnNsOjpTdHJGb3JtYXQoIiUjeCIsICpp
ZCsrKTsKKyAgICBFWFBFQ1RfRVEoYSwgYik7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKKyAgdGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIEFCU0xfUkFXX0xPRyhJTkZPLCAiQUJTTF9IQVZFX0FD
Q0VMRVJBVEVEX0FFUz0lZCIsIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMpOworICBBQlNMX1JB
V19MT0coSU5GTywgIkFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSD0lZCIsCisgICAg
ICAgICAgICAgICBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0gpOworCisjaWYgZGVm
aW5lZChBQlNMX0FSQ0hfWDg2XzY0KQorICBBQlNMX1JBV19MT0coSU5GTywgIkFCU0xfQVJDSF9Y
ODZfNjQiKTsKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNIX1g4Nl8zMikKKyAgQUJTTF9SQVdfTE9H
KElORk8sICJBQlNMX0FSQ0hfWDg2XzMyIik7CisjZWxpZiBkZWZpbmVkKEFCU0xfQVJDSF9BQVJD
SDY0KQorICBBQlNMX1JBV19MT0coSU5GTywgIkFCU0xfQVJDSF9BQVJDSDY0Iik7CisjZWxpZiBk
ZWZpbmVkKEFCU0xfQVJDSF9BUk0pCisgIEFCU0xfUkFXX0xPRyhJTkZPLCAiQUJTTF9BUkNIX0FS
TSIpOworI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQorICBBQlNMX1JBV19MT0coSU5GTywg
IkFCU0xfQVJDSF9QUEMiKTsKKyNlbHNlCisgIEFCU0xfUkFXX0xPRyhJTkZPLCAiQVJDSCBVbmtu
b3duIik7CisjZW5kaWYKKworICBpbnQgeCA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6SGFzUmFu
ZGVuSHdBZXNJbXBsZW1lbnRhdGlvbigpOworICBBQlNMX1JBV19MT0coSU5GTywgIkhhc1JhbmRl
bkh3QWVzSW1wbGVtZW50YXRpb24gPSAlZCIsIHgpOworCisgIGludCB5ID0gYWJzbDo6cmFuZG9t
X2ludGVybmFsOjpDUFVTdXBwb3J0c1JhbmRlbkh3QWVzKCk7CisgIEFCU0xfUkFXX0xPRyhJTkZP
LCAiQ1BVU3VwcG9ydHNSYW5kZW5Id0FlcyA9ICVkIiwgeCk7CisKKyAgaWYgKCF4IHx8ICF5KSB7
CisgICAgQUJTTF9SQVdfTE9HKElORk8sICJTa2lwcGluZyBSYW5kZW4gSFdBRVMgdGVzdHMuIik7
CisgICAgcmV0dXJuIDA7CisgIH0KKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fc2xvdy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9yYW5kZW5fc2xvdy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTJlMmRhYTUzZjVhNTJhOTRh
YjE0ZjE1N2VlYjk3NGE1ODc1ZjZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3JhbmRlbl9zbG93LmNjCkBAIC0wLDAgKzEsNTEyIEBACisvLyBDb3B5cmlnaHQgMjAx
NyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFs
L3JhbmRlbl9zbG93LmgiCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+
CisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3Bs
YXRmb3JtLmgiCisKKy8vIEFCU0xfSEFWRV9BVFRSSUJVVEUKKyNpZiAhZGVmaW5lZChBQlNMX0hB
VkVfQVRUUklCVVRFKQorI2lmZGVmIF9faGFzX2F0dHJpYnV0ZQorI2RlZmluZSBBQlNMX0hBVkVf
QVRUUklCVVRFKHgpIF9faGFzX2F0dHJpYnV0ZSh4KQorI2Vsc2UKKyNkZWZpbmUgQUJTTF9IQVZF
X0FUVFJJQlVURSh4KSAwCisjZW5kaWYKKyNlbmRpZgorCisjaWYgQUJTTF9IQVZFX0FUVFJJQlVU
RShhbHdheXNfaW5saW5lKSB8fCBcCisgICAgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVk
KF9fY2xhbmdfXykpCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdB
WVNfSU5MSU5FIFwKKyAgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCisjZWxpZiBkZWZp
bmVkKF9NU0NfVkVSKQorLy8gV2UgY2FuIGFjaGlldmUgc29tZXRoaW5nIHNpbWlsYXIgdG8gYXR0
cmlidXRlKChhbHdheXNfaW5saW5lKSkgd2l0aCBNU1ZDIGJ5CisvLyB1c2luZyB0aGUgX19mb3Jj
ZWlubGluZSBrZXl3b3JkLCBob3dldmVyIHRoaXMgaXMgbm90IHBlcmZlY3QuIE1TVkMgaXMKKy8v
IG11Y2ggbGVzcyBhZ2dyZXNzaXZlIGFib3V0IGlubGluaW5nLCBhbmQgZXZlbiB3aXRoIHRoZSBf
X2ZvcmNlaW5saW5lIGtleXdvcmQuCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJ
QlVURV9BTFdBWVNfSU5MSU5FIF9fZm9yY2VpbmxpbmUKKyNlbHNlCisjZGVmaW5lIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCisjZW5kaWYKKworbmFtZXNwYWNl
IHsKKworLy8gQUVTIHBvcnRpb25zIGJhc2VkIG9uIHJpam5kYWVsLWFsZy1mc3QuYywKKy8vIGh0
dHBzOi8vZmFzdGNyeXB0by5vcmcvZnJvbnQvbWlzYy9yaWpuZGFlbC1hbGctZnN0LmMKKy8vCisv
LyBJbXBsZW1lbnRhdGlvbiBvZgorLy8gaHR0cDovL3d3dy5jc3JjLm5pc3QuZ292L3B1YmxpY2F0
aW9ucy9maXBzL2ZpcHMxOTcvZmlwcy0xOTcucGRmCitjb25zdGV4cHIgdWludDMyX3QgdGUwWzI1
Nl0gPSB7CisgICAgMHhjNjYzNjNhNSwgMHhmODdjN2M4NCwgMHhlZTc3Nzc5OSwgMHhmNjdiN2I4
ZCwgMHhmZmYyZjIwZCwgMHhkNjZiNmJiZCwKKyAgICAweGRlNmY2ZmIxLCAweDkxYzVjNTU0LCAw
eDYwMzAzMDUwLCAweDAyMDEwMTAzLCAweGNlNjc2N2E5LCAweDU2MmIyYjdkLAorICAgIDB4ZTdm
ZWZlMTksIDB4YjVkN2Q3NjIsIDB4NGRhYmFiZTYsIDB4ZWM3Njc2OWEsIDB4OGZjYWNhNDUsIDB4
MWY4MjgyOWQsCisgICAgMHg4OWM5Yzk0MCwgMHhmYTdkN2Q4NywgMHhlZmZhZmExNSwgMHhiMjU5
NTllYiwgMHg4ZTQ3NDdjOSwgMHhmYmYwZjAwYiwKKyAgICAweDQxYWRhZGVjLCAweGIzZDRkNDY3
LCAweDVmYTJhMmZkLCAweDQ1YWZhZmVhLCAweDIzOWM5Y2JmLCAweDUzYTRhNGY3LAorICAgIDB4
ZTQ3MjcyOTYsIDB4OWJjMGMwNWIsIDB4NzViN2I3YzIsIDB4ZTFmZGZkMWMsIDB4M2Q5MzkzYWUs
IDB4NGMyNjI2NmEsCisgICAgMHg2YzM2MzY1YSwgMHg3ZTNmM2Y0MSwgMHhmNWY3ZjcwMiwgMHg4
M2NjY2M0ZiwgMHg2ODM0MzQ1YywgMHg1MWE1YTVmNCwKKyAgICAweGQxZTVlNTM0LCAweGY5ZjFm
MTA4LCAweGUyNzE3MTkzLCAweGFiZDhkODczLCAweDYyMzEzMTUzLCAweDJhMTUxNTNmLAorICAg
IDB4MDgwNDA0MGMsIDB4OTVjN2M3NTIsIDB4NDYyMzIzNjUsIDB4OWRjM2MzNWUsIDB4MzAxODE4
MjgsIDB4Mzc5Njk2YTEsCisgICAgMHgwYTA1MDUwZiwgMHgyZjlhOWFiNSwgMHgwZTA3MDcwOSwg
MHgyNDEyMTIzNiwgMHgxYjgwODA5YiwgMHhkZmUyZTIzZCwKKyAgICAweGNkZWJlYjI2LCAweDRl
MjcyNzY5LCAweDdmYjJiMmNkLCAweGVhNzU3NTlmLCAweDEyMDkwOTFiLCAweDFkODM4MzllLAor
ICAgIDB4NTgyYzJjNzQsIDB4MzQxYTFhMmUsIDB4MzYxYjFiMmQsIDB4ZGM2ZTZlYjIsIDB4YjQ1
YTVhZWUsIDB4NWJhMGEwZmIsCisgICAgMHhhNDUyNTJmNiwgMHg3NjNiM2I0ZCwgMHhiN2Q2ZDY2
MSwgMHg3ZGIzYjNjZSwgMHg1MjI5Mjk3YiwgMHhkZGUzZTMzZSwKKyAgICAweDVlMmYyZjcxLCAw
eDEzODQ4NDk3LCAweGE2NTM1M2Y1LCAweGI5ZDFkMTY4LCAweDAwMDAwMDAwLCAweGMxZWRlZDJj
LAorICAgIDB4NDAyMDIwNjAsIDB4ZTNmY2ZjMWYsIDB4NzliMWIxYzgsIDB4YjY1YjViZWQsIDB4
ZDQ2YTZhYmUsIDB4OGRjYmNiNDYsCisgICAgMHg2N2JlYmVkOSwgMHg3MjM5Mzk0YiwgMHg5NDRh
NGFkZSwgMHg5ODRjNGNkNCwgMHhiMDU4NThlOCwgMHg4NWNmY2Y0YSwKKyAgICAweGJiZDBkMDZi
LCAweGM1ZWZlZjJhLCAweDRmYWFhYWU1LCAweGVkZmJmYjE2LCAweDg2NDM0M2M1LCAweDlhNGQ0
ZGQ3LAorICAgIDB4NjYzMzMzNTUsIDB4MTE4NTg1OTQsIDB4OGE0NTQ1Y2YsIDB4ZTlmOWY5MTAs
IDB4MDQwMjAyMDYsIDB4ZmU3ZjdmODEsCisgICAgMHhhMDUwNTBmMCwgMHg3ODNjM2M0NCwgMHgy
NTlmOWZiYSwgMHg0YmE4YThlMywgMHhhMjUxNTFmMywgMHg1ZGEzYTNmZSwKKyAgICAweDgwNDA0
MGMwLCAweDA1OGY4ZjhhLCAweDNmOTI5MmFkLCAweDIxOWQ5ZGJjLCAweDcwMzgzODQ4LCAweGYx
ZjVmNTA0LAorICAgIDB4NjNiY2JjZGYsIDB4NzdiNmI2YzEsIDB4YWZkYWRhNzUsIDB4NDIyMTIx
NjMsIDB4MjAxMDEwMzAsIDB4ZTVmZmZmMWEsCisgICAgMHhmZGYzZjMwZSwgMHhiZmQyZDI2ZCwg
MHg4MWNkY2Q0YywgMHgxODBjMGMxNCwgMHgyNjEzMTMzNSwgMHhjM2VjZWMyZiwKKyAgICAweGJl
NWY1ZmUxLCAweDM1OTc5N2EyLCAweDg4NDQ0NGNjLCAweDJlMTcxNzM5LCAweDkzYzRjNDU3LCAw
eDU1YTdhN2YyLAorICAgIDB4ZmM3ZTdlODIsIDB4N2EzZDNkNDcsIDB4Yzg2NDY0YWMsIDB4YmE1
ZDVkZTcsIDB4MzIxOTE5MmIsIDB4ZTY3MzczOTUsCisgICAgMHhjMDYwNjBhMCwgMHgxOTgxODE5
OCwgMHg5ZTRmNGZkMSwgMHhhM2RjZGM3ZiwgMHg0NDIyMjI2NiwgMHg1NDJhMmE3ZSwKKyAgICAw
eDNiOTA5MGFiLCAweDBiODg4ODgzLCAweDhjNDY0NmNhLCAweGM3ZWVlZTI5LCAweDZiYjhiOGQz
LCAweDI4MTQxNDNjLAorICAgIDB4YTdkZWRlNzksIDB4YmM1ZTVlZTIsIDB4MTYwYjBiMWQsIDB4
YWRkYmRiNzYsIDB4ZGJlMGUwM2IsIDB4NjQzMjMyNTYsCisgICAgMHg3NDNhM2E0ZSwgMHgxNDBh
MGExZSwgMHg5MjQ5NDlkYiwgMHgwYzA2MDYwYSwgMHg0ODI0MjQ2YywgMHhiODVjNWNlNCwKKyAg
ICAweDlmYzJjMjVkLCAweGJkZDNkMzZlLCAweDQzYWNhY2VmLCAweGM0NjI2MmE2LCAweDM5OTE5
MWE4LCAweDMxOTU5NWE0LAorICAgIDB4ZDNlNGU0MzcsIDB4ZjI3OTc5OGIsIDB4ZDVlN2U3MzIs
IDB4OGJjOGM4NDMsIDB4NmUzNzM3NTksIDB4ZGE2ZDZkYjcsCisgICAgMHgwMThkOGQ4YywgMHhi
MWQ1ZDU2NCwgMHg5YzRlNGVkMiwgMHg0OWE5YTllMCwgMHhkODZjNmNiNCwgMHhhYzU2NTZmYSwK
KyAgICAweGYzZjRmNDA3LCAweGNmZWFlYTI1LCAweGNhNjU2NWFmLCAweGY0N2E3YThlLCAweDQ3
YWVhZWU5LCAweDEwMDgwODE4LAorICAgIDB4NmZiYWJhZDUsIDB4ZjA3ODc4ODgsIDB4NGEyNTI1
NmYsIDB4NWMyZTJlNzIsIDB4MzgxYzFjMjQsIDB4NTdhNmE2ZjEsCisgICAgMHg3M2I0YjRjNywg
MHg5N2M2YzY1MSwgMHhjYmU4ZTgyMywgMHhhMWRkZGQ3YywgMHhlODc0NzQ5YywgMHgzZTFmMWYy
MSwKKyAgICAweDk2NGI0YmRkLCAweDYxYmRiZGRjLCAweDBkOGI4Yjg2LCAweDBmOGE4YTg1LCAw
eGUwNzA3MDkwLCAweDdjM2UzZTQyLAorICAgIDB4NzFiNWI1YzQsIDB4Y2M2NjY2YWEsIDB4OTA0
ODQ4ZDgsIDB4MDYwMzAzMDUsIDB4ZjdmNmY2MDEsIDB4MWMwZTBlMTIsCisgICAgMHhjMjYxNjFh
MywgMHg2YTM1MzU1ZiwgMHhhZTU3NTdmOSwgMHg2OWI5YjlkMCwgMHgxNzg2ODY5MSwgMHg5OWMx
YzE1OCwKKyAgICAweDNhMWQxZDI3LCAweDI3OWU5ZWI5LCAweGQ5ZTFlMTM4LCAweGViZjhmODEz
LCAweDJiOTg5OGIzLCAweDIyMTExMTMzLAorICAgIDB4ZDI2OTY5YmIsIDB4YTlkOWQ5NzAsIDB4
MDc4ZThlODksIDB4MzM5NDk0YTcsIDB4MmQ5YjliYjYsIDB4M2MxZTFlMjIsCisgICAgMHgxNTg3
ODc5MiwgMHhjOWU5ZTkyMCwgMHg4N2NlY2U0OSwgMHhhYTU1NTVmZiwgMHg1MDI4Mjg3OCwgMHhh
NWRmZGY3YSwKKyAgICAweDAzOGM4YzhmLCAweDU5YTFhMWY4LCAweDA5ODk4OTgwLCAweDFhMGQw
ZDE3LCAweDY1YmZiZmRhLCAweGQ3ZTZlNjMxLAorICAgIDB4ODQ0MjQyYzYsIDB4ZDA2ODY4Yjgs
IDB4ODI0MTQxYzMsIDB4Mjk5OTk5YjAsIDB4NWEyZDJkNzcsIDB4MWUwZjBmMTEsCisgICAgMHg3
YmIwYjBjYiwgMHhhODU0NTRmYywgMHg2ZGJiYmJkNiwgMHgyYzE2MTYzYSwKK307CisKK2NvbnN0
ZXhwciB1aW50MzJfdCB0ZTFbMjU2XSA9IHsKKyAgICAweGE1YzY2MzYzLCAweDg0Zjg3YzdjLCAw
eDk5ZWU3Nzc3LCAweDhkZjY3YjdiLCAweDBkZmZmMmYyLCAweGJkZDY2YjZiLAorICAgIDB4YjFk
ZTZmNmYsIDB4NTQ5MWM1YzUsIDB4NTA2MDMwMzAsIDB4MDMwMjAxMDEsIDB4YTljZTY3NjcsIDB4
N2Q1NjJiMmIsCisgICAgMHgxOWU3ZmVmZSwgMHg2MmI1ZDdkNywgMHhlNjRkYWJhYiwgMHg5YWVj
NzY3NiwgMHg0NThmY2FjYSwgMHg5ZDFmODI4MiwKKyAgICAweDQwODljOWM5LCAweDg3ZmE3ZDdk
LCAweDE1ZWZmYWZhLCAweGViYjI1OTU5LCAweGM5OGU0NzQ3LCAweDBiZmJmMGYwLAorICAgIDB4
ZWM0MWFkYWQsIDB4NjdiM2Q0ZDQsIDB4ZmQ1ZmEyYTIsIDB4ZWE0NWFmYWYsIDB4YmYyMzljOWMs
IDB4Zjc1M2E0YTQsCisgICAgMHg5NmU0NzI3MiwgMHg1YjliYzBjMCwgMHhjMjc1YjdiNywgMHgx
Y2UxZmRmZCwgMHhhZTNkOTM5MywgMHg2YTRjMjYyNiwKKyAgICAweDVhNmMzNjM2LCAweDQxN2Uz
ZjNmLCAweDAyZjVmN2Y3LCAweDRmODNjY2NjLCAweDVjNjgzNDM0LCAweGY0NTFhNWE1LAorICAg
IDB4MzRkMWU1ZTUsIDB4MDhmOWYxZjEsIDB4OTNlMjcxNzEsIDB4NzNhYmQ4ZDgsIDB4NTM2MjMx
MzEsIDB4M2YyYTE1MTUsCisgICAgMHgwYzA4MDQwNCwgMHg1Mjk1YzdjNywgMHg2NTQ2MjMyMywg
MHg1ZTlkYzNjMywgMHgyODMwMTgxOCwgMHhhMTM3OTY5NiwKKyAgICAweDBmMGEwNTA1LCAweGI1
MmY5YTlhLCAweDA5MGUwNzA3LCAweDM2MjQxMjEyLCAweDliMWI4MDgwLCAweDNkZGZlMmUyLAor
ICAgIDB4MjZjZGViZWIsIDB4Njk0ZTI3MjcsIDB4Y2Q3ZmIyYjIsIDB4OWZlYTc1NzUsIDB4MWIx
MjA5MDksIDB4OWUxZDgzODMsCisgICAgMHg3NDU4MmMyYywgMHgyZTM0MWExYSwgMHgyZDM2MWIx
YiwgMHhiMmRjNmU2ZSwgMHhlZWI0NWE1YSwgMHhmYjViYTBhMCwKKyAgICAweGY2YTQ1MjUyLCAw
eDRkNzYzYjNiLCAweDYxYjdkNmQ2LCAweGNlN2RiM2IzLCAweDdiNTIyOTI5LCAweDNlZGRlM2Uz
LAorICAgIDB4NzE1ZTJmMmYsIDB4OTcxMzg0ODQsIDB4ZjVhNjUzNTMsIDB4NjhiOWQxZDEsIDB4
MDAwMDAwMDAsIDB4MmNjMWVkZWQsCisgICAgMHg2MDQwMjAyMCwgMHgxZmUzZmNmYywgMHhjODc5
YjFiMSwgMHhlZGI2NWI1YiwgMHhiZWQ0NmE2YSwgMHg0NjhkY2JjYiwKKyAgICAweGQ5NjdiZWJl
LCAweDRiNzIzOTM5LCAweGRlOTQ0YTRhLCAweGQ0OTg0YzRjLCAweGU4YjA1ODU4LCAweDRhODVj
ZmNmLAorICAgIDB4NmJiYmQwZDAsIDB4MmFjNWVmZWYsIDB4ZTU0ZmFhYWEsIDB4MTZlZGZiZmIs
IDB4YzU4NjQzNDMsIDB4ZDc5YTRkNGQsCisgICAgMHg1NTY2MzMzMywgMHg5NDExODU4NSwgMHhj
ZjhhNDU0NSwgMHgxMGU5ZjlmOSwgMHgwNjA0MDIwMiwgMHg4MWZlN2Y3ZiwKKyAgICAweGYwYTA1
MDUwLCAweDQ0NzgzYzNjLCAweGJhMjU5ZjlmLCAweGUzNGJhOGE4LCAweGYzYTI1MTUxLCAweGZl
NWRhM2EzLAorICAgIDB4YzA4MDQwNDAsIDB4OGEwNThmOGYsIDB4YWQzZjkyOTIsIDB4YmMyMTlk
OWQsIDB4NDg3MDM4MzgsIDB4MDRmMWY1ZjUsCisgICAgMHhkZjYzYmNiYywgMHhjMTc3YjZiNiwg
MHg3NWFmZGFkYSwgMHg2MzQyMjEyMSwgMHgzMDIwMTAxMCwgMHgxYWU1ZmZmZiwKKyAgICAweDBl
ZmRmM2YzLCAweDZkYmZkMmQyLCAweDRjODFjZGNkLCAweDE0MTgwYzBjLCAweDM1MjYxMzEzLCAw
eDJmYzNlY2VjLAorICAgIDB4ZTFiZTVmNWYsIDB4YTIzNTk3OTcsIDB4Y2M4ODQ0NDQsIDB4Mzky
ZTE3MTcsIDB4NTc5M2M0YzQsIDB4ZjI1NWE3YTcsCisgICAgMHg4MmZjN2U3ZSwgMHg0NzdhM2Qz
ZCwgMHhhY2M4NjQ2NCwgMHhlN2JhNWQ1ZCwgMHgyYjMyMTkxOSwgMHg5NWU2NzM3MywKKyAgICAw
eGEwYzA2MDYwLCAweDk4MTk4MTgxLCAweGQxOWU0ZjRmLCAweDdmYTNkY2RjLCAweDY2NDQyMjIy
LCAweDdlNTQyYTJhLAorICAgIDB4YWIzYjkwOTAsIDB4ODMwYjg4ODgsIDB4Y2E4YzQ2NDYsIDB4
MjljN2VlZWUsIDB4ZDM2YmI4YjgsIDB4M2MyODE0MTQsCisgICAgMHg3OWE3ZGVkZSwgMHhlMmJj
NWU1ZSwgMHgxZDE2MGIwYiwgMHg3NmFkZGJkYiwgMHgzYmRiZTBlMCwgMHg1NjY0MzIzMiwKKyAg
ICAweDRlNzQzYTNhLCAweDFlMTQwYTBhLCAweGRiOTI0OTQ5LCAweDBhMGMwNjA2LCAweDZjNDgy
NDI0LCAweGU0Yjg1YzVjLAorICAgIDB4NWQ5ZmMyYzIsIDB4NmViZGQzZDMsIDB4ZWY0M2FjYWMs
IDB4YTZjNDYyNjIsIDB4YTgzOTkxOTEsIDB4YTQzMTk1OTUsCisgICAgMHgzN2QzZTRlNCwgMHg4
YmYyNzk3OSwgMHgzMmQ1ZTdlNywgMHg0MzhiYzhjOCwgMHg1OTZlMzczNywgMHhiN2RhNmQ2ZCwK
KyAgICAweDhjMDE4ZDhkLCAweDY0YjFkNWQ1LCAweGQyOWM0ZTRlLCAweGUwNDlhOWE5LCAweGI0
ZDg2YzZjLCAweGZhYWM1NjU2LAorICAgIDB4MDdmM2Y0ZjQsIDB4MjVjZmVhZWEsIDB4YWZjYTY1
NjUsIDB4OGVmNDdhN2EsIDB4ZTk0N2FlYWUsIDB4MTgxMDA4MDgsCisgICAgMHhkNTZmYmFiYSwg
MHg4OGYwNzg3OCwgMHg2ZjRhMjUyNSwgMHg3MjVjMmUyZSwgMHgyNDM4MWMxYywgMHhmMTU3YTZh
NiwKKyAgICAweGM3NzNiNGI0LCAweDUxOTdjNmM2LCAweDIzY2JlOGU4LCAweDdjYTFkZGRkLCAw
eDljZTg3NDc0LCAweDIxM2UxZjFmLAorICAgIDB4ZGQ5NjRiNGIsIDB4ZGM2MWJkYmQsIDB4ODYw
ZDhiOGIsIDB4ODUwZjhhOGEsIDB4OTBlMDcwNzAsIDB4NDI3YzNlM2UsCisgICAgMHhjNDcxYjVi
NSwgMHhhYWNjNjY2NiwgMHhkODkwNDg0OCwgMHgwNTA2MDMwMywgMHgwMWY3ZjZmNiwgMHgxMjFj
MGUwZSwKKyAgICAweGEzYzI2MTYxLCAweDVmNmEzNTM1LCAweGY5YWU1NzU3LCAweGQwNjliOWI5
LCAweDkxMTc4Njg2LCAweDU4OTljMWMxLAorICAgIDB4MjczYTFkMWQsIDB4YjkyNzllOWUsIDB4
MzhkOWUxZTEsIDB4MTNlYmY4ZjgsIDB4YjMyYjk4OTgsIDB4MzMyMjExMTEsCisgICAgMHhiYmQy
Njk2OSwgMHg3MGE5ZDlkOSwgMHg4OTA3OGU4ZSwgMHhhNzMzOTQ5NCwgMHhiNjJkOWI5YiwgMHgy
MjNjMWUxZSwKKyAgICAweDkyMTU4Nzg3LCAweDIwYzllOWU5LCAweDQ5ODdjZWNlLCAweGZmYWE1
NTU1LCAweDc4NTAyODI4LCAweDdhYTVkZmRmLAorICAgIDB4OGYwMzhjOGMsIDB4Zjg1OWExYTEs
IDB4ODAwOTg5ODksIDB4MTcxYTBkMGQsIDB4ZGE2NWJmYmYsIDB4MzFkN2U2ZTYsCisgICAgMHhj
Njg0NDI0MiwgMHhiOGQwNjg2OCwgMHhjMzgyNDE0MSwgMHhiMDI5OTk5OSwgMHg3NzVhMmQyZCwg
MHgxMTFlMGYwZiwKKyAgICAweGNiN2JiMGIwLCAweGZjYTg1NDU0LCAweGQ2NmRiYmJiLCAweDNh
MmMxNjE2LAorfTsKKworY29uc3RleHByIHVpbnQzMl90IHRlMlsyNTZdID0geworICAgIDB4NjNh
NWM2NjMsIDB4N2M4NGY4N2MsIDB4Nzc5OWVlNzcsIDB4N2I4ZGY2N2IsIDB4ZjIwZGZmZjIsIDB4
NmJiZGQ2NmIsCisgICAgMHg2ZmIxZGU2ZiwgMHhjNTU0OTFjNSwgMHgzMDUwNjAzMCwgMHgwMTAz
MDIwMSwgMHg2N2E5Y2U2NywgMHgyYjdkNTYyYiwKKyAgICAweGZlMTllN2ZlLCAweGQ3NjJiNWQ3
LCAweGFiZTY0ZGFiLCAweDc2OWFlYzc2LCAweGNhNDU4ZmNhLCAweDgyOWQxZjgyLAorICAgIDB4
Yzk0MDg5YzksIDB4N2Q4N2ZhN2QsIDB4ZmExNWVmZmEsIDB4NTllYmIyNTksIDB4NDdjOThlNDcs
IDB4ZjAwYmZiZjAsCisgICAgMHhhZGVjNDFhZCwgMHhkNDY3YjNkNCwgMHhhMmZkNWZhMiwgMHhh
ZmVhNDVhZiwgMHg5Y2JmMjM5YywgMHhhNGY3NTNhNCwKKyAgICAweDcyOTZlNDcyLCAweGMwNWI5
YmMwLCAweGI3YzI3NWI3LCAweGZkMWNlMWZkLCAweDkzYWUzZDkzLCAweDI2NmE0YzI2LAorICAg
IDB4MzY1YTZjMzYsIDB4M2Y0MTdlM2YsIDB4ZjcwMmY1ZjcsIDB4Y2M0ZjgzY2MsIDB4MzQ1YzY4
MzQsIDB4YTVmNDUxYTUsCisgICAgMHhlNTM0ZDFlNSwgMHhmMTA4ZjlmMSwgMHg3MTkzZTI3MSwg
MHhkODczYWJkOCwgMHgzMTUzNjIzMSwgMHgxNTNmMmExNSwKKyAgICAweDA0MGMwODA0LCAweGM3
NTI5NWM3LCAweDIzNjU0NjIzLCAweGMzNWU5ZGMzLCAweDE4MjgzMDE4LCAweDk2YTEzNzk2LAor
ICAgIDB4MDUwZjBhMDUsIDB4OWFiNTJmOWEsIDB4MDcwOTBlMDcsIDB4MTIzNjI0MTIsIDB4ODA5
YjFiODAsIDB4ZTIzZGRmZTIsCisgICAgMHhlYjI2Y2RlYiwgMHgyNzY5NGUyNywgMHhiMmNkN2Zi
MiwgMHg3NTlmZWE3NSwgMHgwOTFiMTIwOSwgMHg4MzllMWQ4MywKKyAgICAweDJjNzQ1ODJjLCAw
eDFhMmUzNDFhLCAweDFiMmQzNjFiLCAweDZlYjJkYzZlLCAweDVhZWViNDVhLCAweGEwZmI1YmEw
LAorICAgIDB4NTJmNmE0NTIsIDB4M2I0ZDc2M2IsIDB4ZDY2MWI3ZDYsIDB4YjNjZTdkYjMsIDB4
Mjk3YjUyMjksIDB4ZTMzZWRkZTMsCisgICAgMHgyZjcxNWUyZiwgMHg4NDk3MTM4NCwgMHg1M2Y1
YTY1MywgMHhkMTY4YjlkMSwgMHgwMDAwMDAwMCwgMHhlZDJjYzFlZCwKKyAgICAweDIwNjA0MDIw
LCAweGZjMWZlM2ZjLCAweGIxYzg3OWIxLCAweDViZWRiNjViLCAweDZhYmVkNDZhLCAweGNiNDY4
ZGNiLAorICAgIDB4YmVkOTY3YmUsIDB4Mzk0YjcyMzksIDB4NGFkZTk0NGEsIDB4NGNkNDk4NGMs
IDB4NThlOGIwNTgsIDB4Y2Y0YTg1Y2YsCisgICAgMHhkMDZiYmJkMCwgMHhlZjJhYzVlZiwgMHhh
YWU1NGZhYSwgMHhmYjE2ZWRmYiwgMHg0M2M1ODY0MywgMHg0ZGQ3OWE0ZCwKKyAgICAweDMzNTU2
NjMzLCAweDg1OTQxMTg1LCAweDQ1Y2Y4YTQ1LCAweGY5MTBlOWY5LCAweDAyMDYwNDAyLCAweDdm
ODFmZTdmLAorICAgIDB4NTBmMGEwNTAsIDB4M2M0NDc4M2MsIDB4OWZiYTI1OWYsIDB4YThlMzRi
YTgsIDB4NTFmM2EyNTEsIDB4YTNmZTVkYTMsCisgICAgMHg0MGMwODA0MCwgMHg4ZjhhMDU4Ziwg
MHg5MmFkM2Y5MiwgMHg5ZGJjMjE5ZCwgMHgzODQ4NzAzOCwgMHhmNTA0ZjFmNSwKKyAgICAweGJj
ZGY2M2JjLCAweGI2YzE3N2I2LCAweGRhNzVhZmRhLCAweDIxNjM0MjIxLCAweDEwMzAyMDEwLCAw
eGZmMWFlNWZmLAorICAgIDB4ZjMwZWZkZjMsIDB4ZDI2ZGJmZDIsIDB4Y2Q0YzgxY2QsIDB4MGMx
NDE4MGMsIDB4MTMzNTI2MTMsIDB4ZWMyZmMzZWMsCisgICAgMHg1ZmUxYmU1ZiwgMHg5N2EyMzU5
NywgMHg0NGNjODg0NCwgMHgxNzM5MmUxNywgMHhjNDU3OTNjNCwgMHhhN2YyNTVhNywKKyAgICAw
eDdlODJmYzdlLCAweDNkNDc3YTNkLCAweDY0YWNjODY0LCAweDVkZTdiYTVkLCAweDE5MmIzMjE5
LCAweDczOTVlNjczLAorICAgIDB4NjBhMGMwNjAsIDB4ODE5ODE5ODEsIDB4NGZkMTllNGYsIDB4
ZGM3ZmEzZGMsIDB4MjI2NjQ0MjIsIDB4MmE3ZTU0MmEsCisgICAgMHg5MGFiM2I5MCwgMHg4ODgz
MGI4OCwgMHg0NmNhOGM0NiwgMHhlZTI5YzdlZSwgMHhiOGQzNmJiOCwgMHgxNDNjMjgxNCwKKyAg
ICAweGRlNzlhN2RlLCAweDVlZTJiYzVlLCAweDBiMWQxNjBiLCAweGRiNzZhZGRiLCAweGUwM2Jk
YmUwLCAweDMyNTY2NDMyLAorICAgIDB4M2E0ZTc0M2EsIDB4MGExZTE0MGEsIDB4NDlkYjkyNDks
IDB4MDYwYTBjMDYsIDB4MjQ2YzQ4MjQsIDB4NWNlNGI4NWMsCisgICAgMHhjMjVkOWZjMiwgMHhk
MzZlYmRkMywgMHhhY2VmNDNhYywgMHg2MmE2YzQ2MiwgMHg5MWE4Mzk5MSwgMHg5NWE0MzE5NSwK
KyAgICAweGU0MzdkM2U0LCAweDc5OGJmMjc5LCAweGU3MzJkNWU3LCAweGM4NDM4YmM4LCAweDM3
NTk2ZTM3LCAweDZkYjdkYTZkLAorICAgIDB4OGQ4YzAxOGQsIDB4ZDU2NGIxZDUsIDB4NGVkMjlj
NGUsIDB4YTllMDQ5YTksIDB4NmNiNGQ4NmMsIDB4NTZmYWFjNTYsCisgICAgMHhmNDA3ZjNmNCwg
MHhlYTI1Y2ZlYSwgMHg2NWFmY2E2NSwgMHg3YThlZjQ3YSwgMHhhZWU5NDdhZSwgMHgwODE4MTAw
OCwKKyAgICAweGJhZDU2ZmJhLCAweDc4ODhmMDc4LCAweDI1NmY0YTI1LCAweDJlNzI1YzJlLCAw
eDFjMjQzODFjLCAweGE2ZjE1N2E2LAorICAgIDB4YjRjNzczYjQsIDB4YzY1MTk3YzYsIDB4ZTgy
M2NiZTgsIDB4ZGQ3Y2ExZGQsIDB4NzQ5Y2U4NzQsIDB4MWYyMTNlMWYsCisgICAgMHg0YmRkOTY0
YiwgMHhiZGRjNjFiZCwgMHg4Yjg2MGQ4YiwgMHg4YTg1MGY4YSwgMHg3MDkwZTA3MCwgMHgzZTQy
N2MzZSwKKyAgICAweGI1YzQ3MWI1LCAweDY2YWFjYzY2LCAweDQ4ZDg5MDQ4LCAweDAzMDUwNjAz
LCAweGY2MDFmN2Y2LCAweDBlMTIxYzBlLAorICAgIDB4NjFhM2MyNjEsIDB4MzU1ZjZhMzUsIDB4
NTdmOWFlNTcsIDB4YjlkMDY5YjksIDB4ODY5MTE3ODYsIDB4YzE1ODk5YzEsCisgICAgMHgxZDI3
M2ExZCwgMHg5ZWI5Mjc5ZSwgMHhlMTM4ZDllMSwgMHhmODEzZWJmOCwgMHg5OGIzMmI5OCwgMHgx
MTMzMjIxMSwKKyAgICAweDY5YmJkMjY5LCAweGQ5NzBhOWQ5LCAweDhlODkwNzhlLCAweDk0YTcz
Mzk0LCAweDliYjYyZDliLCAweDFlMjIzYzFlLAorICAgIDB4ODc5MjE1ODcsIDB4ZTkyMGM5ZTks
IDB4Y2U0OTg3Y2UsIDB4NTVmZmFhNTUsIDB4Mjg3ODUwMjgsIDB4ZGY3YWE1ZGYsCisgICAgMHg4
YzhmMDM4YywgMHhhMWY4NTlhMSwgMHg4OTgwMDk4OSwgMHgwZDE3MWEwZCwgMHhiZmRhNjViZiwg
MHhlNjMxZDdlNiwKKyAgICAweDQyYzY4NDQyLCAweDY4YjhkMDY4LCAweDQxYzM4MjQxLCAweDk5
YjAyOTk5LCAweDJkNzc1YTJkLCAweDBmMTExZTBmLAorICAgIDB4YjBjYjdiYjAsIDB4NTRmY2E4
NTQsIDB4YmJkNjZkYmIsIDB4MTYzYTJjMTYsCit9OworCitjb25zdGV4cHIgdWludDMyX3QgdGUz
WzI1Nl0gPSB7CisgICAgMHg2MzYzYTVjNiwgMHg3YzdjODRmOCwgMHg3Nzc3OTllZSwgMHg3Yjdi
OGRmNiwgMHhmMmYyMGRmZiwgMHg2YjZiYmRkNiwKKyAgICAweDZmNmZiMWRlLCAweGM1YzU1NDkx
LCAweDMwMzA1MDYwLCAweDAxMDEwMzAyLCAweDY3NjdhOWNlLCAweDJiMmI3ZDU2LAorICAgIDB4
ZmVmZTE5ZTcsIDB4ZDdkNzYyYjUsIDB4YWJhYmU2NGQsIDB4NzY3NjlhZWMsIDB4Y2FjYTQ1OGYs
IDB4ODI4MjlkMWYsCisgICAgMHhjOWM5NDA4OSwgMHg3ZDdkODdmYSwgMHhmYWZhMTVlZiwgMHg1
OTU5ZWJiMiwgMHg0NzQ3Yzk4ZSwgMHhmMGYwMGJmYiwKKyAgICAweGFkYWRlYzQxLCAweGQ0ZDQ2
N2IzLCAweGEyYTJmZDVmLCAweGFmYWZlYTQ1LCAweDljOWNiZjIzLCAweGE0YTRmNzUzLAorICAg
IDB4NzI3Mjk2ZTQsIDB4YzBjMDViOWIsIDB4YjdiN2MyNzUsIDB4ZmRmZDFjZTEsIDB4OTM5M2Fl
M2QsIDB4MjYyNjZhNGMsCisgICAgMHgzNjM2NWE2YywgMHgzZjNmNDE3ZSwgMHhmN2Y3MDJmNSwg
MHhjY2NjNGY4MywgMHgzNDM0NWM2OCwgMHhhNWE1ZjQ1MSwKKyAgICAweGU1ZTUzNGQxLCAweGYx
ZjEwOGY5LCAweDcxNzE5M2UyLCAweGQ4ZDg3M2FiLCAweDMxMzE1MzYyLCAweDE1MTUzZjJhLAor
ICAgIDB4MDQwNDBjMDgsIDB4YzdjNzUyOTUsIDB4MjMyMzY1NDYsIDB4YzNjMzVlOWQsIDB4MTgx
ODI4MzAsIDB4OTY5NmExMzcsCisgICAgMHgwNTA1MGYwYSwgMHg5YTlhYjUyZiwgMHgwNzA3MDkw
ZSwgMHgxMjEyMzYyNCwgMHg4MDgwOWIxYiwgMHhlMmUyM2RkZiwKKyAgICAweGViZWIyNmNkLCAw
eDI3Mjc2OTRlLCAweGIyYjJjZDdmLCAweDc1NzU5ZmVhLCAweDA5MDkxYjEyLCAweDgzODM5ZTFk
LAorICAgIDB4MmMyYzc0NTgsIDB4MWExYTJlMzQsIDB4MWIxYjJkMzYsIDB4NmU2ZWIyZGMsIDB4
NWE1YWVlYjQsIDB4YTBhMGZiNWIsCisgICAgMHg1MjUyZjZhNCwgMHgzYjNiNGQ3NiwgMHhkNmQ2
NjFiNywgMHhiM2IzY2U3ZCwgMHgyOTI5N2I1MiwgMHhlM2UzM2VkZCwKKyAgICAweDJmMmY3MTVl
LCAweDg0ODQ5NzEzLCAweDUzNTNmNWE2LCAweGQxZDE2OGI5LCAweDAwMDAwMDAwLCAweGVkZWQy
Y2MxLAorICAgIDB4MjAyMDYwNDAsIDB4ZmNmYzFmZTMsIDB4YjFiMWM4NzksIDB4NWI1YmVkYjYs
IDB4NmE2YWJlZDQsIDB4Y2JjYjQ2OGQsCisgICAgMHhiZWJlZDk2NywgMHgzOTM5NGI3MiwgMHg0
YTRhZGU5NCwgMHg0YzRjZDQ5OCwgMHg1ODU4ZThiMCwgMHhjZmNmNGE4NSwKKyAgICAweGQwZDA2
YmJiLCAweGVmZWYyYWM1LCAweGFhYWFlNTRmLCAweGZiZmIxNmVkLCAweDQzNDNjNTg2LCAweDRk
NGRkNzlhLAorICAgIDB4MzMzMzU1NjYsIDB4ODU4NTk0MTEsIDB4NDU0NWNmOGEsIDB4ZjlmOTEw
ZTksIDB4MDIwMjA2MDQsIDB4N2Y3ZjgxZmUsCisgICAgMHg1MDUwZjBhMCwgMHgzYzNjNDQ3OCwg
MHg5ZjlmYmEyNSwgMHhhOGE4ZTM0YiwgMHg1MTUxZjNhMiwgMHhhM2EzZmU1ZCwKKyAgICAweDQw
NDBjMDgwLCAweDhmOGY4YTA1LCAweDkyOTJhZDNmLCAweDlkOWRiYzIxLCAweDM4Mzg0ODcwLCAw
eGY1ZjUwNGYxLAorICAgIDB4YmNiY2RmNjMsIDB4YjZiNmMxNzcsIDB4ZGFkYTc1YWYsIDB4MjEy
MTYzNDIsIDB4MTAxMDMwMjAsIDB4ZmZmZjFhZTUsCisgICAgMHhmM2YzMGVmZCwgMHhkMmQyNmRi
ZiwgMHhjZGNkNGM4MSwgMHgwYzBjMTQxOCwgMHgxMzEzMzUyNiwgMHhlY2VjMmZjMywKKyAgICAw
eDVmNWZlMWJlLCAweDk3OTdhMjM1LCAweDQ0NDRjYzg4LCAweDE3MTczOTJlLCAweGM0YzQ1Nzkz
LCAweGE3YTdmMjU1LAorICAgIDB4N2U3ZTgyZmMsIDB4M2QzZDQ3N2EsIDB4NjQ2NGFjYzgsIDB4
NWQ1ZGU3YmEsIDB4MTkxOTJiMzIsIDB4NzM3Mzk1ZTYsCisgICAgMHg2MDYwYTBjMCwgMHg4MTgx
OTgxOSwgMHg0ZjRmZDE5ZSwgMHhkY2RjN2ZhMywgMHgyMjIyNjY0NCwgMHgyYTJhN2U1NCwKKyAg
ICAweDkwOTBhYjNiLCAweDg4ODg4MzBiLCAweDQ2NDZjYThjLCAweGVlZWUyOWM3LCAweGI4Yjhk
MzZiLCAweDE0MTQzYzI4LAorICAgIDB4ZGVkZTc5YTcsIDB4NWU1ZWUyYmMsIDB4MGIwYjFkMTYs
IDB4ZGJkYjc2YWQsIDB4ZTBlMDNiZGIsIDB4MzIzMjU2NjQsCisgICAgMHgzYTNhNGU3NCwgMHgw
YTBhMWUxNCwgMHg0OTQ5ZGI5MiwgMHgwNjA2MGEwYywgMHgyNDI0NmM0OCwgMHg1YzVjZTRiOCwK
KyAgICAweGMyYzI1ZDlmLCAweGQzZDM2ZWJkLCAweGFjYWNlZjQzLCAweDYyNjJhNmM0LCAweDkx
OTFhODM5LCAweDk1OTVhNDMxLAorICAgIDB4ZTRlNDM3ZDMsIDB4Nzk3OThiZjIsIDB4ZTdlNzMy
ZDUsIDB4YzhjODQzOGIsIDB4MzczNzU5NmUsIDB4NmQ2ZGI3ZGEsCisgICAgMHg4ZDhkOGMwMSwg
MHhkNWQ1NjRiMSwgMHg0ZTRlZDI5YywgMHhhOWE5ZTA0OSwgMHg2YzZjYjRkOCwgMHg1NjU2ZmFh
YywKKyAgICAweGY0ZjQwN2YzLCAweGVhZWEyNWNmLCAweDY1NjVhZmNhLCAweDdhN2E4ZWY0LCAw
eGFlYWVlOTQ3LCAweDA4MDgxODEwLAorICAgIDB4YmFiYWQ1NmYsIDB4Nzg3ODg4ZjAsIDB4MjUy
NTZmNGEsIDB4MmUyZTcyNWMsIDB4MWMxYzI0MzgsIDB4YTZhNmYxNTcsCisgICAgMHhiNGI0Yzc3
MywgMHhjNmM2NTE5NywgMHhlOGU4MjNjYiwgMHhkZGRkN2NhMSwgMHg3NDc0OWNlOCwgMHgxZjFm
MjEzZSwKKyAgICAweDRiNGJkZDk2LCAweGJkYmRkYzYxLCAweDhiOGI4NjBkLCAweDhhOGE4NTBm
LCAweDcwNzA5MGUwLCAweDNlM2U0MjdjLAorICAgIDB4YjViNWM0NzEsIDB4NjY2NmFhY2MsIDB4
NDg0OGQ4OTAsIDB4MDMwMzA1MDYsIDB4ZjZmNjAxZjcsIDB4MGUwZTEyMWMsCisgICAgMHg2MTYx
YTNjMiwgMHgzNTM1NWY2YSwgMHg1NzU3ZjlhZSwgMHhiOWI5ZDA2OSwgMHg4Njg2OTExNywgMHhj
MWMxNTg5OSwKKyAgICAweDFkMWQyNzNhLCAweDllOWViOTI3LCAweGUxZTEzOGQ5LCAweGY4Zjgx
M2ViLCAweDk4OThiMzJiLCAweDExMTEzMzIyLAorICAgIDB4Njk2OWJiZDIsIDB4ZDlkOTcwYTks
IDB4OGU4ZTg5MDcsIDB4OTQ5NGE3MzMsIDB4OWI5YmI2MmQsIDB4MWUxZTIyM2MsCisgICAgMHg4
Nzg3OTIxNSwgMHhlOWU5MjBjOSwgMHhjZWNlNDk4NywgMHg1NTU1ZmZhYSwgMHgyODI4Nzg1MCwg
MHhkZmRmN2FhNSwKKyAgICAweDhjOGM4ZjAzLCAweGExYTFmODU5LCAweDg5ODk4MDA5LCAweDBk
MGQxNzFhLCAweGJmYmZkYTY1LCAweGU2ZTYzMWQ3LAorICAgIDB4NDI0MmM2ODQsIDB4Njg2OGI4
ZDAsIDB4NDE0MWMzODIsIDB4OTk5OWIwMjksIDB4MmQyZDc3NWEsIDB4MGYwZjExMWUsCisgICAg
MHhiMGIwY2I3YiwgMHg1NDU0ZmNhOCwgMHhiYmJiZDY2ZCwgMHgxNjE2M2EyYywKK307CisKK3N0
cnVjdCBhbGlnbmFzKDE2KSB1NjR4MiB7CisgIGNvbnN0ZXhwciB1NjR4MigpIDogdnswLCAwfSB7
fTsKKyAgY29uc3RleHByIHU2NHgyKHVpbnQ2NF90IGhpLCB1aW50NjRfdCBsbykgOiB2e2xvLCBo
aX0ge30KKworICB1aW50NjRfdCB2WzJdOworfTsKKworLy8gU29mdHdhcmUgaW1wbGVtZW50YXRp
b24gb2YgdGhlIFZlY3RvcjEyOCBjbGFzcywgdXNpbmcgdWludDMyX3QKKy8vIGFzIGFuIHVuZGVy
bHlpbmcgdmVjdG9yIHJlZ2lzdGVyLgorLy8KK3N0cnVjdCBWZWN0b3IxMjggeworICBpbmxpbmUg
QUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgVmVjdG9yMTI4JiBv
cGVyYXRvcl49KAorICAgICAgY29uc3QgVmVjdG9yMTI4JiBvdGhlcikgeworICAgIHNbMF0gXj0g
b3RoZXIuc1swXTsKKyAgICBzWzFdIF49IG90aGVyLnNbMV07CisgICAgc1syXSBePSBvdGhlci5z
WzJdOworICAgIHNbM10gXj0gb3RoZXIuc1szXTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKwor
ICB1aW50MzJfdCBzWzRdOworfTsKKworaW5saW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJ
QlVURV9BTFdBWVNfSU5MSU5FIFZlY3RvcjEyOAorVmVjdG9yMTI4TG9hZChjb25zdCB2b2lkKiBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBmcm9tKSB7CisgIFZlY3RvcjEyOCByZXN1bHQ7
CisgIGNvbnN0IHVpbnQ4X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHNyYyA9Cisg
ICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcm9tKTsKKworICByZXN1bHQu
c1swXSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmNbMF0pIDw8IDI0IHwKKyAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjWzFdKSA8PCAxNiB8CisgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1syXSkgPDwgOCB8CisgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1szXSk7CisgIHJlc3VsdC5zWzFdID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHNyY1s0XSkgPDwgMjQgfAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHVpbnQzMl90PihzcmNbNV0pIDw8IDE2IHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oc3JjWzZdKSA8PCA4IHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oc3JjWzddKTsKKyAgcmVzdWx0LnNbMl0gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Jj
WzhdKSA8PCAyNCB8CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1s5
XSkgPDwgMTYgfAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmNbMTBd
KSA8PCA4IHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjWzExXSk7
CisgIHJlc3VsdC5zWzNdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1sxMl0pIDw8IDI0IHwK
KyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjWzEzXSkgPDwgMTYgfAor
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmNbMTRdKSA8PCA4IHwKKyAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjWzE1XSk7CisgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2lubGluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlT
X0lOTElORSB2b2lkIFZlY3RvcjEyOFN0b3JlKAorICAgIGNvbnN0IFZlY3RvcjEyOCYgdiwgdm9p
ZCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1QgdG8pIHsKKyAgdWludDhfdCogZHN0ID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odG8pOworICBkc3RbMF0gPSBzdGF0aWNfY2FzdDx1
aW50OF90Pih2LnNbMF0gPj4gMjQpOworICBkc3RbMV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2
LnNbMF0gPj4gMTYpOworICBkc3RbMl0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2LnNbMF0gPj4g
OCk7CisgIGRzdFszXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1swXSk7CisgIGRzdFs0XSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1sxXSA+PiAyNCk7CisgIGRzdFs1XSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHYuc1sxXSA+PiAxNik7CisgIGRzdFs2XSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHYuc1sxXSA+PiA4KTsKKyAgZHN0WzddID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odi5zWzFd
KTsKKyAgZHN0WzhdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odi5zWzJdID4+IDI0KTsKKyAgZHN0
WzldID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odi5zWzJdID4+IDE2KTsKKyAgZHN0WzEwXSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1syXSA+PiA4KTsKKyAgZHN0WzExXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHYuc1syXSk7CisgIGRzdFsxMl0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2LnNb
M10gPj4gMjQpOworICBkc3RbMTNdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odi5zWzNdID4+IDE2
KTsKKyAgZHN0WzE0XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1szXSA+PiA4KTsKKyAgZHN0
WzE1XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1szXSk7Cit9CisKKy8vIE9uZSByb3VuZCBv
ZiBBRVMuICJyb3VuZF9rZXkiIGlzIGEgcHVibGljIGNvbnN0YW50IGZvciBicmVha2luZyB0aGUK
Ky8vIHN5bW1ldHJ5IG9mIEFFUyAoZW5zdXJlcyBwcmV2aW91c2x5IGVxdWFsIGNvbHVtbnMgZGlm
ZmVyIGFmdGVyd2FyZHMpLgoraW5saW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9B
TFdBWVNfSU5MSU5FIFZlY3RvcjEyOAorQWVzUm91bmQoY29uc3QgVmVjdG9yMTI4JiBzdGF0ZSwg
Y29uc3QgVmVjdG9yMTI4JiByb3VuZF9rZXkpIHsKKyAgLy8gY2xhbmctZm9ybWF0IG9mZgorICBW
ZWN0b3IxMjggcmVzdWx0OworICByZXN1bHQuc1swXSA9IHJvdW5kX2tleS5zWzBdIF4KKyAgICAg
ICAgICAgICAgICB0ZTBbdWludDhfdChzdGF0ZS5zWzBdID4+IDI0KV0gXgorICAgICAgICAgICAg
ICAgIHRlMVt1aW50OF90KHN0YXRlLnNbMV0gPj4gMTYpXSBeCisgICAgICAgICAgICAgICAgdGUy
W3VpbnQ4X3Qoc3RhdGUuc1syXSA+PiA4KV0gXgorICAgICAgICAgICAgICAgIHRlM1t1aW50OF90
KHN0YXRlLnNbM10pXTsKKyAgcmVzdWx0LnNbMV0gPSByb3VuZF9rZXkuc1sxXSBeCisgICAgICAg
ICAgICAgICAgdGUwW3VpbnQ4X3Qoc3RhdGUuc1sxXSA+PiAyNCldIF4KKyAgICAgICAgICAgICAg
ICB0ZTFbdWludDhfdChzdGF0ZS5zWzJdID4+IDE2KV0gXgorICAgICAgICAgICAgICAgIHRlMlt1
aW50OF90KHN0YXRlLnNbM10gPj4gOCldIF4KKyAgICAgICAgICAgICAgICB0ZTNbdWludDhfdChz
dGF0ZS5zWzBdKV07CisgIHJlc3VsdC5zWzJdID0gcm91bmRfa2V5LnNbMl0gXgorICAgICAgICAg
ICAgICAgIHRlMFt1aW50OF90KHN0YXRlLnNbMl0gPj4gMjQpXSBeCisgICAgICAgICAgICAgICAg
dGUxW3VpbnQ4X3Qoc3RhdGUuc1szXSA+PiAxNildIF4KKyAgICAgICAgICAgICAgICB0ZTJbdWlu
dDhfdChzdGF0ZS5zWzBdID4+IDgpXSBeCisgICAgICAgICAgICAgICAgdGUzW3VpbnQ4X3Qoc3Rh
dGUuc1sxXSldOworICByZXN1bHQuc1szXSA9IHJvdW5kX2tleS5zWzNdIF4KKyAgICAgICAgICAg
ICAgICB0ZTBbdWludDhfdChzdGF0ZS5zWzNdID4+IDI0KV0gXgorICAgICAgICAgICAgICAgIHRl
MVt1aW50OF90KHN0YXRlLnNbMF0gPj4gMTYpXSBeCisgICAgICAgICAgICAgICAgdGUyW3VpbnQ4
X3Qoc3RhdGUuc1sxXSA+PiA4KV0gXgorICAgICAgICAgICAgICAgIHRlM1t1aW50OF90KHN0YXRl
LnNbMl0pXTsKKyAgcmV0dXJuIHJlc3VsdDsKKyAgLy8gY2xhbmctZm9ybWF0IG9uCit9CisKKy8v
IFJBTkRlbiA9IFJBTkRvbSBnZW5lcmF0b3Igb3IgYmVldHJvb3RzIGluIFN3aXNzIEdlcm1hbi4K
Ky8vICdTdHJvbmcnICh3ZWxsLWRpc3RyaWJ1dGVkLCB1bnByZWRpY3RhYmxlLCBiYWNrdHJhY2tp
bmctcmVzaXN0YW50KSByYW5kb20KKy8vIGdlbmVyYXRvciwgZmFzdGVyIGluIHNvbWUgYmVuY2ht
YXJrcyB0aGFuIHN0ZDo6bXQxOTkzN182NCBhbmQgcGNnNjRfYzMyLgorLy8KKy8vIEhpZ2gtbGV2
ZWwgc3VtbWFyeToKKy8vIDEpIFJldmVyaWUgKHNlZSAiQSBSb2J1c3QgYW5kIFNwb25nZS1MaWtl
IFBSTkcgd2l0aCBJbXByb3ZlZCBFZmZpY2llbmN5IikgaXMKKy8vICAgIGEgc3BvbmdlLWxpa2Ug
cmFuZG9tIGdlbmVyYXRvciB0aGF0IHJlcXVpcmVzIGEgY3J5cHRvZ3JhcGhpYyBwZXJtdXRhdGlv
bi4KKy8vICAgIEl0IGltcHJvdmVzIHVwb24gIlByb3ZhYmx5IFJvYnVzdCBTcG9uZ2UtQmFzZWQg
UFJOR3MgYW5kIEtERnMiIGJ5CisvLyAgICBhY2hpZXZpbmcgYmFja3RyYWNraW5nIHJlc2lzdGFu
Y2Ugd2l0aCBvbmx5IG9uZSBQZXJtdXRlKCkgcGVyIGJ1ZmZlci4KKy8vCisvLyAyKSAiU2ltcGly
YSB2MjogQSBGYW1pbHkgb2YgRWZmaWNpZW50IFBlcm11dGF0aW9ucyBVc2luZyB0aGUgQUVTIFJv
dW5kCisvLyAgICBGdW5jdGlvbiIgY29uc3RydWN0cyB1cCB0byAxMDI0LWJpdCBwZXJtdXRhdGlv
bnMgdXNpbmcgYW4gaW1wcm92ZWQKKy8vICAgIEdlbmVyYWxpemVkIEZlaXN0ZWwgbmV0d29yayB3
aXRoIDItcm91bmQgQUVTLTEyOCBmdW5jdGlvbnMuIFRoaXMgRmVpc3RlbAorLy8gICAgYmxvY2sg
c2h1ZmZsZSBhY2hpZXZlcyBkaWZmdXNpb24gZmFzdGVyIGFuZCBpcyBsZXNzIHZ1bG5lcmFibGUg
dG8KKy8vICAgIHNsaWNlZC1iaWNsaXF1ZSBhdHRhY2tzIHRoYW4gdGhlIFR5cGUtMiBjeWNsaWMg
c2h1ZmZsZS4KKy8vCisvLyAzKSAiSW1wcm92aW5nIHRoZSBHZW5lcmFsaXplZCBGZWlzdGVsIiBh
bmQgIk5ldyBjcml0ZXJpb24gZm9yIGRpZmZ1c2lvbgorLy8gICAgcHJvcGVydHkiIGV4dGVuZHMg
dGhlIHNhbWUga2luZCBvZiBpbXByb3ZlZCBGZWlzdGVsIGJsb2NrIHNodWZmbGUgdG8gMTYKKy8v
ICAgIGJyYW5jaGVzLCB3aGljaCBlbmFibGVzIGEgMjA0OC1iaXQgcGVybXV0YXRpb24uCisvLwor
Ly8gQ29tYmluZSB0aGVzZSB0aHJlZSBpZGVhcyBhbmQgYWxzbyBjaGFuZ2UgU2ltcGlyYSdzIHN1
YnJvdW5kIGtleXMgZnJvbQorLy8gc3RydWN0dXJlZC9sb3ctZW50cm9weSBjb3VudGVycyB0byBk
aWdpdHMgb2YgUGkuCisKKy8vIFJhbmRlbiBjb25zdGFudHMuCitjb25zdGV4cHIgc2l6ZV90IGtG
ZWlzdGVsQmxvY2tzID0gMTY7Citjb25zdGV4cHIgc2l6ZV90IGtGZWlzdGVsRnVuY3Rpb25zID0g
a0ZlaXN0ZWxCbG9ja3MgLyAyOyAgLy8gPSA4Citjb25zdGV4cHIgc2l6ZV90IGtGZWlzdGVsUm91
bmRzID0gMTYgKyAxOyAgLy8gPiA0ICogbG9nMihrRmVpc3RlbEJsb2NrcykKK2NvbnN0ZXhwciBz
aXplX3Qga0tleXMgPSBrRmVpc3RlbFJvdW5kcyAqIGtGZWlzdGVsRnVuY3Rpb25zOworCisvLyBJ
TkNMVURFIGtleXMuCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuLWtleXMu
aW5jIgorCitzdGF0aWNfYXNzZXJ0KGtLZXlzID09IGtSb3VuZEtleXMsICJrS2V5cyBhbmQga1Jv
dW5kS2V5cyBtdXN0IGJlIGVxdWFsIik7CisKKy8vIDIgdWludDY0X3QgbGFuZXMgcGVyIFZlY3Rv
cjEyOAorc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga0xhbmVzID0gMjsKKworLy8gVGhlIGltcHJv
dmVkIEZlaXN0ZWwgYmxvY2sgc2h1ZmZsZSBmdW5jdGlvbiBmb3IgMTYgYmxvY2tzLgoraW5saW5l
IEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIHZvaWQgQmxvY2tT
aHVmZmxlKAorICAgIHVpbnQ2NF90KiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBzdGF0
ZV91NjQpIHsKKyAgc3RhdGljX2Fzc2VydChrRmVpc3RlbEJsb2NrcyA9PSAxNiwKKyAgICAgICAg
ICAgICAgICAiRmVpc3RlbCBibG9jayBzaHVmZmxlIG9ubHkgd29ya3MgZm9yIDE2IGJsb2Nrcy4i
KTsKKworICBjb25zdGV4cHIgc2l6ZV90IHNodWZmbGVba0ZlaXN0ZWxCbG9ja3NdID0gezcsICAy
LCAxMywgNCwgIDExLCA4LCAgMywgNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNSwgMCwgOSwgIDEwLCAxLCAgMTQsIDUsIDEyfTsKKworICB1NjR4Miog
QUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc3RhdGUgPQorICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx1NjR4Mio+KHN0YXRlX3U2NCk7CisKKyAgLy8gVGhlIGZ1bGx5IHVucm9sbGVkIGxvb3Ag
d2l0aG91dCB0aGUgbWVtY3B5IGltcHJvdmVzIHRoZSBzcGVlZCBieSBhYm91dAorICAvLyAzMCUg
b3ZlciB0aGUgZXF1aXZhbGVudCAobGVhdmluZyBjb2RlIGhlcmUgYXMgYSBjb21tZW50KToKKyAg
aWYgKGZhbHNlKSB7CisgICAgdTY0eDIgc291cmNlW2tGZWlzdGVsQmxvY2tzXTsKKyAgICBzdGQ6
Om1lbWNweShzb3VyY2UsIHN0YXRlLCBzaXplb2Yoc291cmNlKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBrRmVpc3RlbEJsb2NrczsgaSsrKSB7CisgICAgICBjb25zdCB1NjR4MiB2MCA9
IHNvdXJjZVtzaHVmZmxlW2ldXTsKKyAgICAgIHN0YXRlW2ldID0gdjA7CisgICAgfQorICB9CisK
KyAgY29uc3QgdTY0eDIgdjAgPSBzdGF0ZVtzaHVmZmxlWzBdXTsKKyAgY29uc3QgdTY0eDIgdjEg
PSBzdGF0ZVtzaHVmZmxlWzFdXTsKKyAgY29uc3QgdTY0eDIgdjIgPSBzdGF0ZVtzaHVmZmxlWzJd
XTsKKyAgY29uc3QgdTY0eDIgdjMgPSBzdGF0ZVtzaHVmZmxlWzNdXTsKKyAgY29uc3QgdTY0eDIg
djQgPSBzdGF0ZVtzaHVmZmxlWzRdXTsKKyAgY29uc3QgdTY0eDIgdjUgPSBzdGF0ZVtzaHVmZmxl
WzVdXTsKKyAgY29uc3QgdTY0eDIgdjYgPSBzdGF0ZVtzaHVmZmxlWzZdXTsKKyAgY29uc3QgdTY0
eDIgdjcgPSBzdGF0ZVtzaHVmZmxlWzddXTsKKyAgY29uc3QgdTY0eDIgdzAgPSBzdGF0ZVtzaHVm
ZmxlWzhdXTsKKyAgY29uc3QgdTY0eDIgdzEgPSBzdGF0ZVtzaHVmZmxlWzldXTsKKyAgY29uc3Qg
dTY0eDIgdzIgPSBzdGF0ZVtzaHVmZmxlWzEwXV07CisgIGNvbnN0IHU2NHgyIHczID0gc3RhdGVb
c2h1ZmZsZVsxMV1dOworICBjb25zdCB1NjR4MiB3NCA9IHN0YXRlW3NodWZmbGVbMTJdXTsKKyAg
Y29uc3QgdTY0eDIgdzUgPSBzdGF0ZVtzaHVmZmxlWzEzXV07CisgIGNvbnN0IHU2NHgyIHc2ID0g
c3RhdGVbc2h1ZmZsZVsxNF1dOworICBjb25zdCB1NjR4MiB3NyA9IHN0YXRlW3NodWZmbGVbMTVd
XTsKKyAgc3RhdGVbMF0gPSB2MDsKKyAgc3RhdGVbMV0gPSB2MTsKKyAgc3RhdGVbMl0gPSB2MjsK
KyAgc3RhdGVbM10gPSB2MzsKKyAgc3RhdGVbNF0gPSB2NDsKKyAgc3RhdGVbNV0gPSB2NTsKKyAg
c3RhdGVbNl0gPSB2NjsKKyAgc3RhdGVbN10gPSB2NzsKKyAgc3RhdGVbOF0gPSB3MDsKKyAgc3Rh
dGVbOV0gPSB3MTsKKyAgc3RhdGVbMTBdID0gdzI7CisgIHN0YXRlWzExXSA9IHczOworICBzdGF0
ZVsxMl0gPSB3NDsKKyAgc3RhdGVbMTNdID0gdzU7CisgIHN0YXRlWzE0XSA9IHc2OworICBzdGF0
ZVsxNV0gPSB3NzsKK30KKworLy8gRmVpc3RlbCByb3VuZCBmdW5jdGlvbiB1c2luZyB0d28gQUVT
IHN1YnJvdW5kcy4gVmVyeSBzaW1pbGFyIHRvIEYoKQorLy8gZnJvbSBTaW1waXJhIHYyLCBidXQg
d2l0aCBpbmRlcGVuZGVudCBzdWJyb3VuZCBrZXlzLiBVc2VzIDE3IEFFUyByb3VuZHMKKy8vIHBl
ciAxNiBieXRlcyAodnMuIDEwIGZvciBBRVMtQ1RSKS4gQ29tcHV0aW5nIGVpZ2h0IHJvdW5kIGZ1
bmN0aW9ucyBpbgorLy8gcGFyYWxsZWwgaGlkZXMgdGhlIDctY3ljbGUgQUVTTkkgbGF0ZW5jeSBv
biBIU1cuIE5vdGUgdGhhdCB0aGUgRmVpc3RlbAorLy8gWE9ScyBhcmUgJ2ZyZWUnIChpbmNsdWRl
ZCBpbiB0aGUgc2Vjb25kIEFFUyBpbnN0cnVjdGlvbikuCitpbmxpbmUgQUJTTF9SQU5ET01fSU5U
RVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgY29uc3QgdTY0eDIqIEZlaXN0ZWxSb3VuZCgK
KyAgICB1aW50NjRfdCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc3RhdGUsCisgICAg
Y29uc3QgdTY0eDIqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIGtleXMpIHsKKyAgZm9y
IChzaXplX3QgYnJhbmNoID0gMDsgYnJhbmNoIDwga0ZlaXN0ZWxCbG9ja3M7IGJyYW5jaCArPSA0
KSB7CisgICAgY29uc3QgVmVjdG9yMTI4IHMwID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5l
cyAqIGJyYW5jaCk7CisgICAgY29uc3QgVmVjdG9yMTI4IHMxID0gVmVjdG9yMTI4TG9hZChzdGF0
ZSArIGtMYW5lcyAqIChicmFuY2ggKyAxKSk7CisgICAgY29uc3QgVmVjdG9yMTI4IGYwID0gQWVz
Um91bmQoczAsIFZlY3RvcjEyOExvYWQoa2V5cykpOworICAgIGtleXMrKzsKKyAgICBjb25zdCBW
ZWN0b3IxMjggbzEgPSBBZXNSb3VuZChmMCwgczEpOworICAgIFZlY3RvcjEyOFN0b3JlKG8xLCBz
dGF0ZSArIGtMYW5lcyAqIChicmFuY2ggKyAxKSk7CisKKyAgICAvLyBNYW51YWxseSB1bnJvbGwg
dGhpcyBsb29wIG9uY2UuIGFib3V0IDEwJSBiZXR0ZXIgdGhhbiBub3QgdW5yb2xsZWQuCisgICAg
Y29uc3QgVmVjdG9yMTI4IHMyID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIChicmFu
Y2ggKyAyKSk7CisgICAgY29uc3QgVmVjdG9yMTI4IHMzID0gVmVjdG9yMTI4TG9hZChzdGF0ZSAr
IGtMYW5lcyAqIChicmFuY2ggKyAzKSk7CisgICAgY29uc3QgVmVjdG9yMTI4IGYyID0gQWVzUm91
bmQoczIsIFZlY3RvcjEyOExvYWQoa2V5cykpOworICAgIGtleXMrKzsKKyAgICBjb25zdCBWZWN0
b3IxMjggbzMgPSBBZXNSb3VuZChmMiwgczMpOworICAgIFZlY3RvcjEyOFN0b3JlKG8zLCBzdGF0
ZSArIGtMYW5lcyAqIChicmFuY2ggKyAzKSk7CisgIH0KKyAgcmV0dXJuIGtleXM7Cit9CisKKy8v
IENyeXB0b2dyYXBoaWMgcGVybXV0YXRpb24gYmFzZWQgdmlhIHR5cGUtMiBHZW5lcmFsaXplZCBG
ZWlzdGVsIE5ldHdvcmsuCisvLyBJbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGlkZWFsIGJ5IGNob3Nl
bi1jaXBoZXJ0ZXh0IGFkdmVyc2FyaWVzIHVzaW5nIGxlc3MgdGhhbgorLy8gMl42NCBxdWVyaWVz
IGlmIHRoZSByb3VuZCBmdW5jdGlvbiBpcyBhIFBSRi4gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBi
PTggY2FzZQorLy8gb2YgU2ltcGlyYSB2MiwgYnV0IG1vcmUgZWZmaWNpZW50IHRoYW4gaXRzIGdl
bmVyaWMgY29uc3RydWN0aW9uIGZvciBiPTE2LgoraW5saW5lIEFCU0xfUkFORE9NX0lOVEVSTkFM
X0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIHZvaWQgUGVybXV0ZSgKKyAgICBjb25zdCB2b2lkKiBr
ZXlzLCB1aW50NjRfdCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc3RhdGUpIHsKKyAg
Y29uc3QgdTY0eDIqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIGtleXMxMjggPQorICAg
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgdTY0eDIqPihrZXlzKTsKKyAgZm9yIChzaXplX3Qgcm91bmQg
PSAwOyByb3VuZCA8IGtGZWlzdGVsUm91bmRzOyArK3JvdW5kKSB7CisgICAga2V5czEyOCA9IEZl
aXN0ZWxSb3VuZChzdGF0ZSwga2V5czEyOCk7CisgICAgQmxvY2tTaHVmZmxlKHN0YXRlKTsKKyAg
fQorfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJh
bmRvbV9pbnRlcm5hbCB7CisKK2NvbnN0IHZvaWQqIFJhbmRlblNsb3c6OkdldEtleXMoKSB7Cisg
IC8vIFJvdW5kIGtleXMgZm9yIG9uZSBBRVMgcGVyIEZlaXN0ZWwgcm91bmQgYW5kIGJyYW5jaC4K
KyAgLy8gVGhlIGNhbm9uaWNhbCBpbXBsZW1lbnRhdGlvbiB1c2VzIGZpcnN0IGRpZ2l0cyBvZiBQ
aS4KKyAgcmV0dXJuIHJvdW5kX2tleXM7Cit9CisKK3ZvaWQgUmFuZGVuU2xvdzo6QWJzb3JiKGNv
bnN0IHZvaWQqIHNlZWRfdm9pZCwgdm9pZCogc3RhdGVfdm9pZCkgeworICB1aW50NjRfdCogQUJT
TF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc3RhdGUgPQorICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx1aW50NjRfdCo+KHN0YXRlX3ZvaWQpOworICBjb25zdCB1aW50NjRfdCogQUJTTF9SQU5ET01f
SU5URVJOQUxfUkVTVFJJQ1Qgc2VlZCA9CisgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ2NF90Kj4oc2VlZF92b2lkKTsKKworICBjb25zdGV4cHIgc2l6ZV90IGtDYXBhY2l0eUJsb2Nr
cyA9IGtDYXBhY2l0eUJ5dGVzIC8gc2l6ZW9mKHVpbnQ2NF90KTsKKyAgc3RhdGljX2Fzc2VydChr
Q2FwYWNpdHlCbG9ja3MgKiBzaXplb2YodWludDY0X3QpID09IGtDYXBhY2l0eUJ5dGVzLAorICAg
ICAgICAgICAgICAgICJOb3QgaSpWIik7CisgIGZvciAoc2l6ZV90IGkgPSBrQ2FwYWNpdHlCbG9j
a3M7IGkgPCBrU3RhdGVCeXRlcyAvIHNpemVvZih1aW50NjRfdCk7ICsraSkgeworICAgIHN0YXRl
W2ldIF49IHNlZWRbaSAtIGtDYXBhY2l0eUJsb2Nrc107CisgIH0KK30KKwordm9pZCBSYW5kZW5T
bG93OjpHZW5lcmF0ZShjb25zdCB2b2lkKiBrZXlzLCB2b2lkKiBzdGF0ZV92b2lkKSB7CisgIHN0
YXRpY19hc3NlcnQoa0NhcGFjaXR5Qnl0ZXMgPT0gc2l6ZW9mKFZlY3RvcjEyOCksICJDYXBhY2l0
eSBtaXNtYXRjaCIpOworCisgIHVpbnQ2NF90KiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklD
VCBzdGF0ZSA9CisgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4oc3RhdGVfdm9pZCk7
CisKKyAgY29uc3QgVmVjdG9yMTI4IHByZXZfaW5uZXIgPSBWZWN0b3IxMjhMb2FkKHN0YXRlKTsK
KworICBQZXJtdXRlKGtleXMsIHN0YXRlKTsKKworICAvLyBFbnN1cmUgYmFja3RyYWNraW5nIHJl
c2lzdGFuY2UuCisgIFZlY3RvcjEyOCBpbm5lciA9IFZlY3RvcjEyOExvYWQoc3RhdGUpOworICBp
bm5lciBePSBwcmV2X2lubmVyOworICBWZWN0b3IxMjhTdG9yZShpbm5lciwgc3RhdGUpOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9zbG93LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvcmFuZGVuX3Nsb3cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDU4NjEzMDgwMDMzMWY4
YjhmZWM4ZDRlYTkzZDgzZjMwNDA5OTc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2ludGVybmFsL3JhbmRlbl9zbG93LmgKQEAgLTAsMCArMSw0MyBAQAorLy8gQ29weXJpZ2h0IDIw
MTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxf
UkFOREVOX1NMT1dfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX1NMT1df
SF8KKworI2luY2x1ZGUgPGNzdGRkZWY+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBy
YW5kb21faW50ZXJuYWwgeworCisvLyBSQU5EZW4gPSBSQU5Eb20gZ2VuZXJhdG9yIG9yIGJlZXRy
b290cyBpbiBTd2lzcyBHZXJtYW4uCisvLyBSYW5kZW5TbG93IGltcGxlbWVudHMgdGhlIGJhc2lj
IHN0YXRlIG1hbmlwdWxhdGlvbiBtZXRob2RzIGZvcgorLy8gYXJjaGl0ZWN0dXJlcyBsYWNraW5n
IEFFUyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gaW50cmluc2ljcy4KK2NsYXNzIFJhbmRlblNsb3cg
eworIHB1YmxpYzoKKyAgLy8gU2l6ZSBvZiB0aGUgZW50aXJlIHNwb25nZSAvIHN0YXRlIGZvciB0
aGUgcmFuZGVuIFBSTkcuCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTdGF0ZUJ5dGVzID0g
MjU2OyAgLy8gMjA0OC1iaXQKKworICAvLyBTaXplIG9mIHRoZSAnaW5uZXInIChpbmFjY2Vzc2li
bGUpIHBhcnQgb2YgdGhlIHNwb25nZS4gTGFyZ2VyIHZhbHVlcyB3b3VsZAorICAvLyByZXF1aXJl
IG1vcmUgZnJlcXVlbnQgY2FsbHMgdG8gUmFuZGVuR2VuZXJhdGUuCisgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IGtDYXBhY2l0eUJ5dGVzID0gMTY7ICAvLyAxMjgtYml0CisKKyAgc3RhdGljIHZv
aWQgR2VuZXJhdGUoY29uc3Qgdm9pZCoga2V5cywgdm9pZCogc3RhdGVfdm9pZCk7CisgIHN0YXRp
YyB2b2lkIEFic29yYihjb25zdCB2b2lkKiBzZWVkX3ZvaWQsIHZvaWQqIHN0YXRlX3ZvaWQpOwor
ICBzdGF0aWMgY29uc3Qgdm9pZCogR2V0S2V5cygpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJh
bmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JB
TkRPTV9JTlRFUk5BTF9SQU5ERU5fU0xPV19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3JhbmRlbl9zbG93X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVu
X3Nsb3dfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDcxNTVkOGRkMGNhYjYwOTc4OWMwODVmMjgwYWVm
ZTFjYjMzMmRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRl
bl9zbG93X3Rlc3QuY2MKQEAgLTAsMCArMSw2MSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFi
c2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5f
c2xvdy5oIgorCisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisKK25hbWVzcGFjZSB7CisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmFuZGVuU2xv
dzsKKworLy8gTG9jYWwgc3RhdGUgcGFyYW1ldGVycy4KK2NvbnN0ZXhwciBzaXplX3Qga1NlZWRC
eXRlcyA9CisgICAgUmFuZGVuU2xvdzo6a1N0YXRlQnl0ZXMgLSBSYW5kZW5TbG93OjprQ2FwYWNp
dHlCeXRlczsKK2NvbnN0ZXhwciBzaXplX3Qga1N0YXRlU2l6ZVQgPSBSYW5kZW5TbG93OjprU3Rh
dGVCeXRlcyAvIHNpemVvZih1aW50NjRfdCk7Citjb25zdGV4cHIgc2l6ZV90IGtTZWVkU2l6ZVQg
PSBrU2VlZEJ5dGVzIC8gc2l6ZW9mKHVpbnQzMl90KTsKKworc3RydWN0IHJhbmRlbiB7CisgIHVp
bnQ2NF90IHN0YXRlW2tTdGF0ZVNpemVUXTsKKyAgdWludDMyX3Qgc2VlZFtrU2VlZFNpemVUXTsK
K307CisKK1RFU1QoUmFuZGVuU2xvd1Rlc3QsIERlZmF1bHQpIHsKKyAgY29uc3RleHByIHVpbnQ2
NF90IGtHb2xkZW5bXSA9IHsKKyAgICAgIDB4NmM2NTM0MDkwZWU2ZDNlZSwgMHgwNDRlMmI5Yjlk
NTMzM2M2LCAweGMzYzE0ZjEzNGU0MzM5NzcsCisgICAgICAweGRkYTlmNDdjZDkwNDEwZWUsIDB4
ODg3YmYzMDg3ZmQ4Y2ExMCwgMHhmMGI3ODBmNTQ1YzcyOTEyLAorICAgICAgMHgxNWRiYjFkMzc2
OTY1OTlmLCAweDMwZWM2M2JhZmYzYzZkNTksIDB4YjI5ZjczNjA2ZjdmMjBhNiwKKyAgICAgIDB4
MDI4MDhhMzE2ZjQ5YTU0YywgMHgzYjhmZWFmOWQ1YzhlNTBlLCAweDljYmY2MDVlM2ZkOWRlOGEs
CisgICAgICAweGM5NzBhZTFhNzgxODNiYmIsIDB4ZDhiMmZmZDM1NjMwMWVkNSwgMHhmNGIzMjdm
ZTBmYzczYzM3LAorICAgICAgMHhjZGZkOGQ3NmViOGY5YTE5LCAweGMzYTUwNmViOTE0MjBjOWQs
IDB4ZDVhZjA1ZGQzZWZmOTU1NiwKKyAgICAgIDB4NDhkYjFiYjc4ZjgzYzRhMSwgMHg3MDIzOTIw
ZTBkNmJmZThjLCAweDU4ZDM1NzU4MzQ5NTZkNDIsCisgICAgICAweGVkMWVmNGMyNmI4N2I4NDAs
IDB4OGVlZjMyYTIzZTBiMmRmMywgMHg0OTdjYWJmMzQzMTE1NGZjLAorICAgICAgMHg0ZTI0Mzcw
NTcwMDI5YThiLCAweGQ4OGI1NzQ5ZjA5MGU1ZWEsIDB4YzY1MWE1ODJhOTcwNjkyZiwKKyAgICAg
IDB4NzhmY2VjMmNiYjYzNDJmNSwgMHg0NjNjYjc0NTYxMmY1NWRiLCAweDM1MmVlNGFkMTgxNmFm
ZTMsCisgICAgICAweDAyNmZmMzc0YzEwMWRhN2UsIDB4ODExZWYwODIxYzNkZTg1MSwKKyAgfTsK
KworICBhbGlnbmFzKDE2KSByYW5kZW4gZDsKKyAgc3RkOjptZW1zZXQoZC5zdGF0ZSwgMCwgc2l6
ZW9mKGQuc3RhdGUpKTsKKyAgUmFuZGVuU2xvdzo6R2VuZXJhdGUoUmFuZGVuU2xvdzo6R2V0S2V5
cygpLCBkLnN0YXRlKTsKKworICB1aW50NjRfdCogaWQgPSBkLnN0YXRlOworICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW0gOiBrR29sZGVuKSB7CisgICAgRVhQRUNUX0VRKGVsZW0sICppZCsrKTsKKyAg
fQorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC9yYW5kZW5fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fdGVzdC5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMTg2ZmUwZDY4NmJjODVjM2M0YTdiYWI4M2Y0OWIzNWZmODJkZTRkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl90ZXN0LmNjCkBAIC0w
LDAgKzEsNzAgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuLmgiCisKKyNpbmNsdWRlIDxjc3Ry
aW5nPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlw
ZV90cmFpdHMuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpSYW5kZW47CisKKy8vIExvY2FsIHN0YXRlIHBhcmFtZXRlcnMuCitjb25zdGV4cHIgc2l6ZV90
IGtTdGF0ZVNpemVUID0gUmFuZGVuOjprU3RhdGVCeXRlcyAvIHNpemVvZih1aW50NjRfdCk7CisK
K1RFU1QoUmFuZGVuVGVzdCwgQ29weUFuZE1vdmUpIHsKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2NvcHlfY29uc3RydWN0aWJsZTxSYW5kZW4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiUmFu
ZGVuIG11c3QgYmUgY29weSBjb25zdHJ1Y3RpYmxlIik7CisKKyAgc3RhdGljX2Fzc2VydChhYnNs
Ojppc19jb3B5X2Fzc2lnbmFibGU8UmFuZGVuPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIlJh
bmRlbiBtdXN0IGJlIGNvcHkgYXNzaWduYWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19tb3ZlX2NvbnN0cnVjdGlibGU8UmFuZGVuPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIlJh
bmRlbiBtdXN0IGJlIG1vdmUgY29uc3RydWN0aWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoYWJz
bDo6aXNfbW92ZV9hc3NpZ25hYmxlPFJhbmRlbj46OnZhbHVlLAorICAgICAgICAgICAgICAgICJS
YW5kZW4gbXVzdCBiZSBtb3ZlIGFzc2lnbmFibGUiKTsKK30KKworVEVTVChSYW5kZW5UZXN0LCBE
ZWZhdWx0KSB7CisgIGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW10gPSB7CisgICAgICAweDZj
NjUzNDA5MGVlNmQzZWUsIDB4MDQ0ZTJiOWI5ZDUzMzNjNiwgMHhjM2MxNGYxMzRlNDMzOTc3LAor
ICAgICAgMHhkZGE5ZjQ3Y2Q5MDQxMGVlLCAweDg4N2JmMzA4N2ZkOGNhMTAsIDB4ZjBiNzgwZjU0
NWM3MjkxMiwKKyAgICAgIDB4MTVkYmIxZDM3Njk2NTk5ZiwgMHgzMGVjNjNiYWZmM2M2ZDU5LCAw
eGIyOWY3MzYwNmY3ZjIwYTYsCisgICAgICAweDAyODA4YTMxNmY0OWE1NGMsIDB4M2I4ZmVhZjlk
NWM4ZTUwZSwgMHg5Y2JmNjA1ZTNmZDlkZThhLAorICAgICAgMHhjOTcwYWUxYTc4MTgzYmJiLCAw
eGQ4YjJmZmQzNTYzMDFlZDUsIDB4ZjRiMzI3ZmUwZmM3M2MzNywKKyAgICAgIDB4Y2RmZDhkNzZl
YjhmOWExOSwgMHhjM2E1MDZlYjkxNDIwYzlkLCAweGQ1YWYwNWRkM2VmZjk1NTYsCisgICAgICAw
eDQ4ZGIxYmI3OGY4M2M0YTEsIDB4NzAyMzkyMGUwZDZiZmU4YywgMHg1OGQzNTc1ODM0OTU2ZDQy
LAorICAgICAgMHhlZDFlZjRjMjZiODdiODQwLCAweDhlZWYzMmEyM2UwYjJkZjMsIDB4NDk3Y2Fi
ZjM0MzExNTRmYywKKyAgICAgIDB4NGUyNDM3MDU3MDAyOWE4YiwgMHhkODhiNTc0OWYwOTBlNWVh
LCAweGM2NTFhNTgyYTk3MDY5MmYsCisgICAgICAweDc4ZmNlYzJjYmI2MzQyZjUsIDB4NDYzY2I3
NDU2MTJmNTVkYiwgMHgzNTJlZTRhZDE4MTZhZmUzLAorICAgICAgMHgwMjZmZjM3NGMxMDFkYTdl
LCAweDgxMWVmMDgyMWMzZGU4NTEsCisgIH07CisKKyAgYWxpZ25hcygxNikgdWludDY0X3Qgc3Rh
dGVba1N0YXRlU2l6ZVRdOworICBzdGQ6Om1lbXNldChzdGF0ZSwgMCwgc2l6ZW9mKHN0YXRlKSk7
CisKKyAgUmFuZGVuIHI7CisgIHIuR2VuZXJhdGUoc3RhdGUpOworCisgIGF1dG8gaWQgPSBzdGQ6
OmJlZ2luKHN0YXRlKTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAg
IEVYUEVDVF9FUShlbGVtLCAqaWQrKyk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3RyYWl0cy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL3JhbmRlbl90cmFpdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjFmNDA4ZDE5MTdmNmUx
NzIyYWUyZjRjNmNhMTZjZmYwYmIyZjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2ludGVybmFsL3JhbmRlbl90cmFpdHMuaApAQCAtMCwwICsxLDU5IEBACisvLyBDb3B5cmlnaHQg
MjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5B
TF9SQU5ERU5fVFJBSVRTX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9U
UkFJVFNfSF8KKworLy8gSEVSTUVUSUMgTk9URTogVGhlIHJhbmRlbl9od2FlcyB0YXJnZXQgbXVz
dCBub3QgaW50cm9kdWNlIGR1cGxpY2F0ZQorLy8gc3ltYm9scyBmcm9tIGFyYml0cmFyeSBzeXN0
ZW0gYW5kIG90aGVyIGhlYWRlcnMsIHNpbmNlIGl0IG1heSBiZSBidWlsdAorLy8gd2l0aCBkaWZm
ZXJlbnQgZmxhZ3MgZnJvbSBvdGhlciB0YXJnZXRzLCB1c2luZyBkaWZmZXJlbnQgbGV2ZWxzIG9m
CisvLyBvcHRpbWl6YXRpb24sIHBvdGVudGlhbGx5IGludHJvZHVjaW5nIE9EUiB2aW9sYXRpb25z
LgorCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJh
bmRvbV9pbnRlcm5hbCB7CisKKy8vIFJBTkRlbiA9IFJBTkRvbSBnZW5lcmF0b3Igb3IgYmVldHJv
b3RzIGluIFN3aXNzIEdlcm1hbi4KKy8vICdTdHJvbmcnICh3ZWxsLWRpc3RyaWJ1dGVkLCB1bnBy
ZWRpY3RhYmxlLCBiYWNrdHJhY2tpbmctcmVzaXN0YW50KSByYW5kb20KKy8vIGdlbmVyYXRvciwg
ZmFzdGVyIGluIHNvbWUgYmVuY2htYXJrcyB0aGFuIHN0ZDo6bXQxOTkzN182NCBhbmQgcGNnNjRf
YzMyLgorLy8KKy8vIFJhbmRlblRyYWl0cyBjb250YWlucyB0aGUgYmFzaWMgYWxnb3JpdGhtIHRy
YWl0cywgc3VjaCBhcyB0aGUgc2l6ZSBvZiB0aGUKKy8vIHN0YXRlLCBzZWVkLCBzcG9uZ2UsIGV0
Yy4KK3N0cnVjdCBSYW5kZW5UcmFpdHMgeworICAvLyBTaXplIG9mIHRoZSBlbnRpcmUgc3Bvbmdl
IC8gc3RhdGUgZm9yIHRoZSByYW5kZW4gUFJORy4KKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
a1N0YXRlQnl0ZXMgPSAyNTY7ICAvLyAyMDQ4LWJpdAorCisgIC8vIFNpemUgb2YgdGhlICdpbm5l
cicgKGluYWNjZXNzaWJsZSkgcGFydCBvZiB0aGUgc3BvbmdlLiBMYXJnZXIgdmFsdWVzIHdvdWxk
CisgIC8vIHJlcXVpcmUgbW9yZSBmcmVxdWVudCBjYWxscyB0byBSYW5kZW5HZW5lcmF0ZS4KKyAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga0NhcGFjaXR5Qnl0ZXMgPSAxNjsgIC8vIDEyOC1iaXQK
KworICAvLyBTaXplIG9mIHRoZSBkZWZhdWx0IHNlZWQgY29uc3VtZWQgYnkgdGhlIHNwb25nZS4K
KyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1NlZWRCeXRlcyA9IGtTdGF0ZUJ5dGVzIC0ga0Nh
cGFjaXR5Qnl0ZXM7CisKKyAgLy8gTGFyZ2VzdCBzaXplIGZvciB3aGljaCBzZWN1cml0eSBwcm9v
ZnMgYXJlIGtub3duLgorICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrRmVpc3RlbEJsb2NrcyA9
IDE2OworCisgIC8vIFR5cGUtMiBnZW5lcmFsaXplZCBGZWlzdGVsID0+IG9uZSByb3VuZCBmdW5j
dGlvbiBmb3IgZXZlcnkgdHdvIGJsb2Nrcy4KKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga0Zl
aXN0ZWxGdW5jdGlvbnMgPSBrRmVpc3RlbEJsb2NrcyAvIDI7ICAvLyA9IDgKKworICAvLyBFbnN1
cmVzIFNQUlAgc2VjdXJpdHkgYW5kIHR3byBmdWxsIHN1YmJsb2NrIGRpZmZ1c2lvbnMuCisgIC8v
IE11c3QgYmUgPiA0ICogbG9nMihrRmVpc3RlbEJsb2NrcykuCisgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IGtGZWlzdGVsUm91bmRzID0gMTYgKyAxOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJh
bmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JB
TkRPTV9JTlRFUk5BTF9SQU5ERU5fVFJBSVRTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
aW50ZXJuYWwvc2FsdGVkX3NlZWRfc2VxLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2FsdGVk
X3NlZWRfc2VxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY0ODcwMDY5MjU0MTdmMzdiZDk0ZGU2NzQwNDI0OWM1
YWY3MmJkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zYWx0ZWRf
c2VlZF9zZXEuaApAQCAtMCwwICsxLDE2NSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfU0FMVEVEX1NFRURf
U0VRX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1NBTFRFRF9TRUVEX1NFUV9IXwor
CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPGluaXRp
YWxpemVyX2xpc3Q+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhYnNs
L2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3Ry
YWl0cy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWwuaCIK
KyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9z
cGFuLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgewor
CisvLyBUaGlzIGNsYXNzIGNvbmZvcm1zIHRvIHRoZSBDKysgU3RhbmRhcmQgIlNlZWQgU2VxdWVu
Y2UiIGNvbmNlcHQKKy8vIFtyYW5kLnJlcS5zZWVkc2VxXS4KKy8vCisvLyBBIGBTYWx0ZWRTZWVk
U2VxYCBpcyBtZWFudCB0byB3cmFwIGFuIGV4aXN0aW5nIHNlZWQgc2VxdWVuY2UgYW5kIG1vZGlm
eQorLy8gZ2VuZXJhdGVkIHNlcXVlbmNlIGJ5IG1peGluZyB3aXRoIGV4dHJhIGVudHJvcHkuIFRo
aXMgZW50cm9weSBtYXkgYmUKKy8vIGJ1aWxkLWRlcGVuZGVudCBvciBwcm9jZXNzLWRlcGVuZGVu
dC4gVGhlIGltcGxlbWVudGF0aW9uIG1heSBjaGFuZ2UgdG8gYmUKKy8vIGhhdmUgZWl0aGVyIG9y
IGJvdGgga2luZHMgb2YgZW50cm9weS4gSWYgc2FsdCBpcyBub3QgYXZhaWxhYmxlIHNlcXVlbmNl
IGlzCisvLyBub3QgbW9kaWZpZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU1NlcT4KK2NsYXNzIFNh
bHRlZFNlZWRTZXEgeworIHB1YmxpYzoKKyAgdXNpbmcgaW5uZXJfc2VxdWVuY2VfdHlwZSA9IFNT
ZXE7CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgU1NlcTo6cmVzdWx0X3R5cGU7CisK
KyAgU2FsdGVkU2VlZFNlcSgpIDogc2VxXyhhYnNsOjptYWtlX3VuaXF1ZTxTU2VxPigpKSB7fQor
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KKyAgU2FsdGVkU2VlZFNlcShJdGVyYXRv
ciBiZWdpbiwgSXRlcmF0b3IgZW5kKQorICAgICAgOiBzZXFfKGFic2w6Om1ha2VfdW5pcXVlPFNT
ZXE+KGJlZ2luLCBlbmQpKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBTYWx0ZWRT
ZWVkU2VxKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbCkKKyAgICAgIDogU2FsdGVkU2VlZFNl
cShpbC5iZWdpbigpLCBpbC5lbmQoKSkge30KKworICBTYWx0ZWRTZWVkU2VxKGNvbnN0IFNhbHRl
ZFNlZWRTZXEmKSA9IGRlbGV0ZTsKKyAgU2FsdGVkU2VlZFNlcSYgb3BlcmF0b3I9KGNvbnN0IFNh
bHRlZFNlZWRTZXEmKSA9IGRlbGV0ZTsKKworICBTYWx0ZWRTZWVkU2VxKFNhbHRlZFNlZWRTZXEm
JikgPSBkZWZhdWx0OworICBTYWx0ZWRTZWVkU2VxJiBvcGVyYXRvcj0oU2FsdGVkU2VlZFNlcSYm
KSA9IGRlZmF1bHQ7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9y
PgorICB2b2lkIGdlbmVyYXRlKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGJlZ2luLCBSYW5kb21BY2Nl
c3NJdGVyYXRvciBlbmQpIHsKKyAgICAvLyBUaGUgY29tbW9uIGNhc2UgaXMgdGhhdCBnZW5lcmF0
ZSBpcyBjYWxsZWQgd2l0aCBDb250aWd1b3VzSXRlcmF0b3JzCisgICAgLy8gdG8gdWludCBhcnJh
eXMuIFN1Y2ggY29udGlndW91cyBtZW1vcnkgcmVnaW9ucyBtYXkgYmUgb3B0aW1pemVkLAorICAg
IC8vIHdoaWNoIHdlIGRldGVjdCBoZXJlLgorICAgIHVzaW5nIHRhZyA9IGFic2w6OmNvbmRpdGlv
bmFsX3Q8CisgICAgICAgIChzdGQ6OmlzX3BvaW50ZXI8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2
YWx1ZSAmJgorICAgICAgICAgc3RkOjppc19zYW1lPGFic2w6OmRlY2F5X3Q8ZGVjbHR5cGUoKmJl
Z2luKT4sIHVpbnQzMl90Pjo6dmFsdWUpLAorICAgICAgICBDb250aWd1b3VzQW5kVWludDMyVGFn
LCBEZWZhdWx0VGFnPjsKKyAgICBpZiAoYmVnaW4gIT0gZW5kKSB7CisgICAgICBnZW5lcmF0ZV9p
bXBsKGJlZ2luLCBlbmQsIHRhZ3t9KTsKKyAgICB9CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgT3V0SXRlcmF0b3I+CisgIHZvaWQgcGFyYW0oT3V0SXRlcmF0b3Igb3V0KSBjb25zdCB7Cisg
ICAgc2VxXy0+cGFyYW0ob3V0KTsKKyAgfQorCisgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gc2VxXy0+c2l6ZSgpOyB9CisKKyBwcml2YXRlOgorICBzdHJ1Y3QgQ29udGlndW91c0FuZFVp
bnQzMlRhZyB7fTsKKyAgc3RydWN0IERlZmF1bHRUYWcge307CisKKyAgLy8gR2VuZXJhdGUgd2hp
Y2ggcmVxdWlyZXMgdGhlIGl0ZXJhdG9ycyBhcmUgY29udGlndW91cyBwb2ludGVycyB0byB1aW50
MzJfdC4KKyAgdm9pZCBnZW5lcmF0ZV9pbXBsKHVpbnQzMl90KiBiZWdpbiwgdWludDMyX3QqIGVu
ZCwgQ29udGlndW91c0FuZFVpbnQzMlRhZykgeworICAgIGdlbmVyYXRlX2NvbnRpZ3VvdXMoYWJz
bDo6TWFrZVNwYW4oYmVnaW4sIGVuZCkpOworICB9CisKKyAgLy8gVGhlIHVuY29tbW9uIGNhc2Ug
Zm9yIGdlbmVyYXRlIGlzIHRoYXQgaXQgaXMgY2FsbGVkIHdpdGggaXRlcmF0b3JzIG92ZXIKKyAg
Ly8gc29tZSBvdGhlciBidWZmZXIgdHlwZSB3aGljaCBpcyBhc3NpZ25hYmxlIGZyb20gYSAzMi1i
aXQgdmFsdWUuIEluIHRoaXMKKyAgLy8gY2FzZSB3ZSBhbGxvY2F0ZSBhIHRlbXBvcmFyeSAzMi1i
aXQgYnVmZmVyIGFuZCB0aGVuIGNvcHktYXNzaWduIGJhY2sKKyAgLy8gdG8gdGhlIGluaXRpYWwg
aW5wdXRzLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3I+CisgIHZv
aWQgZ2VuZXJhdGVfaW1wbChSYW5kb21BY2Nlc3NJdGVyYXRvciBiZWdpbiwgUmFuZG9tQWNjZXNz
SXRlcmF0b3IgZW5kLAorICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFRhZykgeworICAgIHJl
dHVybiBnZW5lcmF0ZV9hbmRfY29weShzdGQ6OmRpc3RhbmNlKGJlZ2luLCBlbmQpLCBiZWdpbik7
CisgIH0KKworICAvLyBGaWxscyB0aGUgaW5pdGlhbCBzZWVkIGJ1ZmZlciB0aGUgdW5kZXJseWlu
ZyBTU2VxOjpnZW5lcmF0ZSgpIGNhbGwsCisgIC8vIG1peGluZyBpbiB0aGUgc2FsdCBtYXRlcmlh
bC4KKyAgdm9pZCBnZW5lcmF0ZV9jb250aWd1b3VzKGFic2w6OlNwYW48dWludDMyX3Q+IGJ1ZmZl
cikgeworICAgIHNlcV8tPmdlbmVyYXRlKGJ1ZmZlci5iZWdpbigpLCBidWZmZXIuZW5kKCkpOwor
ICAgIGNvbnN0IHVpbnQzMl90IHNhbHQgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkdldFNhbHRN
YXRlcmlhbCgpLnZhbHVlX29yKDApOworICAgIE1peEludG9TZWVkTWF0ZXJpYWwoYWJzbDo6TWFr
ZUNvbnN0U3Bhbigmc2FsdCwgMSksIGJ1ZmZlcik7CisgIH0KKworICAvLyBBbGxvY2F0ZXMgYSBz
ZWVkIGJ1ZmZlciBvZiBgbmAgZWxlbWVudHMsIGdlbmVyYXRlcyB0aGUgc2VlZCwgdGhlbgorICAv
LyBjb3BpZXMgdGhlIHJlc3VsdCBpbnRvIHRoZSBgb3V0YCBpdGVyYXRvci4KKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIEl0ZXJhdG9yPgorICB2b2lkIGdlbmVyYXRlX2FuZF9jb3B5KHNpemVfdCBuLCBJ
dGVyYXRvciBvdXQpIHsKKyAgICAvLyBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBidWZmZXIsIGdlbmVy
YXRlLCBhbmQgdGhlbiBjb3B5LgorICAgIGFic2w6OklubGluZWRWZWN0b3I8dWludDMyX3QsIDg+
IGRhdGEobiwgMCk7CisgICAgZ2VuZXJhdGVfY29udGlndW91cyhhYnNsOjpNYWtlU3BhbihkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKKyAgICBzdGQ6OmNvcHkoZGF0YS5iZWdpbigpLCBkYXRh
LmVuZCgpLCBvdXQpOworICB9CisKKyAgLy8gQmVjYXVzZSBbcmFuZC5yZXEuc2VlZHNlcV0gaXMg
bm90IHJlcXVpcmVkIHRvIGJlIGNvcHktY29uc3RydWN0aWJsZSwKKyAgLy8gY29weS1hc3NpZ25h
YmxlIG5vciBtb3ZhYmxlLCB3ZSB3cmFwIGl0IHdpdGggdW5pcXVlIHBvaW50ZXIgdG8gYmUgYWJs
ZQorICAvLyB0byBtb3ZlIFNhbHRlZFNlZWRTZXEuCisgIHN0ZDo6dW5pcXVlX3B0cjxTU2VxPiBz
ZXFfOworfTsKKworLy8gaXNfc2FsdGVkX3NlZWRfc2VxIGluZGljYXRlcyB3aGV0aGVyIHRoZSB0
eXBlIGlzIGEgU2FsdGVkU2VlZFNlcS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9
IHZvaWQ+CitzdHJ1Y3QgaXNfc2FsdGVkX3NlZWRfc2VxIDogcHVibGljIHN0ZDo6ZmFsc2VfdHlw
ZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfc2FsdGVkX3NlZWRfc2Vx
PAorICAgIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTwKKyAgICAgICAg
ICAgVCwgU2FsdGVkU2VlZFNlcTx0eXBlbmFtZSBUOjppbm5lcl9zZXF1ZW5jZV90eXBlPj46OnZh
bHVlPjo6dHlwZT4KKyAgICA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7fTsKKworLy8gTWFrZVNh
bHRlZFNlZWRTZXEgcmV0dXJucyBhIHNhbHRlZCB2YXJpYW50IG9mIHRoZSBzZWVkIHNlcXVlbmNl
LgorLy8gV2hlbiBwcm92aWRlZCB3aXRoIGFuIGV4aXN0aW5nIFNhbHRlZFNlZWRTZXEsIHJldHVy
bnMgdGhlIGlucHV0IHBhcmFtZXRlciwKKy8vIG90aGVyd2lzZSBjb25zdHJ1Y3RzIGEgbmV3IFNh
bHRlZFNlZWRTZXEgd2hpY2ggZW1ib2RpZXMgdGhlIG9yaWdpbmFsCisvLyBub24tc2FsdGVkIHNl
ZWQgcGFyYW1ldGVycy4KK3RlbXBsYXRlIDwKKyAgICB0eXBlbmFtZSBTU2VxLCAgLy8KKyAgICB0
eXBlbmFtZSBFbmFibGVJZiA9IGFic2w6OmVuYWJsZV9pZl90PGlzX3NhbHRlZF9zZWVkX3NlcTxT
U2VxPjo6dmFsdWU+PgorU1NlcSBNYWtlU2FsdGVkU2VlZFNlcShTU2VxJiYgc2VxKSB7CisgIHJl
dHVybiBTU2VxKHN0ZDo6Zm9yd2FyZDxTU2VxPihzZXEpKTsKK30KKwordGVtcGxhdGUgPAorICAg
IHR5cGVuYW1lIFNTZXEsICAvLworICAgIHR5cGVuYW1lIEVuYWJsZUlmID0gYWJzbDo6ZW5hYmxl
X2lmX3Q8IWlzX3NhbHRlZF9zZWVkX3NlcTxTU2VxPjo6dmFsdWU+PgorU2FsdGVkU2VlZFNlcTx0
eXBlbmFtZSBzdGQ6OmRlY2F5PFNTZXE+Ojp0eXBlPiBNYWtlU2FsdGVkU2VlZFNlcShTU2VxJiYg
c2VxKSB7CisgIHVzaW5nIHNzZXFfdHlwZSA9IHR5cGVuYW1lIHN0ZDo6ZGVjYXk8U1NlcT46OnR5
cGU7CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgc3NlcV90eXBlOjpyZXN1bHRfdHlw
ZTsKKworICBhYnNsOjpJbmxpbmVkVmVjdG9yPHJlc3VsdF90eXBlLCA4PiBkYXRhOworICBzZXEu
cGFyYW0oc3RkOjpiYWNrX2luc2VydGVyKGRhdGEpKTsKKyAgcmV0dXJuIFNhbHRlZFNlZWRTZXE8
c3NlcV90eXBlPihkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCkpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFC
U0xfUkFORE9NX0lOVEVSTkFMX1NBTFRFRF9TRUVEX1NFUV9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL3NhbHRlZF9zZWVkX3NlcV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3NhbHRlZF9zZWVkX3NlcV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiZjE5YTYzZWY4YzVm
M2ZjZWY5ZDlmMGMxNDdjNWRiMGI3YjQ1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vaW50ZXJuYWwvc2FsdGVkX3NlZWRfc2VxX3Rlc3QuY2MKQEAgLTAsMCArMSwxNjggQEAKKy8v
IENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9y
YW5kb20vaW50ZXJuYWwvc2FsdGVkX3NlZWRfc2VxLmgiCisKKyNpbmNsdWRlIDxpdGVyYXRvcj4K
KyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisK
K3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6R2V0U2FsdE1hdGVyaWFsOwordXNpbmcgYWJz
bDo6cmFuZG9tX2ludGVybmFsOjpNYWtlU2FsdGVkU2VlZFNlcTsKK3VzaW5nIGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6U2FsdGVkU2VlZFNlcTsKK3VzaW5nIHRlc3Rpbmc6OkVxOwordXNpbmcgdGVz
dGluZzo6UG9pbnR3aXNlOworCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3Nl
cT4KK3ZvaWQgQ29uZm9ybXNUb0ludGVyZmFjZSgpIHsKKyAgLy8gQ2hlY2sgdGhhdCB0aGUgU2Vl
ZFNlcXVlbmNlIGNhbiBiZSBkZWZhdWx0LWNvbnN0cnVjdGVkLgorICB7IFNzZXEgZGVmYXVsdF9j
b25zdHJ1Y3RlZF9zZXE7IH0KKyAgLy8gQ2hlY2sgdGhhdCB0aGUgU2VlZFNlcXVlbmNlIGNhbiBi
ZSBjb25zdHJ1Y3RlZCB3aXRoIHR3byBpdGVyYXRvcnMuCisgIHsKKyAgICB1aW50MzJfdCBpbml0
X2FycmF5W10gPSB7MSwgMywgNSwgNywgOX07CisgICAgU3NlcSBpdGVyYXRvcl9jb25zdHJ1Y3Rl
ZF9zZXEoc3RkOjpiZWdpbihpbml0X2FycmF5KSwgc3RkOjplbmQoaW5pdF9hcnJheSkpOworICB9
CisgIC8vIENoZWNrIHRoYXQgdGhlIFNlZWRTZXF1ZW5jZSBjYW4gYmUgc3RkOjppbml0aWFsaXpl
cl9saXN0LWNvbnN0cnVjdGVkLgorICB7IFNzZXEgbGlzdF9jb25zdHJ1Y3RlZF9zZXEgPSB7MSwg
MywgNSwgNywgOSwgMTEsIDEzfTsgfQorICAvLyBDaGVjayB0aGF0IHBhcmFtKCkgYW5kIHNpemUo
KSByZXR1cm4gc3RhdGUgcHJvdmlkZWQgdG8gY29uc3RydWN0b3IuCisgIHsKKyAgICB1aW50MzJf
dCBpbml0X2FycmF5W10gPSB7MSwgMiwgMywgNCwgNX07CisgICAgU3NlcSBzZXEoc3RkOjpiZWdp
bihpbml0X2FycmF5KSwgc3RkOjplbmQoaW5pdF9hcnJheSkpOworICAgIEVYUEVDVF9FUShzZXEu
c2l6ZSgpLCBBQlNMX0FSUkFZU0laRShpbml0X2FycmF5KSk7CisKKyAgICBzdGQ6OnZlY3Rvcjx1
aW50MzJfdD4gc3RhdGVfdmVjdG9yOworICAgIHNlcS5wYXJhbShzdGQ6OmJhY2tfaW5zZXJ0ZXIo
c3RhdGVfdmVjdG9yKSk7CisKKyAgICBFWFBFQ1RfRVEoc3RhdGVfdmVjdG9yLnNpemUoKSwgQUJT
TF9BUlJBWVNJWkUoaW5pdF9hcnJheSkpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhdGVf
dmVjdG9yLnNpemUoKTsgaSsrKSB7CisgICAgICBFWFBFQ1RfRVEoc3RhdGVfdmVjdG9yW2ldLCBp
ICsgMSk7CisgICAgfQorICB9CisgIC8vIENoZWNrIGZvciBwcmVzZW5jZSBvZiBnZW5lcmF0ZSgp
IG1ldGhvZC4KKyAgeworICAgIFNzZXEgc2VxOworICAgIHVpbnQzMl90IHNlZWRzWzVdOworCisg
ICAgc2VxLmdlbmVyYXRlKHN0ZDo6YmVnaW4oc2VlZHMpLCBzdGQ6OmVuZChzZWVkcykpOworICB9
Cit9CisKK1RFU1QoU2FsdGVkU2VlZFNlcSwgQ2hlY2tJbnRlcmZhY2VzKSB7CisgIC8vIENvbnRy
b2wgY2FzZQorICBDb25mb3Jtc1RvSW50ZXJmYWNlPHN0ZDo6c2VlZF9zZXE+KCk7CisKKyAgLy8g
QWJzZWlsIGNsYXNzZXMKKyAgQ29uZm9ybXNUb0ludGVyZmFjZTxTYWx0ZWRTZWVkU2VxPHN0ZDo6
c2VlZF9zZXE+PigpOworfQorCitURVNUKFNhbHRlZFNlZWRTZXEsIENoZWNrQ29uc3RydWN0aW5n
RnJvbU90aGVyU2VxdWVuY2UpIHsKKyAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHNlZWRfdmFsdWVz
KDEwLCAxKTsKKyAgc3RkOjpzZWVkX3NlcSBzZXEoc2VlZF92YWx1ZXMuYmVnaW4oKSwgc2VlZF92
YWx1ZXMuZW5kKCkpOworICBhdXRvIHNhbHRlZF9zZXEgPSBNYWtlU2FsdGVkU2VlZFNlcShzdGQ6
Om1vdmUoc2VxKSk7CisKKyAgRVhQRUNUX0VRKHNlcS5zaXplKCksIHNhbHRlZF9zZXEuc2l6ZSgp
KTsKKworICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gcGFyYW1fcmVzdWx0OworICBzZXEucGFyYW0o
c3RkOjpiYWNrX2luc2VydGVyKHBhcmFtX3Jlc3VsdCkpOworCisgIEVYUEVDVF9FUShzZWVkX3Zh
bHVlcywgcGFyYW1fcmVzdWx0KTsKK30KKworVEVTVChTYWx0ZWRTZWVkU2VxLCBTYWx0ZWRTYWx0
ZWRTZWVkU2VxSXNOb3REb3VibGVTYWx0ZWQpIHsKKyAgdWludDMyX3QgaW5pdFtdID0gezEsIDMs
IDUsIDcsIDl9OworCisgIHN0ZDo6c2VlZF9zZXEgc2VxKHN0ZDo6YmVnaW4oaW5pdCksIHN0ZDo6
ZW5kKGluaXQpKTsKKworICAvLyBUaGUgZmlyc3Qgc2FsdGluZy4KKyAgU2FsdGVkU2VlZFNlcTxz
dGQ6OnNlZWRfc2VxPiBzYWx0ZWRfc2VxID0gTWFrZVNhbHRlZFNlZWRTZXEoc3RkOjptb3ZlKHNl
cSkpOworICB1aW50MzJfdCBhWzE2XTsKKyAgc2FsdGVkX3NlcS5nZW5lcmF0ZShzdGQ6OmJlZ2lu
KGEpLCBzdGQ6OmVuZChhKSk7CisKKyAgLy8gVGhlIHNlY29uZCBzYWx0aW5nLgorICBTYWx0ZWRT
ZWVkU2VxPHN0ZDo6c2VlZF9zZXE+IHNhbHRlZF9zYWx0ZWRfc2VxID0KKyAgICAgIE1ha2VTYWx0
ZWRTZWVkU2VxKHN0ZDo6bW92ZShzYWx0ZWRfc2VxKSk7CisgIHVpbnQzMl90IGJbMTZdOworICBz
YWx0ZWRfc2FsdGVkX3NlcS5nZW5lcmF0ZShzdGQ6OmJlZ2luKGIpLCBzdGQ6OmVuZChiKSk7CisK
KyAgLy8gLi4uIGJvdGggc2hvdWxkIGJlIGVxdWFsLgorICBFWFBFQ1RfVEhBVChiLCBQb2ludHdp
c2UoRXEoKSwgYSkpIDw8ICJhWzBdICIgPDwgYVswXTsKK30KKworVEVTVChTYWx0ZWRTZWVkU2Vx
LCBTZWVkTWF0ZXJpYWxJc1NhbHRlZCkgeworICBjb25zdCBzaXplX3Qga051bUJsb2NrcyA9IDE2
OworCisgIHVpbnQzMl90IHNlZWRfbWF0ZXJpYWxba051bUJsb2Nrc107CisgIHN0ZDo6cmFuZG9t
X2RldmljZSB1cmFuZG9teyIvZGV2L3VyYW5kb20ifTsKKyAgZm9yICh1aW50MzJfdCYgc2VlZCA6
IHNlZWRfbWF0ZXJpYWwpIHsKKyAgICBzZWVkID0gdXJhbmRvbSgpOworICB9CisKKyAgc3RkOjpz
ZWVkX3NlcSBzZXEoc3RkOjpiZWdpbihzZWVkX21hdGVyaWFsKSwgc3RkOjplbmQoc2VlZF9tYXRl
cmlhbCkpOworICBTYWx0ZWRTZWVkU2VxPHN0ZDo6c2VlZF9zZXE+IHNhbHRlZF9zZXEoc3RkOjpi
ZWdpbihzZWVkX21hdGVyaWFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6ZW5kKHNlZWRfbWF0ZXJpYWwpKTsKKworICBib29sIHNhbHRfaXNfYXZhaWxh
YmxlID0gR2V0U2FsdE1hdGVyaWFsKCkuaGFzX3ZhbHVlKCk7CisKKyAgLy8gSWYgc2FsdCBpcyBh
dmFpbGFibGUgZ2VuZXJhdGVkIHNlcXVlbmNlIHNob3VsZCBiZSBkaWZmZXJlbnQuCisgIGlmIChz
YWx0X2lzX2F2YWlsYWJsZSkgeworICAgIHVpbnQzMl90IG91dHB1dHNba051bUJsb2Nrc107Cisg
ICAgdWludDMyX3Qgc2FsdGVkX291dHB1dHNba051bUJsb2Nrc107CisKKyAgICBzZXEuZ2VuZXJh
dGUoc3RkOjpiZWdpbihvdXRwdXRzKSwgc3RkOjplbmQob3V0cHV0cykpOworICAgIHNhbHRlZF9z
ZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihzYWx0ZWRfb3V0cHV0cyksIHN0ZDo6ZW5kKHNhbHRlZF9v
dXRwdXRzKSk7CisKKyAgICBFWFBFQ1RfVEhBVChvdXRwdXRzLCBQb2ludHdpc2UodGVzdGluZzo6
TmUoKSwgc2FsdGVkX291dHB1dHMpKTsKKyAgfQorfQorCitURVNUKFNhbHRlZFNlZWRTZXEsIEdl
bmVyYXRlQWNjZXB0c0RpZmZlcmVudFR5cGVzKSB7CisgIGNvbnN0IHNpemVfdCBrTnVtQmxvY2tz
ID0gNDsKKworICBTYWx0ZWRTZWVkU2VxPHN0ZDo6c2VlZF9zZXE+IHNlcSh7MSwgMiwgM30pOwor
CisgIHVpbnQzMl90IGV4cGVjdGVkW2tOdW1CbG9ja3NdOworICBzZXEuZ2VuZXJhdGUoc3RkOjpi
ZWdpbihleHBlY3RlZCksIHN0ZDo6ZW5kKGV4cGVjdGVkKSk7CisKKyAgLy8gMzItYml0IG91dHB1
dHMKKyAgeworICAgIHVuc2lnbmVkIGxvbmcgc2VlZF9tYXRlcmlhbFtrTnVtQmxvY2tzXTsgIC8v
IE5PTElOVChydW50aW1lL2ludCkKKyAgICBzZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihzZWVkX21h
dGVyaWFsKSwgc3RkOjplbmQoc2VlZF9tYXRlcmlhbCkpOworICAgIEVYUEVDVF9USEFUKHNlZWRf
bWF0ZXJpYWwsIFBvaW50d2lzZShFcSgpLCBleHBlY3RlZCkpOworICB9CisgIHsKKyAgICB1bnNp
Z25lZCBpbnQgc2VlZF9tYXRlcmlhbFtrTnVtQmxvY2tzXTsgIC8vIE5PTElOVChydW50aW1lL2lu
dCkKKyAgICBzZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihzZWVkX21hdGVyaWFsKSwgc3RkOjplbmQo
c2VlZF9tYXRlcmlhbCkpOworICAgIEVYUEVDVF9USEFUKHNlZWRfbWF0ZXJpYWwsIFBvaW50d2lz
ZShFcSgpLCBleHBlY3RlZCkpOworICB9CisKKyAgLy8gNjQtYml0IG91dHB1dHMuCisgIHsKKyAg
ICB1aW50NjRfdCBzZWVkX21hdGVyaWFsW2tOdW1CbG9ja3NdOworICAgIHNlcS5nZW5lcmF0ZShz
dGQ6OmJlZ2luKHNlZWRfbWF0ZXJpYWwpLCBzdGQ6OmVuZChzZWVkX21hdGVyaWFsKSk7CisgICAg
RVhQRUNUX1RIQVQoc2VlZF9tYXRlcmlhbCwgUG9pbnR3aXNlKEVxKCksIGV4cGVjdGVkKSk7Cisg
IH0KKyAgeworICAgIGludDY0X3Qgc2VlZF9tYXRlcmlhbFtrTnVtQmxvY2tzXTsKKyAgICBzZXEu
Z2VuZXJhdGUoc3RkOjpiZWdpbihzZWVkX21hdGVyaWFsKSwgc3RkOjplbmQoc2VlZF9tYXRlcmlh
bCkpOworICAgIEVYUEVDVF9USEFUKHNlZWRfbWF0ZXJpYWwsIFBvaW50d2lzZShFcSgpLCBleHBl
Y3RlZCkpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2Vl
ZF9tYXRlcmlhbC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWRkNTM1ZjljMDk5YzJkMDk4NjZkYzViMzg2ODgw
OWQ5MGZmYTA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3NlZWRf
bWF0ZXJpYWwuY2MKQEAgLTAsMCArMSwyMDUgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRl
cmlhbC5oIgorCisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2lmbmRlZiBfV0lOMzIKKyNpbmNsdWRl
IDx1bmlzdGQuaD4KKyNlbHNlCisjaW5jbHVkZSA8aW8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNlcnJubz4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1
ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9p
bnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9hc2NpaS5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9lc2NhcGluZy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5n
cy9zdHJpbmdfdmlldy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpcC5oIgorCisjaWYg
ZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKKworI2luY2x1ZGUgPG5hY2wvbmFjbF9yYW5kb20u
aD4KKyNkZWZpbmUgQUJTTF9SQU5ET01fVVNFX05BQ0xfU0VDVVJFX1JBTkRPTSAxCisKKyNlbGlm
IGRlZmluZWQoX1dJTjMyKQorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2RlZmluZSBBQlNMX1JB
TkRPTV9VU0VfQkNSWVBUIDEKKyNwcmFnbWEgY29tbWVudChsaWIsICJiY3J5cHQubGliIikKKwor
I2VuZGlmCisKKyNpZiBkZWZpbmVkKEFCU0xfUkFORE9NX1VTRV9CQ1JZUFQpCisjaW5jbHVkZSA8
YmNyeXB0Lmg+CisKKyNpZm5kZWYgQkNSWVBUX1NVQ0NFU1MKKyNkZWZpbmUgQkNSWVBUX1NVQ0NF
U1MoU3RhdHVzKSAoKChOVFNUQVRVUykoU3RhdHVzKSkgPj0gMCkKKyNlbmRpZgorLy8gQWxzbyBs
aW5rIGJjcnlwdDsgdGhpcyBjYW4gYmUgZG9uZSB2aWEgbGlua2VyIG9wdGlvbnMgb3I6CisvLyAj
cHJhZ21hIGNvbW1lbnQobGliLCAiYmNyeXB0LmxpYiIpCisjZW5kaWYKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCisvLyBSZWFk
IE9TIEVudHJvcHkgZm9yIHJhbmRvbSBudW1iZXIgc2VlZHMuCisvLyBUT0RPKGFic2wtdGVhbSk6
IFBvc3NpYmx5IHBsYWNlIGEgY2FwIG9uIGhvdyBtdWNoIGVudHJvcHkgbWF5IGJlIHJlYWQgYXQg
YQorLy8gdGltZS4KKworI2lmIGRlZmluZWQoQUJTTF9SQU5ET01fVVNFX0JDUllQVCkKKworLy8g
T24gV2luZG93cyBwb3RlbnRpYWxseSB1c2UgdGhlIEJDUllQVCBDTkcgQVBJIHRvIHJlYWQgYXZh
aWxhYmxlIGVudHJvcHkuCitib29sIFJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5SW1wbChh
YnNsOjpTcGFuPHVpbnQzMl90PiB2YWx1ZXMpIHsKKyAgQkNSWVBUX0FMR19IQU5ETEUgaFByb3Zp
ZGVyOworICBOVFNUQVRVUyByZXQ7CisgIHJldCA9IEJDcnlwdE9wZW5BbGdvcml0aG1Qcm92aWRl
cigmaFByb3ZpZGVyLCBCQ1JZUFRfUk5HX0FMR09SSVRITSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1TX1BSSU1JVElWRV9QUk9WSURFUiwgMCk7CisgIGlmICghKEJDUllQ
VF9TVUNDRVNTKHJldCkpKSB7CisgICAgQUJTTF9SQVdfTE9HKEVSUk9SLCAiRmFpbGVkIHRvIG9w
ZW4gY3J5cHRvIHByb3ZpZGVyLiIpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXQgPSBC
Q3J5cHRHZW5SYW5kb20oCisgICAgICBoUHJvdmlkZXIsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcHJvdmlkZXIKKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
VUNIQVIqPih2YWx1ZXMuZGF0YSgpKSwgICAgICAgICAgICAgICAvLyBidWZmZXIKKyAgICAgIHN0
YXRpY19jYXN0PFVMT05HPihzaXplb2YodWludDMyX3QpICogdmFsdWVzLnNpemUoKSksICAvLyBi
eXRlcworICAgICAgMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGZsYWdzCisgIEJDcnlwdENsb3NlQWxnb3JpdGhtUHJvdmlkZXIoaFByb3Zp
ZGVyLCAwKTsKKyAgcmV0dXJuIEJDUllQVF9TVUNDRVNTKHJldCk7Cit9CisKKyNlbGlmIGRlZmlu
ZWQoQUJTTF9SQU5ET01fVVNFX05BQ0xfU0VDVVJFX1JBTkRPTSkKKworLy8gT24gTmFDTCB1c2Ug
bmFjbF9zZWN1cmVfcmFuZG9tIHRvIGFjcXVpcmUgYnl0ZXMuCitib29sIFJlYWRTZWVkTWF0ZXJp
YWxGcm9tT1NFbnRyb3B5SW1wbChhYnNsOjpTcGFuPHVpbnQzMl90PiB2YWx1ZXMpIHsKKyAgYXV0
byBidWZmZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih2YWx1ZXMuZGF0YSgpKTsKKyAg
c2l6ZV90IGJ1ZmZlcl9zaXplID0gc2l6ZW9mKHVpbnQzMl90KSAqIHZhbHVlcy5zaXplKCk7CisK
KyAgdWludDhfdCogb3V0cHV0X3B0ciA9IGJ1ZmZlcjsKKyAgd2hpbGUgKGJ1ZmZlcl9zaXplID4g
MCkgeworICAgIHNpemVfdCBucmVhZCA9IDA7CisgICAgY29uc3QgaW50IGVycm9yID0gbmFjbF9z
ZWN1cmVfcmFuZG9tKG91dHB1dF9wdHIsIGJ1ZmZlcl9zaXplLCAmbnJlYWQpOworICAgIGlmIChl
cnJvciAhPSAwIHx8IG5yZWFkID4gYnVmZmVyX3NpemUpIHsKKyAgICAgIEFCU0xfUkFXX0xPRyhF
UlJPUiwgIkZhaWxlZCB0byByZWFkIHNlY3VyZV9yYW5kb20gc2VlZCBkYXRhOiAlZCIsIGVycm9y
KTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgb3V0cHV0X3B0ciArPSBucmVhZDsK
KyAgICBidWZmZXJfc2l6ZSAtPSBucmVhZDsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworI2Vs
c2UKKworLy8gT24gKm5peCwgcmVhZCBlbnRyb3B5IGZyb20gL2Rldi91cmFuZG9tLgorYm9vbCBS
ZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weUltcGwoYWJzbDo6U3Bhbjx1aW50MzJfdD4gdmFs
dWVzKSB7CisgIGNvbnN0IGNoYXIga0VudHJvcHlGaWxlW10gPSAiL2Rldi91cmFuZG9tIjsKKwor
ICBhdXRvIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZhbHVlcy5kYXRhKCkp
OworICBzaXplX3QgYnVmZmVyX3NpemUgPSBzaXplb2YodWludDMyX3QpICogdmFsdWVzLnNpemUo
KTsKKworICBpbnQgZGV2X3VyYW5kb20gPSBvcGVuKGtFbnRyb3B5RmlsZSwgT19SRE9OTFkpOwor
ICBib29sIHN1Y2Nlc3MgPSAoLTEgIT0gZGV2X3VyYW5kb20pOworICBpZiAoIXN1Y2Nlc3MpIHsK
KyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICB3aGlsZSAoc3VjY2VzcyAmJiBidWZmZXJfc2l6
ZSA+IDApIHsKKyAgICBpbnQgYnl0ZXNfcmVhZCA9IHJlYWQoZGV2X3VyYW5kb20sIGJ1ZmZlciwg
YnVmZmVyX3NpemUpOworICAgIGludCByZWFkX2Vycm9yID0gZXJybm87CisgICAgc3VjY2VzcyA9
IChieXRlc19yZWFkID4gMCk7CisgICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICAgIGJ1ZmZlciArPSBi
eXRlc19yZWFkOworICAgICAgYnVmZmVyX3NpemUgLT0gYnl0ZXNfcmVhZDsKKyAgICB9IGVsc2Ug
aWYgKGJ5dGVzX3JlYWQgPT0gLTEgJiYgcmVhZF9lcnJvciA9PSBFSU5UUikgeworICAgICAgc3Vj
Y2VzcyA9IHRydWU7ICAvLyBOZWVkIHRvIHRyeSBhZ2Fpbi4KKyAgICB9CisgIH0KKyAgY2xvc2Uo
ZGV2X3VyYW5kb20pOworICByZXR1cm4gc3VjY2VzczsKK30KKworI2VuZGlmCisKK30gIC8vIG5h
bWVzcGFjZQorCitib29sIFJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5KGFic2w6OlNwYW48
dWludDMyX3Q+IHZhbHVlcykgeworICBhc3NlcnQodmFsdWVzLmRhdGEoKSAhPSBudWxscHRyKTsK
KyAgaWYgKHZhbHVlcy5kYXRhKCkgPT0gbnVsbHB0cikgeworICAgIHJldHVybiBmYWxzZTsKKyAg
fQorICBpZiAodmFsdWVzLmVtcHR5KCkpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1
cm4gUmVhZFNlZWRNYXRlcmlhbEZyb21PU0VudHJvcHlJbXBsKHZhbHVlcyk7Cit9CisKK3ZvaWQg
TWl4SW50b1NlZWRNYXRlcmlhbChhYnNsOjpTcGFuPGNvbnN0IHVpbnQzMl90PiBzZXF1ZW5jZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPHVpbnQzMl90PiBzZWVkX21hdGVy
aWFsKSB7CisgIC8vIEFsZ29yaXRobSBpcyBiYXNlZCBvbiBjb2RlIGF2YWlsYWJsZSBhdAorICAv
LyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9pbW5lbWUvNTQwODI5MjY1NDY5ZTY3M2QwNDUKKyAg
Y29uc3RleHByIHVpbnQzMl90IGtJbml0VmFsID0gMHg0M2IwZDdlNTsKKyAgY29uc3RleHByIHVp
bnQzMl90IGtIYXNoTXVsID0gMHg5MzFlODg3NTsKKyAgY29uc3RleHByIHVpbnQzMl90IGtNaXhN
dWxMID0gMHhjYTAxZjlkZDsKKyAgY29uc3RleHByIHVpbnQzMl90IGtNaXhNdWxSID0gMHg0OTcz
ZjcxNTsKKyAgY29uc3RleHByIHVpbnQzMl90IGtTaGlmdFNpemUgPSBzaXplb2YodWludDMyX3Qp
ICogOCAvIDI7CisKKyAgdWludDMyX3QgaGFzaF9jb25zdCA9IGtJbml0VmFsOworICBhdXRvIGhh
c2ggPSBbJl0odWludDMyX3QgdmFsdWUpIHsKKyAgICB2YWx1ZSBePSBoYXNoX2NvbnN0OworICAg
IGhhc2hfY29uc3QgKj0ga0hhc2hNdWw7CisgICAgdmFsdWUgKj0gaGFzaF9jb25zdDsKKyAgICB2
YWx1ZSBePSB2YWx1ZSA+PiBrU2hpZnRTaXplOworICAgIHJldHVybiB2YWx1ZTsKKyAgfTsKKwor
ICBhdXRvIG1peCA9IFsmXSh1aW50MzJfdCB4LCB1aW50MzJfdCB5KSB7CisgICAgdWludDMyX3Qg
cmVzdWx0ID0ga01peE11bEwgKiB4IC0ga01peE11bFIgKiB5OworICAgIHJlc3VsdCBePSByZXN1
bHQgPj4ga1NoaWZ0U2l6ZTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9OworCisgIGZvciAoY29u
c3QgYXV0byYgc2VxX3ZhbCA6IHNlcXVlbmNlKSB7CisgICAgZm9yIChhdXRvJiBlbGVtIDogc2Vl
ZF9tYXRlcmlhbCkgeworICAgICAgZWxlbSA9IG1peChlbGVtLCBoYXNoKHNlcV92YWwpKTsKKyAg
ICB9CisgIH0KK30KKworYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IEdldFNhbHRNYXRlcmlhbCgp
IHsKKyAgLy8gU2FsdCBtdXN0IGJlIGNvbW1vbiBmb3IgYWxsIGdlbmVyYXRvcnMgd2l0aGluIHRo
ZSBzYW1lIHByb2Nlc3Mgc28gcmVhZCBpdAorICAvLyBvbmx5IG9uY2UgYW5kIHN0b3JlIGluIHN0
YXRpYyB2YXJpYWJsZS4KKyAgc3RhdGljIGNvbnN0IGF1dG8gc2FsdF9tYXRlcmlhbCA9IFtdKCkg
LT4gYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHsKKyAgICB1aW50MzJfdCBzYWx0X3ZhbHVlID0g
MDsKKworICAgIGlmIChyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRy
b3B5KAorICAgICAgICAgICAgTWFrZVNwYW4oJnNhbHRfdmFsdWUsIDEpKSkgeworICAgICAgcmV0
dXJuIHNhbHRfdmFsdWU7CisgICAgfQorCisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0o
KTsKKworICByZXR1cm4gc2FsdF9tYXRlcmlhbDsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRv
bV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9zZWVkX21hdGVyaWFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9t
YXRlcmlhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3ZGU4YTI0ZDVlMGVjOWM3Y2RiMWIzNThkZjU0NmMwYmE3
NTc2ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRl
cmlhbC5oCkBAIC0wLDAgKzEsMTAyIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9TRUVEX01BVEVSSUFMX0hf
CisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1NFRURfTUFURVJJQUxfSF8KKworI2luY2x1
ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RkbGliPgorI2lu
Y2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2Uv
YXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9y
bV9iaXRzLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFi
c2wvdHlwZXMvc3Bhbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2lu
dGVybmFsIHsKKworLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIDMyLWJpdCBibG9ja3MgbmVlZGVk
IHRvIGNvbnRhaW4gdGhlIGdpdmVuIG51bWJlciBvZgorLy8gYml0cy4KK2NvbnN0ZXhwciBzaXpl
X3QgU2VlZEJpdHNUb0Jsb2NrcyhzaXplX3Qgc2VlZF9zaXplKSB7CisgIHJldHVybiAoc2VlZF9z
aXplICsgMzEpIC8gMzI7Cit9CisKKy8vIEFtb3VudCBvZiBlbnRyb3B5IChtZWFzdXJlZCBpbiBi
aXRzKSB1c2VkIHRvIGluc3RhbnRpYXRlIGEgU2VlZCBTZXF1ZW5jZSwKKy8vIHdpdGggd2hpY2gg
dG8gY3JlYXRlIGEgVVJCRy4KK2NvbnN0ZXhwciBzaXplX3Qga0VudHJvcHlCaXRzTmVlZGVkID0g
MjU2OworCisvLyBBbW91bnQgb2YgZW50cm9weSAobWVhc3VyZWQgaW4gMzItYml0IGJsb2Nrcykg
dXNlZCB0byBpbnN0YW50aWF0ZSBhIFNlZWQKKy8vIFNlcXVlbmNlLCB3aXRoIHdoaWNoIHRvIGNy
ZWF0ZSBhIFVSQkcuCitjb25zdGV4cHIgc2l6ZV90IGtFbnRyb3B5QmxvY2tzTmVlZGVkID0KKyAg
ICByYW5kb21faW50ZXJuYWw6OlNlZWRCaXRzVG9CbG9ja3Moa0VudHJvcHlCaXRzTmVlZGVkKTsK
Kworc3RhdGljX2Fzc2VydChrRW50cm9weUJsb2Nrc05lZWRlZCA+IDAsCisgICAgICAgICAgICAg
ICJFbnRyb3B5IHVzZWQgdG8gc2VlZCBVUkJHcyBtdXN0IGJlIG5vbnplcm8uIik7CisKKy8vIEF0
dGVtcHRzIHRvIGZpbGwgYSBzcGFuIG9mIHVpbnQzMl90LXZhbHVlcyB1c2luZyBhbiBPUy1wcm92
aWRlZCBzb3VyY2Ugb2YKKy8vIHRydWUgZW50cm9weSAoZWcuIC9kZXYvdXJhbmRvbSkgaW50byBh
biBhcnJheSBvZiB1aW50MzJfdCBibG9ja3Mgb2YgZGF0YS4gVGhlCisvLyByZXN1bHRpbmcgYXJy
YXkgbWF5IGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIGNvbmZv
cm1pbmcKKy8vIHRvIHRoZSBDKysgU3RhbmRhcmQgIlNlZWQgU2VxdWVuY2UiIGNvbmNlcHQgW3Jh
bmQucmVxLnNlZWRzZXFdLgorLy8KKy8vIElmIHZhbHVlcy5kYXRhKCkgPT0gbnVsbHB0ciwgdGhl
IGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KK0FCU0xfTVVTVF9VU0VfUkVTVUxUCitib29sIFJlYWRT
ZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5KGFic2w6OlNwYW48dWludDMyX3Q+IHZhbHVlcyk7CisK
Ky8vIEF0dGVtcHRzIHRvIGZpbGwgYSBzcGFuIG9mIHVpbnQzMl90LXZhbHVlcyB1c2luZyB2YXJp
YXRlcyBnZW5lcmF0ZWQgYnkgYW4KKy8vIGV4aXN0aW5nIGluc3RhbmNlIG9mIGEgY2xhc3MgY29u
Zm9ybWluZyB0byB0aGUgQysrIFN0YW5kYXJkICJVbmlmb3JtIFJhbmRvbQorLy8gQml0IEdlbmVy
YXRvciIgY29uY2VwdCBbcmFuZC5yZXEudXJuZ10uIFRoZSByZXN1bHRpbmcgZGF0YSBtYXkgYmUg
dXNlZCB0bworLy8gaW5pdGlhbGl6ZSBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIGNvbmZvcm1pbmcg
dG8gdGhlIEMrKyBTdGFuZGFyZAorLy8gIlNlZWQgU2VxdWVuY2UiIGNvbmNlcHQgW3JhbmQucmVx
LnNlZWRzZXFdLgorLy8KKy8vIElmIHVyYmcgPT0gbnVsbHB0ciBvciB2YWx1ZXMuZGF0YSgpID09
IG51bGxwdHIsIHRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VVJCRz4KK0FCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wgUmVhZFNlZWRNYXRlcmlhbEZyb21VUkJH
KAorICAgIFVSQkcqIHVyYmcsIGFic2w6OlNwYW48dWludDMyX3Q+IHZhbHVlcykgeworICByYW5k
b21faW50ZXJuYWw6OkZhc3RVbmlmb3JtQml0czx1aW50MzJfdD4gZGlzdHI7CisKKyAgYXNzZXJ0
KHVyYmcgIT0gbnVsbHB0ciAmJiB2YWx1ZXMuZGF0YSgpICE9IG51bGxwdHIpOworICBpZiAodXJi
ZyA9PSBudWxscHRyIHx8IHZhbHVlcy5kYXRhKCkgPT0gbnVsbHB0cikgeworICAgIHJldHVybiBm
YWxzZTsKKyAgfQorCisgIGZvciAodWludDMyX3QmIHNlZWRfdmFsdWUgOiB2YWx1ZXMpIHsKKyAg
ICBzZWVkX3ZhbHVlID0gZGlzdHIoKnVyYmcpOworICB9CisgIHJldHVybiB0cnVlOworfQorCisv
LyBNaXhlcyBnaXZlbiBzZXF1ZW5jZSBvZiB2YWx1ZXMgd2l0aCBpbnRvIGdpdmVuIHNlcXVlbmNl
IG9mIHNlZWQgbWF0ZXJpYWwuCisvLyBUaW1lIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBp
cyBPKHNlcXVlbmNlLnNpemUoKSAqCisvLyBzZWVkX21hdGVyaWFsLnNpemUoKSkuCisvLworLy8g
QWxnb3JpdGhtIGlzIGJhc2VkIG9uIGNvZGUgYXZhaWxhYmxlIGF0CisvLyBodHRwczovL2dpc3Qu
Z2l0aHViLmNvbS9pbW5lbWUvNTQwODI5MjY1NDY5ZTY3M2QwNDUKKy8vIGJ5IE1lbGlzc2EgTydO
ZWlsbC4KK3ZvaWQgTWl4SW50b1NlZWRNYXRlcmlhbChhYnNsOjpTcGFuPGNvbnN0IHVpbnQzMl90
PiBzZXF1ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPHVpbnQzMl90
PiBzZWVkX21hdGVyaWFsKTsKKworLy8gUmV0dXJucyBzYWx0IHZhbHVlLgorLy8KKy8vIFNhbHQg
aXMgb2J0YWluZWQgb25seSBvbmNlIGFuZCBzdG9yZWQgaW4gc3RhdGljIHZhcmlhYmxlLgorLy8K
Ky8vIE1heSByZXR1cm4gZW1wdHkgdmFsdWUgaWYgb3B0YWluaW5nIHRoZSBzYWx0IHdhcyBub3Qg
cG9zc2libGUuCithYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gR2V0U2FsdE1hdGVyaWFsKCk7CisK
K30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisK
KyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfU0VFRF9NQVRFUklBTF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWxfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC9zZWVkX21hdGVyaWFsX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRiMjgy
MGVjNzA3Y2MyZmZhMzNlNjM1ODhmZGE2MzkwZjcyZDM3OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX21hdGVyaWFsX3Rlc3QuY2MKQEAgLTAsMCArMSwyMDIg
QEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRlcmlhbC5oIgorCisjaW5jbHVkZSA8Yml0c2V0
PgorI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxyYW5k
b20+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisKKyNpZmRlZiBfX0FORFJPSURfXworLy8gQW5kcm9pZCBhc3NlcnQgbWVzc2FnZXMgb25seSBn
byB0byBzeXN0ZW0gbG9nLCBzbyBkZWF0aCB0ZXN0cyBjYW5ub3QgaW5zcGVjdAorLy8gdGhlIG1l
c3NhZ2UgZm9yIG1hdGNoaW5nLgorI2RlZmluZSBBQlNMX0VYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQoc3RhdGVtZW50LCByZWdleCkgXAorICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRl
bWVudCwgIi4qIikKKyNlbHNlCisjZGVmaW5lIEFCU0xfRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVt
ZW50LCByZWdleCkKKyNlbmRpZgorCituYW1lc3BhY2UgeworCit1c2luZyB0ZXN0aW5nOjpFYWNo
OwordXNpbmcgdGVzdGluZzo6RWxlbWVudHNBcmU7Cit1c2luZyB0ZXN0aW5nOjpFcTsKK3VzaW5n
IHRlc3Rpbmc6Ok5lOwordXNpbmcgdGVzdGluZzo6UG9pbnR3aXNlOworCitURVNUKFNlZWRCaXRz
VG9CbG9ja3MsIFZlcmlmeUNhc2VzKSB7CisgIEVYUEVDVF9FUSgwLCBhYnNsOjpyYW5kb21faW50
ZXJuYWw6OlNlZWRCaXRzVG9CbG9ja3MoMCkpOworICBFWFBFQ1RfRVEoMSwgYWJzbDo6cmFuZG9t
X2ludGVybmFsOjpTZWVkQml0c1RvQmxvY2tzKDEpKTsKKyAgRVhQRUNUX0VRKDEsIGFic2w6OnJh
bmRvbV9pbnRlcm5hbDo6U2VlZEJpdHNUb0Jsb2NrcygzMSkpOworICBFWFBFQ1RfRVEoMSwgYWJz
bDo6cmFuZG9tX2ludGVybmFsOjpTZWVkQml0c1RvQmxvY2tzKDMyKSk7CisgIEVYUEVDVF9FUSgy
LCBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlNlZWRCaXRzVG9CbG9ja3MoMzMpKTsKKyAgRVhQRUNU
X0VRKDQsIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U2VlZEJpdHNUb0Jsb2NrcygxMjcpKTsKKyAg
RVhQRUNUX0VRKDQsIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U2VlZEJpdHNUb0Jsb2NrcygxMjgp
KTsKKyAgRVhQRUNUX0VRKDUsIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U2VlZEJpdHNUb0Jsb2Nr
cygxMjkpKTsKK30KKworVEVTVChSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weSwgU3VjY2Vz
c2l2ZVJlYWRzQXJlRGlzdGluY3QpIHsKKyAgY29uc3RleHByIHNpemVfdCBrU2VlZE1hdGVyaWFs
U2l6ZSA9IDY0OworICB1aW50MzJfdCBzZWVkX21hdGVyaWFsXzFba1NlZWRNYXRlcmlhbFNpemVd
ID0ge307CisgIHVpbnQzMl90IHNlZWRfbWF0ZXJpYWxfMltrU2VlZE1hdGVyaWFsU2l6ZV0gPSB7
fTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJp
YWxGcm9tT1NFbnRyb3B5KAorICAgICAgYWJzbDo6U3Bhbjx1aW50MzJfdD4oc2VlZF9tYXRlcmlh
bF8xLCBrU2VlZE1hdGVyaWFsU2l6ZSkpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6cmFuZG9tX2lu
dGVybmFsOjpSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weSgKKyAgICAgIGFic2w6OlNwYW48
dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWxfMiwga1NlZWRNYXRlcmlhbFNpemUpKSk7CisKKyAgRVhQ
RUNUX1RIQVQoc2VlZF9tYXRlcmlhbF8xLCBQb2ludHdpc2UoTmUoKSwgc2VlZF9tYXRlcmlhbF8y
KSk7Cit9CisKK1RFU1QoUmVhZFNlZWRNYXRlcmlhbEZyb21PU0VudHJvcHksIFJlYWRaZXJvQnl0
ZXNJc05vT3ApIHsKKyAgdWludDMyX3Qgc2VlZF9tYXRlcmlhbFszMl0gPSB7fTsKKyAgc3RkOjpt
ZW1zZXQoc2VlZF9tYXRlcmlhbCwgMHhBQSwgc2l6ZW9mKHNlZWRfbWF0ZXJpYWwpKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50
cm9weSgKKyAgICAgIGFic2w6OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWwsIDApKSk7CisK
KyAgRVhQRUNUX1RIQVQoc2VlZF9tYXRlcmlhbCwgRWFjaChFcSgweEFBQUFBQUFBKSkpOworfQor
CitURVNUKFJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5LCBOdWxsUHRyVmVjdG9yQXJndW1l
bnQpIHsKKyNpZmRlZiBOREVCVUcKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6UmVhZFNlZWRNYXRlcmlhbEZyb21PU0VudHJvcHkoCisgICAgICBhYnNsOjpTcGFuPHVpbnQz
Ml90PihudWxscHRyLCAzMikpKTsKKyNlbHNlCisgIGJvb2wgcmVzdWx0OworICBBQlNMX0VYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQoCisgICAgICByZXN1bHQgPSBhYnNsOjpyYW5kb21faW50ZXJu
YWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5KAorICAgICAgICAgIGFic2w6OlNwYW48
dWludDMyX3Q+KG51bGxwdHIsIDMyKSksCisgICAgICAiIT0gbnVsbHB0ciIpOworICAodm9pZCly
ZXN1bHQ7ICAvLyBzdXBwcmVzcyB1bnVzZWQtdmFyaWFibGUgd2FybmluZworI2VuZGlmCit9CisK
K1RFU1QoUmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHLCBTZWVkTWF0ZXJpYWxFcXVhbHNWYXJpYXRl
U2VxdWVuY2UpIHsKKyAgLy8gVHdvIGRlZmF1bHQtY29uc3RydWN0ZWQgaW5zdGFuY2VzIG9mIHN0
ZDo6bXQxOTkzN182NCBhcmUgZ3VhcmFudGVlZCB0bworICAvLyBwcm9kdWNlIGVxdWFsIHZhcmlh
dGUtc2VxdWVuY2VzLgorICBzdGQ6Om10MTk5MzcgdXJiZ18xOworICBzdGQ6Om10MTk5MzcgdXJi
Z18yOworICBjb25zdGV4cHIgc2l6ZV90IGtTZWVkTWF0ZXJpYWxTaXplID0gMTAyNDsKKyAgdWlu
dDMyX3Qgc2VlZF9tYXRlcmlhbFtrU2VlZE1hdGVyaWFsU2l6ZV0gPSB7fTsKKworICBFWFBFQ1Rf
VFJVRShhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9tVVJCRygKKyAg
ICAgICZ1cmJnXzEsIGFic2w6OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWwsIGtTZWVkTWF0
ZXJpYWxTaXplKSkpOworICBmb3IgKHVpbnQzMl90IHNlZWQgOiBzZWVkX21hdGVyaWFsKSB7Cisg
ICAgRVhQRUNUX0VRKHNlZWQsIHVyYmdfMigpKTsKKyAgfQorfQorCitURVNUKFJlYWRTZWVkTWF0
ZXJpYWxGcm9tVVJCRywgUmVhZFplcm9CeXRlc0lzTm9PcCkgeworICBzdGQ6Om10MTk5MzdfNjQg
dXJiZzsKKyAgdWludDMyX3Qgc2VlZF9tYXRlcmlhbFszMl07CisgIHN0ZDo6bWVtc2V0KHNlZWRf
bWF0ZXJpYWwsIDB4QUEsIHNpemVvZihzZWVkX21hdGVyaWFsKSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OnJhbmRvbV9pbnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHKAorICAgICAgJnVy
YmcsIGFic2w6OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWwsIDApKSk7CisKKyAgRVhQRUNU
X1RIQVQoc2VlZF9tYXRlcmlhbCwgRWFjaChFcSgweEFBQUFBQUFBKSkpOworfQorCitURVNUKFJl
YWRTZWVkTWF0ZXJpYWxGcm9tVVJCRywgTnVsbFVyYmdBcmd1bWVudCkgeworICBjb25zdGV4cHIg
c2l6ZV90IGtTZWVkTWF0ZXJpYWxTaXplID0gMzI7CisgIHVpbnQzMl90IHNlZWRfbWF0ZXJpYWxb
a1NlZWRNYXRlcmlhbFNpemVdOworI2lmZGVmIE5ERUJVRworICBFWFBFQ1RfRkFMU0UoYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpSZWFkU2VlZE1hdGVyaWFsRnJvbVVSQkc8c3RkOjptdDE5OTM3XzY0
PigKKyAgICAgIG51bGxwdHIsIGFic2w6OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWwsIGtT
ZWVkTWF0ZXJpYWxTaXplKSkpOworI2Vsc2UKKyAgYm9vbCByZXN1bHQ7CisgIEFCU0xfRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRCgKKyAgICAgIHJlc3VsdCA9IGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6UmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHPHN0ZDo6bXQxOTkzN182ND4oCisgICAgICAgICAg
bnVsbHB0ciwgYWJzbDo6U3Bhbjx1aW50MzJfdD4oc2VlZF9tYXRlcmlhbCwga1NlZWRNYXRlcmlh
bFNpemUpKSwKKyAgICAgICIhPSBudWxscHRyIik7CisgICh2b2lkKXJlc3VsdDsgIC8vIHN1cHBy
ZXNzIHVudXNlZC12YXJpYWJsZSB3YXJuaW5nCisjZW5kaWYKK30KKworVEVTVChSZWFkU2VlZE1h
dGVyaWFsRnJvbVVSQkcsIE51bGxQdHJWZWN0b3JBcmd1bWVudCkgeworICBzdGQ6Om10MTk5Mzdf
NjQgdXJiZzsKKyNpZmRlZiBOREVCVUcKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OnJhbmRvbV9pbnRl
cm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHKAorICAgICAgJnVyYmcsIGFic2w6OlNwYW48
dWludDMyX3Q+KG51bGxwdHIsIDMyKSkpOworI2Vsc2UKKyAgYm9vbCByZXN1bHQ7CisgIEFCU0xf
RVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCgKKyAgICAgIHJlc3VsdCA9IGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHKAorICAgICAgICAgICZ1cmJnLCBhYnNs
OjpTcGFuPHVpbnQzMl90PihudWxscHRyLCAzMikpLAorICAgICAgIiE9IG51bGxwdHIiKTsKKyAg
KHZvaWQpcmVzdWx0OyAgLy8gc3VwcHJlc3MgdW51c2VkLXZhcmlhYmxlIHdhcm5pbmcKKyNlbmRp
ZgorfQorCisvLyBUaGUgYXZhbGFuY2hlIGVmZmVjdCBpcyBhIGRlc2lyYWJsZSBjcnlwdG9ncmFw
aGljIHByb3BlcnR5IG9mIGhhc2hlcyBpbiB3aGljaAorLy8gY2hhbmdpbmcgYSBzaW5nbGUgYml0
IGluIHRoZSBpbnB1dCBjYXVzZXMgZWFjaCBiaXQgb2YgdGhlIG91dHB1dCB0byBiZQorLy8gY2hh
bmdlZCB3aXRoIHByb2JhYmlsaXR5IG5lYXIgNTAlLgorLy8KKy8vIGh0dHBzOi8vZW4ud2lraXBl
ZGlhLm9yZy93aWtpL0F2YWxhbmNoZV9lZmZlY3QKKworVEVTVChNaXhTZXF1ZW5jZUludG9TZWVk
TWF0ZXJpYWwsIEF2YWxhbmNoZUVmZmVjdFRlc3RPbmVCaXRMb25nKSB7CisgIHN0ZDo6dmVjdG9y
PHVpbnQzMl90PiBzZWVkX21hdGVyaWFsID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDh9OworCisg
IC8vIEZvciBldmVyeSAzMi1iaXQgbnVtYmVyIHdpdGggZXhhY3RseSBvbmUgYml0IHNldCwgdmVy
aWZ5IHRoZSBhdmFsYW5jaGUKKyAgLy8gZWZmZWN0IGhvbGRzLiAgSW4gb3JkZXIgdG8gcmVkdWNl
IGZsYWtpbmVzcyBvZiB0ZXN0cywgYWNjZXB0IHZhbHVlcworICAvLyBhbnl3aGVyZSBpbiB0aGUg
cmFuZ2Ugb2YgMzAlLTcwJS4KKyAgZm9yICh1aW50MzJfdCB2ID0gMTsgdiAhPSAwOyB2IDw8PSAx
KSB7CisgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHNlZWRfbWF0ZXJpYWxfY29weSA9IHNlZWRf
bWF0ZXJpYWw7CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpNaXhJbnRvU2VlZE1hdGVyaWFs
KAorICAgICAgICBhYnNsOjpTcGFuPHVpbnQzMl90PigmdiwgMSksCisgICAgICAgIGFic2w6OlNw
YW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWxfY29weS5kYXRhKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlZWRfbWF0ZXJpYWxfY29weS5zaXplKCkpKTsKKworICAgIHVpbnQzMl90
IGNoYW5nZWRfYml0cyA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWVkX21hdGVy
aWFsLnNpemUoKTsgaSsrKSB7CisgICAgICBzdGQ6OmJpdHNldDxzaXplb2YodWludDMyX3QpICog
OD4gYml0c2V0KHNlZWRfbWF0ZXJpYWxbaV0gXgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWVkX21hdGVyaWFsX2NvcHlbaV0pOworICAgICAgY2hhbmdl
ZF9iaXRzICs9IGJpdHNldC5jb3VudCgpOworICAgIH0KKworICAgIEVYUEVDVF9MRShjaGFuZ2Vk
X2JpdHMsIDAuNyAqIHNpemVvZih1aW50MzJfdCkgKiA4ICogc2VlZF9tYXRlcmlhbC5zaXplKCkp
OworICAgIEVYUEVDVF9HRShjaGFuZ2VkX2JpdHMsIDAuMyAqIHNpemVvZih1aW50MzJfdCkgKiA4
ICogc2VlZF9tYXRlcmlhbC5zaXplKCkpOworICB9Cit9CisKK1RFU1QoTWl4U2VxdWVuY2VJbnRv
U2VlZE1hdGVyaWFsLCBBdmFsYW5jaGVFZmZlY3RUZXN0T25lQml0U2hvcnQpIHsKKyAgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+IHNlZWRfbWF0ZXJpYWwgPSB7MX07CisKKyAgLy8gRm9yIGV2ZXJ5IDMy
LWJpdCBudW1iZXIgd2l0aCBleGFjdGx5IG9uZSBiaXQgc2V0LCB2ZXJpZnkgdGhlIGF2YWxhbmNo
ZQorICAvLyBlZmZlY3QgaG9sZHMuICBJbiBvcmRlciB0byByZWR1Y2UgZmxha2luZXNzIG9mIHRl
c3RzLCBhY2NlcHQgdmFsdWVzCisgIC8vIGFueXdoZXJlIGluIHRoZSByYW5nZSBvZiAzMCUtNzAl
LgorICBmb3IgKHVpbnQzMl90IHYgPSAxOyB2ICE9IDA7IHYgPDw9IDEpIHsKKyAgICBzdGQ6OnZl
Y3Rvcjx1aW50MzJfdD4gc2VlZF9tYXRlcmlhbF9jb3B5ID0gc2VlZF9tYXRlcmlhbDsKKyAgICBh
YnNsOjpyYW5kb21faW50ZXJuYWw6Ok1peEludG9TZWVkTWF0ZXJpYWwoCisgICAgICAgIGFic2w6
OlNwYW48dWludDMyX3Q+KCZ2LCAxKSwKKyAgICAgICAgYWJzbDo6U3Bhbjx1aW50MzJfdD4oc2Vl
ZF9tYXRlcmlhbF9jb3B5LmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vl
ZF9tYXRlcmlhbF9jb3B5LnNpemUoKSkpOworCisgICAgdWludDMyX3QgY2hhbmdlZF9iaXRzID0g
MDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlZWRfbWF0ZXJpYWwuc2l6ZSgpOyBpKysp
IHsKKyAgICAgIHN0ZDo6Yml0c2V0PHNpemVvZih1aW50MzJfdCkgKiA4PiBiaXRzZXQoc2VlZF9t
YXRlcmlhbFtpXSBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlZWRfbWF0ZXJpYWxfY29weVtpXSk7CisgICAgICBjaGFuZ2VkX2JpdHMgKz0gYml0c2V0
LmNvdW50KCk7CisgICAgfQorCisgICAgRVhQRUNUX0xFKGNoYW5nZWRfYml0cywgMC43ICogc2l6
ZW9mKHVpbnQzMl90KSAqIDggKiBzZWVkX21hdGVyaWFsLnNpemUoKSk7CisgICAgRVhQRUNUX0dF
KGNoYW5nZWRfYml0cywgMC4zICogc2l6ZW9mKHVpbnQzMl90KSAqIDggKiBzZWVkX21hdGVyaWFs
LnNpemUoKSk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvc2VlZF9zYWx0aW5nX3NlcXVlbmNlX2dlbmVyYXRvci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC9zZWVkX3NhbHRpbmdfc2VxdWVuY2VfZ2VuZXJhdG9yLmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMxZmRjZmUxZGI0MWJhYzU4MWM0MGJlYzI4YWMzZmExM2QyNDBhYjIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9zYWx0aW5nX3NlcXVlbmNlX2dl
bmVyYXRvci5jYwpAQCAtMCwwICsxLDMwIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHJhbmRvbT4KKwor
I2luY2x1ZGUgImFic2wvcmFuZG9tL3JhbmRvbS5oIgorCisvLyBUaGlzIHByb2dyYW0gaXMgdXNl
ZCBpbiBpbnRlZ3JhdGlvbiB0ZXN0cy4KKworaW50IG1haW4oKSB7CisgIHN0ZDo6c2VlZF9zZXEg
c2VlZF9zZXF7MTIzNH07CisgIGFic2w6OkJpdEdlbiBybmcoc2VlZF9zZXEpOworICBjb25zdGV4
cHIgc2l6ZV90IGtTZXF1ZW5jZUxlbmd0aCA9IDg7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
a1NlcXVlbmNlTGVuZ3RoOyBpKyspIHsKKyAgICBzdGQ6OmNvdXQgPDwgcm5nKCkgPDwgIlxuIjsK
KyAgfQorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9z
ZWVkX3NhbHRpbmdfc2VxdWVuY2VfZ2VuZXJhdG9yX2VtcHR5X3NlcXVlbmNlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL3NlZWRfc2FsdGluZ19zZXF1ZW5jZV9nZW5lcmF0b3JfZW1wdHlfc2Vx
dWVuY2UuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODc5N2UyZTdhNmYyYTE5ZjRiN2IxMjlhMDI3OGM0OTcyNzBl
ZGFmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX3NhbHRp
bmdfc2VxdWVuY2VfZ2VuZXJhdG9yX2VtcHR5X3NlcXVlbmNlLmNjCkBAIC0wLDAgKzEsMzAgQEAK
Ky8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSA8aW9z
dHJlYW0+CisjaW5jbHVkZSA8cmFuZG9tPgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9t
LmgiCisKKy8vIFRoaXMgcHJvZ3JhbSBpcyB1c2VkIGluIGludGVncmF0aW9uIHRlc3RzLgorCitp
bnQgbWFpbigpIHsKKyAgc3RkOjpzZWVkX3NlcSBzZWVkX3NlcXt9OworICBhYnNsOjpCaXRHZW4g
cm5nKHNlZWRfc2VxKTsKKyAgY29uc3RleHByIHNpemVfdCBrU2VxdWVuY2VMZW5ndGggPSA4Owor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtTZXF1ZW5jZUxlbmd0aDsgaSsrKSB7CisgICAgc3Rk
Ojpjb3V0IDw8IHJuZygpIDw8ICJcbiI7CisgIH0KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VxdWVuY2VfdXJiZy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3NlcXVlbmNlX3VyYmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTliNTc3MzhkYTQ2NmQzOGYxMGQ2
NDk5YTg2NDhmZmY0NTZjOTUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVy
bmFsL3NlcXVlbmNlX3VyYmcuaApAQCAtMCwwICsxLDU2IEBACisvLyBDb3B5cmlnaHQgMjAxNyBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9TRVFV
RU5DRV9VUkJHX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1NFUVVFTkNFX1VSQkdf
SF8KKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxs
aW1pdHM+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dmVjdG9yPgorCituYW1l
c3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gYHNlcXVlbmNl
X3VyYmdgIGlzIGEgc2ltcGxlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHdoaWNoIG1lZXRzIHRo
ZQorLy8gcmVxdWlyZW1lbnRzIG9mIFtyYW5kLnJlcS51cmJnXSwgYW5kIGlzIHNvbGVseSBmb3Ig
dGVzdGluZyBhYnNsCisvLyBkaXN0cmlidXRpb25zLgorY2xhc3Mgc2VxdWVuY2VfdXJiZyB7Cisg
cHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IHVpbnQ2NF90OworCisgIHN0YXRpYyBjb25z
dGV4cHIgcmVzdWx0X3R5cGUobWluKSgpIHsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1p
dHM8cmVzdWx0X3R5cGU+OjptaW4pKCk7CisgIH0KKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRf
dHlwZShtYXgpKCkgeworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlw
ZT46Om1heCkoKTsKKyAgfQorCisgIHNlcXVlbmNlX3VyYmcoc3RkOjppbml0aWFsaXplcl9saXN0
PHJlc3VsdF90eXBlPiBkYXRhKSA6IGlfKDApLCBkYXRhXyhkYXRhKSB7fQorICB2b2lkIHJlc2V0
KCkgeyBpXyA9IDA7IH0KKworICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkgeyByZXR1cm4gZGF0
YV9baV8rKyAlIGRhdGFfLnNpemUoKV07IH0KKworICBzaXplX3QgaW52b2NhdGlvbnMoKSBjb25z
dCB7IHJldHVybiBpXzsgfQorCisgcHJpdmF0ZToKKyAgc2l6ZV90IGlfOworICBzdGQ6OnZlY3Rv
cjxyZXN1bHRfdHlwZT4gZGF0YV87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVy
bmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVS
TkFMX1NFUVVFTkNFX1VSQkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC90
cmFpdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC90cmFpdHMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGVi
MDExZjE5NWZkYzhmMWVkMDVjYmVjNGI0YTA2MmVhNGYwMDA3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0cy5oCkBAIC0wLDAgKzEsOTkgQEAKKy8vIENvcHly
aWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lO
VEVSTkFMX1RSQUlUU19IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9UUkFJVFNfSF8K
KworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVf
dHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbmZpZy5oIgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gcmFuZG9tX2ludGVybmFsOjpp
c193aWRlbmluZ19jb252ZXJ0aWJsZTxBLCBCPgorLy8KKy8vIFJldHVybnMgd2hldGhlciBhIHR5
cGUgQSBpcyB3aWRlbmluZy1jb252ZXJ0aWJsZSB0byBhIHR5cGUgQi4KKy8vCisvLyBBIGlzIHdp
ZGVuaW5nLWNvbnZlcnRpYmxlIHRvIEIgbWVhbnM6CisvLyAgIEEgYSA9IDxhbnkgbnVtYmVyPjsK
Ky8vICAgQiBiID0gYTsKKy8vICAgQSBjID0gYjsKKy8vICAgRVhQRUNUX0VRKGEsIGMpOwordGVt
cGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+CitjbGFzcyBpc193aWRlbmluZ19jb252ZXJ0
aWJsZSB7CisgIC8vIEFzIGxvbmcgYXMgdGhlcmUgYXJlIGVub3VnaCBiaXRzIGluIHRoZSBleGFj
dCBwYXJ0IG9mIGEgbnVtYmVyOgorICAvLyAtIHVuc2lnbmVkIGNhbiBmaXQgaW4gZmxvYXQsIHNp
Z25lZCwgdW5zaWduZWQKKyAgLy8gLSBzaWduZWQgY2FuIGZpdCBpbiBmbG9hdCwgc2lnbmVkCisg
IC8vIC0gZmxvYXQgY2FuIGZpdCBpbiBmbG9hdAorICAvLyBTbyB3ZSBkZWZpbmUgcmFuayB0byBi
ZToKKyAgLy8gLSByYW5rKGZsb2F0KSAtPiAyCisgIC8vIC0gcmFuayhzaWduZWQpIC0+IDEKKyAg
Ly8gLSByYW5rKHVuc2lnbmVkKSAtPiAwCisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICBzdGF0aWMg
Y29uc3RleHByIGludCByYW5rKCkgeworICAgIHJldHVybiAhc3RkOjpudW1lcmljX2xpbWl0czxU
Pjo6aXNfaW50ZWdlciArCisgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3Np
Z25lZDsKKyAgfQorCisgcHVibGljOgorICAvLyBJZiBhbiBhcml0aG1ldGljLXR5cGUgQiBjYW4g
cmVwcmVzZW50IGF0IGxlYXN0IGFzIG1hbnkgZGlnaXRzIGFzIGEgdHlwZSBBLAorICAvLyBhbmQg
QiBiZWxvbmdzIHRvIGEgcmFuayBubyBsb3dlciB0aGFuIEEsIHRoZW4gQSBjYW4gYmUgc2FmZWx5
IHJlcHJlc2VudGVkCisgIC8vIGJ5IEIgdGhyb3VnaCBhIHdpZGVuaW5nLWNvbnZlcnNpb24uCisg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9CisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRz
PEE+OjpkaWdpdHMgPD0gc3RkOjpudW1lcmljX2xpbWl0czxCPjo6ZGlnaXRzICYmCisgICAgICBy
YW5rPEE+KCkgPD0gcmFuazxCPigpOworfTsKKworLy8gdW5zaWduZWRfYml0czxOPjo6dHlwZSBy
ZXR1cm5zIHRoZSB1bnNpZ25lZCBpbnQgdHlwZSB3aXRoIHRoZSBpbmRpY2F0ZWQKKy8vIG51bWJl
ciBvZiBiaXRzLgordGVtcGxhdGUgPHNpemVfdCBOPgorc3RydWN0IHVuc2lnbmVkX2JpdHM7CisK
K3RlbXBsYXRlIDw+CitzdHJ1Y3QgdW5zaWduZWRfYml0czw4PiB7CisgIHVzaW5nIHR5cGUgPSB1
aW50OF90OworfTsKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgdW5zaWduZWRfYml0czwxNj4geworICB1
c2luZyB0eXBlID0gdWludDE2X3Q7Cit9OwordGVtcGxhdGUgPD4KK3N0cnVjdCB1bnNpZ25lZF9i
aXRzPDMyPiB7CisgIHVzaW5nIHR5cGUgPSB1aW50MzJfdDsKK307Cit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IHVuc2lnbmVkX2JpdHM8NjQ+IHsKKyAgdXNpbmcgdHlwZSA9IHVpbnQ2NF90OworfTsKKwor
I2lmZGVmIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IHVu
c2lnbmVkX2JpdHM8MTI4PiB7CisgIHVzaW5nIHR5cGUgPSBfX3VpbnQxMjhfdDsKK307CisjZW5k
aWYKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CitzdHJ1Y3QgbWFrZV91bnNpZ25lZF9i
aXRzIHsKKyAgdXNpbmcgdHlwZSA9IHR5cGVuYW1lIHVuc2lnbmVkX2JpdHM8c3RkOjpudW1lcmlj
X2xpbWl0czwKKyAgICAgIHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnRUeXBlPjo6dHlw
ZT46OmRpZ2l0cz46OnR5cGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFs
Cit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFM
X1RSQUlUU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0c190ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0c190ZXN0LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4
NDQ4ODdkM2U0NDMzZWNmOTA1MTg1ODA4YTBiODAyOTgzYmRiNjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvdHJhaXRzX3Rlc3QuY2MKQEAgLTAsMCArMSwxMjYgQEAK
Ky8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vaW50ZXJuYWwvdHJhaXRzLmgiCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNl
IHsKKwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjppc193aWRlbmluZ19jb252ZXJ0aWJs
ZTsKKworLy8gQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG9TZWxmPFQxLCBUMiwgLi4uPigpCisvLwor
Ly8gRm9yIGVhY2ggdHlwZSBULCBjaGVja3M6CisvLyAtIFQgSVMgd2lkZW5pbmctY29udmVydGli
bGUgdG8gaXRzZWxmLgorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBDaGVja1dpZGVu
aW5nQ29udmVydHNUb1NlbGYoKSB7CisgIHN0YXRpY19hc3NlcnQoaXNfd2lkZW5pbmdfY29udmVy
dGlibGU8VCwgVD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJUeXBlIGlzIG5vdCBjb252ZXJ0
aWJsZSB0byBzZWxmISIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTmV4
dCwgdHlwZW5hbWUuLi4gQXJncz4KK3ZvaWQgQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG9TZWxmKCkg
eworICBDaGVja1dpZGVuaW5nQ29udmVydHNUb1NlbGY8VD4oKTsKKyAgQ2hlY2tXaWRlbmluZ0Nv
bnZlcnRzVG9TZWxmPE5leHQsIEFyZ3MuLi4+KCk7Cit9CisKKy8vIENoZWNrTm90V2lkZW5pbmdD
b252ZXJ0aWJsZVdpdGhTaWduZWQ8VDEsIFQyLCAuLi4+KCkKKy8vCisvLyBGb3IgZWFjaCB1bnNp
Z25lZC10eXBlIFQsIGNoZWNrcyB0aGF0OgorLy8gLSBUIGlzIE5PVCB3aWRlbmluZy1jb252ZXJ0
aWJsZSB0byBTaWduZWQoVCkKKy8vIC0gU2lnbmVkKFQpIGlzIE5PVCB3aWRlbmluZy1jb252ZXJ0
aWJsZSB0byBUCisvLwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIENoZWNrTm90V2lkZW5p
bmdDb252ZXJ0aWJsZVdpdGhTaWduZWQoKSB7CisgIHVzaW5nIHNpZ25lZF90ID0gdHlwZW5hbWUg
c3RkOjptYWtlX3NpZ25lZDxUPjo6dHlwZTsKKworICBzdGF0aWNfYXNzZXJ0KCFpc193aWRlbmlu
Z19jb252ZXJ0aWJsZTxULCBzaWduZWRfdD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJVbnNp
Z25lZCB0eXBlIGlzIGNvbnZlcnRpYmxlIHRvIHNhbWUtc2l6ZWQgc2lnbmVkLXR5cGUhIik7Cisg
IHN0YXRpY19hc3NlcnQoIWlzX3dpZGVuaW5nX2NvbnZlcnRpYmxlPHNpZ25lZF90LCBUPjo6dmFs
dWUsCisgICAgICAgICAgICAgICAgIlNpZ25lZCB0eXBlIGlzIGNvbnZlcnRpYmxlIHRvIHNhbWUt
c2l6ZWQgdW5zaWduZWQtdHlwZSEiKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIE5leHQsIHR5cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIENoZWNrTm90V2lkZW5pbmdDb252ZXJ0
aWJsZVdpdGhTaWduZWQoKSB7CisgIENoZWNrTm90V2lkZW5pbmdDb252ZXJ0aWJsZVdpdGhTaWdu
ZWQ8VD4oKTsKKyAgQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG9TZWxmPE5leHQsIEFyZ3MuLi4+KCk7
Cit9CisKKy8vIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvTGFyZ2VyVHlwZTxUMSwgVDIsIC4uLj4o
KQorLy8KKy8vIEZvciBlYWNoIHN1Y2Nlc3NpdmUgdW5zaWduZWQtdHlwZXMge1RpLCBUaSsxfSwg
Y2hlY2tzIHRoYXQ6CisvLyAtIFRpIElTIHdpZGVuaW5nLWNvbnZlcnRpYmxlIHRvIFRpKzEKKy8v
IC0gVGkgSVMgd2lkZW5pbmctY29udmVydGlibGUgdG8gU2lnbmVkKFRpKzEpCisvLyAtIFNpZ25l
ZChUaSkgaXMgTk9UIHdpZGVuaW5nLWNvbnZlcnRpYmxlIHRvIFRpCisvLyAtIFNpZ25lZChUaSkg
SVMgd2lkZW5pbmctY29udmVydGlibGUgdG8gVGkrMQordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEhpZ2hlcj4KK3ZvaWQgQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG9MYXJnZXJUeXBlcygp
IHsKKyAgdXNpbmcgc2lnbmVkX3QgPSB0eXBlbmFtZSBzdGQ6Om1ha2Vfc2lnbmVkPFQ+Ojp0eXBl
OworICB1c2luZyBoaWdoZXJfdCA9IEhpZ2hlcjsKKyAgdXNpbmcgc2lnbmVkX2hpZ2hlcl90ID0g
dHlwZW5hbWUgc3RkOjptYWtlX3NpZ25lZDxIaWdoZXI+Ojp0eXBlOworCisgIHN0YXRpY19hc3Nl
cnQoaXNfd2lkZW5pbmdfY29udmVydGlibGU8VCwgaGlnaGVyX3Q+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAiVHlwZSBub3QgZW1iZWRkYWJsZSBpbnRvIGxhcmdlciB0eXBlISIpOworICBzdGF0
aWNfYXNzZXJ0KGlzX3dpZGVuaW5nX2NvbnZlcnRpYmxlPFQsIHNpZ25lZF9oaWdoZXJfdD46OnZh
bHVlLAorICAgICAgICAgICAgICAgICJUeXBlIG5vdCBlbWJlZGRhYmxlIGludG8gbGFyZ2VyIHNp
Z25lZCB0eXBlISIpOworICBzdGF0aWNfYXNzZXJ0KCFpc193aWRlbmluZ19jb252ZXJ0aWJsZTxz
aWduZWRfdCwgaGlnaGVyX3Q+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiU2lnbmVkIHR5cGUg
aXMgZW1iZWRkYWJsZSBpbnRvIGxhcmdlciB1bnNpZ25lZCB0eXBlISIpOworICBzdGF0aWNfYXNz
ZXJ0KGlzX3dpZGVuaW5nX2NvbnZlcnRpYmxlPHNpZ25lZF90LCBzaWduZWRfaGlnaGVyX3Q+Ojp2
YWx1ZSwKKyAgICAgICAgICAgICAgICAiU2lnbmVkIHR5cGUgbm90IGVtYmVkZGFibGUgaW50byBs
YXJnZXIgc2lnbmVkIHR5cGUhIik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBIaWdoZXIsIHR5cGVuYW1lIE5leHQsIHR5cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIENoZWNrV2lk
ZW5pbmdDb252ZXJ0c1RvTGFyZ2VyVHlwZXMoKSB7CisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1Rv
TGFyZ2VyVHlwZXM8VCwgSGlnaGVyPigpOworICBDaGVja1dpZGVuaW5nQ29udmVydHNUb0xhcmdl
clR5cGVzPEhpZ2hlciwgTmV4dCwgQXJncy4uLj4oKTsKK30KKworLy8gQ2hlY2tXaWRlbmluZ0Nv
bnZlcnRzVG88VCwgVSwgW2V4cGVjdF0+CisvLworLy8gQ2hlY2tzIHRoYXQgVCBET0VTIHdpZGVu
aW5nLWNvbnZlcnQgdG8gVS4KKy8vIElmICJleHBlY3QiIGlzIGZhbHNlLCB0aGVuIGFzc2VydHMg
dGhhdCBUIGRvZXMgTk9UIHdpZGVuaW5nLWNvbnZlcnQgdG8gVS4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCBib29sIGV4cGVjdCA9IHRydWU+Cit2b2lkIENoZWNrV2lkZW5pbmdD
b252ZXJ0c1RvKCkgeworICBzdGF0aWNfYXNzZXJ0KGlzX3dpZGVuaW5nX2NvbnZlcnRpYmxlPFQs
IFU+Ojp2YWx1ZSA9PSBleHBlY3QsCisgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgcmVzdWx0
IGZvciBpc193aWRlbmluZ19jb252ZXJ0aWJsZTxULCBVPiEiKTsKK30KKworVEVTVChUcmFpdHNU
ZXN0LCBJc1dpZGVuaW5nQ29udmVydGlibGVUZXN0KSB7CisgIGNvbnN0ZXhwciBib29sIGtJbnZh
bGlkID0gZmFsc2U7CisKKyAgQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG9TZWxmPAorICAgICAgdWlu
dDhfdCwgdWludDE2X3QsIHVpbnQzMl90LCB1aW50NjRfdCwKKyAgICAgIGludDhfdCwgIGludDE2
X3QsICBpbnQzMl90LCAgaW50NjRfdCwKKyAgICAgIGZsb2F0LCAgIGRvdWJsZT4oKTsKKyAgQ2hl
Y2tOb3RXaWRlbmluZ0NvbnZlcnRpYmxlV2l0aFNpZ25lZDwKKyAgICAgIHVpbnQ4X3QsIHVpbnQx
Nl90LCB1aW50MzJfdCwgdWludDY0X3Q+KCk7CisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvTGFy
Z2VyVHlwZXM8CisgICAgICB1aW50OF90LCB1aW50MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90Pigp
OworCisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvPGZsb2F0LCBkb3VibGU+KCk7CisgIENoZWNr
V2lkZW5pbmdDb252ZXJ0c1RvPHVpbnQxNl90LCBmbG9hdD4oKTsKKyAgQ2hlY2tXaWRlbmluZ0Nv
bnZlcnRzVG88dWludDMyX3QsIGRvdWJsZT4oKTsKKyAgQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG88
dWludDY0X3QsIGRvdWJsZSwga0ludmFsaWQ+KCk7CisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1Rv
PGRvdWJsZSwgZmxvYXQsIGtJbnZhbGlkPigpOworCisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1Rv
PGJvb2wsIGludD4oKTsKKyAgQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG88Ym9vbCwgZmxvYXQ+KCk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFs
L3VuaWZvcm1faGVscGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvdW5pZm9ybV9oZWxwZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMTY0NjQ4OTY0M2E0YTA4ZjJiMmZiMDQ4YmVmNjA3YmNjM2YxZDMyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3VuaWZvcm1faGVscGVyLmgK
QEAgLTAsMCArMSwxNTAgQEAKKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfVU5JRk9STV9IRUxQRVJfSF8KKyNk
ZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfVU5JRk9STV9IRUxQRVJfSF8KKworI2luY2x1ZGUg
PGNtYXRoPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2lu
Y2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorCituYW1lc3BhY2UgYWJzbCB7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK2NsYXNzIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlPgorY2xhc3MgdW5pZm9ybV9yZWFsX2Rpc3Ry
aWJ1dGlvbjsKKworLy8gSW50ZXJ2YWwgdGFnIHR5cGVzIHdoaWNoIHNwZWNpZnkgd2hldGhlciB0
aGUgaW50ZXJ2YWwgaXMgb3BlbiBvciBjbG9zZWQKKy8vIG9uIGVpdGhlciBib3VuZGFyeS4KK25h
bWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworc3RydWN0IEludGVydmFsQ2xvc2VkQ2xvc2VkVCB7
fTsKK3N0cnVjdCBJbnRlcnZhbENsb3NlZE9wZW5UIHt9Oworc3RydWN0IEludGVydmFsT3BlbkNs
b3NlZFQge307CitzdHJ1Y3QgSW50ZXJ2YWxPcGVuT3BlblQge307Cit9ICAvLyBuYW1lc3BhY2Ug
cmFuZG9tX2ludGVybmFsCisKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBUaGUg
ZnVuY3Rpb25zCisvLyAgICB1bmlmb3JtX2xvd2VyX2JvdW5kKHRhZywgYSwgYikKKy8vIGFuZAor
Ly8gICAgdW5pZm9ybV91cHBlcl9ib3VuZCh0YWcsIGEsIGIpCisvLyBhcmUgdXNlZCBhcyBpbXBs
ZW1lbnRhdGlvbi1kZXRhaWxzIGZvciBhYnNsOjpVbmlmb3JtKCkuCisvLworLy8gQ29uY2VwdHVh
bGx5LAorLy8gICAgW2EsIGJdID09IFt1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsQ2xvc2Vk
Q2xvc2VkLCBhLCBiKSwKKy8vICAgICAgICAgICAgICAgdW5pZm9ybV91cHBlcl9ib3VuZChJbnRl
cnZhbENsb3NlZENsb3NlZCwgYSwgYildCisvLyAgICAoYSwgYikgPT0gW3VuaWZvcm1fbG93ZXJf
Ym91bmQoSW50ZXJ2YWxPcGVuT3BlbiwgYSwgYiksCisvLyAgICAgICAgICAgICAgIHVuaWZvcm1f
dXBwZXJfYm91bmQoSW50ZXJ2YWxPcGVuT3BlbiwgYSwgYildCisvLyAgICBbYSwgYikgPT0gW3Vu
aWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRPcGVuLCBhLCBiKSwKKy8vICAgICAgICAg
ICAgICAgdW5pZm9ybV91cHBlcl9ib3VuZChJbnRlcnZhbENsb3NlZE9wZW4sIGEsIGIpXQorLy8g
ICAgKGEsIGJdID09IFt1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsT3BlbkNsb3NlZCwgYSwg
YiksCisvLyAgICAgICAgICAgICAgIHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxPcGVuQ2xv
c2VkLCBhLCBiKV0KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSwgdHlwZW5hbWUgVGFn
PgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgYWJzbDo6Y29uanVuY3Rpb248Cisg
ICAgICAgIHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT4sCisgICAgICAgIGFic2w6OmRpc2p1bmN0
aW9uPHN0ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsT3BlbkNsb3NlZFQ+LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbE9wZW5PcGVuVD4+Pjo6dmFs
dWUsCisgICAgSW50VHlwZT4KK3VuaWZvcm1fbG93ZXJfYm91bmQoVGFnLCBJbnRUeXBlIGEsIElu
dFR5cGUpIHsKKyAgcmV0dXJuIGEgKyAxOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXRU
eXBlLCB0eXBlbmFtZSBUYWc+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICBhYnNs
Ojpjb25qdW5jdGlvbjwKKyAgICAgICAgc3RkOjppc19mbG9hdGluZ19wb2ludDxGbG9hdFR5cGU+
LAorICAgICAgICBhYnNsOjpkaXNqdW5jdGlvbjxzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbE9w
ZW5DbG9zZWRUPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPFRhZywg
SW50ZXJ2YWxPcGVuT3BlblQ+Pj46OnZhbHVlLAorICAgIEZsb2F0VHlwZT4KK3VuaWZvcm1fbG93
ZXJfYm91bmQoVGFnLCBGbG9hdFR5cGUgYSwgRmxvYXRUeXBlIGIpIHsKKyAgcmV0dXJuIHN0ZDo6
bmV4dGFmdGVyKGEsIGIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTnVtVHlwZSwgdHlwZW5h
bWUgVGFnPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgYWJzbDo6ZGlzanVuY3Rp
b248c3RkOjppc19zYW1lPFRhZywgSW50ZXJ2YWxDbG9zZWRDbG9zZWRUPiwKKyAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbENsb3NlZE9wZW5UPj46OnZhbHVl
LAorICAgIE51bVR5cGU+Cit1bmlmb3JtX2xvd2VyX2JvdW5kKFRhZywgTnVtVHlwZSBhLCBOdW1U
eXBlKSB7CisgIHJldHVybiBhOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSwgdHlw
ZW5hbWUgVGFnPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgYWJzbDo6Y29uanVu
Y3Rpb248CisgICAgICAgIHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT4sCisgICAgICAgIGFic2w6
OmRpc2p1bmN0aW9uPHN0ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsQ2xvc2VkT3BlblQ+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbE9wZW5PcGVu
VD4+Pjo6dmFsdWUsCisgICAgSW50VHlwZT4KK3VuaWZvcm1fdXBwZXJfYm91bmQoVGFnLCBJbnRU
eXBlLCBJbnRUeXBlIGIpIHsKKyAgcmV0dXJuIGIgLSAxOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRmxvYXRUeXBlLCB0eXBlbmFtZSBUYWc+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwK
KyAgICBhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAgc3RkOjppc19mbG9hdGluZ19wb2ludDxG
bG9hdFR5cGU+LAorICAgICAgICBhYnNsOjpkaXNqdW5jdGlvbjxzdGQ6OmlzX3NhbWU8VGFnLCBJ
bnRlcnZhbENsb3NlZE9wZW5UPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19z
YW1lPFRhZywgSW50ZXJ2YWxPcGVuT3BlblQ+Pj46OnZhbHVlLAorICAgIEZsb2F0VHlwZT4KK3Vu
aWZvcm1fdXBwZXJfYm91bmQoVGFnLCBGbG9hdFR5cGUsIEZsb2F0VHlwZSBiKSB7CisgIHJldHVy
biBiOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSwgdHlwZW5hbWUgVGFnPgordHlw
ZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAg
IHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT4sCisgICAgICAgIGFic2w6OmRpc2p1bmN0aW9uPHN0
ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsQ2xvc2VkQ2xvc2VkVD4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsT3BlbkNsb3NlZFQ+Pj46OnZhbHVl
LAorICAgIEludFR5cGU+Cit1bmlmb3JtX3VwcGVyX2JvdW5kKFRhZywgSW50VHlwZSwgSW50VHlw
ZSBiKSB7CisgIHJldHVybiBiOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXRUeXBlLCB0
eXBlbmFtZSBUYWc+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICBhYnNsOjpjb25q
dW5jdGlvbjwKKyAgICAgICAgc3RkOjppc19mbG9hdGluZ19wb2ludDxGbG9hdFR5cGU+LAorICAg
ICAgICBhYnNsOjpkaXNqdW5jdGlvbjxzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbENsb3NlZENs
b3NlZFQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VGFnLCBJbnRl
cnZhbE9wZW5DbG9zZWRUPj4+Ojp2YWx1ZSwKKyAgICBGbG9hdFR5cGU+Cit1bmlmb3JtX3VwcGVy
X2JvdW5kKFRhZywgRmxvYXRUeXBlLCBGbG9hdFR5cGUgYikgeworICByZXR1cm4gc3RkOjpuZXh0
YWZ0ZXIoYiwgKHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6bWF4KSgpKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE51bVR5cGU+Cit1c2luZyBVbmlmb3JtRGlzdHJpYnV0aW9uID0K
KyAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfaW50ZWdyYWw8TnVtVHlwZT46
OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uPE51bVR5cGU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxOdW1UeXBlPj46OnR5cGU7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUYWdUeXBlLCB0eXBlbmFtZSBOdW1UeXBlPgorc3RydWN0IFVuaWZvcm1EaXN0
cmlidXRpb25XcmFwcGVyIDogcHVibGljIFVuaWZvcm1EaXN0cmlidXRpb248TnVtVHlwZT4gewor
ICBleHBsaWNpdCBVbmlmb3JtRGlzdHJpYnV0aW9uV3JhcHBlcihOdW1UeXBlIGxvLCBOdW1UeXBl
IGhpKQorICAgICAgOiBVbmlmb3JtRGlzdHJpYnV0aW9uPE51bVR5cGU+KAorICAgICAgICAgICAg
dW5pZm9ybV9sb3dlcl9ib3VuZDxOdW1UeXBlPihUYWdUeXBle30sIGxvLCBoaSksCisgICAgICAg
ICAgICB1bmlmb3JtX3VwcGVyX2JvdW5kPE51bVR5cGU+KFRhZ1R5cGV7fSwgbG8sIGhpKSkge30K
K307CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfVU5JRk9STV9IRUxQRVJfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9sb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFjNDM0MTZlZTU3MzIyMDQyYTJlNTZiZDQwODU5OWUxNjBjOGVkNzEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oCkBAIC0wLDAg
KzEsMjUwIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lm
bmRlZiBBQlNMX1JBTkRPTV9MT0dfVU5JRk9STV9JTlRfRElTVFJJQlVUSU9OX0hfCisjZGVmaW5l
IEFCU0xfUkFORE9NX0xPR19VTklGT1JNX0lOVF9ESVNUUklCVVRJT05fSF8KKworI2luY2x1ZGUg
PGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1
ZGUgPGlzdHJlYW0+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG9zdHJlYW0+CisjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0
cmlidXRpb25faW1wbC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RtYXRo
LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIu
aCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC90cmFpdHMuaCIKKyNpbmNsdWRlICJh
YnNsL3JhbmRvbS91bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIKKworbmFtZXNwYWNlIGFic2wg
eworCisvLyBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uOgorLy8KKy8vIFJldHVybnMgYSBy
YW5kb20gdmFyaWF0ZSBSIGluIHJhbmdlIFttaW4sIG1heF0gc3VjaCB0aGF0CisvLyBmbG9vcihs
b2coUi1taW4sIGJhc2UpKSBpcyB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQuCisvLyBXZSBlbnN1cmUg
dW5pZm9ybWl0eSBieSBkaXNjcmV0aXphdGlvbiB1c2luZyB0aGUKKy8vIGJvdW5kYXJ5IHNldHMg
WzAsIDEsIGJhc2UsIGJhc2UgKiBiYXNlLCAuLi4gbWluKGJhc2UqbiwgbWF4KV0KKy8vCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgSW50VHlwZSA9IGludD4KK2NsYXNzIGxvZ191bmlmb3JtX2ludF9kaXN0
cmlidXRpb24geworIHByaXZhdGU6CisgIHVzaW5nIHVuc2lnbmVkX3R5cGUgPQorICAgICAgdHlw
ZW5hbWUgcmFuZG9tX2ludGVybmFsOjptYWtlX3Vuc2lnbmVkX2JpdHM8SW50VHlwZT46OnR5cGU7
CisKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gSW50VHlwZTsKKworICBjbGFzcyBw
YXJhbV90eXBlIHsKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBkaXN0cmlidXRpb25fdHlwZSA9IGxv
Z191bmlmb3JtX2ludF9kaXN0cmlidXRpb247CisKKyAgICBleHBsaWNpdCBwYXJhbV90eXBlKAor
ICAgICAgICByZXN1bHRfdHlwZSBtaW4gPSAwLAorICAgICAgICByZXN1bHRfdHlwZSBtYXggPSAo
c3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCkoKSwKKyAgICAgICAgcmVzdWx0
X3R5cGUgYmFzZSA9IDIpCisgICAgICAgIDogbWluXyhtaW4pLAorICAgICAgICAgIG1heF8obWF4
KSwKKyAgICAgICAgICBiYXNlXyhiYXNlKSwKKyAgICAgICAgICByYW5nZV8oc3RhdGljX2Nhc3Q8
dW5zaWduZWRfdHlwZT4obWF4XykgLQorICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZF90eXBlPihtaW5fKSksCisgICAgICAgICAgbG9nX3JhbmdlXygwKSB7CisgICAgICBhc3Nl
cnQobWF4XyA+PSBtaW5fKTsKKyAgICAgIGFzc2VydChiYXNlXyA+IDEpOworCisgICAgICBpZiAo
YmFzZV8gPT0gMikgeworICAgICAgICAvLyBEZXRlcm1pbmUgd2hlcmUgdGhlIGZpcnN0IHNldCBi
aXQgaXMgb24gcmFuZ2UoKSwgZ2l2aW5nIGEgbG9nMihyYW5nZSkKKyAgICAgICAgLy8gdmFsdWUg
d2hpY2ggY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJvdW5kcy4KKyAgICAgICAgbG9nX3Jhbmdl
XyA9IChzdGQ6Om1pbikocmFuZG9tX2ludGVybmFsOjpMZWFkaW5nU2V0Qml0KHJhbmdlKCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkX3R5cGU+OjpkaWdpdHMpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTk9URTogQ29t
cHV0aW5nIHRoZSBsb2dOKHgpIGludHJvZHVjZXMgZXJyb3IgZnJvbSAyIHNvdXJjZXM6CisgICAg
ICAgIC8vIDEuIENvbnZlcnNpb24gb2YgaW50IHRvIGRvdWJsZSBsb3NlcyBwcmVjaXNpb24gZm9y
IHZhbHVlcyA+PQorICAgICAgICAvLyAyXjUzLCB3aGljaCBtYXkgY2F1c2Ugc29tZSBsb2coKSBj
b21wdXRhdGlvbnMgdG8gb3BlcmF0ZSBvbgorICAgICAgICAvLyBkaWZmZXJlbnQgdmFsdWVzLgor
ICAgICAgICAvLyAyLiBUaGUgZXJyb3IgaW50cm9kdWNlZCBieSB0aGUgZGl2aXNpb24gd2lsbCBj
YXVzZSB0aGUgcmVzdWx0CisgICAgICAgIC8vIHRvIGRpZmZlciBmcm9tIHRoZSBleHBlY3RlZCB2
YWx1ZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGh1cyBhIHJlc3VsdCB3aGljaCBzaG91bGQg
ZXF1YWwgSyBtYXkgZXF1YWwgSyArLy0gZXBzaWxvbiwKKyAgICAgICAgLy8gd2hpY2ggY2FuIGVs
aW1pbmF0ZSBzb21lIHZhbHVlcyBkZXBlbmRpbmcgb24gd2hlcmUgdGhlIGJvdW5kcyBmYWxsLgor
ICAgICAgICBjb25zdCBkb3VibGUgaW52X2xvZ19iYXNlID0gMS4wIC8gc3RkOjpsb2coYmFzZV8p
OworICAgICAgICBjb25zdCBkb3VibGUgbG9nX3JhbmdlID0gc3RkOjpsb2coc3RhdGljX2Nhc3Q8
ZG91YmxlPihyYW5nZSgpKSArIDAuNSk7CisgICAgICAgIGxvZ19yYW5nZV8gPSBzdGF0aWNfY2Fz
dDxpbnQ+KHN0ZDo6Y2VpbChpbnZfbG9nX2Jhc2UgKiBsb2dfcmFuZ2UpKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICByZXN1bHRfdHlwZShtaW4pKCkgY29uc3QgeyByZXR1cm4gbWluXzsgfQorICAg
IHJlc3VsdF90eXBlKG1heCkoKSBjb25zdCB7IHJldHVybiBtYXhfOyB9CisgICAgcmVzdWx0X3R5
cGUgYmFzZSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VfOyB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAgICAg
IHJldHVybiBhLm1pbl8gPT0gYi5taW5fICYmIGEubWF4XyA9PSBiLm1heF8gJiYgYS5iYXNlXyA9
PSBiLmJhc2VfOworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcGFy
YW1fdHlwZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuICEoYSA9PSBi
KTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIGxvZ191bmlmb3JtX2lu
dF9kaXN0cmlidXRpb247CisKKyAgICBpbnQgbG9nX3JhbmdlKCkgY29uc3QgeyByZXR1cm4gbG9n
X3JhbmdlXzsgfQorICAgIHVuc2lnbmVkX3R5cGUgcmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5n
ZV87IH0KKworICAgIHJlc3VsdF90eXBlIG1pbl87CisgICAgcmVzdWx0X3R5cGUgbWF4XzsKKyAg
ICByZXN1bHRfdHlwZSBiYXNlXzsKKyAgICB1bnNpZ25lZF90eXBlIHJhbmdlXzsgIC8vIG1heCAt
IG1pbgorICAgIGludCBsb2dfcmFuZ2VfOyAgICAgICAgLy8gY2VpbChsb2dOKHJhbmdlXykpCisK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT46OnZhbHVlLAorICAg
ICAgICAgICAgICAgICAgIkNsYXNzLXRlbXBsYXRlIGFic2w6OmxvZ191bmlmb3JtX2ludF9kaXN0
cmlidXRpb248PiBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJpemVkIHVz
aW5nIGFuIGludGVncmFsIHR5cGUuIik7CisgIH07CisKKyAgbG9nX3VuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbigpIDogbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbigwKSB7fQorCisgIGV4cGxp
Y2l0IGxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb24oCisgICAgICByZXN1bHRfdHlwZSBtaW4s
CisgICAgICByZXN1bHRfdHlwZSBtYXggPSAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlw
ZT46Om1heCkoKSwKKyAgICAgIHJlc3VsdF90eXBlIGJhc2UgPSAyKQorICAgICAgOiBwYXJhbV8o
bWluLCBtYXgsIGJhc2UpIHt9CisKKyAgZXhwbGljaXQgbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1
dGlvbihjb25zdCBwYXJhbV90eXBlJiBwKSA6IHBhcmFtXyhwKSB7fQorCisgIHZvaWQgcmVzZXQo
KSB7fQorCisgIC8vIGdlbmVyYXRpbmcgZnVuY3Rpb25zCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
UkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50
aW1lL3JlZmVyZW5jZXMpCisgICAgcmV0dXJuICgqdGhpcykoZywgcGFyYW1fKTsKKyAgfQorCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcm
IGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHBhcmFtX3R5cGUmIHApIHsKKyAgICByZXR1cm4gKHAubWluKSgpICsgR2VuZXJh
dGUoZywgcCk7CisgIH0KKworICByZXN1bHRfdHlwZShtaW4pKCkgY29uc3QgeyByZXR1cm4gKHBh
cmFtXy5taW4pKCk7IH0KKyAgcmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsgcmV0dXJuIChwYXJh
bV8ubWF4KSgpOyB9CisgIHJlc3VsdF90eXBlIGJhc2UoKSBjb25zdCB7IHJldHVybiBwYXJhbV8u
YmFzZSgpOyB9CisKKyAgcGFyYW1fdHlwZSBwYXJhbSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXzsg
fQorICB2b2lkIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIHApIHsgcGFyYW1fID0gcDsgfQorCisg
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
biYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2dfdW5pZm9ybV9pbnRfZGlz
dHJpYnV0aW9uJiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fID09IGIucGFyYW1fOworICB9Cisg
IGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
biYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2dfdW5pZm9ybV9pbnRfZGlz
dHJpYnV0aW9uJiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fICE9IGIucGFyYW1fOworICB9CisK
KyBwcml2YXRlOgorICAvLyBSZXR1cm5zIGEgbG9nLXVuaWZvcm0gdmFyaWF0ZSBpbiB0aGUgcmFu
Z2UgWzAsIHAucmFuZ2UoKV0uIFRoZSBjYWxsZXIKKyAgLy8gc2hvdWxkIGFkZCBtaW4oKSB0byBz
aGlmdCB0aGUgcmVzdWx0IHRvIHRoZSBjb3JyZWN0IHJhbmdlLgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVVJORz4KKyAgdW5zaWduZWRfdHlwZSBHZW5lcmF0ZShVUk5HJiBnLCAgLy8gTk9MSU5UKHJ1
bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbV90
eXBlJiBwKTsKKworICBwYXJhbV90eXBlIHBhcmFtXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJbnRUeXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSBsb2dfdW5pZm9y
bV9pbnRfZGlzdHJpYnV0aW9uPEludFR5cGU+Ojp1bnNpZ25lZF90eXBlCitsb2dfdW5pZm9ybV9p
bnRfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpHZW5lcmF0ZSgKKyAgICBVUkJHJiBnLCAgLy8gTk9M
SU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBjb25zdCBwYXJhbV90eXBlJiBwKSB7CisgIC8v
IHNhbXBsZSBlIG92ZXIgWzAsIGxvZ19yYW5nZV0uIE1hcCB0aGUgcmVzdWx0cyBvZiBlIHRvIHRo
aXM6CisgIC8vIDAgPT4gMAorICAvLyAxID0+IFsxLCBiLTFdCisgIC8vIDIgPT4gW2IsIChiXjIp
LTFdCisgIC8vIG4gPT4gW2JeKG4tMSkuLihiXm4pLTFdCisgIGNvbnN0IGludCBlID0gYWJzbDo6
dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludD4oMCwgcC5sb2dfcmFuZ2UoKSkoZyk7CisgIGlm
IChlID09IDApIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBjb25zdCBpbnQgZCA9IGUgLSAxOwor
CisgIHVuc2lnbmVkX3R5cGUgYmFzZV9lLCB0b3BfZTsKKyAgaWYgKHAuYmFzZSgpID09IDIpIHsK
KyAgICBiYXNlX2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZF90eXBlPigxKSA8PCBkOworCisgICAg
dG9wX2UgPSAoZSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkX3R5cGU+OjpkaWdpdHMp
CisgICAgICAgICAgICAgICAgPyAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZF90eXBlPjo6
bWF4KSgpCisgICAgICAgICAgICAgICAgOiAoc3RhdGljX2Nhc3Q8dW5zaWduZWRfdHlwZT4oMSkg
PDwgZSkgLSAxOworICB9IGVsc2UgeworICAgIGNvbnN0IGRvdWJsZSByID0gc3RkOjpwb3cocC5i
YXNlKCksIGQpOworICAgIGNvbnN0IGRvdWJsZSBzID0gKHIgKiBwLmJhc2UoKSkgLSAxLjA7CisK
KyAgICBiYXNlX2UgPSAociA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkX3R5cGU+Ojpt
YXgpKCkpCisgICAgICAgICAgICAgICAgID8gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWRf
dHlwZT46Om1heCkoKQorICAgICAgICAgICAgICAgICA6IHN0YXRpY19jYXN0PHVuc2lnbmVkX3R5
cGU+KHIpOworCisgICAgdG9wX2UgPSAocyA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
X3R5cGU+OjptYXgpKCkpCisgICAgICAgICAgICAgICAgPyAoc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZF90eXBlPjo6bWF4KSgpCisgICAgICAgICAgICAgICAgOiBzdGF0aWNfY2FzdDx1bnNp
Z25lZF90eXBlPihzKTsKKyAgfQorCisgIGNvbnN0IHVuc2lnbmVkX3R5cGUgbG8gPSAoYmFzZV9l
ID49IHAucmFuZ2UoKSkgPyBwLnJhbmdlKCkgOiBiYXNlX2U7CisgIGNvbnN0IHVuc2lnbmVkX3R5
cGUgaGkgPSAodG9wX2UgPj0gcC5yYW5nZSgpKSA/IHAucmFuZ2UoKSA6IHRvcF9lOworCisgIC8v
IGNob29zZSB1bmlmb3JtbHkgb3ZlciBbbG8sIGhpXQorICByZXR1cm4gYWJzbDo6dW5pZm9ybV9p
bnRfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPihsbywgaGkpKGcpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgSW50VHlwZT4KK3N0ZDo6
YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2lj
X29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9zLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNl
cykKKyAgICBjb25zdCBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPEludFR5cGU+JiB4KSB7
CisgIHVzaW5nIHN0cmVhbV90eXBlID0KKyAgICAgIHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6
c3RyZWFtX2Zvcm1hdF90eXBlPEludFR5cGU+Ojp0eXBlOworICBhdXRvIHNhdmVyID0gcmFuZG9t
X2ludGVybmFsOjptYWtlX29zdHJlYW1fc3RhdGVfc2F2ZXIob3MpOworICBvcyA8PCBzdGF0aWNf
Y2FzdDxzdHJlYW1fdHlwZT4oKHgubWluKSgpKSA8PCBvcy5maWxsKCkKKyAgICAgPDwgc3RhdGlj
X2Nhc3Q8c3RyZWFtX3R5cGU+KCh4Lm1heCkoKSkgPDwgb3MuZmlsbCgpCisgICAgIDw8IHN0YXRp
Y19jYXN0PHN0cmVhbV90eXBlPih4LmJhc2UoKSk7CisgIHJldHVybiBvczsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEludFR5cGU+Citz
dGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPj4oCisgICAgc3RkOjpi
YXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBpcywgICAgICAgLy8gTk9MSU5UKHJ1bnRpbWUv
cmVmZXJlbmNlcykKKyAgICBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPEludFR5cGU+JiB4
KSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICB1c2luZyBwYXJhbV90eXBlID0g
dHlwZW5hbWUgbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6cGFyYW1fdHlw
ZTsKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPQorICAgICAgdHlwZW5hbWUgbG9nX3VuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6cmVzdWx0X3R5cGU7CisgIHVzaW5nIHN0cmVhbV90eXBl
ID0KKyAgICAgIHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX2Zvcm1hdF90eXBlPElu
dFR5cGU+Ojp0eXBlOworCisgIHN0cmVhbV90eXBlIG1pbjsKKyAgc3RyZWFtX3R5cGUgbWF4Owor
ICBzdHJlYW1fdHlwZSBiYXNlOworCisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1h
a2VfaXN0cmVhbV9zdGF0ZV9zYXZlcihpcyk7CisgIGlzID4+IG1pbiA+PiBtYXggPj4gYmFzZTsK
KyAgaWYgKCFpcy5mYWlsKCkpIHsKKyAgICB4LnBhcmFtKHBhcmFtX3R5cGUoc3RhdGljX2Nhc3Q8
cmVzdWx0X3R5cGU+KG1pbiksCisgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHJl
c3VsdF90eXBlPihtYXgpLAorICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxyZXN1
bHRfdHlwZT4oYmFzZSkpKTsKKyAgfQorICByZXR1cm4gaXM7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fTE9HX1VOSUZPUk1fSU5UX0RJU1RSSUJV
VElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2xvZ191bmlmb3JtX2ludF9kaXN0cmli
dXRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9sb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9u
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZmNGMzMmQ5NWQ2YzQxNjAyZmE3NjM4Y2JmMGFkMmE0OWIw
NmMxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9sb2dfdW5pZm9ybV9pbnRfZGlz
dHJpYnV0aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSwyNzcgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRo
ZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1f
aW50X2Rpc3RyaWJ1dGlvbi5oIgorCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3Rk
aW50PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxz
c3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRl
ICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJz
bC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50
ZXJuYWwvY2hpX3NxdWFyZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3Ry
aWJ1dGlvbl90ZXN0X3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1
ZW5jZV91cmJnLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2Zvcm1h
dC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5oIgorI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9zdHJpcC5oIgorCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW50VHlwZT4KK2NsYXNzIExvZ1VuaWZvcm1JbnREaXN0cmlidXRpb25UeXBlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3VzaW5nIEludFR5cGVzID0gOjp0ZXN0aW5nOjpUeXBl
czxpbnQ4X3QsIGludDE2X3QsIGludDMyX3QsIGludDY0X3QsICAvLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QsIHVpbnQxNl90LCB1aW50MzJfdCwgdWludDY0X3Q+
OworVFlQRURfVEVTVF9DQVNFKExvZ1VuaWZvcm1JbnREaXN0cmlidXRpb25UeXBlVGVzdCwgSW50
VHlwZXMpOworCitUWVBFRF9URVNUKExvZ1VuaWZvcm1JbnREaXN0cmlidXRpb25UeXBlVGVzdCwg
U2VyaWFsaXplVGVzdCkgeworICB1c2luZyBwYXJhbV90eXBlID0KKyAgICAgIHR5cGVuYW1lIGFi
c2w6OmxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248VHlwZVBhcmFtPjo6cGFyYW1fdHlwZTsK
KyAgdXNpbmcgTGltaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OworCisgIGNv
bnN0ZXhwciBpbnQga0NvdW50ID0gMTAwMDsKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOwor
ICBmb3IgKGNvbnN0IGF1dG8mIHBhcmFtIDogeworICAgICAgICAgICBwYXJhbV90eXBlKDAsIDEp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgcGFyYW1fdHlwZSgw
LCAyKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgIHBhcmFtX3R5
cGUoMCwgMiwgMTApLCAgICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAgICBwYXJh
bV90eXBlKDksIDMyLCA0KSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAg
cGFyYW1fdHlwZSgxLCAxMDEsIDEwKSwgICAgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAg
ICAgIHBhcmFtX3R5cGUoMSwgTGltaXRzOjptYXgoKSAvIDIpLCAgICAgICAgICAgICAvLworICAg
ICAgICAgICBwYXJhbV90eXBlKDAsIExpbWl0czo6bWF4KCkgLSAxKSwgICAgICAgICAgICAgLy8K
KyAgICAgICAgICAgcGFyYW1fdHlwZSgwLCBMaW1pdHM6Om1heCgpLCAyKSwgICAgICAgICAgICAg
IC8vCisgICAgICAgICAgIHBhcmFtX3R5cGUoMCwgTGltaXRzOjptYXgoKSwgMTApLCAgICAgICAg
ICAgICAvLworICAgICAgICAgICBwYXJhbV90eXBlKExpbWl0czo6bWluKCksIDApLCAgICAgICAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgcGFyYW1fdHlwZShMaW1pdHM6Omxvd2VzdCgpLCBMaW1p
dHM6Om1heCgpKSwgIC8vCisgICAgICAgICAgIHBhcmFtX3R5cGUoTGltaXRzOjptaW4oKSwgTGlt
aXRzOjptYXgoKSksICAgICAvLworICAgICAgIH0pIHsKKyAgICAvLyBWYWxpZGF0ZSBwYXJhbWV0
ZXJzLgorICAgIGNvbnN0IGF1dG8gbWluID0gcGFyYW0ubWluKCk7CisgICAgY29uc3QgYXV0byBt
YXggPSBwYXJhbS5tYXgoKTsKKyAgICBjb25zdCBhdXRvIGJhc2UgPSBwYXJhbS5iYXNlKCk7Cisg
ICAgYWJzbDo6bG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGJlZm9yZSht
aW4sIG1heCwgYmFzZSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5taW4oKSwgcGFyYW0ubWluKCkp
OworICAgIEVYUEVDVF9FUShiZWZvcmUubWF4KCksIHBhcmFtLm1heCgpKTsKKyAgICBFWFBFQ1Rf
RVEoYmVmb3JlLmJhc2UoKSwgcGFyYW0uYmFzZSgpKTsKKworICAgIHsKKyAgICAgIGFic2w6Omxv
Z191bmlmb3JtX2ludF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiB2aWFfcGFyYW0ocGFyYW0pOwor
ICAgICAgRVhQRUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAgICB9CisKKyAgICAvLyBWYWxp
ZGF0ZSBzdHJlYW0gc2VyaWFsaXphdGlvbi4KKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAg
ICBzcyA8PCBiZWZvcmU7CisKKyAgICBhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9u
PFR5cGVQYXJhbT4gYWZ0ZXIoMywgNiwgMTcpOworCisgICAgRVhQRUNUX05FKGJlZm9yZS5tYXgo
KSwgYWZ0ZXIubWF4KCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUuYmFzZSgpLCBhZnRlci5iYXNl
KCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgICAg
RVhQRUNUX05FKGJlZm9yZSwgYWZ0ZXIpOworCisgICAgc3MgPj4gYWZ0ZXI7CisKKyAgICBFWFBF
Q1RfRVEoYmVmb3JlLm1pbigpLCBhZnRlci5taW4oKSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5t
YXgoKSwgYWZ0ZXIubWF4KCkpOworICAgIEVYUEVDVF9FUShiZWZvcmUuYmFzZSgpLCBhZnRlci5i
YXNlKCkpOworICAgIEVYUEVDVF9FUShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7Cisg
ICAgRVhQRUNUX0VRKGJlZm9yZSwgYWZ0ZXIpOworCisgICAgLy8gU21va2UgdGVzdC4KKyAgICBh
dXRvIHNhbXBsZV9taW4gPSBhZnRlci5tYXgoKTsKKyAgICBhdXRvIHNhbXBsZV9tYXggPSBhZnRl
ci5taW4oKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGtDb3VudDsgaSsrKSB7CisgICAgICBh
dXRvIHNhbXBsZSA9IGFmdGVyKGdlbik7CisgICAgICBFWFBFQ1RfR0Uoc2FtcGxlLCBhZnRlci5t
aW4oKSk7CisgICAgICBFWFBFQ1RfTEUoc2FtcGxlLCBhZnRlci5tYXgoKSk7CisgICAgICBpZiAo
c2FtcGxlID4gc2FtcGxlX21heCkgc2FtcGxlX21heCA9IHNhbXBsZTsKKyAgICAgIGlmIChzYW1w
bGUgPCBzYW1wbGVfbWluKSBzYW1wbGVfbWluID0gc2FtcGxlOworICAgIH0KKyAgICBBQlNMX0lO
VEVSTkFMX0xPRyhJTkZPLAorICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlN0ckNhdCgiUmFu
Z2U6ICIsICtzYW1wbGVfbWluLCAiLCAiLCArc2FtcGxlX21heCkpOworICB9Cit9CisKK3VzaW5n
IGxvZ191bmlmb3JtX2kzMiA9IGFic2w6OmxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50
MzJfdD47CisKK2NsYXNzIExvZ1VuaWZvcm1JbnRDaGlTcXVhcmVkVGVzdAorICAgIDogcHVibGlj
IHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08bG9nX3VuaWZvcm1faTMyOjpwYXJhbV90eXBlPiB7Cisg
cHVibGljOgorICAvLyBUaGUgQ2hpU3F1YXJlZFRlc3RJbXBsIHByb3ZpZGVzIGEgY2hpLXNxdWFy
ZWQgZ29vZG5lc3Mgb2YgZml0IHRlc3QgZm9yCisgIC8vIGRhdGEgZ2VuZXJhdGVkIGJ5IHRoZSBs
b2ctdW5pZm9ybS1pbnQgZGlzdHJpYnV0aW9uLgorICBkb3VibGUgQ2hpU3F1YXJlZFRlc3RJbXBs
KCk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gcm5nXzsKK307CisKK2RvdWJsZSBMb2dVbmlm
b3JtSW50Q2hpU3F1YXJlZFRlc3Q6OkNoaVNxdWFyZWRUZXN0SW1wbCgpIHsKKyAgdXNpbmcgYWJz
bDo6cmFuZG9tX2ludGVybmFsOjprQ2hpU3F1YXJlZDsKKworICBjb25zdCBhdXRvJiBwYXJhbSA9
IEdldFBhcmFtKCk7CisKKyAgLy8gQ2hlY2sgdGhlIGRpc3RyaWJ1dGlvbiBvZiBMPWxvZyhsb2df
dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLCBiYXNlKSwKKyAgLy8gZXhwZWN0aW5nIHRoYXQgTCBp
cyByb3VnaGx5IHVuaWZvcm1seSBkaXN0cmlidXRlZCwgdGhhdCBpczoKKyAgLy8KKyAgLy8gICBQ
W0w9MF0gfj0gUFtMPTFdIH49IC4uLiB+PSBQW0w9bG9nKG1heCldCisgIC8vCisgIC8vIEZvciBh
IHRvdGFsIG9mIFggZW50cmllcywgZWFjaCBidWNrZXQgc2hvdWxkIGNvbnRhaW4gc29tZSBudW1i
ZXIgb2Ygc2FtcGxlcworICAvLyBpbiB0aGUgaW50ZXJ2YWwgW1gvayAtIGEsIFgvayArIGFdLgor
ICAvLworICAvLyBXaGVyZSBgYWAgaXMgYXBwcm94aW1hdGVseSBzcXJ0KFgvaykuIFRoaXMgaXMg
dmFsaWRhdGVkIGJ5IGJ1Y2tldGluZworICAvLyBhY2NvcmRpbmcgdG8gdGhlIGxvZyBmdW5jdGlv
biBhbmQgdXNpbmcgYSBjaGktc3F1YXJlZCB0ZXN0IGZvciB1bmlmb3JtaXR5LgorCisgIGNvbnN0
IGJvb2wgaXNfMiA9IChwYXJhbS5iYXNlKCkgPT0gMik7CisgIGNvbnN0IGRvdWJsZSBiYXNlX2xv
ZyA9IDEuMCAvIHN0ZDo6bG9nKHBhcmFtLmJhc2UoKSk7CisgIGNvbnN0IGF1dG8gYnVja2V0X2lu
ZGV4ID0gW2Jhc2VfbG9nLCBpc18yLCAmcGFyYW1dKGludDMyX3QgeCkgeworICAgIHVpbnQ2NF90
IHkgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oeCkgLSBwYXJhbS5taW4oKTsKKyAgICByZXR1cm4g
KHkgPT0gMCkgPyAwCisgICAgICAgICAgICAgICAgICAgIDogaXNfMiA/IHN0YXRpY19jYXN0PGlu
dD4oMSArIHN0ZDo6bG9nMih5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RhdGlj
X2Nhc3Q8aW50PigxICsgc3RkOjpsb2coeSkgKiBiYXNlX2xvZyk7CisgIH07CisgIGNvbnN0IGlu
dCBtYXhfYnVja2V0ID0gYnVja2V0X2luZGV4KHBhcmFtLm1heCgpKTsgIC8vIGluY2x1c2l2ZQor
ICBjb25zdCBzaXplX3QgdHJpYWxzID0gMTUgKyAobWF4X2J1Y2tldCArIDEpICogMTA7CisKKyAg
bG9nX3VuaWZvcm1faTMyIGRpc3QocGFyYW0pOworCisgIHN0ZDo6dmVjdG9yPGludDY0X3Q+IGJ1
Y2tldHMobWF4X2J1Y2tldCArIDEpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyaWFsczsg
KytpKSB7CisgICAgY29uc3QgYXV0byBzYW1wbGUgPSBkaXN0KHJuZ18pOworICAgIC8vIENoZWNr
IHRoZSBib3VuZHMuCisgICAgQUJTTF9BU1NFUlQoc2FtcGxlIDw9IGRpc3QubWF4KCkpOworICAg
IEFCU0xfQVNTRVJUKHNhbXBsZSA+PSBkaXN0Lm1pbigpKTsKKyAgICAvLyBDb252ZXJ0IHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRvciB0byBvbmUgb2YgbnVtX2J1Y2tldCBidWNrZXRzLgorICAg
IGludCBidWNrZXQgPSBidWNrZXRfaW5kZXgoc2FtcGxlKTsKKyAgICBBQlNMX0FTU0VSVChidWNr
ZXQgPD0gbWF4X2J1Y2tldCk7CisgICAgKytidWNrZXRzW2J1Y2tldF07CisgIH0KKworICAvLyBU
aGUgbnVsbC1oeXBvdGhlc2lzIGlzIHRoYXQgdGhlIGRpc3RyaWJ1dGlvbiBpcyB1bmlmb3JtIHdp
dGggcmVzcGVjdCB0bworICAvLyBsb2ctdW5pZm9ybS1pbnQgYnVja2V0aXphdGlvbi4KKyAgY29u
c3QgaW50IGRvZiA9IGJ1Y2tldHMuc2l6ZSgpIC0gMTsKKyAgY29uc3QgZG91YmxlIGV4cGVjdGVk
ID0gdHJpYWxzIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihidWNrZXRzLnNpemUoKSk7CisKKyAgY29u
c3QgZG91YmxlIHRocmVzaG9sZCA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlVmFs
dWUoZG9mLCAwLjk4KTsKKworICBkb3VibGUgY2hpX3NxdWFyZSA9IGFic2w6OnJhbmRvbV9pbnRl
cm5hbDo6Q2hpU3F1YXJlV2l0aEV4cGVjdGVkKAorICAgICAgc3RkOjpiZWdpbihidWNrZXRzKSwg
c3RkOjplbmQoYnVja2V0cyksIGV4cGVjdGVkKTsKKworICBjb25zdCBkb3VibGUgcCA9IGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlUFZhbHVlKGNoaV9zcXVhcmUsIGRvZik7CisKKyAg
aWYgKGNoaV9zcXVhcmUgPiB0aHJlc2hvbGQpIHsKKyAgICBBQlNMX0lOVEVSTkFMX0xPRyhJTkZP
LCAidmFsdWVzIik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBidWNrZXRzLnNpemUoKTsg
aSsrKSB7CisgICAgICBBQlNMX0lOVEVSTkFMX0xPRyhJTkZPLCBhYnNsOjpTdHJDYXQoaSwgIjog
IiwgYnVja2V0c1tpXSkpOworICAgIH0KKyAgICBBQlNMX0lOVEVSTkFMX0xPRyhJTkZPLAorICAg
ICAgICAgICAgICAgICAgICAgIGFic2w6OlN0ckZvcm1hdCgidHJpYWxzPSVkXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyhkYXRhLCAlZCkgPSAlZiAoJWYpXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBAIDAuOTggPSAlZiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFscywga0NoaVNxdWFy
ZWQsIGRvZiwgY2hpX3NxdWFyZSwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga0NoaVNxdWFyZWQsIHRocmVzaG9sZCkpOworICB9CisgIHJldHVybiBwOworfQorCitU
RVNUX1AoTG9nVW5pZm9ybUludENoaVNxdWFyZWRUZXN0LCBNdWx0aVRlc3QpIHsKKyAgY29uc3Qg
aW50IGtUcmlhbHMgPSA1OworCisgIGludCBmYWlsdXJlcyA9IDA7CisgIGZvciAoaW50IGkgPSAw
OyBpIDwga1RyaWFsczsgaSsrKSB7CisgICAgZG91YmxlIHBfdmFsdWUgPSBDaGlTcXVhcmVkVGVz
dEltcGwoKTsKKyAgICBpZiAocF92YWx1ZSA8IDAuMDA1KSB7CisgICAgICBmYWlsdXJlcysrOwor
ICAgIH0KKyAgfQorCisgIC8vIFRoZXJlIGlzIGEgMC4xMCUgY2hhbmNlIG9mIHByb2R1Y2luZyBh
dCBsZWFzdCBvbmUgZmFpbHVyZSwgc28gcmFpc2UgdGhlCisgIC8vIGZhaWx1cmUgdGhyZXNob2xk
IGhpZ2ggZW5vdWdoIHRvIGFsbG93IGZvciBhIGZsYWtlIHJhdGUgPCAxMCwwMDAuCisgIEVYUEVD
VF9MRShmYWlsdXJlcywgNCk7Cit9CisKKy8vIEdlbmVyYXRlIHRoZSBwYXJhbWV0ZXJzIGZvciB0
aGUgdGVzdC4KK3N0ZDo6dmVjdG9yPGxvZ191bmlmb3JtX2kzMjo6cGFyYW1fdHlwZT4gR2VuUGFy
YW1zKCkgeworICB1c2luZyBQYXJhbSA9IGxvZ191bmlmb3JtX2kzMjo6cGFyYW1fdHlwZTsKKyAg
dXNpbmcgTGltaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90PjsKKworICByZXR1cm4g
c3RkOjp2ZWN0b3I8UGFyYW0+eworICAgICAgUGFyYW17MCwgMSwgMn0sCisgICAgICBQYXJhbXsx
LCAxLCAyfSwKKyAgICAgIFBhcmFtezAsIDIsIDJ9LAorICAgICAgUGFyYW17MCwgMywgMn0sCisg
ICAgICBQYXJhbXswLCA0LCAyfSwKKyAgICAgIFBhcmFtezAsIDksIDEwfSwKKyAgICAgIFBhcmFt
ezAsIDEwLCAxMH0sCisgICAgICBQYXJhbXswLCAxMSwgMTB9LAorICAgICAgUGFyYW17MSwgMTAs
IDEwfSwKKyAgICAgIFBhcmFtezAsICgxIDw8IDgpIC0gMSwgMn0sCisgICAgICBQYXJhbXswLCAo
MSA8PCA4KSwgMn0sCisgICAgICBQYXJhbXswLCAoMSA8PCAzMCkgLSAxLCAyfSwKKyAgICAgIFBh
cmFtey0xMDAwLCAxMDAwLCAxMH0sCisgICAgICBQYXJhbXswLCBMaW1pdHM6Om1heCgpLCAyfSwK
KyAgICAgIFBhcmFtezAsIExpbWl0czo6bWF4KCksIDN9LAorICAgICAgUGFyYW17MCwgTGltaXRz
OjptYXgoKSwgMTB9LAorICAgICAgUGFyYW17TGltaXRzOjptaW4oKSwgMH0sCisgICAgICBQYXJh
bXtMaW1pdHM6Om1pbigpLCBMaW1pdHM6Om1heCgpLCAyfSwKKyAgfTsKK30KKworc3RkOjpzdHJp
bmcgUGFyYW1OYW1lKAorICAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxsb2dfdW5p
Zm9ybV9pMzI6OnBhcmFtX3R5cGU+JiBpbmZvKSB7CisgIGNvbnN0IGF1dG8mIHAgPSBpbmZvLnBh
cmFtOworICBzdGQ6OnN0cmluZyBuYW1lID0KKyAgICAgIGFic2w6OlN0ckNhdCgibWluXyIsIHAu
bWluKCksICJfX21heF8iLCBwLm1heCgpLCAiX19iYXNlXyIsIHAuYmFzZSgpKTsKKyAgcmV0dXJu
IGFic2w6OlN0clJlcGxhY2VBbGwobmFtZSwge3siKyIsICJfIn0sIHsiLSIsICJfIn0sIHsiLiIs
ICJfIn19KTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9TVUlURV9QKCwgTG9nVW5pZm9ybUludENo
aVNxdWFyZWRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVz
SW4oR2VuUGFyYW1zKCkpLCBQYXJhbU5hbWUpOworCisvLyBOT1RFOiBhYnNsOjpsb2dfdW5pZm9y
bV9pbnRfZGlzdHJpYnV0aW9uIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4KK1RFU1Qo
TG9nVW5pZm9ybUludERpc3RyaWJ1dGlvblRlc3QsIFN0YWJpbGl0eVRlc3QpIHsKKyAgdXNpbmcg
dGVzdGluZzo6RWxlbWVudHNBcmU7CisgIC8vIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
biBzdGFiaWxpdHkgcmVsaWVzIG9uCisgIC8vIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6TGVhZGlu
Z1NldEJpdCwgc3RkOjpsb2csIHN0ZDo6cG93LgorICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNl
cXVlbmNlX3VyYmcgdXJiZygKKyAgICAgIHsweDAwMDNlYjc2ZjZmN2Y3NTV1bGwsIDB4RkZDRUE1
MEZEQjJGOTUzQnVsbCwgMHhDMzMyRERFRkJFNkM1QUE1dWxsLAorICAgICAgIDB4NjU1ODIxODU2
OEFCOTcwMnVsbCwgMHgyQUVGN0RBRDVCNkUyRjg0dWxsLCAweDE1MjFCNjI4MjkwNzYxNzB1bGws
CisgICAgICAgMHhFQ0RENDc3NTYxOUYxNTEwdWxsLCAweDEzQ0NBODMwRUI2MUJEOTZ1bGwsIDB4
MDMzNEZFMUVBQTAzNjNDRnVsbCwKKyAgICAgICAweEI1NzM1QzkwNEM3MEEyMzl1bGwsIDB4RDU5
RTlFMEJDQkFBREUxNHVsbCwgMHhFRUNDODZCQzYwNjIyQ0E3dWxsfSk7CisKKyAgc3RkOjp2ZWN0
b3I8aW50PiBvdXRwdXQoNik7CisKKyAgeworICAgIGFic2w6OmxvZ191bmlmb3JtX2ludF9kaXN0
cmlidXRpb248aW50MzJfdD4gZGlzdCgwLCAyNTYpOworICAgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpi
ZWdpbihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLAorICAgICAgICAgICAgICAgICAgWyZdIHsg
cmV0dXJuIGRpc3QodXJiZyk7IH0pOworICAgIEVYUEVDVF9USEFUKG91dHB1dCwgRWxlbWVudHNB
cmUoMjU2LCA2NiwgNCwgNiwgNTcsIDEwMykpOworICB9CisgIHVyYmcucmVzZXQoKTsKKyAgewor
ICAgIGFic2w6OmxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50MzJfdD4gZGlzdCgwLCAy
NTYsIDEwKTsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQo
b3V0cHV0KSwKKyAgICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBkaXN0KHVyYmcpOyB9KTsK
KyAgICBFWFBFQ1RfVEhBVChvdXRwdXQsIEVsZW1lbnRzQXJlKDgsIDQsIDAsIDAsIDAsIDY5KSk7
CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcG9p
c3Nvbl9kaXN0cmlidXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9wb2lzc29uX2Rpc3RyaWJ1dGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc3NTBiMWM5YmE1OTE5YTU3NTVhMDFkMTY1YjQwM2Q1Y2JlNTg4OTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRpb24uaApAQCAt
MCwwICsxLDI1NCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpZm5kZWYgQUJTTF9SQU5ET01fUE9JU1NPTl9ESVNUUklCVVRJT05fSF8KKyNkZWZpbmUgQUJT
TF9SQU5ET01fUE9JU1NPTl9ESVNUUklCVVRJT05fSF8KKworI2luY2x1ZGUgPGNhc3NlcnQ+Cisj
aW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8aXN0cmVhbT4KKyNpbmNsdWRlIDxsaW1pdHM+Cisj
aW5jbHVkZSA8b3N0cmVhbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsLmgiCisjaW5jbHVkZSAiYWJzbC9y
YW5kb20vaW50ZXJuYWwvZmFzdF91bmlmb3JtX2JpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9mYXN0bWF0aC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lv
c3RyZWFtX3N0YXRlX3NhdmVyLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKKworLy8gYWJzbDo6cG9p
c3Nvbl9kaXN0cmlidXRpb246CisvLyBHZW5lcmF0ZXMgZGlzY3JldGUgdmFyaWF0ZXMgY29uZm9y
bWluZyB0byBhIFBvaXNzb24gZGlzdHJpYnV0aW9uLgorLy8gICBwKG4pID0gKG1lYW5ebiAvIG4h
KSBleHAoLW1lYW4pCisvLworLy8gRGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXIsIHRoZSBkaXN0
cmlidXRpb24gc2VsZWN0cyBvbmUgb2YgdGhlIGZvbGxvd2luZworLy8gYWxnb3JpdGhtczoKKy8v
ICogVGhlIHN0YW5kYXJkIGFsZ29yaXRobSwgYXR0cmlidXRlZCB0byBLbnV0aCwgZXh0ZW5kZWQg
dXNpbmcgYSBzcGxpdCBtZXRob2QKKy8vIGZvciBsYXJnZXIgdmFsdWVzCisvLyAqIFRoZSAiUmF0
aW8gb2YgVW5pZm9ybXMgYXMgYSBjb252ZW5pZW50IG1ldGhvZCBmb3Igc2FtcGxpbmcgZnJvbSBj
bGFzc2ljYWwKKy8vIGRpc2NyZXRlIGRpc3RyaWJ1dGlvbnMiLCBTdGFkbG9iZXIsIDE5ODkuCisv
LyBodHRwOi8vd3d3LnNjaWVuY2VkaXJlY3QuY29tL3NjaWVuY2UvYXJ0aWNsZS9waWkvMDM3NzA0
Mjc5MDkwMzQ5NQorLy8KKy8vIE5PVEU6IHBhcmFtX3R5cGUubWVhbigpIGlzIGEgZG91YmxlLCB3
aGljaCBwZXJtaXRzIHZhbHVlcyBsYXJnZXIgdGhhbgorLy8gcG9pc3Nvbl9kaXN0cmlidXRpb248
SW50VHlwZT46Om1heCgpLCBob3dldmVyIHRoaXMgc2hvdWxkIGJlIGF2b2lkZWQgYW5kCisvLyB0
aGUgZGlzdHJpYnV0aW9uIHJlc3VsdHMgYXJlIGxpbWl0ZWQgdG8gdGhlIG1heCgpIHZhbHVlLgor
Ly8KKy8vIFRoZSBnb2FscyBvZiB0aGlzIGltcGxlbWVudGF0aW9uIGFyZSB0byBwcm92aWRlIGdv
b2QgcGVyZm9ybWFuY2Ugd2hpbGUgc3RpbGwKKy8vIGJlaWcgdGhyZWFkLXNhZmU6IFRoaXMgbGlt
aXRzIHRoZSBpbXBsZW1lbnRhdGlvbiB0byBub3QgdXNpbmcgbGdhbW1hIHByb3ZpZGVkCisvLyBi
eSA8bWF0aC5oPi4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSA9IGludD4KK2NsYXNz
IHBvaXNzb25fZGlzdHJpYnV0aW9uIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0g
SW50VHlwZTsKKworICBjbGFzcyBwYXJhbV90eXBlIHsKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBk
aXN0cmlidXRpb25fdHlwZSA9IHBvaXNzb25fZGlzdHJpYnV0aW9uOworICAgIGV4cGxpY2l0IHBh
cmFtX3R5cGUoZG91YmxlIG1lYW4gPSAxLjApOworCisgICAgZG91YmxlIG1lYW4oKSBjb25zdCB7
IHJldHVybiBtZWFuXzsgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXJh
bV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICByZXR1cm4gYS5tZWFuXyA9
PSBiLm1lYW5fOworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcGFy
YW1fdHlwZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuICEoYSA9PSBi
KTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIHBvaXNzb25fZGlzdHJp
YnV0aW9uOworCisgICAgZG91YmxlIG1lYW5fOworICAgIGRvdWJsZSBlbXVfOyAgLy8gZSBeIC1t
ZWFuXworICAgIGRvdWJsZSBsbXVfOyAgLy8gbG4obWVhbl8pCisgICAgZG91YmxlIHNfOworICAg
IGRvdWJsZSBsb2dfa187CisgICAgaW50IHNwbGl0XzsKKworICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19pbnRlZ3JhbDxJbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAiQ2xhc3Mt
dGVtcGxhdGUgYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248PiBtdXN0IGJlICIKKyAgICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXJpemVkIHVzaW5nIGFuIGludGVncmFsIHR5cGUuIik7CisgIH07
CisKKyAgcG9pc3Nvbl9kaXN0cmlidXRpb24oKSA6IHBvaXNzb25fZGlzdHJpYnV0aW9uKDEuMCkg
e30KKworICBleHBsaWNpdCBwb2lzc29uX2Rpc3RyaWJ1dGlvbihkb3VibGUgbWVhbikgOiBwYXJh
bV8obWVhbikge30KKworICBleHBsaWNpdCBwb2lzc29uX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJh
bV90eXBlJiBwKSA6IHBhcmFtXyhwKSB7fQorCisgIHZvaWQgcmVzZXQoKSB7fQorCisgIC8vIGdl
bmVyYXRpbmcgZnVuY3Rpb25zCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRf
dHlwZSBvcGVyYXRvcigpKFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMp
CisgICAgcmV0dXJuICgqdGhpcykoZywgcGFyYW1fKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcsICAvLyBOT0xJTlQo
cnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFt
X3R5cGUmIHApOworCisgIHBhcmFtX3R5cGUgcGFyYW0oKSBjb25zdCB7IHJldHVybiBwYXJhbV87
IH0KKyAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBwKSB7IHBhcmFtXyA9IHA7IH0KKwor
ICByZXN1bHRfdHlwZShtaW4pKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICByZXN1bHRfdHlwZSht
YXgpKCkgY29uc3QgeyByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+Ojpt
YXgpKCk7IH0KKworICBkb3VibGUgbWVhbigpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXy5tZWFuKCk7
IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBvaXNzb25fZGlzdHJpYnV0aW9u
JiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvaXNzb25fZGlzdHJpYnV0aW9u
JiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fID09IGIucGFyYW1fOworICB9CisgIGZyaWVuZCBi
b29sIG9wZXJhdG9yIT0oY29uc3QgcG9pc3Nvbl9kaXN0cmlidXRpb24mIGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcG9pc3Nvbl9kaXN0cmlidXRpb24mIGIpIHsKKyAgICByZXR1
cm4gYS5wYXJhbV8gIT0gYi5wYXJhbV87CisgIH0KKworIHByaXZhdGU6CisgIHBhcmFtX3R5cGUg
cGFyYW1fOworICByYW5kb21faW50ZXJuYWw6OkZhc3RVbmlmb3JtQml0czx1aW50NjRfdD4gZmFz
dF91NjRfOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEltcGxlbWVudGF0aW9u
IGRldGFpbHMgZm9sbG93CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSW50VHlwZT4KK3BvaXNzb25fZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBl
OjpwYXJhbV90eXBlKGRvdWJsZSBtZWFuKQorICAgIDogbWVhbl8obWVhbiksIHNwbGl0XygwKSB7
CisgIGFzc2VydChtZWFuID49IDApOworICBhc3NlcnQobWVhbiA8PSAoc3RkOjpudW1lcmljX2xp
bWl0czxyZXN1bHRfdHlwZT46Om1heCkoKSk7CisgIC8vIEFzIGEgZGVmZW5zaXZlIG1lYXN1cmUs
IGF2b2lkIGxhcmdlIHZhbHVlcyBvZiB0aGUgbWVhbi4gIFRoZSByZWplY3Rpb24KKyAgLy8gYWxn
b3JpdGhtIHVzZWQgZG9lcyBub3Qgc3VwcG9ydCB2ZXJ5IGxhcmdlIHZhbHVlcyB3ZWxsLiAgSXQg
bXkgYmUgd29ydGgKKyAgLy8gY2hhbmdpbmcgYWxnb3JpdGhtcyB0byBiZXR0ZXIgZGVhbCB3aXRo
IHRoZXNlIGNhc2VzLgorICBhc3NlcnQobWVhbiA8PSAxZTEwKTsKKyAgaWYgKG1lYW5fIDwgMTAp
IHsKKyAgICAvLyBGb3Igc21hbGwgbGFtYmRhLCB1c2UgdGhlIGtudXRoIG1ldGhvZC4KKyAgICBz
cGxpdF8gPSAxOworICAgIGVtdV8gPSBzdGQ6OmV4cCgtbWVhbl8pOworICB9IGVsc2UgaWYgKG1l
YW5fIDw9IDUwKSB7CisgICAgLy8gVXNlIHNwbGl0LWtudXRoIG1ldGhvZC4KKyAgICBzcGxpdF8g
PSAxICsgc3RhdGljX2Nhc3Q8aW50PihtZWFuXyAvIDEwLjApOworICAgIGVtdV8gPSBzdGQ6OmV4
cCgtbWVhbl8gLyBzdGF0aWNfY2FzdDxkb3VibGU+KHNwbGl0XykpOworICB9IGVsc2UgeworICAg
IC8vIFVzZSByYXRpbyBvZiB1bmlmb3JtcyBtZXRob2QuCisgICAgY29uc3RleHByIGRvdWJsZSBr
MkUgPSAwLjczNTc1ODg4MjM0Mjg4NDY7CisgICAgY29uc3RleHByIGRvdWJsZSBrU0EgPSAwLjQ0
OTQ1ODA4MTAyOTQ0OTM7CisKKyAgICBsbXVfID0gc3RkOjpsb2cobWVhbl8pOworICAgIGRvdWJs
ZSBhID0gbWVhbl8gKyAwLjU7CisgICAgc18gPSBrU0EgKyBzdGQ6OnNxcnQoazJFICogYSk7Cisg
ICAgY29uc3QgZG91YmxlIG1vZGUgPSBzdGQ6OmNlaWwobWVhbl8pIC0gMTsKKyAgICBsb2dfa18g
PSBsbXVfICogbW9kZSAtIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U3RpcmxpbmdMb2dGYWN0b3Jp
YWwobW9kZSk7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIHBvaXNzb25fZGlzdHJpYnV0aW9uPEludFR5cGU+
OjpyZXN1bHRfdHlwZQorcG9pc3Nvbl9kaXN0cmlidXRpb248SW50VHlwZT46Om9wZXJhdG9yKCko
CisgICAgVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgY29uc3Qg
cGFyYW1fdHlwZSYgcCkgeworICB1c2luZyByYW5kb21faW50ZXJuYWw6OlBvc2l0aXZlVmFsdWVU
OworICB1c2luZyByYW5kb21faW50ZXJuYWw6OlJhbmRVNjRUb0RvdWJsZTsKKyAgdXNpbmcgcmFu
ZG9tX2ludGVybmFsOjpTaWduZWRWYWx1ZVQ7CisKKyAgaWYgKHAuc3BsaXRfICE9IDApIHsKKyAg
ICAvLyBVc2UgS251dGgncyBhbGdvcml0aG0gd2l0aCByYW5nZSBzcGxpdHRpbmcgdG8gYXZvaWQg
ZmxvYXRpbmctcG9pbnQKKyAgICAvLyBlcnJvcnMuIEtudXRoJ3MgYWxnb3JpdGhtIGlzOiBVaSBp
cyBhIHNlcXVlbmNlIG9mIHVuaWZvcm0gdmFyaWF0ZXMgb24KKyAgICAvLyAoMCwxKTsgcmV0dXJu
IHRoZSBudW1iZXIgb2YgdmFyaWF0ZXMgcmVxdWlyZWQgZm9yIHByb2R1Y3QoVWkpIDwKKyAgICAv
LyBleHAoLWxhbWJkYSkuCisgICAgLy8KKyAgICAvLyBUaGUgZXhwZWN0ZWQgbnVtYmVyIG9mIHZh
cmlhdGVzIHJlcXVpcmVkIGZvciBLbnV0aCdzIG1ldGhvZCBjYW4gYmUKKyAgICAvLyBjb21wdXRl
ZCBhcyBmb2xsb3dzOgorICAgIC8vIFRoZSBleHBlY3RlZCB2YWx1ZSBvZiBVIGlzIDAuNSwgc28g
c29sdmluZyBmb3IgMC41Xm4gPCBleHAoLWxhbWJkYSkgZ2l2ZXMKKyAgICAvLyB0aGUgZXhwZWN0
ZWQgbnVtYmVyIG9mIHVuaWZvcm0gdmFyaWF0ZXMKKyAgICAvLyByZXF1aXJlZCBmb3IgYSBnaXZl
biBsYW1iZGEsIHdoaWNoIGlzOgorICAgIC8vICBsYW1iZGEgPSBbMiwgNSwgIDksIDEwLCAxMSwg
MTIsIDEzLCAxNCwgMTUsIDE2LCAxN10KKyAgICAvLyAgbiAgICAgID0gWzMsIDgsIDEzLCAxNSwg
MTYsIDE4LCAxOSwgMjEsIDIyLCAyNCwgMjVdCisgICAgLy8KKyAgICByZXN1bHRfdHlwZSBuID0g
MDsKKyAgICBmb3IgKGludCBzcGxpdCA9IHAuc3BsaXRfOyBzcGxpdCA+IDA7IC0tc3BsaXQpIHsK
KyAgICAgIGRvdWJsZSByID0gMS4wOworICAgICAgZG8geworICAgICAgICByICo9IFJhbmRVNjRU
b0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgdHJ1ZT4oZmFzdF91NjRfKGcpKTsKKyAgICAgICAgKytu
OworICAgICAgfSB3aGlsZSAociA+IHAuZW11Xyk7CisgICAgICAtLW47CisgICAgfQorICAgIHJl
dHVybiBuOworICB9CisKKyAgLy8gVXNlIHJhdGlvIG9mIHVuaWZvcm1zIG1ldGhvZC4KKyAgLy8K
KyAgLy8gTGV0IHUgfiBVbmlmb3JtKDAsIDEpLCB2IH4gVW5pZm9ybSgtMSwgMSksCisgIC8vICAg
ICBhID0gbGFtYmRhICsgMS8yLAorICAvLyAgICAgcyA9IDEuNSAtIHNxcnQoMy9lKSArIHNxcnQo
MihsYW1iZGEgKyAxLzIpL2UpLAorICAvLyAgICAgeCA9IHMgKiB2L3UgKyBhLgorICAvLyBQKGZs
b29yKHgpID0gayB8IHVeMiA8IGYoZmxvb3IoeCkpL2spLCB3aGVyZQorICAvLyBmKG0pID0gbGFt
YmRhXm0gZXhwKC1sYW1iZGEpLyBtISwgZm9yIDAgPD0gbSwgYW5kIGYobSkgPSAwIG90aGVyd2lz
ZSwKKyAgLy8gYW5kIGsgPSBtYXgoZikuCisgIGNvbnN0IGRvdWJsZSBhID0gcC5tZWFuXyArIDAu
NTsKKyAgZm9yICg7OykgeworICAgIGNvbnN0IGRvdWJsZSB1ID0KKyAgICAgICAgUmFuZFU2NFRv
RG91YmxlPFBvc2l0aXZlVmFsdWVULCBmYWxzZT4oZmFzdF91NjRfKGcpKTsgIC8vICgwLCAxKQor
ICAgIGNvbnN0IGRvdWJsZSB2ID0KKyAgICAgICAgUmFuZFU2NFRvRG91YmxlPFNpZ25lZFZhbHVl
VCwgZmFsc2U+KGZhc3RfdTY0XyhnKSk7ICAvLyAoLTEsIDEpCisgICAgY29uc3QgZG91YmxlIHgg
PSBzdGQ6OmZsb29yKHAuc18gKiB2IC8gdSArIGEpOworICAgIGlmICh4IDwgMCkgY29udGludWU7
ICAvLyBmKG5lZ2F0aXZlKSA9IDAKKyAgICBjb25zdCBkb3VibGUgcmhzID0geCAqIHAubG11XzsK
KyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgZG91YmxlIHMgPSAoeCA8PSAxLjApID8gMC4w
CisgICAgICAgICAgICAgOiAoeCA9PSAyLjApID8gMC42OTMxNDcxODA1NTk5NDUKKyAgICAgICAg
ICAgICA6IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U3RpcmxpbmdMb2dGYWN0b3JpYWwoeCk7Cisg
ICAgLy8gY2xhbmctZm9ybWF0IG9uCisgICAgY29uc3QgZG91YmxlIGxocyA9IDIuMCAqIHN0ZDo6
bG9nKHUpICsgcC5sb2dfa18gKyBzOworICAgIGlmIChsaHMgPCByaHMpIHsKKyAgICAgIHJldHVy
biB4ID4gKG1heCkoKSA/IChtYXgpKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0YXRp
Y19jYXN0PHJlc3VsdF90eXBlPih4KTsgIC8vIGYoeCkvayA+PSB1XjIKKyAgICB9CisgIH0KK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIElu
dFR5cGU+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPDwoCisg
ICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcywgIC8vIE5PTElOVChydW50
aW1lL3JlZmVyZW5jZXMpCisgICAgY29uc3QgcG9pc3Nvbl9kaXN0cmlidXRpb248SW50VHlwZT4m
IHgpIHsKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9vc3RyZWFtX3N0YXRl
X3NhdmVyKG9zKTsKKyAgb3MucHJlY2lzaW9uKHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX3ByZWNp
c2lvbl9oZWxwZXI8ZG91YmxlPjo6a1ByZWNpc2lvbik7CisgIG9zIDw8IHgubWVhbigpOworICBy
ZXR1cm4gb3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBJbnRUeXBlPgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBv
cGVyYXRvcj4+KAorICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAv
LyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHBvaXNzb25fZGlzdHJpYnV0aW9uPElu
dFR5cGU+JiB4KSB7ICAgICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICB1c2luZyBw
YXJhbV90eXBlID0gdHlwZW5hbWUgcG9pc3Nvbl9kaXN0cmlidXRpb248SW50VHlwZT46OnBhcmFt
X3R5cGU7CisKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9pc3RyZWFtX3N0
YXRlX3NhdmVyKGlzKTsKKyAgZG91YmxlIG1lYW4gPSByYW5kb21faW50ZXJuYWw6OnJlYWRfZmxv
YXRpbmdfcG9pbnQ8ZG91YmxlPihpcyk7CisgIGlmICghaXMuZmFpbCgpKSB7CisgICAgeC5wYXJh
bShwYXJhbV90eXBlKG1lYW4pKTsKKyAgfQorICByZXR1cm4gaXM7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fUE9JU1NPTl9ESVNUUklCVVRJT05f
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9wb2lzc29uX2Rpc3RyaWJ1dGlvbl90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL3BvaXNzb25fZGlzdHJpYnV0aW9uX3Rlc3QuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmQ2ODk5OWEzYzU0M2FjZDRkYWM2MGFjMjgyNmFkYWI0NmUyMTQ1OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9wb2lzc29uX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCkBAIC0wLDAgKzEs
NTY1IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1
ZGUgImFic2wvcmFuZG9tL3BvaXNzb25fZGlzdHJpYnV0aW9uLmgiCisKKyNpbmNsdWRlIDxhbGdv
cml0aG0+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUg
PGl0ZXJhdG9yPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1
ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFs
L3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUg
ImFic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXAuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9p
bnRlcm5hbC9jaGlfc3F1YXJlLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlz
dHJpYnV0aW9uX3Rlc3RfdXRpbC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3Nl
cXVlbmNlX3VyYmcuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9yYW5kb20uaCIKKyNpbmNsdWRl
ICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfZm9y
bWF0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmgiCisjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL3N0cmlwLmgiCisKKy8vIE5vdGVzIGFib3V0IGdlbmVyYXRpbmcgcG9pc3Nv
biB2YXJpYXRlczoKKy8vCisvLyBJdCBpcyB1bmxpa2VseSB0aGF0IGFueSBpbXBsZW1lbnRhdGlv
biBvZiBzdGQ6OnBvaXNzb25fZGlzdHJpYnV0aW9uCisvLyB3aWxsIGJlIHN0YWJsZSBvdmVyIHRp
bWUgYW5kIGFjcm9zcyBsaWJyYXJ5IGltcGxlbWVudGF0aW9ucy4gRm9yIGluc3RhbmNlCisvLyB0
aGUgdGhyZWUgZGlmZmVyZW50IHBvaXNzb24gdmFyaWF0ZSBnZW5lcmF0b3JzIGxpc3RlZCBiZWxv
dyBhbGwgZGlmZmVyOgorLy8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbXBsL2dzbC90cmVlL21h
c3Rlci9yYW5kaXN0L3BvaXNzb24uYworLy8gKiBHU0wgdXNlcyBhIGdhbW1hICsgYmlub21pYWwg
KyBrbnV0aCBtZXRob2QgdG8gY29tcHV0ZSBwb2lzc29uIHZhcmlhdGVzLgorLy8KKy8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9nY2MtbWlycm9yL2djYy9ibG9iL21hc3Rlci9saWJzdGRjJTJCJTJCLXYz
L2luY2x1ZGUvYml0cy9yYW5kb20udGNjCisvLyAqIEdDQyB1c2VzIHRoZSBEZXZyb3llIHJlamVj
dGlvbiBhbGdvcml0aG0sIGJhc2VkIG9uCisvLyBEZXZyb3llLCBMLiBOb24tVW5pZm9ybSBSYW5k
b20gVmFyaWF0ZXMgR2VuZXJhdGlvbi4gU3ByaW5nZXItVmVybGFnLAorLy8gTmV3IFlvcmssIDE5
ODYsIENoLiBYLCBTZWN0cy4gMy4zICYgMy40ICgrIEVycmF0YSEpLCB+cC41MTEKKy8vICAgaHR0
cDovL3d3dy5ucmJvb2suY29tL2RldnJveWUvCisvLworLy8gaHR0cHM6Ly9naXRodWIuY29tL2xs
dm0tbWlycm9yL2xpYmN4eC9ibG9iL21hc3Rlci9pbmNsdWRlL3JhbmRvbQorLy8gKiBDTEFORyB1
c2VzIGEgZGlmZmVyZW50IHJlamVjdGlvbiBtZXRob2QsIHdoaWNoIGFwcGVhcnMgdG8gaW5jbHVk
ZSBhCisvLyBub3JtYWwtZGlzdHJpYnV0aW9uIGFwcHJveGltYXRpb24gYW5kIGFuIGV4cG9uZW50
aWFsIGRpc3RyaWJ1dGlvbiB0bworLy8gY29tcHV0ZSB0aGUgdGhyZXNob2xkLCBpbmNsdWRpbmcg
YSBzaW1pbGFyIGZhY3RvcmlhbCBhcHByb3hpbWF0aW9uIHRvIHRoaXMKKy8vIG9uZSwgYnV0IGl0
IGlzIHVuY2xlYXIgd2hlcmUgdGhlIGFsZ29yaXRobSBjb21lcyBmcm9tLCBleGFjdGx5LgorLy8K
KworbmFtZXNwYWNlIHsKKwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjprQ2hpU3F1YXJl
ZDsKKworLy8gVGhlIFBvaXNzb25EaXN0cmlidXRpb25JbnRlcmZhY2VUZXN0IHByb3ZpZGVzIGEg
YmFzaWMgdGVzdCB0aGF0CisvLyBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbiBjb25mb3JtcyB0
byB0aGUgaW50ZXJmYWNlIGFuZCBzZXJpYWxpemF0aW9uCisvLyByZXF1aXJlbWVudHMgaW1wb3Nl
ZCBieSBbcmFuZC5yZXEuZGlzdF0gZm9yIHRoZSBjb21tb24gaW50ZWdlciB0eXBlcy4KKwordGVt
cGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CitjbGFzcyBQb2lzc29uRGlzdHJpYnV0aW9uSW50ZXJm
YWNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3VzaW5nIEludFR5cGVzID0g
Ojp0ZXN0aW5nOjpUeXBlczxpbnQsIGludDhfdCwgaW50MTZfdCwgaW50MzJfdCwgaW50NjRfdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90LCB1aW50MTZfdCwgdWlu
dDMyX3QsIHVpbnQ2NF90PjsKK1RZUEVEX1RFU1RfQ0FTRShQb2lzc29uRGlzdHJpYnV0aW9uSW50
ZXJmYWNlVGVzdCwgSW50VHlwZXMpOworCitUWVBFRF9URVNUKFBvaXNzb25EaXN0cmlidXRpb25J
bnRlcmZhY2VUZXN0LCBTZXJpYWxpemVUZXN0KSB7CisgIHVzaW5nIHBhcmFtX3R5cGUgPSB0eXBl
bmFtZSBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+OjpwYXJhbV90eXBlOwor
ICBjb25zdCBkb3VibGUga01heCA9CisgICAgICBzdGQ6Om1pbigxZTEwIC8qIGFzc2VydGlvbiBs
aW1pdCAqLywKKyAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmlj
X2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSkpOworCisgIGNvbnN0IGRvdWJsZSBrUGFyYW1zW10g
PSB7CisgICAgICAvLyBDYXNlcyBhcm91bmQgMS4KKyAgICAgIDEsICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vCisgICAgICBzdGQ6Om5leHRhZnRlcigxLjAsIDAuMCksICAvLyAxIC0gZXBzaWxv
bgorICAgICAgc3RkOjpuZXh0YWZ0ZXIoMS4wLCAyLjApLCAgLy8gMSArIGVwc2lsb24KKyAgICAg
IC8vIEFyYml0cmFyeSB2YWx1ZXMuCisgICAgICAxZS04LCAxZS00LAorICAgICAgMC4wMDAwMDA1
LCAgLy8gfjcuMmUtNworICAgICAgMC4yLCAgICAgICAgLy8gfjAuMngKKyAgICAgIDAuNSwgICAg
ICAgIC8vIDAuNzIKKyAgICAgIDIsICAgICAgICAgIC8vIH4yLjgKKyAgICAgIDIwLCAgICAgICAg
IC8vIDN4IH45LjYKKyAgICAgIDEwMCwgMWU0LCAxZTgsIDEuNWU5LCAxZTIwLAorICAgICAgLy8g
Qm91bmRhcnkgY2FzZXMuCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgp
LAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjplcHNpbG9uKCksCisgICAgICBz
dGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpLAorICAgICAg
ICAgICAgICAgICAgICAgMS4wKSwgICAgICAgICAgICAgICAgICAgICAgICAvLyBtaW4gKyBlcHNp
bG9uCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpLCAgICAgICAgIC8v
IHNtYWxsZXN0IG5vcm1hbAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkZW5v
cm1fbWluKCksICAvLyBzbWFsbGVzdCBkZW5vcm0KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6bWluKCkgLyAyLCAgICAgLy8gZGVub3JtCisgICAgICBzdGQ6Om5leHRhZnRlcihz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAg
MC4wKSwgIC8vIGRlbm9ybV9tYXgKKyAgfTsKKworCisgIGNvbnN0ZXhwciBpbnQga0NvdW50ID0g
MTAwMDsKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBmb3IgKGNvbnN0IGRvdWJsZSBt
IDoga1BhcmFtcykgeworICAgIGNvbnN0IGRvdWJsZSBtZWFuID0gc3RkOjptaW4oa01heCwgbSk7
CisgICAgY29uc3QgcGFyYW1fdHlwZSBwYXJhbShtZWFuKTsKKworICAgIC8vIFZhbGlkYXRlIHBh
cmFtZXRlcnMuCisgICAgYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBiZWZv
cmUobWVhbik7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5tZWFuKCksIHBhcmFtLm1lYW4oKSk7CisK
KyAgICB7CisgICAgICBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IHZpYV9w
YXJhbShwYXJhbSk7CisgICAgICBFWFBFQ1RfRVEodmlhX3BhcmFtLCBiZWZvcmUpOworICAgICAg
RVhQRUNUX0VRKHZpYV9wYXJhbS5wYXJhbSgpLCBiZWZvcmUucGFyYW0oKSk7CisgICAgfQorCisg
ICAgLy8gU21va2UgdGVzdC4KKyAgICBhdXRvIHNhbXBsZV9taW4gPSBiZWZvcmUubWF4KCk7Cisg
ICAgYXV0byBzYW1wbGVfbWF4ID0gYmVmb3JlLm1pbigpOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwga0NvdW50OyBpKyspIHsKKyAgICAgIGF1dG8gc2FtcGxlID0gYmVmb3JlKGdlbik7CisgICAg
ICBFWFBFQ1RfR0Uoc2FtcGxlLCBiZWZvcmUubWluKCkpOworICAgICAgRVhQRUNUX0xFKHNhbXBs
ZSwgYmVmb3JlLm1heCgpKTsKKyAgICAgIGlmIChzYW1wbGUgPiBzYW1wbGVfbWF4KSBzYW1wbGVf
bWF4ID0gc2FtcGxlOworICAgICAgaWYgKHNhbXBsZSA8IHNhbXBsZV9taW4pIHNhbXBsZV9taW4g
PSBzYW1wbGU7CisgICAgfQorCisgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywgYWJzbDo6U3Ry
Q2F0KCJSYW5nZSB7IiwgcGFyYW0ubWVhbigpLCAifTogIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgK3NhbXBsZV9taW4sICIsICIsICtzYW1wbGVfbWF4KSk7CisK
KyAgICAvLyBWYWxpZGF0ZSBzdHJlYW0gc2VyaWFsaXphdGlvbi4KKyAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBzczsKKyAgICBzcyA8PCBiZWZvcmU7CisKKyAgICBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1
dGlvbjxUeXBlUGFyYW0+IGFmdGVyKDMuOCk7CisKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLm1lYW4o
KSwgYWZ0ZXIubWVhbigpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLnBhcmFtKCksIGFmdGVyLnBh
cmFtKCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUsIGFmdGVyKTsKKworICAgIHNzID4+IGFmdGVy
OworCisgICAgRVhQRUNUX0VRKGJlZm9yZS5tZWFuKCksIGFmdGVyLm1lYW4oKSkgIC8vCisgICAg
ICAgIDw8IHNzLnN0cigpIDw8ICIgIiAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgIDw8IChz
cy5nb29kKCkgPyAiZ29vZCAiIDogIiIpICAgICAgIC8vCisgICAgICAgIDw8IChzcy5iYWQoKSA/
ICJiYWQgIiA6ICIiKSAgICAgICAgIC8vCisgICAgICAgIDw8IChzcy5lb2YoKSA/ICJlb2YgIiA6
ICIiKSAgICAgICAgIC8vCisgICAgICAgIDw8IChzcy5mYWlsKCkgPyAiZmFpbCAiIDogIiIpOwor
ICB9Cit9CisKKy8vIFNlZSBodHRwOi8vd3d3Lml0bC5uaXN0Lmdvdi9kaXY4OTgvaGFuZGJvb2sv
ZWRhL3NlY3Rpb24zL2VkYTM2NmouaHRtCisKK2NsYXNzIFBvaXNzb25Nb2RlbCB7CisgcHVibGlj
OgorICBleHBsaWNpdCBQb2lzc29uTW9kZWwoZG91YmxlIG1lYW4pIDogbWVhbl8obWVhbikge30K
KworICBkb3VibGUgbWVhbigpIGNvbnN0IHsgcmV0dXJuIG1lYW5fOyB9CisgIGRvdWJsZSB2YXJp
YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1lYW5fOyB9CisgIGRvdWJsZSBzdGRkZXYoKSBjb25zdCB7
IHJldHVybiBzdGQ6OnNxcnQodmFyaWFuY2UoKSk7IH0KKyAgZG91YmxlIHNrZXcoKSBjb25zdCB7
IHJldHVybiAxLjAgLyBtZWFuXzsgfQorICBkb3VibGUga3VydG9zaXMoKSBjb25zdCB7IHJldHVy
biAzLjAgKyAxLjAgLyBtZWFuXzsgfQorCisgIC8vIEluaXRDREYoKSBpbml0aWFsaXplcyB0aGUg
Q0RGIGZvciB0aGUgZGlzdHJpYnV0aW9uIHBhcmFtZXRlcnMuCisgIHZvaWQgSW5pdENERigpOwor
CisgIC8vIFRoZSBJbnZlcnNlQ0RGLCBvciB0aGUgUGVyY2VudC1wb2ludCBmdW5jdGlvbiByZXR1
cm5zIHgsIFAoeCkgPCB2LgorICBzdHJ1Y3QgQ0RGIHsKKyAgICBzaXplX3QgaW5kZXg7CisgICAg
ZG91YmxlIHBtZjsKKyAgICBkb3VibGUgY2RmOworICB9OworICBDREYgSW52ZXJzZUNERihkb3Vi
bGUgcCkgeworICAgIENERiB0YXJnZXR7MCwgMCwgcH07CisgICAgYXV0byBpdCA9IHN0ZDo6dXBw
ZXJfYm91bmQoCisgICAgICAgIHN0ZDo6YmVnaW4oY2RmXyksIHN0ZDo6ZW5kKGNkZl8pLCB0YXJn
ZXQsCisgICAgICAgIFtdKGNvbnN0IENERiYgYSwgY29uc3QgQ0RGJiBiKSB7IHJldHVybiBhLmNk
ZiA8IGIuY2RmOyB9KTsKKyAgICByZXR1cm4gKml0OworICB9CisKKyAgdm9pZCBMb2dDREYoKSB7
CisgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywgYWJzbDo6U3RyQ2F0KCJDREYgKG1lYW4gPSAi
LCBtZWFuXywgIikiKSk7CisgICAgZm9yIChjb25zdCBhdXRvIGMgOiBjZGZfKSB7CisgICAgICBB
QlNMX0lOVEVSTkFMX0xPRyhJTkZPLAorICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6U3Ry
Q2F0KGMuaW5kZXgsICI6IHBtZj0iLCBjLnBtZiwgIiBjZGY9IiwgYy5jZGYpKTsKKyAgICB9Cisg
IH0KKworIHByaXZhdGU6CisgIGNvbnN0IGRvdWJsZSBtZWFuXzsKKworICBzdGQ6OnZlY3RvcjxD
REY+IGNkZl87Cit9OworCisvLyBUaGUgZ29hbCBpcyB0byBjb21wdXRlIGFuIEludmVyc2VDREYg
ZnVuY3Rpb24sIG9yIHBlcmNlbnQgcG9pbnQgZnVuY3Rpb24gZm9yCisvLyB0aGUgcG9pc3NvbiBk
aXN0cmlidXRpb24sIGFuZCB1c2UgdGhhdCB0byBwYXJ0aXRpb24gb3VyIG91dHB1dCBpbnRvIGVx
dWFsCisvLyByYW5nZSBidWNrZXRzLiAgSG93ZXZlciB0aGVyZSBpcyBubyBjbG9zZWQgZm9ybSBz
b2x1dGlvbiBmb3IgdGhlIGludmVyc2UgY2RmCisvLyBmb3IgcG9pc3NvbiBkaXN0cmlidXRpb25z
ICh0aGUgY2xvc2VzdCBpcyB0aGUgaW5jb21wbGV0ZSBnYW1tYSBmdW5jdGlvbikuCisvLyBJbnN0
ZWFkLCBgSW5pdENERmAgaXRlcmF0aXZlbHkgY29tcHV0ZXMgdGhlIFBNRiBhbmQgdGhlIENERi4g
VGhpcyBlbmFibGVzCisvLyBzZWFyY2hpbmcgZm9yIHRoZSBidWNrZXQgcG9pbnRzLgordm9pZCBQ
b2lzc29uTW9kZWw6OkluaXRDREYoKSB7CisgIGlmICghY2RmXy5lbXB0eSgpKSB7CisgICAgLy8g
U3RhdGUgYWxyZWFkeSBpbml0aWFsaXplZC4KKyAgICByZXR1cm47CisgIH0KKyAgQUJTTF9BU1NF
UlQobWVhbl8gPCAyMDEuMCk7CisKKyAgY29uc3Qgc2l6ZV90IG1heF9pID0gNTAgKiBzdGRkZXYo
KSArIG1lYW4oKTsKKyAgY29uc3QgZG91YmxlIGVfbmVnX21lYW4gPSBzdGQ6OmV4cCgtbWVhbigp
KTsKKyAgQUJTTF9BU1NFUlQoZV9uZWdfbWVhbiA+IDApOworCisgIGRvdWJsZSBkID0gMTsKKyAg
ZG91YmxlIGxhc3RfcmVzdWx0ID0gZV9uZWdfbWVhbjsKKyAgZG91YmxlIGN1bXVsYXRpdmUgPSBl
X25lZ19tZWFuOworICBpZiAoZV9uZWdfbWVhbiA+IDFlLTEwKSB7CisgICAgY2RmXy5wdXNoX2Jh
Y2soezAsIGVfbmVnX21lYW4sIGN1bXVsYXRpdmV9KTsKKyAgfQorICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IG1heF9pOyBpKyspIHsKKyAgICBkICo9IChtZWFuKCkgLyBpKTsKKyAgICBkb3VibGUg
cmVzdWx0ID0gZV9uZWdfbWVhbiAqIGQ7CisgICAgY3VtdWxhdGl2ZSArPSByZXN1bHQ7CisgICAg
aWYgKHJlc3VsdCA8IDFlLTEwICYmIHJlc3VsdCA8IGxhc3RfcmVzdWx0ICYmIGN1bXVsYXRpdmUg
PiAwLjk5OTk5OSkgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChyZXN1bHQgPiAxZS03
KSB7CisgICAgICBjZGZfLnB1c2hfYmFjayh7aSwgcmVzdWx0LCBjdW11bGF0aXZlfSk7CisgICAg
fQorICAgIGxhc3RfcmVzdWx0ID0gcmVzdWx0OworICB9CisgIEFCU0xfQVNTRVJUKCFjZGZfLmVt
cHR5KCkpOworfQorCisvLyBQb2lzc29uRGlzdHJpYnV0aW9uWlRlc3QgaW1wbGVtZW50cyBhIHot
dGVzdCBmb3IgdGhlIHBvaXNzb24gZGlzdHJpYnV0aW9uLgorCitzdHJ1Y3QgWlBhcmFtIHsKKyAg
ZG91YmxlIG1lYW47CisgIGRvdWJsZSBwX2ZhaWw7ICAgLy8gWi1UZXN0IHByb2JhYmlsaXR5IG9m
IGZhaWx1cmUuCisgIGludCB0cmlhbHM7ICAgICAgLy8gWi1UZXN0IHRyaWFscy4KKyAgc2l6ZV90
IHNhbXBsZXM7ICAvLyBaLVRlc3Qgc2FtcGxlcy4KK307CisKK2NsYXNzIFBvaXNzb25EaXN0cmli
dXRpb25aVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFpQYXJhbT4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgUG9pc3Nvbk1vZGVsIHsKKyBwdWJs
aWM6CisgIFBvaXNzb25EaXN0cmlidXRpb25aVGVzdCgpIDogUG9pc3Nvbk1vZGVsKEdldFBhcmFt
KCkubWVhbikge30KKworICAvLyBaVGVzdEltcGwgcHJvdmlkZXMgYSBiYXNpYyB6LXNxdWFyZWQg
dGVzdCBvZiB0aGUgbWVhbiB2cy4gZXhwZWN0ZWQKKyAgLy8gbWVhbiBmb3IgZGF0YSBnZW5lcmF0
ZWQgYnkgdGhlIHBvaXNzb24gZGlzdHJpYnV0aW9uLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRD4K
KyAgYm9vbCBTaW5nbGVaVGVzdChjb25zdCBkb3VibGUgcCwgY29uc3Qgc2l6ZV90IHNhbXBsZXMp
OworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZ187Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRD4KK2Jvb2wgUG9pc3NvbkRpc3RyaWJ1dGlvblpUZXN0OjpTaW5nbGVaVGVzdChjb25zdCBk
b3VibGUgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzaXplX3Qgc2FtcGxlcykgeworICBEIGRpcyhtZWFuKCkpOworCisgIGFic2w6OmZsYXRfaGFz
aF9tYXA8aW50MzJfdCwgaW50PiBidWNrZXRzOworICBzdGQ6OnZlY3Rvcjxkb3VibGU+IGRhdGE7
CisgIGRhdGEucmVzZXJ2ZShzYW1wbGVzKTsKKyAgZm9yIChpbnQgaiA9IDA7IGogPCBzYW1wbGVz
OyBqKyspIHsKKyAgICBjb25zdCBhdXRvIHggPSBkaXMocm5nXyk7CisgICAgYnVja2V0c1t4XSsr
OworICAgIGRhdGEucHVzaF9iYWNrKHgpOworICB9CisKKyAgLy8gVGhlIG51bGwtaHlwb3RoZXNp
cyBpcyB0aGF0IHRoZSBkaXN0cmlidXRpb24gaXMgYSBwb2lzc29uIGRpc3RyaWJ1dGlvbiB3aXRo
CisgIC8vIHRoZSBwcm92aWRlZCBtZWFuIChub3QgZXN0aW1hdGVkIGZyb20gdGhlIGRhdGEpLgor
ICBjb25zdCBhdXRvIG0gPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNvbXB1dGVEaXN0cmlidXRp
b25Nb21lbnRzKGRhdGEpOworICBjb25zdCBkb3VibGUgbWF4X2VyciA9IGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6TWF4RXJyb3JUb2xlcmFuY2UocCk7CisgIGNvbnN0IGRvdWJsZSB6ID0gYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpaU2NvcmUobWVhbigpLCBtKTsKKyAgY29uc3QgYm9vbCBwYXNzID0g
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpOZWFyKCJ6IiwgeiwgMC4wLCBtYXhfZXJyKTsKKworICBp
ZiAoIXBhc3MpIHsKKyAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAgICAgSU5GTywgYWJzbDo6
U3RyRm9ybWF0KCJwPSVmIG1heF9lcnI9JWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgbWVhbj0lZiB2cy4gJWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
c3RkZGV2PSVmIHZzLiAlZlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBza2V3
bmVzcz0lZiB2cy4gJWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIga3VydG9z
aXM9JWYgdnMuICVmXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHo9JWYiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgbWF4X2VyciwgbS5tZWFuLCBtZWFuKCks
IHN0ZDo6c3FydChtLnZhcmlhbmNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZGRldigpLCBtLnNrZXduZXNzLCBza2V3KCksIG0ua3VydG9zaXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrdXJ0b3NpcygpLCB6KSk7CisgIH0KKyAgcmV0dXJuIHBhc3M7Cit9CisK
K1RFU1RfUChQb2lzc29uRGlzdHJpYnV0aW9uWlRlc3QsIEFic2xQb2lzc29uRGlzdHJpYnV0aW9u
KSB7CisgIGNvbnN0IGF1dG8mIHBhcmFtID0gR2V0UGFyYW0oKTsKKyAgY29uc3QgaW50IGV4cGVj
dGVkX2ZhaWx1cmVzID0KKyAgICAgIHN0ZDo6bWF4KDEsIHN0YXRpY19jYXN0PGludD4oc3RkOjpj
ZWlsKHBhcmFtLnRyaWFscyAqIHBhcmFtLnBfZmFpbCkpKTsKKyAgY29uc3QgZG91YmxlIHAgPSBh
YnNsOjpyYW5kb21faW50ZXJuYWw6OlJlcXVpcmVkU3VjY2Vzc1Byb2JhYmlsaXR5KAorICAgICAg
cGFyYW0ucF9mYWlsLCBwYXJhbS50cmlhbHMpOworCisgIGludCBmYWlsdXJlcyA9IDA7CisgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcGFyYW0udHJpYWxzOyBpKyspIHsKKyAgICBmYWlsdXJlcyArPQor
ICAgICAgICBTaW5nbGVaVGVzdDxhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxpbnQzMl90Pj4o
cCwgcGFyYW0uc2FtcGxlcykgPyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7CisgIH0KKyAgRVhQ
RUNUX0xFKGZhaWx1cmVzLCBleHBlY3RlZF9mYWlsdXJlcyk7Cit9CisKK3N0ZDo6dmVjdG9yPFpQ
YXJhbT4gR2V0WlBhcmFtcygpIHsKKyAgLy8gVGhlc2UgdmFsdWVzIGhhdmUgYmVlbiBhZGp1c3Rl
ZCBmcm9tIHRoZSAiZXhhY3QiIGNvbXB1dGVkIHZhbHVlcyB0byByZWR1Y2UKKyAgLy8gZmFpbHVy
ZSByYXRlcy4KKyAgLy8KKyAgLy8gSXQgdHVybnMgb3V0IHRoYXQgdGhlIGFjdHVhbCB2YWx1ZXMg
YXJlIG5vdCBhcyBjbG9zZSB0byB0aGUgZXhwZWN0ZWQgdmFsdWVzCisgIC8vIGFzIHdvdWxkIGJl
IGlkZWFsLgorICByZXR1cm4gc3RkOjp2ZWN0b3I8WlBhcmFtPih7CisgICAgICAvLyBLbnV0aCBt
ZXRob2QuCisgICAgICBaUGFyYW17MC41LCAwLjAxLCAxMDAsIDEwMDB9LAorICAgICAgWlBhcmFt
ezEuMCwgMC4wMSwgMTAwLCAxMDAwfSwKKyAgICAgIFpQYXJhbXsxMC4wLCAwLjAxLCAxMDAsIDUw
MDB9LAorICAgICAgLy8gU3BsaXQta251dGggbWV0aG9kLgorICAgICAgWlBhcmFtezIwLjAsIDAu
MDEsIDEwMCwgMTAwMDB9LAorICAgICAgWlBhcmFtezUwLjAsIDAuMDEsIDEwMCwgMTAwMDB9LAor
ICAgICAgLy8gUmF0aW8gb2YgZ2F1c3NpYW5zIG1ldGhvZC4KKyAgICAgIFpQYXJhbXs1MS4wLCAw
LjAxLCAxMDAsIDEwMDAwfSwKKyAgICAgIFpQYXJhbXsyMDAuMCwgMC4wNSwgMTAsIDEwMDAwMH0s
CisgICAgICBaUGFyYW17MTAwMDAwLjAsIDAuMDUsIDEwLCAxMDAwMDAwfSwKKyAgfSk7Cit9CisK
K3N0ZDo6c3RyaW5nIFpQYXJhbU5hbWUoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPFpQ
YXJhbT4mIGluZm8pIHsKKyAgY29uc3QgYXV0byYgcCA9IGluZm8ucGFyYW07CisgIHN0ZDo6c3Ry
aW5nIG5hbWUgPSBhYnNsOjpTdHJDYXQoIm1lYW5fIiwgYWJzbDo6U2l4RGlnaXRzKHAubWVhbikp
OworICByZXR1cm4gYWJzbDo6U3RyUmVwbGFjZUFsbChuYW1lLCB7eyIrIiwgIl8ifSwgeyItIiwg
Il8ifSwgeyIuIiwgIl8ifX0pOworfQorCitJTlNUQU5USUFURV9URVNUX1NVSVRFX1AoLCBQb2lz
c29uRGlzdHJpYnV0aW9uWlRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjpWYWx1ZXNJbihHZXRaUGFyYW1zKCkpLCBaUGFyYW1OYW1lKTsKKworLy8gVGhlIFBvaXNzb25E
aXN0cmlidXRpb25DaGlTcXVhcmVkVGVzdCBjbGFzcyBwcm92aWRlcyBhIGJhc2ljIHRlc3QgZnJh
bWV3b3JrCisvLyBmb3IgdmFyaWF0ZXMgZ2VuZXJhdGVkIGJ5IGEgY29uZm9ybWluZyBwb2lzc29u
X2Rpc3RyaWJ1dGlvbi4KK2NsYXNzIFBvaXNzb25EaXN0cmlidXRpb25DaGlTcXVhcmVkVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGRvdWJsZT4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgUG9pc3Nvbk1vZGVsIHsKKyBwdWJsaWM6
CisgIFBvaXNzb25EaXN0cmlidXRpb25DaGlTcXVhcmVkVGVzdCgpIDogUG9pc3Nvbk1vZGVsKEdl
dFBhcmFtKCkpIHt9CisKKyAgLy8gVGhlIENoaVNxdWFyZWRUZXN0SW1wbCBwcm92aWRlcyBhIGNo
aS1zcXVhcmVkIGdvb2RuZXNzIG9mIGZpdCB0ZXN0IGZvciBkYXRhCisgIC8vIGdlbmVyYXRlZCBi
eSB0aGUgcG9pc3NvbiBkaXN0cmlidXRpb24uCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBEPgorICBk
b3VibGUgQ2hpU3F1YXJlZFRlc3RJbXBsKCk7CisKKyBwcml2YXRlOgorICB2b2lkIEluaXRDaGlT
cXVhcmVkVGVzdChjb25zdCBkb3VibGUgYnVja2V0cyk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRH
ZW4gcm5nXzsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBjdXRvZmZzXzsKKyAgc3RkOjp2ZWN0b3I8
ZG91YmxlPiBleHBlY3RlZF87Cit9OworCit2b2lkIFBvaXNzb25EaXN0cmlidXRpb25DaGlTcXVh
cmVkVGVzdDo6SW5pdENoaVNxdWFyZWRUZXN0KAorICAgIGNvbnN0IGRvdWJsZSBidWNrZXRzKSB7
CisgIGlmICghY3V0b2Zmc18uZW1wdHkoKSAmJiAhZXhwZWN0ZWRfLmVtcHR5KCkpIHsKKyAgICBy
ZXR1cm47CisgIH0KKyAgSW5pdENERigpOworCisgIC8vIFRoZSBjb2RlIGJlbG93IGZpbmRzIGN1
dHRvZmZzIHRoYXQgeWllbGQgYXBwcm94aW1hdGVseSBlcXVhbGx5LXNpemVkCisgIC8vIGJ1Y2tl
dHMgdG8gdGhlIGV4dGVudCB0aGF0IGl0IGlzIHBvc3NpYmxlLiBIb3dldmVyIGZvciBwb2lzc29u
CisgIC8vIGRpc3RyaWJ1dGlvbnMgdGhpcyBpcyBwYXJ0aWN1bGFybHkgY2hhbGxlbmdpbmcgZm9y
IHNtYWxsIG1lYW4gcGFyYW1ldGVycy4KKyAgLy8gVHJhY2sgdGhlIGV4cGVjdGVkIHByb3BvcnRp
b24gb2YgaXRlbXMgaW4gZWFjaCBidWNrZXQuCisgIGRvdWJsZSBsYXN0X2NkZiA9IDA7CisgIGNv
bnN0IGRvdWJsZSBpbmMgPSAxLjAgLyBidWNrZXRzOworICBmb3IgKGRvdWJsZSBwID0gaW5jOyBw
IDw9IDEuMDsgcCArPSBpbmMpIHsKKyAgICBhdXRvIHJlc3VsdCA9IEludmVyc2VDREYocCk7Cisg
ICAgaWYgKCFjdXRvZmZzXy5lbXB0eSgpICYmIGN1dG9mZnNfLmJhY2soKSA9PSByZXN1bHQuaW5k
ZXgpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBkb3VibGUgZCA9IHJlc3VsdC5jZGYg
LSBsYXN0X2NkZjsKKyAgICBjdXRvZmZzXy5wdXNoX2JhY2socmVzdWx0LmluZGV4KTsKKyAgICBl
eHBlY3RlZF8ucHVzaF9iYWNrKGQpOworICAgIGxhc3RfY2RmID0gcmVzdWx0LmNkZjsKKyAgfQor
ICBjdXRvZmZzXy5wdXNoX2JhY2soc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7
CisgIGV4cGVjdGVkXy5wdXNoX2JhY2soc3RkOjptYXgoMC4wLCAxLjAgLSBsYXN0X2NkZikpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRD4KK2RvdWJsZSBQb2lzc29uRGlzdHJpYnV0aW9uQ2hp
U3F1YXJlZFRlc3Q6OkNoaVNxdWFyZWRUZXN0SW1wbCgpIHsKKyAgY29uc3QgaW50IGtTYW1wbGVz
ID0gMjAwMDsKKyAgY29uc3QgaW50IGtCdWNrZXRzID0gNTA7CisKKyAgLy8gVGhlIHBvaXNzb24g
Q0RGIGZhaWxzIGZvciBsYXJnZSBtZWFuIHZhbHVlcywgc2luY2UgZV4tbWVhbiBleGNlZWRzIHRo
ZQorICAvLyBtYWNoaW5lIHByZWNpc2lvbi4gRm9yIHRoZXNlIGNhc2VzLCB1c2luZyBhIG5vcm1h
bCBhcHByb3hpbWF0aW9uIHdvdWxkIGJlCisgIC8vIGFwcHJvcHJpYXRlLgorICBBQlNMX0FTU0VS
VChtZWFuKCkgPD0gMjAwKTsKKyAgSW5pdENoaVNxdWFyZWRUZXN0KGtCdWNrZXRzKTsKKworICBE
IGRpcyhtZWFuKCkpOworCisgIHN0ZDo6dmVjdG9yPGludDMyX3Q+IGNvdW50cyhjdXRvZmZzXy5z
aXplKCksIDApOworICBmb3IgKGludCBqID0gMDsgaiA8IGtTYW1wbGVzOyBqKyspIHsKKyAgICBj
b25zdCBzaXplX3QgeCA9IGRpcyhybmdfKTsKKyAgICBhdXRvIGl0ID0gc3RkOjpsb3dlcl9ib3Vu
ZChzdGQ6OmJlZ2luKGN1dG9mZnNfKSwgc3RkOjplbmQoY3V0b2Zmc18pLCB4KTsKKyAgICBjb3Vu
dHNbc3RkOjpkaXN0YW5jZShjdXRvZmZzXy5iZWdpbigpLCBpdCldKys7CisgIH0KKworICAvLyBO
b3JtYWxpemUgdGhlIGNvdW50cy4KKyAgc3RkOjp2ZWN0b3I8aW50MzJfdD4gZShleHBlY3RlZF8u
c2l6ZSgpLCAwKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBlLnNpemUoKTsgaSsrKSB7CisgICAg
ZVtpXSA9IGtTYW1wbGVzICogZXhwZWN0ZWRfW2ldOworICB9CisKKyAgLy8gVGhlIG51bGwtaHlw
b3RoZXNpcyBpcyB0aGF0IHRoZSBkaXN0cmlidXRpb24gaXMgYSBwb2lzc29uIGRpc3RyaWJ1dGlv
biB3aXRoCisgIC8vIHRoZSBwcm92aWRlZCBtZWFuIChub3QgZXN0aW1hdGVkIGZyb20gdGhlIGRh
dGEpLgorICBjb25zdCBpbnQgZG9mID0gc3RhdGljX2Nhc3Q8aW50Pihjb3VudHMuc2l6ZSgpKSAt
IDE7CisKKyAgLy8gVGhlIHRocmVzaG9sZCBmb3IgbG9nZ2luZyBpcyAxLWluLTUwLgorICBjb25z
dCBkb3VibGUgdGhyZXNob2xkID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVWYWx1
ZShkb2YsIDAuOTgpOworCisgIGNvbnN0IGRvdWJsZSBjaGlfc3F1YXJlID0gYWJzbDo6cmFuZG9t
X2ludGVybmFsOjpDaGlTcXVhcmUoCisgICAgICBzdGQ6OmJlZ2luKGNvdW50cyksIHN0ZDo6ZW5k
KGNvdW50cyksIHN0ZDo6YmVnaW4oZSksIHN0ZDo6ZW5kKGUpKTsKKworICBjb25zdCBkb3VibGUg
cCA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlUFZhbHVlKGNoaV9zcXVhcmUsIGRv
Zik7CisKKyAgLy8gTG9nIGlmIHRoZSBjaGlfc3F1YXJlZCB2YWx1ZSBpcyBhYm92ZSB0aGUgdGhy
ZXNob2xkLgorICBpZiAoY2hpX3NxdWFyZSA+IHRocmVzaG9sZCkgeworICAgIExvZ0NERigpOwor
CisgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywgYWJzbDo6U3RyQ2F0KCJWQUxVRVMgIGJ1Y2tl
dHM9IiwgY291bnRzLnNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgc2FtcGxlcz0iLCBrU2FtcGxlcykpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnRzLnNpemUoKTsgaSsrKSB7CisgICAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAg
ICAgICBJTkZPLCBhYnNsOjpTdHJDYXQoY3V0b2Zmc19baV0sICI6ICIsIGNvdW50c1tpXSwgIiB2
cy4gRT0iLCBlW2ldKSk7CisgICAgfQorCisgICAgQUJTTF9JTlRFUk5BTF9MT0coCisgICAgICAg
IElORk8sCisgICAgICAgIGFic2w6OlN0ckNhdChrQ2hpU3F1YXJlZCwgIihkYXRhLCBkb2Y9Iiwg
ZG9mLCAiKSA9ICIsIGNoaV9zcXVhcmUsICIgKCIsCisgICAgICAgICAgICAgICAgICAgICBwLCAi
KVxuIiwgIiB2cy5cbiIsIGtDaGlTcXVhcmVkLCAiIEAgMC45OCA9ICIsIHRocmVzaG9sZCkpOwor
ICB9CisgIHJldHVybiBwOworfQorCitURVNUX1AoUG9pc3NvbkRpc3RyaWJ1dGlvbkNoaVNxdWFy
ZWRUZXN0LCBBYnNsUG9pc3NvbkRpc3RyaWJ1dGlvbikgeworICBjb25zdCBpbnQga1RyaWFscyA9
IDIwOworCisgIC8vIExhcmdlIHZhbHVlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgLS0gdGhpcyBy
ZXF1aXJlcyBlc3RpbWF0aW5nIHRoZSBjZGYKKyAgLy8gdXNpbmcgdGhlIG5vcm1hbCBkaXN0cmli
dXRpb24gaW5zdGVhZCBvZiB0aGUgcG9pc3NvbiBpbiB0aGlzIGNhc2UuCisgIEFTU0VSVF9MRSht
ZWFuKCksIDIwMC4wKTsKKyAgaWYgKG1lYW4oKSA+IDIwMC4wKSB7CisgICAgcmV0dXJuOworICB9
CisKKyAgaW50IGZhaWx1cmVzID0gMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVHJpYWxzOyBp
KyspIHsKKyAgICBkb3VibGUgcF92YWx1ZSA9IENoaVNxdWFyZWRUZXN0SW1wbDxhYnNsOjpwb2lz
c29uX2Rpc3RyaWJ1dGlvbjxpbnQzMl90Pj4oKTsKKyAgICBpZiAocF92YWx1ZSA8IDAuMDA1KSB7
CisgICAgICBmYWlsdXJlcysrOworICAgIH0KKyAgfQorICAvLyBUaGVyZSBpcyBhIDAuMTAlIGNo
YW5jZSBvZiBwcm9kdWNpbmcgYXQgbGVhc3Qgb25lIGZhaWx1cmUsIHNvIHJhaXNlIHRoZQorICAv
LyBmYWlsdXJlIHRocmVzaG9sZCBoaWdoIGVub3VnaCB0byBhbGxvdyBmb3IgYSBmbGFrZSByYXRl
IDwgMTAsMDAwLgorICBFWFBFQ1RfTEUoZmFpbHVyZXMsIDQpOworfQorCitJTlNUQU5USUFURV9U
RVNUX1NVSVRFX1AoLCBQb2lzc29uRGlzdHJpYnV0aW9uQ2hpU3F1YXJlZFRlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoMC41LCAxLjAsIDIuMCwgMTAuMCwg
NTAuMCwgNTEuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
MDAuMCkpOworCisvLyBOT1RFOiBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbiBpcyBub3QgZ3Vh
cmFudGVlZCB0byBiZSBzdGFibGUuCitURVNUKFBvaXNzb25EaXN0cmlidXRpb25UZXN0LCBTdGFi
aWxpdHlUZXN0KSB7CisgIHVzaW5nIHRlc3Rpbmc6OkVsZW1lbnRzQXJlOworICAvLyBhYnNsOjpw
b2lzc29uX2Rpc3RyaWJ1dGlvbiBzdGFiaWxpdHkgcmVsaWVzIG9uIHN0YWJpbGl0eSBvZgorICAv
LyBzdGQ6OmV4cCwgc3RkOjpsb2csIHN0ZDo6c3FydCwgc3RkOjpjZWlsLCBzdGQ6OmZsb29yLCBh
bmQKKyAgLy8gYWJzbDo6RmFzdFVuaWZvcm1CaXRzLCBhYnNsOjpTdGlybGluZ0xvZ0ZhY3Rvcmlh
bCwgYWJzbDo6UmFuZFU2NFRvRG91YmxlLgorICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVl
bmNlX3VyYmcgdXJiZyh7CisgICAgICAweDAzNWIwZGM3ZTBhMThhY2Z1bGwsIDB4MDZjZWJlMGQy
NjUzNjgyZXVsbCwgMHgwMDYxZTliMjM4NjE1OTZidWxsLAorICAgICAgMHgwMDAzZWI3NmY2Zjdm
NzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGwsIDB4QzMzMkRERUZCRTZDNUFBNXVsbCwKKyAg
ICAgIDB4NjU1ODIxODU2OEFCOTcwMnVsbCwgMHgyQUVGN0RBRDVCNkUyRjg0dWxsLCAweDE1MjFC
NjI4MjkwNzYxNzB1bGwsCisgICAgICAweEVDREQ0Nzc1NjE5RjE1MTB1bGwsIDB4MTNDQ0E4MzBF
QjYxQkQ5NnVsbCwgMHgwMzM0RkUxRUFBMDM2M0NGdWxsLAorICAgICAgMHhCNTczNUM5MDRDNzBB
MjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1bGwsIDB4RUVDQzg2QkM2MDYyMkNBN3VsbCwKKyAg
ICAgIDB4NDg2NGYyMmMwNTliZjI5ZXVsbCwgMHgyNDc4NTZkOGI4NjI2NjVjdWxsLCAweGU0NmU4
NmU5YTEzMzdlMTB1bGwsCisgICAgICAweGQ4Yzg1NDFmMzUxOWIxMzN1bGwsIDB4ZTc1YjUxNjJj
NTY3YjllNHVsbCwgMHhmNzMyZTVkZWQ3MDA5YzVidWxsLAorICAgICAgMHhiMTcwYjk4MzUzMTIx
ZWFjdWxsLCAweDFlYzJlODk4NmQyMzYyY2F1bGwsIDB4ODE0YzhlMzVmZTlhOTYxYXVsbCwKKyAg
ICAgIDB4MGMzY2Q1OWM5YjYzOGEwMnVsbCwgMHhjYjNiYjY0NzhhMDc3MTVjdWxsLCAweDEyMjRl
NjJjOTc4YmJjN2Z1bGwsCisgICAgICAweDY3MWVmMmNiMDRlODFmNmV1bGwsIDB4M2MxY2JkODEx
ZWFmMTgwOHVsbCwgMHgxYmJjMjNjZmE4ZmFjNzIxdWxsLAorICAgICAgMHhhNGMyY2RhNjVlNTk2
YTUxdWxsLCAweGI3NzIxNmZhZDM3YWRmOTF1bGwsIDB4ODM2ZDc5NDQ1N2MwODg0OXVsbCwKKyAg
ICAgIDB4ZTA4M2RmMDM0NzVmNDlkN3VsbCwgMHhiYzlmZWI1MTJlNmIwZDZjdWxsLCAweGIxMmQ3
NGZkZDcxOGM4YzV1bGwsCisgICAgICAweDEyZmYwOTY1M2JmYmU0Y2F1bGwsIDB4OGRkMDNhMTA1
YmM0ZWU3ZXVsbCwgMHg1NzM4MzQxMDQ1YmEwZDg1dWxsLAorICAgICAgMHhmM2ZkNzIyZGM2NWFk
MDlldWxsLCAweGZhMTRmZDIxZWEyYTU3MDV1bGwsIDB4ZmZlNmVhNGQ2ZWRiMGM3M3VsbCwKKyAg
ICAgIDB4RDA3RTlFRkUyQkYxMUZCNHVsbCwgMHg5NURCREE0REFFOTA5MTk4dWxsLCAweEVBQUQ4
RTcxNkI5M0Q1QTB1bGwsCisgICAgICAweEQwOEVEMUQwQUZDNzI1RTB1bGwsIDB4OEUzQzVCMkY4
RTc1OTRCN3VsbCwgMHg4RkY2RTJGQkYyMTIyQjY0dWxsLAorICAgICAgMHg4ODg4QjgxMjkwMERG
MDFDdWxsLCAweDRGQUQ1RUEwNjg4RkMzMUN1bGwsIDB4RDFDRkYxOTFCM0E4QzFBRHVsbCwKKyAg
ICAgIDB4MkYyRjIyMThCRTBFMTc3N3VsbCwgMHhFQTc1MkRGRThCMDIxRkExdWxsLCAweEU1QTBD
QzBGQjU2Rjc0RTh1bGwsCisgICAgICAweDE4QUNGM0Q2Q0U4OUUyOTl1bGwsIDB4QjRBODRGRTBG
RDEzRTBCN3VsbCwgMHg3Q0M0M0I4MUQyQURBOEQ5dWxsLAorICAgICAgMHgxNjVGQTI2NjgwOTU3
NzA1dWxsLCAweDkzQ0M3MzE0MjExQTE0Nzd1bGwsIDB4RTZBRDIwNjU3N0I1RkE4NnVsbCwKKyAg
ICAgIDB4Qzc1NDQyRjVGQjlEMzVDRnVsbCwgMHhFQkNEQUYwQzdCM0U4OUEwdWxsLCAweEQ2NDEx
QkQzQUUxRTdFNDl1bGwsCisgICAgICAweDAwMjUwRTJEMjA3MUIzNUV1bGwsIDB4MjI2ODAwQkI1
N0I4RTBBRnVsbCwgMHgyNDY0MzY5QkYwMDlCOTFFdWxsLAorICAgICAgMHg1NTYzOTExRDU5REZB
NkFBdWxsLCAweDc4QzE0Mzg5RDk1QTUzN0Z1bGwsIDB4MjA3RDVCQTIwMkU1QjlDNXVsbCwKKyAg
ICAgIDB4ODMyNjAzNzY2Mjk1Q0ZBOXVsbCwgMHgxMUM4MTk2ODRFNzM0QTQxdWxsLCAweEIzNDcy
RENBN0IxNEE5NEF1bGwsCisgIH0pOworCisgIHN0ZDo6dmVjdG9yPGludD4gb3V0cHV0KDEwKTsK
KworICAvLyBNZXRob2QgMS4KKyAgeworICAgIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPGlu
dD4gZGlzdCg1KTsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjpl
bmQob3V0cHV0KSwKKyAgICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBkaXN0KHVyYmcpOyB9
KTsKKyAgfQorICBFWFBFQ1RfVEhBVChvdXRwdXQsICAvLyBtZWFuID0gNC4yCisgICAgICAgICAg
ICAgIEVsZW1lbnRzQXJlKDEsIDAsIDAsIDQsIDIsIDEwLCAzLCAzLCA3LCAxMikpOworCisgIC8v
IE1ldGhvZCAyLgorICB7CisgICAgdXJiZy5yZXNldCgpOworICAgIGFic2w6OnBvaXNzb25fZGlz
dHJpYnV0aW9uPGludD4gZGlzdCgyNSk7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91
dHB1dCksIHN0ZDo6ZW5kKG91dHB1dCksCisgICAgICAgICAgICAgICAgICBbJl0geyByZXR1cm4g
ZGlzdCh1cmJnKTsgfSk7CisgIH0KKyAgRVhQRUNUX1RIQVQob3V0cHV0LCAgLy8gbWVhbiA9IDE5
LjgKKyAgICAgICAgICAgICAgRWxlbWVudHNBcmUoOSwgMzUsIDE4LCAxMCwgMzUsIDE4LCAxMCwg
MzUsIDE4LCAxMCkpOworCisgIC8vIE1ldGhvZCAzLgorICB7CisgICAgdXJiZy5yZXNldCgpOwor
ICAgIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPGludD4gZGlzdCgxMjEpOworICAgIHN0ZDo6
Z2VuZXJhdGUoc3RkOjpiZWdpbihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLAorICAgICAgICAg
ICAgICAgICAgWyZdIHsgcmV0dXJuIGRpc3QodXJiZyk7IH0pOworICB9CisgIEVYUEVDVF9USEFU
KG91dHB1dCwgIC8vIG1lYW4gPSAxMjQuMQorICAgICAgICAgICAgICBFbGVtZW50c0FyZSgxNjEs
IDEyMiwgMTI5LCAxMjQsIDExMiwgMTEyLCAxMTcsIDEyMCwgMTMwLCAxMTQpKTsKK30KKworVEVT
VChQb2lzc29uRGlzdHJpYnV0aW9uVGVzdCwgQWxnb3JpdGhtRXhwZWN0ZWRWYWx1ZV8xKSB7Cisg
IC8vIFRoaXMgdGVzdHMgc21hbGwgdmFsdWVzIG9mIHRoZSBLbnV0aCBtZXRob2QuCisgIC8vIFRo
ZSB1bmRlcmx5aW5nIHVuaWZvcm0gZGlzdHJpYnV0aW9uIHdpbGwgZ2VuZXJhdGUgZXhhY3RseSAw
LjUuCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKHsweDgwMDAw
MDAwMDAwMDAwMDF1bGx9KTsKKyAgYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248aW50PiBkaXN0
KDUpOworICBFWFBFQ1RfRVEoNywgZGlzdCh1cmJnKSk7Cit9CisKK1RFU1QoUG9pc3NvbkRpc3Ry
aWJ1dGlvblRlc3QsIEFsZ29yaXRobUV4cGVjdGVkVmFsdWVfMikgeworICAvLyBUaGlzIHRlc3Rz
IGxhcmdlciB2YWx1ZXMgb2YgdGhlIEtudXRoIG1ldGhvZC4KKyAgLy8gVGhlIHVuZGVybHlpbmcg
dW5pZm9ybSBkaXN0cmlidXRpb24gd2lsbCBnZW5lcmF0ZSBleGFjdGx5IDAuNS4KKyAgYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoezB4ODAwMDAwMDAwMDAwMDAwMXVs
bH0pOworICBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxpbnQ+IGRpc3QoMjUpOworICBFWFBF
Q1RfRVEoMzYsIGRpc3QodXJiZykpOworfQorCitURVNUKFBvaXNzb25EaXN0cmlidXRpb25UZXN0
LCBBbGdvcml0aG1FeHBlY3RlZFZhbHVlXzMpIHsKKyAgLy8gVGhpcyB2YXJpYW50IHVzZXMgdGhl
IHJhdGlvIG9mIHVuaWZvcm1zIG1ldGhvZC4KKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1
ZW5jZV91cmJnIHVyYmcoCisgICAgICB7MHg3ZmZmZmZmZmZmZmZmZmZmdWxsLCAweDgwMDAwMDAw
MDAwMDAwMDB1bGx9KTsKKworICBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxpbnQ+IGRpc3Qo
MTIxKTsKKyAgRVhQRUNUX0VRKDEyMSwgZGlzdCh1cmJnKSk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3JhbmRvbS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3JhbmRv
bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRjNjg1MmY0YWRmM2FkMTRhZjU0MThhMWM3NTc1YWE0ZjNkMmExMWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcmFuZG9tLmgKQEAgLTAsMCArMSwxODcg
QEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiByYW5kb20uaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vCisvLyBUaGlzIGhlYWRlciBkZWZpbmVzIHRoZSByZWNvbW1lbmRlZCBVbmlmb3JtIFJh
bmRvbSBCaXQgR2VuZXJhdG9yIChVUkJHKQorLy8gdHlwZXMgZm9yIHVzZSB3aXRoaW4gdGhlIEFi
c2VpbCBSYW5kb20gbGlicmFyeS4gVGhlc2UgdHlwZXMgYXJlIG5vdAorLy8gc3VpdGFibGUgZm9y
IHNlY3VyaXR5LXJlbGF0ZWQgdXNlLWNhc2VzLCBidXQgc2hvdWxkIHN1ZmZpY2UgZm9yIG1vc3Qg
b3RoZXIKKy8vIHVzZXMgb2YgZ2VuZXJhdGluZyByYW5kb20gdmFsdWVzLgorLy8KKy8vIFRoZSBB
YnNlaWwgcmFuZG9tIGxpYnJhcnkgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBVUkJHIHR5cGVzOgor
Ly8KKy8vICAgKiBCaXRHZW4sIGEgZ29vZCBnZW5lcmFsLXB1cnBvc2UgYml0IGdlbmVyYXRvciwg
b3B0aW1pemVkIGZvciBnZW5lcmF0aW5nCisvLyAgICAgcmFuZG9tIChidXQgbm90IGNyeXB0b2dy
YXBoaWNhbGx5IHNlY3VyZSkgdmFsdWVzCisvLyAgICogSW5zZWN1cmVCaXRHZW4sIGEgc2xpZ2h0
bHkgZmFzdGVyLCB0aG91Z2ggbGVzcyByYW5kb20sIGJpdCBnZW5lcmF0b3IsIGZvcgorLy8gICAg
IGNhc2VzIHdoZXJlIHRoZSBleGlzdGluZyBCaXRHZW4gaXMgYSBkcmFnIG9uIHBlcmZvcm1hbmNl
LgorCisjaWZuZGVmIEFCU0xfUkFORE9NX1JBTkRPTV9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9S
QU5ET01fSF8KKworI2luY2x1ZGUgPHJhbmRvbT4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2Rp
c3RyaWJ1dGlvbnMuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9ub25zZWN1cmVfYmFzZS5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAor
I2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3BjZ19lbmdpbmUuaCIgIC8vIElXWVUgcHJh
Z21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmcuaCIK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZW5naW5lLmgiCisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXMuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQK
KworbmFtZXNwYWNlIGFic2wgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6
Qml0R2VuCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIGBhYnNsOjpCaXRHZW5gIGlz
IGEgZ2VuZXJhbC1wdXJwb3NlIHJhbmRvbSBiaXQgZ2VuZXJhdG9yIGZvciBnZW5lcmF0aW5nCisv
LyByYW5kb20gdmFsdWVzIGZvciB1c2Ugd2l0aGluIHRoZSBBYnNlaWwgcmFuZG9tIGxpYnJhcnku
IFR5cGljYWxseSwgeW91IHVzZSBhCisvLyBiaXQgZ2VuZXJhdG9yIGluIGNvbWJpbmF0aW9uIHdp
dGggYSBkaXN0cmlidXRpb24gdG8gcHJvdmlkZSByYW5kb20gdmFsdWVzLgorLy8KKy8vIEV4YW1w
bGU6CisvLworLy8gICAvLyBDcmVhdGUgYW4gYWJzbDo6Qml0R2VuLiBUaGVyZSBpcyBubyBuZWVk
IHRvIHNlZWQgdGhpcyBiaXQgZ2VuZXJhdG9yLgorLy8gICBhYnNsOjpCaXRHZW4gZ2VuOworLy8K
Ky8vICAgLy8gR2VuZXJhdGUgYW4gaW50ZWdlciB2YWx1ZSBpbiB0aGUgY2xvc2VkIGludGVydmFs
IFsxLDZdCisvLyAgIGludCBkaWVfcm9sbCA9IGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
bjxpbnQ+KDEsIDYpKGdlbik7CisvLworLy8gYGFic2w6OkJpdEdlbmAgaXMgc2VlZGVkIGJ5IGRl
ZmF1bHQgd2l0aCBub24tZGV0ZXJtaW5pc3RpYyBkYXRhIHRvIHByb2R1Y2UKKy8vIGRpZmZlcmVu
dCBzZXF1ZW5jZXMgb2YgcmFuZG9tIHZhbHVlcyBhY3Jvc3MgZGlmZmVyZW50IGluc3RhbmNlcywg
aW5jbHVkaW5nCisvLyBkaWZmZXJlbnQgYmluYXJ5IGludm9jYXRpb25zLiBUaGlzIGJlaGF2aW9y
IGlzIGRpZmZlcmVudCB0aGFuIHRoZSBzdGFuZGFyZAorLy8gbGlicmFyeSBiaXQgZ2VuZXJhdG9y
cywgd2hpY2ggdXNlIGdvbGRlbiB2YWx1ZXMgYXMgdGhlaXIgc2VlZHMuIERlZmF1bHQKKy8vIGNv
bnN0cnVjdGlvbiBpbnRlbnRpb25hbGx5IHByb3ZpZGVzIG5vIHN0YWJpbGl0eSBndWFyYW50ZWVz
LCB0byBhdm9pZAorLy8gYWNjaWRlbnRhbCBkZXBlbmRlbmNlIG9uIHN1Y2ggYSBwcm9wZXJ0eS4K
Ky8vCisvLyBgYWJzbDo6Qml0R2VuYCBtYXkgYmUgY29uc3RydWN0ZWQgd2l0aCBhbiBvcHRpb25h
bCBzZWVkIHNlcXVlbmNlIHR5cGUsCisvLyBjb25mb3JtaW5nIHRvIFtyYW5kLnJlcS5zZWVkX3Nl
cV0sIHdoaWNoIHdpbGwgYmUgbWl4ZWQgd2l0aCBhZGRpdGlvbmFsCisvLyBub24tZGV0ZXJtaW5p
c3RpYyBkYXRhLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gIC8vIENyZWF0ZSBhbiBhYnNsOjpC
aXRHZW4gdXNpbmcgYW4gc3RkOjpzZWVkX3NlcSBzZWVkIHNlcXVlbmNlCisvLyAgc3RkOjpzZWVk
X3NlcSBzZXF7MSwyLDN9OworLy8gIGFic2w6OkJpdEdlbiBnZW5fd2l0aF9zZWVkKHNlcSk7Cisv
LworLy8gIC8vIEdlbmVyYXRlIGFuIGludGVnZXIgdmFsdWUgaW4gdGhlIGNsb3NlZCBpbnRlcnZh
bCBbMSw2XQorLy8gIGludCBkaWVfcm9sbDIgPSBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRp
b248aW50PigxLCA2KShnZW5fd2l0aF9zZWVkKTsKKy8vCisvLyBgYWJzbDo6Qml0R2VuYCBtZWV0
cyB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBVbmlmb3JtIFJhbmRvbSBCaXQgR2VuZXJhdG9yCisv
LyAoVVJCRykgY29uY2VwdCBhcyBwZXIgdGhlIEMrKzE3IHN0YW5kYXJkIFtyYW5kLnJlcS51cm5n
XSB0aG91Z2ggZGlmZmVycworLy8gc2xpZ2h0bHkgd2l0aCBbcmFuZC5yZXEuZW5nXS4gTGlrZSBp
dHMgc3RhbmRhcmQgbGlicmFyeSBlcXVpdmFsZW50cyAoZS5nLgorLy8gYHN0ZDo6bWVyc2VubmVf
dHdpc3Rlcl9lbmdpbmVgKSBgYWJzbDo6Qml0R2VuYCBpcyBub3QgY3J5cHRvZ3JhcGhpY2FsbHkK
Ky8vIHNlY3VyZS4KKy8vCisvLyBDb25zdHJ1Y3RpbmcgdHdvIGBhYnNsOjpCaXRHZW5gcyB3aXRo
IHRoZSBzYW1lIHNlZWQgc2VxdWVuY2UgaW4gdGhlIHNhbWUKKy8vIGJpbmFyeSB3aWxsIHByb2R1
Y2UgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFyaWF0ZXMgd2l0aGluIHRoZSBzYW1lIGJpbmFyeSwg
YnV0CisvLyBuZWVkIG5vdCBkbyBzbyBhY3Jvc3MgbXVsdGlwbGUgYmluYXJ5IGludm9jYXRpb25z
LgorLy8KKy8vIFRoaXMgdHlwZSBoYXMgYmVlbiBvcHRpbWl6ZWQgdG8gcGVyZm9ybSBiZXR0ZXIg
dGhhbiBNZXJzZW5uZSBUd2lzdGVyCisvLyAoaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
TWVyc2VubmVfVHdpc3RlcikgYW5kIG1hbnkgb3RoZXIgY29tcGxleCBVUkJHCisvLyB0eXBlcyBv
biBtb2Rlcm4geDg2LCBBUk0sIGFuZCBQUEMgYXJjaGl0ZWN0dXJlcy4KKy8vCisvLyBUaGlzIHR5
cGUgaXMgdGhyZWFkLWNvbXBhdGlibGUsIGJ1dCBub3QgdGhyZWFkLXNhZmUuCisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6Qml0R2VuIG1lbWJlciBmdW5jdGlvbnMKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisvLyBhYnNsOjpCaXRHZW46Om9wZXJhdG9yKCkoKQorLy8KKy8vIENh
bGxzIHRoZSBCaXRHZW4sIHJldHVybmluZyBhIGdlbmVyYXRlZCB2YWx1ZS4KKworLy8gYWJzbDo6
Qml0R2VuOjptaW4oKQorLy8KKy8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIHZhbHVl
IGZyb20gdGhpcyBiaXQgZ2VuZXJhdG9yLgorCisvLyBhYnNsOjpCaXRHZW46Om1heCgpCisvLwor
Ly8gUmV0dXJucyB0aGUgbGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSBmcm9tIHRoaXMgYml0IGdlbmVy
YXRvci4sIGFuZAorCisvLyBhYnNsOjpCaXRHZW46OmRpc2NhcmQobnVtKQorLy8KKy8vIEFkdmFu
Y2VzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGlzIGJpdCBnZW5lcmF0b3IgYnkgYG51bWAgdGlt
ZXMsIGFuZAorLy8gZGlzY2FyZHMgdGhlIGludGVybWVkaWF0ZSByZXN1bHRzLgorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK3VzaW5nIEJpdEdlbiA9IHJhbmRvbV9pbnRlcm5hbDo6Tm9uc2VjdXJl
VVJCR0Jhc2U8CisgICAgcmFuZG9tX2ludGVybmFsOjpyYW5kZW5fZW5naW5lPHVpbnQ2NF90Pj47
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNsOjpJbnNlY3VyZUJpdEdlbgorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBgYWJzbDo6SW5zZWN1cmVCaXRHZW5gIGlzIGFu
IGVmZmljaWVudCByYW5kb20gYml0IGdlbmVyYXRvciBmb3IgZ2VuZXJhdGluZworLy8gcmFuZG9t
IHZhbHVlcywgcmVjb21tZW5kZWQgb25seSBmb3IgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIHVzZSBj
YXNlcyB3aGVyZQorLy8gYGFic2w6OkJpdEdlbmAgaXMgbm90IHNhdGlzZmFjdG9yeSB3aGVuIGNv
bXB1dGUtYm91bmRlZCBieSBiaXQgZ2VuZXJhdGlvbgorLy8gY29zdHMuCisvLworLy8gRXhhbXBs
ZToKKy8vCisvLyAgIC8vIENyZWF0ZSBhbiBhYnNsOjpJbnNlY3VyZUJpdEdlbgorLy8gICBhYnNs
OjpJbnNlY3VyZUJpdEdlbiBnZW47CisvLyAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwMDAw
MDsgaSsrKSB7CisvLworLy8gICAgIC8vIEdlbmVyYXRlIGEgYnVuY2ggb2YgcmFuZG9tIHZhbHVl
cyBmcm9tIHNvbWUgY29tcGxleCBkaXN0cmlidXRpb24KKy8vICAgICBhdXRvIG15X3JuZCA9IHNv
bWVfZGlzdHJpYnV0aW9uKGdlbiwgMSwgMTAwMCk7CisvLyAgIH0KKy8vCisvLyBMaWtlIGBhYnNs
OjpCaXRHZW5gLCBgYWJzbDo6SW5zZWN1cmVCaXRHZW5gIGlzIHNlZWRlZCBieSBkZWZhdWx0IHdp
dGgKKy8vIG5vbi1kZXRlcm1pbmlzdGljIGRhdGEgdG8gcHJvZHVjZSBkaWZmZXJlbnQgc2VxdWVu
Y2VzIG9mIHJhbmRvbSB2YWx1ZXMgYWNyb3NzCisvLyBkaWZmZXJlbnQgaW5zdGFuY2VzLCBpbmNs
dWRpbmcgZGlmZmVyZW50IGJpbmFyeSBpbnZvY2F0aW9ucy4gKFRoaXMgYmVoYXZpb3IKKy8vIGlz
IGRpZmZlcmVudCB0aGFuIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGJpdCBnZW5lcmF0b3JzLCB3aGlj
aCB1c2UgZ29sZGVuCisvLyB2YWx1ZXMgYXMgdGhlaXIgc2VlZHMuKQorLy8KKy8vIGBhYnNsOjpJ
bnNlY3VyZUJpdEdlbmAgbWF5IGJlIGNvbnN0cnVjdGVkIHdpdGggYW4gb3B0aW9uYWwgc2VlZCBz
ZXF1ZW5jZQorLy8gdHlwZSwgY29uZm9ybWluZyB0byBbcmFuZC5yZXEuc2VlZF9zZXFdLCB3aGlj
aCB3aWxsIGJlIG1peGVkIHdpdGggYWRkaXRpb25hbAorLy8gbm9uLWRldGVybWluaXN0aWMgZGF0
YS4gKFNlZSBzdGRfc2VlZF9zZXEuaCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4pCisvLworLy8gYGFi
c2w6Okluc2VjdXJlQml0R2VuYCBtZWV0cyB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBVbmlmb3Jt
IFJhbmRvbSBCaXQKKy8vIEdlbmVyYXRvciAoVVJCRykgY29uY2VwdCBhcyBwZXIgdGhlIEMrKzE3
IHN0YW5kYXJkIFtyYW5kLnJlcS51cm5nXSB0aG91Z2gKKy8vIGl0cyBpbXBsZW1lbnRhdGlvbiBk
aWZmZXJzIHNsaWdodGx5IHdpdGggW3JhbmQucmVxLmVuZ10uIExpa2UgaXRzIHN0YW5kYXJkCisv
LyBsaWJyYXJ5IGVxdWl2YWxlbnRzIChlLmcuIGBzdGQ6Om1lcnNlbm5lX3R3aXN0ZXJfZW5naW5l
YCkKKy8vIGBhYnNsOjpJbnNlY3VyZUJpdEdlbmAgaXMgbm90IGNyeXB0b2dyYXBoaWNhbGx5IHNl
Y3VyZS4KKy8vCisvLyBQcmVmZXIgYGFic2w6OkJpdEdlbmAgb3ZlciBgYWJzbDo6SW5zZWN1cmVC
aXRHZW5gIGFzIHRoZSBnZW5lcmFsIHR5cGUgaXMKKy8vIG9mdGVuIGZhc3QgZW5vdWdoIGZvciB0
aGUgdmFzdCBtYWpvcml0eSBvZiBhcHBsaWNhdGlvbnMuCisKK3VzaW5nIEluc2VjdXJlQml0R2Vu
ID0KKyAgICByYW5kb21faW50ZXJuYWw6Ok5vbnNlY3VyZVVSQkdCYXNlPHJhbmRvbV9pbnRlcm5h
bDo6cGNnNjRfMjAxOF9lbmdpbmU+OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6
Okluc2VjdXJlQml0R2VuIG1lbWJlciBmdW5jdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisvLyBhYnNsOjpJbnNlY3VyZUJpdEdlbjo6b3BlcmF0b3IoKSgpCisvLworLy8gQ2FsbHMgdGhl
IEluc2VjdXJlQml0R2VuLCByZXR1cm5pbmcgYSBnZW5lcmF0ZWQgdmFsdWUuCisKKy8vIGFic2w6
Okluc2VjdXJlQml0R2VuOjptaW4oKQorLy8KKy8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHBvc3Np
YmxlIHZhbHVlIGZyb20gdGhpcyBiaXQgZ2VuZXJhdG9yLgorCisvLyBhYnNsOjpJbnNlY3VyZUJp
dEdlbjo6bWF4KCkKKy8vCisvLyBSZXR1cm5zIHRoZSBsYXJnZXN0IHBvc3NpYmxlIHZhbHVlIGZy
b20gdGhpcyBiaXQgZ2VuZXJhdG9yLgorCisvLyBhYnNsOjpJbnNlY3VyZUJpdEdlbjo6ZGlzY2Fy
ZChudW0pCisvLworLy8gQWR2YW5jZXMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoaXMgYml0IGdl
bmVyYXRvciBieSBgbnVtYCB0aW1lcywgYW5kCisvLyBkaXNjYXJkcyB0aGUgaW50ZXJtZWRpYXRl
IHJlc3VsdHMuCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworfSAgLy8gbmFtZXNwYWNlIGFic2wK
KworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9SQU5ET01fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9zZWVkX2dlbl9leGNlcHRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9nZW5fZXhjZXB0
aW9uLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU0MjcxYmFhYTA3ZjA3OTZhZjE0ZjQ2NTQ5MmQ5MWFmMWY2MGQw
MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9nZW5fZXhjZXB0aW9uLmNj
CkBAIC0wLDAgKzEsNDQgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vc2VlZF9nZW5fZXhjZXB0aW9uLmgiCisKKyNpbmNs
dWRlIDxpb3N0cmVhbT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKKworbmFtZXNw
YWNlIGFic2wgeworCitzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIga0V4Y2VwdGlvbk1lc3Nh
Z2VbXSA9CisgICAgIkZhaWxlZCBnZW5lcmF0aW5nIHNlZWQtbWF0ZXJpYWwgZm9yIFVSQkcuIjsK
KworU2VlZEdlbkV4Y2VwdGlvbjo6flNlZWRHZW5FeGNlcHRpb24oKSA9IGRlZmF1bHQ7CisKK2Nv
bnN0IGNoYXIqIFNlZWRHZW5FeGNlcHRpb246OndoYXQoKSBjb25zdCBub2V4Y2VwdCB7CisgIHJl
dHVybiBrRXhjZXB0aW9uTWVzc2FnZTsKK30KKworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7
CisKK3ZvaWQgVGhyb3dTZWVkR2VuRXhjZXB0aW9uKCkgeworI2lmZGVmIEFCU0xfSEFWRV9FWENF
UFRJT05TCisgIHRocm93IGFic2w6OlNlZWRHZW5FeGNlcHRpb24oKTsKKyNlbHNlCisgIHN0ZDo6
Y2VyciA8PCBrRXhjZXB0aW9uTWVzc2FnZSA8PCBzdGQ6OmVuZGw7CisgIHN0ZDo6dGVybWluYXRl
KCk7CisjZW5kaWYKK30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9zZWVkX2dlbl9leGNlcHRp
b24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9zZWVkX2dlbl9leGNlcHRpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDY0
ZDUyZmI5NTRkZTM4YzA4ZTRiMjU4MDc4NmMyMzk5OWJkNDU5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL3NlZWRfZ2VuX2V4Y2VwdGlvbi5oCkBAIC0wLDAgKzEsNTEgQEAKKy8vIENv
cHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyBGaWxlOiBzZWVkX2dlbl9leGNlcHRpb24uaAorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBUaGlzIGhlYWRlciBkZWZpbmVzIGFuIGV4Y2VwdGlvbiBjbGFzcyB3aGlj
aCBtYXkgYmUgdGhyb3duIGlmIHVucHJlZGljdGFibGUKKy8vIGV2ZW50cyBwcmV2ZW50IHRoZSBk
ZXJpdmF0aW9uIG9mIHN1aXRhYmxlIHNlZWQtbWF0ZXJpYWwgZm9yIGNvbnN0cnVjdGluZyBhCisv
LyBiaXQgZ2VuZXJhdG9yIGNvbmZvcm1pbmcgdG8gW3JhbmQucmVxLnVybmddIChlZy4gZW50cm9w
eSBjYW5ub3QgYmUgcmVhZCBmcm9tCisvLyAvZGV2L3VyYW5kb20gb24gYSBVbml4LWJhc2VkIHN5
c3RlbSkuCisvLworLy8gTm90ZTogaWYgZXhjZXB0aW9ucyBhcmUgZGlzYWJsZWQsIGBzdGQ6OnRl
cm1pbmF0ZSgpYCBpcyBjYWxsZWQgaW5zdGVhZC4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9TRUVE
X0dFTl9FWENFUFRJT05fSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fU0VFRF9HRU5fRVhDRVBUSU9O
X0hfCisKKyNpbmNsdWRlIDxleGNlcHRpb24+CisKK25hbWVzcGFjZSBhYnNsIHsKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIFNlZWRHZW5FeGNlcHRpb24KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitjbGFzcyBTZWVkR2VuRXhjZXB0aW9uIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uIHsK
KyBwdWJsaWM6CisgIFNlZWRHZW5FeGNlcHRpb24oKSA9IGRlZmF1bHQ7CisgIH5TZWVkR2VuRXhj
ZXB0aW9uKCkgb3ZlcnJpZGU7CisgIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCBub2V4Y2VwdCBv
dmVycmlkZTsKK307CisKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyB0aHJvdyBk
ZWxlZ2F0b3IKK1tbbm9yZXR1cm5dXSB2b2lkIFRocm93U2VlZEdlbkV4Y2VwdGlvbigpOworCit9
ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
ZW5kaWYgIC8vIEFCU0xfUkFORE9NX1NFRURfR0VOX0VYQ0VQVElPTl9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL3NlZWRfc2VxdWVuY2VzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3NlZWRfc2VxdWVu
Y2VzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjlmMzE5NjE1Mjg5YWVjZGIwZTYzNmYyZDZiMmQ1YzQ2NGFkODhh
M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXMuY2MKQEAg
LTAsMCArMSwyNyBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9zZWVkX3NlcXVlbmNlcy5oIgorCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJnLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKKworU2Vl
ZFNlcSBNYWtlU2VlZFNlcSgpIHsKKyAgU2VlZFNlcTo6cmVzdWx0X3R5cGUgc2VlZF9tYXRlcmlh
bFs4XTsKKyAgcmFuZG9tX2ludGVybmFsOjpSYW5kZW5Qb29sPHVpbnQzMl90Pjo6RmlsbChhYnNs
OjpNYWtlU3BhbihzZWVkX21hdGVyaWFsKSk7CisgIHJldHVybiBTZWVkU2VxKHN0ZDo6YmVnaW4o
c2VlZF9tYXRlcmlhbCksIHN0ZDo6ZW5kKHNlZWRfbWF0ZXJpYWwpKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9zZWVkX3NlcXVlbmNlcy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL3NlZWRfc2VxdWVuY2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMxZDFlY2Q0ZWE5ZDg3
MjBhZTA5NTVjNWY2ZGM5YzIwODhkZTkzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9zZWVkX3NlcXVlbmNlcy5oCkBAIC0wLDAgKzEsMTA4IEBACisvLyBDb3B5cmlnaHQgMjAxNyBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmls
ZTogc2VlZF9zZXF1ZW5jZXMuaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlz
IGhlYWRlciBjb250YWlucyB1dGlsaXRpZXMgZm9yIGNyZWF0aW5nIGFuZCB3b3JraW5nIHdpdGgg
c2VlZCBzZXF1ZW5jZXMKKy8vIGNvbmZvcm1pbmcgdG8gW3JhbmQucmVxLnNlZWRzZXFdLiBJbiBn
ZW5lcmFsLCBkaXJlY3QgY29uc3RydWN0aW9uIG9mIHNlZWQKKy8vIHNlcXVlbmNlcyBpcyBkaXNj
b3VyYWdlZCwgYnV0IHVzZS1jYXNlcyBmb3IgY29uc3RydWN0aW9uIG9mIGlkZW50aWNhbCBiaXQK
Ky8vIGdlbmVyYXRvcnMgKHVzaW5nIHRoZSBzYW1lIHNlZWQgc2VxdWVuY2UpIG1heSBiZSBoZWxw
ZnVsIChlLmcuIHJlcGxheWluZyBhCisvLyBzaW11bGF0aW9uIHdob3NlIHN0YXRlIGlzIGRlcml2
ZWQgZnJvbSB2YXJpYXRlcyBvZiBhIGJpdCBnZW5lcmF0b3IpLgorCisjaWZuZGVmIEFCU0xfUkFO
RE9NX1NFRURfU0VRVUVOQ0VTX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX1NFRURfU0VRVUVOQ0VT
X0hfCisKKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5kb20+CisKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zYWx0ZWRfc2VlZF9zZXEuaCIKKyNpbmNsdWRlICJhYnNs
L3JhbmRvbS9pbnRlcm5hbC9zZWVkX21hdGVyaWFsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20v
c2VlZF9nZW5fZXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9zcGFuLmgiCisKK25h
bWVzcGFjZSBhYnNsIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6OlNlZWRT
ZXEKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gYGFic2w6OlNlZWRTZXFgIGNvbnN0
cnVjdHMgYSBzZWVkIHNlcXVlbmNlIGFjY29yZGluZyB0byBbcmFuZC5yZXEuc2VlZHNlcV0KKy8v
IGZvciB1c2Ugd2l0aGluIGJpdCBnZW5lcmF0b3JzLiBgYWJzbDo6U2VlZFNlcWAsIHVubGlrZSBg
c3RkOjpzZWVkX3NlcWAKKy8vIGFkZGl0aW9uYWxseSBzYWx0cyB0aGUgZ2VuZXJhdGVkIHNlZWRz
IHdpdGggZXh0cmEgaW1wbGVtZW50YXRpb24tZGVmaW5lZAorLy8gZW50cm9weS4gRm9yIHRoYXQg
cmVhc29uLCB5b3UgY2FuIHVzZSBgYWJzbDo6U2VlZFNlcWAgaW4gY29tYmluYXRpb24gd2l0aAor
Ly8gc3RhbmRhcmQgbGlicmFyeSBiaXQgZ2VuZXJhdG9ycyAoZS5nLiBgc3RkOjptdDE5OTM3YCkg
dG8gaW50cm9kdWNlCisvLyBub24tZGV0ZXJtaW5pc20gaW4geW91ciBzZWVkcy4KKy8vCisvLyBF
eGFtcGxlOgorLy8KKy8vICAgYWJzbDo6U2VlZFNlcSBteV9zZWVkX3NlcSh7YSwgYiwgY30pOwor
Ly8gICBzdGQ6Om10MTk5MzcgbXlfYml0Z2VuKG15X3NlZWRfc2VxKTsKKy8vCit1c2luZyBTZWVk
U2VxID0gcmFuZG9tX2ludGVybmFsOjpTYWx0ZWRTZWVkU2VxPHN0ZDo6c2VlZF9zZXE+OworCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6Q3JlYXRlU2VlZFNlcUZyb20oYml0Z2Vu
KikKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQ29uc3RydWN0cyBhIHNlZWQgc2Vx
dWVuY2UgY29uZm9ybWluZyB0byBbcmFuZC5yZXEuc2VlZHNlcV0gdXNpbmcgdmFyaWF0ZXMKKy8v
IHByb2R1Y2VkIGJ5IGEgcHJvdmlkZWQgYml0IGdlbmVyYXRvci4KKy8vCisvLyBZb3Ugc2hvdWxk
IGdlbmVyYWxseSBhdm9pZCBkaXJlY3QgY29uc3RydWN0aW9uIG9mIHNlZWQgc2VxdWVuY2VzLCBi
dXQKKy8vIHVzZS1jYXNlcyBmb3IgcmV1c2Ugb2YgYSBzZWVkIHNlcXVlbmNlIHRvIGNvbnN0cnVj
dCBpZGVudGljYWwgYml0IGdlbmVyYXRvcnMKKy8vIG1heSBiZSBoZWxwZnVsIChlZy4gcmVwbGF5
aW5nIGEgc2ltdWxhdGlvbiB3aG9zZSBzdGF0ZSBpcyBkZXJpdmVkIGZyb20gYml0CisvLyBnZW5l
cmF0b3IgdmFsdWVzKS4KKy8vCisvLyBJZiBiaXRnZW4gPT0gbnVsbHB0ciwgdGhlbiBiZWhhdmlv
ciBpcyB1bmRlZmluZWQuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkJpdEdlbiBt
eV9iaXRnZW47CisvLyAgIGF1dG8gc2VlZF9zZXEgPSBhYnNsOjpDcmVhdGVTZWVkU2VxRnJvbSgm
bXlfYml0Z2VuKTsKKy8vICAgYWJzbDo6Qml0R2VuIG5ld19lbmdpbmUoc2VlZF9zZXEpOyAvLyBk
ZXJpdmVkIGZyb20gbXlfYml0Z2VuLCBidXQgbm90CisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY29ycmVsYXRlZC4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJC
Rz4KK1NlZWRTZXEgQ3JlYXRlU2VlZFNlcUZyb20oVVJCRyogdXJiZykgeworICBTZWVkU2VxOjpy
ZXN1bHRfdHlwZQorICAgICAgc2VlZF9tYXRlcmlhbFtyYW5kb21faW50ZXJuYWw6OmtFbnRyb3B5
QmxvY2tzTmVlZGVkXTsKKworICBpZiAoIXJhbmRvbV9pbnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlh
bEZyb21VUkJHKAorICAgICAgICAgIHVyYmcsIGFic2w6Ok1ha2VTcGFuKHNlZWRfbWF0ZXJpYWwp
KSkgeworICAgIHJhbmRvbV9pbnRlcm5hbDo6VGhyb3dTZWVkR2VuRXhjZXB0aW9uKCk7CisgIH0K
KyAgcmV0dXJuIFNlZWRTZXEoc3RkOjpiZWdpbihzZWVkX21hdGVyaWFsKSwgc3RkOjplbmQoc2Vl
ZF9tYXRlcmlhbCkpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6TWFr
ZVNlZWRTZXEoKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBDb25zdHJ1Y3RzIGFu
IGBhYnNsOjpTZWVkU2VxYCBzYWx0aW5nIHRoZSBnZW5lcmF0ZWQgdmFsdWVzIHVzaW5nCisvLyBp
bXBsZW1lbnRhdGlvbi1kZWZpbmVkIGVudHJvcHkuIFRoZSByZXR1cm5lZCBzZXF1ZW5jZSBjYW4g
YmUgdXNlZCB0byBjcmVhdGUKKy8vIGVxdWl2YWxlbnQgYml0IGdlbmVyYXRvcnMgY29ycmVsYXRl
ZCB1c2luZyB0aGlzIHNlcXVlbmNlLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhdXRvIG15
X3NlZWRfc2VxID0gYWJzbDo6TWFrZVNlZWRTZXEoKTsKKy8vICAgc3RkOjptdDE5OTM3IHJuZzEo
bXlfc2VlZF9zZXEpOworLy8gICBzdGQ6Om10MTk5Mzcgcm5nMihteV9zZWVkX3NlcSk7CisvLyAg
IEVYUEVDVF9FUShybmcxKCksIHJuZzIoKSk7CisvLworU2VlZFNlcSBNYWtlU2VlZFNlcSgpOwor
Cit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX1NFRURfU0VR
VUVOQ0VTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXNfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9zZWVkX3NlcXVlbmNlc190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjYzhi
MGU2ZjJiN2JjMzczM2FjYTIyYTZiYjk1Y2Y1NDAxMWFjMDUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXNfdGVzdC5jYwpAQCAtMCwwICsxLDEyNyBAQAorLy8g
Q29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9zZWVkX3NlcXVlbmNlcy5oIgorCisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8
cmFuZG9tPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL25vbnNlY3VyZV9iYXNlLmgiCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCituYW1lc3BhY2UgeworCitURVNUKFNlZWRT
ZXF1ZW5jZXMsIEV4YW1wbGVzKSB7CisgIHsKKyAgICBhYnNsOjpTZWVkU2VxIHNlZWRfc2VxKHsx
LCAyLCAzfSk7CisgICAgYWJzbDo6Qml0R2VuIGJpdGdlbihzZWVkX3NlcSk7CisKKyAgICBFWFBF
Q1RfTkUoMCwgYml0Z2VuKCkpOworICB9CisgIHsKKyAgICBhYnNsOjpCaXRHZW4gZW5naW5lOwor
ICAgIGF1dG8gc2VlZF9zZXEgPSBhYnNsOjpDcmVhdGVTZWVkU2VxRnJvbSgmZW5naW5lKTsKKyAg
ICBhYnNsOjpCaXRHZW4gYml0Z2VuKHNlZWRfc2VxKTsKKworICAgIEVYUEVDVF9ORShlbmdpbmUo
KSwgYml0Z2VuKCkpOworICB9CisgIHsKKyAgICBhdXRvIHNlZWRfc2VxID0gYWJzbDo6TWFrZVNl
ZWRTZXEoKTsKKyAgICBzdGQ6Om10MTk5MzcgcmFuZG9tKHNlZWRfc2VxKTsKKworICAgIEVYUEVD
VF9ORSgwLCByYW5kb20oKSk7CisgIH0KK30KKworVEVTVChDcmVhdGVTZWVkU2VxRnJvbSwgQ29t
cGF0aWJsZVdpdGhTdGRUeXBlcykgeworICB1c2luZyBFeGFtcGxlTm9uc2VjdXJlVVJCRyA9Cisg
ICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok5vbnNlY3VyZVVSQkdCYXNlPHN0ZDo6bWluc3Rk
X3JhbmQwPjsKKworICAvLyBDb25zdHJ1Y3QgYSBVUkJHIGluc3RhbmNlLgorICBFeGFtcGxlTm9u
c2VjdXJlVVJCRyBybmc7CisKKyAgLy8gQ29uc3RydWN0IGEgU2VlZCBTZXF1ZW5jZSBmcm9tIGl0
cyB2YXJpYXRlcy4KKyAgYXV0byBzZXFfZnJvbV9ybmcgPSBhYnNsOjpDcmVhdGVTZWVkU2VxRnJv
bSgmcm5nKTsKKworICAvLyBFbnN1cmUgdGhhdCBhbm90aGVyIFVSQkcgY2FuIGJlIHZhbGlkbHkg
Y29uc3RydWN0ZWQgZnJvbSB0aGUgU2VlZCBTZXF1ZW5jZS4KKyAgc3RkOjptdDE5OTM3XzY0e3Nl
cV9mcm9tX3JuZ307Cit9CisKK1RFU1QoQ3JlYXRlU2VlZFNlcUZyb20sIENvbXBhdGlibGVXaXRo
Qml0R2VuZXJhdG9yKSB7CisgIC8vIENvbnN0cnVjdCBhIFVSQkcgaW5zdGFuY2UuCisgIGFic2w6
OkJpdEdlbiBybmc7CisKKyAgLy8gQ29uc3RydWN0IGEgU2VlZCBTZXF1ZW5jZSBmcm9tIGl0cyB2
YXJpYXRlcy4KKyAgYXV0byBzZXFfZnJvbV9ybmcgPSBhYnNsOjpDcmVhdGVTZWVkU2VxRnJvbSgm
cm5nKTsKKworICAvLyBFbnN1cmUgdGhhdCBhbm90aGVyIFVSQkcgY2FuIGJlIHZhbGlkbHkgY29u
c3RydWN0ZWQgZnJvbSB0aGUgU2VlZCBTZXF1ZW5jZS4KKyAgc3RkOjptdDE5OTM3XzY0e3NlcV9m
cm9tX3JuZ307Cit9CisKK1RFU1QoQ3JlYXRlU2VlZFNlcUZyb20sIENvbXBhdGlibGVXaXRoSW5z
ZWN1cmVCaXRHZW4pIHsKKyAgLy8gQ29uc3RydWN0IGEgVVJCRyBpbnN0YW5jZS4KKyAgYWJzbDo6
SW5zZWN1cmVCaXRHZW4gcm5nOworCisgIC8vIENvbnN0cnVjdCBhIFNlZWQgU2VxdWVuY2UgZnJv
bSBpdHMgdmFyaWF0ZXMuCisgIGF1dG8gc2VxX2Zyb21fcm5nID0gYWJzbDo6Q3JlYXRlU2VlZFNl
cUZyb20oJnJuZyk7CisKKyAgLy8gRW5zdXJlIHRoYXQgYW5vdGhlciBVUkJHIGNhbiBiZSB2YWxp
ZGx5IGNvbnN0cnVjdGVkIGZyb20gdGhlIFNlZWQgU2VxdWVuY2UuCisgIHN0ZDo6bXQxOTkzN182
NHtzZXFfZnJvbV9ybmd9OworfQorCitURVNUKENyZWF0ZVNlZWRTZXFGcm9tLCBDb21wYXRpYmxl
V2l0aFJhd1VSQkcpIHsKKyAgLy8gQ29uc3RydWN0IGEgVVJCRyBpbnN0YW5jZS4KKyAgc3RkOjpy
YW5kb21fZGV2aWNlIHVyYW5kb207CisKKyAgLy8gQ29uc3RydWN0IGEgU2VlZCBTZXF1ZW5jZSBm
cm9tIGl0cyB2YXJpYXRlcywgdXNpbmcgNjRiIG9mIHNlZWQtbWF0ZXJpYWwuCisgIGF1dG8gc2Vx
X2Zyb21fcm5nID0gYWJzbDo6Q3JlYXRlU2VlZFNlcUZyb20oJnVyYW5kb20pOworCisgIC8vIEVu
c3VyZSB0aGF0IGFub3RoZXIgVVJCRyBjYW4gYmUgdmFsaWRseSBjb25zdHJ1Y3RlZCBmcm9tIHRo
ZSBTZWVkIFNlcXVlbmNlLgorICBzdGQ6Om10MTk5MzdfNjR7c2VxX2Zyb21fcm5nfTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit2b2lkIFRlc3RSZXByb2R1Y2libGVWYXJpYXRlU2Vx
dWVuY2VzRm9yTm9uc2VjdXJlVVJCRygpIHsKKyAgY29uc3Qgc2l6ZV90IGtOdW1WYXJpYXRlcyA9
IDEwMDA7CisKKyAgLy8gTWFzdGVyIFJORyBpbnN0YW5jZS4KKyAgVVJCRyBybmc7CisgIC8vIFJl
dXNlZCBmb3IgYm90aCBSTkcgaW5zdGFuY2VzLgorICBhdXRvIHJldXNhYmxlX3NlZWQgPSBhYnNs
OjpDcmVhdGVTZWVkU2VxRnJvbSgmcm5nKTsKKworICB0eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlw
ZSB2YXJpYXRlc1trTnVtVmFyaWF0ZXNdOworICB7CisgICAgVVJCRyBjaGlsZChyZXVzYWJsZV9z
ZWVkKTsKKyAgICBmb3IgKGF1dG8mIHZhcmlhdGUgOiB2YXJpYXRlcykgeworICAgICAgdmFyaWF0
ZSA9IGNoaWxkKCk7CisgICAgfQorICB9CisgIC8vIEVuc3VyZSB0aGF0IHZhcmlhdGUtc2VxdWVu
Y2UgY2FuIGJlICJyZXBsYXllZCIgYnkgaWRlbnRpY2FsIFJORy4KKyAgeworICAgIFVSQkcgY2hp
bGQocmV1c2FibGVfc2VlZCk7CisgICAgZm9yIChhdXRvJiB2YXJpYXRlIDogdmFyaWF0ZXMpIHsK
KyAgICAgIEFTU0VSVF9FUSh2YXJpYXRlLCBjaGlsZCgpKTsKKyAgICB9CisgIH0KK30KKworVEVT
VChDcmVhdGVTZWVkU2VxRnJvbSwgUmVwcm9kdWNlc1ZhcmlhdGVTZXF1ZW5jZXNGb3JJbnNlY3Vy
ZUJpdEdlbikgeworICBUZXN0UmVwcm9kdWNpYmxlVmFyaWF0ZVNlcXVlbmNlc0Zvck5vbnNlY3Vy
ZVVSQkc8YWJzbDo6SW5zZWN1cmVCaXRHZW4+KCk7Cit9CisKK1RFU1QoQ3JlYXRlU2VlZFNlcUZy
b20sIFJlcHJvZHVjZXNWYXJpYXRlU2VxdWVuY2VzRm9yQml0R2VuZXJhdG9yKSB7CisgIFRlc3RS
ZXByb2R1Y2libGVWYXJpYXRlU2VxdWVuY2VzRm9yTm9uc2VjdXJlVVJCRzxhYnNsOjpCaXRHZW4+
KCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3Jt
X2ludF9kaXN0cmlidXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3JtX2ludF9kaXN0cmlidXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40OTcwNDg2YTU2MWExNDBjOTc0N2NhNjcyYzMxMzdhNzc2OWU2MmI5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
bi5oCkBAIC0wLDAgKzEsMjczIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhv
cnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogdW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBoZWFk
ZXIgZGVmaW5lcyBhIGNsYXNzIGZvciByZXByZXNlbnRpbmcgYSB1bmlmb3JtIGludGVnZXIgZGlz
dHJpYnV0aW9uCisvLyBvdmVyIHRoZSBjbG9zZWQgKGluY2x1c2l2ZSkgaW50ZXJ2YWwgW2EsYl0u
IFlvdSB1c2UgdGhpcyBkaXN0cmlidXRpb24gaW4KKy8vIGNvbWJpbmF0aW9uIHdpdGggYW4gQWJz
ZWlsIHJhbmRvbSBiaXQgZ2VuZXJhdG9yIHRvIHByb2R1Y2UgcmFuZG9tIHZhbHVlcworLy8gYWNj
b3JkaW5nIHRvIHRoZSBydWxlcyBvZiB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIGBhYnNsOjp1
bmlmb3JtX2ludF9kaXN0cmlidXRpb25gIGlzIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgdGhl
IEMrKzExCisvLyBgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb25gIFtyYW5kLmRpc3QudW5p
LmludF0gYnV0IGlzIGNvbnNpZGVyYWJseQorLy8gZmFzdGVyIHRoYW4gdGhlIGxpYnN0ZGMrKyBp
bXBsZW1lbnRhdGlvbi4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9VTklGT1JNX0lOVF9ESVNUUklC
VVRJT05fSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fVU5JRk9STV9JTlRfRElTVFJJQlVUSU9OX0hf
CisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGlzdHJlYW0+CisjaW5jbHVkZSA8bGlt
aXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL29wdGlt
aXphdGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9p
bXBsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdF91bmlmb3JtX2JpdHMu
aCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5o
IgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0cy5oIgorCituYW1lc3BhY2Ug
YWJzbCB7CisKKy8vIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUPgorLy8KKy8vIFRo
aXMgZGlzdHJpYnV0aW9uIHByb2R1Y2VzIHJhbmRvbSBpbnRlZ2VyIHZhbHVlcyB1bmlmb3JtbHkg
ZGlzdHJpYnV0ZWQgaW4gdGhlCisvLyBjbG9zZWQgKGluY2x1c2l2ZSkgaW50ZXJ2YWwgW2EsIGJd
LgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhYnNsOjpCaXRHZW4gZ2VuOworLy8KKy8vICAg
Ly8gVXNlIHRoZSBkaXN0cmlidXRpb24gdG8gcHJvZHVjZSBhIHZhbHVlIGJldHdlZW4gMSBhbmQg
NiwgaW5jbHVzaXZlLgorLy8gICBpbnQgZGllX3JvbGwgPSBhYnNsOjp1bmlmb3JtX2ludF9kaXN0
cmlidXRpb248aW50PigxLCA2KShnZW4pOworLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBl
ID0gaW50PgorY2xhc3MgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uIHsKKyBwcml2YXRlOgorICB1
c2luZyB1bnNpZ25lZF90eXBlID0KKyAgICAgIHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6bWFr
ZV91bnNpZ25lZF9iaXRzPEludFR5cGU+Ojp0eXBlOworCisgcHVibGljOgorICB1c2luZyByZXN1
bHRfdHlwZSA9IEludFR5cGU7CisKKyAgY2xhc3MgcGFyYW1fdHlwZSB7CisgICBwdWJsaWM6Cisg
ICAgdXNpbmcgZGlzdHJpYnV0aW9uX3R5cGUgPSB1bmlmb3JtX2ludF9kaXN0cmlidXRpb247CisK
KyAgICBleHBsaWNpdCBwYXJhbV90eXBlKAorICAgICAgICByZXN1bHRfdHlwZSBsbyA9IDAsCisg
ICAgICAgIHJlc3VsdF90eXBlIGhpID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+
OjptYXgpKCkpCisgICAgICAgIDogbG9fKGxvKSwKKyAgICAgICAgICByYW5nZV8oc3RhdGljX2Nh
c3Q8dW5zaWduZWRfdHlwZT4oaGkpIC0KKyAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWRfdHlwZT4obG8pKSB7CisgICAgICAvLyBbcmFuZC5kaXN0LnVuaS5pbnRdIHByZWNvbmRp
dGlvbiAyCisgICAgICBhc3NlcnQobG8gPD0gaGkpOworICAgIH0KKworICAgIHJlc3VsdF90eXBl
IGEoKSBjb25zdCB7IHJldHVybiBsb187IH0KKyAgICByZXN1bHRfdHlwZSBiKCkgY29uc3Qgewor
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPihzdGF0aWNfY2FzdDx1bnNpZ25l
ZF90eXBlPihsb18pICsgcmFuZ2VfKTsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAgICAgIHJl
dHVybiBhLmxvXyA9PSBiLmxvXyAmJiBhLnJhbmdlXyA9PSBiLnJhbmdlXzsKKyAgICB9CisKKyAg
ICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFt
X3R5cGUmIGIpIHsKKyAgICAgIHJldHVybiAhKGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyB1bmlmb3JtX2ludF9kaXN0cmlidXRpb247CisgICAgdW5zaWdu
ZWRfdHlwZSByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlXzsgfQorCisgICAgcmVzdWx0X3R5
cGUgbG9fOworICAgIHVuc2lnbmVkX3R5cGUgcmFuZ2VfOworCisgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2ludGVncmFsPHJlc3VsdF90eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAi
Q2xhc3MtdGVtcGxhdGUgYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPD4gbXVzdCBiZSAi
CisgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyaXplZCB1c2luZyBhbiBpbnRlZ3JhbCB0eXBl
LiIpOworICB9OyAgLy8gcGFyYW1fdHlwZQorCisgIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbigp
IDogdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uKDApIHt9CisKKyAgZXhwbGljaXQgdW5pZm9ybV9p
bnRfZGlzdHJpYnV0aW9uKAorICAgICAgcmVzdWx0X3R5cGUgbG8sCisgICAgICByZXN1bHRfdHlw
ZSBoaSA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpKQorICAgICAg
OiBwYXJhbV8obG8sIGhpKSB7fQorCisgIGV4cGxpY2l0IHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
bihjb25zdCBwYXJhbV90eXBlJiBwYXJhbSkgOiBwYXJhbV8ocGFyYW0pIHt9CisKKyAgLy8gdW5p
Zm9ybV9pbnRfZGlzdHJpYnV0aW9uPFQ+OjpyZXNldCgpCisgIC8vCisgIC8vIFJlc2V0cyB0aGUg
dW5pZm9ybSBpbnQgZGlzdHJpYnV0aW9uLiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBoYXMgbm8g
ZWZmZWN0CisgIC8vIGJlY2F1c2UgdGhlIGRpc3RyaWJ1dGlvbiBhbHJlYWR5IHByb2R1Y2VzIGlu
ZGVwZW5kZW50IHZhbHVlcy4KKyAgdm9pZCByZXNldCgpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVVJCRyYgZ2VuKSB7ICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHJldHVybiAoKnRoaXMpKGdlbiwgcGFyYW0oKSk7
CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0
b3IoKSgKKyAgICAgIFVSQkcmIGdlbiwgY29uc3QgcGFyYW1fdHlwZSYgcGFyYW0pIHsgIC8vIE5P
TElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgcmV0dXJuIHBhcmFtLmEoKSArIEdlbmVyYXRl
KGdlbiwgcGFyYW0ucmFuZ2UoKSk7CisgIH0KKworICByZXN1bHRfdHlwZSBhKCkgY29uc3QgeyBy
ZXR1cm4gcGFyYW1fLmEoKTsgfQorICByZXN1bHRfdHlwZSBiKCkgY29uc3QgeyByZXR1cm4gcGFy
YW1fLmIoKTsgfQorCisgIHBhcmFtX3R5cGUgcGFyYW0oKSBjb25zdCB7IHJldHVybiBwYXJhbV87
IH0KKyAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBwYXJhbXMpIHsgcGFyYW1fID0gcGFy
YW1zOyB9CisKKyAgcmVzdWx0X3R5cGUobWluKSgpIGNvbnN0IHsgcmV0dXJuIGEoKTsgfQorICBy
ZXN1bHRfdHlwZShtYXgpKCkgY29uc3QgeyByZXR1cm4gYigpOyB9CisKKyAgZnJpZW5kIGJvb2wg
b3BlcmF0b3I9PShjb25zdCB1bmlmb3JtX2ludF9kaXN0cmlidXRpb24mIGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uJiBiKSB7CisgICAg
cmV0dXJuIGEucGFyYW1fID09IGIucGFyYW1fOworICB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oY29uc3QgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uJiBhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiAh
KGEgPT0gYik7CisgIH0KKworIHByaXZhdGU6CisgIC8vIEdlbmVyYXRlcyBhIHZhbHVlIGluIHRo
ZSAqY2xvc2VkKiBpbnRlcnZhbCBbMCwgUl0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cisg
IHVuc2lnbmVkX3R5cGUgR2VuZXJhdGUoVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVy
ZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWRfdHlwZSBSKTsKKyAgcGFy
YW1fdHlwZSBwYXJhbV87Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gSW1wbGVt
ZW50YXRpb24gZGV0YWlscyBmb2xsb3cKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgSW50VHlwZT4KK3N0
ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJh
c2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9zLAorICAgIGNvbnN0IHVuaWZvcm1faW50X2Rp
c3RyaWJ1dGlvbjxJbnRUeXBlPiYgeCkgeworICB1c2luZyBzdHJlYW1fdHlwZSA9CisgICAgICB0
eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OnN0cmVhbV9mb3JtYXRfdHlwZTxJbnRUeXBlPjo6dHlw
ZTsKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9vc3RyZWFtX3N0YXRlX3Nh
dmVyKG9zKTsKKyAgb3MgPDwgc3RhdGljX2Nhc3Q8c3RyZWFtX3R5cGU+KHguYSgpKSA8PCBvcy5m
aWxsKCkKKyAgICAgPDwgc3RhdGljX2Nhc3Q8c3RyZWFtX3R5cGU+KHguYigpKTsKKyAgcmV0dXJu
IG9zOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgSW50VHlwZT4KK3N0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0
b3I+PigKKyAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzLAorICAgIHVu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPiYgeCkgeworICB1c2luZyBwYXJhbV90eXBl
ID0gdHlwZW5hbWUgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBl
OworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
bjxJbnRUeXBlPjo6cmVzdWx0X3R5cGU7CisgIHVzaW5nIHN0cmVhbV90eXBlID0KKyAgICAgIHR5
cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX2Zvcm1hdF90eXBlPEludFR5cGU+Ojp0eXBl
OworCisgIHN0cmVhbV90eXBlIGE7CisgIHN0cmVhbV90eXBlIGI7CisKKyAgYXV0byBzYXZlciA9
IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9pc3RyZWFtX3N0YXRlX3NhdmVyKGlzKTsKKyAgaXMgPj4g
YSA+PiBiOworICBpZiAoIWlzLmZhaWwoKSkgeworICAgIHgucGFyYW0oCisgICAgICAgIHBhcmFt
X3R5cGUoc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KGEpLCBzdGF0aWNfY2FzdDxyZXN1bHRfdHlw
ZT4oYikpKTsKKyAgfQorICByZXR1cm4gaXM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRU
eXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6
Om1ha2VfdW5zaWduZWRfYml0czxJbnRUeXBlPjo6dHlwZQordW5pZm9ybV9pbnRfZGlzdHJpYnV0
aW9uPEludFR5cGU+OjpHZW5lcmF0ZSgKKyAgICBVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUv
cmVmZXJlbmNlcykKKyAgICB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6Om1ha2VfdW5zaWduZWRf
Yml0czxJbnRUeXBlPjo6dHlwZSBSKSB7CisgICAgcmFuZG9tX2ludGVybmFsOjpGYXN0VW5pZm9y
bUJpdHM8dW5zaWduZWRfdHlwZT4gZmFzdF9iaXRzOworICB1bnNpZ25lZF90eXBlIGJpdHMgPSBm
YXN0X2JpdHMoZyk7CisgIGNvbnN0IHVuc2lnbmVkX3R5cGUgTGltID0gUiArIDE7CisgIGlmICgo
UiAmIExpbSkgPT0gMCkgeworICAgIC8vIElmIHRoZSBpbnRlcnZhbCdzIGxlbmd0aCBpcyBhIHBv
d2VyIG9mIHR3byByYW5nZSwganVzdCB0YWtlIHRoZSBsb3cgYml0cy4KKyAgICByZXR1cm4gYml0
cyAmIFI7CisgIH0KKworICAvLyBHZW5lcmF0ZXMgYSB1bmlmb3JtIHZhcmlhdGUgb24gWzAsIExp
bSkgdXNpbmcgZml4ZWQtcG9pbnQgbXVsdGlwbGljYXRpb24uCisgIC8vIFRoZSBhYm92ZSBmYXN0
LXBhdGggZ3VhcmFudGVlcyB0aGF0IExpbSBpcyByZXByZXNlbnRhYmxlIGluIHVuc2lnbmVkX3R5
cGUuCisgIC8vCisgIC8vIEFsZ29yaXRobSBhZGFwdGVkIGZyb20KKyAgLy8gaHR0cDovL2xlbWly
ZS5tZS9ibG9nLzIwMTYvMDYvMzAvZmFzdC1yYW5kb20tc2h1ZmZsaW5nLywgd2l0aCBhZGRlZAor
ICAvLyBleHBsYW5hdGlvbi4KKyAgLy8KKyAgLy8gVGhlIGFsZ29yaXRobSBjcmVhdGVzIGEgdW5p
Zm9ybSB2YXJpYXRlIGBiaXRzYCBpbiB0aGUgaW50ZXJ2YWwgWzAsIDJeTiksCisgIC8vIGFuZCB0
cmVhdHMgaXQgYXMgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiBhIGZpeGVkLXBvaW50IHJlYWwgdmFs
dWUgaW4gWzAsIDEpLAorICAvLyBtdWx0aXBsaWVkIGJ5IDJeTi4gIEZvciBleGFtcGxlLCAwLjI1
IHdvdWxkIGJlIHJlcHJlc2VudGVkIGFzIDJeKE4gLSAyKSwKKyAgLy8gYmVjYXVzZSAyXk4gKiAw
LjI1ID09IDJeKE4gLSAyKS4KKyAgLy8KKyAgLy8gTmV4dCwgYGJpdHNgIGFuZCBgTGltYCBhcmUg
bXVsdGlwbGllZCB3aXRoIGEgd2lkZS1tdWx0aXBseSB0byBicmluZyB0aGUKKyAgLy8gdmFsdWUg
aW50byB0aGUgcmFuZ2UgWzAsIExpbSkuICBUaGUgaW50ZWdyYWwgcGFydCAodGhlIGhpZ2ggd29y
ZCBvZiB0aGUKKyAgLy8gbXVsdGlwbGljYXRpb24gcmVzdWx0KSBpcyB0aGVuIHZlcnkgbmVhcmx5
IHRoZSBkZXNpcmVkIHJlc3VsdC4gIEhvd2V2ZXIsCisgIC8vIHRoaXMgaXMgbm90IHF1aXRlIGFj
Y3VyYXRlOyB2aWV3aW5nIHRoZSBtdWx0aXBsaWNhdGlvbiByZXN1bHQgYXMgb25lCisgIC8vIGRv
dWJsZS13aWR0aCBpbnRlZ2VyLCB0aGUgcmVzdWx0aW5nIHZhbHVlcyBmb3IgdGhlIHNhbXBsZSBh
cmUgbWFwcGVkIGFzCisgIC8vIGZvbGxvd3M6CisgIC8vCisgIC8vIElmIHRoZSByZXN1bHQgbGll
cyBpbiB0aGlzIGludGVydmFsOiAgICAgICBSZXR1cm4gdGhpcyB2YWx1ZToKKyAgLy8gICAgICAg
IFswLCAyXk4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorICAvLyAgICAg
ICAgWzJeTiwgMiAqIDJeTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisgIC8vICAg
ICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAv
LyAgICAgICAgW0sgKiAyXk4sIChLICsgMSkgKiAyXk4pICAgICAgICAgICAgICAgICAgICBLCisg
IC8vICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4u
LgorICAvLyAgICAgICAgWyhMaW0gLSAxKSAqIDJeTiwgTGltICogMl5OKSAgICAgICAgICAgICAg
ICBMaW0gLSAxCisgIC8vCisgIC8vIFdoaWxlIGFsbCBvZiB0aGVzZSBpbnRlcnZhbHMgaGF2ZSB0
aGUgc2FtZSBzaXplLCB0aGUgcmVzdWx0IG9mIGBiaXRzICogTGltYAorICAvLyBtdXN0IGJlIGEg
bXVsdGlwbGUgb2YgYExpbWAsIGFuZCBub3QgYWxsIG9mIHRoZXNlIGludGVydmFscyBjb250YWlu
IHRoZQorICAvLyBzYW1lIG51bWJlciBvZiBtdWx0aXBsZXMgb2YgYExpbWAuICBJbiBwYXJ0aWN1
bGFyLCBzb21lIGNvbnRhaW4KKyAgLy8gYEYgPSBmbG9vcigyXk4gLyBMaW0pYCBhbmQgc29tZSBj
b250YWluIGBGICsgMSA9IGNlaWwoMl5OIC8gTGltKWAuICBUaGlzCisgIC8vIGRpZmZlcmVuY2Ug
cHJvZHVjZXMgYSBzbWFsbCBub251bmlmb3JtaXR5LCB3aGljaCBpcyBjb3JyZWN0ZWQgYnkgYXBw
bHlpbmcKKyAgLy8gcmVqZWN0aW9uIHNhbXBsaW5nIHRvIG9uZSBvZiB0aGUgdmFsdWVzIGluIHRo
ZSAibGFyZ2VyIGludGVydmFscyIgKGkuZS4sCisgIC8vIHRoZSBpbnRlcnZhbHMgY29udGFpbmlu
ZyBgRiArIDFgIG11bHRpcGxlcyBvZiBgTGltYC4KKyAgLy8KKyAgLy8gQW4gaW50ZXJ2YWwgY29u
dGFpbnMgYEYgKyAxYCBtdWx0aXBsZXMgb2YgYExpbWAgaWYgYW5kIG9ubHkgaWYgaXRzIHNtYWxs
ZXN0CisgIC8vIHZhbHVlIG1vZHVsbyAyXk4gaXMgbGVzcyB0aGFuIGAyXk4gJSBMaW1gLiAgVGhl
IHVuaXF1ZSB2YWx1ZSBzYXRpc2Z5aW5nCisgIC8vIHRoaXMgcHJvcGVydHkgaXMgdXNlZCBhcyB0
aGUgb25lIGZvciByZWplY3Rpb24uICBUaGF0IGlzLCBhIHZhbHVlIG9mCisgIC8vIGBiaXRzICog
TGltYCBpcyByZWplY3RlZCBpZiBgKGJpdCAqIExpbSkgJSAyXk4gPCAoMl5OICUgTGltKWAuCisK
KyAgdXNpbmcgaGVscGVyID0gcmFuZG9tX2ludGVybmFsOjp3aWRlX211bHRpcGx5PHVuc2lnbmVk
X3R5cGU+OworICBhdXRvIHByb2R1Y3QgPSBoZWxwZXI6Om11bHRpcGx5KGJpdHMsIExpbSk7CisK
KyAgLy8gVHdvIG9wdGltaXphdGlvbnMgaGVyZToKKyAgLy8gKiBSZWplY3Rpb24gb2NjdXJzIHdp
dGggc29tZSBwcm9iYWJpbGl0eSBsZXNzIHRoYW4gMS8yLCBhbmQgZm9yIHJlYXNvbmFibGUKKyAg
Ly8gICByYW5nZXMgY29uc2lkZXJhYmx5IGxlc3MgKGluIHBhcnRpY3VsYXIsIGxlc3MgdGhhbiAx
LyhGKzEpKSwgc28KKyAgLy8gICBBQlNMX1BSRURJQ1RfRkFMU0UgaXMgYXB0LgorICAvLyAqIGBM
aW1gIGlzIGFuIG92ZXJlc3RpbWF0ZSBvZiBgdGhyZXNob2xkYCwgYW5kIGRvZXNuJ3QgcmVxdWly
ZSBhIGRpdmlkZS4KKyAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShoZWxwZXI6OmxvKHByb2R1Y3Qp
IDwgTGltKSkgeworICAgIC8vIFRoaXMgcXVhbnRpdHkgaXMgZXhhY3RseSBlcXVhbCB0byBgMl5O
ICUgTGltYCwgYnV0IGRvZXMgbm90IHJlcXVpcmUgaGlnaAorICAgIC8vIHByZWNpc2lvbiBjYWxj
dWxhdGlvbnM6IGAyXk4gJSBMaW1gIGlzIGNvbmdydWVudCB0byBgKDJeTiAtIExpbSkgJSBMaW1g
LgorICAgIC8vIElkZWFsbHkgdGhpcyBjb3VsZCBiZSBleHByZXNzZWQgc2ltcGx5IGFzIGAtWGAg
cmF0aGVyIHRoYW4gYDJeTiAtIFhgLCBidXQKKyAgICAvLyBmb3IgdHlwZXMgc21hbGxlciB0aGFu
IGludCwgdGhpcyBjYWxjdWxhdGlvbiBpcyBpbmNvcnJlY3QgZHVlIHRvIGludGVnZXIKKyAgICAv
LyBwcm9tb3Rpb24gcnVsZXMuCisgICAgY29uc3QgdW5zaWduZWRfdHlwZSB0aHJlc2hvbGQgPQor
ICAgICAgICAoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWRfdHlwZT46Om1heCkoKSAtIExp
bSArIDEpICUgTGltOworICAgIHdoaWxlIChoZWxwZXI6OmxvKHByb2R1Y3QpIDwgdGhyZXNob2xk
KSB7CisgICAgICBiaXRzID0gZmFzdF9iaXRzKGcpOworICAgICAgcHJvZHVjdCA9IGhlbHBlcjo6
bXVsdGlwbHkoYml0cywgTGltKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gaGVscGVyOjpoaShw
cm9kdWN0KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JB
TkRPTV9VTklGT1JNX0lOVF9ESVNUUklCVVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS91bmlmb3JtX2ludF9kaXN0cmlidXRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3Jt
X2ludF9kaXN0cmlidXRpb25fdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWNmZjg4ZDM4NjYxOTU2MmI1
ZTAyYjU3YTgwNTVlOTFiZGNjOGNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3Vu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCkBAIC0wLDAgKzEsMjUwIEBACisvLyBDb3B5
cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9t
L3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVk
ZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5j
bHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJnbW9jay9nbW9j
ay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVy
bmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3Nx
dWFyZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0
X3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgi
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cl9jYXQuaCIKKworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+
CitjbGFzcyBVbmlmb3JtSW50RGlzdHJpYnV0aW9uVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3Qge307CisKK3VzaW5nIEludFR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczxpbnQ4X3QsIHVpbnQ4
X3QsIGludDE2X3QsIHVpbnQxNl90LCBpbnQzMl90LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90LCBpbnQ2NF90LCB1aW50NjRfdD47CitUWVBFRF9URVNUX1NVSVRF
KFVuaWZvcm1JbnREaXN0cmlidXRpb25UZXN0LCBJbnRUeXBlcyk7CisKK1RZUEVEX1RFU1QoVW5p
Zm9ybUludERpc3RyaWJ1dGlvblRlc3QsIFBhcmFtU2VyaWFsaXplVGVzdCkgeworICAvLyBUaGlz
IHRlc3QgZXNzZW50aWFsbHkgZW5zdXJlcyB0aGF0IHRoZSBwYXJhbWV0ZXJzIHNlcmlhbGl6ZSwK
KyAgLy8gbm90IHRoYXQgdGhlIHZhbHVlcyBnZW5lcmF0ZWQgY292ZXIgdGhlIGZ1bGwgcmFuZ2Uu
CisgIHVzaW5nIExpbWl0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjsKKyAgdXNp
bmcgcGFyYW1fdHlwZSA9CisgICAgICB0eXBlbmFtZSBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmli
dXRpb248VHlwZVBhcmFtPjo6cGFyYW1fdHlwZTsKKyAgY29uc3QgVHlwZVBhcmFtIGtNaW4gPSBz
dGQ6OmlzX3Vuc2lnbmVkPFR5cGVQYXJhbT46OnZhbHVlID8gMzcgOiAtMTA1OworICBjb25zdCBU
eXBlUGFyYW0ga05lZ09uZU9yWmVybyA9IHN0ZDo6aXNfdW5zaWduZWQ8VHlwZVBhcmFtPjo6dmFs
dWUgPyAwIDogLTE7CisKKyAgY29uc3RleHByIGludCBrQ291bnQgPSAxMDAwOworICBhYnNsOjpJ
bnNlY3VyZUJpdEdlbiBnZW47CisgIGZvciAoY29uc3QgYXV0byYgcGFyYW0gOiB7CisgICAgICAg
ICAgIHBhcmFtX3R5cGUoKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZSgyLCAyKSwgIC8vIFNhbWUK
KyAgICAgICAgICAgcGFyYW1fdHlwZSg5LCAzMiksCisgICAgICAgICAgIHBhcmFtX3R5cGUoa01p
biwgMTE1KSwKKyAgICAgICAgICAgcGFyYW1fdHlwZShrTmVnT25lT3JaZXJvLCBMaW1pdHM6Om1h
eCgpKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZShMaW1pdHM6Om1pbigpLCBMaW1pdHM6Om1heCgp
KSwKKyAgICAgICAgICAgcGFyYW1fdHlwZShMaW1pdHM6Omxvd2VzdCgpLCBMaW1pdHM6Om1heCgp
KSwKKyAgICAgICAgICAgcGFyYW1fdHlwZShMaW1pdHM6Om1pbigpICsgMSwgTGltaXRzOjptYXgo
KSAtIDEpLAorICAgICAgIH0pIHsKKyAgICBjb25zdCBhdXRvIGEgPSBwYXJhbS5hKCk7CisgICAg
Y29uc3QgYXV0byBiID0gcGFyYW0uYigpOworICAgIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1
dGlvbjxUeXBlUGFyYW0+IGJlZm9yZShhLCBiKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLmEoKSwg
cGFyYW0uYSgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLmIoKSwgcGFyYW0uYigpKTsKKworICAg
IHsKKyAgICAgIC8vIEluaXRpYWxpemUgdmlhIHBhcmFtX3R5cGUKKyAgICAgIGFic2w6OnVuaWZv
cm1faW50X2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IHZpYV9wYXJhbShwYXJhbSk7CisgICAgICBF
WFBFQ1RfRVEodmlhX3BhcmFtLCBiZWZvcmUpOworICAgIH0KKworICAgIC8vIEluaXRpYWxpemUg
dmlhIGlvc3RyZWFtcworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgIHNzIDw8IGJlZm9y
ZTsKKworICAgIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGFmdGVy
KExpbWl0czo6bWluKCkgKyAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExpbWl0czo6bWF4KCkgLSA1KTsKKworICAgIEVYUEVDVF9ORShiZWZv
cmUuYSgpLCBhZnRlci5hKCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUuYigpLCBhZnRlci5iKCkp
OworICAgIEVYUEVDVF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgICAgRVhQ
RUNUX05FKGJlZm9yZSwgYWZ0ZXIpOworCisgICAgc3MgPj4gYWZ0ZXI7CisKKyAgICBFWFBFQ1Rf
RVEoYmVmb3JlLmEoKSwgYWZ0ZXIuYSgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLmIoKSwgYWZ0
ZXIuYigpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLnBhcmFtKCksIGFmdGVyLnBhcmFtKCkpOwor
ICAgIEVYUEVDVF9FUShiZWZvcmUsIGFmdGVyKTsKKworICAgIC8vIFNtb2tlIHRlc3QuCisgICAg
YXV0byBzYW1wbGVfbWluID0gYWZ0ZXIubWF4KCk7CisgICAgYXV0byBzYW1wbGVfbWF4ID0gYWZ0
ZXIubWluKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQ291bnQ7IGkrKykgeworICAgICAg
YXV0byBzYW1wbGUgPSBhZnRlcihnZW4pOworICAgICAgRVhQRUNUX0dFKHNhbXBsZSwgYWZ0ZXIu
bWluKCkpOworICAgICAgRVhQRUNUX0xFKHNhbXBsZSwgYWZ0ZXIubWF4KCkpOworICAgICAgaWYg
KHNhbXBsZSA+IHNhbXBsZV9tYXgpIHsKKyAgICAgICAgc2FtcGxlX21heCA9IHNhbXBsZTsKKyAg
ICAgIH0KKyAgICAgIGlmIChzYW1wbGUgPCBzYW1wbGVfbWluKSB7CisgICAgICAgIHNhbXBsZV9t
aW4gPSBzYW1wbGU7CisgICAgICB9CisgICAgfQorICAgIHN0ZDo6c3RyaW5nIG1zZyA9IGFic2w6
OlN0ckNhdCgiUmFuZ2U6ICIsICtzYW1wbGVfbWluLCAiLCAiLCArc2FtcGxlX21heCk7CisgICAg
QUJTTF9SQVdfTE9HKElORk8sICIlcyIsIG1zZy5jX3N0cigpKTsKKyAgfQorfQorCitUWVBFRF9U
RVNUKFVuaWZvcm1JbnREaXN0cmlidXRpb25UZXN0LCBWaW9sYXRlc1ByZWNvbmRpdGlvbnNEZWF0
aFRlc3QpIHsKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorICAvLyBIaSA8IExvCisgIEVYUEVD
VF9ERUJVR19ERUFUSCh7IGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+
IGRpc3QoMTAsIDEpOyB9LAorICAgICAgICAgICAgICAgICAgICAgIiIpOworI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAorI2lmIGRlZmluZWQoTkRFQlVHKQorICAvLyBvcHQtbW9kZSwg
Zm9yIGludmFsaWQgcGFyYW1ldGVycywgd2lsbCBnZW5lcmF0ZSBhIGdhcmJhZ2UgdmFsdWUsCisg
IC8vIGJ1dCBzaG91bGQgbm90IGVudGVyIGFuIGluZmluaXRlIGxvb3AuCisgIGFic2w6Okluc2Vj
dXJlQml0R2VuIGdlbjsKKyAgYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFR5cGVQYXJh
bT4gZGlzdCgxMCwgMSk7CisgIGF1dG8geCA9IGRpc3QoZ2VuKTsKKworICAvLyBBbnkgdmFsdWUg
d2lsbCBnZW5lcmF0ZSBhIG5vbi1lbXB0eSBzdGQ6OnN0cmluZy4KKyAgRVhQRUNUX0ZBTFNFKGFi
c2w6OlN0ckNhdCgreCkuZW1wdHkoKSkgPDwgeDsKKyNlbmRpZiAgLy8gTkRFQlVHCit9CisKK1RZ
UEVEX1RFU1QoVW5pZm9ybUludERpc3RyaWJ1dGlvblRlc3QsIFRlc3RNb21lbnRzKSB7CisgIGNv
bnN0ZXhwciBpbnQga1NpemUgPSAxMDAwMDA7CisgIHVzaW5nIExpbWl0cyA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8VHlwZVBhcmFtPjsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9CisgICAgICB0eXBlbmFt
ZSBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248VHlwZVBhcmFtPjo6cGFyYW1fdHlwZTsK
KworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBybmc7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdmFs
dWVzKGtTaXplKTsKKyAgZm9yIChjb25zdCBhdXRvJiBwYXJhbSA6CisgICAgICAge3BhcmFtX3R5
cGUoMCwgTGltaXRzOjptYXgoKSksIHBhcmFtX3R5cGUoMTMsIDEyNyl9KSB7CisgICAgYWJzbDo6
dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZGlzdChwYXJhbSk7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgICBjb25zdCBhdXRvIHNhbXBsZSA9
IGRpc3Qocm5nKTsKKyAgICAgIEFTU0VSVF9MRShkaXN0LnBhcmFtKCkuYSgpLCBzYW1wbGUpOwor
ICAgICAgQVNTRVJUX0dFKGRpc3QucGFyYW0oKS5iKCksIHNhbXBsZSk7CisgICAgICB2YWx1ZXNb
aV0gPSBzYW1wbGU7CisgICAgfQorCisgICAgYXV0byBtb21lbnRzID0gYWJzbDo6cmFuZG9tX2lu
dGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICAgIGNvbnN0IGRv
dWJsZSBhID0gZGlzdC5wYXJhbSgpLmEoKTsKKyAgICBjb25zdCBkb3VibGUgYiA9IGRpc3QucGFy
YW0oKS5iKCk7CisgICAgY29uc3QgZG91YmxlIG4gPSAoYiAtIGEgKyAxKTsKKyAgICBjb25zdCBk
b3VibGUgbWVhbiA9IChhICsgYikgLyAyOworICAgIGNvbnN0IGRvdWJsZSB2YXIgPSAoKGIgLSBh
ICsgMSkgKiAoYiAtIGEgKyAxKSAtIDEpIC8gMTI7CisgICAgY29uc3QgZG91YmxlIGt1cnRvc2lz
ID0gMyAtIDYgKiAobiAqIG4gKyAxKSAvICg1ICogKG4gKiBuIC0gMSkpOworCisgICAgLy8gVE9E
TyhhaGgpOiB0aGlzIGlzIG5vdCB0aGUgcmlnaHQgYm91bmQKKyAgICAvLyBlbXBpcmljYWxseSB2
YWxpZGF0ZWQgd2l0aCAtLXJ1bnNfcGVyX3Rlc3Q9MTAwMDAuCisgICAgRVhQRUNUX05FQVIobWVh
biwgbW9tZW50cy5tZWFuLCAwLjAxICogdmFyKTsKKyAgICBFWFBFQ1RfTkVBUih2YXIsIG1vbWVu
dHMudmFyaWFuY2UsIDAuMDE1ICogdmFyKTsKKyAgICBFWFBFQ1RfTkVBUigwLjAsIG1vbWVudHMu
c2tld25lc3MsIDAuMDI1KTsKKyAgICBFWFBFQ1RfTkVBUihrdXJ0b3NpcywgbW9tZW50cy5rdXJ0
b3NpcywgMC4wMiAqIGt1cnRvc2lzKTsKKyAgfQorfQorCitUWVBFRF9URVNUKFVuaWZvcm1JbnRE
aXN0cmlidXRpb25UZXN0LCBDaGlTcXVhcmVkVGVzdDUwKSB7CisgIHVzaW5nIGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6a0NoaVNxdWFyZWQ7CisKKyAgY29uc3RleHByIHNpemVfdCBrVHJpYWxzID0g
MTAwMDsKKyAgY29uc3RleHByIGludCBrQnVja2V0cyA9IDUwOyAgLy8gaW5jbHVzaXZlLCBzbyBh
Y3RhbGx5ICsxCisgIGNvbnN0ZXhwciBkb3VibGUga0V4cGVjdGVkID0KKyAgICAgIHN0YXRpY19j
YXN0PGRvdWJsZT4oa1RyaWFscykgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGtCdWNrZXRzKTsKKwor
ICAvLyBFbXBpcmljYWxseSB2YWxpZGF0ZWQgd2l0aCAtLXJ1bnNfcGVyX3Rlc3Q9MTAwMDAuCisg
IGNvbnN0IGludCBrVGhyZXNob2xkID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hp
U3F1YXJlVmFsdWUoa0J1Y2tldHMsIDAuOTk5OTk5KTsKKworICBjb25zdCBUeXBlUGFyYW0gbWlu
ID0gc3RkOjppc191bnNpZ25lZDxUeXBlUGFyYW0+Ojp2YWx1ZSA/IDM3IDogLTM3OworICBjb25z
dCBUeXBlUGFyYW0gbWF4ID0gbWluICsga0J1Y2tldHM7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRH
ZW4gcm5nOworICBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBkaXN0
KG1pbiwgbWF4KTsKKworICBzdGQ6OnZlY3RvcjxpbnQzMl90PiBjb3VudHMoa0J1Y2tldHMgKyAx
LCAwKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrVHJpYWxzOyBpKyspIHsKKyAgICBhdXRv
IHggPSBkaXN0KHJuZyk7CisgICAgY291bnRzW3ggLSBtaW5dKys7CisgIH0KKyAgZG91YmxlIGNo
aV9zcXVhcmUgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVdpdGhFeHBlY3RlZCgK
KyAgICAgIHN0ZDo6YmVnaW4oY291bnRzKSwgc3RkOjplbmQoY291bnRzKSwga0V4cGVjdGVkKTsK
KyAgaWYgKGNoaV9zcXVhcmUgPiBrVGhyZXNob2xkKSB7CisgICAgZG91YmxlIHBfdmFsdWUgPQor
ICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVBWYWx1ZShjaGlfc3F1YXJl
LCBrQnVja2V0cyk7CisKKyAgICAvLyBDaGktc3F1YXJlZCB0ZXN0IGZhaWxlZC4gT3V0cHV0IGRv
ZXMgbm90IGFwcGVhciB0byBiZSB1bmlmb3JtLgorICAgIHN0ZDo6c3RyaW5nIG1zZzsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIGEgOiBjb3VudHMpIHsKKyAgICAgIGFic2w6OlN0ckFwcGVuZCgmbXNn
LCBhLCAiXG4iKTsKKyAgICB9CisgICAgYWJzbDo6U3RyQXBwZW5kKCZtc2csIGtDaGlTcXVhcmVk
LCAiIHAtdmFsdWUgIiwgcF92YWx1ZSwgIlxuIik7CisgICAgYWJzbDo6U3RyQXBwZW5kKCZtc2cs
ICJIaWdoICIsIGtDaGlTcXVhcmVkLCAiIHZhbHVlOiAiLCBjaGlfc3F1YXJlLCAiID4gIiwKKyAg
ICAgICAgICAgICAgICAgICAga1RocmVzaG9sZCk7CisgICAgQUJTTF9SQVdfTE9HKElORk8sICIl
cyIsIG1zZy5jX3N0cigpKTsKKyAgICBGQUlMKCkgPDwgbXNnOworICB9Cit9CisKK1RFU1QoVW5p
Zm9ybUludERpc3RyaWJ1dGlvblRlc3QsIFN0YWJpbGl0eVRlc3QpIHsKKyAgLy8gYWJzbDo6dW5p
Zm9ybV9pbnRfZGlzdHJpYnV0aW9uIHN0YWJpbGl0eSByZWxpZXMgb25seSBvbiBpbnRlZ2VyIG9w
ZXJhdGlvbnMuCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKAor
ICAgICAgezB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHhGRkNFQTUwRkRCMkY5NTNCdWxsLCAweEMz
MzJEREVGQkU2QzVBQTV1bGwsCisgICAgICAgMHg2NTU4MjE4NTY4QUI5NzAydWxsLCAweDJBRUY3
REFENUI2RTJGODR1bGwsIDB4MTUyMUI2MjgyOTA3NjE3MHVsbCwKKyAgICAgICAweEVDREQ0Nzc1
NjE5RjE1MTB1bGwsIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbCwgMHgwMzM0RkUxRUFBMDM2M0NGdWxs
LAorICAgICAgIDB4QjU3MzVDOTA0QzcwQTIzOXVsbCwgMHhENTlFOUUwQkNCQUFERTE0dWxsLCAw
eEVFQ0M4NkJDNjA2MjJDQTd1bGx9KTsKKworICBzdGQ6OnZlY3RvcjxpbnQ+IG91dHB1dCgxMik7
CisKKyAgeworICAgIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQzMl90PiBkaXN0
KDAsIDQpOworICAgIGZvciAoYXV0byYgdiA6IG91dHB1dCkgeworICAgICAgdiA9IGRpc3QodXJi
Zyk7CisgICAgfQorICB9CisgIEVYUEVDVF9FUSgxMiwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAg
RVhQRUNUX1RIQVQob3V0cHV0LCB0ZXN0aW5nOjpFbGVtZW50c0FyZSg0LCA0LCAzLCAyLCAxLCAw
LCAxLCA0LCAzLCAxLCAzLCAxKSk7CisKKyAgeworICAgIHVyYmcucmVzZXQoKTsKKyAgICBhYnNs
Ojp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50MzJfdD4gZGlzdCgwLCAxMDApOworICAgIGZv
ciAoYXV0byYgdiA6IG91dHB1dCkgeworICAgICAgdiA9IGRpc3QodXJiZyk7CisgICAgfQorICB9
CisgIEVYUEVDVF9FUSgxMiwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgRVhQRUNUX1RIQVQob3V0
cHV0LCB0ZXN0aW5nOjpFbGVtZW50c0FyZSg5NywgODYsIDc1LCA0MSwgMzYsIDE2LCAzOCwgOTIs
IDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLCA4MCwg
MzgpKTsKKworICB7CisgICAgdXJiZy5yZXNldCgpOworICAgIGFic2w6OnVuaWZvcm1faW50X2Rp
c3RyaWJ1dGlvbjxpbnQzMl90PiBkaXN0KDAsIDEwMDAwKTsKKyAgICBmb3IgKGF1dG8mIHYgOiBv
dXRwdXQpIHsKKyAgICAgIHYgPSBkaXN0KHVyYmcpOworICAgIH0KKyAgfQorICBFWFBFQ1RfRVEo
MTIsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgIEVYUEVDVF9USEFUKG91dHB1dCwgdGVzdGluZzo6
RWxlbWVudHNBcmUoOTY0OCwgODU2MiwgNzQzOSwgNDA4OSwgMzU3MSwgMTYwMiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzODEzLCA5MTk1LCA2NjQxLCAyOTg2
LCA3OTU2LCAzNzY1KSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL3VuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3Jt
X3JlYWxfZGlzdHJpYnV0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjAwZjkxNWI2N2FmNGIzYmM0MTg4NGNk
ODdiM2MxNzVlYTE2MDUzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3Jt
X3JlYWxfZGlzdHJpYnV0aW9uLmgKQEAgLTAsMCArMSwxOTMgQEAKKy8vIENvcHlyaWdodCAyMDE3
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBG
aWxlOiB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyBhIGNsYXNzIGZvciByZXByZXNlbnRpbmcgYSB1
bmlmb3JtIGZsb2F0aW5nLXBvaW50CisvLyBkaXN0cmlidXRpb24gb3ZlciBhIGhhbGYtb3BlbiBp
bnRlcnZhbCBbYSxiKS4gWW91IHVzZSB0aGlzIGRpc3RyaWJ1dGlvbiBpbgorLy8gY29tYmluYXRp
b24gd2l0aCBhbiBBYnNlaWwgcmFuZG9tIGJpdCBnZW5lcmF0b3IgdG8gcHJvZHVjZSByYW5kb20g
dmFsdWVzCisvLyBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSBkaXN0cmlidXRpb24uCisv
LworLy8gYGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb25gIGlzIGEgZHJvcC1pbiByZXBs
YWNlbWVudCBmb3IgdGhlIEMrKzExCisvLyBgc3RkOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9u
YCBbcmFuZC5kaXN0LnVuaS5yZWFsXSBidXQgaXMgY29uc2lkZXJhYmx5CisvLyBmYXN0ZXIgdGhh
biB0aGUgbGlic3RkYysrIGltcGxlbWVudGF0aW9uLgorLy8KKy8vIE5vdGU6IHRoZSBzdGFuZGFy
ZC1saWJyYXJ5IHZlcnNpb24gbWF5IG9jY2FzaW9uYWxseSByZXR1cm4gYDEuMGAgd2hlbgorLy8g
ZGVmYXVsdC1pbml0aWFsaXplZC4gU2VlIGh0dHBzOi8vYnVncy5sbHZtLm9yZy8vc2hvd19idWcu
Y2dpP2lkPTE4NzY3CisvLyBgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbmAgZG9lcyBu
b3QgZXhoaWJpdCB0aGlzIGJlaGF2aW9yLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX1VOSUZPUk1f
UkVBTF9ESVNUUklCVVRJT05fSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fVU5JRk9STV9SRUFMX0RJ
U1RSSUJVVElPTl9IXworCisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjbWF0aD4KKyNp
bmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGlzdHJlYW0+CisjaW5jbHVkZSA8bGltaXRzPgor
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwv
ZGlzdHJpYnV0aW9uX2ltcGwuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0
X3VuaWZvcm1fYml0cy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFt
X3N0YXRlX3NhdmVyLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKKworLy8gYWJzbDo6dW5pZm9ybV9y
ZWFsX2Rpc3RyaWJ1dGlvbjxUPgorLy8KKy8vIFRoaXMgZGlzdHJpYnV0aW9uIHByb2R1Y2VzIHJh
bmRvbSBmbG9hdGluZy1wb2ludCB2YWx1ZXMgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkCisvLyBvdmVy
IHRoZSBoYWxmLW9wZW4gaW50ZXJ2YWwgW2EsIGIpLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8g
ICBhYnNsOjpCaXRHZW4gZ2VuOworLy8KKy8vICAgLy8gVXNlIHRoZSBkaXN0cmlidXRpb24gdG8g
cHJvZHVjZSBhIHZhbHVlIGJldHdlZW4gMC4wIChpbmNsdXNpdmUpCisvLyAgIC8vIGFuZCAxLjAg
KGV4Y2x1c2l2ZSkuCisvLyAgIGludCB2YWx1ZSA9IGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb248ZG91YmxlPigwLCAxKShnZW4pOworLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlw
ZSA9IGRvdWJsZT4KK2NsYXNzIHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24geworIHB1YmxpYzoK
KyAgdXNpbmcgcmVzdWx0X3R5cGUgPSBSZWFsVHlwZTsKKworICBjbGFzcyBwYXJhbV90eXBlIHsK
KyAgIHB1YmxpYzoKKyAgICB1c2luZyBkaXN0cmlidXRpb25fdHlwZSA9IHVuaWZvcm1fcmVhbF9k
aXN0cmlidXRpb247CisKKyAgICBleHBsaWNpdCBwYXJhbV90eXBlKHJlc3VsdF90eXBlIGxvID0g
MCwgcmVzdWx0X3R5cGUgaGkgPSAxKQorICAgICAgICA6IGxvXyhsbyksIGhpXyhoaSksIHJhbmdl
XyhoaSAtIGxvKSB7CisgICAgICAvLyBbcmFuZC5kaXN0LnVuaS5yZWFsXSBwcmVjb25kaXRpb25z
IDIgJiAzCisgICAgICBhc3NlcnQobG8gPD0gaGkpOworICAgICAgLy8gTk9URTogRm9yIGludGVn
cmFsIHR5cGVzLCB3ZSBjYW4gcHJvbW90ZSB0aGUgcmFuZ2UgdG8gYW4gdW5zaWduZWQgdHlwZSwK
KyAgICAgIC8vIHdoaWNoIGdpdmVzIGZ1bGwgd2lkdGggb2YgdGhlIHJhbmdlLiBIb3dldmVyIGZv
ciByZWFsIChmcCkgdHlwZXMsIHRoaXMKKyAgICAgIC8vIGlzIG5vdCBwb3NzaWJsZSwgc28gdmFs
dWUgZ2VuZXJhdGlvbiBjYW5ub3QgdXNlIHRoZSBmdWxsIHJhbmdlIG9mIHRoZQorICAgICAgLy8g
cmVhbCB0eXBlLgorICAgICAgYXNzZXJ0KHJhbmdlXyA8PSAoc3RkOjpudW1lcmljX2xpbWl0czxy
ZXN1bHRfdHlwZT46Om1heCkoKSk7CisgICAgfQorCisgICAgcmVzdWx0X3R5cGUgYSgpIGNvbnN0
IHsgcmV0dXJuIGxvXzsgfQorICAgIHJlc3VsdF90eXBlIGIoKSBjb25zdCB7IHJldHVybiBoaV87
IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29u
c3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuIGEubG9fID09IGIubG9fICYmIGEuaGlf
ID09IGIuaGlfOworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcGFy
YW1fdHlwZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuICEoYSA9PSBi
KTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIHVuaWZvcm1fcmVhbF9k
aXN0cmlidXRpb247CisgICAgcmVzdWx0X3R5cGUgbG9fLCBoaV8sIHJhbmdlXzsKKworICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxSZWFsVHlwZT46OnZhbHVlLAorICAg
ICAgICAgICAgICAgICAgIkNsYXNzLXRlbXBsYXRlIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb248PiBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJpemVkIHVzaW5n
IGEgZmxvYXRpbmctcG9pbnQgdHlwZS4iKTsKKyAgfTsKKworICB1bmlmb3JtX3JlYWxfZGlzdHJp
YnV0aW9uKCkgOiB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uKDApIHt9CisKKyAgZXhwbGljaXQg
dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbihyZXN1bHRfdHlwZSBsbywgcmVzdWx0X3R5cGUgaGkg
PSAxKQorICAgICAgOiBwYXJhbV8obG8sIGhpKSB7fQorCisgIGV4cGxpY2l0IHVuaWZvcm1fcmVh
bF9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgcGFyYW0pIDogcGFyYW1fKHBhcmFtKSB7
fQorCisgIC8vIHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248VD46OnJlc2V0KCkKKyAgLy8KKyAg
Ly8gUmVzZXRzIHRoZSB1bmlmb3JtIHJlYWwgZGlzdHJpYnV0aW9uLiBOb3RlIHRoYXQgdGhpcyBm
dW5jdGlvbiBoYXMgbm8gZWZmZWN0CisgIC8vIGJlY2F1c2UgdGhlIGRpc3RyaWJ1dGlvbiBhbHJl
YWR5IHByb2R1Y2VzIGluZGVwZW5kZW50IHZhbHVlcy4KKyAgdm9pZCByZXNldCgpIHt9CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVVJCRyYg
Z2VuKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHJldHVybiBvcGVyYXRv
cigpKGdlbiwgcGFyYW1fKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICBy
ZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGdlbiwgIC8vIE5PTElOVChydW50aW1lL3JlZmVy
ZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgcCk7CisK
KyAgcmVzdWx0X3R5cGUgYSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXy5hKCk7IH0KKyAgcmVzdWx0
X3R5cGUgYigpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXy5iKCk7IH0KKworICBwYXJhbV90eXBlIHBh
cmFtKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQgcGFyYW0oY29uc3QgcGFyYW1f
dHlwZSYgcGFyYW1zKSB7IHBhcmFtXyA9IHBhcmFtczsgfQorCisgIHJlc3VsdF90eXBlKG1pbiko
KSBjb25zdCB7IHJldHVybiBhKCk7IH0KKyAgcmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsgcmV0
dXJuIGIoKTsgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgdW5pZm9ybV9yZWFs
X2Rpc3RyaWJ1dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlmb3Jt
X3JlYWxfZGlzdHJpYnV0aW9uJiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fID09IGIucGFyYW1f
OworICB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgdW5pZm9ybV9yZWFsX2Rpc3Ry
aWJ1dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlmb3JtX3JlYWxf
ZGlzdHJpYnV0aW9uJiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fICE9IGIucGFyYW1fOworICB9
CisKKyBwcml2YXRlOgorICBwYXJhbV90eXBlIHBhcmFtXzsKKyAgcmFuZG9tX2ludGVybmFsOjpG
YXN0VW5pZm9ybUJpdHM8dWludDY0X3Q+IGZhc3RfdTY0XzsKK307CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZvbGxvdworLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KK3RlbXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlwZT4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBVUkJHPgordHlwZW5hbWUgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46
OnJlc3VsdF90eXBlCit1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjo6b3BlcmF0
b3IoKSgKKyAgICBVUkJHJiBnZW4sIGNvbnN0IHBhcmFtX3R5cGUmIHApIHsgIC8vIE5PTElOVChy
dW50aW1lL3JlZmVyZW5jZXMpCisgIHVzaW5nIHJhbmRvbV9pbnRlcm5hbDo6UG9zaXRpdmVWYWx1
ZVQ7CisgIHdoaWxlICh0cnVlKSB7CisgICAgY29uc3QgcmVzdWx0X3R5cGUgc2FtcGxlID0gcmFu
ZG9tX2ludGVybmFsOjpSYW5kVTY0VG9SZWFsPAorICAgICAgICByZXN1bHRfdHlwZT46OnRlbXBs
YXRlIFZhbHVlPFBvc2l0aXZlVmFsdWVULCB0cnVlPihmYXN0X3U2NF8oZ2VuKSk7CisgICAgY29u
c3QgcmVzdWx0X3R5cGUgcmVzID0gcC5hKCkgKyAoc2FtcGxlICogcC5yYW5nZV8pOworICAgIGlm
IChyZXMgPCBwLmIoKSB8fCBwLnJhbmdlXyA8PSAwIHx8ICFzdGQ6OmlzZmluaXRlKHAucmFuZ2Vf
KSkgeworICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgLy8gZWxzZSBzYW1wbGUgcmVqZWN0
ZWQsIHRyeSBhZ2Fpbi4KKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgUmVhbFR5cGU+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQs
IFRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFp
dHM+JiBvcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgY29uc3QgdW5pZm9y
bV9yZWFsX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT4mIHgpIHsKKyAgYXV0byBzYXZlciA9IHJhbmRv
bV9pbnRlcm5hbDo6bWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKG9zKTsKKyAgb3MucHJlY2lzaW9u
KHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8UmVhbFR5cGU+OjprUHJl
Y2lzaW9uKTsKKyAgb3MgPDwgeC5hKCkgPDwgb3MuZmlsbCgpIDw8IHguYigpOworICByZXR1cm4g
b3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBSZWFsVHlwZT4KK3N0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0
b3I+PigKKyAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzLCAgICAgLy8g
Tk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9u
PFJlYWxUeXBlPiYgeCkgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgdXNpbmcg
cGFyYW1fdHlwZSA9IHR5cGVuYW1lIHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248UmVhbFR5cGU+
OjpwYXJhbV90eXBlOworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIHVuaWZvcm1fcmVh
bF9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpyZXN1bHRfdHlwZTsKKyAgYXV0byBzYXZlciA9IHJh
bmRvbV9pbnRlcm5hbDo6bWFrZV9pc3RyZWFtX3N0YXRlX3NhdmVyKGlzKTsKKyAgYXV0byBhID0g
cmFuZG9tX2ludGVybmFsOjpyZWFkX2Zsb2F0aW5nX3BvaW50PHJlc3VsdF90eXBlPihpcyk7Cisg
IGlmIChpcy5mYWlsKCkpIHJldHVybiBpczsKKyAgYXV0byBiID0gcmFuZG9tX2ludGVybmFsOjpy
ZWFkX2Zsb2F0aW5nX3BvaW50PHJlc3VsdF90eXBlPihpcyk7CisgIGlmICghaXMuZmFpbCgpKSB7
CisgICAgeC5wYXJhbShwYXJhbV90eXBlKGEsIGIpKTsKKyAgfQorICByZXR1cm4gaXM7Cit9Cit9
ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX1VOSUZPUk1fUkVB
TF9ESVNUUklCVVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3JtX3JlYWxf
ZGlzdHJpYnV0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1
dGlvbl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5N2YwZWU1ZWZhNWI5ZDM2ZmQ0ODdkZWE4NjZiODc4
MGY2ODYyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vdW5pZm9ybV9yZWFsX2Rp
c3RyaWJ1dGlvbl90ZXN0LmNjCkBAIC0wLDAgKzEsMzIyIEBACisvLyBDb3B5cmlnaHQgMjAxNyBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL3VuaWZvcm1fcmVh
bF9kaXN0cmlidXRpb24uaCIKKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRpbnQ+
CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNzdHJl
YW0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImdt
b2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jh
c2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5h
bC9jaGlfc3F1YXJlLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0
aW9uX3Rlc3RfdXRpbC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3NlcXVlbmNl
X3VyYmcuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9yYW5kb20uaCIKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3Mvc3RyX2NhdC5oIgorCisvLyBOT1RFUzoKKy8vICogU29tZSBkb2N1bWVudGF0aW9u
IG9uIGdlbmVyYXRpbmcgcmFuZG9tIHJlYWwgdmFsdWVzIHN1Z2dlc3RzIHRoYXQKKy8vICAgaXQg
aXMgcG9zc2libGUgdG8gdXNlIHN0ZDo6bmV4dGFmdGVyKGIsIERCTF9NQVgpIHRvIGdlbmVyYXRl
IGEgdmFsdWUgb24KKy8vICAgdGhlIGNsb3NlZCByYW5nZSBbYSwgYl0uIFVuZm9ydHVuYXRlbHks
IHRoYXQgdGVjaG5pcXVlIGlzIG5vdCB1bml2ZXJzYWxseQorLy8gICByZWxpYWJsZSBkdWUgdG8g
ZmxvYXRpbmcgcG9pbnQgcXVhbnRpemF0aW9uLgorLy8KKy8vICogYWJzbDo6dW5pZm9ybV9yZWFs
X2Rpc3RyaWJ1dGlvbjxmbG9hdD4gZ2VuZXJhdGVzIGJldHdlZW4gMl4yOCBhbmQgMl4yOQorLy8g
ICBkaXN0aW5jdCBmbG9hdGluZyBwb2ludCB2YWx1ZXMgaW4gdGhlIHJhbmdlIFswLCAxKS4KKy8v
CisvLyAqIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248ZmxvYXQ+IGdlbmVyYXRlcyBh
dCBsZWFzdCAyXjIzIGRpc3RpbmN0CisvLyAgIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBpbiB0aGUg
cmFuZ2UgWzEsIDIpLiBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBhcworLy8gICBhbnkgb3RoZXIg
cmFuZ2UgY292ZXJlZCBieSBhIHNpbmdsZSBleHBvbmVudCBpbiBJRUVFIDc1NC4KKy8vCisvLyAq
IGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248ZG91YmxlPiBnZW5lcmF0ZXMgbW9yZSB0
aGFuIDJeNTIgZGlzdGluY3QKKy8vICAgdmFsdWVzIGluIHRoZSByYW5nZSBbMCwgMSksIGFuZCBz
aG91bGQgZ2VuZXJhdGUgYXQgbGVhc3QgMl41MiBkaXN0aW5jdAorLy8gICB2YWx1ZXMgaW4gdGhl
IHJhbmdlIG9mIFsxLCAyKS4KKy8vCisKK25hbWVzcGFjZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBSZWFsVHlwZT4KK2NsYXNzIFVuaWZvcm1SZWFsRGlzdHJpYnV0aW9uVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3Qge307CisKK3VzaW5nIFJlYWxUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8
ZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3VibGU+OworVFlQRURfVEVTVF9TVUlURShVbmlmb3JtUmVh
bERpc3RyaWJ1dGlvblRlc3QsIFJlYWxUeXBlcyk7CisKK1RZUEVEX1RFU1QoVW5pZm9ybVJlYWxE
aXN0cmlidXRpb25UZXN0LCBQYXJhbVNlcmlhbGl6ZVRlc3QpIHsKKyAgdXNpbmcgcGFyYW1fdHlw
ZSA9CisgICAgICB0eXBlbmFtZSBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFR5cGVQ
YXJhbT46OnBhcmFtX3R5cGU7CisKKyAgY29uc3RleHByIGNvbnN0IFR5cGVQYXJhbSBhezExNTI5
MjE1MDQ2MDY4NDY5NzZ9OworCisgIGNvbnN0ZXhwciBpbnQga0NvdW50ID0gMTAwMDsKKyAgYWJz
bDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBmb3IgKGNvbnN0IGF1dG8mIHBhcmFtIDogeworICAg
ICAgICAgICBwYXJhbV90eXBlKCksCisgICAgICAgICAgIHBhcmFtX3R5cGUoVHlwZVBhcmFtKDIu
MCksIFR5cGVQYXJhbSgyLjApKSwgIC8vIFNhbWUKKyAgICAgICAgICAgcGFyYW1fdHlwZShUeXBl
UGFyYW0oLTAuMSksIFR5cGVQYXJhbSgwLjEpKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZShUeXBl
UGFyYW0oMC4wNSksIFR5cGVQYXJhbSgwLjEyKSksCisgICAgICAgICAgIHBhcmFtX3R5cGUoVHlw
ZVBhcmFtKC0wLjA1KSwgVHlwZVBhcmFtKDAuMTMpKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZShU
eXBlUGFyYW0oLTAuMDUpLCBUeXBlUGFyYW0oLTAuMDIpKSwKKyAgICAgICAgICAgLy8gZG91Ymxl
IHJhbmdlID0gMAorICAgICAgICAgICAvLyAyXjYwICwgMl42MCArIDJeNgorICAgICAgICAgICBw
YXJhbV90eXBlKGEsIFR5cGVQYXJhbSgxMTUyOTIxNTA0NjA2ODQ3MDQwKSksCisgICAgICAgICAg
IC8vIDJeNjAgLCAyXjYwICsgMl43CisgICAgICAgICAgIHBhcmFtX3R5cGUoYSwgVHlwZVBhcmFt
KDExNTI5MjE1MDQ2MDY4NDcxMDQpKSwKKyAgICAgICAgICAgLy8gZG91YmxlIHJhbmdlID0gMl44
CisgICAgICAgICAgIC8vIDJeNjAgLCAyXjYwICsgMl44CisgICAgICAgICAgIHBhcmFtX3R5cGUo
YSwgVHlwZVBhcmFtKDExNTI5MjE1MDQ2MDY4NDcyMzIpKSwKKyAgICAgICAgICAgLy8gZmxvYXQg
cmFuZ2UgPSAwCisgICAgICAgICAgIC8vIDJeNjAgLCAyXjYwICsgMl4zNgorICAgICAgICAgICBw
YXJhbV90eXBlKGEsIFR5cGVQYXJhbSgxMTUyOTIxNTczMzI2MzIzNzEyKSksCisgICAgICAgICAg
IC8vIDJeNjAgLCAyXjYwICsgMl4zNworICAgICAgICAgICBwYXJhbV90eXBlKGEsIFR5cGVQYXJh
bSgxMTUyOTIxNjQyMDQ1ODAwNDQ4KSksCisgICAgICAgICAgIC8vIGZsb2F0IHJhbmdlID0gMl4z
OAorICAgICAgICAgICAvLyAyXjYwICwgMl42MCArIDJeMzgKKyAgICAgICAgICAgcGFyYW1fdHlw
ZShhLCBUeXBlUGFyYW0oMTE1MjkyMTc3OTQ4NDc1MzkyMCkpLAorICAgICAgICAgICAvLyBMaW1p
dHMKKyAgICAgICAgICAgcGFyYW1fdHlwZSgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJh
bT46Om1heCgpKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZShzdGQ6Om51bWVyaWNfbGltaXRzPFR5
cGVQYXJhbT46Omxvd2VzdCgpLCAwKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZSgwLCBzdGQ6Om51
bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46OmVwc2lsb24oKSksCisgICAgICAgICAgIHBhcmFtX3R5
cGUoLXN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6ZXBzaWxvbigpLAorICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6ZXBzaWxvbigpKSwK
KyAgICAgICAgICAgcGFyYW1fdHlwZShzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46OmVw
c2lsb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAyICogc3RkOjpudW1lcmljX2xpbWl0czxU
eXBlUGFyYW0+OjplcHNpbG9uKCkpLAorICAgICAgIH0pIHsKKyAgICAvLyBWYWxpZGF0ZSBwYXJh
bWV0ZXJzLgorICAgIGNvbnN0IGF1dG8gYSA9IHBhcmFtLmEoKTsKKyAgICBjb25zdCBhdXRvIGIg
PSBwYXJhbS5iKCk7CisgICAgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxUeXBlUGFy
YW0+IGJlZm9yZShhLCBiKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLmEoKSwgcGFyYW0uYSgpKTsK
KyAgICBFWFBFQ1RfRVEoYmVmb3JlLmIoKSwgcGFyYW0uYigpKTsKKworICAgIHsKKyAgICAgIGFi
c2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiB2aWFfcGFyYW0ocGFyYW0p
OworICAgICAgRVhQRUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAgICB9CisKKyAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBzczsKKyAgICBzcyA8PCBiZWZvcmU7CisgICAgYWJzbDo6dW5pZm9ybV9y
ZWFsX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGFmdGVyKFR5cGVQYXJhbSgxLjApLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlUGFyYW0o
My4xKSk7CisKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLmEoKSwgYWZ0ZXIuYSgpKTsKKyAgICBFWFBF
Q1RfTkUoYmVmb3JlLmIoKSwgYWZ0ZXIuYigpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLnBhcmFt
KCksIGFmdGVyLnBhcmFtKCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUsIGFmdGVyKTsKKworICAg
IHNzID4+IGFmdGVyOworCisgICAgRVhQRUNUX0VRKGJlZm9yZS5hKCksIGFmdGVyLmEoKSk7Cisg
ICAgRVhQRUNUX0VRKGJlZm9yZS5iKCksIGFmdGVyLmIoKSk7CisgICAgRVhQRUNUX0VRKGJlZm9y
ZS5wYXJhbSgpLCBhZnRlci5wYXJhbSgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLCBhZnRlcik7
CisKKyAgICAvLyBTbW9rZSB0ZXN0LgorICAgIGF1dG8gc2FtcGxlX21pbiA9IGFmdGVyLm1heCgp
OworICAgIGF1dG8gc2FtcGxlX21heCA9IGFmdGVyLm1pbigpOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwga0NvdW50OyBpKyspIHsKKyAgICAgIGF1dG8gc2FtcGxlID0gYWZ0ZXIoZ2VuKTsKKyAg
ICAgIC8vIEZhaWx1cmUgaGVyZSBpbmRpY2F0ZXMgYSBidWcgaW4gdW5pZm9ybV9yZWFsX2Rpc3Ry
aWJ1dGlvbjo6b3BlcmF0b3IoKSwKKyAgICAgIC8vIG9yIGJhZCBwYXJhbWV0ZXJzLS1yYW5nZSB0
b28gbGFyZ2UsIGV0Yy4KKyAgICAgIGlmIChhZnRlci5taW4oKSA9PSBhZnRlci5tYXgoKSkgewor
ICAgICAgICBFWFBFQ1RfRVEoc2FtcGxlLCBhZnRlci5taW4oKSk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBFWFBFQ1RfR0Uoc2FtcGxlLCBhZnRlci5taW4oKSk7CisgICAgICAgIEVYUEVDVF9M
VChzYW1wbGUsIGFmdGVyLm1heCgpKTsKKyAgICAgIH0KKyAgICAgIGlmIChzYW1wbGUgPiBzYW1w
bGVfbWF4KSB7CisgICAgICAgIHNhbXBsZV9tYXggPSBzYW1wbGU7CisgICAgICB9CisgICAgICBp
ZiAoc2FtcGxlIDwgc2FtcGxlX21pbikgeworICAgICAgICBzYW1wbGVfbWluID0gc2FtcGxlOwor
ICAgICAgfQorICAgIH0KKworICAgIGlmICghc3RkOjppc19zYW1lPFR5cGVQYXJhbSwgbG9uZyBk
b3VibGU+Ojp2YWx1ZSkgeworICAgICAgLy8gc3RhdGljX2Nhc3Q8ZG91YmxlPihsb25nIGRvdWJs
ZSkgY2FuIG92ZXJmbG93LgorICAgICAgc3RkOjpzdHJpbmcgbXNnID0gYWJzbDo6U3RyQ2F0KCJS
YW5nZTogIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzYW1wbGVfbWluKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiLCAiLCBzdGF0aWNfY2FzdDxkb3VibGU+KHNhbXBsZV9t
YXgpKTsKKyAgICAgIEFCU0xfUkFXX0xPRyhJTkZPLCAiJXMiLCBtc2cuY19zdHIoKSk7CisgICAg
fQorICB9Cit9CisKK1RZUEVEX1RFU1QoVW5pZm9ybVJlYWxEaXN0cmlidXRpb25UZXN0LCBWaW9s
YXRlc1ByZWNvbmRpdGlvbnNEZWF0aFRlc3QpIHsKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAor
ICAvLyBIaSA8IExvCisgIEVYUEVDVF9ERUJVR19ERUFUSCgKKyAgICAgIHsgYWJzbDo6dW5pZm9y
bV9yZWFsX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGRpc3QoMTAuMCwgMS4wKTsgfSwgIiIpOwor
CisgIC8vIEhpIC0gTG8gPiBudW1lcmljX2xpbWl0czw+OjptYXgoKQorICBFWFBFQ1RfREVCVUdf
REVBVEgoCisgICAgICB7CisgICAgICAgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248
VHlwZVBhcmFtPiBkaXN0KAorICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFy
YW0+Ojpsb3dlc3QoKSwKKyAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFt
Pjo6bWF4KCkpOworICAgICAgfSwKKyAgICAgICIiKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RF
QVRIX1RFU1QKKyNpZiBkZWZpbmVkKE5ERUJVRykKKyAgLy8gb3B0LW1vZGUsIGZvciBpbnZhbGlk
IHBhcmFtZXRlcnMsIHdpbGwgZ2VuZXJhdGUgYSBnYXJiYWdlIHZhbHVlLAorICAvLyBidXQgc2hv
dWxkIG5vdCBlbnRlciBhbiBpbmZpbml0ZSBsb29wLgorICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBn
ZW47CisgIHsKKyAgICBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4g
ZGlzdCgxMC4wLCAxLjApOworICAgIGF1dG8geCA9IGRpc3QoZ2VuKTsKKyAgICBFWFBFQ1RfRkFM
U0Uoc3RkOjppc25hbih4KSkgPDwgeDsKKyAgfQorICB7CisgICAgYWJzbDo6dW5pZm9ybV9yZWFs
X2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGRpc3QoCisgICAgICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8VHlwZVBhcmFtPjo6bG93ZXN0KCksCisgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlw
ZVBhcmFtPjo6bWF4KCkpOworICAgIGF1dG8geCA9IGRpc3QoZ2VuKTsKKyAgICAvLyBJbmZpbml0
ZSByZXN1bHQuCisgICAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNmaW5pdGUoeCkpIDw8IHg7CisgIH0K
KyNlbmRpZiAgLy8gTkRFQlVHCit9CisKK1RZUEVEX1RFU1QoVW5pZm9ybVJlYWxEaXN0cmlidXRp
b25UZXN0LCBUZXN0TW9tZW50cykgeworICBjb25zdGV4cHIgaW50IGtTaXplID0gMTAwMDAwMDsK
KyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiB2YWx1ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJl
Qml0R2VuIHJuZzsKKyAgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+
IGRpc3Q7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1NpemU7IGkrKykgeworICAgIHZhbHVlc1tp
XSA9IGRpc3Qocm5nKTsKKyAgfQorCisgIGNvbnN0IGF1dG8gbW9tZW50cyA9CisgICAgICBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OkNvbXB1dGVEaXN0cmlidXRpb25Nb21lbnRzKHZhbHVlcyk7Cisg
IEVYUEVDVF9ORUFSKDAuNSwgbW9tZW50cy5tZWFuLCAwLjAxKTsKKyAgRVhQRUNUX05FQVIoMSAv
IDEyLjAsIG1vbWVudHMudmFyaWFuY2UsIDAuMDE1KTsKKyAgRVhQRUNUX05FQVIoMC4wLCBtb21l
bnRzLnNrZXduZXNzLCAwLjAyKTsKKyAgRVhQRUNUX05FQVIoOSAvIDUuMCwgbW9tZW50cy5rdXJ0
b3NpcywgMC4wMTUpOworfQorCitUWVBFRF9URVNUKFVuaWZvcm1SZWFsRGlzdHJpYnV0aW9uVGVz
dCwgQ2hpU3F1YXJlZFRlc3Q1MCkgeworICB1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OmtD
aGlTcXVhcmVkOworICB1c2luZyBwYXJhbV90eXBlID0KKyAgICAgIHR5cGVuYW1lIGFic2w6OnVu
aWZvcm1fcmVhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPjo6cGFyYW1fdHlwZTsKKworICBjb25z
dGV4cHIgc2l6ZV90IGtUcmlhbHMgPSAxMDAwMDA7CisgIGNvbnN0ZXhwciBpbnQga0J1Y2tldHMg
PSA1MDsKKyAgY29uc3RleHByIGRvdWJsZSBrRXhwZWN0ZWQgPQorICAgICAgc3RhdGljX2Nhc3Q8
ZG91YmxlPihrVHJpYWxzKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oa0J1Y2tldHMpOworCisgIC8v
IDEtaW4tMTAwMDAwIHRocmVzaG9sZCwgYnV0IHJlbWVtYmVyLCB0aGVyZSBhcmUgYWJvdXQgOCB0
ZXN0cworICAvLyBpbiB0aGlzIGZpbGUuIEFuZCB0aGUgdGVzdCBjb3VsZCBmYWlsIGZvciBvdGhl
ciByZWFzb25zLgorICAvLyBFbXBpcmljYWxseSB2YWxpZGF0ZWQgd2l0aCAtLXJ1bnNfcGVyX3Rl
c3Q9MTAwMDAuCisgIGNvbnN0IGludCBrVGhyZXNob2xkID0KKyAgICAgIGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6Q2hpU3F1YXJlVmFsdWUoa0J1Y2tldHMgLSAxLCAwLjk5OTk5OSk7CisKKyAgYWJz
bDo6SW5zZWN1cmVCaXRHZW4gcm5nOworICBmb3IgKGNvbnN0IGF1dG8mIHBhcmFtIDoge3BhcmFt
X3R5cGUoMCwgMSksIHBhcmFtX3R5cGUoNSwgMTIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtX3R5cGUoLTUsIDEzKSwgcGFyYW1fdHlwZSgtNSwgLTIpfSkgeworICAgIGNvbnN0
IGRvdWJsZSBtaW5fdmFsID0gcGFyYW0uYSgpOworICAgIGNvbnN0IGRvdWJsZSBtYXhfdmFsID0g
cGFyYW0uYigpOworICAgIGNvbnN0IGRvdWJsZSBmYWN0b3IgPSBrQnVja2V0cyAvIChtYXhfdmFs
IC0gbWluX3ZhbCk7CisKKyAgICBzdGQ6OnZlY3RvcjxpbnQzMl90PiBjb3VudHMoa0J1Y2tldHMs
IDApOworICAgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBkaXN0
KHBhcmFtKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtUcmlhbHM7IGkrKykgeworICAg
ICAgYXV0byB4ID0gZGlzdChybmcpOworICAgICAgYXV0byBidWNrZXQgPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KCh4IC0gbWluX3ZhbCkgKiBmYWN0b3IpOworICAgICAgY291bnRzW2J1Y2tldF0rKzsK
KyAgICB9CisKKyAgICBkb3VibGUgY2hpX3NxdWFyZSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6
Q2hpU3F1YXJlV2l0aEV4cGVjdGVkKAorICAgICAgICBzdGQ6OmJlZ2luKGNvdW50cyksIHN0ZDo6
ZW5kKGNvdW50cyksIGtFeHBlY3RlZCk7CisgICAgaWYgKGNoaV9zcXVhcmUgPiBrVGhyZXNob2xk
KSB7CisgICAgICBkb3VibGUgcF92YWx1ZSA9CisgICAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVy
bmFsOjpDaGlTcXVhcmVQVmFsdWUoY2hpX3NxdWFyZSwga0J1Y2tldHMpOworCisgICAgICAvLyBD
aGktc3F1YXJlZCB0ZXN0IGZhaWxlZC4gT3V0cHV0IGRvZXMgbm90IGFwcGVhciB0byBiZSB1bmlm
b3JtLgorICAgICAgc3RkOjpzdHJpbmcgbXNnOworICAgICAgZm9yIChjb25zdCBhdXRvJiBhIDog
Y291bnRzKSB7CisgICAgICAgIGFic2w6OlN0ckFwcGVuZCgmbXNnLCBhLCAiXG4iKTsKKyAgICAg
IH0KKyAgICAgIGFic2w6OlN0ckFwcGVuZCgmbXNnLCBrQ2hpU3F1YXJlZCwgIiBwLXZhbHVlICIs
IHBfdmFsdWUsICJcbiIpOworICAgICAgYWJzbDo6U3RyQXBwZW5kKCZtc2csICJIaWdoICIsIGtD
aGlTcXVhcmVkLCAiIHZhbHVlOiAiLCBjaGlfc3F1YXJlLCAiID4gIiwKKyAgICAgICAgICAgICAg
ICAgICAgICBrVGhyZXNob2xkKTsKKyAgICAgIEFCU0xfUkFXX0xPRyhJTkZPLCAiJXMiLCBtc2cu
Y19zdHIoKSk7CisgICAgICBGQUlMKCkgPDwgbXNnOworICAgIH0KKyAgfQorfQorCitUWVBFRF9U
RVNUKFVuaWZvcm1SZWFsRGlzdHJpYnV0aW9uVGVzdCwgU3RhYmlsaXR5VGVzdCkgeworICAvLyBh
YnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uIHN0YWJpbGl0eSByZWxpZXMgb25seSBvbgor
ICAvLyByYW5kb21faW50ZXJuYWw6OlJhbmRVNjRUb0RvdWJsZSBhbmQgcmFuZG9tX2ludGVybmFs
OjpSYW5kVTY0VG9GbG9hdC4KKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJn
IHVyYmcoCisgICAgICB7MHgwMDAzZWI3NmY2ZjdmNzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1
bGwsIDB4QzMzMkRERUZCRTZDNUFBNXVsbCwKKyAgICAgICAweDY1NTgyMTg1NjhBQjk3MDJ1bGws
IDB4MkFFRjdEQUQ1QjZFMkY4NHVsbCwgMHgxNTIxQjYyODI5MDc2MTcwdWxsLAorICAgICAgIDB4
RUNERDQ3NzU2MTlGMTUxMHVsbCwgMHgxM0NDQTgzMEVCNjFCRDk2dWxsLCAweDAzMzRGRTFFQUEw
MzYzQ0Z1bGwsCisgICAgICAgMHhCNTczNUM5MDRDNzBBMjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURF
MTR1bGwsIDB4RUVDQzg2QkM2MDYyMkNBN3VsbH0pOworCisgIHN0ZDo6dmVjdG9yPGludD4gb3V0
cHV0KDEyKTsKKworICBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4g
ZGlzdDsKKyAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91dHB1dCksIHN0ZDo6ZW5kKG91dHB1
dCksIFsmXSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oVHlwZVBhcmFtKDEwMDAwMDAp
ICogZGlzdCh1cmJnKSk7CisgIH0pOworCisgIEVYUEVDVF9USEFUKAorICAgICAgb3V0cHV0LCAg
Ly8KKyAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKDU5LCA5OTkyNDYsIDc2MjQ5NCwgMzk1ODc2
LCAxNjc3MTYsIDgyNTQ1LCA5MjUyNTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA3NzM0
MSwgMTI1MjcsIDcwODc5MSwgODM0NDUxLCA5MzI4MDgpKTsKK30KKworVEVTVChVbmlmb3JtUmVh
bERpc3RyaWJ1dGlvblRlc3QsIEFsZ29yaXRobUJvdW5kcykgeworICBhYnNsOjp1bmlmb3JtX3Jl
YWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4gZGlzdDsKKworICB7CisgICAgLy8gVGhpcyByZXR1cm5z
IHRoZSBzbWFsbGVzdCB2YWx1ZSA+MCBmcm9tIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRp
b24uCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoezB4MDAw
MDAwMDAwMDAwMDAwMXVsbH0pOworICAgIGRvdWJsZSBhID0gZGlzdCh1cmJnKTsKKyAgICBFWFBF
Q1RfRVEoYSwgNS40MjEwMTA4NjI0Mjc1MjIxNzAwNGUtMjApOworICB9CisKKyAgeworICAgIC8v
IFRoaXMgcmV0dXJucyBhIHZhbHVlIHZlcnkgbmVhciAwLjUgZnJvbSBhYnNsOjp1bmlmb3JtX3Jl
YWxfZGlzdHJpYnV0aW9uLgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJi
ZyB1cmJnKHsweDdmZmZmZmZmZmZmZmZmZWZ1bGx9KTsKKyAgICBkb3VibGUgYSA9IGRpc3QodXJi
Zyk7CisgICAgRVhQRUNUX0VRKGEsIDAuNDk5OTk5OTk5OTk5OTk5OTQ0NDg5KTsKKyAgfQorICB7
CisgICAgLy8gVGhpcyByZXR1cm5zIGEgdmFsdWUgdmVyeSBuZWFyIDAuNSBmcm9tIGFic2w6OnVu
aWZvcm1fcmVhbF9kaXN0cmlidXRpb24uCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1
ZW5jZV91cmJnIHVyYmcoezB4ODAwMDAwMDAwMDAwMDAwMHVsbH0pOworICAgIGRvdWJsZSBhID0g
ZGlzdCh1cmJnKTsKKyAgICBFWFBFQ1RfRVEoYSwgMC41KTsKKyAgfQorCisgIHsKKyAgICAvLyBU
aGlzIHJldHVybnMgdGhlIGxhcmdlc3QgdmFsdWUgPDEgZnJvbSBhYnNsOjp1bmlmb3JtX3JlYWxf
ZGlzdHJpYnV0aW9uLgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1
cmJnKHsweEZGRkZGRkZGRkZGRkZGRUZ1bGx9KTsKKyAgICBkb3VibGUgYSA9IGRpc3QodXJiZyk7
CisgICAgRVhQRUNUX0VRKGEsIDAuOTk5OTk5OTk5OTk5OTk5ODg4OTc4KTsKKyAgfQorICB7Cisg
ICAgLy8gVGhpcyAqQUxTTyogcmV0dXJucyB0aGUgbGFyZ2VzdCB2YWx1ZSA8MS4KKyAgICBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZyh7MHhGRkZGRkZGRkZGRkZGRkZG
dWxsfSk7CisgICAgZG91YmxlIGEgPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9FUShhLCAwLjk5
OTk5OTk5OTk5OTk5OTg4ODk3OCk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vemlwZl9kaXN0cmlidXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS96aXBm
X2Rpc3RyaWJ1dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YjRhYzM4ZWRhY2QzNWQ2YTc5MTljNDgwMjlh
Y2ZlNjg2OGE0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vemlwZl9kaXN0cmli
dXRpb24uaApAQCAtMCwwICsxLDI2OSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBB
dXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fWklQRl9ESVNUUklCVVRJT05fSF8KKyNk
ZWZpbmUgQUJTTF9SQU5ET01fWklQRl9ESVNUUklCVVRJT05fSF8KKworI2luY2x1ZGUgPGNhc3Nl
cnQ+CisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8aXN0cmVhbT4KKyNpbmNsdWRlIDxsaW1p
dHM+CisjaW5jbHVkZSA8b3N0cmVhbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1
ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyLmgiCisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oIgorCituYW1lc3BhY2Ug
YWJzbCB7CisKKy8vIGFic2w6OnppcGZfZGlzdHJpYnV0aW9uIHByb2R1Y2VzIHJhbmRvbSBpbnRl
Z2VyLXZhbHVlcyBpbiB0aGUgcmFuZ2UgWzAsIGtdLAorLy8gZGlzdHJpYnV0ZWQgYWNjb3JkaW5n
IHRvIHRoZSBkaXNjcmV0ZSBwcm9iYWJpbGl0eSBmdW5jdGlvbjoKKy8vCisvLyAgUCh4KSA9ICh2
ICsgeCkgXiAtcQorLy8KKy8vIFRoZSBwYXJhbWV0ZXIgYHZgIG11c3QgYmUgZ3JlYXRlciB0aGFu
IDAgYW5kIHRoZSBwYXJhbWV0ZXIgYHFgIG11c3QgYmUKKy8vIGdyZWF0ZXIgdGhhbiAxLiBJZiBl
aXRoZXIgb2YgdGhlc2UgcGFyYW1ldGVycyB0YWtlIGludmFsaWQgdmFsdWVzIHRoZW4gdGhlCisv
LyBiZWhhdmlvciBpcyB1bmRlZmluZWQuCisvLworLy8gSW50VHlwZSBpcyB0aGUgcmVzdWx0X3R5
cGUgZ2VuZXJhdGVkIGJ5IHRoZSBnZW5lcmF0b3IuIEl0IG11c3QgYmUgb2YgaW50ZWdyYWwKKy8v
IHR5cGU7IGEgc3RhdGljX2Fzc2VydCBlbnN1cmVzIHRoaXMgaXMgdGhlIGNhc2UuCisvLworLy8g
VGhlIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIFcuSG9ybWFubiwgRy5EZXJmbGluZ2VyOgor
Ly8KKy8vICJSZWplY3Rpb24tSW52ZXJzaW9uIHRvIEdlbmVyYXRlIFZhcmlhdGVzIGZyb20gTW9u
b3RvbmUgRGlzY3JldGUKKy8vIERpc3RyaWJ1dGlvbnMiCisvLworLy8gaHR0cDovL2VleW9yZS53
dS13aWVuLmFjLmF0L3BhcGVycy85Ni0wNC0wNC53aC1kZXIucHMuZ3oKKy8vCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSW50VHlwZSA9IGludD4KK2NsYXNzIHppcGZfZGlzdHJpYnV0aW9uIHsKKyBwdWJs
aWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gSW50VHlwZTsKKworICBjbGFzcyBwYXJhbV90eXBl
IHsKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBkaXN0cmlidXRpb25fdHlwZSA9IHppcGZfZGlzdHJp
YnV0aW9uOworCisgICAgLy8gUHJlY29uZGl0aW9uczogayA+IDAsIHYgPiAwLCBxID4gMQorICAg
IC8vIFRoZSBwcmVjb25kaWR0aW9ucyBhcmUgdmFsaWRhdGVkIHdoZW4gTkRFQlVHIGlzIG5vdCBk
ZWZpbmVkIHZpYQorICAgIC8vIGEgcGFpciBvZiBhc3NlcnQoKSBkaXJlY3RpdmVzLgorICAgIC8v
IElmIE5ERUJVRyBpcyBkZWZpbmVkIGFuZCBlaXRoZXIgb3IgYm90aCBvZiB0aGVzZSBwYXJhbWV0
ZXJzIHRha2UgaW52YWxpZAorICAgIC8vIHZhbHVlcywgdGhlIGJlaGF2aW9yIG9mIHRoZSBjbGFz
cyBpcyB1bmRlZmluZWQuCisgICAgZXhwbGljaXQgcGFyYW1fdHlwZShyZXN1bHRfdHlwZSBrID0g
KHN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46Om1heCkoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvdWJsZSBxID0gMi4wLCBkb3VibGUgdiA9IDEuMCk7CisKKyAgICByZXN1bHRfdHlw
ZSBrKCkgY29uc3QgeyByZXR1cm4ga187IH0KKyAgICBkb3VibGUgcSgpIGNvbnN0IHsgcmV0dXJu
IHFfOyB9CisgICAgZG91YmxlIHYoKSBjb25zdCB7IHJldHVybiB2XzsgfQorCisgICAgZnJpZW5k
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBi
KSB7CisgICAgICByZXR1cm4gYS5rXyA9PSBiLmtfICYmIGEucV8gPT0gYi5xXyAmJiBhLnZfID09
IGIudl87CisgICAgfQorICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcGFyYW1fdHlw
ZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuICEoYSA9PSBiKTsKKyAg
ICB9CisKKyAgIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIHppcGZfZGlzdHJpYnV0aW9uOwor
ICAgIGlubGluZSBkb3VibGUgaChkb3VibGUgeCkgY29uc3Q7CisgICAgaW5saW5lIGRvdWJsZSBo
aW52KGRvdWJsZSB4KSBjb25zdDsKKyAgICBpbmxpbmUgZG91YmxlIGNvbXB1dGVfcygpIGNvbnN0
OworICAgIGlubGluZSBkb3VibGUgcG93X25lZ2F0aXZlX3EoZG91YmxlIHgpIGNvbnN0OworCisg
ICAgLy8gUGFyYW1ldGVycyBoZXJlIGFyZSBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBwYXJhbWV0
ZXJzIG9mIEFsZ29yaXRobSBaUkkKKyAgICAvLyBpbiB0aGUgcGFwZXIuCisgICAgSW50VHlwZSBr
XzsKKyAgICBkb3VibGUgcV87CisgICAgZG91YmxlIHZfOworCisgICAgZG91YmxlIG9uZV9taW51
c19xXzsgIC8vIDEtcQorICAgIGRvdWJsZSBzXzsKKyAgICBkb3VibGUgb25lX21pbnVzX3FfaW52
XzsgIC8vIDEgLyAxLXEKKyAgICBkb3VibGUgaHhtXzsgICAgICAgICAgICAgIC8vIGgoayArIDAu
NSkKKyAgICBkb3VibGUgaHgwX21pbnVzX2h4bV87ICAgIC8vIGgoeDApIC0gaChrICsgMC41KQor
CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPEludFR5cGU+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICJDbGFzcy10ZW1wbGF0ZSBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjw+
IG11c3QgYmUgIgorICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcml6ZWQgdXNpbmcgYW4gaW50
ZWdyYWwgdHlwZS4iKTsKKyAgfTsKKworICB6aXBmX2Rpc3RyaWJ1dGlvbigpCisgICAgICA6IHpp
cGZfZGlzdHJpYnV0aW9uKChzdGQ6Om51bWVyaWNfbGltaXRzPEludFR5cGU+OjptYXgpKCkpIHt9
CisKKyAgZXhwbGljaXQgemlwZl9kaXN0cmlidXRpb24ocmVzdWx0X3R5cGUgaywgZG91YmxlIHEg
PSAyLjAsIGRvdWJsZSB2ID0gMS4wKQorICAgICAgOiBwYXJhbV8oaywgcSwgdikge30KKworICBl
eHBsaWNpdCB6aXBmX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBwKSA6IHBhcmFtXyhw
KSB7fQorCisgIHZvaWQgcmVzZXQoKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgor
ICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3Jl
ZmVyZW5jZXMpCisgICAgcmV0dXJuICgqdGhpcykoZywgcGFyYW1fKTsKKyAgfQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcmIGcsICAv
LyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHBhcmFtX3R5cGUmIHApOworCisgIHJlc3VsdF90eXBlIGsoKSBjb25zdCB7IHJldHVybiBw
YXJhbV8uaygpOyB9CisgIGRvdWJsZSBxKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fLnEoKTsgfQor
ICBkb3VibGUgdigpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXy52KCk7IH0KKworICBwYXJhbV90eXBl
IHBhcmFtKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQgcGFyYW0oY29uc3QgcGFy
YW1fdHlwZSYgcCkgeyBwYXJhbV8gPSBwOyB9CisKKyAgcmVzdWx0X3R5cGUobWluKSgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KKyAgcmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsgcmV0dXJuIGsoKTsg
fQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgemlwZl9kaXN0cmlidXRpb24mIGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgemlwZl9kaXN0cmlidXRpb24mIGIpIHsK
KyAgICByZXR1cm4gYS5wYXJhbV8gPT0gYi5wYXJhbV87CisgIH0KKyAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCB6aXBmX2Rpc3RyaWJ1dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB6aXBmX2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiBhLnBhcmFtXyAh
PSBiLnBhcmFtXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgcGFyYW1fdHlwZSBwYXJhbV87Cit9Owor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gSW1wbGVtZW50YXRpb24gZGV0YWlscyBmb2xsb3cK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgoremlw
Zl9kaXN0cmlidXRpb248SW50VHlwZT46OnBhcmFtX3R5cGU6OnBhcmFtX3R5cGUoCisgICAgdHlw
ZW5hbWUgemlwZl9kaXN0cmlidXRpb248SW50VHlwZT46OnJlc3VsdF90eXBlIGssIGRvdWJsZSBx
LCBkb3VibGUgdikKKyAgICA6IGtfKGspLCBxXyhxKSwgdl8odiksIG9uZV9taW51c19xXygxIC0g
cSkgeworICBhc3NlcnQocSA+IDEpOworICBhc3NlcnQodiA+IDApOworICBhc3NlcnQoayA+IDAp
OworICBvbmVfbWludXNfcV9pbnZfID0gMSAvIG9uZV9taW51c19xXzsKKworICAvLyBTZXR1cCBm
b3IgdGhlIFpSSSBhbGdvcml0aG0gKHBnIDE3IG9mIHRoZSBwYXBlcikuCisgIC8vIENvbXB1dGU6
IGgoaSBtYXgpID0+IGgoayArIDAuNSkKKyAgY29uc3RleHByIGRvdWJsZSBrTWF4ID0gMTg0NDY3
NDQwNzM3MDk1NDk1NjguMDsKKyAgZG91YmxlIGtkID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihrKTsK
KyAgLy8gVE9ETyhhYnNsLXRlYW0pOiBEZXRlcm1pbmUgaWYgdGhpcyBjaGVjayBpcyBuZWVkZWQs
IGFuZCBpZiBzbywgYWRkIGEgdGVzdAorICAvLyB0aGF0IGZhaWxzIGZvciBrID4ga01heAorICBp
ZiAoa2QgPiBrTWF4KSB7CisgICAgLy8gRW5zdXJlIHRoYXQgb3VyIG1heGltdW0gdmFsdWUgaXMg
Y2FwcGVkIHRvIGEgdmFsdWUgd2hpY2ggd2lsbAorICAgIC8vIHJvdW5kLXRyaXAgYmFjayB0aHJv
dWdoIGRvdWJsZS4KKyAgICBrZCA9IGtNYXg7CisgIH0KKyAgaHhtXyA9IGgoa2QgKyAwLjUpOwor
CisgIC8vIENvbXB1dGU6IGgoMCkKKyAgY29uc3QgYm9vbCB1c2VfcHJlY29tcHV0ZWQgPSAodiA9
PSAxLjAgJiYgcSA9PSAyLjApOworICBjb25zdCBkb3VibGUgaDB4NSA9IHVzZV9wcmVjb21wdXRl
ZCA/ICgtMS4wIC8gMS41KSAgLy8gZXhwKC1sb2coMS41KSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiBoKDAuNSk7CisgIGNvbnN0IGRvdWJsZSBlbG9ndl9xID0gKHZf
ID09IDEuMCkgPyAxIDogcG93X25lZ2F0aXZlX3Eodl8pOworCisgIC8vIGgoMCkgPSBoKDAuNSkg
LSBleHAobG9nKHYpICogLXEpCisgIGh4MF9taW51c19oeG1fID0gKGgweDUgLSBlbG9ndl9xKSAt
IGh4bV87CisKKyAgLy8gQW5kIHMKKyAgc18gPSB1c2VfcHJlY29tcHV0ZWQgPyAwLjQ2MTUzODQ2
MTUzODQ2MTIzIDogY29tcHV0ZV9zKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBl
PgorZG91YmxlIHppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOjpoKGRvdWJs
ZSB4KSBjb25zdCB7CisgIC8vIHN0ZDo6ZXhwKG9uZV9taW51c19xXyAqIHN0ZDo6bG9nKHZfICsg
eCkpICogb25lX21pbnVzX3FfaW52XzsKKyAgeCArPSB2XzsKKyAgcmV0dXJuIChvbmVfbWludXNf
cV8gPT0gLTEuMCkKKyAgICAgICAgICAgICA/ICgtMS4wIC8geCkgIC8vIC1leHAoLWxvZyh4KSkK
KyAgICAgICAgICAgICA6IChzdGQ6OmV4cChzdGQ6OmxvZyh4KSAqIG9uZV9taW51c19xXykgKiBv
bmVfbWludXNfcV9pbnZfKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+Citkb3Vi
bGUgemlwZl9kaXN0cmlidXRpb248SW50VHlwZT46OnBhcmFtX3R5cGU6OmhpbnYoZG91YmxlIHgp
IGNvbnN0IHsKKyAgLy8gc3RkOjpleHAob25lX21pbnVzX3FfaW52XyAqIHN0ZDo6bG9nKG9uZV9t
aW51c19xXyAqIHgpKSAtIHZfOworICByZXR1cm4gLXZfICsgKChvbmVfbWludXNfcV8gPT0gLTEu
MCkKKyAgICAgICAgICAgICAgICAgICAgPyAoLTEuMCAvIHgpICAvLyBleHAoLWxvZygteCkpCisg
ICAgICAgICAgICAgICAgICAgIDogc3RkOjpleHAob25lX21pbnVzX3FfaW52XyAqIHN0ZDo6bG9n
KG9uZV9taW51c19xXyAqIHgpKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgor
ZG91YmxlIHppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOjpjb21wdXRlX3Mo
KSBjb25zdCB7CisgIC8vIDEgLSBoaW52KGgoMS41KSAtIHN0ZDo6ZXhwKHN0ZDo6bG9nKHZfICsg
MSkgKiAtcV8pKTsKKyAgcmV0dXJuIDEuMCAtIGhpbnYoaCgxLjUpIC0gcG93X25lZ2F0aXZlX3Eo
dl8gKyAxLjApKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+Citkb3VibGUgemlw
Zl9kaXN0cmlidXRpb248SW50VHlwZT46OnBhcmFtX3R5cGU6OnBvd19uZWdhdGl2ZV9xKGRvdWJs
ZSB4KSBjb25zdCB7CisgIC8vIHN0ZDo6ZXhwKHN0ZDo6bG9nKHgpICogLXFfKTsKKyAgcmV0dXJu
IHFfID09IDIuMCA/ICgxLjAgLyAoeCAqIHgpKSA6IHN0ZDo6ZXhwKHN0ZDo6bG9nKHgpICogLXFf
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VVJCRz4KK3R5cGVuYW1lIHppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpyZXN1bHRfdHlwZQor
emlwZl9kaXN0cmlidXRpb248SW50VHlwZT46Om9wZXJhdG9yKCkoCisgICAgVVJCRyYgZywgY29u
c3QgcGFyYW1fdHlwZSYgcCkgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgYWJz
bDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IHVuaWZvcm1fZG91YmxlOworICBk
b3VibGUgazsKKyAgZm9yICg7OykgeworICAgIGNvbnN0IGRvdWJsZSB2ID0gdW5pZm9ybV9kb3Vi
bGUoZyk7CisgICAgY29uc3QgZG91YmxlIHUgPSBwLmh4bV8gKyB2ICogcC5oeDBfbWludXNfaHht
XzsKKyAgICBjb25zdCBkb3VibGUgeCA9IHAuaGludih1KTsKKyAgICBrID0gcmludCh4KTsgICAg
ICAgICAgICAgIC8vIHN0ZDo6Zmxvb3IoeCArIDAuNSk7CisgICAgaWYgKGsgPiBwLmsoKSkgY29u
dGludWU7ICAvLyByZWplY3QgayA+IG1heF9rCisgICAgaWYgKGsgLSB4IDw9IHAuc18pIGJyZWFr
OworICAgIGNvbnN0IGRvdWJsZSBoID0gcC5oKGsgKyAwLjUpOworICAgIGNvbnN0IGRvdWJsZSBy
ID0gcC5wb3dfbmVnYXRpdmVfcShwLnZfICsgayk7CisgICAgaWYgKHUgPj0gaCAtIHIpIGJyZWFr
OworICB9CisgIEludFR5cGUga2kgPSBzdGF0aWNfY2FzdDxJbnRUeXBlPihrKTsKKyAgYXNzZXJ0
KGtpIDw9IHAua18pOworICByZXR1cm4ga2k7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBJbnRUeXBlPgorc3RkOjpiYXNpY19vc3RyZWFt
PENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFy
VCwgVHJhaXRzPiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0
IHppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+JiB4KSB7CisgIHVzaW5nIHN0cmVhbV90eXBlID0K
KyAgICAgIHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX2Zvcm1hdF90eXBlPEludFR5
cGU+Ojp0eXBlOworICBhdXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjptYWtlX29zdHJlYW1f
c3RhdGVfc2F2ZXIob3MpOworICBvcy5wcmVjaXNpb24ocmFuZG9tX2ludGVybmFsOjpzdHJlYW1f
cHJlY2lzaW9uX2hlbHBlcjxkb3VibGU+OjprUHJlY2lzaW9uKTsKKyAgb3MgPDwgc3RhdGljX2Nh
c3Q8c3RyZWFtX3R5cGU+KHguaygpKSA8PCBvcy5maWxsKCkgPDwgeC5xKCkgPDwgb3MuZmlsbCgp
CisgICAgIDw8IHgudigpOworICByZXR1cm4gb3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBJbnRUeXBlPgorc3RkOjpiYXNpY19pc3Ry
ZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcj4+KAorICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxD
aGFyVCwgVHJhaXRzPiYgaXMsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHpp
cGZfZGlzdHJpYnV0aW9uPEludFR5cGU+JiB4KSB7ICAgICAgICAvLyBOT0xJTlQocnVudGltZS9y
ZWZlcmVuY2VzKQorICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIHppcGZfZGlzdHJpYnV0
aW9uPEludFR5cGU+OjpyZXN1bHRfdHlwZTsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1l
IHppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOworICB1c2luZyBzdHJlYW1f
dHlwZSA9CisgICAgICB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OnN0cmVhbV9mb3JtYXRfdHlw
ZTxJbnRUeXBlPjo6dHlwZTsKKyAgc3RyZWFtX3R5cGUgazsKKyAgZG91YmxlIHE7CisgIGRvdWJs
ZSB2OworCisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2VfaXN0cmVhbV9zdGF0
ZV9zYXZlcihpcyk7CisgIGlzID4+IGsgPj4gcSA+PiB2OworICBpZiAoIWlzLmZhaWwoKSkgewor
ICAgIHgucGFyYW0ocGFyYW1fdHlwZShzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oayksIHEsIHYp
KTsKKyAgfQorICByZXR1cm4gaXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRp
ZiAgLy8gQUJTTF9SQU5ET01fWklQRl9ESVNUUklCVVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS96aXBmX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3ppcGZfZGlz
dHJpYnV0aW9uX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ0YTBmY2Y3OTNiM2IyZDFjYTk5ZGQyYjVh
NGM4YWQwNTY4NzUxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS96aXBmX2Rpc3Ry
aWJ1dGlvbl90ZXN0LmNjCkBAIC0wLDAgKzEsNDIzIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL3ppcGZfZGlzdHJpYnV0
aW9uLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNs
dWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisK
KyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5j
bHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9y
YW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVy
bmFsL3NlcXVlbmNlX3VyYmcuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9yYW5kb20uaCIKKyNp
bmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9z
dHJfcmVwbGFjZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpcC5oIgorCituYW1lc3Bh
Y2UgeworCit1c2luZyA6OmFic2w6OnJhbmRvbV9pbnRlcm5hbDo6a0NoaVNxdWFyZWQ7Cit1c2lu
ZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4K
K2NsYXNzIFppcGZEaXN0cmlidXRpb25UeXBlZFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHt9OworCit1c2luZyBJbnRUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8aW50LCBpbnQ4X3QsIGlu
dDE2X3QsIGludDMyX3QsIGludDY0X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCwgdWludDE2X3QsIHVpbnQzMl90LCB1aW50NjRfdD47CitUWVBFRF9URVNUX0NB
U0UoWmlwZkRpc3RyaWJ1dGlvblR5cGVkVGVzdCwgSW50VHlwZXMpOworCitUWVBFRF9URVNUKFpp
cGZEaXN0cmlidXRpb25UeXBlZFRlc3QsIFNlcmlhbGl6ZVRlc3QpIHsKKyAgdXNpbmcgcGFyYW1f
dHlwZSA9IHR5cGVuYW1lIGFic2w6OnppcGZfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFt
X3R5cGU7CisKKyAgY29uc3RleHByIGludCBrQ291bnQgPSAxMDAwOworICBhYnNsOjpJbnNlY3Vy
ZUJpdEdlbiBnZW47CisgIGZvciAoY29uc3QgYXV0byYgcGFyYW0gOiB7CisgICAgICAgICAgIHBh
cmFtX3R5cGUoKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZSgzMiksCisgICAgICAgICAgIHBhcmFt
X3R5cGUoMTAwLCAzLCAyKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZShzdGQ6Om51bWVyaWNfbGlt
aXRzPFR5cGVQYXJhbT46Om1heCgpLCA0LCAzKSwKKyAgICAgICAgICAgcGFyYW1fdHlwZShzdGQ6
Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpIC8gMiksCisgICAgICAgfSkgeworICAg
IC8vIFZhbGlkYXRlIHBhcmFtZXRlcnMuCisgICAgY29uc3QgYXV0byBrID0gcGFyYW0uaygpOwor
ICAgIGNvbnN0IGF1dG8gcSA9IHBhcmFtLnEoKTsKKyAgICBjb25zdCBhdXRvIHYgPSBwYXJhbS52
KCk7CisKKyAgICBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGJlZm9yZShrLCBx
LCB2KTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLmsoKSwgcGFyYW0uaygpKTsKKyAgICBFWFBFQ1Rf
RVEoYmVmb3JlLnEoKSwgcGFyYW0ucSgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLnYoKSwgcGFy
YW0udigpKTsKKworICAgIHsKKyAgICAgIGFic2w6OnppcGZfZGlzdHJpYnV0aW9uPFR5cGVQYXJh
bT4gdmlhX3BhcmFtKHBhcmFtKTsKKyAgICAgIEVYUEVDVF9FUSh2aWFfcGFyYW0sIGJlZm9yZSk7
CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgc3RyZWFtIHNlcmlhbGl6YXRpb24uCisgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gc3M7CisgICAgc3MgPDwgYmVmb3JlOworICAgIGFic2w6OnppcGZfZGlz
dHJpYnV0aW9uPFR5cGVQYXJhbT4gYWZ0ZXIoNCwgNS41LCA0LjQpOworCisgICAgRVhQRUNUX05F
KGJlZm9yZS5rKCksIGFmdGVyLmsoKSk7CisgICAgRVhQRUNUX05FKGJlZm9yZS5xKCksIGFmdGVy
LnEoKSk7CisgICAgRVhQRUNUX05FKGJlZm9yZS52KCksIGFmdGVyLnYoKSk7CisgICAgRVhQRUNU
X05FKGJlZm9yZS5wYXJhbSgpLCBhZnRlci5wYXJhbSgpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3Jl
LCBhZnRlcik7CisKKyAgICBzcyA+PiBhZnRlcjsKKworICAgIEVYUEVDVF9FUShiZWZvcmUuaygp
LCBhZnRlci5rKCkpOworICAgIEVYUEVDVF9FUShiZWZvcmUucSgpLCBhZnRlci5xKCkpOworICAg
IEVYUEVDVF9FUShiZWZvcmUudigpLCBhZnRlci52KCkpOworICAgIEVYUEVDVF9FUShiZWZvcmUu
cGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZSwgYWZ0ZXIpOwor
CisgICAgLy8gU21va2UgdGVzdC4KKyAgICBhdXRvIHNhbXBsZV9taW4gPSBhZnRlci5tYXgoKTsK
KyAgICBhdXRvIHNhbXBsZV9tYXggPSBhZnRlci5taW4oKTsKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IGtDb3VudDsgaSsrKSB7CisgICAgICBhdXRvIHNhbXBsZSA9IGFmdGVyKGdlbik7CisgICAg
ICBFWFBFQ1RfR0Uoc2FtcGxlLCBhZnRlci5taW4oKSk7CisgICAgICBFWFBFQ1RfTEUoc2FtcGxl
LCBhZnRlci5tYXgoKSk7CisgICAgICBpZiAoc2FtcGxlID4gc2FtcGxlX21heCkgc2FtcGxlX21h
eCA9IHNhbXBsZTsKKyAgICAgIGlmIChzYW1wbGUgPCBzYW1wbGVfbWluKSBzYW1wbGVfbWluID0g
c2FtcGxlOworICAgIH0KKyAgICBBQlNMX0lOVEVSTkFMX0xPRyhJTkZPLAorICAgICAgICAgICAg
ICAgICAgICAgIGFic2w6OlN0ckNhdCgiUmFuZ2U6ICIsICtzYW1wbGVfbWluLCAiLCAiLCArc2Ft
cGxlX21heCkpOworICB9Cit9CisKK2NsYXNzIFppcGZNb2RlbCB7CisgcHVibGljOgorICBaaXBm
TW9kZWwoc2l6ZV90IGssIGRvdWJsZSBxLCBkb3VibGUgdikgOiBrXyhrKSwgcV8ocSksIHZfKHYp
IHt9CisKKyAgZG91YmxlIG1lYW4oKSBjb25zdCB7IHJldHVybiBtZWFuXzsgfQorCisgIC8vIEZv
ciB0aGUgb3RoZXIgbW9tZW50cyBvZiB0aGUgWmlwZiBkaXN0cmlidXRpb24sIHNlZSwgZm9yIGV4
YW1wbGUsCisgIC8vIGh0dHA6Ly9tYXRod29ybGQud29sZnJhbS5jb20vWmlwZkRpc3RyaWJ1dGlv
bi5odG1sCisKKyAgLy8gUE1GKGspID0gKDEgLyBrXnMpIC8gSChOLHMpCisgIC8vIFJldHVybnMg
dGhlIHByb2JhYmlsaXR5IHRoYXQgYW55IHNpbmdsZSBpbnZvY2F0aW9uIHJldHVybnMgay4KKyAg
ZG91YmxlIFBNRihzaXplX3QgaSkgeyByZXR1cm4gaSA+PSBobnFfLnNpemUoKSA/IDAuMCA6IGhu
cV9baV0gLyBzdW1faG5xXzsgfQorCisgIC8vIENERiA9IEgoaywgcykgLyBIKE4scykKKyAgZG91
YmxlIENERihzaXplX3QgaSkgeworICAgIGlmIChpID49IGhucV8uc2l6ZSgpKSB7CisgICAgICBy
ZXR1cm4gMS4wOworICAgIH0KKyAgICBhdXRvIGl0ID0gc3RkOjpiZWdpbihobnFfKTsKKyAgICBk
b3VibGUgaCA9IDAuMDsKKyAgICBmb3IgKGNvbnN0IGF1dG8gZW5kID0gaXQ7IGl0ICE9IGVuZDsg
aXQrKykgeworICAgICAgaCArPSAqaXQ7CisgICAgfQorICAgIHJldHVybiBoIC8gc3VtX2hucV87
CisgIH0KKworICAvLyBUaGUgSW52ZXJzZUNERiByZXR1cm5zIHRoZSBrIHZhbHVlcyB3aGljaCBi
b3VuZCBwIG9uIHRoZSB1cHBlciBhbmQgbG93ZXIKKyAgLy8gYm91bmQuIFNpbmNlIHRoZXJlIGlz
IG5vIGNsb3NlZC1mb3JtIHNvbHV0aW9uLCB0aGlzIGlzIGltcGxlbWVudGVkIGFzIGEKKyAgLy8g
YmlzY3Rpb24gb2YgdGhlIGNkZi4KKyAgc3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90PiBJbnZlcnNl
Q0RGKGRvdWJsZSBwKSB7CisgICAgc2l6ZV90IG1pbiA9IDA7CisgICAgc2l6ZV90IG1heCA9IGhu
cV8uc2l6ZSgpOworICAgIHdoaWxlIChtYXggPiBtaW4gKyAxKSB7CisgICAgICBzaXplX3QgdGFy
Z2V0ID0gKG1heCArIG1pbikgPj4gMTsKKyAgICAgIGRvdWJsZSB4ID0gQ0RGKHRhcmdldCk7Cisg
ICAgICBpZiAoeCA+IHApIHsKKyAgICAgICAgbWF4ID0gdGFyZ2V0OworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgbWluID0gdGFyZ2V0OworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ge21pbiwg
bWF4fTsKKyAgfQorCisgIC8vIENvbXB1dGUgdGhlIHByb2JhYmlsaXR5IHRvdGFscywgd2hpY2gg
YXJlIGJhc2VkIG9uIHRoZSBnZW5lcmFsaXplZCBoYXJtb25pYworICAvLyBudW1iZXIsIEgoTixz
KS4KKyAgLy8gICBIKE4scykgPT0gU1VNKGs9MS4uTiwgMSAvIGtecykKKyAgLy8KKyAgLy8gSW4g
dGhlIGxpbWl0LCBIKE4scykgPT0gemV0YWMocykgKyAxLgorICAvLworICAvLyBOT1RFOiBUaGUg
bWVhbiBvZiBhIHppcGYgZGlzdHJpYnV0aW9uIGNvdWxkIGJlIGNvbXB1dGVkIGhlcmUgYXMgd2Vs
bC4KKyAgLy8gTWVhbiA6PSAgSChOLCBzLTEpIC8gSChOLHMpLgorICAvLyBHaXZlbiB0aGUgcGFy
YW1ldGVyIHYgPSAxLCB0aGlzIGdpdmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb246CisgIC8vIChI
bigxMDAsIDEpIC0gSG4oMSwxKSkgLyAoSG4oMTAwLDIpIC0gSG4oMSwyKSkgPSA2LjU5NDQKKyAg
Ly8KKyAgdm9pZCBJbml0KCkgeworICAgIGlmICghaG5xXy5lbXB0eSgpKSB7CisgICAgICByZXR1
cm47CisgICAgfQorICAgIGhucV8uY2xlYXIoKTsKKyAgICBobnFfLnJlc2VydmUoc3RkOjptaW4o
a18sIHNpemVfdHsxMDAwfSkpOworCisgICAgc3VtX2hucV8gPSAwOworICAgIGRvdWJsZSBxbTEg
PSBxXyAtIDEuMDsKKyAgICBkb3VibGUgc3VtX2hucV9tMSA9IDA7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBrXzsgaSsrKSB7CisgICAgICAvLyBQYXJ0aWFsIG4tdGggZ2VuZXJhbGl6ZWQg
aGFybW9uaWMgbnVtYmVyCisgICAgICBjb25zdCBkb3VibGUgeCA9IHZfICsgaTsKKworICAgICAg
Ly8gSChuLCBxLTEpCisgICAgICBjb25zdCBkb3VibGUgaG5xbTEgPQorICAgICAgICAgIChxXyA9
PSAyLjApID8gKDEuMCAvIHgpCisgICAgICAgICAgICAgICAgICAgICAgOiAocV8gPT0gMy4wKSA/
ICgxLjAgLyAoeCAqIHgpKSA6IHN0ZDo6cG93KHgsIC1xbTEpOworICAgICAgc3VtX2hucV9tMSAr
PSBobnFtMTsKKworICAgICAgLy8gSChuLCBxKQorICAgICAgY29uc3QgZG91YmxlIGhucSA9Cisg
ICAgICAgICAgKHFfID09IDIuMCkgPyAoMS4wIC8gKHggKiB4KSkKKyAgICAgICAgICAgICAgICAg
ICAgICA6IChxXyA9PSAzLjApID8gKDEuMCAvICh4ICogeCAqIHgpKSA6IHN0ZDo6cG93KHgsIC1x
Xyk7CisgICAgICBzdW1faG5xXyArPSBobnE7CisgICAgICBobnFfLnB1c2hfYmFjayhobnEpOwor
ICAgICAgaWYgKGkgPiAxMDAwICYmIGhucSA8PSAxZS0xMCkgeworICAgICAgICAvLyBUaGUgaGFy
bW9uaWMgbnVtYmVyIGlzIHRvbyBzbWFsbC4KKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAg
fQorICAgIGFzc2VydChzdW1faG5xXyA+IDApOworICAgIG1lYW5fID0gc3VtX2hucV9tMSAvIHN1
bV9obnFfOworICB9CisKKyBwcml2YXRlOgorICBjb25zdCBzaXplX3Qga187CisgIGNvbnN0IGRv
dWJsZSBxXzsKKyAgY29uc3QgZG91YmxlIHZfOworCisgIGRvdWJsZSBtZWFuXzsKKyAgc3RkOjp2
ZWN0b3I8ZG91YmxlPiBobnFfOworICBkb3VibGUgc3VtX2hucV87Cit9OworCit1c2luZyB6aXBm
X3U2NCA9IGFic2w6OnppcGZfZGlzdHJpYnV0aW9uPHVpbnQ2NF90PjsKKworY2xhc3MgWmlwZlRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx6aXBmX3U2NDo6cGFyYW1fdHlwZT4s
CisgICAgICAgICAgICAgICAgIHB1YmxpYyBaaXBmTW9kZWwgeworIHB1YmxpYzoKKyAgWmlwZlRl
c3QoKSA6IFppcGZNb2RlbChHZXRQYXJhbSgpLmsoKSwgR2V0UGFyYW0oKS5xKCksIEdldFBhcmFt
KCkudigpKSB7fQorCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZ187Cit9OworCitURVNUX1Ao
WmlwZlRlc3QsIENoaVNxdWFyZWRUZXN0KSB7CisgIGNvbnN0IGF1dG8mIHBhcmFtID0gR2V0UGFy
YW0oKTsKKyAgSW5pdCgpOworCisgIHNpemVfdCB0cmlhbHMgPSAxMDAwMDsKKworICAvLyBGaW5k
IHRoZSBzcGxpdC1wb2ludHMgZm9yIHRoZSBidWNrZXRzLgorICBzdGQ6OnZlY3RvcjxzaXplX3Q+
IHBvaW50czsKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBleHBlY3RlZDsKKyAgeworICAgIGRvdWJs
ZSBsYXN0X2NkZiA9IDAuMDsKKyAgICBkb3VibGUgbWluX3AgPSAxLjA7CisgICAgZm9yIChkb3Vi
bGUgcCA9IDAuMDE7IHAgPCAxLjA7IHAgKz0gMC4wMSkgeworICAgICAgYXV0byB4ID0gSW52ZXJz
ZUNERihwKTsKKyAgICAgIGlmIChwb2ludHMuZW1wdHkoKSB8fCBwb2ludHMuYmFjaygpIDwgeC5z
ZWNvbmQpIHsKKyAgICAgICAgY29uc3QgZG91YmxlIHAgPSBDREYoeC5zZWNvbmQpOworICAgICAg
ICBwb2ludHMucHVzaF9iYWNrKHguc2Vjb25kKTsKKyAgICAgICAgZG91YmxlIHEgPSBwIC0gbGFz
dF9jZGY7CisgICAgICAgIGV4cGVjdGVkLnB1c2hfYmFjayhxKTsKKyAgICAgICAgbGFzdF9jZGYg
PSBwOworICAgICAgICBpZiAocSA8IG1pbl9wKSB7CisgICAgICAgICAgbWluX3AgPSBxOworICAg
ICAgICB9CisgICAgICB9CisgICAgfQorICAgIGlmIChsYXN0X2NkZiA8IDAuOTk5KSB7CisgICAg
ICBwb2ludHMucHVzaF9iYWNrKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwor
ICAgICAgZG91YmxlIHEgPSAxLjAgLSBsYXN0X2NkZjsKKyAgICAgIGV4cGVjdGVkLnB1c2hfYmFj
ayhxKTsKKyAgICAgIGlmIChxIDwgbWluX3ApIHsKKyAgICAgICAgbWluX3AgPSBxOworICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICBwb2ludHMuYmFjaygpID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKTsKKyAgICAgIGV4cGVjdGVkLmJhY2soKSArPSAoMS4wIC0gbGFzdF9j
ZGYpOworICAgIH0KKyAgICAvLyBUaGUgQ2hpLVNxdWFyZWQgc2NvcmUgaXMgbm90IGNvbXBsZXRl
bHkgc2NhbGUtaW52YXJpYW50OyBpdCB3b3JrcyBiZXN0CisgICAgLy8gd2hlbiB0aGUgc21hbGwg
dmFsdWVzIGFyZSBpbiB0aGUgc21hbGwgZGlnaXRzLgorICAgIHRyaWFscyA9IHN0YXRpY19jYXN0
PHNpemVfdD4oOC4wIC8gbWluX3ApOworICB9CisgIEFTU0VSVF9HVChwb2ludHMuc2l6ZSgpLCAw
KTsKKworICAvLyBHZW5lcmF0ZSBuIHZhcmlhdGVzIGFuZCBmaWxsIHRoZSBjb3VudHMgdmVjdG9y
IHdpdGggdGhlIGNvdW50IG9mIHRoZWlyCisgIC8vIG9jY3VycmVuY2VzLgorICBzdGQ6OnZlY3Rv
cjxpbnQ2NF90PiBidWNrZXRzKHBvaW50cy5zaXplKCksIDApOworICBkb3VibGUgYXZnID0gMDsK
KyAgeworICAgIHppcGZfdTY0IGRpcyhwYXJhbSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB0cmlhbHM7IGkrKykgeworICAgICAgdWludDY0X3QgeCA9IGRpcyhybmdfKTsKKyAgICAgIEFT
U0VSVF9MRSh4LCBkaXMubWF4KCkpOworICAgICAgQVNTRVJUX0dFKHgsIGRpcy5taW4oKSk7Cisg
ICAgICBhdmcgKz0gc3RhdGljX2Nhc3Q8ZG91YmxlPih4KTsKKyAgICAgIGF1dG8gaXQgPSBzdGQ6
OnVwcGVyX2JvdW5kKHN0ZDo6YmVnaW4ocG9pbnRzKSwgc3RkOjplbmQocG9pbnRzKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oeCkpOworICAg
ICAgYnVja2V0c1tzdGQ6OmRpc3RhbmNlKHN0ZDo6YmVnaW4ocG9pbnRzKSwgaXQpXSsrOworICAg
IH0KKyAgICBhdmcgPSBhdmcgLyBzdGF0aWNfY2FzdDxkb3VibGU+KHRyaWFscyk7CisgIH0KKwor
ICAvLyBWYWxpZGF0ZSB0aGUgb3V0cHV0IHVzaW5nIHRoZSBDaGktU3F1YXJlZCB0ZXN0LgorICBm
b3IgKGF1dG8mIGUgOiBleHBlY3RlZCkgeworICAgIGUgKj0gdHJpYWxzOworICB9CisKKyAgLy8g
VGhlIG51bGwtaHlwb3RoZXNpcyBpcyB0aGF0IHRoZSBkaXN0cmlidXRpb24gaXMgYSBwb2lzc29u
IGRpc3RyaWJ1dGlvbiB3aXRoCisgIC8vIHRoZSBwcm92aWRlZCBtZWFuIChub3QgZXN0aW1hdGVk
IGZyb20gdGhlIGRhdGEpLgorICBjb25zdCBpbnQgZG9mID0gc3RhdGljX2Nhc3Q8aW50PihleHBl
Y3RlZC5zaXplKCkpIC0gMTsKKworICAvLyBOT1RFOiBUaGlzIHRlc3QgcnVucyBhYm91dCAxNXgg
cGVyIGludm9jYXRpb24sIHNvIGEgdmFsdWUgb2YgMC45OTk1IGlzCisgIC8vIGFwcHJveGltYXRl
bHkgY29ycmVjdCBmb3IgYSB0ZXN0IHN1aXRlIGZhaWx1cmUgcmF0ZSBvZiAxIGluIDEwMC4gIElu
CisgIC8vIHByYWN0aWNlIHdlIHNlZSBmYWlsdXJlcyBzbGlnaHRseSBoaWdoZXIgdGhhbiB0aGF0
LgorICBjb25zdCBkb3VibGUgdGhyZXNob2xkID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlT
cXVhcmVWYWx1ZShkb2YsIDAuOTk5OSk7CisKKyAgY29uc3QgZG91YmxlIGNoaV9zcXVhcmUgPSBh
YnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZSgKKyAgICAgIHN0ZDo6YmVnaW4oYnVja2V0
cyksIHN0ZDo6ZW5kKGJ1Y2tldHMpLCBzdGQ6OmJlZ2luKGV4cGVjdGVkKSwKKyAgICAgIHN0ZDo6
ZW5kKGV4cGVjdGVkKSk7CisKKyAgY29uc3QgZG91YmxlIHBfYWN0dWFsID0KKyAgICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlUFZhbHVlKGNoaV9zcXVhcmUsIGRvZik7CisKKyAg
Ly8gTG9nIGlmIHRoZSBjaGlfc3F1YXJlZCB2YWx1ZSBpcyBhYm92ZSB0aGUgdGhyZXNob2xkLgor
ICBpZiAoY2hpX3NxdWFyZSA+IHRocmVzaG9sZCkgeworICAgIEFCU0xfSU5URVJOQUxfTE9HKElO
Rk8sICJ2YWx1ZXMiKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4cGVjdGVkLnNpemUo
KTsgaSsrKSB7CisgICAgICBBQlNMX0lOVEVSTkFMX0xPRyhJTkZPLCBhYnNsOjpTdHJDYXQocG9p
bnRzW2ldLCAiOiAiLCBidWNrZXRzW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgdnMuIEU9IiwgZXhwZWN0ZWRbaV0pKTsKKyAgICB9CisgICAgQUJTTF9J
TlRFUk5BTF9MT0coSU5GTywgYWJzbDo6U3RyQ2F0KCJ0cmlhbHMgIiwgdHJpYWxzKSk7CisgICAg
QUJTTF9JTlRFUk5BTF9MT0coSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTdHJD
YXQoIm1lYW4gIiwgYXZnLCAiIHZzLiBleHBlY3RlZCAiLCBtZWFuKCkpKTsKKyAgICBBQlNMX0lO
VEVSTkFMX0xPRyhJTkZPLCBhYnNsOjpTdHJDYXQoa0NoaVNxdWFyZWQsICIoZGF0YSwgIiwgZG9m
LCAiKSA9ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaV9z
cXVhcmUsICIgKCIsIHBfYWN0dWFsLCAiKSIpKTsKKyAgICBBQlNMX0lOVEVSTkFMX0xPRyhJTkZP
LAorICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlN0ckNhdChrQ2hpU3F1YXJlZCwgIiBAIDAu
OTk5NSA9ICIsIHRocmVzaG9sZCkpOworICAgIEZBSUwoKSA8PCBrQ2hpU3F1YXJlZCA8PCAiIHZh
bHVlIG9mICIgPDwgY2hpX3NxdWFyZQorICAgICAgICAgICA8PCAiIGlzIGFib3ZlIHRoZSB0aHJl
c2hvbGQuIjsKKyAgfQorfQorCitzdGQ6OnZlY3Rvcjx6aXBmX3U2NDo6cGFyYW1fdHlwZT4gR2Vu
UGFyYW1zKCkgeworICB1c2luZyBwYXJhbSA9IHppcGZfdTY0OjpwYXJhbV90eXBlOworICBjb25z
dCBhdXRvIGsgPSBwYXJhbSgpLmsoKTsKKyAgY29uc3QgYXV0byBxID0gcGFyYW0oKS5xKCk7Cisg
IGNvbnN0IGF1dG8gdiA9IHBhcmFtKCkudigpOworICBjb25zdCB1aW50NjRfdCBrMiA9IDEgPDwg
MTA7CisgIHJldHVybiBzdGQ6OnZlY3Rvcjx6aXBmX3U2NDo6cGFyYW1fdHlwZT57CisgICAgICAv
LyBEZWZhdWx0CisgICAgICBwYXJhbShrLCBxLCB2KSwKKyAgICAgIC8vIHZhcnkgSworICAgICAg
cGFyYW0oNCwgcSwgdiksIHBhcmFtKDEgPDwgNCwgcSwgdiksIHBhcmFtKGsyLCBxLCB2KSwKKyAg
ICAgIC8vIHZhcnkgVgorICAgICAgcGFyYW0oazIsIHEsIDAuNSksIHBhcmFtKGsyLCBxLCAxLjUp
LCBwYXJhbShrMiwgcSwgMi41KSwgcGFyYW0oazIsIHEsIDEwKSwKKyAgICAgIC8vIHZhcnkgUQor
ICAgICAgcGFyYW0oazIsIDEuNSwgdiksIHBhcmFtKGsyLCAzLCB2KSwgcGFyYW0oazIsIDUsIHYp
LCBwYXJhbShrMiwgMTAsIHYpLAorICAgICAgLy8gVmFyeSBWICYgUQorICAgICAgcGFyYW0oazIs
IDEuNSwgMC41KSwgcGFyYW0oazIsIDMsIDEuNSksIHBhcmFtKGssIDEwLCAxMCl9OworfQorCitz
dGQ6OnN0cmluZyBQYXJhbU5hbWUoCisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZv
PHppcGZfdTY0OjpwYXJhbV90eXBlPiYgaW5mbykgeworICBjb25zdCBhdXRvJiBwID0gaW5mby5w
YXJhbTsKKyAgc3RkOjpzdHJpbmcgbmFtZSA9IGFic2w6OlN0ckNhdCgia18iLCBwLmsoKSwgIl9f
cV8iLCBhYnNsOjpTaXhEaWdpdHMocC5xKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJfX3ZfIiwgYWJzbDo6U2l4RGlnaXRzKHAudigpKSk7CisgIHJldHVybiBhYnNsOjpT
dHJSZXBsYWNlQWxsKG5hbWUsIHt7IisiLCAiXyJ9LCB7Ii0iLCAiXyJ9LCB7Ii4iLCAiXyJ9fSk7
Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUChBbGwsIFppcGZUZXN0LCA6OnRlc3Rpbmc6
OlZhbHVlc0luKEdlblBhcmFtcygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU5h
bWUpOworCisvLyBOT1RFOiBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbiBpcyBub3QgZ3VhcmFudGVl
ZCB0byBiZSBzdGFibGUuCitURVNUKFppcGZEaXN0cmlidXRpb25UZXN0LCBTdGFiaWxpdHlUZXN0
KSB7CisgIC8vIGFic2w6OnppcGZfZGlzdHJpYnV0aW9uIHN0YWJpbGl0eSByZWxpZXMgb24KKyAg
Ly8gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbiwgc3RkOjpsb2csIHN0ZDo6ZXhwLCBz
dGQ6OmxvZzFwCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKAor
ICAgICAgezB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHhGRkNFQTUwRkRCMkY5NTNCdWxsLCAweEMz
MzJEREVGQkU2QzVBQTV1bGwsCisgICAgICAgMHg2NTU4MjE4NTY4QUI5NzAydWxsLCAweDJBRUY3
REFENUI2RTJGODR1bGwsIDB4MTUyMUI2MjgyOTA3NjE3MHVsbCwKKyAgICAgICAweEVDREQ0Nzc1
NjE5RjE1MTB1bGwsIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbCwgMHgwMzM0RkUxRUFBMDM2M0NGdWxs
LAorICAgICAgIDB4QjU3MzVDOTA0QzcwQTIzOXVsbCwgMHhENTlFOUUwQkNCQUFERTE0dWxsLCAw
eEVFQ0M4NkJDNjA2MjJDQTd1bGx9KTsKKworICBzdGQ6OnZlY3RvcjxpbnQ+IG91dHB1dCgxMCk7
CisKKyAgeworICAgIGFic2w6OnppcGZfZGlzdHJpYnV0aW9uPGludDMyX3Q+IGRpc3Q7CisgICAg
c3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91dHB1dCksIHN0ZDo6ZW5kKG91dHB1dCksCisgICAg
ICAgICAgICAgICAgICBbJl0geyByZXR1cm4gZGlzdCh1cmJnKTsgfSk7CisgICAgRVhQRUNUX1RI
QVQob3V0cHV0LCBFbGVtZW50c0FyZSgxMDAzMSwgMCwgMCwgMywgNiwgMCwgNywgNDcsIDAsIDAp
KTsKKyAgfQorICB1cmJnLnJlc2V0KCk7CisgIHsKKyAgICBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlv
bjxpbnQzMl90PiBkaXN0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zKTsKKyAgICBzdGQ6Omdl
bmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwKKyAgICAgICAgICAg
ICAgICAgIFsmXSB7IHJldHVybiBkaXN0KHVyYmcpOyB9KTsKKyAgICBFWFBFQ1RfVEhBVChvdXRw
dXQsIEVsZW1lbnRzQXJlKDQ0LCAwLCAwLCAwLCAwLCAxLCAwLCAxLCAzLCAwKSk7CisgIH0KK30K
KworVEVTVChaaXBmRGlzdHJpYnV0aW9uVGVzdCwgQWxnb3JpdGhtQm91bmRzKSB7CisgIGFic2w6
OnppcGZfZGlzdHJpYnV0aW9uPGludDMyX3Q+IGRpc3Q7CisKKyAgLy8gU21hbGwgdmFsdWVzIGZy
b20gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbiBtYXAgdG8gbGFyZ2VyIFppcGYKKyAg
Ly8gZGlzdHJpYnV0aW9uIHZhbHVlcy4KKyAgY29uc3Qgc3RkOjpwYWlyPHVpbnQ2NF90LCBpbnQz
Ml90PiBrSW5wdXRzW10gPSB7CisgICAgICB7MHhmZmZmZmZmZmZmZmZmZmZmLCAweDB9LCB7MHg3
ZmZmZmZmZmZmZmZmZmZmLCAweDB9LAorICAgICAgezB4M2ZmZmZmZmZmZmZmZmZmYiwgMHgxfSwg
ezB4MWZmZmZmZmZmZmZmZmZmZCwgMHg0fSwKKyAgICAgIHsweGZmZmZmZmZmZmZmZmZmZSwgMHg5
fSwgIHsweDdmZmZmZmZmZmZmZmZmZiwgMHgxMn0sCisgICAgICB7MHgzZmZmZmZmZmZmZmZmZmYs
IDB4MjV9LCB7MHgxZmZmZmZmZmZmZmZmZmYsIDB4NGN9LAorICAgICAgezB4ZmZmZmZmZmZmZmZm
ZmYsIDB4OTl9LCAgezB4N2ZmZmZmZmZmZmZmZmYsIDB4MTMyfSwKKyAgICAgIHsweDNmZmZmZmZm
ZmZmZmZmLCAweDI2NX0sIHsweDFmZmZmZmZmZmZmZmZmLCAweDRjY30sCisgICAgICB7MHhmZmZm
ZmZmZmZmZmZmLCAweDk5OX0sICB7MHg3ZmZmZmZmZmZmZmZmLCAweDEzMzJ9LAorICAgICAgezB4
M2ZmZmZmZmZmZmZmZiwgMHgyNjY1fSwgezB4MWZmZmZmZmZmZmZmZiwgMHg0Y2NjfSwKKyAgICAg
IHsweGZmZmZmZmZmZmZmZiwgMHg5OTk4fSwgIHsweDdmZmZmZmZmZmZmZiwgMHgxMzMyZn0sCisg
ICAgICB7MHgzZmZmZmZmZmZmZmYsIDB4MjY2NWF9LCB7MHgxZmZmZmZmZmZmZmYsIDB4NGNjOWV9
LAorICAgICAgezB4ZmZmZmZmZmZmZmYsIDB4OTk4ZTB9LCAgezB4N2ZmZmZmZmZmZmYsIDB4MTMz
MDUxfSwKKyAgICAgIHsweDNmZmZmZmZmZmZmLCAweDI2NWFlNH0sIHsweDFmZmZmZmZmZmZmLCAw
eDRjOWVkM30sCisgICAgICB7MHhmZmZmZmZmZmZmLCAweDk4ZTIyM30sICB7MHg3ZmZmZmZmZmZm
LCAweDEzMDU4YzR9LAorICAgICAgezB4M2ZmZmZmZmZmZiwgMHgyNWIxNzhlfSwgezB4MWZmZmZm
ZmZmZiwgMHg0YTA2MmIyfSwKKyAgICAgIHsweGZmZmZmZmZmZiwgMHg4ZWUyM2I4fSwgIHsweDdm
ZmZmZmZmZiwgMHgxMGIyMTY0Mn0sCisgICAgICB7MHgzZmZmZmZmZmYsIDB4MWQ4OWQ4OWR9LCB7
MHgxZmZmZmZmZmYsIDB4MmZmZmZmZmZ9LAorICAgICAgezB4ZmZmZmZmZmYsIDB4NDVkMTc0NWR9
LCAgezB4N2ZmZmZmZmYsIDB4NWE1YTVhNWF9LAorICAgICAgezB4M2ZmZmZmZmYsIDB4NjllZTU4
NDZ9LCAgezB4MWZmZmZmZmYsIDB4NzNlY2FkZTN9LAorICAgICAgezB4ZmZmZmZmZiwgMHg3OWE5
ZDI2MH0sICAgezB4N2ZmZmZmZiwgMHg3Y2MwNTMyYn0sCisgICAgICB7MHgzZmZmZmZmLCAweDdl
NWFkMTQ2fSwgICB7MHgxZmZmZmZmLCAweDdmMmMwYmVjfSwKKyAgICAgIHsweGZmZmZmZiwgMHg3
Zjk1YWRlZn0sICAgIHsweDdmZmZmZiwgMHg3ZmNhYzBkYX0sCisgICAgICB7MHgzZmZmZmYsIDB4
N2ZlNTVhZTJ9LCAgICB7MHgxZmZmZmYsIDB4N2ZmMmFjMGV9LAorICAgICAgezB4ZmZmZmYsIDB4
N2ZmOTU1YWV9LCAgICAgezB4N2ZmZmYsIDB4N2ZmY2FhYzF9LAorICAgICAgezB4M2ZmZmYsIDB4
N2ZmZTU1NWJ9LCAgICAgezB4MWZmZmYsIDB4N2ZmZjJhYWN9LAorICAgICAgezB4ZmZmZiwgMHg3
ZmZmOTU1Nn0sICAgICAgezB4N2ZmZiwgMHg3ZmZmY2FhYn0sCisgICAgICB7MHgzZmZmLCAweDdm
ZmZlNTU1fSwgICAgICB7MHgxZmZmLCAweDdmZmZmMmFifSwKKyAgICAgIHsweGZmZiwgMHg3ZmZm
Zjk1NX0sICAgICAgIHsweDdmZiwgMHg3ZmZmZmNhYn0sCisgICAgICB7MHgzZmYsIDB4N2ZmZmZl
NTV9LCAgICAgICB7MHgxZmYsIDB4N2ZmZmZmMmJ9LAorICAgICAgezB4ZmYsIDB4N2ZmZmZmOTV9
LCAgICAgICAgezB4N2YsIDB4N2ZmZmZmY2J9LAorICAgICAgezB4M2YsIDB4N2ZmZmZmZTV9LCAg
ICAgICAgezB4MWYsIDB4N2ZmZmZmZjN9LAorICAgICAgezB4ZiwgMHg3ZmZmZmZmOX0sICAgICAg
ICAgezB4NywgMHg3ZmZmZmZmZH0sCisgICAgICB7MHgzLCAweDdmZmZmZmZlfSwgICAgICAgICB7
MHgxLCAweDdmZmZmZmZmfSwKKyAgfTsKKworICBmb3IgKGNvbnN0IGF1dG8mIGluc3RhbmNlIDog
a0lucHV0cykgeworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJn
KHtpbnN0YW5jZS5maXJzdH0pOworICAgIEVYUEVDVF9FUShpbnN0YW5jZS5zZWNvbmQsIGRpc3Qo
dXJiZykpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuYmF6ZWwKaW5kZXggNmQ3YzI2
MTlhNTMwZTAwMGY3NGVhMzExNWRmZDc5N2Q3MDIwNTRmZi4uMjA1MTFhMzU2ZDg5NDQ0YjYwM2Ux
N2U3MzljZmY5ZDEzNzcwNDUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5iYXpl
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmJhemVsCkBAIC01LDIxICs1LDIwIEBACiAjIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCiAjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAjIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwogCiBsb2FkKAotICAgICIvL2Fic2w6Y29wdHMuYnps
IiwKKyAgICAiLy9hYnNsOmNvcHRzL2NvbmZpZ3VyZV9jb3B0cy5iemwiLAogICAgICJBQlNMX0RF
RkFVTFRfQ09QVFMiLAotICAgICJBQlNMX1RFU1RfQ09QVFMiLAogICAgICJBQlNMX0VYQ0VQVElP
TlNfRkxBRyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwKKyAgICAiQUJT
TF9URVNUX0NPUFRTIiwKICkKIAogcGFja2FnZSgKQEAgLTQwNSw3ICs0MDQsNyBAQCBjY190ZXN0
KAogCiBjY190ZXN0KAogICAgIG5hbWUgPSAibnVtYmVyc190ZXN0IiwKLSAgICBzaXplID0gInNt
YWxsIiwKKyAgICBzaXplID0gIm1lZGl1bSIsCiAgICAgc3JjcyA9IFsKICAgICAgICAgImludGVy
bmFsL251bWJlcnNfdGVzdF9jb21tb24uaCIsCiAgICAgICAgICJudW1iZXJzX3Rlc3QuY2MiLApA
QCAtNDEzLDYgKzQxMiw3IEBAIGNjX3Rlc3QoCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CiAgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKICAgICBkZXBzID0g
WworICAgICAgICAiOnBvdzEwX2hlbHBlciIsCiAgICAgICAgICI6c3RyaW5ncyIsCiAgICAgICAg
ICIvL2Fic2wvYmFzZSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLApAQCAt
NDcxLDYgKzQ3MSw4IEBAIGNjX3Rlc3QoCiAgICAgc3JjcyA9IFsiY2hhcmNvbnZfdGVzdC5jYyJd
LAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAogICAgIGRlcHMgPSBbCisgICAgICAgICI6
cG93MTBfaGVscGVyIiwKKyAgICAgICAgIjpzdHJfZm9ybWF0IiwKICAgICAgICAgIjpzdHJpbmdz
IiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRl
c3QvLzpndGVzdF9tYWluIiwKQEAgLTU1NSw4ICs1NTcsOCBAQCBjY19saWJyYXJ5KAogICAgIHZp
c2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjpzdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCiAgICAgICAgICIv
L2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAotICAgICAgICAiLy9hYnNsL2NvbnRhaW5lcjppbmxp
bmVkX3ZlY3RvciIsCiAgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCiAgICAgICAg
ICIvL2Fic2wvbnVtZXJpYzppbnQxMjgiLAogICAgICAgICAiLy9hYnNsL3R5cGVzOnNwYW4iLApA
QCAtNjI2LDcgKzYyOCw3IEBAIGNjX3Rlc3QoCiAKIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJzdHJf
Zm9ybWF0X2NvbnZlcnRfdGVzdCIsCi0gICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc2l6ZSA9ICJt
ZWRpdW0iLAogICAgIHNyY3MgPSBbImludGVybmFsL3N0cl9mb3JtYXQvY29udmVydF90ZXN0LmNj
Il0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCiAgICAgdmlzaWJpbGl0eSA9IFsiLy92
aXNpYmlsaXR5OnByaXZhdGUiXSwKQEAgLTY1OSwzICs2NjEsMjMgQEAgY2NfdGVzdCgKICAgICAg
ICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBdLAogKQorCitj
Y19saWJyYXJ5KAorICAgIG5hbWUgPSAicG93MTBfaGVscGVyIiwKKyAgICB0ZXN0b25seSA9IFRy
dWUsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvcG93MTBfaGVscGVyLmNjIl0sCisgICAgaGRycyA9
IFsiaW50ZXJuYWwvcG93MTBfaGVscGVyLmgiXSwKKyAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2li
aWxpdHk6cHJpdmF0ZSJdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAicG93MTBfaGVscGVy
X3Rlc3QiLAorICAgIHNyY3MgPSBbImludGVybmFsL3BvdzEwX2hlbHBlcl90ZXN0LmNjIl0sCisg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmls
aXR5OnByaXZhdGUiXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOnBvdzEwX2hlbHBlciIsCisg
ICAgICAgICI6c3RyX2Zvcm1hdCIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQu
Z24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmduCmluZGV4IDIwYWY4M2MwZTUxOGI2NTBlYjJlODk5
ZDNlN2IzYzllZmU3YzEwOGIuLmZjMWQ5NTYyNzc3MjMyNjEyNDNlNDM0MzViYmU2ZmQ0OGQ4Nzgw
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9CVUlMRC5nbgpAQCAtNCwxMSArNCwxOSBAQAogCiBpbXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVz
L2J1aWxkLmduaSIpCiAKKyMgVXNhZ2Ugb2YgQWJzZWlsIGluIENocm9taXVtIGlzIGd1YXJkZWQg
YnkgYW4gZXhwbGljaXQgb3B0LWluIGxpc3QsIGJlZm9yZQorIyBhZGRpbmcgcHJvamVjdHMgdG8g
dGhpcyBsaXN0IHBsZWFzZSByZWFjaCBvdXQgdG8gY3h4QGNocm9taXVtLm9yZyBhbmQgQ0M6Cisj
IC0gaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvT1dORVJTCisjCisjIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGF0OgorIyBo
dHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFEZ1MxLUEzcnpib1RManBmNG0xc3Fr
SmdXam5ZX1J1MmRva2sxWDF2QkRVCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICB2aXNp
YmlsaXR5ID0gWworICAgICIvL2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS93
ZWJydGMvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKICAgICAiLy90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9vcGVuc2NyZWVu
LyoiLAogICBdCiB9IGVsc2UgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQpAQCAtMTM3LDEwICsx
NDUsMjggQEAgc291cmNlX3NldCgic3RyX2Zvcm1hdF9pbnRlcm5hbCIpIHsKICAgdmlzaWJpbGl0
eSArPSBbICI6KiIgXQogICBkZXBzID0gWwogICAgICI6c3RyaW5ncyIsCisgICAgIi4uL2Jhc2U6
Y29uZmlnIiwKICAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAotICAgICIuLi9jb250YWluZXI6
aW5saW5lZF92ZWN0b3IiLAogICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKICAgICAiLi4vbnVt
ZXJpYzppbnQxMjgiLAogICAgICIuLi90eXBlczpzcGFuIiwKICAgXQogfQorCitzb3VyY2Vfc2V0
KCJwb3cxMF9oZWxwZXIiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisg
ICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVi
bGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2Nv
bmZpZyIgXQorICBzb3VyY2VzID0gWworICAgICJpbnRlcm5hbC9wb3cxMF9oZWxwZXIuY2MiLAor
ICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvcG93MTBfaGVscGVyLmgiLAorICBdCisg
IHZpc2liaWxpdHkgPSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIjoqIiBdCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9DTWFrZUxpc3Rz
LnR4dAppbmRleCBmM2U0MTYyMzg3ZjE1YzgzMmQ3NTA2MmFkY2M2YjdlZDVkNWRhMTdhLi5lNjNl
ZWMxOTFmY2NlMTI1YmYxNTQ1MGIyMzdkNDAyMGQxZTIyNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQ01ha2VMaXN0cy50eHQK
QEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNCw0NTAgKzE0LDUwNyBAQAog
IyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICMKIAotCi1saXN0KEFQUEVORCBTVFJJ
TkdTX1BVQkxJQ19IRUFERVJTCi0gICJhc2NpaS5oIgotICAiY2hhcmNvbnYuaCIKLSAgImVzY2Fw
aW5nLmgiCi0gICJtYXRjaC5oIgotICAibnVtYmVycy5oIgotICAic3RyX2NhdC5oIgotICAic3Ry
aW5nX3ZpZXcuaCIKLSAgInN0cmlwLmgiCi0gICJzdHJfam9pbi5oIgotICAic3RyX3JlcGxhY2Uu
aCIKLSAgInN0cl9zcGxpdC5oIgotICAic3Vic3RpdHV0ZS5oIgotKQotCi0KLWxpc3QoQVBQRU5E
IFNUUklOR1NfSU5URVJOQUxfSEVBREVSUwotICAiaW50ZXJuYWwvY2hhcl9tYXAuaCIKLSAgImlu
dGVybmFsL2NoYXJjb252X2JpZ2ludC5oIgotICAiaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuaCIK
LSAgImludGVybmFsL21lbXV0aWwuaCIKLSAgImludGVybmFsL29zdHJpbmdzdHJlYW0uaCIKLSAg
ImludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkLmgiCi0gICJpbnRlcm5hbC9zdGxfdHlwZV90
cmFpdHMuaCIKLSAgImludGVybmFsL3N0cl9qb2luX2ludGVybmFsLmgiCi0gICJpbnRlcm5hbC9z
dHJfc3BsaXRfaW50ZXJuYWwuaCIKLSAgImludGVybmFsL3V0ZjguaCIKLSkKLQotCi0KLSMgYWRk
IHN0cmluZyBsaWJyYXJ5Ci1saXN0KEFQUEVORCBTVFJJTkdTX1NSQwotICAiYXNjaWkuY2MiCi0g
ICJjaGFyY29udi5jYyIKLSAgImVzY2FwaW5nLmNjIgotICAiaW50ZXJuYWwvY2hhcmNvbnZfYmln
aW50LmNjIgotICAiaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuY2MiCi0gICJpbnRlcm5hbC9tZW11
dGlsLmNjIgotICAiaW50ZXJuYWwvbWVtdXRpbC5oIgotICAiaW50ZXJuYWwvdXRmOC5jYyIKLSAg
ImludGVybmFsL29zdHJpbmdzdHJlYW0uY2MiCi0gICJtYXRjaC5jYyIKLSAgIm51bWJlcnMuY2Mi
Ci0gICJzdHJfY2F0LmNjIgotICAic3RyX3JlcGxhY2UuY2MiCi0gICJzdHJfc3BsaXQuY2MiCi0g
ICJzdHJpbmdfdmlldy5jYyIKLSAgInN1YnN0aXR1dGUuY2MiCi0gICR7U1RSSU5HU19QVUJMSUNf
SEVBREVSU30KLSAgJHtTVFJJTkdTX0lOVEVSTkFMX0hFQURFUlN9Ci0pCi1zZXQoU1RSSU5HU19Q
VUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbF90aHJvd19kZWxlZ2F0ZSkKLQotYWJzbF9s
aWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX3N0cmluZ3MKLSAgU09VUkNFUwotICAgICR7U1RS
SU5HU19TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1NUUklOR1NfUFVCTElDX0xJQlJB
UklFU30KLSAgRVhQT1JUX05BTUUKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQogICAgIHN0cmlu
Z3MKLSkKLQotIyBhZGQgc3RyX2Zvcm1hdCBsaWJyYXJ5Ci1hYnNsX2hlYWRlcl9saWJyYXJ5KAot
ICBUQVJHRVQKLSAgICBhYnNsX3N0cl9mb3JtYXQKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIHN0
cl9mb3JtYXRfaW50ZXJuYWwKLSAgRVhQT1JUX05BTUUKLSAgICBzdHJfZm9ybWF0Ci0pCi0KLSMg
c3RyX2Zvcm1hdF9pbnRlcm5hbAotYWJzbF9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBzdHJfZm9y
bWF0X2ludGVybmFsCi0gIFNPVVJDRVMKLSAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuY2Mi
Ci0gICAgImludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYyIKLSAgICAiaW50ZXJuYWwvc3RyX2Zv
cm1hdC9leHRlbnNpb24uY2MiCi0gICAgImludGVybmFsL3N0cl9mb3JtYXQvZmxvYXRfY29udmVy
c2lvbi5jYyIKLSAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuY2MiCi0gICAgImludGVy
bmFsL3N0cl9mb3JtYXQvcGFyc2VyLmNjIgotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5o
IgotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuaCIKLSAgICAiaW50ZXJuYWwvc3RyX2Zv
cm1hdC9jaGVja2VyLmgiCi0gICAgImludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmgiCi0g
ICAgImludGVybmFsL3N0cl9mb3JtYXQvZmxvYXRfY29udmVyc2lvbi5oIgotICAgICJpbnRlcm5h
bC9zdHJfZm9ybWF0L291dHB1dC5oIgotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5o
IgotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgc3RyX2Zvcm1hdF9leHRlbnNpb25faW50ZXJuYWwK
LSAgICBhYnNsOjpzdHJpbmdzCi0gICAgYWJzbDo6YmFzZQotICAgIGFic2w6Om51bWVyaWMKLSAg
ICBhYnNsOjpjb250YWluZXIKLSAgICBhYnNsOjpzcGFuCi0pCi0KLSMgc3RyX2Zvcm1hdF9leHRl
bnNpb25faW50ZXJuYWwKLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgc3RyX2Zvcm1hdF9l
eHRlbnNpb25faW50ZXJuYWwKLSAgU09VUkNFUwotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2V4
dGVuc2lvbi5jYyIKLSAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uaCIKLSAgICAi
aW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuY2MiCi0gICAgImludGVybmFsL3N0cl9mb3JtYXQv
b3V0cHV0LmgiCi0gIFBVQkxJQ19MSUJSQVJJRVMKKyAgSERSUworICAgICJhc2NpaS5oIgorICAg
ICJjaGFyY29udi5oIgorICAgICJlc2NhcGluZy5oIgorICAgICJtYXRjaC5oIgorICAgICJudW1i
ZXJzLmgiCisgICAgInN0cl9jYXQuaCIKKyAgICAic3RyX2pvaW4uaCIKKyAgICAic3RyX3JlcGxh
Y2UuaCIKKyAgICAic3RyX3NwbGl0LmgiCisgICAgInN0cmluZ192aWV3LmgiCisgICAgInN0cmlw
LmgiCisgICAgInN1YnN0aXR1dGUuaCIKKyAgU1JDUworICAgICJhc2NpaS5jYyIKKyAgICAiY2hh
cmNvbnYuY2MiCisgICAgImVzY2FwaW5nLmNjIgorICAgICJpbnRlcm5hbC9jaGFyY29udl9iaWdp
bnQuY2MiCisgICAgImludGVybmFsL2NoYXJjb252X2JpZ2ludC5oIgorICAgICJpbnRlcm5hbC9j
aGFyY29udl9wYXJzZS5jYyIKKyAgICAiaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuaCIKKyAgICAi
aW50ZXJuYWwvbWVtdXRpbC5jYyIKKyAgICAiaW50ZXJuYWwvbWVtdXRpbC5oIgorICAgICJpbnRl
cm5hbC9zdGxfdHlwZV90cmFpdHMuaCIKKyAgICAiaW50ZXJuYWwvc3RyX2pvaW5faW50ZXJuYWwu
aCIKKyAgICAiaW50ZXJuYWwvc3RyX3NwbGl0X2ludGVybmFsLmgiCisgICAgIm1hdGNoLmNjIgor
ICAgICJudW1iZXJzLmNjIgorICAgICJzdHJfY2F0LmNjIgorICAgICJzdHJfcmVwbGFjZS5jYyIK
KyAgICAic3RyX3NwbGl0LmNjIgorICAgICJzdHJpbmdfdmlldy5jYyIKKyAgICAic3Vic3RpdHV0
ZS5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFi
c2w6OnN0cmluZ3NfaW50ZXJuYWwKICAgICBhYnNsOjpiYXNlCi0gICAgYWJzbDo6c3RyaW5ncwot
KQotCi0jCi0jIyBURVNUUwotIwotCi0jIHRlc3QgbWF0Y2hfdGVzdAotc2V0KE1BVENIX1RFU1Rf
U1JDICJtYXRjaF90ZXN0LmNjIikKLXNldChNQVRDSF9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJz
bDo6c3RyaW5ncykKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKKyAgICBhYnNsOjpiaXRzCisgICAg
YWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZW5kaWFuCisg
ICAgYWJzbDo6dGhyb3dfZGVsZWdhdGUKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjp0eXBl
X3RyYWl0cworICAgIGFic2w6OmludDEyOAorICBQVUJMSUMKKykKKworYWJzbF9jY19saWJyYXJ5
KAorICBOQU1FCisgICAgc3RyaW5nc19pbnRlcm5hbAorICBIRFJTCisgICAgImludGVybmFsL2No
YXJfbWFwLmgiCisgICAgImludGVybmFsL29zdHJpbmdzdHJlYW0uaCIKKyAgICAiaW50ZXJuYWwv
cmVzaXplX3VuaW5pdGlhbGl6ZWQuaCIKKyAgICAiaW50ZXJuYWwvdXRmOC5oIgorICBTUkNTCisg
ICAgImludGVybmFsL29zdHJpbmdzdHJlYW0uY2MiCisgICAgImludGVybmFsL3V0ZjguY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb3Jl
X2hlYWRlcnMKKyAgICBhYnNsOjplbmRpYW4KKyAgICBhYnNsOjp0eXBlX3RyYWl0cworKQorCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBtYXRjaF90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke01B
VENIX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtNQVRDSF9URVNUX1BVQkxJ
Q19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAibWF0Y2hfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpi
YXNlCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBlc2NhcGluZ190ZXN0Ci1zZXQoRVND
QVBJTkdfVEVTVF9TUkMgImVzY2FwaW5nX3Rlc3QuY2MiKQotc2V0KEVTQ0FQSU5HX1RFU1RfUFVC
TElDX0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzIGFic2w6OmJhc2UpCi0KLWFic2xfdGVzdCgKLSAg
VEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBlc2NhcGluZ190ZXN0Ci0gIFNPVVJD
RVMKLSAgICAke0VTQ0FQSU5HX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtF
U0NBUElOR19URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAiZXNjYXBpbmdfdGVz
dC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6
OnN0cmluZ3MKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpmaXhlZF9hcnJheQor
ICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRlc3QgYXNjaWlfdGVzdAotc2V0KEFTQ0lJX1RFU1Rf
U1JDICJhc2NpaV90ZXN0LmNjIikKLXNldChBU0NJSV9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJz
bDo6c3RyaW5ncykKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQogICAgIGFzY2lpX3Rlc3QKLSAgU09VUkNFUwotICAgICR7QVNDSUlfVEVTVF9TUkN9Ci0gIFBV
QkxJQ19MSUJSQVJJRVMKLSAgICAke0FTQ0lJX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JD
UworICAgICJhc2NpaV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQor
ICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGdt
b2NrX21haW4KICkKIAotCi0jIHRlc3QgbWVtdXRpbF90ZXN0Ci1zZXQoTUVNVVRJTF9URVNUX1NS
QyAiaW50ZXJuYWwvbWVtdXRpbF90ZXN0LmNjIikKLXNldChNRU1VVElMX1RFU1RfUFVCTElDX0xJ
QlJBUklFUyBhYnNsOjpzdHJpbmdzKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190
ZXN0KAorICBOQU1FCiAgICAgbWVtdXRpbF90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke01FTVVUSUxf
VEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke01FTVVUSUxfVEVTVF9QVUJMSUNf
TElCUkFSSUVTfQorICBTUkNTCisgICAgImludGVybmFsL21lbXV0aWwuaCIKKyAgICAiaW50ZXJu
YWwvbWVtdXRpbF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGdtb2Nr
X21haW4KICkKIAotCi0jIHRlc3QgdXRmOF90ZXN0Ci1zZXQoVVRGOF9URVNUX1NSQyAiaW50ZXJu
YWwvdXRmOF90ZXN0LmNjIikKLXNldChVVEY4X1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpz
dHJpbmdzIGFic2w6OmJhc2UpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3Qo
CisgIE5BTUUKICAgICB1dGY4X3Rlc3QKLSAgU09VUkNFUwotICAgICR7VVRGOF9URVNUX1NSQ30K
LSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7VVRGOF9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Cisg
IFNSQ1MKKyAgICAiaW50ZXJuYWwvdXRmOF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5nc19pbnRlcm5hbAorICAgIGFic2w6
OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0
ZXN0IHN0cmluZ192aWV3X3Rlc3QKLXNldChTVFJJTkdfVklFV19URVNUX1NSQyAic3RyaW5nX3Zp
ZXdfdGVzdC5jYyIpCi1zZXQoU1RSSU5HX1ZJRVdfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6
OnN0cmluZ3MgYWJzbF90aHJvd19kZWxlZ2F0ZSBhYnNsOjpiYXNlKQotCi1hYnNsX3Rlc3QoCi0g
IFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3RyaW5nX3ZpZXdfdGVzdAotICBT
T1VSQ0VTCi0gICAgJHtTVFJJTkdfVklFV19URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwot
ICAgICR7U1RSSU5HX1ZJRVdfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgInN0
cmluZ192aWV3X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgICAg
JHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfRVhDRVBUSU9O
U19GTEFHX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OmNv
bmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmR5bmFtaWNfYW5ub3RhdGlv
bnMKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IHN1YnN0aXR1dGVfdGVzdAotc2V0KFNV
QlNUSVRVVEVfVEVTVF9TUkMgInN1YnN0aXR1dGVfdGVzdC5jYyIpCi1zZXQoU1VCU1RJVFVURV9U
RVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3RyaW5ncyBhYnNsOjpiYXNlKQotCi1hYnNsX3Rl
c3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3Vic3RpdHV0ZV90ZXN0
Ci0gIFNPVVJDRVMKLSAgICAke1NVQlNUSVRVVEVfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICAke1NVQlNUSVRVVEVfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAg
InN1YnN0aXR1dGVfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAg
REVQUworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBnbW9j
a19tYWluCiApCiAKLQotIyB0ZXN0IHN0cl9yZXBsYWNlX3Rlc3QKLXNldChTVFJfUkVQTEFDRV9U
RVNUX1NSQyAic3RyX3JlcGxhY2VfdGVzdC5jYyIpCi1zZXQoU1RSX1JFUExBQ0VfVEVTVF9QVUJM
SUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MgYWJzbDo6YmFzZSBhYnNsX3Rocm93X2RlbGVnYXRl
KQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3Ry
X3JlcGxhY2VfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtTVFJfUkVQTEFDRV9URVNUX1NSQ30KLSAg
UFVCTElDX0xJQlJBUklFUwotICAgICR7U1RSX1JFUExBQ0VfVEVTVF9QVUJMSUNfTElCUkFSSUVT
fQorICBTUkNTCisgICAgInN0cl9yZXBsYWNlX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNM
X1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ21vY2tfbWFpbgog
KQogCi0KLSMgdGVzdCBzdHJfc3BsaXRfdGVzdAotc2V0KFNUUl9TUExJVF9URVNUX1NSQyAic3Ry
X3NwbGl0X3Rlc3QuY2MiKQotc2V0KFNUUl9TUExJVF9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJz
bDo6c3RyaW5ncyBhYnNsOjpiYXNlIGFic2xfdGhyb3dfZGVsZWdhdGUpCi0KLWFic2xfdGVzdCgK
LSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBzdHJfc3BsaXRfdGVzdAotICBT
T1VSQ0VTCi0gICAgJHtTVFJfU1BMSVRfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAg
ICAke1NUUl9TUExJVF9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAic3RyX3Nw
bGl0X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAg
ICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycwor
ICAgIGFic2w6OmR5bmFtaWNfYW5ub3RhdGlvbnMKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0
ZXN0IG9zdHJpbmdzdHJlYW1fdGVzdAotc2V0KE9TVFJJTkdTVFJFQU1fVEVTVF9TUkMgImludGVy
bmFsL29zdHJpbmdzdHJlYW1fdGVzdC5jYyIpCi1zZXQoT1NUUklOR1NUUkVBTV9URVNUX1BVQkxJ
Q19MSUJSQVJJRVMgYWJzbDo6c3RyaW5ncykKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xf
Y2NfdGVzdCgKKyAgTkFNRQogICAgIG9zdHJpbmdzdHJlYW1fdGVzdAotICBTT1VSQ0VTCi0gICAg
JHtPU1RSSU5HU1RSRUFNX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtPU1RS
SU5HU1RSRUFNX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJpbnRlcm5hbC9v
c3RyaW5nc3RyZWFtX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpzdHJpbmdzX2ludGVybmFsCisgICAgZ21vY2tfbWFpbgogKQogCi0K
LSMgdGVzdCByZXNpemVfdW5pbml0aWFsaXplZF90ZXN0Ci1zZXQoUkVTSVpFX1VOSU5JVElBTEla
RURfVEVTVF9TUkMgImludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkX3Rlc3QuY2MiKQotCi1h
YnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgcmVzaXplX3Vu
aW5pdGlhbGl6ZWRfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtSRVNJWkVfVU5JTklUSUFMSVpFRF9U
RVNUX1NSQ30KKyAgU1JDUworICAgICJpbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5oIgor
ICAgICJpbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZF90ZXN0LmNjIgorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNv
cmVfaGVhZGVycworICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAgZ21vY2tfbWFpbgogKQogCi0K
LSMgdGVzdCBzdHJfam9pbl90ZXN0Ci1zZXQoU1RSX0pPSU5fVEVTVF9TUkMgInN0cl9qb2luX3Rl
c3QuY2MiKQotc2V0KFNUUl9KT0lOX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzdHJpbmdz
KQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3Ry
X2pvaW5fdGVzdAotICBTT1VSQ0VTCi0gICAgJHtTVFJfSk9JTl9URVNUX1NSQ30KLSAgUFVCTElD
X0xJQlJBUklFUwotICAgICR7U1RSX0pPSU5fVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNT
CisgICAgInN0cl9qb2luX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNv
cmVfaGVhZGVycworICAgIGFic2w6Om1lbW9yeQorICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRl
c3Qgc3RyX2NhdF90ZXN0Ci1zZXQoU1RSX0NBVF9URVNUX1NSQyAic3RyX2NhdF90ZXN0LmNjIikK
LXNldChTVFJfQ0FUX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzKQotCi1hYnNs
X3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3RyX2NhdF90ZXN0
Ci0gIFNPVVJDRVMKLSAgICAke1NUUl9DQVRfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMK
LSAgICAke1NUUl9DQVRfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgInN0cl9j
YXRfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAg
IGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBnbW9ja19tYWluCiAp
CiAKLQotIyB0ZXN0IG51bWJlcnNfdGVzdAotc2V0KE5VTUJFUlNfVEVTVF9TUkMgIm51bWJlcnNf
dGVzdC5jYyIpCi1zZXQoTlVNQkVSU19URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3RyaW5n
cykKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIG51
bWJlcnNfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtOVU1CRVJTX1RFU1RfU1JDfQotICBQVUJMSUNf
TElCUkFSSUVTCi0gICAgJHtOVU1CRVJTX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUwor
ICAgICJpbnRlcm5hbC9udW1iZXJzX3Rlc3RfY29tbW9uLmgiCisgICAgIm51bWJlcnNfdGVzdC5j
YyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0
cmluZ3MKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6
cG93MTBfaGVscGVyCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBzdHJpcF90ZXN0Ci1z
ZXQoU1RSSVBfVEVTVF9TUkMgInN0cmlwX3Rlc3QuY2MiKQotc2V0KFNUUklQX1RFU1RfUFVCTElD
X0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9j
Y190ZXN0KAorICBOQU1FCiAgICAgc3RyaXBfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtTVFJJUF9U
RVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7U1RSSVBfVEVTVF9QVUJMSUNfTElC
UkFSSUVTfQorICBTUkNTCisgICAgInN0cmlwX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNM
X1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6YmFzZQor
ICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRlc3QgY2hhcl9tYXBfdGVzdAotc2V0KENIQVJfTUFQ
X1RFU1RfU1JDICJpbnRlcm5hbC9jaGFyX21hcF90ZXN0LmNjIikKLXNldChDSEFSX01BUF9URVNU
X1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3RyaW5ncykKLQotYWJzbF90ZXN0KAotICBUQVJHRVQK
K2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIGNoYXJfbWFwX3Rlc3QKLSAgU09VUkNFUwotICAg
ICR7Q0hBUl9NQVBfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0NIQVJfTUFQ
X1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJpbnRlcm5hbC9jaGFyX21hcF90
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6c3RyaW5nc19pbnRlcm5hbAorICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRlc3QgY2hhcmNv
bnZfdGVzdAotc2V0KENIQVJDT05WX1RFU1RfU1JDICJjaGFyY29udl90ZXN0LmNjIikKLXNldChD
SEFSQ09OVl9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3RyaW5ncykKLQotYWJzbF90ZXN0
KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIGNoYXJjb252X3Rlc3QKLSAg
U09VUkNFUwotICAgICR7Q0hBUkNPTlZfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAg
ICAke0NIQVJDT05WX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJjaGFyY29u
dl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAg
YWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN0cl9mb3JtYXQKKyAgICBhYnNsOjpiYXNlCisgICAg
YWJzbDo6cG93MTBfaGVscGVyCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBjaGFyY29u
dl9wYXJzZV90ZXN0Ci1zZXQoQ0hBUkNPTlZfUEFSU0VfVEVTVF9TUkMgImludGVybmFsL2NoYXJj
b252X3BhcnNlX3Rlc3QuY2MiKQotc2V0KENIQVJDT05WX1BBUlNFX1RFU1RfUFVCTElDX0xJQlJB
UklFUyBhYnNsOjpzdHJpbmdzKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0
KAorICBOQU1FCiAgICAgY2hhcmNvbnZfcGFyc2VfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtDSEFS
Q09OVl9QQVJTRV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7Q0hBUkNPTlZf
UEFSU0VfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgImludGVybmFsL2NoYXJj
b252X3BhcnNlLmgiCisgICAgImludGVybmFsL2NoYXJjb252X3BhcnNlX3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisg
ICAgYWJzbDo6YmFzZQorICAgIGdtb2NrX21haW4KICkKIAorYWJzbF9jY190ZXN0KAorICBOQU1F
CisgICAgY2hhcmNvbnZfYmlnaW50X3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9jaGFyY29u
dl9iaWdpbnQuaCIKKyAgICAiaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50X3Rlc3QuY2MiCisgICAg
ImludGVybmFsL2NoYXJjb252X3BhcnNlLmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6YmFzZQorICAgIGdtb2Nr
X21haW4KKykKIAotIyB0ZXN0IGNoYXJjb252X2JpZ2ludF90ZXN0Ci1zZXQoQ0hBUkNPTlZfQklH
SU5UX1RFU1RfU1JDICJpbnRlcm5hbC9jaGFyY29udl9iaWdpbnRfdGVzdC5jYyIpCi1zZXQoQ0hB
UkNPTlZfQklHSU5UX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzKQorYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgc3RyX2Zvcm1hdAorICBIRFJTCisgICAgInN0cl9mb3Jt
YXQuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFi
c2w6OnN0cl9mb3JtYXRfaW50ZXJuYWwKKyAgUFVCTElDCispCiAKLWFic2xfdGVzdCgKLSAgVEFS
R0VUCi0gICAgY2hhcmNvbnZfYmlnaW50X3Rlc3QKLSAgU09VUkNFUwotICAgICR7Q0hBUkNPTlZf
QklHSU5UX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtDSEFSQ09OVl9CSUdJ
TlRfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQotKQotIyB0ZXN0IHN0cl9mb3JtYXRfdGVzdAotYWJz
bF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHN0cl9mb3Jt
YXRfaW50ZXJuYWwKKyAgSERSUworICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oIgorICAg
ICJpbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuaCIKKyAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9j
aGVja2VyLmgiCisgICAgImludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmgiCisgICAgImlu
dGVybmFsL3N0cl9mb3JtYXQvZmxvYXRfY29udmVyc2lvbi5oIgorICAgICJpbnRlcm5hbC9zdHJf
Zm9ybWF0L291dHB1dC5oIgorICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5oIgorICBT
UkNTCisgICAgImludGVybmFsL3N0cl9mb3JtYXQvYXJnLmNjIgorICAgICJpbnRlcm5hbC9zdHJf
Zm9ybWF0L2JpbmQuY2MiCisgICAgImludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmNjIgor
ICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2Zsb2F0X2NvbnZlcnNpb24uY2MiCisgICAgImludGVy
bmFsL3N0cl9mb3JtYXQvb3V0cHV0LmNjIgorICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNl
ci5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFi
c2w6OnN0cmluZ3MKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAg
ICBhYnNsOjp0eXBlX3RyYWl0cworICAgIGFic2w6OmludDEyOAorICAgIGFic2w6OnNwYW4KKykK
KworYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3RyX2Zvcm1hdF90ZXN0Ci0gIFNPVVJDRVMK
KyAgU1JDUwogICAgICJzdHJfZm9ybWF0X3Rlc3QuY2MiCi0gIFBVQkxJQ19MSUJSQVJJRVMKLSAg
ICBhYnNsOjpiYXNlCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKICAg
ICBhYnNsOjpzdHJfZm9ybWF0CiAgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OmNvcmVfaGVh
ZGVycworICAgIGdtb2NrX21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgc3Ry
X2Zvcm1hdF9leHRlbnNpb25fdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3N0cl9mb3JtYXQv
ZXh0ZW5zaW9uX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjpzdHJfZm9ybWF0CisgICAgYWJzbDo6c3RyX2Zvcm1hdF9pbnRlcm5hbAor
ICAgIGdtb2NrX21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgc3RyX2Zvcm1h
dF9hcmdfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3N0cl9mb3JtYXQvYXJnX3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJf
Zm9ybWF0CisgICAgYWJzbDo6c3RyX2Zvcm1hdF9pbnRlcm5hbAorICAgIGdtb2NrX21haW4KICkK
IAotIyB0ZXN0IHN0cl9mb3JtYXRfYmluZF90ZXN0Ci1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJz
bF9jY190ZXN0KAorICBOQU1FCiAgICAgc3RyX2Zvcm1hdF9iaW5kX3Rlc3QKLSAgU09VUkNFUwor
ICBTUkNTCiAgICAgImludGVybmFsL3N0cl9mb3JtYXQvYmluZF90ZXN0LmNjIgotICBQVUJMSUNf
TElCUkFSSUVTCi0gICAgc3RyX2Zvcm1hdF9pbnRlcm5hbAorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyX2Zvcm1hdF9pbnRlcm5hbAorICAgIGdt
b2NrX21haW4KICkKIAotIyB0ZXN0IHN0cl9mb3JtYXRfY2hlY2tlcl90ZXN0Ci1hYnNsX3Rlc3Qo
Ci0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3RyX2Zvcm1hdF9jaGVja2Vy
X3Rlc3QKLSAgU09VUkNFUworICBTUkNTCiAgICAgImludGVybmFsL3N0cl9mb3JtYXQvY2hlY2tl
cl90ZXN0LmNjIgotICBQVUJMSUNfTElCUkFSSUVTCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIERFUFMKICAgICBhYnNsOjpzdHJfZm9ybWF0CisgICAgZ21vY2tfbWFpbgogKQog
Ci0jIHRlc3Qgc3RyX2Zvcm1hdF9jb252ZXJ0X3Rlc3QKLWFic2xfdGVzdCgKLSAgVEFSR0VUCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBzdHJfZm9ybWF0X2NvbnZlcnRfdGVzdAotICBTT1VS
Q0VTCisgIFNSQ1MKICAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9jb252ZXJ0X3Rlc3QuY2MiCi0g
IFBVQkxJQ19MSUJSQVJJRVMKLSAgICBzdHJfZm9ybWF0X2ludGVybmFsCi0gICAgYWJzbDo6bnVt
ZXJpYworICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6
c3RyX2Zvcm1hdF9pbnRlcm5hbAorICAgIGFic2w6OmludDEyOAorICAgIGdtb2NrX21haW4KICkK
IAotIyB0ZXN0IHN0cl9mb3JtYXRfb3V0cHV0X3Rlc3QKLWFic2xfdGVzdCgKLSAgVEFSR0VUCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBzdHJfZm9ybWF0X291dHB1dF90ZXN0Ci0gIFNPVVJD
RVMKKyAgU1JDUwogICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1dF90ZXN0LmNjIgotICBQ
VUJMSUNfTElCUkFSSUVTCi0gICAgc3RyX2Zvcm1hdF9leHRlbnNpb25faW50ZXJuYWwKKyAgQ09Q
VFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cl9mb3JtYXRf
aW50ZXJuYWwKKyAgICBnbW9ja19tYWluCiApCiAKLSMgdGVzdCBzdHJfZm9ybWF0X3BhcnNlcl90
ZXN0Ci1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3Ry
X2Zvcm1hdF9wYXJzZXJfdGVzdAotICBTT1VSQ0VTCisgIFNSQ1MKICAgICAiaW50ZXJuYWwvc3Ry
X2Zvcm1hdC9wYXJzZXJfdGVzdC5jYyIKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIHN0cl9mb3Jt
YXRfaW50ZXJuYWwKLSAgICBhYnNsOjpiYXNlCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJfZm9ybWF0X2ludGVybmFsCisgICAgYWJzbDo6Y29y
ZV9oZWFkZXJzCisgICAgZ21vY2tfbWFpbgorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUK
KyAgICBwb3cxMF9oZWxwZXIKKyAgSERSUworICAgICJpbnRlcm5hbC9wb3cxMF9oZWxwZXIuaCIK
KyAgU1JDUworICAgICJpbnRlcm5hbC9wb3cxMF9oZWxwZXIuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIFRFU1RPTkxZCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQor
ICAgIHBvdzEwX2hlbHBlcl90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcG93MTBfaGVscGVy
X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjpwb3cxMF9oZWxwZXIKKyAgICBhYnNsOjpzdHJfZm9ybWF0CisgICAgZ21vY2tfbWFpbgog
KQotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2FzY2lpLmNjCmluZGV4IGM5NDgxZTg4NjU0MmIzZmJjOTVlZmMwZmU2NTczOWMxOThhMmVlYzUu
LjNmN2M1ODFmMTM5ZmQwMzA2NzNiYjUxZGM0NTJlZGM1YzU0NGRhNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvYXNjaWkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaS5jYwpAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9hc2NpaS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaS5oCmluZGV4IDQ4YTlkYTIyZTc2OWE4
NTEyOGE2OWNmMmRmYzMzMjk4MGFmZWQ0NDUuLmY5ZTRmZDFkYmNhZjQ1NDk5YWY3NDRiMWZhYzBm
MjcyYjY0YzUzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2FzY2lpLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWlfYmVuY2htYXJrLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9hc2NpaV9iZW5jaG1hcmsuY2MKaW5kZXggOGRlYTRiOGNmYmY5MzA3NThlMjIwMjYy
NjA2MjIwZDgzZmJmZTBjMi4uYWNhNDU4YzgwNDJmZWQwZGU1OTg0MGRlNTQ2YWJiYjFmOWI5NjYz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaV9iZW5jaG1hcmsuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9hc2NpaV9iZW5jaG1hcmsuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWlfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvYXNjaWlfdGVzdC5jYwppbmRleCA5OTAzYjA0OTZiNzcxOWRmNzAzZmMx
MWJkNzA1MTRjNWM3NGRkZDk1Li41ZWNkMjNmODY5N2Q3Njc3Y2ZjMjdmYmI4OTY1NzVlNmNlZmFh
ZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpX3Rlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9hc2NpaV90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9jaGFyY29udi5jYwppbmRleCBjN2I4Yzk4YjFiNDQ1OWM1NmVhODUxZTkyODFlMzVhOTI2
MTNjNjBmLi5iYzA3ZTdhYjllNGY1MGM4NjVkNmI1ZWY2MjJjMmVhZmJkNGFmZGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNv
bnYuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTU1MSw5
ICs1NTEsMTAgQEAgQ2FsY3VsYXRlZEZsb2F0IENhbGN1bGF0ZUZyb21QYXJzZWREZWNpbWFsKAog
ICBpbnQgYmluYXJ5X2V4cG9uZW50ID0gUG93ZXIxMEV4cG9uZW50KHBhcnNlZF9kZWNpbWFsLmV4
cG9uZW50KTsKIAogICAvLyBEaXNjYXJkIGJpdHMgdGhhdCBhcmUgaW5hY2N1cmF0ZSBkdWUgdG8g
dHJ1bmNhdGlvbiBlcnJvci4gIFRoZSBtYWdpYwotICAvLyBgbWFudGlzc2Ffd2lkdGhgIGNvbnN0
YW50cyBiZWxvdyBhcmUganVzdGlmaWVkIGluIGNoYXJjb252X2FsZ29yaXRobS5tZC4KLSAgLy8g
VGhleSByZXByZXNlbnQgdGhlIG51bWJlciBvZiBiaXRzIGluIGB3aWRlX2JpbmFyeV9tYW50aXNz
YWAgdGhhdCBhcmUKLSAgLy8gZ3VhcmFudGVlZCB0byBiZSB1bmFmZmVjdGVkIGJ5IGVycm9yIHBy
b3BhZ2F0aW9uLgorICAvLyBgbWFudGlzc2Ffd2lkdGhgIGNvbnN0YW50cyBiZWxvdyBhcmUganVz
dGlmaWVkIGluCisgIC8vIGh0dHBzOi8vYWJzZWlsLmlvL2Fib3V0L2Rlc2lnbi9jaGFyY29udi4g
VGhleSByZXByZXNlbnQgdGhlIG51bWJlciBvZiBiaXRzCisgIC8vIGluIGB3aWRlX2JpbmFyeV9t
YW50aXNzYWAgdGhhdCBhcmUgZ3VhcmFudGVlZCB0byBiZSB1bmFmZmVjdGVkIGJ5IGVycm9yCisg
IC8vIHByb3BhZ2F0aW9uLgogICBib29sIG1hbnRpc3NhX2V4YWN0OwogICBpbnQgbWFudGlzc2Ff
d2lkdGg7CiAgIGlmIChwYXJzZWRfZGVjaW1hbC5zdWJyYW5nZV9iZWdpbikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5oCmlu
ZGV4IDA3MzUzODI5NjIzNTZjZmY3YmZiNWYzZWJkM2EwMzkzZDJkMjgxMGEuLjNmNTg5MWJhN2Yz
ZmM0YzNjZGFlNTgxZWM5NGVlZTE5NDQ5Nzc2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
Y2hhcmNvbnYuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmgKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQ5LDkgKzQ5LDkgQEAgc3RydWN0IGZyb21f
Y2hhcnNfcmVzdWx0IHsKIC8vIHRoaXMgb25seSBzdXBwb3J0cyB0aGUgYGRvdWJsZWAgYW5kIGBm
bG9hdGAgdHlwZXMuCiAvLwogLy8gVGhpcyBpbnRlcmZhY2UgaW5jb3Jwb3JhdGVzIHRoZSBwcm9w
b3NlZCByZXNvbHV0aW9ucyBmb3IgbGlicmFyeSBpc3N1ZXMKLS8vIERSIDM4MDAgYW5kIERSIDM4
MDEuICBJZiB0aGVzZSBhcmUgYWRvcHRlZCB3aXRoIGRpZmZlcmVudCB3b3JkaW5nLAorLy8gRFIg
MzA4MCBhbmQgRFIgMzA4MS4gIElmIHRoZXNlIGFyZSBhZG9wdGVkIHdpdGggZGlmZmVyZW50IHdv
cmRpbmcsCiAvLyBBYnNlaWwncyBiZWhhdmlvciB3aWxsIGNoYW5nZSB0byBtYXRjaCB0aGUgc3Rh
bmRhcmQuICAoVGhlIGJlaGF2aW9yIG1vc3QKLS8vIGxpa2VseSB0byBjaGFuZ2UgaXMgZm9yIERS
IDM4MDEsIHdoaWNoIHNheXMgd2hhdCBgdmFsdWVgIHdpbGwgYmUgc2V0IHRvIGluCisvLyBsaWtl
bHkgdG8gY2hhbmdlIGlzIGZvciBEUiAzMDgxLCB3aGljaCBzYXlzIHdoYXQgYHZhbHVlYCB3aWxs
IGJlIHNldCB0byBpbgogLy8gdGhlIGNhc2Ugb2Ygb3ZlcmZsb3cgYW5kIHVuZGVyZmxvdy4gIENv
ZGUgdGhhdCB3YW50cyB0byBhdm9pZCBwb3NzaWJsZQogLy8gYnJlYWtpbmcgY2hhbmdlcyBpbiB0
aGlzIGFyZWEgc2hvdWxkIG5vdCBkZXBlbmQgb24gYHZhbHVlYCB3aGVuIHRoZSByZXR1cm5lZAog
Ly8gZnJvbV9jaGFyc19yZXN1bHQgaW5kaWNhdGVzIGEgcmFuZ2UgZXJyb3IuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udl9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2No
YXJjb252X2JlbmNobWFyay5jYwppbmRleCBmZDgzZjQ0ZTNkMDljZWI5NDQxMjViZGQxOWY3Mjgy
YzM5ZjYyZWU2Li42NDRiMmFiZGY2OGZhMWZhZWY5ZGE1NzRjNWZiZTlhZmU5ODU3ZDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2NoYXJjb252X2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
IC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udl90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udl90ZXN0LmNjCmluZGV4IDg5NDE4ZmU5NDhmZmVkYzRi
NzVhYzJmYTgxMGZkNDQxNjYwNWMzYmQuLmI1OGZhZDI2OWQ4YjA3MWE3NGJjNmQ5M2IzOTZjZTJm
ZmM0MjlmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnZfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2NoYXJjb252X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKQEAgLTE5LDcgKzE5LDkgQEAKIAogI2luY2x1ZGUgImdtb2NrL2dt
b2NrLmgiCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvcG93MTBfaGVscGVyLmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQu
aCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oIgogCiAjaWZkZWYgX01TQ19G
VUxMX1ZFUgogI2RlZmluZSBBQlNMX0NPTVBJTEVSX0RPRVNfRVhBQ1RfUk9VTkRJTkcgMApAQCAt
MzEsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgewogCit1c2luZyBhYnNsOjpzdHJpbmdzX2ludGVy
bmFsOjpQb3cxMDsKKwogI2lmIEFCU0xfQ09NUElMRVJfRE9FU19FWEFDVF9ST1VORElORwogCiAv
LyBUZXN0cyB0aGF0IHRoZSBnaXZlbiBzdHJpbmcgaXMgYWNjZXB0ZWQgYnkgYWJzbDo6ZnJvbV9j
aGFycywgYW5kIHRoYXQgaXQKQEAgLTI3NSw3ICsyNzksOCBAQCB2b2lkIFRlc3RIYWxmd2F5VmFs
dWUoY29uc3Qgc3RkOjpzdHJpbmcmIG1hbnRpc3NhLCBpbnQgZXhwb25lbnQsCiAgIGFic2w6OmZy
b21fY2hhcnMobG93X3JlcC5kYXRhKCksIGxvd19yZXAuZGF0YSgpICsgbG93X3JlcC5zaXplKCks
IGFjdHVhbF9sb3cpOwogICBFWFBFQ1RfRVEoZXhwZWN0ZWRfbG93LCBhY3R1YWxfbG93KTsKIAot
ICBzdGQ6OnN0cmluZyBoaWdoX3JlcCA9IGFic2w6OlN0ckNhdChtYW50aXNzYSwgc3RkOjpzdHJp
bmcoMTAwMCwgJzAnKSwgIjFlIiwgZXhwb25lbnQpOworICBzdGQ6OnN0cmluZyBoaWdoX3JlcCA9
CisgICAgICBhYnNsOjpTdHJDYXQobWFudGlzc2EsIHN0ZDo6c3RyaW5nKDEwMDAsICcwJyksICIx
ZSIsIGV4cG9uZW50KTsKICAgRmxvYXRUeXBlIGFjdHVhbF9oaWdoID0gMDsKICAgYWJzbDo6ZnJv
bV9jaGFycyhoaWdoX3JlcC5kYXRhKCksIGhpZ2hfcmVwLmRhdGEoKSArIGhpZ2hfcmVwLnNpemUo
KSwKICAgICAgICAgICAgICAgICAgICBhY3R1YWxfaGlnaCk7CkBAIC02NzgsNyArNjgzLDggQEAg
dm9pZCBUZXN0T3ZlcmZsb3dBbmRVbmRlcmZsb3coCiAgICAgYXV0byByZXN1bHQgPQogICAgICAg
ICBhYnNsOjpmcm9tX2NoYXJzKGlucHV0LmRhdGEoKSwgaW5wdXQuZGF0YSgpICsgaW5wdXQuc2l6
ZSgpLCBhY3R1YWwpOwogICAgIEVYUEVDVF9FUShyZXN1bHQuZWMsIHN0ZDo6ZXJyYygpKTsKLSAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIGFjdHVhbCk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkLCBh
Y3R1YWwpCisgICAgICAgIDw8IGFic2w6OlN0ckZvcm1hdCgiJWEgdnMgJWEiLCBleHBlY3RlZCwg
YWN0dWFsKTsKICAgfQogICAvLyB0ZXN0IGxlZ2FsIHZhbHVlcyBuZWFyIHVwcGVyX2JvdW5kCiAg
IGZvciAoaW5kZXggPSB1cHBlcl9ib3VuZCwgc3RlcCA9IDE7IGluZGV4ID4gbG93ZXJfYm91bmQ7
CkBAIC02OTAsNyArNjk2LDggQEAgdm9pZCBUZXN0T3ZlcmZsb3dBbmRVbmRlcmZsb3coCiAgICAg
YXV0byByZXN1bHQgPQogICAgICAgICBhYnNsOjpmcm9tX2NoYXJzKGlucHV0LmRhdGEoKSwgaW5w
dXQuZGF0YSgpICsgaW5wdXQuc2l6ZSgpLCBhY3R1YWwpOwogICAgIEVYUEVDVF9FUShyZXN1bHQu
ZWMsIHN0ZDo6ZXJyYygpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIGFjdHVhbCk7CisgICAg
RVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAgIDw8IGFic2w6OlN0ckZvcm1hdCgi
JWEgdnMgJWEiLCBleHBlY3RlZCwgYWN0dWFsKTsKICAgfQogICAvLyBUZXN0IHVuZGVyZmxvdyB2
YWx1ZXMgYmVsb3cgbG93ZXJfYm91bmQKICAgZm9yIChpbmRleCA9IGxvd2VyX2JvdW5kIC0gMSwg
c3RlcCA9IDE7IGluZGV4ID4gLTEwMDAwMDA7CkBAIC03NDcsNyArNzU0LDcgQEAgVEVTVChGcm9t
Q2hhcnMsIEhleGRlY2ltYWxGbG9hdExpbWl0cykgewogLy8gYWNjZXB0YWJsZSBleHBvbmVudHMg
aW4gdGhpcyB0ZXN0LgogVEVTVChGcm9tQ2hhcnMsIERlY2ltYWxEb3VibGVMaW1pdHMpIHsKICAg
YXV0byBpbnB1dF9nZW4gPSBbXShpbnQgaW5kZXgpIHsgcmV0dXJuIGFic2w6OlN0ckNhdCgiMS4w
ZSIsIGluZGV4KTsgfTsKLSAgYXV0byBleHBlY3RlZF9nZW4gPSBbXShpbnQgaW5kZXgpIHsgcmV0
dXJuIHN0ZDo6cG93KDEwLjAsIGluZGV4KTsgfTsKKyAgYXV0byBleHBlY3RlZF9nZW4gPSBbXShp
bnQgaW5kZXgpIHsgcmV0dXJuIFBvdzEwKGluZGV4KTsgfTsKICAgVGVzdE92ZXJmbG93QW5kVW5k
ZXJmbG93PGRvdWJsZT4oaW5wdXRfZ2VuLCBleHBlY3RlZF9nZW4sIC0zMjMsIDMwOCk7CiB9CiAK
QEAgLTc1OSw3ICs3NjYsNyBAQCBURVNUKEZyb21DaGFycywgRGVjaW1hbERvdWJsZUxpbWl0cykg
ewogLy8gYWNjZXB0YWJsZSBleHBvbmVudHMgaW4gdGhpcyB0ZXN0LgogVEVTVChGcm9tQ2hhcnMs
IERlY2ltYWxGbG9hdExpbWl0cykgewogICBhdXRvIGlucHV0X2dlbiA9IFtdKGludCBpbmRleCkg
eyByZXR1cm4gYWJzbDo6U3RyQ2F0KCIxLjBlIiwgaW5kZXgpOyB9OwotICBhdXRvIGV4cGVjdGVk
X2dlbiA9IFtdKGludCBpbmRleCkgeyByZXR1cm4gc3RkOjpwb3coMTAuMCwgaW5kZXgpOyB9Owor
ICBhdXRvIGV4cGVjdGVkX2dlbiA9IFtdKGludCBpbmRleCkgeyByZXR1cm4gUG93MTAoaW5kZXgp
OyB9OwogICBUZXN0T3ZlcmZsb3dBbmRVbmRlcmZsb3c8ZmxvYXQ+KGlucHV0X2dlbiwgZXhwZWN0
ZWRfZ2VuLCAtNDUsIDM4KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGlu
Zy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuY2MKaW5kZXggOGQ4YjAwYjIwMDFjZTgzMDdi
NDg3ODgwMDdjYzU2NTVhNzVmNTRmYS4uMGQzMzZlM2ZmNjkxYjcyZjg2MDQwYzgzNGRmZDgzZmVm
MzUxZjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZy5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2VzY2FwaW5nLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCkBAIC0xNzksNyArMTc5LDggQEAgYm9vbCBDVW5lc2NhcGVJbnRlcm5hbChhYnNsOjpz
dHJpbmdfdmlldyBzb3VyY2UsIGJvb2wgbGVhdmVfbnVsbHNfZXNjYXBlZCwKICAgICAgICAgICAg
IGNoID0gKGNoIDw8IDQpICsgaGV4X2RpZ2l0X3RvX2ludCgqKytwKTsKICAgICAgICAgICBpZiAo
Y2ggPiAweEZGKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgKmVy
cm9yID0gIlZhbHVlIG9mIFxcIiArIHN0ZDo6c3RyaW5nKGhleF9zdGFydCwgcCArIDEgLSBoZXhf
c3RhcnQpICsKKyAgICAgICAgICAgICAgKmVycm9yID0gIlZhbHVlIG9mIFxcIiArCisgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKGhleF9zdGFydCwgcCArIDEgLSBoZXhfc3RhcnQp
ICsKICAgICAgICAgICAgICAgICAgICAgICAgIiBleGNlZWRzIDB4ZmYiOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk0LDcgKzI5NSw3IEBAIGJvb2wgQ1Vu
ZXNjYXBlSW50ZXJuYWwoYWJzbDo6c3RyaW5nX3ZpZXcgc291cmNlLCBib29sIGxlYXZlX251bGxz
X2VzY2FwZWQsCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBDVW5lc2NhcGVJbnRlcm5hbCgpCiAvLwot
Ly8gICAgU2FtZSBhcyBhYm92ZSBidXQgdXNlcyBhIEMrKyBzdHJpbmcgZm9yIG91dHB1dC4gJ3Nv
dXJjZScgYW5kICdkZXN0JworLy8gICAgU2FtZSBhcyBhYm92ZSBidXQgdXNlcyBhIHN0ZDo6c3Ry
aW5nIGZvciBvdXRwdXQuICdzb3VyY2UnIGFuZCAnZGVzdCcKIC8vICAgIG1heSBiZSB0aGUgc2Ft
ZS4KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIGJvb2wgQ1VuZXNjYXBlSW50ZXJuYWwoYWJzbDo6c3RyaW5n
X3ZpZXcgc291cmNlLCBib29sIGxlYXZlX251bGxzX2VzY2FwZWQsCkBAIC0zMjQsNyArMzI1LDgg
QEAgYm9vbCBDVW5lc2NhcGVJbnRlcm5hbChhYnNsOjpzdHJpbmdfdmlldyBzb3VyY2UsIGJvb2wg
bGVhdmVfbnVsbHNfZXNjYXBlZCwKIC8vCiAvLyAgICBFc2NhcGVkIGNoYXJzOiBcbiwgXHIsIFx0
LCAiLCAnLCBcLCBhbmQgIWFic2w6OmFzY2lpX2lzcHJpbnQoKS4KIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LXN0ZDo6c3RyaW5nIENFc2NhcGVJbnRlcm5hbChhYnNsOjpzdHJpbmdfdmlldyBzcmMsIGJvb2wg
dXNlX2hleCwgYm9vbCB1dGY4X3NhZmUpIHsKK3N0ZDo6c3RyaW5nIENFc2NhcGVJbnRlcm5hbChh
YnNsOjpzdHJpbmdfdmlldyBzcmMsIGJvb2wgdXNlX2hleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHV0Zjhfc2FmZSkgewogICBzdGQ6OnN0cmluZyBkZXN0OwogICBib29sIGxh
c3RfaGV4X2VzY2FwZSA9IGZhbHNlOyAgLy8gdHJ1ZSBpZiBsYXN0IG91dHB1dCBjaGFyIHdhcyBc
eE5OLgogCkBAIC03ODYsNyArNzg4LDcgQEAgc2l6ZV90IENhbGN1bGF0ZUJhc2U2NEVzY2FwZWRM
ZW5JbnRlcm5hbChzaXplX3QgaW5wdXRfbGVuLCBib29sIGRvX3BhZGRpbmcpIHsKICAgLy8gQmFz
ZTY0IGVuY29kZXMgdGhyZWUgYnl0ZXMgb2YgaW5wdXQgYXQgYSB0aW1lLiBJZiB0aGUgaW5wdXQg
aXMgbm90CiAgIC8vIGRpdmlzaWJsZSBieSB0aHJlZSwgd2UgcGFkIGFzIGFwcHJvcHJpYXRlLgog
ICAvLwotICAvLyAoZnJvbSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNTQ4KQorICAv
LyAoZnJvbSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzU0OCkKICAgLy8gU3BlY2lh
bCBwcm9jZXNzaW5nIGlzIHBlcmZvcm1lZCBpZiBmZXdlciB0aGFuIDI0IGJpdHMgYXJlIGF2YWls
YWJsZQogICAvLyBhdCB0aGUgZW5kIG9mIHRoZSBkYXRhIGJlaW5nIGVuY29kZWQuICBBIGZ1bGwg
ZW5jb2RpbmcgcXVhbnR1bSBpcwogICAvLyBhbHdheXMgY29tcGxldGVkIGF0IHRoZSBlbmQgb2Yg
YSBxdWFudGl0eS4gIFdoZW4gZmV3ZXIgdGhhbiAyNCBpbnB1dApAQCAtODAwLDEyICs4MDIsMTIg
QEAgc2l6ZV90IENhbGN1bGF0ZUJhc2U2NEVzY2FwZWRMZW5JbnRlcm5hbChzaXplX3QgaW5wdXRf
bGVuLCBib29sIGRvX3BhZGRpbmcpIHsKICAgc2l6ZV90IGxlbiA9IChpbnB1dF9sZW4gLyAzKSAq
IDQ7CiAKICAgaWYgKGlucHV0X2xlbiAlIDMgPT0gMCkgewotICAgIC8vIChmcm9tIGh0dHA6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzM1NDgpCisgICAgLy8gKGZyb20gaHR0cHM6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzM1NDgpCiAgICAgLy8gKDEpIHRoZSBmaW5hbCBxdWFudHVtIG9mIGVu
Y29kaW5nIGlucHV0IGlzIGFuIGludGVncmFsIG11bHRpcGxlIG9mIDI0CiAgICAgLy8gYml0czsg
aGVyZSwgdGhlIGZpbmFsIHVuaXQgb2YgZW5jb2RlZCBvdXRwdXQgd2lsbCBiZSBhbiBpbnRlZ3Jh
bAogICAgIC8vIG11bHRpcGxlIG9mIDQgY2hhcmFjdGVycyB3aXRoIG5vICI9IiBwYWRkaW5nLAog
ICB9IGVsc2UgaWYgKGlucHV0X2xlbiAlIDMgPT0gMSkgewotICAgIC8vIChmcm9tIGh0dHA6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzM1NDgpCisgICAgLy8gKGZyb20gaHR0cHM6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzM1NDgpCiAgICAgLy8gKDIpIHRoZSBmaW5hbCBxdWFudHVtIG9mIGVu
Y29kaW5nIGlucHV0IGlzIGV4YWN0bHkgOCBiaXRzOyBoZXJlLCB0aGUKICAgICAvLyBmaW5hbCB1
bml0IG9mIGVuY29kZWQgb3V0cHV0IHdpbGwgYmUgdHdvIGNoYXJhY3RlcnMgZm9sbG93ZWQgYnkg
dHdvCiAgICAgLy8gIj0iIHBhZGRpbmcgY2hhcmFjdGVycywgb3IKQEAgLTgxNCw3ICs4MTYsNyBA
QCBzaXplX3QgQ2FsY3VsYXRlQmFzZTY0RXNjYXBlZExlbkludGVybmFsKHNpemVfdCBpbnB1dF9s
ZW4sIGJvb2wgZG9fcGFkZGluZykgewogICAgICAgbGVuICs9IDI7CiAgICAgfQogICB9IGVsc2Ug
eyAgLy8gKGlucHV0X2xlbiAlIDMgPT0gMikKLSAgICAvLyAoZnJvbSBodHRwOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9yZmMzNTQ4KQorICAgIC8vIChmcm9tIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmMzNTQ4KQogICAgIC8vICgzKSB0aGUgZmluYWwgcXVhbnR1bSBvZiBlbmNvZGluZyBp
bnB1dCBpcyBleGFjdGx5IDE2IGJpdHM7IGhlcmUsIHRoZQogICAgIC8vIGZpbmFsIHVuaXQgb2Yg
ZW5jb2RlZCBvdXRwdXQgd2lsbCBiZSB0aHJlZSBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5IG9uZQog
ICAgIC8vICI9IiBwYWRkaW5nIGNoYXJhY3Rlci4KQEAgLTg0Myw4ICs4NDUsOCBAQCBzaXplX3Qg
QmFzZTY0RXNjYXBlSW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBzaXplX3Qgc3pz
cmMsIGNoYXIqIGRlc3QsCiAKICAgLy8gVGhyZWUgYnl0ZXMgb2YgZGF0YSBlbmNvZGVzIHRvIGZv
dXIgY2hhcmFjdGVycyBvZiBjeXBoZXJ0ZXh0LgogICAvLyBTbyB3ZSBjYW4gcHVtcCB0aHJvdWdo
IHRocmVlLWJ5dGUgY2h1bmtzIGF0b21pY2FsbHkuCi0gIGlmIChzenNyYyA+PSAzKSB7ICAvLyAi
bGltaXRfc3JjIC0gMyIgaXMgVUIgaWYgc3pzcmMgPCAzCi0gICAgd2hpbGUgKGN1cl9zcmMgPCBs
aW1pdF9zcmMgLSAzKSB7ICAvLyBhcyBsb25nIGFzIHdlIGhhdmUgPj0gMzIgYml0cworICBpZiAo
c3pzcmMgPj0gMykgeyAgLy8gImxpbWl0X3NyYyAtIDMiIGlzIFVCIGlmIHN6c3JjIDwgMy4KKyAg
ICB3aGlsZSAoY3VyX3NyYyA8IGxpbWl0X3NyYyAtIDMpIHsgIC8vIFdoaWxlIHdlIGhhdmUgPj0g
MzIgYml0cy4KICAgICAgIHVpbnQzMl90IGluID0gYWJzbDo6YmlnX2VuZGlhbjo6TG9hZDMyKGN1
cl9zcmMpID4+IDg7CiAKICAgICAgIGN1cl9kZXN0WzBdID0gYmFzZTY0W2luID4+IDE4XTsKQEAg
LTEwMTEsNyArMTAxMyw4IEBAIHZvaWQgSGV4U3RyaW5nVG9CeXRlc0ludGVybmFsKGNvbnN0IGNo
YXIqIGZyb20sIFQgdG8sIHB0cmRpZmZfdCBudW0pIHsKICAgfQogfQogCi0vLyBUaGlzIGlzIGEg
dGVtcGxhdGVkIGZ1bmN0aW9uIHNvIHRoYXQgVCBjYW4gYmUgZWl0aGVyIGEgY2hhciogb3IgYSBz
dHJpbmcuCisvLyBUaGlzIGlzIGEgdGVtcGxhdGVkIGZ1bmN0aW9uIHNvIHRoYXQgVCBjYW4gYmUg
ZWl0aGVyIGEgY2hhciogb3IgYQorLy8gc3RkOjpzdHJpbmcuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIHZvaWQgQnl0ZXNUb0hleFN0cmluZ0ludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNy
YywgVCBkZXN0LCBwdHJkaWZmX3QgbnVtKSB7CiAgIGF1dG8gZGVzdF9wdHIgPSAmZGVzdFswXTsK
QEAgLTEwMjgsNyArMTAzMSw4IEBAIHZvaWQgQnl0ZXNUb0hleFN0cmluZ0ludGVybmFsKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIHNyYywgVCBkZXN0LCBwdHJkaWZmX3QgbnVtKSB7CiAvLwogLy8gU2Vl
IENVbmVzY2FwZUludGVybmFsKCkgZm9yIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1ib29sIENVbmVzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBzb3VyY2UsIHN0ZDo6
c3RyaW5nKiBkZXN0LCBzdGQ6OnN0cmluZyogZXJyb3IpIHsKK2Jvb2wgQ1VuZXNjYXBlKGFic2w6
OnN0cmluZ192aWV3IHNvdXJjZSwgc3RkOjpzdHJpbmcqIGRlc3QsCisgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZyogZXJyb3IpIHsKICAgcmV0dXJuIENVbmVzY2FwZUludGVybmFsKHNvdXJjZSwg
a1VuZXNjYXBlTnVsbHMsIGRlc3QsIGVycm9yKTsKIH0KIApAQCAtMTA1MSwxMCArMTA1NSwxMCBA
QCBzdGQ6OnN0cmluZyBVdGY4U2FmZUNIZXhFc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjKSB7
CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIHB0cmRpZmZfdCBCYXNlNjRVbmVzY2FwZSgpIC0g
YmFzZTY0IGRlY29kZXIKLS8vIHB0cmRpZmZfdCBCYXNlNjRFc2NhcGUoKSAtIGJhc2U2NCBlbmNv
ZGVyCi0vLyBwdHJkaWZmX3QgV2ViU2FmZUJhc2U2NFVuZXNjYXBlKCkgLSBHb29nbGUncyB2YXJp
YXRpb24gb2YgYmFzZTY0IGRlY29kZXIKLS8vIHB0cmRpZmZfdCBXZWJTYWZlQmFzZTY0RXNjYXBl
KCkgLSBHb29nbGUncyB2YXJpYXRpb24gb2YgYmFzZTY0IGVuY29kZXIKKy8vIEJhc2U2NFVuZXNj
YXBlKCkgLSBiYXNlNjQgZGVjb2RlcgorLy8gQmFzZTY0RXNjYXBlKCkgLSBiYXNlNjQgZW5jb2Rl
cgorLy8gV2ViU2FmZUJhc2U2NFVuZXNjYXBlKCkgLSBHb29nbGUncyB2YXJpYXRpb24gb2YgYmFz
ZTY0IGRlY29kZXIKKy8vIFdlYlNhZmVCYXNlNjRFc2NhcGUoKSAtIEdvb2dsZSdzIHZhcmlhdGlv
biBvZiBiYXNlNjQgZW5jb2RlcgogLy8KIC8vIENoZWNrIG91dAogLy8gaHR0cDovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjMjA0NSBmb3IgZm9ybWFsIGRlc2NyaXB0aW9uLCBidXQgd2hhdCB3ZQpA
QCAtMTA5Miw2ICsxMDk2LDIwIEBAIHZvaWQgV2ViU2FmZUJhc2U2NEVzY2FwZShhYnNsOjpzdHJp
bmdfdmlldyBzcmMsIHN0ZDo6c3RyaW5nKiBkZXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHNyYy5zaXplKCksIGRlc3QsIGZhbHNlLCBrV2ViU2FmZUJhc2U2NENoYXJzKTsKIH0KIAorc3Rk
OjpzdHJpbmcgQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYykgeworICBzdGQ6OnN0
cmluZyBkZXN0OworICBCYXNlNjRFc2NhcGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihzcmMuZGF0YSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3Jj
LnNpemUoKSwgJmRlc3QsIHRydWUsIGtCYXNlNjRDaGFycyk7CisgIHJldHVybiBkZXN0OworfQor
CitzdGQ6OnN0cmluZyBXZWJTYWZlQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYykg
eworICBzdGQ6OnN0cmluZyBkZXN0OworICBCYXNlNjRFc2NhcGVJbnRlcm5hbChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihzcmMuZGF0YSgpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgc3JjLnNpemUoKSwgJmRlc3QsIGZhbHNlLCBrV2ViU2FmZUJhc2U2NENoYXJzKTsK
KyAgcmV0dXJuIGRlc3Q7Cit9CisKIHN0ZDo6c3RyaW5nIEhleFN0cmluZ1RvQnl0ZXMoYWJzbDo6
c3RyaW5nX3ZpZXcgZnJvbSkgewogICBzdGQ6OnN0cmluZyByZXN1bHQ7CiAgIGNvbnN0IGF1dG8g
bnVtID0gZnJvbS5zaXplKCkgLyAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGlu
Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZy5oCmluZGV4IDI5NjU5NzMwNGU2Y2UzZjU4NjVk
YzAzYTk2N2YzNDMxOGU2OWI5MWMuLjE5OGI5MzQ4NzVlNTY4MzBlYWUxZTliNzk5OGFlNzVjZWMz
MzRkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2VzY2FwaW5nLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTE5LDcgKzE5LDYgQEAKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGNvbnRhaW5zIHN0
cmluZyB1dGlsaXRpZXMgaW52b2x2ZWQgaW4gZXNjYXBpbmcgYW5kCiAvLyB1bmVzY2FwaW5nIHN0
cmluZ3MgaW4gdmFyaW91cyB3YXlzLgotLy8KIAogI2lmbmRlZiBBQlNMX1NUUklOR1NfRVNDQVBJ
TkdfSF8KICNkZWZpbmUgQUJTTF9TVFJJTkdTX0VTQ0FQSU5HX0hfCkBAIC0zOCw3ICszNyw3IEBA
IG5hbWVzcGFjZSBhYnNsIHsKIC8vIENVbmVzY2FwZSgpCiAvLwogLy8gVW5lc2NhcGVzIGEgYHNv
dXJjZWAgc3RyaW5nIGFuZCBjb3BpZXMgaXQgaW50byBgZGVzdGAsIHJld3JpdGluZyBDLXN0eWxl
Ci0vLyBlc2NhcGUgc2VxdWVuY2VzIChodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9s
YW5ndWFnZS9lc2NhcGUpIGludG8KKy8vIGVzY2FwZSBzZXF1ZW5jZXMgKGh0dHBzOi8vZW4uY3Bw
cmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lc2NhcGUpIGludG8KIC8vIHRoZWlyIHByb3Bl
ciBjb2RlIHBvaW50IGVxdWl2YWxlbnRzLCByZXR1cm5pbmcgYHRydWVgIGlmIHN1Y2Nlc3NmdWwu
CiAvLwogLy8gVGhlIGZvbGxvd2luZyB1bmVzY2FwZSBzZXF1ZW5jZXMgY2FuIGJlIGhhbmRsZWQ6
CkBAIC01Niw3ICs1NSw2IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vICAgICBVVEYtOC4gKEUuZy4s
IGBcdTIwMTlgIHVuZXNjYXBlcyB0byB0aGUgdGhyZWUgYnl0ZXMgMHhFMiwgMHg4MCwgYW5kCiAv
LyAgICAgMHg5OSkuCiAvLwotLy8KIC8vIElmIGFueSBlcnJvcnMgYXJlIGVuY291bnRlcmVkLCB0
aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCwgbGVhdmluZyB0aGUKIC8vIGBkZXN0YCBvdXRw
dXQgcGFyYW1ldGVyIGluIGFuIHVuc3BlY2lmaWVkIHN0YXRlLCBhbmQgc3RvcmVzIHRoZSBmaXJz
dAogLy8gZW5jb3VudGVyZWQgZXJyb3IgaW4gYGVycm9yYC4gVG8gZGlzYWJsZSBlcnJvciByZXBv
cnRpbmcsIHNldCBgZXJyb3JgIHRvCkBAIC04MCw3ICs3OCw3IEBAIGlubGluZSBib29sIENVbmVz
Y2FwZShhYnNsOjpzdHJpbmdfdmlldyBzb3VyY2UsIHN0ZDo6c3RyaW5nKiBkZXN0KSB7CiAvLyBD
RXNjYXBlKCkKIC8vCiAvLyBFc2NhcGVzIGEgJ3NyYycgc3RyaW5nIHVzaW5nIEMtc3R5bGUgZXNj
YXBlcyBzZXF1ZW5jZXMKLS8vIChodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5n
dWFnZS9lc2NhcGUpLCBlc2NhcGluZyBvdGhlcgorLy8gKGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNl
LmNvbS93L2NwcC9sYW5ndWFnZS9lc2NhcGUpLCBlc2NhcGluZyBvdGhlcgogLy8gbm9uLXByaW50
YWJsZS9ub24td2hpdGVzcGFjZSBieXRlcyBhcyBvY3RhbCBzZXF1ZW5jZXMgKGUuZy4gIlwzNzci
KS4KIC8vCiAvLyBFeGFtcGxlOgpAQCAtMTM0LDE2ICsxMzIsMTggQEAgYm9vbCBXZWJTYWZlQmFz
ZTY0VW5lc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBzdGQ6OnN0cmluZyogZGVzdCk7CiAK
IC8vIEJhc2U2NEVzY2FwZSgpCiAvLwotLy8gRW5jb2RlcyBhIGBzcmNgIHN0cmluZyBpbnRvIGEg
YGRlc3RgIGJ1ZmZlciB1c2luZyBiYXNlNjQgZW5jb2RpbmcsIHdpdGgKLS8vIHBhZGRpbmcgY2hh
cmFjdGVycy4gVGhpcyBmdW5jdGlvbiBjb25mb3JtcyB3aXRoIFJGQyA0NjQ4IHNlY3Rpb24gNCAo
YmFzZTY0KS4KKy8vIEVuY29kZXMgYSBgc3JjYCBzdHJpbmcgaW50byBhIGJhc2U2NC1lbmNvZGVk
IHN0cmluZywgd2l0aCBwYWRkaW5nIGNoYXJhY3RlcnMuCisvLyBUaGlzIGZ1bmN0aW9uIGNvbmZv
cm1zIHdpdGggUkZDIDQ2NDggc2VjdGlvbiA0IChiYXNlNjQpLgogdm9pZCBCYXNlNjRFc2NhcGUo
YWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBzdGQ6OnN0cmluZyogZGVzdCk7CitzdGQ6OnN0cmluZyBC
YXNlNjRFc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjKTsKIAogLy8gV2ViU2FmZUJhc2U2NEVz
Y2FwZSgpCiAvLwotLy8gRW5jb2RlcyBhIGBzcmNgIHN0cmluZyBpbnRvIGEgYGRlc3RgIGJ1ZmZl
ciB1c2luZyAnLScgaW5zdGVhZCBvZiAnKycgYW5kCi0vLyAnXycgaW5zdGVhZCBvZiAnLycsIGFu
ZCB3aXRob3V0IHBhZGRpbmcuIFRoaXMgZnVuY3Rpb24gY29uZm9ybXMgd2l0aCBSRkMgNDY0OAot
Ly8gc2VjdGlvbiA1IChiYXNlNjR1cmwpLgorLy8gRW5jb2RlcyBhIGBzcmNgIHN0cmluZyBpbnRv
IGEgYmFzZTY0LWxpa2Ugc3RyaW5nLCB1c2luZyAnLScgaW5zdGVhZCBvZiAnKycKKy8vIGFuZCAn
XycgaW5zdGVhZCBvZiAnLycsIGFuZCB3aXRob3V0IHBhZGRpbmcuIFRoaXMgZnVuY3Rpb24gY29u
Zm9ybXMgd2l0aCBSRkMKKy8vIDQ2NDggc2VjdGlvbiA1IChiYXNlNjR1cmwpLgogdm9pZCBXZWJT
YWZlQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYywgc3RkOjpzdHJpbmcqIGRlc3Qp
Oworc3RkOjpzdHJpbmcgV2ViU2FmZUJhc2U2NEVzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBzcmMp
OwogCiAvLyBIZXhTdHJpbmdUb0J5dGVzKCkKIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2VzY2FwaW5nX2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmdfYmVuY2htYXJr
LmNjCmluZGV4IDBmNzkxZjRlODc1MDlhMGM1OTU1ODU2YjM1MzhmY2QzNjhhZTRhMDkuLjEwZDVi
MDMzYzUyMDZjMjk4OTEyZWU5MTljOTYxMzU3Y2VjYjZlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvZXNjYXBpbmdfYmVuY2htYXJrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmdf
YmVuY2htYXJrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2VzY2FwaW5nX3Rlc3QuY2MKaW5kZXggOWRjMjdmM2Y4ZmE3NjhhMmE5MWNkYWY5NTAzN2Q3NGNm
ZjAxYWViYy4uMTk2Nzk3NWI2OWFmOGUyNGM0ZmFlNzhlNDAyNDliMzIzYTRiNmE3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZ190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
ZXNjYXBpbmdfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMzYsMTggKzM2LDE5IEBAIHN0cnVjdCBlcGFpciB7CiAKIFRFU1QoQ0VzY2FwZSwgRXNj
YXBlQW5kVW5lc2NhcGUpIHsKICAgY29uc3Qgc3RkOjpzdHJpbmcgaW5wdXRzW10gPSB7Ci0gICAg
c3RkOjpzdHJpbmcoImZvb1xueHhcclxiXDAwMjMiKSwKLSAgICBzdGQ6OnN0cmluZygiIiksCi0g
ICAgc3RkOjpzdHJpbmcoImFiYyIpLAotICAgIHN0ZDo6c3RyaW5nKCJcMWNoYWRfcnVsZXMiKSwK
LSAgICBzdGQ6OnN0cmluZygiXDFhcm5hcl9kcm9vbHMiKSwKLSAgICBzdGQ6OnN0cmluZygieHh4
eFxyXHQnXCJcXCIpLAotICAgIHN0ZDo6c3RyaW5nKCJcMHh4XDAiLCA0KSwKLSAgICBzdGQ6OnN0
cmluZygiXHgwMVx4MzEiKSwKLSAgICBzdGQ6OnN0cmluZygiYWJjXHhiXHg0MlwxNDFiYyIpLAot
ICAgIHN0ZDo6c3RyaW5nKCIxMjNcMVx4MzFceDMyXHgzMyIpLAotICAgIHN0ZDo6c3RyaW5nKCJc
eGMxXHhjYVx4MWJceDYyXHgxOW9ceGNjXHgwNCIpLAotICAgIHN0ZDo6c3RyaW5nKCJcXFwiXHhl
OFx4YjBceGI3XHhlNlx4YWRceDhjXFxcIiBpcyBHb29nbGVcXFwncyBDaGluZXNlIG5hbWUiKSwK
KyAgICAgIHN0ZDo6c3RyaW5nKCJmb29cbnh4XHJcYlwwMDIzIiksCisgICAgICBzdGQ6OnN0cmlu
ZygiIiksCisgICAgICBzdGQ6OnN0cmluZygiYWJjIiksCisgICAgICBzdGQ6OnN0cmluZygiXDFj
aGFkX3J1bGVzIiksCisgICAgICBzdGQ6OnN0cmluZygiXDFhcm5hcl9kcm9vbHMiKSwKKyAgICAg
IHN0ZDo6c3RyaW5nKCJ4eHh4XHJcdCdcIlxcIiksCisgICAgICBzdGQ6OnN0cmluZygiXDB4eFww
IiwgNCksCisgICAgICBzdGQ6OnN0cmluZygiXHgwMVx4MzEiKSwKKyAgICAgIHN0ZDo6c3RyaW5n
KCJhYmNceGJceDQyXDE0MWJjIiksCisgICAgICBzdGQ6OnN0cmluZygiMTIzXDFceDMxXHgzMlx4
MzMiKSwKKyAgICAgIHN0ZDo6c3RyaW5nKCJceGMxXHhjYVx4MWJceDYyXHgxOW9ceGNjXHgwNCIp
LAorICAgICAgc3RkOjpzdHJpbmcoCisgICAgICAgICAgIlxcXCJceGU4XHhiMFx4YjdceGU2XHhh
ZFx4OGNcXFwiIGlzIEdvb2dsZVxcXCdzIENoaW5lc2UgbmFtZSIpLAogICB9OwogICAvLyBEbyB0
aGlzIHR3aWNlLCBvbmNlIGZvciBvY3RhbCBlc2NhcGVzIGFuZCBvbmNlIGZvciBoZXggZXNjYXBl
cy4KICAgZm9yIChpbnQga2luZCA9IDA7IGtpbmQgPCA0OyBraW5kKyspIHsKQEAgLTcxLDYgKzcy
LDExIEBAIFRFU1QoQ0VzY2FwZSwgRXNjYXBlQW5kVW5lc2NhcGUpIHsKICAgICAgIEVYUEVDVF9U
UlVFKGFic2w6OkNVbmVzY2FwZShlc2NhcGVkLCAmdW5lc2NhcGVkX3N0cikpOwogICAgICAgRVhQ
RUNUX0VRKHVuZXNjYXBlZF9zdHIsIG9yaWdpbmFsKTsKIAorICAgICAgdW5lc2NhcGVkX3N0ci5l
cmFzZSgpOworICAgICAgc3RkOjpzdHJpbmcgZXJyb3I7CisgICAgICBFWFBFQ1RfVFJVRShhYnNs
OjpDVW5lc2NhcGUoZXNjYXBlZCwgJnVuZXNjYXBlZF9zdHIsICZlcnJvcikpOworICAgICAgRVhQ
RUNUX0VRKGVycm9yLCAiIik7CisKICAgICAgIC8vIENoZWNrIGluLXBsYWNlIHVuZXNjYXBpbmcK
ICAgICAgIHN0ZDo6c3RyaW5nIHMgPSBlc2NhcGVkOwogICAgICAgRVhQRUNUX1RSVUUoYWJzbDo6
Q1VuZXNjYXBlKHMsICZzKSk7CkBAIC0xNDksNyArMTU1LDggQEAgVEVTVChDRXNjYXBlLCBCYXNp
Y0VzY2FwaW5nKSB7CiAKIFRFU1QoVW5lc2NhcGUsIEJhc2ljRnVuY3Rpb24pIHsKICAgZXBhaXIg
dGVzdHNbXSA9Ci0gICAge3siXFx1MDAzMCIsICIwIn0sCisgICAge3siIiwgIiJ9LAorICAgICB7
IlxcdTAwMzAiLCAiMCJ9LAogICAgICB7IlxcdTAwQTMiLCAiXHhDMlx4QTMifSwKICAgICAgeyJc
XHUyMkZEIiwgIlx4RTJceDhCXHhCRCJ9LAogICAgICB7IlxcVTAwMDEwMDAwIiwgIlx4RjBceDkw
XHg4MFx4ODAifSwKQEAgLTE1OSwyMCArMTY2LDIyIEBAIFRFU1QoVW5lc2NhcGUsIEJhc2ljRnVu
Y3Rpb24pIHsKICAgICBFWFBFQ1RfVFJVRShhYnNsOjpDVW5lc2NhcGUodmFsLmVzY2FwZWQsICZv
dXQpKTsKICAgICBFWFBFQ1RfRVEob3V0LCB2YWwudW5lc2NhcGVkKTsKICAgfQotICBzdGQ6OnN0
cmluZyBiYWRbXSA9Ci0gICAgIHsiXFx1MSIsICAgICAgICAgLy8gdG9vIHNob3J0Ci0gICAgICAi
XFxVMSIsICAgICAgICAgLy8gdG9vIHNob3J0Ci0gICAgICAiXFxVZmZmZmZmIiwgICAgLy8gZXhj
ZWVkcyAweDEwZmZmZiAobGFyZ2VzdCBVbmljb2RlKQotICAgICAgIlxcVTAwMTEwMDAwIiwgIC8v
IGV4Y2VlZHMgMHgxMGZmZmYgKGxhcmdlc3QgVW5pY29kZSkKLSAgICAgICJcXHVEODM1IiwgICAg
ICAvLyBzdXJyb2dhdGUgY2hhcmFjdGVyIChEODAwLURGRkYpCi0gICAgICAiXFxVMDAwMEREMDQi
LCAgLy8gc3Vycm9nYXRlIGNoYXJhY3RlciAoRDgwMC1ERkZGKQotICAgICAgIlxcNzc3IiwgICAg
ICAgIC8vIGV4Y2VlZHMgMHhmZgotICAgICAgIlxceEFCQ0QifTsgICAgIC8vIGV4Y2VlZHMgMHhm
ZgorICBzdGQ6OnN0cmluZyBiYWRbXSA9IHsiXFx1MSIsICAgICAgICAgLy8gdG9vIHNob3J0Cisg
ICAgICAgICAgICAgICAgICAgICAgICJcXFUxIiwgICAgICAgICAvLyB0b28gc2hvcnQKKyAgICAg
ICAgICAgICAgICAgICAgICAgIlxcVWZmZmZmZiIsICAgIC8vIGV4Y2VlZHMgMHgxMGZmZmYgKGxh
cmdlc3QgVW5pY29kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIlxcVTAwMTEwMDAwIiwgIC8v
IGV4Y2VlZHMgMHgxMGZmZmYgKGxhcmdlc3QgVW5pY29kZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIlxcdUQ4MzUiLCAgICAgIC8vIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgKEQ4MDAtREZGRikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIlxcVTAwMDBERDA0IiwgIC8vIHN1cnJvZ2F0ZSBjaGFyYWN0
ZXIgKEQ4MDAtREZGRikKKyAgICAgICAgICAgICAgICAgICAgICAgIlxcNzc3IiwgICAgICAgIC8v
IGV4Y2VlZHMgMHhmZgorICAgICAgICAgICAgICAgICAgICAgICAiXFx4QUJDRCJ9OyAgICAgLy8g
ZXhjZWVkcyAweGZmCiAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcmIGUgOiBiYWQpIHsKICAgICBz
dGQ6OnN0cmluZyBlcnJvcjsKICAgICBzdGQ6OnN0cmluZyBvdXQ7CiAgICAgRVhQRUNUX0ZBTFNF
KGFic2w6OkNVbmVzY2FwZShlLCAmb3V0LCAmZXJyb3IpKTsKICAgICBFWFBFQ1RfRkFMU0UoZXJy
b3IuZW1wdHkoKSk7CisKKyAgICBvdXQuZXJhc2UoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYWJzbDo6
Q1VuZXNjYXBlKGUsICZvdXQpKTsKICAgfQogfQogCkBAIC0yNTgsOSArMjY3LDExIEBAIFRFU1Rf
RihDVW5lc2NhcGVUZXN0LCBVbmVzY2FwZXNNdWx0aXBsZU9jdGFsTnVsbHMpIHsKICAgLy8gQWxs
IGVzY2FwZXMsIGluY2x1ZGluZyBuZXdsaW5lcyBhbmQgbnVsbCBlc2NhcGVzLCBzaG91bGQgaGF2
ZSBiZWVuCiAgIC8vIGNvbnZlcnRlZCB0byB0aGUgZXF1aXZhbGVudCBjaGFyYWN0ZXJzLgogICBF
WFBFQ1RfRVEoc3RkOjpzdHJpbmcoIlwwXG4iCi0gICAgICAgICAgICAgICAgICAgIjBcbiIKLSAg
ICAgICAgICAgICAgICAgICAiXDBcbiIKLSAgICAgICAgICAgICAgICAgICAiXDAiLCA3KSwgcmVz
dWx0X3N0cmluZ18pOworICAgICAgICAgICAgICAgICAgICAgICAgIjBcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJcMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlwwIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDcpLAorICAgICAgICAgICAgcmVzdWx0X3N0cmluZ18pOwogfQog
CiAKQEAgLTI2OCwxNyArMjc5LDIxIEBAIFRFU1RfRihDVW5lc2NhcGVUZXN0LCBVbmVzY2FwZXNN
dWx0aXBsZUhleE51bGxzKSB7CiAgIHN0ZDo6c3RyaW5nIG9yaWdpbmFsX3N0cmluZyhrU3RyaW5n
V2l0aE11bHRpcGxlSGV4TnVsbHMpOwogICBFWFBFQ1RfVFJVRShhYnNsOjpDVW5lc2NhcGUob3Jp
Z2luYWxfc3RyaW5nLCAmcmVzdWx0X3N0cmluZ18pKTsKICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5n
KCJcMFxuIgotICAgICAgICAgICAgICAgICAgICIwXG4iCi0gICAgICAgICAgICAgICAgICAgIlww
XG4iCi0gICAgICAgICAgICAgICAgICAgIlwwIiwgNyksIHJlc3VsdF9zdHJpbmdfKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICIwXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXDBcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICJcMCIsCisgICAgICAgICAgICAgICAgICAgICAgICA3
KSwKKyAgICAgICAgICAgIHJlc3VsdF9zdHJpbmdfKTsKIH0KIAogVEVTVF9GKENVbmVzY2FwZVRl
c3QsIFVuZXNjYXBlc011bHRpcGxlVW5pY29kZU51bGxzKSB7CiAgIHN0ZDo6c3RyaW5nIG9yaWdp
bmFsX3N0cmluZyhrU3RyaW5nV2l0aE11bHRpcGxlVW5pY29kZU51bGxzKTsKICAgRVhQRUNUX1RS
VUUoYWJzbDo6Q1VuZXNjYXBlKG9yaWdpbmFsX3N0cmluZywgJnJlc3VsdF9zdHJpbmdfKSk7CiAg
IEVYUEVDVF9FUShzdGQ6OnN0cmluZygiXDBcbiIKLSAgICAgICAgICAgICAgICAgICAiMFxuIgot
ICAgICAgICAgICAgICAgICAgICJcMCIsIDUpLCByZXN1bHRfc3RyaW5nXyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAiMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlwwIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDUpLAorICAgICAgICAgICAgcmVzdWx0X3N0cmluZ18pOwogfQog
CiBzdGF0aWMgc3RydWN0IHsKQEAgLTU1MCw2ICs1NjUsNyBAQCB2b2lkIFRlc3RFc2NhcGVBbmRV
bmVzY2FwZSgpIHsKICAgICBTdHJpbmdUeXBlIGVuY29kZWQoInRoaXMganVuayBzaG91bGQgYmUg
aWdub3JlZCIpOwogICAgIGFic2w6OkJhc2U2NEVzY2FwZSh0Yy5wbGFpbnRleHQsICZlbmNvZGVk
KTsKICAgICBFWFBFQ1RfRVEoZW5jb2RlZCwgdGMuY3lwaGVydGV4dCk7CisgICAgRVhQRUNUX0VR
KGFic2w6OkJhc2U2NEVzY2FwZSh0Yy5wbGFpbnRleHQpLCB0Yy5jeXBoZXJ0ZXh0KTsKIAogICAg
IFN0cmluZ1R5cGUgZGVjb2RlZCgidGhpcyBqdW5rIHNob3VsZCBiZSBpZ25vcmVkIik7CiAgICAg
RVhQRUNUX1RSVUUoYWJzbDo6QmFzZTY0VW5lc2NhcGUoZW5jb2RlZCwgJmRlY29kZWQpKTsKQEAg
LTU2OCw2ICs1ODQsNyBAQCB2b2lkIFRlc3RFc2NhcGVBbmRVbmVzY2FwZSgpIHsKICAgICBlbmNv
ZGVkID0gInRoaXMganVuayBzaG91bGQgYmUgaWdub3JlZCI7CiAgICAgYWJzbDo6V2ViU2FmZUJh
c2U2NEVzY2FwZSh0Yy5wbGFpbnRleHQsICZlbmNvZGVkKTsKICAgICBFWFBFQ1RfRVEoZW5jb2Rl
ZCwgd2Vic2FmZSk7CisgICAgRVhQRUNUX0VRKGFic2w6OldlYlNhZmVCYXNlNjRFc2NhcGUodGMu
cGxhaW50ZXh0KSwgd2Vic2FmZSk7CiAKICAgICAvLyBMZXQncyB0cnkgdGhlIHN0ZDo6c3RyaW5n
IHZlcnNpb24gb2YgdGhlIGRlY29kZXIKICAgICBkZWNvZGVkID0gInRoaXMganVuayBzaG91bGQg
YmUgaWdub3JlZCI7CkBAIC01ODAsNiArNTk3LDcgQEAgdm9pZCBUZXN0RXNjYXBlQW5kVW5lc2Nh
cGUoKSB7CiAgICAgU3RyaW5nVHlwZSBidWZmZXI7CiAgICAgYWJzbDo6V2ViU2FmZUJhc2U2NEVz
Y2FwZSh0Yy5wbGFpbnRleHQsICZidWZmZXIpOwogICAgIEVYUEVDVF9FUSh0Yy5jeXBoZXJ0ZXh0
LCBidWZmZXIpOworICAgIEVYUEVDVF9FUShhYnNsOjpXZWJTYWZlQmFzZTY0RXNjYXBlKHRjLnBs
YWludGV4dCksIHRjLmN5cGhlcnRleHQpOwogICB9CiAKICAgLy8gVmVyaWZ5IHRoZSBiZWhhdmlv
ciB3aGVuIGRlY29kaW5nIGJhZCBkYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL2NoYXJfbWFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJfbWFwLmgKaW5kZXgg
OGQ5Mjk2M2E0ZGVhM2RjMTFjYTcxMjMyZDBiM2YwODg5NjBkNGQwMy4uYjkxMDhiOGNkZGQwNGRi
MDA4YmE5MmZiMTg5ZmNiNjMyY2E3YzExMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9jaGFyX21hcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXAuaApA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyX21hcF9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL2NoYXJfbWFwX2JlbmNobWFyay5jYwppbmRleCBjNDVmMzE1N2MyOTE3OTI2ZDcy
YWI4ODgxMjBkNWE1NzdlYmZhZjhhLi41Y2VmOTY3YjMwODcwZGE2ZjUyNGZlZDNmZDRlNzc3OGQy
MmUwMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJfbWFwX2JlbmNo
bWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJfbWFwX2JlbmNobWFyay5j
YwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyX21hcF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9jaGFyX21hcF90ZXN0LmNjCmluZGV4IGMzNjAxZTEwMWUyYTkzNmZmNTdhMmZhZTk4
MGNmNGY4MDBiZjhjNGMuLmQzMzA2MjQxYTQwNDFjMGJkMjMxYTMwMzczMGM2Njk3MGU0ZTdmZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXBfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJfbWFwX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvY2hhcmNvbnZfYmlnaW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29u
dl9iaWdpbnQuY2MKaW5kZXggM2U3Mjk2ZTcwNjhhNTRiMTNlMDMwMTZkZDRlM2EyNjFhZjc4ZTA0
OC4uOTVkNDcxZDllMjJjYWY4MTc4Njc0ZmE0YTljZjQ1NzVmYzA0NWRjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9iaWdpbnQuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9jaGFyY29udl9iaWdpbnQuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hh
cmNvbnZfYmlnaW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X2JpZ2ludC5o
CmluZGV4IGFhNzBhZjJjMjg5NDFhY2MxZmQ5YmIwNzBjNWY1ZWJkMzkwM2Y2ZDIuLjdkYTlhN2U3
NWFjZWMyOWFiMWZkNWY5YzI5OWZjZDRkNTQwNmRlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9jaGFyY29udl9iaWdpbnQuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtNTcsMTcgKzU3LDEwIEBAIGNsYXNzIEJpZ1Vuc2lnbmVkIHsKICAgICAgICAgICAg
ICAgICAidW5zdXBwb3J0ZWQgbWF4X3dvcmRzIHZhbHVlIik7CiAKICAgQmlnVW5zaWduZWQoKSA6
IHNpemVfKDApLCB3b3Jkc197fSB7fQotICBleHBsaWNpdCBCaWdVbnNpZ25lZCh1aW50MzJfdCB2
KSA6IHNpemVfKHYgPiAwID8gMSA6IDApLCB3b3Jkc197dn0ge30KLSAgZXhwbGljaXQgQmlnVW5z
aWduZWQodWludDY0X3QgdikKLSAgICAgIDogc2l6ZV8oMCksCi0gICAgICAgIHdvcmRzX3tzdGF0
aWNfY2FzdDx1aW50MzJfdD4odiAmIDB4ZmZmZmZmZmYpLAotICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHYgPj4gMzIpfSB7Ci0gICAgaWYgKHdvcmRzX1sxXSkgewotICAgICAg
c2l6ZV8gPSAyOwotICAgIH0gZWxzZSBpZiAod29yZHNfWzBdKSB7Ci0gICAgICBzaXplXyA9IDE7
Ci0gICAgfQotICB9CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBCaWdVbnNpZ25lZCh1aW50NjRfdCB2
KQorICAgICAgOiBzaXplXygodiA+PiAzMikgPyAyIDogdiA/IDEgOiAwKSwKKyAgICAgICAgd29y
ZHNfe3N0YXRpY19jYXN0PHVpbnQzMl90Pih2ICYgMHhmZmZmZmZmZnUpLAorICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHYgPj4gMzIpfSB7fQogCiAgIC8vIENvbnN0cnVjdHMg
YSBCaWdVbnNpZ25lZCBmcm9tIHRoZSBnaXZlbiBzdHJpbmdfdmlldyBjb250YWluaW5nIGEgZGVj
aW1hbAogICAvLyB2YWx1ZS4gIElmIHRoZSBpbnB1dCBzdGQ6OnN0cmluZyBpcyBub3QgYSBkZWNp
bWFsIGludGVnZXIsIGNvbnN0cnVjdHMgYSAwCkBAIC0xMTAsMTIgKzEwMywxMiBAQCBjbGFzcyBC
aWdVbnNpZ25lZCB7CiAgICAgICAgIFNldFRvWmVybygpOwogICAgICAgICByZXR1cm47CiAgICAg
ICB9Ci0gICAgICBzaXplXyA9IHN0ZDo6bWluKHNpemVfICsgd29yZF9zaGlmdCwgbWF4X3dvcmRz
KTsKKyAgICAgIHNpemVfID0gKHN0ZDo6bWluKShzaXplXyArIHdvcmRfc2hpZnQsIG1heF93b3Jk
cyk7CiAgICAgICBjb3VudCAlPSAzMjsKICAgICAgIGlmIChjb3VudCA9PSAwKSB7CiAgICAgICAg
IHN0ZDo6Y29weV9iYWNrd2FyZCh3b3Jkc18sIHdvcmRzXyArIHNpemVfIC0gd29yZF9zaGlmdCwg
d29yZHNfICsgc2l6ZV8pOwogICAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IHN0
ZDo6bWluKHNpemVfLCBtYXhfd29yZHMgLSAxKTsgaSA+IHdvcmRfc2hpZnQ7IC0taSkgeworICAg
ICAgICBmb3IgKGludCBpID0gKHN0ZDo6bWluKShzaXplXywgbWF4X3dvcmRzIC0gMSk7IGkgPiB3
b3JkX3NoaWZ0OyAtLWkpIHsKICAgICAgICAgICB3b3Jkc19baV0gPSAod29yZHNfW2kgLSB3b3Jk
X3NoaWZ0XSA8PCBjb3VudCkgfAogICAgICAgICAgICAgICAgICAgICAgICh3b3Jkc19baSAtIHdv
cmRfc2hpZnQgLSAxXSA+PiAoMzIgLSBjb3VudCkpOwogICAgICAgICB9CkBAIC0yNzQsNyArMjY3
LDcgQEAgY2xhc3MgQmlnVW5zaWduZWQgewogICB2b2lkIE11bHRpcGx5QnkoaW50IG90aGVyX3Np
emUsIGNvbnN0IHVpbnQzMl90KiBvdGhlcl93b3JkcykgewogICAgIGNvbnN0IGludCBvcmlnaW5h
bF9zaXplID0gc2l6ZV87CiAgICAgY29uc3QgaW50IGZpcnN0X3N0ZXAgPQotICAgICAgICBzdGQ6
Om1pbihvcmlnaW5hbF9zaXplICsgb3RoZXJfc2l6ZSAtIDIsIG1heF93b3JkcyAtIDEpOworICAg
ICAgICAoc3RkOjptaW4pKG9yaWdpbmFsX3NpemUgKyBvdGhlcl9zaXplIC0gMiwgbWF4X3dvcmRz
IC0gMSk7CiAgICAgZm9yIChpbnQgc3RlcCA9IGZpcnN0X3N0ZXA7IHN0ZXAgPj0gMDsgLS1zdGVw
KSB7CiAgICAgICBNdWx0aXBseVN0ZXAob3JpZ2luYWxfc2l6ZSwgb3RoZXJfd29yZHMsIG90aGVy
X3NpemUsIHN0ZXApOwogICAgIH0KQEAgLTI5Myw3ICsyODYsNyBAQCBjbGFzcyBCaWdVbnNpZ25l
ZCB7CiAgICAgICAgICAgdmFsdWUgPSAwOwogICAgICAgICB9CiAgICAgICB9Ci0gICAgICBzaXpl
XyA9IHN0ZDo6bWluKG1heF93b3Jkcywgc3RkOjptYXgoaW5kZXggKyAxLCBzaXplXykpOworICAg
ICAgc2l6ZV8gPSAoc3RkOjptaW4pKG1heF93b3JkcywgKHN0ZDo6bWF4KShpbmRleCArIDEsIHNp
emVfKSk7CiAgICAgfQogICB9CiAKQEAgLTMxNiw3ICszMDksNyBAQCBjbGFzcyBCaWdVbnNpZ25l
ZCB7CiAgICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3JtYWxseSAzMi1iaXQgQWRkV2l0aENh
cnJ5KCkgc2V0cyBzaXplXywgYnV0IHNpbmNlIHdlIGRvbid0IGNhbGwKICAgICAgICAgLy8gaXQg
d2hlbiBgaGlnaGAgaXMgMCwgZG8gaXQgb3Vyc2VsdmVzIGhlcmUuCi0gICAgICAgIHNpemVfID0g
c3RkOjptaW4obWF4X3dvcmRzLCBzdGQ6Om1heChpbmRleCArIDEsIHNpemVfKSk7CisgICAgICAg
IHNpemVfID0gKHN0ZDo6bWluKShtYXhfd29yZHMsIChzdGQ6Om1heCkoaW5kZXggKyAxLCBzaXpl
XykpOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMzU1LDcgKzM0OCw3IEBAIGNsYXNzIEJpZ1Vu
c2lnbmVkIHsKIC8vIFJldHVybnMgLTEgaWYgbGhzIDwgcmhzLCAwIGlmIGxocyA9PSByaHMsIGFu
ZCAxIGlmIGxocyA+IHJocy4KIHRlbXBsYXRlIDxpbnQgTiwgaW50IE0+CiBpbnQgQ29tcGFyZShj
b25zdCBCaWdVbnNpZ25lZDxOPiYgbGhzLCBjb25zdCBCaWdVbnNpZ25lZDxNPiYgcmhzKSB7Ci0g
IGludCBsaW1pdCA9IHN0ZDo6bWF4KGxocy5zaXplKCksIHJocy5zaXplKCkpOworICBpbnQgbGlt
aXQgPSAoc3RkOjptYXgpKGxocy5zaXplKCksIHJocy5zaXplKCkpOwogICBmb3IgKGludCBpID0g
bGltaXQgLSAxOyBpID49IDA7IC0taSkgewogICAgIGNvbnN0IHVpbnQzMl90IGxoc193b3JkID0g
bGhzLkdldFdvcmQoaSk7CiAgICAgY29uc3QgdWludDMyX3QgcmhzX3dvcmQgPSByaHMuR2V0V29y
ZChpKTsKQEAgLTM3MCw3ICszNjMsNyBAQCBpbnQgQ29tcGFyZShjb25zdCBCaWdVbnNpZ25lZDxO
PiYgbGhzLCBjb25zdCBCaWdVbnNpZ25lZDxNPiYgcmhzKSB7CiAKIHRlbXBsYXRlIDxpbnQgTiwg
aW50IE0+CiBib29sIG9wZXJhdG9yPT0oY29uc3QgQmlnVW5zaWduZWQ8Tj4mIGxocywgY29uc3Qg
QmlnVW5zaWduZWQ8TT4mIHJocykgewotICBpbnQgbGltaXQgPSBzdGQ6Om1heChsaHMuc2l6ZSgp
LCByaHMuc2l6ZSgpKTsKKyAgaW50IGxpbWl0ID0gKHN0ZDo6bWF4KShsaHMuc2l6ZSgpLCByaHMu
c2l6ZSgpKTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW1pdDsgKytpKSB7CiAgICAgaWYgKGxo
cy5HZXRXb3JkKGkpICE9IHJocy5HZXRXb3JkKGkpKSB7CiAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X2JpZ2ludF90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9iaWdpbnRfdGVzdC5jYwppbmRleCA5
YjYzNTc4ODhmYmY0N2ViZGNjNmNkNTE2YjgxYWQxNDBiOTdjYmE1Li43NDU3MTRhY2ExYjNhODk0
MmU5MDdlOGZmNGIxZGQ4ODA0NGUxMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL2NoYXJjb252X2JpZ2ludF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
Y2hhcmNvbnZfYmlnaW50X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFy
c2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlLmNjCmluZGV4IDdl
NGRhYmMyMjYyZWZmNzcyNmI3MmY1NDgwMzE1NGEwNDJhYWE3MTguLmYzYzcyMzI0MDNhMWI4MjAw
NTRiNWMyZjk3NzcyODIwYWI2MmMxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvY2hhcmNvbnZfcGFyc2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29u
dl9wYXJzZS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZS5oCmluZGV4IDdhNWMwODc0YjgwNGE1ODUz
ODk4OWFhYTBmZDZkNmRkOGIzMWIyOGIuLjQ0ZDA2YjJlOWJkNGZjNDZkM2UzZDRmOWQ0NjkzZDM5
YzQwNTNhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFy
c2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlLmgKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2VfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvY2hhcmNvbnZfcGFyc2VfdGVzdC5jYwppbmRleCBmNDhiOWFlZTFhNWU4NGRiM2IxY2My
OTZhYWIzNjNmMmMzM2RiMzcyLi45NTExYzk4NzQ1MDA3OTkyYjRmYTA4ODMyMmU2ZTk2MzM0YmNm
Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlX3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZV90ZXN0LmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL2VzY2FwaW5nX3Rlc3RfY29tbW9uLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL2VzY2FwaW5nX3Rlc3RfY29tbW9uLmgKaW5kZXggY2M0MWY0MzEyYzdjMTMw
NmU3OTEwMGE5MTFiMzQ3YTk5YzBiMjRjMS4uYmQ4MDMwMzE4MTczYTgyMjZmZjZiYTlhZWE5MDRl
ZWU5ZmEzOGIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9lc2NhcGluZ190
ZXN0X2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvZXNjYXBpbmdfdGVzdF9j
b21tb24uaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9tZW11dGlsLmNjCmluZGV4IGEwZGU3MGRmZmRiZGMwMjczYTIwYzgxNzgxYjk0ZmFh
ODcyMzMzNTEuLjc3YWE2M2MyYzM3MmYxNWQ0ZmU3YmZlOWY5YTgyZGZkNjhhZTVmYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL21lbXV0aWwuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmgKaW5kZXggN2RlMzgzYjE5ZWMzZmMwZjZj
OTMzMWE0MWQ5NDE3M2M1NTFhZWNiZC4uN2MwNzFhODIwMWZhYjAyMTNiMzAzNWQ1YThmOTIxMGM4
MWMwNjg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
bWVtdXRpbF9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWxfYmVu
Y2htYXJrLmNjCmluZGV4IDc3OTE1YWRiOTU4ZWU1OGI1ZjVjNTgyNWNkODdhNGM5NzE0NGRhMmQu
LmRjOTVjM2U1ZTU1YWQ0NTk5OTRlZjRhM2VhY2Q3MTNkMTVmYTJlNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbF9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9tZW11dGlsX2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9t
ZW11dGlsX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWxfdGVzdC5jYwpp
bmRleCAwOTQyNGRlOWE0NzdmNGU4YTlhMzgyMWQ5ZWYwNTJkMmYwYzJiMTlkLi5kODY4MWRkZjRl
M2IwYzQzMTNiNDYyM2VlYzRmMjdiY2M1MGVlZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL21lbXV0aWxfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21l
bXV0aWxfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9udW1iZXJzX3Rlc3RfY29tbW9uLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL251bWJlcnNfdGVzdF9jb21tb24uaAppbmRleCAyMGUz
YWY1MTE0MWVmYmVkMDU4OWY1NDQwNjBlYWFlNjk1OGIxNTkwLi4yODI0NzIwNWFmNDg2YjFmYTdh
OTc1MDI1OTg0YjFjNWNlYmRiOThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L251bWJlcnNfdGVzdF9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL251bWJl
cnNfdGVzdF9jb21tb24uaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtNjQsMTEgKzY0LDExIEBAIHN0cnVjdCB1aW50MzJfdGVzdF9jYXNlIHsKIAogaW5saW5l
IGNvbnN0IHN0ZDo6YXJyYXk8dWludDMyX3Rlc3RfY2FzZSwgMjc+JiBzdHJ0b3VpbnQzMl90ZXN0
X2Nhc2VzKCkgewogICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50MzJfdGVzdF9jYXNlLCAy
Nz4gdGVzdF9jYXNlc3t7Ci0gICAgICB7IjB4ZmZmZmZmZmYiLCB0cnVlLCAxNiwgc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpfSwKKyAgICAgIHsiMHhmZmZmZmZmZiIsIHRydWUs
IDE2LCAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCkoKX0sCiAgICAgICB7IjB4
MzQyMzQzMjQiLCB0cnVlLCAxNiwgMHgzNDIzNDMyNH0sCiAgICAgICB7IjM0MjM0MzI0IiwgdHJ1
ZSwgMTYsIDB4MzQyMzQzMjR9LAogICAgICAgeyIwIiwgdHJ1ZSwgMTYsIDB9LAotICAgICAgeyIg
XHRcbiAweGZmZmZmZmZmIiwgdHJ1ZSwgMTYsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+
OjptYXgoKX0sCisgICAgICB7IiBcdFxuIDB4ZmZmZmZmZmYiLCB0cnVlLCAxNiwgKHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgpKCl9LAogICAgICAgeyIgXGZcdiA0NiIsIHRydWUs
IDEwLCA0Nn0sICAvLyBtdXN0IGFjY2VwdCB3ZWlyZCB3aGl0ZXNwYWNlCiAgICAgICB7IiBcdFxu
IDcyNzE3MjIyIiwgdHJ1ZSwgOCwgMDcyNzE3MjIyfSwKICAgICAgIHsiIFx0XG4gMDcyNzE3MjIy
IiwgdHJ1ZSwgOCwgMDcyNzE3MjIyfSwKQEAgLTc3LDcgKzc3LDcgQEAgaW5saW5lIGNvbnN0IHN0
ZDo6YXJyYXk8dWludDMyX3Rlc3RfY2FzZSwgMjc+JiBzdHJ0b3VpbnQzMl90ZXN0X2Nhc2VzKCkg
ewogCiAgICAgICAvLyBCYXNlLTEwIHZlcnNpb24uCiAgICAgICB7IjM0MjM0MzI0IiwgdHJ1ZSwg
MCwgMzQyMzQzMjR9LAotICAgICAgeyI0Mjk0OTY3Mjk1IiwgdHJ1ZSwgMCwgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MzJfdD46Om1heCgpfSwKKyAgICAgIHsiNDI5NDk2NzI5NSIsIHRydWUsIDAs
IChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KSgpfSwKICAgICAgIHsiMzQyMzQz
MjQgXG5cdCIsIHRydWUsIDEwLCAzNDIzNDMyNH0sCiAKICAgICAgIC8vIFVudXN1YWwgYmFzZQpA
QCAtOTYsOCArOTYsOCBAQCBpbmxpbmUgY29uc3Qgc3RkOjphcnJheTx1aW50MzJfdGVzdF9jYXNl
LCAyNz4mIHN0cnRvdWludDMyX3Rlc3RfY2FzZXMoKSB7CiAgICAgICB7IiBcdFxuIC0xMjMiLCBm
YWxzZSwgMCwgMH0sCiAKICAgICAgIC8vIE91dCBvZiBib3VuZHMuCi0gICAgICB7IjQyOTQ5Njcy
OTYiLCBmYWxzZSwgMCwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpfSwKLSAg
ICAgIHsiMHgxMDAwMDAwMDAiLCBmYWxzZSwgMCwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJf
dD46Om1heCgpfSwKKyAgICAgIHsiNDI5NDk2NzI5NiIsIGZhbHNlLCAwLCAoc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MzJfdD46Om1heCkoKX0sCisgICAgICB7IjB4MTAwMDAwMDAwIiwgZmFsc2Us
IDAsIChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KSgpfSwKICAgICAgIHtudWxs
cHRyLCBmYWxzZSwgMCwgMH0sCiAgIH19OwogICByZXR1cm4gdGVzdF9jYXNlczsKQEAgLTExOSw3
ICsxMTksNyBAQCBpbmxpbmUgY29uc3Qgc3RkOjphcnJheTx1aW50NjRfdGVzdF9jYXNlLCAzND4m
IHN0cnRvdWludDY0X3Rlc3RfY2FzZXMoKSB7CiAgICAgICB7IjAwMCIsIHRydWUsIDAsIDB9LAog
ICAgICAgeyIwIiwgdHJ1ZSwgMCwgMH0sCiAgICAgICB7IiBcdFxuIDB4ZmZmZmZmZmZmZmZmZmZm
ZiIsIHRydWUsIDE2LAotICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KX0sCisgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgpKCl9LAogCiAg
ICAgICB7IjAxMjM0NTY3MDEyMzQ1NjcwMTIzNCIsIHRydWUsIDgsIGludDY0X3R7MDEyMzQ1Njcw
MTIzNDU2NzAxMjM0fX0sCiAgICAgICB7IjEyMzQ1NjcwMTIzNDU2NzAxMjM0IiwgdHJ1ZSwgOCwg
aW50NjRfdHswMTIzNDU2NzAxMjM0NTY3MDEyMzR9fSwKQEAgLTEzMCw3ICsxMzAsNyBAQCBpbmxp
bmUgY29uc3Qgc3RkOjphcnJheTx1aW50NjRfdGVzdF9jYXNlLCAzND4mIHN0cnRvdWludDY0X3Rl
c3RfY2FzZXMoKSB7CiAgICAgICB7IjM0MjM0MzI0NDg3ODM0NDY2IiwgdHJ1ZSwgMCwgaW50NjRf
dHszNDIzNDMyNDQ4NzgzNDQ2Nn19LAogCiAgICAgICB7IiBcdFxuIDE4NDQ2NzQ0MDczNzA5NTUx
NjE1IiwgdHJ1ZSwgMCwKLSAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCl9LAorICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KSgpfSwKIAog
ICAgICAgeyIzNDIzNDMyNDQ4NzgzNDQ2NiBcblx0ICIsIHRydWUsIDAsIGludDY0X3R7MzQyMzQz
MjQ0ODc4MzQ0NjZ9fSwKIApAQCAtMTU2LDEyICsxNTYsMTMgQEAgaW5saW5lIGNvbnN0IHN0ZDo6
YXJyYXk8dWludDY0X3Rlc3RfY2FzZSwgMzQ+JiBzdHJ0b3VpbnQ2NF90ZXN0X2Nhc2VzKCkgewog
ICAgICAgLy8gT3V0IG9mIGJvdW5kcy4KICAgICAgIHsiMTg0NDY3NDQwNzM3MDk1NTE2MTYiLCBm
YWxzZSwgMTAsIDB9LAogICAgICAgeyIxODQ0Njc0NDA3MzcwOTU1MTYxNiIsIGZhbHNlLCAwLCAw
fSwKLSAgICAgIHsiMHgxMDAwMDAwMDAwMDAwMDAwMCIsIGZhbHNlLCAxNiwgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46Om1heCgpfSwKKyAgICAgIHsiMHgxMDAwMDAwMDAwMDAwMDAwMCIs
IGZhbHNlLCAxNiwKKyAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCko
KX0sCiAgICAgICB7IjBYMTAwMDAwMDAwMDAwMDAwMDAiLCBmYWxzZSwgMTYsCi0gICAgICAgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpfSwgIC8vIDBYIHZlcnN1cyAweC4KLSAg
ICAgIHsiMHgxMDAwMDAwMDAwMDAwMDAwMCIsIGZhbHNlLCAwLCBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQ2NF90Pjo6bWF4KCl9LAorICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90
Pjo6bWF4KSgpfSwgIC8vIDBYIHZlcnN1cyAweC4KKyAgICAgIHsiMHgxMDAwMDAwMDAwMDAwMDAw
MCIsIGZhbHNlLCAwLCAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCkoKX0sCiAg
ICAgICB7IjBYMTAwMDAwMDAwMDAwMDAwMDAiLCBmYWxzZSwgMCwKLSAgICAgICBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCl9LCAgLy8gMFggdmVyc3VzIDB4LgorICAgICAgIChz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KSgpfSwgIC8vIDBYIHZlcnN1cyAweC4K
IAogICAgICAgeyIweDEyMzQiLCB0cnVlLCAxNiwgMHgxMjM0fSwKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9vc3RyaW5nc3RyZWFtLmNjCmluZGV4IDZlZTJiMTA5MDg4NzIyMDI0ZDRmNDQ4YjI3M2M2
MDU3ZGVlYTdlYWIuLmQwZjBmODRiNmFlNDU2M2UwYTRkNTY2YTRmNTI0NDMzMjVjZmQ1MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW0uY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvb3N0cmluZ3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFt
LmgKaW5kZXggZTgxYTg5YWZmZWEyNWJlMjZiYmNkMzEyMGNjNzA5NDUwMmEyZDgwNi4uMjA3OTIw
MTUxYjc4ZDNiZGMxYmQyOWVhNjU1ZDcyMGZkNGIwN2U3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9vc3RyaW5nc3RyZWFtLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTI1LDE4ICsyNSwxOCBAQAogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHN0cmlu
Z3NfaW50ZXJuYWwgewogCi0vLyBUaGUgc2FtZSBhcyBzdGQ6Om9zdHJpbmdzdHJlYW0gYnV0IGFw
cGVuZHMgdG8gYSB1c2VyLXNwZWNpZmllZCBzdHJpbmcsCisvLyBUaGUgc2FtZSBhcyBzdGQ6Om9z
dHJpbmdzdHJlYW0gYnV0IGFwcGVuZHMgdG8gYSB1c2VyLXNwZWNpZmllZCBzdGQ6OnN0cmluZywK
IC8vIGFuZCBpcyBmYXN0ZXIuIEl0IGlzIH43MCUgZmFzdGVyIHRvIGNyZWF0ZSwgfjUwJSBmYXN0
ZXIgdG8gd3JpdGUgdG8sIGFuZAotLy8gY29tcGxldGVseSBmcmVlIHRvIGV4dHJhY3QgdGhlIHJl
c3VsdCBzdHJpbmcuCisvLyBjb21wbGV0ZWx5IGZyZWUgdG8gZXh0cmFjdCB0aGUgcmVzdWx0IHN0
ZDo6c3RyaW5nLgogLy8KLS8vICAgc3RyaW5nIHM7CisvLyAgIHN0ZDo6c3RyaW5nIHM7CiAvLyAg
IE9TdHJpbmdTdHJlYW0gc3RybSgmcyk7CiAvLyAgIHN0cm0gPDwgNDIgPDwgJyAnIDw8IDMuMTQ7
ICAvLyBhcHBlbmRzIHRvIGBzYAogLy8KIC8vIFRoZSBzdHJlYW0gb2JqZWN0IGRvZXNuJ3QgaGF2
ZSB0byBiZSBuYW1lZC4gU3RhcnRpbmcgZnJvbSBDKysxMSBvcGVyYXRvcjw8CiAvLyB3b3JrcyB3
aXRoIHJ2YWx1ZXMgb2Ygc3RkOjpvc3RyZWFtLgogLy8KLS8vICAgc3RyaW5nIHM7CisvLyAgIHN0
ZDo6c3RyaW5nIHM7CiAvLyAgIE9TdHJpbmdTdHJlYW0oJnMpIDw8IDQyIDw8ICcgJyA8PCAzLjE0
OyAgLy8gYXBwZW5kcyB0byBgc2AKIC8vCiAvLyBPU3RyaW5nU3RyZWFtIGlzIGZhc3RlciB0byBj
cmVhdGUgdGhhbiBzdGQ6Om9zdHJpbmdzdHJlYW0gYnV0IGl0J3Mgc3RpbGwKQEAgLTQ1LDE0ICs0
NSwxNCBAQCBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7CiAvLwogLy8gQ3JlYXRlcyB1bm5l
Y2Vzc2FyeSBpbnN0YW5jZXMgb2YgT1N0cmluZ1N0cmVhbTogc2xvdy4KIC8vCi0vLyAgIHN0cmlu
ZyBzOworLy8gICBzdGQ6OnN0cmluZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtKCZzKSA8PCA0MjsK
IC8vICAgT1N0cmluZ1N0cmVhbSgmcykgPDwgJyAnOwogLy8gICBPU3RyaW5nU3RyZWFtKCZzKSA8
PCAzLjE0OwogLy8KIC8vIENyZWF0ZXMgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgT1N0cmluZ1N0cmVh
bSBhbmQgcmV1c2VzIGl0OiBmYXN0LgogLy8KLS8vICAgc3RyaW5nIHM7CisvLyAgIHN0ZDo6c3Ry
aW5nIHM7CiAvLyAgIE9TdHJpbmdTdHJlYW0gc3RybSgmcyk7CiAvLyAgIHN0cm0gPDwgNDI7CiAv
LyAgIHN0cm0gPDwgJyAnOwpAQCAtNjQsOCArNjQsOCBAQCBjbGFzcyBPU3RyaW5nU3RyZWFtIDog
cHJpdmF0ZSBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxjaGFyPiwgcHVibGljIHN0ZDo6b3N0cmVhbSB7
CiAgIC8vIFRoZSBhcmd1bWVudCBjYW4gYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSB5b3UnbGwgbmVl
ZCB0byBjYWxsIHN0cihwKSB3aXRoIGEKICAgLy8gbm9uLW51bGwgYXJndW1lbnQgYmVmb3JlIHlv
dSBjYW4gd3JpdGUgdG8gdGhlIHN0cmVhbS4KICAgLy8KLSAgLy8gVGhlIGRlc3RydWN0b3Igb2Yg
T1N0cmluZ1N0cmVhbSBkb2Vzbid0IHVzZSB0aGUgc3RkOjpzdHJpbmcuIEl0J3MgT0sgdG8gZGVz
dHJveQotICAvLyB0aGUgc3RkOjpzdHJpbmcgYmVmb3JlIHRoZSBzdHJlYW0uCisgIC8vIFRoZSBk
ZXN0cnVjdG9yIG9mIE9TdHJpbmdTdHJlYW0gZG9lc24ndCB1c2UgdGhlIHN0ZDo6c3RyaW5nLiBJ
dCdzIE9LIHRvCisgIC8vIGRlc3Ryb3kgdGhlIHN0ZDo6c3RyaW5nIGJlZm9yZSB0aGUgc3RyZWFt
LgogICBleHBsaWNpdCBPU3RyaW5nU3RyZWFtKHN0ZDo6c3RyaW5nKiBzKSA6IHN0ZDo6b3N0cmVh
bSh0aGlzKSwgc18ocykge30KIAogICBzdGQ6OnN0cmluZyogc3RyKCkgeyByZXR1cm4gc187IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbV9iZW5jaG1h
cmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW1fYmVuY2htYXJrLmNj
CmluZGV4IGM5M2Y5NjkwOWQ4YjY1NDM0MjA0ZDAxMDY0NmY1OGY0NjIzZTRhZDEuLjU5NzlmMTgy
MzZlMzNjNjg5NTNkZDkzMjM3YWNiZWJiNjVmNWExMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbV9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtX2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9vc3RyaW5nc3RyZWFtX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdz
dHJlYW1fdGVzdC5jYwppbmRleCAwNjlhMGUxZmJiYjExNDUyMmVkMjJiOTFjYmIxOTkyMDYwMTky
Y2UxLi4yODc5ZTUwZWIzOGRjOTQzOTRjYWM2YzFmNDQ1ZGIxZDAyM2Y4MDEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW1fdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW1fdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9wb3cxMF9oZWxwZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBl
ci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wM2VkOGQwN2NkNDJiYmU1YTBmMTBhMDkzMWI0ZTg0MzAxNmM3Nzkz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9wb3cxMF9oZWxwZXIu
Y2MKQEAgLTAsMCArMSwxMjAgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBlci5oIgor
CisjaW5jbHVkZSA8Y21hdGg+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBzdHJpbmdz
X2ludGVybmFsIHsKKworbmFtZXNwYWNlIHsKKworLy8gVGhlIGV4YWN0IHZhbHVlIG9mIDFlMjMg
ZmFsbHMgcHJlY2lzZWx5IGhhbGZ3YXkgYmV0d2VlbiB0d28gcmVwcmVzZW50YWJsZQorLy8gZG91
Ymxlcy4gRnVydGhlcm1vcmUsIHRoZSByb3VuZGluZyBydWxlcyB3ZSBwcmVmZXIgKGJyZWFrIHRp
ZXMgYnkgcm91bmRpbmcKKy8vIHRvIHRoZSBuZWFyZXN0IGV2ZW4pIGRpY3RhdGUgaW4gdGhpcyBj
YXNlIHRoYXQgdGhlIG51bWJlciBzaG91bGQgYmUgcm91bmRlZAorLy8gZG93biwgYnV0IHRoaXMg
aXMgbm90IGNvbXBsZXRlbHkgc3BlY2lmaWVkIGZvciBmbG9hdGluZy1wb2ludCBsaXRlcmFscyBp
bgorLy8gQysrLiAoSXQganVzdCBzYXlzIHRvIHVzZSB0aGUgZGVmYXVsdCByb3VuZGluZyBtb2Rl
IG9mIHRoZSBzdGFuZGFyZAorLy8gbGlicmFyeS4pIFdlIGVuc3VyZSB0aGUgcmVzdWx0IHdlIHdh
bnQgYnkgdXNpbmcgYSBudW1iZXIgdGhhdCBoYXMgYW4KKy8vIHVuYW1iaWd1b3VzIGNvcnJlY3Rs
eSByb3VuZGVkIGFuc3dlci4KK2NvbnN0ZXhwciBkb3VibGUgazFlMjMgPSA5OTk5OTk5OTk5OTk5
OTk5ZTc7CisKK2NvbnN0ZXhwciBkb3VibGUga1Bvd2Vyc09mVGVuW10gPSB7CisgICAgMC4wLCAg
ICAxZS0zMjMsIDFlLTMyMiwgMWUtMzIxLCAxZS0zMjAsIDFlLTMxOSwgMWUtMzE4LCAxZS0zMTcs
IDFlLTMxNiwKKyAgICAxZS0zMTUsIDFlLTMxNCwgMWUtMzEzLCAxZS0zMTIsIDFlLTMxMSwgMWUt
MzEwLCAxZS0zMDksIDFlLTMwOCwgMWUtMzA3LAorICAgIDFlLTMwNiwgMWUtMzA1LCAxZS0zMDQs
IDFlLTMwMywgMWUtMzAyLCAxZS0zMDEsIDFlLTMwMCwgMWUtMjk5LCAxZS0yOTgsCisgICAgMWUt
Mjk3LCAxZS0yOTYsIDFlLTI5NSwgMWUtMjk0LCAxZS0yOTMsIDFlLTI5MiwgMWUtMjkxLCAxZS0y
OTAsIDFlLTI4OSwKKyAgICAxZS0yODgsIDFlLTI4NywgMWUtMjg2LCAxZS0yODUsIDFlLTI4NCwg
MWUtMjgzLCAxZS0yODIsIDFlLTI4MSwgMWUtMjgwLAorICAgIDFlLTI3OSwgMWUtMjc4LCAxZS0y
NzcsIDFlLTI3NiwgMWUtMjc1LCAxZS0yNzQsIDFlLTI3MywgMWUtMjcyLCAxZS0yNzEsCisgICAg
MWUtMjcwLCAxZS0yNjksIDFlLTI2OCwgMWUtMjY3LCAxZS0yNjYsIDFlLTI2NSwgMWUtMjY0LCAx
ZS0yNjMsIDFlLTI2MiwKKyAgICAxZS0yNjEsIDFlLTI2MCwgMWUtMjU5LCAxZS0yNTgsIDFlLTI1
NywgMWUtMjU2LCAxZS0yNTUsIDFlLTI1NCwgMWUtMjUzLAorICAgIDFlLTI1MiwgMWUtMjUxLCAx
ZS0yNTAsIDFlLTI0OSwgMWUtMjQ4LCAxZS0yNDcsIDFlLTI0NiwgMWUtMjQ1LCAxZS0yNDQsCisg
ICAgMWUtMjQzLCAxZS0yNDIsIDFlLTI0MSwgMWUtMjQwLCAxZS0yMzksIDFlLTIzOCwgMWUtMjM3
LCAxZS0yMzYsIDFlLTIzNSwKKyAgICAxZS0yMzQsIDFlLTIzMywgMWUtMjMyLCAxZS0yMzEsIDFl
LTIzMCwgMWUtMjI5LCAxZS0yMjgsIDFlLTIyNywgMWUtMjI2LAorICAgIDFlLTIyNSwgMWUtMjI0
LCAxZS0yMjMsIDFlLTIyMiwgMWUtMjIxLCAxZS0yMjAsIDFlLTIxOSwgMWUtMjE4LCAxZS0yMTcs
CisgICAgMWUtMjE2LCAxZS0yMTUsIDFlLTIxNCwgMWUtMjEzLCAxZS0yMTIsIDFlLTIxMSwgMWUt
MjEwLCAxZS0yMDksIDFlLTIwOCwKKyAgICAxZS0yMDcsIDFlLTIwNiwgMWUtMjA1LCAxZS0yMDQs
IDFlLTIwMywgMWUtMjAyLCAxZS0yMDEsIDFlLTIwMCwgMWUtMTk5LAorICAgIDFlLTE5OCwgMWUt
MTk3LCAxZS0xOTYsIDFlLTE5NSwgMWUtMTk0LCAxZS0xOTMsIDFlLTE5MiwgMWUtMTkxLCAxZS0x
OTAsCisgICAgMWUtMTg5LCAxZS0xODgsIDFlLTE4NywgMWUtMTg2LCAxZS0xODUsIDFlLTE4NCwg
MWUtMTgzLCAxZS0xODIsIDFlLTE4MSwKKyAgICAxZS0xODAsIDFlLTE3OSwgMWUtMTc4LCAxZS0x
NzcsIDFlLTE3NiwgMWUtMTc1LCAxZS0xNzQsIDFlLTE3MywgMWUtMTcyLAorICAgIDFlLTE3MSwg
MWUtMTcwLCAxZS0xNjksIDFlLTE2OCwgMWUtMTY3LCAxZS0xNjYsIDFlLTE2NSwgMWUtMTY0LCAx
ZS0xNjMsCisgICAgMWUtMTYyLCAxZS0xNjEsIDFlLTE2MCwgMWUtMTU5LCAxZS0xNTgsIDFlLTE1
NywgMWUtMTU2LCAxZS0xNTUsIDFlLTE1NCwKKyAgICAxZS0xNTMsIDFlLTE1MiwgMWUtMTUxLCAx
ZS0xNTAsIDFlLTE0OSwgMWUtMTQ4LCAxZS0xNDcsIDFlLTE0NiwgMWUtMTQ1LAorICAgIDFlLTE0
NCwgMWUtMTQzLCAxZS0xNDIsIDFlLTE0MSwgMWUtMTQwLCAxZS0xMzksIDFlLTEzOCwgMWUtMTM3
LCAxZS0xMzYsCisgICAgMWUtMTM1LCAxZS0xMzQsIDFlLTEzMywgMWUtMTMyLCAxZS0xMzEsIDFl
LTEzMCwgMWUtMTI5LCAxZS0xMjgsIDFlLTEyNywKKyAgICAxZS0xMjYsIDFlLTEyNSwgMWUtMTI0
LCAxZS0xMjMsIDFlLTEyMiwgMWUtMTIxLCAxZS0xMjAsIDFlLTExOSwgMWUtMTE4LAorICAgIDFl
LTExNywgMWUtMTE2LCAxZS0xMTUsIDFlLTExNCwgMWUtMTEzLCAxZS0xMTIsIDFlLTExMSwgMWUt
MTEwLCAxZS0xMDksCisgICAgMWUtMTA4LCAxZS0xMDcsIDFlLTEwNiwgMWUtMTA1LCAxZS0xMDQs
IDFlLTEwMywgMWUtMTAyLCAxZS0xMDEsIDFlLTEwMCwKKyAgICAxZS05OSwgIDFlLTk4LCAgMWUt
OTcsICAxZS05NiwgIDFlLTk1LCAgMWUtOTQsICAxZS05MywgIDFlLTkyLCAgMWUtOTEsCisgICAg
MWUtOTAsICAxZS04OSwgIDFlLTg4LCAgMWUtODcsICAxZS04NiwgIDFlLTg1LCAgMWUtODQsICAx
ZS04MywgIDFlLTgyLAorICAgIDFlLTgxLCAgMWUtODAsICAxZS03OSwgIDFlLTc4LCAgMWUtNzcs
ICAxZS03NiwgIDFlLTc1LCAgMWUtNzQsICAxZS03MywKKyAgICAxZS03MiwgIDFlLTcxLCAgMWUt
NzAsICAxZS02OSwgIDFlLTY4LCAgMWUtNjcsICAxZS02NiwgIDFlLTY1LCAgMWUtNjQsCisgICAg
MWUtNjMsICAxZS02MiwgIDFlLTYxLCAgMWUtNjAsICAxZS01OSwgIDFlLTU4LCAgMWUtNTcsICAx
ZS01NiwgIDFlLTU1LAorICAgIDFlLTU0LCAgMWUtNTMsICAxZS01MiwgIDFlLTUxLCAgMWUtNTAs
ICAxZS00OSwgIDFlLTQ4LCAgMWUtNDcsICAxZS00NiwKKyAgICAxZS00NSwgIDFlLTQ0LCAgMWUt
NDMsICAxZS00MiwgIDFlLTQxLCAgMWUtNDAsICAxZS0zOSwgIDFlLTM4LCAgMWUtMzcsCisgICAg
MWUtMzYsICAxZS0zNSwgIDFlLTM0LCAgMWUtMzMsICAxZS0zMiwgIDFlLTMxLCAgMWUtMzAsICAx
ZS0yOSwgIDFlLTI4LAorICAgIDFlLTI3LCAgMWUtMjYsICAxZS0yNSwgIDFlLTI0LCAgMWUtMjMs
ICAxZS0yMiwgIDFlLTIxLCAgMWUtMjAsICAxZS0xOSwKKyAgICAxZS0xOCwgIDFlLTE3LCAgMWUt
MTYsICAxZS0xNSwgIDFlLTE0LCAgMWUtMTMsICAxZS0xMiwgIDFlLTExLCAgMWUtMTAsCisgICAg
MWUtOSwgICAxZS04LCAgIDFlLTcsICAgMWUtNiwgICAxZS01LCAgIDFlLTQsICAgMWUtMywgICAx
ZS0yLCAgIDFlLTEsCisgICAgMWUrMCwgICAxZSsxLCAgIDFlKzIsICAgMWUrMywgICAxZSs0LCAg
IDFlKzUsICAgMWUrNiwgICAxZSs3LCAgIDFlKzgsCisgICAgMWUrOSwgICAxZSsxMCwgIDFlKzEx
LCAgMWUrMTIsICAxZSsxMywgIDFlKzE0LCAgMWUrMTUsICAxZSsxNiwgIDFlKzE3LAorICAgIDFl
KzE4LCAgMWUrMTksICAxZSsyMCwgIDFlKzIxLCAgMWUrMjIsICBrMWUyMywgIDFlKzI0LCAgMWUr
MjUsICAxZSsyNiwKKyAgICAxZSsyNywgIDFlKzI4LCAgMWUrMjksICAxZSszMCwgIDFlKzMxLCAg
MWUrMzIsICAxZSszMywgIDFlKzM0LCAgMWUrMzUsCisgICAgMWUrMzYsICAxZSszNywgIDFlKzM4
LCAgMWUrMzksICAxZSs0MCwgIDFlKzQxLCAgMWUrNDIsICAxZSs0MywgIDFlKzQ0LAorICAgIDFl
KzQ1LCAgMWUrNDYsICAxZSs0NywgIDFlKzQ4LCAgMWUrNDksICAxZSs1MCwgIDFlKzUxLCAgMWUr
NTIsICAxZSs1MywKKyAgICAxZSs1NCwgIDFlKzU1LCAgMWUrNTYsICAxZSs1NywgIDFlKzU4LCAg
MWUrNTksICAxZSs2MCwgIDFlKzYxLCAgMWUrNjIsCisgICAgMWUrNjMsICAxZSs2NCwgIDFlKzY1
LCAgMWUrNjYsICAxZSs2NywgIDFlKzY4LCAgMWUrNjksICAxZSs3MCwgIDFlKzcxLAorICAgIDFl
KzcyLCAgMWUrNzMsICAxZSs3NCwgIDFlKzc1LCAgMWUrNzYsICAxZSs3NywgIDFlKzc4LCAgMWUr
NzksICAxZSs4MCwKKyAgICAxZSs4MSwgIDFlKzgyLCAgMWUrODMsICAxZSs4NCwgIDFlKzg1LCAg
MWUrODYsICAxZSs4NywgIDFlKzg4LCAgMWUrODksCisgICAgMWUrOTAsICAxZSs5MSwgIDFlKzky
LCAgMWUrOTMsICAxZSs5NCwgIDFlKzk1LCAgMWUrOTYsICAxZSs5NywgIDFlKzk4LAorICAgIDFl
Kzk5LCAgMWUrMTAwLCAxZSsxMDEsIDFlKzEwMiwgMWUrMTAzLCAxZSsxMDQsIDFlKzEwNSwgMWUr
MTA2LCAxZSsxMDcsCisgICAgMWUrMTA4LCAxZSsxMDksIDFlKzExMCwgMWUrMTExLCAxZSsxMTIs
IDFlKzExMywgMWUrMTE0LCAxZSsxMTUsIDFlKzExNiwKKyAgICAxZSsxMTcsIDFlKzExOCwgMWUr
MTE5LCAxZSsxMjAsIDFlKzEyMSwgMWUrMTIyLCAxZSsxMjMsIDFlKzEyNCwgMWUrMTI1LAorICAg
IDFlKzEyNiwgMWUrMTI3LCAxZSsxMjgsIDFlKzEyOSwgMWUrMTMwLCAxZSsxMzEsIDFlKzEzMiwg
MWUrMTMzLCAxZSsxMzQsCisgICAgMWUrMTM1LCAxZSsxMzYsIDFlKzEzNywgMWUrMTM4LCAxZSsx
MzksIDFlKzE0MCwgMWUrMTQxLCAxZSsxNDIsIDFlKzE0MywKKyAgICAxZSsxNDQsIDFlKzE0NSwg
MWUrMTQ2LCAxZSsxNDcsIDFlKzE0OCwgMWUrMTQ5LCAxZSsxNTAsIDFlKzE1MSwgMWUrMTUyLAor
ICAgIDFlKzE1MywgMWUrMTU0LCAxZSsxNTUsIDFlKzE1NiwgMWUrMTU3LCAxZSsxNTgsIDFlKzE1
OSwgMWUrMTYwLCAxZSsxNjEsCisgICAgMWUrMTYyLCAxZSsxNjMsIDFlKzE2NCwgMWUrMTY1LCAx
ZSsxNjYsIDFlKzE2NywgMWUrMTY4LCAxZSsxNjksIDFlKzE3MCwKKyAgICAxZSsxNzEsIDFlKzE3
MiwgMWUrMTczLCAxZSsxNzQsIDFlKzE3NSwgMWUrMTc2LCAxZSsxNzcsIDFlKzE3OCwgMWUrMTc5
LAorICAgIDFlKzE4MCwgMWUrMTgxLCAxZSsxODIsIDFlKzE4MywgMWUrMTg0LCAxZSsxODUsIDFl
KzE4NiwgMWUrMTg3LCAxZSsxODgsCisgICAgMWUrMTg5LCAxZSsxOTAsIDFlKzE5MSwgMWUrMTky
LCAxZSsxOTMsIDFlKzE5NCwgMWUrMTk1LCAxZSsxOTYsIDFlKzE5NywKKyAgICAxZSsxOTgsIDFl
KzE5OSwgMWUrMjAwLCAxZSsyMDEsIDFlKzIwMiwgMWUrMjAzLCAxZSsyMDQsIDFlKzIwNSwgMWUr
MjA2LAorICAgIDFlKzIwNywgMWUrMjA4LCAxZSsyMDksIDFlKzIxMCwgMWUrMjExLCAxZSsyMTIs
IDFlKzIxMywgMWUrMjE0LCAxZSsyMTUsCisgICAgMWUrMjE2LCAxZSsyMTcsIDFlKzIxOCwgMWUr
MjE5LCAxZSsyMjAsIDFlKzIyMSwgMWUrMjIyLCAxZSsyMjMsIDFlKzIyNCwKKyAgICAxZSsyMjUs
IDFlKzIyNiwgMWUrMjI3LCAxZSsyMjgsIDFlKzIyOSwgMWUrMjMwLCAxZSsyMzEsIDFlKzIzMiwg
MWUrMjMzLAorICAgIDFlKzIzNCwgMWUrMjM1LCAxZSsyMzYsIDFlKzIzNywgMWUrMjM4LCAxZSsy
MzksIDFlKzI0MCwgMWUrMjQxLCAxZSsyNDIsCisgICAgMWUrMjQzLCAxZSsyNDQsIDFlKzI0NSwg
MWUrMjQ2LCAxZSsyNDcsIDFlKzI0OCwgMWUrMjQ5LCAxZSsyNTAsIDFlKzI1MSwKKyAgICAxZSsy
NTIsIDFlKzI1MywgMWUrMjU0LCAxZSsyNTUsIDFlKzI1NiwgMWUrMjU3LCAxZSsyNTgsIDFlKzI1
OSwgMWUrMjYwLAorICAgIDFlKzI2MSwgMWUrMjYyLCAxZSsyNjMsIDFlKzI2NCwgMWUrMjY1LCAx
ZSsyNjYsIDFlKzI2NywgMWUrMjY4LCAxZSsyNjksCisgICAgMWUrMjcwLCAxZSsyNzEsIDFlKzI3
MiwgMWUrMjczLCAxZSsyNzQsIDFlKzI3NSwgMWUrMjc2LCAxZSsyNzcsIDFlKzI3OCwKKyAgICAx
ZSsyNzksIDFlKzI4MCwgMWUrMjgxLCAxZSsyODIsIDFlKzI4MywgMWUrMjg0LCAxZSsyODUsIDFl
KzI4NiwgMWUrMjg3LAorICAgIDFlKzI4OCwgMWUrMjg5LCAxZSsyOTAsIDFlKzI5MSwgMWUrMjky
LCAxZSsyOTMsIDFlKzI5NCwgMWUrMjk1LCAxZSsyOTYsCisgICAgMWUrMjk3LCAxZSsyOTgsIDFl
KzI5OSwgMWUrMzAwLCAxZSszMDEsIDFlKzMwMiwgMWUrMzAzLCAxZSszMDQsIDFlKzMwNSwKKyAg
ICAxZSszMDYsIDFlKzMwNywgMWUrMzA4LAorfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK2RvdWJs
ZSBQb3cxMChpbnQgZXhwKSB7CisgIGlmIChleHAgPCAtMzI0KSB7CisgICAgcmV0dXJuIDAuMDsK
KyAgfSBlbHNlIGlmIChleHAgPiAzMDgpIHsKKyAgICByZXR1cm4gSU5GSU5JVFk7CisgIH0gZWxz
ZSB7CisgICAgcmV0dXJuIGtQb3dlcnNPZlRlbltleHAgKyAzMjRdOworICB9Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9wb3cxMF9oZWxwZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvcG93MTBfaGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQxYWE3MTBkYjVhMWExYmU5
MjFiMDQ4ZDU4MWMwNGM5NTI4MmM2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvcG93MTBfaGVscGVyLmgKQEAgLTAsMCArMSwzNiBAQAorLy8KKy8vIENvcHlyaWdo
dCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIFRoaXMgdGVzdCBoZWxwZXIgbGli
cmFyeSBjb250YWlucyBhIHRhYmxlIG9mIHBvd2VycyBvZiAxMCwgdG8gZ3VhcmFudGVlCisvLyBw
cmVjaXNlIHZhbHVlcyBhcmUgY29tcHV0ZWQgYWNyb3NzIHRoZSBmdWxsIHJhbmdlIG9mIGRvdWJs
ZXMuIFdlIGNhbid0IHJlbHkKKy8vIG9uIHRoZSBwb3coKSBmdW5jdGlvbiwgYmVjYXVzZSBub3Qg
YWxsIHN0YW5kYXJkIGxpYnJhcmllcyBzaGlwIGEgdmVyc2lvbgorLy8gdGhhdCBpcyBwcmVjaXNl
LgorI2lmbmRlZiBBQlNMX1NUUklOR1NfSU5URVJOQUxfUE9XMTBfSEVMUEVSX0hfCisjZGVmaW5l
IEFCU0xfU1RSSU5HU19JTlRFUk5BTF9QT1cxMF9IRUxQRVJfSF8KKworI2luY2x1ZGUgPHZlY3Rv
cj4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwgeworCisv
LyBDb21wdXRlcyB0aGUgcHJlY2lzZSB2YWx1ZSBvZiAxMF5leHAuIChJLmUuIHRoZSBuZWFyZXN0
IHJlcHJlc2VudGFibGUKKy8vIGRvdWJsZSB0byB0aGUgZXhhY3QgdmFsdWUsIHJvdW5kaW5nIHRv
IG5lYXJlc3QtZXZlbiBpbiB0aGUgKHNpbmdsZSkgY2FzZSBvZgorLy8gYmVpbmcgZXhhY3RseSBo
YWxmd2F5IGJldHdlZW4uKQorZG91YmxlIFBvdzEwKGludCBleHApOworCit9ICAvLyBuYW1lc3Bh
Y2Ugc3RyaW5nc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBB
QlNMX1NUUklOR1NfSU5URVJOQUxfUE9XMTBfSEVMUEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9wb3cxMF9oZWxwZXJfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGE2OGI1ZGFiMzE5YzE2ZTRk
N2ZiMGJmMTZiMjkwYjMzNTEyNmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9wb3cxMF9oZWxwZXJfdGVzdC5jYwpAQCAtMCwwICsxLDEyMCBAQAorLy8gQ29weXJp
Z2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvcG93MTBfaGVscGVyLmgiCisKKyNpbmNsdWRlIDxjbWF0aD4KKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaCIKKwor
bmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwgeworCituYW1lc3Bh
Y2UgeworCitzdHJ1Y3QgVGVzdENhc2UgeworICBpbnQgcG93ZXI7ICAgICAgICAgICAvLyBUZXN0
aW5nIFBvdzEwKHBvd2VyKQorICB1aW50NjRfdCBzaWduaWZpY2FuZDsgIC8vIFJhdyBiaXRzIG9m
IHRoZSBleHBlY3RlZCB2YWx1ZQorICBpbnQgcmFkaXg7ICAgICAgICAgICAvLyBzaWduaWZpY2Fu
ZCBpcyBhZGp1c3RlZCBieSAyXnJhZGl4Cit9OworCitURVNUKFBvdzEwSGVscGVyVGVzdCwgV29y
a3MpIHsKKyAgLy8gVGhlIGxvZ2ljIGluIHBvdzEwX2hlbHBlci5jYyBpcyBzbyBzaW1wbGUgdGhh
dCB0aGVvcmV0aWNhbGx5IHdlIGRvbid0IGV2ZW4KKyAgLy8gbmVlZCBhIHRlc3QuIEhvd2V2ZXIs
IHdlJ3JlIHBhcmFub2lkIGFuZCBiZWxpZXZlIHRoYXQgdGhlcmUgbWF5IGJlCisgIC8vIGNvbXBp
bGVycyB0aGF0IGRvbid0IHJvdW5kIGZsb2F0aW5nLXBvaW50IGxpdGVyYWxzIGNvcnJlY3RseSwg
ZXZlbiB0aG91Z2gKKyAgLy8gaXQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBzdGFuZGFyZC4gV2UgY2hl
Y2sgdmFyaW91cyBlZGdlIGNhc2VzLCBqdXN0IHRvIGJlCisgIC8vIHN1cmUuCisgIGNvbnN0ZXhw
ciBUZXN0Q2FzZSBrVGVzdENhc2VzW10gPSB7CisgICAgICAvLyBTdWJub3JtYWxzCisgICAgICB7
LTMyMywgMHgyLCAtMTA3NH0sCisgICAgICB7LTMyMiwgMHgxNCwgLTEwNzR9LAorICAgICAgey0z
MjEsIDB4Y2EsIC0xMDc0fSwKKyAgICAgIHstMzIwLCAweDdlOCwgLTEwNzR9LAorICAgICAgey0z
MTksIDB4NGYxMCwgLTEwNzR9LAorICAgICAgey0zMTgsIDB4MzE2YTIsIC0xMDc0fSwKKyAgICAg
IHstMzE3LCAweDFlZTI1NywgLTEwNzR9LAorICAgICAgey0zMTYsIDB4MTM0ZDc2MSwgLTEwNzR9
LAorICAgICAgey0zMTUsIDB4YzEwNjljZCwgLTEwNzR9LAorICAgICAgey0zMTQsIDB4NzhhNDIy
MDUsIC0xMDc0fSwKKyAgICAgIHstMzEzLCAweDRiNjY5NTQzMywgLTEwNzR9LAorICAgICAgey0z
MTIsIDB4MmYyMDFkNDlmYiwgLTEwNzR9LAorICAgICAgey0zMTEsIDB4MWQ3NDEyNGUzZDEsIC0x
MDc0fSwKKyAgICAgIHstMzEwLCAweDEyNjg4YjcwZTYyYiwgLTEwNzR9LAorICAgICAgey0zMDks
IDB4YjgxNTcyNjhmZGFmLCAtMTA3NH0sCisgICAgICB7LTMwOCwgMHg3MzBkNjc4MTllOGQyLCAt
MTA3NH0sCisgICAgICAvLyBWYWx1ZXMgdGhhdCBhcmUgdmVyeSBjbG9zZSB0byByb3VuZGluZyB0
aGUgb3RoZXIgd2F5LgorICAgICAgLy8gQ29tbWVudCBzaG93cyBkaWZmZXJlbmNlIG9mIHNpZ25p
ZmljYW5kIGZyb20gdGhlIHRydWUgdmFsdWUuCisgICAgICB7LTMwNywgMHgxMWZhMTgyYzQwYzYw
ZCwgLTEwNzJ9LCAgLy8gLS40NTg4CisgICAgICB7LTI5MCwgMHgxOGYyYjA2MWFlYTA3MiwgLTEw
MTZ9LCAgLy8gIC40ODU0CisgICAgICB7LTI3NiwgMHgxMUJBMDNGNUIyMTAwMCwgLTk2OX0sICAg
Ly8gIC40NzA5CisgICAgICB7LTI1OSwgMHgxODk5QzJGNjczMjIxMCwgLTkxM30sICAgLy8gIC40
ODMwCisgICAgICB7LTI1MiwgMHgxRDUzODQ0RUU0N0REMSwgLTg5MH0sICAgLy8gLS40NzQzCisg
ICAgICB7LTIyNywgMHgxRTUyOTcyODdDMkY0NSwgLTgwN30sICAgLy8gLS40NzA4CisgICAgICB7
LTE5OCwgMHgxMzIyRTIyMEE1QjE3RSwgLTcxMH0sICAgLy8gLS40NzE0CisgICAgICB7LTE5NSwg
MHgxMkIwMTBEM0UxQ0Y1NiwgLTcwMH0sICAgLy8gIC40OTI4CisgICAgICB7LTE5MiwgMHgxMjNG
RjA2RUVBODQ3QSwgLTY5MH0sICAgLy8gIC40OTY4CisgICAgICB7LTE2MywgMHgxNzA4RDBGODRE
M0RFNywgLTU5NH0sICAgLy8gLS40OTc3CisgICAgICB7LTE0NSwgMHgxM0ZBQUMzRTNGQTFGMywg
LTUzNH0sICAgLy8gLS40Nzg1CisgICAgICB7LTExMSwgMHgxMzNENDAzMkMyQzdGNSwgLTQyMX0s
ICAgLy8gIC40Nzc0CisgICAgICB7LTEwNiwgMHgxRDVCNTYxNTc0NzY1QiwgLTQwNX0sICAgLy8g
LS40ODY5CisgICAgICB7LTEwNCwgMHgxNkVGNUI0MEMyRkM3NywgLTM5OH0sICAgLy8gLS40NzQx
CisgICAgICB7LTg4LCAweDE5NzY4M0RGMkYyNjhELCAtMzQ1fSwgICAgLy8gLS40NzM4CisgICAg
ICB7LTg2LCAweDEzRTQ5NzA2NUNENjFGLCAtMzM4fSwgICAgLy8gIC40NzM2CisgICAgICB7LTc2
LCAweDE3Mjg4RTEyNzFGNTEzLCAtMzA1fSwgICAgLy8gLS40NzYxCisgICAgICB7LTYzLCAweDFB
NTNGQzk2MzFEMTBELCAtMjYyfSwgICAgLy8gIC40OTI5CisgICAgICB7LTMwLCAweDE0NDg0QkZF
RUJDMkEwLCAtMTUyfSwgICAgLy8gIC40NzU4CisgICAgICB7LTIxLCAweDEyRTNCNDBBMEU5QjRG
LCAtMTIyfSwgICAgLy8gLS40OTE2CisgICAgICB7LTUsIDB4MTRGOEI1ODhFMzY4RjEsIC02OX0s
ICAgICAgLy8gIC40ODI5CisgICAgICB7MjMsIDB4MTUyRDAyQzdFMTRBRjYsIDI0fSwgICAgICAg
Ly8gLS41MDAwIChleGFjdGx5LCByb3VuZC10by1ldmVuKQorICAgICAgezI5LCAweDE0MzFFMEZB
RTZENzIxLCA0NH0sICAgICAgIC8vIC0uNDg3MAorICAgICAgezM0LCAweDFFRDA5QkVBRDg3QzAz
LCA2MH0sICAgICAgIC8vIC0uNDcyMQorICAgICAgezcwLCAweDE3MkVCQUQ2RERDNzNELCAxODB9
LCAgICAgIC8vICAuNDczMworICAgICAgezEwNSwgMHgxQkU3QUJEMzc4MUVDQSwgMjk2fSwgICAg
IC8vIC0uNDg1MAorICAgICAgezEyNiwgMHgxN0EyRUNDNDE0QTAzRiwgMzY2fSwgICAgIC8vIC0u
NDk5OQorICAgICAgezEzMCwgMHgxQ0RBNjIwNTVCMkQ5RSwgMzc5fSwgICAgIC8vICAuNDg1NQor
ICAgICAgezE2NSwgMHgxMTVEODQ3QUQwMDA4NywgNDk2fSwgICAgIC8vIC0uNDkxMworICAgICAg
ezE3MiwgMHgxNEIzNzg0NjlCNjczMiwgNTE5fSwgICAgIC8vICAuNDgxOAorICAgICAgezE4Nywg
MHgxMjYyREZFRUJCQjBGOSwgNTY5fSwgICAgIC8vIC0uNDgwNQorICAgICAgezIxMCwgMHgxODU1
N0YzMTMyNkJCQiwgNjQ1fSwgICAgIC8vIC0uNDk5MgorICAgICAgezIxMiwgMHgxMzAyQ0I1RTZG
NjQyQSwgNjUyfSwgICAgIC8vIC0uNDgzOAorICAgICAgezIxNSwgMHgxMjkwQkE5QTM4QzdEMSwg
NjYyfSwgICAgIC8vIC0uNDg4MQorICAgICAgezIzNiwgMHgxRjczNkY5QjM0OTRFOSwgNzMxfSwg
ICAgIC8vICAuNDcwNworICAgICAgezI0NCwgMHgxNzZFQzk4OTk0RjQ4OSwgNzU4fSwgICAgIC8v
ICAuNDkyNAorICAgICAgezI1MCwgMHgxNjU4RTNBQjc5NTIwNCwgNzc4fSwgICAgIC8vIC0uNDk2
MworICAgICAgezI1MiwgMHgxMTc1NzFEREY2QzgxNCwgNzg1fSwgICAgIC8vICAuNDg3MworICAg
ICAgezI1NCwgMHgxQjQ3ODFFQUQxOTg5RSwgNzkxfSwgICAgIC8vIC0uNDg4NworICAgICAgezI2
MCwgMHgxQTAzRkRFMjE0Q0FGMSwgODExfSwgICAgIC8vICAuNDc4NAorICAgICAgezI4NCwgMHgx
NTg1MDQxQjJDNDc3RiwgODkxfSwgICAgIC8vICAuNDc5OAorICAgICAgezMwNCwgMHgxRDJBMUJF
NDA0OEY5MCwgOTU3fSwgICAgIC8vIC0uNDk4NworICAgICAgLy8gT3V0LW9mLXJhbmdlIHZhbHVl
cworICAgICAgey0zMjQsIDB4MCwgMH0sCisgICAgICB7LTMyNSwgMHgwLCAwfSwKKyAgICAgIHst
MzI2LCAweDAsIDB9LAorICAgICAgezMwOSwgMSwgMjAwMH0sCisgICAgICB7MzEwLCAxLCAyMDAw
fSwKKyAgICAgIHszMTEsIDEsIDIwMDB9LAorICB9OworICBmb3IgKGNvbnN0IFRlc3RDYXNlJiB0
ZXN0X2Nhc2UgOiBrVGVzdENhc2VzKSB7CisgICAgRVhQRUNUX0VRKFBvdzEwKHRlc3RfY2FzZS5w
b3dlciksCisgICAgICAgICAgICAgIHN0ZDo6bGRleHAodGVzdF9jYXNlLnNpZ25pZmljYW5kLCB0
ZXN0X2Nhc2UucmFkaXgpKQorICAgICAgICA8PCBhYnNsOjpTdHJGb3JtYXQoIkZhaWx1cmUgZm9y
IFBvdzEwKCVkKTogJWEgdnMgJWEiLCB0ZXN0X2Nhc2UucG93ZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQb3cxMCh0ZXN0X2Nhc2UucG93ZXIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpsZGV4cCh0ZXN0X2Nhc2Uuc2lnbmlmaWNhbmQsIHRlc3RfY2FzZS5yYWRpeCkp
OworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIHN0cmluZ3NfaW50
ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2lu
dGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3Jl
c2l6ZV91bmluaXRpYWxpemVkLmgKaW5kZXggYTk0ZTA1NDdiNTBmMTU0MjM0Mzc0ZThlNjA4MDQy
YTZjNzAzM2JjOS4uNDY5OTYyYjI3NDlkNmZhNWUyNmJiN2ZmOGE3YjE3OTAzNDAyNGI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6ZWQuaApAQCAtNSw3
ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTgsNiArMTgsNyBAQAogI2Rl
ZmluZSBBQlNMX1NUUklOR1NfSU5URVJOQUxfUkVTSVpFX1VOSU5JVElBTElaRURfSF8KIAogI2lu
Y2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5
PgogCiAjaW5jbHVkZSAiYWJzbC9iYXNlL3BvcnQuaCIKQEAgLTI3LDQwICsyOCw0MiBAQCBuYW1l
c3BhY2UgYWJzbCB7CiBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7CiAKIC8vIElzIGEgc3Vi
Y2xhc3Mgb2YgdHJ1ZV90eXBlIG9yIGZhbHNlX3R5cGUsIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9y
IG5vdAotLy8gVCBoYXMgYSByZXNpemVfdW5pbml0aWFsaXplZCBtZW1iZXIuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPgotc3RydWN0IEhhc1Jlc2l6ZVVuaW5pdGlhbGl6
ZWQgOiBzdGQ6OmZhbHNlX3R5cGUge307Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBI
YXNSZXNpemVVbmluaXRpYWxpemVkPAotICAgIFQsIGFic2w6OnZvaWRfdDxkZWNsdHlwZShzdGQ6
OmRlY2x2YWw8VD4oKS5yZXNpemVfdW5pbml0aWFsaXplZCgyMzcpKT4+Ci0gICAgOiBzdGQ6OnRy
dWVfdHlwZSB7fTsKKy8vIFQgaGFzIGEgX19yZXNpemVfZGVmYXVsdF9pbml0IG1lbWJlci4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBzdHJpbmdfdHlwZSwgdHlwZW5hbWUgPSB2b2lkPgorc3RydWN0IFJl
c2l6ZVVuaW5pdGlhbGl6ZWRUcmFpdHMgeworICB1c2luZyBIYXNNZW1iZXIgPSBzdGQ6OmZhbHNl
X3R5cGU7CisgIHN0YXRpYyB2b2lkIFJlc2l6ZShzdHJpbmdfdHlwZSogcywgc2l6ZV90IG5ld19z
aXplKSB7IHMtPnJlc2l6ZShuZXdfc2l6ZSk7IH0KK307CiAKKy8vIF9fcmVzaXplX2RlZmF1bHRf
aW5pdCBpcyBwcm92aWRlZCBieSBsaWJjKysgPj0gOC4wIGFuZCBieSBHb29nbGUncyBpbnRlcm5h
bAorLy8gOjpzdHJpbmcgaW1wbGVtZW50YXRpb24uCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgc3RyaW5n
X3R5cGU+Ci12b2lkIFJlc2l6ZVVuaW5pdChzdHJpbmdfdHlwZSogcywgc2l6ZV90IG5ld19zaXpl
LCBzdGQ6OnRydWVfdHlwZSkgewotICBzLT5yZXNpemVfdW5pbml0aWFsaXplZChuZXdfc2l6ZSk7
Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgc3RyaW5nX3R5cGU+Ci12b2lkIFJlc2l6ZVVuaW5pdChz
dHJpbmdfdHlwZSogcywgc2l6ZV90IG5ld19zaXplLCBzdGQ6OmZhbHNlX3R5cGUpIHsKLSAgcy0+
cmVzaXplKG5ld19zaXplKTsKLX0KK3N0cnVjdCBSZXNpemVVbmluaXRpYWxpemVkVHJhaXRzPAor
ICAgIHN0cmluZ190eXBlLCBhYnNsOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPHN0cmlu
Z190eXBlJj4oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5f
X3Jlc2l6ZV9kZWZhdWx0X2luaXQoMjM3KSk+ID4geworICB1c2luZyBIYXNNZW1iZXIgPSBzdGQ6
OnRydWVfdHlwZTsKKyAgc3RhdGljIHZvaWQgUmVzaXplKHN0cmluZ190eXBlKiBzLCBzaXplX3Qg
bmV3X3NpemUpIHsKKyAgICBzLT5fX3Jlc2l6ZV9kZWZhdWx0X2luaXQobmV3X3NpemUpOworICB9
Cit9OwogCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHN0cmluZyBpbXBsZW1lbnRhdGlvbiBzdXBw
b3J0cyBhIHJlc2l6ZSB3aGVyZQotLy8gdGhlIG5ldyBjaGFyYWN0ZXJzIGFkZGVkIHRvIHRoZSBz
dHJpbmcgYXJlIGxlZnQgdW50b3VjaGVkLgorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdGQ6OnN0
cmluZyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBhIHJlc2l6ZSB3aGVyZQorLy8gdGhlIG5ldyBj
aGFyYWN0ZXJzIGFkZGVkIHRvIHRoZSBzdGQ6OnN0cmluZyBhcmUgbGVmdCB1bnRvdWNoZWQuCiAv
LwogLy8gKEEgYmV0dGVyIG5hbWUgbWlnaHQgYmUgIlNUTFN0cmluZ1N1cHBvcnRzVW5pbml0aWFs
aXplZFJlc2l6ZSIsIGFsbHVkaW5nIHRvCiAvLyB0aGUgcHJldmlvdXMgZnVuY3Rpb24uKQogdGVt
cGxhdGUgPHR5cGVuYW1lIHN0cmluZ190eXBlPgogaW5saW5lIGNvbnN0ZXhwciBib29sIFNUTFN0
cmluZ1N1cHBvcnRzTm9udHJhc2hpbmdSZXNpemUoc3RyaW5nX3R5cGUqKSB7Ci0gIHJldHVybiBI
YXNSZXNpemVVbmluaXRpYWxpemVkPHN0cmluZ190eXBlPigpOworICByZXR1cm4gUmVzaXplVW5p
bml0aWFsaXplZFRyYWl0czxzdHJpbmdfdHlwZT46Okhhc01lbWJlcjo6dmFsdWU7CiB9CiAKIC8v
IExpa2Ugc3RyLT5yZXNpemUobmV3X3NpemUpLCBleGNlcHQgYW55IG5ldyBjaGFyYWN0ZXJzIGFk
ZGVkIHRvICIqc3RyIiBhcyBhCiAvLyByZXN1bHQgb2YgcmVzaXppbmcgbWF5IGJlIGxlZnQgdW5p
bml0aWFsaXplZCwgcmF0aGVyIHRoYW4gYmVpbmcgZmlsbGVkIHdpdGgKIC8vICcwJyBieXRlcy4g
VHlwaWNhbGx5IHVzZWQgd2hlbiBjb2RlIGlzIHRoZW4gZ29pbmcgdG8gb3ZlcndyaXRlIHRoZSBi
YWNraW5nCi0vLyBzdG9yZSBvZiB0aGUgc3RyaW5nIHdpdGgga25vd24gZGF0YS4gVXNlcyBhIEdv
b2dsZSBleHRlbnNpb24gdG8gOjpzdHJpbmcuCisvLyBzdG9yZSBvZiB0aGUgc3RkOjpzdHJpbmcg
d2l0aCBrbm93biBkYXRhLgogdGVtcGxhdGUgPHR5cGVuYW1lIHN0cmluZ190eXBlLCB0eXBlbmFt
ZSA9IHZvaWQ+CiBpbmxpbmUgdm9pZCBTVExTdHJpbmdSZXNpemVVbmluaXRpYWxpemVkKHN0cmlu
Z190eXBlKiBzLCBzaXplX3QgbmV3X3NpemUpIHsKLSAgUmVzaXplVW5pbml0KHMsIG5ld19zaXpl
LCBIYXNSZXNpemVVbmluaXRpYWxpemVkPHN0cmluZ190eXBlPigpKTsKKyAgUmVzaXplVW5pbml0
aWFsaXplZFRyYWl0czxzdHJpbmdfdHlwZT46OlJlc2l6ZShzLCBuZXdfc2l6ZSk7CiB9CiAKIH0g
IC8vIG5hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2lu
dGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkX3Rlc3QuY2MKaW5kZXggYWQyODJlZmNkOWJiODlm
ODg1ZGIwZjNlNGZhYjhlNGRmMjUzMzk5YS4uYzViZTBiMTIyOTA4ZTFjNjQwMTJiZWM5NTg0Yjlm
ZGJhNDlkMzM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVfdW5p
bml0aWFsaXplZF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvcmVzaXplX3Vu
aW5pdGlhbGl6ZWRfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMjQsNDQgKzI0LDQ0IEBAIHN0cnVjdCByZXNpemFibGVfc3RyaW5nIHsKICAgdm9p
ZCByZXNpemUoc2l6ZV90KSB7IHJlc2l6ZV9jYWxsX2NvdW50ICs9IDE7IH0KIH07CiAKLWludCBy
ZXNpemVfdW5pbml0aWFsaXplZF9jYWxsX2NvdW50ID0gMDsKK2ludCByZXNpemVfZGVmYXVsdF9p
bml0X2NhbGxfY291bnQgPSAwOwogCi1zdHJ1Y3QgcmVzaXplX3VuaW5pdGlhbGl6YWJsZV9zdHJp
bmcgeworc3RydWN0IHJlc2l6ZV9kZWZhdWx0X2luaXRfc3RyaW5nIHsKICAgdm9pZCByZXNpemUo
c2l6ZV90KSB7IHJlc2l6ZV9jYWxsX2NvdW50ICs9IDE7IH0KLSAgdm9pZCByZXNpemVfdW5pbml0
aWFsaXplZChzaXplX3QpIHsgcmVzaXplX3VuaW5pdGlhbGl6ZWRfY2FsbF9jb3VudCArPSAxOyB9
CisgIHZvaWQgX19yZXNpemVfZGVmYXVsdF9pbml0KHNpemVfdCkgeyByZXNpemVfZGVmYXVsdF9p
bml0X2NhbGxfY291bnQgKz0gMTsgfQogfTsKIAogVEVTVChSZXNpemVVbmluaXQsIFdpdGhBbmRX
aXRob3V0KSB7CiAgIHJlc2l6ZV9jYWxsX2NvdW50ID0gMDsKLSAgcmVzaXplX3VuaW5pdGlhbGl6
ZWRfY2FsbF9jb3VudCA9IDA7CisgIHJlc2l6ZV9kZWZhdWx0X2luaXRfY2FsbF9jb3VudCA9IDA7
CiAgIHsKICAgICByZXNpemFibGVfc3RyaW5nIHJzOwogCiAgICAgRVhQRUNUX0VRKHJlc2l6ZV9j
YWxsX2NvdW50LCAwKTsKLSAgICBFWFBFQ1RfRVEocmVzaXplX3VuaW5pdGlhbGl6ZWRfY2FsbF9j
b3VudCwgMCk7CisgICAgRVhQRUNUX0VRKHJlc2l6ZV9kZWZhdWx0X2luaXRfY2FsbF9jb3VudCwg
MCk7CiAgICAgRVhQRUNUX0ZBTFNFKAogICAgICAgICBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpT
VExTdHJpbmdTdXBwb3J0c05vbnRyYXNoaW5nUmVzaXplKCZycykpOwogICAgIEVYUEVDVF9FUShy
ZXNpemVfY2FsbF9jb3VudCwgMCk7Ci0gICAgRVhQRUNUX0VRKHJlc2l6ZV91bmluaXRpYWxpemVk
X2NhbGxfY291bnQsIDApOworICAgIEVYUEVDVF9FUShyZXNpemVfZGVmYXVsdF9pbml0X2NhbGxf
Y291bnQsIDApOwogICAgIGFic2w6OnN0cmluZ3NfaW50ZXJuYWw6OlNUTFN0cmluZ1Jlc2l6ZVVu
aW5pdGlhbGl6ZWQoJnJzLCAyMzcpOwogICAgIEVYUEVDVF9FUShyZXNpemVfY2FsbF9jb3VudCwg
MSk7Ci0gICAgRVhQRUNUX0VRKHJlc2l6ZV91bmluaXRpYWxpemVkX2NhbGxfY291bnQsIDApOwor
ICAgIEVYUEVDVF9FUShyZXNpemVfZGVmYXVsdF9pbml0X2NhbGxfY291bnQsIDApOwogICB9CiAK
ICAgcmVzaXplX2NhbGxfY291bnQgPSAwOwotICByZXNpemVfdW5pbml0aWFsaXplZF9jYWxsX2Nv
dW50ID0gMDsKKyAgcmVzaXplX2RlZmF1bHRfaW5pdF9jYWxsX2NvdW50ID0gMDsKICAgewotICAg
IHJlc2l6ZV91bmluaXRpYWxpemFibGVfc3RyaW5nIHJ1czsKKyAgICByZXNpemVfZGVmYXVsdF9p
bml0X3N0cmluZyBydXM7CiAKICAgICBFWFBFQ1RfRVEocmVzaXplX2NhbGxfY291bnQsIDApOwot
ICAgIEVYUEVDVF9FUShyZXNpemVfdW5pbml0aWFsaXplZF9jYWxsX2NvdW50LCAwKTsKKyAgICBF
WFBFQ1RfRVEocmVzaXplX2RlZmF1bHRfaW5pdF9jYWxsX2NvdW50LCAwKTsKICAgICBFWFBFQ1Rf
VFJVRSgKICAgICAgICAgYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6U1RMU3RyaW5nU3VwcG9ydHNO
b250cmFzaGluZ1Jlc2l6ZSgmcnVzKSk7CiAgICAgRVhQRUNUX0VRKHJlc2l6ZV9jYWxsX2NvdW50
LCAwKTsKLSAgICBFWFBFQ1RfRVEocmVzaXplX3VuaW5pdGlhbGl6ZWRfY2FsbF9jb3VudCwgMCk7
CisgICAgRVhQRUNUX0VRKHJlc2l6ZV9kZWZhdWx0X2luaXRfY2FsbF9jb3VudCwgMCk7CiAgICAg
YWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6U1RMU3RyaW5nUmVzaXplVW5pbml0aWFsaXplZCgmcnVz
LCAyMzcpOwogICAgIEVYUEVDVF9FUShyZXNpemVfY2FsbF9jb3VudCwgMCk7Ci0gICAgRVhQRUNU
X0VRKHJlc2l6ZV91bmluaXRpYWxpemVkX2NhbGxfY291bnQsIDEpOworICAgIEVYUEVDVF9FUShy
ZXNpemVfZGVmYXVsdF9pbml0X2NhbGxfY291bnQsIDEpOwogICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RsX3R5cGVfdHJhaXRzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL3N0bF90eXBlX3RyYWl0cy5oCmluZGV4IDA0YzRhNTMyM2I4NjIxNTc3MGE1Yzkz
MTI4MmFjN2JhYzM1MmU3NmUuLjIwMmFiMzc0YTgzMzJlNjI4ZWMzMGUxODZiYWZlYTI3ZGViOWU4
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RsX3R5cGVfdHJhaXRzLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdGxfdHlwZV90cmFpdHMuaApAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJf
Zm9ybWF0L2FyZy5oCmluZGV4IDMzNzZkNDhhZmRhMjBmZjIzM2ExZDFiN2Y0MWIzMDA3OGFlMWNj
ZTYuLjVjYjNhMTRkNjgzMzNiNWE1MDc1NjgyMjdkM2NhNzVkNWIxOGVjNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJnLmgKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSA8
Y3N0ZGlvPgogI2luY2x1ZGUgPGlvbWFuaXA+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KQEAgLTM1LDEyICszNiwxNCBAQCBzdHJ1Y3QgSGFzVXNlckRlZmluZWRD
b252ZXJ0PAogICAgIFQsIHZvaWRfdDxkZWNsdHlwZShBYnNsRm9ybWF0Q29udmVydCgKICAgICAg
ICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IFQmPigpLCBzdGQ6OmRlY2x2YWw8Q29udmVyc2lvblNw
ZWM+KCksCiAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxGb3JtYXRTaW5rKj4oKSkpPj4gOiBzdGQ6
OnRydWVfdHlwZSB7fTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBTdHJlYW1lZFdy
YXBwZXI7CiAKIC8vIElmICd2JyBjYW4gYmUgY29udmVydGVkIChpbiB0aGUgcHJpbnRmIHNlbnNl
KSBhY2NvcmRpbmcgdG8gJ2NvbnYnLAogLy8gdGhlbiBjb252ZXJ0IGl0LCBhcHBlbmRpbmcgdG8g
YHNpbmtgIGFuZCByZXR1cm4gYHRydWVgLgogLy8gT3RoZXJ3aXNlIGZhaWwgYW5kIHJldHVybiBg
ZmFsc2VgLgorCiAvLyBSYXcgcG9pbnRlcnMuCiBzdHJ1Y3QgVm9pZFB0ciB7CiAgIFZvaWRQdHIo
KSA9IGRlZmF1bHQ7CkBAIC01NCw3ICs1Nyw4IEBAIENvbnZlcnRSZXN1bHQ8Q29udjo6cD4gRm9y
bWF0Q29udmVydEltcGwoVm9pZFB0ciB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7CiAK
IC8vIFN0cmluZ3MuCi1Db252ZXJ0UmVzdWx0PENvbnY6OnM+IEZvcm1hdENvbnZlcnRJbXBsKGNv
bnN0IHN0ZDo6c3RyaW5nJiB2LCBDb252ZXJzaW9uU3BlYyBjb252LAorQ29udmVydFJlc3VsdDxD
b252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBzdGQ6OnN0cmluZyYgdiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblNwZWMgY29udiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNp
bmspOwogQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChzdHJpbmdfdmll
dyB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7CkBAIC04MCw3ICs4NCw3IEBAIENvbnZl
cnRSZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29udmVydEltcGwoY29uc3QgQWJzbENvcmQmIHZhbHVl
LAogCiAgIGludCBwcmVjaXNpb24gPSBjb252LnByZWNpc2lvbigpOwogICBpZiAocHJlY2lzaW9u
ID49IDApCi0gICAgdG9fd3JpdGUgPSBzdGQ6Om1pbih0b193cml0ZSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihwcmVjaXNpb24pKTsKKyAgICB0b193cml0ZSA9IChzdGQ6Om1pbikodG9fd3JpdGUsIHN0
YXRpY19jYXN0PHNpemVfdD4ocHJlY2lzaW9uKSk7CiAKICAgc3BhY2VfcmVtYWluaW5nID0gRXhj
ZXNzKHRvX3dyaXRlLCBzcGFjZV9yZW1haW5pbmcpOwogCkBAIC0yODksNyArMjkzLDcgQEAgY2xh
c3MgRm9ybWF0QXJnSW1wbCB7CiAgIHN0cnVjdCBNYW5hZ2VyPFQsIEJ5UG9pbnRlcj4gewogICAg
IHN0YXRpYyBEYXRhIFNldFZhbHVlKGNvbnN0IFQmIHZhbHVlKSB7CiAgICAgICBEYXRhIGRhdGE7
Ci0gICAgICBkYXRhLnB0ciA9ICZ2YWx1ZTsKKyAgICAgIGRhdGEucHRyID0gc3RkOjphZGRyZXNz
b2YodmFsdWUpOwogICAgICAgcmV0dXJuIGRhdGE7CiAgICAgfQogCkBAIC0zMzUsMTIgKzMzOSwx
MiBAQCBjbGFzcyBGb3JtYXRBcmdJbXBsIHsKICAgICB1c2luZyBDb21tb25UeXBlID0gdHlwZW5h
bWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX3NpZ25lZDxUPjo6dmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCwgdWludDY0X3Q+
Ojp0eXBlOwogICAgIGlmIChzdGF0aWNfY2FzdDxDb21tb25UeXBlPih2YWwpID4KLSAgICAgICAg
c3RhdGljX2Nhc3Q8Q29tbW9uVHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkp
IHsKLSAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICAgICAg
ICBzdGF0aWNfY2FzdDxDb21tb25UeXBlPigoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgp
KCkpKSB7CisgICAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KSgpOwog
ICAgIH0gZWxzZSBpZiAoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlICYmCiAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxDb21tb25UeXBlPih2YWwpIDwKLSAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxDb21tb25UeXBlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKSkgewot
ICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7CisgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8Q29tbW9uVHlwZT4oKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWluKSgpKSkgeworICAgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1p
bikoKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmFsKTsKICAgfQpAQCAt
NDA5LDcgKzQxMyw3IEBAIGNsYXNzIEZvcm1hdEFyZ0ltcGwgewogICBBQlNMX0lOVEVSTkFMX0ZP
Uk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8oZG91YmxlLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAg
ICAgIFwKICAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGxvbmcg
ZG91YmxlLCBfX1ZBX0FSR1NfXyk7ICAgICAgICBcCiAgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJ
U1BBVENIX0lOU1RBTlRJQVRFXyhjb25zdCBjaGFyKiwgX19WQV9BUkdTX18pOyAgICAgICAgXAot
ICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8oc3RkOjpzdHJpbmcs
IF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQ
QVRDSF9JTlNUQU5USUFURV8oc3RkOjpzdHJpbmcsIF9fVkFfQVJHU19fKTsgICAgICAgIFwKICAg
QUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKHN0cmluZ192aWV3LCBf
X1ZBX0FSR1NfXykKIAogQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfT1ZFUkxPQURTX0VY
UEFORF8oZXh0ZXJuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zv
cm1hdC9hcmdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmdf
dGVzdC5jYwppbmRleCA4M2Q1OTA0OGVhMjdhNGY1ZDgwMmJkNmQ2Zjg0YTE4MjNmZjZlMjA5Li4z
NDIxZmFjMTFiZjliOWE1ZjdmOTMyNGExYjQwYmM0MzhmMDJkYWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJnX3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZ190ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KICNpbmNs
dWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuaCIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYwppbmRleCBjNGVkZGQxN2RkYmU1NmE3NmM1
ZWMxYTUxODQwNzliZjEwNzE2NmJjLi5hMzE4NTllY2UyYmNkN2FhMDYwYTQwMjI4MjYwMzVlZmJk
ZWM2ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmlu
ZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYwpAQCAt
MjUsMTIgKzI1LDEyIEBAIGNsYXNzIEFyZ0NvbnRleHQgewogICBleHBsaWNpdCBBcmdDb250ZXh0
KGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gcGFjaykgOiBwYWNrXyhwYWNrKSB7fQog
CiAgIC8vIEZpbGwgJ2JvdW5kJyB3aXRoIHRoZSByZXN1bHRzIG9mIGFwcGx5aW5nIHRoZSBjb250
ZXh0J3MgYXJndW1lbnQgcGFjawotICAvLyB0byB0aGUgc3BlY2lmaWVkICdwcm9wcycuIFdlIHN5
bnRoZXNpemUgYSBCb3VuZENvbnZlcnNpb24gYnkKKyAgLy8gdG8gdGhlIHNwZWNpZmllZCAndW5i
b3VuZCcuIFdlIHN5bnRoZXNpemUgYSBCb3VuZENvbnZlcnNpb24gYnkKICAgLy8gbGluaW5nIHVw
IGEgVW5ib3VuZENvbnZlcnNpb24gd2l0aCBhIHVzZXIgYXJndW1lbnQuIFdlIGFsc28KICAgLy8g
cmVzb2x2ZSBhbnkgJyonIHNwZWNpZmllcnMgZm9yIHdpZHRoIGFuZCBwcmVjaXNpb24sIHNvIGFm
dGVyCiAgIC8vIHRoaXMgY2FsbCwgJ2JvdW5kJyBoYXMgYWxsIHRoZSBpbmZvcm1hdGlvbiBpdCBu
ZWVkcyB0byBiZSBmb3JtYXR0ZWQuCiAgIC8vIFJldHVybnMgZmFsc2Ugb24gZmFpbHVyZS4KLSAg
Ym9vbCBCaW5kKGNvbnN0IFVuYm91bmRDb252ZXJzaW9uICpwcm9wcywgQm91bmRDb252ZXJzaW9u
ICpib3VuZCk7CisgIGJvb2wgQmluZChjb25zdCBVbmJvdW5kQ29udmVyc2lvbiogdW5ib3VuZCwg
Qm91bmRDb252ZXJzaW9uKiBib3VuZCk7CiAKICBwcml2YXRlOgogICBhYnNsOjpTcGFuPGNvbnN0
IEZvcm1hdEFyZ0ltcGw+IHBhY2tfOwpAQCAtNTMsNyArNTMsOCBAQCBpbmxpbmUgYm9vbCBBcmdD
b250ZXh0OjpCaW5kKGNvbnN0IFVuYm91bmRDb252ZXJzaW9uKiB1bmJvdW5kLAogICAgICAgICAv
LyAiQSBuZWdhdGl2ZSBmaWVsZCB3aWR0aCBpcyB0YWtlbiBhcyBhICctJyBmbGFnIGZvbGxvd2Vk
IGJ5IGEKICAgICAgICAgLy8gcG9zaXRpdmUgZmllbGQgd2lkdGguIgogICAgICAgICBmb3JjZV9s
ZWZ0ID0gdHJ1ZTsKLSAgICAgICAgd2lkdGggPSAtd2lkdGg7CisgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBkb24ndCBvdmVyZmxvdyB0aGUgd2lkdGggd2hlbiBuZWdhdGluZyBpdC4KKyAgICAgICAg
d2lkdGggPSAtc3RkOjptYXgod2lkdGgsIC1zdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
KTsKICAgICAgIH0KICAgICB9CiAKQEAgLTE1OSw3ICsxNjAsNyBAQCBib29sIEJpbmRXaXRoUGFj
ayhjb25zdCBVbmJvdW5kQ29udmVyc2lvbiogcHJvcHMsCiB9CiAKIHN0ZDo6c3RyaW5nIFN1bW1h
cml6ZShjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAotICAgICAgICAgICAgICAg
ICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpIHsKICAgdHlwZWRl
ZiBTdW1tYXJpemluZ0NvbnZlcnRlciBDb252ZXJ0ZXI7CiAgIHN0ZDo6c3RyaW5nIG91dDsKICAg
ewpAQCAtMTg3LDcgKzE4OCw3IEBAIHN0ZDo6b3N0cmVhbSYgU3RyZWFtYWJsZTo6UHJpbnQoc3Rk
Ojpvc3RyZWFtJiBvcykgY29uc3QgewogfQogCiBzdGQ6OnN0cmluZyYgQXBwZW5kUGFjayhzdGQ6
OnN0cmluZyogb3V0LCBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdz
KSB7CiAgIHNpemVfdCBvcmlnID0gb3V0LT5zaXplKCk7CiAgIGlmIChBQlNMX1BSRURJQ1RfRkFM
U0UoIUZvcm1hdFVudHlwZWQob3V0LCBmb3JtYXQsIGFyZ3MpKSkgewogICAgIG91dC0+ZXJhc2Uo
b3JpZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmlu
ZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuaAppbmRleCAxYjUy
ZGY5YzdmNTY1NWYxZDc4ZGFkYzUwODI1YzRkMjNlNDI2MGY1Li43ZGYxNDBhNDM2MzM3M2Y2ODky
Y2Q0ZGM1NTMwZDNlYjk4Nzk2YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9mb3JtYXQvYmluZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9iaW5kLmgKQEAgLTcsNyArNyw2IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAi
YWJzbC9iYXNlL3BvcnQuaCIKLSNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rv
ci5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oIgog
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2NoZWNrZXIuaCIKICNp
bmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuaCIKQEAgLTEz
OCw3ICsxMzcsMTcgQEAgY2xhc3MgU3RyZWFtYWJsZSB7CiAgcHVibGljOgogICBTdHJlYW1hYmxl
KGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAogICAgICAgICAgICAgIGFic2w6
OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncykKLSAgICAgIDogZm9ybWF0Xyhmb3JtYXQp
LCBhcmdzXyhhcmdzLmJlZ2luKCksIGFyZ3MuZW5kKCkpIHt9CisgICAgICA6IGZvcm1hdF8oZm9y
bWF0KSB7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDw9IEFCU0xfQVJSQVlTSVpFKGZld19hcmdzXykp
IHsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkgeworICAg
ICAgICBmZXdfYXJnc19baV0gPSBhcmdzW2ldOworICAgICAgfQorICAgICAgYXJnc18gPSBhYnNs
OjpNYWtlU3BhbihmZXdfYXJnc18sIGFyZ3Muc2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
bWFueV9hcmdzXy5hc3NpZ24oYXJncy5iZWdpbigpLCBhcmdzLmVuZCgpKTsKKyAgICAgIGFyZ3Nf
ID0gbWFueV9hcmdzXzsKKyAgICB9CisgIH0KIAogICBzdGQ6Om9zdHJlYW0mIFByaW50KHN0ZDo6
b3N0cmVhbSYgb3MpIGNvbnN0OwogCkBAIC0xNDgsMTIgKzE1NywxNyBAQCBjbGFzcyBTdHJlYW1h
YmxlIHsKIAogIHByaXZhdGU6CiAgIGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0
XzsKLSAgYWJzbDo6SW5saW5lZFZlY3RvcjxGb3JtYXRBcmdJbXBsLCA0PiBhcmdzXzsKKyAgYWJz
bDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzXzsKKyAgLy8gaWYgYXJnc18uc2l6ZSgp
IGlzIDQgb3IgbGVzczoKKyAgRm9ybWF0QXJnSW1wbCBmZXdfYXJnc19bNF0gPSB7Rm9ybWF0QXJn
SW1wbCgwKSwgRm9ybWF0QXJnSW1wbCgwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9ybWF0QXJnSW1wbCgwKSwgRm9ybWF0QXJnSW1wbCgwKX07CisgIC8vIGlmIGFyZ3NfLnNp
emUoKSBpcyBtb3JlIHRoYW4gNDoKKyAgc3RkOjp2ZWN0b3I8Rm9ybWF0QXJnSW1wbD4gbWFueV9h
cmdzXzsKIH07CiAKIC8vIGZvciB0ZXN0aW5nCiBzdGQ6OnN0cmluZyBTdW1tYXJpemUoVW50eXBl
ZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25z
dCBGb3JtYXRBcmdJbXBsPiBhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFu
PGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpOwogYm9vbCBCaW5kV2l0aFBhY2soY29uc3QgVW5i
b3VuZENvbnZlcnNpb24qIHByb3BzLAogICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25z
dCBGb3JtYXRBcmdJbXBsPiBwYWNrLCBCb3VuZENvbnZlcnNpb24qIGJvdW5kKTsKIApAQCAtMTYy
LDEwICsxNzYsMTAgQEAgYm9vbCBGb3JtYXRVbnR5cGVkKEZvcm1hdFJhd1NpbmtJbXBsIHJhd19z
aW5rLAogICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4g
YXJncyk7CiAKIHN0ZDo6c3RyaW5nJiBBcHBlbmRQYWNrKHN0ZDo6c3RyaW5nKiBvdXQsIFVudHlw
ZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxj
b25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncyk7CiAKIGlubGluZSBzdGQ6OnN0cmluZyBG
b3JtYXRQYWNrKGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0lt
cGw+IGFyZ3MpIHsKICAgc3RkOjpzdHJpbmcgb3V0OwogICBBcHBlbmRQYWNrKCZvdXQsIGZvcm1h
dCwgYXJncyk7CiAgIHJldHVybiBvdXQ7CkBAIC0xNzYsNyArMTkwLDcgQEAgaW50IEZwcmludEYo
c3RkOjpGSUxFKiBvdXRwdXQsIFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCiBpbnQgU25w
cmludEYoY2hhciogb3V0cHV0LCBzaXplX3Qgc2l6ZSwgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZv
cm1hdCwKICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3Mp
OwogCi0vLyBSZXR1cm5lZCBieSBTdHJlYW1lZCh2KS4gQ29udmVydHMgdmlhICclcycgdG8gdGhl
IHN0cmluZyBjcmVhdGVkCisvLyBSZXR1cm5lZCBieSBTdHJlYW1lZCh2KS4gQ29udmVydHMgdmlh
ICclcycgdG8gdGhlIHN0ZDo6c3RyaW5nIGNyZWF0ZWQKIC8vIGJ5IHN0ZDo6b3N0cmVhbSA8PCB2
LgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBTdHJlYW1lZFdyYXBwZXIgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmRfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kX3Rlc3QuY2MKaW5kZXggNDc1NzU3
MzliYTEzMDAyNGJkZmYwNzZmZjAzODhjZmIzYTY4Nzc0MC4uMjU3NDgwMWE1YzM4OGM0ZmM1ODFh
OGQ5ZTUxNWE4NzY0NDIwM2IwNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9z
dHJfZm9ybWF0L2JpbmRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9m
b3JtYXQvYmluZF90ZXN0LmNjCkBAIC0xLDYgKzEsNyBAQAogI2luY2x1ZGUgImFic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorI2lu
Y2x1ZGUgPGxpbWl0cz4KIAogI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKQEAgLTgsMTYgKzks
MTEgQEAgbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHN0cl9mb3JtYXRfaW50ZXJuYWwgewog
bmFtZXNwYWNlIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgotc2l6ZV90IEFy
cmF5U2l6ZShUICgmKVtOXSkgewotICByZXR1cm4gTjsKLX0KLQogY2xhc3MgRm9ybWF0QmluZFRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICBwdWJsaWM6CiAgIGJvb2wgRXh0cmFjdChj
b25zdCBjaGFyICpzLCBVbmJvdW5kQ29udmVyc2lvbiAqcHJvcHMsIGludCAqbmV4dCkgY29uc3Qg
ewotICAgIGFic2w6OnN0cmluZ192aWV3IHNyYyA9IHM7Ci0gICAgcmV0dXJuIENvbnN1bWVVbmJv
dW5kQ29udmVyc2lvbigmc3JjLCBwcm9wcywgbmV4dCkgJiYgc3JjLmVtcHR5KCk7CisgICAgcmV0
dXJuIENvbnN1bWVVbmJvdW5kQ29udmVyc2lvbihzLCBzICsgc3RybGVuKHMpLCBwcm9wcywgbmV4
dCkgPT0KKyAgICAgICAgICAgcyArIHN0cmxlbihzKTsKICAgfQogfTsKIApAQCAtOTEsNiArODcs
MjAgQEAgVEVTVF9GKEZvcm1hdEJpbmRUZXN0LCBCaW5kU2luZ2xlKSB7CiAgIH0KIH0KIAorVEVT
VF9GKEZvcm1hdEJpbmRUZXN0LCBXaWR0aFVuZGVyZmxvd1JlZ3Jlc3Npb24pIHsKKyAgVW5ib3Vu
ZENvbnZlcnNpb24gcHJvcHM7CisgIEJvdW5kQ29udmVyc2lvbiBib3VuZDsKKyAgaW50IG5leHQg
PSAwOworICBjb25zdCBpbnQgYXJnc19pW10gPSB7c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpt
aW4oKSwgMTd9OworICBjb25zdCBGb3JtYXRBcmdJbXBsIGFyZ3NbXSA9IHtGb3JtYXRBcmdJbXBs
KGFyZ3NfaVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdEFyZ0lt
cGwoYXJnc19pWzFdKX07CisgIEFTU0VSVF9UUlVFKEV4dHJhY3QoIipkIiwgJnByb3BzLCAmbmV4
dCkpOworICBBU1NFUlRfVFJVRShCaW5kV2l0aFBhY2soJnByb3BzLCBhcmdzLCAmYm91bmQpKTsK
KworICBFWFBFQ1RfRVEoYm91bmQud2lkdGgoKSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpt
YXgoKSk7CisgIEVYUEVDVF9FUShib3VuZC5hcmcoKSwgYXJncyArIDEpOworfQorCiBURVNUX0Yo
Rm9ybWF0QmluZFRlc3QsIEZvcm1hdFBhY2spIHsKICAgc3RydWN0IEV4cGVjdGF0aW9uIHsKICAg
ICBpbnQgbGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9jaGVja2VyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvY2hl
Y2tlcl90ZXN0LmNjCmluZGV4IDE0ZDExZWE4YmQzMDZhNGVhZmUzMjZhY2E5ZWIzNzdhNmFlZjkz
YmEuLmMxZDhjNzY5ZWY3ZDg2N2NmOTI5OGUwOTI5MzllMDYxOGQ2MjMyMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9jaGVja2VyX3Rlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2NoZWNrZXJfdGVzdC5jYwpAQCAtNjIs
MzIgKzYyLDMyIEBAIFRFU1QoU3RyRm9ybWF0Q2hlY2tlciwgVmFsaWRGb3JtYXQpIHsKICAgICAg
IFZhbGlkRm9ybWF0PGludD4oIiUlICVkIiksICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAg
ICAgIFZhbGlkRm9ybWF0PGludD4oIiVsZCIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8K
ICAgICAgIFZhbGlkRm9ybWF0PGludD4oIiVsbGQiKSwgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8KLSAgICAgIFZhbGlkRm9ybWF0PHN0ZDo6c3RyaW5nPigiJXMiKSwgICAgICAgICAgICAgICAg
ICAgICAgICAvLwotICAgICAgVmFsaWRGb3JtYXQ8c3RkOjpzdHJpbmc+KCIlMTBzIiksICAgICAg
ICAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxzdGQ6OnN0cmluZz4oIiVzIiks
ICAgICAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxzdGQ6OnN0cmluZz4oIiUx
MHMiKSwgICAgICAgICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlLjEweCIp
LCAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxpbnQsIGludD4o
IiUqLjN4IiksICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIl
MS5kIiksICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxpbnQ+
KCIlLmQiKSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxp
bnQsIGRvdWJsZT4oIiVkICVnIiksICAgICAgICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1h
dDxpbnQsIHN0ZDo6c3RyaW5nPigiJSpzIiksICAgICAgICAgICAgICAgICAgLy8KKyAgICAgIFZh
bGlkRm9ybWF0PGludCwgc3RkOjpzdHJpbmc+KCIlKnMiKSwgICAgICAgICAgICAgLy8KICAgICAg
IFZhbGlkRm9ybWF0PGludCwgZG91YmxlPigiJS4qZiIpLCAgICAgICAgICAgICAgICAgLy8KICAg
ICAgIFZhbGlkRm9ybWF0PHZvaWQgKCopKCksIHZvbGF0aWxlIGludCo+KCIlcCAlcCIpLCAgLy8K
ICAgICAgIFZhbGlkRm9ybWF0PHN0cmluZ192aWV3LCBjb25zdCBjaGFyKiwgZG91YmxlLCB2b2lk
Kj4oCiAgICAgICAgICAgInN0cmluZ192aWV3PSVzIGNvbnN0IGNoYXIqPSVzIGRvdWJsZT0lZiB2
b2lkKj0lcCkiKSwKIAotICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJSUgJTEkZCIpLCAgICAgICAg
ICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSRsZCIpLCAgICAgICAgICAgICAgLy8K
LSAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUxJGxsZCIpLCAgICAgICAgICAgICAvLwotICAgICAg
VmFsaWRGb3JtYXQ8c3RkOjpzdHJpbmc+KCIlMSRzIiksICAgICAgICAgICAgLy8KLSAgICAgIFZh
bGlkRm9ybWF0PHN0ZDo6c3RyaW5nPigiJTEkMTBzIiksICAgICAgICAgIC8vCi0gICAgICBWYWxp
ZEZvcm1hdDxpbnQ+KCIlMSQuMTB4IiksICAgICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0
PGludD4oIiUxJCoxJC4qMSRkIiksICAgICAgICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50LCBp
bnQ+KCIlMSQqMiQuM3giKSwgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSQxLmQi
KSwgICAgICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUxJC5kIiksICAgICAg
ICAgICAgICAvLwotICAgICAgVmFsaWRGb3JtYXQ8ZG91YmxlLCBpbnQ+KCIlMiRkICUxJGciKSwg
IC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQsIHN0ZDo6c3RyaW5nPigiJTIkKjEkcyIpLCAgICAv
LwotICAgICAgVmFsaWRGb3JtYXQ8aW50LCBkb3VibGU+KCIlMiQuKjEkZiIpLCAgIC8vCisgICAg
ICBWYWxpZEZvcm1hdDxpbnQ+KCIlJSAlMSRkIiksICAgICAgICAgICAgICAgLy8KKyAgICAgIFZh
bGlkRm9ybWF0PGludD4oIiUxJGxkIiksICAgICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRG
b3JtYXQ8aW50PigiJTEkbGxkIiksICAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1h
dDxzdGQ6OnN0cmluZz4oIiUxJHMiKSwgICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PHN0
ZDo6c3RyaW5nPigiJTEkMTBzIiksICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50Pigi
JTEkLjEweCIpLCAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSQq
MSQuKjEkZCIpLCAgICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGludCwgaW50PigiJTEk
KjIkLjN4IiksICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEkMS5kIiksICAg
ICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSQuZCIpLCAgICAgICAg
ICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGRvdWJsZSwgaW50PigiJTIkZCAlMSRnIiks
ICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50LCBzdGQ6OnN0cmluZz4oIiUyJCoxJHMiKSwg
IC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQsIGRvdWJsZT4oIiUyJC4qMSRmIiksICAgICAgLy8K
ICAgICAgIFZhbGlkRm9ybWF0PHZvaWQqLCBzdHJpbmdfdmlldywgY29uc3QgY2hhciosIGRvdWJs
ZT4oCiAgICAgICAgICAgInN0cmluZ192aWV3PSUyJHMgY29uc3QgY2hhcio9JTMkcyBkb3VibGU9
JTQkZiB2b2lkKj0lMSRwICIKICAgICAgICAgICAicmVwZWF0PSUzJHMpIil9OwpAQCAtOTksMjUg
Kzk5LDI1IEBAIFRFU1QoU3RyRm9ybWF0Q2hlY2tlciwgVmFsaWRGb3JtYXQpIHsKICAgY29uc3Rl
eHByIENhc2UgZmFsc2VzW10gPSB7CiAgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIiKSwgIC8vCiAK
LSAgICAgIFZhbGlkRm9ybWF0PGU+KCIlcyIpLCAgICAgICAgICAgICAvLwotICAgICAgVmFsaWRG
b3JtYXQ8ZTI+KCIlcyIpLCAgICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDw+KCIlcyIp
LCAgICAgICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PD4oIiVyIiksICAgICAgICAgICAg
ICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJXMiKSwgICAgICAgICAgIC8vCi0gICAgICBW
YWxpZEZvcm1hdDxpbnQ+KCIlLjEuZCIpLCAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGlu
dD4oIiUqMWQiKSwgICAgICAgICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEtZCIpLCAg
ICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxlPigiJXMiKSwgICAgICAgICAgICAgICAgICAv
LworICAgICAgVmFsaWRGb3JtYXQ8ZTI+KCIlcyIpLCAgICAgICAgICAgICAgICAgLy8KKyAgICAg
IFZhbGlkRm9ybWF0PD4oIiVzIiksICAgICAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZv
cm1hdDw+KCIlciIpLCAgICAgICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50
PigiJXMiKSwgICAgICAgICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUuMS5k
IiksICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlKjFkIiksICAgICAg
ICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEtZCIpLCAgICAgICAgICAgICAg
Ly8KICAgICAgIFZhbGlkRm9ybWF0PHN0ZDo6c3RyaW5nLCBpbnQ+KCIlKnMiKSwgIC8vCi0gICAg
ICBWYWxpZEZvcm1hdDxpbnQ+KCIlKmQiKSwgICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0
PGludD4oIiUqZCIpLCAgICAgICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxzdGQ6OnN0
cmluZz4oIiVwIiksICAgICAgICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50ICgqKShpbnQpPigi
JWQiKSwgIC8vCi0KLSAgICAgIFZhbGlkRm9ybWF0PD4oIiUzJGQiKSwgICAgICAgICAgICAgICAg
Ly8KLSAgICAgIFZhbGlkRm9ybWF0PD4oIiUxJHIiKSwgICAgICAgICAgICAgICAgLy8KLSAgICAg
IFZhbGlkRm9ybWF0PGludD4oIiUxJHMiKSwgICAgICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9y
bWF0PGludD4oIiUxJC4xLmQiKSwgICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGludD4o
IiUxJCoyJDFkIiksICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUxJDEtZCIp
LCAgICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGludCAoKikoaW50KT4oIiVkIiksICAg
ICAgIC8vCisKKyAgICAgIFZhbGlkRm9ybWF0PD4oIiUzJGQiKSwgICAgICAgICAgICAgICAgICAg
ICAvLworICAgICAgVmFsaWRGb3JtYXQ8PigiJTEkciIpLCAgICAgICAgICAgICAgICAgICAgIC8v
CisgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSRzIiksICAgICAgICAgICAgICAgICAgLy8KKyAg
ICAgIFZhbGlkRm9ybWF0PGludD4oIiUxJC4xLmQiKSwgICAgICAgICAgICAgICAvLworICAgICAg
VmFsaWRGb3JtYXQ8aW50PigiJTEkKjIkMWQiKSwgICAgICAgICAgICAgIC8vCisgICAgICBWYWxp
ZEZvcm1hdDxpbnQ+KCIlMSQxLWQiKSwgICAgICAgICAgICAgICAgLy8KICAgICAgIFZhbGlkRm9y
bWF0PHN0ZDo6c3RyaW5nLCBpbnQ+KCIlMiQqMSRzIiksICAvLwogICAgICAgVmFsaWRGb3JtYXQ8
c3RkOjpzdHJpbmc+KCIlMSRwIiksCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvc3RyX2Zvcm1hdC9jb252ZXJ0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0
cl9mb3JtYXQvY29udmVydF90ZXN0LmNjCmluZGV4IDMyZjhhMGY5YWQxYTQ4MmYwMzhkZjYyMmQ0
ZmIzNzYwZWJlNmU1N2MuLjgxNGNjZjRjNjVlNjRiNWJiN2ZiNTdhYzVjYTA0YmY5YzJkOTdhODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9jb252ZXJ0X3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2NvbnZlcnRfdGVz
dC5jYwpAQCAtMSw2ICsxLDcgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN0ZGFy
Zy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8Y2N0eXBlPgogI2luY2x1ZGUgPGNt
YXRoPgogI2luY2x1ZGUgPHN0cmluZz4KIApAQCAtMzIsNyArMzMsOSBAQCBzdGQ6OnN0cmluZyBM
ZW5ndGhNb2RGb3IobG9uZyBsb25nKSB7IHJldHVybiAibGwiOyB9ICAgICAgICAgICAvLyBOT0xJ
TlQKIHN0ZDo6c3RyaW5nIExlbmd0aE1vZEZvcih1bnNpZ25lZCBsb25nIGxvbmcpIHsgcmV0dXJu
ICJsbCI7IH0gIC8vIE5PTElOVAogCiBzdGQ6OnN0cmluZyBFc2NDaGFySW1wbChpbnQgdikgewot
ICBpZiAoaXNwcmludCh2KSkgcmV0dXJuIHN0ZDo6c3RyaW5nKDEsIHN0YXRpY19jYXN0PGNoYXI+
KHYpKTsKKyAgaWYgKHN0ZDo6aXNwcmludChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2KSkp
IHsKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcoMSwgc3RhdGljX2Nhc3Q8Y2hhcj4odikpOworICB9
CiAgIGNoYXIgYnVmWzY0XTsKICAgaW50IG4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAi
XFwlIy4yeCIsCiAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYgJiAw
eGZmKSk7CkBAIC0xNTUsNyArMTU4LDcgQEAgVEVTVF9GKEZvcm1hdENvbnZlcnRUZXN0LCBTdHJp
bmdQcmVjaXNpb24pIHsKIH0KIAogVEVTVF9GKEZvcm1hdENvbnZlcnRUZXN0LCBQb2ludGVyKSB7
Ci0jaWYgX01TQ19WRVIKKyNpZmRlZiBfTVNDX1ZFUgogICAvLyBNU1ZDJ3MgcHJpbnRmIGltcGxl
bWVudGF0aW9uIHByaW50cyBwb2ludGVycyBkaWZmZXJlbnRseS4gV2UgY2FuJ3QgZWFzaWx5CiAg
IC8vIGNvbXBhcmUgb3VyIGltcGxlbWVudGF0aW9uIHRvIHRoZWlycy4KICAgcmV0dXJuOwpAQCAt
MjMyLDcgKzIzNSw3IEBAIFRFU1RfRihGb3JtYXRDb252ZXJ0VGVzdCwgRW51bSkgewogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBUeXBlZEZvcm1hdENvbnZlcnRUZXN0IDogcHVibGljIEZv
cm1hdENvbnZlcnRUZXN0IHsgfTsKIAotVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRGb3JtYXRDb252
ZXJ0VGVzdCk7CitUWVBFRF9URVNUX1NVSVRFX1AoVHlwZWRGb3JtYXRDb252ZXJ0VGVzdCk7CiAK
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBBbGxGbGFnQ29tYmluYXRpb25zKCkgewogICBjb25z
dCBjaGFyIGtGbGFnc1tdID0geyctJywgJyMnLCAnMCcsICcrJywgJyAnfTsKQEAgLTM2Myw2ICsz
NjYsMTggQEAgdHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPAogICAgIEFsbEludFR5cGVzOwogSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRGb3JtYXRDb252ZXJ0VGVzdFdpdGhBbGxJ
bnRUeXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVkRm9ybWF0Q29udmVy
dFRlc3QsIEFsbEludFR5cGVzKTsKKworVEVTVF9GKEZvcm1hdENvbnZlcnRUZXN0LCBWZWN0b3JC
b29sKSB7CisgIC8vIE1ha2Ugc3VyZSB2ZWN0b3I8Ym9vbD4ncyB2YWx1ZXMgYmVoYXZlIGFzIGJv
b2xzLgorICBzdGQ6OnZlY3Rvcjxib29sPiB2ID0ge3RydWUsIGZhbHNlfTsKKyAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8Ym9vbD4gY3YgPSB7dHJ1ZSwgZmFsc2V9OworICBFWFBFQ1RfRVEoIjEsMCwxLDAi
LAorICAgICAgICAgICAgRm9ybWF0UGFjayhVbnR5cGVkRm9ybWF0U3BlY0ltcGwoIiVkLCVkLCVk
LCVkIiksCisgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJn
SW1wbD4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICB7Rm9ybWF0QXJnSW1wbCh2WzBdKSwg
Rm9ybWF0QXJnSW1wbCh2WzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRB
cmdJbXBsKGN2WzBdKSwgRm9ybWF0QXJnSW1wbChjdlsxXSl9KSkpOworfQorCiBURVNUX0YoRm9y
bWF0Q29udmVydFRlc3QsIFVpbnQxMjgpIHsKICAgYWJzbDo6dWludDEyOCB2ID0gc3RhdGljX2Nh
c3Q8YWJzbDo6dWludDEyOD4oMHgxMjM0NTY3ODkwYWJjZGVmKSAqIDE5Nzk7CiAgIGFic2w6OnVp
bnQxMjggbWF4ID0gYWJzbDo6VWludDEyOE1heCgpOwpAQCAtMzg5LDcgKzQwNCw3IEBAIFRFU1Rf
RihGb3JtYXRDb252ZXJ0VGVzdCwgVWludDEyOCkgewogfQogCiBURVNUX0YoRm9ybWF0Q29udmVy
dFRlc3QsIEZsb2F0KSB7Ci0jaWYgX01TQ19WRVIKKyNpZmRlZiBfTVNDX1ZFUgogICAvLyBNU1ZD
IGhhcyBhIGRpZmZlcmVudCByb3VuZGluZyBwb2xpY3kgdGhhbiB1cyBzbyB3ZSBjYW4ndCB0ZXN0
IG91cgogICAvLyBpbXBsZW1lbnRhdGlvbiBhZ2FpbnN0IHRoZSBuYXRpdmUgb25lIHRoZXJlLgog
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQv
ZXh0ZW5zaW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lv
bi5jYwppbmRleCBjMjE3NDcwM2MzZThiM2YzN2JkMTJjNjRkZDkyMDI1ZTNhNzRhOTYwLi5kN2Y1
ODE1OWQ1ZmI2ZGU1YjQ4YWZkOGRhMTAxODgzN2U0NzU2MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uY2MKQEAgLTUsNyArNSw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
c3RyX2Zvcm1hdC9leHRlbnNpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9leHRlbnNpb24uaAppbmRleCAxMWI5OTZhZWZkMzdkMTU3YTNmMDhkYWE1YTIyZGMwMWMwYTJk
MDIzLi5lYjgxZjhhMTdjYTRhODRmYmVjZGY5YWEwN2VkYWMwMTEyZDYxZTVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5oCkBAIC01LDcgKzUsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMyw3ICsxMyw2IEBACiAvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCiAvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIC8vCi0vLwogI2lmbmRlZiBB
QlNMX1NUUklOR1NfSU5URVJOQUxfU1RSX0ZPUk1BVF9FWFRFTlNJT05fSF8KICNkZWZpbmUgQUJT
TF9TVFJJTkdTX0lOVEVSTkFMX1NUUl9GT1JNQVRfRVhURU5TSU9OX0hfCiAKQEAgLTM2MCw3ICsz
NTksNyBAQCBlbnVtIGNsYXNzIENvbnYgOiB1aW50NjRfdCB7CiAgIGludGVncmFsID0gZCB8IGkg
fCB1IHwgbyB8IHggfCBYLAogICBmbG9hdGluZyA9IGEgfCBlIHwgZiB8IGcgfCBBIHwgRSB8IEYg
fCBHLAogICBudW1lcmljID0gaW50ZWdyYWwgfCBmbG9hdGluZywKLSAgc3RyaW5nID0gcywgIC8v
IGFic2w6aWdub3JlKHN0ZDo6c3RyaW5nKQorICBzdHJpbmcgPSBzLAogICBwb2ludGVyID0gcAog
fTsKIApAQCAtNDA5LDQgKzQwOCw0IEBAIGlubGluZSBzaXplX3QgRXhjZXNzKHNpemVfdCB1c2Vk
LCBzaXplX3QgY2FwYWNpdHkpIHsKIAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIAotI2VuZGlmICAv
LyBBQlNMX1NUUklOR1NfU1RSX0ZPUk1BVF9FWFRFTlNJT05fSF8KKyNlbmRpZiAgLy8gQUJTTF9T
VFJJTkdTX0lOVEVSTkFMX1NUUl9GT1JNQVRfRVhURU5TSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uX3Rlc3QuY2MKaW5kZXggMjI0ZmM5
MjNkM2UzZGJhYTM0MTcwYTQ3YzZmODEzM2M4NDQ0YWIzOS4uNGUyM2ZlZmJkNWIwNjBiMDNkZDg4
MjczNDlhZWM0YmZlOGU3YjMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9z
dHJfZm9ybWF0L2V4dGVuc2lvbl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
c3RyX2Zvcm1hdC9leHRlbnNpb25fdGVzdC5jYwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
IC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLApAQCAtMTgsNiArMTgsNyBAQAogCiAjaW5jbHVkZSA8cmFuZG9tPgogI2lu
Y2x1ZGUgPHN0cmluZz4KKwogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgiCiAK
ICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9zdHJfZm9ybWF0L2Zsb2F0X2NvbnZlcnNpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL3N0cl9mb3JtYXQvZmxvYXRfY29udmVyc2lvbi5jYwppbmRleCA2MTc2ZGI5Y2I1YTIyZGMx
MTMzYWFkY2I2Yzk1OTU5M2IwMTk5NjE3Li45MjM2YWNkYzc0Y2I3YjI1OTY0MmJkZDNmNjVhYTY4
NmZiYTllMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQv
ZmxvYXRfY29udmVyc2lvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3Jt
YXQvZmxvYXRfY29udmVyc2lvbi5jYwpAQCAtNiw2ICs2LDggQEAKICNpbmNsdWRlIDxjbWF0aD4K
ICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhYnNsL2Jhc2UvY29uZmlnLmgiCisKIG5h
bWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSBzdHJfZm9ybWF0X2ludGVybmFsIHsKIApAQCAtMzM0
LDcgKzMzNiw3IEBAIGJvb2wgRmxvYXRUb0J1ZmZlcihEZWNvbXBvc2VkPEZsb2F0PiBkZWNvbXBv
c2VkLCBpbnQgcHJlY2lzaW9uLCBCdWZmZXIgKm91dCwKICAgICAgICAgICBzdGF0aWNfY2FzdDxz
dGQ6OnVpbnQ2NF90PihkZWNvbXBvc2VkLmV4cG9uZW50KSwgcHJlY2lzaW9uLCBvdXQsIGV4cCkp
CiAgICAgcmV0dXJuIHRydWU7CiAKLSNpZiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQorI2lm
IGRlZmluZWQoQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgpCiAgIC8vIElmIHRoYXQgaXMgbm90
IGVub3VnaCwgdHJ5IHdpdGggX191aW50MTI4X3QuCiAgIHJldHVybiBDYW5GaXRNYW50aXNzYTxG
bG9hdCwgX191aW50MTI4X3Q+KCkgJiYKICAgICAgICAgIEZsb2F0VG9CdWZmZXJJbXBsPF9fdWlu
dDEyOF90LCBGbG9hdCwgbW9kZT4oCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9mb3JtYXQvb3V0cHV0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0
L291dHB1dC5jYwppbmRleCA1YzM3OTViNzM3Y2ExYmNjYzVkZTliYmE3NTNjMzRhYjZjNjIwNzNl
Li4zODk4N2I2Mzg1ZGRlMjA2ZDFjM2ZhOGNmZjBiODU4Y2M2NjNlMmNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIwLDYgKzIwLDE2IEBACiBuYW1lc3BhY2UgYWJzbCB7
CiBuYW1lc3BhY2Ugc3RyX2Zvcm1hdF9pbnRlcm5hbCB7CiAKK25hbWVzcGFjZSB7CitzdHJ1Y3Qg
Q2xlYXJFcnJub0d1YXJkIHsKKyAgQ2xlYXJFcnJub0d1YXJkKCkgOiBvbGRfdmFsdWUoZXJybm8p
IHsgZXJybm8gPSAwOyB9CisgIH5DbGVhckVycm5vR3VhcmQoKSB7CisgICAgaWYgKCFlcnJubykg
ZXJybm8gPSBvbGRfdmFsdWU7CisgIH0KKyAgaW50IG9sZF92YWx1ZTsKK307Cit9ICAvLyBuYW1l
c3BhY2UKKwogdm9pZCBCdWZmZXJSYXdTaW5rOjpXcml0ZShzdHJpbmdfdmlldyB2KSB7CiAgIHNp
emVfdCB0b193cml0ZSA9IHN0ZDo6bWluKHYuc2l6ZSgpLCBzaXplXyk7CiAgIHN0ZDo6bWVtY3B5
KGJ1ZmZlcl8sIHYuZGF0YSgpLCB0b193cml0ZSk7CkBAIC0zMCwxNCArNDAsMjcgQEAgdm9pZCBC
dWZmZXJSYXdTaW5rOjpXcml0ZShzdHJpbmdfdmlldyB2KSB7CiAKIHZvaWQgRklMRVJhd1Npbms6
OldyaXRlKHN0cmluZ192aWV3IHYpIHsKICAgd2hpbGUgKCF2LmVtcHR5KCkgJiYgIWVycm9yXykg
eworICAgIC8vIFJlc2V0IGVycm5vIHRvIHplcm8gaW4gY2FzZSB0aGUgbGliYyBpbXBsZW1lbnRh
dGlvbiBkb2Vzbid0IHNldCBlcnJubworICAgIC8vIHdoZW4gYSBmYWlsdXJlIG9jY3Vycy4KKyAg
ICBDbGVhckVycm5vR3VhcmQgZ3VhcmQ7CisKICAgICBpZiAoc2l6ZV90IHJlc3VsdCA9IHN0ZDo6
ZndyaXRlKHYuZGF0YSgpLCAxLCB2LnNpemUoKSwgb3V0cHV0XykpIHsKICAgICAgIC8vIFNvbWUg
cHJvZ3Jlc3Mgd2FzIG1hZGUuCiAgICAgICBjb3VudF8gKz0gcmVzdWx0OwogICAgICAgdi5yZW1v
dmVfcHJlZml4KHJlc3VsdCk7CiAgICAgfSBlbHNlIHsKLSAgICAgIC8vIFNvbWUgZXJyb3Igb2Nj
dXJyZWQuCi0gICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKKyAgICAgIGlmIChlcnJubyA9PSBF
SU5UUikgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0gZWxzZSBpZiAoZXJybm8pIHsKICAg
ICAgICAgZXJyb3JfID0gZXJybm87CisgICAgICB9IGVsc2UgaWYgKHN0ZDo6ZmVycm9yKG91dHB1
dF8pKSB7CisgICAgICAgIC8vIE5vbi1QT1NJWCBjb21wbGlhbnQgbGliYyBpbXBsZW1lbnRhdGlv
bnMgbWF5IG5vdCBzZXQgZXJybm8sIHNvIHdlCisgICAgICAgIC8vIGhhdmUgY2hlY2sgdGhlIHN0
cmVhbXMgZXJyb3IgaW5kaWNhdG9yLgorICAgICAgICBlcnJvcl8gPSBFQkFERjsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIFdlJ3JlIGxpa2VseSBvbiBhIG5vbi1QT1NJWCBzeXN0ZW0gdGhh
dCBlbmNvdW50ZXJlZCBFSU5UUiBidXQgaGFkIG5vCisgICAgICAgIC8vIHdheSBvZiByZXBvcnRp
bmcgaXQuCisgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogICAgIH0KICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1dC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1dC5oCmluZGV4IDEyZWNkOTllNjgwZDFlYmQ2
NzlkM2M4ODJmN2YyNmYzZTlmYjZlNDYuLjQyZGE2NDE3YmUwNzhjNzNiMWJjY2I0ZWIxNmY2Njk4
MDExZGM2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9v
dXRwdXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0LmgK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXRfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXRfdGVzdC5jYwppbmRleCBjYzNjNjE1NTU3
ZmVmNDRiZjgxMzkxMWY3YmRlOGUwYzhjODA2MWY0Li42ZTA0YWJlZjRkOTFjNzJhM2E3ZTgxZTJm
MzY4NTViMDk1MjU3MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9m
b3JtYXQvb3V0cHV0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9y
bWF0L291dHB1dF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC0xNyw3ICsxNyw2IEBACiAjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDxzdHJp
bmc+CiAKLQogI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKIApAQCAtMjgsMTIgKzI3LDYgQEAgVEVTVChJbnZva2VGbHVzaCwgU3RyaW5nKSB7CiAgIHN0
ZDo6c3RyaW5nIHN0ciA9ICJBQkMiOwogICBzdHJfZm9ybWF0X2ludGVybmFsOjpJbnZva2VGbHVz
aCgmc3RyLCAiREVGIik7CiAgIEVYUEVDVF9FUShzdHIsICJBQkNERUYiKTsKLQotI2lmIFVUSUxf
Rk9STUFUX0hBU19HTE9CQUxfU1RSSU5HCi0gIHN0ZDo6c3RyaW5nIHN0cjIgPSAiQUJDIjsKLSAg
c3RyX2Zvcm1hdF9pbnRlcm5hbDo6SW52b2tlRmx1c2goJnN0cjIsICJERUYiKTsKLSAgRVhQRUNU
X0VRKHN0cjIsICJBQkNERUYiKTsKLSNlbmRpZiAgLy8gVVRJTF9GT1JNQVRfSEFTX0dMT0JBTF9T
VFJJTkcKIH0KIAogVEVTVChJbnZva2VGbHVzaCwgU3RyZWFtKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5jYwppbmRleCA1ZTNkMGQwNTQ3ZDFkYmFkNDdiM2E1
MDNiNjg1MDc2Mzc0MzczMzIwLi45ZWY1NjE1Y2M5ZWVjNjE0NTNkM2JjNDRmYjlhMjU2NTdhMDY0
NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2Vy
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuY2MKQEAg
LTE1LDYgKzE1LDQ0IEBACiAKIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSBzdHJfZm9ybWF0
X2ludGVybmFsIHsKKwordXNpbmcgQ0MgPSBDb252ZXJzaW9uQ2hhcjo6SWQ7Cit1c2luZyBMTSA9
IExlbmd0aE1vZDo6SWQ7CitBQlNMX0NPTlNUX0lOSVQgY29uc3QgQ29udlRhZyBrVGFnc1syNTZd
ID0geworICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAg
ICB7fSwgICAgIC8vIDAwLTA3CisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAg
ICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gMDgtMGYKKyAgICB7fSwgICAge30sICAgIHt9LCAg
ICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyAxMC0xNworICAgIHt9LCAg
ICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIDE4
LTFmCisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAg
IHt9LCAgICAgLy8gMjAtMjcKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAg
IHt9LCAgICB7fSwgICAge30sICAgICAvLyAyOC0yZgorICAgIHt9LCAgICB7fSwgICAge30sICAg
IHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIDMwLTM3CisgICAge30sICAg
IHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gMzgt
M2YKKyAgICB7fSwgICAgQ0M6OkEsIHt9LCAgICBDQzo6Qywge30sICAgIENDOjpFLCBDQzo6Riwg
Q0M6OkcsICAvLyBAQUJDREVGRworICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICBMTTo6
TCwge30sICAgIHt9LCAgICB7fSwgICAgIC8vIEhJSktMTU5PCisgICAge30sICAgIHt9LCAgICB7
fSwgICAgQ0M6OlMsIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gUFFSU1RVVlcKKyAg
ICBDQzo6WCwge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAg
ICAvLyBYWVpbXF1eXworICAgIHt9LCAgICBDQzo6YSwge30sICAgIENDOjpjLCBDQzo6ZCwgQ0M6
OmUsIENDOjpmLCBDQzo6ZywgIC8vIGBhYmNkZWZnCisgICAgTE06OmgsIENDOjppLCBMTTo6aiwg
e30sICAgIExNOjpsLCB7fSwgICAgQ0M6Om4sIENDOjpvLCAgLy8gaGlqa2xtbm8KKyAgICBDQzo6
cCwgTE06OnEsIHt9LCAgICBDQzo6cywgTE06OnQsIENDOjp1LCB7fSwgICAge30sICAgICAvLyBw
cXJzdHV2dworICAgIENDOjp4LCB7fSwgICAgTE06OnosIHt9LCAgICB7fSwgICAge30sICAgIHt9
LCAgICB7fSwgICAgIC8vIHh5ent8fSEKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAg
e30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyA4MC04NworICAgIHt9LCAgICB7fSwgICAg
e30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIDg4LThmCisgICAg
e30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAg
Ly8gOTAtOTcKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7
fSwgICAge30sICAgICAvLyA5OC05ZgorICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7
fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIGEwLWE3CisgICAge30sICAgIHt9LCAgICB7
fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gYTgtYWYKKyAgICB7
fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAv
LyBiMC1iNworICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9
LCAgICB7fSwgICAgIC8vIGI4LWJmCisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9
LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gYzAtYzcKKyAgICB7fSwgICAge30sICAgIHt9
LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyBjOC1jZgorICAgIHt9
LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8v
IGQwLWQ3CisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30s
ICAgIHt9LCAgICAgLy8gZDgtZGYKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30s
ICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyBlMC1lNworICAgIHt9LCAgICB7fSwgICAge30s
ICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIGU4LWVmCisgICAge30s
ICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8g
ZjAtZjcKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwg
ICAge30sICAgICAvLyBmOC1mZgorfTsKKwogbmFtZXNwYWNlIHsKIAogYm9vbCBDaGVja0Zhc3RQ
YXRoU2V0dGluZyhjb25zdCBVbmJvdW5kQ29udmVyc2lvbiYgY29udikgewpAQCAtMzYsNjAgKzc0
LDE3IEBAIGJvb2wgQ2hlY2tGYXN0UGF0aFNldHRpbmcoY29uc3QgVW5ib3VuZENvbnZlcnNpb24m
IGNvbnYpIHsKICAgcmV0dXJuIHNob3VsZF9iZV9iYXNpYyA9PSBjb252LmZsYWdzLmJhc2ljOwog
fQogCi0vLyBLZWVwIGEgc2luZ2xlIHRhYmxlIGZvciBhbGwgdGhlIGNvbnZlcnNpb24gY2hhcnMg
YW5kIGxlbmd0aCBtb2RpZmllcnMuCi0vLyBXZSBpbnZlcnQgdGhlIGxlbmd0aCBtb2RpZmllcnMg
dG8gbWFrZSB0aGVtIG5lZ2F0aXZlIHNvIHRoYXQgd2UgY2FuIGVhc2lseQotLy8gdGVzdCBmb3Ig
dGhlbS4KLS8vIEV2ZXJ5dGhpbmcgZWxzZSBpcyBgbm9uZWAsIHdoaWNoIGlzIGEgbmVnYXRpdmUg
Y29uc3RhbnQuCi11c2luZyBDQyA9IENvbnZlcnNpb25DaGFyOjpJZDsKLXVzaW5nIExNID0gTGVu
Z3RoTW9kOjpJZDsKLXN0YXRpYyBjb25zdGV4cHIgc3RkOjppbnQ4X3Qgbm9uZSA9IC0xMjg7Ci1z
dGF0aWMgY29uc3RleHByIHN0ZDo6aW50OF90IGtJZHNbXSA9IHsKLSAgICBub25lLCAgIG5vbmUs
ICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gMDAtMDcK
LSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwg
IG5vbmUsICAgLy8gMDgtMGYKLSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9u
ZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gMTAtMTcKLSAgICBub25lLCAgIG5vbmUsICAg
bm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gMTgtMWYKLSAg
ICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5v
bmUsICAgLy8gMjAtMjcKLSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwg
ICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gMjgtMmYKLSAgICBub25lLCAgIG5vbmUsICAgbm9u
ZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gMzAtMzcKLSAgICBu
b25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUs
ICAgLy8gMzgtM2YKLSAgICBub25lLCAgIENDOjpBLCAgbm9uZSwgICBDQzo6Qywgbm9uZSwgICBD
Qzo6RSwgQ0M6OkYsIENDOjpHLCAgLy8gQEFCQ0RFRkcKLSAgICBub25lLCAgIG5vbmUsICAgbm9u
ZSwgICBub25lLCAgfkxNOjpMLCBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gSElKS0xNTk8KLSAg
ICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBDQzo6Uywgbm9uZSwgICBub25lLCAgbm9uZSwgIG5v
bmUsICAgLy8gUFFSU1RVVlcKLSAgICBDQzo6WCwgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9u
ZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gWFlaW1xdXl8KLSAgICBub25lLCAgIENDOjph
LCAgbm9uZSwgICBDQzo6YywgQ0M6OmQsICBDQzo6ZSwgQ0M6OmYsIENDOjpnLCAgLy8gYGFiY2Rl
ZmcKLSAgICB+TE06OmgsIENDOjppLCAgfkxNOjpqLCBub25lLCAgfkxNOjpsLCBub25lLCAgQ0M6
Om4sIENDOjpvLCAgLy8gaGlqa2xtbm8KLSAgICBDQzo6cCwgIH5MTTo6cSwgbm9uZSwgICBDQzo6
cywgfkxNOjp0LCBDQzo6dSwgbm9uZSwgIG5vbmUsICAgLy8gcHFyc3R1dncKLSAgICBDQzo6eCwg
IG5vbmUsICAgfkxNOjp6LCBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8g
eHl6e3x9fiEKLSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25l
LCAgbm9uZSwgIG5vbmUsICAgLy8gODAtODcKLSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBu
b25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gODgtOGYKLSAgICBub25lLCAg
IG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8g
OTAtOTcKLSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAg
bm9uZSwgIG5vbmUsICAgLy8gOTgtOWYKLSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25l
LCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gYTAtYTcKLSAgICBub25lLCAgIG5v
bmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gYTgt
YWYKLSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9u
ZSwgIG5vbmUsICAgLy8gYjAtYjcKLSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAg
bm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gYjgtYmYKLSAgICBub25lLCAgIG5vbmUs
ICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gYzAtYzcK
LSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwg
IG5vbmUsICAgLy8gYzgtY2YKLSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9u
ZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gZDAtZDcKLSAgICBub25lLCAgIG5vbmUsICAg
bm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gZDgtZGYKLSAg
ICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5v
bmUsICAgLy8gZTAtZTcKLSAgICBub25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwg
ICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gZTgtZWYKLSAgICBub25lLCAgIG5vbmUsICAgbm9u
ZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUsICAgLy8gZjAtZjcKLSAgICBu
b25lLCAgIG5vbmUsICAgbm9uZSwgICBub25lLCAgbm9uZSwgICBub25lLCAgbm9uZSwgIG5vbmUs
ICAgLy8gZjgtZmYKLX07Ci0KIHRlbXBsYXRlIDxib29sIGlzX3Bvc2l0aW9uYWw+Ci1ib29sIENv
bnN1bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpzcmMsIFVuYm91bmRDb252ZXJzaW9uICpjb252
LAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm5leHRfYXJnKSB7Ci0gIGNvbnN0IGNoYXIg
KnBvcyA9IHNyYy0+ZGF0YSgpOwotICBjb25zdCBjaGFyICpjb25zdCBlbmQgPSBwb3MgKyBzcmMt
PnNpemUoKTsKK2NvbnN0IGNoYXIgKkNvbnN1bWVDb252ZXJzaW9uKGNvbnN0IGNoYXIgKnBvcywg
Y29uc3QgY2hhciAqY29uc3QgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5i
b3VuZENvbnZlcnNpb24gKmNvbnYsIGludCAqbmV4dF9hcmcpIHsKKyAgY29uc3QgY2hhciogY29u
c3Qgb3JpZ2luYWxfcG9zID0gcG9zOwogICBjaGFyIGM7CiAgIC8vIFJlYWQgdGhlIG5leHQgY2hh
ciBpbnRvIGBjYCBhbmQgdXBkYXRlIGBwb3NgLiBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGFyZQog
ICAvLyBubyBtb3JlIGNoYXJzIHRvIHJlYWQuCi0jZGVmaW5lIEFCU0xfRk9STUFUX1BBUlNFUl9J
TlRFUk5BTF9HRVRfQ0hBUigpICAgICAgICBcCi0gIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShw
b3MgPT0gZW5kKSkgcmV0dXJuIGZhbHNlOyBcCi0gICAgYyA9ICpwb3MrKzsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIEFCU0xfRk9STUFUX1BBUlNFUl9J
TlRFUk5BTF9HRVRfQ0hBUigpICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChBQlNMX1BSRURJQ1RfRkFM
U0UocG9zID09IGVuZCkpIHJldHVybiBudWxscHRyOyBcCisgICAgYyA9ICpwb3MrKzsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgfSB3aGlsZSAoMCkKIAogICBj
b25zdCBhdXRvIHBhcnNlX2RpZ2l0cyA9IFsmXSB7CkBAIC05OSwxMCArOTQsMTEgQEAgYm9vbCBD
b25zdW1lQ29udmVyc2lvbihzdHJpbmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lvbiAqY29u
diwKICAgICAvLyBkaWdpdCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBjaGFyYWN0ZXJzLgog
ICAgIGludCBudW1fZGlnaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjpkaWdpdHMxMDsK
ICAgICBmb3IgKDs7KSB7Ci0gICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHBvcyA9PSBlbmQg
fHwgIW51bV9kaWdpdHMpKSBicmVhazsKKyAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UocG9z
ID09IGVuZCkpIGJyZWFrOwogICAgICAgYyA9ICpwb3MrKzsKICAgICAgIGlmICghc3RkOjppc2Rp
Z2l0KGMpKSBicmVhazsKICAgICAgIC0tbnVtX2RpZ2l0czsKKyAgICAgIGlmIChBQlNMX1BSRURJ
Q1RfRkFMU0UoIW51bV9kaWdpdHMpKSBicmVhazsKICAgICAgIGRpZ2l0cyA9IDEwICogZGlnaXRz
ICsgYyAtICcwJzsKICAgICB9CiAgICAgcmV0dXJuIGRpZ2l0czsKQEAgLTExMCwxMCArMTA2LDEw
IEBAIGJvb2wgQ29uc3VtZUNvbnZlcnNpb24oc3RyaW5nX3ZpZXcgKnNyYywgVW5ib3VuZENvbnZl
cnNpb24gKmNvbnYsCiAKICAgaWYgKGlzX3Bvc2l0aW9uYWwpIHsKICAgICBBQlNMX0ZPUk1BVF9Q
QVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKLSAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMg
PCAnMScgfHwgYyA+ICc5JykpIHJldHVybiBmYWxzZTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZB
TFNFKGMgPCAnMScgfHwgYyA+ICc5JykpIHJldHVybiBudWxscHRyOwogICAgIGNvbnYtPmFyZ19w
b3NpdGlvbiA9IHBhcnNlX2RpZ2l0cygpOwogICAgIGFzc2VydChjb252LT5hcmdfcG9zaXRpb24g
PiAwKTsKLSAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMgIT0gJyQnKSkgcmV0dXJuIGZhbHNl
OworICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoYyAhPSAnJCcpKSByZXR1cm4gbnVsbHB0cjsK
ICAgfQogCiAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwpAQCAtMTI4
LDEwICsxMjQsOSBAQCBib29sIENvbnN1bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpzcmMsIFVu
Ym91bmRDb252ZXJzaW9uICpjb252LAogICAgIGNvbnYtPmZsYWdzLmJhc2ljID0gZmFsc2U7CiAK
ICAgICBmb3IgKDsgYyA8PSAnMCc7KSB7Ci0gICAgICAvLyBGSVhNRTogV2UgbWlnaHQgYmUgYWJs
ZSB0byBzcGVlZCB0aGlzIHVwIHJldXNpbmcgdGhlIGtJZHMgbG9va3VwIHRhYmxlCi0gICAgICAv
LyBmcm9tIGFib3ZlLgotICAgICAgLy8gSXQgbWlnaHQgcmVxdWlyZSBjaGFuZ2luZyBGbGFncyB0
byBiZSBhIHBsYWluIGludGVnZXIgd2hlcmUgd2UgY2FuIHw9IGEKLSAgICAgIC8vIHZhbHVlLgor
ICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IGJlIGFibGUgdG8gc3BlZWQgdGhpcyB1cCByZXVzaW5n
IHRoZSBsb29rdXAgdGFibGUgZnJvbQorICAgICAgLy8gYWJvdmUuIEl0IG1pZ2h0IHJlcXVpcmUg
Y2hhbmdpbmcgRmxhZ3MgdG8gYmUgYSBwbGFpbiBpbnRlZ2VyIHdoZXJlIHdlCisgICAgICAvLyBj
YW4gfD0gYSB2YWx1ZS4KICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICBjYXNlICctJzoKICAg
ICAgICAgICBjb252LT5mbGFncy5sZWZ0ID0gdHJ1ZTsKQEAgLTE1OSwyMCArMTU0LDIwIEBAIGZs
YWdzX2RvbmU6CiAgICAgICBpZiAoYyA+PSAnMCcpIHsKICAgICAgICAgaW50IG1heWJlX3dpZHRo
ID0gcGFyc2VfZGlnaXRzKCk7CiAgICAgICAgIGlmICghaXNfcG9zaXRpb25hbCAmJiBjID09ICck
JykgewotICAgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoKm5leHRfYXJnICE9IDApKSBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRSgqbmV4dF9hcmcg
IT0gMCkpIHJldHVybiBudWxscHRyOwogICAgICAgICAgIC8vIFBvc2l0aW9uYWwgY29udmVyc2lv
bi4KICAgICAgICAgICAqbmV4dF9hcmcgPSAtMTsKICAgICAgICAgICBjb252LT5mbGFncyA9IEZs
YWdzKCk7CiAgICAgICAgICAgY29udi0+ZmxhZ3MuYmFzaWMgPSB0cnVlOwotICAgICAgICAgIHJl
dHVybiBDb25zdW1lQ29udmVyc2lvbjx0cnVlPihzcmMsIGNvbnYsIG5leHRfYXJnKTsKKyAgICAg
ICAgICByZXR1cm4gQ29uc3VtZUNvbnZlcnNpb248dHJ1ZT4ob3JpZ2luYWxfcG9zLCBlbmQsIGNv
bnYsIG5leHRfYXJnKTsKICAgICAgICAgfQogICAgICAgICBjb252LT53aWR0aC5zZXRfdmFsdWUo
bWF5YmVfd2lkdGgpOwogICAgICAgfSBlbHNlIGlmIChjID09ICcqJykgewogICAgICAgICBBQlNM
X0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICAgICAgaWYgKGlzX3Bvc2l0
aW9uYWwpIHsKLSAgICAgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMgPCAnMScgfHwgYyA+
ICc5JykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMg
PCAnMScgfHwgYyA+ICc5JykpIHJldHVybiBudWxscHRyOwogICAgICAgICAgIGNvbnYtPndpZHRo
LnNldF9mcm9tX2FyZyhwYXJzZV9kaWdpdHMoKSk7Ci0gICAgICAgICAgaWYgKEFCU0xfUFJFRElD
VF9GQUxTRShjICE9ICckJykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBpZiAoQUJTTF9QUkVE
SUNUX0ZBTFNFKGMgIT0gJyQnKSkgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgQUJTTF9GT1JN
QVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgY29udi0+d2lkdGguc2V0X2Zyb21fYXJnKCsrKm5leHRfYXJnKTsKQEAgLTE4Nyw5ICsxODIs
OSBAQCBmbGFnc19kb25lOgogICAgICAgfSBlbHNlIGlmIChjID09ICcqJykgewogICAgICAgICBB
QlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICAgICAgaWYgKGlzX3Bv
c2l0aW9uYWwpIHsKLSAgICAgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMgPCAnMScgfHwg
YyA+ICc5JykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNF
KGMgPCAnMScgfHwgYyA+ICc5JykpIHJldHVybiBudWxscHRyOwogICAgICAgICAgIGNvbnYtPnBy
ZWNpc2lvbi5zZXRfZnJvbV9hcmcocGFyc2VfZGlnaXRzKCkpOwotICAgICAgICAgIGlmIChjICE9
ICckJykgcmV0dXJuIGZhbHNlOworICAgICAgICAgIGlmIChjICE9ICckJykgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgY29udi0+cHJlY2lzaW9uLnNldF9mcm9tX2FyZygr
KypuZXh0X2FyZyk7CkBAIC0yMDAsMTQgKzE5NSwxNCBAQCBmbGFnc19kb25lOgogICAgIH0KICAg
fQogCi0gIHN0ZDo6aW50OF90IGlkID0ga0lkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihj
KV07CisgIGF1dG8gdGFnID0gR2V0VGFnRm9yQ2hhcihjKTsKIAotICBpZiAoaWQgPCAwKSB7Ci0g
ICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShpZCA9PSBub25lKSkgcmV0dXJuIGZhbHNlOworICBp
ZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCF0YWcuaXNfY29udigpKSkgeworICAgIGlmIChBQlNMX1BS
RURJQ1RfRkFMU0UoIXRhZy5pc19sZW5ndGgoKSkpIHJldHVybiBudWxscHRyOwogCiAgICAgLy8g
SXQgaXMgYSBsZW5ndGggbW9kaWZpZXIuCiAgICAgdXNpbmcgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6
TGVuZ3RoTW9kOwotICAgIExlbmd0aE1vZCBsZW5ndGhfbW9kID0gTGVuZ3RoTW9kOjpGcm9tSWQo
c3RhdGljX2Nhc3Q8TE0+KH5pZCkpOworICAgIExlbmd0aE1vZCBsZW5ndGhfbW9kID0gdGFnLmFz
X2xlbmd0aCgpOwogICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwog
ICAgIGlmIChjID09ICdoJyAmJiBsZW5ndGhfbW9kLmlkKCkgPT0gTGVuZ3RoTW9kOjpoKSB7CiAg
ICAgICBjb252LT5sZW5ndGhfbW9kID0gTGVuZ3RoTW9kOjpGcm9tSWQoTGVuZ3RoTW9kOjpoaCk7
CkBAIC0yMTgsMjUgKzIxMywyNCBAQCBmbGFnc19kb25lOgogICAgIH0gZWxzZSB7CiAgICAgICBj
b252LT5sZW5ndGhfbW9kID0gbGVuZ3RoX21vZDsKICAgICB9Ci0gICAgaWQgPSBrSWRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsKLSAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGlk
IDwgMCkpIHJldHVybiBmYWxzZTsKKyAgICB0YWcgPSBHZXRUYWdGb3JDaGFyKGMpOworICAgIGlm
IChBQlNMX1BSRURJQ1RfRkFMU0UoIXRhZy5pc19jb252KCkpKSByZXR1cm4gbnVsbHB0cjsKICAg
fQogCiAgIGFzc2VydChDaGVja0Zhc3RQYXRoU2V0dGluZygqY29udikpOwogICAodm9pZCkoJkNo
ZWNrRmFzdFBhdGhTZXR0aW5nKTsKIAotICBjb252LT5jb252ID0gQ29udmVyc2lvbkNoYXI6OkZy
b21JZChzdGF0aWNfY2FzdDxDQz4oaWQpKTsKKyAgY29udi0+Y29udiA9IHRhZy5hc19jb252KCk7
CiAgIGlmICghaXNfcG9zaXRpb25hbCkgY29udi0+YXJnX3Bvc2l0aW9uID0gKysqbmV4dF9hcmc7
Ci0gICpzcmMgPSBzdHJpbmdfdmlldyhwb3MsIGVuZCAtIHBvcyk7Ci0gIHJldHVybiB0cnVlOwor
ICByZXR1cm4gcG9zOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKIAotYm9vbCBDb25zdW1lVW5ib3Vu
ZENvbnZlcnNpb24oc3RyaW5nX3ZpZXcgKnNyYywgVW5ib3VuZENvbnZlcnNpb24gKmNvbnYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm5leHRfYXJnKSB7Ci0gIGlmICgqbmV4
dF9hcmcgPCAwKSByZXR1cm4gQ29uc3VtZUNvbnZlcnNpb248dHJ1ZT4oc3JjLCBjb252LCBuZXh0
X2FyZyk7Ci0gIHJldHVybiBDb25zdW1lQ29udmVyc2lvbjxmYWxzZT4oc3JjLCBjb252LCBuZXh0
X2FyZyk7Citjb25zdCBjaGFyICpDb25zdW1lVW5ib3VuZENvbnZlcnNpb24oY29uc3QgY2hhciAq
cCwgY29uc3QgY2hhciAqZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuYm91bmRDb252ZXJzaW9uICpjb252LCBpbnQgKm5leHRfYXJnKSB7CisgIGlmICgqbmV4dF9h
cmcgPCAwKSByZXR1cm4gQ29uc3VtZUNvbnZlcnNpb248dHJ1ZT4ocCwgZW5kLCBjb252LCBuZXh0
X2FyZyk7CisgIHJldHVybiBDb25zdW1lQ29udmVyc2lvbjxmYWxzZT4ocCwgZW5kLCBjb252LCBu
ZXh0X2FyZyk7CiB9CiAKIHN0cnVjdCBQYXJzZWRGb3JtYXRCYXNlOjpQYXJzZWRGb3JtYXRDb25z
dW1lciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFy
c2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmgKaW5kZXgg
MTAyMmYwNjI5N2E3NGE1ODRlODJlNDFjYTRiODI0ZmJiZjYzMzkxYy4uYjc2MTRhMDlmYTRlYWJj
ZWRhODU1MWVmMWI2NGRjOGY4NDliMDMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9zdHJfZm9ybWF0L3BhcnNlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3Ry
X2Zvcm1hdC9wYXJzZXIuaApAQCAtNjMsMTcgKzYzLDQ1IEBAIHN0cnVjdCBVbmJvdW5kQ29udmVy
c2lvbiB7CiAgIENvbnZlcnNpb25DaGFyIGNvbnY7CiB9OwogCi0vLyBDb25zdW1lIGNvbnZlcnNp
b24gc3BlYyBwcmVmaXggKG5vdCBpbmNsdWRpbmcgJyUnKSBvZiAnKnNyYycgaWYgdmFsaWQuCisv
LyBDb25zdW1lIGNvbnZlcnNpb24gc3BlYyBwcmVmaXggKG5vdCBpbmNsdWRpbmcgJyUnKSBvZiBb
cCwgZW5kKSBpZiB2YWxpZC4KIC8vIEV4YW1wbGVzIG9mIHZhbGlkIHNwZWNzIHdvdWxkIGJlIGUu
Zy46ICJzIiwgImQiLCAiLTEyLjZmIi4KLS8vIElmIHZhbGlkLCB0aGUgZnJvbnQgb2Ygc3JjIGlz
IGFkdmFuY2VkIHN1Y2ggdGhhdCBzcmMgYmVjb21lcyB0aGUKLS8vIHBhcnQgZm9sbG93aW5nIHRo
ZSBjb252ZXJzaW9uIHNwZWMsIGFuZCB0aGUgc3BlYyBwYXJ0IGlzIGJyb2tlbiBkb3duIGFuZAot
Ly8gcmV0dXJuZWQgaW4gJ2NvbnYnLgotLy8gSWYgaW52YWxpZCwgcmV0dXJucyBmYWxzZSBhbmQg
bGVhdmVzICdzcmMnIHVubW9kaWZpZWQuCi0vLyBGb3IgZXhhbXBsZToKLS8vICAgR2l2ZW4gImQ5
IiwgcmV0dXJucyAiZCIsIGFuZCBsZWF2ZXMgc3JjPSI5IiwKLS8vICAgR2l2ZW4gIiEiLCByZXR1
cm5zICIiIGFuZCBsZWF2ZXMgc3JjPSIhIi4KLWJvb2wgQ29uc3VtZVVuYm91bmRDb252ZXJzaW9u
KHN0cmluZ192aWV3KiBzcmMsIFVuYm91bmRDb252ZXJzaW9uKiBjb252LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50KiBuZXh0X2FyZyk7CisvLyBJZiB2YWxpZCwgaXQgcmV0dXJu
cyB0aGUgZmlyc3QgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgY29udmVyc2lvbiBzcGVjLAorLy8g
YW5kIHRoZSBzcGVjIHBhcnQgaXMgYnJva2VuIGRvd24gYW5kIHJldHVybmVkIGluICdjb252Jy4K
Ky8vIElmIGludmFsaWQsIHJldHVybnMgbnVsbHB0ci4KK2NvbnN0IGNoYXIqIENvbnN1bWVVbmJv
dW5kQ29udmVyc2lvbihjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBlbmQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5ib3VuZENvbnZlcnNpb24qIGNvbnYsIGludCog
bmV4dF9hcmcpOworCisvLyBIZWxwZXIgdGFnIGNsYXNzIGZvciB0aGUgdGFibGUgYmVsb3cuCisv
LyBJdCBhbGxvd3MgZmFzdCBgY2hhciAtPiBDb252ZXJzaW9uQ2hhci9MZW5ndGhNb2RgIGNoZWNr
aW5nIGFuZCBjb252ZXJzaW9ucy4KK2NsYXNzIENvbnZUYWcgeworIHB1YmxpYzoKKyAgY29uc3Rl
eHByIENvbnZUYWcoQ29udmVyc2lvbkNoYXI6OklkIGlkKSA6IHRhZ18oaWQpIHt9ICAvLyBOT0xJ
TlQKKyAgLy8gV2UgaW52ZXJ0IHRoZSBsZW5ndGggbW9kaWZpZXJzIHRvIG1ha2UgdGhlbSBuZWdh
dGl2ZSBzbyB0aGF0IHdlIGNhbiBlYXNpbHkKKyAgLy8gdGVzdCBmb3IgdGhlbS4KKyAgY29uc3Rl
eHByIENvbnZUYWcoTGVuZ3RoTW9kOjpJZCBpZCkgOiB0YWdfKH5pZCkge30gIC8vIE5PTElOVAor
ICAvLyBFdmVyeXRoaW5nIGVsc2UgaXMgLTEyOCwgd2hpY2ggaXMgbmVnYXRpdmUgdG8gbWFrZSBp
c19jb252KCkgc2ltcGxlci4KKyAgY29uc3RleHByIENvbnZUYWcoKSA6IHRhZ18oLTEyOCkge30K
KworICBib29sIGlzX2NvbnYoKSBjb25zdCB7IHJldHVybiB0YWdfID49IDA7IH0KKyAgYm9vbCBp
c19sZW5ndGgoKSBjb25zdCB7IHJldHVybiB0YWdfIDwgMCAmJiB0YWdfICE9IC0xMjg7IH0KKyAg
Q29udmVyc2lvbkNoYXIgYXNfY29udigpIGNvbnN0IHsKKyAgICBhc3NlcnQoaXNfY29udigpKTsK
KyAgICByZXR1cm4gQ29udmVyc2lvbkNoYXI6OkZyb21JZChzdGF0aWNfY2FzdDxDb252ZXJzaW9u
Q2hhcjo6SWQ+KHRhZ18pKTsKKyAgfQorICBMZW5ndGhNb2QgYXNfbGVuZ3RoKCkgY29uc3Qgewor
ICAgIGFzc2VydChpc19sZW5ndGgoKSk7CisgICAgcmV0dXJuIExlbmd0aE1vZDo6RnJvbUlkKHN0
YXRpY19jYXN0PExlbmd0aE1vZDo6SWQ+KH50YWdfKSk7CisgIH0KKworIHByaXZhdGU6CisgIHN0
ZDo6aW50OF90IHRhZ187Cit9OworCitleHRlcm4gY29uc3QgQ29udlRhZyBrVGFnc1syNTZdOwor
Ly8gS2VlcCBhIHNpbmdsZSB0YWJsZSBmb3IgYWxsIHRoZSBjb252ZXJzaW9uIGNoYXJzIGFuZCBs
ZW5ndGggbW9kaWZpZXJzLgoraW5saW5lIENvbnZUYWcgR2V0VGFnRm9yQ2hhcihjaGFyIGMpIHsK
KyAgcmV0dXJuIGtUYWdzW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsKK30KIAogLy8g
UGFyc2UgdGhlIGZvcm1hdCBzdHJpbmcgcHJvdmlkZWQgaW4gJ3NyYycgYW5kIHBhc3MgdGhlIGlk
ZW50aWZpZWQgaXRlbXMgaW50bwogLy8gJ2NvbnN1bWVyJy4KQEAgLTg4LDUxICsxMTYsNTMgQEAg
Ym9vbCBDb25zdW1lVW5ib3VuZENvbnZlcnNpb24oc3RyaW5nX3ZpZXcqIHNyYywgVW5ib3VuZENv
bnZlcnNpb24qIGNvbnYsCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29uc3VtZXI+CiBib29sIFBhcnNl
Rm9ybWF0U3RyaW5nKHN0cmluZ192aWV3IHNyYywgQ29uc3VtZXIgY29uc3VtZXIpIHsKICAgaW50
IG5leHRfYXJnID0gMDsKLSAgd2hpbGUgKCFzcmMuZW1wdHkoKSkgewotICAgIGNvbnN0IGNoYXIq
IHBlcmNlbnQgPQotICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtY2hyKHNyYy5k
YXRhKCksICclJywgc3JjLnNpemUoKSkpOworICBjb25zdCBjaGFyKiBwID0gc3JjLmRhdGEoKTsK
KyAgY29uc3QgY2hhciogY29uc3QgZW5kID0gcCArIHNyYy5zaXplKCk7CisgIHdoaWxlIChwICE9
IGVuZCkgeworICAgIGNvbnN0IGNoYXIqIHBlcmNlbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obWVtY2hyKHAsICclJywgZW5kIC0gcCkpOwogICAgIGlmICghcGVyY2VudCkgewogICAgICAg
Ly8gV2UgZm91bmQgdGhlIGxhc3Qgc3Vic3RyaW5nLgotICAgICAgcmV0dXJuIGNvbnN1bWVyLkFw
cGVuZChzcmMpOworICAgICAgcmV0dXJuIGNvbnN1bWVyLkFwcGVuZChzdHJpbmdfdmlldyhwLCBl
bmQgLSBwKSk7CiAgICAgfQogICAgIC8vIFdlIGZvdW5kIGEgcGVyY2VudCwgc28gcHVzaCB0aGUg
dGV4dCBydW4gdGhlbiBwcm9jZXNzIHRoZSBwZXJjZW50LgotICAgIHNpemVfdCBwZXJjZW50X2xv
YyA9IHBlcmNlbnQgLSBzcmMuZGF0YSgpOwotICAgIGlmICghY29uc3VtZXIuQXBwZW5kKHN0cmlu
Z192aWV3KHNyYy5kYXRhKCksIHBlcmNlbnRfbG9jKSkpIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
cGVyY2VudCArIDEgPj0gc3JjLmRhdGEoKSArIHNyYy5zaXplKCkpIHJldHVybiBmYWxzZTsKLQot
ICAgIFVuYm91bmRDb252ZXJzaW9uIGNvbnY7Ci0KLSAgICBzd2l0Y2ggKHBlcmNlbnRbMV0pIHsK
LSAgICAgIGNhc2UgJyUnOgotICAgICAgICBpZiAoIWNvbnN1bWVyLkFwcGVuZCgiJSIpKSByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIHNyYy5yZW1vdmVfcHJlZml4KHBlcmNlbnRfbG9jICsgMik7Ci0g
ICAgICAgIGNvbnRpbnVlOwotCi0jZGVmaW5lIFBBUlNFUl9DQVNFKGNoKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGNhc2UgI2NoWzBdOiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3JjLnJlbW92ZV9wcmVmaXgocGVy
Y2VudF9sb2MgKyAyKTsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY29udi5jb252ID0gQ29u
dmVyc2lvbkNoYXI6OkZyb21JZChDb252ZXJzaW9uQ2hhcjo6Y2gpOyBcCi0gICAgY29udi5hcmdf
cG9zaXRpb24gPSArK25leHRfYXJnOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYnJl
YWs7Ci0gICAgICAgIEFCU0xfQ09OVkVSU0lPTl9DSEFSU19FWFBBTkRfKFBBUlNFUl9DQVNFLCAp
OwotI3VuZGVmIFBBUlNFUl9DQVNFCi0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHNyYy5yZW1v
dmVfcHJlZml4KHBlcmNlbnRfbG9jICsgMSk7Ci0gICAgICAgIGlmICghQ29uc3VtZVVuYm91bmRD
b252ZXJzaW9uKCZzcmMsICZjb252LCAmbmV4dF9hcmcpKSByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBpZiAobmV4dF9hcmcgPT0gMCkgewotICAgICAgLy8gVGhpcyBp
bmRpY2F0ZXMgYW4gZXJyb3IgaW4gdGhlIGZvcm1hdCBzdGQ6OnN0cmluZy4KLSAgICAgIC8vIFRo
ZSBvbmx5IHdheSB0byBnZXQgbmV4dF9hcmcgPT0gMCBpcyB0byBoYXZlIGEgcG9zaXRpb25hbCBh
cmd1bWVudAotICAgICAgLy8gZmlyc3Qgd2hpY2ggc2V0cyBuZXh0X2FyZyB0byAtMSBhbmQgdGhl
biBhIG5vbi1wb3NpdGlvbmFsIGFyZ3VtZW50Ci0gICAgICAvLyB3aGljaCBkb2VzICsrbmV4dF9h
cmcuCi0gICAgICAvLyBDaGVja2luZyBoZXJlIHNlZW1zIHRvIGJlIHRoZSBjaGVhcGVhc3QgcGxh
Y2UgdG8gZG8gaXQuCisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRSghY29uc3VtZXIuQXBwZW5k
KHN0cmluZ192aWV3KHAsIHBlcmNlbnQgLSBwKSkpKSB7CiAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGlmICghY29uc3VtZXIuQ29udmVydE9uZSgKLSAgICAgICAgICAgIGNvbnYsIHN0
cmluZ192aWV3KHBlcmNlbnQgKyAxLCBzcmMuZGF0YSgpIC0gKHBlcmNlbnQgKyAxKSkpKSB7Ci0g
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShwZXJjZW50ICsg
MSA+PSBlbmQpKSByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHRhZyA9IEdldFRhZ0ZvckNoYXIo
cGVyY2VudFsxXSk7CisgICAgaWYgKHRhZy5pc19jb252KCkpIHsKKyAgICAgIGlmIChBQlNMX1BS
RURJQ1RfRkFMU0UobmV4dF9hcmcgPCAwKSkgeworICAgICAgICAvLyBUaGlzIGluZGljYXRlcyBh
biBlcnJvciBpbiB0aGUgZm9ybWF0IHN0ZDo6c3RyaW5nLgorICAgICAgICAvLyBUaGUgb25seSB3
YXkgdG8gZ2V0IGBuZXh0X2FyZyA8IDBgIGhlcmUgaXMgdG8gaGF2ZSBhIHBvc2l0aW9uYWwKKyAg
ICAgICAgLy8gYXJndW1lbnQgZmlyc3Qgd2hpY2ggc2V0cyBuZXh0X2FyZyB0byAtMSBhbmQgdGhl
biBhIG5vbi1wb3NpdGlvbmFsCisgICAgICAgIC8vIGFyZ3VtZW50LgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICB9CisgICAgICBwID0gcGVyY2VudCArIDI7CisKKyAgICAgIC8vIEtlZXAg
dGhpcyBjYXNlIHNlcGFyYXRlIGZyb20gdGhlIG9uZSBiZWxvdy4KKyAgICAgIC8vIENvbnZlcnRP
bmUgaXMgbW9yZSBlZmZpY2llbnQgd2hlbiB0aGUgY29tcGlsZXIgY2FuIHNlZSB0aGF0IHRoZSBg
YmFzaWNgCisgICAgICAvLyBmbGFnIGlzIHNldC4KKyAgICAgIFVuYm91bmRDb252ZXJzaW9uIGNv
bnY7CisgICAgICBjb252LmNvbnYgPSB0YWcuYXNfY29udigpOworICAgICAgY29udi5hcmdfcG9z
aXRpb24gPSArK25leHRfYXJnOworICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRSgKKyAgICAg
ICAgICAgICAgIWNvbnN1bWVyLkNvbnZlcnRPbmUoY29udiwgc3RyaW5nX3ZpZXcocGVyY2VudCAr
IDEsIDEpKSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0gZWxzZSBp
ZiAocGVyY2VudFsxXSAhPSAnJScpIHsKKyAgICAgIFVuYm91bmRDb252ZXJzaW9uIGNvbnY7Cisg
ICAgICBwID0gQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKHBlcmNlbnQgKyAxLCBlbmQsICZjb252
LCAmbmV4dF9hcmcpOworICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShwID09IG51bGxwdHIp
KSByZXR1cm4gZmFsc2U7CisgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCFjb25zdW1lci5D
b252ZXJ0T25lKAorICAgICAgICAgIGNvbnYsIHN0cmluZ192aWV3KHBlcmNlbnQgKyAxLCBwIC0g
KHBlcmNlbnQgKyAxKSkpKSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoIWNvbnN1bWVyLkFwcGVuZCgi
JSIpKSkgcmV0dXJuIGZhbHNlOworICAgICAgcCA9IHBlcmNlbnQgKyAyOworICAgICAgY29udGlu
dWU7CiAgICAgfQogICB9CiAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9zdHJfZm9ybWF0L3BhcnNlcl90ZXN0LmNjCmluZGV4IGFlNDAyMDMxOTFiOTdmOWMzYzRm
MGM0YmUyODFhMjI5MjFkYjZlNmIuLjZkMzU2MDkzY2U2MGNiZWFmZmIxZTUxODQ3YWU0NjJkMjU2
OGMyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJz
ZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2Vy
X3Rlc3QuY2MKQEAgLTEsNiArMSw4IEBACiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9mb3JtYXQvcGFyc2VyLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUg
Imdtb2NrL2dtb2NrLmgiCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJhYnNs
L2Jhc2UvbWFjcm9zLmgiCiAKQEAgLTksNiArMTEsOCBAQCBuYW1lc3BhY2Ugc3RyX2Zvcm1hdF9p
bnRlcm5hbCB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIHRlc3Rpbmc6OlBhaXI7CisKIFRFU1Qo
TGVuZ3RoTW9kVGVzdCwgTmFtZXMpIHsKICAgc3RydWN0IEV4cGVjdGF0aW9uIHsKICAgICBpbnQg
bGluZTsKQEAgLTYzLDIwICs2NywyMSBAQCBURVNUKENvbnZlcnNpb25DaGFyVGVzdCwgTmFtZXMp
IHsKIAogY2xhc3MgQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewogIHB1YmxpYzoKLSAgdHlwZWRlZiBVbmJvdW5kQ29udmVyc2lvbiBQcm9wczsK
LSAgc3RyaW5nX3ZpZXcgQ29uc3VtZShzdHJpbmdfdmlldyogc3JjKSB7CisgIHN0ZDo6cGFpcjxz
dHJpbmdfdmlldywgc3RyaW5nX3ZpZXc+IENvbnN1bWUoc3RyaW5nX3ZpZXcgc3JjKSB7CiAgICAg
aW50IG5leHQgPSAwOwotICAgIGNvbnN0IGNoYXIqIHByZXZfYmVnaW4gPSBzcmMtPmRhdGEoKTsK
ICAgICBvID0gVW5ib3VuZENvbnZlcnNpb24oKTsgIC8vIHJlZnJlc2gKLSAgICBDb25zdW1lVW5i
b3VuZENvbnZlcnNpb24oc3JjLCAmbywgJm5leHQpOwotICAgIHJldHVybiB7cHJldl9iZWdpbiwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihzcmMtPmRhdGEoKSAtIHByZXZfYmVnaW4pfTsKKyAgICBjb25z
dCBjaGFyKiBwID0gQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKAorICAgICAgICBzcmMuZGF0YSgp
LCBzcmMuZGF0YSgpICsgc3JjLnNpemUoKSwgJm8sICZuZXh0KTsKKyAgICBpZiAoIXApIHJldHVy
biB7e30sIHNyY307CisgICAgcmV0dXJuIHtzdHJpbmdfdmlldyhzcmMuZGF0YSgpLCBwIC0gc3Jj
LmRhdGEoKSksCisgICAgICAgICAgICBzdHJpbmdfdmlldyhwLCBzcmMuZGF0YSgpICsgc3JjLnNp
emUoKSAtIHApfTsKICAgfQogCiAgIGJvb2wgUnVuKGNvbnN0IGNoYXIgKmZtdCwgYm9vbCBmb3Jj
ZV9wb3NpdGlvbmFsID0gZmFsc2UpIHsKLSAgICBzdHJpbmdfdmlldyBzcmMgPSBmbXQ7CiAgICAg
aW50IG5leHQgPSBmb3JjZV9wb3NpdGlvbmFsID8gLTEgOiAwOwogICAgIG8gPSBVbmJvdW5kQ29u
dmVyc2lvbigpOyAgLy8gcmVmcmVzaAotICAgIHJldHVybiBDb25zdW1lVW5ib3VuZENvbnZlcnNp
b24oJnNyYywgJm8sICZuZXh0KSAmJiBzcmMuZW1wdHkoKTsKKyAgICByZXR1cm4gQ29uc3VtZVVu
Ym91bmRDb252ZXJzaW9uKGZtdCwgZm10ICsgc3RybGVuKGZtdCksICZvLCAmbmV4dCkgPT0KKyAg
ICAgICAgICAgZm10ICsgc3RybGVuKGZtdCk7CiAgIH0KICAgVW5ib3VuZENvbnZlcnNpb24gbzsK
IH07CkBAIC0xMDQsMTEgKzEwOSw3IEBAIFRFU1RfRihDb25zdW1lVW5ib3VuZENvbnZlcnNpb25U
ZXN0LCBDb25zdW1lU3BlY2lmaWNhdGlvbikgewogICB9OwogICBmb3IgKGNvbnN0IGF1dG8mIGUg
OiBrRXhwZWN0KSB7CiAgICAgU0NPUEVEX1RSQUNFKGUubGluZSk7Ci0gICAgc3RyaW5nX3ZpZXcg
c3JjID0gZS5zcmM7Ci0gICAgRVhQRUNUX0VRKGUuc3JjLCBzcmMpOwotICAgIHN0cmluZ192aWV3
IG91dCA9IENvbnN1bWUoJnNyYyk7Ci0gICAgRVhQRUNUX0VRKGUub3V0LCBvdXQpOwotICAgIEVY
UEVDVF9FUShlLnNyY19wb3N0LCBzcmMpOworICAgIEVYUEVDVF9USEFUKENvbnN1bWUoZS5zcmMp
LCBQYWlyKGUub3V0LCBlLnNyY19wb3N0KSk7CiAgIH0KIH0KIApAQCAtMjQ2LDYgKzI0Nyw4IEBA
IFRFU1RfRihDb25zdW1lVW5ib3VuZENvbnZlcnNpb25UZXN0LCBXaWR0aEFuZFByZWNpc2lvbikg
ewogCiAgIEVYUEVDVF9GQUxTRShSdW4oIjEwMDAwMDAwMDAuOTk5OTk5OTk5ZCIpKTsKICAgRVhQ
RUNUX0ZBTFNFKFJ1bigiOTk5OTk5OTk5LjEwMDAwMDAwMDBkIikpOworICBFWFBFQ1RfRkFMU0Uo
UnVuKCI5OTk5OTk5OTk5ZCIpKTsKKyAgRVhQRUNUX0ZBTFNFKFJ1bigiLjk5OTk5OTk5OTlkIikp
OwogfQogCiBURVNUX0YoQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uVGVzdCwgRmxhZ3MpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2pvaW5faW50ZXJuYWwuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2pvaW5faW50ZXJuYWwuaAppbmRleCAwMDU4ZmM4YWE0
ZDVhODEyMTBhOThmMmQxYmIxMWJjMGM2NWE5NjVjLi43YzM1ZjRkZTA1ZWRhZjUyNzlkNjM4YWM1
MmQ5ZDE4Y2EwMmIxZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9q
b2luX2ludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfam9pbl9pbnRl
cm5hbC5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOTMs
NyArMTkzLDcgQEAgc3RydWN0IERlZmF1bHRGb3JtYXR0ZXI8c3RkOjp1bmlxdWVfcHRyPFZhbHVl
VHlwZT4+CiAvLyBhbmQgZm9ybWF0cyBlYWNoIGVsZW1lbnQgdXNpbmcgdGhlIHByb3ZpZGVkIEZv
cm1hdHRlciBvYmplY3QuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIEZv
cm1hdHRlcj4KIHN0ZDo6c3RyaW5nIEpvaW5BbGdvcml0aG0oSXRlcmF0b3Igc3RhcnQsIEl0ZXJh
dG9yIGVuZCwgYWJzbDo6c3RyaW5nX3ZpZXcgcywKLSAgICAgICAgICAgICAgICAgICAgIEZvcm1h
dHRlciYmIGYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyJiYgZikgewog
ICBzdGQ6OnN0cmluZyByZXN1bHQ7CiAgIGFic2w6OnN0cmluZ192aWV3IHNlcCgiIik7CiAgIGZv
ciAoSXRlcmF0b3IgaXQgPSBzdGFydDsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC0yMTIsNyArMjEy
LDcgQEAgc3RkOjpzdHJpbmcgSm9pbkFsZ29yaXRobShJdGVyYXRvciBzdGFydCwgSXRlcmF0b3Ig
ZW5kLCBhYnNsOjpzdHJpbmdfdmlldyBzLAogLy8gVGhpcyBpcyBhbiBvdmVybG9hZCBvZiB0aGUg
cHJldmlvdXMgSm9pbkFsZ29yaXRobSgpIGZ1bmN0aW9uLiBIZXJlIHRoZQogLy8gRm9ybWF0dGVy
IGFyZ3VtZW50IGlzIG9mIHR5cGUgTm9Gb3JtYXR0ZXIuIFNpbmNlIE5vRm9ybWF0dGVyIGlzIGFu
IGludGVybmFsCiAvLyB0eXBlLCB0aGlzIG92ZXJsb2FkIGlzIG9ubHkgaW52b2tlZCB3aGVuIHN0
cmluZ3M6OkpvaW4oKSBpcyBjYWxsZWQgd2l0aCBhCi0vLyByYW5nZSBvZiBzdHJpbmctbGlrZSBv
YmplY3RzIChlLmcuLCBzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3KSwgYW5kIGFuCisvLyByYW5n
ZSBvZiBzdHJpbmctbGlrZSBvYmplY3RzIChlLmcuLCBzdGQ6OnN0cmluZywgYWJzbDo6c3RyaW5n
X3ZpZXcpLCBhbmQgYW4KIC8vIGV4cGxpY2l0IEZvcm1hdHRlciBhcmd1bWVudCB3YXMgTk9UIHNw
ZWNpZmllZC4KIC8vCiAvLyBUaGUgb3B0aW1pemF0aW9uIGlzIHRoYXQgdGhlIG5lZWRlZCBzcGFj
ZSB3aWxsIGJlIHJlc2VydmVkIGluIHRoZSBvdXRwdXQKQEAgLTIyNCw3ICsyMjQsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsCiAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6aXRl
cmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnksCiAgICAgICAgICAgICAg
IHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWc+Ojp2YWx1ZT46OnR5cGU+CiBzdGQ6OnN0cmluZyBK
b2luQWxnb3JpdGhtKEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQsIGFic2w6OnN0cmluZ192
aWV3IHMsCi0gICAgICAgICAgICAgICAgICAgICBOb0Zvcm1hdHRlcikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICBOb0Zvcm1hdHRlcikgewogICBzdGQ6OnN0cmluZyByZXN1bHQ7CiAgIGlm
IChzdGFydCAhPSBlbmQpIHsKICAgICAvLyBTdW1zIHNpemUKQEAgLTI3NiwxNCArMjc2LDE1IEBA
IHN0cnVjdCBKb2luVHVwbGVMb29wPE4sIE4+IHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQs
IHR5cGVuYW1lIEZvcm1hdHRlcj4KIHN0ZDo6c3RyaW5nIEpvaW5BbGdvcml0aG0oY29uc3Qgc3Rk
Ojp0dXBsZTxULi4uPiYgdHVwLCBhYnNsOjpzdHJpbmdfdmlldyBzZXAsCi0gICAgICAgICAgICAg
ICAgICAgICBGb3JtYXR0ZXImJiBmbXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRm9y
bWF0dGVyJiYgZm10KSB7CiAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKICAgSm9pblR1cGxlTG9vcDww
LCBzaXplb2YuLi4oVCk+KCkoJnJlc3VsdCwgdHVwLCBzZXAsIGZtdCk7CiAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KLXN0ZDo6c3RyaW5nIEpvaW5S
YW5nZShJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwgYWJzbDo6c3RyaW5nX3ZpZXcgc2Vw
YXJhdG9yKSB7CitzdGQ6OnN0cmluZyBKb2luUmFuZ2UoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9y
IGxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgc2VwYXJhdG9y
KSB7CiAgIC8vIE5vIGZvcm1hdHRlciB3YXMgZXhwbGljaXRseSBnaXZlbiwgc28gYSBkZWZhdWx0
IG11c3QgYmUgY2hvc2VuLgogICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRz
PEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBWYWx1ZVR5cGU7CiAgIHR5cGVkZWYgdHlwZW5hbWUgRGVm
YXVsdEZvcm1hdHRlcjxWYWx1ZVR5cGU+OjpUeXBlIEZvcm1hdHRlcjsKQEAgLTI5Miw3ICsyOTMs
NyBAQCBzdGQ6OnN0cmluZyBKb2luUmFuZ2UoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3Qs
IGFic2w6OnN0cmluZ192aWV3IHNlcGFyYXRvcgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZ2Us
IHR5cGVuYW1lIEZvcm1hdHRlcj4KIHN0ZDo6c3RyaW5nIEpvaW5SYW5nZShjb25zdCBSYW5nZSYg
cmFuZ2UsIGFic2w6OnN0cmluZ192aWV3IHNlcGFyYXRvciwKLSAgICAgICAgICAgICAgICAgRm9y
bWF0dGVyJiYgZm10KSB7CisgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyJiYgZm10KSB7
CiAgIHVzaW5nIHN0ZDo6YmVnaW47CiAgIHVzaW5nIHN0ZDo6ZW5kOwogICByZXR1cm4gSm9pbkFs
Z29yaXRobShiZWdpbihyYW5nZSksIGVuZChyYW5nZSksIHNlcGFyYXRvciwgZm10KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX3NwbGl0X2ludGVybmFsLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9zcGxpdF9pbnRlcm5hbC5oCmluZGV4IDgxZThkNTU1NDQ2
ODBkNjcxZTU2ZWIwMjU0OTk1YjQyYmQ1NDhkNDAuLjUyZjYyMjI2MTVjZWRiYWYzNDY4MTU2OGQw
NTVkNDBiNzdmMTRkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX3Nw
bGl0X2ludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfc3BsaXRfaW50
ZXJuYWwuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtOTYs
OCArOTYsOCBAQCBDb252ZXJ0aWJsZVRvU3RyaW5nVmlldyhzdGQ6OnN0cmluZyYmIHMpICAvLyBO
T0xJTlQocnVudGltZS9leHBsaWNpdCkKICAgICB9CiAgIH0KIAotICAvLyBIb2xkcyB0aGUgZGF0
YSBtb3ZlZCBmcm9tIHRlbXBvcmFyeSBzdGQ6OnN0cmluZyBhcmd1bWVudHMuIERlY2xhcmVkIGZp
cnN0IHNvCi0gIC8vIHRoYXQgJ3ZhbHVlJyBjYW4gcmVmZXIgdG8gJ2NvcHlfJy4KKyAgLy8gSG9s
ZHMgdGhlIGRhdGEgbW92ZWQgZnJvbSB0ZW1wb3Jhcnkgc3RkOjpzdHJpbmcgYXJndW1lbnRzLiBE
ZWNsYXJlZCBmaXJzdAorICAvLyBzbyB0aGF0ICd2YWx1ZScgY2FuIHJlZmVyIHRvICdjb3B5Xycu
CiAgIHN0ZDo6c3RyaW5nIGNvcHlfOwogICBhYnNsOjpzdHJpbmdfdmlldyB2YWx1ZV87CiB9OwpA
QCAtMzc2LDEwICszNzYsMTAgQEAgY2xhc3MgU3BsaXR0ZXIgewogCiAgIC8vIFBhcnRpYWwgc3Bl
Y2lhbGl6YXRpb24gZm9yIGEgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LgogICAvLwotICAvLyBP
cHRpbWl6ZWQgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBzcGxpdHRpbmcgdG8gYSBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4uIEluCi0gIC8vIHRoaXMgY2FzZSB3ZSBmaXJzdCBzcGxpdCB0aGUgcmVz
dWx0cyB0byBhIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiBzbwotICAvLyB0aGUgcmV0
dXJuZWQgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGNhbiBoYXZlIHNwYWNlIHJlc2VydmVkIHRv
IGF2b2lkIHN0ZDo6c3RyaW5nCi0gIC8vIG1vdmVzLgorICAvLyBPcHRpbWl6ZWQgZm9yIHRoZSBj
b21tb24gY2FzZSBvZiBzcGxpdHRpbmcgdG8gYSBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4uCisg
IC8vIEluIHRoaXMgY2FzZSB3ZSBmaXJzdCBzcGxpdCB0aGUgcmVzdWx0cyB0byBhIHN0ZDo6dmVj
dG9yPGFic2w6OnN0cmluZ192aWV3PgorICAvLyBzbyB0aGUgcmV0dXJuZWQgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IGNhbiBoYXZlIHNwYWNlIHJlc2VydmVkIHRvIGF2b2lkCisgIC8vIHN0ZDo6
c3RyaW5nIG1vdmVzLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQT4KICAgc3RydWN0IENvbnZlcnRU
b0NvbnRhaW5lcjxzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZywgQT4sIHN0ZDo6c3RyaW5nLCBmYWxz
ZT4gewogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nLCBBPiBvcGVyYXRvcigpKGNvbnN0IFNw
bGl0dGVyJiBzcGxpdHRlcikgY29uc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC91dGY4LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4LmNjCmluZGV4IDI0MTVj
MmNjYzQ1Y2Q3NTQ5ZTk4NjZkOGJiMDNiZDlhZDAwNWIzNjMuLjgyZDM2YzI0YjM0ZjA5YjliNDJh
ZWMzY2I0MzJiZmQ0ZGUwY2RhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
dXRmOC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3V0ZjguY2MKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvdXRmOC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4LmgKaW5kZXggZDJj
M2MwYjAxMjA4NTk2YjQ0Yzc5ODQ3ZWE3MWM2MjdkOTEzYzY0Yi4uMDQyMzYzMDQ3M2IxYjRkNzhh
OGMxZTFjZDFkNTI4ZTI1ZWFmNDBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC91dGY4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4LmgKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEzLDcgKzEzLDYgQEAKIC8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogLy8KIC8vIFVURjggdXRpbGl0aWVzLCBpbXBsZW1l
bnRlZCB0byByZWR1Y2UgZGVwZW5kZW5jaWVzLgotLy8KIAogI2lmbmRlZiBBQlNMX1NUUklOR1Nf
SU5URVJOQUxfVVRGOF9IXwogI2RlZmluZSBBQlNMX1NUUklOR1NfSU5URVJOQUxfVVRGOF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3V0ZjhfdGVzdC5jYwppbmRleCA2NGNlYzcwZGY3ZTFkOGRkNTNmNTRk
M2Y4YzA2ZjQwYjA4NGQ5ZjViLi44OGRkNTAzNmUzZGEwNjU4YzM4ZWU0ZjEyMWU1MjY4NjAxN2Vj
YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3V0ZjhfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3V0ZjhfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjIsMTIgKzIyLDE3IEBACiAKIG5hbWVzcGFjZSB7
CiAKKyNpZiAhZGVmaW5lZChfX2NwcF9jaGFyOF90KQorI2lmIGRlZmluZWQoX19jbGFuZ19fKQor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2MrKzJhLWNvbXBhdCIKKyNlbmRpZgogVEVTVChFbmNvZGVVVEY4Q2hhciwgQmFz
aWNGdW5jdGlvbikgewogICBzdGQ6OnBhaXI8Y2hhcjMyX3QsIHN0ZDo6c3RyaW5nPiB0ZXN0c1td
ID0ge3sweDAwMzAsIHU4Ilx1MDAzMCJ9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7MHgwMEEzLCB1OCJcdTAwQTMifSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgezB4MDAwMTAwMDAsIHU4IlxVMDAwMTAwMDAifSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezB4MDAwMEZGRkYsIHU4IlxVMDAwMEZG
RkYifSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezB4MDAxMEZG
RkQsIHU4IlxVMDAxMEZGRkQifX07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgezB4MDBBMywgdTgiXHUwMEEzIn0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgezB4MDAwMTAwMDAsIHU4IlxVMDAwMTAwMDAifSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MHgwMDAwRkZGRiwg
dTgiXFUwMDAwRkZGRiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsweDAwMTBGRkZELCB1OCJcVTAwMTBGRkZEIn19OwogICBmb3IgKGF1dG8gJnRlc3Qg
OiB0ZXN0cykgewogICAgIGNoYXIgYnVmMFs3XSA9IHsnXHgwMCcsICdceDAwJywgJ1x4MDAnLCAn
XHgwMCcsICdceDAwJywgJ1x4MDAnLCAnXHgwMCd9OwogICAgIGNoYXIgYnVmMVs3XSA9IHsnXHhG
RicsICdceEZGJywgJ1x4RkYnLCAnXHhGRicsICdceEZGJywgJ1x4RkYnLCAnXHhGRid9OwpAQCAt
NTMsNSArNTgsOSBAQCBURVNUKEVuY29kZVVURjhDaGFyLCBCYXNpY0Z1bmN0aW9uKSB7CiAgIEVY
UEVDVF9MRShhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpFbmNvZGVVVEY4Q2hhcihidWYyLCAtMSks
CiAgICAgICAgICAgICBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjprTWF4RW5jb2RlZFVURjhTaXpl
KTsKIH0KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKKyNlbmRpZgorI2VuZGlmICAvLyAhZGVmaW5lZChfX2NwcF9jaGFyOF90KQogCiB9ICAvLyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL21hdGNoLmNjCmluZGV4IDNkMTBjNTc3ODRlYmU5MjU0OTg1NWJjZmIwNzc2Nzk5OTY2ZjE3
MTcuLjdiMjQyNDFhZGY1YjFjNWFkZWY5MWY2NWMzYWQ3NDIzNjM5Mjg5ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvbWF0Y2guY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTgsMTUgKzE4LDYgQEAK
IAogbmFtZXNwYWNlIGFic2wgewogCi1uYW1lc3BhY2UgewotYm9vbCBDYXNlRXF1YWwoYWJzbDo6
c3RyaW5nX3ZpZXcgcGllY2UxLCBhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTIpIHsKLSAgcmV0dXJu
IChwaWVjZTEuc2l6ZSgpID09IHBpZWNlMi5zaXplKCkgJiYKLSAgICAgICAgICAwID09IHN0cmlu
Z3NfaW50ZXJuYWw6Om1lbWNhc2VjbXAocGllY2UxLmRhdGEoKSwgcGllY2UyLmRhdGEoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGllY2UxLnNpemUoKSkp
OwotICAvLyBtZW1jYXNlY21wIHVzZXMgYXNjaWlfdG9sb3dlcigpLgotfQotfSAgLy8gbmFtZXNw
YWNlCi0KIGJvb2wgRXF1YWxzSWdub3JlQ2FzZShhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTEsIGFi
c2w6OnN0cmluZ192aWV3IHBpZWNlMikgewogICByZXR1cm4gKHBpZWNlMS5zaXplKCkgPT0gcGll
Y2UyLnNpemUoKSAmJgogICAgICAgICAgIDAgPT0gYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6bWVt
Y2FzZWNtcChwaWVjZTEuZGF0YSgpLCBwaWVjZTIuZGF0YSgpLApAQCAtMzYsMTIgKzI3LDEyIEBA
IGJvb2wgRXF1YWxzSWdub3JlQ2FzZShhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTEsIGFic2w6OnN0
cmluZ192aWV3IHBpZWNlMikgewogCiBib29sIFN0YXJ0c1dpdGhJZ25vcmVDYXNlKGFic2w6OnN0
cmluZ192aWV3IHRleHQsIGFic2w6OnN0cmluZ192aWV3IHByZWZpeCkgewogICByZXR1cm4gKHRl
eHQuc2l6ZSgpID49IHByZWZpeC5zaXplKCkpICYmCi0gICAgICAgICBDYXNlRXF1YWwodGV4dC5z
dWJzdHIoMCwgcHJlZml4LnNpemUoKSksIHByZWZpeCk7CisgICAgICAgICBFcXVhbHNJZ25vcmVD
YXNlKHRleHQuc3Vic3RyKDAsIHByZWZpeC5zaXplKCkpLCBwcmVmaXgpOwogfQogCiBib29sIEVu
ZHNXaXRoSWdub3JlQ2FzZShhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmll
dyBzdWZmaXgpIHsKICAgcmV0dXJuICh0ZXh0LnNpemUoKSA+PSBzdWZmaXguc2l6ZSgpKSAmJgot
ICAgICAgICAgQ2FzZUVxdWFsKHRleHQuc3Vic3RyKHRleHQuc2l6ZSgpIC0gc3VmZml4LnNpemUo
KSksIHN1ZmZpeCk7CisgICAgICAgICBFcXVhbHNJZ25vcmVDYXNlKHRleHQuc3Vic3RyKHRleHQu
c2l6ZSgpIC0gc3VmZml4LnNpemUoKSksIHN1ZmZpeCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBh
YnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21h
dGNoLmgKaW5kZXggNmU4ZWQxMGZjNTBmZWI2ZjcxOTZkYjQxOWM0YTM4YTQyNDBiNGY3Yi4uNzYy
ZjM1OWY3OTY3YzUwZmE3YjBhOGQ2MmFlZTJhNmRhYzVmZjRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9tYXRjaC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guaApAQCAtNSw3ICs1LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNjIsOCArNjIsNyBAQCBpbmxpbmUgYm9v
bCBFbmRzV2l0aChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBzdWZm
aXgpIHsKICAgcmV0dXJuIHN1ZmZpeC5lbXB0eSgpIHx8CiAgICAgICAgICAodGV4dC5zaXplKCkg
Pj0gc3VmZml4LnNpemUoKSAmJgogICAgICAgICAgIG1lbWNtcCh0ZXh0LmRhdGEoKSArICh0ZXh0
LnNpemUoKSAtIHN1ZmZpeC5zaXplKCkpLCBzdWZmaXguZGF0YSgpLAotICAgICAgICAgICAgICAg
ICBzdWZmaXguc2l6ZSgpKSA9PSAwCi0gICAgICAgICApOworICAgICAgICAgICAgICAgICBzdWZm
aXguc2l6ZSgpKSA9PSAwKTsKIH0KIAogLy8gRXF1YWxzSWdub3JlQ2FzZSgpCkBAIC03NCwxMyAr
NzMsMTMgQEAgYm9vbCBFcXVhbHNJZ25vcmVDYXNlKGFic2w6OnN0cmluZ192aWV3IHBpZWNlMSwg
YWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UyKTsKIAogLy8gU3RhcnRzV2l0aElnbm9yZUNhc2UoKQog
Ly8KLS8vIFJldHVybnMgd2hldGhlciBhIGdpdmVuIEFTQ0lJIHN0cmluZyBgdGV4dGAgc3RhcnRz
IHdpdGggYHN0YXJ0c193aXRoYCwKKy8vIFJldHVybnMgd2hldGhlciBhIGdpdmVuIEFTQ0lJIHN0
cmluZyBgdGV4dGAgc3RhcnRzIHdpdGggYHByZWZpeGAsCiAvLyBpZ25vcmluZyBjYXNlIGluIHRo
ZSBjb21wYXJpc29uLgogYm9vbCBTdGFydHNXaXRoSWdub3JlQ2FzZShhYnNsOjpzdHJpbmdfdmll
dyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBwcmVmaXgpOwogCiAvLyBFbmRzV2l0aElnbm9yZUNh
c2UoKQogLy8KLS8vIFJldHVybnMgd2hldGhlciBhIGdpdmVuIEFTQ0lJIHN0cmluZyBgdGV4dGAg
ZW5kcyB3aXRoIGBlbmRzX3dpdGhgLCBpZ25vcmluZworLy8gUmV0dXJucyB3aGV0aGVyIGEgZ2l2
ZW4gQVNDSUkgc3RyaW5nIGB0ZXh0YCBlbmRzIHdpdGggYHN1ZmZpeGAsIGlnbm9yaW5nCiAvLyBj
YXNlIGluIHRoZSBjb21wYXJpc29uLgogYm9vbCBFbmRzV2l0aElnbm9yZUNhc2UoYWJzbDo6c3Ry
aW5nX3ZpZXcgdGV4dCwgYWJzbDo6c3RyaW5nX3ZpZXcgc3VmZml4KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9tYXRjaF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaF90ZXN0LmNj
CmluZGV4IGMyMWUwMGJmODA3Yzk0ZjdmN2M1YTg4ZjI2NWYyMDY5NGNkZjExNDMuLjRjMzEzZGRh
MTRlM2ZkYjA5ZTI4ZmY1MTJjYmFiYjE3MmI5YzM2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvbWF0Y2hfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoX3Rlc3QuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE5LDcgKzE5LDcgQEAKIG5h
bWVzcGFjZSB7CiAKIFRFU1QoTWF0Y2hUZXN0LCBTdGFydHNXaXRoKSB7Ci0gIGNvbnN0IHN0ZDo6
c3RyaW5nIHMxKCIxMjMiICJcMCIgIjQ1NiIsIDcpOworICBjb25zdCBzdGQ6OnN0cmluZyBzMSgi
MTIzXDBhYmMiLCA3KTsKICAgY29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcgYSgiZm9vYmFyIik7CiAg
IGNvbnN0IGFic2w6OnN0cmluZ192aWV3IGIoczEpOwogICBjb25zdCBhYnNsOjpzdHJpbmdfdmll
dyBlOwpAQCAtMzYsNyArMzYsNyBAQCBURVNUKE1hdGNoVGVzdCwgU3RhcnRzV2l0aCkgewogfQog
CiBURVNUKE1hdGNoVGVzdCwgRW5kc1dpdGgpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgczEoIjEy
MyIgIlwwIiAiNDU2IiwgNyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHMxKCIxMjNcMGFiYyIsIDcp
OwogICBjb25zdCBhYnNsOjpzdHJpbmdfdmlldyBhKCJmb29iYXIiKTsKICAgY29uc3QgYWJzbDo6
c3RyaW5nX3ZpZXcgYihzMSk7CiAgIGNvbnN0IGFic2w6OnN0cmluZ192aWV3IGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuY2MK
aW5kZXggOTMwOWY5ZGE5ZGNjNWM5MDdlNjgzNWVjYTZkMDQ3YzkwZjJjNmYzMi4uMzhkMTQ4Njkw
ZTJlN2MyYzcyMzU0YzgwYmFjMzhkNGQ2ZTIxNjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9udW1iZXJzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVycy5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzUsMTcgKzM1LDE4IEBACiAjaW5jbHVk
ZSAiYWJzbC9zdHJpbmdzL2FzY2lpLmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2NoYXJjb252
LmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWwuaCIKKyNpbmNsdWRl
ICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5o
IgogCiBuYW1lc3BhY2UgYWJzbCB7CiAKLWJvb2wgU2ltcGxlQXRvZihhYnNsOjpzdHJpbmdfdmll
dyBzdHIsIGZsb2F0KiB2YWx1ZSkgewotICAqdmFsdWUgPSAwLjA7Citib29sIFNpbXBsZUF0b2Yo
YWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBmbG9hdCogb3V0KSB7CisgICpvdXQgPSAwLjA7CiAgIHN0
ciA9IFN0cmlwQXNjaWlXaGl0ZXNwYWNlKHN0cik7CiAgIGlmICghc3RyLmVtcHR5KCkgJiYgc3Ry
WzBdID09ICcrJykgewogICAgIHN0ci5yZW1vdmVfcHJlZml4KDEpOwogICB9Ci0gIGF1dG8gcmVz
dWx0ID0gYWJzbDo6ZnJvbV9jaGFycyhzdHIuZGF0YSgpLCBzdHIuZGF0YSgpICsgc3RyLnNpemUo
KSwgKnZhbHVlKTsKKyAgYXV0byByZXN1bHQgPSBhYnNsOjpmcm9tX2NoYXJzKHN0ci5kYXRhKCks
IHN0ci5kYXRhKCkgKyBzdHIuc2l6ZSgpLCAqb3V0KTsKICAgaWYgKHJlc3VsdC5lYyA9PSBzdGQ6
OmVycmM6OmludmFsaWRfYXJndW1lbnQpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KQEAgLTUz
LDI1ICs1NCwyNSBAQCBib29sIFNpbXBsZUF0b2YoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBmbG9h
dCogdmFsdWUpIHsKICAgICAvLyBub3QgYWxsIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgY29u
c3VtZWQKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KLSAgLy8gZnJvbV9jaGFycygpIHdpdGggRFIg
MzgwMSdzIGN1cnJlbnQgd29yZGluZyB3aWxsIHJldHVybiBtYXgoKSBvbgorICAvLyBmcm9tX2No
YXJzKCkgd2l0aCBEUiAzMDgxJ3MgY3VycmVudCB3b3JkaW5nIHdpbGwgcmV0dXJuIG1heCgpIG9u
CiAgIC8vIG92ZXJmbG93LiAgU2ltcGxlQXRvZiByZXR1cm5zIGluZmluaXR5IGluc3RlYWQuCiAg
IGlmIChyZXN1bHQuZWMgPT0gc3RkOjplcnJjOjpyZXN1bHRfb3V0X29mX3JhbmdlKSB7Ci0gICAg
aWYgKCp2YWx1ZSA+IDEuMCkgewotICAgICAgKnZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCk7Ci0gICAgfSBlbHNlIGlmICgqdmFsdWUgPCAtMS4wKSB7Ci0gICAg
ICAqdmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAg
aWYgKCpvdXQgPiAxLjApIHsKKyAgICAgICpvdXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKTsKKyAgICB9IGVsc2UgaWYgKCpvdXQgPCAtMS4wKSB7CisgICAgICAqb3V0
ID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwogICAgIH0KICAgfQog
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTaW1wbGVBdG9kKGFic2w6OnN0cmluZ192aWV3IHN0
ciwgZG91YmxlKiB2YWx1ZSkgewotICAqdmFsdWUgPSAwLjA7Citib29sIFNpbXBsZUF0b2QoYWJz
bDo6c3RyaW5nX3ZpZXcgc3RyLCBkb3VibGUqIG91dCkgeworICAqb3V0ID0gMC4wOwogICBzdHIg
PSBTdHJpcEFzY2lpV2hpdGVzcGFjZShzdHIpOwogICBpZiAoIXN0ci5lbXB0eSgpICYmIHN0clsw
XSA9PSAnKycpIHsKICAgICBzdHIucmVtb3ZlX3ByZWZpeCgxKTsKICAgfQotICBhdXRvIHJlc3Vs
dCA9IGFic2w6OmZyb21fY2hhcnMoc3RyLmRhdGEoKSwgc3RyLmRhdGEoKSArIHN0ci5zaXplKCks
ICp2YWx1ZSk7CisgIGF1dG8gcmVzdWx0ID0gYWJzbDo6ZnJvbV9jaGFycyhzdHIuZGF0YSgpLCBz
dHIuZGF0YSgpICsgc3RyLnNpemUoKSwgKm91dCk7CiAgIGlmIChyZXN1bHQuZWMgPT0gc3RkOjpl
cnJjOjppbnZhbGlkX2FyZ3VtZW50KSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CkBAIC03OSwx
MyArODAsMTMgQEAgYm9vbCBTaW1wbGVBdG9kKGFic2w6OnN0cmluZ192aWV3IHN0ciwgZG91Ymxl
KiB2YWx1ZSkgewogICAgIC8vIG5vdCBhbGwgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBjb25z
dW1lZAogICAgIHJldHVybiBmYWxzZTsKICAgfQotICAvLyBmcm9tX2NoYXJzKCkgd2l0aCBEUiAz
ODAxJ3MgY3VycmVudCB3b3JkaW5nIHdpbGwgcmV0dXJuIG1heCgpIG9uCisgIC8vIGZyb21fY2hh
cnMoKSB3aXRoIERSIDMwODEncyBjdXJyZW50IHdvcmRpbmcgd2lsbCByZXR1cm4gbWF4KCkgb24K
ICAgLy8gb3ZlcmZsb3cuICBTaW1wbGVBdG9kIHJldHVybnMgaW5maW5pdHkgaW5zdGVhZC4KICAg
aWYgKHJlc3VsdC5lYyA9PSBzdGQ6OmVycmM6OnJlc3VsdF9vdXRfb2ZfcmFuZ2UpIHsKLSAgICBp
ZiAoKnZhbHVlID4gMS4wKSB7Ci0gICAgICAqdmFsdWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmluZmluaXR5KCk7Ci0gICAgfSBlbHNlIGlmICgqdmFsdWUgPCAtMS4wKSB7Ci0gICAg
ICAqdmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworICAg
IGlmICgqb3V0ID4gMS4wKSB7CisgICAgICAqb3V0ID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjppbmZpbml0eSgpOworICAgIH0gZWxzZSBpZiAoKm91dCA8IC0xLjApIHsKKyAgICAgICpv
dXQgPSAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwogICAgIH0KICAg
fQogICByZXR1cm4gdHJ1ZTsKQEAgLTkzLDE0ICs5NCw2IEBAIGJvb2wgU2ltcGxlQXRvZChhYnNs
OjpzdHJpbmdfdmlldyBzdHIsIGRvdWJsZSogdmFsdWUpIHsKIAogbmFtZXNwYWNlIHsKIAotLy8g
VE9ETyhyb2dlZWZmKTogcmVwbGFjZSB3aXRoIHRoZSByZWFsIHJlbGVhc2VkIHRoaW5nIG9uY2Ug
d2UgZmlndXJlIG91dCB3aGF0Ci0vLyBpdCBpcy4KLWlubGluZSBib29sIENhc2VFcXVhbChhYnNs
OjpzdHJpbmdfdmlldyBwaWVjZTEsIGFic2w6OnN0cmluZ192aWV3IHBpZWNlMikgewotICByZXR1
cm4gKHBpZWNlMS5zaXplKCkgPT0gcGllY2UyLnNpemUoKSAmJgotICAgICAgICAgIDAgPT0gc3Ry
aW5nc19pbnRlcm5hbDo6bWVtY2FzZWNtcChwaWVjZTEuZGF0YSgpLCBwaWVjZTIuZGF0YSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWVjZTEuc2l6ZSgp
KSk7Ci19Ci0KIC8vIFdyaXRlcyBhIHR3by1jaGFyYWN0ZXIgcmVwcmVzZW50YXRpb24gb2YgJ2kn
IHRvICdidWYnLiAnaScgbXVzdCBiZSBpbiB0aGUKIC8vIHJhbmdlIDAgPD0gaSA8IDEwMCwgYW5k
IGJ1ZiBtdXN0IGhhdmUgc3BhY2UgZm9yIHR3byBjaGFyYWN0ZXJzLiBFeGFtcGxlOgogLy8gICBj
aGFyIGJ1ZlsyXTsKQEAgLTEzNiwxOCArMTI5LDE4IEBAIGlubGluZSB2b2lkIFB1dFR3b0RpZ2l0
cyhzaXplX3QgaSwgY2hhciogYnVmKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1ib29sIFNpbXBs
ZUF0b2IoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBib29sKiB2YWx1ZSkgewotICBBQlNMX1JBV19D
SEVDSyh2YWx1ZSAhPSBudWxscHRyLCAiT3V0cHV0IHBvaW50ZXIgbXVzdCBub3QgYmUgbnVsbHB0
ci4iKTsKLSAgaWYgKENhc2VFcXVhbChzdHIsICJ0cnVlIikgfHwgQ2FzZUVxdWFsKHN0ciwgInQi
KSB8fAotICAgICAgQ2FzZUVxdWFsKHN0ciwgInllcyIpIHx8IENhc2VFcXVhbChzdHIsICJ5Iikg
fHwKLSAgICAgIENhc2VFcXVhbChzdHIsICIxIikpIHsKLSAgICAqdmFsdWUgPSB0cnVlOworYm9v
bCBTaW1wbGVBdG9iKGFic2w6OnN0cmluZ192aWV3IHN0ciwgYm9vbCogb3V0KSB7CisgIEFCU0xf
UkFXX0NIRUNLKG91dCAhPSBudWxscHRyLCAiT3V0cHV0IHBvaW50ZXIgbXVzdCBub3QgYmUgbnVs
bHB0ci4iKTsKKyAgaWYgKEVxdWFsc0lnbm9yZUNhc2Uoc3RyLCAidHJ1ZSIpIHx8IEVxdWFsc0ln
bm9yZUNhc2Uoc3RyLCAidCIpIHx8CisgICAgICBFcXVhbHNJZ25vcmVDYXNlKHN0ciwgInllcyIp
IHx8IEVxdWFsc0lnbm9yZUNhc2Uoc3RyLCAieSIpIHx8CisgICAgICBFcXVhbHNJZ25vcmVDYXNl
KHN0ciwgIjEiKSkgeworICAgICpvdXQgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogICB9Ci0g
IGlmIChDYXNlRXF1YWwoc3RyLCAiZmFsc2UiKSB8fCBDYXNlRXF1YWwoc3RyLCAiZiIpIHx8Ci0g
ICAgICBDYXNlRXF1YWwoc3RyLCAibm8iKSB8fCBDYXNlRXF1YWwoc3RyLCAibiIpIHx8Ci0gICAg
ICBDYXNlRXF1YWwoc3RyLCAiMCIpKSB7Ci0gICAgKnZhbHVlID0gZmFsc2U7CisgIGlmIChFcXVh
bHNJZ25vcmVDYXNlKHN0ciwgImZhbHNlIikgfHwgRXF1YWxzSWdub3JlQ2FzZShzdHIsICJmIikg
fHwKKyAgICAgIEVxdWFsc0lnbm9yZUNhc2Uoc3RyLCAibm8iKSB8fCBFcXVhbHNJZ25vcmVDYXNl
KHN0ciwgIm4iKSB8fAorICAgICAgRXF1YWxzSWdub3JlQ2FzZShzdHIsICIwIikpIHsKKyAgICAq
b3V0ID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMu
aAppbmRleCBmOWIyY2NlZjk0ZDhiZDU1YjFiZDgyZGU1ODJlNTg5Y2JkMjEyZjUxLi4xMDA4Mzli
MDQ2MjY3MGI2MjI2ZDQ4NWZmNzBlNWFmY2I2ZTNhMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL251bWJlcnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuaApAQCAtNSw3ICs1LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDQsMzMgKzQ0LDM4IEBAIG5hbWVzcGFj
ZSBhYnNsIHsKIC8vIENvbnZlcnRzIHRoZSBnaXZlbiBzdHJpbmcgaW50byBhbiBpbnRlZ2VyIHZh
bHVlLCByZXR1cm5pbmcgYHRydWVgIGlmCiAvLyBzdWNjZXNzZnVsLiBUaGUgc3RyaW5nIG11c3Qg
cmVmbGVjdCBhIGJhc2UtMTAgaW50ZWdlciAob3B0aW9uYWxseSBmb2xsb3dlZCBvcgogLy8gcHJl
Y2VkZWQgYnkgQVNDSUkgd2hpdGVzcGFjZSkgd2hvc2UgdmFsdWUgZmFsbHMgd2l0aGluIHRoZSBy
YW5nZSBvZiB0aGUKLS8vIGludGVnZXIgdHlwZS4KKy8vIGludGVnZXIgdHlwZS4gSWYgYW55IGVy
cm9ycyBhcmUgZW5jb3VudGVyZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgLAorLy8g
bGVhdmluZyBgb3V0YCBpbiBhbiB1bnNwZWNpZmllZCBzdGF0ZS4KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBpbnRfdHlwZT4KLUFCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wgU2ltcGxlQXRvaShhYnNsOjpz
dHJpbmdfdmlldyBzLCBpbnRfdHlwZSogb3V0KTsKK0FCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wg
U2ltcGxlQXRvaShhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGludF90eXBlKiBvdXQpOwogCiAvLyBT
aW1wbGVBdG9mKCkKIC8vCiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nIChvcHRpb25hbGx5
IGZvbGxvd2VkIG9yIHByZWNlZGVkIGJ5IEFTQ0lJCiAvLyB3aGl0ZXNwYWNlKSBpbnRvIGEgZmxv
YXQsIHdoaWNoIG1heSBiZSByb3VuZGVkIG9uIG92ZXJmbG93IG9yIHVuZGVyZmxvdy4KLS8vIFNl
ZSBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2Mvc3RyaW5nL2J5dGUvc3RydG9mIGZvciBk
ZXRhaWxzIGFib3V0IHRoZQotLy8gYWxsb3dlZCBmb3JtYXRzIGZvciBgc3RyYC4KLUFCU0xfTVVT
VF9VU0VfUkVTVUxUIGJvb2wgU2ltcGxlQXRvZihhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGZsb2F0
KiB2YWx1ZSk7CisvLyBTZWUgaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvYy9zdHJpbmcv
Ynl0ZS9zdHJ0b2YgZm9yIGRldGFpbHMgYWJvdXQgdGhlCisvLyBhbGxvd2VkIGZvcm1hdHMgZm9y
IGBzdHJgLiBJZiBhbnkgZXJyb3JzIGFyZSBlbmNvdW50ZXJlZCwgdGhpcyBmdW5jdGlvbgorLy8g
cmV0dXJucyBgZmFsc2VgLCBsZWF2aW5nIGBvdXRgIGluIGFuIHVuc3BlY2lmaWVkIHN0YXRlLgor
QUJTTF9NVVNUX1VTRV9SRVNVTFQgYm9vbCBTaW1wbGVBdG9mKGFic2w6OnN0cmluZ192aWV3IHN0
ciwgZmxvYXQqIG91dCk7CiAKIC8vIFNpbXBsZUF0b2QoKQogLy8KIC8vIENvbnZlcnRzIHRoZSBn
aXZlbiBzdHJpbmcgKG9wdGlvbmFsbHkgZm9sbG93ZWQgb3IgcHJlY2VkZWQgYnkgQVNDSUkKIC8v
IHdoaXRlc3BhY2UpIGludG8gYSBkb3VibGUsIHdoaWNoIG1heSBiZSByb3VuZGVkIG9uIG92ZXJm
bG93IG9yIHVuZGVyZmxvdy4KLS8vIFNlZSBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2Mv
c3RyaW5nL2J5dGUvc3RydG9mIGZvciBkZXRhaWxzIGFib3V0IHRoZQotLy8gYWxsb3dlZCBmb3Jt
YXRzIGZvciBgc3RyYC4KLUFCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wgU2ltcGxlQXRvZChhYnNs
OjpzdHJpbmdfdmlldyBzdHIsIGRvdWJsZSogdmFsdWUpOworLy8gU2VlIGh0dHBzOi8vZW4uY3Bw
cmVmZXJlbmNlLmNvbS93L2Mvc3RyaW5nL2J5dGUvc3RydG9mIGZvciBkZXRhaWxzIGFib3V0IHRo
ZQorLy8gYWxsb3dlZCBmb3JtYXRzIGZvciBgc3RyYC4gSWYgYW55IGVycm9ycyBhcmUgZW5jb3Vu
dGVyZWQsIHRoaXMgZnVuY3Rpb24KKy8vIHJldHVybnMgYGZhbHNlYCwgbGVhdmluZyBgb3V0YCBp
biBhbiB1bnNwZWNpZmllZCBzdGF0ZS4KK0FCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wgU2ltcGxl
QXRvZChhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGRvdWJsZSogb3V0KTsKIAogLy8gU2ltcGxlQXRv
YigpCiAvLwogLy8gQ29udmVydHMgdGhlIGdpdmVuIHN0cmluZyBpbnRvIGEgYm9vbGVhbiwgcmV0
dXJuaW5nIGB0cnVlYCBpZiBzdWNjZXNzZnVsLgogLy8gVGhlIGZvbGxvd2luZyBjYXNlLWluc2Vu
c2l0aXZlIHN0cmluZ3MgYXJlIGludGVycHJldGVkIGFzIGJvb2xlYW4gYHRydWVgOgogLy8gInRy
dWUiLCAidCIsICJ5ZXMiLCAieSIsICIxIi4gVGhlIGZvbGxvd2luZyBjYXNlLWluc2Vuc2l0aXZl
IHN0cmluZ3MKLS8vIGFyZSBpbnRlcnByZXRlZCBhcyBib29sZWFuIGBmYWxzZWA6ICJmYWxzZSIs
ICJmIiwgIm5vIiwgIm4iLCAiMCIuCi1BQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNpbXBsZUF0
b2IoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBib29sKiB2YWx1ZSk7CisvLyBhcmUgaW50ZXJwcmV0
ZWQgYXMgYm9vbGVhbiBgZmFsc2VgOiAiZmFsc2UiLCAiZiIsICJubyIsICJuIiwgIjAiLiBJZiBh
bnkKKy8vIGVycm9ycyBhcmUgZW5jb3VudGVyZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgZmFs
c2VgLCBsZWF2aW5nIGBvdXRgIGluIGFuCisvLyB1bnNwZWNpZmllZCBzdGF0ZS4KK0FCU0xfTVVT
VF9VU0VfUkVTVUxUIGJvb2wgU2ltcGxlQXRvYihhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGJvb2wq
IG91dCk7CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKQEAgLTE3NSw4ICsxODAsOCBAQCBBQlNM
X01VU1RfVVNFX1JFU1VMVCBib29sIHNhZmVfc3RydG9pX2Jhc2UoYWJzbDo6c3RyaW5nX3ZpZXcg
cywgaW50X3R5cGUqIG91dCwKIC8vIHByZWNlZGVkIGJ5IEFTQ0lJIHdoaXRlc3BhY2UsIHdpdGgg
YSB2YWx1ZSBpbiB0aGUgcmFuZ2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcKIC8vIGludGVnZXIgdHlw
ZS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBpbnRfdHlwZT4KLUFCU0xfTVVTVF9VU0VfUkVTVUxUIGJv
b2wgU2ltcGxlQXRvaShhYnNsOjpzdHJpbmdfdmlldyBzLCBpbnRfdHlwZSogb3V0KSB7Ci0gIHJl
dHVybiBudW1iZXJzX2ludGVybmFsOjpzYWZlX3N0cnRvaV9iYXNlKHMsIG91dCwgMTApOworQUJT
TF9NVVNUX1VTRV9SRVNVTFQgYm9vbCBTaW1wbGVBdG9pKGFic2w6OnN0cmluZ192aWV3IHN0ciwg
aW50X3R5cGUqIG91dCkgeworICByZXR1cm4gbnVtYmVyc19pbnRlcm5hbDo6c2FmZV9zdHJ0b2lf
YmFzZShzdHIsIG91dCwgMTApOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzX2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVt
YmVyc19iZW5jaG1hcmsuY2MKaW5kZXggMDU3MGI3NTg2MzNlZTA0MDZkMTIxN2U5ZTcwMDEyYjI4
YzE4MGM3MS4uNTRkYmVkZDM1MzU3NzcyZDc4NmQxMjFkODVjZGE3MWExNjgzMWIwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzX2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL251bWJlcnNfYmVuY2htYXJrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvbnVtYmVyc190ZXN0LmNjCmluZGV4IDM2ZmMwZDY0ZmQ1MTMwNTA3YjFlODEx
YjM4ZGZlNTdlMzI0OTNiNGQuLjc3ZDdlNzgzNWI4YjI1YWI1ZWJjMjM5NTExMmQxNTcwZTk1NDk2
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVyc190ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvbnVtYmVyc190ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9j
YXQuaCIKIAogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9udW1iZXJzX3Rlc3RfY29t
bW9uLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBlci5oIgog
CiBuYW1lc3BhY2UgewogCkBAIC0xOTAsNyArMTkxLDggQEAgdm9pZCBDaGVja1VJbnQ2NCh1aW50
NjRfdCB4KSB7CiAgIEVYUEVDVF9FUShleHBlY3RlZCwgc3RkOjpzdHJpbmcoJmJ1ZmZlclsxXSwg
YWN0dWFsKSkgPDwgIiBJbnB1dCAiIDw8IHg7CiAKICAgY2hhciogZ2VuZXJpY19hY3R1YWwgPSBh
YnNsOjpudW1iZXJzX2ludGVybmFsOjpGYXN0SW50VG9CdWZmZXIoeCwgJmJ1ZmZlclsxXSk7Ci0g
IEVYUEVDVF9FUShleHBlY3RlZCwgc3RkOjpzdHJpbmcoJmJ1ZmZlclsxXSwgZ2VuZXJpY19hY3R1
YWwpKSA8PCAiIElucHV0ICIgPDwgeDsKKyAgRVhQRUNUX0VRKGV4cGVjdGVkLCBzdGQ6OnN0cmlu
ZygmYnVmZmVyWzFdLCBnZW5lcmljX2FjdHVhbCkpCisgICAgICA8PCAiIElucHV0ICIgPDwgeDsK
IAogICBjaGFyKiBteV9hY3R1YWwgPQogICAgICAgYWJzbDo6bnVtYmVyc19pbnRlcm5hbDo6RmFz
dEludFRvQnVmZmVyKE15VUludDY0KHgpLCAmYnVmZmVyWzFdKTsKQEAgLTcxMSw3ICs3MTMsNyBA
QCBURVNUKHN0cmluZ3Rlc3QsIHNhZmVfc3RydG91NjRfYmFzZV9sZW5ndGhfZGVsaW1pdGVkKSB7
CiAgIH0KIH0KIAotLy8gZmVlbmFibGVleGNlcHQoKSBhbmQgZmVkaXNhYmxlZXhjZXB0KCkgYXJl
IG1pc3Npbmcgb24gTWFjIE9TIFgsIE1TVkMsCisvLyBmZWVuYWJsZWV4Y2VwdCgpIGFuZCBmZWRp
c2FibGVleGNlcHQoKSBhcmUgbWlzc2luZyBvbiBtYWNPUywgTVNWQywKIC8vIGFuZCBXZWJBc3Nl
bWJseS4KICNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChfX0VNU0NSSVBURU5fXykKICNkZWZpbmUgQUJTTF9NSVNTSU5HX0ZFRU5BQkxFRVhDRVBU
IDEKQEAgLTc4Myw3ICs3ODUsNyBAQCB2b2lkIEV4aGF1c3RpdmVGbG9hdCh1aW50MzJfdCBjYXNl
cywgUiYmIHJ1bm5hYmxlKSB7CiAgIGlmIChpdGVyc19wZXJfZmxvYXQgPT0gMCkgaXRlcnNfcGVy
X2Zsb2F0ID0gMTsKICAgZm9yIChmbG9hdCBmIDogZmxvYXRzKSB7CiAgICAgaWYgKGYgPT0gbGFz
dCkgY29udGludWU7Ci0gICAgZmxvYXQgdGVzdGYgPSBuZXh0YWZ0ZXIobGFzdCwgc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKKyAgICBmbG9hdCB0ZXN0ZiA9IHN0ZDo6bmV4dGFm
dGVyKGxhc3QsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CiAgICAgcnVubmFi
bGUodGVzdGYpOwogICAgIHJ1bm5hYmxlKC10ZXN0Zik7CiAgICAgbGFzdCA9IHRlc3RmOwpAQCAt
Nzk3LDcgKzc5OSw3IEBAIHZvaWQgRXhoYXVzdGl2ZUZsb2F0KHVpbnQzMl90IGNhc2VzLCBSJiYg
cnVubmFibGUpIHsKICAgICAgICAgbGFzdCA9IHRlc3RmOwogICAgICAgfQogICAgIH0KLSAgICB0
ZXN0ZiA9IG5leHRhZnRlcihmLCAwLjBmKTsKKyAgICB0ZXN0ZiA9IHN0ZDo6bmV4dGFmdGVyKGYs
IDAuMGYpOwogICAgIGlmICh0ZXN0ZiA+IGxhc3QpIHsKICAgICAgIHJ1bm5hYmxlKHRlc3RmKTsK
ICAgICAgIHJ1bm5hYmxlKC10ZXN0Zik7CkBAIC04NzEsMTUgKzg3MywxNSBAQCBURVNUX0YoU2lt
cGxlRHRvYVRlc3QsIEV4aGF1c3RpdmVEb3VibGVUb1NpeERpZ2l0cykgewogICAgIH0KIAogICAg
IGZvciAoaW50IGV4cG9uZW50ID0gLTMyNDsgZXhwb25lbnQgPD0gMzA4OyArK2V4cG9uZW50KSB7
Ci0gICAgICBkb3VibGUgcG93dGVuID0gcG93KDEwLjAsIGV4cG9uZW50KTsKKyAgICAgIGRvdWJs
ZSBwb3d0ZW4gPSBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpQb3cxMChleHBvbmVudCk7CiAgICAg
ICBpZiAocG93dGVuID09IDApIHBvd3RlbiA9IDVlLTMyNDsKICAgICAgIGlmIChrRmxvYXROdW1D
YXNlcyA+PSAxZTkpIHsKICAgICAgICAgLy8gVGhlIGV4aGF1c3RpdmUgdGVzdCB0YWtlcyBhIHZl
cnkgbG9uZyB0aW1lLCBzbyBsb2cgcHJvZ3Jlc3MuCiAgICAgICAgIGNoYXIgYnVmW2tTaXhEaWdp
dHNUb0J1ZmZlclNpemVdOwogICAgICAgICBBQlNMX1JBV19MT0coCiAgICAgICAgICAgICBJTkZP
LCAiJXMiLAotICAgICAgICAgICAgYWJzbDo6U3RyQ2F0KCJFeHAgIiwgZXhwb25lbnQsICIgcG93
dGVuPSIsIHBvd3RlbiwgIigiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBvd3RlbiwgIikg
KCIsCisgICAgICAgICAgICBhYnNsOjpTdHJDYXQoIkV4cCAiLCBleHBvbmVudCwgIiBwb3d0ZW49
IiwgcG93dGVuLCAiKCIsIHBvd3RlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiKSAoIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyhidWYsIFNpeERpZ2l0c1RvQnVm
ZmVyKHBvd3RlbiwgYnVmKSksICIpIikKICAgICAgICAgICAgICAgICAuY19zdHIoKSk7CiAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9jYXQuY2MKaW5kZXggZWZhNGZkNzNkYmFjNzcwNDg3NDdlY2M0YTdmMWZjYjBlNjdkNzcw
Ni4uZmZlOTlkYjgxNzEzNGExYzE2NGY2YWNjNWMyODAxOTBlOWUzYzkyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9zdHJfY2F0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNzgsOSArNzgsOSBA
QCBBbHBoYU51bTo6QWxwaGFOdW0oRGVjIGRlYykgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBT
dHJDYXQoKQotLy8gICAgVGhpcyBtZXJnZXMgdGhlIGdpdmVuIHN0cmluZ3Mgb3IgaW50ZWdlcnMs
IHdpdGggbm8gZGVsaW1pdGVyLiAgVGhpcworLy8gICAgVGhpcyBtZXJnZXMgdGhlIGdpdmVuIHN0
cmluZ3Mgb3IgaW50ZWdlcnMsIHdpdGggbm8gZGVsaW1pdGVyLiBUaGlzCiAvLyAgICBpcyBkZXNp
Z25lZCB0byBiZSB0aGUgZmFzdGVzdCBwb3NzaWJsZSB3YXkgdG8gY29uc3RydWN0IGEgc3RyaW5n
IG91dAotLy8gICAgb2YgYSBtaXggb2YgcmF3IEMgc3RyaW5ncywgU3RyaW5nUGllY2VzLCBzdHJp
bmdzLCBhbmQgaW50ZWdlciB2YWx1ZXMuCisvLyAgICBvZiBhIG1peCBvZiByYXcgQyBzdHJpbmdz
LCBzdHJpbmdfdmlld3MsIHN0cmluZ3MsIGFuZCBpbnRlZ2VyIHZhbHVlcy4KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogLy8gQXBwZW5kIGlzIG1lcmVseSBhIHZlcnNpb24gb2YgbWVtY3B5IHRoYXQgcmV0
dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUgYnl0ZQpAQCAtODksNyArODksOSBAQCBzdGF0aWMgY2hh
ciogQXBwZW5kKGNoYXIqIG91dCwgY29uc3QgQWxwaGFOdW0mIHgpIHsKICAgLy8gbWVtY3B5IGlz
IGFsbG93ZWQgdG8gb3ZlcndyaXRlIGFyYml0cmFyeSBtZW1vcnksIHNvIGRvaW5nIHRoaXMgYWZ0
ZXIgdGhlCiAgIC8vIGNhbGwgd291bGQgZm9yY2UgYW4gZXh0cmEgZmV0Y2ggb2YgeC5zaXplKCku
CiAgIGNoYXIqIGFmdGVyID0gb3V0ICsgeC5zaXplKCk7Ci0gIG1lbWNweShvdXQsIHguZGF0YSgp
LCB4LnNpemUoKSk7CisgIGlmICh4LnNpemUoKSAhPSAwKSB7CisgICAgbWVtY3B5KG91dCwgeC5k
YXRhKCksIHguc2l6ZSgpKTsKKyAgfQogICByZXR1cm4gYWZ0ZXI7CiB9CiAKQEAgLTExOSw3ICsx
MjEsNyBAQCBzdGQ6OnN0cmluZyBTdHJDYXQoY29uc3QgQWxwaGFOdW0mIGEsIGNvbnN0IEFscGhh
TnVtJiBiLCBjb25zdCBBbHBoYU51bSYgYykgewogfQogCiBzdGQ6OnN0cmluZyBTdHJDYXQoY29u
c3QgQWxwaGFOdW0mIGEsIGNvbnN0IEFscGhhTnVtJiBiLCBjb25zdCBBbHBoYU51bSYgYywKLSAg
ICAgICAgICAgICAgY29uc3QgQWxwaGFOdW0mIGQpIHsKKyAgICAgICAgICAgICAgICAgICBjb25z
dCBBbHBoYU51bSYgZCkgewogICBzdGQ6OnN0cmluZyByZXN1bHQ7CiAgIHN0cmluZ3NfaW50ZXJu
YWw6OlNUTFN0cmluZ1Jlc2l6ZVVuaW5pdGlhbGl6ZWQoCiAgICAgICAmcmVzdWx0LCBhLnNpemUo
KSArIGIuc2l6ZSgpICsgYy5zaXplKCkgKyBkLnNpemUoKSk7CkBAIC0xNDYsOCArMTQ4LDEwIEBA
IHN0ZDo6c3RyaW5nIENhdFBpZWNlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8YWJzbDo6c3RyaW5n
X3ZpZXc+IHBpZWNlcykgewogICBjaGFyKiBvdXQgPSBiZWdpbjsKICAgZm9yIChjb25zdCBhYnNs
OjpzdHJpbmdfdmlldyBwaWVjZSA6IHBpZWNlcykgewogICAgIGNvbnN0IHNpemVfdCB0aGlzX3Np
emUgPSBwaWVjZS5zaXplKCk7Ci0gICAgbWVtY3B5KG91dCwgcGllY2UuZGF0YSgpLCB0aGlzX3Np
emUpOwotICAgIG91dCArPSB0aGlzX3NpemU7CisgICAgaWYgKHRoaXNfc2l6ZSAhPSAwKSB7Cisg
ICAgICBtZW1jcHkob3V0LCBwaWVjZS5kYXRhKCksIHRoaXNfc2l6ZSk7CisgICAgICBvdXQgKz0g
dGhpc19zaXplOworICAgIH0KICAgfQogICBhc3NlcnQob3V0ID09IGJlZ2luICsgcmVzdWx0LnNp
emUoKSk7CiAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzYsOCArMTgwLDEwIEBAIHZvaWQgQXBwZW5k
UGllY2VzKHN0ZDo6c3RyaW5nKiBkZXN0LAogICBjaGFyKiBvdXQgPSBiZWdpbiArIG9sZF9zaXpl
OwogICBmb3IgKGNvbnN0IGFic2w6OnN0cmluZ192aWV3IHBpZWNlIDogcGllY2VzKSB7CiAgICAg
Y29uc3Qgc2l6ZV90IHRoaXNfc2l6ZSA9IHBpZWNlLnNpemUoKTsKLSAgICBtZW1jcHkob3V0LCBw
aWVjZS5kYXRhKCksIHRoaXNfc2l6ZSk7Ci0gICAgb3V0ICs9IHRoaXNfc2l6ZTsKKyAgICBpZiAo
dGhpc19zaXplICE9IDApIHsKKyAgICAgIG1lbWNweShvdXQsIHBpZWNlLmRhdGEoKSwgdGhpc19z
aXplKTsKKyAgICAgIG91dCArPSB0aGlzX3NpemU7CisgICAgfQogICB9CiAgIGFzc2VydChvdXQg
PT0gYmVnaW4gKyBkZXN0LT5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9z
dHJfY2F0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQuaAppbmRleCBkYTllZDlhMjY5ZTk5MGI4
NzkyMmZmMmQxOWFhOTcxN2U1ZTBkNzIxLi5hOTlhYWMwMWViYmY4N2JjNzgzMjM1ZGU2NGRjN2I2
NDU4NmZiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cl9jYXQuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMzcsMTIgKzM3LDEyIEBACiAvLyBhdHRlbXB0IHRvIHBhc3MgJzonIGluc3RlYWQg
b2YgIjoiIG1pZ2h0IHJlc3VsdCBpbiBhIDU4IGVuZGluZyB1cCBpbiB5b3VyCiAvLyByZXN1bHQu
CiAvLwotLy8gQm9vbHMgY29udmVydCB0byAiMCIgb3IgIjEiLgorLy8gQm9vbHMgY29udmVydCB0
byAiMCIgb3IgIjEiLiBQb2ludGVycyB0byB0eXBlcyBvdGhlciB0aGFuIGBjaGFyICpgIGFyZSBu
b3QKKy8vIHZhbGlkIGlucHV0cy4gTm8gb3V0cHV0IGlzIGdlbmVyYXRlZCBmb3IgbnVsbCBgY2hh
ciAqYCBwb2ludGVycy4KIC8vCiAvLyBGbG9hdGluZyBwb2ludCBudW1iZXJzIGFyZSBmb3JtYXR0
ZWQgd2l0aCBzaXgtZGlnaXQgcHJlY2lzaW9uLCB3aGljaCBpcwogLy8gdGhlIGRlZmF1bHQgZm9y
ICJzdGQ6OmNvdXQgPDwiIG9yIHByaW50ZiAiJWciICh0aGUgc2FtZSBhcyAiJS42ZyIpLgogLy8K
LS8vCiAvLyBZb3UgY2FuIGNvbnZlcnQgdG8gaGV4YWRlY2ltYWwgb3V0cHV0IHJhdGhlciB0aGFu
IGRlY2ltYWwgb3V0cHV0IHVzaW5nIHRoZQogLy8gYEhleGAgdHlwZSBjb250YWluZWQgaGVyZS4g
VG8gZG8gc28sIHBhc3MgYEhleChteV9pbnQpYCBhcyBhIHBhcmFtZXRlciB0bwogLy8gYFN0ckNh
dCgpYCBvciBgU3RyQXBwZW5kKClgLiBZb3UgbWF5IHNwZWNpZnkgYSBtaW5pbXVtIGhleCBmaWVs
ZCB3aWR0aCB1c2luZwpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5j
bHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHZlY3Rvcj4K
IAogI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL251
bWJlcnMuaCIKQEAgLTc4LDggKzc5LDggQEAgc3RydWN0IEFscGhhTnVtQnVmZmVyIHsKIAogLy8g
RW51bSB0aGF0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyB0byBy
ZXR1cm4gaW4gYSBgSGV4YCBvcgogLy8gYERlY2AgY29udmVyc2lvbiBhbmQgZmlsbCBjaGFyYWN0
ZXIgdG8gdXNlLiBBIGBrWmVyb1BhZDJgIHZhbHVlLCBmb3IgZXhhbXBsZSwKLS8vIHdvdWxkIHBy
b2R1Y2UgaGV4YWRlY2ltYWwgc3RyaW5ncyBzdWNoIGFzICIwQSIsIjBGIiBhbmQgYSAna1NwYWNl
UGFkNScgdmFsdWUKLS8vIHdvdWxkIHByb2R1Y2UgaGV4YWRlY2ltYWwgc3RyaW5ncyBzdWNoIGFz
ICIgICAgQSIsIiAgICBGIi4KKy8vIHdvdWxkIHByb2R1Y2UgaGV4YWRlY2ltYWwgc3RyaW5ncyBz
dWNoIGFzICIwYSIsIjBmIiBhbmQgYSAna1NwYWNlUGFkNScgdmFsdWUKKy8vIHdvdWxkIHByb2R1
Y2UgaGV4YWRlY2ltYWwgc3RyaW5ncyBzdWNoIGFzICIgICAgYSIsIiAgICBmIi4KIGVudW0gUGFk
U3BlYyA6IHVpbnQ4X3QgewogICBrTm9QYWQgPSAxLAogICBrWmVyb1BhZDIsCkBAIC05Nyw2ICs5
OCwxMCBAQCBlbnVtIFBhZFNwZWMgOiB1aW50OF90IHsKICAga1plcm9QYWQxNCwKICAga1plcm9Q
YWQxNSwKICAga1plcm9QYWQxNiwKKyAga1plcm9QYWQxNywKKyAga1plcm9QYWQxOCwKKyAga1pl
cm9QYWQxOSwKKyAga1plcm9QYWQyMCwKIAogICBrU3BhY2VQYWQyID0ga1plcm9QYWQyICsgNjQs
CiAgIGtTcGFjZVBhZDMsCkBAIC0xMTMsNiArMTE4LDEwIEBAIGVudW0gUGFkU3BlYyA6IHVpbnQ4
X3QgewogICBrU3BhY2VQYWQxNCwKICAga1NwYWNlUGFkMTUsCiAgIGtTcGFjZVBhZDE2LAorICBr
U3BhY2VQYWQxNywKKyAga1NwYWNlUGFkMTgsCisgIGtTcGFjZVBhZDE5LAorICBrU3BhY2VQYWQy
MCwKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMzcsNiArMjQ2LDcgQEAgY2xh
c3MgQWxwaGFOdW0gewogCiAgIEFscGhhTnVtKGNvbnN0IGNoYXIqIGNfc3RyKSA6IHBpZWNlXyhj
X3N0cikge30gIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0KQogICBBbHBoYU51bShhYnNsOjpz
dHJpbmdfdmlldyBwYykgOiBwaWVjZV8ocGMpIHt9ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNp
dCkKKwogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yPgogICBBbHBoYU51bSggIC8vIE5P
TElOVChydW50aW1lL2V4cGxpY2l0KQogICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hh
ciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgQWxsb2NhdG9yPiYgc3RyKQpAQCAtMjYwLDYgKzI3
MCwxNyBAQCBjbGFzcyBBbHBoYU51bSB7CiAgIEFscGhhTnVtKFQgZSkgIC8vIE5PTElOVChydW50
aW1lL2V4cGxpY2l0KQogICAgICAgOiBBbHBoYU51bShzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6
OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlwZT4oZSkpIHt9CiAKKyAgLy8gdmVjdG9yPGJvb2w+Ojpy
ZWZlcmVuY2UgYW5kIGNvbnN0X3JlZmVyZW5jZSByZXF1aXJlIHNwZWNpYWwgaGVscCB0bworICAv
LyBjb252ZXJ0IHRvIGBBbHBoYU51bWAgYmVjYXVzZSBpdCByZXF1aXJlcyB0d28gdXNlciBkZWZp
bmVkIGNvbnZlcnNpb25zLgorICB0ZW1wbGF0ZSA8CisgICAgICB0eXBlbmFtZSBULAorICAgICAg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgc3RkOjppc19jbGFzczxUPjo6dmFs
dWUgJiYKKyAgICAgICAgICAoc3RkOjppc19zYW1lPFQsIHN0ZDo6dmVjdG9yPGJvb2w+OjpyZWZl
cmVuY2U+Ojp2YWx1ZSB8fAorICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VCwgc3RkOjp2ZWN0b3I8
Ym9vbD46OmNvbnN0X3JlZmVyZW5jZT46OnZhbHVlKT46OnR5cGUqID0KKyAgICAgICAgICBudWxs
cHRyPgorICBBbHBoYU51bShUIGUpIDogQWxwaGFOdW0oc3RhdGljX2Nhc3Q8Ym9vbD4oZSkpIHt9
ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKKwogIHByaXZhdGU6CiAgIGFic2w6OnN0cmlu
Z192aWV3IHBpZWNlXzsKICAgY2hhciBkaWdpdHNfW251bWJlcnNfaW50ZXJuYWw6OmtGYXN0VG9C
dWZmZXJTaXplXTsKQEAgLTMwOSwxNiArMzMwLDE1IEBAIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGlu
bGluZSBzdGQ6OnN0cmluZyBTdHJDYXQoY29uc3QgQWxwaGFOdW0mIGEpIHsKIAogQUJTTF9NVVNU
X1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3RyQ2F0KGNvbnN0IEFscGhhTnVtJiBhLCBjb25zdCBB
bHBoYU51bSYgYik7CiBBQlNMX01VU1RfVVNFX1JFU1VMVCBzdGQ6OnN0cmluZyBTdHJDYXQoY29u
c3QgQWxwaGFOdW0mIGEsIGNvbnN0IEFscGhhTnVtJiBiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBBbHBoYU51bSYgYyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQWxwaGFOdW0mIGMpOwogQUJTTF9NVVNUX1VTRV9SRVNV
TFQgc3RkOjpzdHJpbmcgU3RyQ2F0KGNvbnN0IEFscGhhTnVtJiBhLCBjb25zdCBBbHBoYU51bSYg
YiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWxwaGFOdW0mIGMs
IGNvbnN0IEFscGhhTnVtJiBkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBBbHBoYU51bSYgYywgY29uc3QgQWxwaGFOdW0mIGQpOwogCiAvLyBTdXBwb3J0
IDUgb3IgbW9yZSBhcmd1bWVudHMKIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBVj4KLUFCU0xfTVVT
VF9VU0VfUkVTVUxUIGlubGluZSBzdGQ6OnN0cmluZyBTdHJDYXQoY29uc3QgQWxwaGFOdW0mIGEs
IGNvbnN0IEFscGhhTnVtJiBiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQWxwaGFOdW0mIGMsIGNvbnN0IEFscGhhTnVtJiBkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWxwaGFOdW0mIGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBViYuLi4gYXJncykgewor
QUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIHN0ZDo6c3RyaW5nIFN0ckNhdCgKKyAgICBjb25z
dCBBbHBoYU51bSYgYSwgY29uc3QgQWxwaGFOdW0mIGIsIGNvbnN0IEFscGhhTnVtJiBjLCBjb25z
dCBBbHBoYU51bSYgZCwKKyAgICBjb25zdCBBbHBoYU51bSYgZSwgY29uc3QgQVYmLi4uIGFyZ3Mp
IHsKICAgcmV0dXJuIHN0cmluZ3NfaW50ZXJuYWw6OkNhdFBpZWNlcygKICAgICAgIHthLlBpZWNl
KCksIGIuUGllY2UoKSwgYy5QaWVjZSgpLCBkLlBpZWNlKCksIGUuUGllY2UoKSwKICAgICAgICBz
dGF0aWNfY2FzdDxjb25zdCBBbHBoYU51bSY+KGFyZ3MpLlBpZWNlKCkuLi59KTsKQEAgLTMzNiwx
OCArMzU2LDE4IEBAIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBzdGQ6OnN0cmluZyBTdHJD
YXQoY29uc3QgQWxwaGFOdW0mIGEsIGNvbnN0IEFscGhhTnVtCiAvLyBub3QgdHJ5IHRvIGNoZWNr
IGVhY2ggb2YgaXRzIGlucHV0IGFyZ3VtZW50cyB0byBiZSBzdXJlIHRoYXQgdGhleSBhcmUgbm90
CiAvLyBhIHN1YnNldCBvZiB0aGUgc3RyaW5nIGJlaW5nIGFwcGVuZGVkIHRvLiBUaGF0IGlzLCB3
aGlsZSB0aGlzIHdpbGwgd29yazoKIC8vCi0vLyAgIHN0cmluZyBzID0gImZvbyI7CisvLyAgIHN0
ZDo6c3RyaW5nIHMgPSAiZm9vIjsKIC8vICAgcyArPSBzOwogLy8KIC8vIFRoaXMgb3V0cHV0IGlz
IHVuZGVmaW5lZDoKIC8vCi0vLyAgIHN0cmluZyBzID0gImZvbyI7CisvLyAgIHN0ZDo6c3RyaW5n
IHMgPSAiZm9vIjsKIC8vICAgU3RyQXBwZW5kKCZzLCBzKTsKIC8vCiAvLyBUaGlzIG91dHB1dCBp
cyB1bmRlZmluZWQgYXMgd2VsbCwgc2luY2UgYGFic2w6OnN0cmluZ192aWV3YCBkb2VzIG5vdCBv
d24gaXRzCiAvLyBkYXRhOgogLy8KLS8vICAgc3RyaW5nIHMgPSAiZm9vYmFyIjsKKy8vICAgc3Rk
OjpzdHJpbmcgcyA9ICJmb29iYXIiOwogLy8gICBhYnNsOjpzdHJpbmdfdmlldyBwID0gczsKIC8v
ICAgU3RyQXBwZW5kKCZzLCBwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0
X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdF9iZW5jaG1hcmsuY2MKaW5kZXgg
YjZkZjllMzA5YzRmODM3MjM2OGYwMGYxZTRlM2Q1OWE3YTlkM2U5ZC4uMTRjNjNiM2ZjOWY5ZTI0
MjQ2ZmYzMzlmOGE3ZWY0ZWUwYmQzYjgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJf
Y2F0X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXRfYmVuY2htYXJrLmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL3N0cl9jYXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdF90ZXN0
LmNjCmluZGV4IDU1NWQ4ZGIzZWI4NTQzOGJlNWY4Y2M3ZjU5ZGQ1NTA3ZDZkNWJhNTQuLjI5ZGI5
YzAyMzc4MWIyMGJkNWExODI0Njk4ODM3ZTgxMmY0NzYxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3Mvc3RyX2NhdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdF90ZXN0LmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOCw2ICsxOCw3
IEBACiAKICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2
ZWN0b3I+CiAKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5n
cy9zdWJzdGl0dXRlLmgiCkBAIC0xMDYsMTEgKzEwNyw3IEBAIFRFU1QoU3RyQ2F0LCBFbnVtcykg
ewogVEVTVChTdHJDYXQsIEJhc2ljcykgewogICBzdGQ6OnN0cmluZyByZXN1bHQ7CiAKLSAgc3Rk
OjpzdHJpbmcgc3Ryc1tdID0gewotICAgICJIZWxsbyIsCi0gICAgIkNydWVsIiwKLSAgICAiV29y
bGQiCi0gIH07CisgIHN0ZDo6c3RyaW5nIHN0cnNbXSA9IHsiSGVsbG8iLCAiQ3J1ZWwiLCAiV29y
bGQifTsKIAogICBzdGQ6OnN0cmluZyBzdGRzdHJzW10gPSB7CiAgICAgInN0ZDo6SGVsbG8iLApA
QCAtMTY0LDkgKzE2MSwxMCBAQCBURVNUKFN0ckNhdCwgQmFzaWNzKSB7CiAgIHJlc3VsdCA9IGFi
c2w6OlN0ckNhdCh1aTY0c1swXSwgIiwgIiwgdWk2NHNbMV0sICIhIik7CiAgIEVYUEVDVF9FUShy
ZXN1bHQsICIxMjM0NTY3ODkxMCwgMTA5ODc2NTQzMjEhIik7CiAKLSAgc3RkOjpzdHJpbmcgb25l
ID0gIjEiOyAgLy8gQWN0dWFsbHksIGl0J3MgdGhlIHNpemUgb2YgdGhpcyBzdGQ6OnN0cmluZyB0
aGF0IHdlIHdhbnQ7IGEKLSAgICAgICAgICAgICAgICAgICAgIC8vIDY0LWJpdCBidWlsZCBkaXN0
aW5ndWlzaGVzIGJldHdlZW4gc2l6ZV90IGFuZCB1aW50NjRfdCwKLSAgICAgICAgICAgICAgICAg
ICAgIC8vIGV2ZW4gdGhvdWdoIHRoZXkncmUgYm90aCB1bnNpZ25lZCA2NC1iaXQgdmFsdWVzLgor
ICBzdGQ6OnN0cmluZyBvbmUgPQorICAgICAgIjEiOyAgLy8gQWN0dWFsbHksIGl0J3MgdGhlIHNp
emUgb2YgdGhpcyBzdGQ6OnN0cmluZyB0aGF0IHdlIHdhbnQ7IGEKKyAgICAgICAgICAgIC8vIDY0
LWJpdCBidWlsZCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gc2l6ZV90IGFuZCB1aW50NjRfdCwKKyAg
ICAgICAgICAgIC8vIGV2ZW4gdGhvdWdoIHRoZXkncmUgYm90aCB1bnNpZ25lZCA2NC1iaXQgdmFs
dWVzLgogICByZXN1bHQgPSBhYnNsOjpTdHJDYXQoIkFuZCBhICIsIG9uZS5zaXplKCksICIgYW5k
IGEgIiwKICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHRbMl0gLSAmcmVzdWx0WzBdLCAi
IGFuZCBhICIsIG9uZSwgIiAyIDMgNCIsICIhIik7CiAgIEVYUEVDVF9FUShyZXN1bHQsICJBbmQg
YSAxIGFuZCBhIDIgYW5kIGEgMSAyIDMgNCEiKTsKQEAgLTMwNiwxMSArMzA0LDcgQEAgVEVTVChT
dHJDYXQsIE1heEFyZ3MpIHsKIFRFU1QoU3RyQXBwZW5kLCBCYXNpY3MpIHsKICAgc3RkOjpzdHJp
bmcgcmVzdWx0ID0gImV4aXN0aW5nIHRleHQiOwogCi0gIHN0ZDo6c3RyaW5nIHN0cnNbXSA9IHsK
LSAgICAiSGVsbG8iLAotICAgICJDcnVlbCIsCi0gICAgIldvcmxkIgotICB9OworICBzdGQ6OnN0
cmluZyBzdHJzW10gPSB7IkhlbGxvIiwgIkNydWVsIiwgIldvcmxkIn07CiAKICAgc3RkOjpzdHJp
bmcgc3Rkc3Ryc1tdID0gewogICAgICJzdGQ6OkhlbGxvIiwKQEAgLTM2NSw5ICszNTksMTAgQEAg
VEVTVChTdHJBcHBlbmQsIEJhc2ljcykgewogICBhYnNsOjpTdHJBcHBlbmQoJnJlc3VsdCwgdWk2
NHNbMF0sICIsICIsIHVpNjRzWzFdLCAiISIpOwogICBFWFBFQ1RfRVEocmVzdWx0LnN1YnN0cihv
bGRfc2l6ZSksICIxMjM0NTY3ODkxMCwgMTA5ODc2NTQzMjEhIik7CiAKLSAgc3RkOjpzdHJpbmcg
b25lID0gIjEiOyAgLy8gQWN0dWFsbHksIGl0J3MgdGhlIHNpemUgb2YgdGhpcyBzdGQ6OnN0cmlu
ZyB0aGF0IHdlIHdhbnQ7IGEKLSAgICAgICAgICAgICAgICAgICAgIC8vIDY0LWJpdCBidWlsZCBk
aXN0aW5ndWlzaGVzIGJldHdlZW4gc2l6ZV90IGFuZCB1aW50NjRfdCwKLSAgICAgICAgICAgICAg
ICAgICAgIC8vIGV2ZW4gdGhvdWdoIHRoZXkncmUgYm90aCB1bnNpZ25lZCA2NC1iaXQgdmFsdWVz
LgorICBzdGQ6OnN0cmluZyBvbmUgPQorICAgICAgIjEiOyAgLy8gQWN0dWFsbHksIGl0J3MgdGhl
IHNpemUgb2YgdGhpcyBzdGQ6OnN0cmluZyB0aGF0IHdlIHdhbnQ7IGEKKyAgICAgICAgICAgIC8v
IDY0LWJpdCBidWlsZCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gc2l6ZV90IGFuZCB1aW50NjRfdCwK
KyAgICAgICAgICAgIC8vIGV2ZW4gdGhvdWdoIHRoZXkncmUgYm90aCB1bnNpZ25lZCA2NC1iaXQg
dmFsdWVzLgogICBvbGRfc2l6ZSA9IHJlc3VsdC5zaXplKCk7CiAgIGFic2w6OlN0ckFwcGVuZCgm
cmVzdWx0LCAiQW5kIGEgIiwgb25lLnNpemUoKSwgIiBhbmQgYSAiLAogICAgICAgICAgICAgICAg
ICAgJnJlc3VsdFsyXSAtICZyZXN1bHRbMF0sICIgYW5kIGEgIiwgb25lLCAiIDIgMyA0IiwgIiEi
KTsKQEAgLTQwMSw2ICszOTYsMzIgQEAgVEVTVChTdHJBcHBlbmQsIEJhc2ljcykgewogICAgICAg
ICAgICAgIk5vIGxpbWl0IHRoYW5rcyB0byBDKysxMSdzIHZhcmlhZGljIHRlbXBsYXRlcyIpOwog
fQogCitURVNUKFN0ckNhdCwgVmVjdG9yQm9vbFJlZmVyZW5jZVR5cGVzKSB7CisgIHN0ZDo6dmVj
dG9yPGJvb2w+IHY7CisgIHYucHVzaF9iYWNrKHRydWUpOworICB2LnB1c2hfYmFjayhmYWxzZSk7
CisgIHN0ZDo6dmVjdG9yPGJvb2w+IGNvbnN0JiBjdiA9IHY7CisgIC8vIFRlc3QgdGhhdCB2ZWN0
b3I8Ym9vbD46OnJlZmVyZW5jZSBhbmQgdmVjdG9yPGJvb2w+Ojpjb25zdF9yZWZlcmVuY2UKKyAg
Ly8gYXJlIGhhbmRsZWQgYXMgaWYgdGhlIHdlcmUgcmVhbGx5IGJvb2wgdHlwZXMgYW5kIG5vdCB0
aGUgcHJveHkgdHlwZXMKKyAgLy8gdGhleSByZWFsbHkgYXJlLgorICBzdGQ6OnN0cmluZyByZXN1
bHQgPSBhYnNsOjpTdHJDYXQodlswXSwgdlsxXSwgY3ZbMF0sIGN2WzFdKTsgLy8gTk9MSU5UCisg
IEVYUEVDVF9FUShyZXN1bHQsICIxMDEwIik7Cit9CisKKy8vIFBhc3NpbmcgbnVsbHB0ciB0byBt
ZW1jcHkgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB0aGlzIHRlc3QKKy8vIHByb3ZpZGVzIGNv
dmVyYWdlIG9mIGNvZGVwYXRocyB0aGF0IGhhbmRsZSBlbXB0eSBzdHJpbmdzIHdpdGggbnVsbHB0
cnMuCitURVNUKFN0ckNhdCwgQXZvaWRzTWVtY3B5V2l0aE51bGxwdHIpIHsKKyAgRVhQRUNUX0VR
KGFic2w6OlN0ckNhdCg0MiwgYWJzbDo6c3RyaW5nX3ZpZXd7fSksICI0MiIpOworCisgIC8vIENv
dmVyIENhdFBpZWNlcyBjb2RlLgorICBFWFBFQ1RfRVEoYWJzbDo6U3RyQ2F0KDEsIDIsIDMsIDQs
IDUsIGFic2w6OnN0cmluZ192aWV3e30pLCAiMTIzNDUiKTsKKworICAvLyBDb3ZlciBBcHBlbmRQ
aWVjZXMuCisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgYWJzbDo6U3RyQXBwZW5kKCZyZXN1bHQs
IDEsIDIsIDMsIDQsIDUsIGFic2w6OnN0cmluZ192aWV3e30pOworICBFWFBFQ1RfRVEocmVzdWx0
LCAiMTIzNDUiKTsKK30KKwogI2lmZGVmIEdURVNUX0hBU19ERUFUSF9URVNUCiBURVNUKFN0ckFw
cGVuZCwgRGVhdGgpIHsKICAgc3RkOjpzdHJpbmcgcyA9ICJzZWxmIjsKQEAgLTQyNyw3ICs0NDgs
NyBAQCB2b2lkIENoZWNrSGV4KEludFR5cGUgdiwgY29uc3QgY2hhciogbm9wYWRfZm9ybWF0LCBj
b25zdCBjaGFyKiB6ZXJvcGFkX2Zvcm1hdCwKICAgc25wcmludGYoZXhwZWN0ZWQsIHNpemVvZihl
eHBlY3RlZCksIG5vcGFkX2Zvcm1hdCwgdik7CiAgIEVYUEVDVF9FUShleHBlY3RlZCwgYWN0dWFs
KSA8PCAiIGRlY2ltYWwgdmFsdWUgIiA8PCB2OwogCi0gIGZvciAoaW50IHNwZWMgPSBhYnNsOjpr
WmVyb1BhZDI7IHNwZWMgPD0gYWJzbDo6a1plcm9QYWQxNjsgKytzcGVjKSB7CisgIGZvciAoaW50
IHNwZWMgPSBhYnNsOjprWmVyb1BhZDI7IHNwZWMgPD0gYWJzbDo6a1plcm9QYWQyMDsgKytzcGVj
KSB7CiAgICAgc3RkOjpzdHJpbmcgYWN0dWFsID0KICAgICAgICAgYWJzbDo6U3RyQ2F0KGFic2w6
OkhleCh2LCBzdGF0aWNfY2FzdDxhYnNsOjpQYWRTcGVjPihzcGVjKSkpOwogICAgIHNucHJpbnRm
KGV4cGVjdGVkLCBzaXplb2YoZXhwZWN0ZWQpLCB6ZXJvcGFkX2Zvcm1hdCwKQEAgLTQzNSw3ICs0
NTYsNyBAQCB2b2lkIENoZWNrSGV4KEludFR5cGUgdiwgY29uc3QgY2hhciogbm9wYWRfZm9ybWF0
LCBjb25zdCBjaGFyKiB6ZXJvcGFkX2Zvcm1hdCwKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIGFj
dHVhbCkgPDwgIiBkZWNpbWFsIHZhbHVlICIgPDwgdjsKICAgfQogCi0gIGZvciAoaW50IHNwZWMg
PSBhYnNsOjprU3BhY2VQYWQyOyBzcGVjIDw9IGFic2w6OmtTcGFjZVBhZDE2OyArK3NwZWMpIHsK
KyAgZm9yIChpbnQgc3BlYyA9IGFic2w6OmtTcGFjZVBhZDI7IHNwZWMgPD0gYWJzbDo6a1NwYWNl
UGFkMjA7ICsrc3BlYykgewogICAgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9CiAgICAgICAgIGFic2w6
OlN0ckNhdChhYnNsOjpIZXgodiwgc3RhdGljX2Nhc3Q8YWJzbDo6UGFkU3BlYz4oc3BlYykpKTsK
ICAgICBzbnByaW50ZihleHBlY3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSwgc3BhY2VwYWRfZm9ybWF0
LApAQCAtNDUzLDcgKzQ3NCw3IEBAIHZvaWQgQ2hlY2tEZWMoSW50VHlwZSB2LCBjb25zdCBjaGFy
KiBub3BhZF9mb3JtYXQsIGNvbnN0IGNoYXIqIHplcm9wYWRfZm9ybWF0LAogICBzbnByaW50Zihl
eHBlY3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSwgbm9wYWRfZm9ybWF0LCB2KTsKICAgRVhQRUNUX0VR
KGV4cGVjdGVkLCBhY3R1YWwpIDw8ICIgZGVjaW1hbCB2YWx1ZSAiIDw8IHY7CiAKLSAgZm9yIChp
bnQgc3BlYyA9IGFic2w6OmtaZXJvUGFkMjsgc3BlYyA8PSBhYnNsOjprWmVyb1BhZDE2OyArK3Nw
ZWMpIHsKKyAgZm9yIChpbnQgc3BlYyA9IGFic2w6OmtaZXJvUGFkMjsgc3BlYyA8PSBhYnNsOjpr
WmVyb1BhZDIwOyArK3NwZWMpIHsKICAgICBzdGQ6OnN0cmluZyBhY3R1YWwgPQogICAgICAgICBh
YnNsOjpTdHJDYXQoYWJzbDo6RGVjKHYsIHN0YXRpY19jYXN0PGFic2w6OlBhZFNwZWM+KHNwZWMp
KSk7CiAgICAgc25wcmludGYoZXhwZWN0ZWQsIHNpemVvZihleHBlY3RlZCksIHplcm9wYWRfZm9y
bWF0LApAQCAtNDYzLDcgKzQ4NCw3IEBAIHZvaWQgQ2hlY2tEZWMoSW50VHlwZSB2LCBjb25zdCBj
aGFyKiBub3BhZF9mb3JtYXQsIGNvbnN0IGNoYXIqIHplcm9wYWRfZm9ybWF0LAogICAgICAgICA8
PCAiJyBkaWdpdHMgIiA8PCAoc3BlYyAtIGFic2w6OmtaZXJvUGFkMiArIDIpOwogICB9CiAKLSAg
Zm9yIChpbnQgc3BlYyA9IGFic2w6OmtTcGFjZVBhZDI7IHNwZWMgPD0gYWJzbDo6a1NwYWNlUGFk
MTY7ICsrc3BlYykgeworICBmb3IgKGludCBzcGVjID0gYWJzbDo6a1NwYWNlUGFkMjsgc3BlYyA8
PSBhYnNsOjprU3BhY2VQYWQyMDsgKytzcGVjKSB7CiAgICAgc3RkOjpzdHJpbmcgYWN0dWFsID0K
ICAgICAgICAgYWJzbDo6U3RyQ2F0KGFic2w6OkRlYyh2LCBzdGF0aWNfY2FzdDxhYnNsOjpQYWRT
cGVjPihzcGVjKSkpOwogICAgIHNucHJpbnRmKGV4cGVjdGVkLCBzaXplb2YoZXhwZWN0ZWQpLCBz
cGFjZXBhZF9mb3JtYXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oCmluZGV4IDJkMDc3MjVkZTIxZmNmNzkwNjk1MGYw
MmQyMDYxNWI1YWQxMDk4YWQuLjYwN2UyYmNhYWUxNjNjZWY1YTY3ZTRhMzgxNjFlZTJjMDMxN2Q3
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3Mvc3RyX2Zvcm1hdC5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC0yMCwxMSArMjAsMTMgQEAKIC8vIFRoZSBgc3RyX2Zvcm1hdGAgbGlicmFyeSBpcyBh
IHR5cGVzYWZlIHJlcGxhY2VtZW50IGZvciB0aGUgZmFtaWx5IG9mCiAvLyBgcHJpbnRmKClgIHN0
cmluZyBmb3JtYXR0aW5nIHJvdXRpbmVzIHdpdGhpbiB0aGUgYDxjc3RkaW8+YCBzdGFuZGFyZCBs
aWJyYXJ5CiAvLyBoZWFkZXIuIExpa2UgdGhlIGBwcmludGZgIGZhbWlseSwgdGhlIGBzdHJfZm9y
bWF0YCB1c2VzIGEgImZvcm1hdCBzdHJpbmciIHRvCi0vLyBwZXJmb3JtIGFyZ3VtZW50IHN1YnN0
aXR1dGlvbnMgYmFzZWQgb24gdHlwZXMuCisvLyBwZXJmb3JtIGFyZ3VtZW50IHN1YnN0aXR1dGlv
bnMgYmFzZWQgb24gdHlwZXMuIFNlZSB0aGUgYEZvcm1hdFNwZWNgIHNlY3Rpb24KKy8vIGJlbG93
IGZvciBmb3JtYXQgc3RyaW5nIGRvY3VtZW50YXRpb24uCiAvLwogLy8gRXhhbXBsZToKIC8vCi0v
LyAgIHN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KCIlcyAlcyBZb3UgaGF2ZSAkJWQhIiwgIkhl
bGxvIiwgbmFtZSwgZG9sbGFycyk7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3Jt
YXQoCisvLyAgICAgICAgICAgICAgICAgICAgICAiJXMgJXMgWW91IGhhdmUgJCVkISIsICJIZWxs
byIsIG5hbWUsIGRvbGxhcnMpOwogLy8KIC8vIFRoZSBsaWJyYXJ5IGNvbnNpc3RzIG9mIHRoZSBm
b2xsb3dpbmcgYmFzaWMgdXRpbGl0aWVzOgogLy8KQEAgLTQ5LDcgKzUxLDcgQEAKIC8vICAgKiBB
IGBQYXJzZWRGb3JtYXRgIGluc3RhbmNlLCB3aGljaCBlbmNhcHN1bGF0ZXMgYSBzcGVjaWZpYywg
cHJlLWNvbXBpbGVkCiAvLyAgICAgZm9ybWF0IHN0cmluZyBmb3IgYSBzcGVjaWZpYyBzZXQgb2Yg
dHlwZShzKSwgYW5kIHdoaWNoIGNhbiBiZSBwYXNzZWQKIC8vICAgICBiZXR3ZWVuIEFQSSBib3Vu
ZGFyaWVzLiAoVGhlIGBGb3JtYXRTcGVjYCB0eXBlIHNob3VsZCBub3QgYmUgdXNlZAotLy8gICAg
IGRpcmVjdGx5LikKKy8vICAgICBkaXJlY3RseSBleGNlcHQgYXMgYW4gYXJndW1lbnQgdHlwZSBm
b3Igd3JhcHBlciBmdW5jdGlvbnMuKQogLy8KIC8vIFRoZSBgc3RyX2Zvcm1hdGAgbGlicmFyeSBw
cm92aWRlcyB0aGUgYWJpbGl0eSB0byBvdXRwdXQgaXRzIGZvcm1hdCBzdHJpbmdzIHRvCiAvLyBh
cmJpdHJhcnkgc2luayB0eXBlczoKQEAgLTY2LDYgKzY4LDcgQEAKIC8vIEluIGFkZGl0aW9uLCB0
aGUgYHN0cl9mb3JtYXRgIGxpYnJhcnkgcHJvdmlkZXMgZXh0ZW5zaW9uIHBvaW50cyBmb3IKIC8v
IGF1Z21lbnRpbmcgZm9ybWF0dGluZyB0byBuZXcgdHlwZXMuIFRoZXNlIGV4dGVuc2lvbnMgYXJl
IGZ1bGx5IGRvY3VtZW50ZWQKIC8vIHdpdGhpbiB0aGUgYHN0cl9mb3JtYXRfZXh0ZW5zaW9uLmhg
IGhlYWRlciBmaWxlLgorCiAjaWZuZGVmIEFCU0xfU1RSSU5HU19TVFJfRk9STUFUX0hfCiAjZGVm
aW5lIEFCU0xfU1RSSU5HU19TVFJfRk9STUFUX0hfCiAKQEAgLTg5LDcgKzkyLDcgQEAgbmFtZXNw
YWNlIGFic2wgewogLy8gRXhhbXBsZToKIC8vCiAvLyAgIGFic2w6OlVudHlwZWRGb3JtYXRTcGVj
IGZvcm1hdCgiJWQiKTsKLS8vICAgc3RyaW5nIG91dDsKKy8vICAgc3RkOjpzdHJpbmcgb3V0Owog
Ly8gICBDSEVDSyhhYnNsOjpGb3JtYXRVbnR5cGVkKCZvdXQsIGZvcm1hdCwge2Fic2w6OkZvcm1h
dEFyZygxKX0pKTsKIGNsYXNzIFVudHlwZWRGb3JtYXRTcGVjIHsKICBwdWJsaWM6CkBAIC0xMzUs
OCArMTM4LDggQEAgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6U3RyZWFtZWRXcmFwcGVyPFQ+IEZvcm1h
dFN0cmVhbWVkKGNvbnN0IFQmIHYpIHsKIC8vIEV4YW1wbGU6CiAvLwogLy8gICBpbnQgbiA9IDA7
Ci0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KCIlcyVkJW4iLCAiaGVsbG8iLCAxMjMs
Ci0vLyAgICAgICAgICAgICAgICAgICBhYnNsOjpGb3JtYXRDb3VudENhcHR1cmUoJm4pKTsKKy8v
ICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckZvcm1hdCgiJXMlZCVuIiwgImhlbGxvIiwgMTIz
LAorLy8gICAgICAgICAgICAgICAgICAgICAgIGFic2w6OkZvcm1hdENvdW50Q2FwdHVyZSgmbikp
OwogLy8gICBFWFBFQ1RfRVEoOCwgbik7CiBjbGFzcyBGb3JtYXRDb3VudENhcHR1cmUgewogIHB1
YmxpYzoKQEAgLTE1NiwxMCArMTU5LDE1IEBAIGNsYXNzIEZvcm1hdENvdW50Q2FwdHVyZSB7CiAv
LyBGb3JtYXRTcGVjCiAvLwogLy8gVGhlIGBGb3JtYXRTcGVjYCB0eXBlIGRlZmluZXMgdGhlIG1h
a2V1cCBvZiBhIGZvcm1hdCBzdHJpbmcgd2l0aGluIHRoZQotLy8gYHN0cl9mb3JtYXRgIGxpYnJh
cnkuIFlvdSBzaG91bGQgbm90IG5lZWQgdG8gdXNlIG9yIG1hbmlwdWxhdGUgdGhpcyB0eXBlCi0v
LyBkaXJlY3RseS4gQSBgRm9ybWF0U3BlY2AgaXMgYSB2YXJpYWRpYyBjbGFzcyB0ZW1wbGF0ZSB0
aGF0IGlzIGV2YWx1YXRlZCBhdAotLy8gY29tcGlsZS10aW1lLCBhY2NvcmRpbmcgdG8gdGhlIGZv
cm1hdCBzdHJpbmcgYW5kIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWQKLS8vIHRvIGl0LgorLy8g
YHN0cl9mb3JtYXRgIGxpYnJhcnkuIEl0IGlzIGEgdmFyaWFkaWMgY2xhc3MgdGVtcGxhdGUgdGhh
dCBpcyBldmFsdWF0ZWQgYXQKKy8vIGNvbXBpbGUtdGltZSwgYWNjb3JkaW5nIHRvIHRoZSBmb3Jt
YXQgc3RyaW5nIGFuZCBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkIHRvCisvLyBpdC4KKy8vCisv
LyBZb3Ugc2hvdWxkIG5vdCBuZWVkIHRvIG1hbmlwdWxhdGUgdGhpcyB0eXBlIGRpcmVjdGx5LiBZ
b3Ugc2hvdWxkIG9ubHkgbmFtZSBpdAorLy8gaWYgeW91IGFyZSB3cml0aW5nIHdyYXBwZXIgZnVu
Y3Rpb25zIHdoaWNoIGFjY2VwdCBmb3JtYXQgYXJndW1lbnRzIHRoYXQgd2lsbAorLy8gYmUgcHJv
dmlkZWQgdW5tb2RpZmllZCB0byBmdW5jdGlvbnMgaW4gdGhpcyBsaWJyYXJ5LiBTdWNoIGEgd3Jh
cHBlciBmdW5jdGlvbgorLy8gbWlnaHQgYmUgYSBjbGFzcyBtZXRob2QgdGhhdCBwcm92aWRlcyBm
b3JtYXQgYXJndW1lbnRzIGFuZC9vciBpbnRlcm5hbGx5IHVzZXMKKy8vIHRoZSByZXN1bHQgb2Yg
Zm9ybWF0dGluZy4KIC8vCiAvLyBGb3IgYSBgRm9ybWF0U3BlY2AgdG8gYmUgdmFsaWQgYXQgY29t
cGlsZS10aW1lLCBpdCBtdXN0IGJlIHByb3ZpZGVkIGFzCiAvLyBlaXRoZXI6CkBAIC0xODYsNyAr
MTk0LDcgQEAgY2xhc3MgRm9ybWF0Q291bnRDYXB0dXJlIHsKIC8vIEEgZm9ybWF0IHN0cmluZyBn
ZW5lcmFsbHkgZm9sbG93cyB0aGUgUE9TSVggc3ludGF4IGFzIHVzZWQgd2l0aGluIHRoZSBQT1NJ
WAogLy8gYHByaW50ZmAgc3BlY2lmaWNhdGlvbi4KIC8vCi0vLyAoU2VlIGh0dHA6Ly9wdWJzLm9w
ZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9wcmludGYuaHRtbC4p
CisvLyAoU2VlIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5
L2Z1bmN0aW9ucy9mcHJpbnRmLmh0bWwuKQogLy8KIC8vIEluIHNwZWNpZmljLCB0aGUgYEZvcm1h
dFNwZWNgIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgdHlwZSBzcGVjaWZpZXJzOgogLy8gICAqIGBj
YCBmb3IgY2hhcmFjdGVycwpAQCAtMjA1LDYgKzIxMywxMSBAQCBjbGFzcyBGb3JtYXRDb3VudENh
cHR1cmUgewogLy8gICAgIHdyaXR0ZW4gdG8gdGhpcyBwb2ludC4gVGhlIHJlc3VsdGluZyB2YWx1
ZSBtdXN0IGJlIGNhcHR1cmVkIHdpdGhpbiBhbgogLy8gICAgIGBhYnNsOjpGb3JtYXRDb3VudENh
cHR1cmVgIHR5cGUuCiAvLworLy8gSW1wbGVtZW50YXRpb24tZGVmaW5lZCBiZWhhdmlvcjoKKy8v
ICAgKiBBIG51bGwgcG9pbnRlciBwcm92aWRlZCB0byAiJXMiIG9yICIlcCIgaXMgb3V0cHV0IGFz
ICIobmlsKSIuCisvLyAgICogQSBub24tbnVsbCBwb2ludGVyIHByb3ZpZGVkIHRvICIlcCIgaXMg
b3V0cHV0IGluIGhleCBhcyBpZiBieSAlI3ggb3IKKy8vICAgICAlI2x4LgorLy8KIC8vIE5PVEU6
IGBvYCwgYHhcWGAgYW5kIGB1YCB3aWxsIGNvbnZlcnQgc2lnbmVkIHZhbHVlcyB0byB0aGVpciB1
bnNpZ25lZAogLy8gY291bnRlcnBhcnQgYmVmb3JlIGZvcm1hdHRpbmcuCiAvLwpAQCAtMjIwLDEw
ICsyMzMsMTAgQEAgY2xhc3MgRm9ybWF0Q291bnRDYXB0dXJlIHsKIC8vICAgICAiJWUiLCAuMDEg
ICAgICAgICAgICAgICAgLT4gIjEuMDAwMDBlLTIiCiAvLyAgICAgIiVhIiwgLTMuMCAgICAgICAg
ICAgICAgIC0+ICItMHgxLjhwKzEiCiAvLyAgICAgIiVnIiwgLjAxICAgICAgICAgICAgICAgIC0+
ICIxZS0yIgotLy8gICAgICIlcCIsICppbnQgICAgICAgICAgICAgICAtPiAiMHg3ZmZkZWI2YWQy
YTQiCisvLyAgICAgIiVwIiwgKHZvaWQqKSZ2YWx1ZSAgICAgIC0+ICIweDdmZmRlYjZhZDJhNCIK
IC8vCiAvLyAgICAgaW50IG4gPSAwOwotLy8gICAgIHN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0
KAorLy8gICAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoCiAvLyAgICAgICAgICIl
cyVkJW4iLCAiaGVsbG8iLCAxMjMsIGFic2w6OkZvcm1hdENvdW50Q2FwdHVyZSgmbikpOwogLy8g
ICAgIEVYUEVDVF9FUSg4LCBuKTsKIC8vCkBAIC0yOTAsMTQgKzMwMywxNCBAQCB1c2luZyBQYXJz
ZWRGb3JtYXQgPSBzdHJfZm9ybWF0X2ludGVybmFsOjpFeHRlbmRlZFBhcnNlZEZvcm1hdDwKIC8v
CiAvLyBFeGFtcGxlOgogLy8KLS8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoCisvLyAg
IHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoCiAvLyAgICAgICAiV2VsY29tZSB0byAl
cywgTnVtYmVyICVkISIsICJUaGUgVmlsbGFnZSIsIDYpOwogLy8gICBFWFBFQ1RfRVEoIldlbGNv
bWUgdG8gVGhlIFZpbGxhZ2UsIE51bWJlciA2ISIsIHMpOwogLy8KIC8vIFJldHVybnMgYW4gZW1w
dHkgc3RyaW5nIGluIGNhc2Ugb2YgZXJyb3IuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4K
IEFCU0xfTVVTVF9VU0VfUkVTVUxUIHN0ZDo6c3RyaW5nIFN0ckZvcm1hdChjb25zdCBGb3JtYXRT
cGVjPEFyZ3MuLi4+JiBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBBcmdzJi4uLiBhcmdzKSB7CiAgIHJldHVybiBzdHJfZm9ybWF0
X2ludGVybmFsOjpGb3JtYXRQYWNrKAogICAgICAgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6VW50eXBl
ZEZvcm1hdFNwZWNJbXBsOjpFeHRyYWN0KGZvcm1hdCksCiAgICAgICB7c3RyX2Zvcm1hdF9pbnRl
cm5hbDo6Rm9ybWF0QXJnSW1wbChhcmdzKS4uLn0pOwpAQCAtMzExLDExICszMjQsMTIgQEAgQUJT
TF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3RyRm9ybWF0KGNvbnN0IEZvcm1hdFNwZWM8
QXJncy4uLj4mIGZvcm1hdCwKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgc3RyaW5nIG9yaWco
IkZvciBleGFtcGxlIFBJIGlzIGFwcHJveGltYXRlbHkgIik7CisvLyAgIHN0ZDo6c3RyaW5nIG9y
aWcoIkZvciBleGFtcGxlIFBJIGlzIGFwcHJveGltYXRlbHkgIik7CiAvLyAgIHN0ZDo6Y291dCA8
PCBTdHJBcHBlbmRGb3JtYXQoJm9yaWcsICIlMTIuNmYiLCAzLjE0KTsKIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgotc3RkOjpzdHJpbmcmIFN0ckFwcGVuZEZvcm1hdChzdGQ6OnN0cmluZyog
ZHN0LCBjb25zdCBGb3JtYXRTcGVjPEFyZ3MuLi4+JiBmb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBBcmdzJi4uLiBhcmdzKSB7CitzdGQ6OnN0cmluZyYgU3RyQXBwZW5kRm9y
bWF0KHN0ZDo6c3RyaW5nKiBkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEZvcm1hdFNwZWM8QXJncy4uLj4mIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQXJncyYuLi4gYXJncykgewogICByZXR1cm4gc3RyX2Zvcm1hdF9pbnRlcm5hbDo6
QXBwZW5kUGFjaygKICAgICAgIGRzdCwgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6VW50eXBlZEZvcm1h
dFNwZWNJbXBsOjpFeHRyYWN0KGZvcm1hdCksCiAgICAgICB7c3RyX2Zvcm1hdF9pbnRlcm5hbDo6
Rm9ybWF0QXJnSW1wbChhcmdzKS4uLn0pOwpAQCAtNDM0LDcgKzQ0OCw4IEBAIGNsYXNzIEZvcm1h
dFJhd1NpbmsgewogLy8gYGFic2w6OkZvcm1hdFJhd1NpbmtgIGludGVyZmFjZSksIHVzaW5nIGEg
Zm9ybWF0IHN0cmluZyBhbmQgemVybyBvciBtb3JlCiAvLyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4K
IC8vCi0vLyBCeSBkZWZhdWx0LCBgc3RyaW5nYCBhbmQgYHN0ZDo6b3N0cmVhbWAgYXJlIHN1cHBv
cnRlZCBhcyBkZXN0aW5hdGlvbiBvYmplY3RzLgorLy8gQnkgZGVmYXVsdCwgYHN0ZDo6c3RyaW5n
YCBhbmQgYHN0ZDo6b3N0cmVhbWAgYXJlIHN1cHBvcnRlZCBhcyBkZXN0aW5hdGlvbgorLy8gb2Jq
ZWN0cy4gSWYgYSBgc3RkOjpzdHJpbmdgIGlzIHVzZWQgdGhlIGZvcm1hdHRlZCBzdHJpbmcgaXMg
YXBwZW5kZWQgdG8gaXQuCiAvLwogLy8gYGFic2w6OkZvcm1hdCgpYCBpcyBhIGdlbmVyaWMgdmVy
c2lvbiBvZiBgYWJzbDo6U3RyRm9ybWF0KCksIGZvciBjdXN0b20KIC8vIHNpbmtzLiBUaGUgZm9y
bWF0IHN0cmluZywgbGlrZSBmb3JtYXQgc3RyaW5ncyBmb3IgYFN0ckZvcm1hdCgpYCwgaXMgY2hl
Y2tlZApAQCAtNDgzLDkgKzQ5OCwxMCBAQCB1c2luZyBGb3JtYXRBcmcgPSBzdHJfZm9ybWF0X2lu
dGVybmFsOjpGb3JtYXRBcmdJbXBsOwogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdGQ6Om9w
dGlvbmFsPHN0cmluZz4gRm9ybWF0RHluYW1pYyhjb25zdCBzdHJpbmcmIGluX2Zvcm1hdCwKLS8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yPHN0cmlu
Zz4mIGluX2FyZ3MpIHsKLS8vICAgICBzdHJpbmcgb3V0OworLy8gICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6c3RyaW5nPiBGb3JtYXREeW5hbWljKAorLy8gICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlu
X2Zvcm1hdCwKKy8vICAgICAgIGNvbnN0IHZlY3RvcjxzdGQ6OnN0cmluZz4mIGluX2FyZ3MpIHsK
Ky8vICAgICBzdGQ6OnN0cmluZyBvdXQ7CiAvLyAgICAgc3RkOjp2ZWN0b3I8YWJzbDo6Rm9ybWF0
QXJnPiBhcmdzOwogLy8gICAgIGZvciAoY29uc3QgYXV0byYgdiA6IGluX2FyZ3MpIHsKIC8vICAg
ICAgIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0ICd2JyBpcyBhIHJlZmVyZW5jZSB0byB0aGUgb2Jq
ZWN0cyBpbiBpbl9hcmdzLgpAQCAtNTA5LDQgKzUyNSw1IEBAIEFCU0xfTVVTVF9VU0VfUkVTVUxU
IGlubGluZSBib29sIEZvcm1hdFVudHlwZWQoCiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisK
ICNlbmRpZiAgLy8gQUJTTF9TVFJJTkdTX1NUUl9GT1JNQVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyX2Zvcm1hdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfZm9ybWF0X3Rl
c3QuY2MKaW5kZXggYWExNGUyMTE3MDlhYjczOTM3OTZhMzIwODMwYzc1NTkxNmFjYzg4My4uY2Zk
ODFiYjM0YmUzNzE1ZTMzNTJmZmE3ZDdmZGNlNDg1YzNiY2VmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfZm9ybWF0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfZm9ybWF0
X3Rlc3QuY2MKQEAgLTEzLDcgKzEzLDcgQEAgbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHsK
IHVzaW5nIHN0cl9mb3JtYXRfaW50ZXJuYWw6OkZvcm1hdEFyZ0ltcGw7CiAKLWNsYXNzIEZvcm1h
dEVudHJ5UG9pbnRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IH07Cit1c2luZyBGb3Jt
YXRFbnRyeVBvaW50VGVzdCA9IDo6dGVzdGluZzo6VGVzdDsKIAogVEVTVF9GKEZvcm1hdEVudHJ5
UG9pbnRUZXN0LCBGb3JtYXQpIHsKICAgc3RkOjpzdHJpbmcgc2luazsKQEAgLTMwLDggKzMwLDgg
QEAgVEVTVF9GKEZvcm1hdEVudHJ5UG9pbnRUZXN0LCBVbnR5cGVkRm9ybWF0KSB7CiAgICAgIiIs
CiAgICAgImEiLAogICAgICIlODBkIiwKLSNpZiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmlu
ZWQoX19BTkRST0lEX18pCi0gICAgLy8gTVNWQyBhbmQgQW5kcm9pZCBkb24ndCBzdXBwb3J0IHBv
c2l0aW9uYWwgc3ludGF4LgorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX0FO
RFJPSURfXykgJiYgIWRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCisgICAgLy8gTVNWQywgTmFD
TCBhbmQgQW5kcm9pZCBkb24ndCBzdXBwb3J0IHBvc2l0aW9uYWwgc3ludGF4LgogICAgICJjb21w
bGljYXRlZCBtdWx0aXBhcnQgJSUgJTEkZCBmb3JtYXQgJTEkMDk5OWQiLAogI2VuZGlmICAvLyBf
TVNDX1ZFUgogICB9OwpAQCAtMTUzLDE3ICsxNTMsMjAgQEAgVEVTVF9GKEZvcm1hdEVudHJ5UG9p
bnRUZXN0LCBTdHJlYW0pIHsKICAgICAiIiwKICAgICAiYSIsCiAgICAgIiU4MGQiLAotI2lmICFk
ZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKLSAgICAvLyBNU1ZDIGRv
ZXNuJ3Qgc3VwcG9ydCBwb3NpdGlvbmFsIHN5bnRheC4KKyAgICAiJWQgJXUgJWMgJXMgJWYgJWci
LAorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykgJiYgIWRl
ZmluZWQoX19uYXRpdmVfY2xpZW50X18pCisgICAgLy8gTVNWQywgTmFDTCBhbmQgQW5kcm9pZCBk
b24ndCBzdXBwb3J0IHBvc2l0aW9uYWwgc3ludGF4LgogICAgICJjb21wbGljYXRlZCBtdWx0aXBh
cnQgJSUgJTEkZCBmb3JtYXQgJTEkMDgwZCIsCiAjZW5kaWYgIC8vIF9NU0NfVkVSCiAgIH07CiAg
IHN0ZDo6c3RyaW5nIGJ1Zig0MDk2LCAnXDAnKTsKICAgZm9yIChjb25zdCBhdXRvJiBmbXQgOiBm
b3JtYXRzKSB7Ci0gICAgY29uc3QgYXV0byBwYXJzZWQgPSBQYXJzZWRGb3JtYXQ8J2QnPjo6TmV3
QWxsb3dJZ25vcmVkKGZtdCk7CisgICAgY29uc3QgYXV0byBwYXJzZWQgPQorICAgICAgICBQYXJz
ZWRGb3JtYXQ8J2QnLCAndScsICdjJywgJ3MnLCAnZicsICdnJz46Ok5ld0FsbG93SWdub3JlZChm
bXQpOwogICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBvc3M7Ci0gICAgb3NzIDw8IFN0cmVhbUZvcm1h
dCgqcGFyc2VkLCAxMjMpOwotICAgIGludCBmbXRfcmVzdWx0ID0gc25wcmludGYoJipidWYuYmVn
aW4oKSwgYnVmLnNpemUoKSwgZm10LmNfc3RyKCksIDEyMyk7CisgICAgb3NzIDw8IFN0cmVhbUZv
cm1hdCgqcGFyc2VkLCAxMjMsIDMsIDQ5LCAibXVsdGlzdHJlYW1pbmchISEiLCAxLjAxLCAxLjAx
KTsKKyAgICBpbnQgZm10X3Jlc3VsdCA9IHNucHJpbnRmKCYqYnVmLmJlZ2luKCksIGJ1Zi5zaXpl
KCksIGZtdC5jX3N0cigpLCAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEy
MywgMywgNDksICJtdWx0aXN0cmVhbWluZyEhISIsIDEuMDEsIDEuMDEpOwogICAgIEFTU0VSVF9U
UlVFKG9zcykgPDwgZm10OwogICAgIEFTU0VSVF9UUlVFKGZtdF9yZXN1bHQgPj0gMCAmJiBzdGF0
aWNfY2FzdDxzaXplX3Q+KGZtdF9yZXN1bHQpIDwgYnVmLnNpemUoKSkKICAgICAgICAgPDwgZm10
X3Jlc3VsdDsKQEAgLTI0Miw2ICsyNDUsNyBAQCBjbGFzcyBUZW1wRmlsZSB7CiAgIHN0ZDo6c3Ry
aW5nIFJlYWRGaWxlKCkgewogICAgIHN0ZDo6ZnNlZWsoZmlsZV8sIDAsIFNFRUtfRU5EKTsKICAg
ICBpbnQgc2l6ZSA9IHN0ZDo6ZnRlbGwoZmlsZV8pOworICAgIEVYUEVDVF9HVChzaXplLCAwKTsK
ICAgICBzdGQ6OnJld2luZChmaWxlXyk7CiAgICAgc3RkOjpzdHJpbmcgc3RyKDIgKiBzaXplLCAn
ICcpOwogICAgIGludCByZWFkX2J5dGVzID0gc3RkOjpmcmVhZCgmc3RyWzBdLCAxLCBzdHIuc2l6
ZSgpLCBmaWxlXyk7CkBAIC0yNzAsNyArMjc0LDcgQEAgVEVTVF9GKEZvcm1hdEVudHJ5UG9pbnRU
ZXN0LCBGUHJpbnRGRXJyb3IpIHsKICAgRVhQRUNUX0VRKGVycm5vLCBFQkFERik7CiB9CiAKLSNp
ZiBfX0dOVUNfXworI2lmZGVmIF9fR0xJQkNfXwogVEVTVF9GKEZvcm1hdEVudHJ5UG9pbnRUZXN0
LCBGcHJpbnRmVG9vTGFyZ2UpIHsKICAgc3RkOjpGSUxFKiBmID0gc3RkOjpmb3BlbigiL2Rldi9u
dWxsIiwgInciKTsKICAgaW50IHdpZHRoID0gMjAwMDAwMDAwMDsKQEAgLTI5Nyw3ICszMDEsNyBA
QCBURVNUX0YoRm9ybWF0RW50cnlQb2ludFRlc3QsIFByaW50RikgewogICBFWFBFQ1RfRVEocmVz
dWx0LCAzMCk7CiAgIEVYUEVDVF9FUSh0bXAuUmVhZEZpbGUoKSwgIlNUUklORzogQUJDIE5VTUJF
UjogLTAwMDAwMDAxOSIpOwogfQotI2VuZGlmICAvLyBfX0dOVUNfXworI2VuZGlmICAvLyBfX0dM
SUJDX18KIAogVEVTVF9GKEZvcm1hdEVudHJ5UG9pbnRUZXN0LCBTTlByaW50RikgewogICBjaGFy
IGJ1ZmZlclsxNl07CkBAIC0zNDAsNyArMzQ0LDcgQEAgVEVTVChTdHJGb3JtYXQsIEJlaGF2ZXNB
c0RvY3VtZW50ZWQpIHsKICAgRVhQRUNUX0VRKFN0ckZvcm1hdCgiJWMiLCBpbnR7J2EnfSksICJh
Iik7CiAgIEVYUEVDVF9FUShTdHJGb3JtYXQoIiVjIiwgbG9uZ3snYSd9KSwgImEiKTsgIC8vIE5P
TElOVAogICBFWFBFQ1RfRVEoU3RyRm9ybWF0KCIlYyIsIHVpbnQ2NF90eydhJ30pLCAiYSIpOwot
ICAvLyAgICAgInMiIC0gc3RkOjpzdHJpbmcgICAgICAgICAgICAgICAgICBFZzogIkMiIC0+ICJD
Iiwgc3RkOjpzdHJpbmcoIkMrKyIpIC0+ICJDKysiCisgIC8vICAgICAicyIgLSBzdGQ6OnN0cmlu
ZyAgICAgICBFZzogIkMiIC0+ICJDIiwgc3RkOjpzdHJpbmcoIkMrKyIpIC0+ICJDKysiCiAgIC8v
ICAgICAgICAgICBGb3JtYXRzIHN0ZDo6c3RyaW5nLCBjaGFyKiwgc3RyaW5nX3ZpZXcsIGFuZCBD
b3JkLgogICBFWFBFQ1RfRVEoU3RyRm9ybWF0KCIlcyIsICJDIiksICJDIik7CiAgIEVYUEVDVF9F
UShTdHJGb3JtYXQoIiVzIiwgc3RkOjpzdHJpbmcoIkMrKyIpKSwgIkMrKyIpOwpAQCAtNDU3LDcg
KzQ2MSw3IEBAIHN0ZDo6c3RyaW5nIFN1bW1hcml6ZVBhcnNlZEZvcm1hdChjb25zdCBQYXJzZWRG
b3JtYXRCYXNlJiBwYykgewogICByZXR1cm4gb3V0OwogfQogCi1jbGFzcyBQYXJzZWRGb3JtYXRU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qge307Cit1c2luZyBQYXJzZWRGb3JtYXRUZXN0ID0g
Ojp0ZXN0aW5nOjpUZXN0OwogCiBURVNUX0YoUGFyc2VkRm9ybWF0VGVzdCwgU2ltcGxlQ2hlY2tl
ZCkgewogICBFWFBFQ1RfRVEoIltBQkNde2Q6MSRkfVtERUZdIiwKQEAgLTU5OSw0MSArNjAzLDQ1
IEBAIFRFU1RfRihQYXJzZWRGb3JtYXRUZXN0LCBSZWdyZXNzaW9uTWl4UG9zaXRpb25hbCkgewog
ICBFWFBFQ1RfRkFMU0UoKEV4dGVuZGVkUGFyc2VkRm9ybWF0PENvbnY6OmQsIENvbnY6Om8+OjpO
ZXcoIiUxJGQgJW8iKSkpOwogfQogCit1c2luZyBGb3JtYXRXcmFwcGVyVGVzdCA9IDo6dGVzdGlu
Zzo6VGVzdDsKKworLy8gUGxhaW4gd3JhcHBlciBmb3IgU3RyRm9ybWF0LgordGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+CitzdGQ6OnN0cmluZyBXcmFwcGVkRm9ybWF0KGNvbnN0IGFic2w6OkZv
cm1hdFNwZWM8QXJncy4uLj4mIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQXJncyYuLi4gYXJncykgeworICByZXR1cm4gU3RyRm9ybWF0KGZvcm1hdCwgYXJncy4uLik7
Cit9CisKK1RFU1RfRihGb3JtYXRXcmFwcGVyVGVzdCwgQ29uc3RleHByU3RyaW5nRm9ybWF0KSB7
CisgIEVYUEVDVF9FUShXcmFwcGVkRm9ybWF0KCIlcyB0aGVyZSIsICJoZWxsbyIpLCAiaGVsbG8g
dGhlcmUiKTsKK30KKworVEVTVF9GKEZvcm1hdFdyYXBwZXJUZXN0LCBQYXJzZWRGb3JtYXQpIHsK
KyAgUGFyc2VkRm9ybWF0PCdzJz4gZm9ybWF0KCIlcyB0aGVyZSIpOworICBFWFBFQ1RfRVEoV3Jh
cHBlZEZvcm1hdChmb3JtYXQsICJoZWxsbyIpLCAiaGVsbG8gdGhlcmUiKTsKK30KKwogfSAgLy8g
bmFtZXNwYWNlCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCiAvLyBTb21lIGNvZGVnZW4gdGh1bmtz
IHRoYXQgd2UgY2FuIHVzZSB0byBlYXNpbHkgZHVtcCB0aGUgZ2VuZXJhdGVkIGFzc2VtYmx5IGZv
cgogLy8gZGlmZmVyZW50IFN0ckZvcm1hdCBjYWxscy4KIAotaW5saW5lIHN0ZDo6c3RyaW5nIENv
ZGVnZW5BYnNsU3RyRm9ybWF0SW50KGludCBpKSB7CitzdGQ6OnN0cmluZyBDb2RlZ2VuQWJzbFN0
ckZvcm1hdEludChpbnQgaSkgeyAgLy8gTk9MSU5UCiAgIHJldHVybiBhYnNsOjpTdHJGb3JtYXQo
IiVkIiwgaSk7CiB9CiAKLWlubGluZSBzdGQ6OnN0cmluZyBDb2RlZ2VuQWJzbFN0ckZvcm1hdElu
dFN0cmluZ0ludDY0KGludCBpLCBjb25zdCBzdGQ6OnN0cmluZyYgcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGk2NCkgeworc3RkOjpz
dHJpbmcgQ29kZWdlbkFic2xTdHJGb3JtYXRJbnRTdHJpbmdJbnQ2NChpbnQgaSwgY29uc3Qgc3Rk
OjpzdHJpbmcmIHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgaTY0KSB7ICAvLyBOT0xJTlQKICAgcmV0dXJuIGFic2w6OlN0ckZvcm1hdCgi
JWQgJXMgJWQiLCBpLCBzLCBpNjQpOwogfQogCi1pbmxpbmUgdm9pZCBDb2RlZ2VuQWJzbFN0ckFw
cGVuZEZvcm1hdEludChzdGQ6OnN0cmluZyogb3V0LCBpbnQgaSkgewordm9pZCBDb2RlZ2VuQWJz
bFN0ckFwcGVuZEZvcm1hdEludChzdGQ6OnN0cmluZyogb3V0LCBpbnQgaSkgeyAgLy8gTk9MSU5U
CiAgIGFic2w6OlN0ckFwcGVuZEZvcm1hdChvdXQsICIlZCIsIGkpOwogfQogCi1pbmxpbmUgdm9p
ZCBDb2RlZ2VuQWJzbFN0ckFwcGVuZEZvcm1hdEludFN0cmluZ0ludDY0KHN0ZDo6c3RyaW5nKiBv
dXQsIGludCBpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBpNjQpIHsKK3ZvaWQgQ29kZWdlbkFi
c2xTdHJBcHBlbmRGb3JtYXRJbnRTdHJpbmdJbnQ2NChzdGQ6OnN0cmluZyogb3V0LCBpbnQgaSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IGk2NCkgeyAgLy8gTk9MSU5UCiAgIGFic2w6OlN0ckFwcGVuZEZvcm1hdChvdXQs
ICIlZCAlcyAlZCIsIGksIHMsIGk2NCk7CiB9Ci0KLWF1dG8gYWJzbF9pbnRlcm5hbF9zdHJfZm9y
bWF0X2ZvcmNlX2NvZGVnZW5fZnVuY3MgPSBzdGQ6Om1ha2VfdHVwbGUoCi0gICAgQ29kZWdlbkFi
c2xTdHJGb3JtYXRJbnQsIENvZGVnZW5BYnNsU3RyRm9ybWF0SW50U3RyaW5nSW50NjQsCi0gICAg
Q29kZWdlbkFic2xTdHJBcHBlbmRGb3JtYXRJbnQsIENvZGVnZW5BYnNsU3RyQXBwZW5kRm9ybWF0
SW50U3RyaW5nSW50NjQpOwotCi1ib29sIGFic2xfaW50ZXJuYWxfc3RyX2Zvcm1hdF9mb3JjZV9j
b2RlZ2VuX2Fsd2F5c19mYWxzZTsKLS8vIEZvcmNlIHRoZSBjb21waWxlciB0byBnZW5lcmF0ZSB0
aGUgZnVuY3Rpb25zIGJ5IG1ha2luZyBpdCBsb29rIGxpa2Ugd2UKLS8vIGVzY2FwZSB0aGUgZnVu
Y3Rpb24gcG9pbnRlcnMuCi0vLyBJdCBjYW4ndCBzdGF0aWNhbGx5IGtub3cgdGhhdAotLy8gYWJz
bF9pbnRlcm5hbF9zdHJfZm9ybWF0X2ZvcmNlX2NvZGVnZW5fYWx3YXlzX2ZhbHNlIGlzIG5vdCBj
aGFuZ2VkIGJ5IHNvbWVvbmUKLS8vIGVsc2UuCi1ib29sIGFic2xfaW50ZXJuYWxfc3RyX2Zvcm1h
dF9mb3JjZV9jb2RlZ2VuID0KLSAgICBhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29k
ZWdlbl9hbHdheXNfZmFsc2UgJiYKLSAgICBwcmludGYoIiVwIiwgJmFic2xfaW50ZXJuYWxfc3Ry
X2Zvcm1hdF9mb3JjZV9jb2RlZ2VuX2Z1bmNzKSA9PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9zdHJfam9pbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfam9pbi5oCmluZGV4IGY5NjExYWQz
YjQ3ZDcyZDBkOTkyYmQyYmVmOTA3NWM4NjA4ZmQyNWUuLjQ3NzJmNWQxN2M4OTFlNTc5MWE4NDBh
ZWVjNjZjNzExNjcxMTgxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW4uaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTE4LDEzICsxOCwxMyBAQAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3Igam9pbmlu
ZyBhIHJhbmdlIG9mIGVsZW1lbnRzIGFuZAotLy8gcmV0dXJuaW5nIHRoZSByZXN1bHQgYXMgYSBz
dHJpbmcuIFN0ckpvaW4gb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGJ5IHBhc3NpbmcKLS8vIGEg
cmFuZ2UsIGEgc2VwYXJhdG9yIHN0cmluZyB0byB1c2UgYmV0d2VlbiB0aGUgZWxlbWVudHMgam9p
bmVkLCBhbmQgYW4KLS8vIG9wdGlvbmFsIEZvcm1hdHRlciByZXNwb25zaWJsZSBmb3IgY29udmVy
dGluZyBlYWNoIGFyZ3VtZW50IGluIHRoZSByYW5nZSB0byBhCi0vLyBzdHJpbmcuIElmIG9taXR0
ZWQsIGEgZGVmYXVsdCBgQWxwaGFOdW1Gb3JtYXR0ZXIoKWAgaXMgY2FsbGVkIG9uIHRoZSBlbGVt
ZW50cwotLy8gdG8gYmUgam9pbmVkLCB1c2luZyB0aGUgc2FtZSBmb3JtYXR0aW5nIHRoYXQgYGFi
c2w6OlN0ckNhdCgpYCB1c2VzLiBUaGlzCi0vLyBwYWNrYWdlIGRlZmluZXMgYSBudW1iZXIgb2Yg
ZGVmYXVsdCBmb3JtYXR0ZXJzLCBhbmQgeW91IGNhbiBkZWZpbmUgeW91ciBvd24KLS8vIGltcGxl
bWVudGF0aW9ucy4KKy8vIHJldHVybmluZyB0aGUgcmVzdWx0IGFzIGEgc3RkOjpzdHJpbmcuIFN0
ckpvaW4gb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGJ5CisvLyBwYXNzaW5nIGEgcmFuZ2UsIGEg
c2VwYXJhdG9yIHN0cmluZyB0byB1c2UgYmV0d2VlbiB0aGUgZWxlbWVudHMgam9pbmVkLCBhbmQK
Ky8vIGFuIG9wdGlvbmFsIEZvcm1hdHRlciByZXNwb25zaWJsZSBmb3IgY29udmVydGluZyBlYWNo
IGFyZ3VtZW50IGluIHRoZSByYW5nZQorLy8gdG8gYSBzdHJpbmcuIElmIG9taXR0ZWQsIGEgZGVm
YXVsdCBgQWxwaGFOdW1Gb3JtYXR0ZXIoKWAgaXMgY2FsbGVkIG9uIHRoZQorLy8gZWxlbWVudHMg
dG8gYmUgam9pbmVkLCB1c2luZyB0aGUgc2FtZSBmb3JtYXR0aW5nIHRoYXQgYGFic2w6OlN0ckNh
dCgpYCB1c2VzLgorLy8gVGhpcyBwYWNrYWdlIGRlZmluZXMgYSBudW1iZXIgb2YgZGVmYXVsdCBm
b3JtYXR0ZXJzLCBhbmQgeW91IGNhbiBkZWZpbmUgeW91cgorLy8gb3duIGltcGxlbWVudGF0aW9u
cy4KIC8vCiAvLyBSYW5nZXMgYXJlIHNwZWNpZmllZCBieSBwYXNzaW5nIGEgY29udGFpbmVyIHdp
dGggYHN0ZDo6YmVnaW4oKWAgYW5kCiAvLyBgc3RkOjplbmQoKWAgaXRlcmF0b3JzLCBjb250YWlu
ZXItc3BlY2lmaWMgYGJlZ2luKClgIGFuZCBgZW5kKClgIGl0ZXJhdG9ycywgYQpAQCAtMzcsOCAr
MzcsOCBAQAogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHYg
PSB7ImZvbyIsICJiYXIiLCAiYmF6In07Ci0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3RySm9pbih2
LCAiLSIpOworLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IHsiZm9vIiwgImJhciIs
ICJiYXoifTsKKy8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKIC8v
ICAgRVhQRUNUX0VRKCJmb28tYmFyLWJheiIsIHMpOwogLy8KIC8vIFNlZSBjb21tZW50cyBvbiB0
aGUgYGFic2w6OlN0ckpvaW4oKWAgZnVuY3Rpb24gZm9yIG1vcmUgZXhhbXBsZXMuCkBAIC02Niwx
NiArNjYsMTYgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8v
CiAvLyBBIEZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9iamVjdCB0aGF0IGlzIHJlc3BvbnNpYmxl
IGZvciBmb3JtYXR0aW5nIGl0cwotLy8gYXJndW1lbnQgYXMgYSBzdHJpbmcgYW5kIGFwcGVuZGlu
ZyBpdCB0byBhIGdpdmVuIG91dHB1dCBzdHJpbmcuIEZvcm1hdHRlcnMKLS8vIG1heSBiZSBpbXBs
ZW1lbnRlZCBhcyBmdW5jdGlvbiBvYmplY3RzLCBsYW1iZGFzLCBvciBub3JtYWwgZnVuY3Rpb25z
LiBZb3UgbWF5Ci0vLyBwcm92aWRlIHlvdXIgb3duIEZvcm1hdHRlciB0byBlbmFibGUgYGFic2w6
OlN0ckpvaW4oKWAgdG8gd29yayB3aXRoIGFyYml0cmFyeQotLy8gdHlwZXMuCisvLyBhcmd1bWVu
dCBhcyBhIHN0cmluZyBhbmQgYXBwZW5kaW5nIGl0IHRvIGEgZ2l2ZW4gb3V0cHV0IHN0ZDo6c3Ry
aW5nLgorLy8gRm9ybWF0dGVycyBtYXkgYmUgaW1wbGVtZW50ZWQgYXMgZnVuY3Rpb24gb2JqZWN0
cywgbGFtYmRhcywgb3Igbm9ybWFsCisvLyBmdW5jdGlvbnMuIFlvdSBtYXkgcHJvdmlkZSB5b3Vy
IG93biBGb3JtYXR0ZXIgdG8gZW5hYmxlIGBhYnNsOjpTdHJKb2luKClgIHRvCisvLyB3b3JrIHdp
dGggYXJiaXRyYXJ5IHR5cGVzLgogLy8KIC8vIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBv
ZiBhIGN1c3RvbSBGb3JtYXR0ZXIgdGhhdCBzaW1wbHkgdXNlcwotLy8gYHN0ZDo6dG9fc3RyaW5n
KClgIHRvIGZvcm1hdCBhbiBpbnRlZ2VyIGFzIGEgc3RyaW5nLgorLy8gYHN0ZDo6dG9fc3RyaW5n
KClgIHRvIGZvcm1hdCBhbiBpbnRlZ2VyIGFzIGEgc3RkOjpzdHJpbmcuCiAvLwogLy8gICBzdHJ1
Y3QgTXlGb3JtYXR0ZXIgewotLy8gICAgIHZvaWQgb3BlcmF0b3IoKShzdHJpbmcqIG91dCwgaW50
IGkpIGNvbnN0IHsKKy8vICAgICB2b2lkIG9wZXJhdG9yKCkoc3RkOjpzdHJpbmcqIG91dCwgaW50
IGkpIGNvbnN0IHsKIC8vICAgICAgIG91dC0+YXBwZW5kKHN0ZDo6dG9fc3RyaW5nKGkpKTsKIC8v
ICAgICB9CiAvLyAgIH07CkBAIC04NCw3ICs4NCw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIGFy
Z3VtZW50IHRvIGBhYnNsOjpTdHJKb2luKClgOgogLy8KIC8vICAgc3RkOjp2ZWN0b3I8aW50PiB2
ID0gezEsIDIsIDMsIDR9OwotLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iLCBN
eUZvcm1hdHRlcigpKTsKKy8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0i
LCBNeUZvcm1hdHRlcigpKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMy00Iiwgcyk7CiAvLwogLy8g
VGhlIGZvbGxvd2luZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGFyZSBwcm92aWRlZCB3aXRoaW4gdGhp
cyBmaWxlOgpAQCAtMTU2LDcgKzE1Niw3IEBAIERlcmVmZXJlbmNlRm9ybWF0dGVyKCkgewogLy8g
U3RySm9pbigpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KLS8vIEpvaW5zIGEgcmFuZ2Ug
b2YgZWxlbWVudHMgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIHN0cmluZy4KKy8vIEpvaW5z
IGEgcmFuZ2Ugb2YgZWxlbWVudHMgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIHN0ZDo6c3Ry
aW5nLgogLy8gYGFic2w6OlN0ckpvaW4oKWAgdGFrZXMgYSByYW5nZSwgYSBzZXBhcmF0b3Igc3Ry
aW5nIHRvIHVzZSBiZXR3ZWVuIHRoZQogLy8gZWxlbWVudHMgam9pbmVkLCBhbmQgYW4gb3B0aW9u
YWwgRm9ybWF0dGVyIHJlc3BvbnNpYmxlIGZvciBjb252ZXJ0aW5nIGVhY2gKIC8vIGFyZ3VtZW50
IGluIHRoZSByYW5nZSB0byBhIHN0cmluZy4KQEAgLTE2NywyMiArMTY3LDIyIEBAIERlcmVmZXJl
bmNlRm9ybWF0dGVyKCkgewogLy8gRXhhbXBsZSAxOgogLy8gICAvLyBKb2lucyBhIGNvbGxlY3Rp
b24gb2Ygc3RyaW5ncy4gVGhpcyBwYXR0ZXJuIGFsc28gd29ya3Mgd2l0aCBhIGNvbGxlY3Rpb24K
IC8vICAgLy8gb2YgYGFic2w6OnN0cmluZ192aWV3YCBvciBldmVuIGBjb25zdCBjaGFyKmAuCi0v
LyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdiA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKLS8vICAg
c3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CisvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiB2ID0geyJmb28iLCAiYmFyIiwgImJheiJ9OworLy8gICBzdGQ6OnN0cmluZyBzID0g
YWJzbDo6U3RySm9pbih2LCAiLSIpOwogLy8gICBFWFBFQ1RfRVEoImZvby1iYXItYmF6Iiwgcyk7
CiAvLwogLy8gRXhhbXBsZSAyOgogLy8gICAvLyBKb2lucyB0aGUgdmFsdWVzIGluIHRoZSBnaXZl
biBgc3RkOjppbml0aWFsaXplcl9saXN0PD5gIHNwZWNpZmllZCB1c2luZwogLy8gICAvLyBicmFj
ZSBpbml0aWFsaXphdGlvbi4gVGhpcyBwYXR0ZXJuIGFsc28gd29ya3Mgd2l0aCBhbiBpbml0aWFs
aXplcl9saXN0CiAvLyAgIC8vIG9mIGludHMgb3IgYGFic2w6OnN0cmluZ192aWV3YCAtLSBhbnkg
YEFscGhhTnVtYC1jb21wYXRpYmxlIHR5cGUuCi0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3RySm9p
bih7ImZvbyIsICJiYXIiLCAiYmF6In0sICItIik7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNs
OjpTdHJKb2luKHsiZm9vIiwgImJhciIsICJiYXoifSwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCJm
b28tYmFyLWJheiIsIHMpOwogLy8KIC8vIEV4YW1wbGUgMzoKIC8vICAgLy8gSm9pbnMgYSBjb2xs
ZWN0aW9uIG9mIGludHMuIFRoaXMgcGF0dGVybiBhbHNvIHdvcmtzIHdpdGggZmxvYXRzLAogLy8g
ICAvLyBkb3VibGVzLCBpbnQ2NHMgLS0gYW55IGBTdHJDYXQoKWAtY29tcGF0aWJsZSB0eXBlLgog
Ly8gICBzdGQ6OnZlY3RvcjxpbnQ+IHYgPSB7MSwgMiwgMywgLTR9OwotLy8gICBzdHJpbmcgcyA9
IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpv
aW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMy0tNCIsIHMpOwogLy8KIC8vIEV4YW1w
bGUgNDoKQEAgLTE5Myw3ICsxOTMsNyBAQCBEZXJlZmVyZW5jZUZvcm1hdHRlcigpIHsKIC8vICAg
Ly8gYHN0ZDo6dmVjdG9yPGludCo+YC4KIC8vICAgaW50IHggPSAxLCB5ID0gMiwgeiA9IDM7CiAv
LyAgIHN0ZDo6dmVjdG9yPGludCo+IHYgPSB7JngsICZ5LCAmen07Ci0vLyAgIHN0cmluZyBzID0g
YWJzbDo6U3RySm9pbih2LCAiLSIpOworLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RySm9p
bih2LCAiLSIpOwogLy8gICBFWFBFQ1RfRVEoIjEtMi0zIiwgcyk7CiAvLwogLy8gRXhhbXBsZSA1
OgpAQCAtMjAyLDY1ICsyMDIsNjUgQEAgRGVyZWZlcmVuY2VGb3JtYXR0ZXIoKSB7CiAvLyAgIHYu
ZW1wbGFjZV9iYWNrKG5ldyBpbnQoMSkpOwogLy8gICB2LmVtcGxhY2VfYmFjayhuZXcgaW50KDIp
KTsKIC8vICAgdi5lbXBsYWNlX2JhY2sobmV3IGludCgzKSk7Ci0vLyAgIHN0cmluZyBzID0gYWJz
bDo6U3RySm9pbih2LCAiLSIpOworLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RySm9pbih2
LCAiLSIpOwogLy8gICBFWFBFQ1RfRVEoIjEtMi0zIiwgcyk7CiAvLwogLy8gRXhhbXBsZSA2Ogog
Ly8gICAvLyBKb2lucyBhIGBzdGQ6Om1hcGAsIHdpdGggZWFjaCBrZXktdmFsdWUgcGFpciBzZXBh
cmF0ZWQgYnkgYW4gZXF1YWxzCiAvLyAgIC8vIHNpZ24uIFRoaXMgcGF0dGVybiB3b3VsZCBhbHNv
IHdvcmsgd2l0aCwgc2F5LCBhCiAvLyAgIC8vIGBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8Pj5gLgot
Ly8gICBzdGQ6Om1hcDxzdHJpbmcsIGludD4gbSA9IHsKKy8vICAgc3RkOjptYXA8c3RkOjpzdHJp
bmcsIGludD4gbSA9IHsKIC8vICAgICAgIHN0ZDo6bWFrZV9wYWlyKCJhIiwgMSksCiAvLyAgICAg
ICBzdGQ6Om1ha2VfcGFpcigiYiIsIDIpLAogLy8gICAgICAgc3RkOjptYWtlX3BhaXIoImMiLCAz
KX07Ci0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3RySm9pbihtLCAiLCIsIGFic2w6OlBhaXJGb3Jt
YXR0ZXIoIj0iKSk7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKG0sICIsIiwg
YWJzbDo6UGFpckZvcm1hdHRlcigiPSIpKTsKIC8vICAgRVhQRUNUX0VRKCJhPTEsYj0yLGM9MyIs
IHMpOwogLy8KIC8vIEV4YW1wbGUgNzoKIC8vICAgLy8gVGhlc2UgZXhhbXBsZXMgc2hvdyBob3cg
YGFic2w6OlN0ckpvaW4oKWAgaGFuZGxlcyBhIGZldyBjb21tb24gZWRnZQogLy8gICAvLyBjYXNl
czoKLS8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2X2VtcHR5OworLy8gICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gdl9lbXB0eTsKIC8vICAgRVhQRUNUX0VRKCIiLCBhYnNsOjpTdHJKb2luKHZf
ZW1wdHksICItIikpOwogLy8KLS8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2X29uZV9pdGVtID0g
eyJmb28ifTsKKy8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHZfb25lX2l0ZW0gPSB7ImZv
byJ9OwogLy8gICBFWFBFQ1RfRVEoImZvbyIsIGFic2w6OlN0ckpvaW4odl9vbmVfaXRlbSwgIi0i
KSk7CiAvLwotLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHZfZW1wdHlfc3RyaW5nID0geyIifTsK
Ky8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHZfZW1wdHlfc3RyaW5nID0geyIifTsKIC8v
ICAgRVhQRUNUX0VRKCIiLCBhYnNsOjpTdHJKb2luKHZfZW1wdHlfc3RyaW5nLCAiLSIpKTsKIC8v
Ci0vLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdl9vbmVfaXRlbV9lbXB0eV9zdHJpbmcgPSB7ImEi
LCAiIn07CisvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X29uZV9pdGVtX2VtcHR5X3N0
cmluZyA9IHsiYSIsICIifTsKIC8vICAgRVhQRUNUX0VRKCJhLSIsIGFic2w6OlN0ckpvaW4odl9v
bmVfaXRlbV9lbXB0eV9zdHJpbmcsICItIikpOwogLy8KLS8vICAgc3RkOjp2ZWN0b3I8c3RyaW5n
PiB2X3R3b19lbXB0eV9zdHJpbmcgPSB7IiIsICIifTsKKy8vICAgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IHZfdHdvX2VtcHR5X3N0cmluZyA9IHsiIiwgIiJ9OwogLy8gICBFWFBFQ1RfRVEoIi0i
LCBhYnNsOjpTdHJKb2luKHZfdHdvX2VtcHR5X3N0cmluZywgIi0iKSk7CiAvLwogLy8gRXhhbXBs
ZSA4OgogLy8gICAvLyBKb2lucyBhIGBzdGQ6OnR1cGxlPFQuLi4+YCBvZiBoZXRlcm9nZW5lb3Vz
IHR5cGVzLCBjb252ZXJ0aW5nIGVhY2ggdG8KLS8vICAgLy8gYSBzdHJpbmcgdXNpbmcgdGhlIGBh
YnNsOjpBbHBoYU51bWAgY2xhc3MuCi0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3RySm9pbihzdGQ6
Om1ha2VfdHVwbGUoMTIzLCAiYWJjIiwgMC40NTYpLCAiLSIpOworLy8gICAvLyBhIHN0ZDo6c3Ry
aW5nIHVzaW5nIHRoZSBgYWJzbDo6QWxwaGFOdW1gIGNsYXNzLgorLy8gICBzdGQ6OnN0cmluZyBz
ID0gYWJzbDo6U3RySm9pbihzdGQ6Om1ha2VfdHVwbGUoMTIzLCAiYWJjIiwgMC40NTYpLCAiLSIp
OwogLy8gICBFWFBFQ1RfRVEoIjEyMy1hYmMtMC40NTYiLCBzKTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0cmluZyBTdHJKb2luKEl0
ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQsIGFic2w6OnN0cmluZ192aWV3IHNlcCwKLSAgICAg
ICAgICAgICAgIEZvcm1hdHRlciYmIGZtdCkgeworICAgICAgICAgICAgICAgICAgICBGb3JtYXR0
ZXImJiBmbXQpIHsKICAgcmV0dXJuIHN0cmluZ3NfaW50ZXJuYWw6OkpvaW5BbGdvcml0aG0oc3Rh
cnQsIGVuZCwgc2VwLCBmbXQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZ2UsIHR5cGVu
YW1lIEZvcm1hdHRlcj4KIHN0ZDo6c3RyaW5nIFN0ckpvaW4oY29uc3QgUmFuZ2UmIHJhbmdlLCBh
YnNsOjpzdHJpbmdfdmlldyBzZXBhcmF0b3IsCi0gICAgICAgICAgICAgICBGb3JtYXR0ZXImJiBm
bXQpIHsKKyAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyJiYgZm10KSB7CiAgIHJldHVybiBz
dHJpbmdzX2ludGVybmFsOjpKb2luUmFuZ2UocmFuZ2UsIHNlcGFyYXRvciwgZm10KTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZvcm1hdHRlcj4KIHN0ZDo6c3RyaW5nIFN0
ckpvaW4oc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGlsLCBhYnNsOjpzdHJpbmdfdmlldyBzZXBh
cmF0b3IsCi0gICAgICAgICAgICAgICBGb3JtYXR0ZXImJiBmbXQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgRm9ybWF0dGVyJiYgZm10KSB7CiAgIHJldHVybiBzdHJpbmdzX2ludGVybmFsOjpKb2lu
UmFuZ2UoaWwsIHNlcGFyYXRvciwgZm10KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQs
IHR5cGVuYW1lIEZvcm1hdHRlcj4KIHN0ZDo6c3RyaW5nIFN0ckpvaW4oY29uc3Qgc3RkOjp0dXBs
ZTxULi4uPiYgdmFsdWUsIGFic2w6OnN0cmluZ192aWV3IHNlcGFyYXRvciwKLSAgICAgICAgICAg
ICAgIEZvcm1hdHRlciYmIGZtdCkgeworICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXImJiBm
bXQpIHsKICAgcmV0dXJuIHN0cmluZ3NfaW50ZXJuYWw6OkpvaW5BbGdvcml0aG0odmFsdWUsIHNl
cGFyYXRvciwgZm10KTsKIH0KIApAQCAtMjc1LDEyICsyNzUsMTQgQEAgc3RkOjpzdHJpbmcgU3Ry
Sm9pbihjb25zdCBSYW5nZSYgcmFuZ2UsIGFic2w6OnN0cmluZ192aWV3IHNlcGFyYXRvcikgewog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0ZDo6c3RyaW5nIFN0ckpvaW4oc3RkOjppbml0
aWFsaXplcl9saXN0PFQ+IGlsLCBhYnNsOjpzdHJpbmdfdmlldyBzZXBhcmF0b3IpIHsKK3N0ZDo6
c3RyaW5nIFN0ckpvaW4oc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGlsLAorICAgICAgICAgICAg
ICAgICAgICBhYnNsOjpzdHJpbmdfdmlldyBzZXBhcmF0b3IpIHsKICAgcmV0dXJuIHN0cmluZ3Nf
aW50ZXJuYWw6OkpvaW5SYW5nZShpbCwgc2VwYXJhdG9yKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lLi4uIFQ+Ci1zdGQ6OnN0cmluZyBTdHJKb2luKGNvbnN0IHN0ZDo6dHVwbGU8VC4uLj4mIHZh
bHVlLCBhYnNsOjpzdHJpbmdfdmlldyBzZXBhcmF0b3IpIHsKK3N0ZDo6c3RyaW5nIFN0ckpvaW4o
Y29uc3Qgc3RkOjp0dXBsZTxULi4uPiYgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIGFic2w6
OnN0cmluZ192aWV3IHNlcGFyYXRvcikgewogICByZXR1cm4gc3RyaW5nc19pbnRlcm5hbDo6Sm9p
bkFsZ29yaXRobSh2YWx1ZSwgc2VwYXJhdG9yLCBBbHBoYU51bUZvcm1hdHRlcigpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfam9pbl9iZW5jaG1hcmsuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL3N0cl9qb2luX2JlbmNobWFyay5jYwppbmRleCA3ZmIwZTQ5NzNjYjQ2OGU0ZDJjODNj
OGQ5MGRiMGI2MjkxODE4NzRlLi5kNmY2ODlmZjMwMGIxOTg1ZTZkMjQ2NjBhYzRlYTU4MmNhZTY3
NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luX2JlbmNobWFyay5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luX2JlbmNobWFyay5jYwpAQCAtNSw3ICs1LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNTgsNyArNTgsOCBAQCB2b2lkIEJNX0pvaW4yX0tl
eXNBbmRWYWx1ZXMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgY29uc3QgaW50IHN0cmlu
Z19sZW4gPSBzdGF0ZS5yYW5nZSgwKTsKICAgY29uc3QgaW50IG51bV9wYWlycyA9IHN0YXRlLnJh
bmdlKDEpOwogICBjb25zdCBzdGQ6OnN0cmluZyBzKHN0cmluZ19sZW4sICd4Jyk7Ci0gIGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgaW50Pj4gdihudW1fcGFpcnMsIHN0
ZDo6bWFrZV9wYWlyKHMsIDQyKSk7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6
OnN0cmluZywgaW50Pj4gdihudW1fcGFpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihzLCA0MikpOwogICBmb3IgKGF1
dG8gXyA6IHN0YXRlKSB7CiAgICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIiwi
LCBhYnNsOjpQYWlyRm9ybWF0dGVyKCI9IikpOwogICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6
ZShzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW5fdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyX2pvaW5fdGVzdC5jYwppbmRleCBjOTQxZjljODBkNDk5ODI5NzdmMThlOTFj
MGM3MDc5MDkyN2FiODVmLi45MjFkOWMyYmZhN2Q4N2NmNjA1ZmUzNTczYmVhZmU2N2U5MDgzZDU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luX3Rlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfam9pbl90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0xMTgsNyArMTE4LDcgQEAgVEVTVChTdHJKb2luLCBBUElFeGFtcGxlcykg
ewogCiAgIHsKICAgICAvLyBBIHN0ZDo6bWFwLCB3aGljaCBpcyBhIGNvbGxlY3Rpb24gb2Ygc3Rk
OjpwYWlyPD5zLgotICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IG0gPSB7IHsiYSIsIDF9
LCB7ImIiLCAyfSwgeyJjIiwgM30gfTsKKyAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgaW50PiBt
ID0ge3siYSIsIDF9LCB7ImIiLCAyfSwgeyJjIiwgM319OwogICAgIEVYUEVDVF9FUSgiYT0xLGI9
MixjPTMiLCBhYnNsOjpTdHJKb2luKG0sICIsIiwgYWJzbDo6UGFpckZvcm1hdHRlcigiPSIpKSk7
CiAgIH0KIApAQCAtMTQwLDcgKzE0MCw4IEBAIFRFU1QoU3RySm9pbiwgQVBJRXhhbXBsZXMpIHsK
ICAgfQogCiAgIHsKLSAgICAvLyBBIHJhbmdlIG9mIDEgZWxlbWVudCBnaXZlcyBhIHN0ZDo6c3Ry
aW5nIHdpdGggdGhhdCBlbGVtZW50IGJ1dCBubyBzZXBhcmF0b3IuCisgICAgLy8gQSByYW5nZSBv
ZiAxIGVsZW1lbnQgZ2l2ZXMgYSBzdGQ6OnN0cmluZyB3aXRoIHRoYXQgZWxlbWVudCBidXQgbm8K
KyAgICAvLyBzZXBhcmF0b3IuCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSB7ImZv
byJ9OwogICAgIEVYUEVDVF9FUSgiZm9vIiwgYWJzbDo6U3RySm9pbih2LCAiLSIpKTsKICAgfQpA
QCAtMTczLDkgKzE3NCwxMCBAQCBURVNUKFN0ckpvaW4sIEFQSUV4YW1wbGVzKSB7CiBURVNUKFN0
ckpvaW4sIEN1c3RvbUZvcm1hdHRlcikgewogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdnsi
T25lIiwgIlR3byIsICJUaHJlZSJ9OwogICB7Ci0gICAgc3RkOjpzdHJpbmcgam9pbmVkID0gYWJz
bDo6U3RySm9pbih2LCAiIiwgW10oc3RkOjpzdHJpbmcqIG91dCwgY29uc3Qgc3RkOjpzdHJpbmcm
IGluKSB7Ci0gICAgICBhYnNsOjpTdHJBcHBlbmQob3V0LCAiKCIsIGluLCAiKSIpOwotICAgIH0p
OworICAgIHN0ZDo6c3RyaW5nIGpvaW5lZCA9CisgICAgICAgIGFic2w6OlN0ckpvaW4odiwgIiIs
IFtdKHN0ZDo6c3RyaW5nKiBvdXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbikgeworICAgICAgICAg
IGFic2w6OlN0ckFwcGVuZChvdXQsICIoIiwgaW4sICIpIik7CisgICAgICAgIH0pOwogICAgIEVY
UEVDVF9FUSgiKE9uZSkoVHdvKShUaHJlZSkiLCBqb2luZWQpOwogICB9CiAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBs
YWNlLmNjCmluZGV4IDY5ZWZhMzU3MTM4OGI2NTQ0MWE1YzE1ZWFjNDc4ZjMyYmU2YjM4MWIuLjI4
MGY2M2QzMmE5ZTg2MjdkMDA3YTkwODVjOTdmMWI1NzM2MTdmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyX3JlcGxhY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5j
YwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNjgsMTEgKzY4
LDEyIEBAIGludCBBcHBseVN1YnN0aXR1dGlvbnMoCiAvLyBhcmVuJ3QgaW5saW5lZC4KIAogc3Rk
OjpzdHJpbmcgU3RyUmVwbGFjZUFsbChhYnNsOjpzdHJpbmdfdmlldyBzLAotICAgICAgICAgICAg
ICAgICAgICAgc3RyaW5nc19pbnRlcm5hbDo6Rml4ZWRNYXBwaW5nIHJlcGxhY2VtZW50cykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdzX2ludGVybmFsOjpGaXhlZE1hcHBpbmcg
cmVwbGFjZW1lbnRzKSB7CiAgIHJldHVybiBTdHJSZXBsYWNlQWxsPHN0cmluZ3NfaW50ZXJuYWw6
OkZpeGVkTWFwcGluZz4ocywgcmVwbGFjZW1lbnRzKTsKIH0KIAotaW50IFN0clJlcGxhY2VBbGwo
c3RyaW5nc19pbnRlcm5hbDo6Rml4ZWRNYXBwaW5nIHJlcGxhY2VtZW50cywgc3RkOjpzdHJpbmcq
IHRhcmdldCkgeworaW50IFN0clJlcGxhY2VBbGwoc3RyaW5nc19pbnRlcm5hbDo6Rml4ZWRNYXBw
aW5nIHJlcGxhY2VtZW50cywKKyAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiB0YXJnZXQp
IHsKICAgcmV0dXJuIFN0clJlcGxhY2VBbGw8c3RyaW5nc19pbnRlcm5hbDo6Rml4ZWRNYXBwaW5n
PihyZXBsYWNlbWVudHMsIHRhcmdldCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3RyX3JlcGxhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2UuaAppbmRleCAzYmZlNGM2
MWViZDE1MDRkM2M4ZWI4ZTUwYmE4NzBmYThmYTY4OTM5Li4zMDU0MGQwMmNkZjQ2MWI1MzRlYmE0
N2Y2ZDcyZGRiNGI4MGMzNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNl
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5oCkBAIC01LDcgKzUsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yOSwxMiArMjksMTIgQEAKIC8vCiAvLyBFeGFtcGxl
OgogLy8KLS8vIHN0cmluZyBodG1sX2VzY2FwZWQgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKHVzZXJf
aW5wdXQsIHsKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsi
JiIsICImYW1wOyJ9LAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeyI8IiwgIiZsdDsifSwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsiPiIsICImZ3Q7In0sCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7IlwiIiwgIiZxdW90OyJ9LAotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyInIiwgIiYjMzk7In19KTsKKy8vIHN0ZDo6c3RyaW5nIGh0bWxf
ZXNjYXBlZCA9IGFic2w6OlN0clJlcGxhY2VBbGwodXNlcl9pbnB1dCwgeworLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IiYiLCAiJmFtcDsifSwKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyI8IiwgIiZs
dDsifSwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eyI+IiwgIiZndDsifSwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeyJcIiIsICImcXVvdDsifSwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyInIiwgIiYjMzk7In19KTsKICNpZm5kZWYgQUJTTF9TVFJJ
TkdTX1NUUl9SRVBMQUNFX0hfCiAjZGVmaW5lIEFCU0xfU1RSSU5HU19TVFJfUkVQTEFDRV9IXwog
CkBAIC01OCwxMCArNTgsMTEgQEAgbmFtZXNwYWNlIGFic2wgewogLy8KIC8vIEV4YW1wbGU6CiAv
LwotLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VBbGwoIiR3aG8gYm91Z2h0ICRjb3Vu
dCAjTm91bi4gVGhhbmtzICR3aG8hIiwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHt7IiRjb3VudCIsIGFic2w6OlN0ckNhdCg1KX0sCi0vLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyIkd2hvIiwgIkJvYiJ9LAotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsiI05vdW4iLCAiQXBwbGVzIn19KTsKKy8vICAgc3RkOjpzdHJpbmcgcyA9
IGFic2w6OlN0clJlcGxhY2VBbGwoCisvLyAgICAgICAiJHdobyBib3VnaHQgJGNvdW50ICNOb3Vu
LiBUaGFua3MgJHdobyEiLAorLy8gICAgICAge3siJGNvdW50IiwgYWJzbDo6U3RyQ2F0KDUpfSwK
Ky8vICAgICAgICB7IiR3aG8iLCAiQm9iIn0sCisvLyAgICAgICAgeyIjTm91biIsICJBcHBsZXMi
fX0pOwogLy8gICBFWFBFQ1RfRVEoIkJvYiBib3VnaHQgNSBBcHBsZXMuIFRoYW5rcyBCb2IhIiwg
cyk7CiBBQlNMX01VU1RfVVNFX1JFU1VMVCBzdGQ6OnN0cmluZyBTdHJSZXBsYWNlQWxsKAogICAg
IGFic2w6OnN0cmluZ192aWV3IHMsCkBAIC03OCwyMCArNzksMjIgQEAgQUJTTF9NVVNUX1VTRV9S
RVNVTFQgc3RkOjpzdHJpbmcgU3RyUmVwbGFjZUFsbCgKIC8vICAgcmVwbGFjZW1lbnRzWyIkd2hv
Il0gPSAiQm9iIjsKIC8vICAgcmVwbGFjZW1lbnRzWyIkY291bnQiXSA9ICI1IjsKIC8vICAgcmVw
bGFjZW1lbnRzWyIjTm91biJdID0gIkFwcGxlcyI7Ci0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3Ry
UmVwbGFjZUFsbCgiJHdobyBib3VnaHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiLAotLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzKTsKKy8vICAgc3Rk
OjpzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VBbGwoCisvLyAgICAgICAiJHdobyBib3VnaHQg
JGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiLAorLy8gICAgICAgcmVwbGFjZW1lbnRzKTsKIC8v
ICAgRVhQRUNUX0VRKCJCb2IgYm91Z2h0IDUgQXBwbGVzLiBUaGFua3MgQm9iISIsIHMpOwogLy8K
IC8vICAgLy8gQSBzdGQ6OnZlY3RvciBvZiBzdGQ6OnBhaXIgZWxlbWVudHMgY2FuIGJlIG1vcmUg
ZWZmaWNpZW50LgotLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgYWJzbDo6c3RyaW5n
X3ZpZXcsIHN0cmluZz4+IHJlcGxhY2VtZW50czsKKy8vICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWly
PGNvbnN0IGFic2w6OnN0cmluZ192aWV3LCBzdGQ6OnN0cmluZz4+IHJlcGxhY2VtZW50czsKIC8v
ICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFjayh7IiYiLCAiJmFtcDsifSk7CiAvLyAgIHJlcGxhY2Vt
ZW50cy5wdXNoX2JhY2soeyI8IiwgIiZsdDsifSk7CiAvLyAgIHJlcGxhY2VtZW50cy5wdXNoX2Jh
Y2soeyI+IiwgIiZndDsifSk7Ci0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3RyUmVwbGFjZUFsbCgi
aWYgKHB0ciA8ICZmb28pIiwKKy8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VB
bGwoImlmIChwdHIgPCAmZm9vKSIsCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXBsYWNlbWVudHMpOwogLy8gICBFWFBFQ1RfRVEoImlmIChwdHIgJmx0OyAmYW1wO2Zvbyki
LCBzKTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBTdHJUb1N0ck1hcHBpbmc+Ci1zdGQ6OnN0cmluZyBT
dHJSZXBsYWNlQWxsKGFic2w6OnN0cmluZ192aWV3IHMsIGNvbnN0IFN0clRvU3RyTWFwcGluZyYg
cmVwbGFjZW1lbnRzKTsKK3N0ZDo6c3RyaW5nIFN0clJlcGxhY2VBbGwoYWJzbDo6c3RyaW5nX3Zp
ZXcgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyVG9TdHJNYXBwaW5nJiBy
ZXBsYWNlbWVudHMpOwogCiAvLyBPdmVybG9hZCBvZiBgU3RyUmVwbGFjZUFsbCgpYCB0byByZXBs
YWNlIGNoYXJhY3RlciBzZXF1ZW5jZXMgd2l0aGluIGEgZ2l2ZW4KIC8vIG91dHB1dCBzdHJpbmcg
KmluIHBsYWNlKiB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZCB3aXRoaW4gYW4gaW5pdGlhbGl6
ZXIKQEAgLTk5LDcgKzEwMiw3IEBAIHN0ZDo6c3RyaW5nIFN0clJlcGxhY2VBbGwoYWJzbDo6c3Ry
aW5nX3ZpZXcgcywgY29uc3QgU3RyVG9TdHJNYXBwaW5nJiByZXBsYWNlbWVuCiAvLwogLy8gRXhh
bXBsZToKIC8vCi0vLyAgIHN0cmluZyBzID0gc3RkOjpzdHJpbmcoIiR3aG8gYm91Z2h0ICRjb3Vu
dCAjTm91bi4gVGhhbmtzICR3aG8hIik7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBzdGQ6OnN0cmlu
ZygiJHdobyBib3VnaHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiKTsKIC8vICAgaW50IGNv
dW50OwogLy8gICBjb3VudCA9IGFic2w6OlN0clJlcGxhY2VBbGwoe3siJGNvdW50IiwgYWJzbDo6
U3RyQ2F0KDUpfSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiJHdobyIsICJC
b2IifSwKQEAgLTExNyw3ICsxMjAsNyBAQCBpbnQgU3RyUmVwbGFjZUFsbCgKIC8vCiAvLyBFeGFt
cGxlOgogLy8KLS8vICAgc3RyaW5nIHMgPSBzdGQ6OnN0cmluZygiaWYgKHB0ciA8ICZmb28pIik7
CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBzdGQ6OnN0cmluZygiaWYgKHB0ciA8ICZmb28pIik7CiAv
LyAgIGludCBjb3VudCA9IGFic2w6OlN0clJlcGxhY2VBbGwoe3siJiIsICImYW1wOyJ9LAogLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IjwiLCAiJmx0OyJ9LAogLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ij4iLCAiJmd0OyJ9fSwgJnMpOwpAQCAt
MTg3LDcgKzE5MCw4IEBAIGludCBBcHBseVN1YnN0aXR1dGlvbnMoYWJzbDo6c3RyaW5nX3ZpZXcg
cywKIH0gIC8vIG5hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFsCiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBTdHJUb1N0ck1hcHBpbmc+Ci1zdGQ6OnN0cmluZyBTdHJSZXBsYWNlQWxsKGFic2w6OnN0cmlu
Z192aWV3IHMsIGNvbnN0IFN0clRvU3RyTWFwcGluZyYgcmVwbGFjZW1lbnRzKSB7CitzdGQ6OnN0
cmluZyBTdHJSZXBsYWNlQWxsKGFic2w6OnN0cmluZ192aWV3IHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0clRvU3RyTWFwcGluZyYgcmVwbGFjZW1lbnRzKSB7CiAgIGF1dG8g
c3VicyA9IHN0cmluZ3NfaW50ZXJuYWw6OkZpbmRTdWJzdGl0dXRpb25zKHMsIHJlcGxhY2VtZW50
cyk7CiAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKICAgcmVzdWx0LnJlc2VydmUocy5zaXplKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV9iZW5jaG1hcmsuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cl9yZXBsYWNlX2JlbmNobWFyay5jYwppbmRleCA4Mzg2ZjJlNmJmMTBlY2U0
NmJhNDc5YWUyNTNkODc5NjY3YzVlMWY3Li45NWIyZGMxMDVlMmY0NGZhMTVlNjZkOGI4YzVjMTc4
OTJjNTliNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlX2JlbmNobWFy
ay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlX2JlbmNobWFyay5jYwpAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNTQsNyArNTQsNyBAQCB2b2lk
IFNldFVwU3RyaW5ncygpIHsKICAgICBzaXplX3QgciA9IDA7CiAgICAgYmlnX3N0cmluZyA9IG5l
dyBzdGQ6OnN0cmluZygxMDAwICogMTAwMCwgJyAnKTsKICAgICBmb3IgKHN0ZDo6c3RyaW5nIHBo
cmFzZSA6IHsidGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2dzIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2sgbXkgYm94IHdpdGggdGhlIGZpdmUgZG96
ZW4gbGlxdW9yIGp1Z3MifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNr
IG15IGJveCB3aXRoIHRoZSBmaXZlIGRvemVuIGxpcXVvciBqdWdzIn0pIHsKICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMTAgKiAxMDAwOyArK2kpIHsKICAgICAgICAgciA9IHIgKiAyMzcgKyA0
MTsgIC8vIG5vdCB2ZXJ5IHJhbmRvbS4KICAgICAgICAgbWVtY3B5KCYoKmJpZ19zdHJpbmcpW3Ig
JSAoYmlnX3N0cmluZy0+c2l6ZSgpIC0gcGhyYXNlLnNpemUoKSldLApAQCAtMTA4LDExICsxMDgs
MTEgQEAgdm9pZCBCTV9TdHJSZXBsYWNlQWxsKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAg
IHN0ZDo6c3RyaW5nIHNyYyA9ICpiaWdfc3RyaW5nOwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7
CiAgICAgc3RkOjpzdHJpbmcgZGVzdCA9IGFic2w6OlN0clJlcGxhY2VBbGwoc3JjLCB7eyJ0aGUi
LCAiYm94In0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsi
YnJvd24iLCAicXVpY2sifSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyJqdW1wZWQiLCAibGlxdW9yZWQifSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyJkb3plbiIsICJicm93biJ9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7ImxhenkiLCAicGFjayJ9LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImxpcXVvciIsICJzaGFrZXMifX0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYnJvd24i
LCAicXVpY2sifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7Imp1bXBlZCIsICJsaXF1b3JlZCJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsiZG96ZW4iLCAiYnJvd24ifSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImxhenkiLCAicGFjayJ9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsibGlxdW9yIiwg
InNoYWtlcyJ9fSk7CiAgICAgQUJTTF9SQVdfQ0hFQ0soZGVzdCA9PSAqYWZ0ZXJfcmVwbGFjaW5n
X21hbnksCiAgICAgICAgICAgICAgICAgICAgIm5vdCBiZW5jaG1hcmtpbmcgaW50ZW5kZWQgYmVo
YXZpb3IiKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV90ZXN0LmNjCmluZGV4IDVkMDAzYTIyNGE0
ZmE4ODg1MDQ1NzMxNTBmMDY0MWFkZDQwMTQwNjQuLjFjYTIzYWZmNTU0OTJiMWUxZDE5ZWIyMzM0
NWE3ZjFiYzFlMTM1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2VfdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlX3Rlc3QuY2MKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0OCw3ICsxNDgsNyBAQCBURVNUKFN0
clJlcGxhY2VBbGwsIE1hbnlSZXBsYWNlbWVudHNJbk1hcCkgewogICByZXBsYWNlbWVudHNbIiRj
b3VudCJdID0gIjUiOwogICByZXBsYWNlbWVudHNbIiNOb3VuIl0gPSAiQXBwbGVzIjsKICAgc3Rk
OjpzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VBbGwoIiR3aG8gYm91Z2h0ICRjb3VudCAjTm91
bi4gVGhhbmtzICR3aG8hIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxh
Y2VtZW50cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2Vt
ZW50cyk7CiAgIEVYUEVDVF9FUSgiQm9iIGJvdWdodCA1IEFwcGxlcy4gVGhhbmtzIEJvYiEiLCBz
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL3N0cl9zcGxpdC5jYwppbmRleCAwYTY4YzUyZDE0ZjE5Yjg4ZDNhZGQyZTM3MjI3YzUx
M2M1OWQxMjQ2Li4yNTkzMTMwN2Y0ZWI3NDQzNzBmMWZlMmFlZTdiMTU2NDk5YjgzNzQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0
cl9zcGxpdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3Nw
bGl0LmgKaW5kZXggYzdlYjI4MGM0MTEzMGFiODZlMzQzMzY5YzdlNWZjOTBjZDY5ZGUyNi4uNzMz
MzA3ODkzOGI5ZGIwYjQ4MGZjZWYzOTcxMzBlZjIwOTc4NjI5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfc3BsaXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5oCkBAIC01
LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC03MSwyMyArNzEsMjMgQEAg
bmFtZXNwYWNlIGFic2wgewogLy8gICAtIGBCeUxlbmd0aGAKIC8vICAgLSBgTWF4U3BsaXRzYAog
Ly8KLS8vCi0vLyBBIERlbGltaXRlcidzIEZpbmQoKSBtZW1iZXIgZnVuY3Rpb24gd2lsbCBiZSBw
YXNzZWQgdGhlIGlucHV0IHRleHQgdGhhdCBpcyB0bwotLy8gYmUgc3BsaXQgYW5kIHRoZSBwb3Np
dGlvbiB0byBiZWdpbiBzZWFyY2hpbmcgZm9yIHRoZSBuZXh0IGRlbGltaXRlciBpbiB0aGUKLS8v
IGlucHV0IHRleHQuIFRoZSByZXR1cm5lZCBhYnNsOjpzdHJpbmdfdmlldyBzaG91bGQgcmVmZXIg
dG8gdGhlIG5leHQKLS8vIG9jY3VycmVuY2UgKGFmdGVyIHBvcykgb2YgdGhlIHJlcHJlc2VudGVk
IGRlbGltaXRlcjsgdGhpcyByZXR1cm5lZAotLy8gYWJzbDo6c3RyaW5nX3ZpZXcgcmVwcmVzZW50
cyB0aGUgbmV4dCBsb2NhdGlvbiB3aGVyZSB0aGUgaW5wdXQgc3RyaW5nIHNob3VsZAotLy8gYmUg
YnJva2VuLiBUaGUgcmV0dXJuZWQgYWJzbDo6c3RyaW5nX3ZpZXcgbWF5IGJlIHplcm8tbGVuZ3Ro
IGlmIHRoZSBEZWxpbWl0ZXIKLS8vIGRvZXMgbm90IHJlcHJlc2VudCBhIHBhcnQgb2YgdGhlIHN0
cmluZyAoZS5nLiwgYSBmaXhlZC1sZW5ndGggZGVsaW1pdGVyKS4gSWYKLS8vIG5vIGRlbGltaXRl
ciBpcyBmb3VuZCBpbiB0aGUgZ2l2ZW4gdGV4dCwgYSB6ZXJvLWxlbmd0aCBhYnNsOjpzdHJpbmdf
dmlldwotLy8gcmVmZXJyaW5nIHRvIHRleHQuZW5kKCkgc2hvdWxkIGJlIHJldHVybmVkIChlLmcu
LAotLy8gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5lbmQoKSwgMCkpLiBJdCBpcyBpbXBvcnRhbnQg
dGhhdCB0aGUgcmV0dXJuZWQKLS8vIGFic2w6OnN0cmluZ192aWV3IGFsd2F5cyBiZSB3aXRoaW4g
dGhlIGJvdW5kcyBvZiBpbnB1dCB0ZXh0IGdpdmVuIGFzIGFuCisvLyBBIERlbGltaXRlcidzIGBG
aW5kKClgIG1lbWJlciBmdW5jdGlvbiB3aWxsIGJlIHBhc3NlZCBhbiBpbnB1dCBgdGV4dGAgdGhh
dCBpcworLy8gdG8gYmUgc3BsaXQgYW5kIGEgcG9zaXRpb24gKGBwb3NgKSB0byBiZWdpbiBzZWFy
Y2hpbmcgZm9yIHRoZSBuZXh0IGRlbGltaXRlcgorLy8gaW4gYHRleHRgLiBUaGUgcmV0dXJuZWQg
YWJzbDo6c3RyaW5nX3ZpZXcgc2hvdWxkIHJlZmVyIHRvIHRoZSBuZXh0IG9jY3VycmVuY2UKKy8v
IChhZnRlciBgcG9zYCkgb2YgdGhlIHJlcHJlc2VudGVkIGRlbGltaXRlcjsgdGhpcyByZXR1cm5l
ZCBhYnNsOjpzdHJpbmdfdmlldworLy8gcmVwcmVzZW50cyB0aGUgbmV4dCBsb2NhdGlvbiB3aGVy
ZSB0aGUgaW5wdXQgYHRleHRgIHNob3VsZCBiZSBicm9rZW4uCisvLworLy8gVGhlIHJldHVybmVk
IGFic2w6OnN0cmluZ192aWV3IG1heSBiZSB6ZXJvLWxlbmd0aCBpZiB0aGUgRGVsaW1pdGVyIGRv
ZXMgbm90CisvLyByZXByZXNlbnQgYSBwYXJ0IG9mIHRoZSBzdHJpbmcgKGUuZy4sIGEgZml4ZWQt
bGVuZ3RoIGRlbGltaXRlcikuIElmIG5vCisvLyBkZWxpbWl0ZXIgaXMgZm91bmQgaW4gdGhlIGlu
cHV0IGB0ZXh0YCwgYSB6ZXJvLWxlbmd0aCBhYnNsOjpzdHJpbmdfdmlldworLy8gcmVmZXJyaW5n
IHRvIGB0ZXh0LmVuZCgpYCBzaG91bGQgYmUgcmV0dXJuZWQgKGUuZy4sCisvLyBgdGV4dC5zdWJz
dHIodGV4dC5zaXplKCkpYCkuIEl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSByZXR1cm5lZAorLy8g
YWJzbDo6c3RyaW5nX3ZpZXcgYWx3YXlzIGJlIHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSBpbnB1
dCBgdGV4dGAgZ2l2ZW4gYXMgYW4KIC8vIGFyZ3VtZW50LS1pdCBtdXN0IG5vdCByZWZlciB0byBh
IHN0cmluZyB0aGF0IGlzIHBoeXNpY2FsbHkgbG9jYXRlZCBvdXRzaWRlIG9mCiAvLyB0aGUgZ2l2
ZW4gc3RyaW5nLgogLy8KIC8vIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpcyBhIHNpbXBsZSBEZWxp
bWl0ZXIgb2JqZWN0IHRoYXQgaXMgY3JlYXRlZCB3aXRoIGEKLS8vIHNpbmdsZSBjaGFyIGFuZCB3
aWxsIGxvb2sgZm9yIHRoYXQgY2hhciBpbiB0aGUgdGV4dCBwYXNzZWQgdG8gdGhlIEZpbmQoKQor
Ly8gc2luZ2xlIGNoYXIgYW5kIHdpbGwgbG9vayBmb3IgdGhhdCBjaGFyIGluIHRoZSB0ZXh0IHBh
c3NlZCB0byB0aGUgYEZpbmQoKWAKIC8vIGZ1bmN0aW9uOgogLy8KIC8vICAgc3RydWN0IFNpbXBs
ZURlbGltaXRlciB7CkBAIC05Niw5ICs5Niw5IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vICAgICBh
YnNsOjpzdHJpbmdfdmlldyBGaW5kKGFic2w6OnN0cmluZ192aWV3IHRleHQsIHNpemVfdCBwb3Mp
IHsKIC8vICAgICAgIGF1dG8gZm91bmQgPSB0ZXh0LmZpbmQoY18sIHBvcyk7CiAvLyAgICAgICBp
ZiAoZm91bmQgPT0gYWJzbDo6c3RyaW5nX3ZpZXc6Om5wb3MpCi0vLyAgICAgICAgIHJldHVybiBh
YnNsOjpzdHJpbmdfdmlldyh0ZXh0LmVuZCgpLCAwKTsKKy8vICAgICAgICAgcmV0dXJuIHRleHQu
c3Vic3RyKHRleHQuc2l6ZSgpKTsKIC8vCi0vLyAgICAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3Zp
ZXcodGV4dCwgZm91bmQsIDEpOworLy8gICAgICAgcmV0dXJuIHRleHQuc3Vic3RyKGZvdW5kLCAx
KTsKIC8vICAgICB9CiAvLyAgIH07CiAKQEAgLTEzMSw4ICsxMzEsNyBAQCBjbGFzcyBCeVN0cmlu
ZyB7CiAvLyBCeUNoYXIKIC8vCiAvLyBBIHNpbmdsZSBjaGFyYWN0ZXIgZGVsaW1pdGVyLiBgQnlD
aGFyYCBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBhCi0vLyAxLWNoYXIgc3RyaW5nIHdp
dGhpbiBhIGBCeVN0cmluZ2AgZGVsaW1pdGVyLCBidXQgc2xpZ2h0bHkgbW9yZQotLy8gZWZmaWNp
ZW50LgorLy8gMS1jaGFyIHN0cmluZyB3aXRoaW4gYSBgQnlTdHJpbmdgIGRlbGltaXRlciwgYnV0
IHNsaWdodGx5IG1vcmUgZWZmaWNpZW50LgogLy8KIC8vIEV4YW1wbGU6CiAvLwpAQCAtNDEzLDEw
ICs0MTIsMTAgQEAgc3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIC8vCiAvLyBUaGUgYFN0clNwbGl0
KClgIGZ1bmN0aW9uIGFkYXB0cyB0aGUgcmV0dXJuZWQgY29sbGVjdGlvbiB0byB0aGUgY29sbGVj
dGlvbgogLy8gc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIgKGUuZy4gYHN0ZDo6dmVjdG9yYCBhYm92
ZSkuIFRoZSByZXR1cm5lZCBjb2xsZWN0aW9ucwotLy8gbWF5IGNvbnRhaW4gYHN0cmluZ2AsIGBh
YnNsOjpzdHJpbmdfdmlld2AgKGluIHdoaWNoIGNhc2UgdGhlIG9yaWdpbmFsIHN0cmluZwotLy8g
YmVpbmcgc3BsaXQgbXVzdCBlbnN1cmUgdGhhdCBpdCBvdXRsaXZlcyB0aGUgY29sbGVjdGlvbiks
IG9yIGFueSBvYmplY3QgdGhhdAotLy8gY2FuIGJlIGV4cGxpY2l0bHkgY3JlYXRlZCBmcm9tIGFu
IGBhYnNsOjpzdHJpbmdfdmlld2AuIFRoaXMgYmVoYXZpb3Igd29ya3MKLS8vIGZvcjoKKy8vIG1h
eSBjb250YWluIGBzdGQ6OnN0cmluZ2AsIGBhYnNsOjpzdHJpbmdfdmlld2AgKGluIHdoaWNoIGNh
c2UgdGhlIG9yaWdpbmFsCisvLyBzdHJpbmcgYmVpbmcgc3BsaXQgbXVzdCBlbnN1cmUgdGhhdCBp
dCBvdXRsaXZlcyB0aGUgY29sbGVjdGlvbiksIG9yIGFueQorLy8gb2JqZWN0IHRoYXQgY2FuIGJl
IGV4cGxpY2l0bHkgY3JlYXRlZCBmcm9tIGFuIGBhYnNsOjpzdHJpbmdfdmlld2AuIFRoaXMKKy8v
IGJlaGF2aW9yIHdvcmtzIGZvcjoKIC8vCiAvLyAxKSBBbGwgc3RhbmRhcmQgU1RMIGNvbnRhaW5l
cnMgaW5jbHVkaW5nIGBzdGQ6OnZlY3RvcmAsIGBzdGQ6Omxpc3RgLAogLy8gICAgYHN0ZDo6ZGVx
dWVgLCBgc3RkOjpzZXRgLGBzdGQ6Om11bHRpc2V0YCwgJ3N0ZDo6bWFwYCwgYW5kIGBzdGQ6Om11
bHRpbWFwYApAQCAtNDYwLDcgKzQ1OSw3IEBAIHN0cnVjdCBTa2lwV2hpdGVzcGFjZSB7CiAvLyBF
eGFtcGxlOgogLy8KIC8vICAgLy8gU3RvcmVzIGZpcnN0IHR3byBzcGxpdCBzdHJpbmdzIGFzIHRo
ZSBtZW1iZXJzIGluIGEgc3RkOjpwYWlyLgotLy8gICBzdGQ6OnBhaXI8c3RyaW5nLCBzdHJpbmc+
IHAgPSBhYnNsOjpTdHJTcGxpdCgiYSxiLGMiLCAnLCcpOworLy8gICBzdGQ6OnBhaXI8c3RkOjpz
dHJpbmcsIHN0ZDo6c3RyaW5nPiBwID0gYWJzbDo6U3RyU3BsaXQoImEsYixjIiwgJywnKTsKIC8v
ICAgLy8gcC5maXJzdCA9PSAiYSIsIHAuc2Vjb25kID09ICJiIiAgICAgICAvLyAiYyIgaXMgb21p
dHRlZC4KIC8vCiAvLyBUaGUgYFN0clNwbGl0KClgIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIG11bHRp
cGxlIHRpbWVzIHRvIHBlcmZvcm0gbW9yZQpAQCAtNDcwLDcgKzQ2OSw3IEBAIHN0cnVjdCBTa2lw
V2hpdGVzcGFjZSB7CiAvLwogLy8gICAvLyBUaGUgaW5wdXQgc3RyaW5nICJhPWI9YyxkPWUsZj0s
ZyIgYmVjb21lcwogLy8gICAvLyB7ICJhIiA9PiAiYj1jIiwgImQiID0+ICJlIiwgImYiID0+ICIi
LCAiZyIgPT4gIiIgfQotLy8gICBzdGQ6Om1hcDxzdHJpbmcsIHN0cmluZz4gbTsKKy8vICAgc3Rk
OjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBtOwogLy8gICBmb3IgKGFic2w6OnN0cmlu
Z192aWV3IHNwIDogYWJzbDo6U3RyU3BsaXQoImE9Yj1jLGQ9ZSxmPSxnIiwgJywnKSkgewogLy8g
ICAgIG0uaW5zZXJ0KGFic2w6OlN0clNwbGl0KHNwLCBhYnNsOjpNYXhTcGxpdHMoJz0nLCAxKSkp
OwogLy8gICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdF9iZW5jaG1hcmsu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdF9iZW5jaG1hcmsuY2MKaW5kZXggMzI2ZmY3NDRl
YmQ5NDZlNzc4MTA2M2NlOTNkNzMxYzJlMTVjNGI1Yy4uZjM4ZGZjZmU1YWY3ZmY5OTlhZjkxODhj
YzhmM2EzOWE2NWE2YjcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXRfYmVu
Y2htYXJrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0X2JlbmNobWFyay5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzUsMTYgKzM1LDM5IEBA
IHN0ZDo6c3RyaW5nIE1ha2VUZXN0U3RyaW5nKGludCBkZXNpcmVkX2xlbmd0aCkgewogICByZXR1
cm4gdGVzdDsKIH0KIAotdm9pZCBCTV9TcGxpdDJTdHJpbmdQaWVjZShiZW5jaG1hcms6OlN0YXRl
JiBzdGF0ZSkgewordm9pZCBCTV9TcGxpdDJTdHJpbmdWaWV3KGJlbmNobWFyazo6U3RhdGUmIHN0
YXRlKSB7CiAgIHN0ZDo6c3RyaW5nIHRlc3QgPSBNYWtlVGVzdFN0cmluZyhzdGF0ZS5yYW5nZSgw
KSk7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKICAgICBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJp
bmdfdmlldz4gcmVzdWx0ID0gYWJzbDo6U3RyU3BsaXQodGVzdCwgJzsnKTsKICAgICBiZW5jaG1h
cms6OkRvTm90T3B0aW1pemUocmVzdWx0KTsKICAgfQogfQotQkVOQ0hNQVJLX1JBTkdFKEJNX1Nw
bGl0MlN0cmluZ1BpZWNlLCAwLCAxIDw8IDIwKTsKK0JFTkNITUFSS19SQU5HRShCTV9TcGxpdDJT
dHJpbmdWaWV3LCAwLCAxIDw8IDIwKTsKIAotdm9pZCBCTV9TcGxpdDJTdHJpbmdQaWVjZUxpZnRl
ZChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworc3RhdGljIGNvbnN0IGFic2w6OnN0cmluZ192
aWV3IGtEZWxpbWl0ZXJzID0gIjs6LC4iOworCitzdGQ6OnN0cmluZyBNYWtlTXVsdGlEZWxpbWl0
ZXJUZXN0U3RyaW5nKGludCBkZXNpcmVkX2xlbmd0aCkgeworICBzdGF0aWMgY29uc3QgaW50IGtB
dmVyYWdlVmFsdWVMZW4gPSAyNTsKKyAgc3RkOjpzdHJpbmcgdGVzdChkZXNpcmVkX2xlbmd0aCAq
IGtBdmVyYWdlVmFsdWVMZW4sICd4Jyk7CisgIGZvciAoaW50IGkgPSAwOyBpICoga0F2ZXJhZ2VW
YWx1ZUxlbiA8IHRlc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAvLyBDeWNsZSB0aHJvdWdoIGEgdmFy
aWV0eSBvZiBkZWxpbWl0ZXJzLgorICAgIHRlc3RbaSAqIGtBdmVyYWdlVmFsdWVMZW5dID0ga0Rl
bGltaXRlcnNbaSAlIGtEZWxpbWl0ZXJzLnNpemUoKV07CisgIH0KKyAgcmV0dXJuIHRlc3Q7Cit9
CisKKy8vIE1lYXN1cmUgU3RyU3BsaXQgd2l0aCBCeUFueUNoYXIgd2l0aCBmb3VyIGRlbGltaXRl
cnMgdG8gY2hvb3NlIGZyb20uCit2b2lkIEJNX1NwbGl0MlN0cmluZ1ZpZXdCeUFueUNoYXIoYmVu
Y2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgc3RkOjpzdHJpbmcgdGVzdCA9IE1ha2VNdWx0aURl
bGltaXRlclRlc3RTdHJpbmcoc3RhdGUucmFuZ2UoMCkpOworICBmb3IgKGF1dG8gXyA6IHN0YXRl
KSB7CisgICAgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IHJlc3VsdCA9CisgICAgICAg
IGFic2w6OlN0clNwbGl0KHRlc3QsIGFic2w6OkJ5QW55Q2hhcihrRGVsaW1pdGVycykpOworICAg
IGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShyZXN1bHQpOworICB9Cit9CitCRU5DSE1BUktfUkFO
R0UoQk1fU3BsaXQyU3RyaW5nVmlld0J5QW55Q2hhciwgMCwgMSA8PCAyMCk7CisKK3ZvaWQgQk1f
U3BsaXQyU3RyaW5nVmlld0xpZnRlZChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6
OnN0cmluZyB0ZXN0ID0gTWFrZVRlc3RTdHJpbmcoc3RhdGUucmFuZ2UoMCkpOwogICBzdGQ6OnZl
Y3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gcmVzdWx0OwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7
CkBAIC01Miw3ICs3NSw3IEBAIHZvaWQgQk1fU3BsaXQyU3RyaW5nUGllY2VMaWZ0ZWQoYmVuY2ht
YXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgfQogICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocmVz
dWx0KTsKIH0KLUJFTkNITUFSS19SQU5HRShCTV9TcGxpdDJTdHJpbmdQaWVjZUxpZnRlZCwgMCwg
MSA8PCAyMCk7CitCRU5DSE1BUktfUkFOR0UoQk1fU3BsaXQyU3RyaW5nVmlld0xpZnRlZCwgMCwg
MSA8PCAyMCk7CiAKIHZvaWQgQk1fU3BsaXQyU3RyaW5nKGJlbmNobWFyazo6U3RhdGUmIHN0YXRl
KSB7CiAgIHN0ZDo6c3RyaW5nIHRlc3QgPSBNYWtlVGVzdFN0cmluZyhzdGF0ZS5yYW5nZSgwKSk7
CkBAIC02OSw3ICs5Miw4IEBAIEJFTkNITUFSS19SQU5HRShCTV9TcGxpdDJTdHJpbmcsIDAsIDEg
PDwgMjApOwogdm9pZCBCTV9TcGxpdDJTcGxpdFN0cmluZ1VzaW5nKGJlbmNobWFyazo6U3RhdGUm
IHN0YXRlKSB7CiAgIHN0ZDo6c3RyaW5nIHRlc3QgPSBNYWtlVGVzdFN0cmluZyhzdGF0ZS5yYW5n
ZSgwKSk7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gcmVzdWx0ID0gYWJzbDo6U3RyU3BsaXQodGVzdCwgJzsnLCBhYnNsOjpTa2lwRW1wdHko
KSk7CisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHJlc3VsdCA9CisgICAgICAgIGFic2w6
OlN0clNwbGl0KHRlc3QsICc7JywgYWJzbDo6U2tpcEVtcHR5KCkpOwogICAgIGJlbmNobWFyazo6
RG9Ob3RPcHRpbWl6ZShyZXN1bHQpOwogICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9zcGxpdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXRfdGVzdC5jYwppbmRl
eCA0MTNhZDMxOGJmOWIyOTMzN2I3ZTg4Nzg4YTU1MGE5ZGIzZTUwZWFlLi42NThiY2ExYTg2ODc4
OTI3MzIwMmQ5ZjhmMTU5MDU4ZGIzZmFlYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0
cl9zcGxpdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0X3Rlc3QuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQwLDggKzQwLDggQEAg
dXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsKIFRFU1QoU3BsaXQsIFRyYWl0
c1Rlc3QpIHsKICAgc3RhdGljX2Fzc2VydCghYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6U3BsaXR0
ZXJJc0NvbnZlcnRpYmxlVG88aW50Pjo6dmFsdWUsCiAgICAgICAgICAgICAgICAgIiIpOwotICBz
dGF0aWNfYXNzZXJ0KCFhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpTcGxpdHRlcklzQ29udmVydGli
bGVUbzxzdGQ6OnN0cmluZz46OnZhbHVlLAotICAgICAgICAgICAgICAgICIiKTsKKyAgc3RhdGlj
X2Fzc2VydCgKKyAgICAgICFhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpTcGxpdHRlcklzQ29udmVy
dGlibGVUbzxzdGQ6OnN0cmluZz46OnZhbHVlLCAiIik7CiAgIHN0YXRpY19hc3NlcnQoYWJzbDo6
c3RyaW5nc19pbnRlcm5hbDo6U3BsaXR0ZXJJc0NvbnZlcnRpYmxlVG88CiAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPj46OnZhbHVlLAogICAgICAgICAgICAgICAg
ICIiKTsKQEAgLTcxLDggKzcxLDggQEAgVEVTVChTcGxpdCwgVHJhaXRzVGVzdCkgewogLy8gbmFt
ZXNwYWNlcyBqdXN0IGxpa2UgY2FsbGVycyB3aWxsIG5lZWQgdG8gdXNlLgogVEVTVChTcGxpdCwg
QVBJRXhhbXBsZXMpIHsKICAgewotICAgIC8vIFBhc3NlcyBzdGQ6OnN0cmluZyBkZWxpbWl0ZXIu
IEFzc3VtZXMgdGhlIGRlZmF1bHQgb2YgTGl0ZXJhbC4KLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gdiA9IGFic2w6OlN0clNwbGl0KCJhLGIsYyIsICcsJyk7CisgICAgLy8gUGFzc2VzIHN0
ZDo6c3RyaW5nIGRlbGltaXRlci4gQXNzdW1lcyB0aGUgZGVmYXVsdCBvZiBCeVN0cmluZy4KKyAg
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IGFic2w6OlN0clNwbGl0KCJhLGIsYyIsICIs
Iik7ICAvLyBOT0xJTlQKICAgICBFWFBFQ1RfVEhBVCh2LCBFbGVtZW50c0FyZSgiYSIsICJiIiwg
ImMiKSk7CiAKICAgICAvLyBFcXVpdmFsZW50IHRvLi4uCkBAIC05NiwxNyArOTYsNiBAQCBURVNU
KFNwbGl0LCBBUElFeGFtcGxlcykgewogICAgIEVYUEVDVF9USEFUKHYsIEVsZW1lbnRzQXJlKCJh
IiwgImIiLCAiYyIpKTsKICAgfQogCi0gIHsKLSAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgdXNp
bmcgc3RkOjpzdHJpbmcKLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IGFic2w6OlN0
clNwbGl0KCJhLGIsYyIsICcsJyk7Ci0gICAgRVhQRUNUX1RIQVQodiwgRWxlbWVudHNBcmUoImEi
LCAiYiIsICJjIikpOwotCi0gICAgLy8gRXF1aXZhbGVudCB0by4uLgotICAgIHVzaW5nIGFic2w6
OkJ5Q2hhcjsKLSAgICB2ID0gYWJzbDo6U3RyU3BsaXQoImEsYixjIiwgQnlDaGFyKCcsJykpOwot
ICAgIEVYUEVDVF9USEFUKHYsIEVsZW1lbnRzQXJlKCJhIiwgImIiLCAiYyIpKTsKLSAgfQotCiAg
IHsKICAgICAvLyBVc2VzIHRoZSBMaXRlcmFsIHN0ZDo6c3RyaW5nICI9PiIgYXMgdGhlIGRlbGlt
aXRlci4KICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IGFic2w6OlN0clNw
bGl0KCJhPT5iPT5jIiwgIj0+Iik7CkBAIC0xODIsNyArMTcxLDggQEAgVEVTVChTcGxpdCwgQVBJ
RXhhbXBsZXMpIHsKICAgewogICAgIC8vIFVzZXMgdGhlIFNraXBXaGl0ZXNwYWNlIHByZWRpY2F0
ZS4KICAgICB1c2luZyBhYnNsOjpTa2lwV2hpdGVzcGFjZTsKLSAgICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gdiA9IGFic2w6OlN0clNwbGl0KCIgYSAsICwsYiwiLCAnLCcsIFNraXBXaGl0ZXNw
YWNlKCkpOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ID0KKyAgICAgICAgYWJzbDo6
U3RyU3BsaXQoIiBhICwgLCxiLCIsICcsJywgU2tpcFdoaXRlc3BhY2UoKSk7CiAgICAgRVhQRUNU
X1RIQVQodiwgRWxlbWVudHNBcmUoIiBhICIsICJiIikpOwogICB9CiAKQEAgLTIxNSw3ICsyMDUs
OCBAQCBURVNUKFNwbGl0LCBBUElFeGFtcGxlcykgewogCiAgIHsKICAgICAvLyBSZXN1bHRzIHN0
b3JlZCBpbiBhIHN0ZDo6bXVsdGltYXAuCi0gICAgc3RkOjptdWx0aW1hcDxzdGQ6OnN0cmluZywg
c3RkOjpzdHJpbmc+IG0gPSBhYnNsOjpTdHJTcGxpdCgiYSwxLGIsMixhLDMiLCAnLCcpOworICAg
IHN0ZDo6bXVsdGltYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBtID0KKyAgICAgICAgYWJz
bDo6U3RyU3BsaXQoImEsMSxiLDIsYSwzIiwgJywnKTsKICAgICBFWFBFQ1RfRVEoMywgbS5zaXpl
KCkpOwogICAgIGF1dG8gaXQgPSBtLmZpbmQoImEiKTsKICAgICBFWFBFQ1RfRVEoIjEiLCBpdC0+
c2Vjb25kKTsKQEAgLTI3MSw3ICsyNjIsOCBAQCBURVNUKFNwbGl0SXRlcmF0b3IsIEJhc2ljcykg
ewogICBFWFBFQ1RfRVEoImEiLCAqaXQpOyAgLy8gdGVzdHMgZGVyZWZlcmVuY2UKICAgKytpdDsg
ICAgICAgICAgICAgICAgIC8vIHRlc3RzIHByZWluY3JlbWVudAogICBFWFBFQ1RfTkUoaXQsIGVu
ZCk7Ci0gIEVYUEVDVF9FUSgiYiIsIHN0ZDo6c3RyaW5nKGl0LT5kYXRhKCksIGl0LT5zaXplKCkp
KTsgIC8vIHRlc3RzIGRlcmVmZXJlbmNlIGFzIHB0cgorICBFWFBFQ1RfRVEoImIiLAorICAgICAg
ICAgICAgc3RkOjpzdHJpbmcoaXQtPmRhdGEoKSwgaXQtPnNpemUoKSkpOyAgLy8gdGVzdHMgZGVy
ZWZlcmVuY2UgYXMgcHRyCiAgIGl0Kys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB0ZXN0cyBwb3N0aW5jcmVtZW50CiAgIEVYUEVDVF9FUShpdCwgZW5kKTsK
IH0KQEAgLTI5NSw3ICsyODcsOCBAQCBURVNUKFNwbGl0SXRlcmF0b3IsIFByZWRpY2F0ZSkgewog
ICBFWFBFQ1RfRVEoImEiLCAqaXQpOyAgLy8gdGVzdHMgZGVyZWZlcmVuY2UKICAgKytpdDsgICAg
ICAgICAgICAgICAgIC8vIHRlc3RzIHByZWluY3JlbWVudCAtLSAiYiIgc2hvdWxkIGJlIHNraXBw
ZWQgaGVyZS4KICAgRVhQRUNUX05FKGl0LCBlbmQpOwotICBFWFBFQ1RfRVEoImMiLCBzdGQ6OnN0
cmluZyhpdC0+ZGF0YSgpLCBpdC0+c2l6ZSgpKSk7ICAvLyB0ZXN0cyBkZXJlZmVyZW5jZSBhcyBw
dHIKKyAgRVhQRUNUX0VRKCJjIiwKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nKGl0LT5kYXRhKCks
IGl0LT5zaXplKCkpKTsgIC8vIHRlc3RzIGRlcmVmZXJlbmNlIGFzIHB0cgogICBpdCsrOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVzdHMgcG9zdGluY3Jl
bWVudAogICBFWFBFQ1RfRVEoaXQsIGVuZCk7CiB9CkBAIC00MjEsMTAgKzQxNCwxMyBAQCBURVNU
KFNwbGl0dGVyLCBDb252ZXJzaW9uT3BlcmF0b3IpIHsKICAgVGVzdE1hcENvbnZlcnNpb25PcGVy
YXRvcjxzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PihzcGxpdHRlcik7CiAgIFRl
c3RNYXBDb252ZXJzaW9uT3BlcmF0b3I8CiAgICAgICBzdGQ6Om11bHRpbWFwPGFic2w6OnN0cmlu
Z192aWV3LCBhYnNsOjpzdHJpbmdfdmlldz4+KHNwbGl0dGVyKTsKLSAgVGVzdE1hcENvbnZlcnNp
b25PcGVyYXRvcjxzdGQ6Om11bHRpbWFwPGFic2w6OnN0cmluZ192aWV3LCBzdGQ6OnN0cmluZz4+
KHNwbGl0dGVyKTsKLSAgVGVzdE1hcENvbnZlcnNpb25PcGVyYXRvcjxzdGQ6Om11bHRpbWFwPHN0
ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldz4+KHNwbGl0dGVyKTsKKyAgVGVzdE1hcENvbnZl
cnNpb25PcGVyYXRvcjxzdGQ6Om11bHRpbWFwPGFic2w6OnN0cmluZ192aWV3LCBzdGQ6OnN0cmlu
Zz4+KAorICAgICAgc3BsaXR0ZXIpOworICBUZXN0TWFwQ29udmVyc2lvbk9wZXJhdG9yPHN0ZDo6
bXVsdGltYXA8c3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3Pj4oCisgICAgICBzcGxpdHRl
cik7CiAgIFRlc3RNYXBDb252ZXJzaW9uT3BlcmF0b3I8c3RkOjptdWx0aW1hcDxzdGQ6OnN0cmlu
Zywgc3RkOjpzdHJpbmc+PihzcGxpdHRlcik7Ci0gIFRlc3RNYXBDb252ZXJzaW9uT3BlcmF0b3I8
c3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+KHNwbGl0dGVyKTsK
KyAgVGVzdE1hcENvbnZlcnNpb25PcGVyYXRvcjxzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJp
bmcsIHN0ZDo6c3RyaW5nPj4oCisgICAgICBzcGxpdHRlcik7CiAKICAgLy8gVGVzdHMgY29udmVy
c2lvbiB0byBzdGQ6OnBhaXIKIApAQCAtNTY4LDEwICs1NjQsOSBAQCBURVNUKFNwbGl0LCBBY2Nl
cHRzQ2VydGFpblRlbXBvcmFyaWVzKSB7CiB9CiAKIFRFU1QoU3BsaXQsIFRlbXBvcmFyeSkgewot
ICAvLyBVc2UgYSBzdGQ6OnN0cmluZyBsb25nZXIgdGhhbiB0aGUgc21hbGwtc3RkOjpzdHJpbmct
b3B0aW1pemF0aW9uIGxlbmd0aCwgc28gdGhhdCB3aGVuCi0gIC8vIHRoZSB0ZW1wb3JhcnkgaXMg
ZGVzdHJveWVkLCBpZiB0aGUgc3BsaXR0ZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlCi0gIC8v
IHN0ZDo6c3RyaW5nJ3MgY29udGVudHMsIGl0J2xsIHJlZmVyZW5jZSBmcmVlZCBtZW1vcnkgaW5z
dGVhZCBvZiBqdXN0IGRlYWQKLSAgLy8gb24tc3RhY2sgbWVtb3J5LgorICAvLyBVc2UgYSBzdGQ6
OnN0cmluZyBsb25nZXIgdGhhbiB0aGUgU1NPIGxlbmd0aCwgc28gdGhhdCB3aGVuIHRoZSB0ZW1w
b3JhcnkgaXMKKyAgLy8gZGVzdHJveWVkLCBpZiB0aGUgc3BsaXR0ZXIga2VlcHMgYSByZWZlcmVu
Y2UgdG8gdGhlIHN0ZDo6c3RyaW5nJ3MgY29udGVudHMsCisgIC8vIGl0J2xsIHJlZmVyZW5jZSBm
cmVlZCBtZW1vcnkgaW5zdGVhZCBvZiBqdXN0IGRlYWQgb24tc3RhY2sgbWVtb3J5LgogICBjb25z
dCBjaGFyIGlucHV0W10gPSAiYSxiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0
LHUiOwogICBFWFBFQ1RfTFQoc2l6ZW9mKHN0ZDo6c3RyaW5nKSwgQUJTTF9BUlJBWVNJWkUoaW5w
dXQpKQogICAgICAgPDwgIklucHV0IHNob3VsZCBiZSBsYXJnZXIgdGhhbiBmaXRzIG9uIHRoZSBz
dGFjay4iOwpAQCAtNjQ3LDYgKzY0MiwxMSBAQCBURVNUKFNwbGl0LCBTdHJpbmdEZWxpbWl0ZXIp
IHsKICAgfQogfQogCisjaWYgIWRlZmluZWQoX19jcHBfY2hhcjhfdCkKKyNpZiBkZWZpbmVkKF9f
Y2xhbmdfXykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdjKysyYS1jb21wYXQiCisjZW5kaWYKIFRFU1QoU3BsaXQsIFVU
RjgpIHsKICAgLy8gVGVzdHMgc3BsaXR0aW5nIHV0Zjggc3RyaW5ncyBhbmQgdXRmOCBkZWxpbWl0
ZXJzLgogICBzdGQ6OnN0cmluZyB1dGY4X3N0cmluZyA9IHU4Ilx1MDNCQVx1MUY3OVx1MDNDM1x1
MDNCQ1x1MDNCNSI7CkBAIC02NzMsNiArNjczLDEwIEBAIFRFU1QoU3BsaXQsIFVURjgpIHsKICAg
ICBFWFBFQ1RfVEhBVCh2LCBFbGVtZW50c0FyZSgiRm9vIiwgdTgiaFx1MDBFNGxsbyIsIHU4InRo
XHU0RTFFcmUiKSk7CiAgIH0KIH0KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorI2VuZGlmICAvLyAhZGVmaW5lZChfX2NwcF9jaGFy
OF90KQogCiBURVNUKFNwbGl0LCBFbXB0eVN0cmluZ0RlbGltaXRlcikgewogICB7CkBAIC03ODIs
NyArNzg2LDcgQEAgc3RhdGljIGJvb2wgSXNGb3VuZEF0KGFic2w6OnN0cmluZ192aWV3IHRleHQs
IERlbGltaXRlciBkLCBpbnQgZXhwZWN0ZWRfcG9zKSB7CiB9CiAKIC8vCi0vLyBUZXN0cyBmb3Ig
TGl0ZXJhbAorLy8gVGVzdHMgZm9yIEJ5U3RyaW5nCiAvLwogCiAvLyBUZXN0cyB1c2luZyBhbnkg
ZGVsaW1pdGVyIHRoYXQgcmVwcmVzZW50cyBhIHNpbmdsZSBjb21tYS4KQEAgLTgwMiw3ICs4MDYs
NyBAQCB2b2lkIFRlc3RDb21tYShEZWxpbWl0ZXIgZCkgewogICBFWFBFQ1RfRkFMU0UoSXNGb3Vu
ZEF0KCI7IiwgZCwgLTEpKTsKIH0KIAotVEVTVChEZWxpbWl0ZXIsIExpdGVyYWwpIHsKK1RFU1Qo
RGVsaW1pdGVyLCBCeVN0cmluZykgewogICB1c2luZyBhYnNsOjpCeVN0cmluZzsKICAgVGVzdENv
bW1hKEJ5U3RyaW5nKCIsIikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192
aWV3LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5jYwppbmRleCA0Y2VlYjZiZmY1ODBj
OGM1NTY0MmRiN2UwMWU4ZDdmMjAyMWQ5N2JmLi5kYzAzNGE4M2VlYTg3MzA0MzM2MTI4ZTU0NzE3
M2QyZmQxZmRhMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKQEAgLTc3LDE4ICs3Nyw2IEBAIHN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3I8PChzdGQ6Om9zdHJlYW0mIG8sIHN0cmluZ192aWV3IHBpZWNlKSB7CiAgIHJldHVybiBvOwog
fQogCi1zdHJpbmdfdmlldzo6c2l6ZV90eXBlIHN0cmluZ192aWV3Ojpjb3B5KGNoYXIqIGJ1Ziwg
c2l6ZV90eXBlIG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdHlwZSBwb3MpIGNvbnN0IHsKLSAgc2l6ZV90eXBlIHVsZW4gPSBsZW5ndGhfOwotICBhc3Nl
cnQocG9zIDw9IHVsZW4pOwotICBzaXplX3R5cGUgcmxlbiA9IHN0ZDo6bWluKHVsZW4gLSBwb3Ms
IG4pOwotICBpZiAocmxlbiA+IDApIHsKLSAgICBjb25zdCBjaGFyKiBzdGFydCA9IHB0cl8gKyBw
b3M7Ci0gICAgc3RkOjpjb3B5KHN0YXJ0LCBzdGFydCArIHJsZW4sIGJ1Zik7Ci0gIH0KLSAgcmV0
dXJuIHJsZW47Ci19Ci0KIHN0cmluZ192aWV3OjpzaXplX3R5cGUgc3RyaW5nX3ZpZXc6OmZpbmQo
c3RyaW5nX3ZpZXcgcywgc2l6ZV90eXBlIHBvcykgY29uc3QKICAgICBub2V4Y2VwdCB7CiAgIGlm
IChlbXB0eSgpIHx8IHBvcyA+IGxlbmd0aF8pIHsKQEAgLTIyOCw3ICsyMTYsNyBAQCBzdHJpbmdf
dmlldzo6c2l6ZV90eXBlIHN0cmluZ192aWV3OjpmaW5kX2xhc3Rfbm90X29mKGNoYXIgYywKIC8v
IG1lbWJlciBkZWZpbml0aW9ucyB0aGF0IGFyZSByZXF1aXJlZCBieSB0aGUgQysrIHN0YW5kYXJk
LCByZXN1bHRpbmcgaW4KIC8vIExOSzExNjkgIm11bHRpcGx5IGRlZmluZWQiIGVycm9ycyBhdCBs
aW5rIHRpbWUuIF9fZGVjbHNwZWMoc2VsZWN0YW55KSBhc2tzCiAvLyBNU1ZDIHRvIGNob29zZSBv
bmx5IG9uZSBkZWZpbml0aW9uIGZvciB0aGUgc3ltYm9sIGl0IGRlY29yYXRlcy4gU2VlIGRldGFp
bHMKLS8vIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS8zNGgyM2Rm
OCh2PXZzLjEwMCkuYXNweAorLy8gYXQgaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMv
bGlicmFyeS8zNGgyM2RmOCh2PXZzLjEwMCkuYXNweAogI2lmZGVmIF9NU0NfVkVSCiAjZGVmaW5l
IEFCU0xfU1RSSU5HX1ZJRVdfU0VMRUNUQU5ZIF9fZGVjbHNwZWMoc2VsZWN0YW55KQogI2Vsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3RyaW5nX3ZpZXcuaAppbmRleCBlYzlmNjJiZTE1NzMzZTNjZGU4MjU2ZGYxY2ZjNTIwYzIyZTEx
ZjBkLi4yNWE0ZDFlZGVhZmU3NGJjMGQwYmY5YWY5MjkyZDhhYjE3NzM4YTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdf
dmlldy5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zMiw3
ICszMiw3IEBACiAKICNpZmRlZiBBQlNMX0hBVkVfU1REX1NUUklOR19WSUVXCiAKLSNpbmNsdWRl
IDxzdHJpbmdfdmlldz4KKyNpbmNsdWRlIDxzdHJpbmdfdmlldz4gIC8vIElXWVUgcHJhZ21hOiBl
eHBvcnQKIAogbmFtZXNwYWNlIGFic2wgewogdXNpbmcgc3RkOjpzdHJpbmdfdmlldzsKQEAgLTUw
LDYgKzUwLDcgQEAgdXNpbmcgc3RkOjpzdHJpbmdfdmlldzsKIAogI2luY2x1ZGUgImFic2wvYmFz
ZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5oIgogI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3Mu
aCIKKyNpbmNsdWRlICJhYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgiCiAjaW5jbHVkZSAiYWJzbC9i
YXNlL3BvcnQuaCIKIAogbmFtZXNwYWNlIGFic2wgewpAQCAtMTAxLDcgKzEwMiw2IEBAIG5hbWVz
cGFjZSBhYnNsIHsKIC8vIGV4YW1wbGUsIHdoZW4gc3BsaXR0aW5nIGEgc3RyaW5nLCBgc3RkOjp2
ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+YCBpcyBhCiAvLyBuYXR1cmFsIGRhdGEgdHlwZSBmb3Ig
dGhlIG91dHB1dC4KIC8vCi0vLwogLy8gV2hlbiBjb25zdHJ1Y3RlZCBmcm9tIGEgc291cmNlIHdo
aWNoIGlzIG51bC10ZXJtaW5hdGVkLCB0aGUgYHN0cmluZ192aWV3YAogLy8gaXRzZWxmIHdpbGwg
bm90IGluY2x1ZGUgdGhlIG51bC10ZXJtaW5hdG9yIHVubGVzcyBhIHNwZWNpZmljIHNpemUgKGlu
Y2x1ZGluZwogLy8gdGhlIG51bCkgaXMgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci4gQXMgYSBy
ZXN1bHQsIGNvbW1vbiBpZGlvbXMgdGhhdCB3b3JrCkBAIC0xNzMsMTkgKzE3Myw5IEBAIGNsYXNz
IHN0cmluZ192aWV3IHsKICAgLy8gSW1wbGljaXQgY29uc3RydWN0b3Igb2YgYSBgc3RyaW5nX3Zp
ZXdgIGZyb20gbnVsLXRlcm1pbmF0ZWQgYHN0cmAuIFdoZW4KICAgLy8gYWNjZXB0aW5nIHBvc3Np
Ymx5IG51bGwgc3RyaW5ncywgdXNlIGBhYnNsOjpOdWxsU2FmZVN0cmluZ1ZpZXcoc3RyKWAKICAg
Ly8gaW5zdGVhZCAoc2VlIGJlbG93KS4KLSNpZiBBQlNMX0hBVkVfQlVJTFRJTihfX2J1aWx0aW5f
c3RybGVuKSB8fCBcCi0gICAgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fY2xhbmdf
XykpCi0gIC8vIEdDQyBoYXMgX19idWlsdGluX3N0cmxlbiBhY2NvcmRpbmcgdG8KLSAgLy8gaHR0
cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy00LjcuMC9nY2MvT3RoZXItQnVpbHRpbnMu
aHRtbCwgYnV0Ci0gIC8vIEFCU0xfSEFWRV9CVUlMVElOIGRvZXNuJ3QgZGV0ZWN0IHRoYXQsIHNv
IHdlIHVzZSB0aGUgZXh0cmEgY2hlY2tzIGFib3ZlLgotICAvLyBfX2J1aWx0aW5fc3RybGVuIGlz
IGNvbnN0ZXhwci4KICAgY29uc3RleHByIHN0cmluZ192aWV3KGNvbnN0IGNoYXIqIHN0cikgIC8v
IE5PTElOVChydW50aW1lL2V4cGxpY2l0KQogICAgICAgOiBwdHJfKHN0ciksCi0gICAgICAgIGxl
bmd0aF8oQ2hlY2tMZW5ndGhJbnRlcm5hbChzdHIgPyBfX2J1aWx0aW5fc3RybGVuKHN0cikgOiAw
KSkge30KLSNlbHNlCi0gIGNvbnN0ZXhwciBzdHJpbmdfdmlldyhjb25zdCBjaGFyKiBzdHIpICAv
LyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKLSAgICAgIDogcHRyXyhzdHIpLCBsZW5ndGhfKENo
ZWNrTGVuZ3RoSW50ZXJuYWwoc3RyID8gc3RybGVuKHN0cikgOiAwKSkge30KLSNlbmRpZgorICAg
ICAgICBsZW5ndGhfKHN0ciA/IENoZWNrTGVuZ3RoSW50ZXJuYWwoU3RybGVuSW50ZXJuYWwoc3Ry
KSkgOiAwKSB7fQogCiAgIC8vIEltcGxpY2l0IGNvbnN0cnVjdG9yIG9mIGEgYHN0cmluZ192aWV3
YCBmcm9tIGEgYGNvbnN0IGNoYXIqYCBhbmQgbGVuZ3RoLgogICBjb25zdGV4cHIgc3RyaW5nX3Zp
ZXcoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90eXBlIGxlbikKQEAgLTI3Nyw3ICsyNjcsNyBAQCBj
bGFzcyBzdHJpbmdfdmlldyB7CiAgIC8vIENoZWNrcyBpZiB0aGUgYHN0cmluZ192aWV3YCBpcyBl
bXB0eSAocmVmZXJzIHRvIG5vIGNoYXJhY3RlcnMpLgogICBjb25zdGV4cHIgYm9vbCBlbXB0eSgp
IGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGxlbmd0aF8gPT0gMDsgfQogCi0gIC8vIHN0ZDo6c3Ry
aW5nOnZpZXc6Om9wZXJhdG9yW10KKyAgLy8gc3RyaW5nX3ZpZXc6Om9wZXJhdG9yW10KICAgLy8K
ICAgLy8gUmV0dXJucyB0aGUgaXRoIGVsZW1lbnQgb2YgYW4gYHN0cmluZ192aWV3YCB1c2luZyB0
aGUgYXJyYXkgb3BlcmF0b3IuCiAgIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdG9yIGRvZXMgbm90
IHBlcmZvcm0gYW55IGJvdW5kcyBjaGVja2luZy4KQEAgLTM0NSw3ICszMzUsMTcgQEAgY2xhc3Mg
c3RyaW5nX3ZpZXcgewogICAvLwogICAvLyBDb3BpZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBgc3Ry
aW5nX3ZpZXdgIGF0IG9mZnNldCBgcG9zYCBhbmQgbGVuZ3RoIGBuYAogICAvLyBpbnRvIGBidWZg
LgotICBzaXplX3R5cGUgY29weShjaGFyKiBidWYsIHNpemVfdHlwZSBuLCBzaXplX3R5cGUgcG9z
ID0gMCkgY29uc3Q7CisgIHNpemVfdHlwZSBjb3B5KGNoYXIqIGJ1Ziwgc2l6ZV90eXBlIG4sIHNp
emVfdHlwZSBwb3MgPSAwKSBjb25zdCB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShwb3Mg
PiBsZW5ndGhfKSkgeworICAgICAgYmFzZV9pbnRlcm5hbDo6VGhyb3dTdGRPdXRPZlJhbmdlKCJh
YnNsOjpzdHJpbmdfdmlldzo6Y29weSIpOworICAgIH0KKyAgICBzaXplX3R5cGUgcmxlbiA9IChz
dGQ6Om1pbikobGVuZ3RoXyAtIHBvcywgbik7CisgICAgaWYgKHJsZW4gPiAwKSB7CisgICAgICBj
b25zdCBjaGFyKiBzdGFydCA9IHB0cl8gKyBwb3M7CisgICAgICBzdGQ6OmNvcHkoc3RhcnQsIHN0
YXJ0ICsgcmxlbiwgYnVmKTsKKyAgICB9CisgICAgcmV0dXJuIHJsZW47CisgIH0KIAogICAvLyBz
dHJpbmdfdmlldzo6c3Vic3RyKCkKICAgLy8KQEAgLTM1NSw3ICszNTUsNyBAQCBjbGFzcyBzdHJp
bmdfdmlldyB7CiAgIHN0cmluZ192aWV3IHN1YnN0cihzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUg
biA9IG5wb3MpIGNvbnN0IHsKICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHBvcyA+IGxlbmd0
aF8pKQogICAgICAgYmFzZV9pbnRlcm5hbDo6VGhyb3dTdGRPdXRPZlJhbmdlKCJhYnNsOjpzdHJp
bmdfdmlldzo6c3Vic3RyIik7Ci0gICAgbiA9IHN0ZDo6bWluKG4sIGxlbmd0aF8gLSBwb3MpOwor
ICAgIG4gPSAoc3RkOjptaW4pKG4sIGxlbmd0aF8gLSBwb3MpOwogICAgIHJldHVybiBzdHJpbmdf
dmlldyhwdHJfICsgcG9zLCBuKTsKICAgfQogCkBAIC0zNjgsNyArMzY4LDcgQEAgY2xhc3Mgc3Ry
aW5nX3ZpZXcgewogICAvLyBvbiB0aGUgcmVzcGVjdGl2ZSBzaXplcyBvZiB0aGUgdHdvIGBzdHJp
bmdfdmlld2BzIHRvIGRldGVybWluZSB3aGljaCBpcwogICAvLyBzbWFsbGVyLCBlcXVhbCwgb3Ig
Z3JlYXRlci4KICAgaW50IGNvbXBhcmUoc3RyaW5nX3ZpZXcgeCkgY29uc3Qgbm9leGNlcHQgewot
ICAgIGF1dG8gbWluX2xlbmd0aCA9IHN0ZDo6bWluKGxlbmd0aF8sIHgubGVuZ3RoXyk7CisgICAg
YXV0byBtaW5fbGVuZ3RoID0gKHN0ZDo6bWluKShsZW5ndGhfLCB4Lmxlbmd0aF8pOwogICAgIGlm
IChtaW5fbGVuZ3RoID4gMCkgewogICAgICAgaW50IHIgPSBtZW1jbXAocHRyXywgeC5wdHJfLCBt
aW5fbGVuZ3RoKTsKICAgICAgIGlmIChyIDwgMCkgcmV0dXJuIC0xOwpAQCAtNDkwLDEwICs0OTAs
MjggQEAgY2xhc3Mgc3RyaW5nX3ZpZXcgewogCiAgcHJpdmF0ZToKICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3R5cGUga01heFNpemUgPQotICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkaWZmZXJl
bmNlX3R5cGU+OjptYXgoKTsKKyAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPGRpZmZlcmVuY2Vf
dHlwZT46Om1heCkoKTsKIAogICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBDaGVja0xlbmd0
aEludGVybmFsKHNpemVfdHlwZSBsZW4pIHsKLSAgICByZXR1cm4gbGVuOworICAgIHJldHVybiBB
QlNMX0FTU0VSVChsZW4gPD0ga01heFNpemUpLCBsZW47CisgIH0KKworICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdHlwZSBTdHJsZW5JbnRlcm5hbChjb25zdCBjaGFyKiBzdHIpIHsKKyNpZiBkZWZp
bmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxOTEwICYmICFkZWZpbmVkKF9fY2xhbmdfXykK
KyAgICAvLyBNU1ZDIDIwMTcrIGNhbiBldmFsdWF0ZSB0aGlzIGF0IGNvbXBpbGUtdGltZS4KKyAg
ICBjb25zdCBjaGFyKiBiZWdpbiA9IHN0cjsKKyAgICB3aGlsZSAoKnN0ciAhPSAnXDAnKSArK3N0
cjsKKyAgICByZXR1cm4gc3RyIC0gYmVnaW47CisjZWxpZiBBQlNMX0hBVkVfQlVJTFRJTihfX2J1
aWx0aW5fc3RybGVuKSB8fCBcCisgICAgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9f
Y2xhbmdfXykpCisgICAgLy8gR0NDIGhhcyBfX2J1aWx0aW5fc3RybGVuIGFjY29yZGluZyB0bwor
ICAgIC8vIGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC43LjAvZ2NjL090aGVy
LUJ1aWx0aW5zLmh0bWwsIGJ1dAorICAgIC8vIEFCU0xfSEFWRV9CVUlMVElOIGRvZXNuJ3QgZGV0
ZWN0IHRoYXQsIHNvIHdlIHVzZSB0aGUgZXh0cmEgY2hlY2tzIGFib3ZlLgorICAgIC8vIF9fYnVp
bHRpbl9zdHJsZW4gaXMgY29uc3RleHByLgorICAgIHJldHVybiBfX2J1aWx0aW5fc3RybGVuKHN0
cik7CisjZWxzZQorICAgIHJldHVybiBzdHIgPyBzdHJsZW4oc3RyKSA6IDA7CisjZW5kaWYKICAg
fQogCiAgIGNvbnN0IGNoYXIqIHB0cl87CkBAIC01MDgsNiArNTI2LDcgQEAgaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShzdHJpbmdfdmlldyB4LCBzdHJpbmdfdmlldyB5KSBub2V4Y2VwdCB7CiAgIGlm
IChsZW4gIT0geS5zaXplKCkpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KKwogICByZXR1cm4g
eC5kYXRhKCkgPT0geS5kYXRhKCkgfHwgbGVuIDw9IDAgfHwKICAgICAgICAgIG1lbWNtcCh4LmRh
dGEoKSwgeS5kYXRhKCksIGxlbikgPT0gMDsKIH0KQEAgLTUxNyw3ICs1MzYsNyBAQCBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KHN0cmluZ192aWV3IHgsIHN0cmluZ192aWV3IHkpIG5vZXhjZXB0IHsK
IH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3I8KHN0cmluZ192aWV3IHgsIHN0cmluZ192aWV3IHkp
IG5vZXhjZXB0IHsKLSAgYXV0byBtaW5fc2l6ZSA9IHN0ZDo6bWluKHguc2l6ZSgpLCB5LnNpemUo
KSk7CisgIGF1dG8gbWluX3NpemUgPSAoc3RkOjptaW4pKHguc2l6ZSgpLCB5LnNpemUoKSk7CiAg
IGNvbnN0IGludCByID0gbWluX3NpemUgPT0gMCA/IDAgOiBtZW1jbXAoeC5kYXRhKCksIHkuZGF0
YSgpLCBtaW5fc2l6ZSk7CiAgIHJldHVybiAociA8IDApIHx8IChyID09IDAgJiYgeC5zaXplKCkg
PCB5LnNpemUoKSk7CiB9CkBAIC01NDcsNyArNTY2LDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8g
UHJvdmlkZWQgYmVjYXVzZSBzdGQ6OnN0cmluZ192aWV3OjpzdWJzdHIgdGhyb3dzIGlmIGBwb3Mg
PiBzaXplKClgCiBpbmxpbmUgc3RyaW5nX3ZpZXcgQ2xpcHBlZFN1YnN0cihzdHJpbmdfdmlldyBz
LCBzaXplX3QgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG4g
PSBzdHJpbmdfdmlldzo6bnBvcykgewotICBwb3MgPSBzdGQ6Om1pbihwb3MsIHN0YXRpY19jYXN0
PHNpemVfdD4ocy5zaXplKCkpKTsKKyAgcG9zID0gKHN0ZDo6bWluKShwb3MsIHN0YXRpY19jYXN0
PHNpemVfdD4ocy5zaXplKCkpKTsKICAgcmV0dXJuIHMuc3Vic3RyKHBvcywgbik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXdfYmVuY2htYXJrLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJpbmdfdmlld19iZW5jaG1hcmsuY2MKaW5kZXggZmI0NmRiMThiM2MzOTAyYjBk
N2Q2OGVjYjUzYjA2YTU3YWQ1NWQzZi4uNDY5MDljYjA5M2Q0NDM5ZmZiMzVkZTI0ZDJiNmU4Y2Fj
NGZiNjEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlld19iZW5jaG1hcmsu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlld19iZW5jaG1hcmsuY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lk
IEJNX2ZpbmRfc3RyaW5nX3ZpZXdfbGVuX29uZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewog
ICBzdGQ6OnN0cmluZyBoYXlzdGFjayhzdGF0ZS5yYW5nZSgwKSwgJzAnKTsKICAgYWJzbDo6c3Ry
aW5nX3ZpZXcgcyhoYXlzdGFjayk7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBzLmZp
bmQoIngiKTsgIC8vIG5vdCBwcmVzZW50OyBsZW5ndGggMQorICAgIGJlbmNobWFyazo6RG9Ob3RP
cHRpbWl6ZShzLmZpbmQoIngiKSk7ICAvLyBub3QgcHJlc2VudDsgbGVuZ3RoIDEKICAgfQogfQog
QkVOQ0hNQVJLKEJNX2ZpbmRfc3RyaW5nX3ZpZXdfbGVuX29uZSktPlJhbmdlKDEsIDEgPDwgMjAp
OwpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgQk1fZmluZF9zdHJpbmdfdmlld19sZW5fdHdvKGJl
bmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIHN0ZDo6c3RyaW5nIGhheXN0YWNrKHN0YXRlLnJh
bmdlKDApLCAnMCcpOwogICBhYnNsOjpzdHJpbmdfdmlldyBzKGhheXN0YWNrKTsKICAgZm9yIChh
dXRvIF8gOiBzdGF0ZSkgewotICAgIHMuZmluZCgieHgiKTsgIC8vIG5vdCBwcmVzZW50OyBsZW5n
dGggMgorICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShzLmZpbmQoInh4IikpOyAgLy8gbm90
IHByZXNlbnQ7IGxlbmd0aCAyCiAgIH0KIH0KIEJFTkNITUFSSyhCTV9maW5kX3N0cmluZ192aWV3
X2xlbl90d28pLT5SYW5nZSgxLCAxIDw8IDIwKTsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEJN
X2ZpbmRfb25lX2NoYXIoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgc3RkOjpzdHJpbmcg
aGF5c3RhY2soc3RhdGUucmFuZ2UoMCksICcwJyk7CiAgIGFic2w6OnN0cmluZ192aWV3IHMoaGF5
c3RhY2spOwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgcy5maW5kKCd4Jyk7ICAvLyBu
b3QgcHJlc2VudAorICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShzLmZpbmQoJ3gnKSk7ICAv
LyBub3QgcHJlc2VudAogICB9CiB9CiBCRU5DSE1BUksoQk1fZmluZF9vbmVfY2hhciktPlJhbmdl
KDEsIDEgPDwgMjApOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgQk1fcmZpbmRfb25lX2NoYXIo
YmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgc3RkOjpzdHJpbmcgaGF5c3RhY2soc3RhdGUu
cmFuZ2UoMCksICcwJyk7CiAgIGFic2w6OnN0cmluZ192aWV3IHMoaGF5c3RhY2spOwogICBmb3Ig
KGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgcy5yZmluZCgneCcpOyAgLy8gbm90IHByZXNlbnQKKyAg
ICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocy5yZmluZCgneCcpKTsgIC8vIG5vdCBwcmVzZW50
CiAgIH0KIH0KIEJFTkNITUFSSyhCTV9yZmluZF9vbmVfY2hhciktPlJhbmdlKDEsIDEgPDwgMjAp
OwpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgQk1fd29yc3RfY2FzZV9maW5kX2ZpcnN0X29mKGJl
bmNobWFyazo6U3RhdGUmIHN0YXRlLCBpbnQgaGF5c3RhY2tfbGVuKSB7CiAKICAgYWJzbDo6c3Ry
aW5nX3ZpZXcgcyhoYXlzdGFjayk7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBzLmZp
bmRfZmlyc3Rfb2YobmVlZGxlKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocy5maW5k
X2ZpcnN0X29mKG5lZWRsZSkpOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3RyaW5nX3ZpZXdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXdfdGVzdC5jYwpp
bmRleCBhOTRlODIyNTRlZTQ1MjFkZmMxMWIwNWFhODlkMGU3NDFjYTViN2NhLi40MTkzNTNmMDgz
ZWE0NWVjMDNjMzllMTIwMzI0YjA2YmI4MWU1OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cmluZ192aWV3X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlld190ZXN0
LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yODQsOSAr
Mjg0LDEwIEBAIFRFU1QoU3RyaW5nVmlld1Rlc3QsIENvbXBhcmlzb25PcGVyYXRvcnNCeUNoYXJh
Y3RlclBvc2l0aW9uKSB7CiB9CiAjdW5kZWYgQ09NUEFSRQogCi0vLyBTYWRseSwgb3VyIHVzZXJz
IG9mdGVuIGNvbmZ1c2Ugc3RyaW5nOjpucG9zIHdpdGggYWJzbDo6c3RyaW5nX3ZpZXc6Om5wb3M7
Ci0vLyBTbyBtdWNoIHNvIHRoYXQgd2UgdGVzdCBoZXJlIHRoYXQgdGhleSBhcmUgdGhlIHNhbWUu
ICBUaGV5IG5lZWQgdG8KLS8vIGJvdGggYmUgdW5zaWduZWQsIGFuZCBib3RoIGJlIHRoZSBtYXhp
bXVtLXZhbHVlZCBpbnRlZ2VyIG9mIHRoZWlyIHR5cGUuCisvLyBTYWRseSwgb3VyIHVzZXJzIG9m
dGVuIGNvbmZ1c2Ugc3RkOjpzdHJpbmc6Om5wb3Mgd2l0aAorLy8gYWJzbDo6c3RyaW5nX3ZpZXc6
Om5wb3M7IFNvIG11Y2ggc28gdGhhdCB3ZSB0ZXN0IGhlcmUgdGhhdCB0aGV5IGFyZSB0aGUgc2Ft
ZS4KKy8vIFRoZXkgbmVlZCB0byBib3RoIGJlIHVuc2lnbmVkLCBhbmQgYm90aCBiZSB0aGUgbWF4
aW11bS12YWx1ZWQgaW50ZWdlciBvZgorLy8gdGhlaXIgdHlwZS4KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiBzdHJ1Y3QgaXNfdHlwZSB7CkBAIC0zNjgsNiArMzY5LDExIEBAIFRFU1QoU3RyaW5n
Vmlld1Rlc3QsIFNUTDEpIHsKICAgRVhQRUNUX0VRKGJ1ZlsxXSwgY1sxXSk7CiAgIEVYUEVDVF9F
UShidWZbMl0sIGNbMl0pOwogICBFWFBFQ1RfRVEoYnVmWzNdLCBhWzNdKTsKKyNpZmRlZiBBQlNM
X0hBVkVfRVhDRVBUSU9OUworICBFWFBFQ1RfVEhST1coYS5jb3B5KGJ1ZiwgMSwgMjcpLCBzdGQ6
Om91dF9vZl9yYW5nZSk7CisjZWxzZQorICBFWFBFQ1RfREVBVEgoYS5jb3B5KGJ1ZiwgMSwgMjcp
LCAiYWJzbDo6c3RyaW5nX3ZpZXc6OmNvcHkiKTsKKyNlbmRpZgogfQogCiAvLyBTZXBhcmF0ZWQg
ZnJvbSBTVEwxKCkgYmVjYXVzZSBzb21lIGNvbXBpbGVycyBwcm9kdWNlIGFuIG92ZXJseQpAQCAt
Njc4LDkgKzY4NCw5IEBAIFRFU1QoU3RyaW5nVmlld1Rlc3QsIFNUTDJTdWJzdHIpIHsKICAgRVhQ
RUNUX0VRKGEuc3Vic3RyKDIzLCBhYnNsOjpzdHJpbmdfdmlldzo6bnBvcyksIGMpOwogICAvLyB0
aHJvdyBleGNlcHRpb24KICNpZmRlZiBBQlNMX0hBVkVfRVhDRVBUSU9OUwotICBFWFBFQ1RfVEhS
T1coYS5zdWJzdHIoOTksIDIpLCBzdGQ6Om91dF9vZl9yYW5nZSk7CisgIEVYUEVDVF9USFJPVygo
dm9pZClhLnN1YnN0cig5OSwgMiksIHN0ZDo6b3V0X29mX3JhbmdlKTsKICNlbHNlCi0gIEVYUEVD
VF9ERUFUSChhLnN1YnN0cig5OSwgMiksICJhYnNsOjpzdHJpbmdfdmlldzo6c3Vic3RyIik7Cisg
IEVYUEVDVF9ERUFUSCgodm9pZClhLnN1YnN0cig5OSwgMiksICJhYnNsOjpzdHJpbmdfdmlldzo6
c3Vic3RyIik7CiAjZW5kaWYKIH0KIApAQCAtNzU1LDcgKzc2MSw2IEBAIFRFU1QoU3RyaW5nVmll
d1Rlc3QsIFJlbW92ZSkgewogICBzdGQ6OnN0cmluZyBzMSgiMTIzIik7CiAgIHMxICs9ICdcMCc7
CiAgIHMxICs9ICI0NTYiOwotICBhYnNsOjpzdHJpbmdfdmlldyBiKHMxKTsKICAgYWJzbDo6c3Ry
aW5nX3ZpZXcgZTsKICAgc3RkOjpzdHJpbmcgczI7CiAKQEAgLTk0MSw2ICs5NDYsMTEgQEAgVEVT
VChTdHJpbmdWaWV3VGVzdCwgQ29uc3RleHByQ29tcGlsZXMpIHsKICNlcnJvciBHQ0MvY2xhbmcg
c2hvdWxkIGhhdmUgY29uc3RleHByIHN0cmluZ192aWV3LgogI2VuZGlmCiAKKy8vIE1TVkMgMjAx
Nysgc2hvdWxkIGJlIGFibGUgdG8gY29uc3RydWN0IGEgY29uc3RleHByIHN0cmluZ192aWV3IGZy
b20gYSBjc3RyLgorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE5MTAKKyNk
ZWZpbmUgQUJTTF9IQVZFX0NPTlNURVhQUl9TVFJJTkdfVklFV19GUk9NX0NTVFIgMQorI2VuZGlm
CisKICNlbmRpZiAgLy8gQUJTTF9IQVZFX1NURF9TVFJJTkdfVklFVwogCiAjaWZkZWYgQUJTTF9I
QVZFX0NPTlNURVhQUl9TVFJJTkdfVklFV19GUk9NX0NTVFIKQEAgLTk2OSw4ICs5NzksMTYgQEAg
VEVTVChTdHJpbmdWaWV3VGVzdCwgQ29uc3RleHByQ29tcGlsZXMpIHsKICAgY29uc3RleHByIGFi
c2w6OnN0cmluZ192aWV3OjppdGVyYXRvciBjb25zdF9lbmQgPSBjc3RyX2xlbi5lbmQoKTsKICAg
Y29uc3RleHByIGFic2w6OnN0cmluZ192aWV3OjpzaXplX3R5cGUgY29uc3Rfc2l6ZSA9IGNzdHJf
bGVuLnNpemUoKTsKICAgY29uc3RleHByIGFic2w6OnN0cmluZ192aWV3OjpzaXplX3R5cGUgY29u
c3RfbGVuZ3RoID0gY3N0cl9sZW4ubGVuZ3RoKCk7CisgIHN0YXRpY19hc3NlcnQoY29uc3RfYmVn
aW4gKyBjb25zdF9zaXplID09IGNvbnN0X2VuZCwKKyAgICAgICAgICAgICAgICAicG9pbnRlciBh
cml0aG1ldGljIGNoZWNrIik7CisgIHN0YXRpY19hc3NlcnQoY29uc3RfYmVnaW4gKyBjb25zdF9s
ZW5ndGggPT0gY29uc3RfZW5kLAorICAgICAgICAgICAgICAgICJwb2ludGVyIGFyaXRobWV0aWMg
Y2hlY2siKTsKKyNpZm5kZWYgX01TQ19WRVIKKyAgLy8gTVNWQyBoYXMgYnVncyBkb2luZyBjb25z
dGV4cHIgcG9pbnRlciBhcml0aG1ldGljLgorICAvLyBodHRwczovL2RldmVsb3BlcmNvbW11bml0
eS52aXN1YWxzdHVkaW8uY29tL2NvbnRlbnQvcHJvYmxlbS80ODIxOTIvYmFkLXBvaW50ZXItYXJp
dGhtZXRpYy1pbi1jb25zdGVweHItMjAxOS1yYzEtc3ZjMS5odG1sCiAgIEVYUEVDVF9FUShjb25z
dF9iZWdpbiArIGNvbnN0X3NpemUsIGNvbnN0X2VuZCk7CiAgIEVYUEVDVF9FUShjb25zdF9iZWdp
biArIGNvbnN0X2xlbmd0aCwgY29uc3RfZW5kKTsKKyNlbmRpZgogCiAgIGNvbnN0ZXhwciBib29s
IGlzZW1wdHkgPSBzcC5lbXB0eSgpOwogICBFWFBFQ1RfVFJVRShpc2VtcHR5KTsKQEAgLTk5NSw4
ICsxMDEzLDggQEAgVEVTVChTdHJpbmdWaWV3VGVzdCwgQ29uc3RleHByQ29tcGlsZXMpIHsKIFRF
U1QoU3RyaW5nVmlld1Rlc3QsIE5vZXhjZXB0KSB7CiAgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX25v
dGhyb3dfY29uc3RydWN0aWJsZTxhYnNsOjpzdHJpbmdfdmlldywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJj46OnZhbHVlKSk7
Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgKHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPGFi
c2w6OnN0cmluZ192aWV3LCBjb25zdCBzdGQ6OnN0cmluZyY+Ojp2YWx1ZSkpOworICBFWFBFQ1Rf
VFJVRSgoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8YWJzbDo6c3RyaW5nX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyY+Ojp2YWx1ZSkpOwogICBFWFBFQ1RfVFJVRShzdGQ6OmlzX25vdGhyb3dfY29uc3RydWN0
aWJsZTxhYnNsOjpzdHJpbmdfdmlldz46OnZhbHVlKTsKICAgY29uc3RleHByIGFic2w6OnN0cmlu
Z192aWV3IHNwOwogICBFWFBFQ1RfVFJVRShub2V4Y2VwdChzcC5iZWdpbigpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwLmgKaW5kZXgg
OGQwZDdjNmJmYzEyMzBmMGMzOWExNTEyMThlMWNjOTI3Yjg4MzZiZi4uZTEzNDFlMDhlYTc2ODFm
NzkxMmNkZDQ4NmZkYTFlMTI0ODIwZTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJp
cC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXAuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcF90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJpcF90ZXN0LmNjCmluZGV4IDQwYzRjNjA3MTIxMTIwODEwNGM3
ZGRiMmZkY2YzNzY1MTk5MjQzNDcuLmU0ZTAwY2I2NmViY2Y3ZjE4OTc4YzNjNjI2NzczMzBlZjI1
ZGRhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXBfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cmlwX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKQEAgLTI3LDkgKzI3LDYgQEAKIAogbmFtZXNwYWNlIHsKIAotdXNpbmcgdGVzdGlu
Zzo6RWxlbWVudHNBcmU7Ci11c2luZyB0ZXN0aW5nOjpJc0VtcHR5OwotCiBURVNUKFN0cmlwLCBD
b25zdW1lUHJlZml4T25lQ2hhcikgewogICBhYnNsOjpzdHJpbmdfdmlldyBpbnB1dCgiYWJjIik7
CiAgIEVYUEVDVF9UUlVFKGFic2w6OkNvbnN1bWVQcmVmaXgoJmlucHV0LCAiYSIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Vic3Rp
dHV0ZS5jYwppbmRleCAzYjIwMDU5NDUwOTUxNjEzOTQxOWQ4ZjIxY2ZkNGFkMjEwMDE0Zjc5Li5i
YzE3Njk1MGU0NTMzZWQ1YzA4YWEzYWZlODIxNjY2NjQ3NmMyZTkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N1YnN0aXR1dGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5oCmlu
ZGV4IDRkZTdiNGU3NWZmMjNiNDEzNDFmZDYzNWNmMjIxZGE2NjliZDUxZDQuLjIzM2U5ZGNmOTM4
NjBiNzYyYzM5M2Q0ZTQ1Y2NjODZjMGU3ZThlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3Vic3RpdHV0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5oCkBAIC01LDcgKzUs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zNSwxOSArMzUsMjEgQEAKIC8vIGFu
ZCBzaW5nbGUgZGlnaXQgcG9zaXRpb25hbCBpZHMgdG8gaW5kaWNhdGUgd2hpY2ggc3Vic3RpdHV0
aW9uIGFyZ3VtZW50cyB0bwogLy8gdXNlIGF0IHRoYXQgbG9jYXRpb24gd2l0aGluIHRoZSBmb3Jt
YXQgc3RyaW5nLgogLy8KKy8vIEEgJyQkJyBzZXF1ZW5jZSBpbiB0aGUgZm9ybWF0IHN0cmluZyBj
YXVzZXMgYSBsaXRlcmFsICckJyBjaGFyYWN0ZXIgdG8gYmUKKy8vIG91dHB1dC4KKy8vCiAvLyBF
eGFtcGxlIDE6Ci0vLyAgIHN0cmluZyBzID0gU3Vic3RpdHV0ZSgiJDEgcHVyY2hhc2VkICQwICQy
LiBUaGFua3MgJDEhIiwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIDUsICJCb2IiLCAiQXBw
bGVzIik7Ci0vLyAgIEVYUEVDVF9FUSgiQm9iIHB1cmNoYXNlZCA1IEFwcGxlcy4gVGhhbmtzIEJv
YiEiLCBzKTsKKy8vICAgc3RkOjpzdHJpbmcgcyA9IFN1YnN0aXR1dGUoIiQxIHB1cmNoYXNlZCAk
MCAkMiBmb3IgJCQxMC4gVGhhbmtzICQxISIsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUsICJCb2IiLCAiQXBwbGVzIik7CisvLyAgIEVYUEVDVF9FUSgiQm9iIHB1cmNoYXNlZCA1
IEFwcGxlcyBmb3IgJDEwLiBUaGFua3MgQm9iISIsIHMpOwogLy8KIC8vIEV4YW1wbGUgMjoKLS8v
ICAgc3RyaW5nIHMgPSAiSGkuICI7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSAiSGkuICI7CiAvLyAg
IFN1YnN0aXR1dGVBbmRBcHBlbmQoJnMsICJNeSBuYW1lIGlzICQwIGFuZCBJIGFtICQxIHllYXJz
IG9sZC4iLCAiQm9iIiwgNSk7CiAvLyAgIEVYUEVDVF9FUSgiSGkuIE15IG5hbWUgaXMgQm9iIGFu
ZCBJIGFtIDUgeWVhcnMgb2xkLiIsIHMpOwogLy8KLS8vCiAvLyBTdXBwb3J0ZWQgdHlwZXM6Ci0v
LyAgICogYWJzbDo6c3RyaW5nX3ZpZXcsIHN0cmluZywgY29uc3QgY2hhciogKG51bGwgaXMgZXF1
aXZhbGVudCB0byAiIikKKy8vICAgKiBhYnNsOjpzdHJpbmdfdmlldywgc3RkOjpzdHJpbmcsIGNv
bnN0IGNoYXIqIChudWxsIGlzIGVxdWl2YWxlbnQgdG8gIiIpCiAvLyAgICogaW50MzJfdCwgaW50
NjRfdCwgdWludDMyX3QsIHVpbnQ2NAogLy8gICAqIGZsb2F0LCBkb3VibGUKIC8vICAgKiBib29s
IChQcmludGVkIGFzICJ0cnVlIiBvciAiZmFsc2UiKQpAQCAtNzAsNiArNzIsOCBAQAogCiAjaW5j
bHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgogI2lu
Y2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiCkBAIC0xNTIsNiArMTU2LDE3IEBAIGNsYXNzIEFyZyB7
CiAgIEFyZyhIZXggaGV4KTsgIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0KQogICBBcmcoRGVj
IGRlYyk7ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKIAorICAvLyB2ZWN0b3I8Ym9vbD46
OnJlZmVyZW5jZSBhbmQgY29uc3RfcmVmZXJlbmNlIHJlcXVpcmUgc3BlY2lhbCBoZWxwIHRvCisg
IC8vIGNvbnZlcnQgdG8gYEFscGhhTnVtYCBiZWNhdXNlIGl0IHJlcXVpcmVzIHR3byB1c2VyIGRl
ZmluZWQgY29udmVyc2lvbnMuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBULAorICAgICAgICAgICAg
YWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICAgICAgICAgc3RkOjppc19jbGFzczxUPjo6dmFs
dWUgJiYKKyAgICAgICAgICAgICAgICAoc3RkOjppc19zYW1lPFQsIHN0ZDo6dmVjdG9yPGJvb2w+
OjpyZWZlcmVuY2U+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VCwg
c3RkOjp2ZWN0b3I8Ym9vbD46OmNvbnN0X3JlZmVyZW5jZT46OnZhbHVlKT4qID0KKyAgICAgICAg
ICAgICAgICBudWxscHRyPgorICBBcmcoVCB2YWx1ZSkgIC8vIE5PTElOVChnb29nbGUtZXhwbGlj
aXQtY29uc3RydWN0b3IpCisgICAgICA6IEFyZyhzdGF0aWNfY2FzdDxib29sPih2YWx1ZSkpIHt9
CisKICAgLy8gYHZvaWQqYCB2YWx1ZXMsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBgY2hhcipgLCBh
cmUgcHJpbnRlZCBhcwogICAvLyAiMHg8aGV4IHZhbHVlPiIuIEhvd2V2ZXIsIGluIHRoZSBjYXNl
IG9mIGBudWxscHRyYCwgIk5VTEwiIGlzIHByaW50ZWQuCiAgIEFyZyhjb25zdCB2b2lkKiB2YWx1
ZSk7ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKQEAgLTQ1Niw3ICs0NzEsNyBAQCB2b2lk
IFN1YnN0aXR1dGVBbmRBcHBlbmQoCiAvLyBFeGFtcGxlOgogLy8gIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgogLy8gIHZvaWQgVmFyTXNnKGFic2w6OnN0cmluZ192aWV3IGZvcm1hdCwgY29u
c3QgQXJncyYuLi4gYXJncykgewotLy8gICAgc3RyaW5nIHMgPSBhYnNsOjpTdWJzdGl0dXRlKGZv
cm1hdCwgYXJncy4uLik7CisvLyAgICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3Vic3RpdHV0ZShm
b3JtYXQsIGFyZ3MuLi4pOwogCiBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgc3RkOjpzdHJp
bmcgU3Vic3RpdHV0ZShhYnNsOjpzdHJpbmdfdmlldyBmb3JtYXQpIHsKICAgc3RkOjpzdHJpbmcg
cmVzdWx0OwpAQCAtNTc0LDcwICs1ODksNzAgQEAgc3RkOjpzdHJpbmcgU3Vic3RpdHV0ZShjb25z
dCBjaGFyKiBmb3JtYXQsIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTApCiAgICAg
ICAgICAgICAgICAgICAgICAiY29udGFpbnMgb25lIG9mICQxLSQ5Iik7CiAKIHN0ZDo6c3RyaW5n
IFN1YnN0aXR1dGUoY29uc3QgY2hhciogZm9ybWF0LCBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFs
OjpBcmcmIGEwLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6
QXJnJiBhMSkKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5h
bDo6QXJnJiBhMSkKICAgICBBQlNMX0JBRF9DQUxMX0lGKHN1YnN0aXR1dGVfaW50ZXJuYWw6OlBs
YWNlaG9sZGVyQml0bWFzayhmb3JtYXQpICE9IDMsCiAgICAgICAgICAgICAgICAgICAgICAiVGhl
cmUgd2VyZSAyIHN1YnN0aXR1dGlvbiBhcmd1bWVudHMgZ2l2ZW4sIGJ1dCAiCiAgICAgICAgICAg
ICAgICAgICAgICAidGhpcyBmb3JtYXQgc3RkOjpzdHJpbmcgaXMgZWl0aGVyIG1pc3NpbmcgaXRz
ICQwLyQxLCBvciAiCiAgICAgICAgICAgICAgICAgICAgICAiY29udGFpbnMgb25lIG9mICQyLSQ5
Iik7CiAKIHN0ZDo6c3RyaW5nIFN1YnN0aXR1dGUoY29uc3QgY2hhciogZm9ybWF0LCBjb25zdCBz
dWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEwLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vi
c3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0
aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTIpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1
YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTIpCiAgICAgQUJTTF9CQURfQ0FMTF9JRihzdWJz
dGl0dXRlX2ludGVybmFsOjpQbGFjZWhvbGRlckJpdG1hc2soZm9ybWF0KSAhPSA3LAogICAgICAg
ICAgICAgICAgICAgICAgIlRoZXJlIHdlcmUgMyBzdWJzdGl0dXRpb24gYXJndW1lbnRzIGdpdmVu
LCBidXQgIgogICAgICAgICAgICAgICAgICAgICAgInRoaXMgZm9ybWF0IHN0ZDo6c3RyaW5nIGlz
IGVpdGhlciBtaXNzaW5nIGl0cyAkMC8kMS8kMiwgb3IgIgogICAgICAgICAgICAgICAgICAgICAg
ImNvbnRhaW5zIG9uZSBvZiAkMy0kOSIpOwogCiBzdGQ6OnN0cmluZyBTdWJzdGl0dXRlKGNvbnN0
IGNoYXIqIGZvcm1hdCwgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMCwKLSAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEsCi0gICAgICAg
ICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEyLAotICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMykKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMykKICAg
ICBBQlNMX0JBRF9DQUxMX0lGKHN1YnN0aXR1dGVfaW50ZXJuYWw6OlBsYWNlaG9sZGVyQml0bWFz
ayhmb3JtYXQpICE9IDE1LAogICAgICAgICAgICAgICAgICAgICAgIlRoZXJlIHdlcmUgNCBzdWJz
dGl0dXRpb24gYXJndW1lbnRzIGdpdmVuLCBidXQgIgogICAgICAgICAgICAgICAgICAgICAgInRo
aXMgZm9ybWF0IHN0ZDo6c3RyaW5nIGlzIGVpdGhlciBtaXNzaW5nIGl0cyAkMC0kMywgb3IgIgog
ICAgICAgICAgICAgICAgICAgICAgImNvbnRhaW5zIG9uZSBvZiAkNC0kOSIpOwogCiBzdGQ6OnN0
cmluZyBTdWJzdGl0dXRlKGNvbnN0IGNoYXIqIGZvcm1hdCwgY29uc3Qgc3Vic3RpdHV0ZV9pbnRl
cm5hbDo6QXJnJiBhMCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJu
YWw6OkFyZyYgYTEsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFs
OjpBcmcmIGEyLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6
QXJnJiBhMywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFy
ZyYgYTQpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6
OkFyZyYgYTEsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJu
YWw6OkFyZyYgYTIsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50
ZXJuYWw6OkFyZyYgYTMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVf
aW50ZXJuYWw6OkFyZyYgYTQpCiAgICAgQUJTTF9CQURfQ0FMTF9JRihzdWJzdGl0dXRlX2ludGVy
bmFsOjpQbGFjZWhvbGRlckJpdG1hc2soZm9ybWF0KSAhPSAzMSwKICAgICAgICAgICAgICAgICAg
ICAgICJUaGVyZSB3ZXJlIDUgc3Vic3RpdHV0aW9uIGFyZ3VtZW50cyBnaXZlbiwgYnV0ICIKICAg
ICAgICAgICAgICAgICAgICAgICJ0aGlzIGZvcm1hdCBzdGQ6OnN0cmluZyBpcyBlaXRoZXIgbWlz
c2luZyBpdHMgJDAtJDQsIG9yICIKICAgICAgICAgICAgICAgICAgICAgICJjb250YWlucyBvbmUg
b2YgJDUtJDkiKTsKIAogc3RkOjpzdHJpbmcgU3Vic3RpdHV0ZShjb25zdCBjaGFyKiBmb3JtYXQs
IGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTAsCi0gICAgICAgICAgICAgICAgICBj
b25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGExLAotICAgICAgICAgICAgICAgICAgY29u
c3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0
IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBz
dWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGE0LAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vi
c3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNSkKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMiwKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMywKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNSkKICAgICBBQlNMX0JBRF9D
QUxMX0lGKHN1YnN0aXR1dGVfaW50ZXJuYWw6OlBsYWNlaG9sZGVyQml0bWFzayhmb3JtYXQpICE9
IDYzLAogICAgICAgICAgICAgICAgICAgICAgIlRoZXJlIHdlcmUgNiBzdWJzdGl0dXRpb24gYXJn
dW1lbnRzIGdpdmVuLCBidXQgIgogICAgICAgICAgICAgICAgICAgICAgInRoaXMgZm9ybWF0IHN0
ZDo6c3RyaW5nIGlzIGVpdGhlciBtaXNzaW5nIGl0cyAkMC0kNSwgb3IgIgogICAgICAgICAgICAg
ICAgICAgICAgImNvbnRhaW5zIG9uZSBvZiAkNi0kOSIpOwogCiBzdGQ6OnN0cmluZyBTdWJzdGl0
dXRlKGNvbnN0IGNoYXIqIGZvcm1hdCwgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBh
MCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEs
Ci0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEyLAot
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMywKLSAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTQsCi0gICAg
ICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGE1LAotICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNikKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMywK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBh
NCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJn
JiBhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6
QXJnJiBhNikKICAgICBBQlNMX0JBRF9DQUxMX0lGKHN1YnN0aXR1dGVfaW50ZXJuYWw6OlBsYWNl
aG9sZGVyQml0bWFzayhmb3JtYXQpICE9IDEyNywKICAgICAgICAgICAgICAgICAgICAgICJUaGVy
ZSB3ZXJlIDcgc3Vic3RpdHV0aW9uIGFyZ3VtZW50cyBnaXZlbiwgYnV0ICIKICAgICAgICAgICAg
ICAgICAgICAgICJ0aGlzIGZvcm1hdCBzdGQ6OnN0cmluZyBpcyBlaXRoZXIgbWlzc2luZyBpdHMg
JDAtJDYsIG9yICIKICAgICAgICAgICAgICAgICAgICAgICJjb250YWlucyBvbmUgb2YgJDctJDki
KTsKIAogc3RkOjpzdHJpbmcgU3Vic3RpdHV0ZShjb25zdCBjaGFyKiBmb3JtYXQsIGNvbnN0IHN1
YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTAsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJz
dGl0dXRlX2ludGVybmFsOjpBcmcmIGExLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3Rp
dHV0ZV9pbnRlcm5hbDo6QXJnJiBhMiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1
dGVfaW50ZXJuYWw6OkFyZyYgYTMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRl
X2ludGVybmFsOjpBcmcmIGE0LAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9p
bnRlcm5hbDo6QXJnJiBhNSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50
ZXJuYWw6OkFyZyYgYTYsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVy
bmFsOjpBcmcmIGE3KQorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2lu
dGVybmFsOjpBcmcmIGExLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRl
X2ludGVybmFsOjpBcmcmIGEyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0
dXRlX2ludGVybmFsOjpBcmcmIGEzLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJz
dGl0dXRlX2ludGVybmFsOjpBcmcmIGE0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGE1LAorICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGE2LAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGE3KQogICAgIEFCU0xfQkFEX0NBTExfSUYo
c3Vic3RpdHV0ZV9pbnRlcm5hbDo6UGxhY2Vob2xkZXJCaXRtYXNrKGZvcm1hdCkgIT0gMjU1LAog
ICAgICAgICAgICAgICAgICAgICAgIlRoZXJlIHdlcmUgOCBzdWJzdGl0dXRpb24gYXJndW1lbnRz
IGdpdmVuLCBidXQgIgogICAgICAgICAgICAgICAgICAgICAgInRoaXMgZm9ybWF0IHN0ZDo6c3Ry
aW5nIGlzIGVpdGhlciBtaXNzaW5nIGl0cyAkMC0kNywgb3IgIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdWJzdGl0dXRlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGVfdGVz
dC5jYwppbmRleCAxNDRkZjAxZWMxODRmNWQwOWYzYmU4OWI4NmUwYmZlZWQ1ZTE0YWRlLi5lMjdh
YmIxNzcyNzQ0N2JlZDNlZjZiYTIwMzY2MmM2NGUyODQ0NmNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL3N1YnN0aXR1dGVfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGVf
dGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTUs
NiArMTUsNyBAQAogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmgiCiAKICNpbmNs
dWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKQEAgLTE3Miw2ICsxNzMsMTcg
QEAgVEVTVChTdWJzdGl0dXRlVGVzdCwgU3Vic3RpdHV0ZUFuZEFwcGVuZCkgewogICBFWFBFQ1Rf
RVEoImEgYiBjIGQgZSBmIGcgaCBpIGoiLCBzdHIpOwogfQogCitURVNUKFN1YnN0aXR1dGVUZXN0
LCBWZWN0b3JCb29sUmVmKSB7CisgIHN0ZDo6dmVjdG9yPGJvb2w+IHYgPSB7dHJ1ZSwgZmFsc2V9
OworICBjb25zdCBhdXRvJiBjdiA9IHY7CisgIEVYUEVDVF9FUSgidHJ1ZSBmYWxzZSB0cnVlIGZh
bHNlIiwKKyAgICAgICAgICAgIGFic2w6OlN1YnN0aXR1dGUoIiQwICQxICQyICQzIiwgdlswXSwg
dlsxXSwgY3ZbMF0sIGN2WzFdKSk7CisKKyAgc3RkOjpzdHJpbmcgc3RyID0gIkxvZ2ljIGJlIGxp
a2U6ICI7CisgIGFic2w6OlN1YnN0aXR1dGVBbmRBcHBlbmQoJnN0ciwgIiQwICQxICQyICQzIiwg
dlswXSwgdlsxXSwgY3ZbMF0sIGN2WzFdKTsKKyAgRVhQRUNUX0VRKCJMb2dpYyBiZSBsaWtlOiB0
cnVlIGZhbHNlIHRydWUgZmFsc2UiLCBzdHIpOworfQorCiAjaWZkZWYgR1RFU1RfSEFTX0RFQVRI
X1RFU1QKIAogVEVTVChTdWJzdGl0dXRlRGVhdGhUZXN0LCBTdWJzdGl0dXRlRGVhdGgpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNo
cm9uaXphdGlvbi9CVUlMRC5iYXplbAppbmRleCBmNTJlOWQ0MTY0NGE4ZDkzMWJmMzlmYWU3ZWM4
NDMyN2JlYWY0MWU0Li5mY2E4Y2I2OTdhZjExZDUzYzg0N2ZlOTQwYjVmMTdkZTQwNTAzYzJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuYmF6ZWwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL0JVSUxELmJhemVsCkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAj
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTUsOCArMTUsOSBAQAogIwogCiBsb2FkKAotICAgICIvL2Fic2w6Y29wdHMuYnps
IiwKKyAgICAiLy9hYnNsOmNvcHRzL2NvbmZpZ3VyZV9jb3B0cy5iemwiLAogICAgICJBQlNMX0RF
RkFVTFRfQ09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElOS09QVFMiLAogICAgICJBQlNMX1RF
U1RfQ09QVFMiLAogKQogCkBAIC0zNCw2ICszNSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgICAgICJp
bnRlcm5hbC9ncmFwaGN5Y2xlcy5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxU
X0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHZpc2li
aWxpdHkgPSBbCiAgICAgICAgICIvL2Fic2w6X19zdWJwYWNrYWdlc19fIiwKICAgICBdLApAQCAt
NjksOSArNzEsMTQgQEAgY2NfbGlicmFyeSgKICAgICAgICAgIm5vdGlmaWNhdGlvbi5oIiwKICAg
ICBdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gc2Vs
ZWN0KHsKKyAgICAgICAgIi8vYWJzbDp3aW5kb3dzIjogW10sCisgICAgICAgICIvL2NvbmRpdGlv
bnM6ZGVmYXVsdCI6IFsiLXB0aHJlYWQiXSwKKyAgICB9KSArIEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICBkZXBzID0gWwogICAgICAgICAiOmdyYXBoY3ljbGVzX2ludGVybmFsIiwKICAgICAg
ICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmF0b21pY19ob29rIiwKICAg
ICAgICAgIi8vYWJzbC9iYXNlOmJhc2VfaW50ZXJuYWwiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6
Y29uZmlnIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCkBAIC04OCw5ICs5
NSw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9IFsiYmFycmll
cl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCi0gICAgdGFncyA9IFsK
LSAgICAgICAgIm5vX3Rlc3Rfd2FzbSIsCi0gICAgXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIs
CiAgICAgICAgICIvL2Fic2wvdGltZSIsCkBAIC0xMDMsOSArMTA4LDcgQEAgY2NfdGVzdCgKICAg
ICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJibG9ja2luZ19jb3VudGVyX3Rlc3QuY2Mi
XSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKLSAgICB0YWdzID0gWwotICAgICAgICAi
bm9fdGVzdF93YXNtIiwKLSAgICBdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3luY2hyb25pemF0aW9uIiwKICAgICAgICAg
Ii8vYWJzbC90aW1lIiwKQEAgLTExOCw2ICsxMjEsNyBAQCBjY190ZXN0KAogICAgIHNpemUgPSAi
bWVkaXVtIiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC9ncmFwaGN5Y2xlc190ZXN0LmNjIl0sCiAg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpncmFwaGN5Y2xlc19pbnRlcm5hbCIs
CiAgICAgICAgICIvL2Fic2wvYmFzZSIsCkBAIC0xMzAsNiArMTM0LDcgQEAgY2NfdGVzdCgKICAg
ICBuYW1lID0gImdyYXBoY3ljbGVzX2JlbmNobWFyayIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwv
Z3JhcGhjeWNsZXNfYmVuY2htYXJrLmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFncyA9IFsKICAg
ICAgICAgImJlbmNobWFyayIsCiAgICAgXSwKQEAgLTE0NCw2ICsxNDksNyBAQCBjY19saWJyYXJ5
KAogICAgIG5hbWUgPSAidGhyZWFkX3Bvb2wiLAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBoZHJz
ID0gWyJpbnRlcm5hbC90aHJlYWRfcG9vbC5oIl0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9IFsKICAgICAgICAgIi8vYWJzbDpfX3N1YnBh
Y2thZ2VzX18iLAogICAgIF0sCkBAIC0xNTgsNiArMTY0LDcgQEAgY2NfdGVzdCgKICAgICBzaXpl
ID0gImxhcmdlIiwKICAgICBzcmNzID0gWyJtdXRleF90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgc2hhcmRfY291bnQgPSAyNSwKICAgICBkZXBzID0gWwogICAgICAgICAiOnN5bmNocm9uaXph
dGlvbiIsCkBAIC0xNzAsMTggKzE3NywzMyBAQCBjY190ZXN0KAogICAgIF0sCiApCiAKLWNjX3Rl
c3QoCi0gICAgbmFtZSA9ICJtdXRleF9iZW5jaG1hcmsiLAorY2NfbGlicmFyeSgKKyAgICBuYW1l
ID0gIm11dGV4X2JlbmNobWFya19jb21tb24iLAorICAgIHRlc3Rvbmx5ID0gMSwKICAgICBzcmNz
ID0gWyJtdXRleF9iZW5jaG1hcmsuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
LSAgICB0YWdzID0gWyJiZW5jaG1hcmsiXSwKLSAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxp
dHk6cHJpdmF0ZSJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAg
IHZpc2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0aW9uOl9fcGtnX18i
LAorICAgIF0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpzeW5jaHJvbml6YXRpb24iLAogICAg
ICAgICAiOnRocmVhZF9wb29sIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKICAgICAgICAgIkBj
b21fZ2l0aHViX2dvb2dsZV9iZW5jaG1hcmsvLzpiZW5jaG1hcmtfbWFpbiIsCiAgICAgXSwKKyAg
ICBhbHdheXNsaW5rID0gMSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAibXV0ZXhfYmVu
Y2htYXJrIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgdmlzaWJpbGl0
eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOm11
dGV4X2JlbmNobWFya19jb21tb24iLAorICAgIF0sCiApCiAKIGNjX3Rlc3QoCkBAIC0xODksNiAr
MjExLDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJub3Rp
ZmljYXRpb25fdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxp
bmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6
c3luY2hyb25pemF0aW9uIiwKICAgICAgICAgIi8vYWJzbC90aW1lIiwKQEAgLTIwMSw2ICsyMjQs
NyBAQCBjY19saWJyYXJ5KAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBzcmNzID0gWyJpbnRlcm5h
bC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAg
ICAgICAgIjpzeW5jaHJvbml6YXRpb24iLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtMjE1
LDcgKzIzOSw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJwZXJfdGhyZWFkX3NlbV90ZXN0IiwK
ICAgICBzaXplID0gIm1lZGl1bSIsCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCi0gICAg
dGFncyA9IFsibm9fdGVzdF93YXNtIl0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpwZXJfdGhyZWFkX3NlbV90ZXN0X2NvbW1v
biIsCiAgICAgICAgICI6c3luY2hyb25pemF0aW9uIiwKQEAgLTIzMiwxMCArMjU2LDcgQEAgY2Nf
dGVzdCgKICAgICAgICAgImxpZmV0aW1lX3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMsCi0gICAgbGlua29wdHMgPSBzZWxlY3QoewotICAgICAgICAiLy9hYnNs
OndpbmRvd3MiOiBbXSwKLSAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItcHRocmVh
ZCJdLAotICAgIH0pLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAg
IHRhZ3MgPSBbIm5vX3Rlc3RfaW9zX3g4Nl82NCJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6
c3luY2hyb25pemF0aW9uIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlM
RC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5nbgppbmRleCBlNmY3NjNhMDYwYmE5
Y2UwYWFlZTljMTQxODEwZmZmNmI0ZTc4YzExLi5jZDYwMTgxZDQ4ZGQ2YWE5NGYyMTg0NTY3OTFm
NmQyMTFkYWU2MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuZ24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmduCkBAIC00LDggKzQsMTUgQEAKIAog
aW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCisjIFVzYWdlIG9mIEFic2Vp
bCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZv
cmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4
eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9t
aXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGluZm9ybWF0
aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQv
ZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQogaWYgKGJ1aWxk
X3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3RhbnQv
KiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCkBAIC02
Nyw2ICs3NCw3IEBAIHNvdXJjZV9zZXQoInN5bmNocm9uaXphdGlvbiIpIHsKICAgZGVwcyA9IFsK
ICAgICAiOmdyYXBoY3ljbGVzX2ludGVybmFsIiwKICAgICAiLi4vYmFzZSIsCisgICAgIi4uL2Jh
c2U6YXRvbWljX2hvb2siLAogICAgICIuLi9iYXNlOmJhc2VfaW50ZXJuYWwiLAogICAgICIuLi9i
YXNlOmNvbmZpZyIsCiAgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N5bmNocm9uaXphdGlvbi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlv
bi9DTWFrZUxpc3RzLnR4dAppbmRleCBkZTBkN2I3ZDQ1MDA3YzA3YTMzNjYzYzk2NDk4ZTZmMzkw
MTA3ZjA5Li40YjcwODgyMzE1MmZiYmI2ZjRhNmFmOWFhMWIwMjAyZWYzNGVkYWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3lu
Y2hyb25pemF0aW9uL0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAj
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTQsMTQyICsxNCwxODUgQEAKICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCiAjCiAKLWxpc3QoQVBQRU5EIFNZTkNIUk9OSVpBVElPTl9QVUJMSUNfSEVBREVSUwotICAi
YmFycmllci5oIgotICAiYmxvY2tpbmdfY291bnRlci5oIgotICAibXV0ZXguaCIKLSAgIm5vdGlm
aWNhdGlvbi5oIgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZ3JhcGhjeWNsZXNfaW50
ZXJuYWwKKyAgSERSUworICAgICJpbnRlcm5hbC9ncmFwaGN5Y2xlcy5oIgorICBTUkNTCisgICAg
ImludGVybmFsL2dyYXBoY3ljbGVzLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmJhc2VfaW50ZXJuYWwKKyAg
ICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjptYWxsb2NfaW50ZXJuYWwKICkKIAotCi1s
aXN0KEFQUEVORCBTWU5DSFJPTklaQVRJT05fSU5URVJOQUxfSEVBREVSUwotICAiaW50ZXJuYWwv
Y3JlYXRlX3RocmVhZF9pZGVudGl0eS5oIgotICAiaW50ZXJuYWwvZ3JhcGhjeWNsZXMuaCIKLSAg
ImludGVybmFsL2tlcm5lbF90aW1lb3V0LmgiCi0gICJpbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5o
IgotICAiaW50ZXJuYWwvdGhyZWFkX3Bvb2wuaCIKLSAgImludGVybmFsL3dhaXRlci5oIgotKQot
Ci0KLQotIyBzeW5jaHJvbml6YXRpb24gbGlicmFyeQotbGlzdChBUFBFTkQgU1lOQ0hST05JWkFU
SU9OX1NSQwotICAiYmFycmllci5jYyIKLSAgImJsb2NraW5nX2NvdW50ZXIuY2MiCi0gICJpbnRl
cm5hbC9jcmVhdGVfdGhyZWFkX2lkZW50aXR5LmNjIgotICAiaW50ZXJuYWwvcGVyX3RocmVhZF9z
ZW0uY2MiCi0gICJpbnRlcm5hbC93YWl0ZXIuY2MiCi0gICJpbnRlcm5hbC9ncmFwaGN5Y2xlcy5j
YyIKLSAgIm5vdGlmaWNhdGlvbi5jYyIKLSAgIm11dGV4LmNjIgotKQotCi1zZXQoU1lOQ0hST05J
WkFUSU9OX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSBhYnNsOjpzdGFja3RyYWNlIGFic2w6
OnN5bWJvbGl6ZSBhYnNsOjp0aW1lKQotCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFi
c2xfc3luY2hyb25pemF0aW9uCi0gIFNPVVJDRVMKLSAgICAke1NZTkNIUk9OSVpBVElPTl9TUkN9
Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1NZTkNIUk9OSVpBVElPTl9QVUJMSUNfTElCUkFS
SUVTfQotICBFWFBPUlRfTkFNRQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCiAgICAgc3luY2hy
b25pemF0aW9uCisgIEhEUlMKKyAgICAiYmFycmllci5oIgorICAgICJibG9ja2luZ19jb3VudGVy
LmgiCisgICAgImludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRlbnRpdHkuaCIKKyAgICAiaW50ZXJu
YWwva2VybmVsX3RpbWVvdXQuaCIKKyAgICAiaW50ZXJuYWwvbXV0ZXhfbm9ucHJvZC5pbmMiCisg
ICAgImludGVybmFsL3Blcl90aHJlYWRfc2VtLmgiCisgICAgImludGVybmFsL3dhaXRlci5oIgor
ICAgICJtdXRleC5oIgorICAgICJub3RpZmljYXRpb24uaCIKKyAgU1JDUworICAgICJiYXJyaWVy
LmNjIgorICAgICJibG9ja2luZ19jb3VudGVyLmNjIgorICAgICJpbnRlcm5hbC9jcmVhdGVfdGhy
ZWFkX2lkZW50aXR5LmNjIgorICAgICJpbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5jYyIKKyAgICAi
aW50ZXJuYWwvd2FpdGVyLmNjIgorICAgICJub3RpZmljYXRpb24uY2MiCisgICAgIm11dGV4LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6
Z3JhcGhjeWNsZXNfaW50ZXJuYWwKKyAgICBhYnNsOjphdG9taWNfaG9vaworICAgIGFic2w6OmJh
c2UKKyAgICBhYnNsOjpiYXNlX2ludGVybmFsCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6
Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZHluYW1pY19hbm5vdGF0aW9ucworICAgIGFic2w6Om1h
bGxvY19pbnRlcm5hbAorICAgIGFic2w6OnN0YWNrdHJhY2UKKyAgICBhYnNsOjpzeW1ib2xpemUK
KyAgICBhYnNsOjp0aW1lCisgICAgVGhyZWFkczo6VGhyZWFkcworICBQVUJMSUMKICkKIAotCi0j
Ci0jIyBURVNUUwotIwotCi0KLSMgdGVzdCBiYXJyaWVyX3Rlc3QKLXNldChCQVJSSUVSX1RFU1Rf
U1JDICJiYXJyaWVyX3Rlc3QuY2MiKQotc2V0KEJBUlJJRVJfVEVTVF9QVUJMSUNfTElCUkFSSUVT
IGFic2w6OnN5bmNocm9uaXphdGlvbikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2Nf
dGVzdCgKKyAgTkFNRQogICAgIGJhcnJpZXJfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtCQVJSSUVS
X1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtCQVJSSUVSX1RFU1RfUFVCTElD
X0xJQlJBUklFU30KKyAgU1JDUworICAgICJiYXJyaWVyX3Rlc3QuY2MiCisgIENPUFRTCisgICAg
JHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKyAg
ICBhYnNsOjp0aW1lCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBibG9ja2luZ19jb3Vu
dGVyX3Rlc3QKLXNldChCTE9DS0lOR19DT1VOVEVSX1RFU1RfU1JDICJibG9ja2luZ19jb3VudGVy
X3Rlc3QuY2MiKQotc2V0KEJMT0NLSU5HX0NPVU5URVJfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFi
c2w6OnN5bmNocm9uaXphdGlvbikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVz
dCgKKyAgTkFNRQogICAgIGJsb2NraW5nX2NvdW50ZXJfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtC
TE9DS0lOR19DT1VOVEVSX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtCTE9D
S0lOR19DT1VOVEVSX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJibG9ja2lu
Z19jb3VudGVyX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKyAgICBhYnNsOjp0aW1lCisgICAgZ21vY2tf
bWFpbgogKQogCi0KLSMgdGVzdCBncmFwaGN5Y2xlc190ZXN0Ci1zZXQoR1JBUEhDWUNMRVNfVEVT
VF9TUkMgImludGVybmFsL2dyYXBoY3ljbGVzX3Rlc3QuY2MiKQotc2V0KEdSQVBIQ1lDTEVTX1RF
U1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzeW5jaHJvbml6YXRpb24pCi0KLWFic2xfdGVzdCgK
LSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBncmFwaGN5Y2xlc190ZXN0Ci0g
IFNPVVJDRVMKLSAgICAke0dSQVBIQ1lDTEVTX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVT
Ci0gICAgJHtHUkFQSENZQ0xFU19URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAi
aW50ZXJuYWwvZ3JhcGhjeWNsZXNfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6OmdyYXBoY3ljbGVzX2ludGVybmFsCisgICAgYWJzbDo6
YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGdtb2NrX21haW4KICkKIAorYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgdGhyZWFkX3Bvb2wKKyAgSERSUworICAgICJpbnRlcm5h
bC90aHJlYWRfcG9vbC5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisg
IFRFU1RPTkxZCispCiAKLSMgdGVzdCBtdXRleF90ZXN0Ci1zZXQoTVVURVhfVEVTVF9TUkMgIm11
dGV4X3Rlc3QuY2MiKQotc2V0KE1VVEVYX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzeW5j
aHJvbml6YXRpb24pCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5B
TUUKICAgICBtdXRleF90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke01VVEVYX1RFU1RfU1JDfQotICBQ
VUJMSUNfTElCUkFSSUVTCi0gICAgJHtNVVRFWF9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNS
Q1MKKyAgICAibXV0ZXhfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorICAgIGFic2w6OnRocmVhZF9wb29s
CisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6Om1lbW9y
eQorICAgIGFic2w6OnRpbWUKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IG5vdGlmaWNh
dGlvbl90ZXN0Ci1zZXQoTk9USUZJQ0FUSU9OX1RFU1RfU1JDICJub3RpZmljYXRpb25fdGVzdC5j
YyIpCi1zZXQoTk9USUZJQ0FUSU9OX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzeW5jaHJv
bml6YXRpb24pCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
ICAgICBub3RpZmljYXRpb25fdGVzdAotICBTT1VSQ0VTCi0gICAgJHtOT1RJRklDQVRJT05fVEVT
VF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke05PVElGSUNBVElPTl9URVNUX1BVQkxJ
Q19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAibm90aWZpY2F0aW9uX3Rlc3QuY2MiCisgIENPUFRT
CisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRp
b24KKyAgICBhYnNsOjp0aW1lCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBwZXJfdGhy
ZWFkX3NlbV90ZXN0X2NvbW1vbgotc2V0KFBFUl9USFJFQURfU0VNX1RFU1RfQ09NTU9OX1NSQyAi
aW50ZXJuYWwvcGVyX3RocmVhZF9zZW1fdGVzdC5jYyIpCi1zZXQoUEVSX1RIUkVBRF9TRU1fVEVT
VF9DT01NT05fUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzeW5jaHJvbml6YXRpb24gYWJzbDo6c3Ry
aW5ncykKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQog
ICAgIHBlcl90aHJlYWRfc2VtX3Rlc3RfY29tbW9uCi0gIFNPVVJDRVMKLSAgICAke1BFUl9USFJF
QURfU0VNX1RFU1RfQ09NTU9OX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7UEVSX1RI
UkVBRF9TRU1fVEVTVF9DT01NT05fUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJpbnRl
cm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgYWJzbDo6YmFzZQor
ICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjp0aW1lCisgICAgZ21vY2sKKyAgVEVTVE9OTFkK
ICkKIAorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcGVyX3RocmVhZF9zZW1fdGVzdAorICBT
UkNTCisgICAgImludGVybmFsL3Blcl90aHJlYWRfc2VtX3Rlc3QuY2MiCisgIENPUFRTCisgICAg
JHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpwZXJfdGhyZWFkX3NlbV90ZXN0
X2NvbW1vbgorICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorICAgIGFic2w6OmJhc2UKKyAgICBh
YnNsOjpzdHJpbmdzCisgICAgYWJzbDo6dGltZQorICAgIGdtb2NrX21haW4KKykKIAotCi0KLQot
Ci0KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGxpZmV0aW1lX3Rlc3QKKyAgU1JDUworICAg
ICJsaWZldGltZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6
OmNvcmVfaGVhZGVycworKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2JhcnJp
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmFycmllci5jYwppbmRleCBhMWIzYWQ1YzIx
NzQwYjRlY2NkOWFlYWFlMTUyZjY4OGVlYzk2YmU3Li5jMmM1MzlhYzRhY2ZiNDcyYjZmYmI5NzUx
ZjRkY2IwMTE5ZTY2YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmFycmll
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmFycmllci5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25p
emF0aW9uL2JhcnJpZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9iYXJyaWVyLmgKaW5kZXgg
ZjgzNGZlZWMxMWRjYmJiYzIzMjg4MTY3MzgyZDQxYTRhYzdhOGZhZi4uY2I1ZDgyMWEyMTkyMTZi
OTVmZGRjYmE4NzdlYTFmM2EzOTFkYjJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0
aW9uL2JhcnJpZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmFycmllci5oCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC02OSw4ICs2OSw4IEBAIGNs
YXNzIEJhcnJpZXIgewogCiAgcHJpdmF0ZToKICAgTXV0ZXggbG9ja187Ci0gIGludCBudW1fdG9f
YmxvY2tfIEdVQVJERURfQlkobG9ja18pOwotICBpbnQgbnVtX3RvX2V4aXRfIEdVQVJERURfQlko
bG9ja18pOworICBpbnQgbnVtX3RvX2Jsb2NrXyBBQlNMX0dVQVJERURfQlkobG9ja18pOworICBp
bnQgbnVtX3RvX2V4aXRfIEFCU0xfR1VBUkRFRF9CWShsb2NrXyk7CiB9OwogCiB9ICAvLyBuYW1l
c3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2JhcnJpZXJfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9iYXJyaWVyX3Rlc3QuY2MKaW5kZXggZDZjYWJh
YmRmNzMzMTVmMjYxNmU4MTNjNGYxOGY5MWM2N2JjMzYwYi4uYmZjNmNiMTg4M2IxY2I2YjRhMzA4
NGE3YzBjNTI4MDMzZTQ2OWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2Jh
cnJpZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmFycmllcl90ZXN0LmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9u
aXphdGlvbi9ibG9ja2luZ19jb3VudGVyLmNjCmluZGV4IDdlNjhlOTYwYmMzYWQ0MDdlMmI5MmZl
MDQxOTc5MWY1NmI3NjhkOTcuLjQ4MWEwNmIyZDI0ZmI4MjYxZjBjNzQwZmRiY2U1YzU0ODZhMmJm
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ibG9ja2luZ19jb3VudGVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ibG9ja2luZ19jb3VudGVyLmNjCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5j
aHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2Js
b2NraW5nX2NvdW50ZXIuaAppbmRleCA1NTdlZDAyOGZlNTIyM2M5Y2MyNWEwMmVjZTVhNmM1ZjU2
M2Q5Y2FiLi43NzU2MGZjMDU2NTcwMzZhM2VmNmQyNDY3ZGFhNWRmOGVmZGFlMDA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N5bmNocm9uaXphdGlvbi9ibG9ja2luZ19jb3VudGVyLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTg4LDggKzg4LDggQEAgY2xhc3MgQmxvY2tpbmdDb3Vu
dGVyIHsKIAogIHByaXZhdGU6CiAgIE11dGV4IGxvY2tfOwotICBpbnQgY291bnRfIEdVQVJERURf
QlkobG9ja18pOwotICBpbnQgbnVtX3dhaXRpbmdfIEdVQVJERURfQlkobG9ja18pOworICBpbnQg
Y291bnRfIEFCU0xfR1VBUkRFRF9CWShsb2NrXyk7CisgIGludCBudW1fd2FpdGluZ18gQUJTTF9H
VUFSREVEX0JZKGxvY2tfKTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlcl90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXJfdGVzdC5jYwppbmRleCBlODIyM2Y4NDFh
NWYwN2M5MzM0ZDEyODM1ZTVjMWQ2OTY4NDY0MjE1Li5jNjNlMzM5MjU3OGFjOTllNWM3NTkxZjc1
MDMwNDQ2NDAwYTEzNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmxvY2tp
bmdfY291bnRlcl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ibG9ja2luZ19j
b3VudGVyX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9jcmVhdGVfdGhyZWFk
X2lkZW50aXR5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2NyZWF0ZV90aHJl
YWRfaWRlbnRpdHkuY2MKaW5kZXggZTdhNjVjZDg4NGExZDI2Y2I5NzQ3OWEwODViYmY4ODMwOTVj
NWVlOC4uY2UzNjc2YTg4NDgyMGQ5ZTg1NDZjNDZlZTYyOWIwMjUyYTE2NDNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRlbnRpdHku
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRl
bnRpdHkuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTMx
LDcgKzMxLDggQEAgbmFtZXNwYWNlIHN5bmNocm9uaXphdGlvbl9pbnRlcm5hbCB7CiAKIC8vIFRo
cmVhZElkZW50aXR5IHN0b3JhZ2UgaXMgcGVyc2lzdGVudCwgd2UgbWFpbnRhaW4gYSBmcmVlLWxp
c3Qgb2YgcHJldmlvdXNseQogLy8gcmVsZWFzZWQgVGhyZWFkSWRlbnRpdHkgb2JqZWN0cy4KLXN0
YXRpYyBiYXNlX2ludGVybmFsOjpTcGluTG9jayBmcmVlbGlzdF9sb2NrKGJhc2VfaW50ZXJuYWw6
OmtMaW5rZXJJbml0aWFsaXplZCk7CitzdGF0aWMgYmFzZV9pbnRlcm5hbDo6U3BpbkxvY2sgZnJl
ZWxpc3RfbG9jaygKKyAgICBiYXNlX2ludGVybmFsOjprTGlua2VySW5pdGlhbGl6ZWQpOwogc3Rh
dGljIGJhc2VfaW50ZXJuYWw6OlRocmVhZElkZW50aXR5KiB0aHJlYWRfaWRlbnRpdHlfZnJlZWxp
c3Q7CiAKIC8vIEEgcGVyLXRocmVhZCBkZXN0cnVjdG9yIGZvciByZWNsYWltaW5nIGFzc29jaWF0
ZWQgVGhyZWFkSWRlbnRpdHkgb2JqZWN0cy4KQEAgLTY3LDYgKzY4LDMwIEBAIHN0YXRpYyBpbnRw
dHJfdCBSb3VuZFVwKGludHB0cl90IGFkZHIsIGludHB0cl90IGFsaWduKSB7CiAgIHJldHVybiAo
YWRkciArIGFsaWduIC0gMSkgJiB+KGFsaWduIC0gMSk7CiB9CiAKK3N0YXRpYyB2b2lkIFJlc2V0
VGhyZWFkSWRlbnRpdHkoYmFzZV9pbnRlcm5hbDo6VGhyZWFkSWRlbnRpdHkqIGlkZW50aXR5KSB7
CisgIGJhc2VfaW50ZXJuYWw6OlBlclRocmVhZFN5bmNoKiBwdHMgPSAmaWRlbnRpdHktPnBlcl90
aHJlYWRfc3luY2g7CisgIHB0cy0+bmV4dCA9IG51bGxwdHI7CisgIHB0cy0+c2tpcCA9IG51bGxw
dHI7CisgIHB0cy0+bWF5X3NraXAgPSBmYWxzZTsKKyAgcHRzLT53YWl0cCA9IG51bGxwdHI7Cisg
IHB0cy0+c3VwcHJlc3NfZmF0YWxfZXJyb3JzID0gZmFsc2U7CisgIHB0cy0+cmVhZGVycyA9IDA7
CisgIHB0cy0+cHJpb3JpdHkgPSAwOworICBwdHMtPm5leHRfcHJpb3JpdHlfcmVhZF9jeWNsZXMg
PSAwOworICBwdHMtPnN0YXRlLnN0b3JlKGJhc2VfaW50ZXJuYWw6OlBlclRocmVhZFN5bmNoOjpT
dGF0ZTo6a0F2YWlsYWJsZSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsKKyAgcHRzLT5tYXliZV91bmxvY2tpbmcgPSBmYWxzZTsKKyAgcHRzLT53YWtlID0g
ZmFsc2U7CisgIHB0cy0+Y29uZF93YWl0ZXIgPSBmYWxzZTsKKyAgcHRzLT5hbGxfbG9ja3MgPSBu
dWxscHRyOworICBpZGVudGl0eS0+d2FpdGVyX3N0YXRlID0ge307CisgIGlkZW50aXR5LT5ibG9j
a2VkX2NvdW50X3B0ciA9IG51bGxwdHI7CisgIGlkZW50aXR5LT50aWNrZXIuc3RvcmUoMCwgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGlkZW50aXR5LT53YWl0X3N0YXJ0LnN0b3JlKDAs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBpZGVudGl0eS0+aXNfaWRsZS5zdG9yZShm
YWxzZSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGlkZW50aXR5LT5uZXh0ID0gbnVs
bHB0cjsKK30KKwogc3RhdGljIGJhc2VfaW50ZXJuYWw6OlRocmVhZElkZW50aXR5KiBOZXdUaHJl
YWRJZGVudGl0eSgpIHsKICAgYmFzZV9pbnRlcm5hbDo6VGhyZWFkSWRlbnRpdHkqIGlkZW50aXR5
ID0gbnVsbHB0cjsKIApAQCAtOTAsNyArMTE1LDcgQEAgc3RhdGljIGJhc2VfaW50ZXJuYWw6OlRo
cmVhZElkZW50aXR5KiBOZXdUaHJlYWRJZGVudGl0eSgpIHsKICAgICAgICAgUm91bmRVcChyZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihhbGxvY2F0aW9uKSwKICAgICAgICAgICAgICAgICBiYXNl
X2ludGVybmFsOjpQZXJUaHJlYWRTeW5jaDo6a0FsaWdubWVudCkpOwogICB9Ci0gIG1lbXNldChp
ZGVudGl0eSwgMCwgc2l6ZW9mKCppZGVudGl0eSkpOworICBSZXNldFRocmVhZElkZW50aXR5KGlk
ZW50aXR5KTsKIAogICByZXR1cm4gaWRlbnRpdHk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5j
aHJvbml6YXRpb24vaW50ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3lu
Y2hyb25pemF0aW9uL2ludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRlbnRpdHkuaAppbmRleCAxYmI4
N2RlZTYzMDcyNDk4MGU4N2MzNTYzYzFlMDNiODNkYWNkZjU5Li5lYmIxNmM1NmE3Y2EyNDEyODBm
ZWYxMDU4NGVlZmQ3ODJhMWI1ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24v
aW50ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9pbnRlcm5hbC9jcmVhdGVfdGhyZWFkX2lkZW50aXR5LmgKQEAgLTUsNyArNSw3IEBACiAg
KiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICAq
Ci0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICog
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAgKgogICog
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTUwLDQgKzUwLDUgQEAgaW5saW5lIGJhc2VfaW50
ZXJuYWw6OlRocmVhZElkZW50aXR5KiBHZXRPckNyZWF0ZUN1cnJlbnRUaHJlYWRJZGVudGl0eSgp
IHsKIAogfSAgLy8gbmFtZXNwYWNlIHN5bmNocm9uaXphdGlvbl9pbnRlcm5hbAogfSAgLy8gbmFt
ZXNwYWNlIGFic2wKKwogI2VuZGlmICAvLyBBQlNMX1NZTkNIUk9OSVpBVElPTl9JTlRFUk5BTF9D
UkVBVEVfVEhSRUFEX0lERU5USVRZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vaW50ZXJuYWwvZ3JhcGhjeWNsZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJu
YWwvZ3JhcGhjeWNsZXMuY2MKaW5kZXggZDM4NzhkZTJiNjhmMjE5MjlmMDBiODYzNGJjYjk3OTRh
MGU0ZjA4Ni4uMGM4Yzc1NjQ0ODk3NzIyOWVkZDUwOTc1OTgwNTNlMDFmMzhmY2Q3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlcy5jYwpAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hy
b25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24v
aW50ZXJuYWwvZ3JhcGhjeWNsZXMuaAppbmRleCAyZTY2ODZhNGMwNjI4YmM3ZTk5ZjI4NWM5OGJl
ZDE1NzlhOGFkMDZiLi5lNWJkZTAwN2M3NjhlMmVmYmRhNGQyYWUyYjgxZWMzNWUyOTQ4OWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvZ3JhcGhjeWNsZXMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvZ3JhcGhjeWNsZXMuaApAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3lu
Y2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzX2JlbmNobWFyay5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlc19iZW5jaG1hcmsuY2MKaW5kZXggYTIz
OWMyNWMzYTgxZDViMjVhYzY5N2JiYzkxNzBiMjFmMjIwMWM3Yi4uNTQ4MjNlMGJhNTFhMzgxNWRh
ZGRiNmE4MDQ3MDAxYjcwNTJiMjgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9u
L2ludGVybmFsL2dyYXBoY3ljbGVzX2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vaW50ZXJuYWwvZ3JhcGhjeWNsZXNfYmVuY2htYXJrLmNjCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vaW50ZXJuYWwvZ3JhcGhjeWNsZXNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9p
bnRlcm5hbC9ncmFwaGN5Y2xlc190ZXN0LmNjCmluZGV4IDlhODViMzkwNzRkNzU4NDdiZDE4MGM5
MTE1MzhhMzliMzI1YWM2OTguLjU4ZTg0NzdiNmQxYTgzODVlMjBiM2ExNjViNDY5NGRmYjE5NWZh
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xl
c190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xl
c190ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwva2VybmVsX3RpbWVvdXQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9rZXJuZWxfdGltZW91dC5oCmluZGV4IGJi
NzA4MDAwNGM3MmRhNTFjYjIzMTRjZmM4ZWQ2OTUyOWQzMzQ3YmQuLjYxYzcyZTc1ZDEzYjU1NDJl
MzEyODFiMTBiNDBkZDU2MTdmYWJlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlv
bi9pbnRlcm5hbC9rZXJuZWxfdGltZW91dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9p
bnRlcm5hbC9rZXJuZWxfdGltZW91dC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIEtlcm5lbFRpbWVvdXQgewogCiAgIC8v
IFdlIGV4cGxpY2l0bHkgZG8gbm90IHN1cHBvcnQgb3RoZXIgY3VzdG9tIGZvcm1hdHM6IHRpbWVz
cGVjLCBpbnQ2NF90IG5hbm9zLgogICAvLyBVbmlmeSBvbiB0aGlzIGFuZCBhYnNsOjpUaW1lLCBw
bGVhc2UuCisKICAgYm9vbCBoYXNfdGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG5zXyAhPSAwOyB9
CiAKICBwcml2YXRlOgpAQCAtNzYsNyArNzcsNyBAQCBjbGFzcyBLZXJuZWxUaW1lb3V0IHsKICAg
ICBpZiAoeCA8PSAwKSB4ID0gMTsKICAgICAvLyBBIHRpbWUgbGFyZ2VyIHRoYW4gd2hhdCBjYW4g
YmUgcmVwcmVzZW50ZWQgdG8gdGhlIGtlcm5lbCBpcyB0cmVhdGVkCiAgICAgLy8gYXMgbm8gdGlt
ZW91dC4KLSAgICBpZiAoeCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkg
eCA9IDA7CisgICAgaWYgKHggPT0gKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCko
KSkgeCA9IDA7CiAgICAgcmV0dXJuIHg7CiAgIH0KIApAQCAtOTAsNyArOTEsNyBAQCBjbGFzcyBL
ZXJuZWxUaW1lb3V0IHsKICAgICAgICAgICBFUlJPUiwKICAgICAgICAgICAiVHJpZWQgdG8gY3Jl
YXRlIGEgdGltZXNwZWMgZnJvbSBhIG5vbi10aW1lb3V0OyBuZXZlciBkbyB0aGlzLiIpOwogICAg
ICAgLy8gQnV0IHdlJ2xsIHRyeSB0byBjb250aW51ZSBzYW5lbHkuICBuby10aW1lb3V0IH49IHNh
dHVyYXRlZCB0aW1lb3V0LgotICAgICAgbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46
Om1heCgpOworICAgICAgbiA9IChzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgpKCk7
CiAgICAgfQogCiAgICAgLy8gS2VybmVsIEFQSXMgdmFsaWRhdGUgdGltZXNwZWNzIGFzIGJlaW5n
IGF0IG9yIGFmdGVyIHRoZSBlcG9jaCwKQEAgLTEwMCw4ICsxMDEsOCBAQCBjbGFzcyBLZXJuZWxU
aW1lb3V0IHsKICAgICBpZiAobiA8IDApIG4gPSAwOwogCiAgICAgc3RydWN0IHRpbWVzcGVjIGFi
c3RpbWU7Ci0gICAgaW50NjRfdCBzZWNvbmRzID0gc3RkOjptaW4obiAvIGtOYW5vc1BlclNlY29u
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdHtzdGQ6Om51bWVyaWNfbGlt
aXRzPHRpbWVfdD46Om1heCgpfSk7CisgICAgaW50NjRfdCBzZWNvbmRzID0gKHN0ZDo6bWluKShu
IC8ga05hbm9zUGVyU2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3R7KHN0ZDo6bnVtZXJpY19saW1pdHM8dGltZV90Pjo6bWF4KSgpfSk7CiAgICAgYWJzdGltZS50
dl9zZWMgPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KHNlY29uZHMpOwogICAgIGFic3RpbWUudHZfbnNl
YyA9CiAgICAgICAgIHN0YXRpY19jYXN0PGRlY2x0eXBlKGFic3RpbWUudHZfbnNlYyk+KG4gJSBr
TmFub3NQZXJTZWNvbmQpOwpAQCAtMTE5LDcgKzEyMCw3IEBAIGNsYXNzIEtlcm5lbFRpbWVvdXQg
ewogICAvLyA8aW50c2FmZS5oPiBhbmQgPFdpbkJhc2UuaD4uCiAgIHR5cGVkZWYgdW5zaWduZWQg
bG9uZyBEV29yZDsgIC8vIE5PTElOVAogICBEV29yZCBJbk1pbGxpc2Vjb25kc0Zyb21Ob3coKSBj
b25zdCB7Ci0gICAgY29uc3RleHByIERXb3JkIGtJbmZpbml0ZSA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8RFdvcmQ+OjptYXgoKTsKKyAgICBjb25zdGV4cHIgRFdvcmQga0luZmluaXRlID0gKHN0ZDo6
bnVtZXJpY19saW1pdHM8RFdvcmQ+OjptYXgpKCk7CiAgICAgaWYgKCFoYXNfdGltZW91dCgpKSB7
CiAgICAgICByZXR1cm4ga0luZmluaXRlOwogICAgIH0KQEAgLTEzMCw3ICsxMzEsNyBAQCBjbGFz
cyBLZXJuZWxUaW1lb3V0IHsKICAgICBpZiAobnNfID49IG5vdykgewogICAgICAgLy8gUm91bmQg
dXAgc28gdGhhdCBOb3coKSArIG1zX2Zyb21fbm93ID49IG5zXy4KICAgICAgIGNvbnN0ZXhwciB1
aW50NjRfdCBtYXhfbmFub3MgPQotICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1heCgpIC0gOTk5OTk5dTsKKyAgICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWF4KSgpIC0gOTk5OTk5dTsKICAgICAgIHVpbnQ2NF90IG1zX2Zyb21fbm93ID0KICAg
ICAgICAgICAoc3RkOjptaW48dWludDY0X3Q+KG1heF9uYW5vcywgbnNfIC0gbm93KSArIDk5OTk5
OXUpIC8gMTAwMDAwMHU7CiAgICAgICBpZiAobXNfZnJvbV9ub3cgPiBrSW5maW5pdGUpIHsKQEAg
LTE0OCw0ICsxNDksNSBAQCBjbGFzcyBLZXJuZWxUaW1lb3V0IHsKIAogfSAgLy8gbmFtZXNwYWNl
IHN5bmNocm9uaXphdGlvbl9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKKwogI2VuZGlm
ICAvLyBBQlNMX1NZTkNIUk9OSVpBVElPTl9JTlRFUk5BTF9LRVJORUxfVElNRU9VVF9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL211dGV4X25vbnByb2QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvbXV0ZXhfbm9ucHJvZC5jYwppbmRleCA0
NWM2MDMyNmRiYTAzMzAzMzQyYjU3YTM1MjUwOGRjY2MxM2RkMGFhLi4yNjdkZWFmZmEzNTZkN2Q1
MzQ0MjgwMzVlOTc0ZDZiZmVmMTVmZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vaW50ZXJuYWwvbXV0ZXhfbm9ucHJvZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24v
aW50ZXJuYWwvbXV0ZXhfbm9ucHJvZC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL211
dGV4X25vbnByb2QuaW5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL211dGV4X25v
bnByb2QuaW5jCmluZGV4IDBhYWIzZDEzMTRlNjg4MjRhYmMzOTE3OGVmYWEyMTVlZDQyMDdmMDQu
LmI4ZDVhZjc5YWQzODA1ODc1ZTMzYzdkZGRjYjdhZjViYjMxMWZkOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9tdXRleF9ub25wcm9kLmluYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvbXV0ZXhfbm9ucHJvZC5pbmMKQEAgLTIxNCw2ICsy
MTQsOSBAQCBjbGFzcyBTeW5jaHJvbml6YXRpb25TdG9yYWdlIHsKICAgLy8gc3RhY2spIHNob3Vs
ZCB1c2UgdGhpcyBjb25zdHJ1Y3Rvci4KICAgZXhwbGljaXQgU3luY2hyb25pemF0aW9uU3RvcmFn
ZShiYXNlX2ludGVybmFsOjpMaW5rZXJJbml0aWFsaXplZCkge30KIAorICBjb25zdGV4cHIgZXhw
bGljaXQgU3luY2hyb25pemF0aW9uU3RvcmFnZShhYnNsOjpDb25zdEluaXRUeXBlKQorICAgICAg
OiBpc19keW5hbWljXyhmYWxzZSksIG9uY2VfKCksIHNwYWNlX3t7MH19IHt9CisKICAgU3luY2hy
b25pemF0aW9uU3RvcmFnZShTeW5jaHJvbml6YXRpb25TdG9yYWdlJikgPSBkZWxldGU7CiAgIFN5
bmNocm9uaXphdGlvblN0b3JhZ2UmIG9wZXJhdG9yPShTeW5jaHJvbml6YXRpb25TdG9yYWdlJikg
PSBkZWxldGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9w
ZXJfdGhyZWFkX3NlbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhy
ZWFkX3NlbS5jYwppbmRleCBjYWEyYmFmNjRiZDMxMTBmMGJhODg1N2NmMjViMjJkMTdiNTk2NDc4
Li5iNzAxNGZiMmIwMmQyZmY5NmYxYjBhYWY4YWY3NjFhODI0ZTZlZDA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvcGVyX3RocmVhZF9zZW0uY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3Blcl90aHJlYWRfc2VtLmNjCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC04OSw2ICs4OSw3IEBAIEFCU0xfQVRU
UklCVVRFX1dFQUsgYm9vbCBBYnNsSW50ZXJuYWxQZXJUaHJlYWRTZW1XYWl0KAogICBpZiAoaWRl
bnRpdHktPmJsb2NrZWRfY291bnRfcHRyICE9IG51bGxwdHIpIHsKICAgICBpZGVudGl0eS0+Ymxv
Y2tlZF9jb3VudF9wdHItPmZldGNoX3N1YigxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsK
ICAgfQorCiAgIGlkZW50aXR5LT5pc19pZGxlLnN0b3JlKGZhbHNlLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKICAgaWRlbnRpdHktPndhaXRfc3RhcnQuc3RvcmUoMCwgc3RkOjptZW1vcnlf
b3JkZXJfcmVsYXhlZCk7CiAgIHJldHVybiAhdGltZW91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25p
emF0aW9uL2ludGVybmFsL3Blcl90aHJlYWRfc2VtLmgKaW5kZXggNjc4YjY5ZTQ4N2E1N2ZhNWUw
NmZmOWE4Y2MyYmE2N2U0YTBmYWVkMi4uZTdkYTA3MGJhNzJjMjk1N2JjYzI2ZGJlNDc5NWQwNTA3
NTViYjRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3Blcl90
aHJlYWRfc2VtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3Blcl90aHJl
YWRfc2VtLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEw
NCw0ICsxMDQsNSBAQCBib29sIGFic2w6OnN5bmNocm9uaXphdGlvbl9pbnRlcm5hbDo6UGVyVGhy
ZWFkU2VtOjpXYWl0KAogICAgIGFic2w6OnN5bmNocm9uaXphdGlvbl9pbnRlcm5hbDo6S2VybmVs
VGltZW91dCB0KSB7CiAgIHJldHVybiBBYnNsSW50ZXJuYWxQZXJUaHJlYWRTZW1XYWl0KHQpOwog
fQorCiAjZW5kaWYgIC8vIEFCU0xfU1lOQ0hST05JWkFUSU9OX0lOVEVSTkFMX1BFUl9USFJFQURf
U0VNX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvcGVyX3Ro
cmVhZF9zZW1fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhy
ZWFkX3NlbV90ZXN0LmNjCmluZGV4IGMyOWQ4NDAzZGY0M2ZiYzNkOGQyYzVjN2NjZGFmM2FlZWQy
ZjJhZDQuLmRiYTcyMzkwZDNkMGE1YWUyMjM2NTBiYzlkNzc0NzcwNTcwNGNkMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0
LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMTQsMTAg
KzExNCw5IEBAIGNsYXNzIFBlclRocmVhZFNlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CiAgICAgICBtaW5fY3ljbGVzID0gc3RkOjptaW4obWluX2N5Y2xlcywgY3ljbGVzKTsKICAgICAg
IHRvdGFsX2N5Y2xlcyArPSBjeWNsZXM7CiAgICAgfQotICAgIHN0ZDo6c3RyaW5nIG91dCA9Ci0g
ICAgICAgIFN0ckNhdChtc2csICJtaW4gY3ljbGUgY291bnQ9IiwgbWluX2N5Y2xlcywgIiBhdmcg
Y3ljbGUgY291bnQ9IiwKLSAgICAgICAgICAgICAgIGFic2w6OlNpeERpZ2l0cyhzdGF0aWNfY2Fz
dDxkb3VibGU+KHRvdGFsX2N5Y2xlcykgLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtOdW1JdGVyYXRpb25zKSk7CisgICAgc3RkOjpzdHJpbmcgb3V0ID0gU3RyQ2F0KAorICAgICAg
ICBtc2csICJtaW4gY3ljbGUgY291bnQ9IiwgbWluX2N5Y2xlcywgIiBhdmcgY3ljbGUgY291bnQ9
IiwKKyAgICAgICAgYWJzbDo6U2l4RGlnaXRzKHN0YXRpY19jYXN0PGRvdWJsZT4odG90YWxfY3lj
bGVzKSAvIGtOdW1JdGVyYXRpb25zKSk7CiAgICAgcHJpbnRmKCIlc1xuIiwgb3V0LmNfc3RyKCkp
OwogCiAgICAgcGFydG5lcl90aHJlYWQuam9pbigpOwpAQCAtMTUyLDEyICsxNTEsMTYgQEAgVEVT
VF9GKFBlclRocmVhZFNlbVRlc3QsIFdpdGhUaW1lb3V0KSB7CiB9CiAKIFRFU1RfRihQZXJUaHJl
YWRTZW1UZXN0LCBUaW1lb3V0cykgewotICBhYnNsOjpUaW1lIHRpbWVvdXQgPSBhYnNsOjpOb3co
KSArIGFic2w6Ok1pbGxpc2Vjb25kcyg1MCk7CisgIGNvbnN0IGFic2w6OkR1cmF0aW9uIGRlbGF5
ID0gYWJzbDo6TWlsbGlzZWNvbmRzKDUwKTsKKyAgY29uc3QgYWJzbDo6VGltZSBzdGFydCA9IGFi
c2w6Ok5vdygpOworICBFWFBFQ1RfRkFMU0UoV2FpdChzdGFydCArIGRlbGF5KSk7CisgIGNvbnN0
IGFic2w6OkR1cmF0aW9uIGVsYXBzZWQgPSBhYnNsOjpOb3coKSAtIHN0YXJ0OwogICAvLyBBbGxv
dyBmb3IgYSBzbGlnaHQgZWFybHkgcmV0dXJuLCB0byBhY2NvdW50IGZvciBxdWFsaXR5IG9mIGlt
cGxlbWVudGF0aW9uCiAgIC8vIGlzc3VlcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4KICAgY29uc3Qg
YWJzbDo6RHVyYXRpb24gc2xvcCA9IGFic2w6Ok1pY3Jvc2Vjb25kcygyMDApOwotICBFWFBFQ1Rf
RkFMU0UoV2FpdCh0aW1lb3V0KSk7Ci0gIEVYUEVDVF9MRSh0aW1lb3V0LCBhYnNsOjpOb3coKSAr
IHNsb3ApOworICBFWFBFQ1RfTEUoZGVsYXkgLSBzbG9wLCBlbGFwc2VkKQorICAgICAgPDwgIldh
aXQgcmV0dXJuZWQgIiA8PCBkZWxheSAtIGVsYXBzZWQKKyAgICAgIDw8ICIgZWFybHkgKHdpdGgg
IiA8PCBzbG9wIDw8ICIgc2xvcCksIHN0YXJ0IHRpbWUgd2FzICIgPDwgc3RhcnQ7CiAKICAgYWJz
bDo6VGltZSBuZWdhdGl2ZV90aW1lb3V0ID0gYWJzbDo6VW5peEVwb2NoKCkgLSBhYnNsOjpNaWxs
aXNlY29uZHMoMTAwKTsKICAgRVhQRUNUX0ZBTFNFKFdhaXQobmVnYXRpdmVfdGltZW91dCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3RocmVhZF9wb29sLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvdGhyZWFkX3Bvb2wuaAppbmRleCA4NDY0
MDQyNzdhMDNlNzhlNThmMzM0NGVkZjY5MGFlYWVmODljMjM1Li5hMDBmMmJlOGU4OTI4ZTUyZDE0
MGMxZTI1YmZlNjg3Yjk2ZmEyY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24v
aW50ZXJuYWwvdGhyZWFkX3Bvb2wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJu
YWwvdGhyZWFkX3Bvb2wuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMTYsNiArMTYsNyBAQAogI2RlZmluZSBBQlNMX1NZTkNIUk9OSVpBVElPTl9JTlRFUk5B
TF9USFJFQURfUE9PTF9IXwogCiAjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjc3RkZGVm
PgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8cXVldWU+CiAjaW5jbHVkZSA8dGhy
ZWFkPiAgLy8gTk9MSU5UKGJ1aWxkL2MrKzExKQpAQCAtNDIsNyArNDMsNyBAQCBjbGFzcyBUaHJl
YWRQb29sIHsKICAgflRocmVhZFBvb2woKSB7CiAgICAgewogICAgICAgYWJzbDo6TXV0ZXhMb2Nr
IGwoJm11Xyk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRocmVhZHNfLnNpemUoKTsgKytp
KSB7CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRocmVhZHNfLnNpemUoKTsgaSsrKSB7
CiAgICAgICAgIHF1ZXVlXy5wdXNoKG51bGxwdHIpOyAgLy8gU2h1dGRvd24gc2lnbmFsLgogICAg
ICAgfQogICAgIH0KQEAgLTU5LDcgKzYwLDcgQEAgY2xhc3MgVGhyZWFkUG9vbCB7CiAgIH0KIAog
IHByaXZhdGU6Ci0gIGJvb2wgV29ya0F2YWlsYWJsZSgpIGNvbnN0IEVYQ0xVU0lWRV9MT0NLU19S
RVFVSVJFRChtdV8pIHsKKyAgYm9vbCBXb3JrQXZhaWxhYmxlKCkgY29uc3QgQUJTTF9FWENMVVNJ
VkVfTE9DS1NfUkVRVUlSRUQobXVfKSB7CiAgICAgcmV0dXJuICFxdWV1ZV8uZW1wdHkoKTsKICAg
fQogCkBAIC04MCw3ICs4MSw3IEBAIGNsYXNzIFRocmVhZFBvb2wgewogICB9CiAKICAgYWJzbDo6
TXV0ZXggbXVfOwotICBzdGQ6OnF1ZXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gcXVldWVfIEdV
QVJERURfQlkobXVfKTsKKyAgc3RkOjpxdWV1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IHF1ZXVl
XyBBQlNMX0dVQVJERURfQlkobXVfKTsKICAgc3RkOjp2ZWN0b3I8c3RkOjp0aHJlYWQ+IHRocmVh
ZHNfOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3dh
aXRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC93YWl0ZXIuY2MKaW5kZXgg
NzY4YzUyMDg1Y2QzOTY3ZGQ3ZjNkNjZiMGMzMTExZjkwNTcxMzBjNy4uZjE3ZWE1NmZkZGEzNGY2
N2FiZTI4MjIyNDNkNDZlMjkyNzM1Yzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0
aW9uL2ludGVybmFsL3dhaXRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJu
YWwvd2FpdGVyLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBA
IC00MCw2ICs0MCw5IEBACiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGNhc3NlcnQ+CiAj
aW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxuZXc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKICNpbmNsdWRl
ICJhYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmgiCiAjaW5jbHVkZSAiYWJzbC9i
YXNlL29wdGltaXphdGlvbi5oIgpAQCAtODEsNiArODQsNyBAQCBzdGF0aWMgdm9pZCBNYXliZUJl
Y29tZUlkbGUoKSB7CiAjZGVmaW5lIEZVVEVYX0JJVFNFVF9NQVRDSF9BTlkgMHhGRkZGRkZGRgog
I2VuZGlmCiAjZW5kaWYKKwogY2xhc3MgRnV0ZXggewogIHB1YmxpYzoKICAgc3RhdGljIGludCBX
YWl0VW50aWwoc3RkOjphdG9taWM8aW50MzJfdD4gKnYsIGludDMyX3QgdmFsLApAQCAtMzI2LDYg
KzMzMCw0MyBAQCB2b2lkIFdhaXRlcjo6UG9rZSgpIHsKIAogI2VsaWYgQUJTTF9XQUlURVJfTU9E
RSA9PSBBQlNMX1dBSVRFUl9NT0RFX1dJTjMyCiAKK2NsYXNzIFdhaXRlcjo6V2luSGVscGVyIHsK
KyBwdWJsaWM6CisgIHN0YXRpYyBTUldMT0NLICpHZXRMb2NrKFdhaXRlciAqdykgeworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFNSV0xPQ0sgKj4oJnctPm11X3N0b3JhZ2VfKTsKKyAgfQor
CisgIHN0YXRpYyBDT05ESVRJT05fVkFSSUFCTEUgKkdldENvbmQoV2FpdGVyICp3KSB7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q09ORElUSU9OX1ZBUklBQkxFICo+KCZ3LT5jdl9zdG9y
YWdlXyk7CisgIH0KKworICBzdGF0aWNfYXNzZXJ0KHNpemVvZihTUldMT0NLKSA9PSBzaXplb2Yo
V2FpdGVyOjpTUldMb2NrU3RvcmFnZSksCisgICAgICAgICAgICAgICAgIlNSV0xvY2tTdG9yYWdl
IGRvZXMgbm90IGhhdmUgdGhlIHNhbWUgc2l6ZSBhcyBTUldMT0NLIik7CisgIHN0YXRpY19hc3Nl
cnQoCisgICAgICBhbGlnbm9mKFNSV0xPQ0spID09IGFsaWdub2YoV2FpdGVyOjpTUldMb2NrU3Rv
cmFnZSksCisgICAgICAiU1JXTG9ja1N0b3JhZ2UgZG9lcyBub3QgaGF2ZSB0aGUgc2FtZSBhbGln
bm1lbnQgYXMgU1JXTE9DSyIpOworCisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENPTkRJVElPTl9W
QVJJQUJMRSkgPT0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFdhaXRlcjo6Q29uZGl0aW9u
VmFyaWFibGVTdG9yYWdlKSwKKyAgICAgICAgICAgICAgICAiQUJTTF9DT05ESVRJT05fVkFSSUFC
TEVfU1RPUkFHRSBkb2VzIG5vdCBoYXZlIHRoZSBzYW1lIHNpemUgIgorICAgICAgICAgICAgICAg
ICJhcyBDT05ESVRJT05fVkFSSUFCTEUiKTsKKyAgc3RhdGljX2Fzc2VydChhbGlnbm9mKENPTkRJ
VElPTl9WQVJJQUJMRSkgPT0KKyAgICAgICAgICAgICAgICAgICAgYWxpZ25vZihXYWl0ZXI6OkNv
bmRpdGlvblZhcmlhYmxlU3RvcmFnZSksCisgICAgICAgICAgICAgICAgIkNvbmRpdGlvblZhcmlh
YmxlU3RvcmFnZSBkb2VzIG5vdCBoYXZlIHRoZSBzYW1lICIKKyAgICAgICAgICAgICAgICAiYWxp
Z25tZW50IGFzIENPTkRJVElPTl9WQVJJQUJMRSIpOworCisgIC8vIFRoZSBTUldMT0NLIGFuZCBD
T05ESVRJT05fVkFSSUFCTEUgdHlwZXMgbXVzdCBiZSB0cml2aWFsbHkgY29uc3R1Y3RpYmxlCisg
IC8vIGFuZCBkZXN0cnVjdGlibGUgYmVjYXVzZSB3ZSBuZXZlciBjYWxsIHRoZWlyIGNvbnN0cnVj
dG9ycyBvciBkZXN0cnVjdG9ycy4KKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9j
b25zdHJ1Y3RpYmxlPFNSV0xPQ0s+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiVGhlIFNSV0xP
Q0sgdHlwZSBtdXN0IGJlIHRyaXZpYWxseSBjb25zdHJ1Y3RpYmxlIik7CisgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfY29uc3RydWN0aWJsZTxDT05ESVRJT05fVkFSSUFCTEU+Ojp2
YWx1ZSwKKyAgICAgICAgICAgICAgICAiVGhlIENPTkRJVElPTl9WQVJJQUJMRSB0eXBlIG11c3Qg
YmUgdHJpdmlhbGx5IGNvbnN0cnVjdGlibGUiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8U1JXTE9DSz46OnZhbHVlLAorICAgICAgICAgICAgICAgICJU
aGUgU1JXTE9DSyB0eXBlIG11c3QgYmUgdHJpdmlhbGx5IGRlc3RydWN0aWJsZSIpOworICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxDT05ESVRJT05fVkFSSUFC
TEU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiVGhlIENPTkRJVElPTl9WQVJJQUJMRSB0eXBl
IG11c3QgYmUgdHJpdmlhbGx5IGRlc3RydWN0aWJsZSIpOworfTsKKwogY2xhc3MgTG9ja0hvbGRl
ciB7CiAgcHVibGljOgogICBleHBsaWNpdCBMb2NrSG9sZGVyKFNSV0xPQ0sqIG11KSA6IG11Xyht
dSkgewpAQCAtMzQ0LDE0ICszODUsMTkgQEAgY2xhc3MgTG9ja0hvbGRlciB7CiB9OwogCiB2b2lk
IFdhaXRlcjo6SW5pdCgpIHsKLSAgSW5pdGlhbGl6ZVNSV0xvY2soJm11Xyk7Ci0gIEluaXRpYWxp
emVDb25kaXRpb25WYXJpYWJsZSgmY3ZfKTsKKyAgYXV0byAqbXUgPSA6Om5ldyAoc3RhdGljX2Nh
c3Q8dm9pZCAqPigmbXVfc3RvcmFnZV8pKSBTUldMT0NLOworICBhdXRvICpjdiA9IDo6bmV3IChz
dGF0aWNfY2FzdDx2b2lkICo+KCZjdl9zdG9yYWdlXykpIENPTkRJVElPTl9WQVJJQUJMRTsKKyAg
SW5pdGlhbGl6ZVNSV0xvY2sobXUpOworICBJbml0aWFsaXplQ29uZGl0aW9uVmFyaWFibGUoY3Yp
OwogICB3YWl0ZXJfY291bnRfLnN0b3JlKDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwog
ICB3YWtldXBfY291bnRfLnN0b3JlKDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogfQog
CiBib29sIFdhaXRlcjo6V2FpdChLZXJuZWxUaW1lb3V0IHQpIHsKLSAgTG9ja0hvbGRlciBoKCZt
dV8pOworICBTUldMT0NLICptdSA9IFdpbkhlbHBlcjo6R2V0TG9jayh0aGlzKTsKKyAgQ09ORElU
SU9OX1ZBUklBQkxFICpjdiA9IFdpbkhlbHBlcjo6R2V0Q29uZCh0aGlzKTsKKworICBMb2NrSG9s
ZGVyIGgobXUpOwogICB3YWl0ZXJfY291bnRfLmZldGNoX2FkZCgxLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKIAogICAvLyBMb29wIHVudGlsIHdlIGZpbmQgYSB3YWtldXAgdG8gY29uc3Vt
ZSBvciB0aW1lb3V0LgpAQCAtMzY5LDggKzQxNSw3IEBAIGJvb2wgV2FpdGVyOjpXYWl0KEtlcm5l
bFRpbWVvdXQgdCkgewogICAgIH0KIAogICAgIC8vIE5vIHdha2V1cHMgYXZhaWxhYmxlLCB0aW1l
IHRvIHdhaXQuCi0gICAgaWYgKCFTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JXKAotICAgICAgICAg
ICAgJmN2XywgJm11XywgdC5Jbk1pbGxpc2Vjb25kc0Zyb21Ob3coKSwgMCkpIHsKKyAgICBpZiAo
IVNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcoY3YsIG11LCB0LkluTWlsbGlzZWNvbmRzRnJvbU5v
dygpLCAwKSkgewogICAgICAgLy8gR2V0TGFzdEVycm9yKCkgcmV0dXJucyBhIFdpbjMyIERXT1JE
LCBidXQgd2UgYXNzaWduIHRvCiAgICAgICAvLyB1bnNpZ25lZCBsb25nIHRvIHNpbXBsaWZ5IHRo
ZSBBQlNMX1JBV19MT0cgY2FzZSBiZWxvdy4gIFRoZSB1bmlmb3JtCiAgICAgICAvLyBpbml0aWFs
aXphdGlvbiBndWFyYW50ZWVzIHRoaXMgaXMgbm90IGEgbmFycm93aW5nIGNvbnZlcnNpb24uCkBA
IC0zOTcsMTEgKzQ0MiwxMSBAQCB2b2lkIFdhaXRlcjo6UG9rZSgpIHsKICAgICByZXR1cm47CiAg
IH0KICAgLy8gUG90ZW50aWFsbHkgYSB3YWtlci4gVGFrZSB0aGUgbG9jayBhbmQgY2hlY2sgYWdh
aW4uCi0gIExvY2tIb2xkZXIgaCgmbXVfKTsKKyAgTG9ja0hvbGRlciBoKFdpbkhlbHBlcjo6R2V0
TG9jayh0aGlzKSk7CiAgIGlmICh3YWl0ZXJfY291bnRfLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJf
cmVsYXhlZCkgPT0gMCkgewogICAgIHJldHVybjsKICAgfQotICBXYWtlQ29uZGl0aW9uVmFyaWFi
bGUoJmN2Xyk7CisgIFdha2VDb25kaXRpb25WYXJpYWJsZShXaW5IZWxwZXI6OkdldENvbmQodGhp
cykpOwogfQogCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVy
bmFsL3dhaXRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3dhaXRlci5oCmlu
ZGV4IDIzMTY2ZjRiZmEzNzg2YTI0MTVjMTZiYjE1M2QxYjhhZDc4MWNmMjkuLmEzZTMxMjRlNDQx
NzgwNDIyMTdkNWY3NTdmZWU0MWU3YzhiMzdjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9u
aXphdGlvbi9pbnRlcm5hbC93YWl0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50
ZXJuYWwvd2FpdGVyLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTE4LDkgKzE4LDcgQEAKIAogI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKIAotI2lm
ZGVmIF9XSU4zMgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCisjaWZuZGVmIF9XSU4zMgog
I2luY2x1ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgogCkBAIC0xMjMsOCArMTIxLDIwIEBAIGNsYXNz
IFdhaXRlciB7CiAgIC8vIHByaW1pdml0aXZlcy4gIFdlIGFyZSB1c2luZyBTUldMT0NLIGFuZCBD
T05ESVRJT05fVkFSSUFCTEUKICAgLy8gYmVjYXVzZSB0aGV5IGRvbid0IHJlcXVpcmUgYSBkZXN0
cnVjdG9yIHRvIHJlbGVhc2Ugc3lzdGVtCiAgIC8vIHJlc291cmNlcy4KLSAgU1JXTE9DSyBtdV87
Ci0gIENPTkRJVElPTl9WQVJJQUJMRSBjdl87CisgIC8vCisgIC8vIEhvd2V2ZXIsIHdlIGNhbid0
IGluY2x1ZGUgV2luZG93cy5oIGluIG91ciBoZWFkZXJzLCBzbyB3ZSB1c2UgYWxpZ25lZAorICAv
LyBzdG9yYWdlIGJ1ZmZlcnMgdG8gZGVmaW5lIHRoZSBzdG9yYWdlLgorICB1c2luZyBTUldMb2Nr
U3RvcmFnZSA9CisgICAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2Yodm9p
ZCopLCBhbGlnbm9mKHZvaWQqKT46OnR5cGU7CisgIHVzaW5nIENvbmRpdGlvblZhcmlhYmxlU3Rv
cmFnZSA9CisgICAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2Yodm9pZCop
LCBhbGlnbm9mKHZvaWQqKT46OnR5cGU7CisKKyAgLy8gV2luSGVscGVyIC0gVXNlZCB0byBkZWZp
bmUgdXRpbGl0aWVzIGZvciBhY2Nlc3NpbmcgdGhlIGxvY2sgYW5kCisgIC8vIGNvbmRpdGlvbiB2
YXJpYWJsZSBzdG9yYWdlIG9uY2UgdGhlIHR5cGVzIGFyZSBjb21wbGV0ZS4KKyAgY2xhc3MgV2lu
SGVscGVyOworCisgIFNSV0xvY2tTdG9yYWdlIG11X3N0b3JhZ2VfOworICBDb25kaXRpb25WYXJp
YWJsZVN0b3JhZ2UgY3Zfc3RvcmFnZV87CiAgIHN0ZDo6YXRvbWljPGludD4gd2FpdGVyX2NvdW50
XzsKICAgc3RkOjphdG9taWM8aW50PiB3YWtldXBfY291bnRfOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vbGlmZXRpbWVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlv
bi9saWZldGltZV90ZXN0LmNjCmluZGV4IDkwYzkwMDliMThmYWZjOWVhMjk1Y2FiMTQ2YzY1ZGQ2
ODJjYmY1NzIuLjM0Yjg4NzViNGI3MDE5MDgwOThiZmY3MTNlYmNlMTRmY2U1MTNmM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9saWZldGltZV90ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N5bmNocm9uaXphdGlvbi9saWZldGltZV90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CiAKICNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImFic2wv
YmFzZS9jb25zdF9pbml0LmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dn
aW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogI2luY2x1
ZGUgImFic2wvc3luY2hyb25pemF0aW9uL211dGV4LmgiCkBAIC03MiwyMyArNzMsMTkgQEAgdm9p
ZCBUaHJlYWRUd28oYWJzbDo6TXV0ZXgqIG11dGV4LCBhYnNsOjpDb25kVmFyKiBjb25kdmFyLAog
Ly8gTGF1bmNoIHRocmVhZCAxIGFuZCB0aHJlYWQgMiwgYW5kIGJsb2NrIG9uIHRoZWlyIGNvbXBs
ZXRpb24uCiAvLyBJZiBhbnkgb2YgJ211dGV4JywgJ2NvbmR2YXInLCBvciAnbm90aWZpY2F0aW9u
JyBpcyBudWxscHRyLCB1c2UgYSBsb2NhbGx5CiAvLyBjb25zdHJ1Y3RlZCBpbnN0YW5jZSBpbnN0
ZWFkLgotdm9pZCBSdW5UZXN0cyhhYnNsOjpNdXRleCogbXV0ZXgsIGFic2w6OkNvbmRWYXIqIGNv
bmR2YXIsCi0gICAgICAgICAgICAgIGFic2w6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKSB7
Cit2b2lkIFJ1blRlc3RzKGFic2w6Ok11dGV4KiBtdXRleCwgYWJzbDo6Q29uZFZhciogY29uZHZh
cikgewogICBhYnNsOjpNdXRleCBkZWZhdWx0X211dGV4OwogICBhYnNsOjpDb25kVmFyIGRlZmF1
bHRfY29uZHZhcjsKLSAgYWJzbDo6Tm90aWZpY2F0aW9uIGRlZmF1bHRfbm90aWZpY2F0aW9uOwor
ICBhYnNsOjpOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uOwogICBpZiAoIW11dGV4KSB7CiAgICAg
bXV0ZXggPSAmZGVmYXVsdF9tdXRleDsKICAgfQogICBpZiAoIWNvbmR2YXIpIHsKICAgICBjb25k
dmFyID0gJmRlZmF1bHRfY29uZHZhcjsKICAgfQotICBpZiAoIW5vdGlmaWNhdGlvbikgewotICAg
IG5vdGlmaWNhdGlvbiA9ICZkZWZhdWx0X25vdGlmaWNhdGlvbjsKLSAgfQogICBib29sIHN0YXRl
ID0gZmFsc2U7Ci0gIHN0ZDo6dGhyZWFkIHRocmVhZF9vbmUoVGhyZWFkT25lLCBtdXRleCwgY29u
ZHZhciwgbm90aWZpY2F0aW9uLCAmc3RhdGUpOwotICBzdGQ6OnRocmVhZCB0aHJlYWRfdHdvKFRo
cmVhZFR3bywgbXV0ZXgsIGNvbmR2YXIsIG5vdGlmaWNhdGlvbiwgJnN0YXRlKTsKKyAgc3RkOjp0
aHJlYWQgdGhyZWFkX29uZShUaHJlYWRPbmUsIG11dGV4LCBjb25kdmFyLCAmbm90aWZpY2F0aW9u
LCAmc3RhdGUpOworICBzdGQ6OnRocmVhZCB0aHJlYWRfdHdvKFRocmVhZFR3bywgbXV0ZXgsIGNv
bmR2YXIsICZub3RpZmljYXRpb24sICZzdGF0ZSk7CiAgIHRocmVhZF9vbmUuam9pbigpOwogICB0
aHJlYWRfdHdvLmpvaW4oKTsKIH0KQEAgLTk2LDEwICs5MywxMyBAQCB2b2lkIFJ1blRlc3RzKGFi
c2w6Ok11dGV4KiBtdXRleCwgYWJzbDo6Q29uZFZhciogY29uZHZhciwKIHZvaWQgVGVzdExvY2Fs
cygpIHsKICAgYWJzbDo6TXV0ZXggbXV0ZXg7CiAgIGFic2w6OkNvbmRWYXIgY29uZHZhcjsKLSAg
YWJzbDo6Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbjsKLSAgUnVuVGVzdHMoJm11dGV4LCAmY29u
ZHZhciwgJm5vdGlmaWNhdGlvbik7CisgIFJ1blRlc3RzKCZtdXRleCwgJmNvbmR2YXIpOwogfQog
CisvLyBOb3JtYWwga0NvbnN0SW5pdCB1c2FnZQorQUJTTF9DT05TVF9JTklUIGFic2w6Ok11dGV4
IGNvbnN0X2luaXRfbXV0ZXgoYWJzbDo6a0NvbnN0SW5pdCk7Cit2b2lkIFRlc3RDb25zdEluaXRH
bG9iYWwoKSB7IFJ1blRlc3RzKCZjb25zdF9pbml0X211dGV4LCBudWxscHRyKTsgfQorCiAvLyBH
bG9iYWwgdmFyaWFibGVzIGR1cmluZyBzdGFydCBhbmQgdGVybWluYXRpb24KIC8vCiAvLyBJbiBh
IHRyYW5zbGF0aW9uIHVuaXQsIHN0YXRpYyBzdG9yYWdlIGR1cmF0aW9uIHZhcmlhYmxlcyBhcmUg
aW5pdGlhbGl6ZWQgaW4KQEAgLTEyMiwxMCArMTIyLDUzIEBAIGNsYXNzIE9uRGVzdHJ1Y3Rpb24g
ewogICBGdW5jdGlvbiBmbl87CiB9OwogCisvLyBrQ29uc3RJbml0CisvLyBUZXN0IGVhcmx5IHVz
YWdlLiAgKERlY2xhcmF0aW9uIGNvbWVzIGZpcnN0OyBkZWZpbml0aW9ucyBtdXN0IGFwcGVhciBh
ZnRlcgorLy8gdGhlIHRlc3QgcnVubmVyLikKK2V4dGVybiBhYnNsOjpNdXRleCBlYXJseV9jb25z
dF9pbml0X211dGV4OworLy8gKE5vcm1hbGx5IEknZCB3cml0ZSB0aGlzICtbXSwgdG8gbWFrZSB0
aGUgY2FzdC10by1mdW5jdGlvbi1wb2ludGVyIGV4cGxpY2l0LAorLy8gYnV0IGluIHNvbWUgTVNW
QyBzZXR1cHMgd2Ugc3VwcG9ydCwgbGFtYmRhcyBwcm92aWRlIGNvbnZlcnNpb24gb3BlcmF0b3Jz
IHRvCisvLyBkaWZmZXJlbnQgZmxhdm9ycyBvZiBmdW5jdGlvbiBwb2ludGVycywgbWFraW5nIHRo
aXMgdHJpY2sgYW1iaWd1b3VzLikKK09uQ29uc3RydWN0aW9uIHRlc3RfZWFybHlfY29uc3RfaW5p
dChbXSB7CisgIFJ1blRlc3RzKCZlYXJseV9jb25zdF9pbml0X211dGV4LCBudWxscHRyKTsKK30p
OworLy8gVGhpcyBkZWZpbml0aW9uIGFwcGVhcnMgYmVmb3JlIHRlc3RfZWFybHlfY29uc3RfaW5p
dCwgYnV0IGl0IHNob3VsZCBiZQorLy8gaW5pdGlhbGl6ZWQgZmlyc3QgKGR1ZSB0byBjb25zdGFu
dCBpbml0aWFsaXphdGlvbikuICBUZXN0IHRoYXQgdGhlIG9iamVjdAorLy8gYWN0dWFsbHkgd29y
a3Mgd2hlbiBjb25zdHJ1Y3RlZCB0aGlzIHdheS4KK0FCU0xfQ09OU1RfSU5JVCBhYnNsOjpNdXRl
eCBlYXJseV9jb25zdF9pbml0X211dGV4KGFic2w6OmtDb25zdEluaXQpOworCisvLyBGdXJ0aGVy
bW9yZSwgdGVzdCB0aGF0IHRoZSBjb25zdC1pbml0IGMndG9yIGRvZXNuJ3Qgc3RvbXAgb3ZlciB0
aGUgc3RhdGUgb2YKKy8vIGEgTXV0ZXguICBSZWFsbHksIHRoaXMgaXMgYSB0ZXN0IHRoYXQgdGhl
IHBsYXRmb3JtIHVuZGVyIHRlc3QgY29ycmVjdGx5CisvLyBzdXBwb3J0cyBDKysxMSBjb25zdGFu
dCBpbml0aWFsaXphdGlvbi4gIChUaGUgY29uc3RhbnQtaW5pdGlhbGl6YXRpb24KKy8vIGNvbnN0
cnVjdG9ycyBvZiBnbG9iYWxzICJoYXBwZW4gYXQgbGluayB0aW1lIjsgbWVtb3J5IGlzIHByZS1p
bml0aWFsaXplZCwKKy8vIGJlZm9yZSB0aGUgY29uc3RydWN0b3JzIG9mIGVpdGhlciBncmFiX2xv
Y2sgb3IgY2hlY2tfc3RpbGxfbG9ja2VkIGFyZSBydW4uKQorZXh0ZXJuIGFic2w6Ok11dGV4IGNv
bnN0X2luaXRfc2FuaXR5X211dGV4OworT25Db25zdHJ1Y3Rpb24gZ3JhYl9sb2NrKFtdKCkgQUJT
TF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKKyAgY29uc3RfaW5pdF9zYW5pdHlfbXV0ZXgu
TG9jaygpOworfSk7CitBQlNMX0NPTlNUX0lOSVQgYWJzbDo6TXV0ZXggY29uc3RfaW5pdF9zYW5p
dHlfbXV0ZXgoYWJzbDo6a0NvbnN0SW5pdCk7CitPbkNvbnN0cnVjdGlvbiBjaGVja19zdGlsbF9s
b2NrZWQoW10oKSBBQlNMX05PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeworICBjb25zdF9pbml0
X3Nhbml0eV9tdXRleC5Bc3NlcnRIZWxkKCk7CisgIGNvbnN0X2luaXRfc2FuaXR5X211dGV4LlVu
bG9jaygpOworfSk7CisKKy8vIFRlc3Qgc2h1dGRvd24gdXNhZ2UuICAoRGVjbGFyYXRpb25zIGNv
bWUgZmlyc3Q7IGRlZmluaXRpb25zIG11c3QgYXBwZWFyIGFmdGVyCisvLyB0aGUgdGVzdCBydW5u
ZXIuKQorZXh0ZXJuIGFic2w6Ok11dGV4IGxhdGVfY29uc3RfaW5pdF9tdXRleDsKKy8vIE9uRGVz
dHJ1Y3Rpb24gaXMgYmVpbmcgdXNlZCBoZXJlIGFzIGEgZ2xvYmFsIHZhcmlhYmxlLCBldmVuIHRo
b3VnaCBpdCBoYXMgYQorLy8gbm9uLXRyaXZpYWwgZGVzdHJ1Y3Rvci4gIFRoaXMgaXMgYWdhaW5z
dCB0aGUgc3R5bGUgZ3VpZGUuICBXZSdyZSB2aW9sYXRpbmcKKy8vIHRoYXQgcnVsZSBoZXJlIHRv
IGNoZWNrIHRoYXQgdGhlIGV4Y2VwdGlvbiB3ZSBhbGxvdyBmb3Iga0NvbnN0SW5pdCBpcyBzYWZl
LgorLy8gTk9MSU5UTkVYVExJTkUKK09uRGVzdHJ1Y3Rpb24gdGVzdF9sYXRlX2NvbnN0X2luaXQo
W10geworICBSdW5UZXN0cygmbGF0ZV9jb25zdF9pbml0X211dGV4LCBudWxscHRyKTsKK30pOwor
QUJTTF9DT05TVF9JTklUIGFic2w6Ok11dGV4IGxhdGVfY29uc3RfaW5pdF9tdXRleChhYnNsOjpr
Q29uc3RJbml0KTsKKwogfSAgLy8gbmFtZXNwYWNlCiAKIGludCBtYWluKCkgewogICBUZXN0TG9j
YWxzKCk7CisgIFRlc3RDb25zdEluaXRHbG9iYWwoKTsKICAgLy8gRXhwbGljaXRseSBjYWxsIGV4
aXQoMCkgaGVyZSwgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHdlIGludGVuZCBmb3IgdGhlCiAgIC8v
IGFib3ZlIGdsb2JhbCBvYmplY3QgZGVzdHJ1Y3RvcnMgdG8gcnVuLgogICBzdGQ6OmV4aXQoMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5j
aHJvbml6YXRpb24vbXV0ZXguY2MKaW5kZXggOWQ1OWE3OWQ5MmQ5Zjc5MjhmM2RmZTJhNzMwNDM0
ZTE1NGFjZWM0Ny4uYWNhYzc0MDE2MzJjNTVhNzBhMGNkMzI1NzA1MjQ3ZThmMzkwOWM4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNo
cm9uaXphdGlvbi9tdXRleC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTE4LDYgKzExOCwxMCBAQCBBQlNMX0NPTlNUX0lOSVQgYWJzbDo6YmFzZV9pbnRl
cm5hbDo6QXRvbWljSG9vazwKIAogfSAgLy8gbmFtZXNwYWNlCiAKK3N0YXRpYyBpbmxpbmUgYm9v
bCBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKGNvbnN0IENvbmRpdGlvbiAqY29uZCwgTXV0ZXggKm11
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsb2NraW5n
LCBib29sIHRyeWxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHJlYWRfbG9jayk7CisKIHZvaWQgUmVnaXN0ZXJNdXRleFByb2ZpbGVyKHZvaWQgKCpm
bikoaW50NjRfdCB3YWl0X3RpbWVzdGFtcCkpIHsKICAgc3VibWl0X3Byb2ZpbGVfZGF0YS5TdG9y
ZShmbik7CiB9CkBAIC0xNTAsNyArMTU0LDcgQEAgc3RhdGljIGludCBEZWxheShpbnQzMl90IGMs
IERlbGF5TW9kZSBtb2RlKSB7CiAgIGlmIChjIDwgbGltaXQpIHsKICAgICBjKys7ICAgICAgICAg
ICAgICAgLy8gc3BpbgogICB9IGVsc2UgewotICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfRElWRVJU
KDAsIDApOworICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfRElWRVJUKG51bGxwdHIsIDApOwogICAg
IGlmIChjID09IGxpbWl0KSB7ICAvLyB5aWVsZCBvbmNlCiAgICAgICBBYnNsSW50ZXJuYWxNdXRl
eFlpZWxkKCk7CiAgICAgICBjKys7CkBAIC0xNTgsNyArMTYyLDcgQEAgc3RhdGljIGludCBEZWxh
eShpbnQzMl90IGMsIERlbGF5TW9kZSBtb2RlKSB7CiAgICAgICBhYnNsOjpTbGVlcEZvcihhYnNs
OjpNaWNyb3NlY29uZHMoMTApKTsKICAgICAgIGMgPSAwOwogICAgIH0KLSAgICBBQlNMX1RTQU5f
TVVURVhfUE9TVF9ESVZFUlQoMCwgMCk7CisgICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfRElWRVJU
KG51bGxwdHIsIDApOwogICB9CiAgIHJldHVybiAoYyk7CiB9CkBAIC0yMDMsOCArMjA3LDggQEAg
c3RhdGljIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNwaW5Mb2NrIGRlYWRsb2NrX2dyYXBoX211KAog
ICAgIGFic2w6OmJhc2VfaW50ZXJuYWw6OmtMaW5rZXJJbml0aWFsaXplZCk7CiAKIC8vIGdyYXBo
IHVzZWQgdG8gZGV0ZWN0IGRlYWRsb2Nrcy4KLXN0YXRpYyBHcmFwaEN5Y2xlcyAqZGVhZGxvY2tf
Z3JhcGggR1VBUkRFRF9CWShkZWFkbG9ja19ncmFwaF9tdSkKLSAgICBQVF9HVUFSREVEX0JZKGRl
YWRsb2NrX2dyYXBoX211KTsKK3N0YXRpYyBHcmFwaEN5Y2xlcyAqZGVhZGxvY2tfZ3JhcGggQUJT
TF9HVUFSREVEX0JZKGRlYWRsb2NrX2dyYXBoX211KQorICAgIEFCU0xfUFRfR1VBUkRFRF9CWShk
ZWFkbG9ja19ncmFwaF9tdSk7CiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBBbiBldmVudCBtZWNoYW5pc20g
Zm9yIGRlYnVnZ2luZyBtdXRleCB1c2UuCkBAIC0yMzMsMTUgKzIzNywxNCBAQCBlbnVtIHsgICAg
ICAgLy8gTXV0ZXggYW5kIENvbmRWYXIgZXZlbnRzIHBhc3NlZCBhcyAiZXYiIHRvIFBvc3RTeW5j
aEV2ZW50CiAgIFNZTkNIX0VWX1NJR05BTEFMTCwKIH07CiAKLWVudW0geyAgICAgICAgICAgICAg
ICAgLy8gRXZlbnQgZmxhZ3MKLSAgU1lOQ0hfRl9SID0gMHgwMSwgICAgLy8gcmVhZGVyIGV2ZW50
Ci0gIFNZTkNIX0ZfTENLID0gMHgwMiwgIC8vIFBvc3RTeW5jaEV2ZW50IGNhbGxlZCB3aXRoIG11
dGV4IGhlbGQKLSAgU1lOQ0hfRl9BQ1EgPSAweDA0LCAgLy8gZXZlbnQgaXMgYW4gYWNxdWlyZQor
ZW51bSB7ICAgICAgICAgICAgICAgICAgICAvLyBFdmVudCBmbGFncworICBTWU5DSF9GX1IgPSAw
eDAxLCAgICAgICAvLyByZWFkZXIgZXZlbnQKKyAgU1lOQ0hfRl9MQ0sgPSAweDAyLCAgICAgLy8g
UG9zdFN5bmNoRXZlbnQgY2FsbGVkIHdpdGggbXV0ZXggaGVsZAorICBTWU5DSF9GX1RSWSA9IDB4
MDQsICAgICAvLyBUcnlMb2NrIG9yIFJlYWRlclRyeUxvY2sKKyAgU1lOQ0hfRl9VTkxPQ0sgPSAw
eDA4LCAgLy8gVW5sb2NrIG9yIFJlYWRlclVubG9jawogCiAgIFNZTkNIX0ZfTENLX1cgPSBTWU5D
SF9GX0xDSywKICAgU1lOQ0hfRl9MQ0tfUiA9IFNZTkNIX0ZfTENLIHwgU1lOQ0hfRl9SLAotICBT
WU5DSF9GX0FDUV9XID0gU1lOQ0hfRl9BQ1EsCi0gIFNZTkNIX0ZfQUNRX1IgPSBTWU5DSF9GX0FD
USB8IFNZTkNIX0ZfUiwKIH07CiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKQEAgLTI1MCwy
MSArMjUzLDIyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogICBpbnQgZmxhZ3M7CiAgIGNvbnN0
IGNoYXIgKm1zZzsKIH0gZXZlbnRfcHJvcGVydGllc1tdID0gewotICB7IFNZTkNIX0ZfTENLX1d8
U1lOQ0hfRl9BQ1FfVywgIlRyeUxvY2sgc3VjY2VlZGVkICIgfSwKLSAgeyAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJUcnlMb2NrIGZhaWxlZCAiIH0sCi0gIHsgU1lOQ0hfRl9MQ0tfUnxT
WU5DSF9GX0FDUV9SLCAiUmVhZGVyVHJ5TG9jayBzdWNjZWVkZWQgIiB9LAotICB7IDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlJlYWRlclRyeUxvY2sgZmFpbGVkICIgfSwKLSAgeyAgICAg
ICAgICAgICAgIFNZTkNIX0ZfQUNRX1csICJMb2NrIGJsb2NraW5nICIgfSwKLSAgeyBTWU5DSF9G
X0xDS19XLCAgICAgICAgICAgICAgICJMb2NrIHJldHVybmluZyAiIH0sCi0gIHsgICAgICAgICAg
ICAgICBTWU5DSF9GX0FDUV9SLCAiUmVhZGVyTG9jayBibG9ja2luZyAiIH0sCi0gIHsgU1lOQ0hf
Rl9MQ0tfUiwgICAgICAgICAgICAgICAiUmVhZGVyTG9jayByZXR1cm5pbmcgIiB9LAotICB7IFNZ
TkNIX0ZfTENLX1csICAgICAgICAgICAgICAgIlVubG9jayAiIH0sCi0gIHsgU1lOQ0hfRl9MQ0tf
UiwgICAgICAgICAgICAgICAiUmVhZGVyVW5sb2NrICIgfSwKLSAgeyAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJXYWl0IG9uICIgfSwKLSAgeyAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJXYWl0IHVuYmxvY2tlZCAiIH0sCi0gIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiU2lnbmFsIG9uICIgfSwKLSAgeyAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaWdu
YWxBbGwgb24gIiB9LAorICAgIHtTWU5DSF9GX0xDS19XIHwgU1lOQ0hfRl9UUlksICJUcnlMb2Nr
IHN1Y2NlZWRlZCAifSwKKyAgICB7MCwgIlRyeUxvY2sgZmFpbGVkICJ9LAorICAgIHtTWU5DSF9G
X0xDS19SIHwgU1lOQ0hfRl9UUlksICJSZWFkZXJUcnlMb2NrIHN1Y2NlZWRlZCAifSwKKyAgICB7
MCwgIlJlYWRlclRyeUxvY2sgZmFpbGVkICJ9LAorICAgIHswLCAiTG9jayBibG9ja2luZyAifSwK
KyAgICB7U1lOQ0hfRl9MQ0tfVywgIkxvY2sgcmV0dXJuaW5nICJ9LAorICAgIHswLCAiUmVhZGVy
TG9jayBibG9ja2luZyAifSwKKyAgICB7U1lOQ0hfRl9MQ0tfUiwgIlJlYWRlckxvY2sgcmV0dXJu
aW5nICJ9LAorICAgIHtTWU5DSF9GX0xDS19XIHwgU1lOQ0hfRl9VTkxPQ0ssICJVbmxvY2sgIn0s
CisgICAge1NZTkNIX0ZfTENLX1IgfCBTWU5DSF9GX1VOTE9DSywgIlJlYWRlclVubG9jayAifSwK
KyAgICB7MCwgIldhaXQgb24gIn0sCisgICAgezAsICJXYWl0IHVuYmxvY2tlZCAifSwKKyAgICB7
MCwgIlNpZ25hbCBvbiAifSwKKyAgICB7MCwgIlNpZ25hbEFsbCBvbiAifSwKIH07CisKIHN0YXRp
YyBhYnNsOjpiYXNlX2ludGVybmFsOjpTcGluTG9jayBzeW5jaF9ldmVudF9tdSgKICAgICBhYnNs
OjpiYXNlX2ludGVybmFsOjprTGlua2VySW5pdGlhbGl6ZWQpOwogLy8gcHJvdGVjdHMgc3luY2hf
ZXZlbnQKQEAgLTI3NSwxMCArMjc5LDEwIEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrTlN5bmNo
RXZlbnQgPSAxMDMxOwogCiBzdGF0aWMgc3RydWN0IFN5bmNoRXZlbnQgeyAgICAgLy8gdGhpcyBp
cyBhIHRyaXZpYWwgaGFzaCB0YWJsZSBmb3IgdGhlIGV2ZW50cwogICAvLyBzdHJ1Y3QgaXMgZnJl
ZWQgd2hlbiByZWZjb3VudCByZWFjaGVzIDAKLSAgaW50IHJlZmNvdW50IEdVQVJERURfQlkoc3lu
Y2hfZXZlbnRfbXUpOworICBpbnQgcmVmY291bnQgQUJTTF9HVUFSREVEX0JZKHN5bmNoX2V2ZW50
X211KTsKIAogICAvLyBidWNrZXRzIGhhdmUgbGluZWFyLCAwLXRlcm1pbmF0ZWQgIGNoYWlucwot
ICBTeW5jaEV2ZW50ICpuZXh0IEdVQVJERURfQlkoc3luY2hfZXZlbnRfbXUpOworICBTeW5jaEV2
ZW50ICpuZXh0IEFCU0xfR1VBUkRFRF9CWShzeW5jaF9ldmVudF9tdSk7CiAKICAgLy8gQ29uc3Rh
bnQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24KICAgdWludHB0cl90IG1hc2tlZF9hZGRyOyAgLy8gb2Jq
ZWN0IGF0IHRoaXMgYWRkcmVzcyBpcyBjYWxsZWQgIm5hbWUiCkBAIC0yOTIsNyArMjk2LDcgQEAg
c3RhdGljIHN0cnVjdCBTeW5jaEV2ZW50IHsgICAgIC8vIHRoaXMgaXMgYSB0cml2aWFsIGhhc2gg
dGFibGUgZm9yIHRoZSBldmVudHMKIAogICAvLyBDb25zdGFudCBhZnRlciBpbml0aWFsaXphdGlv
bgogICBjaGFyIG5hbWVbMV07ICAgICAgICAgLy8gYWN0dWFsbHkgbG9uZ2VyLS0tbnVsbC10ZXJt
aW5hdGVkIHN0ZDo6c3RyaW5nCi19ICpzeW5jaF9ldmVudFtrTlN5bmNoRXZlbnRdIEdVQVJERURf
Qlkoc3luY2hfZXZlbnRfbXUpOworfSAqc3luY2hfZXZlbnRba05TeW5jaEV2ZW50XSBBQlNMX0dV
QVJERURfQlkoc3luY2hfZXZlbnRfbXUpOwogCiAvLyBFbnN1cmUgdGhhdCB0aGUgb2JqZWN0IGF0
ICJhZGRyIiBoYXMgYSBTeW5jaEV2ZW50IHN0cnVjdCBhc3NvY2lhdGVkIHdpdGggaXQsCiAvLyBz
ZXQgImJpdHMiIGluIHRoZSB3b3JkIHRoZXJlICh3YWl0aW5nIHVudGlsIGxvY2tiaXQgaXMgY2xl
YXIgYmVmb3JlIGRvaW5nCkBAIC00MTQsOSArNDE4LDI2IEBAIHN0YXRpYyB2b2lkIFBvc3RTeW5j
aEV2ZW50KHZvaWQgKm9iaiwgaW50IGV2KSB7CiAgICAgQUJTTF9SQVdfTE9HKElORk8sICIlcyVw
ICVzICVzIiwgZXZlbnRfcHJvcGVydGllc1tldl0ubXNnLCBvYmosCiAgICAgICAgICAgICAgICAg
IChlID09IG51bGxwdHIgPyAiIiA6IGUtPm5hbWUpLCBidWZmZXIpOwogICB9Ci0gIGlmICgoZXZl
bnRfcHJvcGVydGllc1tldl0uZmxhZ3MgJiBTWU5DSF9GX0xDSykgIT0gMCAmJiBlICE9IG51bGxw
dHIgJiYKLSAgICAgIGUtPmludmFyaWFudCAhPSBudWxscHRyKSB7Ci0gICAgKCplLT5pbnZhcmlh
bnQpKGUtPmFyZyk7CisgIGNvbnN0IGludCBmbGFncyA9IGV2ZW50X3Byb3BlcnRpZXNbZXZdLmZs
YWdzOworICBpZiAoKGZsYWdzICYgU1lOQ0hfRl9MQ0spICE9IDAgJiYgZSAhPSBudWxscHRyICYm
IGUtPmludmFyaWFudCAhPSBudWxscHRyKSB7CisgICAgLy8gQ2FsbGluZyB0aGUgaW52YXJpYW50
IGFzIGlzIGNhdXNlcyBwcm9ibGVtcyB1bmRlciBUaHJlYWRTYW5pdGl6ZXIuCisgICAgLy8gV2Ug
YXJlIGN1cnJlbnRseSBpbnNpZGUgb2YgTXV0ZXggTG9jay9VbmxvY2sgYW5kIGFyZSBpZ25vcmlu
ZyBhbGwKKyAgICAvLyBtZW1vcnkgYWNjZXNzZXMgYW5kIHN5bmNocm9uaXphdGlvbi4gSWYgdGhl
IGludmFyaWFudCB0cmFuc2l0aXZlbHkKKyAgICAvLyBzeW5jaHJvbml6ZXMgc29tZXRoaW5nIGVs
c2UgYW5kIHdlIGlnbm9yZSB0aGUgc3luY2hyb25pemF0aW9uLCB3ZSB3aWxsCisgICAgLy8gZ2V0
IGZhbHNlIHBvc2l0aXZlIHJhY2UgcmVwb3J0cyBsYXRlci4KKyAgICAvLyBSZXVzZSBFdmFsQ29u
ZGl0aW9uQW5ub3RhdGVkIHRvIHByb3Blcmx5IGNhbGwgaW50byB1c2VyIGNvZGUuCisgICAgc3Ry
dWN0IGxvY2FsIHsKKyAgICAgIHN0YXRpYyBib29sIHByZWQoU3luY2hFdmVudCAqZXYpIHsKKyAg
ICAgICAgKCpldi0+aW52YXJpYW50KShldi0+YXJnKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgfQorICAgIH07CisgICAgQ29uZGl0aW9uIGNvbmQoJmxvY2FsOjpwcmVkLCBlKTsKKyAg
ICBNdXRleCAqbXUgPSBzdGF0aWNfY2FzdDxNdXRleCAqPihvYmopOworICAgIGNvbnN0IGJvb2wg
bG9ja2luZyA9IChmbGFncyAmIFNZTkNIX0ZfVU5MT0NLKSA9PSAwOworICAgIGNvbnN0IGJvb2wg
dHJ5bG9jayA9IChmbGFncyAmIFNZTkNIX0ZfVFJZKSAhPSAwOworICAgIGNvbnN0IGJvb2wgcmVh
ZF9sb2NrID0gKGZsYWdzICYgU1lOQ0hfRl9SKSAhPSAwOworICAgIEV2YWxDb25kaXRpb25Bbm5v
dGF0ZWQoJmNvbmQsIG11LCBsb2NraW5nLCB0cnlsb2NrLCByZWFkX2xvY2spOwogICB9CiAgIFVu
cmVmU3luY2hFdmVudChlKTsKIH0KQEAgLTg4MCwxMSArOTAxLDE1IEBAIHN0YXRpYyBQZXJUaHJl
YWRTeW5jaCAqRW5xdWV1ZShQZXJUaHJlYWRTeW5jaCAqaGVhZCwKICAgICAgIC8vIGJhc2VfaW50
ZXJuYWw6OkN5Y2xlQ2xvY2s6Ok5vdygpIGlzIDAuNSUuCiAgICAgICBpbnQgcG9saWN5OwogICAg
ICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOwotICAgICAgcHRocmVhZF9nZXRzY2hlZHBhcmFt
KHB0aHJlYWRfc2VsZigpLCAmcG9saWN5LCAmcGFyYW0pOwotICAgICAgcy0+cHJpb3JpdHkgPSBw
YXJhbS5zY2hlZF9wcmlvcml0eTsKLSAgICAgIHMtPm5leHRfcHJpb3JpdHlfcmVhZF9jeWNsZXMg
PQotICAgICAgICAgIG5vd19jeWNsZXMgKwotICAgICAgICAgIHN0YXRpY19jYXN0PGludDY0X3Q+
KGJhc2VfaW50ZXJuYWw6OkN5Y2xlQ2xvY2s6OkZyZXF1ZW5jeSgpKTsKKyAgICAgIGNvbnN0IGlu
dCBlcnIgPSBwdGhyZWFkX2dldHNjaGVkcGFyYW0ocHRocmVhZF9zZWxmKCksICZwb2xpY3ksICZw
YXJhbSk7CisgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgQUJTTF9SQVdfTE9HKEVSUk9S
LCAicHRocmVhZF9nZXRzY2hlZHBhcmFtIGZhaWxlZDogJWQiLCBlcnIpOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcy0+cHJpb3JpdHkgPSBwYXJhbS5zY2hlZF9wcmlvcml0eTsKKyAgICAgICAg
cy0+bmV4dF9wcmlvcml0eV9yZWFkX2N5Y2xlcyA9CisgICAgICAgICAgICBub3dfY3ljbGVzICsK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDY0X3Q+KGJhc2VfaW50ZXJuYWw6OkN5Y2xlQ2xv
Y2s6OkZyZXF1ZW5jeSgpKTsKKyAgICAgIH0KICAgICB9CiAgICAgaWYgKHMtPnByaW9yaXR5ID4g
aGVhZC0+cHJpb3JpdHkpIHsgIC8vIHMncyBwcmlvcml0eSBpcyBhYm92ZSBoZWFkJ3MKICAgICAg
IC8vIHRyeSB0byBwdXQgcyBpbiBwcmlvcml0eS1maWZvIG9yZGVyLCBvciBmYWlsaW5nIHRoYXQg
YXQgdGhlIGZyb250LgpAQCAtMTA3OSw3ICsxMTA0LDcgQEAgdm9pZCBNdXRleDo6VHJ5UmVtb3Zl
KFBlclRocmVhZFN5bmNoICpzKSB7CiAvLyBpZiB0aGUgd2FpdCBleHRlbmRzIHBhc3QgdGhlIGFi
c29sdXRlIHRpbWUgc3BlY2lmaWVkLCBldmVuIGlmICJzIiBpcyBzdGlsbAogLy8gb24gdGhlIG11
dGV4IHF1ZXVlLiAgSW4gdGhpcyBjYXNlLCByZW1vdmUgInMiIGZyb20gdGhlIHF1ZXVlIGFuZCBy
ZXR1cm4KIC8vIHRydWUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuCi12b2lkIE11dGV4OjpCbG9j
ayhQZXJUaHJlYWRTeW5jaCAqcykgeworQUJTTF9YUkFZX0xPR19BUkdTKDEpIHZvaWQgTXV0ZXg6
OkJsb2NrKFBlclRocmVhZFN5bmNoICpzKSB7CiAgIHdoaWxlIChzLT5zdGF0ZS5sb2FkKHN0ZDo6
bWVtb3J5X29yZGVyX2FjcXVpcmUpID09IFBlclRocmVhZFN5bmNoOjprUXVldWVkKSB7CiAgICAg
aWYgKCFEZWNyZW1lbnRTeW5jaFNlbSh0aGlzLCBzLCBzLT53YWl0cC0+dGltZW91dCkpIHsKICAg
ICAgIC8vIEFmdGVyIGEgdGltZW91dCwgd2UgZ28gaW50byBhIHNwaW4gbG9vcCB1bnRpbCB3ZSBy
ZW1vdmUgb3Vyc2VsdmVzCkBAIC0xMTE4LDcgKzExNDMsNyBAQCBQZXJUaHJlYWRTeW5jaCAqTXV0
ZXg6Oldha2V1cChQZXJUaHJlYWRTeW5jaCAqdykgewogfQogCiBzdGF0aWMgR3JhcGhJZCBHZXRH
cmFwaElkTG9ja2VkKE11dGV4ICptdSkKLSAgICBFWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoZGVh
ZGxvY2tfZ3JhcGhfbXUpIHsKKyAgICBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChkZWFk
bG9ja19ncmFwaF9tdSkgewogICBpZiAoIWRlYWRsb2NrX2dyYXBoKSB7ICAvLyAocmUpY3JlYXRl
IHRoZSBkZWFkbG9jayBncmFwaC4KICAgICBkZWFkbG9ja19ncmFwaCA9CiAgICAgICAgIG5ldyAo
YmFzZV9pbnRlcm5hbDo6TG93TGV2ZWxBbGxvYzo6QWxsb2Moc2l6ZW9mKCpkZWFkbG9ja19ncmFw
aCkpKQpAQCAtMTEyNyw3ICsxMTUyLDcgQEAgc3RhdGljIEdyYXBoSWQgR2V0R3JhcGhJZExvY2tl
ZChNdXRleCAqbXUpCiAgIHJldHVybiBkZWFkbG9ja19ncmFwaC0+R2V0SWQobXUpOwogfQogCi1z
dGF0aWMgR3JhcGhJZCBHZXRHcmFwaElkKE11dGV4ICptdSkgTE9DS1NfRVhDTFVERUQoZGVhZGxv
Y2tfZ3JhcGhfbXUpIHsKK3N0YXRpYyBHcmFwaElkIEdldEdyYXBoSWQoTXV0ZXggKm11KSBBQlNM
X0xPQ0tTX0VYQ0xVREVEKGRlYWRsb2NrX2dyYXBoX211KSB7CiAgIGRlYWRsb2NrX2dyYXBoX211
LkxvY2soKTsKICAgR3JhcGhJZCBpZCA9IEdldEdyYXBoSWRMb2NrZWQobXUpOwogICBkZWFkbG9j
a19ncmFwaF9tdS5VbmxvY2soKTsKQEAgLTE1NTIsNyArMTU3Nyw3IEBAIGJvb2wgTXV0ZXg6OkF3
YWl0Q29tbW9uKGNvbnN0IENvbmRpdGlvbiAmY29uZCwgS2VybmVsVGltZW91dCB0KSB7CiAgIEFC
U0xfVFNBTl9NVVRFWF9QUkVfTE9DSyh0aGlzLCBUc2FuRmxhZ3MoaG93KSk7CiAgIHRoaXMtPkxv
Y2tTbG93TG9vcCgmd2FpdHAsIGZsYWdzKTsKICAgYm9vbCByZXMgPSB3YWl0cC5jb25kICE9IG51
bGxwdHIgfHwgIC8vID0+IGNvbmQga25vd24gdHJ1ZSBmcm9tIExvY2tTbG93TG9vcAotICAgICAg
ICAgICAgIGNvbmQuRXZhbCgpOworICAgICAgICAgICAgIEV2YWxDb25kaXRpb25Bbm5vdGF0ZWQo
JmNvbmQsIHRoaXMsIHRydWUsIGZhbHNlLCBob3cgPT0ga1NoYXJlZCk7CiAgIEFCU0xfVFNBTl9N
VVRFWF9QT1NUX0xPQ0sodGhpcywgVHNhbkZsYWdzKGhvdyksIDApOwogICByZXR1cm4gcmVzOwog
fQpAQCAtMTczMCwxMiArMTc1NSwxNyBAQCB2b2lkIE11dGV4OjpMb2NrU2xvdyhNdUhvdyBob3cs
IGNvbnN0IENvbmRpdGlvbiAqY29uZCwgaW50IGZsYWdzKSB7CiAKIC8vIENvbXB1dGUgY29uZC0+
RXZhbCgpIGFuZCB0ZWxsIHJhY2UgZGV0ZWN0b3JzIHRoYXQgd2UgZG8gaXQgdW5kZXIgbXV0ZXgg
bXUuCiBzdGF0aWMgaW5saW5lIGJvb2wgRXZhbENvbmRpdGlvbkFubm90YXRlZChjb25zdCBDb25k
aXRpb24gKmNvbmQsIE11dGV4ICptdSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgbG9ja2luZywgTXV0ZXg6Ok11SG93IGhvdykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsb2NraW5nLCBib29sIHRyeWxvY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlYWRfbG9j
aykgewogICAvLyBEZWxpY2F0ZSBhbm5vdGF0aW9uIGRhbmNlLgogICAvLyBXZSBhcmUgY3VycmVu
dGx5IGluc2lkZSBvZiByZWFkL3dyaXRlIGxvY2svdW5sb2NrIG9wZXJhdGlvbi4KICAgLy8gQWxs
IG1lbW9yeSBhY2Nlc3NlcyBhcmUgaWdub3JlZCBpbnNpZGUgb2YgbXV0ZXggb3BlcmF0aW9ucyAr
IGZvciB1bmxvY2sKICAgLy8gb3BlcmF0aW9uIHRzYW4gY29uc2lkZXJzIHRoYXQgd2UndmUgYWxy
ZWFkeSByZWxlYXNlZCB0aGUgbXV0ZXguCiAgIGJvb2wgcmVzID0gZmFsc2U7CisjaWZkZWYgVEhS
RUFEX1NBTklUSVpFUgorICBjb25zdCBpbnQgZmxhZ3MgPSByZWFkX2xvY2sgPyBfX3RzYW5fbXV0
ZXhfcmVhZF9sb2NrIDogMDsKKyAgY29uc3QgaW50IHRyeWZsYWdzID0gZmxhZ3MgfCAodHJ5bG9j
ayA/IF9fdHNhbl9tdXRleF90cnlfbG9jayA6IDApOworI2VuZGlmCiAgIGlmIChsb2NraW5nKSB7
CiAgICAgLy8gRm9yIGxvY2sgd2UgcHJldGVuZCB0aGF0IHdlIGhhdmUgZmluaXNoZWQgdGhlIG9w
ZXJhdGlvbiwKICAgICAvLyBldmFsdWF0ZSB0aGUgcHJlZGljYXRlLCB0aGVuIHVubG9jayB0aGUg
bXV0ZXggYW5kIHN0YXJ0IGxvY2tpbmcgaXQgYWdhaW4KQEAgLTE3NDMsMjQgKzE3NzMsMjYgQEAg
c3RhdGljIGlubGluZSBib29sIEV2YWxDb25kaXRpb25Bbm5vdGF0ZWQoY29uc3QgQ29uZGl0aW9u
ICpjb25kLCBNdXRleCAqbXUsCiAgICAgLy8gTm90ZTogd2UgY2FuJ3Qgc2ltcGx5IGRvIFBPU1Rf
TE9DSywgRXZhbCwgUFJFX0xPQ0ssIGJlY2F1c2UgdGhlbiB0c2FuCiAgICAgLy8gd2lsbCB0aGlu
ayB0aGUgbG9jayBhY3F1aXNpdGlvbiBpcyByZWN1cnNpdmUgd2hpY2ggd2lsbCB0cmlnZ2VyCiAg
ICAgLy8gZGVhZGxvY2sgZGV0ZWN0b3IuCi0gICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfTE9DSyht
dSwgVHNhbkZsYWdzKGhvdyksIDApOworICAgIEFCU0xfVFNBTl9NVVRFWF9QT1NUX0xPQ0sobXUs
IHRyeWZsYWdzLCAwKTsKICAgICByZXMgPSBjb25kLT5FdmFsKCk7Ci0gICAgQUJTTF9UU0FOX01V
VEVYX1BSRV9VTkxPQ0sobXUsIFRzYW5GbGFncyhob3cpKTsKLSAgICBBQlNMX1RTQU5fTVVURVhf
UE9TVF9VTkxPQ0sobXUsIFRzYW5GbGFncyhob3cpKTsKLSAgICBBQlNMX1RTQU5fTVVURVhfUFJF
X0xPQ0sobXUsIFRzYW5GbGFncyhob3cpKTsKKyAgICAvLyBUaGVyZSBpcyBubyAidHJ5IiB2ZXJz
aW9uIG9mIFVubG9jaywgc28gdXNlIGZsYWdzIGluc3RlYWQgb2YgdHJ5ZmxhZ3MuCisgICAgQUJT
TF9UU0FOX01VVEVYX1BSRV9VTkxPQ0sobXUsIGZsYWdzKTsKKyAgICBBQlNMX1RTQU5fTVVURVhf
UE9TVF9VTkxPQ0sobXUsIGZsYWdzKTsKKyAgICBBQlNMX1RTQU5fTVVURVhfUFJFX0xPQ0sobXUs
IHRyeWZsYWdzKTsKICAgfSBlbHNlIHsKICAgICAvLyBTaW1pbGFybHksIGZvciB1bmxvY2sgd2Ug
cHJldGVuZCB0aGF0IHdlIGhhdmUgdW5sb2NrZWQgdGhlIG11dGV4LAogICAgIC8vIGxvY2sgdGhl
IG11dGV4LCBldmFsdWF0ZSB0aGUgcHJlZGljYXRlLCBhbmQgc3RhcnQgdW5sb2NraW5nIGl0IGFn
YWluCiAgICAgLy8gdG8gbWF0Y2ggdGhlIGFubm90YXRpb24gYXQgdGhlIGVuZCBvZiBvdXRlciB1
bmxvY2sgb3BlcmF0aW9uLgotICAgIEFCU0xfVFNBTl9NVVRFWF9QT1NUX1VOTE9DSyhtdSwgVHNh
bkZsYWdzKGhvdykpOwotICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfTE9DSyhtdSwgVHNhbkZsYWdz
KGhvdykpOwotICAgIEFCU0xfVFNBTl9NVVRFWF9QT1NUX0xPQ0sobXUsIFRzYW5GbGFncyhob3cp
LCAwKTsKKyAgICBBQlNMX1RTQU5fTVVURVhfUE9TVF9VTkxPQ0sobXUsIGZsYWdzKTsKKyAgICBB
QlNMX1RTQU5fTVVURVhfUFJFX0xPQ0sobXUsIGZsYWdzKTsKKyAgICBBQlNMX1RTQU5fTVVURVhf
UE9TVF9MT0NLKG11LCBmbGFncywgMCk7CiAgICAgcmVzID0gY29uZC0+RXZhbCgpOwotICAgIEFC
U0xfVFNBTl9NVVRFWF9QUkVfVU5MT0NLKG11LCBUc2FuRmxhZ3MoaG93KSk7CisgICAgQUJTTF9U
U0FOX01VVEVYX1BSRV9VTkxPQ0sobXUsIGZsYWdzKTsKICAgfQogICAvLyBQcmV2ZW50IHVudXNl
ZCBwYXJhbSB3YXJuaW5ncyBpbiBub24tVFNBTiBidWlsZHMuCiAgIHN0YXRpY19jYXN0PHZvaWQ+
KG11KTsKLSAgc3RhdGljX2Nhc3Q8dm9pZD4oaG93KTsKKyAgc3RhdGljX2Nhc3Q8dm9pZD4odHJ5
bG9jayk7CisgIHN0YXRpY19jYXN0PHZvaWQ+KHJlYWRfbG9jayk7CiAgIHJldHVybiByZXM7CiB9
CiAKQEAgLTE4MDYsNyArMTgzOCw4IEBAIGJvb2wgTXV0ZXg6OkxvY2tTbG93V2l0aERlYWRsaW5l
KE11SG93IGhvdywgY29uc3QgQ29uZGl0aW9uICpjb25kLAogICAgICAgICAgIHYsIChob3ctPmZh
c3Rfb3IgfCAodiAmIHphcF9kZXNpZ193YWtlcltmbGFncyAmIGtNdUhhc0Jsb2NrZWRdKSkgKwog
ICAgICAgICAgICAgICAgICBob3ctPmZhc3RfYWRkLAogICAgICAgICAgIHN0ZDo6bWVtb3J5X29y
ZGVyX2FjcXVpcmUsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpKSB7Ci0gICAgaWYgKGNvbmQg
PT0gbnVsbHB0ciB8fCBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKGNvbmQsIHRoaXMsIHRydWUsIGhv
dykpIHsKKyAgICBpZiAoY29uZCA9PSBudWxscHRyIHx8CisgICAgICAgIEV2YWxDb25kaXRpb25B
bm5vdGF0ZWQoY29uZCwgdGhpcywgdHJ1ZSwgZmFsc2UsIGhvdyA9PSBrU2hhcmVkKSkgewogICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHVubG9jayA9IHRydWU7CkBAIC0xODI0LDcgKzE4
NTcsOCBAQCBib29sIE11dGV4OjpMb2NrU2xvd1dpdGhEZWFkbGluZShNdUhvdyBob3csIGNvbnN0
IENvbmRpdGlvbiAqY29uZCwKICAgfQogICB0aGlzLT5Mb2NrU2xvd0xvb3AoJndhaXRwLCBmbGFn
cyk7CiAgIHJldHVybiB3YWl0cC5jb25kICE9IG51bGxwdHIgfHwgIC8vID0+IGNvbmQga25vd24g
dHJ1ZSBmcm9tIExvY2tTbG93TG9vcAotICAgICAgICAgY29uZCA9PSBudWxscHRyIHx8IEV2YWxD
b25kaXRpb25Bbm5vdGF0ZWQoY29uZCwgdGhpcywgdHJ1ZSwgaG93KTsKKyAgICAgICAgIGNvbmQg
PT0gbnVsbHB0ciB8fAorICAgICAgICAgRXZhbENvbmRpdGlvbkFubm90YXRlZChjb25kLCB0aGlz
LCB0cnVlLCBmYWxzZSwgaG93ID09IGtTaGFyZWQpOwogfQogCiAvLyBSQVdfQ0hFQ0tfRk1UKCkg
dGFrZXMgYSBjb25kaXRpb24sIGEgcHJpbnRmLXN0eWxlIGZvcm1hdCBzdHJpbmcsIGFuZApAQCAt
MTg0MSw3ICsxODc1LDcgQEAgc3RhdGljIHZvaWQgQ2hlY2tGb3JNdXRleENvcnJ1cHRpb24oaW50
cHRyX3QgdiwgY29uc3QgY2hhciogbGFiZWwpIHsKICAgLy8gVGVzdCBmb3IgZWl0aGVyIG9mIHR3
byBzaXR1YXRpb25zIHRoYXQgc2hvdWxkIG5vdCBvY2N1ciBpbiB2OgogICAvLyAgIGtNdVdyaXRl
ciBhbmQga011UmVhZGVyCiAgIC8vICAga011V3JXYWl0IGFuZCAha011V2FpdAotICBjb25zdCBp
bnRwdHJfdCB3ID0gdiBeIGtNdVdhaXQ7CisgIGNvbnN0IHVpbnRwdHJfdCB3ID0gdiBeIGtNdVdh
aXQ7CiAgIC8vIEJ5IGZsaXBwaW5nIHRoYXQgYml0LCB3ZSBjYW4gbm93IHRlc3QgZm9yOgogICAv
LyAgIGtNdVdyaXRlciBhbmQga011UmVhZGVyIGluIHcKICAgLy8gICBrTXVXcldhaXQgYW5kIGtN
dVdhaXQgaW4gdwpAQCAtMTg4MCw3ICsxOTE0LDggQEAgdm9pZCBNdXRleDo6TG9ja1Nsb3dMb29w
KFN5bmNoV2FpdFBhcmFtcyAqd2FpdHAsIGludCBmbGFncykgewogICAgICAgICAgICAgICAgICAg
ICAgd2FpdHAtPmhvdy0+ZmFzdF9hZGQsCiAgICAgICAgICAgICAgIHN0ZDo6bWVtb3J5X29yZGVy
X2FjcXVpcmUsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpKSB7CiAgICAgICAgIGlmICh3YWl0
cC0+Y29uZCA9PSBudWxscHRyIHx8Ci0gICAgICAgICAgICBFdmFsQ29uZGl0aW9uQW5ub3RhdGVk
KHdhaXRwLT5jb25kLCB0aGlzLCB0cnVlLCB3YWl0cC0+aG93KSkgeworICAgICAgICAgICAgRXZh
bENvbmRpdGlvbkFubm90YXRlZCh3YWl0cC0+Y29uZCwgdGhpcywgdHJ1ZSwgZmFsc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRwLT5ob3cgPT0ga1NoYXJlZCkpIHsK
ICAgICAgICAgICBicmVhazsgIC8vIHdlIHRpbWVkIG91dCwgb3IgY29uZGl0aW9uIHRydWUsIHNv
IHJldHVybgogICAgICAgICB9CiAgICAgICAgIHRoaXMtPlVubG9ja1Nsb3cod2FpdHApOyAgLy8g
Z290IGxvY2sgYnV0IGNvbmRpdGlvbiBmYWxzZQpAQCAtMTkyMyw3ICsxOTU4LDggQEAgdm9pZCBN
dXRleDo6TG9ja1Nsb3dMb29wKFN5bmNoV2FpdFBhcmFtcyAqd2FpdHAsIGludCBmbGFncykgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWVtb3J5
X29yZGVyX3JlbGVhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkpOwogICAgICAgICAgIGlmICh3YWl0cC0+
Y29uZCA9PSBudWxscHRyIHx8Ci0gICAgICAgICAgICAgIEV2YWxDb25kaXRpb25Bbm5vdGF0ZWQo
d2FpdHAtPmNvbmQsIHRoaXMsIHRydWUsIHdhaXRwLT5ob3cpKSB7CisgICAgICAgICAgICAgIEV2
YWxDb25kaXRpb25Bbm5vdGF0ZWQod2FpdHAtPmNvbmQsIHRoaXMsIHRydWUsIGZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRwLT5ob3cgPT0ga1NoYXJlZCkp
IHsKICAgICAgICAgICAgIGJyZWFrOyAgLy8gd2UgdGltZWQgb3V0LCBvciBjb25kaXRpb24gdHJ1
ZSwgc28gcmV0dXJuCiAgICAgICAgICAgfQogICAgICAgICAgIHRoaXMtPlVubG9ja1Nsb3cod2Fp
dHApOyAgICAgICAgICAgLy8gZ290IGxvY2sgYnV0IGNvbmRpdGlvbiBmYWxzZQpAQCAtMjU1MSw3
ICsyNTg3LDcgQEAgdm9pZCBDb25kVmFyOjpXYWtldXAoUGVyVGhyZWFkU3luY2ggKncpIHsKIH0K
IAogdm9pZCBDb25kVmFyOjpTaWduYWwoKSB7Ci0gIEFCU0xfVFNBTl9NVVRFWF9QUkVfU0lHTkFM
KDAsIDApOworICBBQlNMX1RTQU5fTVVURVhfUFJFX1NJR05BTChudWxscHRyLCAwKTsKICAgaW50
cHRyX3QgdjsKICAgaW50IGMgPSAwOwogICBmb3IgKHYgPSBjdl8ubG9hZChzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKTsgdiAhPSAwOwpAQCAtMjU4MCwxNyArMjYxNiwxNyBAQCB2b2lkIENvbmRW
YXI6OlNpZ25hbCgpIHsKICAgICAgIGlmICgodiAmIGtDdkV2ZW50KSAhPSAwKSB7CiAgICAgICAg
IFBvc3RTeW5jaEV2ZW50KHRoaXMsIFNZTkNIX0VWX1NJR05BTCk7CiAgICAgICB9Ci0gICAgICBB
QlNMX1RTQU5fTVVURVhfUE9TVF9TSUdOQUwoMCwgMCk7CisgICAgICBBQlNMX1RTQU5fTVVURVhf
UE9TVF9TSUdOQUwobnVsbHB0ciwgMCk7CiAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKICAg
ICAgIGMgPSBEZWxheShjLCBHRU5UTEUpOwogICAgIH0KICAgfQotICBBQlNMX1RTQU5fTVVURVhf
UE9TVF9TSUdOQUwoMCwgMCk7CisgIEFCU0xfVFNBTl9NVVRFWF9QT1NUX1NJR05BTChudWxscHRy
LCAwKTsKIH0KIAogdm9pZCBDb25kVmFyOjpTaWduYWxBbGwgKCkgewotICBBQlNMX1RTQU5fTVVU
RVhfUFJFX1NJR05BTCgwLCAwKTsKKyAgQUJTTF9UU0FOX01VVEVYX1BSRV9TSUdOQUwobnVsbHB0
ciwgMCk7CiAgIGludHB0cl90IHY7CiAgIGludCBjID0gMDsKICAgZm9yICh2ID0gY3ZfLmxvYWQo
c3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7IHYgIT0gMDsKQEAgLTI2MTcsMTMgKzI2NTMsMTMg
QEAgdm9pZCBDb25kVmFyOjpTaWduYWxBbGwgKCkgewogICAgICAgaWYgKCh2ICYga0N2RXZlbnQp
ICE9IDApIHsKICAgICAgICAgUG9zdFN5bmNoRXZlbnQodGhpcywgU1lOQ0hfRVZfU0lHTkFMQUxM
KTsKICAgICAgIH0KLSAgICAgIEFCU0xfVFNBTl9NVVRFWF9QT1NUX1NJR05BTCgwLCAwKTsKKyAg
ICAgIEFCU0xfVFNBTl9NVVRFWF9QT1NUX1NJR05BTChudWxscHRyLCAwKTsKICAgICAgIHJldHVy
bjsKICAgICB9IGVsc2UgewogICAgICAgYyA9IERlbGF5KGMsIEdFTlRMRSk7ICAgICAgICAgICAv
LyB0cnkgYWdhaW4gYWZ0ZXIgYSBkZWxheQogICAgIH0KICAgfQotICBBQlNMX1RTQU5fTVVURVhf
UE9TVF9TSUdOQUwoMCwgMCk7CisgIEFCU0xfVFNBTl9NVVRFWF9QT1NUX1NJR05BTChudWxscHRy
LCAwKTsKIH0KIAogdm9pZCBSZWxlYXNhYmxlTXV0ZXhMb2NrOjpSZWxlYXNlKCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vbXV0ZXguaAppbmRleCBhMzc4MTkwNTM4ZTJkMjM2ZWFmMzk5MzE1MDA3ZDAwODcyZTIwODY5
Li5hZjc3MGU4NWIwZGYyOWI1ODBhNjM5NjliYzlkMGI3ZTIzOTUyNWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24v
bXV0ZXguaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNjEs
NiArNjEsNyBAQAogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5j
bHVkZSAiYWJzbC9iYXNlL2NvbnN0X2luaXQuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJu
YWwvaWRlbnRpdHkuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2Fs
bG9jLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eS5oIgpA
QCAtMTM0LDM2ICsxMzUsNTYgQEAgc3RydWN0IFN5bmNoV2FpdFBhcmFtczsKIC8vCiAvLyBTZWUg
YWxzbyBgTXV0ZXhMb2NrYCwgYmVsb3csIGZvciBzY29wZWQgYE11dGV4YCBhY3F1aXNpdGlvbi4K
IAotY2xhc3MgTE9DS0FCTEUgTXV0ZXggeworY2xhc3MgQUJTTF9MT0NLQUJMRSBNdXRleCB7CiAg
cHVibGljOgorICAvLyBDcmVhdGVzIGEgYE11dGV4YCB0aGF0IGlzIG5vdCBoZWxkIGJ5IGFueW9u
ZS4gVGhpcyBjb25zdHJ1Y3RvciBpcworICAvLyB0eXBpY2FsbHkgdXNlZCBmb3IgTXV0ZXhlcyBh
bGxvY2F0ZWQgb24gdGhlIGhlYXAgb3IgdGhlIHN0YWNrLgorICAvLworICAvLyBUbyBjcmVhdGUg
YE11dGV4YCBpbnN0YW5jZXMgd2l0aCBzdGF0aWMgc3RvcmFnZSBkdXJhdGlvbgorICAvLyAoZS5n
LiBhIG5hbWVzcGFjZS1zY29wZWQgb3IgZ2xvYmFsIHZhcmlhYmxlKSwgc2VlCisgIC8vIGBNdXRl
eDo6TXV0ZXgoYWJzbDo6a0NvbnN0SW5pdClgIGJlbG93IGluc3RlYWQuCiAgIE11dGV4KCk7CisK
KyAgLy8gQ3JlYXRlcyBhIG11dGV4IHdpdGggc3RhdGljIHN0b3JhZ2UgZHVyYXRpb24uICBBIGds
b2JhbCB2YXJpYWJsZQorICAvLyBjb25zdHJ1Y3RlZCB0aGlzIHdheSBhdm9pZHMgdGhlIGxpZmV0
aW1lIGlzc3VlcyB0aGF0IGNhbiBvY2N1ciBvbiBwcm9ncmFtCisgIC8vIHN0YXJ0dXAgYW5kIHNo
dXRkb3duLiAgKFNlZSBhYnNsL2Jhc2UvY29uc3RfaW5pdC5oLikKKyAgLy8KKyAgLy8gRm9yIE11
dGV4ZXMgYWxsb2NhdGVkIG9uIHRoZSBoZWFwIGFuZCBzdGFjaywgaW5zdGVhZCB1c2UgdGhlIGRl
ZmF1bHQKKyAgLy8gY29uc3RydWN0b3IsIHdoaWNoIGNhbiBpbnRlcmFjdCBtb3JlIGZ1bGx5IHdp
dGggdGhlIHRocmVhZCBzYW5pdGl6ZXIuCisgIC8vCisgIC8vIEV4YW1wbGUgdXNhZ2U6CisgIC8v
ICAgbmFtZXNwYWNlIGZvbyB7CisgIC8vICAgQUJTTF9DT05TVF9JTklUIE11dGV4IG11KGFic2w6
OmtDb25zdEluaXQpOworICAvLyAgIH0KKyAgZXhwbGljaXQgY29uc3RleHByIE11dGV4KGFic2w6
OkNvbnN0SW5pdFR5cGUpOworCiAgIH5NdXRleCgpOwogCiAgIC8vIE11dGV4OjpMb2NrKCkKICAg
Ly8KICAgLy8gQmxvY2tzIHRoZSBjYWxsaW5nIHRocmVhZCwgaWYgbmVjZXNzYXJ5LCB1bnRpbCB0
aGlzIGBNdXRleGAgaXMgZnJlZSwgYW5kCiAgIC8vIHRoZW4gYWNxdWlyZXMgaXQgZXhjbHVzaXZl
bHkuIChUaGlzIGxvY2sgaXMgYWxzbyBrbm93biBhcyBhICJ3cml0ZSBsb2NrLiIpCi0gIHZvaWQg
TG9jaygpIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCk7CisgIHZvaWQgTG9jaygpIEFCU0xfRVhD
TFVTSVZFX0xPQ0tfRlVOQ1RJT04oKTsKIAogICAvLyBNdXRleDo6VW5sb2NrKCkKICAgLy8KICAg
Ly8gUmVsZWFzZXMgdGhpcyBgTXV0ZXhgIGFuZCByZXR1cm5zIGl0IGZyb20gdGhlIGV4Y2x1c2l2
ZS93cml0ZSBzdGF0ZSB0byB0aGUKICAgLy8gZnJlZSBzdGF0ZS4gQ2FsbGVyIG11c3QgaG9sZCB0
aGUgYE11dGV4YCBleGNsdXNpdmVseS4KLSAgdm9pZCBVbmxvY2soKSBVTkxPQ0tfRlVOQ1RJT04o
KTsKKyAgdm9pZCBVbmxvY2soKSBBQlNMX1VOTE9DS19GVU5DVElPTigpOwogCiAgIC8vIE11dGV4
OjpUcnlMb2NrKCkKICAgLy8KICAgLy8gSWYgdGhlIG11dGV4IGNhbiBiZSBhY3F1aXJlZCB3aXRo
b3V0IGJsb2NraW5nLCBkb2VzIHNvIGV4Y2x1c2l2ZWx5IGFuZAogICAvLyByZXR1cm5zIGB0cnVl
YC4gT3RoZXJ3aXNlLCByZXR1cm5zIGBmYWxzZWAuIFJldHVybnMgYHRydWVgIHdpdGggaGlnaAog
ICAvLyBwcm9iYWJpbGl0eSBpZiB0aGUgYE11dGV4YCB3YXMgZnJlZS4KLSAgYm9vbCBUcnlMb2Nr
KCkgRVhDTFVTSVZFX1RSWUxPQ0tfRlVOQ1RJT04odHJ1ZSk7CisgIGJvb2wgVHJ5TG9jaygpIEFC
U0xfRVhDTFVTSVZFX1RSWUxPQ0tfRlVOQ1RJT04odHJ1ZSk7CiAKICAgLy8gTXV0ZXg6OkFzc2Vy
dEhlbGQoKQogICAvLwogICAvLyBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhpcyB0aHJlYWQgaG9s
ZHMgdGhlIGBNdXRleGAgZXhjbHVzaXZlbHkgKGluIHdyaXRlCiAgIC8vIG1vZGUpLiBPdGhlcndp
c2UsIG1heSByZXBvcnQgYW4gZXJyb3IgKHR5cGljYWxseSBieSBjcmFzaGluZyB3aXRoIGEKICAg
Ly8gZGlhZ25vc3RpYyksIG9yIG1heSByZXR1cm4gaW1tZWRpYXRlbHkuCi0gIHZvaWQgQXNzZXJ0
SGVsZCgpIGNvbnN0IEFTU0VSVF9FWENMVVNJVkVfTE9DSygpOworICB2b2lkIEFzc2VydEhlbGQo
KSBjb25zdCBBQlNMX0FTU0VSVF9FWENMVVNJVkVfTE9DSygpOwogCiAgIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogICAvLyBSZWFkZXItV3JpdGVyIExvY2tpbmcKQEAgLTIwNCwyOCArMjI1LDI4IEBA
IGNsYXNzIExPQ0tBQkxFIE11dGV4IHsKICAgLy8gYFJlYWRlckxvY2soKWAgd2lsbCBibG9jayBp
ZiBzb21lIG90aGVyIHRocmVhZCBoYXMgYW4gZXhjbHVzaXZlL3dyaXRlciBsb2NrCiAgIC8vIG9u
IHRoZSBtdXRleC4KIAotICB2b2lkIFJlYWRlckxvY2soKSBTSEFSRURfTE9DS19GVU5DVElPTigp
OworICB2b2lkIFJlYWRlckxvY2soKSBBQlNMX1NIQVJFRF9MT0NLX0ZVTkNUSU9OKCk7CiAKICAg
Ly8gTXV0ZXg6OlJlYWRlclVubG9jaygpCiAgIC8vCiAgIC8vIFJlbGVhc2VzIGEgcmVhZCBzaGFy
ZSBvZiB0aGlzIGBNdXRleGAuIGBSZWFkZXJVbmxvY2tgIG1heSByZXR1cm4gYSBtdXRleCB0bwog
ICAvLyB0aGUgZnJlZSBzdGF0ZSBpZiB0aGlzIHRocmVhZCBob2xkcyB0aGUgbGFzdCByZWFkZXIg
bG9jayBvbiB0aGUgbXV0ZXguIE5vdGUKICAgLy8gdGhhdCB5b3UgY2Fubm90IGNhbGwgYFJlYWRl
clVubG9jaygpYCBvbiBhIG11dGV4IGhlbGQgaW4gd3JpdGUgbW9kZS4KLSAgdm9pZCBSZWFkZXJV
bmxvY2soKSBVTkxPQ0tfRlVOQ1RJT04oKTsKKyAgdm9pZCBSZWFkZXJVbmxvY2soKSBBQlNMX1VO
TE9DS19GVU5DVElPTigpOwogCiAgIC8vIE11dGV4OjpSZWFkZXJUcnlMb2NrKCkKICAgLy8KICAg
Ly8gSWYgdGhlIG11dGV4IGNhbiBiZSBhY3F1aXJlZCB3aXRob3V0IGJsb2NraW5nLCBhY3F1aXJl
cyB0aGlzIG11dGV4IGZvcgogICAvLyBzaGFyZWQgYWNjZXNzIGFuZCByZXR1cm5zIGB0cnVlYC4g
T3RoZXJ3aXNlLCByZXR1cm5zIGBmYWxzZWAuIFJldHVybnMKICAgLy8gYHRydWVgIHdpdGggaGln
aCBwcm9iYWJpbGl0eSBpZiB0aGUgYE11dGV4YCB3YXMgZnJlZSBvciBzaGFyZWQuCi0gIGJvb2wg
UmVhZGVyVHJ5TG9jaygpIFNIQVJFRF9UUllMT0NLX0ZVTkNUSU9OKHRydWUpOworICBib29sIFJl
YWRlclRyeUxvY2soKSBBQlNMX1NIQVJFRF9UUllMT0NLX0ZVTkNUSU9OKHRydWUpOwogCiAgIC8v
IE11dGV4OjpBc3NlcnRSZWFkZXJIZWxkKCkKICAgLy8KICAgLy8gUmV0dXJucyBpbW1lZGlhdGVs
eSBpZiB0aGlzIHRocmVhZCBob2xkcyB0aGUgYE11dGV4YCBpbiBhdCBsZWFzdCBzaGFyZWQKICAg
Ly8gbW9kZSAocmVhZCBtb2RlKS4gT3RoZXJ3aXNlLCBtYXkgcmVwb3J0IGFuIGVycm9yICh0eXBp
Y2FsbHkgYnkKICAgLy8gY3Jhc2hpbmcgd2l0aCBhIGRpYWdub3N0aWMpLCBvciBtYXkgcmV0dXJu
IGltbWVkaWF0ZWx5LgotICB2b2lkIEFzc2VydFJlYWRlckhlbGQoKSBjb25zdCBBU1NFUlRfU0hB
UkVEX0xPQ0soKTsKKyAgdm9pZCBBc3NlcnRSZWFkZXJIZWxkKCkgY29uc3QgQUJTTF9BU1NFUlRf
U0hBUkVEX0xPQ0soKTsKIAogICAvLyBNdXRleDo6V3JpdGVyTG9jaygpCiAgIC8vIE11dGV4OjpX
cml0ZXJVbmxvY2soKQpAQCAtMjM2LDExICsyNTcsMTEgQEAgY2xhc3MgTE9DS0FCTEUgTXV0ZXgg
ewogICAvLyBUaGVzZSBtZXRob2RzIG1heSBiZSB1c2VkIChhbG9uZyB3aXRoIHRoZSBjb21wbGVt
ZW50YXJ5IGBSZWFkZXIqKClgCiAgIC8vIG1ldGhvZHMpIHRvIGRpc3Rpbmdpc2ggc2ltcGxlIGV4
Y2x1c2l2ZSBgTXV0ZXhgIHVzYWdlIChgTG9jaygpYCwKICAgLy8gZXRjLikgZnJvbSByZWFkZXIv
d3JpdGVyIGxvY2sgdXNhZ2UuCi0gIHZvaWQgV3JpdGVyTG9jaygpIEVYQ0xVU0lWRV9MT0NLX0ZV
TkNUSU9OKCkgeyB0aGlzLT5Mb2NrKCk7IH0KKyAgdm9pZCBXcml0ZXJMb2NrKCkgQUJTTF9FWENM
VVNJVkVfTE9DS19GVU5DVElPTigpIHsgdGhpcy0+TG9jaygpOyB9CiAKLSAgdm9pZCBXcml0ZXJV
bmxvY2soKSBVTkxPQ0tfRlVOQ1RJT04oKSB7IHRoaXMtPlVubG9jaygpOyB9CisgIHZvaWQgV3Jp
dGVyVW5sb2NrKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJT04oKSB7IHRoaXMtPlVubG9jaygpOyB9CiAK
LSAgYm9vbCBXcml0ZXJUcnlMb2NrKCkgRVhDTFVTSVZFX1RSWUxPQ0tfRlVOQ1RJT04odHJ1ZSkg
eworICBib29sIFdyaXRlclRyeUxvY2soKSBBQlNMX0VYQ0xVU0lWRV9UUllMT0NLX0ZVTkNUSU9O
KHRydWUpIHsKICAgICByZXR1cm4gdGhpcy0+VHJ5TG9jaygpOwogICB9CiAKQEAgLTI5NCwxMSAr
MzE1LDExIEBAIGNsYXNzIExPQ0tBQkxFIE11dGV4IHsKICAgLy8gYmUgYWNxdWlyZWQsIHRoZW4g
YXRvbWljYWxseSBhY3F1aXJlcyB0aGlzIGBNdXRleGAuIGBMb2NrV2hlbigpYCBpcwogICAvLyBs
b2dpY2FsbHkgZXF1aXZhbGVudCB0byBgKkxvY2soKTsgQXdhaXQoKTtgIHRob3VnaCB0aGV5IG1h
eSBoYXZlIGRpZmZlcmVudAogICAvLyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuCi0gIHZv
aWQgTG9ja1doZW4oY29uc3QgQ29uZGl0aW9uICZjb25kKSBFWENMVVNJVkVfTE9DS19GVU5DVElP
TigpOworICB2b2lkIExvY2tXaGVuKGNvbnN0IENvbmRpdGlvbiAmY29uZCkgQUJTTF9FWENMVVNJ
VkVfTE9DS19GVU5DVElPTigpOwogCi0gIHZvaWQgUmVhZGVyTG9ja1doZW4oY29uc3QgQ29uZGl0
aW9uICZjb25kKSBTSEFSRURfTE9DS19GVU5DVElPTigpOworICB2b2lkIFJlYWRlckxvY2tXaGVu
KGNvbnN0IENvbmRpdGlvbiAmY29uZCkgQUJTTF9TSEFSRURfTE9DS19GVU5DVElPTigpOwogCi0g
IHZvaWQgV3JpdGVyTG9ja1doZW4oY29uc3QgQ29uZGl0aW9uICZjb25kKSBFWENMVVNJVkVfTE9D
S19GVU5DVElPTigpIHsKKyAgdm9pZCBXcml0ZXJMb2NrV2hlbihjb25zdCBDb25kaXRpb24gJmNv
bmQpIEFCU0xfRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKSB7CiAgICAgdGhpcy0+TG9ja1doZW4o
Y29uZCk7CiAgIH0KIApAQCAtMzQwLDExICszNjEsMTEgQEAgY2xhc3MgTE9DS0FCTEUgTXV0ZXgg
ewogICAvLwogICAvLyBOZWdhdGl2ZSB0aW1lb3V0cyBhcmUgZXF1aXZhbGVudCB0byBhIHplcm8g
dGltZW91dC4KICAgYm9vbCBMb2NrV2hlbldpdGhUaW1lb3V0KGNvbnN0IENvbmRpdGlvbiAmY29u
ZCwgYWJzbDo6RHVyYXRpb24gdGltZW91dCkKLSAgICAgIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9O
KCk7CisgICAgICBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCk7CiAgIGJvb2wgUmVhZGVy
TG9ja1doZW5XaXRoVGltZW91dChjb25zdCBDb25kaXRpb24gJmNvbmQsIGFic2w6OkR1cmF0aW9u
IHRpbWVvdXQpCi0gICAgICBTSEFSRURfTE9DS19GVU5DVElPTigpOworICAgICAgQUJTTF9TSEFS
RURfTE9DS19GVU5DVElPTigpOwogICBib29sIFdyaXRlckxvY2tXaGVuV2l0aFRpbWVvdXQoY29u
c3QgQ29uZGl0aW9uICZjb25kLCBhYnNsOjpEdXJhdGlvbiB0aW1lb3V0KQotICAgICAgRVhDTFVT
SVZFX0xPQ0tfRlVOQ1RJT04oKSB7CisgICAgICBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9O
KCkgewogICAgIHJldHVybiB0aGlzLT5Mb2NrV2hlbldpdGhUaW1lb3V0KGNvbmQsIHRpbWVvdXQp
OwogICB9CiAKQEAgLTM2MCwxMSArMzgxLDExIEBAIGNsYXNzIExPQ0tBQkxFIE11dGV4IHsKICAg
Ly8KICAgLy8gRGVhZGxpbmVzIGluIHRoZSBwYXN0IGFyZSBlcXVpdmFsZW50IHRvIGFuIGltbWVk
aWF0ZSBkZWFkbGluZS4KICAgYm9vbCBMb2NrV2hlbldpdGhEZWFkbGluZShjb25zdCBDb25kaXRp
b24gJmNvbmQsIGFic2w6OlRpbWUgZGVhZGxpbmUpCi0gICAgICBFWENMVVNJVkVfTE9DS19GVU5D
VElPTigpOworICAgICAgQUJTTF9FWENMVVNJVkVfTE9DS19GVU5DVElPTigpOwogICBib29sIFJl
YWRlckxvY2tXaGVuV2l0aERlYWRsaW5lKGNvbnN0IENvbmRpdGlvbiAmY29uZCwgYWJzbDo6VGlt
ZSBkZWFkbGluZSkKLSAgICAgIFNIQVJFRF9MT0NLX0ZVTkNUSU9OKCk7CisgICAgICBBQlNMX1NI
QVJFRF9MT0NLX0ZVTkNUSU9OKCk7CiAgIGJvb2wgV3JpdGVyTG9ja1doZW5XaXRoRGVhZGxpbmUo
Y29uc3QgQ29uZGl0aW9uICZjb25kLCBhYnNsOjpUaW1lIGRlYWRsaW5lKQotICAgICAgRVhDTFVT
SVZFX0xPQ0tfRlVOQ1RJT04oKSB7CisgICAgICBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9O
KCkgewogICAgIHJldHVybiB0aGlzLT5Mb2NrV2hlbldpdGhEZWFkbGluZShjb25kLCBkZWFkbGlu
ZSk7CiAgIH0KIApAQCAtNTE0LDkgKzUzNSw5IEBAIGNsYXNzIExPQ0tBQkxFIE11dGV4IHsKIC8v
IHByaXZhdGU6CiAvLyAgIE11dGV4IGxvY2tfOwogLy8gfTsKLWNsYXNzIFNDT1BFRF9MT0NLQUJM
RSBNdXRleExvY2sgeworY2xhc3MgQUJTTF9TQ09QRURfTE9DS0FCTEUgTXV0ZXhMb2NrIHsKICBw
dWJsaWM6Ci0gIGV4cGxpY2l0IE11dGV4TG9jayhNdXRleCAqbXUpIEVYQ0xVU0lWRV9MT0NLX0ZV
TkNUSU9OKG11KSA6IG11XyhtdSkgeworICBleHBsaWNpdCBNdXRleExvY2soTXV0ZXggKm11KSBB
QlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKG11KSA6IG11XyhtdSkgewogICAgIHRoaXMtPm11
Xy0+TG9jaygpOwogICB9CiAKQEAgLTUyNSw3ICs1NDYsNyBAQCBjbGFzcyBTQ09QRURfTE9DS0FC
TEUgTXV0ZXhMb2NrIHsKICAgTXV0ZXhMb2NrJiBvcGVyYXRvcj0oY29uc3QgTXV0ZXhMb2NrJikg
PSBkZWxldGU7CiAgIE11dGV4TG9jayYgb3BlcmF0b3I9KE11dGV4TG9jayYmKSA9IGRlbGV0ZTsK
IAotICB+TXV0ZXhMb2NrKCkgVU5MT0NLX0ZVTkNUSU9OKCkgeyB0aGlzLT5tdV8tPlVubG9jaygp
OyB9CisgIH5NdXRleExvY2soKSBBQlNMX1VOTE9DS19GVU5DVElPTigpIHsgdGhpcy0+bXVfLT5V
bmxvY2soKTsgfQogCiAgcHJpdmF0ZToKICAgTXV0ZXggKmNvbnN0IG11XzsKQEAgLTUzNSw5ICs1
NTYsOSBAQCBjbGFzcyBTQ09QRURfTE9DS0FCTEUgTXV0ZXhMb2NrIHsKIC8vCiAvLyBUaGUgYFJl
YWRlck11dGV4TG9ja2AgaXMgYSBoZWxwZXIgY2xhc3MsIGxpa2UgYE11dGV4TG9ja2AsIHdoaWNo
IGFjcXVpcmVzIGFuZAogLy8gcmVsZWFzZXMgYSBzaGFyZWQgbG9jayBvbiBhIGBNdXRleGAgdmlh
IFJBSUkuCi1jbGFzcyBTQ09QRURfTE9DS0FCTEUgUmVhZGVyTXV0ZXhMb2NrIHsKK2NsYXNzIEFC
U0xfU0NPUEVEX0xPQ0tBQkxFIFJlYWRlck11dGV4TG9jayB7CiAgcHVibGljOgotICBleHBsaWNp
dCBSZWFkZXJNdXRleExvY2soTXV0ZXggKm11KSBTSEFSRURfTE9DS19GVU5DVElPTihtdSkKKyAg
ZXhwbGljaXQgUmVhZGVyTXV0ZXhMb2NrKE11dGV4ICptdSkgQUJTTF9TSEFSRURfTE9DS19GVU5D
VElPTihtdSkKICAgICAgIDogIG11XyhtdSkgewogICAgIG11LT5SZWFkZXJMb2NrKCk7CiAgIH0K
QEAgLTU0Nyw3ICs1NjgsNyBAQCBjbGFzcyBTQ09QRURfTE9DS0FCTEUgUmVhZGVyTXV0ZXhMb2Nr
IHsKICAgUmVhZGVyTXV0ZXhMb2NrJiBvcGVyYXRvcj0oY29uc3QgUmVhZGVyTXV0ZXhMb2NrJikg
PSBkZWxldGU7CiAgIFJlYWRlck11dGV4TG9jayYgb3BlcmF0b3I9KFJlYWRlck11dGV4TG9jayYm
KSA9IGRlbGV0ZTsKIAotICB+UmVhZGVyTXV0ZXhMb2NrKCkgVU5MT0NLX0ZVTkNUSU9OKCkgewor
ICB+UmVhZGVyTXV0ZXhMb2NrKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJT04oKSB7CiAgICAgdGhpcy0+
bXVfLT5SZWFkZXJVbmxvY2soKTsKICAgfQogCkBAIC01NTksOSArNTgwLDkgQEAgY2xhc3MgU0NP
UEVEX0xPQ0tBQkxFIFJlYWRlck11dGV4TG9jayB7CiAvLwogLy8gVGhlIGBXcml0ZXJNdXRleExv
Y2tgIGlzIGEgaGVscGVyIGNsYXNzLCBsaWtlIGBNdXRleExvY2tgLCB3aGljaCBhY3F1aXJlcyBh
bmQKIC8vIHJlbGVhc2VzIGEgd3JpdGUgKGV4Y2x1c2l2ZSkgbG9jayBvbiBhIGBNdXRleGAgdmlh
IFJBSUkuCi1jbGFzcyBTQ09QRURfTE9DS0FCTEUgV3JpdGVyTXV0ZXhMb2NrIHsKK2NsYXNzIEFC
U0xfU0NPUEVEX0xPQ0tBQkxFIFdyaXRlck11dGV4TG9jayB7CiAgcHVibGljOgotICBleHBsaWNp
dCBXcml0ZXJNdXRleExvY2soTXV0ZXggKm11KSBFWENMVVNJVkVfTE9DS19GVU5DVElPTihtdSkK
KyAgZXhwbGljaXQgV3JpdGVyTXV0ZXhMb2NrKE11dGV4ICptdSkgQUJTTF9FWENMVVNJVkVfTE9D
S19GVU5DVElPTihtdSkKICAgICAgIDogbXVfKG11KSB7CiAgICAgbXUtPldyaXRlckxvY2soKTsK
ICAgfQpAQCAtNTcxLDcgKzU5Miw3IEBAIGNsYXNzIFNDT1BFRF9MT0NLQUJMRSBXcml0ZXJNdXRl
eExvY2sgewogICBXcml0ZXJNdXRleExvY2smIG9wZXJhdG9yPShjb25zdCBXcml0ZXJNdXRleExv
Y2smKSA9IGRlbGV0ZTsKICAgV3JpdGVyTXV0ZXhMb2NrJiBvcGVyYXRvcj0oV3JpdGVyTXV0ZXhM
b2NrJiYpID0gZGVsZXRlOwogCi0gIH5Xcml0ZXJNdXRleExvY2soKSBVTkxPQ0tfRlVOQ1RJT04o
KSB7CisgIH5Xcml0ZXJNdXRleExvY2soKSBBQlNMX1VOTE9DS19GVU5DVElPTigpIHsKICAgICB0
aGlzLT5tdV8tPldyaXRlclVubG9jaygpOwogICB9CiAKQEAgLTU4NCw3ICs2MDUsNyBAQCBjbGFz
cyBTQ09QRURfTE9DS0FCTEUgV3JpdGVyTXV0ZXhMb2NrIHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLwogLy8gQXMgbm90ZWQgYWJvdmUsIGBNdXRleGAgY29udGFpbnMgYSBudW1iZXIgb2Yg
bWVtYmVyIGZ1bmN0aW9ucyB3aGljaCB0YWtlIGEKLS8vIGBDb25kaXRpb25gIGFzIGEgYXJndW1l
bnQ7IGNsaWVudHMgY2FuIHdhaXQgZm9yIGNvbmRpdGlvbnMgdG8gYmVjb21lIGB0cnVlYAorLy8g
YENvbmRpdGlvbmAgYXMgYW4gYXJndW1lbnQ7IGNsaWVudHMgY2FuIHdhaXQgZm9yIGNvbmRpdGlv
bnMgdG8gYmVjb21lIGB0cnVlYAogLy8gYmVmb3JlIGF0dGVtcHRpbmcgdG8gYWNxdWlyZSB0aGUg
bXV0ZXguIFRoZXNlIHNlY3Rpb25zIGFyZSBrbm93biBhcwogLy8gImNvbmRpdGlvbiBjcml0aWNh
bCIgc2VjdGlvbnMuIFRvIHVzZSBhIGBDb25kaXRpb25gLCB5b3Ugc2ltcGx5IG5lZWQgdG8KIC8v
IGNvbnN0cnVjdCBpdCwgYW5kIHVzZSB3aXRoaW4gYW4gYXBwcm9wcmlhdGUgYE11dGV4YCBtZW1i
ZXIgZnVuY3Rpb247CkBAIC02MTIsNyArNjMzLDcgQEAgY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIFdy
aXRlck11dGV4TG9jayB7CiAvLyBFeGFtcGxlOgogLy8KIC8vICAgLy8gYXNzdW1lIGNvdW50XyBp
cyBub3QgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50Ci0vLyAgIGludCBjb3VudF8gR1VBUkRFRF9C
WShtdV8pOworLy8gICBpbnQgY291bnRfIEFCU0xfR1VBUkRFRF9CWShtdV8pOwogLy8KIC8vICAg
bXVfLkxvY2tXaGVuKENvbmRpdGlvbigrW10oaW50KiBjb3VudCkgeyByZXR1cm4gKmNvdW50ID09
IDA7IH0sCiAvLyAgICAgICAgICZjb3VudF8pKTsKQEAgLTgzOSwxMSArODYwLDExIEBAIGNsYXNz
IENvbmRWYXIgewogLy8gTXV0ZXhMb2NrTWF5YmUKIC8vCiAvLyBNdXRleExvY2tNYXliZSBpcyBs
aWtlIE11dGV4TG9jaywgYnV0IGlzIGEgbm8tb3Agd2hlbiBtdSBpcyBudWxsLgotY2xhc3MgU0NP
UEVEX0xPQ0tBQkxFIE11dGV4TG9ja01heWJlIHsKK2NsYXNzIEFCU0xfU0NPUEVEX0xPQ0tBQkxF
IE11dGV4TG9ja01heWJlIHsKICBwdWJsaWM6Ci0gIGV4cGxpY2l0IE11dGV4TG9ja01heWJlKE11
dGV4ICptdSkgRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04obXUpCisgIGV4cGxpY2l0IE11dGV4TG9j
a01heWJlKE11dGV4ICptdSkgQUJTTF9FWENMVVNJVkVfTE9DS19GVU5DVElPTihtdSkKICAgICAg
IDogbXVfKG11KSB7IGlmICh0aGlzLT5tdV8gIT0gbnVsbHB0cikgeyB0aGlzLT5tdV8tPkxvY2so
KTsgfSB9Ci0gIH5NdXRleExvY2tNYXliZSgpIFVOTE9DS19GVU5DVElPTigpIHsKKyAgfk11dGV4
TG9ja01heWJlKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJT04oKSB7CiAgICAgaWYgKHRoaXMtPm11XyAh
PSBudWxscHRyKSB7IHRoaXMtPm11Xy0+VW5sb2NrKCk7IH0KICAgfQogIHByaXZhdGU6CkBAIC04
NTgsMTcgKzg3OSwxNyBAQCBjbGFzcyBTQ09QRURfTE9DS0FCTEUgTXV0ZXhMb2NrTWF5YmUgewog
Ly8KIC8vIFJlbGVhc2FibGVNdXRleExvY2sgaXMgbGlrZSBNdXRleExvY2ssIGJ1dCBwZXJtaXRz
IGBSZWxlYXNlKClgIG9mIGl0cwogLy8gbXV0ZXggYmVmb3JlIGRlc3RydWN0aW9uLiBgUmVsZWFz
ZSgpYCBtYXkgYmUgY2FsbGVkIGF0IG1vc3Qgb25jZS4KLWNsYXNzIFNDT1BFRF9MT0NLQUJMRSBS
ZWxlYXNhYmxlTXV0ZXhMb2NrIHsKK2NsYXNzIEFCU0xfU0NPUEVEX0xPQ0tBQkxFIFJlbGVhc2Fi
bGVNdXRleExvY2sgewogIHB1YmxpYzoKLSAgZXhwbGljaXQgUmVsZWFzYWJsZU11dGV4TG9jayhN
dXRleCAqbXUpIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKG11KQorICBleHBsaWNpdCBSZWxlYXNh
YmxlTXV0ZXhMb2NrKE11dGV4ICptdSkgQUJTTF9FWENMVVNJVkVfTE9DS19GVU5DVElPTihtdSkK
ICAgICAgIDogbXVfKG11KSB7CiAgICAgdGhpcy0+bXVfLT5Mb2NrKCk7CiAgIH0KLSAgflJlbGVh
c2FibGVNdXRleExvY2soKSBVTkxPQ0tfRlVOQ1RJT04oKSB7CisgIH5SZWxlYXNhYmxlTXV0ZXhM
b2NrKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJT04oKSB7CiAgICAgaWYgKHRoaXMtPm11XyAhPSBudWxs
cHRyKSB7IHRoaXMtPm11Xy0+VW5sb2NrKCk7IH0KICAgfQogCi0gIHZvaWQgUmVsZWFzZSgpIFVO
TE9DS19GVU5DVElPTigpOworICB2b2lkIFJlbGVhc2UoKSBBQlNMX1VOTE9DS19GVU5DVElPTigp
OwogCiAgcHJpdmF0ZToKICAgTXV0ZXggKm11XzsKQEAgLTg3OSwxMSArOTAwLDE1IEBAIGNsYXNz
IFNDT1BFRF9MT0NLQUJMRSBSZWxlYXNhYmxlTXV0ZXhMb2NrIHsKIH07CiAKICNpZmRlZiBBQlNM
X0lOVEVSTkFMX1VTRV9OT05QUk9EX01VVEVYCitpbmxpbmUgY29uc3RleHByIE11dGV4OjpNdXRl
eChhYnNsOjpDb25zdEluaXRUeXBlKSA6IGltcGxfKGFic2w6OmtDb25zdEluaXQpIHt9CisKICNl
bHNlCiBpbmxpbmUgTXV0ZXg6Ok11dGV4KCkgOiBtdV8oMCkgewogICBBQlNMX1RTQU5fTVVURVhf
Q1JFQVRFKHRoaXMsIF9fdHNhbl9tdXRleF9ub3Rfc3RhdGljKTsKIH0KIAoraW5saW5lIGNvbnN0
ZXhwciBNdXRleDo6TXV0ZXgoYWJzbDo6Q29uc3RJbml0VHlwZSkgOiBtdV8oMCkge30KKwogaW5s
aW5lIENvbmRWYXI6OkNvbmRWYXIoKSA6IGN2XygwKSB7fQogI2VuZGlmCiAKQEAgLTEwMjUsNCAr
MTA1MCw1IEBAIHZvaWQgU2V0TXV0ZXhEZWFkbG9ja0RldGVjdGlvbk1vZGUoT25EZWFkbG9ja0N5
Y2xlIG1vZGUpOwogZXh0ZXJuICJDIiB7CiB2b2lkIEFic2xJbnRlcm5hbE11dGV4WWllbGQoKTsK
IH0gIC8vIGV4dGVybiAiQyIKKwogI2VuZGlmICAvLyBBQlNMX1NZTkNIUk9OSVpBVElPTl9NVVRF
WF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4X2JlbmNobWFyay5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleF9iZW5jaG1hcmsuY2MKaW5kZXggMWUwMTll
MDAxYWU0MDI3NGFkYzhiNGUwMGU3NTM5Y2QyNTc2ZGVjYS4uYWIxODgwMDEyYTBjMWU3OTE0Nzhi
MDQ3YjY1Y2MwYTkwZDM2YjdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211
dGV4X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXhfYmVuY2ht
YXJrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMiwx
NiArMTIsMTU0IEBACiAvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8bXV0ZXg+ICAvLyBOT0xJTlQo
YnVpbGQvYysrMTEpCiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiYmVuY2htYXJrL2Jl
bmNobWFyay5oIgotI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvLmgiCisjaW5j
bHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2N5Y2xlY2xvY2suaCIKKyNpbmNsdWRlICJhYnNsL2Jh
c2UvaW50ZXJuYWwvc3BpbmxvY2suaCIKICNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9i
bG9ja2luZ19jb3VudGVyLmgiCiAjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJu
YWwvdGhyZWFkX3Bvb2wuaCIKICNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5o
IgorI2luY2x1ZGUgImJlbmNobWFyay9iZW5jaG1hcmsuaCIKIAogbmFtZXNwYWNlIHsKIAordm9p
ZCBCTV9NdXRleChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBzdGF0aWMgYWJzbDo6TXV0
ZXgqIG11ID0gbmV3IGFic2w6Ok11dGV4OworICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7CisgICAg
YWJzbDo6TXV0ZXhMb2NrIGxvY2sobXUpOworICB9Cit9CitCRU5DSE1BUksoQk1fTXV0ZXgpLT5V
c2VSZWFsVGltZSgpLT5UaHJlYWRzKDEpLT5UaHJlYWRQZXJDcHUoKTsKKworc3RhdGljIHZvaWQg
RGVsYXlOcyhpbnQ2NF90IG5zLCBpbnQqIGRhdGEpIHsKKyAgaW50NjRfdCBlbmQgPSBhYnNsOjpi
YXNlX2ludGVybmFsOjpDeWNsZUNsb2NrOjpOb3coKSArCisgICAgICAgICAgICAgICAgbnMgKiBh
YnNsOjpiYXNlX2ludGVybmFsOjpDeWNsZUNsb2NrOjpGcmVxdWVuY3koKSAvIDFlOTsKKyAgd2hp
bGUgKGFic2w6OmJhc2VfaW50ZXJuYWw6OkN5Y2xlQ2xvY2s6Ok5vdygpIDwgZW5kKSB7CisgICAg
KysoKmRhdGEpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSgqZGF0YSk7CisgIH0KK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIE11dGV4VHlwZT4KK2NsYXNzIFJhaWlMb2NrZXIgeworIHB1
YmxpYzoKKyAgZXhwbGljaXQgUmFpaUxvY2tlcihNdXRleFR5cGUqIG11KSA6IG11XyhtdSkgeyBt
dV8tPkxvY2soKTsgfQorICB+UmFpaUxvY2tlcigpIHsgbXVfLT5VbmxvY2soKTsgfQorIHByaXZh
dGU6CisgIE11dGV4VHlwZSogbXVfOworfTsKKwordGVtcGxhdGUgPD4KK2NsYXNzIFJhaWlMb2Nr
ZXI8c3RkOjptdXRleD4geworIHB1YmxpYzoKKyAgZXhwbGljaXQgUmFpaUxvY2tlcihzdGQ6Om11
dGV4KiBtdSkgOiBtdV8obXUpIHsgbXVfLT5sb2NrKCk7IH0KKyAgflJhaWlMb2NrZXIoKSB7IG11
Xy0+dW5sb2NrKCk7IH0KKyBwcml2YXRlOgorICBzdGQ6Om11dGV4KiBtdV87Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTXV0ZXhUeXBlPgordm9pZCBCTV9Db250ZW5kZWQoYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKKyAgc3RydWN0IFNoYXJlZCB7CisgICAgTXV0ZXhUeXBlIG11OworICAg
IGludCBkYXRhID0gMDsKKyAgfTsKKyAgc3RhdGljIGF1dG8qIHNoYXJlZCA9IG5ldyBTaGFyZWQ7
CisgIGludCBsb2NhbCA9IDA7CisgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKKyAgICAvLyBIZXJl
IHdlIG1vZGVsIGJvdGggbG9jYWwgd29yayBvdXRzaWRlIG9mIHRoZSBjcml0aWNhbCBzZWN0aW9u
IGFzIHdlbGwgYXMKKyAgICAvLyBzb21lIHdvcmsgaW5zaWRlIG9mIHRoZSBjcml0aWNhbCBzZWN0
aW9uLiBUaGUgaWRlYSBpcyB0byBjYXB0dXJlIHNvbWUKKyAgICAvLyBtb3JlIG9yIGxlc3MgcmVh
bGlzaXRpYyBjb250ZW50aW9uIGxldmVscy4KKyAgICAvLyBJZiBjb250ZW50aW9uIGlzIHRvbyBs
b3csIHRoZSBiZW5jaG1hcmsgd29uJ3QgbWVhc3VyZSBhbnl0aGluZyB1c2VmdWwuCisgICAgLy8g
SWYgY29udGVudGlvbiBpcyB1bnJlYWxpc3RpY2FsbHkgaGlnaCwgdGhlIGJlbmNobWFyayB3aWxs
IGZhdm9yCisgICAgLy8gYmFkIG11dGV4IGltcGxlbWVudGF0aW9ucyB0aGF0IGJsb2NrIGFuZCBv
dGhlcndpc2UgZGlzdHJhY3QgdGhyZWFkcworICAgIC8vIGZyb20gdGhlIG11dGV4IGFuZCBzaGFy
ZWQgc3RhdGUgZm9yIGFzIG11Y2ggYXMgcG9zc2libGUuCisgICAgLy8gVG8gYWNoaWV2ZSB0aGlz
IGFtb3VudCBvZiBsb2NhbCB3b3JrIGlzIG11bHRpcGxpZWQgYnkgbnVtYmVyIG9mIHRocmVhZHMK
KyAgICAvLyB0byBrZWVwIHJhdGlvIGJldHdlZW4gbG9jYWwgd29yayBhbmQgY3JpdGljYWwgc2Vj
dGlvbiBhcHByb3hpbWF0ZWx5CisgICAgLy8gZXF1YWwgcmVnYXJkbGVzcyBvZiBudW1iZXIgb2Yg
dGhyZWFkcy4KKyAgICBEZWxheU5zKDEwMCAqIHN0YXRlLnRocmVhZHMsICZsb2NhbCk7CisgICAg
UmFpaUxvY2tlcjxNdXRleFR5cGU+IGxvY2tlcigmc2hhcmVkLT5tdSk7CisgICAgRGVsYXlOcyhz
dGF0ZS5yYW5nZSgwKSwgJnNoYXJlZC0+ZGF0YSk7CisgIH0KK30KKworQkVOQ0hNQVJLX1RFTVBM
QVRFKEJNX0NvbnRlbmRlZCwgYWJzbDo6TXV0ZXgpCisgICAgLT5Vc2VSZWFsVGltZSgpCisgICAg
Ly8gVGhyZWFkUGVyQ3B1IHBvb3JseSBoYW5kbGVzIG5vbi1wb3dlci1vZi10d28gQ1BVIGNvdW50
cy4KKyAgICAtPlRocmVhZHMoMSkKKyAgICAtPlRocmVhZHMoMikKKyAgICAtPlRocmVhZHMoNCkK
KyAgICAtPlRocmVhZHMoNikKKyAgICAtPlRocmVhZHMoOCkKKyAgICAtPlRocmVhZHMoMTIpCisg
ICAgLT5UaHJlYWRzKDE2KQorICAgIC0+VGhyZWFkcygyNCkKKyAgICAtPlRocmVhZHMoMzIpCisg
ICAgLT5UaHJlYWRzKDQ4KQorICAgIC0+VGhyZWFkcyg2NCkKKyAgICAtPlRocmVhZHMoOTYpCisg
ICAgLT5UaHJlYWRzKDEyOCkKKyAgICAtPlRocmVhZHMoMTkyKQorICAgIC0+VGhyZWFkcygyNTYp
CisgICAgLy8gU29tZSBlbXBpcmljYWxseSBjaG9zZW4gYW1vdW50cyBvZiB3b3JrIGluIGNyaXRp
Y2FsIHNlY3Rpb24uCisgICAgLy8gMSBpcyBsb3cgY29udGVudGlvbiwgMjAwIGlzIGhpZ2ggY29u
dGVudGlvbiBhbmQgZmV3IHZhbHVlcyBpbiBiZXR3ZWVuLgorICAgIC0+QXJnKDEpCisgICAgLT5B
cmcoMjApCisgICAgLT5BcmcoNTApCisgICAgLT5BcmcoMjAwKTsKKworQkVOQ0hNQVJLX1RFTVBM
QVRFKEJNX0NvbnRlbmRlZCwgYWJzbDo6YmFzZV9pbnRlcm5hbDo6U3BpbkxvY2spCisgICAgLT5V
c2VSZWFsVGltZSgpCisgICAgLy8gVGhyZWFkUGVyQ3B1IHBvb3JseSBoYW5kbGVzIG5vbi1wb3dl
ci1vZi10d28gQ1BVIGNvdW50cy4KKyAgICAtPlRocmVhZHMoMSkKKyAgICAtPlRocmVhZHMoMikK
KyAgICAtPlRocmVhZHMoNCkKKyAgICAtPlRocmVhZHMoNikKKyAgICAtPlRocmVhZHMoOCkKKyAg
ICAtPlRocmVhZHMoMTIpCisgICAgLT5UaHJlYWRzKDE2KQorICAgIC0+VGhyZWFkcygyNCkKKyAg
ICAtPlRocmVhZHMoMzIpCisgICAgLT5UaHJlYWRzKDQ4KQorICAgIC0+VGhyZWFkcyg2NCkKKyAg
ICAtPlRocmVhZHMoOTYpCisgICAgLT5UaHJlYWRzKDEyOCkKKyAgICAtPlRocmVhZHMoMTkyKQor
ICAgIC0+VGhyZWFkcygyNTYpCisgICAgLy8gU29tZSBlbXBpcmljYWxseSBjaG9zZW4gYW1vdW50
cyBvZiB3b3JrIGluIGNyaXRpY2FsIHNlY3Rpb24uCisgICAgLy8gMSBpcyBsb3cgY29udGVudGlv
biwgMjAwIGlzIGhpZ2ggY29udGVudGlvbiBhbmQgZmV3IHZhbHVlcyBpbiBiZXR3ZWVuLgorICAg
IC0+QXJnKDEpCisgICAgLT5BcmcoMjApCisgICAgLT5BcmcoNTApCisgICAgLT5BcmcoMjAwKTsK
KworQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0NvbnRlbmRlZCwgc3RkOjptdXRleCkKKyAgICAtPlVz
ZVJlYWxUaW1lKCkKKyAgICAvLyBUaHJlYWRQZXJDcHUgcG9vcmx5IGhhbmRsZXMgbm9uLXBvd2Vy
LW9mLXR3byBDUFUgY291bnRzLgorICAgIC0+VGhyZWFkcygxKQorICAgIC0+VGhyZWFkcygyKQor
ICAgIC0+VGhyZWFkcyg0KQorICAgIC0+VGhyZWFkcyg2KQorICAgIC0+VGhyZWFkcyg4KQorICAg
IC0+VGhyZWFkcygxMikKKyAgICAtPlRocmVhZHMoMTYpCisgICAgLT5UaHJlYWRzKDI0KQorICAg
IC0+VGhyZWFkcygzMikKKyAgICAtPlRocmVhZHMoNDgpCisgICAgLT5UaHJlYWRzKDY0KQorICAg
IC0+VGhyZWFkcyg5NikKKyAgICAtPlRocmVhZHMoMTI4KQorICAgIC0+VGhyZWFkcygxOTIpCisg
ICAgLT5UaHJlYWRzKDI1NikKKyAgICAvLyBTb21lIGVtcGlyaWNhbGx5IGNob3NlbiBhbW91bnRz
IG9mIHdvcmsgaW4gY3JpdGljYWwgc2VjdGlvbi4KKyAgICAvLyAxIGlzIGxvdyBjb250ZW50aW9u
LCAyMDAgaXMgaGlnaCBjb250ZW50aW9uIGFuZCBmZXcgdmFsdWVzIGluIGJldHdlZW4uCisgICAg
LT5BcmcoMSkKKyAgICAtPkFyZygyMCkKKyAgICAtPkFyZyg1MCkKKyAgICAtPkFyZygyMDApOwor
CiAvLyBNZWFzdXJlIHRoZSBvdmVyaGVhZCBvZiBjb25kaXRpb25zIG9uIG11dGV4IHJlbGVhc2Ug
KHdoZW4gdGhleSBtdXN0IGJlCiAvLyBldmFsdWF0ZWQpLiAgTXV0ZXggaGFzIChzb21lKSBzdXBw
b3J0IGZvciBlcXVpdmFsZW5jZSBjbGFzc2VzIGFsbG93aW5nCiAvLyBDb25kaXRpb25zIHdpdGgg
dGhlIHNhbWUgZnVuY3Rpb24vYXJndW1lbnQgdG8gcG90ZW50aWFsbHkgbm90IGJlIG11bHRpcGx5
CkBAIC04MiwxMyArMjIwLDQgQEAgY29uc3RleHByIGludCBrTWF4Q29uZGl0aW9uV2FpdGVycyA9
IDEwMjQ7CiAjZW5kaWYKIEJFTkNITUFSSyhCTV9Db25kaXRpb25XYWl0ZXJzKS0+UmFuZ2VQYWly
KDAsIDIsIDEsIGtNYXhDb25kaXRpb25XYWl0ZXJzKTsKIAotdm9pZCBCTV9Db250ZW5kZWRNdXRl
eChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewotICBzdGF0aWMgYWJzbDo6TXV0ZXgqIG11ID0g
bmV3IGFic2w6Ok11dGV4OwotICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgYWJzbDo6TXV0
ZXhMb2NrIGxvY2sobXUpOwotICB9Ci19Ci1CRU5DSE1BUksoQk1fQ29udGVuZGVkTXV0ZXgpLT5U
aHJlYWRzKDEpOwotQkVOQ0hNQVJLKEJNX0NvbnRlbmRlZE11dGV4KS0+VGhyZWFkUGVyQ3B1KCk7
Ci0KIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211
dGV4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXhfdGVzdC5jYwppbmRleCBi
MjgyMGUyMDY4ZDU2ZTkwMTMyMTljMTg4ZTY0ZjQ2MTNmMGVhMzc5Li4zYzUwMTE5MjZkY2RhYWU1
MWQxM2NhOGZkOWZjNzljMGNjY2Q5NWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vbXV0ZXhfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXhfdGVzdC5j
YwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQsNyArMTQs
NyBAQAogCiAjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIKIAotI2lmZGVm
IFdJTjMyCisjaWZkZWYgX1dJTjMyCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKQEAg
LTQyNSwxMCArNDI1LDEwIEBAIFRFU1QoTXV0ZXgsIENvbmRWYXJXYWl0U2lnbmFsc0F3YWl0KSB7
CiAgIC8vIFVzZSBhIHN0cnVjdCBzbyB0aGUgbG9jayBhbm5vdGF0aW9ucyBhcHBseS4KICAgc3Ry
dWN0IHsKICAgICBhYnNsOjpNdXRleCBiYXJyaWVyX211OwotICAgIGJvb2wgYmFycmllciBHVUFS
REVEX0JZKGJhcnJpZXJfbXUpID0gZmFsc2U7CisgICAgYm9vbCBiYXJyaWVyIEFCU0xfR1VBUkRF
RF9CWShiYXJyaWVyX211KSA9IGZhbHNlOwogCiAgICAgYWJzbDo6TXV0ZXggcmVsZWFzZV9tdTsK
LSAgICBib29sIHJlbGVhc2UgR1VBUkRFRF9CWShyZWxlYXNlX211KSA9IGZhbHNlOworICAgIGJv
b2wgcmVsZWFzZSBBQlNMX0dVQVJERURfQlkocmVsZWFzZV9tdSkgPSBmYWxzZTsKICAgICBhYnNs
OjpDb25kVmFyIHJlbGVhc2VkX2N2OwogICB9IHN0YXRlOwogCkBAIC00NjYsMTAgKzQ2NiwxMCBA
QCBURVNUKE11dGV4LCBDb25kVmFyV2FpdFdpdGhUaW1lb3V0U2lnbmFsc0F3YWl0KSB7CiAgIC8v
IFVzZSBhIHN0cnVjdCBzbyB0aGUgbG9jayBhbm5vdGF0aW9ucyBhcHBseS4KICAgc3RydWN0IHsK
ICAgICBhYnNsOjpNdXRleCBiYXJyaWVyX211OwotICAgIGJvb2wgYmFycmllciBHVUFSREVEX0JZ
KGJhcnJpZXJfbXUpID0gZmFsc2U7CisgICAgYm9vbCBiYXJyaWVyIEFCU0xfR1VBUkRFRF9CWShi
YXJyaWVyX211KSA9IGZhbHNlOwogCiAgICAgYWJzbDo6TXV0ZXggcmVsZWFzZV9tdTsKLSAgICBi
b29sIHJlbGVhc2UgR1VBUkRFRF9CWShyZWxlYXNlX211KSA9IGZhbHNlOworICAgIGJvb2wgcmVs
ZWFzZSBBQlNMX0dVQVJERURfQlkocmVsZWFzZV9tdSkgPSBmYWxzZTsKICAgICBhYnNsOjpDb25k
VmFyIHJlbGVhc2VkX2N2OwogICB9IHN0YXRlOwogCkBAIC02MTAsOSArNjEwLDkgQEAgVEVTVF9Q
KENvbmRWYXJXYWl0RGVhZGxvY2ssIFRlc3QpIHsKICAgd2FpdGVyMi5yZXNldCgpOyAgLy8gImpv
aW4iIHdhaXRlcjIKIH0KIAotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQ29uZFZhcldhaXREZWFk
bG9ja1Rlc3QsIENvbmRWYXJXYWl0RGVhZGxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICA6
OnRlc3Rpbmc6OlJhbmdlKDAsIDgpLAotICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOworSU5TVEFOVElBVEVfVEVTVF9TVUlURV9QKENv
bmRWYXJXYWl0RGVhZGxvY2tUZXN0LCBDb25kVmFyV2FpdERlYWRsb2NrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIDo6dGVzdGluZzo6UmFuZ2UoMCwgOCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gVGVz
dCBmb3IgZml4IG9mIGJ1ZyBpbiBEZXF1ZXVlQWxsV2FrZWFibGUoKQpAQCAtNzcwLDcgKzc3MCw3
IEBAIHN0YXRpYyB2b2lkIEdldFJlYWRMb2NrKFJlYWRlckRlY3JlbWVudEJ1Z1N0cnVjdCAqeCkg
ewogCiAvLyBUZXN0IGZvciByZWFkZXIgY291bnRlciBiZWluZyBkZWNyZW1lbnRlZCBpbmNvcnJl
Y3RseSBieSB3YWl0ZXIKIC8vIHdpdGggZmFsc2UgY29uZGl0aW9uLgotVEVTVChNdXRleCwgTXV0
ZXhSZWFkZXJEZWNyZW1lbnRCdWcpIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeworVEVTVChN
dXRleCwgTXV0ZXhSZWFkZXJEZWNyZW1lbnRCdWcpIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUyB7CiAgIFJlYWRlckRlY3JlbWVudEJ1Z1N0cnVjdCB4OwogICB4LmNvbmQgPSBmYWxzZTsK
ICAgeC53YWl0aW5nX29uX2NvbmQgPSBmYWxzZTsKQEAgLTgxNSw3ICs4MTUsMTIgQEAgVEVTVChN
dXRleCwgTXV0ZXhSZWFkZXJEZWNyZW1lbnRCdWcpIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMg
ewogCiAvLyBUZXN0IHRoYXQgd2UgY29ycmVjdGx5IGhhbmRsZSB0aGUgc2l0dWF0aW9uIHdoZW4g
YSBsb2NrIGlzCiAvLyBoZWxkIGFuZCB0aGVuIGRlc3Ryb3llZCAody9vIHVubG9ja2luZykuCi1U
RVNUKE11dGV4LCBMb2NrZWRNdXRleERlc3RydWN0aW9uQnVnKSBOT19USFJFQURfU0FGRVRZX0FO
QUxZU0lTIHsKKyNpZmRlZiBUSFJFQURfU0FOSVRJWkVSCisvLyBUU0FOIHJlcG9ydHMgZXJyb3Jz
IHdoZW4gbG9ja2VkIE11dGV4ZXMgYXJlIGRlc3Ryb3llZC4KK1RFU1QoTXV0ZXgsIERJU0FCTEVE
X0xvY2tlZE11dGV4RGVzdHJ1Y3Rpb25CdWcpIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UyB7CisjZWxzZQorVEVTVChNdXRleCwgTG9ja2VkTXV0ZXhEZXN0cnVjdGlvbkJ1ZykgQUJTTF9O
T19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKKyNlbmRpZgogICBmb3IgKGludCBpID0gMDsgaSAh
PSAxMDsgaSsrKSB7CiAgICAgLy8gQ3JlYXRlLCBsb2NrIGFuZCBkZXN0cm95IDEwIGxvY2tzLgog
ICAgIGNvbnN0IGludCBrTnVtTG9ja3MgPSAxMDsKQEAgLTEwMzAsMTEgKzEwMzUsMTEgQEAgVEVT
VChNdXRleCwgRGVhZGxvY2tEZXRlY3RvcikgewogY2xhc3MgU2NvcGVkRGlzYWJsZUJhemVsVGVz
dFdhcm5pbmdzIHsKICBwdWJsaWM6CiAgIFNjb3BlZERpc2FibGVCYXplbFRlc3RXYXJuaW5ncygp
IHsKLSNpZmRlZiBXSU4zMgorI2lmZGVmIF9XSU4zMgogICAgIGNoYXIgZmlsZVtNQVhfUEFUSF07
Ci0gICAgaWYgKEdldEVudmlyb25tZW50VmFyaWFibGUoa1Zhck5hbWUsIGZpbGUsIHNpemVvZihm
aWxlKSkgPCBzaXplb2YoZmlsZSkpIHsKKyAgICBpZiAoR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEo
a1Zhck5hbWUsIGZpbGUsIHNpemVvZihmaWxlKSkgPCBzaXplb2YoZmlsZSkpIHsKICAgICAgIHdh
cm5pbmdzX291dHB1dF9maWxlXyA9IGZpbGU7Ci0gICAgICBTZXRFbnZpcm9ubWVudFZhcmlhYmxl
KGtWYXJOYW1lLCBudWxscHRyKTsKKyAgICAgIFNldEVudmlyb25tZW50VmFyaWFibGVBKGtWYXJO
YW1lLCBudWxscHRyKTsKICAgICB9CiAjZWxzZQogICAgIGNvbnN0IGNoYXIgKmZpbGUgPSBnZXRl
bnYoa1Zhck5hbWUpOwpAQCAtMTA0Nyw4ICsxMDUyLDggQEAgY2xhc3MgU2NvcGVkRGlzYWJsZUJh
emVsVGVzdFdhcm5pbmdzIHsKIAogICB+U2NvcGVkRGlzYWJsZUJhemVsVGVzdFdhcm5pbmdzKCkg
ewogICAgIGlmICghd2FybmluZ3Nfb3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKLSNpZmRlZiBXSU4z
MgotICAgICAgU2V0RW52aXJvbm1lbnRWYXJpYWJsZShrVmFyTmFtZSwgd2FybmluZ3Nfb3V0cHV0
X2ZpbGVfLmNfc3RyKCkpOworI2lmZGVmIF9XSU4zMgorICAgICAgU2V0RW52aXJvbm1lbnRWYXJp
YWJsZUEoa1Zhck5hbWUsIHdhcm5pbmdzX291dHB1dF9maWxlXy5jX3N0cigpKTsKICNlbHNlCiAg
ICAgICBzZXRlbnYoa1Zhck5hbWUsIHdhcm5pbmdzX291dHB1dF9maWxlXy5jX3N0cigpLCAwKTsK
ICNlbmRpZgpAQCAtMTA2Miw3ICsxMDY3LDEyIEBAIGNsYXNzIFNjb3BlZERpc2FibGVCYXplbFRl
c3RXYXJuaW5ncyB7CiBjb25zdCBjaGFyIFNjb3BlZERpc2FibGVCYXplbFRlc3RXYXJuaW5nczo6
a1Zhck5hbWVbXSA9CiAgICAgIlRFU1RfV0FSTklOR1NfT1VUUFVUX0ZJTEUiOwogCisjaWZkZWYg
VEhSRUFEX1NBTklUSVpFUgorLy8gVGhpcyB0ZXN0IGludGVudGlvbmFsbHkgY3JlYXRlcyBkZWFk
bG9ja3MgdG8gdGVzdCB0aGUgZGVhZGxvY2sgZGV0ZWN0b3IuCitURVNUKE11dGV4LCBESVNBQkxF
RF9EZWFkbG9ja0RldGVjdG9yQmF6ZWxXYXJuaW5nKSB7CisjZWxzZQogVEVTVChNdXRleCwgRGVh
ZGxvY2tEZXRlY3RvckJhemVsV2FybmluZykgeworI2VuZGlmCiAgIGFic2w6OlNldE11dGV4RGVh
ZGxvY2tEZXRlY3Rpb25Nb2RlKGFic2w6Ok9uRGVhZGxvY2tDeWNsZTo6a1JlcG9ydCk7CiAKICAg
Ly8gQ2F1c2UgZGVhZGxvY2sgZGV0ZWN0aW9uIHRvIGRldGVjdCBzb21ldGhpbmcsIGlmIGl0J3MK
QEAgLTEwODcsMTEgKzEwOTcsMTEgQEAgVEVTVChNdXRleCwgRGVhZGxvY2tEZXRlY3RvckJhemVs
V2FybmluZykgewogICBhYnNsOjpTZXRNdXRleERlYWRsb2NrRGV0ZWN0aW9uTW9kZShhYnNsOjpP
bkRlYWRsb2NrQ3ljbGU6OmtBYm9ydCk7CiB9CiAKLS8vIFRoaXMgdGVzdCBpcyB0YWdnZWQgd2l0
aCBOT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIGJlY2F1c2UgdGhlCisvLyBUaGlzIHRlc3QgaXMg
dGFnZ2VkIHdpdGggQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIGJlY2F1c2UgdGhlCiAv
LyBhbm5vdGF0aW9uLWJhc2VkIHN0YXRpYyB0aHJlYWQtc2FmZXR5IGFuYWx5c2lzIGlzIG5vdCBj
dXJyZW50bHkKIC8vIHByZWRpY2F0ZS1hd2FyZSBhbmQgY2Fubm90IHRlbGwgaWYgdGhlIHR3byBm
b3ItbG9vcHMgdGhhdCBhY3F1aXJlIGFuZAogLy8gcmVsZWFzZSB0aGUgbG9ja3MgaGF2ZSB0aGUg
c2FtZSBwcmVkaWNhdGVzLgotVEVTVChNdXRleCwgRGVhZGxvY2tEZXRlY3RvclN0ZXNzVGVzdCkg
Tk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7CitURVNUKE11dGV4LCBEZWFkbG9ja0RldGVjdG9y
U3Rlc3NUZXN0KSBBQlNMX05PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgewogICAvLyBTdHJlc3Mg
dGVzdDogSGVyZSB3ZSBjcmVhdGUgYSBsYXJnZSBudW1iZXIgb2YgbG9ja3MgYW5kIHVzZSBhbGwg
b2YgdGhlbS4KICAgLy8gSWYgYSBkZWFkbG9jayBkZXRlY3RvciBrZWVwcyBhIGZ1bGwgZ3JhcGgg
b2YgbG9jayBhY3F1aXNpdGlvbiBvcmRlciwKICAgLy8gaXQgd2lsbCBsaWtlbHkgYmUgdG9vIHNs
b3cgZm9yIHRoaXMgdGVzdCB0byBwYXNzLgpAQCAtMTEwOSw3ICsxMTE5LDEyIEBAIFRFU1QoTXV0
ZXgsIERlYWRsb2NrRGV0ZWN0b3JTdGVzc1Rlc3QpIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMg
ewogICB9CiB9CiAKLVRFU1QoTXV0ZXgsIERlYWRsb2NrSWRCdWcpIE5PX1RIUkVBRF9TQUZFVFlf
QU5BTFlTSVMgeworI2lmZGVmIFRIUkVBRF9TQU5JVElaRVIKKy8vIFRTQU4gcmVwb3J0cyBlcnJv
cnMgd2hlbiBsb2NrZWQgTXV0ZXhlcyBhcmUgZGVzdHJveWVkLgorVEVTVChNdXRleCwgRElTQUJM
RURfRGVhZGxvY2tJZEJ1ZykgQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKKyNlbHNl
CitURVNUKE11dGV4LCBEZWFkbG9ja0lkQnVnKSBBQlNMX05PX1RIUkVBRF9TQUZFVFlfQU5BTFlT
SVMgeworI2VuZGlmCiAgIC8vIFRlc3QgYSBzY2VuYXJpbyB3aGVyZSBhIGNhY2hlZCBkZWFkbG9j
ayBncmFwaCBub2RlIGlkIGluIHRoZQogICAvLyBsaXN0IG9mIGhlbGQgbG9ja3MgaXMgbm90IGlu
dmFsaWRhdGVkIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcKICAgLy8gbXV0ZXggaXMgZGVsZXRlZC4K
QEAgLTEzNjcsOCArMTM4Miw4IEBAIHN0ZDo6dmVjdG9yPFRpbWVvdXRUZXN0UGFyYW0+IE1ha2VU
aW1lb3V0VGVzdFBhcmFtVmFsdWVzKCkgewogfQogCiAvLyBJbnN0YW50aWF0ZSBgVGltZW91dFRl
c3RgIHdpdGggYE1ha2VUaW1lb3V0VGVzdFBhcmFtVmFsdWVzKClgLgotSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoQWxsLCBUaW1lb3V0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rp
bmc6OlZhbHVlc0luKE1ha2VUaW1lb3V0VGVzdFBhcmFtVmFsdWVzKCkpKTsKK0lOU1RBTlRJQVRF
X1RFU1RfU1VJVEVfUChBbGwsIFRpbWVvdXRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3Rpbmc6OlZhbHVlc0luKE1ha2VUaW1lb3V0VGVzdFBhcmFtVmFsdWVzKCkpKTsKIAogVEVT
VF9QKFRpbWVvdXRUZXN0LCBBd2FpdCkgewogICBjb25zdCBUaW1lb3V0VGVzdFBhcmFtIHBhcmFt
cyA9IEdldFBhcmFtKCk7CkBAIC0xNTQ4LDkgKzE1NjMsOSBAQCBzdGF0aWMgc3RkOjp2ZWN0b3I8
aW50PiBBbGxUaHJlYWRDb3VudFZhbHVlcygpIHsKIGNsYXNzIE11dGV4VmFyaWFibGVUaHJlYWRD
b3VudFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CiAKIC8v
IEluc3RhbnRpYXRlIHRoZSBhYm92ZSB3aXRoIEFsbFRocmVhZENvdW50T3B0aW9ucygpLgotSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoVGhyZWFkQ291bnRzLCBNdXRleFZhcmlhYmxlVGhyZWFkQ291
bnRUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXNJbihBbGxU
aHJlYWRDb3VudFZhbHVlcygpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6
UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKK0lOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUChUaHJl
YWRDb3VudHMsIE11dGV4VmFyaWFibGVUaHJlYWRDb3VudFRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXNJbihBbGxUaHJlYWRDb3VudFZhbHVlcygpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUo
KSk7CiAKIC8vIFJlZHVjZXMgaXRlcmF0aW9ucyBieSBzb21lIGZhY3RvciBmb3Igc2xvdyBwbGF0
Zm9ybXMKIC8vIChkZXRlcm1pbmVkIGVtcGlyaWNhbGx5KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbm90
aWZpY2F0aW9uLmNjCmluZGV4IGVkOGNjOTA2Nzc0MDI1YjQ2YjA1OGQ0N2Q4NDRiYTc2OWJjMWJj
ZTcuLjUzYWNlMDA4NzBjOTk4NWY4MTJkNGNjYjJmYTI4NjE0MWViOThlMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb24uY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hy
b25pemF0aW9uL25vdGlmaWNhdGlvbi5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImFic2wvdGltZS90aW1lLmgi
CiAKIG5hbWVzcGFjZSBhYnNsIHsKKwogdm9pZCBOb3RpZmljYXRpb246Ok5vdGlmeSgpIHsKICAg
TXV0ZXhMb2NrIGwoJnRoaXMtPm11dGV4Xyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9u
aXphdGlvbi9ub3RpZmljYXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRp
b24uaAppbmRleCAxMDc5MzJmMjkwOWU2ZTYxYmIxMWZjNWIzZjUzNzJhYTU0MTcyY2EwLi44MmQx
MTFhNTQ5MmYwZjYwZWMxNjhlYmE3MTBmMGEzZWE4MDQ2NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
eW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9u
L25vdGlmaWNhdGlvbi5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CkBAIC01Miw2ICs1Miw3IEBACiAKICNpbmNsdWRlIDxhdG9taWM+CiAKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvbWFjcm9zLmgiCiAjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIK
ICNpbmNsdWRlICJhYnNsL3RpbWUvdGltZS5oIgogCkBAIC0xMDksNCArMTEwLDUgQEAgY2xhc3Mg
Tm90aWZpY2F0aW9uIHsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8g
QUJTTF9TWU5DSFJPTklaQVRJT05fTk9USUZJQ0FUSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
eW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vbm90aWZpY2F0aW9uX3Rlc3QuY2MKaW5kZXggZDg3MDhkNTUxYTE1NzU3NDZlYTJhODU0MjY5
NzJmZDk4MTkxMTAxNi4uMDU5ZDRjZDI1MjFkZWFkYWZkZWE2ZjE3ZTg4NzYyYjZjOTNjNWNiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL25vdGlmaWNhdGlvbl90ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb25fdGVzdC5jYwpAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNzIsMTIgKzcyLDE2IEBAIHN0YXRp
YyB2b2lkIEJhc2ljVGVzdHMoYm9vbCBub3RpZnlfYmVmb3JlX3dhaXRpbmcsIE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKSB7CiAgIEVYUEVDVF9GQUxTRShub3RpZmljYXRpb24tPldhaXRGb3JO
b3RpZmljYXRpb25XaXRoRGVhZGxpbmUoYWJzbDo6Tm93KCkpKTsKIAogICBjb25zdCBhYnNsOjpE
dXJhdGlvbiBkZWxheSA9IGFic2w6Ok1pbGxpc2Vjb25kcyg1MCk7CisgIGNvbnN0IGFic2w6OlRp
bWUgc3RhcnQgPSBhYnNsOjpOb3coKTsKKyAgRVhQRUNUX0ZBTFNFKG5vdGlmaWNhdGlvbi0+V2Fp
dEZvck5vdGlmaWNhdGlvbldpdGhUaW1lb3V0KGRlbGF5KSk7CisgIGNvbnN0IGFic2w6OkR1cmF0
aW9uIGVsYXBzZWQgPSBhYnNsOjpOb3coKSAtIHN0YXJ0OworCiAgIC8vIEFsbG93IGZvciBhIHNs
aWdodCBlYXJseSByZXR1cm4sIHRvIGFjY291bnQgZm9yIHF1YWxpdHkgb2YgaW1wbGVtZW50YXRp
b24KICAgLy8gaXNzdWVzIG9uIHZhcmlvdXMgcGxhdGZvcm1zLgogICBjb25zdCBhYnNsOjpEdXJh
dGlvbiBzbG9wID0gYWJzbDo6TWljcm9zZWNvbmRzKDIwMCk7Ci0gIGFic2w6OlRpbWUgc3RhcnQg
PSBhYnNsOjpOb3coKTsKLSAgRVhQRUNUX0ZBTFNFKG5vdGlmaWNhdGlvbi0+V2FpdEZvck5vdGlm
aWNhdGlvbldpdGhUaW1lb3V0KGRlbGF5KSk7Ci0gIEVYUEVDVF9MRShzdGFydCArIGRlbGF5LCBh
YnNsOjpOb3coKSArIHNsb3ApOworICBFWFBFQ1RfTEUoZGVsYXkgLSBzbG9wLCBlbGFwc2VkKQor
ICAgICAgPDwgIldhaXRGb3JOb3RpZmljYXRpb25XaXRoVGltZW91dCByZXR1cm5lZCAiIDw8IGRl
bGF5IC0gZWxhcHNlZAorICAgICAgPDwgIiBlYXJseSAod2l0aCAiIDw8IHNsb3AgPDwgIiBzbG9w
KSwgc3RhcnQgdGltZSB3YXMgIiA8PCBzdGFydDsKIAogICBUaHJlYWRTYWZlQ291bnRlciByZWFk
eV9jb3VudGVyOwogICBUaHJlYWRTYWZlQ291bnRlciBkb25lX2NvdW50ZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9CVUlMRC5iYXplbAppbmRleCBj
N2MxNmQ0Mzc2YzdmYTM0MzQ0NzU3Mjc5ZmE2MTdjNzA1NGMyNjBlLi41NWU4M2E4YzhlOTU2YWJk
ZDkyY2VkNDI0YzRmMjA3MjI5ZjkwYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0JVSUxELmJh
emVsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvQlVJTEQuYmF6ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAj
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0xNSw4ICsxNSw5IEBACiAjCiAKIGxvYWQoCi0gICAgIi8vYWJzbDpjb3B0
cy5iemwiLAorICAgICIvL2Fic2w6Y29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bCIsCiAgICAgIkFC
U0xfREVGQVVMVF9DT1BUUyIsCisgICAgIkFCU0xfREVGQVVMVF9MSU5LT1BUUyIsCiAgICAgIkFC
U0xfVEVTVF9DT1BUUyIsCiApCiAKQEAgLTI3LDYgKzI4LDcgQEAgbGljZW5zZXMoWyJub3RpY2Ui
XSkgICMgQXBhY2hlIDIuMAogY2NfbGlicmFyeSgKICAgICBuYW1lID0gInRpbWUiLAogICAgIHNy
Y3MgPSBbCisgICAgICAgICJjaXZpbF90aW1lLmNjIiwKICAgICAgICAgImNsb2NrLmNjIiwKICAg
ICAgICAgImR1cmF0aW9uLmNjIiwKICAgICAgICAgImZvcm1hdC5jYyIsCkBAIC0zNSwxMCArMzcs
MTIgQEAgY2NfbGlicmFyeSgKICAgICAgICAgInRpbWUuY2MiLAogICAgIF0sCiAgICAgaGRycyA9
IFsKKyAgICAgICAgImNpdmlsX3RpbWUuaCIsCiAgICAgICAgICJjbG9jay5oIiwKICAgICAgICAg
InRpbWUuaCIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBs
aW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAi
Ly9hYnNsL2Jhc2UiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKQEAgLTU4
LDYgKzYyLDcgQEAgY2NfbGlicmFyeSgKICAgICBdLAogICAgIGhkcnMgPSBbImludGVybmFsL3Rl
c3RfdXRpbC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9IFsKICAgICAgICAg
Ii8vYWJzbC90aW1lOl9fcGtnX18iLAogICAgIF0sCkBAIC03MiwxNCArNzcsMTUgQEAgY2NfbGli
cmFyeSgKIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJ0aW1lX3Rlc3QiLAogICAgIHNyY3MgPSBbCisg
ICAgICAgICJjaXZpbF90aW1lX3Rlc3QuY2MiLAogICAgICAgICAiY2xvY2tfdGVzdC5jYyIsCiAg
ICAgICAgICJkdXJhdGlvbl90ZXN0LmNjIiwKICAgICAgICAgImZvcm1hdF90ZXN0LmNjIiwKLSAg
ICAgICAgInRpbWVfbm9ybV90ZXN0LmNjIiwKICAgICAgICAgInRpbWVfdGVzdC5jYyIsCiAgICAg
ICAgICJ0aW1lX3pvbmVfdGVzdC5jYyIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiOnRlc3RfdXRpbCIsCiAgICAgICAgICI6dGltZSIsCkBAIC05NCwxMiArMTAw
LDE0IEBAIGNjX3Rlc3QoCiBjY190ZXN0KAogICAgIG5hbWUgPSAidGltZV9iZW5jaG1hcmsiLAog
ICAgIHNyY3MgPSBbCisgICAgICAgICJjaXZpbF90aW1lX2JlbmNobWFyay5jYyIsCiAgICAgICAg
ICJjbG9ja19iZW5jaG1hcmsuY2MiLAogICAgICAgICAiZHVyYXRpb25fYmVuY2htYXJrLmNjIiwK
ICAgICAgICAgImZvcm1hdF9iZW5jaG1hcmsuY2MiLAogICAgICAgICAidGltZV9iZW5jaG1hcmsu
Y2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFncyA9IFsKICAgICAgICAgImJlbmNobWFy
ayIsCiAgICAgXSwKQEAgLTEwNyw2ICsxMTUsOCBAQCBjY190ZXN0KAogICAgICAgICAiOnRlc3Rf
dXRpbCIsCiAgICAgICAgICI6dGltZSIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAg
ICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL2hhc2giLAogICAg
ICAgICAiQGNvbV9naXRodWJfZ29vZ2xlX2JlbmNobWFyay8vOmJlbmNobWFya19tYWluIiwKICAg
ICBdLAogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvQlVJ
TEQuZ24KaW5kZXggNTc1OGU5ZGMxZTNjM2RjNDVmMjhhNTI1ZmZlNjAxM2E4MzMxNDc0OS4uMDEz
NWNkZGNmZjczNjQxNzI1OTVkZWRkNGQ1MWNkZTdhYTM2OGQ4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0JVSUxELmduCkBAIC00LDggKzQsMTUgQEAK
IAogaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCisjIFVzYWdlIG9mIEFi
c2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBi
ZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRv
IGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2No
cm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGluZm9y
bWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1l
bnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQogaWYgKGJ1
aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3Rh
bnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAogICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCkBA
IC0yMiw2ICsyOSw3IEBAIHNvdXJjZV9zZXQoInRpbWUiKSB7CiAgIF0KICAgcHVibGljX2NvbmZp
Z3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQog
ICBzb3VyY2VzID0gWworICAgICJjaXZpbF90aW1lLmNjIiwKICAgICAiY2xvY2suY2MiLAogICAg
ICJkdXJhdGlvbi5jYyIsCiAgICAgImZvcm1hdC5jYyIsCkBAIC0zMCw2ICszOCw3IEBAIHNvdXJj
ZV9zZXQoInRpbWUiKSB7CiAgICAgInRpbWUuY2MiLAogICBdCiAgIHB1YmxpYyA9IFsKKyAgICAi
Y2l2aWxfdGltZS5oIiwKICAgICAiY2xvY2suaCIsCiAgICAgInRpbWUuaCIsCiAgIF0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDA2MjcyMzY0ZjE0ZTlkYjI1OTQzNTg0MDU2NzYzZDFiMDczYzY1MDguLjU5MDk4
MzIxMGFjMTM0YjE3NjYxZmY5NTA3ZmJhNzk5N2U0ZDQ1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9DTWFrZUxpc3RzLnR4dApAQCAtNSw3
ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAj
CiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDgzICsxNCwxMTQgQEAKICMgbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAjCiAKLWxpc3QoQVBQRU5EIFRJTUVfUFVCTElDX0hF
QURFUlMKLSAgImNsb2NrLmgiCi0gICJ0aW1lLmgiCi0pCi0KLQotbGlzdChBUFBFTkQgVElNRV9J
TlRFUk5BTF9IRUFERVJTCi0gICJpbnRlcm5hbC90ZXN0X3V0aWwuaCIKLSAgImludGVybmFsL2Nj
dHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWUuaCIKLSAgImludGVybmFsL2NjdHovaW5jbHVkZS9j
Y3R6L2NpdmlsX3RpbWVfZGV0YWlsLmgiCi0gICJpbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei90
aW1lX3pvbmUuaCIKLSAgImludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3Vy
Y2UuaCIKLSkKLQotbGlzdChBUFBFTkQgVElNRV9TUkMKLSAgInRpbWUuY2MiCithYnNsX2NjX2xp
YnJhcnkoCisgIE5BTUUKKyAgICB0aW1lCisgIEhEUlMKKyAgICAiY2l2aWxfdGltZS5oIgorICAg
ICJjbG9jay5oIgorICAgICJ0aW1lLmgiCisgIFNSQ1MKKyAgImNpdmlsX3RpbWUuY2MiCiAgICJj
bG9jay5jYyIKICAgImR1cmF0aW9uLmNjIgogICAiZm9ybWF0LmNjIgotICAiaW50ZXJuYWwvY2N0
ei9zcmMvY2l2aWxfdGltZV9kZXRhaWwuY2MiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pv
bmVfZml4ZWQuY2MiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZml4ZWQuaCIKLSAg
ImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXQuY2MiCi0gICJpbnRlcm5hbC9jY3R6
L3NyYy90aW1lX3pvbmVfaWYuY2MiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaWYu
aCIKLSAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbXBsLmNjIgotICAiaW50ZXJuYWwv
Y2N0ei9zcmMvdGltZV96b25lX2ltcGwuaCIKLSAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9u
ZV9pbmZvLmNjIgotICAiaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uaCIKLSAgImlu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmNjIgotICAiaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX2xpYmMuaCIKLSAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9sb29rdXAu
Y2MiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguY2MiCi0gICJpbnRlcm5h
bC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguaCIKLSAgImludGVybmFsL2NjdHovc3JjL3R6Zmls
ZS5oIgotICAiaW50ZXJuYWwvY2N0ei9zcmMvem9uZV9pbmZvX3NvdXJjZS5jYyIKLSAgJHtUSU1F
X1BVQkxJQ19IRUFERVJTfQotICAke1RJTUVfSU5URVJOQUxfSEVBREVSU30KKyAgImludGVybmFs
L2dldF9jdXJyZW50X3RpbWVfY2hyb25vLmluYyIKKyAgImludGVybmFsL2dldF9jdXJyZW50X3Rp
bWVfcG9zaXguaW5jIgorICAidGltZS5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAg
ICBhYnNsOjppbnQxMjgKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6Y2l2aWxfdGltZQor
ICAgIGFic2w6OnRpbWVfem9uZQorICBQVUJMSUMKICkKLXNldChUSU1FX1BVQkxJQ19MSUJSQVJJ
RVMgYWJzbDo6YmFzZSBhYnNsOjpzdGFja3RyYWNlIGFic2w6OmludDEyOCBhYnNsOjpzdHJpbmdz
KQogCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfdGltZQotICBTT1VSQ0VTCi0g
ICAgJHtUSU1FX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7VElNRV9QVUJMSUNfTElC
UkFSSUVTfQotICBFWFBPUlRfTkFNRQotICAgIHRpbWUKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFN
RQorICAgIGNpdmlsX3RpbWUKKyAgSERSUworICAgICJpbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0
ei9jaXZpbF90aW1lLmgiCisgICAgImludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L2NpdmlsX3Rp
bWVfZGV0YWlsLmgiCisgIFNSQ1MKKyAgImludGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVfZGV0
YWlsLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQogKQogCitpZihBUFBM
RSkKKyAgZmluZF9saWJyYXJ5KENvcmVGb3VuZGF0aW9uIENvcmVGb3VuZGF0aW9uKQorZW5kaWYo
KQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICB0aW1lX3pvbmUKKyAgSERSUworICAg
ICJpbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei90aW1lX3pvbmUuaCIKKyAgICAiaW50ZXJuYWwv
Y2N0ei9pbmNsdWRlL2NjdHovem9uZV9pbmZvX3NvdXJjZS5oIgorICBTUkNTCisgICAgImludGVy
bmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5jYyIKKyAgICAiaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX2ZpeGVkLmgiCisgICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3Jt
YXQuY2MiCisgICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pZi5jYyIKKyAgICAiaW50
ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2lmLmgiCisgICAgImludGVybmFsL2NjdHovc3JjL3Rp
bWVfem9uZV9pbXBsLmNjIgorICAgICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW1wbC5o
IgorICAgICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW5mby5jYyIKKyAgICAiaW50ZXJu
YWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uaCIKKyAgICAiaW50ZXJuYWwvY2N0ei9zcmMvdGlt
ZV96b25lX2xpYmMuY2MiCisgICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmgi
CisgICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9sb29rdXAuY2MiCisgICAgImludGVy
bmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5jYyIKKyAgICAiaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX3Bvc2l4LmgiCisgICAgImludGVybmFsL2NjdHovc3JjL3R6ZmlsZS5oIgorICAg
ICJpbnRlcm5hbC9jY3R6L3NyYy96b25lX2luZm9fc291cmNlLmNjIgorICBDT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgJDwkPFBMQVRGT1JNX0lEOkRhcndpbj46
JHtDb3JlRm91bmRhdGlvbn0+CispCiAKLSMKLSMjIFRFU1RTCi0jCi0KLSMgdGVzdCB0aW1lX3Rl
c3QKLWxpc3QoQVBQRU5EIFRJTUVfVEVTVF9TUkMKLSAgInRpbWVfdGVzdC5jYyIKLSAgImNsb2Nr
X3Rlc3QuY2MiCi0gICJkdXJhdGlvbl90ZXN0LmNjIgotICAiZm9ybWF0X3Rlc3QuY2MiCi0gICJ0
aW1lX25vcm1fdGVzdC5jYyIKLSAgInRpbWVfdGVzdC5jYyIKLSAgInRpbWVfem9uZV90ZXN0LmNj
IgotICAiaW50ZXJuYWwvdGVzdF91dGlsLmNjIgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisg
ICAgdGVzdF91dGlsCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdGVzdF91dGlsLmgiCisgIFNSQ1MK
KyAgICAiaW50ZXJuYWwvdGVzdF91dGlsLmNjIgorICAgICJpbnRlcm5hbC96b25laW5mby5pbmMi
CisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjp0
aW1lCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OnRpbWVfem9uZQorICAgIGdtb2NrCisgIFRF
U1RPTkxZCiApCi1zZXQoVElNRV9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6dGltZSkKIAot
YWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHRpbWVfdGVz
dAotICBTT1VSQ0VTCi0gICAgJHtUSU1FX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0g
ICAgJHtUSU1FX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJjaXZpbF90aW1l
X3Rlc3QuY2MiCisgICAgImNsb2NrX3Rlc3QuY2MiCisgICAgImR1cmF0aW9uX3Rlc3QuY2MiCisg
ICAgImZvcm1hdF90ZXN0LmNjIgorICAgICJ0aW1lX3Rlc3QuY2MiCisgICAgInRpbWVfem9uZV90
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6dGVzdF91dGlsCisgICAgYWJzbDo6dGltZQorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpj
b25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjp0aW1lX3pvbmUKKyAgICBn
bW9ja19tYWluCiApCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvY2l2aWxfdGltZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTI3ZmMxMTc1YzFiMmNhYWZmYWI5
ZWM2YmM1OGI1MjlmZjc0MmFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jaXZpbF90
aW1lLmNjCkBAIC0wLDAgKzEsODMgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC90aW1lL2NpdmlsX3RpbWUuaCIKKworI2luY2x1ZGUg
PGNzdGRsaWI+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0
cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3RpbWUvdGltZS5oIgorCituYW1lc3BhY2UgYWJzbCB7
CisKK25hbWVzcGFjZSB7CisKKy8vIFNpbmNlIGEgY2l2aWwgdGltZSBoYXMgYSBsYXJnZXIgeWVh
ciByYW5nZSB0aGFuIGFic2w6OlRpbWUgKDY0LWJpdCB5ZWFycyB2cworLy8gNjQtYml0IHNlY29u
ZHMsIHJlc3BlY3RpdmVseSkgd2Ugbm9ybWFsaXplIHllYXJzIHRvIHJvdWdobHkgKy8tIDQwMCB5
ZWFycworLy8gYXJvdW5kIHRoZSB5ZWFyIDI0MDAsIHdoaWNoIHdpbGwgcHJvZHVjZSBhbiBlcXVp
dmFsZW50IHllYXIgaW4gYSByYW5nZSB0aGF0CisvLyBhYnNsOjpUaW1lIGNhbiBoYW5kbGUuCitp
bmxpbmUgY2l2aWxfeWVhcl90IE5vcm1hbGl6ZVllYXIoY2l2aWxfeWVhcl90IHllYXIpIHsKKyAg
cmV0dXJuIDI0MDAgKyB5ZWFyICUgNDAwOworfQorCisvLyBGb3JtYXRzIHRoZSBnaXZlbiBDaXZp
bFNlY29uZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1hdC4KK3N0ZDo6c3RyaW5nIEZvcm1h
dFllYXJBbmQoc3RyaW5nX3ZpZXcgZm10LCBDaXZpbFNlY29uZCBjcykgeworICBjb25zdCBDaXZp
bFNlY29uZCBuY3MoTm9ybWFsaXplWWVhcihjcy55ZWFyKCkpLCBjcy5tb250aCgpLCBjcy5kYXko
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNzLmhvdXIoKSwgY3MubWludXRlKCksIGNzLnNl
Y29uZCgpKTsKKyAgY29uc3QgVGltZVpvbmUgdXRjID0gVVRDVGltZVpvbmUoKTsKKyAgLy8gVE9E
TyhhYnNsLXRlYW0pOiBBdm9pZCBjb252ZXJzaW9uIG9mIGZtdCBzdGQ6OnN0cmluZy4KKyAgcmV0
dXJuIFN0ckNhdChjcy55ZWFyKCksCisgICAgICAgICAgICAgICAgRm9ybWF0VGltZShzdGQ6OnN0
cmluZyhmbXQpLCBGcm9tQ2l2aWwobmNzLCB1dGMpLCB1dGMpKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlCisKK3N0ZDo6c3RyaW5nIEZvcm1hdENpdmlsVGltZShDaXZpbFNlY29uZCBjKSB7CisgIHJl
dHVybiBGb3JtYXRZZWFyQW5kKCItJW0tJWRUJUg6JU06JVMiLCBjKTsKK30KK3N0ZDo6c3RyaW5n
IEZvcm1hdENpdmlsVGltZShDaXZpbE1pbnV0ZSBjKSB7CisgIHJldHVybiBGb3JtYXRZZWFyQW5k
KCItJW0tJWRUJUg6JU0iLCBjKTsKK30KK3N0ZDo6c3RyaW5nIEZvcm1hdENpdmlsVGltZShDaXZp
bEhvdXIgYykgeworICByZXR1cm4gRm9ybWF0WWVhckFuZCgiLSVtLSVkVCVIIiwgYyk7Cit9Citz
dGQ6OnN0cmluZyBGb3JtYXRDaXZpbFRpbWUoQ2l2aWxEYXkgYykgeyByZXR1cm4gRm9ybWF0WWVh
ckFuZCgiLSVtLSVkIiwgYyk7IH0KK3N0ZDo6c3RyaW5nIEZvcm1hdENpdmlsVGltZShDaXZpbE1v
bnRoIGMpIHsgcmV0dXJuIEZvcm1hdFllYXJBbmQoIi0lbSIsIGMpOyB9CitzdGQ6OnN0cmluZyBG
b3JtYXRDaXZpbFRpbWUoQ2l2aWxZZWFyIGMpIHsgcmV0dXJuIEZvcm1hdFllYXJBbmQoIiIsIGMp
OyB9CisKK25hbWVzcGFjZSB0aW1lX2ludGVybmFsIHsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYgb3MsIENpdmlsWWVhciB5KSB7CisgIHJldHVybiBvcyA8PCBGb3Jt
YXRDaXZpbFRpbWUoeSk7Cit9CitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFt
JiBvcywgQ2l2aWxNb250aCBtKSB7CisgIHJldHVybiBvcyA8PCBGb3JtYXRDaXZpbFRpbWUobSk7
Cit9CitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgQ2l2aWxEYXkg
ZCkgeworICByZXR1cm4gb3MgPDwgRm9ybWF0Q2l2aWxUaW1lKGQpOworfQorc3RkOjpvc3RyZWFt
JiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIENpdmlsSG91ciBoKSB7CisgIHJldHVybiBv
cyA8PCBGb3JtYXRDaXZpbFRpbWUoaCk7Cit9CitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3Rk
Ojpvc3RyZWFtJiBvcywgQ2l2aWxNaW51dGUgbSkgeworICByZXR1cm4gb3MgPDwgRm9ybWF0Q2l2
aWxUaW1lKG0pOworfQorc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3Ms
IENpdmlsU2Vjb25kIHMpIHsKKyAgcmV0dXJuIG9zIDw8IEZvcm1hdENpdmlsVGltZShzKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlIHRpbWVfaW50ZXJuYWwKKworfSAgLy8gbmFtZXNwYWNlIGFic2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jaXZpbF90
aW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmVhZjdkODk4NTUxOTNiNTdlYjFmYTc4ZDRmMjdhNzhkMmE0NmU0
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZS5oCkBAIC0wLDAgKzEs
NDg1IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogY2l2aWxfdGltZS5oCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyBhYnN0cmFjdGlvbnMg
Zm9yIGNvbXB1dGluZyB3aXRoICJjaXZpbCB0aW1lIi4KKy8vIFRoZSB0ZXJtICJjaXZpbCB0aW1l
IiByZWZlcnMgdG8gdGhlIGxlZ2FsbHkgcmVjb2duaXplZCBodW1hbi1zY2FsZSB0aW1lCisvLyB0
aGF0IGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBzaXggZmllbGRzIGBZWVlZLU1NLUREIGhoOm1tOnNz
YC4gQSAiZGF0ZSIKKy8vIGlzIHBlcmhhcHMgdGhlIG1vc3QgY29tbW9uIGV4YW1wbGUgb2YgYSBj
aXZpbCB0aW1lIChyZXByZXNlbnRlZCBoZXJlIGFzCisvLyBhbiBgYWJzbDo6Q2l2aWxEYXlgKS4K
Ky8vCisvLyBNb2Rlcm4tZGF5IGNpdmlsIHRpbWUgZm9sbG93cyB0aGUgR3JlZ29yaWFuIENhbGVu
ZGFyIGFuZCBpcyBhCisvLyB0aW1lLXpvbmUtaW5kZXBlbmRlbnQgY29uY2VwdDogYSBjaXZpbCB0
aW1lIG9mICIyMDE1LTA2LTAxIDEyOjAwOjAwIiwgZm9yCisvLyBleGFtcGxlLCBpcyBub3QgdGll
ZCB0byBhIHRpbWUgem9uZS4gUHV0IGFub3RoZXIgd2F5LCBhIGNpdmlsIHRpbWUgZG9lcyBub3QK
Ky8vIG1hcCB0byBhIHVuaXF1ZSBwb2ludCBpbiB0aW1lOyBhIGNpdmlsIHRpbWUgbXVzdCBiZSBt
YXBwZWQgdG8gYW4gYWJzb2x1dGUKKy8vIHRpbWUgKnRocm91Z2gqIGEgdGltZSB6b25lLgorLy8K
Ky8vIEJlY2F1c2UgYSBjaXZpbCB0aW1lIGlzIHdoYXQgbW9zdCBwZW9wbGUgdGhpbmsgb2YgYXMg
InRpbWUsIiBpdCBpcyBjb21tb24gdG8KKy8vIG1hcCBhYnNvbHV0ZSB0aW1lcyB0byBjaXZpbCB0
aW1lcyB0byBwcmVzZW50IHRvIHVzZXJzLgorLy8KKy8vIFRpbWUgem9uZXMgZGVmaW5lIHRoZSBy
ZWxhdGlvbnNoaXAgYmV0d2VlbiBhYnNvbHV0ZSBhbmQgY2l2aWwgdGltZXMuIEdpdmVuIGFuCisv
LyBhYnNvbHV0ZSBvciBjaXZpbCB0aW1lIGFuZCBhIHRpbWUgem9uZSwgeW91IGNhbiBjb21wdXRl
IHRoZSBvdGhlciB0aW1lOgorLy8KKy8vICAgQ2l2aWwgVGltZSA9IEYoQWJzb2x1dGUgVGltZSwg
VGltZSBab25lKQorLy8gICBBYnNvbHV0ZSBUaW1lID0gRyhDaXZpbCBUaW1lLCBUaW1lIFpvbmUp
CisvLworLy8gVGhlIEFic2VpbCB0aW1lIGxpYnJhcnkgYWxsb3dzIHlvdSB0byBjb25zdHJ1Y3Qg
c3VjaCBjaXZpbCB0aW1lcyBmcm9tCisvLyBhYnNvbHV0ZSB0aW1lczsgY29uc3VsdCB0aW1lLmgg
Zm9yIHN1Y2ggZnVuY3Rpb25hbGl0eS4KKy8vCisvLyBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgc2l4
IGNsYXNzZXMgZm9yIGNvbnN0cnVjdGluZyBjaXZpbC10aW1lIG9iamVjdHMsIGFuZAorLy8gcHJv
dmlkZXMgc2V2ZXJhbCBoZWxwZXIgZnVuY3Rpb25zIGZvciByb3VuZGluZywgaXRlcmF0aW5nLCBh
bmQgcGVyZm9ybWluZworLy8gYXJpdGhtZXRpYyBvbiBjaXZpbC10aW1lIG9iamVjdHMsIHdoaWxl
IGF2b2lkaW5nIGNvbXBsaWNhdGlvbnMgbGlrZQorLy8gZGF5bGlnaHQtc2F2aW5nIHRpbWUgKERT
VCk6CisvLworLy8gICAqIGBhYnNsOjpDaXZpbFNlY29uZGAKKy8vICAgKiBgYWJzbDo6Q2l2aWxN
aW51dGVgCisvLyAgICogYGFic2w6OkNpdmlsSG91cmAKKy8vICAgKiBgYWJzbDo6Q2l2aWxEYXlg
CisvLyAgICogYGFic2w6OkNpdmlsTW9udGhgCisvLyAgICogYGFic2w6OkNpdmlsWWVhcmAKKy8v
CisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gQ29uc3RydWN0IGEgY2l2aWwtdGltZSBvYmplY3Qg
Zm9yIGEgc3BlY2lmaWMgZGF5CisvLyAgIGNvbnN0IGFic2w6OkNpdmlsRGF5IGNkKDE5NjksIDA3
LCAyMCk7CisvLworLy8gICAvLyBDb25zdHJ1Y3QgYSBjaXZpbC10aW1lIG9iamVjdCBmb3IgYSBz
cGVjaWZpYyBzZWNvbmQKKy8vICAgY29uc3QgYWJzbDo6Q2l2aWxTZWNvbmQgY2QoMjAxOCwgOCwg
MSwgMTIsIDAsIDEpOworLy8KKy8vIE5vdGU6IEluIEMrKzE0IGFuZCBsYXRlciwgdGhpcyBsaWJy
YXJ5IGlzIHVzYWJsZSBpbiBhIGNvbnN0ZXhwciBjb250ZXh0LgorLy8KKy8vIEV4YW1wbGU6Cisv
LworLy8gICAvLyBWYWxpZCBpbiBDKysxNAorLy8gICBjb25zdGV4cHIgYWJzbDo6Q2l2aWxEYXkg
Y2QoMTk2OSwgMDcsIDIwKTsKKworI2lmbmRlZiBBQlNMX1RJTUVfQ0lWSUxfVElNRV9IXworI2Rl
ZmluZSBBQlNMX1RJTUVfQ0lWSUxfVElNRV9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5j
bHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWUuaCIKKworbmFtZXNwYWNlIGFic2wg
eworCituYW1lc3BhY2UgdGltZV9pbnRlcm5hbCB7CitzdHJ1Y3Qgc2Vjb25kX3RhZyA6IGNjdHo6
OmRldGFpbDo6c2Vjb25kX3RhZyB7fTsKK3N0cnVjdCBtaW51dGVfdGFnIDogc2Vjb25kX3RhZywg
Y2N0ejo6ZGV0YWlsOjptaW51dGVfdGFnIHt9Oworc3RydWN0IGhvdXJfdGFnIDogbWludXRlX3Rh
ZywgY2N0ejo6ZGV0YWlsOjpob3VyX3RhZyB7fTsKK3N0cnVjdCBkYXlfdGFnIDogaG91cl90YWcs
IGNjdHo6OmRldGFpbDo6ZGF5X3RhZyB7fTsKK3N0cnVjdCBtb250aF90YWcgOiBkYXlfdGFnLCBj
Y3R6OjpkZXRhaWw6Om1vbnRoX3RhZyB7fTsKK3N0cnVjdCB5ZWFyX3RhZyA6IG1vbnRoX3RhZywg
Y2N0ejo6ZGV0YWlsOjp5ZWFyX3RhZyB7fTsKK30gIC8vIG5hbWVzcGFjZSB0aW1lX2ludGVybmFs
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDaXZpbFNlY29uZCwgQ2l2aWxNaW51dGUs
IENpdmlsSG91ciwgQ2l2aWxEYXksIENpdmlsTW9udGgsIENpdmlsWWVhcgorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBFYWNoIG9mIHRoZXNlIGNpdmlsLXRpbWUgdHlwZXMgaXMgYSBz
aW1wbGUgdmFsdWUgdHlwZSB3aXRoIHRoZSBzYW1lCisvLyBpbnRlcmZhY2UgZm9yIGNvbnN0cnVj
dGlvbiBhbmQgdGhlIHNhbWUgc2l4IGFjY2Vzc29ycyBmb3IgZWFjaCBvZiB0aGUgY2l2aWwKKy8v
IHRpbWUgZmllbGRzICh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIGFuZCBzZWNvbmQs
IGFrYSBZTURITVMpLiBUaGVzZQorLy8gY2xhc3NlcyBkaWZmZXIgb25seSBpbiB0aGVpciBhbGln
bm1lbnQsIHdoaWNoIGlzIGluZGljYXRlZCBieSB0aGUgdHlwZSBuYW1lCisvLyBhbmQgc3BlY2lm
aWVzIHRoZSBmaWVsZCBvbiB3aGljaCBhcml0aG1ldGljIG9wZXJhdGVzLgorLy8KKy8vIENPTlNU
UlVDVElPTgorLy8KKy8vIEVhY2ggb2YgdGhlIGNpdmlsLXRpbWUgdHlwZXMgY2FuIGJlIGNvbnN0
cnVjdGVkIGluIHR3byB3YXlzOiBieSBkaXJlY3RseQorLy8gcGFzc2luZyB0byB0aGUgY29uc3Ry
dWN0b3IgdXAgdG8gc2l4IGludGVnZXJzIHJlcHJlc2VudGluZyB0aGUgWU1ESE1TIGZpZWxkcywK
Ky8vIG9yIGJ5IGNvcHlpbmcgdGhlIFlNREhNUyBmaWVsZHMgZnJvbSBhIGRpZmZlcmVudGx5IGFs
aWduZWQgY2l2aWwtdGltZSB0eXBlLgorLy8gT21pdHRlZCBmaWVsZHMgYXJlIGFzc2lnbmVkIHRo
ZWlyIG1pbmltdW0gdmFsaWQgdmFsdWUuIEhvdXJzLCBtaW51dGVzLCBhbmQKKy8vIHNlY29uZHMg
d2lsbCBiZSBzZXQgdG8gMCwgbW9udGggYW5kIGRheSB3aWxsIGJlIHNldCB0byAxLiBTaW5jZSB0
aGVyZSBpcyBubworLy8gbWluaW11bSB5ZWFyLCB0aGUgZGVmYXVsdCBpcyAxOTcwLgorLy8KKy8v
IEV4YW1wbGVzOgorLy8KKy8vICAgYWJzbDo6Q2l2aWxEYXkgZGVmYXVsdF92YWx1ZTsgICAgICAg
ICAgICAgICAvLyAxOTcwLTAxLTAxIDAwOjAwOjAwCisvLworLy8gICBhYnNsOjpDaXZpbERheSBh
KDIwMTUsIDIsIDMpOyAgICAgICAgICAgICAgIC8vIDIwMTUtMDItMDMgMDA6MDA6MDAKKy8vICAg
YWJzbDo6Q2l2aWxEYXkgYigyMDE1LCAyLCAzLCA0LCA1LCA2KTsgICAgICAvLyAyMDE1LTAyLTAz
IDAwOjAwOjAwCisvLyAgIGFic2w6OkNpdmlsRGF5IGMoMjAxNSk7ICAgICAgICAgICAgICAgICAg
ICAgLy8gMjAxNS0wMS0wMSAwMDowMDowMAorLy8KKy8vICAgYWJzbDo6Q2l2aWxTZWNvbmQgc3Mo
MjAxNSwgMiwgMywgNCwgNSwgNik7ICAvLyAyMDE1LTAyLTAzIDA0OjA1OjA2CisvLyAgIGFic2w6
OkNpdmlsTWludXRlIG1tKHNzKTsgICAgICAgICAgICAgICAgICAgLy8gMjAxNS0wMi0wMyAwNDow
NTowMAorLy8gICBhYnNsOjpDaXZpbEhvdXIgaGgobW0pOyAgICAgICAgICAgICAgICAgICAgIC8v
IDIwMTUtMDItMDMgMDQ6MDA6MDAKKy8vICAgYWJzbDo6Q2l2aWxEYXkgZChoaCk7ICAgICAgICAg
ICAgICAgICAgICAgICAvLyAyMDE1LTAyLTAzIDAwOjAwOjAwCisvLyAgIGFic2w6OkNpdmlsTW9u
dGggbShkKTsgICAgICAgICAgICAgICAgICAgICAgLy8gMjAxNS0wMi0wMSAwMDowMDowMAorLy8g
ICBhYnNsOjpDaXZpbFllYXIgeShtKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIDIwMTUtMDEt
MDEgMDA6MDA6MDAKKy8vCisvLyAgIG0gPSBhYnNsOjpDaXZpbE1vbnRoKHkpOyAgICAgICAgICAg
ICAgICAgICAgLy8gMjAxNS0wMS0wMSAwMDowMDowMAorLy8gICBkID0gYWJzbDo6Q2l2aWxEYXko
bSk7ICAgICAgICAgICAgICAgICAgICAgIC8vIDIwMTUtMDEtMDEgMDA6MDA6MDAKKy8vICAgaGgg
PSBhYnNsOjpDaXZpbEhvdXIoZCk7ICAgICAgICAgICAgICAgICAgICAvLyAyMDE1LTAxLTAxIDAw
OjAwOjAwCisvLyAgIG1tID0gYWJzbDo6Q2l2aWxNaW51dGUoaGgpOyAgICAgICAgICAgICAgICAg
Ly8gMjAxNS0wMS0wMSAwMDowMDowMAorLy8gICBzcyA9IGFic2w6OkNpdmlsU2Vjb25kKG1tKTsg
ICAgICAgICAgICAgICAgIC8vIDIwMTUtMDEtMDEgMDA6MDA6MDAKKy8vCisvLyBFYWNoIGNpdmls
LXRpbWUgY2xhc3MgaXMgYWxpZ25lZCB0byB0aGUgY2l2aWwtdGltZSBmaWVsZCBpbmRpY2F0ZWQg
aW4gdGhlCisvLyBjbGFzcydzIG5hbWUgYWZ0ZXIgbm9ybWFsaXphdGlvbi4gQWxpZ25tZW50IGlz
IHBlcmZvcm1lZCBieSBzZXR0aW5nIGFsbCB0aGUKKy8vIGluZmVyaW9yIGZpZWxkcyB0byB0aGVp
ciBtaW5pbXVtIHZhbGlkIHZhbHVlIChhcyBkZXNjcmliZWQgYWJvdmUpLiBUaGUKKy8vIGZvbGxv
d2luZyBhcmUgZXhhbXBsZXMgb2YgaG93IGVhY2ggb2YgdGhlIHNpeCB0eXBlcyB3b3VsZCBhbGln
biB0aGUgZmllbGRzCisvLyByZXByZXNlbnRpbmcgTm92ZW1iZXIgMjIsIDIwMTUgYXQgMTI6MzQ6
NTYgaW4gdGhlIGFmdGVybm9vbi4gKE5vdGU6IHRoZQorLy8gc3RyaW5nIGZvcm1hdCB1c2VkIGhl
cmUgaXMgbm90IGltcG9ydGFudDsgaXQncyBqdXN0IGEgc2hvcnRoYW5kIHdheSBvZgorLy8gc2hv
d2luZyB0aGUgc2l4IFlNREhNUyBmaWVsZHMuKQorLy8KKy8vICAgYWJzbDo6Q2l2aWxTZWNvbmQg
ICA6IDIwMTUtMTEtMjIgMTI6MzQ6NTYKKy8vICAgYWJzbDo6Q2l2aWxNaW51dGUgICA6IDIwMTUt
MTEtMjIgMTI6MzQ6MDAKKy8vICAgYWJzbDo6Q2l2aWxIb3VyICAgICA6IDIwMTUtMTEtMjIgMTI6
MDA6MDAKKy8vICAgYWJzbDo6Q2l2aWxEYXkgICAgICA6IDIwMTUtMTEtMjIgMDA6MDA6MDAKKy8v
ICAgYWJzbDo6Q2l2aWxNb250aCAgICA6IDIwMTUtMTEtMDEgMDA6MDA6MDAKKy8vICAgYWJzbDo6
Q2l2aWxZZWFyICAgICA6IDIwMTUtMDEtMDEgMDA6MDA6MDAKKy8vCisvLyBFYWNoIGNpdmlsLXRp
bWUgdHlwZSBwZXJmb3JtcyBhcml0aG1ldGljIG9uIHRoZSBmaWVsZCB0byB3aGljaCBpdCBpcwor
Ly8gYWxpZ25lZC4gVGhpcyBtZWFucyB0aGF0IGFkZGluZyAxIHRvIGFuIGFic2w6OkNpdmlsRGF5
IGluY3JlbWVudHMgdGhlIGRheQorLy8gZmllbGQgKG5vcm1hbGl6aW5nIGFzIG5lY2Vzc2FyeSks
IGFuZCBzdWJ0cmFjdGluZyA3IGZyb20gYW4gYWJzbDo6Q2l2aWxNb250aAorLy8gb3BlcmF0ZXMg
b24gdGhlIG1vbnRoIGZpZWxkIChub3JtYWxpemluZyBhcyBuZWNlc3NhcnkpLiBBbGwgYXJpdGht
ZXRpYworLy8gcHJvZHVjZXMgYSB2YWxpZCBjaXZpbCB0aW1lLiBEaWZmZXJlbmNlIHJlcXVpcmVz
IHR3byBzaW1pbGFybHkgYWxpZ25lZAorLy8gY2l2aWwtdGltZSBvYmplY3RzIGFuZCByZXR1cm5z
IHRoZSBzY2FsYXIgYW5zd2VyIGluIHVuaXRzIG9mIHRoZSBvYmplY3RzJworLy8gYWxpZ25tZW50
LiBGb3IgZXhhbXBsZSwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gYWJzbDo6Q2l2aWxIb3Vy
IG9iamVjdHMKKy8vIHdpbGwgZ2l2ZSBhbiBhbnN3ZXIgaW4gdW5pdHMgb2YgY2l2aWwgaG91cnMu
CisvLworLy8gQUxJR05NRU5UIENPTlZFUlNJT04KKy8vCisvLyBUaGUgYWxpZ25tZW50IG9mIGEg
Y2l2aWwtdGltZSBvYmplY3QgY2Fubm90IGNoYW5nZSwgYnV0IHRoZSBvYmplY3QgbWF5IGJlCisv
LyB1c2VkIHRvIGNvbnN0cnVjdCBhIG5ldyBvYmplY3Qgd2l0aCBhIGRpZmZlcmVudCBhbGlnbm1l
bnQuIFRoaXMgaXMgcmVmZXJyZWQKKy8vIHRvIGFzICJyZWFsaWduaW5nIi4gV2hlbiByZWFsaWdu
aW5nIHRvIGEgdHlwZSB3aXRoIHRoZSBzYW1lIG9yIG1vcmUKKy8vIHByZWNpc2lvbiAoZS5nLiwg
YWJzbDo6Q2l2aWxEYXkgLT4gYWJzbDo6Q2l2aWxTZWNvbmQpLCB0aGUgY29udmVyc2lvbiBtYXkg
YmUKKy8vIHBlcmZvcm1lZCBpbXBsaWNpdGx5IHNpbmNlIG5vIGluZm9ybWF0aW9uIGlzIGxvc3Qu
IEhvd2V2ZXIsIGlmIGluZm9ybWF0aW9uCisvLyBjb3VsZCBiZSBkaXNjYXJkZWQgKGUuZy4sIENp
dmlsU2Vjb25kIC0+IENpdmlsRGF5KSwgdGhlIGNvbnZlcnNpb24gbXVzdAorLy8gYmUgZXhwbGlj
aXQgYXQgdGhlIGNhbGwgc2l0ZS4KKy8vCisvLyBFeGFtcGxlczoKKy8vCisvLyAgIHZvaWQgVXNl
RGF5KGFic2w6OkNpdmlsRGF5IGRheSk7CisvLworLy8gICBhYnNsOjpDaXZpbFNlY29uZCBjczsK
Ky8vICAgVXNlRGF5KGNzKTsgICAgICAgICAgICAgICAgICAvLyBXb24ndCBjb21waWxlIGJlY2F1
c2UgZGF0YSBtYXkgYmUgZGlzY2FyZGVkCisvLyAgIFVzZURheShhYnNsOjpDaXZpbERheShjcykp
OyAgLy8gT0s6IGV4cGxpY2l0IGNvbnZlcnNpb24KKy8vCisvLyAgIGFic2w6OkNpdmlsRGF5IGNk
OworLy8gICBVc2VEYXkoY2QpOyAgICAgICAgICAgICAgICAgIC8vIE9LOiBubyBjb252ZXJzaW9u
IG5lZWRlZAorLy8KKy8vICAgYWJzbDo6Q2l2aWxNb250aCBjbTsKKy8vICAgVXNlRGF5KGNtKTsg
ICAgICAgICAgICAgICAgICAvLyBPSzogaW1wbGljaXQgY29udmVyc2lvbiB0byBhYnNsOjpDaXZp
bERheQorLy8KKy8vIE5PUk1BTElaQVRJT04KKy8vCisvLyBOb3JtYWxpemF0aW9uIHRha2VzIGlu
dmFsaWQgdmFsdWVzIGFuZCBhZGp1c3RzIHRoZW0gdG8gcHJvZHVjZSB2YWxpZCB2YWx1ZXMuCisv
LyBXaXRoaW4gdGhlIGNpdmlsLXRpbWUgbGlicmFyeSwgaW50ZWdlciBhcmd1bWVudHMgcGFzc2Vk
IHRvIHRoZSBDaXZpbCoKKy8vIGNvbnN0cnVjdG9ycyBtYXkgYmUgb3V0LW9mLXJhbmdlLCBpbiB3
aGljaCBjYXNlIHRoZXkgYXJlIG5vcm1hbGl6ZWQgYnkKKy8vIGNhcnJ5aW5nIG92ZXJmbG93IGlu
dG8gYSBmaWVsZCBvZiBjb3Vyc2VyIGdyYW51bGFyaXR5IHRvIHByb2R1Y2UgdmFsaWQKKy8vIGNp
dmlsLXRpbWUgb2JqZWN0cy4gVGhpcyBub3JtYWxpemF0aW9uIGVuYWJsZXMgbmF0dXJhbCBhcml0
aG1ldGljIG9uCisvLyBjb25zdHJ1Y3RvciBhcmd1bWVudHMgd2l0aG91dCB3b3JyeWluZyBhYm91
dCB0aGUgZmllbGQncyByYW5nZS4KKy8vCisvLyBFeGFtcGxlczoKKy8vCisvLyAgIC8vIE91dC1v
Zi1yYW5nZTsgbm9ybWFsaXplZCB0byAyMDE2LTExLTAxCisvLyAgIGFic2w6OkNpdmlsRGF5IGQo
MjAxNiwgMTAsIDMyKTsKKy8vICAgLy8gT3V0LW9mLXJhbmdlLCBuZWdhdGl2ZTogbm9ybWFsaXpl
ZCB0byAyMDE2LTEwLTMwVDIzCisvLyAgIGFic2w6OkNpdmlsSG91ciBoMSgyMDE2LCAxMCwgMzEs
IC0xKTsKKy8vICAgLy8gTm9ybWFsaXphdGlvbiBpcyBjdW11bGF0aXZlOiBub3JtYWxpemVkIHRv
IDIwMTYtMTAtMzBUMjMKKy8vICAgYWJzbDo6Q2l2aWxIb3VyIGgyKDIwMTYsIDEwLCAzMiwgLTI1
KTsKKy8vCisvLyBOb3RlOiBJZiBub3JtYWxpemF0aW9uIGlzIHVuZGVzaXJlZCwgeW91IGNhbiBz
aWduYWwgYW4gZXJyb3IgYnkgY29tcGFyaW5nCisvLyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRz
IHRvIHRoZSBub3JtYWxpemVkIHZhbHVlcyByZXR1cm5lZCBieSB0aGUgWU1ESE1TCisvLyBwcm9w
ZXJ0aWVzLgorLy8KKy8vIENPTVBBUklTT04KKy8vCisvLyBDb21wYXJpc29uIGJldHdlZW4gY2l2
aWwtdGltZSBvYmplY3RzIGNvbnNpZGVycyBhbGwgc2l4IFlNREhNUyBmaWVsZHMsCisvLyByZWdh
cmRsZXNzIG9mIHRoZSB0eXBlJ3MgYWxpZ25tZW50LiBDb21wYXJpc29uIGJldHdlZW4gZGlmZmVy
ZW50bHkgYWxpZ25lZAorLy8gY2l2aWwtdGltZSB0eXBlcyBpcyBhbGxvd2VkLgorLy8KKy8vIEV4
YW1wbGVzOgorLy8KKy8vICAgYWJzbDo6Q2l2aWxEYXkgZmViXzMoMjAxNSwgMiwgMyk7ICAvLyAy
MDE1LTAyLTAzIDAwOjAwOjAwCisvLyAgIGFic2w6OkNpdmlsRGF5IG1hcl80KDIwMTUsIDMsIDQp
OyAgLy8gMjAxNS0wMy0wNCAwMDowMDowMAorLy8gICAvLyBmZWJfMyA8IG1hcl80CisvLyAgIC8v
IGFic2w6OkNpdmlsWWVhcihmZWJfMykgPT0gYWJzbDo6Q2l2aWxZZWFyKG1hcl80KQorLy8KKy8v
ICAgYWJzbDo6Q2l2aWxTZWNvbmQgZmViXzNfbm9vbigyMDE1LCAyLCAzLCAxMiwgMCwgMCk7ICAv
LyAyMDE1LTAyLTAzIDEyOjAwOjAwCisvLyAgIC8vIGZlYl8zIDwgZmViXzNfbm9vbgorLy8gICAv
LyBmZWJfMyA9PSBhYnNsOjpDaXZpbERheShmZWJfM19ub29uKQorLy8KKy8vICAgLy8gSXRlcmF0
ZXMgYWxsIHRoZSBkYXlzIG9mIEZlYnJ1YXJ5IDIwMTUuCisvLyAgIGZvciAoYWJzbDo6Q2l2aWxE
YXkgZCgyMDE1LCAyLCAxKTsgZCA8IGFic2w6OkNpdmlsTW9udGgoMjAxNSwgMyk7ICsrZCkgewor
Ly8gICAgIC8vIC4uLgorLy8gICB9CisvLworLy8gQVJJVEhNRVRJQworLy8KKy8vIENpdmlsLXRp
bWUgdHlwZXMgc3VwcG9ydCBuYXR1cmFsIGFyaXRobWV0aWMgb3BlcmF0b3JzIHN1Y2ggYXMgYWRk
aXRpb24sCisvLyBzdWJ0cmFjdGlvbiwgYW5kIGRpZmZlcmVuY2UuIEFyaXRobWV0aWMgb3BlcmF0
ZXMgb24gdGhlIGNpdmlsLXRpbWUgZmllbGQKKy8vIGluZGljYXRlZCBpbiB0aGUgdHlwZSdzIG5h
bWUuIERpZmZlcmVuY2Ugb3BlcmF0b3JzIHJlcXVpcmUgYXJndW1lbnRzIHdpdGgKKy8vIHRoZSBz
YW1lIGFsaWdubWVudCBhbmQgcmV0dXJuIHRoZSBhbnN3ZXIgaW4gdW5pdHMgb2YgdGhlIGFsaWdu
bWVudC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Q2l2aWxEYXkgYSgyMDE1LCAy
LCAzKTsKKy8vICAgKythOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIwMTUtMDIt
MDQgMDA6MDA6MDAKKy8vICAgLS1hOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIw
MTUtMDItMDMgMDA6MDA6MDAKKy8vICAgYWJzbDo6Q2l2aWxEYXkgYiA9IGEgKyAxOyAgICAgICAg
IC8vIDIwMTUtMDItMDQgMDA6MDA6MDAKKy8vICAgYWJzbDo6Q2l2aWxEYXkgYyA9IDEgKyBiOyAg
ICAgICAgIC8vIDIwMTUtMDItMDUgMDA6MDA6MDAKKy8vICAgaW50IG4gPSBjIC0gYTsgICAgICAg
ICAgICAgICAgICAgIC8vIG4gPSAyIChjaXZpbCBkYXlzKQorLy8gICBpbnQgbSA9IGMgLSBhYnNs
OjpDaXZpbE1vbnRoKGMpOyAgLy8gV29uJ3QgY29tcGlsZTogZGlmZmVyZW50IHR5cGVzLgorLy8K
Ky8vIEFDQ0VTU09SUworLy8KKy8vIEVhY2ggY2l2aWwtdGltZSB0eXBlIGhhcyBhY2Nlc3NvcnMg
Zm9yIGFsbCBzaXggb2YgdGhlIGNpdmlsLXRpbWUgZmllbGRzOgorLy8geWVhciwgbW9udGgsIGRh
eSwgaG91ciwgbWludXRlLCBhbmQgc2Vjb25kLgorLy8KKy8vIGNpdmlsX3llYXJfdCB5ZWFyKCkK
Ky8vIGludCAgICAgICAgICBtb250aCgpCisvLyBpbnQgICAgICAgICAgZGF5KCkKKy8vIGludCAg
ICAgICAgICBob3VyKCkKKy8vIGludCAgICAgICAgICBtaW51dGUoKQorLy8gaW50ICAgICAgICAg
IHNlY29uZCgpCisvLworLy8gUmVjYWxsIHRoYXQgZmllbGRzIGluZmVyaW9yIHRvIHRoZSB0eXBl
J3MgYWxpZ21lbnQgd2lsbCBiZSBzZXQgdG8gdGhlaXIKKy8vIG1pbmltdW0gdmFsaWQgdmFsdWUu
CisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkNpdmlsRGF5IGQoMjAxNSwgNiwgMjgp
OworLy8gICAvLyBkLnllYXIoKSA9PSAyMDE1CisvLyAgIC8vIGQubW9udGgoKSA9PSA2CisvLyAg
IC8vIGQuZGF5KCkgPT0gMjgKKy8vICAgLy8gZC5ob3VyKCkgPT0gMAorLy8gICAvLyBkLm1pbnV0
ZSgpID09IDAKKy8vICAgLy8gZC5zZWNvbmQoKSA9PSAwCisvLworLy8gQ0FTRSBTVFVEWTogQWRk
aW5nIGEgbW9udGggdG8gSmFudWFyeSAzMS4KKy8vCisvLyBPbmUgb2YgdGhlIGNsYXNzaWMgcXVl
c3Rpb25zIHRoYXQgYXJpc2VzIHdoZW4gY29uc2lkZXJpbmcgYSBjaXZpbCB0aW1lCisvLyBsaWJy
YXJ5IChvciBhIGRhdGUgbGlicmFyeSBvciBhIGRhdGUvdGltZSBsaWJyYXJ5KSBpcyB0aGlzOgor
Ly8gICAiV2hhdCBpcyB0aGUgcmVzdWx0IG9mIGFkZGluZyBhIG1vbnRoIHRvIEphbnVhcnkgMzE/
IgorLy8gVGhpcyBpcyBhbiBpbnRlcmVzdGluZyBxdWVzdGlvbiBiZWNhdXNlIGl0IGlzIHVuY2xl
YXIgd2hhdCBpcyBtZWFudCBieSBhCisvLyAibW9udGgiLCBhbmQgc2V2ZXJhbCBkaWZmZXJlbnQg
YW5zd2VycyBhcmUgcG9zc2libGUsIGRlcGVuZGluZyBvbiBjb250ZXh0OgorLy8KKy8vICAgMS4g
TWFyY2ggMyAob3IgMiBpZiBhIGxlYXAgeWVhciksIGlmICJhZGQgYSBtb250aCIgbWVhbnMgdG8g
YWRkIGEgbW9udGggdG8KKy8vICAgICAgdGhlIGN1cnJlbnQgbW9udGgsIGFuZCBhZGp1c3QgdGhl
IGRhdGUgdG8gb3ZlcmZsb3cgdGhlIGV4dHJhIGRheXMgaW50bworLy8gICAgICBNYXJjaC4gSW4g
dGhpcyBjYXNlIHRoZSByZXN1bHQgb2YgIkZlYnJ1YXJ5IDMxIiB3b3VsZCBiZSBub3JtYWxpemVk
IGFzCisvLyAgICAgIHdpdGhpbiB0aGUgY2l2aWwtdGltZSBsaWJyYXJ5LgorLy8gICAyLiBGZWJy
dWFyeSAyOCAob3IgMjkgaWYgYSBsZWFwIHllYXIpLCBpZiAiYWRkIGEgbW9udGgiIG1lYW5zIHRv
IGFkZCBhCisvLyAgICAgIG1vbnRoLCBhbmQgYWRqdXN0IHRoZSBkYXRlIHdoaWxlIGhvbGRpbmcg
dGhlIHJlc3VsdGluZyBtb250aCBjb25zdGFudC4KKy8vICAgICAgSW4gdGhpcyBjYXNlLCB0aGUg
cmVzdWx0IG9mICJGZWJydWFyeSAzMSIgd291bGQgYmUgdHJ1bmNhdGVkIHRvIHRoZSBsYXN0Cisv
LyAgICAgIGRheSBpbiBGZWJydWFyeS4KKy8vICAgMy4gQW4gZXJyb3IuIFRoZSBjYWxsZXIgbWF5
IGdldCBzb21lIGVycm9yLCBhbiBleGNlcHRpb24sIGFuIGludmFsaWQgZGF0ZQorLy8gICAgICBv
YmplY3QsIG9yIHBlcmhhcHMgcmV0dXJuIGBmYWxzZWAuIFRoaXMgbWF5IG1ha2Ugc2Vuc2UgYmVj
YXVzZSB0aGVyZSBpcworLy8gICAgICBubyBzaW5nbGUgdW5hbWJpZ3VvdXNseSBjb3JyZWN0IGFu
c3dlciB0byB0aGUgcXVlc3Rpb24uCisvLworLy8gUHJhY3RpY2FsbHkgc3BlYWtpbmcsIGFueSBh
bnN3ZXIgdGhhdCBpcyBub3Qgd2hhdCB0aGUgcHJvZ3JhbW1lciBpbnRlbmRlZAorLy8gaXMgdGhl
IHdyb25nIGFuc3dlci4KKy8vCisvLyBUaGUgQWJzZWlsIHRpbWUgbGlicmFyeSBhdm9pZHMgdGhp
cyBwcm9ibGVtIGJ5IG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvCisvLyBhc2sgYW1iaWd1b3VzIHF1
ZXN0aW9ucy4gQWxsIGNpdmlsLXRpbWUgb2JqZWN0cyBhcmUgYWxpZ25lZCB0byBhIHBhcnRpY3Vs
YXIKKy8vIGNpdmlsLWZpZWxkIGJvdW5kYXJ5IChzdWNoIGFzIGFsaWduZWQgdG8gYSB5ZWFyLCBt
b250aCwgZGF5LCBob3VyLCBtaW51dGUsCisvLyBvciBzZWNvbmQpLCBhbmQgYXJpdGhtZXRpYyBv
cGVyYXRlcyBvbiB0aGUgZmllbGQgdG8gd2hpY2ggdGhlIG9iamVjdCBpcworLy8gYWxpZ25lZC4g
VGhpcyBtZWFucyB0aGF0IGluIG9yZGVyIHRvICJhZGQgYSBtb250aCIgdGhlIG9iamVjdCBtdXN0
IGZpcnN0IGJlCisvLyBhbGlnbmVkIHRvIGEgbW9udGggYm91bmRhcnksIHdoaWNoIGlzIGVxdWl2
YWxlbnQgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGF0CisvLyBtb250aC4KKy8vCisvLyBPZiBjb3Vy
c2UsIHRoZXJlIGFyZSB3YXlzIHRvIGNvbXB1dGUgYW4gYW5zd2VyIHRoZSBxdWVzdGlvbiBhdCBo
YW5kIHVzaW5nCisvLyB0aGlzIEFic2VpbCB0aW1lIGxpYnJhcnksIGJ1dCB0aGV5IHJlcXVpcmUg
dGhlIHByb2dyYW1tZXIgdG8gYmUgZXhwbGljaXQKKy8vIGFib3V0IHRoZSBhbnN3ZXIgdGhleSBl
eHBlY3QuIFRvIGlsbHVzdHJhdGUsIGxldCdzIHNlZSBob3cgdG8gY29tcHV0ZSBhbGwKKy8vIHRo
cmVlIG9mIHRoZSBhYm92ZSBwb3NzaWJsZSBhbnN3ZXJzIHRvIHRoZSBxdWVzdGlvbiBvZiAiSmFu
IDMxIHBsdXMgMQorLy8gbW9udGgiOgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBjb25zdCBh
YnNsOjpDaXZpbERheSBkKDIwMTUsIDEsIDMxKTsKKy8vCisvLyAgIC8vIEFuc3dlciAxOgorLy8g
ICAvLyBBZGQgMSB0byB0aGUgbW9udGggZmllbGQgaW4gdGhlIGNvbnN0cnVjdG9yLCBhbmQgcmVs
eSBvbiBub3JtYWxpemF0aW9uLgorLy8gICBjb25zdCBhdXRvIG5vcm1hbGl6ZWQgPSBhYnNsOjpD
aXZpbERheShkLnllYXIoKSwgZC5tb250aCgpICsgMSwgZC5kYXkoKSk7CisvLyAgIC8vIG5vcm1h
bGl6ZWQgPT0gMjAxNS0wMy0wMyAoYWthIEZlYiAzMSkKKy8vCisvLyAgIC8vIEFuc3dlciAyOgor
Ly8gICAvLyBBZGQgMSB0byBtb250aCBmaWVsZCwgY2FwcGluZyB0byB0aGUgZW5kIG9mIG5leHQg
bW9udGguCisvLyAgIGNvbnN0IGF1dG8gbmV4dF9tb250aCA9IGFic2w6OkNpdmlsTW9udGgoZCkg
KyAxOworLy8gICBjb25zdCBhdXRvIGxhc3RfZGF5X29mX25leHRfbW9udGggPSBhYnNsOjpDaXZp
bERheShuZXh0X21vbnRoICsgMSkgLSAxOworLy8gICBjb25zdCBhdXRvIGNhcHBlZCA9IHN0ZDo6
bWluKG5vcm1hbGl6ZWQsIGxhc3RfZGF5X29mX25leHRfbW9udGgpOworLy8gICAvLyBjYXBwZWQg
PT0gMjAxNS0wMi0yOAorLy8KKy8vICAgLy8gQW5zd2VyIDM6CisvLyAgIC8vIFNpZ25hbCBhbiBl
cnJvciBpZiB0aGUgbm9ybWFsaXplZCBhbnN3ZXIgaXMgbm90IGluIG5leHQgbW9udGguCisvLyAg
IGlmIChhYnNsOjpDaXZpbE1vbnRoKG5vcm1hbGl6ZWQpICE9IG5leHRfbW9udGgpIHsKKy8vICAg
ICAvLyBlcnJvciwgbW9udGggb3ZlcmZsb3cKKy8vICAgfQorLy8KK3VzaW5nIENpdmlsU2Vjb25k
ID0KKyAgICB0aW1lX2ludGVybmFsOjpjY3R6OjpkZXRhaWw6OmNpdmlsX3RpbWU8dGltZV9pbnRl
cm5hbDo6c2Vjb25kX3RhZz47Cit1c2luZyBDaXZpbE1pbnV0ZSA9CisgICAgdGltZV9pbnRlcm5h
bDo6Y2N0ejo6ZGV0YWlsOjpjaXZpbF90aW1lPHRpbWVfaW50ZXJuYWw6Om1pbnV0ZV90YWc+Owor
dXNpbmcgQ2l2aWxIb3VyID0KKyAgICB0aW1lX2ludGVybmFsOjpjY3R6OjpkZXRhaWw6OmNpdmls
X3RpbWU8dGltZV9pbnRlcm5hbDo6aG91cl90YWc+OwordXNpbmcgQ2l2aWxEYXkgPQorICAgIHRp
bWVfaW50ZXJuYWw6OmNjdHo6OmRldGFpbDo6Y2l2aWxfdGltZTx0aW1lX2ludGVybmFsOjpkYXlf
dGFnPjsKK3VzaW5nIENpdmlsTW9udGggPQorICAgIHRpbWVfaW50ZXJuYWw6OmNjdHo6OmRldGFp
bDo6Y2l2aWxfdGltZTx0aW1lX2ludGVybmFsOjptb250aF90YWc+OwordXNpbmcgQ2l2aWxZZWFy
ID0KKyAgICB0aW1lX2ludGVybmFsOjpjY3R6OjpkZXRhaWw6OmNpdmlsX3RpbWU8dGltZV9pbnRl
cm5hbDo6eWVhcl90YWc+OworCisvLyBjaXZpbF95ZWFyX3QKKy8vCisvLyBUeXBlIGFsaWFzIG9m
IGEgY2l2aWwtdGltZSB5ZWFyIHZhbHVlLiBUaGlzIHR5cGUgaXMgZ3VhcmFudGVlZCB0byAoYXQg
bGVhc3QpCisvLyBzdXBwb3J0IGFueSB5ZWFyIHZhbHVlIHN1cHBvcnRlZCBieSBgdGltZV90YC4K
Ky8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Q2l2aWxTZWNvbmQgY3MgPSAuLi47Cisv
LyAgIGFic2w6OmNpdmlsX3llYXJfdCB5ID0gY3MueWVhcigpOworLy8gICBjcyA9IGFic2w6OkNp
dmlsU2Vjb25kKHksIDEsIDEsIDAsIDAsIDApOyAgLy8gQ2l2aWxTZWNvbmQoQ2l2aWxZZWFyKGNz
KSkKKy8vCit1c2luZyBjaXZpbF95ZWFyX3QgPSB0aW1lX2ludGVybmFsOjpjY3R6Ojp5ZWFyX3Q7
CisKKy8vIGNpdmlsX2RpZmZfdAorLy8KKy8vIFR5cGUgYWxpYXMgb2YgdGhlIGRpZmZlcmVuY2Ug
YmV0d2VlbiB0d28gY2l2aWwtdGltZSB2YWx1ZXMuCisvLyBUaGlzIHR5cGUgaXMgdXNlZCB0byBp
bmRpY2F0ZSBhcmd1bWVudHMgdGhhdCBhcmUgbm90CisvLyBub3JtYWxpemVkIChzdWNoIGFzIHBh
cmFtZXRlcnMgdG8gdGhlIGNpdmlsLXRpbWUgY29uc3RydWN0b3JzKSwgdGhlIHJlc3VsdHMKKy8v
IG9mIGNpdmlsLXRpbWUgc3VidHJhY3Rpb24sIG9yIHRoZSBvcGVyYW5kIHRvIGNpdmlsLXRpbWUg
YWRkaXRpb24uCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OmNpdmlsX2RpZmZfdCBu
X3NlYyA9IGNzMSAtIGNzMjsgICAgICAgICAgICAgLy8gY3MxID09IGNzMiArIG5fc2VjOworLy8K
K3VzaW5nIGNpdmlsX2RpZmZfdCA9IHRpbWVfaW50ZXJuYWw6OmNjdHo6OmRpZmZfdDsKKworLy8g
V2Vla2RheTo6bW9uZGF5LCBXZWVrZGF5Ojp0dWVzZGF5LCBXZWVrZGF5Ojp3ZWRuZXNkYXksIFdl
ZWtkYXk6OnRodXJzZGF5LAorLy8gV2Vla2RheTo6ZnJpZGF5LCBXZWVrZGF5OjpzYXR1cmRheSwg
V2Vla2RheTo6c3VuZGF5CisvLworLy8gVGhlIFdlZWtkYXkgZW51bSBjbGFzcyByZXByZXNlbnRz
IHRoZSBjaXZpbC10aW1lIGNvbmNlcHQgb2YgYSAid2Vla2RheSIgd2l0aAorLy8gbWVtYmVycyBm
b3IgYWxsIGRheXMgb2YgdGhlIHdlZWsuCisvLworLy8gICBhYnNsOjpXZWVrZGF5IHdkID0gYWJz
bDo6V2Vla2RheTo6dGh1cnNkYXk7CisvLwordXNpbmcgV2Vla2RheSA9IHRpbWVfaW50ZXJuYWw6
OmNjdHo6OndlZWtkYXk7CisKKy8vIEdldFdlZWtkYXkoKQorLy8KKy8vIFJldHVybnMgdGhlIGFi
c2w6OldlZWtkYXkgZm9yIHRoZSBnaXZlbiAocmVhbGlnbmVkKSBjaXZpbC10aW1lIHZhbHVlLgor
Ly8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhYnNsOjpDaXZpbERheSBhKDIwMTUsIDgsIDEzKTsK
Ky8vICAgYWJzbDo6V2Vla2RheSB3ZCA9IGFic2w6OkdldFdlZWtkYXkoYSk7ICAvLyB3ZCA9PSBh
YnNsOjpXZWVrZGF5Ojp0aHVyc2RheQorLy8KK2lubGluZSBXZWVrZGF5IEdldFdlZWtkYXkoQ2l2
aWxTZWNvbmQgY3MpIHsKKyAgcmV0dXJuIHRpbWVfaW50ZXJuYWw6OmNjdHo6OmdldF93ZWVrZGF5
KGNzKTsKK30KKworLy8gTmV4dFdlZWtkYXkoKQorLy8gUHJldldlZWtkYXkoKQorLy8KKy8vIFJl
dHVybnMgdGhlIGFic2w6OkNpdmlsRGF5IHRoYXQgc3RyaWN0bHkgZm9sbG93cyBvciBwcmVjZWRl
cyBhIGdpdmVuCisvLyBhYnNsOjpDaXZpbERheSwgYW5kIHRoYXQgZmFsbHMgb24gdGhlIGdpdmVu
IGFic2w6OldlZWtkYXkuCisvLworLy8gRXhhbXBsZSwgZ2l2ZW4gdGhlIGZvbGxvd2luZyBtb250
aDoKKy8vCisvLyAgICAgICBBdWd1c3QgMjAxNQorLy8gICBTdSBNbyBUdSBXZSBUaCBGciBTYQor
Ly8gICAgICAgICAgICAgICAgICAgICAgMQorLy8gICAgMiAgMyAgNCAgNSAgNiAgNyAgOAorLy8g
ICAgOSAxMCAxMSAxMiAxMyAxNCAxNQorLy8gICAxNiAxNyAxOCAxOSAyMCAyMSAyMgorLy8gICAy
MyAyNCAyNSAyNiAyNyAyOCAyOQorLy8gICAzMCAzMQorLy8KKy8vICAgYWJzbDo6Q2l2aWxEYXkg
YSgyMDE1LCA4LCAxMyk7CisvLyAgIC8vIGFic2w6OkdldFdlZWtkYXkoYSkgPT0gYWJzbDo6V2Vl
a2RheTo6dGh1cnNkYXkKKy8vICAgYWJzbDo6Q2l2aWxEYXkgYiA9IGFic2w6Ok5leHRXZWVrZGF5
KGEsIGFic2w6OldlZWtkYXk6OnRodXJzZGF5KTsKKy8vICAgLy8gYiA9IDIwMTUtMDgtMjAKKy8v
ICAgYWJzbDo6Q2l2aWxEYXkgYyA9IGFic2w6OlByZXZXZWVrZGF5KGEsIGFic2w6OldlZWtkYXk6
OnRodXJzZGF5KTsKKy8vICAgLy8gYyA9IDIwMTUtMDgtMDYKKy8vCisvLyAgIGFic2w6OkNpdmls
RGF5IGQgPSAuLi4KKy8vICAgLy8gR2V0cyB0aGUgZm9sbG93aW5nIFRodXJzZGF5IGlmIGQgaXMg
bm90IGFscmVhZHkgVGh1cnNkYXkKKy8vICAgYWJzbDo6Q2l2aWxEYXkgdGh1cnMxID0gYWJzbDo6
TmV4dFdlZWtkYXkoZCAtIDEsIGFic2w6OldlZWtkYXk6OnRodXJzZGF5KTsKKy8vICAgLy8gR2V0
cyB0aGUgcHJldmlvdXMgVGh1cnNkYXkgaWYgZCBpcyBub3QgYWxyZWFkeSBUaHVyc2RheQorLy8g
ICBhYnNsOjpDaXZpbERheSB0aHVyczIgPSBhYnNsOjpQcmV2V2Vla2RheShkICsgMSwgYWJzbDo6
V2Vla2RheTo6dGh1cnNkYXkpOworLy8KK2lubGluZSBDaXZpbERheSBOZXh0V2Vla2RheShDaXZp
bERheSBjZCwgV2Vla2RheSB3ZCkgeworICByZXR1cm4gQ2l2aWxEYXkodGltZV9pbnRlcm5hbDo6
Y2N0ejo6bmV4dF93ZWVrZGF5KGNkLCB3ZCkpOworfQoraW5saW5lIENpdmlsRGF5IFByZXZXZWVr
ZGF5KENpdmlsRGF5IGNkLCBXZWVrZGF5IHdkKSB7CisgIHJldHVybiBDaXZpbERheSh0aW1lX2lu
dGVybmFsOjpjY3R6OjpwcmV2X3dlZWtkYXkoY2QsIHdkKSk7Cit9CisKKy8vIEdldFllYXJEYXko
KQorLy8KKy8vIFJldHVybnMgdGhlIGRheS1vZi15ZWFyIGZvciB0aGUgZ2l2ZW4gKHJlYWxpZ25l
ZCkgY2l2aWwtdGltZSB2YWx1ZS4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Q2l2
aWxEYXkgYSgyMDE1LCAxLCAxKTsKKy8vICAgaW50IHlkX2phbl8xID0gYWJzbDo6R2V0WWVhckRh
eShhKTsgICAvLyB5ZF9qYW5fMSA9IDEKKy8vICAgYWJzbDo6Q2l2aWxEYXkgYigyMDE1LCAxMiwg
MzEpOworLy8gICBpbnQgeWRfZGVjXzMxID0gYWJzbDo6R2V0WWVhckRheShiKTsgIC8vIHlkX2Rl
Y18zMSA9IDM2NQorLy8KK2lubGluZSBpbnQgR2V0WWVhckRheShDaXZpbFNlY29uZCBjcykgewor
ICByZXR1cm4gdGltZV9pbnRlcm5hbDo6Y2N0ejo6Z2V0X3llYXJkYXkoY3MpOworfQorCisvLyBG
b3JtYXRDaXZpbFRpbWUoKQorLy8KKy8vIEZvcm1hdHMgdGhlIGdpdmVuIGNpdmlsLXRpbWUgdmFs
dWUgaW50byBhIHN0cmluZyB2YWx1ZSBvZiB0aGUgZm9sbG93aW5nCisvLyBmb3JtYXQ6CisvLwor
Ly8gIFR5cGUgICAgICAgIHwgRm9ybWF0CisvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyAgQ2l2aWxTZWNvbmQgfCBZWVlZLU1NLUREVEhIOk1NOlNTCisvLyAgQ2l2aWxN
aW51dGUgfCBZWVlZLU1NLUREVEhIOk1NCisvLyAgQ2l2aWxIb3VyICAgfCBZWVlZLU1NLUREVEhI
CisvLyAgQ2l2aWxEYXkgICAgfCBZWVlZLU1NLURECisvLyAgQ2l2aWxNb250aCAgfCBZWVlZLU1N
CisvLyAgQ2l2aWxZZWFyICAgfCBZWVlZCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6
OkNpdmlsRGF5IGQgPSBhYnNsOjpDaXZpbERheSgxOTY5LCA3LCAyMCk7CisvLyAgIHN0ZDo6c3Ry
aW5nIGRheV9zdHJpbmcgPSBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoZCk7ICAvLyAiMTk2OS0wNy0y
MCIKKy8vCitzdGQ6OnN0cmluZyBGb3JtYXRDaXZpbFRpbWUoQ2l2aWxTZWNvbmQgYyk7CitzdGQ6
OnN0cmluZyBGb3JtYXRDaXZpbFRpbWUoQ2l2aWxNaW51dGUgYyk7CitzdGQ6OnN0cmluZyBGb3Jt
YXRDaXZpbFRpbWUoQ2l2aWxIb3VyIGMpOworc3RkOjpzdHJpbmcgRm9ybWF0Q2l2aWxUaW1lKENp
dmlsRGF5IGMpOworc3RkOjpzdHJpbmcgRm9ybWF0Q2l2aWxUaW1lKENpdmlsTW9udGggYyk7Citz
dGQ6OnN0cmluZyBGb3JtYXRDaXZpbFRpbWUoQ2l2aWxZZWFyIGMpOworCituYW1lc3BhY2UgdGlt
ZV9pbnRlcm5hbCB7ICAvLyBGb3IgZnVuY3Rpb25zIGZvdW5kIHZpYSBBREwgb24gY2l2aWwtdGlt
ZSB0YWdzLgorCisvLyBTdHJlYW1pbmcgT3BlcmF0b3JzCisvLworLy8gRWFjaCBjaXZpbC10aW1l
IHR5cGUgbWF5IGJlIHNlbnQgdG8gYW4gb3V0cHV0IHN0cmVhbSB1c2luZyBvcGVyYXRvcjw8KCku
CisvLyBUaGUgcmVzdWx0IG1hdGNoZXMgdGhlIHN0cmluZyBwcm9kdWNlZCBieSBgRm9ybWF0Q2l2
aWxUaW1lKClgLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhYnNsOjpDaXZpbERheSBkID0g
YWJzbDo6Q2l2aWxEYXkoIjE5NjktMDctMjAiKTsKKy8vICAgc3RkOjpjb3V0IDw8ICJEYXRlIGlz
OiAiIDw8IGQgPDwgIlxuIjsKKy8vCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3Ry
ZWFtJiBvcywgQ2l2aWxZZWFyIHkpOworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0
cmVhbSYgb3MsIENpdmlsTW9udGggbSk7CitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpv
c3RyZWFtJiBvcywgQ2l2aWxEYXkgZCk7CitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpv
c3RyZWFtJiBvcywgQ2l2aWxIb3VyIGgpOworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6
b3N0cmVhbSYgb3MsIENpdmlsTWludXRlIG0pOworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0
ZDo6b3N0cmVhbSYgb3MsIENpdmlsU2Vjb25kIHMpOworCit9ICAvLyBuYW1lc3BhY2UgdGltZV9p
bnRlcm5hbAorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfVElNRV9D
SVZJTF9USU1FX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2NpdmlsX3RpbWVfYmVuY2htYXJr
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9jaXZpbF90aW1lX2JlbmNobWFyay5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDg2
OTgzNWI3MTQ1ZmY3NTg5YWI5ZDE1MmU3ZDIzOGQyMmEzYWVmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9jaXZpbF90aW1lX2JlbmNobWFyay5jYwpAQCAtMCwwICsxLDEwNyBAQAorLy8g
Q29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3Rp
bWUvY2l2aWxfdGltZS5oIgorCisjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaC5oIgorI2luY2x1ZGUgImJlbmNobWFyay9iZW5j
aG1hcmsuaCIKKworbmFtZXNwYWNlIHsKKworLy8gUnVuIG9uICgxMiBYIDM0OTIgTUh6IENQVXMp
OyAyMDE4LTExLTA1VDEzOjQ0OjI5LjgxNDIzOTEwMy0wODowMAorLy8gQ1BVOiBJbnRlbCBIYXN3
ZWxsIHdpdGggSHlwZXJUaHJlYWRpbmcgKDYgY29yZXMpIGRMMTozMktCIGRMMjoyNTZLQiBkTDM6
MTVNQgorLy8gQmVuY2htYXJrICAgICAgICAgICAgICAgICBUaW1lKG5zKSAgICAgICAgQ1BVKG5z
KSAgICAgSXRlcmF0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQk1fRGlmZmVyZW5jZV9EYXlzICAgICAg
ICAgICAgICAxNC41ICAgICAgICAgICAxNC41ICAgICA0ODUzMTEwNQorLy8gQk1fU3RlcF9EYXlz
ICAgICAgICAgICAgICAgICAgICAxMi42ICAgICAgICAgICAxMi42ICAgICA1NDg3NjAwNgorLy8g
Qk1fRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgIDU4NyAgICAgICAgICAgIDU4NyAgICAgICAg
MTAwMDAwMAorLy8gQk1fUGFyc2UgICAgICAgICAgICAgICAgICAgICAgIDY5MiAgICAgICAgICAg
IDY5MiAgICAgICAgMTAwMDAwMAorLy8gQk1fUm91bmRUcmlwRm9ybWF0UGFyc2UgICAgICAgMTMw
OSAgICAgICAgICAgMTMwOSAgICAgICAgIDUzMjA3NQorLy8gQk1fQ2l2aWxZZWFyQWJzbEhhc2gg
ICAgICAgICAgICAgMC43MTAgICAgICAgICAgMC43MTAgIDk3NjQwMDAwMAorLy8gQk1fQ2l2aWxN
b250aEFic2xIYXNoICAgICAgICAgICAgMS4xMyAgICAgICAgICAgMS4xMyAgIDYxOTUwMDAwMAor
Ly8gQk1fQ2l2aWxEYXlBYnNsSGFzaCAgICAgICAgICAgICAgMS43MCAgICAgICAgICAgMS43MCAg
IDQyNjAwMDAwMAorLy8gQk1fQ2l2aWxIb3VyQWJzbEhhc2ggICAgICAgICAgICAgMi40NSAgICAg
ICAgICAgMi40NSAgIDI4NzYwMDAwMAorLy8gQk1fQ2l2aWxNaW51dGVBYnNsSGFzaCAgICAgICAg
ICAgMy4yMSAgICAgICAgICAgMy4yMSAgIDIyNjIwMDAwMAorLy8gQk1fQ2l2aWxTZWNvbmRBYnNs
SGFzaCAgICAgICAgICAgNC4xMCAgICAgICAgICAgNC4xMCAgIDE3MTgwMDAwMAorCit2b2lkIEJN
X0RpZmZlcmVuY2VfRGF5cyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBjb25zdCBhYnNs
OjpDaXZpbERheSBjKDIwMTQsIDgsIDIyKTsKKyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgZXBvY2go
MTk3MCwgMSwgMSk7CisgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZygpKSB7CisgICAgY29uc3Qg
YWJzbDo6Y2l2aWxfZGlmZl90IG4gPSBjIC0gZXBvY2g7CisgICAgYmVuY2htYXJrOjpEb05vdE9w
dGltaXplKG4pOworICB9Cit9CitCRU5DSE1BUksoQk1fRGlmZmVyZW5jZV9EYXlzKTsKKwordm9p
ZCBCTV9TdGVwX0RheXMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgY29uc3QgYWJzbDo6
Q2l2aWxEYXkga1N0YXJ0KDIwMTQsIDgsIDIyKTsKKyAgYWJzbDo6Q2l2aWxEYXkgYyA9IGtTdGFy
dDsKKyAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nKCkpIHsKKyAgICBiZW5jaG1hcms6OkRvTm90
T3B0aW1pemUoKytjKTsKKyAgfQorfQorQkVOQ0hNQVJLKEJNX1N0ZXBfRGF5cyk7CisKK3ZvaWQg
Qk1fRm9ybWF0KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIGNvbnN0IGFic2w6OkNpdmls
U2Vjb25kIGMoMjAxNCwgMSwgMiwgMywgNCwgNSk7CisgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmlu
ZygpKSB7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9IGFic2w6OkZvcm1hdENpdmlsVGltZShj
KTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocyk7CisgIH0KK30KK0JFTkNITUFSSyhC
TV9Gb3JtYXQpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgQk1fQ2l2aWxUaW1lQWJz
bEhhc2goYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgY29uc3QgaW50IGtTaXplID0gMTAw
MDAwOworICBzdGQ6OnZlY3RvcjxUPiBjaXZpbF90aW1lcyhrU2l6ZSk7CisgIHN0ZDo6aW90YShj
aXZpbF90aW1lcy5iZWdpbigpLCBjaXZpbF90aW1lcy5lbmQoKSwgVCgyMDE4KSk7CisKKyAgYWJz
bDo6SGFzaDxUPiBhYnNsX2hhc2hlcjsKKyAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nQmF0Y2go
a1NpemUpKSB7CisgICAgZm9yIChjb25zdCBUIGNpdmlsX3RpbWUgOiBjaXZpbF90aW1lcykgewor
ICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGFic2xfaGFzaGVyKGNpdmlsX3RpbWUpKTsK
KyAgICB9CisgIH0KK30KK3ZvaWQgQk1fQ2l2aWxZZWFyQWJzbEhhc2goYmVuY2htYXJrOjpTdGF0
ZSYgc3RhdGUpIHsKKyAgQk1fQ2l2aWxUaW1lQWJzbEhhc2g8YWJzbDo6Q2l2aWxZZWFyPihzdGF0
ZSk7Cit9Cit2b2lkIEJNX0NpdmlsTW9udGhBYnNsSGFzaChiZW5jaG1hcms6OlN0YXRlJiBzdGF0
ZSkgeworICBCTV9DaXZpbFRpbWVBYnNsSGFzaDxhYnNsOjpDaXZpbE1vbnRoPihzdGF0ZSk7Cit9
Cit2b2lkIEJNX0NpdmlsRGF5QWJzbEhhc2goYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAg
Qk1fQ2l2aWxUaW1lQWJzbEhhc2g8YWJzbDo6Q2l2aWxEYXk+KHN0YXRlKTsKK30KK3ZvaWQgQk1f
Q2l2aWxIb3VyQWJzbEhhc2goYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgQk1fQ2l2aWxU
aW1lQWJzbEhhc2g8YWJzbDo6Q2l2aWxIb3VyPihzdGF0ZSk7Cit9Cit2b2lkIEJNX0NpdmlsTWlu
dXRlQWJzbEhhc2goYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgQk1fQ2l2aWxUaW1lQWJz
bEhhc2g8YWJzbDo6Q2l2aWxNaW51dGU+KHN0YXRlKTsKK30KK3ZvaWQgQk1fQ2l2aWxTZWNvbmRB
YnNsSGFzaChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBCTV9DaXZpbFRpbWVBYnNsSGFz
aDxhYnNsOjpDaXZpbFNlY29uZD4oc3RhdGUpOworfQorQkVOQ0hNQVJLKEJNX0NpdmlsWWVhckFi
c2xIYXNoKTsKK0JFTkNITUFSSyhCTV9DaXZpbE1vbnRoQWJzbEhhc2gpOworQkVOQ0hNQVJLKEJN
X0NpdmlsRGF5QWJzbEhhc2gpOworQkVOQ0hNQVJLKEJNX0NpdmlsSG91ckFic2xIYXNoKTsKK0JF
TkNITUFSSyhCTV9DaXZpbE1pbnV0ZUFic2xIYXNoKTsKK0JFTkNITUFSSyhCTV9DaXZpbFNlY29u
ZEFic2xIYXNoKTsKKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Np
dmlsX3RpbWVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZV90ZXN0LmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAzY2QxZjEyZDU2MzFkYmRhZWNmYzUzYzc2ZWE2ZGU1NjMyMDVkMjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2NpdmlsX3RpbWVfdGVzdC5jYwpAQCAtMCwwICsxLDEwODUgQEAK
Ky8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJz
bC90aW1lL2NpdmlsX3RpbWUuaCIKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzc3Ry
ZWFtPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jv
cy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK1RFU1QoQ2l2
aWxUaW1lLCBEZWZhdWx0Q29uc3RydWN0aW9uKSB7CisgIGFic2w6OkNpdmlsU2Vjb25kIHNzOwor
ICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDA6MDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUo
c3MpKTsKKworICBhYnNsOjpDaXZpbE1pbnV0ZSBtbTsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAx
VDAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1tKSk7CisKKyAgYWJzbDo6Q2l2aWxIb3Vy
IGhoOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUo
aGgpKTsKKworICBhYnNsOjpDaXZpbERheSBkOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDEiLCBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUoZCkpOworCisgIGFic2w6OkNpdmlsTW9udGggbTsKKyAgRVhQ
RUNUX0VRKCIxOTcwLTAxIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG0pKTsKKworICBhYnNsOjpD
aXZpbFllYXIgeTsKKyAgRVhQRUNUX0VRKCIxOTcwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHkp
KTsKK30KKworVEVTVChDaXZpbFRpbWUsIFN0cnVjdE1lbWJlcikgeworICBzdHJ1Y3QgUyB7Cisg
ICAgYWJzbDo6Q2l2aWxEYXkgZGF5OworICB9OworICBTIHMgPSB7fTsKKyAgRVhQRUNUX0VRKGFi
c2w6OkNpdmlsRGF5e30sIHMuZGF5KTsKK30KKworVEVTVChDaXZpbFRpbWUsIEZpZWxkc0NvbnN0
cnVjdGlvbikgeworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQ6MDUiLAorICAgICAgICAg
ICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsU2Vjb25kKDIwMTUsIDEsIDIsIDMs
IDQsIDUpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNDowMCIsCisgICAgICAgICAg
ICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNSwgMSwgMiwgMywg
NCkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjAwOjAwIiwKKyAgICAgICAgICAgIGFi
c2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFNlY29uZCgyMDE1LCAxLCAyLCAzKSkpOwor
ICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDA6MDA6MDAiLAorICAgICAgICAgICAgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsU2Vjb25kKDIwMTUsIDEsIDIpKSk7CisgIEVYUEVDVF9F
USgiMjAxNS0wMS0wMVQwMDowMDowMCIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRp
bWUoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNSwgMSkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAx
VDAwOjAwOjAwIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZp
bFNlY29uZCgyMDE1KSkpOworCisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNCIsCisgICAg
ICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxNaW51dGUoMjAxNSwgMSwg
MiwgMywgNCwgNSkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0IiwKKyAgICAgICAg
ICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbE1pbnV0ZSgyMDE1LCAxLCAyLCAz
LCA0KSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDAiLAorICAgICAgICAgICAgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsTWludXRlKDIwMTUsIDEsIDIsIDMpKSk7Cisg
IEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMDowMCIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUoYWJzbDo6Q2l2aWxNaW51dGUoMjAxNSwgMSwgMikpKTsKKyAgRVhQRUNUX0VRKCIy
MDE1LTAxLTAxVDAwOjAwIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNs
OjpDaXZpbE1pbnV0ZSgyMDE1LCAxKSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDFUMDA6MDAi
LAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsTWludXRlKDIw
MTUpKSk7CisKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwKKyAgICAgICAgICAgIGFic2w6
OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbEhvdXIoMjAxNSwgMSwgMiwgMywgNCwgNSkpKTsK
KyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENp
dmlsVGltZShhYnNsOjpDaXZpbEhvdXIoMjAxNSwgMSwgMiwgMywgNCkpKTsKKyAgRVhQRUNUX0VR
KCIyMDE1LTAxLTAyVDAzIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNs
OjpDaXZpbEhvdXIoMjAxNSwgMSwgMiwgMykpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAw
IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbEhvdXIoMjAx
NSwgMSwgMikpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxVDAwIiwKKyAgICAgICAgICAgIGFi
c2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbEhvdXIoMjAxNSwgMSkpKTsKKyAgRVhQRUNU
X0VRKCIyMDE1LTAxLTAxVDAwIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShh
YnNsOjpDaXZpbEhvdXIoMjAxNSkpKTsKKworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDIiLAorICAg
ICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsRGF5KDIwMTUsIDEsIDIs
IDMsIDQsIDUpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMiIsCisgICAgICAgICAgICBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxEYXkoMjAxNSwgMSwgMiwgMywgNCkpKTsKKyAg
RVhQRUNUX0VRKCIyMDE1LTAxLTAyIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGlt
ZShhYnNsOjpDaXZpbERheSgyMDE1LCAxLCAyLCAzKSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEt
MDIiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsRGF5KDIw
MTUsIDEsIDIpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMSIsCisgICAgICAgICAgICBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxEYXkoMjAxNSwgMSkpKTsKKyAgRVhQRUNUX0VR
KCIyMDE1LTAxLTAxIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpD
aXZpbERheSgyMDE1KSkpOworCisgIEVYUEVDVF9FUSgiMjAxNS0wMSIsCisgICAgICAgICAgICBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxNb250aCgyMDE1LCAxLCAyLCAzLCA0LCA1
KSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2
aWxUaW1lKGFic2w6OkNpdmlsTW9udGgoMjAxNSwgMSwgMiwgMywgNCkpKTsKKyAgRVhQRUNUX0VR
KCIyMDE1LTAxIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZp
bE1vbnRoKDIwMTUsIDEsIDIsIDMpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMSIsCisgICAgICAg
ICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxNb250aCgyMDE1LCAxLCAyKSkp
OworICBFWFBFQ1RfRVEoIjIwMTUtMDEiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKGFic2w6OkNpdmlsTW9udGgoMjAxNSwgMSkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxIiwK
KyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbE1vbnRoKDIwMTUp
KSk7CisKKyAgRVhQRUNUX0VRKCIyMDE1IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmls
VGltZShhYnNsOjpDaXZpbFllYXIoMjAxNSwgMSwgMiwgMywgNCwgNSkpKTsKKyAgRVhQRUNUX0VR
KCIyMDE1IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFll
YXIoMjAxNSwgMSwgMiwgMywgNCkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1IiwKKyAgICAgICAgICAg
IGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFllYXIoMjAxNSwgMSwgMiwgMykpKTsK
KyAgRVhQRUNUX0VRKCIyMDE1IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShh
YnNsOjpDaXZpbFllYXIoMjAxNSwgMSwgMikpKTsKKyAgRVhQRUNUX0VRKCIyMDE1IiwKKyAgICAg
ICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFllYXIoMjAxNSwgMSkpKTsK
KyAgRVhQRUNUX0VRKCIyMDE1IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShh
YnNsOjpDaXZpbFllYXIoMjAxNSkpKTsKK30KKworVEVTVChDaXZpbFRpbWUsIEZpZWxkc0NvbnN0
cnVjdGlvbkxpbWl0cykgeworICBjb25zdCBpbnQga0ludE1heCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7CisgIEVYUEVDVF9FUSgiMjAzOC0wMS0xOVQwMzoxNDowNyIsCisgICAg
ICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoCisgICAgICAg
ICAgICAgICAgMTk3MCwgMSwgMSwgMCwgMCwga0ludE1heCkpKTsKKyAgRVhQRUNUX0VRKCI2MTIx
LTAyLTExVDA1OjIxOjA3IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNs
OjpDaXZpbFNlY29uZCgKKyAgICAgICAgICAgICAgICAxOTcwLCAxLCAxLCAwLCBrSW50TWF4LCBr
SW50TWF4KSkpOworICBFWFBFQ1RfRVEoIjI1MTEwNC0xMS0yMFQxMjoyMTowNyIsCisgICAgICAg
ICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoCisgICAgICAgICAg
ICAgICAgMTk3MCwgMSwgMSwga0ludE1heCwga0ludE1heCwga0ludE1heCkpKTsKKyAgRVhQRUNU
X0VRKCI2MTMwNzE1LTA1LTMwVDEyOjIxOjA3IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENp
dmlsVGltZShhYnNsOjpDaXZpbFNlY29uZCgKKyAgICAgICAgICAgICAgICAxOTcwLCAxLCBrSW50
TWF4LCBrSW50TWF4LCBrSW50TWF4LCBrSW50TWF4KSkpOworICBFWFBFQ1RfRVEoIjE4NTA4NzY4
NS0xMS0yNlQxMjoyMTowNyIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJz
bDo6Q2l2aWxTZWNvbmQoCisgICAgICAgICAgICAgICAgMTk3MCwga0ludE1heCwga0ludE1heCwg
a0ludE1heCwga0ludE1heCwga0ludE1heCkpKTsKKworICBjb25zdCBpbnQga0ludE1pbiA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7CisgIEVYUEVDVF9FUSgiMTkwMS0xMi0xM1Qy
MDo0NTo1MiIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxT
ZWNvbmQoCisgICAgICAgICAgICAgICAgMTk3MCwgMSwgMSwgMCwgMCwga0ludE1pbikpKTsKKyAg
RVhQRUNUX0VRKCItMjE4Mi0xMS0yMFQxODozNzo1MiIsCisgICAgICAgICAgICBhYnNsOjpGb3Jt
YXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoCisgICAgICAgICAgICAgICAgMTk3MCwgMSwg
MSwgMCwga0ludE1pbiwga0ludE1pbikpKTsKKyAgRVhQRUNUX0VRKCItMjQ3MTY1LTAyLTExVDEw
OjM3OjUyIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFNl
Y29uZCgKKyAgICAgICAgICAgICAgICAxOTcwLCAxLCAxLCBrSW50TWluLCBrSW50TWluLCBrSW50
TWluKSkpOworICBFWFBFQ1RfRVEoIi02MTI2Nzc2LTA4LTAxVDEwOjM3OjUyIiwKKyAgICAgICAg
ICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFNlY29uZCgKKyAgICAgICAgICAg
ICAgICAxOTcwLCAxLCBrSW50TWluLCBrSW50TWluLCBrSW50TWluLCBrSW50TWluKSkpOworICBF
WFBFQ1RfRVEoIi0xODUwODM3NDctMTAtMzFUMTA6Mzc6NTIiLAorICAgICAgICAgICAgYWJzbDo6
Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsU2Vjb25kKAorICAgICAgICAgICAgICAgIDE5NzAs
IGtJbnRNaW4sIGtJbnRNaW4sIGtJbnRNaW4sIGtJbnRNaW4sIGtJbnRNaW4pKSk7Cit9CisKK1RF
U1QoQ2l2aWxUaW1lLCBSYW5nZUxpbWl0cykgeworICBjb25zdCBhYnNsOjpjaXZpbF95ZWFyX3Qg
a1llYXJNYXggPQorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxhYnNsOjpjaXZpbF95ZWFyX3Q+
OjptYXgoKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsWWVhcihrWWVhck1heCksCisgICAgICAg
ICAgICBhYnNsOjpDaXZpbFllYXI6Om1heCgpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsTW9u
dGgoa1llYXJNYXgsIDEyKSwKKyAgICAgICAgICAgIGFic2w6OkNpdmlsTW9udGg6Om1heCgpKTsK
KyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsRGF5KGtZZWFyTWF4LCAxMiwgMzEpLAorICAgICAgICAg
ICAgYWJzbDo6Q2l2aWxEYXk6Om1heCgpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsSG91cihr
WWVhck1heCwgMTIsIDMxLCAyMyksCisgICAgICAgICAgICBhYnNsOjpDaXZpbEhvdXI6Om1heCgp
KTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsTWludXRlKGtZZWFyTWF4LCAxMiwgMzEsIDIzLCA1
OSksCisgICAgICAgICAgICBhYnNsOjpDaXZpbE1pbnV0ZTo6bWF4KCkpOworICBFWFBFQ1RfRVEo
YWJzbDo6Q2l2aWxTZWNvbmQoa1llYXJNYXgsIDEyLCAzMSwgMjMsIDU5LCA1OSksCisgICAgICAg
ICAgICBhYnNsOjpDaXZpbFNlY29uZDo6bWF4KCkpOworCisgIGNvbnN0IGFic2w6OmNpdmlsX3ll
YXJfdCBrWWVhck1pbiA9CisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGFic2w6OmNpdmlsX3ll
YXJfdD46Om1pbigpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxZZWFyKGtZZWFyTWluKSwKKyAg
ICAgICAgICAgIGFic2w6OkNpdmlsWWVhcjo6bWluKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2
aWxNb250aChrWWVhck1pbiwgMSksCisgICAgICAgICAgICBhYnNsOjpDaXZpbE1vbnRoOjptaW4o
KSk7CisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbERheShrWWVhck1pbiwgMSwgMSksCisgICAgICAg
ICAgICBhYnNsOjpDaXZpbERheTo6bWluKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxIb3Vy
KGtZZWFyTWluLCAxLCAxLCAwKSwKKyAgICAgICAgICAgIGFic2w6OkNpdmlsSG91cjo6bWluKCkp
OworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxNaW51dGUoa1llYXJNaW4sIDEsIDEsIDAsIDApLAor
ICAgICAgICAgICAgYWJzbDo6Q2l2aWxNaW51dGU6Om1pbigpKTsKKyAgRVhQRUNUX0VRKGFic2w6
OkNpdmlsU2Vjb25kKGtZZWFyTWluLCAxLCAxLCAwLCAwLCAwKSwKKyAgICAgICAgICAgIGFic2w6
OkNpdmlsU2Vjb25kOjptaW4oKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBJbXBsaWNpdENyb3Nz
QWxpZ25tZW50KSB7CisgIGFic2w6OkNpdmlsWWVhciB5ZWFyKDIwMTUpOworICBhYnNsOjpDaXZp
bE1vbnRoIG1vbnRoID0geWVhcjsKKyAgYWJzbDo6Q2l2aWxEYXkgZGF5ID0gbW9udGg7CisgIGFi
c2w6OkNpdmlsSG91ciBob3VyID0gZGF5OworICBhYnNsOjpDaXZpbE1pbnV0ZSBtaW51dGUgPSBo
b3VyOworICBhYnNsOjpDaXZpbFNlY29uZCBzZWNvbmQgPSBtaW51dGU7CisKKyAgc2Vjb25kID0g
eWVhcjsKKyAgRVhQRUNUX0VRKHNlY29uZCwgeWVhcik7CisgIHNlY29uZCA9IG1vbnRoOworICBF
WFBFQ1RfRVEoc2Vjb25kLCBtb250aCk7CisgIHNlY29uZCA9IGRheTsKKyAgRVhQRUNUX0VRKHNl
Y29uZCwgZGF5KTsKKyAgc2Vjb25kID0gaG91cjsKKyAgRVhQRUNUX0VRKHNlY29uZCwgaG91cik7
CisgIHNlY29uZCA9IG1pbnV0ZTsKKyAgRVhQRUNUX0VRKHNlY29uZCwgbWludXRlKTsKKworICBt
aW51dGUgPSB5ZWFyOworICBFWFBFQ1RfRVEobWludXRlLCB5ZWFyKTsKKyAgbWludXRlID0gbW9u
dGg7CisgIEVYUEVDVF9FUShtaW51dGUsIG1vbnRoKTsKKyAgbWludXRlID0gZGF5OworICBFWFBF
Q1RfRVEobWludXRlLCBkYXkpOworICBtaW51dGUgPSBob3VyOworICBFWFBFQ1RfRVEobWludXRl
LCBob3VyKTsKKworICBob3VyID0geWVhcjsKKyAgRVhQRUNUX0VRKGhvdXIsIHllYXIpOworICBo
b3VyID0gbW9udGg7CisgIEVYUEVDVF9FUShob3VyLCBtb250aCk7CisgIGhvdXIgPSBkYXk7Cisg
IEVYUEVDVF9FUShob3VyLCBkYXkpOworCisgIGRheSA9IHllYXI7CisgIEVYUEVDVF9FUShkYXks
IHllYXIpOworICBkYXkgPSBtb250aDsKKyAgRVhQRUNUX0VRKGRheSwgbW9udGgpOworCisgIG1v
bnRoID0geWVhcjsKKyAgRVhQRUNUX0VRKG1vbnRoLCB5ZWFyKTsKKworICAvLyBFbnN1cmVzIHVu
c2FmZSBjb252ZXJzaW9ucyBhcmUgbm90IGFsbG93ZWQuCisgIEVYUEVDVF9GQUxTRSgKKyAgICAg
IChzdGQ6OmlzX2NvbnZlcnRpYmxlPGFic2w6OkNpdmlsU2Vjb25kLCBhYnNsOjpDaXZpbE1pbnV0
ZT46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxl
PGFic2w6OkNpdmlsU2Vjb25kLCBhYnNsOjpDaXZpbEhvdXI+Ojp2YWx1ZSkpOworICBFWFBFQ1Rf
RkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbFNlY29uZCwgYWJz
bDo6Q2l2aWxEYXk+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19j
b252ZXJ0aWJsZTxhYnNsOjpDaXZpbFNlY29uZCwgYWJzbDo6Q2l2aWxNb250aD46OnZhbHVlKSk7
CisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxlPGFic2w6OkNpdmls
U2Vjb25kLCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1ZSkpOworCisgIEVYUEVDVF9GQUxTRSgKKyAg
ICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxlPGFic2w6OkNpdmlsTWludXRlLCBhYnNsOjpDaXZpbEhv
dXI+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJs
ZTxhYnNsOjpDaXZpbE1pbnV0ZSwgYWJzbDo6Q2l2aWxEYXk+Ojp2YWx1ZSkpOworICBFWFBFQ1Rf
RkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbE1pbnV0ZSwgYWJz
bDo6Q2l2aWxNb250aD46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIChzdGQ6Omlz
X2NvbnZlcnRpYmxlPGFic2w6OkNpdmlsTWludXRlLCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1ZSkp
OworCisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxlPGFic2w6OkNp
dmlsSG91ciwgYWJzbDo6Q2l2aWxEYXk+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAg
ICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbEhvdXIsIGFic2w6OkNpdmlsTW9udGg+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxh
YnNsOjpDaXZpbEhvdXIsIGFic2w6OkNpdmlsWWVhcj46OnZhbHVlKSk7CisKKyAgRVhQRUNUX0ZB
TFNFKAorICAgICAgKHN0ZDo6aXNfY29udmVydGlibGU8YWJzbDo6Q2l2aWxEYXksIGFic2w6OkNp
dmlsTW9udGg+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252
ZXJ0aWJsZTxhYnNsOjpDaXZpbERheSwgYWJzbDo6Q2l2aWxZZWFyPjo6dmFsdWUpKTsKKworICBF
WFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbE1vbnRo
LCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1ZSkpOworfQorCitURVNUKENpdmlsVGltZSwgRXhwbGlj
aXRDcm9zc0FsaWdubWVudCkgeworICAvLworICAvLyBBc3NpZ24gZnJvbSBzbWFsbGVyIHVuaXRz
IC0+IGxhcmdlciB1bml0cworICAvLworCisgIGFic2w6OkNpdmlsU2Vjb25kIHNlY29uZCgyMDE1
LCAxLCAyLCAzLCA0LCA1KTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0OjA1IiwgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKHNlY29uZCkpOworCisgIGFic2w6OkNpdmlsTWludXRlIG1pbnV0
ZShzZWNvbmQpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUobWludXRlKSk7CisKKyAgYWJzbDo6Q2l2aWxIb3VyIGhvdXIobWludXRlKTsKKyAg
RVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGhvdXIpKTsK
KworICBhYnNsOjpDaXZpbERheSBkYXkoaG91cik7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMiIs
IGFic2w6OkZvcm1hdENpdmlsVGltZShkYXkpKTsKKworICBhYnNsOjpDaXZpbE1vbnRoIG1vbnRo
KGRheSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtb250
aCkpOworCisgIGFic2w6OkNpdmlsWWVhciB5ZWFyKG1vbnRoKTsKKyAgRVhQRUNUX0VRKCIyMDE1
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHllYXIpKTsKKworICAvLworICAvLyBOb3cgYXNzaWdu
IGZyb20gbGFyZ2VyIHVuaXRzIC0+IHNtYWxsZXIgdW5pdHMKKyAgLy8KKworICBtb250aCA9IGFi
c2w6OkNpdmlsTW9udGgoeWVhcik7CisgIEVYUEVDVF9FUSgiMjAxNS0wMSIsIGFic2w6OkZvcm1h
dENpdmlsVGltZShtb250aCkpOworCisgIGRheSA9IGFic2w6OkNpdmlsRGF5KG1vbnRoKTsKKyAg
RVhQRUNUX0VRKCIyMDE1LTAxLTAxIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGRheSkpOworCisg
IGhvdXIgPSBhYnNsOjpDaXZpbEhvdXIoZGF5KTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxVDAw
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGhvdXIpKTsKKworICBtaW51dGUgPSBhYnNsOjpDaXZp
bE1pbnV0ZShob3VyKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxVDAwOjAwIiwgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKG1pbnV0ZSkpOworCisgIHNlY29uZCA9IGFic2w6OkNpdmlsU2Vjb25kKG1p
bnV0ZSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMVQwMDowMDowMCIsIGFic2w6OkZvcm1hdENp
dmlsVGltZShzZWNvbmQpKTsKK30KKworLy8gTWV0YWZ1bmN0aW9uIHRvIHRlc3Qgd2hldGhlciBk
aWZmZXJlbmNlIGlzIGFsbG93ZWQgYmV0d2VlbiB0d28gdHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IEhhc0RpZmYgeworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVTEsIHR5cGVuYW1lIFUyPgorICBzdGF0aWMgc3RkOjpmYWxzZV90eXBlIHRlc3QoLi4uKTsK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KKyAgc3RhdGljIHN0ZDo6dHJ1
ZV90eXBlIHRlc3QoZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFUxPigpIC0gc3RkOjpkZWNsdmFsPFUy
PigpKSk7CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IGRlY2x0eXBlKHRlc3Q8VDEs
IFQyPigwKSk6OnZhbHVlOworfTsKKworVEVTVChDaXZpbFRpbWUsIERpc2FsbG93Q3Jvc3NBbGln
bmVkRGlmZmVyZW5jZSkgeworICAvLyBEaWZmZXJlbmNlIGlzIGFsbG93ZWQgYmV0d2VlbiB0eXBl
cyB3aXRoIHRoZSBzYW1lIGFsaWdubWVudC4KKyAgc3RhdGljX2Fzc2VydChIYXNEaWZmPGFic2w6
OkNpdmlsU2Vjb25kLCBhYnNsOjpDaXZpbFNlY29uZD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19h
c3NlcnQoSGFzRGlmZjxhYnNsOjpDaXZpbE1pbnV0ZSwgYWJzbDo6Q2l2aWxNaW51dGU+Ojp2YWx1
ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KEhhc0RpZmY8YWJzbDo6Q2l2aWxIb3VyLCBhYnNsOjpD
aXZpbEhvdXI+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KEhhc0RpZmY8YWJzbDo6Q2l2
aWxEYXksIGFic2w6OkNpdmlsRGF5Pjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChIYXNE
aWZmPGFic2w6OkNpdmlsTW9udGgsIGFic2w6OkNpdmlsTW9udGg+Ojp2YWx1ZSwgIiIpOworICBz
dGF0aWNfYXNzZXJ0KEhhc0RpZmY8YWJzbDo6Q2l2aWxZZWFyLCBhYnNsOjpDaXZpbFllYXI+Ojp2
YWx1ZSwgIiIpOworCisgIC8vIERpZmZlcmVuY2UgaXMgZGlzYWxsb3dlZCBiZXR3ZWVuIHR5cGVz
IHdpdGggZGlmZmVyZW50IGFsaWdubWVudHMuCisgIHN0YXRpY19hc3NlcnQoIUhhc0RpZmY8YWJz
bDo6Q2l2aWxTZWNvbmQsIGFic2w6OkNpdmlsTWludXRlPjo6dmFsdWUsICIiKTsKKyAgc3RhdGlj
X2Fzc2VydCghSGFzRGlmZjxhYnNsOjpDaXZpbFNlY29uZCwgYWJzbDo6Q2l2aWxIb3VyPjo6dmFs
dWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghSGFzRGlmZjxhYnNsOjpDaXZpbFNlY29uZCwgYWJz
bDo6Q2l2aWxEYXk+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KCFIYXNEaWZmPGFic2w6
OkNpdmlsU2Vjb25kLCBhYnNsOjpDaXZpbE1vbnRoPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fz
c2VydCghSGFzRGlmZjxhYnNsOjpDaXZpbFNlY29uZCwgYWJzbDo6Q2l2aWxZZWFyPjo6dmFsdWUs
ICIiKTsKKworICBzdGF0aWNfYXNzZXJ0KCFIYXNEaWZmPGFic2w6OkNpdmlsTWludXRlLCBhYnNs
OjpDaXZpbEhvdXI+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KCFIYXNEaWZmPGFic2w6
OkNpdmlsTWludXRlLCBhYnNsOjpDaXZpbERheT46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3Nl
cnQoIUhhc0RpZmY8YWJzbDo6Q2l2aWxNaW51dGUsIGFic2w6OkNpdmlsTW9udGg+Ojp2YWx1ZSwg
IiIpOworICBzdGF0aWNfYXNzZXJ0KCFIYXNEaWZmPGFic2w6OkNpdmlsTWludXRlLCBhYnNsOjpD
aXZpbFllYXI+Ojp2YWx1ZSwgIiIpOworCisgIHN0YXRpY19hc3NlcnQoIUhhc0RpZmY8YWJzbDo6
Q2l2aWxIb3VyLCBhYnNsOjpDaXZpbERheT46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQo
IUhhc0RpZmY8YWJzbDo6Q2l2aWxIb3VyLCBhYnNsOjpDaXZpbE1vbnRoPjo6dmFsdWUsICIiKTsK
KyAgc3RhdGljX2Fzc2VydCghSGFzRGlmZjxhYnNsOjpDaXZpbEhvdXIsIGFic2w6OkNpdmlsWWVh
cj46OnZhbHVlLCAiIik7CisKKyAgc3RhdGljX2Fzc2VydCghSGFzRGlmZjxhYnNsOjpDaXZpbERh
eSwgYWJzbDo6Q2l2aWxNb250aD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoIUhhc0Rp
ZmY8YWJzbDo6Q2l2aWxEYXksIGFic2w6OkNpdmlsWWVhcj46OnZhbHVlLCAiIik7CisKKyAgc3Rh
dGljX2Fzc2VydCghSGFzRGlmZjxhYnNsOjpDaXZpbE1vbnRoLCBhYnNsOjpDaXZpbFllYXI+Ojp2
YWx1ZSwgIiIpOworfQorCitURVNUKENpdmlsVGltZSwgVmFsdWVTZW1hbnRpY3MpIHsKKyAgY29u
c3QgYWJzbDo6Q2l2aWxIb3VyIGEoMjAxNSwgMSwgMiwgMyk7CisgIGNvbnN0IGFic2w6OkNpdmls
SG91ciBiID0gYTsKKyAgY29uc3QgYWJzbDo6Q2l2aWxIb3VyIGMoYik7CisgIGFic2w6OkNpdmls
SG91ciBkOworICBkID0gYzsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKGQpKTsKK30KKworVEVTVChDaXZpbFRpbWUsIFJlbGF0aW9uYWwpIHsKKyAg
Ly8gVGVzdHMgdGhhdCB0aGUgYWxpZ25tZW50IHVuaXQgaXMgaWdub3JlZCBpbiBjb21wYXJpc29u
LgorICBjb25zdCBhYnNsOjpDaXZpbFllYXIgeWVhcigyMDE0KTsKKyAgY29uc3QgYWJzbDo6Q2l2
aWxNb250aCBtb250aCh5ZWFyKTsKKyAgRVhQRUNUX0VRKHllYXIsIG1vbnRoKTsKKworI2RlZmlu
ZSBURVNUX1JFTEFUSU9OQUwoT0xERVIsIFlPVU5HRVIpIFwKKyAgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZBTFNFKE9MREVSIDwgT0xERVIpOyAg
ICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShPTERFUiA+IE9MREVSKTsgICAgICAgIFwKKyAgICBF
WFBFQ1RfVFJVRShPTERFUiA+PSBPTERFUik7ICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUoT0xE
RVIgPD0gT0xERVIpOyAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShZT1VOR0VSIDwgWU9VTkdF
Uik7ICAgIFwKKyAgICBFWFBFQ1RfRkFMU0UoWU9VTkdFUiA+IFlPVU5HRVIpOyAgICBcCisgICAg
RVhQRUNUX1RSVUUoWU9VTkdFUiA+PSBZT1VOR0VSKTsgICAgXAorICAgIEVYUEVDVF9UUlVFKFlP
VU5HRVIgPD0gWU9VTkdFUik7ICAgIFwKKyAgICBFWFBFQ1RfRVEoT0xERVIsIE9MREVSKTsgICAg
ICAgICAgICBcCisgICAgRVhQRUNUX05FKE9MREVSLCBZT1VOR0VSKTsgICAgICAgICAgXAorICAg
IEVYUEVDVF9MVChPTERFUiwgWU9VTkdFUik7ICAgICAgICAgIFwKKyAgICBFWFBFQ1RfTEUoT0xE
RVIsIFlPVU5HRVIpOyAgICAgICAgICBcCisgICAgRVhQRUNUX0dUKFlPVU5HRVIsIE9MREVSKTsg
ICAgICAgICAgXAorICAgIEVYUEVDVF9HRShZT1VOR0VSLCBPTERFUik7ICAgICAgICAgIFwKKyAg
fSB3aGlsZSAoMCkKKworICAvLyBBbGlnbm1lbnQgaXMgaWdub3JlZCBpbiBjb21wYXJpc29uICh2
ZXJpZmllZCBhYm92ZSksIHNvIENpdmlsU2Vjb25kIGlzCisgIC8vIHVzZWQgdG8gdGVzdCBjb21w
YXJpc29uIGluIGFsbCBmaWVsZCBwb3NpdGlvbnMuCisgIFRFU1RfUkVMQVRJT05BTChhYnNsOjpD
aXZpbFNlY29uZCgyMDE0LCAxLCAxLCAwLCAwLCAwKSwKKyAgICAgICAgICAgICAgICAgIGFic2w6
OkNpdmlsU2Vjb25kKDIwMTUsIDEsIDEsIDAsIDAsIDApKTsKKyAgVEVTVF9SRUxBVElPTkFMKGFi
c2w6OkNpdmlsU2Vjb25kKDIwMTQsIDEsIDEsIDAsIDAsIDApLAorICAgICAgICAgICAgICAgICAg
YWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMiwgMSwgMCwgMCwgMCkpOworICBURVNUX1JFTEFUSU9O
QUwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMSwgMSwgMCwgMCwgMCksCisgICAgICAgICAgICAg
ICAgICBhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCAyLCAwLCAwLCAwKSk7CisgIFRFU1RfUkVM
QVRJT05BTChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCAxLCAwLCAwLCAwKSwKKyAgICAgICAg
ICAgICAgICAgIGFic2w6OkNpdmlsU2Vjb25kKDIwMTQsIDEsIDEsIDEsIDAsIDApKTsKKyAgVEVT
VF9SRUxBVElPTkFMKGFic2w6OkNpdmlsU2Vjb25kKDIwMTQsIDEsIDEsIDEsIDAsIDApLAorICAg
ICAgICAgICAgICAgICAgYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMSwgMSwgMSwgMSwgMCkpOwor
ICBURVNUX1JFTEFUSU9OQUwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMSwgMSwgMSwgMSwgMCks
CisgICAgICAgICAgICAgICAgICBhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCAxLCAxLCAxLCAx
KSk7CisKKyAgLy8gVGVzdHMgdGhlIHJlbGF0aW9uYWwgb3BlcmF0b3JzIG9mIHR3byBkaWZmZXJl
bnQgY2l2aWwtdGltZSB0eXBlcy4KKyAgVEVTVF9SRUxBVElPTkFMKGFic2w6OkNpdmlsRGF5KDIw
MTQsIDEsIDEpLAorICAgICAgICAgICAgICAgICAgYWJzbDo6Q2l2aWxNaW51dGUoMjAxNCwgMSwg
MSwgMSwgMSkpOworICBURVNUX1JFTEFUSU9OQUwoYWJzbDo6Q2l2aWxEYXkoMjAxNCwgMSwgMSks
CisgICAgICAgICAgICAgICAgICBhYnNsOjpDaXZpbE1vbnRoKDIwMTQsIDIpKTsKKworI3VuZGVm
IFRFU1RfUkVMQVRJT05BTAorfQorCitURVNUKENpdmlsVGltZSwgQXJpdGhtZXRpYykgeworICBh
YnNsOjpDaXZpbFNlY29uZCBzZWNvbmQoMjAxNSwgMSwgMiwgMywgNCwgNSk7CisgIEVYUEVDVF9F
USgiMjAxNS0wMS0wMlQwMzowNDowNiIsIGFic2w6OkZvcm1hdENpdmlsVGltZShzZWNvbmQgKz0g
MSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQ6MDciLCBhYnNsOjpGb3JtYXRDaXZp
bFRpbWUoc2Vjb25kICsgMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQ6MDgiLCBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUoMiArIHNlY29uZCkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEt
MDJUMDM6MDQ6MDUiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc2Vjb25kIC0gMSkpOworICBFWFBF
Q1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQ6MDUiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc2Vjb25k
IC09IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0OjA1IiwgYWJzbDo6Rm9ybWF0
Q2l2aWxUaW1lKHNlY29uZCsrKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNDowNyIs
IGFic2w6OkZvcm1hdENpdmlsVGltZSgrK3NlY29uZCkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEt
MDJUMDM6MDQ6MDciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc2Vjb25kLS0pKTsKKyAgRVhQRUNU
X0VRKCIyMDE1LTAxLTAyVDAzOjA0OjA1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKC0tc2Vjb25k
KSk7CisKKyAgYWJzbDo6Q2l2aWxNaW51dGUgbWludXRlKDIwMTUsIDEsIDIsIDMsIDQpOworICBF
WFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDUiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobWludXRl
ICs9IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA2IiwgYWJzbDo6Rm9ybWF0Q2l2
aWxUaW1lKG1pbnV0ZSArIDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA3IiwgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKDIgKyBtaW51dGUpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAy
VDAzOjA0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1pbnV0ZSAtIDEpKTsKKyAgRVhQRUNUX0VR
KCIyMDE1LTAxLTAyVDAzOjA0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1pbnV0ZSAtPSAxKSk7
CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZSht
aW51dGUrKykpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDYiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUoKyttaW51dGUpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA2IiwgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKG1pbnV0ZS0tKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQw
MzowNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZSgtLW1pbnV0ZSkpOworCisgIGFic2w6OkNpdmls
SG91ciBob3VyKDIwMTUsIDEsIDIsIDMpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDQiLCBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUoaG91ciArPSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0w
MlQwNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShob3VyICsgMSkpOworICBFWFBFQ1RfRVEoIjIw
MTUtMDEtMDJUMDYiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoMiArIGhvdXIpKTsKKyAgRVhQRUNU
X0VRKCIyMDE1LTAxLTAyVDAzIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGhvdXIgLSAxKSk7Cisg
IEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMyIsIGFic2w6OkZvcm1hdENpdmlsVGltZShob3VyIC09
IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1l
KGhvdXIrKykpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDUiLCBhYnNsOjpGb3JtYXRDaXZp
bFRpbWUoKytob3VyKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwNSIsIGFic2w6OkZvcm1h
dENpdmlsVGltZShob3VyLS0pKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzIiwgYWJzbDo6
Rm9ybWF0Q2l2aWxUaW1lKC0taG91cikpOworCisgIGFic2w6OkNpdmlsRGF5IGRheSgyMDE1LCAx
LCAyKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAzIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGRh
eSArPSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wNCIsIGFic2w6OkZvcm1hdENpdmlsVGlt
ZShkYXkgKyAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wNSIsIGFic2w6OkZvcm1hdENpdmls
VGltZSgyICsgZGF5KSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMiIsIGFic2w6OkZvcm1hdENp
dmlsVGltZShkYXkgLSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMiIsIGFic2w6OkZvcm1h
dENpdmlsVGltZShkYXkgLT0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDIiLCBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoZGF5KyspKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTA0IiwgYWJzbDo6
Rm9ybWF0Q2l2aWxUaW1lKCsrZGF5KSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wNCIsIGFic2w6
OkZvcm1hdENpdmlsVGltZShkYXktLSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDIiLCBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoLS1kYXkpKTsKKworICBhYnNsOjpDaXZpbE1vbnRoIG1vbnRoKDIw
MTUsIDEpOworICBFWFBFQ1RfRVEoIjIwMTUtMDIiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobW9u
dGggKz0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDMiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUo
bW9udGggKyAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wNCIsIGFic2w6OkZvcm1hdENpdmlsVGlt
ZSgyICsgbW9udGgpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxIiwgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKG1vbnRoIC0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEiLCBhYnNsOjpGb3JtYXRDaXZp
bFRpbWUobW9udGggLT0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUobW9udGgrKykpOworICBFWFBFQ1RfRVEoIjIwMTUtMDMiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUoKyttb250aCkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDMiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUobW9udGgtLSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUoLS1tb250aCkpOworCisgIGFic2w6OkNpdmlsWWVhciB5ZWFyKDIwMTUpOworICBF
WFBFQ1RfRVEoIjIwMTYiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoeWVhciArPSAxKSk7CisgIEVY
UEVDVF9FUSgiMjAxNyIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh5ZWFyICsgMSkpOworICBFWFBF
Q1RfRVEoIjIwMTgiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoMiArIHllYXIpKTsKKyAgRVhQRUNU
X0VRKCIyMDE1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHllYXIgLSAxKSk7CisgIEVYUEVDVF9F
USgiMjAxNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh5ZWFyIC09IDEpKTsKKyAgRVhQRUNUX0VR
KCIyMDE1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHllYXIrKykpOworICBFWFBFQ1RfRVEoIjIw
MTciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoKyt5ZWFyKSk7CisgIEVYUEVDVF9FUSgiMjAxNyIs
IGFic2w6OkZvcm1hdENpdmlsVGltZSh5ZWFyLS0pKTsKKyAgRVhQRUNUX0VRKCIyMDE1IiwgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKC0teWVhcikpOworfQorCitURVNUKENpdmlsVGltZSwgQXJpdGht
ZXRpY0xpbWl0cykgeworICBjb25zdCBpbnQga0ludE1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50Pjo6bWF4KCk7CisgIGNvbnN0IGludCBrSW50TWluID0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptaW4oKTsKKworICBhYnNsOjpDaXZpbFNlY29uZCBzZWNvbmQoMTk3MCwgMSwgMSwgMCwg
MCwgMCk7CisgIHNlY29uZCArPSBrSW50TWF4OworICBFWFBFQ1RfRVEoIjIwMzgtMDEtMTlUMDM6
MTQ6MDciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc2Vjb25kKSk7CisgIHNlY29uZCAtPSBrSW50
TWF4OworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDA6MDAiLCBhYnNsOjpGb3JtYXRDaXZp
bFRpbWUoc2Vjb25kKSk7CisgIHNlY29uZCArPSBrSW50TWluOworICBFWFBFQ1RfRVEoIjE5MDEt
MTItMTNUMjA6NDU6NTIiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc2Vjb25kKSk7CisgIHNlY29u
ZCAtPSBrSW50TWluOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDA6MDAiLCBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoc2Vjb25kKSk7CisKKyAgYWJzbDo6Q2l2aWxNaW51dGUgbWludXRlKDE5
NzAsIDEsIDEsIDAsIDApOworICBtaW51dGUgKz0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCI2MDUz
LTAxLTIzVDAyOjA3IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1pbnV0ZSkpOworICBtaW51dGUg
LT0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAwIiwgYWJzbDo6Rm9ybWF0
Q2l2aWxUaW1lKG1pbnV0ZSkpOworICBtaW51dGUgKz0ga0ludE1pbjsKKyAgRVhQRUNUX0VRKCIt
MjExNC0xMi0wOFQyMTo1MiIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtaW51dGUpKTsKKyAgbWlu
dXRlIC09IGtJbnRNaW47CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDowMCIsIGFic2w6OkZv
cm1hdENpdmlsVGltZShtaW51dGUpKTsKKworICBhYnNsOjpDaXZpbEhvdXIgaG91cigxOTcwLCAx
LCAxLCAwKTsKKyAgaG91ciArPSBrSW50TWF4OworICBFWFBFQ1RfRVEoIjI0Njk1My0xMC0wOVQw
NyIsIGFic2w6OkZvcm1hdENpdmlsVGltZShob3VyKSk7CisgIGhvdXIgLT0ga0ludE1heDsKKyAg
RVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGhvdXIpKTsK
KyAgaG91ciArPSBrSW50TWluOworICBFWFBFQ1RfRVEoIi0yNDMwMTQtMDMtMjRUMTYiLCBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoaG91cikpOworICBob3VyIC09IGtJbnRNaW47CisgIEVYUEVDVF9F
USgiMTk3MC0wMS0wMVQwMCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShob3VyKSk7CisKKyAgYWJz
bDo6Q2l2aWxEYXkgZGF5KDE5NzAsIDEsIDEpOworICBkYXkgKz0ga0ludE1heDsKKyAgRVhQRUNU
X0VRKCI1ODgxNTgwLTA3LTExIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGRheSkpOworICBkYXkg
LT0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxIiwgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKGRheSkpOworICBkYXkgKz0ga0ludE1pbjsKKyAgRVhQRUNUX0VRKCItNTg3NzY0MS0wNi0y
MyIsIGFic2w6OkZvcm1hdENpdmlsVGltZShkYXkpKTsKKyAgZGF5IC09IGtJbnRNaW47CisgIEVY
UEVDVF9FUSgiMTk3MC0wMS0wMSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShkYXkpKTsKKworICBh
YnNsOjpDaXZpbE1vbnRoIG1vbnRoKDE5NzAsIDEpOworICBtb250aCArPSBrSW50TWF4OworICBF
WFBFQ1RfRVEoIjE3ODk1ODk0MC0wOCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtb250aCkpOwor
ICBtb250aCAtPSBrSW50TWF4OworICBFWFBFQ1RfRVEoIjE5NzAtMDEiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUobW9udGgpKTsKKyAgbW9udGggKz0ga0ludE1pbjsKKyAgRVhQRUNUX0VRKCItMTc4
OTU1MDAxLTA1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1vbnRoKSk7CisgIG1vbnRoIC09IGtJ
bnRNaW47CisgIEVYUEVDVF9FUSgiMTk3MC0wMSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtb250
aCkpOworCisgIGFic2w6OkNpdmlsWWVhciB5ZWFyKDApOworICB5ZWFyICs9IGtJbnRNYXg7Cisg
IEVYUEVDVF9FUSgiMjE0NzQ4MzY0NyIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh5ZWFyKSk7Cisg
IHllYXIgLT0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCIwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1l
KHllYXIpKTsKKyAgeWVhciArPSBrSW50TWluOworICBFWFBFQ1RfRVEoIi0yMTQ3NDgzNjQ4Iiwg
YWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHllYXIpKTsKKyAgeWVhciAtPSBrSW50TWluOworICBFWFBF
Q1RfRVEoIjAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoeWVhcikpOworfQorCitURVNUKENpdmls
VGltZSwgRGlmZmVyZW5jZSkgeworICBhYnNsOjpDaXZpbFNlY29uZCBzZWNvbmQoMjAxNSwgMSwg
MiwgMywgNCwgNSk7CisgIEVYUEVDVF9FUSgwLCBzZWNvbmQgLSBzZWNvbmQpOworICBFWFBFQ1Rf
RVEoMTAsIChzZWNvbmQgKyAxMCkgLSBzZWNvbmQpOworICBFWFBFQ1RfRVEoLTEwLCAoc2Vjb25k
IC0gMTApIC0gc2Vjb25kKTsKKworICBhYnNsOjpDaXZpbE1pbnV0ZSBtaW51dGUoMjAxNSwgMSwg
MiwgMywgNCk7CisgIEVYUEVDVF9FUSgwLCBtaW51dGUgLSBtaW51dGUpOworICBFWFBFQ1RfRVEo
MTAsIChtaW51dGUgKyAxMCkgLSBtaW51dGUpOworICBFWFBFQ1RfRVEoLTEwLCAobWludXRlIC0g
MTApIC0gbWludXRlKTsKKworICBhYnNsOjpDaXZpbEhvdXIgaG91cigyMDE1LCAxLCAyLCAzKTsK
KyAgRVhQRUNUX0VRKDAsIGhvdXIgLSBob3VyKTsKKyAgRVhQRUNUX0VRKDEwLCAoaG91ciArIDEw
KSAtIGhvdXIpOworICBFWFBFQ1RfRVEoLTEwLCAoaG91ciAtIDEwKSAtIGhvdXIpOworCisgIGFi
c2w6OkNpdmlsRGF5IGRheSgyMDE1LCAxLCAyKTsKKyAgRVhQRUNUX0VRKDAsIGRheSAtIGRheSk7
CisgIEVYUEVDVF9FUSgxMCwgKGRheSArIDEwKSAtIGRheSk7CisgIEVYUEVDVF9FUSgtMTAsIChk
YXkgLSAxMCkgLSBkYXkpOworCisgIGFic2w6OkNpdmlsTW9udGggbW9udGgoMjAxNSwgMSk7Cisg
IEVYUEVDVF9FUSgwLCBtb250aCAtIG1vbnRoKTsKKyAgRVhQRUNUX0VRKDEwLCAobW9udGggKyAx
MCkgLSBtb250aCk7CisgIEVYUEVDVF9FUSgtMTAsIChtb250aCAtIDEwKSAtIG1vbnRoKTsKKwor
ICBhYnNsOjpDaXZpbFllYXIgeWVhcigyMDE1KTsKKyAgRVhQRUNUX0VRKDAsIHllYXIgLSB5ZWFy
KTsKKyAgRVhQRUNUX0VRKDEwLCAoeWVhciArIDEwKSAtIHllYXIpOworICBFWFBFQ1RfRVEoLTEw
LCAoeWVhciAtIDEwKSAtIHllYXIpOworfQorCitURVNUKENpdmlsVGltZSwgRGlmZmVyZW5jZUxp
bWl0cykgeworICBjb25zdCBhYnNsOjpjaXZpbF9kaWZmX3Qga0RpZmZNYXggPQorICAgICAgc3Rk
OjpudW1lcmljX2xpbWl0czxhYnNsOjpjaXZpbF9kaWZmX3Q+OjptYXgoKTsKKyAgY29uc3QgYWJz
bDo6Y2l2aWxfZGlmZl90IGtEaWZmTWluID0KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8YWJz
bDo6Y2l2aWxfZGlmZl90Pjo6bWluKCk7CisKKyAgLy8gQ2hlY2sgZGF5IGFyaXRobWV0aWMgYXQg
dGhlIGVuZCBvZiB0aGUgeWVhciByYW5nZS4KKyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgbWF4X2Rh
eShrRGlmZk1heCwgMTIsIDMxKTsKKyAgRVhQRUNUX0VRKDEsIG1heF9kYXkgLSAobWF4X2RheSAt
IDEpKTsKKyAgRVhQRUNUX0VRKC0xLCAobWF4X2RheSAtIDEpIC0gbWF4X2RheSk7CisKKyAgLy8g
Q2hlY2sgZGF5IGFyaXRobWV0aWMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB5ZWFyIHJhbmdlLgorICBj
b25zdCBhYnNsOjpDaXZpbERheSBtaW5fZGF5KGtEaWZmTWluLCAxLCAxKTsKKyAgRVhQRUNUX0VR
KDEsIChtaW5fZGF5ICsgMSkgLSBtaW5fZGF5KTsKKyAgRVhQRUNUX0VRKC0xLCBtaW5fZGF5IC0g
KG1pbl9kYXkgKyAxKSk7CisKKyAgLy8gQ2hlY2sgdGhlIGxpbWl0cyBvZiB0aGUgcmV0dXJuIHZh
bHVlLgorICBjb25zdCBhYnNsOjpDaXZpbERheSBkMSgxOTcwLCAxLCAxKTsKKyAgY29uc3QgYWJz
bDo6Q2l2aWxEYXkgZDIoMjUyNTI3MzQ5Mjc3Njg1MjQsIDcsIDI3KTsKKyAgRVhQRUNUX0VRKGtE
aWZmTWF4LCBkMiAtIGQxKTsKKyAgRVhQRUNUX0VRKGtEaWZmTWluLCBkMSAtIChkMiArIDEpKTsK
K30KKworVEVTVChDaXZpbFRpbWUsIFByb3BlcnRpZXMpIHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQg
c3MoMjAxNSwgMiwgMywgNCwgNSwgNik7CisgIEVYUEVDVF9FUSgyMDE1LCBzcy55ZWFyKCkpOwor
ICBFWFBFQ1RfRVEoMiwgc3MubW9udGgoKSk7CisgIEVYUEVDVF9FUSgzLCBzcy5kYXkoKSk7Cisg
IEVYUEVDVF9FUSg0LCBzcy5ob3VyKCkpOworICBFWFBFQ1RfRVEoNSwgc3MubWludXRlKCkpOwor
ICBFWFBFQ1RfRVEoNiwgc3Muc2Vjb25kKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6V2Vla2RheTo6
dHVlc2RheSwgYWJzbDo6R2V0V2Vla2RheShzcykpOworICBFWFBFQ1RfRVEoMzQsIGFic2w6Okdl
dFllYXJEYXkoc3MpKTsKKworICBhYnNsOjpDaXZpbE1pbnV0ZSBtbSgyMDE1LCAyLCAzLCA0LCA1
LCA2KTsKKyAgRVhQRUNUX0VRKDIwMTUsIG1tLnllYXIoKSk7CisgIEVYUEVDVF9FUSgyLCBtbS5t
b250aCgpKTsKKyAgRVhQRUNUX0VRKDMsIG1tLmRheSgpKTsKKyAgRVhQRUNUX0VRKDQsIG1tLmhv
dXIoKSk7CisgIEVYUEVDVF9FUSg1LCBtbS5taW51dGUoKSk7CisgIEVYUEVDVF9FUSgwLCBtbS5z
ZWNvbmQoKSk7CisgIEVYUEVDVF9FUShhYnNsOjpXZWVrZGF5Ojp0dWVzZGF5LCBhYnNsOjpHZXRX
ZWVrZGF5KG1tKSk7CisgIEVYUEVDVF9FUSgzNCwgYWJzbDo6R2V0WWVhckRheShtbSkpOworCisg
IGFic2w6OkNpdmlsSG91ciBoaCgyMDE1LCAyLCAzLCA0LCA1LCA2KTsKKyAgRVhQRUNUX0VRKDIw
MTUsIGhoLnllYXIoKSk7CisgIEVYUEVDVF9FUSgyLCBoaC5tb250aCgpKTsKKyAgRVhQRUNUX0VR
KDMsIGhoLmRheSgpKTsKKyAgRVhQRUNUX0VRKDQsIGhoLmhvdXIoKSk7CisgIEVYUEVDVF9FUSgw
LCBoaC5taW51dGUoKSk7CisgIEVYUEVDVF9FUSgwLCBoaC5zZWNvbmQoKSk7CisgIEVYUEVDVF9F
UShhYnNsOjpXZWVrZGF5Ojp0dWVzZGF5LCBhYnNsOjpHZXRXZWVrZGF5KGhoKSk7CisgIEVYUEVD
VF9FUSgzNCwgYWJzbDo6R2V0WWVhckRheShoaCkpOworCisgIGFic2w6OkNpdmlsRGF5IGQoMjAx
NSwgMiwgMywgNCwgNSwgNik7CisgIEVYUEVDVF9FUSgyMDE1LCBkLnllYXIoKSk7CisgIEVYUEVD
VF9FUSgyLCBkLm1vbnRoKCkpOworICBFWFBFQ1RfRVEoMywgZC5kYXkoKSk7CisgIEVYUEVDVF9F
USgwLCBkLmhvdXIoKSk7CisgIEVYUEVDVF9FUSgwLCBkLm1pbnV0ZSgpKTsKKyAgRVhQRUNUX0VR
KDAsIGQuc2Vjb25kKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6V2Vla2RheTo6dHVlc2RheSwgYWJz
bDo6R2V0V2Vla2RheShkKSk7CisgIEVYUEVDVF9FUSgzNCwgYWJzbDo6R2V0WWVhckRheShkKSk7
CisKKyAgYWJzbDo6Q2l2aWxNb250aCBtKDIwMTUsIDIsIDMsIDQsIDUsIDYpOworICBFWFBFQ1Rf
RVEoMjAxNSwgbS55ZWFyKCkpOworICBFWFBFQ1RfRVEoMiwgbS5tb250aCgpKTsKKyAgRVhQRUNU
X0VRKDEsIG0uZGF5KCkpOworICBFWFBFQ1RfRVEoMCwgbS5ob3VyKCkpOworICBFWFBFQ1RfRVEo
MCwgbS5taW51dGUoKSk7CisgIEVYUEVDVF9FUSgwLCBtLnNlY29uZCgpKTsKKyAgRVhQRUNUX0VR
KGFic2w6OldlZWtkYXk6OnN1bmRheSwgYWJzbDo6R2V0V2Vla2RheShtKSk7CisgIEVYUEVDVF9F
USgzMiwgYWJzbDo6R2V0WWVhckRheShtKSk7CisKKyAgYWJzbDo6Q2l2aWxZZWFyIHkoMjAxNSwg
MiwgMywgNCwgNSwgNik7CisgIEVYUEVDVF9FUSgyMDE1LCB5LnllYXIoKSk7CisgIEVYUEVDVF9F
USgxLCB5Lm1vbnRoKCkpOworICBFWFBFQ1RfRVEoMSwgeS5kYXkoKSk7CisgIEVYUEVDVF9FUSgw
LCB5LmhvdXIoKSk7CisgIEVYUEVDVF9FUSgwLCB5Lm1pbnV0ZSgpKTsKKyAgRVhQRUNUX0VRKDAs
IHkuc2Vjb25kKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6V2Vla2RheTo6dGh1cnNkYXksIGFic2w6
OkdldFdlZWtkYXkoeSkpOworICBFWFBFQ1RfRVEoMSwgYWJzbDo6R2V0WWVhckRheSh5KSk7Cit9
CisKK1RFU1QoQ2l2aWxUaW1lLCBGb3JtYXQpIHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgc3M7Cisg
IEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDowMDowMCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShz
cykpOworCisgIGFic2w6OkNpdmlsTWludXRlIG1tOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFU
MDA6MDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobW0pKTsKKworICBhYnNsOjpDaXZpbEhvdXIg
aGg7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMCIsIGFic2w6OkZvcm1hdENpdmlsVGltZSho
aCkpOworCisgIGFic2w6OkNpdmlsRGF5IGQ7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMSIsIGFi
c2w6OkZvcm1hdENpdmlsVGltZShkKSk7CisKKyAgYWJzbDo6Q2l2aWxNb250aCBtOworICBFWFBF
Q1RfRVEoIjE5NzAtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobSkpOworCisgIGFic2w6OkNp
dmlsWWVhciB5OworICBFWFBFQ1RfRVEoIjE5NzAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoeSkp
OworfQorCitURVNUKENpdmlsVGltZSwgRm9ybWF0QW5kUGFyc2VMZW5pZW50KSB7CisgIGFic2w6
OkNpdmlsU2Vjb25kIHNzOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDA6MDAiLCBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoc3MpKTsKKworICBhYnNsOjpDaXZpbE1pbnV0ZSBtbTsKKyAgRVhQ
RUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1tKSk7CisK
KyAgYWJzbDo6Q2l2aWxIb3VyIGhoOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDAiLCBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoaGgpKTsKKworICBhYnNsOjpDaXZpbERheSBkOworICBFWFBFQ1Rf
RVEoIjE5NzAtMDEtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoZCkpOworCisgIGFic2w6OkNp
dmlsTW9udGggbTsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1l
KG0pKTsKKworICBhYnNsOjpDaXZpbFllYXIgeTsKKyAgRVhQRUNUX0VRKCIxOTcwIiwgYWJzbDo6
Rm9ybWF0Q2l2aWxUaW1lKHkpKTsKK30KKworVEVTVChDaXZpbFRpbWUsIE91dHB1dFN0cmVhbSkg
eworICBhYnNsOjpDaXZpbFNlY29uZCBjcygyMDE2LCAyLCAzLCA0LCA1LCA2KTsKKyAgeworICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgIHNzIDw8IHN0ZDo6bGVmdCA8PCBzdGQ6OnNldGZp
bGwoJy4nKTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOworICAgIHNzIDw8IHN0ZDo6
c2V0dygyMSkgPDwgYWJzbDo6Q2l2aWxZZWFyKGNzKTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykg
PDwgJ1gnOworICAgIEVYUEVDVF9FUSgiWC4uMjAxNi4uLi4uLi4uLi4uLi4uLi4uWC4uIiwgc3Mu
c3RyKCkpOworICB9CisgIHsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBzcyA8PCBz
dGQ6OmxlZnQgPDwgc3RkOjpzZXRmaWxsKCcuJyk7CisgICAgc3MgPDwgc3RkOjpzZXR3KDMpIDw8
ICdYJzsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMjEpIDw8IGFic2w6OkNpdmlsTW9udGgoY3MpOwor
ICAgIHNzIDw8IHN0ZDo6c2V0dygzKSA8PCAnWCc7CisgICAgRVhQRUNUX0VRKCJYLi4yMDE2LTAy
Li4uLi4uLi4uLi4uLi5YLi4iLCBzcy5zdHIoKSk7CisgIH0KKyAgeworICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIHNzOworICAgIHNzIDw8IHN0ZDo6bGVmdCA8PCBzdGQ6OnNldGZpbGwoJy4nKTsKKyAg
ICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOworICAgIHNzIDw8IHN0ZDo6c2V0dygyMSkgPDwg
YWJzbDo6Q2l2aWxEYXkoY3MpOworICAgIHNzIDw8IHN0ZDo6c2V0dygzKSA8PCAnWCc7CisgICAg
RVhQRUNUX0VRKCJYLi4yMDE2LTAyLTAzLi4uLi4uLi4uLi5YLi4iLCBzcy5zdHIoKSk7CisgIH0K
KyAgeworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgIHNzIDw8IHN0ZDo6bGVmdCA8PCBz
dGQ6OnNldGZpbGwoJy4nKTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOworICAgIHNz
IDw8IHN0ZDo6c2V0dygyMSkgPDwgYWJzbDo6Q2l2aWxIb3VyKGNzKTsKKyAgICBzcyA8PCBzdGQ6
OnNldHcoMykgPDwgJ1gnOworICAgIEVYUEVDVF9FUSgiWC4uMjAxNi0wMi0wM1QwNC4uLi4uLi4u
WC4uIiwgc3Muc3RyKCkpOworICB9CisgIHsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAg
ICBzcyA8PCBzdGQ6OmxlZnQgPDwgc3RkOjpzZXRmaWxsKCcuJyk7CisgICAgc3MgPDwgc3RkOjpz
ZXR3KDMpIDw8ICdYJzsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMjEpIDw8IGFic2w6OkNpdmlsTWlu
dXRlKGNzKTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOworICAgIEVYUEVDVF9FUSgi
WC4uMjAxNi0wMi0wM1QwNDowNS4uLi4uWC4uIiwgc3Muc3RyKCkpOworICB9CisgIHsKKyAgICBz
dGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBzcyA8PCBzdGQ6OmxlZnQgPDwgc3RkOjpzZXRmaWxs
KCcuJyk7CisgICAgc3MgPDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsKKyAgICBzcyA8PCBzdGQ6OnNl
dHcoMjEpIDw8IGFic2w6OkNpdmlsU2Vjb25kKGNzKTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykg
PDwgJ1gnOworICAgIEVYUEVDVF9FUSgiWC4uMjAxNi0wMi0wM1QwNDowNTowNi4uWC4uIiwgc3Mu
c3RyKCkpOworICB9CisgIHsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBzcyA8PCBz
dGQ6OmxlZnQgPDwgc3RkOjpzZXRmaWxsKCcuJyk7CisgICAgc3MgPDwgc3RkOjpzZXR3KDMpIDw8
ICdYJzsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMjEpIDw8IGFic2w6OldlZWtkYXk6OndlZG5lc2Rh
eTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOworICAgIEVYUEVDVF9FUSgiWC4uV2Vk
bmVzZGF5Li4uLi4uLi4uLi4uWC4uIiwgc3Muc3RyKCkpOworICB9Cit9CisKK1RFU1QoQ2l2aWxU
aW1lLCBXZWVrZGF5KSB7CisgIGFic2w6OkNpdmlsRGF5IGQoMTk3MCwgMSwgMSk7CisgIEVYUEVD
VF9FUShhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSwgYWJzbDo6R2V0V2Vla2RheShkKSkgPDwgZDsK
KworICAvLyBXZSB1c2VkIHRvIGdldCB0aGlzIHdyb25nIGZvciB5ZWFycyA8IC0zMC4KKyAgZCA9
IGFic2w6OkNpdmlsRGF5KC0zMSwgMTIsIDI0KTsKKyAgRVhQRUNUX0VRKGFic2w6OldlZWtkYXk6
OndlZG5lc2RheSwgYWJzbDo6R2V0V2Vla2RheShkKSkgPDwgZDsKK30KKworVEVTVChDaXZpbFRp
bWUsIE5leHRQcmV2V2Vla2RheSkgeworICAvLyBKYW4gMSwgMTk3MCB3YXMgYSBUaHVyc2RheS4K
KyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgdGh1cnNkYXkoMTk3MCwgMSwgMSk7CisKKyAgLy8gVGh1
cnNkYXkgLT4gVGh1cnNkYXkKKyAgYWJzbDo6Q2l2aWxEYXkgZCA9IGFic2w6Ok5leHRXZWVrZGF5
KHRodXJzZGF5LCBhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSk7CisgIEVYUEVDVF9FUSg3LCBkIC0g
dGh1cnNkYXkpIDw8IGQ7CisgIEVYUEVDVF9FUShkIC0gMTQsIGFic2w6OlByZXZXZWVrZGF5KHRo
dXJzZGF5LCBhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSkpOworCisgIC8vIFRodXJzZGF5IC0+IEZy
aWRheQorICBkID0gYWJzbDo6TmV4dFdlZWtkYXkodGh1cnNkYXksIGFic2w6OldlZWtkYXk6OmZy
aWRheSk7CisgIEVYUEVDVF9FUSgxLCBkIC0gdGh1cnNkYXkpIDw8IGQ7CisgIEVYUEVDVF9FUShk
IC0gNywgYWJzbDo6UHJldldlZWtkYXkodGh1cnNkYXksIGFic2w6OldlZWtkYXk6OmZyaWRheSkp
OworCisgIC8vIFRodXJzZGF5IC0+IFNhdHVyZGF5CisgIGQgPSBhYnNsOjpOZXh0V2Vla2RheSh0
aHVyc2RheSwgYWJzbDo6V2Vla2RheTo6c2F0dXJkYXkpOworICBFWFBFQ1RfRVEoMiwgZCAtIHRo
dXJzZGF5KSA8PCBkOworICBFWFBFQ1RfRVEoZCAtIDcsIGFic2w6OlByZXZXZWVrZGF5KHRodXJz
ZGF5LCBhYnNsOjpXZWVrZGF5OjpzYXR1cmRheSkpOworCisgIC8vIFRodXJzZGF5IC0+IFN1bmRh
eQorICBkID0gYWJzbDo6TmV4dFdlZWtkYXkodGh1cnNkYXksIGFic2w6OldlZWtkYXk6OnN1bmRh
eSk7CisgIEVYUEVDVF9FUSgzLCBkIC0gdGh1cnNkYXkpIDw8IGQ7CisgIEVYUEVDVF9FUShkIC0g
NywgYWJzbDo6UHJldldlZWtkYXkodGh1cnNkYXksIGFic2w6OldlZWtkYXk6OnN1bmRheSkpOwor
CisgIC8vIFRodXJzZGF5IC0+IE1vbmRheQorICBkID0gYWJzbDo6TmV4dFdlZWtkYXkodGh1cnNk
YXksIGFic2w6OldlZWtkYXk6Om1vbmRheSk7CisgIEVYUEVDVF9FUSg0LCBkIC0gdGh1cnNkYXkp
IDw8IGQ7CisgIEVYUEVDVF9FUShkIC0gNywgYWJzbDo6UHJldldlZWtkYXkodGh1cnNkYXksIGFi
c2w6OldlZWtkYXk6Om1vbmRheSkpOworCisgIC8vIFRodXJzZGF5IC0+IFR1ZXNkYXkKKyAgZCA9
IGFic2w6Ok5leHRXZWVrZGF5KHRodXJzZGF5LCBhYnNsOjpXZWVrZGF5Ojp0dWVzZGF5KTsKKyAg
RVhQRUNUX0VRKDUsIGQgLSB0aHVyc2RheSkgPDwgZDsKKyAgRVhQRUNUX0VRKGQgLSA3LCBhYnNs
OjpQcmV2V2Vla2RheSh0aHVyc2RheSwgYWJzbDo6V2Vla2RheTo6dHVlc2RheSkpOworCisgIC8v
IFRodXJzZGF5IC0+IFdlZG5lc2RheQorICBkID0gYWJzbDo6TmV4dFdlZWtkYXkodGh1cnNkYXks
IGFic2w6OldlZWtkYXk6OndlZG5lc2RheSk7CisgIEVYUEVDVF9FUSg2LCBkIC0gdGh1cnNkYXkp
IDw8IGQ7CisgIEVYUEVDVF9FUShkIC0gNywgYWJzbDo6UHJldldlZWtkYXkodGh1cnNkYXksIGFi
c2w6OldlZWtkYXk6OndlZG5lc2RheSkpOworfQorCisvLyBOT1RFOiBSdW4gdGhpcyB3aXRoIC0t
Y29wdD0tZnRyYXB2IHRvIGRldGVjdCBvdmVyZmxvdyBwcm9ibGVtcy4KK1RFU1QoQ2l2aWxUaW1l
LCBEaWZmZXJlbmNlV2l0aEh1Z2VZZWFyKSB7CisgIGFic2w6OkNpdmlsRGF5IGQxKDkyMjMzNzIw
MzY4NTQ3NzU4MDcsIDEsIDEpOworICBhYnNsOjpDaXZpbERheSBkMig5MjIzMzcyMDM2ODU0Nzc1
ODA3LCAxMiwgMzEpOworICBFWFBFQ1RfRVEoMzY0LCBkMiAtIGQxKTsKKworICBkMSA9IGFic2w6
OkNpdmlsRGF5KC05MjIzMzcyMDM2ODU0Nzc1ODA3IC0gMSwgMSwgMSk7CisgIGQyID0gYWJzbDo6
Q2l2aWxEYXkoLTkyMjMzNzIwMzY4NTQ3NzU4MDcgLSAxLCAxMiwgMzEpOworICBFWFBFQ1RfRVEo
MzY1LCBkMiAtIGQxKTsKKworICAvLyBDaGVjayB0aGUgbGltaXRzIG9mIHRoZSByZXR1cm4gdmFs
dWUgYXQgdGhlIGVuZCBvZiB0aGUgeWVhciByYW5nZS4KKyAgZDEgPSBhYnNsOjpDaXZpbERheSg5
MjIzMzcyMDM2ODU0Nzc1ODA3LCAxLCAxKTsKKyAgZDIgPSBhYnNsOjpDaXZpbERheSg5MTk4MTE5
MzAxOTI3MDA5MjUyLCA2LCA2KTsKKyAgRVhQRUNUX0VRKDkyMjMzNzIwMzY4NTQ3NzU4MDcsIGQx
IC0gZDIpOworICBkMiA9IGQyIC0gMTsKKyAgRVhQRUNUX0VRKC05MjIzMzcyMDM2ODU0Nzc1ODA3
IC0gMSwgZDIgLSBkMSk7CisKKyAgLy8gQ2hlY2sgdGhlIGxpbWl0cyBvZiB0aGUgcmV0dXJuIHZh
bHVlIGF0IHRoZSBzdGFydCBvZiB0aGUgeWVhciByYW5nZS4KKyAgZDEgPSBhYnNsOjpDaXZpbERh
eSgtOTIyMzM3MjAzNjg1NDc3NTgwNyAtIDEsIDEsIDEpOworICBkMiA9IGFic2w6OkNpdmlsRGF5
KC05MTk4MTE5MzAxOTI3MDA5MjU0LCA3LCAyOCk7CisgIEVYUEVDVF9FUSg5MjIzMzcyMDM2ODU0
Nzc1ODA3LCBkMiAtIGQxKTsKKyAgZDIgPSBkMiArIDE7CisgIEVYUEVDVF9FUSgtOTIyMzM3MjAz
Njg1NDc3NTgwNyAtIDEsIGQxIC0gZDIpOworCisgIC8vIENoZWNrIHRoZSBsaW1pdHMgb2YgdGhl
IHJldHVybiB2YWx1ZSBmcm9tIGVpdGhlciBzaWRlIG9mIHllYXIgMC4KKyAgZDEgPSBhYnNsOjpD
aXZpbERheSgtMTI2MjYzNjc0NjM4ODMyNzgsIDksIDMpOworICBkMiA9IGFic2w6OkNpdmlsRGF5
KDEyNjI2MzY3NDYzODgzMjc3LCAzLCAyOCk7CisgIEVYUEVDVF9FUSg5MjIzMzcyMDM2ODU0Nzc1
ODA3LCBkMiAtIGQxKTsKKyAgZDIgPSBkMiArIDE7CisgIEVYUEVDVF9FUSgtOTIyMzM3MjAzNjg1
NDc3NTgwNyAtIDEsIGQxIC0gZDIpOworfQorCisvLyBOT1RFOiBSdW4gdGhpcyB3aXRoIC0tY29w
dD0tZnRyYXB2IHRvIGRldGVjdCBvdmVyZmxvdyBwcm9ibGVtcy4KK1RFU1QoQ2l2aWxUaW1lLCBE
aWZmZXJlbmNlTm9JbnRlcm1lZGlhdGVPdmVyZmxvdykgeworICAvLyBUaGUgZGlmZmVyZW5jZSB1
cCB0byB0aGUgbWludXRlIGZpZWxkIHdvdWxkIGJlIGJlbG93IHRoZSBtaW5pbXVtCisgIC8vIGlu
dDY0X3QsIGJ1dCB0aGUgNTIgZXh0cmEgc2Vjb25kcyBicmluZ3MgdXMgYmFjayB0byB0aGUgbWlu
aW11bS4KKyAgYWJzbDo6Q2l2aWxTZWNvbmQgczEoLTI5MjI3NzAyMjY1NywgMSwgMjcsIDgsIDI5
IC0gMSwgNTIpOworICBhYnNsOjpDaXZpbFNlY29uZCBzMigxOTcwLCAxLCAxLCAwLCAwIC0gMSwg
MCk7CisgIEVYUEVDVF9FUSgtOTIyMzM3MjAzNjg1NDc3NTgwNyAtIDEsIHMxIC0gczIpOworCisg
IC8vIFRoZSBkaWZmZXJlbmNlIHVwIHRvIHRoZSBtaW51dGUgZmllbGQgd291bGQgYmUgYWJvdmUg
dGhlIG1heGltdW0KKyAgLy8gaW50NjRfdCwgYnV0IHRoZSAtNTMgZXh0cmEgc2Vjb25kcyBicmlu
Z3MgdXMgYmFjayB0byB0aGUgbWF4aW11bS4KKyAgczEgPSBhYnNsOjpDaXZpbFNlY29uZCgyOTIy
NzcwMjY1OTYsIDEyLCA0LCAxNSwgMzAsIDcgLSA3KTsKKyAgczIgPSBhYnNsOjpDaXZpbFNlY29u
ZCgxOTcwLCAxLCAxLCAwLCAwLCAwIC0gNyk7CisgIEVYUEVDVF9FUSg5MjIzMzcyMDM2ODU0Nzc1
ODA3LCBzMSAtIHMyKTsKK30KKworVEVTVChDaXZpbFRpbWUsIE5vcm1hbGl6ZVNpbXBsZU92ZXJm
bG93KSB7CisgIGFic2w6OkNpdmlsU2Vjb25kIGNzOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25k
KDIwMTMsIDExLCAxNSwgMTYsIDMyLCA1OSArIDEpOworICBFWFBFQ1RfRVEoIjIwMTMtMTEtMTVU
MTY6MzM6MDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKKyAgY3MgPSBhYnNsOjpDaXZp
bFNlY29uZCgyMDEzLCAxMSwgMTUsIDE2LCA1OSArIDEsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDEz
LTExLTE1VDE3OjAwOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJz
bDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAyMyArIDEsIDMyLCAxNCk7CisgIEVYUEVDVF9F
USgiMjAxMy0xMS0xNlQwMDozMjoxNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOworICBj
cyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAzMCArIDEsIDE2LCAzMiwgMTQpOworICBF
WFBFQ1RfRVEoIjIwMTMtMTItMDFUMTY6MzI6MTQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3Mp
KTsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMiArIDEsIDE1LCAxNiwgMzIsIDE0
KTsKKyAgRVhQRUNUX0VRKCIyMDE0LTAxLTE1VDE2OjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKGNzKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBOb3JtYWxpemVTaW1wbGVVbmRlcmZsb3cp
IHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgY3M7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAx
MywgMTEsIDE1LCAxNiwgMzIsIDAgLSAxKTsKKyAgRVhQRUNUX0VRKCIyMDEzLTExLTE1VDE2OjMx
OjU5IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNv
bmQoMjAxMywgMTEsIDE1LCAxNiwgMCAtIDEsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDEzLTExLTE1
VDE1OjU5OjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2
aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAwIC0gMSwgMzIsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDEz
LTExLTE0VDIzOjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJz
bDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDEgLSAxLCAxNiwgMzIsIDE0KTsKKyAgRVhQRUNUX0VR
KCIyMDEzLTEwLTMxVDE2OjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNz
ID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMSAtIDEsIDE1LCAxNiwgMzIsIDE0KTsKKyAgRVhQ
RUNUX0VRKCIyMDEyLTEyLTE1VDE2OjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7
Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBOb3JtYWxpemVNdWx0aXBsZU92ZXJmbG93KSB7CisgIGFi
c2w6OkNpdmlsU2Vjb25kIGNzKDIwMTMsIDEyLCAzMSwgMjMsIDU5LCA1OSArIDEpOworICBFWFBF
Q1RfRVEoIjIwMTQtMDEtMDFUMDA6MDA6MDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsK
K30KKworVEVTVChDaXZpbFRpbWUsIE5vcm1hbGl6ZU11bHRpcGxlVW5kZXJmbG93KSB7CisgIGFi
c2w6OkNpdmlsU2Vjb25kIGNzKDIwMTQsIDEsIDEsIDAsIDAsIDAgLSAxKTsKKyAgRVhQRUNUX0VR
KCIyMDEzLTEyLTMxVDIzOjU5OjU5IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7Cit9CisK
K1RFU1QoQ2l2aWxUaW1lLCBOb3JtYWxpemVPdmVyZmxvd0xpbWl0cykgeworICBhYnNsOjpDaXZp
bFNlY29uZCBjczsKKworICBjb25zdCBpbnQga2ludG1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50Pjo6bWF4KCk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMCwga2ludG1heCwga2ludG1h
eCwga2ludG1heCwga2ludG1heCwga2ludG1heCk7CisgIEVYUEVDVF9FUSgiMTg1MDg1NzE1LTEx
LTI3VDEyOjIxOjA3IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisKKyAgY29uc3QgaW50
IGtpbnRtaW4gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOworICBjcyA9IGFic2w6
OkNpdmlsU2Vjb25kKDAsIGtpbnRtaW4sIGtpbnRtaW4sIGtpbnRtaW4sIGtpbnRtaW4sIGtpbnRt
aW4pOworICBFWFBFQ1RfRVEoIi0xODUwODU3MTctMTAtMzFUMTA6Mzc6NTIiLCBhYnNsOjpGb3Jt
YXRDaXZpbFRpbWUoY3MpKTsKK30KKworVEVTVChDaXZpbFRpbWUsIE5vcm1hbGl6ZUNvbXBsZXhP
dmVyZmxvdykgeworICBhYnNsOjpDaXZpbFNlY29uZCBjczsKKyAgY3MgPSBhYnNsOjpDaXZpbFNl
Y29uZCgyMDEzLCAxMSwgMTUsIDE2LCAzMiwgMTQgKyAxMjM0NTY3ODkpOworICBFWFBFQ1RfRVEo
IjIwMTctMTAtMTRUMTQ6MDU6MjMiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKKyAgY3Mg
PSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMTUsIDE2LCAzMiArIDEyMzQ1NjcsIDE0KTsK
KyAgRVhQRUNUX0VRKCIyMDE2LTAzLTIyVDAwOjM5OjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1l
KGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAxNiArIDEyMzQ1
NiwgMzIsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDI3LTEyLTE2VDE2OjMyOjE0IiwgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1
ICsgMTIzNCwgMTYsIDMyLCAxNCk7CisgIEVYUEVDVF9FUSgiMjAxNy0wNC0wMlQxNjozMjoxNCIs
IGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIw
MTMsIDExICsgMTIzLCAxNSwgMTYsIDMyLCAxNCk7CisgIEVYUEVDVF9FUSgiMjAyNC0wMi0xNVQx
NjozMjoxNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOworfQorCitURVNUKENpdmlsVGlt
ZSwgTm9ybWFsaXplQ29tcGxleFVuZGVyZmxvdykgeworICBhYnNsOjpDaXZpbFNlY29uZCBjczsK
KyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgxOTk5LCAzLCAwLCAwLCAwLCAwKTsgIC8vIHllYXIg
NDAwCisgIEVYUEVDVF9FUSgiMTk5OS0wMi0yOFQwMDowMDowMCIsIGFic2w6OkZvcm1hdENpdmls
VGltZShjcykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAxNSwgMTYsIDMy
LCAxNCAtIDEyMzQ1Njc4OSk7CisgIEVYUEVDVF9FUSgiMjAwOS0xMi0xN1QxODo1OTowNSIsIGFi
c2w6OkZvcm1hdENpdmlsVGltZShjcykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMs
IDExLCAxNSwgMTYsIDMyIC0gMTIzNDU2NywgMTQpOworICBFWFBFQ1RfRVEoIjIwMTEtMDctMTJU
MDg6MjU6MTQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKKyAgY3MgPSBhYnNsOjpDaXZp
bFNlY29uZCgyMDEzLCAxMSwgMTUsIDE2IC0gMTIzNDU2LCAzMiwgMTQpOworICBFWFBFQ1RfRVEo
IjE5OTktMTAtMTZUMTY6MzI6MTQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKKyAgY3Mg
PSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMTUgLSAxMjM0LCAxNiwgMzIsIDE0KTsKKyAg
RVhQRUNUX0VRKCIyMDEwLTA2LTMwVDE2OjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNz
KSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEgLSAxMjMsIDE1LCAxNiwgMzIs
IDE0KTsKKyAgRVhQRUNUX0VRKCIyMDAzLTA4LTE1VDE2OjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2
aWxUaW1lKGNzKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBOb3JtYWxpemVNaXNobWFzaCkgewor
ICBhYnNsOjpDaXZpbFNlY29uZCBjczsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAx
MSAtIDEyMywgMTUgKyAxMjM0LCAxNiAtIDEyMzQ1NiwgMzIgKyAxMjM0NTY3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIDE0IC0gMTIzNDU2Nzg5KTsKKyAgRVhQRUNUX0VRKCIxOTkxLTA1LTA5
VDAzOjA2OjA1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2
aWxTZWNvbmQoMjAxMywgMTEgKyAxMjMsIDE1IC0gMTIzNCwgMTYgKyAxMjM0NTYsIDMyIC0gMTIz
NDU2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAxNCArIDEyMzQ1Njc4OSk7CisgIEVYUEVD
VF9FUSgiMjAzNi0wNS0yNFQwNTo1ODoyMyIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOwor
CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIC0xNDYwOTcgKyAxLCAxNiwgMzIs
IDE0KTsKKyAgRVhQRUNUX0VRKCIxNjEzLTExLTAxVDE2OjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2
aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEgKyA0MDAgKiAx
MiwgLTE0NjA5NyArIDEsIDE2LCAzMiwgMTQpOworICBFWFBFQ1RfRVEoIjIwMTMtMTEtMDFUMTY6
MzI6MTQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKK30KKworLy8gQ29udmVydCBhbGwg
dGhlIGRheXMgZnJvbSAxOTcwLTEtMSB0byAxOTcwLTEtMTQ2MDk3IChha2EgMjM2OS0xMi0zMSkK
Ky8vIGFuZCBjaGVjayB0aGF0IHRoZXkgbm9ybWFsaXplIHRvIHRoZSBleHBlY3RlZCB0aW1lLiAg
MTQ2MDk3IGRheXMgc3BhbgorLy8gdGhlIDQwMC15ZWFyIEdyZWdvcmlhbiBjeWNsZSB1c2VkIGR1
cmluZyBub3JtYWxpemF0aW9uLgorVEVTVChDaXZpbFRpbWUsIE5vcm1hbGl6ZUFsbFRoZURheXMp
IHsKKyAgYWJzbDo6Q2l2aWxEYXkgZXhwZWN0ZWQoMTk3MCwgMSwgMSk7CisgIGZvciAoaW50IGRh
eSA9IDE7IGRheSA8PSAxNDYwOTc7ICsrZGF5KSB7CisgICAgYWJzbDo6Q2l2aWxTZWNvbmQgY3Mo
MTk3MCwgMSwgZGF5LCAwLCAwLCAwKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIGNzKTsKKyAg
ICArK2V4cGVjdGVkOworICB9Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBOb3JtYWxpemVXaXRoSHVn
ZVllYXIpIHsKKyAgYWJzbDo6Q2l2aWxNb250aCBjKDkyMjMzNzIwMzY4NTQ3NzU4MDcsIDEpOwor
ICBFWFBFQ1RfRVEoIjkyMjMzNzIwMzY4NTQ3NzU4MDctMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRp
bWUoYykpOworICBjID0gYyAtIDE7ICAvLyBDYXVzZXMgbm9ybWFsaXphdGlvbgorICBFWFBFQ1Rf
RVEoIjkyMjMzNzIwMzY4NTQ3NzU4MDYtMTIiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYykpOwor
CisgIGMgPSBhYnNsOjpDaXZpbE1vbnRoKC05MjIzMzcyMDM2ODU0Nzc1ODA3IC0gMSwgMSk7Cisg
IEVYUEVDVF9FUSgiLTkyMjMzNzIwMzY4NTQ3NzU4MDgtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRp
bWUoYykpOworICBjID0gYyArIDEyOyAgLy8gQ2F1c2VzIG5vcm1hbGl6YXRpb24KKyAgRVhQRUNU
X0VRKCItOTIyMzM3MjAzNjg1NDc3NTgwNy0wMSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjKSk7
Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBMZWFwWWVhcnMpIHsKKyAgY29uc3QgYWJzbDo6Q2l2aWxT
ZWNvbmQgczEoMjAxMywgMiwgMjggKyAxLCAwLCAwLCAwKTsKKyAgRVhQRUNUX0VRKCIyMDEzLTAz
LTAxVDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHMxKSk7CisKKyAgY29uc3QgYWJz
bDo6Q2l2aWxTZWNvbmQgczIoMjAxMiwgMiwgMjggKyAxLCAwLCAwLCAwKTsKKyAgRVhQRUNUX0VR
KCIyMDEyLTAyLTI5VDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHMyKSk7CisKKyAg
Y29uc3QgYWJzbDo6Q2l2aWxTZWNvbmQgczMoMTkwMCwgMiwgMjggKyAxLCAwLCAwLCAwKTsKKyAg
RVhQRUNUX0VRKCIxOTAwLTAzLTAxVDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHMz
KSk7CisKKyAgY29uc3Qgc3RydWN0IHsKKyAgICBpbnQgeWVhcjsKKyAgICBpbnQgZGF5czsKKyAg
ICBzdHJ1Y3QgeworICAgICAgaW50IG1vbnRoOworICAgICAgaW50IGRheTsKKyAgICB9IGxlYXBf
ZGF5OyAgLy8gVGhlIGRhdGUgb2YgdGhlIGRheSBhZnRlciBGZWIgMjguCisgIH0ga0xlYXBZZWFy
VGFibGVbXXsKKyAgICAgIHsxOTAwLCAzNjUsIHszLCAxfX0sCisgICAgICB7MTk5OSwgMzY1LCB7
MywgMX19LAorICAgICAgezIwMDAsIDM2NiwgezIsIDI5fX0sICAvLyBsZWFwIHllYXIKKyAgICAg
IHsyMDAxLCAzNjUsIHszLCAxfX0sCisgICAgICB7MjAwMiwgMzY1LCB7MywgMX19LAorICAgICAg
ezIwMDMsIDM2NSwgezMsIDF9fSwKKyAgICAgIHsyMDA0LCAzNjYsIHsyLCAyOX19LCAgLy8gbGVh
cCB5ZWFyCisgICAgICB7MjAwNSwgMzY1LCB7MywgMX19LAorICAgICAgezIwMDYsIDM2NSwgezMs
IDF9fSwKKyAgICAgIHsyMDA3LCAzNjUsIHszLCAxfX0sCisgICAgICB7MjAwOCwgMzY2LCB7Miwg
Mjl9fSwgIC8vIGxlYXAgeWVhcgorICAgICAgezIwMDksIDM2NSwgezMsIDF9fSwKKyAgICAgIHsy
MTAwLCAzNjUsIHszLCAxfX0sCisgIH07CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBBQlNMX0FS
UkFZU0laRShrTGVhcFllYXJUYWJsZSk7ICsraSkgeworICAgIGNvbnN0IGludCB5ID0ga0xlYXBZ
ZWFyVGFibGVbaV0ueWVhcjsKKyAgICBjb25zdCBpbnQgbSA9IGtMZWFwWWVhclRhYmxlW2ldLmxl
YXBfZGF5Lm1vbnRoOworICAgIGNvbnN0IGludCBkID0ga0xlYXBZZWFyVGFibGVbaV0ubGVhcF9k
YXkuZGF5OworICAgIGNvbnN0IGludCBuID0ga0xlYXBZZWFyVGFibGVbaV0uZGF5czsKKworICAg
IC8vIFRlc3RzIGluY3JlbWVudGluZyB0aHJvdWdoIHRoZSBsZWFwIGRheS4KKyAgICBjb25zdCBh
YnNsOjpDaXZpbERheSBmZWIyOCh5LCAyLCAyOCk7CisgICAgY29uc3QgYWJzbDo6Q2l2aWxEYXkg
bmV4dF9kYXkgPSBmZWIyOCArIDE7CisgICAgRVhQRUNUX0VRKG0sIG5leHRfZGF5Lm1vbnRoKCkp
OworICAgIEVYUEVDVF9FUShkLCBuZXh0X2RheS5kYXkoKSk7CisKKyAgICAvLyBUZXN0cyBkaWZm
ZXJlbmNlIGluIGRheXMgb2YgbGVhcCB5ZWFycy4KKyAgICBjb25zdCBhYnNsOjpDaXZpbFllYXIg
eWVhcihmZWIyOCk7CisgICAgY29uc3QgYWJzbDo6Q2l2aWxZZWFyIG5leHRfeWVhciA9IHllYXIg
KyAxOworICAgIEVYUEVDVF9FUShuLCBhYnNsOjpDaXZpbERheShuZXh0X3llYXIpIC0gYWJzbDo6
Q2l2aWxEYXkoeWVhcikpOworICB9Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBGaXJzdFRodXJzZGF5
SW5Nb250aCkgeworICBjb25zdCBhYnNsOjpDaXZpbERheSBub3YxKDIwMTQsIDExLCAxKTsKKyAg
Y29uc3QgYWJzbDo6Q2l2aWxEYXkgdGh1cnNkYXkgPQorICAgICAgYWJzbDo6TmV4dFdlZWtkYXko
bm92MSAtIDEsIGFic2w6OldlZWtkYXk6OnRodXJzZGF5KTsKKyAgRVhQRUNUX0VRKCIyMDE0LTEx
LTA2IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHRodXJzZGF5KSk7CisKKyAgLy8gQm9udXM6IERh
dGUgb2YgVGhhbmtzZ2l2aW5nIGluIHRoZSBVbml0ZWQgU3RhdGVzCisgIC8vIFJ1bGU6IEZvdXJ0
aCBUaHVyc2RheSBvZiBOb3ZlbWJlcgorICBjb25zdCBhYnNsOjpDaXZpbERheSB0aGFua3NnaXZp
bmcgPSB0aHVyc2RheSArICA3ICogMzsKKyAgRVhQRUNUX0VRKCIyMDE0LTExLTI3IiwgYWJzbDo6
Rm9ybWF0Q2l2aWxUaW1lKHRoYW5rc2dpdmluZykpOworfQorCitURVNUKENpdmlsVGltZSwgRG9j
dW1lbnRhdGlvbkV4YW1wbGUpIHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgc2Vjb25kKDIwMTUsIDYs
IDI4LCAxLCAyLCAzKTsgIC8vIDIwMTUtMDYtMjggMDE6MDI6MDMKKyAgYWJzbDo6Q2l2aWxNaW51
dGUgbWludXRlKHNlY29uZCk7ICAgICAgICAgICAgICAgIC8vIDIwMTUtMDYtMjggMDE6MDI6MDAK
KyAgYWJzbDo6Q2l2aWxEYXkgZGF5KG1pbnV0ZSk7ICAgICAgICAgICAgICAgICAgICAgIC8vIDIw
MTUtMDYtMjggMDA6MDA6MDAKKworICBzZWNvbmQgLT0gMTsgICAgICAgICAgICAgICAgICAgIC8v
IDIwMTUtMDYtMjggMDE6MDI6MDIKKyAgLS1zZWNvbmQ7ICAgICAgICAgICAgICAgICAgICAgICAv
LyAyMDE1LTA2LTI4IDAxOjAyOjAxCisgIEVYUEVDVF9FUShtaW51dGUsIHNlY29uZCAtIDEpOyAg
Ly8gQ29tcGFyaXNvbiBiZXR3ZWVuIHR5cGVzCisgIEVYUEVDVF9MVChtaW51dGUsIHNlY29uZCk7
CisKKyAgLy8gaW50IGRpZmYgPSBzZWNvbmQgLSBtaW51dGU7ICAvLyBFUlJPUjogTWl4ZWQgdHlw
ZXMsIHdvbid0IGNvbXBpbGUKKworICBhYnNsOjpDaXZpbERheSBqdW5lXzEoMjAxNSwgNiwgMSk7
ICAvLyBQYXNzIGZpZWxkcyB0byBjJ3Rvci4KKyAgaW50IGRpZmYgPSBkYXkgLSBqdW5lXzE7ICAg
ICAgICAgICAgLy8gTnVtIGRheXMgYmV0d2VlbiAnZGF5JyBhbmQgSnVuZSAxCisgIEVYUEVDVF9F
USgyNywgZGlmZik7CisKKyAgLy8gRmllbGRzIHNtYWxsZXIgdGhhbiBhbGlnbm1lbnQgYXJlIGZs
b29yZWQgdG8gdGhlaXIgbWluaW11bSB2YWx1ZS4KKyAgYWJzbDo6Q2l2aWxEYXkgZGF5X2Zsb29y
KDIwMTUsIDEsIDIsIDksIDksIDkpOworICBFWFBFQ1RfRVEoMCwgZGF5X2Zsb29yLmhvdXIoKSk7
ICAvLyAwOTowOTowOSBpcyBmbG9vcmVkCisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbERheSgyMDE1
LCAxLCAyKSwgZGF5X2Zsb29yKTsKKworICAvLyBVbnNwZWNpZmllZCBmaWVsZHMgZGVmYXVsdCB0
byB0aGVpciBtaW5pdW0gdmFsdWUKKyAgYWJzbDo6Q2l2aWxEYXkgZGF5X2RlZmF1bHQoMjAxNSk7
ICAvLyBEZWZhdWx0cyB0byBKYW4gMQorICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxEYXkoMjAxNSwg
MSwgMSksIGRheV9kZWZhdWx0KTsKKworICAvLyBJdGVyYXRlcyBhbGwgdGhlIGRheXMgb2YgSnVu
ZS4KKyAgYWJzbDo6Q2l2aWxNb250aCBqdW5lKGRheSk7ICAvLyBDaXZpbERheSAtPiBDaXZpbE1v
bnRoCisgIGFic2w6OkNpdmlsTW9udGgganVseSA9IGp1bmUgKyAxOworICBmb3IgKGFic2w6OkNp
dmlsRGF5IGRheSA9IGp1bmVfMTsgZGF5IDwganVseTsgKytkYXkpIHsKKyAgICAvLyAuLi4KKyAg
fQorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2suY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2Nsb2NrLmNjCmluZGV4IDc0ZWUxNDAxYjk4YzJlMTVlMTlkMjgzMmRhYTQ5
MWUzZTQ1YzJmYjYuLjM5NmM1NWYyMDBjZTk4MjI2NDQ2NTU0NGJmMWI2ODU1YzdmOWE2MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2suY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jbG9jay5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzc5LDEzICszNzks
MTMgQEAgc3RhdGljIHVpbnQ2NF90IFVwZGF0ZUxhc3RTYW1wbGUoCiAvLwogLy8gTWFudWFsbHkg
bWFyayB0aGlzICdub2lubGluZScgdG8gbWluaW1pemUgc3RhY2sgZnJhbWUgc2l6ZSBvZiB0aGUg
ZmFzdAogLy8gcGF0aC4gIFdpdGhvdXQgdGhpcywgc29tZXRpbWVzIGEgY29tcGlsZXIgbWF5IGlu
bGluZSB0aGlzIGJpZyBibG9jayBvZiBjb2RlCi0vLyBpbnRvIHRoZSBmYXN0IHBhc3QuICBUaGF0
IGNhdXNlcyBsb3RzIG9mIHJlZ2lzdGVyIHNwaWxscyBhbmQgcmVsb2FkcyB0aGF0CisvLyBpbnRv
IHRoZSBmYXN0IHBhdGguICBUaGF0IGNhdXNlcyBsb3RzIG9mIHJlZ2lzdGVyIHNwaWxscyBhbmQg
cmVsb2FkcyB0aGF0CiAvLyBhcmUgdW5uZWNlc3NhcnkgdW5sZXNzIHRoZSBzbG93IHBhdGggaXMg
dGFrZW4uCiAvLwogLy8gVE9ETyhhYnNsLXRlYW0pOiBSZW1vdmUgdGhpcyBhdHRyaWJ1dGUgd2hl
biBvdXIgY29tcGlsZXIgaXMgc21hcnQgZW5vdWdoCiAvLyB0byBkbyB0aGUgcmlnaHQgdGhpbmcu
CiBBQlNMX0FUVFJJQlVURV9OT0lOTElORQotc3RhdGljIGludDY0X3QgR2V0Q3VycmVudFRpbWVO
YW5vc1Nsb3dQYXRoKCkgTE9DS1NfRVhDTFVERUQobG9jaykgeworc3RhdGljIGludDY0X3QgR2V0
Q3VycmVudFRpbWVOYW5vc1Nsb3dQYXRoKCkgQUJTTF9MT0NLU19FWENMVURFRChsb2NrKSB7CiAg
IC8vIFNlcmlhbGl6ZSBhY2Nlc3MgdG8gc2xvdy1wYXRoLiAgRmFzdC1wYXRoIHJlYWRlcnMgYXJl
IG5vdCBibG9ja2VkIHlldCwgYW5kCiAgIC8vIGNvZGUgYmVsb3cgbXVzdCBub3QgbW9kaWZ5IGxh
c3Rfc2FtcGxlIHVudGlsIHRoZSBzZXFsb2NrIGlzIGFjcXVpcmVkLgogICBsb2NrLkxvY2soKTsK
QEAgLTQzMCw3ICs0MzAsNyBAQCBzdGF0aWMgaW50NjRfdCBHZXRDdXJyZW50VGltZU5hbm9zU2xv
d1BhdGgoKSBMT0NLU19FWENMVURFRChsb2NrKSB7CiBzdGF0aWMgdWludDY0X3QgVXBkYXRlTGFz
dFNhbXBsZSh1aW50NjRfdCBub3dfY3ljbGVzLCB1aW50NjRfdCBub3dfbnMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBkZWx0YV9jeWNsZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgVGltZVNhbXBsZSAqc2FtcGxlKQot
ICAgIEVYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChsb2NrKSB7CisgICAgQUJTTF9FWENMVVNJVkVf
TE9DS1NfUkVRVUlSRUQobG9jaykgewogICB1aW50NjRfdCBlc3RpbWF0ZWRfYmFzZV9ucyA9IG5v
d19uczsKICAgdWludDY0X3QgbG9ja192YWx1ZSA9IFNlcUFjcXVpcmUoJnNlcSk7ICAvLyBhY3F1
aXJlIHNlcWxvY2sgdG8gYmxvY2sgcmVhZGVycwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Ns
b2NrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2Nsb2NrLmgKaW5kZXggMzc1M2Q0ZWU0M2FkNjhhNWI0YmJkMjc0
N2NmOTgwNTdiYjQ4ZmI4Ny4uYmI1MmU0ZjZjYTk5MDExNmE1ZGE5YmVlMjAwZWQzMGU0MTc5NjYz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jbG9jay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2su
aApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9jbG9ja19iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Nsb2NrX2JlbmNobWFy
ay5jYwppbmRleCAzZDNjZDlkNWM0MmNkN2Y4OTJmNDhhMDJlN2MxZmNiMjFhMzg4ZmFmLi5jNWM3
OTVlY2JkMjNhYmYzMWJmZTI4MDI1ZGVkYmQ2ODZlNTgxMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2Nsb2NrX2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Nsb2NrX2JlbmNobWFyay5j
YwpAQCAtMyw3ICszLDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTUsNiArMTUs
OCBAQAogCiAjaWYgIWRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZWxz
ZQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAjZW5kaWYgIC8vIF9XSU4zMgogI2luY2x1ZGUgPGNz
dGRpbz4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jbG9ja190ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9jbG9ja190ZXN0LmNjCmluZGV4IDcwNzE2NmQwYzI4OWIxNjJlNzQ1YTYzYmYwZGJmYzNlZGE1
MjBlN2IuLjRiY2ZjNmJjNzI3MjY3ZjEyYzIwZDc5ZjcwYzJlNWM5Nzg3NDc4MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvY2xvY2tfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Nsb2NrX3Rlc3Qu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvZHVyYXRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2R1cmF0aW9uLmNjCmluZGV4IDI5
NTBjN2NkYzYzMjBiNGQzZjg0MzRiMWUyYjAxYWQ1NmQ3MmRiNDAuLmEzYWM2MWE5MTg5NGI0ZTVh
NmI2NDczYzgwODk1ZGMwMDAyMmUxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb24u
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbi5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApAQCAtNDksNiArNDksMTAgQEAKIC8vCiAvLyBBcml0aG1ldGljIG92
ZXJmbG93cy91bmRlcmZsb3dzIHRvICsvLSBpbmZpbml0eSBhbmQgc2F0dXJhdGVzLgogCisjaWYg
ZGVmaW5lZChfTVNDX1ZFUikKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPiAgLy8gZm9yIHRpbWV2YWwK
KyNlbmRpZgorCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5j
bHVkZSA8Y2N0eXBlPgpAQCAtNzgsMTAgKzgyLDE2IEBAIGNvbnN0ZXhwciBpbnQ2NF90IGtpbnQ2
NG1pbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpOwogCiAvLyBDYW4ndCB1
c2Ugc3RkOjppc2luZmluaXRlKCkgYmVjYXVzZSBpdCBkb2Vzbid0IGV4aXN0IG9uIHdpbmRvd3Mu
CiBpbmxpbmUgYm9vbCBJc0Zpbml0ZShkb3VibGUgZCkgeworICBpZiAoc3RkOjppc25hbihkKSkg
cmV0dXJuIGZhbHNlOwogICByZXR1cm4gZCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkgJiYKICAgICAgICAgIGQgIT0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6aW5maW5pdHkoKTsKIH0KIAoraW5saW5lIGJvb2wgSXNWYWxpZERpdmlzb3IoZG91YmxlIGQp
IHsKKyAgaWYgKHN0ZDo6aXNuYW4oZCkpIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIGQgIT0gMC4w
OworfQorCiAvLyBDYW4ndCB1c2Ugc3RkOjpyb3VuZCgpIGJlY2F1c2UgaXQgaXMgb25seSBhdmFp
bGFibGUgaW4gQysrMTEuCiAvLyBOb3RlIHRoYXQgd2UgaWdub3JlIHRoZSBwb3NzaWJpbGl0eSBv
ZiBmbG9hdGluZy1wb2ludCBvdmVyL3VuZGVyZmxvdy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBEb3Vi
bGU+CkBAIC00NTUsNyArNDY1LDcgQEAgRHVyYXRpb24mIER1cmF0aW9uOjpvcGVyYXRvci89KGlu
dDY0X3QgcikgewogfQogCiBEdXJhdGlvbiYgRHVyYXRpb246Om9wZXJhdG9yLz0oZG91YmxlIHIp
IHsKLSAgaWYgKHRpbWVfaW50ZXJuYWw6OklzSW5maW5pdGVEdXJhdGlvbigqdGhpcykgfHwgciA9
PSAwLjApIHsKKyAgaWYgKHRpbWVfaW50ZXJuYWw6OklzSW5maW5pdGVEdXJhdGlvbigqdGhpcykg
fHwgIUlzVmFsaWREaXZpc29yKHIpKSB7CiAgICAgY29uc3QgYm9vbCBpc19uZWcgPSAoc3RkOjpz
aWduYml0KHIpICE9IDApICE9IChyZXBfaGlfIDwgMCk7CiAgICAgcmV0dXJuICp0aGlzID0gaXNf
bmVnID8gLUluZmluaXRlRHVyYXRpb24oKSA6IEluZmluaXRlRHVyYXRpb24oKTsKICAgfQpAQCAt
NzQzLDkgKzc1Myw5IEBAIHZvaWQgQXBwZW5kTnVtYmVyVW5pdChzdGQ6OnN0cmluZyogb3V0LCBk
b3VibGUgbiwgRGlzcGxheVVuaXQgdW5pdCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIAotLy8gRnJv
bSBHbydzIGRvYyBhdCBodHRwOi8vZ29sYW5nLm9yZy9wa2cvdGltZS8jRHVyYXRpb24uU3RyaW5n
CisvLyBGcm9tIEdvJ3MgZG9jIGF0IGh0dHBzOi8vZ29sYW5nLm9yZy9wa2cvdGltZS8jRHVyYXRp
b24uU3RyaW5nCiAvLyAgIFtGb3JtYXREdXJhdGlvbl0gcmV0dXJucyBhIHN0cmluZyByZXByZXNl
bnRpbmcgdGhlIGR1cmF0aW9uIGluIHRoZQotLy8gICBmb3JtICI3MmgzbTAuNXMiLiAgTGVhZGlu
ZyB6ZXJvIHVuaXRzIGFyZSBvbWl0dGVkLiAgQXMgYSBzcGVjaWFsCisvLyAgIGZvcm0gIjcyaDNt
MC41cyIuIExlYWRpbmcgemVybyB1bml0cyBhcmUgb21pdHRlZC4gIEFzIGEgc3BlY2lhbAogLy8g
ICBjYXNlLCBkdXJhdGlvbnMgbGVzcyB0aGFuIG9uZSBzZWNvbmQgZm9ybWF0IHVzZSBhIHNtYWxs
ZXIgdW5pdAogLy8gICAobWlsbGktLCBtaWNyby0sIG9yIG5hbm9zZWNvbmRzKSB0byBlbnN1cmUg
dGhhdCB0aGUgbGVhZGluZyBkaWdpdAogLy8gICBpcyBub24temVyby4gIFRoZSB6ZXJvIGR1cmF0
aW9uIGZvcm1hdHMgYXMgMCwgd2l0aCBubyB1bml0LgpAQCAtODQ5LDggKzg1OSw4IEBAIGJvb2wg
Q29uc3VtZUR1cmF0aW9uVW5pdChjb25zdCBjaGFyKiogc3RhcnQsIER1cmF0aW9uKiB1bml0KSB7
CiAKIH0gIC8vIG5hbWVzcGFjZQogCi0vLyBGcm9tIEdvJ3MgZG9jIGF0IGh0dHA6Ly9nb2xhbmcu
b3JnL3BrZy90aW1lLyNQYXJzZUR1cmF0aW9uCi0vLyAgIFtQYXJzZUR1cmF0aW9uXSBwYXJzZXMg
YSBkdXJhdGlvbiBzdHJpbmcuICBBIGR1cmF0aW9uIHN0cmluZyBpcworLy8gRnJvbSBHbydzIGRv
YyBhdCBodHRwczovL2dvbGFuZy5vcmcvcGtnL3RpbWUvI1BhcnNlRHVyYXRpb24KKy8vICAgW1Bh
cnNlRHVyYXRpb25dIHBhcnNlcyBhIGR1cmF0aW9uIHN0cmluZy4gQSBkdXJhdGlvbiBzdHJpbmcg
aXMKIC8vICAgYSBwb3NzaWJseSBzaWduZWQgc2VxdWVuY2Ugb2YgZGVjaW1hbCBudW1iZXJzLCBl
YWNoIHdpdGggb3B0aW9uYWwKIC8vICAgZnJhY3Rpb24gYW5kIGEgdW5pdCBzdWZmaXgsIHN1Y2gg
YXMgIjMwMG1zIiwgIi0xLjVoIiBvciAiMmg0NW0iLgogLy8gICBWYWxpZCB0aW1lIHVuaXRzIGFy
ZSAibnMiLCAidXMiICJtcyIsICJzIiwgIm0iLCAiaCIuCkBAIC04OTUsNiArOTA1LDcgQEAgYm9v
bCBQYXJzZUR1cmF0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBkdXJfc3RyaW5nLCBEdXJhdGlvbiog
ZCkgewogICAqZCA9IGR1cjsKICAgcmV0dXJuIHRydWU7CiB9CisKIGJvb2wgUGFyc2VGbGFnKGNv
bnN0IHN0ZDo6c3RyaW5nJiB0ZXh0LCBEdXJhdGlvbiogZHN0LCBzdGQ6OnN0cmluZyogKSB7CiAg
IHJldHVybiBQYXJzZUR1cmF0aW9uKHRleHQsIGRzdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2R1cmF0aW9uX2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb25fYmVuY2htYXJr
LmNjCmluZGV4IGQ1NjU3YmQ1NzZhNWIzZWFlZmM4NDA1MjAzOWE3ZjM5MjFiNTdmYjcuLjgzYTgz
NmM4YzhhMmJiMmIzYWRmNjk2OWIzYjNkMjczZjgwMmM1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvZHVyYXRpb25fYmVuY2htYXJrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb25fYmVuY2ht
YXJrLmNjCkBAIC0zLDcgKzMsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNyw2
ICsxNyw3IEBACiAjaW5jbHVkZSA8Y3RpbWU+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVk
ZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJhYnNsL3RpbWUvdGltZS5oIgog
I2luY2x1ZGUgImJlbmNobWFyay9iZW5jaG1hcmsuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9kdXJhdGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbl90ZXN0LmNjCmluZGV4IDdh
ZTI1ZGM2OGY5YTYyMjEyOGE0ZTRlODg5YzBjNmZmZDJkZmY2NDkuLjVkY2U5YWM4YTU1NzljYWRi
OWNlYTMyMWU3N2Q5Zjg2MWYyOTZhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb25f
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2R1cmF0aW9uX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEyLDYgKzEyLDEwIEBACiAvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCiAvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIAorI2lmIGRlZmluZWQoX01T
Q19WRVIpCisjaW5jbHVkZSA8d2luc29jazIuaD4gIC8vIGZvciB0aW1ldmFsCisjZW5kaWYKKwog
I2luY2x1ZGUgPGNocm9ubz4gIC8vIE5PTElOVChidWlsZC9jKysxMSkKICNpbmNsdWRlIDxjbWF0
aD4KICNpbmNsdWRlIDxjc3RkaW50PgpAQCAtNTYsNiArNjAsMTcgQEAgTUFUQ0hFUl9QKFRpbWV2
YWxNYXRjaGVyLCB0diwgIiIpIHsKICAgcmV0dXJuIGZhbHNlOwogfQogCitURVNUKER1cmF0aW9u
LCBDb25zdEV4cHIpIHsKKyAgY29uc3RleHByIGFic2w6OkR1cmF0aW9uIGQwID0gYWJzbDo6WmVy
b0R1cmF0aW9uKCk7CisgIHN0YXRpY19hc3NlcnQoZDAgPT0gYWJzbDo6WmVyb0R1cmF0aW9uKCks
ICJaZXJvRHVyYXRpb24oKSIpOworICBjb25zdGV4cHIgYWJzbDo6RHVyYXRpb24gZDEgPSBhYnNs
OjpTZWNvbmRzKDEpOworICBzdGF0aWNfYXNzZXJ0KGQxID09IGFic2w6OlNlY29uZHMoMSksICJT
ZWNvbmRzKDEpIik7CisgIHN0YXRpY19hc3NlcnQoZDEgIT0gYWJzbDo6WmVyb0R1cmF0aW9uKCks
ICJTZWNvbmRzKDEpIik7CisgIGNvbnN0ZXhwciBhYnNsOjpEdXJhdGlvbiBkMiA9IGFic2w6Oklu
ZmluaXRlRHVyYXRpb24oKTsKKyAgc3RhdGljX2Fzc2VydChkMiA9PSBhYnNsOjpJbmZpbml0ZUR1
cmF0aW9uKCksICJJbmZpbml0ZUR1cmF0aW9uKCkiKTsKKyAgc3RhdGljX2Fzc2VydChkMiAhPSBh
YnNsOjpaZXJvRHVyYXRpb24oKSwgIkluZmluaXRlRHVyYXRpb24oKSIpOworfQorCiBURVNUKER1
cmF0aW9uLCBWYWx1ZVNlbWFudGljcykgewogICAvLyBJZiB0aGlzIGNvbXBpbGVzLCB0aGUgdGVz
dCBwYXNzZXMuCiAgIGNvbnN0ZXhwciBhYnNsOjpEdXJhdGlvbiBhOyAgICAgIC8vIERlZmF1bHQg
Y29uc3RydWN0aW9uCkBAIC03OTIsNiArODA3LDQwIEBAIFRFU1QoRHVyYXRpb24sIERpdmlzaW9u
QnlaZXJvKSB7CiAgIEVYUEVDVF9FUSgtZGJsX2luZiwgYWJzbDo6RkRpdkR1cmF0aW9uKC1hbnlf
ZHVyLCB6ZXJvKSk7CiB9CiAKK1RFU1QoRHVyYXRpb24sIE5hTikgeworICAvLyBOb3RlIHRoYXQg
SUVFRSA3NTQgZG9lcyBub3QgZGVmaW5lIHRoZSBiZWhhdmlvciBvZiBhIG5hbidzIHNpZ24gd2hl
biBpdCBpcworICAvLyBjb3BpZWQsIHNvIHRoZSBjb2RlIGJlbG93IGFsbG93cyBmb3IgZWl0aGVy
ICsgb3IgLSBJbmZpbml0ZUR1cmF0aW9uLgorI2RlZmluZSBURVNUX05BTl9IQU5ETElORyhOQU1F
LCBOQU4pICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBjb25zdCBhdXRvIGluZiA9IGFic2w6OkluZmluaXRlRHVyYXRpb24o
KTsgXAorICAgIGF1dG8geCA9IE5BTUUoTkFOKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgRVhQRUNUX1RSVUUoeCA9PSBpbmYgfHwgeCA9PSAtaW5mKTsgICAgICAgIFwKKyAgICBhdXRv
IHkgPSBOQU1FKDQyKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHkgKj0gTkFOOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUoeSA9PSBp
bmYgfHwgeSA9PSAtaW5mKTsgICAgICAgIFwKKyAgICBhdXRvIHogPSBOQU1FKDQyKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHogLz0gTkFOOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUoeiA9PSBpbmYgfHwgeiA9PSAtaW5mKTsgICAg
ICAgIFwKKyAgfSB3aGlsZSAoMCkKKworICBjb25zdCBkb3VibGUgbmFuID0gc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKKyAgVEVTVF9OQU5fSEFORExJTkcoYWJzbDo6
TmFub3NlY29uZHMsIG5hbik7CisgIFRFU1RfTkFOX0hBTkRMSU5HKGFic2w6Ok1pY3Jvc2Vjb25k
cywgbmFuKTsKKyAgVEVTVF9OQU5fSEFORExJTkcoYWJzbDo6TWlsbGlzZWNvbmRzLCBuYW4pOwor
ICBURVNUX05BTl9IQU5ETElORyhhYnNsOjpTZWNvbmRzLCBuYW4pOworICBURVNUX05BTl9IQU5E
TElORyhhYnNsOjpNaW51dGVzLCBuYW4pOworICBURVNUX05BTl9IQU5ETElORyhhYnNsOjpIb3Vy
cywgbmFuKTsKKworICBURVNUX05BTl9IQU5ETElORyhhYnNsOjpOYW5vc2Vjb25kcywgLW5hbik7
CisgIFRFU1RfTkFOX0hBTkRMSU5HKGFic2w6Ok1pY3Jvc2Vjb25kcywgLW5hbik7CisgIFRFU1Rf
TkFOX0hBTkRMSU5HKGFic2w6Ok1pbGxpc2Vjb25kcywgLW5hbik7CisgIFRFU1RfTkFOX0hBTkRM
SU5HKGFic2w6OlNlY29uZHMsIC1uYW4pOworICBURVNUX05BTl9IQU5ETElORyhhYnNsOjpNaW51
dGVzLCAtbmFuKTsKKyAgVEVTVF9OQU5fSEFORExJTkcoYWJzbDo6SG91cnMsIC1uYW4pOworCisj
dW5kZWYgVEVTVF9OQU5fSEFORExJTkcKK30KKwogVEVTVChEdXJhdGlvbiwgUmFuZ2UpIHsKICAg
Y29uc3QgYWJzbDo6RHVyYXRpb24gcmFuZ2UgPSBBcHByb3hZZWFycygxMDAgKiAxZTkpOwogICBj
b25zdCBhYnNsOjpEdXJhdGlvbiByYW5nZV9mdXR1cmUgPSByYW5nZTsKQEAgLTE3MjYsNyArMTc3
NSw3IEBAIFRFU1QoRHVyYXRpb24sIFBhcnNlRHVyYXRpb24pIHsKIFRFU1QoRHVyYXRpb24sIEZv
cm1hdFBhcnNlUm91bmRUcmlwKSB7CiAjZGVmaW5lIFRFU1RfUEFSU0VfUk9VTkRUUklQKGQpICAg
ICAgICAgICAgICAgIFwKICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpGb3JtYXREdXJhdGlvbihkKTsgICAg
ICAgIFwKKyAgICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6Rm9ybWF0RHVyYXRpb24oZCk7ICAgXAog
ICAgIGFic2w6OkR1cmF0aW9uIGR1cjsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgRVhQ
RUNUX1RSVUUoYWJzbDo6UGFyc2VEdXJhdGlvbihzLCAmZHVyKSk7IFwKICAgICBFWFBFQ1RfRVEo
ZCwgZHVyKTsgICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9mb3JtYXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Zvcm1hdC5jYwppbmRleCBlZTU5N2U0MDdhOWRkZDIy
NmE4Zjg4MDY1OWYyZDUwNDI3ZjkxOTJiLi5kNmNhODYwMDM4ZGMyZjYxM2RmODQyMTBjNTg3ODY1
NWM3NDNkOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Zvcm1hdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2Zvcm1hdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtNjcsNyArNjcsOCBAQCBhYnNsOjpUaW1lIEpvaW4oY29uc3QgY2N0el9wYXJ0cyYgcGFydHMp
IHsKIAogfSAgLy8gbmFtZXNwYWNlCiAKLXN0ZDo6c3RyaW5nIEZvcm1hdFRpbWUoY29uc3Qgc3Rk
OjpzdHJpbmcmIGZvcm1hdCwgYWJzbDo6VGltZSB0LCBhYnNsOjpUaW1lWm9uZSB0eikgeworc3Rk
OjpzdHJpbmcgRm9ybWF0VGltZShjb25zdCBzdGQ6OnN0cmluZyYgZm9ybWF0LCBhYnNsOjpUaW1l
IHQsCisgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlRpbWVab25lIHR6KSB7CiAgIGlmICh0
ID09IGFic2w6OkluZmluaXRlRnV0dXJlKCkpIHJldHVybiBrSW5maW5pdGVGdXR1cmVTdHI7CiAg
IGlmICh0ID09IGFic2w6OkluZmluaXRlUGFzdCgpKSByZXR1cm4ga0luZmluaXRlUGFzdFN0cjsK
ICAgY29uc3QgYXV0byBwYXJ0cyA9IFNwbGl0KHQpOwpAQCAtODMsMTUgKzg0LDE1IEBAIHN0ZDo6
c3RyaW5nIEZvcm1hdFRpbWUoYWJzbDo6VGltZSB0KSB7CiAgIHJldHVybiBhYnNsOjpGb3JtYXRU
aW1lKFJGQzMzMzlfZnVsbCwgdCwgYWJzbDo6TG9jYWxUaW1lWm9uZSgpKTsKIH0KIAotYm9vbCBQ
YXJzZVRpbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlu
cHV0LCBhYnNsOjpUaW1lKiB0aW1lLAotICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIGVycikg
eworYm9vbCBQYXJzZVRpbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpz
dHJpbmcmIGlucHV0LAorICAgICAgICAgICAgICAgYWJzbDo6VGltZSogdGltZSwgc3RkOjpzdHJp
bmcqIGVycikgewogICByZXR1cm4gYWJzbDo6UGFyc2VUaW1lKGZvcm1hdCwgaW5wdXQsIGFic2w6
OlVUQ1RpbWVab25lKCksIHRpbWUsIGVycik7CiB9CiAKIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcg
ZG9lcyBub3QgY29udGFpbiBhbiBleHBsaWNpdCBVVEMgb2Zmc2V0LCBpbnRlcnByZXQKIC8vIHRo
ZSBmaWVsZHMgd2l0aCByZXNwZWN0IHRvIHRoZSBnaXZlbiBUaW1lWm9uZS4KLWJvb2wgUGFyc2VU
aW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwg
YWJzbDo6VGltZVpvbmUgdHosCi0gICAgICAgICAgICAgICBhYnNsOjpUaW1lKiB0aW1lLCBzdGQ6
OnN0cmluZyogZXJyKSB7Citib29sIFBhcnNlVGltZShjb25zdCBzdGQ6OnN0cmluZyYgZm9ybWF0
LCBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsCisgICAgICAgICAgICAgICBhYnNsOjpUaW1lWm9u
ZSB0eiwgYWJzbDo6VGltZSogdGltZSwgc3RkOjpzdHJpbmcqIGVycikgewogICBjb25zdCBjaGFy
KiBkYXRhID0gaW5wdXQuY19zdHIoKTsKICAgd2hpbGUgKHN0ZDo6aXNzcGFjZSgqZGF0YSkpICsr
ZGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXRfYmVuY2htYXJrLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9mb3JtYXRfYmVuY2htYXJrLmNjCmluZGV4IGVlNTNkNzFjNjg1NDg0YzI5MWI2NDdj
ZjA5ZjVhNWM5MGI5NzcyZjMuLjI0OWM1MWQ4NzU4NjY3NGJiOTc3ODdjMjUyNzdkYTFlM2QxZjAy
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0X2JlbmNobWFyay5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2Zvcm1hdF9iZW5jaG1hcmsuY2MKQEAgLTMsNyArMyw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTM4LDcgKzM4LDggQEAgdm9pZCBCTV9Gb3JtYXRfRm9ybWF0VGltZShi
ZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBjb25zdCBhYnNsOjpUaW1lWm9uZSBsYXggPQog
ICAgICAgYWJzbDo6dGltZV9pbnRlcm5hbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL0xvc19Bbmdl
bGVzIik7CiAgIGNvbnN0IGFic2w6OlRpbWUgdCA9Ci0gICAgICBhYnNsOjpGcm9tRGF0ZVRpbWUo
MTk3NywgNiwgMjgsIDksIDgsIDcsIGxheCkgKyBhYnNsOjpOYW5vc2Vjb25kcygxKTsKKyAgICAg
IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgxOTc3LCA2LCAyOCwgOSwgOCwgNyks
IGxheCkgKworICAgICAgYWJzbDo6TmFub3NlY29uZHMoMSk7CiAgIHdoaWxlIChzdGF0ZS5LZWVw
UnVubmluZygpKSB7CiAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGFic2w6OkZvcm1hdFRp
bWUoZm10LCB0LCBsYXgpLmxlbmd0aCgpKTsKICAgfQpAQCAtNTAsOCArNTEsOCBAQCB2b2lkIEJN
X0Zvcm1hdF9QYXJzZVRpbWUoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgc3RhdGUuU2V0
TGFiZWwoZm10KTsKICAgY29uc3QgYWJzbDo6VGltZVpvbmUgbGF4ID0KICAgICAgIGFic2w6OnRp
bWVfaW50ZXJuYWw6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIpOwotICBhYnNs
OjpUaW1lIHQgPQotICAgICAgYWJzbDo6RnJvbURhdGVUaW1lKDE5NzcsIDYsIDI4LCA5LCA4LCA3
LCBsYXgpICsgYWJzbDo6TmFub3NlY29uZHMoMSk7CisgIGFic2w6OlRpbWUgdCA9IGFic2w6OkZy
b21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgxOTc3LCA2LCAyOCwgOSwgOCwgNyksIGxheCkgKwor
ICAgICAgICAgICAgICAgICBhYnNsOjpOYW5vc2Vjb25kcygxKTsKICAgY29uc3Qgc3RkOjpzdHJp
bmcgd2hlbiA9IGFic2w6OkZvcm1hdFRpbWUoZm10LCB0LCBsYXgpOwogICBzdGQ6OnN0cmluZyBl
cnI7CiAgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2Zvcm1hdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXRfdGVzdC5jYwppbmRleCA3Yzg0
YzMzZjFlYjU1YzIzMGVlYWQ0NDYxM2YwN2RiMDhhZmVmMjgzLi5hYjFmMzA1OTRlYTk4ZDJhYmE3
MzU5ODIzMmUxYjk0ZDZjMWJmYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Zvcm1hdF90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI3LDggKzI3LDggQEAgbmFtZXNwYWNlIHsKIAogLy8g
QSBoZWxwZXIgdGhhdCB0ZXN0cyB0aGUgZ2l2ZW4gZm9ybWF0IHNwZWNpZmllciBieSBpdHNlbGYs
IGFuZCB3aXRoIGxlYWRpbmcKIC8vIGFuZCB0cmFpbGluZyBjaGFyYWN0ZXJzLiAgRm9yIGV4YW1w
bGU6IFRlc3RGb3JtYXRTcGVjaWZpZXIodCwgIiVhIiwgIlRodSIpLgotdm9pZCBUZXN0Rm9ybWF0
U3BlY2lmaWVyKGFic2w6OlRpbWUgdCwgYWJzbDo6VGltZVpvbmUgdHosIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFu
cykgewordm9pZCBUZXN0Rm9ybWF0U3BlY2lmaWVyKGFic2w6OlRpbWUgdCwgYWJzbDo6VGltZVpv
bmUgdHosCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZtdCwg
Y29uc3Qgc3RkOjpzdHJpbmcmIGFucykgewogICBFWFBFQ1RfRVEoYW5zLCBhYnNsOjpGb3JtYXRU
aW1lKGZtdCwgdCwgdHopKTsKICAgRVhQRUNUX0VRKCJ4eHggIiArIGFucywgYWJzbDo6Rm9ybWF0
VGltZSgieHh4ICIgKyBmbXQsIHQsIHR6KSk7CiAgIEVYUEVDVF9FUShhbnMgKyAiIHl5eSIsIGFi
c2w6OkZvcm1hdFRpbWUoZm10ICsgIiB5eXkiLCB0LCB0eikpOwpAQCAtMTE4LDcgKzExOCw3IEBA
IFRFU1QoRm9ybWF0VGltZSwgUkZDMTEyM0Zvcm1hdFBhZHNZZWFyKSB7ICAvLyBsb2NhbGUgc3Bl
Y2lmaWMKICAgYWJzbDo6VGltZVpvbmUgdHogPSBhYnNsOjpVVENUaW1lWm9uZSgpOwogCiAgIC8v
IEEgeWVhciBvZiA3NyBzaG91bGQgYmUgcGFkZGVkIHRvIDAwNzcuCi0gIGFic2w6OlRpbWUgdCA9
IGFic2w6OkZyb21EYXRlVGltZSg3NywgNiwgMjgsIDksIDgsIDcsIHR6KTsKKyAgYWJzbDo6VGlt
ZSB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDc3LCA2LCAyOCwgOSwgOCwg
NyksIHR6KTsKICAgRVhQRUNUX0VRKCJNb24sIDI4IEp1biAwMDc3IDA5OjA4OjA3ICswMDAwIiwK
ICAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoYWJzbDo6UkZDMTEyM19mdWxsLCB0LCB0eikp
OwogICBFWFBFQ1RfRVEoIjI4IEp1biAwMDc3IDA5OjA4OjA3ICswMDAwIiwKQEAgLTE1NCw5ICsx
NTQsOSBAQCBURVNUKFBhcnNlVGltZSwgQmFzaWNzKSB7CiAgIEVYUEVDVF9UUlVFKGFic2w6OlBh
cnNlVGltZSgiJVktJW0tJWQgJUg6JU06JVMgJXoiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjIwMTMtMDYtMjggMTk6MDg6MDkgLTA4MDAiLCAmdCwgJmVycikpCiAgICAgICA8PCBl
cnI7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IHQuSW4oYWJzbDo6Rml4ZWRUaW1lWm9u
ZSgtOCAqIDYwICogNjApKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxMywg
NiwgMjgsIDE5LCA4LCA5LCAtOCAqIDYwICogNjAsIGZhbHNlKTsKLSAgRVhQRUNUX0VRKGFic2w6
Olplcm9EdXJhdGlvbigpLCBiZC5zdWJzZWNvbmQpOworICBjb25zdCBhdXRvIGNpID0gYWJzbDo6
Rml4ZWRUaW1lWm9uZSgtOCAqIDYwICogNjApLkF0KHQpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2
aWxTZWNvbmQoMjAxMywgNiwgMjgsIDE5LCA4LCA5KSwgY2kuY3MpOworICBFWFBFQ1RfRVEoYWJz
bDo6WmVyb0R1cmF0aW9uKCksIGNpLnN1YnNlY29uZCk7CiB9CiAKIFRFU1QoUGFyc2VUaW1lLCBO
dWxsRXJyb3JTdHJpbmcpIHsKQEAgLTE3NywxNyArMTc3LDE3IEBAIFRFU1QoUGFyc2VUaW1lLCBX
aXRoVGltZVpvbmUpIHsKICAgRVhQRUNUX1RSVUUoCiAgICAgICBhYnNsOjpQYXJzZVRpbWUoIiVZ
LSVtLSVkICVIOiVNOiVTIiwgIjIwMTMtMDYtMjggMTk6MDg6MDkiLCB0eiwgJnQsICZlKSkKICAg
ICAgIDw8IGU7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IHQuSW4odHopOwotICBBQlNM
X0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEzLCA2LCAyOCwgMTksIDgsIDksIC03ICogNjAg
KiA2MCwgdHJ1ZSk7Ci0gIEVYUEVDVF9FUShhYnNsOjpaZXJvRHVyYXRpb24oKSwgYmQuc3Vic2Vj
b25kKTsKKyAgYXV0byBjaSA9IHR6LkF0KHQpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxTZWNv
bmQoMjAxMywgNiwgMjgsIDE5LCA4LCA5KSwgY2kuY3MpOworICBFWFBFQ1RfRVEoYWJzbDo6WmVy
b0R1cmF0aW9uKCksIGNpLnN1YnNlY29uZCk7CiAKICAgLy8gQnV0IHRoZSB0aW1lem9uZSBpcyBp
Z25vcmVkIHdoZW4gYSBVVEMgb2Zmc2V0IGlzIHByZXNlbnQuCiAgIEVYUEVDVF9UUlVFKGFic2w6
OlBhcnNlVGltZSgiJVktJW0tJWQgJUg6JU06JVMgJXoiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIjIwMTMtMDYtMjggMTk6MDg6MDkgKzA4MDAiLCB0eiwgJnQsICZlKSkKICAgICAg
IDw8IGU7Ci0gIGJkID0gdC5JbihhYnNsOjpGaXhlZFRpbWVab25lKDggKiA2MCAqIDYwKSk7Ci0g
IEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDYsIDI4LCAxOSwgOCwgOSwgOCAq
IDYwICogNjAsIGZhbHNlKTsKLSAgRVhQRUNUX0VRKGFic2w6Olplcm9EdXJhdGlvbigpLCBiZC5z
dWJzZWNvbmQpOworICBjaSA9IGFic2w6OkZpeGVkVGltZVpvbmUoOCAqIDYwICogNjApLkF0KHQp
OworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgNiwgMjgsIDE5LCA4LCA5KSwg
Y2kuY3MpOworICBFWFBFQ1RfRVEoYWJzbDo6WmVyb0R1cmF0aW9uKCksIGNpLnN1YnNlY29uZCk7
CiB9CiAKIFRFU1QoUGFyc2VUaW1lLCBFcnJvckNhc2VzKSB7CkBAIC0yMDEsNyArMjAxLDcgQEAg
VEVTVChQYXJzZVRpbWUsIEVycm9yQ2FzZXMpIHsKICAgZXJyLmNsZWFyKCk7CiAgIEVYUEVDVF9G
QUxTRShhYnNsOjpQYXJzZVRpbWUoIiVRIiwgIngiLCAmdCwgJmVycikpIDw8IGVycjsKICAgLy8g
RXhhY3QgY29udGVudHMgb2YgImVyciIgYXJlIHBsYXRmb3JtLWRlcGVuZGVudCBiZWNhdXNlIG9m
Ci0gIC8vIGRpZmZlcmVuY2VzIGluIHRoZSBzdHJwdGltZSBpbXBsZW1lbnRhdGlvbiBiZXR3ZWVu
IE9TWCBhbmQgTGludXguCisgIC8vIGRpZmZlcmVuY2VzIGluIHRoZSBzdHJwdGltZSBpbXBsZW1l
bnRhdGlvbiBiZXR3ZWVuIG1hY09TIGFuZCBMaW51eC4KICAgRVhQRUNUX0ZBTFNFKGVyci5lbXB0
eSgpKTsKIAogICAvLyBGYWlscyBiZWNhdXNlIG9mIHRyYWlsaW5nLCB1bnBhcnNlZCBkYXRhICJi
bGFoIi4KQEAgLTMzMiwxNSArMzMyLDE1IEBAIFRFU1QoUGFyc2VUaW1lLCBJbmZpbml0ZVRpbWUp
IHsKICAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VUaW1lKCJpbmZpbml0ZS1mdXR1cmUgJUg6JU0i
LCAiaW5maW5pdGUtZnV0dXJlIDAzOjA0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZ0LCAmZXJyKSk7CiAgIEVYUEVDVF9ORShhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpLCB0KTsKLSAg
RVhQRUNUX0VRKDMsIHQuSW4odHopLmhvdXIpOwotICBFWFBFQ1RfRVEoNCwgdC5Jbih0eikubWlu
dXRlKTsKKyAgRVhQRUNUX0VRKDMsIHR6LkF0KHQpLmNzLmhvdXIoKSk7CisgIEVYUEVDVF9FUSg0
LCB0ei5BdCh0KS5jcy5taW51dGUoKSk7CiAKICAgLy8gImluZmluaXRlLXBhc3QiIGFzIGxpdGVy
YWwgc3RkOjpzdHJpbmcKICAgRVhQRUNUX1RSVUUoCiAgICAgICBhYnNsOjpQYXJzZVRpbWUoImlu
ZmluaXRlLXBhc3QgJUg6JU0iLCAiaW5maW5pdGUtcGFzdCAwMzowNCIsICZ0LCAmZXJyKSk7CiAg
IEVYUEVDVF9ORShhYnNsOjpJbmZpbml0ZVBhc3QoKSwgdCk7Ci0gIEVYUEVDVF9FUSgzLCB0Lklu
KHR6KS5ob3VyKTsKLSAgRVhQRUNUX0VRKDQsIHQuSW4odHopLm1pbnV0ZSk7CisgIEVYUEVDVF9F
USgzLCB0ei5BdCh0KS5jcy5ob3VyKCkpOworICBFWFBFQ1RfRVEoNCwgdHouQXQodCkuY3MubWlu
dXRlKCkpOwogCiAgIC8vIFRoZSBpbnB1dCBkb2Vzbid0IG1hdGNoIHRoZSBmb3JtYXQuCiAgIEVY
UEVDVF9GQUxTRShhYnNsOjpQYXJzZVRpbWUoImluZmluaXRlLWZ1dHVyZSAlSDolTSIsICIwMzow
NCIsICZ0LCAmZXJyKSk7CkBAIC0zNjUsMTYgKzM2NSwxOCBAQCBURVNUKFBhcnNlVGltZSwgRmFp
bHNPblVucmVwcmVzZW50YWJsZVRpbWUpIHsKIC8vCiAKIFRFU1QoRm9ybWF0UGFyc2UsIFJvdW5k
VHJpcCkgewotICBjb25zdCBhYnNsOjpUaW1lWm9uZSBnc3QgPQorICBjb25zdCBhYnNsOjpUaW1l
Wm9uZSBsYXggPQogICAgICAgYWJzbDo6dGltZV9pbnRlcm5hbDo6TG9hZFRpbWVab25lKCJBbWVy
aWNhL0xvc19BbmdlbGVzIik7Ci0gIGNvbnN0IGFic2w6OlRpbWUgaW4gPSBhYnNsOjpGcm9tRGF0
ZVRpbWUoMTk3NywgNiwgMjgsIDksIDgsIDcsIGdzdCk7CisgIGNvbnN0IGFic2w6OlRpbWUgaW4g
PQorICAgICAgYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDE5NzcsIDYsIDI4LCA5
LCA4LCA3KSwgbGF4KTsKICAgY29uc3QgYWJzbDo6RHVyYXRpb24gc3Vic2Vjb25kcyA9IGFic2w6
Ok5hbm9zZWNvbmRzKDY1NDMyMSk7CiAgIHN0ZDo6c3RyaW5nIGVycjsKIAogICAvLyBSRkMzMzM5
LCB3aGljaCByZW5kZXJzIHN1YnNlY29uZHMuCiAgIHsKICAgICBhYnNsOjpUaW1lIG91dDsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyBzID0gYWJzbDo6Rm9ybWF0VGltZShhYnNsOjpSRkMzMzM5X2Z1
bGwsIGluICsgc3Vic2Vjb25kcywgZ3N0KTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBzID0KKyAg
ICAgICAgYWJzbDo6Rm9ybWF0VGltZShhYnNsOjpSRkMzMzM5X2Z1bGwsIGluICsgc3Vic2Vjb25k
cywgbGF4KTsKICAgICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZVRpbWUoYWJzbDo6UkZDMzMzOV9m
dWxsLCBzLCAmb3V0LCAmZXJyKSkKICAgICAgICAgPDwgcyA8PCAiOiAiIDw8IGVycjsKICAgICBF
WFBFQ1RfRVEoaW4gKyBzdWJzZWNvbmRzLCBvdXQpOyAgLy8gUkZDMzMzOV9mdWxsIGluY2x1ZGVz
ICVFegpAQCAtMzgzLDcgKzM4NSw3IEBAIFRFU1QoRm9ybWF0UGFyc2UsIFJvdW5kVHJpcCkgewog
ICAvLyBSRkMxMTIzLCB3aGljaCBvbmx5IGRvZXMgd2hvbGUgc2Vjb25kcy4KICAgewogICAgIGFi
c2w6OlRpbWUgb3V0OwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpGb3JtYXRUaW1l
KGFic2w6OlJGQzExMjNfZnVsbCwgaW4sIGdzdCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9
IGFic2w6OkZvcm1hdFRpbWUoYWJzbDo6UkZDMTEyM19mdWxsLCBpbiwgbGF4KTsKICAgICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZVRpbWUoYWJzbDo6UkZDMTEyM19mdWxsLCBzLCAmb3V0LCAmZXJy
KSkKICAgICAgICAgPDwgcyA8PCAiOiAiIDw8IGVycjsKICAgICBFWFBFQ1RfRVEoaW4sIG91dCk7
ICAvLyBSRkMxMTIzX2Z1bGwgaW5jbHVkZXMgJXoKQEAgLTM5Myw3ICszOTUsMTIgQEAgVEVTVChG
b3JtYXRQYXJzZSwgUm91bmRUcmlwKSB7CiAgIC8vIHdvcmsuIE9uIFdpbmRvd3MsIGBhYnNsOjpQ
YXJzZVRpbWUoKWAgZmFsbHMgYmFjayB0byBzdGQ6OmdldF90aW1lKCkgd2hpY2gKICAgLy8gYXBw
ZWFycyB0byBmYWlsIG9uICIlYyIgKG9yIGF0IGxlYXN0IG9uIHRoZSAiJWMiIHRleHQgcHJvZHVj
ZWQgYnkKICAgLy8gYHN0cmZ0aW1lKClgKS4gVGhpcyBtYWtlcyBpdCBmYWlsIHRoZSByb3VuZC10
cmlwIHRlc3QuCi0jaWZuZGVmIF9NU0NfVkVSCisgIC8vCisgIC8vIFVuZGVyIHRoZSBlbXNjcmlw
dGVuIGNvbXBpbGVyIGBhYnNsOjpQYXJzZVRpbWUoKSBmYWxscyBiYWNrIHRvCisgIC8vIGBzdHJw
dGltZSgpYCwgYnV0IHRoYXQgZW5kcyB1cCB1c2luZyBhIGRpZmZlcmVudCBkZWZpbml0aW9uIGZv
ciAiJWMiCisgIC8vIGNvbXBhcmVkIHRvIGBzdHJmdGltZSgpYCwgYWxzbyBjYXVzaW5nIHRoZSBy
b3VuZC10cmlwIHRlc3QgdG8gZmFpbAorICAvLyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9rcmlw
a2VuL2Vtc2NyaXB0ZW4vcHVsbC83NDkxKS4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRl
ZmluZWQoX19FTVNDUklQVEVOX18pCiAgIC8vIEV2ZW4gdGhvdWdoIHdlIGRvbid0IGtub3cgd2hh
dCAlYyB3aWxsIHByb2R1Y2UsIGl0IHNob3VsZCByb3VuZHRyaXAsCiAgIC8vIGJ1dCBvbmx5IGlu
IHRoZSAwLW9mZnNldCB0aW1lem9uZS4KICAgewpAQCAtNDAyLDcgKzQwOSw3IEBAIFRFU1QoRm9y
bWF0UGFyc2UsIFJvdW5kVHJpcCkgewogICAgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlVGltZSgi
JWMiLCBzLCAmb3V0LCAmZXJyKSkgPDwgcyA8PCAiOiAiIDw8IGVycjsKICAgICBFWFBFQ1RfRVEo
aW4sIG91dCk7CiAgIH0KLSNlbmRpZiAgLy8gX01TQ19WRVIKKyNlbmRpZiAgLy8gIV9NU0NfVkVS
ICYmICFfX0VNU0NSSVBURU5fXwogfQogCiBURVNUKEZvcm1hdFBhcnNlLCBSb3VuZFRyaXBEaXN0
YW50RnV0dXJlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovQlVJTEQu
YmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovQlVJTEQuYmF6ZWwKaW5kZXggOWYxYmEy
MWNmN2UyMWIyMmYzMzQzZjg0MDAxYTQzNGE4M2I2MDZiNS4uYjA1YzIzNDcxNGU0Y2I5ZDkxY2Iz
MGJmMWJkZTRhZTcyMDZhN2UxMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L0JVSUxELmJhemVsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9CVUlMRC5iYXplbApA
QCAtNCw3ICs0LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKICMKLSMgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKyMgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAj
CiAjICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogIyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMiw4ICsxMiwyNCBAQAogIyAgIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKICMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIAorcGFja2FnZShm
ZWF0dXJlcyA9IFsiLXBhcnNlX2hlYWRlcnMiXSkKKwogbGljZW5zZXMoWyJub3RpY2UiXSkgICMg
QXBhY2hlIExpY2Vuc2UKIAorY29uZmlnX3NldHRpbmcoCisgICAgbmFtZSA9ICJvc3giLAorICAg
IGNvbnN0cmFpbnRfdmFsdWVzID0gWworICAgICAgICAiQGJhemVsX3Rvb2xzLy9wbGF0Zm9ybXM6
b3N4IiwKKyAgICBdLAorKQorCitjb25maWdfc2V0dGluZygKKyAgICBuYW1lID0gImlvcyIsCisg
ICAgY29uc3RyYWludF92YWx1ZXMgPSBbCisgICAgICAgICJAYmF6ZWxfdG9vbHMvL3BsYXRmb3Jt
czppb3MiLAorICAgIF0sCispCisKICMjIyBsaWJyYXJpZXMKIAogY2NfbGlicmFyeSgKQEAgLTYw
LDYgKzc2LDE1IEBAIGNjX2xpYnJhcnkoCiAgICAgICAgICJpbmNsdWRlL2NjdHovdGltZV96b25l
LmgiLAogICAgICAgICAiaW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3VyY2UuaCIsCiAgICAgXSwK
KyAgICBsaW5rb3B0cyA9IHNlbGVjdCh7CisgICAgICAgICI6b3N4IjogWworICAgICAgICAgICAg
Ii1mcmFtZXdvcmsgRm91bmRhdGlvbiIsCisgICAgICAgIF0sCisgICAgICAgICI6aW9zIjogWwor
ICAgICAgICAgICAgIi1mcmFtZXdvcmsgRm91bmRhdGlvbiIsCisgICAgICAgIF0sCisgICAgICAg
ICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFtdLAorICAgIH0pLAogICAgIHZpc2liaWxpdHkgPSBb
Ii8vdmlzaWJpbGl0eTpwdWJsaWMiXSwKICAgICBkZXBzID0gWyI6Y2l2aWxfdGltZSJdLAogKQpA
QCAtOTYsNiArMTIxLDcgQEAgY2NfdGVzdCgKIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJ0aW1lX3pv
bmVfbG9va3VwX3Rlc3QiLAogICAgIHNpemUgPSAic21hbGwiLAorICAgIHRpbWVvdXQgPSAibW9k
ZXJhdGUiLAogICAgIHNyY3MgPSBbInNyYy90aW1lX3pvbmVfbG9va3VwX3Rlc3QuY2MiXSwKICAg
ICBkYXRhID0gWyI6em9uZWluZm8iXSwKICAgICB0YWdzID0gWwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L0JV
SUxELmduCmluZGV4IDg2NDE3ZTdjZTNjNzM1NjNiZTY5NzI5ODBjMzhmOWE0ODZhY2UwYTMuLjQ0
ZTAxNzkxOWY5NWEyZGVkYWY5NzBkYzE5YTFkNGUyOWMwNTU3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovQlVJTEQuZ24KQEAgLTQsOCArNCwxNSBAQAogCiBpbXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVz
L2J1aWxkLmduaSIpCiAKKyMgVXNhZ2Ugb2YgQWJzZWlsIGluIENocm9taXVtIGlzIGd1YXJkZWQg
YnkgYW4gZXhwbGljaXQgb3B0LWluIGxpc3QsIGJlZm9yZQorIyBhZGRpbmcgcHJvamVjdHMgdG8g
dGhpcyBsaXN0IHBsZWFzZSByZWFjaCBvdXQgdG8gY3h4QGNocm9taXVtLm9yZyBhbmQgQ0M6Cisj
IC0gaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvT1dORVJTCisjCisjIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGF0OgorIyBo
dHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFEZ1MxLUEzcnpib1RManBmNG0xc3Fr
SmdXam5ZX1J1MmRva2sxWDF2QkRVCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICB2aXNp
YmlsaXR5ID0gWworICAgICIvL2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS93
ZWJydGMvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKICAgICAiLy90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKQEAgLTY2LDYgKzczLDkgQEAgc291cmNlX3NldCgi
dGltZV96b25lIikgewogICAgICJpbmNsdWRlL2NjdHovdGltZV96b25lLmgiLAogICAgICJpbmNs
dWRlL2NjdHovem9uZV9pbmZvX3NvdXJjZS5oIiwKICAgXQorICBpZiAoaXNfbWFjIHx8IGlzX2lv
cykgeworICAgIGxpYnMgPSBbICJGb3VuZGF0aW9uLmZyYW1ld29yayIgXQorICB9CiAgIGRlcHMg
PSBbCiAgICAgIjpjaXZpbF90aW1lIiwKICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWUuaAppbmRleCAwODQyZmE0YTQ2ODk1MmZiYjcx
ZmU5ZTk4Yjg4M2UyZmE0N2Q5NmUxLi44NWQwZDNmZmZmYjU3NzI5Yjk1ZWRkMzU5YTI3YmY2ZDUy
OTg1Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6
L2NpdmlsX3RpbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6
L2NpdmlsX3RpbWUuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTI3OSw3ICsyNzksNyBAQCB1c2luZyBjaXZpbF9zZWNvbmQgPSBkZXRhaWw6OmNpdmlsX3NlY29u
ZDsKIC8vCiB1c2luZyBkZXRhaWw6OndlZWtkYXk7CiAKLS8vIFJldHVybnMgdGhlIHdlZWtkYXkg
Zm9yIHRoZSBnaXZlbiBjaXZpbF9kYXkuCisvLyBSZXR1cm5zIHRoZSB3ZWVrZGF5IGZvciB0aGUg
Z2l2ZW4gY2l2aWwtdGltZSB2YWx1ZS4KIC8vCiAvLyAgIGNpdmlsX2RheSBhKDIwMTUsIDgsIDEz
KTsKIC8vICAgd2Vla2RheSB3ZCA9IGdldF93ZWVrZGF5KGEpOyAgLy8gd2QgPT0gd2Vla2RheTo6
dGh1cnNkYXkKQEAgLTMwNiwxNCArMzA2LDE0IEBAIHVzaW5nIGRldGFpbDo6Z2V0X3dlZWtkYXk7
CiAvLwogLy8gICBjaXZpbF9kYXkgZCA9IC4uLgogLy8gICAvLyBHZXRzIHRoZSBmb2xsb3dpbmcg
VGh1cnNkYXkgaWYgZCBpcyBub3QgYWxyZWFkeSBUaHVyc2RheQotLy8gICBjaXZpbF9kYXkgdGh1
cnMxID0gcHJldl93ZWVrZGF5KGQsIHdlZWtkYXk6OnRodXJzZGF5KSArIDc7CisvLyAgIGNpdmls
X2RheSB0aHVyczEgPSBuZXh0X3dlZWtkYXkoZCAtIDEsIHdlZWtkYXk6OnRodXJzZGF5KTsKIC8v
ICAgLy8gR2V0cyB0aGUgcHJldmlvdXMgVGh1cnNkYXkgaWYgZCBpcyBub3QgYWxyZWFkeSBUaHVy
c2RheQotLy8gICBjaXZpbF9kYXkgdGh1cnMyID0gbmV4dF93ZWVrZGF5KGQsIHdlZWtkYXk6OnRo
dXJzZGF5KSAtIDc7CisvLyAgIGNpdmlsX2RheSB0aHVyczIgPSBwcmV2X3dlZWtkYXkoZCArIDEs
IHdlZWtkYXk6OnRodXJzZGF5KTsKIC8vCiB1c2luZyBkZXRhaWw6Om5leHRfd2Vla2RheTsKIHVz
aW5nIGRldGFpbDo6cHJldl93ZWVrZGF5OwogCi0vLyBSZXR1cm5zIHRoZSBkYXktb2YteWVhciBm
b3IgdGhlIGdpdmVuIGNpdmlsX2RheS4KKy8vIFJldHVybnMgdGhlIGRheS1vZi15ZWFyIGZvciB0
aGUgZ2l2ZW4gY2l2aWwtdGltZSB2YWx1ZS4KIC8vCiAvLyAgIGNpdmlsX2RheSBhKDIwMTUsIDEs
IDEpOwogLy8gICBpbnQgeWRfamFuXzEgPSBnZXRfeWVhcmRheShhKTsgICAvLyB5ZF9qYW5fMSA9
IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2
aWxfdGltZV9kZXRhaWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHov
Y2l2aWxfdGltZV9kZXRhaWwuaAppbmRleCBkN2Y3MjcxN2VjZTI1NDA4ODc0MGU3Mzc1ODI4NTk2
Yzk2M2ZiMDEzLi40MzMwNzhhNzMwOTcxNWYxYmU5ODg2ZGJkOTEwZmNmYmY0OWM4Y2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWVf
ZGV0YWlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZp
bF90aW1lX2RldGFpbC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogCiAvLyBEaXNhYmxlIGNv
bnN0ZXhwciBzdXBwb3J0IHVubGVzcyB3ZSBhcmUgaW4gQysrMTQgbW9kZS4KLSNpZiBfX2NwcF9j
b25zdGV4cHIgPj0gMjAxMzA0IHx8IF9NU0NfVkVSID49IDE5MTAKKyNpZiBfX2NwcF9jb25zdGV4
cHIgPj0gMjAxMzA0IHx8IChkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxOTEwKQog
I2RlZmluZSBDT05TVEVYUFJfRCBjb25zdGV4cHIgIC8vIGRhdGEKICNkZWZpbmUgQ09OU1RFWFBS
X0YgY29uc3RleHByICAvLyBmdW5jdGlvbgogI2RlZmluZSBDT05TVEVYUFJfTSBjb25zdGV4cHIg
IC8vIG1lbWJlcgpAQCAtMzI2LDYgKzMyNiwzNyBAQCBDT05TVEVYUFJfRiBmaWVsZHMgYWxpZ24o
eWVhcl90YWcsIGZpZWxkcyBmKSBub2V4Y2VwdCB7CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCituYW1l
c3BhY2UgaW1wbCB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIPgorSCBBYnNsSGFzaFZhbHVlSW1w
bChzZWNvbmRfdGFnLCBIIGgsIGZpZWxkcyBmKSB7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6
bW92ZShoKSwgZi55LCBmLm0sIGYuZCwgZi5oaCwgZi5tbSwgZi5zcyk7Cit9Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSD4KK0ggQWJzbEhhc2hWYWx1ZUltcGwobWludXRlX3RhZywgSCBoLCBmaWVsZHMg
ZikgeworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIGYueSwgZi5tLCBmLmQsIGYu
aGgsIGYubW0pOworfQordGVtcGxhdGUgPHR5cGVuYW1lIEg+CitIIEFic2xIYXNoVmFsdWVJbXBs
KGhvdXJfdGFnLCBIIGgsIGZpZWxkcyBmKSB7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92
ZShoKSwgZi55LCBmLm0sIGYuZCwgZi5oaCk7Cit9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KK0gg
QWJzbEhhc2hWYWx1ZUltcGwoZGF5X3RhZywgSCBoLCBmaWVsZHMgZikgeworICByZXR1cm4gSDo6
Y29tYmluZShzdGQ6Om1vdmUoaCksIGYueSwgZi5tLCBmLmQpOworfQordGVtcGxhdGUgPHR5cGVu
YW1lIEg+CitIIEFic2xIYXNoVmFsdWVJbXBsKG1vbnRoX3RhZywgSCBoLCBmaWVsZHMgZikgewor
ICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIGYueSwgZi5tKTsKK30KK3RlbXBsYXRl
IDx0eXBlbmFtZSBIPgorSCBBYnNsSGFzaFZhbHVlSW1wbCh5ZWFyX3RhZywgSCBoLCBmaWVsZHMg
ZikgeworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIGYueSk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBpbXBsCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIGNsYXNzIGNpdmlsX3RpbWUgewogIHB1YmxpYzoKQEAgLTM1NSwxMiArMzg2LDEyIEBAIGNs
YXNzIGNpdmlsX3RpbWUgewogICAgICAgOiBjaXZpbF90aW1lKGN0LmZfKSB7fQogCiAgIC8vIEZh
Y3RvcmllcyBmb3IgdGhlIG1heGltdW0vbWluaW11bSByZXByZXNlbnRhYmxlIGNpdmlsX3RpbWUu
Ci0gIHN0YXRpYyBDT05TVEVYUFJfRiBjaXZpbF90aW1lIG1heCgpIHsKLSAgICBjb25zdCBhdXRv
IG1heF95ZWFyID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OmludF9sZWFzdDY0X3Q+OjptYXgo
KTsKKyAgc3RhdGljIENPTlNURVhQUl9GIGNpdmlsX3RpbWUgKG1heCkoKSB7CisgICAgY29uc3Qg
YXV0byBtYXhfeWVhciA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6aW50X2xlYXN0NjRfdD46
Om1heCkoKTsKICAgICByZXR1cm4gY2l2aWxfdGltZShtYXhfeWVhciwgMTIsIDMxLCAyMywgNTks
IDU5KTsKICAgfQotICBzdGF0aWMgQ09OU1RFWFBSX0YgY2l2aWxfdGltZSBtaW4oKSB7Ci0gICAg
Y29uc3QgYXV0byBtaW5feWVhciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjppbnRfbGVhc3Q2
NF90Pjo6bWluKCk7CisgIHN0YXRpYyBDT05TVEVYUFJfRiBjaXZpbF90aW1lIChtaW4pKCkgewor
ICAgIGNvbnN0IGF1dG8gbWluX3llYXIgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OmludF9s
ZWFzdDY0X3Q+OjptaW4pKCk7CiAgICAgcmV0dXJuIGNpdmlsX3RpbWUobWluX3llYXIsIDEsIDEs
IDAsIDAsIDApOwogICB9CiAKQEAgLTM3OCw3ICs0MDksNyBAQCBjbGFzcyBjaXZpbF90aW1lIHsK
ICAgICByZXR1cm4gKnRoaXM7CiAgIH0KICAgQ09OU1RFWFBSX00gY2l2aWxfdGltZSYgb3BlcmF0
b3ItPShkaWZmX3Qgbikgbm9leGNlcHQgewotICAgIGlmIChuICE9IHN0ZDo6bnVtZXJpY19saW1p
dHM8ZGlmZl90Pjo6bWluKCkpIHsKKyAgICBpZiAobiAhPSAoc3RkOjpudW1lcmljX2xpbWl0czxk
aWZmX3Q+OjptaW4pKCkpIHsKICAgICAgIGZfID0gc3RlcChUe30sIGZfLCAtbik7CiAgICAgfSBl
bHNlIHsKICAgICAgIGZfID0gc3RlcChUe30sIHN0ZXAoVHt9LCBmXywgLShuICsgMSkpLCAxKTsK
QEAgLTQxOCw4ICs0NDksNyBAQCBjbGFzcyBjaXZpbF90aW1lIHsKIAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSD4KICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIGNpdmlsX3RpbWUgYSkgewot
ICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwgYS5mXy55LCBhLmZfLm0sIGEuZl8u
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZl8uaGgsIGEuZl8ubW0s
IGEuZl8uc3MpOworICAgIHJldHVybiBpbXBsOjpBYnNsSGFzaFZhbHVlSW1wbChUe30sIHN0ZDo6
bW92ZShoKSwgYS5mXyk7CiAgIH0KIAogIHByaXZhdGU6CkBAIC01MDUsMzkgKzUzNSw3MSBAQCBl
bnVtIGNsYXNzIHdlZWtkYXkgewogICBzdW5kYXksCiB9OwogCi1DT05TVEVYUFJfRiB3ZWVrZGF5
IGdldF93ZWVrZGF5KGNvbnN0IGNpdmlsX2RheSYgY2QpIG5vZXhjZXB0IHsKLSAgQ09OU1RFWFBS
X0Qgd2Vla2RheSBrX3dlZWtkYXlfYnlfc3VuX29mZls3XSA9IHsKLSAgICAgIHdlZWtkYXk6OnN1
bmRheSwgICAgIHdlZWtkYXk6Om1vbmRheSwgICAgd2Vla2RheTo6dHVlc2RheSwKLSAgICAgIHdl
ZWtkYXk6OndlZG5lc2RheSwgIHdlZWtkYXk6OnRodXJzZGF5LCAgd2Vla2RheTo6ZnJpZGF5LAor
Q09OU1RFWFBSX0Ygd2Vla2RheSBnZXRfd2Vla2RheShjb25zdCBjaXZpbF9zZWNvbmQmIGNzKSBu
b2V4Y2VwdCB7CisgIENPTlNURVhQUl9EIHdlZWtkYXkga193ZWVrZGF5X2J5X21vbl9vZmZbMTNd
ID0geworICAgICAgd2Vla2RheTo6bW9uZGF5LCAgICB3ZWVrZGF5Ojp0dWVzZGF5LCAgd2Vla2Rh
eTo6d2VkbmVzZGF5LAorICAgICAgd2Vla2RheTo6dGh1cnNkYXksICB3ZWVrZGF5OjpmcmlkYXks
ICAgd2Vla2RheTo6c2F0dXJkYXksCisgICAgICB3ZWVrZGF5OjpzdW5kYXksICAgIHdlZWtkYXk6
Om1vbmRheSwgICB3ZWVrZGF5Ojp0dWVzZGF5LAorICAgICAgd2Vla2RheTo6d2VkbmVzZGF5LCB3
ZWVrZGF5Ojp0aHVyc2RheSwgd2Vla2RheTo6ZnJpZGF5LAogICAgICAgd2Vla2RheTo6c2F0dXJk
YXksCiAgIH07CiAgIENPTlNURVhQUl9EIGludCBrX3dlZWtkYXlfb2Zmc2V0c1sxICsgMTJdID0g
ewogICAgICAgLTEsIDAsIDMsIDIsIDUsIDAsIDMsIDUsIDEsIDQsIDYsIDIsIDQsCiAgIH07Ci0g
IHllYXJfdCB3ZCA9IDI0MDAgKyAoY2QueWVhcigpICUgNDAwKSAtIChjZC5tb250aCgpIDwgMyk7
CisgIHllYXJfdCB3ZCA9IDI0MDAgKyAoY3MueWVhcigpICUgNDAwKSAtIChjcy5tb250aCgpIDwg
Myk7CiAgIHdkICs9IHdkIC8gNCAtIHdkIC8gMTAwICsgd2QgLyA0MDA7Ci0gIHdkICs9IGtfd2Vl
a2RheV9vZmZzZXRzW2NkLm1vbnRoKCldICsgY2QuZGF5KCk7Ci0gIHJldHVybiBrX3dlZWtkYXlf
Ynlfc3VuX29mZlsod2QgJSA3ICsgNykgJSA3XTsKKyAgd2QgKz0ga193ZWVrZGF5X29mZnNldHNb
Y3MubW9udGgoKV0gKyBjcy5kYXkoKTsKKyAgcmV0dXJuIGtfd2Vla2RheV9ieV9tb25fb2ZmW3dk
ICUgNyArIDZdOwogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogQ09OU1RFWFBSX0YgY2l2aWxfZGF5
IG5leHRfd2Vla2RheShjaXZpbF9kYXkgY2QsIHdlZWtkYXkgd2QpIG5vZXhjZXB0IHsKLSAgZG8g
eyBjZCArPSAxOyB9IHdoaWxlIChnZXRfd2Vla2RheShjZCkgIT0gd2QpOwotICByZXR1cm4gY2Q7
CisgIENPTlNURVhQUl9EIHdlZWtkYXkga193ZWVrZGF5c19mb3J3WzE0XSA9IHsKKyAgICAgIHdl
ZWtkYXk6Om1vbmRheSwgICAgd2Vla2RheTo6dHVlc2RheSwgIHdlZWtkYXk6OndlZG5lc2RheSwK
KyAgICAgIHdlZWtkYXk6OnRodXJzZGF5LCAgd2Vla2RheTo6ZnJpZGF5LCAgIHdlZWtkYXk6OnNh
dHVyZGF5LAorICAgICAgd2Vla2RheTo6c3VuZGF5LCAgICB3ZWVrZGF5Ojptb25kYXksICAgd2Vl
a2RheTo6dHVlc2RheSwKKyAgICAgIHdlZWtkYXk6OndlZG5lc2RheSwgd2Vla2RheTo6dGh1cnNk
YXksIHdlZWtkYXk6OmZyaWRheSwKKyAgICAgIHdlZWtkYXk6OnNhdHVyZGF5LCAgd2Vla2RheTo6
c3VuZGF5LAorICB9OworICB3ZWVrZGF5IGJhc2UgPSBnZXRfd2Vla2RheShjZCk7CisgIGZvciAo
aW50IGkgPSAwOzsgKytpKSB7CisgICAgaWYgKGJhc2UgPT0ga193ZWVrZGF5c19mb3J3W2ldKSB7
CisgICAgICBmb3IgKGludCBqID0gaSArIDE7OyArK2opIHsKKyAgICAgICAgaWYgKHdkID09IGtf
d2Vla2RheXNfZm9yd1tqXSkgeworICAgICAgICAgIHJldHVybiBjZCArIChqIC0gaSk7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KIH0KIAogQ09OU1RFWFBSX0YgY2l2aWxfZGF5IHBy
ZXZfd2Vla2RheShjaXZpbF9kYXkgY2QsIHdlZWtkYXkgd2QpIG5vZXhjZXB0IHsKLSAgZG8geyBj
ZCAtPSAxOyB9IHdoaWxlIChnZXRfd2Vla2RheShjZCkgIT0gd2QpOwotICByZXR1cm4gY2Q7Cisg
IENPTlNURVhQUl9EIHdlZWtkYXkga193ZWVrZGF5c19iYWNrWzE0XSA9IHsKKyAgICAgIHdlZWtk
YXk6OnN1bmRheSwgICB3ZWVrZGF5OjpzYXR1cmRheSwgIHdlZWtkYXk6OmZyaWRheSwKKyAgICAg
IHdlZWtkYXk6OnRodXJzZGF5LCB3ZWVrZGF5Ojp3ZWRuZXNkYXksIHdlZWtkYXk6OnR1ZXNkYXks
CisgICAgICB3ZWVrZGF5Ojptb25kYXksICAgd2Vla2RheTo6c3VuZGF5LCAgICB3ZWVrZGF5Ojpz
YXR1cmRheSwKKyAgICAgIHdlZWtkYXk6OmZyaWRheSwgICB3ZWVrZGF5Ojp0aHVyc2RheSwgIHdl
ZWtkYXk6OndlZG5lc2RheSwKKyAgICAgIHdlZWtkYXk6OnR1ZXNkYXksICB3ZWVrZGF5Ojptb25k
YXksCisgIH07CisgIHdlZWtkYXkgYmFzZSA9IGdldF93ZWVrZGF5KGNkKTsKKyAgZm9yIChpbnQg
aSA9IDA7OyArK2kpIHsKKyAgICBpZiAoYmFzZSA9PSBrX3dlZWtkYXlzX2JhY2tbaV0pIHsKKyAg
ICAgIGZvciAoaW50IGogPSBpICsgMTs7ICsraikgeworICAgICAgICBpZiAod2QgPT0ga193ZWVr
ZGF5c19iYWNrW2pdKSB7CisgICAgICAgICAgcmV0dXJuIGNkIC0gKGogLSBpKTsKKyAgICAgICAg
fQorICAgICAgfQorICAgIH0KKyAgfQogfQogCi1DT05TVEVYUFJfRiBpbnQgZ2V0X3llYXJkYXko
Y29uc3QgY2l2aWxfZGF5JiBjZCkgbm9leGNlcHQgeworQ09OU1RFWFBSX0YgaW50IGdldF95ZWFy
ZGF5KGNvbnN0IGNpdmlsX3NlY29uZCYgY3MpIG5vZXhjZXB0IHsKICAgQ09OU1RFWFBSX0QgaW50
IGtfbW9udGhfb2Zmc2V0c1sxICsgMTJdID0gewogICAgICAgLTEsIDAsIDMxLCA1OSwgOTAsIDEy
MCwgMTUxLCAxODEsIDIxMiwgMjQzLCAyNzMsIDMwNCwgMzM0LAogICB9OwotICBjb25zdCBpbnQg
ZmViMjkgPSAoY2QubW9udGgoKSA+IDIgJiYgaW1wbDo6aXNfbGVhcF95ZWFyKGNkLnllYXIoKSkp
OwotICByZXR1cm4ga19tb250aF9vZmZzZXRzW2NkLm1vbnRoKCldICsgZmViMjkgKyBjZC5kYXko
KTsKKyAgY29uc3QgaW50IGZlYjI5ID0gKGNzLm1vbnRoKCkgPiAyICYmIGltcGw6OmlzX2xlYXBf
eWVhcihjcy55ZWFyKCkpKTsKKyAgcmV0dXJuIGtfbW9udGhfb2Zmc2V0c1tjcy5tb250aCgpXSAr
IGZlYjI5ICsgY3MuZGF5KCk7CiB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei90aW1lX3pvbmUuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmgKaW5kZXggZjI4ZGFkMTc1
NTA2NTliMDdmMGMyMDAzOGJjNDdmMjVhMDJmNjJhMS4uZWY2YzRiYTEwOTU5ZmJjY2RjN2NkMjUx
YTM4ODUwNDJjYTFiMTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2lu
Y2x1ZGUvY2N0ei90aW1lX3pvbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5j
bHVkZS9jY3R6L3RpbWVfem9uZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtNzIsNyArNzIsNyBAQCBzcGxpdF9zZWNvbmRzKGNvbnN0IHRpbWVfcG9pbnQ8c2Vj
b25kcz4mIHRwKSB7CiAvLwogLy8gU2VlIGFsc286CiAvLyAtIGh0dHA6Ly93d3cuaWFuYS5vcmcv
dGltZS16b25lcwotLy8gLSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1pvbmVpbmZvCisv
LyAtIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1pvbmVpbmZvCiBjbGFzcyB0aW1lX3pv
bmUgewogIHB1YmxpYzoKICAgdGltZV96b25lKCkgOiB0aW1lX3pvbmUobnVsbHB0cikge30gIC8v
IEVxdWl2YWxlbnQgdG8gVVRDCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
aW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3VyY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei9pbmNsdWRlL2NjdHovem9uZV9pbmZvX3NvdXJjZS5oCmluZGV4IDIwYTc2OTc5MzcwZmMwNmNj
ZWVlOWM5YzdjNzhhNTFiYjBmOGM5ZmUuLjJiODk4ZDE4MmNhYmE4MDY2NzY1MmUwMzExNWU4OTVk
NTZiMGE0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2Nj
dHovem9uZV9pbmZvX3NvdXJjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNs
dWRlL2NjdHovem9uZV9pbmZvX3NvdXJjZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jY3R6
X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2N0el9iZW5jaG1h
cmsuY2MKaW5kZXggNDQ5OGQ3ZDBiNmI3ZTBjNGE2ZmRiOTIxNDljNzg3OTZkM2QwOGI2Zi4uYTQw
ZjUwNGUwNjNlNGQwNmIyZjRjZGVjOWVkNGM0NDBjMDcxNjZhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jY3R6X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovc3JjL2NjdHpfYmVuY2htYXJrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDcsNiArNDcsNTYgQEAgdm9pZCBCTV9TdGVwX0RheXMo
YmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKIH0KIEJFTkNITUFSSyhCTV9TdGVwX0RheXMpOwog
Cit2b2lkIEJNX0dldFdlZWtkYXkoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgY29uc3Qg
Y2N0ejo6Y2l2aWxfZGF5IGMoMjAxNCwgOCwgMjIpOworICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5p
bmcoKSkgeworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShjY3R6OjpnZXRfd2Vla2RheShj
KSk7CisgIH0KK30KK0JFTkNITUFSSyhCTV9HZXRXZWVrZGF5KTsKKwordm9pZCBCTV9OZXh0V2Vl
a2RheShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBjb25zdCBjY3R6OjpjaXZpbF9kYXkg
a1N0YXJ0KDIwMTQsIDgsIDIyKTsKKyAgY29uc3QgY2N0ejo6Y2l2aWxfZGF5IGtEYXlzWzddID0g
eworICAgICAga1N0YXJ0ICsgMCwga1N0YXJ0ICsgMSwga1N0YXJ0ICsgMiwga1N0YXJ0ICsgMywK
KyAgICAgIGtTdGFydCArIDQsIGtTdGFydCArIDUsIGtTdGFydCArIDYsCisgIH07CisgIGNvbnN0
IGNjdHo6OndlZWtkYXkga1dlZWtkYXlzWzddID0geworICAgICAgY2N0ejo6d2Vla2RheTo6bW9u
ZGF5LCAgIGNjdHo6OndlZWtkYXk6OnR1ZXNkYXksIGNjdHo6OndlZWtkYXk6OndlZG5lc2RheSwK
KyAgICAgIGNjdHo6OndlZWtkYXk6OnRodXJzZGF5LCBjY3R6Ojp3ZWVrZGF5OjpmcmlkYXksICBj
Y3R6Ojp3ZWVrZGF5OjpzYXR1cmRheSwKKyAgICAgIGNjdHo6OndlZWtkYXk6OnN1bmRheSwKKyAg
fTsKKyAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nQmF0Y2goNyAqIDcpKSB7CisgICAgZm9yIChj
b25zdCBhdXRvIGZyb20gOiBrRGF5cykgeworICAgICAgZm9yIChjb25zdCBhdXRvIHRvIDoga1dl
ZWtkYXlzKSB7CisgICAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShjY3R6OjpuZXh0X3dl
ZWtkYXkoZnJvbSwgdG8pKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KK0JFTkNITUFSSyhCTV9O
ZXh0V2Vla2RheSk7CisKK3ZvaWQgQk1fUHJldldlZWtkYXkoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKKyAgY29uc3QgY2N0ejo6Y2l2aWxfZGF5IGtTdGFydCgyMDE0LCA4LCAyMik7CisgIGNv
bnN0IGNjdHo6OmNpdmlsX2RheSBrRGF5c1s3XSA9IHsKKyAgICAgIGtTdGFydCArIDAsIGtTdGFy
dCArIDEsIGtTdGFydCArIDIsIGtTdGFydCArIDMsCisgICAgICBrU3RhcnQgKyA0LCBrU3RhcnQg
KyA1LCBrU3RhcnQgKyA2LAorICB9OworICBjb25zdCBjY3R6Ojp3ZWVrZGF5IGtXZWVrZGF5c1s3
XSA9IHsKKyAgICAgIGNjdHo6OndlZWtkYXk6Om1vbmRheSwgICBjY3R6Ojp3ZWVrZGF5Ojp0dWVz
ZGF5LCBjY3R6Ojp3ZWVrZGF5Ojp3ZWRuZXNkYXksCisgICAgICBjY3R6Ojp3ZWVrZGF5Ojp0aHVy
c2RheSwgY2N0ejo6d2Vla2RheTo6ZnJpZGF5LCAgY2N0ejo6d2Vla2RheTo6c2F0dXJkYXksCisg
ICAgICBjY3R6Ojp3ZWVrZGF5OjpzdW5kYXksCisgIH07CisgIHdoaWxlIChzdGF0ZS5LZWVwUnVu
bmluZ0JhdGNoKDcgKiA3KSkgeworICAgIGZvciAoY29uc3QgYXV0byBmcm9tIDoga0RheXMpIHsK
KyAgICAgIGZvciAoY29uc3QgYXV0byB0byA6IGtXZWVrZGF5cykgeworICAgICAgICBiZW5jaG1h
cms6OkRvTm90T3B0aW1pemUoY2N0ejo6cHJldl93ZWVrZGF5KGZyb20sIHRvKSk7CisgICAgICB9
CisgICAgfQorICB9Cit9CitCRU5DSE1BUksoQk1fUHJldldlZWtkYXkpOworCiBjb25zdCBjaGFy
IFJGQzMzMzlfZnVsbFtdID0gIiVZLSVtLSVkVCVIOiVNOiVFKlMlRXoiOwogY29uc3QgY2hhciBS
RkMzMzM5X3NlY1tdID0gIiVZLSVtLSVkVCVIOiVNOiVTJUV6IjsKIApAQCAtMzU3LDYgKzQwNyw3
IEBAIGNvbnN0IGNoYXIqIGNvbnN0IGtUaW1lWm9uZU5hbWVzW10gPSB7CiAgICJBc2lhL1BvbnRp
YW5hayIsCiAgICJBc2lhL1B5b25neWFuZyIsCiAgICJBc2lhL1FhdGFyIiwKKyAgIkFzaWEvUW9z
dGFuYXkiLAogICAiQXNpYS9ReXp5bG9yZGEiLAogICAiQXNpYS9SYW5nb29uIiwKICAgIkFzaWEv
Uml5YWRoIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2l2aWxf
dGltZV9kZXRhaWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVf
ZGV0YWlsLmNjCmluZGV4IDc4MGQ1Yzk2ZThiZmUzZGYwZmE4ZjIwY2ViNTQyNGJiNWZlZjdhYjUu
LmNiNDBiNmJjNTNjMzdiYTg3ZTg1N2E4MWY4MjIwNzU0Y2FmZDc0MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2l2aWxfdGltZV9kZXRhaWwuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90aW1lX2RldGFpbC5jYwpAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9zcmMvY2l2aWxfdGltZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3NyYy9jaXZpbF90aW1lX3Rlc3QuY2MKaW5kZXggZmFmZmRlNDcwYWY0ZjQ1YzNiOGE0YmFh
MGMwZDJiY2ZhMzE4ODA0YS4uMTBhNWZmZTU4NzNjOWEyOWVkOGU0YjRiMDlkMDBkZjZhYzE0Njhl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90aW1lX3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90aW1lX3Rlc3Qu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zNyw3ICszNyw3
IEBAIHN0ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBUJiB0KSB7CiAKIH0gIC8vIG5hbWVzcGFjZQog
Ci0jaWYgX19jcHBfY29uc3RleHByID49IDIwMTMwNCB8fCBfTVNDX1ZFUiA+PSAxOTEwCisjaWYg
X19jcHBfY29uc3RleHByID49IDIwMTMwNCB8fCAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19W
RVIgPj0gMTkxMCkKIC8vIENvbnN0cnVjdGlvbiBjb25zdGV4cHIgdGVzdHMKIAogVEVTVChDaXZp
bFRpbWUsIE5vcm1hbCkgewpAQCAtMzE5LDcgKzMxOSw3IEBAIFRFU1QoQ2l2aWxUaW1lLCBZZWFy
RGF5KSB7CiAgIGNvbnN0ZXhwciBpbnQgeWQgPSBnZXRfeWVhcmRheShjZCk7CiAgIHN0YXRpY19h
c3NlcnQoeWQgPT0gMjgsICJZZWFyRGF5Iik7CiB9Ci0jZW5kaWYgIC8vIF9fY3BwX2NvbnN0ZXhw
ciA+PSAyMDEzMDQgfHwgX01TQ19WRVIgPj0gMTkxMAorI2VuZGlmICAvLyBfX2NwcF9jb25zdGV4
cHIgPj0gMjAxMzA0IHx8IChkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxOTEwKQog
CiAvLyBUaGUgcmVtYWluaW5nIHRlc3RzIGRvIG5vdCB1c2UgY29uc3RleHByLgogCkBAIC04MjEs
NiArODIxLDggQEAgVEVTVChDaXZpbFRpbWUsIFByb3BlcnRpZXMpIHsKICAgRVhQRUNUX0VRKDQs
IHNzLmhvdXIoKSk7CiAgIEVYUEVDVF9FUSg1LCBzcy5taW51dGUoKSk7CiAgIEVYUEVDVF9FUSg2
LCBzcy5zZWNvbmQoKSk7CisgIEVYUEVDVF9FUSh3ZWVrZGF5Ojp0dWVzZGF5LCBnZXRfd2Vla2Rh
eShzcykpOworICBFWFBFQ1RfRVEoMzQsIGdldF95ZWFyZGF5KHNzKSk7CiAKICAgY2l2aWxfbWlu
dXRlIG1tKDIwMTUsIDIsIDMsIDQsIDUsIDYpOwogICBFWFBFQ1RfRVEoMjAxNSwgbW0ueWVhcigp
KTsKQEAgLTgyOSw2ICs4MzEsOCBAQCBURVNUKENpdmlsVGltZSwgUHJvcGVydGllcykgewogICBF
WFBFQ1RfRVEoNCwgbW0uaG91cigpKTsKICAgRVhQRUNUX0VRKDUsIG1tLm1pbnV0ZSgpKTsKICAg
RVhQRUNUX0VRKDAsIG1tLnNlY29uZCgpKTsKKyAgRVhQRUNUX0VRKHdlZWtkYXk6OnR1ZXNkYXks
IGdldF93ZWVrZGF5KG1tKSk7CisgIEVYUEVDVF9FUSgzNCwgZ2V0X3llYXJkYXkobW0pKTsKIAog
ICBjaXZpbF9ob3VyIGhoKDIwMTUsIDIsIDMsIDQsIDUsIDYpOwogICBFWFBFQ1RfRVEoMjAxNSwg
aGgueWVhcigpKTsKQEAgLTgzNyw2ICs4NDEsOCBAQCBURVNUKENpdmlsVGltZSwgUHJvcGVydGll
cykgewogICBFWFBFQ1RfRVEoNCwgaGguaG91cigpKTsKICAgRVhQRUNUX0VRKDAsIGhoLm1pbnV0
ZSgpKTsKICAgRVhQRUNUX0VRKDAsIGhoLnNlY29uZCgpKTsKKyAgRVhQRUNUX0VRKHdlZWtkYXk6
OnR1ZXNkYXksIGdldF93ZWVrZGF5KGhoKSk7CisgIEVYUEVDVF9FUSgzNCwgZ2V0X3llYXJkYXko
aGgpKTsKIAogICBjaXZpbF9kYXkgZCgyMDE1LCAyLCAzLCA0LCA1LCA2KTsKICAgRVhQRUNUX0VR
KDIwMTUsIGQueWVhcigpKTsKQEAgLTg1NSw2ICs4NjEsOCBAQCBURVNUKENpdmlsVGltZSwgUHJv
cGVydGllcykgewogICBFWFBFQ1RfRVEoMCwgbS5ob3VyKCkpOwogICBFWFBFQ1RfRVEoMCwgbS5t
aW51dGUoKSk7CiAgIEVYUEVDVF9FUSgwLCBtLnNlY29uZCgpKTsKKyAgRVhQRUNUX0VRKHdlZWtk
YXk6OnN1bmRheSwgZ2V0X3dlZWtkYXkobSkpOworICBFWFBFQ1RfRVEoMzIsIGdldF95ZWFyZGF5
KG0pKTsKIAogICBjaXZpbF95ZWFyIHkoMjAxNSwgMiwgMywgNCwgNSwgNik7CiAgIEVYUEVDVF9F
USgyMDE1LCB5LnllYXIoKSk7CkBAIC04NjMsNiArODcxLDggQEAgVEVTVChDaXZpbFRpbWUsIFBy
b3BlcnRpZXMpIHsKICAgRVhQRUNUX0VRKDAsIHkuaG91cigpKTsKICAgRVhQRUNUX0VRKDAsIHku
bWludXRlKCkpOwogICBFWFBFQ1RfRVEoMCwgeS5zZWNvbmQoKSk7CisgIEVYUEVDVF9FUSh3ZWVr
ZGF5Ojp0aHVyc2RheSwgZ2V0X3dlZWtkYXkoeSkpOworICBFWFBFQ1RfRVEoMSwgZ2V0X3llYXJk
YXkoeSkpOwogfQogCiBURVNUKENpdmlsVGltZSwgT3V0cHV0U3RyZWFtKSB7CkBAIC0xMDM1LDcg
KzEwNDUsNyBAQCBURVNUKENpdmlsVGltZSwgTGVhcFllYXJzKSB7CiAKIFRFU1QoQ2l2aWxUaW1l
LCBGaXJzdFRodXJzZGF5SW5Nb250aCkgewogICBjb25zdCBjaXZpbF9kYXkgbm92MSgyMDE0LCAx
MSwgMSk7Ci0gIGNvbnN0IGNpdmlsX2RheSB0aHVyc2RheSA9IHByZXZfd2Vla2RheShub3YxLCB3
ZWVrZGF5Ojp0aHVyc2RheSkgKyA3OworICBjb25zdCBjaXZpbF9kYXkgdGh1cnNkYXkgPSBuZXh0
X3dlZWtkYXkobm92MSAtIDEsIHdlZWtkYXk6OnRodXJzZGF5KTsKICAgRVhQRUNUX0VRKCIyMDE0
LTExLTA2IiwgRm9ybWF0KHRodXJzZGF5KSk7CiAKICAgLy8gQm9udXM6IERhdGUgb2YgVGhhbmtz
Z2l2aW5nIGluIHRoZSBVbml0ZWQgU3RhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei9zcmMvdGltZV96b25lX2ZpeGVkLmNjCmluZGV4IGRiOWE0NzVhOWI0OTA0Y2IyYzRkYTZiNWNm
MjgwY2E4Y2E0MzcyNzAuLmIwZDE1OWEyZTUyMmFiM2ViMTY4MWE3NzhhMDZiMmY0ZDlhN2ZiM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVk
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjcsNyArMjcsNyBA
QCBuYW1lc3BhY2UgY2N0eiB7CiBuYW1lc3BhY2UgewogCiAvLyBUaGUgcHJlZml4IHVzZWQgZm9y
IHRoZSBpbnRlcm5hbCBuYW1lcyBvZiBmaXhlZC1vZmZzZXQgem9uZXMuCi1jb25zdCBjaGFyIGtG
aXhlZE9mZnNldFByZWZpeFtdID0gIkZpeGVkL1VUQyI7Citjb25zdCBjaGFyIGtGaXhlZFpvbmVQ
cmVmaXhbXSA9ICJGaXhlZC9VVEMiOwogCiBjb25zdCBjaGFyIGtEaWdpdHNbXSA9ICIwMTIzNDU2
Nzg5IjsKIApAQCAtNTUsMTEgKzU1LDExIEBAIGJvb2wgRml4ZWRPZmZzZXRGcm9tTmFtZShjb25z
dCBzdGQ6OnN0cmluZyYgbmFtZSwgc2Vjb25kcyogb2Zmc2V0KSB7CiAgICAgcmV0dXJuIHRydWU7
CiAgIH0KIAotICBjb25zdCBzdGQ6OnNpemVfdCBwcmVmaXhfbGVuID0gc2l6ZW9mKGtGaXhlZE9m
ZnNldFByZWZpeCkgLSAxOwotICBjb25zdCBjaGFyKiBjb25zdCBlcCA9IGtGaXhlZE9mZnNldFBy
ZWZpeCArIHByZWZpeF9sZW47CisgIGNvbnN0IHN0ZDo6c2l6ZV90IHByZWZpeF9sZW4gPSBzaXpl
b2Yoa0ZpeGVkWm9uZVByZWZpeCkgLSAxOworICBjb25zdCBjaGFyKiBjb25zdCBlcCA9IGtGaXhl
ZFpvbmVQcmVmaXggKyBwcmVmaXhfbGVuOwogICBpZiAobmFtZS5zaXplKCkgIT0gcHJlZml4X2xl
biArIDkpICAvLyA8cHJlZml4Pis5OTo5OTo5OQogICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKCFz
dGQ6OmVxdWFsKGtGaXhlZE9mZnNldFByZWZpeCwgZXAsIG5hbWUuYmVnaW4oKSkpCisgIGlmICgh
c3RkOjplcXVhbChrRml4ZWRab25lUHJlZml4LCBlcCwgbmFtZS5iZWdpbigpKSkKICAgICByZXR1
cm4gZmFsc2U7CiAgIGNvbnN0IGNoYXIqIG5wID0gbmFtZS5kYXRhKCkgKyBwcmVmaXhfbGVuOwog
ICBpZiAobnBbMF0gIT0gJysnICYmIG5wWzBdICE9ICctJykKQEAgLTEwMiw5ICsxMDIsOSBAQCBz
dGQ6OnN0cmluZyBGaXhlZE9mZnNldFRvTmFtZShjb25zdCBzZWNvbmRzJiBvZmZzZXQpIHsKICAg
fQogICBpbnQgaG91cnMgPSBtaW51dGVzIC8gNjA7CiAgIG1pbnV0ZXMgJT0gNjA7Ci0gIGNoYXIg
YnVmW3NpemVvZihrRml4ZWRPZmZzZXRQcmVmaXgpIC0gMSArIHNpemVvZigiLTI0OjAwOjAwIild
OwotICBzdGQ6OnN0cmNweShidWYsIGtGaXhlZE9mZnNldFByZWZpeCk7Ci0gIGNoYXIqIGVwID0g
YnVmICsgc2l6ZW9mKGtGaXhlZE9mZnNldFByZWZpeCkgLSAxOworICBjb25zdCBzdGQ6OnNpemVf
dCBwcmVmaXhfbGVuID0gc2l6ZW9mKGtGaXhlZFpvbmVQcmVmaXgpIC0gMTsKKyAgY2hhciBidWZb
cHJlZml4X2xlbiArIHNpemVvZigiLTI0OjAwOjAwIildOworICBjaGFyKiBlcCA9IHN0ZDo6Y29w
eShrRml4ZWRab25lUHJlZml4LCBrRml4ZWRab25lUHJlZml4ICsgcHJlZml4X2xlbiwgYnVmKTsK
ICAgKmVwKysgPSBzaWduOwogICBlcCA9IEZvcm1hdDAyZChlcCwgaG91cnMpOwogICAqZXArKyA9
ICc6JzsKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGQ6OnN0cmluZyBGaXhlZE9mZnNldFRvTmFtZShj
b25zdCBzZWNvbmRzJiBvZmZzZXQpIHsKIAogc3RkOjpzdHJpbmcgRml4ZWRPZmZzZXRUb0FiYnIo
Y29uc3Qgc2Vjb25kcyYgb2Zmc2V0KSB7CiAgIHN0ZDo6c3RyaW5nIGFiYnIgPSBGaXhlZE9mZnNl
dFRvTmFtZShvZmZzZXQpOwotICBjb25zdCBzdGQ6OnNpemVfdCBwcmVmaXhfbGVuID0gc2l6ZW9m
KGtGaXhlZE9mZnNldFByZWZpeCkgLSAxOworICBjb25zdCBzdGQ6OnNpemVfdCBwcmVmaXhfbGVu
ID0gc2l6ZW9mKGtGaXhlZFpvbmVQcmVmaXgpIC0gMTsKICAgaWYgKGFiYnIuc2l6ZSgpID09IHBy
ZWZpeF9sZW4gKyA5KSB7ICAgICAgICAgLy8gPHByZWZpeD4rOTk6OTk6OTkKICAgICBhYmJyLmVy
YXNlKDAsIHByZWZpeF9sZW4pOyAgICAgICAgICAgICAgICAgLy8gKzk5Ojk5Ojk5CiAgICAgYWJi
ci5lcmFzZSg2LCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICs5OTo5OTk5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZml4ZWQuaAppbmRleCA0ODli
ODU3ZDVkZjMxZjExYzE2OTNjMTA3YzEwMmQ3YWJlOTY1ZjdhLi45YzFmNWU3ZDdkNzk2MDE2ZjBm
OTkzZmY4YzYwNDY0Yjc2ODk1MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovc3JjL3RpbWVfem9uZV9maXhlZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9z
cmMvdGltZV96b25lX2ZpeGVkLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9m
b3JtYXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXQu
Y2MKaW5kZXggYTAyYjFlMzQxYWMwY2NlZmQ2MGUwZmE4NTkwMTRlOGQwYWQwNWIwOS4uODRlMjgw
YjEzOTc2YTM4ZjdkMzAzYjJkMGRlNzNiNDM4NTY5NWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZm9ybWF0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEzLDEzICsxMywyMyBAQAogLy8gICBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KIAogI2lmICFkZWZpbmVkKEhBU19TVFJQVElNRSkKLSMgaWYg
IWRlZmluZWQoX01TQ19WRVIpCisjIGlmICFkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChf
X01JTkdXMzJfXykKICMgIGRlZmluZSBIQVNfU1RSUFRJTUUgMSAgLy8gYXNzdW1lIGV2ZXJ5b25l
IGhhcyBzdHJwdGltZSgpIGV4Y2VwdCB3aW5kb3dzCiAjIGVuZGlmCiAjZW5kaWYKIAorI2lmIGRl
ZmluZWQoSEFTX1NUUlBUSU1FKSAmJiBIQVNfU1RSUFRJTUUKKyMgaWYgIWRlZmluZWQoX1hPUEVO
X1NPVVJDRSkKKyMgIGRlZmluZSBfWE9QRU5fU09VUkNFICAvLyBEZWZpbmVkbmVzcyBzdWZmaWNl
cyBmb3Igc3RycHRpbWUuCisjIGVuZGlmCisjZW5kaWYKKwogI2luY2x1ZGUgImFic2wvdGltZS9p
bnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei90aW1lX3pvbmUuaCIKIAorLy8gSW5jbHVkZSB0aW1l
LmggZGlyZWN0bHkgc2luY2UsIGJ5IEMrKyBzdGFuZGFyZHMsIGN0aW1lIGRvZXNuJ3QgaGF2ZSB0
bworLy8gZGVjbGFyZSBzdHJwdGltZS4KKyNpbmNsdWRlIDx0aW1lLmg+CisKICNpbmNsdWRlIDxj
Y3R5cGU+CiAjaW5jbHVkZSA8Y2hyb25vPgogI2luY2x1ZGUgPGNzdGRkZWY+CkBAIC03Miw3ICs4
Miw3IEBAIHN0ZDo6dG0gVG9UTShjb25zdCB0aW1lX3pvbmU6OmFic29sdXRlX2xvb2t1cCYgYWwp
IHsKICAgICB0bS50bV95ZWFyID0gc3RhdGljX2Nhc3Q8aW50PihhbC5jcy55ZWFyKCkgLSAxOTAw
KTsKICAgfQogCi0gIHN3aXRjaCAoZ2V0X3dlZWtkYXkoY2l2aWxfZGF5KGFsLmNzKSkpIHsKKyAg
c3dpdGNoIChnZXRfd2Vla2RheShhbC5jcykpIHsKICAgICBjYXNlIHdlZWtkYXk6OnN1bmRheToK
ICAgICAgIHRtLnRtX3dkYXkgPSAwOwogICAgICAgYnJlYWs7CkBAIC05NSw3ICsxMDUsNyBAQCBz
dGQ6OnRtIFRvVE0oY29uc3QgdGltZV96b25lOjphYnNvbHV0ZV9sb29rdXAmIGFsKSB7CiAgICAg
ICB0bS50bV93ZGF5ID0gNjsKICAgICAgIGJyZWFrOwogICB9Ci0gIHRtLnRtX3lkYXkgPSBnZXRf
eWVhcmRheShjaXZpbF9kYXkoYWwuY3MpKSAtIDE7CisgIHRtLnRtX3lkYXkgPSBnZXRfeWVhcmRh
eShhbC5jcykgLSAxOwogICB0bS50bV9pc2RzdCA9IGFsLmlzX2RzdCA/IDEgOiAwOwogICByZXR1
cm4gdG07CiB9CkBAIC0xNDksMTUgKzE1OSwyNSBAQCBjaGFyKiBGb3JtYXRPZmZzZXQoY2hhciog
ZXAsIGludCBvZmZzZXQsIGNvbnN0IGNoYXIqIG1vZGUpIHsKICAgICBvZmZzZXQgPSAtb2Zmc2V0
OyAgLy8gYm91bmRlZCBieSAyNGggc28gbm8gb3ZlcmZsb3cKICAgICBzaWduID0gJy0nOwogICB9
Ci0gIGNoYXIgc2VwID0gbW9kZVswXTsKLSAgaWYgKHNlcCAhPSAnXDAnICYmIG1vZGVbMV0gPT0g
JyonKSB7Ci0gICAgZXAgPSBGb3JtYXQwMmQoZXAsIG9mZnNldCAlIDYwKTsKKyAgY29uc3QgaW50
IHNlY29uZHMgPSBvZmZzZXQgJSA2MDsKKyAgY29uc3QgaW50IG1pbnV0ZXMgPSAob2Zmc2V0IC89
IDYwKSAlIDYwOworICBjb25zdCBpbnQgaG91cnMgPSBvZmZzZXQgLz0gNjA7CisgIGNvbnN0IGNo
YXIgc2VwID0gbW9kZVswXTsKKyAgY29uc3QgYm9vbCBleHQgPSAoc2VwICE9ICdcMCcgJiYgbW9k
ZVsxXSA9PSAnKicpOworICBjb25zdCBib29sIGNjYyA9IChleHQgJiYgbW9kZVsyXSA9PSAnOicp
OworICBpZiAoZXh0ICYmICghY2NjIHx8IHNlY29uZHMgIT0gMCkpIHsKKyAgICBlcCA9IEZvcm1h
dDAyZChlcCwgc2Vjb25kcyk7CiAgICAgKi0tZXAgPSBzZXA7CisgIH0gZWxzZSB7CisgICAgLy8g
SWYgd2UncmUgbm90IHJlbmRlcmluZyBzZWNvbmRzLCBzdWItbWludXRlIG5lZ2F0aXZlIG9mZnNl
dHMKKyAgICAvLyBzaG91bGQgZ2V0IGEgcG9zaXRpdmUgc2lnbiAoZS5nLiwgb2Zmc2V0PS0xMHMg
PT4gIiswMDowMCIpLgorICAgIGlmIChob3VycyA9PSAwICYmIG1pbnV0ZXMgPT0gMCkgc2lnbiA9
ICcrJzsKKyAgfQorICBpZiAoIWNjYyB8fCBtaW51dGVzICE9IDAgfHwgc2Vjb25kcyAhPSAwKSB7
CisgICAgZXAgPSBGb3JtYXQwMmQoZXAsIG1pbnV0ZXMpOworICAgIGlmIChzZXAgIT0gJ1wwJykg
Ki0tZXAgPSBzZXA7CiAgIH0KLSAgaW50IG1pbnV0ZXMgPSBvZmZzZXQgLyA2MDsKLSAgZXAgPSBG
b3JtYXQwMmQoZXAsIG1pbnV0ZXMgJSA2MCk7Ci0gIGlmIChzZXAgIT0gJ1wwJykgKi0tZXAgPSBz
ZXA7Ci0gIGVwID0gRm9ybWF0MDJkKGVwLCBtaW51dGVzIC8gNjApOworICBlcCA9IEZvcm1hdDAy
ZChlcCwgaG91cnMpOwogICAqLS1lcCA9IHNpZ247CiAgIHJldHVybiBlcDsKIH0KQEAgLTM4NCw2
ICs0MDQsNDQgQEAgc3RkOjpzdHJpbmcgZm9ybWF0KGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQs
IGNvbnN0IHRpbWVfcG9pbnQ8c2Vjb25kcz4mIHRwLAogICAgICAgY29udGludWU7CiAgICAgfQog
CisgICAgLy8gTW9yZSBjb21wbGV4IHNwZWNpZmllcnMgdGhhdCB3ZSBoYW5kbGUgb3Vyc2VsdmVz
LgorICAgIGlmICgqY3VyID09ICc6JyAmJiBjdXIgKyAxICE9IGVuZCkgeworICAgICAgaWYgKCoo
Y3VyICsgMSkgPT0gJ3onKSB7CisgICAgICAgIC8vIEZvcm1hdHMgJTp6LgorICAgICAgICBpZiAo
Y3VyIC0gMSAhPSBwZW5kaW5nKSB7CisgICAgICAgICAgRm9ybWF0VE0oJnJlc3VsdCwgc3RkOjpz
dHJpbmcocGVuZGluZywgY3VyIC0gMSksIHRtKTsKKyAgICAgICAgfQorICAgICAgICBicCA9IEZv
cm1hdE9mZnNldChlcCwgYWwub2Zmc2V0LCAiOiIpOworICAgICAgICByZXN1bHQuYXBwZW5kKGJw
LCBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oZXAgLSBicCkpOworICAgICAgICBwZW5kaW5nID0g
Y3VyICs9IDI7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgaWYgKCooY3VyICsg
MSkgPT0gJzonICYmIGN1ciArIDIgIT0gZW5kKSB7CisgICAgICAgIGlmICgqKGN1ciArIDIpID09
ICd6JykgeworICAgICAgICAgIC8vIEZvcm1hdHMgJTo6ei4KKyAgICAgICAgICBpZiAoY3VyIC0g
MSAhPSBwZW5kaW5nKSB7CisgICAgICAgICAgICBGb3JtYXRUTSgmcmVzdWx0LCBzdGQ6OnN0cmlu
ZyhwZW5kaW5nLCBjdXIgLSAxKSwgdG0pOworICAgICAgICAgIH0KKyAgICAgICAgICBicCA9IEZv
cm1hdE9mZnNldChlcCwgYWwub2Zmc2V0LCAiOioiKTsKKyAgICAgICAgICByZXN1bHQuYXBwZW5k
KGJwLCBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oZXAgLSBicCkpOworICAgICAgICAgIHBlbmRp
bmcgPSBjdXIgKz0gMzsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoKihjdXIgKyAyKSA9PSAnOicgJiYgY3VyICsgMyAhPSBlbmQpIHsKKyAgICAgICAgICBpZiAo
KihjdXIgKyAzKSA9PSAneicpIHsKKyAgICAgICAgICAgIC8vIEZvcm1hdHMgJTo6OnouCisgICAg
ICAgICAgICBpZiAoY3VyIC0gMSAhPSBwZW5kaW5nKSB7CisgICAgICAgICAgICAgIEZvcm1hdFRN
KCZyZXN1bHQsIHN0ZDo6c3RyaW5nKHBlbmRpbmcsIGN1ciAtIDEpLCB0bSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicCA9IEZvcm1hdE9mZnNldChlcCwgYWwub2Zmc2V0LCAiOio6Iik7
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGJwLCBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4o
ZXAgLSBicCkpOworICAgICAgICAgICAgcGVuZGluZyA9IGN1ciArPSA0OworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorCiAgICAg
Ly8gTG9vcCBpZiB0aGVyZSBpcyBubyBFIG1vZGlmaWVyLgogICAgIGlmICgqY3VyICE9ICdFJyB8
fCArK2N1ciA9PSBlbmQpIGNvbnRpbnVlOwogCkBAIC02NjgsMTcgKzcyNiwyNyBAQCBib29sIHBh
cnNlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICZwZXJjZW50X3MpOwogICAgICAgICBpZiAoZGF0YSAh
PSBudWxscHRyKSBzYXdfcGVyY2VudF9zID0gdHJ1ZTsKICAgICAgICAgY29udGludWU7CisgICAg
ICBjYXNlICc6JzoKKyAgICAgICAgaWYgKGZtdFswXSA9PSAneicgfHwKKyAgICAgICAgICAgIChm
bXRbMF0gPT0gJzonICYmCisgICAgICAgICAgICAgKGZtdFsxXSA9PSAneicgfHwgKGZtdFsxXSA9
PSAnOicgJiYgZm10WzJdID09ICd6JykpKSkgeworICAgICAgICAgIGRhdGEgPSBQYXJzZU9mZnNl
dChkYXRhLCAiOiIsICZvZmZzZXQpOworICAgICAgICAgIGlmIChkYXRhICE9IG51bGxwdHIpIHNh
d19vZmZzZXQgPSB0cnVlOworICAgICAgICAgIGZtdCArPSAoZm10WzBdID09ICd6JykgPyAxIDog
KGZtdFsxXSA9PSAneicpID8gMiA6IDM7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlICclJzoKICAgICAgICAgZGF0YSA9ICgqZGF0YSA9
PSAnJScgPyBkYXRhICsgMSA6IG51bGxwdHIpOwogICAgICAgICBjb250aW51ZTsKICAgICAgIGNh
c2UgJ0UnOgotICAgICAgICBpZiAoKmZtdCA9PSAneicgfHwgKCpmbXQgPT0gJyonICYmICooZm10
ICsgMSkgPT0gJ3onKSkgeworICAgICAgICBpZiAoZm10WzBdID09ICd6JyB8fCAoZm10WzBdID09
ICcqJyAmJiBmbXRbMV0gPT0gJ3onKSkgewogICAgICAgICAgIGRhdGEgPSBQYXJzZU9mZnNldChk
YXRhLCAiOiIsICZvZmZzZXQpOwogICAgICAgICAgIGlmIChkYXRhICE9IG51bGxwdHIpIHNhd19v
ZmZzZXQgPSB0cnVlOwotICAgICAgICAgIGZtdCArPSAoKmZtdCA9PSAneicpID8gMSA6IDI7Cisg
ICAgICAgICAgZm10ICs9IChmbXRbMF0gPT0gJ3onKSA/IDEgOiAyOwogICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmICgqZm10ID09ICcqJyAmJiAqKGZtdCArIDEpID09
ICdTJykgeworICAgICAgICBpZiAoZm10WzBdID09ICcqJyAmJiBmbXRbMV0gPT0gJ1MnKSB7CiAg
ICAgICAgICAgZGF0YSA9IFBhcnNlSW50KGRhdGEsIDIsIDAsIDYwLCAmdG0udG1fc2VjKTsKICAg
ICAgICAgICBpZiAoZGF0YSAhPSBudWxscHRyICYmICpkYXRhID09ICcuJykgewogICAgICAgICAg
ICAgZGF0YSA9IFBhcnNlU3ViU2Vjb25kcyhkYXRhICsgMSwgJnN1YnNlY29uZHMpOwpAQCAtNjg2
LDE0ICs3NTQsMTQgQEAgYm9vbCBwYXJzZShjb25zdCBzdGQ6OnN0cmluZyYgZm9ybWF0LCBjb25z
dCBzdGQ6OnN0cmluZyYgaW5wdXQsCiAgICAgICAgICAgZm10ICs9IDI7CiAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCpmbXQgPT0gJyonICYmICooZm10ICsgMSkg
PT0gJ2YnKSB7CisgICAgICAgIGlmIChmbXRbMF0gPT0gJyonICYmIGZtdFsxXSA9PSAnZicpIHsK
ICAgICAgICAgICBpZiAoZGF0YSAhPSBudWxscHRyICYmIHN0ZDo6aXNkaWdpdCgqZGF0YSkpIHsK
ICAgICAgICAgICAgIGRhdGEgPSBQYXJzZVN1YlNlY29uZHMoZGF0YSwgJnN1YnNlY29uZHMpOwog
ICAgICAgICAgIH0KICAgICAgICAgICBmbXQgKz0gMjsKICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQotICAgICAgICBpZiAoKmZtdCA9PSAnNCcgJiYgKihmbXQgKyAxKSA9PSAnWScpIHsK
KyAgICAgICAgaWYgKGZtdFswXSA9PSAnNCcgJiYgZm10WzFdID09ICdZJykgewogICAgICAgICAg
IGNvbnN0IGNoYXIqIGJwID0gZGF0YTsKICAgICAgICAgICBkYXRhID0gUGFyc2VJbnQoZGF0YSwg
NCwgeWVhcl90ey05OTl9LCB5ZWFyX3R7OTk5OX0sICZ5ZWFyKTsKICAgICAgICAgICBpZiAoZGF0
YSAhPSBudWxscHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3Jj
L3RpbWVfem9uZV9mb3JtYXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX2Zvcm1hdF90ZXN0LmNjCmluZGV4IDZiOTkyOGVkMzJmNDMxMDI3YzRiOTJhNDlj
MzJlOWEwOGExOGQ4OTEuLjcwNWNjZGNkY2M0M2I1OGZlMzNjN2M0NDdiZWQzNDM0OTkxM2JkYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1h
dF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zv
cm1hdF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
NjQsMTcgKzY0LDYgQEAgdm9pZCBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRpbWVfcG9pbnQ8RD4gdHAs
IHRpbWVfem9uZSB0eiwgY29uc3Qgc3RkOjpzdHJpbmcmIGZtdCwKICAgRVhQRUNUX0VRKCJ4eHgg
IiArIGFucyArICIgeXl5IiwgZm9ybWF0KCJ4eHggIiArIGZtdCArICIgeXl5IiwgdHAsIHR6KSk7
CiB9CiAKLS8vIFRoZXNlIHRlc3RzIHNvbWV0aW1lcyBydW4gb24gcGxhdGZvcm1zIHRoYXQgaGF2
ZSB6b25laW5mbyBkYXRhIHNvIG9sZAotLy8gdGhhdCB0aGUgdHJhbnNpdGlvbiB3ZSBhcmUgYXR0
ZW1wdGluZyB0byBjaGVjayBkb2VzIG5vdCBleGlzdCwgbW9zdAotLy8gbm90YWJseSBBbmRyb2lk
IGVtdWxhdG9ycy4gIEZvcnR1bmF0ZWx5LCBBbmRyb2lkWm9uZUluZm9Tb3VyY2Ugc3VwcG9ydHMK
LS8vIHRpbWVfem9uZTo6dmVyc2lvbigpIHNvLCBpbiBjYXNlcyB3aGVyZSB3ZSd2ZSBsZWFybmVk
IHRoYXQgaXQgbWF0dGVycywKLS8vIHdlIGNhbiBtYWtlIHRoZSBjaGVjayBjb25kaXRpb25hbGx5
LgotaW50IFZlcnNpb25DbXAodGltZV96b25lIHR6LCBjb25zdCBzdGQ6OnN0cmluZyYgdGFyZ2V0
KSB7Ci0gIHN0ZDo6c3RyaW5nIHZlcnNpb24gPSB0ei52ZXJzaW9uKCk7Ci0gIGlmICh2ZXJzaW9u
LmVtcHR5KCkgJiYgIXRhcmdldC5lbXB0eSgpKSByZXR1cm4gMTsgIC8vIHVua25vd24gPiBrbm93
bgotICByZXR1cm4gdmVyc2lvbi5jb21wYXJlKHRhcmdldCk7Ci19Ci0KIH0gIC8vIG5hbWVzcGFj
ZQogCiAvLwpAQCAtMTc0LDcgKzE2Myw5IEBAIFRFU1QoRm9ybWF0LCBQb3NpeENvbnZlcnNpb25z
KSB7CiAgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJU0iLCAiMDAiKTsKICAgVGVzdEZv
cm1hdFNwZWNpZmllcih0cCwgdHosICIlUyIsICIwMCIpOwogICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiVVIiwgIjAwIik7CisjaWYgIWRlZmluZWQoX19FTVNDUklQVEVOX18pCiAgIFRl
c3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXciLCAiNCIpOyAgLy8gND1UaHVyc2RheQorI2Vu
ZGlmCiAgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJVciLCAiMDAiKTsKICAgVGVzdEZv
cm1hdFNwZWNpZmllcih0cCwgdHosICIleSIsICI3MCIpOwogICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiVZIiwgIjE5NzAiKTsKQEAgLTQzNiw1MSArNDI3LDE2NSBAQCBURVNUKEZvcm1h
dCwgQ29tcGFyZUV4dGVuZFNlY29uZHNWc1N1YnNlY29uZHMpIHsKIH0KIAogVEVTVChGb3JtYXQs
IEV4dGVuZGVkT2Zmc2V0KSB7Ci0gIGF1dG8gdHAgPSBjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJv
bV90aW1lX3QoMCk7CisgIGNvbnN0IGF1dG8gdHAgPSBjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJv
bV90aW1lX3QoMCk7CiAKLSAgdGltZV96b25lIHR6ID0gdXRjX3RpbWVfem9uZSgpOworICBhdXRv
IHR6ID0gZml4ZWRfdGltZV96b25lKGFic2w6OnRpbWVfaW50ZXJuYWw6OmNjdHo6OnNlY29uZHM6
Onplcm8oKSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXoiLCAiKzAwMDAiKTsK
KyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOnoiLCAiKzAwOjAwIik7CiAgIFRlc3RG
b3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6IiwgIiswMDowMCIpOwogCi0gIEVYUEVDVF9UUlVF
KGxvYWRfdGltZV96b25lKCJBbWVyaWNhL05ld19Zb3JrIiwgJnR6KSk7Ci0gIFRlc3RGb3JtYXRT
cGVjaWZpZXIodHAsIHR6LCAiJUV6IiwgIi0wNTowMCIpOwotCi0gIEVYUEVDVF9UUlVFKGxvYWRf
dGltZV96b25lKCJBbWVyaWNhL0xvc19BbmdlbGVzIiwgJnR6KSk7Ci0gIFRlc3RGb3JtYXRTcGVj
aWZpZXIodHAsIHR6LCAiJUV6IiwgIi0wODowMCIpOworICB0eiA9IGZpeGVkX3RpbWVfem9uZShj
aHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIleiIs
ICIrMDAwMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6eiIsICIrMDA6MDAi
KTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiKzAwOjAwIik7CiAKLSAg
RVhQRUNUX1RSVUUobG9hZF90aW1lX3pvbmUoIkF1c3RyYWxpYS9TeWRuZXkiLCAmdHopKTsKLSAg
VGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiKzEwOjAwIik7CisgIHR6ID0gZml4
ZWRfdGltZV96b25lKC1jaHJvbm86OnNlY29uZHMoNTYpKTsgIC8vIE5PVEU6ICswMDowMAorICBU
ZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV6IiwgIiswMDAwIik7CisgIFRlc3RGb3JtYXRT
cGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIiswMDowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiVFeiIsICIrMDA6MDAiKTsKIAotICBFWFBFQ1RfVFJVRShsb2FkX3RpbWVfem9u
ZSgiQWZyaWNhL01vbnJvdmlhIiwgJnR6KSk7Ci0gIC8vIFRoZSB0cnVlIG9mZnNldCBpcyAtMDA6
NDQ6MzAgYnV0ICV6IG9ubHkgZ2l2ZXMgKHRydW5jYXRlZCkgbWludXRlcy4KLSAgVGVzdEZvcm1h
dFNwZWNpZmllcih0cCwgdHosICIleiIsICItMDA0NCIpOwotICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiVFeiIsICItMDA6NDQiKTsKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hyb25v
OjptaW51dGVzKDM0KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXoiLCAiKzAw
MzQiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOnoiLCAiKzAwOjM0Iik7Cisg
IFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6IiwgIiswMDozNCIpOworCisgIHR6ID0g
Zml4ZWRfdGltZV96b25lKC1jaHJvbm86Om1pbnV0ZXMoMzQpKTsKKyAgVGVzdEZvcm1hdFNwZWNp
Zmllcih0cCwgdHosICIleiIsICItMDAzNCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0
eiwgIiU6eiIsICItMDA6MzQiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoi
LCAiLTAwOjM0Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hyb25vOjptaW51dGVzKDM0
KSArIGNocm9ubzo6c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwg
IiV6IiwgIiswMDM0Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIisw
MDozNCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICIrMDA6MzQiKTsK
KworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgtY2hyb25vOjptaW51dGVzKDM0KSAtIGNocm9ubzo6
c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV6IiwgIi0wMDM0
Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIi0wMDozNCIpOworICBU
ZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICItMDA6MzQiKTsKKworICB0eiA9IGZp
eGVkX3RpbWVfem9uZShjaHJvbm86OmhvdXJzKDEyKSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIo
dHAsIHR6LCAiJXoiLCAiKzEyMDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIl
OnoiLCAiKzEyOjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6IiwgIisx
MjowMCIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJvbm86OmhvdXJzKDEyKSk7Cisg
IFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXoiLCAiLTEyMDAiKTsKKyAgVGVzdEZvcm1h
dFNwZWNpZmllcih0cCwgdHosICIlOnoiLCAiLTEyOjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZp
ZXIodHAsIHR6LCAiJUV6IiwgIi0xMjowMCIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKGNo
cm9ubzo6aG91cnMoMTIpICsgY2hyb25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVj
aWZpZXIodHAsIHR6LCAiJXoiLCAiKzEyMDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwg
dHosICIlOnoiLCAiKzEyOjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6
IiwgIisxMjowMCIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJvbm86OmhvdXJzKDEy
KSAtIGNocm9ubzo6c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwg
IiV6IiwgIi0xMjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIi0x
MjowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICItMTI6MDAiKTsK
KworICB0eiA9IGZpeGVkX3RpbWVfem9uZShjaHJvbm86OmhvdXJzKDEyKSArIGNocm9ubzo6bWlu
dXRlcygzNCkpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV6IiwgIisxMjM0Iik7
CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIisxMjozNCIpOworICBUZXN0
Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICIrMTI6MzQiKTsKKworICB0eiA9IGZpeGVk
X3RpbWVfem9uZSgtY2hyb25vOjpob3VycygxMikgLSBjaHJvbm86Om1pbnV0ZXMoMzQpKTsKKyAg
VGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIleiIsICItMTIzNCIpOworICBUZXN0Rm9ybWF0
U3BlY2lmaWVyKHRwLCB0eiwgIiU6eiIsICItMTI6MzQiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmll
cih0cCwgdHosICIlRXoiLCAiLTEyOjM0Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hy
b25vOjpob3VycygxMikgKyBjaHJvbm86Om1pbnV0ZXMoMzQpICsKKyAgICAgICAgICAgICAgICAg
ICAgICAgY2hyb25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6
LCAiJXoiLCAiKzEyMzQiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOnoiLCAi
KzEyOjM0Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6IiwgIisxMjozNCIp
OworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJvbm86OmhvdXJzKDEyKSAtIGNocm9ubzo6
bWludXRlcygzNCkgLQorICAgICAgICAgICAgICAgICAgICAgICBjaHJvbm86OnNlY29uZHMoNTYp
KTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIleiIsICItMTIzNCIpOworICBUZXN0
Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6eiIsICItMTI6MzQiKTsKKyAgVGVzdEZvcm1hdFNw
ZWNpZmllcih0cCwgdHosICIlRXoiLCAiLTEyOjM0Iik7CiB9CiAKIFRFU1QoRm9ybWF0LCBFeHRl
bmRlZFNlY29uZE9mZnNldCkgewotICBjb25zdCB0aW1lX3pvbmUgdXRjID0gdXRjX3RpbWVfem9u
ZSgpOwotICB0aW1lX3BvaW50PGNocm9ubzo6c2Vjb25kcz4gdHA7Ci0gIHRpbWVfem9uZSB0ejsK
LQotICBFWFBFQ1RfVFJVRShsb2FkX3RpbWVfem9uZSgiQW1lcmljYS9OZXdfWW9yayIsICZ0eikp
OwotICB0cCA9IGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE4ODMsIDExLCAxOCwgMTYsIDU5LCA1OSks
IHV0Yyk7Ci0gIGlmICh0ei5sb29rdXAodHApLm9mZnNldCA9PSAtNSAqIDYwICogNjApIHsKLSAg
ICAvLyBJdCBsb29rcyBsaWtlIHRoZSB0emRhdGEgaXMgb25seSAzMiBiaXQgKHByb2JhYmx5IG1h
Y09TKSwKLSAgICAvLyB3aGljaCBib3R0b21zIG91dCBhdCAxOTAxLTEyLTEzVDIwOjQ1OjUyKzAw
OjAwLgotICB9IGVsc2UgewotICAgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUUqeiIs
ICItMDQ6NTY6MDIiKTsKLSAgICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICIt
MDQ6NTYiKTsKLSAgfQotICB0cCArPSBjaHJvbm86OnNlY29uZHMoMSk7Ci0gIFRlc3RGb3JtYXRT
cGVjaWZpZXIodHAsIHR6LCAiJUUqeiIsICItMDU6MDA6MDAiKTsKLQotICBFWFBFQ1RfVFJVRShs
b2FkX3RpbWVfem9uZSgiRXVyb3BlL01vc2NvdyIsICZ0eikpOwotICB0cCA9IGNvbnZlcnQoY2l2
aWxfc2Vjb25kKDE5MTksIDYsIDMwLCAyMywgNTksIDU5KSwgdXRjKTsKLSAgaWYgKFZlcnNpb25D
bXAodHosICIyMDE2ZyIpID49IDApIHsKLSAgICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwg
IiVFKnoiLCAiKzA0OjMxOjE5Iik7Ci0gICAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIl
RXoiLCAiKzA0OjMxIik7Ci0gIH0KLSAgdHAgKz0gY2hyb25vOjpzZWNvbmRzKDEpOwotICBUZXN0
Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFKnoiLCAiKzA0OjAwOjAwIik7CisgIGNvbnN0IGF1
dG8gdHAgPSBjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoMCk7CisKKyAgYXV0byB0
eiA9IGZpeGVkX3RpbWVfem9uZShhYnNsOjp0aW1lX2ludGVybmFsOjpjY3R6OjpzZWNvbmRzOjp6
ZXJvKCkpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFKnoiLCAiKzAwOjAwOjAw
Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6eiIsICIrMDA6MDA6MDAiKTsK
KyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOjo6eiIsICIrMDAiKTsKKworICB0eiA9
IGZpeGVkX3RpbWVfem9uZShjaHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNp
Zmllcih0cCwgdHosICIlRSp6IiwgIiswMDowMDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiU6OnoiLCAiKzAwOjAwOjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAs
IHR6LCAiJTo6OnoiLCAiKzAwOjAwOjU2Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoLWNo
cm9ubzo6c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFKnoi
LCAiLTAwOjAwOjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6eiIsICIt
MDA6MDA6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOjo6eiIsICItMDA6
MDA6NTYiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZShjaHJvbm86Om1pbnV0ZXMoMzQpKTsK
KyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRSp6IiwgIiswMDozNDowMCIpOworICBU
ZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6OnoiLCAiKzAwOjM0OjAwIik7CisgIFRlc3RG
b3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6OnoiLCAiKzAwOjM0Iik7CisKKyAgdHogPSBmaXhl
ZF90aW1lX3pvbmUoLWNocm9ubzo6bWludXRlcygzNCkpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiVFKnoiLCAiLTAwOjM0OjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAs
IHR6LCAiJTo6eiIsICItMDA6MzQ6MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHos
ICIlOjo6eiIsICItMDA6MzQiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZShjaHJvbm86Om1p
bnV0ZXMoMzQpICsgY2hyb25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIo
dHAsIHR6LCAiJUUqeiIsICIrMDA6MzQ6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwg
dHosICIlOjp6IiwgIiswMDozNDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwg
IiU6Ojp6IiwgIiswMDozNDo1NiIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJvbm86
Om1pbnV0ZXMoMzQpIC0gY2hyb25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZp
ZXIodHAsIHR6LCAiJUUqeiIsICItMDA6MzQ6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0
cCwgdHosICIlOjp6IiwgIi0wMDozNDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0
eiwgIiU6Ojp6IiwgIi0wMDozNDo1NiIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKGNocm9u
bzo6aG91cnMoMTIpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRSp6IiwgIisx
MjowMDowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6OnoiLCAiKzEyOjAw
OjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6OnoiLCAiKzEyIik7CisK
KyAgdHogPSBmaXhlZF90aW1lX3pvbmUoLWNocm9ubzo6aG91cnMoMTIpKTsKKyAgVGVzdEZvcm1h
dFNwZWNpZmllcih0cCwgdHosICIlRSp6IiwgIi0xMjowMDowMCIpOworICBUZXN0Rm9ybWF0U3Bl
Y2lmaWVyKHRwLCB0eiwgIiU6OnoiLCAiLTEyOjAwOjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZp
ZXIodHAsIHR6LCAiJTo6OnoiLCAiLTEyIik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hy
b25vOjpob3VycygxMikgKyBjaHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNp
Zmllcih0cCwgdHosICIlRSp6IiwgIisxMjowMDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiU6OnoiLCAiKzEyOjAwOjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAs
IHR6LCAiJTo6OnoiLCAiKzEyOjAwOjU2Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoLWNo
cm9ubzo6aG91cnMoMTIpIC0gY2hyb25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVj
aWZpZXIodHAsIHR6LCAiJUUqeiIsICItMTI6MDA6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmll
cih0cCwgdHosICIlOjp6IiwgIi0xMjowMDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiU6Ojp6IiwgIi0xMjowMDo1NiIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKGNo
cm9ubzo6aG91cnMoMTIpICsgY2hyb25vOjptaW51dGVzKDM0KSk7CisgIFRlc3RGb3JtYXRTcGVj
aWZpZXIodHAsIHR6LCAiJUUqeiIsICIrMTI6MzQ6MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmll
cih0cCwgdHosICIlOjp6IiwgIisxMjozNDowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiU6Ojp6IiwgIisxMjozNCIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJv
bm86OmhvdXJzKDEyKSAtIGNocm9ubzo6bWludXRlcygzNCkpOworICBUZXN0Rm9ybWF0U3BlY2lm
aWVyKHRwLCB0eiwgIiVFKnoiLCAiLTEyOjM0OjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIo
dHAsIHR6LCAiJTo6eiIsICItMTI6MzQ6MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwg
dHosICIlOjo6eiIsICItMTI6MzQiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZShjaHJvbm86
OmhvdXJzKDEyKSArIGNocm9ubzo6bWludXRlcygzNCkgKworICAgICAgICAgICAgICAgICAgICAg
ICBjaHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIl
RSp6IiwgIisxMjozNDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6Onoi
LCAiKzEyOjM0OjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6OnoiLCAi
KzEyOjM0OjU2Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoLWNocm9ubzo6aG91cnMoMTIp
IC0gY2hyb25vOjptaW51dGVzKDM0KSAtCisgICAgICAgICAgICAgICAgICAgICAgIGNocm9ubzo6
c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFKnoiLCAiLTEy
OjM0OjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6eiIsICItMTI6MzQ6
NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOjo6eiIsICItMTI6MzQ6NTYi
KTsKIH0KIAogVEVTVChGb3JtYXQsIEV4dGVuZGVkWWVhcnMpIHsKQEAgLTExNjAsMjUgKzEyNjUs
NiBAQCBURVNUKFBhcnNlLCBFeHRlbmRlZE9mZnNldCkgewogICBjb25zdCB0aW1lX3pvbmUgdXRj
ID0gdXRjX3RpbWVfem9uZSgpOwogICB0aW1lX3BvaW50PGFic2w6OnRpbWVfaW50ZXJuYWw6OmNj
dHo6OnNlY29uZHM+IHRwOwogCi0gIC8vICV6IGFnYWluc3QgKy1ISE1NLgotICBFWFBFQ1RfVFJV
RShwYXJzZSgiJXoiLCAiKzAwMDAiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChj
aXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RS
VUUocGFyc2UoIiV6IiwgIi0xMjM0IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQo
Y2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAzNCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNU
X1RSVUUocGFyc2UoIiV6IiwgIisxMjM0IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZl
cnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTEsIDI2LCAwKSwgdXRjKSwgdHApOwotICBF
WFBFQ1RfRkFMU0UocGFyc2UoIiV6IiwgIi0xMjMiLCB1dGMsICZ0cCkpOwotCi0gIC8vICV6IGFn
YWluc3QgKy1ISC4KLSAgRVhQRUNUX1RSVUUocGFyc2UoIiV6IiwgIiswMCIsIHV0YywgJnRwKSk7
Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwg
dXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJXoiLCAiLTEyIiwgdXRjLCAmdHApKTsK
LSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAwLCAwKSwg
dXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJXoiLCAiKzEyIiwgdXRjLCAmdHApKTsK
LSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTIsIDAsIDAp
LCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9GQUxTRShwYXJzZSgiJXoiLCAiLTEiLCB1dGMsICZ0cCkp
OwotCi0gIC8vICVFeiBhZ2FpbnN0ICstSEg6TU0uCiAgIEVYUEVDVF9UUlVFKHBhcnNlKCIlRXoi
LCAiKzAwOjAwIiwgdXRjLCAmdHApKTsKICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25k
KDE5NzAsIDEsIDEsIDAsIDAsIDApLCB1dGMpLCB0cCk7CiAgIEVYUEVDVF9UUlVFKHBhcnNlKCIl
RXoiLCAiLTEyOjM0IiwgdXRjLCAmdHApKTsKQEAgLTExODcsOTEgKzEyNzMsNzAgQEAgVEVTVChQ
YXJzZSwgRXh0ZW5kZWRPZmZzZXQpIHsKICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25k
KDE5NjksIDEyLCAzMSwgMTEsIDI2LCAwKSwgdXRjKSwgdHApOwogICBFWFBFQ1RfRkFMU0UocGFy
c2UoIiVFeiIsICItMTI6MyIsIHV0YywgJnRwKSk7CiAKLSAgLy8gJUV6IGFnYWluc3QgKy1ISE1N
LgotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUV6IiwgIiswMDAwIiwgdXRjLCAmdHApKTsKLSAgRVhQ
RUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAsIDAsIDApLCB1dGMpLCB0
cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRXoiLCAiLTEyMzQiLCB1dGMsICZ0cCkpOwotICBF
WFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMTIsIDM0LCAwKSwgdXRj
KSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUV6IiwgIisxMjM0IiwgdXRjLCAmdHApKTsK
LSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTEsIDI2LCAw
KSwgdXRjKSwgdHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2UoIiVFeiIsICItMTIzIiwgdXRjLCAm
dHApKTsKLQotICAvLyAlRXogYWdhaW5zdCArLUhILgotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUV6
IiwgIiswMCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgx
OTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUV6
IiwgIi0xMiIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgx
OTcwLCAxLCAxLCAxMiwgMCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVF
eiIsICIrMTIiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQo
MTk2OSwgMTIsIDMxLCAxMiwgMCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX0ZBTFNFKHBhcnNl
KCIlRXoiLCAiLTEiLCB1dGMsICZ0cCkpOworICBmb3IgKGF1dG8gZm10IDogeyIlRXoiLCAiJXoi
fSkgeworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwgIiswMDAwIiwgdXRjLCAmdHApKTsKKyAg
ICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0
YyksIHRwKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICItMTIzNCIsIHV0YywgJnRwKSk7
CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAzNCwg
MCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMTIzNCIsIHV0Yywg
JnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwg
MTEsIDI2LCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9GQUxTRShwYXJzZShmbXQsICItMTIz
IiwgdXRjLCAmdHApKTsKKworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwgIiswMCIsIHV0Yywg
JnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAs
IDAsIDApLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10LCAiLTEyIiwgdXRj
LCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwg
MTIsIDAsIDApLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10LCAiKzEyIiwg
dXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk2OSwgMTIs
IDMxLCAxMiwgMCwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfRkFMU0UocGFyc2UoZm10LCAi
LTEiLCB1dGMsICZ0cCkpOworICB9CiB9CiAKIFRFU1QoUGFyc2UsIEV4dGVuZGVkU2Vjb25kT2Zm
c2V0KSB7CiAgIGNvbnN0IHRpbWVfem9uZSB1dGMgPSB1dGNfdGltZV96b25lKCk7CiAgIHRpbWVf
cG9pbnQ8YWJzbDo6dGltZV9pbnRlcm5hbDo6Y2N0ejo6c2Vjb25kcz4gdHA7CiAKLSAgLy8gJUV6
IGFnYWluc3QgKy1ISDpNTTpTUy4KLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFeiIsICIrMDA6MDA6
MDAiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwg
MSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFeiIsICIt
MTI6MzQ6NTYiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQo
MTk3MCwgMSwgMSwgMTIsIDM0LCA1NiksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2Uo
IiVFeiIsICIrMTI6MzQ6NTYiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZp
bF9zZWNvbmQoMTk2OSwgMTIsIDMxLCAxMSwgMjUsIDQpLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9G
QUxTRShwYXJzZSgiJUV6IiwgIi0xMjozNDo1IiwgdXRjLCAmdHApKTsKLQotICAvLyAlRXogYWdh
aW5zdCArLUhITU1TUy4KLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFeiIsICIrMDAwMDAwIiwgdXRj
LCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAs
IDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRXoiLCAiLTEyMzQ1NiIs
IHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAx
LCAxMiwgMzQsIDU2KSwgdXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUV6IiwgIisx
MjM0NTYiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk2
OSwgMTIsIDMxLCAxMSwgMjUsIDQpLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9GQUxTRShwYXJzZSgi
JUV6IiwgIi0xMjM0NSIsIHV0YywgJnRwKSk7Ci0KLSAgLy8gJUUqeiBhZ2FpbnN0ICstSEg6TU06
U1MuCi0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIiswMDowMDowMCIsIHV0YywgJnRwKSk7
Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwg
dXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUUqeiIsICItMTI6MzQ6NTYiLCB1dGMs
ICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMTIs
IDM0LCA1NiksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAiKzEyOjM0
OjU2IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5Njks
IDEyLCAzMSwgMTEsIDI1LCA0KSwgdXRjKSwgdHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2UoIiVF
KnoiLCAiLTEyOjM0OjUiLCB1dGMsICZ0cCkpOwotCi0gIC8vICVFKnogYWdhaW5zdCArLUhITU1T
Uy4KLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAiKzAwMDAwMCIsIHV0YywgJnRwKSk7Ci0g
IEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRj
KSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUUqeiIsICItMTIzNDU2IiwgdXRjLCAmdHAp
KTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAzNCwg
NTYpLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIisxMjM0NTYiLCB1
dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk2OSwgMTIsIDMx
LCAxMSwgMjUsIDQpLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9GQUxTRShwYXJzZSgiJUUqeiIsICIt
MTIzNDUiLCB1dGMsICZ0cCkpOwotCi0gIC8vICVFKnogYWdhaW5zdCArLUhIOk1NLgotICBFWFBF
Q1RfVFJVRShwYXJzZSgiJUUqeiIsICIrMDA6MDAiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEo
Y29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKLSAg
RVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAiLTEyOjM0IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNU
X0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAzNCwgMCksIHV0YyksIHRw
KTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAiKzEyOjM0IiwgdXRjLCAmdHApKTsKLSAg
RVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTEsIDI2LCAwKSwg
dXRjKSwgdHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2UoIiVFKnoiLCAiLTEyOjMiLCB1dGMsICZ0
cCkpOwotCi0gIC8vICVFKnogYWdhaW5zdCArLUhITU0uCi0gIEVYUEVDVF9UUlVFKHBhcnNlKCIl
RSp6IiwgIiswMDAwIiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vj
b25kKDE5NzAsIDEsIDEsIDAsIDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNl
KCIlRSp6IiwgIi0xMjM0IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxf
c2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAzNCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUo
cGFyc2UoIiVFKnoiLCAiKzEyMzQiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChj
aXZpbF9zZWNvbmQoMTk2OSwgMTIsIDMxLCAxMSwgMjYsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVD
VF9GQUxTRShwYXJzZSgiJUUqeiIsICItMTIzIiwgdXRjLCAmdHApKTsKLQotICAvLyAlRSp6IGFn
YWluc3QgKy1ISC4KLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAiKzAwIiwgdXRjLCAmdHAp
KTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAsIDAsIDAp
LCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIi0xMiIsIHV0YywgJnRw
KSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMCwg
MCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAiKzEyIiwgdXRjLCAm
dHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTIs
IDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9GQUxTRShwYXJzZSgiJUUqeiIsICItMSIsIHV0
YywgJnRwKSk7CisgIGZvciAoYXV0byBmbXQgOiB7IiVFeiIsICIlRSp6IiwgIiU6eiIsICIlOjp6
IiwgIiU6Ojp6In0pIHsKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMDA6MDA6MDAiLCB1
dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAx
LCAwLCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwgIi0xMjoz
NDo1NiIsIHV0YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5
NzAsIDEsIDEsIDEyLCAzNCwgNTYpLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX1RSVUUocGFyc2Uo
Zm10LCAiKzEyOjM0OjU2IiwgdXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZp
bF9zZWNvbmQoMTk2OSwgMTIsIDMxLCAxMSwgMjUsIDQpLCB1dGMpLCB0cCk7CisgICAgRVhQRUNU
X0ZBTFNFKHBhcnNlKGZtdCwgIi0xMjozNDo1IiwgdXRjLCAmdHApKTsKKworICAgIEVYUEVDVF9U
UlVFKHBhcnNlKGZtdCwgIiswMDAwMDAiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252
ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVY
UEVDVF9UUlVFKHBhcnNlKGZtdCwgIi0xMjM0NTYiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9F
UShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMzQsIDU2KSwgdXRjKSwgdHAp
OworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwgIisxMjM0NTYiLCB1dGMsICZ0cCkpOworICAg
IEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDExLCAyNSwgNCks
IHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfRkFMU0UocGFyc2UoZm10LCAiLTEyMzQ1IiwgdXRjLCAm
dHApKTsKKworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwgIiswMDowMCIsIHV0YywgJnRwKSk7
CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAsIDAsIDAp
LCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10LCAiLTEyOjM0IiwgdXRjLCAm
dHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMTIs
IDM0LCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwgIisxMjozNCIs
IHV0YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEy
LCAzMSwgMTEsIDI2LCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9GQUxTRShwYXJzZShmbXQs
ICItMTI6MyIsIHV0YywgJnRwKSk7CisKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMDAw
MCIsIHV0YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAs
IDEsIDEsIDAsIDAsIDApLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10LCAi
LTEyMzQiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgx
OTcwLCAxLCAxLCAxMiwgMzQsIDApLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX1RSVUUocGFyc2Uo
Zm10LCAiKzEyMzQiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3Nl
Y29uZCgxOTY5LCAxMiwgMzEsIDExLCAyNiwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfRkFM
U0UocGFyc2UoZm10LCAiLTEyMyIsIHV0YywgJnRwKSk7CisKKyAgICBFWFBFQ1RfVFJVRShwYXJz
ZShmbXQsICIrMDAiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3Nl
Y29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBh
cnNlKGZtdCwgIi0xMiIsIHV0YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxf
c2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVF
KHBhcnNlKGZtdCwgIisxMiIsIHV0YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2
aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTIsIDAsIDApLCB1dGMpLCB0cCk7CisgICAgRVhQRUNU
X0ZBTFNFKHBhcnNlKGZtdCwgIi0xIiwgdXRjLCAmdHApKTsKKyAgfQogfQogCiBURVNUKFBhcnNl
LCBFeHRlbmRlZFllYXJzKSB7CkBAIC0xMzkwLDYgKzE0NTUsMTAgQEAgVEVTVChGb3JtYXRQYXJz
ZSwgUm91bmRUcmlwKSB7CiAjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KQog
ICAvLyBJbml0aWFsIGludmVzdGlnYXRpb25zIGluZGljYXRlIHRoZSAlYyBkb2VzIG5vdCByb3Vu
ZHRyaXAgb24gV2luZG93cy4KICAgLy8gVE9ETzogRmlndXJlIG91dCB3aGF0IGlzIGdvaW5nIG9u
IGhlcmUgKHBlcmhhcHMgYSBsb2NhbGUgcHJvYmxlbSkuCisjZWxpZiBkZWZpbmVkKF9fRU1TQ1JJ
UFRFTl9fKQorICAvLyBzdHJmdGltZSgpIGFuZCBzdHJwdGltZSgpIHVzZSBkaWZmZXJlbnQgZGVm
aW50aW9ucyBmb3IgIiVjIiB1bmRlcgorICAvLyBlbXNjcmlwdGVuIChzZWUgaHR0cHM6Ly9naXRo
dWIuY29tL2tyaXBrZW4vZW1zY3JpcHRlbi9wdWxsLzc0OTEpLAorICAvLyBjYXVzaW5nIGl0cyBy
b3VuZC10cmlwIHRlc3QgdG8gZmFpbC4KICNlbHNlCiAgIC8vIEV2ZW4gdGhvdWdoIHdlIGRvbid0
IGtub3cgd2hhdCAlYyB3aWxsIHByb2R1Y2UsIGl0IHNob3VsZCByb3VuZHRyaXAsCiAgIC8vIGJ1
dCBvbmx5IGluIHRoZSAwLW9mZnNldCB0aW1lem9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2lmLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3NyYy90aW1lX3pvbmVfaWYuY2MKaW5kZXggMzgwODM0YTE3MmE4MTczYjhhNmE4YTMyNjBi
ZmYyMzFkYTVhMjFkYS4uMDlhYWVlNWZiNDM1NTRlOGY2M2YwZTYyMDgyYTVkNDU1OTZlODg2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaWYuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaWYuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pZi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3NyYy90aW1lX3pvbmVfaWYuaAppbmRleCBlNGJkMzg2NmE4N2I4ZGQ0ZGE2NTY2ODY0ZGI1
NmQ3ZmI3ZDZmOTBhLi5kMDAwYjdhNWY3ODA1ZTNmNzkxODFhNDk2ZTg1OTgwY2M5ZTE2Mjk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pZi5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2lmLmgKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3NyYy90aW1lX3pvbmVfaW1wbC5jYwppbmRleCAzMDYyY2NkM2NlYjA2YWZhZjBiNzc2MmJk
M2UwZGJmOWIyZjRmOTA4Li4zY2JjNjc0NjUzZGRmOTY1Njk3M2IwOWY2YzQ0ZDFiMDNiNzJhZmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbXBs
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ltcGwuY2MK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbXBsLmgKaW5kZXggMTQ5NjVlZjU0YmZiMjExYjIz
YjEzNDFiY2IwNmViOGNlMmNlMTNlMC4uYjczZmFkOWJiODhmMTdiNWFlYjg0MmQ1ZTA3OGM2NGM3
ZDdhZWNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pv
bmVfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2lt
cGwuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmNjCmluZGV4IDJjYjM1OGQwNDhl
MmQ4MjE5MWRlOGJjZjIwMjgyOWM3ZWEyY2I4ODMuLjlkYjcyZTBjNTBmZTQ0NzdmODAyNWIxOWMz
YTgxNjJmMTJhZDNiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX2luZm8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1l
X3pvbmVfaW5mby5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTI1LDcgKzI1LDcgQEAKIC8vIGEgZ3JhaW4gb2Ygc2FsdC4KIC8vCiAvLyBGb3IgbW9yZSBpbmZv
cm1hdGlvbiBzZWUgdHpmaWxlKDUpLCBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMsIG9y
Ci0vLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1pvbmVpbmZvLgorLy8gaHR0cHM6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvWm9uZWluZm8uCiAvLwogLy8gTm90ZSB0aGF0IHdlIGFzc3Vt
ZSB0aGUgcHJvbGVwdGljIEdyZWdvcmlhbiBjYWxlbmRhciBhbmQgNjAtc2Vjb25kCiAvLyBtaW51
dGVzIHRocm91Z2hvdXQuCkBAIC0yMzksOCArMjM5LDggQEAgYm9vbCBUaW1lWm9uZUluZm86Okhl
YWRlcjo6QnVpbGQoY29uc3QgdHpoZWFkJiB0emgpIHsKICAgbGVhcGNudCA9IHN0YXRpY19jYXN0
PHN0ZDo6c2l6ZV90Pih2KTsKICAgaWYgKCh2ID0gRGVjb2RlMzIodHpoLnR6aF90dGlzc3RkY250
KSkgPCAwKSByZXR1cm4gZmFsc2U7CiAgIHR0aXNzdGRjbnQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNp
emVfdD4odik7Ci0gIGlmICgodiA9IERlY29kZTMyKHR6aC50emhfdHRpc2dtdGNudCkpIDwgMCkg
cmV0dXJuIGZhbHNlOwotICB0dGlzZ210Y250ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHYp
OworICBpZiAoKHYgPSBEZWNvZGUzMih0emgudHpoX3R0aXN1dGNudCkpIDwgMCkgcmV0dXJuIGZh
bHNlOworICB0dGlzdXRjbnQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4odik7CiAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RkOjpzaXplX3QgVGltZVpvbmVJbmZv
OjpIZWFkZXI6OkRhdGFMZW5ndGgoc3RkOjpzaXplX3QgdGltZV9sZW4pIGNvbnN0IHsKICAgbGVu
ICs9IDEgKiBjaGFyY250OyAgICAgICAgICAgICAgIC8vIGFiYnJldmlhdGlvbnMKICAgbGVuICs9
ICh0aW1lX2xlbiArIDQpICogbGVhcGNudDsgIC8vIGxlYXAtdGltZSArIFRBSS1VVEMKICAgbGVu
ICs9IDEgKiB0dGlzc3RkY250OyAgICAgICAgICAgIC8vIFVUQy9sb2NhbCBpbmRpY2F0b3JzCi0g
IGxlbiArPSAxICogdHRpc2dtdGNudDsgICAgICAgICAgICAvLyBzdGFuZGFyZC93YWxsIGluZGlj
YXRvcnMKKyAgbGVuICs9IDEgKiB0dGlzdXRjbnQ7ICAgICAgICAgICAgIC8vIHN0YW5kYXJkL3dh
bGwgaW5kaWNhdG9ycwogICByZXR1cm4gbGVuOwogfQogCkBAIC00MjcsNyArNDI3LDcgQEAgYm9v
bCBUaW1lWm9uZUluZm86OkxvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIFpvbmVJbmZvU291
cmNlKiB6aXApIHsKICAgfQogICBpZiAoaGRyLnR0aXNzdGRjbnQgIT0gMCAmJiBoZHIudHRpc3N0
ZGNudCAhPSBoZHIudHlwZWNudCkKICAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChoZHIudHRpc2dt
dGNudCAhPSAwICYmIGhkci50dGlzZ210Y250ICE9IGhkci50eXBlY250KQorICBpZiAoaGRyLnR0
aXN1dGNudCAhPSAwICYmIGhkci50dGlzdXRjbnQgIT0gaGRyLnR5cGVjbnQpCiAgICAgcmV0dXJu
IGZhbHNlOwogCiAgIC8vIFJlYWQgdGhlIGRhdGEgaW50byBhIGxvY2FsIGJ1ZmZlci4KQEAgLTQ5
OCwxNiArNDk4LDE2IEBAIGJvb2wgVGltZVpvbmVJbmZvOjpMb2FkKGNvbnN0IHN0ZDo6c3RyaW5n
JiBuYW1lLCBab25lSW5mb1NvdXJjZSogemlwKSB7CiAgIC8vIHRoYXQgaXNuJ3QgdGhlIGNhc2Ug
aGVyZSAoc2VlICJ6aWMgLXAiKS4KICAgYnAgKz0gKDggKyA0KSAqIGhkci5sZWFwY250OyAgLy8g
bGVhcC10aW1lICsgVEFJLVVUQwogICBicCArPSAxICogaGRyLnR0aXNzdGRjbnQ7ICAgICAvLyBV
VEMvbG9jYWwgaW5kaWNhdG9ycwotICBicCArPSAxICogaGRyLnR0aXNnbXRjbnQ7ICAgICAvLyBz
dGFuZGFyZC93YWxsIGluZGljYXRvcnMKKyAgYnAgKz0gMSAqIGhkci50dGlzdXRjbnQ7ICAgICAg
Ly8gc3RhbmRhcmQvd2FsbCBpbmRpY2F0b3JzCiAgIGFzc2VydChicCA9PSB0YnVmLmRhdGEoKSAr
IHRidWYuc2l6ZSgpKTsKIAogICBmdXR1cmVfc3BlY18uY2xlYXIoKTsKICAgaWYgKHR6aC50emhf
dmVyc2lvblswXSAhPSAnXDAnKSB7CiAgICAgLy8gU25hcmYgdXAgdGhlIE5MLWVuY2xvc2VkIGZ1
dHVyZSBQT1NJWCBzcGVjLiBOb3RlCiAgICAgLy8gdGhhdCB2ZXJzaW9uICczJyBmaWxlcyB1dGls
aXplIGFuIGV4dGVuZGVkIGZvcm1hdC4KLSAgICBhdXRvIGdldF9jaGFyID0gW10oWm9uZUluZm9T
b3VyY2UqIHppcCkgLT4gaW50IHsKKyAgICBhdXRvIGdldF9jaGFyID0gW10oWm9uZUluZm9Tb3Vy
Y2UqIGF6aXApIC0+IGludCB7CiAgICAgICB1bnNpZ25lZCBjaGFyIGNoOyAgLy8gYWxsIG5vbi1F
T0YgcmVzdWx0cyBhcmUgcG9zaXRpdmUKLSAgICAgIHJldHVybiAoemlwLT5SZWFkKCZjaCwgMSkg
PT0gMSkgPyBjaCA6IEVPRjsKKyAgICAgIHJldHVybiAoYXppcC0+UmVhZCgmY2gsIDEpID09IDEp
ID8gY2ggOiBFT0Y7CiAgICAgfTsKICAgICBpZiAoZ2V0X2NoYXIoemlwKSAhPSAnXG4nKQogICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjgyLDcgKzY4Miw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxab25l
SW5mb1NvdXJjZT4gQW5kcm9pZFpvbmVJbmZvU291cmNlOjpPcGVuKAogICAvLyBVc2Ugb2YgdGhl
ICJmaWxlOiIgcHJlZml4IGlzIGludGVuZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuCiAg
IGlmIChuYW1lLmNvbXBhcmUoMCwgNSwgImZpbGU6IikgPT0gMCkgcmV0dXJuIE9wZW4obmFtZS5z
dWJzdHIoNSkpOwogCi0jaWYgZGVmaW5lZChfX0FORFJPSURfXykKICAgLy8gU2VlIEFuZHJvaWQn
cyBsaWJjL3R6Y29kZS9iaW9uaWMuY3BwIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgogICBm
b3IgKGNvbnN0IGNoYXIqIHR6ZGF0YSA6IHsiL2RhdGEvbWlzYy96b25laW5mby9jdXJyZW50L3R6
ZGF0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvc3lzdGVtL3Vzci9zaGFyZS96
b25laW5mby90emRhdGEifSkgewpAQCAtNzE3LDcgKzcxNiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxa
b25lSW5mb1NvdXJjZT4gQW5kcm9pZFpvbmVJbmZvU291cmNlOjpPcGVuKAogICAgICAgfQogICAg
IH0KICAgfQotI2VuZGlmICAvLyBfX0FORFJPSURfXworCiAgIHJldHVybiBudWxscHRyOwogfQog
CkBAIC05MjEsNyArOTIwLDcgQEAgYm9vbCBUaW1lWm9uZUluZm86Ok5leHRUcmFuc2l0aW9uKGNv
bnN0IHRpbWVfcG9pbnQ8c2Vjb25kcz4mIHRwLAogICAgICsrYmVnaW47CiAgIH0KICAgc3RkOjpp
bnRfZmFzdDY0X3QgdW5peF90aW1lID0gVG9Vbml4U2Vjb25kcyh0cCk7Ci0gIGNvbnN0IFRyYW5z
aXRpb24gdGFyZ2V0ID0geyB1bml4X3RpbWUgfTsKKyAgY29uc3QgVHJhbnNpdGlvbiB0YXJnZXQg
PSB7dW5peF90aW1lLCAwLCBjaXZpbF9zZWNvbmQoKSwgY2l2aWxfc2Vjb25kKCl9OwogICBjb25z
dCBUcmFuc2l0aW9uKiB0ciA9IHN0ZDo6dXBwZXJfYm91bmQoYmVnaW4sIGVuZCwgdGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbjo6QnlV
bml4VGltZSgpKTsKICAgZm9yICg7IHRyICE9IGVuZDsgKyt0cikgeyAgLy8gc2tpcCBuby1vcCB0
cmFuc2l0aW9ucwpAQCAtOTU2LDcgKzk1NSw3IEBAIGJvb2wgVGltZVpvbmVJbmZvOjpQcmV2VHJh
bnNpdGlvbihjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+JiB0cCwKICAgICB9CiAgICAgdW5peF90
aW1lICs9IDE7ICAvLyBjZWlscwogICB9Ci0gIGNvbnN0IFRyYW5zaXRpb24gdGFyZ2V0ID0geyB1
bml4X3RpbWUgfTsKKyAgY29uc3QgVHJhbnNpdGlvbiB0YXJnZXQgPSB7dW5peF90aW1lLCAwLCBj
aXZpbF9zZWNvbmQoKSwgY2l2aWxfc2Vjb25kKCl9OwogICBjb25zdCBUcmFuc2l0aW9uKiB0ciA9
IHN0ZDo6bG93ZXJfYm91bmQoYmVnaW4sIGVuZCwgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbjo6QnlVbml4VGltZSgpKTsKICAgZm9y
ICg7IHRyICE9IGJlZ2luOyAtLXRyKSB7ICAvLyBza2lwIG5vLW9wIHRyYW5zaXRpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmgKaW5kZXggOTU4ZTli
NmJkNzQ0ZDE4YzFkMmFkOGJiZmNlYzk5YTAwMjhkZTBiNC4uODFjZDQwMmY5NzJhZTlkNzllYzA2
Yjc4NmZjMDNkZGMyNzRhZGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy90aW1lX3pvbmVfaW5mby5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX2luZm8uaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgVGltZVpvbmVJbmZvIDogcHVibGljIFRpbWVab25lSWYg
ewogICAgIHN0ZDo6c2l6ZV90IGNoYXJjbnQ7ICAgICAvLyB6b25lIGFiYnJldmlhdGlvbiBjaGFy
YWN0ZXJzCiAgICAgc3RkOjpzaXplX3QgbGVhcGNudDsgICAgIC8vIGxlYXAgc2Vjb25kcyAod2Ug
ZXhwZWN0IG5vbmUpCiAgICAgc3RkOjpzaXplX3QgdHRpc3N0ZGNudDsgIC8vIFVUQy9sb2NhbCBp
bmRpY2F0b3JzICh1bnVzZWQpCi0gICAgc3RkOjpzaXplX3QgdHRpc2dtdGNudDsgIC8vIHN0YW5k
YXJkL3dhbGwgaW5kaWNhdG9ycyAodW51c2VkKQorICAgIHN0ZDo6c2l6ZV90IHR0aXN1dGNudDsg
ICAvLyBzdGFuZGFyZC93YWxsIGluZGljYXRvcnMgKHVudXNlZCkKIAogICAgIGJvb2wgQnVpbGQo
Y29uc3QgdHpoZWFkJiB0emgpOwogICAgIHN0ZDo6c2l6ZV90IERhdGFMZW5ndGgoc3RkOjpzaXpl
X3QgdGltZV9sZW4pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy90aW1lX3pvbmVfbGliYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGlt
ZV96b25lX2xpYmMuY2MKaW5kZXggMDc0YzhkMGE0YTQwZTEzOTgyYWI4YTRlMmI4MGJmNjNlMTNm
OWFlNS4uNjA5NWU3NjRkZjBkZDgxMjAzNjAzNWU3YzlmYTVkMjFjODczM2I1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbGliYy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmNjCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
ICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjAsNyArMjAsNyBAQAogCiAjaW5jbHVk
ZSA8Y2hyb25vPgogI2luY2x1ZGUgPGN0aW1lPgotI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1ZGUg
PGxpbWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWUuaCIKQEAgLTMyLDU5ICszMiwxNDcgQEAg
bmFtZXNwYWNlIGNjdHogewogCiBuYW1lc3BhY2UgewogCi0vLyAuZmlyc3QgaXMgc2Vjb25kcyBl
YXN0IG9mIFVUQzsgLnNlY29uZCBpcyB0aGUgdGltZS16b25lIGFiYnJldmlhdGlvbi4KLXVzaW5n
IE9mZnNldEFiYnIgPSBzdGQ6OnBhaXI8aW50LCBjb25zdCBjaGFyKj47Ci0KLS8vIERlZmluZXMg
YSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgYXMgZm9sbG93czoKLS8vCi0vLyAgIHN0ZDo6
dG0gdG0gPSAuLi47Ci0vLyAgIE9mZnNldEFiYnIgb2ZmX2FiYnIgPSBnZXRfb2Zmc2V0X2FiYnIo
dG0pOwotLy8KICNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCiAvLyBVc2Vz
IHRoZSBnbG9iYWxzOiAnX3RpbWV6b25lJywgJ19kc3RiaWFzJyBhbmQgJ190em5hbWUnLgotT2Zm
c2V0QWJiciBnZXRfb2Zmc2V0X2FiYnIoY29uc3Qgc3RkOjp0bSYgdG0pIHsKK2F1dG8gdG1fZ210
b2ZmKGNvbnN0IHN0ZDo6dG0mIHRtKSAtPiBkZWNsdHlwZShfdGltZXpvbmUgKyBfZHN0Ymlhcykg
eworICBjb25zdCBib29sIGlzX2RzdCA9IHRtLnRtX2lzZHN0ID4gMDsKKyAgcmV0dXJuIF90aW1l
em9uZSArIChpc19kc3QgPyBfZHN0YmlhcyA6IDApOworfQorYXV0byB0bV96b25lKGNvbnN0IHN0
ZDo6dG0mIHRtKSAtPiBkZWNsdHlwZShfdHpuYW1lWzBdKSB7CiAgIGNvbnN0IGJvb2wgaXNfZHN0
ID0gdG0udG1faXNkc3QgPiAwOwotICBjb25zdCBpbnQgb2ZmID0gX3RpbWV6b25lICsgKGlzX2Rz
dCA/IF9kc3RiaWFzIDogMCk7Ci0gIGNvbnN0IGNoYXIqIGFiYnIgPSBfdHpuYW1lW2lzX2RzdF07
Ci0gIHJldHVybiB7b2ZmLCBhYmJyfTsKKyAgcmV0dXJuIF90em5hbWVbaXNfZHN0XTsKIH0KICNl
bGlmIGRlZmluZWQoX19zdW4pCiAvLyBVc2VzIHRoZSBnbG9iYWxzOiAndGltZXpvbmUnLCAnYWx0
em9uZScgYW5kICd0em5hbWUnLgotT2Zmc2V0QWJiciBnZXRfb2Zmc2V0X2FiYnIoY29uc3Qgc3Rk
Ojp0bSYgdG0pIHsKK2F1dG8gdG1fZ210b2ZmKGNvbnN0IHN0ZDo6dG0mIHRtKSAtPiBkZWNsdHlw
ZSh0aW1lem9uZSkgeworICBjb25zdCBib29sIGlzX2RzdCA9IHRtLnRtX2lzZHN0ID4gMDsKKyAg
cmV0dXJuIGlzX2RzdCA/IGFsdHpvbmUgOiB0aW1lem9uZTsKK30KK2F1dG8gdG1fem9uZShjb25z
dCBzdGQ6OnRtJiB0bSkgLT4gZGVjbHR5cGUodHpuYW1lWzBdKSB7CiAgIGNvbnN0IGJvb2wgaXNf
ZHN0ID0gdG0udG1faXNkc3QgPiAwOwotICBjb25zdCBpbnQgb2ZmID0gaXNfZHN0ID8gYWx0em9u
ZSA6IHRpbWV6b25lOwotICBjb25zdCBjaGFyKiBhYmJyID0gdHpuYW1lW2lzX2RzdF07Ci0gIHJl
dHVybiB7b2ZmLCBhYmJyfTsKKyAgcmV0dXJuIHR6bmFtZVtpc19kc3RdOwogfQogI2VsaWYgZGVm
aW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgZGVmaW5lZChfX215cmlhZDJfXykgfHwgXAogICAg
IGRlZmluZWQoX19FTVNDUklQVEVOX18pCiAvLyBVc2VzIHRoZSBnbG9iYWxzOiAndGltZXpvbmUn
IGFuZCAndHpuYW1lJy4KLU9mZnNldEFiYnIgZ2V0X29mZnNldF9hYmJyKGNvbnN0IHN0ZDo6dG0m
IHRtKSB7CithdXRvIHRtX2dtdG9mZihjb25zdCBzdGQ6OnRtJiB0bSkgLT4gZGVjbHR5cGUoX3Rp
bWV6b25lICsgMCkgeworICBjb25zdCBib29sIGlzX2RzdCA9IHRtLnRtX2lzZHN0ID4gMDsKKyAg
cmV0dXJuIF90aW1lem9uZSArIChpc19kc3QgPyA2MCAqIDYwIDogMCk7Cit9CithdXRvIHRtX3pv
bmUoY29uc3Qgc3RkOjp0bSYgdG0pIC0+IGRlY2x0eXBlKHR6bmFtZVswXSkgewogICBjb25zdCBi
b29sIGlzX2RzdCA9IHRtLnRtX2lzZHN0ID4gMDsKLSAgY29uc3QgaW50IG9mZiA9IF90aW1lem9u
ZSArIChpc19kc3QgPyA2MCAqIDYwIDogMCk7Ci0gIGNvbnN0IGNoYXIqIGFiYnIgPSB0em5hbWVb
aXNfZHN0XTsKLSAgcmV0dXJuIHtvZmYsIGFiYnJ9OworICByZXR1cm4gdHpuYW1lW2lzX2RzdF07
Cit9CisjZWxzZQorLy8gQWRhcHQgdG8gZGlmZmVyZW50IHNwZWxsaW5ncyBvZiB0aGUgc3RydWN0
IHN0ZDo6dG0gZXh0ZW5zaW9uIGZpZWxkcy4KKyNpZiBkZWZpbmVkKHRtX2dtdG9mZikKK2F1dG8g
dG1fZ210b2ZmKGNvbnN0IHN0ZDo6dG0mIHRtKSAtPiBkZWNsdHlwZSh0bS50bV9nbXRvZmYpIHsK
KyAgcmV0dXJuIHRtLnRtX2dtdG9mZjsKK30KKyNlbGlmIGRlZmluZWQoX190bV9nbXRvZmYpCith
dXRvIHRtX2dtdG9mZihjb25zdCBzdGQ6OnRtJiB0bSkgLT4gZGVjbHR5cGUodG0uX190bV9nbXRv
ZmYpIHsKKyAgcmV0dXJuIHRtLl9fdG1fZ210b2ZmOwogfQogI2Vsc2UKLS8vCi0vLyBSZXR1cm5z
IGFuIE9mZnNldEFiYnIgdXNpbmcgc3RkOjp0bSBmaWVsZHMgd2l0aCB2YXJpb3VzIHNwZWxsaW5n
cy4KLS8vCi0jaWYgIWRlZmluZWQodG1fZ210b2ZmKSAmJiAhZGVmaW5lZCh0bV96b25lKQogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1PZmZzZXRBYmJyIGdldF9vZmZzZXRfYWJicihjb25zdCBUJiB0
bSwgZGVjbHR5cGUoJlQ6OnRtX2dtdG9mZikgPSBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVjbHR5cGUoJlQ6OnRtX3pvbmUpID0gbnVsbHB0cikgewotICByZXR1cm4ge3Rt
LnRtX2dtdG9mZiwgdG0udG1fem9uZX07CithdXRvIHRtX2dtdG9mZihjb25zdCBUJiB0bSkgLT4g
ZGVjbHR5cGUodG0udG1fZ210b2ZmKSB7CisgIHJldHVybiB0bS50bV9nbXRvZmY7CiB9Ci0jZW5k
aWYgIC8vICFkZWZpbmVkKHRtX2dtdG9mZikgJiYgIWRlZmluZWQodG1fem9uZSkKLSNpZiAhZGVm
aW5lZChfX3RtX2dtdG9mZikgJiYgIWRlZmluZWQoX190bV96b25lKQogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1PZmZzZXRBYmJyIGdldF9vZmZzZXRfYWJicihjb25zdCBUJiB0bSwgZGVjbHR5cGUo
JlQ6Ol9fdG1fZ210b2ZmKSA9IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWNsdHlwZSgmVDo6X190bV96b25lKSA9IG51bGxwdHIpIHsKLSAgcmV0dXJuIHt0bS5fX3RtX2dt
dG9mZiwgdG0uX190bV96b25lfTsKK2F1dG8gdG1fZ210b2ZmKGNvbnN0IFQmIHRtKSAtPiBkZWNs
dHlwZSh0bS5fX3RtX2dtdG9mZikgeworICByZXR1cm4gdG0uX190bV9nbXRvZmY7Cit9CisjZW5k
aWYgIC8vIHRtX2dtdG9mZgorI2lmIGRlZmluZWQodG1fem9uZSkKK2F1dG8gdG1fem9uZShjb25z
dCBzdGQ6OnRtJiB0bSkgLT4gZGVjbHR5cGUodG0udG1fem9uZSkgeworICByZXR1cm4gdG0udG1f
em9uZTsKK30KKyNlbGlmIGRlZmluZWQoX190bV96b25lKQorYXV0byB0bV96b25lKGNvbnN0IHN0
ZDo6dG0mIHRtKSAtPiBkZWNsdHlwZSh0bS5fX3RtX3pvbmUpIHsKKyAgcmV0dXJuIHRtLl9fdG1f
em9uZTsKIH0KLSNlbmRpZiAgLy8gIWRlZmluZWQoX190bV9nbXRvZmYpICYmICFkZWZpbmVkKF9f
dG1fem9uZSkKKyNlbHNlCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2F1dG8gdG1fem9uZShjb25z
dCBUJiB0bSkgLT4gZGVjbHR5cGUodG0udG1fem9uZSkgeworICByZXR1cm4gdG0udG1fem9uZTsK
K30KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorYXV0byB0bV96b25lKGNvbnN0IFQmIHRtKSAtPiBk
ZWNsdHlwZSh0bS5fX3RtX3pvbmUpIHsKKyAgcmV0dXJuIHRtLl9fdG1fem9uZTsKK30KKyNlbmRp
ZiAgLy8gdG1fem9uZQogI2VuZGlmCiAKK2lubGluZSBzdGQ6OnRtKiBnbV90aW1lKGNvbnN0IHN0
ZDo6dGltZV90ICp0aW1lcCwgc3RkOjp0bSAqcmVzdWx0KSB7CisjaWYgZGVmaW5lZChfV0lOMzIp
IHx8IGRlZmluZWQoX1dJTjY0KQorICAgIHJldHVybiBnbXRpbWVfcyhyZXN1bHQsIHRpbWVwKSA/
IG51bGxwdHIgOiByZXN1bHQ7CisjZWxzZQorICAgIHJldHVybiBnbXRpbWVfcih0aW1lcCwgcmVz
dWx0KTsKKyNlbmRpZgorfQorCitpbmxpbmUgc3RkOjp0bSogbG9jYWxfdGltZShjb25zdCBzdGQ6
OnRpbWVfdCAqdGltZXAsIHN0ZDo6dG0gKnJlc3VsdCkgeworI2lmIGRlZmluZWQoX1dJTjMyKSB8
fCBkZWZpbmVkKF9XSU42NCkKKyAgICByZXR1cm4gbG9jYWx0aW1lX3MocmVzdWx0LCB0aW1lcCkg
PyBudWxscHRyIDogcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4gbG9jYWx0aW1lX3IodGltZXAs
IHJlc3VsdCk7CisjZW5kaWYKK30KKworLy8gQ29udmVydHMgYSBjaXZpbCBzZWNvbmQgYW5kICJk
c3QiIGZsYWcgaW50byBhIHRpbWVfdCBhbmQgVVRDIG9mZnNldC4KKy8vIFJldHVybnMgZmFsc2Ug
aWYgdGltZV90IGNhbm5vdCByZXByZXNlbnQgdGhlIHJlcXVlc3RlZCBjaXZpbCBzZWNvbmQuCisv
LyBDYWxsZXIgbXVzdCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IGNzLnllYXIoKSB3aWxsIGZp
dCBpbnRvIGEgdG1feWVhci4KK2Jvb2wgbWFrZV90aW1lKGNvbnN0IGNpdmlsX3NlY29uZCYgY3Ms
IGludCBpc19kc3QsIHN0ZDo6dGltZV90KiB0LCBpbnQqIG9mZikgeworICBzdGQ6OnRtIHRtOwor
ICB0bS50bV95ZWFyID0gc3RhdGljX2Nhc3Q8aW50Pihjcy55ZWFyKCkgLSB5ZWFyX3R7MTkwMH0p
OworICB0bS50bV9tb24gPSBjcy5tb250aCgpIC0gMTsKKyAgdG0udG1fbWRheSA9IGNzLmRheSgp
OworICB0bS50bV9ob3VyID0gY3MuaG91cigpOworICB0bS50bV9taW4gPSBjcy5taW51dGUoKTsK
KyAgdG0udG1fc2VjID0gY3Muc2Vjb25kKCk7CisgIHRtLnRtX2lzZHN0ID0gaXNfZHN0OworICAq
dCA9IHN0ZDo6bWt0aW1lKCZ0bSk7CisgIGlmICgqdCA9PSBzdGQ6OnRpbWVfdHstMX0pIHsKKyAg
ICBzdGQ6OnRtIHRtMjsKKyAgICBjb25zdCBzdGQ6OnRtKiB0bXAgPSBsb2NhbF90aW1lKHQsICZ0
bTIpOworICAgIGlmICh0bXAgPT0gbnVsbHB0ciB8fCB0bXAtPnRtX3llYXIgIT0gdG0udG1feWVh
ciB8fAorICAgICAgICB0bXAtPnRtX21vbiAhPSB0bS50bV9tb24gfHwgdG1wLT50bV9tZGF5ICE9
IHRtLnRtX21kYXkgfHwKKyAgICAgICAgdG1wLT50bV9ob3VyICE9IHRtLnRtX2hvdXIgfHwgdG1w
LT50bV9taW4gIT0gdG0udG1fbWluIHx8CisgICAgICAgIHRtcC0+dG1fc2VjICE9IHRtLnRtX3Nl
YykgeworICAgICAgLy8gQSB0cnVlIGVycm9yIChub3QganVzdCBvbmUgc2Vjb25kIGJlZm9yZSB0
aGUgZXBvY2gpLgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICAqb2ZmID0gc3Rh
dGljX2Nhc3Q8aW50Pih0bV9nbXRvZmYodG0pKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEZp
bmQgdGhlIGxlYXN0IHRpbWVfdCBpbiBbbG86aGldIHdoZXJlIGxvY2FsIHRpbWUgbWF0Y2hlcyBv
ZmZzZXQsIGdpdmVuOgorLy8gKDEpIGxvIGRvZXNuJ3QgbWF0Y2gsICgyKSBoaSBkb2VzLCBhbmQg
KDMpIHRoZXJlIGlzIG9ubHkgb25lIHRyYW5zaXRpb24uCitzdGQ6OnRpbWVfdCBmaW5kX3RyYW5z
KHN0ZDo6dGltZV90IGxvLCBzdGQ6OnRpbWVfdCBoaSwgaW50IG9mZnNldCkgeworICBzdGQ6OnRt
IHRtOworICB3aGlsZSAobG8gKyAxICE9IGhpKSB7CisgICAgY29uc3Qgc3RkOjp0aW1lX3QgbWlk
ID0gbG8gKyAoaGkgLSBsbykgLyAyOworICAgIGlmIChzdGQ6OnRtKiB0bXAgPSBsb2NhbF90aW1l
KCZtaWQsICZ0bSkpIHsKKyAgICAgIGlmICh0bV9nbXRvZmYoKnRtcCkgPT0gb2Zmc2V0KSB7Cisg
ICAgICAgIGhpID0gbWlkOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgbG8gPSBtaWQ7CisgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIElmIHN0ZDo6dG0gY2Fubm90IGhvbGQgc29tZSBy
ZXN1bHQgd2UgcmVzb3J0IHRvIGEgbGluZWFyIHNlYXJjaCwKKyAgICAgIC8vIGlnbm9yaW5nIGFs
bCBmYWlsZWQgY29udmVyc2lvbnMuICBTbG93LCBidXQgbmV2ZXIgcmVhbGx5IGhhcHBlbnMuCisg
ICAgICB3aGlsZSAoKytsbyAhPSBoaSkgeworICAgICAgICBpZiAoc3RkOjp0bSogdG1wID0gbG9j
YWxfdGltZSgmbG8sICZ0bSkpIHsKKyAgICAgICAgICBpZiAodG1fZ210b2ZmKCp0bXApID09IG9m
ZnNldCkgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBsbzsKKyAgICB9
CisgIH0KKyAgcmV0dXJuIGhpOworfQorCiB9ICAvLyBuYW1lc3BhY2UKIAogVGltZVpvbmVMaWJD
OjpUaW1lWm9uZUxpYkMoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpCkBAIC05Myw1OSArMTgxLDEx
NiBAQCBUaW1lWm9uZUxpYkM6OlRpbWVab25lTGliQyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkK
IHRpbWVfem9uZTo6YWJzb2x1dGVfbG9va3VwIFRpbWVab25lTGliQzo6QnJlYWtUaW1lKAogICAg
IGNvbnN0IHRpbWVfcG9pbnQ8c2Vjb25kcz4mIHRwKSBjb25zdCB7CiAgIHRpbWVfem9uZTo6YWJz
b2x1dGVfbG9va3VwIGFsOwotICBzdGQ6OnRpbWVfdCB0ID0gVG9Vbml4U2Vjb25kcyh0cCk7Cisg
IGFsLm9mZnNldCA9IDA7CisgIGFsLmlzX2RzdCA9IGZhbHNlOworICBhbC5hYmJyID0gIi0wMCI7
CisKKyAgY29uc3Qgc3RkOjppbnRfZmFzdDY0X3QgcyA9IFRvVW5peFNlY29uZHModHApOworCisg
IC8vIElmIHN0ZDo6dGltZV90IGNhbm5vdCBob2xkIHRoZSBpbnB1dCB3ZSBzYXR1cmF0ZSB0aGUg
b3V0cHV0LgorICBpZiAocyA8IHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjp0aW1lX3Q+OjptaW4o
KSkgeworICAgIGFsLmNzID0gY2l2aWxfc2Vjb25kOjptaW4oKTsKKyAgICByZXR1cm4gYWw7Cisg
IH0KKyAgaWYgKHMgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6dGltZV90Pjo6bWF4KCkpIHsK
KyAgICBhbC5jcyA9IGNpdmlsX3NlY29uZDo6bWF4KCk7CisgICAgcmV0dXJuIGFsOworICB9CisK
KyAgY29uc3Qgc3RkOjp0aW1lX3QgdCA9IHN0YXRpY19jYXN0PHN0ZDo6dGltZV90PihzKTsKICAg
c3RkOjp0bSB0bTsKLSAgaWYgKGxvY2FsXykgewotI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZp
bmVkKF9XSU42NCkKLSAgICBsb2NhbHRpbWVfcygmdG0sICZ0KTsKLSNlbHNlCi0gICAgbG9jYWx0
aW1lX3IoJnQsICZ0bSk7Ci0jZW5kaWYKLSAgICBzdGQ6OnRpZShhbC5vZmZzZXQsIGFsLmFiYnIp
ID0gZ2V0X29mZnNldF9hYmJyKHRtKTsKLSAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKF9XSU4zMikg
fHwgZGVmaW5lZChfV0lONjQpCi0gICAgZ210aW1lX3MoJnRtLCAmdCk7Ci0jZWxzZQotICAgIGdt
dGltZV9yKCZ0LCAmdG0pOwotI2VuZGlmCi0gICAgYWwub2Zmc2V0ID0gMDsKLSAgICBhbC5hYmJy
ID0gIlVUQyI7CisgIHN0ZDo6dG0qIHRtcCA9IGxvY2FsXyA/IGxvY2FsX3RpbWUoJnQsICZ0bSkg
OiBnbV90aW1lKCZ0LCAmdG0pOworCisgIC8vIElmIHN0ZDo6dG0gY2Fubm90IGhvbGQgdGhlIHJl
c3VsdCB3ZSBzYXR1cmF0ZSB0aGUgb3V0cHV0LgorICBpZiAodG1wID09IG51bGxwdHIpIHsKKyAg
ICBhbC5jcyA9IChzIDwgMCkgPyBjaXZpbF9zZWNvbmQ6Om1pbigpIDogY2l2aWxfc2Vjb25kOjpt
YXgoKTsKKyAgICByZXR1cm4gYWw7CiAgIH0KLSAgYWwuY3MgPSBjaXZpbF9zZWNvbmQodG0udG1f
eWVhciArIDE5MDAsIHRtLnRtX21vbiArIDEsIHRtLnRtX21kYXksCi0gICAgICAgICAgICAgICAg
ICAgICAgIHRtLnRtX2hvdXIsIHRtLnRtX21pbiwgdG0udG1fc2VjKTsKLSAgYWwuaXNfZHN0ID0g
dG0udG1faXNkc3QgPiAwOworCisgIGNvbnN0IHllYXJfdCB5ZWFyID0gdG1wLT50bV95ZWFyICsg
eWVhcl90ezE5MDB9OworICBhbC5jcyA9IGNpdmlsX3NlY29uZCh5ZWFyLCB0bXAtPnRtX21vbiAr
IDEsIHRtcC0+dG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgdG1wLT50bV9ob3VyLCB0
bXAtPnRtX21pbiwgdG1wLT50bV9zZWMpOworICBhbC5vZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+
KHRtX2dtdG9mZigqdG1wKSk7CisgIGFsLmFiYnIgPSBsb2NhbF8gPyB0bV96b25lKCp0bXApIDog
IlVUQyI7ICAvLyBhcyBleHBlY3RlZCBieSBjY3R6CisgIGFsLmlzX2RzdCA9IHRtcC0+dG1faXNk
c3QgPiAwOwogICByZXR1cm4gYWw7CiB9CiAKIHRpbWVfem9uZTo6Y2l2aWxfbG9va3VwIFRpbWVa
b25lTGliQzo6TWFrZVRpbWUoY29uc3QgY2l2aWxfc2Vjb25kJiBjcykgY29uc3QgewotICB0aW1l
X3pvbmU6OmNpdmlsX2xvb2t1cCBjbDsKLSAgc3RkOjp0aW1lX3QgdDsKLSAgaWYgKGxvY2FsXykg
ewotICAgIC8vIERvZXMgbm90IGhhbmRsZSBTS0lQUEVEL0FNQklHVU9VUyBvciBodWdlIHllYXJz
LgotICAgIHN0ZDo6dG0gdG07Ci0gICAgdG0udG1feWVhciA9IHN0YXRpY19jYXN0PGludD4oY3Mu
eWVhcigpIC0gMTkwMCk7Ci0gICAgdG0udG1fbW9uID0gY3MubW9udGgoKSAtIDE7Ci0gICAgdG0u
dG1fbWRheSA9IGNzLmRheSgpOwotICAgIHRtLnRtX2hvdXIgPSBjcy5ob3VyKCk7Ci0gICAgdG0u
dG1fbWluID0gY3MubWludXRlKCk7Ci0gICAgdG0udG1fc2VjID0gY3Muc2Vjb25kKCk7Ci0gICAg
dG0udG1faXNkc3QgPSAtMTsKLSAgICB0ID0gc3RkOjpta3RpbWUoJnRtKTsKKyAgaWYgKCFsb2Nh
bF8pIHsKKyAgICAvLyBJZiB0aW1lX3BvaW50PHNlY29uZHM+IGNhbm5vdCBob2xkIHRoZSByZXN1
bHQgd2Ugc2F0dXJhdGUuCisgICAgc3RhdGljIGNvbnN0IGNpdmlsX3NlY29uZCBtaW5fdHBfY3Mg
PQorICAgICAgICBjaXZpbF9zZWNvbmQoKSArIFRvVW5peFNlY29uZHModGltZV9wb2ludDxzZWNv
bmRzPjo6bWluKCkpOworICAgIHN0YXRpYyBjb25zdCBjaXZpbF9zZWNvbmQgbWF4X3RwX2NzID0K
KyAgICAgICAgY2l2aWxfc2Vjb25kKCkgKyBUb1VuaXhTZWNvbmRzKHRpbWVfcG9pbnQ8c2Vjb25k
cz46Om1heCgpKTsKKyAgICBjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+IHRwID0KKyAgICAgICAg
KGNzIDwgbWluX3RwX2NzKQorICAgICAgICAgICAgPyB0aW1lX3BvaW50PHNlY29uZHM+OjptaW4o
KQorICAgICAgICAgICAgOiAoY3MgPiBtYXhfdHBfY3MpID8gdGltZV9wb2ludDxzZWNvbmRzPjo6
bWF4KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEZyb21Vbml4U2Vjb25kcyhj
cyAtIGNpdmlsX3NlY29uZCgpKTsKKyAgICByZXR1cm4ge3RpbWVfem9uZTo6Y2l2aWxfbG9va3Vw
OjpVTklRVUUsIHRwLCB0cCwgdHB9OworICB9CisKKyAgLy8gSWYgdG1feWVhciBjYW5ub3QgaG9s
ZCB0aGUgcmVxdWVzdGVkIHllYXIgd2Ugc2F0dXJhdGUgdGhlIHJlc3VsdC4KKyAgaWYgKGNzLnll
YXIoKSA8IDApIHsKKyAgICBpZiAoY3MueWVhcigpIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+
OjptaW4oKSArIHllYXJfdHsxOTAwfSkgeworICAgICAgY29uc3QgdGltZV9wb2ludDxzZWNvbmRz
PiB0cCA9IHRpbWVfcG9pbnQ8c2Vjb25kcz46Om1pbigpOworICAgICAgcmV0dXJuIHt0aW1lX3pv
bmU6OmNpdmlsX2xvb2t1cDo6VU5JUVVFLCB0cCwgdHAsIHRwfTsKKyAgICB9CiAgIH0gZWxzZSB7
Ci0gICAgdCA9IGNzIC0gY2l2aWxfc2Vjb25kKCk7CisgICAgaWYgKGNzLnllYXIoKSAtIHllYXJf
dHsxOTAwfSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpIHsKKyAgICAgIGNvbnN0
IHRpbWVfcG9pbnQ8c2Vjb25kcz4gdHAgPSB0aW1lX3BvaW50PHNlY29uZHM+OjptYXgoKTsKKyAg
ICAgIHJldHVybiB7dGltZV96b25lOjpjaXZpbF9sb29rdXA6OlVOSVFVRSwgdHAsIHRwLCB0cH07
CisgICAgfQogICB9Ci0gIGNsLmtpbmQgPSB0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6VU5JUVVF
OwotICBjbC5wcmUgPSBjbC50cmFucyA9IGNsLnBvc3QgPSBGcm9tVW5peFNlY29uZHModCk7Ci0g
IHJldHVybiBjbDsKKworICAvLyBXZSBwcm9iZSB3aXRoICJpc19kc3QiIHZhbHVlcyBvZiAwIGFu
ZCAxIHRvIHRyeSB0byBkaXN0aW5ndWlzaCB1bmlxdWUKKyAgLy8gY2l2aWwgc2Vjb25kcyBmcm9t
IHNraXBwZWQgb3IgcmVwZWF0ZWQgb25lcy4gIFRoaXMgaXMgbm90IGFsd2F5cyBwb3NzaWJsZQor
ICAvLyBob3dldmVyLCBhcyB0aGUgImRzdCIgZmxhZyBkb2VzIG5vdCBjaGFuZ2Ugb3ZlciBzb21l
IG9mZnNldCB0cmFuc2l0aW9ucy4KKyAgLy8gV2UgYXJlIGFsc28gc3ViamVjdCB0byB0aGUgdmFn
YXJpZXMgb2YgbWt0aW1lKCkgaW1wbGVtZW50YXRpb25zLgorICBzdGQ6OnRpbWVfdCB0MCwgdDE7
CisgIGludCBvZmZzZXQwLCBvZmZzZXQxOworICBpZiAobWFrZV90aW1lKGNzLCAwLCAmdDAsICZv
ZmZzZXQwKSAmJiBtYWtlX3RpbWUoY3MsIDEsICZ0MSwgJm9mZnNldDEpKSB7CisgICAgaWYgKHQw
ID09IHQxKSB7CisgICAgICAvLyBUaGUgY2l2aWwgdGltZSB3YXMgc2luZ3VsYXIgKHByZSA9PSB0
cmFucyA9PSBwb3N0KS4KKyAgICAgIGNvbnN0IHRpbWVfcG9pbnQ8c2Vjb25kcz4gdHAgPSBGcm9t
VW5peFNlY29uZHModDApOworICAgICAgcmV0dXJuIHt0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6
VU5JUVVFLCB0cCwgdHAsIHRwfTsKKyAgICB9CisKKyAgICBpZiAodDAgPiB0MSkgeworICAgICAg
c3RkOjpzd2FwKHQwLCB0MSk7CisgICAgICBzdGQ6OnN3YXAob2Zmc2V0MCwgb2Zmc2V0MSk7Cisg
ICAgfQorICAgIGNvbnN0IHN0ZDo6dGltZV90IHR0ID0gZmluZF90cmFucyh0MCwgdDEsIG9mZnNl
dDEpOworICAgIGNvbnN0IHRpbWVfcG9pbnQ8c2Vjb25kcz4gdHJhbnMgPSBGcm9tVW5peFNlY29u
ZHModHQpOworCisgICAgaWYgKG9mZnNldDAgPCBvZmZzZXQxKSB7CisgICAgICAvLyBUaGUgY2l2
aWwgdGltZSBkaWQgbm90IGV4aXN0IChwcmUgPj0gdHJhbnMgPiBwb3N0KS4KKyAgICAgIGNvbnN0
IHRpbWVfcG9pbnQ8c2Vjb25kcz4gcHJlID0gRnJvbVVuaXhTZWNvbmRzKHQxKTsKKyAgICAgIGNv
bnN0IHRpbWVfcG9pbnQ8c2Vjb25kcz4gcG9zdCA9IEZyb21Vbml4U2Vjb25kcyh0MCk7CisgICAg
ICByZXR1cm4ge3RpbWVfem9uZTo6Y2l2aWxfbG9va3VwOjpTS0lQUEVELCBwcmUsIHRyYW5zLCBw
b3N0fTsKKyAgICB9CisKKyAgICAvLyBUaGUgY2l2aWwgdGltZSB3YXMgYW1iaWd1b3VzIChwcmUg
PCB0cmFucyA8PSBwb3N0KS4KKyAgICBjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+IHByZSA9IEZy
b21Vbml4U2Vjb25kcyh0MCk7CisgICAgY29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiBwb3N0ID0g
RnJvbVVuaXhTZWNvbmRzKHQxKTsKKyAgICByZXR1cm4ge3RpbWVfem9uZTo6Y2l2aWxfbG9va3Vw
OjpSRVBFQVRFRCwgcHJlLCB0cmFucywgcG9zdH07CisgIH0KKworICAvLyBtYWtlX3RpbWUoKSBm
YWlsZWQgc29tZWhvdyBzbyB3ZSBzYXR1cmF0ZSB0aGUgcmVzdWx0LgorICBjb25zdCB0aW1lX3Bv
aW50PHNlY29uZHM+IHRwID0gKGNzIDwgY2l2aWxfc2Vjb25kKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPyB0aW1lX3BvaW50PHNlY29uZHM+OjptaW4oKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGltZV9wb2ludDxzZWNvbmRzPjo6bWF4
KCk7CisgIHJldHVybiB7dGltZV96b25lOjpjaXZpbF9sb29rdXA6OlVOSVFVRSwgdHAsIHRwLCB0
cH07CiB9CiAKLWJvb2wgVGltZVpvbmVMaWJDOjpOZXh0VHJhbnNpdGlvbihjb25zdCB0aW1lX3Bv
aW50PHNlY29uZHM+JiB0cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
X3pvbmU6OmNpdmlsX3RyYW5zaXRpb24qIHRyYW5zKSBjb25zdCB7Citib29sIFRpbWVab25lTGli
Qzo6TmV4dFRyYW5zaXRpb24oY29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGltZV96b25lOjpjaXZpbF90cmFuc2l0aW9uKikgY29u
c3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVGltZVpvbmVMaWJDOjpQcmV2VHJhbnNp
dGlvbihjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+JiB0cCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lX3pvbmU6OmNpdmlsX3RyYW5zaXRpb24qIHRyYW5zKSBjb25zdCB7
Citib29sIFRpbWVab25lTGliQzo6UHJldlRyYW5zaXRpb24oY29uc3QgdGltZV9wb2ludDxzZWNv
bmRzPiYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV96b25lOjpjaXZp
bF90cmFuc2l0aW9uKikgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2xpYmMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2xpYmMuaAppbmRleCA0ZTQwYzYxYWIyNDNk
MmUzYzc3YzYyZjcxZjQxMDdmOTk2ZTFkOGU2Li4wZDE4ZTlhN2YzZGMyYjQ5OGE3NDkxMDQwOGM4
OWI0ZmE2OTgwMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3Rp
bWVfem9uZV9saWJjLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pv
bmVfbGliYy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbG9va3VwLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbG9va3VwLmNjCmluZGV4IGYy
ZDE1MWU0ZDVlNTYyYTAwY2Q3M2RhMWVjMGQ5Nzk5ZTE3ZjcyNzcuLjNjNTNkZDFhZGU5YTRiMDE2
MTk4NmEwOTYwM2QzZThiZTZjYTIzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei9zcmMvdGltZV96b25lX2xvb2t1cC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovc3JjL3RpbWVfem9uZV9sb29rdXAuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAg
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0xNiwxMCArMTYsMTYgQEAKIAogI2lmIGRlZmluZWQoX19BTkRST0lEX18p
CiAjaW5jbHVkZSA8c3lzL3N5c3RlbV9wcm9wZXJ0aWVzLmg+Ci0jaWYgX19BTkRST0lEX0FQSV9f
ID49IDIxCisjaWYgZGVmaW5lZChfX0FORFJPSURfQVBJX18pICYmIF9fQU5EUk9JRF9BUElfXyA+
PSAyMQogI2luY2x1ZGUgPGRsZmNuLmg+CiAjZW5kaWYKICNlbmRpZgorCisjaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZUaW1lWm9uZS5oPgorI2luY2x1
ZGUgPHZlY3Rvcj4KKyNlbmRpZgorCiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxjc3Ry
aW5nPgogI2luY2x1ZGUgPHN0cmluZz4KQEAgLTMxLDcgKzM3LDcgQEAgbmFtZXNwYWNlIGFic2wg
ewogbmFtZXNwYWNlIHRpbWVfaW50ZXJuYWwgewogbmFtZXNwYWNlIGNjdHogewogCi0jaWYgZGVm
aW5lZChfX0FORFJPSURfXykgJiYgX19BTkRST0lEX0FQSV9fID49IDIxCisjaWYgZGVmaW5lZChf
X0FORFJPSURfXykgJiYgZGVmaW5lZChfX0FORFJPSURfQVBJX18pICYmIF9fQU5EUk9JRF9BUElf
XyA+PSAyMQogbmFtZXNwYWNlIHsKIC8vIEFuZHJvaWQgJ0wnIHJlbW92ZXMgX19zeXN0ZW1fcHJv
cGVydHlfZ2V0KCkgZnJvbSB0aGUgTkRLLCBob3dldmVyCiAvLyBpdCBpcyBzdGlsbCBhIGhpZGRl
biBzeW1ib2wgaW4gbGliYyBzbyB3ZSB1c2UgZGxzeW0oKSB0byBhY2Nlc3MgaXQuCkBAIC0xMTYs
NiArMTIyLDI1IEBAIHRpbWVfem9uZSBmaXhlZF90aW1lX3pvbmUoY29uc3Qgc2Vjb25kcyYgb2Zm
c2V0KSB7CiAKIHRpbWVfem9uZSBsb2NhbF90aW1lX3pvbmUoKSB7CiAgIGNvbnN0IGNoYXIqIHpv
bmUgPSAiOmxvY2FsdGltZSI7CisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAgY2hhciBzeXNw
cm9wW1BST1BfVkFMVUVfTUFYXTsKKyAgaWYgKF9fc3lzdGVtX3Byb3BlcnR5X2dldCgicGVyc2lz
dC5zeXMudGltZXpvbmUiLCBzeXNwcm9wKSA+IDApIHsKKyAgICB6b25lID0gc3lzcHJvcDsKKyAg
fQorI2VuZGlmCisjaWYgZGVmaW5lZChfX0FQUExFX18pCisgIHN0ZDo6dmVjdG9yPGNoYXI+IGJ1
ZmZlcjsKKyAgQ0ZUaW1lWm9uZVJlZiB0el9kZWZhdWx0ID0gQ0ZUaW1lWm9uZUNvcHlEZWZhdWx0
KCk7CisgIGlmIChDRlN0cmluZ1JlZiB0el9uYW1lID0gQ0ZUaW1lWm9uZUdldE5hbWUodHpfZGVm
YXVsdCkpIHsKKyAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nID0ga0NGU3RyaW5nRW5jb2Rp
bmdVVEY4OworICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgodHpfbmFtZSk7
CisgICAgYnVmZmVyLnJlc2l6ZShDRlN0cmluZ0dldE1heGltdW1TaXplRm9yRW5jb2RpbmcobGVu
Z3RoLCBlbmNvZGluZykgKyAxKTsKKyAgICBpZiAoQ0ZTdHJpbmdHZXRDU3RyaW5nKHR6X25hbWUs
ICZidWZmZXJbMF0sIGJ1ZmZlci5zaXplKCksIGVuY29kaW5nKSkgeworICAgICAgem9uZSA9ICZi
dWZmZXJbMF07CisgICAgfQorICB9CisgIENGUmVsZWFzZSh0el9kZWZhdWx0KTsKKyNlbmRpZgog
CiAgIC8vIEFsbG93ICR7VFp9IHRvIG92ZXJyaWRlIHRvIGRlZmF1bHQgem9uZS4KICAgY2hhciog
dHpfZW52ID0gbnVsbHB0cjsKQEAgLTEyMywxMiArMTQ4LDYgQEAgdGltZV96b25lIGxvY2FsX3Rp
bWVfem9uZSgpIHsKICAgX2R1cGVudl9zKCZ0el9lbnYsIG51bGxwdHIsICJUWiIpOwogI2Vsc2UK
ICAgdHpfZW52ID0gc3RkOjpnZXRlbnYoIlRaIik7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQU5E
Uk9JRF9fKQotICBjaGFyIHN5c3Byb3BbUFJPUF9WQUxVRV9NQVhdOwotICBpZiAodHpfZW52ID09
IG51bGxwdHIpCi0gICAgaWYgKF9fc3lzdGVtX3Byb3BlcnR5X2dldCgicGVyc2lzdC5zeXMudGlt
ZXpvbmUiLCBzeXNwcm9wKSA+IDApCi0gICAgICB0el9lbnYgPSBzeXNwcm9wOwogI2VuZGlmCiAg
IGlmICh0el9lbnYpIHpvbmUgPSB0el9lbnY7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2xvb2t1cF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbG9va3VwX3Rlc3QuY2MKaW5kZXggNTUxMjkyZmI1NWUw
ODgyZDJiYmViMTE3ODI4OTU0MGYyZTk5ODQxYy4uNDJkZDZkNTUxMmY0NTg5N2E3ZDAwM2IzMGY2
YWFjNGZhNjY4ODU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90
aW1lX3pvbmVfbG9va3VwX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Ny
Yy90aW1lX3pvbmVfbG9va3VwX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAg
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0xNiw3ICsxNiw5IEBACiAKICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVk
ZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGZ1dHVyZT4KKyNpbmNs
dWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHRocmVhZD4KICNpbmNs
dWRlIDx2ZWN0b3I+CkBAIC0zMzUsNiArMzM3LDcgQEAgY29uc3QgY2hhciogY29uc3Qga1RpbWVa
b25lTmFtZXNbXSA9IHsKICAgIkFzaWEvUG9udGlhbmFrIiwKICAgIkFzaWEvUHlvbmd5YW5nIiwK
ICAgIkFzaWEvUWF0YXIiLAorICAiQXNpYS9Rb3N0YW5heSIsCiAgICJBc2lhL1F5enlsb3JkYSIs
CiAgICJBc2lhL1Jhbmdvb24iLAogICAiQXNpYS9SaXlhZGgiLApAQCAtNjY0LDYgKzY2Nyw3IEBA
IGludCBWZXJzaW9uQ21wKHRpbWVfem9uZSB0eiwgY29uc3Qgc3RkOjpzdHJpbmcmIHRhcmdldCkg
ewogCiB9ICAvLyBuYW1lc3BhY2UKIAorI2lmICFkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQogVEVT
VChUaW1lWm9uZXMsIExvYWRab25lc0NvbmN1cnJlbnRseSkgewogICBzdGQ6OnByb21pc2U8dm9p
ZD4gcmVhZHlfcHJvbWlzZTsKICAgc3RkOjpzaGFyZWRfZnV0dXJlPHZvaWQ+IHJlYWR5X2Z1dHVy
ZShyZWFkeV9wcm9taXNlLmdldF9mdXR1cmUoKSk7CkBAIC03MTEsNiArNzE1LDcgQEAgVEVTVChU
aW1lWm9uZXMsIExvYWRab25lc0NvbmN1cnJlbnRseSkgewogICB9CiAgIEVYUEVDVF9MRShmYWls
dXJlcy5zaXplKCksIG1heF9mYWlsdXJlcykgPDwgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhmYWls
dXJlcyk7CiB9CisjZW5kaWYKIAogVEVTVChUaW1lWm9uZSwgTmFtZWRUaW1lWm9uZXMpIHsKICAg
Y29uc3QgdGltZV96b25lIHV0YyA9IHV0Y190aW1lX3pvbmUoKTsKQEAgLTgzMSw3ICs4MzYsNyBA
QCBURVNUKEJyZWFrVGltZSwgTG9jYWxUaW1lSW5VVEMpIHsKICAgY29uc3QgdGltZV96b25lIHR6
ID0gdXRjX3RpbWVfem9uZSgpOwogICBjb25zdCBhdXRvIHRwID0gY2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OmZyb21fdGltZV90KDApOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMTk3MCwgMSwgMSwgMCwg
MCwgMCwgMCwgZmFsc2UsICJVVEMiKTsKLSAgRVhQRUNUX0VRKHdlZWtkYXk6OnRodXJzZGF5LCBn
ZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBFQ1RfRVEod2Vl
a2RheTo6dGh1cnNkYXksIGdldF93ZWVrZGF5KGNvbnZlcnQodHAsIHR6KSkpOwogfQogCiBURVNU
KEJyZWFrVGltZSwgTG9jYWxUaW1lSW5VVENVbmFsaWduZWQpIHsKQEAgLTgzOSw3ICs4NDQsNyBA
QCBURVNUKEJyZWFrVGltZSwgTG9jYWxUaW1lSW5VVENVbmFsaWduZWQpIHsKICAgY29uc3QgYXV0
byB0cCA9CiAgICAgICBjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoMCkgLSBjaHJv
bm86Om1pbGxpc2Vjb25kcyg1MDApOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMTk2OSwgMTIsIDMx
LCAyMywgNTksIDU5LCAwLCBmYWxzZSwgIlVUQyIpOwotICBFWFBFQ1RfRVEod2Vla2RheTo6d2Vk
bmVzZGF5LCBnZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBF
Q1RfRVEod2Vla2RheTo6d2VkbmVzZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRwLCB0eikpKTsK
IH0KIAogVEVTVChCcmVha1RpbWUsIExvY2FsVGltZVBvc2l4KSB7CkBAIC04NDcsNyArODUyLDcg
QEAgVEVTVChCcmVha1RpbWUsIExvY2FsVGltZVBvc2l4KSB7CiAgIGNvbnN0IHRpbWVfem9uZSB0
eiA9IHV0Y190aW1lX3pvbmUoKTsKICAgY29uc3QgYXV0byB0cCA9IGNocm9ubzo6c3lzdGVtX2Ns
b2NrOjpmcm9tX3RpbWVfdCg1MzY0NTc1OTkpOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMTk4Niwg
MTIsIDMxLCAyMywgNTksIDU5LCAwLCBmYWxzZSwgIlVUQyIpOwotICBFWFBFQ1RfRVEod2Vla2Rh
eTo6d2VkbmVzZGF5LCBnZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOwor
ICBFWFBFQ1RfRVEod2Vla2RheTo6d2VkbmVzZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRwLCB0
eikpKTsKIH0KIAogVEVTVChUaW1lWm9uZUltcGwsIExvY2FsVGltZUluRml4ZWQpIHsKQEAgLTg1
NywyOCArODYyLDI4IEBAIFRFU1QoVGltZVpvbmVJbXBsLCBMb2NhbFRpbWVJbkZpeGVkKSB7CiAg
IGNvbnN0IGF1dG8gdHAgPSBjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoMCk7CiAg
IEV4cGVjdFRpbWUodHAsIHR6LCAxOTY5LCAxMiwgMzEsIDE1LCAyNiwgMTMsIG9mZnNldC5jb3Vu
dCgpLCBmYWxzZSwKICAgICAgICAgICAgICAiLTA4MzM0NyIpOwotICBFWFBFQ1RfRVEod2Vla2Rh
eTo6d2VkbmVzZGF5LCBnZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOwor
ICBFWFBFQ1RfRVEod2Vla2RheTo6d2VkbmVzZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRwLCB0
eikpKTsKIH0KIAogVEVTVChCcmVha1RpbWUsIExvY2FsVGltZUluTmV3WW9yaykgewogICBjb25z
dCB0aW1lX3pvbmUgdHogPSBMb2FkWm9uZSgiQW1lcmljYS9OZXdfWW9yayIpOwogICBjb25zdCBh
dXRvIHRwID0gY2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KDQ1KTsKICAgRXhwZWN0
VGltZSh0cCwgdHosIDE5NjksIDEyLCAzMSwgMTksIDAsIDQ1LCAtNSAqIDYwICogNjAsIGZhbHNl
LCAiRVNUIik7Ci0gIEVYUEVDVF9FUSh3ZWVrZGF5Ojp3ZWRuZXNkYXksIGdldF93ZWVrZGF5KGNp
dmlsX2RheShjb252ZXJ0KHRwLCB0eikpKSk7CisgIEVYUEVDVF9FUSh3ZWVrZGF5Ojp3ZWRuZXNk
YXksIGdldF93ZWVrZGF5KGNvbnZlcnQodHAsIHR6KSkpOwogfQogCiBURVNUKEJyZWFrVGltZSwg
TG9jYWxUaW1lSW5NVFYpIHsKICAgY29uc3QgdGltZV96b25lIHR6ID0gTG9hZFpvbmUoIkFtZXJp
Y2EvTG9zX0FuZ2VsZXMiKTsKICAgY29uc3QgYXV0byB0cCA9IGNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojpmcm9tX3RpbWVfdCgxMzgwODU1NzI5KTsKICAgRXhwZWN0VGltZSh0cCwgdHosIDIwMTMsIDEw
LCAzLCAyMCwgMiwgOSwgLTcgKiA2MCAqIDYwLCB0cnVlLCAiUERUIik7Ci0gIEVYUEVDVF9FUSh3
ZWVrZGF5Ojp0aHVyc2RheSwgZ2V0X3dlZWtkYXkoY2l2aWxfZGF5KGNvbnZlcnQodHAsIHR6KSkp
KTsKKyAgRVhQRUNUX0VRKHdlZWtkYXk6OnRodXJzZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRw
LCB0eikpKTsKIH0KIAogVEVTVChCcmVha1RpbWUsIExvY2FsVGltZUluU3lkbmV5KSB7CiAgIGNv
bnN0IHRpbWVfem9uZSB0eiA9IExvYWRab25lKCJBdXN0cmFsaWEvU3lkbmV5Iik7CiAgIGNvbnN0
IGF1dG8gdHAgPSBjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoOTApOwogICBFeHBl
Y3RUaW1lKHRwLCB0eiwgMTk3MCwgMSwgMSwgMTAsIDEsIDMwLCAxMCAqIDYwICogNjAsIGZhbHNl
LCAiQUVTVCIpOwotICBFWFBFQ1RfRVEod2Vla2RheTo6dGh1cnNkYXksIGdldF93ZWVrZGF5KGNp
dmlsX2RheShjb252ZXJ0KHRwLCB0eikpKSk7CisgIEVYUEVDVF9FUSh3ZWVrZGF5Ojp0aHVyc2Rh
eSwgZ2V0X3dlZWtkYXkoY29udmVydCh0cCwgdHopKSk7CiB9CiAKIFRFU1QoTWFrZVRpbWUsIFRp
bWVQb2ludFJlc29sdXRpb24pIHsKQEAgLTkyNSw3ICs5MzAsNyBAQCBURVNUKE1ha2VUaW1lLCBO
b3JtYWxpemF0aW9uKSB7CiAgIEVYUEVDVF9FUSh0cCwgY29udmVydChjaXZpbF9zZWNvbmQoMjAw
OSwgMiwgMTMsIDE4LCAzMCwgOTApLCB0eikpOyAgIC8vIHNlY29uZAogfQogCi0vLyBOT1RFOiBS
dW4gdGhpcyB3aXRoIC0tY29wdD0tZnRyYXB2IHRvIGRldGVjdCBvdmVyZmxvdyBwcm9ibGVtcy4K
Ky8vIE5PVEU6IFJ1biB0aGlzIHdpdGggLWZ0cmFwdiB0byBkZXRlY3Qgb3ZlcmZsb3cgcHJvYmxl
bXMuCiBURVNUKE1ha2VUaW1lLCBTeXNTZWNvbmRzTGltaXRzKSB7CiAgIGNvbnN0IGNoYXIgUkZD
MzMzOVtdID0gICIlWS0lbS0lZFQlSDolTTolUyVFeiI7CiAgIGNvbnN0IHRpbWVfem9uZSB1dGMg
PSB1dGNfdGltZV96b25lKCk7CkBAIC05OTAsNiArOTk1LDEwNiBAQCBURVNUKE1ha2VUaW1lLCBT
eXNTZWNvbmRzTGltaXRzKSB7CiAgIEVYUEVDVF9FUSh0aW1lX3BvaW50PGFic2w6OnRpbWVfaW50
ZXJuYWw6OmNjdHo6OnNlY29uZHM+OjptaW4oKSwgdHApOwogICB0cCA9IGNvbnZlcnQoY2l2aWxf
c2Vjb25kOjptaW4oKSwgd2VzdCk7CiAgIEVYUEVDVF9FUSh0aW1lX3BvaW50PGFic2w6OnRpbWVf
aW50ZXJuYWw6OmNjdHo6OnNlY29uZHM+OjptaW4oKSwgdHApOworCisgIC8vIFNvbWUgc2ltaWxh
ciBjaGVja3MgZm9yIHRoZSAibGliYyIgdGltZS16b25lIGltcGxlbWVudGF0aW9uLgorICBpZiAo
c2l6ZW9mKHN0ZDo6dGltZV90KSA+PSA4KSB7CisgICAgLy8gQ2hlY2tzIHRoYXQgInRtX3llYXIg
KyAxOTAwIiwgYXMgdXNlZCBieSB0aGUgImxpYmMiIGltcGxlbWVudGF0aW9uLAorICAgIC8vIGNh
biBwcm9kdWNlIHllYXIgdmFsdWVzIGJleW9uZCB0aGUgcmFuZ2Ugb24gYW4gaW50IHdpdGhvdXQg
b3ZlcmZsb3cuCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KQorICAgIC8v
IGxvY2FsdGltZV9zKCkgYW5kIGdtdGltZV9zKCkgZG9uJ3QgYmVsaWV2ZSBpbiB5ZWFycyBvdXRz
aWRlIFsxOTcwOjMwMDBdLgorI2Vsc2UKKyAgICBjb25zdCB0aW1lX3pvbmUgdXRjID0gTG9hZFpv
bmUoImxpYmM6VVRDIik7CisgICAgY29uc3QgeWVhcl90IG1heF90bV95ZWFyID0geWVhcl90e3N0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCl9ICsgMTkwMDsKKyAgICB0cCA9IGNvbnZlcnQo
Y2l2aWxfc2Vjb25kKG1heF90bV95ZWFyLCAxMiwgMzEsIDIzLCA1OSwgNTkpLCB1dGMpOworICAg
IEVYUEVDVF9FUSgiMjE0NzQ4NTU0Ny0xMi0zMVQyMzo1OTo1OSswMDowMCIsIGZvcm1hdChSRkMz
MzM5LCB0cCwgdXRjKSk7CisgICAgY29uc3QgeWVhcl90IG1pbl90bV95ZWFyID0geWVhcl90e3N0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCl9ICsgMTkwMDsKKyAgICB0cCA9IGNvbnZlcnQo
Y2l2aWxfc2Vjb25kKG1pbl90bV95ZWFyLCAxLCAxLCAwLCAwLCAwKSwgdXRjKTsKKyAgICBFWFBF
Q1RfRVEoIi0yMTQ3NDgxNzQ4LTAxLTAxVDAwOjAwOjAwKzAwOjAwIiwgZm9ybWF0KFJGQzMzMzks
IHRwLCB1dGMpKTsKKyNlbmRpZgorICB9Cit9CisKK1RFU1QoTWFrZVRpbWUsIExvY2FsVGltZUxp
YkMpIHsKKyAgLy8gQ2hlY2tzIHRoYXQgY2N0eiBhbmQgbGliYyBhZ3JlZSBvbiB0cmFuc2l0aW9u
IHBvaW50cyBpbiBbMTk3MDoyMDM3XS4KKyAgLy8KKyAgLy8gV2UgbGltaXQgdGhpcyB0ZXN0IGNh
c2UgdG8gZW52aXJvbm1lbnRzIHdoZXJlOgorICAvLyAgMSkgd2Uga25vdyBob3cgdG8gY2hhbmdl
IHRoZSB0aW1lIHpvbmUgdXNlZCBieSBsb2NhbHRpbWUoKS9ta3RpbWUoKSwKKyAgLy8gIDIpIGNj
dHogYW5kIGxvY2FsdGltZSgpL21rdGltZSgpIHdpbGwgdXNlIHNpbWlsYXItZW5vdWdoIHR6ZGF0
YSwgYW5kCisgIC8vICAzKSB3ZSBoYXZlIHNvbWUgaWRlYSBhYm91dCBob3cgbWt0aW1lKCkgYmVo
YXZlcyBkdXJpbmcgdHJhbnNpdGlvbnMuCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZp
bmVkKF9fQU5EUk9JRF9fKQorICBjb25zdCBjaGFyKiBjb25zdCBlcCA9IGdldGVudigiVFoiKTsK
KyAgc3RkOjpzdHJpbmcgdHpfbmFtZSA9IChlcCAhPSBudWxscHRyKSA/IGVwIDogIiI7CisgIGZv
ciAoY29uc3QgY2hhciogY29uc3QqIG5wID0ga1RpbWVab25lTmFtZXM7ICpucCAhPSBudWxscHRy
OyArK25wKSB7CisgICAgQVNTRVJUX0VRKDAsIHNldGVudigiVFoiLCAqbnAsIDEpKTsgIC8vIGNo
YW5nZSB3aGF0ICJsb2NhbHRpbWUiIG1lYW5zCisgICAgY29uc3QgYXV0byB6aSA9IGxvY2FsX3Rp
bWVfem9uZSgpOworICAgIGNvbnN0IGF1dG8gbGMgPSBMb2FkWm9uZSgibGliYzpsb2NhbHRpbWUi
KTsKKyAgICB0aW1lX3pvbmU6OmNpdmlsX3RyYW5zaXRpb24gdHJhbnM7CisgICAgZm9yIChhdXRv
IHRwID0gemkubG9va3VwKGNpdmlsX3NlY29uZCgpKS50cmFuczsKKyAgICAgICAgIHppLm5leHRf
dHJhbnNpdGlvbih0cCwgJnRyYW5zKTsKKyAgICAgICAgIHRwID0gemkubG9va3VwKHRyYW5zLnRv
KS50cmFucykgeworICAgICAgY29uc3QgYXV0byBmY2wgPSB6aS5sb29rdXAodHJhbnMuZnJvbSk7
CisgICAgICBjb25zdCBhdXRvIHRjbCA9IHppLmxvb2t1cCh0cmFucy50byk7CisgICAgICBjaXZp
bF9zZWNvbmQgY3M7ICAvLyBjb21wYXJlIGNzIGluIHppIGFuZCBsYworICAgICAgaWYgKGZjbC5r
aW5kID09IHRpbWVfem9uZTo6Y2l2aWxfbG9va3VwOjpVTklRVUUpIHsKKyAgICAgICAgaWYgKHRj
bC5raW5kID09IHRpbWVfem9uZTo6Y2l2aWxfbG9va3VwOjpVTklRVUUpIHsKKyAgICAgICAgICAv
LyBCb3RoIHVuaXF1ZTsgbXVzdCBiZSBhbiBpc19kc3Qgb3IgYWJiciBjaGFuZ2UuCisgICAgICAg
ICAgQVNTRVJUX0VRKHRyYW5zLmZyb20sIHRyYW5zLnRvKTsKKyAgICAgICAgICBjb25zdCBhdXRv
IHRyYW5zID0gZmNsLnRyYW5zOworICAgICAgICAgIGNvbnN0IGF1dG8gdGFsID0gemkubG9va3Vw
KHRyYW5zKTsKKyAgICAgICAgICBjb25zdCBhdXRvIHRwcmV2ID0gdHJhbnMgLSBhYnNsOjp0aW1l
X2ludGVybmFsOjpjY3R6OjpzZWNvbmRzKDEpOworICAgICAgICAgIGNvbnN0IGF1dG8gcGFsID0g
emkubG9va3VwKHRwcmV2KTsKKyAgICAgICAgICBpZiAocGFsLmlzX2RzdCA9PSB0YWwuaXNfZHN0
KSB7CisgICAgICAgICAgICBBU1NFUlRfU1RSTkUocGFsLmFiYnIsIHRhbC5hYmJyKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VR
KHRpbWVfem9uZTo6Y2l2aWxfbG9va3VwOjpSRVBFQVRFRCwgdGNsLmtpbmQpOworICAgICAgICBj
cyA9IHRyYW5zLnRvOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUX0VRKHRpbWVfem9u
ZTo6Y2l2aWxfbG9va3VwOjpVTklRVUUsIHRjbC5raW5kKTsKKyAgICAgICAgQVNTRVJUX0VRKHRp
bWVfem9uZTo6Y2l2aWxfbG9va3VwOjpTS0lQUEVELCBmY2wua2luZCk7CisgICAgICAgIGNzID0g
dHJhbnMuZnJvbTsKKyAgICAgIH0KKyAgICAgIGlmIChjcy55ZWFyKCkgPiAyMDM3KSBicmVhazsg
IC8vIGxpbWl0IHRlc3QgdGltZSAoYW5kIHRvIDMyLWJpdCB0aW1lX3QpCisgICAgICBjb25zdCBh
dXRvIGNsX3ppID0gemkubG9va3VwKGNzKTsKKyAgICAgIGlmICh6aS5sb29rdXAoY2xfemkucHJl
KS5pc19kc3QgPT0gemkubG9va3VwKGNsX3ppLnBvc3QpLmlzX2RzdCkgeworICAgICAgICAvLyBU
aGUgImxpYmMiIGltcGxlbWVudGF0aW9uIGNhbm5vdCBjb3JyZWN0bHkgY2xhc3NpZnkgdHJhbnNp
dGlvbnMKKyAgICAgICAgLy8gdGhhdCBkb24ndCBjaGFuZ2UgdGhlICJ0bV9pc2RzdCIgZmxhZy4g
IEluIEV1cm9wZS9Wb2xnb2dyYWQsIGZvcgorICAgICAgICAvLyBleGFtcGxlLCB0aGVyZSBpcyBh
IFNLSVBQRUQgdHJhbnNpdGlvbiBmcm9tICswMyB0byArMDQgd2l0aCBkc3Q9RgorICAgICAgICAv
LyBvbiBib3RoIHNpZGVzIC4uLgorICAgICAgICAvLyAgIDE1NDA2ODExOTkgPSAyMDE4LTEwLTI4
IDAxOjU5OjU5ICswMzowMDowMCBbZHN0PUYgb2ZmPTEwODAwXQorICAgICAgICAvLyAgIDE1NDA2
ODEyMDAgPSAyMDE4LTEwLTI4IDAzOjAwOjAwICswNDowMDowMCBbZHN0PUYgb2ZmPTE0NDAwXQor
ICAgICAgICAvLyBidXQgc3RkOjpta3RpbWUoMjAxOC0xMC0yOCAwMjowMDowMCwgdG1faXNkc3Q9
MCkgZmFpbHMsIHVubGlrZSwKKyAgICAgICAgLy8gc2F5LCB0aGUgc2ltaWxhciBFdXJvcGUvQ2hp
c2luYXUgdHJhbnNpdGlvbiBmcm9tICswMiB0byArMDMgLi4uCisgICAgICAgIC8vICAgMTUyMTkz
NTk5OSA9IDIwMTgtMDMtMjUgMDE6NTk6NTkgKzAyOjAwOjAwIFtkc3Q9RiBvZmY9NzIwMF0KKyAg
ICAgICAgLy8gICAxNTIxOTM2MDAwID0gMjAxOC0wMy0yNSAwMzowMDowMCArMDM6MDA6MDAgW2Rz
dD1UIG9mZj0xMDgwMF0KKyAgICAgICAgLy8gd2hlcmUgc3RkOjpta3RpbWUoMjAxOC0wMy0yNSAw
MjowMDowMCwgdG1faXNkc3Q9MCkgc3VjY2VlZHMgYW5kCisgICAgICAgIC8vIHJldHVybnMgMTUy
MTkzNjAwMC4KKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAoY3MgPT0gY2l2
aWxfc2Vjb25kKDIwMzcsIDEwLCA0LCAyLCAwLCAwKSkgeworICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyB0em5hbWUgPSAqbnA7CisgICAgICAgIGlmICh0em5hbWUgPT0gIkFmcmljYS9DYXNhYmxh
bmNhIiB8fCB0em5hbWUgPT0gIkFmcmljYS9FbF9BYWl1biIpIHsKKyAgICAgICAgICAvLyBUaGUg
ImxpYmMiIGltcGxlbWVudGF0aW9uIGdldHMgdGhpcyB0cmFuc2l0aW9uIHdyb25nIChhdCBsZWFz
dAorICAgICAgICAgIC8vIHVudGlsIDIwMThnIHdoZW4gaXQgd2FzIHJlbW92ZWQpLCByZXR1cm5p
bmcgYW4gb2Zmc2V0IG9mIDM2MDAKKyAgICAgICAgICAvLyBpbnN0ZWFkIG9mIDAuICBUT0RPOiBS
ZXZlcnQgdGhpcyB3aGVuIDIwMThnIGlzIHViaXF1aXRvdXMuCisgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGNvbnN0IGF1dG8gY2xfbGMgPSBsYy5sb29rdXAo
Y3MpOworICAgICAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAiRm9yICIgPDwg
Y3MgPDwgIiBpbiAiIDw8ICpucCk7CisgICAgICBFWFBFQ1RfRVEoY2xfemkua2luZCwgY2xfbGMu
a2luZCk7CisgICAgICBFWFBFQ1RfRVEoY2xfemkucHJlLCBjbF9sYy5wcmUpOworICAgICAgRVhQ
RUNUX0VRKGNsX3ppLnRyYW5zLCBjbF9sYy50cmFucyk7CisgICAgICBFWFBFQ1RfRVEoY2xfemku
cG9zdCwgY2xfbGMucG9zdCk7CisgICAgfQorICB9CisgIGlmIChlcCA9PSBudWxscHRyKSB7Cisg
ICAgQVNTRVJUX0VRKDAsIHVuc2V0ZW52KCJUWiIpKTsKKyAgfSBlbHNlIHsKKyAgICBBU1NFUlRf
RVEoMCwgc2V0ZW52KCJUWiIsIHR6X25hbWUuY19zdHIoKSwgMSkpOworICB9CisjZW5kaWYKIH0K
IAogVEVTVChOZXh0VHJhbnNpdGlvbiwgVVRDKSB7CkBAIC0xMTY5LDEwICsxMjc0LDEwIEBAIFRF
U1QoVGltZVpvbmVFZGdlQ2FzZSwgUGFjaWZpY0FwaWEpIHsKICAgLy8gICAxMzI1MjM5MjAwID09
IFNhdCwgMzEgRGVjIDIwMTEgMDA6MDA6MDAgKzE0MDAgKCsxNCkKICAgYXV0byB0cCA9IGNvbnZl
cnQoY2l2aWxfc2Vjb25kKDIwMTEsIDEyLCAyOSwgMjMsIDU5LCA1OSksIHR6KTsKICAgRXhwZWN0
VGltZSh0cCwgdHosIDIwMTEsIDEyLCAyOSwgMjMsIDU5LCA1OSwgLTEwICogMzYwMCwgdHJ1ZSwg
Ii0xMCIpOwotICBFWFBFQ1RfRVEoMzYzLCBnZXRfeWVhcmRheShjaXZpbF9kYXkoY29udmVydCh0
cCwgdHopKSkpOworICBFWFBFQ1RfRVEoMzYzLCBnZXRfeWVhcmRheShjb252ZXJ0KHRwLCB0eikp
KTsKICAgdHAgKz0gYWJzbDo6dGltZV9pbnRlcm5hbDo6Y2N0ejo6c2Vjb25kcygxKTsKICAgRXhw
ZWN0VGltZSh0cCwgdHosIDIwMTEsIDEyLCAzMSwgMCwgMCwgMCwgMTQgKiAzNjAwLCB0cnVlLCAi
KzE0Iik7Ci0gIEVYUEVDVF9FUSgzNjUsIGdldF95ZWFyZGF5KGNpdmlsX2RheShjb252ZXJ0KHRw
LCB0eikpKSk7CisgIEVYUEVDVF9FUSgzNjUsIGdldF95ZWFyZGF5KGNvbnZlcnQodHAsIHR6KSkp
OwogfQogCiBURVNUKFRpbWVab25lRWRnZUNhc2UsIEFmcmljYUNhaXJvKSB7CkBAIC0xMjk0LDEw
ICsxMzk5LDEwIEBAIFRFU1QoVGltZVpvbmVFZGdlQ2FzZSwgTmVnYXRpdmVZZWFyKSB7CiAgIGNv
bnN0IHRpbWVfem9uZSB0eiA9IHV0Y190aW1lX3pvbmUoKTsKICAgYXV0byB0cCA9IGNvbnZlcnQo
Y2l2aWxfc2Vjb25kKDAsIDEsIDEsIDAsIDAsIDApLCB0eik7CiAgIEV4cGVjdFRpbWUodHAsIHR6
LCAwLCAxLCAxLCAwLCAwLCAwLCAwICogMzYwMCwgZmFsc2UsICJVVEMiKTsKLSAgRVhQRUNUX0VR
KHdlZWtkYXk6OnNhdHVyZGF5LCBnZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHop
KSkpOworICBFWFBFQ1RfRVEod2Vla2RheTo6c2F0dXJkYXksIGdldF93ZWVrZGF5KGNvbnZlcnQo
dHAsIHR6KSkpOwogICB0cCAtPSBhYnNsOjp0aW1lX2ludGVybmFsOjpjY3R6OjpzZWNvbmRzKDEp
OwogICBFeHBlY3RUaW1lKHRwLCB0eiwgLTEsIDEyLCAzMSwgMjMsIDU5LCA1OSwgMCAqIDM2MDAs
IGZhbHNlLCAiVVRDIik7Ci0gIEVYUEVDVF9FUSh3ZWVrZGF5OjpmcmlkYXksIGdldF93ZWVrZGF5
KGNpdmlsX2RheShjb252ZXJ0KHRwLCB0eikpKSk7CisgIEVYUEVDVF9FUSh3ZWVrZGF5Ojpmcmlk
YXksIGdldF93ZWVrZGF5KGNvbnZlcnQodHAsIHR6KSkpOwogfQogCiBURVNUKFRpbWVab25lRWRn
ZUNhc2UsIFVUQzMyYml0TGltaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei9zcmMvdGltZV96b25lX3Bvc2l4LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Ny
Yy90aW1lX3pvbmVfcG9zaXguY2MKaW5kZXggNzVhZDhiY2JhOTNhNDlhZjM5NjllNTIzZjVjN2U0
N2UxNmE1ODliOS4uMDM4NzQwZTFkNjdiYjFiOGZhMzBkZWQ2Zjk1OThlYmJmZmQ4MjllNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMDAsOSArMTAwLDkgQEAg
Y29uc3QgY2hhciogUGFyc2VEYXRlVGltZShjb25zdCBjaGFyKiBwLCBQb3NpeFRyYW5zaXRpb24q
IHJlcykgewogICAgICAgICAgIGludCB3ZWVrZGF5ID0gMDsKICAgICAgICAgICBpZiAoKHAgPSBQ
YXJzZUludChwICsgMSwgMCwgNiwgJndlZWtkYXkpKSAhPSBudWxscHRyKSB7CiAgICAgICAgICAg
ICByZXMtPmRhdGUuZm10ID0gUG9zaXhUcmFuc2l0aW9uOjpNOwotICAgICAgICAgICAgcmVzLT5k
YXRlLm0ubW9udGggPSBzdGF0aWNfY2FzdDxpbnRfZmFzdDhfdD4obW9udGgpOwotICAgICAgICAg
ICAgcmVzLT5kYXRlLm0ud2VlayA9IHN0YXRpY19jYXN0PGludF9mYXN0OF90Pih3ZWVrKTsKLSAg
ICAgICAgICAgIHJlcy0+ZGF0ZS5tLndlZWtkYXkgPSBzdGF0aWNfY2FzdDxpbnRfZmFzdDhfdD4o
d2Vla2RheSk7CisgICAgICAgICAgICByZXMtPmRhdGUubS5tb250aCA9IHN0YXRpY19jYXN0PHN0
ZDo6aW50X2Zhc3Q4X3Q+KG1vbnRoKTsKKyAgICAgICAgICAgIHJlcy0+ZGF0ZS5tLndlZWsgPSBz
dGF0aWNfY2FzdDxzdGQ6OmludF9mYXN0OF90Pih3ZWVrKTsKKyAgICAgICAgICAgIHJlcy0+ZGF0
ZS5tLndlZWtkYXkgPSBzdGF0aWNfY2FzdDxzdGQ6OmludF9mYXN0OF90Pih3ZWVrZGF5KTsKICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTExMCwxMyArMTEwLDEzIEBAIGNvbnN0
IGNoYXIqIFBhcnNlRGF0ZVRpbWUoY29uc3QgY2hhciogcCwgUG9zaXhUcmFuc2l0aW9uKiByZXMp
IHsKICAgICAgIGludCBkYXkgPSAwOwogICAgICAgaWYgKChwID0gUGFyc2VJbnQocCArIDEsIDEs
IDM2NSwgJmRheSkpICE9IG51bGxwdHIpIHsKICAgICAgICAgcmVzLT5kYXRlLmZtdCA9IFBvc2l4
VHJhbnNpdGlvbjo6SjsKLSAgICAgICAgcmVzLT5kYXRlLmouZGF5ID0gc3RhdGljX2Nhc3Q8aW50
X2Zhc3QxNl90PihkYXkpOworICAgICAgICByZXMtPmRhdGUuai5kYXkgPSBzdGF0aWNfY2FzdDxz
dGQ6OmludF9mYXN0MTZfdD4oZGF5KTsKICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgaW50
IGRheSA9IDA7CiAgICAgICBpZiAoKHAgPSBQYXJzZUludChwLCAwLCAzNjUsICZkYXkpKSAhPSBu
dWxscHRyKSB7CiAgICAgICAgIHJlcy0+ZGF0ZS5mbXQgPSBQb3NpeFRyYW5zaXRpb246Ok47Ci0g
ICAgICAgIHJlcy0+ZGF0ZS5qLmRheSA9IHN0YXRpY19jYXN0PGludF9mYXN0MTZfdD4oZGF5KTsK
KyAgICAgICAgcmVzLT5kYXRlLm4uZGF5ID0gc3RhdGljX2Nhc3Q8c3RkOjppbnRfZmFzdDE2X3Q+
KGRheSk7CiAgICAgICB9CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy90aW1lX3pvbmVfcG9zaXguaAppbmRleCA5Y2NkNGE4YjY4YmQ1NzYxZjU2ZTMxNGI5ZDhh
MjUwMTcxYjQ4ZDY5Li42YTYwMDIyZmE3ZDYxZGRiMTgwMzU5YjlmMTJkNjZiZDNkNjU0ZGIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX3Bvc2l4LmgKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC02OCwyNSArNjgsMzUgQEAg
bmFtZXNwYWNlIGNjdHogewogLy8gaXQgd291bGQgdGFrZSB1cyB0byBhbm90aGVyIGRheSwgYW5k
IHBlcmhhcHMgd2Vlaywgb3IgZXZlbiBtb250aC4KIHN0cnVjdCBQb3NpeFRyYW5zaXRpb24gewog
ICBlbnVtIERhdGVGb3JtYXQgeyBKLCBOLCBNIH07Ci0gIHN0cnVjdCB7CisKKyAgc3RydWN0IERh
dGUgeworICAgIHN0cnVjdCBOb25MZWFwRGF5IHsKKyAgICAgIHN0ZDo6aW50X2Zhc3QxNl90IGRh
eTsgIC8vIGRheSBvZiBub24tbGVhcCB5ZWFyIFsxOjM2NV0KKyAgICB9OworICAgIHN0cnVjdCBE
YXkgeworICAgICAgc3RkOjppbnRfZmFzdDE2X3QgZGF5OyAgLy8gZGF5IG9mIHllYXIgWzA6MzY1
XQorICAgIH07CisgICAgc3RydWN0IE1vbnRoV2Vla1dlZWtkYXkgeworICAgICAgc3RkOjppbnRf
ZmFzdDhfdCBtb250aDsgICAgLy8gbW9udGggb2YgeWVhciBbMToxMl0KKyAgICAgIHN0ZDo6aW50
X2Zhc3Q4X3Qgd2VlazsgICAgIC8vIHdlZWsgb2YgbW9udGggWzE6NV0gKDU9PWxhc3QpCisgICAg
ICBzdGQ6OmludF9mYXN0OF90IHdlZWtkYXk7ICAvLyAwPT1TdW4sIC4uLiwgNj1TYXQKKyAgICB9
OworCiAgICAgRGF0ZUZvcm1hdCBmbXQ7CisKICAgICB1bmlvbiB7Ci0gICAgICBzdHJ1Y3Qgewot
ICAgICAgICBzdGQ6OmludF9mYXN0MTZfdCBkYXk7ICAvLyBkYXkgb2Ygbm9uLWxlYXAgeWVhciBb
MTozNjVdCi0gICAgICB9IGo7Ci0gICAgICBzdHJ1Y3QgewotICAgICAgICBzdGQ6OmludF9mYXN0
MTZfdCBkYXk7ICAvLyBkYXkgb2YgeWVhciBbMDozNjVdCi0gICAgICB9IG47Ci0gICAgICBzdHJ1
Y3QgewotICAgICAgICBzdGQ6OmludF9mYXN0OF90IG1vbnRoOyAgICAvLyBtb250aCBvZiB5ZWFy
IFsxOjEyXQotICAgICAgICBzdGQ6OmludF9mYXN0OF90IHdlZWs7ICAgICAvLyB3ZWVrIG9mIG1v
bnRoIFsxOjVdICg1PT1sYXN0KQotICAgICAgICBzdGQ6OmludF9mYXN0OF90IHdlZWtkYXk7ICAv
LyAwPT1TdW4sIC4uLiwgNj1TYXQKLSAgICAgIH0gbTsKKyAgICAgIE5vbkxlYXBEYXkgajsKKyAg
ICAgIERheSBuOworICAgICAgTW9udGhXZWVrV2Vla2RheSBtOwogICAgIH07Ci0gIH0gZGF0ZTsK
LSAgc3RydWN0IHsKKyAgfTsKKworICBzdHJ1Y3QgVGltZSB7CiAgICAgc3RkOjppbnRfZmFzdDMy
X3Qgb2Zmc2V0OyAgLy8gc2Vjb25kcyBiZWZvcmUvYWZ0ZXIgMDA6MDA6MDAKLSAgfSB0aW1lOwor
ICB9OworCisgIERhdGUgZGF0ZTsKKyAgVGltZSB0aW1lOwogfTsKIAogLy8gVGhlIGVudGlyZXR5
IG9mIGEgUE9TSVgtc3RyaW5nIHNwZWNpZmllZCB0aW1lLXpvbmUgcnVsZS4gVGhlIHN0YW5kYXJk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3R6ZmlsZS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90emZpbGUuaAppbmRleCA5MGNmYzBjNDI5ODliMDQw
ZWY5MTQ2ZDFjNDVkMzdhZDc3YjIyY2FhLi41MWIxZjFmM2Q4M2NlZThkMWU0YTg0ZTU5ZTdjYWFm
YjMwY2QwYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3R6Zmls
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdHpmaWxlLmgKQEAgLTEsMyAr
MSw1IEBACisvKiBMYXlvdXQgYW5kIGxvY2F0aW9uIG9mIFRaaWYgZmlsZXMuICAqLworCiAjaWZu
ZGVmIFRaRklMRV9ICiAKICNkZWZpbmUgVFpGSUxFX0gKQEAgLTMxLDYgKzMzLDkgQEAKICNkZWZp
bmUgVFpERUZSVUxFUwkicG9zaXhydWxlcyIKICNlbmRpZiAvKiAhZGVmaW5lZCBUWkRFRlJVTEVT
ICovCiAKKworLyogU2VlIEludGVybmV0IFJGQyA4NTM2IGZvciBtb3JlIGRldGFpbHMgYWJvdXQg
dGhlIGZvbGxvd2luZyBmb3JtYXQuICAqLworCiAvKgogKiogRWFjaCBmaWxlIGJlZ2lucyB3aXRo
LiAuIC4KICovCkBAIC00MSw3ICs0Niw3IEBAIHN0cnVjdCB0emhlYWQgewogCWNoYXIJdHpoX21h
Z2ljWzRdOwkJLyogVFpfTUFHSUMgKi8KIAljaGFyCXR6aF92ZXJzaW9uWzFdOwkJLyogJ1wwJyBv
ciAnMicgb3IgJzMnIGFzIG9mIDIwMTMgKi8KIAljaGFyCXR6aF9yZXNlcnZlZFsxNV07CS8qIHJl
c2VydmVkOyBtdXN0IGJlIHplcm8gKi8KLQljaGFyCXR6aF90dGlzZ210Y250WzRdOwkvKiBjb2Rl
ZCBudW1iZXIgb2YgdHJhbnMuIHRpbWUgZmxhZ3MgKi8KKwljaGFyCXR6aF90dGlzdXRjbnRbNF07
CS8qIGNvZGVkIG51bWJlciBvZiB0cmFucy4gdGltZSBmbGFncyAqLwogCWNoYXIJdHpoX3R0aXNz
dGRjbnRbNF07CS8qIGNvZGVkIG51bWJlciBvZiB0cmFucy4gdGltZSBmbGFncyAqLwogCWNoYXIJ
dHpoX2xlYXBjbnRbNF07CQkvKiBjb2RlZCBudW1iZXIgb2YgbGVhcCBzZWNvbmRzICovCiAJY2hh
cgl0emhfdGltZWNudFs0XTsJCS8qIGNvZGVkIG51bWJlciBvZiB0cmFuc2l0aW9uIHRpbWVzICov
CkBAIC02NCwxNCArNjksMTUgQEAgc3RydWN0IHR6aGVhZCB7CiAqKgkJb25lIChjaGFyIFs0XSkJ
CXRvdGFsIGNvcnJlY3Rpb24gYWZ0ZXIgYWJvdmUKICoqCXR6aF90dGlzc3RkY250IChjaGFyKXMJ
CWluZGV4ZWQgYnkgdHlwZTsgaWYgMSwgdHJhbnNpdGlvbgogKioJCQkJCXRpbWUgaXMgc3RhbmRh
cmQgdGltZSwgaWYgMCwKLSoqCQkJCQl0cmFuc2l0aW9uIHRpbWUgaXMgd2FsbCBjbG9jayB0aW1l
Ci0qKgkJCQkJaWYgYWJzZW50LCB0cmFuc2l0aW9uIHRpbWVzIGFyZQotKioJCQkJCWFzc3VtZWQg
dG8gYmUgd2FsbCBjbG9jayB0aW1lCi0qKgl0emhfdHRpc2dtdGNudCAoY2hhcilzCQlpbmRleGVk
IGJ5IHR5cGU7IGlmIDEsIHRyYW5zaXRpb24KLSoqCQkJCQl0aW1lIGlzIFVULCBpZiAwLAotKioJ
CQkJCXRyYW5zaXRpb24gdGltZSBpcyBsb2NhbCB0aW1lCi0qKgkJCQkJaWYgYWJzZW50LCB0cmFu
c2l0aW9uIHRpbWVzIGFyZQorKioJCQkJCXRyYW5zaXRpb24gdGltZSBpcyBsb2NhbCAod2FsbCBj
bG9jaykKKyoqCQkJCQl0aW1lOyBpZiBhYnNlbnQsIHRyYW5zaXRpb24gdGltZXMgYXJlCiAqKgkJ
CQkJYXNzdW1lZCB0byBiZSBsb2NhbCB0aW1lCisqKgl0emhfdHRpc3V0Y250IChjaGFyKXMJCWlu
ZGV4ZWQgYnkgdHlwZTsgaWYgMSwgdHJhbnNpdGlvbgorKioJCQkJCXRpbWUgaXMgVVQsIGlmIDAs
IHRyYW5zaXRpb24gdGltZSBpcworKioJCQkJCWxvY2FsIHRpbWU7IGlmIGFic2VudCwgdHJhbnNp
dGlvbgorKioJCQkJCXRpbWVzIGFyZSBhc3N1bWVkIHRvIGJlIGxvY2FsIHRpbWUuCisqKgkJCQkJ
V2hlbiB0aGlzIGlzIDEsIHRoZSBjb3JyZXNwb25kaW5nCisqKgkJCQkJc3RkL3dhbGwgaW5kaWNh
dG9yIG11c3QgYWxzbyBiZSAxLgogKi8KIAogLyoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9zcmMvem9uZV9pbmZvX3NvdXJjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei9zcmMvem9uZV9pbmZvX3NvdXJjZS5jYwppbmRleCBiZjJkMmQyZDJiNTM4NGVmZjNlYTBl
YTEwZWU4ZmE2OGYwZmU4YmM3Li40MmY1MGM1ZThmYjRjYzZmMDUyMGJmODdhNzBjYjYyZGIxMzcy
YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3pvbmVfaW5mb19z
b3VyY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy96b25lX2luZm9fc291
cmNlLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDYsNyAr
NDYsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPGFic2w6OnRpbWVfaW50ZXJuYWw6OmNjdHo6OlpvbmVJ
bmZvU291cmNlPiBEZWZhdWx0RmFjdG9yeSgKIC8vIEEgIndlYWsiIGRlZmluaXRpb24gZm9yIGNj
dHpfZXh0ZW5zaW9uOjp6b25lX2luZm9fc291cmNlX2ZhY3RvcnkuCiAvLyBUaGUgdXNlciBtYXkg
b3ZlcnJpZGUgdGhpcyB3aXRoIHRoZWlyIG93biAic3Ryb25nIiBkZWZpbml0aW9uIChzZWUKIC8v
IHpvbmVfaW5mb19zb3VyY2UuaCkuCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNpZiAhZGVmaW5l
ZChfX2hhc19hdHRyaWJ1dGUpCisjZGVmaW5lIF9faGFzX2F0dHJpYnV0ZSh4KSAwCisjZW5kaWYK
KyNpZiBfX2hhc19hdHRyaWJ1dGUod2VhaykgfHwgZGVmaW5lZChfX0dOVUNfXykKK1pvbmVJbmZv
U291cmNlRmFjdG9yeSB6b25lX2luZm9fc291cmNlX2ZhY3RvcnkKKyAgICBfX2F0dHJpYnV0ZV9f
KCh3ZWFrKSkgPSBEZWZhdWx0RmFjdG9yeTsKKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmICFk
ZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKIGV4dGVybiBab25lSW5mb1NvdXJjZUZhY3Rvcnkgem9u
ZV9pbmZvX3NvdXJjZV9mYWN0b3J5OwogZXh0ZXJuIFpvbmVJbmZvU291cmNlRmFjdG9yeSBkZWZh
dWx0X2ZhY3Rvcnk7CiBab25lSW5mb1NvdXJjZUZhY3RvcnkgZGVmYXVsdF9mYWN0b3J5ID0gRGVm
YXVsdEZhY3Rvcnk7CkBAIC01NCwyNSArNjAsMTcgQEAgWm9uZUluZm9Tb3VyY2VGYWN0b3J5IGRl
ZmF1bHRfZmFjdG9yeSA9IERlZmF1bHRGYWN0b3J5OwogI3ByYWdtYSBjb21tZW50KCBcCiAgICAg
bGlua2VyLCAgICAgIFwKICAgICAiL2FsdGVybmF0ZW5hbWU6P3pvbmVfaW5mb19zb3VyY2VfZmFj
dG9yeUBjY3R6X2V4dGVuc2lvbkB0aW1lX2ludGVybmFsQGFic2xAQDNQNkE/QVY/JHVuaXF1ZV9w
dHJAVlpvbmVJbmZvU291cmNlQGNjdHpAdGltZV9pbnRlcm5hbEBhYnNsQEBVPyRkZWZhdWx0X2Rl
bGV0ZUBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2ludGVybmFsQGFic2xAQEBzdGRAQEBzdGRA
QEFCVj8kYmFzaWNfc3RyaW5nQERVPyRjaGFyX3RyYWl0c0BEQHN0ZEBAVj8kYWxsb2NhdG9yQERA
MkBANUBBQlY/JGZ1bmN0aW9uQCQkQTZBP0FWPyR1bmlxdWVfcHRyQFZab25lSW5mb1NvdXJjZUBj
Y3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAVT8kZGVmYXVsdF9kZWxldGVAVlpvbmVJbmZvU291cmNl
QGNjdHpAdGltZV9pbnRlcm5hbEBhYnNsQEBAc3RkQEBAc3RkQEBBQlY/JGJhc2ljX3N0cmluZ0BE
VT8kY2hhcl90cmFpdHNAREBzdGRAQFY/JGFsbG9jYXRvckBEQDJAQDJAQFpANUBAWkE9P2RlZmF1
bHRfZmFjdG9yeUBjY3R6X2V4dGVuc2lvbkB0aW1lX2ludGVybmFsQGFic2xAQDNQNkE/QVY/JHVu
aXF1ZV9wdHJAVlpvbmVJbmZvU291cmNlQGNjdHpAdGltZV9pbnRlcm5hbEBhYnNsQEBVPyRkZWZh
dWx0X2RlbGV0ZUBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2ludGVybmFsQGFic2xAQEBzdGRA
QEBzdGRAQEFCVj8kYmFzaWNfc3RyaW5nQERVPyRjaGFyX3RyYWl0c0BEQHN0ZEBAVj8kYWxsb2Nh
dG9yQERAMkBANUBBQlY/JGZ1bmN0aW9uQCQkQTZBP0FWPyR1bmlxdWVfcHRyQFZab25lSW5mb1Nv
dXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAVT8kZGVmYXVsdF9kZWxldGVAVlpvbmVJbmZv
U291cmNlQGNjdHpAdGltZV9pbnRlcm5hbEBhYnNsQEBAc3RkQEBAc3RkQEBBQlY/JGJhc2ljX3N0
cmluZ0BEVT8kY2hhcl90cmFpdHNAREBzdGRAQFY/JGFsbG9jYXRvckBEQDJAQDJAQFpANUBAWkEi
KQotI2VsaWYgZGVmaW5lZChfTV9JQV82NCkgfHwgZGVmaW5lZChfTV9BTUQ2NCkKKyNlbGlmIGRl
ZmluZWQoX01fSUFfNjQpIHx8IGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQoX01fQVJNNjQp
CiAjcHJhZ21hIGNvbW1lbnQoIFwKICAgICBsaW5rZXIsICAgICAgXAogICAgICIvYWx0ZXJuYXRl
bmFtZTo/em9uZV9pbmZvX3NvdXJjZV9mYWN0b3J5QGNjdHpfZXh0ZW5zaW9uQHRpbWVfaW50ZXJu
YWxAYWJzbEBAM1A2QT9BVj8kdW5pcXVlX3B0ckBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2lu
dGVybmFsQGFic2xAQFU/JGRlZmF1bHRfZGVsZXRlQFZab25lSW5mb1NvdXJjZUBjY3R6QHRpbWVf
aW50ZXJuYWxAYWJzbEBAQHN0ZEBAQHN0ZEBAQUVCVj8kYmFzaWNfc3RyaW5nQERVPyRjaGFyX3Ry
YWl0c0BEQHN0ZEBAVj8kYWxsb2NhdG9yQERAMkBANUBBRUJWPyRmdW5jdGlvbkAkJEE2QT9BVj8k
dW5pcXVlX3B0ckBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2ludGVybmFsQGFic2xAQFU/JGRl
ZmF1bHRfZGVsZXRlQFZab25lSW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAQHN0
ZEBAQHN0ZEBAQUVCVj8kYmFzaWNfc3RyaW5nQERVPyRjaGFyX3RyYWl0c0BEQHN0ZEBAVj8kYWxs
b2NhdG9yQERAMkBAMkBAWkA1QEBaRUE9P2RlZmF1bHRfZmFjdG9yeUBjY3R6X2V4dGVuc2lvbkB0
aW1lX2ludGVybmFsQGFic2xAQDNQNkE/QVY/JHVuaXF1ZV9wdHJAVlpvbmVJbmZvU291cmNlQGNj
dHpAdGltZV9pbnRlcm5hbEBhYnNsQEBVPyRkZWZhdWx0X2RlbGV0ZUBWWm9uZUluZm9Tb3VyY2VA
Y2N0ekB0aW1lX2ludGVybmFsQGFic2xAQEBzdGRAQEBzdGRAQEFFQlY/JGJhc2ljX3N0cmluZ0BE
VT8kY2hhcl90cmFpdHNAREBzdGRAQFY/JGFsbG9jYXRvckBEQDJAQDVAQUVCVj8kZnVuY3Rpb25A
JCRBNkE/QVY/JHVuaXF1ZV9wdHJAVlpvbmVJbmZvU291cmNlQGNjdHpAdGltZV9pbnRlcm5hbEBh
YnNsQEBVPyRkZWZhdWx0X2RlbGV0ZUBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2ludGVybmFs
QGFic2xAQEBzdGRAQEBzdGRAQEFFQlY/JGJhc2ljX3N0cmluZ0BEVT8kY2hhcl90cmFpdHNAREBz
dGRAQFY/JGFsbG9jYXRvckBEQDJAQDJAQFpANUBAWkVBIikKICNlbHNlCiAjZXJyb3IgVW5zdXBw
b3J0ZWQgTVNWQyBwbGF0Zm9ybQotI2VuZGlmCi0jZWxzZSAgLy8gX01TQ19WRVIKLSNpZiAhZGVm
aW5lZChfX2hhc19hdHRyaWJ1dGUpCi0jZGVmaW5lIF9faGFzX2F0dHJpYnV0ZSh4KSAwCi0jZW5k
aWYKLSNpZiBfX2hhc19hdHRyaWJ1dGUod2VhaykgfHwgZGVmaW5lZChfX0dOVUNfXykKLVpvbmVJ
bmZvU291cmNlRmFjdG9yeSB6b25lX2luZm9fc291cmNlX2ZhY3RvcnkKLSAgICBfX2F0dHJpYnV0
ZV9fKCh3ZWFrKSkgPSBEZWZhdWx0RmFjdG9yeTsKKyNlbmRpZiAgLy8gX01fPFBMQVRGT1JNPgog
I2Vsc2UKIC8vIE1ha2UgaXQgYSAic3Ryb25nIiBkZWZpbml0aW9uIGlmIHdlIGhhdmUgbm8gb3Ro
ZXIgY2hvaWNlLgogWm9uZUluZm9Tb3VyY2VGYWN0b3J5IHpvbmVfaW5mb19zb3VyY2VfZmFjdG9y
eSA9IERlZmF1bHRGYWN0b3J5OwogI2VuZGlmCi0jZW5kaWYgIC8vIF9NU0NfVkVSCiAKIH0gIC8v
IG5hbWVzcGFjZSBjY3R6X2V4dGVuc2lvbgogfSAgLy8gbmFtZXNwYWNlIHRpbWVfaW50ZXJuYWwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvZ2V0X2N1cnJlbnRfdGltZV9jaHJvbm8u
aW5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9nZXRfY3VycmVudF90aW1lX2Nocm9uby5pbmMKaW5k
ZXggY2Y4ODRhMTBlZDlkOTg4ZGUwNDU4N2M4MDgwNTI4OGI4NzhkY2E3ZS4uNTE4MDIzMGRlZTU4
Y2Q3ZmRhZmI1ZGZmOGM4Y2FjOTJiOWVlODlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9nZXRfY3VycmVudF90aW1lX2Nocm9uby5pbmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9nZXRfY3VycmVudF90aW1lX2Nocm9uby5pbmMKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvdGVzdF91dGls
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC90ZXN0X3V0aWwuY2MKaW5kZXggYmJiZWY3ZGE3MGM0
NjlmOGQ0ZGI1NWQ5ZGJkMGMwNWY2MTA1OWI2Yi4uNTkxNjZhN2M4MmRkMjZhOWViZTdhYmNkZDIx
NzEyNjZiNTk4NmUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC90ZXN0X3V0aWwu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC90ZXN0X3V0aWwuY2MKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI2LDEyICsyNiw2IEBAIG5hbWVzcGFjZSBj
Y3R6ID0gYWJzbDo6dGltZV9pbnRlcm5hbDo6Y2N0ejsKIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVz
cGFjZSB0aW1lX2ludGVybmFsIHsKIAotI2lmIEdURVNUX1VTRVNfU0lNUExFX1JFCi1leHRlcm4g
Y29uc3QgY2hhciBrWm9uZUFiYnJSRVtdID0gIi4qIjsgIC8vIGp1c3QgcHVudAotI2Vsc2UKLWV4
dGVybiBjb25zdCBjaGFyIGtab25lQWJiclJFW10gPSAiW0EtWmEtel17Myw0fXxbLStdWzAtOV17
Mn0oWzAtOV17Mn0pPyI7Ci0jZW5kaWYKLQogVGltZVpvbmUgTG9hZFRpbWVab25lKGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lKSB7CiAgIFRpbWVab25lIHR6OwogICBBQlNMX1JBV19DSEVDSyhMb2Fk
VGltZVpvbmUobmFtZSwgJnR6KSwgbmFtZS5jX3N0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvdGVzdF91dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL3Rlc3RfdXRpbC5o
CmluZGV4IDhmZDVmYjlmZDAzODJlOGM0NDIzNzQ5ZDYwOWNjMjY5ZTVlMzk5ZDYuLmQ3MzE5ZWE4
ZjViYmEzYTBmZmRjZDQ1NTVhZWIwMDdhZGU4YTViYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvdGVzdF91dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC90ZXN0X3V0aWwu
aApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTcsMzUgKzE3
LDExIEBACiAKICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgot
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC90aW1lL3RpbWUuaCIKIAot
Ly8gVGhpcyBoZWxwZXIgaXMgYSBtYWNybyBzbyB0aGF0IGZhaWxlZCBleHBlY3RhdGlvbnMgc2hv
dyB1cCB3aXRoIHRoZQotLy8gY29ycmVjdCBsaW5lIG51bWJlcnMuCi0vLwotLy8gVGhpcyBpcyBm
b3IgaW50ZXJuYWwgdGVzdGluZyBvZiB0aGUgQmFzZSBUaW1lIGxpYnJhcnkgaXRzZWxmLiBUaGlz
IGlzIG5vdAotLy8gcGFydCBvZiBhIHB1YmxpYyBBUEkuCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxf
RVhQRUNUX1RJTUUoYmQsIHksIG0sIGQsIGgsIG1pbiwgcywgb2ZmLCBpc2RzdCkgICAgIFwKLSAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIEVYUEVDVF9FUSh5LCBiZC55ZWFyKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX0VRKG0sIGJk
Lm1vbnRoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICBFWFBFQ1RfRVEoZCwgYmQuZGF5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIEVYUEVDVF9FUShoLCBiZC5ob3VyKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX0VRKG1p
biwgYmQubWludXRlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICBFWFBFQ1RfRVEocywgYmQuc2Vjb25kKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIEVYUEVDVF9FUShvZmYsIGJkLm9mZnNldCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX0VR
KGlzZHN0LCBiZC5pc19kc3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBFWFBFQ1RfVEhBVChiZC56b25lX2FiYnIsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHRlc3Rpbmc6Ok1hdGNo
ZXNSZWdleChhYnNsOjp0aW1lX2ludGVybmFsOjprWm9uZUFiYnJSRSkpOyBcCi0gIH0gd2hpbGUg
KDApCi0KIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSB0aW1lX2ludGVybmFsIHsKIAotLy8g
QSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzIGFsbCB6b25lIGFiYnJldmlhdGlvbnMg
KCVaKS4KLWV4dGVybiBjb25zdCBjaGFyIGtab25lQWJiclJFW107Ci0KIC8vIExvYWRzIHRoZSBu
YW1lZCB0aW1lem9uZSwgYnV0IGRpZXMgb24gYW55IGZhaWx1cmUuCiBhYnNsOjpUaW1lWm9uZSBM
b2FkVGltZVpvbmUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL3RpbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWUuY2MKaW5kZXggNzFmZDhlZTZlNzQzNGRh
OWY5M2U2MWRhMmZlMzZmNzNjMWNjYWE2MC4uNmEzODdiY2VlNjFmY2JhZWI0NGRlZjY5YmYwM2Yz
ZDg4OTkyN2YzMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvdGltZS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
MjIsMTYgKzIyLDIxIEBACiAvLyBOT1RFOiBUbyBrZWVwIHR5cGUgdmVyYm9zaXR5IHRvIGEgbWlu
aW11bSwgdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBuYW1pbmcKIC8vIGNvbnZlbnRpb25zIGFyZSB1
c2VkIHRocm91Z2hvdXQgdGhpcyBmaWxlLgogLy8KLS8vIGN6OiBBIGNjdHo6OnRpbWVfem9uZQog
Ly8gdHo6IEFuIGFic2w6OlRpbWVab25lCisvLyBjaTogQW4gYWJzbDo6VGltZVpvbmU6OkNpdmls
SW5mbworLy8gdGk6IEFuIGFic2w6OlRpbWVab25lOjpUaW1lSW5mbworLy8gY2Q6IEFuIGFic2w6
OkNpdmlsRGF5IG9yIGEgY2N0ejo6Y2l2aWxfZGF5CisvLyBjczogQW4gYWJzbDo6Q2l2aWxTZWNv
bmQgb3IgYSBjY3R6OjpjaXZpbF9zZWNvbmQKKy8vIGJkOiBBbiBhYnNsOjpUaW1lOjpCcmVha2Rv
d24KIC8vIGNsOiBBIGNjdHo6OnRpbWVfem9uZTo6Y2l2aWxfbG9va3VwCiAvLyBhbDogQSBjY3R6
Ojp0aW1lX3pvbmU6OmFic29sdXRlX2xvb2t1cAotLy8gY2Q6IEEgY2N0ejo6Y2l2aWxfZGF5Ci0v
LyBjczogQSBjY3R6OjpjaXZpbF9zZWNvbmQKLS8vIGJkOiBBbiBhYnNsOjpUaW1lOjpCcmVha2Rv
d24KIAogI2luY2x1ZGUgImFic2wvdGltZS90aW1lLmgiCiAKKyNpZiBkZWZpbmVkKF9NU0NfVkVS
KQorI2luY2x1ZGUgPHdpbnNvY2syLmg+ICAvLyBmb3IgdGltZXZhbAorI2VuZGlmCisKICNpbmNs
dWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPGN0aW1lPgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTQw
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJhYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2Nj
dHovdGltZV96b25lLmgiCiAKIG5hbWVzcGFjZSBjY3R6ID0gYWJzbDo6dGltZV9pbnRlcm5hbDo6
Y2N0ejsKKwogbmFtZXNwYWNlIGFic2wgewogCiBuYW1lc3BhY2UgewpAQCAtNzUsNyArODEsNyBA
QCBpbmxpbmUgYWJzbDo6VGltZTo6QnJlYWtkb3duIEluZmluaXRlRnV0dXJlQnJlYWtkb3duKCkg
ewogICByZXR1cm4gYmQ7CiB9CiAKLWlubGluZSBUaW1lOjpCcmVha2Rvd24gSW5maW5pdGVQYXN0
QnJlYWtkb3duKCkgeworaW5saW5lIGFic2w6OlRpbWU6OkJyZWFrZG93biBJbmZpbml0ZVBhc3RC
cmVha2Rvd24oKSB7CiAgIFRpbWU6OkJyZWFrZG93biBiZDsKICAgYmQueWVhciA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpOwogICBiZC5tb250aCA9IDE7CkBAIC05Miw2ICs5
OCwyNiBAQCBpbmxpbmUgVGltZTo6QnJlYWtkb3duIEluZmluaXRlUGFzdEJyZWFrZG93bigpIHsK
ICAgcmV0dXJuIGJkOwogfQogCitpbmxpbmUgYWJzbDo6VGltZVpvbmU6OkNpdmlsSW5mbyBJbmZp
bml0ZUZ1dHVyZUNpdmlsSW5mbygpIHsKKyAgVGltZVpvbmU6OkNpdmlsSW5mbyBjaTsKKyAgY2ku
Y3MgPSBDaXZpbFNlY29uZDo6bWF4KCk7CisgIGNpLnN1YnNlY29uZCA9IEluZmluaXRlRHVyYXRp
b24oKTsKKyAgY2kub2Zmc2V0ID0gMDsKKyAgY2kuaXNfZHN0ID0gZmFsc2U7CisgIGNpLnpvbmVf
YWJiciA9ICItMDAiOworICByZXR1cm4gY2k7Cit9CisKK2lubGluZSBhYnNsOjpUaW1lWm9uZTo6
Q2l2aWxJbmZvIEluZmluaXRlUGFzdENpdmlsSW5mbygpIHsKKyAgVGltZVpvbmU6OkNpdmlsSW5m
byBjaTsKKyAgY2kuY3MgPSBDaXZpbFNlY29uZDo6bWluKCk7CisgIGNpLnN1YnNlY29uZCA9IC1J
bmZpbml0ZUR1cmF0aW9uKCk7CisgIGNpLm9mZnNldCA9IDA7CisgIGNpLmlzX2RzdCA9IGZhbHNl
OworICBjaS56b25lX2FiYnIgPSAiLTAwIjsKKyAgcmV0dXJuIGNpOworfQorCiBpbmxpbmUgYWJz
bDo6VGltZUNvbnZlcnNpb24gSW5maW5pdGVGdXR1cmVUaW1lQ29udmVyc2lvbigpIHsKICAgYWJz
bDo6VGltZUNvbnZlcnNpb24gdGM7CiAgIHRjLnByZSA9IHRjLnRyYW5zID0gdGMucG9zdCA9IGFi
c2w6OkluZmluaXRlRnV0dXJlKCk7CkBAIC0xMzQsMTkgKzE2MCw2IEBAIFRpbWUgTWFrZVRpbWVX
aXRoT3ZlcmZsb3coY29uc3QgY2N0ejo6dGltZV9wb2ludDxjY3R6OjpzZWNvbmRzPiYgc2VjLAog
ICByZXR1cm4gdGltZV9pbnRlcm5hbDo6RnJvbVVuaXhEdXJhdGlvbih0aW1lX2ludGVybmFsOjpN
YWtlRHVyYXRpb24oaGkpKTsKIH0KIAotaW5saW5lIGFic2w6OlRpbWVDb252ZXJzaW9uOjpLaW5k
IE1hcEtpbmQoCi0gICAgY29uc3QgY2N0ejo6dGltZV96b25lOjpjaXZpbF9sb29rdXA6OmNpdmls
X2tpbmQmIGtpbmQpIHsKLSAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBjY3R6Ojp0aW1lX3pv
bmU6OmNpdmlsX2xvb2t1cDo6VU5JUVVFOgotICAgICAgcmV0dXJuIGFic2w6OlRpbWVDb252ZXJz
aW9uOjpVTklRVUU7Ci0gICAgY2FzZSBjY3R6Ojp0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6U0tJ
UFBFRDoKLSAgICAgIHJldHVybiBhYnNsOjpUaW1lQ29udmVyc2lvbjo6U0tJUFBFRDsKLSAgICBj
YXNlIGNjdHo6OnRpbWVfem9uZTo6Y2l2aWxfbG9va3VwOjpSRVBFQVRFRDoKLSAgICAgIHJldHVy
biBhYnNsOjpUaW1lQ29udmVyc2lvbjo6UkVQRUFURUQ7Ci0gIH0KLSAgcmV0dXJuIGFic2w6OlRp
bWVDb252ZXJzaW9uOjpVTklRVUU7Ci19Ci0KIC8vIFJldHVybnMgTW9uPTEuLlN1bj03LgogaW5s
aW5lIGludCBNYXBXZWVrZGF5KGNvbnN0IGNjdHo6OndlZWtkYXkmIHdkKSB7CiAgIHN3aXRjaCAo
d2QpIHsKQEAgLTE2OCwxMSArMTgxLDI5IEBAIGlubGluZSBpbnQgTWFwV2Vla2RheShjb25zdCBj
Y3R6Ojp3ZWVrZGF5JiB3ZCkgewogICByZXR1cm4gMTsKIH0KIAorYm9vbCBGaW5kVHJhbnNpdGlv
bihjb25zdCBjY3R6Ojp0aW1lX3pvbmUmIHR6LAorICAgICAgICAgICAgICAgICAgICBib29sIChj
Y3R6Ojp0aW1lX3pvbmU6OipmaW5kX3RyYW5zaXRpb24pKAorICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2N0ejo6dGltZV9wb2ludDxjY3R6OjpzZWNvbmRzPiYgdHAsCisgICAgICAgICAg
ICAgICAgICAgICAgICBjY3R6Ojp0aW1lX3pvbmU6OmNpdmlsX3RyYW5zaXRpb24qIHRyYW5zKSBj
b25zdCwKKyAgICAgICAgICAgICAgICAgICAgVGltZSB0LCBUaW1lWm9uZTo6Q2l2aWxUcmFuc2l0
aW9uKiB0cmFucykgeworICAvLyBUcmFuc2l0aW9ucyBhcmUgc2Vjb25kLWFsaWduZWQsIHNvIHdl
IGNhbiBkaXNjYXJkIGFueSBmcmFjdGlvbmFsIHBhcnQuCisgIGNvbnN0IGF1dG8gdHAgPSB1bml4
X2Vwb2NoKCkgKyBjY3R6OjpzZWNvbmRzKFRvVW5peFNlY29uZHModCkpOworICBjY3R6Ojp0aW1l
X3pvbmU6OmNpdmlsX3RyYW5zaXRpb24gdHI7CisgIGlmICghKHR6LipmaW5kX3RyYW5zaXRpb24p
KHRwLCAmdHIpKSByZXR1cm4gZmFsc2U7CisgIHRyYW5zLT5mcm9tID0gQ2l2aWxTZWNvbmQodHIu
ZnJvbSk7CisgIHRyYW5zLT50byA9IENpdmlsU2Vjb25kKHRyLnRvKTsKKyAgcmV0dXJuIHRydWU7
Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogCisvLworLy8gVGltZQorLy8KKwogYWJzbDo6VGltZTo6
QnJlYWtkb3duIFRpbWU6OkluKGFic2w6OlRpbWVab25lIHR6KSBjb25zdCB7Ci0gIGlmICgqdGhp
cyA9PSBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpKSByZXR1cm4gYWJzbDo6SW5maW5pdGVGdXR1cmVC
cmVha2Rvd24oKTsKLSAgaWYgKCp0aGlzID09IGFic2w6OkluZmluaXRlUGFzdCgpKSByZXR1cm4g
YWJzbDo6SW5maW5pdGVQYXN0QnJlYWtkb3duKCk7CisgIGlmICgqdGhpcyA9PSBhYnNsOjpJbmZp
bml0ZUZ1dHVyZSgpKSByZXR1cm4gSW5maW5pdGVGdXR1cmVCcmVha2Rvd24oKTsKKyAgaWYgKCp0
aGlzID09IGFic2w6OkluZmluaXRlUGFzdCgpKSByZXR1cm4gSW5maW5pdGVQYXN0QnJlYWtkb3du
KCk7CiAKICAgY29uc3QgYXV0byB0cCA9IHVuaXhfZXBvY2goKSArIGNjdHo6OnNlY29uZHModGlt
ZV9pbnRlcm5hbDo6R2V0UmVwSGkocmVwXykpOwogICBjb25zdCBhdXRvIGFsID0gY2N0ejo6dGlt
ZV96b25lKHR6KS5sb29rdXAodHApOwpAQCAtMTg3LDkyICsyMTgsMTggQEAgYWJzbDo6VGltZTo6
QnJlYWtkb3duIFRpbWU6OkluKGFic2w6OlRpbWVab25lIHR6KSBjb25zdCB7CiAgIGJkLm1pbnV0
ZSA9IGNzLm1pbnV0ZSgpOwogICBiZC5zZWNvbmQgPSBjcy5zZWNvbmQoKTsKICAgYmQuc3Vic2Vj
b25kID0gdGltZV9pbnRlcm5hbDo6TWFrZUR1cmF0aW9uKDAsIHRpbWVfaW50ZXJuYWw6OkdldFJl
cExvKHJlcF8pKTsKLSAgYmQud2Vla2RheSA9IE1hcFdlZWtkYXkoZ2V0X3dlZWtkYXkoY2QpKTsK
LSAgYmQueWVhcmRheSA9IGdldF95ZWFyZGF5KGNkKTsKKyAgYmQud2Vla2RheSA9IE1hcFdlZWtk
YXkoY2N0ejo6Z2V0X3dlZWtkYXkoY2QpKTsKKyAgYmQueWVhcmRheSA9IGNjdHo6OmdldF95ZWFy
ZGF5KGNkKTsKICAgYmQub2Zmc2V0ID0gYWwub2Zmc2V0OwogICBiZC5pc19kc3QgPSBhbC5pc19k
c3Q7CiAgIGJkLnpvbmVfYWJiciA9IGFsLmFiYnI7CiAgIHJldHVybiBiZDsKIH0KIAotYWJzbDo6
VGltZSBGcm9tVE0oY29uc3Qgc3RydWN0IHRtJiB0bSwgYWJzbDo6VGltZVpvbmUgdHopIHsKLSAg
Y29uc3QgYXV0byBjeiA9IGNjdHo6OnRpbWVfem9uZSh0eik7Ci0gIGNvbnN0IGF1dG8gY3MgPQot
ICAgICAgY2N0ejo6Y2l2aWxfc2Vjb25kKHRtLnRtX3llYXIgKyAxOTAwLCB0bS50bV9tb24gKyAx
LCB0bS50bV9tZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgIHRtLnRtX2hvdXIsIHRtLnRt
X21pbiwgdG0udG1fc2VjKTsKLSAgY29uc3QgYXV0byBjbCA9IGN6Lmxvb2t1cChjcyk7Ci0gIGNv
bnN0IGF1dG8gdHAgPSB0bS50bV9pc2RzdCA9PSAwID8gY2wucG9zdCA6IGNsLnByZTsKLSAgcmV0
dXJuIE1ha2VUaW1lV2l0aE92ZXJmbG93KHRwLCBjcywgY3opOwotfQotCi1zdHJ1Y3QgdG0gVG9U
TShhYnNsOjpUaW1lIHQsIGFic2w6OlRpbWVab25lIHR6KSB7Ci0gIGNvbnN0IGFic2w6OlRpbWU6
OkJyZWFrZG93biBiZCA9IHQuSW4odHopOwotICBzdHJ1Y3QgdG0gdG07Ci0gIHN0ZDo6bWVtc2V0
KCZ0bSwgMCwgc2l6ZW9mKHRtKSk7Ci0gIHRtLnRtX3NlYyA9IGJkLnNlY29uZDsKLSAgdG0udG1f
bWluID0gYmQubWludXRlOwotICB0bS50bV9ob3VyID0gYmQuaG91cjsKLSAgdG0udG1fbWRheSA9
IGJkLmRheTsKLSAgdG0udG1fbW9uID0gYmQubW9udGggLSAxOwotCi0gIC8vIFNhdHVyYXRlcyB0
bS50bV95ZWFyIGluIGNhc2VzIG9mIG92ZXIvdW5kZXJmbG93LCBhY2NvdW50aW5nIGZvciB0aGUg
ZmFjdAotICAvLyB0aGF0IHRtLnRtX3llYXIgaXMgeWVhcnMgc2luY2UgMTkwMC4KLSAgaWYgKGJk
LnllYXIgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpICsgMTkwMCkgewotICAgIHRt
LnRtX3llYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOwotICB9IGVsc2UgaWYg
KGJkLnllYXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSB7Ci0gICAgdG0udG1f
eWVhciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkgLSAxOTAwOwotICB9IGVsc2Ug
ewotICAgIHRtLnRtX3llYXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGJkLnllYXIgLSAxOTAwKTsKLSAg
fQotCi0gIHRtLnRtX3dkYXkgPSBiZC53ZWVrZGF5ICUgNzsKLSAgdG0udG1feWRheSA9IGJkLnll
YXJkYXkgLSAxOwotICB0bS50bV9pc2RzdCA9IGJkLmlzX2RzdCA/IDEgOiAwOwotCi0gIHJldHVy
biB0bTsKLX0KLQogLy8KLS8vIEZhY3RvcnkgZnVuY3Rpb25zLgorLy8gQ29udmVyc2lvbnMgZnJv
bS90byBvdGhlciB0aW1lIHR5cGVzLgogLy8KIAotYWJzbDo6VGltZUNvbnZlcnNpb24gQ29udmVy
dERhdGVUaW1lKGludDY0X3QgeWVhciwgaW50IG1vbiwgaW50IGRheSwgaW50IGhvdXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbiwgaW50IHNlYywgVGltZVpv
bmUgdHopIHsKLSAgLy8gQXZvaWRzIHllYXJzIHRoYXQgYXJlIHRvbyBleHRyZW1lIGZvciBjaXZp
bF9zZWNvbmQgdG8gbm9ybWFsaXplLgotICBpZiAoeWVhciA+IDMwMDAwMDAwMDAwMCkgcmV0dXJu
IEluZmluaXRlRnV0dXJlVGltZUNvbnZlcnNpb24oKTsKLSAgaWYgKHllYXIgPCAtMzAwMDAwMDAw
MDAwKSByZXR1cm4gSW5maW5pdGVQYXN0VGltZUNvbnZlcnNpb24oKTsKLSAgY29uc3QgYXV0byBj
eiA9IGNjdHo6OnRpbWVfem9uZSh0eik7Ci0gIGNvbnN0IGF1dG8gY3MgPSBjY3R6OjpjaXZpbF9z
ZWNvbmQoeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjKTsKLSAgYWJzbDo6VGltZUNvbnZl
cnNpb24gdGM7Ci0gIHRjLm5vcm1hbGl6ZWQgPSB5ZWFyICE9IGNzLnllYXIoKSB8fCBtb24gIT0g
Y3MubW9udGgoKSB8fCBkYXkgIT0gY3MuZGF5KCkgfHwKLSAgICAgICAgICAgICAgICAgIGhvdXIg
IT0gY3MuaG91cigpIHx8IG1pbiAhPSBjcy5taW51dGUoKSB8fCBzZWMgIT0gY3Muc2Vjb25kKCk7
Ci0gIGNvbnN0IGF1dG8gY2wgPSBjei5sb29rdXAoY3MpOwotICAvLyBDb252ZXJ0cyB0aGUgY2l2
aWxfbG9va3VwIHN0cnVjdCB0byBhIFRpbWVDb252ZXJzaW9uLgotICB0Yy5wcmUgPSBNYWtlVGlt
ZVdpdGhPdmVyZmxvdyhjbC5wcmUsIGNzLCBjeiwgJnRjLm5vcm1hbGl6ZWQpOwotICB0Yy50cmFu
cyA9IE1ha2VUaW1lV2l0aE92ZXJmbG93KGNsLnRyYW5zLCBjcywgY3osICZ0Yy5ub3JtYWxpemVk
KTsKLSAgdGMucG9zdCA9IE1ha2VUaW1lV2l0aE92ZXJmbG93KGNsLnBvc3QsIGNzLCBjeiwgJnRj
Lm5vcm1hbGl6ZWQpOwotICB0Yy5raW5kID0gTWFwS2luZChjbC5raW5kKTsKLSAgcmV0dXJuIHRj
OwotfQotCi1hYnNsOjpUaW1lIEZyb21EYXRlVGltZShpbnQ2NF90IHllYXIsIGludCBtb24sIGlu
dCBkYXksIGludCBob3VyLCBpbnQgbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNl
YywgVGltZVpvbmUgdHopIHsKLSAgaWYgKHllYXIgPiAzMDAwMDAwMDAwMDApIHJldHVybiBJbmZp
bml0ZUZ1dHVyZSgpOwotICBpZiAoeWVhciA8IC0zMDAwMDAwMDAwMDApIHJldHVybiBJbmZpbml0
ZVBhc3QoKTsKLSAgY29uc3QgYXV0byBjeiA9IGNjdHo6OnRpbWVfem9uZSh0eik7Ci0gIGNvbnN0
IGF1dG8gY3MgPSBjY3R6OjpjaXZpbF9zZWNvbmQoeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwg
c2VjKTsKLSAgY29uc3QgYXV0byBjbCA9IGN6Lmxvb2t1cChjcyk7Ci0gIHJldHVybiBNYWtlVGlt
ZVdpdGhPdmVyZmxvdyhjbC5wcmUsIGNzLCBjeik7Ci19Ci0KLWFic2w6OlRpbWUgVGltZUZyb21U
aW1lc3BlYyh0aW1lc3BlYyB0cykgewotICByZXR1cm4gdGltZV9pbnRlcm5hbDo6RnJvbVVuaXhE
dXJhdGlvbihhYnNsOjpEdXJhdGlvbkZyb21UaW1lc3BlYyh0cykpOwotfQotCi1hYnNsOjpUaW1l
IFRpbWVGcm9tVGltZXZhbCh0aW1ldmFsIHR2KSB7Ci0gIHJldHVybiB0aW1lX2ludGVybmFsOjpG
cm9tVW5peER1cmF0aW9uKGFic2w6OkR1cmF0aW9uRnJvbVRpbWV2YWwodHYpKTsKLX0KLQogYWJz
bDo6VGltZSBGcm9tVURhdGUoZG91YmxlIHVkYXRlKSB7CiAgIHJldHVybiB0aW1lX2ludGVybmFs
OjpGcm9tVW5peER1cmF0aW9uKGFic2w6Ok1pbGxpc2Vjb25kcyh1ZGF0ZSkpOwogfQpAQCAtMjgx
LDEwICsyMzgsNiBAQCBhYnNsOjpUaW1lIEZyb21Vbml2ZXJzYWwoaW50NjRfdCB1bml2ZXJzYWwp
IHsKICAgcmV0dXJuIGFic2w6OlVuaXZlcnNhbEVwb2NoKCkgKyAxMDAgKiBhYnNsOjpOYW5vc2Vj
b25kcyh1bml2ZXJzYWwpOwogfQogCi0vLwotLy8gQ29udmVyc2lvbiB0byBvdGhlciB0aW1lIHR5
cGVzLgotLy8KLQogaW50NjRfdCBUb1VuaXhOYW5vcyhUaW1lIHQpIHsKICAgaWYgKHRpbWVfaW50
ZXJuYWw6OkdldFJlcEhpKHRpbWVfaW50ZXJuYWw6OlRvVW5peER1cmF0aW9uKHQpKSA+PSAwICYm
CiAgICAgICB0aW1lX2ludGVybmFsOjpHZXRSZXBIaSh0aW1lX2ludGVybmFsOjpUb1VuaXhEdXJh
dGlvbih0KSkgPj4gMzMgPT0gMCkgewpAQCAtMzIxLDYgKzI3NCwyMyBAQCBpbnQ2NF90IFRvVW5p
eFNlY29uZHMoVGltZSB0KSB7CiAKIHRpbWVfdCBUb1RpbWVUKFRpbWUgdCkgeyByZXR1cm4gYWJz
bDo6VG9UaW1lc3BlYyh0KS50dl9zZWM7IH0KIAorZG91YmxlIFRvVURhdGUoVGltZSB0KSB7Cisg
IHJldHVybiBhYnNsOjpGRGl2RHVyYXRpb24odGltZV9pbnRlcm5hbDo6VG9Vbml4RHVyYXRpb24o
dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6TWlsbGlzZWNvbmRzKDEpKTsK
K30KKworaW50NjRfdCBUb1VuaXZlcnNhbChhYnNsOjpUaW1lIHQpIHsKKyAgcmV0dXJuIGFic2w6
OkZsb29yVG9Vbml0KHQgLSBhYnNsOjpVbml2ZXJzYWxFcG9jaCgpLCBhYnNsOjpOYW5vc2Vjb25k
cygxMDApKTsKK30KKworYWJzbDo6VGltZSBUaW1lRnJvbVRpbWVzcGVjKHRpbWVzcGVjIHRzKSB7
CisgIHJldHVybiB0aW1lX2ludGVybmFsOjpGcm9tVW5peER1cmF0aW9uKGFic2w6OkR1cmF0aW9u
RnJvbVRpbWVzcGVjKHRzKSk7Cit9CisKK2Fic2w6OlRpbWUgVGltZUZyb21UaW1ldmFsKHRpbWV2
YWwgdHYpIHsKKyAgcmV0dXJuIHRpbWVfaW50ZXJuYWw6OkZyb21Vbml4RHVyYXRpb24oYWJzbDo6
RHVyYXRpb25Gcm9tVGltZXZhbCh0dikpOworfQorCiB0aW1lc3BlYyBUb1RpbWVzcGVjKFRpbWUg
dCkgewogICB0aW1lc3BlYyB0czsKICAgYWJzbDo6RHVyYXRpb24gZCA9IHRpbWVfaW50ZXJuYWw6
OlRvVW5peER1cmF0aW9uKHQpOwpAQCAtMzU5LDE1ICszMjksNiBAQCB0aW1ldmFsIFRvVGltZXZh
bChUaW1lIHQpIHsKICAgcmV0dXJuIHR2OwogfQogCi1kb3VibGUgVG9VRGF0ZShUaW1lIHQpIHsK
LSAgcmV0dXJuIGFic2w6OkZEaXZEdXJhdGlvbih0aW1lX2ludGVybmFsOjpUb1VuaXhEdXJhdGlv
bih0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpNaWxsaXNlY29uZHMoMSkp
OwotfQotCi1pbnQ2NF90IFRvVW5pdmVyc2FsKGFic2w6OlRpbWUgdCkgewotICByZXR1cm4gYWJz
bDo6Rmxvb3JUb1VuaXQodCAtIGFic2w6OlVuaXZlcnNhbEVwb2NoKCksIGFic2w6Ok5hbm9zZWNv
bmRzKDEwMCkpOwotfQotCiBUaW1lIEZyb21DaHJvbm8oY29uc3Qgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCYgdHApIHsKICAgcmV0dXJuIHRpbWVfaW50ZXJuYWw6OkZyb21V
bml4RHVyYXRpb24odGltZV9pbnRlcm5hbDo6RnJvbUNocm9ubygKICAgICAgIHRwIC0gc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoMCkpKTsKQEAgLTM4MSw0ICszNDIsMTQ4
IEBAIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgVG9DaHJvbm9UaW1lKGFi
c2w6OlRpbWUgdCkgewogICAgICAgICAgdGltZV9pbnRlcm5hbDo6VG9DaHJvbm9EdXJhdGlvbjxE
PihkKTsKIH0KIAorLy8KKy8vIFRpbWVab25lCisvLworCithYnNsOjpUaW1lWm9uZTo6Q2l2aWxJ
bmZvIFRpbWVab25lOjpBdChUaW1lIHQpIGNvbnN0IHsKKyAgaWYgKHQgPT0gYWJzbDo6SW5maW5p
dGVGdXR1cmUoKSkgcmV0dXJuIEluZmluaXRlRnV0dXJlQ2l2aWxJbmZvKCk7CisgIGlmICh0ID09
IGFic2w6OkluZmluaXRlUGFzdCgpKSByZXR1cm4gSW5maW5pdGVQYXN0Q2l2aWxJbmZvKCk7CisK
KyAgY29uc3QgYXV0byB1ZCA9IHRpbWVfaW50ZXJuYWw6OlRvVW5peER1cmF0aW9uKHQpOworICBj
b25zdCBhdXRvIHRwID0gdW5peF9lcG9jaCgpICsgY2N0ejo6c2Vjb25kcyh0aW1lX2ludGVybmFs
OjpHZXRSZXBIaSh1ZCkpOworICBjb25zdCBhdXRvIGFsID0gY3pfLmxvb2t1cCh0cCk7CisKKyAg
VGltZVpvbmU6OkNpdmlsSW5mbyBjaTsKKyAgY2kuY3MgPSBDaXZpbFNlY29uZChhbC5jcyk7Cisg
IGNpLnN1YnNlY29uZCA9IHRpbWVfaW50ZXJuYWw6Ok1ha2VEdXJhdGlvbigwLCB0aW1lX2ludGVy
bmFsOjpHZXRSZXBMbyh1ZCkpOworICBjaS5vZmZzZXQgPSBhbC5vZmZzZXQ7CisgIGNpLmlzX2Rz
dCA9IGFsLmlzX2RzdDsKKyAgY2kuem9uZV9hYmJyID0gYWwuYWJicjsKKyAgcmV0dXJuIGNpOwor
fQorCithYnNsOjpUaW1lWm9uZTo6VGltZUluZm8gVGltZVpvbmU6OkF0KENpdmlsU2Vjb25kIGN0
KSBjb25zdCB7CisgIGNvbnN0IGNjdHo6OmNpdmlsX3NlY29uZCBjcyhjdCk7CisgIGNvbnN0IGF1
dG8gY2wgPSBjel8ubG9va3VwKGNzKTsKKworICBUaW1lWm9uZTo6VGltZUluZm8gdGk7CisgIHN3
aXRjaCAoY2wua2luZCkgeworICAgIGNhc2UgY2N0ejo6dGltZV96b25lOjpjaXZpbF9sb29rdXA6
OlVOSVFVRToKKyAgICAgIHRpLmtpbmQgPSBUaW1lWm9uZTo6VGltZUluZm86OlVOSVFVRTsKKyAg
ICAgIGJyZWFrOworICAgIGNhc2UgY2N0ejo6dGltZV96b25lOjpjaXZpbF9sb29rdXA6OlNLSVBQ
RUQ6CisgICAgICB0aS5raW5kID0gVGltZVpvbmU6OlRpbWVJbmZvOjpTS0lQUEVEOworICAgICAg
YnJlYWs7CisgICAgY2FzZSBjY3R6Ojp0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6UkVQRUFURUQ6
CisgICAgICB0aS5raW5kID0gVGltZVpvbmU6OlRpbWVJbmZvOjpSRVBFQVRFRDsKKyAgICAgIGJy
ZWFrOworICB9CisgIHRpLnByZSA9IE1ha2VUaW1lV2l0aE92ZXJmbG93KGNsLnByZSwgY3MsIGN6
Xyk7CisgIHRpLnRyYW5zID0gTWFrZVRpbWVXaXRoT3ZlcmZsb3coY2wudHJhbnMsIGNzLCBjel8p
OworICB0aS5wb3N0ID0gTWFrZVRpbWVXaXRoT3ZlcmZsb3coY2wucG9zdCwgY3MsIGN6Xyk7Cisg
IHJldHVybiB0aTsKK30KKworYm9vbCBUaW1lWm9uZTo6TmV4dFRyYW5zaXRpb24oVGltZSB0LCBD
aXZpbFRyYW5zaXRpb24qIHRyYW5zKSBjb25zdCB7CisgIHJldHVybiBGaW5kVHJhbnNpdGlvbihj
el8sICZjY3R6Ojp0aW1lX3pvbmU6Om5leHRfdHJhbnNpdGlvbiwgdCwgdHJhbnMpOworfQorCiti
b29sIFRpbWVab25lOjpQcmV2VHJhbnNpdGlvbihUaW1lIHQsIENpdmlsVHJhbnNpdGlvbiogdHJh
bnMpIGNvbnN0IHsKKyAgcmV0dXJuIEZpbmRUcmFuc2l0aW9uKGN6XywgJmNjdHo6OnRpbWVfem9u
ZTo6cHJldl90cmFuc2l0aW9uLCB0LCB0cmFucyk7Cit9CisKKy8vCisvLyBDb252ZXJzaW9ucyBp
bnZvbHZpbmcgdGltZSB6b25lcy4KKy8vCisKK2Fic2w6OlRpbWVDb252ZXJzaW9uIENvbnZlcnRE
YXRlVGltZShpbnQ2NF90IHllYXIsIGludCBtb24sIGludCBkYXksIGludCBob3VyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW4sIGludCBzZWMsIFRpbWVab25l
IHR6KSB7CisgIC8vIEF2b2lkcyB5ZWFycyB0aGF0IGFyZSB0b28gZXh0cmVtZSBmb3IgQ2l2aWxT
ZWNvbmQgdG8gbm9ybWFsaXplLgorICBpZiAoeWVhciA+IDMwMDAwMDAwMDAwMCkgcmV0dXJuIElu
ZmluaXRlRnV0dXJlVGltZUNvbnZlcnNpb24oKTsKKyAgaWYgKHllYXIgPCAtMzAwMDAwMDAwMDAw
KSByZXR1cm4gSW5maW5pdGVQYXN0VGltZUNvbnZlcnNpb24oKTsKKworICBjb25zdCBDaXZpbFNl
Y29uZCBjcyh5ZWFyLCBtb24sIGRheSwgaG91ciwgbWluLCBzZWMpOworICBjb25zdCBhdXRvIHRp
ID0gdHouQXQoY3MpOworCisgIFRpbWVDb252ZXJzaW9uIHRjOworICB0Yy5wcmUgPSB0aS5wcmU7
CisgIHRjLnRyYW5zID0gdGkudHJhbnM7CisgIHRjLnBvc3QgPSB0aS5wb3N0OworICBzd2l0Y2gg
KHRpLmtpbmQpIHsKKyAgICBjYXNlIFRpbWVab25lOjpUaW1lSW5mbzo6VU5JUVVFOgorICAgICAg
dGMua2luZCA9IFRpbWVDb252ZXJzaW9uOjpVTklRVUU7CisgICAgICBicmVhazsKKyAgICBjYXNl
IFRpbWVab25lOjpUaW1lSW5mbzo6U0tJUFBFRDoKKyAgICAgIHRjLmtpbmQgPSBUaW1lQ29udmVy
c2lvbjo6U0tJUFBFRDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgVGltZVpvbmU6OlRpbWVJbmZv
OjpSRVBFQVRFRDoKKyAgICAgIHRjLmtpbmQgPSBUaW1lQ29udmVyc2lvbjo6UkVQRUFURUQ7Cisg
ICAgICBicmVhazsKKyAgfQorICB0Yy5ub3JtYWxpemVkID0gZmFsc2U7CisgIGlmICh5ZWFyICE9
IGNzLnllYXIoKSB8fCBtb24gIT0gY3MubW9udGgoKSB8fCBkYXkgIT0gY3MuZGF5KCkgfHwKKyAg
ICAgIGhvdXIgIT0gY3MuaG91cigpIHx8IG1pbiAhPSBjcy5taW51dGUoKSB8fCBzZWMgIT0gY3Mu
c2Vjb25kKCkpIHsKKyAgICB0Yy5ub3JtYWxpemVkID0gdHJ1ZTsKKyAgfQorICByZXR1cm4gdGM7
Cit9CisKK2Fic2w6OlRpbWUgRnJvbVRNKGNvbnN0IHN0cnVjdCB0bSYgdG0sIGFic2w6OlRpbWVa
b25lIHR6KSB7CisgIGNvbnN0IENpdmlsU2Vjb25kIGNzKHRtLnRtX3llYXIgKyAxOTAwLCB0bS50
bV9tb24gKyAxLCB0bS50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICB0bS50bV9ob3Vy
LCB0bS50bV9taW4sIHRtLnRtX3NlYyk7CisgIGNvbnN0IGF1dG8gdGkgPSB0ei5BdChjcyk7Cisg
IHJldHVybiB0bS50bV9pc2RzdCA9PSAwID8gdGkucG9zdCA6IHRpLnByZTsKK30KKworc3RydWN0
IHRtIFRvVE0oYWJzbDo6VGltZSB0LCBhYnNsOjpUaW1lWm9uZSB0eikgeworICBzdHJ1Y3QgdG0g
dG0gPSB7fTsKKworICBjb25zdCBhdXRvIGNpID0gdHouQXQodCk7CisgIGNvbnN0IGF1dG8mIGNz
ID0gY2kuY3M7CisgIHRtLnRtX3NlYyA9IGNzLnNlY29uZCgpOworICB0bS50bV9taW4gPSBjcy5t
aW51dGUoKTsKKyAgdG0udG1faG91ciA9IGNzLmhvdXIoKTsKKyAgdG0udG1fbWRheSA9IGNzLmRh
eSgpOworICB0bS50bV9tb24gPSBjcy5tb250aCgpIC0gMTsKKworICAvLyBTYXR1cmF0ZXMgdG0u
dG1feWVhciBpbiBjYXNlcyBvZiBvdmVyL3VuZGVyZmxvdywgYWNjb3VudGluZyBmb3IgdGhlIGZh
Y3QKKyAgLy8gdGhhdCB0bS50bV95ZWFyIGlzIHllYXJzIHNpbmNlIDE5MDAuCisgIGlmIChjcy55
ZWFyKCkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpICsgMTkwMCkgeworICAgIHRt
LnRtX3llYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOworICB9IGVsc2UgaWYg
KGNzLnllYXIoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpIHsKKyAgICB0bS50
bV95ZWFyID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSAtIDE5MDA7CisgIH0gZWxz
ZSB7CisgICAgdG0udG1feWVhciA9IHN0YXRpY19jYXN0PGludD4oY3MueWVhcigpIC0gMTkwMCk7
CisgIH0KKworICBzd2l0Y2ggKEdldFdlZWtkYXkoY3MpKSB7CisgICAgY2FzZSBXZWVrZGF5Ojpz
dW5kYXk6CisgICAgICB0bS50bV93ZGF5ID0gMDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vl
a2RheTo6bW9uZGF5OgorICAgICAgdG0udG1fd2RheSA9IDE7CisgICAgICBicmVhazsKKyAgICBj
YXNlIFdlZWtkYXk6OnR1ZXNkYXk6CisgICAgICB0bS50bV93ZGF5ID0gMjsKKyAgICAgIGJyZWFr
OworICAgIGNhc2UgV2Vla2RheTo6d2VkbmVzZGF5OgorICAgICAgdG0udG1fd2RheSA9IDM7Cisg
ICAgICBicmVhazsKKyAgICBjYXNlIFdlZWtkYXk6OnRodXJzZGF5OgorICAgICAgdG0udG1fd2Rh
eSA9IDQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIFdlZWtkYXk6OmZyaWRheToKKyAgICAgIHRt
LnRtX3dkYXkgPSA1OworICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWVrZGF5OjpzYXR1cmRheToK
KyAgICAgIHRtLnRtX3dkYXkgPSA2OworICAgICAgYnJlYWs7CisgIH0KKyAgdG0udG1feWRheSA9
IEdldFllYXJEYXkoY3MpIC0gMTsKKyAgdG0udG1faXNkc3QgPSBjaS5pc19kc3QgPyAxIDogMDsK
KworICByZXR1cm4gdG07Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL3RpbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZS5oCmluZGV4IDUwYmY5NzFkZjBhMjlj
YjQ3NTBhZWY3MGMxMWU3MDU0NDc2NDZhMjIuLmNlYmJjOTFiOGZmM2JiOWEzNGY3YTU4MTI5YTgw
MGM3Mzk5NjBiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvdGltZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0y
NSwxOCArMjUsMjkgQEAKIC8vICAqIGBhYnNsOjpUaW1lWm9uZWAgZGVmaW5lcyBnZW9wb2xpdGlj
YWwgdGltZSB6b25lIHJlZ2lvbnMgKGFzIGNvbGxlY3RlZAogLy8gICAgIHdpdGhpbiB0aGUgSUFO
QSBUaW1lIFpvbmUgZGF0YWJhc2UgKGh0dHBzOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMpKS4K
IC8vCisvLyBOb3RlOiBBYnNvbHV0ZSB0aW1lcyBhcmUgZGlzdGluY3QgZnJvbSBjaXZpbCB0aW1l
cywgd2hpY2ggcmVmZXIgdG8gdGhlCisvLyBodW1hbi1zY2FsZSB0aW1lIGNvbW1vbmx5IHJlcHJl
c2VudGVkIGJ5IGBZWVlZLU1NLUREIGhoOm1tOnNzYC4gVGhlIG1hcHBpbmcKKy8vIGJldHdlZW4g
YWJzb2x1dGUgYW5kIGNpdmlsIHRpbWVzIGNhbiBiZSBzcGVjaWZpZWQgYnkgdXNlIG9mIHRpbWUg
em9uZXMKKy8vIChgYWJzbDo6VGltZVpvbmVgIHdpdGhpbiB0aGlzIEFQSSkuIFRoYXQgaXM6Cisv
LworLy8gICBDaXZpbCBUaW1lID0gRihBYnNvbHV0ZSBUaW1lLCBUaW1lIFpvbmUpCisvLyAgIEFi
c29sdXRlIFRpbWUgPSBHKENpdmlsIFRpbWUsIFRpbWUgWm9uZSkKKy8vCisvLyBTZWUgY2l2aWxf
dGltZS5oIGZvciBhYnN0cmFjdGlvbnMgcmVsYXRlZCB0byBjb25zdHJ1Y3RpbmcgYW5kIG1hbmlw
dWxhdGluZworLy8gY2l2aWwgdGltZS4KIC8vCiAvLyBFeGFtcGxlOgogLy8KIC8vICAgYWJzbDo6
VGltZVpvbmUgbnljOwotLy8KIC8vICAgLy8gTG9hZFRpbWVab25lKCkgbWF5IGZhaWwgc28gaXQn
cyBhbHdheXMgYmV0dGVyIHRvIGNoZWNrIGZvciBzdWNjZXNzLgogLy8gICBpZiAoIWFic2w6Okxv
YWRUaW1lWm9uZSgiQW1lcmljYS9OZXdfWW9yayIsICZueWMpKSB7CiAvLyAgICAgIC8vIGhhbmRs
ZSBlcnJvciBjYXNlCiAvLyAgIH0KIC8vCiAvLyAgIC8vIE15IGZsaWdodCBsZWF2ZXMgTllDIG9u
IEphbiAyLCAyMDE3IGF0IDAzOjA0OjA1Ci0vLyAgIGFic2w6OlRpbWUgdGFrZW9mZiA9IGFic2w6
OkZyb21EYXRlVGltZSgyMDE3LCAxLCAyLCAzLCA0LCA1LCBueWMpOworLy8gICBhYnNsOjpDaXZp
bFNlY29uZCBjcygyMDE3LCAxLCAyLCAzLCA0LCA1KTsKKy8vICAgYWJzbDo6VGltZSB0YWtlb2Zm
ID0gYWJzbDo6RnJvbUNpdmlsKGNzLCBueWMpOworLy8KIC8vICAgYWJzbDo6RHVyYXRpb24gZmxp
Z2h0X2R1cmF0aW9uID0gYWJzbDo6SG91cnMoMjEpICsgYWJzbDo6TWludXRlcygzNSk7CiAvLyAg
IGFic2w6OlRpbWUgbGFuZGluZyA9IHRha2VvZmYgKyBmbGlnaHRfZHVyYXRpb247CiAvLwpAQCAt
NDcsMTYgKzU4LDI0IEBACiAvLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpGb3JtYXRUaW1lKAog
Ly8gICAgICAgIk15IGZsaWdodCB3aWxsIGxhbmQgaW4gU3lkbmV5IG9uICVZLSVtLSVkIGF0ICVI
OiVNOiVTIiwKIC8vICAgICAgIGxhbmRpbmcsIHN5ZCk7Ci0vLworCiAjaWZuZGVmIEFCU0xfVElN
RV9USU1FX0hfCiAjZGVmaW5lIEFCU0xfVElNRV9USU1FX0hfCiAKICNpZiAhZGVmaW5lZChfTVND
X1ZFUikKICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2Vsc2UKLSNpbmNsdWRlIDx3aW5zb2NrMi5o
PgorLy8gV2UgZG9uJ3QgaW5jbHVkZSBgd2luc29jazIuaGAgYmVjYXVzZSBpdCBkcmFncyBpbiBg
d2luZG93cy5oYCBhbmQgZnJpZW5kcywKKy8vIGFuZCB0aGV5IGRlZmluZSBjb25mbGljdGluZyBt
YWNyb3MgbGlrZSBPUEFRVUUsIEVSUk9SLCBhbmQgbW9yZS4gVGhpcyBoYXMgdGhlCisvLyBwb3Rl
bnRpYWwgdG8gYnJlYWsgQWJzZWlsIHVzZXJzLgorLy8KKy8vIEluc3RlYWQgd2Ugb25seSBmb3J3
YXJkIGRlY2xhcmUgYHRpbWV2YWxgIGFuZCByZXF1aXJlIFdpbmRvd3MgdXNlcnMgaW5jbHVkZQor
Ly8gYHdpbnNvY2syLmhgIHRoZW1zZWx2ZXMuIFRoaXMgaXMgYm90aCBpbmNvbnNpc3RlbnQgYW5k
IHRyb3VibGVzb21lLCBidXQgc28gaXMKKy8vIGluY2x1ZGluZyAnd2luZG93cy5oJyBzbyB3ZSBh
cmUgcGlja2luZyB0aGUgbGVzc2VyIG9mIHR3byBldmlscyBoZXJlLgorc3RydWN0IHRpbWV2YWw7
CiAjZW5kaWYKICNpbmNsdWRlIDxjaHJvbm8+ICAvLyBOT0xJTlQoYnVpbGQvYysrMTEpCisjaW5j
bHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxjdGltZT4KICNpbmNs
dWRlIDxvc3RyZWFtPgpAQCAtNjQsOCArODMsOCBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpbmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIiAgLy8gTmVl
ZGVkIGZvciBzdHJpbmcgdnMgc3RkOjpzdHJpbmcKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Ry
aW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNsL3RpbWUvY2l2aWxfdGltZS5oIgogI2luY2x1ZGUg
ImFic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei90aW1lX3pvbmUuaCIKIAogbmFt
ZXNwYWNlIGFic2wgewpAQCAtMTQwLDYgKzE1OSwxNiBAQCBjbGFzcyBEdXJhdGlvbiB7CiAgIC8v
IFZhbHVlIHNlbWFudGljcy4KICAgY29uc3RleHByIER1cmF0aW9uKCkgOiByZXBfaGlfKDApLCBy
ZXBfbG9fKDApIHt9ICAvLyB6ZXJvLWxlbmd0aCBkdXJhdGlvbgogCisgIC8vIENvcHlhYmxlLgor
I2lmICFkZWZpbmVkKF9fY2xhbmdfXykgJiYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIg
PCAxOTEwCisgIC8vIEV4cGxpY2l0bHkgZGVmaW5pbmcgdGhlIGNvbnN0ZXhwciBjb3B5IGNvbnN0
cnVjdG9yIGF2b2lkcyBhbiBNU1ZDIGJ1Zy4KKyAgY29uc3RleHByIER1cmF0aW9uKGNvbnN0IER1
cmF0aW9uJiBkKQorICAgICAgOiByZXBfaGlfKGQucmVwX2hpXyksIHJlcF9sb18oZC5yZXBfbG9f
KSB7fQorI2Vsc2UKKyAgY29uc3RleHByIER1cmF0aW9uKGNvbnN0IER1cmF0aW9uJiBkKSA9IGRl
ZmF1bHQ7CisjZW5kaWYKKyAgRHVyYXRpb24mIG9wZXJhdG9yPShjb25zdCBEdXJhdGlvbiYgZCkg
PSBkZWZhdWx0OworCiAgIC8vIENvbXBvdW5kIGFzc2lnbm1lbnQgb3BlcmF0b3JzLgogICBEdXJh
dGlvbiYgb3BlcmF0b3IrPShEdXJhdGlvbiBkKTsKICAgRHVyYXRpb24mIG9wZXJhdG9yLT0oRHVy
YXRpb24gZCk7CkBAIC0xNTAsNiArMTc5LDcgQEAgY2xhc3MgRHVyYXRpb24gewogICBEdXJhdGlv
biYgb3BlcmF0b3IlPShEdXJhdGlvbiByaHMpOwogCiAgIC8vIE92ZXJsb2FkcyB0aGF0IGZvcndh
cmQgdG8gZWl0aGVyIHRoZSBpbnQ2NF90IG9yIGRvdWJsZSBvdmVybG9hZHMgYWJvdmUuCisgIC8v
IEludGVnZXIgb3BlcmFuZHMgbXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIGludDY0X3QuCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBEdXJhdGlvbiYgb3BlcmF0b3IqPShUIHIpIHsKICAgICBp
bnQ2NF90IHggPSByOwpAQCAtMTkyLDYgKzIyMiw3IEBAIGlubGluZSBEdXJhdGlvbiBvcGVyYXRv
cisoRHVyYXRpb24gbGhzLCBEdXJhdGlvbiByaHMpIHsgcmV0dXJuIGxocyArPSByaHM7IH0KIGlu
bGluZSBEdXJhdGlvbiBvcGVyYXRvci0oRHVyYXRpb24gbGhzLCBEdXJhdGlvbiByaHMpIHsgcmV0
dXJuIGxocyAtPSByaHM7IH0KIAogLy8gTXVsdGlwbGljYXRpdmUgT3BlcmF0b3JzCisvLyBJbnRl
Z2VyIG9wZXJhbmRzIG11c3QgYmUgcmVwcmVzZW50YWJsZSBhcyBpbnQ2NF90LgogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBEdXJhdGlvbiBvcGVyYXRvciooRHVyYXRpb24gbGhzLCBUIHJocykgewog
ICByZXR1cm4gbGhzICo9IHJoczsKQEAgLTM0NiwxMyArMzc3LDE0IEBAIGNvbnN0ZXhwciBEdXJh
dGlvbiBJbmZpbml0ZUR1cmF0aW9uKCk7CiAvLyBIb3VycygpCiAvLwogLy8gRmFjdG9yeSBmdW5j
dGlvbnMgZm9yIGNvbnN0cnVjdGluZyBgRHVyYXRpb25gIHZhbHVlcyBmcm9tIGFuIGludGVncmFs
IG51bWJlcgotLy8gb2YgdGhlIHVuaXQgaW5kaWNhdGVkIGJ5IHRoZSBmYWN0b3J5IGZ1bmN0aW9u
J3MgbmFtZS4KLS8vCi0vLyBOb3RlOiBubyAiRGF5cygpIiBmYWN0b3J5IGZ1bmN0aW9uIGV4aXN0
cyBiZWNhdXNlICJhIGRheSIgaXMgYW1iaWd1b3VzLiBDaXZpbAotLy8gZGF5cyBhcmUgbm90IGFs
d2F5cyAyNCBob3VycyBsb25nLCBhbmQgYSAyNC1ob3VyIGR1cmF0aW9uIG9mdGVuIGRvZXMgbm90
Ci0vLyBjb3JyZXNwb25kIHdpdGggYSBjaXZpbCBkYXkuIElmIGEgMjQtaG91ciBkdXJhdGlvbiBp
cyBuZWVkZWQsIHVzZQotLy8gYGFic2w6OkhvdXJzKDI0KWAuCisvLyBvZiB0aGUgdW5pdCBpbmRp
Y2F0ZWQgYnkgdGhlIGZhY3RvcnkgZnVuY3Rpb24ncyBuYW1lLiBUaGUgbnVtYmVyIG11c3QgYmUK
Ky8vIHJlcHJlc2VudGFibGUgYXMgaW50NjRfdC4KIC8vCisvLyBOT1RFOiBubyAiRGF5cygpIiBm
YWN0b3J5IGZ1bmN0aW9uIGV4aXN0cyBiZWNhdXNlICJhIGRheSIgaXMgYW1iaWd1b3VzLgorLy8g
Q2l2aWwgZGF5cyBhcmUgbm90IGFsd2F5cyAyNCBob3VycyBsb25nLCBhbmQgYSAyNC1ob3VyIGR1
cmF0aW9uIG9mdGVuIGRvZXMKKy8vIG5vdCBjb3JyZXNwb25kIHdpdGggYSBjaXZpbCBkYXkuIElm
IGEgMjQtaG91ciBkdXJhdGlvbiBpcyBuZWVkZWQsIHVzZQorLy8gYGFic2w6OkhvdXJzKDI0KWAu
IElmIHlvdSBhY3R1YWxseSB3YW50IGEgY2l2aWwgZGF5LCB1c2UgYWJzbDo6Q2l2aWxEYXkKKy8v
IGZyb20gY2l2aWxfdGltZS5oLgogLy8KIC8vIEV4YW1wbGU6CiAvLwpAQCAtMzcxLDYgKzQwMyw3
IEBAIGNvbnN0ZXhwciBEdXJhdGlvbiBIb3VycyhpbnQ2NF90IG4pOwogLy8gZmFjdG9yaWVzLCB3
aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLgogLy8KIC8vIEV4YW1wbGU6CisvLwogLy8gICBhdXRv
IGEgPSBhYnNsOjpTZWNvbmRzKDEuNSk7ICAgICAgICAvLyBPSwogLy8gICBhdXRvIGIgPSBhYnNs
OjpNaWxsaXNlY29uZHMoMTUwMCk7ICAvLyBCRVRURVIKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
aW1lX2ludGVybmFsOjpFbmFibGVJZkZsb2F0PFQ+ID0gMD4KQEAgLTM4NywxMSArNDIwLDEzIEBA
IER1cmF0aW9uIE1pbGxpc2Vjb25kcyhUIG4pIHsKIH0KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
aW1lX2ludGVybmFsOjpFbmFibGVJZkZsb2F0PFQ+ID0gMD4KIER1cmF0aW9uIFNlY29uZHMoVCBu
KSB7Ci0gIGlmIChuID49IDApIHsKLSAgICBpZiAobiA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptYXgoKSkgcmV0dXJuIEluZmluaXRlRHVyYXRpb24oKTsKKyAgaWYgKG4gPj0gMCkg
eyAgLy8gTm90ZTogYE5hTiA+PSAwYCBpcyBmYWxzZS4KKyAgICBpZiAobiA+PSAoc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KSgpKSByZXR1cm4gSW5maW5pdGVEdXJhdGlvbigpOwog
ICAgIHJldHVybiB0aW1lX2ludGVybmFsOjpNYWtlUG9zRG91YmxlRHVyYXRpb24obik7CiAgIH0g
ZWxzZSB7Ci0gICAgaWYgKG4gPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkp
IHJldHVybiAtSW5maW5pdGVEdXJhdGlvbigpOworICAgIGlmIChzdGQ6OmlzbmFuKG4pKQorICAg
ICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChuKSA/IC1JbmZpbml0ZUR1cmF0aW9uKCkgOiBJbmZpbml0
ZUR1cmF0aW9uKCk7CisgICAgaWYgKG4gPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46
Om1pbikoKSkgcmV0dXJuIC1JbmZpbml0ZUR1cmF0aW9uKCk7CiAgICAgcmV0dXJuIC10aW1lX2lu
dGVybmFsOjpNYWtlUG9zRG91YmxlRHVyYXRpb24oLW4pOwogICB9CiB9CkBAIC01NDMsMTAgKzU3
OCw5IEBAIHN0ZDo6c3RyaW5nIFVucGFyc2VGbGFnKER1cmF0aW9uIGQpOwogLy8gVGhlIGBhYnNs
OjpUaW1lYCBjbGFzcyByZXByZXNlbnRzIGFuIGluc3RhbnQgaW4gdGltZSBhcyBhIGNvdW50IG9m
IGNsb2NrCiAvLyB0aWNrcyBvZiBzb21lIGdyYW51bGFyaXR5IChyZXNvbHV0aW9uKSBmcm9tIHNv
bWUgc3RhcnRpbmcgcG9pbnQgKGVwb2NoKS4KIC8vCi0vLwogLy8gYGFic2w6OlRpbWVgIHVzZXMg
YSByZXNvbHV0aW9uIHRoYXQgaXMgaGlnaCBlbm91Z2ggdG8gYXZvaWQgbG9zcyBpbgogLy8gcHJl
Y2lzaW9uLCBhbmQgYSByYW5nZSB0aGF0IGlzIHdpZGUgZW5vdWdoIHRvIGF2b2lkIG92ZXJmbG93
LCB3aGVuCi0vLyBjb252ZXJ0aW5nIGJldHdlZW4gdGljayBjb3VudHMgaW4gbW9zdCBHb29nbGUg
dGltZSBzY2FsZXMgKGkuZS4sIHByZWNpc2lvbgorLy8gY29udmVydGluZyBiZXR3ZWVuIHRpY2sg
Y291bnRzIGluIG1vc3QgR29vZ2xlIHRpbWUgc2NhbGVzIChpLmUuLCByZXNvbHV0aW9uCiAvLyBv
ZiBhdCBsZWFzdCBvbmUgbmFub3NlY29uZCwgYW5kIHJhbmdlICsvLTEwMCBiaWxsaW9uIHllYXJz
KS4gIENvbnZlcnNpb25zCiAvLyBiZXR3ZWVuIHRoZSB0aW1lIHNjYWxlcyBhcmUgcGVyZm9ybWVk
IGJ5IHRydW5jYXRpbmcgKHRvd2FyZHMgbmVnYXRpdmUKIC8vIGluZmluaXR5KSB0byB0aGUgbmVh
cmVzdCByZXByZXNlbnRhYmxlIHBvaW50LgpAQCAtNTU2LDcgKzU5MCw2IEBAIHN0ZDo6c3RyaW5n
IFVucGFyc2VGbGFnKER1cmF0aW9uIGQpOwogLy8gICBhYnNsOjpUaW1lIHQxID0gLi4uOwogLy8g
ICBhYnNsOjpUaW1lIHQyID0gdDEgKyBhYnNsOjpNaW51dGVzKDIpOwogLy8gICBhYnNsOjpEdXJh
dGlvbiBkID0gdDIgLSB0MTsgIC8vID09IGFic2w6Ok1pbnV0ZXMoMikKLS8vICAgYWJzbDo6VGlt
ZTo6QnJlYWtkb3duIGJkID0gdDEuSW4oYWJzbDo6TG9jYWxUaW1lWm9uZSgpKTsKIC8vCiBjbGFz
cyBUaW1lIHsKICBwdWJsaWM6CkBAIC01NzEsNyArNjA0LDExIEBAIGNsYXNzIFRpbWUgewogICAv
LyAgIGFic2w6OlRpbWUgdCA9IGFic2w6Ok5vdygpOwogICAvLyAgIGFic2w6OlRpbWUgdCA9IGFi
c2w6OlRpbWVGcm9tVGltZXZhbCh0dik7CiAgIC8vICAgYWJzbDo6VGltZSB0ID0gYWJzbDo6SW5m
aW5pdGVQYXN0KCk7Ci0gIGNvbnN0ZXhwciBUaW1lKCkge30KKyAgY29uc3RleHByIFRpbWUoKSA9
IGRlZmF1bHQ7CisKKyAgLy8gQ29weWFibGUuCisgIGNvbnN0ZXhwciBUaW1lKGNvbnN0IFRpbWUm
IHQpID0gZGVmYXVsdDsKKyAgVGltZSYgb3BlcmF0b3I9KGNvbnN0IFRpbWUmIHQpID0gZGVmYXVs
dDsKIAogICAvLyBBc3NpZ25tZW50IG9wZXJhdG9ycy4KICAgVGltZSYgb3BlcmF0b3IrPShEdXJh
dGlvbiBkKSB7CkBAIC01OTAsNyArNjI3LDEwIEBAIGNsYXNzIFRpbWUgewogICAvLyBpbnRlbmRl
ZCB0byByZXByZXNlbnQgYW4gaW5zdGFudCBpbiB0aW1lLiBTbywgcmF0aGVyIHRoYW4gcGFzc2lu
ZwogICAvLyBhIGBUaW1lOjpCcmVha2Rvd25gIHRvIGEgZnVuY3Rpb24sIHBhc3MgYW4gYGFic2w6
OlRpbWVgIGFuZCBhbgogICAvLyBgYWJzbDo6VGltZVpvbmVgLgotICBzdHJ1Y3QgQnJlYWtkb3du
IHsKKyAgLy8KKyAgLy8gRGVwcmVjYXRlZC4gVXNlIGBhYnNsOjpUaW1lWm9uZTo6Q2l2aWxJbmZv
YC4KKyAgc3RydWN0CisgICAgICBCcmVha2Rvd24gewogICAgIGludDY0X3QgeWVhcjsgICAgICAg
ICAgLy8geWVhciAoZS5nLiwgMjAxMykKICAgICBpbnQgbW9udGg7ICAgICAgICAgICAvLyBtb250
aCBvZiB5ZWFyIFsxOjEyXQogICAgIGludCBkYXk7ICAgICAgICAgICAgIC8vIGRheSBvZiBtb250
aCBbMTozMV0KQEAgLTYxNCw2ICs2NTQsOCBAQCBjbGFzcyBUaW1lIHsKICAgLy8gVGltZTo6SW4o
KQogICAvLwogICAvLyBSZXR1cm5zIHRoZSBicmVha2Rvd24gb2YgdGhpcyBpbnN0YW50IGluIHRo
ZSBnaXZlbiBUaW1lWm9uZS4KKyAgLy8KKyAgLy8gRGVwcmVjYXRlZC4gVXNlIGBhYnNsOjpUaW1l
Wm9uZTo6QXQoVGltZSlgLgogICBCcmVha2Rvd24gSW4oVGltZVpvbmUgdHopIGNvbnN0OwogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBIPgpAQCAtNjY4LDcgKzcxMCw3IEBAIGNvbnN0ZXhwciBUaW1l
IFVuaXZlcnNhbEVwb2NoKCkgewogLy8gUmV0dXJucyBhbiBgYWJzbDo6VGltZWAgdGhhdCBpcyBp
bmZpbml0ZWx5IGZhciBpbiB0aGUgZnV0dXJlLgogY29uc3RleHByIFRpbWUgSW5maW5pdGVGdXR1
cmUoKSB7CiAgIHJldHVybiBUaW1lKAotICAgICAgdGltZV9pbnRlcm5hbDo6TWFrZUR1cmF0aW9u
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCB+MFUpKTsKKyAgICAgIHRpbWVf
aW50ZXJuYWw6Ok1ha2VEdXJhdGlvbigoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4
KSgpLCB+MFUpKTsKIH0KIAogLy8gSW5maW5pdGVQYXN0KCkKQEAgLTY3NiwxMjkgKzcxOCw5IEBA
IGNvbnN0ZXhwciBUaW1lIEluZmluaXRlRnV0dXJlKCkgewogLy8gUmV0dXJucyBhbiBgYWJzbDo6
VGltZWAgdGhhdCBpcyBpbmZpbml0ZWx5IGZhciBpbiB0aGUgcGFzdC4KIGNvbnN0ZXhwciBUaW1l
IEluZmluaXRlUGFzdCgpIHsKICAgcmV0dXJuIFRpbWUoCi0gICAgICB0aW1lX2ludGVybmFsOjpN
YWtlRHVyYXRpb24oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIH4wVSkpOwor
ICAgICAgdGltZV9pbnRlcm5hbDo6TWFrZUR1cmF0aW9uKChzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptaW4pKCksIH4wVSkpOwogfQogCi0vLyBUaW1lQ29udmVyc2lvbgotLy8KLS8vIEFu
IGBhYnNsOjpUaW1lQ29udmVyc2lvbmAgcmVwcmVzZW50cyB0aGUgY29udmVyc2lvbiBvZiB5ZWFy
LCBtb250aCwgZGF5LAotLy8gaG91ciwgbWludXRlLCBhbmQgc2Vjb25kIHZhbHVlcyAoaS5lLiwg
YSBjaXZpbCB0aW1lKSwgaW4gYSBwYXJ0aWN1bGFyCi0vLyBgYWJzbDo6VGltZVpvbmVgLCB0byBh
IHRpbWUgaW5zdGFudCAoYW4gYWJzb2x1dGUgdGltZSksIGFzIHJldHVybmVkIGJ5Ci0vLyBgYWJz
bDo6Q29udmVydERhdGVUaW1lKClgLiAoU3Vic2Vjb25kcyBtdXN0IGJlIGhhbmRsZWQgc2VwYXJh
dGVseS4pCi0vLwotLy8gSXQgaXMgcG9zc2libGUsIHRob3VnaCwgZm9yIGEgY2FsbGVyIHRvIHRy
eSB0byBjb252ZXJ0IHZhbHVlcyB0aGF0Ci0vLyBkbyBub3QgcmVwcmVzZW50IGFuIGFjdHVhbCBv
ciB1bmlxdWUgaW5zdGFudCBpbiB0aW1lIChkdWUgdG8gYSBzaGlmdAotLy8gaW4gVVRDIG9mZnNl
dCBpbiB0aGUgYGFic2w6OlRpbWVab25lYCwgd2hpY2ggcmVzdWx0cyBpbiBhIGRpc2NvbnRpbnVp
dHkgaW4KLS8vIHRoZSBjaXZpbC10aW1lIGNvbXBvbmVudHMpLiBGb3IgZXhhbXBsZSwgYSBkYXls
aWdodC1zYXZpbmctdGltZQotLy8gdHJhbnNpdGlvbiBza2lwcyBvciByZXBlYXRzIGNpdmlsIHRp
bWVzLS0taW4gdGhlIFVuaXRlZCBTdGF0ZXMsIE1hcmNoCi0vLyAxMywgMjAxMSAwMjoxNSBuZXZl
ciBvY2N1cnJlZCwgd2hpbGUgTm92ZW1iZXIgNiwgMjAxMSAwMToxNSBvY2N1cnJlZAotLy8gdHdp
Y2UtLS1zbyByZXF1ZXN0cyBmb3Igc3VjaCB0aW1lcyBhcmUgbm90IHdlbGwtZGVmaW5lZC4KLS8v
Ci0vLyBUbyBhY2NvdW50IGZvciB0aGVzZSBwb3NzaWJpbGl0aWVzLCBgYWJzbDo6VGltZUNvbnZl
cnNpb25gIGlzIHJpY2hlcgotLy8gdGhhbiBqdXN0IGEgc2luZ2xlIGBhYnNsOjpUaW1lYC4gV2hl
biB0aGUgY2l2aWwgdGltZSBpcyBza2lwcGVkIG9yCi0vLyByZXBlYXRlZCwgYGFic2w6OkNvbnZl
cnREYXRlVGltZSgpYCByZXR1cm5zIHRpbWVzIGNhbGN1bGF0ZWQgdXNpbmcgdGhlCi0vLyBwcmUt
dHJhbnNpdGlvbiBhbmQgcG9zdC10cmFuc2l0aW9uIFVUQyBvZmZzZXRzLCBwbHVzIHRoZSB0cmFu
c2l0aW9uCi0vLyB0aW1lIGl0c2VsZi4KLS8vCi0vLyBFeGFtcGxlczoKLS8vCi0vLyAgIGFic2w6
OlRpbWVab25lIGxheDsKLS8vICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9z
X0FuZ2VsZXMiLCAmbGF4KSkgewotLy8gICAgIC8vIGhhbmRsZSBlcnJvciBjYXNlCi0vLyAgIH0K
LS8vCi0vLyAgIC8vIEEgdW5pcXVlIGNpdmlsIHRpbWUKLS8vICAgYWJzbDo6VGltZUNvbnZlcnNp
b24gamFuMDEgPQotLy8gICAgICAgYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTEsIDEsIDEsIDAs
IDAsIDAsIGxheCk7Ci0vLyAgIC8vIGphbjAxLmtpbmQgPT0gVGltZUNvbnZlcnNpb246OlVOSVFV
RQotLy8gICAvLyBqYW4wMS5wcmUgICAgaXMgMjAxMS8wMS8wMSAwMDowMDowMCAtMDgwMAotLy8g
ICAvLyBqYW4wMS50cmFucyAgaXMgMjAxMS8wMS8wMSAwMDowMDowMCAtMDgwMAotLy8gICAvLyBq
YW4wMS5wb3N0ICAgaXMgMjAxMS8wMS8wMSAwMDowMDowMCAtMDgwMAotLy8KLS8vICAgLy8gQSBT
cHJpbmcgRFNUIHRyYW5zaXRpb24sIHdoZW4gdGhlcmUgaXMgYSBnYXAgaW4gY2l2aWwgdGltZQot
Ly8gICBhYnNsOjpUaW1lQ29udmVyc2lvbiBtYXIxMyA9Ci0vLyAgICAgICBhYnNsOjpDb252ZXJ0
RGF0ZVRpbWUoMjAxMSwgMywgMTMsIDIsIDE1LCAwLCBsYXgpOwotLy8gICAvLyBtYXIxMy5raW5k
ID09IFRpbWVDb252ZXJzaW9uOjpTS0lQUEVECi0vLyAgIC8vIG1hcjEzLnByZSAgIGlzIDIwMTEv
MDMvMTMgMDM6MTU6MDAgLTA3MDAKLS8vICAgLy8gbWFyMTMudHJhbnMgaXMgMjAxMS8wMy8xMyAw
MzowMDowMCAtMDcwMAotLy8gICAvLyBtYXIxMy5wb3N0ICBpcyAyMDExLzAzLzEzIDAxOjE1OjAw
IC0wODAwCi0vLwotLy8gICAvLyBBIEZhbGwgRFNUIHRyYW5zaXRpb24sIHdoZW4gY2l2aWwgdGlt
ZXMgYXJlIHJlcGVhdGVkCi0vLyAgIGFic2w6OlRpbWVDb252ZXJzaW9uIG5vdjA2ID0KLS8vICAg
ICAgIGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDExLCAxMSwgNiwgMSwgMTUsIDAsIGxheCk7Ci0v
LyAgIC8vIG5vdjA2LmtpbmQgPT0gVGltZUNvbnZlcnNpb246OlJFUEVBVEVECi0vLyAgIC8vIG5v
djA2LnByZSAgIGlzIDIwMTEvMTEvMDYgMDE6MTU6MDAgLTA3MDAKLS8vICAgLy8gbm92MDYudHJh
bnMgaXMgMjAxMS8xMS8wNiAwMTowMDowMCAtMDgwMAotLy8gICAvLyBub3YwNi5wb3N0ICBpcyAy
MDExLzExLzA2IDAxOjE1OjAwIC0wODAwCi0vLwotLy8gVGhlIGlucHV0IG1vbnRoLCBkYXksIGhv
dXIsIG1pbnV0ZSwgYW5kIHNlY29uZCB2YWx1ZXMgY2FuIGFsc28gYmUKLS8vIG91dHNpZGUgb2Yg
dGhlaXIgdmFsaWQgcmFuZ2VzLCBpbiB3aGljaCBjYXNlIHRoZXkgd2lsbCBiZSAibm9ybWFsaXpl
ZCIKLS8vIGR1cmluZyB0aGUgY29udmVyc2lvbi4KLS8vCi0vLyBFeGFtcGxlOgotLy8KLS8vICAg
Ly8gIk9jdG9iZXIgMzIiIG5vcm1hbGl6ZXMgdG8gIk5vdmVtYmVyIDEiLgotLy8gICBhYnNsOjpU
aW1lWm9uZSB0eiA9IGFic2w6OkxvY2FsVGltZVpvbmUoKTsKLS8vICAgYWJzbDo6VGltZUNvbnZl
cnNpb24gdGMgPQotLy8gICAgICAgYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDEwLCAzMiwg
OCwgMzAsIDAsIHR6KTsKLS8vICAgLy8gdGMua2luZCA9PSBUaW1lQ29udmVyc2lvbjo6VU5JUVVF
ICYmIHRjLm5vcm1hbGl6ZWQgPT0gdHJ1ZQotLy8gICAvLyB0Yy5wcmUuSW4odHopLm1vbnRoID09
IDExICYmIHRjLnByZS5Jbih0eikuZGF5ID09IDEKLXN0cnVjdCBUaW1lQ29udmVyc2lvbiB7Ci0g
IFRpbWUgcHJlOyAgICAvLyB0aW1lIGNhbGN1bGF0ZWQgdXNpbmcgdGhlIHByZS10cmFuc2l0aW9u
IG9mZnNldAotICBUaW1lIHRyYW5zOyAgLy8gd2hlbiB0aGUgY2l2aWwtdGltZSBkaXNjb250aW51
aXR5IG9jY3VycmVkCi0gIFRpbWUgcG9zdDsgICAvLyB0aW1lIGNhbGN1bGF0ZWQgdXNpbmcgdGhl
IHBvc3QtdHJhbnNpdGlvbiBvZmZzZXQKLQotICBlbnVtIEtpbmQgewotICAgIFVOSVFVRSwgICAg
Ly8gdGhlIGNpdmlsIHRpbWUgd2FzIHNpbmd1bGFyIChwcmUgPT0gdHJhbnMgPT0gcG9zdCkKLSAg
ICBTS0lQUEVELCAgIC8vIHRoZSBjaXZpbCB0aW1lIGRpZCBub3QgZXhpc3QKLSAgICBSRVBFQVRF
RCwgIC8vIHRoZSBjaXZpbCB0aW1lIHdhcyBhbWJpZ3VvdXMKLSAgfTsKLSAgS2luZCBraW5kOwot
Ci0gIGJvb2wgbm9ybWFsaXplZDsgIC8vIGlucHV0IHZhbHVlcyB3ZXJlIG91dHNpZGUgdGhlaXIg
dmFsaWQgcmFuZ2VzCi19OwotCi0vLyBDb252ZXJ0RGF0ZVRpbWUoKQotLy8KLS8vIFRoZSBmdWxs
IGdlbmVyYWxpdHkgb2YgYSBjaXZpbCB0aW1lIHRvIGFic2w6OlRpbWUgY29udmVyc2lvbi4KLVRp
bWVDb252ZXJzaW9uIENvbnZlcnREYXRlVGltZShpbnQ2NF90IHllYXIsIGludCBtb24sIGludCBk
YXksIGludCBob3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW4sIGlu
dCBzZWMsIFRpbWVab25lIHR6KTsKLQotLy8gRnJvbURhdGVUaW1lKCkKLS8vCi0vLyBBIGNvbnZl
bmllbmNlIHdyYXBwZXIgZm9yIGBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoKWAgdGhhdCBzaW1wbHkg
cmV0dXJucyB0aGUKLS8vICJwcmUiIGBhYnNsOjpUaW1lYC4gIFRoYXQgaXMsIHRoZSB1bmlxdWUg
cmVzdWx0LCBvciB0aGUgaW5zdGFudCB0aGF0Ci0vLyBpcyBjb3JyZWN0IHVzaW5nIHRoZSBwcmUt
dHJhbnNpdGlvbiBvZmZzZXQgKGFzIGlmIHRoZSB0cmFuc2l0aW9uCi0vLyBuZXZlciBoYXBwZW5l
ZCkuIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBhbnN3ZXIgdGhhdCBodW1hbnMgZXhwZWN0ZWQgd2hl
bgotLy8gZmFjZWQgd2l0aCBub24tdW5pcXVlIHRpbWVzLCBzdWNoIGFzIG5lYXIgZGF5bGlnaHQt
c2F2aW5nIHRpbWUgdHJhbnNpdGlvbnMuCi0vLwotLy8gRXhhbXBsZToKLS8vCi0vLyAgIGFic2w6
OlRpbWVab25lIHNlYXR0bGU7Ci0vLyAgIGlmICghYWJzbDo6TG9hZFRpbWVab25lKCJBbWVyaWNh
L0xvc19BbmdlbGVzIiwgJnNlYXR0bGUpKSB7Ci0vLyAgICAgLy8gaGFuZGxlIGVycm9yIGNhc2UK
LS8vICAgfQotLy8gICBhYnNsOjpUaW1lIHQgPSAgYWJzbDo6RnJvbURhdGVUaW1lKDIwMTcsIDks
IDI2LCA5LCAzMCwgMCwgc2VhdHRsZSk7Ci1UaW1lIEZyb21EYXRlVGltZShpbnQ2NF90IHllYXIs
IGludCBtb24sIGludCBkYXksIGludCBob3VyLCBpbnQgbWluLCBpbnQgc2VjLAotICAgICAgICAg
ICAgICAgICAgVGltZVpvbmUgdHopOwotCi0vLyBGcm9tVE0oKQotLy8KLS8vIENvbnZlcnRzIHRo
ZSBgdG1feWVhcmAsIGB0bV9tb25gLCBgdG1fbWRheWAsIGB0bV9ob3VyYCwgYHRtX21pbmAsIGFu
ZAotLy8gYHRtX3NlY2AgZmllbGRzIHRvIGFuIGBhYnNsOjpUaW1lYCB1c2luZyB0aGUgZ2l2ZW4g
dGltZSB6b25lLiBTZWUgY3RpbWUoMykKLS8vIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBleHBl
Y3RlZCB2YWx1ZXMgb2YgdGhlIHRtIGZpZWxkcy4gSUZGIHRoZSBpbmRpY2F0ZWQKLS8vIHRpbWUg
aW5zdGFudCBpcyBub3QgdW5pcXVlIChzZWUgYGFic2w6OkNvbnZlcnREYXRlVGltZSgpYCBhYm92
ZSksIHRoZQotLy8gYHRtX2lzZHN0YCBmaWVsZCBpcyBjb25zdWx0ZWQgdG8gc2VsZWN0IHRoZSBk
ZXNpcmVkIGluc3RhbnQgKGB0bV9pc2RzdGAgPiAwCi0vLyBtZWFucyBEU1QsIGB0bV9pc2RzdGAg
PT0gMCBtZWFucyBubyBEU1QsIGB0bV9pc2RzdGAgPCAwIG1lYW5zIHVzZSB0aGUgZGVmYXVsdAot
Ly8gbGlrZSBgYWJzbDo6RnJvbURhdGVUaW1lKClgKS4KLVRpbWUgRnJvbVRNKGNvbnN0IHN0cnVj
dCB0bSYgdG0sIFRpbWVab25lIHR6KTsKLQotLy8gVG9UTSgpCi0vLwotLy8gQ29udmVydHMgdGhl
IGdpdmVuIGBhYnNsOjpUaW1lYCB0byBhIHN0cnVjdCB0bSB1c2luZyB0aGUgZ2l2ZW4gdGltZSB6
b25lLgotLy8gU2VlIGN0aW1lKDMpIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YWx1ZXMgb2Yg
dGhlIHRtIGZpZWxkcy4KLXN0cnVjdCB0bSBUb1RNKFRpbWUgdCwgVGltZVpvbmUgdHopOwotCiAv
LyBGcm9tVW5peE5hbm9zKCkKIC8vIEZyb21Vbml4TWljcm9zKCkKIC8vIEZyb21Vbml4TWlsbGlz
KCkKQEAgLTg4Myw2ICs4MDUsMzgyIEBAIFRpbWUgRnJvbUNocm9ubyhjb25zdCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50JiB0cCk7CiAvLyAgIC8vIHRwID09IHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KDEyMyk7CiBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IFRvQ2hyb25vVGltZShUaW1lKTsKIAorLy8gU3VwcG9ydCBmb3Ig
ZmxhZyB2YWx1ZXMgb2YgdHlwZSBUaW1lLiBUaW1lIGZsYWdzIG11c3QgYmUgc3BlY2lmaWVkIGlu
IGEKKy8vIGZvcm1hdCB0aGF0IG1hdGNoZXMgYWJzbDo6UkZDMzMzOV9mdWxsLiBGb3IgZXhhbXBs
ZToKKy8vCisvLyAgIC0tc3RhcnRfdGltZT0yMDE2LTAxLTAyVDAzOjA0OjA1LjY3OCswODowMAor
Ly8KKy8vIE5vdGU6IEEgVVRDIG9mZnNldCAob3IgJ1onIGluZGljYXRpbmcgYSB6ZXJvLW9mZnNl
dCBmcm9tIFVUQykgaXMgcmVxdWlyZWQuCisvLworLy8gQWRkaXRpb25hbGx5LCBpZiB5b3UnZCBs
aWtlIHRvIHNwZWNpZnkgYSB0aW1lIGFzIGEgY291bnQgb2YKKy8vIHNlY29uZHMvbWlsbGlzZWNv
bmRzL2V0YyBmcm9tIHRoZSBVbml4IGVwb2NoLCB1c2UgYW4gYWJzbDo6RHVyYXRpb24gZmxhZwor
Ly8gYW5kIGFkZCB0aGF0IGR1cmF0aW9uIHRvIGFic2w6OlVuaXhFcG9jaCgpIHRvIGdldCBhbiBh
YnNsOjpUaW1lLgorYm9vbCBQYXJzZUZsYWcoY29uc3Qgc3RkOjpzdHJpbmcmIHRleHQsIFRpbWUq
IHQsIHN0ZDo6c3RyaW5nKiBlcnJvcik7CitzdGQ6OnN0cmluZyBVbnBhcnNlRmxhZyhUaW1lIHQp
OworCisvLyBUaW1lWm9uZQorLy8KKy8vIFRoZSBgYWJzbDo6VGltZVpvbmVgIGlzIGFuIG9wYXF1
ZSwgc21hbGwsIHZhbHVlLXR5cGUgY2xhc3MgcmVwcmVzZW50aW5nIGEKKy8vIGdlby1wb2xpdGlj
YWwgcmVnaW9uIHdpdGhpbiB3aGljaCBwYXJ0aWN1bGFyIHJ1bGVzIGFyZSB1c2VkIGZvciBjb252
ZXJ0aW5nCisvLyBiZXR3ZWVuIGFic29sdXRlIGFuZCBjaXZpbCB0aW1lcyAoc2VlIGh0dHBzOi8v
Z2l0LmlvL3Y1OUx5KS4gYGFic2w6OlRpbWVab25lYAorLy8gdmFsdWVzIGFyZSBuYW1lZCB1c2lu
ZyB0aGUgVFogaWRlbnRpZmllcnMgZnJvbSB0aGUgSUFOQSBUaW1lIFpvbmUgRGF0YWJhc2UsCisv
LyBzdWNoIGFzICJBbWVyaWNhL0xvc19BbmdlbGVzIiBvciAiQXVzdHJhbGlhL1N5ZG5leSIuIGBh
YnNsOjpUaW1lWm9uZWAgdmFsdWVzCisvLyBhcmUgY3JlYXRlZCBmcm9tIGZhY3RvcnkgZnVuY3Rp
b25zIHN1Y2ggYXMgYGFic2w6OkxvYWRUaW1lWm9uZSgpYC4gTm90ZToKKy8vIHN0cmluZ3MgbGlr
ZSAiUFNUIiBhbmQgIkVEVCIgYXJlIG5vdCB2YWxpZCBUWiBpZGVudGlmaWVycy4gUHJlZmVyIHRv
IHBhc3MgYnkKKy8vIHZhbHVlIHJhdGhlciB0aGFuIGNvbnN0IHJlZmVyZW5jZS4KKy8vCisvLyBG
b3IgbW9yZSBvbiB0aGUgZnVuZGFtZW50YWwgY29uY2VwdHMgb2YgdGltZSB6b25lcywgYWJzb2x1
dGUgdGltZXMsIGFuZCBjaXZpbAorLy8gdGltZXMsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZ29v
Z2xlL2NjdHojZnVuZGFtZW50YWwtY29uY2VwdHMKKy8vCisvLyBFeGFtcGxlczoKKy8vCisvLyAg
IGFic2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7CisvLyAgIGFic2w6OlRp
bWVab25lIHBzdCA9IGFic2w6OkZpeGVkVGltZVpvbmUoLTggKiA2MCAqIDYwKTsKKy8vICAgYWJz
bDo6VGltZVpvbmUgbG9jID0gYWJzbDo6TG9jYWxUaW1lWm9uZSgpOworLy8gICBhYnNsOjpUaW1l
Wm9uZSBsYXg7CisvLyAgIGlmICghYWJzbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL0xvc19Bbmdl
bGVzIiwgJmxheCkpIHsKKy8vICAgICAvLyBoYW5kbGUgZXJyb3IgY2FzZQorLy8gICB9CisvLwor
Ly8gU2VlIGFsc286CisvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2N0egorLy8gLSBo
dHRwczovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzCisvLyAtIGh0dHBzOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL1pvbmVpbmZvCitjbGFzcyBUaW1lWm9uZSB7CisgcHVibGljOgorICBleHBsaWNp
dCBUaW1lWm9uZSh0aW1lX2ludGVybmFsOjpjY3R6Ojp0aW1lX3pvbmUgdHopIDogY3pfKHR6KSB7
fQorICBUaW1lWm9uZSgpID0gZGVmYXVsdDsgIC8vIFVUQywgYnV0IHByZWZlciBVVENUaW1lWm9u
ZSgpIHRvIGJlIGV4cGxpY2l0LgorCisgIC8vIENvcHlhYmxlLgorICBUaW1lWm9uZShjb25zdCBU
aW1lWm9uZSYpID0gZGVmYXVsdDsKKyAgVGltZVpvbmUmIG9wZXJhdG9yPShjb25zdCBUaW1lWm9u
ZSYpID0gZGVmYXVsdDsKKworICBleHBsaWNpdCBvcGVyYXRvciB0aW1lX2ludGVybmFsOjpjY3R6
Ojp0aW1lX3pvbmUoKSBjb25zdCB7IHJldHVybiBjel87IH0KKworICBzdGQ6OnN0cmluZyBuYW1l
KCkgY29uc3QgeyByZXR1cm4gY3pfLm5hbWUoKTsgfQorCisgIC8vIFRpbWVab25lOjpDaXZpbElu
Zm8KKyAgLy8KKyAgLy8gSW5mb3JtYXRpb24gYWJvdXQgdGhlIGNpdmlsIHRpbWUgY29ycmVzcG9u
ZGluZyB0byBhbiBhYnNvbHV0ZSB0aW1lLgorICAvLyBUaGlzIHN0cnVjdCBpcyBub3QgaW50ZW5k
ZWQgdG8gcmVwcmVzZW50IGFuIGluc3RhbnQgaW4gdGltZS4gU28sIHJhdGhlcgorICAvLyB0aGFu
IHBhc3NpbmcgYSBgVGltZVpvbmU6OkNpdmlsSW5mb2AgdG8gYSBmdW5jdGlvbiwgcGFzcyBhbiBg
YWJzbDo6VGltZWAKKyAgLy8gYW5kIGFuIGBhYnNsOjpUaW1lWm9uZWAuCisgIHN0cnVjdCBDaXZp
bEluZm8geworICAgIENpdmlsU2Vjb25kIGNzOworICAgIER1cmF0aW9uIHN1YnNlY29uZDsKKwor
ICAgIC8vIE5vdGU6IFRoZSBmb2xsb3dpbmcgZmllbGRzIGV4aXN0IGZvciBiYWNrd2FyZCBjb21w
YXRpYmlsaXR5CisgICAgLy8gd2l0aCBvbGRlciBBUElzLiAgQWNjZXNzaW5nIHRoZXNlIGZpZWxk
cyBkaXJlY3RseSBpcyBhIHNpZ24gb2YKKyAgICAvLyBpbXBydWRlbnQgbG9naWMgaW4gdGhlIGNh
bGxpbmcgY29kZS4gIE1vZGVybiB0aW1lLXJlbGF0ZWQgY29kZQorICAgIC8vIHNob3VsZCBvbmx5
IGFjY2VzcyB0aGlzIGRhdGEgaW5kaXJlY3RseSBieSB3YXkgb2YgRm9ybWF0VGltZSgpLgorICAg
IC8vIFRoZXNlIGZpZWxkcyBhcmUgdW5kZWZpbmVkIGZvciBJbmZpbml0ZUZ1dHVyZSgpIGFuZCBJ
bmZpbml0ZVBhc3QoKS4KKyAgICBpbnQgb2Zmc2V0OyAgICAgICAgICAgICAvLyBzZWNvbmRzIGVh
c3Qgb2YgVVRDCisgICAgYm9vbCBpc19kc3Q7ICAgICAgICAgICAgLy8gaXMgb2Zmc2V0IG5vbi1z
dGFuZGFyZD8KKyAgICBjb25zdCBjaGFyKiB6b25lX2FiYnI7ICAvLyB0aW1lLXpvbmUgYWJicmV2
aWF0aW9uIChlLmcuLCAiUFNUIikKKyAgfTsKKworICAvLyBUaW1lWm9uZTo6QXQoVGltZSkKKyAg
Ly8KKyAgLy8gUmV0dXJucyB0aGUgY2l2aWwgdGltZSBmb3IgdGhpcyBUaW1lWm9uZSBhdCBhIGNl
cnRhaW4gYGFic2w6OlRpbWVgLgorICAvLyBJZiB0aGUgaW5wdXQgdGltZSBpcyBpbmZpbml0ZSwg
dGhlIG91dHB1dCBjaXZpbCBzZWNvbmQgd2lsbCBiZSBzZXQgdG8KKyAgLy8gQ2l2aWxTZWNvbmQ6
Om1heCgpIG9yIG1pbigpLCBhbmQgdGhlIHN1YnNlY29uZCB3aWxsIGJlIGluZmluaXRlLgorICAv
LworICAvLyBFeGFtcGxlOgorICAvLworICAvLyAgIGNvbnN0IGF1dG8gZXBvY2ggPSBsYXguQXQo
YWJzbDo6VW5peEVwb2NoKCkpOworICAvLyAgIC8vIGVwb2NoLmNzID09IDE5NjktMTItMzEgMTY6
MDA6MDAKKyAgLy8gICAvLyBlcG9jaC5zdWJzZWNvbmQgPT0gYWJzbDo6WmVyb0R1cmF0aW9uKCkK
KyAgLy8gICAvLyBlcG9jaC5vZmZzZXQgPT0gLTI4ODAwCisgIC8vICAgLy8gZXBvY2guaXNfZHN0
ID09IGZhbHNlCisgIC8vICAgLy8gZXBvY2guYWJiciA9PSAiUFNUIgorICBDaXZpbEluZm8gQXQo
VGltZSB0KSBjb25zdDsKKworICAvLyBUaW1lWm9uZTo6VGltZUluZm8KKyAgLy8KKyAgLy8gSW5m
b3JtYXRpb24gYWJvdXQgdGhlIGFic29sdXRlIHRpbWVzIGNvcnJlc3BvbmRpbmcgdG8gYSBjaXZp
bCB0aW1lLgorICAvLyAoU3Vic2Vjb25kcyBtdXN0IGJlIGhhbmRsZWQgc2VwYXJhdGVseS4pCisg
IC8vCisgIC8vIEl0IGlzIHBvc3NpYmxlIGZvciBhIGNhbGxlciB0byBwYXNzIGEgY2l2aWwtdGlt
ZSB2YWx1ZSB0aGF0IGRvZXMKKyAgLy8gbm90IHJlcHJlc2VudCBhbiBhY3R1YWwgb3IgdW5pcXVl
IGluc3RhbnQgaW4gdGltZSAoZHVlIHRvIGEgc2hpZnQKKyAgLy8gaW4gVVRDIG9mZnNldCBpbiB0
aGUgVGltZVpvbmUsIHdoaWNoIHJlc3VsdHMgaW4gYSBkaXNjb250aW51aXR5IGluCisgIC8vIHRo
ZSBjaXZpbC10aW1lIGNvbXBvbmVudHMpLiBGb3IgZXhhbXBsZSwgYSBkYXlsaWdodC1zYXZpbmct
dGltZQorICAvLyB0cmFuc2l0aW9uIHNraXBzIG9yIHJlcGVhdHMgY2l2aWwgdGltZXMtLS1pbiB0
aGUgVW5pdGVkIFN0YXRlcywKKyAgLy8gTWFyY2ggMTMsIDIwMTEgMDI6MTUgbmV2ZXIgb2NjdXJy
ZWQsIHdoaWxlIE5vdmVtYmVyIDYsIDIwMTEgMDE6MTUKKyAgLy8gb2NjdXJyZWQgdHdpY2UtLS1z
byByZXF1ZXN0cyBmb3Igc3VjaCB0aW1lcyBhcmUgbm90IHdlbGwtZGVmaW5lZC4KKyAgLy8gVG8g
YWNjb3VudCBmb3IgdGhlc2UgcG9zc2liaWxpdGllcywgYGFic2w6OlRpbWVab25lOjpUaW1lSW5m
b2AgaXMKKyAgLy8gcmljaGVyIHRoYW4ganVzdCBhIHNpbmdsZSBgYWJzbDo6VGltZWAuCisgIHN0
cnVjdCBUaW1lSW5mbyB7CisgICAgZW51bSBDaXZpbEtpbmQgeworICAgICAgVU5JUVVFLCAgICAv
LyB0aGUgY2l2aWwgdGltZSB3YXMgc2luZ3VsYXIgKHByZSA9PSB0cmFucyA9PSBwb3N0KQorICAg
ICAgU0tJUFBFRCwgICAvLyB0aGUgY2l2aWwgdGltZSBkaWQgbm90IGV4aXN0IChwcmUgPj0gdHJh
bnMgPiBwb3N0KQorICAgICAgUkVQRUFURUQsICAvLyB0aGUgY2l2aWwgdGltZSB3YXMgYW1iaWd1
b3VzIChwcmUgPCB0cmFucyA8PSBwb3N0KQorICAgIH0ga2luZDsKKyAgICBUaW1lIHByZTsgICAg
Ly8gdGltZSBjYWxjdWxhdGVkIHVzaW5nIHRoZSBwcmUtdHJhbnNpdGlvbiBvZmZzZXQKKyAgICBU
aW1lIHRyYW5zOyAgLy8gd2hlbiB0aGUgY2l2aWwtdGltZSBkaXNjb250aW51aXR5IG9jY3VycmVk
CisgICAgVGltZSBwb3N0OyAgIC8vIHRpbWUgY2FsY3VsYXRlZCB1c2luZyB0aGUgcG9zdC10cmFu
c2l0aW9uIG9mZnNldAorICB9OworCisgIC8vIFRpbWVab25lOjpBdChDaXZpbFNlY29uZCkKKyAg
Ly8KKyAgLy8gUmV0dXJucyBhbiBgYWJzbDo6VGltZUluZm9gIGNvbnRhaW5pbmcgdGhlIGFic29s
dXRlIHRpbWUocykgZm9yIHRoaXMKKyAgLy8gVGltZVpvbmUgYXQgYW4gYGFic2w6OkNpdmlsU2Vj
b25kYC4gV2hlbiB0aGUgY2l2aWwgdGltZSBpcyBza2lwcGVkIG9yCisgIC8vIHJlcGVhdGVkLCBy
ZXR1cm5zIHRpbWVzIGNhbGN1bGF0ZWQgdXNpbmcgdGhlIHByZS10cmFuc2l0aW9uIGFuZCBwb3N0
LQorICAvLyB0cmFuc2l0aW9uIFVUQyBvZmZzZXRzLCBwbHVzIHRoZSB0cmFuc2l0aW9uIHRpbWUg
aXRzZWxmLgorICAvLworICAvLyBFeGFtcGxlczoKKyAgLy8KKyAgLy8gICAvLyBBIHVuaXF1ZSBj
aXZpbCB0aW1lCisgIC8vICAgY29uc3QgYXV0byBqYW4wMSA9IGxheC5BdChhYnNsOjpDaXZpbFNl
Y29uZCgyMDExLCAxLCAxLCAwLCAwLCAwKSk7CisgIC8vICAgLy8gamFuMDEua2luZCA9PSBUaW1l
Wm9uZTo6VGltZUluZm86OlVOSVFVRQorICAvLyAgIC8vIGphbjAxLnByZSAgICBpcyAyMDExLTAx
LTAxIDAwOjAwOjAwIC0wODAwCisgIC8vICAgLy8gamFuMDEudHJhbnMgIGlzIDIwMTEtMDEtMDEg
MDA6MDA6MDAgLTA4MDAKKyAgLy8gICAvLyBqYW4wMS5wb3N0ICAgaXMgMjAxMS0wMS0wMSAwMDow
MDowMCAtMDgwMAorICAvLworICAvLyAgIC8vIEEgU3ByaW5nIERTVCB0cmFuc2l0aW9uLCB3aGVu
IHRoZXJlIGlzIGEgZ2FwIGluIGNpdmlsIHRpbWUKKyAgLy8gICBjb25zdCBhdXRvIG1hcjEzID0g
bGF4LkF0KGFic2w6OkNpdmlsU2Vjb25kKDIwMTEsIDMsIDEzLCAyLCAxNSwgMCkpOworICAvLyAg
IC8vIG1hcjEzLmtpbmQgPT0gVGltZVpvbmU6OlRpbWVJbmZvOjpTS0lQUEVECisgIC8vICAgLy8g
bWFyMTMucHJlICAgaXMgMjAxMS0wMy0xMyAwMzoxNTowMCAtMDcwMAorICAvLyAgIC8vIG1hcjEz
LnRyYW5zIGlzIDIwMTEtMDMtMTMgMDM6MDA6MDAgLTA3MDAKKyAgLy8gICAvLyBtYXIxMy5wb3N0
ICBpcyAyMDExLTAzLTEzIDAxOjE1OjAwIC0wODAwCisgIC8vCisgIC8vICAgLy8gQSBGYWxsIERT
VCB0cmFuc2l0aW9uLCB3aGVuIGNpdmlsIHRpbWVzIGFyZSByZXBlYXRlZAorICAvLyAgIGNvbnN0
IGF1dG8gbm92MDYgPSBsYXguQXQoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMSwgMTEsIDYsIDEsIDE1
LCAwKSk7CisgIC8vICAgLy8gbm92MDYua2luZCA9PSBUaW1lWm9uZTo6VGltZUluZm86OlJFUEVB
VEVECisgIC8vICAgLy8gbm92MDYucHJlICAgaXMgMjAxMS0xMS0wNiAwMToxNTowMCAtMDcwMAor
ICAvLyAgIC8vIG5vdjA2LnRyYW5zIGlzIDIwMTEtMTEtMDYgMDE6MDA6MDAgLTA4MDAKKyAgLy8g
ICAvLyBub3YwNi5wb3N0ICBpcyAyMDExLTExLTA2IDAxOjE1OjAwIC0wODAwCisgIFRpbWVJbmZv
IEF0KENpdmlsU2Vjb25kIGN0KSBjb25zdDsKKworICAvLyBUaW1lWm9uZTo6TmV4dFRyYW5zaXRp
b24oKQorICAvLyBUaW1lWm9uZTo6UHJldlRyYW5zaXRpb24oKQorICAvLworICAvLyBGaW5kcyB0
aGUgdGltZSBvZiB0aGUgbmV4dC9wcmV2aW91cyBvZmZzZXQgY2hhbmdlIGluIHRoaXMgdGltZSB6
b25lLgorICAvLworICAvLyBCeSBkZWZpbml0aW9uLCBgTmV4dFRyYW5zaXRpb24odCwgJnRyYW5z
KWAgcmV0dXJucyBmYWxzZSB3aGVuIGB0YCBpcworICAvLyBgSW5maW5pdGVGdXR1cmUoKWAsIGFu
ZCBgUHJldlRyYW5zaXRpb24odCwgJnRyYW5zKWAgcmV0dXJucyBmYWxzZQorICAvLyB3aGVuIGB0
YCBpcyBgSW5maW5pdGVQYXN0KClgLiBJZiB0aGUgem9uZSBoYXMgbm8gdHJhbnNpdGlvbnMsIHRo
ZQorICAvLyByZXN1bHQgd2lsbCBhbHNvIGJlIGZhbHNlIG5vIG1hdHRlciB3aGF0IHRoZSBhcmd1
bWVudC4KKyAgLy8KKyAgLy8gT3RoZXJ3aXNlLCB3aGVuIGB0YCBpcyBgSW5maW5pdGVQYXN0KClg
LCBgTmV4dFRyYW5zaXRpb24odCwgJnRyYW5zKWAKKyAgLy8gcmV0dXJucyB0cnVlIGFuZCBzZXRz
IGB0cmFuc2AgdG8gdGhlIGZpcnN0IHJlY29yZGVkIHRyYW5zaXRpb24uIENoYWlucworICAvLyBv
ZiBjYWxscyB0byBgTmV4dFRyYW5zaXRpb24oKS9QcmV2VHJhbnNpdGlvbigpYCB3aWxsIGV2ZW50
dWFsbHkgcmV0dXJuCisgIC8vIGZhbHNlLCBidXQgaXQgaXMgdW5zcGVjaWZpZWQgZXhhY3RseSB3
aGVuIGBOZXh0VHJhbnNpdGlvbih0LCAmdHJhbnMpYAorICAvLyBqdW1wcyB0byBmYWxzZSwgb3Ig
d2hhdCB0aW1lIGlzIHNldCBieSBgUHJldlRyYW5zaXRpb24odCwgJnRyYW5zKWAgZm9yCisgIC8v
IGEgdmVyeSBkaXN0YW50IGB0YC4KKyAgLy8KKyAgLy8gTm90ZTogRW51bWVyYXRpb24gb2YgdGlt
ZS16b25lIHRyYW5zaXRpb25zIGlzIGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzCisgIC8vIG9u
bHkuIE1vZGVybiB0aW1lLXJlbGF0ZWQgY29kZSBzaG91bGQgbm90IGNhcmUgYWJvdXQgd2hlbiBv
ZmZzZXQgY2hhbmdlcworICAvLyBvY2N1ci4KKyAgLy8KKyAgLy8gRXhhbXBsZToKKyAgLy8gICBh
YnNsOjpUaW1lWm9uZSBueWM7CisgIC8vICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJp
Y2EvTmV3X1lvcmsiLCAmbnljKSkgeyAuLi4gfQorICAvLyAgIGNvbnN0IGF1dG8gbm93ID0gYWJz
bDo6Tm93KCk7CisgIC8vICAgYXV0byB0ID0gYWJzbDo6SW5maW5pdGVQYXN0KCk7CisgIC8vICAg
YWJzbDo6VGltZVpvbmU6OkNpdmlsVHJhbnNpdGlvbiB0cmFuczsKKyAgLy8gICB3aGlsZSAodCA8
PSBub3cgJiYgbnljLk5leHRUcmFuc2l0aW9uKHQsICZ0cmFucykpIHsKKyAgLy8gICAgIC8vIHRy
YW5zaXRpb246IHRyYW5zLmZyb20gLT4gdHJhbnMudG8KKyAgLy8gICAgIHQgPSBueWMuQXQodHJh
bnMudG8pLnRyYW5zOworICAvLyAgIH0KKyAgc3RydWN0IENpdmlsVHJhbnNpdGlvbiB7CisgICAg
Q2l2aWxTZWNvbmQgZnJvbTsgIC8vIHRoZSBjaXZpbCB0aW1lIHdlIGp1bXAgZnJvbQorICAgIENp
dmlsU2Vjb25kIHRvOyAgICAvLyB0aGUgY2l2aWwgdGltZSB3ZSBqdW1wIHRvCisgIH07CisgIGJv
b2wgTmV4dFRyYW5zaXRpb24oVGltZSB0LCBDaXZpbFRyYW5zaXRpb24qIHRyYW5zKSBjb25zdDsK
KyAgYm9vbCBQcmV2VHJhbnNpdGlvbihUaW1lIHQsIENpdmlsVHJhbnNpdGlvbiogdHJhbnMpIGNv
bnN0OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVl
KEggaCwgVGltZVpvbmUgdHopIHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCks
IHR6LmN6Xyk7CisgIH0KKworIHByaXZhdGU6CisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oVGlt
ZVpvbmUgYSwgVGltZVpvbmUgYikgeyByZXR1cm4gYS5jel8gPT0gYi5jel87IH0KKyAgZnJpZW5k
IGJvb2wgb3BlcmF0b3IhPShUaW1lWm9uZSBhLCBUaW1lWm9uZSBiKSB7IHJldHVybiBhLmN6XyAh
PSBiLmN6XzsgfQorICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVh
bSYgb3MsIFRpbWVab25lIHR6KSB7CisgICAgcmV0dXJuIG9zIDw8IHR6Lm5hbWUoKTsKKyAgfQor
CisgIHRpbWVfaW50ZXJuYWw6OmNjdHo6OnRpbWVfem9uZSBjel87Cit9OworCisvLyBMb2FkVGlt
ZVpvbmUoKQorLy8KKy8vIExvYWRzIHRoZSBuYW1lZCB6b25lLiBNYXkgcGVyZm9ybSBJL08gb24g
dGhlIGluaXRpYWwgbG9hZCBvZiB0aGUgbmFtZWQKKy8vIHpvbmUuIElmIHRoZSBuYW1lIGlzIGlu
dmFsaWQsIG9yIHNvbWUgb3RoZXIga2luZCBvZiBlcnJvciBvY2N1cnMsIHJldHVybnMKKy8vIGBm
YWxzZWAgYW5kIGAqdHpgIGlzIHNldCB0byB0aGUgVVRDIHRpbWUgem9uZS4KK2lubGluZSBib29s
IExvYWRUaW1lWm9uZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgVGltZVpvbmUqIHR6KSB7Cisg
IGlmIChuYW1lID09ICJsb2NhbHRpbWUiKSB7CisgICAgKnR6ID0gVGltZVpvbmUodGltZV9pbnRl
cm5hbDo6Y2N0ejo6bG9jYWxfdGltZV96b25lKCkpOworICAgIHJldHVybiB0cnVlOworICB9Cisg
IHRpbWVfaW50ZXJuYWw6OmNjdHo6OnRpbWVfem9uZSBjejsKKyAgY29uc3QgYm9vbCBiID0gdGlt
ZV9pbnRlcm5hbDo6Y2N0ejo6bG9hZF90aW1lX3pvbmUobmFtZSwgJmN6KTsKKyAgKnR6ID0gVGlt
ZVpvbmUoY3opOworICByZXR1cm4gYjsKK30KKworLy8gRml4ZWRUaW1lWm9uZSgpCisvLworLy8g
UmV0dXJucyBhIFRpbWVab25lIHRoYXQgaXMgYSBmaXhlZCBvZmZzZXQgKHNlY29uZHMgZWFzdCkg
ZnJvbSBVVEMuCisvLyBOb3RlOiBJZiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG9mZnNldCBp
cyBncmVhdGVyIHRoYW4gMjQgaG91cnMKKy8vIHlvdSdsbCBnZXQgVVRDIChpLmUuLCBubyBvZmZz
ZXQpIGluc3RlYWQuCitpbmxpbmUgVGltZVpvbmUgRml4ZWRUaW1lWm9uZShpbnQgc2Vjb25kcykg
eworICByZXR1cm4gVGltZVpvbmUoCisgICAgICB0aW1lX2ludGVybmFsOjpjY3R6OjpmaXhlZF90
aW1lX3pvbmUoc3RkOjpjaHJvbm86OnNlY29uZHMoc2Vjb25kcykpKTsKK30KKworLy8gVVRDVGlt
ZVpvbmUoKQorLy8KKy8vIENvbnZlbmllbmNlIG1ldGhvZCByZXR1cm5pbmcgdGhlIFVUQyB0aW1l
IHpvbmUuCitpbmxpbmUgVGltZVpvbmUgVVRDVGltZVpvbmUoKSB7CisgIHJldHVybiBUaW1lWm9u
ZSh0aW1lX2ludGVybmFsOjpjY3R6Ojp1dGNfdGltZV96b25lKCkpOworfQorCisvLyBMb2NhbFRp
bWVab25lKCkKKy8vCisvLyBDb252ZW5pZW5jZSBtZXRob2QgcmV0dXJuaW5nIHRoZSBsb2NhbCB0
aW1lIHpvbmUsIG9yIFVUQyBpZiB0aGVyZSBpcworLy8gbm8gY29uZmlndXJlZCBsb2NhbCB6b25l
LiAgV2FybmluZzogQmUgd2FyeSBvZiB1c2luZyBMb2NhbFRpbWVab25lKCksCisvLyBhbmQgcGFy
dGljdWxhcmx5IHNvIGluIGEgc2VydmVyIHByb2Nlc3MsIGFzIHRoZSB6b25lIGNvbmZpZ3VyZWQg
Zm9yIHRoZQorLy8gbG9jYWwgbWFjaGluZSBzaG91bGQgYmUgaXJyZWxldmFudC4gIFByZWZlciBh
biBleHBsaWNpdCB6b25lIG5hbWUuCitpbmxpbmUgVGltZVpvbmUgTG9jYWxUaW1lWm9uZSgpIHsK
KyAgcmV0dXJuIFRpbWVab25lKHRpbWVfaW50ZXJuYWw6OmNjdHo6OmxvY2FsX3RpbWVfem9uZSgp
KTsKK30KKworLy8gVG9DaXZpbFNlY29uZCgpCisvLyBUb0NpdmlsTWludXRlKCkKKy8vIFRvQ2l2
aWxIb3VyKCkKKy8vIFRvQ2l2aWxEYXkoKQorLy8gVG9DaXZpbE1vbnRoKCkKKy8vIFRvQ2l2aWxZ
ZWFyKCkKKy8vCisvLyBIZWxwZXJzIGZvciBUaW1lWm9uZTo6QXQoVGltZSkgdG8gcmV0dXJuIHBh
cnRpY3VsYXJseSBhbGlnbmVkIGNpdmlsIHRpbWVzLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8g
ICBhYnNsOjpUaW1lIHQgPSAuLi47CisvLyAgIGFic2w6OlRpbWVab25lIHR6ID0gLi4uOworLy8g
ICBjb25zdCBhdXRvIGNkID0gYWJzbDo6VG9DaXZpbERheSh0LCB0eik7CitpbmxpbmUgQ2l2aWxT
ZWNvbmQgVG9DaXZpbFNlY29uZChUaW1lIHQsIFRpbWVab25lIHR6KSB7CisgIHJldHVybiB0ei5B
dCh0KS5jczsgIC8vIGFscmVhZHkgYSBDaXZpbFNlY29uZAorfQoraW5saW5lIENpdmlsTWludXRl
IFRvQ2l2aWxNaW51dGUoVGltZSB0LCBUaW1lWm9uZSB0eikgeworICByZXR1cm4gQ2l2aWxNaW51
dGUodHouQXQodCkuY3MpOworfQoraW5saW5lIENpdmlsSG91ciBUb0NpdmlsSG91cihUaW1lIHQs
IFRpbWVab25lIHR6KSB7CisgIHJldHVybiBDaXZpbEhvdXIodHouQXQodCkuY3MpOworfQoraW5s
aW5lIENpdmlsRGF5IFRvQ2l2aWxEYXkoVGltZSB0LCBUaW1lWm9uZSB0eikgeworICByZXR1cm4g
Q2l2aWxEYXkodHouQXQodCkuY3MpOworfQoraW5saW5lIENpdmlsTW9udGggVG9DaXZpbE1vbnRo
KFRpbWUgdCwgVGltZVpvbmUgdHopIHsKKyAgcmV0dXJuIENpdmlsTW9udGgodHouQXQodCkuY3Mp
OworfQoraW5saW5lIENpdmlsWWVhciBUb0NpdmlsWWVhcihUaW1lIHQsIFRpbWVab25lIHR6KSB7
CisgIHJldHVybiBDaXZpbFllYXIodHouQXQodCkuY3MpOworfQorCisvLyBGcm9tQ2l2aWwoKQor
Ly8KKy8vIEhlbHBlciBmb3IgVGltZVpvbmU6OkF0KENpdmlsU2Vjb25kKSB0aGF0IHByb3ZpZGVz
ICJvcmRlci1wcmVzZXJ2aW5nCisvLyBzZW1hbnRpY3MuIiBJZiB0aGUgY2l2aWwgdGltZSBtYXBz
IHRvIGEgdW5pcXVlIHRpbWUsIHRoYXQgdGltZSBpcworLy8gcmV0dXJuZWQuIElmIHRoZSBjaXZp
bCB0aW1lIGlzIHJlcGVhdGVkIGluIHRoZSBnaXZlbiB0aW1lIHpvbmUsIHRoZQorLy8gdGltZSB1
c2luZyB0aGUgcHJlLXRyYW5zaXRpb24gb2Zmc2V0IGlzIHJldHVybmVkLiBPdGhlcndpc2UsIHRo
ZQorLy8gY2l2aWwgdGltZSBpcyBza2lwcGVkIGluIHRoZSBnaXZlbiB0aW1lIHpvbmUsIGFuZCB0
aGUgdHJhbnNpdGlvbiB0aW1lCisvLyBpcyByZXR1cm5lZC4gVGhpcyBtZWFucyB0aGF0IGZvciBh
bnkgdHdvIGNpdmlsIHRpbWVzLCBjdDEgYW5kIGN0MiwKKy8vIChjdDEgPCBjdDIpID0+IChGcm9t
Q2l2aWwoY3QxKSA8PSBGcm9tQ2l2aWwoY3QyKSksIHRoZSBlcXVhbCBjYXNlCisvLyBiZWluZyB3
aGVuIHR3byBub24tZXhpc3RlbnQgY2l2aWwgdGltZXMgbWFwIHRvIHRoZSBzYW1lIHRyYW5zaXRp
b24gdGltZS4KKy8vCisvLyBOb3RlOiBBY2NlcHRzIGNpdmlsIHRpbWVzIG9mIGFueSBhbGlnbm1l
bnQuCitpbmxpbmUgVGltZSBGcm9tQ2l2aWwoQ2l2aWxTZWNvbmQgY3QsIFRpbWVab25lIHR6KSB7
CisgIGNvbnN0IGF1dG8gdGkgPSB0ei5BdChjdCk7CisgIGlmICh0aS5raW5kID09IFRpbWVab25l
OjpUaW1lSW5mbzo6U0tJUFBFRCkgcmV0dXJuIHRpLnRyYW5zOworICByZXR1cm4gdGkucHJlOwor
fQorCisvLyBUaW1lQ29udmVyc2lvbgorLy8KKy8vIEFuIGBhYnNsOjpUaW1lQ29udmVyc2lvbmAg
cmVwcmVzZW50cyB0aGUgY29udmVyc2lvbiBvZiB5ZWFyLCBtb250aCwgZGF5LAorLy8gaG91ciwg
bWludXRlLCBhbmQgc2Vjb25kIHZhbHVlcyAoaS5lLiwgYSBjaXZpbCB0aW1lKSwgaW4gYSBwYXJ0
aWN1bGFyCisvLyBgYWJzbDo6VGltZVpvbmVgLCB0byBhIHRpbWUgaW5zdGFudCAoYW4gYWJzb2x1
dGUgdGltZSksIGFzIHJldHVybmVkIGJ5CisvLyBgYWJzbDo6Q29udmVydERhdGVUaW1lKClgLiBM
ZWNhY3kgdmVyc2lvbiBvZiBgYWJzbDo6VGltZVpvbmU6OlRpbWVJbmZvYC4KKy8vCisvLyBEZXBy
ZWNhdGVkLiBVc2UgYGFic2w6OlRpbWVab25lOjpUaW1lSW5mb2AuCitzdHJ1Y3QKKyAgICBUaW1l
Q29udmVyc2lvbiB7CisgIFRpbWUgcHJlOyAgICAvLyB0aW1lIGNhbGN1bGF0ZWQgdXNpbmcgdGhl
IHByZS10cmFuc2l0aW9uIG9mZnNldAorICBUaW1lIHRyYW5zOyAgLy8gd2hlbiB0aGUgY2l2aWwt
dGltZSBkaXNjb250aW51aXR5IG9jY3VycmVkCisgIFRpbWUgcG9zdDsgICAvLyB0aW1lIGNhbGN1
bGF0ZWQgdXNpbmcgdGhlIHBvc3QtdHJhbnNpdGlvbiBvZmZzZXQKKworICBlbnVtIEtpbmQgewor
ICAgIFVOSVFVRSwgICAgLy8gdGhlIGNpdmlsIHRpbWUgd2FzIHNpbmd1bGFyIChwcmUgPT0gdHJh
bnMgPT0gcG9zdCkKKyAgICBTS0lQUEVELCAgIC8vIHRoZSBjaXZpbCB0aW1lIGRpZCBub3QgZXhp
c3QKKyAgICBSRVBFQVRFRCwgIC8vIHRoZSBjaXZpbCB0aW1lIHdhcyBhbWJpZ3VvdXMKKyAgfTsK
KyAgS2luZCBraW5kOworCisgIGJvb2wgbm9ybWFsaXplZDsgIC8vIGlucHV0IHZhbHVlcyB3ZXJl
IG91dHNpZGUgdGhlaXIgdmFsaWQgcmFuZ2VzCit9OworCisvLyBDb252ZXJ0RGF0ZVRpbWUoKQor
Ly8KKy8vIExlZ2FjeSB2ZXJzaW9uIG9mIGBhYnNsOjpUaW1lWm9uZTo6QXQoYWJzbDo6Q2l2aWxT
ZWNvbmQpYCB0aGF0IHRha2VzCisvLyB0aGUgY2l2aWwgdGltZSBhcyBzaXgsIHNlcGFyYXRlIHZh
bHVlcyAoWU1ESE1TKS4KKy8vCisvLyBUaGUgaW5wdXQgbW9udGgsIGRheSwgaG91ciwgbWludXRl
LCBhbmQgc2Vjb25kIHZhbHVlcyBjYW4gYmUgb3V0c2lkZQorLy8gb2YgdGhlaXIgdmFsaWQgcmFu
Z2VzLCBpbiB3aGljaCBjYXNlIHRoZXkgd2lsbCBiZSAibm9ybWFsaXplZCIgZHVyaW5nCisvLyB0
aGUgY29udmVyc2lvbi4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gIk9jdG9iZXIgMzIi
IG5vcm1hbGl6ZXMgdG8gIk5vdmVtYmVyIDEiLgorLy8gICBhYnNsOjpUaW1lQ29udmVyc2lvbiB0
YyA9CisvLyAgICAgICBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTAsIDMyLCA4LCAzMCwg
MCwgbGF4KTsKKy8vICAgLy8gdGMua2luZCA9PSBUaW1lQ29udmVyc2lvbjo6VU5JUVVFICYmIHRj
Lm5vcm1hbGl6ZWQgPT0gdHJ1ZQorLy8gICAvLyBhYnNsOjpUb0NpdmlsRGF5KHRjLnByZSwgdHop
Lm1vbnRoKCkgPT0gMTEKKy8vICAgLy8gYWJzbDo6VG9DaXZpbERheSh0Yy5wcmUsIHR6KS5kYXko
KSA9PSAxCisvLworLy8gRGVwcmVjYXRlZC4gVXNlIGBhYnNsOjpUaW1lWm9uZTo6QXQoQ2l2aWxT
ZWNvbmQpYC4KK1RpbWVDb252ZXJzaW9uIENvbnZlcnREYXRlVGltZShpbnQ2NF90IHllYXIsIGlu
dCBtb24sIGludCBkYXksIGludCBob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBtaW4sIGludCBzZWMsIFRpbWVab25lIHR6KTsKKworLy8gRnJvbURhdGVUaW1lKCkKKy8v
CisvLyBBIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIGBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoKWAg
dGhhdCBzaW1wbHkgcmV0dXJucworLy8gdGhlICJwcmUiIGBhYnNsOjpUaW1lYC4gIFRoYXQgaXMs
IHRoZSB1bmlxdWUgcmVzdWx0LCBvciB0aGUgaW5zdGFudCB0aGF0CisvLyBpcyBjb3JyZWN0IHVz
aW5nIHRoZSBwcmUtdHJhbnNpdGlvbiBvZmZzZXQgKGFzIGlmIHRoZSB0cmFuc2l0aW9uIG5ldmVy
CisvLyBoYXBwZW5lZCkuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OlRpbWUgdCA9
IGFic2w6OkZyb21EYXRlVGltZSgyMDE3LCA5LCAyNiwgOSwgMzAsIDAsIGxheCk7CisvLyAgIC8v
IHQgPSAyMDE3LTA5LTI2IDA5OjMwOjAwIC0wNzAwCisvLworLy8gRGVwcmVjYXRlZC4gVXNlIGBh
YnNsOjpGcm9tQ2l2aWwoQ2l2aWxTZWNvbmQsIFRpbWVab25lKWAuIE5vdGUgdGhhdCB0aGUKKy8v
IGJlaGF2aW9yIG9mIGBGcm9tQ2l2aWwoKWAgZGlmZmVycyBmcm9tIGBGcm9tRGF0ZVRpbWUoKWAg
Zm9yIHNraXBwZWQgY2l2aWwKKy8vIHRpbWVzLiBJZiB5b3UgY2FyZSBhYm91dCB0aGF0IHNlZSBg
YWJzbDo6VGltZVpvbmU6OkF0KGFic2w6OkNpdmlsU2Vjb25kKWAuCitpbmxpbmUgVGltZSBGcm9t
RGF0ZVRpbWUoaW50NjRfdCB5ZWFyLCBpbnQgbW9uLCBpbnQgZGF5LCBpbnQgaG91ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbWluLCBpbnQgc2VjLCBUaW1lWm9uZSB0eikgeworICBy
ZXR1cm4gQ29udmVydERhdGVUaW1lKHllYXIsIG1vbiwgZGF5LCBob3VyLCBtaW4sIHNlYywgdHop
LnByZTsKK30KKworLy8gRnJvbVRNKCkKKy8vCisvLyBDb252ZXJ0cyB0aGUgYHRtX3llYXJgLCBg
dG1fbW9uYCwgYHRtX21kYXlgLCBgdG1faG91cmAsIGB0bV9taW5gLCBhbmQKKy8vIGB0bV9zZWNg
IGZpZWxkcyB0byBhbiBgYWJzbDo6VGltZWAgdXNpbmcgdGhlIGdpdmVuIHRpbWUgem9uZS4gU2Vl
IGN0aW1lKDMpCisvLyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZXhwZWN0ZWQgdmFsdWVzIG9m
IHRoZSB0bSBmaWVsZHMuIElmIHRoZSBpbmRpY2F0ZWQKKy8vIHRpbWUgaW5zdGFudCBpcyBub3Qg
dW5pcXVlIChzZWUgYGFic2w6OlRpbWVab25lOjpBdChhYnNsOjpDaXZpbFNlY29uZClgCisvLyBh
Ym92ZSksIHRoZSBgdG1faXNkc3RgIGZpZWxkIGlzIGNvbnN1bHRlZCB0byBzZWxlY3QgdGhlIGRl
c2lyZWQgaW5zdGFudAorLy8gKGB0bV9pc2RzdGAgPiAwIG1lYW5zIERTVCwgYHRtX2lzZHN0YCA9
PSAwIG1lYW5zIG5vIERTVCwgYHRtX2lzZHN0YCA8IDAKKy8vIG1lYW5zIHVzZSB0aGUgcG9zdC10
cmFuc2l0aW9uIG9mZnNldCkuCitUaW1lIEZyb21UTShjb25zdCBzdHJ1Y3QgdG0mIHRtLCBUaW1l
Wm9uZSB0eik7CisKKy8vIFRvVE0oKQorLy8KKy8vIENvbnZlcnRzIHRoZSBnaXZlbiBgYWJzbDo6
VGltZWAgdG8gYSBzdHJ1Y3QgdG0gdXNpbmcgdGhlIGdpdmVuIHRpbWUgem9uZS4KKy8vIFNlZSBj
dGltZSgzKSBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFsdWVzIG9mIHRoZSB0bSBmaWVsZHMu
CitzdHJ1Y3QgdG0gVG9UTShUaW1lIHQsIFRpbWVab25lIHR6KTsKKwogLy8gUkZDMzMzOV9mdWxs
CiAvLyBSRkMzMzM5X3NlYwogLy8KQEAgLTkyOSwxMyArMTIyNyw5IEBAIGV4dGVybiBjb25zdCBj
aGFyIFJGQzExMjNfbm9fd2RheVtdOyAgLy8gJWQgJWIgJUU0WSAlSDolTTolUyAlegogLy8KIC8v
IEV4YW1wbGU6CiAvLwotLy8gICBhYnNsOjpUaW1lWm9uZSBsYXg7Ci0vLyAgIGlmICghYWJzbDo6
TG9hZFRpbWVab25lKCJBbWVyaWNhL0xvc19BbmdlbGVzIiwgJmxheCkpIHsKLS8vICAgICAvLyBo
YW5kbGUgZXJyb3IgY2FzZQotLy8gICB9Ci0vLyAgIGFic2w6OlRpbWUgdCA9IGFic2w6OkZyb21E
YXRlVGltZSgyMDEzLCAxLCAyLCAzLCA0LCA1LCBsYXgpOwotLy8KLS8vICAgc3RyaW5nIGYgPSBh
YnNsOjpGb3JtYXRUaW1lKCIlSDolTTolUyIsIHQsIGxheCk7ICAvLyAiMDM6MDQ6MDUiCisvLyAg
IGFic2w6OkNpdmlsU2Vjb25kIGNzKDIwMTMsIDEsIDIsIDMsIDQsIDUpOworLy8gICBhYnNsOjpU
aW1lIHQgPSBhYnNsOjpGcm9tQ2l2aWwoY3MsIGxheCk7CisvLyAgIHN0ZDo6c3RyaW5nIGYgPSBh
YnNsOjpGb3JtYXRUaW1lKCIlSDolTTolUyIsIHQsIGxheCk7ICAvLyAiMDM6MDQ6MDUiCiAvLyAg
IGYgPSBhYnNsOjpGb3JtYXRUaW1lKCIlSDolTTolRTNTIiwgdCwgbGF4KTsgIC8vICIwMzowNDow
NS4wMDAiCiAvLwogLy8gTm90ZTogSWYgdGhlIGdpdmVuIGBhYnNsOjpUaW1lYCBpcyBgYWJzbDo6
SW5maW5pdGVGdXR1cmUoKWAsIHRoZSByZXR1cm5lZApAQCAtOTg1LDcgKzEyNzksNyBAQCBpbmxp
bmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIFRpbWUgdCkgewog
Ly8gaW4gdGhlIGNvbnZlcnNpb24uCiAvLwogLy8gRGF0ZSBhbmQgdGltZSBmaWVsZHMgdGhhdCBh
cmUgb3V0LW9mLXJhbmdlIHdpbGwgYmUgdHJlYXRlZCBhcyBlcnJvcnMKLS8vIHJhdGhlciB0aGFu
IG5vcm1hbGl6aW5nIHRoZW0gbGlrZSBgYWJzbDo6RnJvbURhdGVUaW1lKClgIGRvZXMuICBGb3Ig
ZXhhbXBsZSwKKy8vIHJhdGhlciB0aGFuIG5vcm1hbGl6aW5nIHRoZW0gbGlrZSBgYWJzbDo6Q2l2
aWxTZWNvbmRgIGRvZXMuICBGb3IgZXhhbXBsZSwKIC8vIGl0IGlzIGFuIGVycm9yIHRvIHBhcnNl
IHRoZSBkYXRlICJPY3QgMzIsIDIwMTMiIGJlY2F1c2UgMzIgaXMgb3V0IG9mIHJhbmdlLgogLy8K
IC8vIEEgbGVhcCBzZWNvbmQgb2YgIjo2MCIgaXMgbm9ybWFsaXplZCB0byAiOjAwIiBvZiB0aGUg
Zm9sbG93aW5nIG1pbnV0ZQpAQCAtMTAxMiwxMjEgKzEzMDYsMTEgQEAgYm9vbCBQYXJzZVRpbWUo
Y29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LCBUaW1l
KiB0aW1lLAogLy8gZ2l2ZW4gVGltZVpvbmUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGlucHV0LCBi
eSBpdHNlbGYsIGRvZXMgbm90IGlkZW50aWZ5IGEKIC8vIHVuaXF1ZSBpbnN0YW50LiAgQmVpbmcg
dGltZS16b25lIGRlcGVuZGVudCwgaXQgYWxzbyBhZG1pdHMgdGhlIHBvc3NpYmlsaXR5CiAvLyBv
ZiBhbWJpZ3VpdHkgb3Igbm9uLWV4aXN0ZW5jZSwgaW4gd2hpY2ggY2FzZSB0aGUgInByZSIgdGlt
ZSAoYXMgZGVmaW5lZAotLy8gZm9yIENvbnZlcnREYXRlVGltZSgpKSBpcyByZXR1cm5lZC4gIEZv
ciB0aGVzZSByZWFzb25zIHdlIHJlY29tbWVuZCB0aGF0CisvLyBieSBUaW1lWm9uZTo6VGltZUlu
Zm8pIGlzIHJldHVybmVkLiAgRm9yIHRoZXNlIHJlYXNvbnMgd2UgcmVjb21tZW5kIHRoYXQKIC8v
IGFsbCBkYXRlL3RpbWUgc3RyaW5ncyBpbmNsdWRlIGEgVVRDIG9mZnNldCBzbyB0aGV5J3JlIGNv
bnRleHQgaW5kZXBlbmRlbnQuCiBib29sIFBhcnNlVGltZShjb25zdCBzdGQ6OnN0cmluZyYgZm9y
bWF0LCBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsIFRpbWVab25lIHR6LAogICAgICAgICAgICAg
ICAgVGltZSogdGltZSwgc3RkOjpzdHJpbmcqIGVycik7CiAKLS8vIFN1cHBvcnQgZm9yIGZsYWcg
dmFsdWVzIG9mIHR5cGUgVGltZS4gVGltZSBmbGFncyBtdXN0IGJlIHNwZWNpZmllZCBpbiBhCi0v
LyBmb3JtYXQgdGhhdCBtYXRjaGVzIGFic2w6OlJGQzMzMzlfZnVsbC4gRm9yIGV4YW1wbGU6Ci0v
LwotLy8gICAtLXN0YXJ0X3RpbWU9MjAxNi0wMS0wMlQwMzowNDowNS42NzgrMDg6MDAKLS8vCi0v
LyBOb3RlOiBBIFVUQyBvZmZzZXQgKG9yICdaJyBpbmRpY2F0aW5nIGEgemVyby1vZmZzZXQgZnJv
bSBVVEMpIGlzIHJlcXVpcmVkLgotLy8KLS8vIEFkZGl0aW9uYWxseSwgaWYgeW91J2QgbGlrZSB0
byBzcGVjaWZ5IGEgdGltZSBhcyBhIGNvdW50IG9mCi0vLyBzZWNvbmRzL21pbGxpc2Vjb25kcy9l
dGMgZnJvbSB0aGUgVW5peCBlcG9jaCwgdXNlIGFuIGFic2w6OkR1cmF0aW9uIGZsYWcKLS8vIGFu
ZCBhZGQgdGhhdCBkdXJhdGlvbiB0byBhYnNsOjpVbml4RXBvY2goKSB0byBnZXQgYW4gYWJzbDo6
VGltZS4KLWJvb2wgUGFyc2VGbGFnKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXh0LCBUaW1lKiB0LCBz
dGQ6OnN0cmluZyogZXJyb3IpOwotc3RkOjpzdHJpbmcgVW5wYXJzZUZsYWcoVGltZSB0KTsKLQot
Ly8gVGltZVpvbmUKLS8vCi0vLyBUaGUgYGFic2w6OlRpbWVab25lYCBpcyBhbiBvcGFxdWUsIHNt
YWxsLCB2YWx1ZS10eXBlIGNsYXNzIHJlcHJlc2VudGluZyBhCi0vLyBnZW8tcG9saXRpY2FsIHJl
Z2lvbiB3aXRoaW4gd2hpY2ggcGFydGljdWxhciBydWxlcyBhcmUgdXNlZCBmb3IgY29udmVydGlu
ZwotLy8gYmV0d2VlbiBhYnNvbHV0ZSBhbmQgY2l2aWwgdGltZXMgKHNlZSBodHRwczovL2dpdC5p
by92NTlMeSkuIGBhYnNsOjpUaW1lWm9uZWAKLS8vIHZhbHVlcyBhcmUgbmFtZWQgdXNpbmcgdGhl
IFRaIGlkZW50aWZpZXJzIGZyb20gdGhlIElBTkEgVGltZSBab25lIERhdGFiYXNlLAotLy8gc3Vj
aCBhcyAiQW1lcmljYS9Mb3NfQW5nZWxlcyIgb3IgIkF1c3RyYWxpYS9TeWRuZXkiLiBgYWJzbDo6
VGltZVpvbmVgIHZhbHVlcwotLy8gYXJlIGNyZWF0ZWQgZnJvbSBmYWN0b3J5IGZ1bmN0aW9ucyBz
dWNoIGFzIGBhYnNsOjpMb2FkVGltZVpvbmUoKWAuIE5vdGU6Ci0vLyBzdHJpbmdzIGxpa2UgIlBT
VCIgYW5kICJFRFQiIGFyZSBub3QgdmFsaWQgVFogaWRlbnRpZmllcnMuIFByZWZlciB0byBwYXNz
IGJ5Ci0vLyB2YWx1ZSByYXRoZXIgdGhhbiBjb25zdCByZWZlcmVuY2UuCi0vLwotLy8gRm9yIG1v
cmUgb24gdGhlIGZ1bmRhbWVudGFsIGNvbmNlcHRzIG9mIHRpbWUgem9uZXMsIGFic29sdXRlIHRp
bWVzLCBhbmQgY2l2aWwKLS8vIHRpbWVzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9j
Y3R6I2Z1bmRhbWVudGFsLWNvbmNlcHRzCi0vLwotLy8gRXhhbXBsZXM6Ci0vLwotLy8gICBhYnNs
OjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENUaW1lWm9uZSgpOwotLy8gICBhYnNsOjpUaW1lWm9u
ZSBwc3QgPSBhYnNsOjpGaXhlZFRpbWVab25lKC04ICogNjAgKiA2MCk7Ci0vLyAgIGFic2w6OlRp
bWVab25lIGxvYyA9IGFic2w6OkxvY2FsVGltZVpvbmUoKTsKLS8vICAgYWJzbDo6VGltZVpvbmUg
bGF4OwotLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIs
ICZsYXgpKSB7Ci0vLyAgICAgLy8gaGFuZGxlIGVycm9yIGNhc2UKLS8vICAgfQotLy8KLS8vIFNl
ZSBhbHNvOgotLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2NjdHoKLS8vIC0gaHR0cDov
L3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzCi0vLyAtIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dp
a2kvWm9uZWluZm8KLWNsYXNzIFRpbWVab25lIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFRpbWVa
b25lKHRpbWVfaW50ZXJuYWw6OmNjdHo6OnRpbWVfem9uZSB0eikgOiBjel8odHopIHt9Ci0gIFRp
bWVab25lKCkgPSBkZWZhdWx0OyAgLy8gVVRDLCBidXQgcHJlZmVyIFVUQ1RpbWVab25lKCkgdG8g
YmUgZXhwbGljaXQuCi0gIFRpbWVab25lKGNvbnN0IFRpbWVab25lJikgPSBkZWZhdWx0OwotICBU
aW1lWm9uZSYgb3BlcmF0b3I9KGNvbnN0IFRpbWVab25lJikgPSBkZWZhdWx0OwotCi0gIGV4cGxp
Y2l0IG9wZXJhdG9yIHRpbWVfaW50ZXJuYWw6OmNjdHo6OnRpbWVfem9uZSgpIGNvbnN0IHsgcmV0
dXJuIGN6XzsgfQotCi0gIHN0ZDo6c3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBjel8ubmFt
ZSgpOyB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+Ci0gIGZyaWVuZCBIIEFic2xIYXNoVmFs
dWUoSCBoLCBUaW1lWm9uZSB0eikgewotICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZSho
KSwgdHouY3pfKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShU
aW1lWm9uZSBhLCBUaW1lWm9uZSBiKSB7IHJldHVybiBhLmN6XyA9PSBiLmN6XzsgfQotICBmcmll
bmQgYm9vbCBvcGVyYXRvciE9KFRpbWVab25lIGEsIFRpbWVab25lIGIpIHsgcmV0dXJuIGEuY3pf
ICE9IGIuY3pfOyB9Ci0gIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3Ry
ZWFtJiBvcywgVGltZVpvbmUgdHopIHsKLSAgICByZXR1cm4gb3MgPDwgdHoubmFtZSgpOwotICB9
Ci0KLSAgdGltZV9pbnRlcm5hbDo6Y2N0ejo6dGltZV96b25lIGN6XzsKLX07Ci0KLS8vIExvYWRU
aW1lWm9uZSgpCi0vLwotLy8gTG9hZHMgdGhlIG5hbWVkIHpvbmUuIE1heSBwZXJmb3JtIEkvTyBv
biB0aGUgaW5pdGlhbCBsb2FkIG9mIHRoZSBuYW1lZAotLy8gem9uZS4gSWYgdGhlIG5hbWUgaXMg
aW52YWxpZCwgb3Igc29tZSBvdGhlciBraW5kIG9mIGVycm9yIG9jY3VycywgcmV0dXJucwotLy8g
YGZhbHNlYCBhbmQgYCp0emAgaXMgc2V0IHRvIHRoZSBVVEMgdGltZSB6b25lLgotaW5saW5lIGJv
b2wgTG9hZFRpbWVab25lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBUaW1lWm9uZSogdHopIHsK
LSAgaWYgKG5hbWUgPT0gImxvY2FsdGltZSIpIHsKLSAgICAqdHogPSBUaW1lWm9uZSh0aW1lX2lu
dGVybmFsOjpjY3R6Ojpsb2NhbF90aW1lX3pvbmUoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0K
LSAgdGltZV9pbnRlcm5hbDo6Y2N0ejo6dGltZV96b25lIGN6OwotICBjb25zdCBib29sIGIgPSB0
aW1lX2ludGVybmFsOjpjY3R6Ojpsb2FkX3RpbWVfem9uZShuYW1lLCAmY3opOwotICAqdHogPSBU
aW1lWm9uZShjeik7Ci0gIHJldHVybiBiOwotfQotCi0vLyBGaXhlZFRpbWVab25lKCkKLS8vCi0v
LyBSZXR1cm5zIGEgVGltZVpvbmUgdGhhdCBpcyBhIGZpeGVkIG9mZnNldCAoc2Vjb25kcyBlYXN0
KSBmcm9tIFVUQy4KLS8vIE5vdGU6IElmIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgb2Zmc2V0
IGlzIGdyZWF0ZXIgdGhhbiAyNCBob3VycwotLy8geW91J2xsIGdldCBVVEMgKGkuZS4sIG5vIG9m
ZnNldCkgaW5zdGVhZC4KLWlubGluZSBUaW1lWm9uZSBGaXhlZFRpbWVab25lKGludCBzZWNvbmRz
KSB7Ci0gIHJldHVybiBUaW1lWm9uZSgKLSAgICAgIHRpbWVfaW50ZXJuYWw6OmNjdHo6OmZpeGVk
X3RpbWVfem9uZShzdGQ6OmNocm9ubzo6c2Vjb25kcyhzZWNvbmRzKSkpOwotfQotCi0vLyBVVENU
aW1lWm9uZSgpCi0vLwotLy8gQ29udmVuaWVuY2UgbWV0aG9kIHJldHVybmluZyB0aGUgVVRDIHRp
bWUgem9uZS4KLWlubGluZSBUaW1lWm9uZSBVVENUaW1lWm9uZSgpIHsKLSAgcmV0dXJuIFRpbWVa
b25lKHRpbWVfaW50ZXJuYWw6OmNjdHo6OnV0Y190aW1lX3pvbmUoKSk7Ci19Ci0KLS8vIExvY2Fs
VGltZVpvbmUoKQotLy8KLS8vIENvbnZlbmllbmNlIG1ldGhvZCByZXR1cm5pbmcgdGhlIGxvY2Fs
IHRpbWUgem9uZSwgb3IgVVRDIGlmIHRoZXJlIGlzCi0vLyBubyBjb25maWd1cmVkIGxvY2FsIHpv
bmUuICBXYXJuaW5nOiBCZSB3YXJ5IG9mIHVzaW5nIExvY2FsVGltZVpvbmUoKSwKLS8vIGFuZCBw
YXJ0aWN1bGFybHkgc28gaW4gYSBzZXJ2ZXIgcHJvY2VzcywgYXMgdGhlIHpvbmUgY29uZmlndXJl
ZCBmb3IgdGhlCi0vLyBsb2NhbCBtYWNoaW5lIHNob3VsZCBiZSBpcnJlbGV2YW50LiAgUHJlZmVy
IGFuIGV4cGxpY2l0IHpvbmUgbmFtZS4KLWlubGluZSBUaW1lWm9uZSBMb2NhbFRpbWVab25lKCkg
ewotICByZXR1cm4gVGltZVpvbmUodGltZV9pbnRlcm5hbDo6Y2N0ejo6bG9jYWxfdGltZV96b25l
KCkpOwotfQotCiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBJbXBsZW1lbnRhdGlvbiBEZXRh
aWxzIEZvbGxvdwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTE2NCwxNyArMTM0OCwyMCBA
QCBjb25zdGV4cHIgRHVyYXRpb24gTWFrZU5vcm1hbGl6ZWREdXJhdGlvbihpbnQ2NF90IHNlYywg
aW50NjRfdCB0aWNrcykgewogICByZXR1cm4gKHRpY2tzIDwgMCkgPyBNYWtlRHVyYXRpb24oc2Vj
IC0gMSwgdGlja3MgKyBrVGlja3NQZXJTZWNvbmQpCiAgICAgICAgICAgICAgICAgICAgICA6IE1h
a2VEdXJhdGlvbihzZWMsIHRpY2tzKTsKIH0KKwogLy8gUHJvdmlkZSBhY2Nlc3MgdG8gdGhlIER1
cmF0aW9uIHJlcHJlc2VudGF0aW9uLgogY29uc3RleHByIGludDY0X3QgR2V0UmVwSGkoRHVyYXRp
b24gZCkgeyByZXR1cm4gZC5yZXBfaGlfOyB9CiBjb25zdGV4cHIgdWludDMyX3QgR2V0UmVwTG8o
RHVyYXRpb24gZCkgeyByZXR1cm4gZC5yZXBfbG9fOyB9CisKKy8vIFJldHVybnMgdHJ1ZSBpZmYg
ZCBpcyBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eS4KIGNvbnN0ZXhwciBib29sIElzSW5m
aW5pdGVEdXJhdGlvbihEdXJhdGlvbiBkKSB7IHJldHVybiBHZXRSZXBMbyhkKSA9PSB+MFU7IH0K
IAogLy8gUmV0dXJucyBhbiBpbmZpbml0ZSBEdXJhdGlvbiB3aXRoIHRoZSBvcHBvc2l0ZSBzaWdu
LgogLy8gUkVRVUlSRVM6IElzSW5maW5pdGVEdXJhdGlvbihkKQogY29uc3RleHByIER1cmF0aW9u
IE9wcG9zaXRlSW5maW5pdHkoRHVyYXRpb24gZCkgewogICByZXR1cm4gR2V0UmVwSGkoZCkgPCAw
Ci0gICAgICAgICAgICAgPyBNYWtlRHVyYXRpb24oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KCksIH4wVSkKLSAgICAgICAgICAgICA6IE1ha2VEdXJhdGlvbihzdGQ6Om51bWVyaWNf
bGltaXRzPGludDY0X3Q+OjptaW4oKSwgfjBVKTsKKyAgICAgICAgICAgICA/IE1ha2VEdXJhdGlv
bigoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KSgpLCB+MFUpCisgICAgICAgICAg
ICAgOiBNYWtlRHVyYXRpb24oKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbikoKSwg
fjBVKTsKIH0KIAogLy8gUmV0dXJucyAoLW4pLTEgKGVxdWl2YWxlbnRseSAtKG4rMSkpIHdpdGhv
dXQgYXZvaWRhYmxlIG92ZXJmbG93LgpAQCAtMTE5OSwxNCArMTM4NiwxNCBAQCBjb25zdGV4cHIg
RHVyYXRpb24gRnJvbUludDY0KGludDY0X3Qgdiwgc3RkOjpyYXRpbzwxLCBOPikgewogICAgICAg
diAvIE4sIHYgJSBOICoga1RpY2tzUGVyTmFub3NlY29uZCAqIDEwMDAgKiAxMDAwICogMTAwMCAv
IE4pOwogfQogY29uc3RleHByIER1cmF0aW9uIEZyb21JbnQ2NChpbnQ2NF90IHYsIHN0ZDo6cmF0
aW88NjA+KSB7Ci0gIHJldHVybiAodiA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
YXgoKSAvIDYwICYmCi0gICAgICAgICAgdiA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptaW4oKSAvIDYwKQorICByZXR1cm4gKHYgPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1heCkoKSAvIDYwICYmCisgICAgICAgICAgdiA+PSAoc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWluKSgpIC8gNjApCiAgICAgICAgICAgICAgPyBNYWtlRHVyYXRpb24odiAqIDYw
KQogICAgICAgICAgICAgIDogdiA+IDAgPyBJbmZpbml0ZUR1cmF0aW9uKCkgOiAtSW5maW5pdGVE
dXJhdGlvbigpOwogfQogY29uc3RleHByIER1cmF0aW9uIEZyb21JbnQ2NChpbnQ2NF90IHYsIHN0
ZDo6cmF0aW88MzYwMD4pIHsKLSAgcmV0dXJuICh2IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
NjRfdD46Om1heCgpIC8gMzYwMCAmJgotICAgICAgICAgIHYgPj0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWluKCkgLyAzNjAwKQorICByZXR1cm4gKHYgPD0gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50NjRfdD46Om1heCkoKSAvIDM2MDAgJiYKKyAgICAgICAgICB2ID49IChzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4pKCkgLyAzNjAwKQogICAgICAgICAgICAgID8gTWFr
ZUR1cmF0aW9uKHYgKiAzNjAwKQogICAgICAgICAgICAgIDogdiA+IDAgPyBJbmZpbml0ZUR1cmF0
aW9uKCkgOiAtSW5maW5pdGVEdXJhdGlvbigpOwogfQpAQCAtMTI2MywxNCArMTQ1MCwxNSBAQCBU
IFRvQ2hyb25vRHVyYXRpb24oRHVyYXRpb24gZCkgewogICB1c2luZyBQZXJpb2QgPSB0eXBlbmFt
ZSBUOjpwZXJpb2Q7CiAgIHN0YXRpY19hc3NlcnQoSXNWYWxpZFJlcDY0PFJlcD4oMCksICJkdXJh
dGlvbjo6cmVwIGlzIGludmFsaWQiKTsKICAgaWYgKHRpbWVfaW50ZXJuYWw6OklzSW5maW5pdGVE
dXJhdGlvbihkKSkKLSAgICByZXR1cm4gZCA8IFplcm9EdXJhdGlvbigpID8gVDo6bWluKCkgOiBU
OjptYXgoKTsKKyAgICByZXR1cm4gZCA8IFplcm9EdXJhdGlvbigpID8gKFQ6Om1pbikoKSA6IChU
OjptYXgpKCk7CiAgIGNvbnN0IGF1dG8gdiA9IFRvSW50NjQoZCwgUGVyaW9ke30pOwotICBpZiAo
diA+IHN0ZDo6bnVtZXJpY19saW1pdHM8UmVwPjo6bWF4KCkpIHJldHVybiBUOjptYXgoKTsKLSAg
aWYgKHYgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFJlcD46Om1pbigpKSByZXR1cm4gVDo6bWluKCk7
CisgIGlmICh2ID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8UmVwPjo6bWF4KSgpKSByZXR1cm4gKFQ6
Om1heCkoKTsKKyAgaWYgKHYgPCAoc3RkOjpudW1lcmljX2xpbWl0czxSZXA+OjptaW4pKCkpIHJl
dHVybiAoVDo6bWluKSgpOwogICByZXR1cm4gVHt2fTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHRp
bWVfaW50ZXJuYWwKKwogY29uc3RleHByIER1cmF0aW9uIE5hbm9zZWNvbmRzKGludDY0X3Qgbikg
ewogICByZXR1cm4gdGltZV9pbnRlcm5hbDo6RnJvbUludDY0KG4sIHN0ZDo6bmFub3t9KTsKIH0K
QEAgLTEyOTMsNyArMTQ4MSw4IEBAIGNvbnN0ZXhwciBEdXJhdGlvbiBIb3VycyhpbnQ2NF90IG4p
IHsKIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChEdXJhdGlvbiBsaHMsIER1cmF0aW9uIHJocykg
ewogICByZXR1cm4gdGltZV9pbnRlcm5hbDo6R2V0UmVwSGkobGhzKSAhPSB0aW1lX2ludGVybmFs
OjpHZXRSZXBIaShyaHMpCiAgICAgICAgICAgICAgPyB0aW1lX2ludGVybmFsOjpHZXRSZXBIaShs
aHMpIDwgdGltZV9pbnRlcm5hbDo6R2V0UmVwSGkocmhzKQotICAgICAgICAgICAgIDogdGltZV9p
bnRlcm5hbDo6R2V0UmVwSGkobGhzKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
aW4oKQorICAgICAgICAgICAgIDogdGltZV9pbnRlcm5hbDo6R2V0UmVwSGkobGhzKSA9PQorICAg
ICAgICAgICAgICAgICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKSgp
CiAgICAgICAgICAgICAgICAgICAgPyB0aW1lX2ludGVybmFsOjpHZXRSZXBMbyhsaHMpICsgMSA8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV9pbnRlcm5hbDo6R2V0UmVwTG8ocmhzKSAr
IDEKICAgICAgICAgICAgICAgICAgICA6IHRpbWVfaW50ZXJuYWw6OkdldFJlcExvKGxocykgPApA
QCAtMTMxOCw3ICsxNTA3LDggQEAgY29uc3RleHByIER1cmF0aW9uIG9wZXJhdG9yLShEdXJhdGlv
biBkKSB7CiAgIC8vIGEgc2Vjb25kJ3Mgd29ydGggb2YgdGlja3MgYW5kIGF2b2lkIG92ZXJmbG93
IChhcyBuZWdhdGluZyBpbnQ2NF90LW1pbiArIDEKICAgLy8gaXMgc2FmZSkuCiAgIHJldHVybiB0
aW1lX2ludGVybmFsOjpHZXRSZXBMbyhkKSA9PSAwCi0gICAgICAgICAgICAgPyB0aW1lX2ludGVy
bmFsOjpHZXRSZXBIaShkKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKQor
ICAgICAgICAgICAgID8gdGltZV9pbnRlcm5hbDo6R2V0UmVwSGkoZCkgPT0KKyAgICAgICAgICAg
ICAgICAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbikoKQogICAgICAg
ICAgICAgICAgICAgID8gSW5maW5pdGVEdXJhdGlvbigpCiAgICAgICAgICAgICAgICAgICAgOiB0
aW1lX2ludGVybmFsOjpNYWtlRHVyYXRpb24oLXRpbWVfaW50ZXJuYWw6OkdldFJlcEhpKGQpKQog
ICAgICAgICAgICAgIDogdGltZV9pbnRlcm5hbDo6SXNJbmZpbml0ZUR1cmF0aW9uKGQpCkBAIC0x
MzMxLDcgKzE1MjEsOCBAQCBjb25zdGV4cHIgRHVyYXRpb24gb3BlcmF0b3ItKER1cmF0aW9uIGQp
IHsKIH0KIAogY29uc3RleHByIER1cmF0aW9uIEluZmluaXRlRHVyYXRpb24oKSB7Ci0gIHJldHVy
biB0aW1lX2ludGVybmFsOjpNYWtlRHVyYXRpb24oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KCksIH4wVSk7CisgIHJldHVybiB0aW1lX2ludGVybmFsOjpNYWtlRHVyYXRpb24oKHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCkoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB+MFUpOwogfQogCiBjb25zdGV4cHIgRHVyYXRpb24gRnJvbUNocm9u
byhjb25zdCBzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMmIGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvdGltZV9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWVfYmVuY2htYXJrLmNjCmlu
ZGV4IGUxMDA5OTQ2Y2Q1ODZlZjMzMDNlMDUzMzM5MjJhNjk5MDM5NTM3NTQuLjk5ZTYyNzk5ODRl
Njg3Mzg4NzdmOTA5ZTQ5NzdhMDVkNDQ5MDIwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGlt
ZV9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lX2JlbmNobWFyay5jYwpAQCAtMyw3
ICszLDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTY5LDMyICsxNjksMzIgQEAg
dm9pZCBCTV9UaW1lX1RvVW5peFNlY29uZHMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKIEJF
TkNITUFSSyhCTV9UaW1lX1RvVW5peFNlY29uZHMpOwogCiAvLwotLy8gRnJvbURhdGVUaW1lCisv
LyBGcm9tQ2l2aWwKIC8vCi0vLyBJbiBlYWNoICJGcm9tRGF0ZVRpbWUiIGJlbmNobWFyayB3ZSBz
d2l0Y2ggYmV0d2VlbiB0d28gWU1EaG1zCi0vLyB2YWx1ZXMgc2VwYXJhdGVkIGJ5IGF0IGxlYXN0
IG9uZSB0cmFuc2l0aW9uIGluIG9yZGVyIHRvIGRlZmVhdCBhbnkKLS8vIGludGVybmFsIGNhY2hp
bmcgb2YgcHJldmlvdXMgcmVzdWx0cyAoZS5nLiwgc2VlIHRpbWVfbG9jYWxfaGludF8pLgorLy8g
SW4gZWFjaCAiRnJvbUNpdmlsIiBiZW5jaG1hcmsgd2Ugc3dpdGNoIGJldHdlZW4gdHdvIFlNRGht
cyB2YWx1ZXMKKy8vIHNlcGFyYXRlZCBieSBhdCBsZWFzdCBvbmUgdHJhbnNpdGlvbiBpbiBvcmRl
ciB0byBkZWZlYXQgYW55IGludGVybmFsCisvLyBjYWNoaW5nIG9mIHByZXZpb3VzIHJlc3VsdHMg
KGUuZy4sIHNlZSB0aW1lX2xvY2FsX2hpbnRfKS4KIC8vCiAvLyBUaGUgIlVUQyIgdmFyaWFudHMg
dXNlIFVUQyBpbnN0ZWFkIG9mIHRoZSBHb29nbGUvbG9jYWwgdGltZSB6b25lLgogLy8gVGhlICJE
YXkwIiB2YXJpYW50cyByZXF1aXJlIG5vcm1hbGl6YXRpb24gb2YgdGhlIGRheSBvZiBtb250aC4K
IC8vCiAKLXZvaWQgQk1fVGltZV9Gcm9tRGF0ZVRpbWVfQWJzbChiZW5jaG1hcms6OlN0YXRlJiBz
dGF0ZSkgewordm9pZCBCTV9UaW1lX0Zyb21DaXZpbF9BYnNsKGJlbmNobWFyazo6U3RhdGUmIHN0
YXRlKSB7CiAgIGNvbnN0IGFic2w6OlRpbWVab25lIHR6ID0KICAgICAgIGFic2w6OnRpbWVfaW50
ZXJuYWw6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIpOwogICBpbnQgaSA9IDA7
CiAgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZygpKSB7CiAgICAgaWYgKChpICYgMSkgPT0gMCkg
ewotICAgICAgYWJzbDo6RnJvbURhdGVUaW1lKDIwMTQsIDEyLCAxOCwgMjAsIDE2LCAxOCwgdHop
OworICAgICAgYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDIwMTQsIDEyLCAxOCwg
MjAsIDE2LCAxOCksIHR6KTsKICAgICB9IGVsc2UgewotICAgICAgYWJzbDo6RnJvbURhdGVUaW1l
KDIwMTMsIDExLCAxNSwgMTgsIDMwLCAyNywgdHopOworICAgICAgYWJzbDo6RnJvbUNpdmlsKGFi
c2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAxNSwgMTgsIDMwLCAyNyksIHR6KTsKICAgICB9CiAg
ICAgKytpOwogICB9CiB9Ci1CRU5DSE1BUksoQk1fVGltZV9Gcm9tRGF0ZVRpbWVfQWJzbCk7CitC
RU5DSE1BUksoQk1fVGltZV9Gcm9tQ2l2aWxfQWJzbCk7CiAKLXZvaWQgQk1fVGltZV9Gcm9tRGF0
ZVRpbWVfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9UaW1lX0Zyb21D
aXZpbF9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIC8vIE5vIHRpbWV6b25lIHN1
cHBvcnQsIHNvIGp1c3QgdXNlIGxvY2FsdGltZS4KICAgaW50IGkgPSAwOwogICB3aGlsZSAoc3Rh
dGUuS2VlcFJ1bm5pbmcoKSkgewpAQCAtMjE5LDMyICsyMTksMzIgQEAgdm9pZCBCTV9UaW1lX0Zy
b21EYXRlVGltZV9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgICAgKytpOwogICB9
CiB9Ci1CRU5DSE1BUksoQk1fVGltZV9Gcm9tRGF0ZVRpbWVfTGliYyk7CitCRU5DSE1BUksoQk1f
VGltZV9Gcm9tQ2l2aWxfTGliYyk7CiAKLXZvaWQgQk1fVGltZV9Gcm9tRGF0ZVRpbWVVVENfQWJz
bChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9UaW1lX0Zyb21DaXZpbFVUQ19B
YnNsKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGNvbnN0IGFic2w6OlRpbWVab25lIHR6
ID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKICAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nKCkpIHsK
LSAgICBGcm9tRGF0ZVRpbWUoMjAxNCwgMTIsIDE4LCAyMCwgMTYsIDE4LCB0eik7CisgICAgYWJz
bDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDIwMTQsIDEyLCAxOCwgMjAsIDE2LCAxOCks
IHR6KTsKICAgfQogfQotQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbURhdGVUaW1lVVRDX0Fic2wpOwor
QkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmlsVVRDX0Fic2wpOwogCi12b2lkIEJNX1RpbWVfRnJv
bURhdGVUaW1lRGF5MF9BYnNsKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1Rp
bWVfRnJvbUNpdmlsRGF5MF9BYnNsKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGNvbnN0
IGFic2w6OlRpbWVab25lIHR6ID0KICAgICAgIGFic2w6OnRpbWVfaW50ZXJuYWw6OkxvYWRUaW1l
Wm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIpOwogICBpbnQgaSA9IDA7CiAgIHdoaWxlIChzdGF0
ZS5LZWVwUnVubmluZygpKSB7CiAgICAgaWYgKChpICYgMSkgPT0gMCkgewotICAgICAgYWJzbDo6
RnJvbURhdGVUaW1lKDIwMTQsIDEyLCAwLCAyMCwgMTYsIDE4LCB0eik7CisgICAgICBhYnNsOjpG
cm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMTIsIDAsIDIwLCAxNiwgMTgpLCB0eik7
CiAgICAgfSBlbHNlIHsKLSAgICAgIGFic2w6OkZyb21EYXRlVGltZSgyMDEzLCAxMSwgMCwgMTgs
IDMwLCAyNywgdHopOworICAgICAgYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDIw
MTMsIDExLCAwLCAxOCwgMzAsIDI3KSwgdHopOwogICAgIH0KICAgICArK2k7CiAgIH0KIH0KLUJF
TkNITUFSSyhCTV9UaW1lX0Zyb21EYXRlVGltZURheTBfQWJzbCk7CitCRU5DSE1BUksoQk1fVGlt
ZV9Gcm9tQ2l2aWxEYXkwX0Fic2wpOwogCi12b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lRGF5MF9M
aWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1RpbWVfRnJvbUNpdmlsRGF5
MF9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIC8vIE5vIHRpbWV6b25lIHN1cHBv
cnQsIHNvIGp1c3QgdXNlIGxvY2FsdGltZS4KICAgaW50IGkgPSAwOwogICB3aGlsZSAoc3RhdGUu
S2VlcFJ1bm5pbmcoKSkgewpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgQk1fVGltZV9Gcm9tRGF0
ZVRpbWVEYXkwX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgICArK2k7CiAgIH0K
IH0KLUJFTkNITUFSSyhCTV9UaW1lX0Zyb21EYXRlVGltZURheTBfTGliYyk7CitCRU5DSE1BUkso
Qk1fVGltZV9Gcm9tQ2l2aWxEYXkwX0xpYmMpOwogCiAvLwogLy8gVG8vRnJvbVRpbWVzcGVjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWVfbm9ybV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1l
X25vcm1fdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQzNjI0MmU0MTI1
NTc4ZTJmMTVhNzg3M2Q2YzFjNmIwOWNhNmFlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWVfbm9ybV90ZXN0LmNjCisrKyAvZGV2
L251bGwKQEAgLTEsMzA2ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0
aG9ycy4KLS8vCi0vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKLS8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLS8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAotLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCi0vLwotLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLS8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgotLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCi0KLS8vIFRoaXMgZmlsZSBjb250YWlucyB0ZXN0cyBmb3IgRnJvbURhdGVUaW1lKCkg
bm9ybWFsaXphdGlvbiwgd2hpY2ggaXMKLS8vIHRpbWUtem9uZSBpbmRlcGVuZGVudCBzbyB3ZSBq
dXN0IHVzZSBVVEMgdGhyb3VnaG91dC4KLQotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0jaW5jbHVkZSA8
bGltaXRzPgotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgotI2luY2x1ZGUgImFic2wvdGltZS9pbnRlcm5hbC90ZXN0X3V0aWwuaCIKLSNpbmNsdWRl
ICJhYnNsL3RpbWUvdGltZS5oIgotCi1uYW1lc3BhY2UgewotCi1URVNUKFRpbWVOb3JtQ2FzZSwg
U2ltcGxlT3ZlcmZsb3cpIHsKLSAgY29uc3QgYWJzbDo6VGltZVpvbmUgdXRjID0gYWJzbDo6VVRD
VGltZVpvbmUoKTsKLQotICBhYnNsOjpUaW1lQ29udmVyc2lvbiB0YyA9Ci0gICAgICBhYnNsOjpD
b252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDE1LCAxNiwgMzIsIDU5ICsgMSwgdXRjKTsKLSAgRVhQ
RUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lv
bjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYWJzbDo6VGltZTo6QnJlYWtkb3duIGJkID0gdGMucHJl
LkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDExLCAxNSwg
MTYsIDMzLCAwLCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAx
MywgMTEsIDE1LCAxNiwgNTkgKyAxLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFs
aXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5k
KTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShi
ZCwgMjAxMywgMTEsIDE1LCAxNywgMCwgMTQsIDAsIGZhbHNlKTsKLQotICB0YyA9IGFic2w6OkNv
bnZlcnREYXRlVGltZSgyMDEzLCAxMSwgMTUsIDIzICsgMSwgMzIsIDE0LCB1dGMpOwotICBFWFBF
Q1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9u
OjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVS
TkFMX0VYUEVDVF9USU1FKGJkLCAyMDEzLCAxMSwgMTYsIDAsIDMyLCAxNCwgMCwgZmFsc2UpOwot
Ci0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDExLCAzMCArIDEsIDE2LCAzMiwg
MTQsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJz
bDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0
Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDEyLCAxLCAxNiwgMzIs
IDE0LCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTIg
KyAxLCAxNSwgMTYsIDMyLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7
Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAg
YmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAx
NCwgMSwgMTUsIDE2LCAzMiwgMTQsIDAsIGZhbHNlKTsKLX0KLQotVEVTVChUaW1lTm9ybUNhc2Us
IFNpbXBsZVVuZGVyZmxvdykgewotICBjb25zdCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpV
VENUaW1lWm9uZSgpOwotCi0gIGFic2w6OlRpbWVDb252ZXJzaW9uIHRjID0gQ29udmVydERhdGVU
aW1lKDIwMTMsIDExLCAxNSwgMTYsIDMyLCAwIC0gMSwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMu
bm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0
Yy5raW5kKTsKLSAgYWJzbDo6VGltZTo6QnJlYWtkb3duIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0g
IEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDExLCAxNSwgMTYsIDMxLCA1OSwg
MCwgZmFsc2UpOwotCi0gIHRjID0gQ29udmVydERhdGVUaW1lKDIwMTMsIDExLCAxNSwgMTYsIDAg
LSAxLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9F
UShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUu
SW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxMywgMTEsIDE1LCAx
NSwgNTksIDE0LCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEs
IDE1LCAwIC0gMSwgMzIsIDE0LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsK
LSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBi
ZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEz
LCAxMSwgMTQsIDIzLCAzMiwgMTQsIDAsIGZhbHNlKTsKLQotICB0YyA9IENvbnZlcnREYXRlVGlt
ZSgyMDEzLCAxMSwgMSAtIDEsIDE2LCAzMiwgMTQsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5v
cm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMu
a2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJ
TUUoYmQsIDIwMTMsIDEwLCAzMSwgMTYsIDMyLCAxNCwgMCwgZmFsc2UpOwotCi0gIHRjID0gQ29u
dmVydERhdGVUaW1lKDIwMTMsIDEgLSAxLCAxNSwgMTYsIDMyLCAxNCwgdXRjKTsKLSAgRVhQRUNU
X1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6
VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5B
TF9FWFBFQ1RfVElNRShiZCwgMjAxMiwgMTIsIDE1LCAxNiwgMzIsIDE0LCAwLCBmYWxzZSk7Ci19
Ci0KLVRFU1QoVGltZU5vcm1DYXNlLCBNdWx0aXBsZU92ZXJmbG93KSB7Ci0gIGNvbnN0IGFic2w6
OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7Ci0gIGFic2w6OlRpbWVDb252ZXJz
aW9uIHRjID0gQ29udmVydERhdGVUaW1lKDIwMTMsIDEyLCAzMSwgMjMsIDU5LCA1OSArIDEsIHV0
Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGlt
ZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBi
ZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDE0
LCAxLCAxLCAwLCAwLCAwLCAwLCBmYWxzZSk7Ci19Ci0KLVRFU1QoVGltZU5vcm1DYXNlLCBNdWx0
aXBsZVVuZGVyZmxvdykgewotICBjb25zdCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENU
aW1lWm9uZSgpOwotICBhYnNsOjpUaW1lQ29udmVyc2lvbiB0YyA9IGFic2w6OkNvbnZlcnREYXRl
VGltZSgyMDE0LCAxLCAxLCAwLCAwLCAwIC0gMSwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9y
bWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5r
aW5kKTsKLSAgYWJzbDo6VGltZTo6QnJlYWtkb3duIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFC
U0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDEyLCAzMSwgMjMsIDU5LCA1OSwgMCwg
ZmFsc2UpOwotfQotCi1URVNUKFRpbWVOb3JtQ2FzZSwgT3ZlcmZsb3dMaW1pdHMpIHsKLSAgY29u
c3QgYWJzbDo6VGltZVpvbmUgdXRjID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKLSAgYWJzbDo6VGlt
ZUNvbnZlcnNpb24gdGM7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZDsKLQotICBjb25zdCBp
bnQga2ludG1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7Ci0gIHRjID0gYWJz
bDo6Q29udmVydERhdGVUaW1lKDAsIGtpbnRtYXgsIGtpbnRtYXgsIGtpbnRtYXgsIGtpbnRtYXgs
IGtpbnRtYXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Yyk7Ci0gIEVYUEVDVF9U
UlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVO
SVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxf
RVhQRUNUX1RJTUUoYmQsIDE4NTA4NTcxNSwgMTEsIDI3LCAxMiwgMjEsIDcsIDAsIGZhbHNlKTsK
LQotICBjb25zdCBpbnQga2ludG1pbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7
Ci0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDAsIGtpbnRtaW4sIGtpbnRtaW4sIGtpbnRt
aW4sIGtpbnRtaW4sIGtpbnRtaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Yyk7
Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNv
bnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFC
U0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIC0xODUwODU3MTcsIDEwLCAzMSwgMTAsIDM3LCA1
MiwgMCwgZmFsc2UpOwotCi0gIGNvbnN0IGludDY0X3QgbWF4X3llYXIgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDY0X3Q+OjptYXgoKTsKLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUobWF4
X3llYXIsIDEyLCAzMSwgMjMsIDU5LCA1OSwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFs
aXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5k
KTsKLSAgRVhQRUNUX0VRKGFic2w6OkluZmluaXRlRnV0dXJlKCksIHRjLnByZSk7Ci0KLSAgY29u
c3QgaW50NjRfdCBtaW5feWVhciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigp
OwotICB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZShtaW5feWVhciwgMSwgMSwgMCwgMCwgMCwg
dXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpU
aW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgRVhQRUNUX0VRKGFic2w6OkluZmlu
aXRlUGFzdCgpLCB0Yy5wcmUpOwotfQotCi1URVNUKFRpbWVOb3JtQ2FzZSwgQ29tcGxleE92ZXJm
bG93KSB7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7
Ci0KLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gdGMgPQotICAgICAgQ29udmVydERhdGVUaW1lKDIw
MTMsIDExLCAxNSwgMTYsIDMyLCAxNCArIDEyMzQ1Njc4OSwgdXRjKTsKLSAgRVhQRUNUX1RSVUUo
dGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVF
LCB0Yy5raW5kKTsKLSAgYWJzbDo6VGltZTo6QnJlYWtkb3duIGJkID0gdGMucHJlLkluKHV0Yyk7
Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTcsIDEwLCAxNCwgMTQsIDUsIDIz
LCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDE1
LCAxNiwgMzIgKyAxMjM0NTY3LCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXpl
ZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsK
LSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwg
MjAxNiwgMywgMjIsIDAsIDM5LCAxNCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVy
dERhdGVUaW1lKDIwMTMsIDExLCAxNSwgMTYgKyAxMjM0NTYsIDMyLCAxNCwgdXRjKTsKLSAgRVhQ
RUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lv
bjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRF
Uk5BTF9FWFBFQ1RfVElNRShiZCwgMjAyNywgMTIsIDE2LCAxNiwgMzIsIDE0LCAwLCBmYWxzZSk7
Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDE1ICsgMTIzNCwgMTYs
IDMyLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9F
UShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUu
SW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxNywgNCwgMiwgMTYs
IDMyLCAxNCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMs
IDExICsgMTIzLCAxNSwgMTYsIDMyLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFs
aXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5k
KTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShi
ZCwgMjAyNCwgMiwgMTUsIDE2LCAzMiwgMTQsIDAsIGZhbHNlKTsKLX0KLQotVEVTVChUaW1lTm9y
bUNhc2UsIENvbXBsZXhVbmRlcmZsb3cpIHsKLSAgY29uc3QgYWJzbDo6VGltZVpvbmUgdXRjID0g
YWJzbDo6VVRDVGltZVpvbmUoKTsKLQotICBhYnNsOjpUaW1lQ29udmVyc2lvbiB0YyA9Ci0gICAg
ICBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMTk5OSwgMywgMCwgMCwgMCwgMCwgdXRjKTsgIC8vIHll
YXIgNDAwCi0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6
VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93
biBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAx
OTk5LCAyLCAyOCwgMCwgMCwgMCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERh
dGVUaW1lKDIwMTMsIDExLCAxNSwgMTYsIDMyLCAxNCAtIDEyMzQ1Njc4OSwgdXRjKTsKLSAgRVhQ
RUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lv
bjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRF
Uk5BTF9FWFBFQ1RfVElNRShiZCwgMjAwOSwgMTIsIDE3LCAxOCwgNTksIDUsIDAsIGZhbHNlKTsK
LQotICB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDEzLCAxMSwgMTUsIDE2LCAzMiAtIDEy
MzQ1NjcsIDE0LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNU
X0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnBy
ZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDExLCA3LCAxMiwg
OCwgMjUsIDE0LCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAx
MywgMTEsIDE1LCAxNiAtIDEyMzQ1NiwgMzIsIDE0LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5u
b3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRj
LmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9U
SU1FKGJkLCAxOTk5LCAxMCwgMTYsIDE2LCAzMiwgMTQsIDAsIGZhbHNlKTsKLQotICB0YyA9IGFi
c2w6OkNvbnZlcnREYXRlVGltZSgyMDEzLCAxMSwgMTUgLSAxMjM0LCAxNiwgMzIsIDE0LCB1dGMp
OwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVD
b252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBB
QlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEwLCA2LCAzMCwgMTYsIDMyLCAxNCwgMCwg
ZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDExIC0gMTIzLCAx
NSwgMTYsIDMyLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVY
UEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0
Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAwMywgOCwg
MTUsIDE2LCAzMiwgMTQsIDAsIGZhbHNlKTsKLX0KLQotVEVTVChUaW1lTm9ybUNhc2UsIE1pc2ht
YXNoKSB7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7
Ci0KLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gdGMgPQotICAgICAgYWJzbDo6Q29udmVydERhdGVU
aW1lKDIwMTMsIDExIC0gMTIzLCAxNSArIDEyMzQsIDE2IC0gMTIzNDU2LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMyICsgMTIzNDU2NywgMTQgLSAxMjM0NTY3ODksIHV0Yyk7Ci0gIEVY
UEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNp
b246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IHRjLnBy
ZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAxOTkxLCA1LCA5LCAz
LCA2LCA1LCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywg
MTEgKyAxMjMsIDE1IC0gMTIzNCwgMTYgKyAxMjM0NTYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMyIC0gMTIzNDU2NywgMTQgKyAxMjM0NTY3ODksIHV0Yyk7Ci0gIEVYUEVDVF9UUlVF
KHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFV
RSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQ
RUNUX1RJTUUoYmQsIDIwMzYsIDUsIDI0LCA1LCA1OCwgMjMsIDAsIGZhbHNlKTsKLQotICAvLyBI
ZXJlIGlzIGEgbm9ybWFsaXphdGlvbiBjYXNlIHdlIGdvdCB3cm9uZyBmb3IgYSB3aGlsZS4gIEJl
Y2F1c2UgdGhlCi0gIC8vIGRheSBpcyBjb252ZXJ0ZWQgdG8gIjEiIHdpdGhpbiBhIDQwMC15ZWFy
ICgxNDYwOTctZGF5KSBwZXJpb2QsIHdlCi0gIC8vIGRpZG4ndCBuZWVkIHRvIHJvbGwgdGhlIG1v
bnRoIGFuZCBzbyB3ZSBkaWRuJ3QgbWFyayBpdCBhcyBub3JtYWxpemVkLgotICB0YyA9IGFic2w6
OkNvbnZlcnREYXRlVGltZSgyMDEzLCAxMSwgLTE0NjA5NyArIDEsIDE2LCAzMiwgMTQsIHV0Yyk7
Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNv
bnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFC
U0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDE2MTMsIDExLCAxLCAxNiwgMzIsIDE0LCAwLCBm
YWxzZSk7Ci0KLSAgLy8gRXZlbiB0aG91Z2ggdGhlIG1vbnRoIG92ZXJmbG93IGNvbXBlbnNhdGVz
IGZvciB0aGUgZGF5IHVuZGVyZmxvdywKLSAgLy8gdGhpcyBzaG91bGQgc3RpbGwgYmUgbWFya2Vk
IGFzIG5vcm1hbGl6ZWQuCi0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDExICsg
NDAwICogMTIsIC0xNDYwOTcgKyAxLCAxNiwgMzIsIDE0LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0
Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUs
IHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVD
VF9USU1FKGJkLCAyMDEzLCAxMSwgMSwgMTYsIDMyLCAxNCwgMCwgZmFsc2UpOwotfQotCi1URVNU
KFRpbWVOb3JtQ2FzZSwgTGVhcFllYXJzKSB7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25lIHV0YyA9
IGFic2w6OlVUQ1RpbWVab25lKCk7Ci0KLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gdGMgPQotICAg
ICAgYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDIsIDI4ICsgMSwgMCwgMCwgMCwgdXRjKTsK
LSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29u
dmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYWJzbDo6VGltZTo6QnJlYWtkb3duIGJkID0g
dGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDMs
IDEsIDAsIDAsIDAsIDAsIGZhbHNlKTsKLQotICB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgy
MDEyLCAyLCAyOCArIDEsIDAsIDAsIDAsIHV0Yyk7Ci0gIEVYUEVDVF9GQUxTRSh0Yy5ub3JtYWxp
emVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQp
OwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJk
LCAyMDEyLCAyLCAyOSwgMCwgMCwgMCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVy
dERhdGVUaW1lKDIwMDAsIDIsIDI4ICsgMSwgMCwgMCwgMCwgdXRjKTsKLSAgRVhQRUNUX0ZBTFNF
KHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFV
RSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQ
RUNUX1RJTUUoYmQsIDIwMDAsIDIsIDI5LCAwLCAwLCAwLCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBh
YnNsOjpDb252ZXJ0RGF0ZVRpbWUoMTkwMCwgMiwgMjggKyAxLCAwLCAwLCAwLCB1dGMpOwotICBF
WFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJz
aW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lO
VEVSTkFMX0VYUEVDVF9USU1FKGJkLCAxOTAwLCAzLCAxLCAwLCAwLCAwLCAwLCBmYWxzZSk7Ci19
Ci0KLS8vIENvbnZlcnQgYWxsIHRoZSBkYXlzIGZyb20gMTk3MC0xLTEgdG8gMTk3MC0xLTE0NjA5
NyAoYWthIDIzNjktMTItMzEpCi0vLyBhbmQgY2hlY2sgdGhhdCB0aGV5IG5vcm1hbGl6ZSB0byB0
aGUgZXhwZWN0ZWQgdGltZS4gIDE0NjA5NyBkYXlzIHNwYW4KLS8vIHRoZSA0MDAteWVhciBHcmVn
b3JpYW4gY3ljbGUgdXNlZCBkdXJpbmcgbm9ybWFsaXphdGlvbi4KLVRFU1QoVGltZU5vcm1DYXNl
LCBBbGxUaGVEYXlzKSB7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1Rp
bWVab25lKCk7Ci0gIGFic2w6OlRpbWUgZXhwX3RpbWUgPSBhYnNsOjpVbml4RXBvY2goKTsKLQot
ICBmb3IgKGludCBkYXkgPSAxOyBkYXkgPD0gMTQ2MDk3OyArK2RheSkgewotICAgIGFic2w6OlRp
bWVDb252ZXJzaW9uIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDE5NzAsIDEsIGRheSwgMCwg
MCwgMCwgdXRjKTsKLSAgICBFWFBFQ1RfRVEoZGF5ID4gMzEsIHRjLm5vcm1hbGl6ZWQpOwotICAg
IEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgICBF
WFBFQ1RfRVEoZXhwX3RpbWUsIHRjLnByZSk7Ci0gICAgZXhwX3RpbWUgKz0gYWJzbDo6SG91cnMo
MjQpOwotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90
aW1lX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWVfdGVzdC5jYwppbmRleCA0ZjhmNThhNmVmMzYy
ZDlkOGEwMjI3YTI3MDhkMjJkZjZlMGYzOTkzLi4zN2FmMzlkOTk4MzA1ODE3YTdmNWUzYjE0ZWQ1
MmNlNDVmYjhhZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWVfdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL3RpbWVfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtMTQsNiArMTQsMTAgQEAKIAogI2luY2x1ZGUgImFic2wvdGltZS90aW1lLmgi
CiAKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2luY2x1ZGUgPHdpbnNvY2syLmg+ICAvLyBmb3Ig
dGltZXZhbAorI2VuZGlmCisKICNpbmNsdWRlIDxjaHJvbm8+ICAvLyBOT0xJTlQoYnVpbGQvYysr
MTEpCiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxjdGltZT4KQEAgLTI4LDYgKzMyLDI3
IEBACiAKIG5hbWVzcGFjZSB7CiAKKyNpZiBkZWZpbmVkKEdURVNUX1VTRVNfU0lNUExFX1JFKSAm
JiBHVEVTVF9VU0VTX1NJTVBMRV9SRQorY29uc3QgY2hhciBrWm9uZUFiYnJSRVtdID0gIi4qIjsg
IC8vIGp1c3QgcHVudAorI2Vsc2UKK2NvbnN0IGNoYXIga1pvbmVBYmJyUkVbXSA9ICJbQS1aYS16
XXszLDR9fFstK11bMC05XXsyfShbMC05XXsyfSk/IjsKKyNlbmRpZgorCisvLyBUaGlzIGhlbHBl
ciBpcyBhIG1hY3JvIHNvIHRoYXQgZmFpbGVkIGV4cGVjdGF0aW9ucyBzaG93IHVwIHdpdGggdGhl
CisvLyBjb3JyZWN0IGxpbmUgbnVtYmVycy4KKyNkZWZpbmUgRVhQRUNUX0NJVklMX0lORk8oY2ks
IHksIG0sIGQsIGgsIG1pbiwgcywgb2ZmLCBpc2RzdCkgICAgICBcCisgIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IEVYUEVDVF9FUSh5LCBjaS5jcy55ZWFyKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBFWFBFQ1RfRVEobSwgY2kuY3MubW9udGgoKSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0VRKGQsIGNpLmNzLmRheSgpKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9FUShoLCBjaS5j
cy5ob3VyKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBF
Q1RfRVEobWluLCBjaS5jcy5taW51dGUoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgRVhQRUNUX0VRKHMsIGNpLmNzLnNlY29uZCgpKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9FUShvZmYsIGNpLm9mZnNldCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfRVEoaXNkc3QsIGNpLmlz
X2RzdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX1RI
QVQoY2kuem9uZV9hYmJyLCB0ZXN0aW5nOjpNYXRjaGVzUmVnZXgoa1pvbmVBYmJyUkUpKTsgXAor
ICB9IHdoaWxlICgwKQorCiAvLyBBIGdNb2NrIG1hdGNoZXIgdG8gbWF0Y2ggdGltZXNwZWMgdmFs
dWVzLiBVc2UgdGhpcyBtYXRjaGVyIGxpa2U6CiAvLyB0aW1lc3BlYyB0czEsIHRzMjsKIC8vIEVY
UEVDVF9USEFUKHRzMSwgVGltZXNwZWNNYXRjaGVyKHRzMikpOwpAQCAtODQsMTAgKzEwOSwxMCBA
QCBURVNUKFRpbWUsIFZhbHVlU2VtYW50aWNzKSB7CiB9CiAKIFRFU1QoVGltZSwgVW5peEVwb2No
KSB7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IGFic2w6OlVuaXhFcG9jaCgpLkluKGFi
c2w6OlVUQ1RpbWVab25lKCkpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAxOTcw
LCAxLCAxLCAwLCAwLCAwLCAwLCBmYWxzZSk7Ci0gIEVYUEVDVF9FUShhYnNsOjpaZXJvRHVyYXRp
b24oKSwgYmQuc3Vic2Vjb25kKTsKLSAgRVhQRUNUX0VRKDQsIGJkLndlZWtkYXkpOyAgLy8gVGh1
cnNkYXkKKyAgY29uc3QgYXV0byBjaSA9IGFic2w6OlVUQ1RpbWVab25lKCkuQXQoYWJzbDo6VW5p
eEVwb2NoKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxTZWNvbmQoMTk3MCwgMSwgMSwgMCwg
MCwgMCksIGNpLmNzKTsKKyAgRVhQRUNUX0VRKGFic2w6Olplcm9EdXJhdGlvbigpLCBjaS5zdWJz
ZWNvbmQpOworICBFWFBFQ1RfRVEoYWJzbDo6V2Vla2RheTo6dGh1cnNkYXksIGFic2w6OkdldFdl
ZWtkYXkoY2kuY3MpKTsKIH0KIAogVEVTVChUaW1lLCBCcmVha2Rvd24pIHsKQEAgLTk1LDI2ICsx
MjAsMjYgQEAgVEVTVChUaW1lLCBCcmVha2Rvd24pIHsKICAgYWJzbDo6VGltZSB0ID0gYWJzbDo6
VW5peEVwb2NoKCk7CiAKICAgLy8gVGhlIFVuaXggZXBvY2ggYXMgc2VlbiBpbiBOWUMuCi0gIGFi
c2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IHQuSW4odHopOwotICBBQlNMX0lOVEVSTkFMX0VYUEVD
VF9USU1FKGJkLCAxOTY5LCAxMiwgMzEsIDE5LCAwLCAwLCAtMTgwMDAsIGZhbHNlKTsKLSAgRVhQ
RUNUX0VRKGFic2w6Olplcm9EdXJhdGlvbigpLCBiZC5zdWJzZWNvbmQpOwotICBFWFBFQ1RfRVEo
MywgYmQud2Vla2RheSk7ICAvLyBXZWRuZXNkYXkKKyAgYXV0byBjaSA9IHR6LkF0KHQpOworICBF
WFBFQ1RfQ0lWSUxfSU5GTyhjaSwgMTk2OSwgMTIsIDMxLCAxOSwgMCwgMCwgLTE4MDAwLCBmYWxz
ZSk7CisgIEVYUEVDVF9FUShhYnNsOjpaZXJvRHVyYXRpb24oKSwgY2kuc3Vic2Vjb25kKTsKKyAg
RVhQRUNUX0VRKGFic2w6OldlZWtkYXk6OndlZG5lc2RheSwgYWJzbDo6R2V0V2Vla2RheShjaS5j
cykpOwogCiAgIC8vIEp1c3QgYmVmb3JlIHRoZSBlcG9jaC4KICAgdCAtPSBhYnNsOjpOYW5vc2Vj
b25kcygxKTsKLSAgYmQgPSB0LkluKHR6KTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShi
ZCwgMTk2OSwgMTIsIDMxLCAxOCwgNTksIDU5LCAtMTgwMDAsIGZhbHNlKTsKLSAgRVhQRUNUX0VR
KGFic2w6Ok5hbm9zZWNvbmRzKDk5OTk5OTk5OSksIGJkLnN1YnNlY29uZCk7Ci0gIEVYUEVDVF9F
USgzLCBiZC53ZWVrZGF5KTsgIC8vIFdlZG5lc2RheQorICBjaSA9IHR6LkF0KHQpOworICBFWFBF
Q1RfQ0lWSUxfSU5GTyhjaSwgMTk2OSwgMTIsIDMxLCAxOCwgNTksIDU5LCAtMTgwMDAsIGZhbHNl
KTsKKyAgRVhQRUNUX0VRKGFic2w6Ok5hbm9zZWNvbmRzKDk5OTk5OTk5OSksIGNpLnN1YnNlY29u
ZCk7CisgIEVYUEVDVF9FUShhYnNsOjpXZWVrZGF5Ojp3ZWRuZXNkYXksIGFic2w6OkdldFdlZWtk
YXkoY2kuY3MpKTsKIAogICAvLyBTb21lIHRpbWUgbGF0ZXIuCiAgIHQgKz0gYWJzbDo6SG91cnMo
MjQpICogMjczNTsKICAgdCArPSBhYnNsOjpIb3VycygxOCkgKyBhYnNsOjpNaW51dGVzKDMwKSAr
IGFic2w6OlNlY29uZHMoMTUpICsKICAgICAgICBhYnNsOjpOYW5vc2Vjb25kcyg5KTsKLSAgYmQg
PSB0LkluKHR6KTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMTk3NywgNiwgMjgs
IDE0LCAzMCwgMTUsIC0xNDQwMCwgdHJ1ZSk7Ci0gIEVYUEVDVF9FUSg4LCBiZC5zdWJzZWNvbmQg
LyBhYnNsOjpOYW5vc2Vjb25kcygxKSk7Ci0gIEVYUEVDVF9FUSgyLCBiZC53ZWVrZGF5KTsgIC8v
IFR1ZXNkYXkKKyAgY2kgPSB0ei5BdCh0KTsKKyAgRVhQRUNUX0NJVklMX0lORk8oY2ksIDE5Nzcs
IDYsIDI4LCAxNCwgMzAsIDE1LCAtMTQ0MDAsIHRydWUpOworICBFWFBFQ1RfRVEoOCwgY2kuc3Vi
c2Vjb25kIC8gYWJzbDo6TmFub3NlY29uZHMoMSkpOworICBFWFBFQ1RfRVEoYWJzbDo6V2Vla2Rh
eTo6dHVlc2RheSwgYWJzbDo6R2V0V2Vla2RheShjaS5jcykpOwogfQogCiBURVNUKFRpbWUsIEFk
ZGl0aXZlT3BlcmF0b3JzKSB7CkBAIC01NTAsNjcgKzU3NSw2MyBAQCBURVNUKFRpbWUsIFRvQ2hy
b25vVGltZSkgewogICAgICAgICAgICAgYWJzbDo6VG9DaHJvbm9UaW1lKGFic2w6OlVuaXhFcG9j
aCgpIC0gdGljaykpOwogfQogCi1URVNUKFRpbWUsIENvbnZlcnREYXRlVGltZSkgewotICBjb25z
dCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENUaW1lWm9uZSgpOwotICBjb25zdCBhYnNs
OjpUaW1lWm9uZSBnb29nID0KLSAgICAgIGFic2w6OnRpbWVfaW50ZXJuYWw6OkxvYWRUaW1lWm9u
ZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIpOworVEVTVChUaW1lLCBUaW1lWm9uZUF0KSB7CiAgIGNv
bnN0IGFic2w6OlRpbWVab25lIG55YyA9CiAgICAgICBhYnNsOjp0aW1lX2ludGVybmFsOjpMb2Fk
VGltZVpvbmUoIkFtZXJpY2EvTmV3X1lvcmsiKTsKICAgY29uc3Qgc3RkOjpzdHJpbmcgZm10ID0g
IiVhLCAlZSAlYiAlWSAlSDolTTolUyAleiAoJVopIjsKIAotICAvLyBBIHNpbXBsZSBjYXNlIG9m
IG5vcm1hbGl6YXRpb24uCi0gIGFic2w6OlRpbWVDb252ZXJzaW9uIG9jdDMyID0gQ29udmVydERh
dGVUaW1lKDIwMTMsIDEwLCAzMiwgOCwgMzAsIDAsIGdvb2cpOwotICBFWFBFQ1RfVFJVRShvY3Qz
Mi5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUs
IG9jdDMyLmtpbmQpOwotICBhYnNsOjpUaW1lQ29udmVyc2lvbiBub3YwMSA9IENvbnZlcnREYXRl
VGltZSgyMDEzLCAxMSwgMSwgOCwgMzAsIDAsIGdvb2cpOwotICBFWFBFQ1RfRkFMU0Uobm92MDEu
bm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCBu
b3YwMS5raW5kKTsKLSAgRVhQRUNUX0VRKG9jdDMyLnByZSwgbm92MDEucHJlKTsKLSAgRVhQRUNU
X0VRKCJGcmksICAxIE5vdiAyMDEzIDA4OjMwOjAwIC0wNzAwIChQRFQpIiwKLSAgICAgICAgICAg
IGFic2w6OkZvcm1hdFRpbWUoZm10LCBub3YwMS5wcmUsIGdvb2cpKTsKKyAgLy8gQSBub24tdHJh
bnNpdGlvbiB3aGVyZSB0aGUgY2l2aWwgdGltZSBpcyB1bmlxdWUuCisgIGFic2w6OkNpdmlsU2Vj
b25kIG5vdjAxKDIwMTMsIDExLCAxLCA4LCAzMCwgMCk7CisgIGNvbnN0IGF1dG8gbm92MDFfY2kg
PSBueWMuQXQobm92MDEpOworICBFWFBFQ1RfRVEoYWJzbDo6VGltZVpvbmU6OlRpbWVJbmZvOjpV
TklRVUUsIG5vdjAxX2NpLmtpbmQpOworICBFWFBFQ1RfRVEoIkZyaSwgIDEgTm92IDIwMTMgMDg6
MzA6MDAgLTA0MDAgKEVEVCkiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG5v
djAxX2NpLnByZSwgbnljKSk7CisgIEVYUEVDVF9FUShub3YwMV9jaS5wcmUsIG5vdjAxX2NpLnRy
YW5zKTsKKyAgRVhQRUNUX0VRKG5vdjAxX2NpLnByZSwgbm92MDFfY2kucG9zdCk7CisgIEVYUEVD
VF9FUShub3YwMV9jaS5wcmUsIGFic2w6OkZyb21DaXZpbChub3YwMSwgbnljKSk7CiAKICAgLy8g
QSBTcHJpbmcgRFNUIHRyYW5zaXRpb24sIHdoZW4gdGhlcmUgaXMgYSBnYXAgaW4gY2l2aWwgdGlt
ZQogICAvLyBhbmQgd2UgcHJlZmVyIHRoZSBsYXRlciBvZiB0aGUgcG9zc2libGUgaW50ZXJwcmV0
YXRpb25zIG9mIGEKICAgLy8gbm9uLWV4aXN0ZW50IHRpbWUuCi0gIGFic2w6OlRpbWVDb252ZXJz
aW9uIG1hcjEzID0gQ29udmVydERhdGVUaW1lKDIwMTEsIDMsIDEzLCAyLCAxNSwgMCwgbnljKTsK
LSAgRVhQRUNUX0ZBTFNFKG1hcjEzLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGlt
ZUNvbnZlcnNpb246OlNLSVBQRUQsIG1hcjEzLmtpbmQpOworICBhYnNsOjpDaXZpbFNlY29uZCBt
YXIxMygyMDExLCAzLCAxMywgMiwgMTUsIDApOworICBjb25zdCBhdXRvIG1hcl9jaSA9IG55Yy5B
dChtYXIxMyk7CisgIEVYUEVDVF9FUShhYnNsOjpUaW1lWm9uZTo6VGltZUluZm86OlNLSVBQRUQs
IG1hcl9jaS5raW5kKTsKICAgRVhQRUNUX0VRKCJTdW4sIDEzIE1hciAyMDExIDAzOjE1OjAwIC0w
NDAwIChFRFQpIiwKLSAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBtYXIxMy5wcmUs
IG55YykpOworICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG1hcl9jaS5wcmUsIG55
YykpOwogICBFWFBFQ1RfRVEoIlN1biwgMTMgTWFyIDIwMTEgMDM6MDA6MDAgLTA0MDAgKEVEVCki
LAotICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG1hcjEzLnRyYW5zLCBueWMpKTsK
KyAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBtYXJfY2kudHJhbnMsIG55YykpOwog
ICBFWFBFQ1RfRVEoIlN1biwgMTMgTWFyIDIwMTEgMDE6MTU6MDAgLTA1MDAgKEVTVCkiLAotICAg
ICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG1hcjEzLnBvc3QsIG55YykpOwotICBFWFBF
Q1RfRVEobWFyMTMucHJlLCBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxMSwgMywgMTMsIDIsIDE1LCAw
LCBueWMpKTsKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBtYXJfY2kucG9zdCwg
bnljKSk7CisgIEVYUEVDVF9FUShtYXJfY2kudHJhbnMsIGFic2w6OkZyb21DaXZpbChtYXIxMywg
bnljKSk7CiAKICAgLy8gQSBGYWxsIERTVCB0cmFuc2l0aW9uLCB3aGVuIGNpdmlsIHRpbWVzIGFy
ZSByZXBlYXRlZCBhbmQKICAgLy8gd2UgcHJlZmVyIHRoZSBlYXJsaWVyIG9mIHRoZSBwb3NzaWJs
ZSBpbnRlcnByZXRhdGlvbnMgb2YgYW4KICAgLy8gYW1iaWd1b3VzIHRpbWUuCi0gIGFic2w6OlRp
bWVDb252ZXJzaW9uIG5vdjA2ID0gQ29udmVydERhdGVUaW1lKDIwMTEsIDExLCA2LCAxLCAxNSwg
MCwgbnljKTsKLSAgRVhQRUNUX0ZBTFNFKG5vdjA2Lm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEo
YWJzbDo6VGltZUNvbnZlcnNpb246OlJFUEVBVEVELCBub3YwNi5raW5kKTsKKyAgYWJzbDo6Q2l2
aWxTZWNvbmQgbm92MDYoMjAxMSwgMTEsIDYsIDEsIDE1LCAwKTsKKyAgY29uc3QgYXV0byBub3Yw
Nl9jaSA9IG55Yy5BdChub3YwNik7CisgIEVYUEVDVF9FUShhYnNsOjpUaW1lWm9uZTo6VGltZUlu
Zm86OlJFUEVBVEVELCBub3YwNl9jaS5raW5kKTsKICAgRVhQRUNUX0VRKCJTdW4sICA2IE5vdiAy
MDExIDAxOjE1OjAwIC0wNDAwIChFRFQpIiwKLSAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUo
Zm10LCBub3YwNi5wcmUsIG55YykpOworICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQs
IG5vdjA2X2NpLnByZSwgbnljKSk7CiAgIEVYUEVDVF9FUSgiU3VuLCAgNiBOb3YgMjAxMSAwMTow
MDowMCAtMDUwMCAoRVNUKSIsCi0gICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgbm92
MDYudHJhbnMsIG55YykpOworICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG5vdjA2
X2NpLnRyYW5zLCBueWMpKTsKICAgRVhQRUNUX0VRKCJTdW4sICA2IE5vdiAyMDExIDAxOjE1OjAw
IC0wNTAwIChFU1QpIiwKLSAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBub3YwNi5w
b3N0LCBueWMpKTsKLSAgRVhQRUNUX0VRKG5vdjA2LnByZSwgYWJzbDo6RnJvbURhdGVUaW1lKDIw
MTEsIDExLCA2LCAxLCAxNSwgMCwgbnljKSk7CisgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1l
KGZtdCwgbm92MDZfY2kucG9zdCwgbnljKSk7CisgIEVYUEVDVF9FUShub3YwNl9jaS5wcmUsIGFi
c2w6OkZyb21DaXZpbChub3YwNiwgbnljKSk7CiAKICAgLy8gQ2hlY2sgdGhhdCAodGltZV90KSAt
MSBpcyBoYW5kbGVkIGNvcnJlY3RseS4KLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gbWludXMxID0g
Q29udmVydERhdGVUaW1lKDE5NjksIDEyLCAzMSwgMTgsIDU5LCA1OSwgbnljKTsKLSAgRVhQRUNU
X0ZBTFNFKG1pbnVzMS5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJz
aW9uOjpVTklRVUUsIG1pbnVzMS5raW5kKTsKLSAgRVhQRUNUX0VRKC0xLCBhYnNsOjpUb1RpbWVU
KG1pbnVzMS5wcmUpKTsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgbWludXMxKDE5NjksIDEyLCAzMSwg
MTgsIDU5LCA1OSk7CisgIGNvbnN0IGF1dG8gbWludXMxX2NsID0gbnljLkF0KG1pbnVzMSk7Cisg
IEVYUEVDVF9FUShhYnNsOjpUaW1lWm9uZTo6VGltZUluZm86OlVOSVFVRSwgbWludXMxX2NsLmtp
bmQpOworICBFWFBFQ1RfRVEoLTEsIGFic2w6OlRvVGltZVQobWludXMxX2NsLnByZSkpOwogICBF
WFBFQ1RfRVEoIldlZCwgMzEgRGVjIDE5NjkgMTg6NTk6NTkgLTA1MDAgKEVTVCkiLAotICAgICAg
ICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG1pbnVzMS5wcmUsIG55YykpOworICAgICAgICAg
ICAgYWJzbDo6Rm9ybWF0VGltZShmbXQsIG1pbnVzMV9jbC5wcmUsIG55YykpOwogICBFWFBFQ1Rf
RVEoIldlZCwgMzEgRGVjIDE5NjkgMjM6NTk6NTkgKzAwMDAgKFVUQykiLAotICAgICAgICAgICAg
YWJzbDo6Rm9ybWF0VGltZShmbXQsIG1pbnVzMS5wcmUsIHV0YykpOworICAgICAgICAgICAgYWJz
bDo6Rm9ybWF0VGltZShmbXQsIG1pbnVzMV9jbC5wcmUsIGFic2w6OlVUQ1RpbWVab25lKCkpKTsK
IH0KIAotLy8gRnJvbURhdGVUaW1lKHllYXIsIG1vbiwgZGF5LCBob3VyLCBtaW4sIHNlYywgVVRD
VGltZVpvbmUoKSkgaGFzCi0vLyBhIHNwZWNpYWxpemVkIGZhc3RwYXRoIGltcGxlbWVudGF0aW9u
IHdoaWNoIHdlIGV4ZXJjaXNlIGhlcmUuCi1URVNUKFRpbWUsIEZyb21EYXRlVGltZVVUQykgewor
Ly8gRnJvbUNpdmlsKENpdmlsU2Vjb25kKHllYXIsIG1vbiwgZGF5LCBob3VyLCBtaW4sIHNlYyks
IFVUQ1RpbWVab25lKCkpCisvLyBoYXMgYSBzcGVjaWFsaXplZCBmYXN0cGF0aCBpbXBsZW1lbnRh
dGlvbiwgd2hpY2ggd2UgZXhlcmNpc2UgaGVyZS4KK1RFU1QoVGltZSwgRnJvbUNpdmlsVVRDKSB7
CiAgIGNvbnN0IGFic2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7CiAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZtdCA9ICIlYSwgJWUgJWIgJVkgJUg6JU06JVMgJXogKCVaKSI7CiAg
IGNvbnN0IGludCBrTWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKQEAgLTYx
OCw2NSArNjM5LDM2IEBAIFRFU1QoVGltZSwgRnJvbURhdGVUaW1lVVRDKSB7CiAgIGFic2w6OlRp
bWUgdDsKIAogICAvLyAyOTIwOTE5NDA4ODEgaXMgdGhlIGxhc3QgcG9zaXRpdmUgeWVhciB0byB1
c2UgdGhlIGZhc3RwYXRoLgotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDI5MjA5MTk0MDg4MSwg
a01heCwga01heCwga01heCwga01heCwga01heCwgdXRjKTsKKyAgdCA9IGFic2w6OkZyb21DaXZp
bCgKKyAgICAgIGFic2w6OkNpdmlsU2Vjb25kKDI5MjA5MTk0MDg4MSwga01heCwga01heCwga01h
eCwga01heCwga01heCksIHV0Yyk7CiAgIEVYUEVDVF9FUSgiRnJpLCAyNSBOb3YgMjkyMjc3MDI2
NTk2IDEyOjIxOjA3ICswMDAwIChVVEMpIiwKICAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUo
Zm10LCB0LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyOTIwOTE5NDA4ODIsIGtN
YXgsIGtNYXgsIGtNYXgsIGtNYXgsIGtNYXgsIHV0Yyk7Ci0gIEVYUEVDVF9FUSgiaW5maW5pdGUt
ZnV0dXJlIiwgYWJzbDo6Rm9ybWF0VGltZShmbXQsIHQsIHV0YykpOyAgLy8gbm8gb3ZlcmZsb3cK
LSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgKLSAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
NjRfdD46Om1heCgpLCBrTWF4LCBrTWF4LCBrTWF4LCBrTWF4LCBrTWF4LCB1dGMpOworICB0ID0g
YWJzbDo6RnJvbUNpdmlsKAorICAgICAgYWJzbDo6Q2l2aWxTZWNvbmQoMjkyMDkxOTQwODgyLCBr
TWF4LCBrTWF4LCBrTWF4LCBrTWF4LCBrTWF4KSwgdXRjKTsKICAgRVhQRUNUX0VRKCJpbmZpbml0
ZS1mdXR1cmUiLCBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgdCwgdXRjKSk7ICAvLyBubyBvdmVyZmxv
dwogCiAgIC8vIC0yOTIwOTE5MzY5NDAgaXMgdGhlIGxhc3QgbmVnYXRpdmUgeWVhciB0byB1c2Ug
dGhlIGZhc3RwYXRoLgotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKC0yOTIwOTE5MzY5NDAsIGtN
aW4sIGtNaW4sIGtNaW4sIGtNaW4sIGtNaW4sIHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwo
CisgICAgICBhYnNsOjpDaXZpbFNlY29uZCgtMjkyMDkxOTM2OTQwLCBrTWluLCBrTWluLCBrTWlu
LCBrTWluLCBrTWluKSwgdXRjKTsKICAgRVhQRUNUX0VRKCJGcmksICAxIE5vdiAtMjkyMjc3MDIy
NjU3IDEwOjM3OjUyICswMDAwIChVVEMpIiwKICAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUo
Zm10LCB0LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgtMjkyMDkxOTM2OTQxLCBr
TWluLCBrTWluLCBrTWluLCBrTWluLCBrTWluLCB1dGMpOworICB0ID0gYWJzbDo6RnJvbUNpdmls
KAorICAgICAgYWJzbDo6Q2l2aWxTZWNvbmQoLTI5MjA5MTkzNjk0MSwga01pbiwga01pbiwga01p
biwga01pbiwga01pbiksIHV0Yyk7CiAgIEVYUEVDVF9FUSgiaW5maW5pdGUtcGFzdCIsIGFic2w6
OkZvcm1hdFRpbWUoZm10LCB0LCB1dGMpKTsgIC8vIG5vIHVuZGVyZmxvdwotICB0ID0gYWJzbDo6
RnJvbURhdGVUaW1lKAotICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCks
IGtNaW4sIGtNaW4sIGtNaW4sIGtNaW4sIGtNaW4sIHV0Yyk7Ci0gIEVYUEVDVF9FUSgiaW5maW5p
dGUtcGFzdCIsIGFic2w6OkZvcm1hdFRpbWUoZm10LCB0LCB1dGMpKTsgIC8vIG5vIG92ZXJmbG93
CiAKICAgLy8gQ2hlY2sgdGhhdCB3ZSdyZSBjb3VudGluZyBsZWFwIHllYXJzIGNvcnJlY3RseS4K
LSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgxOTAwLCAyLCAyOCwgMjMsIDU5LCA1OSwgdXRjKTsK
KyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgxOTAwLCAyLCAyOCwgMjMs
IDU5LCA1OSksIHV0Yyk7CiAgIEVYUEVDVF9FUSgiV2VkLCAyOCBGZWIgMTkwMCAyMzo1OTo1OSAr
MDAwMCAoVVRDKSIsCiAgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgdCwgdXRjKSk7
Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMTkwMCwgMywgMSwgMCwgMCwgMCwgdXRjKTsKKyAg
dCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgxOTAwLCAzLCAxLCAwLCAwLCAw
KSwgdXRjKTsKICAgRVhQRUNUX0VRKCJUaHUsICAxIE1hciAxOTAwIDAwOjAwOjAwICswMDAwIChV
VEMpIiwKICAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCB0LCB1dGMpKTsKLSAgdCA9
IGFic2w6OkZyb21EYXRlVGltZSgyMDAwLCAyLCAyOSwgMjMsIDU5LCA1OSwgdXRjKTsKKyAgdCA9
IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyMDAwLCAyLCAyOSwgMjMsIDU5LCA1
OSksIHV0Yyk7CiAgIEVYUEVDVF9FUSgiVHVlLCAyOSBGZWIgMjAwMCAyMzo1OTo1OSArMDAwMCAo
VVRDKSIsCiAgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgdCwgdXRjKSk7Ci0gIHQg
PSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAwMCwgMywgMSwgMCwgMCwgMCwgdXRjKTsKKyAgdCA9IGFi
c2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyMDAwLCAzLCAxLCAwLCAwLCAwKSwgdXRj
KTsKICAgRVhQRUNUX0VRKCJXZWQsICAxIE1hciAyMDAwIDAwOjAwOjAwICswMDAwIChVVEMpIiwK
ICAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCB0LCB1dGMpKTsKLQotICAvLyBDaGVj
ayBub3JtYWxpemF0aW9uLgotICBjb25zdCBzdGQ6OnN0cmluZyB5bWRobXMgPSAiJVktJW0tJWQg
JUg6JU06JVMiOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEsIDEsIDAsIDAsIDYw
LCB1dGMpOwotICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDEgMDA6MDE6MDAiLCBhYnNsOjpGb3JtYXRU
aW1lKHltZGhtcywgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMSwg
MSwgMCwgNjAsIDAsIHV0Yyk7Ci0gIEVYUEVDVF9FUSgiMjAxNS0wMS0wMSAwMTowMDowMCIsIGFi
c2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGlt
ZSgyMDE1LCAxLCAxLCAyNCwgMCwgMCwgdXRjKTsKLSAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyIDAw
OjAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOwotICB0ID0gYWJzbDo6
RnJvbURhdGVUaW1lKDIwMTUsIDEsIDMyLCAwLCAwLCAwLCB1dGMpOwotICBFWFBFQ1RfRVEoIjIw
MTUtMDItMDEgMDA6MDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7Ci0g
IHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMTMsIDEsIDAsIDAsIDAsIHV0Yyk7Ci0gIEVY
UEVDVF9FUSgiMjAxNi0wMS0wMSAwMDowMDowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0
LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAxMywgMzIsIDYwLCA2MCwg
NjAsIHV0Yyk7Ci0gIEVYUEVDVF9FUSgiMjAxNi0wMi0wMyAxMzowMTowMCIsIGFic2w6OkZvcm1h
dFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAx
LCAxLCAwLCAwLCAtMSwgdXRjKTsKLSAgRVhQRUNUX0VRKCIyMDE0LTEyLTMxIDIzOjU5OjU5Iiwg
YWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURhdGVU
aW1lKDIwMTUsIDEsIDEsIDAsIC0xLCAwLCB1dGMpOwotICBFWFBFQ1RfRVEoIjIwMTQtMTItMzEg
MjM6NTk6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7Ci0gIHQgPSBhYnNs
OjpGcm9tRGF0ZVRpbWUoMjAxNSwgMSwgMSwgLTEsIDAsIDAsIHV0Yyk7Ci0gIEVYUEVDVF9FUSgi
MjAxNC0xMi0zMSAyMzowMDowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsK
LSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAxLCAtMSwgMCwgMCwgMCwgdXRjKTsKLSAg
RVhQRUNUX0VRKCIyMDE0LTEyLTMwIDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMs
IHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIC0xLCAxLCAwLCAwLCAw
LCB1dGMpOwotICBFWFBFQ1RfRVEoIjIwMTQtMTEtMDEgMDA6MDA6MDAiLCBhYnNsOjpGb3JtYXRU
aW1lKHltZGhtcywgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgLTEs
IC0xLCAtMSwgLTEsIC0xLCB1dGMpOwotICBFWFBFQ1RfRVEoIjIwMTQtMTAtMjkgMjI6NTg6NTki
LCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7CiB9CiAKIFRFU1QoVGltZSwgVG9U
TSkgewpAQCAtNjg0LDggKzY3NiwxMCBAQCBURVNUKFRpbWUsIFRvVE0pIHsKIAogICAvLyBDb21w
YXJlcyB0aGUgcmVzdWx0cyBvZiBUb1RNKCkgdG8gZ210aW1lX3IoKSBmb3IgbG90cyBvZiB0aW1l
cyBvdmVyIHRoZQogICAvLyBjb3Vyc2Ugb2YgYSBmZXcgZGF5cy4KLSAgY29uc3QgYWJzbDo6VGlt
ZSBzdGFydCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE0LCAxLCAyLCAzLCA0LCA1LCB1dGMpOwot
ICBjb25zdCBhYnNsOjpUaW1lIGVuZCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE0LCAxLCA1LCAz
LCA0LCA1LCB1dGMpOworICBjb25zdCBhYnNsOjpUaW1lIHN0YXJ0ID0KKyAgICAgIGFic2w6OkZy
b21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCAyLCAzLCA0LCA1KSwgdXRjKTsKKyAg
Y29uc3QgYWJzbDo6VGltZSBlbmQgPQorICAgICAgYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmls
U2Vjb25kKDIwMTQsIDEsIDUsIDMsIDQsIDUpLCB1dGMpOwogICBmb3IgKGFic2w6OlRpbWUgdCA9
IHN0YXJ0OyB0IDwgZW5kOyB0ICs9IGFic2w6OlNlY29uZHMoMzApKSB7CiAgICAgY29uc3Qgc3Ry
dWN0IHRtIHRtX2J0ID0gVG9UTSh0LCB1dGMpOwogICAgIGNvbnN0IHRpbWVfdCB0dCA9IGFic2w6
OlRvVGltZVQodCk7CkBAIC03MTEsMTIgKzcwNSwxMiBAQCBURVNUKFRpbWUsIFRvVE0pIHsKICAg
Ly8gQ2hlY2tzIHRoYXQgdGhlIHRtX2lzZHN0IGZpZWxkIGlzIGNvcnJlY3Qgd2hlbiBpbiBzdGFu
ZGFyZCB0aW1lLgogICBjb25zdCBhYnNsOjpUaW1lWm9uZSBueWMgPQogICAgICAgYWJzbDo6dGlt
ZV9pbnRlcm5hbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL05ld19Zb3JrIik7Ci0gIGFic2w6OlRp
bWUgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE0LCAzLCAxLCAwLCAwLCAwLCBueWMpOworICBh
YnNsOjpUaW1lIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMywg
MSwgMCwgMCwgMCksIG55Yyk7CiAgIHN0cnVjdCB0bSB0bSA9IFRvVE0odCwgbnljKTsKICAgRVhQ
RUNUX0ZBTFNFKHRtLnRtX2lzZHN0KTsKIAogICAvLyBDaGVja3MgdGhhdCB0aGUgdG1faXNkc3Qg
ZmllbGQgaXMgY29ycmVjdCB3aGVuIGluIGRheWxpZ2h0IHRpbWUuCi0gIHQgPSBhYnNsOjpGcm9t
RGF0ZVRpbWUoMjAxNCwgNCwgMSwgMCwgMCwgMCwgbnljKTsKKyAgdCA9IGFic2w6OkZyb21DaXZp
bChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCA0LCAxLCAwLCAwLCAwKSwgbnljKTsKICAgdG0gPSBU
b1RNKHQsIG55Yyk7CiAgIEVYUEVDVF9UUlVFKHRtLnRtX2lzZHN0KTsKIApAQCAtODA4LDggKzgw
Miw4IEBAIFRFU1QoVGltZSwgVE1Sb3VuZFRyaXApIHsKICAgICAgIGFic2w6OnRpbWVfaW50ZXJu
YWw6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9OZXdfWW9yayIpOwogCiAgIC8vIFRlc3Qgcm91bmQt
dHJpcHBpbmcgYWNyb3NzIGEgc2tpcHBlZCB0cmFuc2l0aW9uCi0gIGFic2w6OlRpbWUgc3RhcnQg
PSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNCwgMywgOSwgMCwgMCwgMCwgbnljKTsKLSAgYWJzbDo6
VGltZSBlbmQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNCwgMywgOSwgNCwgMCwgMCwgbnljKTsK
KyAgYWJzbDo6VGltZSBzdGFydCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbEhvdXIoMjAx
NCwgMywgOSwgMCksIG55Yyk7CisgIGFic2w6OlRpbWUgZW5kID0gYWJzbDo6RnJvbUNpdmlsKGFi
c2w6OkNpdmlsSG91cigyMDE0LCAzLCA5LCA0KSwgbnljKTsKICAgZm9yIChhYnNsOjpUaW1lIHQg
PSBzdGFydDsgdCA8IGVuZDsgdCArPSBhYnNsOjpNaW51dGVzKDEpKSB7CiAgICAgc3RydWN0IHRt
IHRtID0gVG9UTSh0LCBueWMpOwogICAgIGFic2w6OlRpbWUgcnQgPSBGcm9tVE0odG0sIG55Yyk7
CkBAIC04MTcsOCArODExLDggQEAgVEVTVChUaW1lLCBUTVJvdW5kVHJpcCkgewogICB9CiAKICAg
Ly8gVGVzdCByb3VuZC10cmlwcGluZyBhY3Jvc3MgYW4gYW1iaWd1b3VzIHRyYW5zaXRpb24KLSAg
c3RhcnQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNCwgMTEsIDIsIDAsIDAsIDAsIG55Yyk7Ci0g
IGVuZCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE0LCAxMSwgMiwgNCwgMCwgMCwgbnljKTsKKyAg
c3RhcnQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxIb3VyKDIwMTQsIDExLCAyLCAwKSwg
bnljKTsKKyAgZW5kID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsSG91cigyMDE0LCAxMSwg
MiwgNCksIG55Yyk7CiAgIGZvciAoYWJzbDo6VGltZSB0ID0gc3RhcnQ7IHQgPCBlbmQ7IHQgKz0g
YWJzbDo6TWludXRlcygxKSkgewogICAgIHN0cnVjdCB0bSB0bSA9IFRvVE0odCwgbnljKTsKICAg
ICBhYnNsOjpUaW1lIHJ0ID0gRnJvbVRNKHRtLCBueWMpOwpAQCAtODI2LDggKzgyMCw4IEBAIFRF
U1QoVGltZSwgVE1Sb3VuZFRyaXApIHsKICAgfQogCiAgIC8vIFRlc3Qgcm91bmQtdHJpcHBpbmcg
b2YgdW5pcXVlIGluc3RhbnRzIGNyb3NzaW5nIGEgZGF5IGJvdW5kYXJ5Ci0gIHN0YXJ0ID0gYWJz
bDo6RnJvbURhdGVUaW1lKDIwMTQsIDYsIDI3LCAyMiwgMCwgMCwgbnljKTsKLSAgZW5kID0gYWJz
bDo6RnJvbURhdGVUaW1lKDIwMTQsIDYsIDI4LCA0LCAwLCAwLCBueWMpOworICBzdGFydCA9IGFi
c2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbEhvdXIoMjAxNCwgNiwgMjcsIDIyKSwgbnljKTsKKyAg
ZW5kID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsSG91cigyMDE0LCA2LCAyOCwgNCksIG55
Yyk7CiAgIGZvciAoYWJzbDo6VGltZSB0ID0gc3RhcnQ7IHQgPCBlbmQ7IHQgKz0gYWJzbDo6TWlu
dXRlcygxKSkgewogICAgIHN0cnVjdCB0bSB0bSA9IFRvVE0odCwgbnljKTsKICAgICBhYnNsOjpU
aW1lIHJ0ID0gRnJvbVRNKHRtLCBueWMpOwpAQCAtOTgwLDI3ICs5NzQsMjcgQEAgVEVTVChUaW1l
LCBDb252ZXJzaW9uU2F0dXJhdGlvbikgewogICBFWFBFQ1RfRVEobWluX3RpbWVzcGVjX3NlYywg
dHMudHZfc2VjKTsKICAgRVhQRUNUX0VRKDAsIHRzLnR2X25zZWMpOwogCi0gIC8vIENoZWNrcyBo
b3cgVGltZTo6SW4oKSBzYXR1cmF0ZXMgb24gaW5maW5pdGllcy4KLSAgYWJzbDo6VGltZTo6QnJl
YWtkb3duIGJkID0gYWJzbDo6SW5maW5pdGVGdXR1cmUoKS5Jbih1dGMpOwotICBBQlNMX0lOVEVS
TkFMX0VYUEVDVF9USU1FKGJkLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwg
MTIsIDMxLCAyMywKKyAgLy8gQ2hlY2tzIGhvdyBUaW1lWm9uZTo6QXQoKSBzYXR1cmF0ZXMgb24g
aW5maW5pdGllcy4KKyAgYXV0byBjaSA9IHV0Yy5BdChhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpKTsK
KyAgRVhQRUNUX0NJVklMX0lORk8oY2ksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1h
eCgpLCAxMiwgMzEsIDIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU5LCA1OSwgMCwg
ZmFsc2UpOwotICBFWFBFQ1RfRVEoYWJzbDo6SW5maW5pdGVEdXJhdGlvbigpLCBiZC5zdWJzZWNv
bmQpOwotICBFWFBFQ1RfRVEoNCwgYmQud2Vla2RheSk7ICAvLyBUaHVyc2RheQotICBFWFBFQ1Rf
RVEoMzY1LCBiZC55ZWFyZGF5KTsKLSAgRVhQRUNUX1NUUkVRKCItMDAiLCBiZC56b25lX2FiYnIp
OyAgLy8gYXJ0aWZhY3Qgb2YgYWJzbDo6VGltZTo6SW4oKQotICBiZCA9IGFic2w6OkluZmluaXRl
UGFzdCgpLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpLCAxLCAxLCAwLCAwLAorICBFWFBFQ1RfRVEoYWJz
bDo6SW5maW5pdGVEdXJhdGlvbigpLCBjaS5zdWJzZWNvbmQpOworICBFWFBFQ1RfRVEoYWJzbDo6
V2Vla2RheTo6dGh1cnNkYXksIGFic2w6OkdldFdlZWtkYXkoY2kuY3MpKTsKKyAgRVhQRUNUX0VR
KDM2NSwgYWJzbDo6R2V0WWVhckRheShjaS5jcykpOworICBFWFBFQ1RfU1RSRVEoIi0wMCIsIGNp
LnpvbmVfYWJicik7ICAvLyBhcnRpZmFjdCBvZiBUaW1lWm9uZTo6QXQoKQorICBjaSA9IHV0Yy5B
dChhYnNsOjpJbmZpbml0ZVBhc3QoKSk7CisgIEVYUEVDVF9DSVZJTF9JTkZPKGNpLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSwgMSwgMSwgMCwgMCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCBmYWxzZSk7Ci0gIEVYUEVDVF9FUSgtYWJzbDo6SW5maW5pdGVE
dXJhdGlvbigpLCBiZC5zdWJzZWNvbmQpOwotICBFWFBFQ1RfRVEoNywgYmQud2Vla2RheSk7ICAv
LyBTdW5kYXkKLSAgRVhQRUNUX0VRKDEsIGJkLnllYXJkYXkpOwotICBFWFBFQ1RfU1RSRVEoIi0w
MCIsIGJkLnpvbmVfYWJicik7ICAvLyBhcnRpZmFjdCBvZiBhYnNsOjpUaW1lOjpJbigpCisgIEVY
UEVDVF9FUSgtYWJzbDo6SW5maW5pdGVEdXJhdGlvbigpLCBjaS5zdWJzZWNvbmQpOworICBFWFBF
Q1RfRVEoYWJzbDo6V2Vla2RheTo6c3VuZGF5LCBhYnNsOjpHZXRXZWVrZGF5KGNpLmNzKSk7Cisg
IEVYUEVDVF9FUSgxLCBhYnNsOjpHZXRZZWFyRGF5KGNpLmNzKSk7CisgIEVYUEVDVF9TVFJFUSgi
LTAwIiwgY2kuem9uZV9hYmJyKTsgIC8vIGFydGlmYWN0IG9mIFRpbWVab25lOjpBdCgpCiAKICAg
Ly8gQXBwcm9hY2ggdGhlIG1heGltYWwgVGltZSB2YWx1ZSBmcm9tIGJlbG93LgotICB0ID0gYWJz
bDo6RnJvbURhdGVUaW1lKDI5MjI3NzAyNjU5NiwgMTIsIDQsIDE1LCAzMCwgNiwgdXRjKTsKKyAg
dCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyOTIyNzcwMjY1OTYsIDEyLCA0
LCAxNSwgMzAsIDYpLCB1dGMpOwogICBFWFBFQ1RfRVEoIjI5MjI3NzAyNjU5Ni0xMi0wNFQxNToz
MDowNiswMDowMCIsCiAgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGFic2w6OlJGQzMzMzlf
ZnVsbCwgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjkyMjc3MDI2NTk2LCAx
MiwgNCwgMTUsIDMwLCA3LCB1dGMpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmls
U2Vjb25kKDI5MjI3NzAyNjU5NiwgMTIsIDQsIDE1LCAzMCwgNyksIHV0Yyk7CiAgIEVYUEVDVF9F
USgiMjkyMjc3MDI2NTk2LTEyLTA0VDE1OjMwOjA3KzAwOjAwIiwKICAgICAgICAgICAgIGFic2w6
OkZvcm1hdFRpbWUoYWJzbDo6UkZDMzMzOV9mdWxsLCB0LCB1dGMpKTsKICAgRVhQRUNUX0VRKApA
QCAtMTAwOCwyMSArMTAwMiwyMSBAQCBURVNUKFRpbWUsIENvbnZlcnNpb25TYXR1cmF0aW9uKSB7
CiAKICAgLy8gQ2hlY2tzIHRoYXQgd2UgY2FuIGFsc28gZ2V0IHRoZSBtYXhpbWFsIFRpbWUgdmFs
dWUgZm9yIGEgZmFyLWVhc3Qgem9uZS4KICAgY29uc3QgYWJzbDo6VGltZVpvbmUgcGx1czE0ID0g
YWJzbDo6Rml4ZWRUaW1lWm9uZSgxNCAqIDYwICogNjApOwotICB0ID0gYWJzbDo6RnJvbURhdGVU
aW1lKDI5MjI3NzAyNjU5NiwgMTIsIDUsIDUsIDMwLCA3LCBwbHVzMTQpOworICB0ID0gYWJzbDo6
RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDI5MjI3NzAyNjU5NiwgMTIsIDUsIDUsIDMwLCA3
KSwgcGx1czE0KTsKICAgRVhQRUNUX0VRKCIyOTIyNzcwMjY1OTYtMTItMDVUMDU6MzA6MDcrMTQ6
MDAiLAogICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShhYnNsOjpSRkMzMzM5X2Z1bGwsIHQs
IHBsdXMxNCkpOwogICBFWFBFQ1RfRVEoCiAgICAgICBhYnNsOjpVbml4RXBvY2goKSArIGFic2w6
OlNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpLCB0KTsKIAogICAv
LyBPbmUgc2Vjb25kIGxhdGVyIHNob3VsZCBwdXNoIHVzIHRvIGluZmluaXR5LgotICB0ID0gYWJz
bDo6RnJvbURhdGVUaW1lKDI5MjI3NzAyNjU5NiwgMTIsIDQsIDE1LCAzMCwgOCwgdXRjKTsKKyAg
dCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyOTIyNzcwMjY1OTYsIDEyLCA0
LCAxNSwgMzAsIDgpLCB1dGMpOwogICBFWFBFQ1RfRVEoImluZmluaXRlLWZ1dHVyZSIsIGFic2w6
OkZvcm1hdFRpbWUoYWJzbDo6UkZDMzMzOV9mdWxsLCB0LCB1dGMpKTsKIAogICAvLyBBcHByb2Fj
aCB0aGUgbWluaW1hbCBUaW1lIHZhbHVlIGZyb20gYWJvdmUuCi0gIHQgPSBhYnNsOjpGcm9tRGF0
ZVRpbWUoLTI5MjI3NzAyMjY1NywgMSwgMjcsIDgsIDI5LCA1MywgdXRjKTsKKyAgdCA9IGFic2w6
OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgtMjkyMjc3MDIyNjU3LCAxLCAyNywgOCwgMjks
IDUzKSwgdXRjKTsKICAgRVhQRUNUX0VRKCItMjkyMjc3MDIyNjU3LTAxLTI3VDA4OjI5OjUzKzAw
OjAwIiwKICAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoYWJzbDo6UkZDMzMzOV9mdWxsLCB0
LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgtMjkyMjc3MDIyNjU3LCAxLCAyNywg
OCwgMjksIDUyLCB1dGMpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25k
KC0yOTIyNzcwMjI2NTcsIDEsIDI3LCA4LCAyOSwgNTIpLCB1dGMpOwogICBFWFBFQ1RfRVEoIi0y
OTIyNzcwMjI2NTctMDEtMjdUMDg6Mjk6NTIrMDA6MDAiLAogICAgICAgICAgICAgYWJzbDo6Rm9y
bWF0VGltZShhYnNsOjpSRkMzMzM5X2Z1bGwsIHQsIHV0YykpOwogICBFWFBFQ1RfRVEoCkBAIC0x
MDMwLDE0ICsxMDI0LDE1IEBAIFRFU1QoVGltZSwgQ29udmVyc2lvblNhdHVyYXRpb24pIHsKIAog
ICAvLyBDaGVja3MgdGhhdCB3ZSBjYW4gYWxzbyBnZXQgdGhlIG1pbmltYWwgVGltZSB2YWx1ZSBm
b3IgYSBmYXItd2VzdCB6b25lLgogICBjb25zdCBhYnNsOjpUaW1lWm9uZSBtaW51czEyID0gYWJz
bDo6Rml4ZWRUaW1lWm9uZSgtMTIgKiA2MCAqIDYwKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGlt
ZSgtMjkyMjc3MDIyNjU3LCAxLCAyNiwgMjAsIDI5LCA1MiwgbWludXMxMik7CisgIHQgPSBhYnNs
OjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoLTI5MjI3NzAyMjY1NywgMSwgMjYsIDIwLCAy
OSwgNTIpLAorICAgICAgICAgICAgICAgICAgICAgIG1pbnVzMTIpOwogICBFWFBFQ1RfRVEoIi0y
OTIyNzcwMjI2NTctMDEtMjZUMjA6Mjk6NTItMTI6MDAiLAogICAgICAgICAgICAgYWJzbDo6Rm9y
bWF0VGltZShhYnNsOjpSRkMzMzM5X2Z1bGwsIHQsIG1pbnVzMTIpKTsKICAgRVhQRUNUX0VRKAog
ICAgICAgYWJzbDo6VW5peEVwb2NoKCkgKyBhYnNsOjpTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1pbigpKSwgdCk7CiAKICAgLy8gT25lIHNlY29uZCBiZWZvcmUgc2hvdWxk
IHB1c2ggdXMgdG8gLWluZmluaXR5LgotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKC0yOTIyNzcw
MjI2NTcsIDEsIDI3LCA4LCAyOSwgNTEsIHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJz
bDo6Q2l2aWxTZWNvbmQoLTI5MjI3NzAyMjY1NywgMSwgMjcsIDgsIDI5LCA1MSksIHV0Yyk7CiAg
IEVYUEVDVF9FUSgiaW5maW5pdGUtcGFzdCIsIGFic2w6OkZvcm1hdFRpbWUoYWJzbDo6UkZDMzMz
OV9mdWxsLCB0LCB1dGMpKTsKIH0KIApAQCAtMTA1MSwzOCArMTA0NiwxNjAgQEAgVEVTVChUaW1l
LCBFeHRlbmRlZENvbnZlcnNpb25TYXR1cmF0aW9uKSB7CiAgICAgICBhYnNsOjp0aW1lX2ludGVy
bmFsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTmV3X1lvcmsiKTsKICAgY29uc3QgYWJzbDo6VGlt
ZSBtYXggPQogICAgICAgYWJzbDo6RnJvbVVuaXhTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1heCgpKTsKLSAgYWJzbDo6VGltZTo6QnJlYWtkb3duIGJkOworICBhYnNsOjpU
aW1lWm9uZTo6Q2l2aWxJbmZvIGNpOwogICBhYnNsOjpUaW1lIHQ7CiAKICAgLy8gVGhlIG1heGlt
YWwgdGltZSBjb252ZXJ0ZWQgaW4gZWFjaCB6b25lLgotICBiZCA9IG1heC5JbihzeWQpOwotICBB
QlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyOTIyNzcwMjY1OTYsIDEyLCA1LCAyLCAzMCwg
NywgMzk2MDAsIHRydWUpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDI5MjI3NzAyNjU5Niwg
MTIsIDUsIDIsIDMwLCA3LCBzeWQpOworICBjaSA9IHN5ZC5BdChtYXgpOworICBFWFBFQ1RfQ0lW
SUxfSU5GTyhjaSwgMjkyMjc3MDI2NTk2LCAxMiwgNSwgMiwgMzAsIDcsIDM5NjAwLCB0cnVlKTsK
KyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyOTIyNzcwMjY1OTYsIDEy
LCA1LCAyLCAzMCwgNyksIHN5ZCk7CiAgIEVYUEVDVF9FUShtYXgsIHQpOwotICBiZCA9IG1heC5J
bihueWMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyOTIyNzcwMjY1OTYsIDEy
LCA0LCAxMCwgMzAsIDcsIC0xODAwMCwgZmFsc2UpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1l
KDI5MjI3NzAyNjU5NiwgMTIsIDQsIDEwLCAzMCwgNywgbnljKTsKKyAgY2kgPSBueWMuQXQobWF4
KTsKKyAgRVhQRUNUX0NJVklMX0lORk8oY2ksIDI5MjI3NzAyNjU5NiwgMTIsIDQsIDEwLCAzMCwg
NywgLTE4MDAwLCBmYWxzZSk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNv
bmQoMjkyMjc3MDI2NTk2LCAxMiwgNCwgMTAsIDMwLCA3KSwgbnljKTsKICAgRVhQRUNUX0VRKG1h
eCwgdCk7CiAKICAgLy8gT25lIHNlY29uZCBsYXRlciBzaG91bGQgcHVzaCB1cyB0byBpbmZpbml0
eS4KLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyOTIyNzcwMjY1OTYsIDEyLCA1LCAyLCAzMCwg
OCwgc3lkKTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyOTIyNzcw
MjY1OTYsIDEyLCA1LCAyLCAzMCwgOCksIHN5ZCk7CiAgIEVYUEVDVF9FUShhYnNsOjpJbmZpbml0
ZUZ1dHVyZSgpLCB0KTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyOTIyNzcwMjY1OTYsIDEy
LCA0LCAxMCwgMzAsIDgsIG55Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxT
ZWNvbmQoMjkyMjc3MDI2NTk2LCAxMiwgNCwgMTAsIDMwLCA4KSwgbnljKTsKICAgRVhQRUNUX0VR
KGFic2w6OkluZmluaXRlRnV0dXJlKCksIHQpOwogCiAgIC8vIEFuZCB3ZSBzaG91bGQgc3RpY2sg
dGhlcmUuCi0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjkyMjc3MDI2NTk2LCAxMiwgNSwgMiwg
MzAsIDksIHN5ZCk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjky
Mjc3MDI2NTk2LCAxMiwgNSwgMiwgMzAsIDkpLCBzeWQpOwogICBFWFBFQ1RfRVEoYWJzbDo6SW5m
aW5pdGVGdXR1cmUoKSwgdCk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjkyMjc3MDI2NTk2
LCAxMiwgNCwgMTAsIDMwLCA5LCBueWMpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNp
dmlsU2Vjb25kKDI5MjI3NzAyNjU5NiwgMTIsIDQsIDEwLCAzMCwgOSksIG55Yyk7CiAgIEVYUEVD
VF9FUShhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpLCB0KTsKIAogICAvLyBBbGwgdGhlIHdheSB1cCB0
byBhIHNhdHVyYXRlZCBkYXRlL3RpbWUsIHdpdGhvdXQgb3ZlcmZsb3cuCi0gIHQgPSBhYnNsOjpG
cm9tRGF0ZVRpbWUoCi0gICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwg
MTIsIDMxLCAyMywgNTksIDU5LCBzeWQpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNp
dmlsU2Vjb25kOjptYXgoKSwgc3lkKTsKICAgRVhQRUNUX0VRKGFic2w6OkluZmluaXRlRnV0dXJl
KCksIHQpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKAotICAgICAgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWF4KCksIDEyLCAzMSwgMjMsIDU5LCA1OSwgbnljKTsKKyAgdCA9IGFi
c2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZDo6bWF4KCksIG55Yyk7CiAgIEVYUEVDVF9F
UShhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpLCB0KTsKIH0KIAorVEVTVChUaW1lLCBGcm9tQ2l2aWxB
bGlnbm1lbnQpIHsKKyAgY29uc3QgYWJzbDo6VGltZVpvbmUgdXRjID0gYWJzbDo6VVRDVGltZVpv
bmUoKTsKKyAgY29uc3QgYWJzbDo6Q2l2aWxTZWNvbmQgY3MoMjAxNSwgMiwgMywgNCwgNSwgNik7
CisgIGFic2w6OlRpbWUgdCA9IGFic2w6OkZyb21DaXZpbChjcywgdXRjKTsKKyAgRVhQRUNUX0VR
KCIyMDE1LTAyLTAzVDA0OjA1OjA2KzAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh0LCB1dGMpKTsK
KyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbE1pbnV0ZShjcyksIHV0Yyk7CisgIEVY
UEVDVF9FUSgiMjAxNS0wMi0wM1QwNDowNTowMCswMDowMCIsIGFic2w6OkZvcm1hdFRpbWUodCwg
dXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxIb3VyKGNzKSwgdXRjKTsK
KyAgRVhQRUNUX0VRKCIyMDE1LTAyLTAzVDA0OjAwOjAwKzAwOjAwIiwgYWJzbDo6Rm9ybWF0VGlt
ZSh0LCB1dGMpKTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbERheShjcyksIHV0
Yyk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMi0wM1QwMDowMDowMCswMDowMCIsIGFic2w6OkZvcm1h
dFRpbWUodCwgdXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxNb250aChj
cyksIHV0Yyk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMi0wMVQwMDowMDowMCswMDowMCIsIGFic2w6
OkZvcm1hdFRpbWUodCwgdXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxZ
ZWFyKGNzKSwgdXRjKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxVDAwOjAwOjAwKzAwOjAwIiwg
YWJzbDo6Rm9ybWF0VGltZSh0LCB1dGMpKTsKK30KKworVEVTVChUaW1lLCBMZWdhY3lEYXRlVGlt
ZSkgeworICBjb25zdCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENUaW1lWm9uZSgpOwor
ICBjb25zdCBzdGQ6OnN0cmluZyB5bWRobXMgPSAiJVktJW0tJWQgJUg6JU06JVMiOworICBjb25z
dCBpbnQga01heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgIGNvbnN0IGlu
dCBrTWluID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKTsKKyAgYWJzbDo6VGltZSB0
OworCisgIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoc3RkOjpudW1lcmljX2xpbWl0czxhYnNsOjpj
aXZpbF95ZWFyX3Q+OjptYXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrTWF4LCBrTWF4
LCBrTWF4LCBrTWF4LCBrTWF4LCB1dGMpOworICBFWFBFQ1RfRVEoImluZmluaXRlLWZ1dHVyZSIs
CisgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7ICAvLyBubyBv
dmVyZmxvdworICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKHN0ZDo6bnVtZXJpY19saW1pdHM8YWJz
bDo6Y2l2aWxfeWVhcl90Pjo6bWluKCksCisgICAgICAgICAgICAgICAgICAgICAgICAga01pbiwg
a01pbiwga01pbiwga01pbiwga01pbiwgdXRjKTsKKyAgRVhQRUNUX0VRKCJpbmZpbml0ZS1wYXN0
IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsgIC8vIG5v
IG92ZXJmbG93CisKKyAgLy8gQ2hlY2sgbm9ybWFsaXphdGlvbi4KKyAgRVhQRUNUX1RSVUUoYWJz
bDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDEwLCAzMiwgOCwgMzAsIDAsIHV0Yykubm9ybWFsaXpl
ZCk7CisgIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMSwgMSwgMCwgMCwgNjAsIHV0Yyk7
CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMSAwMDowMTowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1k
aG1zLCB0LCB1dGMpKTsKKyAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAxLCAxLCAwLCA2
MCwgMCwgdXRjKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxIDAxOjAwOjAwIiwgYWJzbDo6Rm9y
bWF0VGltZSh5bWRobXMsIHQsIHV0YykpOworICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUs
IDEsIDEsIDI0LCAwLCAwLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDIgMDA6MDA6MDAi
LCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tRGF0
ZVRpbWUoMjAxNSwgMSwgMzIsIDAsIDAsIDAsIHV0Yyk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMi0w
MSAwMDowMDowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKKyAgdCA9IGFi
c2w6OkZyb21EYXRlVGltZSgyMDE1LCAxMywgMSwgMCwgMCwgMCwgdXRjKTsKKyAgRVhQRUNUX0VR
KCIyMDE2LTAxLTAxIDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0Yykp
OworICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEzLCAzMiwgNjAsIDYwLCA2MCwgdXRj
KTsKKyAgRVhQRUNUX0VRKCIyMDE2LTAyLTAzIDEzOjAxOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5
bWRobXMsIHQsIHV0YykpOworICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEsIDEsIDAs
IDAsIC0xLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTQtMTItMzEgMjM6NTk6NTkiLCBhYnNsOjpG
b3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAx
NSwgMSwgMSwgMCwgLTEsIDAsIHV0Yyk7CisgIEVYUEVDVF9FUSgiMjAxNC0xMi0zMSAyMzo1OTow
MCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKKyAgdCA9IGFic2w6OkZyb21E
YXRlVGltZSgyMDE1LCAxLCAxLCAtMSwgMCwgMCwgdXRjKTsKKyAgRVhQRUNUX0VRKCIyMDE0LTEy
LTMxIDIzOjAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOworICB0ID0g
YWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEsIC0xLCAwLCAwLCAwLCB1dGMpOworICBFWFBFQ1Rf
RVEoIjIwMTQtMTItMzAgMDA6MDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRj
KSk7CisgIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgLTEsIDEsIDAsIDAsIDAsIHV0Yyk7
CisgIEVYUEVDVF9FUSgiMjAxNC0xMS0wMSAwMDowMDowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1k
aG1zLCB0LCB1dGMpKTsKKyAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAtMSwgLTEsIC0x
LCAtMSwgLTEsIHV0Yyk7CisgIEVYUEVDVF9FUSgiMjAxNC0xMC0yOSAyMjo1ODo1OSIsIGFic2w6
OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKK30KKworVEVTVChUaW1lLCBOZXh0VHJhbnNp
dGlvblVUQykgeworICBjb25zdCBhdXRvIHR6ID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKKyAgYWJz
bDo6VGltZVpvbmU6OkNpdmlsVHJhbnNpdGlvbiB0cmFuczsKKworICBhdXRvIHQgPSBhYnNsOjpJ
bmZpbml0ZVBhc3QoKTsKKyAgRVhQRUNUX0ZBTFNFKHR6Lk5leHRUcmFuc2l0aW9uKHQsICZ0cmFu
cykpOworCisgIHQgPSBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpOworICBFWFBFQ1RfRkFMU0UodHou
TmV4dFRyYW5zaXRpb24odCwgJnRyYW5zKSk7Cit9CisKK1RFU1QoVGltZSwgUHJldlRyYW5zaXRp
b25VVEMpIHsKKyAgY29uc3QgYXV0byB0eiA9IGFic2w6OlVUQ1RpbWVab25lKCk7CisgIGFic2w6
OlRpbWVab25lOjpDaXZpbFRyYW5zaXRpb24gdHJhbnM7CisKKyAgYXV0byB0ID0gYWJzbDo6SW5m
aW5pdGVGdXR1cmUoKTsKKyAgRVhQRUNUX0ZBTFNFKHR6LlByZXZUcmFuc2l0aW9uKHQsICZ0cmFu
cykpOworCisgIHQgPSBhYnNsOjpJbmZpbml0ZVBhc3QoKTsKKyAgRVhQRUNUX0ZBTFNFKHR6LlBy
ZXZUcmFuc2l0aW9uKHQsICZ0cmFucykpOworfQorCitURVNUKFRpbWUsIE5leHRUcmFuc2l0aW9u
TllDKSB7CisgIGNvbnN0IGF1dG8gdHogPSBhYnNsOjp0aW1lX2ludGVybmFsOjpMb2FkVGltZVpv
bmUoIkFtZXJpY2EvTmV3X1lvcmsiKTsKKyAgYWJzbDo6VGltZVpvbmU6OkNpdmlsVHJhbnNpdGlv
biB0cmFuczsKKworICBhdXRvIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQo
MjAxOCwgNiwgMzAsIDAsIDAsIDApLCB0eik7CisgIEVYUEVDVF9UUlVFKHR6Lk5leHRUcmFuc2l0
aW9uKHQsICZ0cmFucykpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxOCwgMTEs
IDQsIDIsIDAsIDApLCB0cmFucy5mcm9tKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsU2Vjb25k
KDIwMTgsIDExLCA0LCAxLCAwLCAwKSwgdHJhbnMudG8pOworCisgIHQgPSBhYnNsOjpJbmZpbml0
ZUZ1dHVyZSgpOworICBFWFBFQ1RfRkFMU0UodHouTmV4dFRyYW5zaXRpb24odCwgJnRyYW5zKSk7
CisKKyAgdCA9IGFic2w6OkluZmluaXRlUGFzdCgpOworICBFWFBFQ1RfVFJVRSh0ei5OZXh0VHJh
bnNpdGlvbih0LCAmdHJhbnMpKTsKKyAgaWYgKHRyYW5zLmZyb20gPT0gYWJzbDo6Q2l2aWxTZWNv
bmQoMTkxOCwgMDMsIDMxLCAyLCAwLCAwKSkgeworICAgIC8vIEl0IGxvb2tzIGxpa2UgdGhlIHR6
ZGF0YSBpcyBvbmx5IDMyIGJpdCAocHJvYmFibHkgbWFjT1MpLAorICAgIC8vIHdoaWNoIGJvdHRv
bXMgb3V0IGF0IDE5MDEtMTItMTNUMjA6NDU6NTIrMDA6MDAuCisgICAgRVhQRUNUX0VRKGFic2w6
OkNpdmlsU2Vjb25kKDE5MTgsIDMsIDMxLCAzLCAwLCAwKSwgdHJhbnMudG8pOworICB9IGVsc2Ug
eworICAgIEVYUEVDVF9FUShhYnNsOjpDaXZpbFNlY29uZCgxODgzLCAxMSwgMTgsIDEyLCAzLCA1
OCksIHRyYW5zLmZyb20pOworICAgIEVYUEVDVF9FUShhYnNsOjpDaXZpbFNlY29uZCgxODgzLCAx
MSwgMTgsIDEyLCAwLCAwKSwgdHJhbnMudG8pOworICB9Cit9CisKK1RFU1QoVGltZSwgUHJldlRy
YW5zaXRpb25OWUMpIHsKKyAgY29uc3QgYXV0byB0eiA9IGFic2w6OnRpbWVfaW50ZXJuYWw6Okxv
YWRUaW1lWm9uZSgiQW1lcmljYS9OZXdfWW9yayIpOworICBhYnNsOjpUaW1lWm9uZTo6Q2l2aWxU
cmFuc2l0aW9uIHRyYW5zOworCisgIGF1dG8gdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZp
bFNlY29uZCgyMDE4LCA2LCAzMCwgMCwgMCwgMCksIHR6KTsKKyAgRVhQRUNUX1RSVUUodHouUHJl
dlRyYW5zaXRpb24odCwgJnRyYW5zKSk7CisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbFNlY29uZCgy
MDE4LCAzLCAxMSwgMiwgMCwgMCksIHRyYW5zLmZyb20pOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2
aWxTZWNvbmQoMjAxOCwgMywgMTEsIDMsIDAsIDApLCB0cmFucy50byk7CisKKyAgdCA9IGFic2w6
OkluZmluaXRlUGFzdCgpOworICBFWFBFQ1RfRkFMU0UodHouUHJldlRyYW5zaXRpb24odCwgJnRy
YW5zKSk7CisKKyAgdCA9IGFic2w6OkluZmluaXRlRnV0dXJlKCk7CisgIEVYUEVDVF9UUlVFKHR6
LlByZXZUcmFuc2l0aW9uKHQsICZ0cmFucykpOworICAvLyBXZSBoYXZlIGEgdHJhbnNpdGlvbiBi
dXQgd2UgZG9uJ3Qga25vdyB3aGljaCBvbmUuCit9CisKIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS90aW1lX3pvbmVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZV96b25l
X3Rlc3QuY2MKaW5kZXggNDNkOTE5MDQwNDQ1Y2FiNjYzNTUwZGEzOTE2ZWYyM2YwOTY5YzQ1Yi4u
OGYxZTc0YWNhNTRiYTZkZTg2MzhkZDI5MjNmYjEzNDBhNjI0NjU2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS90aW1lX3pvbmVfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWVfem9uZV90ZXN0
LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90eXBlcy9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL0JVSUxELmJhemVsCmluZGV4
IDMyZjY5MGM5NGMxZDM0N2MxNDM3MjgzYjgwODhkMmIxOTVmNTFjYmIuLjY2ZWNiMDQ0MGRlMDZi
NDRkZjJhNmRiMjBlZjcwN2VhMWNlZjU3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL0JVSUxE
LmJhemVsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL0JVSUxELmJhemVsCkBAIC01LDcgKzUsNyBAQAogIyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLApAQCAtMTUsMTEgKzE1LDEyIEBACiAjCiAKIGxvYWQoCi0gICAgIi8vYWJz
bDpjb3B0cy5iemwiLAorICAgICIvL2Fic2w6Y29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bCIsCiAg
ICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCi0gICAgIkFCU0xfVEVTVF9DT1BUUyIsCisgICAgIkFC
U0xfREVGQVVMVF9MSU5LT1BUUyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHIiwKICAgICAi
QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMiLAorICAgICJBQlNMX1RFU1RfQ09QVFMiLAog
KQogCiBwYWNrYWdlKGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJd
KQpAQCAtMzAsNiArMzEsNyBAQCBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAiYW55IiwKICAgICBo
ZHJzID0gWyJhbnkuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxp
bmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6
YmFkX2FueV9jYXN0IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC00Myw2ICs0
NSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJiYWRfYW55X2Nhc3QiLAogICAgIGhkcnMg
PSBbImJhZF9hbnlfY2FzdC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjpiYWRfYW55X2Nhc3RfaW1wbCIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLApA
QCAtNTYsNyArNTksNyBAQCBjY19saWJyYXJ5KAogICAgICAgICAiYmFkX2FueV9jYXN0LmgiLAog
ICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBRyArIEFCU0xfREVGQVVMVF9D
T1BUUywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAg
IGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKICAg
ICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtNzEsNyArNzQsNyBAQCBjY190
ZXN0KAogICAgICAgICAiYW55X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhD
RVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZM
QUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjphbnkiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtODksNiArOTIsNyBAQCBjY190
ZXN0KAogICAgICAgICAiYW55X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjphbnkiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtMTAzLDcg
KzEwNyw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJhbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0
IiwKICAgICBzcmNzID0gWyJhbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIl0sCiAgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0
cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9F
WENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjphbnkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0aW5nIiwKQEAgLTExMyw4ICsxMTcsMTQgQEAgY2NfdGVzdCgKIAogY2NfbGlicmFy
eSgKICAgICBuYW1lID0gInNwYW4iLAotICAgIGhkcnMgPSBbInNwYW4uaCJdLAorICAgIHNyY3Mg
PSBbCisgICAgICAgICJpbnRlcm5hbC9zcGFuLmgiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAg
ICAgICAgInNwYW4uaCIsCisgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAg
ICAgICAiLy9hYnNsL2FsZ29yaXRobSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRl
cnMiLApAQCAtMTI4LDcgKzEzOCw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAg
ICAgc3JjcyA9IFsic3Bhbl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMg
KyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19G
TEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09Q
VFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpzcGFu
IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC0xNDcsNiArMTU3LDcgQEAgY2Nf
dGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJzcGFuX3Rlc3QuY2MiXSwK
ICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnNwYW4iLAogICAgICAgICAiLy9h
YnNsL2Jhc2U6Y29uZmlnIiwKQEAgLTE2MiwxMiArMTczLDE1IEBAIGNjX3Rlc3QoCiAKIGNjX2xp
YnJhcnkoCiAgICAgbmFtZSA9ICJvcHRpb25hbCIsCi0gICAgc3JjcyA9IFsib3B0aW9uYWwuY2Mi
XSwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9vcHRpb25hbC5oIl0sCiAgICAgaGRycyA9IFsib3B0
aW9uYWwuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFkX29w
dGlvbmFsX2FjY2VzcyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpiYXNlX2ludGVybmFsIiwKICAg
ICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hl
YWRlcnMiLAogICAgICAgICAiLy9hYnNsL21lbW9yeSIsCiAgICAgICAgICIvL2Fic2wvbWV0YTp0
eXBlX3RyYWl0cyIsCiAgICAgICAgICIvL2Fic2wvdXRpbGl0eSIsCkBAIC0xNzksNyArMTkzLDcg
QEAgY2NfbGlicmFyeSgKICAgICBzcmNzID0gWyJiYWRfb3B0aW9uYWxfYWNjZXNzLmNjIl0sCiAg
ICAgaGRycyA9IFsiYmFkX29wdGlvbmFsX2FjY2Vzcy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RF
RkFVTFRfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xf
RVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05T
X0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAg
ICAgICAgIi8vYWJzbC9iYXNlIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC0x
OTEsNyArMjA1LDcgQEAgY2NfbGlicmFyeSgKICAgICBzcmNzID0gWyJiYWRfdmFyaWFudF9hY2Nl
c3MuY2MiXSwKICAgICBoZHJzID0gWyJiYWRfdmFyaWFudF9hY2Nlc3MuaCJdLAogICAgIGNvcHRz
ID0gQUJTTF9FWENFUFRJT05TX0ZMQUcgKyBBQlNMX0RFRkFVTFRfQ09QVFMsCi0gICAgbGlua29w
dHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
RVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRl
cHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25m
aWciLApAQCAtMjA1LDcgKzIxOSw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICJvcHRpb25hbF90ZXN0
LmNjIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJ
T05TX0ZMQUcsCi0gICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6b3B0aW9uYWwiLAogICAgICAg
ICAiLy9hYnNsL2Jhc2UiLApAQCAtMjIyLDcgKzIzNiw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICJv
cHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFC
U0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJ
T05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsK
ICAgICAgICAgIjpvcHRpb25hbCIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fc2Fm
ZXR5X3Rlc3RpbmciLApAQCAtMjM1LDYgKzI0OSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9
IFsiaW50ZXJuYWwvdmFyaWFudC5oIl0sCiAgICAgaGRycyA9IFsidmFyaWFudC5oIl0sCiAgICAg
Y29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpiYWRfdmFyaWFudF9hY2Nlc3MiLAog
ICAgICAgICAiLy9hYnNsL2Jhc2U6YmFzZV9pbnRlcm5hbCIsCkBAIC0yNTAsNyArMjY1LDcgQEAg
Y2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJ2YXJpYW50X3Rlc3Qu
Y2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFH
LAotICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCisgICAgbGlu
a29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyArIEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnZhcmlhbnQiLAogICAgICAgICAiLy9hYnNs
L2Jhc2U6Y29uZmlnIiwKQEAgLTI2OCw2ICsyODMsNyBAQCBjY190ZXN0KAogICAgICAgICAidmFy
aWFudF9iZW5jaG1hcmsuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFncyA9IFsiYmVu
Y2htYXJrIl0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjp2YXJpYW50IiwKQEAgLTI4MywxMSAr
Mjk5LDM2IEBAIGNjX3Rlc3QoCiAgICAgICAgICJ2YXJpYW50X2V4Y2VwdGlvbl9zYWZldHlfdGVz
dC5jYyIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBU
SU9OU19GTEFHLAotICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyArIEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnZhcmlhbnQiLAorICAgICAg
ICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl9z
YWZldHlfdGVzdGluZyIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICAgICAgIkBjb21f
Z29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBdLAogKQorCitjY19saWJyYXJ5
KAorICAgIG5hbWUgPSAiY29tcGFyZSIsCisgICAgaGRycyA9IFsiY29tcGFyZS5oIl0sCisgICAg
Y29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJz
bC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIs
CisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImNvbXBhcmVfdGVzdCIsCisgICAg
c2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImNvbXBhcmVfdGVzdC5jYyIs
CisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWworICAg
ICAgICAiOmNvbXBhcmUiLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiQGNvbV9n
b29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlcy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL0JVSUxELmduCmluZGV4IGJmZGFmYjMx
N2UzYjRiZjFkM2ZlYzI1MmNkMGNkMWQxOTNlYzE5MjkuLjMxY2VhZjMwODRiNmE0ZDI2OGFlN2Ew
NjExZjFkOGFiNzE4MTM2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL0JVSUxELmduCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzL0JVSUxELmduCkBAIC00LDExICs0LDE5IEBACiAKIGltcG9ydCgiLy9idWls
ZF9vdmVycmlkZXMvYnVpbGQuZ25pIikKIAorIyBVc2FnZSBvZiBBYnNlaWwgaW4gQ2hyb21pdW0g
aXMgZ3VhcmRlZCBieSBhbiBleHBsaWNpdCBvcHQtaW4gbGlzdCwgYmVmb3JlCisjIGFkZGluZyBw
cm9qZWN0cyB0byB0aGlzIGxpc3QgcGxlYXNlIHJlYWNoIG91dCB0byBjeHhAY2hyb21pdW0ub3Jn
IGFuZCBDQzoKKyMgLSBodHRwczovL2NzLmNocm9taXVtLm9yZy9jaHJvbWl1bS9zcmMvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9PV05FUlMKKyMKKyMgTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91
bmQgYXQ6CisjIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMURnUzEtQTNyemJv
VExqcGY0bTFzcWtKZ1dqbllfUnUyZG9razFYMXZCRFUKIGlmIChidWlsZF93aXRoX2Nocm9taXVt
KSB7CiAgIHZpc2liaWxpdHkgPSBbCisgICAgIi8vbGliYXNzaXN0YW50LyoiLAogICAgICIvL3Ro
aXJkX3BhcnR5L3dlYnJ0Yy8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAog
ICAgICIvL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Q6Z3Rlc3QiLAorICAgICIvL3RoaXJkX3BhcnR5
L29wZW5zY3JlZW4vKiIsCiAgIF0KIH0gZWxzZSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCkBA
IC04MCw2ICs4OCw5IEBAIHNvdXJjZV9zZXQoInNwYW4iKSB7CiAgIHB1YmxpYyA9IFsKICAgICAi
c3Bhbi5oIiwKICAgXQorICBzb3VyY2VzID0gWworICAgICJpbnRlcm5hbC9zcGFuLmgiLAorICBd
CiAgIGRlcHMgPSBbCiAgICAgIi4uL2FsZ29yaXRobSIsCiAgICAgIi4uL2Jhc2U6Y29yZV9oZWFk
ZXJzIiwKQEAgLTk2LDEzICsxMDcsMTQgQEAgc291cmNlX3NldCgib3B0aW9uYWwiKSB7CiAgIF0K
ICAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNs
dWRlX2NvbmZpZyIgXQogICBzb3VyY2VzID0gWwotICAgICJvcHRpb25hbC5jYyIsCisgICAgImlu
dGVybmFsL29wdGlvbmFsLmgiLAogICBdCiAgIHB1YmxpYyA9IFsKICAgICAib3B0aW9uYWwuaCIs
CiAgIF0KICAgZGVwcyA9IFsKICAgICAiOmJhZF9vcHRpb25hbF9hY2Nlc3MiLAorICAgICIuLi9i
YXNlOmJhc2VfaW50ZXJuYWwiLAogICAgICIuLi9iYXNlOmNvbmZpZyIsCiAgICAgIi4uL2Jhc2U6
Y29yZV9oZWFkZXJzIiwKICAgICAiLi4vbWVtb3J5IiwKQEAgLTE3MSwzICsxODMsMTkgQEAgc291
cmNlX3NldCgidmFyaWFudCIpIHsKICAgICAiLi4vdXRpbGl0eSIsCiAgIF0KIH0KKworc291cmNl
X3NldCgiY29tcGFyZSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0g
WworICAgICJjb21wYXJlLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uL2Jhc2U6Y29yZV9o
ZWFkZXJzIiwKKyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgIF0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQ01ha2VMaXN0cy50eHQK
aW5kZXggMmYyZTNhNzc4MDg5MzNjYWFjZjQ2MmEzYThiODA1NzczYWU1MDZlZi4uNGNlNjg1ZGE0
ZTZjYzA1ZmIwZDFiY2JhYzU4MGYxYTVkMDAyYjNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQ01ha2VMaXN0cy50eHQKQEAgLTUsNyAr
NSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwog
IyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMywyMTYgKzEzLDMzNiBAQAogIyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCiAjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogIwotCi1saXN0KEFQUEVORCBU
WVBFU19QVUJMSUNfSEVBREVSUwotICAiYW55LmgiCi0gICJiYWRfYW55X2Nhc3QuaCIKLSAgImJh
ZF9vcHRpb25hbF9hY2Nlc3MuaCIKLSAgIm9wdGlvbmFsLmgiCi0gICJzcGFuLmgiCi0gICJ2YXJp
YW50LmgiCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBhbnkKKyAgSERSUworICAgICJh
bnkuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFi
c2w6OmJhZF9hbnlfY2FzdAorICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVy
cworICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAgYWJzbDo6dXRpbGl0eQorICBQVUJMSUMKICkK
IAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgYmFkX2FueV9jYXN0CisgIEhEUlMKKyAg
ICJiYWRfYW55X2Nhc3QuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAg
REVQUworICAgIGFic2w6OmJhZF9hbnlfY2FzdF9pbXBsCisgICAgYWJzbDo6Y29uZmlnCisgIFBV
QkxJQworKQogCi0jIGFueSBsaWJyYXJ5Ci1hYnNsX2hlYWRlcl9saWJyYXJ5KAotICBUQVJHRVQK
LSAgICBhYnNsX2FueQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbDo6YmFkX2FueV9jYXN0
Ci0gICAgYWJzbDo6YmFzZQotICAgIGFic2w6Om1ldGEKLSAgICBhYnNsOjp1dGlsaXR5Ci0gIFBS
SVZBVEVfQ09NUElMRV9GTEFHUworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgYmFkX2Fu
eV9jYXN0X2ltcGwKKyAgU1JDUworICAgImJhZF9hbnlfY2FzdC5oIgorICAgImJhZF9hbnlfY2Fz
dC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KICAgICAke0FCU0xfRVhD
RVBUSU9OU19GTEFHfQotICBFWFBPUlRfTkFNRQotICAgIGFueQorICBMSU5LT1BUUworICAgICR7
QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisg
ICAgYWJzbDo6Y29uZmlnCiApCiAKLSMgc3BhbiBsaWJyYXJ5Ci1hYnNsX2hlYWRlcl9saWJyYXJ5
KAotICBUQVJHRVQKLSAgICBhYnNsX3NwYW4KLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2w6
OnV0aWxpdHkKLSAgRVhQT1JUX05BTUUKLSAgICBzcGFuCithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
KyAgICBhbnlfdGVzdAorICBTUkNTCisgICAgImFueV90ZXN0LmNjIgorICBDT1BUUworICAgICR7
QUJTTF9URVNUX0NPUFRTfQorICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9CisgIExJTktPUFRT
CisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6
OmFueQorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpleGNlcHRp
b25fdGVzdGluZworICAgIGFic2w6OnRlc3RfaW5zdGFuY2VfdHJhY2tlcgorICAgIGdtb2NrX21h
aW4KICkKIAorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgYW55X3Rlc3Rfbm9leGNlcHRpb25z
CisgIFNSQ1MKKyAgICAiYW55X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjphbnkKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29u
ZmlnCisgICAgYWJzbDo6ZXhjZXB0aW9uX3Rlc3RpbmcKKyAgICBhYnNsOjp0ZXN0X2luc3RhbmNl
X3RyYWNrZXIKKyAgICBnbW9ja19tYWluCispCiAKLSMgYmFkX2FueV9jYXN0IGxpYnJhcnkKLWxp
c3QoQVBQRU5EIEJBRF9BTllfQ0FTVF9TUkMKLSAgImJhZF9hbnlfY2FzdC5jYyIKLSAgJHtUWVBF
U19QVUJMSUNfSEVBREVSU30KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGFueV9leGNlcHRp
b25fc2FmZXR5X3Rlc3QKKyAgU1JDUworICAgICJhbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICAgICR7QUJTTF9FWENFUFRJT05T
X0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30K
KyAgREVQUworICAgIGFic2w6OmFueQorICAgIGFic2w6OmV4Y2VwdGlvbl9zYWZldHlfdGVzdGlu
ZworICAgIGdtb2NrX21haW4KICkKIAotYWJzbF9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNs
X2JhZF9hbnlfY2FzdAotICBTT1VSQ0VTCi0gICAgJHtCQURfQU5ZX0NBU1RfU1JDfQotICBQVUJM
SUNfTElCUkFSSUVTCi0gIEVYUE9SVF9OQU1FCi0gICAgYmFkX2FueV9jYXN0CithYnNsX2NjX2xp
YnJhcnkoCisgIE5BTUUKKyAgICBzcGFuCisgIEhEUlMKKyAgICAic3Bhbi5oIgorICBTUkNTCisg
ICAgImludGVybmFsL3NwYW4uaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OmFsZ29yaXRobQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAg
IGFic2w6OnRocm93X2RlbGVnYXRlCisgICAgYWJzbDo6dHlwZV90cmFpdHMKKyAgUFVCTElDCiAp
CiAKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHNwYW5fdGVzdAorICBTUkNTCisgICAgInNw
YW5fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgICAke0FCU0xf
RVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdf
TElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6YmFzZQorICAgIGFi
c2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmV4Y2VwdGlvbl90
ZXN0aW5nCisgICAgYWJzbDo6Zml4ZWRfYXJyYXkKKyAgICBhYnNsOjppbmxpbmVkX3ZlY3Rvcgor
ICAgIGFic2w6Omhhc2hfdGVzdGluZworICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9ja19tYWlu
CispCiAKLSMgb3B0aW9uYWwgbGlicmFyeQotbGlzdChBUFBFTkQgT1BUSU9OQUxfU1JDCi0gICJv
cHRpb25hbC5jYyIKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHNwYW5fdGVzdF9ub2V4Y2Vw
dGlvbnMKKyAgU1JDUworICAgICJzcGFuX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RF
U1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6YmFzZQorICAgIGFi
c2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmV4Y2VwdGlvbl90
ZXN0aW5nCisgICAgYWJzbDo6Zml4ZWRfYXJyYXkKKyAgICBhYnNsOjppbmxpbmVkX3ZlY3Rvcgor
ICAgIGFic2w6Omhhc2hfdGVzdGluZworICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9ja19tYWlu
CiApCiAKLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9vcHRpb25hbAotICBTT1VS
Q0VTCi0gICAgJHtPUFRJT05BTF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKK2Fic2xfY2NfbGli
cmFyeSgKKyAgTkFNRQorICAgIG9wdGlvbmFsCisgIEhEUlMKKyAgICAib3B0aW9uYWwuaCIKKyAg
U1JDUworICAgICJpbnRlcm5hbC9vcHRpb25hbC5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQorICBERVBTCiAgICAgYWJzbDo6YmFkX29wdGlvbmFsX2FjY2VzcwotICAgIGFi
c2w6OmJhc2UKKyAgICBhYnNsOjpiYXNlX2ludGVybmFsCisgICAgYWJzbDo6Y29uZmlnCisgICAg
YWJzbDo6Y29yZV9oZWFkZXJzCiAgICAgYWJzbDo6bWVtb3J5Ci0gICAgYWJzbDo6bWV0YQorICAg
IGFic2w6OnR5cGVfdHJhaXRzCiAgICAgYWJzbDo6dXRpbGl0eQotICBFWFBPUlRfTkFNRQotICAg
IG9wdGlvbmFsCisgIFBVQkxJQwogKQogCi0KLXNldChCQURfT1BUSU9OQUxfQUNDRVNTX1NSQyAi
YmFkX29wdGlvbmFsX2FjY2Vzcy5jYyIpCi1zZXQoQkFEX09QVElPTkFMX0FDQ0VTU19MSUJSQVJJ
RVMgYWJzbDo6YmFzZSkKLQotYWJzbF9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX2JhZF9v
cHRpb25hbF9hY2Nlc3MKLSAgU09VUkNFUwotICAgICR7QkFEX09QVElPTkFMX0FDQ0VTU19TUkN9
Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0JBRF9PUFRJT05BTF9BQ0NFU1NfUFVCTElDX0xJ
QlJBUklFU30KLSAgRVhQT1JUX05BTUUKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQogICAgIGJh
ZF9vcHRpb25hbF9hY2Nlc3MKLSkKLQotIyB2YXJpYW50IGxpYnJhcnkKLWFic2xfbGlicmFyeSgK
LSAgVEFSR0VUCi0gICAgYWJzbF92YXJpYW50Ci0gIFNPVVJDRVMKLSAgICAiYmFkX3ZhcmlhbnRf
YWNjZXNzLmgiICJiYWRfdmFyaWFudF9hY2Nlc3MuY2MiICJ2YXJpYW50LmgiICJpbnRlcm5hbC92
YXJpYW50LmgiCi0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsOjpiYXNlIGFic2w6Om1ldGEg
YWJzbDo6dXRpbGl0eQotICBQUklWQVRFX0NPTVBJTEVfRkxBR1MKKyAgSERSUworICAgICJiYWRf
b3B0aW9uYWxfYWNjZXNzLmgiCisgIFNSQ1MKKyAgICAiYmFkX29wdGlvbmFsX2FjY2Vzcy5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KICAgICAke0FCU0xfRVhDRVBUSU9O
U19GTEFHfQotICBFWFBPUlRfTkFNRQotICAgIHZhcmlhbnQKKyAgTElOS09QVFMKKyAgICAke0FC
U0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAg
IGFic2w6OmNvbmZpZworICBQVUJMSUMKICkKIAotIwotIyMgVEVTVFMKLSMKLQotCi0jIHRlc3Qg
YW55X3Rlc3QKLXNldChBTllfVEVTVF9TUkMgImFueV90ZXN0LmNjIikKLXNldChBTllfVEVTVF9Q
VUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbDo6dGhyb3dfZGVsZWdhdGUgYWJzbDo6YW55
IGFic2w6OmJhZF9hbnlfY2FzdCB0ZXN0X2luc3RhbmNlX3RyYWNrZXJfbGliKQotCi1hYnNsX3Rl
c3QoCi0gIFRBUkdFVAotICAgIGFueV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0FOWV9URVNUX1NS
Q30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7QU5ZX1RFU1RfUFVCTElDX0xJQlJBUklFU30K
LSAgUFJJVkFURV9DT01QSUxFX0ZMQUdTCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBi
YWRfdmFyaWFudF9hY2Nlc3MKKyAgSERSUworICAgICJiYWRfdmFyaWFudF9hY2Nlc3MuaCIKKyAg
U1JDUworICAgICJiYWRfdmFyaWFudF9hY2Nlc3MuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfQ09QVFN9CiAgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KKyAgTElOS09QVFMKKyAg
ICAke0FCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFz
ZQorICAgIGFic2w6OmNvbmZpZworICBQVUJMSUMKICkKIAotCi0jIHRlc3QgYW55X3Rlc3Rfbm9l
eGNlcHRpb25zCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIGFueV90ZXN0X25vZXhjZXB0aW9u
cwotICBTT1VSQ0VTCi0gICAgJHtBTllfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAg
ICAke0FOWV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Ci0pCi0KLSMgdGVzdCBhbnlfZXhjZXB0aW9u
X3NhZmV0eV90ZXN0Ci1zZXQoQU5ZX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9TUkMgImFueV9leGNl
cHRpb25fc2FmZXR5X3Rlc3QuY2MiKQotc2V0KEFOWV9FWENFUFRJT05fU0FGRVRZX1RFU1RfUFVC
TElDX0xJQlJBUklFUwotICBhYnNsOjphbnkKLSAgYWJzbDo6YmFzZQotICBhYnNsX2Jhc2VfaW50
ZXJuYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nCi0pCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VU
Ci0gICAgYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtBTllfRVhD
RVBUSU9OX1NBRkVUWV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7QU5ZX0VY
Q0VQVElPTl9TQUZFVFlfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQotICBQUklWQVRFX0NPTVBJTEVf
RkxBR1MKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIG9wdGlvbmFsX3Rlc3QKKyAgU1JDUwor
ICAgICJvcHRpb25hbF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQog
ICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQ
VElPTlNfRkxBR19MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6Om9wdGlvbmFsCisgICAgYWJz
bDo6YmFzZQorICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAgYWJz
bDo6c3RyaW5ncworICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRlc3Qgc3Bhbl90ZXN0Ci1zZXQo
U1BBTl9URVNUX1NSQyAic3Bhbl90ZXN0LmNjIikKLXNldChTUEFOX1RFU1RfUFVCTElDX0xJQlJB
UklFUyBhYnNsOjpiYXNlIGFic2w6OnN0cmluZ3MgYWJzbDo6dGhyb3dfZGVsZWdhdGUgYWJzbDo6
c3BhbiB0ZXN0X2luc3RhbmNlX3RyYWNrZXJfbGliKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAot
ICAgIHNwYW5fdGVzdAotICBTT1VSQ0VTCi0gICAgJHtTUEFOX1RFU1RfU1JDfQotICBQVUJMSUNf
TElCUkFSSUVTCi0gICAgJHtTUEFOX1RFU1RfUFVCTElDX0xJQlJBUklFU30KLSAgUFJJVkFURV9D
T01QSUxFX0ZMQUdTCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBvcHRpb25hbF9leGNlcHRp
b25fc2FmZXR5X3Rlc3QKKyAgU1JDUworICAgICJvcHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rl
c3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CiAgICAgJHtBQlNMX0VYQ0VQ
VElPTlNfRkxBR30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktP
UFRTfQorICBERVBTCisgICAgYWJzbDo6b3B0aW9uYWwKKyAgICBhYnNsOjpleGNlcHRpb25fc2Fm
ZXR5X3Rlc3RpbmcKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IHNwYW5fdGVzdF9ub2V4
Y2VwdGlvbnMKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgc3Bhbl90ZXN0X25vZXhjZXB0aW9u
cwotICBTT1VSQ0VTCi0gICAgJHtTUEFOX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0g
ICAgJHtTUEFOX1RFU1RfUFVCTElDX0xJQlJBUklFU30KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFN
RQorICAgIHZhcmlhbnQKKyAgSERSUworICAgICJ2YXJpYW50LmgiCisgIFNSQ1MKKyAgICAiaW50
ZXJuYWwvdmFyaWFudC5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6YmFkX3ZhcmlhbnRfYWNjZXNzCisgICAgYWJzbDo6YmFzZV9pbnRlcm5h
bAorICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnR5
cGVfdHJhaXRzCisgICAgYWJzbDo6dXRpbGl0eQorICBQVUJMSUMKICkKIAotCi0KLSMgdGVzdCBv
cHRpb25hbF90ZXN0Ci1zZXQoT1BUSU9OQUxfVEVTVF9TUkMgIm9wdGlvbmFsX3Rlc3QuY2MiKQot
c2V0KE9QVElPTkFMX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2w6OnRocm93
X2RlbGVnYXRlIGFic2w6Om9wdGlvbmFsIGFic2xfYmFkX29wdGlvbmFsX2FjY2VzcykKLQotYWJz
bF90ZXN0KAotICBUQVJHRVQKLSAgICBvcHRpb25hbF90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke09Q
VElPTkFMX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtPUFRJT05BTF9URVNU
X1BVQkxJQ19MSUJSQVJJRVN9CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICB2YXJpYW50X3Rl
c3QKKyAgU1JDUworICAgICJ2YXJpYW50X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RF
U1RfQ09QVFN9CisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KKyAgTElOS09QVFMKKyAgICAk
e0FCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6dmFyaWFu
dAorICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6Om1l
bW9yeQorICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAgYWJzbDo6c3RyaW5ncworICAgIGdtb2Nr
X21haW4KICkKIAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgY29tcGFyZQorICBIRFJT
CisgICAgImNvbXBhcmUuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAg
REVQUworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnR5cGVfdHJhaXRzCisgIFBV
QkxJQworKQogCi0jIHRlc3Qgb3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0Ci1zZXQoT1BU
SU9OQUxfRVhDRVBUSU9OX1NBRkVUWV9URVNUX1NSQyAib3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0LmNjIikKLXNldChPUFRJT05BTF9FWENFUFRJT05fU0FGRVRZX1RFU1RfUFVCTElDX0xJ
QlJBUklFUwotICBhYnNsOjpvcHRpb25hbAotICBhYnNsX2Jhc2VfaW50ZXJuYWxfZXhjZXB0aW9u
X3NhZmV0eV90ZXN0aW5nCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBjb21wYXJlX3Rlc3QK
KyAgU1JDUworICAgICJjb21wYXJlX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29tcGFyZQorICAgIGdt
b2NrX21haW4KICkKIAotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBvcHRpb25hbF9leGNlcHRp
b25fc2FmZXR5X3Rlc3QKLSAgU09VUkNFUwotICAgICR7T1BUSU9OQUxfRVhDRVBUSU9OX1NBRkVU
WV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7T1BUSU9OQUxfRVhDRVBUSU9O
X1NBRkVUWV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIFBSSVZBVEVfQ09NUElMRV9GTEFHUwor
IyBUT0RPKGNvaGVuam9uLHpoYW5neHkpIEZpZ3VyZSBvdXQgd2h5IHRoaXMgdGVzdCBpcyBmYWls
aW5nIG9uIGdjYyA0LjgKK2lmKENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiR05VIiBB
TkQgQ01BS0VfQ1hYX0NPTVBJTEVSX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDQuOSkKK2Vsc2UoKQor
YWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgdmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QK
KyAgU1JDUworICAgICJ2YXJpYW50X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIKKyAgQ09QVFMK
KyAgICAke0FCU0xfVEVTVF9DT1BUU30KICAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBM
SU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAg
ICBhYnNsOjp2YXJpYW50CisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6ZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0aW5nCisgICAgYWJzbDo6bWVtb3J5CisgICAgZ21vY2tfbWFpbgogKQorZW5kaWYo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnkuaAppbmRl
eCBhOTczYzZkYWI3ZTYxMWZlZWY0MzA0NzE1MzhkMjg1M2E5OWVmMjIzLi5mM2EzMjgxMjY2MmZm
MzhkZThhOWU0NjNlNTZjNWQzZWNiNmY0OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnku
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy9hbnkuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtNTgsNyArNTgsNyBAQAogCiAjaWZkZWYgQUJTTF9IQVZFX1NURF9BTlkK
IAotI2luY2x1ZGUgPGFueT4KKyNpbmNsdWRlIDxhbnk+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0
CiAKIG5hbWVzcGFjZSBhYnNsIHsKIHVzaW5nIHN0ZDo6YW55OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2FueV9leGNl
cHRpb25fc2FmZXR5X3Rlc3QuY2MKaW5kZXggZjlkZDhjNDgyYzI1NTQzYjkxNDJlNDJiYTE3NWE4
YzAxNDljMzU2Ni4uNWQ3ZDhhNWNmZDIxM2E1ZmVlNTlhM2JjMDQ1YWE3YjgxYTRmZmZiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlcy9hbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMzUsNiArMTM1LDcgQEAgVEVTVChBbnlFeGNl
cHRpb25TYWZldHksIEFzc2lnbm1lbnQpIHsKICAgRVhQRUNUX1RSVUUoc3Ryb25nX2VtcHR5X2Fu
eV90ZXN0ZXIuVGVzdChhc3NpZ25fdmFsKSk7CiAgIEVYUEVDVF9UUlVFKHN0cm9uZ19lbXB0eV9h
bnlfdGVzdGVyLlRlc3QobW92ZSkpOwogfQorCiAvLyBsaWJzdGRjKysgc3RkOjphbnkgZmFpbHMg
dGhpcyB0ZXN0CiAjaWYgIWRlZmluZWQoQUJTTF9IQVZFX1NURF9BTlkpCiBURVNUKEFueUV4Y2Vw
dGlvblNhZmV0eSwgRW1wbGFjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9hbnlfdGVzdC5jYwppbmRleCAxMTVlNzhkZjdhZjFiMWY2ODk0MjA1
MDJmNTUzOTYxNmUxNTE3YjA1Li44NzEwNDcyMTkwZTg5MDEzNWQ2Y2YwMWU4OTY4YWNmNzliMGNh
OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
cy9hbnlfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtMTU0LDYgKzE1NCwxNCBAQCBURVNUKEFueVRlc3QsIEluUGxhY2VDb25zdHJ1Y3Rpb24pIHsK
ICAgRVhQRUNUX0VRKDUsIHYudmFsdWUpOwogfQogCitURVNUKEFueVRlc3QsIEluUGxhY2VDb25z
dHJ1Y3Rpb25WYXJpYWJsZVRlbXBsYXRlKSB7CisgIGNvbnN0IENvcHlPbmx5IGNvcHlfb25seXt9
OworICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlPEludE1vdmVPbmx5Q29weU9ubHk+
LCA1LCBNb3ZlT25seSgpLAorICAgICAgICAgICAgICBjb3B5X29ubHkpOworICBhdXRvJiB2ID0g
YWJzbDo6YW55X2Nhc3Q8SW50TW92ZU9ubHlDb3B5T25seSY+KG8pOworICBFWFBFQ1RfRVEoNSwg
di52YWx1ZSk7Cit9CisKIFRFU1QoQW55VGVzdCwgSW5QbGFjZUNvbnN0cnVjdGlvbldpdGhDVikg
ewogICBjb25zdCBDb3B5T25seSBjb3B5X29ubHl7fTsKICAgYWJzbDo6YW55IG8oYWJzbDo6aW5f
cGxhY2VfdHlwZV90PGNvbnN0IHZvbGF0aWxlIEludE1vdmVPbmx5Q29weU9ubHk+KCksIDUsCkBA
IC0xNjIsMTIgKzE3MCwyNiBAQCBURVNUKEFueVRlc3QsIEluUGxhY2VDb25zdHJ1Y3Rpb25XaXRo
Q1YpIHsKICAgRVhQRUNUX0VRKDUsIHYudmFsdWUpOwogfQogCitURVNUKEFueVRlc3QsIEluUGxh
Y2VDb25zdHJ1Y3Rpb25XaXRoQ1ZWYXJpYWJsZVRlbXBsYXRlKSB7CisgIGNvbnN0IENvcHlPbmx5
IGNvcHlfb25seXt9OworICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlPGNvbnN0IHZv
bGF0aWxlIEludE1vdmVPbmx5Q29weU9ubHk+LCA1LAorICAgICAgICAgICAgICBNb3ZlT25seSgp
LCBjb3B5X29ubHkpOworICBhdXRvJiB2ID0gYWJzbDo6YW55X2Nhc3Q8SW50TW92ZU9ubHlDb3B5
T25seSY+KG8pOworICBFWFBFQ1RfRVEoNSwgdi52YWx1ZSk7Cit9CisKIFRFU1QoQW55VGVzdCwg
SW5QbGFjZUNvbnN0cnVjdGlvbldpdGhGdW5jdGlvbikgewogICBhYnNsOjphbnkgbyhhYnNsOjpp
bl9wbGFjZV90eXBlX3Q8RnVuY3Rpb25UeXBlPigpLCBGdW5jdGlvblRvRW1wbGFjZSk7CiAgIEZ1
bmN0aW9uVHlwZSomIGNvbnN0cnVjdGlvbl9yZXN1bHQgPSBhYnNsOjphbnlfY2FzdDxGdW5jdGlv
blR5cGUqJj4obyk7CiAgIEVYUEVDVF9FUSgmRnVuY3Rpb25Ub0VtcGxhY2UsIGNvbnN0cnVjdGlv
bl9yZXN1bHQpOwogfQogCitURVNUKEFueVRlc3QsIEluUGxhY2VDb25zdHJ1Y3Rpb25XaXRoRnVu
Y3Rpb25WYXJpYWJsZVRlbXBsYXRlKSB7CisgIGFic2w6OmFueSBvKGFic2w6OmluX3BsYWNlX3R5
cGU8RnVuY3Rpb25UeXBlPiwgRnVuY3Rpb25Ub0VtcGxhY2UpOworICBhdXRvJiBjb25zdHJ1Y3Rp
b25fcmVzdWx0ID0gYWJzbDo6YW55X2Nhc3Q8RnVuY3Rpb25UeXBlKiY+KG8pOworICBFWFBFQ1Rf
RVEoJkZ1bmN0aW9uVG9FbXBsYWNlLCBjb25zdHJ1Y3Rpb25fcmVzdWx0KTsKK30KKwogVEVTVChB
bnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uV2l0aEFycmF5KSB7CiAgIEFycmF5VHlwZSBhciA9
IHs1LCA0Mn07CiAgIGFic2w6OmFueSBvKGFic2w6OmluX3BsYWNlX3R5cGVfdDxBcnJheVR5cGU+
KCksIGFyKTsKQEAgLTE3NSw2ICsxOTcsMTMgQEAgVEVTVChBbnlUZXN0LCBJblBsYWNlQ29uc3Ry
dWN0aW9uV2l0aEFycmF5KSB7CiAgIEVYUEVDVF9FUSgmYXJbMF0sIGNvbnN0cnVjdGlvbl9yZXN1
bHQpOwogfQogCitURVNUKEFueVRlc3QsIEluUGxhY2VDb25zdHJ1Y3Rpb25XaXRoQXJyYXlWYXJp
YWJsZVRlbXBsYXRlKSB7CisgIEFycmF5VHlwZSBhciA9IHs1LCA0Mn07CisgIGFic2w6OmFueSBv
KGFic2w6OmluX3BsYWNlX3R5cGU8QXJyYXlUeXBlPiwgYXIpOworICBhdXRvJiBjb25zdHJ1Y3Rp
b25fcmVzdWx0ID0gYWJzbDo6YW55X2Nhc3Q8RGVjYXllZEFycmF5Jj4obyk7CisgIEVYUEVDVF9F
USgmYXJbMF0sIGNvbnN0cnVjdGlvbl9yZXN1bHQpOworfQorCiBURVNUKEFueVRlc3QsIEluUGxh
Y2VDb25zdHJ1Y3Rpb25JbGlzdCkgewogICBjb25zdCBDb3B5T25seSBjb3B5X29ubHl7fTsKICAg
YWJzbDo6YW55IG8oYWJzbDo6aW5fcGxhY2VfdHlwZV90PExpc3RNb3ZlT25seUNvcHlPbmx5Pigp
LCB7MSwgMiwgMywgNH0sCkBAIC0xODQsNiArMjEzLDE1IEBAIFRFU1QoQW55VGVzdCwgSW5QbGFj
ZUNvbnN0cnVjdGlvbklsaXN0KSB7CiAgIEVYUEVDVF9FUShleHBlY3RlZF92YWx1ZXMsIHYudmFs
dWVzKTsKIH0KIAorVEVTVChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uSWxpc3RWYXJpYWJs
ZVRlbXBsYXRlKSB7CisgIGNvbnN0IENvcHlPbmx5IGNvcHlfb25seXt9OworICBhYnNsOjphbnkg
byhhYnNsOjppbl9wbGFjZV90eXBlPExpc3RNb3ZlT25seUNvcHlPbmx5PiwgezEsIDIsIDMsIDR9
LAorICAgICAgICAgICAgICBNb3ZlT25seSgpLCBjb3B5X29ubHkpOworICBhdXRvJiB2ID0gYWJz
bDo6YW55X2Nhc3Q8TGlzdE1vdmVPbmx5Q29weU9ubHkmPihvKTsKKyAgc3RkOjp2ZWN0b3I8aW50
PiBleHBlY3RlZF92YWx1ZXMgPSB7MSwgMiwgMywgNH07CisgIEVYUEVDVF9FUShleHBlY3RlZF92
YWx1ZXMsIHYudmFsdWVzKTsKK30KKwogVEVTVChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9u
SWxpc3RXaXRoQ1YpIHsKICAgY29uc3QgQ29weU9ubHkgY29weV9vbmx5e307CiAgIGFic2w6OmFu
eSBvKGFic2w6OmluX3BsYWNlX3R5cGVfdDxjb25zdCB2b2xhdGlsZSBMaXN0TW92ZU9ubHlDb3B5
T25seT4oKSwKQEAgLTE5MywxMSArMjMxLDI1IEBAIFRFU1QoQW55VGVzdCwgSW5QbGFjZUNvbnN0
cnVjdGlvbklsaXN0V2l0aENWKSB7CiAgIEVYUEVDVF9FUShleHBlY3RlZF92YWx1ZXMsIHYudmFs
dWVzKTsKIH0KIAorVEVTVChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uSWxpc3RXaXRoQ1ZW
YXJpYWJsZVRlbXBsYXRlKSB7CisgIGNvbnN0IENvcHlPbmx5IGNvcHlfb25seXt9OworICBhYnNs
OjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlPGNvbnN0IHZvbGF0aWxlIExpc3RNb3ZlT25seUNv
cHlPbmx5PiwKKyAgICAgICAgICAgICAgezEsIDIsIDMsIDR9LCBNb3ZlT25seSgpLCBjb3B5X29u
bHkpOworICBhdXRvJiB2ID0gYWJzbDo6YW55X2Nhc3Q8TGlzdE1vdmVPbmx5Q29weU9ubHkmPihv
KTsKKyAgc3RkOjp2ZWN0b3I8aW50PiBleHBlY3RlZF92YWx1ZXMgPSB7MSwgMiwgMywgNH07Cisg
IEVYUEVDVF9FUShleHBlY3RlZF92YWx1ZXMsIHYudmFsdWVzKTsKK30KKwogVEVTVChBbnlUZXN0
LCBJblBsYWNlTm9BcmdzKSB7CiAgIGFic2w6OmFueSBvKGFic2w6OmluX3BsYWNlX3R5cGVfdDxp
bnQ+e30pOwogICBFWFBFQ1RfRVEoMCwgYWJzbDo6YW55X2Nhc3Q8aW50Jj4obykpOwogfQogCitU
RVNUKEFueVRlc3QsIEluUGxhY2VOb0FyZ3NWYXJpYWJsZVRlbXBsYXRlKSB7CisgIGFic2w6OmFu
eSBvKGFic2w6OmluX3BsYWNlX3R5cGU8aW50Pik7CisgIEVYUEVDVF9FUSgwLCBhYnNsOjphbnlf
Y2FzdDxpbnQmPihvKSk7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbmFibGVyLCB0eXBlbmFt
ZSBULCB0eXBlbmFtZS4uLiBBcmdzPgogc3RydWN0IENhbkVtcGxhY2VBbnlJbXBsIDogc3RkOjpm
YWxzZV90eXBlIHt9OwogCkBAIC01MDEsNyArNTUzLDcgQEAgVEVTVChBbnlUZXN0LCBDb3B5KSB7
CiAgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyX3JhaWk7CiAKICAgewotICAgIGFic2w6OmFueSBv
KGFic2w6OmluX3BsYWNlX3R5cGVfdDxDb3B5YWJsZU9ubHlJbnN0YW5jZT57fSwgMTIzKTsKKyAg
ICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlPENvcHlhYmxlT25seUluc3RhbmNlPiwg
MTIzKTsKICAgICBDb3B5YWJsZU9ubHlJbnN0YW5jZSogZjEgPSBhYnNsOjphbnlfY2FzdDxDb3B5
YWJsZU9ubHlJbnN0YW5jZT4oJm8pOwogCiAgICAgYWJzbDo6YW55IG8yKG8pOwpAQCAtNjIyLDcg
KzY3NCw3IEBAIFRFU1QoQW55VGVzdCwgVGhyb3dCYWRBbGxvYykgewogICB9CiAKICAgewotICAg
IGFic2w6OmFueSBhKGFic2w6OmluX3BsYWNlX3R5cGVfdDxpbnQ+e30pOworICAgIGFic2w6OmFu
eSBhKGFic2w6OmluX3BsYWNlX3R5cGU8aW50Pik7CiAgICAgQUJTTF9BTllfVEVTVF9FWFBFQ1Rf
QkFEX0FOWV9DQVNUKGFic2w6OmFueV9jYXN0PGZsb2F0Jj4oYSkpOwogICAgIEFCU0xfQU5ZX1RF
U1RfRVhQRUNUX0JBRF9BTllfQ0FTVChhYnNsOjphbnlfY2FzdDxjb25zdCBmbG9hdCY+KGEpKTsK
ICAgICBBQlNMX0FOWV9URVNUX0VYUEVDVF9CQURfQU5ZX0NBU1QoYWJzbDo6YW55X2Nhc3Q8Zmxv
YXQmJj4oYWJzbDo6YW55e30pKTsKQEAgLTY2NSw3ICs3MTcsNyBAQCBURVNUKEFueVRlc3QsIEZh
aWxlZENvcHkpIHsKICAgfQogCiAgIHsKLSAgICBhYnNsOjphbnkgc3JjKGFic2w6OmluX3BsYWNl
X3R5cGVfdDxCYWRDb3B5YWJsZT57fSk7CisgICAgYWJzbDo6YW55IHNyYyhhYnNsOjppbl9wbGFj
ZV90eXBlPEJhZENvcHlhYmxlPik7CiAgICAgQUJTTF9BTllfVEVTVF9FWFBFQ1RfQkFEX0NPUFko
YWJzbDo6YW55e3NyY30pOwogICB9CiAKQEAgLTY3NywyMSArNzI5LDIxIEBAIFRFU1QoQW55VGVz
dCwgRmFpbGVkQ29weSkgewogCiAgIHsKICAgICBCYWRDb3B5YWJsZSBiYWQ7Ci0gICAgYWJzbDo6
YW55IHRhcmdldChhYnNsOjppbl9wbGFjZV90eXBlX3Q8QmFkQ29weWFibGU+e30pOworICAgIGFi
c2w6OmFueSB0YXJnZXQoYWJzbDo6aW5fcGxhY2VfdHlwZTxCYWRDb3B5YWJsZT4pOwogICAgIEFC
U0xfQU5ZX1RFU1RfRVhQRUNUX0JBRF9DT1BZKHRhcmdldCA9IGJhZCk7CiAgICAgRVhQRUNUX1RS
VUUodGFyZ2V0Lmhhc192YWx1ZSgpKTsKICAgfQogCiAgIHsKLSAgICBhYnNsOjphbnkgc3JjKGFi
c2w6OmluX3BsYWNlX3R5cGVfdDxCYWRDb3B5YWJsZT57fSk7CisgICAgYWJzbDo6YW55IHNyYyhh
YnNsOjppbl9wbGFjZV90eXBlPEJhZENvcHlhYmxlPik7CiAgICAgYWJzbDo6YW55IHRhcmdldDsK
ICAgICBBQlNMX0FOWV9URVNUX0VYUEVDVF9CQURfQ09QWSh0YXJnZXQgPSBzcmMpOwogICAgIEVY
UEVDVF9GQUxTRSh0YXJnZXQuaGFzX3ZhbHVlKCkpOwogICB9CiAKICAgewotICAgIGFic2w6OmFu
eSBzcmMoYWJzbDo6aW5fcGxhY2VfdHlwZV90PEJhZENvcHlhYmxlPnt9KTsKLSAgICBhYnNsOjph
bnkgdGFyZ2V0KGFic2w6OmluX3BsYWNlX3R5cGVfdDxCYWRDb3B5YWJsZT57fSk7CisgICAgYWJz
bDo6YW55IHNyYyhhYnNsOjppbl9wbGFjZV90eXBlPEJhZENvcHlhYmxlPik7CisgICAgYWJzbDo6
YW55IHRhcmdldChhYnNsOjppbl9wbGFjZV90eXBlPEJhZENvcHlhYmxlPik7CiAgICAgQUJTTF9B
TllfVEVTVF9FWFBFQ1RfQkFEX0NPUFkodGFyZ2V0ID0gc3JjKTsKICAgICBFWFBFQ1RfVFJVRSh0
YXJnZXQuaGFzX3ZhbHVlKCkpOwogICB9CkBAIC03MDcsNyArNzU5LDcgQEAgVEVTVChBbnlUZXN0
LCBGYWlsZWRFbXBsYWNlKSB7CiAKICAgewogICAgIEJhZENvcHlhYmxlIGJhZDsKLSAgICBhYnNs
OjphbnkgdGFyZ2V0KGFic2w6OmluX3BsYWNlX3R5cGVfdDxpbnQ+e30pOworICAgIGFic2w6OmFu
eSB0YXJnZXQoYWJzbDo6aW5fcGxhY2VfdHlwZTxpbnQ+KTsKICAgICBBQlNMX0FOWV9URVNUX0VY
UEVDVF9CQURfQ09QWSh0YXJnZXQuZW1wbGFjZTxCYWRDb3B5YWJsZT4oYmFkKSk7CiAjaWYgZGVm
aW5lZChBQlNMX0hBVkVfU1REX0FOWSkgJiYgZGVmaW5lZChfX0dMSUJDWFhfXykKICAgICAvLyBs
aWJzdGRjKysgc3RkOjphbnk6OmVtcGxhY2UoKSBpbXBsZW1lbnRhdGlvbiAoYXMgb2YgNy4yKSBo
YXMgYSBidWc6IGlmIGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfYW55X2Nhc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90eXBlcy9iYWRfYW55X2Nhc3QuY2MKaW5kZXggMmUyZmQyOWEzMzc4MDcwNjY1NTZh
MmZmYzQwYjNlMDhkZmE2N2JlYi4uNTA1OTE5YTU1ODMxYzI1OTgxNDA5MzM2MjdkYTU4MTc2ODA5
ZTY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX2FueV9jYXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzL2JhZF9hbnlfY2FzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX2FueV9jYXN0LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
eXBlcy9iYWRfYW55X2Nhc3QuaAppbmRleCA2MDM5MDEzMjRhZmMzMGYyYmM1OTJlYWM1ZWMxNmYy
NGIxOTU3YWQ0Li44ZDAyMGVkZTQ2NmIyODE3ZDc3N2I1ZGNiNWM5ZDE2YTE0YWJmZDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfYW55X2Nhc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRf
YW55X2Nhc3QuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
L2JhZF9vcHRpb25hbF9hY2Nlc3MuY2MKaW5kZXggNTU4NzA3NzYwZTlkZTQ1M2Y3Y2NlZGM5OThh
MGNhOGY1YmJlNjQ0Ni4uYTc5MWM3YzIxZGE4NzU5ZWY2NTc3NmE0OTc0N2EyZDc4NWZhM2I4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy9iYWRfb3B0aW9uYWxfYWNjZXNzLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfb3B0aW9uYWxfYWNj
ZXNzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfb3B0aW9uYWxfYWNjZXNzLmgKaW5kZXggYzZjMjc0NjBh
NzZkMzA5YTA3MzliYmY0NDVmMmQzNGJlNDJlMWRhMC4uYWRkNWM0NTJjZDUwMDI5OTg4Yjk5YzQ4
NzM5MTYyYzA0ZGM3YWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX29wdGlvbmFsX2Fj
Y2Vzcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF9vcHRpb25hbF9hY2Nlc3MuaApAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
YmFkX3ZhcmlhbnRfYWNjZXNzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX3ZhcmlhbnRfYWNjZXNzLmNj
CmluZGV4IGQyN2Q3NzU2MTc5MTdmYmMwNjgzYjhlZmM0MGRhYWMxZWUwZGM1NTMuLmE0MzI1Yzhk
ZjdkYjgxMGI2MDYxMjdlMjdiM2FiNDFjM2UzM2M2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
L2JhZF92YXJpYW50X2FjY2Vzcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfdmFyaWFudF9hY2Nl
c3MuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX3Zh
cmlhbnRfYWNjZXNzLmgKaW5kZXggZTczNTVhNWE3NGM4YjYyNGU5MTY1MmI0MjM4OTZhZjQ4NDM2
NWQ0ZS4uNjM3ZGI0MzU1MDUzMTE2OGU3OGQ4NTAxNTc2ZGVhNTdhMDA0M2JmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXMvYmFkX3ZhcmlhbnRfYWNjZXNzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFk
X3ZhcmlhbnRfYWNjZXNzLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2NvbXBhcmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2NvbXBh
cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MDM2MWQ2MjMwMjUwODhlNTJlMjY5NDlmMjFkNzRhNDE1YTRiNzM2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvY29tcGFyZS5oCkBAIC0wLDAgKzEsNTA4
IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gY29tcGFyZS5oCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyB0aGUgYGFic2w6OndlYWtfZXF1YWxpdHlg
LCBgYWJzbDo6c3Ryb25nX2VxdWFsaXR5YCwKKy8vIGBhYnNsOjpwYXJ0aWFsX29yZGVyaW5nYCwg
YGFic2w6OndlYWtfb3JkZXJpbmdgLCBhbmQgYGFic2w6OnN0cm9uZ19vcmRlcmluZ2AKKy8vIHR5
cGVzIGZvciBzdG9yaW5nIHRoZSByZXN1bHRzIG9mIHRocmVlIHdheSBjb21wYXJpc29ucy4KKy8v
CisvLyBFeGFtcGxlOgorLy8gICBhYnNsOjp3ZWFrX29yZGVyaW5nIGNvbXBhcmUoY29uc3Qgc3Rk
OjpzdHJpbmcmIGEsIGNvbnN0IHN0ZDo6c3RyaW5nJiBiKTsKKy8vCisvLyBUaGVzZSBhcmUgQysr
MTEgY29tcGF0aWJsZSB2ZXJzaW9ucyBvZiB0aGUgQysrMjAgY29ycmVzcG9uZGluZyB0eXBlcwor
Ly8gKGBzdGQ6OndlYWtfZXF1YWxpdHlgLCBldGMuKSBhbmQgYXJlIGRlc2lnbmVkIHRvIGJlIGRy
b3AtaW4gcmVwbGFjZW1lbnRzCisvLyBmb3IgY29kZSBjb21wbGlhbnQgd2l0aCBDKysyMC4KKwor
I2lmbmRlZiBBQlNMX1RZUEVTX0NPTVBBUkVfSF8KKyNkZWZpbmUgQUJTTF9UWVBFU19DT01QQVJF
X0hfCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8
Y3N0ZGxpYj4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9h
dHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisKK25hbWVz
cGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb21wYXJlX2ludGVybmFsIHsKKwordXNpbmcgdmFsdWVf
dHlwZSA9IGludDhfdDsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgRmFpbCB7Cisg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDwgMCwgIk9ubHkgbGl0ZXJhbCBgMGAgaXMgYWxsb3dl
ZC4iKTsKK307CisKKy8vIFdlIG5lZWQgdGhlIE51bGxQdHJUIHRlbXBsYXRlIHRvIGF2b2lkIHRy
aWdnZXJpbmcgdGhlIG1vZGVybml6ZS11c2UtbnVsbHB0cgorLy8gQ2xhbmdUaWR5IHdhcm5pbmcg
aW4gdXNlciBjb2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIE51bGxQdHJUID0gc3RkOjpudWxscHRy
X3Q+CitzdHJ1Y3QgT25seUxpdGVyYWxaZXJvIHsKKyAgY29uc3RleHByIE9ubHlMaXRlcmFsWmVy
byhOdWxsUHRyVCkgbm9leGNlcHQge30gIC8vIE5PTElOVAorCisgIC8vIEZhaWxzIGNvbXBpbGF0
aW9uIHdoZW4gYG51bGxwdHJgIG9yIGludGVncmFsIHR5cGUgYXJndW1lbnRzIG90aGVyIHRoYW4K
KyAgLy8gYGludGAgYXJlIHBhc3NlZC4gVGhpcyBjb25zdHJ1Y3RvciBkb2Vzbid0IGFjY2VwdCBg
aW50YCBiZWNhdXNlIGxpdGVyYWwgYDBgCisgIC8vIGhhcyB0eXBlIGBpbnRgLiBMaXRlcmFsIGAw
YCBhcmd1bWVudHMgd2lsbCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0bworICAvLyBgc3RkOjpu
dWxscHRyX3RgIGFuZCBhY2NlcHRlZCBieSB0aGUgYWJvdmUgY29uc3RydWN0b3IsIHdoaWxlIG90
aGVyIGBpbnRgCisgIC8vIGFyZ3VtZW50cyB3aWxsIGZhaWwgdG8gYmUgY29udmVydGVkIGFuZCBj
YXVzZSBjb21waWxhdGlvbiBmYWlsdXJlLgorICB0ZW1wbGF0ZSA8CisgICAgICB0eXBlbmFtZSBU
LAorICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICBz
dGQ6OmlzX3NhbWU8VCwgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSB8fAorICAgICAgICAgIChzdGQ6
OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPFQsIGludD46OnZhbHVlKT46
OnR5cGUsCisgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIEZhaWw8VD46OnR5cGU+CisgIE9ubHlM
aXRlcmFsWmVybyhUKTsgIC8vIE5PTElOVAorfTsKKworZW51bSBjbGFzcyBlcSA6IHZhbHVlX3R5
cGUgeworICBlcXVhbCA9IDAsCisgIGVxdWl2YWxlbnQgPSBlcXVhbCwKKyAgbm9uZXF1YWwgPSAx
LAorICBub25lcXVpdmFsZW50ID0gbm9uZXF1YWwsCit9OworCitlbnVtIGNsYXNzIG9yZCA6IHZh
bHVlX3R5cGUgeyBsZXNzID0gLTEsIGdyZWF0ZXIgPSAxIH07CisKK2VudW0gY2xhc3MgbmNtcCA6
IHZhbHVlX3R5cGUgeyB1bm9yZGVyZWQgPSAtMTI3IH07CisKKy8vIFRoZXNlIHRlbXBsYXRlIGJh
c2UgY2xhc3NlcyBhbGxvdyBmb3IgZGVmaW5pbmcgdGhlIHZhbHVlcyBvZiB0aGUgY29uc3RhbnRz
CisvLyBpbiB0aGUgaGVhZGVyIGZpbGUgKGZvciBwZXJmb3JtYW5jZSkgd2l0aG91dCB1c2luZyBp
bmxpbmUgdmFyaWFibGVzICh3aGljaAorLy8gYXJlbid0IGF2YWlsYWJsZSBpbiBDKysxMSkuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCB3ZWFrX2VxdWFsaXR5X2Jhc2UgeworICBBQlNM
X0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0IFQgZXF1aXZhbGVudDsKKyAgQUJTTF9DT05TVF9JTklU
IHN0YXRpYyBjb25zdCBUIG5vbmVxdWl2YWxlbnQ7Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Citjb25zdCBUIHdlYWtfZXF1YWxpdHlfYmFzZTxUPjo6ZXF1aXZhbGVudChlcTo6ZXF1aXZhbGVu
dCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQgd2Vha19lcXVhbGl0eV9iYXNlPFQ+
Ojpub25lcXVpdmFsZW50KGVxOjpub25lcXVpdmFsZW50KTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitzdHJ1Y3Qgc3Ryb25nX2VxdWFsaXR5X2Jhc2UgeworICBBQlNMX0NPTlNUX0lOSVQgc3Rh
dGljIGNvbnN0IFQgZXF1YWw7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBub25l
cXVhbDsKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIGVxdWl2YWxlbnQ7CisgIEFC
U0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBub25lcXVpdmFsZW50OworfTsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorY29uc3QgVCBzdHJvbmdfZXF1YWxpdHlfYmFzZTxUPjo6ZXF1YWwoZXE6
OmVxdWFsKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCBzdHJvbmdfZXF1YWxpdHlf
YmFzZTxUPjo6bm9uZXF1YWwoZXE6Om5vbmVxdWFsKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Y29uc3QgVCBzdHJvbmdfZXF1YWxpdHlfYmFzZTxUPjo6ZXF1aXZhbGVudChlcTo6ZXF1aXZhbGVu
dCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQgc3Ryb25nX2VxdWFsaXR5X2Jhc2U8
VD46Om5vbmVxdWl2YWxlbnQoZXE6Om5vbmVxdWl2YWxlbnQpOworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0cnVjdCBwYXJ0aWFsX29yZGVyaW5nX2Jhc2UgeworICBBQlNMX0NPTlNUX0lOSVQg
c3RhdGljIGNvbnN0IFQgbGVzczsKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIGVx
dWl2YWxlbnQ7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBncmVhdGVyOworICBB
QlNMX0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0IFQgdW5vcmRlcmVkOworfTsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY29uc3QgVCBwYXJ0aWFsX29yZGVyaW5nX2Jhc2U8VD46Omxlc3Mob3JkOjps
ZXNzKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCBwYXJ0aWFsX29yZGVyaW5nX2Jh
c2U8VD46OmVxdWl2YWxlbnQoZXE6OmVxdWl2YWxlbnQpOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Citjb25zdCBUIHBhcnRpYWxfb3JkZXJpbmdfYmFzZTxUPjo6Z3JlYXRlcihvcmQ6OmdyZWF0ZXIp
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUIHBhcnRpYWxfb3JkZXJpbmdfYmFzZTxU
Pjo6dW5vcmRlcmVkKG5jbXA6OnVub3JkZXJlZCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
c3RydWN0IHdlYWtfb3JkZXJpbmdfYmFzZSB7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29u
c3QgVCBsZXNzOworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0IFQgZXF1aXZhbGVudDsK
KyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIGdyZWF0ZXI7Cit9OwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Citjb25zdCBUIHdlYWtfb3JkZXJpbmdfYmFzZTxUPjo6bGVzcyhvcmQ6Omxl
c3MpOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUIHdlYWtfb3JkZXJpbmdfYmFzZTxU
Pjo6ZXF1aXZhbGVudChlcTo6ZXF1aXZhbGVudCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Nv
bnN0IFQgd2Vha19vcmRlcmluZ19iYXNlPFQ+OjpncmVhdGVyKG9yZDo6Z3JlYXRlcik7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IHN0cm9uZ19vcmRlcmluZ19iYXNlIHsKKyAgQUJT
TF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIGxlc3M7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0
aWMgY29uc3QgVCBlcXVhbDsKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIGVxdWl2
YWxlbnQ7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBncmVhdGVyOworfTsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCBzdHJvbmdfb3JkZXJpbmdfYmFzZTxUPjo6bGVz
cyhvcmQ6Omxlc3MpOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUIHN0cm9uZ19vcmRl
cmluZ19iYXNlPFQ+OjplcXVhbChlcTo6ZXF1YWwpOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
b25zdCBUIHN0cm9uZ19vcmRlcmluZ19iYXNlPFQ+OjplcXVpdmFsZW50KGVxOjplcXVpdmFsZW50
KTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCBzdHJvbmdfb3JkZXJpbmdfYmFzZTxU
Pjo6Z3JlYXRlcihvcmQ6OmdyZWF0ZXIpOworCit9ICAvLyBuYW1lc3BhY2UgY29tcGFyZV9pbnRl
cm5hbAorCitjbGFzcyB3ZWFrX2VxdWFsaXR5CisgICAgOiBwdWJsaWMgY29tcGFyZV9pbnRlcm5h
bDo6d2Vha19lcXVhbGl0eV9iYXNlPHdlYWtfZXF1YWxpdHk+IHsKKyAgZXhwbGljaXQgY29uc3Rl
eHByIHdlYWtfZXF1YWxpdHkoY29tcGFyZV9pbnRlcm5hbDo6ZXEgdikgbm9leGNlcHQKKyAgICAg
IDogdmFsdWVfKHN0YXRpY19jYXN0PGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5cGU+KHYpKSB7
fQorICBmcmllbmQgc3RydWN0IGNvbXBhcmVfaW50ZXJuYWw6OndlYWtfZXF1YWxpdHlfYmFzZTx3
ZWFrX2VxdWFsaXR5PjsKKworIHB1YmxpYzoKKyAgLy8gQ29tcGFyaXNvbnMKKyAgZnJpZW5kIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oCisgICAgICB3ZWFrX2VxdWFsaXR5IHYsIGNvbXBhcmVf
aW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFs
dWVfID09IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oCisgICAg
ICB3ZWFrX2VxdWFsaXR5IHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBu
b2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfICE9IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtfZXF1YWxpdHkgdikgbm9l
eGNlcHQgeworICAgIHJldHVybiAwID09IHYudmFsdWVfOworICB9CisgIGZyaWVuZCBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrX2VxdWFsaXR5IHYpIG5vZXhj
ZXB0IHsKKyAgICByZXR1cm4gMCAhPSB2LnZhbHVlXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29t
cGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZSB2YWx1ZV87Cit9OworCitjbGFzcyBzdHJvbmdfZXF1
YWxpdHkKKyAgICA6IHB1YmxpYyBjb21wYXJlX2ludGVybmFsOjpzdHJvbmdfZXF1YWxpdHlfYmFz
ZTxzdHJvbmdfZXF1YWxpdHk+IHsKKyAgZXhwbGljaXQgY29uc3RleHByIHN0cm9uZ19lcXVhbGl0
eShjb21wYXJlX2ludGVybmFsOjplcSB2KSBub2V4Y2VwdAorICAgICAgOiB2YWx1ZV8oc3RhdGlj
X2Nhc3Q8Y29tcGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZT4odikpIHt9CisgIGZyaWVuZCBzdHJ1
Y3QgY29tcGFyZV9pbnRlcm5hbDo6c3Ryb25nX2VxdWFsaXR5X2Jhc2U8c3Ryb25nX2VxdWFsaXR5
PjsKKworIHB1YmxpYzoKKyAgLy8gQ29udmVyc2lvbgorICBjb25zdGV4cHIgb3BlcmF0b3Igd2Vh
a19lcXVhbGl0eSgpIGNvbnN0IG5vZXhjZXB0IHsgIC8vIE5PTElOVAorICAgIHJldHVybiB2YWx1
ZV8gPT0gMCA/IHdlYWtfZXF1YWxpdHk6OmVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAg
ICAgOiB3ZWFrX2VxdWFsaXR5Ojpub25lcXVpdmFsZW50OworICB9CisgIC8vIENvbXBhcmlzb25z
CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KAorICAgICAgc3Ryb25nX2VxdWFs
aXR5IHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7Cisg
ICAgcmV0dXJuIHYudmFsdWVfID09IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yIT0oCisgICAgICBzdHJvbmdfZXF1YWxpdHkgdiwgY29tcGFyZV9pbnRlcm5hbDo6T25s
eUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52YWx1ZV8gIT0gMDsKKyAg
fQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb21wYXJlX2ludGVybmFsOjpP
bmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
b25nX2VxdWFsaXR5IHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCA9PSB2LnZhbHVlXzsKKyAg
fQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb21wYXJlX2ludGVybmFsOjpP
bmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
b25nX2VxdWFsaXR5IHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCAhPSB2LnZhbHVlXzsKKyAg
fQorCisgcHJpdmF0ZToKKyAgY29tcGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZSB2YWx1ZV87Cit9
OworCitjbGFzcyBwYXJ0aWFsX29yZGVyaW5nCisgICAgOiBwdWJsaWMgY29tcGFyZV9pbnRlcm5h
bDo6cGFydGlhbF9vcmRlcmluZ19iYXNlPHBhcnRpYWxfb3JkZXJpbmc+IHsKKyAgZXhwbGljaXQg
Y29uc3RleHByIHBhcnRpYWxfb3JkZXJpbmcoY29tcGFyZV9pbnRlcm5hbDo6ZXEgdikgbm9leGNl
cHQKKyAgICAgIDogdmFsdWVfKHN0YXRpY19jYXN0PGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5
cGU+KHYpKSB7fQorICBleHBsaWNpdCBjb25zdGV4cHIgcGFydGlhbF9vcmRlcmluZyhjb21wYXJl
X2ludGVybmFsOjpvcmQgdikgbm9leGNlcHQKKyAgICAgIDogdmFsdWVfKHN0YXRpY19jYXN0PGNv
bXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5cGU+KHYpKSB7fQorICBleHBsaWNpdCBjb25zdGV4cHIg
cGFydGlhbF9vcmRlcmluZyhjb21wYXJlX2ludGVybmFsOjpuY21wIHYpIG5vZXhjZXB0CisgICAg
ICA6IHZhbHVlXyhzdGF0aWNfY2FzdDxjb21wYXJlX2ludGVybmFsOjp2YWx1ZV90eXBlPih2KSkg
e30KKyAgZnJpZW5kIHN0cnVjdCBjb21wYXJlX2ludGVybmFsOjpwYXJ0aWFsX29yZGVyaW5nX2Jh
c2U8cGFydGlhbF9vcmRlcmluZz47CisKKyAgY29uc3RleHByIGJvb2wgaXNfb3JkZXJlZCgpIGNv
bnN0IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdmFsdWVfICE9CisgICAgICAgICAgIGNvbXBhcmVf
aW50ZXJuYWw6OnZhbHVlX3R5cGUoY29tcGFyZV9pbnRlcm5hbDo6bmNtcDo6dW5vcmRlcmVkKTsK
KyAgfQorCisgcHVibGljOgorICAvLyBDb252ZXJzaW9uCisgIGNvbnN0ZXhwciBvcGVyYXRvciB3
ZWFrX2VxdWFsaXR5KCkgY29uc3Qgbm9leGNlcHQgeyAgLy8gTk9MSU5UCisgICAgcmV0dXJuIHZh
bHVlXyA9PSAwID8gd2Vha19lcXVhbGl0eTo6ZXF1aXZhbGVudAorICAgICAgICAgICAgICAgICAg
ICAgICA6IHdlYWtfZXF1YWxpdHk6Om5vbmVxdWl2YWxlbnQ7CisgIH0KKyAgLy8gQ29tcGFyaXNv
bnMKKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oCisgICAgICBwYXJ0aWFsX29y
ZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7
CisgICAgcmV0dXJuIHYuaXNfb3JkZXJlZCgpICYmIHYudmFsdWVfID09IDA7CisgIH0KKyAgZnJp
ZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oCisgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYs
IGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0
dXJuICF2LmlzX29yZGVyZWQoKSB8fCB2LnZhbHVlXyAhPSAwOworICB9CisgIGZyaWVuZCBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcjwoCisgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYsIGNvbXBhcmVf
aW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYuaXNf
b3JkZXJlZCgpICYmIHYudmFsdWVfIDwgMDsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wg
b3BlcmF0b3I8PSgKKyAgICAgIHBhcnRpYWxfb3JkZXJpbmcgdiwgY29tcGFyZV9pbnRlcm5hbDo6
T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi5pc19vcmRlcmVkKCkg
JiYgdi52YWx1ZV8gPD0gMDsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+
KAorICAgICAgcGFydGlhbF9vcmRlcmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJh
bFplcm88Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LmlzX29yZGVyZWQoKSAmJiB2LnZhbHVl
XyA+IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oCisgICAgICBw
YXJ0aWFsX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBu
b2V4Y2VwdCB7CisgICAgcmV0dXJuIHYuaXNfb3JkZXJlZCgpICYmIHYudmFsdWVfID49IDA7Cisg
IH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29tcGFyZV9pbnRlcm5hbDo6
T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cnRpYWxfb3JkZXJpbmcgdikgbm9leGNlcHQgeworICAgIHJldHVybiB2LmlzX29yZGVyZWQoKSAm
JiAwID09IHYudmFsdWVfOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9
KGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1
cm4gIXYuaXNfb3JkZXJlZCgpIHx8IDAgIT0gdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPChjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYpIG5v
ZXhjZXB0IHsKKyAgICByZXR1cm4gdi5pc19vcmRlcmVkKCkgJiYgMCA8IHYudmFsdWVfOworICB9
CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbXBhcmVfaW50ZXJuYWw6Ok9u
bHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0
aWFsX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi5pc19vcmRlcmVkKCkgJiYg
MCA8PSB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNv
bXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnRpYWxfb3JkZXJpbmcgdikgbm9leGNlcHQgeworICAgIHJldHVybiB2
LmlzX29yZGVyZWQoKSAmJiAwID4gdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPj0oY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxfb3JkZXJpbmcgdikgbm9leGNl
cHQgeworICAgIHJldHVybiB2LmlzX29yZGVyZWQoKSAmJiAwID49IHYudmFsdWVfOworICB9CisK
KyBwcml2YXRlOgorICBjb21wYXJlX2ludGVybmFsOjp2YWx1ZV90eXBlIHZhbHVlXzsKK307CisK
K2NsYXNzIHdlYWtfb3JkZXJpbmcKKyAgICA6IHB1YmxpYyBjb21wYXJlX2ludGVybmFsOjp3ZWFr
X29yZGVyaW5nX2Jhc2U8d2Vha19vcmRlcmluZz4geworICBleHBsaWNpdCBjb25zdGV4cHIgd2Vh
a19vcmRlcmluZyhjb21wYXJlX2ludGVybmFsOjplcSB2KSBub2V4Y2VwdAorICAgICAgOiB2YWx1
ZV8oc3RhdGljX2Nhc3Q8Y29tcGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZT4odikpIHt9CisgIGV4
cGxpY2l0IGNvbnN0ZXhwciB3ZWFrX29yZGVyaW5nKGNvbXBhcmVfaW50ZXJuYWw6Om9yZCB2KSBu
b2V4Y2VwdAorICAgICAgOiB2YWx1ZV8oc3RhdGljX2Nhc3Q8Y29tcGFyZV9pbnRlcm5hbDo6dmFs
dWVfdHlwZT4odikpIHt9CisgIGZyaWVuZCBzdHJ1Y3QgY29tcGFyZV9pbnRlcm5hbDo6d2Vha19v
cmRlcmluZ19iYXNlPHdlYWtfb3JkZXJpbmc+OworCisgcHVibGljOgorICAvLyBDb252ZXJzaW9u
cworICBjb25zdGV4cHIgb3BlcmF0b3Igd2Vha19lcXVhbGl0eSgpIGNvbnN0IG5vZXhjZXB0IHsg
IC8vIE5PTElOVAorICAgIHJldHVybiB2YWx1ZV8gPT0gMCA/IHdlYWtfZXF1YWxpdHk6OmVxdWl2
YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgOiB3ZWFrX2VxdWFsaXR5Ojpub25lcXVpdmFs
ZW50OworICB9CisgIGNvbnN0ZXhwciBvcGVyYXRvciBwYXJ0aWFsX29yZGVyaW5nKCkgY29uc3Qg
bm9leGNlcHQgeyAgLy8gTk9MSU5UCisgICAgcmV0dXJuIHZhbHVlXyA9PSAwID8gcGFydGlhbF9v
cmRlcmluZzo6ZXF1aXZhbGVudAorICAgICAgICAgICAgICAgICAgICAgICA6ICh2YWx1ZV8gPCAw
ID8gcGFydGlhbF9vcmRlcmluZzo6bGVzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogcGFydGlhbF9vcmRlcmluZzo6Z3JlYXRlcik7CisgIH0KKyAgLy8gQ29tcGFyaXNv
bnMKKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oCisgICAgICB3ZWFrX29yZGVy
aW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7Cisg
ICAgcmV0dXJuIHYudmFsdWVfID09IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yIT0oCisgICAgICB3ZWFrX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlM
aXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfICE9IDA7CisgIH0K
KyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPCgKKyAgICAgIHdlYWtfb3JkZXJpbmcg
diwgY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICBy
ZXR1cm4gdi52YWx1ZV8gPCAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjw9KAorICAgICAgd2Vha19vcmRlcmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJh
bFplcm88Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LnZhbHVlXyA8PSAwOworICB9CisgIGZy
aWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oCisgICAgICB3ZWFrX29yZGVyaW5nIHYsIGNv
bXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJu
IHYudmFsdWVfID4gMDsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PSgK
KyAgICAgIHdlYWtfb3JkZXJpbmcgdiwgY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJv
PD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52YWx1ZV8gPj0gMDsKKyAgfQorICBmcmllbmQg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFpl
cm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19vcmRlcmluZyB2
KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAgPT0gdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJv
PD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtfb3JkZXJpbmcgdikg
bm9leGNlcHQgeworICAgIHJldHVybiAwICE9IHYudmFsdWVfOworICB9CisgIGZyaWVuZCBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcjwoY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19vcmRlcmluZyB2KSBub2V4
Y2VwdCB7CisgICAgcmV0dXJuIDAgPCB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8PShjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19vcmRlcmluZyB2KSBub2V4Y2Vw
dCB7CisgICAgcmV0dXJuIDAgPD0gdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPihjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsK
KyAgICByZXR1cm4gMCA+IHYudmFsdWVfOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj49KGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAg
ICByZXR1cm4gMCA+PSB2LnZhbHVlXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29tcGFyZV9pbnRl
cm5hbDo6dmFsdWVfdHlwZSB2YWx1ZV87Cit9OworCitjbGFzcyBzdHJvbmdfb3JkZXJpbmcKKyAg
ICA6IHB1YmxpYyBjb21wYXJlX2ludGVybmFsOjpzdHJvbmdfb3JkZXJpbmdfYmFzZTxzdHJvbmdf
b3JkZXJpbmc+IHsKKyAgZXhwbGljaXQgY29uc3RleHByIHN0cm9uZ19vcmRlcmluZyhjb21wYXJl
X2ludGVybmFsOjplcSB2KSBub2V4Y2VwdAorICAgICAgOiB2YWx1ZV8oc3RhdGljX2Nhc3Q8Y29t
cGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZT4odikpIHt9CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBz
dHJvbmdfb3JkZXJpbmcoY29tcGFyZV9pbnRlcm5hbDo6b3JkIHYpIG5vZXhjZXB0CisgICAgICA6
IHZhbHVlXyhzdGF0aWNfY2FzdDxjb21wYXJlX2ludGVybmFsOjp2YWx1ZV90eXBlPih2KSkge30K
KyAgZnJpZW5kIHN0cnVjdCBjb21wYXJlX2ludGVybmFsOjpzdHJvbmdfb3JkZXJpbmdfYmFzZTxz
dHJvbmdfb3JkZXJpbmc+OworCisgcHVibGljOgorICAvLyBDb252ZXJzaW9ucworICBjb25zdGV4
cHIgb3BlcmF0b3Igd2Vha19lcXVhbGl0eSgpIGNvbnN0IG5vZXhjZXB0IHsgIC8vIE5PTElOVAor
ICAgIHJldHVybiB2YWx1ZV8gPT0gMCA/IHdlYWtfZXF1YWxpdHk6OmVxdWl2YWxlbnQKKyAgICAg
ICAgICAgICAgICAgICAgICAgOiB3ZWFrX2VxdWFsaXR5Ojpub25lcXVpdmFsZW50OworICB9Cisg
IGNvbnN0ZXhwciBvcGVyYXRvciBzdHJvbmdfZXF1YWxpdHkoKSBjb25zdCBub2V4Y2VwdCB7ICAv
LyBOT0xJTlQKKyAgICByZXR1cm4gdmFsdWVfID09IDAgPyBzdHJvbmdfZXF1YWxpdHk6OmVxdWFs
IDogc3Ryb25nX2VxdWFsaXR5Ojpub25lcXVhbDsKKyAgfQorICBjb25zdGV4cHIgb3BlcmF0b3Ig
cGFydGlhbF9vcmRlcmluZygpIGNvbnN0IG5vZXhjZXB0IHsgIC8vIE5PTElOVAorICAgIHJldHVy
biB2YWx1ZV8gPT0gMCA/IHBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQKKyAgICAgICAgICAg
ICAgICAgICAgICAgOiAodmFsdWVfIDwgMCA/IHBhcnRpYWxfb3JkZXJpbmc6Omxlc3MKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0
ZXIpOworICB9CisgIGNvbnN0ZXhwciBvcGVyYXRvciB3ZWFrX29yZGVyaW5nKCkgY29uc3Qgbm9l
eGNlcHQgeyAgLy8gTk9MSU5UCisgICAgcmV0dXJuIHZhbHVlXyA9PSAwCisgICAgICAgICAgICAg
ICA/IHdlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgIDogKHZhbHVlXyA8
IDAgPyB3ZWFrX29yZGVyaW5nOjpsZXNzIDogd2Vha19vcmRlcmluZzo6Z3JlYXRlcik7CisgIH0K
KyAgLy8gQ29tcGFyaXNvbnMKKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oCisg
ICAgICBzdHJvbmdfb3JkZXJpbmcgdiwgY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJv
PD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52YWx1ZV8gPT0gMDsKKyAgfQorICBmcmllbmQg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPSgKKyAgICAgIHN0cm9uZ19vcmRlcmluZyB2LCBjb21w
YXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2
LnZhbHVlXyAhPSAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoCisg
ICAgICBzdHJvbmdfb3JkZXJpbmcgdiwgY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJv
PD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52YWx1ZV8gPCAwOworICB9CisgIGZyaWVuZCBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KAorICAgICAgc3Ryb25nX29yZGVyaW5nIHYsIGNvbXBh
cmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYu
dmFsdWVfIDw9IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPigKKyAg
ICAgIHN0cm9uZ19vcmRlcmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88
Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LnZhbHVlXyA+IDA7CisgIH0KKyAgZnJpZW5kIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPj0oCisgICAgICBzdHJvbmdfb3JkZXJpbmcgdiwgY29tcGFy
ZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52
YWx1ZV8gPj0gMDsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb21w
YXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3Ryb25nX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCA9
PSB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb21w
YXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3Ryb25nX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCAh
PSB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbXBh
cmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cm9uZ19vcmRlcmluZyB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAgPCB2
LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb21wYXJl
X2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3Ryb25nX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCA8PSB2
LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbXBhcmVf
aW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cm9uZ19vcmRlcmluZyB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAgPiB2LnZh
bHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb21wYXJlX2lu
dGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Ryb25nX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCA+PSB2LnZh
bHVlXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29tcGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlwZSB2
YWx1ZV87Cit9OworCituYW1lc3BhY2UgY29tcGFyZV9pbnRlcm5hbCB7CisvLyBXZSBhbHNvIHBy
b3ZpZGUgdGhlc2UgY29tcGFyYXRvciBhZGFwdGVyIGZ1bmN0aW9ucyBmb3IgaW50ZXJuYWwgYWJz
bCB1c2UuCisKKy8vIEhlbHBlciBmdW5jdGlvbnMgdG8gZG8gYSBib29sZWFuIGNvbXBhcmlzb24g
b2YgdHdvIGtleXMgZ2l2ZW4gYSBib29sZWFuCisvLyBvciB0aHJlZS13YXkgY29tcGFyYXRvci4K
Ky8vIFNGSU5BRSBwcmV2ZW50cyBpbXBsaWNpdCBjb252ZXJzaW9ucyB0byBib29sIChzdWNoIGFz
IGZyb20gaW50KS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBCb29sLAorICAgICAgICAgIGFic2w6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxib29sLCBCb29sPjo6dmFsdWUsIGludD4gPSAwPgorY29u
c3RleHByIGJvb2wgY29tcGFyZV9yZXN1bHRfYXNfbGVzc190aGFuKGNvbnN0IEJvb2wgcikgeyBy
ZXR1cm4gcjsgfQorY29uc3RleHByIGJvb2wgY29tcGFyZV9yZXN1bHRfYXNfbGVzc190aGFuKGNv
bnN0IGFic2w6OndlYWtfb3JkZXJpbmcgcikgeworICByZXR1cm4gciA8IDA7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBDb21wYXJlLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBMSz4KK2NvbnN0ZXhw
ciBib29sIGRvX2xlc3NfdGhhbl9jb21wYXJpc29uKGNvbnN0IENvbXBhcmUgJmNvbXBhcmUsIGNv
bnN0IEsgJngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBM
SyAmeSkgeworICByZXR1cm4gY29tcGFyZV9yZXN1bHRfYXNfbGVzc190aGFuKGNvbXBhcmUoeCwg
eSkpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGRvIGEgdGhyZWUtd2F5IGNvbXBhcmlz
b24gb2YgdHdvIGtleXMgZ2l2ZW4gYSBib29sZWFuIG9yCisvLyB0aHJlZS13YXkgY29tcGFyYXRv
ci4KKy8vIFNGSU5BRSBwcmV2ZW50cyBpbXBsaWNpdCBjb252ZXJzaW9ucyB0byBpbnQgKHN1Y2gg
YXMgZnJvbSBib29sKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnQsCisgICAgICAgICAgYWJzbDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPGludCwgSW50Pjo6dmFsdWUsIGludD4gPSAwPgorY29u
c3RleHByIGFic2w6OndlYWtfb3JkZXJpbmcgY29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoY29u
c3QgSW50IGMpIHsKKyAgcmV0dXJuIGMgPCAwID8gYWJzbDo6d2Vha19vcmRlcmluZzo6bGVzcwor
ICAgICAgICAgICAgICAgOiBjID09IDAgPyBhYnNsOjp3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50
CisgICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6OndlYWtfb3JkZXJpbmc6OmdyZWF0ZXI7
Cit9Citjb25zdGV4cHIgYWJzbDo6d2Vha19vcmRlcmluZyBjb21wYXJlX3Jlc3VsdF9hc19vcmRl
cmluZygKKyAgICBjb25zdCBhYnNsOjp3ZWFrX29yZGVyaW5nIGMpIHsKKyAgcmV0dXJuIGM7Cit9
CisKK3RlbXBsYXRlIDwKKyAgICB0eXBlbmFtZSBDb21wYXJlLCB0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBMSywKKyAgICBhYnNsOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPGJvb2wsIGFic2w6OnJl
c3VsdF9vZl90PENvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSyAmLCBjb25zdCBMSyAmKT4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBpbnQ+ID0gMD4KK2NvbnN0ZXhwciBhYnNsOjp3ZWFrX29yZGVyaW5nIGRvX3RocmVl
X3dheV9jb21wYXJpc29uKGNvbnN0IENvbXBhcmUgJmNvbXBhcmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBLICZ4LCBjb25zdCBM
SyAmeSkgeworICByZXR1cm4gY29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoY29tcGFyZSh4LCB5
KSk7Cit9Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgSywgdHlw
ZW5hbWUgTEssCisgICAgYWJzbDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPGJvb2wsIGFic2w6
OnJlc3VsdF9vZl90PENvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBLICYsIGNvbnN0IExLICYpPj46OnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgIGludD4gPSAwPgorY29uc3RleHByIGFic2w6OndlYWtfb3JkZXJpbmcgZG9fdGhy
ZWVfd2F5X2NvbXBhcmlzb24oY29uc3QgQ29tcGFyZSAmY29tcGFyZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEsgJngsIGNvbnN0
IExLICZ5KSB7CisgIHJldHVybiBjb21wYXJlKHgsIHkpID8gYWJzbDo6d2Vha19vcmRlcmluZzo6
bGVzcworICAgICAgICAgICAgICAgICAgICAgICA6IGNvbXBhcmUoeSwgeCkgPyBhYnNsOjp3ZWFr
X29yZGVyaW5nOjpncmVhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IGFic2w6OndlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQ7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBjb21wYXJlX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFC
U0xfVFlQRVNfQ09NUEFSRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvY29tcGFyZV90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXMvY29tcGFyZV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhODU1NDIxOTI3
NDk0YmZkNzJlYTI4MjE3Y2Y5ODY5ZWVjN2RhZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
eXBlcy9jb21wYXJlX3Rlc3QuY2MKQEAgLTAsMCArMSwzMTEgQEAKKy8vIENvcHlyaWdodCAyMDE4
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9jb21wYXJlLmgi
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9jYXN0cy5o
IgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgeworCisvLyBUaGlzIGlzIG5lY2Vzc2Fy
eSB0byBhdm9pZCBhIGJ1bmNoIG9mIGxpbnQgd2FybmluZ3Mgc3VnZ2VzdGluZyB0aGF0IHdlIHVz
ZQorLy8gRVhQRUNUX0VRL2V0Yy4sIHdoaWNoIGRvZXNuJ3Qgd29yayBpbiB0aGlzIGNhc2UgYmVj
YXVzZSB0aGV5IGNvbnZlcnQgdGhlIGAwYAorLy8gdG8gYW4gaW50LCB3aGljaCBjYW4ndCBiZSBj
b252ZXJ0ZWQgdG8gdGhlIHVuc3BlY2lmaWVkIHplcm8gdHlwZS4KK2Jvb2wgSWRlbnRpdHkoYm9v
bCBiKSB7IHJldHVybiBiOyB9CisKK1RFU1QoQ29tcGFyZSwgV2Vha0VxdWFsaXR5KSB7CisgIEVY
UEVDVF9UUlVFKElkZW50aXR5KHdlYWtfZXF1YWxpdHk6OmVxdWl2YWxlbnQgPT0gMCkpOworICBF
WFBFQ1RfVFJVRShJZGVudGl0eSgwID09IHdlYWtfZXF1YWxpdHk6OmVxdWl2YWxlbnQpKTsKKyAg
RVhQRUNUX1RSVUUoSWRlbnRpdHkod2Vha19lcXVhbGl0eTo6bm9uZXF1aXZhbGVudCAhPSAwKSk7
CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgIT0gd2Vha19lcXVhbGl0eTo6bm9uZXF1aXZhbGVu
dCkpOworfQorCitURVNUKENvbXBhcmUsIFN0cm9uZ0VxdWFsaXR5KSB7CisgIEVYUEVDVF9UUlVF
KElkZW50aXR5KHN0cm9uZ19lcXVhbGl0eTo6ZXF1YWwgPT0gMCkpOworICBFWFBFQ1RfVFJVRShJ
ZGVudGl0eSgwID09IHN0cm9uZ19lcXVhbGl0eTo6ZXF1YWwpKTsKKyAgRVhQRUNUX1RSVUUoSWRl
bnRpdHkoc3Ryb25nX2VxdWFsaXR5Ojpub25lcXVhbCAhPSAwKSk7CisgIEVYUEVDVF9UUlVFKElk
ZW50aXR5KDAgIT0gc3Ryb25nX2VxdWFsaXR5Ojpub25lcXVhbCkpOworICBFWFBFQ1RfVFJVRShJ
ZGVudGl0eShzdHJvbmdfZXF1YWxpdHk6OmVxdWl2YWxlbnQgPT0gMCkpOworICBFWFBFQ1RfVFJV
RShJZGVudGl0eSgwID09IHN0cm9uZ19lcXVhbGl0eTo6ZXF1aXZhbGVudCkpOworICBFWFBFQ1Rf
VFJVRShJZGVudGl0eShzdHJvbmdfZXF1YWxpdHk6Om5vbmVxdWl2YWxlbnQgIT0gMCkpOworICBF
WFBFQ1RfVFJVRShJZGVudGl0eSgwICE9IHN0cm9uZ19lcXVhbGl0eTo6bm9uZXF1aXZhbGVudCkp
OworfQorCitURVNUKENvbXBhcmUsIFBhcnRpYWxPcmRlcmluZykgeworICBFWFBFQ1RfVFJVRShJ
ZGVudGl0eShwYXJ0aWFsX29yZGVyaW5nOjpsZXNzIDwgMCkpOworICBFWFBFQ1RfVFJVRShJZGVu
dGl0eSgwID4gcGFydGlhbF9vcmRlcmluZzo6bGVzcykpOworICBFWFBFQ1RfVFJVRShJZGVudGl0
eShwYXJ0aWFsX29yZGVyaW5nOjpsZXNzIDw9IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHko
MCA+PSBwYXJ0aWFsX29yZGVyaW5nOjpsZXNzKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHBh
cnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQgPT0gMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0
eSgwID09IHBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQpKTsKKyAgRVhQRUNUX1RSVUUoSWRl
bnRpdHkocGFydGlhbF9vcmRlcmluZzo6Z3JlYXRlciA+IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRl
bnRpdHkoMCA8IHBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXIpKTsKKyAgRVhQRUNUX1RSVUUoSWRl
bnRpdHkocGFydGlhbF9vcmRlcmluZzo6Z3JlYXRlciA+PSAwKSk7CisgIEVYUEVDVF9UUlVFKElk
ZW50aXR5KDAgPD0gcGFydGlhbF9vcmRlcmluZzo6Z3JlYXRlcikpOworICBFWFBFQ1RfVFJVRShJ
ZGVudGl0eShwYXJ0aWFsX29yZGVyaW5nOjp1bm9yZGVyZWQgIT0gMCkpOworICBFWFBFQ1RfVFJV
RShJZGVudGl0eSgwICE9IHBhcnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZCkpOworICBFWFBFQ1Rf
RkFMU0UoSWRlbnRpdHkocGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkIDwgMCkpOworICBFWFBF
Q1RfRkFMU0UoSWRlbnRpdHkoMCA8IHBhcnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZCkpOworICBF
WFBFQ1RfRkFMU0UoSWRlbnRpdHkocGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkIDw9IDApKTsK
KyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KDAgPD0gcGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVk
KSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eShwYXJ0aWFsX29yZGVyaW5nOjp1bm9yZGVyZWQg
PiAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgwID4gcGFydGlhbF9vcmRlcmluZzo6dW5v
cmRlcmVkKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eShwYXJ0aWFsX29yZGVyaW5nOjp1bm9y
ZGVyZWQgPj0gMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoMCA+PSBwYXJ0aWFsX29yZGVy
aW5nOjp1bm9yZGVyZWQpKTsKK30KKworVEVTVChDb21wYXJlLCBXZWFrT3JkZXJpbmcpIHsKKyAg
RVhQRUNUX1RSVUUoSWRlbnRpdHkod2Vha19vcmRlcmluZzo6bGVzcyA8IDApKTsKKyAgRVhQRUNU
X1RSVUUoSWRlbnRpdHkoMCA+IHdlYWtfb3JkZXJpbmc6Omxlc3MpKTsKKyAgRVhQRUNUX1RSVUUo
SWRlbnRpdHkod2Vha19vcmRlcmluZzo6bGVzcyA8PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50
aXR5KDAgPj0gd2Vha19vcmRlcmluZzo6bGVzcykpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSh3
ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50ID09IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHko
MCA9PSB3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50KSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5
KHdlYWtfb3JkZXJpbmc6OmdyZWF0ZXIgPiAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAg
PCB3ZWFrX29yZGVyaW5nOjpncmVhdGVyKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHdlYWtf
b3JkZXJpbmc6OmdyZWF0ZXIgPj0gMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwIDw9IHdl
YWtfb3JkZXJpbmc6OmdyZWF0ZXIpKTsKK30KKworVEVTVChDb21wYXJlLCBTdHJvbmdPcmRlcmlu
ZykgeworICBFWFBFQ1RfVFJVRShJZGVudGl0eShzdHJvbmdfb3JkZXJpbmc6Omxlc3MgPCAwKSk7
CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPiBzdHJvbmdfb3JkZXJpbmc6Omxlc3MpKTsKKyAg
RVhQRUNUX1RSVUUoSWRlbnRpdHkoc3Ryb25nX29yZGVyaW5nOjpsZXNzIDw9IDApKTsKKyAgRVhQ
RUNUX1RSVUUoSWRlbnRpdHkoMCA+PSBzdHJvbmdfb3JkZXJpbmc6Omxlc3MpKTsKKyAgRVhQRUNU
X1RSVUUoSWRlbnRpdHkoc3Ryb25nX29yZGVyaW5nOjplcXVhbCA9PSAwKSk7CisgIEVYUEVDVF9U
UlVFKElkZW50aXR5KDAgPT0gc3Ryb25nX29yZGVyaW5nOjplcXVhbCkpOworICBFWFBFQ1RfVFJV
RShJZGVudGl0eShzdHJvbmdfb3JkZXJpbmc6OmVxdWl2YWxlbnQgPT0gMCkpOworICBFWFBFQ1Rf
VFJVRShJZGVudGl0eSgwID09IHN0cm9uZ19vcmRlcmluZzo6ZXF1aXZhbGVudCkpOworICBFWFBF
Q1RfVFJVRShJZGVudGl0eShzdHJvbmdfb3JkZXJpbmc6OmdyZWF0ZXIgPiAwKSk7CisgIEVYUEVD
VF9UUlVFKElkZW50aXR5KDAgPCBzdHJvbmdfb3JkZXJpbmc6OmdyZWF0ZXIpKTsKKyAgRVhQRUNU
X1RSVUUoSWRlbnRpdHkoc3Ryb25nX29yZGVyaW5nOjpncmVhdGVyID49IDApKTsKKyAgRVhQRUNU
X1RSVUUoSWRlbnRpdHkoMCA8PSBzdHJvbmdfb3JkZXJpbmc6OmdyZWF0ZXIpKTsKK30KKworVEVT
VChDb21wYXJlLCBDb252ZXJzaW9ucykgeworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5
KGltcGxpY2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4oc3Ryb25nX2VxdWFsaXR5OjplcXVhbCkgPT0g
MCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19l
cXVhbGl0eT4oc3Ryb25nX2VxdWFsaXR5Ojpub25lcXVhbCkgIT0gMCkpOworICBFWFBFQ1RfVFJV
RSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4oc3Ryb25nX2Vx
dWFsaXR5OjplcXVpdmFsZW50KSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KAorICAg
ICAgaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5PihzdHJvbmdfZXF1YWxpdHk6Om5vbmVxdWl2
YWxlbnQpICE9IDApKTsKKworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0
X2Nhc3Q8d2Vha19lcXVhbGl0eT4ocGFydGlhbF9vcmRlcmluZzo6bGVzcykgIT0gMCkpOworICBF
WFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIGltcGxpY2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4o
cGFydGlhbF9vcmRlcmluZzo6ZXF1aXZhbGVudCkgPT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAg
ICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4ocGFydGlhbF9vcmRlcmlu
Zzo6Z3JlYXRlcikgIT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxp
Y2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4ocGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkKSAhPSAw
KSk7CisKKyAgRVhQRUNUX1RSVUUoaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5Pih3ZWFrX29y
ZGVyaW5nOjpsZXNzKSAhPSAwKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBs
aWNpdF9jYXN0PHdlYWtfZXF1YWxpdHk+KHdlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQpID09IDAp
KTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfZXF1
YWxpdHk+KHdlYWtfb3JkZXJpbmc6OmdyZWF0ZXIpICE9IDApKTsKKworICBFWFBFQ1RfVFJVRSgK
KyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8cGFydGlhbF9vcmRlcmluZz4od2Vha19vcmRl
cmluZzo6bGVzcykgIT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxp
Y2l0X2Nhc3Q8cGFydGlhbF9vcmRlcmluZz4od2Vha19vcmRlcmluZzo6bGVzcykgPCAwKSk7Cisg
IEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29yZGVy
aW5nPih3ZWFrX29yZGVyaW5nOjpsZXNzKSA8PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5
KAorICAgICAgaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29yZGVyaW5nPih3ZWFrX29yZGVyaW5nOjpl
cXVpdmFsZW50KSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGlj
aXRfY2FzdDxwYXJ0aWFsX29yZGVyaW5nPih3ZWFrX29yZGVyaW5nOjpncmVhdGVyKSAhPSAwKSk7
CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29y
ZGVyaW5nPih3ZWFrX29yZGVyaW5nOjpncmVhdGVyKSA+IDApKTsKKyAgRVhQRUNUX1RSVUUoCisg
ICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHBhcnRpYWxfb3JkZXJpbmc+KHdlYWtfb3JkZXJp
bmc6OmdyZWF0ZXIpID49IDApKTsKKworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGlt
cGxpY2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4oc3Ryb25nX29yZGVyaW5nOjpsZXNzKSAhPSAwKSk7
CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFs
aXR5PihzdHJvbmdfb3JkZXJpbmc6OmVxdWFsKSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAg
ICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5PihzdHJvbmdfb3JkZXJpbmc6
OmVxdWl2YWxlbnQpID09IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBs
aWNpdF9jYXN0PHdlYWtfZXF1YWxpdHk+KHN0cm9uZ19vcmRlcmluZzo6Z3JlYXRlcikgIT0gMCkp
OworCisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDxzdHJvbmdf
ZXF1YWxpdHk+KHN0cm9uZ19vcmRlcmluZzo6bGVzcykgIT0gMCkpOworICBFWFBFQ1RfVFJVRSgK
KyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8c3Ryb25nX2VxdWFsaXR5PihzdHJvbmdfb3Jk
ZXJpbmc6OmVxdWFsKSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KAorICAgICAgaW1w
bGljaXRfY2FzdDxzdHJvbmdfZXF1YWxpdHk+KHN0cm9uZ19vcmRlcmluZzo6ZXF1aXZhbGVudCkg
PT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8c3Ry
b25nX2VxdWFsaXR5PihzdHJvbmdfb3JkZXJpbmc6OmdyZWF0ZXIpICE9IDApKTsKKworICBFWFBF
Q1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8cGFydGlhbF9vcmRlcmluZz4o
c3Ryb25nX29yZGVyaW5nOjpsZXNzKSAhPSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRl
bnRpdHkoaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6Omxl
c3MpIDwgMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8
cGFydGlhbF9vcmRlcmluZz4oc3Ryb25nX29yZGVyaW5nOjpsZXNzKSA8PSAwKSk7CisgIEVYUEVD
VF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29yZGVyaW5nPihz
dHJvbmdfb3JkZXJpbmc6OmVxdWFsKSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KAor
ICAgICAgaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6OmVx
dWl2YWxlbnQpID09IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNp
dF9jYXN0PHBhcnRpYWxfb3JkZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6Z3JlYXRlcikgIT0gMCkp
OworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8cGFydGlhbF9v
cmRlcmluZz4oc3Ryb25nX29yZGVyaW5nOjpncmVhdGVyKSA+IDApKTsKKyAgRVhQRUNUX1RSVUUo
CisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHBhcnRpYWxfb3JkZXJpbmc+KHN0cm9uZ19v
cmRlcmluZzo6Z3JlYXRlcikgPj0gMCkpOworCisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRp
dHkoaW1wbGljaXRfY2FzdDx3ZWFrX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6Omxlc3MpICE9
IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtf
b3JkZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6bGVzcykgPCAwKSk7CisgIEVYUEVDVF9UUlVFKAor
ICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX29yZGVyaW5nPihzdHJvbmdfb3JkZXJp
bmc6Omxlc3MpIDw9IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNp
dF9jYXN0PHdlYWtfb3JkZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6ZXF1YWwpID09IDApKTsKKyAg
RVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfb3JkZXJpbmc+
KHN0cm9uZ19vcmRlcmluZzo6ZXF1aXZhbGVudCkgPT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAg
ICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19vcmRlcmluZz4oc3Ryb25nX29yZGVyaW5n
OjpncmVhdGVyKSAhPSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGlj
aXRfY2FzdDx3ZWFrX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6OmdyZWF0ZXIpID4gMCkpOwor
ICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19vcmRlcmlu
Zz4oc3Ryb25nX29yZGVyaW5nOjpncmVhdGVyKSA+PSAwKSk7Cit9CisKK3N0cnVjdCBXZWFrT3Jk
ZXJpbmdMZXNzIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGFic2w6OndlYWtfb3JkZXJp
bmcgb3BlcmF0b3IoKShjb25zdCBUICZhLCBjb25zdCBUICZiKSBjb25zdCB7CisgICAgcmV0dXJu
IGEgPCBiID8gYWJzbDo6d2Vha19vcmRlcmluZzo6bGVzcworICAgICAgICAgICAgICAgICA6IGEg
PT0gYiA/IGFic2w6OndlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBhYnNsOjp3ZWFrX29yZGVyaW5nOjpncmVhdGVyOworICB9Cit9OworCitURVNU
KENvbXBhcmVSZXN1bHRBc0xlc3NUaGFuLCBTYW5pdHlUZXN0KSB7CisgIEVYUEVDVF9GQUxTRShh
YnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19sZXNzX3RoYW4oZmFsc2Up
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRf
YXNfbGVzc190aGFuKHRydWUpKTsKKworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OmNvbXBh
cmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX2xlc3NfdGhhbih3ZWFrX29yZGVyaW5nOjps
ZXNzKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jl
c3VsdF9hc19sZXNzX3RoYW4oCisgICAgICB3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50KSk7Cisg
IEVYUEVDVF9GQUxTRShhYnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19s
ZXNzX3RoYW4oCisgICAgICB3ZWFrX29yZGVyaW5nOjpncmVhdGVyKSk7Cit9CisKK1RFU1QoRG9M
ZXNzVGhhbkNvbXBhcmlzb24sIFNhbml0eVRlc3QpIHsKKyAgc3RkOjpsZXNzPGludD4gbGVzczsK
KyAgV2Vha09yZGVyaW5nTGVzcyB3ZWFrOworCisgIEVYUEVDVF9UUlVFKGFic2w6OmNvbXBhcmVf
aW50ZXJuYWw6OmRvX2xlc3NfdGhhbl9jb21wYXJpc29uKGxlc3MsIC0xLCAwKSk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX2xlc3NfdGhhbl9jb21wYXJpc29uKHdl
YWssIC0xLCAwKSk7CisKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRv
X2xlc3NfdGhhbl9jb21wYXJpc29uKGxlc3MsIDEwLCAxMCkpOworICBFWFBFQ1RfRkFMU0UoYWJz
bDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fbGVzc190aGFuX2NvbXBhcmlzb24od2VhaywgMTAsIDEw
KSk7CisKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX2xlc3NfdGhh
bl9jb21wYXJpc29uKGxlc3MsIDEwLCA1KSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpjb21wYXJl
X2ludGVybmFsOjpkb19sZXNzX3RoYW5fY29tcGFyaXNvbih3ZWFrLCAxMCwgNSkpOworfQorCitU
RVNUKENvbXBhcmVSZXN1bHRBc09yZGVyaW5nLCBTYW5pdHlUZXN0KSB7CisgIEVYUEVDVF9UUlVF
KElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRf
YXNfb3JkZXJpbmcoLTEpIDwgMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBh
YnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygtMSkgPT0g
MCkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBJZGVudGl0eShhYnNsOjpjb21wYXJlX2ludGVy
bmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygtMSkgPiAwKSk7CisgIEVYUEVDVF9UUlVF
KElkZW50aXR5KGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX29yZGVy
aW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19vcmRlcmluZzo6bGVzcykgPCAw
KSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eShhYnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21w
YXJlX3Jlc3VsdF9hc19vcmRlcmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFr
X29yZGVyaW5nOjpsZXNzKSA9PSAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eShhYnNsOjpj
b21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3ZWFrX29yZGVyaW5nOjpsZXNzKSA+IDApKTsKKworICBFWFBFQ1Rf
RkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jl
c3VsdF9hc19vcmRlcmluZygwKSA8IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAg
ICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygwKSA9
PSAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50
ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX29yZGVyaW5nKDApID4gMCkpOworICBFWFBFQ1RfRkFM
U0UoSWRlbnRpdHkoYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3Jk
ZXJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrX29yZGVyaW5nOjplcXVpdmFs
ZW50KSA8IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoYWJzbDo6Y29tcGFyZV9pbnRlcm5h
bDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2Vha19vcmRlcmluZzo6ZXF1aXZhbGVudCkgPT0gMCkpOworICBFWFBFQ1RfRkFMU0UoSWRl
bnRpdHkoYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmco
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19vcmRlcmluZzo6ZXF1aXZhbGVudCkg
PiAwKSk7CisKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9p
bnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoMSkgPCAwKSk7CisgIEVYUEVDVF9G
QUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVz
dWx0X2FzX29yZGVyaW5nKDEpID09IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAg
ICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygxKSA+
IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNv
bXBhcmVfcmVzdWx0X2FzX29yZGVyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vh
a19vcmRlcmluZzo6Z3JlYXRlcikgPCAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eShhYnNs
Ojpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWFrX29yZGVyaW5nOjpncmVhdGVyKSA9PSAwKSk7CisgIEVY
UEVDVF9UUlVFKElkZW50aXR5KGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0
X2FzX29yZGVyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtfb3JkZXJpbmc6
OmdyZWF0ZXIpID4gMCkpOworfQorCitURVNUKERvVGhyZWVXYXlDb21wYXJpc29uLCBTYW5pdHlU
ZXN0KSB7CisgIHN0ZDo6bGVzczxpbnQ+IGxlc3M7CisgIFdlYWtPcmRlcmluZ0xlc3Mgd2VhazsK
KworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6
OmRvX3RocmVlX3dheV9jb21wYXJpc29uKGxlc3MsIC0xLCAwKSA8IDApKTsKKyAgRVhQRUNUX0ZB
TFNFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5
X2NvbXBhcmlzb24obGVzcywgLTEsIDApID09IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5
KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24o
bGVzcywgLTEsIDApID4gMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIGFic2w6
OmNvbXBhcmVfaW50ZXJuYWw6OmRvX3RocmVlX3dheV9jb21wYXJpc29uKHdlYWssIC0xLCAwKSA8
IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRl
cm5hbDo6ZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24od2VhaywgLTEsIDApID09IDApKTsKKyAgRVhQ
RUNUX0ZBTFNFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhy
ZWVfd2F5X2NvbXBhcmlzb24od2VhaywgLTEsIDApID4gMCkpOworCisgIEVYUEVDVF9GQUxTRShJ
ZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX3RocmVlX3dheV9jb21w
YXJpc29uKGxlc3MsIDEwLCAxMCkgPCAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KAorICAg
ICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24obGVzcywg
MTAsIDEwKSA9PSAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNv
bXBhcmVfaW50ZXJuYWw6OmRvX3RocmVlX3dheV9jb21wYXJpc29uKGxlc3MsIDEwLCAxMCkgPiAw
KSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJu
YWw6OmRvX3RocmVlX3dheV9jb21wYXJpc29uKHdlYWssIDEwLCAxMCkgPCAwKSk7CisgIEVYUEVD
VF9UUlVFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVf
d2F5X2NvbXBhcmlzb24od2VhaywgMTAsIDEwKSA9PSAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVu
dGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX3RocmVlX3dheV9jb21wYXJp
c29uKHdlYWssIDEwLCAxMCkgPiAwKSk7CisKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KAorICAg
ICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24obGVzcywg
MTAsIDUpIDwgMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21w
YXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbihsZXNzLCAxMCwgNSkgPT0gMCkp
OworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6
OmRvX3RocmVlX3dheV9jb21wYXJpc29uKGxlc3MsIDEwLCA1KSA+IDApKTsKKyAgRVhQRUNUX0ZB
TFNFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5
X2NvbXBhcmlzb24od2VhaywgMTAsIDUpIDwgMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHko
CisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbih3
ZWFrLCAxMCwgNSkgPT0gMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIGFic2w6
OmNvbXBhcmVfaW50ZXJuYWw6OmRvX3RocmVlX3dheV9jb21wYXJpc29uKHdlYWssIDEwLCA1KSA+
IDApKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXMvaW50ZXJuYWwvb3B0aW9uYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVy
bmFsL29wdGlvbmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFjYmRhMjBkNTU5NWFjZmU3NDU5MDEzYmRkOTQ3
ODkyZmQ2NTgxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL29wdGlv
bmFsLmgKQEAgLTAsMCArMSwzOTQgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKyNpZm5kZWYgQUJTTF9UWVBFU19JTlRFUk5BTF9PUFRJT05BTF9IXworI2Rl
ZmluZSBBQlNMX1RZUEVTX0lOVEVSTkFMX09QVElPTkFMX0hfCisKKyNpbmNsdWRlIDxmdW5jdGlv
bmFsPgorI2luY2x1ZGUgPG5ldz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1
dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2lubGluZV92YXJpYWJsZS5o
IgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90
eXBlX3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCisKKy8vIEFC
U0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNUT1JTCisvLworLy8gSW5oZXJpdGlu
ZyBjb25zdHJ1Y3RvcnMgaXMgc3VwcG9ydGVkIGluIEdDQyA0LjgrLCBDbGFuZyAzLjMrIGFuZCBN
U1ZDIDIwMTUuCisvLyBfX2NwcF9pbmhlcml0aW5nX2NvbnN0cnVjdG9ycyBpcyBhIHByZWRlZmlu
ZWQgbWFjcm8gYW5kIGEgcmVjb21tZW5kZWQgd2F5IHRvCisvLyBjaGVjayBmb3IgdGhpcyBsYW5n
dWFnZSBmZWF0dXJlLCBidXQgR0NDIGRvZXNuJ3Qgc3VwcG9ydCBpdCB1bnRpbCA1LjAgYW5kCisv
LyBDbGFuZyBkb2Vzbid0IHN1cHBvcnQgaXQgdW50aWwgMy42LgorLy8gQWxzbywgTVNWQyAyMDE1
IGhhcyBhIGJ1ZzogaXQgZG9lc24ndCBpbmhlcml0IHRoZSBjb25zdGV4cHIgdGVtcGxhdGUKKy8v
IGNvbnN0cnVjdG9yLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlIHdvbid0IHdvcmsg
b24gTVNWQyAyMDE1IFVwZGF0ZTM6CisvLyBzdHJ1Y3QgQmFzZSB7CisvLyAgIGludCB0OworLy8g
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vICAgY29uc3RleHByIEJhc2UoVCB0XykgOiB0KHRf
KSB7fQorLy8gfTsKKy8vIHN0cnVjdCBGb28gOiBCYXNlIHsKKy8vICAgdXNpbmcgQmFzZTo6QmFz
ZTsKKy8vIH0KKy8vIGNvbnN0ZXhwciBGb28gZm9vKDApOyAgLy8gZG9lc24ndCB3b3JrIG9uIE1T
VkMgMjAxNQorI2lmIGRlZmluZWQoX19jbGFuZ19fKQorI2lmIF9faGFzX2ZlYXR1cmUoY3h4X2lu
aGVyaXRpbmdfY29uc3RydWN0b3JzKQorI2RlZmluZSBBQlNMX09QVElPTkFMX1VTRV9JTkhFUklU
SU5HX0NPTlNUUlVDVE9SUyAxCisjZW5kaWYKKyNlbGlmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAoX19HTlVDX18g
PiA0IHx8IF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gOCkpIHx8IFwKKyAgICAo
X19jcHBfaW5oZXJpdGluZ19jb25zdHJ1Y3RvcnMgPj0gMjAwODAyKSB8fCAgICAgICAgICAgICAg
ICAgIFwKKyAgICAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTkxMCkKKyNkZWZp
bmUgQUJTTF9PUFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMgMQorI2VuZGlmCisK
K25hbWVzcGFjZSBhYnNsIHsKKworLy8gRm9yd2FyZCBkZWNsYXJhdGlvbgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBvcHRpb25hbDsKKworbmFtZXNwYWNlIG9wdGlvbmFsX2ludGVybmFs
IHsKKworLy8gVGhpcyB0YWcgdHlwZSBpcyB1c2VkIGFzIGEgY29uc3RydWN0b3IgcGFyYW1ldGVy
IHR5cGUgZm9yIGBudWxsb3B0X3RgLgorc3RydWN0IGluaXRfdCB7CisgIGV4cGxpY2l0IGluaXRf
dCgpID0gZGVmYXVsdDsKK307CisKK3N0cnVjdCBlbXB0eV9zdHJ1Y3Qge307CisKKy8vIFRoaXMg
Y2xhc3Mgc3RvcmVzIHRoZSBkYXRhIGluIG9wdGlvbmFsPFQ+LgorLy8gSXQgaXMgc3BlY2lhbGl6
ZWQgYmFzZWQgb24gd2hldGhlciBUIGlzIHRyaXZpYWxseSBkZXN0cnVjdGlibGUuCisvLyBUaGlz
IGlzIHRoZSBzcGVjaWFsaXphdGlvbiBmb3Igbm9uIHRyaXZpYWxseSBkZXN0cnVjdGlibGUgdHlw
ZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIHVudXNlZCA9IHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWU+CitjbGFzcyBvcHRpb25hbF9kYXRhX2R0b3JfYmFzZSB7
CisgIHN0cnVjdCBkdW1teV90eXBlIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSAlIHNp
emVvZihlbXB0eV9zdHJ1Y3QpID09IDAsICIiKTsKKyAgICAvLyBVc2UgYW4gYXJyYXkgdG8gYXZv
aWQgR0NDIDYgcGxhY2VtZW50LW5ldyB3YXJuaW5nLgorICAgIGVtcHR5X3N0cnVjdCBkYXRhW3Np
emVvZihUKSAvIHNpemVvZihlbXB0eV9zdHJ1Y3QpXTsKKyAgfTsKKworIHByb3RlY3RlZDoKKyAg
Ly8gV2hldGhlciB0aGVyZSBpcyBkYXRhIG9yIG5vdC4KKyAgYm9vbCBlbmdhZ2VkXzsKKyAgLy8g
RGF0YSBzdG9yYWdlCisgIHVuaW9uIHsKKyAgICBkdW1teV90eXBlIGR1bW15XzsKKyAgICBUIGRh
dGFfOworICB9OworCisgIHZvaWQgZGVzdHJ1Y3QoKSBub2V4Y2VwdCB7CisgICAgaWYgKGVuZ2Fn
ZWRfKSB7CisgICAgICBkYXRhXy5+VCgpOworICAgICAgZW5nYWdlZF8gPSBmYWxzZTsKKyAgICB9
CisgIH0KKworICAvLyBkdW1teV8gbXVzdCBiZSBpbml0aWFsaXplZCBmb3IgY29uc3RleHByIGNv
bnN0cnVjdG9yLgorICBjb25zdGV4cHIgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoKSBub2V4Y2Vw
dCA6IGVuZ2FnZWRfKGZhbHNlKSwgZHVtbXlfe3t9fSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgorICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2Uo
aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICA6IGVuZ2FnZWRfKHRydWUpLCBkYXRh
XyhhYnNsOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorCisgIH5vcHRpb25hbF9kYXRhX2R0
b3JfYmFzZSgpIHsgZGVzdHJ1Y3QoKTsgfQorfTsKKworLy8gU3BlY2lhbGl6YXRpb24gZm9yIHRy
aXZpYWxseSBkZXN0cnVjdGlibGUgdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
b3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2U8VCwgdHJ1ZT4geworICBzdHJ1Y3QgZHVtbXlfdHlwZSB7
CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgJSBzaXplb2YoZW1wdHlfc3RydWN0KSA9PSAw
LCAiIik7CisgICAgLy8gVXNlIGFycmF5IHRvIGF2b2lkIEdDQyA2IHBsYWNlbWVudC1uZXcgd2Fy
bmluZy4KKyAgICBlbXB0eV9zdHJ1Y3QgZGF0YVtzaXplb2YoVCkgLyBzaXplb2YoZW1wdHlfc3Ry
dWN0KV07CisgIH07CisKKyBwcm90ZWN0ZWQ6CisgIC8vIFdoZXRoZXIgdGhlcmUgaXMgZGF0YSBv
ciBub3QuCisgIGJvb2wgZW5nYWdlZF87CisgIC8vIERhdGEgc3RvcmFnZQorICB1bmlvbiB7Cisg
ICAgZHVtbXlfdHlwZSBkdW1teV87CisgICAgVCBkYXRhXzsKKyAgfTsKKyAgdm9pZCBkZXN0cnVj
dCgpIG5vZXhjZXB0IHsgZW5nYWdlZF8gPSBmYWxzZTsgfQorCisgIC8vIGR1bW15XyBtdXN0IGJl
IGluaXRpYWxpemVkIGZvciBjb25zdGV4cHIgY29uc3RydWN0b3IuCisgIGNvbnN0ZXhwciBvcHRp
b25hbF9kYXRhX2R0b3JfYmFzZSgpIG5vZXhjZXB0IDogZW5nYWdlZF8oZmFsc2UpLCBkdW1teV97
e319IHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIGNvbnN0ZXhwciBleHBs
aWNpdCBvcHRpb25hbF9kYXRhX2R0b3JfYmFzZShpbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykK
KyAgICAgIDogZW5nYWdlZF8odHJ1ZSksIGRhdGFfKGFic2w6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pIHt9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIG9wdGlvbmFsX2RhdGFf
YmFzZSA6IHB1YmxpYyBvcHRpb25hbF9kYXRhX2R0b3JfYmFzZTxUPiB7CisgcHJvdGVjdGVkOgor
ICB1c2luZyBiYXNlID0gb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2U8VD47CisjaWZkZWYgQUJTTF9P
UFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMKKyAgdXNpbmcgYmFzZTo6YmFzZTsK
KyNlbHNlCisgIG9wdGlvbmFsX2RhdGFfYmFzZSgpID0gZGVmYXVsdDsKKworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KKyAgY29uc3RleHByIGV4cGxpY2l0IG9wdGlvbmFsX2RhdGFfYmFz
ZShpbl9wbGFjZV90IHQsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBiYXNlKHQsIGFic2w6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pIHt9CisjZW5kaWYKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUu
Li4gQXJncz4KKyAgdm9pZCBjb25zdHJ1Y3QoQXJncyYmLi4uIGFyZ3MpIHsKKyAgICAvLyBVc2Ug
ZHVtbXlfJ3MgYWRkcmVzcyB0byB3b3JrIGFyb3VuZCBjYXN0aW5nIGN2LXF1YWxpZmllZCBUKiB0
byB2b2lkKi4KKyAgICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0aGlzLT5kdW1teV8pKSBU
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgdGhpcy0+ZW5nYWdlZF8gPSB0cnVl
OworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHZvaWQgYXNzaWduKFUmJiB1KSB7
CisgICAgaWYgKHRoaXMtPmVuZ2FnZWRfKSB7CisgICAgICB0aGlzLT5kYXRhXyA9IHN0ZDo6Zm9y
d2FyZDxVPih1KTsKKyAgICB9IGVsc2UgeworICAgICAgY29uc3RydWN0KHN0ZDo6Zm9yd2FyZDxV
Pih1KSk7CisgICAgfQorICB9Cit9OworCisvLyBUT0RPKGFic2wtdGVhbSk6IEFkZCBhbm90aGVy
IGNsYXNzIHVzaW5nCisvLyBzdGQ6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGUgdHJh
aXQgd2hlbiBhdmFpbGFibGUgdG8gbWF0Y2gKKy8vIGh0dHA6Ly9jcGx1c3BsdXMuZ2l0aHViLmlv
L0xXRy9sd2ctZGVmZWN0cy5odG1sIzI5MDAsIGZvciB0eXBlcyB0aGF0CisvLyBoYXZlIHRyaXZp
YWwgbW92ZSBidXQgbm9udHJpdmlhbCBjb3B5LgorLy8gQWxzbywgd2Ugc2hvdWxkIGJlIGNoZWNr
aW5nIGlzX3RyaXZpYWxseV9jb3B5YWJsZSBoZXJlLCB3aGljaCBpcyBub3QKKy8vIHN1cHBvcnRl
ZCBub3csIHNvIHdlIHVzZSBpc190cml2aWFsbHlfKiB0cmFpdHMgaW5zdGVhZC4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBULAorICAgICAgICAgIGJvb2wgdW51c2VkID0gYWJzbDo6aXNfdHJpdmlhbGx5
X2NvcHlfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUmJgorICAgICAgICAgICAgICBhYnNsOjppc190
cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PAorICAgICAg
ICAgICAgICAgICAgVD46OnR5cGU+Ojp2YWx1ZSYmIHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxUPjo6dmFsdWU+CitjbGFzcyBvcHRpb25hbF9kYXRhOworCisvLyBUcml2aWFsbHkgY29w
eWFibGUgdHlwZXMKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mgb3B0aW9uYWxfZGF0YTxU
LCB0cnVlPiA6IHB1YmxpYyBvcHRpb25hbF9kYXRhX2Jhc2U8VD4geworIHByb3RlY3RlZDoKKyNp
ZmRlZiBBQlNMX09QVElPTkFMX1VTRV9JTkhFUklUSU5HX0NPTlNUUlVDVE9SUworICB1c2luZyBv
cHRpb25hbF9kYXRhX2Jhc2U8VD46Om9wdGlvbmFsX2RhdGFfYmFzZTsKKyNlbHNlCisgIG9wdGlv
bmFsX2RhdGEoKSA9IGRlZmF1bHQ7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Cisg
IGNvbnN0ZXhwciBleHBsaWNpdCBvcHRpb25hbF9kYXRhKGluX3BsYWNlX3QgdCwgQXJncyYmLi4u
IGFyZ3MpCisgICAgICA6IG9wdGlvbmFsX2RhdGFfYmFzZTxUPih0LCBhYnNsOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSB7fQorI2VuZGlmCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIG9wdGlvbmFsX2RhdGE8VCwgZmFsc2U+IDogcHVibGljIG9wdGlvbmFsX2RhdGFfYmFzZTxU
PiB7CisgcHJvdGVjdGVkOgorI2lmZGVmIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09O
U1RSVUNUT1JTCisgIHVzaW5nIG9wdGlvbmFsX2RhdGFfYmFzZTxUPjo6b3B0aW9uYWxfZGF0YV9i
YXNlOworI2Vsc2UKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIGNvbnN0ZXhwciBl
eHBsaWNpdCBvcHRpb25hbF9kYXRhKGluX3BsYWNlX3QgdCwgQXJncyYmLi4uIGFyZ3MpCisgICAg
ICA6IG9wdGlvbmFsX2RhdGFfYmFzZTxUPih0LCBhYnNsOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSB7fQorI2VuZGlmCisKKyAgb3B0aW9uYWxfZGF0YSgpID0gZGVmYXVsdDsKKworICBvcHRpb25h
bF9kYXRhKGNvbnN0IG9wdGlvbmFsX2RhdGEmIHJocykgOiBvcHRpb25hbF9kYXRhX2Jhc2U8VD4o
KSB7CisgICAgaWYgKHJocy5lbmdhZ2VkXykgeworICAgICAgdGhpcy0+Y29uc3RydWN0KHJocy5k
YXRhXyk7CisgICAgfQorICB9CisKKyAgb3B0aW9uYWxfZGF0YShvcHRpb25hbF9kYXRhJiYgcmhz
KSBub2V4Y2VwdCgKKyAgICAgIGFic2w6OmRlZmF1bHRfYWxsb2NhdG9yX2lzX25vdGhyb3c6OnZh
bHVlIHx8CisgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1
ZSkKKyAgICAgIDogb3B0aW9uYWxfZGF0YV9iYXNlPFQ+KCkgeworICAgIGlmIChyaHMuZW5nYWdl
ZF8pIHsKKyAgICAgIHRoaXMtPmNvbnN0cnVjdChzdGQ6Om1vdmUocmhzLmRhdGFfKSk7CisgICAg
fQorICB9CisKKyAgb3B0aW9uYWxfZGF0YSYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsX2RhdGEm
IHJocykgeworICAgIGlmIChyaHMuZW5nYWdlZF8pIHsKKyAgICAgIHRoaXMtPmFzc2lnbihyaHMu
ZGF0YV8pOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLT5kZXN0cnVjdCgpOworICAgIH0KKyAg
ICByZXR1cm4gKnRoaXM7CisgIH0KKworICBvcHRpb25hbF9kYXRhJiBvcGVyYXRvcj0ob3B0aW9u
YWxfZGF0YSYmIHJocykgbm9leGNlcHQoCisgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3Np
Z25hYmxlPFQ+Ojp2YWx1ZSYmCisgICAgICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfY29uc3Ry
dWN0aWJsZTxUPjo6dmFsdWUpIHsKKyAgICBpZiAocmhzLmVuZ2FnZWRfKSB7CisgICAgICB0aGlz
LT5hc3NpZ24oc3RkOjptb3ZlKHJocy5kYXRhXykpOworICAgIH0gZWxzZSB7CisgICAgICB0aGlz
LT5kZXN0cnVjdCgpOworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7CisgIH0KK307CisKKy8vIE9y
ZGVyZWQgYnkgbGV2ZWwgb2YgcmVzdHJpY3Rpb24sIGZyb20gbG93IHRvIGhpZ2guCisvLyBDb3B5
YWJsZSBpbXBsaWVzIG1vdmFibGUuCitlbnVtIGNsYXNzIGNvcHlfdHJhaXRzIHsgY29weWFibGUg
PSAwLCBtb3ZhYmxlID0gMSwgbm9uX21vdmFibGUgPSAyIH07CisKKy8vIEJhc2UgY2xhc3MgZm9y
IGVuYWJsaW5nL2Rpc2FibGluZyBjb3B5L21vdmUgY29uc3RydWN0b3IuCit0ZW1wbGF0ZSA8Y29w
eV90cmFpdHM+CitjbGFzcyBvcHRpb25hbF9jdG9yX2Jhc2U7CisKK3RlbXBsYXRlIDw+CitjbGFz
cyBvcHRpb25hbF9jdG9yX2Jhc2U8Y29weV90cmFpdHM6OmNvcHlhYmxlPiB7CisgcHVibGljOgor
ICBjb25zdGV4cHIgb3B0aW9uYWxfY3Rvcl9iYXNlKCkgPSBkZWZhdWx0OworICBvcHRpb25hbF9j
dG9yX2Jhc2UoY29uc3Qgb3B0aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWZhdWx0OworICBvcHRpb25h
bF9jdG9yX2Jhc2Uob3B0aW9uYWxfY3Rvcl9iYXNlJiYpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxf
Y3Rvcl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWZhdWx0
OworICBvcHRpb25hbF9jdG9yX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9jdG9yX2Jhc2UmJikg
PSBkZWZhdWx0OworfTsKKwordGVtcGxhdGUgPD4KK2NsYXNzIG9wdGlvbmFsX2N0b3JfYmFzZTxj
b3B5X3RyYWl0czo6bW92YWJsZT4geworIHB1YmxpYzoKKyAgY29uc3RleHByIG9wdGlvbmFsX2N0
b3JfYmFzZSgpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlKGNvbnN0IG9wdGlvbmFs
X2N0b3JfYmFzZSYpID0gZGVsZXRlOworICBvcHRpb25hbF9jdG9yX2Jhc2Uob3B0aW9uYWxfY3Rv
cl9iYXNlJiYpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlJiBvcGVyYXRvcj0oY29u
c3Qgb3B0aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWZhdWx0OworICBvcHRpb25hbF9jdG9yX2Jhc2Um
IG9wZXJhdG9yPShvcHRpb25hbF9jdG9yX2Jhc2UmJikgPSBkZWZhdWx0OworfTsKKwordGVtcGxh
dGUgPD4KK2NsYXNzIG9wdGlvbmFsX2N0b3JfYmFzZTxjb3B5X3RyYWl0czo6bm9uX21vdmFibGU+
IHsKKyBwdWJsaWM6CisgIGNvbnN0ZXhwciBvcHRpb25hbF9jdG9yX2Jhc2UoKSA9IGRlZmF1bHQ7
CisgIG9wdGlvbmFsX2N0b3JfYmFzZShjb25zdCBvcHRpb25hbF9jdG9yX2Jhc2UmKSA9IGRlbGV0
ZTsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlKG9wdGlvbmFsX2N0b3JfYmFzZSYmKSA9IGRlbGV0ZTsK
KyAgb3B0aW9uYWxfY3Rvcl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxfY3Rvcl9iYXNl
JikgPSBkZWZhdWx0OworICBvcHRpb25hbF9jdG9yX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9j
dG9yX2Jhc2UmJikgPSBkZWZhdWx0OworfTsKKworLy8gQmFzZSBjbGFzcyBmb3IgZW5hYmxpbmcv
ZGlzYWJsaW5nIGNvcHkvbW92ZSBhc3NpZ25tZW50LgordGVtcGxhdGUgPGNvcHlfdHJhaXRzPgor
Y2xhc3Mgb3B0aW9uYWxfYXNzaWduX2Jhc2U7CisKK3RlbXBsYXRlIDw+CitjbGFzcyBvcHRpb25h
bF9hc3NpZ25fYmFzZTxjb3B5X3RyYWl0czo6Y29weWFibGU+IHsKKyBwdWJsaWM6CisgIGNvbnN0
ZXhwciBvcHRpb25hbF9hc3NpZ25fYmFzZSgpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfYXNzaWdu
X2Jhc2UoY29uc3Qgb3B0aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFs
X2Fzc2lnbl9iYXNlKG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVmYXVsdDsKKyAgb3B0aW9u
YWxfYXNzaWduX2Jhc2UmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFzZSYpID0g
ZGVmYXVsdDsKKyAgb3B0aW9uYWxfYXNzaWduX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9hc3Np
Z25fYmFzZSYmKSA9IGRlZmF1bHQ7Cit9OworCit0ZW1wbGF0ZSA8PgorY2xhc3Mgb3B0aW9uYWxf
YXNzaWduX2Jhc2U8Y29weV90cmFpdHM6Om1vdmFibGU+IHsKKyBwdWJsaWM6CisgIGNvbnN0ZXhw
ciBvcHRpb25hbF9hc3NpZ25fYmFzZSgpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfYXNzaWduX2Jh
c2UoY29uc3Qgb3B0aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFsX2Fz
c2lnbl9iYXNlKG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxf
YXNzaWduX2Jhc2UmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFzZSYpID0gZGVs
ZXRlOworICBvcHRpb25hbF9hc3NpZ25fYmFzZSYgb3BlcmF0b3I9KG9wdGlvbmFsX2Fzc2lnbl9i
YXNlJiYpID0gZGVmYXVsdDsKK307CisKK3RlbXBsYXRlIDw+CitjbGFzcyBvcHRpb25hbF9hc3Np
Z25fYmFzZTxjb3B5X3RyYWl0czo6bm9uX21vdmFibGU+IHsKKyBwdWJsaWM6CisgIGNvbnN0ZXhw
ciBvcHRpb25hbF9hc3NpZ25fYmFzZSgpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfYXNzaWduX2Jh
c2UoY29uc3Qgb3B0aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFsX2Fz
c2lnbl9iYXNlKG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxf
YXNzaWduX2Jhc2UmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFzZSYpID0gZGVs
ZXRlOworICBvcHRpb25hbF9hc3NpZ25fYmFzZSYgb3BlcmF0b3I9KG9wdGlvbmFsX2Fzc2lnbl9i
YXNlJiYpID0gZGVsZXRlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgY3Rv
cl9jb3B5X3RyYWl0cyB7CisgIHN0YXRpYyBjb25zdGV4cHIgY29weV90cmFpdHMgdHJhaXRzID0K
KyAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZQorICAgICAgICAgID8g
Y29weV90cmFpdHM6OmNvcHlhYmxlCisgICAgICAgICAgOiBzdGQ6OmlzX21vdmVfY29uc3RydWN0
aWJsZTxUPjo6dmFsdWUgPyBjb3B5X3RyYWl0czo6bW92YWJsZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29weV90cmFpdHM6Om5vbl9tb3ZhYmxl
OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgYXNzaWduX2NvcHlfdHJhaXRz
IHsKKyAgc3RhdGljIGNvbnN0ZXhwciBjb3B5X3RyYWl0cyB0cmFpdHMgPQorICAgICAgYWJzbDo6
aXNfY29weV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJs
ZTxUPjo6dmFsdWUKKyAgICAgICAgICA/IGNvcHlfdHJhaXRzOjpjb3B5YWJsZQorICAgICAgICAg
IDogYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUKKyAgICAgICAgICAgICAg
ICA/IGNvcHlfdHJhaXRzOjptb3ZhYmxlCisgICAgICAgICAgICAgICAgOiBjb3B5X3RyYWl0czo6
bm9uX21vdmFibGU7Cit9OworCisvLyBXaGV0aGVyIFQgaXMgY29uc3RydWN0aWJsZSBvciBjb252
ZXJ0aWJsZSBmcm9tIG9wdGlvbmFsPFU+LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+CitzdHJ1Y3QgaXNfY29uc3RydWN0aWJsZV9jb252ZXJ0aWJsZV9mcm9tX29wdGlvbmFsCisg
ICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PAorICAgICAgICAgIGJvb2wsIHN0ZDo6aXNfY29u
c3RydWN0aWJsZTxULCBvcHRpb25hbDxVPiY+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAgICAg
ICBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgb3B0aW9uYWw8VT4mJj46OnZhbHVlIHx8CisgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBjb25zdCBvcHRpb25hbDxV
PiY+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8
VCwgY29uc3Qgb3B0aW9uYWw8VT4mJj46OnZhbHVlIHx8CisgICAgICAgICAgICAgICAgICAgIHN0
ZDo6aXNfY29udmVydGlibGU8b3B0aW9uYWw8VT4mLCBUPjo6dmFsdWUgfHwKKyAgICAgICAgICAg
ICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxvcHRpb25hbDxVPiYmLCBUPjo6dmFsdWUgfHwK
KyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxjb25zdCBvcHRpb25hbDxV
PiYsIFQ+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxl
PGNvbnN0IG9wdGlvbmFsPFU+JiYsIFQ+Ojp2YWx1ZT4ge307CisKKy8vIFdoZXRoZXIgVCBpcyBj
b25zdHJ1Y3RpYmxlIG9yIGNvbnZlcnRpYmxlIG9yIGFzc2lnbmFibGUgZnJvbSBvcHRpb25hbDxV
Pi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorc3RydWN0IGlzX2NvbnN0cnVj
dGlibGVfY29udmVydGlibGVfYXNzaWduYWJsZV9mcm9tX29wdGlvbmFsCisgICAgOiBzdGQ6Omlu
dGVncmFsX2NvbnN0YW50PAorICAgICAgICAgIGJvb2wsIGlzX2NvbnN0cnVjdGlibGVfY29udmVy
dGlibGVfZnJvbV9vcHRpb25hbDxULCBVPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAg
c3RkOjppc19hc3NpZ25hYmxlPFQmLCBvcHRpb25hbDxVPiY+Ojp2YWx1ZSB8fAorICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmlzX2Fzc2lnbmFibGU8VCYsIG9wdGlvbmFsPFU+JiY+Ojp2YWx1ZSB8
fAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Fzc2lnbmFibGU8VCYsIGNvbnN0IG9wdGlv
bmFsPFU+Jj46OnZhbHVlIHx8CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfYXNzaWduYWJs
ZTxUJiwgY29uc3Qgb3B0aW9uYWw8VT4mJj46OnZhbHVlPiB7fTsKKworLy8gSGVscGVyIGZ1bmN0
aW9uIHVzZWQgYnkgW29wdGlvbmFsLnJlbG9wc10sIFtvcHRpb25hbC5jb21wX3dpdGhfdF0sCisv
LyBmb3IgY2hlY2tpbmcgd2hldGhlciBhbiBleHByZXNzaW9uIGlzIGNvbnZlcnRpYmxlIHRvIGJv
b2wuCitib29sIGNvbnZlcnRpYmxlX3RvX2Jvb2woYm9vbCk7CisKKy8vIEJhc2UgY2xhc3MgZm9y
IHN0ZDo6aGFzaDxhYnNsOjpvcHRpb25hbDxUPj46CisvLyBJZiBzdGQ6Omhhc2g8c3RkOjpyZW1v
dmVfY29uc3RfdDxUPj4gaXMgZW5hYmxlZCwgaXQgcHJvdmlkZXMgb3BlcmF0b3IoKSB0bworLy8g
Y29tcHV0ZSB0aGUgaGFzaDsgT3RoZXJ3aXNlLCBpdCBpcyBkaXNhYmxlZC4KKy8vIFJlZmVyZW5j
ZSBONDY1OSAyMy4xNC4xNSBbdW5vcmQuaGFzaF0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgPSBzaXplX3Q+CitzdHJ1Y3Qgb3B0aW9uYWxfaGFzaF9iYXNlIHsKKyAgb3B0aW9uYWxf
aGFzaF9iYXNlKCkgPSBkZWxldGU7CisgIG9wdGlvbmFsX2hhc2hfYmFzZShjb25zdCBvcHRpb25h
bF9oYXNoX2Jhc2UmKSA9IGRlbGV0ZTsKKyAgb3B0aW9uYWxfaGFzaF9iYXNlKG9wdGlvbmFsX2hh
c2hfYmFzZSYmKSA9IGRlbGV0ZTsKKyAgb3B0aW9uYWxfaGFzaF9iYXNlJiBvcGVyYXRvcj0oY29u
c3Qgb3B0aW9uYWxfaGFzaF9iYXNlJikgPSBkZWxldGU7CisgIG9wdGlvbmFsX2hhc2hfYmFzZSYg
b3BlcmF0b3I9KG9wdGlvbmFsX2hhc2hfYmFzZSYmKSA9IGRlbGV0ZTsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IG9wdGlvbmFsX2hhc2hfYmFzZTxULCBkZWNsdHlwZShzdGQ6
Omhhc2g8YWJzbDo6cmVtb3ZlX2NvbnN0X3Q8VD4gPigpKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpkZWNsdmFsPGFic2w6OnJlbW92ZV9jb25zdF90PFQ+ID4oKSkpPiB7
CisgIHVzaW5nIGFyZ3VtZW50X3R5cGUgPSBhYnNsOjpvcHRpb25hbDxUPjsKKyAgdXNpbmcgcmVz
dWx0X3R5cGUgPSBzaXplX3Q7CisgIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IGFic2w6Om9wdGlv
bmFsPFQ+JiBvcHQpIGNvbnN0IHsKKyAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6QXNz
ZXJ0SGFzaEVuYWJsZWQ8YWJzbDo6cmVtb3ZlX2NvbnN0X3Q8VD4+KCk7CisgICAgaWYgKG9wdCkg
eworICAgICAgcmV0dXJuIHN0ZDo6aGFzaDxhYnNsOjpyZW1vdmVfY29uc3RfdDxUPiA+KCkoKm9w
dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KDB4Mjk3
ODE0YWFhZDE5NmU2ZFVMTCk7CisgICAgfQorICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugb3B0
aW9uYWxfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyN1bmRlZiBBQlNMX09QVElP
TkFMX1VTRV9JTkhFUklUSU5HX0NPTlNUUlVDVE9SUworCisjZW5kaWYgIC8vIEFCU0xfVFlQRVNf
SU5URVJOQUxfT1BUSU9OQUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3Nw
YW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3NwYW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjAzYWFkNTkx
NjUzNmNlYWUzOWU0YTIzOGNjODcyNDIxYTU4YzU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvaW50ZXJuYWwvc3Bhbi5oCkBAIC0wLDAgKzEsMTI2IEBACisvLworLy8gQ29weXJpZ2h0
IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworI2lmbmRlZiBBQlNMX1RZUEVTX0lOVEVS
TkFMX1NQQU5fSF8KKyNkZWZpbmUgQUJTTF9UWVBFU19JTlRFUk5BTF9TUEFOX0hfCisKKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxzdHJpbmc+Cisj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL2FsZ29yaXRobS9hbGdvcml0
aG0uaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaCIKKyNp
bmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKworbmFtZXNwYWNlIGFic2wgeworCitu
YW1lc3BhY2Ugc3Bhbl9pbnRlcm5hbCB7CisvLyBBIGNvbnN0ZXhwciBtaW4gZnVuY3Rpb24KK2Nv
bnN0ZXhwciBzaXplX3QgTWluKHNpemVfdCBhLCBzaXplX3QgYikgbm9leGNlcHQgeyByZXR1cm4g
YSA8IGIgPyBhIDogYjsgfQorCisvLyBXcmFwcGVycyBmb3IgYWNjZXNzIHRvIGNvbnRhaW5lciBk
YXRhIHBvaW50ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIEM+Citjb25zdGV4cHIgYXV0byBHZXRE
YXRhSW1wbChDJiBjLCBjaGFyKSBub2V4Y2VwdCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNl
cykKKyAgICAtPiBkZWNsdHlwZShjLmRhdGEoKSkgeworICByZXR1cm4gYy5kYXRhKCk7Cit9CisK
Ky8vIEJlZm9yZSBDKysxNywgc3RkOjpzdHJpbmc6OmRhdGEgcmV0dXJucyBhIGNvbnN0IGNoYXIq
IGluIGFsbCBjYXNlcy4KK2lubGluZSBjaGFyKiBHZXREYXRhSW1wbChzdGQ6OnN0cmluZyYgcywg
IC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAg
aW50KSBub2V4Y2VwdCB7CisgIHJldHVybiAmc1swXTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IEM+Citjb25zdGV4cHIgYXV0byBHZXREYXRhKEMmIGMpIG5vZXhjZXB0ICAvLyBOT0xJTlQocnVu
dGltZS9yZWZlcmVuY2VzKQorICAgIC0+IGRlY2x0eXBlKEdldERhdGFJbXBsKGMsIDApKSB7Cisg
IHJldHVybiBHZXREYXRhSW1wbChjLCAwKTsKK30KKworLy8gRGV0ZWN0aW9uIGlkaW9tcyBmb3Ig
c2l6ZSgpIGFuZCBkYXRhKCkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3VzaW5nIEhhc1NpemUg
PQorICAgIHN0ZDo6aXNfaW50ZWdyYWw8YWJzbDo6ZGVjYXlfdDxkZWNsdHlwZShzdGQ6OmRlY2x2
YWw8QyY+KCkuc2l6ZSgpKT4+OworCisvLyBXZSB3YW50IHRvIGVuYWJsZSBjb252ZXJzaW9uIGZy
b20gdmVjdG9yPFQqPiB0byBTcGFuPGNvbnN0IFQqIGNvbnN0PiBidXQKKy8vIGRpc2FibGUgY29u
dmVyc2lvbiBmcm9tIHZlY3RvcjxEZXJpdmVkPiB0byBTcGFuPEJhc2U+LiBIZXJlIHdlIHVzZQor
Ly8gdGhlIGZhY3QgdGhhdCBVKiogaXMgY29udmVydGlibGUgdG8gUSogY29uc3QqIGlmIGFuZCBv
bmx5IGlmIFEgaXMgdGhlIHNhbWUKKy8vIHR5cGUgb3IgYSBtb3JlIGN2LXF1YWxpZmllZCB2ZXJz
aW9uIG9mIFUuICBXZSBhbHNvIGRlY2F5IHRoZSByZXN1bHQgdHlwZSBvZgorLy8gZGF0YSgpIHRv
IGF2b2lkIHByb2JsZW1zIHdpdGggY2xhc3NlcyB3aGljaCBoYXZlIGEgbWVtYmVyIGZ1bmN0aW9u
IGRhdGEoKQorLy8gd2hpY2ggcmV0dXJucyBhIHJlZmVyZW5jZS4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBDPgordXNpbmcgSGFzRGF0YSA9CisgICAgc3RkOjppc19jb252ZXJ0aWJs
ZTxhYnNsOjpkZWNheV90PGRlY2x0eXBlKEdldERhdGEoc3RkOjpkZWNsdmFsPEMmPigpKSk+KiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFQqIGNvbnN0Kj47CisKKy8vIEV4dHJhY3RzIHZhbHVl
IHR5cGUgZnJvbSBhIENvbnRhaW5lcgordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzdHJ1Y3QgRWxl
bWVudFR5cGUgeworICB1c2luZyB0eXBlID0gdHlwZW5hbWUgYWJzbDo6cmVtb3ZlX3JlZmVyZW5j
ZV90PEM+Ojp2YWx1ZV90eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBO
Pgorc3RydWN0IEVsZW1lbnRUeXBlPFQgKCYpW05dPiB7CisgIHVzaW5nIHR5cGUgPSBUOworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIEM+Cit1c2luZyBFbGVtZW50VCA9IHR5cGVuYW1lIEVsZW1l
bnRUeXBlPEM+Ojp0eXBlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIEVuYWJsZUlm
TXV0YWJsZSA9CisgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfY29uc3Q8VD46
OnZhbHVlLCBpbnQ+Ojp0eXBlOworCit0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFz
cyBTcGFuVCwgdHlwZW5hbWUgVD4KK2Jvb2wgRXF1YWxJbXBsKFNwYW5UPFQ+IGEsIFNwYW5UPFQ+
IGIpIHsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwgIiIpOworICBy
ZXR1cm4gYWJzbDo6ZXF1YWwoYS5iZWdpbigpLCBhLmVuZCgpLCBiLmJlZ2luKCksIGIuZW5kKCkp
OworfQorCit0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBTcGFuVCwgdHlwZW5h
bWUgVD4KK2Jvb2wgTGVzc1RoYW5JbXBsKFNwYW5UPFQ+IGEsIFNwYW5UPFQ+IGIpIHsKKyAgLy8g
V2UgY2FuJ3QgdXNlIHZhbHVlX3R5cGUgc2luY2UgdGhhdCBpcyByZW1vdmVfY3ZfdDxUPiwgc28g
d2UgZ28gdGhlIGxvbmcgd2F5CisgIC8vIGFyb3VuZC4KKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2NvbnN0PFQ+Ojp2YWx1ZSwgIiIpOworICByZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29t
cGFyZShhLmJlZ2luKCksIGEuZW5kKCksIGIuYmVnaW4oKSwgYi5lbmQoKSk7Cit9CisKKy8vIFRo
ZSBgSXNDb252ZXJ0aWJsZWAgY2xhc3NlcyBoZXJlIGFyZSBuZWVkZWQgYmVjYXVzZSBvZiB0aGUK
Ky8vIGBzdGQ6OmlzX2NvbnZlcnRpYmxlYCBidWcgaW4gbGliY3h4IHdoZW4gY29tcGlsZWQgd2l0
aCBHQ0MuIFRoaXMgYnVpbGQKKy8vIGNvbmZpZ3VyYXRpb24gaXMgdXNlZCBieSBBbmRyb2lkIE5E
SyB0b29sY2hhaW4uIFJlZmVyZW5jZSBsaW5rOgorLy8gaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzUzOC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBU
bz4KK3N0cnVjdCBJc0NvbnZlcnRpYmxlSGVscGVyIHsKKyBwcml2YXRlOgorICBzdGF0aWMgc3Rk
Ojp0cnVlX3R5cGUgdGVzdHZhbChUbyk7CisgIHN0YXRpYyBzdGQ6OmZhbHNlX3R5cGUgdGVzdHZh
bCguLi4pOworCisgcHVibGljOgorICB1c2luZyB0eXBlID0gZGVjbHR5cGUodGVzdHZhbChzdGQ6
OmRlY2x2YWw8RnJvbT4oKSkpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVu
YW1lIFRvPgorc3RydWN0IElzQ29udmVydGlibGUgOiBJc0NvbnZlcnRpYmxlSGVscGVyPEZyb20s
IFRvPjo6dHlwZSB7fTsKKworLy8gVE9ETyh6aGFuZ3h5KTogcmVwbGFjZSBgSXNDb252ZXJ0aWJs
ZWAgd2l0aCBgc3RkOjppc19jb252ZXJ0aWJsZWAgb25jZSB0aGUKKy8vIG9sZGVyIHZlcnNpb24g
b2YgbGliY3h4IGlzIG5vdCBzdXBwb3J0ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlw
ZW5hbWUgVG8+Cit1c2luZyBFbmFibGVJZkNvbnZlcnRpYmxlVG8gPQorICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPElzQ29udmVydGlibGU8RnJvbSwgVG8+Ojp2YWx1ZT46OnR5cGU7Cit9ICAv
LyBuYW1lc3BhY2Ugc3Bhbl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlm
ICAvLyBBQlNMX1RZUEVTX0lOVEVSTkFMX1NQQU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
L2ludGVybmFsL3ZhcmlhbnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3ZhcmlhbnQuaAppbmRl
eCBlZmY0ZmVmZWQ0MDlkOTJkNTA3ZGJhODY2OWZlMTIzMWVkNGNiMTVlLi4xOWRlMmUxMzc1OTM2
MzIyYzliZmIyMWEwMWNlZWJmMDdjZjQyYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9pbnRl
cm5hbC92YXJpYW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvaW50ZXJuYWwvdmFyaWFudC5oCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yMDQsNyArMjA0LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIE9wLCBjbGFzcy4uLiBWcz4KIHVzaW5nIFZpc2l0SW5kaWNlc1Jlc3Vs
dFQgPSB0eXBlbmFtZSBWaXNpdEluZGljZXNSZXN1bHRJbXBsPE9wLCBWcy4uLj46OnR5cGU7CiAK
IHRlbXBsYXRlIDxjbGFzcyBSZXR1cm5UeXBlLCBjbGFzcyBGdW5jdGlvbk9iamVjdCwgY2xhc3Mg
RW5kSW5kaWNlcywKLSAgICAgICAgICBzdGQ6OnNpemVfdC4uLiBCb3VuZEluZGljZXM+CisgICAg
ICAgICAgY2xhc3MgQm91bmRJbmRpY2VzPgogc3RydWN0IE1ha2VWaXNpdGF0aW9uTWF0cml4Owog
CiB0ZW1wbGF0ZSA8Y2xhc3MgUmV0dXJuVHlwZSwgY2xhc3MgRnVuY3Rpb25PYmplY3QsIHN0ZDo6
c2l6ZV90Li4uIEluZGljZXM+CkBAIC0yMTgsNyArMjE4LDcgQEAgY29uc3RleHByIFJldHVyblR5
cGUgY2FsbF93aXRoX2luZGljZXMoRnVuY3Rpb25PYmplY3QmJiBmdW5jdGlvbikgewogCiB0ZW1w
bGF0ZSA8Y2xhc3MgUmV0dXJuVHlwZSwgY2xhc3MgRnVuY3Rpb25PYmplY3QsIHN0ZDo6c2l6ZV90
Li4uIEJvdW5kSW5kaWNlcz4KIHN0cnVjdCBNYWtlVmlzaXRhdGlvbk1hdHJpeDxSZXR1cm5UeXBl
LCBGdW5jdGlvbk9iamVjdCwgaW5kZXhfc2VxdWVuY2U8PiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCb3VuZEluZGljZXMuLi4+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleF9zZXF1ZW5jZTxCb3VuZEluZGljZXMuLi4+PiB7CiAgIHVzaW5nIFJlc3VsdFR5cGUgPSBS
ZXR1cm5UeXBlICgqKShGdW5jdGlvbk9iamVjdCYmKTsKICAgc3RhdGljIGNvbnN0ZXhwciBSZXN1
bHRUeXBlIFJ1bigpIHsKICAgICByZXR1cm4gJmNhbGxfd2l0aF9pbmRpY2VzPFJldHVyblR5cGUs
IEZ1bmN0aW9uT2JqZWN0LApAQCAtMjI2LDI0ICsyMjYsMzQgQEAgc3RydWN0IE1ha2VWaXNpdGF0
aW9uTWF0cml4PFJldHVyblR5cGUsIEZ1bmN0aW9uT2JqZWN0LCBpbmRleF9zZXF1ZW5jZTw+LAog
ICB9CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXMsIHN0ZDo6c2l6ZV90IEo+CitzdHJ1Y3Qg
QXBwZW5kVG9JbmRleFNlcXVlbmNlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXMsIHN0ZDo6c2l6
ZV90IEo+Cit1c2luZyBBcHBlbmRUb0luZGV4U2VxdWVuY2VUID0gdHlwZW5hbWUgQXBwZW5kVG9J
bmRleFNlcXVlbmNlPElzLCBKPjo6dHlwZTsKKwordGVtcGxhdGUgPHN0ZDo6c2l6ZV90Li4uIElz
LCBzdGQ6OnNpemVfdCBKPgorc3RydWN0IEFwcGVuZFRvSW5kZXhTZXF1ZW5jZTxpbmRleF9zZXF1
ZW5jZTxJcy4uLj4sIEo+IHsKKyAgdXNpbmcgdHlwZSA9IGluZGV4X3NlcXVlbmNlPElzLi4uLCBK
PjsKK307CisKIHRlbXBsYXRlIDxjbGFzcyBSZXR1cm5UeXBlLCBjbGFzcyBGdW5jdGlvbk9iamVj
dCwgY2xhc3MgRW5kSW5kaWNlcywKLSAgICAgICAgICBjbGFzcyBDdXJySW5kaWNlcywgc3RkOjpz
aXplX3QuLi4gQm91bmRJbmRpY2VzPgorICAgICAgICAgIGNsYXNzIEN1cnJJbmRpY2VzLCBjbGFz
cyBCb3VuZEluZGljZXM+CiBzdHJ1Y3QgTWFrZVZpc2l0YXRpb25NYXRyaXhJbXBsOwogCi10ZW1w
bGF0ZSA8Y2xhc3MgUmV0dXJuVHlwZSwgY2xhc3MgRnVuY3Rpb25PYmplY3QsIHN0ZDo6c2l6ZV90
Li4uIEVuZEluZGljZXMsCi0gICAgICAgICAgc3RkOjpzaXplX3QuLi4gQ3VyckluZGljZXMsIHN0
ZDo6c2l6ZV90Li4uIEJvdW5kSW5kaWNlcz4KLXN0cnVjdCBNYWtlVmlzaXRhdGlvbk1hdHJpeElt
cGw8Ci0gICAgUmV0dXJuVHlwZSwgRnVuY3Rpb25PYmplY3QsIGluZGV4X3NlcXVlbmNlPEVuZElu
ZGljZXMuLi4+LAotICAgIGluZGV4X3NlcXVlbmNlPEN1cnJJbmRpY2VzLi4uPiwgQm91bmRJbmRp
Y2VzLi4uPiB7Cit0ZW1wbGF0ZSA8Y2xhc3MgUmV0dXJuVHlwZSwgY2xhc3MgRnVuY3Rpb25PYmpl
Y3QsIGNsYXNzIEVuZEluZGljZXMsCisgICAgICAgICAgc3RkOjpzaXplX3QuLi4gQ3VyckluZGlj
ZXMsIGNsYXNzIEJvdW5kSW5kaWNlcz4KK3N0cnVjdCBNYWtlVmlzaXRhdGlvbk1hdHJpeEltcGw8
UmV0dXJuVHlwZSwgRnVuY3Rpb25PYmplY3QsIEVuZEluZGljZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4X3NlcXVlbmNlPEN1cnJJbmRpY2VzLi4uPiwgQm91bmRJbmRp
Y2VzPiB7CiAgIHVzaW5nIFJlc3VsdFR5cGUgPSBTaW1wbGVBcnJheTwKLSAgICAgIHR5cGVuYW1l
IE1ha2VWaXNpdGF0aW9uTWF0cml4PFJldHVyblR5cGUsIEZ1bmN0aW9uT2JqZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfc2VxdWVuY2U8RW5kSW5kaWNlcy4u
Lj4+OjpSZXN1bHRUeXBlLAorICAgICAgdHlwZW5hbWUgTWFrZVZpc2l0YXRpb25NYXRyaXg8UmV0
dXJuVHlwZSwgRnVuY3Rpb25PYmplY3QsIEVuZEluZGljZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleF9zZXF1ZW5jZTw+Pjo6UmVzdWx0VHlwZSwKICAgICAgIHNp
emVvZi4uLihDdXJySW5kaWNlcyk+OwogCiAgIHN0YXRpYyBjb25zdGV4cHIgUmVzdWx0VHlwZSBS
dW4oKSB7Ci0gICAgcmV0dXJuIHt7TWFrZVZpc2l0YXRpb25NYXRyaXg8UmV0dXJuVHlwZSwgRnVu
Y3Rpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfc2Vx
dWVuY2U8RW5kSW5kaWNlcy4uLj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Qm91bmRJbmRpY2VzLi4uLCBDdXJySW5kaWNlcz46OlJ1bigpLi4ufX07CisgICAgcmV0dXJuIHt7
TWFrZVZpc2l0YXRpb25NYXRyaXg8CisgICAgICAgIFJldHVyblR5cGUsIEZ1bmN0aW9uT2JqZWN0
LCBFbmRJbmRpY2VzLAorICAgICAgICBBcHBlbmRUb0luZGV4U2VxdWVuY2VUPEJvdW5kSW5kaWNl
cywgQ3VyckluZGljZXM+Pjo6UnVuKCkuLi59fTsKICAgfQogfTsKIApAQCAtMjUxLDEwICsyNjEs
MTEgQEAgdGVtcGxhdGUgPGNsYXNzIFJldHVyblR5cGUsIGNsYXNzIEZ1bmN0aW9uT2JqZWN0LCBz
dGQ6OnNpemVfdCBIZWFkRW5kSW5kZXgsCiAgICAgICAgICAgc3RkOjpzaXplX3QuLi4gVGFpbEVu
ZEluZGljZXMsIHN0ZDo6c2l6ZV90Li4uIEJvdW5kSW5kaWNlcz4KIHN0cnVjdCBNYWtlVmlzaXRh
dGlvbk1hdHJpeDxSZXR1cm5UeXBlLCBGdW5jdGlvbk9iamVjdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleF9zZXF1ZW5jZTxIZWFkRW5kSW5kZXgsIFRhaWxFbmRJbmRpY2VzLi4u
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3VuZEluZGljZXMuLi4+Ci0gICAgOiBN
YWtlVmlzaXRhdGlvbk1hdHJpeEltcGw8Ci0gICAgICAgICAgUmV0dXJuVHlwZSwgRnVuY3Rpb25P
YmplY3QsIGluZGV4X3NlcXVlbmNlPFRhaWxFbmRJbmRpY2VzLi4uPiwKLSAgICAgICAgICBhYnNs
OjptYWtlX2luZGV4X3NlcXVlbmNlPEhlYWRFbmRJbmRleD4sIEJvdW5kSW5kaWNlcy4uLj4ge307
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfc2VxdWVuY2U8Qm91bmRJbmRpY2Vz
Li4uPj4KKyAgICA6IE1ha2VWaXNpdGF0aW9uTWF0cml4SW1wbDxSZXR1cm5UeXBlLCBGdW5jdGlv
bk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleF9zZXF1ZW5jZTxU
YWlsRW5kSW5kaWNlcy4uLj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
bWFrZV9pbmRleF9zZXF1ZW5jZTxIZWFkRW5kSW5kZXg+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4X3NlcXVlbmNlPEJvdW5kSW5kaWNlcy4uLj4+IHt9OwogCiBzdHJ1Y3Qg
VW5yZWFjaGFibGVTd2l0Y2hDYXNlIHsKICAgdGVtcGxhdGUgPGNsYXNzIE9wPgpAQCAtNDIzLDcg
KzQzNCw4IEBAIHN0cnVjdCBWaXNpdEluZGljZXNGYWxsYmFjayB7CiAgIHN0YXRpYyBWaXNpdElu
ZGljZXNSZXN1bHRUPE9wLCBTaXplVC4uLj4gUnVuKE9wJiYgb3AsIFNpemVULi4uIGluZGljZXMp
IHsKICAgICByZXR1cm4gQWNjZXNzU2ltcGxlQXJyYXkoCiAgICAgICAgIE1ha2VWaXNpdGF0aW9u
TWF0cml4PFZpc2l0SW5kaWNlc1Jlc3VsdFQ8T3AsIFNpemVULi4uPiwgT3AsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4X3NlcXVlbmNlPChFbmRJbmRpY2VzICsgMSkuLi4+Pjo6
UnVuKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4X3NlcXVlbmNlPChFbmRJ
bmRpY2VzICsgMSkuLi4+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleF9zZXF1
ZW5jZTw+Pjo6UnVuKCksCiAgICAgICAgIChpbmRpY2VzICsgMSkuLi4pKGFic2w6OmZvcndhcmQ8
T3A+KG9wKSk7CiAgIH0KIH07CkBAIC04MzcsOCArODQ5LDggQEAgc3RydWN0IEltYWdpbmFyeUZ1
bjx2YXJpYW50PEgsIFQuLi4+LCBJPiA6IEltYWdpbmFyeUZ1bjx2YXJpYW50PFQuLi4+LCBJICsg
MT4gewogICAvLyBOT1RFOiBjb25zdCYgYW5kICYmIGFyZSB1c2VkIGluc3RlYWQgb2YgYnktdmFs
dWUgZHVlIHRvIGxhY2sgb2YgZ3VhcmFudGVlZAogICAvLyBtb3ZlIGVsaXNpb24gb2YgQysrMTcu
IFRoaXMgbWF5IGhhdmUgb3RoZXIgbWlub3IgZGlmZmVyZW5jZXMsIGJ1dCB0ZXN0cwogICAvLyBw
YXNzLgotICBzdGF0aWMgU2l6ZVQ8ST4gUnVuKGNvbnN0IEgmKTsKLSAgc3RhdGljIFNpemVUPEk+
IFJ1bihIJiYpOworICBzdGF0aWMgU2l6ZVQ8ST4gUnVuKGNvbnN0IEgmLCBTaXplVDxJPik7Cisg
IHN0YXRpYyBTaXplVDxJPiBSdW4oSCYmLCBTaXplVDxJPik7CiB9OwogCiAvLyBUaGUgZm9sbG93
aW5nIG1ldGFmdW5jdGlvbnMgYXJlIHVzZWQgaW4gY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQK
QEAgLTg2MCw3ICs4NzIsOCBAQCBzdHJ1Y3QgQ29udmVyc2lvbklzUG9zc2libGVJbXBsIDogc3Rk
OjpmYWxzZV90eXBlIHt9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVmFyaWFudCwgY2xhc3MgVD4KIHN0
cnVjdCBDb252ZXJzaW9uSXNQb3NzaWJsZUltcGw8Ci0gICAgVmFyaWFudCwgVCwgdm9pZF90PGRl
Y2x0eXBlKEltYWdpbmFyeUZ1bjxWYXJpYW50Pjo6UnVuKHN0ZDo6ZGVjbHZhbDxUPigpKSk+Pgor
ICAgIFZhcmlhbnQsIFQsCisgICAgdm9pZF90PGRlY2x0eXBlKEltYWdpbmFyeUZ1bjxWYXJpYW50
Pjo6UnVuKHN0ZDo6ZGVjbHZhbDxUPigpLCB7fSkpPj4KICAgICA6IHN0ZDo6dHJ1ZV90eXBlIHt9
OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVmFyaWFudCwgY2xhc3MgVD4KQEAgLTg2OCw4ICs4ODEsOSBA
QCBzdHJ1Y3QgQ29udmVyc2lvbklzUG9zc2libGUgOiBDb252ZXJzaW9uSXNQb3NzaWJsZUltcGw8
VmFyaWFudCwgVD46OnR5cGUge307CiAKIHRlbXBsYXRlIDxjbGFzcyBWYXJpYW50LCBjbGFzcyBU
Pgogc3RydWN0IEluZGV4T2ZDb25zdHJ1Y3RlZFR5cGU8Ci0gICAgVmFyaWFudCwgVCwgdm9pZF90
PGRlY2x0eXBlKEltYWdpbmFyeUZ1bjxWYXJpYW50Pjo6UnVuKHN0ZDo6ZGVjbHZhbDxUPigpKSk+
PgotICAgIDogZGVjbHR5cGUoSW1hZ2luYXJ5RnVuPFZhcmlhbnQ+OjpSdW4oc3RkOjpkZWNsdmFs
PFQ+KCkpKSB7fTsKKyAgICBWYXJpYW50LCBULAorICAgIHZvaWRfdDxkZWNsdHlwZShJbWFnaW5h
cnlGdW48VmFyaWFudD46OlJ1bihzdGQ6OmRlY2x2YWw8VD4oKSwge30pKT4+CisgICAgOiBkZWNs
dHlwZShJbWFnaW5hcnlGdW48VmFyaWFudD46OlJ1bihzdGQ6OmRlY2x2YWw8VD4oKSwge30pKSB7
fTsKIAogdGVtcGxhdGUgPHN0ZDo6c2l6ZV90Li4uIElzPgogc3RydWN0IENvbnRhaW5zVmFyaWFu
dE5Qb3MKQEAgLTEyMzQsMjMgKzEyNDgsMjkgQEAgdXNpbmcgVmFyaWFudENvcHlCYXNlID0gYWJz
bDo6Y29uZGl0aW9uYWxfdDwKIC8vIEJhc2UgdGhhdCBpcyBkZXBlbmRlbnQgb24gd2hldGhlciBv
ciBub3QgdGhlIG1vdmUtYXNzaWduIGNhbiBiZSB0cml2aWFsLgogdGVtcGxhdGUgPGNsYXNzLi4u
IFQ+CiB1c2luZyBWYXJpYW50TW92ZUFzc2lnbkJhc2UgPSBhYnNsOjpjb25kaXRpb25hbF90PAot
ICAgIGFic2w6OmRpc2p1bmN0aW9uPGFic2w6OmNvbmp1bmN0aW9uPGFic2w6OmlzX21vdmVfYXNz
aWduYWJsZTxVbmlvbjxULi4uPj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VW5pb248VC4uLj4+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfZGVzdHJ1Y3RpYmxlPFVuaW9u
PFQuLi4+Pj4sCi0gICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bmVnYXRpb248YWJzbDo6Y29u
anVuY3Rpb248Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfbW92ZV9jb25zdHJ1
Y3RpYmxlPFQ+Li4uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjppc19tb3ZlX2Fz
c2lnbmFibGU8VD4uLi4+Pj46OnZhbHVlLAorICAgIGFic2w6OmRpc2p1bmN0aW9uPAorICAgICAg
ICBhYnNsOjpjb25qdW5jdGlvbjxhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8VW5pb248VC4uLj4+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxV
bmlvbjxULi4uPj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfZGVzdHJ1Y3Rp
YmxlPFVuaW9uPFQuLi4+Pj4sCisgICAgICAgIGFic2w6Om5lZ2F0aW9uPGFic2w6OmNvbmp1bmN0
aW9uPHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Li4uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBXZSdyZSBub3QgcXVhbGlmeWluZyB0aGlz
IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWJzbDo6
IGJlY2F1c2UgaXQgZG9lc24ndCBjb21waWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHVuZGVyIE1TVkMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzX21vdmVfYXNzaWduYWJsZTxUPi4uLj4+Pjo6dmFsdWUsCiAgICAgVmFy
aWFudENvcHlCYXNlPFQuLi4+LCBWYXJpYW50TW92ZUFzc2lnbkJhc2VOb250cml2aWFsPFQuLi4+
PjsKIAogLy8gQmFzZSB0aGF0IGlzIGRlcGVuZGVudCBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgY29w
eS1hc3NpZ24gY2FuIGJlIHRyaXZpYWwuCiB0ZW1wbGF0ZSA8Y2xhc3MuLi4gVD4KIHVzaW5nIFZh
cmlhbnRDb3B5QXNzaWduQmFzZSA9IGFic2w6OmNvbmRpdGlvbmFsX3Q8Ci0gICAgYWJzbDo6ZGlz
anVuY3Rpb248YWJzbDo6Y29uanVuY3Rpb248YWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPFVuaW9u
PFQuLi4+PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Omlz
X2NvcHlfY29uc3RydWN0aWJsZTxVbmlvbjxULi4uPj4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjppc19kZXN0cnVjdGlibGU8VW5pb248VC4uLj4+PiwKLSAg
ICAgICAgICAgICAgICAgICAgICBhYnNsOjpuZWdhdGlvbjxhYnNsOjpjb25qdW5jdGlvbjwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8VD4uLi4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxUPi4u
Lj4+Pjo6dmFsdWUsCisgICAgYWJzbDo6ZGlzanVuY3Rpb248CisgICAgICAgIGFic2w6OmNvbmp1
bmN0aW9uPGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxVbmlvbjxULi4uPj4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPFVuaW9uPFQuLi4+PiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19kZXN0cnVjdGlibGU8VW5pb248VC4u
Lj4+PiwKKyAgICAgICAgYWJzbDo6bmVnYXRpb248YWJzbDo6Y29uanVuY3Rpb248c3RkOjppc19j
b3B5X2NvbnN0cnVjdGlibGU8VD4uLi4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIE5vdGU6IFdlJ3JlIG5vdCBxdWFsaWZ5aW5nIHRoaXMgd2l0aAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhYnNsOjogYmVjYXVzZSBpdCBk
b2Vzbid0IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdW5kZXIgTVNWQy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aXNfY29weV9hc3NpZ25hYmxlPFQ+Li4uPj4+Ojp2YWx1ZSwKICAgICBWYXJpYW50TW92ZUFzc2ln
bkJhc2U8VC4uLj4sIFZhcmlhbnRDb3B5QXNzaWduQmFzZU5vbnRyaXZpYWw8VC4uLj4+OwogCiB0
ZW1wbGF0ZSA8Y2xhc3MuLi4gVD4KQEAgLTE1NDIsOCArMTU2Miw4IEBAIHN0cnVjdCBTd2FwU2Ft
ZUluZGV4IHsKICAgdmFyaWFudDxUeXBlcy4uLj4qIHc7CiAgIHRlbXBsYXRlIDxzdGQ6OnNpemVf
dCBJPgogICB2b2lkIG9wZXJhdG9yKCkoU2l6ZVQ8ST4pIGNvbnN0IHsKLSAgICB1c2luZyBzdGQ6
OnN3YXA7Ci0gICAgc3dhcChWYXJpYW50Q29yZUFjY2Vzczo6QWNjZXNzPEk+KCp2KSwgVmFyaWFu
dENvcmVBY2Nlc3M6OkFjY2VzczxJPigqdykpOworICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpT
d2FwKFZhcmlhbnRDb3JlQWNjZXNzOjpBY2Nlc3M8ST4oKnYpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhcmlhbnRDb3JlQWNjZXNzOjpBY2Nlc3M8ST4oKncpKTsKICAgfQogCiAg
IHZvaWQgb3BlcmF0b3IoKShTaXplVDx2YXJpYW50X25wb3M+KSBjb25zdCB7fQpAQCAtMTU5OCwx
MSArMTYxOCwxMiBAQCBzdHJ1Y3QgVmFyaWFudEhhc2hWaXNpdG9yIHsKIHRlbXBsYXRlIDx0eXBl
bmFtZSBWYXJpYW50LCB0eXBlbmFtZS4uLiBUcz4KIHN0cnVjdCBWYXJpYW50SGFzaEJhc2U8VmFy
aWFudCwKICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6ZW5hYmxlX2lmX3Q8YWJzbDo6Y29u
anVuY3Rpb248Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5h
bDo6SXNIYXNoRW5hYmxlZDxUcz4uLi4+Ojp2YWx1ZT4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoYWJsZTxUcz4uLi4+Ojp2YWx1ZT4sCiAg
ICAgICAgICAgICAgICAgICAgICAgIFRzLi4uPiB7CiAgIHVzaW5nIGFyZ3VtZW50X3R5cGUgPSBW
YXJpYW50OwogICB1c2luZyByZXN1bHRfdHlwZSA9IHNpemVfdDsKICAgc2l6ZV90IG9wZXJhdG9y
KCkoY29uc3QgVmFyaWFudCYgdmFyKSBjb25zdCB7CisgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6
OkFzc2VydEhhc2hFbmFibGVkPFRzLi4uPigpOwogICAgIGlmICh2YXIudmFsdWVsZXNzX2J5X2V4
Y2VwdGlvbigpKSB7CiAgICAgICByZXR1cm4gMjM5Nzk5ODg0OwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzL29wdGlvbmFsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMjcyOTA0MTk5MGJiZTE2MmZlMjBkOGYyOGJmOTQw
N2I3NTUwODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXMvb3B0aW9uYWwuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCi0vLwotLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0vLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCi0vLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLS8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotLy8KLS8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKLS8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0vLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLS8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKLS8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0jaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgotCi0jaWZuZGVmIEFCU0xfSEFWRV9TVERfT1BUSU9OQUwKLW5hbWVz
cGFjZSBhYnNsIHsKLQotbnVsbG9wdF90Ojppbml0X3QgbnVsbG9wdF90Ojppbml0OwotZXh0ZXJu
IGNvbnN0IG51bGxvcHRfdCBudWxsb3B0e251bGxvcHRfdDo6aW5pdH07Ci0KLX0gIC8vIG5hbWVz
cGFjZSBhYnNsCi0jZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfT1BUSU9OQUwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzL29wdGlvbmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbC5oCmluZGV4IDE0
MjEwMDE4ODE1YzRjNjYxMjA3ZmU0MGY0NTJiMDEzNWM5YTBhZjMuLmVkOGZhZjk3YTFkNGViZmVh
Yzg2OGIzY2U1NDQwODMwZTJjYjY2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFs
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApAQCAtMzUsMTIgKzM1LDEyIEBACiAjaWZuZGVmIEFCU0xfVFlQRVNf
T1BUSU9OQUxfSF8KICNkZWZpbmUgQUJTTF9UWVBFU19PUFRJT05BTF9IXwogCi0jaW5jbHVkZSAi
YWJzbC9iYXNlL2NvbmZpZy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIgICAvLyBU
T0RPKGNhbGFicmVzZSkgSVdZVSByZW1vdmFsPwogI2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGls
aXR5LmgiCiAKICNpZmRlZiBBQlNMX0hBVkVfU1REX09QVElPTkFMCiAKLSNpbmNsdWRlIDxvcHRp
b25hbD4KKyNpbmNsdWRlIDxvcHRpb25hbD4gIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKIAogbmFt
ZXNwYWNlIGFic2wgewogdXNpbmcgc3RkOjpiYWRfb3B0aW9uYWxfYWNjZXNzOwpAQCAtNTUsNDQg
KzU1LDMyIEBAIHVzaW5nIHN0ZDo6bnVsbG9wdDsKICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KLSNpbmNsdWRlIDxu
ZXc+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1
ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5
LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2lubGluZV92YXJpYWJsZS5oIgogI2lu
Y2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgogI2luY2x1ZGUgImFic2wvdHlwZXMvYmFk
X29wdGlvbmFsX2FjY2Vzcy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvaW50ZXJuYWwvb3B0aW9u
YWwuaCIKIAotLy8gQUJTTF9PUFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMKK25h
bWVzcGFjZSBhYnNsIHsKKworLy8gbnVsbG9wdF90CiAvLwotLy8gSW5oZXJpdGluZyBjb25zdHJ1
Y3RvcnMgaXMgc3VwcG9ydGVkIGluIEdDQyA0LjgrLCBDbGFuZyAzLjMrIGFuZCBNU1ZDIDIwMTUu
Ci0vLyBfX2NwcF9pbmhlcml0aW5nX2NvbnN0cnVjdG9ycyBpcyBhIHByZWRlZmluZWQgbWFjcm8g
YW5kIGEgcmVjb21tZW5kZWQgd2F5IHRvCi0vLyBjaGVjayBmb3IgdGhpcyBsYW5ndWFnZSBmZWF0
dXJlLCBidXQgR0NDIGRvZXNuJ3Qgc3VwcG9ydCBpdCB1bnRpbCA1LjAgYW5kCi0vLyBDbGFuZyBk
b2Vzbid0IHN1cHBvcnQgaXQgdW50aWwgMy42LgotLy8gQWxzbywgTVNWQyAyMDE1IGhhcyBhIGJ1
ZzogaXQgZG9lc24ndCBpbmhlcml0IHRoZSBjb25zdGV4cHIgdGVtcGxhdGUKLS8vIGNvbnN0cnVj
dG9yLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlIHdvbid0IHdvcmsgb24gTVNWQyAy
MDE1IFVwZGF0ZTM6Ci0vLyBzdHJ1Y3QgQmFzZSB7Ci0vLyAgIGludCB0OwotLy8gICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLS8vICAgY29uc3RleHByIEJhc2UoVCB0XykgOiB0KHRfKSB7fQotLy8g
fTsKLS8vIHN0cnVjdCBGb28gOiBCYXNlIHsKLS8vICAgdXNpbmcgQmFzZTo6QmFzZTsKLS8vIH0K
LS8vIGNvbnN0ZXhwciBGb28gZm9vKDApOyAgLy8gZG9lc24ndCB3b3JrIG9uIE1TVkMgMjAxNQot
I2lmIGRlZmluZWQoX19jbGFuZ19fKQotI2lmIF9faGFzX2ZlYXR1cmUoY3h4X2luaGVyaXRpbmdf
Y29uc3RydWN0b3JzKQotI2RlZmluZSBBQlNMX09QVElPTkFMX1VTRV9JTkhFUklUSU5HX0NPTlNU
UlVDVE9SUyAxCi0jZW5kaWYKLSNlbGlmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAoX19HTlVDX18gPiA0IHx8IF9f
R05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gOCkpIHx8IFwKLSAgICAoX19jcHBfaW5o
ZXJpdGluZ19jb25zdHJ1Y3RvcnMgPj0gMjAwODAyKSB8fCAgICAgICAgICAgICAgICAgIFwKLSAg
ICAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTkxMCkKLSNkZWZpbmUgQUJTTF9P
UFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMgMQotI2VuZGlmCisvLyBDbGFzcyB0
eXBlIGZvciBgYWJzbDo6bnVsbG9wdGAgdXNlZCB0byBpbmRpY2F0ZSBhbiBgYWJzbDo6b3B0aW9u
YWw8VD5gIHR5cGUKKy8vIHRoYXQgZG9lcyBub3QgY29udGFpbiBhIHZhbHVlLgorc3RydWN0IG51
bGxvcHRfdCB7CisgIC8vIEl0IG11c3Qgbm90IGJlIGRlZmF1bHQtY29uc3RydWN0aWJsZSB0byBh
dm9pZCBhbWJpZ3VpdHkgZm9yIG9wdCA9IHt9LgorICBleHBsaWNpdCBjb25zdGV4cHIgbnVsbG9w
dF90KG9wdGlvbmFsX2ludGVybmFsOjppbml0X3QpIG5vZXhjZXB0IHt9Cit9OwogCi1uYW1lc3Bh
Y2UgYWJzbCB7CisvLyBudWxsb3B0CisvLworLy8gQSB0YWcgY29uc3RhbnQgb2YgdHlwZSBgYWJz
bDo6bnVsbG9wdF90YCB1c2VkIHRvIGluZGljYXRlIGFuIGVtcHR5CisvLyBgYWJzbDo6b3B0aW9u
YWxgIGluIGNlcnRhaW4gZnVuY3Rpb25zLCBzdWNoIGFzIGNvbnN0cnVjdGlvbiBvciBhc3NpZ25t
ZW50LgorQUJTTF9JTlRFUk5BTF9JTkxJTkVfQ09OU1RFWFBSKG51bGxvcHRfdCwgbnVsbG9wdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsb3B0X3Qob3B0aW9uYWxfaW50ZXJu
YWw6OmluaXRfdCgpKSk7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBhYnNsOjpvcHRp
b25hbApAQCAtMTE0LDEwICsxMDIsNiBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAgICAgIG5lZWQg
dGhlIGlubGluZSB2YXJpYWJsZSBzdXBwb3J0IGluIEMrKzE3IGZvciBleHRlcm5hbCBsaW5rYWdl
LgogLy8gICAgKiBUaHJvd3MgYGFic2w6OmJhZF9vcHRpb25hbF9hY2Nlc3NgIGluc3RlYWQgb2YK
IC8vICAgICAgYHN0ZDo6YmFkX29wdGlvbmFsX2FjY2Vzc2AuCi0vLyAgICAqIGBvcHRpb25hbDo6
c3dhcCgpYCBhbmQgYGFic2w6OnN3YXAoKWAgcmVsaWVzIG9uCi0vLyAgICAgIGBzdGQ6OmlzXyhu
b3Rocm93Xylzd2FwcGFibGUoKWAsIHdoaWNoIGhhcyBiZWVuIGludHJvZHVjZWQgaW4gQysrMTcu
Ci0vLyAgICAgIEFzIGEgd29ya2Fyb3VuZCwgd2UgYXNzdW1lIGBpc19zd2FwcGFibGUoKWAgaXMg
YWx3YXlzIGB0cnVlYAotLy8gICAgICBhbmQgYGlzX25vdGhyb3dfc3dhcHBhYmxlKClgIGlzIHRo
ZSBzYW1lIGFzIGBzdGQ6OmlzX3RyaXZpYWwoKWAuCiAvLyAgICAqIGBtYWtlX29wdGlvbmFsKClg
IGNhbm5vdCBiZSBkZWNsYXJlZCBgY29uc3RleHByYCBkdWUgdG8gdGhlIGFic2VuY2Ugb2YKIC8v
ICAgICAgZ3VhcmFudGVlZCBjb3B5IGVsaXNpb24uCiAvLyAgICAqIFRoZSBtb3ZlIGNvbnN0cnVj
dG9yJ3MgYG5vZXhjZXB0YCBzcGVjaWZpY2F0aW9uIGlzIHN0cm9uZ2VyLCBpLmUuIGlmIHRoZQpA
QCAtMTI3LDM2NiArMTExLDEzIEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vICAgICAgIGEpIG1vdmUg
Y29uc3RydWN0b3JzIHNob3VsZCBvbmx5IHRocm93IGR1ZSB0byBhbGxvY2F0aW9uIGZhaWx1cmUg
YW5kCiAvLyAgICAgICBiKSBpZiBUJ3MgbW92ZSBjb25zdHJ1Y3RvciBhbGxvY2F0ZXMsIGl0IHVz
ZXMgdGhlIHNhbWUgYWxsb2NhdGlvbgogLy8gICAgICAgICAgZnVuY3Rpb24gYXMgdGhlIGRlZmF1
bHQgYWxsb2NhdG9yLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBvcHRpb25hbDsKLQot
Ly8gbnVsbG9wdF90Ci0vLwotLy8gQ2xhc3MgdHlwZSBmb3IgYGFic2w6Om51bGxvcHRgIHVzZWQg
dG8gaW5kaWNhdGUgYW4gYGFic2w6Om9wdGlvbmFsPFQ+YCB0eXBlCi0vLyB0aGF0IGRvZXMgbm90
IGNvbnRhaW4gYSB2YWx1ZS4KLXN0cnVjdCBudWxsb3B0X3QgewotICBzdHJ1Y3QgaW5pdF90IHt9
OwotICBzdGF0aWMgaW5pdF90IGluaXQ7Ci0KLSAgLy8gSXQgbXVzdCBub3QgYmUgZGVmYXVsdC1j
b25zdHJ1Y3RpYmxlIHRvIGF2b2lkIGFtYmlndWl0eSBmb3Igb3B0ID0ge30uCi0gIC8vIE5vdGUg
dGhlIG5vbi1jb25zdCByZWZlcmVuY2UsIHdoaWNoIGlzIHRvIGVsaW1pbmF0ZSBhbWJpZ3VpdHkg
Zm9yIGNvZGUKLSAgLy8gbGlrZToKLSAgLy8KLSAgLy8gc3RydWN0IFMgeyBpbnQgdmFsdWU7IH07
Ci0gIC8vCi0gIC8vIHZvaWQgVGVzdCgpIHsKLSAgLy8gICBvcHRpb25hbDxTPiBvcHQ7Ci0gIC8v
ICAgb3B0ID0ge3t9fTsKLSAgLy8gfQotICBleHBsaWNpdCBjb25zdGV4cHIgbnVsbG9wdF90KGlu
aXRfdCYgLyp1bnVzZWQqLykge30KLX07Ci0KLS8vIG51bGxvcHQKIC8vCi0vLyBBIHRhZyBjb25z
dGFudCBvZiB0eXBlIGBhYnNsOjpudWxsb3B0X3RgIHVzZWQgdG8gaW5kaWNhdGUgYW4gZW1wdHkK
LS8vIGBhYnNsOjpvcHRpb25hbGAgaW4gY2VydGFpbiBmdW5jdGlvbnMsIHN1Y2ggYXMgY29uc3Ry
dWN0aW9uIG9yIGFzc2lnbm1lbnQuCi1leHRlcm4gY29uc3QgbnVsbG9wdF90IG51bGxvcHQ7Ci0K
LW5hbWVzcGFjZSBvcHRpb25hbF9pbnRlcm5hbCB7Ci0KLXN0cnVjdCBlbXB0eV9zdHJ1Y3Qge307
Ci0vLyBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZGF0YSBpbiBvcHRpb25hbDxUPi4KLS8vIEl0IGlz
IHNwZWNpYWxpemVkIGJhc2VkIG9uIHdoZXRoZXIgVCBpcyB0cml2aWFsbHkgZGVzdHJ1Y3RpYmxl
LgotLy8gVGhpcyBpcyB0aGUgc3BlY2lhbGl6YXRpb24gZm9yIG5vbiB0cml2aWFsbHkgZGVzdHJ1
Y3RpYmxlIHR5cGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCA9IHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWU+Ci1jbGFzcyBvcHRpb25hbF9kYXRhX2R0b3JfYmFz
ZSB7Ci0gIHN0cnVjdCBkdW1teV90eXBlIHsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSAl
IHNpemVvZihlbXB0eV9zdHJ1Y3QpID09IDAsICIiKTsKLSAgICAvLyBVc2UgYW4gYXJyYXkgdG8g
YXZvaWQgR0NDIDYgcGxhY2VtZW50LW5ldyB3YXJuaW5nLgotICAgIGVtcHR5X3N0cnVjdCBkYXRh
W3NpemVvZihUKSAvIHNpemVvZihlbXB0eV9zdHJ1Y3QpXTsKLSAgfTsKLQotIHByb3RlY3RlZDoK
LSAgLy8gV2hldGhlciB0aGVyZSBpcyBkYXRhIG9yIG5vdC4KLSAgYm9vbCBlbmdhZ2VkXzsKLSAg
Ly8gRGF0YSBzdG9yYWdlCi0gIHVuaW9uIHsKLSAgICBkdW1teV90eXBlIGR1bW15XzsKLSAgICBU
IGRhdGFfOwotICB9OwotCi0gIHZvaWQgZGVzdHJ1Y3QoKSBub2V4Y2VwdCB7Ci0gICAgaWYgKGVu
Z2FnZWRfKSB7Ci0gICAgICBkYXRhXy5+VCgpOwotICAgICAgZW5nYWdlZF8gPSBmYWxzZTsKLSAg
ICB9Ci0gIH0KLQotICAvLyBkdW1teV8gbXVzdCBiZSBpbml0aWFsaXplZCBmb3IgY29uc3RleHBy
IGNvbnN0cnVjdG9yLgotICBjb25zdGV4cHIgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoKSBub2V4
Y2VwdCA6IGVuZ2FnZWRfKGZhbHNlKSwgZHVtbXlfe3t9fSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgotICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0YV9kdG9yX2Jh
c2UoaW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCi0gICAgICA6IGVuZ2FnZWRfKHRydWUpLCBk
YXRhXyhhYnNsOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQotCi0gIH5vcHRpb25hbF9kYXRh
X2R0b3JfYmFzZSgpIHsgZGVzdHJ1Y3QoKTsgfQotfTsKLQotLy8gU3BlY2lhbGl6YXRpb24gZm9y
IHRyaXZpYWxseSBkZXN0cnVjdGlibGUgdHlwZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xh
c3Mgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2U8VCwgdHJ1ZT4gewotICBzdHJ1Y3QgZHVtbXlfdHlw
ZSB7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgJSBzaXplb2YoZW1wdHlfc3RydWN0KSA9
PSAwLCAiIik7Ci0gICAgLy8gVXNlIGFycmF5IHRvIGF2b2lkIEdDQyA2IHBsYWNlbWVudC1uZXcg
d2FybmluZy4KLSAgICBlbXB0eV9zdHJ1Y3QgZGF0YVtzaXplb2YoVCkgLyBzaXplb2YoZW1wdHlf
c3RydWN0KV07Ci0gIH07Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIFdoZXRoZXIgdGhlcmUgaXMgZGF0
YSBvciBub3QuCi0gIGJvb2wgZW5nYWdlZF87Ci0gIC8vIERhdGEgc3RvcmFnZQotICB1bmlvbiB7
Ci0gICAgZHVtbXlfdHlwZSBkdW1teV87Ci0gICAgVCBkYXRhXzsKLSAgfTsKLSAgdm9pZCBkZXN0
cnVjdCgpIG5vZXhjZXB0IHsgZW5nYWdlZF8gPSBmYWxzZTsgfQotCi0gIC8vIGR1bW15XyBtdXN0
IGJlIGluaXRpYWxpemVkIGZvciBjb25zdGV4cHIgY29uc3RydWN0b3IuCi0gIGNvbnN0ZXhwciBv
cHRpb25hbF9kYXRhX2R0b3JfYmFzZSgpIG5vZXhjZXB0IDogZW5nYWdlZF8oZmFsc2UpLCBkdW1t
eV97e319IHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIGNvbnN0ZXhwciBl
eHBsaWNpdCBvcHRpb25hbF9kYXRhX2R0b3JfYmFzZShpbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJn
cykKLSAgICAgIDogZW5nYWdlZF8odHJ1ZSksIGRhdGFfKGFic2w6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pIHt9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIG9wdGlvbmFsX2Rh
dGFfYmFzZSA6IHB1YmxpYyBvcHRpb25hbF9kYXRhX2R0b3JfYmFzZTxUPiB7Ci0gcHJvdGVjdGVk
OgotICB1c2luZyBiYXNlID0gb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2U8VD47Ci0jaWYgQUJTTF9P
UFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMKLSAgdXNpbmcgYmFzZTo6YmFzZTsK
LSNlbHNlCi0gIG9wdGlvbmFsX2RhdGFfYmFzZSgpID0gZGVmYXVsdDsKLQotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KLSAgY29uc3RleHByIGV4cGxpY2l0IG9wdGlvbmFsX2RhdGFfYmFz
ZShpbl9wbGFjZV90IHQsIEFyZ3MmJi4uLiBhcmdzKQotICAgICAgOiBiYXNlKHQsIGFic2w6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pIHt9Ci0jZW5kaWYKLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUu
Li4gQXJncz4KLSAgdm9pZCBjb25zdHJ1Y3QoQXJncyYmLi4uIGFyZ3MpIHsKLSAgICAvLyBVc2Ug
ZHVtbXlfJ3MgYWRkcmVzcyB0byB3b3JrIGFyb3VuZCBjYXN0aW5nIGN2LXF1YWxpZmllZCBUKiB0
byB2b2lkKi4KLSAgICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0aGlzLT5kdW1teV8pKSBU
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgdGhpcy0+ZW5nYWdlZF8gPSB0cnVl
OwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gIHZvaWQgYXNzaWduKFUmJiB1KSB7
Ci0gICAgaWYgKHRoaXMtPmVuZ2FnZWRfKSB7Ci0gICAgICB0aGlzLT5kYXRhXyA9IHN0ZDo6Zm9y
d2FyZDxVPih1KTsKLSAgICB9IGVsc2UgewotICAgICAgY29uc3RydWN0KHN0ZDo6Zm9yd2FyZDxV
Pih1KSk7Ci0gICAgfQotICB9Ci19OwotCi0vLyBUT0RPKGFic2wtdGVhbSk6IEFkZCBhbm90aGVy
IGNsYXNzIHVzaW5nCi0vLyBzdGQ6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGUgdHJh
aXQgd2hlbiBhdmFpbGFibGUgdG8gbWF0Y2gKLS8vIGh0dHA6Ly9jcGx1c3BsdXMuZ2l0aHViLmlv
L0xXRy9sd2ctZGVmZWN0cy5odG1sIzI5MDAsIGZvciB0eXBlcyB0aGF0Ci0vLyBoYXZlIHRyaXZp
YWwgbW92ZSBidXQgbm9udHJpdmlhbCBjb3B5LgotLy8gQWxzbywgd2Ugc2hvdWxkIGJlIGNoZWNr
aW5nIGlzX3RyaXZpYWxseV9jb3B5YWJsZSBoZXJlLCB3aGljaCBpcyBub3QKLS8vIHN1cHBvcnRl
ZCBub3csIHNvIHdlIHVzZSBpc190cml2aWFsbHlfKiB0cmFpdHMgaW5zdGVhZC4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBULCBib29sID0gYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJs
ZTxUPjo6dmFsdWUmJgotICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjppc190cml2aWFs
bHlfY29weV9hc3NpZ25hYmxlPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5h
bWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZSYmCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlPgotY2xh
c3Mgb3B0aW9uYWxfZGF0YTsKLQotLy8gVHJpdmlhbGx5IGNvcHlhYmxlIHR5cGVzCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIG9wdGlvbmFsX2RhdGE8VCwgdHJ1ZT4gOiBwdWJsaWMgb3B0
aW9uYWxfZGF0YV9iYXNlPFQ+IHsKLSBwcm90ZWN0ZWQ6Ci0jaWYgQUJTTF9PUFRJT05BTF9VU0Vf
SU5IRVJJVElOR19DT05TVFJVQ1RPUlMKLSAgdXNpbmcgb3B0aW9uYWxfZGF0YV9iYXNlPFQ+Ojpv
cHRpb25hbF9kYXRhX2Jhc2U7Ci0jZWxzZQotICBvcHRpb25hbF9kYXRhKCkgPSBkZWZhdWx0Owot
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICBjb25zdGV4cHIgZXhwbGljaXQgb3B0
aW9uYWxfZGF0YShpbl9wbGFjZV90IHQsIEFyZ3MmJi4uLiBhcmdzKQotICAgICAgOiBvcHRpb25h
bF9kYXRhX2Jhc2U8VD4odCwgYWJzbDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KLSNlbmRp
ZgotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBvcHRpb25hbF9kYXRhPFQsIGZh
bHNlPiA6IHB1YmxpYyBvcHRpb25hbF9kYXRhX2Jhc2U8VD4gewotIHByb3RlY3RlZDoKLSNpZiBB
QlNMX09QVElPTkFMX1VTRV9JTkhFUklUSU5HX0NPTlNUUlVDVE9SUwotICB1c2luZyBvcHRpb25h
bF9kYXRhX2Jhc2U8VD46Om9wdGlvbmFsX2RhdGFfYmFzZTsKLSNlbHNlCi0gIHRlbXBsYXRlIDx0
eXBlbmFtZS4uLiBBcmdzPgotICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0YShpbl9w
bGFjZV90IHQsIEFyZ3MmJi4uLiBhcmdzKQotICAgICAgOiBvcHRpb25hbF9kYXRhX2Jhc2U8VD4o
dCwgYWJzbDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KLSNlbmRpZgotCi0gIG9wdGlvbmFs
X2RhdGEoKSA9IGRlZmF1bHQ7Ci0KLSAgb3B0aW9uYWxfZGF0YShjb25zdCBvcHRpb25hbF9kYXRh
JiByaHMpIHsKLSAgICBpZiAocmhzLmVuZ2FnZWRfKSB7Ci0gICAgICB0aGlzLT5jb25zdHJ1Y3Qo
cmhzLmRhdGFfKTsKLSAgICB9Ci0gIH0KLQotICBvcHRpb25hbF9kYXRhKG9wdGlvbmFsX2RhdGEm
JiByaHMpIG5vZXhjZXB0KAotICAgICAgYWJzbDo6ZGVmYXVsdF9hbGxvY2F0b3JfaXNfbm90aHJv
dzo6dmFsdWUgfHwKLSAgICAgIHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8VD46
OnZhbHVlKSB7Ci0gICAgaWYgKHJocy5lbmdhZ2VkXykgewotICAgICAgdGhpcy0+Y29uc3RydWN0
KHN0ZDo6bW92ZShyaHMuZGF0YV8pKTsKLSAgICB9Ci0gIH0KLQotICBvcHRpb25hbF9kYXRhJiBv
cGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxfZGF0YSYgcmhzKSB7Ci0gICAgaWYgKHJocy5lbmdhZ2Vk
XykgewotICAgICAgdGhpcy0+YXNzaWduKHJocy5kYXRhXyk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
IHRoaXMtPmRlc3RydWN0KCk7Ci0gICAgfQotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIG9w
dGlvbmFsX2RhdGEmIG9wZXJhdG9yPShvcHRpb25hbF9kYXRhJiYgcmhzKSBub2V4Y2VwdCgKLSAg
ICAgIHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8VD46OnZhbHVlJiYKLSAgICAgICAg
ICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkgewotICAgIGlm
IChyaHMuZW5nYWdlZF8pIHsKLSAgICAgIHRoaXMtPmFzc2lnbihzdGQ6Om1vdmUocmhzLmRhdGFf
KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHRoaXMtPmRlc3RydWN0KCk7Ci0gICAgfQotICAgIHJl
dHVybiAqdGhpczsKLSAgfQotfTsKLQotLy8gT3JkZXJlZCBieSBsZXZlbCBvZiByZXN0cmljdGlv
biwgZnJvbSBsb3cgdG8gaGlnaC4KLS8vIENvcHlhYmxlIGltcGxpZXMgbW92YWJsZS4KLWVudW0g
Y2xhc3MgY29weV90cmFpdHMgeyBjb3B5YWJsZSA9IDAsIG1vdmFibGUgPSAxLCBub25fbW92YWJs
ZSA9IDIgfTsKLQotLy8gQmFzZSBjbGFzcyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGNvcHkvbW92
ZSBjb25zdHJ1Y3Rvci4KLXRlbXBsYXRlIDxjb3B5X3RyYWl0cz4KLWNsYXNzIG9wdGlvbmFsX2N0
b3JfYmFzZTsKLQotdGVtcGxhdGUgPD4KLWNsYXNzIG9wdGlvbmFsX2N0b3JfYmFzZTxjb3B5X3Ry
YWl0czo6Y29weWFibGU+IHsKLSBwdWJsaWM6Ci0gIGNvbnN0ZXhwciBvcHRpb25hbF9jdG9yX2Jh
c2UoKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFsX2N0b3JfYmFzZShjb25zdCBvcHRpb25hbF9jdG9y
X2Jhc2UmKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFsX2N0b3JfYmFzZShvcHRpb25hbF9jdG9yX2Jh
c2UmJikgPSBkZWZhdWx0OwotICBvcHRpb25hbF9jdG9yX2Jhc2UmIG9wZXJhdG9yPShjb25zdCBv
cHRpb25hbF9jdG9yX2Jhc2UmKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFsX2N0b3JfYmFzZSYgb3Bl
cmF0b3I9KG9wdGlvbmFsX2N0b3JfYmFzZSYmKSA9IGRlZmF1bHQ7Ci19OwotCi10ZW1wbGF0ZSA8
PgotY2xhc3Mgb3B0aW9uYWxfY3Rvcl9iYXNlPGNvcHlfdHJhaXRzOjptb3ZhYmxlPiB7Ci0gcHVi
bGljOgotICBjb25zdGV4cHIgb3B0aW9uYWxfY3Rvcl9iYXNlKCkgPSBkZWZhdWx0OwotICBvcHRp
b25hbF9jdG9yX2Jhc2UoY29uc3Qgb3B0aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWxldGU7Ci0gIG9w
dGlvbmFsX2N0b3JfYmFzZShvcHRpb25hbF9jdG9yX2Jhc2UmJikgPSBkZWZhdWx0OwotICBvcHRp
b25hbF9jdG9yX2Jhc2UmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9jdG9yX2Jhc2UmKSA9IGRl
ZmF1bHQ7Ci0gIG9wdGlvbmFsX2N0b3JfYmFzZSYgb3BlcmF0b3I9KG9wdGlvbmFsX2N0b3JfYmFz
ZSYmKSA9IGRlZmF1bHQ7Ci19OwotCi10ZW1wbGF0ZSA8PgotY2xhc3Mgb3B0aW9uYWxfY3Rvcl9i
YXNlPGNvcHlfdHJhaXRzOjpub25fbW92YWJsZT4gewotIHB1YmxpYzoKLSAgY29uc3RleHByIG9w
dGlvbmFsX2N0b3JfYmFzZSgpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfY3Rvcl9iYXNlKGNvbnN0
IG9wdGlvbmFsX2N0b3JfYmFzZSYpID0gZGVsZXRlOwotICBvcHRpb25hbF9jdG9yX2Jhc2Uob3B0
aW9uYWxfY3Rvcl9iYXNlJiYpID0gZGVsZXRlOwotICBvcHRpb25hbF9jdG9yX2Jhc2UmIG9wZXJh
dG9yPShjb25zdCBvcHRpb25hbF9jdG9yX2Jhc2UmKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFsX2N0
b3JfYmFzZSYgb3BlcmF0b3I9KG9wdGlvbmFsX2N0b3JfYmFzZSYmKSA9IGRlZmF1bHQ7Ci19Owot
Ci0vLyBCYXNlIGNsYXNzIGZvciBlbmFibGluZy9kaXNhYmxpbmcgY29weS9tb3ZlIGFzc2lnbm1l
bnQuCi10ZW1wbGF0ZSA8Y29weV90cmFpdHM+Ci1jbGFzcyBvcHRpb25hbF9hc3NpZ25fYmFzZTsK
LQotdGVtcGxhdGUgPD4KLWNsYXNzIG9wdGlvbmFsX2Fzc2lnbl9iYXNlPGNvcHlfdHJhaXRzOjpj
b3B5YWJsZT4gewotIHB1YmxpYzoKLSAgY29uc3RleHByIG9wdGlvbmFsX2Fzc2lnbl9iYXNlKCkg
PSBkZWZhdWx0OwotICBvcHRpb25hbF9hc3NpZ25fYmFzZShjb25zdCBvcHRpb25hbF9hc3NpZ25f
YmFzZSYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2Uob3B0aW9uYWxfYXNzaWdu
X2Jhc2UmJikgPSBkZWZhdWx0OwotICBvcHRpb25hbF9hc3NpZ25fYmFzZSYgb3BlcmF0b3I9KGNv
bnN0IG9wdGlvbmFsX2Fzc2lnbl9iYXNlJikgPSBkZWZhdWx0OwotICBvcHRpb25hbF9hc3NpZ25f
YmFzZSYgb3BlcmF0b3I9KG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVmYXVsdDsKLX07Ci0K
LXRlbXBsYXRlIDw+Ci1jbGFzcyBvcHRpb25hbF9hc3NpZ25fYmFzZTxjb3B5X3RyYWl0czo6bW92
YWJsZT4gewotIHB1YmxpYzoKLSAgY29uc3RleHByIG9wdGlvbmFsX2Fzc2lnbl9iYXNlKCkgPSBk
ZWZhdWx0OwotICBvcHRpb25hbF9hc3NpZ25fYmFzZShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFz
ZSYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2Uob3B0aW9uYWxfYXNzaWduX2Jh
c2UmJikgPSBkZWZhdWx0OwotICBvcHRpb25hbF9hc3NpZ25fYmFzZSYgb3BlcmF0b3I9KGNvbnN0
IG9wdGlvbmFsX2Fzc2lnbl9iYXNlJikgPSBkZWxldGU7Ci0gIG9wdGlvbmFsX2Fzc2lnbl9iYXNl
JiBvcGVyYXRvcj0ob3B0aW9uYWxfYXNzaWduX2Jhc2UmJikgPSBkZWZhdWx0OwotfTsKLQotdGVt
cGxhdGUgPD4KLWNsYXNzIG9wdGlvbmFsX2Fzc2lnbl9iYXNlPGNvcHlfdHJhaXRzOjpub25fbW92
YWJsZT4gewotIHB1YmxpYzoKLSAgY29uc3RleHByIG9wdGlvbmFsX2Fzc2lnbl9iYXNlKCkgPSBk
ZWZhdWx0OwotICBvcHRpb25hbF9hc3NpZ25fYmFzZShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFz
ZSYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2Uob3B0aW9uYWxfYXNzaWduX2Jh
c2UmJikgPSBkZWZhdWx0OwotICBvcHRpb25hbF9hc3NpZ25fYmFzZSYgb3BlcmF0b3I9KGNvbnN0
IG9wdGlvbmFsX2Fzc2lnbl9iYXNlJikgPSBkZWxldGU7Ci0gIG9wdGlvbmFsX2Fzc2lnbl9iYXNl
JiBvcGVyYXRvcj0ob3B0aW9uYWxfYXNzaWduX2Jhc2UmJikgPSBkZWxldGU7Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBjb3B5X3RyYWl0cyBnZXRfY3Rvcl9jb3B5X3Ry
YWl0cygpIHsKLSAgcmV0dXJuIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZQot
ICAgICAgICAgICAgID8gY29weV90cmFpdHM6OmNvcHlhYmxlCi0gICAgICAgICAgICAgOiBzdGQ6
OmlzX21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUgPyBjb3B5X3RyYWl0czo6bW92YWJsZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29w
eV90cmFpdHM6Om5vbl9tb3ZhYmxlOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNvbnN0
ZXhwciBjb3B5X3RyYWl0cyBnZXRfYXNzaWduX2NvcHlfdHJhaXRzKCkgewotICByZXR1cm4gYWJz
bDo6aXNfY29weV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICBzdGQ6
OmlzX2NvcHlfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUKLSAgICAgICAgICAgICA/IGNvcHlfdHJh
aXRzOjpjb3B5YWJsZQotICAgICAgICAgICAgIDogYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPFQ+
Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX21vdmVfY29uc3RydWN0
aWJsZTxUPjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICA/IGNvcHlfdHJhaXRzOjptb3ZhYmxl
Ci0gICAgICAgICAgICAgICAgICAgOiBjb3B5X3RyYWl0czo6bm9uX21vdmFibGU7Ci19Ci0KLS8v
IFdoZXRoZXIgVCBpcyBjb25zdHJ1Y3RpYmxlIG9yIGNvbnZlcnRpYmxlIGZyb20gb3B0aW9uYWw8
VT4uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXN0cnVjdCBpc19jb25zdHJ1
Y3RpYmxlX2NvbnZlcnRpYmxlX2Zyb21fb3B0aW9uYWwKLSAgICA6IHN0ZDo6aW50ZWdyYWxfY29u
c3RhbnQ8Ci0gICAgICAgICAgYm9vbCwgc3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIG9wdGlvbmFs
PFU+Jj46OnZhbHVlIHx8Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJs
ZTxULCBvcHRpb25hbDxVPiYmPjo6dmFsdWUgfHwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpp
c19jb25zdHJ1Y3RpYmxlPFQsIGNvbnN0IG9wdGlvbmFsPFU+Jj46OnZhbHVlIHx8Ci0gICAgICAg
ICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBjb25zdCBvcHRpb25hbDxVPiYm
Pjo6dmFsdWUgfHwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxvcHRp
b25hbDxVPiYsIFQ+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZl
cnRpYmxlPG9wdGlvbmFsPFU+JiYsIFQ+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX2NvbnZlcnRpYmxlPGNvbnN0IG9wdGlvbmFsPFU+JiwgVD46OnZhbHVlIHx8Ci0gICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGU8Y29uc3Qgb3B0aW9uYWw8VT4mJiwg
VD46OnZhbHVlPiB7fTsKLQotLy8gV2hldGhlciBUIGlzIGNvbnN0cnVjdGlibGUgb3IgY29udmVy
dGlibGUgb3IgYXNzaWduYWJsZSBmcm9tIG9wdGlvbmFsPFU+LgotdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci1zdHJ1Y3QgaXNfY29uc3RydWN0aWJsZV9jb252ZXJ0aWJsZV9hc3Np
Z25hYmxlX2Zyb21fb3B0aW9uYWwKLSAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ci0gICAg
ICAgICAgYm9vbCwgaXNfY29uc3RydWN0aWJsZV9jb252ZXJ0aWJsZV9mcm9tX29wdGlvbmFsPFQs
IFU+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Fzc2lnbmFibGU8VCYs
IG9wdGlvbmFsPFU+Jj46OnZhbHVlIHx8Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfYXNz
aWduYWJsZTxUJiwgb3B0aW9uYWw8VT4mJj46OnZhbHVlIHx8Ci0gICAgICAgICAgICAgICAgICAg
IHN0ZDo6aXNfYXNzaWduYWJsZTxUJiwgY29uc3Qgb3B0aW9uYWw8VT4mPjo6dmFsdWUgfHwKLSAg
ICAgICAgICAgICAgICAgICAgc3RkOjppc19hc3NpZ25hYmxlPFQmLCBjb25zdCBvcHRpb25hbDxV
PiYmPjo6dmFsdWU+IHt9OwotCi0vLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBbb3B0aW9uYWwu
cmVsb3BzXSwgW29wdGlvbmFsLmNvbXBfd2l0aF90XSwKLS8vIGZvciBjaGVja2luZyB3aGV0aGVy
IGFuIGV4cHJlc3Npb24gaXMgY29udmVydGlibGUgdG8gYm9vbC4KLWJvb2wgY29udmVydGlibGVf
dG9fYm9vbChib29sKTsKLQotLy8gQmFzZSBjbGFzcyBmb3Igc3RkOjpoYXNoPGFic2w6Om9wdGlv
bmFsPFQ+PjoKLS8vIElmIHN0ZDo6aGFzaDxzdGQ6OnJlbW92ZV9jb25zdF90PFQ+PiBpcyBlbmFi
bGVkLCBpdCBwcm92aWRlcyBvcGVyYXRvcigpIHRvCi0vLyBjb21wdXRlIHRoZSBoYXNoOyBPdGhl
cndpc2UsIGl0IGlzIGRpc2FibGVkLgotLy8gUmVmZXJlbmNlIE40NjU5IDIzLjE0LjE1IFt1bm9y
ZC5oYXNoXS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHNpemVfdD4KLXN0cnVj
dCBvcHRpb25hbF9oYXNoX2Jhc2UgewotICBvcHRpb25hbF9oYXNoX2Jhc2UoKSA9IGRlbGV0ZTsK
LSAgb3B0aW9uYWxfaGFzaF9iYXNlKGNvbnN0IG9wdGlvbmFsX2hhc2hfYmFzZSYpID0gZGVsZXRl
OwotICBvcHRpb25hbF9oYXNoX2Jhc2Uob3B0aW9uYWxfaGFzaF9iYXNlJiYpID0gZGVsZXRlOwot
ICBvcHRpb25hbF9oYXNoX2Jhc2UmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9oYXNoX2Jhc2Um
KSA9IGRlbGV0ZTsKLSAgb3B0aW9uYWxfaGFzaF9iYXNlJiBvcGVyYXRvcj0ob3B0aW9uYWxfaGFz
aF9iYXNlJiYpID0gZGVsZXRlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qg
b3B0aW9uYWxfaGFzaF9iYXNlPFQsIGRlY2x0eXBlKHN0ZDo6aGFzaDxhYnNsOjpyZW1vdmVfY29u
c3RfdDxUPiA+KCkoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2
YWw8YWJzbDo6cmVtb3ZlX2NvbnN0X3Q8VD4gPigpKSk+IHsKLSAgdXNpbmcgYXJndW1lbnRfdHlw
ZSA9IGFic2w6Om9wdGlvbmFsPFQ+OwotICB1c2luZyByZXN1bHRfdHlwZSA9IHNpemVfdDsKLSAg
c2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgYWJzbDo6b3B0aW9uYWw8VD4mIG9wdCkgY29uc3Qgewot
ICAgIGlmIChvcHQpIHsKLSAgICAgIHJldHVybiBzdGQ6Omhhc2g8YWJzbDo6cmVtb3ZlX2NvbnN0
X3Q8VD4gPigpKCpvcHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
c2l6ZV90PigweDI5NzgxNGFhYWQxOTZlNmRVTEwpOwotICAgIH0KLSAgfQotfTsKLQotfSAgLy8g
bmFtZXNwYWNlIG9wdGlvbmFsX2ludGVybmFsCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBhYnNsOjpvcHRpb25hbCBjbGFzcyBkZWZpbml0aW9uCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIG9wdGlvbmFsIDogcHJpdmF0ZSBvcHRp
b25hbF9pbnRlcm5hbDo6b3B0aW9uYWxfZGF0YTxUPiwKICAgICAgICAgICAgICAgICAgcHJpdmF0
ZSBvcHRpb25hbF9pbnRlcm5hbDo6b3B0aW9uYWxfY3Rvcl9iYXNlPAotICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uYWxfaW50ZXJuYWw6OmdldF9jdG9yX2NvcHlfdHJhaXRzPFQ+KCk+LAorICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9uYWxfaW50ZXJuYWw6OmN0b3JfY29weV90cmFpdHM8VD46
OnRyYWl0cz4sCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgb3B0aW9uYWxfaW50ZXJuYWw6Om9w
dGlvbmFsX2Fzc2lnbl9iYXNlPAotICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxfaW50ZXJu
YWw6OmdldF9hc3NpZ25fY29weV90cmFpdHM8VD4oKT4geworICAgICAgICAgICAgICAgICAgICAg
b3B0aW9uYWxfaW50ZXJuYWw6OmFzc2lnbl9jb3B5X3RyYWl0czxUPjo6dHJhaXRzPiB7CiAgIHVz
aW5nIGRhdGFfYmFzZSA9IG9wdGlvbmFsX2ludGVybmFsOjpvcHRpb25hbF9kYXRhPFQ+OwogCiAg
cHVibGljOgpAQCAtNTExLDEwICsxNDIsMTEgQEAgY2xhc3Mgb3B0aW9uYWwgOiBwcml2YXRlIG9w
dGlvbmFsX2ludGVybmFsOjpvcHRpb25hbF9kYXRhPFQ+LAogICAvLyB0aGUgYXJndW1lbnRzIGBz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi5gICB3aXRoaW4gdGhlIGBvcHRpb25hbGAuCiAgIC8v
IChUaGUgYGluX3BsYWNlX3RgIGlzIGEgdGFnIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY29u
dGFpbmVkIG9iamVjdAogICAvLyBzaG91bGQgYmUgY29uc3RydWN0ZWQgaW4tcGxhY2UuKQotICAv
LwotICAvLyBUT0RPKGFic2wtdGVhbSk6IEFkZCBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgQXJn
cyYmLi4uPiBTRklOQUUuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICBjb25zdGV4
cHIgZXhwbGljaXQgb3B0aW9uYWwoaW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBJblBsYWNlVCwgdHlwZW5hbWUuLi4gQXJncywKKyAgICAgICAgICAgIGFi
c2w6OmVuYWJsZV9pZl90PGFic2w6OmNvbmp1bmN0aW9uPAorICAgICAgICAgICAgICAgIHN0ZDo6
aXNfc2FtZTxJblBsYWNlVCwgaW5fcGxhY2VfdD4sCisgICAgICAgICAgICAgICAgc3RkOjppc19j
b25zdHJ1Y3RpYmxlPFQsIEFyZ3MmJi4uLj4gPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgIGNvbnN0
ZXhwciBleHBsaWNpdCBvcHRpb25hbChJblBsYWNlVCwgQXJncyYmLi4uIGFyZ3MpCiAgICAgICA6
IGRhdGFfYmFzZShpbl9wbGFjZV90KCksIGFic2w6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9
CiAKICAgLy8gQ29uc3RydWN0cyBhIG5vbi1lbXB0eSBgb3B0aW9uYWxgIGRpcmVjdC1pbml0aWFs
aXplZCB2YWx1ZSBvZiB0eXBlIGBUYCBmcm9tCkBAIC03NTAsMTEgKzM4MiwxMCBAQCBjbGFzcyBv
cHRpb25hbCA6IHByaXZhdGUgb3B0aW9uYWxfaW50ZXJuYWw6Om9wdGlvbmFsX2RhdGE8VD4sCiAg
IC8vIFN3YXAsIHN0YW5kYXJkIHNlbWFudGljcwogICB2b2lkIHN3YXAob3B0aW9uYWwmIHJocykg
bm9leGNlcHQoCiAgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2
YWx1ZSYmCi0gICAgICAgICAgc3RkOjppc190cml2aWFsPFQ+Ojp2YWx1ZSkgeworICAgICAgICAg
IHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc05vdGhyb3dTd2FwcGFibGU8VD46OnZhbHVlKSB7CiAg
ICAgaWYgKCp0aGlzKSB7CiAgICAgICBpZiAocmhzKSB7Ci0gICAgICAgIHVzaW5nIHN0ZDo6c3dh
cDsKLSAgICAgICAgc3dhcCgqKnRoaXMsICpyaHMpOworICAgICAgICB0eXBlX3RyYWl0c19pbnRl
cm5hbDo6U3dhcCgqKnRoaXMsICpyaHMpOwogICAgICAgfSBlbHNlIHsKICAgICAgICAgcmhzLmNv
bnN0cnVjdChzdGQ6Om1vdmUoKip0aGlzKSk7CiAgICAgICAgIHRoaXMtPmRlc3RydWN0KCk7CkBA
IC03OTAsNyArNDIxLDkgQEAgY2xhc3Mgb3B0aW9uYWwgOiBwcml2YXRlIG9wdGlvbmFsX2ludGVy
bmFsOjpvcHRpb25hbF9kYXRhPFQ+LAogICAvLwogICAvLyBBY2Nlc3NlcyB0aGUgdW5kZXJseWlu
ZyBgVGAgdmFsdWUgb2YgYW4gYG9wdGlvbmFsYC4gSWYgdGhlIGBvcHRpb25hbGAgaXMKICAgLy8g
ZW1wdHksIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KLSAgY29uc3RleHByIGNvbnN0IFQmIG9wZXJh
dG9yKigpIGNvbnN0ICYgeyByZXR1cm4gcmVmZXJlbmNlKCk7IH0KKyAgY29uc3RleHByIGNvbnN0
IFQmIG9wZXJhdG9yKigpIGNvbnN0JiB7CisgICAgcmV0dXJuIEFCU0xfQVNTRVJUKHRoaXMtPmVu
Z2FnZWRfKSwgcmVmZXJlbmNlKCk7CisgIH0KICAgVCYgb3BlcmF0b3IqKCkgJiB7CiAgICAgYXNz
ZXJ0KHRoaXMtPmVuZ2FnZWRfKTsKICAgICByZXR1cm4gcmVmZXJlbmNlKCk7CkBAIC04NjYsNyAr
NDk5LDcgQEAgY2xhc3Mgb3B0aW9uYWwgOiBwcml2YXRlIG9wdGlvbmFsX2ludGVybmFsOjpvcHRp
b25hbF9kYXRhPFQ+LAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KICAgY29uc3RleHByIFQgdmFs
dWVfb3IoVSYmIHYpIGNvbnN0JiB7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvcHlfY29u
c3RydWN0aWJsZTx2YWx1ZV90eXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9u
YWw8VD46OnZhbHVlX29yOiBUIG11c3QgYnkgY29weSBjb25zdHJ1Y3RpYmxlIik7CisgICAgICAg
ICAgICAgICAgICAib3B0aW9uYWw8VD46OnZhbHVlX29yOiBUIG11c3QgYmUgY29weSBjb25zdHJ1
Y3RpYmxlIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnZlcnRpYmxlPFUmJiwgdmFs
dWVfdHlwZT46OnZhbHVlLAogICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsPFQ+Ojp2YWx1ZV9v
cjogVSBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIFQiKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Ym9vbD4oKnRoaXMpCkBAIC04NzYsNyArNTA5LDcgQEAgY2xhc3Mgb3B0aW9uYWwgOiBwcml2YXRl
IG9wdGlvbmFsX2ludGVybmFsOjpvcHRpb25hbF9kYXRhPFQ+LAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4KICAgVCB2YWx1ZV9vcihVJiYgdikgJiYgeyAgLy8gTk9MSU5UKGJ1aWxkL2MrKzExKQog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8dmFsdWVfdHlwZT46
OnZhbHVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsPFQ+Ojp2YWx1ZV9vcjogVCBtdXN0
IGJ5IGNvcHkgY29uc3RydWN0aWJsZSIpOworICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsPFQ+
Ojp2YWx1ZV9vcjogVCBtdXN0IGJlIG1vdmUgY29uc3RydWN0aWJsZSIpOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19jb252ZXJ0aWJsZTxVJiYsIHZhbHVlX3R5cGU+Ojp2YWx1ZSwKICAgICAg
ICAgICAgICAgICAgICJvcHRpb25hbDxUPjo6dmFsdWVfb3I6IFUgbXVzdCBiZSBjb252ZXJ0aWJs
ZSB0byBUIik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KCp0aGlzKSA/IHN0ZDo6bW92
ZSgqKnRoaXMpCkBAIC05MDYsMTIgKzUzOSwxMCBAQCBjbGFzcyBvcHRpb25hbCA6IHByaXZhdGUg
b3B0aW9uYWxfaW50ZXJuYWw6Om9wdGlvbmFsX2RhdGE8VD4sCiAvLwogLy8gUGVyZm9ybXMgYSBz
d2FwIGJldHdlZW4gdHdvIGBhYnNsOjpvcHRpb25hbGAgb2JqZWN0cywgdXNpbmcgc3RhbmRhcmQK
IC8vIHNlbWFudGljcy4KLS8vCi0vLyBOT1RFOiB3ZSBhc3N1bWUgYGlzX3N3YXBwYWJsZSgpYCBp
cyBhbHdheXMgYHRydWVgLiBBIGNvbXBpbGUgZXJyb3Igd2lsbAotLy8gcmVzdWx0IGlmIHRoaXMg
aXMgbm90IHRoZSBjYXNlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2w+Ojp0eXBlID0gZmFsc2U+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSAmJgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzU3dh
cHBhYmxlPFQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbD46OnR5cGUg
PSBmYWxzZT4KIHZvaWQgc3dhcChvcHRpb25hbDxUPiYgYSwgb3B0aW9uYWw8VD4mIGIpIG5vZXhj
ZXB0KG5vZXhjZXB0KGEuc3dhcChiKSkpIHsKICAgYS5zd2FwKGIpOwogfQpAQCAtMTEzNCw3ICs3
NjUsNiBAQCBzdHJ1Y3QgaGFzaDxhYnNsOjpvcHRpb25hbDxUPiA+CiAKIH0gIC8vIG5hbWVzcGFj
ZSBzdGQKIAotI3VuZGVmIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNUT1JT
CiAjdW5kZWYgQUJTTF9NU1ZDX0NPTlNURVhQUl9CVUdfSU5fVU5JT05fTElLRV9DTEFTUwogCiAj
ZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfT1BUSU9OQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
L29wdGlvbmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFs
X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwppbmRleCBkMTE3ZWU1MTg0OTE5ZmU2YjEyZDEyMzNk
ZTE2ZTlhZWU4MGU4MDNlLi5hYWY4ZWJjZDk4ODY4M2E3YzdjZmExYjU5ZTE2MmQ1YzIwOThkNjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy9vcHRpb25hbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfdGVzdC5jYwpp
bmRleCBkOTBkYjlmODIxYjUyZDRhOTM1NTU3NzkyZTIxMmUxNDE5OWU3ODA5Li5lNmEzNmViOGUy
NmYzNjYwM2ExOGQ2ZmIzYjIzMmJlMDRhYWQ0ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9v
cHRpb25hbF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX3Rlc3QuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1Nyw2ICsxNTcsMTYgQEAg
c3RydWN0IE5vbk1vdmFibGUgewogICBOb25Nb3ZhYmxlJiBvcGVyYXRvcj0oTm9uTW92YWJsZSYm
KSA9IGRlbGV0ZTsKIH07CiAKK3N0cnVjdCBOb0RlZmF1bHQgeworICBOb0RlZmF1bHQoKSA9IGRl
bGV0ZTsKKyAgTm9EZWZhdWx0KGNvbnN0IE5vRGVmYXVsdCYpIHt9CisgIE5vRGVmYXVsdCYgb3Bl
cmF0b3I9KGNvbnN0IE5vRGVmYXVsdCYpIHsgcmV0dXJuICp0aGlzOyB9Cit9OworCitzdHJ1Y3Qg
Q29udmVydHNGcm9tSW5QbGFjZVQgeworICBDb252ZXJ0c0Zyb21JblBsYWNlVChhYnNsOjppbl9w
bGFjZV90KSB7fSAgLy8gTk9MSU5UCit9OworCiBURVNUKG9wdGlvbmFsVGVzdCwgRGVmYXVsdENv
bnN0cnVjdG9yKSB7CiAgIGFic2w6Om9wdGlvbmFsPGludD4gZW1wdHk7CiAgIEVYUEVDVF9GQUxT
RShlbXB0eSk7CkBAIC0xNjksMTUgKzE3OSw3IEBAIFRFU1Qob3B0aW9uYWxUZXN0LCBEZWZhdWx0
Q29uc3RydWN0b3IpIHsKIFRFU1Qob3B0aW9uYWxUZXN0LCBudWxsb3B0Q29uc3RydWN0b3IpIHsK
ICAgYWJzbDo6b3B0aW9uYWw8aW50PiBlbXB0eShhYnNsOjpudWxsb3B0KTsKICAgRVhQRUNUX0ZB
TFNFKGVtcHR5KTsKLQotI2lmZGVmIEFCU0xfSEFWRV9TVERfT1BUSU9OQUwKICAgY29uc3RleHBy
IGFic2w6Om9wdGlvbmFsPGludD4gY2VtcHR5e2Fic2w6Om51bGxvcHR9OwotI2Vsc2UKLSAgLy8g
Q3JlYXRpbmcgYSB0ZW1wb3JhcnkgYWJzbDo6bnVsbG9wdF90IG9iamVjdCBpbnN0ZWFkIG9mIHVz
aW5nIGFic2w6Om51bGxvcHQKLSAgLy8gYmVjYXVzZSBhYnNsOjpudWxsb3B0IGNhbm5vdCBiZSBj
b25zdGV4cHIgYW5kIGhhdmUgZXh0ZXJuYWwgbGlua2FnZSBhdCB0aGUKLSAgLy8gc2FtZSB0aW1l
LgotICBjb25zdGV4cHIgYWJzbDo6b3B0aW9uYWw8aW50PiBjZW1wdHl7YWJzbDo6bnVsbG9wdF90
KGFic2w6Om51bGxvcHRfdDo6aW5pdCl9OwotI2VuZGlmCiAgIHN0YXRpY19hc3NlcnQoIWNlbXB0
eS5oYXNfdmFsdWUoKSwgIiIpOwogICBFWFBFQ1RfVFJVRSgoc3RkOjppc19ub3Rocm93X2NvbnN0
cnVjdGlibGU8YWJzbDo6b3B0aW9uYWw8aW50PiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFic2w6Om51bGxvcHRfdD46OnZhbHVlKSk7CkBAIC0zMzcsMTYg
KzMzOSwxOCBAQCBURVNUKG9wdGlvbmFsVGVzdCwgSW5QbGFjZUNvbnN0cnVjdG9yKSB7CiAgIHN0
YXRpY19hc3NlcnQoKCpvcHQyKS54ID09IENvbnN0ZXhwclR5cGU6OmtDdG9ySW5pdGlhbGl6ZXJM
aXN0LCAiIik7CiAjZW5kaWYKIAotICAvLyBUT0RPKGFic2wtdGVhbSk6IHVuY29tbWVudCB0aGVz
ZSB3aGVuIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBBcmdzJiYuLi4+Ci0gIC8vIFNGSU5BRSBp
cyBhZGRlZCB0byBvcHRpb25hbDo6b3B0aW9uYWwoYWJzbDo6aW5fcGxhY2VfdCwgQXJncyYmLi4u
KS4KLSAgLy8gc3RydWN0IEkgewotICAvLyAgIEkoYWJzbDo6aW5fcGxhY2VfdCk7Ci0gIC8vIH07
CisgIEVYUEVDVF9GQUxTRSgoc3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6Om9wdGlvbmFsPENv
bnZlcnRzRnJvbUluUGxhY2VUPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6aW5fcGxhY2VfdD46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoc3RkOjppc19j
b25zdHJ1Y3RpYmxlPGFic2w6Om9wdGlvbmFsPENvbnZlcnRzRnJvbUluUGxhY2VUPiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJzbDo6aW5fcGxhY2VfdCY+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIChzdGQ6OmlzX2NvbnN0cnVjdGlibGU8
YWJzbDo6b3B0aW9uYWw8Q29udmVydHNGcm9tSW5QbGFjZVQ+LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjppbl9wbGFjZV90LCBhYnNsOjppbl9wbGFjZV90Pjo6dmFsdWUpKTsK
IAotICAvLyBFWFBFQ1RfRkFMU0UoKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxhYnNsOjpvcHRpb25h
bDxJPiwKLSAgLy8gYWJzbDo6aW5fcGxhY2VfdD46OnZhbHVlKSk7Ci0gIC8vIEVYUEVDVF9GQUxT
RSgoc3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6Om9wdGlvbmFsPEk+LCBjb25zdAotICAvLyBh
YnNsOjppbl9wbGFjZV90Jj46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoc3RkOjppc19jb25z
dHJ1Y3RpYmxlPGFic2w6Om9wdGlvbmFsPE5vRGVmYXVsdD4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFic2w6OmluX3BsYWNlX3Q+Ojp2YWx1ZSkpOworICBFWFBFQ1Rf
RkFMU0UoKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxhYnNsOjpvcHRpb25hbDxOb0RlZmF1bHQ+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjppbl9wbGFjZV90JiY+
Ojp2YWx1ZSkpOwogfQogCiAvLyB0ZW1wbGF0ZTxVPVQ+IG9wdGlvbmFsKFUmJik7CkBAIC0xMDQy
LDkgKzEwNDYsOSBAQCBURVNUKG9wdGlvbmFsVGVzdCwgVmFsdWUpIHsKICAgLy8gdGVzdCBleGNl
cHRpb24gdGhyb3cgb24gdmFsdWUoKQogICBhYnNsOjpvcHRpb25hbDxpbnQ+IGVtcHR5OwogI2lm
ZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TCi0gIEVYUEVDVF9USFJPVyhlbXB0eS52YWx1ZSgpLCBh
YnNsOjpiYWRfb3B0aW9uYWxfYWNjZXNzKTsKKyAgRVhQRUNUX1RIUk9XKCh2b2lkKWVtcHR5LnZh
bHVlKCksIGFic2w6OmJhZF9vcHRpb25hbF9hY2Nlc3MpOwogI2Vsc2UKLSAgRVhQRUNUX0RFQVRI
KGVtcHR5LnZhbHVlKCksICJCYWQgb3B0aW9uYWwgYWNjZXNzIik7CisgIEVYUEVDVF9ERUFUSCgo
dm9pZCllbXB0eS52YWx1ZSgpLCAiQmFkIG9wdGlvbmFsIGFjY2VzcyIpOwogI2VuZGlmCiAKICAg
Ly8gdGVzdCBjb25zdGV4cHIgdmFsdWUoKQpAQCAtMTQ3Niw4ICsxNDgwLDggQEAgVEVTVChvcHRp
b25hbFRlc3QsIE1vdmVBc3NpZ25SZWdyZXNzaW9uKSB7CiAKIFRFU1Qob3B0aW9uYWxUZXN0LCBW
YWx1ZVR5cGUpIHsKICAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTxhYnNsOjpvcHRpb25hbDxp
bnQ+Ojp2YWx1ZV90eXBlLCBpbnQ+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIChz
dGQ6OmlzX3NhbWU8YWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+Ojp2YWx1ZV90eXBlLCBzdGQ6
OnN0cmluZz46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3NhbWU8YWJzbDo6b3B0
aW9uYWw8c3RkOjpzdHJpbmc+Ojp2YWx1ZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nPjo6dmFsdWUpKTsKICAgRVhQRUNUX0ZBTFNFKAogICAgICAgKHN0ZDo6
aXNfc2FtZTxhYnNsOjpvcHRpb25hbDxpbnQ+Ojp2YWx1ZV90eXBlLCBhYnNsOjpudWxsb3B0X3Q+
Ojp2YWx1ZSkpOwogfQpAQCAtMTUwNCwxOCArMTUwOCwxOSBAQCBURVNUKG9wdGlvbmFsVGVzdCwg
SGFzaCkgewogCiAgIHN0YXRpY19hc3NlcnQoaXNfaGFzaF9lbmFibGVkX2ZvcjxhYnNsOjpvcHRp
b25hbDxpbnQ+Pjo6dmFsdWUsICIiKTsKICAgc3RhdGljX2Fzc2VydChpc19oYXNoX2VuYWJsZWRf
Zm9yPGFic2w6Om9wdGlvbmFsPEhhc2hhYmxlPj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3Nl
cnQoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoYWJsZTxhYnNsOjpv
cHRpb25hbDxpbnQ+Pjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIGFic2w6
OnR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hhYmxlPGFic2w6Om9wdGlvbmFsPEhhc2hhYmxl
Pj46OnZhbHVlLAorICAgICAgIiIpOworICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6QXNz
ZXJ0SGFzaEVuYWJsZWQ8YWJzbDo6b3B0aW9uYWw8aW50Pj4oKTsKKyAgYWJzbDo6dHlwZV90cmFp
dHNfaW50ZXJuYWw6OkFzc2VydEhhc2hFbmFibGVkPGFic2w6Om9wdGlvbmFsPEhhc2hhYmxlPj4o
KTsKIAotI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8IChkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikg
JiYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICBfTElCQ1BQX1ZFUlNJT04gPCA0MDAwICYm
IF9MSUJDUFBfU1REX1ZFUiA+IDExKQotICAvLyBGb3IgTVNWQyBhbmQgbGliYysrICg8IDQuMCBh
bmQgYysrMTQpLCBzdGQ6Omhhc2ggcHJpbWFyeSB0ZW1wbGF0ZSBoYXMgYQotICAvLyBzdGF0aWNf
YXNzZXJ0IHRvIGNhdGNoIGFueSB1c2VyLWRlZmluZWQgdHlwZSB0aGF0IGRvZXNuJ3QgcHJvdmlk
ZSBhIGhhc2gKLSAgLy8gc3BlY2lhbGl6YXRpb24uIFNvIGluc3RhbnRpYXRpbmcgc3RkOjpoYXNo
PGFic2w6Om9wdGlvbmFsPFQ+PiB3aWxsIHJlc3VsdAotICAvLyBpbiBhIGhhcmQgZXJyb3Igd2hp
Y2ggaXMgbm90IFNGSU5BRSBmcmllbmRseS4KLSNkZWZpbmUgQUJTTF9TVERfSEFTSF9OT1RfU0ZJ
TkFFX0ZSSUVORExZIDEKLSNlbmRpZgotCi0jaWZuZGVmIEFCU0xfU1REX0hBU0hfTk9UX1NGSU5B
RV9GUklFTkRMWQorI2lmIEFCU0xfTUVUQV9JTlRFUk5BTF9TVERfSEFTSF9TRklOQUVfRlJJRU5E
TFlfCiAgIHN0YXRpY19hc3NlcnQoIWlzX2hhc2hfZW5hYmxlZF9mb3I8YWJzbDo6b3B0aW9uYWw8
Tm9uSGFzaGFibGU+Pjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghYWJzbDo6dHlwZV90
cmFpdHNfaW50ZXJuYWw6OklzSGFzaGFibGU8CisgICAgICAgICAgICAgICAgICAgIGFic2w6Om9w
dGlvbmFsPE5vbkhhc2hhYmxlPj46OnZhbHVlLAorICAgICAgICAgICAgICAgICIiKTsKICNlbmRp
ZgogCiAgIC8vIGxpYnN0ZGMrKyBzdGQ6Om9wdGlvbmFsIGlzIG1pc3NpbmcgcmVtb3ZlX2NvbnN0
X3QsIGkuZS4gaXQncyB1c2luZwpAQCAtMTYyMyw0ICsxNjI4LDI5IEBAIFRFU1Qob3B0aW9uYWxU
ZXN0LCBBc3NpZ25tZW50Q29uc3RyYWludHMpIHsKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfY29w
eV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPEFueUxpa2U+Pjo6dmFsdWUpOwogfQogCisjaWYg
IWRlZmluZWQoX19FTVNDUklQVEVOX18pCitzdHJ1Y3QgTmVzdGVkQ2xhc3NCdWcgeworICBzdHJ1
Y3QgSW5uZXIgeworICAgIGJvb2wgZHVtbXkgPSBmYWxzZTsKKyAgfTsKKyAgYWJzbDo6b3B0aW9u
YWw8SW5uZXI+IHZhbHVlOworfTsKKworVEVTVChvcHRpb25hbFRlc3QsIEluUGxhY2VUU0ZJTkFF
QnVnKSB7CisgIE5lc3RlZENsYXNzQnVnIGI7CisgICgodm9pZCliKTsKKyAgdXNpbmcgSW5uZXIg
PSBOZXN0ZWRDbGFzc0J1Zzo6SW5uZXI7CisKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfZGVmYXVs
dF9jb25zdHJ1Y3RpYmxlPElubmVyPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNf
Y29uc3RydWN0aWJsZTxJbm5lcj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgKHN0
ZDo6aXNfY29uc3RydWN0aWJsZTxhYnNsOjpvcHRpb25hbDxJbm5lcj4sIGFic2w6OmluX3BsYWNl
X3Q+Ojp2YWx1ZSkpOworCisgIGFic2w6Om9wdGlvbmFsPElubmVyPiBvKGFic2w6OmluX3BsYWNl
KTsKKyAgRVhQRUNUX1RSVUUoby5oYXNfdmFsdWUoKSk7CisgIG8uZW1wbGFjZSgpOworICBFWFBF
Q1RfVFJVRShvLmhhc192YWx1ZSgpKTsKK30KKyNlbmRpZiAgLy8gIWRlZmluZWQoX19FTVNDUklQ
VEVOX18pCisKIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvc3Bhbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXMvc3Bhbi5oCmluZGV4IDkxMWFmMGM1N2E2MWE2Nzg1NTU3YTkxZmJiNjky
ZDdkOTAxOTE0NTguLmIwMDdmYzFmZDNkZjgzNzcyNjQxM2Y3MGUwNTVjZWExYzE4OTViMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuLmgKQEAg
LTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTYwLDExNSArNjAsMTgg
QEAKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CiAjaW5j
bHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpbmNsdWRlICJhYnNsL2FsZ29yaXRobS9hbGdvcml0
aG0uaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaCIKICNp
bmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL29wdGltaXph
dGlvbi5oIgotI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNl
L3BvcnQuaCIgICAgLy8gVE9ETyhzdHJlbCk6IHJlbW92ZSB0aGlzIGluY2x1ZGUKICNpbmNsdWRl
ICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL2ludGVybmFs
L3NwYW4uaCIKIAogbmFtZXNwYWNlIGFic2wgewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIFNwYW47Ci0KLW5hbWVzcGFjZSBzcGFuX2ludGVybmFsIHsKLS8vIEEgY29uc3RleHByIG1p
biBmdW5jdGlvbgotY29uc3RleHByIHNpemVfdCBNaW4oc2l6ZV90IGEsIHNpemVfdCBiKSBub2V4
Y2VwdCB7IHJldHVybiBhIDwgYiA/IGEgOiBiOyB9Ci0KLS8vIFdyYXBwZXJzIGZvciBhY2Nlc3Mg
dG8gY29udGFpbmVyIGRhdGEgcG9pbnRlcnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KLWNvbnN0
ZXhwciBhdXRvIEdldERhdGFJbXBsKEMmIGMsIGNoYXIpIG5vZXhjZXB0ICAvLyBOT0xJTlQocnVu
dGltZS9yZWZlcmVuY2VzKQotICAgIC0+IGRlY2x0eXBlKGMuZGF0YSgpKSB7Ci0gIHJldHVybiBj
LmRhdGEoKTsKLX0KLQotLy8gQmVmb3JlIEMrKzE3LCBzdHJpbmc6OmRhdGEgcmV0dXJucyBhIGNv
bnN0IGNoYXIqIGluIGFsbCBjYXNlcy4KLWlubGluZSBjaGFyKiBHZXREYXRhSW1wbChzdGQ6OnN0
cmluZyYgcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgaW50KSBub2V4Y2VwdCB7Ci0gIHJldHVybiAmc1swXTsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEM+Ci1jb25zdGV4cHIgYXV0byBHZXREYXRhKEMmIGMpIG5vZXhjZXB0ICAvLyBO
T0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQotICAgIC0+IGRlY2x0eXBlKEdldERhdGFJbXBsKGMs
IDApKSB7Ci0gIHJldHVybiBHZXREYXRhSW1wbChjLCAwKTsKLX0KLQotLy8gRGV0ZWN0aW9uIGlk
aW9tcyBmb3Igc2l6ZSgpIGFuZCBkYXRhKCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KLXVzaW5n
IEhhc1NpemUgPQotICAgIHN0ZDo6aXNfaW50ZWdyYWw8YWJzbDo6ZGVjYXlfdDxkZWNsdHlwZShz
dGQ6OmRlY2x2YWw8QyY+KCkuc2l6ZSgpKT4+OwotCi0vLyBXZSB3YW50IHRvIGVuYWJsZSBjb252
ZXJzaW9uIGZyb20gdmVjdG9yPFQqPiB0byBTcGFuPGNvbnN0IFQqIGNvbnN0PiBidXQKLS8vIGRp
c2FibGUgY29udmVyc2lvbiBmcm9tIHZlY3RvcjxEZXJpdmVkPiB0byBTcGFuPEJhc2U+LiBIZXJl
IHdlIHVzZQotLy8gdGhlIGZhY3QgdGhhdCBVKiogaXMgY29udmVydGlibGUgdG8gUSogY29uc3Qq
IGlmIGFuZCBvbmx5IGlmIFEgaXMgdGhlIHNhbWUKLS8vIHR5cGUgb3IgYSBtb3JlIGN2LXF1YWxp
ZmllZCB2ZXJzaW9uIG9mIFUuICBXZSBhbHNvIGRlY2F5IHRoZSByZXN1bHQgdHlwZSBvZgotLy8g
ZGF0YSgpIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggY2xhc3NlcyB3aGljaCBoYXZlIGEgbWVtYmVy
IGZ1bmN0aW9uIGRhdGEoKQotLy8gd2hpY2ggcmV0dXJucyBhIHJlZmVyZW5jZS4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgotdXNpbmcgSGFzRGF0YSA9Ci0gICAgc3RkOjppc19j
b252ZXJ0aWJsZTxhYnNsOjpkZWNheV90PGRlY2x0eXBlKEdldERhdGEoc3RkOjpkZWNsdmFsPEMm
PigpKSk+KiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFQqIGNvbnN0Kj47Ci0KLS8vIEV4dHJh
Y3RzIHZhbHVlIHR5cGUgZnJvbSBhIENvbnRhaW5lcgotdGVtcGxhdGUgPHR5cGVuYW1lIEM+Ci1z
dHJ1Y3QgRWxlbWVudFR5cGUgewotICB1c2luZyB0eXBlID0gdHlwZW5hbWUgYWJzbDo6cmVtb3Zl
X3JlZmVyZW5jZV90PEM+Ojp2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHNpemVfdCBOPgotc3RydWN0IEVsZW1lbnRUeXBlPFQgKCYpW05dPiB7Ci0gIHVzaW5nIHR5cGUg
PSBUOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEM+Ci11c2luZyBFbGVtZW50VCA9IHR5cGVu
YW1lIEVsZW1lbnRUeXBlPEM+Ojp0eXBlOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXVzaW5n
IEVuYWJsZUlmTXV0YWJsZSA9Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNf
Y29uc3Q8VD46OnZhbHVlLCBpbnQ+Ojp0eXBlOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWJv
b2wgRXF1YWxJbXBsKFNwYW48VD4gYSwgU3BhbjxUPiBiKSB7Ci0gIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19jb25zdDxUPjo6dmFsdWUsICIiKTsKLSAgcmV0dXJuIGFic2w6OmVxdWFsKGEuYmVnaW4o
KSwgYS5lbmQoKSwgYi5iZWdpbigpLCBiLmVuZCgpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1ib29sIExlc3NUaGFuSW1wbChTcGFuPFQ+IGEsIFNwYW48VD4gYikgewotICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfY29uc3Q8VD46OnZhbHVlLCAiIik7Ci0gIHJldHVybiBzdGQ6OmxleGlj
b2dyYXBoaWNhbF9jb21wYXJlKGEuYmVnaW4oKSwgYS5lbmQoKSwgYi5iZWdpbigpLCBiLmVuZCgp
KTsKLX0KLQotLy8gVGhlIGBJc0NvbnZlcnRpYmxlYCBjbGFzc2VzIGhlcmUgYXJlIG5lZWRlZCBi
ZWNhdXNlIG9mIHRoZQotLy8gYHN0ZDo6aXNfY29udmVydGlibGVgIGJ1ZyBpbiBsaWJjeHggd2hl
biBjb21waWxlZCB3aXRoIEdDQy4gVGhpcyBidWlsZAotLy8gY29uZmlndXJhdGlvbiBpcyB1c2Vk
IGJ5IEFuZHJvaWQgTkRLIHRvb2xjaGFpbi4gUmVmZXJlbmNlIGxpbms6Ci0vLyBodHRwczovL2J1
Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTM4LgotdGVtcGxhdGUgPHR5cGVuYW1lIEZy
b20sIHR5cGVuYW1lIFRvPgotc3RydWN0IElzQ29udmVydGlibGVIZWxwZXIgewotIHByaXZhdGU6
Ci0gIHN0YXRpYyBzdGQ6OnRydWVfdHlwZSB0ZXN0dmFsKFRvKTsKLSAgc3RhdGljIHN0ZDo6ZmFs
c2VfdHlwZSB0ZXN0dmFsKC4uLik7Ci0KLSBwdWJsaWM6Ci0gIHVzaW5nIHR5cGUgPSBkZWNsdHlw
ZSh0ZXN0dmFsKHN0ZDo6ZGVjbHZhbDxGcm9tPigpKSk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgSXNDb252ZXJ0aWJsZSA6IElzQ29udmVydGli
bGVIZWxwZXI8RnJvbSwgVG8+Ojp0eXBlIHt9OwotCi0vLyBUT0RPKHpoYW5neHkpOiByZXBsYWNl
IGBJc0NvbnZlcnRpYmxlYCB3aXRoIGBzdGQ6OmlzX2NvbnZlcnRpYmxlYCBvbmNlIHRoZQotLy8g
b2xkZXIgdmVyc2lvbiBvZiBsaWJjeHggaXMgbm90IHN1cHBvcnRlZC4KLXRlbXBsYXRlIDx0eXBl
bmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXVzaW5nIEVuYWJsZUlmQ29udmVydGlibGVUb1NwYW5D
b25zdCA9Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNDb252ZXJ0aWJsZTxGcm9tLCBT
cGFuPGNvbnN0IFRvPj46OnZhbHVlPjo6dHlwZTsKLX0gIC8vIG5hbWVzcGFjZSBzcGFuX2ludGVy
bmFsCi0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBTcGFuCiAvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtNDg1LDYgKzM4OCw0MCBAQCBjbGFzcyBTcGFuIHsKICAgICAgICAgICAgICAg
IDogKGJhc2VfaW50ZXJuYWw6OlRocm93U3RkT3V0T2ZSYW5nZSgicG9zID4gc2l6ZSgpIiksIFNw
YW4oKSk7CiAgIH0KIAorICAvLyBTcGFuOjpmaXJzdCgpCisgIC8vCisgIC8vIFJldHVybnMgYSBg
U3BhbmAgY29udGFpbmluZyBmaXJzdCBgbGVuYCBlbGVtZW50cy4gUGFyYW1ldGVyIGBsZW5gIGlz
IG9mCisgIC8vIHR5cGUgYHNpemVfdHlwZWAgYW5kIHRodXMgbm9uLW5lZ2F0aXZlLiBgbGVuYCB2
YWx1ZSBtdXN0IGJlIDw9IHNpemUoKS4KKyAgLy8KKyAgLy8gRXhhbXBsZXM6CisgIC8vCisgIC8v
ICAgc3RkOjp2ZWN0b3I8aW50PiB2ZWMgPSB7MTAsIDExLCAxMiwgMTN9OworICAvLyAgIGFic2w6
Ok1ha2VTcGFuKHZlYykuZmlyc3QoMSk7ICAvLyB7MTB9CisgIC8vICAgYWJzbDo6TWFrZVNwYW4o
dmVjKS5maXJzdCgzKTsgIC8vIHsxMCwgMTEsIDEyfQorICAvLyAgIGFic2w6Ok1ha2VTcGFuKHZl
YykuZmlyc3QoNSk7ICAvLyB0aHJvd3Mgc3RkOjpvdXRfb2ZfcmFuZ2UKKyAgY29uc3RleHByIFNw
YW4gZmlyc3Qoc2l6ZV90eXBlIGxlbikgY29uc3QgeworICAgIHJldHVybiAobGVuIDw9IHNpemUo
KSkKKyAgICAgICAgICAgICAgID8gU3BhbihkYXRhKCksIGxlbikKKyAgICAgICAgICAgICAgIDog
KGJhc2VfaW50ZXJuYWw6OlRocm93U3RkT3V0T2ZSYW5nZSgibGVuID4gc2l6ZSgpIiksIFNwYW4o
KSk7CisgIH0KKworICAvLyBTcGFuOjpsYXN0KCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGBTcGFu
YCBjb250YWluaW5nIGxhc3QgYGxlbmAgZWxlbWVudHMuIFBhcmFtZXRlciBgbGVuYCBpcyBvZgor
ICAvLyB0eXBlIGBzaXplX3R5cGVgIGFuZCB0aHVzIG5vbi1uZWdhdGl2ZS4gYGxlbmAgdmFsdWUg
bXVzdCBiZSA8PSBzaXplKCkuCisgIC8vCisgIC8vIEV4YW1wbGVzOgorICAvLworICAvLyAgIHN0
ZDo6dmVjdG9yPGludD4gdmVjID0gezEwLCAxMSwgMTIsIDEzfTsKKyAgLy8gICBhYnNsOjpNYWtl
U3Bhbih2ZWMpLmxhc3QoMSk7ICAvLyB7MTN9CisgIC8vICAgYWJzbDo6TWFrZVNwYW4odmVjKS5s
YXN0KDMpOyAgLy8gezExLCAxMiwgMTN9CisgIC8vICAgYWJzbDo6TWFrZVNwYW4odmVjKS5sYXN0
KDUpOyAgLy8gdGhyb3dzIHN0ZDo6b3V0X29mX3JhbmdlCisgIGNvbnN0ZXhwciBTcGFuIGxhc3Qo
c2l6ZV90eXBlIGxlbikgY29uc3QgeworICAgIHJldHVybiAobGVuIDw9IHNpemUoKSkKKyAgICAg
ICAgICAgICAgID8gU3BhbihzaXplKCkgLSBsZW4gKyBkYXRhKCksIGxlbikKKyAgICAgICAgICAg
ICAgIDogKGJhc2VfaW50ZXJuYWw6OlRocm93U3RkT3V0T2ZSYW5nZSgibGVuID4gc2l6ZSgpIiks
IFNwYW4oKSk7CisgIH0KKwogICAvLyBTdXBwb3J0IGZvciBhYnNsOjpIYXNoLgogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSD4KICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIFNwYW4gdikgewpA
QCAtNTE3LDI1ICs0NTQsMjcgQEAgY29uc3QgdHlwZW5hbWUgU3BhbjxUPjo6c2l6ZV90eXBlIFNw
YW48VD46Om5wb3M7CiAvLyBvcGVyYXRvcj09CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGJvb2wg
b3BlcmF0b3I9PShTcGFuPFQ+IGEsIFNwYW48VD4gYikgewotICByZXR1cm4gc3Bhbl9pbnRlcm5h
bDo6RXF1YWxJbXBsPGNvbnN0IFQ+KGEsIGIpOworICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6RXF1
YWxJbXBsPFNwYW4sIGNvbnN0IFQ+KGEsIGIpOwogfQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBi
b29sIG9wZXJhdG9yPT0oU3Bhbjxjb25zdCBUPiBhLCBTcGFuPFQ+IGIpIHsKLSAgcmV0dXJuIHNw
YW5faW50ZXJuYWw6OkVxdWFsSW1wbDxjb25zdCBUPihhLCBiKTsKKyAgcmV0dXJuIHNwYW5faW50
ZXJuYWw6OkVxdWFsSW1wbDxTcGFuLCBjb25zdCBUPihhLCBiKTsKIH0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogYm9vbCBvcGVyYXRvcj09KFNwYW48VD4gYSwgU3Bhbjxjb25zdCBUPiBiKSB7Ci0g
IHJldHVybiBzcGFuX2ludGVybmFsOjpFcXVhbEltcGw8Y29uc3QgVD4oYSwgYik7CisgIHJldHVy
biBzcGFuX2ludGVybmFsOjpFcXVhbEltcGw8U3BhbiwgY29uc3QgVD4oYSwgYik7CiB9Ci10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKLSAgICAgICAgICB0eXBlbmFtZSA9IHNwYW5f
aW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUb1NwYW5Db25zdDxVLCBUPj4KK3RlbXBsYXRl
IDwKKyAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRl
cm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvPFUsIGFic2w6OlNwYW48Y29uc3QgVD4+PgogYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFUmIGEsIFNwYW48VD4gYikgewotICByZXR1cm4gc3Bhbl9pbnRl
cm5hbDo6RXF1YWxJbXBsPGNvbnN0IFQ+KGEsIGIpOworICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6
RXF1YWxJbXBsPFNwYW4sIGNvbnN0IFQ+KGEsIGIpOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsCi0gICAgICAgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJ
ZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3Q8VSwgVD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwKKyAgICB0eXBlbmFtZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29u
dmVydGlibGVUbzxVLCBhYnNsOjpTcGFuPGNvbnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3I9PShTcGFu
PFQ+IGEsIGNvbnN0IFUmIGIpIHsKLSAgcmV0dXJuIHNwYW5faW50ZXJuYWw6OkVxdWFsSW1wbDxj
b25zdCBUPihhLCBiKTsKKyAgcmV0dXJuIHNwYW5faW50ZXJuYWw6OkVxdWFsSW1wbDxTcGFuLCBj
b25zdCBUPihhLCBiKTsKIH0KIAogLy8gb3BlcmF0b3IhPQpAQCAtNTUxLDEzICs0OTAsMTUgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBib29sIG9wZXJhdG9yIT0oU3BhbjxUPiBhLCBTcGFuPGNv
bnN0IFQ+IGIpIHsKICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLAotICAgICAgICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6RW5hYmxl
SWZDb252ZXJ0aWJsZVRvU3BhbkNvbnN0PFUsIFQ+PgordGVtcGxhdGUgPAorICAgIHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsCisgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNv
bnZlcnRpYmxlVG88VSwgYWJzbDo6U3Bhbjxjb25zdCBUPj4+CiBib29sIG9wZXJhdG9yIT0oY29u
c3QgVSYgYSwgU3BhbjxUPiBiKSB7CiAgIHJldHVybiAhKGEgPT0gYik7CiB9Ci10ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKLSAgICAgICAgICB0eXBlbmFtZSA9IHNwYW5faW50ZXJu
YWw6OkVuYWJsZUlmQ29udmVydGlibGVUb1NwYW5Db25zdDxVLCBUPj4KK3RlbXBsYXRlIDwKKyAg
ICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6
RW5hYmxlSWZDb252ZXJ0aWJsZVRvPFUsIGFic2w6OlNwYW48Y29uc3QgVD4+PgogYm9vbCBvcGVy
YXRvciE9KFNwYW48VD4gYSwgY29uc3QgVSYgYikgewogICByZXR1cm4gIShhID09IGIpOwogfQpA
QCAtNTY1LDI1ICs1MDYsMjcgQEAgYm9vbCBvcGVyYXRvciE9KFNwYW48VD4gYSwgY29uc3QgVSYg
YikgewogLy8gb3BlcmF0b3I8CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGJvb2wgb3BlcmF0b3I8
KFNwYW48VD4gYSwgU3BhbjxUPiBiKSB7Ci0gIHJldHVybiBzcGFuX2ludGVybmFsOjpMZXNzVGhh
bkltcGw8Y29uc3QgVD4oYSwgYik7CisgIHJldHVybiBzcGFuX2ludGVybmFsOjpMZXNzVGhhbklt
cGw8U3BhbiwgY29uc3QgVD4oYSwgYik7CiB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGJvb2wg
b3BlcmF0b3I8KFNwYW48Y29uc3QgVD4gYSwgU3BhbjxUPiBiKSB7Ci0gIHJldHVybiBzcGFuX2lu
dGVybmFsOjpMZXNzVGhhbkltcGw8Y29uc3QgVD4oYSwgYik7CisgIHJldHVybiBzcGFuX2ludGVy
bmFsOjpMZXNzVGhhbkltcGw8U3BhbiwgY29uc3QgVD4oYSwgYik7CiB9CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KIGJvb2wgb3BlcmF0b3I8KFNwYW48VD4gYSwgU3Bhbjxjb25zdCBUPiBiKSB7Ci0g
IHJldHVybiBzcGFuX2ludGVybmFsOjpMZXNzVGhhbkltcGw8Y29uc3QgVD4oYSwgYik7CisgIHJl
dHVybiBzcGFuX2ludGVybmFsOjpMZXNzVGhhbkltcGw8U3BhbiwgY29uc3QgVD4oYSwgYik7CiB9
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKLSAgICAgICAgICB0eXBlbmFtZSA9
IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUb1NwYW5Db25zdDxVLCBUPj4KK3Rl
bXBsYXRlIDwKKyAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIHR5cGVuYW1lID0gc3Bh
bl9pbnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvPFUsIGFic2w6OlNwYW48Y29uc3QgVD4+
PgogYm9vbCBvcGVyYXRvcjwoY29uc3QgVSYgYSwgU3BhbjxUPiBiKSB7Ci0gIHJldHVybiBzcGFu
X2ludGVybmFsOjpMZXNzVGhhbkltcGw8Y29uc3QgVD4oYSwgYik7CisgIHJldHVybiBzcGFuX2lu
dGVybmFsOjpMZXNzVGhhbkltcGw8U3BhbiwgY29uc3QgVD4oYSwgYik7CiB9Ci10ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKLSAgICAgICAgICB0eXBlbmFtZSA9IHNwYW5faW50ZXJu
YWw6OkVuYWJsZUlmQ29udmVydGlibGVUb1NwYW5Db25zdDxVLCBUPj4KK3RlbXBsYXRlIDwKKyAg
ICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6
RW5hYmxlSWZDb252ZXJ0aWJsZVRvPFUsIGFic2w6OlNwYW48Y29uc3QgVD4+PgogYm9vbCBvcGVy
YXRvcjwoU3BhbjxUPiBhLCBjb25zdCBVJiBiKSB7Ci0gIHJldHVybiBzcGFuX2ludGVybmFsOjpM
ZXNzVGhhbkltcGw8Y29uc3QgVD4oYSwgYik7CisgIHJldHVybiBzcGFuX2ludGVybmFsOjpMZXNz
VGhhbkltcGw8U3BhbiwgY29uc3QgVD4oYSwgYik7CiB9CiAKIC8vIG9wZXJhdG9yPgpAQCAtNTk5
LDEzICs1NDIsMTUgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBib29sIG9wZXJhdG9yPihTcGFu
PFQ+IGEsIFNwYW48Y29uc3QgVD4gYikgewogICByZXR1cm4gYiA8IGE7CiB9Ci10ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKLSAgICAgICAgICB0eXBlbmFtZSA9IHNwYW5faW50ZXJu
YWw6OkVuYWJsZUlmQ29udmVydGlibGVUb1NwYW5Db25zdDxVLCBUPj4KK3RlbXBsYXRlIDwKKyAg
ICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6
RW5hYmxlSWZDb252ZXJ0aWJsZVRvPFUsIGFic2w6OlNwYW48Y29uc3QgVD4+PgogYm9vbCBvcGVy
YXRvcj4oY29uc3QgVSYgYSwgU3BhbjxUPiBiKSB7CiAgIHJldHVybiBiIDwgYTsKIH0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAotICAgICAgICAgIHR5cGVuYW1lID0gc3Bhbl9p
bnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvU3BhbkNvbnN0PFUsIFQ+PgordGVtcGxhdGUg
PAorICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCisgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVy
bmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG88VSwgYWJzbDo6U3Bhbjxjb25zdCBUPj4+CiBib29s
IG9wZXJhdG9yPihTcGFuPFQ+IGEsIGNvbnN0IFUmIGIpIHsKICAgcmV0dXJuIGIgPCBhOwogfQpA
QCAtNjIzLDEzICs1NjgsMTUgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBib29sIG9wZXJhdG9y
PD0oU3BhbjxUPiBhLCBTcGFuPGNvbnN0IFQ+IGIpIHsKICAgcmV0dXJuICEoYiA8IGEpOwogfQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAgICAgICAgdHlwZW5hbWUgPSBz
cGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3Q8VSwgVD4+Cit0ZW1w
bGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAgICB0eXBlbmFtZSA9IHNwYW5f
aW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNsOjpTcGFuPGNvbnN0IFQ+Pj4K
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBVJiBhLCBTcGFuPFQ+IGIpIHsKICAgcmV0dXJuICEoYiA8
IGEpOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAgICAgICAgdHlw
ZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3Q8VSwg
VD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAgICB0eXBlbmFt
ZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNsOjpTcGFuPGNv
bnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3I8PShTcGFuPFQ+IGEsIGNvbnN0IFUmIGIpIHsKICAgcmV0
dXJuICEoYiA8IGEpOwogfQpAQCAtNjQ3LDEzICs1OTQsMTUgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiBib29sIG9wZXJhdG9yPj0oU3BhbjxUPiBhLCBTcGFuPGNvbnN0IFQ+IGIpIHsKICAgcmV0
dXJuICEoYSA8IGIpOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAg
ICAgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFu
Q29uc3Q8VSwgVD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAg
ICB0eXBlbmFtZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNs
OjpTcGFuPGNvbnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVJiBhLCBTcGFuPFQ+IGIp
IHsKICAgcmV0dXJuICEoYSA8IGIpOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsCi0gICAgICAgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRp
YmxlVG9TcGFuQ29uc3Q8VSwgVD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwKKyAgICB0eXBlbmFtZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVU
bzxVLCBhYnNsOjpTcGFuPGNvbnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3I+PShTcGFuPFQ+IGEsIGNv
bnN0IFUmIGIpIHsKICAgcmV0dXJuICEoYSA8IGIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXMvc3Bhbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvc3Bhbl90ZXN0LmNjCmluZGV4IGJkNzM5ZmYy
YTA3MGE2ZmNlYzFhNjRlYTEzM2QxYjgxZjAwY2ZjN2EuLjkyNjlmOTExZjA0MmJhYTI0NDNkMzY2
YTA4Y2E3ZjgzNmRiZTIzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW5fdGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9zcGFuX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTEzOSw4ICsxMzksMTAgQEAgVEVTVChDaGFyU3BhbiwgU3RyaW5n
Q3RvcikgewogICBFWFBFQ1RfVEhBVChzX2NvbnN0X2FiYywgU3BhbklzKGFiYykpOwogCiAgIEVY
UEVDVF9GQUxTRSgoc3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6OlNwYW48aW50Piwgc3RkOjpz
dHJpbmc+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRkFMU0UoKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxh
YnNsOjpTcGFuPGNvbnN0IGludD4sIHN0ZDo6c3RyaW5nPjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RS
VUUoKHN0ZDo6aXNfY29udmVydGlibGU8c3RkOjpzdHJpbmcsIGFic2w6OlNwYW48Y29uc3QgY2hh
cj4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb25zdHJ1Y3Rp
YmxlPGFic2w6OlNwYW48Y29uc3QgaW50Piwgc3RkOjpzdHJpbmc+Ojp2YWx1ZSkpOworICBFWFBF
Q1RfVFJVRSgKKyAgICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxlPHN0ZDo6c3RyaW5nLCBhYnNsOjpT
cGFuPGNvbnN0IGNoYXI+Pjo6dmFsdWUpKTsKIH0KIAogVEVTVChJbnRTcGFuLCBGcm9tQ29uc3RQ
b2ludGVyKSB7CkBAIC0yOTMsNiArMjk1LDM4IEBAIFRFU1QoSW50U3BhbiwgU3Vic3Bhbikgewog
I2VuZGlmCiB9CiAKK1RFU1QoSW50U3BhbiwgRmlyc3QpIHsKKyAgc3RkOjp2ZWN0b3I8aW50PiBl
bXB0eTsKKyAgRVhQRUNUX1RIQVQoYWJzbDo6TWFrZVNwYW4oZW1wdHkpLmZpcnN0KDApLCBTcGFu
SXMoZW1wdHkpKTsKKworICBhdXRvIHJhbXAgPSBNYWtlUmFtcCgxMCk7CisgIEVYUEVDVF9USEFU
KGFic2w6Ok1ha2VTcGFuKHJhbXApLmZpcnN0KDApLCBTcGFuSXMocmFtcC5kYXRhKCksIDApKTsK
KyAgRVhQRUNUX1RIQVQoYWJzbDo6TWFrZVNwYW4ocmFtcCkuZmlyc3QoMTApLCBTcGFuSXMocmFt
cCkpOworICBFWFBFQ1RfVEhBVChhYnNsOjpNYWtlU3BhbihyYW1wKS5maXJzdCgzKSwgU3Bhbklz
KHJhbXAuZGF0YSgpLCAzKSk7CisKKyNpZmRlZiBBQlNMX0hBVkVfRVhDRVBUSU9OUworICBFWFBF
Q1RfVEhST1coYWJzbDo6TWFrZVNwYW4ocmFtcCkuZmlyc3QoMTEpLCBzdGQ6Om91dF9vZl9yYW5n
ZSk7CisjZWxzZQorICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGFic2w6Ok1ha2VTcGFuKHJh
bXApLmZpcnN0KDExKSwgIiIpOworI2VuZGlmCit9CisKK1RFU1QoSW50U3BhbiwgTGFzdCkgewor
ICBzdGQ6OnZlY3RvcjxpbnQ+IGVtcHR5OworICBFWFBFQ1RfVEhBVChhYnNsOjpNYWtlU3Bhbihl
bXB0eSkubGFzdCgwKSwgU3BhbklzKGVtcHR5KSk7CisKKyAgYXV0byByYW1wID0gTWFrZVJhbXAo
MTApOworICBFWFBFQ1RfVEhBVChhYnNsOjpNYWtlU3BhbihyYW1wKS5sYXN0KDApLCBTcGFuSXMo
cmFtcC5kYXRhKCkgKyAxMCwgMCkpOworICBFWFBFQ1RfVEhBVChhYnNsOjpNYWtlU3BhbihyYW1w
KS5sYXN0KDEwKSwgU3BhbklzKHJhbXApKTsKKyAgRVhQRUNUX1RIQVQoYWJzbDo6TWFrZVNwYW4o
cmFtcCkubGFzdCgzKSwgU3BhbklzKHJhbXAuZGF0YSgpICsgNywgMykpOworCisjaWZkZWYgQUJT
TF9IQVZFX0VYQ0VQVElPTlMKKyAgRVhQRUNUX1RIUk9XKGFic2w6Ok1ha2VTcGFuKHJhbXApLmxh
c3QoMTEpLCBzdGQ6Om91dF9vZl9yYW5nZSk7CisjZWxzZQorICBFWFBFQ1RfREVBVEhfSUZfU1VQ
UE9SVEVEKGFic2w6Ok1ha2VTcGFuKHJhbXApLmxhc3QoMTEpLCAiIik7CisjZW5kaWYKK30KKwog
VEVTVChJbnRTcGFuLCBNYWtlU3BhblB0ckxlbmd0aCkgewogICBzdGQ6OnZlY3RvcjxpbnQ+IGVt
cHR5OwogICBhdXRvIHNfZW1wdHkgPSBhYnNsOjpNYWtlU3BhbihlbXB0eS5kYXRhKCksIGVtcHR5
LnNpemUoKSk7CkBAIC03NjcsNiArODAxLDggQEAgVEVTVChDb25zdEludFNwYW4sIENvbnN0ZXhw
clRlc3QpIHsKICAgQUJTTF9URVNUX0NPTlNURVhQUihzcGFuLmJlZ2luKCkpOwogICBBQlNMX1RF
U1RfQ09OU1RFWFBSKHNwYW4uY2JlZ2luKCkpOwogICBBQlNMX1RFU1RfQ09OU1RFWFBSKHNwYW4u
c3Vic3BhbigwLCAwKSk7CisgIEFCU0xfVEVTVF9DT05TVEVYUFIoc3Bhbi5maXJzdCgxKSk7Cisg
IEFCU0xfVEVTVF9DT05TVEVYUFIoc3Bhbi5sYXN0KDEpKTsKICAgQUJTTF9URVNUX0NPTlNURVhQ
UihzcGFuWzBdKTsKIH0KIApAQCAtNzc5LDQgKzgxNSwxOSBAQCBURVNUKFNwYW4sIFNwYW5TaXpl
KSB7CiAgIEVYUEVDVF9MRShzaXplb2YoYWJzbDo6U3BhbjxCaWdTdHJ1Y3Q+KSwgMiAqIHNpemVv
Zih2b2lkKikpOwogfQogCitURVNUKFNwYW4sIEhhc2gpIHsKKyAgaW50IGFycmF5W10gPSB7MSwg
MiwgMywgNH07CisgIGludCBhcnJheTJbXSA9IHsxLCAyLCAzfTsKKyAgdXNpbmcgVCA9IGFic2w6
OlNwYW48Y29uc3QgaW50PjsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVu
dHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIHsvLyBFbXB0aWVzCisgICAgICAgVCgpLCBUKG51
bGxwdHIsIDApLCBUKGFycmF5LCAwKSwgVChhcnJheTIsIDApLAorICAgICAgIC8vIERpZmZlcmVu
dCBhcnJheSB3aXRoIHNhbWUgdmFsdWUKKyAgICAgICBUKGFycmF5LCAzKSwgVChhcnJheTIpLCBU
KHsxLCAyLCAzfSksCisgICAgICAgLy8gU2FtZSBhcnJheSwgYnV0IGRpZmZlcmVudCBsZW5ndGgK
KyAgICAgICBUKGFycmF5LCAxKSwgVChhcnJheSwgMiksCisgICAgICAgLy8gU2FtZSBsZW5ndGgs
IGJ1dCBkaWZmZXJlbnQgYXJyYXkKKyAgICAgICBUKGFycmF5ICsgMSwgMiksIFQoYXJyYXkgKyAy
LCAyKX0pKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92
YXJpYW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50LmgKaW5kZXggMmY3ODcyMmY4YjdjOTU2ZDZk
MTc2ZTkwMmQ0ZTAwOWNhOTY5NGEyZC4uZWJkNTJkMjhiNzExMTY5NmU2Yzc1Mjc0OWUwOTZhZjcy
MmEyZGFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzL3ZhcmlhbnQuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApA
QCAtNDcsNyArNDcsNyBAQAogCiAjaWZkZWYgQUJTTF9IQVZFX1NURF9WQVJJQU5UCiAKLSNpbmNs
dWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHZhcmlhbnQ+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0
CiAKIG5hbWVzcGFjZSBhYnNsIHsKIHVzaW5nIHN0ZDo6YmFkX3ZhcmlhbnRfYWNjZXNzOwpAQCAt
ODIsNyArODIsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyBhYnNsOjp2YXJpYW50CiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogLy8KLS8vIEFuICdhYnNsOjp2YXJpYW50YCB0eXBlIGlzIGEgZm9y
bSBvZiB0eXBlLXNhZmUgdW5pb24uIEFuIGBhYnNsOjp2YXJpYW50YCAtLQorLy8gQW4gYGFic2w6
OnZhcmlhbnRgIHR5cGUgaXMgYSBmb3JtIG9mIHR5cGUtc2FmZSB1bmlvbi4gQW4gYGFic2w6OnZh
cmlhbnRgIC0tCiAvLyBleGNlcHQgaW4gZXhjZXB0aW9uYWwgY2FzZXMgLS0gYWx3YXlzIGhvbGRz
IGEgdmFsdWUgb2Ygb25lIG9mIGl0cyBhbHRlcm5hdGl2ZQogLy8gdHlwZXMuCiAvLwpAQCAtMTI5
LDE0ICsxMjksMTkgQEAgY2xhc3MgdmFyaWFudDsKIC8vIHR5cGUgKGluIHdoaWNoIGNhc2UsIHRo
ZXkgd2lsbCBiZSBzd2FwcGVkKSBvciB0byB0d28gZGlmZmVyZW50IHR5cGVzIChpbgogLy8gd2hp
Y2ggY2FzZSB0aGUgdmFsdWVzIHdpbGwgbmVlZCB0byBiZSBtb3ZlZCkuCiAvLwotdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIFRzPgordGVtcGxhdGUgPAorICAgIHR5cGVuYW1lLi4uIFRzLAorICAgIGFi
c2w6OmVuYWJsZV9pZl90PAorICAgICAgICBhYnNsOjpjb25qdW5jdGlvbjxzdGQ6OmlzX21vdmVf
Y29uc3RydWN0aWJsZTxUcz4uLi4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfdHJh
aXRzX2ludGVybmFsOjpJc1N3YXBwYWJsZTxUcz4uLi4+Ojp2YWx1ZSwKKyAgICAgICAgaW50PiA9
IDA+CiB2b2lkIHN3YXAodmFyaWFudDxUcy4uLj4mIHYsIHZhcmlhbnQ8VHMuLi4+JiB3KSBub2V4
Y2VwdChub2V4Y2VwdCh2LnN3YXAodykpKSB7CiAgIHYuc3dhcCh3KTsKIH0KIAogLy8gdmFyaWFu
dF9zaXplCiAvLwotLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFsdGVyYXRpdmUgdHlwZXMgYXZh
aWxhYmxlIGZvciBhIGdpdmVuIGBhYnNsOjp2YXJpYW50YAorLy8gUmV0dXJucyB0aGUgbnVtYmVy
IG9mIGFsdGVybmF0aXZlIHR5cGVzIGF2YWlsYWJsZSBmb3IgYSBnaXZlbiBgYWJzbDo6dmFyaWFu
dGAKIC8vIHR5cGUgYXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQgZXhwcmVzc2lvbi4gQXMgdGhp
cyBpcyBhIGNsYXNzIHRlbXBsYXRlLCBpdAogLy8gaXMgbm90IGdlbmVyYWxseSB1c2VmdWwgZm9y
IGFjY2Vzc2luZyB0aGUgbnVtYmVyIG9mIGFsdGVybmF0aXZlIHR5cGVzIG9mCiAvLyBhbnkgZ2l2
ZW4gYGFic2w6OnZhcmlhbnRgIGluc3RhbmNlLgpAQCAtMzk5LDkgKzQwNCw5IEBAIGNvbnN0ZXhw
ciBhYnNsOjphZGRfcG9pbnRlcl90PGNvbnN0IFQ+IGdldF9pZigKIC8vIENhbGxzIGEgcHJvdmlk
ZWQgZnVuY3RvciBvbiBhIGdpdmVuIHNldCBvZiB2YXJpYW50cy4gYGFic2w6OnZpc2l0KClgIGlz
CiAvLyBjb21tb25seSB1c2VkIHRvIGNvbmRpdGlvbmFsbHkgaW5zcGVjdCB0aGUgc3RhdGUgb2Yg
YSBnaXZlbiB2YXJpYW50IChvciBzZXQKIC8vIG9mIHZhcmlhbnRzKS4KLS8vIFJlcXVpcmVzOiBU
aGUgZXhwcmVzc2lvbiBpbiB0aGUgRWZmZWN0czogZWxlbWVudCBzaGFsbCBiZSBhIHZhbGlkIGV4
cHJlc3Npb24KLS8vIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGNhdGVnb3J5LCBmb3IgYWxs
IGNvbWJpbmF0aW9ucyBvZiBhbHRlcm5hdGl2ZQotLy8gdHlwZXMgb2YgYWxsIHZhcmlhbnRzLiBP
dGhlcndpc2UsIHRoZSBwcm9ncmFtIGlzIGlsbC1mb3JtZWQuCisvLworLy8gVGhlIGZ1bmN0b3Ig
bXVzdCByZXR1cm4gdGhlIHNhbWUgdHlwZSB3aGVuIGNhbGxlZCB3aXRoIGFueSBvZiB0aGUgdmFy
aWFudHMnCisvLyBhbHRlcm5hdGl2ZXMuCiAvLwogLy8gRXhhbXBsZToKIC8vCkBAIC00MTQsNiAr
NDE5LDcgQEAgY29uc3RleHByIGFic2w6OmFkZF9wb2ludGVyX3Q8Y29uc3QgVD4gZ2V0X2lmKAog
Ly8gICB9OwogLy8KIC8vICAgLy8gRGVjbGFyZSBvdXIgdmFyaWFudCwgYW5kIGNhbGwgYGFic2w6
OnZpc2l0KClgIG9uIGl0LgorLy8gICAvLyBOb3RlIHRoYXQgYEdldFZhcmlhbnQoKWAgcmV0dXJu
cyB2b2lkIGluIGVpdGhlciBjYXNlLgogLy8gICBhYnNsOjp2YXJpYW50PGludCwgc3RkOjpzdHJp
bmc+IGZvbyA9IHN0ZDo6c3RyaW5nKCJmb28iKTsKIC8vICAgR2V0VmFyaWFudCB2aXNpdG9yOwog
Ly8gICBhYnNsOjp2aXNpdCh2aXNpdG9yLCBmb28pOyAgLy8gUHJpbnRzIGBUaGUgdmFyaWFudCdz
IHZhbHVlIGlzOiBmb28nCkBAIC00NTMsNyArNDU5LDcgQEAgY2xhc3MgdmFyaWFudDxUMCwgVG4u
Li4+IDogcHJpdmF0ZSB2YXJpYW50X2ludGVybmFsOjpWYXJpYW50QmFzZTxUMCwgVG4uLi4+IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX29iamVjdDxUbj4uLi4+
Ojp2YWx1ZSwKICAgICAgICAgICAgICAgICAiQXR0ZW1wdGVkIHRvIGluc3RhbnRpYXRlIGEgdmFy
aWFudCBjb250YWluaW5nIGEgbm9uLW9iamVjdCAiCiAgICAgICAgICAgICAgICAgInR5cGUuIik7
Ci0gIC8vIEludGVudGlvbmFsbHkgbm90IHF1YWxpZmluZyBgbmVnYXRpb25gIHdpdGggYGFic2w6
OmAgdG8gd29yayBhcm91bmQgYSBidWcKKyAgLy8gSW50ZW50aW9uYWxseSBub3QgcXVhbGlmeWlu
ZyBgbmVnYXRpb25gIHdpdGggYGFic2w6OmAgdG8gd29yayBhcm91bmQgYSBidWcKICAgLy8gaW4g
TVNWQyAyMDE1IHdpdGggaW5saW5lIG5hbWVzcGFjZSBhbmQgdmFyaWFkaWMgdGVtcGxhdGUuCiAg
IHN0YXRpY19hc3NlcnQoYWJzbDo6Y29uanVuY3Rpb248bmVnYXRpb248c3RkOjppc19hcnJheTxU
MD4gPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdhdGlvbjxzdGQ6Omlz
X2FycmF5PFRuPiA+Li4uPjo6dmFsdWUsCkBAIC01NjEsNyArNTY3LDcgQEAgY2xhc3MgdmFyaWFu
dDxUMCwgVG4uLi4+IDogcHJpdmF0ZSB2YXJpYW50X2ludGVybmFsOjpWYXJpYW50QmFzZTxUMCwg
VG4uLi4+IHsKIAogICAvLyBBc3NpZ25tZW50IE9wZXJhdG9ycwogCi0gIC8vIENvcHkgYXNzaWdu
ZW1lbnQgb3BlcmF0b3IKKyAgLy8gQ29weSBhc3NpZ25tZW50IG9wZXJhdG9yCiAgIHZhcmlhbnQm
IG9wZXJhdG9yPShjb25zdCB2YXJpYW50JiBvdGhlcikgPSBkZWZhdWx0OwogCiAgIC8vIE1vdmUg
YXNzaWdubWVudCBvcGVyYXRvcgpAQCAtNjg3LDEyICs2OTMsMTIgQEAgY2xhc3MgdmFyaWFudDxU
MCwgVG4uLi4+IDogcHJpdmF0ZSB2YXJpYW50X2ludGVybmFsOjpWYXJpYW50QmFzZTxUMCwgVG4u
Li4+IHsKICAgLy8KICAgLy8gU3dhcHMgdGhlIHZhbHVlcyBvZiB0d28gdmFyaWFudCBvYmplY3Rz
LgogICAvLwotICAvLyBUT0RPKGNhbGFicmVzZSkKLSAgLy8gICBgdmFyaWFudDo6c3dhcCgpYCBh
bmQgYHN3YXAoKWAgcmVseSBvbiBgc3RkOjppc18obm90aHJvdylfc3dhcHBhYmxlKClgCi0gIC8v
ICAgd2hpY2ggaXMgaW50cm9kdWNlZCBpbiBDKysxNy4gU28gd2UgYXNzdW1lIGBpc19zd2FwcGFi
bGUoKWAgaXMgYWx3YXlzCi0gIC8vICAgdHJ1ZSBhbmQgYGlzX25vdGhyb3dfc3dhcHBhYmxlKClg
IGlzIHNhbWUgYXMgYHN0ZDo6aXNfdHJpdmlhbCgpYC4KICAgdm9pZCBzd2FwKHZhcmlhbnQmIHJo
cykgbm9leGNlcHQoCi0gICAgICBhYnNsOjpjb25qdW5jdGlvbjxzdGQ6OmlzX3RyaXZpYWw8VDA+
LCBzdGQ6OmlzX3RyaXZpYWw8VG4+Li4uPjo6dmFsdWUpIHsKKyAgICAgIGFic2w6OmNvbmp1bmN0
aW9uPAorICAgICAgICAgIHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8VDA+LAor
ICAgICAgICAgIHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8VG4+Li4uLAorICAg
ICAgICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc05vdGhyb3dTd2FwcGFibGU8VDA+LAorICAg
ICAgICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc05vdGhyb3dTd2FwcGFibGU8VG4+Li4uPjo6
dmFsdWUpIHsKICAgICByZXR1cm4gdmFyaWFudF9pbnRlcm5hbDo6VmlzaXRJbmRpY2VzPHNpemVv
Zi4uLihUbikgKyAxPjo6UnVuKAogICAgICAgICB2YXJpYW50X2ludGVybmFsOjpTd2FwPFQwLCBU
bi4uLj57dGhpcywgJnJoc30sIHJocy5pbmRleCgpKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvdmFyaWFudF9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X2JlbmNobWFy
ay5jYwppbmRleCA5OTY1OGFjNzBjNDY0MzgwMjNhNTFjYTMzMDQ4MTJmYWEyNzA3ZWZkLi5hNWY1
MjE2NDQxNDI2NmE5NzRhYTEzY2QwNDA0N2UxZmQ4NWM5MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
eXBlcy92YXJpYW50X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X2JlbmNo
bWFyay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy92YXJpYW50X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwppbmRleCA1ODQzNmYwN2I4
NDM3NDhlN2E2M2QxMWM4MjllMTZmNTU1MWE2ZGI4Li43NmJlYjU5NTkyNWQ2Njk3MGRhZjRmYTEw
NGI5YTZiYmEwMDhkODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X2V4Y2VwdGlv
bl9zYWZldHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdC5jYwpAQCAtNCwxMyArNCwxNCBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCiAjaW5jbHVkZSAiYWJzbC90eXBlcy92YXJpYW50LmgiCiAKICNpbmNsdWRl
IDxpb3N0cmVhbT4KQEAgLTIwLDkgKzIxLDEzIEBACiAKICNpbmNsdWRlICJnbW9jay9nbW9jay5o
IgogI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbmZpZy5o
IgogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fc2FmZXR5X3Rlc3Rpbmcu
aCIKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKIAorLy8gU2VlIGNvbW1lbnQgaW4g
YWJzbC9iYXNlL2NvbmZpZy5oCisjaWYgIWRlZmluZWQoQUJTTF9JTlRFUk5BTF9NU1ZDXzIwMTdf
REJHX01PREUpCisKIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSB7CiAKQEAgLTMxMSw2ICsz
MTYsMTIgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgTW92ZUFzc2lnbikgewog
ICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aENvbnRyYWN0cyhzdHJvbmdfZ3VhcmFudGVlKS5U
ZXN0KCkpOwogICB9CiAgIHsKKyAgICAvLyBsaWJzdGRjKysgaW50cm9kdWNlZCBhIHJlZ3Jlc3Np
b24gYmV0d2VlbiAyMDE4LTA5LTI1IGFuZCAyMDE5LTAxLTA2LgorICAgIC8vIFRoZSBmaXggaXMg
dGFyZ2V0ZWQgZm9yIGdjYy05LgorICAgIC8vIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEv
c2hvd19idWcuY2dpP2lkPTg3NDMxI2M3CisgICAgLy8gaHR0cHM6Ly9nY2MuZ251Lm9yZy92aWV3
Y3ZzL2djYz92aWV3PXJldmlzaW9uJnJldmlzaW9uPTI2NzYxNAorI2lmICEoZGVmaW5lZChBQlNM
X0hBVkVfU1REX1ZBUklBTlQpICYmIFwKKyAgICAgIGRlZmluZWQoX0dMSUJDWFhfUkVMRUFTRSkg
JiYgX0dMSUJDWFhfUkVMRUFTRSA9PSA4KQogICAgIC8vIC0gb3RoZXJ3aXNlIChpbmRleCgpICE9
IGopLCBlcXVpdmFsZW50IHRvCiAgICAgLy8gZW1wbGFjZTxqPihnZXQ8aj4oc3RkOjptb3ZlKHJo
cykpKQogICAgIC8vIC0gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgdGhlIGNhbGwg
dG8gVGoncyBtb3ZlIGNvbnN0cnVjdGlvbgpAQCAtMzI2LDYgKzMzNyw4IEBAIFRFU1QoVmFyaWFu
dEV4Y2VwdGlvblNhZmV0eVRlc3QsIE1vdmVBc3NpZ24pIHsKICAgICAgICAgICAgICAgICAgICAg
ICBhdXRvIGNvcHkgPSByaHM7CiAgICAgICAgICAgICAgICAgICAgICAgKmxocyA9IHN0ZDo6bW92
ZShjb3B5KTsKICAgICAgICAgICAgICAgICAgICAgfSkpOworI2VuZGlmICAvLyAhKGRlZmluZWQo
QUJTTF9IQVZFX1NURF9WQVJJQU5UKSAmJgorICAgICAgICAvLyAgIGRlZmluZWQoX0dMSUJDWFhf
UkVMRUFTRSkgJiYgX0dMSUJDWFhfUkVMRUFTRSA9PSA4KQogICB9CiB9CiAKQEAgLTUwNiwzICs1
MTksNSBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBTd2FwKSB7CiAKIH0gIC8v
IG5hbWVzcGFjZQogfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyAhZGVmaW5lZChB
QlNMX0lOVEVSTkFMX01TVkNfMjAxN19EQkdfTU9ERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
L3ZhcmlhbnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfdGVzdC5jYwppbmRleCBiZmI4
YmQ3YTAyMjNmM2NkOTgzNGU0NzY0ZGM1YTczYmMxNjY0ZGVmLi44NTIwMWIzZWE2NTlmYzc5YjM1
NjkxNzI2NjViMjhjNWUxOWQ0YmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC01Miw3ICs1Miw3IEBACiAjZW5kaWYgIC8vIEFC
U0xfSEFWRV9FWENFUFRJT05TCiAKICNkZWZpbmUgQUJTTF9WQVJJQU5UX1RFU1RfRVhQRUNUX0JB
RF9WQVJJQU5UX0FDQ0VTUyguLi4pICAgICAgICAgICAgICAgICBcCi0gIEFCU0xfVkFSSUFOVF9U
RVNUX0VYUEVDVF9GQUlMKChfX1ZBX0FSR1NfXyksIGFic2w6OmJhZF92YXJpYW50X2FjY2Vzcywg
XAorICBBQlNMX1ZBUklBTlRfVEVTVF9FWFBFQ1RfRkFJTCgodm9pZCkoX19WQV9BUkdTX18pLCBh
YnNsOjpiYWRfdmFyaWFudF9hY2Nlc3MsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkJhZCB2YXJpYW50IGFjY2VzcyIpCiAKIHN0cnVjdCBIYXNoYWJsZSB7fTsKQEAgLTI1Nyw3
ICsyNTcsNyBAQCBjbGFzcyBOb25Db3B5YWJsZSB7CiAvLyBlYWNoIHR5cGUuCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIGNsYXNzIFZhcmlhbnRUeXBlc1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHt9OwotVFlQRURfVEVTVF9DQVNFKFZhcmlhbnRUeXBlc1Rlc3QsIFZhcmlhbnRUeXBlcyk7
CitUWVBFRF9URVNUX1NVSVRFKFZhcmlhbnRUeXBlc1Rlc3QsIFZhcmlhbnRUeXBlcyk7CiAKIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vCiAvLyBbdmFyaWFudC5jdG9yXSAvLwpAQCAtMzg0LDcgKzM4NCw3
IEBAIHN0cnVjdCBNb3ZlT25seSB7CiBURVNUKFZhcmlhbnRUZXN0LCBUZXN0TW92ZUNvbnN0cnVj
dCkgewogICB1c2luZyBWID0gdmFyaWFudDxNb3ZlT25seTxjbGFzcyBBPiwgTW92ZU9ubHk8Y2xh
c3MgQj4sIE1vdmVPbmx5PGNsYXNzIEM+PjsKIAotICBWIHYoaW5fcGxhY2VfaW5kZXhfdDwxPnt9
LCAxMCk7CisgIFYgdihpbl9wbGFjZV9pbmRleDwxPiwgMTApOwogICBWIHYyID0gYWJzbDo6bW92
ZSh2KTsKICAgRVhQRUNUX0VRKDEwLCBhYnNsOjpnZXQ8MT4odjIpLnZhbHVlKTsKIH0KQEAgLTQ2
MCw2ICs0NjAsMTEgQEAgVFlQRURfVEVTVChWYXJpYW50VHlwZXNUZXN0LCBUZXN0VmFsdWVDdG9y
KSB7CiAgIEVYUEVDVF9FUSh2YWx1ZS52YWx1ZSwgbXV0YWJsZV92YWxwdHItPnZhbHVlKTsKIH0K
IAorVEVTVChWYXJpYW50VGVzdCwgQW1iaWd1b3VzVmFsdWVDb25zdHJ1Y3RvcikgeworICBFWFBF
Q1RfRkFMU0UoKHN0ZDo6aXNfY29udmVydGlibGU8aW50LCBhYnNsOjp2YXJpYW50PGludCwgaW50
Pj46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoc3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6
OnZhcmlhbnQ8aW50LCBpbnQ+LCBpbnQ+Ojp2YWx1ZSkpOworfQorCiBURVNUKFZhcmlhbnRUZXN0
LCBJblBsYWNlVHlwZSkgewogICB1c2luZyBWYXIgPSB2YXJpYW50PGludCwgc3RkOjpzdHJpbmcs
IE5vbkNvcHlhYmxlLCBzdGQ6OnZlY3RvcjxpbnQ+PjsKIApAQCAtNDgzLDE0ICs0ODgsNDcgQEAg
VEVTVChWYXJpYW50VGVzdCwgSW5QbGFjZVR5cGUpIHsKICAgRVhQRUNUX1RIQVQoYWJzbDo6Z2V0
PHN0ZDo6dmVjdG9yPGludD4+KHY1KSwgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZSgxLCAyLCAzKSk7
CiB9CiAKK1RFU1QoVmFyaWFudFRlc3QsIEluUGxhY2VUeXBlVmFyaWFibGVUZW1wbGF0ZSkgewor
ICB1c2luZyBWYXIgPSB2YXJpYW50PGludCwgc3RkOjpzdHJpbmcsIE5vbkNvcHlhYmxlLCBzdGQ6
OnZlY3RvcjxpbnQ+PjsKKworICBWYXIgdjEoaW5fcGxhY2VfdHlwZTxpbnQ+LCA3KTsKKyAgQVNT
RVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8aW50Pih2MSkpOworICBFWFBFQ1RfRVEo
NywgYWJzbDo6Z2V0PGludD4odjEpKTsKKworICBWYXIgdjIoaW5fcGxhY2VfdHlwZTxzdGQ6OnN0
cmluZz4sICJBQkMiKTsKKyAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3Rk
OjpzdHJpbmc+KHYyKSk7CisgIEVYUEVDVF9FUSgiQUJDIiwgYWJzbDo6Z2V0PHN0ZDo6c3RyaW5n
Pih2MikpOworCisgIFZhciB2Myhpbl9wbGFjZV90eXBlPHN0ZDo6c3RyaW5nPiwgIkFCQyIsIDIp
OworICBBU1NFUlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnN0cmluZz4odjMp
KTsKKyAgRVhQRUNUX0VRKCJBQiIsIGFic2w6OmdldDxzdGQ6OnN0cmluZz4odjMpKTsKKworICBW
YXIgdjQoaW5fcGxhY2VfdHlwZTxOb25Db3B5YWJsZT4pOworICBBU1NFUlRfVFJVRShhYnNsOjpo
b2xkc19hbHRlcm5hdGl2ZTxOb25Db3B5YWJsZT4odjQpKTsKKworICBWYXIgdjUoaW5fcGxhY2Vf
dHlwZTxzdGQ6OnZlY3RvcjxpbnQ+PiwgezEsIDIsIDN9KTsKKyAgQVNTRVJUX1RSVUUoYWJzbDo6
aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjp2ZWN0b3I8aW50Pj4odjUpKTsKKyAgRVhQRUNUX1RIQVQo
YWJzbDo6Z2V0PHN0ZDo6dmVjdG9yPGludD4+KHY1KSwgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZSgx
LCAyLCAzKSk7Cit9CisKIFRFU1QoVmFyaWFudFRlc3QsIEluUGxhY2VUeXBlSW5pdGlhbGl6ZXJM
aXN0KSB7Ci0gIHVzaW5nIFZhciA9IHZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZywgTm9uQ29weWFi
bGUsIE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj47CisgIHVzaW5nIFZhciA9CisgICAgICB2
YXJpYW50PGludCwgc3RkOjpzdHJpbmcsIE5vbkNvcHlhYmxlLCBNb3ZlT25seVdpdGhMaXN0Q29u
c3RydWN0b3I+OwogCiAgIFZhciB2MShpbl9wbGFjZV90eXBlX3Q8TW92ZU9ubHlXaXRoTGlzdENv
bnN0cnVjdG9yPigpLCB7MSwgMiwgMywgNCwgNX0sIDYpOwogICBBU1NFUlRfVFJVRShhYnNsOjpo
b2xkc19hbHRlcm5hdGl2ZTxNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+KHYxKSk7CiAgIEVY
UEVDVF9FUSg2LCBhYnNsOjpnZXQ8TW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPih2MSkudmFs
dWUpOwogfQogCitURVNUKFZhcmlhbnRUZXN0LCBJblBsYWNlVHlwZUluaXRpYWxpemVyTGlzdFZh
cmlhYmxldGVtcGxhdGUpIHsKKyAgdXNpbmcgVmFyID0KKyAgICAgIHZhcmlhbnQ8aW50LCBzdGQ6
OnN0cmluZywgTm9uQ29weWFibGUsIE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj47CisKKyAg
VmFyIHYxKGluX3BsYWNlX3R5cGU8TW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPiwgezEsIDIs
IDMsIDQsIDV9LCA2KTsKKyAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8TW92
ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPih2MSkpOworICBFWFBFQ1RfRVEoNiwgYWJzbDo6Z2V0
PE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj4odjEpLnZhbHVlKTsKK30KKwogVEVTVChWYXJp
YW50VGVzdCwgSW5QbGFjZUluZGV4KSB7CiAgIHVzaW5nIFZhciA9IHZhcmlhbnQ8aW50LCBzdGQ6
OnN0cmluZywgTm9uQ29weWFibGUsIHN0ZDo6dmVjdG9yPGludD4+OwogCkBAIC01MTgsMTQgKzU1
Niw1MSBAQCBURVNUKFZhcmlhbnRUZXN0LCBJblBsYWNlSW5kZXgpIHsKICAgRVhQRUNUX1RIQVQo
YWJzbDo6Z2V0PHN0ZDo6dmVjdG9yPGludD4+KHY1KSwgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZSgx
LCAyLCAzKSk7CiB9CiAKK1RFU1QoVmFyaWFudFRlc3QsIEluUGxhY2VJbmRleFZhcmlhYmxlVGVt
cGxhdGUpIHsKKyAgdXNpbmcgVmFyID0gdmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5
YWJsZSwgc3RkOjp2ZWN0b3I8aW50Pj47CisKKyAgVmFyIHYxKGluX3BsYWNlX2luZGV4PDA+LCA3
KTsKKyAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8aW50Pih2MSkpOworICBF
WFBFQ1RfRVEoNywgYWJzbDo6Z2V0PGludD4odjEpKTsKKworICBWYXIgdjIoaW5fcGxhY2VfaW5k
ZXg8MT4sICJBQkMiKTsKKyAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3Rk
OjpzdHJpbmc+KHYyKSk7CisgIEVYUEVDVF9FUSgiQUJDIiwgYWJzbDo6Z2V0PHN0ZDo6c3RyaW5n
Pih2MikpOworCisgIFZhciB2Myhpbl9wbGFjZV9pbmRleDwxPiwgIkFCQyIsIDIpOworICBBU1NF
UlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnN0cmluZz4odjMpKTsKKyAgRVhQ
RUNUX0VRKCJBQiIsIGFic2w6OmdldDxzdGQ6OnN0cmluZz4odjMpKTsKKworICBWYXIgdjQoaW5f
cGxhY2VfaW5kZXg8Mj4pOworICBFWFBFQ1RfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTxO
b25Db3B5YWJsZT4odjQpKTsKKworICAvLyBWZXJpZnkgdGhhdCBhIHZhcmlhbnQgd2l0aCBvbmx5
IG5vbi1jb3B5YWJsZXMgY2FuIHN0aWxsIGJlIGNvbnN0cnVjdGVkLgorICBFWFBFQ1RfVFJVRShh
YnNsOjpob2xkc19hbHRlcm5hdGl2ZTxOb25Db3B5YWJsZT4oCisgICAgICB2YXJpYW50PE5vbkNv
cHlhYmxlPihpbl9wbGFjZV9pbmRleDwwPikpKTsKKworICBWYXIgdjUoaW5fcGxhY2VfaW5kZXg8
Mz4sIHsxLCAyLCAzfSk7CisgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPHN0
ZDo6dmVjdG9yPGludD4+KHY1KSk7CisgIEVYUEVDVF9USEFUKGFic2w6OmdldDxzdGQ6OnZlY3Rv
cjxpbnQ+Pih2NSksIDo6dGVzdGluZzo6RWxlbWVudHNBcmUoMSwgMiwgMykpOworfQorCiBURVNU
KFZhcmlhbnRUZXN0LCBJblBsYWNlSW5kZXhJbml0aWFsaXplckxpc3QpIHsKLSAgdXNpbmcgVmFy
ID0gdmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5YWJsZSwgTW92ZU9ubHlXaXRoTGlz
dENvbnN0cnVjdG9yPjsKKyAgdXNpbmcgVmFyID0KKyAgICAgIHZhcmlhbnQ8aW50LCBzdGQ6OnN0
cmluZywgTm9uQ29weWFibGUsIE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj47CiAKICAgVmFy
IHYxKGluX3BsYWNlX2luZGV4X3Q8Mz4oKSwgezEsIDIsIDMsIDQsIDV9LCA2KTsKICAgQVNTRVJU
X1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8TW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9y
Pih2MSkpOwogICBFWFBFQ1RfRVEoNiwgYWJzbDo6Z2V0PE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1
Y3Rvcj4odjEpLnZhbHVlKTsKIH0KIAorVEVTVChWYXJpYW50VGVzdCwgSW5QbGFjZUluZGV4SW5p
dGlhbGl6ZXJMaXN0VmFyaWFibGVUZW1wbGF0ZSkgeworICB1c2luZyBWYXIgPQorICAgICAgdmFy
aWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5YWJsZSwgTW92ZU9ubHlXaXRoTGlzdENvbnN0
cnVjdG9yPjsKKworICBWYXIgdjEoaW5fcGxhY2VfaW5kZXg8Mz4sIHsxLCAyLCAzLCA0LCA1fSwg
Nik7CisgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPE1vdmVPbmx5V2l0aExp
c3RDb25zdHJ1Y3Rvcj4odjEpKTsKKyAgRVhQRUNUX0VRKDYsIGFic2w6OmdldDxNb3ZlT25seVdp
dGhMaXN0Q29uc3RydWN0b3I+KHYxKS52YWx1ZSk7Cit9CisKIC8vLy8vLy8vLy8vLy8vLy8vLy8v
CiAvLyBbdmFyaWFudC5kdG9yXSAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTU2MCwxNSAr
NjM1LDIxIEBAIFRFU1QoVmFyaWFudFRlc3QsIFRlc3REdG9yKSB7CiAKICNpZmRlZiBBQlNMX0hB
VkVfRVhDRVBUSU9OUwogCisvLyBTZWUgY29tbWVudCBpbiBhYnNsL2Jhc2UvY29uZmlnLmgKKyNp
ZiBkZWZpbmVkKEFCU0xfSU5URVJOQUxfTVNWQ18yMDE3X0RCR19NT0RFKQorVEVTVChWYXJpYW50
VGVzdCwgRElTQUJMRURfVGVzdER0b3JWYWx1ZWxlc3NCeUV4Y2VwdGlvbikKKyNlbHNlCiAvLyBU
ZXN0IGRlc3RydWN0aW9uIHdoZW4gaW4gdGhlIHZhbHVlbGVzc19ieV9leGNlcHRpb24gc3RhdGUu
Ci1URVNUKFZhcmlhbnRUZXN0LCBUZXN0RHRvclZhbHVlbGVzc0J5RXhjZXB0aW9uKSB7CitURVNU
KFZhcmlhbnRUZXN0LCBUZXN0RHRvclZhbHVlbGVzc0J5RXhjZXB0aW9uKQorI2VuZGlmCit7CiAg
IGludCBjb3VudGVyID0gMDsKICAgSW5jcmVtZW50SW5EdG9yIGNvdW50ZXJfYWRqdXN0ZXIoJmNv
dW50ZXIpOwogCiAgIHsKICAgICB1c2luZyBWYXJpYW50ID0gVmFyaWFudEZhY3Rvcnk8SW5jcmVt
ZW50SW5EdG9yPjo6VHlwZTsKIAotICAgIFZhcmlhbnQgdihpbl9wbGFjZV9pbmRleF90PDA+KCks
IGNvdW50ZXJfYWRqdXN0ZXIpOworICAgIFZhcmlhbnQgdihpbl9wbGFjZV9pbmRleDwwPiwgY291
bnRlcl9hZGp1c3Rlcik7CiAgICAgRVhQRUNUX0VRKDAsIGNvdW50ZXIpOwogCiAgICAgVG9WYWx1
ZWxlc3NCeUV4Y2VwdGlvbih2KTsKQEAgLTgwMiw3ICs4ODMsNyBAQCBURVNUKFZhcmlhbnRUZXN0
LCBUZXN0QmFja3VwQXNzaWduKSB7CiBURVNUKFZhcmlhbnRUZXN0LCBUZXN0RW1wbGFjZUJhc2lj
KSB7CiAgIHVzaW5nIFZhcmlhbnQgPSB2YXJpYW50PGludCwgY2hhcj47CiAKLSAgVmFyaWFudCB2
KGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57fSwgMCk7CisgIFZhcmlhbnQgdihhYnNsOjppbl9w
bGFjZV9pbmRleDwwPiwgMCk7CiAKICAgewogICAgIGNoYXImIGVtcGxhY2VfcmVzdWx0ID0gdi5l
bXBsYWNlPGNoYXI+KCk7CkBAIC04MjYsOSArOTA3LDEwIEBAIFRFU1QoVmFyaWFudFRlc3QsIFRl
c3RFbXBsYWNlQmFzaWMpIHsKIH0KIAogVEVTVChWYXJpYW50VGVzdCwgVGVzdEVtcGxhY2VJbml0
aWFsaXplckxpc3QpIHsKLSAgdXNpbmcgVmFyID0gdmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBO
b25Db3B5YWJsZSwgTW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPjsKKyAgdXNpbmcgVmFyID0K
KyAgICAgIHZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZywgTm9uQ29weWFibGUsIE1vdmVPbmx5V2l0
aExpc3RDb25zdHJ1Y3Rvcj47CiAKLSAgVmFyIHYxKGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57
fSwgNTU1KTsKKyAgVmFyIHYxKGFic2w6OmluX3BsYWNlX2luZGV4PDA+LCA1NTUpOwogICBNb3Zl
T25seVdpdGhMaXN0Q29uc3RydWN0b3ImIGVtcGxhY2VfcmVzdWx0ID0KICAgICAgIHYxLmVtcGxh
Y2U8TW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPih7MSwgMiwgMywgNCwgNX0sIDYpOwogICBB
U1NFUlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTxNb3ZlT25seVdpdGhMaXN0Q29uc3Ry
dWN0b3I+KHYxKSk7CkBAIC04MzksNyArOTIxLDcgQEAgVEVTVChWYXJpYW50VGVzdCwgVGVzdEVt
cGxhY2VJbml0aWFsaXplckxpc3QpIHsKIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RFbXBsYWNlSW5k
ZXgpIHsKICAgdXNpbmcgVmFyaWFudCA9IHZhcmlhbnQ8aW50LCBjaGFyPjsKIAotICBWYXJpYW50
IHYoYWJzbDo6aW5fcGxhY2VfaW5kZXhfdDwwPnt9LCA1NTUpOworICBWYXJpYW50IHYoYWJzbDo6
aW5fcGxhY2VfaW5kZXg8MD4sIDU1NSk7CiAKICAgewogICAgIGNoYXImIGVtcGxhY2VfcmVzdWx0
ID0gdi5lbXBsYWNlPDE+KCk7CkBAIC04NjMsOSArOTQ1LDEwIEBAIFRFU1QoVmFyaWFudFRlc3Qs
IFRlc3RFbXBsYWNlSW5kZXgpIHsKIH0KIAogVEVTVChWYXJpYW50VGVzdCwgVGVzdEVtcGxhY2VJ
bmRleEluaXRpYWxpemVyTGlzdCkgewotICB1c2luZyBWYXIgPSB2YXJpYW50PGludCwgc3RkOjpz
dHJpbmcsIE5vbkNvcHlhYmxlLCBNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+OworICB1c2lu
ZyBWYXIgPQorICAgICAgdmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5YWJsZSwgTW92
ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPjsKIAotICBWYXIgdjEoYWJzbDo6aW5fcGxhY2VfaW5k
ZXhfdDwwPnt9LCA1NTUpOworICBWYXIgdjEoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4sIDU1NSk7
CiAgIE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3RvciYgZW1wbGFjZV9yZXN1bHQgPQogICAgICAg
djEuZW1wbGFjZTwzPih7MSwgMiwgMywgNCwgNX0sIDYpOwogICBBU1NFUlRfVFJVRShhYnNsOjpo
b2xkc19hbHRlcm5hdGl2ZTxNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+KHYxKSk7CkBAIC05
MTQsNyArOTk3LDcgQEAgVEVTVChWYXJpYW50VGVzdCwgTm90VmFsdWVsZXNzQnlFeGNlcHRpb24p
IHsKIFRFU1QoVmFyaWFudFRlc3QsIEluZGV4VmFsdWVsZXNzQnlFeGNlcHRpb24pIHsKICAgdXNp
bmcgVmFyID0gdmFyaWFudDxNb3ZlQ2FuVGhyb3csIHN0ZDo6c3RyaW5nLCBkb3VibGU+OwogCi0g
IFZhciB2KGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57fSk7CisgIFZhciB2KGFic2w6OmluX3Bs
YWNlX2luZGV4PDA+KTsKICAgRVhQRUNUX0VRKDAsIHYuaW5kZXgoKSk7CiAgIFRvVmFsdWVsZXNz
QnlFeGNlcHRpb24odik7CiAgIEVYUEVDVF9FUShhYnNsOjp2YXJpYW50X25wb3MsIHYuaW5kZXgo
KSk7CkBAIC05MjUsNyArMTAwOCw3IEBAIFRFU1QoVmFyaWFudFRlc3QsIEluZGV4VmFsdWVsZXNz
QnlFeGNlcHRpb24pIHsKIFRFU1QoVmFyaWFudFRlc3QsIFZhbHVlbGVzc0J5RXhjZXB0aW9uKSB7
CiAgIHVzaW5nIFZhciA9IHZhcmlhbnQ8TW92ZUNhblRocm93LCBzdGQ6OnN0cmluZywgZG91Ymxl
PjsKIAotICBWYXIgdihhYnNsOjppbl9wbGFjZV9pbmRleF90PDA+e30pOworICBWYXIgdihhYnNs
Ojppbl9wbGFjZV9pbmRleDwwPik7CiAgIEVYUEVDVF9GQUxTRSh2LnZhbHVlbGVzc19ieV9leGNl
cHRpb24oKSk7CiAgIFRvVmFsdWVsZXNzQnlFeGNlcHRpb24odik7CiAgIEVYUEVDVF9UUlVFKHYu
dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpKTsKQEAgLTk1Niw3ICsxMDM5LDcgQEAgVEVTVChWYXJp
YW50VGVzdCwgTWVtYmVyU3dhcCkgewogICB1c2luZyBWID0gdmFyaWFudDxNb3ZlQ2FuVGhyb3cs
IHN0ZDo6c3RyaW5nLCBpbnQ+OwogICBpbnQgaSA9IDMzOwogICBzdGQ6OnN0cmluZyBzID0gImFi
YyI7Ci0gIFYgdmFsdWVsZXNzKGluX3BsYWNlX2luZGV4X3Q8MD57fSk7CisgIFYgdmFsdWVsZXNz
KGluX3BsYWNlX2luZGV4PDA+KTsKICAgVG9WYWx1ZWxlc3NCeUV4Y2VwdGlvbih2YWx1ZWxlc3Mp
OwogICB7CiAgICAgLy8gbGhzIGFuZCByaHMgaG9sZHMgZGlmZmVyZW50IGFsdGVybmF0aXZlCkBA
IC0xMTE3LDcgKzEyMDAsNyBAQCBURVNUKFZhcmlhbnRUZXN0LCBHZXRJbmRleCkgewogICB1c2lu
ZyBWYXIgPSB2YXJpYW50PGludCwgc3RkOjpzdHJpbmcsIGRvdWJsZSwgaW50PjsKIAogICB7Ci0g
ICAgVmFyIHYoYWJzbDo6aW5fcGxhY2VfaW5kZXhfdDwwPnt9LCAwKTsKKyAgICBWYXIgdihhYnNs
Ojppbl9wbGFjZV9pbmRleDwwPiwgMCk7CiAKICAgICB1c2luZyBMVmFsdWVHZXRUeXBlID0gZGVj
bHR5cGUoYWJzbDo6Z2V0PDA+KHYpKTsKICAgICB1c2luZyBSVmFsdWVHZXRUeXBlID0gZGVjbHR5
cGUoYWJzbDo6Z2V0PDA+KGFic2w6Om1vdmUodikpKTsKQEAgLTExNzcsNyArMTI2MCw3IEBAIFRF
U1QoVmFyaWFudFRlc3QsIEdldEluZGV4KSB7CiAgIH0KIAogICB7Ci0gICAgVmFyIHYoYWJzbDo6
aW5fcGxhY2VfaW5kZXhfdDwwPnt9LCAwKTsKKyAgICBWYXIgdihhYnNsOjppbl9wbGFjZV9pbmRl
eDwwPiwgMCk7CiAgICAgdi5lbXBsYWNlPDM+KDEpOwogCiAgICAgdXNpbmcgTFZhbHVlR2V0VHlw
ZSA9IGRlY2x0eXBlKGFic2w6OmdldDwzPih2KSk7CkBAIC0xMzAxLDcgKzEzODQsOCBAQCBURVNU
KFZhcmlhbnRUZXN0LCBCYWRHZXRUeXBlKSB7CiAgICAgICAgIGFic2w6OmdldDxzdGQ6OnN0cmlu
Zz4oc3RkOjptb3ZlKHYpKSk7CiAKICAgICBjb25zdCBWYXImIGNvbnN0X3YgPSB2OwotICAgIEFC
U0xfVkFSSUFOVF9URVNUX0VYUEVDVF9CQURfVkFSSUFOVF9BQ0NFU1MoYWJzbDo6Z2V0PHN0ZDo6
c3RyaW5nPihjb25zdF92KSk7CisgICAgQUJTTF9WQVJJQU5UX1RFU1RfRVhQRUNUX0JBRF9WQVJJ
QU5UX0FDQ0VTUygKKyAgICAgICAgYWJzbDo6Z2V0PHN0ZDo6c3RyaW5nPihjb25zdF92KSk7CiAg
ICAgQUJTTF9WQVJJQU5UX1RFU1RfRVhQRUNUX0JBRF9WQVJJQU5UX0FDQ0VTUygKICAgICAgICAg
YWJzbDo6Z2V0PHN0ZDo6c3RyaW5nPihzdGQ6Om1vdmUoY29uc3RfdikpKTsgIC8vIE5PTElOVAog
ICB9CkBAIC0xMzIzLDcgKzE0MDcsNyBAQCBURVNUKFZhcmlhbnRUZXN0LCBHZXRJZkluZGV4KSB7
CiAgIHVzaW5nIFZhciA9IHZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZywgZG91YmxlLCBpbnQ+Owog
CiAgIHsKLSAgICBWYXIgdihhYnNsOjppbl9wbGFjZV9pbmRleF90PDA+e30sIDApOworICAgIFZh
ciB2KGFic2w6OmluX3BsYWNlX2luZGV4PDA+LCAwKTsKICAgICBFWFBFQ1RfVFJVRShub2V4Y2Vw
dChhYnNsOjpnZXRfaWY8MD4oJnYpKSk7CiAKICAgICB7CkBAIC0xMzU4LDcgKzE0NDIsOCBAQCBU
RVNUKFZhcmlhbnRUZXN0LCBHZXRJZkluZGV4KSB7CiAgICAgICBFWFBFQ1RfRVEoKmVsZW0sIDAp
OwogICAgICAgewogICAgICAgICBhdXRvKiBiYWRfZWxlbSA9IGFic2w6OmdldF9pZjwxPigmY29u
c3Rfdik7Ci0gICAgICAgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoYmFkX2Vs
ZW0pLCBjb25zdCBzdGQ6OnN0cmluZyo+Ojp2YWx1ZSkpOworICAgICAgICBFWFBFQ1RfVFJVRSgK
KyAgICAgICAgICAgIChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoYmFkX2VsZW0pLCBjb25zdCBzdGQ6
OnN0cmluZyo+Ojp2YWx1ZSkpOwogICAgICAgICBFWFBFQ1RfRVEoYmFkX2VsZW0sIG51bGxwdHIp
OwogICAgICAgfQogICAgICAgewpAQCAtMTQ2Nyw3ICsxNTUyLDggQEAgVEVTVChWYXJpYW50VGVz
dCwgR2V0SWZJbmRleCkgewogICAgICAgfQogICAgICAgewogICAgICAgICBhdXRvKiBiYWRfZWxl
bSA9IGFic2w6OmdldF9pZjwxPigmY29uc3Rfdik7Ci0gICAgICAgIEVYUEVDVF9UUlVFKChzdGQ6
OmlzX3NhbWU8ZGVjbHR5cGUoYmFkX2VsZW0pLCBjb25zdCBzdGQ6OnN0cmluZyo+Ojp2YWx1ZSkp
OworICAgICAgICBFWFBFQ1RfVFJVRSgKKyAgICAgICAgICAgIChzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUoYmFkX2VsZW0pLCBjb25zdCBzdGQ6OnN0cmluZyo+Ojp2YWx1ZSkpOwogICAgICAgICBFWFBF
Q1RfRVEoYmFkX2VsZW0sIG51bGxwdHIpOwogICAgICAgfQogICAgICAgewpAQCAtMTQ3OSw3ICsx
NTY1LDcgQEAgVEVTVChWYXJpYW50VGVzdCwgR2V0SWZJbmRleCkgewogICB9CiAKICAgewotICAg
IFZhciB2KGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57fSwgMCk7CisgICAgVmFyIHYoYWJzbDo6
aW5fcGxhY2VfaW5kZXg8MD4sIDApOwogICAgIHYuZW1wbGFjZTwzPigxKTsKICAgICBFWFBFQ1Rf
VFJVRShub2V4Y2VwdChhYnNsOjpnZXRfaWY8Mz4oJnYpKSk7CiAKQEAgLTE1MjAsNyArMTYwNiw4
IEBAIFRFU1QoVmFyaWFudFRlc3QsIEdldElmSW5kZXgpIHsKICAgICAgIH0KICAgICAgIHsKICAg
ICAgICAgYXV0byogYmFkX2VsZW0gPSBhYnNsOjpnZXRfaWY8MT4oJmNvbnN0X3YpOwotICAgICAg
ICBFWFBFQ1RfVFJVRSgoc3RkOjppc19zYW1lPGRlY2x0eXBlKGJhZF9lbGVtKSwgY29uc3Qgc3Rk
OjpzdHJpbmcqPjo6dmFsdWUpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoCisgICAgICAgICAgICAo
c3RkOjppc19zYW1lPGRlY2x0eXBlKGJhZF9lbGVtKSwgY29uc3Qgc3RkOjpzdHJpbmcqPjo6dmFs
dWUpKTsKICAgICAgICAgRVhQRUNUX0VRKGJhZF9lbGVtLCBudWxscHRyKTsKICAgICAgIH0KICAg
ICAgIHsKQEAgLTE2MjQsOCArMTcxMSw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIE9wZXJhdG9yUmVs
YXRpb25hbCkgewogCiBURVNUKFZhcmlhbnRUZXN0LCBWYWx1ZWxlc3NPcGVyYXRvckVxdWFscykg
ewogICB2YXJpYW50PE1vdmVDYW5UaHJvdywgc3RkOjpzdHJpbmc+IGludF92KDEpLCBzdHJpbmdf
digiSGVsbG8iKSwKLSAgICAgIHZhbHVlbGVzcyhhYnNsOjppbl9wbGFjZV9pbmRleF90PDA+e30p
LAotICAgICAgb3RoZXJfdmFsdWVsZXNzKGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57fSk7Cisg
ICAgICB2YWx1ZWxlc3MoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4pLAorICAgICAgb3RoZXJfdmFs
dWVsZXNzKGFic2w6OmluX3BsYWNlX2luZGV4PDA+KTsKICAgVG9WYWx1ZWxlc3NCeUV4Y2VwdGlv
bih2YWx1ZWxlc3MpOwogICBUb1ZhbHVlbGVzc0J5RXhjZXB0aW9uKG90aGVyX3ZhbHVlbGVzcyk7
CiAKQEAgLTE2NDYsOCArMTczMyw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIFZhbHVlbGVzc09wZXJh
dG9yRXF1YWxzKSB7CiAKIFRFU1QoVmFyaWFudFRlc3QsIFZhbHVlbGVzc09wZXJhdG9yUmVsYXRp
b25hbCkgewogICB2YXJpYW50PE1vdmVDYW5UaHJvdywgc3RkOjpzdHJpbmc+IGludF92KDEpLCBz
dHJpbmdfdigiSGVsbG8iKSwKLSAgICAgIHZhbHVlbGVzcyhhYnNsOjppbl9wbGFjZV9pbmRleF90
PDA+e30pLAotICAgICAgb3RoZXJfdmFsdWVsZXNzKGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57
fSk7CisgICAgICB2YWx1ZWxlc3MoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4pLAorICAgICAgb3Ro
ZXJfdmFsdWVsZXNzKGFic2w6OmluX3BsYWNlX2luZGV4PDA+KTsKICAgVG9WYWx1ZWxlc3NCeUV4
Y2VwdGlvbih2YWx1ZWxlc3MpOwogICBUb1ZhbHVlbGVzc0J5RXhjZXB0aW9uKG90aGVyX3ZhbHVl
bGVzcyk7CiAKQEAgLTE3MDYsOCArMTc5Myw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIFZpc2l0U2lt
cGxlKSB7CiAgIEVYUEVDVF9FUSgiQiIsIHBpZWNlKTsKIAogICBzdHJ1Y3QgU3RyTGVuIHsKLSAg
ICBpbnQgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnN0cmluZyYgcykgY29uc3QgeyByZXR1cm4gcy5z
aXplKCk7IH0KICAgICBpbnQgb3BlcmF0b3IoKShjb25zdCBjaGFyKiBzKSBjb25zdCB7IHJldHVy
biBzdHJsZW4ocyk7IH0KKyAgICBpbnQgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnN0cmluZyYgcykg
Y29uc3QgeyByZXR1cm4gcy5zaXplKCk7IH0KICAgfTsKIAogICB2ID0gIlNvbWVTdHIiOwpAQCAt
MTcyMyw5ICsxODEwLDEzIEBAIFRFU1QoVmFyaWFudFRlc3QsIFZpc2l0UlZhbHVlKSB7CiAgICAg
Ym9vbCBvcGVyYXRvcigpKHN0ZDo6c3RyaW5nJiYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0gIC8v
IE5PTElOVAogCiAgICAgaW50IG9wZXJhdG9yKCkoY29uc3Qgc3RkOjpzdHJpbmcmLCBjb25zdCBz
dGQ6OnN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICBpbnQgb3BlcmF0b3IoKShjb25z
dCBzdGQ6OnN0cmluZyYsIHN0ZDo6c3RyaW5nJiYpIGNvbnN0IHsgcmV0dXJuIDE7IH0gIC8vIE5P
TElOVAotICAgIGludCBvcGVyYXRvcigpKHN0ZDo6c3RyaW5nJiYsIGNvbnN0IHN0ZDo6c3RyaW5n
JikgY29uc3QgeyByZXR1cm4gMjsgfSAgLy8gTk9MSU5UCi0gICAgaW50IG9wZXJhdG9yKCkoc3Rk
OjpzdHJpbmcmJiwgc3RkOjpzdHJpbmcmJikgY29uc3QgeyByZXR1cm4gMzsgfSAgICAgICAvLyBO
T0xJTlQKKyAgICBpbnQgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnN0cmluZyYsIHN0ZDo6c3RyaW5n
JiYpIGNvbnN0IHsKKyAgICAgIHJldHVybiAxOworICAgIH0gIC8vIE5PTElOVAorICAgIGludCBv
cGVyYXRvcigpKHN0ZDo6c3RyaW5nJiYsIGNvbnN0IHN0ZDo6c3RyaW5nJikgY29uc3QgeworICAg
ICAgcmV0dXJuIDI7CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9MSU5UCisgICAgaW50IG9wZXJhdG9yKCko
c3RkOjpzdHJpbmcmJiwgc3RkOjpzdHJpbmcmJikgY29uc3QgeyByZXR1cm4gMzsgfSAgLy8gTk9M
SU5UCiAgIH07CiAgIEVYUEVDVF9GQUxTRShhYnNsOjp2aXNpdChWaXNpdG9ye30sIHYpKTsKICAg
RVhQRUNUX1RSVUUoYWJzbDo6dmlzaXQoVmlzaXRvcnt9LCBhYnNsOjptb3ZlKHYpKSk7CkBAIC0x
ODAxLDkgKzE4OTIsOSBAQCBURVNUKFZhcmlhbnRUZXN0LCBWaXNpdFZhcmlhZGljKSB7CiAgIEVY
UEVDVF9USEFUKGFic2w6OnZpc2l0KFZpc2l0b3IoKSwgQShzdGQ6OnN0cmluZygiQkJCQkIiKSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEIoc3RkOjp1bmlxdWVfcHRyPGludD4obmV3IGlu
dCg3KSkpKSwKICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpQYWlyKDUsIDcpKTsKLSAgRVhQRUNU
X1RIQVQoCi0gICAgICBhYnNsOjp2aXNpdChWaXNpdG9yKCksIEEoc3RkOjpzdHJpbmcoIkJCQkJC
IikpLCBCKGFic2w6OnN0cmluZ192aWV3KCJBQkMiKSkpLAotICAgICAgOjp0ZXN0aW5nOjpQYWly
KDUsIDMpKTsKKyAgRVhQRUNUX1RIQVQoYWJzbDo6dmlzaXQoVmlzaXRvcigpLCBBKHN0ZDo6c3Ry
aW5nKCJCQkJCQiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQihhYnNsOjpzdHJpbmdf
dmlldygiQUJDIikpKSwKKyAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpQYWlyKDUsIDMpKTsKIH0K
IAogVEVTVChWYXJpYW50VGVzdCwgVmlzaXROb0FyZ3MpIHsKQEAgLTE5NzIsMjkgKzIwNjMsMTcg
QEAgVEVTVChWYXJpYW50VGVzdCwgTW9ub3N0YXRlSGFzaCkgewogfQogCiBURVNUKFZhcmlhbnRU
ZXN0LCBIYXNoKSB7Ci0gIHN0YXRpY19hc3NlcnQodHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFz
aEVuYWJsZWQ8dmFyaWFudDxpbnQ+Pjo6dmFsdWUsICIiKTsKLSAgc3RhdGljX2Fzc2VydCh0eXBl
X3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoRW5hYmxlZDx2YXJpYW50PEhhc2hhYmxlPj46OnZhbHVl
LAorICBzdGF0aWNfYXNzZXJ0KHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hhYmxlPHZhcmlh
bnQ8aW50Pj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQodHlwZV90cmFpdHNfaW50ZXJu
YWw6OklzSGFzaGFibGU8dmFyaWFudDxIYXNoYWJsZT4+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNf
YXNzZXJ0KHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hhYmxlPHZhcmlhbnQ8aW50LCBIYXNo
YWJsZT4+Ojp2YWx1ZSwKICAgICAgICAgICAgICAgICAiIik7Ci0gIHN0YXRpY19hc3NlcnQoCi0g
ICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoRW5hYmxlZDx2YXJpYW50PGludCwgSGFz
aGFibGU+Pjo6dmFsdWUsICIiKTsKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKGRlZmluZWQoX0xJQkNQUF9WRVJTSU9O
KSAmJiBfTElCQ1BQX1ZFUlNJT04gPCA0MDAwICYmIFwKLSAgICAgX0xJQkNQUF9TVERfVkVSID4g
MTEpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRlZmluZWQoX19BUFBM
RV9fKQotICAvLyBGb3IgTVNWQyBhbmQgbGliYysrICg8IDQuMCBhbmQgYysrMTQpLCBzdGQ6Omhh
c2ggcHJpbWFyeSB0ZW1wbGF0ZSBoYXMgYQotICAvLyBzdGF0aWNfYXNzZXJ0IHRvIGNhdGNoIGFu
eSB1c2VyLWRlZmluZWQgdHlwZSBUIHRoYXQgZG9lc24ndCBwcm92aWRlIGEgaGFzaAotICAvLyBz
cGVjaWFsaXphdGlvbi4gU28gaW5zdGFudGlhdGluZyBzdGQ6Omhhc2g8dmFyaWFudDxUPj4gd2ls
bCByZXN1bHQKLSAgLy8gaW4gYSBoYXJkIGVycm9yIHdoaWNoIGlzIG5vdCBTRklOQUUgZnJpZW5k
bHkuCi0jZGVmaW5lIEFCU0xfU1REX0hBU0hfTk9UX1NGSU5BRV9GUklFTkRMWSAxCi0jZW5kaWYK
IAotI2lmbmRlZiBBQlNMX1NURF9IQVNIX05PVF9TRklOQUVfRlJJRU5ETFkKLSAgc3RhdGljX2Fz
c2VydCgKLSAgICAgICF0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoRW5hYmxlZDx2YXJpYW50
PE5vbkhhc2hhYmxlPj46OnZhbHVlLCAiIik7Ci0gIHN0YXRpY19hc3NlcnQoIXR5cGVfdHJhaXRz
X2ludGVybmFsOjpJc0hhc2hFbmFibGVkPAotICAgICAgICAgICAgICAgICAgICB2YXJpYW50PEhh
c2hhYmxlLCBOb25IYXNoYWJsZT4+Ojp2YWx1ZSwKKyNpZiBBQlNMX01FVEFfSU5URVJOQUxfU1RE
X0hBU0hfU0ZJTkFFX0ZSSUVORExZXworICBzdGF0aWNfYXNzZXJ0KCF0eXBlX3RyYWl0c19pbnRl
cm5hbDo6SXNIYXNoYWJsZTx2YXJpYW50PE5vbkhhc2hhYmxlPj46OnZhbHVlLAogICAgICAgICAg
ICAgICAgICIiKTsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgICF0eXBlX3RyYWl0c19pbnRlcm5h
bDo6SXNIYXNoYWJsZTx2YXJpYW50PEhhc2hhYmxlLCBOb25IYXNoYWJsZT4+Ojp2YWx1ZSwKKyAg
ICAgICIiKTsKICNlbmRpZgogCiAvLyBNU1ZDIHN0ZDo6aGFzaDxzdGQ6OnZhcmlhbnQ+IGRvZXMg
bm90IHVzZSB0aGUgaW5kZXgsIHRodXMgcHJvZHVjZSB0aGUgc2FtZQpAQCAtMjAwMiw4ICsyMDgx
LDggQEAgVEVTVChWYXJpYW50VGVzdCwgSGFzaCkgewogI2lmICEoZGVmaW5lZChfTVNDX1ZFUikg
JiYgZGVmaW5lZChBQlNMX0hBVkVfU1REX1ZBUklBTlQpKQogICB7CiAgICAgLy8gc2FtZSB2YWx1
ZSBhcyBkaWZmZXJlbnQgYWx0ZXJuYXRpdmUKLSAgICB2YXJpYW50PGludCwgaW50PiB2MChpbl9w
bGFjZV9pbmRleF90PDA+e30sIDQyKTsKLSAgICB2YXJpYW50PGludCwgaW50PiB2MShpbl9wbGFj
ZV9pbmRleF90PDE+e30sIDQyKTsKKyAgICB2YXJpYW50PGludCwgaW50PiB2MChpbl9wbGFjZV9p
bmRleDwwPiwgNDIpOworICAgIHZhcmlhbnQ8aW50LCBpbnQ+IHYxKGluX3BsYWNlX2luZGV4PDE+
LCA0Mik7CiAgICAgc3RkOjpoYXNoPHZhcmlhbnQ8aW50LCBpbnQ+PiBoYXNoOwogICAgIEVYUEVD
VF9ORShoYXNoKHYwKSwgaGFzaCh2MSkpOwogICB9CkBAIC0yMDE4LDExICsyMDk3LDEwIEBAIFRF
U1QoVmFyaWFudFRlc3QsIEhhc2gpIHsKICAgICBFWFBFQ1RfR1QoaGFzaGNvZGVzLnNpemUoKSwg
OTApOwogCiAgICAgLy8gdGVzdCBjb25zdC1xdWFsaWZpZWQKKyAgICBzdGF0aWNfYXNzZXJ0KHR5
cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hhYmxlPHZhcmlhbnQ8Y29uc3QgaW50Pj46OnZhbHVl
LAorICAgICAgICAgICAgICAgICAgIiIpOwogICAgIHN0YXRpY19hc3NlcnQoCi0gICAgICAgIHR5
cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hFbmFibGVkPHZhcmlhbnQ8Y29uc3QgaW50Pj46OnZh
bHVlLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydCgKLSAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJu
YWw6OklzSGFzaEVuYWJsZWQ8dmFyaWFudDxjb25zdCBIYXNoYWJsZT4+Ojp2YWx1ZSwKLSAgICAg
ICAgIiIpOworICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoYWJsZTx2YXJpYW50
PGNvbnN0IEhhc2hhYmxlPj46OnZhbHVlLCAiIik7CiAgICAgc3RkOjpoYXNoPGFic2w6OnZhcmlh
bnQ8Y29uc3QgaW50Pj4gY19oYXNoOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyArK2kp
IHsKICAgICAgIEVYUEVDVF9FUShoYXNoKGkpLCBjX2hhc2goaSkpOwpAQCAtMjAzNCw3ICsyMTEy
LDggQEAgVEVTVChWYXJpYW50VGVzdCwgSGFzaCkgewogLy8gTWlzY2VsbGFuZW91cyBhbmQgZGVw
cmVjYXRlZCB0ZXN0cyAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwogCi0vLyBUZXN0IHRoYXQgYSBzZXQgcmVxdWlyaW5nIGEgYmFzaWMgdHlwZSBjb252ZXJzaW9u
IHdvcmtzIGNvcnJlY3RseS4KKy8vIFRlc3QgdGhhdCBhIHNldCByZXF1aXJpbmcgYSBiYXNpYyB0
eXBlIGNvbnZlcnNpb24gd29ya3MgY29ycmVjdGx5CisjaWYgIWRlZmluZWQoQUJTTF9IQVZFX1NU
RF9WQVJJQU5UKQogVEVTVChWYXJpYW50VGVzdCwgVGVzdENvbnZlcnRpbmdTZXQpIHsKICAgdHlw
ZWRlZiB2YXJpYW50PGRvdWJsZT4gVmFyaWFudDsKICAgVmFyaWFudCB2KDEuMCk7CkBAIC0yMDQ0
LDYgKzIxMjMsNyBAQCBURVNUKFZhcmlhbnRUZXN0LCBUZXN0Q29udmVydGluZ1NldCkgewogICBB
U1NFUlRfVFJVRShudWxscHRyICE9IGFic2w6OmdldF9pZjxkb3VibGU+KCZ2KSk7CiAgIEVYUEVD
VF9ET1VCTEVfRVEoMiwgYWJzbDo6Z2V0PGRvdWJsZT4odikpOwogfQorI2VuZGlmICAvLyBBQlNM
X0hBVkVfU1REX1ZBUklBTlQKIAogLy8gVGVzdCB0aGF0IGEgdmVjdG9yIG9mIHZhcmlhbnRzIGJl
aGF2ZXMgcmVhc29uYWJseS4KIFRFU1QoVmFyaWFudFRlc3QsIENvbnRhaW5lcikgewpAQCAtMjE3
MSw3ICsyMjUxLDggQEAgVEVTVChWYXJpYW50VGVzdCwgVGVzdEltcGxpY2l0Q29udmVyc2lvbikg
ewogCiAgIC8vIFdlIHN0aWxsIG5lZWQgdGhlIGV4cGxpY2l0IGNhc3QgZm9yIHN0ZDo6c3RyaW5n
LCBiZWNhdXNlIEMrKyB3b24ndCBhcHBseQogICAvLyB0d28gdXNlci1kZWZpbmVkIGltcGxpY2l0
IGNvbnZlcnNpb25zIGluIGEgcm93LgotICBFWFBFQ1RfVFJVRShhYnNsOjpob2xkc19hbHRlcm5h
dGl2ZTxzdGQ6OnN0cmluZz4oUGFzc1Rocm91Z2goc3RkOjpzdHJpbmcoImZvbyIpKSkpOworICBF
WFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6c3RyaW5nPihQ
YXNzVGhyb3VnaChzdGQ6OnN0cmluZygiZm9vIikpKSk7CiB9CiAKIHN0cnVjdCBDb252ZXJ0aWJs
ZTI7CkBAIC0yMTk0LDggKzIyNzUsMTAgQEAgc3RydWN0IENvbnZlcnRpYmxlMiB7CiB9OwogCiBU
RVNUKFZhcmlhbnRUZXN0LCBUZXN0UnZhbHVlQ29udmVyc2lvbikgeworI2lmICFkZWZpbmVkKEFC
U0xfSEFWRV9TVERfVkFSSUFOVCkKICAgdmFyaWFudDxkb3VibGUsIHN0ZDo6c3RyaW5nPiB2YXIo
Ci0gICAgICBDb252ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8ZG91YmxlLCBzdGQ6OnN0cmluZz4+KHZh
cmlhbnQ8c3RkOjpzdHJpbmcsIGludD4oMCkpKTsKKyAgICAgIENvbnZlcnRWYXJpYW50VG88dmFy
aWFudDxkb3VibGUsIHN0ZDo6c3RyaW5nPj4oCisgICAgICAgICAgdmFyaWFudDxzdGQ6OnN0cmlu
ZywgaW50PigwKSkpOwogICBBU1NFUlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTxkb3Vi
bGU+KHZhcikpOwogICBFWFBFQ1RfRVEoMC4wLCBhYnNsOjpnZXQ8ZG91YmxlPih2YXIpKTsKIApA
QCAtMjIyNSw2ICsyMzA4LDcgQEAgVEVTVChWYXJpYW50VGVzdCwgVGVzdFJ2YWx1ZUNvbnZlcnNp
b24pIHsKICAgdmFyaWFudDIgPSBDb252ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8aW50MzJfdCwgdWlu
dDMyX3Q+Pih2YXJpYW50PHVpbnQzMl90Pig0MikpOwogICBBU1NFUlRfVFJVRShhYnNsOjpob2xk
c19hbHRlcm5hdGl2ZTx1aW50MzJfdD4odmFyaWFudDIpKTsKICAgRVhQRUNUX0VRKDQyLCBhYnNs
OjpnZXQ8dWludDMyX3Q+KHZhcmlhbnQyKSk7CisjZW5kaWYgIC8vICFBQlNMX0hBVkVfU1REX1ZB
UklBTlQKIAogICB2YXJpYW50PENvbnZlcnRpYmxlMSwgQ29udmVydGlibGUyPiB2YXJpYW50MygK
ICAgICAgIENvbnZlcnRWYXJpYW50VG88dmFyaWFudDxDb252ZXJ0aWJsZTEsIENvbnZlcnRpYmxl
Mj4+KApAQCAtMjIzNyw2ICsyMzIxLDcgQEAgVEVTVChWYXJpYW50VGVzdCwgVGVzdFJ2YWx1ZUNv
bnZlcnNpb24pIHsKIH0KIAogVEVTVChWYXJpYW50VGVzdCwgVGVzdEx2YWx1ZUNvbnZlcnNpb24p
IHsKKyNpZiAhZGVmaW5lZChBQlNMX0hBVkVfU1REX1ZBUklBTlQpCiAgIHZhcmlhbnQ8c3RkOjpz
dHJpbmcsIGludD4gc291cmNlMSA9IDA7CiAgIHZhcmlhbnQ8ZG91YmxlLCBzdGQ6OnN0cmluZz4g
ZGVzdGluYXRpb24oCiAgICAgICBDb252ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8ZG91YmxlLCBzdGQ6
OnN0cmluZz4+KHNvdXJjZTEpKTsKQEAgLTIyNzMsNiArMjM1OCw3IEBAIFRFU1QoVmFyaWFudFRl
c3QsIFRlc3RMdmFsdWVDb252ZXJzaW9uKSB7CiAgIHZhcmlhbnQyID0gQ29udmVydFZhcmlhbnRU
bzx2YXJpYW50PGludDMyX3QsIHVpbnQzMl90Pj4oc291cmNlNik7CiAgIEFTU0VSVF9UUlVFKGFi
c2w6OmhvbGRzX2FsdGVybmF0aXZlPHVpbnQzMl90Pih2YXJpYW50MikpOwogICBFWFBFQ1RfRVEo
NDIsIGFic2w6OmdldDx1aW50MzJfdD4odmFyaWFudDIpKTsKKyNlbmRpZgogCiAgIHZhcmlhbnQ8
Q29udmVydGlibGUyLCBDb252ZXJ0aWJsZTE+IHNvdXJjZTcoKENvbnZlcnRpYmxlMSgpKSk7CiAg
IHZhcmlhbnQ8Q29udmVydGlibGUxLCBDb252ZXJ0aWJsZTI+IHZhcmlhbnQzKApAQCAtMjI4Nyw3
ICsyMzczLDggQEAgVEVTVChWYXJpYW50VGVzdCwgVGVzdEx2YWx1ZUNvbnZlcnNpb24pIHsKIFRF
U1QoVmFyaWFudFRlc3QsIFRlc3RNb3ZlQ29udmVyc2lvbikgewogICB1c2luZyBWYXJpYW50ID0K
ICAgICAgIHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPGNvbnN0IGludD4sIHN0ZDo6dW5pcXVlX3B0
cjxjb25zdCBzdGQ6OnN0cmluZz4+OwotICB1c2luZyBPdGhlclZhcmlhbnQgPSB2YXJpYW50PHN0
ZDo6dW5pcXVlX3B0cjxpbnQ+LCBzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+PjsKKyAgdXNp
bmcgT3RoZXJWYXJpYW50ID0KKyAgICAgIHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPGludD4sIHN0
ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmluZz4+OwogCiAgIFZhcmlhbnQgdmFyKAogICAgICAgQ29u
dmVydFZhcmlhbnRUbzxWYXJpYW50PihPdGhlclZhcmlhbnR7YWJzbDo6bWFrZV91bmlxdWU8aW50
PigwKX0pKTsKQEAgLTIyOTUsOCArMjM4Miw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RNb3Zl
Q29udmVyc2lvbikgewogICBBU1NFUlRfTkUoYWJzbDo6Z2V0PHN0ZDo6dW5pcXVlX3B0cjxjb25z
dCBpbnQ+Pih2YXIpLCBudWxscHRyKTsKICAgRVhQRUNUX0VRKDAsICphYnNsOjpnZXQ8c3RkOjp1
bmlxdWVfcHRyPGNvbnN0IGludD4+KHZhcikpOwogCi0gIHZhciA9Ci0gICAgICBDb252ZXJ0VmFy
aWFudFRvPFZhcmlhbnQ+KE90aGVyVmFyaWFudChhYnNsOjptYWtlX3VuaXF1ZTxzdGQ6OnN0cmlu
Zz4oImZvbyIpKSk7CisgIHZhciA9IENvbnZlcnRWYXJpYW50VG88VmFyaWFudD4oCisgICAgICBP
dGhlclZhcmlhbnQoYWJzbDo6bWFrZV91bmlxdWU8c3RkOjpzdHJpbmc+KCJmb28iKSkpOwogICBB
U1NFUlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qg
c3RkOjpzdHJpbmc+Pih2YXIpKTsKICAgRVhQRUNUX0VRKCJmb28iLCAqYWJzbDo6Z2V0PHN0ZDo6
dW5pcXVlX3B0cjxjb25zdCBzdGQ6OnN0cmluZz4+KHZhcikpOwogfQpAQCAtMjMwNyw3ICsyMzk0
LDggQEAgVEVTVChWYXJpYW50VGVzdCwgRG9lc05vdE1vdmVGcm9tTHZhbHVlcykgewogICAvLyB3
aGV0aGVyIG1vdmluZyBvciBjb3B5aW5nIGhhcyBvY2N1cnJlZC4KICAgdXNpbmcgVmFyaWFudCA9
CiAgICAgICB2YXJpYW50PHN0ZDo6c2hhcmVkX3B0cjxjb25zdCBpbnQ+LCBzdGQ6OnNoYXJlZF9w
dHI8Y29uc3Qgc3RkOjpzdHJpbmc+PjsKLSAgdXNpbmcgT3RoZXJWYXJpYW50ID0gdmFyaWFudDxz
dGQ6OnNoYXJlZF9wdHI8aW50Piwgc3RkOjpzaGFyZWRfcHRyPHN0ZDo6c3RyaW5nPj47CisgIHVz
aW5nIE90aGVyVmFyaWFudCA9CisgICAgICB2YXJpYW50PHN0ZDo6c2hhcmVkX3B0cjxpbnQ+LCBz
dGQ6OnNoYXJlZF9wdHI8c3RkOjpzdHJpbmc+PjsKIAogICBWYXJpYW50IHYxKHN0ZDo6bWFrZV9z
aGFyZWQ8Y29uc3QgaW50PigwKSk7CiAKQEAgLTIzMzUsOCArMjQyMywxMCBAQCBURVNUKFZhcmlh
bnRUZXN0LCBEb2VzTm90TW92ZUZyb21MdmFsdWVzKSB7CiB9CiAKIFRFU1QoVmFyaWFudFRlc3Qs
IFRlc3RSdmFsdWVDb252ZXJzaW9uVmlhQ29udmVydFZhcmlhbnRUbykgeworI2lmICFkZWZpbmVk
KEFCU0xfSEFWRV9TVERfVkFSSUFOVCkKICAgdmFyaWFudDxkb3VibGUsIHN0ZDo6c3RyaW5nPiB2
YXIoCi0gICAgICBDb252ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8ZG91YmxlLCBzdGQ6OnN0cmluZz4+
KHZhcmlhbnQ8c3RkOjpzdHJpbmcsIGludD4oMykpKTsKKyAgICAgIENvbnZlcnRWYXJpYW50VG88
dmFyaWFudDxkb3VibGUsIHN0ZDo6c3RyaW5nPj4oCisgICAgICAgICAgdmFyaWFudDxzdGQ6OnN0
cmluZywgaW50PigzKSkpOwogICBFWFBFQ1RfVEhBVChhYnNsOjpnZXRfaWY8ZG91YmxlPigmdmFy
KSwgUG9pbnRlZSgzLjApKTsKIAogICB2YXIgPSBDb252ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8ZG91
YmxlLCBzdGQ6OnN0cmluZz4+KApAQCAtMjM1OSw2ICsyNDQ5LDcgQEAgVEVTVChWYXJpYW50VGVz
dCwgVGVzdFJ2YWx1ZUNvbnZlcnNpb25WaWFDb252ZXJ0VmFyaWFudFRvKSB7CiAKICAgdmFyaWFu
dDIgPSBDb252ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8aW50MzJfdCwgdWludDMyX3Q+Pih2YXJpYW50
PHVpbnQzMl90Pig0MikpOwogICBFWFBFQ1RfVEhBVChhYnNsOjpnZXRfaWY8dWludDMyX3Q+KCZ2
YXJpYW50MiksIFBvaW50ZWUoNDIpKTsKKyNlbmRpZgogCiAgIHZhcmlhbnQ8Q29udmVydGlibGUx
LCBDb252ZXJ0aWJsZTI+IHZhcmlhbnQzKAogICAgICAgQ29udmVydFZhcmlhbnRUbzx2YXJpYW50
PENvbnZlcnRpYmxlMSwgQ29udmVydGlibGUyPj4oCkBAIC0yMzcxLDYgKzI0NjIsNyBAQCBURVNU
KFZhcmlhbnRUZXN0LCBUZXN0UnZhbHVlQ29udmVyc2lvblZpYUNvbnZlcnRWYXJpYW50VG8pIHsK
IH0KIAogVEVTVChWYXJpYW50VGVzdCwgVGVzdEx2YWx1ZUNvbnZlcnNpb25WaWFDb252ZXJ0VmFy
aWFudFRvKSB7CisjaWYgIWRlZmluZWQoQUJTTF9IQVZFX1NURF9WQVJJQU5UKQogICB2YXJpYW50
PHN0ZDo6c3RyaW5nLCBpbnQ+IHNvdXJjZTEgPSAzOwogICB2YXJpYW50PGRvdWJsZSwgc3RkOjpz
dHJpbmc+IGRlc3RpbmF0aW9uKAogICAgICAgQ29udmVydFZhcmlhbnRUbzx2YXJpYW50PGRvdWJs
ZSwgc3RkOjpzdHJpbmc+Pihzb3VyY2UxKSk7CkBAIC0yMzc4LDcgKzI0NzAsOCBAQCBURVNUKFZh
cmlhbnRUZXN0LCBUZXN0THZhbHVlQ29udmVyc2lvblZpYUNvbnZlcnRWYXJpYW50VG8pIHsKIAog
ICB2YXJpYW50PGNvbnN0IGNoYXIqLCBmbG9hdD4gc291cmNlMiA9ICJmb28iOwogICBkZXN0aW5h
dGlvbiA9IENvbnZlcnRWYXJpYW50VG88dmFyaWFudDxkb3VibGUsIHN0ZDo6c3RyaW5nPj4oc291
cmNlMik7Ci0gIEVYUEVDVF9USEFUKGFic2w6OmdldF9pZjxzdGQ6OnN0cmluZz4oJmRlc3RpbmF0
aW9uKSwgUG9pbnRlZShzdGQ6OnN0cmluZygiZm9vIikpKTsKKyAgRVhQRUNUX1RIQVQoYWJzbDo6
Z2V0X2lmPHN0ZDo6c3RyaW5nPigmZGVzdGluYXRpb24pLAorICAgICAgICAgICAgICBQb2ludGVl
KHN0ZDo6c3RyaW5nKCJmb28iKSkpOwogCiAgIHZhcmlhbnQ8aW50LCBmbG9hdD4gc291cmNlMyg0
Mik7CiAgIHZhcmlhbnQ8ZG91YmxlPiBzaW5nbGV0b24oQ29udmVydFZhcmlhbnRUbzx2YXJpYW50
PGRvdWJsZT4+KHNvdXJjZTMpKTsKQEAgLTI0MDEsNiArMjQ5NCw3IEBAIFRFU1QoVmFyaWFudFRl
c3QsIFRlc3RMdmFsdWVDb252ZXJzaW9uVmlhQ29udmVydFZhcmlhbnRUbykgewogICB2YXJpYW50
PHVpbnQzMl90PiBzb3VyY2U2KDQyKTsKICAgdmFyaWFudDIgPSBDb252ZXJ0VmFyaWFudFRvPHZh
cmlhbnQ8aW50MzJfdCwgdWludDMyX3Q+Pihzb3VyY2U2KTsKICAgRVhQRUNUX1RIQVQoYWJzbDo6
Z2V0X2lmPHVpbnQzMl90PigmdmFyaWFudDIpLCBQb2ludGVlKDQyKSk7CisjZW5kaWYgIC8vICFB
QlNMX0hBVkVfU1REX1ZBUklBTlQKIAogICB2YXJpYW50PENvbnZlcnRpYmxlMiwgQ29udmVydGli
bGUxPiBzb3VyY2U3KChDb252ZXJ0aWJsZTEoKSkpOwogICB2YXJpYW50PENvbnZlcnRpYmxlMSwg
Q29udmVydGlibGUyPiB2YXJpYW50MygKQEAgLTI0MTUsMTUgKzI1MDksMTYgQEAgVEVTVChWYXJp
YW50VGVzdCwgVGVzdEx2YWx1ZUNvbnZlcnNpb25WaWFDb252ZXJ0VmFyaWFudFRvKSB7CiBURVNU
KFZhcmlhbnRUZXN0LCBUZXN0TW92ZUNvbnZlcnNpb25WaWFDb252ZXJ0VmFyaWFudFRvKSB7CiAg
IHVzaW5nIFZhcmlhbnQgPQogICAgICAgdmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgaW50
Piwgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IHN0ZDo6c3RyaW5nPj47Ci0gIHVzaW5nIE90aGVyVmFy
aWFudCA9IHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPGludD4sIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6
OnN0cmluZz4+OworICB1c2luZyBPdGhlclZhcmlhbnQgPQorICAgICAgdmFyaWFudDxzdGQ6OnVu
aXF1ZV9wdHI8aW50Piwgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPj47CiAKICAgVmFyaWFu
dCB2YXIoCiAgICAgICBDb252ZXJ0VmFyaWFudFRvPFZhcmlhbnQ+KE90aGVyVmFyaWFudHthYnNs
OjptYWtlX3VuaXF1ZTxpbnQ+KDMpfSkpOwogICBFWFBFQ1RfVEhBVChhYnNsOjpnZXRfaWY8c3Rk
Ojp1bmlxdWVfcHRyPGNvbnN0IGludD4+KCZ2YXIpLAogICAgICAgICAgICAgICBQb2ludGVlKFBv
aW50ZWUoMykpKTsKIAotICB2YXIgPQotICAgICAgQ29udmVydFZhcmlhbnRUbzxWYXJpYW50PihP
dGhlclZhcmlhbnQoYWJzbDo6bWFrZV91bmlxdWU8c3RkOjpzdHJpbmc+KCJmb28iKSkpOworICB2
YXIgPSBDb252ZXJ0VmFyaWFudFRvPFZhcmlhbnQ+KAorICAgICAgT3RoZXJWYXJpYW50KGFic2w6
Om1ha2VfdW5pcXVlPHN0ZDo6c3RyaW5nPigiZm9vIikpKTsKICAgRVhQRUNUX1RIQVQoYWJzbDo6
Z2V0X2lmPHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBzdGQ6OnN0cmluZz4+KCZ2YXIpLAogICAgICAg
ICAgICAgICBQb2ludGVlKFBvaW50ZWUoc3RkOjpzdHJpbmcoImZvbyIpKSkpOwogfQpAQCAtMjU5
Myw3ICsyNjg4LDcgQEAgVEVTVChWYXJpYW50VGVzdCwgTW92ZUN0b3JCdWcpIHsKICAgfTsKICAg
ewogICAgIHVzaW5nIFYgPSBhYnNsOjp2YXJpYW50PFRyaXZpYWxDb3B5Tm9udHJpdmlhbE1vdmUs
IGludD47Ci0gICAgViB2MShhYnNsOjppbl9wbGFjZV9pbmRleF90PDA+e30pOworICAgIFYgdjEo
YWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4pOwogICAgIC8vIHRoaXMgc2hvdWxkIGludm9rZSB0aGUg
bW92ZSBjdG9yLCByYXRoZXIgdGhhbiB0aGUgdHJpdmlhbCBjb3B5IGN0b3IuCiAgICAgViB2Mihz
dGQ6Om1vdmUodjEpKTsKICAgICBFWFBFQ1RfVFJVRShhYnNsOjpnZXQ8MD4odjIpLmNhbGxlZCk7
CkBAIC0yNjAxLDcgKzI2OTYsNyBAQCBURVNUKFZhcmlhbnRUZXN0LCBNb3ZlQ3RvckJ1Zykgewog
ICB7CiAgICAgLy8gdGhpcyBjYXNlIGZhaWxlZCB0byBjb21waWxlIGJlZm9yZSBvdXIgZml4IGR1
ZSB0byBhIEdDQyBidWcuCiAgICAgdXNpbmcgViA9IGFic2w6OnZhcmlhbnQ8aW50LCBUcml2aWFs
Q29weU5vbnRyaXZpYWxNb3ZlPjsKLSAgICBWIHYxKGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MT57
fSk7CisgICAgViB2MShhYnNsOjppbl9wbGFjZV9pbmRleDwxPik7CiAgICAgLy8gdGhpcyBzaG91
bGQgaW52b2tlIHRoZSBtb3ZlIGN0b3IsIHJhdGhlciB0aGFuIHRoZSB0cml2aWFsIGNvcHkgY3Rv
ci4KICAgICBWIHYyKHN0ZDo6bW92ZSh2MSkpOwogICAgIEVYUEVDVF9UUlVFKGFic2w6OmdldDwx
Pih2MikuY2FsbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvQlVJTEQuYmF6ZWwgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC91dGlsaXR5L0JVSUxELmJhemVsCmluZGV4IGMwMWI0OWJjOTdkZDFkMmNlZWI0NzgwY2Jl
OTNkMTRmZmU2NTRhNjkuLmQ0MTMxN2UzNTA3ZTU1YWNkNWY4ODhmMjY2ZjU0YWY4Nzg0ZTczZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0
eS9CVUlMRC5iYXplbApAQCAtMSw2ICsxLDcgQEAKIGxvYWQoCi0gICAgIi8vYWJzbDpjb3B0cy5i
emwiLAorICAgICIvL2Fic2w6Y29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bCIsCiAgICAgIkFCU0xf
REVGQVVMVF9DT1BUUyIsCisgICAgIkFCU0xfREVGQVVMVF9MSU5LT1BUUyIsCiAgICAgIkFCU0xf
VEVTVF9DT1BUUyIsCiApCiAKQEAgLTEyLDYgKzEzLDcgQEAgY2NfbGlicmFyeSgKICAgICBuYW1l
ID0gInV0aWxpdHkiLAogICAgIGhkcnMgPSBbInV0aWxpdHkuaCJdLAogICAgIGNvcHRzID0gQUJT
TF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZTpiYXNlX2ludGVybmFsIiwKICAgICAg
ICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC0yMyw2ICsyNSw3IEBAIGNjX3Rlc3QoCiAgICAg
bmFtZSA9ICJ1dGlsaXR5X3Rlc3QiLAogICAgIHNyY3MgPSBbInV0aWxpdHlfdGVzdC5jYyJdLAog
ICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6dXRpbGl0eSIsCiAgICAgICAgICIv
L2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS9CVUlM
RC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3V0aWxpdHkvQlVJTEQuZ24KaW5kZXggNGNmM2M4MTBlNjU3NzgzOGFjOTJi
NjAyZjVkNDlkNmRlZTFkMTRmYS4uNDkzOTBiM2ZkOWQ3ZjFhZDE4ZmVlMjY2MzE4NGZhMWEyMzBj
ZjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGls
aXR5L0JVSUxELmduCkBAIC02LDYgKzYsNyBAQCBpbXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVzL2J1
aWxkLmduaSIpCiAKIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CiAgIHZpc2liaWxpdHkgPSBb
CisgICAgIi8vbGliYXNzaXN0YW50LyoiLAogICAgICIvL3RoaXJkX3BhcnR5L3dlYnJ0Yy8qIiwK
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3Q6Z3Rlc3QiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3V0aWxpdHkvQ01ha2VMaXN0cy50eHQKaW5kZXggZGMzYTYzMTkwNTQ2ODg0NjI5
MTA3NDc4NTgyYjJiODlhOGVmY2Q5Ni4uZTFlZGQxOWFhMDEzNjhkOWI4OWJjZTA2ODk5YTA2OTBm
OWNkNjczOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC91dGlsaXR5L0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAj
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTQsMzkgKzE0LDMxIEBACiAjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgogIwogCi0KLWxpc3QoQVBQRU5EIFVUSUxJVFlfUFVCTElDX0hFQURFUlMKLSAgInV0aWxpdHku
aCIKLSkKLQotYWJzbF9oZWFkZXJfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF91dGlsaXR5
Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsOjpiYXNlCi0gIEVYUE9SVF9OQU1FCithYnNs
X2NjX2xpYnJhcnkoCisgIE5BTUUKICAgICB1dGlsaXR5CisgIEhEUlMKKyAgICAidXRpbGl0eS5o
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6
YmFzZV9pbnRlcm5hbAorICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OnR5cGVfdHJhaXRzCisg
IFBVQkxJQwogKQogCi0KLSMKLSMjIFRFU1RTCi0jCi0KLSMgdGVzdCB1dGlsaXR5X3Rlc3QKLXNl
dChVVElMSVRZX1RFU1RfU1JDICJ1dGlsaXR5X3Rlc3QuY2MiKQotc2V0KFVUSUxJVFlfVEVTVF9Q
VUJMSUNfTElCUkFSSUVTCi0gIGFic2w6OmJhc2UKLSAgYWJzbDo6bWVtb3J5Ci0gIGFic2w6OnN0
cmluZ3MKLSAgYWJzbDo6dXRpbGl0eQotKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9j
Y190ZXN0KAorICBOQU1FCiAgICAgdXRpbGl0eV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke1VUSUxJ
VFlfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1VUSUxJVFlfVEVTVF9QVUJM
SUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgInV0aWxpdHlfdGVzdC5jYyIKKyAgQ09QVFMKKyAg
ICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnV0aWxpdHkKKyAgICBhYnNs
Ojpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjpzdHJpbmdzCisgICAg
Z21vY2tfbWFpbgogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS91dGlsaXR5LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC91dGlsaXR5L3V0aWxpdHkuaAppbmRleCBhZWY0YmFhMDJkY2Q2N2FjZWIyNTRmMGE5ZTRiZmYw
MGRhNGNlNWIwLi5lZWY4ZmI0MWZlOGUzOGNjMDQxYjljMjFlOTI4ZThkYjQxY2ZlM2Y5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxp
dHkuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjUsNiAr
MjUsNyBAQAogLy8gICAqIGluZGV4X3NlcXVlbmNlX2ZvcjxUcy4uLj4gICAgID09IHN0ZDo6aW5k
ZXhfc2VxdWVuY2VfZm9yPFRzLi4uPgogLy8gICAqIGFwcGx5PEZ1bmN0b3IsIFR1cGxlPiAgICAg
ICAgID09IHN0ZDo6YXBwbHk8RnVuY3RvciwgVHVwbGU+CiAvLyAgICogZXhjaGFuZ2U8VD4gICAg
ICAgICAgICAgICAgICAgPT0gc3RkOjpleGNoYW5nZTxUPgorLy8gICAqIG1ha2VfZnJvbV90dXBs
ZTxUPiAgICAgICAgICAgID09IHN0ZDo6bWFrZV9mcm9tX3R1cGxlPFQ+CiAvLwogLy8gVGhpcyBo
ZWFkZXIgZmlsZSBhbHNvIHByb3ZpZGVzIHRoZSB0YWcgdHlwZXMgYGluX3BsYWNlX3RgLCBgaW5f
cGxhY2VfdHlwZV90YCwKIC8vIGFuZCBgaW5fcGxhY2VfaW5kZXhfdGAsIGFzIHdlbGwgYXMgdGhl
IGNvbnN0YW50IGBpbl9wbGFjZWAsIGFuZApAQCAtMzIsMTAgKzMzLDkgQEAKIC8vCiAvLyBSZWZl
cmVuY2VzOgogLy8KLS8vICBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC91dGlsaXR5
L2ludGVnZXJfc2VxdWVuY2UKLS8vICBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC91
dGlsaXR5L2FwcGx5CisvLyAgaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL3V0aWxp
dHkvaW50ZWdlcl9zZXF1ZW5jZQorLy8gIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2Nw
cC91dGlsaXR5L2FwcGx5CiAvLyAgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dn
MjEvZG9jcy9wYXBlcnMvMjAxMy9uMzY1OC5odG1sCi0vLwogCiAjaWZuZGVmIEFCU0xfVVRJTElU
WV9VVElMSVRZX0hfCiAjZGVmaW5lIEFCU0xfVVRJTElUWV9VVElMSVRZX0hfCkBAIC0xMTQsNiAr
MTE0LDIwIEBAIHN0cnVjdCBHZW48VCwgMD4gewogICB1c2luZyB0eXBlID0gaW50ZWdlcl9zZXF1
ZW5jZTxUPjsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEluUGxhY2VUeXBl
VGFnIHsKKyAgZXhwbGljaXQgSW5QbGFjZVR5cGVUYWcoKSA9IGRlbGV0ZTsKKyAgSW5QbGFjZVR5
cGVUYWcoY29uc3QgSW5QbGFjZVR5cGVUYWcmKSA9IGRlbGV0ZTsKKyAgSW5QbGFjZVR5cGVUYWcm
IG9wZXJhdG9yPShjb25zdCBJblBsYWNlVHlwZVRhZyYpID0gZGVsZXRlOworfTsKKwordGVtcGxh
dGUgPHNpemVfdCBJPgorc3RydWN0IEluUGxhY2VJbmRleFRhZyB7CisgIGV4cGxpY2l0IEluUGxh
Y2VJbmRleFRhZygpID0gZGVsZXRlOworICBJblBsYWNlSW5kZXhUYWcoY29uc3QgSW5QbGFjZUlu
ZGV4VGFnJikgPSBkZWxldGU7CisgIEluUGxhY2VJbmRleFRhZyYgb3BlcmF0b3I9KGNvbnN0IElu
UGxhY2VJbmRleFRhZyYpID0gZGVsZXRlOworfTsKKwogfSAgLy8gbmFtZXNwYWNlIHV0aWxpdHlf
aW50ZXJuYWwKIAogLy8gQ29tcGlsZS10aW1lIHNlcXVlbmNlcyBvZiBpbnRlZ2VycwpAQCAtMTYz
LDYgKzE3Nyw3IEBAIEFCU0xfSU5URVJOQUxfSU5MSU5FX0NPTlNURVhQUihpbl9wbGFjZV90LCBp
bl9wbGFjZSwge30pOwogI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX09QVElPTkFMCiAKICNpZiBk
ZWZpbmVkKEFCU0xfSEFWRV9TVERfQU5ZKSB8fCBkZWZpbmVkKEFCU0xfSEFWRV9TVERfVkFSSUFO
VCkKK3VzaW5nIHN0ZDo6aW5fcGxhY2VfdHlwZTsKIHVzaW5nIHN0ZDo6aW5fcGxhY2VfdHlwZV90
OwogI2Vsc2UKIApAQCAtMTcyLDEwICsxODcsMTQgQEAgdXNpbmcgc3RkOjppbl9wbGFjZV90eXBl
X3Q7CiAvLyBiZSBzcGVjaWZpZWQsIHN1Y2ggYXMgd2l0aCBgYWJzbDo6YW55YCwgZGVzaWduZWQg
dG8gYmUgYSBkcm9wLWluIHJlcGxhY2VtZW50CiAvLyBmb3IgQysrMTcncyBgc3RkOjppbl9wbGFj
ZV90eXBlX3RgLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaW5fcGxhY2VfdHlwZV90
IHt9OwordXNpbmcgaW5fcGxhY2VfdHlwZV90ID0gdm9pZCAoKikodXRpbGl0eV9pbnRlcm5hbDo6
SW5QbGFjZVR5cGVUYWc8VD4pOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgaW5fcGxh
Y2VfdHlwZSh1dGlsaXR5X2ludGVybmFsOjpJblBsYWNlVHlwZVRhZzxUPikge30KICNlbmRpZiAg
Ly8gQUJTTF9IQVZFX1NURF9BTlkgfHwgQUJTTF9IQVZFX1NURF9WQVJJQU5UCiAKICNpZmRlZiBB
QlNMX0hBVkVfU1REX1ZBUklBTlQKK3VzaW5nIHN0ZDo6aW5fcGxhY2VfaW5kZXg7CiB1c2luZyBz
dGQ6OmluX3BsYWNlX2luZGV4X3Q7CiAjZWxzZQogCkBAIC0xODUsNyArMjA0LDEwIEBAIHVzaW5n
IHN0ZDo6aW5fcGxhY2VfaW5kZXhfdDsKIC8vIGJlIHNwZWNpZmllZCwgc3VjaCBhcyB3aXRoIGBh
YnNsOjphbnlgLCBkZXNpZ25lZCB0byBiZSBhIGRyb3AtaW4gcmVwbGFjZW1lbnQKIC8vIGZvciBD
KysxNydzIGBzdGQ6OmluX3BsYWNlX2luZGV4X3RgLgogdGVtcGxhdGUgPHNpemVfdCBJPgotc3Ry
dWN0IGluX3BsYWNlX2luZGV4X3Qge307Cit1c2luZyBpbl9wbGFjZV9pbmRleF90ID0gdm9pZCAo
KikodXRpbGl0eV9pbnRlcm5hbDo6SW5QbGFjZUluZGV4VGFnPEk+KTsKKwordGVtcGxhdGUgPHNp
emVfdCBJPgordm9pZCBpbl9wbGFjZV9pbmRleCh1dGlsaXR5X2ludGVybmFsOjpJblBsYWNlSW5k
ZXhUYWc8ST4pIHt9CiAjZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfVkFSSUFOVAogCiAvLyBDb25z
dGV4cHIgbW92ZSBhbmQgZm9yd2FyZApAQCAtMjM0LDI1ICsyNTYsMzMgQEAgYXV0byBhcHBseV9o
ZWxwZXIoRnVuY3RvciYmIGZ1bmN0b3IsIFR1cGxlJiYgdCwgaW5kZXhfc2VxdWVuY2U8SW5kZXhl
cy4uLj4pCiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIGNsYXNzIEZvb3t2b2lkIEJhcihpbnQp
O307Ci0vLyAgIHZvaWQgdXNlcl9mdW5jdGlvbihpbnQsIHN0cmluZyk7Ci0vLyAgIHZvaWQgdXNl
cl9mdW5jdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Rm9vPik7CisvLyAgIGNsYXNzIEZvbyB7CisvLyAg
ICBwdWJsaWM6CisvLyAgICAgdm9pZCBCYXIoaW50KTsKKy8vICAgfTsKKy8vICAgdm9pZCB1c2Vy
X2Z1bmN0aW9uMShpbnQsIHN0ZDo6c3RyaW5nKTsKKy8vICAgdm9pZCB1c2VyX2Z1bmN0aW9uMihz
dGQ6OnVuaXF1ZV9wdHI8Rm9vPik7CisvLyAgIGF1dG8gdXNlcl9sYW1iZGEgPSBbXShpbnQsIGlu
dCkge307CiAvLwogLy8gICBpbnQgbWFpbigpCiAvLyAgIHsKLS8vICAgICAgIHN0ZDo6dHVwbGU8
aW50LCBzdHJpbmc+IHR1cGxlMSg0MiwgImJhciIpOwotLy8gICAgICAgLy8gSW52b2tlcyB0aGUg
dXNlciBmdW5jdGlvbiBvdmVybG9hZCBvbiBpbnQsIHN0cmluZy4KLS8vICAgICAgIGFic2w6OmFw
cGx5KCZ1c2VyX2Z1bmN0aW9uLCB0dXBsZTEpOworLy8gICAgICAgc3RkOjp0dXBsZTxpbnQsIHN0
ZDo6c3RyaW5nPiB0dXBsZTEoNDIsICJiYXIiKTsKKy8vICAgICAgIC8vIEludm9rZXMgdGhlIGZp
cnN0IHVzZXIgZnVuY3Rpb24gb24gaW50LCBzdGQ6OnN0cmluZy4KKy8vICAgICAgIGFic2w6OmFw
cGx5KCZ1c2VyX2Z1bmN0aW9uMSwgdHVwbGUxKTsKIC8vCi0vLyAgICAgICBhdXRvIGZvbyA9IGFi
c2w6Om1ha2VfdW5pcXVlPEZvbz4oKTsKLS8vICAgICAgIHN0ZDo6dHVwbGU8Rm9vKiwgaW50PiB0
dXBsZTIoZm9vLmdldCgpLCA0Mik7Ci0vLyAgICAgICAvLyBJbnZva2VzIHRoZSBtZXRob2QgQmFy
IG9uIGZvbyB3aXRoIG9uZSBhcmd1bWVudCA0Mi4KLS8vICAgICAgIGFic2w6OmFwcGx5KCZGb286
OkJhciwgZm9vLmdldCgpLCA0Mik7Ci0vLwotLy8gICAgICAgc3RkOjp0dXBsZTxzdGQ6OnVuaXF1
ZV9wdHI8Rm9vPj4gdHVwbGUzKGFic2w6Om1ha2VfdW5pcXVlPEZvbz4oKSk7CisvLyAgICAgICBz
dGQ6OnR1cGxlPHN0ZDo6dW5pcXVlX3B0cjxGb28+PiB0dXBsZTIoYWJzbDo6bWFrZV91bmlxdWU8
Rm9vPigpKTsKIC8vICAgICAgIC8vIEludm9rZXMgdGhlIHVzZXIgZnVuY3Rpb24gdGhhdCB0YWtl
cyBvd25lcnNoaXAgb2YgdGhlIHVuaXF1ZQogLy8gICAgICAgLy8gcG9pbnRlci4KLS8vICAgICAg
IGFic2w6OmFwcGx5KCZ1c2VyX2Z1bmN0aW9uLCBzdGQ6Om1vdmUodHVwbGUpKTsKKy8vICAgICAg
IGFic2w6OmFwcGx5KCZ1c2VyX2Z1bmN0aW9uMiwgc3RkOjptb3ZlKHR1cGxlMikpOworLy8KKy8v
ICAgICAgIGF1dG8gZm9vID0gYWJzbDo6bWFrZV91bmlxdWU8Rm9vPigpOworLy8gICAgICAgc3Rk
Ojp0dXBsZTxGb28qLCBpbnQ+IHR1cGxlMyhmb28uZ2V0KCksIDQyKTsKKy8vICAgICAgIC8vIElu
dm9rZXMgdGhlIG1ldGhvZCBCYXIgb24gZm9vIHdpdGggb25lIGFyZ3VtZW50LCA0Mi4KKy8vICAg
ICAgIGFic2w6OmFwcGx5KCZGb286OkJhciwgdHVwbGUzKTsKKy8vCisvLyAgICAgICBzdGQ6OnR1
cGxlPGludCwgaW50PiB0dXBsZTQoOCwgOSk7CisvLyAgICAgICAvLyBJbnZva2VzIGEgbGFtYmRh
LgorLy8gICAgICAgYWJzbDo6YXBwbHkodXNlcl9sYW1iZGEsIHR1cGxlNCk7CiAvLyAgIH0KIHRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBUdXBsZT4KIGF1dG8gYXBwbHkoRnVu
Y3RvciYmIGZ1bmN0b3IsIFR1cGxlJiYgdCkKQEAgLTI4Niw2ICszMTYsMzMgQEAgVCBleGNoYW5n
ZShUJiBvYmosIFUmJiBuZXdfdmFsdWUpIHsKICAgcmV0dXJuIG9sZF92YWx1ZTsKIH0KIAorbmFt
ZXNwYWNlIHV0aWxpdHlfaW50ZXJuYWwgewordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFR1cGxlLCBzaXplX3QuLi4gST4KK1QgbWFrZV9mcm9tX3R1cGxlX2ltcGwoVHVwbGUmJiB0dXAs
IGFic2w6OmluZGV4X3NlcXVlbmNlPEkuLi4+KSB7CisgIHJldHVybiBUKHN0ZDo6Z2V0PEk+KHN0
ZDo6Zm9yd2FyZDxUdXBsZT4odHVwKSkuLi4pOworfQorfSAgLy8gbmFtZXNwYWNlIHV0aWxpdHlf
aW50ZXJuYWwKKworLy8gbWFrZV9mcm9tX3R1cGxlCisvLworLy8gR2l2ZW4gdGhlIHRlbXBsYXRl
IHBhcmFtZXRlciB0eXBlIGBUYCBhbmQgYSB0dXBsZSBvZiBhcmd1bWVudHMKKy8vIGBzdGQ6OnR1
cGxlKGFyZzAsIGFyZzEsIC4uLiwgYXJnTilgIGNvbnN0cnVjdHMgYW4gb2JqZWN0IG9mIHR5cGUg
YFRgIGFzIGlmIGJ5CisvLyBjYWxsaW5nIGBUKGFyZzAsIGFyZzEsIC4uLiwgYXJnTilgLgorLy8K
Ky8vIEV4YW1wbGU6CisvLworLy8gICBzdGQ6OnR1cGxlPGNvbnN0IGNoYXIqLCBzaXplX3Q+IGFy
Z3MoImhlbGxvIHdvcmxkIiwgNSk7CisvLyAgIGF1dG8gcyA9IGFic2w6Om1ha2VfZnJvbV90dXBs
ZTxzdGQ6OnN0cmluZz4oYXJncyk7CisvLyAgIGFzc2VydChzID09ICJoZWxsbyIpOworLy8KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBUdXBsZT4KK2NvbnN0ZXhwciBUIG1ha2VfZnJv
bV90dXBsZShUdXBsZSYmIHR1cCkgeworICByZXR1cm4gdXRpbGl0eV9pbnRlcm5hbDo6bWFrZV9m
cm9tX3R1cGxlX2ltcGw8VD4oCisgICAgICBzdGQ6OmZvcndhcmQ8VHVwbGU+KHR1cCksCisgICAg
ICBhYnNsOjptYWtlX2luZGV4X3NlcXVlbmNlPAorICAgICAgICAgIHN0ZDo6dHVwbGVfc2l6ZTxh
YnNsOjpkZWNheV90PFR1cGxlPj46OnZhbHVlPnt9KTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGFi
c2wKIAogI2VuZGlmICAvLyBBQlNMX1VUSUxJVFlfVVRJTElUWV9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdXRpbGl0eS91dGlsaXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHlfdGVzdC5j
YwppbmRleCAzYzQ0N2IyMGJiMDRhOTU1NTUxMzU2MTJlZGZmNTIwYWMwNTk3YTYxLi5mMDQ0YWQ2
NDRhNGQzZTc0YzJlMDgyNTkyMjRjNDY5MWJhZjRlN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGls
aXR5L3V0aWxpdHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHlfdGVzdC5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTM1LDcgKzEzNSw3
IEBAIHN0cnVjdCBQb29yU3RyQ2F0IHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFR1cCwgc2l6ZV90
Li4uIElzPgogc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFR1cFN0cmluZ1ZlY0ltcGwoY29uc3Qg
VHVwJiB0dXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6aW5k
ZXhfc2VxdWVuY2U8SXMuLi4+KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjppbmRleF9zZXF1ZW5jZTxJcy4uLj4pIHsKICAgcmV0dXJuIHtGbXQoc3Rk
OjpnZXQ8SXM+KHR1cCkpLi4ufTsKIH0KIApAQCAtMzQxLDUgKzM0MSwzNiBAQCBURVNUKEV4Y2hh
bmdlVGVzdCwgTW92ZU9ubHkpIHsKICAgRVhQRUNUX0VRKDEsICpiKTsKIH0KIAorVEVTVChNYWtl
RnJvbVR1cGxlVGVzdCwgU3RyaW5nKSB7CisgIEVYUEVDVF9FUSgKKyAgICAgIGFic2w6Om1ha2Vf
ZnJvbV90dXBsZTxzdGQ6OnN0cmluZz4oc3RkOjptYWtlX3R1cGxlKCJoZWxsbyB3b3JsZCIsIDUp
KSwKKyAgICAgICJoZWxsbyIpOworfQorCitURVNUKE1ha2VGcm9tVHVwbGVUZXN0LCBNb3ZlT25s
eVBhcmFtZXRlcikgeworICBzdHJ1Y3QgUyB7CisgICAgUyhzdGQ6OnVuaXF1ZV9wdHI8aW50PiBu
LCBzdGQ6OnVuaXF1ZV9wdHI8aW50PiBtKSA6IHZhbHVlKCpuICsgKm0pIHt9CisgICAgaW50IHZh
bHVlID0gMDsKKyAgfTsKKyAgYXV0byB0dXAgPQorICAgICAgc3RkOjptYWtlX3R1cGxlKGFic2w6
Om1ha2VfdW5pcXVlPGludD4oMyksIGFic2w6Om1ha2VfdW5pcXVlPGludD4oNCkpOworICBhdXRv
IHMgPSBhYnNsOjptYWtlX2Zyb21fdHVwbGU8Uz4oc3RkOjptb3ZlKHR1cCkpOworICBFWFBFQ1Rf
RVEocy52YWx1ZSwgNyk7Cit9CisKK1RFU1QoTWFrZUZyb21UdXBsZVRlc3QsIE5vUGFyYW1ldGVy
cykgeworICBzdHJ1Y3QgUyB7CisgICAgUygpIDogdmFsdWUoMSkge30KKyAgICBpbnQgdmFsdWUg
PSAyOworICB9OworICBFWFBFQ1RfRVEoYWJzbDo6bWFrZV9mcm9tX3R1cGxlPFM+KHN0ZDo6bWFr
ZV90dXBsZSgpKS52YWx1ZSwgMSk7Cit9CisKK1RFU1QoTWFrZUZyb21UdXBsZVRlc3QsIFBhaXIp
IHsKKyAgRVhQRUNUX0VRKAorICAgICAgKGFic2w6Om1ha2VfZnJvbV90dXBsZTxzdGQ6OnBhaXI8
Ym9vbCwgaW50Pj4oc3RkOjptYWtlX3R1cGxlKHRydWUsIDE3KSkpLAorICAgICAgc3RkOjptYWtl
X3BhaXIodHJ1ZSwgMTcpKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9y
ZW5hbWVfYW5ub3RhdGlvbnMuc2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvcmVuYW1lX2Fubm90YXRpb25zLnNoCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZhMmRlNGQ5ZDUwMDg2Mzg3MDMxYTljNTVjYzU2NzdiZDRlMGQxYjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvcmVuYW1lX2Fubm90YXRpb25zLnNoCkBAIC0wLDAgKzEsMTY1IEBACisjIS9iaW4vYmFz
aAorCisjIFRoaXMgc2NyaXB0IHJlbmFtZXMgYWxsIHRoZSBmdW5jdGlvbnMgYW5kIHRoZSBtYWNy
b3MgZGVmaW5lZCBpbgorIyBhYnNsL2Jhc2UvZHluYW1pY19hbm5vdGF0aW9ucy57aCxjY30gYW5k
IGFic2wvYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaC4KKyMKKyMgQ2hyb21pdW0ncyBkeW5hbWlj
X2Fubm90YXRpb25zIGxpdmUgaW4gLy9iYXNlL3RoaXJkX3BhcnR5L2R5bmFtaWNfYW5ub3RhdGlv
bnMKKyMgYW5kIGl0cyAvL2Jhc2UgY29udGFpbnMgYSBjb3B5IG9mIHRocmVhZF9hbm5vdGF0aW9u
cy5oIHdoaWNoIGNvbmZsaWN0IHdpdGgKKyMgQWJzZWlsJ3MgdmVyc2lvbnMgKE9EUiB2aW9sYXRp
b25zIGFuZCBtYWNybyBjbGFzaGluZykuCisjIEluIG9yZGVyIHRvIGF2b2lkIHByb2JsZW1zIGlu
IENocm9taXVtLCB0aGlzIGNvcHkgb2YgQWJzZWlsIGhhcyBpdHMgb3duCisjIGR5bmFtaWNfYW5u
b3RhdGlvbnMgYW5kIHRocmVhZF9hbm5vdGF0aW9ucyByZW5hbWVkLgorCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIGR5bmFtaWNfYW5ub3RhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorZm9yIHcgaW4gXAorICBBbm5vdGF0ZUJhcnJpZXJEZXN0cm95IFwKKyAgQW5ub3RhdGVC
YXJyaWVySW5pdCBcCisgIEFubm90YXRlQmFycmllcldhaXRBZnRlciBcCisgIEFubm90YXRlQmFy
cmllcldhaXRCZWZvcmUgXAorICBBbm5vdGF0ZUJlbmlnblJhY2UgXAorICBBbm5vdGF0ZUJlbmln
blJhY2VTaXplZCBcCisgIEFubm90YXRlQ29uZFZhclNpZ25hbCBcCisgIEFubm90YXRlQ29uZFZh
clNpZ25hbEFsbCBcCisgIEFubm90YXRlQ29uZFZhcldhaXQgXAorICBBbm5vdGF0ZUVuYWJsZVJh
Y2VEZXRlY3Rpb24gXAorICBBbm5vdGF0ZUV4cGVjdFJhY2UgXAorICBBbm5vdGF0ZUZsdXNoRXhw
ZWN0ZWRSYWNlcyBcCisgIEFubm90YXRlRmx1c2hTdGF0ZSBcCisgIEFubm90YXRlSGFwcGVuc0Fm
dGVyIFwKKyAgQW5ub3RhdGVIYXBwZW5zQmVmb3JlIFwKKyAgQW5ub3RhdGVJZ25vcmVSZWFkc0Jl
Z2luIFwKKyAgQW5ub3RhdGVJZ25vcmVSZWFkc0VuZCBcCisgIEFubm90YXRlSWdub3JlU3luY0Jl
Z2luIFwKKyAgQW5ub3RhdGVJZ25vcmVTeW5jRW5kIFwKKyAgQW5ub3RhdGVJZ25vcmVXcml0ZXNC
ZWdpbiBcCisgIEFubm90YXRlSWdub3JlV3JpdGVzRW5kIFwKKyAgQW5ub3RhdGVNZW1vcnlJc0lu
aXRpYWxpemVkIFwKKyAgQW5ub3RhdGVNZW1vcnlJc1VuaW5pdGlhbGl6ZWQgXAorICBBbm5vdGF0
ZU11dGV4SXNOb3RQSEIgXAorICBBbm5vdGF0ZU11dGV4SXNVc2VkQXNDb25kVmFyIFwKKyAgQW5u
b3RhdGVOZXdNZW1vcnkgXAorICBBbm5vdGF0ZU5vT3AgXAorICBBbm5vdGF0ZVBDUUNyZWF0ZSBc
CisgIEFubm90YXRlUENRRGVzdHJveSBcCisgIEFubm90YXRlUENRR2V0IFwKKyAgQW5ub3RhdGVQ
Q1FQdXQgXAorICBBbm5vdGF0ZVB1Ymxpc2hNZW1vcnlSYW5nZSBcCisgIEFubm90YXRlUldMb2Nr
QWNxdWlyZWQgXAorICBBbm5vdGF0ZVJXTG9ja0NyZWF0ZSBcCisgIEFubm90YXRlUldMb2NrQ3Jl
YXRlU3RhdGljIFwKKyAgQW5ub3RhdGVSV0xvY2tEZXN0cm95IFwKKyAgQW5ub3RhdGVSV0xvY2tS
ZWxlYXNlZCBcCisgIEFubm90YXRlVGhyZWFkTmFtZSBcCisgIEFubm90YXRlVHJhY2VNZW1vcnkg
XAorICBBbm5vdGF0ZVVucHVibGlzaE1lbW9yeVJhbmdlIFwKKyAgR2V0UnVubmluZ09uVmFsZ3Jp
bmQgXAorICBSdW5uaW5nT25WYWxncmluZCBcCisgIFN0YXRpY0Fubm90YXRlSWdub3JlUmVhZHNC
ZWdpbiBcCisgIFN0YXRpY0Fubm90YXRlSWdub3JlUmVhZHNFbmQgXAorICBTdGF0aWNBbm5vdGF0
ZUlnbm9yZVdyaXRlc0JlZ2luIFwKKyAgU3RhdGljQW5ub3RhdGVJZ25vcmVXcml0ZXNFbmQgXAor
ICBWYWxncmluZFNsb3dkb3duIFwKKzsgZG8KKyAgZmluZCBhYnNsLyAtdHlwZSBmIC1leGVjIHNl
ZCAtaSAicy9cYiR3XGIvQWJzbCR3L2ciIHt9IFw7Citkb25lCisKK2ZvciB3IGluIFwKKyAgQURE
UkVTU19TQU5JVElaRVJfUkVEWk9ORSBcCisgIEFOTk9UQUxZU0lTX0VOQUJMRUQgXAorICBBTk5P
VEFURV9CQVJSSUVSX0RFU1RST1kgXAorICBBTk5PVEFURV9CQVJSSUVSX0lOSVQgXAorICBBTk5P
VEFURV9CQVJSSUVSX1dBSVRfQUZURVIgXAorICBBTk5PVEFURV9CQVJSSUVSX1dBSVRfQkVGT1JF
IFwKKyAgQU5OT1RBVEVfQkVOSUdOX1JBQ0UgXAorICBBTk5PVEFURV9CRU5JR05fUkFDRV9TSVpF
RCBcCisgIEFOTk9UQVRFX0JFTklHTl9SQUNFX1NUQVRJQyBcCisgIEFOTk9UQVRFX0NPTkRWQVJf
TE9DS19XQUlUIFwKKyAgQU5OT1RBVEVfQ09ORFZBUl9TSUdOQUwgXAorICBBTk5PVEFURV9DT05E
VkFSX1NJR05BTF9BTEwgXAorICBBTk5PVEFURV9DT05EVkFSX1dBSVQgXAorICBBTk5PVEFURV9D
T05USUdVT1VTX0NPTlRBSU5FUiBcCisgIEFOTk9UQVRFX0VOQUJMRV9SQUNFX0RFVEVDVElPTiBc
CisgIEFOTk9UQVRFX0VYUEVDVF9SQUNFIFwKKyAgQU5OT1RBVEVfRkxVU0hfRVhQRUNURURfUkFD
RVMgXAorICBBTk5PVEFURV9GTFVTSF9TVEFURSBcCisgIEFOTk9UQVRFX0hBUFBFTlNfQUZURVIg
XAorICBBTk5PVEFURV9IQVBQRU5TX0JFRk9SRSBcCisgIEFOTk9UQVRFX0lHTk9SRV9SRUFEU19B
TkRfV1JJVEVTX0JFR0lOIEFOTk9UQVRFX0lHTk9SRV9SRUFEU19BTkRfV1JJVEVTX0VORCBcCisg
IEFOTk9UQVRFX0lHTk9SRV9SRUFEU19CRUdJTiBcCisgIEFOTk9UQVRFX0lHTk9SRV9SRUFEU19F
TkQgXAorICBBTk5PVEFURV9JR05PUkVfU1lOQ19CRUdJTiBcCisgIEFOTk9UQVRFX0lHTk9SRV9T
WU5DX0VORCBcCisgIEFOTk9UQVRFX0lHTk9SRV9XUklURVNfQkVHSU4gXAorICBBTk5PVEFURV9J
R05PUkVfV1JJVEVTX0VORCBcCisgIEFOTk9UQVRFX01FTU9SWV9JU19JTklUSUFMSVpFRCBcCisg
IEFOTk9UQVRFX01FTU9SWV9JU19VTklOSVRJQUxJWkVEIFwKKyAgQU5OT1RBVEVfTVVURVhfSVNf
VVNFRF9BU19DT05EVkFSIFwKKyAgQU5OT1RBVEVfTkVXX01FTU9SWSBcCisgIEFOTk9UQVRFX05P
VF9IQVBQRU5TX0JFRk9SRV9NVVRFWCBcCisgIEFOTk9UQVRFX05PX09QIFwKKyAgQU5OT1RBVEVf
UENRX0NSRUFURSBBTk5PVEFURV9QQ1FfREVTVFJPWSBcCisgIEFOTk9UQVRFX1BDUV9HRVQgQU5O
T1RBVEVfUENRX1BVVCBcCisgIEFOTk9UQVRFX1BVQkxJU0hfTUVNT1JZX1JBTkdFIFwKKyAgQU5O
T1RBVEVfUFVSRV9IQVBQRU5TX0JFRk9SRV9NVVRFWCBcCisgIEFOTk9UQVRFX1JXTE9DS19BQ1FV
SVJFRCBcCisgIEFOTk9UQVRFX1JXTE9DS19DUkVBVEUgXAorICBBTk5PVEFURV9SV0xPQ0tfQ1JF
QVRFX1NUQVRJQyBcCisgIEFOTk9UQVRFX1JXTE9DS19ERVNUUk9ZIFwKKyAgQU5OT1RBVEVfUldM
T0NLX1JFTEVBU0VEIFwKKyAgQU5OT1RBVEVfU1dBUF9NRU1PUllfUkFOR0UgXAorICBBTk5PVEFU
RV9USFJFQURfTkFNRSBcCisgIEFOTk9UQVRFX1RSQUNFX01FTU9SWSBcCisgIEFOTk9UQVRFX1VO
UFJPVEVDVEVEX1JFQUQgXAorICBBTk5PVEFURV9VTlBVQkxJU0hfTUVNT1JZX1JBTkdFIFwKKyAg
QU5OT1RBVElPTlNfRU5BQkxFRCBcCisgIEFUVFJJQlVURV9JR05PUkVfUkVBRFNfQkVHSU4gXAor
ICBBVFRSSUJVVEVfSUdOT1JFX1JFQURTX0VORCBcCisgIERZTkFNSUNfQU5OT1RBVElPTlNfQVRU
UklCVVRFX1dFQUsgXAorICBEWU5BTUlDX0FOTk9UQVRJT05TX0VOQUJMRUQgXAorICBEWU5BTUlD
X0FOTk9UQVRJT05TX0VYVEVSTkFMX0lNUEwgXAorICBEWU5BTUlDX0FOTk9UQVRJT05TX0dMVUUg
XAorICBEWU5BTUlDX0FOTk9UQVRJT05TX0dMVUUwIFwKKyAgRFlOQU1JQ19BTk5PVEFUSU9OU19J
TVBMIFwKKyAgRFlOQU1JQ19BTk5PVEFUSU9OU19OQU1FIFwKKyAgRFlOQU1JQ19BTk5PVEFUSU9O
U19QUkVGSVggXAorICBEWU5BTUlDX0FOTk9UQVRJT05TX1BST1ZJREVfUlVOTklOR19PTl9WQUxH
UklORCBcCisgIERZTkFNSUNfQU5OT1RBVElPTlNfV0FOVF9BVFRSSUJVVEVfV0VBSyBcCis7IGRv
CisgIGZpbmQgYWJzbC8gLXR5cGUgZiAtZXhlYyBzZWQgLWkgInMvXGIkd1xiL0FCU0xfJHcvZyIg
e30gXDsKK2RvbmUKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0aHJlYWRfYW5ub3Rh
dGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitmb3IgdyBpbiBcCisgIHRzX3VuY2hl
Y2tlZF9yZWFkIFwKKzsgZG8KKyAgZmluZCBhYnNsLyAtdHlwZSBmIC1leGVjIHNlZCAtaSAicy9c
YiR3XGIvYWJzbF8kdy9nIiB7fSBcOworZG9uZQorCitmb3IgdyBpbiBcCisgIFRIUkVBRF9BTk5P
VEFUSU9OX0FUVFJJQlVURV9fIFwKKyAgR1VBUkRFRF9CWSBcCisgIFBUX0dVQVJERURfQlkgXAor
ICBBQ1FVSVJFRF9BRlRFUiBcCisgIEFDUVVJUkVEX0JFRk9SRSBcCisgIEVYQ0xVU0lWRV9MT0NL
U19SRVFVSVJFRCBcCisgIFNIQVJFRF9MT0NLU19SRVFVSVJFRCBcCisgIExPQ0tTX0VYQ0xVREVE
IFwKKyAgTE9DS19SRVRVUk5FRCBcCisgIExPQ0tBQkxFIFwKKyAgU0NPUEVEX0xPQ0tBQkxFIFwK
KyAgRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04gXAorICBTSEFSRURfTE9DS19GVU5DVElPTiBcCisg
IFVOTE9DS19GVU5DVElPTiBcCisgIEVYQ0xVU0lWRV9UUllMT0NLX0ZVTkNUSU9OIFwKKyAgU0hB
UkVEX1RSWUxPQ0tfRlVOQ1RJT04gXAorICBBU1NFUlRfRVhDTFVTSVZFX0xPQ0sgXAorICBBU1NF
UlRfU0hBUkVEX0xPQ0sgXAorICBOT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIFwKKyAgVFNfVU5D
SEVDS0VEIFwKKyAgVFNfRklYTUUgXAorICBOT19USFJFQURfU0FGRVRZX0FOQUxZU0lTX0ZJWE1F
IFwKKyAgR1VBUkRFRF9CWV9GSVhNRSBcCisgIFRTX1VOQ0hFQ0tFRF9SRUFEIFwKKzsgZG8KKyAg
ZmluZCBhYnNsLyAtdHlwZSBmIC1leGVjIHNlZCAtaSAicy9cYiR3XGIvQUJTTF8kdy9nIiB7fSBc
OworZG9uZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL3JlbmFtZV9keW5hbWljX2Fubm90YXRpb25zLnNoIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL3Jl
bmFtZV9keW5hbWljX2Fubm90YXRpb25zLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiMzkwMTdmOTU4NTcxNzIzYmJjNzcwMDY2Yzc4YmNkNGNhYTIwZjg3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9yZW5hbWVfZHluYW1pY19hbm5vdGF0
aW9ucy5zaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0jIS9iaW4vYmFzaAotCi0j
IFRoaXMgc2NyaXB0IHJlbmFtZXMgYWxsIHRoZSBmdW5jdGlvbnMgYW5kIHRoZSBtYWNyb3MgZGVm
aW5lZCBpbgotIyBhYnNsL2Jhc2UvZHluYW1pY19hbm5vdGF0aW9ucy57aCxjY30uCi0jCi0jIENo
cm9taXVtJ3MgZHluYW1pY19hbm5vdGF0aW9ucyBsaXZlIGluIC8vYmFzZS90aGlyZF9wYXJ0eS9k
eW5hbWljX2Fubm90YXRpb25zCi0jIGFuZCB0aGUgYXJlIGluIGNvbmZsaWN0IHdpdGggQWJzZWls
J3MgZHluYW1pY19hbm5vdGF0aW9ucyAoT0RSIHZpb2xhdGlvbnMgYW5kCi0jIG1hY3JvIGNsYXNo
aW5nKS4KLSMgSW4gb3JkZXIgdG8gYXZvaWQgcHJvYmxlbXMgaW4gQ2hyb21pdW0sIHRoaXMgY29w
eSBvZiBBYnNlaWwgaGFzIGl0cyBvd24KLSMgZHluYW1pY19hbm5vdGF0aW9ucyByZW5hbWVkLgot
Ci1mb3IgdyBpbiBcCi0gIEFubm90YXRlQmFycmllckRlc3Ryb3kgXAotICBBbm5vdGF0ZUJhcnJp
ZXJJbml0IFwKLSAgQW5ub3RhdGVCYXJyaWVyV2FpdEFmdGVyIFwKLSAgQW5ub3RhdGVCYXJyaWVy
V2FpdEJlZm9yZSBcCi0gIEFubm90YXRlQmVuaWduUmFjZSBcCi0gIEFubm90YXRlQmVuaWduUmFj
ZVNpemVkIFwKLSAgQW5ub3RhdGVDb25kVmFyU2lnbmFsIFwKLSAgQW5ub3RhdGVDb25kVmFyU2ln
bmFsQWxsIFwKLSAgQW5ub3RhdGVDb25kVmFyV2FpdCBcCi0gIEFubm90YXRlRW5hYmxlUmFjZURl
dGVjdGlvbiBcCi0gIEFubm90YXRlRXhwZWN0UmFjZSBcCi0gIEFubm90YXRlRmx1c2hFeHBlY3Rl
ZFJhY2VzIFwKLSAgQW5ub3RhdGVGbHVzaFN0YXRlIFwKLSAgQW5ub3RhdGVIYXBwZW5zQWZ0ZXIg
XAotICBBbm5vdGF0ZUhhcHBlbnNCZWZvcmUgXAotICBBbm5vdGF0ZUlnbm9yZVJlYWRzQmVnaW4g
XAotICBBbm5vdGF0ZUlnbm9yZVJlYWRzRW5kIFwKLSAgQW5ub3RhdGVJZ25vcmVTeW5jQmVnaW4g
XAotICBBbm5vdGF0ZUlnbm9yZVN5bmNFbmQgXAotICBBbm5vdGF0ZUlnbm9yZVdyaXRlc0JlZ2lu
IFwKLSAgQW5ub3RhdGVJZ25vcmVXcml0ZXNFbmQgXAotICBBbm5vdGF0ZU1lbW9yeUlzSW5pdGlh
bGl6ZWQgXAotICBBbm5vdGF0ZU1lbW9yeUlzVW5pbml0aWFsaXplZCBcCi0gIEFubm90YXRlTXV0
ZXhJc05vdFBIQiBcCi0gIEFubm90YXRlTXV0ZXhJc1VzZWRBc0NvbmRWYXIgXAotICBBbm5vdGF0
ZU5ld01lbW9yeSBcCi0gIEFubm90YXRlTm9PcCBcCi0gIEFubm90YXRlUENRQ3JlYXRlIFwKLSAg
QW5ub3RhdGVQQ1FEZXN0cm95IFwKLSAgQW5ub3RhdGVQQ1FHZXQgXAotICBBbm5vdGF0ZVBDUVB1
dCBcCi0gIEFubm90YXRlUHVibGlzaE1lbW9yeVJhbmdlIFwKLSAgQW5ub3RhdGVSV0xvY2tBY3F1
aXJlZCBcCi0gIEFubm90YXRlUldMb2NrQ3JlYXRlIFwKLSAgQW5ub3RhdGVSV0xvY2tDcmVhdGVT
dGF0aWMgXAotICBBbm5vdGF0ZVJXTG9ja0Rlc3Ryb3kgXAotICBBbm5vdGF0ZVJXTG9ja1JlbGVh
c2VkIFwKLSAgQW5ub3RhdGVUaHJlYWROYW1lIFwKLSAgQW5ub3RhdGVUcmFjZU1lbW9yeSBcCi0g
IEFubm90YXRlVW5wdWJsaXNoTWVtb3J5UmFuZ2UgXAotICBHZXRSdW5uaW5nT25WYWxncmluZCBc
Ci0gIFJ1bm5pbmdPblZhbGdyaW5kIFwKLSAgU3RhdGljQW5ub3RhdGVJZ25vcmVSZWFkc0JlZ2lu
IFwKLSAgU3RhdGljQW5ub3RhdGVJZ25vcmVSZWFkc0VuZCBcCi0gIFN0YXRpY0Fubm90YXRlSWdu
b3JlV3JpdGVzQmVnaW4gXAotICBTdGF0aWNBbm5vdGF0ZUlnbm9yZVdyaXRlc0VuZCBcCi0gIFZh
bGdyaW5kU2xvd2Rvd24gXAotOyBkbwotICBmaW5kIGFic2wvIC10eXBlIGYgLWV4ZWMgc2VkIC1p
ICJzL1xiJHdcYi9BYnNsJHcvZyIge30gXDsKLWRvbmUKLQotZm9yIHcgaW4gXAotICBBRERSRVNT
X1NBTklUSVpFUl9SRURaT05FIFwKLSAgQU5OT1RBTFlTSVNfRU5BQkxFRCBcCi0gIEFOTk9UQVRF
X0JBUlJJRVJfREVTVFJPWSBcCi0gIEFOTk9UQVRFX0JBUlJJRVJfSU5JVCBcCi0gIEFOTk9UQVRF
X0JBUlJJRVJfV0FJVF9BRlRFUiBcCi0gIEFOTk9UQVRFX0JBUlJJRVJfV0FJVF9CRUZPUkUgXAot
ICBBTk5PVEFURV9CRU5JR05fUkFDRSBcCi0gIEFOTk9UQVRFX0JFTklHTl9SQUNFX1NJWkVEIFwK
LSAgQU5OT1RBVEVfQkVOSUdOX1JBQ0VfU1RBVElDIFwKLSAgQU5OT1RBVEVfQ09ORFZBUl9MT0NL
X1dBSVQgXAotICBBTk5PVEFURV9DT05EVkFSX1NJR05BTCBcCi0gIEFOTk9UQVRFX0NPTkRWQVJf
U0lHTkFMX0FMTCBcCi0gIEFOTk9UQVRFX0NPTkRWQVJfV0FJVCBcCi0gIEFOTk9UQVRFX0NPTlRJ
R1VPVVNfQ09OVEFJTkVSIFwKLSAgQU5OT1RBVEVfRU5BQkxFX1JBQ0VfREVURUNUSU9OIFwKLSAg
QU5OT1RBVEVfRVhQRUNUX1JBQ0UgXAotICBBTk5PVEFURV9GTFVTSF9FWFBFQ1RFRF9SQUNFUyBc
Ci0gIEFOTk9UQVRFX0ZMVVNIX1NUQVRFIFwKLSAgQU5OT1RBVEVfSEFQUEVOU19BRlRFUiBcCi0g
IEFOTk9UQVRFX0hBUFBFTlNfQkVGT1JFIFwKLSAgQU5OT1RBVEVfSUdOT1JFX1JFQURTX0FORF9X
UklURVNfQkVHSU4gQU5OT1RBVEVfSUdOT1JFX1JFQURTX0FORF9XUklURVNfRU5EIFwKLSAgQU5O
T1RBVEVfSUdOT1JFX1JFQURTX0JFR0lOIFwKLSAgQU5OT1RBVEVfSUdOT1JFX1JFQURTX0VORCBc
Ci0gIEFOTk9UQVRFX0lHTk9SRV9TWU5DX0JFR0lOIFwKLSAgQU5OT1RBVEVfSUdOT1JFX1NZTkNf
RU5EIFwKLSAgQU5OT1RBVEVfSUdOT1JFX1dSSVRFU19CRUdJTiBcCi0gIEFOTk9UQVRFX0lHTk9S
RV9XUklURVNfRU5EIFwKLSAgQU5OT1RBVEVfTUVNT1JZX0lTX0lOSVRJQUxJWkVEIFwKLSAgQU5O
T1RBVEVfTUVNT1JZX0lTX1VOSU5JVElBTElaRUQgXAotICBBTk5PVEFURV9NVVRFWF9JU19VU0VE
X0FTX0NPTkRWQVIgXAotICBBTk5PVEFURV9ORVdfTUVNT1JZIFwKLSAgQU5OT1RBVEVfTk9UX0hB
UFBFTlNfQkVGT1JFX01VVEVYIFwKLSAgQU5OT1RBVEVfTk9fT1AgXAotICBBTk5PVEFURV9QQ1Ff
Q1JFQVRFIEFOTk9UQVRFX1BDUV9ERVNUUk9ZIFwKLSAgQU5OT1RBVEVfUENRX0dFVCBBTk5PVEFU
RV9QQ1FfUFVUIFwKLSAgQU5OT1RBVEVfUFVCTElTSF9NRU1PUllfUkFOR0UgXAotICBBTk5PVEFU
RV9QVVJFX0hBUFBFTlNfQkVGT1JFX01VVEVYIFwKLSAgQU5OT1RBVEVfUldMT0NLX0FDUVVJUkVE
IFwKLSAgQU5OT1RBVEVfUldMT0NLX0NSRUFURSBcCi0gIEFOTk9UQVRFX1JXTE9DS19DUkVBVEVf
U1RBVElDIFwKLSAgQU5OT1RBVEVfUldMT0NLX0RFU1RST1kgXAotICBBTk5PVEFURV9SV0xPQ0tf
UkVMRUFTRUQgXAotICBBTk5PVEFURV9TV0FQX01FTU9SWV9SQU5HRSBcCi0gIEFOTk9UQVRFX1RI
UkVBRF9OQU1FIFwKLSAgQU5OT1RBVEVfVFJBQ0VfTUVNT1JZIFwKLSAgQU5OT1RBVEVfVU5QUk9U
RUNURURfUkVBRCBcCi0gIEFOTk9UQVRFX1VOUFVCTElTSF9NRU1PUllfUkFOR0UgXAotICBBTk5P
VEFUSU9OU19FTkFCTEVEIFwKLSAgQVRUUklCVVRFX0lHTk9SRV9SRUFEU19CRUdJTiBcCi0gIEFU
VFJJQlVURV9JR05PUkVfUkVBRFNfRU5EIFwKLSAgRFlOQU1JQ19BTk5PVEFUSU9OU19BVFRSSUJV
VEVfV0VBSyBcCi0gIERZTkFNSUNfQU5OT1RBVElPTlNfRU5BQkxFRCBcCi0gIERZTkFNSUNfQU5O
T1RBVElPTlNfRVhURVJOQUxfSU1QTCBcCi0gIERZTkFNSUNfQU5OT1RBVElPTlNfR0xVRSBcCi0g
IERZTkFNSUNfQU5OT1RBVElPTlNfR0xVRTAgXAotICBEWU5BTUlDX0FOTk9UQVRJT05TX0lNUEwg
XAotICBEWU5BTUlDX0FOTk9UQVRJT05TX05BTUUgXAotICBEWU5BTUlDX0FOTk9UQVRJT05TX1BS
RUZJWCBcCi0gIERZTkFNSUNfQU5OT1RBVElPTlNfUFJPVklERV9SVU5OSU5HX09OX1ZBTEdSSU5E
IFwKLSAgRFlOQU1JQ19BTk5PVEFUSU9OU19XQU5UX0FUVFJJQlVURV9XRUFLIFwKLTsgZG8KLSAg
ZmluZCBhYnNsLyAtdHlwZSBmIC1leGVjIHNlZCAtaSAicy9cYiR3XGIvQUJTTF8kdy9nIiB7fSBc
OwotZG9uZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhhYmVlZTQzY2NmM2Iz
YzNkYTY5ZTQ0N2RlNmU1OTU2OTNjMzE2NzIuLmE4ZmQzY2FiZmM0NTgzN2JlMmJiZDA3MmI4ODU3
YjI4MDg3YzdjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3
ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyOTIsNyAr
MTI5Miw2IEBACiAJCTQxRERCMjREMjEyNjVCRDcwMDI5NkQ0NyAvKiBmaXhlZF9hcnJheS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEREIyNEIyMTI2
NUJENzAwMjk2RDQ3IC8qIGZpeGVkX2FycmF5LmggKi87IH07CiAJCTQxRERCMjRFMjEyNjVCRDcw
MDI5NkQ0NyAvKiBpbmxpbmVkX3ZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFEREIyNEMyMTI2NUJENzAwMjk2RDQ3IC8qIGlubGluZWRfdmVj
dG9yLmggKi87IH07CiAJCTQxRERCMjUxMjEyNjVCRTkwMDI5NkQ0NyAvKiBvcHRpb25hbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEREIyNEYyMTI2
NUJFOTAwMjk2RDQ3IC8qIG9wdGlvbmFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDFEREIyNTIyMTI2NUJFOTAwMjk2RDQ3IC8qIG9wdGlvbmFs
LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEREIy
NTAyMTI2NUJFOTAwMjk2RDQ3IC8qIG9wdGlvbmFsLmNjICovOyB9OwogCQk0MUREQjI1NDIxMjY3
OEU0MDAyOTZENDcgLyogcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEREIyNTMyMTI2NzhFMzAwMjk2RDQ3IC8q
IHBsYXRmb3JtX3RocmVhZF90eXBlcy5jYyAqLzsgfTsKIAkJNDFEREIyNTYyMTI2NzkwQTAwMjk2
RDQ3IC8qIHNvY2tldC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRERCMjU1MjEyNjc5MEEwMDI5NkQ0NyAvKiBzb2NrZXQuY2MgKi87IH07CiAJCTQx
RERCMjU5MjEyNjc5MjgwMDI5NkQ0NyAvKiB6ZXJvX21lbW9yeS5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRERCMjU3MjEyNjc5MjgwMDI5NkQ0NyAv
KiB6ZXJvX21lbW9yeS5jYyAqLzsgfTsKQEAgLTE2OTQ2LDcgKzE2OTQ1LDYgQEAKIAkJCQk0MURE
QjI2MjIxMjY3OUEzMDAyOTZENDcgLyogb3BlbnNzbHNlc3Npb25jYWNoZS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxOUM4NDNGMUZFMjUwQjkwMDQwQzMwRiAvKiBvcGVuc3Nsc3RyZWFtYWRhcHRl
ci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRERCMjY1MjEyNjc5QTMwMDI5NkQ0NyAvKiBvcGVu
c3NsdXRpbGl0eS5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxRERCMjUyMjEyNjVCRTkwMDI5NkQ0
NyAvKiBvcHRpb25hbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QzY3MUU0M0M2MDkwMDYy
MUU5MiAvKiBvcHVzX2ludGVyZmFjZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhGRDcxRTQz
Q0Q2NjAwNjIxRTkyIC8qIG92ZXJ1c2VfZGV0ZWN0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REOEZEOTFFNDNDRDY2MDA2MjFFOTIgLyogb3ZlcnVzZV9lc3RpbWF0b3IuY2MgaW4gU291cmNl
cyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380523</attachid>
            <date>2019-10-09 02:31:08 -0700</date>
            <delta_ts>2019-10-18 00:25:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202726-20191009113027.patch</filename>
            <type>text/plain</type>
            <size>3455300</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBmMmY3MWZjMWQzMjI0MGRkZjBmMDFmYmEyOTllYTc2OWQyOWEyNTQ2Li44OGI4
MzQ1NDkwNjY5ZDM5NzNmYzZmOTA4NjIxOTkwNzJmN2IzZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMC0wOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB0aGly
ZC1wYXJ0eSBhYnNlaWxjcHAgdG8gTTc4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDI3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBSZW1vdmUgb3B0aW9uYWwuY2MuCisg
ICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6IFVwZGF0ZWQuCisgICAgICAg
ICogbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZSBvcHRpb25hbC5j
Yy4KKwogMjAxOS0wOS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRGlzYWJsZSBEVExTMS4wCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ01ha2VM
aXN0cy50eHQKaW5kZXggYmIyZWY2MmNlYTA3NjY4NWU1ZGJmZTQzNTczNmM5ODA4MmMxOGM5Zi4u
NDhhZWEyMjBmNmQ0MGM1NTlkMzQzMGE5YzlmMGViOTBmYjU3YmExZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9DTWFrZUxpc3RzLnR4dApAQCAtMzEsNyArMzEsNiBAQCBzZXQod2Vi
cnRjX1NPVVJDRVMKICAgICBTb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyaW5nX3ZpZXcuY2MKICAgICBTb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzL2JhZF9vcHRpb25hbF9hY2Nlc3MuY2MKICAgICBTb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5jYwotICAgIFNvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuY2MKICAgICBTb3VyY2UvdGhp
cmRfcGFydHkvYm9yaW5nc3NsL2Vycl9kYXRhLmMKICAgICBTb3VyY2UvdGhpcmRfcGFydHkvYm9y
aW5nc3NsL3NyYy9jcnlwdG8vYXNuMS9hX2JpdHN0ci5jCiAgICAgU291cmNlL3RoaXJkX3BhcnR5
L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2FzbjEvYV9ib29sLmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9B
YnNlaWxIZWxwZXJzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0Fic2VpbEhlbHBlcnMuY21ha2UKaW5kZXggMGM5
MzQxNzQ3NTEyY2ViNjE3MzU0MWM3ZjRhMjY2N2ExNWI1NzcyNy4uNThmOThjOGMzODU3MmZlZTNk
MTQyMjJlOWZhNTc2NTAyNjhmZDU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0Fic2VpbEhlbHBlcnMu
Y21ha2UKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL0NNYWtlL0Fic2VpbEhlbHBlcnMuY21ha2UKQEAgLTUsNyArNSw3IEBACiAj
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0j
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
ICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTE1LDYgKzE1LDggQEAKICMKIAogaW5jbHVkZShDTWFrZVBhcnNlQXJn
dW1lbnRzKQoraW5jbHVkZShBYnNlaWxDb25maWd1cmVDb3B0cykKK2luY2x1ZGUoQWJzZWlsSW5z
dGFsbERpcnMpCiAKICMgVGhlIElERSBmb2xkZXIgZm9yIEFic2VpbCB0aGF0IHdpbGwgYmUgdXNl
ZCBpZiBBYnNlaWwgaXMgaW5jbHVkZWQgaW4gYSBDTWFrZQogIyBwcm9qZWN0IHRoYXQgc2V0cwpA
QCAtMjIsMTQ5ICsyNCwyMzIgQEAgaW5jbHVkZShDTWFrZVBhcnNlQXJndW1lbnRzKQogIyBGb3Ig
ZXhhbXBsZSwgVmlzdWFsIFN0dWRpbyBzdXBwb3J0cyBmb2xkZXJzLgogc2V0KEFCU0xfSURFX0ZP
TERFUiBBYnNlaWwpCiAKLSMKLSMgY3JlYXRlIGEgbGlicmFyeSBpbiB0aGUgYWJzbCBuYW1lc3Bh
Y2UKLSMKLSMgcGFyYW1ldGVycwotIyBTT1VSQ0VTIDogc291cmNlcyBmaWxlcyBmb3IgdGhlIGxp
YnJhcnkKLSMgUFVCTElDX0xJQlJBUklFUzogdGFyZ2V0cyBhbmQgZmxhZ3MgZm9yIGxpbmtpbmcg
cGhhc2UKLSMgUFJJVkFURV9DT01QSUxFX0ZMQUdTOiBjb21waWxlIGZsYWdzIGZvciB0aGUgbGli
cmFyeS4gV2lsbCBub3QgYmUgZXhwb3J0ZWQuCi0jIEVYUE9SVF9OQU1FOiBleHBvcnQgbmFtZSBm
b3IgdGhlIGFic2w6OiB0YXJnZXQgZXhwb3J0Ci0jIFRBUkdFVDogdGFyZ2V0IG5hbWUKLSMKLSMg
Y3JlYXRlIGEgdGFyZ2V0IGFzc29jaWF0ZWQgdG8gPE5BTUU+Ci0jIGxpYnJhcmllcyBhcmUgaW5z
dGFsbGVkIHVuZGVyIENNQUtFX0lOU1RBTExfRlVMTF9MSUJESVIgYnkgZGVmYXVsdAotIwotZnVu
Y3Rpb24oYWJzbF9saWJyYXJ5KQotICBjbWFrZV9wYXJzZV9hcmd1bWVudHMoQUJTTF9MSUIKLSAg
ICAiRElTQUJMRV9JTlNUQUxMIiAjIGtlZXAgdGhhdCBpbiBjYXNlIHdlIHdhbnQgdG8gc3VwcG9y
dCBpbnN0YWxsYXRpb24gb25lIGRheQotICAgICJUQVJHRVQ7RVhQT1JUX05BTUUiCi0gICAgIlNP
VVJDRVM7UFVCTElDX0xJQlJBUklFUztQUklWQVRFX0NPTVBJTEVfRkxBR1MiCisjIGFic2xfY2Nf
bGlicmFyeSgpCisjCisjIENNYWtlIGZ1bmN0aW9uIHRvIGltaXRhdGUgQmF6ZWwncyBjY19saWJy
YXJ5IHJ1bGUuCisjCisjIFBhcmFtZXRlcnM6CisjIE5BTUU6IG5hbWUgb2YgdGFyZ2V0IChzZWUg
Tm90ZSkKKyMgSERSUzogTGlzdCBvZiBwdWJsaWMgaGVhZGVyIGZpbGVzIGZvciB0aGUgbGlicmFy
eQorIyBTUkNTOiBMaXN0IG9mIHNvdXJjZSBmaWxlcyBmb3IgdGhlIGxpYnJhcnkKKyMgREVQUzog
TGlzdCBvZiBvdGhlciBsaWJyYXJpZXMgdG8gYmUgbGlua2VkIGluIHRvIHRoZSBiaW5hcnkgdGFy
Z2V0cworIyBDT1BUUzogTGlzdCBvZiBwcml2YXRlIGNvbXBpbGUgb3B0aW9ucworIyBERUZJTkVT
OiBMaXN0IG9mIHB1YmxpYyBkZWZpbmVzCisjIExJTktPUFRTOiBMaXN0IG9mIGxpbmsgb3B0aW9u
cworIyBQVUJMSUM6IEFkZCB0aGlzIHNvIHRoYXQgdGhpcyBsaWJyYXJ5IHdpbGwgYmUgZXhwb3J0
ZWQgdW5kZXIgYWJzbDo6CisjIEFsc28gaW4gSURFLCB0YXJnZXQgd2lsbCBhcHBlYXIgaW4gQWJz
ZWlsIGZvbGRlciB3aGlsZSBub24gUFVCTElDIHdpbGwgYmUgaW4gQWJzZWlsL2ludGVybmFsLgor
IyBURVNUT05MWTogV2hlbiBhZGRlZCwgdGhpcyB0YXJnZXQgd2lsbCBvbmx5IGJlIGJ1aWx0IGlm
IHVzZXIgcGFzc2VzIC1EQUJTTF9SVU5fVEVTVFM9T04gdG8gQ01ha2UuCisjCisjIE5vdGU6Cisj
IEJ5IGRlZmF1bHQsIGFic2xfY2NfbGlicmFyeSB3aWxsIGFsd2F5cyBjcmVhdGUgYSBsaWJyYXJ5
IG5hbWVkIGFic2xfJHtOQU1FfSwKKyMgYW5kIGFsaWFzIHRhcmdldCBhYnNsOjoke05BTUV9LiAg
VGhlIGFic2w6OiBmb3JtIHNob3VsZCBhbHdheXMgYmUgdXNlZC4KKyMgVGhpcyBpcyB0byByZWR1
Y2UgbmFtZXNwYWNlIHBvbGx1dGlvbi4KKyMKKyMgYWJzbF9jY19saWJyYXJ5KAorIyAgIE5BTUUK
KyMgICAgIGF3ZXNvbWUKKyMgICBIRFJTCisjICAgICAiYS5oIgorIyAgIFNSQ1MKKyMgICAgICJh
LmNjIgorIyApCisjIGFic2xfY2NfbGlicmFyeSgKKyMgICBOQU1FCisjICAgICBmYW50YXN0aWNf
bGliCisjICAgU1JDUworIyAgICAgImIuY2MiCisjICAgREVQUworIyAgICAgYWJzbDo6YXdlc29t
ZSAjIG5vdCAiYXdlc29tZSIgIQorIyAgIFBVQkxJQworIyApCisjCisjIGFic2xfY2NfbGlicmFy
eSgKKyMgICBOQU1FCisjICAgICBtYWluX2xpYgorIyAgIC4uLgorIyAgIERFUFMKKyMgICAgIGFi
c2w6OmZhbnRhc3RpY19saWIKKyMgKQorIworIyBUT0RPOiBJbXBsZW1lbnQgIkFMV0FZU0xJTksi
CitmdW5jdGlvbihhYnNsX2NjX2xpYnJhcnkpCisgIGNtYWtlX3BhcnNlX2FyZ3VtZW50cyhBQlNM
X0NDX0xJQgorICAgICJESVNBQkxFX0lOU1RBTEw7UFVCTElDO1RFU1RPTkxZIgorICAgICJOQU1F
IgorICAgICJIRFJTO1NSQ1M7Q09QVFM7REVGSU5FUztMSU5LT1BUUztERVBTIgogICAgICR7QVJH
Tn0KICAgKQogCi0gIHNldChfTkFNRSAke0FCU0xfTElCX1RBUkdFVH0pCi0gIHN0cmluZyhUT1VQ
UEVSICR7X05BTUV9IF9VUFBFUl9OQU1FKQotCi0gIGFkZF9saWJyYXJ5KCR7X05BTUV9IFNUQVRJ
QyAke0FCU0xfTElCX1NPVVJDRVN9KQotCi0gIHRhcmdldF9jb21waWxlX29wdGlvbnMoJHtfTkFN
RX0gUFJJVkFURSAke0FCU0xfQ09NUElMRV9DWFhGTEFHU30gJHtBQlNMX0xJQl9QUklWQVRFX0NP
TVBJTEVfRkxBR1N9KQotICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtfTkFNRX0gUFVCTElDICR7
QUJTTF9MSUJfUFVCTElDX0xJQlJBUklFU30pCi0gIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVz
KCR7X05BTUV9Ci0gICAgUFVCTElDICR7QUJTTF9DT01NT05fSU5DTFVERV9ESVJTfSAke0FCU0xf
TElCX1BVQkxJQ19JTkNMVURFX0RJUlN9Ci0gICAgUFJJVkFURSAke0FCU0xfTElCX1BSSVZBVEVf
SU5DTFVERV9ESVJTfQotICApCi0gICMgQWRkIGFsbCBBYnNlaWwgdGFyZ2V0cyB0byBhIGEgZm9s
ZGVyIGluIHRoZSBJREUgZm9yIG9yZ2FuaXphdGlvbi4KLSAgc2V0X3Byb3BlcnR5KFRBUkdFVCAk
e19OQU1FfSBQUk9QRVJUWSBGT0xERVIgJHtBQlNMX0lERV9GT0xERVJ9KQotCi0gIGlmKEFCU0xf
TElCX0VYUE9SVF9OQU1FKQotICAgIGFkZF9saWJyYXJ5KGFic2w6OiR7QUJTTF9MSUJfRVhQT1JU
X05BTUV9IEFMSUFTICR7X05BTUV9KQorICBpZihOT1QgQUJTTF9DQ19MSUJfVEVTVE9OTFkgT1Ig
QUJTTF9SVU5fVEVTVFMpCisgICAgaWYoQUJTTF9FTkFCTEVfSU5TVEFMTCkKKyAgICAgIHNldChf
TkFNRSAiJHtBQlNMX0NDX0xJQl9OQU1FfSIpCisgICAgZWxzZSgpCisgICAgICBzZXQoX05BTUUg
ImFic2xfJHtBQlNMX0NDX0xJQl9OQU1FfSIpCisgICAgZW5kaWYoKQorCisgICAgIyBDaGVjayBp
ZiB0aGlzIGlzIGEgaGVhZGVyLW9ubHkgbGlicmFyeQorICAgICMgTm90ZSB0aGF0IGFzIG9mIEZl
YnJ1YXJ5IDIwMTksIG1hbnkgcG9wdWxhciBPUydzIChmb3IgZXhhbXBsZSwgVWJ1bnR1CisgICAg
IyAxNi4wNCBMVFMpIG9ubHkgY29tZSB3aXRoIGNtYWtlIDMuNSBieSBkZWZhdWx0LiAgRm9yIHRo
aXMgcmVhc29uLCB3ZSBjYW4ndAorICAgICMgdXNlIGxpc3QoRklMVEVSLi4uKQorICAgIHNldChB
QlNMX0NDX1NSQ1MgIiR7QUJTTF9DQ19MSUJfU1JDU30iKQorICAgIGZvcmVhY2goc3JjX2ZpbGUg
SU4gTElTVFMgQUJTTF9DQ19TUkNTKQorICAgICAgaWYoJHtzcmNfZmlsZX0gTUFUQ0hFUyAiLipc
XC4oaHxpbmMpIikKKyAgICAgICAgbGlzdChSRU1PVkVfSVRFTSBBQlNMX0NDX1NSQ1MgIiR7c3Jj
X2ZpbGV9IikKKyAgICAgIGVuZGlmKCkKKyAgICBlbmRmb3JlYWNoKCkKKyAgICBpZigiJHtBQlNM
X0NDX1NSQ1N9IiBTVFJFUVVBTCAiIikKKyAgICAgIHNldChBQlNMX0NDX0xJQl9JU19JTlRFUkZB
Q0UgMSkKKyAgICBlbHNlKCkKKyAgICAgIHNldChBQlNMX0NDX0xJQl9JU19JTlRFUkZBQ0UgMCkK
KyAgICBlbmRpZigpCisKKyAgICBpZihOT1QgQUJTTF9DQ19MSUJfSVNfSU5URVJGQUNFKQorICAg
ICAgYWRkX2xpYnJhcnkoJHtfTkFNRX0gU1RBVElDICIiKQorICAgICAgdGFyZ2V0X3NvdXJjZXMo
JHtfTkFNRX0gUFJJVkFURSAke0FCU0xfQ0NfTElCX1NSQ1N9ICR7QUJTTF9DQ19MSUJfSERSU30p
CisgICAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcygke19OQU1FfQorICAgICAgICBQVUJM
SUMKKyAgICAgICAgICAkPEJVSUxEX0lOVEVSRkFDRToke0FCU0xfQ09NTU9OX0lOQ0xVREVfRElS
U30+CisgICAgICAgICAgJDxJTlNUQUxMX0lOVEVSRkFDRToke0FCU0xfSU5TVEFMTF9JTkNMVURF
RElSfT4KKyAgICAgICkKKyAgICAgIHRhcmdldF9jb21waWxlX29wdGlvbnMoJHtfTkFNRX0KKyAg
ICAgICAgUFJJVkFURSAke0FCU0xfQ0NfTElCX0NPUFRTfSkKKyAgICAgIHRhcmdldF9saW5rX2xp
YnJhcmllcygke19OQU1FfQorICAgICAgICBQVUJMSUMgJHtBQlNMX0NDX0xJQl9ERVBTfQorICAg
ICAgICBQUklWQVRFCisgICAgICAgICAgJHtBQlNMX0NDX0xJQl9MSU5LT1BUU30KKyAgICAgICAg
ICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgICAgICkKKyAgICAgIHRhcmdldF9jb21waWxl
X2RlZmluaXRpb25zKCR7X05BTUV9IFBVQkxJQyAke0FCU0xfQ0NfTElCX0RFRklORVN9KQorCisg
ICAgICAjIEFkZCBhbGwgQWJzZWlsIHRhcmdldHMgdG8gYSBhIGZvbGRlciBpbiB0aGUgSURFIGZv
ciBvcmdhbml6YXRpb24uCisgICAgICBpZihBQlNMX0NDX0xJQl9QVUJMSUMpCisgICAgICAgIHNl
dF9wcm9wZXJ0eShUQVJHRVQgJHtfTkFNRX0gUFJPUEVSVFkgRk9MREVSICR7QUJTTF9JREVfRk9M
REVSfSkKKyAgICAgIGVsc2VpZihBQlNMX0NDX0xJQl9URVNUT05MWSkKKyAgICAgICAgc2V0X3By
b3BlcnR5KFRBUkdFVCAke19OQU1FfSBQUk9QRVJUWSBGT0xERVIgJHtBQlNMX0lERV9GT0xERVJ9
L3Rlc3QpCisgICAgICBlbHNlKCkKKyAgICAgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke19OQU1F
fSBQUk9QRVJUWSBGT0xERVIgJHtBQlNMX0lERV9GT0xERVJ9L2ludGVybmFsKQorICAgICAgZW5k
aWYoKQorCisgICAgICAjIElOVEVSRkFDRSBsaWJyYXJpZXMgY2FuJ3QgaGF2ZSB0aGUgQ1hYX1NU
QU5EQVJEIHByb3BlcnR5IHNldAorICAgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke19OQU1FfSBQ
Uk9QRVJUWSBDWFhfU1RBTkRBUkQgJHtBQlNMX0NYWF9TVEFOREFSRH0pCisgICAgICBzZXRfcHJv
cGVydHkoVEFSR0VUICR7X05BTUV9IFBST1BFUlRZIENYWF9TVEFOREFSRF9SRVFVSVJFRCBPTikK
KworICAgICAgIyBXaGVuIGJlaW5nIGluc3RhbGxlZCwgd2UgbG9zZSB0aGUgYWJzbF8gcHJlZml4
LiAgV2Ugd2FudCB0byBwdXQgaXQgYmFjaworICAgICAgIyB0byBoYXZlIHByb3Blcmx5IG5hbWVk
IGxpYiBmaWxlcy4gIFRoaXMgaXMgYSBuby1vcCB3aGVuIHdlIGFyZSBub3QgYmVpbmcKKyAgICAg
ICMgaW5zdGFsbGVkLgorICAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7X05BTUV9IFBST1BF
UlRJRVMKKyAgICAgICAgT1VUUFVUX05BTUUgImFic2xfJHtfTkFNRX0iCisgICAgICApCisgICAg
ZWxzZSgpCisgICAgICAjIEdlbmVyYXRpbmcgaGVhZGVyLW9ubHkgbGlicmFyeQorICAgICAgYWRk
X2xpYnJhcnkoJHtfTkFNRX0gSU5URVJGQUNFKQorICAgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0
b3JpZXMoJHtfTkFNRX0KKyAgICAgICAgSU5URVJGQUNFCisgICAgICAgICAgJDxCVUlMRF9JTlRF
UkZBQ0U6JHtBQlNMX0NPTU1PTl9JTkNMVURFX0RJUlN9PgorICAgICAgICAgICQ8SU5TVEFMTF9J
TlRFUkZBQ0U6JHtBQlNMX0lOU1RBTExfSU5DTFVERURJUn0+CisgICAgICAgICkKKyAgICAgIHRh
cmdldF9saW5rX2xpYnJhcmllcygke19OQU1FfQorICAgICAgICBJTlRFUkZBQ0UKKyAgICAgICAg
ICAke0FCU0xfQ0NfTElCX0RFUFN9CisgICAgICAgICAgJHtBQlNMX0NDX0xJQl9MSU5LT1BUU30K
KyAgICAgICAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgICAgICkKKyAgICAgIHRhcmdl
dF9jb21waWxlX2RlZmluaXRpb25zKCR7X05BTUV9IElOVEVSRkFDRSAke0FCU0xfQ0NfTElCX0RF
RklORVN9KQorICAgIGVuZGlmKCkKKworICAgICMgVE9ETyBjdXJyZW50bHkgd2UgZG9uJ3QgaW5z
dGFsbCBnb29nbGV0ZXN0IGFsb25nc2lkZSBhYnNlaWwgc291cmNlcywgc28KKyAgICAjIGluc3Rh
bGxlZCBhYnNlaWwgY2FuJ3QgYmUgdGVzdGVkLgorICAgIGlmKE5PVCBBQlNMX0NDX0xJQl9URVNU
T05MWSBBTkQgQUJTTF9FTkFCTEVfSU5TVEFMTCkKKyAgICAgIGluc3RhbGwoVEFSR0VUUyAke19O
QU1FfSBFWFBPUlQgJHtQUk9KRUNUX05BTUV9VGFyZ2V0cworICAgICAgICAgICAgUlVOVElNRSBE
RVNUSU5BVElPTiAke0FCU0xfSU5TVEFMTF9CSU5ESVJ9CisgICAgICAgICAgICBMSUJSQVJZIERF
U1RJTkFUSU9OICR7QUJTTF9JTlNUQUxMX0xJQkRJUn0KKyAgICAgICAgICAgIEFSQ0hJVkUgREVT
VElOQVRJT04gJHtBQlNMX0lOU1RBTExfTElCRElSfQorICAgICAgKQorICAgIGVuZGlmKCkKKwor
ICAgIGFkZF9saWJyYXJ5KGFic2w6OiR7QUJTTF9DQ19MSUJfTkFNRX0gQUxJQVMgJHtfTkFNRX0p
CiAgIGVuZGlmKCkKIGVuZGZ1bmN0aW9uKCkKIAorIyBhYnNsX2NjX3Rlc3QoKQorIworIyBDTWFr
ZSBmdW5jdGlvbiB0byBpbWl0YXRlIEJhemVsJ3MgY2NfdGVzdCBydWxlLgorIworIyBQYXJhbWV0
ZXJzOgorIyBOQU1FOiBuYW1lIG9mIHRhcmdldCAoc2VlIFVzYWdlIGJlbG93KQorIyBTUkNTOiBM
aXN0IG9mIHNvdXJjZSBmaWxlcyBmb3IgdGhlIGJpbmFyeQorIyBERVBTOiBMaXN0IG9mIG90aGVy
IGxpYnJhcmllcyB0byBiZSBsaW5rZWQgaW4gdG8gdGhlIGJpbmFyeSB0YXJnZXRzCisjIENPUFRT
OiBMaXN0IG9mIHByaXZhdGUgY29tcGlsZSBvcHRpb25zCisjIERFRklORVM6IExpc3Qgb2YgcHVi
bGljIGRlZmluZXMKKyMgTElOS09QVFM6IExpc3Qgb2YgbGluayBvcHRpb25zCisjCisjIE5vdGU6
CisjIEJ5IGRlZmF1bHQsIGFic2xfY2NfdGVzdCB3aWxsIGFsd2F5cyBjcmVhdGUgYSBiaW5hcnkg
bmFtZWQgYWJzbF8ke05BTUV9LgorIyBUaGlzIHdpbGwgYWxzbyBhZGQgaXQgdG8gY3Rlc3QgbGlz
dCBhcyBhYnNsXyR7TkFNRX0uCisjCisjIFVzYWdlOgorIyBhYnNsX2NjX2xpYnJhcnkoCisjICAg
TkFNRQorIyAgICAgYXdlc29tZQorIyAgIEhEUlMKKyMgICAgICJhLmgiCisjICAgU1JDUworIyAg
ICAgImEuY2MiCisjICAgUFVCTElDCisjICkKKyMKKyMgYWJzbF9jY190ZXN0KAorIyAgIE5BTUUK
KyMgICAgIGF3ZXNvbWVfdGVzdAorIyAgIFNSQ1MKKyMgICAgICJhd2Vzb21lX3Rlc3QuY2MiCisj
ICAgREVQUworIyAgICAgYWJzbDo6YXdlc29tZQorIyAgICAgZ21vY2sKKyMgICAgIGd0ZXN0X21h
aW4KKyMgKQorZnVuY3Rpb24oYWJzbF9jY190ZXN0KQorICBpZihOT1QgQUJTTF9SVU5fVEVTVFMp
CisgICAgcmV0dXJuKCkKKyAgZW5kaWYoKQogCi0KLSMKLSMgaGVhZGVyIG9ubHkgdmlydHVhbCB0
YXJnZXQgY3JlYXRpb24KLSMKLWZ1bmN0aW9uKGFic2xfaGVhZGVyX2xpYnJhcnkpCi0gIGNtYWtl
X3BhcnNlX2FyZ3VtZW50cyhBQlNMX0hPX0xJQgotICAgICJESVNBQkxFX0lOU1RBTEwiCi0gICAg
IkVYUE9SVF9OQU1FO1RBUkdFVCIKLSAgICAiUFVCTElDX0xJQlJBUklFUztQUklWQVRFX0NPTVBJ
TEVfRkxBR1M7UFVCTElDX0lOQ0xVREVfRElSUztQUklWQVRFX0lOQ0xVREVfRElSUyIKKyAgY21h
a2VfcGFyc2VfYXJndW1lbnRzKEFCU0xfQ0NfVEVTVAorICAgICIiCisgICAgIk5BTUUiCisgICAg
IlNSQ1M7Q09QVFM7REVGSU5FUztMSU5LT1BUUztERVBTIgogICAgICR7QVJHTn0KICAgKQogCi0g
IHNldChfTkFNRSAke0FCU0xfSE9fTElCX1RBUkdFVH0pCi0KLSAgc2V0KF9fZHVtbXlfaGVhZGVy
X29ubHlfbGliX2ZpbGUgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS8ke19OQU1FfV9oZWFk
ZXJfb25seV9kdW1teS5jYyIpCi0KLSAgaWYoTk9UIEVYSVNUUyAke19fZHVtbXlfaGVhZGVyX29u
bHlfbGliX2ZpbGV9KQotICAgIGZpbGUoV1JJVEUgJHtfX2R1bW15X2hlYWRlcl9vbmx5X2xpYl9m
aWxlfQotICAgICAgIi8qIGdlbmVyYXRlZCBmaWxlIGZvciBoZWFkZXItb25seSBjbWFrZSB0YXJn
ZXQgKi8KLQotICAgICAgbmFtZXNwYWNlIGFic2wgewotCi0gICAgICAgLy8gc2luZ2xlIG1lYW5p
bmdsZXNzIHN5bWJvbAotICAgICAgIHZvaWQgJHtfTkFNRX1fX2hlYWRlcl9mYWtlc3ltKCkge30K
LSAgICAgIH0gIC8vIG5hbWVzcGFjZSBhYnNsCi0gICAgICAiCi0gICAgKQotICBlbmRpZigpCi0K
LQotICBhZGRfbGlicmFyeSgke19OQU1FfSAke19fZHVtbXlfaGVhZGVyX29ubHlfbGliX2ZpbGV9
KQotICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtfTkFNRX0gUFVCTElDICR7QUJTTF9IT19MSUJf
UFVCTElDX0xJQlJBUklFU30pCisgIHNldChfTkFNRSAiYWJzbF8ke0FCU0xfQ0NfVEVTVF9OQU1F
fSIpCisgIGFkZF9leGVjdXRhYmxlKCR7X05BTUV9ICIiKQorICB0YXJnZXRfc291cmNlcygke19O
QU1FfSBQUklWQVRFICR7QUJTTF9DQ19URVNUX1NSQ1N9KQogICB0YXJnZXRfaW5jbHVkZV9kaXJl
Y3Rvcmllcygke19OQU1FfQotICAgIFBVQkxJQyAke0FCU0xfQ09NTU9OX0lOQ0xVREVfRElSU30g
JHtBQlNMX0hPX0xJQl9QVUJMSUNfSU5DTFVERV9ESVJTfQotICAgIFBSSVZBVEUgJHtBQlNMX0hP
X0xJQl9QUklWQVRFX0lOQ0xVREVfRElSU30KKyAgICBQVUJMSUMgJHtBQlNMX0NPTU1PTl9JTkNM
VURFX0RJUlN9CisgICAgUFJJVkFURSAke0dNT0NLX0lOQ0xVREVfRElSU30gJHtHVEVTVF9JTkNM
VURFX0RJUlN9CiAgICkKLQotICAjIEFkZCBhbGwgQWJzZWlsIHRhcmdldHMgdG8gYSBhIGZvbGRl
ciBpbiB0aGUgSURFIGZvciBvcmdhbml6YXRpb24uCi0gIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtf
TkFNRX0gUFJPUEVSVFkgRk9MREVSICR7QUJTTF9JREVfRk9MREVSfSkKLQotICBpZihBQlNMX0hP
X0xJQl9FWFBPUlRfTkFNRSkKLSAgICBhZGRfbGlicmFyeShhYnNsOjoke0FCU0xfSE9fTElCX0VY
UE9SVF9OQU1FfSBBTElBUyAke19OQU1FfSkKLSAgZW5kaWYoKQotCi1lbmRmdW5jdGlvbigpCi0K
LQotIwotIyBjcmVhdGUgYW4gYWJzZWlsIHVuaXRfdGVzdCBhbmQgYWRkIGl0IHRvIHRoZSBleGVj
dXRlZCB0ZXN0IGxpc3QKLSMKLSMgcGFyYW1ldGVycwotIyBUQVJHRVQ6IHRhcmdldCBuYW1lIHBy
ZWZpeAotIyBTT1VSQ0VTOiBzb3VyY2VzIGZpbGVzIGZvciB0aGUgdGVzdHMKLSMgUFVCTElDX0xJ
QlJBUklFUzogdGFyZ2V0cyBhbmQgZmxhZ3MgZm9yIGxpbmtpbmcgcGhhc2UuCi0jIFBSSVZBVEVf
Q09NUElMRV9GTEFHUzogY29tcGlsZSBmbGFncyBmb3IgdGhlIHRlc3QuIFdpbGwgbm90IGJlIGV4
cG9ydGVkLgotIwotIyBjcmVhdGUgYSB0YXJnZXQgYXNzb2NpYXRlZCB0byA8TkFNRT5fYmluCi0j
Ci0jIGFsbCB0ZXN0cyB3aWxsIGJlIHJlZ2lzdGVyIGZvciBleGVjdXRpb24gd2l0aCBhZGRfdGVz
dCgpCi0jCi0jIHRlc3QgY29tcGlsYXRpb24gYW5kIGV4ZWN1dGlvbiBpcyBkaXNhYmxlIHdoZW4g
QUJTTF9SVU5fVEVTVFM9T0ZGCi0jCi1mdW5jdGlvbihhYnNsX3Rlc3QpCi0KLSAgY21ha2VfcGFy
c2VfYXJndW1lbnRzKEFCU0xfVEVTVAotICAgICIiCi0gICAgIlRBUkdFVCIKLSAgICAiU09VUkNF
UztQVUJMSUNfTElCUkFSSUVTO1BSSVZBVEVfQ09NUElMRV9GTEFHUztQVUJMSUNfSU5DTFVERV9E
SVJTIgotICAgICR7QVJHTn0KKyAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoJHtfTkFNRX0K
KyAgICBQVUJMSUMgJHtBQlNMX0NDX1RFU1RfREVGSU5FU30KICAgKQorICB0YXJnZXRfY29tcGls
ZV9vcHRpb25zKCR7X05BTUV9CisgICAgUFJJVkFURSAke0FCU0xfQ0NfVEVTVF9DT1BUU30KKyAg
KQorICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtfTkFNRX0KKyAgICBQVUJMSUMgJHtBQlNMX0ND
X1RFU1RfREVQU30KKyAgICBQUklWQVRFICR7QUJTTF9DQ19URVNUX0xJTktPUFRTfQorICApCisg
ICMgQWRkIGFsbCBBYnNlaWwgdGFyZ2V0cyB0byBhIGEgZm9sZGVyIGluIHRoZSBJREUgZm9yIG9y
Z2FuaXphdGlvbi4KKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke19OQU1FfSBQUk9QRVJUWSBGT0xE
RVIgJHtBQlNMX0lERV9GT0xERVJ9L3Rlc3QpCiAKKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke19O
QU1FfSBQUk9QRVJUWSBDWFhfU1RBTkRBUkQgJHtBQlNMX0NYWF9TVEFOREFSRH0pCisgIHNldF9w
cm9wZXJ0eShUQVJHRVQgJHtfTkFNRX0gUFJPUEVSVFkgQ1hYX1NUQU5EQVJEX1JFUVVJUkVEIE9O
KQogCi0gIGlmKEFCU0xfUlVOX1RFU1RTKQotCi0gICAgc2V0KF9OQU1FICR7QUJTTF9URVNUX1RB
UkdFVH0pCi0gICAgc3RyaW5nKFRPVVBQRVIgJHtfTkFNRX0gX1VQUEVSX05BTUUpCi0KLSAgICBh
ZGRfZXhlY3V0YWJsZSgke19OQU1FfV9iaW4gJHtBQlNMX1RFU1RfU09VUkNFU30pCi0KLSAgICB0
YXJnZXRfY29tcGlsZV9vcHRpb25zKCR7X05BTUV9X2JpbiBQUklWQVRFICR7QUJTTF9DT01QSUxF
X0NYWEZMQUdTfSAke0FCU0xfVEVTVF9QUklWQVRFX0NPTVBJTEVfRkxBR1N9KQotICAgIHRhcmdl
dF9saW5rX2xpYnJhcmllcygke19OQU1FfV9iaW4gUFVCTElDICR7QUJTTF9URVNUX1BVQkxJQ19M
SUJSQVJJRVN9ICR7QUJTTF9URVNUX0NPTU1PTl9MSUJSQVJJRVN9KQotICAgIHRhcmdldF9pbmNs
dWRlX2RpcmVjdG9yaWVzKCR7X05BTUV9X2JpbgotICAgICAgUFVCTElDICR7QUJTTF9DT01NT05f
SU5DTFVERV9ESVJTfSAke0FCU0xfVEVTVF9QVUJMSUNfSU5DTFVERV9ESVJTfQotICAgICAgUFJJ
VkFURSAke0dNT0NLX0lOQ0xVREVfRElSU30gJHtHVEVTVF9JTkNMVURFX0RJUlN9Ci0gICAgKQot
Ci0gICAgIyBBZGQgYWxsIEFic2VpbCB0YXJnZXRzIHRvIGEgYSBmb2xkZXIgaW4gdGhlIElERSBm
b3Igb3JnYW5pemF0aW9uLgotICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtfTkFNRX1fYmluIFBS
T1BFUlRZIEZPTERFUiAke0FCU0xfSURFX0ZPTERFUn0pCi0KLSAgICBhZGRfdGVzdCgke19OQU1F
fSAke19OQU1FfV9iaW4pCi0gIGVuZGlmKEFCU0xfUlVOX1RFU1RTKQotCisgIGFkZF90ZXN0KE5B
TUUgJHtfTkFNRX0gQ09NTUFORCAke19OQU1FfSkKIGVuZGZ1bmN0aW9uKCkKIAogCi0KLQogZnVu
Y3Rpb24oY2hlY2tfdGFyZ2V0IG15X3RhcmdldCkKLQogICBpZihOT1QgVEFSR0VUICR7bXlfdGFy
Z2V0fSkKICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICIgQUJTTDogY29tcGlsaW5nIGFic2wgcmVx
dWlyZXMgYSAke215X3RhcmdldH0gQ01ha2UgdGFyZ2V0IGluIHlvdXIgcHJvamVjdCwKICAgICAg
ICAgICAgICAgICAgICBzZWUgQ01ha2UvUkVBRE1FLm1kIGZvciBtb3JlIGRldGFpbHMiKQogICBl
bmRpZihOT1QgVEFSR0VUICR7bXlfdGFyZ2V0fSkKLQogZW5kZnVuY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL0NNYWtlL0Fic2VpbEluc3RhbGxEaXJzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0Fic2VpbEluc3RhbGxE
aXJzLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2NzI3MmY4MzBjMWZlOTQzN2MxMTJjMmRhMDQxZTZjNDE0
MGRmNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJzZWlsSW5zdGFsbERpcnMuY21ha2UK
QEAgLTAsMCArMSwyMCBAQAoraW5jbHVkZShHTlVJbnN0YWxsRGlycykKKworIyBhYnNsX1ZFUlNJ
T04gaXMgb25seSBzZXQgaWYgd2UgYXJlIGFuIExUUyByZWxlYXNlIGJlaW5nIGluc3RhbGxlZCwg
aW4gd2hpY2gKKyMgY2FzZSBpdCBtYXkgYmUgaW50byBhIHN5c3RlbSBkaXJlY3RvcnkgYW5kIHNv
IHdlIG5lZWQgdG8gbWFrZSBzdWJkaXJlY3RvcmllcworIyBmb3IgZWFjaCBpbnN0YWxsZWQgdmVy
c2lvbiBvZiBBYnNlaWwuICBUaGlzIG1lY2hhbmlzbSBpcyBpbXBsZW1lbnRlZCBpbgorIyBBYnNl
aWwncyBpbnRlcm5hbCBDb3B5YmFyYSAoaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jb3B5YmFy
YSkgd29ya2Zsb3dzIGFuZAorIyBpc24ndCB2aXNpYmxlIGluIHRoZSBDTWFrZSBidWlsZHN5c3Rl
bSBpdHNlbGYuCisKK2lmKGFic2xfVkVSU0lPTikKKyAgc2V0KEFCU0xfU1VCRElSICIke1BST0pF
Q1RfTkFNRX1fJHtQUk9KRUNUX1ZFUlNJT059IikKKyAgc2V0KEFCU0xfSU5TVEFMTF9CSU5ESVIg
IiR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9LyR7QUJTTF9TVUJESVJ9IikKKyAgc2V0KEFCU0xfSU5T
VEFMTF9DT05GSUdESVIgIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L2NtYWtlLyR7QUJTTF9TVUJE
SVJ9IikKKyAgc2V0KEFCU0xfSU5TVEFMTF9JTkNMVURFRElSICIke0NNQUtFX0lOU1RBTExfSU5D
TFVERURJUn0ve0FCU0xfU1VCRElSfSIpCisgIHNldChBQlNMX0lOU1RBTExfTElCRElSICIke0NN
QUtFX0lOU1RBTExfTElCRElSfS8ke0FCU0xfU1VCRElSfSIpCitlbHNlKCkKKyAgc2V0KEFCU0xf
SU5TVEFMTF9CSU5ESVIgIiR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9IikKKyAgc2V0KEFCU0xfSU5T
VEFMTF9DT05GSUdESVIgIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L2NtYWtlLyR7UFJPSkVDVF9O
QU1FfSIpCisgIHNldChBQlNMX0lOU1RBTExfSU5DTFVERURJUiAiJHtDTUFLRV9JTlNUQUxMX0lO
Q0xVREVESVJ9IikKKyAgc2V0KEFCU0xfSU5TVEFMTF9MSUJESVIgIiR7Q01BS0VfSU5TVEFMTF9M
SUJESVJ9IikKK2VuZGlmKCkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvQ01ha2UvQ01ha2VMaXN0cy50eHQuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQ01ha2VMaXN0cy50eHQuaW4KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MGEzM2U5YWM2YTZkZGZlMGViZDE4MWIzMzc0
M2Y5NWU2N2I1YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL0NNYWtlL0NNYWtlTGlzdHMudHh0LmluCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBA
QAotY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOC4yKQotCi1wcm9qZWN0KGdvb2ds
ZXRlc3QtZG93bmxvYWQgTk9ORSkKLQotaW5jbHVkZShFeHRlcm5hbFByb2plY3QpCi1FeHRlcm5h
bFByb2plY3RfQWRkKGdvb2dsZXRlc3QKLSAgR0lUX1JFUE9TSVRPUlkgICAgaHR0cHM6Ly9naXRo
dWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LmdpdAotICBHSVRfVEFHICAgICAgICAgICBtYXN0ZXIK
LSAgU09VUkNFX0RJUiAgICAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1zcmMi
Ci0gIEJJTkFSWV9ESVIgICAgICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVp
bGQiCi0gIENPTkZJR1VSRV9DT01NQU5EICIiCi0gIEJVSUxEX0NPTU1BTkQgICAgICIiCi0gIElO
U1RBTExfQ09NTUFORCAgICIiCi0gIFRFU1RfQ09NTUFORCAgICAgICIiCi0pClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0Rvd25sb2FkR1Rlc3QuY21ha2Ug
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvQ01ha2UvRG93bmxvYWRHVGVzdC5jbWFrZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOWQ0MTMyMTU4YjhkZjNhYWY2NWQ0NDJmMTQ4NTIxNTI1ZmIyNTNkYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvRG93bmxvYWRHVGVzdC5j
bWFrZQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLSMgRG93bmxvYWRzIGFuZCB1bnBh
Y2tzIGdvb2dsZXRlc3QgYXQgY29uZmlndXJlIHRpbWUuICBCYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rp
b25zCi0jIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC90cmVlL21hc3Rl
ci9nb29nbGV0ZXN0I2luY29ycG9yYXRpbmctaW50by1hbi1leGlzdGluZy1jbWFrZS1wcm9qZWN0
Ci0KLSMgRG93bmxvYWQgdGhlIGxhdGVzdCBnb29nbGV0ZXN0IGZyb20gR2l0aHViIG1hc3Rlcgot
Y29uZmlndXJlX2ZpbGUoCi0gICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vQ01ha2VMaXN0cy50
eHQuaW4KLSAgZ29vZ2xldGVzdC1kb3dubG9hZC9DTWFrZUxpc3RzLnR4dAotKQotCi0jIENvbmZp
Z3VyZSBhbmQgYnVpbGQgdGhlIGRvd25sb2FkZWQgZ29vZ2xldGVzdCBzb3VyY2UKLWV4ZWN1dGVf
cHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUcgIiR7Q01BS0VfR0VORVJBVE9SfSIg
LgotICBSRVNVTFRfVkFSSUFCTEUgcmVzdWx0Ci0gIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0Vf
QklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3dubG9hZCApCi1pZihyZXN1bHQpCi0gIG1lc3NhZ2Uo
RkFUQUxfRVJST1IgIkNNYWtlIHN0ZXAgZm9yIGdvb2dsZXRlc3QgZmFpbGVkOiAke3Jlc3VsdH0i
KQotZW5kaWYoKQotCi1leGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC0t
YnVpbGQgLgotICBSRVNVTFRfVkFSSUFCTEUgcmVzdWx0Ci0gIFdPUktJTkdfRElSRUNUT1JZICR7
Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3dubG9hZCkKLWlmKHJlc3VsdCkKLSAgbWVz
c2FnZShGQVRBTF9FUlJPUiAiQnVpbGQgc3RlcCBmb3IgZ29vZ2xldGVzdCBmYWlsZWQ6ICR7cmVz
dWx0fSIpCi1lbmRpZigpCi0KLSMgUHJldmVudCBvdmVycmlkaW5nIHRoZSBwYXJlbnQgcHJvamVj
dCdzIGNvbXBpbGVyL2xpbmtlciBzZXR0aW5ncyBvbiBXaW5kb3dzCi1zZXQoZ3Rlc3RfZm9yY2Vf
c2hhcmVkX2NydCBPTiBDQUNIRSBCT09MICIiIEZPUkNFKQotCi0jIEFkZCBnb29nbGV0ZXN0IGRp
cmVjdGx5IHRvIG91ciBidWlsZC4gVGhpcyBkZWZpbmVzIHRoZSBndGVzdCBhbmQgZ3Rlc3RfbWFp
bgotIyB0YXJnZXRzLgotYWRkX3N1YmRpcmVjdG9yeSgke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2ds
ZXRlc3Qtc3JjCi0gICAgICAgICAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVz
dC1idWlsZAotICAgICAgICAgICAgICAgICBFWENMVURFX0ZST01fQUxMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L0NNYWtlL0dvb2dsZXRlc3QvQ01ha2VMaXN0cy50eHQuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvR29vZ2xldGVzdC9D
TWFrZUxpc3RzLnR4dC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjBhMzNlOWFjNmE2ZGRmZTBlYmQxODFiMzM3
NDNmOTVlNjdiNWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0dvb2dsZXRlc3QvQ01ha2VM
aXN0cy50eHQuaW4KQEAgLTAsMCArMSwxNSBAQAorY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJT
SU9OIDIuOC4yKQorCitwcm9qZWN0KGdvb2dsZXRlc3QtZG93bmxvYWQgTk9ORSkKKworaW5jbHVk
ZShFeHRlcm5hbFByb2plY3QpCitFeHRlcm5hbFByb2plY3RfQWRkKGdvb2dsZXRlc3QKKyAgR0lU
X1JFUE9TSVRPUlkgICAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LmdpdAor
ICBHSVRfVEFHICAgICAgICAgICBtYXN0ZXIKKyAgU09VUkNFX0RJUiAgICAgICAgIiR7Q01BS0Vf
QklOQVJZX0RJUn0vZ29vZ2xldGVzdC1zcmMiCisgIEJJTkFSWV9ESVIgICAgICAgICIke0NNQUtF
X0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQiCisgIENPTkZJR1VSRV9DT01NQU5EICIiCisg
IEJVSUxEX0NPTU1BTkQgICAgICIiCisgIElOU1RBTExfQ09NTUFORCAgICIiCisgIFRFU1RfQ09N
TUFORCAgICAgICIiCispClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L0NNYWtlL0dvb2dsZXRlc3QvRG93bmxvYWRHVGVzdC5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9Hb29nbGV0ZXN0
L0Rvd25sb2FkR1Rlc3QuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M2ODJhZWYwN2YzZDdmYjJhOTg2NTdh
NWQ2ZGNiZTlkYTM3MWVkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9Hb29nbGV0ZXN0L0Rv
d25sb2FkR1Rlc3QuY21ha2UKQEAgLTAsMCArMSwzMiBAQAorIyBEb3dubG9hZHMgYW5kIHVucGFj
a3MgZ29vZ2xldGVzdCBhdCBjb25maWd1cmUgdGltZS4gIEJhc2VkIG9uIHRoZSBpbnN0cnVjdGlv
bnMKKyMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L3RyZWUvbWFzdGVy
L2dvb2dsZXRlc3QjaW5jb3Jwb3JhdGluZy1pbnRvLWFuLWV4aXN0aW5nLWNtYWtlLXByb2plY3QK
KworIyBEb3dubG9hZCB0aGUgbGF0ZXN0IGdvb2dsZXRlc3QgZnJvbSBHaXRodWIgbWFzdGVyCitj
b25maWd1cmVfZmlsZSgKKyAgJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9DTWFrZUxpc3RzLnR4
dC5pbgorICAke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtZG93bmxvYWQvQ01ha2VMaXN0
cy50eHQKKykKKworIyBDb25maWd1cmUgYW5kIGJ1aWxkIHRoZSBkb3dubG9hZGVkIGdvb2dsZXRl
c3Qgc291cmNlCitleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1HICIk
e0NNQUtFX0dFTkVSQVRPUn0iIC4KKyAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAorICBXT1JLSU5H
X0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtZG93bmxvYWQgKQoraWYo
cmVzdWx0KQorICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDTWFrZSBzdGVwIGZvciBnb29nbGV0ZXN0
IGZhaWxlZDogJHtyZXN1bHR9IikKK2VuZGlmKCkKKworZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQg
JHtDTUFLRV9DT01NQU5EfSAtLWJ1aWxkIC4KKyAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAorICBX
T1JLSU5HX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtZG93bmxvYWQp
CitpZihyZXN1bHQpCisgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkJ1aWxkIHN0ZXAgZm9yIGdvb2ds
ZXRlc3QgZmFpbGVkOiAke3Jlc3VsdH0iKQorZW5kaWYoKQorCisjIFByZXZlbnQgb3ZlcnJpZGlu
ZyB0aGUgcGFyZW50IHByb2plY3QncyBjb21waWxlci9saW5rZXIgc2V0dGluZ3Mgb24gV2luZG93
cworc2V0KGd0ZXN0X2ZvcmNlX3NoYXJlZF9jcnQgT04gQ0FDSEUgQk9PTCAiIiBGT1JDRSkKKwor
IyBBZGQgZ29vZ2xldGVzdCBkaXJlY3RseSB0byBvdXIgYnVpbGQuIFRoaXMgZGVmaW5lcyB0aGUg
Z3Rlc3QgYW5kIGd0ZXN0X21haW4KKyMgdGFyZ2V0cy4KK2FkZF9zdWJkaXJlY3RvcnkoJHtDTUFL
RV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LXNyYworICAgICAgICAgICAgICAgICAke0NNQUtFX0JJ
TkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQKKyAgICAgICAgICAgICAgICAgRVhDTFVERV9GUk9N
X0FMTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvUkVBRE1FLm1kCmlu
ZGV4IDc5YmJlMjRkNWFkNGY0MGE0MzkxYmZhYjA1YWI3N2NhMDAwMzJlN2YuLjQ2OWRmZWY1ZDFj
YWQ5NTEzNTViMjg0ZTk4MDFlOTEwNGQ5YmExZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9SRUFETUUu
bWQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL0NNYWtlL1JFQURNRS5tZApAQCAtMyw3ICszLDcgQEAKIEFic2VpbCBjb21lcyB3
aXRoIGEgQ01ha2UgYnVpbGQgc2NyaXB0IChbQ01ha2VMaXN0cy50eHRdKC4uL0NNYWtlTGlzdHMu
dHh0KSkKIHRoYXQgY2FuIGJlIHVzZWQgb24gYSB3aWRlIHJhbmdlIG9mIHBsYXRmb3JtcyAoIkMi
IHN0YW5kcyBmb3IgY3Jvc3MtcGxhdGZvcm0uKS4KIElmIHlvdSBkb24ndCBoYXZlIENNYWtlIGlu
c3RhbGxlZCBhbHJlYWR5LCB5b3UgY2FuIGRvd25sb2FkIGl0IGZvciBmcmVlIGZyb20KLTxodHRw
Oi8vd3d3LmNtYWtlLm9yZy8+LgorPGh0dHBzOi8vd3d3LmNtYWtlLm9yZy8+LgogCiBDTWFrZSB3
b3JrcyBieSBnZW5lcmF0aW5nIG5hdGl2ZSBtYWtlZmlsZXMgb3IgYnVpbGQgcHJvamVjdHMgdGhh
dCBjYW4KIGJlIHVzZWQgaW4gdGhlIGNvbXBpbGVyIGVudmlyb25tZW50IG9mIHlvdXIgY2hvaWNl
LgpAQCAtMzcsMjAgKzM3LDEyIEBAIHNlY3Rpb24gb2YgeW91ciBleGVjdXRhYmxlIG9yIG9mIHlv
dXIgbGlicmFyeS48YnI+CiBIZXJlIGlzIGEgc2hvcnQgQ01ha2VMaXN0cy50eHQgZXhhbXBsZSBv
ZiBhIHByb2plY3QgZmlsZSB1c2luZyBBYnNlaWwuCiAKIGBgYGNtYWtlCi1jbWFrZV9taW5pbXVt
X3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQorY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9O
IDMuNSkKIHByb2plY3QobXlfcHJvamVjdCkKIAotc2V0KENNQUtFX0NYWF9GTEFHUyAiLXN0ZD1j
KysxMSAtc3RkbGliPWxpYmMrKyAke0NNQUtFX0NYWF9GTEFHU30iKQotCi1pZihNU1ZDKQotICAj
IC93ZDQwMDUgIG1hY3JvLXJlZGVmaW5pdGlvbgotICAjIC93ZDQwNjggIHVua25vd24gcHJhZ21h
Ci0gICMgL3dkNDI0NCAgY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJwotICAjIC93
ZDQyNjcgIGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAndHlwZTInCi0gICMgL3dkNDgwMCAg
Zm9yY2UgdmFsdWUgdG8gYm9vbCAndHJ1ZScgb3IgJ2ZhbHNlJyAocGVyZm9ybWFuY2Ugd2Fybmlu
ZykKLSAgYWRkX2NvbXBpbGVfb3B0aW9ucygvd2Q0MDA1IC93ZDQwNjggL3dkNDI0NCAvd2Q0MjY3
IC93ZDQ4MDApCi0gIGFkZF9kZWZpbml0aW9ucygvRE5PTUlOTUFYIC9EV0lOMzJfTEVBTl9BTkRf
TUVBTj0xIC9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MpCi1lbmRpZigpCisjIFBpY2sgdGhlIEMr
KyBzdGFuZGFyZCB0byBjb21waWxlIHdpdGguCisjIEFic2VpbCBjdXJyZW50bHkgc3VwcG9ydHMg
QysrMTEsIEMrKzE0LCBhbmQgQysrMTcuCitzZXQoQ01BS0VfQ1hYX1NUQU5EQVJEIDExKQogCiBh
ZGRfc3ViZGlyZWN0b3J5KGFic2VpbC1jcHApCiAKQEAgLTk1LDggKzg3LDggQEAgSGVyZSdzIGEg
bm9uLWV4aGF1c3RpdmUgbGlzdCBvZiBBYnNlaWwgQ01ha2UgcHVibGljIHRhcmdldHM6CiBgYGBj
bWFrZQogYWJzbDo6YmFzZQogYWJzbDo6YWxnb3JpdGhtCi1hYnNsOjpjb250YWluZXIKIGFic2w6
OmRlYnVnZ2luZworYWJzbDo6ZmxhdF9oYXNoX21hcAogYWJzbDo6bWVtb3J5CiBhYnNsOjptZXRh
CiBhYnNsOjpudW1lcmljCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvYWJzbENvbmZpZy5jbWFrZS5pbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9DTWFrZS9hYnNsQ29uZmlnLmNtYWtlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwODQ3ZmE3NzIzZjc3N2Jl
NTY5ZTY1MzM5MzA4MzczODM0NWUzODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvYWJzbENv
bmZpZy5jbWFrZS5pbgpAQCAtMCwwICsxLDcgQEAKKyMgYWJzbCBDTWFrZSBjb25maWd1cmF0aW9u
IGZpbGUuCisKK2luY2x1ZGUoRmluZFRocmVhZHMpCisKK0BQQUNLQUdFX0lOSVRACisKK2luY2x1
ZGUgKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L0BQUk9KRUNUX05BTUVAVGFyZ2V0cy5jbWFr
ZSIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL2luc3Rh
bGxfdGVzdF9wcm9qZWN0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL2luc3RhbGxfdGVzdF9wcm9q
ZWN0L0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Yjc5N2U5ZWRkYzhmMGY0MjJjNDFkNTky
MWYwM2E1NDkwZDFjM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvaW5zdGFsbF90ZXN0X3By
b2plY3QvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSwyNyBAQAorIworIyBDb3B5cmlnaHQgMjAx
OSBUaGUgQWJzZWlsIEF1dGhvcnMuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
KyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisKKyMgQSBzaW1wbGUgQ01ha2VMaXN0cy50eHQgZm9yIHRlc3RpbmcgY21ha2Ug
aW5zdGFsbGF0aW9uCisKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjUpCitwcm9q
ZWN0KGFic2xfY21ha2VfdGVzdGluZyBDWFgpCisKK3NldChDTUFLRV9DWFhfU1RBTkRBUkQgMTEp
CisKK2FkZF9leGVjdXRhYmxlKHNpbXBsZSBzaW1wbGUuY2MpCisKK2ZpbmRfcGFja2FnZShhYnNs
IFJFUVVJUkVEKQorCit0YXJnZXRfbGlua19saWJyYXJpZXMoc2ltcGxlIGFic2w6OnN0cmluZ3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvQ01ha2UvaW5zdGFsbF90ZXN0X3Byb2plY3Qvc2ltcGxlLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NN
YWtlL2luc3RhbGxfdGVzdF9wcm9qZWN0L3NpbXBsZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWUzNTI5MTJi
YWI1YjVmYzdlNzdkYmJiZWYzMzM0MzdhZTY3NWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtl
L2luc3RhbGxfdGVzdF9wcm9qZWN0L3NpbXBsZS5jYwpAQCAtMCwwICsxLDIzIEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSA8aW9zdHJlYW0+
CisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuaCIKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KSB7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgKytpKSB7Cisg
ICAgc3RkOjpjb3V0IDw8IGFic2w6OlN1YnN0aXR1dGUoIkFyZyAkMDogJDFcbiIsIGksIGFyZ3Zb
aV0pOworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvaW5zdGFsbF90ZXN0X3Byb2plY3QvdGVz
dC5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9DTWFrZS9pbnN0YWxsX3Rlc3RfcHJvamVjdC90ZXN0LnNoCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5
OTg5YjAzMWQzNmRkY2NlY2YwZjFkMjI4NzE3NTBhODhjZDE5ZTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvQ01ha2UvaW5zdGFsbF90ZXN0X3Byb2plY3QvdGVzdC5zaApAQCAtMCwwICsxLDE0NCBAQAor
IyEvYmluL2Jhc2gKKyMKKyMgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorIwor
IyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKyMKKyMgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjICJVbml0IiBhbmQg
aW50ZWdyYXRpb24gdGVzdHMgZm9yIEFic2wgQ01ha2UgaW5zdGFsbGF0aW9uCisKKyMgVE9ETyhh
YnNsLXRlYW0pOiBUaGlzIHNjcmlwdCBpc24ndCBmdWxseSBoZXJtZXRpYyBiZWNhdXNlCisjIC1E
QUJTTF9VU0VfR09PR0xFVEVTVF9IRUFEPU9OIG1lYW5zIHRoYXQgdGhpcyBzY3JpcHQgaXNuJ3Qg
cGlubmVkIHRvIGEgZml4ZWQKKyMgdmVyc2lvbiBvZiBHb29nbGVUZXN0LiBUaGlzIG1lYW5zIHRo
YXQgYW4gdXBzdHJlYW0gY2hhbmdlIHRvIEdvb2dsZVRlc3QgY291bGQKKyMgYnJlYWsgdGhpcyB0
ZXN0LiBGaXggdGhpcyBieSBhbGxvd2luZyB0aGlzIHNjcmlwdCB0byBwaW4gdG8gYSBrbm93bi1n
b29kCisjIHZlcnNpb24gb2YgR29vZ2xlVGVzdC4KKworIyBGYWlsIG9uIGFueSBlcnJvci4gVHJl
YXQgdW5zZXQgdmFyaWFibGVzIGFuIGVycm9yLiBQcmludCBjb21tYW5kcyBhcyBleGVjdXRlZC4K
K3NldCAtZXVveCBwaXBlZmFpbAorCitpbnN0YWxsX2Fic2woKSB7CisgIHB1c2hkICIke2Fic2xf
YnVpbGRfZGlyfSIKKyAgaWYgW1sgIiR7I30iIC1lcSAxIF1dOyB0aGVuCisgICAgY21ha2UgLURD
TUFLRV9JTlNUQUxMX1BSRUZJWD0iJHsxfSIgIiR7YWJzbF9kaXJ9IgorICBlbHNlCisgICAgY21h
a2UgIiR7YWJzbF9kaXJ9IgorICBmaQorICBjbWFrZSAtLWJ1aWxkIC4gLS10YXJnZXQgaW5zdGFs
bCAtLSAtagorICBwb3BkCit9CisKK3VuaW5zdGFsbF9hYnNsKCkgeworICB4YXJncyBybSA8ICIk
e2Fic2xfYnVpbGRfZGlyfSIvaW5zdGFsbF9tYW5pZmVzdC50eHQKKyAgcm0gLXJmICIke2Fic2xf
YnVpbGRfZGlyfSIKKyAgbWtkaXIgLXAgIiR7YWJzbF9idWlsZF9kaXJ9IgorfQorCitsdHNfaW5z
dGFsbD0iIgorCit3aGlsZSBnZXRvcHRzICI6bCIgbHRzOyBkbworICBjYXNlICIke2x0c30iIGlu
CisgICAgbCApCisgICAgICBsdHNfaW5zdGFsbD0idHJ1ZSIKKyAgICAgIDs7CisgIGVzYWMKK2Rv
bmUKKworYWJzbF9kaXI9L2Fic2VpbC1jcHAKK2Fic2xfYnVpbGRfZGlyPS9idWlsZGZzL2Fic2wt
YnVpbGQKK3Byb2plY3RfZGlyPSIke2Fic2xfZGlyfSIvQ01ha2UvaW5zdGFsbF90ZXN0X3Byb2pl
Y3QKK3Byb2plY3RfYnVpbGRfZGlyPS9idWlsZGZzL3Byb2plY3QtYnVpbGQKKworbWtkaXIgLXAg
IiR7YWJzbF9idWlsZF9kaXJ9IgorbWtkaXIgLXAgIiR7cHJvamVjdF9idWlsZF9kaXJ9IgorCitp
ZiBbWyAiJHtsdHNfaW5zdGFsbH0iIF1dOyB0aGVuCisgIGluc3RhbGxfZGlyPSIvdXNyL2xvY2Fs
IgorZWxzZQorICBpbnN0YWxsX2Rpcj0iJHtwcm9qZWN0X2J1aWxkX2Rpcn0iL2luc3RhbGwKK2Zp
Citta2RpciAtcCAiJHtpbnN0YWxsX2Rpcn0iCisKKyMgVGVzdCBidWlsZCwgaW5zdGFsbCwgYW5k
IGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgYWJzZWlsCitwdXNoZCAiJHtwcm9qZWN0X2J1aWxkX2Rp
cn0iCitpZiBbWyAiJHtsdHNfaW5zdGFsbH0iIF1dOyB0aGVuCisgIGluc3RhbGxfYWJzbAorICBj
bWFrZSAiJHtwcm9qZWN0X2Rpcn0iCitlbHNlCisgIGluc3RhbGxfYWJzbCAiJHtpbnN0YWxsX2Rp
cn0iCisgIGNtYWtlICIke3Byb2plY3RfZGlyfSIgLURDTUFLRV9QUkVGSVhfUEFUSD0iJHtpbnN0
YWxsX2Rpcn0iCitmaQorCitjbWFrZSAtLWJ1aWxkIC4gLS10YXJnZXQgc2ltcGxlCisKK291dHB1
dD0iJCgke3Byb2plY3RfYnVpbGRfZGlyfS9zaW1wbGUgInByaW50bWUiIDI+JjEpIgoraWYgW1sg
IiR7b3V0cHV0fSIgIT0gKiJBcmcgMTogcHJpbnRtZSIqIF1dOyB0aGVuCisgIGVjaG8gIkZhdWx0
eSBvdXRwdXQgb24gc2ltcGxlIHByb2plY3Q6IgorICBlY2hvICIke291dHB1dH0iCisgIGV4aXQg
MQorZmkKKworcG9wZAorCisjIFRlc3QgdGhhdCB3ZSBoYXZlbid0IGFjY2lkZW50YWxseSBtYWRl
IGFic2w6OmFic2xibGFoCitwdXNoZCAiJHtpbnN0YWxsX2Rpcn0iCisKKyMgU3RhcnRpbmcgaW4g
Q01ha2UgMy4xMiB0aGUgZGVmYXVsdCBpbnN0YWxsIGRpciBpcyBsaWIkYml0X3dpZHRoCitpZiBb
WyAtZCBsaWI2NCBdXTsgdGhlbgorICBsaWJkaXI9ImxpYjY0IgorZWxpZiBbWyAtZCBsaWIgXV07
IHRoZW4KKyAgbGliZGlyPSJsaWIiCitlbHNlCisgIGVjaG8gImxzICosICovKiwgKi8qLyo6Igor
ICBscyAqCisgIGxzICovKgorICBscyAqLyovKgorICBlY2hvICJ1bmtub3duIGxpYiBkaXIiCitm
aQorCitpZiBbWyAiJHtsdHNfaW5zdGFsbH0iIF1dOyB0aGVuCisgICMgTFRTIHZlcnNpb25zIGFw
cGVuZCB0aGUgZGF0ZSBvZiB0aGUgcmVsZWFzZSB0byB0aGUgc3ViZGlyLgorICAjIDk5OTkvOTkv
OTkgaXMgdGhlIGR1bW15IGRhdGUgdXNlZCBpbiB0aGUgbG9jYWxfbHRzIHdvcmtmbG93LgorICBh
YnNsX3N1YmRpcj0iYWJzbF85OTk5OTk5OSIKK2Vsc2UKKyAgYWJzbF9zdWJkaXI9ImFic2wiCitm
aQorCitpZiAhIGdyZXAgYWJzbDo6c3RyaW5ncyAiJHtsaWJkaXJ9L2NtYWtlLyR7YWJzbF9zdWJk
aXJ9L2Fic2xUYXJnZXRzLmNtYWtlIjsgdGhlbgorICBjYXQgIiR7bGliZGlyfSIvY21ha2UvYWJz
bC9hYnNsVGFyZ2V0cy5jbWFrZQorICBlY2hvICJDTWFrZSB0YXJnZXRzIG5hbWVkIGluY29ycmVj
dGx5IgorICBleGl0IDEKK2ZpCisKK3VuaW5zdGFsbF9hYnNsCitwb3BkCisKK2lmIFtbICEgIiR7
bHRzX2luc3RhbGx9IiBdXTsgdGhlbgorICAjIFRlc3QgdGhhdCB3ZSB3YXJuIGlmIGluc3RhbGxl
ZCB3aXRob3V0IGEgcHJlZml4IG9yIGEgc3lzdGVtIHByZWZpeAorICBvdXRwdXQ9IiQoaW5zdGFs
bF9hYnNsIDI+JjEpIgorICBpZiBbWyAiJHtvdXRwdXR9IiAhPSAqIlBsZWFzZSBzZXQgQ01BS0Vf
SU5TVEFMTF9QUkVGSVgiKiBdXTsgdGhlbgorICAgIGVjaG8gIkluc3RhbGwgd2l0aG91dCBwcmVm
aXggZGlkbid0IHdhcm4gYXMgZXhwZWN0ZWQuIE91dHB1dDoiCisgICAgZWNobyAiJHtvdXRwdXR9
IgorICAgIGV4aXQgMQorICBmaQorICB1bmluc3RhbGxfYWJzbAorCisgIG91dHB1dD0iJChpbnN0
YWxsX2Fic2wgL3VzciAyPiYxKSIKKyAgaWYgW1sgIiR7b3V0cHV0fSIgIT0gKiJQbGVhc2Ugc2V0
IENNQUtFX0lOU1RBTExfUFJFRklYIiogXV07IHRoZW4KKyAgICBlY2hvICJJbnN0YWxsIHdpdGgg
L3VzciBkaWRuJ3Qgd2FybiBhcyBleHBlY3RlZC4gT3V0cHV0OiIKKyAgICBlY2hvICIke291dHB1
dH0iCisgICAgZXhpdCAxCisgIGZpCisgIHVuaW5zdGFsbF9hYnNsCitmaQorCitlY2hvICJJbnN0
YWxsIHRlc3QgY29tcGxldGUhIgorZXhpdCAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvQ01ha2VMaXN0cy50eHQKaW5kZXggOWE3ZTEwMzFiMjM1MTEwNGUzZWM4MzIxMTRhOGQ2Yjc1
ZDU1MDRjMS4uODZmNTYzNDRlNzRlYTdjMmZlMGVkZDBhNDdhZGZjZTJiOWJkYTI5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcg
QEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
ICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMg
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDMwICsxNCw0MCBAQAogIyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KICMKIAotIyBXZSByZXF1aXJlIDMuMCBmb3IgbW9kZXJuLCB0YXJn
ZXQtYmFzZWQgQ01ha2UuICBXZSByZXF1aXJlIDMuMSBmb3IgdGhlIHVzZSBvZgotIyBDWFhfU1RB
TkRBUkQgaW4gb3VyIHRhcmdldHMuCi1jbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy4x
KQotcHJvamVjdChhYnNsKQorIyBNb3N0IHdpZGVseSB1c2VkIGRpc3RyaWJ1dGlvbnMgaGF2ZSBj
bWFrZSAzLjUgb3IgZ3JlYXRlciBhdmFpbGFibGUgYXMgb2YgTWFyY2gKKyMgMjAxOS4gIEEgbm90
YWJsZSBleGNlcHRpb24gaXMgUkhFTC03IChDZW50T1M3KS4gIFlvdSBjYW4gaW5zdGFsbCBhIGN1
cnJlbnQKKyMgdmVyc2lvbiBvZiBDTWFrZSBieSBmaXJzdCBpbnN0YWxsaW5nIEV4dHJhIFBhY2th
Z2VzIGZvciBFbnRlcnByaXNlIExpbnV4CisjIChodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dp
a2kvRVBFTCNFeHRyYV9QYWNrYWdlc19mb3JfRW50ZXJwcmlzZV9MaW51eF8uMjhFUEVMLjI5KQor
IyBhbmQgdGhlbiBpc3N1aW5nIGB5dW0gaW5zdGFsbCBjbWFrZTNgIG9uIHRoZSBjb21tYW5kIGxp
bmUuCitjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy41KQogCi1saXN0KEFQUEVORCBD
TUFLRV9NT0RVTEVfUEFUSCAke1BST0pFQ1RfU09VUkNFX0RJUn0vQ01ha2UpCisjIENvbXBpbGVy
IGlkIGZvciBBcHBsZSBDbGFuZyBpcyBub3cgQXBwbGVDbGFuZy4KK2NtYWtlX3BvbGljeShTRVQg
Q01QMDAyNSBORVcpCiAKLWluY2x1ZGUoR05VSW5zdGFsbERpcnMpCi1pbmNsdWRlKEFic2VpbEhl
bHBlcnMpCisjIGlmIGNvbW1hbmQgY2FuIHVzZSBJTl9MSVNUCitjbWFrZV9wb2xpY3koU0VUIENN
UDAwNTcgTkVXKQorCisjIFByb2plY3QgdmVyc2lvbiB2YXJpYWJsZXMgYXJlIHRoZSBlbXB0eSBz
dGQ6OnN0cmluZyBpZiB2ZXJzaW9uIGlzIHVuc3BlY2lmaWVkCitjbWFrZV9wb2xpY3koU0VUIENN
UDAwNDggTkVXKQogCitwcm9qZWN0KGFic2wgQ1hYKQogCi0jIGNvbmZpZyBvcHRpb25zCi1pZiAo
TVNWQykKLSAgIyAvd2Q0MDA1ICBtYWNyby1yZWRlZmluaXRpb24KLSAgIyAvd2Q0MDY4ICB1bmtu
b3duIHByYWdtYQotICAjIC93ZDQyNDQgIGNvbnZlcnNpb24gZnJvbSAndHlwZTEnIHRvICd0eXBl
MicKLSAgIyAvd2Q0MjY3ICBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUyJwotICAj
IC93ZDQ4MDAgIGZvcmNlIHZhbHVlIHRvIGJvb2wgJ3RydWUnIG9yICdmYWxzZScgKHBlcmZvcm1h
bmNlIHdhcm5pbmcpCi0gIGFkZF9jb21waWxlX29wdGlvbnMoL1czIC93ZDQwMDUgL3dkNDA2OCAv
d2Q0MjQ0IC93ZDQyNjcgL3dkNDgwMCkKLSAgYWRkX2RlZmluaXRpb25zKC9ETk9NSU5NQVggL0RX
SU4zMl9MRUFOX0FORF9NRUFOPTEgL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRF9TQ0xfU0VD
VVJFX05PX1dBUk5JTkdTKQorIyB3aGVuIGFic2wgaXMgaW5jbHVkZWQgYXMgc3VicHJvamVjdCAo
aS5lLiB1c2luZyBhZGRfc3ViZGlyZWN0b3J5KGFic2VpbC1jcHApKQorIyBpbiB0aGUgc291cmNl
IHRyZWUgb2YgYSBwcm9qZWN0IHRoYXQgdXNlcyBpdCwgaW5zdGFsbCBydWxlcyBhcmUgZGlzYWJs
ZWQuCitpZihOT1QgIl4ke0NNQUtFX1NPVVJDRV9ESVJ9JCIgU1RSRVFVQUwgIl4ke1BST0pFQ1Rf
U09VUkNFX0RJUn0kIikKKyAgc2V0KEFCU0xfRU5BQkxFX0lOU1RBTEwgRkFMU0UpCiBlbHNlKCkK
LSAgc2V0KEFCU0xfU1REX0NYWF9GTEFHICItc3RkPWMrKzExIiBDQUNIRSBTVFJJTkcgImMrKyBz
dGQgZmxhZyAoZGVmYXVsdDogYysrMTEpIikKKyAgc2V0KEFCU0xfRU5BQkxFX0lOU1RBTEwgVFJV
RSkKIGVuZGlmKCkKIAorbGlzdChBUFBFTkQgQ01BS0VfTU9EVUxFX1BBVEgKKyAgJHtDTUFLRV9D
VVJSRU5UX0xJU1RfRElSfS9DTWFrZQorICAke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L2Fic2wv
Y29wdHMKKykKKworaW5jbHVkZShBYnNlaWxJbnN0YWxsRGlycykKK2luY2x1ZGUoQ01ha2VQYWNr
YWdlQ29uZmlnSGVscGVycykKK2luY2x1ZGUoQWJzZWlsSGVscGVycykKIAogCiAjIwpAQCAtNTQs
MTEgKzY0LDExIEBAIGVuZGlmKCkKICMgaW5jbHVkZSBjdXJyZW50IHBhdGgKIGxpc3QoQVBQRU5E
IEFCU0xfQ09NTU9OX0lOQ0xVREVfRElSUyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0pCiAK
LSMgLXN0ZD1YCi1zZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0FCU0xfU1REX0NYWF9GTEFHfSAke0NN
QUtFX0NYWF9GTEFHU30iKQotCi0jIC1mZXhjZXB0aW9ucwotc2V0KEFCU0xfRVhDRVBUSU9OU19G
TEFHICIke0NNQUtFX0NYWF9FWENFUFRJT05TfSIpCitpZigiJHtDTUFLRV9DWFhfQ09NUElMRVJf
SUR9IiBNQVRDSEVTICJDbGFuZyIpCisgIHNldChBQlNMX1VTSU5HX0NMQU5HIE9OKQorZWxzZSgp
CisgIHNldChBQlNMX1VTSU5HX0NMQU5HIE9GRikKK2VuZGlmKCkKIAogIyBmaW5kIGRlcGVuZGVu
Y2llcwogIyMgcHRocmVhZApAQCAtODAsNyArOTAsOSBAQCBlbmRpZigpCiBpZihCVUlMRF9URVNU
SU5HKQogCiAgIGlmKCR7QUJTTF9VU0VfR09PR0xFVEVTVF9IRUFEfSkKLSAgICBpbmNsdWRlKENN
YWtlL0Rvd25sb2FkR1Rlc3QuY21ha2UpCisgICAgaW5jbHVkZShDTWFrZS9Hb29nbGV0ZXN0L0Rv
d25sb2FkR1Rlc3QuY21ha2UpCisgICAgc2V0KGFic2xfZ3Rlc3Rfc3JjX2RpciAke0NNQUtFX0JJ
TkFSWV9ESVJ9L2dvb2dsZXRlc3Qtc3JjKQorICAgIHNldChhYnNsX2d0ZXN0X2J1aWxkX2RpciAk
e0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQpCiAgIGVuZGlmKCkKIAogICBjaGVj
a190YXJnZXQoZ3Rlc3QpCkBAIC05NiwzICsxMDgsNTMgQEAgaWYoQlVJTERfVEVTVElORykKIGVu
ZGlmKCkKIAogYWRkX3N1YmRpcmVjdG9yeShhYnNsKQorCitpZihBQlNMX0VOQUJMRV9JTlNUQUxM
KQorICAjIGFic2w6bHRzLXJlbW92ZS1iZWdpbihzeXN0ZW0gaW5zdGFsbGF0aW9uIGlzIHN1cHBv
cnRlZCBmb3IgTFRTIHJlbGVhc2VzKQorICAjIFdlIGRvbid0IHN1cHBvcnQgc3lzdGVtLXdpZGUg
aW5zdGFsbGF0aW9uCisgIGxpc3QoQVBQRU5EIFNZU1RFTV9JTlNUQUxMX0RJUlMgIi91c3IvbG9j
YWwiICIvdXNyIiAiL29wdC8iICIvb3B0L2xvY2FsIiAiYzovUHJvZ3JhbSBGaWxlcy8ke1BST0pF
Q1RfTkFNRX0iKQorICBpZihOT1QgREVGSU5FRCBDTUFLRV9JTlNUQUxMX1BSRUZJWCBPUiBDTUFL
RV9JTlNUQUxMX1BSRUZJWCBJTl9MSVNUIFNZU1RFTV9JTlNUQUxMX0RJUlMpCisgICAgbWVzc2Fn
ZShXQVJOSU5HICJcCisgIFRoZSBkZWZhdWx0IGFuZCBzeXN0ZW0tbGV2ZWwgaW5zdGFsbCBkaXJl
Y3RvcmllcyBhcmUgdW5zdXBwb3J0ZWQgZXhjZXB0IGluIExUUyBcCisgIHJlbGVhc2VzIG9mIEFi
c2VpbC4gIFBsZWFzZSBzZXQgQ01BS0VfSU5TVEFMTF9QUkVGSVggdG8gaW5zdGFsbCBBYnNlaWwg
aW4geW91ciBcCisgIHNvdXJjZSBvciBidWlsZCB0cmVlIGRpcmVjdGx5LlwKKyAgICAiKQorICBl
bmRpZigpCisgICMgYWJzbDpsdHMtcmVtb3ZlLWVuZAorCisgICMgaW5zdGFsbCBhcyBhIHN1YmRp
cmVjdG9yeSBvbmx5CisgIGluc3RhbGwoRVhQT1JUICR7UFJPSkVDVF9OQU1FfVRhcmdldHMKKyAg
ICBOQU1FU1BBQ0UgYWJzbDo6CisgICAgREVTVElOQVRJT04gIiR7QUJTTF9JTlNUQUxMX0NPTkZJ
R0RJUn0iCisgICkKKworICBjb25maWd1cmVfcGFja2FnZV9jb25maWdfZmlsZSgKKyAgICBDTWFr
ZS9hYnNsQ29uZmlnLmNtYWtlLmluCisgICAgIiR7UFJPSkVDVF9CSU5BUllfRElSfS8ke1BST0pF
Q1RfTkFNRX1Db25maWcuY21ha2UiCisgICAgSU5TVEFMTF9ERVNUSU5BVElPTiAiJHtBQlNMX0lO
U1RBTExfQ09ORklHRElSfSIKKyAgKQorICBpbnN0YWxsKEZJTEVTICIke1BST0pFQ1RfQklOQVJZ
X0RJUn0vJHtQUk9KRUNUX05BTUV9Q29uZmlnLmNtYWtlIgorICAgIERFU1RJTkFUSU9OICIke0FC
U0xfSU5TVEFMTF9DT05GSUdESVJ9IgorICApCisKKyAgIyBBYnNlaWwgb25seSBoYXMgYSB2ZXJz
aW9uIGluIExUUyByZWxlYXNlcy4gIFRoaXMgbWVjaGFuaXNtIGlzIGFjY29tcGxpc2hlZAorICAj
IEFic2VpbCdzIGludGVybmFsIENvcHliYXJhIChodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nv
cHliYXJhKSB3b3JrZmxvd3MgYW5kCisgICMgaXNuJ3QgdmlzaWJsZSBpbiB0aGUgQ01ha2UgYnVp
bGRzeXN0ZW0gaXRzZWxmLgorICBpZihhYnNsX1ZFUlNJT04pCisgICAgd3JpdGVfYmFzaWNfcGFj
a2FnZV92ZXJzaW9uX2ZpbGUoCisgICAgICAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9LyR7UFJPSkVD
VF9OQU1FfUNvbmZpZ1ZlcnNpb24uY21ha2UiCisgICAgICBDT01QQVRJQklMSVRZIEV4YWN0VmVy
c2lvbgorICAgICkKKworICAgIGluc3RhbGwoRklMRVMgIiR7UFJPSkVDVF9CSU5BUllfRElSfS8k
e1BST0pFQ1RfTkFNRX1Db25maWdWZXJzaW9uLmNtYWtlIgorICAgICAgREVTVElOQVRJT04gJHtB
QlNMX0lOU1RBTExfQ09ORklHRElSfQorICAgICkKKyAgZW5kaWYoKSAgIyBhYnNsX1ZFUlNJT04K
KworICBpbnN0YWxsKERJUkVDVE9SWSBhYnNsCisgICAgREVTVElOQVRJT04gJHtBQlNMX0lOU1RB
TExfSU5DTFVERURJUn0KKyAgICBGSUxFU19NQVRDSElORworICAgICAgUEFUVEVSTiAiKi5pbmMi
CisgICAgICBQQVRURVJOICIqLmgiCisgICkKK2VuZGlmKCkgICMgQUJTTF9FTkFCTEVfSU5TVEFM
TApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL0NPTlRSSUJVVElORy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DT05UUklCVVRJTkcubWQKaW5kZXgg
NDAzNTFkZGNmYWExNGUwZWQyNTMwMzExMDBhMDRmOWQzMzIzZGY2MS4uZjRjYjRhMjllZDA3ZDQy
YzY4ZDc3NDJmMGJiZTFhMDdkYWM3ZmYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NPTlRSSUJVVElORy5tZAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvQ09OVFJJQlVUSU5HLm1kCkBAIC0xOCw2ICsxOCw1MyBAQCBZb3UgZ2VuZXJhbGx5IG9u
bHkgbmVlZCB0byBzdWJtaXQgYSBDTEEgb25jZSwgc28gaWYgeW91J3ZlIGFscmVhZHkgc3VibWl0
dGVkIG9uZQogKGV2ZW4gaWYgaXQgd2FzIGZvciBhIGRpZmZlcmVudCBwcm9qZWN0KSwgeW91IHBy
b2JhYmx5IGRvbid0IG5lZWQgdG8gZG8gaXQKIGFnYWluLgogCisjIyBDb250cmlidXRpb24gR3Vp
ZGVsaW5lcworCitQb3RlbnRpYWwgY29udHJpYnV0b3JzIHNvbWV0aW1lcyBhc2sgdXMgaWYgdGhl
IEFic2VpbCBwcm9qZWN0IGlzIHRoZSBhcHByb3ByaWF0ZQoraG9tZSBmb3IgdGhlaXIgdXRpbGl0
eSBsaWJyYXJ5IGNvZGUgb3IgZm9yIHNwZWNpZmljIGZ1bmN0aW9ucyBpbXBsZW1lbnRpbmcKK21p
c3NpbmcgcG9ydGlvbnMgb2YgdGhlIHN0YW5kYXJkLiBPZnRlbiwgdGhlIGFuc3dlciB0byB0aGlz
IHF1ZXN0aW9uIGlzICJubyIuCitXZeKAmWQgbGlrZSB0byBhcnRpY3VsYXRlIG91ciB0aGlua2lu
ZyBvbiB0aGlzIGlzc3VlIHNvIHRoYXQgb3VyIGNob2ljZXMgY2FuIGJlCit1bmRlcnN0b29kIGJ5
IGV2ZXJ5b25lIGFuZCBzbyB0aGF0IGNvbnRyaWJ1dG9ycyBjYW4gaGF2ZSBhIGJldHRlciBpbnR1
aXRpb24KK2Fib3V0IHdoZXRoZXIgQWJzZWlsIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4gYWRvcHRp
bmcgYSBuZXcgbGlicmFyeS4KKworIyMjIFByaW9yaXRpZXMKKworQWx0aG91Z2ggb3VyIG1pc3Np
b24gaXMgdG8gYXVnbWVudCB0aGUgQysrIHN0YW5kYXJkIGxpYnJhcnksIG91ciBnb2FsIGlzIG5v
dCB0bworcHJvdmlkZSBhIGZ1bGwgZm9yd2FyZC1jb21wYXRpYmxlIGltcGxlbWVudGF0aW9uIG9m
IHRoZSBsYXRlc3Qgc3RhbmRhcmQuIEZvciB1cwordG8gY29uc2lkZXIgYSBsaWJyYXJ5IGZvciBp
bmNsdXNpb24gaW4gQWJzZWlsLCBpdCBpcyBub3QgZW5vdWdoIHRoYXQgYSBsaWJyYXJ5CitpcyB1
c2VmdWwuIFdlIGdlbmVyYWxseSBjaG9vc2UgdG8gcmVsZWFzZSBhIGxpYnJhcnkgd2hlbiBpdCBt
ZWV0cyBhdCBsZWFzdCBvbmUKK29mIHRoZSBmb2xsb3dpbmcgY3JpdGVyaWE6CisKKyogICAqKldp
ZGVzcHJlYWQgdXNhZ2UqKiAtIFVzaW5nIG91ciBpbnRlcm5hbCBjb2RlYmFzZSB0byBoZWxwIGdh
dWdlIHVzYWdlLCBtb3N0CisgICAgb2YgdGhlIGxpYnJhcmllcyB3ZSd2ZSByZWxlYXNlZCBoYXZl
IHRlbnMgb2YgdGhvdXNhbmRzIG9mIHVzZXJzLgorKiAgICoqQW50aWNpcGF0ZWQgd2lkZXNwcmVh
ZCB1c2FnZSoqIC0gUHJlLWFkb3B0aW9uIG9mIHNvbWUgc3RhbmRhcmQtY29tcGxpYW50CisgICAg
QVBJcyBtYXkgbm90IGhhdmUgYnJvYWQgYWRvcHRpb24gaW5pdGlhbGx5IGJ1dCBjYW4gYmUgZXhw
ZWN0ZWQgdG8gcGljayB1cAorICAgIHVzYWdlIHdoZW4gaXQgcmVwbGFjZXMgbGVnYWN5IEFQSXMu
IGBhYnNsOjpmcm9tX2NoYXJzYCwgZm9yIGV4YW1wbGUsCisgICAgcmVwbGFjZXMgZXhpc3Rpbmcg
Y29kZSB0aGF0IGNvbnZlcnRzIHN0cmluZ3MgdG8gbnVtYmVycyBhbmQgd2lsbCB0aGVyZWZvcmUK
KyAgICBsaWtlbHkgc2VlIHVzYWdlIGdyb3d0aC4KKyogICAqKkhpZ2ggaW1wYWN0KiogLSBBUElz
IHRoYXQgcHJvdmlkZSBhIGtleSBzb2x1dGlvbiB0byBhIHNwZWNpZmljIHByb2JsZW0sCisgICAg
c3VjaCBhcyBgYWJzbDo6Rml4ZWRBcnJheWAsIGhhdmUgaGlnaGVyIGltcGFjdCB0aGFuIHVzYWdl
IG51bWJlcnMgbWF5IHNpZ25hbAorICAgIGFuZCBhcmUgcmVsZWFzZWQgYmVjYXVzZSBvZiB0aGVp
ciBpbXBvcnRhbmNlLgorKiAgICoqRGlyZWN0IHN1cHBvcnQgZm9yIGEgbGlicmFyeSB0aGF0IGZh
bGxzIHVuZGVyIG9uZSBvZiB0aGUgYWJvdmUqKiAtIFdoZW4gd2UKKyAgICB3YW50IGFjY2VzcyB0
byBhIHNtYWxsZXIgbGlicmFyeSBhcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgZm9yIGEKKyAg
ICBoaWdoZXItcHJpb3JpdHkgbGlicmFyeSB3ZSBwbGFuIHRvIHJlbGVhc2UsIHdlIG1heSByZWxl
YXNlIGl0LCBhcyB3ZSBkaWQKKyAgICB3aXRoIHBvcnRpb25zIG9mIGBhYnNsL21ldGEvdHlwZV90
cmFpdHMuaGAuIE9uZSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQKKyAgICB0aGUgcHJlc2Vu
Y2Ugb2YgYSBsaWJyYXJ5IGluIEFic2VpbCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQg
b3RoZXIKKyAgICBzaW1pbGFyIGxpYnJhcmllcyB3b3VsZCBiZSBhIGhpZ2ggcHJpb3JpdHkuCisK
KyMjIyBBUEkgRnJlZXplIENvbnNlcXVlbmNlcworCitWaWEgdGhlCitbQWJzZWlsIENvbXBhdGli
aWxpdHkgR3VpZGVsaW5lc10oaHR0cHM6Ly9hYnNlaWwuaW8vYWJvdXQvY29tcGF0aWJpbGl0eSks
IHdlCitoYXZlIHByb21pc2VkIGEgbGFyZ2UgZGVncmVlIG9mIEFQSSBzdGFiaWxpdHkuIEluIHBh
cnRpY3VsYXIsIHdlIHdpbGwgbm90IG1ha2UKK2JhY2t3YXJkLWluY29tcGF0aWJsZSBjaGFuZ2Vz
IHRvIHJlbGVhc2VkIEFQSXMgd2l0aG91dCBhbHNvIHNoaXBwaW5nIGEgdG9vbCBvcgorcHJvY2Vz
cyB0aGF0IGNhbiB1cGdyYWRlIG91ciB1c2VycycgY29kZS4gV2UgYXJlIG5vdCB5ZXQgYXQgdGhl
IHBvaW50IG9mIGVhc2lseQorcmVsZWFzaW5nIHN1Y2ggdG9vbHMuIFRoZXJlZm9yZSwgYXQgdGhp
cyB0aW1lLCBzaGlwcGluZyBhIGxpYnJhcnkgZXN0YWJsaXNoZXMgYW4KK0FQSSBjb250cmFjdCB3
aGljaCBpcyBib3JkZXJsaW5lIHVuY2hhbmdlYWJsZS4gKFdlIGNhbiBhZGQgbmV3IGZ1bmN0aW9u
YWxpdHksCitidXQgd2UgY2Fubm90IGVhc2lseSBjaGFuZ2UgZXhpc3RpbmcgYmVoYXZpb3IuKSBU
aGlzIGNvbnN0cmFpbnQgZm9yY2VzIHVzIHRvCit2ZXJ5IGNhcmVmdWxseSByZXZpZXcgYWxsIEFQ
SXMgdGhhdCB3ZSBzaGlwLgorCisKICMjIENvZGluZyBTdHlsZQogCiBUbyBrZWVwIHRoZSBzb3Vy
Y2UgY29uc2lzdGVudCwgcmVhZGFibGUsIGRpZmZhYmxlIGFuZCBlYXN5IHRvIG1lcmdlLCB3ZSB1
c2UgYQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvTElDRU5TRQppbmRleCBmZWY3ZDk2NzgxNWI1
MDhkMmJlNWJmZTNkZWQ2YjYyYWQzMDJlOTBjLi5jY2Q2MWRjZmUzZGJjZGY3N2E3Mjc5NGQ3Nzk0
YjFlMTEyYTM5ZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvTElDRU5TRQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvTElDRU5TRQpAQCAtMSw3
ICsxLDcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vu
c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQK
LSAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8K
KyAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
CiAKICAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBVU0UsIFJFUFJPRFVDVElPTiwgQU5EIERJ
U1RSSUJVVElPTgogCkBAIC0xOTMsMTIgKzE5MywxMSBAQAogICAgeW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAKLSAgICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAg
ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgotICAgCi0gICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9MVFMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvTFRTLm1kCmluZGV4IDM4NWI0ZjA2MmJmMzE1YjQxODRhN2EwZGIw
OThmMzQ0MWU3MDEzYmYuLjA4NjA2ZjE1N2U5OTEwZjI5MzcxN2YyNmIwMDFkZjA2NGNhOGNlZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9MVFMubWQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0xUUy5tZApAQCAtMTAsNCArMTAsNSBAQCB0dXJu
LCB1c2UgQWJzZWlsLiAoRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgb3VyIHJlbGVhc2VzLCBz
ZWUgdGhlCiAKIFRoZSBmb2xsb3dpbmcgbGlzdHMgTFRTIGJyYW5jaGVzIGFuZCB0aGUgZGF0ZXMg
b24gd2hpY2ggdGhleSBoYXZlIGJlZW4gcmVsZWFzZWQ6CiAKKyogW0xUUyBCcmFuY2ggRGVjZW1i
ZXIgMTgsIDIwMThdKGh0dHBzOi8vZ2l0aHViLmNvbS9hYnNlaWwvYWJzZWlsLWNwcC90cmVlL2x0
c18yMDE4XzEyXzE4LykKICogW0xUUyBCcmFuY2ggSnVuZSAyMCwgMjAxOF0oaHR0cHM6Ly9naXRo
dWIuY29tL2Fic2VpbC9hYnNlaWwtY3BwL3RyZWUvbHRzXzIwMThfMDZfMjAvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL1JFQURNRS5jaHJvbWl1bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9SRUFETUUuY2hyb21pdW0KaW5kZXggNjAyNmEyZjRlMjA2
MTNlZGI1M2UxNjhiZmI0MzhmMjBmZTRjMWZkOS4uNWQ3YWNiYTQ4YzA5MzYzYjUxMGEwNGFkMGM3
MzdhYjFiOWY0NTI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1JFQURNRS5jaHJvbWl1bQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvUkVBRE1F
LmNocm9taXVtCkBAIC00LDcgKzQsNyBAQCBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYnNlaWwv
YWJzZWlsLWNwcAogTGljZW5zZTogQXBhY2hlIDIuMAogTGljZW5zZSBGaWxlOiBMSUNFTlNFCiBW
ZXJzaW9uOiAwCi1SZXZpc2lvbjogZmI0NjIyMjRjMDU4NDg3NzYzZjI2M2I3OTk1ZDcwZWZkMDI0
MmMxNworUmV2aXNpb246IDRlZjU3NDA2NGU3NWI4NmYxMTU1NDllOWViNGM3ZTgwNjc4MWIzYWIK
IFNlY3VyaXR5IENyaXRpY2FsOiB5ZXMKIAogRGVzY3JpcHRpb246CkBAIC0xOCw5ICsxOCwxMCBA
QCBIb3cgdG8gdXBkYXRlIEFic2VpbDoKIAogMi4gQ29weSB0aGUgY29udGVudCBvZiB0aGUgQWJz
ZWlsIGdpdCByZXBvIHRvIC8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC4KIAotMy4gRnJvbSAvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvIGxhdW5jaCAuL3JlbmFtZV9keW5hbWljX2Fubm90YXRpb25z
LnNoLgotICAgVGhpcyBzY3JpcHQgd2lsbCByZXdyaXRlIGR5bmFtaWNfYW5ub3RhdGlvbnMgbWFj
cm9zIGFuZCBmdW5jdGlvbiBpbnNpZGUKLSAgIEFic2VpbCBpbiBvcmRlciB0byBhdm9pZCBPRFIg
dmlvbGF0aW9ucyBhbmQgbWFjcm8gY2xhc2hpbmcgd2l0aCBDaHJvbWl1bQorMy4gRnJvbSAvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvIGxhdW5jaCAuL3JlbmFtZV9hbm5vdGF0aW9ucy5zaC4KKyAg
IFRoaXMgc2NyaXB0IHdpbGwgcmV3cml0ZSBkeW5hbWljX2Fubm90YXRpb25zIGFuZCB0aHJlYWRf
YW5ub3RhdGlvbnMKKyAgIG1hY3JvcyBhbmQgZnVuY3Rpb24gaW5zaWRlIEFic2VpbCBpbiBvcmRl
ciB0byBhdm9pZCBPRFIgdmlvbGF0aW9ucworICAgYW5kIG1hY3JvIGNsYXNoaW5nIHdpdGggQ2hy
b21pdW0KICAgIChzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYnNlaWwvYWJzZWlsLWNwcC9pc3N1
ZXMvMTIyKS4KIAogTG9jYWwgTW9kaWZpY2F0aW9uczoKQEAgLTMwLDUgKzMxLDYgQEAgTG9jYWwg
TW9kaWZpY2F0aW9uczoKIAogKiBBbGwgdGhlIEJVSUxELmJhemVsIGZpbGVzIGhhcyBiZWVuIHRy
YW5zbGF0ZWQgdG8gQlVJTEQuZ24gZmlsZXMuCiAKLSogRnVuY3Rpb25zIGFuZCBtYWNyb3MgaW4g
YWJzbC9iYXNlL2R5bmFtaWNfYW5ub3RhdGlvbnMue2gsY2N9IGhhdmUgYmVlbiByZW5hbWVkCi0g
IHRvIGF2b2lkIE9EUiB2aW9sYXRpb25zIChzZWUgc3RlcCAzKS4KKyogRnVuY3Rpb25zIGFuZCBt
YWNyb3MgaW4gYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3RhdGlvbnMue2gsY2N9IGFuZAorICBhYnNs
L2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmggaGF2ZSBiZWVuIHJlbmFtZWQgdG8gYXZvaWQgT0RS
CisgIHZpb2xhdGlvbnMgYW5kIG1hY3JvIGNsYXNoZXMgd2l0aCBDaHJvbWl1bSAoc2VlIHN0ZXAg
MykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvUkVBRE1FLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1JFQURNRS5tZAppbmRleCA4ZWVkNTc1MWJm
NTQwMDM2ODE5NTZjZDdhNGY1YjEwN2IxNWVhZmQxLi44NWRlNTY5NjU4YzY1YjM5ZTVkY2Q5NGE3
YmY4MTM3ODQ5ODc0Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvUkVBRE1FLm1kCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9SRUFETUUubWQK
QEAgLTQyLDggKzQyLDggQEAgdGhlIEFic2VpbCBjb2RlLCBydW5uaW5nIHRlc3RzLCBhbmQgZ2V0
dGluZyBhIHNpbXBsZSBiaW5hcnkgd29ya2luZy4KIDxhIG5hbWU9ImJ1aWxkIj48L2E+CiAjIyBC
dWlsZGluZyBBYnNlaWwKIAotW0JhemVsXShodHRwOi8vYmF6ZWwuYnVpbGQpIGlzIHRoZSBvZmZp
Y2lhbCBidWlsZCBzeXN0ZW0gZm9yIEFic2VpbCwKLXdoaWNoIGlzIHN1cHBvcnRlZCBvbiBtb3N0
IG1ham9yIHBsYXRmb3JtcyAoTGludXgsIFdpbmRvd3MsIE1hY09TLCBmb3IgZXhhbXBsZSkKK1tC
YXplbF0oaHR0cHM6Ly9iYXplbC5idWlsZCkgaXMgdGhlIG9mZmljaWFsIGJ1aWxkIHN5c3RlbSBm
b3IgQWJzZWlsLAord2hpY2ggaXMgc3VwcG9ydGVkIG9uIG1vc3QgbWFqb3IgcGxhdGZvcm1zIChM
aW51eCwgV2luZG93cywgbWFjT1MsIGZvciBleGFtcGxlKQogYW5kIGNvbXBpbGVycy4gU2VlIHRo
ZSBbcXVpY2tzdGFydF0oaHR0cHM6Ly9hYnNlaWwuaW8vZG9jcy9jcHAvcXVpY2tzdGFydCkgZm9y
CiBtb3JlIGluZm9ybWF0aW9uIG9uIGJ1aWxkaW5nIEFic2VpbCB1c2luZyB0aGUgQmF6ZWwgYnVp
bGQgc3lzdGVtLgogCkBAIC02MywxMCArNjMsMTQgQEAgQWJzZWlsIGNvbnRhaW5zIHRoZSBmb2xs
b3dpbmcgQysrIGxpYnJhcnkgY29tcG9uZW50czoKICAgPGJyIC8+IFRoZSBgYWxnb3JpdGhtYCBs
aWJyYXJ5IGNvbnRhaW5zIGFkZGl0aW9ucyB0byB0aGUgQysrIGA8YWxnb3JpdGhtPmAKICAgbGli
cmFyeSBhbmQgY29udGFpbmVyLWJhc2VkIHZlcnNpb25zIG9mIHN1Y2ggYWxnb3JpdGhtcy4KICog
W2Bjb250YWluZXJgXShhYnNsL2NvbnRhaW5lci8pCi0gIDxiciAvPiBUaGUgYGNvbnRhaW5lcmAg
bGlicmFyeSBjb250YWlucyBhZGRpdGlvbmFsIFNUTC1zdHlsZSBjb250YWluZXJzLgorICA8YnIg
Lz4gVGhlIGBjb250YWluZXJgIGxpYnJhcnkgY29udGFpbnMgYWRkaXRpb25hbCBTVEwtc3R5bGUg
Y29udGFpbmVycywKKyAgaW5jbHVkaW5nIEFic2VpbCdzIHVub3JkZXJlZCAiU3dpc3MgdGFibGUi
IGNvbnRhaW5lcnMuCiAqIFtgZGVidWdnaW5nYF0oYWJzbC9kZWJ1Z2dpbmcvKQogICA8YnIgLz4g
VGhlIGBkZWJ1Z2dpbmdgIGxpYnJhcnkgY29udGFpbnMgY29kZSB1c2VmdWwgZm9yIGVuYWJsaW5n
IGxlYWsKLSAgY2hlY2tzLiBGdXR1cmUgdXBkYXRlcyB3aWxsIGFkZCBzdGFja3RyYWNlIGFuZCBz
eW1ib2xpemF0aW9uIHV0aWxpdGllcy4KKyAgY2hlY2tzLCBhbmQgc3RhY2t0cmFjZSBhbmQgc3lt
Ym9saXphdGlvbiB1dGlsaXRpZXMuCisqIFtgaGFzaGBdKGFic2wvaGFzaC8pCisgIDxiciAvPiBU
aGUgYGhhc2hgIGxpYnJhcnkgY29udGFpbnMgdGhlIGhhc2hpbmcgZnJhbWV3b3JrIGFuZCBkZWZh
dWx0IGhhc2gKKyAgZnVuY3RvciBpbXBsZW1lbnRhdGlvbnMgZm9yIGhhc2hhYmxlIHR5cGVzIGlu
IEFic2VpbC4KICogW2BtZW1vcnlgXShhYnNsL21lbW9yeS8pCiAgIDxiciAvPiBUaGUgYG1lbW9y
eWAgbGlicmFyeSBjb250YWlucyBDKysxMS1jb21wYXRpYmxlIHZlcnNpb25zIG9mCiAgIGBzdGQ6
Om1ha2VfdW5pcXVlKClgIGFuZCByZWxhdGVkIG1lbW9yeSBtYW5hZ2VtZW50IGZhY2lsaXRpZXMu
CkBAIC05MCw2ICs5NCw4IEBAIEFic2VpbCBjb250YWlucyB0aGUgZm9sbG93aW5nIEMrKyBsaWJy
YXJ5IGNvbXBvbmVudHM6CiAqIFtgdHlwZXNgXShhYnNsL3R5cGVzLykKICAgPGJyIC8+IFRoZSBg
dHlwZXNgIGxpYnJhcnkgY29udGFpbnMgbm9uLWNvbnRhaW5lciB1dGlsaXR5IHR5cGVzLCBsaWtl
IGEKICAgQysrMTEtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIHRoZSBDKysxNyBgc3RkOjpvcHRpb25h
bGAgdHlwZS4KKyogW2B1dGlsaXR5YF0oYWJzbC91dGlsaXR5LykKKyAgPGJyIC8+IFRoZSBgdXRp
bGl0eWAgbGlicmFyeSBjb250YWlucyB1dGlsaXR5IGFuZCBoZWxwZXIgY29kZS4KIAogIyMgTGlj
ZW5zZQogCkBAIC0xMDAsOSArMTA2LDkgQEAgbGljZW5zZS4gU2VlIFtMSUNFTlNFXShMSUNFTlNF
KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQWJz
ZWlsOgogCi0qIENvbnN1bHQgb3VyIFtBYnNlaWwgSW50cm9kdWN0aW9uXShodHRwOi8vYWJzZWls
LmlvL2Fib3V0L2ludHJvKQotKiBSZWFkIFtXaHkgQWRvcHQgQWJzZWlsXShodHRwOi8vYWJzZWls
LmlvL2Fib3V0L3BoaWxvc29waHkpIHRvIHVuZGVyc3RhbmQgb3VyCisqIENvbnN1bHQgb3VyIFtB
YnNlaWwgSW50cm9kdWN0aW9uXShodHRwczovL2Fic2VpbC5pby9hYm91dC9pbnRybykKKyogUmVh
ZCBbV2h5IEFkb3B0IEFic2VpbF0oaHR0cHM6Ly9hYnNlaWwuaW8vYWJvdXQvcGhpbG9zb3BoeSkg
dG8gdW5kZXJzdGFuZCBvdXIKICAgZGVzaWduIHBoaWxvc29waHkuCiAqIFBlcnVzZSBvdXIKLSAg
W0Fic2VpbCBDb21wYXRpYmlsaXR5IEd1YXJhbnRlZXNdKGh0dHA6Ly9hYnNlaWwuaW8vYWJvdXQv
Y29tcGF0aWJpbGl0eSkgdG8KKyAgW0Fic2VpbCBDb21wYXRpYmlsaXR5IEd1YXJhbnRlZXNdKGh0
dHBzOi8vYWJzZWlsLmlvL2Fib3V0L2NvbXBhdGliaWxpdHkpIHRvCiAgIHVuZGVyc3RhbmQgYm90
aCB3aGF0IHdlIHByb21pc2UgdG8geW91LCBhbmQgd2hhdCB3ZSBleHBlY3Qgb2YgeW91IGluIHJl
dHVybi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9VUEdSQURFUy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9VUEdSQURFUy5tZApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNTU5OWQwODc4ZDFkYjlkZDJhNzFhMzQ1MDZmZjBhZjllN2Q2YWRkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL1VQR1JBREVTLm1kCkBAIC0wLDAgKzEsMTcgQEAKKyMgQysrIFVwZ3JhZGUgVG9vbHMK
KworQWJzZWlsIG1heSBvY2Nhc3Npb25hbGx5IHJlbGVhc2UgQVBJLWJyZWFraW5nIGNoYW5nZXMu
IEFzIG5vdGVkIGluIG91cgorW0NvbXBhdGliaWxpdHkgR3VpZGVsaW5lc11bY29tcGF0aWJpbGl0
eS1ndWlkZV0sIHdlIHdpbGwgYWltIHRvIHByb3ZpZGUgYSB0b29sCit0byBkbyB0aGUgd29yayBv
ZiBlZmZlY3Rpbmcgc3VjaCBBUEktYnJlYWtpbmcgY2hhbmdlcywgd2hlbiBhYnNvbHV0ZWx5Citu
ZWNlc3NhcnkuCisKK1RoZXNlIHRvb2xzIHdpbGwgYmUgbGlzdGVkIG9uIHRoZSBbQysrIFVwZ3Jh
ZGUgVG9vbHNdW3VwZ3JhZGUtdG9vbHNdIGd1aWRlIG9uCitodHRwczovL2Fic2VpbC5pby4KKwor
Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHRoZSBbQysrIEF1dG9tYXRlZCBVcGdyYWRlIEd1aWRlXVth
cGktdXBncmFkZXMtZ3VpZGVdCitvdXRsaW5lcyB0aGlzIHByb2Nlc3MuCisKK1tjb21wYXRpYmls
aXR5LWd1aWRlXTogaHR0cHM6Ly9hYnNlaWwuaW8vYWJvdXQvY29tcGF0aWJpbGl0eQorW2FwaS11
cGdyYWRlcy1ndWlkZV06IGh0dHBzOi8vYWJzZWlsLmlvL2RvY3MvY3BwL3Rvb2xzL2FwaS11cGdy
YWRlcworW3VwZ3JhZGUtdG9vbHNdOiBodHRwczovL2Fic2VpbC5pby9kb2NzL2NwcC90b29scy91
cGdyYWRlcy8KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1dPUktTUEFDRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9XT1JLU1BBQ0UKaW5kZXggNzJl
ZjEzOTgwYzI5MjYzODMyY2JiMjJmOThmNzlhZTg1OTgyMWZmZS4uNDllMmQzY2I2ZTMxM2I0ZTQ2
MjIwZGE5YzRhNmY5MTJhMDQ0M2ViZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1dPUktTUEFDRQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvV09S
S1NQQUNFCkBAIC0xNSw5ICsxNSw5IEBAIGh0dHBfYXJjaGl2ZSgKICMgR29vZ2xlVGVzdC9Hb29n
bGVNb2NrIGZyYW1ld29yay4gVXNlZCBieSBtb3N0IHVuaXQtdGVzdHMuCiBodHRwX2FyY2hpdmUo
CiAgICAgIG5hbWUgPSAiY29tX2dvb2dsZV9nb29nbGV0ZXN0IiwKLSAgICAgdXJscyA9IFsiaHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2FyY2hpdmUvYjRkNDQzOGRmOTQ3OTY3
NWE2MzJiMmYxMTEyNWU1NzEzMzgyMmVjZS56aXAiXSwgICMgMjAxOC0wNy0xNgotICAgICBzdHJp
cF9wcmVmaXggPSAiZ29vZ2xldGVzdC1iNGQ0NDM4ZGY5NDc5Njc1YTYzMmIyZjExMTI1ZTU3MTMz
ODIyZWNlIiwKLSAgICAgc2hhMjU2ID0gIjVhYWE1ZDU2NjUxN2NhZTcxMWUyYTM1MDVlYTlhNjQz
OGJlMWIzN2ZjYWFlMGViY2I5NmNjYmE5YWE1NmYyM2EiLAorICAgICB1cmxzID0gWyJodHRwczov
L2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYXJjaGl2ZS9iNmNkNDA1Mjg2ZWQ4NjM1ZWNl
NzFjNzJmMTE4ZTY1OWY0YWRlM2ZiLnppcCJdLCAgIyAyMDE5LTAxLTA3CisgICAgIHN0cmlwX3By
ZWZpeCA9ICJnb29nbGV0ZXN0LWI2Y2Q0MDUyODZlZDg2MzVlY2U3MWM3MmYxMThlNjU5ZjRhZGUz
ZmIiLAorICAgICBzaGEyNTYgPSAiZmY3YTgyNzM2ZTE1OGMwNzdlNzYxODgyMzJlYWM3NzkxM2Ex
NWRhYzBiMjI1MDhjMzkwYWIzZjg4ZTZkNmQ4NiIsCiApCiAKICMgR29vZ2xlIGJlbmNobWFyay4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvQlVJTEQuYmF6ZWwKaW5kZXgg
ZWRkMDI3NGM1ZDgzN2Q3ZGZiNzE3ZDRlOTQyZjU5ZjdlNDhlZDZhNS4uODUzMzMwZDQ0N2ViMjMz
ZTE2ZDM4NmJiZTBiMDdlZmQ2NWYzZjM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvQlVJTEQuYmF6ZWwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvQlVJTEQuYmF6ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CkBAIC0yNSwxMyArMjUsMTggQEAgY3JlYXRlX2xsdm1fY29uZmlnKAogICAgIHZpc2liaWxpdHkg
PSBbIjpfX3N1YnBhY2thZ2VzX18iXSwKICkKIAotIyBmb2xsb3dpbmcgY29uZmlncyBhcmUgYmFz
ZWQgb24gbWFwcGluZyBkZWZpbmVkIGluOiBodHRwczovL2dpdC5pby92NUlqegorY29uZmlnX3Nl
dHRpbmcoCisgICAgbmFtZSA9ICJvc3giLAorICAgIGNvbnN0cmFpbnRfdmFsdWVzID0gWworICAg
ICAgICAiQGJhemVsX3Rvb2xzLy9wbGF0Zm9ybXM6b3N4IiwKKyAgICBdLAorKQorCiBjb25maWdf
c2V0dGluZygKICAgICBuYW1lID0gImlvcyIsCi0gICAgdmFsdWVzID0gewotICAgICAgICAiY3B1
IjogImRhcndpbiIsCi0gICAgfSwKLSAgICB2aXNpYmlsaXR5ID0gWyI6X19zdWJwYWNrYWdlc19f
Il0sCisgICAgY29uc3RyYWludF92YWx1ZXMgPSBbCisgICAgICAgICJAYmF6ZWxfdG9vbHMvL3Bs
YXRmb3Jtczppb3MiLAorICAgIF0sCiApCiAKIGNvbmZpZ19zZXR0aW5nKApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9DTWFrZUxpc3RzLnR4dAppbmRleCAxZDA5YjE5
MzVkODQ3MzVkNmRjOTA3NDJhNjQ1YjI4ODUwYWVlYzc2Li4zZTc4Mzk3Yzk3NjI4YWVmMjNkNDgx
NDJlZWZiMjBhZDlhMmJlM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9DTWFrZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTIwLDEwICsyMCwxMiBAQCBhZGRfc3ViZGlyZWN0b3J5KGJhc2UpCiBhZGRfc3ViZGlyZWN0
b3J5KGFsZ29yaXRobSkKIGFkZF9zdWJkaXJlY3RvcnkoY29udGFpbmVyKQogYWRkX3N1YmRpcmVj
dG9yeShkZWJ1Z2dpbmcpCithZGRfc3ViZGlyZWN0b3J5KGZsYWdzKQogYWRkX3N1YmRpcmVjdG9y
eShoYXNoKQogYWRkX3N1YmRpcmVjdG9yeShtZW1vcnkpCiBhZGRfc3ViZGlyZWN0b3J5KG1ldGEp
CiBhZGRfc3ViZGlyZWN0b3J5KG51bWVyaWMpCithZGRfc3ViZGlyZWN0b3J5KHJhbmRvbSkKIGFk
ZF9zdWJkaXJlY3Rvcnkoc3RyaW5ncykKIGFkZF9zdWJkaXJlY3Rvcnkoc3luY2hyb25pemF0aW9u
KQogYWRkX3N1YmRpcmVjdG9yeSh0aW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0JV
SUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0JVSUxELmJhemVsCmluZGV4IGQwNGRjNzEyMDZl
OGQ5Njk0MzNmODUyM2JlYjYxMWY3OWNiNjQyMjUuLmM1MDZmM2I5ZmU4ZGIzYzNjMzgyZWMzZGE4
NDllOTkxYTBmYzFiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9CVUlMRC5iYXplbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9hbGdvcml0aG0vQlVJTEQuYmF6ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAj
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0xNSw4ICsxNSw5IEBACiAjCiAKIGxvYWQoCi0gICAgIi8vYWJzbDpjb3B0
cy5iemwiLAorICAgICIvL2Fic2w6Y29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bCIsCiAgICAgIkFC
U0xfREVGQVVMVF9DT1BUUyIsCisgICAgIkFCU0xfREVGQVVMVF9MSU5LT1BUUyIsCiAgICAgIkFC
U0xfVEVTVF9DT1BUUyIsCiApCiAKQEAgLTI4LDYgKzI5LDcgQEAgY2NfbGlicmFyeSgKICAgICBu
YW1lID0gImFsZ29yaXRobSIsCiAgICAgaGRycyA9IFsiYWxnb3JpdGhtLmgiXSwKICAgICBjb3B0
cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKICkKIAogY2NfdGVzdCgKQEAgLTM1LDYgKzM3LDcgQEAgY2NfdGVzdCgKICAgICBzaXpl
ID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJhbGdvcml0aG1fdGVzdC5jYyJdLAogICAgIGNvcHRz
ID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YWxnb3JpdGhtIiwKICAgICAgICAgIkBjb21fZ29v
Z2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKQEAgLTQ1LDYgKzQ4LDcgQEAgY2NfdGVzdCgK
ICAgICBuYW1lID0gImFsZ29yaXRobV9iZW5jaG1hcmsiLAogICAgIHNyY3MgPSBbImVxdWFsX2Jl
bmNobWFyay5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3MgPSBbImJlbmNobWFyayJdLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6YWxnb3JpdGhtIiwKQEAgLTU5LDYgKzYzLDcgQEAgY2NfbGli
cmFyeSgKICAgICAgICAgImNvbnRhaW5lci5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9E
RUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6YWxnb3JpdGhtIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNv
cmVfaGVhZGVycyIsCkBAIC03MCw2ICs3NSw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJjb250
YWluZXJfdGVzdCIsCiAgICAgc3JjcyA9IFsiY29udGFpbmVyX3Rlc3QuY2MiXSwKICAgICBjb3B0
cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICBkZXBzID0gWwogICAgICAgICAiOmNvbnRhaW5lciIsCiAgICAgICAgICIvL2Fic2wv
YmFzZSIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vQlVJTEQuZ24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdv
cml0aG0vQlVJTEQuZ24KaW5kZXggMzdlYzY2NTc2NGQ0OWNiYjJkMWE4YmJjNTYxOWUwNTliN2M1
MmRhMy4uNjY1YmU0YTk3Y2I0MGU4YjA1MDhhNDE2MzM3NjU5MGUwNjcyODk1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYWxnb3JpdGhtL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9CVUlMRC5n
bgpAQCAtNCw4ICs0LDE1IEBACiAKIGltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25p
IikKIAorIyBVc2FnZSBvZiBBYnNlaWwgaW4gQ2hyb21pdW0gaXMgZ3VhcmRlZCBieSBhbiBleHBs
aWNpdCBvcHQtaW4gbGlzdCwgYmVmb3JlCisjIGFkZGluZyBwcm9qZWN0cyB0byB0aGlzIGxpc3Qg
cGxlYXNlIHJlYWNoIG91dCB0byBjeHhAY2hyb21pdW0ub3JnIGFuZCBDQzoKKyMgLSBodHRwczov
L2NzLmNocm9taXVtLm9yZy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9PV05F
UlMKKyMKKyMgTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgYXQ6CisjIGh0dHBzOi8vZG9j
cy5nb29nbGUuY29tL2RvY3VtZW50L2QvMURnUzEtQTNyemJvVExqcGY0bTFzcWtKZ1dqbllfUnUy
ZG9razFYMXZCRFUKIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CiAgIHZpc2liaWxpdHkgPSBb
CisgICAgIi8vbGliYXNzaXN0YW50LyoiLAogICAgICIvL3RoaXJkX3BhcnR5L3dlYnJ0Yy8qIiwK
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3Q6Z3Rlc3QiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYWxnb3JpdGhtL0NNYWtlTGlzdHMudHh0CmluZGV4IGZkZjQ1YzU1ZWQ2MzEz
ZTgzYmIxOWJmYTgzYTViNDczZTk1ZWY5YjcuLjlmYmUzNmY2OThmMDU2YTg2N2YwMzZhYWIzNDY1
NDI4NzRhMWIxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9hbGdvcml0aG0vQ01ha2VMaXN0cy50eHQKQEAgLTUsNyArNSw3IEBACiAjIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0xNCw1MCArMTQsNTQgQEAKICMgbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCiAjCiAKLWxpc3QoQVBQRU5EIEFMR09SSVRITV9QVUJMSUNfSEVBREVSUwotICAi
YWxnb3JpdGhtLmgiCi0gICJjb250YWluZXIuaCIKLSkKLQotCi0jCi0jIyBURVNUUwotIwotCi0j
IHRlc3QgYWxnb3JpdGhtX3Rlc3QKLWxpc3QoQVBQRU5EIEFMR09SSVRITV9URVNUX1NSQwotICAi
YWxnb3JpdGhtX3Rlc3QuY2MiCi0gICR7QUxHT1JJVEhNX1BVQkxJQ19IRUFERVJTfQotICAke0FM
R09SSVRITV9JTlRFUk5BTF9IRUFERVJTfQotKQotCi1hYnNsX2hlYWRlcl9saWJyYXJ5KAotICBU
QVJHRVQKLSAgICBhYnNsX2FsZ29yaXRobQotICBFWFBPUlRfTkFNRQorYWJzbF9jY19saWJyYXJ5
KAorICBOQU1FCiAgICAgYWxnb3JpdGhtCisgIEhEUlMKKyAgICAiYWxnb3JpdGhtLmgiCisgIENP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIFBVQkxJQwogKQogCi1hYnNsX3Rlc3Qo
Ci0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgYWxnb3JpdGhtX3Rlc3QKLSAg
U09VUkNFUwotICAgICR7QUxHT1JJVEhNX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCisg
IFNSQ1MKKyAgICAiYWxnb3JpdGhtX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIERFUFMKICAgICBhYnNsOjphbGdvcml0aG0KKyAgICBnbW9ja19tYWluCiApCiAK
K2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGFsZ29yaXRobV9jb250YWluZXIKKyAgSERS
UworICAgICJjb250YWluZXIuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OmFsZ29yaXRobQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAg
IGFic2w6Om1ldGEKKyAgUFVCTElDCispCiAKLQotCi0jIHRlc3QgY29udGFpbmVyX3Rlc3QKLXNl
dChDT05UQUlORVJfVEVTVF9TUkMgImNvbnRhaW5lcl90ZXN0LmNjIikKLQotYWJzbF90ZXN0KAot
ICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIGNvbnRhaW5lcl90ZXN0Ci0gIFNP
VVJDRVMKLSAgICAke0NPTlRBSU5FUl9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAg
IGFic2w6OmFsZ29yaXRobQorICBTUkNTCisgICAgImNvbnRhaW5lcl90ZXN0LmNjIgorICBDT1BU
UworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YWxnb3JpdGhtX2Nv
bnRhaW5lcgorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNs
OjptZW1vcnkKKyAgICBhYnNsOjpzcGFuCisgICAgZ21vY2tfbWFpbgogKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYWxnb3JpdGhtL2FsZ29yaXRobS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2FsZ29yaXRobS5o
CmluZGV4IDNkNjU4NjQzOWZlM2JjNTExMWU2N2IwNTgyNTExZDFjNjczNGZkNjYuLmJiOTAyMTVk
ODBkYWY2Y2FjYmQ5MDhiMjgyY2Q0NGI4MTc4YjhkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29y
aXRobS9hbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vYWxnb3JpdGhtLmgKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTk0LDcgKzk0LDcgQEAgSXQg
Um90YXRlSW1wbChJdCBmaXJzdCwgSXQgbWlkZGxlLCBJdCBsYXN0LCBzdGQ6OmZhbHNlX3R5cGUp
IHsKIC8vIHRoZW4gdGhlIHByZWRpY2F0ZSBpcyBuZXZlciBpbnZva2VkIGFuZCB0aGUgZnVuY3Rp
b24gcmV0dXJucyBmYWxzZS4KIC8vCiAvLyBUaGlzIGlzIGEgQysrMTEtY29tcGF0aWJsZSBpbXBs
ZW1lbnRhdGlvbiBvZiBDKysxNCBgc3RkOjplcXVhbGAuICBTZWUKLS8vIGh0dHA6Ly9lbi5jcHBy
ZWZlcmVuY2UuY29tL3cvY3BwL2FsZ29yaXRobS9lcXVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K
Ky8vIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9hbGdvcml0aG0vZXF1YWwgZm9y
IG1vcmUgaW5mb3JtYXRpb24uCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyMSwgdHlwZW5h
bWUgSW5wdXRJdGVyMiwgdHlwZW5hbWUgUHJlZD4KIGJvb2wgZXF1YWwoSW5wdXRJdGVyMSBmaXJz
dDEsIElucHV0SXRlcjEgbGFzdDEsIElucHV0SXRlcjIgZmlyc3QyLAogICAgICAgICAgICBJbnB1
dEl0ZXIyIGxhc3QyLCBQcmVkJiYgcHJlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGht
L2FsZ29yaXRobV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2FsZ29yaXRobV90ZXN0LmNjCmlu
ZGV4IGU0MzIyYmM0ZjIwMmUzMWU4NTI2YjIxZTdkMjY5OTRkZTYzMGVhNzMuLjgxZmNjYjYxMzUz
ZTY1NWFjNjE2Y2JkYmVmMDExZTc4MmVjMjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRo
bS9hbGdvcml0aG1fdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vYWxnb3JpdGhtX3Rlc3Qu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2FsZ29yaXRobS9jb250YWluZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXIu
aAppbmRleCA1M2FiMTU2ODZjNmUxMGU2MjE3ZWQ0N2IwYjRkN2EzMzM3NTY4MDdjLi5jODRkZTQ2
MWFjMjgzYTEyZmE5NzBmZGM0ODQ0NDA1NDI0MmFiZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdv
cml0aG0vY29udGFpbmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2NvbnRhaW5lci5oCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zNiw3ICszNiw2IEBACiAv
LyBGb3IgdGVtcGxhdGUgcGFyYW1ldGVyIGFuZCB2YXJpYWJsZSBuYW1pbmcsIGBDYCBpbmRpY2F0
ZXMgdGhlIGNvbnRhaW5lciB0eXBlCiAvLyB0byB3aGljaCB0aGUgZnVuY3Rpb24gaXMgYXBwbGll
ZCwgYFByZWRgIGluZGljYXRlcyB0aGUgcHJlZGljYXRlIG9iamVjdCB0eXBlCiAvLyB0byBiZSB1
c2VkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgYFRgIGluZGljYXRlcyB0aGUgYXBwbGljYWJsZSBlbGVt
ZW50IHR5cGUuCi0vLwogCiAjaWZuZGVmIEFCU0xfQUxHT1JJVEhNX0NPTlRBSU5FUl9IXwogI2Rl
ZmluZSBBQlNMX0FMR09SSVRITV9DT05UQUlORVJfSF8KQEAgLTQ2LDYgKzQ1LDggQEAKICNpbmNs
dWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDxudW1lcmljPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisjaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KICNp
bmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtNTQsNyArNTUsNiBAQAog
I2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgogCiBuYW1lc3BhY2UgYWJzbCB7Ci0K
IG5hbWVzcGFjZSBjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsIHsKIAogLy8gTk9URTogaXQg
aXMgaW1wb3J0YW50IHRvIGRlZmVyIHRvIEFETCBsb29rdXAgZm9yIGJ1aWxkaW5nIHdpdGggQysr
IG1vZHVsZXMsCkBAIC0xMDEsNiArMTAxLDE3IEBAIENvbnRhaW5lckl0ZXI8Qz4gY19iZWdpbihD
JiBjKSB7IHJldHVybiBiZWdpbihjKTsgfQogdGVtcGxhdGUgPHR5cGVuYW1lIEM+CiBDb250YWlu
ZXJJdGVyPEM+IGNfZW5kKEMmIGMpIHsgcmV0dXJuIGVuZChjKTsgfQogCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBJc1Vub3JkZXJlZENvbnRhaW5lciA6IHN0ZDo6ZmFsc2VfdHlwZSB7
fTsKKwordGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgSGFzaCwgY2xhc3MgS2V5
RXF1YWwsIGNsYXNzIEFsbG9jYXRvcj4KK3N0cnVjdCBJc1Vub3JkZXJlZENvbnRhaW5lcjwKKyAg
ICBzdGQ6OnVub3JkZXJlZF9tYXA8S2V5LCBULCBIYXNoLCBLZXlFcXVhbCwgQWxsb2NhdG9yPj4g
OiBzdGQ6OnRydWVfdHlwZSB7fTsKKwordGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgSGFzaCwg
Y2xhc3MgS2V5RXF1YWwsIGNsYXNzIEFsbG9jYXRvcj4KK3N0cnVjdCBJc1Vub3JkZXJlZENvbnRh
aW5lcjxzdGQ6OnVub3JkZXJlZF9zZXQ8S2V5LCBIYXNoLCBLZXlFcXVhbCwgQWxsb2NhdG9yPj4K
KyAgICA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCiB9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2Fs
Z29yaXRobV9pbnRlcm5hbAogCiAvLyBQVUJMSUMgQVBJCkBAIC00OTksNiArNTEwLDE2IEBAIE91
dHB1dEl0ZXJhdG9yIGNfbW92ZShDJiYgc3JjLCBPdXRwdXRJdGVyYXRvciBkZXN0KSB7CiAgICAg
ICAgICAgICAgICAgICAgY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6Y19lbmQoc3JjKSwg
ZGVzdCk7CiB9CiAKKy8vIGNfbW92ZV9iYWNrd2FyZCgpCisvLworLy8gQ29udGFpbmVyLWJhc2Vk
IHZlcnNpb24gb2YgdGhlIDxhbGdvcml0aG0+IGBzdGQ6Om1vdmVfYmFja3dhcmQoKWAgZnVuY3Rp
b24gdG8KKy8vIG1vdmUgYSBjb250YWluZXIncyBlbGVtZW50cyBpbnRvIGFuIGl0ZXJhdG9yIGlu
IHJldmVyc2Ugb3JkZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yPgorQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGNfbW92ZV9iYWNrd2FyZChDJiYg
c3JjLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZGVzdCkgeworICByZXR1cm4gc3RkOjptb3ZlX2Jh
Y2t3YXJkKGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OmNfYmVnaW4oc3JjKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpjX2Vu
ZChzcmMpLCBkZXN0KTsKK30KKwogLy8gY19zd2FwX3JhbmdlcygpCiAvLwogLy8gQ29udGFpbmVy
LWJhc2VkIHZlcnNpb24gb2YgdGhlIDxhbGdvcml0aG0+IGBzdGQ6OnN3YXBfcmFuZ2VzKClgIGZ1
bmN0aW9uIHRvCkBAIC02MzYsNyArNjU3LDYgQEAgY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5h
bDo6Q29udGFpbmVySXRlcjxDPiBjX2dlbmVyYXRlX24oQyYgYywgU2l6ZSBuLAogLy8gYW5kIGB1
bmlxdWUoKWAgYXJlIG9taXR0ZWQsIGJlY2F1c2UgaXQncyBub3QgY2xlYXIgd2hldGhlciBvciBu
b3Qgc3VjaAogLy8gZnVuY3Rpb25zIHNob3VsZCBjYWxsIGVyYXNlIG9uIHRoZWlyIHN1cHBsaWVk
IHNlcXVlbmNlcyBhZnRlcndhcmRzLiBFaXRoZXIKIC8vIGJlaGF2aW9yIHdvdWxkIGJlIHN1cnBy
aXNpbmcgZm9yIGEgZGlmZmVyZW50IHNldCBvZiB1c2Vycy4KLS8vCiAKIC8vIGNfcmVtb3ZlX2Nv
cHkoKQogLy8KQEAgLTExNTQsNyArMTE3NCwxMyBAQCBib29sIGNfaW5jbHVkZXMoY29uc3QgQzEm
IGMxLCBjb25zdCBDMiYgYzIsIENvbXBhcmUmJiBjb21wKSB7CiAvLyBDb250YWluZXItYmFzZWQg
dmVyc2lvbiBvZiB0aGUgPGFsZ29yaXRobT4gYHN0ZDo6c2V0X3VuaW9uKClgIGZ1bmN0aW9uCiAv
LyB0byByZXR1cm4gYW4gaXRlcmF0b3IgY29udGFpbmluZyB0aGUgdW5pb24gb2YgdHdvIGNvbnRh
aW5lcnM7IGR1cGxpY2F0ZQogLy8gdmFsdWVzIGFyZSBub3QgY29waWVkIGludG8gdGhlIG91dHB1
dC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5cGVuYW1lIE91dHB1dEl0
ZXJhdG9yPgordGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0
cHV0SXRlcmF0b3IsCisgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRl
cmVkQ29udGFpbmVyPEMxPjo6dmFsdWUsCisgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlLAorICAg
ICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAg
ICFjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJc1Vub3JkZXJlZENvbnRhaW5lcjxDMj46
OnZhbHVlLAorICAgICAgICAgICAgICB2b2lkPjo6dHlwZT4KIE91dHB1dEl0ZXJhdG9yIGNfc2V0
X3VuaW9uKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLCBPdXRwdXRJdGVyYXRvciBvdXRwdXQp
IHsKICAgcmV0dXJuIHN0ZDo6c2V0X3VuaW9uKGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6
OmNfYmVnaW4oYzEpLAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX2FsZ29yaXRo
bV9pbnRlcm5hbDo6Y19lbmQoYzEpLApAQCAtMTE2NCw3ICsxMTkwLDEzIEBAIE91dHB1dEl0ZXJh
dG9yIGNfc2V0X3VuaW9uKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLCBPdXRwdXRJdGVyYXRv
ciBvdXRwdXQpIHsKIAogLy8gT3ZlcmxvYWQgb2YgY19zZXRfdW5pb24oKSBmb3IgcGVyZm9ybWlu
ZyBhIG1lcmdlIHVzaW5nIGEgYGNvbXBgIG90aGVyIHRoYW4KIC8vIGBvcGVyYXRvcjxgLgotdGVt
cGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3Is
IHR5cGVuYW1lIENvbXBhcmU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0
eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZSwKKyAgICAgICAgICB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAhY29udGFpbmVy
X2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWluZXI8QzE+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgdm9pZD46OnR5cGUsCisgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJu
YWw6OklzVW5vcmRlcmVkQ29udGFpbmVyPEMyPjo6dmFsdWUsCisgICAgICAgICAgICAgIHZvaWQ+
Ojp0eXBlPgogT3V0cHV0SXRlcmF0b3IgY19zZXRfdW5pb24oY29uc3QgQzEmIGMxLCBjb25zdCBD
MiYgYzIsIE91dHB1dEl0ZXJhdG9yIG91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENvbXBhcmUmJiBjb21wKSB7CiAgIHJldHVybiBzdGQ6OnNldF91bmlvbihjb250YWluZXJfYWxn
b3JpdGhtX2ludGVybmFsOjpjX2JlZ2luKGMxKSwKQEAgLTExNzgsNyArMTIxMCwxMyBAQCBPdXRw
dXRJdGVyYXRvciBjX3NldF91bmlvbihjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwgT3V0cHV0
SXRlcmF0b3Igb3V0cHV0LAogLy8KIC8vIENvbnRhaW5lci1iYXNlZCB2ZXJzaW9uIG9mIHRoZSA8
YWxnb3JpdGhtPiBgc3RkOjpzZXRfaW50ZXJzZWN0aW9uKClgIGZ1bmN0aW9uCiAvLyB0byByZXR1
cm4gYW4gaXRlcmF0b3IgY29udGFpbmluZyB0aGUgaW50ZXJzZWN0aW9uIG9mIHR3byBjb250YWlu
ZXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0
SXRlcmF0b3I+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBlbmFtZSBP
dXRwdXRJdGVyYXRvciwKKyAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPAorICAgICAgICAgICAgICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9y
ZGVyZWRDb250YWluZXI8QzE+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGUsCisg
ICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAg
ICAgIWNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFpbmVyPEMy
Pjo6dmFsdWUsCisgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlPgogT3V0cHV0SXRlcmF0b3IgY19z
ZXRfaW50ZXJzZWN0aW9uKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dHB1dCkgewogICByZXR1cm4g
c3RkOjpzZXRfaW50ZXJzZWN0aW9uKGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OmNfYmVn
aW4oYzEpLApAQCAtMTE4OSw3ICsxMjI3LDEzIEBAIE91dHB1dEl0ZXJhdG9yIGNfc2V0X2ludGVy
c2VjdGlvbihjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwKIAogLy8gT3ZlcmxvYWQgb2YgY19z
ZXRfaW50ZXJzZWN0aW9uKCkgZm9yIHBlcmZvcm1pbmcgYSBtZXJnZSB1c2luZyBhIGBjb21wYCBv
dGhlcgogLy8gdGhhbiBgb3BlcmF0b3I8YC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5h
bWUgQzIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlPgordGVtcGxh
dGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5
cGVuYW1lIENvbXBhcmUsCisgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OklzVW5v
cmRlcmVkQ29udGFpbmVyPEMxPjo6dmFsdWUsCisgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlLAor
ICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAg
ICAgICFjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJc1Vub3JkZXJlZENvbnRhaW5lcjxD
Mj46OnZhbHVlLAorICAgICAgICAgICAgICB2b2lkPjo6dHlwZT4KIE91dHB1dEl0ZXJhdG9yIGNf
c2V0X2ludGVyc2VjdGlvbihjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBvdXRwdXQsIENvbXBhcmUmJiBj
b21wKSB7CiAgIHJldHVybiBzdGQ6OnNldF9pbnRlcnNlY3Rpb24oY29udGFpbmVyX2FsZ29yaXRo
bV9pbnRlcm5hbDo6Y19iZWdpbihjMSksCkBAIC0xMjA0LDcgKzEyNDgsMTMgQEAgT3V0cHV0SXRl
cmF0b3IgY19zZXRfaW50ZXJzZWN0aW9uKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLAogLy8g
Q29udGFpbmVyLWJhc2VkIHZlcnNpb24gb2YgdGhlIDxhbGdvcml0aG0+IGBzdGQ6OnNldF9kaWZm
ZXJlbmNlKClgIGZ1bmN0aW9uCiAvLyB0byByZXR1cm4gYW4gaXRlcmF0b3IgY29udGFpbmluZyBl
bGVtZW50cyBwcmVzZW50IGluIHRoZSBmaXJzdCBjb250YWluZXIgYnV0CiAvLyBub3QgaW4gdGhl
IHNlY29uZC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5cGVuYW1lIE91
dHB1dEl0ZXJhdG9yPgordGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5h
bWUgT3V0cHV0SXRlcmF0b3IsCisgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjwKKyAgICAgICAgICAgICAgIWNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6Oklz
VW5vcmRlcmVkQ29udGFpbmVyPEMxPjo6dmFsdWUsCisgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBl
LAorICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAg
ICAgICAgICFjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJc1Vub3JkZXJlZENvbnRhaW5l
cjxDMj46OnZhbHVlLAorICAgICAgICAgICAgICB2b2lkPjo6dHlwZT4KIE91dHB1dEl0ZXJhdG9y
IGNfc2V0X2RpZmZlcmVuY2UoY29uc3QgQzEmIGMxLCBjb25zdCBDMiYgYzIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dHB1dCkgewogICByZXR1cm4g
c3RkOjpzZXRfZGlmZmVyZW5jZShjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpjX2JlZ2lu
KGMxKSwKQEAgLTEyMTUsNyArMTI2NSwxMyBAQCBPdXRwdXRJdGVyYXRvciBjX3NldF9kaWZmZXJl
bmNlKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLAogCiAvLyBPdmVybG9hZCBvZiBjX3NldF9k
aWZmZXJlbmNlKCkgZm9yIHBlcmZvcm1pbmcgYSBtZXJnZSB1c2luZyBhIGBjb21wYCBvdGhlcgog
Ly8gdGhhbiBgb3BlcmF0b3I8YC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIs
IHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlPgordGVtcGxhdGUgPHR5
cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1l
IENvbXBhcmUsCisgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwK
KyAgICAgICAgICAgICAgIWNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVk
Q29udGFpbmVyPEMxPjo6dmFsdWUsCisgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlLAorICAgICAg
ICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICFj
b250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJc1Vub3JkZXJlZENvbnRhaW5lcjxDMj46OnZh
bHVlLAorICAgICAgICAgICAgICB2b2lkPjo6dHlwZT4KIE91dHB1dEl0ZXJhdG9yIGNfc2V0X2Rp
ZmZlcmVuY2UoY29uc3QgQzEmIGMxLCBjb25zdCBDMiYgYzIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dHB1dCwgQ29tcGFyZSYmIGNvbXApIHsKICAg
cmV0dXJuIHN0ZDo6c2V0X2RpZmZlcmVuY2UoY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6
Y19iZWdpbihjMSksCkBAIC0xMjMwLDcgKzEyODYsMTMgQEAgT3V0cHV0SXRlcmF0b3IgY19zZXRf
ZGlmZmVyZW5jZShjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwKIC8vIENvbnRhaW5lci1iYXNl
ZCB2ZXJzaW9uIG9mIHRoZSA8YWxnb3JpdGhtPiBgc3RkOjpzZXRfc3ltbWV0cmljX2RpZmZlcmVu
Y2UoKWAKIC8vIGZ1bmN0aW9uIHRvIHJldHVybiBhbiBpdGVyYXRvciBjb250YWluaW5nIGVsZW1l
bnRzIHByZXNlbnQgaW4gZWl0aGVyIG9uZQogLy8gY29udGFpbmVyIG9yIHRoZSBvdGhlciwgYnV0
IG5vdCBib3RoLgotdGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMiwgdHlwZW5hbWUg
T3V0cHV0SXRlcmF0b3I+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMyLCB0eXBl
bmFtZSBPdXRwdXRJdGVyYXRvciwKKyAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6
SXNVbm9yZGVyZWRDb250YWluZXI8QzE+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5
cGUsCisgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAg
ICAgICAgICAgIWNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OklzVW5vcmRlcmVkQ29udGFp
bmVyPEMyPjo6dmFsdWUsCisgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlPgogT3V0cHV0SXRlcmF0
b3IgY19zZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoY29uc3QgQzEmIGMxLCBjb25zdCBDMiYgYzIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRv
ciBvdXRwdXQpIHsKICAgcmV0dXJuIHN0ZDo6c2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKApAQCAt
MTI0Miw3ICsxMzA0LDEzIEBAIE91dHB1dEl0ZXJhdG9yIGNfc2V0X3N5bW1ldHJpY19kaWZmZXJl
bmNlKGNvbnN0IEMxJiBjMSwgY29uc3QgQzImIGMyLAogCiAvLyBPdmVybG9hZCBvZiBjX3NldF9z
eW1tZXRyaWNfZGlmZmVyZW5jZSgpIGZvciBwZXJmb3JtaW5nIGEgbWVyZ2UgdXNpbmcgYQogLy8g
YGNvbXBgIG90aGVyIHRoYW4gYG9wZXJhdG9yPGAuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5
cGVuYW1lIEMyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZT4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBDb21wYXJlLAorICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8CisgICAgICAgICAgICAgICFjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpJ
c1Vub3JkZXJlZENvbnRhaW5lcjxDMT46OnZhbHVlLAorICAgICAgICAgICAgICB2b2lkPjo6dHlw
ZSwKKyAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAg
ICAgICAgICAhY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6SXNVbm9yZGVyZWRDb250YWlu
ZXI8QzI+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgdm9pZD46OnR5cGU+CiBPdXRwdXRJdGVyYXRv
ciBjX3NldF9zeW1tZXRyaWNfZGlmZmVyZW5jZShjb25zdCBDMSYgYzEsIGNvbnN0IEMyJiBjMiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9y
IG91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBh
cmUmJiBjb21wKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyX3Rlc3QuY2MKaW5kZXggMTUwMmIxN2Y4NjM2
YjBkNWVkZWM5ZmE0NTM1YzZlOGI4MGQzNTA3NS4uODZiZjlkM2VhMzI3YTkyOGZjZDU3Yjk0NTNm
ZTJhMGQzN2E4YzM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2NvbnRhaW5lcl90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXJfdGVzdC5jYwpAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8v
CiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNjM2LDYgKzYzNiwxOSBAQCBURVNUKE11
dGF0aW5nVGVzdCwgTW92ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2lu
dGVlKDUpKSk7CiB9CiAKK1RFU1QoTXV0YXRpbmdUZXN0LCBNb3ZlQmFja3dhcmQpIHsKKyAgc3Rk
Ojp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGludD4+IGFjdHVhbDsKKyAgYWN0dWFsLmVtcGxhY2Vf
YmFjayhhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDEpKTsKKyAgYWN0dWFsLmVtcGxhY2VfYmFjayhh
YnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDIpKTsKKyAgYWN0dWFsLmVtcGxhY2VfYmFjayhhYnNsOjpt
YWtlX3VuaXF1ZTxpbnQ+KDMpKTsKKyAgYWN0dWFsLmVtcGxhY2VfYmFjayhhYnNsOjptYWtlX3Vu
aXF1ZTxpbnQ+KDQpKTsKKyAgYWN0dWFsLmVtcGxhY2VfYmFjayhhYnNsOjptYWtlX3VuaXF1ZTxp
bnQ+KDUpKTsKKyAgYXV0byBzdWJyYW5nZSA9IGFic2w6Ok1ha2VTcGFuKGFjdHVhbC5kYXRhKCks
IDMpOworICBhYnNsOjpjX21vdmVfYmFja3dhcmQoc3VicmFuZ2UsIGFjdHVhbC5lbmQoKSk7Cisg
IEVYUEVDVF9USEFUKGFjdHVhbCwgRWxlbWVudHNBcmUoSXNOdWxsKCksIElzTnVsbCgpLCBQb2lu
dGVlKDEpLCBQb2ludGVlKDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBv
aW50ZWUoMykpKTsKK30KKwogVEVTVChNdXRhdGluZ1Rlc3QsIE1vdmVXaXRoUnZhbHVlKSB7CiAg
IGF1dG8gTWFrZVJWYWx1ZVNyYyA9IFtdIHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8aW50Pj4gc3JjOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2VxdWFsX2JlbmNobWFy
ay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9lcXVhbF9iZW5jaG1hcmsuY2MKaW5kZXggMTljMDc4MGNj
ZDE3OWNlNzQ1YjVlNjgyMWFkZDNkYTQwYzU4Mjc5MS4uN2JmNjJjOWE3ZjU2YzViYWQzOGUzNWY5
NTkxYzQzMDY1OTEyNzNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2VxdWFsX2JlbmNo
bWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vZXF1YWxfYmVuY2htYXJrLmNjCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlMRC5iYXplbAppbmRleCBmN2Q4MTAxMzViOGNj
YzVmYjA1ZGU0YWI3MjVkNmMxY2Q4ZGYzYTQ2Li5hNTEyMjcyYWRiOTQxYjJhY2U4ZmNhZTQ1NDQ3
ZjNkMzFlMzQ5ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmJhemVsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvQlVJTEQuYmF6ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBA
IC0xNSwxNyArMTUsNDYgQEAKICMKIAogbG9hZCgKLSAgICAiLy9hYnNsOmNvcHRzLmJ6bCIsCisg
ICAgIi8vYWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKICAgICAiQUJTTF9ERUZBVUxU
X0NPUFRTIiwKLSAgICAiQUJTTF9URVNUX0NPUFRTIiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktP
UFRTIiwKICAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUciLAogICAgICJBQlNMX0VYQ0VQVElPTlNf
RkxBR19MSU5LT1BUUyIsCisgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiApCiAKIHBhY2thZ2UoZGVm
YXVsdF92aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0pCiAKIGxpY2Vuc2VzKFsi
bm90aWNlIl0pICAjIEFwYWNoZSAyLjAKIAorY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImF0b21p
Y19ob29rIiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9hdG9taWNfaG9vay5oIl0sCisgICAgY29w
dHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2Vz
X18iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJsb2dfc2V2ZXJpdHki
LAorICAgIHNyY3MgPSBbImxvZ19zZXZlcml0eS5jYyJdLAorICAgIGhkcnMgPSBbImxvZ19zZXZl
cml0eS5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsiOmNvcmVfaGVhZGVycyJdLAor
KQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAicmF3X2xvZ2dpbmdfaW50ZXJuYWwiLAorICAg
IGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2w6X19zdWJwYWNr
YWdlc19fIiwKKyAgICBdLAorKQorCiBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAic3BpbmxvY2tf
d2FpdCIsCiAgICAgc3JjcyA9IFsKQEAgLTQwLDYgKzY5LDcgQEAgY2NfbGlicmFyeSgKICAgICAg
ICAgImludGVybmFsL3NwaW5sb2NrX3dhaXQuaCIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xf
REVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAg
ICB2aXNpYmlsaXR5ID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2U6X19wa2dfXyIsCiAgICAgXSwK
QEAgLTUzLDYgKzgzLDcgQEAgY2NfbGlicmFyeSgKICAgICAgICAgInBvbGljeV9jaGVja3MuaCIs
CiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9
IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICkKIAogY2NfbGlicmFyeSgKQEAgLTYxLDIxICs5Miwy
NiBAQCBjY19saWJyYXJ5KAogICAgIGhkcnMgPSBbImR5bmFtaWNfYW5ub3RhdGlvbnMuaCJdLAog
ICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAogICAgIGRlZmluZXMgPSBbIl9fQ0xBTkdf
U1VQUE9SVF9EWU5fQU5OT1RBVElPTl9fIl0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCiApCiAKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJjb3JlX2hlYWRlcnMiLAor
ICAgIHNyY3MgPSBbCisgICAgICAgICJpbnRlcm5hbC90aHJlYWRfYW5ub3RhdGlvbnMuaCIsCisg
ICAgXSwKICAgICBoZHJzID0gWwogICAgICAgICAiYXR0cmlidXRlcy5oIiwKKyAgICAgICAgImNv
bnN0X2luaXQuaCIsCiAgICAgICAgICJtYWNyb3MuaCIsCiAgICAgICAgICJvcHRpbWl6YXRpb24u
aCIsCiAgICAgICAgICJwb3J0LmgiLAogICAgICAgICAidGhyZWFkX2Fubm90YXRpb25zLmgiLAog
ICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBB
QlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpjb25maWciLAot
ICAgICAgICAiOmR5bmFtaWNfYW5ub3RhdGlvbnMiLAogICAgIF0sCiApCiAKQEAgLTg5LDYgKzEy
NSwxMCBAQCBjY19saWJyYXJ5KAogICAgICAgICAiaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmgi
LAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMg
PSBzZWxlY3QoeworICAgICAgICAiLy9hYnNsOndpbmRvd3MiOiBbXSwKKyAgICAgICAgIi8vY29u
ZGl0aW9uczpkZWZhdWx0IjogWyItcHRocmVhZCJdLAorICAgIH0pICsgQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIHZpc2liaWxpdHkgPSBbCiAgICAgICAgICIvL2Fic2w6X19zdWJwYWNrYWdl
c19fIiwKICAgICBdLApAQCAtMTA4LDExICsxNDgsMTYgQEAgY2NfbGlicmFyeSgKICAgICAgICAg
ImludGVybmFsL2lkZW50aXR5LmgiLAogICAgICAgICAiaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxl
LmgiLAogICAgICAgICAiaW50ZXJuYWwvaW52b2tlLmgiLAorICAgICAgICAiaW50ZXJuYWwvc2No
ZWR1bGluZ19tb2RlLmgiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9
IFsKICAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAogICAgIF0sCisgICAgZGVwcyA9
IFsKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICBdLAogKQogCiBjY19s
aWJyYXJ5KApAQCAtMTI4LDcgKzE3Myw2IEBAIGNjX2xpYnJhcnkoCiAgICAgaGRycyA9IFsKICAg
ICAgICAgImNhbGxfb25jZS5oIiwKICAgICAgICAgImNhc3RzLmgiLAotICAgICAgICAiaW50ZXJu
YWwvYXRvbWljX2hvb2suaCIsCiAgICAgICAgICJpbnRlcm5hbC9jeWNsZWNsb2NrLmgiLAogICAg
ICAgICAiaW50ZXJuYWwvbG93X2xldmVsX3NjaGVkdWxpbmcuaCIsCiAgICAgICAgICJpbnRlcm5h
bC9wZXJfdGhyZWFkX3Rscy5oIiwKQEAgLTEzOCwxNSArMTgyLDIxIEBAIGNjX2xpYnJhcnkoCiAg
ICAgICAgICJpbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuaCIsCiAgICAgICAgICJpbnRlcm5hbC90
c2FuX211dGV4X2ludGVyZmFjZS5oIiwKICAgICAgICAgImludGVybmFsL3Vuc2NhbGVkY3ljbGVj
bG9jay5oIiwKLSAgICAgICAgImxvZ19zZXZlcml0eS5oIiwKICAgICBdLAogICAgIGNvcHRzID0g
QUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gc2VsZWN0KHsKKyAgICAgICAgIi8v
YWJzbDp3aW5kb3dzIjogW10sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLXB0
aHJlYWQiXSwKKyAgICB9KSArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwor
ICAgICAgICAiOmF0b21pY19ob29rIiwKICAgICAgICAgIjpiYXNlX2ludGVybmFsIiwKICAgICAg
ICAgIjpjb25maWciLAogICAgICAgICAiOmNvcmVfaGVhZGVycyIsCiAgICAgICAgICI6ZHluYW1p
Y19hbm5vdGF0aW9ucyIsCisgICAgICAgICI6bG9nX3NldmVyaXR5IiwKICAgICAgICAgIjpzcGlu
bG9ja193YWl0IiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKICAgICBdLAog
KQogCkBAIC0xNTUsOCArMjA1LDkgQEAgY2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAg
ICBzcmNzID0gWyJpbnRlcm5hbC9hdG9taWNfaG9va190ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgZGVwcyA9IFsKLSAgICAgICAgIjpiYXNlIiwKKyAgICAgICAgIjphdG9taWNfaG9vayIsCiAg
ICAgICAgICI6Y29yZV9oZWFkZXJzIiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3Qv
LzpndGVzdF9tYWluIiwKICAgICBdLApAQCAtMTY5LDYgKzIyMCw3IEBAIGNjX3Rlc3QoCiAgICAg
ICAgICJiaXRfY2FzdF90ZXN0LmNjIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6Y29yZV9oZWFkZXJzIiwKQEAgLTE4MSwxNCAr
MjMzLDEzIEBAIGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvdGhyb3dfZGVsZWdh
dGUuY2MiXSwKICAgICBoZHJzID0gWyJpbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5oIl0sCiAgICAg
Y29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBs
aW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgdmlzaWJpbGl0eSA9IFsKICAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAogICAg
IF0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpjb25maWciLAot
ICAgICAgICAiOmNvcmVfaGVhZGVycyIsCiAgICAgXSwKICkKIApAQCAtMTk2LDcgKzI0Nyw3IEBA
IGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJ0aHJvd19kZWxlZ2F0ZV90ZXN0IiwKICAgICBzcmNzID0g
WyJ0aHJvd19kZWxlZ2F0ZV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMg
KyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19G
TEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09Q
VFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjp0aHJv
d19kZWxlZ2F0ZSIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFp
biIsCkBAIC0yMDgsNiArMjU5LDcgQEAgY2NfbGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAg
ICAgaGRycyA9IFsiaW50ZXJuYWwvZXhjZXB0aW9uX3Rlc3RpbmcuaCJdLAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIHZpc2liaWxpdHkgPSBbCiAgICAgICAgICIvL2Fic2w6X19zdWJwYWNrYWdlc19fIiwKICAg
ICBdLApAQCAtMjIwLDYgKzI3Miw3IEBAIGNjX2xpYnJhcnkoCiBjY19saWJyYXJ5KAogICAgIG5h
bWUgPSAicHJldHR5X2Z1bmN0aW9uIiwKICAgICBoZHJzID0gWyJpbnRlcm5hbC9wcmV0dHlfZnVu
Y3Rpb24uaCJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHZp
c2liaWxpdHkgPSBbIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iXSwKICkKIApAQCAtMjI5LDE1ICsy
ODIsMTQgQEAgY2NfbGlicmFyeSgKICAgICBzcmNzID0gWyJpbnRlcm5hbC9leGNlcHRpb25fc2Fm
ZXR5X3Rlc3RpbmcuY2MiXSwKICAgICBoZHJzID0gWyJpbnRlcm5hbC9leGNlcHRpb25fc2FmZXR5
X3Rlc3RpbmcuaCJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJ
T05TX0ZMQUcsCi0gICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCi0gICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6
Y29uZmlnIiwKICAgICAgICAgIjpwcmV0dHlfZnVuY3Rpb24iLAogICAgICAgICAiLy9hYnNsL21l
bW9yeSIsCiAgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCiAgICAgICAgICIvL2Fi
c2wvc3RyaW5ncyIsCi0gICAgICAgICIvL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICAgICAgICAi
Ly9hYnNsL3V0aWxpdHkiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0
IiwKICAgICBdLAogKQpAQCAtMjQ2LDcgKzI5OCw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJl
eGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdCIsCiAgICAgc3JjcyA9IFsiZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0aW5nX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFC
U0xfRVhDRVBUSU9OU19GTEFHLAotICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdf
TElOS09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyAr
IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmV4Y2VwdGlv
bl9zYWZldHlfdGVzdGluZyIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKQEAgLTI2NCw2ICsz
MTYsNyBAQCBjY190ZXN0KAogICAgICAgICAiaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxlX3Rlc3Rp
bmcuaCIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmJhc2Vf
aW50ZXJuYWwiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4i
LApAQCAtMjc1LDYgKzMyOCw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAg
c3JjcyA9IFsiaW52b2tlX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAg
ICAgICAiOmJhc2VfaW50ZXJuYWwiLAogICAgICAgICAiLy9hYnNsL21lbW9yeSIsCkBAIC0yOTAs
NiArMzQ0LDcgQEAgY2NfbGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAgc3JjcyA9IFsi
c3BpbmxvY2tfdGVzdF9jb21tb24uY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAg
ICAgICAiOmJhc2UiLAogICAgICAgICAiOmNvcmVfaGVhZGVycyIsCkBAIC0zMDUsNyArMzYwLDcg
QEAgY2NfdGVzdCgKICAgICBzaXplID0gIm1lZGl1bSIsCiAgICAgc3JjcyA9IFsic3BpbmxvY2tf
dGVzdF9jb21tb24uY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKLSAgICB0YWdz
ID0gWyJub190ZXN0X3dhc20iXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICBkZXBzID0gWwogICAgICAgICAiOmJhc2UiLAogICAgICAgICAiOmNvcmVfaGVhZGVy
cyIsCkBAIC0zMTUsNiArMzcwLDM1IEBAIGNjX3Rlc3QoCiAgICAgXSwKICkKIAorY2NfbGlicmFy
eSgKKyAgICBuYW1lID0gInNwaW5sb2NrX2JlbmNobWFya19jb21tb24iLAorICAgIHRlc3Rvbmx5
ID0gMSwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9zcGlubG9ja19iZW5jaG1hcmsuY2MiXSwKKyAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKKyAgICB2aXNpYmlsaXR5ID0gWworICAgICAgICAiLy9hYnNsL2Jhc2U6X19wa2df
XyIsCisgICAgXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmJhc2UiLAorICAgICAgICAiOmJh
c2VfaW50ZXJuYWwiLAorICAgICAgICAiLy9hYnNsL3N5bmNocm9uaXphdGlvbiIsCisgICAgICAg
ICJAY29tX2dpdGh1Yl9nb29nbGVfYmVuY2htYXJrLy86YmVuY2htYXJrX21haW4iLAorICAgIF0s
CisgICAgYWx3YXlzbGluayA9IDEsCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gInNwaW5s
b2NrX2JlbmNobWFyayIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGNvcHRzID0gQUJTTF9ERUZB
VUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZp
c2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisgICAgZGVwcyA9IFsKKyAgICAg
ICAgIjpzcGlubG9ja19iZW5jaG1hcmtfY29tbW9uIiwKKyAgICBdLAorKQorCiBjY19saWJyYXJ5
KAogICAgIG5hbWUgPSAiZW5kaWFuIiwKICAgICBoZHJzID0gWwpAQCAtMzIyLDYgKzQwNiw3IEBA
IGNjX2xpYnJhcnkoCiAgICAgICAgICJpbnRlcm5hbC91bmFsaWduZWRfYWNjZXNzLmgiLAogICAg
IF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpjb25maWciLAogICAg
ICAgICAiOmNvcmVfaGVhZGVycyIsCkBAIC0zMzMsNyArNDE4LDYgQEAgY2NfdGVzdCgKICAgICBz
cmNzID0gWyJpbnRlcm5hbC9lbmRpYW5fdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAogICAgIGRlcHMgPSBbCi0gICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6Y29uZmln
IiwKICAgICAgICAgIjplbmRpYW4iLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8v
Omd0ZXN0X21haW4iLApAQCAtMzQ0LDkgKzQyOCw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJj
b25maWdfdGVzdCIsCiAgICAgc3JjcyA9IFsiY29uZmlnX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUywKLSAgICB0YWdzID0gWwotICAgICAgICAibm9fdGVzdF93YXNtIiwK
LSAgICBdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMg
PSBbCiAgICAgICAgICI6Y29uZmlnIiwKICAgICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb246
dGhyZWFkX3Bvb2wiLApAQCAtMzU4LDkgKzQ0MCw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJj
YWxsX29uY2VfdGVzdCIsCiAgICAgc3JjcyA9IFsiY2FsbF9vbmNlX3Rlc3QuY2MiXSwKICAgICBj
b3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKLSAgICB0YWdzID0gWwotICAgICAgICAibm9fdGVzdF93
YXNtIiwKLSAgICBdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6Y29yZV9oZWFkZXJzIiwKQEAg
LTM3Myw2ICs0NTMsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAicmF3X2xvZ2dpbmdfdGVzdCIs
CiAgICAgc3JjcyA9IFsicmF3X2xvZ2dpbmdfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRl
cHMgPSBbCiAgICAgICAgICI6YmFzZSIsCiAgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCkBAIC0z
ODUsNiArNDY2LDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0g
WyJpbnRlcm5hbC9zeXNpbmZvX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwog
ICAgICAgICAiOmJhc2UiLAogICAgICAgICAiLy9hYnNsL3N5bmNocm9uaXphdGlvbiIsCkBAIC0z
OTQsMTMgKzQ3NiwxMCBAQCBjY190ZXN0KAogCiBjY190ZXN0KAogICAgIG5hbWUgPSAibG93X2xl
dmVsX2FsbG9jX3Rlc3QiLAotICAgIHNpemUgPSAic21hbGwiLAorICAgIHNpemUgPSAibWVkaXVt
IiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2NfdGVzdC5jYyJdLAogICAg
IGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAotICAgIGxpbmtvcHRzID0gc2VsZWN0KHsKLSAgICAg
ICAgIi8vYWJzbDp3aW5kb3dzIjogW10sCi0gICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6
IFsiLXB0aHJlYWQiXSwKLSAgICB9KSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKICAgICB0YWdzID0gWyJub190ZXN0X2lvc194ODZfNjQiXSwKICAgICBkZXBzID0gWyI6
bWFsbG9jX2ludGVybmFsIl0sCiApCkBAIC00MTAsMTMgKzQ4OSw3IEBAIGNjX3Rlc3QoCiAgICAg
c2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5X3Rl
c3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKLSAgICBsaW5rb3B0cyA9IHNl
bGVjdCh7Ci0gICAgICAgICIvL2Fic2w6d2luZG93cyI6IFtdLAotICAgICAgICAiLy9jb25kaXRp
b25zOmRlZmF1bHQiOiBbIi1wdGhyZWFkIl0sCi0gICAgfSksCi0gICAgdGFncyA9IFsKLSAgICAg
ICAgIm5vX3Rlc3Rfd2FzbSIsCi0gICAgXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmJhc2UiLAogICAgICAgICAiOmNvcmVf
aGVhZGVycyIsCkBAIC00MjksNiArNTAyLDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gInRocmVh
ZF9pZGVudGl0eV9iZW5jaG1hcmsiLAogICAgIHNyY3MgPSBbImludGVybmFsL3RocmVhZF9pZGVu
dGl0eV9iZW5jaG1hcmsuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBs
aW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0gWyJiZW5jaG1hcmsi
XSwKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogICAgIGRlcHMg
PSBbCkBAIC00NDEsNiArNTE1LDcgQEAgY2NfdGVzdCgKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9
ICJiaXRzIiwKICAgICBoZHJzID0gWyJpbnRlcm5hbC9iaXRzLmgiXSwKKyAgICBsaW5rb3B0cyA9
IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWwogICAgICAgICAiLy9h
YnNsOl9fc3VicGFja2FnZXNfXyIsCiAgICAgXSwKQEAgLTQ1Miw4ICs1MjcsNDYgQEAgY2NfdGVz
dCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC9iaXRzX3Rlc3Qu
Y2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
REVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmJpdHMiLAogICAgICAg
ICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAogICAgIF0sCiApCisKK2Nj
X2xpYnJhcnkoCisgICAgbmFtZSA9ICJzY29wZWRfc2V0X2VudiIsCisgICAgdGVzdG9ubHkgPSAx
LAorICAgIHNyY3MgPSBbImludGVybmFsL3Njb3BlZF9zZXRfZW52LmNjIl0sCisgICAgaGRycyA9
IFsiaW50ZXJuYWwvc2NvcGVkX3NldF9lbnYuaCJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2w6X19zdWJw
YWNrYWdlc19fIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIjpiYXNlIl0sCispCisKK2NjX3Rlc3Qo
CisgICAgbmFtZSA9ICJzY29wZWRfc2V0X2Vudl90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwK
KyAgICBzcmNzID0gWyJpbnRlcm5hbC9zY29wZWRfc2V0X2Vudl90ZXN0LmNjIl0sCisgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpzY29wZWRfc2V0X2VudiIsCisgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVz
dCgKKyAgICBuYW1lID0gImxvZ19zZXZlcml0eV90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwK
KyAgICBzcmNzID0gWyJsb2dfc2V2ZXJpdHlfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRl
cHMgPSBbCisgICAgICAgICI6YmFzZSIsCisgICAgICAgICI6bG9nX3NldmVyaXR5IiwKKyAgICAg
ICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuZ24KaW5kZXgg
NmM1NDBmM2IyYmIyOWNhOTZlNDU2OTZhMWNiMzM1Y2NiNGEwYjFiZi4uMGM5ODFiNDliZDcxYWRm
Y2M3MTRlNTE2NWJjMDM1MTg3ODRlNGEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlMRC5n
bgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmduCkBAIC02LDYgKzYsNyBAQCBpbXBvcnQoIi8vYnVp
bGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCiAKIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CiAg
IHZpc2liaWxpdHkgPSBbCisgICAgIi8vbGliYXNzaXN0YW50LyoiLAogICAgICIvL3RoaXJkX3Bh
cnR5L3dlYnJ0Yy8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAogICAgICIv
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Q6Z3Rlc3QiLApAQCAtMTQsNiArMTUsNTIgQEAgaWYgKGJ1
aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KIH0KIAorc291cmNl
X3NldCgiYXRvbWljX2hvb2siKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1Ymxp
YyA9IFsKKyAgICAiaW50ZXJuYWwvYXRvbWljX2hvb2suaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAg
ICAiOmNvcmVfaGVhZGVycyIsCisgIF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxpdHkg
Kz0gWyAiLi4vKiIgXQorfQorCitzb3VyY2Vfc2V0KCJsb2dfc2V2ZXJpdHkiKSB7CisgIGNvbmZp
Z3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25m
aWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwK
KyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNs
X2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImxvZ19zZXZlcml0eS5jYyIs
CisgIF0KKyAgcHVibGljID0gWworICAgICJsb2dfc2V2ZXJpdHkuaCIsCisgIF0KKyAgZGVwcyA9
IFsKKyAgICAiOmNvcmVfaGVhZGVycyIsCisgIF0KK30KKworc291cmNlX3NldCgicmF3X2xvZ2dp
bmdfaW50ZXJuYWwiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6
Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHZpc2liaWxpdHkg
PSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIi4uLyoiIF0KK30KKwogc291cmNlX3NldCgic3Bpbmxv
Y2tfd2FpdCIpIHsKICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv
bWl1bV9jb2RlIiBdCiAgIGNvbmZpZ3MgKz0gWwpAQCAtODgsNiArMTM1LDcgQEAgc291cmNlX3Nl
dCgiY29yZV9oZWFkZXJzIikgewogICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCiAgIHB1YmxpYyA9IFsKICAgICAiYXR0
cmlidXRlcy5oIiwKKyAgICAiY29uc3RfaW5pdC5oIiwKICAgICAibWFjcm9zLmgiLAogICAgICJv
cHRpbWl6YXRpb24uaCIsCiAgICAgInBvcnQuaCIsCkBAIC05NSw3ICsxNDMsNiBAQCBzb3VyY2Vf
c2V0KCJjb3JlX2hlYWRlcnMiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiOmNvbmZpZyIsCi0g
ICAgIjpkeW5hbWljX2Fubm90YXRpb25zIiwKICAgXQogfQogCkBAIC0xMzYsNiArMTgzLDEwIEBA
IHNvdXJjZV9zZXQoImJhc2VfaW50ZXJuYWwiKSB7CiAgICAgImludGVybmFsL2lkZW50aXR5Lmgi
LAogICAgICJpbnRlcm5hbC9pbmxpbmVfdmFyaWFibGUuaCIsCiAgICAgImludGVybmFsL2ludm9r
ZS5oIiwKKyAgICAiaW50ZXJuYWwvc2NoZWR1bGluZ19tb2RlLmgiLAorICBdCisgIGRlcHMgPSBb
CisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAogICBdCiAgIHZpc2liaWxpdHkgPSBbXQogICB2
aXNpYmlsaXR5ICs9IFsgIi4uLyoiIF0KQEAgLTE1OSw3ICsyMTAsNiBAQCBzb3VyY2Vfc2V0KCJi
YXNlIikgewogICBwdWJsaWMgPSBbCiAgICAgImNhbGxfb25jZS5oIiwKICAgICAiY2FzdHMuaCIs
Ci0gICAgImludGVybmFsL2F0b21pY19ob29rLmgiLAogICAgICJpbnRlcm5hbC9jeWNsZWNsb2Nr
LmgiLAogICAgICJpbnRlcm5hbC9sb3dfbGV2ZWxfc2NoZWR1bGluZy5oIiwKICAgICAiaW50ZXJu
YWwvcGVyX3RocmVhZF90bHMuaCIsCkBAIC0xNjksMTQgKzIxOSwxNiBAQCBzb3VyY2Vfc2V0KCJi
YXNlIikgewogICAgICJpbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuaCIsCiAgICAgImludGVybmFs
L3RzYW5fbXV0ZXhfaW50ZXJmYWNlLmgiLAogICAgICJpbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xv
Y2suaCIsCi0gICAgImxvZ19zZXZlcml0eS5oIiwKICAgXQogICBkZXBzID0gWworICAgICI6YXRv
bWljX2hvb2siLAogICAgICI6YmFzZV9pbnRlcm5hbCIsCiAgICAgIjpjb25maWciLAogICAgICI6
Y29yZV9oZWFkZXJzIiwKICAgICAiOmR5bmFtaWNfYW5ub3RhdGlvbnMiLAorICAgICI6bG9nX3Nl
dmVyaXR5IiwKICAgICAiOnNwaW5sb2NrX3dhaXQiLAorICAgICIuLi9tZXRhOnR5cGVfdHJhaXRz
IiwKICAgXQogfQogCkBAIC0xOTYsNyArMjQ4LDYgQEAgc291cmNlX3NldCgidGhyb3dfZGVsZWdh
dGUiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjpiYXNlIiwKICAgICAiOmNvbmZpZyIsCi0gICAgIjpj
b3JlX2hlYWRlcnMiLAogICBdCiAgIHZpc2liaWxpdHkgPSBbXQogICB2aXNpYmlsaXR5ICs9IFsg
Ii4uLyoiIF0KQEAgLTI1MSwxMyArMzAyLDEyIEBAIHNvdXJjZV9zZXQoInByZXR0eV9mdW5jdGlv
biIpIHsKICMgICAgICJpbnRlcm5hbC9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcuaCIsCiAjICAg
XQogIyAgIGRlcHMgPSBbCi0jICAgICAiOmJhc2UiLAogIyAgICAgIjpjb25maWciLAogIyAgICAg
IjpwcmV0dHlfZnVuY3Rpb24iLAogIyAgICAgIi4uL21lbW9yeSIsCiAjICAgICAiLi4vbWV0YTp0
eXBlX3RyYWl0cyIsCiAjICAgICAiLi4vc3RyaW5ncyIsCi0jICAgICAiLi4vdHlwZXM6b3B0aW9u
YWwiLAorIyAgICAgIi4uL3V0aWxpdHkiLAogIyAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAjICAg
XQogIyB9CkBAIC0zMTQsMyArMzY0LDIzIEBAIHNvdXJjZV9zZXQoImJpdHMiKSB7CiAgIHZpc2li
aWxpdHkgPSBbXQogICB2aXNpYmlsaXR5ICs9IFsgIi4uLyoiIF0KIH0KKworc291cmNlX3NldCgi
c2NvcGVkX3NldF9lbnYiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisg
ICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVi
bGljID0gWworICAgICJpbnRlcm5hbC9zY29wZWRfc2V0X2Vudi5oIiwKKyAgXQorICBzb3VyY2Vz
ID0gWworICAgICJpbnRlcm5hbC9zY29wZWRfc2V0X2Vudi5jYyIsCisgIF0KKyAgZGVwcyA9IFsK
KyAgICAiOmJhc2UiLAorICBdCisgIHZpc2liaWxpdHkgPSBbXQorICB2aXNpYmlsaXR5ICs9IFsg
Ii4uLyoiIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL0NNYWtlTGlzdHMudHh0CmluZGV4IDA0YTZlYjMxOTU1YjYwMjIwMmFkNTk3YmEyYjM0
ZWMwNGJjN2U1NTcuLmNjNzk2MGUzYWU4ODQxYmUwOGNkYTI2ZmEwZmI0ZDI5ZGE0MDJhM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQsMzc0ICsxNCw1
MTkgQEAKICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAjCiAKLWxpc3QoQVBQRU5E
IEJBU0VfUFVCTElDX0hFQURFUlMKLSAgImF0dHJpYnV0ZXMuaCIKLSAgImNhbGxfb25jZS5oIgot
ICAiY2FzdHMuaCIKLSAgImNvbmZpZy5oIgotICAiZHluYW1pY19hbm5vdGF0aW9ucy5oIgotICAi
bG9nX3NldmVyaXR5LmgiCi0gICJtYWNyb3MuaCIKLSAgIm9wdGltaXphdGlvbi5oIgotICAicG9s
aWN5X2NoZWNrcy5oIgotICAicG9ydC5oIgotICAidGhyZWFkX2Fubm90YXRpb25zLmgiCi0pCi0K
LQotbGlzdChBUFBFTkQgQkFTRV9JTlRFUk5BTF9IRUFERVJTCi0gICJpbnRlcm5hbC9hdG9taWNf
aG9vay5oIgotICAiaW50ZXJuYWwvYml0cy5oIgotICAiaW50ZXJuYWwvY3ljbGVjbG9jay5oIgot
ICAiaW50ZXJuYWwvZGlyZWN0X21tYXAuaCIKLSAgImludGVybmFsL2VuZGlhbi5oIgotICAiaW50
ZXJuYWwvZXhjZXB0aW9uX3Rlc3RpbmcuaCIKLSAgImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlf
dGVzdGluZy5oIgotICAiaW50ZXJuYWwvaGlkZV9wdHIuaCIKLSAgImludGVybmFsL2lkZW50aXR5
LmgiCi0gICJpbnRlcm5hbC9pbnZva2UuaCIKLSAgImludGVybmFsL2lubGluZV92YXJpYWJsZS5o
IgotICAiaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmgiCi0gICJpbnRlcm5hbC9sb3dfbGV2ZWxf
c2NoZWR1bGluZy5oIgotICAiaW50ZXJuYWwvcGVyX3RocmVhZF90bHMuaCIKLSAgImludGVybmFs
L3ByZXR0eV9mdW5jdGlvbi5oIgotICAiaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKLSAgImludGVy
bmFsL3NjaGVkdWxpbmdfbW9kZS5oIgotICAiaW50ZXJuYWwvc3BpbmxvY2suaCIKLSAgImludGVy
bmFsL3NwaW5sb2NrX3dhaXQuaCIKLSAgImludGVybmFsL3N5c2luZm8uaCIKLSAgImludGVybmFs
L3RocmVhZF9pZGVudGl0eS5oIgotICAiaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaCIKLSAgImlu
dGVybmFsL3RzYW5fbXV0ZXhfaW50ZXJmYWNlLmgiCi0gICJpbnRlcm5hbC91bmFsaWduZWRfYWNj
ZXNzLmgiCi0gICJpbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaCIKLSkKLQotCi0jIGFic2xf
YmFzZSBtYWluIGxpYnJhcnkKLWxpc3QoQVBQRU5EIEJBU0VfU1JDCi0gICJpbnRlcm5hbC9jeWNs
ZWNsb2NrLmNjIgotICAiaW50ZXJuYWwvcmF3X2xvZ2dpbmcuY2MiCi0gICJpbnRlcm5hbC9zcGlu
bG9jay5jYyIKLSAgImludGVybmFsL3N5c2luZm8uY2MiCi0gICJpbnRlcm5hbC90aHJlYWRfaWRl
bnRpdHkuY2MiCi0gICJpbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suY2MiCi0gICJpbnRlcm5h
bC9sb3dfbGV2ZWxfYWxsb2MuY2MiCi0gICR7QkFTRV9QVUJMSUNfSEVBREVSU30KLSAgJHtCQVNF
X0lOVEVSTkFMX0hFQURFUlN9Ci0pCi0KLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJz
bF9iYXNlCi0gIFNPVVJDRVMKLSAgICAke0JBU0VfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0g
ICAgYWJzbF9keW5hbWljX2Fubm90YXRpb25zCi0gICAgYWJzbF9zcGlubG9ja193YWl0Ci0gIEVY
UE9SVF9OQU1FCi0gICAgYmFzZQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgYXRvbWlj
X2hvb2sKKyAgSERSUworICAgICJpbnRlcm5hbC9hdG9taWNfaG9vay5oIgorICBDT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0NPUFRTfQogKQogCi0jIHRocm93IGRlbGVnYXRlIGxpYnJhcnkKLXNl
dChUSFJPV19ERUxFR0FURV9TUkMgImludGVybmFsL3Rocm93X2RlbGVnYXRlLmNjIikKLQotYWJz
bF9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX3Rocm93X2RlbGVnYXRlCi0gIFNPVVJDRVMK
LSAgICAke1RIUk9XX0RFTEVHQVRFX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7VEhS
T1dfREVMRUdBVEVfUFVCTElDX0xJQlJBUklFU30KLSAgUFJJVkFURV9DT01QSUxFX0ZMQUdTCi0g
ICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KLSAgRVhQT1JUX05BTUUKLSAgICB0aHJvd19kZWxl
Z2F0ZQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgbG9nX3NldmVyaXR5CisgIEhEUlMK
KyAgICAibG9nX3NldmVyaXR5LmgiCisgIFNSQ1MKKyAgICAibG9nX3NldmVyaXR5LmNjIgorICBE
RVBTCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRf
Q09QVFN9CiApCiAKLWlmKEJVSUxEX1RFU1RJTkcpCi0gICMgZXhjZXB0aW9uLXNhZmV0eSB0ZXN0
aW5nIGxpYnJhcnkKLSAgc2V0KEVYQ0VQVElPTl9TQUZFVFlfVEVTVElOR19TUkMKLSAgICAiaW50
ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgiCi0gICAgImludGVybmFsL2V4Y2VwdGlv
bl9zYWZldHlfdGVzdGluZy5jYyIKLSAgKQotICBzZXQoRVhDRVBUSU9OX1NBRkVUWV9URVNUSU5H
X1BVQkxJQ19MSUJSQVJJRVMKLSAgICAke0FCU0xfVEVTVF9DT01NT05fTElCUkFSSUVTfQotICAg
IGFic2w6OmJhc2UKLSAgICBhYnNsOjptZW1vcnkKLSAgICBhYnNsOjptZXRhCi0gICAgYWJzbDo6
c3RyaW5ncwotICAgIGFic2w6Om9wdGlvbmFsCi0gICAgZ3Rlc3QKLSAgKQotCi1hYnNsX2xpYnJh
cnkoCi0gIFRBUkdFVAotICAgIGFic2xfYmFzZV9pbnRlcm5hbF9leGNlcHRpb25fc2FmZXR5X3Rl
c3RpbmcKLSAgU09VUkNFUwotICAgICR7RVhDRVBUSU9OX1NBRkVUWV9URVNUSU5HX1NSQ30KLSAg
UFVCTElDX0xJQlJBUklFUwotICAgICR7RVhDRVBUSU9OX1NBRkVUWV9URVNUSU5HX1BVQkxJQ19M
SUJSQVJJRVN9Ci0gIFBSSVZBVEVfQ09NUElMRV9GTEFHUwotICAgICR7QUJTTF9FWENFUFRJT05T
X0ZMQUd9CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYXdfbG9nZ2luZ19pbnRlcm5h
bAorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQogKQotZW5kaWYoKQogCi0KLSMg
ZHluYW1pY19hbm5vdGF0aW9ucyBsaWJyYXJ5Ci1zZXQoRFlOQU1JQ19BTk5PVEFUSU9OU19TUkMg
ImR5bmFtaWNfYW5ub3RhdGlvbnMuY2MiKQotCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAg
IGFic2xfZHluYW1pY19hbm5vdGF0aW9ucwotICBTT1VSQ0VTCi0gICAgJHtEWU5BTUlDX0FOTk9U
QVRJT05TX1NSQ30KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHNwaW5sb2NrX3dhaXQK
KyAgSERSUworICAgICJpbnRlcm5hbC9zY2hlZHVsaW5nX21vZGUuaCIKKyAgICAiaW50ZXJuYWwv
c3BpbmxvY2tfd2FpdC5oIgorICBTUkNTCisgICAgImludGVybmFsL3NwaW5sb2NrX2FrYXJvcy5p
bmMiCisgICAgImludGVybmFsL3NwaW5sb2NrX2xpbnV4LmluYyIKKyAgICAiaW50ZXJuYWwvc3Bp
bmxvY2tfcG9zaXguaW5jIgorICAgICJpbnRlcm5hbC9zcGlubG9ja193YWl0LmNjIgorICAgICJp
bnRlcm5hbC9zcGlubG9ja193aW4zMi5pbmMiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRf
Q09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKICkKIAotCi0jIHNwaW5sb2Nr
X3dhaXQgbGlicmFyeQotc2V0KFNQSU5MT0NLX1dBSVRfU1JDICJpbnRlcm5hbC9zcGlubG9ja193
YWl0LmNjIikKLQotYWJzbF9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX3NwaW5sb2NrX3dh
aXQKLSAgU09VUkNFUwotICAgICR7U1BJTkxPQ0tfV0FJVF9TUkN9CithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICBjb25maWcKKyAgSERSUworICAgICJjb25maWcuaCIKKyAgICAicG9saWN5
X2NoZWNrcy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBQVUJMSUMK
ICkKIAotCi0jIG1hbGxvY19pbnRlcm5hbCBsaWJyYXJ5Ci1saXN0KEFQUEVORCBNQUxMT0NfSU5U
RVJOQUxfU1JDCi0gICJpbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuY2MiCithYnNsX2NjX2xpYnJh
cnkoCisgIE5BTUUKKyAgICBkeW5hbWljX2Fubm90YXRpb25zCisgIEhEUlMKKyAgICAiZHluYW1p
Y19hbm5vdGF0aW9ucy5oIgorICBTUkNTCisgICAgImR5bmFtaWNfYW5ub3RhdGlvbnMuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFRklORVMKKyAgICAiX19DTEFO
R19TVVBQT1JUX0RZTl9BTk5PVEFUSU9OX18iCisgIFBVQkxJQwogKQogCi1hYnNsX2xpYnJhcnko
Ci0gIFRBUkdFVAotICAgIGFic2xfbWFsbG9jX2ludGVybmFsCi0gIFNPVVJDRVMKLSAgICAke01B
TExPQ19JTlRFUk5BTF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsX2R5bmFtaWNf
YW5ub3RhdGlvbnMKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGNvcmVfaGVhZGVycwor
ICBIRFJTCisgICAgImF0dHJpYnV0ZXMuaCIKKyAgICAiY29uc3RfaW5pdC5oIgorICAgICJtYWNy
b3MuaCIKKyAgICAib3B0aW1pemF0aW9uLmgiCisgICAgInBvcnQuaCIKKyAgICAidGhyZWFkX2Fu
bm90YXRpb25zLmgiCisgICAgImludGVybmFsL3RocmVhZF9hbm5vdGF0aW9ucy5oIgorICBDT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29uZmlnCisg
IFBVQkxJQwogKQogCi0KLQotIwotIyMgVEVTVFMKLSMKLQotIyBjYWxsIG9uY2UgdGVzdAotc2V0
KEFUT01JQ19IT09LX1RFU1RfU1JDICJpbnRlcm5hbC9hdG9taWNfaG9va190ZXN0LmNjIikKLXNl
dChBVE9NSUNfSE9PS19URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSkKLQotYWJzbF90
ZXN0KAotICBUQVJHRVQKLSAgICBhdG9taWNfaG9va190ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0FU
T01JQ19IT09LX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtBVE9NSUNfSE9P
S19URVNUX1BVQkxJQ19MSUJSQVJJRVN9CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBt
YWxsb2NfaW50ZXJuYWwKKyAgSERSUworICAgICJpbnRlcm5hbC9kaXJlY3RfbW1hcC5oIgorICAg
ICJpbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9sb3df
bGV2ZWxfYWxsb2MuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29yZV9oZWFk
ZXJzCisgICAgYWJzbDo6ZHluYW1pY19hbm5vdGF0aW9ucworICAgIGFic2w6OnNwaW5sb2NrX3dh
aXQKKyAgICBUaHJlYWRzOjpUaHJlYWRzCiApCiAKLQotIyBjYWxsIG9uY2UgdGVzdAotc2V0KENB
TExfT05DRV9URVNUX1NSQyAiY2FsbF9vbmNlX3Rlc3QuY2MiKQotc2V0KENBTExfT05DRV9URVNU
X1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSBhYnNsOjpzeW5jaHJvbml6YXRpb24pCi0KLWFi
c2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgY2FsbF9vbmNlX3Rlc3QKLSAgU09VUkNFUwotICAgICR7
Q0FMTF9PTkNFX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtDQUxMX09OQ0Vf
VEVTVF9QVUJMSUNfTElCUkFSSUVTfQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgYmFz
ZV9pbnRlcm5hbAorICBIRFJTCisgICAgImludGVybmFsL2hpZGVfcHRyLmgiCisgICAgImludGVy
bmFsL2lkZW50aXR5LmgiCisgICAgImludGVybmFsL2lubGluZV92YXJpYWJsZS5oIgorICAgICJp
bnRlcm5hbC9pbnZva2UuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAg
REVQUworICAgIGFic2w6OnR5cGVfdHJhaXRzCiApCiAKLQotIyB0ZXN0IGJpdF9jYXN0X3Rlc3QK
LXNldChCSVRfQ0FTVF9URVNUX1NSQyAiYml0X2Nhc3RfdGVzdC5jYyIpCi0KLWFic2xfdGVzdCgK
LSAgVEFSR0VUCi0gICAgYml0X2Nhc3RfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtCSVRfQ0FTVF9U
RVNUX1NSQ30KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGJhc2UKKyAgSERSUworICAg
ICJjYWxsX29uY2UuaCIKKyAgICAiY2FzdHMuaCIKKyAgICAiaW50ZXJuYWwvY3ljbGVjbG9jay5o
IgorICAgICJpbnRlcm5hbC9sb3dfbGV2ZWxfc2NoZWR1bGluZy5oIgorICAgICJpbnRlcm5hbC9w
ZXJfdGhyZWFkX3Rscy5oIgorICAgICJpbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorICAgICJpbnRl
cm5hbC9zcGlubG9jay5oIgorICAgICJpbnRlcm5hbC9zeXNpbmZvLmgiCisgICAgImludGVybmFs
L3RocmVhZF9pZGVudGl0eS5oIgorICAgICJpbnRlcm5hbC90c2FuX211dGV4X2ludGVyZmFjZS5o
IgorICAgICJpbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaCIKKyAgICAibG9nX3NldmVyaXR5
LmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvY3ljbGVjbG9jay5jYyIKKyAgICAiaW50ZXJuYWwv
cmF3X2xvZ2dpbmcuY2MiCisgICAgImludGVybmFsL3NwaW5sb2NrLmNjIgorICAgICJpbnRlcm5h
bC9zeXNpbmZvLmNjIgorICAgICJpbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuY2MiCisgICAgImlu
dGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5jYyIKKyAgICAibG9nX3NldmVyaXR5LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YXRvbWlj
X2hvb2sKKyAgICBhYnNsOjpiYXNlX2ludGVybmFsCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJz
bDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZHluYW1pY19hbm5vdGF0aW9ucworICAgIGFic2w6
OmxvZ19zZXZlcml0eQorICAgIGFic2w6OnNwaW5sb2NrX3dhaXQKKyAgICBhYnNsOjp0eXBlX3Ry
YWl0cworICAgIFRocmVhZHM6OlRocmVhZHMKKyAgUFVCTElDCiApCiAKK2Fic2xfY2NfbGlicmFy
eSgKKyAgTkFNRQorICAgIHRocm93X2RlbGVnYXRlCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdGhy
b3dfZGVsZWdhdGUuaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgICAke0FCU0xfRVhDRVBUSU9O
U19GTEFHfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorKQogCi0jIHRlc3QgYWJzbF90aHJvd19k
ZWxlZ2F0ZV90ZXN0Ci1zZXQoVEhST1dfREVMRUdBVEVfVEVTVF9TUkMgInRocm93X2RlbGVnYXRl
X3Rlc3QuY2MiKQotc2V0KFRIUk9XX0RFTEVHQVRFX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNs
OjpiYXNlIGFic2xfdGhyb3dfZGVsZWdhdGUpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAg
dGhyb3dfZGVsZWdhdGVfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtUSFJPV19ERUxFR0FURV9URVNU
X1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7VEhST1dfREVMRUdBVEVfVEVTVF9QVUJM
SUNfTElCUkFSSUVTfQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZXhjZXB0aW9uX3Rl
c3RpbmcKKyAgSERSUworICAgICJpbnRlcm5hbC9leGNlcHRpb25fdGVzdGluZy5oIgorICBDT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29uZmlnCisg
ICAgZ3Rlc3QKKyAgVEVTVE9OTFkKICkKIAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAg
cHJldHR5X2Z1bmN0aW9uCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvcHJldHR5X2Z1bmN0aW9uLmgi
CisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CispCiAKLSMgdGVzdCBpbnZva2Vf
dGVzdAotc2V0KElOVk9LRV9URVNUX1NSQyAiaW52b2tlX3Rlc3QuY2MiKQotc2V0KElOVk9LRV9U
RVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3RyaW5ncykKK2Fic2xfY2NfbGlicmFyeSgKKyAg
TkFNRQorICAgIGV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZworICBIRFJTCisgICAgImludGVybmFs
L2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oIgorICBTUkNTCisgICAgImludGVybmFsL2V4Y2Vw
dGlvbl9zYWZldHlfdGVzdGluZy5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30K
KyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENF
UFRJT05TX0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNs
OjpwcmV0dHlfZnVuY3Rpb24KKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjptZXRhCisgICAg
YWJzbDo6c3RyaW5ncworICAgIGFic2w6OnV0aWxpdHkKKyAgICBndGVzdAorICBURVNUT05MWQor
KQogCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIGludm9rZV90ZXN0Ci0gIFNPVVJDRVMKLSAg
ICAke0lOVk9LRV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7SU5WT0tFX1RF
U1RfUFVCTElDX0xJQlJBUklFU30KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGFic2xfZXhj
ZXB0aW9uX3NhZmV0eV90ZXN0aW5nX3Rlc3QKKyAgU1JDUworICAgICJleGNlcHRpb25fc2FmZXR5
X3Rlc3RpbmdfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgICAk
e0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05T
X0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpleGNlcHRpb25fc2FmZXR5X3Rlc3Rp
bmcKKyAgICBhYnNsOjptZW1vcnkKKyAgICBndGVzdF9tYWluCiApCiAKK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQorICAgIGF0b21pY19ob29rX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9hdG9t
aWNfaG9va190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBT
CisgICAgYWJzbDo6YXRvbWljX2hvb2sKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBndGVz
dF9tYWluCispCiAKLSMgdGVzdCBpbmxpbmVfdmFyaWFibGVfdGVzdAotbGlzdChBUFBFTkQgSU5M
SU5FX1ZBUklBQkxFX1RFU1RfU1JDCi0gICJpbnRlcm5hbC9pbmxpbmVfdmFyaWFibGVfdGVzdGlu
Zy5oIgotICAiaW5saW5lX3ZhcmlhYmxlX3Rlc3QuY2MiCi0gICJpbmxpbmVfdmFyaWFibGVfdGVz
dF9hLmNjIgotICAiaW5saW5lX3ZhcmlhYmxlX3Rlc3RfYi5jYyIKK2Fic2xfY2NfdGVzdCgKKyAg
TkFNRQorICAgIGJpdF9jYXN0X3Rlc3QKKyAgU1JDUworICAgICJiaXRfY2FzdF90ZXN0LmNjIgor
ICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQor
ICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGd0ZXN0X21haW4KICkKIAotc2V0KElOTElORV9W
QVJJQUJMRV9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSkKK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQorICAgIHRocm93X2RlbGVnYXRlX3Rlc3QKKyAgU1JDUworICAgICJ0aHJvd19kZWxl
Z2F0ZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6YmFzZQorICAgIGFic2w6OnRocm93X2RlbGVnYXRlCisgICAgZ3Rlc3RfbWFpbgor
KQogCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgaW5s
aW5lX3ZhcmlhYmxlX3Rlc3QKLSAgU09VUkNFUwotICAgICR7SU5MSU5FX1ZBUklBQkxFX1RFU1Rf
U1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtJTkxJTkVfVkFSSUFCTEVfVEVTVF9QVUJM
SUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgImludGVybmFsL2lubGluZV92YXJpYWJsZV90ZXN0
aW5nLmgiCisgICAgImlubGluZV92YXJpYWJsZV90ZXN0LmNjIgorICAgICJpbmxpbmVfdmFyaWFi
bGVfdGVzdF9hLmNjIgorICAgICJpbmxpbmVfdmFyaWFibGVfdGVzdF9iLmNjIgorICBDT1BUUwor
ICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZV9pbnRlcm5hbAor
ICAgIGd0ZXN0X21haW4KICkKIAorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgaW52b2tlX3Rl
c3QKKyAgU1JDUworICAgICJpbnZva2VfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVT
VF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2VfaW50ZXJuYWwKKyAgICBhYnNsOjptZW1v
cnkKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCiAKLSMg
dGVzdCBzcGlubG9ja190ZXN0X2NvbW1vbgotc2V0KFNQSU5MT0NLX1RFU1RfQ09NTU9OX1NSQyAi
c3BpbmxvY2tfdGVzdF9jb21tb24uY2MiKQotc2V0KFNQSU5MT0NLX1RFU1RfQ09NTU9OX1BVQkxJ
Q19MSUJSQVJJRVMgYWJzbDo6YmFzZSBhYnNsOjpzeW5jaHJvbml6YXRpb24pCi0KLWFic2xfdGVz
dCgKLSAgVEFSR0VUCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKICAgICBzcGlubG9ja190ZXN0
X2NvbW1vbgotICBTT1VSQ0VTCi0gICAgJHtTUElOTE9DS19URVNUX0NPTU1PTl9TUkN9Ci0gIFBV
QkxJQ19MSUJSQVJJRVMKLSAgICAke1NQSU5MT0NLX1RFU1RfQ09NTU9OX1BVQkxJQ19MSUJSQVJJ
RVN9CisgIFNSQ1MKKyAgICAic3BpbmxvY2tfdGVzdF9jb21tb24uY2MiCisgIENPUFRTCisgICAg
JHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29y
ZV9oZWFkZXJzCisgICAgYWJzbDo6c3BpbmxvY2tfd2FpdAorICAgIGFic2w6OnN5bmNocm9uaXph
dGlvbgorICAgIGd0ZXN0CisgIFRFU1RPTkxZCiApCiAKLQotIyB0ZXN0IHNwaW5sb2NrX3Rlc3QK
LXNldChTUElOTE9DS19URVNUX1NSQyAic3BpbmxvY2tfdGVzdF9jb21tb24uY2MiKQotc2V0KFNQ
SU5MT0NLX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2w6OnN5bmNocm9uaXph
dGlvbikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKKyMgT24gYmF6ZWwgQlVJTEQgdGhpcyB0YXJn
ZXQgdXNlICJhbHdheXNsaW5rID0gMSIgd2hpY2ggaXMgbm90IGltcGxlbWVudGVkIGhlcmUKK2Fi
c2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHNwaW5sb2NrX3Rlc3QKLSAgU09VUkNFUwotICAgICR7
U1BJTkxPQ0tfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1NQSU5MT0NLX1RF
U1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJzcGlubG9ja190ZXN0X2NvbW1vbi5j
YyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJh
c2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpzcGlubG9ja193YWl0CisgICAg
YWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgZ3Rlc3RfbWFpbgogKQogCithYnNsX2NjX2xpYnJh
cnkoCisgIE5BTUUKKyAgICBlbmRpYW4KKyAgSERSUworICAgICJpbnRlcm5hbC9lbmRpYW4uaCIK
KyAgICAiaW50ZXJuYWwvdW5hbGlnbmVkX2FjY2Vzcy5oIgorICBDT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29yZV9o
ZWFkZXJzCisgIFBVQkxJQworKQogCi0jIHRlc3QgZW5kaWFuX3Rlc3QKLXNldChFTkRJQU5fVEVT
VF9TUkMgImludGVybmFsL2VuZGlhbl90ZXN0LmNjIikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQK
K2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIGVuZGlhbl90ZXN0Ci0gIFNPVVJDRVMKLSAgICAk
e0VORElBTl9URVNUX1NSQ30KKyAgU1JDUworICAgICJpbnRlcm5hbC9lbmRpYW5fdGVzdC5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UK
KyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjplbmRpYW4KKyAgICBndGVzdF9tYWluCiApCiAK
LQotIyB0ZXN0IGNvbmZpZ190ZXN0Ci1zZXQoQ09ORklHX1RFU1RfU1JDICJjb25maWdfdGVzdC5j
YyIpCi1zZXQoQ09ORklHX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2w6OnN5
bmNocm9uaXphdGlvbikKLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5B
TUUKICAgICBjb25maWdfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtDT05GSUdfVEVTVF9TUkN9Ci0g
IFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0NPTkZJR19URVNUX1BVQkxJQ19MSUJSQVJJRVN9Cisg
IFNSQ1MKKyAgICAiY29uZmlnX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24K
KyAgICBndGVzdF9tYWluCiApCiAKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGNhbGxfb25j
ZV90ZXN0CisgIFNSQ1MKKyAgICAiY2FsbF9vbmNlX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9o
ZWFkZXJzCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgZ3Rlc3RfbWFpbgorKQogCi0j
IHRlc3QgcmF3X2xvZ2dpbmdfdGVzdAotc2V0KFJBV19MT0dHSU5HX1RFU1RfU1JDICJyYXdfbG9n
Z2luZ190ZXN0LmNjIikKLXNldChSQVdfTE9HR0lOR19URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJz
bDo6YmFzZSBhYnNsOjpzdHJpbmdzKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190
ZXN0KAorICBOQU1FCiAgICAgcmF3X2xvZ2dpbmdfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtSQVdf
TE9HR0lOR19URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7UkFXX0xPR0dJTkdf
VEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgInJhd19sb2dnaW5nX3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNl
CisgICAgYWJzbDo6c3RyaW5ncworICAgIGd0ZXN0X21haW4KICkKIAotCi0jIHRlc3Qgc3lzaW5m
b190ZXN0Ci1zZXQoU1lTSU5GT19URVNUX1NSQyAiaW50ZXJuYWwvc3lzaW5mb190ZXN0LmNjIikK
LXNldChTWVNJTkZPX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2w6OnN5bmNo
cm9uaXphdGlvbikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQogICAgIHN5c2luZm9fdGVzdAotICBTT1VSQ0VTCi0gICAgJHtTWVNJTkZPX1RFU1RfU1JDfQot
ICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtTWVNJTkZPX1RFU1RfUFVCTElDX0xJQlJBUklFU30K
KyAgU1JDUworICAgICJpbnRlcm5hbC9zeXNpbmZvX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6c3luY2hy
b25pemF0aW9uCisgICAgZ3Rlc3RfbWFpbgogKQogCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAg
ICBsb3dfbGV2ZWxfYWxsb2NfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL2xvd19sZXZlbF9h
bGxvY190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6bWFsbG9jX2ludGVybmFsCisgICAgVGhyZWFkczo6VGhyZWFkcworKQogCi0jIHRl
c3QgbG93X2xldmVsX2FsbG9jX3Rlc3QKLXNldChMT1dfTEVWRUxfQUxMT0NfVEVTVF9TUkMgImlu
dGVybmFsL2xvd19sZXZlbF9hbGxvY190ZXN0LmNjIikKLXNldChMT1dfTEVWRUxfQUxMT0NfVEVT
VF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UpCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAg
ICB0aHJlYWRfaWRlbnRpdHlfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3RocmVhZF9pZGVu
dGl0eV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnN5bmNocm9u
aXphdGlvbgorICAgIFRocmVhZHM6OlRocmVhZHMKKyAgICBndGVzdF9tYWluCispCiAKLWFic2xf
dGVzdCgKLSAgVEFSR0VUCi0gICAgbG93X2xldmVsX2FsbG9jX3Rlc3QKLSAgU09VUkNFUwotICAg
ICR7TE9XX0xFVkVMX0FMTE9DX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtM
T1dfTEVWRUxfQUxMT0NfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorYWJzbF9jY19saWJyYXJ5KAor
ICBOQU1FCisgICAgYml0cworICBIRFJTCisgICAgImludGVybmFsL2JpdHMuaCIKKyAgQ09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvcmVfaGVhZGVy
cwogKQogCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBiaXRzX3Rlc3QKKyAgU1JDUworICAg
ICJpbnRlcm5hbC9iaXRzX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpiaXRzCisgICAgZ3Rlc3RfbWFpbgorKQogCi0jIHRlc3QgdGhy
ZWFkX2lkZW50aXR5X3Rlc3QKLXNldChUSFJFQURfSURFTlRJVFlfVEVTVF9TUkMgImludGVybmFs
L3RocmVhZF9pZGVudGl0eV90ZXN0LmNjIikKLXNldChUSFJFQURfSURFTlRJVFlfVEVTVF9QVUJM
SUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbDo6c3luY2hyb25pemF0aW9uKQorYWJzbF9jY19s
aWJyYXJ5KAorICBOQU1FCisgICAgc2NvcGVkX3NldF9lbnYKKyAgU1JDUworICAgICJpbnRlcm5h
bC9zY29wZWRfc2V0X2Vudi5jYyIKKyAgSERSUworICAgICJpbnRlcm5hbC9zY29wZWRfc2V0X2Vu
di5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6YmFzZQorKQogCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIHRocmVhZF9pZGVudGl0eV90
ZXN0Ci0gIFNPVVJDRVMKLSAgICAke1RIUkVBRF9JREVOVElUWV9URVNUX1NSQ30KLSAgUFVCTElD
X0xJQlJBUklFUwotICAgICR7VEhSRUFEX0lERU5USVRZX1RFU1RfUFVCTElDX0xJQlJBUklFU30K
K2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHNjb3BlZF9zZXRfZW52X3Rlc3QKKyAgU1JDUwor
ICAgICJpbnRlcm5hbC9zY29wZWRfc2V0X2Vudl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJT
TF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c2NvcGVkX3NldF9lbnYKKyAgICBndGVz
dF9tYWluCiApCiAKLSN0ZXN0IGV4Y2VwdGlvbnNfc2FmZXR5X3Rlc3RpbmdfdGVzdAotc2V0KEVY
Q0VQVElPTl9TQUZFVFlfVEVTVElOR19URVNUX1NSQyAiZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5n
X3Rlc3QuY2MiKQotc2V0KEVYQ0VQVElPTl9TQUZFVFlfVEVTVElOR19URVNUX1BVQkxJQ19MSUJS
QVJJRVMKLSAgYWJzbDo6YmFzZQotICBhYnNsX2Jhc2VfaW50ZXJuYWxfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0aW5nCi0gIGFic2w6Om1lbW9yeQotICBhYnNsOjptZXRhCi0gIGFic2w6OnN0cmluZ3MK
LSAgYWJzbDo6b3B0aW9uYWwKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGNtYWtlX3RocmVh
ZF90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvY21ha2VfdGhyZWFkX3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCiApCiAK
LWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgYWJzbF9leGNlcHRpb25fc2FmZXR5X3Rlc3Rpbmdf
dGVzdAotICBTT1VSQ0VTCi0gICAgJHtFWENFUFRJT05fU0FGRVRZX1RFU1RJTkdfVEVTVF9TUkN9
Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0VYQ0VQVElPTl9TQUZFVFlfVEVTVElOR19URVNU
X1BVQkxJQ19MSUJSQVJJRVN9Ci0gIFBSSVZBVEVfQ09NUElMRV9GTEFHUwotICAgICR7QUJTTF9F
WENFUFRJT05TX0ZMQUd9CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBsb2dfc2V2ZXJpdHlf
dGVzdAorICBTUkNTCisgICAgImxvZ19zZXZlcml0eV90ZXN0LmNjIgorICBERVBTCisgICAgYWJz
bDo6YmFzZQorICAgIGFic2w6OmxvZ19zZXZlcml0eQorICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFp
bgogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9hdHRyaWJ1dGVzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2F0
dHJpYnV0ZXMuaAppbmRleCBlODUwMDIyNDQ0M2JjZTViZjY1YmE1Y2UxZmNkMDBkOGM3MDQ0Yzhm
Li5hN2RhNjJhZjczZTU2YzhmYjRiMTQ0ODE2YWI0ZGI2YTk5YTg1ZDA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2F0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaApAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtODAsNyArODAsNyBAQAog
Ly8KIC8vIEEgZnVuY3Rpb24tbGlrZSBmZWF0dXJlIGNoZWNraW5nIG1hY3JvIHRoYXQgYWNjZXB0
cyBDKysxMSBzdHlsZSBhdHRyaWJ1dGVzLgogLy8gSXQncyBhIHdyYXBwZXIgYXJvdW5kIGBfX2hh
c19jcHBfYXR0cmlidXRlYCwgZGVmaW5lZCBieSBJU08gQysrIFNELTYKLS8vIChodHRwOi8vZW4u
Y3BwcmVmZXJlbmNlLmNvbS93L2NwcC9leHBlcmltZW50YWwvZmVhdHVyZV90ZXN0KS4gSWYgd2Ug
ZG9uJ3QKKy8vIChodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvZXhwZXJpbWVudGFs
L2ZlYXR1cmVfdGVzdCkuIElmIHdlIGRvbid0CiAvLyBmaW5kIGBfX2hhc19jcHBfYXR0cmlidXRl
YCwgd2lsbCBldmFsdWF0ZSB0byAwLgogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmIGRlZmlu
ZWQoX19oYXNfY3BwX2F0dHJpYnV0ZSkKIC8vIE5PVEU6IHJlcXVpcmluZyBfX2NwbHVzcGx1cyBh
Ym92ZSBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSwgYnV0CkBAIC0xMDIsNyArMTAyLDcgQEAKIC8v
CiAvLyBUZWxscyB0aGUgY29tcGlsZXIgdG8gcGVyZm9ybSBgcHJpbnRmYCBmb3JtYXQgc3RyaW5n
IGNoZWNraW5nIGlmIHRoZQogLy8gY29tcGlsZXIgc3VwcG9ydHMgaXQ7IHNlZSB0aGUgJ2Zvcm1h
dCcgYXR0cmlidXRlIGluCi0vLyA8aHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjLTQu
Ny4wL2djYy9GdW5jdGlvbi1BdHRyaWJ1dGVzLmh0bWw+LgorLy8gPGh0dHBzOi8vZ2NjLmdudS5v
cmcvb25saW5lZG9jcy9nY2MtNC43LjAvZ2NjL0Z1bmN0aW9uLUF0dHJpYnV0ZXMuaHRtbD4uCiAv
LwogLy8gTm90ZTogQXMgdGhlIEdDQyBtYW51YWwgc3RhdGVzLCAiW3NdaW5jZSBub24tc3RhdGlj
IEMrKyBtZXRob2RzCiAvLyBoYXZlIGFuIGltcGxpY2l0ICd0aGlzJyBhcmd1bWVudCwgdGhlIGFy
Z3VtZW50cyBvZiBzdWNoIG1ldGhvZHMKQEAgLTE1NSw3ICsxNTUsMTIgQEAKIC8vIEFCU0xfQVRU
UklCVVRFX1dFQUsKIC8vCiAvLyBUYWdzIGEgZnVuY3Rpb24gYXMgd2VhayBmb3IgdGhlIHB1cnBv
c2VzIG9mIGNvbXBpbGF0aW9uIGFuZCBsaW5raW5nLgotI2lmIEFCU0xfSEFWRV9BVFRSSUJVVEUo
d2VhaykgfHwgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fY2xhbmdfXykpCisvLyBX
ZWFrIGF0dHJpYnV0ZXMgY3VycmVudGx5IGRvIG5vdCB3b3JrIHByb3Blcmx5IGluIExMVk0ncyBX
aW5kb3dzIGJhY2tlbmQsCisvLyBzbyBkaXNhYmxlIHRoZW0gdGhlcmUuIFNlZSBodHRwczovL2J1
Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTk4CisvLyBmb3IgZnV0aGVyIGluZm9ybWF0
aW9uLgorI2lmIChBQlNMX0hBVkVfQVRUUklCVVRFKHdlYWspIHx8IFwKKyAgICAgKGRlZmluZWQo
X19HTlVDX18pICYmICFkZWZpbmVkKF9fY2xhbmdfXykpKSAmJiBcCisgICAgIShkZWZpbmVkKF9f
bGx2bV9fKSAmJiBkZWZpbmVkKF9XSU4zMikpCiAjdW5kZWYgQUJTTF9BVFRSSUJVVEVfV0VBSwog
I2RlZmluZSBBQlNMX0FUVFJJQlVURV9XRUFLIF9fYXR0cmlidXRlX18oKHdlYWspKQogI2RlZmlu
ZSBBQlNMX0hBVkVfQVRUUklCVVRFX1dFQUsgMQpAQCAtMjI3LDcgKzIzMiw3IEBACiAvLyBvdXQg
b2YgYm91bmRzIG9yIGRvZXMgb3RoZXIgc2NhcnkgdGhpbmdzIHdpdGggbWVtb3J5LgogLy8gTk9U
RTogR0NDIHN1cHBvcnRzIEFkZHJlc3NTYW5pdGl6ZXIoYXNhbikgc2luY2UgNC44LgogLy8gaHR0
cHM6Ly9nY2MuZ251Lm9yZy9nY2MtNC44L2NoYW5nZXMuaHRtbAotI2lmIGRlZmluZWQoX19HTlVD
X18pICYmIGRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpCisjaWYgZGVmaW5lZChfX0dOVUNfXykK
ICNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTUyBfX2F0dHJpYnV0ZV9f
KChub19zYW5pdGl6ZV9hZGRyZXNzKSkKICNlbHNlCiAjZGVmaW5lIEFCU0xfQVRUUklCVVRFX05P
X1NBTklUSVpFX0FERFJFU1MKQEAgLTI0MSw3ICsyNDYsNyBAQAogLy8gVGhpcyBhdHRyaWJ1dGUg
aXMgc2ltaWxhciB0byB0aGUgQUREUkVTU19TQU5JVElaRVIgYXR0cmlidXRlIGFib3ZlLCBidXQg
ZGVhbHMKIC8vIHdpdGggaW5pdGlhbGl6ZWQtbmVzcyByYXRoZXIgdGhhbiBhZGRyZXNzYWJpbGl0
eSBpc3N1ZXMuCiAvLyBOT1RFOiBNZW1vcnlTYW5pdGl6ZXIobXNhbikgaXMgc3VwcG9ydGVkIGJ5
IENsYW5nIGJ1dCBub3QgR0NDLgotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoTUVN
T1JZX1NBTklUSVpFUikKKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKICNkZWZpbmUgQUJTTF9BVFRS
SUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX21lbW9y
eSkpCiAjZWxzZQogI2RlZmluZSBBQlNMX0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUlkKQEAg
LTI1Miw3ICsyNTcsNyBAQAogLy8gVGVsbHMgdGhlIFRocmVhZFNhbml0aXplciB0byBub3QgaW5z
dHJ1bWVudCBhIGdpdmVuIGZ1bmN0aW9uLgogLy8gTk9URTogR0NDIHN1cHBvcnRzIFRocmVhZFNh
bml0aXplcih0c2FuKSBzaW5jZSA0LjguCiAvLyBodHRwczovL2djYy5nbnUub3JnL2djYy00Ljgv
Y2hhbmdlcy5odG1sCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChUSFJFQURfU0FO
SVRJWkVSKQorI2lmIGRlZmluZWQoX19HTlVDX18pCiAjZGVmaW5lIEFCU0xfQVRUUklCVVRFX05P
X1NBTklUSVpFX1RIUkVBRCBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV90aHJlYWQpKQogI2Vs
c2UKICNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFECkBAIC0yODIsNiAr
Mjg3LDE3IEBACiAjZGVmaW5lIEFCU0xfQVRUUklCVVRFX05PX1NBTklUSVpFX0NGSQogI2VuZGlm
CiAKKy8vIEFCU0xfQVRUUklCVVRFX05PX1NBTklUSVpFX1NBRkVTVEFDSworLy8KKy8vIFRlbGxz
IHRoZSBTYWZlU3RhY2sgdG8gbm90IGluc3RydW1lbnQgYSBnaXZlbiBmdW5jdGlvbi4KKy8vIFNl
ZSBodHRwczovL2NsYW5nLmxsdm0ub3JnL2RvY3MvU2FmZVN0YWNrLmh0bWwgZm9yIGRldGFpbHMu
CisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChTQUZFU1RBQ0tfU0FOSVRJWkVSKQor
I2RlZmluZSBBQlNMX0FUVFJJQlVURV9OT19TQU5JVElaRV9TQUZFU1RBQ0sgXAorICBfX2F0dHJp
YnV0ZV9fKChub19zYW5pdGl6ZSgic2FmZS1zdGFjayIpKSkKKyNlbHNlCisjZGVmaW5lIEFCU0xf
QVRUUklCVVRFX05PX1NBTklUSVpFX1NBRkVTVEFDSworI2VuZGlmCisKIC8vIEFCU0xfQVRUUklC
VVRFX1JFVFVSTlNfTk9OTlVMTAogLy8KIC8vIFRlbGxzIHRoZSBjb21waWxlciB0aGF0IGEgcGFy
dGljdWxhciBmdW5jdGlvbiBuZXZlciByZXR1cm5zIGEgbnVsbCBwb2ludGVyLgpAQCAtMjk2LDEz
ICszMTIsMTMgQEAKIAogLy8gQUJTTF9IQVZFX0FUVFJJQlVURV9TRUNUSU9OCiAvLwotLy8gSW5k
aWNhdGVzIHdoZXRoZXIgbGFiZWxlZCBzZWN0aW9ucyBhcmUgc3VwcG9ydGVkLiBMYWJlbGVkIHNl
Y3Rpb25zIGFyZSBub3QKLS8vIHN1cHBvcnRlZCBvbiBEYXJ3aW4vaU9TLgorLy8gSW5kaWNhdGVz
IHdoZXRoZXIgbGFiZWxlZCBzZWN0aW9ucyBhcmUgc3VwcG9ydGVkLiBXZWFrIHN5bWJvbCBzdXBw
b3J0IGlzCisvLyBhIHByZXJlcXVpc2l0ZS4gTGFiZWxlZCBzZWN0aW9ucyBhcmUgbm90IHN1cHBv
cnRlZCBvbiBEYXJ3aW4vaU9TLgogI2lmZGVmIEFCU0xfSEFWRV9BVFRSSUJVVEVfU0VDVElPTgog
I2Vycm9yIEFCU0xfSEFWRV9BVFRSSUJVVEVfU0VDVElPTiBjYW5ub3QgYmUgZGlyZWN0bHkgc2V0
CiAjZWxpZiAoQUJTTF9IQVZFX0FUVFJJQlVURShzZWN0aW9uKSB8fCAgICAgICAgICAgICAgICBc
CiAgICAgICAgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fY2xhbmdfXykpKSAmJiBc
Ci0gICAgIWRlZmluZWQoX19BUFBMRV9fKQorICAgICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgQUJT
TF9IQVZFX0FUVFJJQlVURV9XRUFLCiAjZGVmaW5lIEFCU0xfSEFWRV9BVFRSSUJVVEVfU0VDVElP
TiAxCiAKIC8vIEFCU0xfQVRUUklCVVRFX1NFQ1RJT04KQEAgLTM5NywxNyArNDEzLDI4IEBACiAK
IC8vIEFCU0xfTVVTVF9VU0VfUkVTVUxUCiAvLwotLy8gVGVsbHMgdGhlIGNvbXBpbGVyIHRvIHdh
cm4gYWJvdXQgdW51c2VkIHJldHVybiB2YWx1ZXMgZm9yIGZ1bmN0aW9ucyBkZWNsYXJlZAotLy8g
d2l0aCB0aGlzIG1hY3JvLiBUaGUgbWFjcm8gbXVzdCBhcHBlYXIgYXMgdGhlIHZlcnkgZmlyc3Qg
cGFydCBvZiBhIGZ1bmN0aW9uCi0vLyBkZWNsYXJhdGlvbiBvciBkZWZpbml0aW9uOgorLy8gVGVs
bHMgdGhlIGNvbXBpbGVyIHRvIHdhcm4gYWJvdXQgdW51c2VkIHJlc3VsdHMuCiAvLwotLy8gRXhh
bXBsZToKKy8vIFdoZW4gYW5ub3RhdGluZyBhIGZ1bmN0aW9uLCBpdCBtdXN0IGFwcGVhciBhcyB0
aGUgZmlyc3QgcGFydCBvZiB0aGUKKy8vIGRlY2xhcmF0aW9uIG9yIGRlZmluaXRpb24uIFRoZSBj
b21waWxlciB3aWxsIHdhcm4gaWYgdGhlIHJldHVybiB2YWx1ZSBmcm9tCisvLyBzdWNoIGEgZnVu
Y3Rpb24gaXMgdW51c2VkOgogLy8KIC8vICAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgU3Byb2NrZXQq
IEFsbG9jYXRlU3Byb2NrZXQoKTsKKy8vICAgQWxsb2NhdGVTcHJvY2tldCgpOyAgLy8gVHJpZ2dl
cnMgYSB3YXJuaW5nLgorLy8KKy8vIFdoZW4gYW5ub3RhdGluZyBhIGNsYXNzLCBpdCBpcyBlcXVp
dmFsZW50IHRvIGFubm90YXRpbmcgZXZlcnkgZnVuY3Rpb24gd2hpY2gKKy8vIHJldHVybnMgYW4g
aW5zdGFuY2UuCisvLworLy8gICBjbGFzcyBBQlNMX01VU1RfVVNFX1JFU1VMVCBTcHJvY2tldCB7
fTsKKy8vICAgU3Byb2NrZXQoKTsgIC8vIFRyaWdnZXJzIGEgd2FybmluZy4KKy8vCisvLyAgIFNw
cm9ja2V0IE1ha2VTcHJvY2tldCgpOworLy8gICBNYWtlU3Byb2NrZXQoKTsgIC8vIFRyaWdnZXJz
IGEgd2FybmluZy4KKy8vCisvLyBOb3RlIHRoYXQgcmVmZXJlbmNlcyBhbmQgcG9pbnRlcnMgYXJl
IG5vdCBpbnN0YW5jZXM6CiAvLwotLy8gVGhpcyBwbGFjZW1lbnQgaGFzIHRoZSBicm9hZGVzdCBj
b21wYXRpYmlsaXR5IHdpdGggR0NDLCBDbGFuZywgYW5kIE1TVkMsIHdpdGgKLS8vIGJvdGggZGVm
cyBhbmQgZGVjbHMsIGFuZCB3aXRoIEdDQy1zdHlsZSBhdHRyaWJ1dGVzLCBNU1ZDIGRlY2xzcGVj
LCBDKysxMQotLy8gYW5kIEMrKzE3IGF0dHJpYnV0ZXMuCisvLyAgIFNwcm9ja2V0KiBTcHJvY2tl
dFBvaW50ZXIoKTsKKy8vICAgU3Byb2NrZXRQb2ludGVyKCk7ICAvLyBEb2VzICpub3QqIHRyaWdn
ZXIgYSB3YXJuaW5nLgogLy8KIC8vIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGFsbG93cyB1c2luZyBj
YXN0LXRvLXZvaWQgdG8gc3VwcHJlc3MgdGhlIHVudXNlZCByZXN1bHQKIC8vIHdhcm5pbmcuIEZv
ciB0aGF0LCB3YXJuX3VudXNlZF9yZXN1bHQgaXMgdXNlZCBvbmx5IGZvciBjbGFuZyBidXQgbm90
IGZvciBnY2MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2JpdF9jYXN0X3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2JpdF9jYXN0X3Rlc3QuY2MKaW5kZXggOGNkODc4ZDc1NmUzZDg3YzJjMTgyZjRhMmFj
MjJiYjBlNDZmOWUyNi4uNDg0NmFkZDQzNWNmMDIyODQxN2M3MDVkN2IzOWRjNzMwNmYyNWQyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9iaXRfY2FzdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
Yml0X2Nhc3RfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jYWxsX29uY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY2FsbF9v
bmNlLmgKaW5kZXggNTMyZWUyZTM4YmI1MjAxZThlNTVjZjdkODM0YTY0YWI0ZDFiZDFjZi4uZTdm
YzIzMDBlMDM3ZDY3MmViN2Q5NDNhZGM5MDQ2MGJjYjcxNTNiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9jYWxsX29uY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NhbGxfb25jZS5oCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSA8YXRvbWljPgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+Cisj
aW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9pbnZva2Uu
aCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX3NjaGVkdWxpbmcuaCIK
QEAgLTM2LDYgKzM3LDcgQEAKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvc2NoZWR1bGlu
Z19tb2RlLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dhaXQuaCIK
ICNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL29wdGlt
aXphdGlvbi5oIgogI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiCiAKIG5hbWVzcGFjZSBhYnNs
IHsKQEAgLTE1MCwxMiArMTUyLDggQEAgdm9pZCBDYWxsT25jZUltcGwoc3RkOjphdG9taWM8dWlu
dDMyX3Q+KiBjb250cm9sLAogICAgICAgICBvbGRfY29udHJvbCAhPSBrT25jZVJ1bm5pbmcgJiYK
ICAgICAgICAgb2xkX2NvbnRyb2wgIT0ga09uY2VXYWl0ZXIgJiYKICAgICAgICAgb2xkX2NvbnRy
b2wgIT0ga09uY2VEb25lKSB7Ci0gICAgICBBQlNMX1JBV19MT0coCi0gICAgICAgICAgRkFUQUws
Ci0gICAgICAgICAgIlVuZXhwZWN0ZWQgdmFsdWUgZm9yIGNvbnRyb2wgd29yZDogJWx4LiBFaXRo
ZXIgdGhlIGNvbnRyb2wgd29yZCAiCi0gICAgICAgICAgImhhcyBub24tc3RhdGljIHN0b3JhZ2Ug
ZHVyYXRpb24gKHdoZXJlIEdvb2dsZU9uY2VEeW5hbWljIG1pZ2h0ICIKLSAgICAgICAgICAiYmUg
YXBwcm9wcmlhdGUpLCBvciB0aGVyZSdzIGJlZW4gYSBtZW1vcnkgY29ycnVwdGlvbi4iLAotICAg
ICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG9sZF9jb250cm9sKSk7IC8vIE5PTElO
VAorICAgICAgQUJTTF9SQVdfTE9HKEZBVEFMLCAiVW5leHBlY3RlZCB2YWx1ZSBmb3IgY29udHJv
bCB3b3JkOiAweCVseCIsCisgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZz4ob2xkX2NvbnRyb2wpKTsgIC8vIE5PTElOVAogICAgIH0KICAgfQogI2VuZGlmICAvLyBO
REVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY2FsbF9vbmNlX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2NhbGxfb25jZV90ZXN0LmNjCmluZGV4IGNkNThlZTE5ZjA4ZTZjNTFhMmI1ODY3ZmRhODUy
MWJkYThjYmUzMDYuLjlhNWE1YzEzYmU3MjE2OWRiNmI4YWZjMTg5ZWRkNWQ5ZDM3NDFjYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvY2FsbF9vbmNlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9j
YWxsX29uY2VfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMTgsNiArMTgsOCBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvY29uc3RfaW5pdC5oIgogI2luY2x1ZGUgImFic2wvYmFzZS90aHJlYWRfYW5ub3Rh
dGlvbnMuaCIKICNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgogCkBAIC0y
NSwxMyArMjcsMTQgQEAgbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHsKIAogYWJzbDo6b25j
ZV9mbGFnIG9uY2U7Ci1NdXRleCBjb3VudGVyc19tdTsKIAotaW50IHJ1bm5pbmdfdGhyZWFkX2Nv
dW50IEdVQVJERURfQlkoY291bnRlcnNfbXUpID0gMDsKLWludCBjYWxsX29uY2VfaW52b2tlX2Nv
dW50IEdVQVJERURfQlkoY291bnRlcnNfbXUpID0gMDsKLWludCBjYWxsX29uY2VfZmluaXNoZWRf
Y291bnQgR1VBUkRFRF9CWShjb3VudGVyc19tdSkgPSAwOwotaW50IGNhbGxfb25jZV9yZXR1cm5f
Y291bnQgR1VBUkRFRF9CWShjb3VudGVyc19tdSkgPSAwOwotYm9vbCBkb25lX2Jsb2NraW5nIEdV
QVJERURfQlkoY291bnRlcnNfbXUpID0gZmFsc2U7CitBQlNMX0NPTlNUX0lOSVQgTXV0ZXggY291
bnRlcnNfbXUoYWJzbDo6a0NvbnN0SW5pdCk7CisKK2ludCBydW5uaW5nX3RocmVhZF9jb3VudCBB
QlNMX0dVQVJERURfQlkoY291bnRlcnNfbXUpID0gMDsKK2ludCBjYWxsX29uY2VfaW52b2tlX2Nv
dW50IEFCU0xfR1VBUkRFRF9CWShjb3VudGVyc19tdSkgPSAwOworaW50IGNhbGxfb25jZV9maW5p
c2hlZF9jb3VudCBBQlNMX0dVQVJERURfQlkoY291bnRlcnNfbXUpID0gMDsKK2ludCBjYWxsX29u
Y2VfcmV0dXJuX2NvdW50IEFCU0xfR1VBUkRFRF9CWShjb3VudGVyc19tdSkgPSAwOworYm9vbCBk
b25lX2Jsb2NraW5nIEFCU0xfR1VBUkRFRF9CWShjb3VudGVyc19tdSkgPSBmYWxzZTsKIAogLy8g
RnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb20gYWJzbDo6Y2FsbF9vbmNlLiAgV2FpdHMgZm9yIGEg
bm90aWZpY2F0aW9uLgogdm9pZCBXYWl0QW5kSW5jcmVtZW50KCkgewpAQCAtNTcsNyArNjAsNyBA
QCB2b2lkIFRocmVhZEJvZHkoKSB7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZiBhbGwgdGhyZWFk
cyBhcmUgc2V0IHVwIGZvciB0aGUgdGVzdC4KLWJvb2wgVGhyZWFkc0FyZVNldHVwKHZvaWQqKSBF
WENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoY291bnRlcnNfbXUpIHsKK2Jvb2wgVGhyZWFkc0FyZVNl
dHVwKHZvaWQqKSBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChjb3VudGVyc19tdSkgewog
ICAvLyBBbGwgdGVuIHRocmVhZHMgbXVzdCBiZSBydW5uaW5nLCBhbmQgV2FpdEFuZEluY3JlbWVu
dCBzaG91bGQgYmUgYmxvY2tlZC4KICAgcmV0dXJuIHJ1bm5pbmdfdGhyZWFkX2NvdW50ID09IDEw
ICYmIGNhbGxfb25jZV9pbnZva2VfY291bnQgPT0gMTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvY2FzdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY2FzdHMuaAppbmRleCAyMGZkMzRkYTcwMTA1ZDZmYzdk
ZjU1OTg4Yzg5YjZlY2U0YjdlMzNlLi5hYmEwMTc4MjE5YzczNWYxNWMyYWNiODY4MDFlODAzMWZk
YTRkZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2Nhc3RzLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9j
YXN0cy5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yNywz
MSArMjcsMjQgQEAKICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9i
YXNlL2ludGVybmFsL2lkZW50aXR5LmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgor
I2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgogCiBuYW1lc3BhY2UgYWJzbCB7CiAK
IG5hbWVzcGFjZSBpbnRlcm5hbF9jYXN0cyB7CiAKLS8vIE5PVEU6IE5vdCBhIGZ1bGx5IGNvbXBs
aWFudCBpbXBsZW1lbnRhdGlvbiBvZiBgc3RkOjppc190cml2aWFsbHlfY29weWFibGVgLgotLy8g
VE9ETyhjYWxhYnJlc2UpIEJyYW5jaCBvbiBpbXBsZW1lbnRhdGlvbnMgdGhhdCBkaXJlY3RseSBw
cm92aWRlCi0vLyBgc3RkOjppc190cml2aWFsbHlfY29weWFibGVgLCBjcmVhdGUgYSBtb3JlIHJp
Z29yb3VzIHdvcmthcm91bmQsIGFuZCBwdWJsaWNseQotLy8gZXhwb3NlIGluIG1ldGEvdHlwZV90
cmFpdHMuCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc190cml2aWFsbHlfY29weWFibGUK
LSAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ci0gICAgICAgICAgYm9vbCwgc3RkOjppc19k
ZXN0cnVjdGlibGU8VD46OnZhbHVlJiYgX19oYXNfdHJpdmlhbF9kZXN0cnVjdG9yKFQpICYmCi0g
ICAgICAgICAgICAgICAgICAgIF9faGFzX3RyaXZpYWxfY29weShUKSAmJiBfX2hhc190cml2aWFs
X2Fzc2lnbihUKT4ge307Ci0KIHRlbXBsYXRlIDxjbGFzcyBEZXN0LCBjbGFzcyBTb3VyY2U+CiBz
dHJ1Y3QgaXNfYml0Y2FzdGFibGUKLSAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKERlc3QpID09IHNpemVvZihTb3Vy
Y2UpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc190cml2aWFsbHlfY29w
eWFibGU8U291cmNlPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzX3RyaXZpYWxseV9jb3B5YWJsZTxEZXN0Pjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPERlc3Q+Ojp2YWx1
ZT4ge307CisgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PAorICAgICAgICAgIGJvb2wsCisg
ICAgICAgICAgc2l6ZW9mKERlc3QpID09IHNpemVvZihTb3VyY2UpICYmCisgICAgICAgICAgICAg
IHR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8U291cmNlPjo6dmFs
dWUgJiYKKyAgICAgICAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9j
b3B5YWJsZTxEZXN0Pjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgc3RkOjppc19kZWZhdWx0X2Nv
bnN0cnVjdGlibGU8RGVzdD46OnZhbHVlPiB7fTsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
X2Nhc3RzCiAKQEAgLTEwNSw3ICs5OCw3IEBAIHN0cnVjdCBpc19iaXRjYXN0YWJsZQogLy8KIC8v
IFN1Y2ggaW1wbGljaXQgY2FzdCBjaGFpbmluZyBtYXkgYmUgdXNlZnVsIHdpdGhpbiB0ZW1wbGF0
ZSBsb2dpYy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUbz4KLWlubGluZSBUbyBpbXBsaWNpdF9jYXN0
KHR5cGVuYW1lIGFic2w6OmludGVybmFsOjppZGVudGl0eV90PFRvPiB0bykgeworY29uc3RleHBy
IFRvIGltcGxpY2l0X2Nhc3QodHlwZW5hbWUgYWJzbDo6aW50ZXJuYWw6OmlkZW50aXR5X3Q8VG8+
IHRvKSB7CiAgIHJldHVybiB0bzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jb25maWcu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvY29uZmlnLmgKaW5kZXggZDRlYjdkMGNiZDc2YjcxOGY0Mjg5NzlkY2U3
NTVkNzM1YWZjYjAwZC4uMWMzY2IwOGU3NDZkZWE0YWU5ODM1NmM2NDUxYThlNjdjYTE2OThhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jb25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbmZpZy5o
CkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMTgsNyArMTE4
LDcgQEAKIC8vIENoZWNrcyB3aGV0aGVyIGBzdGQ6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFi
bGU8VD5gIGlzIHN1cHBvcnRlZC4KIAogLy8gTm90ZXM6IENsYW5nIHdpdGggbGliYysrIHN1cHBv
cnRzIHRoZXNlIGZlYXR1cmVzLCBhcyBkb2VzIGdjYyA+PSA1LjEgd2l0aAotLy8gZWl0aGVyIGxp
YmMrKyBvciBsaWJzdGRjKyssIGFuZCBWaXN1YWwgU3R1ZGlvLgorLy8gZWl0aGVyIGxpYmMrKyBv
ciBsaWJzdGRjKyssIGFuZCBWaXN1YWwgU3R1ZGlvIChidXQgbm90IE5WQ0MpLgogI2lmIGRlZmlu
ZWQoQUJTTF9IQVZFX1NURF9JU19UUklWSUFMTFlfQ09OU1RSVUNUSUJMRSkKICNlcnJvciBBQlNM
X0hBVkVfU1REX0lTX1RSSVZJQUxMWV9DT05TVFJVQ1RJQkxFIGNhbm5vdCBiZSBkaXJlY3RseSBz
ZXQKICNlbGlmIGRlZmluZWQoQUJTTF9IQVZFX1NURF9JU19UUklWSUFMTFlfQVNTSUdOQUJMRSkK
QEAgLTEyNyw3ICsxMjcsNyBAQAogICAgICghZGVmaW5lZChfX2NsYW5nX18pICYmIGRlZmluZWQo
X19HTlVDX18pICYmICAgICAgICAgICAgICAgICBcCiAgICAgIChfX0dOVUNfXyA+IDUgfHwgKF9f
R05VQ19fID09IDUgJiYgX19HTlVDX01JTk9SX18gPj0gMSkpICYmIFwKICAgICAgKGRlZmluZWQo
X0xJQkNQUF9WRVJTSU9OKSB8fCBkZWZpbmVkKF9fR0xJQkNYWF9fKSkpIHx8ICAgICAgXAotICAg
IGRlZmluZWQoX01TQ19WRVIpCisgICAgKGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9f
TlZDQ19fKSkKICNkZWZpbmUgQUJTTF9IQVZFX1NURF9JU19UUklWSUFMTFlfQ09OU1RSVUNUSUJM
RSAxCiAjZGVmaW5lIEFCU0xfSEFWRV9TVERfSVNfVFJJVklBTExZX0FTU0lHTkFCTEUgMQogI2Vu
ZGlmCkBAIC0xMzksMTIgKzEzOSwxOCBAQAogI2lmZGVmIEFCU0xfSEFWRV9USFJFQURfTE9DQUwK
ICNlcnJvciBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMIGNhbm5vdCBiZSBkaXJlY3RseSBzZXQKICNl
bGlmIGRlZmluZWQoX19BUFBMRV9fKQotLy8gTm90ZXM6IFhjb2RlJ3MgY2xhbmcgZGlkIG5vdCBz
dXBwb3J0IGB0aHJlYWRfbG9jYWxgIHVudGlsIHZlcnNpb24KLS8vIDgsIGFuZCBldmVuIHRoZW4g
bm90IGZvciBhbGwgaU9TIDwgOS4wLiBBbHNvLCBYY29kZSA5LjMgc3RhcnRlZCBkaXNhbGxvd2lu
ZwotLy8gYHRocmVhZF9sb2NhbGAgZm9yIDMyLWJpdCBpT1Mgc2ltdWxhdG9yIHRhcmdldGluZyBp
T1MgOS54LgotLy8gYF9faGFzX2ZlYXR1cmVgIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IENsYW5nIHNv
IGl0IGhhcyBiZSBpbnNpZGUKKy8vIE5vdGVzOgorLy8gKiBYY29kZSdzIGNsYW5nIGRpZCBub3Qg
c3VwcG9ydCBgdGhyZWFkX2xvY2FsYCB1bnRpbCB2ZXJzaW9uIDgsIGFuZAorLy8gICBldmVuIHRo
ZW4gbm90IGZvciBhbGwgaU9TIDwgOS4wLgorLy8gKiBYY29kZSA5LjMgc3RhcnRlZCBkaXNhbGxv
d2luZyBgdGhyZWFkX2xvY2FsYCBmb3IgMzItYml0IGlPUyBzaW11bGF0b3IKKy8vICAgdGFyZ2V0
aW5nIGlPUyA5LnguCisvLyAqIFhjb2RlIDEwIG1vdmVzIHRoZSBkZXBsb3ltZW50IHRhcmdldCBj
aGVjayBmb3IgaU9TIDwgOS4wIHRvIGxpbmsgdGltZQorLy8gICBtYWtpbmcgX19oYXNfZmVhdHVy
ZSB1bnJlbGlhYmxlIHRoZXJlLgorLy8KKy8vIE90aGVyd2lzZSwgYF9faGFzX2ZlYXR1cmVgIGlz
IG9ubHkgc3VwcG9ydGVkIGJ5IENsYW5nIHNvIGl0IGhhcyBiZSBpbnNpZGUKIC8vIGBkZWZpbmVk
KF9fQVBQTEVfXylgIGNoZWNrLgotI2lmIF9faGFzX2ZlYXR1cmUoY3h4X3RocmVhZF9sb2NhbCkK
KyNpZiBfX2hhc19mZWF0dXJlKGN4eF90aHJlYWRfbG9jYWwpICYmIFwKKyAgICAhKFRBUkdFVF9P
U19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBfX0lQSE9ORV85
XzApCiAjZGVmaW5lIEFCU0xfSEFWRV9USFJFQURfTE9DQUwgMQogI2VuZGlmCiAjZWxzZSAgLy8g
IWRlZmluZWQoX19BUFBMRV9fKQpAQCAtMTc1LDYgKzE4MSwxMyBAQAogI2VuZGlmCiAjZW5kaWYg
IC8vIGRlZmluZWQoX19BTkRST0lEX18pICYmIGRlZmluZWQoX19jbGFuZ19fKQogCisvLyBFbXNj
cmlwdGVuIGRvZXNuJ3QgeWV0IHN1cHBvcnQgYHRocmVhZF9sb2NhbGAgb3IgYF9fdGhyZWFkYC4K
Ky8vIGh0dHBzOi8vZ2l0aHViLmNvbS9lbXNjcmlwdGVuLWNvcmUvZW1zY3JpcHRlbi9pc3N1ZXMv
MzUwMgorI2lmIGRlZmluZWQoX19FTVNDUklQVEVOX18pCisjdW5kZWYgQUJTTF9IQVZFX1RMUwor
I3VuZGVmIEFCU0xfSEFWRV9USFJFQURfTE9DQUwKKyNlbmRpZiAgLy8gZGVmaW5lZChfX0VNU0NS
SVBURU5fXykKKwogLy8gQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgKIC8vCiAvLyBDaGVja3Mg
d2hldGhlciB0aGUgX19pbnQxMjggY29tcGlsZXIgZXh0ZW5zaW9uIGZvciBhIDEyOC1iaXQgaW50
ZWdyYWwgdHlwZSBpcwpAQCAtMTg1LDE1ICsxOTgsMTMgQEAKIC8vICogT24gQ2xhbmc6CiAvLyAg
ICogQnVpbGRpbmcgdXNpbmcgQ2xhbmcgZm9yIFdpbmRvd3MsIHdoZXJlIHRoZSBDbGFuZyBydW50
aW1lIGxpYnJhcnkgaGFzCiAvLyAgICAgMTI4LWJpdCBzdXBwb3J0IG9ubHkgb24gTFA2NCBhcmNo
aXRlY3R1cmVzLCBidXQgV2luZG93cyBpcyBMTFA2NC4KLS8vICAgKiBCdWlsZGluZyBmb3IgYWFy
Y2g2NCwgd2hlcmUgX19pbnQxMjggZXhpc3RzIGJ1dCBoYXMgZXhoaWJpdHMgYSBzcG9yYWRpYwot
Ly8gICAgIGNvbXBpbGVyIGNyYXNoaW5nIGJ1Zy4KIC8vICogT24gTnZpZGlhJ3MgbnZjYzoKIC8v
ICAgKiBudmNjIGFsc28gZGVmaW5lcyBfX0dOVUNfXyBhbmQgX19TSVpFT0ZfSU5UMTI4X18sIGJ1
dCBub3QgYWxsIHZlcnNpb25zCiAvLyAgICAgYWN0dWFsbHkgc3VwcG9ydCBfX2ludDEyOC4KICNp
ZmRlZiBBQlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOAogI2Vycm9yIEFCU0xfSEFWRV9JTlRSSU5T
SUNfSU5UMTI4IGNhbm5vdCBiZSBkaXJlY3RseSBzZXQKICNlbGlmIGRlZmluZWQoX19TSVpFT0Zf
SU5UMTI4X18pCi0jaWYgKGRlZmluZWQoX19jbGFuZ19fKSAmJiAhZGVmaW5lZChfV0lOMzIpICYm
ICFkZWZpbmVkKF9fYWFyY2g2NF9fKSkgfHwgXAorI2lmIChkZWZpbmVkKF9fY2xhbmdfXykgJiYg
IWRlZmluZWQoX1dJTjMyKSkgfHwgXAogICAgIChkZWZpbmVkKF9fQ1VEQUNDX18pICYmIF9fQ1VE
QUNDX1ZFUl9NQUpPUl9fID49IDkpIHx8ICAgICAgICAgICAgICAgIFwKICAgICAoZGVmaW5lZChf
X0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKSAmJiAhZGVmaW5lZChfX0NVREFDQ19fKSkK
ICNkZWZpbmUgQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjggMQpAQCAtMjQ5LDcgKzI2MCw3IEBA
CiAvLyAgIExpbnV4IGFuZCBMaW51eC1kZXJpdmVkICAgICAgICAgICBfX2xpbnV4X18KIC8vICAg
QW5kcm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fQU5EUk9JRF9fIChpbXBsaWVzIF9f
bGludXhfXykKIC8vICAgTGludXggKG5vbi1BbmRyb2lkKSAgICAgICAgICAgICAgIF9fbGludXhf
XyAmJiAhX19BTkRST0lEX18KLS8vICAgRGFyd2luIChNYWMgT1MgWCBhbmQgaU9TKSAgICAgICAg
IF9fQVBQTEVfXworLy8gICBEYXJ3aW4gKG1hY09TIGFuZCBpT1MpICAgICAgICAgICAgX19BUFBM
RV9fCiAvLyAgIEFrYXJvcyAoaHR0cDovL2FrYXJvcy5vcmcpICAgICAgICBfX3Jvc19fCiAvLyAg
IFdpbmRvd3MgICAgICAgICAgICAgICAgICAgICAgICAgICBfV0lOMzIKIC8vICAgTmFDTCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fbmF0aXZlX2NsaWVudF9fCkBAIC0yNjgsNyArMjc5
LDggQEAKICNlcnJvciBBQlNMX0hBVkVfTU1BUCBjYW5ub3QgYmUgZGlyZWN0bHkgc2V0CiAjZWxp
ZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19G
cmVlQlNEX18pIHx8ICAgXAogICAgIGRlZmluZWQoX19yb3NfXykgfHwgZGVmaW5lZChfX25hdGl2
ZV9jbGllbnRfXykgfHwgZGVmaW5lZChfX2FzbWpzX18pIHx8IFwKLSAgICBkZWZpbmVkKF9fd2Fz
bV9fKSB8fCBkZWZpbmVkKF9fRnVjaHNpYV9fKSB8fCBkZWZpbmVkKF9fc3VuKQorICAgIGRlZmlu
ZWQoX193YXNtX18pIHx8IGRlZmluZWQoX19GdWNoc2lhX18pIHx8IGRlZmluZWQoX19zdW4pIHx8
IFwKKyAgICBkZWZpbmVkKF9fQVNZTE9fXykKICNkZWZpbmUgQUJTTF9IQVZFX01NQVAgMQogI2Vu
ZGlmCiAKQEAgLTMyMiw2ICszMzQsOCBAQAogI2RlZmluZSBBQlNMX0hBVkVfQUxBUk0gMQogI2Vs
aWYgZGVmaW5lZChfTVNDX1ZFUikKIC8vIGZlYXR1cmUgdGVzdHMgZm9yIE1pY3Jvc29mdCdzIGxp
YnJhcnkKKyNlbGlmIGRlZmluZWQoX19FTVNDUklQVEVOX18pCisvLyBlbXNjcmlwdGVuIGRvZXNu
J3Qgc3VwcG9ydCBzaWduYWxzCiAjZWxpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQogI2Vs
c2UKIC8vIG90aGVyIHN0YW5kYXJkIGxpYnJhcmllcwpAQCAtMzU2LDYgKzM3MCwyNyBAQAogI2Vy
cm9yICJhYnNsIGVuZGlhbiBkZXRlY3Rpb24gbmVlZHMgdG8gYmUgc2V0IHVwIGZvciB5b3VyIGNv
bXBpbGVyIgogI2VuZGlmCiAKKy8vIG1hY09TIDEwLjEzIGFuZCBpT1MgMTAuMTEgZG9uJ3QgbGV0
IHlvdSB1c2UgPGFueT4sIDxvcHRpb25hbD4sIG9yIDx2YXJpYW50PgorLy8gZXZlbiB0aG91Z2gg
dGhlIGhlYWRlcnMgZXhpc3QgYW5kIGFyZSBwdWJsaWNseSBub3RlZCB0byB3b3JrLiAgU2VlCisv
LyBodHRwczovL2dpdGh1Yi5jb20vYWJzZWlsL2Fic2VpbC1jcHAvaXNzdWVzLzIwNyBhbmQKKy8v
IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjb2RlX3JlbGVhc2Vf
bm90ZXMveGNvZGVfMTBfcmVsZWFzZV9ub3RlcworLy8gbGliYysrIHNwZWxscyBvdXQgdGhlIGF2
YWlsYWJpbGl0eSByZXF1aXJlbWVudHMgaW4gdGhlIGZpbGUKKy8vIGxsdm0tcHJvamVjdC9saWJj
eHgvaW5jbHVkZS9fX2NvbmZpZyB2aWEgdGhlICNkZWZpbmUKKy8vIF9MSUJDUFBfQVZBSUxBQklM
SVRZX0JBRF9PUFRJT05BTF9BQ0NFU1MuCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmlu
ZWQoX0xJQkNQUF9WRVJTSU9OKSAmJiBcCisgICgoZGVmaW5lZChfX0VOVklST05NRU5UX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18pICYmIFwKKyAgIF9fRU5WSVJPTk1FTlRfTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRURfXyA8IDEwMTQwMCkgfHwgXAorICAoZGVmaW5lZChfX0VO
VklST05NRU5UX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRF9fKSAmJiBcCisgICBfX0VO
VklST05NRU5UX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRF9fIDwgMTIwMDAwKSB8fCBc
CisgIChkZWZpbmVkKF9fRU5WSVJPTk1FTlRfV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRURf
XykgJiYgXAorICAgX19FTlZJUk9OTUVOVF9XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRF9f
IDwgMTIwMDAwKSB8fCBcCisgIChkZWZpbmVkKF9fRU5WSVJPTk1FTlRfVFZfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRURfXykgJiYgXAorICAgX19FTlZJUk9OTUVOVF9UVl9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRF9fIDwgNTAwMDApKQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX0FQUExFX0NYWDE3X1RZ
UEVTX1VOQVZBSUxBQkxFIDEKKyNlbHNlCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfQVBQTEVfQ1hY
MTdfVFlQRVNfVU5BVkFJTEFCTEUgMAorI2VuZGlmCisKIC8vIEFCU0xfSEFWRV9TVERfQU5ZCiAv
LwogLy8gQ2hlY2tzIHdoZXRoZXIgQysrMTcgc3RkOjphbnkgaXMgYXZhaWxhYmxlIGJ5IGNoZWNr
aW5nIHdoZXRoZXIgPGFueT4gZXhpc3RzLgpAQCAtMzY0LDcgKzM5OSw4IEBACiAjZW5kaWYKIAog
I2lmZGVmIF9faGFzX2luY2x1ZGUKLSNpZiBfX2hhc19pbmNsdWRlKDxhbnk+KSAmJiBfX2NwbHVz
cGx1cyA+PSAyMDE3MDNMCisjaWYgX19oYXNfaW5jbHVkZSg8YW55PikgJiYgX19jcGx1c3BsdXMg
Pj0gMjAxNzAzTCAmJiBcCisgICAgIUFCU0xfSU5URVJOQUxfQVBQTEVfQ1hYMTdfVFlQRVNfVU5B
VkFJTEFCTEUKICNkZWZpbmUgQUJTTF9IQVZFX1NURF9BTlkgMQogI2VuZGlmCiAjZW5kaWYKQEAg
LTM3Nyw3ICs0MTMsOCBAQAogI2VuZGlmCiAKICNpZmRlZiBfX2hhc19pbmNsdWRlCi0jaWYgX19o
YXNfaW5jbHVkZSg8b3B0aW9uYWw+KSAmJiBfX2NwbHVzcGx1cyA+PSAyMDE3MDNMCisjaWYgX19o
YXNfaW5jbHVkZSg8b3B0aW9uYWw+KSAmJiBfX2NwbHVzcGx1cyA+PSAyMDE3MDNMICYmIFwKKyAg
ICAhQUJTTF9JTlRFUk5BTF9BUFBMRV9DWFgxN19UWVBFU19VTkFWQUlMQUJMRQogI2RlZmluZSBB
QlNMX0hBVkVfU1REX09QVElPTkFMIDEKICNlbmRpZgogI2VuZGlmCkBAIC0zOTAsNyArNDI3LDgg
QEAKICNlbmRpZgogCiAjaWZkZWYgX19oYXNfaW5jbHVkZQotI2lmIF9faGFzX2luY2x1ZGUoPHZh
cmlhbnQ+KSAmJiBfX2NwbHVzcGx1cyA+PSAyMDE3MDNMCisjaWYgX19oYXNfaW5jbHVkZSg8dmFy
aWFudD4pICYmIF9fY3BsdXNwbHVzID49IDIwMTcwM0wgJiYgXAorICAgICFBQlNMX0lOVEVSTkFM
X0FQUExFX0NYWDE3X1RZUEVTX1VOQVZBSUxBQkxFCiAjZGVmaW5lIEFCU0xfSEFWRV9TVERfVkFS
SUFOVCAxCiAjZW5kaWYKICNlbmRpZgpAQCAtNDIzLDQgKzQ2MSwxMiBAQAogI2RlZmluZSBBQlNM
X0hBVkVfU1REX1NUUklOR19WSUVXIDEKICNlbmRpZgogCisvLyBJbiBkZWJ1ZyBtb2RlLCBNU1ZD
IDIwMTcncyBzdGQ6OnZhcmlhbnQgdGhyb3dzIGEgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04K
Ky8vIFNFSCBleGNlcHRpb24gZnJvbSBlbXBsYWNlIGZvciB2YXJpYW50PFNvbWVTdHJ1Y3Q+IHdo
ZW4gY29uc3RydWN0aW5nIHRoZQorLy8gc3RydWN0IGNhbiB0aHJvdy4gVGhpcyBkZWZlYXRzIHNv
bWUgb2YgdmFyaWFudF90ZXN0IGFuZAorLy8gdmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3Qu
CisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTcwMCAmJiBkZWZpbmVkKF9E
RUJVRykKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9NU1ZDXzIwMTdfREJHX01PREUKKyNlbmRpZgor
CiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9DT05GSUdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
Y29uZmlnX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbmZpZ190ZXN0LmNjCmluZGV4IGM4Mzk3MTJh
NTM3ZTQxNjljYTAxNjVmZjlmOWQzMGIxN2U4MjFlMjguLjdlMGMwMzNkZTU5ZmNiOTdjODkxMTEz
NDQxMTBjNTFhM2NkNTZjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uZmlnX3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9jb25maWdfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jb25zdF9pbml0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2NvbnN0X2luaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzg1OGE3Nzc4YTRiNTBiNWYwMzli
MGU5Mjc3YjgzODI3NGQ0MjM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jb25zdF9p
bml0LmgKQEAgLTAsMCArMSw3MiBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGtDb25zdEluaXQKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQSBjb25zdHJ1Y3RvciB0YWcgdXNlZCB0byBtYXJr
IGFuIG9iamVjdCBhcyBzYWZlIGZvciB1c2UgYXMgYSBnbG9iYWwKKy8vIHZhcmlhYmxlLCBhdm9p
ZGluZyB0aGUgdXN1YWwgbGlmZXRpbWUgaXNzdWVzIHRoYXQgY2FuIGFmZmVjdCBnbG9iYWxzLgor
CisjaWZuZGVmIEFCU0xfQkFTRV9DT05TVF9JTklUX0hfCisjZGVmaW5lIEFCU0xfQkFTRV9DT05T
VF9JTklUX0hfCisKKy8vIEluIGdlbmVyYWwsIG9iamVjdHMgd2l0aCBzdGF0aWMgc3RvcmFnZSBk
dXJhdGlvbiAoc3VjaCBhcyBnbG9iYWwgdmFyaWFibGVzKQorLy8gY2FuIHRyaWdnZXIgdHJpY2t5
IG9iamVjdCBsaWZldGltZSBzaXR1YXRpb25zLiAgQXR0ZW1wdGluZyB0byBhY2Nlc3MgdGhlbQor
Ly8gZnJvbSB0aGUgY29uc3RydWN0b3JzIG9yIGRlc3RydWN0b3JzIG9mIG90aGVyIGdsb2JhbCBv
YmplY3RzIGNhbiByZXN1bHQgaW4KKy8vIHVuZGVmaW5lZCBiZWhhdmlvciwgdW5sZXNzIHRoZWly
IGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIGRlc2lnbmVkCisvLyB3aXRoIHRoaXMg
aXNzdWUgaW4gbWluZC4KKy8vCisvLyBUaGUgbm9ybWFsIHdheSB0byBkZWFsIHdpdGggdGhpcyBp
c3N1ZSBpbiBDKysxMSBpcyB0byB1c2UgY29uc3RhbnQKKy8vIGluaXRpYWxpemF0aW9uIGFuZCB0
cml2aWFsIGRlc3RydWN0b3JzLgorLy8KKy8vIENvbnN0YW50IGluaXRpYWxpemF0aW9uIGlzIGd1
YXJhbnRlZWQgdG8gb2NjdXIgYmVmb3JlIGFueSBvdGhlciBjb2RlCisvLyBleGVjdXRlcy4gIENv
bnN0cnVjdG9ycyB0aGF0IGFyZSBkZWNsYXJlZCAnY29uc3RleHByJyBhcmUgZWxpZ2libGUgZm9y
CisvLyBjb25zdGFudCBpbml0aWFsaXphdGlvbi4gIFlvdSBjYW4gYW5ub3RhdGUgYSB2YXJpYWJs
ZSBkZWNsYXJhdGlvbiB3aXRoIHRoZQorLy8gQUJTTF9DT05TVF9JTklUIG1hY3JvIHRvIGV4cHJl
c3MgdGhpcyBpbnRlbnQuICBGb3IgY29tcGlsZXJzIHRoYXQgc3VwcG9ydAorLy8gaXQsIHRoaXMg
YW5ub3RhdGlvbiB3aWxsIGNhdXNlIGEgY29tcGlsYXRpb24gZXJyb3IgZm9yIGRlY2xhcmF0aW9u
cyB0aGF0CisvLyBhcmVuJ3Qgc3ViamVjdCB0byBjb25zdGFudCBpbml0aWFsaXphdGlvbiAocGVy
aGFwcyBiZWNhdXNlIGEgcnVudGltZSB2YWx1ZQorLy8gd2FzIHBhc3NlZCBhcyBhIGNvbnN0cnVj
dG9yIGFyZ3VtZW50KS4KKy8vCisvLyBPbiBwcm9ncmFtIHNodXRkb3duLCBsaWZldGltZSBpc3N1
ZXMgY2FuIGJlIGF2b2lkZWQgb24gZ2xvYmFsIG9iamVjdHMgYnkKKy8vIGVuc3VyaW5nIHRoYXQg
dGhleSBjb250YWluICB0cml2aWFsIGRlc3RydWN0b3JzLiAgQSBjbGFzcyBoYXMgYSB0cml2aWFs
CisvLyBkZXN0cnVjdG9yIHVubGVzcyBpdCBoYXMgYSB1c2VyLWRlZmluZWQgZGVzdHJ1Y3Rvciwg
YSB2aXJ0dWFsIG1ldGhvZCBvciBiYXNlCisvLyBjbGFzcywgb3IgYSBkYXRhIG1lbWJlciBvciBi
YXNlIGNsYXNzIHdpdGggYSBub24tdHJpdmlhbCBkZXN0cnVjdG9yIG9mIGl0cworLy8gb3duLiAg
T2JqZWN0cyB3aXRoIHN0YXRpYyBzdG9yYWdlIGR1cmF0aW9uIGFuZCBhIHRyaXZpYWwgZGVzdHJ1
Y3RvciBhcmUgbm90CisvLyBjbGVhbmVkIHVwIG9uIHByb2dyYW0gc2h1dGRvd24sIGFuZCBhcmUg
dGh1cyBzYWZlIHRvIGFjY2VzcyBmcm9tIG90aGVyIGNvZGUKKy8vIHJ1bm5pbmcgZHVyaW5nIHNo
dXRkb3duLgorLy8KKy8vIEZvciBhIGZldyBjb3JlIEFic2VpbCBjbGFzc2VzLCB3ZSBtYWtlIGEg
YmVzdCBlZmZvcnQgdG8gYWxsb3cgZm9yIHNhZmUgZ2xvYmFsCisvLyBpbnN0YW5jZXMsIGV2ZW4g
dGhvdWdoIHRoZXNlIGNsYXNzZXMgaGF2ZSBub24tdHJpdmlhbCBkZXN0cnVjdG9ycy4gIFRoZXNl
CisvLyBvYmplY3RzIGNhbiBiZSBjcmVhdGVkIHdpdGggdGhlIGFic2w6OmtDb25zdEluaXQgdGFn
LiAgRm9yIGV4YW1wbGU6CisvLyAgIEFCU0xfQ09OU1RfSU5JVCBhYnNsOjpNdXRleCBnbG9iYWxf
bXV0ZXgoYWJzbDo6a0NvbnN0SW5pdCk7CisvLworLy8gVGhlIGxpbmUgYWJvdmUgZGVjbGFyZXMg
YSBnbG9iYWwgdmFyaWFibGUgb2YgdHlwZSBhYnNsOjpNdXRleCB3aGljaCBjYW4gYmUKKy8vIGFj
Y2Vzc2VkIGF0IGFueSBwb2ludCBkdXJpbmcgc3RhcnR1cCBvciBzaHV0ZG93bi4gIGdsb2JhbF9t
dXRleCdzIGRlc3RydWN0b3IKKy8vIHdpbGwgc3RpbGwgcnVuLCBidXQgd2lsbCBub3QgaW52YWxp
ZGF0ZSB0aGUgb2JqZWN0LiAgTm90ZSB0aGF0IEMrKyBzcGVjaWZpZXMKKy8vIHRoYXQgYWNjZXNz
aW5nIGFuIG9iamVjdCBhZnRlciBpdHMgZGVzdHJ1Y3RvciBoYXMgcnVuIHJlc3VsdHMgaW4gdW5k
ZWZpbmVkCisvLyBiZWhhdmlvciwgYnV0IHRoaXMgcGF0dGVybiB3b3JrcyBvbiB0aGUgdG9vbGNo
YWlucyB3ZSBzdXBwb3J0LgorLy8KKy8vIFRoZSBhYnNsOjprQ29uc3RJbml0IHRhZyBzaG91bGQg
b25seSBiZSB1c2VkIHRvIGRlZmluZSBvYmplY3RzIHdpdGggc3RhdGljCisvLyBvciB0aHJlYWRf
bG9jYWwgc3RvcmFnZSBkdXJhdGlvbi4KKworbmFtZXNwYWNlIGFic2wgeworCitlbnVtIENvbnN0
SW5pdFR5cGUgeworICBrQ29uc3RJbml0LAorfTsKKworfSAgLy8gbmFtZXNwYWNlIGFic2wKKwor
I2VuZGlmICAvLyBBQlNMX0JBU0VfQ09OU1RfSU5JVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9keW5hbWljX2Fubm90YXRpb25zLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9keW5hbWljX2Fubm90YXRpb25z
LmNjCmluZGV4IGI5N2ZhM2E4YjRhOWJjOGU2N2VkMzcyNmQ0NTI0MWJkZTVkYTEyZWIuLjE0MTEw
OTM3NTc0NzRjOTM2NzU2ZTJlNGEzYzIxMjQ0OWMzNDU2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvZHluYW1pY19hbm5vdGF0aW9ucy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3Rh
dGlvbnMuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvZHluYW1pY19hbm5vdGF0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9keW5h
bWljX2Fubm90YXRpb25zLmgKaW5kZXggODgwNDhiMGZiYjFmNGY3OTJiMGE3NGU0NjVkOTkxMGU3
ODA0ZjU4Zi4uYzE1NmUwNjM5N2UyYzFhN2U1ZmE3MDM2Y2MxOGUyZDgxOTBhNzJkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9keW5hbWljX2Fubm90YXRpb25zLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9k
eW5hbWljX2Fubm90YXRpb25zLmgKQEAgLTUsNyArNSw3IEBACiAgKiB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgKiBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICAqCi0gKiAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICogICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAgKgogICogVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICogZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTEzOSw2ICsxMzksNyBAQAogICAjZGVmaW5lIEFCU0xfQU5OT1RBVEVfTUVNT1JZ
X0lTX0lOSVRJQUxJWkVEKGFkZHJlc3MsIHNpemUpIC8qIGVtcHR5ICovCiAgICNkZWZpbmUgQUJT
TF9BTk5PVEFURV9NRU1PUllfSVNfVU5JTklUSUFMSVpFRChhZGRyZXNzLCBzaXplKSAvKiBlbXB0
eSAqLwogI2VuZGlmICAvKiBBQlNMX0RZTkFNSUNfQU5OT1RBVElPTlNfRU5BQkxFRCB8fCBNRU1P
UllfU0FOSVRJWkVSICovCisKIC8qIFRPRE8oZGVsZXNsZXkpIC0tIFJlcGxhY2UgX19DTEFOR19T
VVBQT1JUX0RZTl9BTk5PVEFUSU9OX18gd2l0aCB0aGUKICAgIGFwcHJvcHJpYXRlIGZlYXR1cmUg
SUQuICovCiAjaWYgZGVmaW5lZChfX2NsYW5nX18pICYmICghZGVmaW5lZChTV0lHKSkgXApAQCAt
Mzc2LDcgKzM3Nyw3IEBAIGlubGluZSBUIEFCU0xfQU5OT1RBVEVfVU5QUk9URUNURURfUkVBRChj
b25zdCB2b2xhdGlsZSBUICZ4KSB7IC8qIE5PTElOVCAqLwogICBzdHJ1Y3QgeyBjaGFyIHhbOF0g
X19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDgpKSk7IH0gbmFtZQogI2Vsc2UKICNkZWZpbmUgQUJT
TF9BTk5PVEFURV9DT05USUdVT1VTX0NPTlRBSU5FUihiZWcsIGVuZCwgb2xkX21pZCwgbmV3X21p
ZCkKLSNkZWZpbmUgQUJTTF9BRERSRVNTX1NBTklUSVpFUl9SRURaT05FKG5hbWUpCisjZGVmaW5l
IEFCU0xfQUREUkVTU19TQU5JVElaRVJfUkVEWk9ORShuYW1lKSBzdGF0aWNfYXNzZXJ0KHRydWUs
ICIiKQogI2VuZGlmICAvLyBBRERSRVNTX1NBTklUSVpFUgogCiAvKiBVbmRlZmluZSB0aGUgbWFj
cm9zIGludGVuZGVkIG9ubHkgaW4gdGhpcyBmaWxlLiAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvZXhjZXB0aW9u
X3NhZmV0eV90ZXN0aW5nX3Rlc3QuY2MKaW5kZXggMTA2YmMzNGIwMGY3Y2UyN2E3YjQzNzUyYWQ3
MTA2OTlmYmM0NTVmMi4uMmVkMzg2MDY1ZjBhNzE0MjlkNDhiMzUxYmIwZWNhM2MyZDIxZjZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZ190ZXN0LmNjCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC03NzAsNiArNzcwLDE4IEBAIFRF
U1QoRXhjZXB0aW9uQ2hlY2tUZXN0LCBNb2RpZnlpbmdDaGVja2VyKSB7CiAgICAgICAgICAgICAg
ICAgICAuVGVzdChpbnZva2VyKSk7CiB9CiAKK1RFU1QoRXhjZXB0aW9uU2FmZXR5VGVzdGVyVGVz
dCwgUmVzZXRzQ291bnRkb3duKSB7CisgIGF1dG8gdGVzdCA9CisgICAgICB0ZXN0aW5nOjpNYWtl
RXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKKyAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShUaHJv
d2luZ1ZhbHVlPD4oKSkKKyAgICAgICAgICAuV2l0aENvbnRyYWN0cyhbXShUaHJvd2luZ1ZhbHVl
PD4qKSB7IHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7IH0pCisgICAgICAgICAgLldpdGhPcGVy
YXRpb24oW10oVGhyb3dpbmdWYWx1ZTw+Kikge30pOworICBBU1NFUlRfVFJVRSh0ZXN0LlRlc3Qo
KSk7CisgIC8vIElmIHRoZSBjb3VudGRvd24gaXNuJ3QgcmVzZXQgYmVjYXVzZSB0aGVyZSB3ZXJl
IG5vIGV4Y2VwdGlvbnMgdGhyb3duLCB0aGVuCisgIC8vIHRoaXMgd2lsbCBmYWlsIHdpdGggYSB0
ZXJtaW5hdGlvbiBmcm9tIGFuIHVuaGFuZGxlZCBleGNlcHRpb24KKyAgRVhQRUNUX1RSVUUodGVz
dC5UZXN0KCkpOworfQorCiBzdHJ1Y3QgTm9uQ29weWFibGUgOiBwdWJsaWMgTm9uTmVnYXRpdmUg
ewogICBOb25Db3B5YWJsZShjb25zdCBOb25Db3B5YWJsZSYpID0gZGVsZXRlOwogICBOb25Db3B5
YWJsZSgpIDogTm9uTmVnYXRpdmV7MH0ge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW5saW5l
X3ZhcmlhYmxlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lubGluZV92YXJpYWJsZV90ZXN0LmNjCmlu
ZGV4IDU0OTkxODlhM2RhOTZhMzNiMDZiMjY3MGE3MjQxMDdjM2Q2NzNhNWYuLjQ3MWY3MDYzM2Nh
ZDA1MWQ2NzIwODM1MDBkMTM0MTc3ZTA0NjM0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW5s
aW5lX3ZhcmlhYmxlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVz
dC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVzdF9hLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbmxp
bmVfdmFyaWFibGVfdGVzdF9hLmNjCmluZGV4IGEzYmYzYjY4YjNjZmNhNGZhMDIwOTg5OGM3NjFi
YzI2ZDc4OGUxNjcuLmQwYjhlN2QzOTRiMzhmMjVjN2JlM2MwYzU1OTc2MjRmYWNkMGFlNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW5saW5lX3ZhcmlhYmxlX3Rlc3RfYS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2lubGluZV92YXJpYWJsZV90ZXN0X2EuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW5saW5lX3ZhcmlhYmxl
X3Rlc3RfYi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW5saW5lX3ZhcmlhYmxlX3Rlc3RfYi5jYwppbmRleCBi
NGI5MzkzYTU1ODVjZjU4ZTUxMTA0ZDkyMTlhOGM5OWEwOWI3OWI1Li45MzFkNTZkMDU3MTQxYzkx
NTE5NWI0NDMxMzIyN2JjM2ViNWM4MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lubGluZV92
YXJpYWJsZV90ZXN0X2IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbmxpbmVfdmFyaWFibGVfdGVzdF9i
LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL2F0b21pY19ob29rLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L2F0b21pY19ob29rLmgKaW5kZXggYjQ1ODUxMWIwYzczNDk0MGQxYWIxODFiODIxMmM1MWJlMDM1
NGQ3Yi4uODAzZTkwNTk3NjFjZmUxMTIwMzEzNDJmYmQ0YzVlZWY5NDA0ODNiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9hdG9taWNfaG9vay5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvYXRvbWljX2hvb2suaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9hdG9taWNfaG9va190ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9hdG9taWNfaG9va190ZXN0LmNjCmluZGV4IGNmNzQwNzU3
M2E1MmI0N2YzMjZhOWNhMDEyZTQ3ZGVkYmFmN2JhZDcuLmVjYzgwNDA2YjAwMzQyMWE1OWQzNzhk
MDVjZWIxMmQxMzc5NDBhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvYXRvbWlj
X2hvb2tfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2F0b21pY19ob29rX3Rlc3Qu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvaW50ZXJuYWwvYml0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgK
aW5kZXggYmM3ZmFhZWUzYjI1N2VkYzM3Y2Q5MDkwYjc3NzdkNzAzNWQzYzNiOC4uYjA3ODBmMmQx
MjFjYzBlMWNhZTc5YmY4MDM1NmFiNDRhYjdjNjk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9iaXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvYml0c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzX3Rlc3QuY2MK
aW5kZXggZTVkOTkxZDY3MjU4NzRhYTlkYjgwM2IxNTExNzgxN2FhMzA4NmI1MS4uNzg1NWZhNjI5
NzI0NTk5ZWU0OTQ5Zjc3MGY0YjQ3ZjJkMDExOWI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9iaXRzX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzX3Rlc3Qu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvaW50ZXJuYWwvY21ha2VfdGhyZWFkX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL2NtYWtlX3RocmVhZF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MGJiMjRlYjdiNGEyNGUy
YzA5YzQ2NDdhZWNkY2E2YTc5ZDYxMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL2NtYWtlX3RocmVhZF90ZXN0LmNjCkBAIC0wLDAgKzEsMjIgQEAKKy8vIENvcHlyaWdo
dCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5j
bHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eS5oIgorCitpbnQgbWFpbigp
IHsKKyAgYXV0byogdGlkID0gYWJzbDo6YmFzZV9pbnRlcm5hbDo6Q3VycmVudFRocmVhZElkZW50
aXR5SWZQcmVzZW50KCk7CisgIC8vIE1ha2Ugc3VyZSB0aGUgYWJvdmUgY2FsbCBjYW4ndCBiZSBv
cHRpbWl6ZWQgb3V0CisgIHN0ZDo6Y291dCA8PCAodm9pZCopdGlkIDw8IHN0ZDo6ZW5kbDsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvY3ljbGVjbG9jay5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvY3ljbGVjbG9jay5jYwppbmRleCBhNzQyZGYwMWY5NGE3MWNkNGNmMmE1MGJk
MDBmMTZjNjlhODE2MTYxLi5lOTg0NGI3MTc3YTE3ZWZiMGJhMTIwODYxMDIxZjgyMDg5NzU5NmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2N5Y2xlY2xvY2suY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9jeWNsZWNsb2NrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJhYnNsL2Jhc2Uv
aW50ZXJuYWwvY3ljbGVjbG9jay5oIgogCisjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGNo
cm9ubz4gIC8vIE5PTElOVChidWlsZC9jKysxMSkKIAogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRl
cm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaCIKQEAgLTUyLDE3ICs1Myw0MCBAQCBzdGF0aWMgY29u
c3RleHByIGludDMyX3Qga1NoaWZ0ID0gMjsKICNlbmRpZgogCiBzdGF0aWMgY29uc3RleHByIGRv
dWJsZSBrRnJlcXVlbmN5U2NhbGUgPSAxLjAgLyAoMSA8PCBrU2hpZnQpOworc3RhdGljIHN0ZDo6
YXRvbWljPEN5Y2xlQ2xvY2tTb3VyY2VGdW5jPiBjeWNsZV9jbG9ja19zb3VyY2U7CisKK0N5Y2xl
Q2xvY2tTb3VyY2VGdW5jIExvYWRDeWNsZUNsb2NrU291cmNlKCkgeworICAvLyBPcHRpbWl6ZSBm
b3IgdGhlIGNvbW1vbiBjYXNlIChubyBjYWxsYmFjaykgYnkgZmlyc3QgZG9pbmcgYSByZWxheGVk
IGxvYWQ7CisgIC8vIHRoaXMgaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgb24gbm9uLXg4NiBwbGF0
Zm9ybXMuCisgIGlmIChjeWNsZV9jbG9ja19zb3VyY2UubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKSA9PSBudWxscHRyKSB7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKyAgLy8gVGhp
cyBjb3JyZXNwb25kcyB0byB0aGUgc3RvcmUoc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSkgaW4K
KyAgLy8gQ3ljbGVDbG9ja1NvdXJjZTo6UmVnaXN0ZXIsIGFuZCBtYWtlcyBzdXJlIHRoYXQgYW55
IHVwZGF0ZXMgbWFkZSBwcmlvciB0bworICAvLyByZWdpc3RlcmluZyB0aGUgY2FsbGJhY2sgYXJl
IHZpc2libGUgdG8gdGhpcyB0aHJlYWQgYmVmb3JlIHRoZSBjYWxsYmFjayBpcworICAvLyBpbnZv
a2VkLgorICByZXR1cm4gY3ljbGVfY2xvY2tfc291cmNlLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJf
YWNxdWlyZSk7Cit9CiAKIH0gIC8vIG5hbWVzcGFjZQogCiBpbnQ2NF90IEN5Y2xlQ2xvY2s6Ok5v
dygpIHsKLSAgcmV0dXJuIGJhc2VfaW50ZXJuYWw6OlVuc2NhbGVkQ3ljbGVDbG9jazo6Tm93KCkg
Pj4ga1NoaWZ0OworICBhdXRvIGZuID0gTG9hZEN5Y2xlQ2xvY2tTb3VyY2UoKTsKKyAgaWYgKGZu
ID09IG51bGxwdHIpIHsKKyAgICByZXR1cm4gYmFzZV9pbnRlcm5hbDo6VW5zY2FsZWRDeWNsZUNs
b2NrOjpOb3coKSA+PiBrU2hpZnQ7CisgIH0KKyAgcmV0dXJuIGZuKCkgPj4ga1NoaWZ0OwogfQog
CiBkb3VibGUgQ3ljbGVDbG9jazo6RnJlcXVlbmN5KCkgewogICByZXR1cm4ga0ZyZXF1ZW5jeVNj
YWxlICogYmFzZV9pbnRlcm5hbDo6VW5zY2FsZWRDeWNsZUNsb2NrOjpGcmVxdWVuY3koKTsKIH0K
IAordm9pZCBDeWNsZUNsb2NrU291cmNlOjpSZWdpc3RlcihDeWNsZUNsb2NrU291cmNlRnVuYyBz
b3VyY2UpIHsKKyAgLy8gQ29ycmVzcG9uZHMgdG8gdGhlIGxvYWQoc3RkOjptZW1vcnlfb3JkZXJf
YWNxdWlyZSkgaW4gTG9hZEN5Y2xlQ2xvY2tTb3VyY2UuCisgIGN5Y2xlX2Nsb2NrX3NvdXJjZS5z
dG9yZShzb3VyY2UsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworfQorCiAjZWxzZQogCiBp
bnQ2NF90IEN5Y2xlQ2xvY2s6Ok5vdygpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvY3ljbGVjbG9jay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9jeWNsZWNsb2NrLmgKaW5kZXgg
NjBlOTcxNTgzYzU3OTNjMzI4Njc3OWRlZjM2OTQyMGU3ZTMyZTFkYi4uNzk0NTY0ZTEyZjE3YWY3
NjVkZjE5ZjkwYTQ4ZjFjODczYjdkZTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5h
bC9jeWNsZWNsb2NrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9jeWNsZWNsb2NrLmgKQEAg
LTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI4LDcgKzI4LDYgQEAK
IC8vIG5vdCBuZWNlc3NhcmlseSAiQ1BVIGN5Y2xlcyIgYW5kIGNvZGUgc2hvdWxkIG5vdCByZWx5
IG9uIHRoYXQgYmVoYXZpb3IsIGV2ZW4KIC8vIGlmIGV4cGVyaW1lbnRhbGx5IG9ic2VydmVkLgog
Ly8KLS8vCiAvLyBBbiBhcmJpdHJhcnkgb2Zmc2V0IG1heSBoYXZlIGJlZW4gYWRkZWQgdG8gdGhl
IGNvdW50ZXIgYXQgcG93ZXIgb24uCiAvLwogLy8gT24gc29tZSBwbGF0Zm9ybXMsIHRoZSByYXRl
IGFuZCBvZmZzZXQgb2YgdGhlIGNvdW50ZXIgbWF5IGRpZmZlcgpAQCAtNzEsNiArNzAsMjAgQEAg
Y2xhc3MgQ3ljbGVDbG9jayB7CiAgIEN5Y2xlQ2xvY2smIG9wZXJhdG9yPShjb25zdCBDeWNsZUNs
b2NrJikgPSBkZWxldGU7CiB9OwogCit1c2luZyBDeWNsZUNsb2NrU291cmNlRnVuYyA9IGludDY0
X3QgKCopKCk7CisKK2NsYXNzIEN5Y2xlQ2xvY2tTb3VyY2UgeworIHByaXZhdGU6CisgIC8vIEN5
Y2xlQ2xvY2tTb3VyY2U6OlJlZ2lzdGVyKCkKKyAgLy8KKyAgLy8gUmVnaXN0ZXIgYSBmdW5jdGlv
biB0aGF0IHByb3ZpZGVzIGFuIGFsdGVybmF0ZSBzb3VyY2UgZm9yIHRoZSB1bnNjYWxlZCBDUFUK
KyAgLy8gY3ljbGUgY291bnQgdmFsdWUuIFRoZSBzb3VyY2UgZnVuY3Rpb24gbXVzdCBiZSBhc3lu
YyBzaWduYWwgc2FmZSwgbXVzdCBub3QKKyAgLy8gY2FsbCBDeWNsZUNsb2NrOjpOb3coKSwgYW5k
IG11c3QgaGF2ZSBhIGZyZXF1ZW5jeSB0aGF0IG1hdGNoZXMgdGhhdCBvZiB0aGUKKyAgLy8gdW5z
Y2FsZWQgY2xvY2sgdXNlZCBieSBDeWNsZUNsb2NrLiBBIG51bGxwdHIgdmFsdWUgcmVzZXRzIEN5
Y2xlQ2xvY2sgdG8gdXNlCisgIC8vIHRoZSBkZWZhdWx0IHNvdXJjZS4KKyAgc3RhdGljIHZvaWQg
UmVnaXN0ZXIoQ3ljbGVDbG9ja1NvdXJjZUZ1bmMgc291cmNlKTsKK307CisKIH0gIC8vIG5hbWVz
cGFjZSBiYXNlX2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL2RpcmVjdF9tbWFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2Rp
cmVjdF9tbWFwLmgKaW5kZXggMDQyNmUxMTg5MGI2ODA1ODYwMTJmMDU2MzMyNjNjMDlhMTNhMWRh
Mi4uMDQwMWRkZmE3ZTYwNzk1ZjI0OWNmMjQzZWM0YjZmYjAwODExNWI3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9kaXJlY3RfbW1hcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvZGlyZWN0X21tYXAuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtNzUsNyArNzUsMTEgQEAgaW5saW5lIHZvaWQqIERpcmVjdE1tYXAodm9pZCogc3RhcnQs
IHNpemVfdCBsZW5ndGgsIGludCBwcm90LCBpbnQgZmxhZ3MsIGludCBmZCwKICAgLy8gT24gdGhl
c2UgYXJjaGl0ZWN0dXJlcywgaW1wbGVtZW50IG1tYXAgd2l0aCBtbWFwMi4KICAgc3RhdGljIGlu
dCBwYWdlc2l6ZSA9IDA7CiAgIGlmIChwYWdlc2l6ZSA9PSAwKSB7CisjaWYgZGVmaW5lZChfX3dh
c21fXykgfHwgZGVmaW5lZChfX2FzbWpzX18pCiAgICAgcGFnZXNpemUgPSBnZXRwYWdlc2l6ZSgp
OworI2Vsc2UKKyAgICBwYWdlc2l6ZSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKyNlbmRpZgog
ICB9CiAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCAlIHBhZ2VzaXplICE9IDApIHsKICAgICBl
cnJubyA9IEVJTlZBTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL2VuZGlhbi5oCmluZGV4IGVkYzEwZjEwYTVhYWEzNTQ4YTNj
NDUxYmM1NzVlNTIxZjEyMjc1NmUuLjI5NmU5MmQ5ZTU1MGRkOTNjNDM1MWU3ZWQ5NTUzNDNlNDQw
MmU1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9lbmRpYW4uaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtMjAsNyArMjAsNyBAQAogI2lmZGVmIF9NU0NfVkVSCiAjaW5jbHVkZSA8
c3RkbGliLmg+ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNlbGlmIGRlZmluZWQoX19BUFBM
RV9fKQotLy8gTWFjIE9TIFggLyBEYXJ3aW4gZmVhdHVyZXMKKy8vIG1hY09TIC8gRGFyd2luIGZl
YXR1cmVzCiAjaW5jbHVkZSA8bGlia2Vybi9PU0J5dGVPcmRlci5oPgogI2VsaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKICNpbmNsdWRlIDxzeXMvZW5kaWFuLmg+CkBAIC03NSwyMSArNzUsMjEgQEAg
aW5saW5lIHVpbnQ2NF90IGdic3dhcF82NCh1aW50NjRfdCBob3N0X2ludCkgewogICBpZiAoX19i
dWlsdGluX2NvbnN0YW50X3AoaG9zdF9pbnQpKSB7CiAgICAgcmV0dXJuIF9fYnN3YXBfY29uc3Rh
bnRfNjQoaG9zdF9pbnQpOwogICB9IGVsc2UgewotICAgIHJlZ2lzdGVyIHVpbnQ2NF90IHJlc3Vs
dDsKKyAgICB1aW50NjRfdCByZXN1bHQ7CiAgICAgX19hc21fXygiYnN3YXAgJTAiIDogIj1yIihy
ZXN1bHQpIDogIjAiKGhvc3RfaW50KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQogI2VsaWYg
ZGVmaW5lZChfX0dMSUJDX18pCiAgIHJldHVybiBic3dhcF82NChob3N0X2ludCk7CiAjZWxzZQot
ICByZXR1cm4gKCgoeCAmIHVpbnQ2NF90eygweEZGfSkgPDwgNTYpIHwKLSAgICAgICAgICAoKHgg
JiB1aW50NjRfdHsoMHhGRjAwfSkgPDwgNDApIHwKLSAgICAgICAgICAoKHggJiB1aW50NjRfdHso
MHhGRjAwMDB9KSA8PCAyNCkgfAotICAgICAgICAgICgoeCAmIHVpbnQ2NF90eygweEZGMDAwMDAw
fSkgPDwgOCkgfAotICAgICAgICAgICgoeCAmIHVpbnQ2NF90eygweEZGMDAwMDAwMDB9KSA+PiA4
KSB8Ci0gICAgICAgICAgKCh4ICYgdWludDY0X3R7KDB4RkYwMDAwMDAwMDAwfSkgPj4gMjQpIHwK
LSAgICAgICAgICAoKHggJiB1aW50NjRfdHsoMHhGRjAwMDAwMDAwMDAwMH0pID4+IDQwKSB8Ci0g
ICAgICAgICAgKCh4ICYgdWludDY0X3R7KDB4RkYwMDAwMDAwMDAwMDAwMH0pID4+IDU2KSk7Cisg
IHJldHVybiAoKChob3N0X2ludCAmIHVpbnQ2NF90ezB4RkZ9KSA8PCA1NikgfAorICAgICAgICAg
ICgoaG9zdF9pbnQgJiB1aW50NjRfdHsweEZGMDB9KSA8PCA0MCkgfAorICAgICAgICAgICgoaG9z
dF9pbnQgJiB1aW50NjRfdHsweEZGMDAwMH0pIDw8IDI0KSB8CisgICAgICAgICAgKChob3N0X2lu
dCAmIHVpbnQ2NF90ezB4RkYwMDAwMDB9KSA8PCA4KSB8CisgICAgICAgICAgKChob3N0X2ludCAm
IHVpbnQ2NF90ezB4RkYwMDAwMDAwMH0pID4+IDgpIHwKKyAgICAgICAgICAoKGhvc3RfaW50ICYg
dWludDY0X3R7MHhGRjAwMDAwMDAwMDB9KSA+PiAyNCkgfAorICAgICAgICAgICgoaG9zdF9pbnQg
JiB1aW50NjRfdHsweEZGMDAwMDAwMDAwMDAwfSkgPj4gNDApIHwKKyAgICAgICAgICAoKGhvc3Rf
aW50ICYgdWludDY0X3R7MHhGRjAwMDAwMDAwMDAwMDAwfSkgPj4gNTYpKTsKICNlbmRpZiAgLy8g
YnN3YXBfNjQKIH0KIApAQCAtOTcsOCArOTcsMTAgQEAgaW5saW5lIHVpbnQzMl90IGdic3dhcF8z
Mih1aW50MzJfdCBob3N0X2ludCkgewogI2lmIGRlZmluZWQoX19HTElCQ19fKQogICByZXR1cm4g
YnN3YXBfMzIoaG9zdF9pbnQpOwogI2Vsc2UKLSAgcmV0dXJuICgoKHggJiAweEZGKSA8PCAyNCkg
fCAoKHggJiAweEZGMDApIDw8IDgpIHwgKCh4ICYgMHhGRjAwMDApID4+IDgpIHwKLSAgICAgICAg
ICAoKHggJiAweEZGMDAwMDAwKSA+PiAyNCkpOworICByZXR1cm4gKCgoaG9zdF9pbnQgJiB1aW50
MzJfdHsweEZGfSkgPDwgMjQpIHwKKyAgICAgICAgICAoKGhvc3RfaW50ICYgdWludDMyX3R7MHhG
RjAwfSkgPDwgOCkgfAorICAgICAgICAgICgoaG9zdF9pbnQgJiB1aW50MzJfdHsweEZGMDAwMH0p
ID4+IDgpIHwKKyAgICAgICAgICAoKGhvc3RfaW50ICYgdWludDMyX3R7MHhGRjAwMDAwMH0pID4+
IDI0KSk7CiAjZW5kaWYKIH0KIApAQCAtMTA2LDcgKzEwOCw4IEBAIGlubGluZSB1aW50MTZfdCBn
YnN3YXBfMTYodWludDE2X3QgaG9zdF9pbnQpIHsKICNpZiBkZWZpbmVkKF9fR0xJQkNfXykKICAg
cmV0dXJuIGJzd2FwXzE2KGhvc3RfaW50KTsKICNlbHNlCi0gIHJldHVybiB1aW50MTZfdHsoKHgg
JiAweEZGKSA8PCA4KSB8ICgoeCAmIDB4RkYwMCkgPj4gOCl9OworICByZXR1cm4gKCgoaG9zdF9p
bnQgJiB1aW50MTZfdHsweEZGfSkgPDwgOCkgfAorICAgICAgICAgICgoaG9zdF9pbnQgJiB1aW50
MTZfdHsweEZGMDB9KSA+PiA4KSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9lbmRpYW5fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuX3Rl
c3QuY2MKaW5kZXggZTI3NjkxNTUzYmM2MjhjYWYxYmE5MTZhMzlkYzhhM2E5ZjJhODgxZi4uOThh
MDk5ZTQzZTdhMGNlN2YwM2JhMTE3MzFiNjYwNzI3NjY3ZTE1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9lbmRpYW5fdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2Vu
ZGlhbl90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmNjCmluZGV4
IGYxZDA4MWY3ZTUwZGQ2NmFlOTNiZDNkODYxMmVmMjFlMWY1MjE4NDMuLjZlZjQzMjVjODYxM2E0
N2NkNTgxMWVlNzVkYTQxMGQwYTFjYWM5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0yMyw2ICsyMywxMCBAQCBleGNlcHRpb25zX2ludGVybmFsOjpOb1Ro
cm93VGFnIG5vdGhyb3dfY3RvcjsKIAogZXhjZXB0aW9uc19pbnRlcm5hbDo6U3Ryb25nR3VhcmFu
dGVlVGFnVHlwZSBzdHJvbmdfZ3VhcmFudGVlOwogCitleGNlcHRpb25zX2ludGVybmFsOjpFeGNl
cHRpb25TYWZldHlUZXN0QnVpbGRlcjw+IE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKSB7Cisg
IHJldHVybiB7fTsKK30KKwogbmFtZXNwYWNlIGV4Y2VwdGlvbnNfaW50ZXJuYWwgewogCiBpbnQg
Y291bnRkb3duID0gLTE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlv
bl9zYWZldHlfdGVzdGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fc2FmZXR5
X3Rlc3RpbmcuaAppbmRleCA1NjY1YTFiNjdkYjJlYzRjYTJhZDgwZmZhMDZmZTZlOWNmYzQ5MWI5
Li5iZTM4YmE1NDllZjcyNmZjMjJiYTg0MGU0M2U5OWY0M2YxZDhiYmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJh
YnNsL21ldGEvdHlwZV90cmFpdHMuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3Zp
ZXcuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5oIgotI2luY2x1ZGUgImFi
c2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhYnNsL3V0aWxpdHkvdXRpbGl0eS5oIgog
CiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTEyNywxMCArMTI3LDggQEAgY2xhc3MgQ29uc3Ry
dWN0b3JUcmFja2VyIHsKICAgICAgIHZvaWQqIGFkZHJlc3MgPSBpdC5maXJzdDsKICAgICAgIFRy
YWNrZWRBZGRyZXNzJiB0cmFja2VkX2FkZHJlc3MgPSBpdC5zZWNvbmQ7CiAgICAgICBpZiAodHJh
Y2tlZF9hZGRyZXNzLmlzX2FsaXZlKSB7Ci0gICAgICAgIEFERF9GQUlMVVJFKCkgPDwgIk9iamVj
dCBhdCBhZGRyZXNzICIgPDwgYWRkcmVzcwotICAgICAgICAgICAgICAgICAgICAgIDw8ICIgd2l0
aCBjb3VudGRvd24gb2YgIiA8PCBjb3VudGRvd25fCi0gICAgICAgICAgICAgICAgICAgICAgPDwg
IiB3YXMgbm90IGRlc3Ryb3llZCBbIiA8PCB0cmFja2VkX2FkZHJlc3MuZGVzY3JpcHRpb24KLSAg
ICAgICAgICAgICAgICAgICAgICA8PCAiXSI7CisgICAgICAgIEFERF9GQUlMVVJFKCkgPDwgRXJy
b3JNZXNzYWdlKGFkZHJlc3MsIHRyYWNrZWRfYWRkcmVzcy5kZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRkb3duXywgIk9iamVjdCB3YXMgbm90
IGRlc3Ryb3llZC4iKTsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTE0MSwxMSArMTM5LDExIEBA
IGNsYXNzIENvbnN0cnVjdG9yVHJhY2tlciB7CiAgICAgVHJhY2tlZEFkZHJlc3MmIHRyYWNrZWRf
YWRkcmVzcyA9CiAgICAgICAgIGN1cnJlbnRfdHJhY2tlcl9pbnN0YW5jZV8tPmFkZHJlc3NfbWFw
X1thZGRyZXNzXTsKICAgICBpZiAodHJhY2tlZF9hZGRyZXNzLmlzX2FsaXZlKSB7Ci0gICAgICBB
RERfRkFJTFVSRSgpIDw8ICJPYmplY3QgYXQgYWRkcmVzcyAiIDw8IGFkZHJlc3MgPDwgIiB3aXRo
IGNvdW50ZG93biBvZiAiCi0gICAgICAgICAgICAgICAgICAgIDw8IGN1cnJlbnRfdHJhY2tlcl9p
bnN0YW5jZV8tPmNvdW50ZG93bl8KLSAgICAgICAgICAgICAgICAgICAgPDwgIiB3YXMgcmUtY29u
c3RydWN0ZWQuIFByZXZpb3VzbHk6IFsiCi0gICAgICAgICAgICAgICAgICAgIDw8IHRyYWNrZWRf
YWRkcmVzcy5kZXNjcmlwdGlvbiA8PCAiXSBOb3c6IFsiIDw8IGRlc2NyaXB0aW9uCi0gICAgICAg
ICAgICAgICAgICAgIDw8ICJdIjsKKyAgICAgIEFERF9GQUlMVVJFKCkgPDwgRXJyb3JNZXNzYWdl
KAorICAgICAgICAgIGFkZHJlc3MsIHRyYWNrZWRfYWRkcmVzcy5kZXNjcmlwdGlvbiwKKyAgICAg
ICAgICBjdXJyZW50X3RyYWNrZXJfaW5zdGFuY2VfLT5jb3VudGRvd25fLAorICAgICAgICAgICJP
YmplY3Qgd2FzIHJlLWNvbnN0cnVjdGVkLiBDdXJyZW50IG9iamVjdCB3YXMgY29uc3RydWN0ZWQg
YnkgIiArCisgICAgICAgICAgICAgIGRlc2NyaXB0aW9uKTsKICAgICB9CiAgICAgdHJhY2tlZF9h
ZGRyZXNzID0ge3RydWUsIHN0ZDo6bW92ZShkZXNjcmlwdGlvbil9OwogICB9CkBAIC0xNTksMTAg
KzE1Nyw5IEBAIGNsYXNzIENvbnN0cnVjdG9yVHJhY2tlciB7CiAKICAgICBUcmFja2VkQWRkcmVz
cyYgdHJhY2tlZF9hZGRyZXNzID0gaXQtPnNlY29uZDsKICAgICBpZiAoIXRyYWNrZWRfYWRkcmVz
cy5pc19hbGl2ZSkgewotICAgICAgQUREX0ZBSUxVUkUoKSA8PCAiT2JqZWN0IGF0IGFkZHJlc3Mg
IiA8PCBhZGRyZXNzIDw8ICIgd2l0aCBjb3VudGRvd24gb2YgIgotICAgICAgICAgICAgICAgICAg
ICA8PCBjdXJyZW50X3RyYWNrZXJfaW5zdGFuY2VfLT5jb3VudGRvd25fCi0gICAgICAgICAgICAg
ICAgICAgIDw8ICIgd2FzIHJlLWRlc3Ryb3llZCBvciBjcmVhdGVkIHByaW9yIHRvIGNvbnN0cnVj
dGlvbiAiCi0gICAgICAgICAgICAgICAgICAgIDw8ICJ0cmFja2luZyBbIiA8PCB0cmFja2VkX2Fk
ZHJlc3MuZGVzY3JpcHRpb24gPDwgIl0iOworICAgICAgQUREX0ZBSUxVUkUoKSA8PCBFcnJvck1l
c3NhZ2UoYWRkcmVzcywgdHJhY2tlZF9hZGRyZXNzLmRlc2NyaXB0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF90cmFja2VyX2luc3RhbmNlXy0+Y291bnRk
b3duXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPYmplY3Qgd2FzIHJl
LWRlc3Ryb3llZC4iKTsKICAgICB9CiAgICAgdHJhY2tlZF9hZGRyZXNzLmlzX2FsaXZlID0gZmFs
c2U7CiAgIH0KQEAgLTE3Miw2ICsxNjksMTggQEAgY2xhc3MgQ29uc3RydWN0b3JUcmFja2VyIHsK
ICAgICByZXR1cm4gY3VycmVudF90cmFja2VyX2luc3RhbmNlXyAhPSBudWxscHRyOwogICB9CiAK
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVycm9yTWVzc2FnZSh2b2lkKiBhZGRyZXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhZGRyZXNzX2Rl
c2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudGRv
d24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGVycm9yX2Rlc2NyaXB0aW9uKSB7CisgICAgcmV0dXJuIGFic2w6OlN1YnN0aXR1dGUoCisgICAg
ICAgICJXaXRoIGNvdW5kdG93biBhdCAkMDpcbiIKKyAgICAgICAgIiAgJDFcbiIKKyAgICAgICAg
IiAgT2JqZWN0IG9yaWdpbmFsbHkgY29uc3RydWN0ZWQgYnkgJDJcbiIKKyAgICAgICAgIiAgT2Jq
ZWN0IGFkZHJlc3M6ICQzXG4iLAorICAgICAgICBjb3VudGRvd24sIGVycm9yX2Rlc2NyaXB0aW9u
LCBhZGRyZXNzX2Rlc2NyaXB0aW9uLCBhZGRyZXNzKTsKKyAgfQorCiAgIHN0ZDo6dW5vcmRlcmVk
X21hcDx2b2lkKiwgVHJhY2tlZEFkZHJlc3M+IGFkZHJlc3NfbWFwXzsKICAgaW50IGNvdW50ZG93
bl87CiAKQEAgLTE5MCw3MCArMTk5LDYgQEAgY2xhc3MgVHJhY2tlZE9iamVjdCB7CiAKICAgflRy
YWNrZWRPYmplY3QoKSBub2V4Y2VwdCB7IENvbnN0cnVjdG9yVHJhY2tlcjo6T2JqZWN0RGVzdHJ1
Y3RlZCh0aGlzKTsgfQogfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZhY3RvcnksIHR5cGVuYW1l
IE9wZXJhdGlvbiwgdHlwZW5hbWUgQ29udHJhY3Q+Ci1hYnNsOjpvcHRpb25hbDx0ZXN0aW5nOjpB
c3NlcnRpb25SZXN1bHQ+IFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duSW1wbCgKLSAgICBj
b25zdCBGYWN0b3J5JiBmYWN0b3J5LCBjb25zdCBPcGVyYXRpb24mIG9wZXJhdGlvbiwgaW50IGNv
dW50LAotICAgIGNvbnN0IENvbnRyYWN0JiBjb250cmFjdCkgewotICBhdXRvIHRfcHRyID0gZmFj
dG9yeSgpOwotICBhYnNsOjpvcHRpb25hbDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+IGN1cnJl
bnRfcmVzOwotICBTZXRDb3VudGRvd24oY291bnQpOwotICB0cnkgewotICAgIG9wZXJhdGlvbih0
X3B0ci5nZXQoKSk7Ci0gIH0gY2F0Y2ggKGNvbnN0IGV4Y2VwdGlvbnNfaW50ZXJuYWw6OlRlc3RF
eGNlcHRpb24mIGUpIHsKLSAgICBjdXJyZW50X3Jlcy5lbXBsYWNlKGNvbnRyYWN0KHRfcHRyLmdl
dCgpKSk7Ci0gICAgaWYgKCFjdXJyZW50X3Jlcy52YWx1ZSgpKSB7Ci0gICAgICAqY3VycmVudF9y
ZXMgPDwgZS53aGF0KCkgPDwgIiBmYWlsZWQgY29udHJhY3QgY2hlY2siOwotICAgIH0KLSAgfQot
ICBVbnNldENvdW50ZG93bigpOwotICByZXR1cm4gY3VycmVudF9yZXM7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24+Ci1hYnNsOjpvcHRpb25hbDx0
ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+IFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duSW1w
bCgKLSAgICBjb25zdCBGYWN0b3J5JiBmYWN0b3J5LCBjb25zdCBPcGVyYXRpb24mIG9wZXJhdGlv
biwgaW50IGNvdW50LAotICAgIFN0cm9uZ0d1YXJhbnRlZVRhZ1R5cGUpIHsKLSAgdXNpbmcgVFB0
ciA9IHR5cGVuYW1lIGRlY2x0eXBlKGZhY3RvcnkoKSk6OnBvaW50ZXI7Ci0gIGF1dG8gdF9pc19z
dHJvbmcgPSBbJl0oVFB0ciB0KSB7IHJldHVybiAqdCA9PSAqZmFjdG9yeSgpOyB9OwotICByZXR1
cm4gVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd25JbXBsKGZhY3RvcnksIG9wZXJhdGlvbiwg
Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdF9pc19z
dHJvbmcpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0
aW9uLCB0eXBlbmFtZSBDb250cmFjdD4KLWludCBUZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93
bigKLSAgICBjb25zdCBGYWN0b3J5JiBmYWN0b3J5LCBjb25zdCBPcGVyYXRpb24mIG9wZXJhdGlv
biwgaW50IGNvdW50LAotICAgIGNvbnN0IENvbnRyYWN0JiBjb250cmFjdCwKLSAgICBhYnNsOjpv
cHRpb25hbDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+KiByZWR1Y2VkX3JlcykgewotICAvLyBJ
ZiByZWR1Y2VkX3JlcyBpcyBlbXB0eSwgaXQgbWVhbnMgdGhlIGN1cnJlbnQgY2FsbCB0bwotICAv
LyBUZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93biguLi4pIGlzIHRoZSBmaXJzdCB0ZXN0IGJl
aW5nIHJ1biBzbyB3ZSBkbwotICAvLyB3YW50IHRvIHJ1biBpdC4gQWx0ZXJuYXRpdmVseSwgaWYg
aXQncyBub3QgZW1wdHkgKG1lYW5pbmcgYSBwcmV2aW91cyB0ZXN0Ci0gIC8vIGhhcyBydW4pIHdl
IHdhbnQgdG8gY2hlY2sgaWYgaXQgcGFzc2VkLiBJZiB0aGUgcHJldmlvdXMgdGVzdCBkaWQgcGFz
cywgd2UKLSAgLy8gd2FudCB0byBjb250aW5lIHJ1bm5pbmcgdGVzdHMgc28gd2UgZG8gd2FudCB0
byBydW4gdGhlIGN1cnJlbnQgb25lLiBJZiBpdAotICAvLyBmYWlsZWQsIHdlIHdhbnQgdG8gc2hv
cnQgY2lyY3VpdCBzbyBhcyBub3QgdG8gb3ZlcndyaXRlIHRoZSBBc3NlcnRpb25SZXN1bHQKLSAg
Ly8gb3V0cHV0LiBJZiB0aGF0J3MgdGhlIGNhc2UsIHdlIGRvIG5vdCBydW4gdGhlIGN1cnJlbnQg
dGVzdCBhbmQgaW5zdGVhZCB3ZQotICAvLyBzaW1wbHkgcmV0dXJuLgotICBpZiAoIXJlZHVjZWRf
cmVzLT5oYXNfdmFsdWUoKSB8fCByZWR1Y2VkX3Jlcy0+dmFsdWUoKSkgewotICAgICpyZWR1Y2Vk
X3JlcyA9Ci0gICAgICAgIFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duSW1wbChmYWN0b3J5
LCBvcGVyYXRpb24sIGNvdW50LCBjb250cmFjdCk7Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24sIHR5cGVuYW1lLi4u
IENvbnRyYWN0cz4KLWlubGluZSBhYnNsOjpvcHRpb25hbDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1
bHQ+IFRlc3RBbGxDb250cmFjdHNBdENvdW50ZG93bigKLSAgICBjb25zdCBGYWN0b3J5JiBmYWN0
b3J5LCBjb25zdCBPcGVyYXRpb24mIG9wZXJhdGlvbiwgaW50IGNvdW50LAotICAgIGNvbnN0IENv
bnRyYWN0cyYuLi4gY29udHJhY3RzKSB7Ci0gIGFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2Vy
dGlvblJlc3VsdD4gcmVkdWNlZF9yZXM7Ci0KLSAgLy8gUnVuIGVhY2ggY2hlY2tlciwgc2hvcnQg
Y2lyY3VpdGluZyBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZQotICBpbnQgZHVtbXlbXSA9IHsKLSAg
ICAgIDAsIChUZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93bihmYWN0b3J5LCBvcGVyYXRpb24s
IGNvdW50LCBjb250cmFjdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnJlZHVjZWRfcmVzKSkuLi59OwotICBzdGF0aWNfY2FzdDx2b2lkPihkdW1teSk7Ci0gIHJl
dHVybiByZWR1Y2VkX3JlczsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIGV4Y2VwdGlvbnNfaW50ZXJu
YWwKIAogZXh0ZXJuIGV4Y2VwdGlvbnNfaW50ZXJuYWw6Ok5vVGhyb3dUYWcgbm90aHJvd19jdG9y
OwpAQCAtNjEzLDggKzU1OCw4IEBAIGNsYXNzIFRocm93aW5nVmFsdWUgOiBwcml2YXRlIGV4Y2Vw
dGlvbnNfaW50ZXJuYWw6OlRyYWNrZWRPYmplY3QgewogICAvLyBXZSBwcm92aWRlIGJvdGggcmVn
dWxhciBhbmQgdGVtcGxhdGVkIG9wZXJhdG9yIGRlbGV0ZSBiZWNhdXNlIGlmIG9ubHkgdGhlCiAg
IC8vIHRlbXBsYXRlZCB2ZXJzaW9uIGlzIHByb3ZpZGVkIGFzIHdlIGRpZCB3aXRoIG9wZXJhdG9y
IG5ldywgdGhlIGNvbXBpbGVyIGhhcwogICAvLyBubyB3YXkgb2Yga25vd2luZyB3aGljaCBvdmVy
bG9hZCBvZiBvcGVyYXRvciBkZWxldGUgdG8gY2FsbC4gU2VlCi0gIC8vIGh0dHA6Ly9lbi5jcHBy
ZWZlcmVuY2UuY29tL3cvY3BwL21lbW9yeS9uZXcvb3BlcmF0b3JfZGVsZXRlIGFuZAotICAvLyBo
dHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9kZWxldGUgZm9yIHRoZSBn
b3J5IGRldGFpbHMuCisgIC8vIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9tZW1v
cnkvbmV3L29wZXJhdG9yX2RlbGV0ZSBhbmQKKyAgLy8gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2Uu
Y29tL3cvY3BwL2xhbmd1YWdlL2RlbGV0ZSBmb3IgdGhlIGdvcnkgZGV0YWlscy4KICAgdm9pZCBv
cGVyYXRvciBkZWxldGUodm9pZCogcCkgbm9leGNlcHQgeyA6Om9wZXJhdG9yIGRlbGV0ZShwKTsg
fQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgpAQCAtNzczLDcgKzcxOCw3IEBAIGNs
YXNzIFRocm93aW5nQWxsb2NhdG9yIDogcHJpdmF0ZSBleGNlcHRpb25zX2ludGVybmFsOjpUcmFj
a2VkT2JqZWN0IHsKICAgfQogCiAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0
IHsKLSAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkaWZmZXJlbmNlX3R5cGU+OjptYXgo
KSAvIHNpemVvZih2YWx1ZV90eXBlKTsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZGlmZmVyZW5jZV90eXBlPjo6bWF4KSgpIC8gc2l6ZW9mKHZhbHVlX3R5cGUpOwogICB9CiAKICAg
VGhyb3dpbmdBbGxvY2F0b3Igc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbigp
IG5vZXhjZXB0KApAQCAtODcxLDcgKzgxNiw3IEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBU
ZXN0Tm90aHJvd09wKGNvbnN0IE9wZXJhdGlvbiYgb3BlcmF0aW9uKSB7CiAKIG5hbWVzcGFjZSBl
eGNlcHRpb25zX2ludGVybmFsIHsKIAotLy8gRHVtbXkgc3RydWN0IGZvciBFeGNlcHRpb25TYWZl
dHlUZXN0ZXI8PiBwYXJ0aWFsIHN0YXRlLgorLy8gRHVtbXkgc3RydWN0IGZvciBFeGNlcHRpb25T
YWZldHlUZXN0QnVpbGRlcjw+IHBhcnRpYWwgc3RhdGUuCiBzdHJ1Y3QgVW5pbml0aWFsaXplZFQg
e307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtODkzLDIwICs4MzgsOTcgQEAgdXNpbmcg
RW5hYmxlSWZUZXN0YWJsZSA9IHR5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PAogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRmFjdG9yeSA9IFVuaW5pdGlhbGl6ZWRULAogICAgICAgICAgIHR5cGVuYW1l
IE9wZXJhdGlvbiA9IFVuaW5pdGlhbGl6ZWRULCB0eXBlbmFtZS4uLiBDb250cmFjdHM+Ci1jbGFz
cyBFeGNlcHRpb25TYWZldHlUZXN0ZXI7CitjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRl
cjsKIAogfSAgLy8gbmFtZXNwYWNlIGV4Y2VwdGlvbnNfaW50ZXJuYWwKIAotZXhjZXB0aW9uc19p
bnRlcm5hbDo6RXhjZXB0aW9uU2FmZXR5VGVzdGVyPD4gTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rl
cigpOworLyoKKyAqIENvbnN0cnVjdHMgYW4gZW1wdHkgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxk
ZXIuIEFsbAorICogRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXIgb2JqZWN0cyBhcmUgaW1tdXRh
YmxlIGFuZCBhbGwgV2l0aFt0aGluZ10gbXV0YXRpb24KKyAqIG1ldGhvZHMgcmV0dXJuIG5ldyBp
bnN0YW5jZXMgb2YgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXIuCisgKgorICogSW4gb3JkZXIg
dG8gdGVzdCBhIFQgZm9yIGV4Y2VwdGlvbiBzYWZldHksIGEgZmFjdG9yeSBmb3IgdGhhdCBULCBh
IHRlc3RhYmxlCisgKiBvcGVyYXRpb24sIGFuZCBhdCBsZWFzdCBvbmUgY29udHJhY3QgY2FsbGJh
Y2sgcmV0dXJuaW5nIGFuIGFzc2VydGlvbgorICogcmVzdWx0IG11c3QgYmUgYXBwbGllZCB1c2lu
ZyB0aGUgcmVzcGVjdGl2ZSBtZXRob2RzLgorICovCitleGNlcHRpb25zX2ludGVybmFsOjpFeGNl
cHRpb25TYWZldHlUZXN0QnVpbGRlcjw+IE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKTsKIAog
bmFtZXNwYWNlIGV4Y2VwdGlvbnNfaW50ZXJuYWwgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citz
dHJ1Y3QgSXNVbmlxdWVQdHIgOiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBEPgorc3RydWN0IElzVW5pcXVlUHRyPHN0ZDo6dW5pcXVlX3B0cjxU
LCBEPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEZhY3Rvcnk+
CitzdHJ1Y3QgRmFjdG9yeVB0clR5cGVIZWxwZXIgeworICB1c2luZyB0eXBlID0gZGVjbHR5cGUo
c3RkOjpkZWNsdmFsPGNvbnN0IEZhY3RvcnkmPigpKCkpOworCisgIHN0YXRpY19hc3NlcnQoSXNV
bmlxdWVQdHI8dHlwZT46OnZhbHVlLCAiRmFjdG9yaWVzIG11c3QgcmV0dXJuIGEgdW5pcXVlX3B0
ciIpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEZhY3Rvcnk+Cit1c2luZyBGYWN0b3J5UHRy
VHlwZSA9IHR5cGVuYW1lIEZhY3RvcnlQdHJUeXBlSGVscGVyPEZhY3Rvcnk+Ojp0eXBlOworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeT4KK3VzaW5nIEZhY3RvcnlFbGVtZW50VHlwZSA9IHR5
cGVuYW1lIEZhY3RvcnlQdHJUeXBlPEZhY3Rvcnk+OjplbGVtZW50X3R5cGU7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdCB7CisgIHVzaW5nIEZhY3Rv
cnkgPSBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxUPigpPjsKKyAgdXNpbmcgT3BlcmF0
aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKFQqKT47CisgIHVzaW5nIENvbnRyYWN0ID0gc3RkOjpm
dW5jdGlvbjxBc3NlcnRpb25SZXN1bHQoVCopPjsKKworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIENvbnRyYWN0cz4KKyAgZXhwbGljaXQgRXhjZXB0aW9uU2FmZXR5VGVzdChjb25z
dCBGYWN0b3J5JiBmLCBjb25zdCBPcGVyYXRpb24mIG9wLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENvbnRyYWN0cyYuLi4gY29udHJhY3RzKQorICAgICAgOiBmYWN0b3J5
XyhmKSwgb3BlcmF0aW9uXyhvcCksIGNvbnRyYWN0c197V3JhcENvbnRyYWN0KGNvbnRyYWN0cyku
Li59IHt9CisKKyAgQXNzZXJ0aW9uUmVzdWx0IFRlc3QoKSBjb25zdCB7CisgICAgZm9yIChpbnQg
Y291bnQgPSAwOzsgKytjb3VudCkgeworICAgICAgZXhjZXB0aW9uc19pbnRlcm5hbDo6Q29uc3Ry
dWN0b3JUcmFja2VyIGN0KGNvdW50KTsKKworICAgICAgZm9yIChjb25zdCBhdXRvJiBjb250cmFj
dCA6IGNvbnRyYWN0c18pIHsKKyAgICAgICAgYXV0byB0X3B0ciA9IGZhY3RvcnlfKCk7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgU2V0Q291bnRkb3duKGNvdW50KTsKKyAgICAgICAgICBvcGVy
YXRpb25fKHRfcHRyLmdldCgpKTsKKyAgICAgICAgICAvLyBVbnNldCBmb3IgdGhlIGNhc2UgdGhh
dCB0aGUgb3BlcmF0aW9uIHRocm93cyBubyBleGNlcHRpb25zLCB3aGljaAorICAgICAgICAgIC8v
IHdvdWxkIGxlYXZlIHRoZSBjb3VudGRvd24gc2V0IGFuZCBicmVhayB0aGUgKm5leHQqIGV4Y2Vw
dGlvbiBzYWZldHkKKyAgICAgICAgICAvLyB0ZXN0IGFmdGVyIHRoaXMgb25lLgorICAgICAgICAg
IFVuc2V0Q291bnRkb3duKCk7CisgICAgICAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsK
KyAgICAgICAgfSBjYXRjaCAoY29uc3QgZXhjZXB0aW9uc19pbnRlcm5hbDo6VGVzdEV4Y2VwdGlv
biYgZSkgeworICAgICAgICAgIGlmICghY29udHJhY3QodF9wdHIuZ2V0KCkpKSB7CisgICAgICAg
ICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IGUud2hhdCgpIDw8ICIgZmFpbGVkIGNv
bnRyYWN0IGNoZWNrIjsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9Cisg
IH0KKworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb250cmFjdEZuPgorICBDb250
cmFjdCBXcmFwQ29udHJhY3QoY29uc3QgQ29udHJhY3RGbiYgY29udHJhY3QpIHsKKyAgICByZXR1
cm4gW2NvbnRyYWN0XShUKiB0X3B0cikgeyByZXR1cm4gQXNzZXJ0aW9uUmVzdWx0KGNvbnRyYWN0
KHRfcHRyKSk7IH07CisgIH0KKworICBDb250cmFjdCBXcmFwQ29udHJhY3QoU3Ryb25nR3VhcmFu
dGVlVGFnVHlwZSkgeworICAgIHJldHVybiBbdGhpc10oVCogdF9wdHIpIHsgcmV0dXJuIEFzc2Vy
dGlvblJlc3VsdCgqZmFjdG9yeV8oKSA9PSAqdF9wdHIpOyB9OworICB9CisKKyAgRmFjdG9yeSBm
YWN0b3J5XzsKKyAgT3BlcmF0aW9uIG9wZXJhdGlvbl87CisgIHN0ZDo6dmVjdG9yPENvbnRyYWN0
PiBjb250cmFjdHNfOworfTsKIAogLyoKICAqIEJ1aWxkcyBhIHRlc3RlciBvYmplY3QgdGhhdCB0
ZXN0cyBpZiBwZXJmb3JtaW5nIGEgb3BlcmF0aW9uIG9uIGEgVCBmb2xsb3dzCiAgKiBleGNlcHRp
b24gc2FmZXR5IGd1YXJhbnRlZXMuIFZlcmlmaWNhdGlvbiBpcyBkb25lIHZpYSBjb250cmFjdCBh
c3NlcnRpb24KICAqIGNhbGxiYWNrcyBhcHBsaWVkIHRvIFQgaW5zdGFuY2VzIHBvc3QtdGhyb3cu
CiAgKgotICogVGVtcGxhdGUgcGFyYW1ldGVycyBmb3IgRXhjZXB0aW9uU2FmZXR5VGVzdGVyOgor
ICogVGVtcGxhdGUgcGFyYW1ldGVycyBmb3IgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXI6CiAg
KgogICogLSBGYWN0b3J5OiBUaGUgZmFjdG9yeSBvYmplY3QgKHBhc3NlZCBpbiB2aWEgdGVzdGVy
LldpdGhGYWN0b3J5KC4uLikgb3IKICAqICAgdGVzdGVyLldpdGhJbml0aWFsVmFsdWUoLi4uKSkg
bXVzdCBiZSBpbnZvY2FibGUgd2l0aCB0aGUgc2lnbmF0dXJlCkBAIC05MzMsMTMgKzk1NSwxMyBA
QCBuYW1lc3BhY2UgZXhjZXB0aW9uc19pbnRlcm5hbCB7CiAgKiAgIHBsZWFzZS4KICAqLwogdGVt
cGxhdGUgPHR5cGVuYW1lIEZhY3RvcnksIHR5cGVuYW1lIE9wZXJhdGlvbiwgdHlwZW5hbWUuLi4g
Q29udHJhY3RzPgotY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKK2NsYXNzIEV4Y2VwdGlv
blNhZmV0eVRlc3RCdWlsZGVyIHsKICBwdWJsaWM6CiAgIC8qCi0gICAqIFJldHVybnMgYSBuZXcg
RXhjZXB0aW9uU2FmZXR5VGVzdGVyIHdpdGggYW4gaW5jbHVkZWQgVCBmYWN0b3J5IGJhc2VkIG9u
IHRoZQotICAgKiBwcm92aWRlZCBUIGluc3RhbmNlLiBUaGUgZXhpc3RpbmcgZmFjdG9yeSB3aWxs
IG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV3bHkKLSAgICogY3JlYXRlZCB0ZXN0ZXIgaW5zdGFu
Y2UuIFRoZSBjcmVhdGVkIGZhY3RvcnkgcmV0dXJucyBhIG5ldyBUIGluc3RhbmNlIGJ5Ci0gICAq
IGNvcHktY29uc3RydWN0aW5nIHRoZSBwcm92aWRlZCBjb25zdCBUJiB0LgorICAgKiBSZXR1cm5z
IGEgbmV3IEV4Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyIHdpdGggYW4gaW5jbHVkZWQgVCBmYWN0
b3J5IGJhc2VkCisgICAqIG9uIHRoZSBwcm92aWRlZCBUIGluc3RhbmNlLiBUaGUgZXhpc3Rpbmcg
ZmFjdG9yeSB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbgorICAgKiB0aGUgbmV3bHkgY3JlYXRlZCB0
ZXN0ZXIgaW5zdGFuY2UuIFRoZSBjcmVhdGVkIGZhY3RvcnkgcmV0dXJucyBhIG5ldyBUCisgICAq
IGluc3RhbmNlIGJ5IGNvcHktY29uc3RydWN0aW5nIHRoZSBwcm92aWRlZCBjb25zdCBUJiB0Lgog
ICAgKgogICAgKiBQcmVjb25kaXRpb25zIGZvciB0ZXN0ZXIuV2l0aEluaXRpYWxWYWx1ZShjb25z
dCBUJiB0KToKICAgICoKQEAgLTk0OCw0MSArOTcwLDQxIEBAIGNsYXNzIEV4Y2VwdGlvblNhZmV0
eVRlc3RlciB7CiAgICAqICAgdGVzdGVyLldpdGhGYWN0b3J5KC4uLikuCiAgICAqLwogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLSAgRXhjZXB0aW9uU2FmZXR5VGVzdGVyPERlZmF1bHRGYWN0b3J5
PFQ+LCBPcGVyYXRpb24sIENvbnRyYWN0cy4uLj4KKyAgRXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxk
ZXI8RGVmYXVsdEZhY3Rvcnk8VD4sIE9wZXJhdGlvbiwgQ29udHJhY3RzLi4uPgogICBXaXRoSW5p
dGlhbFZhbHVlKGNvbnN0IFQmIHQpIGNvbnN0IHsKICAgICByZXR1cm4gV2l0aEZhY3RvcnkoRGVm
YXVsdEZhY3Rvcnk8VD4odCkpOwogICB9CiAKICAgLyoKLSAgICogUmV0dXJucyBhIG5ldyBFeGNl
cHRpb25TYWZldHlUZXN0ZXIgd2l0aCB0aGUgcHJvdmlkZWQgVCBmYWN0b3J5IGluY2x1ZGVkLgot
ICAgKiBUaGUgZXhpc3RpbmcgZmFjdG9yeSB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV3
bHktY3JlYXRlZCB0ZXN0ZXIKLSAgICogaW5zdGFuY2UuIFRoaXMgbWV0aG9kIGlzIGludGVuZGVk
IGZvciB1c2Ugd2l0aCB0eXBlcyBsYWNraW5nIGEgY29weQorICAgKiBSZXR1cm5zIGEgbmV3IEV4
Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyIHdpdGggdGhlIHByb3ZpZGVkIFQgZmFjdG9yeQorICAg
KiBpbmNsdWRlZC4gVGhlIGV4aXN0aW5nIGZhY3Rvcnkgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4g
dGhlIG5ld2x5LWNyZWF0ZWQKKyAgICogdGVzdGVyIGluc3RhbmNlLiBUaGlzIG1ldGhvZCBpcyBp
bnRlbmRlZCBmb3IgdXNlIHdpdGggdHlwZXMgbGFja2luZyBhIGNvcHkKICAgICogY29uc3RydWN0
b3IuIFR5cGVzIHRoYXQgY2FuIGJlIGNvcHktY29uc3RydWN0ZWQgc2hvdWxkIGluc3RlYWQgdXNl
IHRoZQogICAgKiBtZXRob2QgdGVzdGVyLldpdGhJbml0aWFsVmFsdWUoLi4uKS4KICAgICovCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBOZXdGYWN0b3J5PgotICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8
YWJzbDo6ZGVjYXlfdDxOZXdGYWN0b3J5PiwgT3BlcmF0aW9uLCBDb250cmFjdHMuLi4+CisgIEV4
Y2VwdGlvblNhZmV0eVRlc3RCdWlsZGVyPGFic2w6OmRlY2F5X3Q8TmV3RmFjdG9yeT4sIE9wZXJh
dGlvbiwgQ29udHJhY3RzLi4uPgogICBXaXRoRmFjdG9yeShjb25zdCBOZXdGYWN0b3J5JiBuZXdf
ZmFjdG9yeSkgY29uc3QgewogICAgIHJldHVybiB7bmV3X2ZhY3RvcnksIG9wZXJhdGlvbl8sIGNv
bnRyYWN0c199OwogICB9CiAKICAgLyoKLSAgICogUmV0dXJucyBhIG5ldyBFeGNlcHRpb25TYWZl
dHlUZXN0ZXIgd2l0aCB0aGUgcHJvdmlkZWQgdGVzdGFibGUgb3BlcmF0aW9uCi0gICAqIGluY2x1
ZGVkLiBUaGUgZXhpc3Rpbmcgb3BlcmF0aW9uIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBu
ZXdseSBjcmVhdGVkCi0gICAqIHRlc3Rlci4KKyAgICogUmV0dXJucyBhIG5ldyBFeGNlcHRpb25T
YWZldHlUZXN0QnVpbGRlciB3aXRoIHRoZSBwcm92aWRlZCB0ZXN0YWJsZQorICAgKiBvcGVyYXRp
b24gaW5jbHVkZWQuIFRoZSBleGlzdGluZyBvcGVyYXRpb24gd2lsbCBub3QgYmUgaW5jbHVkZWQg
aW4gdGhlCisgICAqIG5ld2x5IGNyZWF0ZWQgdGVzdGVyLgogICAgKi8KICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE5ld09wZXJhdGlvbj4KLSAgRXhjZXB0aW9uU2FmZXR5VGVzdGVyPEZhY3RvcnksIGFi
c2w6OmRlY2F5X3Q8TmV3T3BlcmF0aW9uPiwgQ29udHJhY3RzLi4uPgorICBFeGNlcHRpb25TYWZl
dHlUZXN0QnVpbGRlcjxGYWN0b3J5LCBhYnNsOjpkZWNheV90PE5ld09wZXJhdGlvbj4sIENvbnRy
YWN0cy4uLj4KICAgV2l0aE9wZXJhdGlvbihjb25zdCBOZXdPcGVyYXRpb24mIG5ld19vcGVyYXRp
b24pIGNvbnN0IHsKICAgICByZXR1cm4ge2ZhY3RvcnlfLCBuZXdfb3BlcmF0aW9uLCBjb250cmFj
dHNffTsKICAgfQogCiAgIC8qCi0gICAqIFJldHVybnMgYSBuZXcgRXhjZXB0aW9uU2FmZXR5VGVz
dGVyIHdpdGggdGhlIHByb3ZpZGVkIE1vcmVDb250cmFjdHMuLi4KKyAgICogUmV0dXJucyBhIG5l
dyBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlciB3aXRoIHRoZSBwcm92aWRlZCBNb3JlQ29udHJh
Y3RzLi4uCiAgICAqIGNvbWJpbmVkIHdpdGggdGhlIENvbnRyYWN0cy4uLiB0aGF0IHdlcmUgYWxy
ZWFkeSBpbmNsdWRlZCBpbiB0aGUgaW5zdGFuY2UKICAgICogb24gd2hpY2ggdGhlIG1ldGhvZCB3
YXMgY2FsbGVkLiBDb250cmFjdHMuLi4gY2Fubm90IGJlIHJlbW92ZWQgb3IgcmVwbGFjZWQKLSAg
ICogb25jZSBhZGRlZCB0byBhbiBFeGNlcHRpb25TYWZldHlUZXN0ZXIgaW5zdGFuY2UuIEEgZnJl
c2ggb2JqZWN0IG11c3QgYmUKLSAgICogY3JlYXRlZCBpbiBvcmRlciB0byBnZXQgYW4gZW1wdHkg
Q29udHJhY3RzLi4uIGxpc3QuCisgICAqIG9uY2UgYWRkZWQgdG8gYW4gRXhjZXB0aW9uU2FmZXR5
VGVzdEJ1aWxkZXIgaW5zdGFuY2UuIEEgZnJlc2ggb2JqZWN0IG11c3QKKyAgICogYmUgY3JlYXRl
ZCBpbiBvcmRlciB0byBnZXQgYW4gZW1wdHkgQ29udHJhY3RzLi4uIGxpc3QuCiAgICAqCiAgICAq
IEluIGFkZGl0aW9uIHRvIHBhc3NpbmcgaW4gY3VzdG9tIGNvbnRyYWN0IGFzc2VydGlvbiBjYWxs
YmFja3MsIHRoaXMgbWV0aG9kCiAgICAqIGFjY2VwdHMgYHRlc3Rpbmc6OnN0cm9uZ19ndWFyYW50
ZWVgIGFzIGFuIGFyZ3VtZW50IHdoaWNoIGNoZWNrcyBUIGluc3RhbmNlcwpAQCAtOTkxLDggKzEw
MTMsOCBAQCBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXIgewogICAgKiBwcm9wZXJseSByb2xs
ZWQgYmFjay4KICAgICovCiAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBNb3JlQ29udHJhY3RzPgot
ICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8RmFjdG9yeSwgT3BlcmF0aW9uLCBDb250cmFjdHMuLi4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpkZWNheV90PE1vcmVDb250cmFjdHM+Li4u
PgorICBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlcjxGYWN0b3J5LCBPcGVyYXRpb24sIENvbnRy
YWN0cy4uLiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6ZGVjYXlfdDxNb3Jl
Q29udHJhY3RzPi4uLj4KICAgV2l0aENvbnRyYWN0cyhjb25zdCBNb3JlQ29udHJhY3RzJi4uLiBt
b3JlX2NvbnRyYWN0cykgY29uc3QgewogICAgIHJldHVybiB7CiAgICAgICAgIGZhY3RvcnlfLCBv
cGVyYXRpb25fLApAQCAtMTAzOSw0OCArMTA2MSwyNyBAQCBjbGFzcyBFeGNlcHRpb25TYWZldHlU
ZXN0ZXIgewogICAgICAgdHlwZW5hbWUgTGF6eU9wZXJhdGlvbiA9IE9wZXJhdGlvbiwKICAgICAg
IHR5cGVuYW1lID0gRW5hYmxlSWZUZXN0YWJsZTxzaXplb2YuLi4oQ29udHJhY3RzKSwgRmFjdG9y
eSwgTGF6eU9wZXJhdGlvbj4+CiAgIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBUZXN0KCkgY29u
c3QgewotICAgIHJldHVybiBUZXN0SW1wbChvcGVyYXRpb25fLCBhYnNsOjppbmRleF9zZXF1ZW5j
ZV9mb3I8Q29udHJhY3RzLi4uPigpKTsKKyAgICByZXR1cm4gVGVzdChvcGVyYXRpb25fKTsKICAg
fQogCiAgcHJpdmF0ZToKICAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUu
Li4+Ci0gIGZyaWVuZCBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXI7CisgIGZyaWVuZCBjbGFz
cyBFeGNlcHRpb25TYWZldHlUZXN0QnVpbGRlcjsKIAotICBmcmllbmQgRXhjZXB0aW9uU2FmZXR5
VGVzdGVyPD4gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpOworICBmcmllbmQg
RXhjZXB0aW9uU2FmZXR5VGVzdEJ1aWxkZXI8PiB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5
VGVzdGVyKCk7CiAKLSAgRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkge30KKyAgRXhjZXB0aW9uU2Fm
ZXR5VGVzdEJ1aWxkZXIoKSB7fQogCi0gIEV4Y2VwdGlvblNhZmV0eVRlc3Rlcihjb25zdCBGYWN0
b3J5JiBmLCBjb25zdCBPcGVyYXRpb24mIG8sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnR1cGxlPENvbnRyYWN0cy4uLj4mIGkpCisgIEV4Y2VwdGlvblNhZmV0eVRlc3RCdWls
ZGVyKGNvbnN0IEZhY3RvcnkmIGYsIGNvbnN0IE9wZXJhdGlvbiYgbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp0dXBsZTxDb250cmFjdHMuLi4+JiBpKQogICAgICAg
OiBmYWN0b3J5XyhmKSwgb3BlcmF0aW9uXyhvKSwgY29udHJhY3RzXyhpKSB7fQogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBTZWxlY3RlZE9wZXJhdGlvbiwgc2l6ZV90Li4uIEluZGljZXM+Ci0gIHRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBUZXN0SW1wbChjb25zdCBTZWxlY3RlZE9wZXJhdGlvbiYg
c2VsZWN0ZWRfb3BlcmF0aW9uLAorICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgVGVzdEltcGwo
U2VsZWN0ZWRPcGVyYXRpb24gc2VsZWN0ZWRfb3BlcmF0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWJzbDo6aW5kZXhfc2VxdWVuY2U8SW5kaWNlcy4uLj4pIGNvbnN0
IHsKLSAgICAvLyBTdGFydGluZyBmcm9tIDAgYW5kIGNvdW50aW5nIHVwd2FyZHMgdW50aWwgb25l
IG9mIHRoZSBleGl0IGNvbmRpdGlvbnMgaXMKLSAgICAvLyBoaXQuLi4KLSAgICBmb3IgKGludCBj
b3VudCA9IDA7OyArK2NvdW50KSB7Ci0gICAgICBleGNlcHRpb25zX2ludGVybmFsOjpDb25zdHJ1
Y3RvclRyYWNrZXIgY3QoY291bnQpOwotCi0gICAgICAvLyBSdW4gdGhlIGZ1bGwgZXhjZXB0aW9u
IHNhZmV0eSB0ZXN0IGFsZ29yaXRobSBmb3IgdGhlIGN1cnJlbnQgY291bnRkb3duCi0gICAgICBh
dXRvIHJlZHVjZWRfcmVzID0KLSAgICAgICAgICBUZXN0QWxsQ29udHJhY3RzQXRDb3VudGRvd24o
ZmFjdG9yeV8sIHNlbGVjdGVkX29wZXJhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6Z2V0PEluZGljZXM+KGNvbnRyYWN0c18pLi4uKTsKLSAg
ICAgIC8vIElmIHRoZXJlIGlzIG5vIHZhbHVlIGluIHRoZSBvcHRpb25hbCwgbm8gY29udHJhY3Rz
IHdlcmUgcnVuIGJlY2F1c2Ugbm8KLSAgICAgIC8vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLiBUaGlz
IG1lYW5zIHRoYXQgdGhlIHRlc3QgaXMgY29tcGxldGUgYW5kIHRoZSBsb29wCi0gICAgICAvLyBj
YW4gZXhpdCBzdWNjZXNzZnVsbHkuCi0gICAgICBpZiAoIXJlZHVjZWRfcmVzLmhhc192YWx1ZSgp
KSB7Ci0gICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Ci0gICAgICB9
Ci0gICAgICAvLyBJZiB0aGUgb3B0aW9uYWwgaXMgbm90IGVtcHR5IGFuZCB0aGUgdmFsdWUgaXMg
ZmFsc3ksIGFuIGNvbnRyYWN0IGNoZWNrCi0gICAgICAvLyBmYWlsZWQgc28gdGhlIHRlc3QgbXVz
dCBleGl0IHRvIHByb3BlZ2F0ZSB0aGUgZmFpbHVyZS4KLSAgICAgIGlmICghcmVkdWNlZF9yZXMu
dmFsdWUoKSkgewotICAgICAgICByZXR1cm4gcmVkdWNlZF9yZXMudmFsdWUoKTsKLSAgICAgIH0K
LSAgICAgIC8vIElmIHRoZSBvcHRpb25hbCBpcyBub3QgZW1wdHkgYW5kIHRoZSB2YWx1ZSBpcyBu
b3QgZmFsc3ksIGl0IG1lYW5zCi0gICAgICAvLyBleGNlcHRpb25zIHdlcmUgdGhyb3duIGJ1dCB0
aGUgY29udHJhY3RzIHBhc3NlZCBzbyB0aGUgdGVzdCBtdXN0Ci0gICAgICAvLyBjb250aW51ZSB0
byBydW4uCi0gICAgfQorICAgIHJldHVybiBFeGNlcHRpb25TYWZldHlUZXN0PEZhY3RvcnlFbGVt
ZW50VHlwZTxGYWN0b3J5Pj4oCisgICAgICAgICAgICAgICBmYWN0b3J5Xywgc2VsZWN0ZWRfb3Bl
cmF0aW9uLCBzdGQ6OmdldDxJbmRpY2VzPihjb250cmFjdHNfKS4uLikKKyAgICAgICAgLlRlc3Qo
KTsKICAgfQogCiAgIEZhY3RvcnkgZmFjdG9yeV87CkBAIC0xMDkwLDIwICsxMDkxLDYgQEAgY2xh
c3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKIAogfSAgLy8gbmFtZXNwYWNlIGV4Y2VwdGlvbnNf
aW50ZXJuYWwKIAotLyoKLSAqIENvbnN0cnVjdHMgYW4gZW1wdHkgRXhjZXB0aW9uU2FmZXR5VGVz
dGVyLiBBbGwgRXhjZXB0aW9uU2FmZXR5VGVzdGVyCi0gKiBvYmplY3RzIGFyZSBpbW11dGFibGUg
YW5kIGFsbCBXaXRoW3RoaW5nXSBtdXRhdGlvbiBtZXRob2RzIHJldHVybiBuZXcKLSAqIGluc3Rh
bmNlcyBvZiBFeGNlcHRpb25TYWZldHlUZXN0ZXIuCi0gKgotICogSW4gb3JkZXIgdG8gdGVzdCBh
IFQgZm9yIGV4Y2VwdGlvbiBzYWZldHksIGEgZmFjdG9yeSBmb3IgdGhhdCBULCBhIHRlc3RhYmxl
Ci0gKiBvcGVyYXRpb24sIGFuZCBhdCBsZWFzdCBvbmUgY29udHJhY3QgY2FsbGJhY2sgcmV0dXJu
aW5nIGFuIGFzc2VydGlvbgotICogcmVzdWx0IG11c3QgYmUgYXBwbGllZCB1c2luZyB0aGUgcmVz
cGVjdGl2ZSBtZXRob2RzLgotICovCi1pbmxpbmUgZXhjZXB0aW9uc19pbnRlcm5hbDo6RXhjZXB0
aW9uU2FmZXR5VGVzdGVyPD4KLU1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKSB7Ci0gIHJldHVy
biB7fTsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAogI2VuZGlmICAvLyBBQlNMX0JB
U0VfSU5URVJOQUxfRVhDRVBUSU9OX1NBRkVUWV9URVNUSU5HX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl90ZXN0aW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L2V4Y2VwdGlvbl90ZXN0aW5nLmgKaW5kZXggMGNmNzkxOGU0YzY3Nzg4OTcxY2Y5NDMzN2EyNzk0
NjYwNjNjNmIzZi4uMDFiNTQ2NTU3MTE3ZjYwZDQ4NjA3OTAxNDEzYWVlYjliMmYxZWExOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fdGVzdGluZy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3Rlc3RpbmcuaApAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9o
aWRlX3B0ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9oaWRlX3B0ci5oCmluZGV4IDQ1Y2Y0Mzg5
MTJjMjcxNDk3NmViYTZhNzc5NGY1NWNmMjgwNGFlODIuLmNmOGY0MDgwMjQ2OTA1MzMyMzhiMzYx
MmYzNWJmZDU1NWE1NWYwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaGlkZV9w
dHIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2hpZGVfcHRyLmgKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvaWRlbnRpdHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaWRlbnRpdHkuaAppbmRleCBhMWE1
ZDcwYTg0ZGQzNGQwNWZmMjNmNjYyZDUwZDNjNDE4ZDZjYWY5Li4wODY0NDdjNjAzOWI3MjA3YWI5
NzBlNWRhNzQ3MzU4NDljNjVjMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2lk
ZW50aXR5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9pZGVudGl0eS5oCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL2lubGluZV92YXJpYWJsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9pbmxpbmVfdmFy
aWFibGUuaAppbmRleCBmN2JiOGM1NjUyNWQ4OGU1MjY5NjA1MGNhMTQyYWVjNjUxZDFiNDk1Li4x
MzBkOGMyNDc2ZGQyMDMzZjBhYmRlMDI3NjFiNDFlODhiODI1MTI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL2lubGluZV92YXJpYWJsZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvaW5saW5lX3ZhcmlhYmxlLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxlX3Rl
c3RpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvaW5saW5lX3ZhcmlhYmxlX3Rlc3RpbmcuaApp
bmRleCBhMGRkMmJiMjhhNDAyYTI4NWE0ZTZhZTVhY2UwZTUxZGM2YmNiNGYxLi4xNWRjNDgxZTEw
MTBlODExNGU1ZmI1MjcwNDg3YTg3ZWMwNDA3ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL2lubGluZV92YXJpYWJsZV90ZXN0aW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5h
bC9pbmxpbmVfdmFyaWFibGVfdGVzdGluZy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2ludm9rZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9pbnZva2UuaAppbmRleCA4YzNmNGY2MDYzN2NhOWQyZDRlODQy
NjIwYTU2NDJmODUzMzZjYTk4Li40NGYxMzMwMmY0MzQzMDJjYTQzZTViNTFkOWNkOWZjOWJjOWIw
NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2ludm9rZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvaW50ZXJuYWwvaW52b2tlLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNs
dWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisKIC8v
IFRoZSBmb2xsb3dpbmcgY29kZSBpcyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBT
ZWUgdGhlIGNvbW1lbnQgYXQgdGhlCiAvLyB0b3Agb2YgdGhpcyBmaWxlIGZvciB0aGUgQVBJIGRv
Y3VtZW50YXRpb24uCiAKQEAgLTY3LDE1ICs2OSwxMSBAQCBzdHJ1Y3QgTWVtRnVuQW5kUmVmIDog
U3RyaXBwZWRBY2NlcHQ8TWVtRnVuQW5kUmVmPiB7CiAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBB
cmdzPgogICBzdHJ1Y3QgQWNjZXB0SW1wbCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKIAotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQywgdHlwZW5hbWUuLi4gUGFyYW1zLCB0eXBlbmFt
ZSBPYmosCi0gICAgICAgICAgICB0eXBlbmFtZS4uLiBBcmdzPgotICBzdHJ1Y3QgQWNjZXB0SW1w
bDxSIChDOjoqKShQYXJhbXMuLi4pLCBPYmosIEFyZ3MuLi4+Ci0gICAgICA6IHN0ZDo6aXNfYmFz
ZV9vZjxDLCBPYmo+IHt9OwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0
eXBlbmFtZS4uLiBQYXJhbXMsIHR5cGVuYW1lIE9iaiwKLSAgICAgICAgICAgIHR5cGVuYW1lLi4u
IEFyZ3M+Ci0gIHN0cnVjdCBBY2NlcHRJbXBsPFIgKEM6OiopKFBhcmFtcy4uLikgY29uc3QsIE9i
aiwgQXJncy4uLj4KLSAgICAgIDogc3RkOjppc19iYXNlX29mPEMsIE9iaj4ge307CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBNZW1GdW5UeXBlLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBPYmosIHR5cGVu
YW1lLi4uIEFyZ3M+CisgIHN0cnVjdCBBY2NlcHRJbXBsPE1lbUZ1blR5cGUgQzo6KiwgT2JqLCBB
cmdzLi4uPgorICAgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNfYmFz
ZV9vZjxDLCBPYmo+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjppc19mdW5jdGlvbjxNZW1GdW5UeXBlPjo6dmFsdWU+IHsKKyAgfTsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWVtRnVuLCB0eXBlbmFtZSBPYmosIHR5cGVuYW1lLi4uIEFy
Z3M+CiAgIHN0YXRpYyBkZWNsdHlwZSgoc3RkOjpkZWNsdmFsPE9iaj4oKS4qCkBAIC05MiwxNSAr
OTAsMTEgQEAgc3RydWN0IE1lbUZ1bkFuZFB0ciA6IFN0cmlwcGVkQWNjZXB0PE1lbUZ1bkFuZFB0
cj4gewogICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KICAgc3RydWN0IEFjY2VwdEltcGwg
OiBzdGQ6OmZhbHNlX3R5cGUge307CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1l
IEMsIHR5cGVuYW1lLi4uIFBhcmFtcywgdHlwZW5hbWUgUHRyLAotICAgICAgICAgICAgdHlwZW5h
bWUuLi4gQXJncz4KLSAgc3RydWN0IEFjY2VwdEltcGw8UiAoQzo6KikoUGFyYW1zLi4uKSwgUHRy
LCBBcmdzLi4uPgotICAgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsICFzdGQ6Omlz
X2Jhc2Vfb2Y8QywgUHRyPjo6dmFsdWU+IHt9OwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0
eXBlbmFtZSBDLCB0eXBlbmFtZS4uLiBQYXJhbXMsIHR5cGVuYW1lIFB0ciwKLSAgICAgICAgICAg
IHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIHN0cnVjdCBBY2NlcHRJbXBsPFIgKEM6OiopKFBhcmFtcy4u
LikgY29uc3QsIFB0ciwgQXJncy4uLj4KLSAgICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxi
b29sLCAhc3RkOjppc19iYXNlX29mPEMsIFB0cj46OnZhbHVlPiB7fTsKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIE1lbUZ1blR5cGUsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUuLi4g
QXJncz4KKyAgc3RydWN0IEFjY2VwdEltcGw8TWVtRnVuVHlwZSBDOjoqLCBQdHIsIEFyZ3MuLi4+
CisgICAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgIXN0ZDo6aXNfYmFzZV9vZjxD
LCBQdHI+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjppc19mdW5jdGlvbjxNZW1GdW5UeXBlPjo6dmFsdWU+IHsKKyAgfTsKIAogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWVtRnVuLCB0eXBlbmFtZSBQdHIsIHR5cGVuYW1lLi4uIEFyZ3M+CiAg
IHN0YXRpYyBkZWNsdHlwZSgoKCpzdGQ6OmRlY2x2YWw8UHRyPigpKS4qCkBAIC0xMTksNyArMTEz
LDkgQEAgc3RydWN0IERhdGFNZW1BbmRSZWYgOiBTdHJpcHBlZEFjY2VwdDxEYXRhTWVtQW5kUmVm
PiB7CiAgIHN0cnVjdCBBY2NlcHRJbXBsIDogc3RkOjpmYWxzZV90eXBlIHt9OwogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBPYmo+Ci0gIHN0cnVjdCBBY2Nl
cHRJbXBsPFIgQzo6KiwgT2JqPiA6IHN0ZDo6aXNfYmFzZV9vZjxDLCBPYmo+IHt9OworICBzdHJ1
Y3QgQWNjZXB0SW1wbDxSIEM6OiosIE9iaj4KKyAgICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFu
dDxib29sLCBzdGQ6OmlzX2Jhc2Vfb2Y8QywgT2JqPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIWFic2w6OmlzX2Z1bmN0aW9uPFI+Ojp2YWx1ZT4g
e307CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIERhdGFNZW0sIHR5cGVuYW1lIFJlZj4KICAgc3Rh
dGljIGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxSZWY+KCkuKnN0ZDo6ZGVjbHZhbDxEYXRhTWVtPigp
KSBJbnZva2UoCkBAIC0xMzYsNyArMTMyLDggQEAgc3RydWN0IERhdGFNZW1BbmRQdHIgOiBTdHJp
cHBlZEFjY2VwdDxEYXRhTWVtQW5kUHRyPiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5
cGVuYW1lIEMsIHR5cGVuYW1lIFB0cj4KICAgc3RydWN0IEFjY2VwdEltcGw8UiBDOjoqLCBQdHI+
Ci0gICAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgIXN0ZDo6aXNfYmFzZV9vZjxD
LCBQdHI+Ojp2YWx1ZT4ge307CisgICAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwg
IXN0ZDo6aXNfYmFzZV9vZjxDLCBQdHI+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAhYWJzbDo6aXNfZnVuY3Rpb248Uj46OnZhbHVlPiB7fTsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGF0YU1lbSwgdHlwZW5hbWUgUHRyPgogICBzdGF0aWMgZGVj
bHR5cGUoKCpzdGQ6OmRlY2x2YWw8UHRyPigpKS4qc3RkOjpkZWNsdmFsPERhdGFNZW0+KCkpIElu
dm9rZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuY2MKaW5kZXggMTU5Zjk0NWY1
ZWRkMDcwNzhmOGNhZmNlYThiMzczMGEzZThjNzE4ZC4uY2Q1MjZiMzY5MGUxMTM2YmM4MmQ1MmU1
NzIwZjFhYmIzMjdiODA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2
ZWxfYWxsb2MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuY2MK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIwMywxOSArMjAz
LDE5IEBAIHN0cnVjdCBMb3dMZXZlbEFsbG9jOjpBcmVuYSB7CiAKICAgYmFzZV9pbnRlcm5hbDo6
U3BpbkxvY2sgbXU7CiAgIC8vIEhlYWQgb2YgZnJlZSBsaXN0LCBzb3J0ZWQgYnkgYWRkcmVzcwot
ICBBbGxvY0xpc3QgZnJlZWxpc3QgR1VBUkRFRF9CWShtdSk7CisgIEFsbG9jTGlzdCBmcmVlbGlz
dCBBQlNMX0dVQVJERURfQlkobXUpOwogICAvLyBDb3VudCBvZiBhbGxvY2F0ZWQgYmxvY2tzCi0g
IGludDMyX3QgYWxsb2NhdGlvbl9jb3VudCBHVUFSREVEX0JZKG11KTsKKyAgaW50MzJfdCBhbGxv
Y2F0aW9uX2NvdW50IEFCU0xfR1VBUkRFRF9CWShtdSk7CiAgIC8vIGZsYWdzIHBhc3NlZCB0byBO
ZXdBcmVuYQogICBjb25zdCB1aW50MzJfdCBmbGFnczsKLSAgLy8gUmVzdWx0IG9mIGdldHBhZ2Vz
aXplKCkKKyAgLy8gUmVzdWx0IG9mIHN5c2NvbmYoX1NDX1BBR0VTSVpFKQogICBjb25zdCBzaXpl
X3QgcGFnZXNpemU7CiAgIC8vIExvd2VzdCBwb3dlciBvZiB0d28gPj0gbWF4KDE2LCBzaXplb2Yo
QWxsb2NMaXN0KSkKICAgY29uc3Qgc2l6ZV90IHJvdW5kdXA7CiAgIC8vIFNtYWxsZXN0IGFsbG9j
YXRpb24gYmxvY2sgc2l6ZQogICBjb25zdCBzaXplX3QgbWluX3NpemU7CiAgIC8vIFBSTkcgc3Rh
dGUKLSAgdWludDMyX3QgcmFuZG9tIEdVQVJERURfQlkobXUpOworICB1aW50MzJfdCByYW5kb20g
QUJTTF9HVUFSREVEX0JZKG11KTsKIH07CiAKIG5hbWVzcGFjZSB7CkBAIC0yNzUsMTAgKzI3NSwx
MCBAQCBzdGF0aWMgY29uc3QgdWludHB0cl90IGtNYWdpY0FsbG9jYXRlZCA9IDB4NGM4MzNlOTVV
Owogc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBrTWFnaWNVbmFsbG9jYXRlZCA9IH5rTWFnaWNBbGxv
Y2F0ZWQ7CiAKIG5hbWVzcGFjZSB7Ci1jbGFzcyBTQ09QRURfTE9DS0FCTEUgQXJlbmFMb2NrIHsK
K2NsYXNzIEFCU0xfU0NPUEVEX0xPQ0tBQkxFIEFyZW5hTG9jayB7CiAgcHVibGljOgogICBleHBs
aWNpdCBBcmVuYUxvY2soTG93TGV2ZWxBbGxvYzo6QXJlbmEgKmFyZW5hKQotICAgICAgRVhDTFVT
SVZFX0xPQ0tfRlVOQ1RJT04oYXJlbmEtPm11KQorICAgICAgQUJTTF9FWENMVVNJVkVfTE9DS19G
VU5DVElPTihhcmVuYS0+bXUpCiAgICAgICA6IGFyZW5hXyhhcmVuYSkgewogI2lmbmRlZiBBQlNM
X0xPV19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HCiAgICAgaWYgKChhcmVu
YS0+ZmxhZ3MgJiBMb3dMZXZlbEFsbG9jOjprQXN5bmNTaWduYWxTYWZlKSAhPSAwKSB7CkBAIC0y
OTAsMTEgKzI5MCwxNCBAQCBjbGFzcyBTQ09QRURfTE9DS0FCTEUgQXJlbmFMb2NrIHsKICAgICBh
cmVuYV8tPm11LkxvY2soKTsKICAgfQogICB+QXJlbmFMb2NrKCkgeyBBQlNMX1JBV19DSEVDSyhs
ZWZ0XywgImhhdmVuJ3QgbGVmdCBBcmVuYSByZWdpb24iKTsgfQotICB2b2lkIExlYXZlKCkgVU5M
T0NLX0ZVTkNUSU9OKCkgeworICB2b2lkIExlYXZlKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJT04oKSB7
CiAgICAgYXJlbmFfLT5tdS5VbmxvY2soKTsKICNpZm5kZWYgQUJTTF9MT1dfTEVWRUxfQUxMT0Nf
QVNZTkNfU0lHTkFMX1NBRkVfTUlTU0lORwogICAgIGlmIChtYXNrX3ZhbGlkXykgewotICAgICAg
cHRocmVhZF9zaWdtYXNrKFNJR19TRVRNQVNLLCAmbWFza18sIG51bGxwdHIpOworICAgICAgY29u
c3QgaW50IGVyciA9IHB0aHJlYWRfc2lnbWFzayhTSUdfU0VUTUFTSywgJm1hc2tfLCBudWxscHRy
KTsKKyAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBBQlNMX1JBV19MT0coRkFUQUwsICJw
dGhyZWFkX3NpZ21hc2sgZmFpbGVkOiAlZCIsIGVycik7CisgICAgICB9CiAgICAgfQogI2VuZGlm
CiAgICAgbGVmdF8gPSB0cnVlOwpAQCAtMzI0LDggKzMyNywxMCBAQCBzaXplX3QgR2V0UGFnZVNp
emUoKSB7CiAgIFNZU1RFTV9JTkZPIHN5c3RlbV9pbmZvOwogICBHZXRTeXN0ZW1JbmZvKCZzeXN0
ZW1faW5mbyk7CiAgIHJldHVybiBzdGQ6Om1heChzeXN0ZW1faW5mby5kd1BhZ2VTaXplLCBzeXN0
ZW1faW5mby5kd0FsbG9jYXRpb25HcmFudWxhcml0eSk7Ci0jZWxzZQorI2VsaWYgZGVmaW5lZChf
X3dhc21fXykgfHwgZGVmaW5lZChfX2FzbWpzX18pCiAgIHJldHVybiBnZXRwYWdlc2l6ZSgpOwor
I2Vsc2UKKyAgcmV0dXJuIHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaAppbmRleCBmYmE5NDY2YTc1NzQyN2MwMWVkMTIx
NDY0YzNhYjExMmRlMjBjOWE2Li5jOThjZGIzMDIzNWVmYjQyMmQ5NGNlNDJiNGRiYmI4YWIwNjA5
MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmgKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI1LDYgKzI1LDcgQEAKIC8vIElXWVUgcHJh
Z21hOiBwcml2YXRlLCBpbmNsdWRlICJiYXNlL2xvd19sZXZlbF9hbGxvYy5oIgogCiAjaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CisKICNpbmNsdWRlIDxjc3RkaW50PgogCiAjaW5jbHVkZSAiYWJzbC9i
YXNlL2F0dHJpYnV0ZXMuaCIKQEAgLTExOSw0ICsxMjAsNSBAQCBjbGFzcyBMb3dMZXZlbEFsbG9j
IHsKIAogfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNs
CisKICNlbmRpZiAgLy8gQUJTTF9CQVNFX0lOVEVSTkFMX0xPV19MRVZFTF9BTExPQ19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2NfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jX3Rlc3QuY2MKaW5kZXggY2YyYjM2MzI5
OWY0ZTIyNzlhZDUxZTQ2ZWJkMDgwY2VhZDJlNDU0NS4uMzRhMDgwY2IxNWE2ZmNkNzQ2NDMwOGIw
NTQ2NDBmNDY5YWEzNDNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2
ZWxfYWxsb2NfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxv
Y190ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0x
MzcsNiArMTM3LDcgQEAgc3RhdGljIHZvaWQgVGVzdChib29sIHVzZV9uZXdfYXJlbmEsIGJvb2wg
Y2FsbF9tYWxsb2NfaG9vaywgaW50IG4pIHsKICAgICBURVNUX0FTU0VSVChMb3dMZXZlbEFsbG9j
OjpEZWxldGVBcmVuYShhcmVuYSkpOwogICB9CiB9CisKIC8vIExvd0xldmVsQWxsb2MgaXMgZGVz
aWduZWQgdG8gYmUgc2FmZSB0byBjYWxsIGJlZm9yZSBtYWluKCkuCiBzdGF0aWMgc3RydWN0IEJl
Zm9yZU1haW4gewogICBCZWZvcmVNYWluKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC9sb3dfbGV2ZWxfc2NoZWR1bGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2
ZWxfc2NoZWR1bGluZy5oCmluZGV4IGU3MTZmMmI0OWZhMWY5YzgyMzkyOGVkYTlmZmY4NTAwYTk3
M2JhMTkuLjBmY2M4ZDNiZWQ5NzMzNjk3ZmFjZjMzMGRlMzUwODc3ZjMzMDk3NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX3NjaGVkdWxpbmcuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9zY2hlZHVsaW5nLmgKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgU2NoZWR1bGlu
Z0d1YXJkIHsKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBFbmQgb2YgcHVibGljIGludGVy
ZmFjZXMuCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBpbmxpbmUgYm9vbCBTY2hlZHVsaW5n
R3VhcmQ6OlJlc2NoZWR1bGluZ0lzQWxsb3dlZCgpIHsKICAgcmV0dXJuIGZhbHNlOwogfQpAQCAt
OTgsNyArOTksNyBAQCBpbmxpbmUgdm9pZCBTY2hlZHVsaW5nR3VhcmQ6OkVuYWJsZVJlc2NoZWR1
bGluZyhib29sIC8qIGRpc2FibGVfcmVzdWx0ICovKSB7CiAgIHJldHVybjsKIH0KIAotCiB9ICAv
LyBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKKwogI2VuZGlm
ICAvLyBBQlNMX0JBU0VfSU5URVJOQUxfTE9XX0xFVkVMX1NDSEVEVUxJTkdfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcGVyX3RocmVhZF90bHMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvcGVyX3RocmVhZF90bHMuaAppbmRleCAyNDI4YmRjMTIzOGVkYWNhM2RhOTQzODhjMDlk
NDdjMDg5ZjAyZGQ3Li5jZjVlOTdhMDQ3MGViNTdjMTU4NjJlMGMyNDE5NWViYmY3ODNhYzEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Blcl90aHJlYWRfdGxzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9wZXJfdGhyZWFkX3Rscy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNiwxMyArMTYsMTcgQEAKICNkZWZpbmUgQUJTTF9CQVNF
X0lOVEVSTkFMX1BFUl9USFJFQURfVExTX0hfCiAKIC8vIFRoaXMgaGVhZGVyIGRlZmluZXMgdHdv
IG1hY3JvczoKKy8vCiAvLyBJZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgdGhyZWFkLWxvY2FsIHN0
b3JhZ2U6Ci0vLyAgIEFCU0xfUEVSX1RIUkVBRF9UTFNfS0VZV09SRCBpcyB0aGUgQyBrZXl3b3Jk
IG5lZWRlZCB0byBkZWNsYXJlIGEKLS8vICAgdGhyZWFkLWxvY2FsIHZhcmlhYmxlIEFCU0xfUEVS
X1RIUkVBRF9UTFMgaXMgMQorLy8KKy8vICogQUJTTF9QRVJfVEhSRUFEX1RMU19LRVlXT1JEIGlz
IHRoZSBDIGtleXdvcmQgbmVlZGVkIHRvIGRlY2xhcmUgYQorLy8gICB0aHJlYWQtbG9jYWwgdmFy
aWFibGUKKy8vICogQUJTTF9QRVJfVEhSRUFEX1RMUyBpcyAxCiAvLwogLy8gT3RoZXJ3aXNlOgot
Ly8gICBBQlNMX1BFUl9USFJFQURfVExTX0tFWVdPUkQgaXMgZW1wdHkKLS8vICAgQUJTTF9QRVJf
VEhSRUFEX1RMUyBpcyAwCisvLworLy8gKiBBQlNMX1BFUl9USFJFQURfVExTX0tFWVdPUkQgaXMg
ZW1wdHkKKy8vICogQUJTTF9QRVJfVEhSRUFEX1RMUyBpcyAwCiAvLwogLy8gTWljcm9zb2Z0IEMg
c3VwcG9ydHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2UuCiAvLyBHQ0Mgc3VwcG9ydHMgaXQgaWYgdGhl
IGFwcHJvcHJpYXRlIHZlcnNpb24gb2YgZ2xpYmMgaXMgYXZhaWxhYmxlLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9wcmV0dHlfZnVuY3Rpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvcHJldHR5X2Z1bmN0aW9uLmgKaW5kZXggMDFiMDU0N2JkMDhhNDg0MjY0YjA5MDA2MGY5Njcz
MmZiMDJkYWFhMS4uMzVkNTE2NzZkYzJlN2UyOTk2YWY5MDAyMjRiMDRiOTllZTc1NDc1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9wcmV0dHlfZnVuY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL3ByZXR0eV9mdW5jdGlvbi5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Jhd19s
b2dnaW5nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5jYwppbmRleCBkOTQ4
NWE2NmNjNjQ5MjcyOTYyYzNhZWUyOTk3YzA3Mzk3NGViZGE1Li44NzhmZTZjNmMyY2M5Njk4MDJj
NzU3MDMxYWI0ZjJjOGVjOWM3OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Jh
d19sb2dnaW5nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM2LDcgKzM2LDggQEAK
IC8vIFRoaXMgcHJlcHJvY2Vzc29yIHRva2VuIGlzIGFsc28gZGVmaW5lZCBpbiByYXdfaW8uY2Mu
ICBJZiB5b3UgbmVlZCB0byBjb3B5CiAvLyB0aGlzLCBjb25zaWRlciBtb3ZpbmcgYm90aCB0byBj
b25maWcuaCBpbnN0ZWFkLgogI2lmIGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgXAotICAgIGRlZmluZWQoX19GdWNoc2lh
X18pIHx8IGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCisgICAgZGVmaW5lZChfX0Z1Y2hzaWFf
XykgfHwgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgXAorICAgIGRlZmluZWQoX19FTVND
UklQVEVOX18pCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2lu
Zy5oCmluZGV4IDc5YTdiYjliMmY3YTYyYmIxOTY5Y2VlYWMwMTc4MmNlNGU5ZGVjNWEuLjZhNGMw
OTM2MDNmMGVhYTY0ZjIyMTQ0NzA2YzYxN2UwZmFjOTlmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Jhd19s
b2dnaW5nLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM4
LDYgKzM4LDcgQEAKIC8vICAgQUJTTF9SQVdfTE9HKEVSUk9SLCAiRmFpbGVkIGZvbyB3aXRoICVp
OiAlcyIsIHN0YXR1cywgZXJyb3IpOwogLy8gVGhpcyB3aWxsIHByaW50IGFuIGFsbW9zdCBzdGFu
ZGFyZCBsb2cgbGluZSBsaWtlIHRoaXMgdG8gc3RkZXJyIG9ubHk6CiAvLyAgIEUwODIxIDIxMTMx
NyBmaWxlLmNjOjEyM10gUkFXOiBGYWlsZWQgZm9vIHdpdGggMjI6IGJhZF9maWxlCisKICNkZWZp
bmUgQUJTTF9SQVdfTE9HKHNldmVyaXR5LCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNvbnN0ZXhw
ciBjb25zdCBjaGFyKiBhYnNsX3Jhd19sb2dnaW5nX2ludGVybmFsX2Jhc2VuYW1lID0gICAgICAg
ICAgICAgICAgIFwKQEAgLTc5LDEzICs4MCwxMyBAQAogICAgICAgICBhYnNsX3Jhd19sb2dnaW5n
X2ludGVybmFsX2Jhc2VuYW1lLCBfX0xJTkVfXywgbWVzc2FnZSk7ICAgICAgIFwKICAgfSB3aGls
ZSAoMCkKIAotI2RlZmluZSBBQlNMX0lOVEVSTkFMX0NIRUNLKGNvbmRpdGlvbiwgbWVzc2FnZSkg
ICAgICAgICAgICAgICBcCi0gIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCEoY29u
ZGl0aW9uKSkpIHsgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBBQlNMX0lOVEVSTkFMX0NI
RUNLKGNvbmRpdGlvbiwgbWVzc2FnZSkgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRSghKGNvbmRpdGlvbikpKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgICAgc3RkOjpzdHJpbmcgZGVhdGhfbWVzc2FnZSA9ICJDaGVjayAi
ICNjb25kaXRpb24gIiBmYWlsZWQ6ICI7IFwKICAgICAgIGRlYXRoX21lc3NhZ2UgKz0gc3RkOjpz
dHJpbmcobWVzc2FnZSk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBBQlNMX0lOVEVS
TkFMX0xPRyhGQVRBTCwgZGVhdGhfbWVzc2FnZSk7ICAgICAgICAgICAgICAgIFwKLSAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgQUJTTF9JTlRFUk5BTF9MT0coRkFUQUwsIGRlYXRoX21lc3NhZ2UpOyAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgQUJTTF9S
QVdfTE9HR0lOR19JTlRFUk5BTF9JTkZPIDo6YWJzbDo6TG9nU2V2ZXJpdHk6OmtJbmZvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NjaGVkdWxpbmdfbW9kZS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9zY2hlZHVsaW5nX21vZGUuaAppbmRleCAxYjY0OTdhZDg3NTdkZWNlOGRiY2Y0
ODhlNGY5MThhZmM1ODM2ZTA0Li5kNWI0YjdmZDU0ZmZjYWUxODRmNmNhYzhkOTFhYjNlMGEyMjli
OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NjaGVkdWxpbmdfbW9kZS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NoZWR1bGluZ19tb2RlLmgKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvc2NvcGVkX3NldF9lbnYuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9zZXRfZW52
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNhYzNmNjhkZGY5MGNhOGE5YTljYzM5ZDc1ZWU0YTI5MWJlYWQxODgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9zZXRfZW52LmNj
CkBAIC0wLDAgKzEsNzkgQEAKKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9zZXRfZW52LmgiCisKKyNp
ZmRlZiBfV0lOMzIKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGNz
dGRsaWI+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKwor
bmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgeworCituYW1lc3BhY2Ug
eworCisjaWZkZWYgX1dJTjMyCitjb25zdCBpbnQga01heEVudlZhclZhbHVlU2l6ZSA9IDEwMjQ7
CisjZW5kaWYKKwordm9pZCBTZXRFbnZWYXIoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciog
dmFsdWUpIHsKKyNpZmRlZiBfV0lOMzIKKyAgU2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobmFtZSwg
dmFsdWUpOworI2Vsc2UKKyAgaWYgKHZhbHVlID09IG51bGxwdHIpIHsKKyAgICA6OnVuc2V0ZW52
KG5hbWUpOworICB9IGVsc2UgeworICAgIDo6c2V0ZW52KG5hbWUsIHZhbHVlLCAxKTsKKyAgfQor
I2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZQorCitTY29wZWRTZXRFbnY6OlNjb3BlZFNldEVu
dihjb25zdCBjaGFyKiB2YXJfbmFtZSwgY29uc3QgY2hhciogbmV3X3ZhbHVlKQorICAgIDogdmFy
X25hbWVfKHZhcl9uYW1lKSwgd2FzX3Vuc2V0XyhmYWxzZSkgeworI2lmZGVmIF9XSU4zMgorICBj
aGFyIGJ1ZltrTWF4RW52VmFyVmFsdWVTaXplXTsKKyAgYXV0byBnZXRfcmVzID0gR2V0RW52aXJv
bm1lbnRWYXJpYWJsZUEodmFyX25hbWVfLmNfc3RyKCksIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICBB
QlNMX0lOVEVSTkFMX0NIRUNLKGdldF9yZXMgPCBzaXplb2YoYnVmKSwgInZhbHVlIGV4Y2VlZHMg
YnVmZmVyIHNpemUiKTsKKworICBpZiAoZ2V0X3JlcyA9PSAwKSB7CisgICAgd2FzX3Vuc2V0XyA9
IChHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5EKTsKKyAgfSBlbHNlIHsK
KyAgICBvbGRfdmFsdWVfLmFzc2lnbihidWYsIGdldF9yZXMpOworICB9CisKKyAgU2V0RW52aXJv
bm1lbnRWYXJpYWJsZUEodmFyX25hbWVfLmNfc3RyKCksIG5ld192YWx1ZSk7CisjZWxzZQorICBj
b25zdCBjaGFyKiB2YWwgPSA6OmdldGVudih2YXJfbmFtZV8uY19zdHIoKSk7CisgIGlmICh2YWwg
PT0gbnVsbHB0cikgeworICAgIHdhc191bnNldF8gPSB0cnVlOworICB9IGVsc2UgeworICAgIG9s
ZF92YWx1ZV8gPSB2YWw7CisgIH0KKyNlbmRpZgorCisgIFNldEVudlZhcih2YXJfbmFtZV8uY19z
dHIoKSwgbmV3X3ZhbHVlKTsKK30KKworU2NvcGVkU2V0RW52Ojp+U2NvcGVkU2V0RW52KCkgewor
ICBTZXRFbnZWYXIodmFyX25hbWVfLmNfc3RyKCksIHdhc191bnNldF8gPyBudWxscHRyIDogb2xk
X3ZhbHVlXy5jX3N0cigpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKK30g
IC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Njb3Bl
ZF9zZXRfZW52LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Njb3BlZF9zZXRfZW52LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODU1YjIyZmQ0MWZlY2FiN2ZjYzA0M2E1ZGExNGU0NWFmM2U4MzIzZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVkX3NldF9lbnYuaApAQCAtMCwwICsx
LDQxIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
CisjaWZuZGVmIEFCU0xfQkFTRV9JTlRFUk5BTF9TQ09QRURfU0VUX0VOVl9IXworI2RlZmluZSBB
QlNMX0JBU0VfSU5URVJOQUxfU0NPUEVEX1NFVF9FTlZfSF8KKworI2luY2x1ZGUgPHN0cmluZz4K
KworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgeworCitjbGFzcyBT
Y29wZWRTZXRFbnYgeworIHB1YmxpYzoKKyAgU2NvcGVkU2V0RW52KGNvbnN0IGNoYXIqIHZhcl9u
YW1lLCBjb25zdCBjaGFyKiBuZXdfdmFsdWUpOworICB+U2NvcGVkU2V0RW52KCk7CisKKyBwcml2
YXRlOgorICBzdGQ6OnN0cmluZyB2YXJfbmFtZV87CisgIHN0ZDo6c3RyaW5nIG9sZF92YWx1ZV87
CisKKyAgLy8gVHJ1ZSBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgd2FzIGluaXRpYWxseSBu
b3Qgc2V0LgorICBib29sIHdhc191bnNldF87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYmFzZV9p
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0JBU0VfSU5U
RVJOQUxfU0NPUEVEX1NFVF9FTlZfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
c2NvcGVkX3NldF9lbnZfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc2NvcGVkX3NldF9l
bnZfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2JhZDI0NmM2NDcwNmIwODVlN2UxOWE3NjMxNGQ0MTAx
ZjBlZDFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zY29wZWRfc2V0
X2Vudl90ZXN0LmNjCkBAIC0wLDAgKzEsOTkgQEAKKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaWZkZWYgX1dJTjMyCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2Vu
ZGlmCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRl
cm5hbC9zY29wZWRfc2V0X2Vudi5oIgorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpiYXNl
X2ludGVybmFsOjpTY29wZWRTZXRFbnY7CisKK3N0ZDo6c3RyaW5nIEdldEVudlZhcihjb25zdCBj
aGFyKiBuYW1lKSB7CisjaWZkZWYgX1dJTjMyCisgIGNoYXIgYnVmWzEwMjRdOworICBhdXRvIGdl
dF9yZXMgPSBHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShuYW1lLCBidWYsIHNpemVvZihidWYpKTsK
KyAgaWYgKGdldF9yZXMgPj0gc2l6ZW9mKGJ1ZikpIHsKKyAgICByZXR1cm4gIlRPT19CSUciOwor
ICB9CisKKyAgaWYgKGdldF9yZXMgPT0gMCkgeworICAgIHJldHVybiAiVU5TRVQiOworICB9CisK
KyAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZiwgZ2V0X3Jlcyk7CisjZWxzZQorICBjb25zdCBjaGFy
KiB2YWwgPSA6OmdldGVudihuYW1lKTsKKyAgaWYgKHZhbCA9PSBudWxscHRyKSB7CisgICAgcmV0
dXJuICJVTlNFVCI7CisgIH0KKworICByZXR1cm4gdmFsOworI2VuZGlmCit9CisKK1RFU1QoU2Nv
cGVkU2V0RW52VGVzdCwgU2V0Tm9uRXhpc3RpbmdWYXJUb1N0cmluZykgeworICBFWFBFQ1RfRVEo
R2V0RW52VmFyKCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIpLCAiVU5TRVQiKTsKKworICB7Cisg
ICAgU2NvcGVkU2V0RW52IHNjb3BlZF9zZXQoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiwgInZh
bHVlIik7CisKKyAgICBFWFBFQ1RfRVEoR2V0RW52VmFyKCJTQ09QRURfU0VUX0VOVl9URVNUX1ZB
UiIpLCAidmFsdWUiKTsKKyAgfQorCisgIEVYUEVDVF9FUShHZXRFbnZWYXIoIlNDT1BFRF9TRVRf
RU5WX1RFU1RfVkFSIiksICJVTlNFVCIpOworfQorCitURVNUKFNjb3BlZFNldEVudlRlc3QsIFNl
dE5vbkV4aXN0aW5nVmFyVG9OdWxsKSB7CisgIEVYUEVDVF9FUShHZXRFbnZWYXIoIlNDT1BFRF9T
RVRfRU5WX1RFU1RfVkFSIiksICJVTlNFVCIpOworCisgIHsKKyAgICBTY29wZWRTZXRFbnYgc2Nv
cGVkX3NldCgiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiLCBudWxscHRyKTsKKworICAgIEVYUEVD
VF9FUShHZXRFbnZWYXIoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiksICJVTlNFVCIpOworICB9
CisKKyAgRVhQRUNUX0VRKEdldEVudlZhcigiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIiKSwgIlVO
U0VUIik7Cit9CisKK1RFU1QoU2NvcGVkU2V0RW52VGVzdCwgU2V0RXhpc3RpbmdWYXJUb1N0cmlu
ZykgeworICBTY29wZWRTZXRFbnYgc2NvcGVkX3NldCgiU0NPUEVEX1NFVF9FTlZfVEVTVF9WQVIi
LCAidmFsdWUiKTsKKyAgRVhQRUNUX0VRKEdldEVudlZhcigiU0NPUEVEX1NFVF9FTlZfVEVTVF9W
QVIiKSwgInZhbHVlIik7CisKKyAgeworICAgIFNjb3BlZFNldEVudiBzY29wZWRfc2V0KCJTQ09Q
RURfU0VUX0VOVl9URVNUX1ZBUiIsICJuZXdfdmFsdWUiKTsKKworICAgIEVYUEVDVF9FUShHZXRF
bnZWYXIoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiksICJuZXdfdmFsdWUiKTsKKyAgfQorCisg
IEVYUEVDVF9FUShHZXRFbnZWYXIoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiksICJ2YWx1ZSIp
OworfQorCitURVNUKFNjb3BlZFNldEVudlRlc3QsIFNldEV4aXN0aW5nVmFyVG9OdWxsKSB7Cisg
IFNjb3BlZFNldEVudiBzY29wZWRfc2V0KCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIsICJ2YWx1
ZSIpOworICBFWFBFQ1RfRVEoR2V0RW52VmFyKCJTQ09QRURfU0VUX0VOVl9URVNUX1ZBUiIpLCAi
dmFsdWUiKTsKKworICB7CisgICAgU2NvcGVkU2V0RW52IHNjb3BlZF9zZXQoIlNDT1BFRF9TRVRf
RU5WX1RFU1RfVkFSIiwgbnVsbHB0cik7CisKKyAgICBFWFBFQ1RfRVEoR2V0RW52VmFyKCJTQ09Q
RURfU0VUX0VOVl9URVNUX1ZBUiIpLCAiVU5TRVQiKTsKKyAgfQorCisgIEVYUEVDVF9FUShHZXRF
bnZWYXIoIlNDT1BFRF9TRVRfRU5WX1RFU1RfVkFSIiksICJ2YWx1ZSIpOworfQorCit9ICAvLyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2suY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrLmNjCmluZGV4IDFiOTdlZmJjY2M1ODcwNjAwZjNh
YmI4YzQ3ZDljYzM3MmViYWI2YWMuLjczNTQ0MzhmYmFjYmViZDM3YTljNDM1NDNhMjgyZGYwM2E5
MjIzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2suY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9jay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApAQCAtOTUsMTMgKzk1LDkgQEAgdm9pZCBTcGluTG9jazo6SW5pdExp
bmtlckluaXRpYWxpemVkQW5kQ29vcGVyYXRpdmUoKSB7CiB9CiAKIC8vIE1vbml0b3IgdGhlIGxv
Y2sgdG8gc2VlIGlmIGl0cyB2YWx1ZSBjaGFuZ2VzIHdpdGhpbiBzb21lIHRpbWUgcGVyaW9kCi0v
LyAoYWRhcHRpdmVfc3Bpbl9jb3VudCBsb29wIGl0ZXJhdGlvbnMpLiAgQSB0aW1lc3RhbXAgaW5k
aWNhdGluZwotLy8gd2hlbiB0aGUgdGhyZWFkIGluaXRpYWxseSBzdGFydGVkIHdhaXRpbmcgZm9y
IHRoZSBsb2NrIGlzIHBhc3NlZCBpbiB2aWEKLS8vIHRoZSBpbml0aWFsX3dhaXRfdGltZXN0YW1w
IHZhbHVlLiAgVGhlIHRvdGFsIHdhaXQgdGltZSBpbiBjeWNsZXMgZm9yIHRoZQotLy8gbG9jayBp
cyByZXR1cm5lZCBpbiB0aGUgd2FpdF9jeWNsZXMgcGFyYW1ldGVyLiAgVGhlIGxhc3QgdmFsdWUg
cmVhZAotLy8gZnJvbSB0aGUgbG9jayBpcyByZXR1cm5lZCBmcm9tIHRoZSBtZXRob2QuCi11aW50
MzJfdCBTcGluTG9jazo6U3Bpbkxvb3AoaW50NjRfdCBpbml0aWFsX3dhaXRfdGltZXN0YW1wLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICp3YWl0X2N5Y2xlcykgeworLy8g
KGFkYXB0aXZlX3NwaW5fY291bnQgbG9vcCBpdGVyYXRpb25zKS4gVGhlIGxhc3QgdmFsdWUgcmVh
ZCBmcm9tIHRoZSBsb2NrCisvLyBpcyByZXR1cm5lZCBmcm9tIHRoZSBtZXRob2QuCit1aW50MzJf
dCBTcGluTG9jazo6U3Bpbkxvb3AoKSB7CiAgIC8vIFdlIGFyZSBhbHJlYWR5IGluIHRoZSBzbG93
IHBhdGggb2YgU3BpbkxvY2ssIGluaXRpYWxpemUgdGhlCiAgIC8vIGFkYXB0aXZlX3NwaW5fY291
bnQgaGVyZS4KICAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBhYnNsOjpvbmNlX2ZsYWcgaW5pdF9h
ZGFwdGl2ZV9zcGluX2NvdW50OwpAQCAtMTE1LDIyICsxMTEsMjEgQEAgdWludDMyX3QgU3Bpbkxv
Y2s6OlNwaW5Mb29wKGludDY0X3QgaW5pdGlhbF93YWl0X3RpbWVzdGFtcCwKICAgZG8gewogICAg
IGxvY2tfdmFsdWUgPSBsb2Nrd29yZF8ubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsK
ICAgfSB3aGlsZSAoKGxvY2tfdmFsdWUgJiBrU3BpbkxvY2tIZWxkKSAhPSAwICYmIC0tYyA+IDAp
OwotICB1aW50MzJfdCBzcGluX2xvb3Bfd2FpdF9jeWNsZXMgPQotICAgICAgRW5jb2RlV2FpdEN5
Y2xlcyhpbml0aWFsX3dhaXRfdGltZXN0YW1wLCBDeWNsZUNsb2NrOjpOb3coKSk7Ci0gICp3YWl0
X2N5Y2xlcyA9IHNwaW5fbG9vcF93YWl0X2N5Y2xlczsKLQotICByZXR1cm4gVHJ5TG9ja0ludGVy
bmFsKGxvY2tfdmFsdWUsIHNwaW5fbG9vcF93YWl0X2N5Y2xlcyk7CisgIHJldHVybiBsb2NrX3Zh
bHVlOwogfQogCiB2b2lkIFNwaW5Mb2NrOjpTbG93TG9jaygpIHsKKyAgdWludDMyX3QgbG9ja192
YWx1ZSA9IFNwaW5Mb29wKCk7CisgIGxvY2tfdmFsdWUgPSBUcnlMb2NrSW50ZXJuYWwobG9ja192
YWx1ZSwgMCk7CisgIGlmICgobG9ja192YWx1ZSAmIGtTcGluTG9ja0hlbGQpID09IDApIHsKKyAg
ICByZXR1cm47CisgIH0KICAgLy8gVGhlIGxvY2sgd2FzIG5vdCBvYnRhaW5lZCBpbml0aWFsbHks
IHNvIHRoaXMgdGhyZWFkIG5lZWRzIHRvIHdhaXQgZm9yCiAgIC8vIGl0LiAgUmVjb3JkIHRoZSBj
dXJyZW50IHRpbWVzdGFtcCBpbiB0aGUgbG9jYWwgdmFyaWFibGUgd2FpdF9zdGFydF90aW1lCiAg
IC8vIHNvIHRoZSB0b3RhbCB3YWl0IHRpbWUgY2FuIGJlIHN0b3JlZCBpbiB0aGUgbG9ja3dvcmQg
b25jZSB0aGlzIHRocmVhZAogICAvLyBvYnRhaW5zIHRoZSBsb2NrLgogICBpbnQ2NF90IHdhaXRf
c3RhcnRfdGltZSA9IEN5Y2xlQ2xvY2s6Ok5vdygpOwotICB1aW50MzJfdCB3YWl0X2N5Y2xlczsK
LSAgdWludDMyX3QgbG9ja192YWx1ZSA9IFNwaW5Mb29wKHdhaXRfc3RhcnRfdGltZSwgJndhaXRf
Y3ljbGVzKTsKLQorICB1aW50MzJfdCB3YWl0X2N5Y2xlcyA9IDA7CiAgIGludCBsb2NrX3dhaXRf
Y2FsbF9jb3VudCA9IDA7CiAgIHdoaWxlICgobG9ja192YWx1ZSAmIGtTcGluTG9ja0hlbGQpICE9
IDApIHsKICAgICAvLyBJZiB0aGUgbG9jayBpcyBjdXJyZW50bHkgaGVsZCwgYnV0IG5vdCBtYXJr
ZWQgYXMgaGF2aW5nIGEgc2xlZXBlciwgbWFyawpAQCAtMTQxLDcgKzEzNiw3IEBAIHZvaWQgU3Bp
bkxvY2s6OlNsb3dMb2NrKCkgewogICAgICAgLy8gb3duZXIgdG8gdGhpbmsgaXQgZXhwZXJpZW5j
ZWQgY29udGVudGlvbi4KICAgICAgIGlmIChsb2Nrd29yZF8uY29tcGFyZV9leGNoYW5nZV9zdHJv
bmcoCiAgICAgICAgICAgICAgIGxvY2tfdmFsdWUsIGxvY2tfdmFsdWUgfCBrU3BpbkxvY2tTbGVl
cGVyLAotICAgICAgICAgICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlLCBzdGQ6Om1lbW9y
eV9vcmRlcl9yZWxheGVkKSkgeworICAgICAgICAgICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxh
eGVkLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKSkgewogICAgICAgICAvLyBTdWNjZXNzZnVs
bHkgdHJhbnNpdGlvbmVkIHRvIGtTcGluTG9ja1NsZWVwZXIuICBQYXNzCiAgICAgICAgIC8vIGtT
cGluTG9ja1NsZWVwZXIgdG8gdGhlIFNwaW5Mb2NrV2FpdCByb3V0aW5lIHRvIHByb3Blcmx5IGlu
ZGljYXRlCiAgICAgICAgIC8vIHRoZSBsYXN0IGxvY2tfdmFsdWUgb2JzZXJ2ZWQuCkBAIC0xNzAs
NyArMTY1LDkgQEAgdm9pZCBTcGluTG9jazo6U2xvd0xvY2soKSB7CiAgICAgQUJTTF9UU0FOX01V
VEVYX1BPU1RfRElWRVJUKHRoaXMsIDApOwogICAgIC8vIFNwaW4gYWdhaW4gYWZ0ZXIgcmV0dXJu
aW5nIGZyb20gdGhlIHdhaXQgcm91dGluZSB0byBnaXZlIHRoaXMgdGhyZWFkCiAgICAgLy8gc29t
ZSBjaGFuY2Ugb2Ygb2J0YWluaW5nIHRoZSBsb2NrLgotICAgIGxvY2tfdmFsdWUgPSBTcGluTG9v
cCh3YWl0X3N0YXJ0X3RpbWUsICZ3YWl0X2N5Y2xlcyk7CisgICAgbG9ja192YWx1ZSA9IFNwaW5M
b29wKCk7CisgICAgd2FpdF9jeWNsZXMgPSBFbmNvZGVXYWl0Q3ljbGVzKHdhaXRfc3RhcnRfdGlt
ZSwgQ3ljbGVDbG9jazo6Tm93KCkpOworICAgIGxvY2tfdmFsdWUgPSBUcnlMb2NrSW50ZXJuYWwo
bG9ja192YWx1ZSwgd2FpdF9jeWNsZXMpOwogICB9CiB9CiAKQEAgLTIwNiwxNCArMjAzLDIwIEBA
IHVpbnQzMl90IFNwaW5Mb2NrOjpFbmNvZGVXYWl0Q3ljbGVzKGludDY0X3Qgd2FpdF9zdGFydF90
aW1lLAogICAgICAgKHdhaXRfZW5kX3RpbWUgLSB3YWl0X3N0YXJ0X3RpbWUpID4+IFBST0ZJTEVf
VElNRVNUQU1QX1NISUZUOwogCiAgIC8vIFJldHVybiBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0
aW1lIHNwZW50IHdhaXRpbmcgdGhhdCBjYW4gYmUgc3RvcmVkIGluCi0gIC8vIHRoZSBsb2NrIHdv
cmQncyB1cHBlciBiaXRzLiAgYml0X2Nhc3QgaXMgcmVxdWlyZWQgYXMgQXRvbWljMzIgaXMgc2ln
bmVkLgotICBjb25zdCB1aW50MzJfdCBjbGFtcGVkID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KAor
ICAvLyB0aGUgbG9jayB3b3JkJ3MgdXBwZXIgYml0cy4KKyAgdWludDMyX3QgY2xhbXBlZCA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PigKICAgICAgIHN0ZDo6bWluKHNjYWxlZF93YWl0X3RpbWUsIGtN
YXhXYWl0VGltZSkgPDwgTE9DS1dPUkRfUkVTRVJWRURfU0hJRlQpOwogCi0gIC8vIGJ1bXAgdXAg
dmFsdWUgaWYgbmVjZXNzYXJ5IHRvIGF2b2lkIHJldHVybmluZyBrU3BpbkxvY2tTbGVlcGVyLgot
ICBjb25zdCB1aW50MzJfdCBhZnRlcl9zcGlubG9ja19zbGVlcGVyID0KLSAgICAga1NwaW5Mb2Nr
U2xlZXBlciArICgxIDw8IExPQ0tXT1JEX1JFU0VSVkVEX1NISUZUKTsKLSAgcmV0dXJuIGNsYW1w
ZWQgPT0ga1NwaW5Mb2NrU2xlZXBlciA/IGFmdGVyX3NwaW5sb2NrX3NsZWVwZXIgOiBjbGFtcGVk
OworICBpZiAoY2xhbXBlZCA9PSAwKSB7CisgICAgcmV0dXJuIGtTcGluTG9ja1NsZWVwZXI7ICAv
LyBKdXN0IHdha2Ugd2FpdGVycywgYnV0IGRvbid0IHJlY29yZCBjb250ZW50aW9uLgorICB9Cisg
IC8vIEJ1bXAgdXAgdmFsdWUgaWYgbmVjZXNzYXJ5IHRvIGF2b2lkIHJldHVybmluZyBrU3Bpbkxv
Y2tTbGVlcGVyLgorICBjb25zdCB1aW50MzJfdCBrTWluV2FpdFRpbWUgPQorICAgICAga1NwaW5M
b2NrU2xlZXBlciArICgxIDw8IExPQ0tXT1JEX1JFU0VSVkVEX1NISUZUKTsKKyAgaWYgKGNsYW1w
ZWQgPT0ga1NwaW5Mb2NrU2xlZXBlcikgeworICAgIHJldHVybiBrTWluV2FpdFRpbWU7CisgIH0K
KyAgcmV0dXJuIGNsYW1wZWQ7CiB9CiAKIHVpbnQ2NF90IFNwaW5Mb2NrOjpEZWNvZGVXYWl0Q3lj
bGVzKHVpbnQzMl90IGxvY2tfdmFsdWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvc3BpbmxvY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2suaAppbmRleCAyMTJh
YmM2NjllNjI3MzYzZjhhMDIyNGNjYjc3OTE4YTY5ZDMxMTk0Li5lY2RhNzkyNDFjNWI1NmY5MzE0
NmY0NTc1NjIxMzBkMTFiN2M4ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Nw
aW5sb2NrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9jay5oCkBAIC01LDcgKzUs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNs
dWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKwogI2luY2x1ZGUgPGF0b21p
Yz4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCkBAIC00Nyw3ICs0OCw3IEBA
CiBuYW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7CiAKLWNsYXNzIExP
Q0tBQkxFIFNwaW5Mb2NrIHsKK2NsYXNzIEFCU0xfTE9DS0FCTEUgU3BpbkxvY2sgewogIHB1Ymxp
YzoKICAgU3BpbkxvY2soKSA6IGxvY2t3b3JkXyhrU3BpbkxvY2tDb29wZXJhdGl2ZSkgewogICAg
IEFCU0xfVFNBTl9NVVRFWF9DUkVBVEUodGhpcywgX190c2FuX211dGV4X25vdF9zdGF0aWMpOwpA
QCAtNTcsOCArNTgsMTAgQEAgY2xhc3MgTE9DS0FCTEUgU3BpbkxvY2sgewogICAvLwogICAvLyAg
ICBzdGF0aWMgU3BpbkxvY2sgbG9jayhiYXNlX2ludGVybmFsOjprTGlua2VySW5pdGlhbGl6ZWQp
OwogICAvLwotICAvLyBXaGVuIGludGlhbGl6ZWQgdXNpbmcgdGhpcyBjb25zdHJ1Y3Rvciwgd2Ug
ZGVwZW5kIG9uIHRoZSBmYWN0Ci0gIC8vIHRoYXQgdGhlIGxpbmtlciBoYXMgYWxyZWFkeSBpbml0
aWFsaXplZCB0aGUgbWVtb3J5IGFwcHJvcHJpYXRlbHkuCisgIC8vIFdoZW4gaW5pdGlhbGl6ZWQg
dXNpbmcgdGhpcyBjb25zdHJ1Y3Rvciwgd2UgZGVwZW5kIG9uIHRoZSBmYWN0CisgIC8vIHRoYXQg
dGhlIGxpbmtlciBoYXMgYWxyZWFkeSBpbml0aWFsaXplZCB0aGUgbWVtb3J5IGFwcHJvcHJpYXRl
bHkuIFRoZSBsb2NrCisgIC8vIGlzIGluaXRpYWxpemVkIGluIG5vbi1jb29wZXJhdGl2ZSBtb2Rl
LgorICAvLwogICAvLyBBIFNwaW5Mb2NrIGNvbnN0cnVjdGVkIGxpa2UgdGhpcyBjYW4gYmUgZnJl
ZWx5IHVzZWQgZnJvbSBnbG9iYWwKICAgLy8gaW5pdGlhbGl6ZXJzIHdpdGhvdXQgd29ycnlpbmcg
YWJvdXQgdGhlIG9yZGVyIGluIHdoaWNoIGdsb2JhbAogICAvLyBpbml0aWFsaXplcnMgcnVuLgpA
QCAtNzYsNyArNzksNyBAQCBjbGFzcyBMT0NLQUJMRSBTcGluTG9jayB7CiAgIH5TcGluTG9jaygp
IHsgQUJTTF9UU0FOX01VVEVYX0RFU1RST1kodGhpcywgX190c2FuX211dGV4X25vdF9zdGF0aWMp
OyB9CiAKICAgLy8gQWNxdWlyZSB0aGlzIFNwaW5Mb2NrLgotICBpbmxpbmUgdm9pZCBMb2NrKCkg
RVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKSB7CisgIGlubGluZSB2b2lkIExvY2soKSBBQlNMX0VY
Q0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCkgewogICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfTE9DSyh0
aGlzLCAwKTsKICAgICBpZiAoIVRyeUxvY2tJbXBsKCkpIHsKICAgICAgIFNsb3dMb2NrKCk7CkBA
IC04OCw3ICs5MSw3IEBAIGNsYXNzIExPQ0tBQkxFIFNwaW5Mb2NrIHsKICAgLy8gYWNxdWlzaXRp
b24gd2FzIHN1Y2Nlc3NmdWwuICBJZiB0aGUgbG9jayB3YXMgbm90IGFjcXVpcmVkLCBmYWxzZSBp
cwogICAvLyByZXR1cm5lZC4gIElmIHRoaXMgU3BpbkxvY2sgaXMgZnJlZSBhdCB0aGUgdGltZSBv
ZiB0aGUgY2FsbCwgVHJ5TG9jawogICAvLyB3aWxsIHJldHVybiB0cnVlIHdpdGggaGlnaCBwcm9i
YWJpbGl0eS4KLSAgaW5saW5lIGJvb2wgVHJ5TG9jaygpIEVYQ0xVU0lWRV9UUllMT0NLX0ZVTkNU
SU9OKHRydWUpIHsKKyAgaW5saW5lIGJvb2wgVHJ5TG9jaygpIEFCU0xfRVhDTFVTSVZFX1RSWUxP
Q0tfRlVOQ1RJT04odHJ1ZSkgewogICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfTE9DSyh0aGlzLCBf
X3RzYW5fbXV0ZXhfdHJ5X2xvY2spOwogICAgIGJvb2wgcmVzID0gVHJ5TG9ja0ltcGwoKTsKICAg
ICBBQlNMX1RTQU5fTVVURVhfUE9TVF9MT0NLKApAQCAtOTgsMTEgKzEwMSwxMSBAQCBjbGFzcyBM
T0NLQUJMRSBTcGluTG9jayB7CiAgIH0KIAogICAvLyBSZWxlYXNlIHRoaXMgU3BpbkxvY2ssIHdo
aWNoIG11c3QgYmUgaGVsZCBieSB0aGUgY2FsbGluZyB0aHJlYWQuCi0gIGlubGluZSB2b2lkIFVu
bG9jaygpIFVOTE9DS19GVU5DVElPTigpIHsKKyAgaW5saW5lIHZvaWQgVW5sb2NrKCkgQUJTTF9V
TkxPQ0tfRlVOQ1RJT04oKSB7CiAgICAgQUJTTF9UU0FOX01VVEVYX1BSRV9VTkxPQ0sodGhpcywg
MCk7CiAgICAgdWludDMyX3QgbG9ja192YWx1ZSA9IGxvY2t3b3JkXy5sb2FkKHN0ZDo6bWVtb3J5
X29yZGVyX3JlbGF4ZWQpOwotICAgIGxvY2t3b3JkXy5zdG9yZShsb2NrX3ZhbHVlICYga1NwaW5M
b2NrQ29vcGVyYXRpdmUsCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6bWVtb3J5X29yZGVyX3Jl
bGVhc2UpOworICAgIGxvY2tfdmFsdWUgPSBsb2Nrd29yZF8uZXhjaGFuZ2UobG9ja192YWx1ZSAm
IGtTcGluTG9ja0Nvb3BlcmF0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CiAKICAgICBpZiAoKGxvY2tfdmFsdWUgJiBr
U3BpbkxvY2tEaXNhYmxlZFNjaGVkdWxpbmcpICE9IDApIHsKICAgICAgIGJhc2VfaW50ZXJuYWw6
OlNjaGVkdWxpbmdHdWFyZDo6RW5hYmxlUmVzY2hlZHVsaW5nKHRydWUpOwpAQCAtMTYxLDcgKzE2
NCw3IEBAIGNsYXNzIExPQ0tBQkxFIFNwaW5Mb2NrIHsKICAgdm9pZCBJbml0TGlua2VySW5pdGlh
bGl6ZWRBbmRDb29wZXJhdGl2ZSgpOwogICB2b2lkIFNsb3dMb2NrKCkgQUJTTF9BVFRSSUJVVEVf
Q09MRDsKICAgdm9pZCBTbG93VW5sb2NrKHVpbnQzMl90IGxvY2tfdmFsdWUpIEFCU0xfQVRUUklC
VVRFX0NPTEQ7Ci0gIHVpbnQzMl90IFNwaW5Mb29wKGludDY0X3QgaW5pdGlhbF93YWl0X3RpbWVz
dGFtcCwgdWludDMyX3QqIHdhaXRfY3ljbGVzKTsKKyAgdWludDMyX3QgU3Bpbkxvb3AoKTsKIAog
ICBpbmxpbmUgYm9vbCBUcnlMb2NrSW1wbCgpIHsKICAgICB1aW50MzJfdCBsb2NrX3ZhbHVlID0g
bG9ja3dvcmRfLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CkBAIC0xNzYsMTMgKzE3
OSwxMyBAQCBjbGFzcyBMT0NLQUJMRSBTcGluTG9jayB7CiAKIC8vIENvcnJlc3BvbmRpbmcgbG9j
a2VyIG9iamVjdCB0aGF0IGFycmFuZ2VzIHRvIGFjcXVpcmUgYSBzcGlubG9jayBmb3IKIC8vIHRo
ZSBkdXJhdGlvbiBvZiBhIEMrKyBzY29wZS4KLWNsYXNzIFNDT1BFRF9MT0NLQUJMRSBTcGluTG9j
a0hvbGRlciB7CitjbGFzcyBBQlNMX1NDT1BFRF9MT0NLQUJMRSBTcGluTG9ja0hvbGRlciB7CiAg
cHVibGljOgotICBpbmxpbmUgZXhwbGljaXQgU3BpbkxvY2tIb2xkZXIoU3BpbkxvY2sqIGwpIEVY
Q0xVU0lWRV9MT0NLX0ZVTkNUSU9OKGwpCisgIGlubGluZSBleHBsaWNpdCBTcGluTG9ja0hvbGRl
cihTcGluTG9jayogbCkgQUJTTF9FWENMVVNJVkVfTE9DS19GVU5DVElPTihsKQogICAgICAgOiBs
b2NrXyhsKSB7CiAgICAgbC0+TG9jaygpOwogICB9Ci0gIGlubGluZSB+U3BpbkxvY2tIb2xkZXIo
KSBVTkxPQ0tfRlVOQ1RJT04oKSB7IGxvY2tfLT5VbmxvY2soKTsgfQorICBpbmxpbmUgflNwaW5M
b2NrSG9sZGVyKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJT04oKSB7IGxvY2tfLT5VbmxvY2soKTsgfQog
CiAgIFNwaW5Mb2NrSG9sZGVyKGNvbnN0IFNwaW5Mb2NrSG9sZGVyJikgPSBkZWxldGU7CiAgIFNw
aW5Mb2NrSG9sZGVyJiBvcGVyYXRvcj0oY29uc3QgU3BpbkxvY2tIb2xkZXImKSA9IGRlbGV0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfYWthcm9zLmluYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfYWthcm9zLmluYwppbmRleCAwNTFjOGNmODdmYjZm
ZmIyODBkY2Q4YmYyODdiNzU4ODA5MWRlZTMwLi5iYzQ2ODk0MGZjNWRlZTRjMjU3ODZjMzJmNzgz
YmQ0NjgwZjA0YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX2Fr
YXJvcy5pbmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19ha2Fyb3MuaW5jCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvc3BpbmxvY2tfYmVuY2htYXJrLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0NTFjNjVmOTU1OTRiNjE3OWMz
NzY1ZjA5NDM1OGI1NmViNDYwMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy
bmFsL3NwaW5sb2NrX2JlbmNobWFyay5jYwpAQCAtMCwwICsxLDUyIEBACisvLyBDb3B5cmlnaHQg
MjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworLy8gU2VlIGFsc28gLy9hYnNsL3N5bmNocm9u
aXphdGlvbjptdXRleF9iZW5jaG1hcmsgZm9yIGEgY29tcGFyaXNvbiBvZiBTcGluTG9jaworLy8g
YW5kIE11dGV4IHBlcmZvcm1hbmNlIHVuZGVyIHZhcnlpbmcgbGV2ZWxzIG9mIGNvbnRlbnRpb24u
CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJhYnNsL2Jhc2UvaW50ZXJuYWwvc2NoZWR1bGluZ19tb2RlLmgiCisjaW5jbHVkZSAiYWJzbC9i
YXNlL2ludGVybmFsL3NwaW5sb2NrLmgiCisjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24v
aW50ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5oIgorI2luY2x1ZGUgImJlbmNobWFyay9i
ZW5jaG1hcmsuaCIKKworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPGFic2w6OmJhc2VfaW50ZXJu
YWw6OlNjaGVkdWxpbmdNb2RlIHNjaGVkdWxpbmdfbW9kZT4KK3N0YXRpYyB2b2lkIEJNX1NwaW5M
b2NrKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIC8vIEVuc3VyZSBhIFRocmVhZElkZW50
aXR5IGlzIGluc3RhbGxlZC4KKyAgQUJTTF9JTlRFUk5BTF9DSEVDSygKKyAgICAgIGFic2w6OnN5
bmNocm9uaXphdGlvbl9pbnRlcm5hbDo6R2V0T3JDcmVhdGVDdXJyZW50VGhyZWFkSWRlbnRpdHko
KSAhPQorICAgICAgICAgIG51bGxwdHIsCisgICAgICAiR2V0T3JDcmVhdGVDdXJyZW50VGhyZWFk
SWRlbnRpdHkoKSBmYWlsZWQiKTsKKworICBzdGF0aWMgYXV0byogc3BpbmxvY2sgPSBuZXcgYWJz
bDo6YmFzZV9pbnRlcm5hbDo6U3BpbkxvY2soc2NoZWR1bGluZ19tb2RlKTsKKyAgZm9yIChhdXRv
IF8gOiBzdGF0ZSkgeworICAgIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNwaW5Mb2NrSG9sZGVyIGhv
bGRlcihzcGlubG9jayk7CisgIH0KK30KKworQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NwaW5Mb2Nr
LAorICAgICAgICAgICAgICAgICAgIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNDSEVEVUxFX0tFUk5F
TF9PTkxZKQorICAgIC0+VXNlUmVhbFRpbWUoKQorICAgIC0+VGhyZWFkcygxKQorICAgIC0+VGhy
ZWFkUGVyQ3B1KCk7CisKK0JFTkNITUFSS19URU1QTEFURShCTV9TcGluTG9jaywKKyAgICAgICAg
ICAgICAgICAgICBhYnNsOjpiYXNlX2ludGVybmFsOjpTQ0hFRFVMRV9DT09QRVJBVElWRV9BTkRf
S0VSTkVMKQorICAgIC0+VXNlUmVhbFRpbWUoKQorICAgIC0+VGhyZWFkcygxKQorICAgIC0+VGhy
ZWFkUGVyQ3B1KCk7CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9zcGlubG9ja19saW51eC5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2Nr
X2xpbnV4LmluYwppbmRleCA5NGM4NjFkYzZjYTIzYzI4ZWQyMDgyMjg5YmEyM2VmMjUzODYwMTAx
Li4yOGUyOWQxOTE5MDliM2IzMWUwM2IyOGJkMjJlNjQxZWM4ODc2ZWVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX2xpbnV4LmluYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL3NwaW5sb2NrX2xpbnV4LmluYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtNTEsMTcgKzUxLDEyIEBAIGV4dGVybiAiQyIgewogQUJTTF9BVFRSSUJV
VEVfV0VBSyB2b2lkIEFic2xJbnRlcm5hbFNwaW5Mb2NrRGVsYXkoCiAgICAgc3RkOjphdG9taWM8
dWludDMyX3Q+ICp3LCB1aW50MzJfdCB2YWx1ZSwgaW50IGxvb3AsCiAgICAgYWJzbDo6YmFzZV9p
bnRlcm5hbDo6U2NoZWR1bGluZ01vZGUpIHsKLSAgaWYgKGxvb3AgIT0gMCkgewotICAgIGludCBz
YXZlX2Vycm5vID0gZXJybm87Ci0gICAgc3RydWN0IHRpbWVzcGVjIHRtOwotICAgIHRtLnR2X3Nl
YyA9IDA7Ci0gICAgLy8gSW5jcmVhc2UgdGhlIGRlbGF5OyB3ZSBleHBlY3QgKGJ1dCBkbyBub3Qg
cmVseSBvbikgZXhwbGljaXQgd2FrZXVwcy4KLSAgICAvLyBXZSBkb24ndCByZWx5IG9uIGV4cGxp
Y2l0IHdha2V1cHMgYmVjYXVzZSB3ZSBpbnRlbnRpb25hbGx5IGFsbG93IGZvcgotICAgIC8vIGEg
cmFjZSBvbiB0aGUga1NwaW5Mb2NrU2xlZXBlciBiaXQuCi0gICAgdG0udHZfbnNlYyA9IDE2ICog
YWJzbDo6YmFzZV9pbnRlcm5hbDo6U3BpbkxvY2tTdWdnZXN0ZWREZWxheU5TKGxvb3ApOwotICAg
IHN5c2NhbGwoU1lTX2Z1dGV4LCB3LCBGVVRFWF9XQUlUIHwgRlVURVhfUFJJVkFURV9GTEFHLCB2
YWx1ZSwgJnRtKTsKLSAgICBlcnJubyA9IHNhdmVfZXJybm87Ci0gIH0KKyAgaW50IHNhdmVfZXJy
bm8gPSBlcnJubzsKKyAgc3RydWN0IHRpbWVzcGVjIHRtOworICB0bS50dl9zZWMgPSAwOworICB0
bS50dl9uc2VjID0gYWJzbDo6YmFzZV9pbnRlcm5hbDo6U3BpbkxvY2tTdWdnZXN0ZWREZWxheU5T
KGxvb3ApOworICBzeXNjYWxsKFNZU19mdXRleCwgdywgRlVURVhfV0FJVCB8IEZVVEVYX1BSSVZB
VEVfRkxBRywgdmFsdWUsICZ0bSk7CisgIGVycm5vID0gc2F2ZV9lcnJubzsKIH0KIAogQUJTTF9B
VFRSSUJVVEVfV0VBSyB2b2lkIEFic2xJbnRlcm5hbFNwaW5Mb2NrV2FrZShzdGQ6OmF0b21pYzx1
aW50MzJfdD4gKncsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3Bv
c2l4LmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfcG9zaXguaW5jCmluZGV4IDAw
OThjMWM3NjAxNmYxODUzOGZhNmVjODJmMzU3YzA1YjRmODQ5MzQuLmYwMjViNWY4YTM3M2Q4Zjk2
ODVhMWZlMjQwYzY2OGZiNjFiMTI4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwv
c3BpbmxvY2tfcG9zaXguaW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfcG9z
aXguaW5jCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dhaXQuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL3NwaW5sb2NrX3dhaXQuY2MKaW5kZXggMGZkZTljMDRiNzNiYWY1N2QxMzQ5OTgyMGNi
ZDQ0NzFmMzVmZGRlMi4uZmFjOGEyMWRiNGM1ZjA3ZmZkMzBjNzA5ODkxMTI5OGYxZTFkNDM4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193YWl0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzgsMTQgKzM4LDE1IEBAIG5hbWVzcGFjZSBiYXNlX2lu
dGVybmFsIHsKIHVpbnQzMl90IFNwaW5Mb2NrV2FpdChzdGQ6OmF0b21pYzx1aW50MzJfdD4gKncs
IGludCBuLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNwaW5Mb2NrV2FpdFRyYW5zaXRp
b24gdHJhbnNbXSwKICAgICAgICAgICAgICAgICAgICAgICBiYXNlX2ludGVybmFsOjpTY2hlZHVs
aW5nTW9kZSBzY2hlZHVsaW5nX21vZGUpIHsKLSAgZm9yIChpbnQgbG9vcCA9IDA7IDsgbG9vcCsr
KSB7CisgIGludCBsb29wID0gMDsKKyAgZm9yICg7OykgewogICAgIHVpbnQzMl90IHYgPSB3LT5s
b2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOwogICAgIGludCBpOwogICAgIGZvciAoaSA9
IDA7IGkgIT0gbiAmJiB2ICE9IHRyYW5zW2ldLmZyb207IGkrKykgewogICAgIH0KICAgICBpZiAo
aSA9PSBuKSB7Ci0gICAgICBTcGluTG9ja0RlbGF5KHcsIHYsIGxvb3AsIHNjaGVkdWxpbmdfbW9k
ZSk7ICAvLyBubyBtYXRjaGluZyB0cmFuc2l0aW9uCi0gICAgfSBlbHNlIGlmICh0cmFuc1tpXS50
byA9PSB2IHx8ICAgICAgICAgICAgICAgICAvLyBudWxsIHRyYW5zaXRpb24KKyAgICAgIFNwaW5M
b2NrRGVsYXkodywgdiwgKytsb29wLCBzY2hlZHVsaW5nX21vZGUpOyAgLy8gbm8gbWF0Y2hpbmcg
dHJhbnNpdGlvbgorICAgIH0gZWxzZSBpZiAodHJhbnNbaV0udG8gPT0gdiB8fCAgICAgICAgICAg
ICAgICAgICAvLyBudWxsIHRyYW5zaXRpb24KICAgICAgICAgICAgICAgIHctPmNvbXBhcmVfZXhj
aGFuZ2Vfc3Ryb25nKHYsIHRyYW5zW2ldLnRvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpKSB7
CkBAIC02NCwxNyArNjUsMTQgQEAgaW50IFNwaW5Mb2NrU3VnZ2VzdGVkRGVsYXlOUyhpbnQgbG9v
cCkgewogICByID0gMHg1ZGVlY2U2NmRMTCAqIHIgKyAweGI7ICAgLy8gbnVtYmVycyBmcm9tIG5y
YW5kNDgoKQogICBkZWxheV9yYW5kLnN0b3JlKHIsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OwogCi0gIHIgPDw9IDE2OyAgIC8vIDQ4LWJpdCByYW5kb20gbnVtYmVyIG5vdyBpbiB0b3AgNDgt
Yml0cy4KICAgaWYgKGxvb3AgPCAwIHx8IGxvb3AgPiAzMikgeyAgIC8vIGxpbWl0IGxvb3AgdG8g
MC4uMzIKICAgICBsb29wID0gMzI7CiAgIH0KLSAgLy8gbG9vcD4+MyBjYW5ub3QgZXhjZWVkIDQg
YmVjYXVzZSBsb29wIGNhbm5vdCBleGNlZWQgMzIuCi0gIC8vIFNlbGVjdCB0b3AgMjAuLjI0IGJp
dHMgb2YgbG93ZXIgNDggYml0cywKLSAgLy8gZ2l2aW5nIGFwcHJveGltYXRlbHkgMG1zIHRvIDE2
bXMuCi0gIC8vIE1lYW4gaXMgZXhwb25lbnRpYWwgaW4gbG9vcCBmb3IgZmlyc3QgMzIgaXRlcmF0
aW9ucywgdGhlbiA4bXMuCi0gIC8vIFRoZSBmdXRleCBwYXRoIG11bHRpcGxpZXMgdGhpcyBieSAx
Niwgc2luY2Ugd2UgZXhwZWN0IGV4cGxpY2l0IHdha2V1cHMKLSAgLy8gYWxtb3N0IGFsd2F5cyBv
biB0aGF0IHBhdGguCi0gIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHIgPj4gKDQ0IC0gKGxvb3Ag
Pj4gMykpKTsKKyAgY29uc3QgaW50IGtNaW5EZWxheSA9IDEyOCA8PCAxMDsgIC8vIDEyOHVzCisg
IC8vIERvdWJsZSBkZWxheSBldmVyeSA4IGl0ZXJhdGlvbnMsIHVwIHRvIDE2eCAoMm1zKS4KKyAg
aW50IGRlbGF5ID0ga01pbkRlbGF5IDw8IChsb29wIC8gOCk7CisgIC8vIFJhbmRvbWl6ZSBpbiBk
ZWxheS4uMipkZWxheSByYW5nZSwgZm9yIHJlc3VsdGluZyAxMjh1cy4uNG1zIHJhbmdlLgorICBy
ZXR1cm4gZGVsYXkgfCAoKGRlbGF5IC0gMSkgJiBzdGF0aWNfY2FzdDxpbnQ+KHIpKTsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvc3BpbmxvY2tfd2FpdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193YWl0
LmgKaW5kZXggNWM2Y2M3ZmRiYTRjYzNmM2I3MmY1MGI0YzUwZGU5ZjE5YTcyMDg1ZC4uNjY0MmNl
MWFiMzEwNTdlNmFmMjk1YWQ2NjQ3Y2VhYTBlZTEyNjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9zcGlubG9ja193YWl0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlu
bG9ja193YWl0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfd2luMzIuaW5jIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9zcGlubG9ja193aW4zMi5pbmMKaW5kZXggMzJjOGZjMGJiNTFkOWJkYzdl
OTVmY2MzZjljZGRlZmYwNDk1ZjAyNC4uNzg2NTRiNWI1OTY2Yzk0NWUwMDQ1NTZkMzEyNTkzY2Fj
YzY3NGUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193aW4zMi5p
bmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193aW4zMi5pbmMKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvc3lzaW5mby5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3lzaW5mby5jYwppbmRl
eCBkYjQxYmFjYzg0NGM2MzQ5MWE4MGE0MDcxNDUxZGY3NDBmMDlmNjQ3Li5lNWUxMzFmNzFkMzY4
NmQ5MGJmODUxZDBjYjAyMGU4ZGZjMmEzYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy
bmFsL3N5c2luZm8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvLmNjCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zMzMsNyArMzMzLDcgQEAg
c3RhdGljIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNwaW5Mb2NrIHRpZF9sb2NrKAogLy8gV2Ugc2V0
IGEgYml0IHBlciB0aHJlYWQgaW4gdGhpcyBhcnJheSB0byBpbmRpY2F0ZSB0aGF0IGFuIElEIGlz
IGluCiAvLyB1c2UuIElEIDAgaXMgdW51c2VkIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQgdmFs
dWUgcmV0dXJuZWQgYnkKIC8vIHB0aHJlYWRfZ2V0c3BlY2lmaWMoKS4KLXN0YXRpYyBzdGQ6OnZl
Y3Rvcjx1aW50MzJfdD4qIHRpZF9hcnJheSBHVUFSREVEX0JZKHRpZF9sb2NrKSA9IG51bGxwdHI7
CitzdGF0aWMgc3RkOjp2ZWN0b3I8dWludDMyX3Q+KiB0aWRfYXJyYXkgQUJTTF9HVUFSREVEX0JZ
KHRpZF9sb2NrKSA9IG51bGxwdHI7CiBzdGF0aWMgY29uc3RleHByIGludCBrQml0c1BlcldvcmQg
PSAzMjsgIC8vIHRpZF9hcnJheSBpcyB1aW50MzJfdC4KIAogLy8gUmV0dXJucyB0aGUgVElEIHRv
IHRpZF9hcnJheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3lzaW5mby5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvLmgKaW5kZXggNWJkMWM1MDBiZDU0Y2M1NjY2NTVl
NGViMjIwNWUyNjY1NmNlYjJmMi4uYjg2NGE1OTc0MWYxZTVmMjkzYzQ3YTI4NjIzNzAzOThkMDMw
ODI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3lzaW5mb190ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvX3Rlc3QuY2MKaW5kZXggZTBkOWFhYjli
YzJkYzBkNDAxNWZmYzYyY2QxYThlMDJlZWIxZTIxMy4uODJiYmNjMmIzYmQzMjFjZjdjODc3MDA1
NzU1NTA0OWY5MmY2ZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZv
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zeXNpbmZvX3Rlc3QuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM3LDEyICszNywxMiBAQCBU
RVNUKFN5c2luZm9UZXN0LCBOdW1DUFVzKSB7CiB9CiAKIFRFU1QoU3lzaW5mb1Rlc3QsIE5vbWlu
YWxDUFVGcmVxdWVuY3kpIHsKLSNpZiAhKGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQo
X19saW51eF9fKSkKKyNpZiAhKGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19saW51
eF9fKSkgJiYgIWRlZmluZWQoX19FTVNDUklQVEVOX18pCiAgIEVYUEVDVF9HRShOb21pbmFsQ1BV
RnJlcXVlbmN5KCksIDEwMDAuMCkKICAgICAgIDw8ICJOb21pbmFsQ1BVRnJlcXVlbmN5KCkgZGlk
IG5vdCByZXR1cm4gYSByZWFzb25hYmxlIHZhbHVlIjsKICNlbHNlCi0gIC8vIFRPRE8oYWJzbC10
ZWFtKTogQWFyY2g2NCBjYW5ub3QgcmVhZCB0aGUgQ1BVIGZyZXF1ZW5jeSBmcm9tIHN5c2ZzLCBz
byB3ZQotICAvLyBnZXQgYmFjayAxLjAuIEZpeCBvbmNlIHRoZSB2YWx1ZSBpcyBhdmFpbGFibGUu
CisgIC8vIEFhcmNoNjQgY2Fubm90IHJlYWQgdGhlIENQVSBmcmVxdWVuY3kgZnJvbSBzeXNmcywg
c28gd2UgZ2V0IGJhY2sgMS4wLgorICAvLyBFbXNjcmlwdGVuIGRvZXMgbm90IGhhdmUgYSBzeXNm
cyB0byByZWFkIGZyb20gYXQgYWxsLgogICBFWFBFQ1RfRVEoTm9taW5hbENQVUZyZXF1ZW5jeSgp
LCAxLjApCiAgICAgICA8PCAiQ1BVIGZyZXF1ZW5jeSBkZXRlY3Rpb24gd2FzIGZpeGVkISBQbGVh
c2UgdXBkYXRlIHVuaXR0ZXN0LiI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRl
bnRpdHkuY2MKaW5kZXggY2ZmOWMxYjRmNGRjMzk1NDJiMmFlZDk0NGM4YzdlZDA2NjNmYTJjZi4u
OTEyNzNhNmIxYTE3ZTVmNzcxM2UzMjU0YzdiYjIzNGJjMDFmNTA1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC90aHJlYWRfaWRlbnRpdHkuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eS5oCmluZGV4IGE1MTcyMmY5
ZDgyOGQ1NDk2NWVkOWIxOTk5M2MzYzg3N2Y0NGRkYmYuLmIzNDY3NGE2MmQ0Yjk2YTVjMmMxYzVj
NTRmMzQwODc4N2RmZjIyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFk
X2lkZW50aXR5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuaApA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDIsOSArNDIsOSBA
QCBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7CiBjbGFzcyBTcGluTG9jazsKIHN0cnVjdCBUaHJl
YWRJZGVudGl0eTsKIAotLy8gVXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYmFzZTo6TXV0
ZXggYW5kIGJhc2U6OkNvbmRWYXIuCisvLyBVc2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBh
YnNsOjpNdXRleCBhbmQgYWJzbDo6Q29uZFZhci4KIHN0cnVjdCBQZXJUaHJlYWRTeW5jaCB7Ci0g
IC8vIFRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBiYXNlOjpNdXRleCBhbmQgYmFzZTo6
Q29uZFZhciByZWx5CisgIC8vIFRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhYnNsOjpN
dXRleCBhbmQgYWJzbDo6Q29uZFZhciByZWx5CiAgIC8vIG9uIHRoZSBhbGlnbm1lbnQgb2YgUGVy
VGhyZWFkU3luY2guIEJvdGggc3RvcmUgdGhlIGFkZHJlc3Mgb2YgdGhlCiAgIC8vIFBlclRocmVh
ZFN5bmNoIGluIHRoZSBoaWdoLW9yZGVyIGJpdHMgb2YgdGhlaXIgaW50ZXJuYWwgc3RhdGUsCiAg
IC8vIHdoaWNoIG1lYW5zIHRoZSBsb3cga0xvd1plcm9CaXRzIG9mIHRoZSBhZGRyZXNzIG9mIFBl
clRocmVhZFN5bmNoCkBAIC0yMzcsNCArMjM3LDUgQEAgaW5saW5lIFRocmVhZElkZW50aXR5KiBD
dXJyZW50VGhyZWFkSWRlbnRpdHlJZlByZXNlbnQoKSB7CiAKIH0gIC8vIG5hbWVzcGFjZSBiYXNl
X2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9J
TlRFUk5BTF9USFJFQURfSURFTlRJVFlfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvdGhyZWFkX2lkZW50aXR5X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhy
ZWFkX2lkZW50aXR5X2JlbmNobWFyay5jYwppbmRleCAyNDI1MjJiNDQxOGFmMDAwYjU2OGI1Zjhm
MjBmYjQ3NTdiOGUzY2MzLi4wYWUxMGYyYjFlOGEyYTk5NTZmOTI2MmM0NGM5NzdlNTFhOGE2NjJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eV9iZW5jaG1h
cmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHlfYmVuY2htYXJr
LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eV90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHlfdGVzdC5jYwppbmRleCBlY2I4YWY2ODk4Mjk4NzUw
ODgxN2I0ZGNhNDM1YzY3NTRiZTg5YWE2Li4xM2JmYmUzYmRiYzE5MTkzYmY0YTg1MTEwMWRkNTU0
N2QzZDFkZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0
eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5X3Rlc3Qu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy
bmFsL3Rocm93X2RlbGVnYXRlLmNjCmluZGV4IDQ2ZGM1NzNjZmE4NDI1ZjBmYTcyZDU2M2Y0ODFk
YzkwOTMzMDFjM2MuLjhlOTI4YjhhMjU3ZWUzYzFlY2E1MWNmNWIwZDQ0ODAzNmIwNWIzODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzAsOCArMzAsOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICNpZmRlZiBBQlNMX0hBVkVfRVhDRVBUSU9OUwogICB0aHJvdyBlcnJvcjsKICNlbHNlCi0g
IEFCU0xfUkFXX0xPRyhFUlJPUiwgIiVzIiwgZXJyb3Iud2hhdCgpKTsKLSAgYWJvcnQoKTsKKyAg
QUJTTF9SQVdfTE9HKEZBVEFMLCAiJXMiLCBlcnJvci53aGF0KCkpOworICBzdGQ6OmFib3J0KCk7
CiAjZW5kaWYKIH0KIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC90aHJvd19kZWxlZ2F0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0
ZS5oCmluZGV4IDcwZTJkNzcwOWU1YjU2ZTAyYTQzZDAyY2U0ODkzNDY5MzQ0NzU3MWEuLjAzYzcw
MGI1ZWUwODA1OWVjYjc5ODU1OWFmNjhhNGQ2NTRmMDFmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Ro
cm93X2RlbGVnYXRlLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdHNhbl9tdXRleF9pbnRlcmZhY2UuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvaW50ZXJuYWwvdHNhbl9tdXRleF9pbnRlcmZhY2UuaAppbmRleCA2YmI0ZmFl
ZGI4NzliYjg0YmJhYjhiMzZjNjdiZjU0NTNhYzhiZmFjLi4yYTUxMDYwM2JjOGMxODJmMDU2MGM2
YmFhYzRlMDk2YmY1MjJiYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RzYW5f
bXV0ZXhfaW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90c2FuX211dGV4X2lu
dGVyZmFjZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3VuYWxpZ25lZF9hY2Nlc3MuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvdW5hbGlnbmVkX2FjY2Vzcy5oCmluZGV4IGY5ZGYzYjc4NDhjNDBhOTc0ZmQ5
Njk3ZGVmOGNmN2ZmYmZlMDI5ZWYuLjJjZjdjMWQ0NWIzZjRhYmE4ZGY2N2ZhODg0OTY5ZmU5YTlm
YzU4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5hbGlnbmVkX2FjY2Vzcy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5hbGlnbmVkX2FjY2Vzcy5oCkBAIC01LDcgKzUs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yNSwxNSArMjUsNiBAQAogLy8gdW5h
bGlnbmVkIEFQSXMKIAogLy8gUG9ydGFibGUgaGFuZGxpbmcgb2YgdW5hbGlnbmVkIGxvYWRzLCBz
dG9yZXMsIGFuZCBjb3BpZXMuCi0vLyBPbiBzb21lIHBsYXRmb3JtcywgbGlrZSBBUk0sIHRoZSBj
b3B5IGZ1bmN0aW9ucyBjYW4gYmUgbW9yZSBlZmZpY2llbnQKLS8vIHRoZW4gYSBsb2FkIGFuZCBh
IHN0b3JlLgotLy8KLS8vIEl0IGlzIHBvc3NpYmxlIHRvIGltcGxlbWVudCBhbGwgb2YgdGhlc2Ug
dGhlc2UgdXNpbmcgY29uc3RhbnQtbGVuZ3RoIG1lbWNweQotLy8gY2FsbHMsIHdoaWNoIGlzIHBv
cnRhYmxlIGFuZCB3aWxsIHVzdWFsbHkgYmUgaW5saW5lZCBpbnRvIHNpbXBsZSBsb2FkcyBhbmQK
LS8vIHN0b3JlcyBpZiB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIGl0LiBIb3dldmVyLCBzdWNo
IGlubGluaW5nIHVzdWFsbHkKLS8vIGhhcHBlbnMgaW4gYSBwYXNzIHRoYXQncyBxdWl0ZSBsYXRl
IGluIGNvbXBpbGF0aW9uLCB3aGljaCBtZWFucyB0aGUgcmVzdWx0aW5nCi0vLyBsb2FkcyBhbmQg
c3RvcmVzIGNhbm5vdCBwYXJ0aWNpcGF0ZSBpbiBtYW55IG90aGVyIG9wdGltaXphdGlvbnMsIGxl
YWRpbmcgdG8KLS8vIG92ZXJhbGwgd29yc2UgY29kZS4KIAogLy8gVGhlIHVuYWxpZ25lZCBBUEkg
aXMgQysrIG9ubHkuICBUaGUgZGVjbGFyYXRpb25zIHVzZSBDKysgZmVhdHVyZXMKIC8vIChuYW1l
c3BhY2VzLCBpbmxpbmUpIHdoaWNoIGFyZSBhYnNlbnQgb3IgaW5jb21wYXRpYmxlIGluIEMuCkBA
IC0xMDgsMTY0ICs5OSw4IEBAIGlubGluZSB2b2lkIFVuYWxpZ25lZFN0b3JlNjQodm9pZCAqcCwg
dWludDY0X3QgdikgewogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTY0KF9w
LCBfdmFsKSBcCiAgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRTdG9yZTY0KF9wLCBf
dmFsKSkKIAotI2VsaWYgZGVmaW5lZChVTkRFRklORURfQkVIQVZJT1JfU0FOSVRJWkVSKQotCi1u
YW1lc3BhY2UgYWJzbCB7Ci1uYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7Ci0KLWlubGluZSB1aW50
MTZfdCBVbmFsaWduZWRMb2FkMTYoY29uc3Qgdm9pZCAqcCkgewotICB1aW50MTZfdCB0OwotICBt
ZW1jcHkoJnQsIHAsIHNpemVvZiB0KTsKLSAgcmV0dXJuIHQ7Ci19Ci0KLWlubGluZSB1aW50MzJf
dCBVbmFsaWduZWRMb2FkMzIoY29uc3Qgdm9pZCAqcCkgewotICB1aW50MzJfdCB0OwotICBtZW1j
cHkoJnQsIHAsIHNpemVvZiB0KTsKLSAgcmV0dXJuIHQ7Ci19Ci0KLWlubGluZSB1aW50NjRfdCBV
bmFsaWduZWRMb2FkNjQoY29uc3Qgdm9pZCAqcCkgewotICB1aW50NjRfdCB0OwotICBtZW1jcHko
JnQsIHAsIHNpemVvZiB0KTsKLSAgcmV0dXJuIHQ7Ci19Ci0KLWlubGluZSB2b2lkIFVuYWxpZ25l
ZFN0b3JlMTYodm9pZCAqcCwgdWludDE2X3QgdikgeyBtZW1jcHkocCwgJnYsIHNpemVvZiB2KTsg
fQotCi1pbmxpbmUgdm9pZCBVbmFsaWduZWRTdG9yZTMyKHZvaWQgKnAsIHVpbnQzMl90IHYpIHsg
bWVtY3B5KHAsICZ2LCBzaXplb2Ygdik7IH0KLQotaW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmU2
NCh2b2lkICpwLCB1aW50NjRfdCB2KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYpOyB9Ci0KLX0g
IC8vIG5hbWVzcGFjZSBiYXNlX2ludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgYWJzbAotCi0jZGVm
aW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQxNihfcCkgXAotICAoYWJzbDo6YmFzZV9p
bnRlcm5hbDo6VW5hbGlnbmVkTG9hZDE2KF9wKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFM
SUdORURfTE9BRDMyKF9wKSBcCi0gIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRMb2Fk
MzIoX3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FENjQoX3ApIFwKLSAg
KGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQ2NChfcCkpCi0KLSNkZWZpbmUgQUJT
TF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkUxNihfcCwgX3ZhbCkgXAotICAoYWJzbDo6YmFzZV9p
bnRlcm5hbDo6VW5hbGlnbmVkU3RvcmUxNihfcCwgX3ZhbCkpCi0jZGVmaW5lIEFCU0xfSU5URVJO
QUxfVU5BTElHTkVEX1NUT1JFMzIoX3AsIF92YWwpIFwKLSAgKGFic2w6OmJhc2VfaW50ZXJuYWw6
OlVuYWxpZ25lZFN0b3JlMzIoX3AsIF92YWwpKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJ
R05FRF9TVE9SRTY0KF9wLCBfdmFsKSBcCi0gIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWdu
ZWRTdG9yZTY0KF9wLCBfdmFsKSkKLQotI2VsaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp
bmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfX2kzODYpIHx8IFwKLSAgICBkZWZpbmVkKF9NX0lYODYp
IHx8IGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX1BQQ19fKSB8fCAgICBcCi0gICAgZGVm
aW5lZChfX3BwYzY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKQotCi0vLyB4ODYgYW5kIHg4Ni02
NCBjYW4gcGVyZm9ybSB1bmFsaWduZWQgbG9hZHMvc3RvcmVzIGRpcmVjdGx5OwotLy8gbW9kZXJu
IFBvd2VyUEMgaGFyZHdhcmUgY2FuIGFsc28gZG8gdW5hbGlnbmVkIGludGVnZXIgbG9hZHMgYW5k
IHN0b3JlczsKLS8vIGJ1dCBub3RlOiB0aGUgRlBVIHN0aWxsIHNlbmRzIHVuYWxpZ25lZCBsb2Fk
cyBhbmQgc3RvcmVzIHRvIGEgdHJhcCBoYW5kbGVyIQotCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxf
VU5BTElHTkVEX0xPQUQxNihfcCkgXAotICAoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2
X3QgKj4oX3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIoX3ApIFwK
LSAgKCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90ICo+KF9wKSkKLSNkZWZpbmUgQUJT
TF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDY0KF9wKSBcCi0gICgqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50NjRfdCAqPihfcCkpCi0KLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURf
U1RPUkUxNihfcCwgX3ZhbCkgXAotICAoKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QgKj4oX3Ap
ID0gKF92YWwpKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTMyKF9wLCBf
dmFsKSBcCi0gICgqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCAqPihfcCkgPSAoX3ZhbCkpCi0j
ZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFNjQoX3AsIF92YWwpIFwKLSAgKCpy
ZWludGVycHJldF9jYXN0PHVpbnQ2NF90ICo+KF9wKSA9IChfdmFsKSkKLQotI2VsaWYgZGVmaW5l
ZChfX2FybV9fKSAmJiBcCi0gICAgICAhZGVmaW5lZChfX0FSTV9BUkNIXzVfXykgJiYgXAotICAg
ICAgIWRlZmluZWQoX19BUk1fQVJDSF81VF9fKSAmJiBcCi0gICAgICAhZGVmaW5lZChfX0FSTV9B
UkNIXzVURV9fKSAmJiBcCi0gICAgICAhZGVmaW5lZChfX0FSTV9BUkNIXzVURUpfXykgJiYgXAot
ICAgICAgIWRlZmluZWQoX19BUk1fQVJDSF82X18pICYmIFwKLSAgICAgICFkZWZpbmVkKF9fQVJN
X0FSQ0hfNkpfXykgJiYgXAotICAgICAgIWRlZmluZWQoX19BUk1fQVJDSF82S19fKSAmJiBcCi0g
ICAgICAhZGVmaW5lZChfX0FSTV9BUkNIXzZaX18pICYmIFwKLSAgICAgICFkZWZpbmVkKF9fQVJN
X0FSQ0hfNlpLX18pICYmIFwKLSAgICAgICFkZWZpbmVkKF9fQVJNX0FSQ0hfNlQyX18pCi0KLQot
Ly8gQVJNdjcgYW5kIG5ld2VyIHN1cHBvcnQgbmF0aXZlIHVuYWxpZ25lZCBhY2Nlc3NlcywgYnV0
IG9ubHkgb2YgMTYtYml0Ci0vLyBhbmQgMzItYml0IHZhbHVlcyAobm90IDY0LWJpdCk7IG9sZGVy
IHZlcnNpb25zIGVpdGhlciByYWlzZSBhIGZhdGFsIHNpZ25hbCwKLS8vIGRvIGFuIHVuYWxpZ25l
ZCByZWFkIGFuZCByb3RhdGUgdGhlIHdvcmRzIGFyb3VuZCBhIGJpdCwgb3IgZG8gdGhlIHJlYWRz
IHZlcnkKLS8vIHNsb3dseSAodHJpcCB0aHJvdWdoIGtlcm5lbCBtb2RlKS4gVGhlcmUncyBubyBz
aW1wbGUgI2RlZmluZSB0aGF0IHNheXMganVzdAotLy8gIkFSTXY3IG9yIGhpZ2hlciIsIHNvIHdl
IGhhdmUgdG8gZmlsdGVyIGF3YXkgYWxsIEFSTXY1IGFuZCBBUk12NgotLy8gc3ViLWFyY2hpdGVj
dHVyZXMuIE5ld2VyIGdjYyAoPj0gNC42KSBzZXQgYW4gX19BUk1fRkVBVFVSRV9BTElHTkVEICNk
ZWZpbmUsCi0vLyBzbyBpbiB0aW1lLCBtYXliZSB3ZSBjYW4gbW92ZSBvbiB0byB0aGF0LgotLy8K
LS8vIFRoaXMgaXMgYSBtZXNzLCBidXQgdGhlcmUncyBub3QgbXVjaCB3ZSBjYW4gZG8gYWJvdXQg
aXQuCi0vLwotLy8gVG8gZnVydGhlciBjb21wbGljYXRlIG1hdHRlcnMsIG9ubHkgTERSIGluc3Ry
dWN0aW9ucyAoc2luZ2xlIHJlYWRzKSBhcmUKLS8vIGFsbG93ZWQgdG8gYmUgdW5hbGlnbmVkLCBu
b3QgTERSRCAodHdvIHJlYWRzKSBvciBMRE0gKG1hbnkgcmVhZHMpLiBVbmxlc3Mgd2UKLS8vIGV4
cGxpY2l0bHkgdGVsbCB0aGUgY29tcGlsZXIgdGhhdCB0aGVzZSBhY2Nlc3NlcyBjYW4gYmUgdW5h
bGlnbmVkLCBpdCBjYW4gYW5kCi0vLyB3aWxsIGNvbWJpbmUgYWNjZXNzZXMuIE9uIGFybWNjLCB0
aGUgd2F5IHRvIHNpZ25hbCB0aGlzIGlzIGRvbmUgYnkgYWNjZXNzaW5nCi0vLyB0aHJvdWdoIHRo
ZSB0eXBlICh1aW50MzJfdCBfX3BhY2tlZCAqKSwgYnV0IEdDQyBoYXMgbm8gc3VjaCBhdHRyaWJ1
dGUKLS8vIChpdCBpZ25vcmVzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIG9uIGluZGl2aWR1YWwg
dmFyaWFibGVzKS4gSG93ZXZlciwKLS8vIHdlIGNhbiB0ZWxsIGl0IHRoYXQgYSBfc3RydWN0XyBp
cyB1bmFsaWduZWQsIHdoaWNoIGhhcyB0aGUgc2FtZSBlZmZlY3QsCi0vLyBzbyB3ZSBkbyB0aGF0
LgotCi1uYW1lc3BhY2UgYWJzbCB7Ci1uYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7Ci0KLXN0cnVj
dCBVbmFsaWduZWQxNlN0cnVjdCB7Ci0gIHVpbnQxNl90IHZhbHVlOwotICB1aW50OF90IGR1bW15
OyAgLy8gVG8gbWFrZSB0aGUgc2l6ZSBub24tcG93ZXItb2YtdHdvLgotfSBBQlNMX0FUVFJJQlVU
RV9QQUNLRUQ7Ci0KLXN0cnVjdCBVbmFsaWduZWQzMlN0cnVjdCB7Ci0gIHVpbnQzMl90IHZhbHVl
OwotICB1aW50OF90IGR1bW15OyAgLy8gVG8gbWFrZSB0aGUgc2l6ZSBub24tcG93ZXItb2YtdHdv
LgotfSBBQlNMX0FUVFJJQlVURV9QQUNLRUQ7Ci0KLX0gIC8vIG5hbWVzcGFjZSBiYXNlX2ludGVy
bmFsCi19ICAvLyBuYW1lc3BhY2UgYWJzbAotCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElH
TkVEX0xPQUQxNihfcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjphYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWQxNlN0
cnVjdCAqPihfcCkpIFwKLSAgICAgICAtPnZhbHVlKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VO
QUxJR05FRF9MT0FEMzIoX3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
KChyZWludGVycHJldF9jYXN0PGNvbnN0IDo6YWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVk
MzJTdHJ1Y3QgKj4oX3ApKSBcCi0gICAgICAgLT52YWx1ZSkKLQotI2RlZmluZSBBQlNMX0lOVEVS
TkFMX1VOQUxJR05FRF9TVE9SRTE2KF9wLCBfdmFsKSAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICgocmVpbnRlcnByZXRfY2FzdDwgOjphYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWQxNlN0
cnVjdCAqPihfcCkpIFwKLSAgICAgICAtPnZhbHVlID0gKF92YWwpKQotI2RlZmluZSBBQlNMX0lO
VEVSTkFMX1VOQUxJR05FRF9TVE9SRTMyKF9wLCBfdmFsKSAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICgocmVpbnRlcnByZXRfY2FzdDwgOjphYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWQz
MlN0cnVjdCAqPihfcCkpIFwKLSAgICAgICAtPnZhbHVlID0gKF92YWwpKQotCi1uYW1lc3BhY2Ug
YWJzbCB7Ci1uYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7Ci0KLWlubGluZSB1aW50NjRfdCBVbmFs
aWduZWRMb2FkNjQoY29uc3Qgdm9pZCAqcCkgewotICB1aW50NjRfdCB0OwotICBtZW1jcHkoJnQs
IHAsIHNpemVvZiB0KTsKLSAgcmV0dXJuIHQ7Ci19Ci0KLWlubGluZSB2b2lkIFVuYWxpZ25lZFN0
b3JlNjQodm9pZCAqcCwgdWludDY0X3QgdikgeyBtZW1jcHkocCwgJnYsIHNpemVvZiB2KTsgfQot
Ci19ICAvLyBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIGFic2wKLQot
I2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FENjQoX3ApIFwKLSAgKGFic2w6OmJh
c2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQ2NChfcCkpCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxf
VU5BTElHTkVEX1NUT1JFNjQoX3AsIF92YWwpIFwKLSAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVu
YWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQotCiAjZWxzZQogCi0vLyBBQlNMX0lOVEVSTkFMX05F
RURfQUxJR05FRF9MT0FEUyBpcyBkZWZpbmVkIHdoZW4gdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0K
LS8vIGRvZXNuJ3Qgc3VwcG9ydCB1bmFsaWduZWQgYWNjZXNzLgotI2RlZmluZSBBQlNMX0lOVEVS
TkFMX05FRURfQUxJR05FRF9MT0FEUwotCi0vLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHByb3ZpZGVk
IGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgZG9uJ3Qgc3VwcG9ydAotLy8gdW5hbGlnbmVkIGxvYWRz
IGFuZCBzdG9yZXMuCi0KIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSBiYXNlX2ludGVybmFs
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2su
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5jYwppbmRleCBhMTJk
NjhiZDEwYWY2YTJhOTk4MjZkM2ZjODI4YmQ5MDNkMDZjNDEyLi41OTM3NjJiYzhiOGE1OWUyYjc4
NmRmODdkNjdmNDQ3MTBkN2IyMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vu
c2NhbGVkY3ljbGVjbG9jay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3lj
bGVjbG9jay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgKaW5kZXggMDQ5ZjFjYWNlOTgxMWE1
Y2YyMDU3MGY5NTk1Mzk4MzUxOGUxZGQ1ZS4uMmQzNjFlOTYyODQxMDA3ZGY0NmQ0OTMzNDUxZTIz
MmI0NmQ5MWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xl
Y2xvY2suaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC01OSw3ICs1OSw4IEBA
CiAvLyBDeWNsZUNsb2NrIHRoYXQgcnVucyBhdCBhdGxlYXN0IDEgTUh6LiBXZSd2ZSBmb3VuZCBz
b21lIEFuZHJvaWQKIC8vIEFSTTY0IGRldmljZXMgd2hlcmUgdGhpcyBpcyBub3QgdGhlIGNhc2Us
IHNvIHdlIGRpc2FibGUgaXQgYnkKIC8vIGRlZmF1bHQgb24gQW5kcm9pZCBBUk02NC4KLSNpZiBk
ZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSB8fCBUQVJHRVRfT1NfSVBIT05FIHx8IFwKKyNpZiBk
ZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSB8fCAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
KGRlZmluZWQoVEFSR0VUX09TX0lQSE9ORSkgJiYgVEFSR0VUX09TX0lQSE9ORSkgfHwgXAogICAg
IChkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiBkZWZpbmVkKF9fYWFyY2g2NF9fKSkKICNkZWZpbmUg
QUJTTF9VU0VfVU5TQ0FMRURfQ1lDTEVDTE9DS19ERUZBVUxUIDAKICNlbHNlCkBAIC04Myw2ICs4
NCw3IEBACiAgICAgICBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX01fWDY0KSkKICNkZWZp
bmUgQUJTTF9JTlRFUk5BTF9VTlNDQUxFRF9DWUNMRUNMT0NLX0ZSRVFVRU5DWV9JU19DUFVfRlJF
UVVFTkNZCiAjZW5kaWYKKwogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHRpbWVfaW50ZXJu
YWwgewogY2xhc3MgVW5zY2FsZWRDeWNsZUNsb2NrV3JhcHBlckZvckdldEN1cnJlbnRUaW1lOwpA
QCAtMTE0LDYgKzExNiw3IEBAIGNsYXNzIFVuc2NhbGVkQ3ljbGVDbG9jayB7CiAKIH0gIC8vIG5h
bWVzcGFjZSBiYXNlX2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCiAjZW5kaWYgIC8v
IEFCU0xfVVNFX1VOU0NBTEVEX0NZQ0xFQ0xPQ0sKIAogI2VuZGlmICAvLyBBQlNMX0JBU0VfSU5U
RVJOQUxfVU5TQ0FMRURDWUNMRUNMT0NLX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludm9r
ZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnZva2VfdGVzdC5jYwppbmRleCA0NjZiZjExNGE1OGRj
MTc2ZTcyMTgwOTExZWM5YjZiMzkyYzI4OGU3Li45MDc0NDQzYjNjYmJlNzg1NzMyZjgxMWNlN2Qw
MjY3YTAwNTk4NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludm9rZV90ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvaW52b2tlX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTcwLDYgKzcwLDEwIEBAIHN0cnVjdCBPdmVybG9hZGVkRnVuY3RvciB7
CiBzdHJ1Y3QgQ2xhc3MgewogICBpbnQgTWV0aG9kKGludCBhLCBpbnQgYikgeyByZXR1cm4gYSAt
IGI7IH0KICAgaW50IENvbnN0TWV0aG9kKGludCBhLCBpbnQgYikgY29uc3QgeyByZXR1cm4gYSAt
IGI7IH0KKyAgaW50IFJlZk1ldGhvZChpbnQgYSwgaW50IGIpICYgeyByZXR1cm4gYSAtIGI7IH0K
KyAgaW50IFJlZlJlZk1ldGhvZChpbnQgYSwgaW50IGIpICYmIHsgcmV0dXJuIGEgLSBiOyB9Cisg
IGludCBOb0V4Y2VwdE1ldGhvZChpbnQgYSwgaW50IGIpIG5vZXhjZXB0IHsgcmV0dXJuIGEgLSBi
OyB9CisgIGludCBWb2xhdGlsZU1ldGhvZChpbnQgYSwgaW50IGIpIHZvbGF0aWxlIHsgcmV0dXJu
IGEgLSBiOyB9CiAKICAgaW50IG1lbWJlcjsKIH07CkBAIC0xNTEsOCArMTU1LDE4IEBAIFRFU1Qo
SW52b2tlVGVzdCwgUmVmZXJlbmNlV3JhcHBlcikgewogVEVTVChJbnZva2VUZXN0LCBNZW1iZXJG
dW5jdGlvbikgewogICBzdGQ6OnVuaXF1ZV9wdHI8Q2xhc3M+IHAobmV3IENsYXNzKTsKICAgc3Rk
Ojp1bmlxdWVfcHRyPGNvbnN0IENsYXNzPiBjcChuZXcgQ2xhc3MpOworICBzdGQ6OnVuaXF1ZV9w
dHI8dm9sYXRpbGUgQ2xhc3M+IHZwKG5ldyBDbGFzcyk7CisKICAgRVhQRUNUX0VRKDEsIEludm9r
ZSgmQ2xhc3M6Ok1ldGhvZCwgcCwgMywgMikpOwogICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFz
czo6TWV0aG9kLCBwLmdldCgpLCAzLCAyKSk7CisgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNz
OjpNZXRob2QsICpwLCAzLCAyKSk7CisgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNzOjpSZWZN
ZXRob2QsIHAsIDMsIDIpKTsKKyAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OlJlZk1ldGhv
ZCwgcC5nZXQoKSwgMywgMikpOworICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6UmVmTWV0
aG9kLCAqcCwgMywgMikpOworICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6UmVmUmVmTWV0
aG9kLCBzdGQ6Om1vdmUoKnApLCAzLCAyKSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKDEsIElu
dm9rZSgmQ2xhc3M6Ok5vRXhjZXB0TWV0aG9kLCBwLCAzLCAyKSk7CisgIEVYUEVDVF9FUSgxLCBJ
bnZva2UoJkNsYXNzOjpOb0V4Y2VwdE1ldGhvZCwgcC5nZXQoKSwgMywgMikpOworICBFWFBFQ1Rf
RVEoMSwgSW52b2tlKCZDbGFzczo6Tm9FeGNlcHRNZXRob2QsICpwLCAzLCAyKSk7CiAKICAgRVhQ
RUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OkNvbnN0TWV0aG9kLCBwLCAzLCAyKSk7CiAgIEVYUEVD
VF9FUSgxLCBJbnZva2UoJkNsYXNzOjpDb25zdE1ldGhvZCwgcC5nZXQoKSwgMywgMikpOwpAQCAt
MTYyLDYgKzE3NiwxMyBAQCBURVNUKEludm9rZVRlc3QsIE1lbWJlckZ1bmN0aW9uKSB7CiAgIEVY
UEVDVF9FUSgxLCBJbnZva2UoJkNsYXNzOjpDb25zdE1ldGhvZCwgY3AuZ2V0KCksIDMsIDIpKTsK
ICAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OkNvbnN0TWV0aG9kLCAqY3AsIDMsIDIpKTsK
IAorICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6Vm9sYXRpbGVNZXRob2QsIHAsIDMsIDIp
KTsKKyAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OlZvbGF0aWxlTWV0aG9kLCBwLmdldCgp
LCAzLCAyKSk7CisgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNzOjpWb2xhdGlsZU1ldGhvZCwg
KnAsIDMsIDIpKTsKKyAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6OlZvbGF0aWxlTWV0aG9k
LCB2cCwgMywgMikpOworICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6Vm9sYXRpbGVNZXRo
b2QsIHZwLmdldCgpLCAzLCAyKSk7CisgIEVYUEVDVF9FUSgxLCBJbnZva2UoJkNsYXNzOjpWb2xh
dGlsZU1ldGhvZCwgKnZwLCAzLCAyKSk7CisKICAgRVhQRUNUX0VRKDEsIEludm9rZSgmQ2xhc3M6
Ok1ldGhvZCwgbWFrZV91bmlxdWU8Q2xhc3M+KCksIDMsIDIpKTsKICAgRVhQRUNUX0VRKDEsIElu
dm9rZSgmQ2xhc3M6OkNvbnN0TWV0aG9kLCBtYWtlX3VuaXF1ZTxDbGFzcz4oKSwgMywgMikpOwog
ICBFWFBFQ1RfRVEoMSwgSW52b2tlKCZDbGFzczo6Q29uc3RNZXRob2QsIG1ha2VfdW5pcXVlPGNv
bnN0IENsYXNzPigpLCAzLCAyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0
eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvbG9nX3NldmVyaXR5LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYTJhNDg1MmE1
NzkyN2I2ZDgxMmQ4MDcxM2ViZjVjODQ3ZDViYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2xvZ19zZXZlcml0eS5jYwpAQCAtMCwwICsxLDI1IEBACisvLyBDb3B5cmlnaHQgMjAxNyBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvYmFzZS9sb2dfc2V2ZXJpdHku
aCIKKworI2luY2x1ZGUgPG9zdHJlYW0+CisKK25hbWVzcGFjZSBhYnNsIHsKKworc3RkOjpvc3Ry
ZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGFic2w6OkxvZ1NldmVyaXR5IHMpIHsK
KyAgaWYgKHMgPT0gYWJzbDo6Tm9ybWFsaXplTG9nU2V2ZXJpdHkocykpIHJldHVybiBvcyA8PCBh
YnNsOjpMb2dTZXZlcml0eU5hbWUocyk7CisgIHJldHVybiBvcyA8PCAiYWJzbDo6TG9nU2V2ZXJp
dHkoIiA8PCBzdGF0aWNfY2FzdDxpbnQ+KHMpIDw8ICIpIjsKK30KK30gIC8vIG5hbWVzcGFjZSBh
YnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9s
b2dfc2V2ZXJpdHkuaAppbmRleCA1NzcwZDM2MjllNzI2NDY4OWY2MDI5Y2I2ZDY0Mjg1NTQ1YmY0
ZmQxLi41YTFkNTU3NmNlN2JjNWRhMzA3YWU4MjI2Mzc3NzBkOGYyNDZkZGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbG9nX3NldmVyaXR5
LmgKQEAgLTQsMTkgKzQsMTkgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCiAvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KLS8vCiAKICNpZm5kZWYgQUJTTF9CQVNFX0lOVEVSTkFMX0xPR19TRVZFUklUWV9IXwogI2Rl
ZmluZSBBQlNMX0JBU0VfSU5URVJOQUxfTE9HX1NFVkVSSVRZX0hfCiAKICNpbmNsdWRlIDxhcnJh
eT4KKyNpbmNsdWRlIDxvc3RyZWFtPgogCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMu
aCIKIApAQCAtNjIsNiArNjIsMTAgQEAgY29uc3RleHByIGFic2w6OkxvZ1NldmVyaXR5IE5vcm1h
bGl6ZUxvZ1NldmVyaXR5KGludCBzKSB7CiAgIHJldHVybiBOb3JtYWxpemVMb2dTZXZlcml0eShz
dGF0aWNfY2FzdDxhYnNsOjpMb2dTZXZlcml0eT4ocykpOwogfQogCisvLyBUaGUgZXhhY3QgcmVw
cmVzZW50YXRpb24gb2YgYSBzdHJlYW1lZCBgYWJzbDo6TG9nU2V2ZXJpdHlgIGlzIGRlbGliZXJh
dGVseQorLy8gdW5zcGVjaWZpZWQ7IGRvIG5vdCByZWx5IG9uIGl0Lgorc3RkOjpvc3RyZWFtJiBv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGFic2w6OkxvZ1NldmVyaXR5IHMpOworCiB9ICAv
LyBuYW1lc3BhY2UgYWJzbAogCiAjZW5kaWYgIC8vIEFCU0xfQkFTRV9JTlRFUk5BTF9MT0dfU0VW
RVJJVFlfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbG9nX3NldmVyaXR5X3Rlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2xvZ19zZXZlcml0eV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZTJkMTAxYmZhOGEx
ZGFiOTE5ZDJkMThkMTBhN2M0YmI3ZGE5OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2xvZ19zZXZlcml0eV90ZXN0LmNjCkBAIC0wLDAgKzEsNDMgQEAKKy8vIENvcHlyaWdodCAyMDE4
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2xvZ19zZXZlcml0
eS5oIgorCisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRl
ICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7
Cit1c2luZyB0ZXN0aW5nOjpFcTsKKworc3RkOjpzdHJpbmcgU3RyZWFtSGVscGVyKGFic2w6Okxv
Z1NldmVyaXR5IHZhbHVlKSB7CisgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07CisgIHN0cmVh
bSA8PCB2YWx1ZTsKKyAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKworVEVTVChTdHJlYW1UZXN0
LCBXb3JrcykgeworICBFWFBFQ1RfVEhBVChTdHJlYW1IZWxwZXIoc3RhdGljX2Nhc3Q8YWJzbDo6
TG9nU2V2ZXJpdHk+KC0xMDApKSwKKyAgICAgICAgICAgICAgRXEoImFic2w6OkxvZ1NldmVyaXR5
KC0xMDApIikpOworICBFWFBFQ1RfVEhBVChTdHJlYW1IZWxwZXIoYWJzbDo6TG9nU2V2ZXJpdHk6
OmtJbmZvKSwgRXEoIklORk8iKSk7CisgIEVYUEVDVF9USEFUKFN0cmVhbUhlbHBlcihhYnNsOjpM
b2dTZXZlcml0eTo6a1dhcm5pbmcpLCBFcSgiV0FSTklORyIpKTsKKyAgRVhQRUNUX1RIQVQoU3Ry
ZWFtSGVscGVyKGFic2w6OkxvZ1NldmVyaXR5OjprRXJyb3IpLCBFcSgiRVJST1IiKSk7CisgIEVY
UEVDVF9USEFUKFN0cmVhbUhlbHBlcihhYnNsOjpMb2dTZXZlcml0eTo6a0ZhdGFsKSwgRXEoIkZB
VEFMIikpOworICBFWFBFQ1RfVEhBVChTdHJlYW1IZWxwZXIoc3RhdGljX2Nhc3Q8YWJzbDo6TG9n
U2V2ZXJpdHk+KDQpKSwKKyAgICAgICAgICAgICAgRXEoImFic2w6OkxvZ1NldmVyaXR5KDQpIikp
OworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbWFjcm9zLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL21hY3Jvcy5oCmluZGV4IGNhM2Q1ZWRiNjUzNjUwNmY2ODI3NDE2N2UzYTMx
M2Q1MWNjMGUzMTMuLjYwNmE5MGFjMGNjYTVhYjE1MTViZjk3OTkxMDJlYzM5NTg2ZDlkODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvbWFjcm9zLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9tYWNyb3MuaApA
QCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjQsNyArMjQsNiBA
QAogLy8gVGhpcyBjb2RlIGlzIGNvbXBpbGVkIGRpcmVjdGx5IG9uIG1hbnkgcGxhdGZvcm1zLCBp
bmNsdWRpbmcgY2xpZW50CiAvLyBwbGF0Zm9ybXMgbGlrZSBXaW5kb3dzLCBNYWMsIGFuZCBlbWJl
ZGRlZCBzeXN0ZW1zLiAgQmVmb3JlIG1ha2luZwogLy8gYW55IGNoYW5nZXMgaGVyZSwgbWFrZSBz
dXJlIHRoYXQgeW91J3JlIG5vdCBicmVha2luZyBhbnkgcGxhdGZvcm1zLgotLy8KIAogI2lmbmRl
ZiBBQlNMX0JBU0VfTUFDUk9TX0hfCiAjZGVmaW5lIEFCU0xfQkFTRV9NQUNST1NfSF8KQEAgLTMy
LDYgKzMxLDcgQEAKICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNzdGRkZWY+CiAKKyNp
bmNsdWRlICJhYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL3Bv
cnQuaCIKIAogLy8gQUJTTF9BUlJBWVNJWkUoKQpAQCAtMTkyLDExICsxOTIsMjIgQEAgZW51bSBM
aW5rZXJJbml0aWFsaXplZCB7CiAvLyBUaGlzIG1hY3JvIGlzIGluc3BpcmVkIGJ5CiAvLyBodHRw
czovL2FrcnplbWkxLndvcmRwcmVzcy5jb20vMjAxNy8wNS8xOC9hc3NlcnRzLWluLWNvbnN0ZXhw
ci1mdW5jdGlvbnMvCiAjaWYgZGVmaW5lZChOREVCVUcpCi0jZGVmaW5lIEFCU0xfQVNTRVJUKGV4
cHIpIChmYWxzZSA/ICh2b2lkKShleHByKSA6ICh2b2lkKTApCisjZGVmaW5lIEFCU0xfQVNTRVJU
KGV4cHIpIFwKKyAgKGZhbHNlID8gc3RhdGljX2Nhc3Q8dm9pZD4oZXhwcikgOiBzdGF0aWNfY2Fz
dDx2b2lkPigwKSkKICNlbHNlCi0jZGVmaW5lIEFCU0xfQVNTRVJUKGV4cHIpICAgICAgICAgICAg
ICBcCi0gIChBQlNMX1BSRURJQ1RfVFJVRSgoZXhwcikpID8gKHZvaWQpMCBcCisjZGVmaW5lIEFC
U0xfQVNTRVJUKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoQUJTTF9QUkVE
SUNUX1RSVUUoKGV4cHIpKSA/IHN0YXRpY19jYXN0PHZvaWQ+KDApIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBbXSB7IGFzc2VydChmYWxzZSAmJiAjZXhwcik7IH0oKSkgIC8vIE5P
TElOVAogI2VuZGlmCiAKKyNpZmRlZiBBQlNMX0hBVkVfRVhDRVBUSU9OUworI2RlZmluZSBBQlNM
X0lOVEVSTkFMX1RSWSB0cnkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9DQVRDSF9BTlkgY2F0Y2gg
KC4uLikKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9SRVRIUk9XIGRvIHsgdGhyb3c7IH0gd2hpbGUg
KGZhbHNlKQorI2Vsc2UgIC8vIEFCU0xfSEFWRV9FWENFUFRJT05TCisjZGVmaW5lIEFCU0xfSU5U
RVJOQUxfVFJZIGlmICh0cnVlKQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX0NBVENIX0FOWSBlbHNl
IGlmIChmYWxzZSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9SRVRIUk9XIGRvIHt9IHdoaWxlIChm
YWxzZSkKKyNlbmRpZiAgLy8gQUJTTF9IQVZFX0VYQ0VQVElPTlMKKwogI2VuZGlmICAvLyBBQlNM
X0JBU0VfTUFDUk9TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL29wdGltaXphdGlvbi5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9vcHRpbWl6YXRpb24uaAppbmRleCAyZmRkZmM4MDBjMWRkZDVlYTM3NzZlNDg5
MmJkMmFiNDA5MTE1MTZjLi4wZGNiZWYzMmEzYzUwNzA1ZjdhMWZjMDA2OTgzMGUzNTEwNzZlZThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL29wdGltaXphdGlvbi5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
b3B0aW1pemF0aW9uLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTExMSw5ICsxMTEsOSBAQAogLy8gU2VlIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEv
c2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIwMTYvcDAxNTRyMS5odG1sCiAvLyBmb3IgbW9yZSBpbmZv
cm1hdGlvbi4KIC8vCi0vLyBPbiBzb21lIGNvbXBpbGVycywgYEFCU0xfQ0FDSEVMSU5FX0FMSUdO
RURgIGV4cGFuZHMgdG8KLS8vIGBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKEFCU0xfQ0FDSEVMSU5F
X1NJWkUpKSlgLiBGb3IgY29tcGlsZXJzIHdoZXJlIHRoaXMgaXMKLS8vIG5vdCBrbm93biB0byB3
b3JrLCB0aGUgbWFjcm8gZXhwYW5kcyB0byBub3RoaW5nLgorLy8gT24gc29tZSBjb21waWxlcnMs
IGBBQlNMX0NBQ0hFTElORV9BTElHTkVEYCBleHBhbmRzIHRvIGFuIGBfX2F0dHJpYnV0ZV9fYAor
Ly8gb3IgYF9fZGVjbHNwZWNgIGF0dHJpYnV0ZS4gRm9yIGNvbXBpbGVycyB3aGVyZSB0aGlzIGlz
IG5vdCBrbm93biB0byB3b3JrLAorLy8gdGhlIG1hY3JvIGV4cGFuZHMgdG8gbm90aGluZy4KIC8v
CiAvLyBObyBmdXJ0aGVyIGd1YXJhbnRlZXMgYXJlIG1hZGUgaGVyZS4gVGhlIHJlc3VsdCBvZiBh
cHBseWluZyB0aGUgbWFjcm8KIC8vIHRvIHZhcmlhYmxlcyBhbmQgdHlwZXMgaXMgYWx3YXlzIGlt
cGxlbWVudGF0aW9uLWRlZmluZWQuCkBAIC0xMjIsNiArMTIyLDE0IEBACiAvLyBvZiBjYXVzaW5n
IGJ1Z3MgdGhhdCBhcmUgZGlmZmljdWx0IHRvIGRpYWdub3NlLCBjcmFzaCwgZXRjLiBJdCBkb2Vz
IG5vdAogLy8gb2YgaXRzZWxmIGd1YXJhbnRlZSB0aGF0IG9iamVjdHMgYXJlIGFsaWduZWQgdG8g
YSBjYWNoZSBsaW5lLgogLy8KKy8vIE5PVEU6IFNvbWUgY29tcGlsZXJzIGFyZSBwaWNreSBhYm91
dCB0aGUgbG9jYXRpb25zIG9mIGFubm90YXRpb25zIHN1Y2ggYXMKKy8vIHRoaXMgYXR0cmlidXRl
LCBzbyBwcmVmZXIgdG8gcHV0IGl0IGF0IHRoZSBiZWdpbm5pbmcgb2YgeW91ciBkZWNsYXJhdGlv
bi4KKy8vIEZvciBleGFtcGxlLAorLy8KKy8vICAgQUJTTF9DQUNIRUxJTkVfQUxJR05FRCBzdGF0
aWMgRm9vKiBmb28gPSAuLi4KKy8vCisvLyAgIGNsYXNzIEFCU0xfQ0FDSEVMSU5FX0FMSUdORUQg
QmFyIHsgLi4uCisvLwogLy8gUmVjb21tZW5kYXRpb25zOgogLy8KIC8vIDEpIENvbnN1bHQgY29t
cGlsZXIgZG9jdW1lbnRhdGlvbjsgdGhpcyBjb21tZW50IGlzIG5vdCBrZXB0IGluIHN5bmMgYXMK
QEAgLTEzMSw4ICsxMzksMTAgQEAKIC8vIDMpIFByZWZlciBhcHBseWluZyB0aGlzIGF0dHJpYnV0
ZSB0byBpbmRpdmlkdWFsIHZhcmlhYmxlcy4gQXZvaWQKIC8vICAgIGFwcGx5aW5nIGl0IHRvIHR5
cGVzLiBUaGlzIHRlbmRzIHRvIGxvY2FsaXplIHRoZSBlZmZlY3QuCiAjZGVmaW5lIEFCU0xfQ0FD
SEVMSU5FX0FMSUdORUQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZChBQlNMX0NBQ0hFTElORV9TSVpF
KSkpCi0KLSNlbHNlICAvLyBub3QgR0NDCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2RlZmlu
ZSBBQlNMX0NBQ0hFTElORV9TSVpFIDY0CisjZGVmaW5lIEFCU0xfQ0FDSEVMSU5FX0FMSUdORUQg
X19kZWNsc3BlYyhhbGlnbihBQlNMX0NBQ0hFTElORV9TSVpFKSkKKyNlbHNlCiAjZGVmaW5lIEFC
U0xfQ0FDSEVMSU5FX1NJWkUgNjQKICNkZWZpbmUgQUJTTF9DQUNIRUxJTkVfQUxJR05FRAogI2Vu
ZGlmCkBAIC0xNTMsNiArMTYzLDEyIEBACiAvLyBDb21waWxlcnMgY2FuIHVzZSB0aGUgaW5mb3Jt
YXRpb24gdGhhdCBhIGNlcnRhaW4gYnJhbmNoIGlzIG5vdCBsaWtlbHkgdG8gYmUKIC8vIHRha2Vu
IChmb3IgaW5zdGFuY2UsIGEgQ0hFQ0sgZmFpbHVyZSkgdG8gb3B0aW1pemUgZm9yIHRoZSBjb21t
b24gY2FzZSBpbgogLy8gdGhlIGFic2VuY2Ugb2YgYmV0dGVyIGluZm9ybWF0aW9uIChpZS4gY29t
cGlsaW5nIGdjYyB3aXRoIGAtZnByb2ZpbGUtYXJjc2ApLgorLy8KKy8vIFJlY29tbWVuZGF0aW9u
OiBNb2Rlcm4gQ1BVcyBkeW5hbWljYWxseSBwcmVkaWN0IGJyYW5jaCBleGVjdXRpb24gcGF0aHMs
CisvLyB0eXBpY2FsbHkgd2l0aCBhY2N1cmFjeSBncmVhdGVyIHRoYW4gOTclLiBBcyBhIHJlc3Vs
dCwgYW5ub3RhdGluZyBldmVyeQorLy8gYnJhbmNoIGluIGEgY29kZWJhc2UgaXMgbGlrZWx5IGNv
dW50ZXJwcm9kdWN0aXZlOyBob3dldmVyLCBhbm5vdGF0aW5nCisvLyBzcGVjaWZpYyBicmFuY2hl
cyB0aGF0IGFyZSBib3RoIGhvdCBhbmQgY29uc2lzdGVudGx5IG1pc3ByZWRpY3RlZCBpcyBsaWtl
bHkKKy8vIHRvIHlpZWxkIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4KICNpZiBBQlNMX0hBVkVf
QlVJTFRJTihfX2J1aWx0aW5fZXhwZWN0KSB8fCBcCiAgICAgKGRlZmluZWQoX19HTlVDX18pICYm
ICFkZWZpbmVkKF9fY2xhbmdfXykpCiAjZGVmaW5lIEFCU0xfUFJFRElDVF9GQUxTRSh4KSAoX19i
dWlsdGluX2V4cGVjdCh4LCAwKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvcG9saWN5X2NoZWNr
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9wb2xpY3lfY2hlY2tzLmgKaW5kZXggMGEwN2ZjMDM1ZTE1MjZjZDkx
NmJlYWI2ZmZjMDM0YTllNjcwNmIyZi4uNjk5ZmIxYTJlMGZjYzhjOTdkMTA4ZTdlM2UxYjFlOTI5
MzU1MDE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9wb2xpY3lfY2hlY2tzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9wb2xpY3lfY2hlY2tzLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvcG9ydC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9wb3J0
LmgKaW5kZXggMWM2NzI1N2ZkOGYzMjNlYjE3MmFjNWFlMmNiMWIxZTQxZjQ3ZDRmOC4uNmMyODA2
OGQ0ZjQwMGU1NzVhNDU0OGE2YzI1OTdjY2IzMmJjNGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9wb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9wb3J0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvcmF3X2xvZ2dpbmdfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvcmF3X2xvZ2dpbmdfdGVzdC5jYwppbmRleCBiMjFjZjY1MTc1OGUz
YzI0OTI2MmU2OWMxYzhiYTE3YzFjOWE3YWVlLi4zZDMwYmQzODYxMTUyZjg1OTcxNjMxNDBiZjM0
OGRlYTQ2YmQ3MDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3Jhd19sb2dnaW5nX3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9yYXdfbG9nZ2luZ190ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3NwaW5sb2NrX3Rl
c3RfY29tbW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9zcGlubG9ja190ZXN0X2NvbW1vbi5jYwppbmRleCAx
YjUwODg0ODYxMWU2YzFlMDYzYzgxNTg1NmE5YTc4YzM0ZmM0NTFlLi44NGZjNGRhYzBiZTc0ZjAz
YjQzODVjNzEyNDgzNzY2NjhmNGRjZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3NwaW5sb2Nr
X3Rlc3RfY29tbW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uvc3BpbmxvY2tfdGVzdF9jb21tb24uY2MK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTU0LDYgKzU0LDcg
QEAgbmFtZXNwYWNlIHsKIAogc3RhdGljIGNvbnN0ZXhwciBpbnQga0FycmF5TGVuZ3RoID0gMTA7
CiBzdGF0aWMgdWludDMyX3QgdmFsdWVzW2tBcnJheUxlbmd0aF07CisKIHN0YXRpYyBTcGluTG9j
ayBzdGF0aWNfc3BpbmxvY2soYmFzZV9pbnRlcm5hbDo6a0xpbmtlckluaXRpYWxpemVkKTsKIHN0
YXRpYyBTcGluTG9jayBzdGF0aWNfY29vcGVyYXRpdmVfc3BpbmxvY2soCiAgICAgYmFzZV9pbnRl
cm5hbDo6a0xpbmtlckluaXRpYWxpemVkLApAQCAtNjEsNyArNjIsNiBAQCBzdGF0aWMgU3Bpbkxv
Y2sgc3RhdGljX2Nvb3BlcmF0aXZlX3NwaW5sb2NrKAogc3RhdGljIFNwaW5Mb2NrIHN0YXRpY19u
b25jb29wZXJhdGl2ZV9zcGlubG9jaygKICAgICBiYXNlX2ludGVybmFsOjprTGlua2VySW5pdGlh
bGl6ZWQsIGJhc2VfaW50ZXJuYWw6OlNDSEVEVUxFX0tFUk5FTF9PTkxZKTsKIAotCiAvLyBTaW1w
bGUgaW50ZWdlciBoYXNoIGZ1bmN0aW9uIGJhc2VkIG9uIHRoZSBwdWJsaWMgZG9tYWluIGxvb2t1
cDIgaGFzaC4KIC8vIGh0dHA6Ly9idXJ0bGVidXJ0bGUubmV0L2JvYi9jL2xvb2t1cDIuYwogc3Rh
dGljIHVpbnQzMl90IEhhc2gzMih1aW50MzJfdCBhLCB1aW50MzJfdCBjKSB7CkBAIC0xNTUsNyAr
MTU1LDggQEAgVEVTVChTcGluTG9jaywgV2FpdEN5Y2xlc0VuY29kaW5nKSB7CiAKICAgLy8gVGVz
dCBjb3JuZXIgY2FzZXMKICAgaW50NjRfdCBzdGFydF90aW1lID0gdGltZV9kaXN0cmlidXRpb24o
Z2VuZXJhdG9yKTsKLSAgRVhQRUNUX0VRKDAsIFNwaW5Mb2NrVGVzdDo6RW5jb2RlV2FpdEN5Y2xl
cyhzdGFydF90aW1lLCBzdGFydF90aW1lKSk7CisgIEVYUEVDVF9FUShrU3BpbkxvY2tTbGVlcGVy
LAorICAgICAgICAgICAgU3BpbkxvY2tUZXN0OjpFbmNvZGVXYWl0Q3ljbGVzKHN0YXJ0X3RpbWUs
IHN0YXJ0X3RpbWUpKTsKICAgRVhQRUNUX0VRKDAsIFNwaW5Mb2NrVGVzdDo6RGVjb2RlV2FpdEN5
Y2xlcygwKSk7CiAgIEVYUEVDVF9FUSgwLCBTcGluTG9ja1Rlc3Q6OkRlY29kZVdhaXRDeWNsZXMo
a0xvY2t3b3JkUmVzZXJ2ZWRNYXNrKSk7CiAgIEVYUEVDVF9FUShrTWF4Q3ljbGVzICYgfmtQcm9m
aWxlVGltZXN0YW1wTWFzaywKQEAgLTE4OCw5ICsxODksMTEgQEAgVEVTVChTcGluTG9jaywgV2Fp
dEN5Y2xlc0VuY29kaW5nKSB7CiAgICAgU3BpbkxvY2tUZXN0OjpEZWNvZGVXYWl0Q3ljbGVzKGJl
Zm9yZV9tYXhfdmFsdWUpOwogICBFWFBFQ1RfR1QoZXhwZWN0ZWRfbWF4X3ZhbHVlX2RlY29kZWQs
IGJlZm9yZV9tYXhfdmFsdWVfZGVjb2RlZCk7CiB9CisKIFRFU1QoU3BpbkxvY2tXaXRoVGhyZWFk
cywgU3RhdGljU3BpbkxvY2spIHsKICAgVGhyZWFkZWRUZXN0KCZzdGF0aWNfc3BpbmxvY2spOwog
fQorCiBURVNUKFNwaW5Mb2NrV2l0aFRocmVhZHMsIFN0YWNrU3BpbkxvY2spIHsKICAgU3Bpbkxv
Y2sgc3BpbmxvY2s7CiAgIFRocmVhZGVkVGVzdCgmc3BpbmxvY2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvdGhyZWFkX2Fubm90YXRp
b25zLmgKaW5kZXggZmJiMjc5N2I4MjVmNWIyNTA5NzM0N2I4NDlkMmU2MjM0NGMxZWMyOC4uOTMy
MWMzZjg3NmMzMmMzZmFlNjgxOTY2NmEwNGEzYzk5MWZlYWRhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3RocmVhZF9hbm5vdGF0
aW9ucy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yMSw3
ICsyMSw2IEBACiAvLyBjb2RlLiBUaGUgYW5ub3RhdGlvbnMgY2FuIGFsc28gaGVscCBwcm9ncmFt
IGFuYWx5c2lzIHRvb2xzIHRvIGlkZW50aWZ5CiAvLyBwb3RlbnRpYWwgdGhyZWFkIHNhZmV0eSBp
c3N1ZXMuCiAvLwotLy8KIC8vIFRoZXNlIGFubm90YXRpb25zIGFyZSBpbXBsZW1lbnRlZCB1c2lu
ZyBjb21waWxlciBhdHRyaWJ1dGVzLiBVc2luZyB0aGUgbWFjcm9zCiAvLyBkZWZpbmVkIGhlcmUg
aW5zdGVhZCBvZiByYXcgYXR0cmlidXRlcyBhbGxvdyBmb3IgcG9ydGFiaWxpdHkgYW5kIGZ1dHVy
ZQogLy8gY29tcGF0aWJpbGl0eS4KQEAgLTM0LDE5ICszMywyMCBAQAogCiAjaWZuZGVmIEFCU0xf
QkFTRV9USFJFQURfQU5OT1RBVElPTlNfSF8KICNkZWZpbmUgQUJTTF9CQVNFX1RIUkVBRF9BTk5P
VEFUSU9OU19IXworCiAjaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jZGVmaW5lIFRIUkVBRF9BTk5P
VEFUSU9OX0FUVFJJQlVURV9fKHgpICAgX19hdHRyaWJ1dGVfXygoeCkpCisjZGVmaW5lIEFCU0xf
SU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKHgpIF9fYXR0cmlidXRlX18oKHgp
KQogI2Vsc2UKLSNkZWZpbmUgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18oeCkgICAvLyBu
by1vcAorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURSh4
KSAgLy8gbm8tb3AKICNlbmRpZgogCi0vLyBHVUFSREVEX0JZKCkKKy8vIEFCU0xfR1VBUkRFRF9C
WSgpCiAvLwogLy8gRG9jdW1lbnRzIGlmIGEgc2hhcmVkIGZpZWxkIG9yIGdsb2JhbCB2YXJpYWJs
ZSBuZWVkcyB0byBiZSBwcm90ZWN0ZWQgYnkgYQotLy8gbXV0ZXguIEdVQVJERURfQlkoKSBhbGxv
d3MgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIHBhcnRpY3VsYXIgbXV0ZXggdGhhdAorLy8gbXV0ZXgu
IEFCU0xfR1VBUkRFRF9CWSgpIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IGEgcGFydGljdWxh
ciBtdXRleCB0aGF0CiAvLyBzaG91bGQgYmUgaGVsZCB3aGVuIGFjY2Vzc2luZyB0aGUgYW5ub3Rh
dGVkIHZhcmlhYmxlLgogLy8KLS8vIEFsdGhvdWdoIHRoaXMgYW5ub3RhdGlvbiAoYW5kIFBUX0dV
QVJERURfQlksIGJlbG93KSBjYW5ub3QgYmUgYXBwbGllZCB0bworLy8gQWx0aG91Z2ggdGhpcyBh
bm5vdGF0aW9uIChhbmQgQUJTTF9QVF9HVUFSREVEX0JZLCBiZWxvdykgY2Fubm90IGJlIGFwcGxp
ZWQgdG8KIC8vIGxvY2FsIHZhcmlhYmxlcywgYSBsb2NhbCB2YXJpYWJsZSBhbmQgaXRzIGFzc29j
aWF0ZWQgbXV0ZXggY2FuIG9mdGVuIGJlCiAvLyBjb21iaW5lZCBpbnRvIGEgc21hbGwgY2xhc3Mg
b3Igc3RydWN0LCB0aGVyZWJ5IGFsbG93aW5nIHRoZSBhbm5vdGF0aW9uLgogLy8KQEAgLTU0LDEy
ICs1NCwxMyBAQAogLy8KIC8vICAgY2xhc3MgRm9vIHsKIC8vICAgICBNdXRleCBtdV87Ci0vLyAg
ICAgaW50IHAxXyBHVUFSREVEX0JZKG11Xyk7CisvLyAgICAgaW50IHAxXyBBQlNMX0dVQVJERURf
QlkobXVfKTsKIC8vICAgICAuLi4KIC8vICAgfTsKLSNkZWZpbmUgR1VBUkRFRF9CWSh4KSBUSFJF
QURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhndWFyZGVkX2J5KHgpKQorI2RlZmluZSBBQlNMX0dV
QVJERURfQlkoeCkgXAorICBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVU
RShndWFyZGVkX2J5KHgpKQogCi0vLyBQVF9HVUFSREVEX0JZKCkKKy8vIEFCU0xfUFRfR1VBUkRF
RF9CWSgpCiAvLwogLy8gRG9jdW1lbnRzIGlmIHRoZSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0
byBieSBhIHBvaW50ZXIgc2hvdWxkIGJlIGd1YXJkZWQKIC8vIGJ5IGEgbXV0ZXggd2hlbiBkZXJl
ZmVyZW5jaW5nIHRoZSBwb2ludGVyLgpAQCAtNjcsNyArNjgsNyBAQAogLy8gRXhhbXBsZToKIC8v
ICAgY2xhc3MgRm9vIHsKIC8vICAgICBNdXRleCBtdV87Ci0vLyAgICAgaW50ICpwMV8gUFRfR1VB
UkRFRF9CWShtdV8pOworLy8gICAgIGludCAqcDFfIEFCU0xfUFRfR1VBUkRFRF9CWShtdV8pOwog
Ly8gICAgIC4uLgogLy8gICB9OwogLy8KQEAgLTc4LDEwMyArNzksMTE1IEBACiAvLwogLy8gICAv
LyBgcV9gLCBndWFyZGVkIGJ5IGBtdTFfYCwgcG9pbnRzIHRvIGEgc2hhcmVkIG1lbW9yeSBsb2Nh
dGlvbiB0aGF0IGlzCiAvLyAgIC8vIGd1YXJkZWQgYnkgYG11Ml9gOgotLy8gICBpbnQgKnFfIEdV
QVJERURfQlkobXUxXykgUFRfR1VBUkRFRF9CWShtdTJfKTsKLSNkZWZpbmUgUFRfR1VBUkRFRF9C
WSh4KSBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhwdF9ndWFyZGVkX2J5KHgpKQorLy8g
ICBpbnQgKnFfIEFCU0xfR1VBUkRFRF9CWShtdTFfKSBBQlNMX1BUX0dVQVJERURfQlkobXUyXyk7
CisjZGVmaW5lIEFCU0xfUFRfR1VBUkRFRF9CWSh4KSBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFE
X0FOTk9UQVRJT05fQVRUUklCVVRFKHB0X2d1YXJkZWRfYnkoeCkpCiAKLS8vIEFDUVVJUkVEX0FG
VEVSKCkgLyBBQ1FVSVJFRF9CRUZPUkUoKQorLy8gQUJTTF9BQ1FVSVJFRF9BRlRFUigpIC8gQUJT
TF9BQ1FVSVJFRF9CRUZPUkUoKQogLy8KIC8vIERvY3VtZW50cyB0aGUgYWNxdWlzaXRpb24gb3Jk
ZXIgYmV0d2VlbiBsb2NrcyB0aGF0IGNhbiBiZSBoZWxkCiAvLyBzaW11bHRhbmVvdXNseSBieSBh
IHRocmVhZC4gRm9yIGFueSB0d28gbG9ja3MgdGhhdCBuZWVkIHRvIGJlIGFubm90YXRlZAogLy8g
dG8gZXN0YWJsaXNoIGFuIGFjcXVpc2l0aW9uIG9yZGVyLCBvbmx5IG9uZSBvZiB0aGVtIG5lZWRz
IHRoZSBhbm5vdGF0aW9uLgotLy8gKGkuZS4gWW91IGRvbid0IGhhdmUgdG8gYW5ub3RhdGUgYm90
aCBsb2NrcyB3aXRoIGJvdGggQUNRVUlSRURfQUZURVIKLS8vIGFuZCBBQ1FVSVJFRF9CRUZPUkUu
KQorLy8gKGkuZS4gWW91IGRvbid0IGhhdmUgdG8gYW5ub3RhdGUgYm90aCBsb2NrcyB3aXRoIGJv
dGggQUJTTF9BQ1FVSVJFRF9BRlRFUgorLy8gYW5kIEFCU0xfQUNRVUlSRURfQkVGT1JFLikKIC8v
Ci0vLyBBcyB3aXRoIEdVQVJERURfQlksIHRoaXMgaXMgb25seSBhcHBsaWNhYmxlIHRvIG11dGV4
ZXMgdGhhdCBhcmUgc2hhcmVkCisvLyBBcyB3aXRoIEFCU0xfR1VBUkRFRF9CWSwgdGhpcyBpcyBv
bmx5IGFwcGxpY2FibGUgdG8gbXV0ZXhlcyB0aGF0IGFyZSBzaGFyZWQKIC8vIGZpZWxkcyBvciBn
bG9iYWwgdmFyaWFibGVzLgogLy8KIC8vIEV4YW1wbGU6CiAvLwogLy8gICBNdXRleCBtMV87Ci0v
LyAgIE11dGV4IG0yXyBBQ1FVSVJFRF9BRlRFUihtMV8pOwotI2RlZmluZSBBQ1FVSVJFRF9BRlRF
UiguLi4pIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18oYWNxdWlyZWRfYWZ0ZXIo
X19WQV9BUkdTX18pKQorLy8gICBNdXRleCBtMl8gQUJTTF9BQ1FVSVJFRF9BRlRFUihtMV8pOwor
I2RlZmluZSBBQlNMX0FDUVVJUkVEX0FGVEVSKC4uLikgXAorICBBQlNMX0lOVEVSTkFMX1RIUkVB
RF9BTk5PVEFUSU9OX0FUVFJJQlVURShhY3F1aXJlZF9hZnRlcihfX1ZBX0FSR1NfXykpCiAKLSNk
ZWZpbmUgQUNRVUlSRURfQkVGT1JFKC4uLikgXAotICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJV
VEVfXyhhY3F1aXJlZF9iZWZvcmUoX19WQV9BUkdTX18pKQorI2RlZmluZSBBQlNMX0FDUVVJUkVE
X0JFRk9SRSguLi4pIFwKKyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJV
VEUoYWNxdWlyZWRfYmVmb3JlKF9fVkFfQVJHU19fKSkKIAotLy8gRVhDTFVTSVZFX0xPQ0tTX1JF
UVVJUkVEKCkgLyBTSEFSRURfTE9DS1NfUkVRVUlSRUQoKQorLy8gQUJTTF9FWENMVVNJVkVfTE9D
S1NfUkVRVUlSRUQoKSAvIEFCU0xfU0hBUkVEX0xPQ0tTX1JFUVVJUkVEKCkKIC8vCiAvLyBEb2N1
bWVudHMgYSBmdW5jdGlvbiB0aGF0IGV4cGVjdHMgYSBtdXRleCB0byBiZSBoZWxkIHByaW9yIHRv
IGVudHJ5LgogLy8gVGhlIG11dGV4IGlzIGV4cGVjdGVkIHRvIGJlIGhlbGQgYm90aCBvbiBlbnRy
eSB0bywgYW5kIGV4aXQgZnJvbSwgdGhlCiAvLyBmdW5jdGlvbi4KIC8vCisvLyBBbiBleGNsdXNp
dmUgbG9jayBhbGxvd3MgcmVhZC13cml0ZSBhY2Nlc3MgdG8gdGhlIGd1YXJkZWQgZGF0YSBtZW1i
ZXIocyksIGFuZAorLy8gb25seSBvbmUgdGhyZWFkIGNhbiBhY3F1aXJlIGEgbG9jayBleGNsdXNp
dmVseSBhdCBhbnkgb25lIHRpbWUuIEEgc2hhcmVkIGxvY2sKKy8vIGFsbG93cyByZWFkLW9ubHkg
YWNjZXNzLCBhbmQgYW55IG51bWJlciBvZiB0aHJlYWRzIGNhbiBhY3F1aXJlIGEgc2hhcmVkIGxv
Y2sKKy8vIGNvbmN1cnJlbnRseS4KKy8vCisvLyBHZW5lcmFsbHksIG5vbi1jb25zdCBtZXRob2Rz
IHNob3VsZCBiZSBhbm5vdGF0ZWQgd2l0aAorLy8gQUJTTF9FWENMVVNJVkVfTE9DS1NfUkVRVUlS
RUQsIHdoaWxlIGNvbnN0IG1ldGhvZHMgc2hvdWxkIGJlIGFubm90YXRlZCB3aXRoCisvLyBBQlNM
X1NIQVJFRF9MT0NLU19SRVFVSVJFRC4KKy8vCiAvLyBFeGFtcGxlOgogLy8KIC8vICAgTXV0ZXgg
bXUxLCBtdTI7Ci0vLyAgIGludCBhIEdVQVJERURfQlkobXUxKTsKLS8vICAgaW50IGIgR1VBUkRF
RF9CWShtdTIpOwotLy8KLS8vICAgdm9pZCBmb28oKSBFWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQo
bXUxLCBtdTIpIHsgLi4uIH07Ci0jZGVmaW5lIEVYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRCguLi4p
IFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18oZXhjbHVzaXZlX2xvY2tzX3JlcXVp
cmVkKF9fVkFfQVJHU19fKSkKKy8vICAgaW50IGEgQUJTTF9HVUFSREVEX0JZKG11MSk7CisvLyAg
IGludCBiIEFCU0xfR1VBUkRFRF9CWShtdTIpOworLy8KKy8vICAgdm9pZCBmb28oKSBBQlNMX0VY
Q0xVU0lWRV9MT0NLU19SRVFVSVJFRChtdTEsIG11MikgeyAuLi4gfQorLy8gICB2b2lkIGJhcigp
IGNvbnN0IEFCU0xfU0hBUkVEX0xPQ0tTX1JFUVVJUkVEKG11MSwgbXUyKSB7IC4uLiB9CisjZGVm
aW5lIEFCU0xfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKC4uLikgICBcCisgIEFCU0xfSU5URVJO
QUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKCBcCisgICAgICBleGNsdXNpdmVfbG9ja3Nf
cmVxdWlyZWQoX19WQV9BUkdTX18pKQogCi0jZGVmaW5lIFNIQVJFRF9MT0NLU19SRVFVSVJFRCgu
Li4pIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18oc2hhcmVkX2xvY2tzX3JlcXVp
cmVkKF9fVkFfQVJHU19fKSkKKyNkZWZpbmUgQUJTTF9TSEFSRURfTE9DS1NfUkVRVUlSRUQoLi4u
KSBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKHNoYXJlZF9s
b2Nrc19yZXF1aXJlZChfX1ZBX0FSR1NfXykpCiAKLS8vIExPQ0tTX0VYQ0xVREVEKCkKKy8vIEFC
U0xfTE9DS1NfRVhDTFVERUQoKQogLy8KIC8vIERvY3VtZW50cyB0aGUgbG9ja3MgYWNxdWlyZWQg
aW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiBUaGVzZSBsb2NrcwogLy8gY2Fubm90IGJlIGhl
bGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gKGFzIEFic2VpbCdzIGBNdXRleGAgbG9ja3Mg
YXJlCiAvLyBub24tcmVlbnRyYW50KS4KLSNkZWZpbmUgTE9DS1NfRVhDTFVERUQoLi4uKSBcCi0g
IFRIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURV9fKGxvY2tzX2V4Y2x1ZGVkKF9fVkFfQVJHU19f
KSkKKyNkZWZpbmUgQUJTTF9MT0NLU19FWENMVURFRCguLi4pIFwKKyAgQUJTTF9JTlRFUk5BTF9U
SFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUobG9ja3NfZXhjbHVkZWQoX19WQV9BUkdTX18pKQog
Ci0vLyBMT0NLX1JFVFVSTkVEKCkKKy8vIEFCU0xfTE9DS19SRVRVUk5FRCgpCiAvLwogLy8gRG9j
dW1lbnRzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgbXV0ZXggd2l0aG91dCBhY3F1aXJpbmcg
aXQuICBGb3IgZXhhbXBsZSwKIC8vIGEgcHVibGljIGdldHRlciBtZXRob2QgdGhhdCByZXR1cm5z
IGEgcG9pbnRlciB0byBhIHByaXZhdGUgbXV0ZXggc2hvdWxkCi0vLyBiZSBhbm5vdGF0ZWQgd2l0
aCBMT0NLX1JFVFVSTkVELgotI2RlZmluZSBMT0NLX1JFVFVSTkVEKHgpIFwKLSAgVEhSRUFEX0FO
Tk9UQVRJT05fQVRUUklCVVRFX18obG9ja19yZXR1cm5lZCh4KSkKKy8vIGJlIGFubm90YXRlZCB3
aXRoIEFCU0xfTE9DS19SRVRVUk5FRC4KKyNkZWZpbmUgQUJTTF9MT0NLX1JFVFVSTkVEKHgpIFwK
KyAgQUJTTF9JTlRFUk5BTF9USFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEUobG9ja19yZXR1cm5l
ZCh4KSkKIAotLy8gTE9DS0FCTEUKKy8vIEFCU0xfTE9DS0FCTEUKIC8vCiAvLyBEb2N1bWVudHMg
aWYgYSBjbGFzcy90eXBlIGlzIGEgbG9ja2FibGUgdHlwZSAoc3VjaCBhcyB0aGUgYE11dGV4YCBj
bGFzcykuCi0jZGVmaW5lIExPQ0tBQkxFIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRF
X18obG9ja2FibGUpCisjZGVmaW5lIEFCU0xfTE9DS0FCTEUgQUJTTF9JTlRFUk5BTF9USFJFQURf
QU5OT1RBVElPTl9BVFRSSUJVVEUobG9ja2FibGUpCiAKLS8vIFNDT1BFRF9MT0NLQUJMRQorLy8g
QUJTTF9TQ09QRURfTE9DS0FCTEUKIC8vCiAvLyBEb2N1bWVudHMgaWYgYSBjbGFzcyBkb2VzIFJB
SUkgbG9ja2luZyAoc3VjaCBhcyB0aGUgYE11dGV4TG9ja2AgY2xhc3MpLgogLy8gVGhlIGNvbnN0
cnVjdG9yIHNob3VsZCB1c2UgYExPQ0tfRlVOQ1RJT04oKWAgdG8gc3BlY2lmeSB0aGUgbXV0ZXgg
dGhhdCBpcwotLy8gYWNxdWlyZWQsIGFuZCB0aGUgZGVzdHJ1Y3RvciBzaG91bGQgdXNlIGBVTkxP
Q0tfRlVOQ1RJT04oKWAgd2l0aCBubworLy8gYWNxdWlyZWQsIGFuZCB0aGUgZGVzdHJ1Y3RvciBz
aG91bGQgdXNlIGBBQlNMX1VOTE9DS19GVU5DVElPTigpYCB3aXRoIG5vCiAvLyBhcmd1bWVudHM7
IHRoZSBhbmFseXNpcyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkZXN0cnVjdG9yIHVubG9ja3Mgd2hh
dGV2ZXIgdGhlCiAvLyBjb25zdHJ1Y3RvciBsb2NrZWQuCi0jZGVmaW5lIFNDT1BFRF9MT0NLQUJM
RSBcCi0gIFRIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURV9fKHNjb3BlZF9sb2NrYWJsZSkKKyNk
ZWZpbmUgQUJTTF9TQ09QRURfTE9DS0FCTEUgXAorICBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5P
VEFUSU9OX0FUVFJJQlVURShzY29wZWRfbG9ja2FibGUpCiAKLS8vIEVYQ0xVU0lWRV9MT0NLX0ZV
TkNUSU9OKCkKKy8vIEFCU0xfRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKQogLy8KIC8vIERvY3Vt
ZW50cyBmdW5jdGlvbnMgdGhhdCBhY3F1aXJlIGEgbG9jayBpbiB0aGUgYm9keSBvZiBhIGZ1bmN0
aW9uLCBhbmQgZG8KIC8vIG5vdCByZWxlYXNlIGl0LgotI2RlZmluZSBFWENMVVNJVkVfTE9DS19G
VU5DVElPTiguLi4pIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFX18oZXhjbHVzaXZl
X2xvY2tfZnVuY3Rpb24oX19WQV9BUkdTX18pKQorI2RlZmluZSBBQlNMX0VYQ0xVU0lWRV9MT0NL
X0ZVTkNUSU9OKC4uLikgICAgXAorICBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9OX0FU
VFJJQlVURSggXAorICAgICAgZXhjbHVzaXZlX2xvY2tfZnVuY3Rpb24oX19WQV9BUkdTX18pKQog
Ci0vLyBTSEFSRURfTE9DS19GVU5DVElPTigpCisvLyBBQlNMX1NIQVJFRF9MT0NLX0ZVTkNUSU9O
KCkKIC8vCiAvLyBEb2N1bWVudHMgZnVuY3Rpb25zIHRoYXQgYWNxdWlyZSBhIHNoYXJlZCAocmVh
ZGVyKSBsb2NrIGluIHRoZSBib2R5IG9mIGEKIC8vIGZ1bmN0aW9uLCBhbmQgZG8gbm90IHJlbGVh
c2UgaXQuCi0jZGVmaW5lIFNIQVJFRF9MT0NLX0ZVTkNUSU9OKC4uLikgXAotICBUSFJFQURfQU5O
T1RBVElPTl9BVFRSSUJVVEVfXyhzaGFyZWRfbG9ja19mdW5jdGlvbihfX1ZBX0FSR1NfXykpCisj
ZGVmaW5lIEFCU0xfU0hBUkVEX0xPQ0tfRlVOQ1RJT04oLi4uKSBcCisgIEFCU0xfSU5URVJOQUxf
VEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRFKHNoYXJlZF9sb2NrX2Z1bmN0aW9uKF9fVkFfQVJH
U19fKSkKIAotLy8gVU5MT0NLX0ZVTkNUSU9OKCkKKy8vIEFCU0xfVU5MT0NLX0ZVTkNUSU9OKCkK
IC8vCiAvLyBEb2N1bWVudHMgZnVuY3Rpb25zIHRoYXQgZXhwZWN0IGEgbG9jayB0byBiZSBoZWxk
IG9uIGVudHJ5IHRvIHRoZSBmdW5jdGlvbiwKIC8vIGFuZCByZWxlYXNlIGl0IGluIHRoZSBib2R5
IG9mIHRoZSBmdW5jdGlvbi4KLSNkZWZpbmUgVU5MT0NLX0ZVTkNUSU9OKC4uLikgXAotICBUSFJF
QURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyh1bmxvY2tfZnVuY3Rpb24oX19WQV9BUkdTX18pKQor
I2RlZmluZSBBQlNMX1VOTE9DS19GVU5DVElPTiguLi4pIFwKKyAgQUJTTF9JTlRFUk5BTF9USFJF
QURfQU5OT1RBVElPTl9BVFRSSUJVVEUodW5sb2NrX2Z1bmN0aW9uKF9fVkFfQVJHU19fKSkKIAot
Ly8gRVhDTFVTSVZFX1RSWUxPQ0tfRlVOQ1RJT04oKSAvIFNIQVJFRF9UUllMT0NLX0ZVTkNUSU9O
KCkKKy8vIEFCU0xfRVhDTFVTSVZFX1RSWUxPQ0tfRlVOQ1RJT04oKSAvIEFCU0xfU0hBUkVEX1RS
WUxPQ0tfRlVOQ1RJT04oKQogLy8KIC8vIERvY3VtZW50cyBmdW5jdGlvbnMgdGhhdCB0cnkgdG8g
YWNxdWlyZSBhIGxvY2ssIGFuZCByZXR1cm4gc3VjY2VzcyBvciBmYWlsdXJlCiAvLyAob3IgYSBu
b24tYm9vbGVhbiB2YWx1ZSB0aGF0IGNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIGJvb2xlYW4pLgpA
QCAtMTgyLDc2ICsxOTUsODAgQEAKIC8vIHN1Y2Nlc3MsIG9yIGBmYWxzZWAgZm9yIGZ1bmN0aW9u
cyB0aGF0IHJldHVybiBgZmFsc2VgIG9uIHN1Y2Nlc3MuIFRoZSBzZWNvbmQKIC8vIGFyZ3VtZW50
IHNwZWNpZmllcyB0aGUgbXV0ZXggdGhhdCBpcyBsb2NrZWQgb24gc3VjY2Vzcy4gSWYgdW5zcGVj
aWZpZWQsIHRoaXMKIC8vIG11dGV4IGlzIGFzc3VtZWQgdG8gYmUgYHRoaXNgLgotI2RlZmluZSBF
WENMVVNJVkVfVFJZTE9DS19GVU5DVElPTiguLi4pIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRU
UklCVVRFX18oZXhjbHVzaXZlX3RyeWxvY2tfZnVuY3Rpb24oX19WQV9BUkdTX18pKQorI2RlZmlu
ZSBBQlNMX0VYQ0xVU0lWRV9UUllMT0NLX0ZVTkNUSU9OKC4uLikgXAorICBBQlNMX0lOVEVSTkFM
X1RIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURSggXAorICAgICAgZXhjbHVzaXZlX3RyeWxvY2tf
ZnVuY3Rpb24oX19WQV9BUkdTX18pKQogCi0jZGVmaW5lIFNIQVJFRF9UUllMT0NLX0ZVTkNUSU9O
KC4uLikgXAotICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyhzaGFyZWRfdHJ5bG9ja19m
dW5jdGlvbihfX1ZBX0FSR1NfXykpCisjZGVmaW5lIEFCU0xfU0hBUkVEX1RSWUxPQ0tfRlVOQ1RJ
T04oLi4uKSAgICBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRF
KCBcCisgICAgICBzaGFyZWRfdHJ5bG9ja19mdW5jdGlvbihfX1ZBX0FSR1NfXykpCiAKLS8vIEFT
U0VSVF9FWENMVVNJVkVfTE9DSygpIC8gQVNTRVJUX1NIQVJFRF9MT0NLKCkKKy8vIEFCU0xfQVNT
RVJUX0VYQ0xVU0lWRV9MT0NLKCkgLyBBQlNMX0FTU0VSVF9TSEFSRURfTE9DSygpCiAvLwogLy8g
RG9jdW1lbnRzIGZ1bmN0aW9ucyB0aGF0IGR5bmFtaWNhbGx5IGNoZWNrIHRvIHNlZSBpZiBhIGxv
Y2sgaXMgaGVsZCwgYW5kIGZhaWwKIC8vIGlmIGl0IGlzIG5vdCBoZWxkLgotI2RlZmluZSBBU1NF
UlRfRVhDTFVTSVZFX0xPQ0soLi4uKSBcCi0gIFRIUkVBRF9BTk5PVEFUSU9OX0FUVFJJQlVURV9f
KGFzc2VydF9leGNsdXNpdmVfbG9jayhfX1ZBX0FSR1NfXykpCisjZGVmaW5lIEFCU0xfQVNTRVJU
X0VYQ0xVU0lWRV9MT0NLKC4uLikgXAorICBBQlNMX0lOVEVSTkFMX1RIUkVBRF9BTk5PVEFUSU9O
X0FUVFJJQlVURShhc3NlcnRfZXhjbHVzaXZlX2xvY2soX19WQV9BUkdTX18pKQogCi0jZGVmaW5l
IEFTU0VSVF9TSEFSRURfTE9DSyguLi4pIFwKLSAgVEhSRUFEX0FOTk9UQVRJT05fQVRUUklCVVRF
X18oYXNzZXJ0X3NoYXJlZF9sb2NrKF9fVkFfQVJHU19fKSkKKyNkZWZpbmUgQUJTTF9BU1NFUlRf
U0hBUkVEX0xPQ0soLi4uKSBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9UQVRJT05fQVRU
UklCVVRFKGFzc2VydF9zaGFyZWRfbG9jayhfX1ZBX0FSR1NfXykpCiAKLS8vIE5PX1RIUkVBRF9T
QUZFVFlfQU5BTFlTSVMKKy8vIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogLy8KIC8v
IFR1cm5zIG9mZiB0aHJlYWQgc2FmZXR5IGNoZWNraW5nIHdpdGhpbiB0aGUgYm9keSBvZiBhIHBh
cnRpY3VsYXIgZnVuY3Rpb24uCiAvLyBUaGlzIGFubm90YXRpb24gaXMgdXNlZCB0byBtYXJrIGZ1
bmN0aW9ucyB0aGF0IGFyZSBrbm93biB0byBiZSBjb3JyZWN0LCBidXQKIC8vIHRoZSBsb2NraW5n
IGJlaGF2aW9yIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB0aGUgYW5hbHl6ZXIgY2FuIGhhbmRs
ZS4KLSNkZWZpbmUgTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyBcCi0gIFRIUkVBRF9BTk5PVEFU
SU9OX0FUVFJJQlVURV9fKG5vX3RocmVhZF9zYWZldHlfYW5hbHlzaXMpCisjZGVmaW5lIEFCU0xf
Tk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyBcCisgIEFCU0xfSU5URVJOQUxfVEhSRUFEX0FOTk9U
QVRJT05fQVRUUklCVVRFKG5vX3RocmVhZF9zYWZldHlfYW5hbHlzaXMpCiAKIC8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLyBUb29sLVN1cHBsaWVkIEFubm90YXRpb25zCiAvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi0vLyBUU19VTkNIRUNLRUQgc2hvdWxkIGJlIHBsYWNlZCBhcm91bmQgbG9j
ayBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QgdmFsaWQKKy8vIEFCU0xfVFNfVU5DSEVDS0VEIHNo
b3VsZCBiZSBwbGFjZWQgYXJvdW5kIGxvY2sgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90IHZhbGlk
CiAvLyBDKysgc3ludGF4LCBidXQgd2hpY2ggYXJlIHByZXNlbnQgZm9yIGRvY3VtZW50YXRpb24g
cHVycG9zZXMuICBUaGVzZQogLy8gYW5ub3RhdGlvbnMgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSBh
bmFseXNpcy4KLSNkZWZpbmUgVFNfVU5DSEVDS0VEKHgpICIiCisjZGVmaW5lIEFCU0xfVFNfVU5D
SEVDS0VEKHgpICIiCiAKLS8vIFRTX0ZJWE1FIGlzIHVzZWQgdG8gbWFyayBsb2NrIGV4cHJlc3Np
b25zIHRoYXQgYXJlIG5vdCB2YWxpZCBDKysgc3ludGF4LgorLy8gQUJTTF9UU19GSVhNRSBpcyB1
c2VkIHRvIG1hcmsgbG9jayBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QgdmFsaWQgQysrIHN5bnRh
eC4KIC8vIEl0IGlzIHVzZWQgYnkgYXV0b21hdGVkIHRvb2xzIHRvIG1hcmsgYW5kIGRpc2FibGUg
aW52YWxpZCBleHByZXNzaW9ucy4KLS8vIFRoZSBhbm5vdGF0aW9uIHNob3VsZCBlaXRoZXIgYmUg
Zml4ZWQsIG9yIGNoYW5nZWQgdG8gVFNfVU5DSEVDS0VELgotI2RlZmluZSBUU19GSVhNRSh4KSAi
IgorLy8gVGhlIGFubm90YXRpb24gc2hvdWxkIGVpdGhlciBiZSBmaXhlZCwgb3IgY2hhbmdlZCB0
byBBQlNMX1RTX1VOQ0hFQ0tFRC4KKyNkZWZpbmUgQUJTTF9UU19GSVhNRSh4KSAiIgogCi0vLyBM
aWtlIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMsIHRoaXMgdHVybnMgb2ZmIGNoZWNraW5nIHdp
dGhpbiB0aGUgYm9keSBvZgotLy8gYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiAgSG93ZXZlciwgdGhp
cyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBtYXJrIGZ1bmN0aW9ucworLy8gTGlrZSBBQlNMX05PX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMsIHRoaXMgdHVybnMgb2ZmIGNoZWNraW5nIHdpdGhpbiB0aGUg
Ym9keQorLy8gb2YgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiAgSG93ZXZlciwgdGhpcyBhdHRyaWJ1
dGUgaXMgdXNlZCB0byBtYXJrIGZ1bmN0aW9ucwogLy8gdGhhdCBhcmUgaW5jb3JyZWN0IGFuZCBu
ZWVkIHRvIGJlIGZpeGVkLiAgSXQgaXMgdXNlZCBieSBhdXRvbWF0ZWQgdG9vbHMgdG8KIC8vIGF2
b2lkIGJyZWFraW5nIHRoZSBidWlsZCB3aGVuIHRoZSBhbmFseXNpcyBpcyB1cGRhdGVkLgogLy8g
Q29kZSBvd25lcnMgYXJlIGV4cGVjdGVkIHRvIGV2ZW50dWFsbHkgZml4IHRoZSByb3V0aW5lLgot
I2RlZmluZSBOT19USFJFQURfU0FGRVRZX0FOQUxZU0lTX0ZJWE1FICBOT19USFJFQURfU0FGRVRZ
X0FOQUxZU0lTCisjZGVmaW5lIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJU19GSVhNRSBB
QlNMX05PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKIAotLy8gU2ltaWxhciB0byBOT19USFJFQURf
U0FGRVRZX0FOQUxZU0lTX0ZJWE1FLCB0aGlzIG1hY3JvIG1hcmtzIGEgR1VBUkRFRF9CWQotLy8g
YW5ub3RhdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGZpeGVkLCBiZWNhdXNlIGl0IGlzIHByb2R1Y2lu
ZyB0aHJlYWQgc2FmZXR5Ci0vLyB3YXJuaW5nLiAgSXQgZGlzYWJsZXMgdGhlIEdVQVJERURfQlku
Ci0jZGVmaW5lIEdVQVJERURfQllfRklYTUUoeCkKKy8vIFNpbWlsYXIgdG8gQUJTTF9OT19USFJF
QURfU0FGRVRZX0FOQUxZU0lTX0ZJWE1FLCB0aGlzIG1hY3JvIG1hcmtzIGEKKy8vIEFCU0xfR1VB
UkRFRF9CWSBhbm5vdGF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgZml4ZWQsIGJlY2F1c2UgaXQgaXMg
cHJvZHVjaW5nCisvLyB0aHJlYWQgc2FmZXR5IHdhcm5pbmcuIEl0IGRpc2FibGVzIHRoZSBBQlNM
X0dVQVJERURfQlkuCisjZGVmaW5lIEFCU0xfR1VBUkRFRF9CWV9GSVhNRSh4KQogCiAvLyBEaXNh
YmxlcyB3YXJuaW5ncyBmb3IgYSBzaW5nbGUgcmVhZCBvcGVyYXRpb24uICBUaGlzIGNhbiBiZSB1
c2VkIHRvIGF2b2lkCiAvLyB3YXJuaW5ncyB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIHJlYWQg
aXMgbm90IGFjdHVhbGx5IGludm9sdmVkIGluIGEgcmFjZSwKIC8vIGJ1dCB0aGUgY29tcGlsZXIg
Y2Fubm90IGNvbmZpcm0gdGhhdC4KLSNkZWZpbmUgVFNfVU5DSEVDS0VEX1JFQUQoeCkgdGhyZWFk
X3NhZmV0eV9hbmFseXNpczo6dHNfdW5jaGVja2VkX3JlYWQoeCkKLQorI2RlZmluZSBBQlNMX1RT
X1VOQ0hFQ0tFRF9SRUFEKHgpIGFic2w6OmJhc2VfaW50ZXJuYWw6OmFic2xfdHNfdW5jaGVja2Vk
X3JlYWQoeCkKIAotbmFtZXNwYWNlIHRocmVhZF9zYWZldHlfYW5hbHlzaXMgeworbmFtZXNwYWNl
IGFic2wgeworbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgewogCiAvLyBUYWtlcyBhIHJlZmVyZW5j
ZSB0byBhIGd1YXJkZWQgZGF0YSBtZW1iZXIsIGFuZCByZXR1cm5zIGFuIHVuZ3VhcmRlZAogLy8g
cmVmZXJlbmNlLgorLy8gRG8gbm90IHVzZWQgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSwgdXNlIEFC
U0xfVFNfVU5DSEVDS0VEX1JFQUQgaW5zdGVhZC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5s
aW5lIGNvbnN0IFQmIHRzX3VuY2hlY2tlZF9yZWFkKGNvbnN0IFQmIHYpIE5PX1RIUkVBRF9TQUZF
VFlfQU5BTFlTSVMgeworaW5saW5lIGNvbnN0IFQmIGFic2xfdHNfdW5jaGVja2VkX3JlYWQoY29u
c3QgVCYgdikgQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKICAgcmV0dXJuIHY7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQmIHRzX3VuY2hlY2tlZF9yZWFkKFQm
IHYpIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeworaW5saW5lIFQmIGFic2xfdHNfdW5jaGVj
a2VkX3JlYWQoVCYgdikgQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKICAgcmV0dXJu
IHY7CiB9CiAKLX0gIC8vIG5hbWVzcGFjZSB0aHJlYWRfc2FmZXR5X2FuYWx5c2lzCit9ICAvLyBu
YW1lc3BhY2UgYmFzZV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKIAogI2VuZGlmICAv
LyBBQlNMX0JBU0VfVEhSRUFEX0FOTk9UQVRJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L3Rocm93X2RlbGVnYXRlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3Rocm93X2RlbGVnYXRlX3Rlc3Qu
Y2MKaW5kZXggMGYxNWRmMDQ5MmI0OTNmZmZlY2Y0YTg1ZGFmODI5MGUxMDE5MjM3NS4uYTc0ZGQz
Y2RhNjk1MWJiYTQxOTQyMDExM2YwZDk5MjE5YjgyOGY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS90aHJvd19kZWxlZ2F0ZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvdGhyb3dfZGVsZWdhdGVf
dGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29tcGlsZXJfY29uZmlnX3NldHRpbmcuYnpsIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29tcGlsZXJf
Y29uZmlnX3NldHRpbmcuYnpsCmluZGV4IGI3N2M0ZjU2M2I5NWQzMzJjMjg2MjY1N2RlODg0ZGI0
YmU3YWJiNGUuLjY2OTYyMjk0ZDA5MTNlMDE4MDUyYjUzMWIyMzIxMDRlYjE3M2I0MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbXBpbGVyX2NvbmZpZ19zZXR0aW5nLmJ6bAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb21w
aWxlcl9jb25maWdfc2V0dGluZy5iemwKQEAgLTUsMzUgKzUsMzQgQEAKICMgeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKICMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCiAjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICMgbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCi0jCiAKICIiIkNyZWF0ZXMgY29uZmlnX3NldHRpbmcgdGhhdCBhbGxvd3Mg
c2VsZWN0aW5nIGJhc2VkIG9uICdjb21waWxlcicgdmFsdWUuIiIiCiAKIGRlZiBjcmVhdGVfbGx2
bV9jb25maWcobmFtZSwgdmlzaWJpbGl0eSk6Ci0gICMgVGhlICJkb19ub3RfdXNlX3Rvb2xzX2Nw
cF9jb21waWxlcl9wcmVzZW50IiBhdHRyaWJ1dGUgZXhpc3RzIHRvCi0gICMgZGlzdGluZ3Vpc2gg
YmV0d2VlbiBvbGRlciB2ZXJzaW9ucyBvZiBCYXplbCB0aGF0IGRvIG5vdCBzdXBwb3J0Ci0gICMg
IkBiYXplbF90b29scy8vdG9vbHMvY3BwOmNvbXBpbGVyIiBmbGFnX3ZhbHVlLCBhbmQgbmV3ZXIg
b25lcyB0aGF0IGRvLgotICAjIEluIHRoZSBmdXR1cmUsIHRoZSBvbmx5IHdheSB0byBzZWxlY3Qg
b24gdGhlIGNvbXBpbGVyIHdpbGwgYmUgdGhyb3VnaAotICAjIGZsYWdfdmFsdWVzeyJAYmF6ZWxf
dG9vbHMvL3Rvb2xzL2NwcDpjb21waWxlciJ9IGFuZCB0aGUgZWxzZSBicmFuY2ggY2FuCi0gICMg
YmUgcmVtb3ZlZC4KLSAgaWYgaGFzYXR0cihjY19jb21tb24sICJkb19ub3RfdXNlX3Rvb2xzX2Nw
cF9jb21waWxlcl9wcmVzZW50Iik6Ci0gICAgbmF0aXZlLmNvbmZpZ19zZXR0aW5nKAotICAgICAg
bmFtZSA9IG5hbWUsCi0gICAgICBmbGFnX3ZhbHVlcyA9IHsKLSAgICAgICAgICAiQGJhemVsX3Rv
b2xzLy90b29scy9jcHA6Y29tcGlsZXIiOiAibGx2bSIsCi0gICAgICB9LAotICAgICAgdmlzaWJp
bGl0eSA9IHZpc2liaWxpdHksCi0gICAgKQotICBlbHNlOgotICAgIG5hdGl2ZS5jb25maWdfc2V0
dGluZygKLSAgICAgICAgbmFtZSA9IG5hbWUsCi0gICAgICAgIHZhbHVlcyA9IHsiY29tcGlsZXIi
OiAibGx2bSJ9LAotICAgICAgICB2aXNpYmlsaXR5ID0gdmlzaWJpbGl0eSwKLSAgICApCisgICAg
IyBUaGUgImRvX25vdF91c2VfdG9vbHNfY3BwX2NvbXBpbGVyX3ByZXNlbnQiIGF0dHJpYnV0ZSBl
eGlzdHMgdG8KKyAgICAjIGRpc3Rpbmd1aXNoIGJldHdlZW4gb2xkZXIgdmVyc2lvbnMgb2YgQmF6
ZWwgdGhhdCBkbyBub3Qgc3VwcG9ydAorICAgICMgIkBiYXplbF90b29scy8vdG9vbHMvY3BwOmNv
bXBpbGVyIiBmbGFnX3ZhbHVlLCBhbmQgbmV3ZXIgb25lcyB0aGF0IGRvLgorICAgICMgSW4gdGhl
IGZ1dHVyZSwgdGhlIG9ubHkgd2F5IHRvIHNlbGVjdCBvbiB0aGUgY29tcGlsZXIgd2lsbCBiZSB0
aHJvdWdoCisgICAgIyBmbGFnX3ZhbHVlc3siQGJhemVsX3Rvb2xzLy90b29scy9jcHA6Y29tcGls
ZXIifSBhbmQgdGhlIGVsc2UgYnJhbmNoIGNhbgorICAgICMgYmUgcmVtb3ZlZC4KKyAgICBpZiBo
YXNhdHRyKGNjX2NvbW1vbiwgImRvX25vdF91c2VfdG9vbHNfY3BwX2NvbXBpbGVyX3ByZXNlbnQi
KToKKyAgICAgICAgbmF0aXZlLmNvbmZpZ19zZXR0aW5nKAorICAgICAgICAgICAgbmFtZSA9IG5h
bWUsCisgICAgICAgICAgICBmbGFnX3ZhbHVlcyA9IHsKKyAgICAgICAgICAgICAgICAiQGJhemVs
X3Rvb2xzLy90b29scy9jcHA6Y29tcGlsZXIiOiAibGx2bSIsCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgdmlzaWJpbGl0eSA9IHZpc2liaWxpdHksCisgICAgICAgICkKKyAgICBlbHNlOgor
ICAgICAgICBuYXRpdmUuY29uZmlnX3NldHRpbmcoCisgICAgICAgICAgICBuYW1lID0gbmFtZSwK
KyAgICAgICAgICAgIHZhbHVlcyA9IHsiY29tcGlsZXIiOiAibGx2bSJ9LAorICAgICAgICAgICAg
dmlzaWJpbGl0eSA9IHZpc2liaWxpdHksCisgICAgICAgICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5iYXplbAppbmRleCBm
MjIxMGUzYzE5Nzk4M2ZhYjYwMzRkODE4MTU0Nzc5YjcxNzMyZjJmLi4xODU5ZDllOWM3NWNjOTYy
MzNjZDk0MzAzODhiNWNhMWJkOTVmNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQlVJ
TEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmJhemVsCkBAIC01LDcgKzUsNyBA
QAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
IwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTUsMTEgKzE1LDEyIEBACiAjCiAKIGxvYWQoCi0gICAg
Ii8vYWJzbDpjb3B0cy5iemwiLAorICAgICIvL2Fic2w6Y29wdHMvY29uZmlndXJlX2NvcHRzLmJ6
bCIsCiAgICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCi0gICAgIkFCU0xfVEVTVF9DT1BUUyIsCisg
ICAgIkFCU0xfREVGQVVMVF9MSU5LT1BUUyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHIiwK
ICAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMiLAorICAgICJBQlNMX1RFU1RfQ09Q
VFMiLAogKQogCiBwYWNrYWdlKGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1
YmxpYyJdKQpAQCAtMzAsNiArMzEsNyBAQCBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAiY29tcHJl
c3NlZF90dXBsZSIsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZS5oIl0s
CiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RF
RkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8vYWJzbC91dGlsaXR5IiwK
ICAgICBdLApAQCAtMzksOCArNDEsMTQgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNvbXByZXNz
ZWRfdHVwbGVfdGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZV90
ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBB
QlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpjb21wcmVzc2Vk
X3R1cGxlIiwKKyAgICAgICAgIjp0ZXN0X2luc3RhbmNlX3RyYWNrZXIiLAorICAgICAgICAiLy9h
YnNsL21lbW9yeSIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6YW55IiwKKyAgICAgICAgIi8vYWJz
bC90eXBlczpvcHRpb25hbCIsCisgICAgICAgICIvL2Fic2wvdXRpbGl0eSIsCiAgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAgICAgXSwKICkKQEAgLTQ5LDYg
KzU3LDcgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gImZpeGVkX2FycmF5IiwKICAgICBoZHJz
ID0gWyJmaXhlZF9hcnJheS5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjpjb21wcmVzc2VkX3R1cGxlIiwKICAgICAgICAgIi8vYWJzbC9hbGdvcml0aG0iLApAQCAt
NjMsNyArNzIsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiZml4ZWRfYXJyYXlfdGVzdCIsCiAg
ICAgc3JjcyA9IFsiZml4ZWRfYXJyYXlfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCi0gICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQ
VElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFH
X0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAg
ICI6Zml4ZWRfYXJyYXkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3Rlc3Rpbmci
LApAQCAtNzcsNiArODYsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiZml4ZWRfYXJyYXlfdGVz
dF9ub2V4Y2VwdGlvbnMiLAogICAgIHNyY3MgPSBbImZpeGVkX2FycmF5X3Rlc3QuY2MiXSwKICAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmZpeGVkX2FycmF5IiwKICAgICAgICAg
Ii8vYWJzbC9iYXNlOmV4Y2VwdGlvbl90ZXN0aW5nIiwKQEAgLTkwLDcgKzEwMCw3IEBAIGNjX3Rl
c3QoCiAgICAgbmFtZSA9ICJmaXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QiLAogICAg
IHNyY3MgPSBbImZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyJdLAogICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCi0gICAgbGlua29w
dHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
RVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRl
cHMgPSBbCiAgICAgICAgICI6Zml4ZWRfYXJyYXkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhj
ZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKQEAgLTEwMiw2ICsxMTIsNyBAQCBjY190ZXN0KAogICAg
IG5hbWUgPSAiZml4ZWRfYXJyYXlfYmVuY2htYXJrIiwKICAgICBzcmNzID0gWyJmaXhlZF9hcnJh
eV9iZW5jaG1hcmsuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIFsiJChTVEFD
S19GUkFNRV9VTkxJTUlURUQpIl0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCiAgICAgdGFncyA9IFsiYmVuY2htYXJrIl0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpm
aXhlZF9hcnJheSIsCkBAIC0xMDksMTEgKzEyMCwyNyBAQCBjY190ZXN0KAogICAgIF0sCiApCiAK
K2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbCIsCisgICAg
aGRycyA9IFsiaW50ZXJuYWwvaW5saW5lZF92ZWN0b3IuaCJdLAorICAgIGNvcHRzID0gQUJTTF9E
RUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAg
IGRlcHMgPSBbCisgICAgICAgICI6Y29tcHJlc3NlZF90dXBsZSIsCisgICAgICAgICIvL2Fic2wv
YmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL21lbW9yeSIsCisgICAgICAgICIv
L2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6c3BhbiIsCisg
ICAgXSwKKykKKwogY2NfbGlicmFyeSgKICAgICBuYW1lID0gImlubGluZWRfdmVjdG9yIiwKICAg
ICBoZHJzID0gWyJpbmxpbmVkX3ZlY3Rvci5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9
IFsKKyAgICAgICAgIjppbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbCIsCiAgICAgICAgICIvL2Fic2wv
YWxnb3JpdGhtIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgICAg
ICIvL2Fic2wvYmFzZTp0aHJvd19kZWxlZ2F0ZSIsCkBAIC0xMjEsMTIgKzE0OCwyMiBAQCBjY19s
aWJyYXJ5KAogICAgIF0sCiApCiAKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJjb3VudGluZ19h
bGxvY2F0b3IiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9jb3Vu
dGluZ19hbGxvY2F0b3IuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAg
IGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbIi8v
dmlzaWJpbGl0eTpwcml2YXRlIl0sCispCisKIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJpbmxpbmVk
X3ZlY3Rvcl90ZXN0IiwKICAgICBzcmNzID0gWyJpbmxpbmVkX3ZlY3Rvcl90ZXN0LmNjIl0sCiAg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBs
aW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb3VudGluZ19hbGxvY2F0b3IiLAogICAgICAgICAiOmlu
bGluZWRfdmVjdG9yIiwKICAgICAgICAgIjp0ZXN0X2luc3RhbmNlX3RyYWNrZXIiLAogICAgICAg
ICAiLy9hYnNsL2Jhc2UiLApAQCAtMTQzLDcgKzE4MCw5IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9
ICJpbmxpbmVkX3ZlY3Rvcl90ZXN0X25vZXhjZXB0aW9ucyIsCiAgICAgc3JjcyA9IFsiaW5saW5l
ZF92ZWN0b3JfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxp
bmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCisgICAgICAgICI6
Y291bnRpbmdfYWxsb2NhdG9yIiwKICAgICAgICAgIjppbmxpbmVkX3ZlY3RvciIsCiAgICAgICAg
ICI6dGVzdF9pbnN0YW5jZV90cmFja2VyIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAgLTE2
MCwzMCArMTk5LDQ2IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJpbmxpbmVkX3ZlY3Rvcl9iZW5j
aG1hcmsiLAogICAgIHNyY3MgPSBbImlubGluZWRfdmVjdG9yX2JlbmNobWFyay5jYyJdLAogICAg
IGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIHRhZ3MgPSBbImJlbmNobWFyayJdLAogICAgIGRlcHMgPSBbCiAgICAgICAg
ICI6aW5saW5lZF92ZWN0b3IiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9h
YnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKICAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKICAgICAg
ICAgIkBjb21fZ2l0aHViX2dvb2dsZV9iZW5jaG1hcmsvLzpiZW5jaG1hcmtfbWFpbiIsCiAgICAg
XSwKICkKIAorY2NfdGVzdCgKKyAgICBuYW1lID0gImlubGluZWRfdmVjdG9yX2V4Y2VwdGlvbl9z
YWZldHlfdGVzdCIsCisgICAgc3JjcyA9IFsiaW5saW5lZF92ZWN0b3JfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElP
TlNfRkxBRywKKyAgICBkZXBzID0gWworICAgICAgICAiOmlubGluZWRfdmVjdG9yIiwKKyAgICAg
ICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZyIsCisgICAgICAgICJAY29t
X2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKwogY2NfbGlicmFy
eSgKICAgICBuYW1lID0gInRlc3RfaW5zdGFuY2VfdHJhY2tlciIsCiAgICAgdGVzdG9ubHkgPSAx
LAogICAgIHNyY3MgPSBbImludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5jYyJdLAogICAg
IGhkcnMgPSBbImludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5oIl0sCiAgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCiAgICAgdmlzaWJpbGl0eSA9IFsKICAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18i
LAogICAgIF0sCisgICAgZGVwcyA9IFsiLy9hYnNsL3R5cGVzOmNvbXBhcmUiXSwKICkKIAogY2Nf
dGVzdCgKICAgICBuYW1lID0gInRlc3RfaW5zdGFuY2VfdHJhY2tlcl90ZXN0IiwKICAgICBzcmNz
ID0gWyJpbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXJfdGVzdC5jYyJdLAogICAgIGNvcHRz
ID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6dGVzdF9pbnN0YW5jZV90cmFja2VyIiwKICAgICAg
ICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKQEAgLTIwOCwxMCArMjYz
LDEyIEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJmbGF0X2hhc2hfbWFwIiwKICAgICBoZHJz
ID0gWyJmbGF0X2hhc2hfbWFwLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAg
ICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAogICAgICAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVs
dHMiLAogICAgICAgICAiOnJhd19oYXNoX21hcCIsCisgICAgICAgICIvL2Fic2wvYWxnb3JpdGht
OmNvbnRhaW5lciIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICBdLAogKQpAQCAtMjE5
LDEzICsyNzYsMTUgQEAgY2NfbGlicmFyeSgKIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJmbGF0X2hh
c2hfbWFwX3Rlc3QiLAogICAgIHNyY3MgPSBbImZsYXRfaGFzaF9tYXBfdGVzdC5jYyJdLAotICAg
IGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgWyItRFVOT1JERVJFRF9NQVBfQ1hYMTciXSwKKyAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKICAgICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6ZmxhdF9oYXNoX21hcCIsCiAgICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVz
dGluZyIsCiAgICAgICAgICI6dW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0IiwKICAgICAg
ICAgIjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfbWFw
X21lbWJlcnNfdGVzdCIsCiAgICAgICAgICI6dW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdCIs
CiAgICAgICAgICIvL2Fic2wvdHlwZXM6YW55IiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2ds
ZXRlc3QvLzpndGVzdF9tYWluIiwKQEAgLTIzNiwxMCArMjk1LDEyIEBAIGNjX2xpYnJhcnkoCiAg
ICAgbmFtZSA9ICJmbGF0X2hhc2hfc2V0IiwKICAgICBoZHJzID0gWyJmbGF0X2hhc2hfc2V0Lmgi
XSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
REVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmNvbnRhaW5lcl9tZW1v
cnkiLAogICAgICAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAogICAgICAgICAiOnJhd19o
YXNoX3NldCIsCisgICAgICAgICIvL2Fic2wvYWxnb3JpdGhtOmNvbnRhaW5lciIsCiAgICAgICAg
ICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICAgICAiLy9hYnNsL21lbW9yeSIsCiAg
ICAgXSwKQEAgLTI0OSwxMiArMzEwLDE0IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJmbGF0X2hh
c2hfc2V0X3Rlc3QiLAogICAgIHNyY3MgPSBbImZsYXRfaGFzaF9zZXRfdGVzdC5jYyJdLAogICAg
IGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgWyItRFVOT1JERVJFRF9TRVRfQ1hYMTciXSwKKyAg
ICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0gTk9URVNUX1RB
R1NfTk9OTU9CSUxFLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6ZmxhdF9oYXNoX3NldCIsCiAg
ICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCiAgICAgICAgICI6dW5vcmRlcmVkX3Nl
dF9jb25zdHJ1Y3Rvcl90ZXN0IiwKICAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0
IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdCIsCiAgICAgICAgICI6dW5v
cmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdCIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAg
ICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKQEAgLTI2NiwxMSArMzI5LDEzIEBAIGNjX2xpYnJhcnko
CiAgICAgbmFtZSA9ICJub2RlX2hhc2hfbWFwIiwKICAgICBoZHJzID0gWyJub2RlX2hhc2hfbWFw
LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmNvbnRhaW5lcl9t
ZW1vcnkiLAogICAgICAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAogICAgICAgICAiOm5v
ZGVfaGFzaF9wb2xpY3kiLAogICAgICAgICAiOnJhd19oYXNoX21hcCIsCisgICAgICAgICIvL2Fi
c2wvYWxnb3JpdGhtOmNvbnRhaW5lciIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICBd
LAogKQpAQCAtMjc4LDcgKzM0Myw4IEBAIGNjX2xpYnJhcnkoCiBjY190ZXN0KAogICAgIG5hbWUg
PSAibm9kZV9oYXNoX21hcF90ZXN0IiwKICAgICBzcmNzID0gWyJub2RlX2hhc2hfbWFwX3Rlc3Qu
Y2MiXSwKLSAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIFsiLURVTk9SREVSRURfTUFQX0NY
WDE3Il0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwKICAg
ICBkZXBzID0gWwogICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLApAQCAtMjg2LDYg
KzM1Miw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICI6dHJhY2tlZCIsCiAgICAgICAgICI6dW5vcmRl
cmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0IiwKICAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2xvb2t1
cF90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdCIsCiAgICAgICAg
ICI6dW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdCIsCiAgICAgICAgICJAY29tX2dvb2dsZV9n
b29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAgICAgXSwKQEAgLTI5NSwxMSArMzYyLDEyIEBAIGNj
X2xpYnJhcnkoCiAgICAgbmFtZSA9ICJub2RlX2hhc2hfc2V0IiwKICAgICBoZHJzID0gWyJub2Rl
X2hhc2hfc2V0LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwotICAgICAgICAiOmNv
bnRhaW5lcl9tZW1vcnkiLAogICAgICAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAogICAg
ICAgICAiOm5vZGVfaGFzaF9wb2xpY3kiLAogICAgICAgICAiOnJhd19oYXNoX3NldCIsCisgICAg
ICAgICIvL2Fic2wvYWxnb3JpdGhtOmNvbnRhaW5lciIsCiAgICAgICAgICIvL2Fic2wvbWVtb3J5
IiwKICAgICBdLAogKQpAQCAtMzA4LDEyICszNzYsMTMgQEAgY2NfdGVzdCgKICAgICBuYW1lID0g
Im5vZGVfaGFzaF9zZXRfdGVzdCIsCiAgICAgc3JjcyA9IFsibm9kZV9oYXNoX3NldF90ZXN0LmNj
Il0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBbIi1EVU5PUkRFUkVEX1NFVF9DWFgx
NyJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3MgPSBO
T1RFU1RfVEFHU19OT05NT0JJTEUsCiAgICAgZGVwcyA9IFsKLSAgICAgICAgIjpoYXNoX2dlbmVy
YXRvcl90ZXN0aW5nIiwKICAgICAgICAgIjpub2RlX2hhc2hfc2V0IiwKICAgICAgICAgIjp1bm9y
ZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QiLAogICAgICAgICAiOnVub3JkZXJlZF9zZXRfbG9v
a3VwX3Rlc3QiLAorICAgICAgICAiOnVub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0IiwKICAgICAg
ICAgIjp1bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0IiwKICAgICAgICAgIkBjb21fZ29vZ2xl
X2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBdLApAQCAtMzIzLDYgKzM5Miw3IEBAIGNj
X2xpYnJhcnkoCiAgICAgbmFtZSA9ICJjb250YWluZXJfbWVtb3J5IiwKICAgICBoZHJzID0gWyJp
bnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiLy9hYnNsL21lbW9yeSIsCiAgICAgICAgICIvL2Fic2wvdXRpbGl0eSIsCkBA
IC0zMzMsNiArNDAzLDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNvbnRhaW5lcl9tZW1vcnlf
dGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNjIl0s
CiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCiAgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwKICAgICBkZXBz
ID0gWwogICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLApAQCAtMzQ1LDYgKzQxNiw3IEBAIGNj
X2xpYnJhcnkoCiAgICAgbmFtZSA9ICJoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzIiwKICAgICBoZHJz
ID0gWyJpbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiXSwKICAgICBjb3B0cyA9IEFC
U0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
ICAgICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKICAgICAgICAgIi8v
YWJzbC9oYXNoIiwKQEAgLTM1Niw2ICs0MjgsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiaGFz
aF9mdW5jdGlvbl9kZWZhdWx0c190ZXN0IiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC9oYXNoX2Z1
bmN0aW9uX2RlZmF1bHRzX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0gTk9URVNU
X1RBR1MsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzIiwK
QEAgLTM3MSw2ICs0NDQsNyBAQCBjY19saWJyYXJ5KAogICAgIHNyY3MgPSBbImludGVybmFsL2hh
c2hfZ2VuZXJhdG9yX3Rlc3RpbmcuY2MiXSwKICAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNoX2dl
bmVyYXRvcl90ZXN0aW5nLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBs
aW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAi
Omhhc2hfcG9saWN5X3Rlc3RpbmciLAogICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMi
LApAQCAtMzgzLDYgKzQ1Nyw3IEBAIGNjX2xpYnJhcnkoCiAgICAgdGVzdG9ubHkgPSAxLAogICAg
IGhkcnMgPSBbImludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCJdLAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvaGFzaCIsCiAgICAgICAgICIvL2Fic2wvc3Ry
aW5ncyIsCkBAIC0zOTMsNiArNDY4LDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImhhc2hfcG9s
aWN5X3Rlc3RpbmdfdGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVz
dGluZ190ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNo
X3BvbGljeV90ZXN0aW5nIiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVz
dF9tYWluIiwKQEAgLTQwMyw2ICs0NzksNyBAQCBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAiaGFz
aF9wb2xpY3lfdHJhaXRzIiwKICAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNoX3BvbGljeV90cmFp
dHMuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbIi8vYWJzbC9tZXRhOnR5cGVfdHJh
aXRzIl0sCiApCiAKQEAgLTQxMCw2ICs0ODcsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiaGFz
aF9wb2xpY3lfdHJhaXRzX3Rlc3QiLAogICAgIHNyY3MgPSBbImludGVybmFsL2hhc2hfcG9saWN5
X3RyYWl0c190ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlu
a29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpo
YXNoX3BvbGljeV90cmFpdHMiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0
ZXN0X21haW4iLApAQCAtNDIwLDYgKzQ5OCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJo
YXNodGFibGVfZGVidWciLAogICAgIGhkcnMgPSBbImludGVybmFsL2hhc2h0YWJsZV9kZWJ1Zy5o
Il0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNodGFibGVfZGVi
dWdfaG9va3MiLAogICAgIF0sCkBAIC00MjksMTggKzUwOCw1NiBAQCBjY19saWJyYXJ5KAogICAg
IG5hbWUgPSAiaGFzaHRhYmxlX2RlYnVnX2hvb2tzIiwKICAgICBoZHJzID0gWyJpbnRlcm5hbC9o
YXNodGFibGVfZGVidWdfaG9va3MuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorKQorCitjY19saWJyYXJ5
KAorICAgIG5hbWUgPSAiaGFzaHRhYmxlel9zYW1wbGVyIiwKKyAgICBzcmNzID0gWworICAgICAg
ICAiaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyLmNjIiwKKyAgICAgICAgImludGVybmFsL2hh
c2h0YWJsZXpfc2FtcGxlcl9mb3JjZV93ZWFrX2RlZmluaXRpb24uY2MiLAorICAgIF0sCisgICAg
aGRycyA9IFsiaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyLmgiXSwKKyAgICBjb3B0cyA9IEFC
U0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
KyAgICBkZXBzID0gWworICAgICAgICAiOmhhdmVfc3NlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNl
IiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wv
ZGVidWdnaW5nOnN0YWNrdHJhY2UiLAorICAgICAgICAiLy9hYnNsL21lbW9yeSIsCisgICAgICAg
ICIvL2Fic2wvc3luY2hyb25pemF0aW9uIiwKKyAgICAgICAgIi8vYWJzbC91dGlsaXR5IiwKKyAg
ICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiaGFzaHRhYmxlel9zYW1wbGVyX3Rlc3Qi
LAorICAgIHNyY3MgPSBbImludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlcl90ZXN0LmNjIl0sCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAg
ICAgIjpoYXNodGFibGV6X3NhbXBsZXIiLAorICAgICAgICAiOmhhdmVfc3NlIiwKKyAgICAgICAg
Ii8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0
aW9uIiwKKyAgICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb246dGhyZWFkX3Bvb2wiLAorICAg
ICAgICAiLy9hYnNsL3RpbWUiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0
ZXN0X21haW4iLAorICAgIF0sCiApCiAKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJub2RlX2hh
c2hfcG9saWN5IiwKICAgICBoZHJzID0gWyJpbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5LmgiXSwK
ICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKICkKIAogY2NfdGVzdCgKICAgICBuYW1lID0gIm5vZGVfaGFzaF9wb2xp
Y3lfdGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0LmNj
Il0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RF
RkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNoX3BvbGljeV90cmFp
dHMiLAogICAgICAgICAiOm5vZGVfaGFzaF9wb2xpY3kiLApAQCAtNDUyLDkgKzU2OSwzMCBAQCBj
Y19saWJyYXJ5KAogICAgIG5hbWUgPSAicmF3X2hhc2hfbWFwIiwKICAgICBoZHJzID0gWyJpbnRl
cm5hbC9yYXdfaGFzaF9tYXAuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAor
ICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAg
ICAgICI6Y29udGFpbmVyX21lbW9yeSIsCiAgICAgICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgICAg
ICAgIi8vYWJzbC9iYXNlOnRocm93X2RlbGVnYXRlIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5
KAorICAgIG5hbWUgPSAiaGF2ZV9zc2UiLAorICAgIGhkcnMgPSBbImludGVybmFsL2hhdmVfc3Nl
LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJp
dmF0ZSJdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiY29tbW9uIiwKKyAgICBoZHJz
ID0gWyJpbnRlcm5hbC9jb21tb24uaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6
b3B0aW9uYWwiLAogICAgIF0sCiApCiAKQEAgLTQ2MywxMSArNjAxLDE1IEBAIGNjX2xpYnJhcnko
CiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmNjIl0sCiAgICAgaGRycyA9IFsi
aW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwor
ICAgICAgICAiOmNvbW1vbiIsCiAgICAgICAgICI6Y29tcHJlc3NlZF90dXBsZSIsCiAgICAgICAg
ICI6Y29udGFpbmVyX21lbW9yeSIsCiAgICAgICAgICI6aGFzaF9wb2xpY3lfdHJhaXRzIiwKICAg
ICAgICAgIjpoYXNodGFibGVfZGVidWdfaG9va3MiLAorICAgICAgICAiOmhhc2h0YWJsZXpfc2Ft
cGxlciIsCisgICAgICAgICI6aGF2ZV9zc2UiLAogICAgICAgICAiOmxheW91dCIsCiAgICAgICAg
ICIvL2Fic2wvYmFzZTpiaXRzIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC00
NzUsNyArNjE3LDYgQEAgY2NfbGlicmFyeSgKICAgICAgICAgIi8vYWJzbC9iYXNlOmVuZGlhbiIs
CiAgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJh
aXRzIiwKLSAgICAgICAgIi8vYWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAgICAgICIvL2Fic2wv
dXRpbGl0eSIsCiAgICAgXSwKICkKQEAgLTUwNCw2ICs2NDUsNyBAQCBjY190ZXN0KAogICAgIHNp
emUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbImludGVybmFsL3Jhd19oYXNoX3NldF9hbGxvY2F0
b3JfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6cmF3X2hh
c2hfc2V0IiwKICAgICAgICAgIjp0cmFja2VkIiwKQEAgLTUxNiw2ICs2NTgsNyBAQCBjY19saWJy
YXJ5KAogICAgIG5hbWUgPSAibGF5b3V0IiwKICAgICBoZHJzID0gWyJpbnRlcm5hbC9sYXlvdXQu
aCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZTpj
b3JlX2hlYWRlcnMiLAogICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLApAQCAtNTMw
LDYgKzY3Myw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9IFsi
aW50ZXJuYWwvbGF5b3V0X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB0YWdzID0gTk9URVNU
X1RBR1MsCiAgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKICAgICBk
ZXBzID0gWwpAQCAtNTQ2LDYgKzY5MCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgdGVzdG9ubHkgPSAx
LAogICAgIGhkcnMgPSBbImludGVybmFsL3RyYWNrZWQuaCJdLAogICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogKQogCiBj
Y19saWJyYXJ5KApAQCAtNTUzLDYgKzY5OCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgdGVzdG9ubHkg
PSAxLAogICAgIGhkcnMgPSBbImludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVz
dC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNoX2dlbmVyYXRv
cl90ZXN0aW5nIiwKICAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKQEAgLTU2NSw2ICs3
MTEsNyBAQCBjY19saWJyYXJ5KAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBoZHJzID0gWyJpbnRl
cm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVT
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBz
ID0gWwogICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAogICAgICAgICAiOmhhc2hf
cG9saWN5X3Rlc3RpbmciLApAQCAtNTc3LDYgKzcyNCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgdGVz
dG9ubHkgPSAxLAogICAgIGhkcnMgPSBbImludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJz
X3Rlc3QuaCJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6aGFzaF9nZW5l
cmF0b3JfdGVzdGluZyIsCiAgICAgICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCkBAIC01ODks
OSArNzM3LDM1IEBAIGNjX2xpYnJhcnkoCiAgICAgdGVzdG9ubHkgPSAxLAogICAgIGhkcnMgPSBb
ImludGVybmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIl0sCiAgICAgY29wdHMg
PSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMs
CiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKICAgICAg
ICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJh
aXRzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAgXSwK
KykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInVub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0
IiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3Nl
dF9tZW1iZXJzX3Rlc3QuaCJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxp
bmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICIv
L2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0
Ly86Z3Rlc3QiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ1bm9yZGVy
ZWRfbWFwX21lbWJlcnNfdGVzdCIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBbImlu
dGVybmFsL3Vub3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xf
VEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBk
ZXBzID0gWworICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAogICAgICAgICAiQGNv
bV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0IiwKICAgICBdLAogKQpAQCAtNjAxLDYgKzc3NSw3
IEBAIGNjX2xpYnJhcnkoCiAgICAgdGVzdG9ubHkgPSAxLAogICAgIGhkcnMgPSBbImludGVybmFs
L3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCiAgICAgICAgICI6aGFzaF9wb2xp
Y3lfdGVzdGluZyIsCkBAIC02MTMsNiArNzg4LDcgQEAgY2NfbGlicmFyeSgKICAgICB0ZXN0b25s
eSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVz
dC5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpoYXNoX2dlbmVyYXRv
cl90ZXN0aW5nIiwKICAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKQEAgLTYyNCwxMCAr
ODAwLDEyIEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJ1bm9yZGVyZWRfc2V0X3Rlc3QiLAogICAg
IHNyY3MgPSBbImludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVzdC5jYyJdLAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIHRhZ3MgPSBOT1RFU1RfVEFHU19OT05NT0JJTEUsCiAgICAgZGVwcyA9IFsKICAgICAgICAg
Ijp1bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QiLAogICAgICAgICAiOnVub3JkZXJlZF9z
ZXRfbG9va3VwX3Rlc3QiLAorICAgICAgICAiOnVub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0IiwK
ICAgICAgICAgIjp1bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0IiwKICAgICAgICAgIkBjb21f
Z29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBdLApAQCAtNjM3LDExICs4MTUs
ODIgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gInVub3JkZXJlZF9tYXBfdGVzdCIsCiAgICAgc3Jj
cyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNM
X1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAg
dGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwKICAgICBkZXBzID0gWwogICAgICAgICAiOnVu
b3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdCIsCiAgICAgICAgICI6dW5vcmRlcmVkX21hcF9s
b29rdXBfdGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9tZW1iZXJzX3Rlc3QiLAogICAg
ICAgICAiOnVub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QiLAogICAgICAgICAiQGNvbV9nb29n
bGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAogICAgIF0sCiApCisKK2NjX2xpYnJhcnkoCisg
ICAgbmFtZSA9ICJidHJlZSIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImludGVybmFsL2J0cmVl
LmgiLAorICAgICAgICAiaW50ZXJuYWwvYnRyZWVfY29udGFpbmVyLmgiLAorICAgIF0sCisgICAg
aGRycyA9IFsKKyAgICAgICAgImJ0cmVlX21hcC5oIiwKKyAgICAgICAgImJ0cmVlX3NldC5oIiwK
KyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpw
dWJsaWMiXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbW1vbiIsCisgICAgICAgICI6Y29t
cHJlc3NlZF90dXBsZSIsCisgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgICAgICI6
bGF5b3V0IiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIv
L2Fic2wvYmFzZTp0aHJvd19kZWxlZ2F0ZSIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAg
ICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdz
IiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpjb21wYXJlIiwKKyAgICAgICAgIi8vYWJzbC91dGls
aXR5IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiYnRyZWVfdGVzdF9j
b21tb24iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJidHJlZV90ZXN0LmgiXSwK
KyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKKyAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6YnRyZWUiLAorICAgICAgICAiOmZsYXRfaGFzaF9zZXQi
LAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3RpbWUiLAorICAg
IF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJidHJlZV90ZXN0IiwKKyAgICBzaXplID0g
ImxhcmdlIiwKKyAgICBzcmNzID0gWworICAgICAgICAiYnRyZWVfdGVzdC5jYyIsCisgICAgXSwK
KyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIFsiLWZleGNlcHRpb25zIl0sCisgICAgbGlu
a29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgc2hhcmRfY291bnQgPSAxMCwKKyAg
ICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICI6YnRyZWUiLAorICAgICAgICAiOmJ0cmVlX3Rlc3RfY29tbW9uIiwKKyAgICAgICAg
Ijpjb3VudGluZ19hbGxvY2F0b3IiLAorICAgICAgICAiOnRlc3RfaW5zdGFuY2VfdHJhY2tlciIs
CisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvZmxhZ3M6ZmxhZyIsCisg
ICAgICAgICIvL2Fic2wvaGFzaDpoYXNoX3Rlc3RpbmciLAorICAgICAgICAiLy9hYnNsL21lbW9y
eSIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wv
c3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6Y29tcGFyZSIsCisgICAgICAgICJAY29t
X2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5nbgppbmRl
eCBhMmZiZDU0MzMxNmQ0NTZiNWRmMTQ3MzEzM2UzMWQwNDA5YjcyNzBlLi4xMmViZGZmZjcwODc1
Njk0OGFjMjVjZjI4MTA3NzU0ZTZmM2I1MDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
QlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmduCkBAIC02LDYgKzYsNyBAQCBp
bXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCiAKIGlmIChidWlsZF93aXRoX2No
cm9taXVtKSB7CiAgIHZpc2liaWxpdHkgPSBbCisgICAgIi8vbGliYXNzaXN0YW50LyoiLAogICAg
ICIvL3RoaXJkX3BhcnR5L3dlYnJ0Yy8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
LyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Q6Z3Rlc3QiLApAQCAtNDksNiArNTAs
MjUgQEAgc291cmNlX3NldCgiZml4ZWRfYXJyYXkiKSB7CiAgIF0KIH0KIAorc291cmNlX3NldCgi
aW5saW5lZF92ZWN0b3JfaW50ZXJuYWwiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmln
cyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisg
IHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvaW5saW5lZF92ZWN0b3IuaCIsCisgIF0KKyAgZGVw
cyA9IFsKKyAgICAiOmNvbXByZXNzZWRfdHVwbGUiLAorICAgICIuLi9iYXNlOmNvcmVfaGVhZGVy
cyIsCisgICAgIi4uL21lbW9yeSIsCisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIu
Li90eXBlczpzcGFuIiwKKyAgXQorfQorCiBzb3VyY2Vfc2V0KCJpbmxpbmVkX3ZlY3RvciIpIHsK
ICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBd
CiAgIGNvbmZpZ3MgKz0gWwpAQCAtNjAsNiArODAsNyBAQCBzb3VyY2Vfc2V0KCJpbmxpbmVkX3Zl
Y3RvciIpIHsKICAgICAiaW5saW5lZF92ZWN0b3IuaCIsCiAgIF0KICAgZGVwcyA9IFsKKyAgICAi
OmlubGluZWRfdmVjdG9yX2ludGVybmFsIiwKICAgICAiLi4vYWxnb3JpdGhtIiwKICAgICAiLi4v
YmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICIuLi9iYXNlOnRocm93X2RlbGVnYXRlIiwKQEAgLTY3
LDYgKzg4LDIxIEBAIHNvdXJjZV9zZXQoImlubGluZWRfdmVjdG9yIikgewogICBdCiB9CiAKK3Nv
dXJjZV9zZXQoImNvdW50aW5nX2FsbG9jYXRvciIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNv
bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBj
b25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2Nj
IiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvY291bnRp
bmdfYWxsb2NhdG9yLmgiLAorICBdCisgIHZpc2liaWxpdHkgPSBbXQorICB2aXNpYmlsaXR5ICs9
IFsgIjoqIiBdCit9CisKIHNvdXJjZV9zZXQoInRlc3RfaW5zdGFuY2VfdHJhY2tlciIpIHsKICAg
dGVzdG9ubHkgPSB0cnVlCiAgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6
Y2hyb21pdW1fY29kZSIgXQpAQCAtODEsNiArMTE3LDkgQEAgc291cmNlX3NldCgidGVzdF9pbnN0
YW5jZV90cmFja2VyIikgewogICBwdWJsaWMgPSBbCiAgICAgImludGVybmFsL3Rlc3RfaW5zdGFu
Y2VfdHJhY2tlci5oIiwKICAgXQorICBkZXBzID0gWworICAgICIuLi90eXBlczpjb21wYXJlIiwK
KyAgXQogICB2aXNpYmlsaXR5ID0gW10KICAgdmlzaWJpbGl0eSArPSBbICIuLi8qIiBdCiB9CkBA
IC05OSw2ICsxMzgsNyBAQCBzb3VyY2Vfc2V0KCJmbGF0X2hhc2hfbWFwIikgewogICAgICI6Y29u
dGFpbmVyX21lbW9yeSIsCiAgICAgIjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzIiwKICAgICAiOnJh
d19oYXNoX21hcCIsCisgICAgIi4uL2FsZ29yaXRobTpjb250YWluZXIiLAogICAgICIuLi9tZW1v
cnkiLAogICBdCiB9CkBAIC0xMTcsNiArMTU3LDcgQEAgc291cmNlX3NldCgiZmxhdF9oYXNoX3Nl
dCIpIHsKICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAogICAgICI6aGFzaF9mdW5jdGlvbl9kZWZh
dWx0cyIsCiAgICAgIjpyYXdfaGFzaF9zZXQiLAorICAgICIuLi9hbGdvcml0aG06Y29udGFpbmVy
IiwKICAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICIuLi9tZW1vcnkiLAogICBdCkBA
IC0xMzcsNiArMTc4LDcgQEAgc291cmNlX3NldCgibm9kZV9oYXNoX21hcCIpIHsKICAgICAiOmhh
c2hfZnVuY3Rpb25fZGVmYXVsdHMiLAogICAgICI6bm9kZV9oYXNoX3BvbGljeSIsCiAgICAgIjpy
YXdfaGFzaF9tYXAiLAorICAgICIuLi9hbGdvcml0aG06Y29udGFpbmVyIiwKICAgICAiLi4vbWVt
b3J5IiwKICAgXQogfQpAQCAtMTU2LDYgKzE5OCw3IEBAIHNvdXJjZV9zZXQoIm5vZGVfaGFzaF9z
ZXQiKSB7CiAgICAgIjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzIiwKICAgICAiOm5vZGVfaGFzaF9w
b2xpY3kiLAogICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgICAiLi4vYWxnb3JpdGhtOmNvbnRhaW5l
ciIsCiAgICAgIi4uL21lbW9yeSIsCiAgIF0KIH0KQEAgLTI3Myw2ICszMTYsMzEgQEAgc291cmNl
X3NldCgiaGFzaHRhYmxlX2RlYnVnX2hvb2tzIikgewogICBdCiB9CiAKK3NvdXJjZV9zZXQoImhh
c2h0YWJsZXpfc2FtcGxlciIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21w
aWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGlj
ID0gWworICAgICJpbnRlcm5hbC9oYXNodGFibGV6X3NhbXBsZXIuaCIsCisgIF0KKyAgc291cmNl
cyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyLmNjIiwKKyAgICAiaW50ZXJu
YWwvaGFzaHRhYmxlel9zYW1wbGVyX2ZvcmNlX3dlYWtfZGVmaW5pdGlvbi5jYyIsCisgIF0KKyAg
ZGVwcyA9IFsKKyAgICAiOmhhdmVfc3NlIiwKKyAgICAiLi4vYmFzZSIsCisgICAgIi4uL2Jhc2U6
Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vZGVidWdnaW5nOnN0YWNrdHJhY2UiLAorICAgICIuLi9t
ZW1vcnkiLAorICAgICIuLi9zeW5jaHJvbml6YXRpb24iLAorICAgICIuLi91dGlsaXR5IiwKKyAg
XQorfQorCiBzb3VyY2Vfc2V0KCJub2RlX2hhc2hfcG9saWN5IikgewogICBjb25maWdzIC09IFsg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KICAgY29uZmlncyArPSBb
CkBAIC0yOTgsNiArMzY2LDM3IEBAIHNvdXJjZV9zZXQoInJhd19oYXNoX21hcCIpIHsKICAgZGVw
cyA9IFsKICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAogICAgICI6cmF3X2hhc2hfc2V0IiwKKyAg
ICAiLi4vYmFzZTp0aHJvd19kZWxlZ2F0ZSIsCisgIF0KK30KKworc291cmNlX3NldCgiaGF2ZV9z
c2UiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1f
Y29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9f
Y2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1
bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50
ZXJuYWwvaGF2ZV9zc2UuaCIsCisgIF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxpdHkg
Kz0gWyAiOioiIF0KK30KKworc291cmNlX3NldCgiY29tbW9uIikgeworICBjb25maWdzIC09IFsg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBb
CisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAg
cHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRl
X2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2NvbW1vbi5oIiwKKyAgXQor
ICBkZXBzID0gWworICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAiLi4vdHlwZXM6b3B0
aW9uYWwiLAogICBdCiB9CiAKQEAgLTMxNSwxMCArNDE0LDEzIEBAIHNvdXJjZV9zZXQoInJhd19o
YXNoX3NldCIpIHsKICAgICAiaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiLAogICBdCiAgIGRlcHMg
PSBbCisgICAgIjpjb21tb24iLAogICAgICI6Y29tcHJlc3NlZF90dXBsZSIsCiAgICAgIjpjb250
YWluZXJfbWVtb3J5IiwKICAgICAiOmhhc2hfcG9saWN5X3RyYWl0cyIsCiAgICAgIjpoYXNodGFi
bGVfZGVidWdfaG9va3MiLAorICAgICI6aGFzaHRhYmxlel9zYW1wbGVyIiwKKyAgICAiOmhhdmVf
c3NlIiwKICAgICAiOmxheW91dCIsCiAgICAgIi4uL2Jhc2U6Yml0cyIsCiAgICAgIi4uL2Jhc2U6
Y29uZmlnIiwKQEAgLTMyNiw3ICs0MjgsNiBAQCBzb3VyY2Vfc2V0KCJyYXdfaGFzaF9zZXQiKSB7
CiAgICAgIi4uL2Jhc2U6ZW5kaWFuIiwKICAgICAiLi4vbWVtb3J5IiwKICAgICAiLi4vbWV0YTp0
eXBlX3RyYWl0cyIsCi0gICAgIi4uL3R5cGVzOm9wdGlvbmFsIiwKICAgICAiLi4vdXRpbGl0eSIs
CiAgIF0KIH0KQEAgLTQzMSw2ICs1MzIsNDEgQEAgc291cmNlX3NldCgidW5vcmRlcmVkX3NldF9j
b25zdHJ1Y3Rvcl90ZXN0IikgewogICBkZXBzID0gWwogICAgICI6aGFzaF9nZW5lcmF0b3JfdGVz
dGluZyIsCiAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAiLi4vbWV0YTp0eXBlX3Ry
YWl0cyIsCisgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgIF0KK30KKworc291cmNlX3NldCgidW5v
cmRlcmVkX3NldF9tZW1iZXJzX3Rlc3QiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdz
IC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmln
cyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAor
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisg
IF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9p
bmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL3Vub3JkZXJlZF9z
ZXRfbWVtYmVyc190ZXN0LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uL21ldGE6dHlwZV90
cmFpdHMiLAorICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInVu
b3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0IikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmln
cyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZp
Z3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwK
KyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAor
ICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
aW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC91bm9yZGVyZWRf
bWFwX21lbWJlcnNfdGVzdC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9tZXRhOnR5cGVf
dHJhaXRzIiwKICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgXQogfQpAQCAtNDcwLDMgKzYwNiwz
MyBAQCBzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0IikgewogICAgICIv
L3Rlc3RpbmcvZ3Rlc3QiLAogICBdCiB9CisKK3NvdXJjZV9zZXQoImJ0cmVlIikgeworICBjb25m
aWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29u
ZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUi
LAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIs
CisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJz
bF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0gWworICAgICJpbnRlcm5hbC9idHJlZS5o
IiwKKyAgICAiaW50ZXJuYWwvYnRyZWVfY29udGFpbmVyLmgiLAorICBdCisgIHB1YmxpYyA9IFsK
KyAgICAiYnRyZWVfbWFwLmgiLAorICAgICJidHJlZV9zZXQuaCIsCisgIF0KKyAgZGVwcyA9IFsK
KyAgICAiOmNvbW1vbiIsCisgICAgIjpjb21wcmVzc2VkX3R1cGxlIiwKKyAgICAiOmNvbnRhaW5l
cl9tZW1vcnkiLAorICAgICI6bGF5b3V0IiwKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAor
ICAgICIuLi9iYXNlOnRocm93X2RlbGVnYXRlIiwKKyAgICAiLi4vbWVtb3J5IiwKKyAgICAiLi4v
bWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4uL3N0cmluZ3MiLAorICAgICIuLi90eXBlczpjb21w
YXJlIiwKKyAgICAiLi4vdXRpbGl0eSIsCisgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9DTWFrZUxpc3RzLnR4dAppbmRl
eCA5ZTQwNjkwMmIwNTg1ZGVkYTNiYTMwNzJiZWUwZmYyNzc0ODRlYmMzLi42Y2FiZTBjOTMwOWEy
MzM2NWJkYzA5NmM1ZDQ0ZmEwZmNjYTE4YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0NNYWtlTGlzdHMudHh0CkBAIC01
LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
ICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQsMTYzICsxNCw5MDIgQEAKICMgbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAjCiAKLQotbGlzdChBUFBFTkQgQ09OVEFJTkVS
X1BVQkxJQ19IRUFERVJTCi0gICJmaXhlZF9hcnJheS5oIgotICAiZmxhdF9oYXNoX21hcC5oIgot
ICAiZmxhdF9oYXNoX3NldC5oIgotICAiaW5saW5lZF92ZWN0b3IuaCIKLSAgIm5vZGVfaGFzaF9t
YXAuaCIKLSAgIm5vZGVfaGFzaF9zZXQuaCIKLSkKLQotCi1saXN0KEFQUEVORCBDT05UQUlORVJf
SU5URVJOQUxfSEVBREVSUwotICAiaW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZS5oIgotICAiaW50
ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIgotICAiaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZh
dWx0cy5oIgotICAiaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgotICAiaW50ZXJu
YWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIgotICAiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRz
LmgiCi0gICJpbnRlcm5hbC9oYXNodGFibGVfZGVidWcuaCIKLSAgImludGVybmFsL2xheW91dC5o
IgotICAiaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIgotICAiaW50ZXJuYWwvcmF3X2hhc2hf
bWFwLmgiCi0gICJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIKLSAgImludGVybmFsL3Rlc3RfaW5z
dGFuY2VfdHJhY2tlci5oIgotICAiaW50ZXJuYWwvdHJhY2tlZC5oIgotICAiaW50ZXJuYWwvdW5v
cmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgiCi0gICJpbnRlcm5hbC91bm9yZGVyZWRfbWFw
X2xvb2t1cF90ZXN0LmgiCi0gICJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0
LmgiCi0gICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCIKLSAgImlu
dGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCIKLSAgImludGVybmFsL3Vub3JkZXJl
ZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaCIKLSkKLQotCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAot
ICAgIGFic2xfY29udGFpbmVyCi0gIFNPVVJDRVMKLSAgICAiaW50ZXJuYWwvcmF3X2hhc2hfc2V0
LmNjIgotICBFWFBPUlRfTkFNRQorIyBUaGlzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVt
b3ZlZCBpbiB0aGUgZnV0dXJlLiAgSXQgYWxzbyBkb2Vzbid0IGRvCisjIGFueXRoaW5nIGFueXdh
eXMuICBQcmVmZXIgdG8gdXNlIHRoZSBsaWJyYXJ5IGFzc29jaWF0ZWQgd2l0aCB0aGUgQVBJIHlv
dSBhcmUKKyMgdXNpbmcuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKICAgICBjb250YWluZXIK
KyAgUFVCTElDCiApCiAKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGJ0cmVlCisgIEhE
UlMKKyAgICAiYnRyZWVfbWFwLmgiCisgICAgImJ0cmVlX3NldC5oIgorICAgICJpbnRlcm5hbC9i
dHJlZS5oIgorICAgICJpbnRlcm5hbC9idHJlZV9jb250YWluZXIuaCIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5L
T1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbnRhaW5lcl9jb21tb24KKyAgICBhYnNsOjpjb21w
YXJlCisgICAgYWJzbDo6Y29tcHJlc3NlZF90dXBsZQorICAgIGFic2w6OmNvbnRhaW5lcl9tZW1v
cnkKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpsYXlvdXQKKyAgICBhYnNsOjpt
ZW1vcnkKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6dGhyb3dfZGVsZWdhdGUKKyAgICBh
YnNsOjp0eXBlX3RyYWl0cworICAgIGFic2w6OnV0aWxpdHkKKykKIAotIwotIyMgVEVTVFMKLSMK
K2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGJ0cmVlX3Rlc3RfY29tbW9uCisgIGhkcnMK
KyAgICAiYnRyZWVfdGVzdC5oIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBM
SU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6
YnRyZWUKKyAgICBhYnNsOjpmbGF0X2hhc2hfc2V0CisgICAgYWJzbDo6c3RyaW5ncworICAgIGFi
c2w6OnRpbWUKKyAgVEVTVE9OTFkKKykKIAotbGlzdChBUFBFTkQgVEVTVF9JTlNUQU5DRV9UUkFD
S0VSX0xJQl9TUkMKLSAgImludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5jYyIKLSAgJHtD
T05UQUlORVJfUFVCTElDX0hFQURFUlN9Ci0gICR7Q09OVEFJTkVSX0lOVEVSTkFMX0hFQURFUlN9
CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBidHJlZV90ZXN0CisgIFNSQ1MKKyAgICAiYnRy
ZWVfdGVzdC5jYyIKKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpidHJlZQorICAg
IGFic2w6OmJ0cmVlX3Rlc3RfY29tbW9uCisgICAgYWJzbDo6Y29tcGFyZQorICAgIGFic2w6OmNv
dW50aW5nX2FsbG9jYXRvcgorICAgIGFic2w6OmZsYWdzCisgICAgYWJzbDo6aGFzaF90ZXN0aW5n
CisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnRlc3RfaW5zdGFuY2VfdHJhY2tlcgorICAg
IGFic2w6OnR5cGVfdHJhaXRzCisgICAgZ21vY2tfbWFpbgogKQogCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICBjb21wcmVzc2VkX3R1cGxlCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvY29t
cHJlc3NlZF90dXBsZS5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6dXRpbGl0eQorICBQVUJMSUMKKykKIAotYWJzbF9saWJyYXJ5KAotICBU
QVJHRVQKLSAgICB0ZXN0X2luc3RhbmNlX3RyYWNrZXJfbGliCi0gIFNPVVJDRVMKLSAgICAke1RF
U1RfSU5TVEFOQ0VfVFJBQ0tFUl9MSUJfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJz
bDo6Y29udGFpbmVyCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBjb21wcmVzc2VkX3R1cGxl
X3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlX3Rlc3QuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjphbnkKKyAg
ICBhYnNsOjpjb21wcmVzc2VkX3R1cGxlCisgICAgYWJzbDo6bWVtb3J5CisgICAgYWJzbDo6b3B0
aW9uYWwKKyAgICBhYnNsOjp0ZXN0X2luc3RhbmNlX3RyYWNrZXIKKyAgICBhYnNsOjp1dGlsaXR5
CisgICAgZ21vY2tfbWFpbgogKQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBmaXhl
ZF9hcnJheQorICBIRFJTCisgICAiZml4ZWRfYXJyYXkuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xf
REVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbXByZXNzZWRfdHVwbGUKKyAgICBh
YnNsOjphbGdvcml0aG0KKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpkeW5hbWlj
X2Fubm90YXRpb25zCisgICAgYWJzbDo6dGhyb3dfZGVsZWdhdGUKKyAgICBhYnNsOjptZW1vcnkK
KyAgUFVCTElDCispCiAKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGZpeGVkX2FycmF5X3Rl
c3QKKyAgU1JDUworICAgICJmaXhlZF9hcnJheV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJT
TF9URVNUX0NPUFRTfQorICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9CisgIExJTktPUFRTCisg
ICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmZp
eGVkX2FycmF5CisgICAgYWJzbDo6ZXhjZXB0aW9uX3Rlc3RpbmcKKyAgICBhYnNsOjpoYXNoX3Rl
c3RpbmcKKyAgICBhYnNsOjptZW1vcnkKKyAgICBnbW9ja19tYWluCispCiAKLSMgdGVzdCBmaXhl
ZF9hcnJheV90ZXN0Ci1zZXQoRklYRURfQVJSQVlfVEVTVF9TUkMgImZpeGVkX2FycmF5X3Rlc3Qu
Y2MiKQotc2V0KEZJWEVEX0FSUkFZX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFi
c2xfdGhyb3dfZGVsZWdhdGUgdGVzdF9pbnN0YW5jZV90cmFja2VyX2xpYikKK2Fic2xfY2NfdGVz
dCgKKyAgTkFNRQorICAgIGZpeGVkX2FycmF5X3Rlc3Rfbm9leGNlcHRpb25zCisgIFNSQ1MKKyAg
ICAiZml4ZWRfYXJyYXlfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OmZpeGVkX2FycmF5CisgICAgYWJzbDo6ZXhjZXB0aW9uX3Rlc3Rp
bmcKKyAgICBhYnNsOjpoYXNoX3Rlc3RpbmcKKyAgICBhYnNsOjptZW1vcnkKKyAgICBnbW9ja19t
YWluCispCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgZml4ZWRfYXJyYXlfdGVzdAotICBT
T1VSQ0VTCi0gICAgJHtGSVhFRF9BUlJBWV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwot
ICAgICR7RklYRURfQVJSQVlfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQotICBQUklWQVRFX0NPTVBJ
TEVfRkxBR1MKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGZpeGVkX2FycmF5X2V4Y2VwdGlv
bl9zYWZldHlfdGVzdAorICBTUkNTCisgICAgImZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlf
dGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KICAgICAke0FCU0xfRVhD
RVBUSU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElO
S09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmaXhlZF9hcnJheQorICAgIGFic2w6OmV4Y2VwdGlv
bl9zYWZldHlfdGVzdGluZworICAgIGdtb2NrX21haW4KICkKIAorYWJzbF9jY19saWJyYXJ5KAor
ICBOQU1FCisgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWwKKyAgSERSUworICAgImludGVybmFs
L2lubGluZWRfdmVjdG9yLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpjb21wcmVzc2VkX3R1cGxlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJz
CisgICAgYWJzbDo6bWVtb3J5CisgICAgYWJzbDo6c3BhbgorICAgIGFic2w6OnR5cGVfdHJhaXRz
CisgIFBVQkxJQworKQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBpbmxpbmVkX3Zl
Y3RvcgorICBIRFJTCisgICAiaW5saW5lZF92ZWN0b3IuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xf
REVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmFsZ29yaXRobQorICAgIGFic2w6OmNv
cmVfaGVhZGVycworICAgIGFic2w6OmlubGluZWRfdmVjdG9yX2ludGVybmFsCisgICAgYWJzbDo6
dGhyb3dfZGVsZWdhdGUKKyAgICBhYnNsOjptZW1vcnkKKyAgUFVCTElDCispCiAKLWFic2xfdGVz
dCgKLSAgVEFSR0VUCi0gICAgZml4ZWRfYXJyYXlfdGVzdF9ub2V4Y2VwdGlvbnMKLSAgU09VUkNF
UwotICAgICR7RklYRURfQVJSQVlfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAk
e0ZJWEVEX0FSUkFZX1RFU1RfUFVCTElDX0xJQlJBUklFU30KK2Fic2xfY2NfbGlicmFyeSgKKyAg
TkFNRQorICAgIGNvdW50aW5nX2FsbG9jYXRvcgorICBIRFJTCisgICAgImludGVybmFsL2NvdW50
aW5nX2FsbG9jYXRvci5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQogKQog
CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBpbmxpbmVkX3ZlY3Rvcl90ZXN0CisgIFNSQ1MK
KyAgICAiaW5saW5lZF92ZWN0b3JfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9D
T1BUU30KKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJT
TF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb3VudGluZ19h
bGxvY2F0b3IKKyAgICBhYnNsOjppbmxpbmVkX3ZlY3RvcgorICAgIGFic2w6OnRlc3RfaW5zdGFu
Y2VfdHJhY2tlcgorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBh
YnNsOjpleGNlcHRpb25fdGVzdGluZworICAgIGFic2w6Omhhc2hfdGVzdGluZworICAgIGFic2w6
Om1lbW9yeQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9ja19tYWluCispCiAKLSMgdGVzdCBm
aXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QKLXNldChGSVhFRF9BUlJBWV9FWENFUFRJ
T05fU0FGRVRZX1RFU1RfU1JDICJmaXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2Mi
KQotc2V0KEZJWEVEX0FSUkFZX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9QVUJMSUNfTElCUkFSSUVT
Ci0gIGFic2w6OmNvbnRhaW5lcgotICBhYnNsX2Jhc2VfaW50ZXJuYWxfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0aW5nCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBpbmxpbmVkX3ZlY3Rvcl90ZXN0
X25vZXhjZXB0aW9ucworICBTUkNTCisgICAgImlubGluZWRfdmVjdG9yX3Rlc3QuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjppbmxpbmVkX3Zl
Y3RvcgorICAgIGFic2w6OnRlc3RfaW5zdGFuY2VfdHJhY2tlcgorICAgIGFic2w6OmJhc2UKKyAg
ICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpleGNlcHRpb25fdGVzdGluZworICAgIGFi
c2w6Omhhc2hfdGVzdGluZworICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6OnN0cmluZ3MKKyAg
ICBnbW9ja19tYWluCiApCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgZml4ZWRfYXJyYXlf
ZXhjZXB0aW9uX3NhZmV0eV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0ZJWEVEX0FSUkFZX0VYQ0VQ
VElPTl9TQUZFVFlfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0ZJWEVEX0FS
UkFZX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQotICBQUklWQVRFX0NP
TVBJTEVfRkxBR1MKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGlubGluZWRfdmVjdG9yX2V4
Y2VwdGlvbl9zYWZldHlfdGVzdAorICBTUkNTCisgICAgImlubGluZWRfdmVjdG9yX2V4Y2VwdGlv
bl9zYWZldHlfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KICAgICAk
e0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05T
X0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjppbmxpbmVkX3ZlY3RvcgorICAgIGFi
c2w6OmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZworICAgIGdtb2NrX21haW4KICkKIAorYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgdGVzdF9pbnN0YW5jZV90cmFja2VyCisgIEhEUlMKKyAg
ICAiaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgiCisgIFNSQ1MKKyAgICAiaW50ZXJu
YWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxU
X0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29tcGFyZQorICBURVNUT05MWQorKQogCi0jIHRl
c3QgaW5saW5lZF92ZWN0b3JfdGVzdAotc2V0KElOTElORURfVkVDVE9SX1RFU1RfU1JDICJpbmxp
bmVkX3ZlY3Rvcl90ZXN0LmNjIikKLXNldChJTkxJTkVEX1ZFQ1RPUl9URVNUX1BVQkxJQ19MSUJS
QVJJRVMgYWJzbDo6YmFzZSBhYnNsX3Rocm93X2RlbGVnYXRlIHRlc3RfaW5zdGFuY2VfdHJhY2tl
cl9saWIpCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICB0ZXN0X2luc3RhbmNlX3RyYWNrZXJf
dGVzdAorICBTUkNTCisgICAgImludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlcl90ZXN0LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6dGVz
dF9pbnN0YW5jZV90cmFja2VyCisgICAgZ21vY2tfbWFpbgorKQogCi1hYnNsX3Rlc3QoCi0gIFRB
UkdFVAotICAgIGlubGluZWRfdmVjdG9yX3Rlc3QKLSAgU09VUkNFUwotICAgICR7SU5MSU5FRF9W
RUNUT1JfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0lOTElORURfVkVDVE9S
X1RFU1RfUFVCTElDX0xJQlJBUklFU30KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGZs
YXRfaGFzaF9tYXAKKyAgSERSUworICAgICJmbGF0X2hhc2hfbWFwLmgiCisgIENPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb250YWluZXJfbWVtb3J5
CisgICAgYWJzbDo6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cworICAgIGFic2w6OnJhd19oYXNoX21h
cAorICAgIGFic2w6OmFsZ29yaXRobV9jb250YWluZXIKKyAgICBhYnNsOjptZW1vcnkKKyAgUFVC
TElDCiApCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgaW5saW5lZF92ZWN0b3JfdGVzdF9u
b2V4Y2VwdGlvbnMKLSAgU09VUkNFUwotICAgICR7SU5MSU5FRF9WRUNUT1JfVEVTVF9TUkN9Ci0g
IFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0lOTElORURfVkVDVE9SX1RFU1RfUFVCTElDX0xJQlJB
UklFU30KLSAgUFJJVkFURV9DT01QSUxFX0ZMQUdTCi0gICAgJHtBQlNMX05PRVhDRVBUSU9OX0NY
WEZMQUdTfQorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgZmxhdF9oYXNoX21hcF90ZXN0Cisg
IFNSQ1MKKyAgICAiZmxhdF9oYXNoX21hcF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZmxhdF9oYXNoX21hcAorICAgIGFic2w6Omhh
c2hfZ2VuZXJhdG9yX3Rlc3RpbmcKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9y
X3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0CisgICAgYWJzbDo6dW5v
cmRlcmVkX21hcF9tZW1iZXJzX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFwX21vZGlmaWVy
c190ZXN0CisgICAgYWJzbDo6YW55CisgICAgZ21vY2tfbWFpbgogKQogCithYnNsX2NjX2xpYnJh
cnkoCisgIE5BTUUKKyAgICBmbGF0X2hhc2hfc2V0CisgIEhEUlMKKyAgICAiZmxhdF9oYXNoX3Nl
dC5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6Y29udGFpbmVyX21lbW9yeQorICAgIGFic2w6Omhhc2hfZnVuY3Rpb25fZGVmYXVsdHMKKyAg
ICBhYnNsOjpyYXdfaGFzaF9zZXQKKyAgICBhYnNsOjphbGdvcml0aG1fY29udGFpbmVyCisgICAg
YWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6bWVtb3J5CisgIFBVQkxJQworKQogCi0jIHRl
c3QgdGVzdF9pbnN0YW5jZV90cmFja2VyX3Rlc3QKLXNldChURVNUX0lOU1RBTkNFX1RSQUNLRVJf
VEVTVF9TUkMgImludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlcl90ZXN0LmNjIikKLXNldChU
RVNUX0lOU1RBTkNFX1RSQUNLRVJfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJz
bF90aHJvd19kZWxlZ2F0ZSB0ZXN0X2luc3RhbmNlX3RyYWNrZXJfbGliKQorYWJzbF9jY190ZXN0
KAorICBOQU1FCisgICAgZmxhdF9oYXNoX3NldF90ZXN0CisgIFNSQ1MKKyAgICAiZmxhdF9oYXNo
X3NldF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICAgICItRFVO
T1JERVJFRF9TRVRfQ1hYMTciCisgIERFUFMKKyAgICBhYnNsOjpmbGF0X2hhc2hfc2V0CisgICAg
YWJzbDo6aGFzaF9nZW5lcmF0b3JfdGVzdGluZworICAgIGFic2w6OnVub3JkZXJlZF9zZXRfY29u
c3RydWN0b3JfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QKKyAgICBh
YnNsOjp1bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9zZXRf
bW9kaWZpZXJzX3Rlc3QKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjpzdHJpbmdzCisgICAg
Z21vY2tfbWFpbgorKQogCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBub2RlX2hhc2hf
bWFwCisgIEhEUlMKKyAgICAibm9kZV9oYXNoX21hcC5oIgorICBDT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29udGFpbmVyX21lbW9yeQorICAgIGFi
c2w6Omhhc2hfZnVuY3Rpb25fZGVmYXVsdHMKKyAgICBhYnNsOjpub2RlX2hhc2hfcG9saWN5Cisg
ICAgYWJzbDo6cmF3X2hhc2hfbWFwCisgICAgYWJzbDo6YWxnb3JpdGhtX2NvbnRhaW5lcgorICAg
IGFic2w6Om1lbW9yeQorICBQVUJMSUMKKykKIAotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICB0
ZXN0X2luc3RhbmNlX3RyYWNrZXJfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtURVNUX0lOU1RBTkNF
X1RSQUNLRVJfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1RFU1RfSU5TVEFO
Q0VfVFJBQ0tFUl9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
KyAgICBub2RlX2hhc2hfbWFwX3Rlc3QKKyAgU1JDUworICAgICJub2RlX2hhc2hfbWFwX3Rlc3Qu
Y2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpo
YXNoX2dlbmVyYXRvcl90ZXN0aW5nCisgICAgYWJzbDo6bm9kZV9oYXNoX21hcAorICAgIGFic2w6
OnRyYWNrZWQKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QKKyAgICBh
YnNsOjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0CisgICAgYWJzbDo6dW5vcmRlcmVkX21hcF9t
ZW1iZXJzX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0CisgICAg
Z21vY2tfbWFpbgorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBub2RlX2hhc2hf
c2V0CisgIEhEUlMKKyAgICAibm9kZV9oYXNoX3NldC5oIgorICBDT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cwor
ICAgIGFic2w6Om5vZGVfaGFzaF9wb2xpY3kKKyAgICBhYnNsOjpyYXdfaGFzaF9zZXQKKyAgICBh
YnNsOjphbGdvcml0aG1fY29udGFpbmVyCisgICAgYWJzbDo6bWVtb3J5CisgIFBVQkxJQworKQor
CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBub2RlX2hhc2hfc2V0X3Rlc3QKKyAgU1JDUwor
ICAgICJub2RlX2hhc2hfc2V0X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CisgICAgIi1EVU5PUkRFUkVEX1NFVF9DWFgxNyIKKyAgREVQUworICAgIGFic2w6Omhhc2hf
Z2VuZXJhdG9yX3Rlc3RpbmcKKyAgICBhYnNsOjpub2RlX2hhc2hfc2V0CisgICAgYWJzbDo6dW5v
cmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0CisgICAgYWJzbDo6dW5vcmRlcmVkX3NldF9sb29r
dXBfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0CisgICAgYWJzbDo6
dW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdAorICAgIGdtb2NrX21haW4KKykKKworYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgY29udGFpbmVyX21lbW9yeQorICBIRFJTCisgICAgImlu
dGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6OnV0aWxpdHkKKyAgUFVC
TElDCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGNvbnRhaW5lcl9tZW1vcnlfdGVz
dAorICBTUkNTCisgICAgImludGVybmFsL2NvbnRhaW5lcl9tZW1vcnlfdGVzdC5jYyIKKyAgQ09Q
VFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvbnRhaW5lcl9t
ZW1vcnkKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ21vY2tfbWFpbgorKQorCithYnNsX2NjX2xp
YnJhcnkoCisgIE5BTUUKKyAgICBoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzCisgIEhEUlMKKyAgICAi
aW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIgorICBDT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6aGFzaAor
ICAgIGFic2w6OnN0cmluZ3MKKyAgUFVCTElDCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQor
ICAgIGhhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL2hh
c2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6Omhhc2hfZnVuY3Rpb25fZGVmYXVsdHMKKyAgICBhYnNs
OjpoYXNoCisgICAgYWJzbDo6c3RyaW5ncworICAgIGdtb2NrX21haW4KKykKKworYWJzbF9jY19s
aWJyYXJ5KAorICBOQU1FCisgICAgaGFzaF9nZW5lcmF0b3JfdGVzdGluZworICBIRFJTCisgICAg
ImludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKKyAgU1JDUworICAgICJpbnRlcm5h
bC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaF9wb2xpY3lfdGVzdGluZworICAgIGFic2w6Om1l
dGEKKyAgICBhYnNsOjpzdHJpbmdzCisgIFRFU1RPTkxZCispCisKK2Fic2xfY2NfbGlicmFyeSgK
KyAgTkFNRQorICAgIGhhc2hfcG9saWN5X3Rlc3RpbmcKKyAgSERSUworICAgICJpbnRlcm5hbC9o
YXNoX3BvbGljeV90ZXN0aW5nLmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpoYXNoCisgICAgYWJzbDo6c3RyaW5ncworICBURVNUT05MWQorKQor
CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBoYXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QKKyAg
U1JDUworICAgICJpbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MiCisgIENPUFRT
CisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoX3BvbGljeV90
ZXN0aW5nCisgICAgZ21vY2tfbWFpbgorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAg
ICBoYXNoX3BvbGljeV90cmFpdHMKKyAgSERSUworICAgICJpbnRlcm5hbC9oYXNoX3BvbGljeV90
cmFpdHMuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAg
IGFic2w6Om1ldGEKKyAgUFVCTElDCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGhh
c2hfcG9saWN5X3RyYWl0c190ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvaGFzaF9wb2xpY3lf
dHJhaXRzX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpoYXNoX3BvbGljeV90cmFpdHMKKyAgICBnbW9ja19tYWluCispCisKK2Fic2xf
Y2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGhhc2h0YWJsZXpfc2FtcGxlcgorICBIRFJTCisgICAg
ImludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5oIgorICBTUkNTCisgICAgImludGVybmFsL2hh
c2h0YWJsZXpfc2FtcGxlci5jYyIKKyAgICAiaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyX2Zv
cmNlX3dlYWtfZGVmaW5pdGlvbi5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BU
U30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpoYXZlX3NzZQorICAgIGFic2w6
OnN5bmNocm9uaXphdGlvbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBoYXNodGFi
bGV6X3NhbXBsZXJfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxl
cl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAg
YWJzbDo6aGFzaHRhYmxlel9zYW1wbGVyCisgICAgYWJzbDo6aGF2ZV9zc2UKKyAgICBnbW9ja19t
YWluCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGhhc2h0YWJsZV9kZWJ1Zwor
ICBIRFJTCisgICAgImludGVybmFsL2hhc2h0YWJsZV9kZWJ1Zy5oIgorICBDT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaHRhYmxlX2RlYnVnX2hv
b2tzCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGhhc2h0YWJsZV9kZWJ1Z19o
b29rcworICBIRFJTCisgICAgImludGVybmFsL2hhc2h0YWJsZV9kZWJ1Z19ob29rcy5oIgorICBD
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBQVUJMSUMKKykKKworYWJzbF9jY19s
aWJyYXJ5KAorICBOQU1FCisgICAgaGF2ZV9zc2UKKyAgSERSUworICAgICJpbnRlcm5hbC9oYXZl
X3NzZS5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQogKQogCithYnNsX2Nj
X2xpYnJhcnkoCisgIE5BTUUKKyAgICBub2RlX2hhc2hfcG9saWN5CisgIEhEUlMKKyAgICAiaW50
ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NP
UFRTfQorICBQVUJMSUMKKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgbm9kZV9oYXNo
X3BvbGljeV90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0
LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6
aGFzaF9wb2xpY3lfdHJhaXRzCisgICAgYWJzbDo6bm9kZV9oYXNoX3BvbGljeQorICAgIGdtb2Nr
X21haW4KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmF3X2hhc2hfbWFwCisg
IEhEUlMKKyAgICAiaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb250YWluZXJfbWVtb3J5CisgICAg
YWJzbDo6cmF3X2hhc2hfc2V0CisgICAgYWJzbDo6dGhyb3dfZGVsZWdhdGUKKyAgUFVCTElDCisp
CisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGNvbnRhaW5lcl9jb21tb24KKyAgSERS
UworICAgICJpbnRlcm5hbC9jb21tb20uaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6OnR5cGVfdHJhaXRzCispCiAKLWFic2xfdGVzdCgKLSAg
VEFSR0VUCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYXdfaGFzaF9zZXQKKyAgSERS
UworICAgICJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9y
YXdfaGFzaF9zZXQuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjpiaXRzCisgICAgYWJzbDo6Y29tcHJlc3NlZF90dXBsZQorICAgIGFic2w6
OmNvbmZpZworICAgIGFic2w6OmNvbnRhaW5lcl9jb21tb24KKyAgICBhYnNsOjpjb250YWluZXJf
bWVtb3J5CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZW5kaWFuCisgICAgYWJz
bDo6aGFzaF9wb2xpY3lfdHJhaXRzCisgICAgYWJzbDo6aGFzaHRhYmxlX2RlYnVnX2hvb2tzCisg
ICAgYWJzbDo6aGF2ZV9zc2UKKyAgICBhYnNsOjpsYXlvdXQKKyAgICBhYnNsOjptZW1vcnkKKyAg
ICBhYnNsOjptZXRhCisgICAgYWJzbDo6b3B0aW9uYWwKKyAgICBhYnNsOjp1dGlsaXR5CisgICAg
YWJzbDo6aGFzaHRhYmxlel9zYW1wbGVyCisgIFBVQkxJQworKQorCithYnNsX2NjX3Rlc3QoCisg
IE5BTUUKICAgICByYXdfaGFzaF9zZXRfdGVzdAotICBTT1VSQ0VTCisgIFNSQ1MKICAgICAiaW50
ZXJuYWwvcmF3X2hhc2hfc2V0X3Rlc3QuY2MiCi0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNs
OjpiYXNlIGFic2w6Omhhc2ggYWJzbF90aHJvd19kZWxlZ2F0ZSB0ZXN0X2luc3RhbmNlX3RyYWNr
ZXJfbGliCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNs
Ojpjb250YWluZXJfbWVtb3J5CisgICAgYWJzbDo6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cworICAg
IGFic2w6Omhhc2hfcG9saWN5X3Rlc3RpbmcKKyAgICBhYnNsOjpoYXNodGFibGVfZGVidWcKKyAg
ICBhYnNsOjpyYXdfaGFzaF9zZXQKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFk
ZXJzCisgICAgYWJzbDo6c3RyaW5ncworICAgIGdtb2NrX21haW4KKykKKworYWJzbF9jY190ZXN0
KAorICBOQU1FCisgICAgcmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0CisgIFNSQ1MKKyAgICAi
aW50ZXJuYWwvcmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0LmNjIgorICBDT1BUUworICAgICR7
QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmF3X2hhc2hfc2V0CisgICAgYWJz
bDo6dHJhY2tlZAorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGdtb2NrX21haW4KKykKKwor
YWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgbGF5b3V0CisgIEhEUlMKKyAgICAiaW50ZXJu
YWwvbGF5b3V0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjptZXRhCisgICAgYWJzbDo6c3RyaW5n
cworICAgIGFic2w6OnNwYW4KKyAgICBhYnNsOjp1dGlsaXR5CisgIFBVQkxJQworKQorCithYnNs
X2NjX3Rlc3QoCisgIE5BTUUKKyAgICBsYXlvdXRfdGVzdAorICBTUkNTCisgICAgImludGVybmFs
L2xheW91dF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBT
CisgICAgYWJzbDo6bGF5b3V0CisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVy
cworICAgIGFic2w6OnNwYW4KKyAgICBnbW9ja19tYWluCispCisKK2Fic2xfY2NfbGlicmFyeSgK
KyAgTkFNRQorICAgIHRyYWNrZWQKKyAgSERSUworICAgICJpbnRlcm5hbC90cmFja2VkLmgiCisg
IENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIFRFU1RPTkxZCispCisKK2Fic2xfY2Nf
bGlicmFyeSgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdAorICBI
RFJTCisgICAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaF9nZW5l
cmF0b3JfdGVzdGluZworICAgIGFic2w6Omhhc2hfcG9saWN5X3Rlc3RpbmcKKyAgICBnbW9jawor
ICBURVNUT05MWQorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICB1bm9yZGVyZWRf
bWFwX2xvb2t1cF90ZXN0CisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9sb29r
dXBfdGVzdC5oIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAg
YWJzbDo6aGFzaF9nZW5lcmF0b3JfdGVzdGluZworICAgIGFic2w6Omhhc2hfcG9saWN5X3Rlc3Rp
bmcKKyAgICBnbW9jaworICBURVNUT05MWQorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUK
KyAgICB1bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdAorICBIRFJTCisgICAgImludGVybmFsL3Vu
b3JkZXJlZF9tYXBfbWVtYmVyc190ZXN0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAgIGdtb2NrCisgIFRFU1RPTkxZ
CispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9tYXBfbW9kaWZp
ZXJzX3Rlc3QKKyAgSERSUworICAgICJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190
ZXN0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNs
OjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nCisgICAgYWJzbDo6aGFzaF9wb2xpY3lfdGVzdGluZwor
ICAgIGdtb2NrCisgIFRFU1RPTkxZCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAg
IHVub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdAorICBIRFJTCisgICAgImludGVybmFsL3Vu
b3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgorICBDT1BUUworICAgICR7QUJTTF9URVNU
X0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaF9nZW5lcmF0b3JfdGVzdGluZworICAgIGFi
c2w6Omhhc2hfcG9saWN5X3Rlc3RpbmcKKyAgICBnbW9jaworICBURVNUT05MWQorKQorCithYnNs
X2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICB1bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0CisgIEhE
UlMKKyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdC5oIgorICBDT1BUUwor
ICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6aGFzaF9nZW5lcmF0b3Jf
dGVzdGluZworICAgIGFic2w6Omhhc2hfcG9saWN5X3Rlc3RpbmcKKyAgICBnbW9jaworICBURVNU
T05MWQorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICB1bm9yZGVyZWRfc2V0X21l
bWJlcnNfdGVzdAorICBIRFJTCisgICAgImludGVybmFsL3Vub3JkZXJlZF9zZXRfbWVtYmVyc190
ZXN0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNs
Ojp0eXBlX3RyYWl0cworICAgIGdtb2NrCisgIFRFU1RPTkxZCispCisKK2Fic2xfY2NfbGlicmFy
eSgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QKKyAgSERSUworICAg
ICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmgiCisgIENPUFRTCisgICAg
JHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpoYXNoX2dlbmVyYXRvcl90ZXN0
aW5nCisgICAgYWJzbDo6aGFzaF9wb2xpY3lfdGVzdGluZworICAgIGdtb2NrCisgIFRFU1RPTkxZ
CispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHVub3JkZXJlZF9zZXRfdGVzdAorICBT
UkNTCisgICAgImludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnVub3JkZXJlZF9zZXRfY29uc3Ry
dWN0b3JfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QKKyAgICBhYnNs
Ojp1bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdAorICAgIGFic2w6OnVub3JkZXJlZF9zZXRfbW9k
aWZpZXJzX3Rlc3QKKyAgICBnbW9ja19tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQor
ICAgIHVub3JkZXJlZF9tYXBfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3Vub3JkZXJlZF9t
YXBfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAg
IGFic2w6OnVub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdAorICAgIGFic2w6OnVub3JkZXJl
ZF9tYXBfbG9va3VwX3Rlc3QKKyAgICBhYnNsOjp1bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdAor
ICAgIGFic2w6OnVub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QKKyAgICBnbW9ja19tYWluCiAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvYnRyZWVfbWFwLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvYnRyZWVfbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYzNWY2Mzk0OWRmODNlZmM1ODQyMGM5NDcxMzZm
MDUwMjI2MzA4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9idHJlZV9tYXAu
aApAQCAtMCwwICsxLDcwNSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IGJ0cmVlX21hcC5oCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyBC
LXRyZWUgbWFwczogc29ydGVkIGFzc29jaWF0aXZlIGNvbnRhaW5lcnMgbWFwcGluZworLy8ga2V5
cyB0byB2YWx1ZXMuCisvLworLy8gICAgICogYGFic2w6OmJ0cmVlX21hcDw+YAorLy8gICAgICog
YGFic2w6OmJ0cmVlX211bHRpbWFwPD5gCisvLworLy8gVGhlc2UgQi10cmVlIHR5cGVzIGFyZSBz
aW1pbGFyIHRvIHRoZSBjb3JyZXNwb25kaW5nIHR5cGVzIGluIHRoZSBTVEwKKy8vIChgc3RkOjpt
YXBgIGFuZCBgc3RkOjptdWx0aW1hcGApIGFuZCBnZW5lcmFsbHkgY29uZm9ybSB0byB0aGUgU1RM
IGludGVyZmFjZXMKKy8vIG9mIHRob3NlIHR5cGVzLiBIb3dldmVyLCBiZWNhdXNlIHRoZXkgYXJl
IGltcGxlbWVudGVkIHVzaW5nIEItdHJlZXMsIHRoZXkKKy8vIGFyZSBtb3JlIGVmZmljaWVudCBp
biBtb3N0IHNpdHVhdGlvbnMuCisvLworLy8gVW5saWtlIGBzdGQ6Om1hcGAgYW5kIGBzdGQ6Om11
bHRpbWFwYCwgd2hpY2ggYXJlIGNvbW1vbmx5IGltcGxlbWVudGVkIHVzaW5nCisvLyByZWQtYmxh
Y2sgdHJlZSBub2RlcywgQi10cmVlIG1hcHMgdXNlIG1vcmUgZ2VuZXJpYyBCLXRyZWUgbm9kZXMg
YWJsZSB0byBob2xkCisvLyBtdWx0aXBsZSB2YWx1ZXMgcGVyIG5vZGUuIEhvbGRpbmcgbXVsdGlw
bGUgdmFsdWVzIHBlciBub2RlIG9mdGVuIG1ha2VzCisvLyBCLXRyZWUgbWFwcyBwZXJmb3JtIGJl
dHRlciB0aGFuIHRoZWlyIGBzdGQ6Om1hcGAgY291bnRlcnBhcnRzLCBiZWNhdXNlCisvLyBtdWx0
aXBsZSBlbnRyaWVzIGNhbiBiZSBjaGVja2VkIHdpdGhpbiB0aGUgc2FtZSBjYWNoZSBoaXQuCisv
LworLy8gSG93ZXZlciwgdGhlc2UgdHlwZXMgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIGRyb3At
aW4gcmVwbGFjZW1lbnRzIGZvcgorLy8gYHN0ZDo6bWFwYCBhbmQgYHN0ZDo6bXVsdGltYXBgIGFz
IHRoZXJlIGFyZSBzb21lIEFQSSBkaWZmZXJlbmNlcywgd2hpY2ggYXJlCisvLyBub3RlZCBpbiB0
aGlzIGhlYWRlciBmaWxlLgorLy8KKy8vIEltcG9ydGFudGx5LCBpbnNlcnRpb25zIGFuZCBkZWxl
dGlvbnMgbWF5IGludmFsaWRhdGUgb3V0c3RhbmRpbmcgaXRlcmF0b3JzLAorLy8gcG9pbnRlcnMs
IGFuZCByZWZlcmVuY2VzIHRvIGVsZW1lbnRzLiBTdWNoIGludmFsaWRhdGlvbnMgYXJlIHR5cGlj
YWxseSBvbmx5CisvLyBhbiBpc3N1ZSBpZiBpbnNlcnRpb24gYW5kIGRlbGV0aW9uIG9wZXJhdGlv
bnMgYXJlIGludGVybGVhdmVkIHdpdGggdGhlIHVzZSBvZgorLy8gbW9yZSB0aGFuIG9uZSBpdGVy
YXRvciwgcG9pbnRlciwgb3IgcmVmZXJlbmNlIHNpbXVsdGFuZW91c2x5LiBGb3IgdGhpcworLy8g
cmVhc29uLCBgaW5zZXJ0KClgIGFuZCBgZXJhc2UoKWAgcmV0dXJuIGEgdmFsaWQgaXRlcmF0b3Ig
YXQgdGhlIGN1cnJlbnQKKy8vIHBvc2l0aW9uLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0JU
UkVFX01BUF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9CVFJFRV9NQVBfSF8KKworI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2J0cmVlLmgiICAvLyBJV1lVIHByYWdtYTogZXhw
b3J0CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvYnRyZWVfY29udGFpbmVyLmgi
ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisKK25hbWVzcGFjZSBhYnNsIHsKKworLy8gYWJzbDo6
YnRyZWVfbWFwPD4KKy8vCisvLyBBbiBgYWJzbDo6YnRyZWVfbWFwPEssIFY+YCBpcyBhbiBvcmRl
cmVkIGFzc29jaWF0aXZlIGNvbnRhaW5lciBvZgorLy8gdW5pcXVlIGtleXMgYW5kIGFzc29jaWF0
ZWQgdmFsdWVzIGRlc2lnbmVkIHRvIGJlIGEgbW9yZSBlZmZpY2llbnQgcmVwbGFjZW1lbnQKKy8v
IGZvciBgc3RkOjptYXBgIChpbiBtb3N0IGNhc2VzKS4KKy8vCisvLyBLZXlzIGFyZSBzb3J0ZWQg
dXNpbmcgYW4gKG9wdGlvbmFsKSBjb21wYXJpc29uIGZ1bmN0aW9uLCB3aGljaCBkZWZhdWx0cyB0
bworLy8gYHN0ZDo6bGVzczxLPmAuCisvLworLy8gQW4gYGFic2w6OmJ0cmVlX21hcDxLLCBWPmAg
dXNlcyBhIGRlZmF1bHQgYWxsb2NhdG9yIG9mCisvLyBgc3RkOjphbGxvY2F0b3I8c3RkOjpwYWly
PGNvbnN0IEssIFY+PmAgdG8gYWxsb2NhdGUgKGFuZCBkZWFsbG9jYXRlKQorLy8gbm9kZXMsIGFu
ZCBjb25zdHJ1Y3QgYW5kIGRlc3RydWN0IHZhbHVlcyB3aXRoaW4gdGhvc2Ugbm9kZXMuIFlvdSBt
YXkKKy8vIGluc3RlYWQgc3BlY2lmeSBhIGN1c3RvbSBhbGxvY2F0b3IgYEFgICh3aGljaCBpbiB0
dXJuIHJlcXVpcmVzIHNwZWNpZnlpbmcgYQorLy8gY3VzdG9tIGNvbXBhcmF0b3IgYENgKSBhcyBp
biBgYWJzbDo6YnRyZWVfbWFwPEssIFYsIEMsIEE+YC4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgQ29tcGFyZSA9IHN0ZDo6bGVzczxLZXk+LAor
ICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8c3RkOjpwYWlyPGNvbnN0
IEtleSwgVmFsdWU+Pj4KK2NsYXNzIGJ0cmVlX21hcAorICAgIDogcHVibGljIGNvbnRhaW5lcl9p
bnRlcm5hbDo6YnRyZWVfbWFwX2NvbnRhaW5lcjwKKyAgICAgICAgICBjb250YWluZXJfaW50ZXJu
YWw6OmJ0cmVlPGNvbnRhaW5lcl9pbnRlcm5hbDo6bWFwX3BhcmFtczwKKyAgICAgICAgICAgICAg
S2V5LCBWYWx1ZSwgQ29tcGFyZSwgQWxsb2MsIC8qVGFyZ2V0Tm9kZVNpemU9Ki8yNTYsCisgICAg
ICAgICAgICAgIC8qTXVsdGk9Ki9mYWxzZT4+PiB7CisgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBi
dHJlZV9tYXA6OmJ0cmVlX21hcF9jb250YWluZXI7CisKKyBwdWJsaWM6CisgIC8vIENvbnN0cnVj
dG9ycyBhbmQgQXNzaWdubWVudCBPcGVyYXRvcnMKKyAgLy8KKyAgLy8gQSBgYnRyZWVfbWFwYCBz
dXBwb3J0cyB0aGUgc2FtZSBvdmVybG9hZCBzZXQgYXMgYHN0ZDo6bWFwYAorICAvLyBmb3IgY29u
c3RydWN0aW9uIGFuZCBhc3NpZ25tZW50OgorICAvLworICAvLyAqIERlZmF1bHQgY29uc3RydWN0
b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpidHJlZV9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwMTsK
KyAgLy8KKyAgLy8gKiBJbml0aWFsaXplciBMaXN0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAg
YWJzbDo6YnRyZWVfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDIgPQorICAvLyAgICAgICB7ezEs
ICJodWV5In0sIHsyLCAiZGV3ZXkifSwgezMsICJsb3VpZSJ9LH07CisgIC8vCisgIC8vICogQ29w
eSBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIGFic2w6OmJ0cmVlX21hcDxpbnQsIHN0ZDo6c3Ry
aW5nPiBtYXAzKG1hcDIpOworICAvLworICAvLyAqIENvcHkgYXNzaWdubWVudCBvcGVyYXRvcgor
ICAvLworICAvLyAgYWJzbDo6YnRyZWVfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDQ7CisgIC8v
ICBtYXA0ID0gbWFwMzsKKyAgLy8KKyAgLy8gKiBNb3ZlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8v
ICAgLy8gTW92ZSBpcyBndWFyYW50ZWVkIGVmZmljaWVudAorICAvLyAgIGFic2w6OmJ0cmVlX21h
cDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXA1KHN0ZDo6bW92ZShtYXA0KSk7CisgIC8vCisgIC8vICog
TW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisgIC8vICAgLy8gTWF5IGJlIGVmZmljaWVu
dCBpZiBhbGxvY2F0b3JzIGFyZSBjb21wYXRpYmxlCisgIC8vICAgYWJzbDo6YnRyZWVfbWFwPGlu
dCwgc3RkOjpzdHJpbmc+IG1hcDY7CisgIC8vICAgbWFwNiA9IHN0ZDo6bW92ZShtYXA1KTsKKyAg
Ly8KKyAgLy8gKiBSYW5nZSBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIHN0ZDo6dmVjdG9yPHN0
ZDo6cGFpcjxpbnQsIHN0ZDo6c3RyaW5nPj4gdiA9IHt7MSwgImEifSwgezIsICJiIn19OworICAv
LyAgIGFic2w6OmJ0cmVlX21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXA3KHYuYmVnaW4oKSwgdi5l
bmQoKSk7CisgIGJ0cmVlX21hcCgpIHt9CisgIHVzaW5nIEJhc2U6OkJhc2U7CisKKyAgLy8gYnRy
ZWVfbWFwOjpiZWdpbigpCisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGJl
Z2lubmluZyBvZiB0aGUgYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OmJlZ2luOworCisgIC8v
IGJ0cmVlX21hcDo6Y2JlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9y
IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBidHJlZV9tYXBgLgorICB1c2luZyBCYXNlOjpjYmVn
aW47CisKKyAgLy8gYnRyZWVfbWFwOjplbmQoKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJh
dG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBidHJlZV9tYXBgLgorICB1c2luZyBCYXNlOjplbmQ7CisK
KyAgLy8gYnRyZWVfbWFwOjpjZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJh
dG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBidHJlZV9tYXBgLgorICB1c2luZyBCYXNlOjpjZW5kOwor
CisgIC8vIGJ0cmVlX21hcDo6ZW1wdHkoKQorICAvLworICAvLyBSZXR1cm5zIHdoZXRoZXIgb3Ig
bm90IHRoZSBgYnRyZWVfbWFwYCBpcyBlbXB0eS4KKyAgdXNpbmcgQmFzZTo6ZW1wdHk7CisKKyAg
Ly8gYnRyZWVfbWFwOjptYXhfc2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGxhcmdlc3Qg
dGhlb3JldGljYWwgcG9zc2libGUgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGhpbiBhCisgIC8vIGBi
dHJlZV9tYXBgIHVuZGVyIGN1cnJlbnQgbWVtb3J5IGNvbnN0cmFpbnRzLiBUaGlzIHZhbHVlIGNh
biBiZSB0aG91Z2h0CisgIC8vIG9mIGFzIHRoZSBsYXJnZXN0IHZhbHVlIG9mIGBzdGQ6OmRpc3Rh
bmNlKGJlZ2luKCksIGVuZCgpKWAgZm9yIGEKKyAgLy8gYGJ0cmVlX21hcDxLZXksIFQ+YC4KKyAg
dXNpbmcgQmFzZTo6bWF4X3NpemU7CisKKyAgLy8gYnRyZWVfbWFwOjpzaXplKCkKKyAgLy8KKyAg
Ly8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1cnJlbnRseSB3aXRoaW4gdGhlIGBi
dHJlZV9tYXBgLgorICB1c2luZyBCYXNlOjpzaXplOworCisgIC8vIGJ0cmVlX21hcDo6Y2xlYXIo
KQorICAvLworICAvLyBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBgYnRyZWVfbWFwYC4g
SW52YWxpZGF0ZXMgYW55IHJlZmVyZW5jZXMsCisgIC8vIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMg
cmVmZXJyaW5nIHRvIGNvbnRhaW5lZCBlbGVtZW50cy4KKyAgdXNpbmcgQmFzZTo6Y2xlYXI7CisK
KyAgLy8gYnRyZWVfbWFwOjplcmFzZSgpCisgIC8vCisgIC8vIEVyYXNlcyBlbGVtZW50cyB3aXRo
aW4gdGhlIGBidHJlZV9tYXBgLiBJZiBhbiBlcmFzZSBvY2N1cnMsIGFueSByZWZlcmVuY2VzLAor
ICAvLyBwb2ludGVycywgb3IgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgLy8gT3Zlcmxv
YWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9y
IHBvc2l0aW9uKToKKyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24p
OgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCBhdCBgcG9zaXRpb25gIG9mIHRoZSBg
YnRyZWVfbWFwYCwgcmV0dXJuaW5nCisgIC8vICAgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRo
ZSBlbGVtZW50IGFmdGVyIHRoZSBvbmUgdGhhdCB3YXMgZXJhc2VkCisgIC8vICAgKG9yIGVuZCgp
IGlmIG5vbmUgZXhpc3RzKS4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0
b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUg
ZWxlbWVudHMgaW4gdGhlIG9wZW4gaW50ZXJ2YWwgW2BmaXJzdGAsIGBsYXN0YCksIHJldHVybmlu
ZworICAvLyAgIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZWxlbWVudCBhZnRlciB0aGUg
aW50ZXJ2YWwgdGhhdCB3YXMgZXJhc2VkCisgIC8vICAgKG9yIGVuZCgpIGlmIG5vbmUgZXhpc3Rz
KS4KKyAgLy8KKyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+IHNpemVfdHlwZSBlcmFzZShjb25z
dCBLJiBrZXkpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCB3aXRoIHRoZSBtYXRj
aGluZyBrZXksIGlmIGl0IGV4aXN0cywgcmV0dXJuaW5nIHRoZQorICAvLyAgIG51bWJlciBvZiBl
bGVtZW50cyBlcmFzZWQuCisgIHVzaW5nIEJhc2U6OmVyYXNlOworCisgIC8vIGJ0cmVlX21hcDo6
aW5zZXJ0KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQg
dmFsdWUgaW50byB0aGUgYGJ0cmVlX21hcGAsCisgIC8vIHJldHVybmluZyBhbiBpdGVyYXRvciBw
b2ludGluZyB0byB0aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudCwgcHJvdmlkZWQgdGhhdAorICAv
LyBhbiBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LiBJ
ZiBhbiBpbnNlcnRpb24KKyAgLy8gb2NjdXJzLCBhbnkgcmVmZXJlbmNlcywgcG9pbnRlcnMsIG9y
IGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIC8vIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJl
bG93LgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KGNvbnN0IHZh
bHVlX3R5cGUmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUg
YGJ0cmVlX21hcGAuIFJldHVybnMgYSBwYWlyIGNvbnNpc3Rpbmcgb2YgYW4KKyAgLy8gICBpdGVy
YXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhlIGVsZW1lbnQgdGhhdCBwcmV2
ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uKSBhbmQgYSBib29sIGRlbm90aW5nIHdoZXRoZXIg
dGhlIGluc2VydGlvbiB0b29rIHBsYWNlLgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3Is
Ym9vbD4gaW5zZXJ0KHZhbHVlX3R5cGUmJiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBh
IG1vdmVhYmxlIHZhbHVlIGludG8gdGhlIGBidHJlZV9tYXBgLiBSZXR1cm5zIGEgcGFpcgorICAv
LyAgIGNvbnNpc3Rpbmcgb2YgYW4gaXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9y
IHRvIHRoZSBlbGVtZW50IHRoYXQKKyAgLy8gICBwcmV2ZW50ZWQgdGhlIGluc2VydGlvbikgYW5k
IGEgYm9vbCBkZW5vdGluZyB3aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9vaworICAvLyAgIHBsYWNl
LgorICAvLworICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgY29uc3Qg
dmFsdWVfdHlwZSYgdmFsdWUpOgorICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3Ig
aGludCwgdmFsdWVfdHlwZSYmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUs
IHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZyBzdWdnZXN0aW9u
CisgIC8vICAgZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLiBSZXR1cm5z
IGFuIGl0ZXJhdG9yIHRvIHRoZQorICAvLyAgIGluc2VydGVkIGVsZW1lbnQsIG9yIHRvIHRoZSBl
eGlzdGluZyBlbGVtZW50IHRoYXQgcHJldmVudGVkIHRoZQorICAvLyAgIGluc2VydGlvbi4KKyAg
Ly8KKyAgLy8gdm9pZCBpbnNlcnQoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBs
YXN0KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgcmFuZ2Ugb2YgdmFsdWVzIFtgZmlyc3RgLCBg
bGFzdGApLgorICAvLworICAvLyB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW5p
dF90eXBlPiBpbGlzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyB0aGUgZWxlbWVudHMgd2l0aGlu
IHRoZSBpbml0aWFsaXplciBsaXN0IGBpbGlzdGAuCisgIHVzaW5nIEJhc2U6Omluc2VydDsKKwor
ICAvLyBidHJlZV9tYXA6OmVtcGxhY2UoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQg
b2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8g
d2l0aGluIHRoZSBgYnRyZWVfbWFwYCwgcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50IHdpdGggdGhl
IGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8gVGhlIGVsZW1lbnQg
bWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBlbGVtZW50IHdp
dGggdGhlCisgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIHRoZSBuZXds
eSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5
LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBub3QKKyAgLy8gY29w
eWFibGUgb3IgbW92ZWFibGUuCisgIC8vCisgIC8vIElmIGFuIGluc2VydGlvbiBvY2N1cnMsIGFu
eSByZWZlcmVuY2VzLCBwb2ludGVycywgb3IgaXRlcmF0b3JzIGFyZQorICAvLyBpbnZhbGlkYXRl
ZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZTsKKworICAvLyBidHJlZV9tYXA6OmVtcGxhY2VfaGlu
dCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVl
IGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBidHJlZV9tYXBg
LCB1c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFzIGEgbm9uLWJpbmRpbmcKKyAgLy8gc3Vn
Z2VzdGlvbiBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2gsIGFuZCBvbmx5
IGluc2VydHMKKyAgLy8gcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtl
eSBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8gVGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVj
dGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBlbGVtZW50IHdpdGggdGhlCisgIC8vIGtl
eSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBl
bGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9l
bXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBub3QKKyAgLy8gY29weWFibGUgb3IgbW92ZWFi
bGUuCisgIC8vCisgIC8vIElmIGFuIGluc2VydGlvbiBvY2N1cnMsIGFueSByZWZlcmVuY2VzLCBw
b2ludGVycywgb3IgaXRlcmF0b3JzIGFyZQorICAvLyBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFz
ZTo6ZW1wbGFjZV9oaW50OworCisgIC8vIGJ0cmVlX21hcDo6dHJ5X2VtcGxhY2UoKQorICAvLwor
ICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1
Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgYnRyZWVfbWFwYCwgcHJvdmlkZWQg
dGhhdCBubyBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4g
VW5saWtlIGBlbXBsYWNlKClgLCBpZiBhbiBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAv
LyBhbHJlYWR5IGV4aXN0cywgd2UgZ3VhcmFudGVlIHRoYXQgbm8gZWxlbWVudCBpcyBjb25zdHJ1
Y3RlZC4KKyAgLy8KKyAgLy8gSWYgYW4gaW5zZXJ0aW9uIG9jY3VycywgYW55IHJlZmVyZW5jZXMs
IHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlCisgIC8vIGludmFsaWRhdGVkLgorICAvLworICAv
LyBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gICBzdGQ6OnBhaXI8aXRl
cmF0b3IsIGJvb2w+IHRyeV9lbXBsYWNlKGNvbnN0IGtleV90eXBlJiBrLCBBcmdzJiYuLi4gYXJn
cyk6CisgIC8vICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiB0cnlfZW1wbGFjZShrZXlfdHlw
ZSYmIGssIEFyZ3MmJi4uLiBhcmdzKToKKyAgLy8KKyAgLy8gSW5zZXJ0cyAodmlhIGNvcHkgb3Ig
bW92ZSkgdGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW50byB0aGUKKyAgLy8gYGJ0
cmVlX21hcGAuCisgIC8vCisgIC8vICAgaXRlcmF0b3IgdHJ5X2VtcGxhY2UoY29uc3RfaXRlcmF0
b3IgaGludCwKKyAgLy8gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlfdHlwZSYgaywg
QXJncyYmLi4uIGFyZ3MpOgorICAvLyAgIGl0ZXJhdG9yIHRyeV9lbXBsYWNlKGNvbnN0X2l0ZXJh
dG9yIGhpbnQsIGtleV90eXBlJiYgaywgQXJncyYmLi4uIGFyZ3MpOgorICAvLworICAvLyBJbnNl
cnRzICh2aWEgY29weSBvciBtb3ZlKSB0aGUgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIGtleSBp
bnRvIHRoZQorICAvLyBgYnRyZWVfbWFwYCB1c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFz
IGEgbm9uLWJpbmRpbmcgc3VnZ2VzdGlvbgorICAvLyBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGlu
c2VydGlvbiBzZWFyY2guCisgIHVzaW5nIEJhc2U6OnRyeV9lbXBsYWNlOworCisgIC8vIGJ0cmVl
X21hcDo6ZXh0cmFjdCgpCisgIC8vCisgIC8vIEV4dHJhY3RzIHRoZSBpbmRpY2F0ZWQgZWxlbWVu
dCwgZXJhc2luZyBpdCBpbiB0aGUgcHJvY2VzcywgYW5kIHJldHVybnMgaXQKKyAgLy8gYXMgYSBD
KysxNy1jb21wYXRpYmxlIG5vZGUgaGFuZGxlLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4K
KyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3QoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pOgor
ICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBlbGVtZW50IGF0IHRoZSBpbmRpY2F0ZWQgcG9zaXRp
b24gYW5kIHJldHVybnMgYSBub2RlIGhhbmRsZQorICAvLyAgIG93bmluZyB0aGF0IGV4dHJhY3Rl
ZCBkYXRhLgorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gbm9kZV90eXBlIGV4dHJh
Y3QoY29uc3QgSyYgeCk6CisgIC8vCisgIC8vICAgRXh0cmFjdHMgdGhlIGVsZW1lbnQgd2l0aCB0
aGUga2V5IG1hdGNoaW5nIHRoZSBwYXNzZWQga2V5IHZhbHVlIGFuZAorICAvLyAgIHJldHVybnMg
YSBub2RlIGhhbmRsZSBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4gSWYgdGhlIGBidHJlZV9t
YXBgCisgIC8vICAgZG9lcyBub3QgY29udGFpbiBhbiBlbGVtZW50IHdpdGggYSBtYXRjaGluZyBr
ZXksIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbgorICAvLyAgIGVtcHR5IG5vZGUgaGFuZGxlLgor
ICAvLworICAvLyBOT1RFOiBJbiB0aGlzIGNvbnRleHQsIGBub2RlX3R5cGVgIHJlZmVycyB0byB0
aGUgQysrMTcgY29uY2VwdCBvZiBhCisgIC8vIG1vdmUtb25seSB0eXBlIHRoYXQgb3ducyBhbmQg
cHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBlbGVtZW50cyBpbiBhc3NvY2lhdGl2ZQorICAvLyBjb250
YWluZXJzIChodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvY29udGFpbmVyL25vZGVf
aGFuZGxlKS4KKyAgLy8gSXQgZG9lcyBOT1QgcmVmZXIgdG8gdGhlIGRhdGEgbGF5b3V0IG9mIHRo
ZSB1bmRlcmx5aW5nIGJ0cmVlLgorICB1c2luZyBCYXNlOjpleHRyYWN0OworCisgIC8vIGJ0cmVl
X21hcDo6bWVyZ2UoKQorICAvLworICAvLyBFeHRyYWN0cyBlbGVtZW50cyBmcm9tIGEgZ2l2ZW4g
YHNvdXJjZWAgYnRyZWVfbWFwIGludG8gdGhpcworICAvLyBgYnRyZWVfbWFwYC4gSWYgdGhlIGRl
c3RpbmF0aW9uIGBidHJlZV9tYXBgIGFscmVhZHkgY29udGFpbnMgYW4KKyAgLy8gZWxlbWVudCB3
aXRoIGFuIGVxdWl2YWxlbnQga2V5LCB0aGF0IGVsZW1lbnQgaXMgbm90IGV4dHJhY3RlZC4KKyAg
dXNpbmcgQmFzZTo6bWVyZ2U7CisKKyAgLy8gYnRyZWVfbWFwOjpzd2FwKGJ0cmVlX21hcCYgb3Ro
ZXIpCisgIC8vCisgIC8vIEV4Y2hhbmdlcyB0aGUgY29udGVudHMgb2YgdGhpcyBgYnRyZWVfbWFw
YCB3aXRoIHRob3NlIG9mIHRoZSBgb3RoZXJgCisgIC8vIGJ0cmVlX21hcCwgYXZvaWRpbmcgaW52
b2NhdGlvbiBvZiBhbnkgbW92ZSwgY29weSwgb3Igc3dhcCBvcGVyYXRpb25zIG9uCisgIC8vIGlu
ZGl2aWR1YWwgZWxlbWVudHMuCisgIC8vCisgIC8vIEFsbCBpdGVyYXRvcnMgYW5kIHJlZmVyZW5j
ZXMgb24gdGhlIGBidHJlZV9tYXBgIHJlbWFpbiB2YWxpZCwgZXhjZXB0aW5nCisgIC8vIGZvciB0
aGUgcGFzdC10aGUtZW5kIGl0ZXJhdG9yLCB3aGljaCBpcyBpbnZhbGlkYXRlZC4KKyAgdXNpbmcg
QmFzZTo6c3dhcDsKKworICAvLyBidHJlZV9tYXA6OmF0KCkKKyAgLy8KKyAgLy8gUmV0dXJucyBh
IHJlZmVyZW5jZSB0byB0aGUgbWFwcGVkIHZhbHVlIG9mIHRoZSBlbGVtZW50IHdpdGgga2V5IGVx
dWl2YWxlbnQKKyAgLy8gdG8gdGhlIHBhc3NlZCBrZXkuCisgIHVzaW5nIEJhc2U6OmF0OworCisg
IC8vIGJ0cmVlX21hcDo6Y29udGFpbnMoKQorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Sz4gYm9vbCBjb250YWlucyhjb25zdCBLJiBrZXkpIGNvbnN0OgorICAvLworICAvLyBEZXRlcm1p
bmVzIHdoZXRoZXIgYW4gZWxlbWVudCBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlg
IGV4aXN0cworICAvLyB3aXRoaW4gdGhlIGBidHJlZV9tYXBgLCByZXR1cm5pbmcgYHRydWVgIGlm
IHNvIG9yIGBmYWxzZWAgb3RoZXJ3aXNlLgorICAvLworICAvLyBTdXBwb3J0cyBoZXRlcm9nZW5l
b3VzIGxvb2t1cCwgcHJvdmlkZWQgdGhhdCB0aGUgbWFwIGlzIHByb3ZpZGVkIGEKKyAgLy8gY29t
cGF0aWJsZSBoZXRlcm9nZW5lb3VzIGNvbXBhcmF0b3IuCisgIHVzaW5nIEJhc2U6OmNvbnRhaW5z
OworCisgIC8vIGJ0cmVlX21hcDo6Y291bnQoKQorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSz4gc2l6ZV90eXBlIGNvdW50KGNvbnN0IEsmIGtleSkgY29uc3Q6CisgIC8vCisgIC8vIFJl
dHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVu
IGBrZXlgIHdpdGhpbgorICAvLyB0aGUgYGJ0cmVlX21hcGAuIE5vdGUgdGhhdCB0aGlzIGZ1bmN0
aW9uIHdpbGwgcmV0dXJuIGVpdGhlciBgMWAgb3IgYDBgCisgIC8vIHNpbmNlIGR1cGxpY2F0ZSBl
bGVtZW50cyBhcmUgbm90IGFsbG93ZWQgd2l0aGluIGEgYGJ0cmVlX21hcGAuCisgIC8vCisgIC8v
IFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92aWRlZCB0aGF0IHRoZSBtYXAgaXMg
cHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMgY29tcGFyYXRvci4KKyAg
dXNpbmcgQmFzZTo6Y291bnQ7CisKKyAgLy8gYnRyZWVfbWFwOjplcXVhbF9yYW5nZSgpCisgIC8v
CisgIC8vIFJldHVybnMgYSBjbG9zZWQgcmFuZ2UgW2ZpcnN0LCBsYXN0XSwgZGVmaW5lZCBieSBh
IGBzdGQ6OnBhaXJgIG9mIHR3bworICAvLyBpdGVyYXRvcnMsIGNvbnRhaW5pbmcgYWxsIGVsZW1l
bnRzIHdpdGggdGhlIHBhc3NlZCBrZXkgaW4gdGhlCisgIC8vIGBidHJlZV9tYXBgLgorICB1c2lu
ZyBCYXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBidHJlZV9tYXA6OmZpbmQoKQorICAvLworICAv
LyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gaXRlcmF0b3IgZmluZChjb25zdCBLJiBrZXkpOgorICAv
LyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLJiBrZXkp
IGNvbnN0OgorICAvLworICAvLyBGaW5kcyBhbiBlbGVtZW50IHdpdGggdGhlIHBhc3NlZCBga2V5
YCB3aXRoaW4gdGhlIGBidHJlZV9tYXBgLgorICAvLworICAvLyBTdXBwb3J0cyBoZXRlcm9nZW5l
b3VzIGxvb2t1cCwgcHJvdmlkZWQgdGhhdCB0aGUgbWFwIGlzIHByb3ZpZGVkIGEKKyAgLy8gY29t
cGF0aWJsZSBoZXRlcm9nZW5lb3VzIGNvbXBhcmF0b3IuCisgIHVzaW5nIEJhc2U6OmZpbmQ7CisK
KyAgLy8gYnRyZWVfbWFwOjpvcGVyYXRvcltdKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIHJlZmVy
ZW5jZSB0byB0aGUgdmFsdWUgbWFwcGVkIHRvIHRoZSBwYXNzZWQga2V5IHdpdGhpbiB0aGUKKyAg
Ly8gYGJ0cmVlX21hcGAsIHBlcmZvcm1pbmcgYW4gYGluc2VydCgpYCBpZiB0aGUga2V5IGRvZXMg
bm90IGFscmVhZHkKKyAgLy8gZXhpc3QuCisgIC8vCisgIC8vIElmIGFuIGluc2VydGlvbiBvY2N1
cnMsIGFueSByZWZlcmVuY2VzLCBwb2ludGVycywgb3IgaXRlcmF0b3JzIGFyZQorICAvLyBpbnZh
bGlkYXRlZC4gT3RoZXJ3aXNlIGl0ZXJhdG9ycyBhcmUgbm90IGFmZmVjdGVkIGFuZCByZWZlcmVu
Y2VzIGFyZSBub3QKKyAgLy8gaW52YWxpZGF0ZWQuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93
LgorICAvLworICAvLyBUJiBvcGVyYXRvcltdKGtleV90eXBlJiYga2V5KToKKyAgLy8gVCYgb3Bl
cmF0b3JbXShjb25zdCBrZXlfdHlwZSYga2V5KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFs
dWVfdHlwZSBvYmplY3QgY29uc3RydWN0ZWQgaW4tcGxhY2UgaWYgdGhlIGVsZW1lbnQgd2l0aCB0
aGUKKyAgLy8gICBnaXZlbiBrZXkgZG9lcyBub3QgZXhpc3QuCisgIHVzaW5nIEJhc2U6Om9wZXJh
dG9yW107CisKKyAgLy8gYnRyZWVfbWFwOjpnZXRfYWxsb2NhdG9yKCkKKyAgLy8KKyAgLy8gUmV0
dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJlZV9t
YXBgLgorICB1c2luZyBCYXNlOjpnZXRfYWxsb2NhdG9yOworCisgIC8vIGJ0cmVlX21hcDo6a2V5
X2NvbXAoKTsKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUga2V5IGNvbXBhcmF0b3IgYXNzb2NpYXRl
ZCB3aXRoIHRoaXMgYGJ0cmVlX21hcGAuCisgIHVzaW5nIEJhc2U6OmtleV9jb21wOworCisgIC8v
IGJ0cmVlX21hcDo6dmFsdWVfY29tcCgpOworICAvLworICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBj
b21wYXJhdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJlZV9tYXBgLgorICB1c2luZyBCYXNl
Ojp2YWx1ZV9jb21wOworfTsKKworLy8gYWJzbDo6c3dhcChhYnNsOjpidHJlZV9tYXA8PiwgYWJz
bDo6YnRyZWVfbWFwPD4pCisvLworLy8gU3dhcHMgdGhlIGNvbnRlbnRzIG9mIHR3byBgYWJzbDo6
YnRyZWVfbWFwYCBjb250YWluZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIEMsIHR5cGVuYW1lIEE+Cit2b2lkIHN3YXAoYnRyZWVfbWFwPEssIFYsIEMsIEE+
ICZ4LCBidHJlZV9tYXA8SywgViwgQywgQT4gJnkpIHsKKyAgcmV0dXJuIHguc3dhcCh5KTsKK30K
KworLy8gYWJzbDo6YnRyZWVfbXVsdGltYXAKKy8vCisvLyBBbiBgYWJzbDo6YnRyZWVfbXVsdGlt
YXA8SywgVj5gIGlzIGFuIG9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIG9mCisvLyBrZXlz
IGFuZCBhc3NvY2lhdGVkIHZhbHVlcyBkZXNpZ25lZCB0byBiZSBhIG1vcmUgZWZmaWNpZW50IHJl
cGxhY2VtZW50IGZvcgorLy8gYHN0ZDo6bXVsdGltYXBgIChpbiBtb3N0IGNhc2VzKS4gVW5saWtl
IGBhYnNsOjpidHJlZV9tYXBgLCBhIEItdHJlZSBtdWx0aW1hcAorLy8gYWxsb3dzIG11bHRpcGxl
IGVsZW1lbnRzIHdpdGggZXF1aXZhbGVudCBrZXlzLgorLy8KKy8vIEtleXMgYXJlIHNvcnRlZCB1
c2luZyBhbiAob3B0aW9uYWwpIGNvbXBhcmlzb24gZnVuY3Rpb24sIHdoaWNoIGRlZmF1bHRzIHRv
CisvLyBgc3RkOjpsZXNzPEs+YC4KKy8vCisvLyBBbiBgYWJzbDo6YnRyZWVfbXVsdGltYXA8Sywg
Vj5gIHVzZXMgYSBkZWZhdWx0IGFsbG9jYXRvciBvZgorLy8gYHN0ZDo6YWxsb2NhdG9yPHN0ZDo6
cGFpcjxjb25zdCBLLCBWPj5gIHRvIGFsbG9jYXRlIChhbmQgZGVhbGxvY2F0ZSkKKy8vIG5vZGVz
LCBhbmQgY29uc3RydWN0IGFuZCBkZXN0cnVjdCB2YWx1ZXMgd2l0aGluIHRob3NlIG5vZGVzLiBZ
b3UgbWF5CisvLyBpbnN0ZWFkIHNwZWNpZnkgYSBjdXN0b20gYWxsb2NhdG9yIGBBYCAod2hpY2gg
aW4gdHVybiByZXF1aXJlcyBzcGVjaWZ5aW5nIGEKKy8vIGN1c3RvbSBjb21wYXJhdG9yIGBDYCkg
YXMgaW4gYGFic2w6OmJ0cmVlX211bHRpbWFwPEssIFYsIEMsIEE+YC4KKy8vCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgQ29tcGFyZSA9IHN0ZDo6bGVz
czxLZXk+LAorICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8c3RkOjpw
YWlyPGNvbnN0IEtleSwgVmFsdWU+Pj4KK2NsYXNzIGJ0cmVlX211bHRpbWFwCisgICAgOiBwdWJs
aWMgY29udGFpbmVyX2ludGVybmFsOjpidHJlZV9tdWx0aW1hcF9jb250YWluZXI8CisgICAgICAg
ICAgY29udGFpbmVyX2ludGVybmFsOjpidHJlZTxjb250YWluZXJfaW50ZXJuYWw6Om1hcF9wYXJh
bXM8CisgICAgICAgICAgICAgIEtleSwgVmFsdWUsIENvbXBhcmUsIEFsbG9jLCAvKlRhcmdldE5v
ZGVTaXplPSovMjU2LAorICAgICAgICAgICAgICAvKk11bHRpPSovdHJ1ZT4+PiB7CisgIHVzaW5n
IEJhc2UgPSB0eXBlbmFtZSBidHJlZV9tdWx0aW1hcDo6YnRyZWVfbXVsdGltYXBfY29udGFpbmVy
OworCisgcHVibGljOgorICAvLyBDb25zdHJ1Y3RvcnMgYW5kIEFzc2lnbm1lbnQgT3BlcmF0b3Jz
CisgIC8vCisgIC8vIEEgYGJ0cmVlX211bHRpbWFwYCBzdXBwb3J0cyB0aGUgc2FtZSBvdmVybG9h
ZCBzZXQgYXMgYHN0ZDo6bXVsdGltYXBgCisgIC8vIGZvciBjb25zdHJ1Y3Rpb24gYW5kIGFzc2ln
bm1lbnQ6CisgIC8vCisgIC8vICogRGVmYXVsdCBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIGFi
c2w6OmJ0cmVlX211bHRpbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDE7CisgIC8vCisgIC8vICog
SW5pdGlhbGl6ZXIgTGlzdCBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIGFic2w6OmJ0cmVlX211
bHRpbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDIgPQorICAvLyAgICAgICB7ezEsICJodWV5In0s
IHsyLCAiZGV3ZXkifSwgezMsICJsb3VpZSJ9LH07CisgIC8vCisgIC8vICogQ29weSBjb25zdHJ1
Y3RvcgorICAvLworICAvLyAgIGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgc3RkOjpzdHJpbmc+
IG1hcDMobWFwMik7CisgIC8vCisgIC8vICogQ29weSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8v
CisgIC8vICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXA0OworICAv
LyAgbWFwNCA9IG1hcDM7CisgIC8vCisgIC8vICogTW92ZSBjb25zdHJ1Y3RvcgorICAvLworICAv
LyAgIC8vIE1vdmUgaXMgZ3VhcmFudGVlZCBlZmZpY2llbnQKKyAgLy8gICBhYnNsOjpidHJlZV9t
dWx0aW1hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXA1KHN0ZDo6bW92ZShtYXA0KSk7CisgIC8vCisg
IC8vICogTW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisgIC8vICAgLy8gTWF5IGJlIGVm
ZmljaWVudCBpZiBhbGxvY2F0b3JzIGFyZSBjb21wYXRpYmxlCisgIC8vICAgYWJzbDo6YnRyZWVf
bXVsdGltYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwNjsKKyAgLy8gICBtYXA2ID0gc3RkOjptb3Zl
KG1hcDUpOworICAvLworICAvLyAqIFJhbmdlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgc3Rk
Ojp2ZWN0b3I8c3RkOjpwYWlyPGludCwgc3RkOjpzdHJpbmc+PiB2ID0ge3sxLCAiYSJ9LCB7Miwg
ImIifX07CisgIC8vICAgYWJzbDo6YnRyZWVfbXVsdGltYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFw
Nyh2LmJlZ2luKCksIHYuZW5kKCkpOworICBidHJlZV9tdWx0aW1hcCgpIHt9CisgIHVzaW5nIEJh
c2U6OkJhc2U7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6OmJlZ2luKCkKKyAgLy8KKyAgLy8gUmV0
dXJucyBhbiBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgYnRyZWVfbXVsdGltYXBg
LgorICB1c2luZyBCYXNlOjpiZWdpbjsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6Y2JlZ2luKCkK
KyAgLy8KKyAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIGBidHJlZV9tdWx0aW1hcGAuCisgIHVzaW5nIEJhc2U6OmNiZWdpbjsKKworICAvLyBidHJl
ZV9tdWx0aW1hcDo6ZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUg
ZW5kIG9mIHRoZSBgYnRyZWVfbXVsdGltYXBgLgorICB1c2luZyBCYXNlOjplbmQ7CisKKyAgLy8g
YnRyZWVfbXVsdGltYXA6OmNlbmQoKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0
b3IgdG8gdGhlIGVuZCBvZiB0aGUgYGJ0cmVlX211bHRpbWFwYC4KKyAgdXNpbmcgQmFzZTo6Y2Vu
ZDsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6ZW1wdHkoKQorICAvLworICAvLyBSZXR1cm5zIHdo
ZXRoZXIgb3Igbm90IHRoZSBgYnRyZWVfbXVsdGltYXBgIGlzIGVtcHR5LgorICB1c2luZyBCYXNl
OjplbXB0eTsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6bWF4X3NpemUoKQorICAvLworICAvLyBS
ZXR1cm5zIHRoZSBsYXJnZXN0IHRoZW9yZXRpY2FsIHBvc3NpYmxlIG51bWJlciBvZiBlbGVtZW50
cyB3aXRoaW4gYQorICAvLyBgYnRyZWVfbXVsdGltYXBgIHVuZGVyIGN1cnJlbnQgbWVtb3J5IGNv
bnN0cmFpbnRzLiBUaGlzIHZhbHVlIGNhbiBiZQorICAvLyB0aG91Z2h0IG9mIGFzIHRoZSBsYXJn
ZXN0IHZhbHVlIG9mIGBzdGQ6OmRpc3RhbmNlKGJlZ2luKCksIGVuZCgpKWAgZm9yIGEKKyAgLy8g
YGJ0cmVlX211bHRpbWFwPEtleSwgVD5gLgorICB1c2luZyBCYXNlOjptYXhfc2l6ZTsKKworICAv
LyBidHJlZV9tdWx0aW1hcDo6c2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBv
ZiBlbGVtZW50cyBjdXJyZW50bHkgd2l0aGluIHRoZSBgYnRyZWVfbXVsdGltYXBgLgorICB1c2lu
ZyBCYXNlOjpzaXplOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjpjbGVhcigpCisgIC8vCisgIC8v
IFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGBidHJlZV9tdWx0aW1hcGAuIEludmFsaWRh
dGVzIGFueSByZWZlcmVuY2VzLAorICAvLyBwb2ludGVycywgb3IgaXRlcmF0b3JzIHJlZmVycmlu
ZyB0byBjb250YWluZWQgZWxlbWVudHMuCisgIHVzaW5nIEJhc2U6OmNsZWFyOworCisgIC8vIGJ0
cmVlX211bHRpbWFwOjplcmFzZSgpCisgIC8vCisgIC8vIEVyYXNlcyBlbGVtZW50cyB3aXRoaW4g
dGhlIGBidHJlZV9tdWx0aW1hcGAuIElmIGFuIGVyYXNlIG9jY3VycywgYW55CisgIC8vIHJlZmVy
ZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLgorICAvLyBPdmVy
bG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoaXRlcmF0
b3IgcG9zaXRpb24pOgorICAvLyBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBwb3NpdGlv
bik6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50IGF0IGBwb3NpdGlvbmAgb2YgdGhl
IGBidHJlZV9tdWx0aW1hcGAsIHJldHVybmluZworICAvLyAgIHRoZSBpdGVyYXRvciBwb2ludGlu
ZyB0byB0aGUgZWxlbWVudCBhZnRlciB0aGUgb25lIHRoYXQgd2FzIGVyYXNlZAorICAvLyAgIChv
ciBlbmQoKSBpZiBub25lIGV4aXN0cykuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGVyYXNlKGNvbnN0
X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KToKKyAgLy8KKyAgLy8gICBFcmFz
ZXMgdGhlIGVsZW1lbnRzIGluIHRoZSBvcGVuIGludGVydmFsIFtgZmlyc3RgLCBgbGFzdGApLCBy
ZXR1cm5pbmcKKyAgLy8gICB0aGUgaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGVsZW1lbnQgYWZ0
ZXIgdGhlIGludGVydmFsIHRoYXQgd2FzIGVyYXNlZAorICAvLyAgIChvciBlbmQoKSBpZiBub25l
IGV4aXN0cykuCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBzaXplX3R5cGUgZXJh
c2UoY29uc3QgSyYga2V5KToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnRzIG1hdGNo
aW5nIHRoZSBrZXksIGlmIGFueSBleGlzdCwgcmV0dXJuaW5nIHRoZQorICAvLyAgIG51bWJlciBv
ZiBlbGVtZW50cyBlcmFzZWQuCisgIHVzaW5nIEJhc2U6OmVyYXNlOworCisgIC8vIGJ0cmVlX211
bHRpbWFwOjppbnNlcnQoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNw
ZWNpZmllZCB2YWx1ZSBpbnRvIHRoZSBgYnRyZWVfbXVsdGltYXBgLAorICAvLyByZXR1cm5pbmcg
YW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQuCisgIC8v
IEFueSByZWZlcmVuY2VzLCBwb2ludGVycywgb3IgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4g
IE92ZXJsb2FkcyBhcmUKKyAgLy8gbGlzdGVkIGJlbG93LgorICAvLworICAvLyBpdGVyYXRvciBp
bnNlcnQoY29uc3QgdmFsdWVfdHlwZSYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2
YWx1ZSBpbnRvIHRoZSBgYnRyZWVfbXVsdGltYXBgLCByZXR1cm5pbmcgYW4gaXRlcmF0b3IgdG8g
dGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudC4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgaW5zZXJ0
KHZhbHVlX3R5cGUmJiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIG1vdmVhYmxlIHZh
bHVlIGludG8gdGhlIGBidHJlZV9tdWx0aW1hcGAsIHJldHVybmluZyBhbiBpdGVyYXRvcgorICAv
LyAgIHRvIHRoZSBpbnNlcnRlZCBlbGVtZW50LgorICAvLworICAvLyBpdGVyYXRvciBpbnNlcnQo
Y29uc3RfaXRlcmF0b3IgaGludCwgY29uc3QgdmFsdWVfdHlwZSYgdmFsdWUpOgorICAvLyBpdGVy
YXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgdmFsdWVfdHlwZSYmIHZhbHVlKToKKyAg
Ly8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUsIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAg
YXMgYSBub24tYmluZGluZyBzdWdnZXN0aW9uCisgIC8vICAgZm9yIHdoZXJlIHRvIGJlZ2luIHRo
ZSBpbnNlcnRpb24gc2VhcmNoLiBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZQorICAvLyAgIGlu
c2VydGVkIGVsZW1lbnQuCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KElucHV0SXRlcmF0b3IgZmly
c3QsIElucHV0SXRlcmF0b3IgbGFzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHJhbmdlIG9m
IHZhbHVlcyBbYGZpcnN0YCwgYGxhc3RgKS4KKyAgLy8KKyAgLy8gdm9pZCBpbnNlcnQoc3RkOjpp
bml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaWxpc3QpOgorICAvLworICAvLyAgIEluc2VydHMg
dGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBgaWxpc3RgLgorICB1c2lu
ZyBCYXNlOjppbnNlcnQ7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6OmVtcGxhY2UoKQorICAvLwor
ICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1
Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgYnRyZWVfbXVsdGltYXBgLiBBbnkg
cmVmZXJlbmNlcywgcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyBhcmUKKyAgLy8gaW52YWxpZGF0ZWQu
CisgIHVzaW5nIEJhc2U6OmVtcGxhY2U7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6OmVtcGxhY2Vf
aGludCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZh
bHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBidHJlZV9t
dWx0aW1hcGAsIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZwor
ICAvLyBzdWdnZXN0aW9uIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4K
KyAgLy8KKyAgLy8gQW55IHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlIGlu
dmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlX2hpbnQ7CisKKyAgLy8gYnRyZWVfbXVs
dGltYXA6OmV4dHJhY3QoKQorICAvLworICAvLyBFeHRyYWN0cyB0aGUgaW5kaWNhdGVkIGVsZW1l
bnQsIGVyYXNpbmcgaXQgaW4gdGhlIHByb2Nlc3MsIGFuZCByZXR1cm5zIGl0CisgIC8vIGFzIGEg
QysrMTctY29tcGF0aWJsZSBub2RlIGhhbmRsZS4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cu
CisgIC8vCisgIC8vIG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToK
KyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUgZWxlbWVudCBhdCB0aGUgaW5kaWNhdGVkIHBvc2l0
aW9uIGFuZCByZXR1cm5zIGEgbm9kZSBoYW5kbGUKKyAgLy8gICBvd25pbmcgdGhhdCBleHRyYWN0
ZWQgZGF0YS4KKyAgLy8KKyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+IG5vZGVfdHlwZSBleHRy
YWN0KGNvbnN0IEsmIHgpOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBlbGVtZW50IHdpdGgg
dGhlIGtleSBtYXRjaGluZyB0aGUgcGFzc2VkIGtleSB2YWx1ZSBhbmQKKyAgLy8gICByZXR1cm5z
IGEgbm9kZSBoYW5kbGUgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuIElmIHRoZSBgYnRyZWVf
bXVsdGltYXBgCisgIC8vICAgZG9lcyBub3QgY29udGFpbiBhbiBlbGVtZW50IHdpdGggYSBtYXRj
aGluZyBrZXksIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbgorICAvLyAgIGVtcHR5IG5vZGUgaGFu
ZGxlLgorICAvLworICAvLyBOT1RFOiBJbiB0aGlzIGNvbnRleHQsIGBub2RlX3R5cGVgIHJlZmVy
cyB0byB0aGUgQysrMTcgY29uY2VwdCBvZiBhCisgIC8vIG1vdmUtb25seSB0eXBlIHRoYXQgb3du
cyBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBlbGVtZW50cyBpbiBhc3NvY2lhdGl2ZQorICAv
LyBjb250YWluZXJzIChodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvY29udGFpbmVy
L25vZGVfaGFuZGxlKS4KKyAgLy8gSXQgZG9lcyBOT1QgcmVmZXIgdG8gdGhlIGRhdGEgbGF5b3V0
IG9mIHRoZSB1bmRlcmx5aW5nIGJ0cmVlLgorICB1c2luZyBCYXNlOjpleHRyYWN0OworCisgIC8v
IGJ0cmVlX211bHRpbWFwOjptZXJnZSgpCisgIC8vCisgIC8vIEV4dHJhY3RzIGVsZW1lbnRzIGZy
b20gYSBnaXZlbiBgc291cmNlYCBidHJlZV9tdWx0aW1hcCBpbnRvIHRoaXMKKyAgLy8gYGJ0cmVl
X211bHRpbWFwYC4gSWYgdGhlIGRlc3RpbmF0aW9uIGBidHJlZV9tdWx0aW1hcGAgYWxyZWFkeSBj
b250YWlucyBhbgorICAvLyBlbGVtZW50IHdpdGggYW4gZXF1aXZhbGVudCBrZXksIHRoYXQgZWxl
bWVudCBpcyBub3QgZXh0cmFjdGVkLgorICB1c2luZyBCYXNlOjptZXJnZTsKKworICAvLyBidHJl
ZV9tdWx0aW1hcDo6c3dhcChidHJlZV9tdWx0aW1hcCYgb3RoZXIpCisgIC8vCisgIC8vIEV4Y2hh
bmdlcyB0aGUgY29udGVudHMgb2YgdGhpcyBgYnRyZWVfbXVsdGltYXBgIHdpdGggdGhvc2Ugb2Yg
dGhlIGBvdGhlcmAKKyAgLy8gYnRyZWVfbXVsdGltYXAsIGF2b2lkaW5nIGludm9jYXRpb24gb2Yg
YW55IG1vdmUsIGNvcHksIG9yIHN3YXAgb3BlcmF0aW9ucworICAvLyBvbiBpbmRpdmlkdWFsIGVs
ZW1lbnRzLgorICAvLworICAvLyBBbGwgaXRlcmF0b3JzIGFuZCByZWZlcmVuY2VzIG9uIHRoZSBg
YnRyZWVfbXVsdGltYXBgIHJlbWFpbiB2YWxpZCwKKyAgLy8gZXhjZXB0aW5nIGZvciB0aGUgcGFz
dC10aGUtZW5kIGl0ZXJhdG9yLCB3aGljaCBpcyBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6
c3dhcDsKKworICAvLyBidHJlZV9tdWx0aW1hcDo6Y29udGFpbnMoKQorICAvLworICAvLyB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSz4gYm9vbCBjb250YWlucyhjb25zdCBLJiBrZXkpIGNvbnN0OgorICAv
LworICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCBjb21wYXJpbmcgZXF1YWwgdG8g
dGhlIGdpdmVuIGBrZXlgIGV4aXN0cworICAvLyB3aXRoaW4gdGhlIGBidHJlZV9tdWx0aW1hcGAs
IHJldHVybmluZyBgdHJ1ZWAgaWYgc28gb3IgYGZhbHNlYCBvdGhlcndpc2UuCisgIC8vCisgIC8v
IFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92aWRlZCB0aGF0IHRoZSBtYXAgaXMg
cHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMgY29tcGFyYXRvci4KKyAg
dXNpbmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8gYnRyZWVfbXVsdGltYXA6OmNvdW50KCkKKyAg
Ly8KKyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+IHNpemVfdHlwZSBjb3VudChjb25zdCBLJiBr
ZXkpIGNvbnN0OgorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29t
cGFyaW5nIGVxdWFsIHRvIHRoZSBnaXZlbiBga2V5YCB3aXRoaW4KKyAgLy8gdGhlIGBidHJlZV9t
dWx0aW1hcGAuCisgIC8vCisgIC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92
aWRlZCB0aGF0IHRoZSBtYXAgaXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dl
bmVvdXMgY29tcGFyYXRvci4KKyAgdXNpbmcgQmFzZTo6Y291bnQ7CisKKyAgLy8gYnRyZWVfbXVs
dGltYXA6OmVxdWFsX3JhbmdlKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNsb3NlZCByYW5nZSBb
Zmlyc3QsIGxhc3RdLCBkZWZpbmVkIGJ5IGEgYHN0ZDo6cGFpcmAgb2YgdHdvCisgIC8vIGl0ZXJh
dG9ycywgY29udGFpbmluZyBhbGwgZWxlbWVudHMgd2l0aCB0aGUgcGFzc2VkIGtleSBpbiB0aGUK
KyAgLy8gYGJ0cmVlX211bHRpbWFwYC4KKyAgdXNpbmcgQmFzZTo6ZXF1YWxfcmFuZ2U7CisKKyAg
Ly8gYnRyZWVfbXVsdGltYXA6OmZpbmQoKQorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Sz4gaXRlcmF0b3IgZmluZChjb25zdCBLJiBrZXkpOgorICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Sz4gY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLJiBrZXkpIGNvbnN0OgorICAvLworICAvLyBG
aW5kcyBhbiBlbGVtZW50IHdpdGggdGhlIHBhc3NlZCBga2V5YCB3aXRoaW4gdGhlIGBidHJlZV9t
dWx0aW1hcGAuCisgIC8vCisgIC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92
aWRlZCB0aGF0IHRoZSBtYXAgaXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dl
bmVvdXMgY29tcGFyYXRvci4KKyAgdXNpbmcgQmFzZTo6ZmluZDsKKworICAvLyBidHJlZV9tdWx0
aW1hcDo6Z2V0X2FsbG9jYXRvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGFsbG9jYXRvciBm
dW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBgYnRyZWVfbXVsdGltYXBgLgorICB1c2luZyBC
YXNlOjpnZXRfYWxsb2NhdG9yOworCisgIC8vIGJ0cmVlX211bHRpbWFwOjprZXlfY29tcCgpOwor
ICAvLworICAvLyBSZXR1cm5zIHRoZSBrZXkgY29tcGFyYXRvciBhc3NvY2lhdGVkIHdpdGggdGhp
cyBgYnRyZWVfbXVsdGltYXBgLgorICB1c2luZyBCYXNlOjprZXlfY29tcDsKKworICAvLyBidHJl
ZV9tdWx0aW1hcDo6dmFsdWVfY29tcCgpOworICAvLworICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBj
b21wYXJhdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJlZV9tdWx0aW1hcGAuCisgIHVzaW5n
IEJhc2U6OnZhbHVlX2NvbXA7Cit9OworCisvLyBhYnNsOjpzd2FwKGFic2w6OmJ0cmVlX211bHRp
bWFwPD4sIGFic2w6OmJ0cmVlX211bHRpbWFwPD4pCisvLworLy8gU3dhcHMgdGhlIGNvbnRlbnRz
IG9mIHR3byBgYWJzbDo6YnRyZWVfbXVsdGltYXBgIGNvbnRhaW5lcnMuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSywgdHlwZW5hbWUgViwgdHlwZW5hbWUgQywgdHlwZW5hbWUgQT4KK3ZvaWQgc3dhcChi
dHJlZV9tdWx0aW1hcDxLLCBWLCBDLCBBPiAmeCwgYnRyZWVfbXVsdGltYXA8SywgViwgQywgQT4g
JnkpIHsKKyAgcmV0dXJuIHguc3dhcCh5KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFic2wKKwor
I2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9CVFJFRV9NQVBfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9idHJlZV9zZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9idHJlZV9zZXQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTQ3YjRhYWU2NTJlMmJkZGQwM2QzMTMwYTA0NmFhMTQyZDAyZjgzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3NldC5oCkBAIC0wLDAgKzEsNjUzIEBA
CisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8gRmlsZTogYnRyZWVfc2V0LmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIEItdHJlZSBzZXRzOiBzb3J0ZWQg
YXNzb2NpYXRpdmUgY29udGFpbmVycyBvZgorLy8gdmFsdWVzLgorLy8KKy8vICAgICAqIGBhYnNs
OjpidHJlZV9zZXQ8PmAKKy8vICAgICAqIGBhYnNsOjpidHJlZV9tdWx0aXNldDw+YAorLy8KKy8v
IFRoZXNlIEItdHJlZSB0eXBlcyBhcmUgc2ltaWxhciB0byB0aGUgY29ycmVzcG9uZGluZyB0eXBl
cyBpbiB0aGUgU1RMCisvLyAoYHN0ZDo6c2V0YCBhbmQgYHN0ZDo6bXVsdGlzZXRgKSBhbmQgZ2Vu
ZXJhbGx5IGNvbmZvcm0gdG8gdGhlIFNUTCBpbnRlcmZhY2VzCisvLyBvZiB0aG9zZSB0eXBlcy4g
SG93ZXZlciwgYmVjYXVzZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBCLXRyZWVzLCB0aGV5
CisvLyBhcmUgbW9yZSBlZmZpY2llbnQgaW4gbW9zdCBzaXR1YXRpb25zLgorLy8KKy8vIFVubGlr
ZSBgc3RkOjpzZXRgIGFuZCBgc3RkOjptdWx0aXNldGAsIHdoaWNoIGFyZSBjb21tb25seSBpbXBs
ZW1lbnRlZCB1c2luZworLy8gcmVkLWJsYWNrIHRyZWUgbm9kZXMsIEItdHJlZSBzZXRzIHVzZSBt
b3JlIGdlbmVyaWMgQi10cmVlIG5vZGVzIGFibGUgdG8gaG9sZAorLy8gbXVsdGlwbGUgdmFsdWVz
IHBlciBub2RlLiBIb2xkaW5nIG11bHRpcGxlIHZhbHVlcyBwZXIgbm9kZSBvZnRlbiBtYWtlcwor
Ly8gQi10cmVlIHNldHMgcGVyZm9ybSBiZXR0ZXIgdGhhbiB0aGVpciBgc3RkOjpzZXRgIGNvdW50
ZXJwYXJ0cywgYmVjYXVzZQorLy8gbXVsdGlwbGUgZW50cmllcyBjYW4gYmUgY2hlY2tlZCB3aXRo
aW4gdGhlIHNhbWUgY2FjaGUgaGl0LgorLy8KKy8vIEhvd2V2ZXIsIHRoZXNlIHR5cGVzIHNob3Vs
ZCBub3QgYmUgY29uc2lkZXJlZCBkcm9wLWluIHJlcGxhY2VtZW50cyBmb3IKKy8vIGBzdGQ6OnNl
dGAgYW5kIGBzdGQ6Om11bHRpc2V0YCBhcyB0aGVyZSBhcmUgc29tZSBBUEkgZGlmZmVyZW5jZXMs
IHdoaWNoIGFyZQorLy8gbm90ZWQgaW4gdGhpcyBoZWFkZXIgZmlsZS4KKy8vCisvLyBJbXBvcnRh
bnRseSwgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zIG1heSBpbnZhbGlkYXRlIG91dHN0YW5kaW5n
IGl0ZXJhdG9ycywKKy8vIHBvaW50ZXJzLCBhbmQgcmVmZXJlbmNlcyB0byBlbGVtZW50cy4gU3Vj
aCBpbnZhbGlkYXRpb25zIGFyZSB0eXBpY2FsbHkgb25seQorLy8gYW4gaXNzdWUgaWYgaW5zZXJ0
aW9uIGFuZCBkZWxldGlvbiBvcGVyYXRpb25zIGFyZSBpbnRlcmxlYXZlZCB3aXRoIHRoZSB1c2Ug
b2YKKy8vIG1vcmUgdGhhbiBvbmUgaXRlcmF0b3IsIHBvaW50ZXIsIG9yIHJlZmVyZW5jZSBzaW11
bHRhbmVvdXNseS4gRm9yIHRoaXMKKy8vIHJlYXNvbiwgYGluc2VydCgpYCBhbmQgYGVyYXNlKClg
IHJldHVybiBhIHZhbGlkIGl0ZXJhdG9yIGF0IHRoZSBjdXJyZW50CisvLyBwb3NpdGlvbi4KKwor
I2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9CVFJFRV9TRVRfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlO
RVJfQlRSRUVfU0VUX0hfCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9idHJl
ZS5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
dGVybmFsL2J0cmVlX2NvbnRhaW5lci5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorCituYW1l
c3BhY2UgYWJzbCB7CisKKy8vIGFic2w6OmJ0cmVlX3NldDw+CisvLworLy8gQW4gYGFic2w6OmJ0
cmVlX3NldDxLPmAgaXMgYW4gb3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgb2YgdW5pcXVl
IGtleQorLy8gdmFsdWVzIGRlc2lnbmVkIHRvIGJlIGEgbW9yZSBlZmZpY2llbnQgcmVwbGFjZW1l
bnQgZm9yIGBzdGQ6OnNldGAgKGluIG1vc3QKKy8vIGNhc2VzKS4KKy8vCisvLyBLZXlzIGFyZSBz
b3J0ZWQgdXNpbmcgYW4gKG9wdGlvbmFsKSBjb21wYXJpc29uIGZ1bmN0aW9uLCB3aGljaCBkZWZh
dWx0cyB0bworLy8gYHN0ZDo6bGVzczxLPmAuCisvLworLy8gQW4gYGFic2w6OmJ0cmVlX3NldDxL
PmAgdXNlcyBhIGRlZmF1bHQgYWxsb2NhdG9yIG9mIGBzdGQ6OmFsbG9jYXRvcjxLPmAgdG8KKy8v
IGFsbG9jYXRlIChhbmQgZGVhbGxvY2F0ZSkgbm9kZXMsIGFuZCBjb25zdHJ1Y3QgYW5kIGRlc3Ry
dWN0IHZhbHVlcyB3aXRoaW4KKy8vIHRob3NlIG5vZGVzLiBZb3UgbWF5IGluc3RlYWQgc3BlY2lm
eSBhIGN1c3RvbSBhbGxvY2F0b3IgYEFgICh3aGljaCBpbiB0dXJuCisvLyByZXF1aXJlcyBzcGVj
aWZ5aW5nIGEgY3VzdG9tIGNvbXBhcmF0b3IgYENgKSBhcyBpbgorLy8gYGFic2w6OmJ0cmVlX3Nl
dDxLLCBDLCBBPmAuCisvLwordGVtcGxhdGUgPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgQ29tcGFy
ZSA9IHN0ZDo6bGVzczxLZXk+LAorICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxv
Y2F0b3I8S2V5Pj4KK2NsYXNzIGJ0cmVlX3NldAorICAgIDogcHVibGljIGNvbnRhaW5lcl9pbnRl
cm5hbDo6YnRyZWVfc2V0X2NvbnRhaW5lcjwKKyAgICAgICAgICBjb250YWluZXJfaW50ZXJuYWw6
OmJ0cmVlPGNvbnRhaW5lcl9pbnRlcm5hbDo6c2V0X3BhcmFtczwKKyAgICAgICAgICAgICAgS2V5
LCBDb21wYXJlLCBBbGxvYywgLypUYXJnZXROb2RlU2l6ZT0qLzI1NiwKKyAgICAgICAgICAgICAg
LypNdWx0aT0qL2ZhbHNlPj4+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIGJ0cmVlX3NldDo6
YnRyZWVfc2V0X2NvbnRhaW5lcjsKKworIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0b3JzIGFuZCBB
c3NpZ25tZW50IE9wZXJhdG9ycworICAvLworICAvLyBBIGBidHJlZV9zZXRgIHN1cHBvcnRzIHRo
ZSBzYW1lIG92ZXJsb2FkIHNldCBhcyBgc3RkOjpzZXRgCisgIC8vIGZvciBjb25zdHJ1Y3Rpb24g
YW5kIGFzc2lnbm1lbnQ6CisgIC8vCisgIC8vICogRGVmYXVsdCBjb25zdHJ1Y3RvcgorICAvLwor
ICAvLyAgIGFic2w6OmJ0cmVlX3NldDxzdGQ6OnN0cmluZz4gc2V0MTsKKyAgLy8KKyAgLy8gKiBJ
bml0aWFsaXplciBMaXN0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6YnRyZWVfc2V0
PHN0ZDo6c3RyaW5nPiBzZXQyID0KKyAgLy8gICAgICAge3siaHVleSJ9LCB7ImRld2V5In0sIHsi
bG91aWUifSx9OworICAvLworICAvLyAqIENvcHkgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBh
YnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmc+IHNldDMoc2V0Mik7CisgIC8vCisgIC8vICogQ29w
eSBhc3NpZ25tZW50IG9wZXJhdG9yCisgIC8vCisgIC8vICBhYnNsOjpidHJlZV9zZXQ8c3RkOjpz
dHJpbmc+IHNldDQ7CisgIC8vICBzZXQ0ID0gc2V0MzsKKyAgLy8KKyAgLy8gKiBNb3ZlIGNvbnN0
cnVjdG9yCisgIC8vCisgIC8vICAgLy8gTW92ZSBpcyBndWFyYW50ZWVkIGVmZmljaWVudAorICAv
LyAgIGFic2w6OmJ0cmVlX3NldDxzdGQ6OnN0cmluZz4gc2V0NShzdGQ6Om1vdmUoc2V0NCkpOwor
ICAvLworICAvLyAqIE1vdmUgYXNzaWdubWVudCBvcGVyYXRvcgorICAvLworICAvLyAgIC8vIE1h
eSBiZSBlZmZpY2llbnQgaWYgYWxsb2NhdG9ycyBhcmUgY29tcGF0aWJsZQorICAvLyAgIGFic2w6
OmJ0cmVlX3NldDxzdGQ6OnN0cmluZz4gc2V0NjsKKyAgLy8gICBzZXQ2ID0gc3RkOjptb3ZlKHNl
dDUpOworICAvLworICAvLyAqIFJhbmdlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSB7ImEiLCAiYiJ9OworICAvLyAgIGFic2w6OmJ0cmVlX3Nl
dDxzdGQ6OnN0cmluZz4gc2V0Nyh2LmJlZ2luKCksIHYuZW5kKCkpOworICBidHJlZV9zZXQoKSB7
fQorICB1c2luZyBCYXNlOjpCYXNlOworCisgIC8vIGJ0cmVlX3NldDo6YmVnaW4oKQorICAvLwor
ICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBidHJlZV9z
ZXRgLgorICB1c2luZyBCYXNlOjpiZWdpbjsKKworICAvLyBidHJlZV9zZXQ6OmNiZWdpbigpCisg
IC8vCisgIC8vIFJldHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBgYnRyZWVfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Y2JlZ2luOworCisgIC8vIGJ0cmVlX3NldDo6
ZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBg
YnRyZWVfc2V0YC4KKyAgdXNpbmcgQmFzZTo6ZW5kOworCisgIC8vIGJ0cmVlX3NldDo6Y2VuZCgp
CisgIC8vCisgIC8vIFJldHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBg
YnRyZWVfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Y2VuZDsKKworICAvLyBidHJlZV9zZXQ6OmVtcHR5
KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgYGJ0cmVlX3NldGAgaXMg
ZW1wdHkuCisgIHVzaW5nIEJhc2U6OmVtcHR5OworCisgIC8vIGJ0cmVlX3NldDo6bWF4X3NpemUo
KQorICAvLworICAvLyBSZXR1cm5zIHRoZSBsYXJnZXN0IHRoZW9yZXRpY2FsIHBvc3NpYmxlIG51
bWJlciBvZiBlbGVtZW50cyB3aXRoaW4gYQorICAvLyBgYnRyZWVfc2V0YCB1bmRlciBjdXJyZW50
IG1lbW9yeSBjb25zdHJhaW50cy4gVGhpcyB2YWx1ZSBjYW4gYmUgdGhvdWdodAorICAvLyBvZiBh
cyB0aGUgbGFyZ2VzdCB2YWx1ZSBvZiBgc3RkOjpkaXN0YW5jZShiZWdpbigpLCBlbmQoKSlgIGZv
ciBhCisgIC8vIGBidHJlZV9zZXQ8S2V5PmAuCisgIHVzaW5nIEJhc2U6Om1heF9zaXplOworCisg
IC8vIGJ0cmVlX3NldDo6c2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBl
bGVtZW50cyBjdXJyZW50bHkgd2l0aGluIHRoZSBgYnRyZWVfc2V0YC4KKyAgdXNpbmcgQmFzZTo6
c2l6ZTsKKworICAvLyBidHJlZV9zZXQ6OmNsZWFyKCkKKyAgLy8KKyAgLy8gUmVtb3ZlcyBhbGwg
ZWxlbWVudHMgZnJvbSB0aGUgYGJ0cmVlX3NldGAuIEludmFsaWRhdGVzIGFueSByZWZlcmVuY2Vz
LAorICAvLyBwb2ludGVycywgb3IgaXRlcmF0b3JzIHJlZmVycmluZyB0byBjb250YWluZWQgZWxl
bWVudHMuCisgIHVzaW5nIEJhc2U6OmNsZWFyOworCisgIC8vIGJ0cmVlX3NldDo6ZXJhc2UoKQor
ICAvLworICAvLyBFcmFzZXMgZWxlbWVudHMgd2l0aGluIHRoZSBgYnRyZWVfc2V0YC4gT3Zlcmxv
YWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9y
IHBvc2l0aW9uKToKKyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24p
OgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCBhdCBgcG9zaXRpb25gIG9mIHRoZSBg
YnRyZWVfc2V0YCwgcmV0dXJuaW5nCisgIC8vICAgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRo
ZSBlbGVtZW50IGFmdGVyIHRoZSBvbmUgdGhhdCB3YXMgZXJhc2VkCisgIC8vICAgKG9yIGVuZCgp
IGlmIG5vbmUgZXhpc3RzKS4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0
b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUg
ZWxlbWVudHMgaW4gdGhlIG9wZW4gaW50ZXJ2YWwgW2BmaXJzdGAsIGBsYXN0YCksIHJldHVybmlu
ZworICAvLyAgIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZWxlbWVudCBhZnRlciB0aGUg
aW50ZXJ2YWwgdGhhdCB3YXMgZXJhc2VkCisgIC8vICAgKG9yIGVuZCgpIGlmIG5vbmUgZXhpc3Rz
KS4KKyAgLy8KKyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+IHNpemVfdHlwZSBlcmFzZShjb25z
dCBLJiBrZXkpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCB3aXRoIHRoZSBtYXRj
aGluZyBrZXksIGlmIGl0IGV4aXN0cywgcmV0dXJuaW5nIHRoZQorICAvLyAgIG51bWJlciBvZiBl
bGVtZW50cyBlcmFzZWQuCisgIHVzaW5nIEJhc2U6OmVyYXNlOworCisgIC8vIGJ0cmVlX3NldDo6
aW5zZXJ0KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQg
dmFsdWUgaW50byB0aGUgYGJ0cmVlX3NldGAsCisgIC8vIHJldHVybmluZyBhbiBpdGVyYXRvciBw
b2ludGluZyB0byB0aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudCwgcHJvdmlkZWQgdGhhdAorICAv
LyBhbiBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LiBJ
ZiBhbiBpbnNlcnRpb24KKyAgLy8gb2NjdXJzLCBhbnkgcmVmZXJlbmNlcywgcG9pbnRlcnMsIG9y
IGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIC8vIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJl
bG93LgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KGNvbnN0IHZh
bHVlX3R5cGUmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUg
YGJ0cmVlX3NldGAuIFJldHVybnMgYSBwYWlyIGNvbnNpc3Rpbmcgb2YgYW4KKyAgLy8gICBpdGVy
YXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhlIGVsZW1lbnQgdGhhdCBwcmV2
ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uKSBhbmQgYSBib29sIGRlbm90aW5nIHdoZXRoZXIg
dGhlIGluc2VydGlvbiB0b29rIHBsYWNlLgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3Is
Ym9vbD4gaW5zZXJ0KHZhbHVlX3R5cGUmJiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBh
IG1vdmVhYmxlIHZhbHVlIGludG8gdGhlIGBidHJlZV9zZXRgLiBSZXR1cm5zIGEgcGFpcgorICAv
LyAgIGNvbnNpc3Rpbmcgb2YgYW4gaXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9y
IHRvIHRoZSBlbGVtZW50IHRoYXQKKyAgLy8gICBwcmV2ZW50ZWQgdGhlIGluc2VydGlvbikgYW5k
IGEgYm9vbCBkZW5vdGluZyB3aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9vaworICAvLyAgIHBsYWNl
LgorICAvLworICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgY29uc3Qg
dmFsdWVfdHlwZSYgdmFsdWUpOgorICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3Ig
aGludCwgdmFsdWVfdHlwZSYmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUs
IHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZyBzdWdnZXN0aW9u
CisgIC8vICAgZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLiBSZXR1cm5z
IGFuIGl0ZXJhdG9yIHRvIHRoZQorICAvLyAgIGluc2VydGVkIGVsZW1lbnQsIG9yIHRvIHRoZSBl
eGlzdGluZyBlbGVtZW50IHRoYXQgcHJldmVudGVkIHRoZQorICAvLyAgIGluc2VydGlvbi4KKyAg
Ly8KKyAgLy8gdm9pZCBpbnNlcnQoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBs
YXN0KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgcmFuZ2Ugb2YgdmFsdWVzIFtgZmlyc3RgLCBg
bGFzdGApLgorICAvLworICAvLyB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW5p
dF90eXBlPiBpbGlzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyB0aGUgZWxlbWVudHMgd2l0aGlu
IHRoZSBpbml0aWFsaXplciBsaXN0IGBpbGlzdGAuCisgIHVzaW5nIEJhc2U6Omluc2VydDsKKwor
ICAvLyBidHJlZV9zZXQ6OmVtcGxhY2UoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQg
b2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8g
d2l0aGluIHRoZSBgYnRyZWVfc2V0YCwgcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50IHdpdGggdGhl
IGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8gVGhlIGVsZW1lbnQg
bWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBlbGVtZW50IHdp
dGggdGhlCisgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIHRoZSBuZXds
eSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5
LgorICAvLworICAvLyBJZiBhbiBpbnNlcnRpb24gb2NjdXJzLCBhbnkgcmVmZXJlbmNlcywgcG9p
bnRlcnMsIG9yIGl0ZXJhdG9ycyBhcmUKKyAgLy8gaW52YWxpZGF0ZWQuCisgIHVzaW5nIEJhc2U6
OmVtcGxhY2U7CisKKyAgLy8gYnRyZWVfc2V0OjplbXBsYWNlX2hpbnQoKQorICAvLworICAvLyBJ
bnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3Rpbmcg
aXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgYnRyZWVfc2V0YCwgdXNpbmcgdGhlIHBvc2l0
aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nCisgIC8vIHN1Z2dlc3Rpb24gZm9yIHdoZXJl
IHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLCBhbmQgb25seSBpbnNlcnRzCisgIC8vIHBy
b3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkgYWxyZWFkeSBleGlzdHMu
CisgIC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJl
IGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQorICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5l
ciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCisg
IC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4KKyAgLy8KKyAgLy8gSWYgYW4gaW5zZXJ0aW9uIG9j
Y3VycywgYW55IHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlCisgIC8vIGlu
dmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlX2hpbnQ7CisKKyAgLy8gYnRyZWVfc2V0
OjpleHRyYWN0KCkKKyAgLy8KKyAgLy8gRXh0cmFjdHMgdGhlIGluZGljYXRlZCBlbGVtZW50LCBl
cmFzaW5nIGl0IGluIHRoZSBwcm9jZXNzLCBhbmQgcmV0dXJucyBpdAorICAvLyBhcyBhIEMrKzE3
LWNvbXBhdGlibGUgbm9kZSBoYW5kbGUuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAv
LworICAvLyBub2RlX3R5cGUgZXh0cmFjdChjb25zdF9pdGVyYXRvciBwb3NpdGlvbik6CisgIC8v
CisgIC8vICAgRXh0cmFjdHMgdGhlIGVsZW1lbnQgYXQgdGhlIGluZGljYXRlZCBwb3NpdGlvbiBh
bmQgcmV0dXJucyBhIG5vZGUgaGFuZGxlCisgIC8vICAgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRh
dGEuCisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBub2RlX3R5cGUgZXh0cmFjdChj
b25zdCBLJiB4KToKKyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUgZWxlbWVudCB3aXRoIHRoZSBr
ZXkgbWF0Y2hpbmcgdGhlIHBhc3NlZCBrZXkgdmFsdWUgYW5kCisgIC8vICAgcmV0dXJucyBhIG5v
ZGUgaGFuZGxlIG93bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLiBJZiB0aGUgYGJ0cmVlX3NldGAK
KyAgLy8gICBkb2VzIG5vdCBjb250YWluIGFuIGVsZW1lbnQgd2l0aCBhIG1hdGNoaW5nIGtleSwg
dGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuCisgIC8vICAgZW1wdHkgbm9kZSBoYW5kbGUuCisgIC8v
CisgIC8vIE5PVEU6IEluIHRoaXMgY29udGV4dCwgYG5vZGVfdHlwZWAgcmVmZXJzIHRvIHRoZSBD
KysxNyBjb25jZXB0IG9mIGEKKyAgLy8gbW92ZS1vbmx5IHR5cGUgdGhhdCBvd25zIGFuZCBwcm92
aWRlcyBhY2Nlc3MgdG8gdGhlIGVsZW1lbnRzIGluIGFzc29jaWF0aXZlCisgIC8vIGNvbnRhaW5l
cnMgKGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9jb250YWluZXIvbm9kZV9oYW5k
bGUpLgorICAvLyBJdCBkb2VzIE5PVCByZWZlciB0byB0aGUgZGF0YSBsYXlvdXQgb2YgdGhlIHVu
ZGVybHlpbmcgYnRyZWUuCisgIHVzaW5nIEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8gYnRyZWVfc2V0
OjptZXJnZSgpCisgIC8vCisgIC8vIEV4dHJhY3RzIGVsZW1lbnRzIGZyb20gYSBnaXZlbiBgc291
cmNlYCBidHJlZV9zZXQgaW50byB0aGlzCisgIC8vIGBidHJlZV9zZXRgLiBJZiB0aGUgZGVzdGlu
YXRpb24gYGJ0cmVlX3NldGAgYWxyZWFkeSBjb250YWlucyBhbgorICAvLyBlbGVtZW50IHdpdGgg
YW4gZXF1aXZhbGVudCBrZXksIHRoYXQgZWxlbWVudCBpcyBub3QgZXh0cmFjdGVkLgorICB1c2lu
ZyBCYXNlOjptZXJnZTsKKworICAvLyBidHJlZV9zZXQ6OnN3YXAoYnRyZWVfc2V0JiBvdGhlcikK
KyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiB0aGlzIGBidHJlZV9zZXRgIHdp
dGggdGhvc2Ugb2YgdGhlIGBvdGhlcmAKKyAgLy8gYnRyZWVfc2V0LCBhdm9pZGluZyBpbnZvY2F0
aW9uIG9mIGFueSBtb3ZlLCBjb3B5LCBvciBzd2FwIG9wZXJhdGlvbnMgb24KKyAgLy8gaW5kaXZp
ZHVhbCBlbGVtZW50cy4KKyAgLy8KKyAgLy8gQWxsIGl0ZXJhdG9ycyBhbmQgcmVmZXJlbmNlcyBv
biB0aGUgYGJ0cmVlX3NldGAgcmVtYWluIHZhbGlkLCBleGNlcHRpbmcKKyAgLy8gZm9yIHRoZSBw
YXN0LXRoZS1lbmQgaXRlcmF0b3IsIHdoaWNoIGlzIGludmFsaWRhdGVkLgorICB1c2luZyBCYXNl
Ojpzd2FwOworCisgIC8vIGJ0cmVlX3NldDo6Y29udGFpbnMoKQorICAvLworICAvLyB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSz4gYm9vbCBjb250YWlucyhjb25zdCBLJiBrZXkpIGNvbnN0OgorICAvLwor
ICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCBjb21wYXJpbmcgZXF1YWwgdG8gdGhl
IGdpdmVuIGBrZXlgIGV4aXN0cworICAvLyB3aXRoaW4gdGhlIGBidHJlZV9zZXRgLCByZXR1cm5p
bmcgYHRydWVgIGlmIHNvIG9yIGBmYWxzZWAgb3RoZXJ3aXNlLgorICAvLworICAvLyBTdXBwb3J0
cyBoZXRlcm9nZW5lb3VzIGxvb2t1cCwgcHJvdmlkZWQgdGhhdCB0aGUgc2V0IGlzIHByb3ZpZGVk
IGEKKyAgLy8gY29tcGF0aWJsZSBoZXRlcm9nZW5lb3VzIGNvbXBhcmF0b3IuCisgIHVzaW5nIEJh
c2U6OmNvbnRhaW5zOworCisgIC8vIGJ0cmVlX3NldDo6Y291bnQoKQorICAvLworICAvLyB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSz4gc2l6ZV90eXBlIGNvdW50KGNvbnN0IEsmIGtleSkgY29uc3Q6Cisg
IC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb21wYXJpbmcgZXF1YWwg
dG8gdGhlIGdpdmVuIGBrZXlgIHdpdGhpbgorICAvLyB0aGUgYGJ0cmVlX3NldGAuIE5vdGUgdGhh
dCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGVpdGhlciBgMWAgb3IgYDBgCisgIC8vIHNpbmNl
IGR1cGxpY2F0ZSBlbGVtZW50cyBhcmUgbm90IGFsbG93ZWQgd2l0aGluIGEgYGJ0cmVlX3NldGAu
CisgIC8vCisgIC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92aWRlZCB0aGF0
IHRoZSBzZXQgaXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMgY29t
cGFyYXRvci4KKyAgdXNpbmcgQmFzZTo6Y291bnQ7CisKKyAgLy8gYnRyZWVfc2V0OjplcXVhbF9y
YW5nZSgpCisgIC8vCisgIC8vIFJldHVybnMgYSBjbG9zZWQgcmFuZ2UgW2ZpcnN0LCBsYXN0XSwg
ZGVmaW5lZCBieSBhIGBzdGQ6OnBhaXJgIG9mIHR3bworICAvLyBpdGVyYXRvcnMsIGNvbnRhaW5p
bmcgYWxsIGVsZW1lbnRzIHdpdGggdGhlIHBhc3NlZCBrZXkgaW4gdGhlCisgIC8vIGBidHJlZV9z
ZXRgLgorICB1c2luZyBCYXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBidHJlZV9zZXQ6OmZpbmQo
KQorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gaXRlcmF0b3IgZmluZChjb25zdCBL
JiBrZXkpOgorICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gY29uc3RfaXRlcmF0b3IgZmluZChj
b25zdCBLJiBrZXkpIGNvbnN0OgorICAvLworICAvLyBGaW5kcyBhbiBlbGVtZW50IHdpdGggdGhl
IHBhc3NlZCBga2V5YCB3aXRoaW4gdGhlIGBidHJlZV9zZXRgLgorICAvLworICAvLyBTdXBwb3J0
cyBoZXRlcm9nZW5lb3VzIGxvb2t1cCwgcHJvdmlkZWQgdGhhdCB0aGUgc2V0IGlzIHByb3ZpZGVk
IGEKKyAgLy8gY29tcGF0aWJsZSBoZXRlcm9nZW5lb3VzIGNvbXBhcmF0b3IuCisgIHVzaW5nIEJh
c2U6OmZpbmQ7CisKKyAgLy8gYnRyZWVfc2V0OjpnZXRfYWxsb2NhdG9yKCkKKyAgLy8KKyAgLy8g
UmV0dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJl
ZV9zZXRgLgorICB1c2luZyBCYXNlOjpnZXRfYWxsb2NhdG9yOworCisgIC8vIGJ0cmVlX3NldDo6
a2V5X2NvbXAoKTsKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUga2V5IGNvbXBhcmF0b3IgYXNzb2Np
YXRlZCB3aXRoIHRoaXMgYGJ0cmVlX3NldGAuCisgIHVzaW5nIEJhc2U6OmtleV9jb21wOworCisg
IC8vIGJ0cmVlX3NldDo6dmFsdWVfY29tcCgpOworICAvLworICAvLyBSZXR1cm5zIHRoZSB2YWx1
ZSBjb21wYXJhdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJlZV9zZXRgLiBUaGUga2V5cyB0
bworICAvLyBzb3J0IHRoZSBlbGVtZW50cyBhcmUgdGhlIHZhbHVlcyB0aGVtc2VsdmVzLCB0aGVy
ZWZvcmUgYHZhbHVlX2NvbXBgIGFuZCBpdHMKKyAgLy8gc2libGluZyBtZW1iZXIgZnVuY3Rpb24g
YGtleV9jb21wYCBhcmUgZXF1aXZhbGVudC4KKyAgdXNpbmcgQmFzZTo6dmFsdWVfY29tcDsKK307
CisKKy8vIGFic2w6OnN3YXAoYWJzbDo6YnRyZWVfc2V0PD4sIGFic2w6OmJ0cmVlX3NldDw+KQor
Ly8KKy8vIFN3YXBzIHRoZSBjb250ZW50cyBvZiB0d28gYGFic2w6OmJ0cmVlX3NldGAgY29udGFp
bmVycy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBBPgordm9p
ZCBzd2FwKGJ0cmVlX3NldDxLLCBDLCBBPiAmeCwgYnRyZWVfc2V0PEssIEMsIEE+ICZ5KSB7Cisg
IHJldHVybiB4LnN3YXAoeSk7Cit9CisKKy8vIGFic2w6OmJ0cmVlX211bHRpc2V0PD4KKy8vCisv
LyBBbiBgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8Sz5gIGlzIGFuIG9yZGVyZWQgYXNzb2NpYXRpdmUg
Y29udGFpbmVyIG9mCisvLyBrZXlzIGFuZCBhc3NvY2lhdGVkIHZhbHVlcyBkZXNpZ25lZCB0byBi
ZSBhIG1vcmUgZWZmaWNpZW50IHJlcGxhY2VtZW50CisvLyBmb3IgYHN0ZDo6bXVsdGlzZXRgIChp
biBtb3N0IGNhc2VzKS4gVW5saWtlIGBhYnNsOjpidHJlZV9zZXRgLCBhIEItdHJlZQorLy8gbXVs
dGlzZXQgYWxsb3dzIGVxdWl2YWxlbnQgZWxlbWVudHMuCisvLworLy8gS2V5cyBhcmUgc29ydGVk
IHVzaW5nIGFuIChvcHRpb25hbCkgY29tcGFyaXNvbiBmdW5jdGlvbiwgd2hpY2ggZGVmYXVsdHMg
dG8KKy8vIGBzdGQ6Omxlc3M8Sz5gLgorLy8KKy8vIEFuIGBhYnNsOjpidHJlZV9tdWx0aXNldDxL
PmAgdXNlcyBhIGRlZmF1bHQgYWxsb2NhdG9yIG9mIGBzdGQ6OmFsbG9jYXRvcjxLPmAKKy8vIHRv
IGFsbG9jYXRlIChhbmQgZGVhbGxvY2F0ZSkgbm9kZXMsIGFuZCBjb25zdHJ1Y3QgYW5kIGRlc3Ry
dWN0IHZhbHVlcyB3aXRoaW4KKy8vIHRob3NlIG5vZGVzLiBZb3UgbWF5IGluc3RlYWQgc3BlY2lm
eSBhIGN1c3RvbSBhbGxvY2F0b3IgYEFgICh3aGljaCBpbiB0dXJuCisvLyByZXF1aXJlcyBzcGVj
aWZ5aW5nIGEgY3VzdG9tIGNvbXBhcmF0b3IgYENgKSBhcyBpbgorLy8gYGFic2w6OmJ0cmVlX211
bHRpc2V0PEssIEMsIEE+YC4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBD
b21wYXJlID0gc3RkOjpsZXNzPEtleT4sCisgICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPSBzdGQ6
OmFsbG9jYXRvcjxLZXk+PgorY2xhc3MgYnRyZWVfbXVsdGlzZXQKKyAgICA6IHB1YmxpYyBjb250
YWluZXJfaW50ZXJuYWw6OmJ0cmVlX211bHRpc2V0X2NvbnRhaW5lcjwKKyAgICAgICAgICBjb250
YWluZXJfaW50ZXJuYWw6OmJ0cmVlPGNvbnRhaW5lcl9pbnRlcm5hbDo6c2V0X3BhcmFtczwKKyAg
ICAgICAgICAgICAgS2V5LCBDb21wYXJlLCBBbGxvYywgLypUYXJnZXROb2RlU2l6ZT0qLzI1NiwK
KyAgICAgICAgICAgICAgLypNdWx0aT0qL3RydWU+Pj4geworICB1c2luZyBCYXNlID0gdHlwZW5h
bWUgYnRyZWVfbXVsdGlzZXQ6OmJ0cmVlX211bHRpc2V0X2NvbnRhaW5lcjsKKworIHB1YmxpYzoK
KyAgLy8gQ29uc3RydWN0b3JzIGFuZCBBc3NpZ25tZW50IE9wZXJhdG9ycworICAvLworICAvLyBB
IGBidHJlZV9tdWx0aXNldGAgc3VwcG9ydHMgdGhlIHNhbWUgb3ZlcmxvYWQgc2V0IGFzIGBzdGQ6
OnNldGAKKyAgLy8gZm9yIGNvbnN0cnVjdGlvbiBhbmQgYXNzaWdubWVudDoKKyAgLy8KKyAgLy8g
KiBEZWZhdWx0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8
c3RkOjpzdHJpbmc+IHNldDE7CisgIC8vCisgIC8vICogSW5pdGlhbGl6ZXIgTGlzdCBjb25zdHJ1
Y3RvcgorICAvLworICAvLyAgIGFic2w6OmJ0cmVlX211bHRpc2V0PHN0ZDo6c3RyaW5nPiBzZXQy
ID0KKyAgLy8gICAgICAge3siaHVleSJ9LCB7ImRld2V5In0sIHsibG91aWUifSx9OworICAvLwor
ICAvLyAqIENvcHkgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBhYnNsOjpidHJlZV9tdWx0aXNl
dDxzdGQ6OnN0cmluZz4gc2V0MyhzZXQyKTsKKyAgLy8KKyAgLy8gKiBDb3B5IGFzc2lnbm1lbnQg
b3BlcmF0b3IKKyAgLy8KKyAgLy8gIGFic2w6OmJ0cmVlX211bHRpc2V0PHN0ZDo6c3RyaW5nPiBz
ZXQ0OworICAvLyAgc2V0NCA9IHNldDM7CisgIC8vCisgIC8vICogTW92ZSBjb25zdHJ1Y3Rvcgor
ICAvLworICAvLyAgIC8vIE1vdmUgaXMgZ3VhcmFudGVlZCBlZmZpY2llbnQKKyAgLy8gICBhYnNs
OjpidHJlZV9tdWx0aXNldDxzdGQ6OnN0cmluZz4gc2V0NShzdGQ6Om1vdmUoc2V0NCkpOworICAv
LworICAvLyAqIE1vdmUgYXNzaWdubWVudCBvcGVyYXRvcgorICAvLworICAvLyAgIC8vIE1heSBi
ZSBlZmZpY2llbnQgaWYgYWxsb2NhdG9ycyBhcmUgY29tcGF0aWJsZQorICAvLyAgIGFic2w6OmJ0
cmVlX211bHRpc2V0PHN0ZDo6c3RyaW5nPiBzZXQ2OworICAvLyAgIHNldDYgPSBzdGQ6Om1vdmUo
c2V0NSk7CisgIC8vCisgIC8vICogUmFuZ2UgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IHsiYSIsICJiIn07CisgIC8vICAgYWJzbDo6YnRyZWVf
bXVsdGlzZXQ8c3RkOjpzdHJpbmc+IHNldDcodi5iZWdpbigpLCB2LmVuZCgpKTsKKyAgYnRyZWVf
bXVsdGlzZXQoKSB7fQorICB1c2luZyBCYXNlOjpCYXNlOworCisgIC8vIGJ0cmVlX211bHRpc2V0
OjpiZWdpbigpCisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgYGJ0cmVlX211bHRpc2V0YC4KKyAgdXNpbmcgQmFzZTo6YmVnaW47CisKKyAgLy8g
YnRyZWVfbXVsdGlzZXQ6OmNiZWdpbigpCisgIC8vCisgIC8vIFJldHVybnMgYSBjb25zdCBpdGVy
YXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgYnRyZWVfbXVsdGlzZXRgLgorICB1c2luZyBC
YXNlOjpjYmVnaW47CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmVuZCgpCisgIC8vCisgIC8vIFJl
dHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgYGJ0cmVlX211bHRpc2V0YC4KKyAg
dXNpbmcgQmFzZTo6ZW5kOworCisgIC8vIGJ0cmVlX211bHRpc2V0OjpjZW5kKCkKKyAgLy8KKyAg
Ly8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBidHJlZV9tdWx0
aXNldGAuCisgIHVzaW5nIEJhc2U6OmNlbmQ7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmVtcHR5
KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgYGJ0cmVlX211bHRpc2V0
YCBpcyBlbXB0eS4KKyAgdXNpbmcgQmFzZTo6ZW1wdHk7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6
Om1heF9zaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbGFyZ2VzdCB0aGVvcmV0aWNhbCBw
b3NzaWJsZSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aGluIGEKKyAgLy8gYGJ0cmVlX211bHRpc2V0
YCB1bmRlciBjdXJyZW50IG1lbW9yeSBjb25zdHJhaW50cy4gVGhpcyB2YWx1ZSBjYW4gYmUKKyAg
Ly8gdGhvdWdodCBvZiBhcyB0aGUgbGFyZ2VzdCB2YWx1ZSBvZiBgc3RkOjpkaXN0YW5jZShiZWdp
bigpLCBlbmQoKSlgIGZvciBhCisgIC8vIGBidHJlZV9tdWx0aXNldDxLZXk+YC4KKyAgdXNpbmcg
QmFzZTo6bWF4X3NpemU7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OnNpemUoKQorICAvLworICAv
LyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY3VycmVudGx5IHdpdGhpbiB0aGUgYGJ0
cmVlX211bHRpc2V0YC4KKyAgdXNpbmcgQmFzZTo6c2l6ZTsKKworICAvLyBidHJlZV9tdWx0aXNl
dDo6Y2xlYXIoKQorICAvLworICAvLyBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBgYnRy
ZWVfbXVsdGlzZXRgLiBJbnZhbGlkYXRlcyBhbnkgcmVmZXJlbmNlcywKKyAgLy8gcG9pbnRlcnMs
IG9yIGl0ZXJhdG9ycyByZWZlcnJpbmcgdG8gY29udGFpbmVkIGVsZW1lbnRzLgorICB1c2luZyBC
YXNlOjpjbGVhcjsKKworICAvLyBidHJlZV9tdWx0aXNldDo6ZXJhc2UoKQorICAvLworICAvLyBF
cmFzZXMgZWxlbWVudHMgd2l0aGluIHRoZSBgYnRyZWVfbXVsdGlzZXRgLiBPdmVybG9hZHMgYXJl
IGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoaXRlcmF0b3IgcG9zaXRp
b24pOgorICAvLyBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBwb3NpdGlvbik6CisgIC8v
CisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGBidHJlZV9t
dWx0aXNldGAsIHJldHVybmluZworICAvLyAgIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUg
ZWxlbWVudCBhZnRlciB0aGUgb25lIHRoYXQgd2FzIGVyYXNlZAorICAvLyAgIChvciBlbmQoKSBp
ZiBub25lIGV4aXN0cykuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9y
IGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVs
ZW1lbnRzIGluIHRoZSBvcGVuIGludGVydmFsIFtgZmlyc3RgLCBgbGFzdGApLCByZXR1cm5pbmcK
KyAgLy8gICB0aGUgaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIGlu
dGVydmFsIHRoYXQgd2FzIGVyYXNlZAorICAvLyAgIChvciBlbmQoKSBpZiBub25lIGV4aXN0cyku
CisgIC8vCisgIC8vIHRlbXBsYXRlIDx0eXBlbmFtZSBLPiBzaXplX3R5cGUgZXJhc2UoY29uc3Qg
SyYga2V5KToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnRzIG1hdGNoaW5nIHRoZSBr
ZXksIGlmIGFueSBleGlzdCwgcmV0dXJuaW5nIHRoZQorICAvLyAgIG51bWJlciBvZiBlbGVtZW50
cyBlcmFzZWQuCisgIHVzaW5nIEJhc2U6OmVyYXNlOworCisgIC8vIGJ0cmVlX211bHRpc2V0Ojpp
bnNlcnQoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2
YWx1ZSBpbnRvIHRoZSBgYnRyZWVfbXVsdGlzZXRgLAorICAvLyByZXR1cm5pbmcgYW4gaXRlcmF0
b3IgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQuCisgIC8vIEFueSByZWZl
cmVuY2VzLCBwb2ludGVycywgb3IgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4gIE92ZXJsb2Fk
cyBhcmUKKyAgLy8gbGlzdGVkIGJlbG93LgorICAvLworICAvLyBpdGVyYXRvciBpbnNlcnQoY29u
c3QgdmFsdWVfdHlwZSYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSBpbnRv
IHRoZSBgYnRyZWVfbXVsdGlzZXRgLCByZXR1cm5pbmcgYW4gaXRlcmF0b3IgdG8gdGhlCisgIC8v
ICAgaW5zZXJ0ZWQgZWxlbWVudC4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgaW5zZXJ0KHZhbHVlX3R5
cGUmJiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIG1vdmVhYmxlIHZhbHVlIGludG8g
dGhlIGBidHJlZV9tdWx0aXNldGAsIHJldHVybmluZyBhbiBpdGVyYXRvcgorICAvLyAgIHRvIHRo
ZSBpbnNlcnRlZCBlbGVtZW50LgorICAvLworICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRl
cmF0b3IgaGludCwgY29uc3QgdmFsdWVfdHlwZSYgdmFsdWUpOgorICAvLyBpdGVyYXRvciBpbnNl
cnQoY29uc3RfaXRlcmF0b3IgaGludCwgdmFsdWVfdHlwZSYmIHZhbHVlKToKKyAgLy8KKyAgLy8g
ICBJbnNlcnRzIGEgdmFsdWUsIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24t
YmluZGluZyBzdWdnZXN0aW9uCisgIC8vICAgZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRp
b24gc2VhcmNoLiBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZQorICAvLyAgIGluc2VydGVkIGVs
ZW1lbnQuCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0
SXRlcmF0b3IgbGFzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHJhbmdlIG9mIHZhbHVlcyBb
YGZpcnN0YCwgYGxhc3RgKS4KKyAgLy8KKyAgLy8gdm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXpl
cl9saXN0PGluaXRfdHlwZT4gaWxpc3QpOgorICAvLworICAvLyAgIEluc2VydHMgdGhlIGVsZW1l
bnRzIHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBgaWxpc3RgLgorICB1c2luZyBCYXNlOjpp
bnNlcnQ7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmVtcGxhY2UoKQorICAvLworICAvLyBJbnNl
cnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQg
aW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgYnRyZWVfbXVsdGlzZXRgLiBBbnkgcmVmZXJlbmNl
cywgcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyBhcmUKKyAgLy8gaW52YWxpZGF0ZWQuCisgIHVzaW5n
IEJhc2U6OmVtcGxhY2U7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmVtcGxhY2VfaGludCgpCisg
IC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNv
bnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBidHJlZV9tdWx0aXNldGAs
IHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZworICAvLyBzdWdn
ZXN0aW9uIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4KKyAgLy8KKyAg
Ly8gQW55IHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVk
LgorICB1c2luZyBCYXNlOjplbXBsYWNlX2hpbnQ7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmV4
dHJhY3QoKQorICAvLworICAvLyBFeHRyYWN0cyB0aGUgaW5kaWNhdGVkIGVsZW1lbnQsIGVyYXNp
bmcgaXQgaW4gdGhlIHByb2Nlc3MsIGFuZCByZXR1cm5zIGl0CisgIC8vIGFzIGEgQysrMTctY29t
cGF0aWJsZSBub2RlIGhhbmRsZS4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisg
IC8vIG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8KKyAg
Ly8gICBFeHRyYWN0cyB0aGUgZWxlbWVudCBhdCB0aGUgaW5kaWNhdGVkIHBvc2l0aW9uIGFuZCBy
ZXR1cm5zIGEgbm9kZSBoYW5kbGUKKyAgLy8gICBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4K
KyAgLy8KKyAgLy8gdGVtcGxhdGUgPHR5cGVuYW1lIEs+IG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0
IEsmIHgpOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBlbGVtZW50IHdpdGggdGhlIGtleSBt
YXRjaGluZyB0aGUgcGFzc2VkIGtleSB2YWx1ZSBhbmQKKyAgLy8gICByZXR1cm5zIGEgbm9kZSBo
YW5kbGUgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuIElmIHRoZSBgYnRyZWVfbXVsdGlzZXRg
CisgIC8vICAgZG9lcyBub3QgY29udGFpbiBhbiBlbGVtZW50IHdpdGggYSBtYXRjaGluZyBrZXks
IHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbgorICAvLyAgIGVtcHR5IG5vZGUgaGFuZGxlLgorICAv
LworICAvLyBOT1RFOiBJbiB0aGlzIGNvbnRleHQsIGBub2RlX3R5cGVgIHJlZmVycyB0byB0aGUg
QysrMTcgY29uY2VwdCBvZiBhCisgIC8vIG1vdmUtb25seSB0eXBlIHRoYXQgb3ducyBhbmQgcHJv
dmlkZXMgYWNjZXNzIHRvIHRoZSBlbGVtZW50cyBpbiBhc3NvY2lhdGl2ZQorICAvLyBjb250YWlu
ZXJzIChodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvY29udGFpbmVyL25vZGVfaGFu
ZGxlKS4KKyAgLy8gSXQgZG9lcyBOT1QgcmVmZXIgdG8gdGhlIGRhdGEgbGF5b3V0IG9mIHRoZSB1
bmRlcmx5aW5nIGJ0cmVlLgorICB1c2luZyBCYXNlOjpleHRyYWN0OworCisgIC8vIGJ0cmVlX211
bHRpc2V0OjptZXJnZSgpCisgIC8vCisgIC8vIEV4dHJhY3RzIGVsZW1lbnRzIGZyb20gYSBnaXZl
biBgc291cmNlYCBidHJlZV9tdWx0aXNldCBpbnRvIHRoaXMKKyAgLy8gYGJ0cmVlX211bHRpc2V0
YC4gSWYgdGhlIGRlc3RpbmF0aW9uIGBidHJlZV9tdWx0aXNldGAgYWxyZWFkeSBjb250YWlucyBh
bgorICAvLyBlbGVtZW50IHdpdGggYW4gZXF1aXZhbGVudCBrZXksIHRoYXQgZWxlbWVudCBpcyBu
b3QgZXh0cmFjdGVkLgorICB1c2luZyBCYXNlOjptZXJnZTsKKworICAvLyBidHJlZV9tdWx0aXNl
dDo6c3dhcChidHJlZV9tdWx0aXNldCYgb3RoZXIpCisgIC8vCisgIC8vIEV4Y2hhbmdlcyB0aGUg
Y29udGVudHMgb2YgdGhpcyBgYnRyZWVfbXVsdGlzZXRgIHdpdGggdGhvc2Ugb2YgdGhlIGBvdGhl
cmAKKyAgLy8gYnRyZWVfbXVsdGlzZXQsIGF2b2lkaW5nIGludm9jYXRpb24gb2YgYW55IG1vdmUs
IGNvcHksIG9yIHN3YXAgb3BlcmF0aW9ucworICAvLyBvbiBpbmRpdmlkdWFsIGVsZW1lbnRzLgor
ICAvLworICAvLyBBbGwgaXRlcmF0b3JzIGFuZCByZWZlcmVuY2VzIG9uIHRoZSBgYnRyZWVfbXVs
dGlzZXRgIHJlbWFpbiB2YWxpZCwKKyAgLy8gZXhjZXB0aW5nIGZvciB0aGUgcGFzdC10aGUtZW5k
IGl0ZXJhdG9yLCB3aGljaCBpcyBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6c3dhcDsKKwor
ICAvLyBidHJlZV9tdWx0aXNldDo6Y29udGFpbnMoKQorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSz4gYm9vbCBjb250YWlucyhjb25zdCBLJiBrZXkpIGNvbnN0OgorICAvLworICAvLyBE
ZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVu
IGBrZXlgIGV4aXN0cworICAvLyB3aXRoaW4gdGhlIGBidHJlZV9tdWx0aXNldGAsIHJldHVybmlu
ZyBgdHJ1ZWAgaWYgc28gb3IgYGZhbHNlYCBvdGhlcndpc2UuCisgIC8vCisgIC8vIFN1cHBvcnRz
IGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92aWRlZCB0aGF0IHRoZSBzZXQgaXMgcHJvdmlkZWQg
YQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMgY29tcGFyYXRvci4KKyAgdXNpbmcgQmFz
ZTo6Y29udGFpbnM7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmNvdW50KCkKKyAgLy8KKyAgLy8g
dGVtcGxhdGUgPHR5cGVuYW1lIEs+IHNpemVfdHlwZSBjb3VudChjb25zdCBLJiBrZXkpIGNvbnN0
OgorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29tcGFyaW5nIGVx
dWFsIHRvIHRoZSBnaXZlbiBga2V5YCB3aXRoaW4KKyAgLy8gdGhlIGBidHJlZV9tdWx0aXNldGAu
CisgIC8vCisgIC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92aWRlZCB0aGF0
IHRoZSBzZXQgaXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMgY29t
cGFyYXRvci4KKyAgdXNpbmcgQmFzZTo6Y291bnQ7CisKKyAgLy8gYnRyZWVfbXVsdGlzZXQ6OmVx
dWFsX3JhbmdlKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNsb3NlZCByYW5nZSBbZmlyc3QsIGxh
c3RdLCBkZWZpbmVkIGJ5IGEgYHN0ZDo6cGFpcmAgb2YgdHdvCisgIC8vIGl0ZXJhdG9ycywgY29u
dGFpbmluZyBhbGwgZWxlbWVudHMgd2l0aCB0aGUgcGFzc2VkIGtleSBpbiB0aGUKKyAgLy8gYGJ0
cmVlX211bHRpc2V0YC4KKyAgdXNpbmcgQmFzZTo6ZXF1YWxfcmFuZ2U7CisKKyAgLy8gYnRyZWVf
bXVsdGlzZXQ6OmZpbmQoKQorICAvLworICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gaXRlcmF0
b3IgZmluZChjb25zdCBLJiBrZXkpOgorICAvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4gY29uc3Rf
aXRlcmF0b3IgZmluZChjb25zdCBLJiBrZXkpIGNvbnN0OgorICAvLworICAvLyBGaW5kcyBhbiBl
bGVtZW50IHdpdGggdGhlIHBhc3NlZCBga2V5YCB3aXRoaW4gdGhlIGBidHJlZV9tdWx0aXNldGAu
CisgIC8vCisgIC8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCBwcm92aWRlZCB0aGF0
IHRoZSBzZXQgaXMgcHJvdmlkZWQgYQorICAvLyBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMgY29t
cGFyYXRvci4KKyAgdXNpbmcgQmFzZTo6ZmluZDsKKworICAvLyBidHJlZV9tdWx0aXNldDo6Z2V0
X2FsbG9jYXRvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGFsbG9jYXRvciBmdW5jdGlvbiBh
c3NvY2lhdGVkIHdpdGggdGhpcyBgYnRyZWVfbXVsdGlzZXRgLgorICB1c2luZyBCYXNlOjpnZXRf
YWxsb2NhdG9yOworCisgIC8vIGJ0cmVlX211bHRpc2V0OjprZXlfY29tcCgpOworICAvLworICAv
LyBSZXR1cm5zIHRoZSBrZXkgY29tcGFyYXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBgYnRyZWVf
bXVsdGlzZXRgLgorICB1c2luZyBCYXNlOjprZXlfY29tcDsKKworICAvLyBidHJlZV9tdWx0aXNl
dDo6dmFsdWVfY29tcCgpOworICAvLworICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBjb21wYXJhdG9y
IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBidHJlZV9tdWx0aXNldGAuIFRoZQorICAvLyBrZXlzIHRv
IHNvcnQgdGhlIGVsZW1lbnRzIGFyZSB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMsIHRoZXJlZm9yZSBg
dmFsdWVfY29tcGAKKyAgLy8gYW5kIGl0cyBzaWJsaW5nIG1lbWJlciBmdW5jdGlvbiBga2V5X2Nv
bXBgIGFyZSBlcXVpdmFsZW50LgorICB1c2luZyBCYXNlOjp2YWx1ZV9jb21wOworfTsKKworLy8g
YWJzbDo6c3dhcChhYnNsOjpidHJlZV9tdWx0aXNldDw+LCBhYnNsOjpidHJlZV9tdWx0aXNldDw+
KQorLy8KKy8vIFN3YXBzIHRoZSBjb250ZW50cyBvZiB0d28gYGFic2w6OmJ0cmVlX211bHRpc2V0
YCBjb250YWluZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIEMsIHR5cGVuYW1l
IEE+Cit2b2lkIHN3YXAoYnRyZWVfbXVsdGlzZXQ8SywgQywgQT4gJngsIGJ0cmVlX211bHRpc2V0
PEssIEMsIEE+ICZ5KSB7CisgIHJldHVybiB4LnN3YXAoeSk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfQlRSRUVfU0VUX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvYnRyZWVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9idHJl
ZV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzMzBjY2EzMmI5MDMyMTBmZDE4Yzc3ZDFmNjg4N2E1MWZj
ZmRlZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvYnRyZWVfdGVzdC5jYwpA
QCAtMCwwICsxLDIyNDMgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvYnRyZWVfdGVzdC5oIgorCisjaW5jbHVkZSA8
Y3N0ZGludD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0
ZGV4Y2VwdD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5j
bHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIK
KyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9idHJlZV9tYXAuaCIKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9idHJlZV9zZXQuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9j
b3VudGluZ19hbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90
ZXN0X2luc3RhbmNlX3RyYWNrZXIuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ZsYWcuaCIKKyNp
bmNsdWRlICJhYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkv
bWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX3NwbGl0
LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYWJz
bC90eXBlcy9jb21wYXJlLmgiCisKK0FCU0xfRkxBRyhpbnQsIHRlc3RfdmFsdWVzLCAxMDAwMCwg
IlRoZSBudW1iZXIgb2YgdmFsdWVzIHRvIHVzZSBmb3IgdGVzdHMiKTsKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2lu
ZyA6OmFic2w6OnRlc3RfaW50ZXJuYWw6Okluc3RhbmNlVHJhY2tlcjsKK3VzaW5nIDo6YWJzbDo6
dGVzdF9pbnRlcm5hbDo6TW92YWJsZU9ubHlJbnN0YW5jZTsKK3VzaW5nIDo6dGVzdGluZzo6RWxl
bWVudHNBcmU7Cit1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7Cit1c2luZyA6OnRl
c3Rpbmc6OklzRW1wdHk7Cit1c2luZyA6OnRlc3Rpbmc6OlBhaXI7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBDaGVja1BhaXJFcXVhbHMoY29uc3QgVCAmeCwgY29u
c3QgVSAmeSkgeworICBBQlNMX0lOVEVSTkFMX0NIRUNLKHggPT0geSwgIlZhbHVlcyBhcmUgdW5l
cXVhbC4iKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFc+Cit2b2lkIENoZWNrUGFpckVxdWFscyhjb25zdCBzdGQ6OnBhaXI8VCwg
VT4gJngsIGNvbnN0IHN0ZDo6cGFpcjxWLCBXPiAmeSkgeworICBDaGVja1BhaXJFcXVhbHMoeC5m
aXJzdCwgeS5maXJzdCk7CisgIENoZWNrUGFpckVxdWFscyh4LnNlY29uZCwgeS5zZWNvbmQpOwor
fQorfSAgLy8gbmFtZXNwYWNlCisKKy8vIFRoZSBiYXNlIGNsYXNzIGZvciBhIHNvcnRlZCBhc3Nv
Y2lhdGl2ZSBjb250YWluZXIgY2hlY2tlci4gVHJlZVR5cGUgaXMgdGhlCisvLyBjb250YWluZXIg
dHlwZSB0byBjaGVjayBhbmQgQ2hlY2tlclR5cGUgaXMgdGhlIGNvbnRhaW5lciB0eXBlIHRvIGNo
ZWNrCisvLyBhZ2FpbnN0LiBUcmVlVHlwZSBpcyBleHBlY3RlZCB0byBiZSBidHJlZV97c2V0LG1h
cCxtdWx0aXNldCxtdWx0aW1hcH0gYW5kCisvLyBDaGVja2VyVHlwZSBpcyBleHBlY3RlZCB0byBi
ZSB7c2V0LG1hcCxtdWx0aXNldCxtdWx0aW1hcH0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZVR5
cGUsIHR5cGVuYW1lIENoZWNrZXJUeXBlPgorY2xhc3MgYmFzZV9jaGVja2VyIHsKKyBwdWJsaWM6
CisgIHVzaW5nIGtleV90eXBlID0gdHlwZW5hbWUgVHJlZVR5cGU6OmtleV90eXBlOworICB1c2lu
ZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgVHJlZVR5cGU6OnZhbHVlX3R5cGU7CisgIHVzaW5nIGtl
eV9jb21wYXJlID0gdHlwZW5hbWUgVHJlZVR5cGU6OmtleV9jb21wYXJlOworICB1c2luZyBwb2lu
dGVyID0gdHlwZW5hbWUgVHJlZVR5cGU6OnBvaW50ZXI7CisgIHVzaW5nIGNvbnN0X3BvaW50ZXIg
PSB0eXBlbmFtZSBUcmVlVHlwZTo6Y29uc3RfcG9pbnRlcjsKKyAgdXNpbmcgcmVmZXJlbmNlID0g
dHlwZW5hbWUgVHJlZVR5cGU6OnJlZmVyZW5jZTsKKyAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0g
dHlwZW5hbWUgVHJlZVR5cGU6OmNvbnN0X3JlZmVyZW5jZTsKKyAgdXNpbmcgc2l6ZV90eXBlID0g
dHlwZW5hbWUgVHJlZVR5cGU6OnNpemVfdHlwZTsKKyAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0g
dHlwZW5hbWUgVHJlZVR5cGU6OmRpZmZlcmVuY2VfdHlwZTsKKyAgdXNpbmcgaXRlcmF0b3IgPSB0
eXBlbmFtZSBUcmVlVHlwZTo6aXRlcmF0b3I7CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gdHlw
ZW5hbWUgVHJlZVR5cGU6OmNvbnN0X2l0ZXJhdG9yOworICB1c2luZyByZXZlcnNlX2l0ZXJhdG9y
ID0gdHlwZW5hbWUgVHJlZVR5cGU6OnJldmVyc2VfaXRlcmF0b3I7CisgIHVzaW5nIGNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3IgPSB0eXBlbmFtZSBUcmVlVHlwZTo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRv
cjsKKworIHB1YmxpYzoKKyAgYmFzZV9jaGVja2VyKCkgOiBjb25zdF90cmVlXyh0cmVlXykge30K
KyAgYmFzZV9jaGVja2VyKGNvbnN0IGJhc2VfY2hlY2tlciAmeCkKKyAgICAgIDogdHJlZV8oeC50
cmVlXyksIGNvbnN0X3RyZWVfKHRyZWVfKSwgY2hlY2tlcl8oeC5jaGVja2VyXykge30KKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+CisgIGJhc2VfY2hlY2tlcihJbnB1dEl0ZXJh
dG9yIGIsIElucHV0SXRlcmF0b3IgZSkKKyAgICAgIDogdHJlZV8oYiwgZSksIGNvbnN0X3RyZWVf
KHRyZWVfKSwgY2hlY2tlcl8oYiwgZSkge30KKworICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJu
IHRyZWVfLmJlZ2luKCk7IH0KKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biB0cmVlXy5iZWdpbigpOyB9CisgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIHRyZWVfLmVuZCgp
OyB9CisgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLmVuZCgpOyB9
CisgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeyByZXR1cm4gdHJlZV8ucmJlZ2luKCk7IH0K
KyAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiB0cmVlXy5y
YmVnaW4oKTsgfQorICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiB0cmVlXy5yZW5k
KCk7IH0KKyAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QgeyByZXR1cm4gdHJl
ZV8ucmVuZCgpOyB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJUeXBlLCB0eXBlbmFtZSBD
aGVja2VySXRlclR5cGU+CisgIEl0ZXJUeXBlIGl0ZXJfY2hlY2soSXRlclR5cGUgdHJlZV9pdGVy
LCBDaGVja2VySXRlclR5cGUgY2hlY2tlcl9pdGVyKSBjb25zdCB7CisgICAgaWYgKHRyZWVfaXRl
ciA9PSB0cmVlXy5lbmQoKSkgeworICAgICAgQUJTTF9JTlRFUk5BTF9DSEVDSyhjaGVja2VyX2l0
ZXIgPT0gY2hlY2tlcl8uZW5kKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGVja2Vy
IGl0ZXJhdG9yIG5vdCBhdCBlbmQuIik7CisgICAgfSBlbHNlIHsKKyAgICAgIENoZWNrUGFpckVx
dWFscygqdHJlZV9pdGVyLCAqY2hlY2tlcl9pdGVyKTsKKyAgICB9CisgICAgcmV0dXJuIHRyZWVf
aXRlcjsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlclR5cGUsIHR5cGVuYW1lIENoZWNr
ZXJJdGVyVHlwZT4KKyAgSXRlclR5cGUgcml0ZXJfY2hlY2soSXRlclR5cGUgdHJlZV9pdGVyLCBD
aGVja2VySXRlclR5cGUgY2hlY2tlcl9pdGVyKSBjb25zdCB7CisgICAgaWYgKHRyZWVfaXRlciA9
PSB0cmVlXy5yZW5kKCkpIHsKKyAgICAgIEFCU0xfSU5URVJOQUxfQ0hFQ0soY2hlY2tlcl9pdGVy
ID09IGNoZWNrZXJfLnJlbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNrZXIg
aXRlcmF0b3Igbm90IGF0IHJlbmQuIik7CisgICAgfSBlbHNlIHsKKyAgICAgIENoZWNrUGFpckVx
dWFscygqdHJlZV9pdGVyLCAqY2hlY2tlcl9pdGVyKTsKKyAgICB9CisgICAgcmV0dXJuIHRyZWVf
aXRlcjsKKyAgfQorICB2b2lkIHZhbHVlX2NoZWNrKGNvbnN0IHZhbHVlX3R5cGUgJngpIHsKKyAg
ICB0eXBlbmFtZSBLZXlPZlZhbHVlPHR5cGVuYW1lIFRyZWVUeXBlOjprZXlfdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFRyZWVUeXBlOjp2YWx1ZV90eXBlPjo6dHlwZSBr
ZXlfb2ZfdmFsdWU7CisgICAgY29uc3Qga2V5X3R5cGUgJmtleSA9IGtleV9vZl92YWx1ZSh4KTsK
KyAgICBDaGVja1BhaXJFcXVhbHMoKmZpbmQoa2V5KSwgeCk7CisgICAgbG93ZXJfYm91bmQoa2V5
KTsKKyAgICB1cHBlcl9ib3VuZChrZXkpOworICAgIGVxdWFsX3JhbmdlKGtleSk7CisgICAgY29u
dGFpbnMoa2V5KTsKKyAgICBjb3VudChrZXkpOworICB9CisgIHZvaWQgZXJhc2VfY2hlY2soY29u
c3Qga2V5X3R5cGUgJmtleSkgeworICAgIEVYUEVDVF9GQUxTRSh0cmVlXy5jb250YWlucyhrZXkp
KTsKKyAgICBFWFBFQ1RfRVEodHJlZV8uZmluZChrZXkpLCBjb25zdF90cmVlXy5lbmQoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGNvbnN0X3RyZWVfLmNvbnRhaW5zKGtleSkpOworICAgIEVYUEVDVF9F
UShjb25zdF90cmVlXy5maW5kKGtleSksIHRyZWVfLmVuZCgpKTsKKyAgICBFWFBFQ1RfRVEodHJl
ZV8uZXF1YWxfcmFuZ2Uoa2V5KS5maXJzdCwKKyAgICAgICAgICAgICAgY29uc3RfdHJlZV8uZXF1
YWxfcmFuZ2Uoa2V5KS5zZWNvbmQpOworICB9CisKKyAgaXRlcmF0b3IgbG93ZXJfYm91bmQoY29u
c3Qga2V5X3R5cGUgJmtleSkgeworICAgIHJldHVybiBpdGVyX2NoZWNrKHRyZWVfLmxvd2VyX2Jv
dW5kKGtleSksIGNoZWNrZXJfLmxvd2VyX2JvdW5kKGtleSkpOworICB9CisgIGNvbnN0X2l0ZXJh
dG9yIGxvd2VyX2JvdW5kKGNvbnN0IGtleV90eXBlICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4g
aXRlcl9jaGVjayh0cmVlXy5sb3dlcl9ib3VuZChrZXkpLCBjaGVja2VyXy5sb3dlcl9ib3VuZChr
ZXkpKTsKKyAgfQorICBpdGVyYXRvciB1cHBlcl9ib3VuZChjb25zdCBrZXlfdHlwZSAma2V5KSB7
CisgICAgcmV0dXJuIGl0ZXJfY2hlY2sodHJlZV8udXBwZXJfYm91bmQoa2V5KSwgY2hlY2tlcl8u
dXBwZXJfYm91bmQoa2V5KSk7CisgIH0KKyAgY29uc3RfaXRlcmF0b3IgdXBwZXJfYm91bmQoY29u
c3Qga2V5X3R5cGUgJmtleSkgY29uc3QgeworICAgIHJldHVybiBpdGVyX2NoZWNrKHRyZWVfLnVw
cGVyX2JvdW5kKGtleSksIGNoZWNrZXJfLnVwcGVyX2JvdW5kKGtleSkpOworICB9CisgIHN0ZDo6
cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+IGVxdWFsX3JhbmdlKGNvbnN0IGtleV90eXBlICZrZXkp
IHsKKyAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgQ2hlY2tlclR5cGU6Oml0ZXJhdG9yLCB0eXBlbmFt
ZSBDaGVja2VyVHlwZTo6aXRlcmF0b3I+CisgICAgICAgIGNoZWNrZXJfcmVzID0gY2hlY2tlcl8u
ZXF1YWxfcmFuZ2Uoa2V5KTsKKyAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9yPiB0cmVl
X3JlcyA9IHRyZWVfLmVxdWFsX3JhbmdlKGtleSk7CisgICAgaXRlcl9jaGVjayh0cmVlX3Jlcy5m
aXJzdCwgY2hlY2tlcl9yZXMuZmlyc3QpOworICAgIGl0ZXJfY2hlY2sodHJlZV9yZXMuc2Vjb25k
LCBjaGVja2VyX3Jlcy5zZWNvbmQpOworICAgIHJldHVybiB0cmVlX3JlczsKKyAgfQorICBzdGQ6
OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPiBlcXVhbF9yYW5nZSgKKyAgICAg
IGNvbnN0IGtleV90eXBlICZrZXkpIGNvbnN0IHsKKyAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgQ2hl
Y2tlclR5cGU6OmNvbnN0X2l0ZXJhdG9yLAorICAgICAgICAgICAgICB0eXBlbmFtZSBDaGVja2Vy
VHlwZTo6Y29uc3RfaXRlcmF0b3I+CisgICAgICAgIGNoZWNrZXJfcmVzID0gY2hlY2tlcl8uZXF1
YWxfcmFuZ2Uoa2V5KTsKKyAgICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJh
dG9yPiB0cmVlX3JlcyA9IHRyZWVfLmVxdWFsX3JhbmdlKGtleSk7CisgICAgaXRlcl9jaGVjayh0
cmVlX3Jlcy5maXJzdCwgY2hlY2tlcl9yZXMuZmlyc3QpOworICAgIGl0ZXJfY2hlY2sodHJlZV9y
ZXMuc2Vjb25kLCBjaGVja2VyX3Jlcy5zZWNvbmQpOworICAgIHJldHVybiB0cmVlX3JlczsKKyAg
fQorICBpdGVyYXRvciBmaW5kKGNvbnN0IGtleV90eXBlICZrZXkpIHsKKyAgICByZXR1cm4gaXRl
cl9jaGVjayh0cmVlXy5maW5kKGtleSksIGNoZWNrZXJfLmZpbmQoa2V5KSk7CisgIH0KKyAgY29u
c3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSAma2V5KSBjb25zdCB7CisgICAgcmV0dXJu
IGl0ZXJfY2hlY2sodHJlZV8uZmluZChrZXkpLCBjaGVja2VyXy5maW5kKGtleSkpOworICB9Cisg
IGJvb2wgY29udGFpbnMoY29uc3Qga2V5X3R5cGUgJmtleSkgY29uc3QgeworICAgIHJldHVybiBm
aW5kKGtleSkgIT0gZW5kKCk7CisgIH0KKyAgc2l6ZV90eXBlIGNvdW50KGNvbnN0IGtleV90eXBl
ICZrZXkpIGNvbnN0IHsKKyAgICBzaXplX3R5cGUgcmVzID0gY2hlY2tlcl8uY291bnQoa2V5KTsK
KyAgICBFWFBFQ1RfRVEocmVzLCB0cmVlXy5jb3VudChrZXkpKTsKKyAgICByZXR1cm4gcmVzOwor
ICB9CisKKyAgYmFzZV9jaGVja2VyICZvcGVyYXRvcj0oY29uc3QgYmFzZV9jaGVja2VyICZ4KSB7
CisgICAgdHJlZV8gPSB4LnRyZWVfOworICAgIGNoZWNrZXJfID0geC5jaGVja2VyXzsKKyAgICBy
ZXR1cm4gKnRoaXM7CisgIH0KKworICBpbnQgZXJhc2UoY29uc3Qga2V5X3R5cGUgJmtleSkgewor
ICAgIGludCBzaXplID0gdHJlZV8uc2l6ZSgpOworICAgIGludCByZXMgPSBjaGVja2VyXy5lcmFz
ZShrZXkpOworICAgIEVYUEVDVF9FUShyZXMsIHRyZWVfLmNvdW50KGtleSkpOworICAgIEVYUEVD
VF9FUShyZXMsIHRyZWVfLmVyYXNlKGtleSkpOworICAgIEVYUEVDVF9FUSh0cmVlXy5jb3VudChr
ZXkpLCAwKTsKKyAgICBFWFBFQ1RfRVEodHJlZV8uc2l6ZSgpLCBzaXplIC0gcmVzKTsKKyAgICBl
cmFzZV9jaGVjayhrZXkpOworICAgIHJldHVybiByZXM7CisgIH0KKyAgaXRlcmF0b3IgZXJhc2Uo
aXRlcmF0b3IgaXRlcikgeworICAgIGtleV90eXBlIGtleSA9IGl0ZXIua2V5KCk7CisgICAgaW50
IHNpemUgPSB0cmVlXy5zaXplKCk7CisgICAgaW50IGNvdW50ID0gdHJlZV8uY291bnQoa2V5KTsK
KyAgICBhdXRvIGNoZWNrZXJfaXRlciA9IGNoZWNrZXJfLmxvd2VyX2JvdW5kKGtleSk7CisgICAg
Zm9yIChpdGVyYXRvciB0bXAodHJlZV8ubG93ZXJfYm91bmQoa2V5KSk7IHRtcCAhPSBpdGVyOyAr
K3RtcCkgeworICAgICAgKytjaGVja2VyX2l0ZXI7CisgICAgfQorICAgIGF1dG8gY2hlY2tlcl9u
ZXh0ID0gY2hlY2tlcl9pdGVyOworICAgICsrY2hlY2tlcl9uZXh0OworICAgIGNoZWNrZXJfLmVy
YXNlKGNoZWNrZXJfaXRlcik7CisgICAgaXRlciA9IHRyZWVfLmVyYXNlKGl0ZXIpOworICAgIEVY
UEVDVF9FUSh0cmVlXy5zaXplKCksIGNoZWNrZXJfLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKHRy
ZWVfLnNpemUoKSwgc2l6ZSAtIDEpOworICAgIEVYUEVDVF9FUSh0cmVlXy5jb3VudChrZXkpLCBj
b3VudCAtIDEpOworICAgIGlmIChjb3VudCA9PSAxKSB7CisgICAgICBlcmFzZV9jaGVjayhrZXkp
OworICAgIH0KKyAgICByZXR1cm4gaXRlcl9jaGVjayhpdGVyLCBjaGVja2VyX25leHQpOworICB9
CisKKyAgdm9pZCBlcmFzZShpdGVyYXRvciBiZWdpbiwgaXRlcmF0b3IgZW5kKSB7CisgICAgaW50
IHNpemUgPSB0cmVlXy5zaXplKCk7CisgICAgaW50IGNvdW50ID0gc3RkOjpkaXN0YW5jZShiZWdp
biwgZW5kKTsKKyAgICBhdXRvIGNoZWNrZXJfYmVnaW4gPSBjaGVja2VyXy5sb3dlcl9ib3VuZChi
ZWdpbi5rZXkoKSk7CisgICAgZm9yIChpdGVyYXRvciB0bXAodHJlZV8ubG93ZXJfYm91bmQoYmVn
aW4ua2V5KCkpKTsgdG1wICE9IGJlZ2luOyArK3RtcCkgeworICAgICAgKytjaGVja2VyX2JlZ2lu
OworICAgIH0KKyAgICBhdXRvIGNoZWNrZXJfZW5kID0KKyAgICAgICAgZW5kID09IHRyZWVfLmVu
ZCgpID8gY2hlY2tlcl8uZW5kKCkgOiBjaGVja2VyXy5sb3dlcl9ib3VuZChlbmQua2V5KCkpOwor
ICAgIGlmIChlbmQgIT0gdHJlZV8uZW5kKCkpIHsKKyAgICAgIGZvciAoaXRlcmF0b3IgdG1wKHRy
ZWVfLmxvd2VyX2JvdW5kKGVuZC5rZXkoKSkpOyB0bXAgIT0gZW5kOyArK3RtcCkgeworICAgICAg
ICArK2NoZWNrZXJfZW5kOworICAgICAgfQorICAgIH0KKyAgICBjaGVja2VyXy5lcmFzZShjaGVj
a2VyX2JlZ2luLCBjaGVja2VyX2VuZCk7CisgICAgdHJlZV8uZXJhc2UoYmVnaW4sIGVuZCk7Cisg
ICAgRVhQRUNUX0VRKHRyZWVfLnNpemUoKSwgY2hlY2tlcl8uc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEodHJlZV8uc2l6ZSgpLCBzaXplIC0gY291bnQpOworICB9CisKKyAgdm9pZCBjbGVhcigpIHsK
KyAgICB0cmVlXy5jbGVhcigpOworICAgIGNoZWNrZXJfLmNsZWFyKCk7CisgIH0KKyAgdm9pZCBz
d2FwKGJhc2VfY2hlY2tlciAmeCkgeworICAgIHRyZWVfLnN3YXAoeC50cmVlXyk7CisgICAgY2hl
Y2tlcl8uc3dhcCh4LmNoZWNrZXJfKTsKKyAgfQorCisgIHZvaWQgdmVyaWZ5KCkgY29uc3Qgewor
ICAgIHRyZWVfLnZlcmlmeSgpOworICAgIEVYUEVDVF9FUSh0cmVlXy5zaXplKCksIGNoZWNrZXJf
LnNpemUoKSk7CisKKyAgICAvLyBNb3ZlIHRocm91Z2ggdGhlIGZvcndhcmQgaXRlcmF0b3JzIHVz
aW5nIGluY3JlbWVudC4KKyAgICBhdXRvIGNoZWNrZXJfaXRlciA9IGNoZWNrZXJfLmJlZ2luKCk7
CisgICAgY29uc3RfaXRlcmF0b3IgdHJlZV9pdGVyKHRyZWVfLmJlZ2luKCkpOworICAgIGZvciAo
OyB0cmVlX2l0ZXIgIT0gdHJlZV8uZW5kKCk7ICsrdHJlZV9pdGVyLCArK2NoZWNrZXJfaXRlcikg
eworICAgICAgQ2hlY2tQYWlyRXF1YWxzKCp0cmVlX2l0ZXIsICpjaGVja2VyX2l0ZXIpOworICAg
IH0KKworICAgIC8vIE1vdmUgdGhyb3VnaCB0aGUgZm9yd2FyZCBpdGVyYXRvcnMgdXNpbmcgZGVj
cmVtZW50LgorICAgIGZvciAoaW50IG4gPSB0cmVlXy5zaXplKCkgLSAxOyBuID49IDA7IC0tbikg
eworICAgICAgaXRlcl9jaGVjayh0cmVlX2l0ZXIsIGNoZWNrZXJfaXRlcik7CisgICAgICAtLXRy
ZWVfaXRlcjsKKyAgICAgIC0tY2hlY2tlcl9pdGVyOworICAgIH0KKyAgICBFWFBFQ1RfRVEodHJl
ZV9pdGVyLCB0cmVlXy5iZWdpbigpKTsKKyAgICBFWFBFQ1RfRVEoY2hlY2tlcl9pdGVyLCBjaGVj
a2VyXy5iZWdpbigpKTsKKworICAgIC8vIE1vdmUgdGhyb3VnaCB0aGUgcmV2ZXJzZSBpdGVyYXRv
cnMgdXNpbmcgaW5jcmVtZW50LgorICAgIGF1dG8gY2hlY2tlcl9yaXRlciA9IGNoZWNrZXJfLnJi
ZWdpbigpOworICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgdHJlZV9yaXRlcih0cmVlXy5yYmVn
aW4oKSk7CisgICAgZm9yICg7IHRyZWVfcml0ZXIgIT0gdHJlZV8ucmVuZCgpOyArK3RyZWVfcml0
ZXIsICsrY2hlY2tlcl9yaXRlcikgeworICAgICAgQ2hlY2tQYWlyRXF1YWxzKCp0cmVlX3JpdGVy
LCAqY2hlY2tlcl9yaXRlcik7CisgICAgfQorCisgICAgLy8gTW92ZSB0aHJvdWdoIHRoZSByZXZl
cnNlIGl0ZXJhdG9ycyB1c2luZyBkZWNyZW1lbnQuCisgICAgZm9yIChpbnQgbiA9IHRyZWVfLnNp
emUoKSAtIDE7IG4gPj0gMDsgLS1uKSB7CisgICAgICByaXRlcl9jaGVjayh0cmVlX3JpdGVyLCBj
aGVja2VyX3JpdGVyKTsKKyAgICAgIC0tdHJlZV9yaXRlcjsKKyAgICAgIC0tY2hlY2tlcl9yaXRl
cjsKKyAgICB9CisgICAgRVhQRUNUX0VRKHRyZWVfcml0ZXIsIHRyZWVfLnJiZWdpbigpKTsKKyAg
ICBFWFBFQ1RfRVEoY2hlY2tlcl9yaXRlciwgY2hlY2tlcl8ucmJlZ2luKCkpOworICB9CisKKyAg
Y29uc3QgVHJlZVR5cGUgJnRyZWUoKSBjb25zdCB7IHJldHVybiB0cmVlXzsgfQorCisgIHNpemVf
dHlwZSBzaXplKCkgY29uc3QgeworICAgIEVYUEVDVF9FUSh0cmVlXy5zaXplKCksIGNoZWNrZXJf
LnNpemUoKSk7CisgICAgcmV0dXJuIHRyZWVfLnNpemUoKTsKKyAgfQorICBzaXplX3R5cGUgbWF4
X3NpemUoKSBjb25zdCB7IHJldHVybiB0cmVlXy5tYXhfc2l6ZSgpOyB9CisgIGJvb2wgZW1wdHko
KSBjb25zdCB7CisgICAgRVhQRUNUX0VRKHRyZWVfLmVtcHR5KCksIGNoZWNrZXJfLmVtcHR5KCkp
OworICAgIHJldHVybiB0cmVlXy5lbXB0eSgpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIFRyZWVU
eXBlIHRyZWVfOworICBjb25zdCBUcmVlVHlwZSAmY29uc3RfdHJlZV87CisgIENoZWNrZXJUeXBl
IGNoZWNrZXJfOworfTsKKworbmFtZXNwYWNlIHsKKy8vIEEgY2hlY2tlciBmb3IgdW5pcXVlIHNv
cnRlZCBhc3NvY2lhdGl2ZSBjb250YWluZXJzLiBUcmVlVHlwZSBpcyBleHBlY3RlZCB0bworLy8g
YmUgYnRyZWVfe3NldCxtYXB9IGFuZCBDaGVja2VyVHlwZSBpcyBleHBlY3RlZCB0byBiZSB7c2V0
LG1hcH0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZVR5cGUsIHR5cGVuYW1lIENoZWNrZXJUeXBl
PgorY2xhc3MgdW5pcXVlX2NoZWNrZXIgOiBwdWJsaWMgYmFzZV9jaGVja2VyPFRyZWVUeXBlLCBD
aGVja2VyVHlwZT4geworICB1c2luZyBzdXBlcl90eXBlID0gYmFzZV9jaGVja2VyPFRyZWVUeXBl
LCBDaGVja2VyVHlwZT47CisKKyBwdWJsaWM6CisgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5hbWUg
c3VwZXJfdHlwZTo6aXRlcmF0b3I7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBzdXBl
cl90eXBlOjp2YWx1ZV90eXBlOworCisgcHVibGljOgorICB1bmlxdWVfY2hlY2tlcigpIDogc3Vw
ZXJfdHlwZSgpIHt9CisgIHVuaXF1ZV9jaGVja2VyKGNvbnN0IHVuaXF1ZV9jaGVja2VyICZ4KSA6
IHN1cGVyX3R5cGUoeCkge30KKyAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+CisgIHVu
aXF1ZV9jaGVja2VyKElucHV0SXRlcmF0b3IgYiwgSW5wdXRJdGVyYXRvciBlKSA6IHN1cGVyX3R5
cGUoYiwgZSkge30KKworICAvLyBJbnNlcnRpb24gcm91dGluZXMuCisgIHN0ZDo6cGFpcjxpdGVy
YXRvciwgYm9vbD4gaW5zZXJ0KGNvbnN0IHZhbHVlX3R5cGUgJngpIHsKKyAgICBpbnQgc2l6ZSA9
IHRoaXMtPnRyZWVfLnNpemUoKTsKKyAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgQ2hlY2tlclR5cGU6
Oml0ZXJhdG9yLCBib29sPiBjaGVja2VyX3JlcyA9CisgICAgICAgIHRoaXMtPmNoZWNrZXJfLmlu
c2VydCh4KTsKKyAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHRyZWVfcmVzID0gdGhpcy0+
dHJlZV8uaW5zZXJ0KHgpOworICAgIENoZWNrUGFpckVxdWFscygqdHJlZV9yZXMuZmlyc3QsICpj
aGVja2VyX3Jlcy5maXJzdCk7CisgICAgRVhQRUNUX0VRKHRyZWVfcmVzLnNlY29uZCwgY2hlY2tl
cl9yZXMuc2Vjb25kKTsKKyAgICBFWFBFQ1RfRVEodGhpcy0+dHJlZV8uc2l6ZSgpLCB0aGlzLT5j
aGVja2VyXy5zaXplKCkpOworICAgIEVYUEVDVF9FUSh0aGlzLT50cmVlXy5zaXplKCksIHNpemUg
KyB0cmVlX3Jlcy5zZWNvbmQpOworICAgIHJldHVybiB0cmVlX3JlczsKKyAgfQorICBpdGVyYXRv
ciBpbnNlcnQoaXRlcmF0b3IgcG9zaXRpb24sIGNvbnN0IHZhbHVlX3R5cGUgJngpIHsKKyAgICBp
bnQgc2l6ZSA9IHRoaXMtPnRyZWVfLnNpemUoKTsKKyAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgQ2hl
Y2tlclR5cGU6Oml0ZXJhdG9yLCBib29sPiBjaGVja2VyX3JlcyA9CisgICAgICAgIHRoaXMtPmNo
ZWNrZXJfLmluc2VydCh4KTsKKyAgICBpdGVyYXRvciB0cmVlX3JlcyA9IHRoaXMtPnRyZWVfLmlu
c2VydChwb3NpdGlvbiwgeCk7CisgICAgQ2hlY2tQYWlyRXF1YWxzKCp0cmVlX3JlcywgKmNoZWNr
ZXJfcmVzLmZpcnN0KTsKKyAgICBFWFBFQ1RfRVEodGhpcy0+dHJlZV8uc2l6ZSgpLCB0aGlzLT5j
aGVja2VyXy5zaXplKCkpOworICAgIEVYUEVDVF9FUSh0aGlzLT50cmVlXy5zaXplKCksIHNpemUg
KyBjaGVja2VyX3Jlcy5zZWNvbmQpOworICAgIHJldHVybiB0cmVlX3JlczsKKyAgfQorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgdm9pZCBpbnNlcnQoSW5wdXRJdGVyYXRv
ciBiLCBJbnB1dEl0ZXJhdG9yIGUpIHsKKyAgICBmb3IgKDsgYiAhPSBlOyArK2IpIHsKKyAgICAg
IGluc2VydCgqYik7CisgICAgfQorICB9Cit9OworCisvLyBBIGNoZWNrZXIgZm9yIG11bHRpcGxl
IHNvcnRlZCBhc3NvY2lhdGl2ZSBjb250YWluZXJzLiBUcmVlVHlwZSBpcyBleHBlY3RlZAorLy8g
dG8gYmUgYnRyZWVfe211bHRpc2V0LG11bHRpbWFwfSBhbmQgQ2hlY2tlclR5cGUgaXMgZXhwZWN0
ZWQgdG8gYmUKKy8vIHttdWx0aXNldCxtdWx0aW1hcH0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJl
ZVR5cGUsIHR5cGVuYW1lIENoZWNrZXJUeXBlPgorY2xhc3MgbXVsdGlfY2hlY2tlciA6IHB1Ymxp
YyBiYXNlX2NoZWNrZXI8VHJlZVR5cGUsIENoZWNrZXJUeXBlPiB7CisgIHVzaW5nIHN1cGVyX3R5
cGUgPSBiYXNlX2NoZWNrZXI8VHJlZVR5cGUsIENoZWNrZXJUeXBlPjsKKworIHB1YmxpYzoKKyAg
dXNpbmcgaXRlcmF0b3IgPSB0eXBlbmFtZSBzdXBlcl90eXBlOjppdGVyYXRvcjsKKyAgdXNpbmcg
dmFsdWVfdHlwZSA9IHR5cGVuYW1lIHN1cGVyX3R5cGU6OnZhbHVlX3R5cGU7CisKKyBwdWJsaWM6
CisgIG11bHRpX2NoZWNrZXIoKSA6IHN1cGVyX3R5cGUoKSB7fQorICBtdWx0aV9jaGVja2VyKGNv
bnN0IG11bHRpX2NoZWNrZXIgJngpIDogc3VwZXJfdHlwZSh4KSB7fQorICB0ZW1wbGF0ZSA8Y2xh
c3MgSW5wdXRJdGVyYXRvcj4KKyAgbXVsdGlfY2hlY2tlcihJbnB1dEl0ZXJhdG9yIGIsIElucHV0
SXRlcmF0b3IgZSkgOiBzdXBlcl90eXBlKGIsIGUpIHt9CisKKyAgLy8gSW5zZXJ0aW9uIHJvdXRp
bmVzLgorICBpdGVyYXRvciBpbnNlcnQoY29uc3QgdmFsdWVfdHlwZSAmeCkgeworICAgIGludCBz
aXplID0gdGhpcy0+dHJlZV8uc2l6ZSgpOworICAgIGF1dG8gY2hlY2tlcl9yZXMgPSB0aGlzLT5j
aGVja2VyXy5pbnNlcnQoeCk7CisgICAgaXRlcmF0b3IgdHJlZV9yZXMgPSB0aGlzLT50cmVlXy5p
bnNlcnQoeCk7CisgICAgQ2hlY2tQYWlyRXF1YWxzKCp0cmVlX3JlcywgKmNoZWNrZXJfcmVzKTsK
KyAgICBFWFBFQ1RfRVEodGhpcy0+dHJlZV8uc2l6ZSgpLCB0aGlzLT5jaGVja2VyXy5zaXplKCkp
OworICAgIEVYUEVDVF9FUSh0aGlzLT50cmVlXy5zaXplKCksIHNpemUgKyAxKTsKKyAgICByZXR1
cm4gdHJlZV9yZXM7CisgIH0KKyAgaXRlcmF0b3IgaW5zZXJ0KGl0ZXJhdG9yIHBvc2l0aW9uLCBj
b25zdCB2YWx1ZV90eXBlICZ4KSB7CisgICAgaW50IHNpemUgPSB0aGlzLT50cmVlXy5zaXplKCk7
CisgICAgYXV0byBjaGVja2VyX3JlcyA9IHRoaXMtPmNoZWNrZXJfLmluc2VydCh4KTsKKyAgICBp
dGVyYXRvciB0cmVlX3JlcyA9IHRoaXMtPnRyZWVfLmluc2VydChwb3NpdGlvbiwgeCk7CisgICAg
Q2hlY2tQYWlyRXF1YWxzKCp0cmVlX3JlcywgKmNoZWNrZXJfcmVzKTsKKyAgICBFWFBFQ1RfRVEo
dGhpcy0+dHJlZV8uc2l6ZSgpLCB0aGlzLT5jaGVja2VyXy5zaXplKCkpOworICAgIEVYUEVDVF9F
USh0aGlzLT50cmVlXy5zaXplKCksIHNpemUgKyAxKTsKKyAgICByZXR1cm4gdHJlZV9yZXM7Cisg
IH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+CisgIHZvaWQgaW5zZXJ0KElu
cHV0SXRlcmF0b3IgYiwgSW5wdXRJdGVyYXRvciBlKSB7CisgICAgZm9yICg7IGIgIT0gZTsgKyti
KSB7CisgICAgICBpbnNlcnQoKmIpOworICAgIH0KKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFY+Cit2b2lkIERvVGVzdChjb25zdCBjaGFyICpuYW1lLCBUICpiLCBj
b25zdCBzdGQ6OnZlY3RvcjxWPiAmdmFsdWVzKSB7CisgIHR5cGVuYW1lIEtleU9mVmFsdWU8dHlw
ZW5hbWUgVDo6a2V5X3R5cGUsIFY+Ojp0eXBlIGtleV9vZl92YWx1ZTsKKworICBUICZtdXRhYmxl
X2IgPSAqYjsKKyAgY29uc3QgVCAmY29uc3RfYiA9ICpiOworCisgIC8vIFRlc3QgaW5zZXJ0Lgor
ICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIG11dGFibGVf
Yi5pbnNlcnQodmFsdWVzW2ldKTsKKyAgICBtdXRhYmxlX2IudmFsdWVfY2hlY2sodmFsdWVzW2ld
KTsKKyAgfQorICBBU1NFUlRfRVEobXV0YWJsZV9iLnNpemUoKSwgdmFsdWVzLnNpemUoKSk7CisK
KyAgY29uc3RfYi52ZXJpZnkoKTsKKworICAvLyBUZXN0IGNvcHkgY29uc3RydWN0b3IuCisgIFQg
Yl9jb3B5KGNvbnN0X2IpOworICBFWFBFQ1RfRVEoYl9jb3B5LnNpemUoKSwgY29uc3RfYi5zaXpl
KCkpOworICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIENo
ZWNrUGFpckVxdWFscygqYl9jb3B5LmZpbmQoa2V5X29mX3ZhbHVlKHZhbHVlc1tpXSkpLCB2YWx1
ZXNbaV0pOworICB9CisKKyAgLy8gVGVzdCByYW5nZSBjb25zdHJ1Y3Rvci4KKyAgVCBiX3Jhbmdl
KGNvbnN0X2IuYmVnaW4oKSwgY29uc3RfYi5lbmQoKSk7CisgIEVYUEVDVF9FUShiX3JhbmdlLnNp
emUoKSwgY29uc3RfYi5zaXplKCkpOworICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXpl
KCk7ICsraSkgeworICAgIENoZWNrUGFpckVxdWFscygqYl9yYW5nZS5maW5kKGtleV9vZl92YWx1
ZSh2YWx1ZXNbaV0pKSwgdmFsdWVzW2ldKTsKKyAgfQorCisgIC8vIFRlc3QgcmFuZ2UgaW5zZXJ0
aW9uIGZvciB2YWx1ZXMgdGhhdCBhbHJlYWR5IGV4aXN0LgorICBiX3JhbmdlLmluc2VydChiX2Nv
cHkuYmVnaW4oKSwgYl9jb3B5LmVuZCgpKTsKKyAgYl9yYW5nZS52ZXJpZnkoKTsKKworICAvLyBU
ZXN0IHJhbmdlIGluc2VydGlvbiBmb3IgbmV3IHZhbHVlcy4KKyAgYl9yYW5nZS5jbGVhcigpOwor
ICBiX3JhbmdlLmluc2VydChiX2NvcHkuYmVnaW4oKSwgYl9jb3B5LmVuZCgpKTsKKyAgRVhQRUNU
X0VRKGJfcmFuZ2Uuc2l6ZSgpLCBiX2NvcHkuc2l6ZSgpKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBDaGVja1BhaXJFcXVhbHMoKmJfcmFuZ2UuZmlu
ZChrZXlfb2ZfdmFsdWUodmFsdWVzW2ldKSksIHZhbHVlc1tpXSk7CisgIH0KKworICAvLyBUZXN0
IGFzc2lnbm1lbnQgdG8gc2VsZi4gTm90aGluZyBzaG91bGQgY2hhbmdlLgorICBiX3JhbmdlLm9w
ZXJhdG9yPShiX3JhbmdlKTsKKyAgRVhQRUNUX0VRKGJfcmFuZ2Uuc2l6ZSgpLCBiX2NvcHkuc2l6
ZSgpKTsKKworICAvLyBUZXN0IGFzc2lnbm1lbnQgb2YgbmV3IHZhbHVlcy4KKyAgYl9yYW5nZS5j
bGVhcigpOworICBiX3JhbmdlID0gYl9jb3B5OworICBFWFBFQ1RfRVEoYl9yYW5nZS5zaXplKCks
IGJfY29weS5zaXplKCkpOworCisgIC8vIFRlc3Qgc3dhcC4KKyAgYl9yYW5nZS5jbGVhcigpOwor
ICBiX3JhbmdlLnN3YXAoYl9jb3B5KTsKKyAgRVhQRUNUX0VRKGJfY29weS5zaXplKCksIDApOwor
ICBFWFBFQ1RfRVEoYl9yYW5nZS5zaXplKCksIGNvbnN0X2Iuc2l6ZSgpKTsKKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBDaGVja1BhaXJFcXVhbHMoKmJf
cmFuZ2UuZmluZChrZXlfb2ZfdmFsdWUodmFsdWVzW2ldKSksIHZhbHVlc1tpXSk7CisgIH0KKyAg
Yl9yYW5nZS5zd2FwKGJfY29weSk7CisKKyAgLy8gVGVzdCBub24tbWVtYmVyIGZ1bmN0aW9uIHN3
YXAuCisgIHN3YXAoYl9yYW5nZSwgYl9jb3B5KTsKKyAgRVhQRUNUX0VRKGJfY29weS5zaXplKCks
IDApOworICBFWFBFQ1RfRVEoYl9yYW5nZS5zaXplKCksIGNvbnN0X2Iuc2l6ZSgpKTsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBDaGVja1BhaXJFcXVh
bHMoKmJfcmFuZ2UuZmluZChrZXlfb2ZfdmFsdWUodmFsdWVzW2ldKSksIHZhbHVlc1tpXSk7Cisg
IH0KKyAgc3dhcChiX3JhbmdlLCBiX2NvcHkpOworCisgIC8vIFRlc3QgZXJhc2UgdmlhIHZhbHVl
cy4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBtdXRh
YmxlX2IuZXJhc2Uoa2V5X29mX3ZhbHVlKHZhbHVlc1tpXSkpOworICAgIC8vIEVyYXNpbmcgYSBu
b24tZXhpc3RlbnQga2V5IHNob3VsZCBoYXZlIG5vIGVmZmVjdC4KKyAgICBBU1NFUlRfRVEobXV0
YWJsZV9iLmVyYXNlKGtleV9vZl92YWx1ZSh2YWx1ZXNbaV0pKSwgMCk7CisgIH0KKworICBjb25z
dF9iLnZlcmlmeSgpOworICBFWFBFQ1RfRVEoY29uc3RfYi5zaXplKCksIDApOworCisgIC8vIFRl
c3QgZXJhc2UgdmlhIGl0ZXJhdG9ycy4KKyAgbXV0YWJsZV9iID0gYl9jb3B5OworICBmb3IgKGlu
dCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIG11dGFibGVfYi5lcmFzZSht
dXRhYmxlX2IuZmluZChrZXlfb2ZfdmFsdWUodmFsdWVzW2ldKSkpOworICB9CisKKyAgY29uc3Rf
Yi52ZXJpZnkoKTsKKyAgRVhQRUNUX0VRKGNvbnN0X2Iuc2l6ZSgpLCAwKTsKKworICAvLyBUZXN0
IGluc2VydCB3aXRoIGhpbnQuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsg
aSsrKSB7CisgICAgbXV0YWJsZV9iLmluc2VydChtdXRhYmxlX2IudXBwZXJfYm91bmQoa2V5X29m
X3ZhbHVlKHZhbHVlc1tpXSkpLCB2YWx1ZXNbaV0pOworICB9CisKKyAgY29uc3RfYi52ZXJpZnko
KTsKKworICAvLyBUZXN0IHJhbmdlIGVyYXNlLgorICBtdXRhYmxlX2IuZXJhc2UobXV0YWJsZV9i
LmJlZ2luKCksIG11dGFibGVfYi5lbmQoKSk7CisgIEVYUEVDVF9FUShtdXRhYmxlX2Iuc2l6ZSgp
LCAwKTsKKyAgY29uc3RfYi52ZXJpZnkoKTsKKworICAvLyBGaXJzdCBoYWxmLgorICBtdXRhYmxl
X2IgPSBiX2NvcHk7CisgIHR5cGVuYW1lIFQ6Oml0ZXJhdG9yIG11dGFibGVfaXRlcl9lbmQgPSBt
dXRhYmxlX2IuYmVnaW4oKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpIC8g
MjsgKytpKSArK211dGFibGVfaXRlcl9lbmQ7CisgIG11dGFibGVfYi5lcmFzZShtdXRhYmxlX2Iu
YmVnaW4oKSwgbXV0YWJsZV9pdGVyX2VuZCk7CisgIEVYUEVDVF9FUShtdXRhYmxlX2Iuc2l6ZSgp
LCB2YWx1ZXMuc2l6ZSgpIC0gdmFsdWVzLnNpemUoKSAvIDIpOworICBjb25zdF9iLnZlcmlmeSgp
OworCisgIC8vIFNlY29uZCBoYWxmLgorICBtdXRhYmxlX2IgPSBiX2NvcHk7CisgIHR5cGVuYW1l
IFQ6Oml0ZXJhdG9yIG11dGFibGVfaXRlcl9iZWdpbiA9IG11dGFibGVfYi5iZWdpbigpOworICBm
b3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCkgLyAyOyArK2kpICsrbXV0YWJsZV9pdGVy
X2JlZ2luOworICBtdXRhYmxlX2IuZXJhc2UobXV0YWJsZV9pdGVyX2JlZ2luLCBtdXRhYmxlX2Iu
ZW5kKCkpOworICBFWFBFQ1RfRVEobXV0YWJsZV9iLnNpemUoKSwgdmFsdWVzLnNpemUoKSAvIDIp
OworICBjb25zdF9iLnZlcmlmeSgpOworCisgIC8vIFNlY29uZCBxdWFydGVyLgorICBtdXRhYmxl
X2IgPSBiX2NvcHk7CisgIG11dGFibGVfaXRlcl9iZWdpbiA9IG11dGFibGVfYi5iZWdpbigpOwor
ICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCkgLyA0OyArK2kpICsrbXV0YWJsZV9p
dGVyX2JlZ2luOworICBtdXRhYmxlX2l0ZXJfZW5kID0gbXV0YWJsZV9pdGVyX2JlZ2luOworICBm
b3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCkgLyA0OyArK2kpICsrbXV0YWJsZV9pdGVy
X2VuZDsKKyAgbXV0YWJsZV9iLmVyYXNlKG11dGFibGVfaXRlcl9iZWdpbiwgbXV0YWJsZV9pdGVy
X2VuZCk7CisgIEVYUEVDVF9FUShtdXRhYmxlX2Iuc2l6ZSgpLCB2YWx1ZXMuc2l6ZSgpIC0gdmFs
dWVzLnNpemUoKSAvIDQpOworICBjb25zdF9iLnZlcmlmeSgpOworCisgIG11dGFibGVfYi5jbGVh
cigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgQ29uc3RUZXN0KCkgeworICB1
c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgVDo6dmFsdWVfdHlwZTsKKyAgdHlwZW5hbWUgS2V5
T2ZWYWx1ZTx0eXBlbmFtZSBUOjprZXlfdHlwZSwgdmFsdWVfdHlwZT46OnR5cGUga2V5X29mX3Zh
bHVlOworCisgIFQgbXV0YWJsZV9iOworICBjb25zdCBUICZjb25zdF9iID0gbXV0YWJsZV9iOwor
CisgIC8vIEluc2VydCBhIHNpbmdsZSB2YWx1ZSBpbnRvIHRoZSBjb250YWluZXIgYW5kIHRlc3Qg
bG9va2luZyBpdCB1cC4KKyAgdmFsdWVfdHlwZSB2YWx1ZSA9IEdlbmVyYXRvcjx2YWx1ZV90eXBl
PigyKSgyKTsKKyAgbXV0YWJsZV9iLmluc2VydCh2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKG11dGFi
bGVfYi5jb250YWlucyhrZXlfb2ZfdmFsdWUodmFsdWUpKSk7CisgIEVYUEVDVF9ORShtdXRhYmxl
X2IuZmluZChrZXlfb2ZfdmFsdWUodmFsdWUpKSwgY29uc3RfYi5lbmQoKSk7CisgIEVYUEVDVF9U
UlVFKGNvbnN0X2IuY29udGFpbnMoa2V5X29mX3ZhbHVlKHZhbHVlKSkpOworICBFWFBFQ1RfTkUo
Y29uc3RfYi5maW5kKGtleV9vZl92YWx1ZSh2YWx1ZSkpLCBtdXRhYmxlX2IuZW5kKCkpOworICBF
WFBFQ1RfRVEoKmNvbnN0X2IubG93ZXJfYm91bmQoa2V5X29mX3ZhbHVlKHZhbHVlKSksIHZhbHVl
KTsKKyAgRVhQRUNUX0VRKGNvbnN0X2IudXBwZXJfYm91bmQoa2V5X29mX3ZhbHVlKHZhbHVlKSks
IGNvbnN0X2IuZW5kKCkpOworICBFWFBFQ1RfRVEoKmNvbnN0X2IuZXF1YWxfcmFuZ2Uoa2V5X29m
X3ZhbHVlKHZhbHVlKSkuZmlyc3QsIHZhbHVlKTsKKworICAvLyBXZSBjYW4gb25seSBjcmVhdGUg
YSBub24tY29uc3QgaXRlcmF0b3IgZnJvbSBhIG5vbi1jb25zdCBjb250YWluZXIuCisgIHR5cGVu
YW1lIFQ6Oml0ZXJhdG9yIG11dGFibGVfaXRlcihtdXRhYmxlX2IuYmVnaW4oKSk7CisgIEVYUEVD
VF9FUShtdXRhYmxlX2l0ZXIsIGNvbnN0X2IuYmVnaW4oKSk7CisgIEVYUEVDVF9ORShtdXRhYmxl
X2l0ZXIsIGNvbnN0X2IuZW5kKCkpOworICBFWFBFQ1RfRVEoY29uc3RfYi5iZWdpbigpLCBtdXRh
YmxlX2l0ZXIpOworICBFWFBFQ1RfTkUoY29uc3RfYi5lbmQoKSwgbXV0YWJsZV9pdGVyKTsKKyAg
dHlwZW5hbWUgVDo6cmV2ZXJzZV9pdGVyYXRvciBtdXRhYmxlX3JpdGVyKG11dGFibGVfYi5yYmVn
aW4oKSk7CisgIEVYUEVDVF9FUShtdXRhYmxlX3JpdGVyLCBjb25zdF9iLnJiZWdpbigpKTsKKyAg
RVhQRUNUX05FKG11dGFibGVfcml0ZXIsIGNvbnN0X2IucmVuZCgpKTsKKyAgRVhQRUNUX0VRKGNv
bnN0X2IucmJlZ2luKCksIG11dGFibGVfcml0ZXIpOworICBFWFBFQ1RfTkUoY29uc3RfYi5yZW5k
KCksIG11dGFibGVfcml0ZXIpOworCisgIC8vIFdlIGNhbiBjcmVhdGUgYSBjb25zdCBpdGVyYXRv
ciBmcm9tIGEgbm9uLWNvbnN0IGl0ZXJhdG9yLgorICB0eXBlbmFtZSBUOjpjb25zdF9pdGVyYXRv
ciBjb25zdF9pdGVyKG11dGFibGVfaXRlcik7CisgIEVYUEVDVF9FUShjb25zdF9pdGVyLCBtdXRh
YmxlX2IuYmVnaW4oKSk7CisgIEVYUEVDVF9ORShjb25zdF9pdGVyLCBtdXRhYmxlX2IuZW5kKCkp
OworICBFWFBFQ1RfRVEobXV0YWJsZV9iLmJlZ2luKCksIGNvbnN0X2l0ZXIpOworICBFWFBFQ1Rf
TkUobXV0YWJsZV9iLmVuZCgpLCBjb25zdF9pdGVyKTsKKyAgdHlwZW5hbWUgVDo6Y29uc3RfcmV2
ZXJzZV9pdGVyYXRvciBjb25zdF9yaXRlcihtdXRhYmxlX3JpdGVyKTsKKyAgRVhQRUNUX0VRKGNv
bnN0X3JpdGVyLCBtdXRhYmxlX2IucmJlZ2luKCkpOworICBFWFBFQ1RfTkUoY29uc3Rfcml0ZXIs
IG11dGFibGVfYi5yZW5kKCkpOworICBFWFBFQ1RfRVEobXV0YWJsZV9iLnJiZWdpbigpLCBjb25z
dF9yaXRlcik7CisgIEVYUEVDVF9ORShtdXRhYmxlX2IucmVuZCgpLCBjb25zdF9yaXRlcik7CisK
KyAgLy8gTWFrZSBzdXJlIHZhcmlvdXMgbWV0aG9kcyBjYW4gYmUgaW52b2tlZCBvbiBhIGNvbnN0
IGNvbnRhaW5lci4KKyAgY29uc3RfYi52ZXJpZnkoKTsKKyAgQVNTRVJUX1RSVUUoIWNvbnN0X2Iu
ZW1wdHkoKSk7CisgIEVYUEVDVF9FUShjb25zdF9iLnNpemUoKSwgMSk7CisgIEVYUEVDVF9HVChj
b25zdF9iLm1heF9zaXplKCksIDApOworICBFWFBFQ1RfVFJVRShjb25zdF9iLmNvbnRhaW5zKGtl
eV9vZl92YWx1ZSh2YWx1ZSkpKTsKKyAgRVhQRUNUX0VRKGNvbnN0X2IuY291bnQoa2V5X29mX3Zh
bHVlKHZhbHVlKSksIDEpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4K
K3ZvaWQgQnRyZWVUZXN0KCkgeworICBDb25zdFRlc3Q8VD4oKTsKKworICB1c2luZyBWID0gdHlw
ZW5hbWUgcmVtb3ZlX3BhaXJfY29uc3Q8dHlwZW5hbWUgVDo6dmFsdWVfdHlwZT46OnR5cGU7Cisg
IGNvbnN0IHN0ZDo6dmVjdG9yPFY+IHJhbmRvbV92YWx1ZXMgPSBHZW5lcmF0ZVZhbHVlc1dpdGhT
ZWVkPFY+KAorICAgICAgYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X3ZhbHVlcyksIDQgKiBhYnNs
OjpHZXRGbGFnKEZMQUdTX3Rlc3RfdmFsdWVzKSwKKyAgICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUco
cmFuZG9tX3NlZWQpKTsKKworICB1bmlxdWVfY2hlY2tlcjxULCBDPiBjb250YWluZXI7CisKKyAg
Ly8gVGVzdCBrZXkgaW5zZXJ0aW9uL2RlbGV0aW9uIGluIHNvcnRlZCBvcmRlci4KKyAgc3RkOjp2
ZWN0b3I8Vj4gc29ydGVkX3ZhbHVlcyhyYW5kb21fdmFsdWVzKTsKKyAgc3RkOjpzb3J0KHNvcnRl
ZF92YWx1ZXMuYmVnaW4oKSwgc29ydGVkX3ZhbHVlcy5lbmQoKSk7CisgIERvVGVzdCgic29ydGVk
OiAgICAiLCAmY29udGFpbmVyLCBzb3J0ZWRfdmFsdWVzKTsKKworICAvLyBUZXN0IGtleSBpbnNl
cnRpb24vZGVsZXRpb24gaW4gcmV2ZXJzZSBzb3J0ZWQgb3JkZXIuCisgIHN0ZDo6cmV2ZXJzZShz
b3J0ZWRfdmFsdWVzLmJlZ2luKCksIHNvcnRlZF92YWx1ZXMuZW5kKCkpOworICBEb1Rlc3QoInJz
b3J0ZWQ6ICAgIiwgJmNvbnRhaW5lciwgc29ydGVkX3ZhbHVlcyk7CisKKyAgLy8gVGVzdCBrZXkg
aW5zZXJ0aW9uL2RlbGV0aW9uIGluIHJhbmRvbSBvcmRlci4KKyAgRG9UZXN0KCJyYW5kb206ICAg
ICIsICZjb250YWluZXIsIHJhbmRvbV92YWx1ZXMpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgQz4KK3ZvaWQgQnRyZWVNdWx0aVRlc3QoKSB7CisgIENvbnN0VGVzdDxUPigp
OworCisgIHVzaW5nIFYgPSB0eXBlbmFtZSByZW1vdmVfcGFpcl9jb25zdDx0eXBlbmFtZSBUOjp2
YWx1ZV90eXBlPjo6dHlwZTsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8Vj4gcmFuZG9tX3ZhbHVlcyA9
IEdlbmVyYXRlVmFsdWVzV2l0aFNlZWQ8Vj4oCisgICAgICBhYnNsOjpHZXRGbGFnKEZMQUdTX3Rl
c3RfdmFsdWVzKSwgNCAqIGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF92YWx1ZXMpLAorICAgICAg
dGVzdGluZzo6R1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpOworCisgIG11bHRpX2NoZWNrZXI8VCwg
Qz4gY29udGFpbmVyOworCisgIC8vIFRlc3Qga2V5cyBpbiBzb3J0ZWQgb3JkZXIuCisgIHN0ZDo6
dmVjdG9yPFY+IHNvcnRlZF92YWx1ZXMocmFuZG9tX3ZhbHVlcyk7CisgIHN0ZDo6c29ydChzb3J0
ZWRfdmFsdWVzLmJlZ2luKCksIHNvcnRlZF92YWx1ZXMuZW5kKCkpOworICBEb1Rlc3QoInNvcnRl
ZDogICAgIiwgJmNvbnRhaW5lciwgc29ydGVkX3ZhbHVlcyk7CisKKyAgLy8gVGVzdCBrZXlzIGlu
IHJldmVyc2Ugc29ydGVkIG9yZGVyLgorICBzdGQ6OnJldmVyc2Uoc29ydGVkX3ZhbHVlcy5iZWdp
bigpLCBzb3J0ZWRfdmFsdWVzLmVuZCgpKTsKKyAgRG9UZXN0KCJyc29ydGVkOiAgICIsICZjb250
YWluZXIsIHNvcnRlZF92YWx1ZXMpOworCisgIC8vIFRlc3Qga2V5cyBpbiByYW5kb20gb3JkZXIu
CisgIERvVGVzdCgicmFuZG9tOiAgICAiLCAmY29udGFpbmVyLCByYW5kb21fdmFsdWVzKTsKKwor
ICAvLyBUZXN0IGtleXMgaW4gcmFuZG9tIG9yZGVyIHcvIGR1cGxpY2F0ZXMuCisgIHN0ZDo6dmVj
dG9yPFY+IGR1cGxpY2F0ZV92YWx1ZXMocmFuZG9tX3ZhbHVlcyk7CisgIGR1cGxpY2F0ZV92YWx1
ZXMuaW5zZXJ0KGR1cGxpY2F0ZV92YWx1ZXMuZW5kKCksIHJhbmRvbV92YWx1ZXMuYmVnaW4oKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX3ZhbHVlcy5lbmQoKSk7CisgIERvVGVz
dCgiZHVwbGljYXRlczoiLCAmY29udGFpbmVyLCBkdXBsaWNhdGVfdmFsdWVzKTsKKworICAvLyBU
ZXN0IGFsbCBpZGVudGljYWwga2V5cy4KKyAgc3RkOjp2ZWN0b3I8Vj4gaWRlbnRpY2FsX3ZhbHVl
cygxMDApOworICBzdGQ6OmZpbGwoaWRlbnRpY2FsX3ZhbHVlcy5iZWdpbigpLCBpZGVudGljYWxf
dmFsdWVzLmVuZCgpLAorICAgICAgICAgICAgR2VuZXJhdG9yPFY+KDIpKDIpKTsKKyAgRG9UZXN0
KCJpZGVudGljYWw6ICIsICZjb250YWluZXIsIGlkZW50aWNhbF92YWx1ZXMpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBQcm9wYWdhdGluZ0NvdW50aW5nQWxsb2MgOiBwdWJs
aWMgQ291bnRpbmdBbGxvY2F0b3I8VD4geworICB1c2luZyBwcm9wYWdhdGVfb25fY29udGFpbmVy
X2NvcHlfYXNzaWdubWVudCA9IHN0ZDo6dHJ1ZV90eXBlOworICB1c2luZyBwcm9wYWdhdGVfb25f
Y29udGFpbmVyX21vdmVfYXNzaWdubWVudCA9IHN0ZDo6dHJ1ZV90eXBlOworICB1c2luZyBwcm9w
YWdhdGVfb25fY29udGFpbmVyX3N3YXAgPSBzdGQ6OnRydWVfdHlwZTsKKworICB1c2luZyBCYXNl
ID0gQ291bnRpbmdBbGxvY2F0b3I8VD47CisgIHVzaW5nIEJhc2U6OkJhc2U7CisKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFU+CisgIGV4cGxpY2l0IFByb3BhZ2F0aW5nQ291bnRpbmdBbGxvYyhjb25z
dCBQcm9wYWdhdGluZ0NvdW50aW5nQWxsb2M8VT4gJm90aGVyKQorICAgICAgOiBCYXNlKG90aGVy
LmJ5dGVzX3VzZWRfKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzdHJ1Y3QgcmVi
aW5kIHsKKyAgICB1c2luZyBvdGhlciA9IFByb3BhZ2F0aW5nQ291bnRpbmdBbGxvYzxVPjsKKyAg
fTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBCdHJlZUFsbG9jYXRvclRlc3Qo
KSB7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBUOjp2YWx1ZV90eXBlOworCisgIGlu
dDY0X3QgYnl0ZXMxID0gMCwgYnl0ZXMyID0gMDsKKyAgUHJvcGFnYXRpbmdDb3VudGluZ0FsbG9j
PFQ+IGFsbG9jYXRvcjEoJmJ5dGVzMSk7CisgIFByb3BhZ2F0aW5nQ291bnRpbmdBbGxvYzxUPiBh
bGxvY2F0b3IyKCZieXRlczIpOworICBHZW5lcmF0b3I8dmFsdWVfdHlwZT4gZ2VuZXJhdG9yKDEw
MDApOworCisgIC8vIFRlc3QgdGhhdCB3ZSBhbGxvY2F0ZSBwcm9wZXJseSBhbGlnbmVkIG1lbW9y
eS4gSWYgd2UgZG9uJ3QsIHRoZW4gTGF5b3V0CisgIC8vIHdpbGwgYXNzZXJ0IGZhaWwuCisgIGF1
dG8gdW51c2VkMSA9IGFsbG9jYXRvcjEuYWxsb2NhdGUoMSk7CisgIGF1dG8gdW51c2VkMiA9IGFs
bG9jYXRvcjIuYWxsb2NhdGUoMSk7CisKKyAgLy8gVGVzdCBjb3B5IGFzc2lnbm1lbnQKKyAgewor
ICAgIFQgYjEodHlwZW5hbWUgVDo6a2V5X2NvbXBhcmUoKSwgYWxsb2NhdG9yMSk7CisgICAgVCBi
Mih0eXBlbmFtZSBUOjprZXlfY29tcGFyZSgpLCBhbGxvY2F0b3IyKTsKKworICAgIGludDY0X3Qg
b3JpZ2luYWxfYnl0ZXMxID0gYnl0ZXMxOworICAgIGIxLmluc2VydChnZW5lcmF0b3IoMCkpOwor
ICAgIEVYUEVDVF9HVChieXRlczEsIG9yaWdpbmFsX2J5dGVzMSk7CisKKyAgICAvLyBUaGlzIHNo
b3VsZCBwcm9wYWdhdGUgdGhlIGFsbG9jYXRvci4KKyAgICBiMSA9IGIyOworICAgIEVYUEVDVF9F
UShiMS5zaXplKCksIDApOworICAgIEVYUEVDVF9FUShiMi5zaXplKCksIDApOworICAgIEVYUEVD
VF9FUShieXRlczEsIG9yaWdpbmFsX2J5dGVzMSk7CisKKyAgICBmb3IgKGludCBpID0gMTsgaSA8
IDEwMDA7IGkrKykgeworICAgICAgYjEuaW5zZXJ0KGdlbmVyYXRvcihpKSk7CisgICAgfQorCisg
ICAgLy8gV2Ugc2hvdWxkIGhhdmUgYWxsb2NhdGVkIG91dCBvZiBhbGxvY2F0b3IyLgorICAgIEVY
UEVDVF9HVChieXRlczIsIGJ5dGVzMSk7CisgIH0KKworICAvLyBUZXN0IG1vdmUgYXNzaWdubWVu
dAorICB7CisgICAgVCBiMSh0eXBlbmFtZSBUOjprZXlfY29tcGFyZSgpLCBhbGxvY2F0b3IxKTsK
KyAgICBUIGIyKHR5cGVuYW1lIFQ6OmtleV9jb21wYXJlKCksIGFsbG9jYXRvcjIpOworCisgICAg
aW50NjRfdCBvcmlnaW5hbF9ieXRlczEgPSBieXRlczE7CisgICAgYjEuaW5zZXJ0KGdlbmVyYXRv
cigwKSk7CisgICAgRVhQRUNUX0dUKGJ5dGVzMSwgb3JpZ2luYWxfYnl0ZXMxKTsKKworICAgIC8v
IFRoaXMgc2hvdWxkIHByb3BhZ2F0ZSB0aGUgYWxsb2NhdG9yLgorICAgIGIxID0gc3RkOjptb3Zl
KGIyKTsKKyAgICBFWFBFQ1RfRVEoYjEuc2l6ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEoYnl0ZXMx
LCBvcmlnaW5hbF9ieXRlczEpOworCisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAxMDAwOyBpKysp
IHsKKyAgICAgIGIxLmluc2VydChnZW5lcmF0b3IoaSkpOworICAgIH0KKworICAgIC8vIFdlIHNo
b3VsZCBoYXZlIGFsbG9jYXRlZCBvdXQgb2YgYWxsb2NhdG9yMi4KKyAgICBFWFBFQ1RfR1QoYnl0
ZXMyLCBieXRlczEpOworICB9CisKKyAgLy8gVGVzdCBzd2FwCisgIHsKKyAgICBUIGIxKHR5cGVu
YW1lIFQ6OmtleV9jb21wYXJlKCksIGFsbG9jYXRvcjEpOworICAgIFQgYjIodHlwZW5hbWUgVDo6
a2V5X2NvbXBhcmUoKSwgYWxsb2NhdG9yMik7CisKKyAgICBpbnQ2NF90IG9yaWdpbmFsX2J5dGVz
MSA9IGJ5dGVzMTsKKyAgICBiMS5pbnNlcnQoZ2VuZXJhdG9yKDApKTsKKyAgICBFWFBFQ1RfR1Qo
Ynl0ZXMxLCBvcmlnaW5hbF9ieXRlczEpOworCisgICAgLy8gVGhpcyBzaG91bGQgc3dhcCB0aGUg
YWxsb2NhdG9ycy4KKyAgICBzd2FwKGIxLCBiMik7CisgICAgRVhQRUNUX0VRKGIxLnNpemUoKSwg
MCk7CisgICAgRVhQRUNUX0VRKGIyLnNpemUoKSwgMSk7CisgICAgRVhQRUNUX0dUKGJ5dGVzMSwg
b3JpZ2luYWxfYnl0ZXMxKTsKKworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMTAwMDsgaSsrKSB7
CisgICAgICBiMS5pbnNlcnQoZ2VuZXJhdG9yKGkpKTsKKyAgICB9CisKKyAgICAvLyBXZSBzaG91
bGQgaGF2ZSBhbGxvY2F0ZWQgb3V0IG9mIGFsbG9jYXRvcjIuCisgICAgRVhQRUNUX0dUKGJ5dGVz
MiwgYnl0ZXMxKTsKKyAgfQorCisgIGFsbG9jYXRvcjEuZGVhbGxvY2F0ZSh1bnVzZWQxLCAxKTsK
KyAgYWxsb2NhdG9yMi5kZWFsbG9jYXRlKHVudXNlZDIsIDEpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgQnRyZWVNYXBUZXN0KCkgeworICB1c2luZyB2YWx1ZV90eXBlID0gdHlw
ZW5hbWUgVDo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgbWFwcGVkX3R5cGUgPSB0eXBlbmFtZSBUOjpt
YXBwZWRfdHlwZTsKKworICBtYXBwZWRfdHlwZSBtID0gR2VuZXJhdG9yPG1hcHBlZF90eXBlPigw
KSgwKTsKKyAgKHZvaWQpbTsKKworICBUIGI7CisKKyAgLy8gVmVyaWZ5IHdlIGNhbiBpbnNlcnQg
dXNpbmcgb3BlcmF0b3JbXS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAg
ICB2YWx1ZV90eXBlIHYgPSBHZW5lcmF0b3I8dmFsdWVfdHlwZT4oMTAwMCkoaSk7CisgICAgYlt2
LmZpcnN0XSA9IHYuc2Vjb25kOworICB9CisgIEVYUEVDVF9FUShiLnNpemUoKSwgMTAwMCk7CisK
KyAgLy8gVGVzdCB3aGV0aGVyIHdlIGNhbiB1c2UgdGhlICItPiIgb3BlcmF0b3Igb24gaXRlcmF0
b3JzIGFuZAorICAvLyByZXZlcnNlX2l0ZXJhdG9ycy4gVGhpcyBzdHJlc3NlcyB0aGUgYnRyZWVf
bWFwX3BhcmFtczo6cGFpcl9wb2ludGVyCisgIC8vIG1lY2hhbmlzbS4KKyAgRVhQRUNUX0VRKGIu
YmVnaW4oKS0+Zmlyc3QsIEdlbmVyYXRvcjx2YWx1ZV90eXBlPigxMDAwKSgwKS5maXJzdCk7Cisg
IEVYUEVDVF9FUShiLmJlZ2luKCktPnNlY29uZCwgR2VuZXJhdG9yPHZhbHVlX3R5cGU+KDEwMDAp
KDApLnNlY29uZCk7CisgIEVYUEVDVF9FUShiLnJiZWdpbigpLT5maXJzdCwgR2VuZXJhdG9yPHZh
bHVlX3R5cGU+KDEwMDApKDk5OSkuZmlyc3QpOworICBFWFBFQ1RfRVEoYi5yYmVnaW4oKS0+c2Vj
b25kLCBHZW5lcmF0b3I8dmFsdWVfdHlwZT4oMTAwMCkoOTk5KS5zZWNvbmQpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgQnRyZWVNdWx0aU1hcFRlc3QoKSB7CisgIHVzaW5nIG1h
cHBlZF90eXBlID0gdHlwZW5hbWUgVDo6bWFwcGVkX3R5cGU7CisgIG1hcHBlZF90eXBlIG0gPSBH
ZW5lcmF0b3I8bWFwcGVkX3R5cGU+KDApKDApOworICAodm9pZCltOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSywgaW50IE4gPSAyNTY+Cit2b2lkIFNldFRlc3QoKSB7CisgIEVYUEVDVF9FUSgK
KyAgICAgIHNpemVvZihhYnNsOjpidHJlZV9zZXQ8Sz4pLAorICAgICAgMiAqIHNpemVvZih2b2lk
ICopICsgc2l6ZW9mKHR5cGVuYW1lIGFic2w6OmJ0cmVlX3NldDxLPjo6c2l6ZV90eXBlKSk7Cisg
IHVzaW5nIEJ0cmVlU2V0ID0gYWJzbDo6YnRyZWVfc2V0PEs+OworICB1c2luZyBDb3VudGluZ0J0
cmVlU2V0ID0KKyAgICAgIGFic2w6OmJ0cmVlX3NldDxLLCBzdGQ6Omxlc3M8Sz4sIFByb3BhZ2F0
aW5nQ291bnRpbmdBbGxvYzxLPj47CisgIEJ0cmVlVGVzdDxCdHJlZVNldCwgc3RkOjpzZXQ8Sz4+
KCk7CisgIEJ0cmVlQWxsb2NhdG9yVGVzdDxDb3VudGluZ0J0cmVlU2V0PigpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgSywgaW50IE4gPSAyNTY+Cit2b2lkIE1hcFRlc3QoKSB7CisgIEVYUEVD
VF9FUSgKKyAgICAgIHNpemVvZihhYnNsOjpidHJlZV9tYXA8SywgSz4pLAorICAgICAgMiAqIHNp
emVvZih2b2lkICopICsgc2l6ZW9mKHR5cGVuYW1lIGFic2w6OmJ0cmVlX21hcDxLLCBLPjo6c2l6
ZV90eXBlKSk7CisgIHVzaW5nIEJ0cmVlTWFwID0gYWJzbDo6YnRyZWVfbWFwPEssIEs+OworICB1
c2luZyBDb3VudGluZ0J0cmVlTWFwID0KKyAgICAgIGFic2w6OmJ0cmVlX21hcDxLLCBLLCBzdGQ6
Omxlc3M8Sz4sCisgICAgICAgICAgICAgICAgICAgICAgUHJvcGFnYXRpbmdDb3VudGluZ0FsbG9j
PHN0ZDo6cGFpcjxjb25zdCBLLCBLPj4+OworICBCdHJlZVRlc3Q8QnRyZWVNYXAsIHN0ZDo6bWFw
PEssIEs+PigpOworICBCdHJlZUFsbG9jYXRvclRlc3Q8Q291bnRpbmdCdHJlZU1hcD4oKTsKKyAg
QnRyZWVNYXBUZXN0PEJ0cmVlTWFwPigpOworfQorCitURVNUKEJ0cmVlLCBzZXRfaW50MzIpIHsg
U2V0VGVzdDxpbnQzMl90PigpOyB9CitURVNUKEJ0cmVlLCBzZXRfaW50NjQpIHsgU2V0VGVzdDxp
bnQ2NF90PigpOyB9CitURVNUKEJ0cmVlLCBzZXRfc3RyaW5nKSB7IFNldFRlc3Q8c3RkOjpzdHJp
bmc+KCk7IH0KK1RFU1QoQnRyZWUsIHNldF9wYWlyKSB7IFNldFRlc3Q8c3RkOjpwYWlyPGludCwg
aW50Pj4oKTsgfQorVEVTVChCdHJlZSwgbWFwX2ludDMyKSB7IE1hcFRlc3Q8aW50MzJfdD4oKTsg
fQorVEVTVChCdHJlZSwgbWFwX2ludDY0KSB7IE1hcFRlc3Q8aW50NjRfdD4oKTsgfQorVEVTVChC
dHJlZSwgbWFwX3N0cmluZykgeyBNYXBUZXN0PHN0ZDo6c3RyaW5nPigpOyB9CitURVNUKEJ0cmVl
LCBtYXBfcGFpcikgeyBNYXBUZXN0PHN0ZDo6cGFpcjxpbnQsIGludD4+KCk7IH0KKwordGVtcGxh
dGUgPHR5cGVuYW1lIEssIGludCBOID0gMjU2Pgordm9pZCBNdWx0aVNldFRlc3QoKSB7CisgIEVY
UEVDVF9FUSgKKyAgICAgIHNpemVvZihhYnNsOjpidHJlZV9tdWx0aXNldDxLPiksCisgICAgICAy
ICogc2l6ZW9mKHZvaWQgKikgKyBzaXplb2YodHlwZW5hbWUgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8
Sz46OnNpemVfdHlwZSkpOworICB1c2luZyBCdHJlZU1TZXQgPSBhYnNsOjpidHJlZV9tdWx0aXNl
dDxLPjsKKyAgdXNpbmcgQ291bnRpbmdCdHJlZU1TZXQgPQorICAgICAgYWJzbDo6YnRyZWVfbXVs
dGlzZXQ8Sywgc3RkOjpsZXNzPEs+LCBQcm9wYWdhdGluZ0NvdW50aW5nQWxsb2M8Sz4+OworICBC
dHJlZU11bHRpVGVzdDxCdHJlZU1TZXQsIHN0ZDo6bXVsdGlzZXQ8Sz4+KCk7CisgIEJ0cmVlQWxs
b2NhdG9yVGVzdDxDb3VudGluZ0J0cmVlTVNldD4oKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IEssIGludCBOID0gMjU2Pgordm9pZCBNdWx0aU1hcFRlc3QoKSB7CisgIEVYUEVDVF9FUShzaXpl
b2YoYWJzbDo6YnRyZWVfbXVsdGltYXA8SywgSz4pLAorICAgICAgICAgICAgMiAqIHNpemVvZih2
b2lkICopICsKKyAgICAgICAgICAgICAgICBzaXplb2YodHlwZW5hbWUgYWJzbDo6YnRyZWVfbXVs
dGltYXA8SywgSz46OnNpemVfdHlwZSkpOworICB1c2luZyBCdHJlZU1NYXAgPSBhYnNsOjpidHJl
ZV9tdWx0aW1hcDxLLCBLPjsKKyAgdXNpbmcgQ291bnRpbmdCdHJlZU1NYXAgPQorICAgICAgYWJz
bDo6YnRyZWVfbXVsdGltYXA8SywgSywgc3RkOjpsZXNzPEs+LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJvcGFnYXRpbmdDb3VudGluZ0FsbG9jPHN0ZDo6cGFpcjxjb25zdCBLLCBLPj4+
OworICBCdHJlZU11bHRpVGVzdDxCdHJlZU1NYXAsIHN0ZDo6bXVsdGltYXA8SywgSz4+KCk7Cisg
IEJ0cmVlTXVsdGlNYXBUZXN0PEJ0cmVlTU1hcD4oKTsKKyAgQnRyZWVBbGxvY2F0b3JUZXN0PENv
dW50aW5nQnRyZWVNTWFwPigpOworfQorCitURVNUKEJ0cmVlLCBtdWx0aXNldF9pbnQzMikgeyBN
dWx0aVNldFRlc3Q8aW50MzJfdD4oKTsgfQorVEVTVChCdHJlZSwgbXVsdGlzZXRfaW50NjQpIHsg
TXVsdGlTZXRUZXN0PGludDY0X3Q+KCk7IH0KK1RFU1QoQnRyZWUsIG11bHRpc2V0X3N0cmluZykg
eyBNdWx0aVNldFRlc3Q8c3RkOjpzdHJpbmc+KCk7IH0KK1RFU1QoQnRyZWUsIG11bHRpc2V0X3Bh
aXIpIHsgTXVsdGlTZXRUZXN0PHN0ZDo6cGFpcjxpbnQsIGludD4+KCk7IH0KK1RFU1QoQnRyZWUs
IG11bHRpbWFwX2ludDMyKSB7IE11bHRpTWFwVGVzdDxpbnQzMl90PigpOyB9CitURVNUKEJ0cmVl
LCBtdWx0aW1hcF9pbnQ2NCkgeyBNdWx0aU1hcFRlc3Q8aW50NjRfdD4oKTsgfQorVEVTVChCdHJl
ZSwgbXVsdGltYXBfc3RyaW5nKSB7IE11bHRpTWFwVGVzdDxzdGQ6OnN0cmluZz4oKTsgfQorVEVT
VChCdHJlZSwgbXVsdGltYXBfcGFpcikgeyBNdWx0aU1hcFRlc3Q8c3RkOjpwYWlyPGludCwgaW50
Pj4oKTsgfQorCitzdHJ1Y3QgQ29tcGFyZUludFRvU3RyaW5nIHsKKyAgYm9vbCBvcGVyYXRvcigp
KGNvbnN0IHN0ZDo6c3RyaW5nICZhLCBjb25zdCBzdGQ6OnN0cmluZyAmYikgY29uc3QgeworICAg
IHJldHVybiBhIDwgYjsKKyAgfQorICBib29sIG9wZXJhdG9yKCkoY29uc3Qgc3RkOjpzdHJpbmcg
JmEsIGludCBiKSBjb25zdCB7CisgICAgcmV0dXJuIGEgPCBhYnNsOjpTdHJDYXQoYik7CisgIH0K
KyAgYm9vbCBvcGVyYXRvcigpKGludCBhLCBjb25zdCBzdGQ6OnN0cmluZyAmYikgY29uc3Qgewor
ICAgIHJldHVybiBhYnNsOjpTdHJDYXQoYSkgPCBiOworICB9CisgIHVzaW5nIGlzX3RyYW5zcGFy
ZW50ID0gdm9pZDsKK307CisKK3N0cnVjdCBOb25UcmFuc3BhcmVudENvbXBhcmUgeworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQm
IHQsIGNvbnN0IFUmIHUpIGNvbnN0IHsKKyAgICAvLyBUcmVhdGluZyBhbGwgY29tcGFyYXRvcnMg
YXMgdHJhbnNwYXJlbnQgY2FuIGNhdXNlIGluZWZmaWNpZW5jaWVzIChzZWUKKyAgICAvLyBOMzY1
NyBDKysgcHJvcG9zYWwpLiBUZXN0IHRoYXQgZm9yIGNvbXBhcmF0b3JzIHdpdGhvdXQgJ2lzX3Ry
YW5zcGFyZW50JworICAgIC8vIGFsaWFzIChsaWtlIHRoaXMgb25lKSwgd2UgZG8gbm90IGF0dGVt
cHQgaGV0ZXJvZ2VuZW91cyBsb29rdXAuCisgICAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTxU
LCBVPigpKSk7CisgICAgcmV0dXJuIHQgPCB1OworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2Jvb2wgQ2FuRXJhc2VXaXRoRW1wdHlCcmFjZShUIHQsIGRlY2x0eXBlKHQuZXJhc2Uo
e30pKSAqKSB7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jv
b2wgQ2FuRXJhc2VXaXRoRW1wdHlCcmFjZShULCAuLi4pIHsKKyAgcmV0dXJuIGZhbHNlOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVGVzdEhldGVyb2dlbmVvdXMoVCB0YWJsZSkg
eworICBhdXRvIGxiID0gdGFibGUubG93ZXJfYm91bmQoIjMiKTsKKyAgRVhQRUNUX0VRKGxiLCB0
YWJsZS5sb3dlcl9ib3VuZCgzKSk7CisgIEVYUEVDVF9ORShsYiwgdGFibGUubG93ZXJfYm91bmQo
NCkpOworICBFWFBFQ1RfRVEobGIsIHRhYmxlLmxvd2VyX2JvdW5kKHsiMyJ9KSk7CisgIEVYUEVD
VF9ORShsYiwgdGFibGUubG93ZXJfYm91bmQoe30pKTsKKworICBhdXRvIHViID0gdGFibGUudXBw
ZXJfYm91bmQoIjMiKTsKKyAgRVhQRUNUX0VRKHViLCB0YWJsZS51cHBlcl9ib3VuZCgzKSk7Cisg
IEVYUEVDVF9ORSh1YiwgdGFibGUudXBwZXJfYm91bmQoNSkpOworICBFWFBFQ1RfRVEodWIsIHRh
YmxlLnVwcGVyX2JvdW5kKHsiMyJ9KSk7CisgIEVYUEVDVF9ORSh1YiwgdGFibGUudXBwZXJfYm91
bmQoe30pKTsKKworICBhdXRvIGVyID0gdGFibGUuZXF1YWxfcmFuZ2UoIjMiKTsKKyAgRVhQRUNU
X0VRKGVyLCB0YWJsZS5lcXVhbF9yYW5nZSgzKSk7CisgIEVYUEVDVF9ORShlciwgdGFibGUuZXF1
YWxfcmFuZ2UoNCkpOworICBFWFBFQ1RfRVEoZXIsIHRhYmxlLmVxdWFsX3JhbmdlKHsiMyJ9KSk7
CisgIEVYUEVDVF9ORShlciwgdGFibGUuZXF1YWxfcmFuZ2Uoe30pKTsKKworICBhdXRvIGl0ID0g
dGFibGUuZmluZCgiMyIpOworICBFWFBFQ1RfRVEoaXQsIHRhYmxlLmZpbmQoMykpOworICBFWFBF
Q1RfTkUoaXQsIHRhYmxlLmZpbmQoNCkpOworICBFWFBFQ1RfRVEoaXQsIHRhYmxlLmZpbmQoeyIz
In0pKTsKKyAgRVhQRUNUX05FKGl0LCB0YWJsZS5maW5kKHt9KSk7CisKKyAgRVhQRUNUX1RSVUUo
dGFibGUuY29udGFpbnMoMykpOworICBFWFBFQ1RfRkFMU0UodGFibGUuY29udGFpbnMoNCkpOwor
ICBFWFBFQ1RfVFJVRSh0YWJsZS5jb3VudCh7IjMifSkpOworICBFWFBFQ1RfRkFMU0UodGFibGUu
Y29udGFpbnMoe30pKTsKKworICBFWFBFQ1RfRVEoMSwgdGFibGUuY291bnQoMykpOworICBFWFBF
Q1RfRVEoMCwgdGFibGUuY291bnQoNCkpOworICBFWFBFQ1RfRVEoMSwgdGFibGUuY291bnQoeyIz
In0pKTsKKyAgRVhQRUNUX0VRKDAsIHRhYmxlLmNvdW50KHt9KSk7CisKKyAgYXV0byBjb3B5ID0g
dGFibGU7CisgIGNvcHkuZXJhc2UoMyk7CisgIEVYUEVDVF9FUSh0YWJsZS5zaXplKCkgLSAxLCBj
b3B5LnNpemUoKSk7CisgIGNvcHkuZXJhc2UoNCk7CisgIEVYUEVDVF9FUSh0YWJsZS5zaXplKCkg
LSAxLCBjb3B5LnNpemUoKSk7CisgIGNvcHkuZXJhc2UoeyI1In0pOworICBFWFBFQ1RfRVEodGFi
bGUuc2l6ZSgpIC0gMiwgY29weS5zaXplKCkpOworICBFWFBFQ1RfRkFMU0UoQ2FuRXJhc2VXaXRo
RW1wdHlCcmFjZSh0YWJsZSwgbnVsbHB0cikpOworCisgIC8vIEFsc28gcnVuIGl0IHdpdGggY29u
c3QgVCYuCisgIGlmIChzdGQ6OmlzX2NsYXNzPFQ+KCkpIFRlc3RIZXRlcm9nZW5lb3VzPGNvbnN0
IFQgJj4odGFibGUpOworfQorCitURVNUKEJ0cmVlLCBIZXRlcm9nZW5lb3VzTG9va3VwKSB7Cisg
IFRlc3RIZXRlcm9nZW5lb3VzKGJ0cmVlX3NldDxzdGQ6OnN0cmluZywgQ29tcGFyZUludFRvU3Ry
aW5nPnsiMSIsICIzIiwgIjUifSk7CisgIFRlc3RIZXRlcm9nZW5lb3VzKGJ0cmVlX21hcDxzdGQ6
OnN0cmluZywgaW50LCBDb21wYXJlSW50VG9TdHJpbmc+eworICAgICAgeyIxIiwgMX0sIHsiMyIs
IDN9LCB7IjUiLCA1fX0pOworICBUZXN0SGV0ZXJvZ2VuZW91cygKKyAgICAgIGJ0cmVlX211bHRp
c2V0PHN0ZDo6c3RyaW5nLCBDb21wYXJlSW50VG9TdHJpbmc+eyIxIiwgIjMiLCAiNSJ9KTsKKyAg
VGVzdEhldGVyb2dlbmVvdXMoYnRyZWVfbXVsdGltYXA8c3RkOjpzdHJpbmcsIGludCwgQ29tcGFy
ZUludFRvU3RyaW5nPnsKKyAgICAgIHsiMSIsIDF9LCB7IjMiLCAzfSwgeyI1IiwgNX19KTsKKwor
ICAvLyBPbmx5IG1hcHMgaGF2ZSAuYXQoKQorICBidHJlZV9tYXA8c3RkOjpzdHJpbmcsIGludCwg
Q29tcGFyZUludFRvU3RyaW5nPiBtYXB7CisgICAgICB7IiIsIC0xfSwgeyIxIiwgMX0sIHsiMyIs
IDN9LCB7IjUiLCA1fX07CisgIEVYUEVDVF9FUSgxLCBtYXAuYXQoMSkpOworICBFWFBFQ1RfRVEo
MywgbWFwLmF0KHsiMyJ9KSk7CisgIEVYUEVDVF9FUSgtMSwgbWFwLmF0KHt9KSk7CisgIGNvbnN0
IGF1dG8gJmNtYXAgPSBtYXA7CisgIEVYUEVDVF9FUSgxLCBjbWFwLmF0KDEpKTsKKyAgRVhQRUNU
X0VRKDMsIGNtYXAuYXQoeyIzIn0pKTsKKyAgRVhQRUNUX0VRKC0xLCBjbWFwLmF0KHt9KSk7Cit9
CisKK1RFU1QoQnRyZWUsIE5vSGV0ZXJvZ2VuZW91c0xvb2t1cFdpdGhvdXRBbGlhcykgeworICB1
c2luZyBTdHJpbmdTZXQgPSBhYnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmcsIE5vblRyYW5zcGFy
ZW50Q29tcGFyZT47CisgIFN0cmluZ1NldCBzOworICBBU1NFUlRfVFJVRShzLmluc2VydCgiaGVs
bG8iKS5zZWNvbmQpOworICBBU1NFUlRfVFJVRShzLmluc2VydCgid29ybGQiKS5zZWNvbmQpOwor
ICBFWFBFQ1RfVFJVRShzLmVuZCgpID09IHMuZmluZCgiYmxhaCIpKTsKKyAgRVhQRUNUX1RSVUUo
cy5iZWdpbigpID09IHMubG93ZXJfYm91bmQoImhlbGxvIikpOworICBFWFBFQ1RfRVEoMSwgcy5j
b3VudCgid29ybGQiKSk7CisgIEVYUEVDVF9UUlVFKHMuY29udGFpbnMoImhlbGxvIikpOworICBF
WFBFQ1RfVFJVRShzLmNvbnRhaW5zKCJ3b3JsZCIpKTsKKyAgRVhQRUNUX0ZBTFNFKHMuY29udGFp
bnMoImJsYWgiKSk7CisKKyAgdXNpbmcgU3RyaW5nTXVsdGlTZXQgPQorICAgICAgYWJzbDo6YnRy
ZWVfbXVsdGlzZXQ8c3RkOjpzdHJpbmcsIE5vblRyYW5zcGFyZW50Q29tcGFyZT47CisgIFN0cmlu
Z011bHRpU2V0IG1zOworICBtcy5pbnNlcnQoImhlbGxvIik7CisgIG1zLmluc2VydCgid29ybGQi
KTsKKyAgbXMuaW5zZXJ0KCJ3b3JsZCIpOworICBFWFBFQ1RfVFJVRShtcy5lbmQoKSA9PSBtcy5m
aW5kKCJibGFoIikpOworICBFWFBFQ1RfVFJVRShtcy5iZWdpbigpID09IG1zLmxvd2VyX2JvdW5k
KCJoZWxsbyIpKTsKKyAgRVhQRUNUX0VRKDIsIG1zLmNvdW50KCJ3b3JsZCIpKTsKKyAgRVhQRUNU
X1RSVUUobXMuY29udGFpbnMoImhlbGxvIikpOworICBFWFBFQ1RfVFJVRShtcy5jb250YWlucygi
d29ybGQiKSk7CisgIEVYUEVDVF9GQUxTRShtcy5jb250YWlucygiYmxhaCIpKTsKK30KKworVEVT
VChCdHJlZSwgRGVmYXVsdFRyYW5zcGFyZW50KSB7CisgIHsKKyAgICAvLyBgaW50YCBkb2VzIG5v
dCBoYXZlIGEgZGVmYXVsdCB0cmFuc3BhcmVudCBjb21wYXJhdG9yLgorICAgIC8vIFRoZSBpbnB1
dCB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8ga2V5X3R5cGUuCisgICAgYnRyZWVfc2V0PGludD4gcyA9
IHsxfTsKKyAgICBkb3VibGUgZCA9IDEuMTsKKyAgICBFWFBFQ1RfRVEocy5iZWdpbigpLCBzLmZp
bmQoZCkpOworICAgIEVYUEVDVF9UUlVFKHMuY29udGFpbnMoZCkpOworICB9CisKKyAgeworICAg
IC8vIGBzdGQ6OnN0cmluZ2AgaGFzIGhldGVyb2dlbmVvdXMgc3VwcG9ydC4KKyAgICBidHJlZV9z
ZXQ8c3RkOjpzdHJpbmc+IHMgPSB7IkEifTsKKyAgICBFWFBFQ1RfRVEocy5iZWdpbigpLCBzLmZp
bmQoYWJzbDo6c3RyaW5nX3ZpZXcoIkEiKSkpOworICAgIEVYUEVDVF9UUlVFKHMuY29udGFpbnMo
YWJzbDo6c3RyaW5nX3ZpZXcoIkEiKSkpOworICB9Cit9CisKK2NsYXNzIFN0cmluZ0xpa2Ugewor
IHB1YmxpYzoKKyAgU3RyaW5nTGlrZSgpID0gZGVmYXVsdDsKKworICBTdHJpbmdMaWtlKGNvbnN0
IGNoYXIqIHMpIDogc18ocykgeyAgLy8gTk9MSU5UCisgICAgKytjb25zdHJ1Y3Rvcl9jYWxsc187
CisgIH0KKworICBib29sIG9wZXJhdG9yPChjb25zdCBTdHJpbmdMaWtlJiBhKSBjb25zdCB7Cisg
ICAgcmV0dXJuIHNfIDwgYS5zXzsKKyAgfQorCisgIHN0YXRpYyB2b2lkIGNsZWFyX2NvbnN0cnVj
dG9yX2NhbGxfY291bnQoKSB7CisgICAgY29uc3RydWN0b3JfY2FsbHNfID0gMDsKKyAgfQorCisg
IHN0YXRpYyBpbnQgY29uc3RydWN0b3JfY2FsbHMoKSB7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9y
X2NhbGxzXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIGludCBjb25zdHJ1Y3Rvcl9jYWxs
c187CisgIHN0ZDo6c3RyaW5nIHNfOworfTsKKworaW50IFN0cmluZ0xpa2U6OmNvbnN0cnVjdG9y
X2NhbGxzXyA9IDA7CisKK1RFU1QoQnRyZWUsIEhldGVyb2dlbmVvdXNMb29rdXBEb2VzbnREZWdy
YWRlUGVyZm9ybWFuY2UpIHsKKyAgdXNpbmcgU3RyaW5nU2V0ID0gYWJzbDo6YnRyZWVfc2V0PFN0
cmluZ0xpa2U+OworICBTdHJpbmdTZXQgczsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsr
aSkgeworICAgIEFTU0VSVF9UUlVFKHMuaW5zZXJ0KGFic2w6OlN0ckNhdChpKS5jX3N0cigpKS5z
ZWNvbmQpOworICB9CisgIFN0cmluZ0xpa2U6OmNsZWFyX2NvbnN0cnVjdG9yX2NhbGxfY291bnQo
KTsKKyAgcy5maW5kKCI1MCIpOworICBBU1NFUlRfRVEoMSwgU3RyaW5nTGlrZTo6Y29uc3RydWN0
b3JfY2FsbHMoKSk7CisKKyAgU3RyaW5nTGlrZTo6Y2xlYXJfY29uc3RydWN0b3JfY2FsbF9jb3Vu
dCgpOworICBzLmNvbnRhaW5zKCI1MCIpOworICBBU1NFUlRfRVEoMSwgU3RyaW5nTGlrZTo6Y29u
c3RydWN0b3JfY2FsbHMoKSk7CisKKyAgU3RyaW5nTGlrZTo6Y2xlYXJfY29uc3RydWN0b3JfY2Fs
bF9jb3VudCgpOworICBzLmNvdW50KCI1MCIpOworICBBU1NFUlRfRVEoMSwgU3RyaW5nTGlrZTo6
Y29uc3RydWN0b3JfY2FsbHMoKSk7CisKKyAgU3RyaW5nTGlrZTo6Y2xlYXJfY29uc3RydWN0b3Jf
Y2FsbF9jb3VudCgpOworICBzLmxvd2VyX2JvdW5kKCI1MCIpOworICBBU1NFUlRfRVEoMSwgU3Ry
aW5nTGlrZTo6Y29uc3RydWN0b3JfY2FsbHMoKSk7CisKKyAgU3RyaW5nTGlrZTo6Y2xlYXJfY29u
c3RydWN0b3JfY2FsbF9jb3VudCgpOworICBzLnVwcGVyX2JvdW5kKCI1MCIpOworICBBU1NFUlRf
RVEoMSwgU3RyaW5nTGlrZTo6Y29uc3RydWN0b3JfY2FsbHMoKSk7CisKKyAgU3RyaW5nTGlrZTo6
Y2xlYXJfY29uc3RydWN0b3JfY2FsbF9jb3VudCgpOworICBzLmVxdWFsX3JhbmdlKCI1MCIpOwor
ICBBU1NFUlRfRVEoMSwgU3RyaW5nTGlrZTo6Y29uc3RydWN0b3JfY2FsbHMoKSk7CisKKyAgU3Ry
aW5nTGlrZTo6Y2xlYXJfY29uc3RydWN0b3JfY2FsbF9jb3VudCgpOworICBzLmVyYXNlKCI1MCIp
OworICBBU1NFUlRfRVEoMSwgU3RyaW5nTGlrZTo6Y29uc3RydWN0b3JfY2FsbHMoKSk7Cit9CisK
Ky8vIFZlcmlmeSB0aGF0IHN3YXBwaW5nIGJ0cmVlcyBzd2FwcyB0aGUga2V5IGNvbXBhcmlzb24g
ZnVuY3RvcnMgYW5kIHRoYXQgd2UgY2FuCisvLyB1c2Ugbm9uLWRlZmF1bHQgY29uc3RydWN0aWJs
ZSBjb21wYXJhdG9ycy4KK3N0cnVjdCBTdWJzdHJpbmdMZXNzIHsKKyAgU3Vic3RyaW5nTGVzcygp
ID0gZGVsZXRlOworICBleHBsaWNpdCBTdWJzdHJpbmdMZXNzKGludCBsZW5ndGgpIDogbihsZW5n
dGgpIHt9CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnN0cmluZyAmYSwgY29uc3Qgc3Rk
OjpzdHJpbmcgJmIpIGNvbnN0IHsKKyAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcoYSkuc3Vi
c3RyKDAsIG4pIDwKKyAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoYikuc3Vic3RyKDAsIG4p
OworICB9CisgIGludCBuOworfTsKKworVEVTVChCdHJlZSwgU3dhcEtleUNvbXBhcmUpIHsKKyAg
dXNpbmcgU3Vic3RyaW5nU2V0ID0gYWJzbDo6YnRyZWVfc2V0PHN0ZDo6c3RyaW5nLCBTdWJzdHJp
bmdMZXNzPjsKKyAgU3Vic3RyaW5nU2V0IHMxKFN1YnN0cmluZ0xlc3MoMSksIFN1YnN0cmluZ1Nl
dDo6YWxsb2NhdG9yX3R5cGUoKSk7CisgIFN1YnN0cmluZ1NldCBzMihTdWJzdHJpbmdMZXNzKDIp
LCBTdWJzdHJpbmdTZXQ6OmFsbG9jYXRvcl90eXBlKCkpOworCisgIEFTU0VSVF9UUlVFKHMxLmlu
c2VydCgiYSIpLnNlY29uZCk7CisgIEFTU0VSVF9GQUxTRShzMS5pbnNlcnQoImFhIikuc2Vjb25k
KTsKKworICBBU1NFUlRfVFJVRShzMi5pbnNlcnQoImEiKS5zZWNvbmQpOworICBBU1NFUlRfVFJV
RShzMi5pbnNlcnQoImFhIikuc2Vjb25kKTsKKyAgQVNTRVJUX0ZBTFNFKHMyLmluc2VydCgiYWFh
Iikuc2Vjb25kKTsKKworICBzd2FwKHMxLCBzMik7CisKKyAgQVNTRVJUX1RSVUUoczEuaW5zZXJ0
KCJiIikuc2Vjb25kKTsKKyAgQVNTRVJUX1RSVUUoczEuaW5zZXJ0KCJiYiIpLnNlY29uZCk7Cisg
IEFTU0VSVF9GQUxTRShzMS5pbnNlcnQoImJiYiIpLnNlY29uZCk7CisKKyAgQVNTRVJUX1RSVUUo
czIuaW5zZXJ0KCJiIikuc2Vjb25kKTsKKyAgQVNTRVJUX0ZBTFNFKHMyLmluc2VydCgiYmIiKS5z
ZWNvbmQpOworfQorCitURVNUKEJ0cmVlLCBVcHBlckJvdW5kUmVncmVzc2lvbikgeworICAvLyBS
ZWdyZXNzIGEgYnVnIHdoZXJlIHVwcGVyX2JvdW5kIHdvdWxkIGRlZmF1bHQtY29uc3RydWN0IGEg
bmV3IGtleV9jb21wYXJlCisgIC8vIGluc3RlYWQgb2YgY29weWluZyB0aGUgZXhpc3Rpbmcgb25l
LgorICB1c2luZyBTdWJzdHJpbmdTZXQgPSBhYnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmcsIFN1
YnN0cmluZ0xlc3M+OworICBTdWJzdHJpbmdTZXQgbXlfc2V0KFN1YnN0cmluZ0xlc3MoMykpOwor
ICBteV9zZXQuaW5zZXJ0KCJhYWIiKTsKKyAgbXlfc2V0Lmluc2VydCgiYWJiIik7CisgIC8vIFdl
IGNhbGwgdXBwZXJfYm91bmQoImFhYSIpLiAgSWYgdGhpcyBjb3JyZWN0bHkgdXNlcyB0aGUgbGVu
Z3RoIDMKKyAgLy8gY29tcGFyYXRvciwgYWFhIDwgYWFiIDwgYWJiLCBzbyB3ZSBzaG91bGQgZ2V0
IGFhYiBhcyB0aGUgcmVzdWx0LgorICAvLyBJZiBpdCBpbnN0ZWFkIHVzZXMgdGhlIGRlZmF1bHQt
Y29uc3RydWN0ZWQgbGVuZ3RoIDIgY29tcGFyYXRvciwKKyAgLy8gYWEgPT0gYWEgPCBhYiwgc28g
d2UnbGwgZ2V0IGFiYiBhcyBvdXIgcmVzdWx0LgorICBTdWJzdHJpbmdTZXQ6Oml0ZXJhdG9yIGl0
ID0gbXlfc2V0LnVwcGVyX2JvdW5kKCJhYWEiKTsKKyAgQVNTRVJUX1RSVUUoaXQgIT0gbXlfc2V0
LmVuZCgpKTsKKyAgRVhQRUNUX0VRKCJhYWIiLCAqaXQpOworfQorCitURVNUKEJ0cmVlLCBDb21w
YXJpc29uKSB7CisgIGNvbnN0IGludCBrU2V0U2l6ZSA9IDEyMDE7CisgIGFic2w6OmJ0cmVlX3Nl
dDxpbnQ2NF90PiBteV9zZXQ7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1NldFNpemU7ICsraSkg
eworICAgIG15X3NldC5pbnNlcnQoaSk7CisgIH0KKyAgYWJzbDo6YnRyZWVfc2V0PGludDY0X3Q+
IG15X3NldF9jb3B5KG15X3NldCk7CisgIEVYUEVDVF9UUlVFKG15X3NldF9jb3B5ID09IG15X3Nl
dCk7CisgIEVYUEVDVF9UUlVFKG15X3NldCA9PSBteV9zZXRfY29weSk7CisgIEVYUEVDVF9GQUxT
RShteV9zZXRfY29weSAhPSBteV9zZXQpOworICBFWFBFQ1RfRkFMU0UobXlfc2V0ICE9IG15X3Nl
dF9jb3B5KTsKKworICBteV9zZXQuaW5zZXJ0KGtTZXRTaXplKTsKKyAgRVhQRUNUX0ZBTFNFKG15
X3NldF9jb3B5ID09IG15X3NldCk7CisgIEVYUEVDVF9GQUxTRShteV9zZXQgPT0gbXlfc2V0X2Nv
cHkpOworICBFWFBFQ1RfVFJVRShteV9zZXRfY29weSAhPSBteV9zZXQpOworICBFWFBFQ1RfVFJV
RShteV9zZXQgIT0gbXlfc2V0X2NvcHkpOworCisgIG15X3NldC5lcmFzZShrU2V0U2l6ZSAtIDEp
OworICBFWFBFQ1RfRkFMU0UobXlfc2V0X2NvcHkgPT0gbXlfc2V0KTsKKyAgRVhQRUNUX0ZBTFNF
KG15X3NldCA9PSBteV9zZXRfY29weSk7CisgIEVYUEVDVF9UUlVFKG15X3NldF9jb3B5ICE9IG15
X3NldCk7CisgIEVYUEVDVF9UUlVFKG15X3NldCAhPSBteV9zZXRfY29weSk7CisKKyAgYWJzbDo6
YnRyZWVfbWFwPHN0ZDo6c3RyaW5nLCBpbnQ2NF90PiBteV9tYXA7CisgIGZvciAoaW50IGkgPSAw
OyBpIDwga1NldFNpemU7ICsraSkgeworICAgIG15X21hcFtzdGQ6OnN0cmluZyhpLCAnYScpXSA9
IGk7CisgIH0KKyAgYWJzbDo6YnRyZWVfbWFwPHN0ZDo6c3RyaW5nLCBpbnQ2NF90PiBteV9tYXBf
Y29weShteV9tYXApOworICBFWFBFQ1RfVFJVRShteV9tYXBfY29weSA9PSBteV9tYXApOworICBF
WFBFQ1RfVFJVRShteV9tYXAgPT0gbXlfbWFwX2NvcHkpOworICBFWFBFQ1RfRkFMU0UobXlfbWFw
X2NvcHkgIT0gbXlfbWFwKTsKKyAgRVhQRUNUX0ZBTFNFKG15X21hcCAhPSBteV9tYXBfY29weSk7
CisKKyAgKytteV9tYXBfY29weVtzdGQ6OnN0cmluZyg3LCAnYScpXTsKKyAgRVhQRUNUX0ZBTFNF
KG15X21hcF9jb3B5ID09IG15X21hcCk7CisgIEVYUEVDVF9GQUxTRShteV9tYXAgPT0gbXlfbWFw
X2NvcHkpOworICBFWFBFQ1RfVFJVRShteV9tYXBfY29weSAhPSBteV9tYXApOworICBFWFBFQ1Rf
VFJVRShteV9tYXAgIT0gbXlfbWFwX2NvcHkpOworCisgIG15X21hcF9jb3B5ID0gbXlfbWFwOwor
ICBteV9tYXBbImhlbGxvIl0gPSBrU2V0U2l6ZTsKKyAgRVhQRUNUX0ZBTFNFKG15X21hcF9jb3B5
ID09IG15X21hcCk7CisgIEVYUEVDVF9GQUxTRShteV9tYXAgPT0gbXlfbWFwX2NvcHkpOworICBF
WFBFQ1RfVFJVRShteV9tYXBfY29weSAhPSBteV9tYXApOworICBFWFBFQ1RfVFJVRShteV9tYXAg
IT0gbXlfbWFwX2NvcHkpOworCisgIG15X21hcC5lcmFzZShzdGQ6OnN0cmluZyhrU2V0U2l6ZSAt
IDEsICdhJykpOworICBFWFBFQ1RfRkFMU0UobXlfbWFwX2NvcHkgPT0gbXlfbWFwKTsKKyAgRVhQ
RUNUX0ZBTFNFKG15X21hcCA9PSBteV9tYXBfY29weSk7CisgIEVYUEVDVF9UUlVFKG15X21hcF9j
b3B5ICE9IG15X21hcCk7CisgIEVYUEVDVF9UUlVFKG15X21hcCAhPSBteV9tYXBfY29weSk7Cit9
CisKK1RFU1QoQnRyZWUsIFJhbmdlQ3RvclNhbml0eSkgeworICBzdGQ6OnZlY3RvcjxpbnQ+IGl2
ZWM7CisgIGl2ZWMucHVzaF9iYWNrKDEpOworICBzdGQ6Om1hcDxpbnQsIGludD4gaW1hcDsKKyAg
aW1hcC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoMSwgMikpOworICBhYnNsOjpidHJlZV9tdWx0aXNl
dDxpbnQ+IHRtc2V0KGl2ZWMuYmVnaW4oKSwgaXZlYy5lbmQoKSk7CisgIGFic2w6OmJ0cmVlX211
bHRpbWFwPGludCwgaW50PiB0bW1hcChpbWFwLmJlZ2luKCksIGltYXAuZW5kKCkpOworICBhYnNs
OjpidHJlZV9zZXQ8aW50PiB0c2V0KGl2ZWMuYmVnaW4oKSwgaXZlYy5lbmQoKSk7CisgIGFic2w6
OmJ0cmVlX21hcDxpbnQsIGludD4gdG1hcChpbWFwLmJlZ2luKCksIGltYXAuZW5kKCkpOworICBF
WFBFQ1RfRVEoMSwgdG1zZXQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDEsIHRtbWFwLnNpemUoKSk7
CisgIEVYUEVDVF9FUSgxLCB0c2V0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgxLCB0bWFwLnNpemUo
KSk7Cit9CisKK1RFU1QoQnRyZWUsIEJ0cmVlTWFwQ2FuSG9sZE1vdmVPbmx5VHlwZXMpIHsKKyAg
YWJzbDo6YnRyZWVfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+
PiBtOworCisgIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmluZz4gJnYgPSBtWyJBIl07CisgIEVY
UEVDVF9UUlVFKHYgPT0gbnVsbHB0cik7CisgIHYucmVzZXQobmV3IHN0ZDo6c3RyaW5nKCJYIikp
OworCisgIGF1dG8gaXRlciA9IG0uZmluZCgiQSIpOworICBFWFBFQ1RfRVEoIlgiLCAqaXRlci0+
c2Vjb25kKTsKK30KKworVEVTVChCdHJlZSwgSW5pdGlhbGl6ZXJMaXN0Q29uc3RydWN0b3IpIHsK
KyAgYWJzbDo6YnRyZWVfc2V0PHN0ZDo6c3RyaW5nPiBzZXQoeyJhIiwgImIifSk7CisgIEVYUEVD
VF9FUShzZXQuY291bnQoImEiKSwgMSk7CisgIEVYUEVDVF9FUShzZXQuY291bnQoImIiKSwgMSk7
CisKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBtc2V0KHsxLCAxLCA0fSk7CisgIEVYUEVD
VF9FUShtc2V0LmNvdW50KDEpLCAyKTsKKyAgRVhQRUNUX0VRKG1zZXQuY291bnQoNCksIDEpOwor
CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gbWFwKHt7MSwgNX0sIHsyLCAxMH19KTsKKyAg
RVhQRUNUX0VRKG1hcFsxXSwgNSk7CisgIEVYUEVDVF9FUShtYXBbMl0sIDEwKTsKKworICBhYnNs
OjpidHJlZV9tdWx0aW1hcDxpbnQsIGludD4gbW1hcCh7ezEsIDV9LCB7MSwgMTB9fSk7CisgIGF1
dG8gcmFuZ2UgPSBtbWFwLmVxdWFsX3JhbmdlKDEpOworICBhdXRvIGl0ID0gcmFuZ2UuZmlyc3Q7
CisgIEFTU0VSVF9ORShpdCwgcmFuZ2Uuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKGl0LT5zZWNvbmQs
IDUpOworICBBU1NFUlRfTkUoKytpdCwgcmFuZ2Uuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKGl0LT5z
ZWNvbmQsIDEwKTsKKyAgRVhQRUNUX0VRKCsraXQsIHJhbmdlLnNlY29uZCk7Cit9CisKK1RFU1Qo
QnRyZWUsIEluaXRpYWxpemVyTGlzdEluc2VydCkgeworICBhYnNsOjpidHJlZV9zZXQ8c3RkOjpz
dHJpbmc+IHNldDsKKyAgc2V0Lmluc2VydCh7ImEiLCAiYiJ9KTsKKyAgRVhQRUNUX0VRKHNldC5j
b3VudCgiYSIpLCAxKTsKKyAgRVhQRUNUX0VRKHNldC5jb3VudCgiYiIpLCAxKTsKKworICBhYnNs
OjpidHJlZV9tdWx0aXNldDxpbnQ+IG1zZXQ7CisgIG1zZXQuaW5zZXJ0KHsxLCAxLCA0fSk7Cisg
IEVYUEVDVF9FUShtc2V0LmNvdW50KDEpLCAyKTsKKyAgRVhQRUNUX0VRKG1zZXQuY291bnQoNCks
IDEpOworCisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gbWFwOworICBtYXAuaW5zZXJ0KHt7
MSwgNX0sIHsyLCAxMH19KTsKKyAgLy8gVGVzdCB0aGF0IGluc2VydGluZyBvbmUgZWxlbWVudCB1
c2luZyBhbiBpbml0aWFsaXplciBsaXN0IGFsc28gd29ya3MuCisgIG1hcC5pbnNlcnQoezMsIDE1
fSk7CisgIEVYUEVDVF9FUShtYXBbMV0sIDUpOworICBFWFBFQ1RfRVEobWFwWzJdLCAxMCk7Cisg
IEVYUEVDVF9FUShtYXBbM10sIDE1KTsKKworICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIGlu
dD4gbW1hcDsKKyAgbW1hcC5pbnNlcnQoe3sxLCA1fSwgezEsIDEwfX0pOworICBhdXRvIHJhbmdl
ID0gbW1hcC5lcXVhbF9yYW5nZSgxKTsKKyAgYXV0byBpdCA9IHJhbmdlLmZpcnN0OworICBBU1NF
UlRfTkUoaXQsIHJhbmdlLnNlY29uZCk7CisgIEVYUEVDVF9FUShpdC0+c2Vjb25kLCA1KTsKKyAg
QVNTRVJUX05FKCsraXQsIHJhbmdlLnNlY29uZCk7CisgIEVYUEVDVF9FUShpdC0+c2Vjb25kLCAx
MCk7CisgIEVYUEVDVF9FUSgrK2l0LCByYW5nZS5zZWNvbmQpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgSz4KK3ZvaWQgQXNzZXJ0S2V5Q29tcGFyZVRvQWRhcHRl
ZCgpIHsKKyAgdXNpbmcgQWRhcHRlZCA9IHR5cGVuYW1lIGtleV9jb21wYXJlX3RvX2FkYXB0ZXI8
Q29tcGFyZT46OnR5cGU7CisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfc2FtZTxBZGFwdGVkLCBD
b21wYXJlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgImtleV9jb21wYXJlX3RvX2FkYXB0ZXIg
c2hvdWxkIGhhdmUgYWRhcHRlZCB0aGlzIGNvbXBhcmF0b3IuIik7CisgIHN0YXRpY19hc3NlcnQo
CisgICAgICBzdGQ6OmlzX3NhbWU8YWJzbDo6d2Vha19vcmRlcmluZywKKyAgICAgICAgICAgICAg
ICAgICBhYnNsOjpyZXN1bHRfb2ZfdDxBZGFwdGVkKGNvbnN0IEsgJiwgY29uc3QgSyAmKT4+Ojp2
YWx1ZSwKKyAgICAgICJBZGFwdGVkIGNvbXBhcmF0b3Igc2hvdWxkIGJlIGEga2V5LWNvbXBhcmUt
dG8gY29tcGFyYXRvci4iKTsKK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBDb21wYXJlLCB0eXBlbmFt
ZSBLPgordm9pZCBBc3NlcnRLZXlDb21wYXJlVG9Ob3RBZGFwdGVkKCkgeworICB1c2luZyBVbmFk
YXB0ZWQgPSB0eXBlbmFtZSBrZXlfY29tcGFyZV90b19hZGFwdGVyPENvbXBhcmU+Ojp0eXBlOwor
ICBzdGF0aWNfYXNzZXJ0KAorICAgICAgc3RkOjppc19zYW1lPFVuYWRhcHRlZCwgQ29tcGFyZT46
OnZhbHVlLAorICAgICAgImtleV9jb21wYXJlX3RvX2FkYXB0ZXIgc2hvdWxkbid0IGhhdmUgYWRh
cHRlZCB0aGlzIGNvbXBhcmF0b3IuIik7CisgIHN0YXRpY19hc3NlcnQoCisgICAgICBzdGQ6Omlz
X3NhbWU8Ym9vbCwKKyAgICAgICAgICAgICAgICAgICBhYnNsOjpyZXN1bHRfb2ZfdDxVbmFkYXB0
ZWQoY29uc3QgSyAmLCBjb25zdCBLICYpPj46OnZhbHVlLAorICAgICAgIlVuLWFkYXB0ZWQgY29t
cGFyYXRvciBzaG91bGQgcmV0dXJuIGJvb2wuIik7Cit9CisKK1RFU1QoQnRyZWUsIEtleUNvbXBh
cmVUb0FkYXB0ZXIpIHsKKyAgQXNzZXJ0S2V5Q29tcGFyZVRvQWRhcHRlZDxzdGQ6Omxlc3M8c3Rk
OjpzdHJpbmc+LCBzdGQ6OnN0cmluZz4oKTsKKyAgQXNzZXJ0S2V5Q29tcGFyZVRvQWRhcHRlZDxz
dGQ6OmdyZWF0ZXI8c3RkOjpzdHJpbmc+LCBzdGQ6OnN0cmluZz4oKTsKKyAgQXNzZXJ0S2V5Q29t
cGFyZVRvQWRhcHRlZDxzdGQ6Omxlc3M8YWJzbDo6c3RyaW5nX3ZpZXc+LCBhYnNsOjpzdHJpbmdf
dmlldz4oKTsKKyAgQXNzZXJ0S2V5Q29tcGFyZVRvQWRhcHRlZDxzdGQ6OmdyZWF0ZXI8YWJzbDo6
c3RyaW5nX3ZpZXc+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmluZ192
aWV3PigpOworICBBc3NlcnRLZXlDb21wYXJlVG9Ob3RBZGFwdGVkPHN0ZDo6bGVzczxpbnQ+LCBp
bnQ+KCk7CisgIEFzc2VydEtleUNvbXBhcmVUb05vdEFkYXB0ZWQ8c3RkOjpncmVhdGVyPGludD4s
IGludD4oKTsKK30KKworVEVTVChCdHJlZSwgUlZhbHVlSW5zZXJ0KSB7CisgIEluc3RhbmNlVHJh
Y2tlciB0cmFja2VyOworCisgIGFic2w6OmJ0cmVlX3NldDxNb3ZhYmxlT25seUluc3RhbmNlPiBz
ZXQ7CisgIHNldC5pbnNlcnQoTW92YWJsZU9ubHlJbnN0YW5jZSgxKSk7CisgIHNldC5pbnNlcnQo
TW92YWJsZU9ubHlJbnN0YW5jZSgzKSk7CisgIE1vdmFibGVPbmx5SW5zdGFuY2UgdHdvKDIpOwor
ICBzZXQuaW5zZXJ0KHNldC5maW5kKE1vdmFibGVPbmx5SW5zdGFuY2UoMykpLCBzdGQ6Om1vdmUo
dHdvKSk7CisgIGF1dG8gaXQgPSBzZXQuZmluZChNb3ZhYmxlT25seUluc3RhbmNlKDIpKTsKKyAg
QVNTRVJUX05FKGl0LCBzZXQuZW5kKCkpOworICBBU1NFUlRfTkUoKytpdCwgc2V0LmVuZCgpKTsK
KyAgRVhQRUNUX0VRKGl0LT52YWx1ZSgpLCAzKTsKKworICBhYnNsOjpidHJlZV9tdWx0aXNldDxN
b3ZhYmxlT25seUluc3RhbmNlPiBtc2V0OworICBNb3ZhYmxlT25seUluc3RhbmNlIHplcm8oMCk7
CisgIE1vdmFibGVPbmx5SW5zdGFuY2UgemVybzIoMCk7CisgIG1zZXQuaW5zZXJ0KHN0ZDo6bW92
ZSh6ZXJvKSk7CisgIG1zZXQuaW5zZXJ0KG1zZXQuZmluZChNb3ZhYmxlT25seUluc3RhbmNlKDAp
KSwgc3RkOjptb3ZlKHplcm8yKSk7CisgIEVYUEVDVF9FUShtc2V0LmNvdW50KE1vdmFibGVPbmx5
SW5zdGFuY2UoMCkpLCAyKTsKKworICBhYnNsOjpidHJlZV9tYXA8aW50LCBNb3ZhYmxlT25seUlu
c3RhbmNlPiBtYXA7CisgIHN0ZDo6cGFpcjxjb25zdCBpbnQsIE1vdmFibGVPbmx5SW5zdGFuY2U+
IHAxID0gezEsIE1vdmFibGVPbmx5SW5zdGFuY2UoNSl9OworICBzdGQ6OnBhaXI8Y29uc3QgaW50
LCBNb3ZhYmxlT25seUluc3RhbmNlPiBwMiA9IHsyLCBNb3ZhYmxlT25seUluc3RhbmNlKDEwKX07
CisgIHN0ZDo6cGFpcjxjb25zdCBpbnQsIE1vdmFibGVPbmx5SW5zdGFuY2U+IHAzID0gezMsIE1v
dmFibGVPbmx5SW5zdGFuY2UoMTUpfTsKKyAgbWFwLmluc2VydChzdGQ6Om1vdmUocDEpKTsKKyAg
bWFwLmluc2VydChzdGQ6Om1vdmUocDMpKTsKKyAgbWFwLmluc2VydChtYXAuZmluZCgzKSwgc3Rk
Ojptb3ZlKHAyKSk7CisgIEFTU0VSVF9ORShtYXAuZmluZCgyKSwgbWFwLmVuZCgpKTsKKyAgRVhQ
RUNUX0VRKG1hcC5maW5kKDIpLT5zZWNvbmQudmFsdWUoKSwgMTApOworCisgIGFic2w6OmJ0cmVl
X211bHRpbWFwPGludCwgTW92YWJsZU9ubHlJbnN0YW5jZT4gbW1hcDsKKyAgc3RkOjpwYWlyPGNv
bnN0IGludCwgTW92YWJsZU9ubHlJbnN0YW5jZT4gcDQgPSB7MSwgTW92YWJsZU9ubHlJbnN0YW5j
ZSg1KX07CisgIHN0ZDo6cGFpcjxjb25zdCBpbnQsIE1vdmFibGVPbmx5SW5zdGFuY2U+IHA1ID0g
ezEsIE1vdmFibGVPbmx5SW5zdGFuY2UoMTApfTsKKyAgbW1hcC5pbnNlcnQoc3RkOjptb3ZlKHA0
KSk7CisgIG1tYXAuaW5zZXJ0KG1tYXAuZmluZCgxKSwgc3RkOjptb3ZlKHA1KSk7CisgIGF1dG8g
cmFuZ2UgPSBtbWFwLmVxdWFsX3JhbmdlKDEpOworICBhdXRvIGl0MSA9IHJhbmdlLmZpcnN0Owor
ICBBU1NFUlRfTkUoaXQxLCByYW5nZS5zZWNvbmQpOworICBFWFBFQ1RfRVEoaXQxLT5zZWNvbmQu
dmFsdWUoKSwgMTApOworICBBU1NFUlRfTkUoKytpdDEsIHJhbmdlLnNlY29uZCk7CisgIEVYUEVD
VF9FUShpdDEtPnNlY29uZC52YWx1ZSgpLCA1KTsKKyAgRVhQRUNUX0VRKCsraXQxLCByYW5nZS5z
ZWNvbmQpOworCisgIEVYUEVDVF9FUSh0cmFja2VyLmNvcGllcygpLCAwKTsKKyAgRVhQRUNUX0VR
KHRyYWNrZXIuc3dhcHMoKSwgMCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitjbGFzcyBCdHJl
ZU5vZGVQZWVyIHsKKyBwdWJsaWM6CisgIC8vIFlpZWxkcyB0aGUgc2l6ZSBvZiBhIGxlYWYgbm9k
ZSB3aXRoIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHZhbHVlcy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFZhbHVlVHlwZT4KKyAgY29uc3RleHByIHN0YXRpYyBzaXplX3QgR2V0VGFyZ2V0Tm9kZVNpemUo
c2l6ZV90IHRhcmdldF92YWx1ZXNfcGVyX25vZGUpIHsKKyAgICByZXR1cm4gYnRyZWVfbm9kZTwK
KyAgICAgICAgc2V0X3BhcmFtczxWYWx1ZVR5cGUsIHN0ZDo6bGVzczxWYWx1ZVR5cGU+LCBzdGQ6
OmFsbG9jYXRvcjxWYWx1ZVR5cGU+LAorICAgICAgICAgICAgICAgICAgIC8qVGFyZ2V0Tm9kZVNp
emU9Ki8yNTYsICAvLyBUaGlzIHBhcmFtZXRlciBpc24ndCB1c2VkIGhlcmUuCisgICAgICAgICAg
ICAgICAgICAgLypNdWx0aT0qL2ZhbHNlPj46OlNpemVXaXRoTlZhbHVlcyh0YXJnZXRfdmFsdWVz
X3Blcl9ub2RlKTsKKyAgfQorCisgIC8vIFlpZWxkcyB0aGUgbnVtYmVyIG9mIHZhbHVlcyBpbiBh
IChub24tcm9vdCkgbGVhZiBub2RlIGZvciB0aGlzIHNldC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFNldD4KKyAgY29uc3RleHByIHN0YXRpYyBzaXplX3QgR2V0TnVtVmFsdWVzUGVyTm9kZSgpIHsK
KyAgICByZXR1cm4gYnRyZWVfbm9kZTx0eXBlbmFtZSBTZXQ6OnBhcmFtc190eXBlPjo6a05vZGVW
YWx1ZXM7CisgIH0KK307CisKK25hbWVzcGFjZSB7CisKKy8vIEEgYnRyZWUgc2V0IHdpdGggYSBz
cGVjaWZpYyBudW1iZXIgb2YgdmFsdWVzIHBlciBub2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIEtl
eSwgaW50IFRhcmdldFZhbHVlc1Blck5vZGUsIHR5cGVuYW1lIENtcCA9IHN0ZDo6bGVzczxLZXk+
PgorY2xhc3MgU2l6ZWRCdHJlZVNldAorICAgIDogcHVibGljIGJ0cmVlX3NldF9jb250YWluZXI8
YnRyZWU8CisgICAgICAgICAgc2V0X3BhcmFtczxLZXksIENtcCwgc3RkOjphbGxvY2F0b3I8S2V5
PiwKKyAgICAgICAgICAgICAgICAgICAgIEJ0cmVlTm9kZVBlZXI6OkdldFRhcmdldE5vZGVTaXpl
PEtleT4oVGFyZ2V0VmFsdWVzUGVyTm9kZSksCisgICAgICAgICAgICAgICAgICAgICAvKk11bHRp
PSovZmFsc2U+Pj4geworICB1c2luZyBCYXNlID0gdHlwZW5hbWUgU2l6ZWRCdHJlZVNldDo6YnRy
ZWVfc2V0X2NvbnRhaW5lcjsKKworIHB1YmxpYzoKKyAgU2l6ZWRCdHJlZVNldCgpIHt9CisgIHVz
aW5nIEJhc2U6OkJhc2U7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU2V0Pgordm9pZCBFeHBl
Y3RPcGVyYXRpb25Db3VudHMoY29uc3QgaW50IGV4cGVjdGVkX21vdmVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW50IGV4cGVjdGVkX2NvbXBhcmlzb25zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiAmdmFsdWVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW5zdGFuY2VUcmFja2VyICp0cmFja2VyLCBTZXQgKnNldCkg
eworICBmb3IgKGNvbnN0IGludCB2IDogdmFsdWVzKSBzZXQtPmluc2VydChNb3ZhYmxlT25seUlu
c3RhbmNlKHYpKTsKKyAgc2V0LT5jbGVhcigpOworICBFWFBFQ1RfRVEodHJhY2tlci0+bW92ZXMo
KSwgZXhwZWN0ZWRfbW92ZXMpOworICBFWFBFQ1RfRVEodHJhY2tlci0+Y29tcGFyaXNvbnMoKSwg
ZXhwZWN0ZWRfY29tcGFyaXNvbnMpOworICBFWFBFQ1RfRVEodHJhY2tlci0+Y29waWVzKCksIDAp
OworICBFWFBFQ1RfRVEodHJhY2tlci0+c3dhcHMoKSwgMCk7CisgIHRyYWNrZXItPlJlc2V0Q29w
aWVzTW92ZXNTd2FwcygpOworfQorCisvLyBOb3RlOiB3aGVuIHRoZSB2YWx1ZXMgaW4gdGhpcyB0
ZXN0IGNoYW5nZSwgaXQgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBhbiBpbXBhY3QKKy8vIG9uIHBlcmZv
cm1hbmNlLgorVEVTVChCdHJlZSwgTW92ZXNDb21wYXJpc29uc0NvcGllc1N3YXBzVHJhY2tpbmcp
IHsKKyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIC8vIE5vdGU6IHRoaXMgaXMgbWluaW11
bSBudW1iZXIgb2YgdmFsdWVzIHBlciBub2RlLgorICBTaXplZEJ0cmVlU2V0PE1vdmFibGVPbmx5
SW5zdGFuY2UsIC8qVGFyZ2V0VmFsdWVzUGVyTm9kZT0qLzM+IHNldDM7CisgIC8vIE5vdGU6IHRo
aXMgaXMgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIHZhbHVlcyBwZXIgbm9kZSBmb3IgYSBzZXQgb2Yg
aW50MzJzCisgIC8vICh3aXRoIDY0LWJpdCBwb2ludGVycykuCisgIFNpemVkQnRyZWVTZXQ8TW92
YWJsZU9ubHlJbnN0YW5jZSwgLypUYXJnZXRWYWx1ZXNQZXJOb2RlPSovNjE+IHNldDYxOworICBT
aXplZEJ0cmVlU2V0PE1vdmFibGVPbmx5SW5zdGFuY2UsIC8qVGFyZ2V0VmFsdWVzUGVyTm9kZT0q
LzEwMD4gc2V0MTAwOworCisgIC8vIERvbid0IGRlcGVuZCBvbiBmbGFncyBmb3IgcmFuZG9tIHZh
bHVlcyBiZWNhdXNlIHRoZW4gdGhlIGV4cGVjdGF0aW9ucyB3aWxsCisgIC8vIGZhaWwgaWYgdGhl
IGZsYWdzIGNoYW5nZS4KKyAgc3RkOjp2ZWN0b3I8aW50PiB2YWx1ZXMgPQorICAgICAgR2VuZXJh
dGVWYWx1ZXNXaXRoU2VlZDxpbnQ+KDEwMDAwLCAxIDw8IDIyLCAvKnNlZWQ9Ki8yMyk7CisKKyAg
RVhQRUNUX0VRKEJ0cmVlTm9kZVBlZXI6OkdldE51bVZhbHVlc1Blck5vZGU8ZGVjbHR5cGUoc2V0
Myk+KCksIDMpOworICBFWFBFQ1RfRVEoQnRyZWVOb2RlUGVlcjo6R2V0TnVtVmFsdWVzUGVyTm9k
ZTxkZWNsdHlwZShzZXQ2MSk+KCksIDYxKTsKKyAgRVhQRUNUX0VRKEJ0cmVlTm9kZVBlZXI6Okdl
dE51bVZhbHVlc1Blck5vZGU8ZGVjbHR5cGUoc2V0MTAwKT4oKSwgMTAwKTsKKyAgaWYgKHNpemVv
Zih2b2lkICopID09IDgpIHsKKyAgICBFWFBFQ1RfRVEoQnRyZWVOb2RlUGVlcjo6R2V0TnVtVmFs
dWVzUGVyTm9kZTxhYnNsOjpidHJlZV9zZXQ8aW50MzJfdD4+KCksCisgICAgICAgICAgICAgIEJ0
cmVlTm9kZVBlZXI6OkdldE51bVZhbHVlc1Blck5vZGU8ZGVjbHR5cGUoc2V0NjEpPigpKTsKKyAg
fQorCisgIC8vIFRlc3Qga2V5IGluc2VydGlvbi9kZWxldGlvbiBpbiByYW5kb20gb3JkZXIuCisg
IEV4cGVjdE9wZXJhdGlvbkNvdW50cyg0NTI4MSwgMTMyNTUxLCB2YWx1ZXMsICZ0cmFja2VyLCAm
c2V0Myk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cygzODY3MTgsIDEyOTgwNywgdmFsdWVzLCAm
dHJhY2tlciwgJnNldDYxKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDU4Njc2MSwgMTMwMzEw
LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0MTAwKTsKKworICAvLyBUZXN0IGtleSBpbnNlcnRpb24v
ZGVsZXRpb24gaW4gc29ydGVkIG9yZGVyLgorICBzdGQ6OnNvcnQodmFsdWVzLmJlZ2luKCksIHZh
bHVlcy5lbmQoKSk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cygyNjYzOCwgOTIxMzQsIHZhbHVl
cywgJnRyYWNrZXIsICZzZXQzKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDIwMjA4LCA4Nzc1
NywgdmFsdWVzLCAmdHJhY2tlciwgJnNldDYxKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDIw
MTI0LCA5NjU4MywgdmFsdWVzLCAmdHJhY2tlciwgJnNldDEwMCk7CisKKyAgLy8gVGVzdCBrZXkg
aW5zZXJ0aW9uL2RlbGV0aW9uIGluIHJldmVyc2Ugc29ydGVkIG9yZGVyLgorICBzdGQ6OnJldmVy
c2UodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50
cyg0OTk1MSwgMTE5MzI1LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0Myk7CisgIEV4cGVjdE9wZXJh
dGlvbkNvdW50cygzMzg4MTMsIDExODI2NiwgdmFsdWVzLCAmdHJhY2tlciwgJnNldDYxKTsKKyAg
RXhwZWN0T3BlcmF0aW9uQ291bnRzKDUzNDUyOSwgMTI1Mjc5LCB2YWx1ZXMsICZ0cmFja2VyLCAm
c2V0MTAwKTsKK30KKworc3RydWN0IE1vdmFibGVPbmx5SW5zdGFuY2VUaHJlZVdheUNvbXBhcmUg
eworICBhYnNsOjp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yKCkoY29uc3QgTW92YWJsZU9ubHlJbnN0
YW5jZSAmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1vdmFibGVP
bmx5SW5zdGFuY2UgJmIpIGNvbnN0IHsKKyAgICByZXR1cm4gYS5jb21wYXJlKGIpOworICB9Cit9
OworCisvLyBOb3RlOiB3aGVuIHRoZSB2YWx1ZXMgaW4gdGhpcyB0ZXN0IGNoYW5nZSwgaXQgaXMg
ZXhwZWN0ZWQgdG8gaGF2ZSBhbiBpbXBhY3QKKy8vIG9uIHBlcmZvcm1hbmNlLgorVEVTVChCdHJl
ZSwgTW92ZXNDb21wYXJpc29uc0NvcGllc1N3YXBzVHJhY2tpbmdUaHJlZVdheUNvbXBhcmUpIHsK
KyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIC8vIE5vdGU6IHRoaXMgaXMgbWluaW11bSBu
dW1iZXIgb2YgdmFsdWVzIHBlciBub2RlLgorICBTaXplZEJ0cmVlU2V0PE1vdmFibGVPbmx5SW5z
dGFuY2UsIC8qVGFyZ2V0VmFsdWVzUGVyTm9kZT0qLzMsCisgICAgICAgICAgICAgICAgTW92YWJs
ZU9ubHlJbnN0YW5jZVRocmVlV2F5Q29tcGFyZT4KKyAgICAgIHNldDM7CisgIC8vIE5vdGU6IHRo
aXMgaXMgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIHZhbHVlcyBwZXIgbm9kZSBmb3IgYSBzZXQgb2Yg
aW50MzJzCisgIC8vICh3aXRoIDY0LWJpdCBwb2ludGVycykuCisgIFNpemVkQnRyZWVTZXQ8TW92
YWJsZU9ubHlJbnN0YW5jZSwgLypUYXJnZXRWYWx1ZXNQZXJOb2RlPSovNjEsCisgICAgICAgICAg
ICAgICAgTW92YWJsZU9ubHlJbnN0YW5jZVRocmVlV2F5Q29tcGFyZT4KKyAgICAgIHNldDYxOwor
ICBTaXplZEJ0cmVlU2V0PE1vdmFibGVPbmx5SW5zdGFuY2UsIC8qVGFyZ2V0VmFsdWVzUGVyTm9k
ZT0qLzEwMCwKKyAgICAgICAgICAgICAgICBNb3ZhYmxlT25seUluc3RhbmNlVGhyZWVXYXlDb21w
YXJlPgorICAgICAgc2V0MTAwOworCisgIC8vIERvbid0IGRlcGVuZCBvbiBmbGFncyBmb3IgcmFu
ZG9tIHZhbHVlcyBiZWNhdXNlIHRoZW4gdGhlIGV4cGVjdGF0aW9ucyB3aWxsCisgIC8vIGZhaWwg
aWYgdGhlIGZsYWdzIGNoYW5nZS4KKyAgc3RkOjp2ZWN0b3I8aW50PiB2YWx1ZXMgPQorICAgICAg
R2VuZXJhdGVWYWx1ZXNXaXRoU2VlZDxpbnQ+KDEwMDAwLCAxIDw8IDIyLCAvKnNlZWQ9Ki8yMyk7
CisKKyAgRVhQRUNUX0VRKEJ0cmVlTm9kZVBlZXI6OkdldE51bVZhbHVlc1Blck5vZGU8ZGVjbHR5
cGUoc2V0Myk+KCksIDMpOworICBFWFBFQ1RfRVEoQnRyZWVOb2RlUGVlcjo6R2V0TnVtVmFsdWVz
UGVyTm9kZTxkZWNsdHlwZShzZXQ2MSk+KCksIDYxKTsKKyAgRVhQRUNUX0VRKEJ0cmVlTm9kZVBl
ZXI6OkdldE51bVZhbHVlc1Blck5vZGU8ZGVjbHR5cGUoc2V0MTAwKT4oKSwgMTAwKTsKKyAgaWYg
KHNpemVvZih2b2lkICopID09IDgpIHsKKyAgICBFWFBFQ1RfRVEoQnRyZWVOb2RlUGVlcjo6R2V0
TnVtVmFsdWVzUGVyTm9kZTxhYnNsOjpidHJlZV9zZXQ8aW50MzJfdD4+KCksCisgICAgICAgICAg
ICAgIEJ0cmVlTm9kZVBlZXI6OkdldE51bVZhbHVlc1Blck5vZGU8ZGVjbHR5cGUoc2V0NjEpPigp
KTsKKyAgfQorCisgIC8vIFRlc3Qga2V5IGluc2VydGlvbi9kZWxldGlvbiBpbiByYW5kb20gb3Jk
ZXIuCisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cyg0NTI4MSwgMTIyNTYwLCB2YWx1ZXMsICZ0cmFj
a2VyLCAmc2V0Myk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cygzODY3MTgsIDExOTgxNiwgdmFs
dWVzLCAmdHJhY2tlciwgJnNldDYxKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDU4Njc2MSwg
MTIwMzE5LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0MTAwKTsKKworICAvLyBUZXN0IGtleSBpbnNl
cnRpb24vZGVsZXRpb24gaW4gc29ydGVkIG9yZGVyLgorICBzdGQ6OnNvcnQodmFsdWVzLmJlZ2lu
KCksIHZhbHVlcy5lbmQoKSk7CisgIEV4cGVjdE9wZXJhdGlvbkNvdW50cygyNjYzOCwgOTIxMzQs
IHZhbHVlcywgJnRyYWNrZXIsICZzZXQzKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDIwMjA4
LCA4Nzc1NywgdmFsdWVzLCAmdHJhY2tlciwgJnNldDYxKTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291
bnRzKDIwMTI0LCA5NjU4MywgdmFsdWVzLCAmdHJhY2tlciwgJnNldDEwMCk7CisKKyAgLy8gVGVz
dCBrZXkgaW5zZXJ0aW9uL2RlbGV0aW9uIGluIHJldmVyc2Ugc29ydGVkIG9yZGVyLgorICBzdGQ6
OnJldmVyc2UodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIEV4cGVjdE9wZXJhdGlv
bkNvdW50cyg0OTk1MSwgMTA5MzI2LCB2YWx1ZXMsICZ0cmFja2VyLCAmc2V0Myk7CisgIEV4cGVj
dE9wZXJhdGlvbkNvdW50cygzMzg4MTMsIDEwODI2NywgdmFsdWVzLCAmdHJhY2tlciwgJnNldDYx
KTsKKyAgRXhwZWN0T3BlcmF0aW9uQ291bnRzKDUzNDUyOSwgMTE1MjgwLCB2YWx1ZXMsICZ0cmFj
a2VyLCAmc2V0MTAwKTsKK30KKworc3RydWN0IE5vRGVmYXVsdEN0b3IgeworICBpbnQgbnVtOwor
ICBleHBsaWNpdCBOb0RlZmF1bHRDdG9yKGludCBpKSA6IG51bShpKSB7fQorCisgIGZyaWVuZCBi
b29sIG9wZXJhdG9yPChjb25zdCBOb0RlZmF1bHRDdG9yJiBhLCBjb25zdCBOb0RlZmF1bHRDdG9y
JiBiKSB7CisgICAgcmV0dXJuIGEubnVtIDwgYi5udW07CisgIH0KK307CisKK1RFU1QoQnRyZWUs
IEJ0cmVlTWFwQ2FuSG9sZE5vRGVmYXVsdEN0b3JUeXBlcykgeworICBhYnNsOjpidHJlZV9tYXA8
Tm9EZWZhdWx0Q3RvciwgTm9EZWZhdWx0Q3Rvcj4gbTsKKworICBmb3IgKGludCBpID0gMTsgaSA8
PSA5OTsgKytpKSB7CisgICAgU0NPUEVEX1RSQUNFKGkpOworICAgIEVYUEVDVF9UUlVFKG0uZW1w
bGFjZShOb0RlZmF1bHRDdG9yKGkpLCBOb0RlZmF1bHRDdG9yKDEwMCAtIGkpKS5zZWNvbmQpOwor
ICB9CisgIEVYUEVDVF9GQUxTRShtLmVtcGxhY2UoTm9EZWZhdWx0Q3Rvcig3OCksIE5vRGVmYXVs
dEN0b3IoMCkpLnNlY29uZCk7CisKKyAgYXV0byBpdGVyOTkgPSBtLmZpbmQoTm9EZWZhdWx0Q3Rv
cig5OSkpOworICBBU1NFUlRfTkUoaXRlcjk5LCBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKGl0ZXI5
OS0+c2Vjb25kLm51bSwgMSk7CisKKyAgYXV0byBpdGVyMSA9IG0uZmluZChOb0RlZmF1bHRDdG9y
KDEpKTsKKyAgQVNTRVJUX05FKGl0ZXIxLCBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKGl0ZXIxLT5z
ZWNvbmQubnVtLCA5OSk7CisKKyAgYXV0byBpdGVyNTAgPSBtLmZpbmQoTm9EZWZhdWx0Q3Rvcig1
MCkpOworICBBU1NFUlRfTkUoaXRlcjUwLCBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKGl0ZXI1MC0+
c2Vjb25kLm51bSwgNTApOworCisgIGF1dG8gaXRlcjI1ID0gbS5maW5kKE5vRGVmYXVsdEN0b3Io
MjUpKTsKKyAgQVNTRVJUX05FKGl0ZXIyNSwgbS5lbmQoKSk7CisgIEVYUEVDVF9FUShpdGVyMjUt
PnNlY29uZC5udW0sIDc1KTsKK30KKworVEVTVChCdHJlZSwgQnRyZWVNdWx0aW1hcENhbkhvbGRO
b0RlZmF1bHRDdG9yVHlwZXMpIHsKKyAgYWJzbDo6YnRyZWVfbXVsdGltYXA8Tm9EZWZhdWx0Q3Rv
ciwgTm9EZWZhdWx0Q3Rvcj4gbTsKKworICBmb3IgKGludCBpID0gMTsgaSA8PSA5OTsgKytpKSB7
CisgICAgU0NPUEVEX1RSQUNFKGkpOworICAgIG0uZW1wbGFjZShOb0RlZmF1bHRDdG9yKGkpLCBO
b0RlZmF1bHRDdG9yKDEwMCAtIGkpKTsKKyAgfQorCisgIGF1dG8gaXRlcjk5ID0gbS5maW5kKE5v
RGVmYXVsdEN0b3IoOTkpKTsKKyAgQVNTRVJUX05FKGl0ZXI5OSwgbS5lbmQoKSk7CisgIEVYUEVD
VF9FUShpdGVyOTktPnNlY29uZC5udW0sIDEpOworCisgIGF1dG8gaXRlcjEgPSBtLmZpbmQoTm9E
ZWZhdWx0Q3RvcigxKSk7CisgIEFTU0VSVF9ORShpdGVyMSwgbS5lbmQoKSk7CisgIEVYUEVDVF9F
UShpdGVyMS0+c2Vjb25kLm51bSwgOTkpOworCisgIGF1dG8gaXRlcjUwID0gbS5maW5kKE5vRGVm
YXVsdEN0b3IoNTApKTsKKyAgQVNTRVJUX05FKGl0ZXI1MCwgbS5lbmQoKSk7CisgIEVYUEVDVF9F
UShpdGVyNTAtPnNlY29uZC5udW0sIDUwKTsKKworICBhdXRvIGl0ZXIyNSA9IG0uZmluZChOb0Rl
ZmF1bHRDdG9yKDI1KSk7CisgIEFTU0VSVF9ORShpdGVyMjUsIG0uZW5kKCkpOworICBFWFBFQ1Rf
RVEoaXRlcjI1LT5zZWNvbmQubnVtLCA3NSk7Cit9CisKK1RFU1QoQnRyZWUsIE1hcEF0KSB7Cisg
IGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gbWFwID0ge3sxLCAyfSwgezIsIDR9fTsKKyAgRVhQ
RUNUX0VRKG1hcC5hdCgxKSwgMik7CisgIEVYUEVDVF9FUShtYXAuYXQoMiksIDQpOworICBtYXAu
YXQoMikgPSA4OworICBjb25zdCBhYnNsOjpidHJlZV9tYXA8aW50LCBpbnQ+ICZjb25zdF9tYXAg
PSBtYXA7CisgIEVYUEVDVF9FUShjb25zdF9tYXAuYXQoMSksIDIpOworICBFWFBFQ1RfRVEoY29u
c3RfbWFwLmF0KDIpLCA4KTsKKyAgdHJ5IHsKKyAgICBtYXAuYXQoMyk7CisgICAgRkFJTCgpIDw8
ICJFeGNlcHRpb24gbm90IHRocm93biI7CisgIH0gY2F0Y2ggKGNvbnN0IHN0ZDo6b3V0X29mX3Jh
bmdlJiBlKSB7CisgICAgRVhQRUNUX1NUUkVRKGUud2hhdCgpLCAiYWJzbDo6YnRyZWVfbWFwOjph
dCIpOworICB9Cit9CisKK1RFU1QoQnRyZWUsIEJ0cmVlTXVsdGlzZXRFbXBsYWNlKSB7CisgIGNv
bnN0IGludCB2YWx1ZV90b19pbnNlcnQgPSAxMjM0NTY7CisgIGFic2w6OmJ0cmVlX211bHRpc2V0
PGludD4gczsKKyAgYXV0byBpdGVyID0gcy5lbXBsYWNlKHZhbHVlX3RvX2luc2VydCk7CisgIEFT
U0VSVF9ORShpdGVyLCBzLmVuZCgpKTsKKyAgRVhQRUNUX0VRKCppdGVyLCB2YWx1ZV90b19pbnNl
cnQpOworICBhdXRvIGl0ZXIyID0gcy5lbXBsYWNlKHZhbHVlX3RvX2luc2VydCk7CisgIEVYUEVD
VF9ORShpdGVyMiwgaXRlcik7CisgIEFTU0VSVF9ORShpdGVyMiwgcy5lbmQoKSk7CisgIEVYUEVD
VF9FUSgqaXRlcjIsIHZhbHVlX3RvX2luc2VydCk7CisgIGF1dG8gcmVzdWx0ID0gcy5lcXVhbF9y
YW5nZSh2YWx1ZV90b19pbnNlcnQpOworICBFWFBFQ1RfRVEoc3RkOjpkaXN0YW5jZShyZXN1bHQu
Zmlyc3QsIHJlc3VsdC5zZWNvbmQpLCAyKTsKK30KKworVEVTVChCdHJlZSwgQnRyZWVNdWx0aXNl
dEVtcGxhY2VIaW50KSB7CisgIGNvbnN0IGludCB2YWx1ZV90b19pbnNlcnQgPSAxMjM0NTY7Cisg
IGFic2w6OmJ0cmVlX211bHRpc2V0PGludD4gczsKKyAgYXV0byBpdGVyID0gcy5lbXBsYWNlKHZh
bHVlX3RvX2luc2VydCk7CisgIEFTU0VSVF9ORShpdGVyLCBzLmVuZCgpKTsKKyAgRVhQRUNUX0VR
KCppdGVyLCB2YWx1ZV90b19pbnNlcnQpOworICBhdXRvIGVtcGxhY2VfaXRlciA9IHMuZW1wbGFj
ZV9oaW50KGl0ZXIsIHZhbHVlX3RvX2luc2VydCk7CisgIEVYUEVDVF9ORShlbXBsYWNlX2l0ZXIs
IGl0ZXIpOworICBBU1NFUlRfTkUoZW1wbGFjZV9pdGVyLCBzLmVuZCgpKTsKKyAgRVhQRUNUX0VR
KCplbXBsYWNlX2l0ZXIsIHZhbHVlX3RvX2luc2VydCk7Cit9CisKK1RFU1QoQnRyZWUsIEJ0cmVl
TXVsdGltYXBFbXBsYWNlKSB7CisgIGNvbnN0IGludCBrZXlfdG9faW5zZXJ0ID0gMTIzNDU2Owor
ICBjb25zdCBjaGFyIHZhbHVlMFtdID0gImEiOworICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQs
IHN0ZDo6c3RyaW5nPiBzOworICBhdXRvIGl0ZXIgPSBzLmVtcGxhY2Uoa2V5X3RvX2luc2VydCwg
dmFsdWUwKTsKKyAgQVNTRVJUX05FKGl0ZXIsIHMuZW5kKCkpOworICBFWFBFQ1RfRVEoaXRlci0+
Zmlyc3QsIGtleV90b19pbnNlcnQpOworICBFWFBFQ1RfRVEoaXRlci0+c2Vjb25kLCB2YWx1ZTAp
OworICBjb25zdCBjaGFyIHZhbHVlMVtdID0gImIiOworICBhdXRvIGl0ZXIyID0gcy5lbXBsYWNl
KGtleV90b19pbnNlcnQsIHZhbHVlMSk7CisgIEVYUEVDVF9ORShpdGVyMiwgaXRlcik7CisgIEFT
U0VSVF9ORShpdGVyMiwgcy5lbmQoKSk7CisgIEVYUEVDVF9FUShpdGVyMi0+Zmlyc3QsIGtleV90
b19pbnNlcnQpOworICBFWFBFQ1RfRVEoaXRlcjItPnNlY29uZCwgdmFsdWUxKTsKKyAgYXV0byBy
ZXN1bHQgPSBzLmVxdWFsX3JhbmdlKGtleV90b19pbnNlcnQpOworICBFWFBFQ1RfRVEoc3RkOjpk
aXN0YW5jZShyZXN1bHQuZmlyc3QsIHJlc3VsdC5zZWNvbmQpLCAyKTsKK30KKworVEVTVChCdHJl
ZSwgQnRyZWVNdWx0aW1hcEVtcGxhY2VIaW50KSB7CisgIGNvbnN0IGludCBrZXlfdG9faW5zZXJ0
ID0gMTIzNDU2OworICBjb25zdCBjaGFyIHZhbHVlMFtdID0gImEiOworICBhYnNsOjpidHJlZV9t
dWx0aW1hcDxpbnQsIHN0ZDo6c3RyaW5nPiBzOworICBhdXRvIGl0ZXIgPSBzLmVtcGxhY2Uoa2V5
X3RvX2luc2VydCwgdmFsdWUwKTsKKyAgQVNTRVJUX05FKGl0ZXIsIHMuZW5kKCkpOworICBFWFBF
Q1RfRVEoaXRlci0+Zmlyc3QsIGtleV90b19pbnNlcnQpOworICBFWFBFQ1RfRVEoaXRlci0+c2Vj
b25kLCB2YWx1ZTApOworICBjb25zdCBjaGFyIHZhbHVlMVtdID0gImIiOworICBhdXRvIGVtcGxh
Y2VfaXRlciA9IHMuZW1wbGFjZV9oaW50KGl0ZXIsIGtleV90b19pbnNlcnQsIHZhbHVlMSk7Cisg
IEVYUEVDVF9ORShlbXBsYWNlX2l0ZXIsIGl0ZXIpOworICBBU1NFUlRfTkUoZW1wbGFjZV9pdGVy
LCBzLmVuZCgpKTsKKyAgRVhQRUNUX0VRKGVtcGxhY2VfaXRlci0+Zmlyc3QsIGtleV90b19pbnNl
cnQpOworICBFWFBFQ1RfRVEoZW1wbGFjZV9pdGVyLT5zZWNvbmQsIHZhbHVlMSk7Cit9CisKK1RF
U1QoQnRyZWUsIENvbnN0SXRlcmF0b3JBY2Nlc3NvcnMpIHsKKyAgYWJzbDo6YnRyZWVfc2V0PGlu
dD4gc2V0OworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgc2V0Lmluc2Vy
dChpKTsKKyAgfQorCisgIGF1dG8gaXQgPSBzZXQuY2JlZ2luKCk7CisgIGF1dG8gcl9pdCA9IHNl
dC5jcmJlZ2luKCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyArK2ksICsraXQsICsrcl9p
dCkgeworICAgIEFTU0VSVF9FUSgqaXQsIGkpOworICAgIEFTU0VSVF9FUSgqcl9pdCwgOTkgLSBp
KTsKKyAgfQorICBFWFBFQ1RfRVEoaXQsIHNldC5jZW5kKCkpOworICBFWFBFQ1RfRVEocl9pdCwg
c2V0LmNyZW5kKCkpOworfQorCitURVNUKEJ0cmVlLCBTdHJTcGxpdENvbXBhdGlibGUpIHsKKyAg
Y29uc3QgYWJzbDo6YnRyZWVfc2V0PHN0ZDo6c3RyaW5nPiBzcGxpdF9zZXQgPSBhYnNsOjpTdHJT
cGxpdCgiYSxiLGMiLCAnLCcpOworICBjb25zdCBhYnNsOjpidHJlZV9zZXQ8c3RkOjpzdHJpbmc+
IGV4cGVjdGVkX3NldCA9IHsiYSIsICJiIiwgImMifTsKKworICBFWFBFQ1RfRVEoc3BsaXRfc2V0
LCBleHBlY3RlZF9zZXQpOworfQorCisvLyBXZSBjYW4ndCB1c2UgRVhQRUNUX0VRL2V0Yy4gdG8g
Y29tcGFyZSBhYnNsOjp3ZWFrX29yZGVyaW5nIGJlY2F1c2UgdGhleQorLy8gY29udmVydCBsaXRl
cmFsIDAgdG8gaW50IGFuZCBhYnNsOjp3ZWFrX29yZGVyaW5nIGNhbiBvbmx5IGJlIGNvbXBhcmVk
IHdpdGgKKy8vIGxpdGVyYWwgMC4gRGVmaW5pbmcgdGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGF2
b2lkaW5nIENsYW5nVGlkeSB3YXJuaW5ncy4KK2Jvb2wgSWRlbnRpdHkoY29uc3QgYm9vbCBiKSB7
IHJldHVybiBiOyB9CisKK1RFU1QoQnRyZWUsIFZhbHVlQ29tcCkgeworICBhYnNsOjpidHJlZV9z
ZXQ8aW50PiBzOworICBFWFBFQ1RfVFJVRShzLnZhbHVlX2NvbXAoKSgxLCAyKSk7CisgIEVYUEVD
VF9GQUxTRShzLnZhbHVlX2NvbXAoKSgyLCAyKSk7CisgIEVYUEVDVF9GQUxTRShzLnZhbHVlX2Nv
bXAoKSgyLCAxKSk7CisKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwgaW50PiBtMTsKKyAgRVhQRUNU
X1RSVUUobTEudmFsdWVfY29tcCgpKHN0ZDo6bWFrZV9wYWlyKDEsIDApLCBzdGQ6Om1ha2VfcGFp
cigyLCAwKSkpOworICBFWFBFQ1RfRkFMU0UobTEudmFsdWVfY29tcCgpKHN0ZDo6bWFrZV9wYWly
KDIsIDApLCBzdGQ6Om1ha2VfcGFpcigyLCAwKSkpOworICBFWFBFQ1RfRkFMU0UobTEudmFsdWVf
Y29tcCgpKHN0ZDo6bWFrZV9wYWlyKDIsIDApLCBzdGQ6Om1ha2VfcGFpcigxLCAwKSkpOworCisg
IGFic2w6OmJ0cmVlX21hcDxzdGQ6OnN0cmluZywgaW50PiBtMjsKKyAgRVhQRUNUX1RSVUUoSWRl
bnRpdHkoCisgICAgICBtMi52YWx1ZV9jb21wKCkoc3RkOjptYWtlX3BhaXIoImEiLCAwKSwgc3Rk
OjptYWtlX3BhaXIoImIiLCAwKSkgPCAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KAorICAg
ICAgbTIudmFsdWVfY29tcCgpKHN0ZDo6bWFrZV9wYWlyKCJiIiwgMCksIHN0ZDo6bWFrZV9wYWly
KCJiIiwgMCkpID09IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBtMi52YWx1
ZV9jb21wKCkoc3RkOjptYWtlX3BhaXIoImIiLCAwKSwgc3RkOjptYWtlX3BhaXIoImEiLCAwKSkg
PiAwKSk7Cit9CisKK1RFU1QoQnRyZWUsIERlZmF1bHRDb25zdHJ1Y3Rpb24pIHsKKyAgYWJzbDo6
YnRyZWVfc2V0PGludD4gczsKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwgaW50PiBtOworICBhYnNs
OjpidHJlZV9tdWx0aXNldDxpbnQ+IG1zOworICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIGlu
dD4gbW07CisKKyAgRVhQRUNUX1RSVUUocy5lbXB0eSgpKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0
eSgpKTsKKyAgRVhQRUNUX1RSVUUobXMuZW1wdHkoKSk7CisgIEVYUEVDVF9UUlVFKG1tLmVtcHR5
KCkpOworfQorCitURVNUKEJ0cmVlLCBTd2lzc1RhYmxlSGFzaGFibGUpIHsKKyAgc3RhdGljIGNv
bnN0ZXhwciBpbnQga1ZhbHVlcyA9IDEwMDAwOworICBzdGQ6OnZlY3RvcjxpbnQ+IHZhbHVlcyhr
VmFsdWVzKTsKKyAgc3RkOjppb3RhKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCksIDApOwor
ICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+PiBtYXBfdmFsdWVzOworICBmb3IgKGlu
dCB2IDogdmFsdWVzKSBtYXBfdmFsdWVzLmVtcGxhY2VfYmFjayh2LCAtdik7CisKKyAgdXNpbmcg
c2V0ID0gYWJzbDo6YnRyZWVfc2V0PGludD47CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5
cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoeworICAgICAgc2V0e30sCisgICAgICBzZXR7
MX0sCisgICAgICBzZXR7Mn0sCisgICAgICBzZXR7MSwgMn0sCisgICAgICBzZXR7MiwgMX0sCisg
ICAgICBzZXQodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSksCisgICAgICBzZXQodmFsdWVz
LnJiZWdpbigpLCB2YWx1ZXMucmVuZCgpKSwKKyAgfSkpOworCisgIHVzaW5nIG1zZXQgPSBhYnNs
OjpidHJlZV9tdWx0aXNldDxpbnQ+OworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1w
bGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHsKKyAgICAgIG1zZXR7fSwKKyAgICAgIG1zZXR7MX0s
CisgICAgICBtc2V0ezEsIDF9LAorICAgICAgbXNldHsyfSwKKyAgICAgIG1zZXR7MiwgMn0sCisg
ICAgICBtc2V0ezEsIDJ9LAorICAgICAgbXNldHsxLCAxLCAyfSwKKyAgICAgIG1zZXR7MSwgMiwg
Mn0sCisgICAgICBtc2V0ezEsIDEsIDIsIDJ9LAorICAgICAgbXNldCh2YWx1ZXMuYmVnaW4oKSwg
dmFsdWVzLmVuZCgpKSwKKyAgICAgIG1zZXQodmFsdWVzLnJiZWdpbigpLCB2YWx1ZXMucmVuZCgp
KSwKKyAgfSkpOworCisgIHVzaW5nIG1hcCA9IGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD47Cisg
IEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHko
eworICAgICAgbWFwe30sCisgICAgICBtYXB7ezEsIDB9fSwKKyAgICAgIG1hcHt7MSwgMX19LAor
ICAgICAgbWFwe3syLCAwfX0sCisgICAgICBtYXB7ezIsIDJ9fSwKKyAgICAgIG1hcHt7MSwgMH0s
IHsyLCAxfX0sCisgICAgICBtYXAobWFwX3ZhbHVlcy5iZWdpbigpLCBtYXBfdmFsdWVzLmVuZCgp
KSwKKyAgICAgIG1hcChtYXBfdmFsdWVzLnJiZWdpbigpLCBtYXBfdmFsdWVzLnJlbmQoKSksCisg
IH0pKTsKKworICB1c2luZyBtbWFwID0gYWJzbDo6YnRyZWVfbXVsdGltYXA8aW50LCBpbnQ+Owor
ICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5
KHsKKyAgICAgIG1tYXB7fSwKKyAgICAgIG1tYXB7ezEsIDB9fSwKKyAgICAgIG1tYXB7ezEsIDF9
fSwKKyAgICAgIG1tYXB7ezEsIDB9LCB7MSwgMX19LAorICAgICAgbW1hcHt7MSwgMX0sIHsxLCAw
fX0sCisgICAgICBtbWFwe3syLCAwfX0sCisgICAgICBtbWFwe3syLCAyfX0sCisgICAgICBtbWFw
e3sxLCAwfSwgezIsIDF9fSwKKyAgICAgIG1tYXAobWFwX3ZhbHVlcy5iZWdpbigpLCBtYXBfdmFs
dWVzLmVuZCgpKSwKKyAgICAgIG1tYXAobWFwX3ZhbHVlcy5yYmVnaW4oKSwgbWFwX3ZhbHVlcy5y
ZW5kKCkpLAorICB9KSk7Cit9CisKK1RFU1QoQnRyZWUsIENvbXBhcmFibGVTZXQpIHsKKyAgYWJz
bDo6YnRyZWVfc2V0PGludD4gczEgPSB7MSwgMn07CisgIGFic2w6OmJ0cmVlX3NldDxpbnQ+IHMy
ID0gezIsIDN9OworICBFWFBFQ1RfTFQoczEsIHMyKTsKKyAgRVhQRUNUX0xFKHMxLCBzMik7Cisg
IEVYUEVDVF9MRShzMSwgczEpOworICBFWFBFQ1RfR1QoczIsIHMxKTsKKyAgRVhQRUNUX0dFKHMy
LCBzMSk7CisgIEVYUEVDVF9HRShzMSwgczEpOworfQorCitURVNUKEJ0cmVlLCBDb21wYXJhYmxl
U2V0c0RpZmZlcmVudExlbmd0aCkgeworICBhYnNsOjpidHJlZV9zZXQ8aW50PiBzMSA9IHsxLCAy
fTsKKyAgYWJzbDo6YnRyZWVfc2V0PGludD4gczIgPSB7MSwgMiwgM307CisgIEVYUEVDVF9MVChz
MSwgczIpOworICBFWFBFQ1RfTEUoczEsIHMyKTsKKyAgRVhQRUNUX0dUKHMyLCBzMSk7CisgIEVY
UEVDVF9HRShzMiwgczEpOworfQorCitURVNUKEJ0cmVlLCBDb21wYXJhYmxlTXVsdGlzZXQpIHsK
KyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBzMSA9IHsxLCAyfTsKKyAgYWJzbDo6YnRyZWVf
bXVsdGlzZXQ8aW50PiBzMiA9IHsyLCAzfTsKKyAgRVhQRUNUX0xUKHMxLCBzMik7CisgIEVYUEVD
VF9MRShzMSwgczIpOworICBFWFBFQ1RfTEUoczEsIHMxKTsKKyAgRVhQRUNUX0dUKHMyLCBzMSk7
CisgIEVYUEVDVF9HRShzMiwgczEpOworICBFWFBFQ1RfR0UoczEsIHMxKTsKK30KKworVEVTVChC
dHJlZSwgQ29tcGFyYWJsZU1hcCkgeworICBhYnNsOjpidHJlZV9tYXA8aW50LCBpbnQ+IHMxID0g
e3sxLCAyfX07CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gczIgPSB7ezIsIDN9fTsKKyAg
RVhQRUNUX0xUKHMxLCBzMik7CisgIEVYUEVDVF9MRShzMSwgczIpOworICBFWFBFQ1RfTEUoczEs
IHMxKTsKKyAgRVhQRUNUX0dUKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMiwgczEpOworICBFWFBF
Q1RfR0UoczEsIHMxKTsKK30KKworVEVTVChCdHJlZSwgQ29tcGFyYWJsZU11bHRpbWFwKSB7Cisg
IGFic2w6OmJ0cmVlX211bHRpbWFwPGludCwgaW50PiBzMSA9IHt7MSwgMn19OworICBhYnNsOjpi
dHJlZV9tdWx0aW1hcDxpbnQsIGludD4gczIgPSB7ezIsIDN9fTsKKyAgRVhQRUNUX0xUKHMxLCBz
Mik7CisgIEVYUEVDVF9MRShzMSwgczIpOworICBFWFBFQ1RfTEUoczEsIHMxKTsKKyAgRVhQRUNU
X0dUKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMiwgczEpOworICBFWFBFQ1RfR0UoczEsIHMxKTsK
K30KKworVEVTVChCdHJlZSwgQ29tcGFyYWJsZVNldFdpdGhDdXN0b21Db21wYXJhdG9yKSB7Cisg
IC8vIEFzIHNwZWNpZmllZCBieQorICAvLyBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3Nj
MjIvd2cyMS9kb2NzL3BhcGVycy8yMDEyL24zMzM3LnBkZiBzZWN0aW9uCisgIC8vIFtjb250YWlu
ZXIucmVxdWlyZW1lbnRzLmdlbmVyYWxdLjEyLCBvcmRlcmluZyBhc3NvY2lhdGl2ZSBjb250YWlu
ZXJzIGFsd2F5cworICAvLyB1c2VzIGRlZmF1bHQgJzwnIG9wZXJhdG9yCisgIC8vIC0gZXZlbiBp
ZiBvdGhlcndpc2UgdGhlIGNvbnRhaW5lciB1c2VzIGN1c3RvbSBmdW5jdG9yLgorICBhYnNsOjpi
dHJlZV9zZXQ8aW50LCBzdGQ6OmdyZWF0ZXI8aW50Pj4gczEgPSB7MSwgMn07CisgIGFic2w6OmJ0
cmVlX3NldDxpbnQsIHN0ZDo6Z3JlYXRlcjxpbnQ+PiBzMiA9IHsyLCAzfTsKKyAgRVhQRUNUX0xU
KHMxLCBzMik7CisgIEVYUEVDVF9MRShzMSwgczIpOworICBFWFBFQ1RfTEUoczEsIHMxKTsKKyAg
RVhQRUNUX0dUKHMyLCBzMSk7CisgIEVYUEVDVF9HRShzMiwgczEpOworICBFWFBFQ1RfR0UoczEs
IHMxKTsKK30KKworVEVTVChCdHJlZSwgRXJhc2VSZXR1cm5zSXRlcmF0b3IpIHsKKyAgYWJzbDo6
YnRyZWVfc2V0PGludD4gc2V0ID0gezEsIDIsIDMsIDQsIDV9OworICBhdXRvIHJlc3VsdF9pdCA9
IHNldC5lcmFzZShzZXQuYmVnaW4oKSwgc2V0LmZpbmQoMykpOworICBFWFBFQ1RfRVEocmVzdWx0
X2l0LCBzZXQuZmluZCgzKSk7CisgIHJlc3VsdF9pdCA9IHNldC5lcmFzZShzZXQuZmluZCg1KSk7
CisgIEVYUEVDVF9FUShyZXN1bHRfaXQsIHNldC5lbmQoKSk7Cit9CisKK1RFU1QoQnRyZWUsIEV4
dHJhY3RBbmRJbnNlcnROb2RlSGFuZGxlU2V0KSB7CisgIGFic2w6OmJ0cmVlX3NldDxpbnQ+IHNy
YzEgPSB7MSwgMiwgMywgNCwgNX07CisgIGF1dG8gbmggPSBzcmMxLmV4dHJhY3Qoc3JjMS5maW5k
KDMpKTsKKyAgRVhQRUNUX1RIQVQoc3JjMSwgRWxlbWVudHNBcmUoMSwgMiwgNCwgNSkpOworICBh
YnNsOjpidHJlZV9zZXQ8aW50PiBvdGhlcjsKKyAgYWJzbDo6YnRyZWVfc2V0PGludD46Omluc2Vy
dF9yZXR1cm5fdHlwZSByZXMgPSBvdGhlci5pbnNlcnQoc3RkOjptb3ZlKG5oKSk7CisgIEVYUEVD
VF9USEFUKG90aGVyLCBFbGVtZW50c0FyZSgzKSk7CisgIEVYUEVDVF9FUShyZXMucG9zaXRpb24s
IG90aGVyLmZpbmQoMykpOworICBFWFBFQ1RfVFJVRShyZXMuaW5zZXJ0ZWQpOworICBFWFBFQ1Rf
VFJVRShyZXMubm9kZS5lbXB0eSgpKTsKKworICBhYnNsOjpidHJlZV9zZXQ8aW50PiBzcmMyID0g
ezMsIDR9OworICBuaCA9IHNyYzIuZXh0cmFjdChzcmMyLmZpbmQoMykpOworICBFWFBFQ1RfVEhB
VChzcmMyLCBFbGVtZW50c0FyZSg0KSk7CisgIHJlcyA9IG90aGVyLmluc2VydChzdGQ6Om1vdmUo
bmgpKTsKKyAgRVhQRUNUX1RIQVQob3RoZXIsIEVsZW1lbnRzQXJlKDMpKTsKKyAgRVhQRUNUX0VR
KHJlcy5wb3NpdGlvbiwgb3RoZXIuZmluZCgzKSk7CisgIEVYUEVDVF9GQUxTRShyZXMuaW5zZXJ0
ZWQpOworICBBU1NFUlRfRkFMU0UocmVzLm5vZGUuZW1wdHkoKSk7CisgIEVYUEVDVF9FUShyZXMu
bm9kZS52YWx1ZSgpLCAzKTsKK30KKworc3RydWN0IERlcmVmIHsKKyAgYm9vbCBvcGVyYXRvcigp
KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxpbnQ+ICZsaHMsCisgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnVuaXF1ZV9wdHI8aW50PiAmcmhzKSBjb25zdCB7CisgICAgcmV0dXJuICpsaHMgPCAq
cmhzOworICB9Cit9OworCitURVNUKEJ0cmVlLCBFeHRyYWN0V2l0aFVuaXF1ZVB0cikgeworICBh
YnNsOjpidHJlZV9zZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4sIERlcmVmPiBzOworICBzLmluc2Vy
dChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDEpKTsKKyAgcy5pbnNlcnQoYWJzbDo6bWFrZV91bmlx
dWU8aW50PigyKSk7CisgIHMuaW5zZXJ0KGFic2w6Om1ha2VfdW5pcXVlPGludD4oMykpOworICBz
Lmluc2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDQpKTsKKyAgcy5pbnNlcnQoYWJzbDo6bWFr
ZV91bmlxdWU8aW50Pig1KSk7CisgIGF1dG8gbmggPSBzLmV4dHJhY3Qocy5maW5kKGFic2w6Om1h
a2VfdW5pcXVlPGludD4oMykpKTsKKyAgRVhQRUNUX0VRKHMuc2l6ZSgpLCA0KTsKKyAgRVhQRUNU
X0VRKCpuaC52YWx1ZSgpLCAzKTsKKyAgcy5pbnNlcnQoc3RkOjptb3ZlKG5oKSk7CisgIEVYUEVD
VF9FUShzLnNpemUoKSwgNSk7Cit9CisKK1RFU1QoQnRyZWUsIEV4dHJhY3RBbmRJbnNlcnROb2Rl
SGFuZGxlTXVsdGlTZXQpIHsKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBzcmMxID0gezEs
IDIsIDMsIDMsIDQsIDV9OworICBhdXRvIG5oID0gc3JjMS5leHRyYWN0KHNyYzEuZmluZCgzKSk7
CisgIEVYUEVDVF9USEFUKHNyYzEsIEVsZW1lbnRzQXJlKDEsIDIsIDMsIDQsIDUpKTsKKyAgYWJz
bDo6YnRyZWVfbXVsdGlzZXQ8aW50PiBvdGhlcjsKKyAgYXV0byByZXMgPSBvdGhlci5pbnNlcnQo
c3RkOjptb3ZlKG5oKSk7CisgIEVYUEVDVF9USEFUKG90aGVyLCBFbGVtZW50c0FyZSgzKSk7Cisg
IEVYUEVDVF9FUShyZXMsIG90aGVyLmZpbmQoMykpOworCisgIGFic2w6OmJ0cmVlX211bHRpc2V0
PGludD4gc3JjMiA9IHszLCA0fTsKKyAgbmggPSBzcmMyLmV4dHJhY3Qoc3JjMi5maW5kKDMpKTsK
KyAgRVhQRUNUX1RIQVQoc3JjMiwgRWxlbWVudHNBcmUoNCkpOworICByZXMgPSBvdGhlci5pbnNl
cnQoc3RkOjptb3ZlKG5oKSk7CisgIEVYUEVDVF9USEFUKG90aGVyLCBFbGVtZW50c0FyZSgzLCAz
KSk7CisgIEVYUEVDVF9FUShyZXMsICsrb3RoZXIuZmluZCgzKSk7Cit9CisKK1RFU1QoQnRyZWUs
IEV4dHJhY3RBbmRJbnNlcnROb2RlSGFuZGxlTWFwKSB7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQs
IGludD4gc3JjMSA9IHt7MSwgMn0sIHszLCA0fSwgezUsIDZ9fTsKKyAgYXV0byBuaCA9IHNyYzEu
ZXh0cmFjdChzcmMxLmZpbmQoMykpOworICBFWFBFQ1RfVEhBVChzcmMxLCBFbGVtZW50c0FyZShQ
YWlyKDEsIDIpLCBQYWlyKDUsIDYpKSk7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gb3Ro
ZXI7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD46Omluc2VydF9yZXR1cm5fdHlwZSByZXMg
PQorICAgICAgb3RoZXIuaW5zZXJ0KHN0ZDo6bW92ZShuaCkpOworICBFWFBFQ1RfVEhBVChvdGhl
ciwgRWxlbWVudHNBcmUoUGFpcigzLCA0KSkpOworICBFWFBFQ1RfRVEocmVzLnBvc2l0aW9uLCBv
dGhlci5maW5kKDMpKTsKKyAgRVhQRUNUX1RSVUUocmVzLmluc2VydGVkKTsKKyAgRVhQRUNUX1RS
VUUocmVzLm5vZGUuZW1wdHkoKSk7CisKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwgaW50PiBzcmMy
ID0ge3szLCA2fX07CisgIG5oID0gc3JjMi5leHRyYWN0KHNyYzIuZmluZCgzKSk7CisgIEVYUEVD
VF9UUlVFKHNyYzIuZW1wdHkoKSk7CisgIHJlcyA9IG90aGVyLmluc2VydChzdGQ6Om1vdmUobmgp
KTsKKyAgRVhQRUNUX1RIQVQob3RoZXIsIEVsZW1lbnRzQXJlKFBhaXIoMywgNCkpKTsKKyAgRVhQ
RUNUX0VRKHJlcy5wb3NpdGlvbiwgb3RoZXIuZmluZCgzKSk7CisgIEVYUEVDVF9GQUxTRShyZXMu
aW5zZXJ0ZWQpOworICBBU1NFUlRfRkFMU0UocmVzLm5vZGUuZW1wdHkoKSk7CisgIEVYUEVDVF9F
UShyZXMubm9kZS5rZXkoKSwgMyk7CisgIEVYUEVDVF9FUShyZXMubm9kZS5tYXBwZWQoKSwgNik7
Cit9CisKK1RFU1QoQnRyZWUsIEV4dHJhY3RBbmRJbnNlcnROb2RlSGFuZGxlTXVsdGlNYXApIHsK
KyAgYWJzbDo6YnRyZWVfbXVsdGltYXA8aW50LCBpbnQ+IHNyYzEgPSB7ezEsIDJ9LCB7MywgNH0s
IHs1LCA2fX07CisgIGF1dG8gbmggPSBzcmMxLmV4dHJhY3Qoc3JjMS5maW5kKDMpKTsKKyAgRVhQ
RUNUX1RIQVQoc3JjMSwgRWxlbWVudHNBcmUoUGFpcigxLCAyKSwgUGFpcig1LCA2KSkpOworICBh
YnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIGludD4gb3RoZXI7CisgIGF1dG8gcmVzID0gb3RoZXIu
aW5zZXJ0KHN0ZDo6bW92ZShuaCkpOworICBFWFBFQ1RfVEhBVChvdGhlciwgRWxlbWVudHNBcmUo
UGFpcigzLCA0KSkpOworICBFWFBFQ1RfRVEocmVzLCBvdGhlci5maW5kKDMpKTsKKworICBhYnNs
OjpidHJlZV9tdWx0aW1hcDxpbnQsIGludD4gc3JjMiA9IHt7MywgNn19OworICBuaCA9IHNyYzIu
ZXh0cmFjdChzcmMyLmZpbmQoMykpOworICBFWFBFQ1RfVFJVRShzcmMyLmVtcHR5KCkpOworICBy
ZXMgPSBvdGhlci5pbnNlcnQoc3RkOjptb3ZlKG5oKSk7CisgIEVYUEVDVF9USEFUKG90aGVyLCBF
bGVtZW50c0FyZShQYWlyKDMsIDQpLCBQYWlyKDMsIDYpKSk7CisgIEVYUEVDVF9FUShyZXMsICsr
b3RoZXIuYmVnaW4oKSk7Cit9CisKKy8vIEZvciBtdWx0aXNldHMsIGluc2VydCB3aXRoIGhpbnQg
YWxzbyBhZmZlY3RzIGNvcnJlY3RuZXNzIGJlY2F1c2Ugd2UgbmVlZCB0bworLy8gaW5zZXJ0IGlt
bWVkaWF0ZWx5IGJlZm9yZSB0aGUgaGludCBpZiBwb3NzaWJsZS4KK3N0cnVjdCBJbnNlcnRNdWx0
aUhpbnREYXRhIHsKKyAgaW50IGtleTsKKyAgaW50IG5vdF9rZXk7CisgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJbnNlcnRNdWx0aUhpbnREYXRhIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIGtl
eSA9PSBvdGhlci5rZXkgJiYgbm90X2tleSA9PSBvdGhlci5ub3Rfa2V5OworICB9Cit9OworCitz
dHJ1Y3QgSW5zZXJ0TXVsdGlIaW50RGF0YUtleUNvbXBhcmUgeworICB1c2luZyBpc190cmFuc3Bh
cmVudCA9IHZvaWQ7CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBJbnNlcnRNdWx0aUhpbnREYXRh
IGEsCisgICAgICAgICAgICAgICAgICBjb25zdCBJbnNlcnRNdWx0aUhpbnREYXRhIGIpIGNvbnN0
IHsKKyAgICByZXR1cm4gYS5rZXkgPCBiLmtleTsKKyAgfQorICBib29sIG9wZXJhdG9yKCkoY29u
c3QgaW50IGEsIGNvbnN0IEluc2VydE11bHRpSGludERhdGEgYikgY29uc3QgeworICAgIHJldHVy
biBhIDwgYi5rZXk7CisgIH0KKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEluc2VydE11bHRpSGlu
dERhdGEgYSwgY29uc3QgaW50IGIpIGNvbnN0IHsKKyAgICByZXR1cm4gYS5rZXkgPCBiOworICB9
Cit9OworCitURVNUKEJ0cmVlLCBJbnNlcnRIaW50Tm9kZUhhbmRsZSkgeworICAvLyBGb3IgdW5p
cXVlIHNldHMsIGluc2VydCB3aXRoIGhpbnQgaXMganVzdCBhIHBlcmZvcm1hbmNlIG9wdGltaXph
dGlvbi4KKyAgLy8gVGVzdCB0aGF0IGluc2VydCB3b3JrcyBjb3JyZWN0bHkgd2hlbiB0aGUgaGlu
dCBpcyByaWdodCBvciB3cm9uZy4KKyAgeworICAgIGFic2w6OmJ0cmVlX3NldDxpbnQ+IHNyYyA9
IHsxLCAyLCAzLCA0LCA1fTsKKyAgICBhdXRvIG5oID0gc3JjLmV4dHJhY3Qoc3JjLmZpbmQoMykp
OworICAgIEVYUEVDVF9USEFUKHNyYywgRWxlbWVudHNBcmUoMSwgMiwgNCwgNSkpOworICAgIGFi
c2w6OmJ0cmVlX3NldDxpbnQ+IG90aGVyID0gezAsIDEwMH07CisgICAgLy8gVGVzdCBhIGNvcnJl
Y3QgaGludC4KKyAgICBhdXRvIGl0ID0gb3RoZXIuaW5zZXJ0KG90aGVyLmxvd2VyX2JvdW5kKDMp
LCBzdGQ6Om1vdmUobmgpKTsKKyAgICBFWFBFQ1RfVEhBVChvdGhlciwgRWxlbWVudHNBcmUoMCwg
MywgMTAwKSk7CisgICAgRVhQRUNUX0VRKGl0LCBvdGhlci5maW5kKDMpKTsKKworICAgIG5oID0g
c3JjLmV4dHJhY3Qoc3JjLmZpbmQoNSkpOworICAgIC8vIFRlc3QgYW4gaW5jb3JyZWN0IGhpbnQu
CisgICAgaXQgPSBvdGhlci5pbnNlcnQob3RoZXIuZW5kKCksIHN0ZDo6bW92ZShuaCkpOworICAg
IEVYUEVDVF9USEFUKG90aGVyLCBFbGVtZW50c0FyZSgwLCAzLCA1LCAxMDApKTsKKyAgICBFWFBF
Q1RfRVEoaXQsIG90aGVyLmZpbmQoNSkpOworICB9CisKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8
SW5zZXJ0TXVsdGlIaW50RGF0YSwgSW5zZXJ0TXVsdGlIaW50RGF0YUtleUNvbXBhcmU+IHNyYyA9
CisgICAgICB7ezEsIDJ9LCB7MywgNH0sIHszLCA1fX07CisgIGF1dG8gbmggPSBzcmMuZXh0cmFj
dChzcmMubG93ZXJfYm91bmQoMykpOworICBFWFBFQ1RfRVEobmgudmFsdWUoKSwgKEluc2VydE11
bHRpSGludERhdGF7MywgNH0pKTsKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8SW5zZXJ0TXVsdGlI
aW50RGF0YSwgSW5zZXJ0TXVsdGlIaW50RGF0YUtleUNvbXBhcmU+CisgICAgICBvdGhlciA9IHt7
MywgMX0sIHszLCAyfSwgezMsIDN9fTsKKyAgYXV0byBpdCA9IG90aGVyLmluc2VydCgtLW90aGVy
LmVuZCgpLCBzdGQ6Om1vdmUobmgpKTsKKyAgRVhQRUNUX1RIQVQoCisgICAgICBvdGhlciwgRWxl
bWVudHNBcmUoSW5zZXJ0TXVsdGlIaW50RGF0YXszLCAxfSwgSW5zZXJ0TXVsdGlIaW50RGF0YXsz
LCAyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRNdWx0aUhpbnREYXRhezMsIDR9
LCBJbnNlcnRNdWx0aUhpbnREYXRhezMsIDN9KSk7CisgIEVYUEVDVF9FUShpdCwgLS0oLS1vdGhl
ci5lbmQoKSkpOworCisgIG5oID0gc3JjLmV4dHJhY3Qoc3JjLmZpbmQoMykpOworICBFWFBFQ1Rf
RVEobmgudmFsdWUoKSwgKEluc2VydE11bHRpSGludERhdGF7MywgNX0pKTsKKyAgaXQgPSBvdGhl
ci5pbnNlcnQob3RoZXIuYmVnaW4oKSwgc3RkOjptb3ZlKG5oKSk7CisgIEVYUEVDVF9USEFUKG90
aGVyLAorICAgICAgICAgICAgICBFbGVtZW50c0FyZShJbnNlcnRNdWx0aUhpbnREYXRhezMsIDV9
LCBJbnNlcnRNdWx0aUhpbnREYXRhezMsIDF9LAorICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bnNlcnRNdWx0aUhpbnREYXRhezMsIDJ9LCBJbnNlcnRNdWx0aUhpbnREYXRhezMsIDR9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRNdWx0aUhpbnREYXRhezMsIDN9KSk7CisgIEVY
UEVDVF9FUShpdCwgb3RoZXIuYmVnaW4oKSk7Cit9CisKK3N0cnVjdCBJbnRDb21wYXJlVG9DbXAg
eworICBhYnNsOjp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yKCkoaW50IGEsIGludCBiKSBjb25zdCB7
CisgICAgaWYgKGEgPCBiKSByZXR1cm4gYWJzbDo6d2Vha19vcmRlcmluZzo6bGVzczsKKyAgICBp
ZiAoYSA+IGIpIHJldHVybiBhYnNsOjp3ZWFrX29yZGVyaW5nOjpncmVhdGVyOworICAgIHJldHVy
biBhYnNsOjp3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50OworICB9Cit9OworCitURVNUKEJ0cmVl
LCBNZXJnZUludG9VbmlxdWVDb250YWluZXJzKSB7CisgIGFic2w6OmJ0cmVlX3NldDxpbnQsIElu
dENvbXBhcmVUb0NtcD4gc3JjMSA9IHsxLCAyLCAzfTsKKyAgYWJzbDo6YnRyZWVfbXVsdGlzZXQ8
aW50PiBzcmMyID0gezMsIDQsIDQsIDV9OworICBhYnNsOjpidHJlZV9zZXQ8aW50PiBkc3Q7CisK
KyAgZHN0Lm1lcmdlKHNyYzEpOworICBFWFBFQ1RfVFJVRShzcmMxLmVtcHR5KCkpOworICBFWFBF
Q1RfVEhBVChkc3QsIEVsZW1lbnRzQXJlKDEsIDIsIDMpKTsKKyAgZHN0Lm1lcmdlKHNyYzIpOwor
ICBFWFBFQ1RfVEhBVChzcmMyLCBFbGVtZW50c0FyZSgzLCA0KSk7CisgIEVYUEVDVF9USEFUKGRz
dCwgRWxlbWVudHNBcmUoMSwgMiwgMywgNCwgNSkpOworfQorCitURVNUKEJ0cmVlLCBNZXJnZUlu
dG9VbmlxdWVDb250YWluZXJzV2l0aENvbXBhcmVUbykgeworICBhYnNsOjpidHJlZV9zZXQ8aW50
LCBJbnRDb21wYXJlVG9DbXA+IHNyYzEgPSB7MSwgMiwgM307CisgIGFic2w6OmJ0cmVlX211bHRp
c2V0PGludD4gc3JjMiA9IHszLCA0LCA0LCA1fTsKKyAgYWJzbDo6YnRyZWVfc2V0PGludCwgSW50
Q29tcGFyZVRvQ21wPiBkc3Q7CisKKyAgZHN0Lm1lcmdlKHNyYzEpOworICBFWFBFQ1RfVFJVRShz
cmMxLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChkc3QsIEVsZW1lbnRzQXJlKDEsIDIsIDMpKTsK
KyAgZHN0Lm1lcmdlKHNyYzIpOworICBFWFBFQ1RfVEhBVChzcmMyLCBFbGVtZW50c0FyZSgzLCA0
KSk7CisgIEVYUEVDVF9USEFUKGRzdCwgRWxlbWVudHNBcmUoMSwgMiwgMywgNCwgNSkpOworfQor
CitURVNUKEJ0cmVlLCBNZXJnZUludG9NdWx0aUNvbnRhaW5lcnMpIHsKKyAgYWJzbDo6YnRyZWVf
c2V0PGludCwgSW50Q29tcGFyZVRvQ21wPiBzcmMxID0gezEsIDIsIDN9OworICBhYnNsOjpidHJl
ZV9tdWx0aXNldDxpbnQ+IHNyYzIgPSB7MywgNCwgNCwgNX07CisgIGFic2w6OmJ0cmVlX211bHRp
c2V0PGludD4gZHN0OworCisgIGRzdC5tZXJnZShzcmMxKTsKKyAgRVhQRUNUX1RSVUUoc3JjMS5l
bXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoZHN0LCBFbGVtZW50c0FyZSgxLCAyLCAzKSk7CisgIGRz
dC5tZXJnZShzcmMyKTsKKyAgRVhQRUNUX1RSVUUoc3JjMi5lbXB0eSgpKTsKKyAgRVhQRUNUX1RI
QVQoZHN0LCBFbGVtZW50c0FyZSgxLCAyLCAzLCAzLCA0LCA0LCA1KSk7Cit9CisKK1RFU1QoQnRy
ZWUsIE1lcmdlSW50b011bHRpQ29udGFpbmVyc1dpdGhDb21wYXJlVG8pIHsKKyAgYWJzbDo6YnRy
ZWVfc2V0PGludCwgSW50Q29tcGFyZVRvQ21wPiBzcmMxID0gezEsIDIsIDN9OworICBhYnNsOjpi
dHJlZV9tdWx0aXNldDxpbnQ+IHNyYzIgPSB7MywgNCwgNCwgNX07CisgIGFic2w6OmJ0cmVlX211
bHRpc2V0PGludCwgSW50Q29tcGFyZVRvQ21wPiBkc3Q7CisKKyAgZHN0Lm1lcmdlKHNyYzEpOwor
ICBFWFBFQ1RfVFJVRShzcmMxLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChkc3QsIEVsZW1lbnRz
QXJlKDEsIDIsIDMpKTsKKyAgZHN0Lm1lcmdlKHNyYzIpOworICBFWFBFQ1RfVFJVRShzcmMyLmVt
cHR5KCkpOworICBFWFBFQ1RfVEhBVChkc3QsIEVsZW1lbnRzQXJlKDEsIDIsIDMsIDMsIDQsIDQs
IDUpKTsKK30KKworVEVTVChCdHJlZSwgTWVyZ2VJbnRvTXVsdGlNYXBzV2l0aERpZmZlcmVudENv
bXBhcmF0b3JzKSB7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludCwgSW50Q29tcGFyZVRvQ21w
PiBzcmMxID0ge3sxLCAxfSwgezIsIDJ9LCB7MywgM319OworICBhYnNsOjpidHJlZV9tdWx0aW1h
cDxpbnQsIGludCwgc3RkOjpncmVhdGVyPGludD4+IHNyYzIgPSB7CisgICAgICB7NSwgNX0sIHs0
LCAxfSwgezQsIDR9LCB7MywgMn19OworICBhYnNsOjpidHJlZV9tdWx0aW1hcDxpbnQsIGludD4g
ZHN0OworCisgIGRzdC5tZXJnZShzcmMxKTsKKyAgRVhQRUNUX1RSVUUoc3JjMS5lbXB0eSgpKTsK
KyAgRVhQRUNUX1RIQVQoZHN0LCBFbGVtZW50c0FyZShQYWlyKDEsIDEpLCBQYWlyKDIsIDIpLCBQ
YWlyKDMsIDMpKSk7CisgIGRzdC5tZXJnZShzcmMyKTsKKyAgRVhQRUNUX1RSVUUoc3JjMi5lbXB0
eSgpKTsKKyAgRVhQRUNUX1RIQVQoZHN0LCBFbGVtZW50c0FyZShQYWlyKDEsIDEpLCBQYWlyKDIs
IDIpLCBQYWlyKDMsIDMpLCBQYWlyKDMsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhaXIoNCwgMSksIFBhaXIoNCwgNCksIFBhaXIoNSwgNSkpKTsKK30KKworc3RydWN0IEtl
eUNvbXBhcmVUb1dlYWtPcmRlcmluZyB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBhYnNs
Ojp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yKCkoY29uc3QgVCAmYSwgY29uc3QgVCAmYikgY29uc3Qg
eworICAgIHJldHVybiBhIDwgYiA/IGFic2w6OndlYWtfb3JkZXJpbmc6Omxlc3MKKyAgICAgICAg
ICAgICAgICAgOiBhID09IGIgPyBhYnNsOjp3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogYWJzbDo6d2Vha19vcmRlcmluZzo6Z3JlYXRlcjsKKyAg
fQorfTsKKworc3RydWN0IEtleUNvbXBhcmVUb1N0cm9uZ09yZGVyaW5nIHsKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgIGFic2w6OnN0cm9uZ19vcmRlcmluZyBvcGVyYXRvcigpKGNvbnN0IFQg
JmEsIGNvbnN0IFQgJmIpIGNvbnN0IHsKKyAgICByZXR1cm4gYSA8IGIgPyBhYnNsOjpzdHJvbmdf
b3JkZXJpbmc6Omxlc3MKKyAgICAgICAgICAgICAgICAgOiBhID09IGIgPyBhYnNsOjpzdHJvbmdf
b3JkZXJpbmc6OmVxdWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDogYWJzbDo6c3Ryb25n
X29yZGVyaW5nOjpncmVhdGVyOworICB9Cit9OworCitURVNUKEJ0cmVlLCBVc2VyUHJvdmlkZWRL
ZXlDb21wYXJlVG9Db21wYXJhdG9ycykgeworICBhYnNsOjpidHJlZV9zZXQ8aW50LCBLZXlDb21w
YXJlVG9XZWFrT3JkZXJpbmc+IHdlYWtfc2V0ID0gezEsIDIsIDN9OworICBFWFBFQ1RfVFJVRSh3
ZWFrX3NldC5jb250YWlucygyKSk7CisgIEVYUEVDVF9GQUxTRSh3ZWFrX3NldC5jb250YWlucyg0
KSk7CisKKyAgYWJzbDo6YnRyZWVfc2V0PGludCwgS2V5Q29tcGFyZVRvU3Ryb25nT3JkZXJpbmc+
IHN0cm9uZ19zZXQgPSB7MSwgMiwgM307CisgIEVYUEVDVF9UUlVFKHN0cm9uZ19zZXQuY29udGFp
bnMoMikpOworICBFWFBFQ1RfRkFMU0Uoc3Ryb25nX3NldC5jb250YWlucyg0KSk7Cit9CisKK1RF
U1QoQnRyZWUsIFRyeUVtcGxhY2VCYXNpY1Rlc3QpIHsKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwg
c3RkOjpzdHJpbmc+IG07CisKKyAgLy8gU2hvdWxkIGNvbnN0cnVjdCBhIHN0ZDo6c3RyaW5nIGZy
b20gdGhlIGxpdGVyYWwuCisgIG0udHJ5X2VtcGxhY2UoMSwgIm9uZSIpOworICBFWFBFQ1RfRVEo
MSwgbS5zaXplKCkpOworCisgIC8vIFRyeSBvdGhlciBzdGQ6OnN0cmluZyBjb25zdHJ1Y3RvcnMg
YW5kIGNvbnN0IGx2YWx1ZSBrZXkuCisgIGNvbnN0IGludCBrZXkoNDIpOworICBtLnRyeV9lbXBs
YWNlKGtleSwgMywgJ2EnKTsKKyAgbS50cnlfZW1wbGFjZSgyLCBzdGQ6OnN0cmluZygidHdvIikp
OworCisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfc29ydGVkKG0uYmVnaW4oKSwgbS5lbmQoKSkpOwor
ICBFWFBFQ1RfVEhBVChtLCBFbGVtZW50c0FyZUFycmF5KHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxp
bnQsIHN0ZDo6c3RyaW5nPj57CisgICAgICAgICAgICAgICAgICAgICB7MSwgIm9uZSJ9LCB7Miwg
InR3byJ9LCB7NDIsICJhYWEifX0pKTsKK30KKworVEVTVChCdHJlZSwgVHJ5RW1wbGFjZVdpdGhI
aW50V29ya3MpIHsKKyAgLy8gVXNlIGEgY291bnRpbmcgY29tcGFyYXRvciBoZXJlIHRvIHZlcmlm
eSB0aGF0IGhpbnQgaXMgdXNlZC4KKyAgaW50IGNhbGxzID0gMDsKKyAgYXV0byBjbXAgPSBbJmNh
bGxzXShpbnQgeCwgaW50IHkpIHsKKyAgICArK2NhbGxzOworICAgIHJldHVybiB4IDwgeTsKKyAg
fTsKKyAgdXNpbmcgQ21wID0gZGVjbHR5cGUoY21wKTsKKworICBhYnNsOjpidHJlZV9tYXA8aW50
LCBpbnQsIENtcD4gbShjbXApOworICBmb3IgKGludCBpID0gMDsgaSA8IDEyODsgKytpKSB7Cisg
ICAgbS5lbXBsYWNlKGksIGkpOworICB9CisKKyAgLy8gU2FuaXR5IGNoZWNrIGZvciB0aGUgY29t
cGFyYXRvcgorICBjYWxscyA9IDA7CisgIG0uZW1wbGFjZSgxMjcsIDEyNyk7CisgIEVYUEVDVF9H
RShjYWxscywgNCk7CisKKyAgLy8gVHJ5IHdpdGggYmVnaW4gaGludDoKKyAgY2FsbHMgPSAwOwor
ICBhdXRvIGl0ID0gbS50cnlfZW1wbGFjZShtLmJlZ2luKCksIC0xLCAtMSk7CisgIEVYUEVDVF9F
USgxMjksIG0uc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKGl0LCBtLmJlZ2luKCkpOworICBFWFBFQ1Rf
TEUoY2FsbHMsIDIpOworCisgIC8vIFRyeSB3aXRoIGVuZCBoaW50OgorICBjYWxscyA9IDA7Cisg
IHN0ZDo6cGFpcjxpbnQsIGludD4gcGFpcjEwMjQgPSB7MTAyNCwgMTAyNH07CisgIGl0ID0gbS50
cnlfZW1wbGFjZShtLmVuZCgpLCBwYWlyMTAyNC5maXJzdCwgcGFpcjEwMjQuc2Vjb25kKTsKKyAg
RVhQRUNUX0VRKDEzMCwgbS5zaXplKCkpOworICBFWFBFQ1RfRVEoaXQsIC0tbS5lbmQoKSk7Cisg
IEVYUEVDVF9MRShjYWxscywgMik7CisKKyAgLy8gVHJ5IHZhbHVlIGFscmVhZHkgcHJlc2VudCwg
YmFkIGhpbnQ7IGVuc3VyZSBubyBkdXBsaWNhdGUgYWRkZWQ6CisgIGNhbGxzID0gMDsKKyAgaXQg
PSBtLnRyeV9lbXBsYWNlKG0uZW5kKCksIDE2LCAxNyk7CisgIEVYUEVDVF9FUSgxMzAsIG0uc2l6
ZSgpKTsKKyAgRVhQRUNUX0dFKGNhbGxzLCA0KTsKKyAgRVhQRUNUX0VRKGl0LCBtLmZpbmQoMTYp
KTsKKworICAvLyBUcnkgdmFsdWUgYWxyZWFkeSBwcmVzZW50LCBoaW50IHBvaW50cyBkaXJlY3Rs
eSB0byBpdDoKKyAgY2FsbHMgPSAwOworICBpdCA9IG0udHJ5X2VtcGxhY2UoaXQsIDE2LCAxNyk7
CisgIEVYUEVDVF9FUSgxMzAsIG0uc2l6ZSgpKTsKKyAgRVhQRUNUX0xFKGNhbGxzLCAyKTsKKyAg
RVhQRUNUX0VRKGl0LCBtLmZpbmQoMTYpKTsKKworICBtLmVyYXNlKDIpOworICBFWFBFQ1RfRVEo
MTI5LCBtLnNpemUoKSk7CisgIGF1dG8gaGludCA9IG0uZmluZCgzKTsKKyAgLy8gVHJ5IGVtcGxh
Y2UgaW4gdGhlIG1pZGRsZSBvZiB0d28gb3RoZXIgZWxlbWVudHMuCisgIGNhbGxzID0gMDsKKyAg
bS50cnlfZW1wbGFjZShoaW50LCAyLCAyKTsKKyAgRVhQRUNUX0VRKDEzMCwgbS5zaXplKCkpOwor
ICBFWFBFQ1RfTEUoY2FsbHMsIDIpOworCisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfc29ydGVkKG0u
YmVnaW4oKSwgbS5lbmQoKSkpOworfQorCitURVNUKEJ0cmVlLCBUcnlFbXBsYWNlV2l0aEJhZEhp
bnQpIHsKKyAgYWJzbDo6YnRyZWVfbWFwPGludCwgaW50PiBtID0ge3sxLCAxfSwgezksIDl9fTsK
KworICAvLyBCYWQgaGludCAodG9vIHNtYWxsKSwgc2hvdWxkIHN0aWxsIGVtcGxhY2U6CisgIGF1
dG8gaXQgPSBtLnRyeV9lbXBsYWNlKG0uYmVnaW4oKSwgMiwgMik7CisgIEVYUEVDVF9FUShpdCwg
KyttLmJlZ2luKCkpOworICBFWFBFQ1RfVEhBVChtLCBFbGVtZW50c0FyZUFycmF5KAorICAgICAg
ICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGludCwgaW50Pj57ezEsIDF9LCB7
MiwgMn0sIHs5LCA5fX0pKTsKKworICAvLyBCYWQgaGludCwgdG9vIGxhcmdlIHRoaXMgdGltZToK
KyAgaXQgPSBtLnRyeV9lbXBsYWNlKCsrKCsrbS5iZWdpbigpKSwgMCwgMCk7CisgIEVYUEVDVF9F
UShpdCwgbS5iZWdpbigpKTsKKyAgRVhQRUNUX1RIQVQobSwgRWxlbWVudHNBcmVBcnJheShzdGQ6
OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+PnsKKyAgICAgICAgICAgICAgICAgICAgIHswLCAw
fSwgezEsIDF9LCB7MiwgMn0sIHs5LCA5fX0pKTsKK30KKworVEVTVChCdHJlZSwgVHJ5RW1wbGFj
ZU1haW50YWluc1NvcnRlZE9yZGVyKSB7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIHN0ZDo6c3Ry
aW5nPiBtOworICBzdGQ6OnBhaXI8aW50LCBzdGQ6OnN0cmluZz4gcGFpcjUgPSB7NSwgImZpdmUi
fTsKKworICAvLyBUZXN0IGJvdGggbHZhbHVlICYgcnZhbHVlIGVtcGxhY2UuCisgIG0udHJ5X2Vt
cGxhY2UoMTAsICJ0ZW4iKTsKKyAgbS50cnlfZW1wbGFjZShwYWlyNS5maXJzdCwgcGFpcjUuc2Vj
b25kKTsKKyAgRVhQRUNUX0VRKDIsIG0uc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc19z
b3J0ZWQobS5iZWdpbigpLCBtLmVuZCgpKSk7CisKKyAgaW50IGludDEwMHsxMDB9OworICBtLnRy
eV9lbXBsYWNlKGludDEwMCwgImh1bmRyZWQiKTsKKyAgbS50cnlfZW1wbGFjZSgxLCAib25lIik7
CisgIEVYUEVDVF9FUSg0LCBtLnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfc29ydGVk
KG0uYmVnaW4oKSwgbS5lbmQoKSkpOworfQorCitURVNUKEJ0cmVlLCBUcnlFbXBsYWNlV2l0aEhp
bnRBbmROb1ZhbHVlQXJnc1dvcmtzKSB7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIGludD4gbTsK
KyAgbS50cnlfZW1wbGFjZShtLmVuZCgpLCAxKTsKKyAgRVhQRUNUX0VRKDAsIG1bMV0pOworfQor
CitURVNUKEJ0cmVlLCBUcnlFbXBsYWNlV2l0aEhpbnRBbmRNdWx0aXBsZVZhbHVlQXJnc1dvcmtz
KSB7CisgIGFic2w6OmJ0cmVlX21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtOworICBtLnRyeV9lbXBs
YWNlKG0uZW5kKCksIDEsIDEwLCAnYScpOworICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoMTAsICdh
JyksIG1bMV0pOworfQorCitURVNUKEJ0cmVlLCBNb3ZlQXNzaWdubWVudEFsbG9jYXRvclByb3Bh
Z2F0aW9uKSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyOworCisgIGludDY0X3QgYnl0ZXMx
ID0gMCwgYnl0ZXMyID0gMDsKKyAgUHJvcGFnYXRpbmdDb3VudGluZ0FsbG9jPE1vdmFibGVPbmx5
SW5zdGFuY2U+IGFsbG9jYXRvcjEoJmJ5dGVzMSk7CisgIFByb3BhZ2F0aW5nQ291bnRpbmdBbGxv
YzxNb3ZhYmxlT25seUluc3RhbmNlPiBhbGxvY2F0b3IyKCZieXRlczIpOworICBzdGQ6Omxlc3M8
TW92YWJsZU9ubHlJbnN0YW5jZT4gY21wOworCisgIC8vIFRlc3QgcHJvcGFnYXRpbmcgYWxsb2Nh
dG9yX3R5cGUuCisgIHsKKyAgICBhYnNsOjpidHJlZV9zZXQ8TW92YWJsZU9ubHlJbnN0YW5jZSwg
c3RkOjpsZXNzPE1vdmFibGVPbmx5SW5zdGFuY2U+LAorICAgICAgICAgICAgICAgICAgICBQcm9w
YWdhdGluZ0NvdW50aW5nQWxsb2M8TW92YWJsZU9ubHlJbnN0YW5jZT4+CisgICAgICAgIHNldDEo
Y21wLCBhbGxvY2F0b3IxKSwgc2V0MihjbXAsIGFsbG9jYXRvcjIpOworCisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCAxMDA7ICsraSkgc2V0MS5pbnNlcnQoTW92YWJsZU9ubHlJbnN0YW5jZShpKSk7
CisKKyAgICB0cmFja2VyLlJlc2V0Q29waWVzTW92ZXNTd2FwcygpOworICAgIHNldDIgPSBzdGQ6
Om1vdmUoc2V0MSk7CisgICAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMCk7CisgIH0KKyAg
Ly8gVGVzdCBub24tcHJvcGFnYXRpbmcgYWxsb2NhdG9yX3R5cGUgd2l0aCBlcXVhbCBhbGxvY2F0
b3JzLgorICB7CisgICAgYWJzbDo6YnRyZWVfc2V0PE1vdmFibGVPbmx5SW5zdGFuY2UsIHN0ZDo6
bGVzczxNb3ZhYmxlT25seUluc3RhbmNlPiwKKyAgICAgICAgICAgICAgICAgICAgQ291bnRpbmdB
bGxvY2F0b3I8TW92YWJsZU9ubHlJbnN0YW5jZT4+CisgICAgICAgIHNldDEoY21wLCBhbGxvY2F0
b3IxKSwgc2V0MihjbXAsIGFsbG9jYXRvcjEpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAx
MDA7ICsraSkgc2V0MS5pbnNlcnQoTW92YWJsZU9ubHlJbnN0YW5jZShpKSk7CisKKyAgICB0cmFj
a2VyLlJlc2V0Q29waWVzTW92ZXNTd2FwcygpOworICAgIHNldDIgPSBzdGQ6Om1vdmUoc2V0MSk7
CisgICAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMCk7CisgIH0KKyAgLy8gVGVzdCBub24t
cHJvcGFnYXRpbmcgYWxsb2NhdG9yX3R5cGUgd2l0aCBkaWZmZXJlbnQgYWxsb2NhdG9ycy4KKyAg
eworICAgIGFic2w6OmJ0cmVlX3NldDxNb3ZhYmxlT25seUluc3RhbmNlLCBzdGQ6Omxlc3M8TW92
YWJsZU9ubHlJbnN0YW5jZT4sCisgICAgICAgICAgICAgICAgICAgIENvdW50aW5nQWxsb2NhdG9y
PE1vdmFibGVPbmx5SW5zdGFuY2U+PgorICAgICAgICBzZXQxKGNtcCwgYWxsb2NhdG9yMSksIHNl
dDIoY21wLCBhbGxvY2F0b3IyKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyArK2kp
IHNldDEuaW5zZXJ0KE1vdmFibGVPbmx5SW5zdGFuY2UoaSkpOworCisgICAgdHJhY2tlci5SZXNl
dENvcGllc01vdmVzU3dhcHMoKTsKKyAgICBzZXQyID0gc3RkOjptb3ZlKHNldDEpOworICAgIEVY
UEVDVF9HRSh0cmFja2VyLm1vdmVzKCksIDEwMCk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNl
Cit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJz
bApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2J0cmVlX3Rlc3QuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9idHJlZV90ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVjZjQzY2VlYmU1MTdiMjc1YWZlODBkMmU2
OWFlOTc4M2FlMjBiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9idHJlZV90
ZXN0LmgKQEAgLTAsMCArMSwxNTMgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0JUUkVFX1RFU1RfSF8KKyNkZWZpbmUg
QUJTTF9DT05UQUlORVJfQlRSRUVfVEVTVF9IXworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2lu
Y2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHN0cmluZz4KKyNp
bmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvY29u
dGFpbmVyL2J0cmVlX21hcC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2J0cmVlX3NldC5o
IgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXQuaCIKKyNpbmNsdWRlICJh
YnNsL3RpbWUvdGltZS5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsIHsKKworLy8gTGlrZSByZW1vdmVfY29uc3QgYnV0IHByb3BhZ2F0ZXMgdGhlIHJl
bW92YWwgdGhyb3VnaCBzdGQ6OnBhaXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBy
ZW1vdmVfcGFpcl9jb25zdCB7CisgIHVzaW5nIHR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
b25zdDxUPjo6dHlwZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3N0
cnVjdCByZW1vdmVfcGFpcl9jb25zdDxzdGQ6OnBhaXI8VCwgVT4gPiB7CisgIHVzaW5nIHR5cGUg
PSBzdGQ6OnBhaXI8dHlwZW5hbWUgcmVtb3ZlX3BhaXJfY29uc3Q8VD46OnR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3BhaXJfY29uc3Q8VT46OnR5cGU+Owor
fTsKKworLy8gVXRpbGl0eSBjbGFzcyB0byBwcm92aWRlIGFuIGFjY2Vzc29yIGZvciBhIGtleSBn
aXZlbiBhIHZhbHVlLiBUaGUgZGVmYXVsdAorLy8gYmVoYXZpb3IgaXMgdG8gdHJlYXQgdGhlIHZh
bHVlIGFzIGEgcGFpciBhbmQgcmV0dXJuIHRoZSBmaXJzdCBlbGVtZW50LgordGVtcGxhdGUgPHR5
cGVuYW1lIEssIHR5cGVuYW1lIFY+CitzdHJ1Y3QgS2V5T2ZWYWx1ZSB7CisgIHN0cnVjdCB0eXBl
IHsKKyAgICBjb25zdCBLJiBvcGVyYXRvcigpKGNvbnN0IFYmIHApIGNvbnN0IHsgcmV0dXJuIHAu
Zmlyc3Q7IH0KKyAgfTsKK307CisKKy8vIFBhcnRpYWwgc3BlY2lhbGl6YXRpb24gb2YgS2V5T2ZW
YWx1ZSBjbGFzcyBmb3Igd2hlbiB0aGUga2V5IGFuZCB2YWx1ZSBhcmUKKy8vIHRoZSBzYW1lIHR5
cGUgc3VjaCBhcyBpbiBzZXQ8PiBhbmQgYnRyZWVfc2V0PD4uCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Sz4KK3N0cnVjdCBLZXlPZlZhbHVlPEssIEs+IHsKKyAgc3RydWN0IHR5cGUgeworICAgIGNvbnN0
IEsmIG9wZXJhdG9yKCkoY29uc3QgSyYgaykgY29uc3QgeyByZXR1cm4gazsgfQorICB9OworfTsK
KworaW5saW5lIGNoYXIqIEdlbmVyYXRlRGlnaXRzKGNoYXIgYnVmWzE2XSwgdW5zaWduZWQgdmFs
LCB1bnNpZ25lZCBtYXh2YWwpIHsKKyAgYXNzZXJ0KHZhbCA8PSBtYXh2YWwpOworICBjb25zdGV4
cHIgdW5zaWduZWQga0Jhc2UgPSA2NDsgIC8vIGF2b2lkIGludGVnZXIgZGl2aXNpb24uCisgIHVu
c2lnbmVkIHAgPSAxNTsKKyAgYnVmW3AtLV0gPSAwOworICB3aGlsZSAobWF4dmFsID4gMCkgewor
ICAgIGJ1ZltwLS1dID0gJyAnICsgKHZhbCAlIGtCYXNlKTsKKyAgICB2YWwgLz0ga0Jhc2U7Cisg
ICAgbWF4dmFsIC89IGtCYXNlOworICB9CisgIHJldHVybiBidWYgKyBwICsgMTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIEs+CitzdHJ1Y3QgR2VuZXJhdG9yIHsKKyAgaW50IG1heHZhbDsKKyAg
ZXhwbGljaXQgR2VuZXJhdG9yKGludCBtKSA6IG1heHZhbChtKSB7fQorICBLIG9wZXJhdG9yKCko
aW50IGkpIGNvbnN0IHsKKyAgICBhc3NlcnQoaSA8PSBtYXh2YWwpOworICAgIHJldHVybiBLKGkp
OworICB9Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IEdlbmVyYXRvcjxhYnNsOjpUaW1lPiB7
CisgIGludCBtYXh2YWw7CisgIGV4cGxpY2l0IEdlbmVyYXRvcihpbnQgbSkgOiBtYXh2YWwobSkg
e30KKyAgYWJzbDo6VGltZSBvcGVyYXRvcigpKGludCBpKSBjb25zdCB7IHJldHVybiBhYnNsOjpG
cm9tVW5peE1pbGxpcyhpKTsgfQorfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBHZW5lcmF0b3I8
c3RkOjpzdHJpbmc+IHsKKyAgaW50IG1heHZhbDsKKyAgZXhwbGljaXQgR2VuZXJhdG9yKGludCBt
KSA6IG1heHZhbChtKSB7fQorICBzdGQ6OnN0cmluZyBvcGVyYXRvcigpKGludCBpKSBjb25zdCB7
CisgICAgY2hhciBidWZbMTZdOworICAgIHJldHVybiBHZW5lcmF0ZURpZ2l0cyhidWYsIGksIG1h
eHZhbCk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorc3Ry
dWN0IEdlbmVyYXRvcjxzdGQ6OnBhaXI8VCwgVT4gPiB7CisgIEdlbmVyYXRvcjx0eXBlbmFtZSBy
ZW1vdmVfcGFpcl9jb25zdDxUPjo6dHlwZT4gdGdlbjsKKyAgR2VuZXJhdG9yPHR5cGVuYW1lIHJl
bW92ZV9wYWlyX2NvbnN0PFU+Ojp0eXBlPiB1Z2VuOworCisgIGV4cGxpY2l0IEdlbmVyYXRvcihp
bnQgbSkgOiB0Z2VuKG0pLCB1Z2VuKG0pIHt9CisgIHN0ZDo6cGFpcjxULCBVPiBvcGVyYXRvcigp
KGludCBpKSBjb25zdCB7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHRnZW4oaSksIHVnZW4o
aSkpOworICB9Cit9OworCisvLyBHZW5lcmF0ZSBuIHZhbHVlcyBmb3Igb3VyIHRlc3RzIGFuZCBi
ZW5jaG1hcmtzLiBWYWx1ZSByYW5nZSBpcyBbMCwgbWF4dmFsXS4KK2lubGluZSBzdGQ6OnZlY3Rv
cjxpbnQ+IEdlbmVyYXRlTnVtYmVyc1dpdGhTZWVkKGludCBuLCBpbnQgbWF4dmFsLCBpbnQgc2Vl
ZCkgeworICAvLyBOT1RFOiBTb21lIHRlc3RzIHJlbHkgb24gZ2VuZXJhdGVkIG51bWJlcnMgbm90
IGNoYW5naW5nIGJldHdlZW4gdGVzdCBydW5zLgorICAvLyBXZSB1c2Ugc3RkOjptaW5zdGRfcmFu
ZDAgYmVjYXVzZSBpdCBpcyB3ZWxsLWRlZmluZWQsIGJ1dCBkb24ndCB1c2UKKyAgLy8gc3RkOjp1
bmlmb3JtX2ludF9kaXN0cmlidXRpb24gYmVjYXVzZSBwbGF0Zm9ybXMgdXNlIGRpZmZlcmVudCBh
bGdvcml0aG1zLgorICBzdGQ6Om1pbnN0ZF9yYW5kMCBybmcoc2VlZCk7CisKKyAgc3RkOjp2ZWN0
b3I8aW50PiB2YWx1ZXM7CisgIGFic2w6OmZsYXRfaGFzaF9zZXQ8aW50PiB1bmlxdWVfdmFsdWVz
OworICBpZiAodmFsdWVzLnNpemUoKSA8IG4pIHsKKyAgICBmb3IgKGludCBpID0gdmFsdWVzLnNp
emUoKTsgaSA8IG47IGkrKykgeworICAgICAgaW50IHZhbHVlOworICAgICAgZG8geworICAgICAg
ICB2YWx1ZSA9IHN0YXRpY19jYXN0PGludD4ocm5nKCkpICUgKG1heHZhbCArIDEpOworICAgICAg
fSB3aGlsZSAoIXVuaXF1ZV92YWx1ZXMuaW5zZXJ0KHZhbHVlKS5zZWNvbmQpOworCisgICAgICB2
YWx1ZXMucHVzaF9iYWNrKHZhbHVlKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHZhbHVlczsKK30K
KworLy8gR2VuZXJhdGVzIG4gdmFsdWVzIGluIHRoZSByYW5nZSBbMCwgbWF4dmFsXS4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBWPgorc3RkOjp2ZWN0b3I8Vj4gR2VuZXJhdGVWYWx1ZXNXaXRoU2VlZChp
bnQgbiwgaW50IG1heHZhbCwgaW50IHNlZWQpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiBu
dW1zID0gR2VuZXJhdGVOdW1iZXJzV2l0aFNlZWQobiwgbWF4dmFsLCBzZWVkKTsKKyAgR2VuZXJh
dG9yPFY+IGdlbihtYXh2YWwpOworICBzdGQ6OnZlY3RvcjxWPiB2ZWM7CisKKyAgdmVjLnJlc2Vy
dmUobik7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmVjLnB1c2hfYmFj
ayhnZW4obnVtc1tpXSkpOworICB9CisKKyAgcmV0dXJuIHZlYzsKK30KKworfSAgLy8gbmFtZXNw
YWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAv
LyBBQlNMX0NPTlRBSU5FUl9CVFJFRV9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvZml4ZWRfYXJyYXkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheS5oCmluZGV4IDZk
OWZhNWY3NDVkY2M5NTYzYzdhNzA5MTYwZGIxODM3Y2ZmYmMyZDcuLjYwZGEwNDg4YjE2YzIxNzM4
MzFlMzkzOGRhMDc4MmExN2JlODUzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhl
ZF9hcnJheS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheS5oCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xODgsNyArMTg4LDcgQEAgY2xhc3Mg
Rml4ZWRBcnJheSB7CiAgIC8vIGBGaXhlZEFycmF5PFQ+YC4gVGhpcyBpcyBlcXVpdmFsZW50IHRv
IHRoZSBtb3N0IHBvc3NpYmxlIGFkZHJlc3NhYmxlIGJ5dGVzCiAgIC8vIG92ZXIgdGhlIG51bWJl
ciBvZiBieXRlcyB0YWtlbiBieSBULgogICBjb25zdGV4cHIgc2l6ZV90eXBlIG1heF9zaXplKCkg
Y29uc3QgewotICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRpZmZlcmVuY2VfdHlwZT46
Om1heCgpIC8gc2l6ZW9mKHZhbHVlX3R5cGUpOworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xp
bWl0czxkaWZmZXJlbmNlX3R5cGU+OjptYXgpKCkgLyBzaXplb2YodmFsdWVfdHlwZSk7CiAgIH0K
IAogICAvLyBGaXhlZEFycmF5OjplbXB0eSgpCkBAIC01MTUsNCArNTE1LDUgQEAgdm9pZCBGaXhl
ZEFycmF5PFQsIE4sIEE+OjpOb25FbXB0eUlubGluZWRTdG9yYWdlOjpBbm5vdGF0ZURlc3RydWN0
KAogICBzdGF0aWNfY2FzdDx2b2lkPihuKTsgIC8vIE1hcmsgdXNlZCB3aGVuIG5vdCBpbiBhc2Fu
IG1vZGUKIH0KIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9DT05UQUlO
RVJfRklYRURfQVJSQVlfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJh
eV9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfYmVuY2htYXJrLmNj
CmluZGV4IGI0ZjBjZjJhZWIwNGYwMzQwOWI5NWJkY2I1M2FmNWZlY2Q1NzhkOGYuLjNjN2E1YTcy
MzQ1MGU3ZjFlMDg1Y2VhYTkxZmRiOTYwZTc0MzM2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9maXhlZF9hcnJheV9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVk
X2FycmF5X2JlbmNobWFyay5jYwpAQCAtMSwxMCArMSwxMCBAQAotLy8gQ29weXJpZ2h0IDIwMTcg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3Jz
LgogLy8KIC8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOwogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMiwxMiArMTIs
MTIgQEAKIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgog
Ci0jaW5jbHVkZSAiYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXkuaCIKLQogI2luY2x1ZGUgPHN0
ZGRlZi5oPgorCiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYmVuY2htYXJrL2JlbmNo
bWFyay5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5LmgiCiAKIG5hbWVz
cGFjZSB7CiAKQEAgLTI1LDggKzI1LDkgQEAgbmFtZXNwYWNlIHsKIC8vIHNldCBhbiBpbnQgdG8g
YSBjb25zdGFudC4uCiBjbGFzcyBTaW1wbGVDbGFzcyB7CiAgcHVibGljOgotICBTaW1wbGVDbGFz
cygpIDogaSgzKSB7IH0KKyAgU2ltcGxlQ2xhc3MoKSA6IGkoMykge30KICAgflNpbXBsZUNsYXNz
KCkgeyBpID0gMDsgfQorCiAgcHJpdmF0ZToKICAgaW50IGk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9maXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKaW5kZXggZGE2
M2RiZmUzOGU3MWQzNGEzM2U4MDBkZmU0MmFhOWYzZWEzMTdmYS4uOTk4NGE1ZTJhZTQxMTczZTU4
YzY1MmM1MjE3OWNlZTIwOTI2MDhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVk
X2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4
ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCkBAIC0xLDEwICsxLDEwIEBACi0vLyBD
b3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLyBDb3B5cmlnaHQgMjAxOSBUaGUg
QWJzZWlsIEF1dGhvcnMuCiAvLwogLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTE0LDEwICsxNCw5IEBACiAKICNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgogCi0jaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXkuaCIKLQogI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVz
dGluZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5LmgiCiAKIG5hbWVz
cGFjZSBhYnNsIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfdGVzdC5jYwppbmRleCAyMDVmZjQx
ZmUxMTQyYmJlOGUxODdhNDRmMTdhNWE1YTczYjVjNTQ4Li4yYjFjZjQ3ZWFjYjhhZGU5NjM5YmE2
MWJlNTFlNjQ1ZmYzYjEwODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJy
YXlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfdGVzdC5jYwpAQCAt
MSwxMCArMSwxMCBAQAotLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8g
Q29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgogLy8KIC8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvZml4ZWRfYXJyYXkuaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CisKICNpbmNsdWRlIDxj
c3RyaW5nPgogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtNDIsMTEgKzQz
LDcgQEAgc3RhdGljIGJvb2wgSXNPblN0YWNrKGNvbnN0IEFycmF5VHlwZSYgYSkgewogCiBjbGFz
cyBDb25zdHJ1Y3Rpb25UZXN0ZXIgewogIHB1YmxpYzoKLSAgQ29uc3RydWN0aW9uVGVzdGVyKCkK
LSAgICAgIDogc2VsZl9wdHJfKHRoaXMpLAotICAgICAgICB2YWx1ZV8oMCkgewotICAgIGNvbnN0
cnVjdGlvbnMrKzsKLSAgfQorICBDb25zdHJ1Y3Rpb25UZXN0ZXIoKSA6IHNlbGZfcHRyXyh0aGlz
KSwgdmFsdWVfKDApIHsgY29uc3RydWN0aW9ucysrOyB9CiAgIH5Db25zdHJ1Y3Rpb25UZXN0ZXIo
KSB7CiAgICAgYXNzZXJ0KHNlbGZfcHRyXyA9PSB0aGlzKTsKICAgICBzZWxmX3B0cl8gPSBudWxs
cHRyOwpAQCAtNTgsOSArNTUsNyBAQCBjbGFzcyBDb25zdHJ1Y3Rpb25UZXN0ZXIgewogICBzdGF0
aWMgaW50IGNvbnN0cnVjdGlvbnM7CiAgIHN0YXRpYyBpbnQgZGVzdHJ1Y3Rpb25zOwogCi0gIHZv
aWQgQ2hlY2tDb25zdHJ1Y3RlZCgpIHsKLSAgICBhc3NlcnQoc2VsZl9wdHJfID09IHRoaXMpOwot
ICB9CisgIHZvaWQgQ2hlY2tDb25zdHJ1Y3RlZCgpIHsgYXNzZXJ0KHNlbGZfcHRyXyA9PSB0aGlz
KTsgfQogCiAgIHZvaWQgc2V0KGludCB2YWx1ZSkgeyB2YWx1ZV8gPSB2YWx1ZTsgfQogICBpbnQg
Z2V0KCkgeyByZXR1cm4gdmFsdWVfOyB9CkBAIC0xNTAsNyArMTQ1LDcgQEAgVEVTVChGaXhlZEFy
cmF5VGVzdCwgU21hbGxPYmplY3RzKSB7CiAgIH0KIAogICB7Ci0gICAgLy8gQXJyYXlzIG9mID4g
ZGVmYXVsdCBzaXplIHNob3VsZCBiZSBvbiB0aGUgc3RhY2sKKyAgICAvLyBBcnJheXMgb2YgPiBk
ZWZhdWx0IHNpemUgc2hvdWxkIGJlIG9uIHRoZSBoZWFwCiAgICAgYWJzbDo6Rml4ZWRBcnJheTxp
bnQsIDEwMD4gYXJyYXkoMTAxKTsKICAgICBFWFBFQ1RfRkFMU0UoSXNPblN0YWNrKGFycmF5KSk7
CiAgIH0KQEAgLTE2MCwxMyArMTU1LDEzIEBAIFRFU1QoRml4ZWRBcnJheVRlc3QsIFNtYWxsT2Jq
ZWN0cykgewogICAgIC8vIHNhbWUgYW1vdW50IG9mIHN0YWNrIHNwYWNlCiAgICAgYWJzbDo6Rml4
ZWRBcnJheTxpbnQ+IGFycmF5MSgwKTsKICAgICBhYnNsOjpGaXhlZEFycmF5PGNoYXI+IGFycmF5
MigwKTsKLSAgICBFWFBFQ1RfTEUoc2l6ZW9mKGFycmF5MSksIHNpemVvZihhcnJheTIpKzEwMCk7
Ci0gICAgRVhQRUNUX0xFKHNpemVvZihhcnJheTIpLCBzaXplb2YoYXJyYXkxKSsxMDApOworICAg
IEVYUEVDVF9MRShzaXplb2YoYXJyYXkxKSwgc2l6ZW9mKGFycmF5MikgKyAxMDApOworICAgIEVY
UEVDVF9MRShzaXplb2YoYXJyYXkyKSwgc2l6ZW9mKGFycmF5MSkgKyAxMDApOwogICB9CiAKICAg
ewogICAgIC8vIEVuc3VyZSB0aGF0IHZlY3RvcnMgYXJlIHByb3Blcmx5IGNvbnN0cnVjdGVkIGlu
c2lkZSBhIGZpeGVkIGFycmF5LgotICAgIGFic2w6OkZpeGVkQXJyYXk8c3RkOjp2ZWN0b3I8aW50
PiA+IGFycmF5KDIpOworICAgIGFic2w6OkZpeGVkQXJyYXk8c3RkOjp2ZWN0b3I8aW50Pj4gYXJy
YXkoMik7CiAgICAgRVhQRUNUX0VRKDAsIGFycmF5WzBdLnNpemUoKSk7CiAgICAgRVhQRUNUX0VR
KDAsIGFycmF5WzFdLnNpemUoKSk7CiAgIH0KQEAgLTI3MCw4ICsyNjUsOCBAQCBzdGF0aWMgdm9p
ZCBUZXN0QXJyYXkoaW50IG4pIHsKICAgICAgIGFycmF5LmRhdGEoKVtpXS5zZXQoaSArIDEpOwog
ICAgIH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgRVhQRUNUX1RI
QVQoYXJyYXlbaV0uZ2V0KCksIGkrMSk7Ci0gICAgICBFWFBFQ1RfVEhBVChhcnJheS5kYXRhKClb
aV0uZ2V0KCksIGkrMSk7CisgICAgICBFWFBFQ1RfVEhBVChhcnJheVtpXS5nZXQoKSwgaSArIDEp
OworICAgICAgRVhQRUNUX1RIQVQoYXJyYXkuZGF0YSgpW2ldLmdldCgpLCBpICsgMSk7CiAgICAg
fQogICB9ICAvLyBDbG9zZSBzY29wZSBjb250YWluaW5nICdhcnJheScuCiAKQEAgLTI5Niw3ICsy
OTEsNyBAQCBzdGF0aWMgdm9pZCBUZXN0QXJyYXlPZkFycmF5cyhpbnQgbikgewogCiAgICAgQVNT
RVJUX0VRKGFycmF5LnNpemUoKSwgbik7CiAgICAgQVNTRVJUX0VRKGFycmF5Lm1lbXNpemUoKSwK
LSAgICAgICAgICAgICBzaXplb2YoQ29uc3RydWN0aW9uVGVzdGVyKSAqIGVsZW1lbnRzX3Blcl9p
bm5lcl9hcnJheSAqIG4pOworICAgICAgICAgICAgICBzaXplb2YoQ29uc3RydWN0aW9uVGVzdGVy
KSAqIGVsZW1lbnRzX3Blcl9pbm5lcl9hcnJheSAqIG4pOwogICAgIEFTU0VSVF9FUShhcnJheS5i
ZWdpbigpICsgbiwgYXJyYXkuZW5kKCkpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBhbGwgZWxlbWVu
dHMgd2VyZSBjb25zdHJ1Y3RlZApAQCAtMzE2LDcgKzMxMSw3IEBAIHN0YXRpYyB2b2lkIFRlc3RB
cnJheU9mQXJyYXlzKGludCBuKSB7CiAgICAgfQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg
aSsrKSB7CiAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGVsZW1lbnRzX3Blcl9pbm5lcl9hcnJh
eTsgaisrKSB7Ci0gICAgICAgIEFTU0VSVF9FUSgoYXJyYXlbaV0pW2pdLmdldCgpLCAgaSAqIGVs
ZW1lbnRzX3Blcl9pbm5lcl9hcnJheSArIGopOworICAgICAgICBBU1NFUlRfRVEoKGFycmF5W2ld
KVtqXS5nZXQoKSwgaSAqIGVsZW1lbnRzX3Blcl9pbm5lcl9hcnJheSArIGopOwogICAgICAgICBB
U1NFUlRfRVEoKGFycmF5LmRhdGEoKVtpXSlbal0uZ2V0KCksIGkgKiBlbGVtZW50c19wZXJfaW5u
ZXJfYXJyYXkgKyBqKTsKICAgICAgIH0KICAgICB9CkBAIC0zMjksOCArMzI0LDcgQEAgc3RhdGlj
IHZvaWQgVGVzdEFycmF5T2ZBcnJheXMoaW50IG4pIHsKICAgICB9CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBuOyBpKyspIHsKICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZWxlbWVudHNfcGVy
X2lubmVyX2FycmF5OyBqKyspIHsKLSAgICAgICAgQVNTRVJUX0VRKChhcnJheVtpXSlbal0uZ2V0
KCksCi0gICAgICAgICAgICAgICAgICAoaSArIDEpICogZWxlbWVudHNfcGVyX2lubmVyX2FycmF5
ICsgaik7CisgICAgICAgIEFTU0VSVF9FUSgoYXJyYXlbaV0pW2pdLmdldCgpLCAoaSArIDEpICog
ZWxlbWVudHNfcGVyX2lubmVyX2FycmF5ICsgaik7CiAgICAgICAgIEFTU0VSVF9FUSgoYXJyYXku
ZGF0YSgpW2ldKVtqXS5nZXQoKSwKICAgICAgICAgICAgICAgICAgIChpICsgMSkgKiBlbGVtZW50
c19wZXJfaW5uZXJfYXJyYXkgKyBqKTsKICAgICAgIH0KQEAgLTM0Myw3ICszMzcsNyBAQCBzdGF0
aWMgdm9pZCBUZXN0QXJyYXlPZkFycmF5cyhpbnQgbikgewogfQogCiBURVNUKEl0ZXJhdG9yQ29u
c3RydWN0b3JUZXN0LCBOb25JbmxpbmUpIHsKLSAgaW50IGNvbnN0IGtJbnB1dFtdID0geyAyLCAz
LCA1LCA3LCAxMSwgMTMsIDE3IH07CisgIGludCBjb25zdCBrSW5wdXRbXSA9IHsyLCAzLCA1LCA3
LCAxMSwgMTMsIDE3fTsKICAgYWJzbDo6Rml4ZWRBcnJheTxpbnQsIEFCU0xfQVJSQVlTSVpFKGtJ
bnB1dCkgLSAxPiBjb25zdCBmaXhlZCgKICAgICAgIGtJbnB1dCwga0lucHV0ICsgQUJTTF9BUlJB
WVNJWkUoa0lucHV0KSk7CiAgIEFTU0VSVF9FUShBQlNMX0FSUkFZU0laRShrSW5wdXQpLCBmaXhl
ZC5zaXplKCkpOwpAQCAtMzUzLDcgKzM0Nyw3IEBAIFRFU1QoSXRlcmF0b3JDb25zdHJ1Y3RvclRl
c3QsIE5vbklubGluZSkgewogfQogCiBURVNUKEl0ZXJhdG9yQ29uc3RydWN0b3JUZXN0LCBJbmxp
bmUpIHsKLSAgaW50IGNvbnN0IGtJbnB1dFtdID0geyAyLCAzLCA1LCA3LCAxMSwgMTMsIDE3IH07
CisgIGludCBjb25zdCBrSW5wdXRbXSA9IHsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3fTsKICAgYWJz
bDo6Rml4ZWRBcnJheTxpbnQsIEFCU0xfQVJSQVlTSVpFKGtJbnB1dCk+IGNvbnN0IGZpeGVkKAog
ICAgICAga0lucHV0LCBrSW5wdXQgKyBBQlNMX0FSUkFZU0laRShrSW5wdXQpKTsKICAgQVNTRVJU
X0VRKEFCU0xfQVJSQVlTSVpFKGtJbnB1dCksIGZpeGVkLnNpemUoKSk7CkBAIC0zNjMsOSArMzU3
LDEwIEBAIFRFU1QoSXRlcmF0b3JDb25zdHJ1Y3RvclRlc3QsIElubGluZSkgewogfQogCiBURVNU
KEl0ZXJhdG9yQ29uc3RydWN0b3JUZXN0LCBOb25Qb2QpIHsKLSAgY2hhciBjb25zdCoga0lucHV0
W10gPQotICAgICAgeyAicmVkIiwgIm9yYW5nZSIsICJ5ZWxsb3ciLCAiZ3JlZW4iLCAiYmx1ZSIs
ICJpbmRpZ28iLCAidmlvbGV0IiB9OwotICBhYnNsOjpGaXhlZEFycmF5PHN0ZDo6c3RyaW5nPiBj
b25zdCBmaXhlZChrSW5wdXQsIGtJbnB1dCArIEFCU0xfQVJSQVlTSVpFKGtJbnB1dCkpOworICBj
aGFyIGNvbnN0KiBrSW5wdXRbXSA9IHsicmVkIiwgICJvcmFuZ2UiLCAieWVsbG93IiwgImdyZWVu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImJsdWUiLCAiaW5kaWdvIiwgInZpb2xldCJ9
OworICBhYnNsOjpGaXhlZEFycmF5PHN0ZDo6c3RyaW5nPiBjb25zdCBmaXhlZChrSW5wdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtJbnB1dCArIEFCU0xf
QVJSQVlTSVpFKGtJbnB1dCkpOwogICBBU1NFUlRfRVEoQUJTTF9BUlJBWVNJWkUoa0lucHV0KSwg
Zml4ZWQuc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBQlNMX0FSUkFZU0laRShr
SW5wdXQpOyArK2kpIHsKICAgICBBU1NFUlRfRVEoa0lucHV0W2ldLCBmaXhlZFtpXSk7CkBAIC0z
ODAsNyArMzc1LDcgQEAgVEVTVChJdGVyYXRvckNvbnN0cnVjdG9yVGVzdCwgRnJvbUVtcHR5VmVj
dG9yKSB7CiB9CiAKIFRFU1QoSXRlcmF0b3JDb25zdHJ1Y3RvclRlc3QsIEZyb21Ob25FbXB0eVZl
Y3RvcikgewotICBpbnQgY29uc3Qga0lucHV0W10gPSB7IDIsIDMsIDUsIDcsIDExLCAxMywgMTcg
fTsKKyAgaW50IGNvbnN0IGtJbnB1dFtdID0gezIsIDMsIDUsIDcsIDExLCAxMywgMTd9OwogICBz
dGQ6OnZlY3RvcjxpbnQ+IGNvbnN0IGl0ZW1zKGtJbnB1dCwga0lucHV0ICsgQUJTTF9BUlJBWVNJ
WkUoa0lucHV0KSk7CiAgIGFic2w6OkZpeGVkQXJyYXk8aW50PiBjb25zdCBmaXhlZChpdGVtcy5i
ZWdpbigpLCBpdGVtcy5lbmQoKSk7CiAgIEFTU0VSVF9FUShpdGVtcy5zaXplKCksIGZpeGVkLnNp
emUoKSk7CkBAIC0zOTAsNyArMzg1LDcgQEAgVEVTVChJdGVyYXRvckNvbnN0cnVjdG9yVGVzdCwg
RnJvbU5vbkVtcHR5VmVjdG9yKSB7CiB9CiAKIFRFU1QoSXRlcmF0b3JDb25zdHJ1Y3RvclRlc3Qs
IEZyb21CaWRpcmVjdGlvbmFsSXRlcmF0b3JSYW5nZSkgewotICBpbnQgY29uc3Qga0lucHV0W10g
PSB7IDIsIDMsIDUsIDcsIDExLCAxMywgMTcgfTsKKyAgaW50IGNvbnN0IGtJbnB1dFtdID0gezIs
IDMsIDUsIDcsIDExLCAxMywgMTd9OwogICBzdGQ6Omxpc3Q8aW50PiBjb25zdCBpdGVtcyhrSW5w
dXQsIGtJbnB1dCArIEFCU0xfQVJSQVlTSVpFKGtJbnB1dCkpOwogICBhYnNsOjpGaXhlZEFycmF5
PGludD4gY29uc3QgZml4ZWQoaXRlbXMuYmVnaW4oKSwgaXRlbXMuZW5kKCkpOwogICBFWFBFQ1Rf
VEhBVChmaXhlZCwgdGVzdGluZzo6RWxlbWVudHNBcmVBcnJheShrSW5wdXQpKTsKQEAgLTUwNyw5
ICs1MDIsOCBAQCBzdHJ1Y3QgUGlja3lEZWxldGUgewogCiBURVNUKEZpeGVkQXJyYXlUZXN0LCBV
c2VzR2xvYmFsQWxsb2MpIHsgYWJzbDo6Rml4ZWRBcnJheTxQaWNreURlbGV0ZSwgMD4gYSg1KTsg
fQogCi0KIFRFU1QoRml4ZWRBcnJheVRlc3QsIERhdGEpIHsKLSAgc3RhdGljIGNvbnN0IGludCBr
SW5wdXRbXSA9IHsgMiwgMywgNSwgNywgMTEsIDEzLCAxNyB9OworICBzdGF0aWMgY29uc3QgaW50
IGtJbnB1dFtdID0gezIsIDMsIDUsIDcsIDExLCAxMywgMTd9OwogICBhYnNsOjpGaXhlZEFycmF5
PGludD4gZmEoc3RkOjpiZWdpbihrSW5wdXQpLCBzdGQ6OmVuZChrSW5wdXQpKTsKICAgRVhQRUNU
X0VRKGZhLmRhdGEoKSwgJipmYS5iZWdpbigpKTsKICAgRVhQRUNUX0VRKGZhLmRhdGEoKSwgJmZh
WzBdKTsKQEAgLTgyMyw3ICs4MTcsNyBAQCBURVNUKEFsbG9jYXRvclN1cHBvcnRUZXN0LCBTaXpl
VmFsQWxsb2NDb25zdHJ1Y3RvcikgewogI2lmZGVmIEFERFJFU1NfU0FOSVRJWkVSCiBURVNUKEZp
eGVkQXJyYXlUZXN0LCBBZGRyZXNzU2FuaXRpemVyQW5ub3RhdGlvbnMxKSB7CiAgIGFic2w6OkZp
eGVkQXJyYXk8aW50LCAzMj4gYSgxMCk7Ci0gIGludCAqcmF3ID0gYS5kYXRhKCk7CisgIGludCog
cmF3ID0gYS5kYXRhKCk7CiAgIHJhd1swXSA9IDA7CiAgIHJhd1s5XSA9IDA7CiAgIEVYUEVDVF9E
RUFUSChyYXdbLTJdID0gMCwgImNvbnRhaW5lci1vdmVyZmxvdyIpOwpAQCAtODM0LDcgKzgyOCw3
IEBAIFRFU1QoRml4ZWRBcnJheVRlc3QsIEFkZHJlc3NTYW5pdGl6ZXJBbm5vdGF0aW9uczEpIHsK
IAogVEVTVChGaXhlZEFycmF5VGVzdCwgQWRkcmVzc1Nhbml0aXplckFubm90YXRpb25zMikgewog
ICBhYnNsOjpGaXhlZEFycmF5PGNoYXIsIDE3PiBhKDEyKTsKLSAgY2hhciAqcmF3ID0gYS5kYXRh
KCk7CisgIGNoYXIqIHJhdyA9IGEuZGF0YSgpOwogICByYXdbMF0gPSAwOwogICByYXdbMTFdID0g
MDsKICAgRVhQRUNUX0RFQVRIKHJhd1stN10gPSAwLCAiY29udGFpbmVyLW92ZXJmbG93Iik7CkBA
IC04NDUsNyArODM5LDcgQEAgVEVTVChGaXhlZEFycmF5VGVzdCwgQWRkcmVzc1Nhbml0aXplckFu
bm90YXRpb25zMikgewogCiBURVNUKEZpeGVkQXJyYXlUZXN0LCBBZGRyZXNzU2FuaXRpemVyQW5u
b3RhdGlvbnMzKSB7CiAgIGFic2w6OkZpeGVkQXJyYXk8dWludDY0X3QsIDIwPiBhKDIwKTsKLSAg
dWludDY0X3QgKnJhdyA9IGEuZGF0YSgpOworICB1aW50NjRfdCogcmF3ID0gYS5kYXRhKCk7CiAg
IHJhd1swXSA9IDA7CiAgIHJhd1sxOV0gPSAwOwogICBFWFBFQ1RfREVBVEgocmF3Wy0xXSA9IDAs
ICJjb250YWluZXItb3ZlcmZsb3ciKTsKQEAgLTg1NCw3ICs4NDgsNyBAQCBURVNUKEZpeGVkQXJy
YXlUZXN0LCBBZGRyZXNzU2FuaXRpemVyQW5ub3RhdGlvbnMzKSB7CiAKIFRFU1QoRml4ZWRBcnJh
eVRlc3QsIEFkZHJlc3NTYW5pdGl6ZXJBbm5vdGF0aW9uczQpIHsKICAgYWJzbDo6Rml4ZWRBcnJh
eTxUaHJlZUludHM+IGEoMTApOwotICBUaHJlZUludHMgKnJhdyA9IGEuZGF0YSgpOworICBUaHJl
ZUludHMqIHJhdyA9IGEuZGF0YSgpOwogICByYXdbMF0gPSBUaHJlZUludHMoKTsKICAgcmF3Wzld
ID0gVGhyZWVJbnRzKCk7CiAgIC8vIE5vdGU6IHJhd1stMV0gaXMgcG9pbnRpbmcgdG8gMTIgYnl0
ZXMgYmVmb3JlIHRoZSBjb250YWluZXIgcmFuZ2UuIEhvd2V2ZXIsCkBAIC04NjksNCArODYzLDIx
IEBAIFRFU1QoRml4ZWRBcnJheVRlc3QsIEFkZHJlc3NTYW5pdGl6ZXJBbm5vdGF0aW9uczQpIHsK
IH0KICNlbmRpZiAgLy8gQUREUkVTU19TQU5JVElaRVIKIAorVEVTVChGaXhlZEFycmF5VGVzdCwg
QWJzbEhhc2hWYWx1ZVdvcmtzKSB7CisgIHVzaW5nIFYgPSBhYnNsOjpGaXhlZEFycmF5PGludD47
CisgIHN0ZDo6dmVjdG9yPFY+IGNhc2VzOworCisgIC8vIEdlbmVyYXRlIGEgdmFyaWV0eSBvZiB2
ZWN0b3JzIHNvbWUgb2YgdGhlc2UgYXJlIHNtYWxsIGVub3VnaCBmb3IgdGhlIGlubGluZQorICAv
LyBzcGFjZSBidXQgYXJlIHN0b3JlZCBvdXQgb2YgbGluZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCAxMDsgKytpKSB7CisgICAgViB2KGkpOworICAgIGZvciAoaW50IGogPSAwOyBqIDwgaTsgKytq
KSB7CisgICAgICB2W2pdID0gajsKKyAgICB9CisgICAgY2FzZXMucHVzaF9iYWNrKHYpOworICB9
CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJl
Y3RseShjYXNlcykpOworfQorCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9mbGF0X2hhc2hfbWFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcC5o
CmluZGV4IGU1NTcwZDEwMDQ0MTMxNjZhYmRkZGI2YzU0NmJiNTdjYWJkNGJmMDQuLjBiYzUwMWIx
MTQzYTg1OTVkNjUyY2QyYjgwYzhlNGRiOWJjN2NlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9mbGF0X2hhc2hfbWFwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXAu
aApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNs
dWRlICJhYnNsL2FsZ29yaXRobS9jb250YWluZXIuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9y
dAogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX21hcC5oIiAgLy8g
SVdZVSBwcmFnbWE6IGV4cG9ydApAQCAtNjksMTQgKzcwLDE0IEBAIHN0cnVjdCBGbGF0SGFzaE1h
cFBvbGljeTsKIC8vIEJ5IGRlZmF1bHQsIGBmbGF0X2hhc2hfbWFwYCB1c2VzIHRoZSBgYWJzbDo6
SGFzaGAgaGFzaGluZyBmcmFtZXdvcmsuCiAvLyBBbGwgZnVuZGFtZW50YWwgYW5kIEFic2VpbCB0
eXBlcyB0aGF0IHN1cHBvcnQgdGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdvcmsgaGF2ZQogLy8gYSBj
b21wYXRpYmxlIGVxdWFsaXR5IG9wZXJhdG9yIGZvciBjb21wYXJpbmcgaW5zZXJ0aW9ucyBpbnRv
IGBmbGF0X2hhc2hfbWFwYC4KLS8vIElmIHlvdXIgdHlwZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBi
eSB0aGUgYGFzYmw6Okhhc2hgIGZyYW1ld29yaywgc2VlCisvLyBJZiB5b3VyIHR5cGUgaXMgbm90
IHlldCBzdXBwb3J0ZWQgYnkgdGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQogLy8gYWJz
bC9oYXNoL2hhc2guaCBmb3IgaW5mb3JtYXRpb24gb24gZXh0ZW5kaW5nIEFic2VpbCBoYXNoaW5n
IHRvIHVzZXItZGVmaW5lZAogLy8gdHlwZXMuCiAvLwogLy8gTk9URTogQSBgZmxhdF9oYXNoX21h
cGAgc3RvcmVzIGl0cyB2YWx1ZSB0eXBlcyBkaXJlY3RseSBpbnNpZGUgaXRzCiAvLyBpbXBsZW1l
bnRhdGlvbiBhcnJheSB0byBhdm9pZCBtZW1vcnkgaW5kaXJlY3Rpb24uIEJlY2F1c2UgYSBgZmxh
dF9oYXNoX21hcGAKIC8vIGlzIGRlc2lnbmVkIHRvIG1vdmUgZGF0YSB3aGVuIHJlaGFzaGVkLCBt
YXAgdmFsdWVzIHdpbGwgbm90IHJldGFpbiBwb2ludGVyCi0vLyBzdGFiaWxpdHkuIElmIHlvdSBy
ZXF1aXJlIHBvaW50ZXIgc3RhYmlsaXR5LCBvciB5b3VyIHZhbHVlcyBhcmUgbGFyZ2UsCisvLyBz
dGFiaWxpdHkuIElmIHlvdSByZXF1aXJlIHBvaW50ZXIgc3RhYmlsaXR5LCBvciBpZiB5b3VyIHZh
bHVlcyBhcmUgbGFyZ2UsCiAvLyBjb25zaWRlciB1c2luZyBgYWJzbDo6ZmxhdF9oYXNoX21hcDxL
ZXksIHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZT4+YCBpbnN0ZWFkLgogLy8gSWYgeW91ciB0eXBlcyBh
cmUgbm90IG1vdmVhYmxlIG9yIHlvdSByZXF1aXJlIHBvaW50ZXIgc3RhYmlsaXR5IGZvciBrZXlz
LAogLy8gY29uc2lkZXIgYGFic2w6Om5vZGVfaGFzaF9tYXBgLgpAQCAtMTA5LDYgKzExMCw0NiBA
QCBjbGFzcyBmbGF0X2hhc2hfbWFwIDogcHVibGljIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6
cmF3X2hhc2hfbWFwPAogICB1c2luZyBCYXNlID0gdHlwZW5hbWUgZmxhdF9oYXNoX21hcDo6cmF3
X2hhc2hfbWFwOwogCiAgcHVibGljOgorICAvLyBDb25zdHJ1Y3RvcnMgYW5kIEFzc2lnbm1lbnQg
T3BlcmF0b3JzCisgIC8vCisgIC8vIEEgZmxhdF9oYXNoX21hcCBzdXBwb3J0cyB0aGUgc2FtZSBv
dmVybG9hZCBzZXQgYXMgYHN0ZDo6dW5vcmRlcmVkX21hcGAKKyAgLy8gZm9yIGNvbnN0cnVjdGlv
biBhbmQgYXNzaWdubWVudDoKKyAgLy8KKyAgLy8gKiAgRGVmYXVsdCBjb25zdHJ1Y3RvcgorICAv
LworICAvLyAgICAvLyBObyBhbGxvY2F0aW9uIGZvciB0aGUgdGFibGUncyBlbGVtZW50cyBpcyBt
YWRlLgorICAvLyAgICBhYnNsOjpmbGF0X2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDE7
CisgIC8vCisgIC8vICogSW5pdGlhbGl6ZXIgTGlzdCBjb25zdHJ1Y3RvcgorICAvLworICAvLyAg
IGFic2w6OmZsYXRfaGFzaF9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwMiA9CisgIC8vICAgICAg
IHt7MSwgImh1ZXkifSwgezIsICJkZXdleSJ9LCB7MywgImxvdWllIn0sfTsKKyAgLy8KKyAgLy8g
KiBDb3B5IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6ZmxhdF9oYXNoX21hcDxpbnQs
IHN0ZDo6c3RyaW5nPiBtYXAzKG1hcDIpOworICAvLworICAvLyAqIENvcHkgYXNzaWdubWVudCBv
cGVyYXRvcgorICAvLworICAvLyAgLy8gSGFzaCBmdW5jdG9yIGFuZCBDb21wYXJhdG9yIGFyZSBj
b3BpZWQgYXMgd2VsbAorICAvLyAgYWJzbDo6ZmxhdF9oYXNoX21hcDxpbnQsIHN0ZDo6c3RyaW5n
PiBtYXA0OworICAvLyAgbWFwNCA9IG1hcDM7CisgIC8vCisgIC8vICogTW92ZSBjb25zdHJ1Y3Rv
cgorICAvLworICAvLyAgIC8vIE1vdmUgaXMgZ3VhcmFudGVlZCBlZmZpY2llbnQKKyAgLy8gICBh
YnNsOjpmbGF0X2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDUoc3RkOjptb3ZlKG1hcDQp
KTsKKyAgLy8KKyAgLy8gKiBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgLy8KKyAgLy8gICAv
LyBNYXkgYmUgZWZmaWNpZW50IGlmIGFsbG9jYXRvcnMgYXJlIGNvbXBhdGlibGUKKyAgLy8gICBh
YnNsOjpmbGF0X2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDY7CisgIC8vICAgbWFwNiA9
IHN0ZDo6bW92ZShtYXA1KTsKKyAgLy8KKyAgLy8gKiBSYW5nZSBjb25zdHJ1Y3RvcgorICAvLwor
ICAvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxpbnQsIHN0ZDo6c3RyaW5nPj4gdiA9IHt7MSwg
ImEifSwgezIsICJiIn19OworICAvLyAgIGFic2w6OmZsYXRfaGFzaF9tYXA8aW50LCBzdGQ6OnN0
cmluZz4gbWFwNyh2LmJlZ2luKCksIHYuZW5kKCkpOwogICBmbGF0X2hhc2hfbWFwKCkge30KICAg
dXNpbmcgQmFzZTo6QmFzZTsKIApAQCAtMTc4LDggKzIxOSwxMiBAQCBjbGFzcyBmbGF0X2hhc2hf
bWFwIDogcHVibGljIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6cmF3X2hhc2hfbWFwPAogICAv
LyAgIEVyYXNlcyB0aGUgZWxlbWVudCBhdCBgcG9zaXRpb25gIG9mIHRoZSBgZmxhdF9oYXNoX21h
cGAsIHJldHVybmluZwogICAvLyAgIGB2b2lkYC4KICAgLy8KLSAgLy8gICBOT1RFOiB0aGlzIHJl
dHVybiBiZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIFNUTCBjb250YWluZXJzIGlu
Ci0gIC8vICAgZ2VuZXJhbCBhbmQgYHN0ZDo6dW5vcmRlcmVkX21hcGAgaW4gcGFydGljdWxhci4K
KyAgLy8gICBOT1RFOiByZXR1cm5pbmcgYHZvaWRgIGluIHRoaXMgY2FzZSBpcyBkaWZmZXJlbnQg
dGhhbiB0aGF0IG9mIFNUTAorICAvLyAgIGNvbnRhaW5lcnMgaW4gZ2VuZXJhbCBhbmQgYHN0ZDo6
dW5vcmRlcmVkX21hcGAgaW4gcGFydGljdWxhciAod2hpY2gKKyAgLy8gICByZXR1cm4gYW4gaXRl
cmF0b3IgdG8gdGhlIGVsZW1lbnQgZm9sbG93aW5nIHRoZSBlcmFzZWQgZWxlbWVudCkuIElmIHRo
YXQKKyAgLy8gICBpdGVyYXRvciBpcyBuZWVkZWQsIHNpbXBseSBwb3N0IGluY3JlbWVudCB0aGUg
aXRlcmF0b3I6CisgIC8vCisgIC8vICAgICBtYXAuZXJhc2UoaXQrKyk7CiAgIC8vCiAgIC8vIGl0
ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KToK
ICAgLy8KQEAgLTQ4NiwyNSArNTMxLDI2IEBAIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwg
ewogCiB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4KIHN0cnVjdCBGbGF0SGFzaE1hcFBvbGlj
eSB7Ci0gIHVzaW5nIHNsb3RfdHlwZSA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6c2xvdF90eXBlPEss
IFY+OworICB1c2luZyBzbG90X3BvbGljeSA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6bWFwX3Nsb3Rf
cG9saWN5PEssIFY+OworICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBzbG90X3BvbGljeTo6
c2xvdF90eXBlOwogICB1c2luZyBrZXlfdHlwZSA9IEs7CiAgIHVzaW5nIG1hcHBlZF90eXBlID0g
VjsKICAgdXNpbmcgaW5pdF90eXBlID0gc3RkOjpwYWlyPC8qbm9uIGNvbnN0Ki8ga2V5X3R5cGUs
IG1hcHBlZF90eXBlPjsKIAogICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yLCBjbGFzcy4uLiBB
cmdzPgogICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBl
KiBzbG90LCBBcmdzJiYuLi4gYXJncykgewotICAgIHNsb3RfdHlwZTo6Y29uc3RydWN0KGFsbG9j
LCBzbG90LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHNsb3RfcG9saWN5Ojpj
b25zdHJ1Y3QoYWxsb2MsIHNsb3QsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgIH0K
IAogICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgogICBzdGF0aWMgdm9pZCBkZXN0cm95KEFs
bG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgewotICAgIHNsb3RfdHlwZTo6ZGVzdHJv
eShhbGxvYywgc2xvdCk7CisgICAgc2xvdF9wb2xpY3k6OmRlc3Ryb3koYWxsb2MsIHNsb3QpOwog
ICB9CiAKICAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KICAgc3RhdGljIHZvaWQgdHJhbnNm
ZXIoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgewotICAgIHNsb3RfdHlwZTo6dHJhbnNmZXIo
YWxsb2MsIG5ld19zbG90LCBvbGRfc2xvdCk7CisgICAgc2xvdF9wb2xpY3k6OnRyYW5zZmVyKGFs
bG9jLCBuZXdfc2xvdCwgb2xkX3Nsb3QpOwogICB9CiAKICAgdGVtcGxhdGUgPGNsYXNzIEYsIGNs
YXNzLi4uIEFyZ3M+CkBAIC01MjQsNSArNTcwLDE2IEBAIHN0cnVjdCBGbGF0SGFzaE1hcFBvbGlj
eSB7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCisKK25hbWVzcGFj
ZSBjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsIHsKKworLy8gU3BlY2lhbGl6YXRpb24gb2Yg
dHJhaXQgaW4gYWJzbC9hbGdvcml0aG0vY29udGFpbmVyLmgKK3RlbXBsYXRlIDxjbGFzcyBLZXks
IGNsYXNzIFQsIGNsYXNzIEhhc2gsIGNsYXNzIEtleUVxdWFsLCBjbGFzcyBBbGxvY2F0b3I+Citz
dHJ1Y3QgSXNVbm9yZGVyZWRDb250YWluZXI8CisgICAgYWJzbDo6ZmxhdF9oYXNoX21hcDxLZXks
IFQsIEhhc2gsIEtleUVxdWFsLCBBbGxvY2F0b3I+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCit9
ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbAorCiB9ICAvLyBuYW1l
c3BhY2UgYWJzbAorCiAjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0ZMQVRfSEFTSF9NQVBfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfbWFwX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvZmxhdF9oYXNoX21hcF90ZXN0LmNjCmluZGV4IDEwYTc4MWZmZDZjN2Q5ZDE0
OTA4NmU0NDMxNzRhN2FhNzZhZDIyYWUuLmViY2I1NjBmYzA0ZTNhMjMyZGIyNjhiYzVkYmIwNjhj
ZTEzMGFmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfbWFwX3Rlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXBfdGVzdC5jYwpAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKICNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9y
X3Rlc3QuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFw
X2xvb2t1cF90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRl
cmVkX21hcF9tZW1iZXJzX3Rlc3QuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgiCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9h
bnkuaCIKIApAQCAtMzAsMTkgKzMxLDIwIEBAIHVzaW5nIDo6dGVzdGluZzo6UGFpcjsKIHVzaW5n
IDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7CiAKIHRlbXBsYXRlIDxjbGFzcyBLLCBj
bGFzcyBWPgotdXNpbmcgTWFwID0KLSAgICBmbGF0X2hhc2hfbWFwPEssIFYsIFN0YXRlZnVsVGVz
dGluZ0hhc2gsIFN0YXRlZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzw+PjsKK3VzaW5nIE1hcCA9IGZs
YXRfaGFzaF9tYXA8SywgViwgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1
YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jPHN0ZDo6cGFpcjxjb25zdCBLLCBW
Pj4+OwogCiBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxOb25TdGFuZGFy
ZExheW91dD4oKSwgIiIpOwogCiB1c2luZyBNYXBUeXBlcyA9Ci0gICAgOjp0ZXN0aW5nOjpUeXBl
czxNYXA8aW50LCBpbnQ+LCBNYXA8c3RkOjpzdHJpbmcsIGludD4sIE1hcDxFbnVtLCBzdGQ6OnN0
cmluZz4sCi0gICAgICAgICAgICAgICAgICAgICBNYXA8RW51bUNsYXNzLCBpbnQ+LCBNYXA8aW50
LCBOb25TdGFuZGFyZExheW91dD4sCi0gICAgICAgICAgICAgICAgICAgICBNYXA8Tm9uU3RhbmRh
cmRMYXlvdXQsIGludD4+OworICAgIDo6dGVzdGluZzo6VHlwZXM8TWFwPGludCwgaW50PiwgTWFw
PHN0ZDo6c3RyaW5nLCBpbnQ+LAorICAgICAgICAgICAgICAgICAgICAgTWFwPEVudW0sIHN0ZDo6
c3RyaW5nPiwgTWFwPEVudW1DbGFzcywgaW50PiwKKyAgICAgICAgICAgICAgICAgICAgIE1hcDxp
bnQsIE5vblN0YW5kYXJkTGF5b3V0PiwgTWFwPE5vblN0YW5kYXJkTGF5b3V0LCBpbnQ+PjsKIAot
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRmxhdEhhc2hNYXAsIENvbnN0cnVjdG9yVGVz
dCwgTWFwVHlwZXMpOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRmxhdEhhc2hNYXAs
IExvb2t1cFRlc3QsIE1hcFR5cGVzKTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKEZs
YXRIYXNoTWFwLCBNb2RpZmllcnNUZXN0LCBNYXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9U
RVNUX1NVSVRFX1AoRmxhdEhhc2hNYXAsIENvbnN0cnVjdG9yVGVzdCwgTWFwVHlwZXMpOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKEZsYXRIYXNoTWFwLCBMb29rdXBUZXN0LCBNYXBU
eXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoRmxhdEhhc2hNYXAsIE1lbWJl
cnNUZXN0LCBNYXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoRmxhdEhh
c2hNYXAsIE1vZGlmaWVyc1Rlc3QsIE1hcFR5cGVzKTsKIAogVEVTVChGbGF0SGFzaE1hcCwgU3Rh
bmRhcmRMYXlvdXQpIHsKICAgc3RydWN0IEludCB7CkBAIC05NCw3ICs5Niw3IEBAIFRFU1QoRmxh
dEhhc2hNYXAsIEl0ZXJhdGVzTXNhbikgewogICB9CiB9CiAKLS8vIERlbW9uc3RyYXRpb24gb2Yg
dGhlICJMYXp5IEtleSIgcGF0dGVybi4gIFRoaXMgdXNlcyBoZXRlcm9nZW5vdXMgaW5zZXJ0IHRv
CisvLyBEZW1vbnN0cmF0aW9uIG9mIHRoZSAiTGF6eSBLZXkiIHBhdHRlcm4uICBUaGlzIHVzZXMg
aGV0ZXJvZ2VuZW91cyBpbnNlcnQgdG8KIC8vIGF2b2lkIGNyZWF0aW5nIGV4cGVuc2l2ZSBrZXkg
ZWxlbWVudHMgd2hlbiB0aGUgaXRlbSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlCiAvLyBtYXAu
CiBzdHJ1Y3QgTGF6eUludCB7CkBAIC0xMzksNiArMTQxLDcgQEAgVEVTVChGbGF0SGFzaE1hcCwg
TGF6eUtleVBhdHRlcm4pIHsKICAgaW50IGNvbnZlcnNpb25zID0gMDsKICAgaW50IGhhc2hlcyA9
IDA7CiAgIGZsYXRfaGFzaF9tYXA8c2l6ZV90LCBzaXplX3QsIEhhc2gsIEVxPiBtKDAsIEhhc2h7
Jmhhc2hlc30pOworICBtLnJlc2VydmUoMyk7CiAKICAgbVtMYXp5SW50KDEsICZjb252ZXJzaW9u
cyldID0gMTsKICAgRVhQRUNUX1RIQVQobSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigxLCAx
KSkpOwpAQCAtMjAzLDcgKzIwNiw5IEBAIFRFU1QoRmxhdEhhc2hNYXAsIE1lcmdlRXh0cmFjdElu
c2VydCkgewogICBtLmluc2VydChzdGQ6Om1vdmUobm9kZSkpOwogICBFWFBFQ1RfVEhBVChtLCBV
bm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKDEsIDE3KSwgUGFpcigyLCA5KSkpOwogfQotI2lmICFk
ZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
RU1TQ1JJUFRFTl9fKQorCisjaWYgKGRlZmluZWQoQUJTTF9IQVZFX1NURF9BTlkpIHx8ICFkZWZp
bmVkKF9MSUJDUFBfVkVSU0lPTikpICYmIFwKKyAgICAhZGVmaW5lZChfX0VNU0NSSVBURU5fXykK
IFRFU1QoRmxhdEhhc2hNYXAsIEFueSkgewogICBhYnNsOjpmbGF0X2hhc2hfbWFwPGludCwgYWJz
bDo6YW55PiBtOwogICBtLmVtcGxhY2UoMSwgNyk7CkBAIC0yMzQsNyArMjM5LDggQEAgVEVTVChG
bGF0SGFzaE1hcCwgQW55KSB7CiAgIEFTU0VSVF9ORShpdDIsIG0yLmVuZCgpKTsKICAgRVhQRUNU
X0VRKDcsIGl0Mi0+c2Vjb25kKTsKIH0KLSNlbmRpZiAgLy8gX19BTkRST0lEX18KKyNlbmRpZiAg
Ly8gKGRlZmluZWQoQUJTTF9IQVZFX1NURF9BTlkpIHx8ICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lP
TikpICYmCisgICAgICAgIC8vICFkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQogCiB9ICAvLyBuYW1l
c3BhY2UKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfc2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNo
X3NldC5oCmluZGV4IDk4YWVhZDFhOGFlMjA5ZTJhNDVhOTU2MTY3YmU5NWU3MjcwYzU0NGIuLjJh
NTFjMzQxMWQ2NjMxYTk1ZTZjYjNjNmQ3YjBjMjdjMmU5YTVlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9mbGF0X2hhc2hfc2V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFz
aF9zZXQuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAK
KyNpbmNsdWRlICJhYnNsL2FsZ29yaXRobS9jb250YWluZXIuaCIKICNpbmNsdWRlICJhYnNsL2Jh
c2UvbWFjcm9zLmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVy
X21lbW9yeS5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rp
b25fZGVmYXVsdHMuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKQEAgLTU0LDkgKzU1LDkgQEAg
c3RydWN0IEZsYXRIYXNoU2V0UG9saWN5OwogLy8gZm9sbG93aW5nIG5vdGFibGUgZGlmZmVyZW5j
ZXM6CiAvLwogLy8gKiBSZXF1aXJlcyBrZXlzIHRoYXQgYXJlIENvcHlDb25zdHJ1Y3RpYmxlCi0v
LyAqIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCB0aHJvdWdoIGBmaW5kKClgLCBgb3Bl
cmF0b3JbXSgpYCBhbmQKLS8vICAgYGluc2VydCgpYCwgcHJvdmlkZWQgdGhhdCB0aGUgc2V0IGlz
IHByb3ZpZGVkIGEgY29tcGF0aWJsZSBoZXRlcm9nZW5lb3VzCi0vLyAgIGhhc2hpbmcgZnVuY3Rp
b24gYW5kIGVxdWFsaXR5IG9wZXJhdG9yLgorLy8gKiBTdXBwb3J0cyBoZXRlcm9nZW5lb3VzIGxv
b2t1cCwgdGhyb3VnaCBgZmluZCgpYCBhbmQgYGluc2VydCgpYCwgcHJvdmlkZWQKKy8vICAgdGhh
dCB0aGUgc2V0IGlzIHByb3ZpZGVkIGEgY29tcGF0aWJsZSBoZXRlcm9nZW5lb3VzIGhhc2hpbmcg
ZnVuY3Rpb24gYW5kCisvLyAgIGVxdWFsaXR5IG9wZXJhdG9yLgogLy8gKiBJbnZhbGlkYXRlcyBh
bnkgcmVmZXJlbmNlcyBhbmQgcG9pbnRlcnMgdG8gZWxlbWVudHMgd2l0aGluIHRoZSB0YWJsZSBh
ZnRlcgogLy8gICBgcmVoYXNoKClgLgogLy8gKiBDb250YWlucyBhIGBjYXBhY2l0eSgpYCBtZW1i
ZXIgZnVuY3Rpb24gaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIGVsZW1lbnQKQEAgLTY2LDcgKzY3
LDcgQEAgc3RydWN0IEZsYXRIYXNoU2V0UG9saWN5OwogLy8gQnkgZGVmYXVsdCwgYGZsYXRfaGFz
aF9zZXRgIHVzZXMgdGhlIGBhYnNsOjpIYXNoYCBoYXNoaW5nIGZyYW1ld29yay4gQWxsCiAvLyBm
dW5kYW1lbnRhbCBhbmQgQWJzZWlsIHR5cGVzIHRoYXQgc3VwcG9ydCB0aGUgYGFic2w6Okhhc2hg
IGZyYW1ld29yayBoYXZlIGEKIC8vIGNvbXBhdGlibGUgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIGNv
bXBhcmluZyBpbnNlcnRpb25zIGludG8gYGZsYXRfaGFzaF9tYXBgLgotLy8gSWYgeW91ciB0eXBl
IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBgYXNibDo6SGFzaGAgZnJhbWV3b3JrLCBzZWUK
Ky8vIElmIHlvdXIgdHlwZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBieSB0aGUgYGFic2w6Okhhc2hg
IGZyYW1ld29yaywgc2VlCiAvLyBhYnNsL2hhc2gvaGFzaC5oIGZvciBpbmZvcm1hdGlvbiBvbiBl
eHRlbmRpbmcgQWJzZWlsIGhhc2hpbmcgdG8gdXNlci1kZWZpbmVkCiAvLyB0eXBlcy4KIC8vCkBA
IC04NCw3ICs4NSw3IEBAIHN0cnVjdCBGbGF0SGFzaFNldFBvbGljeTsKIC8vICAgICB7Imh1ZXki
LCAiZGV3ZXkiLCAibG91aWUifTsKIC8vCiAvLyAgLy8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW50
byB0aGUgZmxhdCBoYXNoIHNldAotLy8gIGR1Y2tzLmluc2VydCgiZG9uYWxkIn07CisvLyAgZHVj
a3MuaW5zZXJ0KCJkb25hbGQiKTsKIC8vCiAvLyAgLy8gRm9yY2UgYSByZWhhc2ggb2YgdGhlIGZs
YXQgaGFzaCBzZXQKIC8vICBkdWNrcy5yZWhhc2goMCk7CkBAIC0xMDIsNiArMTAzLDQ2IEBAIGNs
YXNzIGZsYXRfaGFzaF9zZXQKICAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIGZsYXRfaGFzaF9zZXQ6
OnJhd19oYXNoX3NldDsKIAogIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0b3JzIGFuZCBBc3NpZ25t
ZW50IE9wZXJhdG9ycworICAvLworICAvLyBBIGZsYXRfaGFzaF9zZXQgc3VwcG9ydHMgdGhlIHNh
bWUgb3ZlcmxvYWQgc2V0IGFzIGBzdGQ6OnVub3JkZXJlZF9tYXBgCisgIC8vIGZvciBjb25zdHJ1
Y3Rpb24gYW5kIGFzc2lnbm1lbnQ6CisgIC8vCisgIC8vICogIERlZmF1bHQgY29uc3RydWN0b3IK
KyAgLy8KKyAgLy8gICAgLy8gTm8gYWxsb2NhdGlvbiBmb3IgdGhlIHRhYmxlJ3MgZWxlbWVudHMg
aXMgbWFkZS4KKyAgLy8gICAgYWJzbDo6ZmxhdF9oYXNoX3NldDxzdGQ6OnN0cmluZz4gc2V0MTsK
KyAgLy8KKyAgLy8gKiBJbml0aWFsaXplciBMaXN0IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAg
YWJzbDo6ZmxhdF9oYXNoX3NldDxzdGQ6OnN0cmluZz4gc2V0MiA9CisgIC8vICAgICAgIHt7Imh1
ZXkifSwgeyJkZXdleSJ9LCB7ImxvdWllIn0sfTsKKyAgLy8KKyAgLy8gKiBDb3B5IGNvbnN0cnVj
dG9yCisgIC8vCisgIC8vICAgYWJzbDo6ZmxhdF9oYXNoX3NldDxzdGQ6OnN0cmluZz4gc2V0Myhz
ZXQyKTsKKyAgLy8KKyAgLy8gKiBDb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgLy8KKyAgLy8g
IC8vIEhhc2ggZnVuY3RvciBhbmQgQ29tcGFyYXRvciBhcmUgY29waWVkIGFzIHdlbGwKKyAgLy8g
IGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHNldDQ7CisgIC8vICBzZXQ0ID0gc2V0
MzsKKyAgLy8KKyAgLy8gKiBNb3ZlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgLy8gTW92ZSBp
cyBndWFyYW50ZWVkIGVmZmljaWVudAorICAvLyAgIGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjpz
dHJpbmc+IHNldDUoc3RkOjptb3ZlKHNldDQpKTsKKyAgLy8KKyAgLy8gKiBNb3ZlIGFzc2lnbm1l
bnQgb3BlcmF0b3IKKyAgLy8KKyAgLy8gICAvLyBNYXkgYmUgZWZmaWNpZW50IGlmIGFsbG9jYXRv
cnMgYXJlIGNvbXBhdGlibGUKKyAgLy8gICBhYnNsOjpmbGF0X2hhc2hfc2V0PHN0ZDo6c3RyaW5n
PiBzZXQ2OworICAvLyAgIHNldDYgPSBzdGQ6Om1vdmUoc2V0NSk7CisgIC8vCisgIC8vICogUmFu
Z2UgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9
IHsiYSIsICJiIn07CisgIC8vICAgYWJzbDo6ZmxhdF9oYXNoX3NldDxzdGQ6OnN0cmluZz4gc2V0
Nyh2LmJlZ2luKCksIHYuZW5kKCkpOwogICBmbGF0X2hhc2hfc2V0KCkge30KICAgdXNpbmcgQmFz
ZTo6QmFzZTsKIApAQCAtMTcxLDggKzIxMiwxMiBAQCBjbGFzcyBmbGF0X2hhc2hfc2V0CiAgIC8v
ICAgRXJhc2VzIHRoZSBlbGVtZW50IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGBmbGF0X2hhc2hfc2V0
YCwgcmV0dXJuaW5nCiAgIC8vICAgYHZvaWRgLgogICAvLwotICAvLyAgIE5PVEU6IHRoaXMgcmV0
dXJuIGJlaGF2aW9yIGlzIGRpZmZlcmVudCB0aGFuIHRoYXQgb2YgU1RMIGNvbnRhaW5lcnMgaW4K
LSAgLy8gICBnZW5lcmFsIGFuZCBgc3RkOjp1bm9yZGVyZWRfbWFwYCBpbiBwYXJ0aWN1bGFyLgor
ICAvLyAgIE5PVEU6IHJldHVybmluZyBgdm9pZGAgaW4gdGhpcyBjYXNlIGlzIGRpZmZlcmVudCB0
aGFuIHRoYXQgb2YgU1RMCisgIC8vICAgY29udGFpbmVycyBpbiBnZW5lcmFsIGFuZCBgc3RkOjp1
bm9yZGVyZWRfc2V0YCBpbiBwYXJ0aWN1bGFyICh3aGljaAorICAvLyAgIHJldHVybiBhbiBpdGVy
YXRvciB0byB0aGUgZWxlbWVudCBmb2xsb3dpbmcgdGhlIGVyYXNlZCBlbGVtZW50KS4gSWYgdGhh
dAorICAvLyAgIGl0ZXJhdG9yIGlzIG5lZWRlZCwgc2ltcGx5IHBvc3QgaW5jcmVtZW50IHRoZSBp
dGVyYXRvcjoKKyAgLy8KKyAgLy8gICAgIHNldC5lcmFzZShpdCsrKTsKICAgLy8KICAgLy8gaXRl
cmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpOgog
ICAvLwpAQCAtMjM4LDggKzI4Myw3IEBAIGNsYXNzIGZsYXRfaGFzaF9zZXQKICAgLy8KICAgLy8g
VGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBh
biBlbGVtZW50IHdpdGggdGhlCiAgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBj
YXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKLSAgLy8gZGVzdHJveWVk
IGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBu
b3QKLSAgLy8gY29weWFibGUgb3IgbW92ZWFibGUuCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVs
eS4KICAgLy8KICAgLy8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUgdG8gdGhlIGluc2VydGlvbiwg
YWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCiAgIHVzaW5nIEJhc2U6OmVtcGxhY2U7CkBA
IC0yNTMsOCArMjk3LDcgQEAgY2xhc3MgZmxhdF9oYXNoX3NldAogICAvLwogICAvLyBUaGUgZWxl
bWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1l
bnQgd2l0aCB0aGUKICAgLy8ga2V5IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhl
IG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQotICAvLyBkZXN0cm95ZWQgaW1tZWRp
YXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIga2V5IGlzIG5vdAotICAv
LyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5LgogICAv
LwogICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRl
cmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KICAgdXNpbmcgQmFzZTo6ZW1wbGFjZV9oaW50OwpAQCAt
NDM1LDUgKzQ3OCwxNiBAQCBzdHJ1Y3QgRmxhdEhhc2hTZXRQb2xpY3kgewogICBzdGF0aWMgc2l6
ZV90IHNwYWNlX3VzZWQoY29uc3QgVCopIHsgcmV0dXJuIDA7IH0KIH07CiB9ICAvLyBuYW1lc3Bh
Y2UgY29udGFpbmVyX2ludGVybmFsCisKK25hbWVzcGFjZSBjb250YWluZXJfYWxnb3JpdGhtX2lu
dGVybmFsIHsKKworLy8gU3BlY2lhbGl6YXRpb24gb2YgdHJhaXQgaW4gYWJzbC9hbGdvcml0aG0v
Y29udGFpbmVyLmgKK3RlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIEhhc2gsIGNsYXNzIEtleUVx
dWFsLCBjbGFzcyBBbGxvY2F0b3I+CitzdHJ1Y3QgSXNVbm9yZGVyZWRDb250YWluZXI8YWJzbDo6
ZmxhdF9oYXNoX3NldDxLZXksIEhhc2gsIEtleUVxdWFsLCBBbGxvY2F0b3I+PgorICAgIDogc3Rk
Ojp0cnVlX3R5cGUge307CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfYWxnb3JpdGhtX2lu
dGVybmFsCisKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9DT05UQUlO
RVJfRkxBVF9IQVNIX1NFVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFz
aF9zZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfc2V0X3Rlc3QuY2MKaW5k
ZXggZTUyZmQ1MzJjYmVlYzc1MTU4YmU2MjA1ZTU2MTE4MWNiMTc0ZDRiYi4uYjU1YmU1OWIwNGM4
MjI1M2FlYWIzNThmMzQ4YjJlYmNjOWMxNmQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ZsYXRfaGFzaF9zZXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3Nl
dF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0x
OSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5l
cmF0b3JfdGVzdGluZy5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3Jk
ZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
dGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdC5oIgogI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaCIKICNp
bmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Ry
aW5nX3ZpZXcuaCIKQEAgLTQwLDkgKzQxLDEwIEBAIHVzaW5nIFNldCA9CiB1c2luZyBTZXRUeXBl
cyA9CiAgICAgOjp0ZXN0aW5nOjpUeXBlczxTZXQ8aW50PiwgU2V0PHN0ZDo6c3RyaW5nPiwgU2V0
PEVudW0+LCBTZXQ8RW51bUNsYXNzPj47CiAKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KEZsYXRIYXNoU2V0LCBDb25zdHJ1Y3RvclRlc3QsIFNldFR5cGVzKTsKLUlOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKEZsYXRIYXNoU2V0LCBMb29rdXBUZXN0LCBTZXRUeXBlcyk7Ci1JTlNU
QU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFzaFNldCwgTW9kaWZpZXJzVGVzdCwgU2V0
VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9QKEZsYXRIYXNoU2V0LCBDb25z
dHJ1Y3RvclRlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChG
bGF0SGFzaFNldCwgTG9va3VwVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9TVUlURV9QKEZsYXRIYXNoU2V0LCBNZW1iZXJzVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9TVUlURV9QKEZsYXRIYXNoU2V0LCBNb2RpZmllcnNUZXN0LCBTZXRUeXBl
cyk7CiAKIFRFU1QoRmxhdEhhc2hTZXQsIEVtcGxhY2VTdHJpbmcpIHsKICAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IHYgPSB7ImEiLCAiYiJ9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2lubGluZWRfdmVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaAppbmRl
eCAxMjc1NmJiODIwY2Y2YWU5NTZjYTQ2NGE4YWM3Y2Q3MzJjYmM5ZTFmLi4yNWFmMTY1ODkxNGM4
NWZjMmZjMWQ2OGM5OTQwNDNhZjUyZmZiMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
aW5saW5lZF92ZWN0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaApA
QCAtMSwxMCArMSwxMCBAQAotLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgogLy8KIC8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yMCwxNyArMjAsMTcgQEAKIC8vIHZlY3RvciIgd2hp
Y2ggYmVoYXZlcyBpbiBhbiBlcXVpdmFsZW50IGZhc2hpb24gdG8gYSBgc3RkOjp2ZWN0b3JgLCBl
eGNlcHQKIC8vIHRoYXQgc3RvcmFnZSBmb3Igc21hbGwgc2VxdWVuY2VzIG9mIHRoZSB2ZWN0b3Ig
YXJlIHByb3ZpZGVkIGlubGluZSB3aXRob3V0CiAvLyByZXF1aXJpbmcgYW55IGhlYXAgYWxsb2Nh
dGlvbi4KLQotLy8gQW4gYGFic2w6OklubGluZWRWZWN0b3I8VCxOPmAgc3BlY2lmaWVzIHRoZSBz
aXplIE4gYXQgd2hpY2ggdG8gaW5saW5lIGFzIG9uZQotLy8gb2YgaXRzIHRlbXBsYXRlIHBhcmFt
ZXRlcnMuIFZlY3RvcnMgb2YgbGVuZ3RoIDw9IE4gYXJlIHByb3ZpZGVkIGlubGluZS4KLS8vIFR5
cGljYWxseSBOIGlzIHZlcnkgc21hbGwgKGUuZy4sIDQpIHNvIHRoYXQgc2VxdWVuY2VzIHRoYXQg
YXJlIGV4cGVjdGVkIHRvIGJlCi0vLyBzaG9ydCBkbyBub3QgcmVxdWlyZSBhbGxvY2F0aW9ucy4K
LQotLy8gQW4gYGFic2w6OklubGluZWRWZWN0b3JgIGRvZXMgbm90IHVzdWFsbHkgcmVxdWlyZSBh
IHNwZWNpZmljIGFsbG9jYXRvcjsgaWYKKy8vCisvLyBBbiBgYWJzbDo6SW5saW5lZFZlY3RvcjxU
LCBOPmAgc3BlY2lmaWVzIHRoZSBkZWZhdWx0IGNhcGFjaXR5IGBOYCBhcyBvbmUgb2YKKy8vIGl0
cyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLiBJbnN0YW5jZXMgd2hlcmUgYHNpemUoKSA8PSBOYCBob2xk
IGNvbnRhaW5lZAorLy8gZWxlbWVudHMgaW4gaW5saW5lIHNwYWNlLiBUeXBpY2FsbHkgYE5gIGlz
IHZlcnkgc21hbGwgc28gdGhhdCBzZXF1ZW5jZXMgdGhhdAorLy8gYXJlIGV4cGVjdGVkIHRvIGJl
IHNob3J0IGRvIG5vdCByZXF1aXJlIGFsbG9jYXRpb25zLgorLy8KKy8vIEFuIGBhYnNsOjpJbmxp
bmVkVmVjdG9yYCBkb2VzIG5vdCB1c3VhbGx5IHJlcXVpcmUgYSBzcGVjaWZpYyBhbGxvY2F0b3Iu
IElmCiAvLyB0aGUgaW5saW5lZCB2ZWN0b3IgZ3Jvd3MgYmV5b25kIGl0cyBpbml0aWFsIGNvbnN0
cmFpbnRzLCBpdCB3aWxsIG5lZWQgdG8KLS8vIGFsbG9jYXRlIChhcyBhbnkgbm9ybWFsIGBzdGQ6
OnZlY3RvcmAgd291bGQpIGFuZCBpdCB3aWxsIGdlbmVyYWxseSB1c2UgdGhlCi0vLyBkZWZhdWx0
IGFsbG9jYXRvciBpbiB0aGF0IGNhc2U7IG9wdGlvbmFsbHksIGEgY3VzdG9tIGFsbG9jYXRvciBt
YXkgYmUKLS8vIHNwZWNpZmllZCB1c2luZyBhbiBgYWJzbDo6SW5saW5lZFZlY3RvcjxULE4sQT5g
IGNvbnN0cnVjdGlvbi4KKy8vIGFsbG9jYXRlIChhcyBhbnkgbm9ybWFsIGBzdGQ6OnZlY3RvcmAg
d291bGQpLiBUaGlzIGlzIHVzdWFsbHkgcGVyZm9ybWVkIHdpdGgKKy8vIHRoZSBkZWZhdWx0IGFs
bG9jYXRvciAoZGVmaW5lZCBhcyBgc3RkOjphbGxvY2F0b3I8VD5gKS4gT3B0aW9uYWxseSwgYSBj
dXN0b20KKy8vIGFsbG9jYXRvciB0eXBlIG1heSBiZSBzcGVjaWZpZWQgYXMgYEFgIGluIGBhYnNs
OjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+YC4KIAogI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTkxJ
TkVEX1ZFQ1RPUl9IXwogI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTkxJTkVEX1ZFQ1RPUl9IXwpA
QCAtNTAsMTAgKzUwLDEwIEBACiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Rocm93X2Rl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL29wdGltaXphdGlvbi5oIgogI2luY2x1ZGUg
ImFic2wvYmFzZS9wb3J0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaW5s
aW5lZF92ZWN0b3IuaCIKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKIAogbmFtZXNw
YWNlIGFic2wgewotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gSW5saW5lZFZlY3Rvcgog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTYxLDEzMjkgKzYxLDc4MyBAQCBuYW1lc3BhY2Ug
YWJzbCB7CiAvLyBBbiBgYWJzbDo6SW5saW5lZFZlY3RvcmAgaXMgZGVzaWduZWQgdG8gYmUgYSBk
cm9wLWluIHJlcGxhY2VtZW50IGZvcgogLy8gYHN0ZDo6dmVjdG9yYCBmb3IgdXNlIGNhc2VzIHdo
ZXJlIHRoZSB2ZWN0b3IncyBzaXplIGlzIHN1ZmZpY2llbnRseSBzbWFsbAogLy8gdGhhdCBpdCBj
YW4gYmUgaW5saW5lZC4gSWYgdGhlIGlubGluZWQgdmVjdG9yIGRvZXMgZ3JvdyBiZXlvbmQgaXRz
IGVzdGltYXRlZAotLy8gc2l6ZSwgaXQgd2lsbCB0cmlnZ2VyIGFuIGluaXRpYWwgYWxsb2NhdGlv
biBvbiB0aGUgaGVhcCwgYW5kIHdpbGwgYmVoYXZlIGFzIGEKLS8vIGBzdGQ6dmVjdG9yYC4gVGhl
IEFQSSBvZiB0aGUgYGFic2w6OklubGluZWRWZWN0b3JgIHdpdGhpbiB0aGlzIGZpbGUgaXMKKy8v
IGNhcGFjaXR5LCBpdCB3aWxsIHRyaWdnZXIgYW4gaW5pdGlhbCBhbGxvY2F0aW9uIG9uIHRoZSBo
ZWFwLCBhbmQgd2lsbCBiZWhhdmUKKy8vIGFzIGEgYHN0ZDp2ZWN0b3JgLiBUaGUgQVBJIG9mIHRo
ZSBgYWJzbDo6SW5saW5lZFZlY3RvcmAgd2l0aGluIHRoaXMgZmlsZSBpcwogLy8gZGVzaWduZWQg
dG8gY292ZXIgdGhlIHNhbWUgQVBJIGZvb3RwcmludCBhcyBjb3ZlcmVkIGJ5IGBzdGQ6OnZlY3Rv
cmAuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEEgPSBzdGQ6OmFs
bG9jYXRvcjxUPiA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEEg
PSBzdGQ6OmFsbG9jYXRvcjxUPj4KIGNsYXNzIElubGluZWRWZWN0b3IgewotICB1c2luZyBBbGxv
Y2F0b3JUcmFpdHMgPSBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QT47CisgIHN0YXRpY19hc3NlcnQo
TiA+IDAsICJgYWJzbDo6SW5saW5lZFZlY3RvcmAgcmVxdWlyZXMgYW4gaW5saW5lZCBjYXBhY2l0
eS4iKTsKKworICB1c2luZyBTdG9yYWdlID0gaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OlN0b3Jh
Z2U8VCwgTiwgQT47CisgIHVzaW5nIHJ2YWx1ZV9yZWZlcmVuY2UgPSB0eXBlbmFtZSBTdG9yYWdl
OjpydmFsdWVfcmVmZXJlbmNlOworICB1c2luZyBNb3ZlSXRlcmF0b3IgPSB0eXBlbmFtZSBTdG9y
YWdlOjpNb3ZlSXRlcmF0b3I7CisgIHVzaW5nIEFsbG9jYXRvclRyYWl0cyA9IHR5cGVuYW1lIFN0
b3JhZ2U6OkFsbG9jYXRvclRyYWl0czsKKyAgdXNpbmcgSXNNZW1jcHlPayA9IHR5cGVuYW1lIFN0
b3JhZ2U6OklzTWVtY3B5T2s7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgorICB1
c2luZyBJdGVyYXRvclZhbHVlQWRhcHRlciA9CisgICAgICB0eXBlbmFtZSBTdG9yYWdlOjp0ZW1w
bGF0ZSBJdGVyYXRvclZhbHVlQWRhcHRlcjxJdGVyYXRvcj47CisgIHVzaW5nIENvcHlWYWx1ZUFk
YXB0ZXIgPSB0eXBlbmFtZSBTdG9yYWdlOjpDb3B5VmFsdWVBZGFwdGVyOworICB1c2luZyBEZWZh
dWx0VmFsdWVBZGFwdGVyID0gdHlwZW5hbWUgU3RvcmFnZTo6RGVmYXVsdFZhbHVlQWRhcHRlcjsK
KworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+CisgIHVzaW5nIEVuYWJsZUlmQXRMZWFz
dEZvcndhcmRJdGVyYXRvciA9IGFic2w6OmVuYWJsZV9pZl90PAorICAgICAgaW5saW5lZF92ZWN0
b3JfaW50ZXJuYWw6OklzQXRMZWFzdEZvcndhcmRJdGVyYXRvcjxJdGVyYXRvcj46OnZhbHVlPjsK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgorICB1c2luZyBEaXNhYmxlSWZBdExlYXN0
Rm9yd2FyZEl0ZXJhdG9yID0gYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICAhaW5saW5lZF92ZWN0
b3JfaW50ZXJuYWw6OklzQXRMZWFzdEZvcndhcmRJdGVyYXRvcjxJdGVyYXRvcj46OnZhbHVlPjsK
IAogIHB1YmxpYzoKLSAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSBBOwotICB1c2luZyB2YWx1ZV90
eXBlID0gdHlwZW5hbWUgYWxsb2NhdG9yX3R5cGU6OnZhbHVlX3R5cGU7Ci0gIHVzaW5nIHBvaW50
ZXIgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6cG9pbnRlcjsKLSAgdXNpbmcgY29uc3RfcG9p
bnRlciA9IHR5cGVuYW1lIGFsbG9jYXRvcl90eXBlOjpjb25zdF9wb2ludGVyOwotICB1c2luZyBy
ZWZlcmVuY2UgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6cmVmZXJlbmNlOwotICB1c2luZyBj
b25zdF9yZWZlcmVuY2UgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6Y29uc3RfcmVmZXJlbmNl
OwotICB1c2luZyBzaXplX3R5cGUgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6c2l6ZV90eXBl
OwotICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6ZGlm
ZmVyZW5jZV90eXBlOwotICB1c2luZyBpdGVyYXRvciA9IHBvaW50ZXI7Ci0gIHVzaW5nIGNvbnN0
X2l0ZXJhdG9yID0gY29uc3RfcG9pbnRlcjsKLSAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciA9IHN0
ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47Ci0gIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRl
cmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+OwotCi0gIElubGlu
ZWRWZWN0b3IoKSBub2V4Y2VwdChub2V4Y2VwdChhbGxvY2F0b3JfdHlwZSgpKSkKLSAgICAgIDog
YWxsb2NhdG9yX2FuZF90YWdfKGFsbG9jYXRvcl90eXBlKCkpIHt9Ci0KKyAgdXNpbmcgYWxsb2Nh
dG9yX3R5cGUgPSB0eXBlbmFtZSBTdG9yYWdlOjphbGxvY2F0b3JfdHlwZTsKKyAgdXNpbmcgdmFs
dWVfdHlwZSA9IHR5cGVuYW1lIFN0b3JhZ2U6OnZhbHVlX3R5cGU7CisgIHVzaW5nIHBvaW50ZXIg
PSB0eXBlbmFtZSBTdG9yYWdlOjpwb2ludGVyOworICB1c2luZyBjb25zdF9wb2ludGVyID0gdHlw
ZW5hbWUgU3RvcmFnZTo6Y29uc3RfcG9pbnRlcjsKKyAgdXNpbmcgcmVmZXJlbmNlID0gdHlwZW5h
bWUgU3RvcmFnZTo6cmVmZXJlbmNlOworICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSB0eXBlbmFt
ZSBTdG9yYWdlOjpjb25zdF9yZWZlcmVuY2U7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVuYW1l
IFN0b3JhZ2U6OnNpemVfdHlwZTsKKyAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gdHlwZW5hbWUg
U3RvcmFnZTo6ZGlmZmVyZW5jZV90eXBlOworICB1c2luZyBpdGVyYXRvciA9IHR5cGVuYW1lIFN0
b3JhZ2U6Oml0ZXJhdG9yOworICB1c2luZyBjb25zdF9pdGVyYXRvciA9IHR5cGVuYW1lIFN0b3Jh
Z2U6OmNvbnN0X2l0ZXJhdG9yOworICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gdHlwZW5hbWUg
U3RvcmFnZTo6cmV2ZXJzZV9pdGVyYXRvcjsKKyAgdXNpbmcgY29uc3RfcmV2ZXJzZV9pdGVyYXRv
ciA9IHR5cGVuYW1lIFN0b3JhZ2U6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CisKKyAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgIC8vIElubGluZWRWZWN0b3IgQ29uc3RydWN0b3JzIGFuZCBEZXN0
cnVjdG9yCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIC8vIENyZWF0ZXMgYW4gZW1wdHkg
aW5saW5lZCB2ZWN0b3Igd2l0aCBhIHZhbHVlLWluaXRpYWxpemVkIGFsbG9jYXRvci4KKyAgSW5s
aW5lZFZlY3RvcigpIG5vZXhjZXB0KG5vZXhjZXB0KGFsbG9jYXRvcl90eXBlKCkpKSA6IHN0b3Jh
Z2VfKCkge30KKworICAvLyBDcmVhdGVzIGFuIGVtcHR5IGlubGluZWQgdmVjdG9yIHdpdGggYSBj
b3B5IG9mIGBhbGxvY2AuCiAgIGV4cGxpY2l0IElubGluZWRWZWN0b3IoY29uc3QgYWxsb2NhdG9y
X3R5cGUmIGFsbG9jKSBub2V4Y2VwdAotICAgICAgOiBhbGxvY2F0b3JfYW5kX3RhZ18oYWxsb2Mp
IHt9CisgICAgICA6IHN0b3JhZ2VfKGFsbG9jKSB7fQogCi0gIC8vIENyZWF0ZSBhIHZlY3RvciB3
aXRoIG4gY29waWVzIG9mIHZhbHVlX3R5cGUoKS4KKyAgLy8gQ3JlYXRlcyBhbiBpbmxpbmVkIHZl
Y3RvciB3aXRoIGBuYCBjb3BpZXMgb2YgYHZhbHVlX3R5cGUoKWAuCiAgIGV4cGxpY2l0IElubGlu
ZWRWZWN0b3Ioc2l6ZV90eXBlIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxs
b2NhdG9yX3R5cGUmIGFsbG9jID0gYWxsb2NhdG9yX3R5cGUoKSkKLSAgICAgIDogYWxsb2NhdG9y
X2FuZF90YWdfKGFsbG9jKSB7Ci0gICAgSW5pdEFzc2lnbihuKTsKKyAgICAgIDogc3RvcmFnZV8o
YWxsb2MpIHsKKyAgICBzdG9yYWdlXy5Jbml0aWFsaXplKERlZmF1bHRWYWx1ZUFkYXB0ZXIoKSwg
bik7CiAgIH0KIAotICAvLyBDcmVhdGUgYSB2ZWN0b3Igd2l0aCBuIGNvcGllcyBvZiBlbGVtCi0g
IElubGluZWRWZWN0b3Ioc2l6ZV90eXBlIG4sIGNvbnN0IHZhbHVlX3R5cGUmIGVsZW0sCisgIC8v
IENyZWF0ZXMgYW4gaW5saW5lZCB2ZWN0b3Igd2l0aCBgbmAgY29waWVzIG9mIGB2YC4KKyAgSW5s
aW5lZFZlY3RvcihzaXplX3R5cGUgbiwgY29uc3RfcmVmZXJlbmNlIHYsCiAgICAgICAgICAgICAg
ICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jID0gYWxsb2NhdG9yX3R5cGUoKSkKLSAgICAg
IDogYWxsb2NhdG9yX2FuZF90YWdfKGFsbG9jKSB7Ci0gICAgSW5pdEFzc2lnbihuLCBlbGVtKTsK
KyAgICAgIDogc3RvcmFnZV8oYWxsb2MpIHsKKyAgICBzdG9yYWdlXy5Jbml0aWFsaXplKENvcHlW
YWx1ZUFkYXB0ZXIodiksIG4pOwogICB9CiAKLSAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHdp
dGggdGhlIGVsZW1lbnRzIFtmaXJzdCAuLiBsYXN0KS4KLSAgLy8gVGhlIHVudXNlZCBlbmFibGVf
aWYgYXJndW1lbnQgcmVzdHJpY3RzIHRoaXMgY29uc3RydWN0b3Igc28gdGhhdCBpdCBpcwotICAv
LyBlbGlkZWQgd2hlbiB2YWx1ZV90eXBlIGlzIGFuIGludGVncmFsIHR5cGUuICBUaGlzIHByZXZl
bnRzIGFtYmlndW91cwotICAvLyBpbnRlcnByZXRhdGlvbiBiZXR3ZWVuIGEgY2FsbCB0byB0aGlz
IGNvbnN0cnVjdG9yIHdpdGggdHdvIGludGVncmFsCi0gIC8vIGFyZ3VtZW50cyBhbmQgYSBjYWxs
IHRvIHRoZSBwcmVjZWRpbmcgKG4sIGVsZW0pIGNvbnN0cnVjdG9yLgotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSW5wdXRJdGVyYXRvcj4KLSAgSW5saW5lZFZlY3RvcigKLSAgICAgIElucHV0SXRlcmF0
b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwKLSAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBhbGxvYyA9IGFsbG9jYXRvcl90eXBlKCksCi0gICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
Zjwhc3RkOjppc19pbnRlZ3JhbDxJbnB1dEl0ZXJhdG9yPjo6dmFsdWU+Ojp0eXBlKiA9Ci0gICAg
ICAgICAgbnVsbHB0cikKLSAgICAgIDogYWxsb2NhdG9yX2FuZF90YWdfKGFsbG9jKSB7Ci0gICAg
QXBwZW5kUmFuZ2UoZmlyc3QsIGxhc3QpOworICAvLyBDcmVhdGVzIGFuIGlubGluZWQgdmVjdG9y
IHdpdGggY29waWVzIG9mIHRoZSBlbGVtZW50cyBvZiBgbGlzdGAuCisgIElubGluZWRWZWN0b3Io
c3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QsCisgICAgICAgICAgICAgICAg
Y29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jID0gYWxsb2NhdG9yX3R5cGUoKSkKKyAgICAgIDog
SW5saW5lZFZlY3RvcihsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCksIGFsbG9jKSB7fQorCisgIC8v
IENyZWF0ZXMgYW4gaW5saW5lZCB2ZWN0b3Igd2l0aCBlbGVtZW50cyBjb25zdHJ1Y3RlZCBmcm9t
IHRoZSBwcm92aWRlZAorICAvLyBmb3J3YXJkIGl0ZXJhdG9yIHJhbmdlIFtgZmlyc3RgLCBgbGFz
dGApLgorICAvLworICAvLyBOT1RFOiB0aGUgYGVuYWJsZV9pZmAgcHJldmVudHMgYW1iaWd1b3Vz
IGludGVycHJldGF0aW9uIGJldHdlZW4gYSBjYWxsIHRvCisgIC8vIHRoaXMgY29uc3RydWN0b3Ig
d2l0aCB0d28gaW50ZWdyYWwgYXJndW1lbnRzIGFuZCBhIGNhbGwgdG8gdGhlIGFib3ZlCisgIC8v
IGBJbmxpbmVkVmVjdG9yKHNpemVfdHlwZSwgY29uc3RfcmVmZXJlbmNlKWAgY29uc3RydWN0b3Iu
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsCisgICAgICAgICAgICBFbmFi
bGVJZkF0TGVhc3RGb3J3YXJkSXRlcmF0b3I8Rm9yd2FyZEl0ZXJhdG9yPiogPSBudWxscHRyPgor
ICBJbmxpbmVkVmVjdG9yKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxh
c3QsCisgICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jID0gYWxsb2Nh
dG9yX3R5cGUoKSkKKyAgICAgIDogc3RvcmFnZV8oYWxsb2MpIHsKKyAgICBzdG9yYWdlXy5Jbml0
aWFsaXplKEl0ZXJhdG9yVmFsdWVBZGFwdGVyPEZvcndhcmRJdGVyYXRvcj4oZmlyc3QpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCkpOwogICB9CiAK
LSAgSW5saW5lZFZlY3RvcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gaW5pdCwK
KyAgLy8gQ3JlYXRlcyBhbiBpbmxpbmVkIHZlY3RvciB3aXRoIGVsZW1lbnRzIGNvbnN0cnVjdGVk
IGZyb20gdGhlIHByb3ZpZGVkIGlucHV0CisgIC8vIGl0ZXJhdG9yIHJhbmdlIFtgZmlyc3RgLCBg
bGFzdGApLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwKKyAgICAgICAgICAg
IERpc2FibGVJZkF0TGVhc3RGb3J3YXJkSXRlcmF0b3I8SW5wdXRJdGVyYXRvcj4qID0gbnVsbHB0
cj4KKyAgSW5saW5lZFZlY3RvcihJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxh
c3QsCiAgICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jID0gYWxsb2Nh
dG9yX3R5cGUoKSkKLSAgICAgIDogYWxsb2NhdG9yX2FuZF90YWdfKGFsbG9jKSB7Ci0gICAgQXBw
ZW5kUmFuZ2UoaW5pdC5iZWdpbigpLCBpbml0LmVuZCgpKTsKKyAgICAgIDogc3RvcmFnZV8oYWxs
b2MpIHsKKyAgICBzdGQ6OmNvcHkoZmlyc3QsIGxhc3QsIHN0ZDo6YmFja19pbnNlcnRlcigqdGhp
cykpOwogICB9CiAKLSAgSW5saW5lZFZlY3Rvcihjb25zdCBJbmxpbmVkVmVjdG9yJiB2KTsKLSAg
SW5saW5lZFZlY3Rvcihjb25zdCBJbmxpbmVkVmVjdG9yJiB2LCBjb25zdCBhbGxvY2F0b3JfdHlw
ZSYgYWxsb2MpOworICAvLyBDcmVhdGVzIGFuIGlubGluZWQgdmVjdG9yIGJ5IGNvcHlpbmcgdGhl
IGNvbnRlbnRzIG9mIGBvdGhlcmAgdXNpbmcKKyAgLy8gYG90aGVyYCdzIGFsbG9jYXRvci4KKyAg
SW5saW5lZFZlY3Rvcihjb25zdCBJbmxpbmVkVmVjdG9yJiBvdGhlcikKKyAgICAgIDogSW5saW5l
ZFZlY3RvcihvdGhlciwgKm90aGVyLnN0b3JhZ2VfLkdldEFsbG9jUHRyKCkpIHt9CiAKLSAgLy8g
VGhpcyBtb3ZlIGNvbnN0cnVjdG9yIGRvZXMgbm90IGFsbG9jYXRlIGFuZCBvbmx5IG1vdmVzIHRo
ZSB1bmRlcmx5aW5nCi0gIC8vIG9iamVjdHMsIHNvIGl0cyBgbm9leGNlcHRgIHNwZWNpZmljYXRp
b24gZGVwZW5kcyBvbiB3aGV0aGVyIG1vdmluZyB0aGUKLSAgLy8gdW5kZXJseWluZyBvYmplY3Rz
IGNhbiB0aHJvdyBvciBub3QuIFdlIGFzc3VtZQotICAvLyAgYSkgbW92ZSBjb25zdHJ1Y3RvcnMg
c2hvdWxkIG9ubHkgdGhyb3cgZHVlIHRvIGFsbG9jYXRpb24gZmFpbHVyZSBhbmQKLSAgLy8gIGIp
IGlmIGB2YWx1ZV90eXBlYCdzIG1vdmUgY29uc3RydWN0b3IgYWxsb2NhdGVzLCBpdCB1c2VzIHRo
ZSBzYW1lCi0gIC8vICAgICBhbGxvY2F0aW9uIGZ1bmN0aW9uIGFzIHRoZSBgSW5saW5lZFZlY3Rv
cmAncyBhbGxvY2F0b3IsIHNvIHRoZSBtb3ZlCi0gIC8vICAgICBjb25zdHJ1Y3RvciBpcyBub24t
dGhyb3dpbmcgaWYgdGhlIGFsbG9jYXRvciBpcyBub24tdGhyb3dpbmcgb3IKLSAgLy8gICAgIGB2
YWx1ZV90eXBlYCdzIG1vdmUgY29uc3RydWN0b3IgaXMgc3BlY2lmaWVkIGFzIGBub2V4Y2VwdGAu
Ci0gIElubGluZWRWZWN0b3IoSW5saW5lZFZlY3RvciYmIHYpIG5vZXhjZXB0KAotICAgICAgYWJz
bDo6YWxsb2NhdG9yX2lzX25vdGhyb3c8YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSB8fAotICAgICAg
c3RkOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTx2YWx1ZV90eXBlPjo6dmFsdWUpOwot
Ci0gIC8vIFRoaXMgbW92ZSBjb25zdHJ1Y3RvciBhbGxvY2F0ZXMgYW5kIGFsc28gbW92ZXMgdGhl
IHVuZGVybHlpbmcgb2JqZWN0cywgc28KLSAgLy8gaXRzIGBub2V4Y2VwdGAgc3BlY2lmaWNhdGlv
biBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGFsbG9jYXRpb24gY2FuIHRocm93Ci0gIC8vIGFuZCB3
aGV0aGVyIG1vdmluZyB0aGUgdW5kZXJseWluZyBvYmplY3RzIGNhbiB0aHJvdy4gQmFzZWQgb24g
dGhlIHNhbWUKLSAgLy8gYXNzdW1wdGlvbnMgYWJvdmUsIHRoZSBgbm9leGNlcHRgIHNwZWNpZmlj
YXRpb24gaXMgZG9taW5hdGVkIGJ5IHdoZXRoZXIgdGhlCi0gIC8vIGFsbG9jYXRpb24gY2FuIHRo
cm93IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBgdmFsdWVfdHlwZWAncyBtb3ZlIGNvbnN0cnVjdG9y
Ci0gIC8vIGlzIHNwZWNpZmllZCBhcyBgbm9leGNlcHRgLgotICBJbmxpbmVkVmVjdG9yKElubGlu
ZWRWZWN0b3ImJiB2LCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpIG5vZXhjZXB0KAotICAg
ICAgYWJzbDo6YWxsb2NhdG9yX2lzX25vdGhyb3c8YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSk7Ci0K
LSAgfklubGluZWRWZWN0b3IoKSB7IGNsZWFyKCk7IH0KLQotICBJbmxpbmVkVmVjdG9yJiBvcGVy
YXRvcj0oY29uc3QgSW5saW5lZFZlY3RvciYgdikgewotICAgIGlmICh0aGlzID09ICZ2KSB7Ci0g
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAgIC8vIE9wdGltaXplZCB0byBhdm9pZCByZWFs
bG9jYXRpb24uCi0gICAgLy8gUHJlZmVyIHJlYXNzaWdubWVudCB0byBjb3B5IGNvbnN0cnVjdGlv
biBmb3IgZWxlbWVudHMuCi0gICAgaWYgKHNpemUoKSA8IHYuc2l6ZSgpKSB7ICAvLyBncm93Ci0g
ICAgICByZXNlcnZlKHYuc2l6ZSgpKTsKLSAgICAgIHN0ZDo6Y29weSh2LmJlZ2luKCksIHYuYmVn
aW4oKSArIHNpemUoKSwgYmVnaW4oKSk7Ci0gICAgICBzdGQ6OmNvcHkodi5iZWdpbigpICsgc2l6
ZSgpLCB2LmVuZCgpLCBzdGQ6OmJhY2tfaW5zZXJ0ZXIoKnRoaXMpKTsKLSAgICB9IGVsc2UgeyAg
Ly8gbWF5YmUgc2hyaW5rCi0gICAgICBlcmFzZShiZWdpbigpICsgdi5zaXplKCksIGVuZCgpKTsK
LSAgICAgIHN0ZDo6Y29weSh2LmJlZ2luKCksIHYuZW5kKCksIGJlZ2luKCkpOworICAvLyBDcmVh
dGVzIGFuIGlubGluZWQgdmVjdG9yIGJ5IGNvcHlpbmcgdGhlIGNvbnRlbnRzIG9mIGBvdGhlcmAg
dXNpbmcgYGFsbG9jYC4KKyAgSW5saW5lZFZlY3Rvcihjb25zdCBJbmxpbmVkVmVjdG9yJiBvdGhl
ciwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKQorICAgICAgOiBzdG9yYWdlXyhhbGxvYykg
eworICAgIGlmIChJc01lbWNweU9rOjp2YWx1ZSAmJiAhb3RoZXIuc3RvcmFnZV8uR2V0SXNBbGxv
Y2F0ZWQoKSkgeworICAgICAgc3RvcmFnZV8uTWVtY3B5RnJvbShvdGhlci5zdG9yYWdlXyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHN0b3JhZ2VfLkluaXRpYWxpemUoSXRlcmF0b3JWYWx1ZUFkYXB0
ZXI8Y29uc3RfcG9pbnRlcj4ob3RoZXIuZGF0YSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3RoZXIuc2l6ZSgpKTsKICAgICB9Ci0gICAgcmV0dXJuICp0aGlzOwogICB9CiAKLSAgSW5s
aW5lZFZlY3RvciYgb3BlcmF0b3I9KElubGluZWRWZWN0b3ImJiB2KSB7Ci0gICAgaWYgKHRoaXMg
PT0gJnYpIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgaWYgKHYuYWxsb2NhdGVk
KCkpIHsKLSAgICAgIGNsZWFyKCk7Ci0gICAgICB0YWcoKS5zZXRfYWxsb2NhdGVkX3NpemUodi5z
aXplKCkpOwotICAgICAgaW5pdF9hbGxvY2F0aW9uKHYuYWxsb2NhdGlvbigpKTsKLSAgICAgIHYu
dGFnKCkgPSBUYWcoKTsKKyAgLy8gQ3JlYXRlcyBhbiBpbmxpbmVkIHZlY3RvciBieSBtb3Zpbmcg
aW4gdGhlIGNvbnRlbnRzIG9mIGBvdGhlcmAgd2l0aG91dAorICAvLyBhbGxvY2F0aW5nLiBJZiBg
b3RoZXJgIGNvbnRhaW5zIGFsbG9jYXRlZCBtZW1vcnksIHRoZSBuZXdseS1jcmVhdGVkIGlubGlu
ZWQKKyAgLy8gdmVjdG9yIHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhhdCBtZW1vcnkuIEhvd2V2
ZXIsIGlmIGBvdGhlcmAgZG9lcyBub3QKKyAgLy8gY29udGFpbiBhbGxvY2F0ZWQgbWVtb3J5LCB0
aGUgbmV3bHktY3JlYXRlZCBpbmxpbmVkIHZlY3RvciB3aWxsIHBlcmZvcm0KKyAgLy8gZWxlbWVu
dC13aXNlIG1vdmUgY29uc3RydWN0aW9uIG9mIHRoZSBjb250ZW50cyBvZiBgb3RoZXJgLgorICAv
LworICAvLyBOT1RFOiBzaW5jZSBubyBhbGxvY2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgdGhlIGlu
bGluZWQgdmVjdG9yIGluIGVpdGhlcgorICAvLyBjYXNlLCB0aGUgYG5vZXhjZXB0KC4uLilgIHNw
ZWNpZmljYXRpb24gZGVwZW5kcyBvbiB3aGV0aGVyIG1vdmluZyB0aGUKKyAgLy8gdW5kZXJseWlu
ZyBvYmplY3RzIGNhbiB0aHJvdy4gSXQgaXMgYXNzdW1lZCBhc3N1bWVkIHRoYXQuLi4KKyAgLy8g
IGEpIG1vdmUgY29uc3RydWN0b3JzIHNob3VsZCBvbmx5IHRocm93IGR1ZSB0byBhbGxvY2F0aW9u
IGZhaWx1cmUuCisgIC8vICBiKSBpZiBgdmFsdWVfdHlwZWAncyBtb3ZlIGNvbnN0cnVjdG9yIGFs
bG9jYXRlcywgaXQgdXNlcyB0aGUgc2FtZQorICAvLyAgICAgYWxsb2NhdGlvbiBmdW5jdGlvbiBh
cyB0aGUgaW5saW5lZCB2ZWN0b3IncyBhbGxvY2F0b3IuCisgIC8vIFRodXMsIHRoZSBtb3ZlIGNv
bnN0cnVjdG9yIGlzIG5vbi10aHJvd2luZyBpZiB0aGUgYWxsb2NhdG9yIGlzIG5vbi10aHJvd2lu
ZworICAvLyBvciBgdmFsdWVfdHlwZWAncyBtb3ZlIGNvbnN0cnVjdG9yIGlzIHNwZWNpZmllZCBh
cyBgbm9leGNlcHRgLgorICBJbmxpbmVkVmVjdG9yKElubGluZWRWZWN0b3ImJiBvdGhlcikgbm9l
eGNlcHQoCisgICAgICBhYnNsOjphbGxvY2F0b3JfaXNfbm90aHJvdzxhbGxvY2F0b3JfdHlwZT46
OnZhbHVlIHx8CisgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPHZhbHVl
X3R5cGU+Ojp2YWx1ZSkKKyAgICAgIDogc3RvcmFnZV8oKm90aGVyLnN0b3JhZ2VfLkdldEFsbG9j
UHRyKCkpIHsKKyAgICBpZiAoSXNNZW1jcHlPazo6dmFsdWUpIHsKKyAgICAgIHN0b3JhZ2VfLk1l
bWNweUZyb20ob3RoZXIuc3RvcmFnZV8pOworCisgICAgICBvdGhlci5zdG9yYWdlXy5TZXRJbmxp
bmVkU2l6ZSgwKTsKKyAgICB9IGVsc2UgaWYgKG90aGVyLnN0b3JhZ2VfLkdldElzQWxsb2NhdGVk
KCkpIHsKKyAgICAgIHN0b3JhZ2VfLlNldEFsbG9jYXRlZERhdGEob3RoZXIuc3RvcmFnZV8uR2V0
QWxsb2NhdGVkRGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5z
dG9yYWdlXy5HZXRBbGxvY2F0ZWRDYXBhY2l0eSgpKTsKKyAgICAgIHN0b3JhZ2VfLlNldEFsbG9j
YXRlZFNpemUob3RoZXIuc3RvcmFnZV8uR2V0U2l6ZSgpKTsKKworICAgICAgb3RoZXIuc3RvcmFn
ZV8uU2V0SW5saW5lZFNpemUoMCk7CiAgICAgfSBlbHNlIHsKLSAgICAgIGlmIChhbGxvY2F0ZWQo
KSkgY2xlYXIoKTsKLSAgICAgIC8vIEJvdGggYXJlIGlubGluZWQgbm93LgotICAgICAgaWYgKHNp
emUoKSA8IHYuc2l6ZSgpKSB7Ci0gICAgICAgIGF1dG8gbWlkID0gc3RkOjptYWtlX21vdmVfaXRl
cmF0b3Iodi5iZWdpbigpICsgc2l6ZSgpKTsKLSAgICAgICAgc3RkOjpjb3B5KHN0ZDo6bWFrZV9t
b3ZlX2l0ZXJhdG9yKHYuYmVnaW4oKSksIG1pZCwgYmVnaW4oKSk7Ci0gICAgICAgIFVuaW5pdGlh
bGl6ZWRDb3B5KG1pZCwgc3RkOjptYWtlX21vdmVfaXRlcmF0b3Iodi5lbmQoKSksIGVuZCgpKTsK
LSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gbmV3X2VuZCA9IHN0ZDo6Y29weShzdGQ6Om1h
a2VfbW92ZV9pdGVyYXRvcih2LmJlZ2luKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYWtlX21vdmVfaXRlcmF0b3Iodi5lbmQoKSksIGJlZ2luKCkpOwotICAgICAg
ICBEZXN0cm95KG5ld19lbmQsIGVuZCgpKTsKLSAgICAgIH0KLSAgICAgIHRhZygpLnNldF9pbmxp
bmVfc2l6ZSh2LnNpemUoKSk7Ci0gICAgfQotICAgIHJldHVybiAqdGhpczsKLSAgfQorICAgICAg
SXRlcmF0b3JWYWx1ZUFkYXB0ZXI8TW92ZUl0ZXJhdG9yPiBvdGhlcl92YWx1ZXMoCisgICAgICAg
ICAgTW92ZUl0ZXJhdG9yKG90aGVyLnN0b3JhZ2VfLkdldElubGluZWREYXRhKCkpKTsKIAotICBJ
bmxpbmVkVmVjdG9yJiBvcGVyYXRvcj0oc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+
IGluaXQpIHsKLSAgICBBc3NpZ25SYW5nZShpbml0LmJlZ2luKCksIGluaXQuZW5kKCkpOwotICAg
IHJldHVybiAqdGhpczsKKyAgICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpDb25zdHJ1Y3RF
bGVtZW50cygKKyAgICAgICAgICBzdG9yYWdlXy5HZXRBbGxvY1B0cigpLCBzdG9yYWdlXy5HZXRJ
bmxpbmVkRGF0YSgpLCAmb3RoZXJfdmFsdWVzLAorICAgICAgICAgIG90aGVyLnN0b3JhZ2VfLkdl
dFNpemUoKSk7CisKKyAgICAgIHN0b3JhZ2VfLlNldElubGluZWRTaXplKG90aGVyLnN0b3JhZ2Vf
LkdldFNpemUoKSk7CisgICAgfQogICB9CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6YXNzaWduKCkK
KyAgLy8gQ3JlYXRlcyBhbiBpbmxpbmVkIHZlY3RvciBieSBtb3ZpbmcgaW4gdGhlIGNvbnRlbnRz
IG9mIGBvdGhlcmAgd2l0aCBhIGNvcHkKKyAgLy8gb2YgYGFsbG9jYC4KICAgLy8KLSAgLy8gUmVw
bGFjZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBpbmxpbmVkIHZlY3RvciB3aXRoIGNvcGllcyBvZiB0
aG9zZSBpbiB0aGUKLSAgLy8gaXRlcmF0b3IgcmFuZ2UgW2ZpcnN0LCBsYXN0KS4KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+Ci0gIHZvaWQgYXNzaWduKAotICAgICAgSW5wdXRJ
dGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LAotICAgICAgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8IXN0ZDo6aXNfaW50ZWdyYWw8SW5wdXRJdGVyYXRvcj46OnZhbHVlPjo6dHlwZSog
PQotICAgICAgICAgIG51bGxwdHIpIHsKLSAgICBBc3NpZ25SYW5nZShmaXJzdCwgbGFzdCk7Ci0g
IH0KKyAgLy8gTk9URTogaWYgYG90aGVyYCdzIGFsbG9jYXRvciBpcyBub3QgZXF1YWwgdG8gYGFs
bG9jYCwgZXZlbiBpZiBgb3RoZXJgCisgIC8vIGNvbnRhaW5zIGFsbG9jYXRlZCBtZW1vcnksIHRo
aXMgbW92ZSBjb25zdHJ1Y3RvciB3aWxsIHN0aWxsIGFsbG9jYXRlLiBTaW5jZQorICAvLyBhbGxv
Y2F0aW9uIGlzIHBlcmZvcm1lZCwgdGhpcyBjb25zdHJ1Y3RvciBjYW4gb25seSBiZSBgbm9leGNl
cHRgIGlmIHRoZQorICAvLyBzcGVjaWZpZWQgYWxsb2NhdG9yIGlzIGFsc28gYG5vZXhjZXB0YC4K
KyAgSW5saW5lZFZlY3RvcihJbmxpbmVkVmVjdG9yJiYgb3RoZXIsIGNvbnN0IGFsbG9jYXRvcl90
eXBlJiBhbGxvYykgbm9leGNlcHQoCisgICAgICBhYnNsOjphbGxvY2F0b3JfaXNfbm90aHJvdzxh
bGxvY2F0b3JfdHlwZT46OnZhbHVlKQorICAgICAgOiBzdG9yYWdlXyhhbGxvYykgeworICAgIGlm
IChJc01lbWNweU9rOjp2YWx1ZSkgeworICAgICAgc3RvcmFnZV8uTWVtY3B5RnJvbShvdGhlci5z
dG9yYWdlXyk7CiAKLSAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6OmFzc2lnbigpYCB0
byB0YWtlIHZhbHVlcyBmcm9tIGVsZW1lbnRzIG9mIGFuCi0gIC8vIGluaXRpYWxpemVyIGxpc3QK
LSAgdm9pZCBhc3NpZ24oc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGluaXQpIHsK
LSAgICBBc3NpZ25SYW5nZShpbml0LmJlZ2luKCksIGluaXQuZW5kKCkpOwotICB9CisgICAgICBv
dGhlci5zdG9yYWdlXy5TZXRJbmxpbmVkU2l6ZSgwKTsKKyAgICB9IGVsc2UgaWYgKCgqc3RvcmFn
ZV8uR2V0QWxsb2NQdHIoKSA9PSAqb3RoZXIuc3RvcmFnZV8uR2V0QWxsb2NQdHIoKSkgJiYKKyAg
ICAgICAgICAgICAgIG90aGVyLnN0b3JhZ2VfLkdldElzQWxsb2NhdGVkKCkpIHsKKyAgICAgIHN0
b3JhZ2VfLlNldEFsbG9jYXRlZERhdGEob3RoZXIuc3RvcmFnZV8uR2V0QWxsb2NhdGVkRGF0YSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5zdG9yYWdlXy5HZXRBbGxv
Y2F0ZWRDYXBhY2l0eSgpKTsKKyAgICAgIHN0b3JhZ2VfLlNldEFsbG9jYXRlZFNpemUob3RoZXIu
c3RvcmFnZV8uR2V0U2l6ZSgpKTsKIAotICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6
YXNzaWduKClgIHRvIHJlcGxhY2UgdGhlIGZpcnN0IGBuYCBlbGVtZW50cyBvZgotICAvLyB0aGUg
aW5saW5lZCB2ZWN0b3Igd2l0aCBgZWxlbWAgdmFsdWVzLgotICB2b2lkIGFzc2lnbihzaXplX3R5
cGUgbiwgY29uc3QgdmFsdWVfdHlwZSYgZWxlbSkgewotICAgIGlmIChuIDw9IHNpemUoKSkgeyAg
Ly8gUG9zc2libHkgc2hyaW5rCi0gICAgICBzdGQ6OmZpbGxfbihiZWdpbigpLCBuLCBlbGVtKTsK
LSAgICAgIGVyYXNlKGJlZ2luKCkgKyBuLCBlbmQoKSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQot
ICAgIC8vIEdyb3cKLSAgICByZXNlcnZlKG4pOwotICAgIHN0ZDo6ZmlsbF9uKGJlZ2luKCksIHNp
emUoKSwgZWxlbSk7Ci0gICAgaWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgICBVbmluaXRpYWxpemVk
RmlsbChhbGxvY2F0ZWRfc3BhY2UoKSArIHNpemUoKSwgYWxsb2NhdGVkX3NwYWNlKCkgKyBuLAot
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbSk7Ci0gICAgICB0YWcoKS5zZXRfYWxsb2NhdGVk
X3NpemUobik7CisgICAgICBvdGhlci5zdG9yYWdlXy5TZXRJbmxpbmVkU2l6ZSgwKTsKICAgICB9
IGVsc2UgewotICAgICAgVW5pbml0aWFsaXplZEZpbGwoaW5saW5lZF9zcGFjZSgpICsgc2l6ZSgp
LCBpbmxpbmVkX3NwYWNlKCkgKyBuLCBlbGVtKTsKLSAgICAgIHRhZygpLnNldF9pbmxpbmVfc2l6
ZShuKTsKKyAgICAgIHN0b3JhZ2VfLkluaXRpYWxpemUoCisgICAgICAgICAgSXRlcmF0b3JWYWx1
ZUFkYXB0ZXI8TW92ZUl0ZXJhdG9yPihNb3ZlSXRlcmF0b3Iob3RoZXIuZGF0YSgpKSksCisgICAg
ICAgICAgb3RoZXIuc2l6ZSgpKTsKICAgICB9CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpz
aXplKCkKLSAgLy8KLSAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBp
bmxpbmVkIHZlY3Rvci4KLSAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVy
biB0YWcoKS5zaXplKCk7IH0KKyAgfklubGluZWRWZWN0b3IoKSB7fQorCisgIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorICAvLyBJbmxpbmVkVmVjdG9yIE1lbWJlciBBY2Nlc3NvcnMKKyAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6ZW1wdHkoKQorICAvLyBgSW5s
aW5lZFZlY3Rvcjo6ZW1wdHkoKWAKICAgLy8KLSAgLy8gQ2hlY2tzIGlmIHRoZSBpbmxpbmVkIHZl
Y3RvciBoYXMgbm8gZWxlbWVudHMuCi0gIGJvb2wgZW1wdHkoKSBjb25zdCBub2V4Y2VwdCB7IHJl
dHVybiAoc2l6ZSgpID09IDApOyB9CisgIC8vIFJldHVybnMgd2hldGhlciB0aGUgaW5saW5lZCB2
ZWN0b3IgY29udGFpbnMgbm8gZWxlbWVudHMuCisgIGJvb2wgZW1wdHkoKSBjb25zdCBub2V4Y2Vw
dCB7IHJldHVybiAhc2l6ZSgpOyB9CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6Y2FwYWNpdHkoKQor
ICAvLyBgSW5saW5lZFZlY3Rvcjo6c2l6ZSgpYAogICAvLwotICAvLyBSZXR1cm5zIHRoZSBudW1i
ZXIgb2YgZWxlbWVudHMgdGhhdCBjYW4gYmUgc3RvcmVkIGluIGFuIGlubGluZWQgdmVjdG9yCi0g
IC8vIHdpdGhvdXQgcmVxdWlyaW5nIGEgcmVhbGxvY2F0aW9uIG9mIHVuZGVybHlpbmcgbWVtb3J5
LiBOb3RlIHRoYXQgZm9yCi0gIC8vIG1vc3QgaW5saW5lZCB2ZWN0b3JzLCBgY2FwYWNpdHkoKWAg
c2hvdWxkIGVxdWFsIGl0cyBpbml0aWFsIHNpemUgYE5gOyBmb3IKLSAgLy8gaW5saW5lZCB2ZWN0
b3JzIHdoaWNoIGV4Y2VlZCB0aGlzIGNhcGFjaXR5LCB0aGV5IHdpbGwgbm8gbG9uZ2VyIGJlIGlu
bGluZWQsCi0gIC8vIGFuZCBgY2FwYWNpdHkoKWAgd2lsbCBlcXVhbCBpdHMgY2FwYWNpdHkgb24g
dGhlIGFsbG9jYXRlZCBoZWFwLgotICBzaXplX3R5cGUgY2FwYWNpdHkoKSBjb25zdCBub2V4Y2Vw
dCB7Ci0gICAgcmV0dXJuIGFsbG9jYXRlZCgpID8gYWxsb2NhdGlvbigpLmNhcGFjaXR5KCkgOiBO
OwotICB9CisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgaW5saW5l
ZCB2ZWN0b3IuCisgIHNpemVfdHlwZSBzaXplKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gc3Rv
cmFnZV8uR2V0U2l6ZSgpOyB9CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6bWF4X3NpemUoKQorICAv
LyBgSW5saW5lZFZlY3Rvcjo6bWF4X3NpemUoKWAKICAgLy8KLSAgLy8gUmV0dXJucyB0aGUgbWF4
aW11bSBudW1iZXIgb2YgZWxlbWVudHMgdGhlIHZlY3RvciBjYW4gaG9sZC4KKyAgLy8gUmV0dXJu
cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMgdGhlIGlubGluZWQgdmVjdG9yIGNhbiBo
b2xkLgogICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCBub2V4Y2VwdCB7CiAgICAgLy8gT25l
IGJpdCBvZiB0aGUgc2l6ZSBzdG9yYWdlIGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUg
aW5saW5lZAotICAgIC8vIHZlY3RvciBpcyBhbGxvY2F0ZWQ7IGFzIGEgcmVzdWx0LCB0aGUgbWF4
aW11bSBzaXplIG9mIHRoZSBjb250YWluZXIgdGhhdAotICAgIC8vIHdlIGNhbiBleHByZXNzIGlz
IGhhbGYgb2YgdGhlIG1heCBmb3Igb3VyIHNpemUgdHlwZS4KLSAgICByZXR1cm4gc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3R5cGU+OjptYXgoKSAvIDI7CisgICAgLy8gdmVjdG9yIGNvbnRhaW5z
IGFsbG9jYXRlZCBtZW1vcnkuIEFzIGEgcmVzdWx0LCB0aGUgbWF4aW11bSBzaXplIHRoYXQgdGhl
CisgICAgLy8gaW5saW5lZCB2ZWN0b3IgY2FuIGV4cHJlc3MgaXMgaGFsZiBvZiB0aGUgbWF4IGZv
ciBgc2l6ZV90eXBlYC4KKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90eXBl
Pjo6bWF4KSgpIC8gMjsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6OmRhdGEoKQorICAvLyBg
SW5saW5lZFZlY3Rvcjo6Y2FwYWNpdHkoKWAKICAgLy8KLSAgLy8gUmV0dXJucyBhIGNvbnN0IFQq
IHBvaW50ZXIgdG8gZWxlbWVudHMgb2YgdGhlIGlubGluZWQgdmVjdG9yLiBUaGlzIHBvaW50ZXIK
LSAgLy8gY2FuIGJlIHVzZWQgdG8gYWNjZXNzIChidXQgbm90IG1vZGlmeSkgdGhlIGNvbnRhaW5l
ZCBlbGVtZW50cy4KLSAgLy8gT25seSByZXN1bHRzIHdpdGhpbiB0aGUgcmFuZ2UgYFswLHNpemUo
KSlgIGFyZSBkZWZpbmVkLgotICBjb25zdF9wb2ludGVyIGRhdGEoKSBjb25zdCBub2V4Y2VwdCB7
Ci0gICAgcmV0dXJuIGFsbG9jYXRlZCgpID8gYWxsb2NhdGVkX3NwYWNlKCkgOiBpbmxpbmVkX3Nw
YWNlKCk7CisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGNvdWxkIGJl
IHN0b3JlZCBpbiB0aGUgaW5saW5lZCB2ZWN0b3IKKyAgLy8gd2l0aG91dCByZXF1aXJpbmcgYSBy
ZWFsbG9jYXRpb24uCisgIC8vCisgIC8vIE5PVEU6IGZvciBtb3N0IGlubGluZWQgdmVjdG9ycywg
YGNhcGFjaXR5KClgIHNob3VsZCBiZSBlcXVhbCB0byB0aGUKKyAgLy8gdGVtcGxhdGUgcGFyYW1l
dGVyIGBOYC4gRm9yIGlubGluZWQgdmVjdG9ycyB3aGljaCBleGNlZWQgdGhpcyBjYXBhY2l0eSwK
KyAgLy8gdGhleSB3aWxsIG5vIGxvbmdlciBiZSBpbmxpbmVkIGFuZCBgY2FwYWNpdHkoKWAgd2ls
bCBlcXVhbCB0aGUgY2FwYWN0aXR5IG9mCisgIC8vIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LgorICBz
aXplX3R5cGUgY2FwYWNpdHkoKSBjb25zdCBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHN0b3JhZ2Vf
LkdldElzQWxsb2NhdGVkKCkgPyBzdG9yYWdlXy5HZXRBbGxvY2F0ZWRDYXBhY2l0eSgpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzdG9yYWdlXy5HZXRJbmxpbmVkQ2Fw
YWNpdHkoKTsKICAgfQogCi0gIC8vIE92ZXJsb2FkIG9mIElubGluZWRWZWN0b3I6OmRhdGEoKSB0
byByZXR1cm4gYSBUKiBwb2ludGVyIHRvIGVsZW1lbnRzIG9mIHRoZQotICAvLyBpbmxpbmVkIHZl
Y3Rvci4gVGhpcyBwb2ludGVyIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBhbmQgbW9kaWZ5IHRoZSBj
b250YWluZWQKLSAgLy8gZWxlbWVudHMuCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpkYXRhKClgCisg
IC8vCisgIC8vIFJldHVybnMgYSBgcG9pbnRlcmAgdG8gdGhlIGVsZW1lbnRzIG9mIHRoZSBpbmxp
bmVkIHZlY3Rvci4gVGhpcyBwb2ludGVyCisgIC8vIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBhbmQg
bW9kaWZ5IHRoZSBjb250YWluZWQgZWxlbWVudHMuCisgIC8vCisgIC8vIE5PVEU6IG9ubHkgZWxl
bWVudHMgd2l0aGluIFtgZGF0YSgpYCwgYGRhdGEoKSArIHNpemUoKWApIGFyZSB2YWxpZC4KICAg
cG9pbnRlciBkYXRhKCkgbm9leGNlcHQgewotICAgIHJldHVybiBhbGxvY2F0ZWQoKSA/IGFsbG9j
YXRlZF9zcGFjZSgpIDogaW5saW5lZF9zcGFjZSgpOworICAgIHJldHVybiBzdG9yYWdlXy5HZXRJ
c0FsbG9jYXRlZCgpID8gc3RvcmFnZV8uR2V0QWxsb2NhdGVkRGF0YSgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBzdG9yYWdlXy5HZXRJbmxpbmVkRGF0YSgpOwogICB9
CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6Y2xlYXIoKQorICAvLyBPdmVybG9hZCBvZiBgSW5saW5l
ZFZlY3Rvcjo6ZGF0YSgpYCB0aGF0IHJldHVybnMgYSBgY29uc3RfcG9pbnRlcmAgdG8gdGhlCisg
IC8vIGVsZW1lbnRzIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4gVGhpcyBwb2ludGVyIGNhbiBiZSB1
c2VkIHRvIGFjY2VzcyBidXQgbm90CisgIC8vIG1vZGlmeSB0aGUgY29udGFpbmVkIGVsZW1lbnRz
LgogICAvLwotICAvLyBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBpbmxpbmVkIHZlY3Rv
ci4KLSAgdm9pZCBjbGVhcigpIG5vZXhjZXB0IHsKLSAgICBzaXplX3R5cGUgcyA9IHNpemUoKTsK
LSAgICBpZiAoYWxsb2NhdGVkKCkpIHsKLSAgICAgIERlc3Ryb3koYWxsb2NhdGVkX3NwYWNlKCks
IGFsbG9jYXRlZF9zcGFjZSgpICsgcyk7Ci0gICAgICBhbGxvY2F0aW9uKCkuRGVhbGxvYyhhbGxv
Y2F0b3IoKSk7Ci0gICAgfSBlbHNlIGlmIChzICE9IDApIHsgIC8vIGRvIG5vdGhpbmcgZm9yIGVt
cHR5IHZlY3RvcnMKLSAgICAgIERlc3Ryb3koaW5saW5lZF9zcGFjZSgpLCBpbmxpbmVkX3NwYWNl
KCkgKyBzKTsKLSAgICB9Ci0gICAgdGFnKCkgPSBUYWcoKTsKKyAgLy8gTk9URTogb25seSBlbGVt
ZW50cyB3aXRoaW4gW2BkYXRhKClgLCBgZGF0YSgpICsgc2l6ZSgpYCkgYXJlIHZhbGlkLgorICBj
b25zdF9wb2ludGVyIGRhdGEoKSBjb25zdCBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHN0b3JhZ2Vf
LkdldElzQWxsb2NhdGVkKCkgPyBzdG9yYWdlXy5HZXRBbGxvY2F0ZWREYXRhKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0b3JhZ2VfLkdldElubGluZWREYXRhKCk7
CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjphdCgpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpv
cGVyYXRvcltdKC4uLilgCiAgIC8vCi0gIC8vIFJldHVybnMgdGhlIGl0aCBlbGVtZW50IG9mIGFu
IGlubGluZWQgdmVjdG9yLgotICBjb25zdCB2YWx1ZV90eXBlJiBhdChzaXplX3R5cGUgaSkgY29u
c3QgewotICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoaSA+PSBzaXplKCkpKSB7Ci0gICAgICBi
YXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoCi0gICAgICAgICAgIklubGluZWRWZWN0
b3I6OmF0IGZhaWxlZCBib3VuZHMgY2hlY2siKTsKLSAgICB9CisgIC8vIFJldHVybnMgYSBgcmVm
ZXJlbmNlYCB0byB0aGUgYGlgdGggZWxlbWVudCBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCisgIHJl
ZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBpKSB7CisgICAgYXNzZXJ0KGkgPCBzaXplKCkp
OworCiAgICAgcmV0dXJuIGRhdGEoKVtpXTsKICAgfQogCi0gIC8vIElubGluZWRWZWN0b3I6Om9w
ZXJhdG9yW10KLSAgLy8KLSAgLy8gUmV0dXJucyB0aGUgaXRoIGVsZW1lbnQgb2YgYW4gaW5saW5l
ZCB2ZWN0b3IgdXNpbmcgdGhlIGFycmF5IG9wZXJhdG9yLgotICBjb25zdCB2YWx1ZV90eXBlJiBv
cGVyYXRvcltdKHNpemVfdHlwZSBpKSBjb25zdCB7CisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVk
VmVjdG9yOjpvcGVyYXRvcltdKC4uLilgIHRoYXQgcmV0dXJucyBhCisgIC8vIGBjb25zdF9yZWZl
cmVuY2VgIHRvIHRoZSBgaWB0aCBlbGVtZW50IG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgY29u
c3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIGkpIGNvbnN0IHsKICAgICBhc3NlcnQo
aSA8IHNpemUoKSk7CisKICAgICByZXR1cm4gZGF0YSgpW2ldOwogICB9CiAKLSAgLy8gT3Zlcmxv
YWQgb2YgSW5saW5lZFZlY3Rvcjo6YXQoKSB0byByZXR1cm4gdGhlIGl0aCBlbGVtZW50IG9mIGFu
IGlubGluZWQKLSAgLy8gdmVjdG9yLgotICB2YWx1ZV90eXBlJiBhdChzaXplX3R5cGUgaSkgewot
ICAgIGlmIChpID49IHNpemUoKSkgeworICAvLyBgSW5saW5lZFZlY3Rvcjo6YXQoLi4uKWAKKyAg
Ly8KKyAgLy8gUmV0dXJucyBhIGByZWZlcmVuY2VgIHRvIHRoZSBgaWB0aCBlbGVtZW50IG9mIHRo
ZSBpbmxpbmVkIHZlY3Rvci4KKyAgLy8KKyAgLy8gTk9URTogaWYgYGlgIGlzIG5vdCB3aXRoaW4g
dGhlIHJlcXVpcmVkIHJhbmdlIG9mIGBJbmxpbmVkVmVjdG9yOjphdCguLi4pYCwKKyAgLy8gaW4g
Ym90aCBkZWJ1ZyBhbmQgbm9uLWRlYnVnIGJ1aWxkcywgYHN0ZDo6b3V0X29mX3JhbmdlYCB3aWxs
IGJlIHRocm93bi4KKyAgcmVmZXJlbmNlIGF0KHNpemVfdHlwZSBpKSB7CisgICAgaWYgKEFCU0xf
UFJFRElDVF9GQUxTRShpID49IHNpemUoKSkpIHsKICAgICAgIGJhc2VfaW50ZXJuYWw6OlRocm93
U3RkT3V0T2ZSYW5nZSgKLSAgICAgICAgICAiSW5saW5lZFZlY3Rvcjo6YXQgZmFpbGVkIGJvdW5k
cyBjaGVjayIpOworICAgICAgICAgICJgSW5saW5lZFZlY3Rvcjo6YXQoc2l6ZV90eXBlKWAgZmFp
bGVkIGJvdW5kcyBjaGVjayIpOwogICAgIH0KLSAgICByZXR1cm4gZGF0YSgpW2ldOwotICB9CiAK
LSAgLy8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6b3BlcmF0b3JbXSB0byByZXR1cm4gdGhl
IGl0aCBlbGVtZW50IG9mIGFuCi0gIC8vIGlubGluZWQgdmVjdG9yLgotICB2YWx1ZV90eXBlJiBv
cGVyYXRvcltdKHNpemVfdHlwZSBpKSB7Ci0gICAgYXNzZXJ0KGkgPCBzaXplKCkpOwogICAgIHJl
dHVybiBkYXRhKClbaV07CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpiYWNrKCkKKyAgLy8g
T3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6OmF0KC4uLilgIHRoYXQgcmV0dXJucyBhIGBjb25z
dF9yZWZlcmVuY2VgIHRvCisgIC8vIHRoZSBgaWB0aCBlbGVtZW50IG9mIHRoZSBpbmxpbmVkIHZl
Y3Rvci4KICAgLy8KLSAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgbGFzdCBlbGVtZW50
IG9mIGFuIGlubGluZWQgdmVjdG9yLgotICB2YWx1ZV90eXBlJiBiYWNrKCkgewotICAgIGFzc2Vy
dCghZW1wdHkoKSk7Ci0gICAgcmV0dXJuIGF0KHNpemUoKSAtIDEpOwotICB9CisgIC8vIE5PVEU6
IGlmIGBpYCBpcyBub3Qgd2l0aGluIHRoZSByZXF1aXJlZCByYW5nZSBvZiBgSW5saW5lZFZlY3Rv
cjo6YXQoLi4uKWAsCisgIC8vIGluIGJvdGggZGVidWcgYW5kIG5vbi1kZWJ1ZyBidWlsZHMsIGBz
dGQ6Om91dF9vZl9yYW5nZWAgd2lsbCBiZSB0aHJvd24uCisgIGNvbnN0X3JlZmVyZW5jZSBhdChz
aXplX3R5cGUgaSkgY29uc3QgeworICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoaSA+PSBzaXpl
KCkpKSB7CisgICAgICBiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoCisgICAgICAg
ICAgImBJbmxpbmVkVmVjdG9yOjphdChzaXplX3R5cGUpIGNvbnN0YCBmYWlsZWQgYm91bmRzIGNo
ZWNrIik7CisgICAgfQogCi0gIC8vIE92ZXJsb2FkIG9mIElubGluZWRWZWN0b3I6OmJhY2soKSBy
ZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBsYXN0IGVsZW1lbnQKLSAgLy8gb2YgYW4gaW5saW5l
ZCB2ZWN0b3Igb2YgY29uc3QgdmFsdWVzLgotICBjb25zdCB2YWx1ZV90eXBlJiBiYWNrKCkgY29u
c3QgewotICAgIGFzc2VydCghZW1wdHkoKSk7Ci0gICAgcmV0dXJuIGF0KHNpemUoKSAtIDEpOwor
ICAgIHJldHVybiBkYXRhKClbaV07CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpmcm9udCgp
CisgIC8vIGBJbmxpbmVkVmVjdG9yOjpmcm9udCgpYAogICAvLwotICAvLyBSZXR1cm5zIGEgcmVm
ZXJlbmNlIHRvIHRoZSBmaXJzdCBlbGVtZW50IG9mIGFuIGlubGluZWQgdmVjdG9yLgotICB2YWx1
ZV90eXBlJiBmcm9udCgpIHsKKyAgLy8gUmV0dXJucyBhIGByZWZlcmVuY2VgIHRvIHRoZSBmaXJz
dCBlbGVtZW50IG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgcmVmZXJlbmNlIGZyb250KCkgewog
ICAgIGFzc2VydCghZW1wdHkoKSk7CisKICAgICByZXR1cm4gYXQoMCk7CiAgIH0KIAotICAvLyBP
dmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjpmcm9udCgpIHJldHVybnMgYSByZWZlcmVuY2UgdG8g
dGhlIGZpcnN0IGVsZW1lbnQKLSAgLy8gb2YgYW4gaW5saW5lZCB2ZWN0b3Igb2YgY29uc3QgdmFs
dWVzLgotICBjb25zdCB2YWx1ZV90eXBlJiBmcm9udCgpIGNvbnN0IHsKKyAgLy8gT3ZlcmxvYWQg
b2YgYElubGluZWRWZWN0b3I6OmZyb250KClgIHRoYXQgcmV0dXJucyBhIGBjb25zdF9yZWZlcmVu
Y2VgIHRvCisgIC8vIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAg
Y29uc3RfcmVmZXJlbmNlIGZyb250KCkgY29uc3QgewogICAgIGFzc2VydCghZW1wdHkoKSk7CisK
ICAgICByZXR1cm4gYXQoMCk7CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjplbXBsYWNlX2Jh
Y2soKQotICAvLwotICAvLyBDb25zdHJ1Y3RzIGFuZCBhcHBlbmRzIGFuIG9iamVjdCB0byB0aGUg
aW5saW5lZCB2ZWN0b3IuCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpiYWNrKClgCiAgIC8vCi0gIC8v
IFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQuCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgotICB2YWx1ZV90eXBlJiBlbXBsYWNlX2JhY2soQXJncyYmLi4u
IGFyZ3MpIHsKLSAgICBzaXplX3R5cGUgcyA9IHNpemUoKTsKLSAgICBhc3NlcnQocyA8PSBjYXBh
Y2l0eSgpKTsKLSAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHMgPT0gY2FwYWNpdHkoKSkpIHsK
LSAgICAgIHJldHVybiBHcm93QW5kRW1wbGFjZUJhY2soc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKLSAgICB9Ci0gICAgYXNzZXJ0KHMgPCBjYXBhY2l0eSgpKTsKKyAgLy8gUmV0dXJucyBh
IGByZWZlcmVuY2VgIHRvIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgor
ICByZWZlcmVuY2UgYmFjaygpIHsKKyAgICBhc3NlcnQoIWVtcHR5KCkpOwogCi0gICAgdmFsdWVf
dHlwZSogc3BhY2U7Ci0gICAgaWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgICB0YWcoKS5zZXRfYWxs
b2NhdGVkX3NpemUocyArIDEpOwotICAgICAgc3BhY2UgPSBhbGxvY2F0ZWRfc3BhY2UoKTsKLSAg
ICB9IGVsc2UgewotICAgICAgdGFnKCkuc2V0X2lubGluZV9zaXplKHMgKyAxKTsKLSAgICAgIHNw
YWNlID0gaW5saW5lZF9zcGFjZSgpOwotICAgIH0KLSAgICByZXR1cm4gQ29uc3RydWN0KHNwYWNl
ICsgcywgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICByZXR1cm4gYXQoc2l6ZSgp
IC0gMSk7CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpwdXNoX2JhY2soKQotICAvLwotICAv
LyBBcHBlbmRzIGEgY29uc3QgZWxlbWVudCB0byB0aGUgaW5saW5lZCB2ZWN0b3IuCi0gIHZvaWQg
cHVzaF9iYWNrKGNvbnN0IHZhbHVlX3R5cGUmIHQpIHsgZW1wbGFjZV9iYWNrKHQpOyB9Ci0KLSAg
Ly8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6cHVzaF9iYWNrKCkgdG8gYXBwZW5kIGEgbW92
ZS1vbmx5IGVsZW1lbnQgdG8gdGhlCi0gIC8vIGlubGluZWQgdmVjdG9yLgotICB2b2lkIHB1c2hf
YmFjayh2YWx1ZV90eXBlJiYgdCkgeyBlbXBsYWNlX2JhY2soc3RkOjptb3ZlKHQpKTsgfQotCi0g
IC8vIElubGluZWRWZWN0b3I6OnBvcF9iYWNrKCkKLSAgLy8KLSAgLy8gUmVtb3ZlcyB0aGUgbGFz
dCBlbGVtZW50ICh3aGljaCBpcyBkZXN0cm95ZWQpIGluIHRoZSBpbmxpbmVkIHZlY3Rvci4KLSAg
dm9pZCBwb3BfYmFjaygpIHsKKyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6OmJhY2so
KWAgdGhhdCByZXR1cm5zIGEgYGNvbnN0X3JlZmVyZW5jZWAgdG8gdGhlCisgIC8vIGxhc3QgZWxl
bWVudCBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCisgIGNvbnN0X3JlZmVyZW5jZSBiYWNrKCkgY29u
c3QgewogICAgIGFzc2VydCghZW1wdHkoKSk7Ci0gICAgc2l6ZV90eXBlIHMgPSBzaXplKCk7Ci0g
ICAgaWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgICBEZXN0cm95KGFsbG9jYXRlZF9zcGFjZSgpICsg
cyAtIDEsIGFsbG9jYXRlZF9zcGFjZSgpICsgcyk7Ci0gICAgICB0YWcoKS5zZXRfYWxsb2NhdGVk
X3NpemUocyAtIDEpOwotICAgIH0gZWxzZSB7Ci0gICAgICBEZXN0cm95KGlubGluZWRfc3BhY2Uo
KSArIHMgLSAxLCBpbmxpbmVkX3NwYWNlKCkgKyBzKTsKLSAgICAgIHRhZygpLnNldF9pbmxpbmVf
c2l6ZShzIC0gMSk7Ci0gICAgfQotICB9Ci0KLSAgLy8gSW5saW5lZFZlY3Rvcjo6cmVzaXplKCkK
LSAgLy8KLSAgLy8gUmVzaXplcyB0aGUgaW5saW5lZCB2ZWN0b3IgdG8gY29udGFpbiBgbmAgZWxl
bWVudHMuIElmIGBuYCBpcyBzbWFsbGVyIHRoYW4KLSAgLy8gdGhlIGlubGluZWQgdmVjdG9yJ3Mg
Y3VycmVudCBzaXplLCBleHRyYSBlbGVtZW50cyBhcmUgZGVzdHJveWVkLiBJZiBgbmAgaXMKLSAg
Ly8gbGFyZ2VyIHRoYW4gdGhlIGluaXRpYWwgc2l6ZSwgbmV3IGVsZW1lbnRzIGFyZSB2YWx1ZS1p
bml0aWFsaXplZC4KLSAgdm9pZCByZXNpemUoc2l6ZV90eXBlIG4pOwogCi0gIC8vIE92ZXJsb2Fk
IG9mIElubGluZWRWZWN0b3I6OnJlc2l6ZSgpIHRvIHJlc2l6ZSB0aGUgaW5saW5lZCB2ZWN0b3Ig
dG8gY29udGFpbgotICAvLyBgbmAgZWxlbWVudHMuIElmIGBuYCBpcyBsYXJnZXIgdGhhbiB0aGUg
Y3VycmVudCBzaXplLCBlbm91Z2ggY29waWVzIG9mCi0gIC8vIGBlbGVtYCBhcmUgYXBwZW5kZWQg
dG8gaW5jcmVhc2UgaXRzIHNpemUgdG8gYG5gLgotICB2b2lkIHJlc2l6ZShzaXplX3R5cGUgbiwg
Y29uc3QgdmFsdWVfdHlwZSYgZWxlbSk7CisgICAgcmV0dXJuIGF0KHNpemUoKSAtIDEpOworICB9
CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6YmVnaW4oKQorICAvLyBgSW5saW5lZFZlY3Rvcjo6YmVn
aW4oKWAKICAgLy8KLSAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9m
IHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgLy8gUmV0dXJucyBhbiBgaXRlcmF0b3JgIHRvIHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIGlubGluZWQgdmVjdG9yLgogICBpdGVyYXRvciBiZWdpbigpIG5vZXhj
ZXB0IHsgcmV0dXJuIGRhdGEoKTsgfQogCi0gIC8vIE92ZXJsb2FkIG9mIElubGluZWRWZWN0b3I6
OmJlZ2luKCkgZm9yIHJldHVybmluZyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZQotICAvLyBiZWdp
bm5pbmcgb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZl
Y3Rvcjo6YmVnaW4oKWAgdGhhdCByZXR1cm5zIGEgYGNvbnN0X2l0ZXJhdG9yYCB0bworICAvLyB0
aGUgYmVnaW5uaW5nIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KICAgY29uc3RfaXRlcmF0b3IgYmVn
aW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBkYXRhKCk7IH0KIAotICAvLyBJbmxpbmVkVmVj
dG9yOjpjYmVnaW4oKQorICAvLyBgSW5saW5lZFZlY3Rvcjo6ZW5kKClgCiAgIC8vCi0gIC8vIFJl
dHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbmxpbmVkIHZl
Y3Rvci4KLSAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4g
YmVnaW4oKTsgfQotCi0gIC8vIElubGluZWRWZWN0b3I6OmVuZCgpCi0gIC8vCi0gIC8vIFJldHVy
bnMgYW4gaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCisgIC8vIFJl
dHVybnMgYW4gYGl0ZXJhdG9yYCB0byB0aGUgZW5kIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KICAg
aXRlcmF0b3IgZW5kKCkgbm9leGNlcHQgeyByZXR1cm4gZGF0YSgpICsgc2l6ZSgpOyB9CiAKLSAg
Ly8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6ZW5kKCkgZm9yIHJldHVybmluZyBhIGNvbnN0
IGl0ZXJhdG9yIHRvIHRoZSBlbmQKLSAgLy8gb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICAvLyBP
dmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6ZW5kKClgIHRoYXQgcmV0dXJucyBhIGBjb25zdF9p
dGVyYXRvcmAgdG8gdGhlCisgIC8vIGVuZCBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCiAgIGNvbnN0
X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGRhdGEoKSArIHNpemUoKTsg
fQogCi0gIC8vIElubGluZWRWZWN0b3I6OmNlbmQoKQorICAvLyBgSW5saW5lZFZlY3Rvcjo6Y2Jl
Z2luKClgCiAgIC8vCi0gIC8vIFJldHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgZW5kIG9m
IHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgLy8gUmV0dXJucyBhIGBjb25zdF9pdGVyYXRvcmAgdG8g
dGhlIGJlZ2lubmluZyBvZiB0aGUgaW5saW5lZCB2ZWN0b3IuCisgIGNvbnN0X2l0ZXJhdG9yIGNi
ZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGJlZ2luKCk7IH0KKworICAvLyBgSW5saW5l
ZFZlY3Rvcjo6Y2VuZCgpYAorICAvLworICAvLyBSZXR1cm5zIGEgYGNvbnN0X2l0ZXJhdG9yYCB0
byB0aGUgZW5kIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KICAgY29uc3RfaXRlcmF0b3IgY2VuZCgp
IGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGVuZCgpOyB9CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6
cmJlZ2luKCkKKyAgLy8gYElubGluZWRWZWN0b3I6OnJiZWdpbigpYAogICAvLwotICAvLyBSZXR1
cm5zIGEgcmV2ZXJzZSBpdGVyYXRvciBmcm9tIHRoZSBlbmQgb2YgdGhlIGlubGluZWQgdmVjdG9y
LgorICAvLyBSZXR1cm5zIGEgYHJldmVyc2VfaXRlcmF0b3JgIGZyb20gdGhlIGVuZCBvZiB0aGUg
aW5saW5lZCB2ZWN0b3IuCiAgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgbm9leGNlcHQgeyBy
ZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KIAotICAvLyBPdmVybG9hZCBvZiBJbmxp
bmVkVmVjdG9yOjpyYmVnaW4oKSBmb3IgcmV0dXJuaW5nIGEgY29uc3QgcmV2ZXJzZSBpdGVyYXRv
cgotICAvLyBmcm9tIHRoZSBlbmQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgorICAvLyBPdmVybG9h
ZCBvZiBgSW5saW5lZFZlY3Rvcjo6cmJlZ2luKClgIHRoYXQgcmV0dXJucyBhCisgIC8vIGBjb25z
dF9yZXZlcnNlX2l0ZXJhdG9yYCBmcm9tIHRoZSBlbmQgb2YgdGhlIGlubGluZWQgdmVjdG9yLgog
ICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsKICAgICBy
ZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7CiAgIH0KIAotICAvLyBJbmxpbmVk
VmVjdG9yOjpjcmJlZ2luKCkKLSAgLy8KLSAgLy8gUmV0dXJucyBhIGNvbnN0IHJldmVyc2UgaXRl
cmF0b3IgZnJvbSB0aGUgZW5kIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KLSAgY29uc3RfcmV2ZXJz
ZV9pdGVyYXRvciBjcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmJlZ2luKCk7IH0K
LQotICAvLyBJbmxpbmVkVmVjdG9yOjpyZW5kKCkKKyAgLy8gYElubGluZWRWZWN0b3I6OnJlbmQo
KWAKICAgLy8KLSAgLy8gUmV0dXJucyBhIHJldmVyc2UgaXRlcmF0b3IgZnJvbSB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgLy8gUmV0dXJucyBhIGByZXZlcnNlX2l0ZXJh
dG9yYCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlubGluZWQgdmVjdG9yLgogICByZXZlcnNl
X2l0ZXJhdG9yIHJlbmQoKSBub2V4Y2VwdCB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2lu
KCkpOyB9CiAKLSAgLy8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6cmVuZCgpIGZvciByZXR1
cm5pbmcgYSBjb25zdCByZXZlcnNlIGl0ZXJhdG9yCisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVk
VmVjdG9yOjpyZW5kKClgIHRoYXQgcmV0dXJucyBhIGBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yYAog
ICAvLyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlubGluZWQgdmVjdG9yLgogICBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCBub2V4Y2VwdCB7CiAgICAgcmV0dXJuIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpj
cmVuZCgpCisgIC8vIGBJbmxpbmVkVmVjdG9yOjpjcmJlZ2luKClgCiAgIC8vCi0gIC8vIFJldHVy
bnMgYSByZXZlcnNlIGl0ZXJhdG9yIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5saW5lZCB2
ZWN0b3IuCisgIC8vIFJldHVybnMgYSBgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcmAgZnJvbSB0aGUg
ZW5kIG9mIHRoZSBpbmxpbmVkIHZlY3Rvci4KKyAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmJl
Z2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmJlZ2luKCk7IH0KKworICAvLyBgSW5saW5l
ZFZlY3Rvcjo6Y3JlbmQoKWAKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yYCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlubGluZWQKKyAgLy8gdmVjdG9yLgog
ICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4g
cmVuZCgpOyB9CiAKLSAgLy8gSW5saW5lZFZlY3Rvcjo6ZW1wbGFjZSgpCisgIC8vIGBJbmxpbmVk
VmVjdG9yOjpnZXRfYWxsb2NhdG9yKClgCiAgIC8vCi0gIC8vIENvbnN0cnVjdHMgYW5kIGluc2Vy
dHMgYW4gb2JqZWN0IHRvIHRoZSBpbmxpbmVkIHZlY3RvciBhdCB0aGUgZ2l2ZW4KLSAgLy8gYHBv
c2l0aW9uYCwgcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBuZXdseSBlbXBs
YWNlZCBlbGVtZW50LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgaXRlcmF0b3Ig
ZW1wbGFjZShjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwgQXJncyYmLi4uIGFyZ3MpOworICAvLyBS
ZXR1cm5zIGEgY29weSBvZiB0aGUgaW5saW5lZCB2ZWN0b3IncyBhbGxvY2F0b3IuCisgIGFsbG9j
YXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiAqc3RvcmFnZV8uR2V0QWxs
b2NQdHIoKTsgfQorCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAvLyBJbmxpbmVkVmVjdG9y
IE1lbWJlciBNdXRhdG9ycworICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAvLyBJbmxpbmVk
VmVjdG9yOjppbnNlcnQoKQorICAvLyBgSW5saW5lZFZlY3Rvcjo6b3BlcmF0b3I9KC4uLilgCiAg
IC8vCi0gIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGF0IGBw
b3NpdGlvbmAsIHJldHVybmluZyBhbgotICAvLyBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgbmV3
bHkgaW5zZXJ0ZWQgZWxlbWVudC4KLSAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBv
c2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiB2KSB7Ci0gICAgcmV0dXJuIGVtcGxhY2UocG9zaXRp
b24sIHYpOwotICB9CisgIC8vIFJlcGxhY2VzIHRoZSBlbGVtZW50cyBvZiB0aGUgaW5saW5lZCB2
ZWN0b3Igd2l0aCBjb3BpZXMgb2YgdGhlIGVsZW1lbnRzIG9mCisgIC8vIGBsaXN0YC4KKyAgSW5s
aW5lZFZlY3RvciYgb3BlcmF0b3I9KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBs
aXN0KSB7CisgICAgYXNzaWduKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7CiAKLSAgLy8gT3Zl
cmxvYWQgb2YgSW5saW5lZFZlY3Rvcjo6aW5zZXJ0KCkgZm9yIGluc2VydGluZyBhbiBlbGVtZW50
IG9mIHRoZQotICAvLyBzcGVjaWZpZWQgcnZhbHVlLCByZXR1cm5pbmcgYW4gaXRlcmF0b3IgcG9p
bnRpbmcgdG8gdGhlIG5ld2x5IGluc2VydGVkCi0gIC8vIGVsZW1lbnQuCi0gIGl0ZXJhdG9yIGlu
c2VydChjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwgdmFsdWVfdHlwZSYmIHYpIHsKLSAgICByZXR1
cm4gZW1wbGFjZShwb3NpdGlvbiwgc3RkOjptb3ZlKHYpKTsKKyAgICByZXR1cm4gKnRoaXM7CiAg
IH0KIAotICAvLyBPdmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjppbnNlcnQoKSBmb3IgaW5zZXJ0
aW5nIGBuYCBlbGVtZW50cyBvZiB0aGUKLSAgLy8gc3BlY2lmaWVkIHZhbHVlIGF0IGBwb3NpdGlv
bmAsIHJldHVybmluZyBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QKLSAgLy8gb2Yg
dGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnRzLgotICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRl
cmF0b3IgcG9zaXRpb24sIHNpemVfdHlwZSBuLCBjb25zdCB2YWx1ZV90eXBlJiB2KSB7Ci0gICAg
cmV0dXJuIEluc2VydFdpdGhDb3VudChwb3NpdGlvbiwgbiwgdik7Ci0gIH0KKyAgLy8gT3Zlcmxv
YWQgb2YgYElubGluZWRWZWN0b3I6Om9wZXJhdG9yPSguLi4pYCB0aGF0IHJlcGxhY2VzIHRoZSBl
bGVtZW50cyBvZgorICAvLyB0aGUgaW5saW5lZCB2ZWN0b3Igd2l0aCBjb3BpZXMgb2YgdGhlIGVs
ZW1lbnRzIG9mIGBvdGhlcmAuCisgIElubGluZWRWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBJbmxp
bmVkVmVjdG9yJiBvdGhlcikgeworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRSh0aGlzICE9IHN0
ZDo6YWRkcmVzc29mKG90aGVyKSkpIHsKKyAgICAgIGNvbnN0X3BvaW50ZXIgb3RoZXJfZGF0YSA9
IG90aGVyLmRhdGEoKTsKKyAgICAgIGFzc2lnbihvdGhlcl9kYXRhLCBvdGhlcl9kYXRhICsgb3Ro
ZXIuc2l6ZSgpKTsKKyAgICB9CiAKLSAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6Omlu
c2VydCgpYCB0byBkaXNhbWJpZ3VhdGUgdGhlIHR3bwotICAvLyB0aHJlZS1hcmd1bWVudCBvdmVy
bG9hZHMgb2YgYGluc2VydCgpYCwgcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvCi0g
IC8vIHRoZSBmaXJzdCBvZiB0aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudHMuCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLAotICAgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgIHR5
cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3I+OjppdGVyYXRvcl9jYXRl
Z29yeSwKLSAgICAgICAgICAgICAgICBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZz46OnZhbHVlPjo6
dHlwZT4KLSAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBJbnB1dEl0
ZXJhdG9yIGZpcnN0LAotICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBsYXN0KSB7Ci0g
ICAgdXNpbmcgSXRlclR5cGUgPQotICAgICAgICB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0
czxJbnB1dEl0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAgcmV0dXJuIEluc2VydFdp
dGhSYW5nZShwb3NpdGlvbiwgZmlyc3QsIGxhc3QsIEl0ZXJUeXBlKCkpOworICAgIHJldHVybiAq
dGhpczsKICAgfQogCi0gIC8vIE92ZXJsb2FkIG9mIElubGluZWRWZWN0b3I6Omluc2VydCgpIGZv
ciBpbnNlcnRpbmcgYSBsaXN0IG9mIGVsZW1lbnRzIGF0Ci0gIC8vIGBwb3NpdGlvbmAsIHJldHVy
bmluZyBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3Qgb2YgdGhlIG5ld2x5Ci0gIC8v
IGluc2VydGVkIGVsZW1lbnRzLgotICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9z
aXRpb24sCi0gICAgICAgICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlw
ZT4gaW5pdCkgewotICAgIHJldHVybiBpbnNlcnQocG9zaXRpb24sIGluaXQuYmVnaW4oKSwgaW5p
dC5lbmQoKSk7CisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjpvcGVyYXRvcj0oLi4u
KWAgdGhhdCBtb3ZlcyB0aGUgZWxlbWVudHMgb2YKKyAgLy8gYG90aGVyYCBpbnRvIHRoZSBpbmxp
bmVkIHZlY3Rvci4KKyAgLy8KKyAgLy8gTk9URTogYXMgYSByZXN1bHQgb2YgY2FsbGluZyB0aGlz
IG92ZXJsb2FkLCBgb3RoZXJgIGlzIGxlZnQgaW4gYSB2YWxpZCBidXQKKyAgLy8gdW5zcGVjaWZp
ZWQgc3RhdGUuCisgIElubGluZWRWZWN0b3ImIG9wZXJhdG9yPShJbmxpbmVkVmVjdG9yJiYgb3Ro
ZXIpIHsKKyAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUodGhpcyAhPSBzdGQ6OmFkZHJlc3NvZihv
dGhlcikpKSB7CisgICAgICBpZiAoSXNNZW1jcHlPazo6dmFsdWUgfHwgb3RoZXIuc3RvcmFnZV8u
R2V0SXNBbGxvY2F0ZWQoKSkgeworICAgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVz
dHJveUVsZW1lbnRzKHN0b3JhZ2VfLkdldEFsbG9jUHRyKCksIGRhdGEoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplKCkpOworICAgICAgICBz
dG9yYWdlXy5EZWFsbG9jYXRlSWZBbGxvY2F0ZWQoKTsKKyAgICAgICAgc3RvcmFnZV8uTWVtY3B5
RnJvbShvdGhlci5zdG9yYWdlXyk7CisKKyAgICAgICAgb3RoZXIuc3RvcmFnZV8uU2V0SW5saW5l
ZFNpemUoMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBzdG9yYWdlXy5Bc3NpZ24oSXRlcmF0
b3JWYWx1ZUFkYXB0ZXI8TW92ZUl0ZXJhdG9yPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNb3ZlSXRlcmF0b3Iob3RoZXIuc3RvcmFnZV8uR2V0SW5saW5lZERhdGEoKSkpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgb3RoZXIuc2l6ZSgpKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gKnRoaXM7CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjplcmFzZSgpCisgIC8vIGBJ
bmxpbmVkVmVjdG9yOjphc3NpZ24oLi4uKWAKICAgLy8KLSAgLy8gRXJhc2VzIHRoZSBlbGVtZW50
IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGlubGluZWQgdmVjdG9yLCByZXR1cm5pbmcgYW4KLSAgLy8g
aXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGZvbGxvd2luZyBlbGVtZW50IG9yIHRoZSBjb250YWlu
ZXIncyBlbmQgaWYgdGhlCi0gIC8vIGxhc3QgZWxlbWVudCB3YXMgZXJhc2VkLgotICBpdGVyYXRv
ciBlcmFzZShjb25zdF9pdGVyYXRvciBwb3NpdGlvbikgewotICAgIGFzc2VydChwb3NpdGlvbiA+
PSBiZWdpbigpKTsKLSAgICBhc3NlcnQocG9zaXRpb24gPCBlbmQoKSk7Ci0KLSAgICBpdGVyYXRv
ciBwb3MgPSBjb25zdF9jYXN0PGl0ZXJhdG9yPihwb3NpdGlvbik7Ci0gICAgc3RkOjptb3ZlKHBv
cyArIDEsIGVuZCgpLCBwb3MpOwotICAgIHBvcF9iYWNrKCk7Ci0gICAgcmV0dXJuIHBvczsKKyAg
Ly8gUmVwbGFjZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBpbmxpbmVkIHZlY3RvciB3aXRoIGBuYCBj
b3BpZXMgb2YgYHZgLgorICB2b2lkIGFzc2lnbihzaXplX3R5cGUgbiwgY29uc3RfcmVmZXJlbmNl
IHYpIHsKKyAgICBzdG9yYWdlXy5Bc3NpZ24oQ29weVZhbHVlQWRhcHRlcih2KSwgbik7CiAgIH0K
IAotICAvLyBPdmVybG9hZCBvZiBJbmxpbmVkVmVjdG9yOjplcmFzZSgpIGZvciBlcmFzaW5nIGFs
bCBlbGVtZW50cyBpbiB0aGUKLSAgLy8gaXRlcmF0b3IgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBpbiB0
aGUgaW5saW5lZCB2ZWN0b3IsIHJldHVybmluZyBhbiBpdGVyYXRvcgotICAvLyBwb2ludGluZyB0
byB0aGUgZmlyc3QgZWxlbWVudCBmb2xsb3dpbmcgdGhlIHJhbmdlIGVyYXNlZCwgb3IgdGhlCi0g
IC8vIGNvbnRhaW5lcidzIGVuZCBpZiByYW5nZSBpbmNsdWRlZCB0aGUgY29udGFpbmVyJ3MgbGFz
dCBlbGVtZW50LgotICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3Rf
aXRlcmF0b3IgbGFzdCk7CisgIC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjphc3NpZ24o
Li4uKWAgdGhhdCByZXBsYWNlcyB0aGUgY29udGVudHMgb2YgdGhlCisgIC8vIGlubGluZWQgdmVj
dG9yIHdpdGggY29waWVzIG9mIHRoZSBlbGVtZW50cyBvZiBgbGlzdGAuCisgIHZvaWQgYXNzaWdu
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBsaXN0KSB7CisgICAgYXNzaWduKGxp
c3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7CisgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpyZXNl
cnZlKCkKKyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6OmFzc2lnbiguLi4pYCB0byBy
ZXBsYWNlIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgLy8gaW5saW5lZCB2ZWN0b3Igd2l0aCB0aGUg
cmFuZ2UgW2BmaXJzdGAsIGBsYXN0YCkuCiAgIC8vCi0gIC8vIEVubGFyZ2VzIHRoZSB1bmRlcmx5
aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbmxpbmVkIHZlY3RvciBzbyBpdCBjYW4gaG9sZAot
ICAvLyBhdCBsZWFzdCBgbmAgZWxlbWVudHMuIFRoaXMgbWV0aG9kIGRvZXMgbm90IGNoYW5nZSBg
c2l6ZSgpYCBvciB0aGUgYWN0dWFsCi0gIC8vIGNvbnRlbnRzIG9mIHRoZSB2ZWN0b3IuCi0gIC8v
Ci0gIC8vIE5vdGUgdGhhdCBpZiBgbmAgZG9lcyBub3QgZXhjZWVkIHRoZSBpbmxpbmVkIHZlY3Rv
cidzIGluaXRpYWwgc2l6ZSBgTmAsCi0gIC8vIGByZXNlcnZlKClgIHdpbGwgaGF2ZSBubyBlZmZl
Y3Q7IGlmIGl0IGRvZXMgZXhjZWVkIGl0cyBpbml0aWFsIHNpemUsCi0gIC8vIGByZXNlcnZlKClg
IHdpbGwgdHJpZ2dlciBhbiBpbml0aWFsIGFsbG9jYXRpb24gYW5kIG1vdmUgdGhlIGlubGluZWQg
dmVjdG9yCi0gIC8vIG9udG8gdGhlIGhlYXAuIElmIHRoZSB2ZWN0b3IgYWxyZWFkeSBleGlzdHMg
b24gdGhlIGhlYXAgYW5kIHRoZSByZXF1ZXN0ZWQKLSAgLy8gc2l6ZSBleGNlZWRzIGl0LCBhIHJl
YWxsb2NhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZC4KLSAgdm9pZCByZXNlcnZlKHNpemVfdHlwZSBu
KSB7Ci0gICAgaWYgKG4gPiBjYXBhY2l0eSgpKSB7Ci0gICAgICAvLyBNYWtlIHJvb20gZm9yIG5l
dyBlbGVtZW50cwotICAgICAgRW5sYXJnZUJ5KG4gLSBzaXplKCkpOwotICAgIH0KKyAgLy8gTk9U
RTogdGhpcyBvdmVybG9hZCBpcyBmb3IgaXRlcmF0b3JzIHRoYXQgYXJlICJmb3J3YXJkIiBjYXRl
Z29yeSBvciBiZXR0ZXIuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsCisg
ICAgICAgICAgICBFbmFibGVJZkF0TGVhc3RGb3J3YXJkSXRlcmF0b3I8Rm9yd2FyZEl0ZXJhdG9y
PiogPSBudWxscHRyPgorICB2b2lkIGFzc2lnbihGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndh
cmRJdGVyYXRvciBsYXN0KSB7CisgICAgc3RvcmFnZV8uQXNzaWduKEl0ZXJhdG9yVmFsdWVBZGFw
dGVyPEZvcndhcmRJdGVyYXRvcj4oZmlyc3QpLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmRp
c3RhbmNlKGZpcnN0LCBsYXN0KSk7CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpzaHJpbmtf
dG9fZml0KCkKLSAgLy8KLSAgLy8gUmVkdWNlcyBtZW1vcnkgdXNhZ2UgYnkgZnJlZWluZyB1bnVz
ZWQgbWVtb3J5LgotICAvLyBBZnRlciB0aGlzIGNhbGwgYGNhcGFjaXR5KClgIHdpbGwgYmUgZXF1
YWwgdG8gYG1heChOLCBzaXplKCkpYC4KKyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6
OmFzc2lnbiguLi4pYCB0byByZXBsYWNlIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgLy8gaW5saW5l
ZCB2ZWN0b3Igd2l0aCB0aGUgcmFuZ2UgW2BmaXJzdGAsIGBsYXN0YCkuCiAgIC8vCi0gIC8vIElm
IGBzaXplKCkgPD0gTmAgYW5kIHRoZSBlbGVtZW50cyBhcmUgY3VycmVudGx5IHN0b3JlZCBvbiB0
aGUgaGVhcCwgdGhleQotICAvLyB3aWxsIGJlIG1vdmVkIHRvIHRoZSBpbmxpbmVkIHN0b3JhZ2Ug
YW5kIHRoZSBoZWFwIG1lbW9yeSBkZWFsbG9jYXRlZC4KLSAgLy8gSWYgYHNpemUoKSA+IE5gIGFu
ZCBgc2l6ZSgpIDwgY2FwYWNpdHkoKWAgdGhlIGVsZW1lbnRzIHdpbGwgYmUgbW92ZWQgdG8KLSAg
Ly8gYSByZWFsbG9jYXRlZCBzdG9yYWdlIG9uIGhlYXAuCi0gIHZvaWQgc2hyaW5rX3RvX2ZpdCgp
IHsKLSAgICBjb25zdCBhdXRvIHMgPSBzaXplKCk7Ci0gICAgaWYgKCFhbGxvY2F0ZWQoKSB8fCBz
ID09IGNhcGFjaXR5KCkpIHsKLSAgICAgIC8vIFRoZXJlJ3Mgbm90aGluZyB0byBkZWFsbG9jYXRl
LgotICAgICAgcmV0dXJuOworICAvLyBOT1RFOiB0aGlzIG92ZXJsb2FkIGlzIGZvciBpdGVyYXRv
cnMgdGhhdCBhcmUgImlucHV0IiBjYXRlZ29yeS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0
SXRlcmF0b3IsCisgICAgICAgICAgICBEaXNhYmxlSWZBdExlYXN0Rm9yd2FyZEl0ZXJhdG9yPElu
cHV0SXRlcmF0b3I+KiA9IG51bGxwdHI+CisgIHZvaWQgYXNzaWduKElucHV0SXRlcmF0b3IgZmly
c3QsIElucHV0SXRlcmF0b3IgbGFzdCkgeworICAgIHNpemVfdHlwZSBpID0gMDsKKyAgICBmb3Ig
KDsgaSA8IHNpemUoKSAmJiBmaXJzdCAhPSBsYXN0OyArK2ksIHN0YXRpY19jYXN0PHZvaWQ+KCsr
Zmlyc3QpKSB7CisgICAgICBhdChpKSA9ICpmaXJzdDsKICAgICB9CiAKLSAgICBpZiAocyA8PSBO
KSB7Ci0gICAgICAvLyBNb3ZlIHRoZSBlbGVtZW50cyB0byB0aGUgaW5saW5lZCBzdG9yYWdlLgot
ICAgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIHVzaW5nIGEgdGVtcG9yYXJ5LCBiZWNhdXNlIGlu
bGluZWRfc3RvcmFnZSBhbmQKLSAgICAgIC8vIGFsbG9jYXRpb25fc3RvcmFnZSBhcmUgaW4gYSB1
bmlvbiBmaWVsZC4KLSAgICAgIGF1dG8gdGVtcCA9IHN0ZDo6bW92ZSgqdGhpcyk7Ci0gICAgICBh
c3NpZ24oc3RkOjptYWtlX21vdmVfaXRlcmF0b3IodGVtcC5iZWdpbigpKSwKLSAgICAgICAgICAg
ICBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih0ZW1wLmVuZCgpKSk7Ci0gICAgICByZXR1cm47Ci0g
ICAgfQorICAgIGVyYXNlKGRhdGEoKSArIGksIGRhdGEoKSArIHNpemUoKSk7CiAKLSAgICAvLyBS
ZWFsbG9jYXRlIHN0b3JhZ2UgYW5kIG1vdmUgZWxlbWVudHMuCi0gICAgLy8gV2UgY2FuJ3Qgc2lt
cGx5IHVzZSB0aGUgc2FtZSBhcHByb2FjaCBhcyBhYm92ZSwgYmVjYXVzZSBhc3NpZ24oKSB3b3Vs
ZAotICAgIC8vIGNhbGwgaW50byByZXNlcnZlKCkgaW50ZXJuYWxseSBhbmQgcmVzZXJ2ZSBsYXJn
ZXIgY2FwYWNpdHkgdGhhbiB3ZSBuZWVkLgotICAgIEFsbG9jYXRpb24gbmV3X2FsbG9jYXRpb24o
YWxsb2NhdG9yKCksIHMpOwotICAgIFVuaW5pdGlhbGl6ZWRDb3B5KHN0ZDo6bWFrZV9tb3ZlX2l0
ZXJhdG9yKGFsbG9jYXRlZF9zcGFjZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1h
a2VfbW92ZV9pdGVyYXRvcihhbGxvY2F0ZWRfc3BhY2UoKSArIHMpLAotICAgICAgICAgICAgICAg
ICAgICAgIG5ld19hbGxvY2F0aW9uLmJ1ZmZlcigpKTsKLSAgICBSZXNldEFsbG9jYXRpb24obmV3
X2FsbG9jYXRpb24sIHMpOworICAgIHN0ZDo6Y29weShmaXJzdCwgbGFzdCwgc3RkOjpiYWNrX2lu
c2VydGVyKCp0aGlzKSk7CiAgIH0KIAotICAvLyBJbmxpbmVkVmVjdG9yOjpzd2FwKCkKKyAgLy8g
YElubGluZWRWZWN0b3I6OnJlc2l6ZSguLi4pYAogICAvLwotICAvLyBTd2FwcyB0aGUgY29udGVu
dHMgb2YgdGhpcyBpbmxpbmVkIHZlY3RvciB3aXRoIHRoZSBjb250ZW50cyBvZiBgb3RoZXJgLgot
ICB2b2lkIHN3YXAoSW5saW5lZFZlY3RvciYgb3RoZXIpOwotCi0gIC8vIElubGluZWRWZWN0b3I6
OmdldF9hbGxvY2F0b3IoKQorICAvLyBSZXNpemVzIHRoZSBpbmxpbmVkIHZlY3RvciB0byBjb250
YWluIGBuYCBlbGVtZW50cy4KICAgLy8KLSAgLy8gUmV0dXJucyB0aGUgYWxsb2NhdG9yIG9mIHRo
aXMgaW5saW5lZCB2ZWN0b3IuCi0gIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25z
dCB7IHJldHVybiBhbGxvY2F0b3IoKTsgfQorICAvLyBOT1RFOiBpZiBgbmAgaXMgc21hbGxlciB0
aGFuIGBzaXplKClgLCBleHRyYSBlbGVtZW50cyBhcmUgZGVzdHJveWVkLiBJZiBgbmAKKyAgLy8g
aXMgbGFyZ2VyIHRoYW4gYHNpemUoKWAsIG5ldyBlbGVtZW50cyBhcmUgdmFsdWUtaW5pdGlhbGl6
ZWQuCisgIHZvaWQgcmVzaXplKHNpemVfdHlwZSBuKSB7IHN0b3JhZ2VfLlJlc2l6ZShEZWZhdWx0
VmFsdWVBZGFwdGVyKCksIG4pOyB9CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+Ci0gIGZyaWVu
ZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBjb25zdCBJbmxpbmVkVmVjdG9yJiB2KSB7Ci0gICAgcmV0
dXJuIEg6OmNvbWJpbmUoSDo6Y29tYmluZV9jb250aWd1b3VzKHN0ZDo6bW92ZShoKSwgdi5kYXRh
KCksIHYuc2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICB2LnNpemUoKSk7CisgIC8vIE92
ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjpyZXNpemUoLi4uKWAgdGhhdCByZXNpemVzIHRoZSBp
bmxpbmVkIHZlY3RvciB0bworICAvLyBjb250YWluIGBuYCBlbGVtZW50cy4KKyAgLy8KKyAgLy8g
Tk9URTogaWYgYG5gIGlzIHNtYWxsZXIgdGhhbiBgc2l6ZSgpYCwgZXh0cmEgZWxlbWVudHMgYXJl
IGRlc3Ryb3llZC4gSWYgYG5gCisgIC8vIGlzIGxhcmdlciB0aGFuIGBzaXplKClgLCBuZXcgZWxl
bWVudHMgYXJlIGNvcGllZC1jb25zdHJ1Y3RlZCBmcm9tIGB2YC4KKyAgdm9pZCByZXNpemUoc2l6
ZV90eXBlIG4sIGNvbnN0X3JlZmVyZW5jZSB2KSB7CisgICAgc3RvcmFnZV8uUmVzaXplKENvcHlW
YWx1ZUFkYXB0ZXIodiksIG4pOwogICB9CiAKLSBwcml2YXRlOgotICBzdGF0aWNfYXNzZXJ0KE4g
PiAwLCAiaW5saW5lZCB2ZWN0b3Igd2l0aCBub25wb3NpdGl2ZSBzaXplIik7Ci0KLSAgLy8gSXQg
aG9sZHMgd2hldGhlciB0aGUgdmVjdG9yIGlzIGFsbG9jYXRlZCBvciBub3QgaW4gdGhlIGxvd2Vz
dCBiaXQuCi0gIC8vIFRoZSBzaXplIGlzIGhlbGQgaW4gdGhlIGhpZ2ggYml0czoKLSAgLy8gICBz
aXplXyA9IChzaXplIDw8IDEpIHwgaXNfYWxsb2NhdGVkOworICAvLyBgSW5saW5lZFZlY3Rvcjo6
aW5zZXJ0KC4uLilgCiAgIC8vCi0gIC8vIE1haW50YWluZXIncyBOb3RlOiBzaXplX3R5cGUgaXMg
dXNlciBkZWZpbmVkLiBUaGUgY29udHJhY3QgaXMgbGltaXRlZCB0bwotICAvLyBhcml0aG1ldGlj
IG9wZXJhdG9ycyB0byBhdm9pZCBkZXBlbmRpbmcgb24gY29tcGxpYW50IG92ZXJsb2FkZWQgYml0
d2lzZQotICAvLyBvcGVyYXRvcnMuCi0gIGNsYXNzIFRhZyB7Ci0gICBwdWJsaWM6Ci0gICAgVGFn
KCkgOiBzaXplXygwKSB7fQotICAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6
ZV8gLyAyOyB9Ci0gICAgdm9pZCBhZGRfc2l6ZShzaXplX3R5cGUgbikgeyBzaXplXyArPSBuICog
MjsgfQotICAgIHZvaWQgc2V0X2lubGluZV9zaXplKHNpemVfdHlwZSBuKSB7IHNpemVfID0gbiAq
IDI7IH0KLSAgICB2b2lkIHNldF9hbGxvY2F0ZWRfc2l6ZShzaXplX3R5cGUgbikgeyBzaXplXyA9
IChuICogMikgKyAxOyB9Ci0gICAgYm9vbCBhbGxvY2F0ZWQoKSBjb25zdCB7IHJldHVybiBzaXpl
XyAlIDI7IH0KLQotICAgcHJpdmF0ZToKLSAgICBzaXplX3R5cGUgc2l6ZV87Ci0gIH07Ci0KLSAg
Ly8gRGVyaXZlcyBmcm9tIGFsbG9jYXRvcl90eXBlIHRvIHVzZSB0aGUgZW1wdHkgYmFzZSBjbGFz
cyBvcHRpbWl6YXRpb24uCi0gIC8vIElmIHRoZSBhbGxvY2F0b3JfdHlwZSBpcyBzdGF0ZWxlc3Ms
IHdlIGNhbiAnc3RvcmUnCi0gIC8vIG91ciBpbnN0YW5jZSBvZiBpdCBmb3IgZnJlZS4KLSAgY2xh
c3MgQWxsb2NhdG9yQW5kVGFnIDogcHJpdmF0ZSBhbGxvY2F0b3JfdHlwZSB7Ci0gICBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgQWxsb2NhdG9yQW5kVGFnKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhKSA6
IGFsbG9jYXRvcl90eXBlKGEpIHt9Ci0gICAgVGFnJiB0YWcoKSB7IHJldHVybiB0YWdfOyB9Ci0g
ICAgY29uc3QgVGFnJiB0YWcoKSBjb25zdCB7IHJldHVybiB0YWdfOyB9Ci0gICAgYWxsb2NhdG9y
X3R5cGUmIGFsbG9jYXRvcigpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgY29uc3QgYWxsb2NhdG9y
X3R5cGUmIGFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0KLSAgIHByaXZhdGU6
Ci0gICAgVGFnIHRhZ187Ci0gIH07Ci0KLSAgY2xhc3MgQWxsb2NhdGlvbiB7Ci0gICBwdWJsaWM6
Ci0gICAgQWxsb2NhdGlvbihhbGxvY2F0b3JfdHlwZSYgYSwgIC8vIE5PTElOVChydW50aW1lL3Jl
ZmVyZW5jZXMpCi0gICAgICAgICAgICAgICBzaXplX3R5cGUgY2FwYWNpdHkpCi0gICAgICAgIDog
Y2FwYWNpdHlfKGNhcGFjaXR5KSwKLSAgICAgICAgICBidWZmZXJfKEFsbG9jYXRvclRyYWl0czo6
YWxsb2NhdGUoYSwgY2FwYWNpdHlfKSkge30KLQotICAgIHZvaWQgRGVhbGxvYyhhbGxvY2F0b3Jf
dHlwZSYgYSkgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKLSAgICAgIEFsbG9jYXRv
clRyYWl0czo6ZGVhbGxvY2F0ZShhLCBidWZmZXIoKSwgY2FwYWNpdHkoKSk7Ci0gICAgfQotCi0g
ICAgc2l6ZV90eXBlIGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gY2FwYWNpdHlfOyB9Ci0gICAg
Y29uc3QgdmFsdWVfdHlwZSogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gYnVmZmVyXzsgfQotICAg
IHZhbHVlX3R5cGUqIGJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlcl87IH0KLQotICAgcHJpdmF0ZToK
LSAgICBzaXplX3R5cGUgY2FwYWNpdHlfOwotICAgIHZhbHVlX3R5cGUqIGJ1ZmZlcl87Ci0gIH07
Ci0KLSAgY29uc3QgVGFnJiB0YWcoKSBjb25zdCB7IHJldHVybiBhbGxvY2F0b3JfYW5kX3RhZ18u
dGFnKCk7IH0KLSAgVGFnJiB0YWcoKSB7IHJldHVybiBhbGxvY2F0b3JfYW5kX3RhZ18udGFnKCk7
IH0KLQotICBBbGxvY2F0aW9uJiBhbGxvY2F0aW9uKCkgewotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PEFsbG9jYXRpb24mPihyZXBfLmFsbG9jYXRpb25fc3RvcmFnZS5hbGxvY2F0aW9uKTsK
LSAgfQotICBjb25zdCBBbGxvY2F0aW9uJiBhbGxvY2F0aW9uKCkgY29uc3QgewotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IEFsbG9jYXRpb24mPigKLSAgICAgICAgcmVwXy5hbGxv
Y2F0aW9uX3N0b3JhZ2UuYWxsb2NhdGlvbik7Ci0gIH0KLSAgdm9pZCBpbml0X2FsbG9jYXRpb24o
Y29uc3QgQWxsb2NhdGlvbiYgYWxsb2NhdGlvbikgewotICAgIG5ldyAoJnJlcF8uYWxsb2NhdGlv
bl9zdG9yYWdlLmFsbG9jYXRpb24pIEFsbG9jYXRpb24oYWxsb2NhdGlvbik7CisgIC8vIEluc2Vy
dHMgYSBjb3B5IG9mIGB2YCBhdCBgcG9zYCwgcmV0dXJuaW5nIGFuIGBpdGVyYXRvcmAgdG8gdGhl
IG5ld2x5CisgIC8vIGluc2VydGVkIGVsZW1lbnQuCisgIGl0ZXJhdG9yIGluc2VydChjb25zdF9p
dGVyYXRvciBwb3MsIGNvbnN0X3JlZmVyZW5jZSB2KSB7CisgICAgcmV0dXJuIGVtcGxhY2UocG9z
LCB2KTsKICAgfQogCi0gIC8vIFRPRE8oYWJzbC10ZWFtKTogaW52ZXN0aWdhdGUgd2hldGhlciB0
aGUgcmVpbnRlcnByZXRfY2FzdCBpcyBhcHByb3ByaWF0ZS4KLSAgdmFsdWVfdHlwZSogaW5saW5l
ZF9zcGFjZSgpIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2YWx1ZV90eXBlKj4oCi0g
ICAgICAgIHN0ZDo6YWRkcmVzc29mKHJlcF8uaW5saW5lZF9zdG9yYWdlLmlubGluZWRbMF0pKTsK
LSAgfQotICBjb25zdCB2YWx1ZV90eXBlKiBpbmxpbmVkX3NwYWNlKCkgY29uc3QgewotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZhbHVlX3R5cGUqPigKLSAgICAgICAgc3RkOjph
ZGRyZXNzb2YocmVwXy5pbmxpbmVkX3N0b3JhZ2UuaW5saW5lZFswXSkpOworICAvLyBPdmVybG9h
ZCBvZiBgSW5saW5lZFZlY3Rvcjo6aW5zZXJ0KC4uLilgIHRoYXQgaW5zZXJ0cyBgdmAgYXQgYHBv
c2AgdXNpbmcKKyAgLy8gbW92ZSBzZW1hbnRpY3MsIHJldHVybmluZyBhbiBgaXRlcmF0b3JgIHRv
IHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50LgorICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRl
cmF0b3IgcG9zLCBydmFsdWVfcmVmZXJlbmNlIHYpIHsKKyAgICByZXR1cm4gZW1wbGFjZShwb3Ms
IHN0ZDo6bW92ZSh2KSk7CiAgIH0KIAotICB2YWx1ZV90eXBlKiBhbGxvY2F0ZWRfc3BhY2UoKSB7
IHJldHVybiBhbGxvY2F0aW9uKCkuYnVmZmVyKCk7IH0KLSAgY29uc3QgdmFsdWVfdHlwZSogYWxs
b2NhdGVkX3NwYWNlKCkgY29uc3QgeyByZXR1cm4gYWxsb2NhdGlvbigpLmJ1ZmZlcigpOyB9Cisg
IC8vIE92ZXJsb2FkIG9mIGBJbmxpbmVkVmVjdG9yOjppbnNlcnQoLi4uKWAgdGhhdCBpbnNlcnRz
IGBuYCBjb250aWd1b3VzIGNvcGllcworICAvLyBvZiBgdmAgc3RhcnRpbmcgYXQgYHBvc2AsIHJl
dHVybmluZyBhbiBgaXRlcmF0b3JgIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBvZgorICAvLyB0aGUg
bmV3bHkgaW5zZXJ0ZWQgZWxlbWVudHMuCisgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRv
ciBwb3MsIHNpemVfdHlwZSBuLCBjb25zdF9yZWZlcmVuY2UgdikgeworICAgIGFzc2VydChwb3Mg
Pj0gYmVnaW4oKSk7CisgICAgYXNzZXJ0KHBvcyA8PSBlbmQoKSk7CiAKLSAgY29uc3QgYWxsb2Nh
dG9yX3R5cGUmIGFsbG9jYXRvcigpIGNvbnN0IHsKLSAgICByZXR1cm4gYWxsb2NhdG9yX2FuZF90
YWdfLmFsbG9jYXRvcigpOworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShuICE9IDApKSB7Cisg
ICAgICB2YWx1ZV90eXBlIGRlYWxpYXMgPSB2OworICAgICAgcmV0dXJuIHN0b3JhZ2VfLkluc2Vy
dChwb3MsIENvcHlWYWx1ZUFkYXB0ZXIoZGVhbGlhcyksIG4pOworICAgIH0gZWxzZSB7CisgICAg
ICByZXR1cm4gY29uc3RfY2FzdDxpdGVyYXRvcj4ocG9zKTsKKyAgICB9CiAgIH0KLSAgYWxsb2Nh
dG9yX3R5cGUmIGFsbG9jYXRvcigpIHsgcmV0dXJuIGFsbG9jYXRvcl9hbmRfdGFnXy5hbGxvY2F0
b3IoKTsgfQogCi0gIGJvb2wgYWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gdGFnKCkuYWxsb2Nh
dGVkKCk7IH0KLQotICAvLyBFbmxhcmdlIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uIHNv
IHdlIGNhbiBzdG9yZSBzaXplXyArIGRlbHRhIGVsZW1zLgotICAvLyBUaGUgc2l6ZSBpcyBub3Qg
Y2hhbmdlZCwgYW5kIGFueSBuZXdseSBhZGRlZCBtZW1vcnkgaXMgbm90IGluaXRpYWxpemVkLgot
ICB2b2lkIEVubGFyZ2VCeShzaXplX3R5cGUgZGVsdGEpOworICAvLyBPdmVybG9hZCBvZiBgSW5s
aW5lZFZlY3Rvcjo6aW5zZXJ0KC4uLilgIHRoYXQgaW5zZXJ0cyBjb3BpZXMgb2YgdGhlCisgIC8v
IGVsZW1lbnRzIG9mIGBsaXN0YCBzdGFydGluZyBhdCBgcG9zYCwgcmV0dXJuaW5nIGFuIGBpdGVy
YXRvcmAgcG9pbnRpbmcgdG8KKyAgLy8gdGhlIGZpcnN0IG9mIHRoZSBuZXdseSBpbnNlcnRlZCBl
bGVtZW50cy4KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvcywgc3RkOjppbml0
aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QpIHsKKyAgICByZXR1cm4gaW5zZXJ0KHBvcywg
bGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKKyAgfQogCi0gIC8vIFNoaWZ0IGFsbCBlbGVtZW50
cyBmcm9tIHBvc2l0aW9uIHRvIGVuZCgpIG4gcGxhY2VzIHRvIHRoZSByaWdodC4KLSAgLy8gSWYg
dGhlIHZlY3RvciBuZWVkcyB0byBiZSBlbmxhcmdlZCwgbWVtb3J5IHdpbGwgYmUgYWxsb2NhdGVk
LgotICAvLyBSZXR1cm5zIGl0ZXJhdG9ycyBwb2ludGluZyB0byB0aGUgc3RhcnQgb2YgdGhlIHBy
ZXZpb3VzbHktaW5pdGlhbGl6ZWQKLSAgLy8gcG9ydGlvbiBhbmQgdGhlIHN0YXJ0IG9mIHRoZSB1
bmluaXRpYWxpemVkIHBvcnRpb24gb2YgdGhlIGNyZWF0ZWQgZ2FwLgotICAvLyBUaGUgbnVtYmVy
IG9mIGluaXRpYWxpemVkIHNwb3RzIGlzIHBhaXIuc2Vjb25kIC0gcGFpci5maXJzdDsKLSAgLy8g
dGhlIG51bWJlciBvZiByYXcgc3BvdHMgaXMgbiAtIChwYWlyLnNlY29uZCAtIHBhaXIuZmlyc3Qp
LgorICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6aW5zZXJ0KC4uLilgIHRoYXQgaW5z
ZXJ0cyB0aGUgcmFuZ2UgW2BmaXJzdGAsCisgIC8vIGBsYXN0YCkgc3RhcnRpbmcgYXQgYHBvc2As
IHJldHVybmluZyBhbiBgaXRlcmF0b3JgIHBvaW50aW5nIHRvIHRoZSBmaXJzdAorICAvLyBvZiB0
aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudHMuCiAgIC8vCi0gIC8vIFVwZGF0ZXMgdGhlIHNpemUg
b2YgdGhlIElubGluZWRWZWN0b3IgaW50ZXJuYWxseS4KLSAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBp
dGVyYXRvcj4gU2hpZnRSaWdodChjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgbik7Ci0KLSAgdm9pZCBS
ZXNldEFsbG9jYXRpb24oQWxsb2NhdGlvbiBuZXdfYWxsb2NhdGlvbiwgc2l6ZV90eXBlIG5ld19z
aXplKSB7Ci0gICAgaWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgICBEZXN0cm95KGFsbG9jYXRlZF9z
cGFjZSgpLCBhbGxvY2F0ZWRfc3BhY2UoKSArIHNpemUoKSk7Ci0gICAgICBhc3NlcnQoYmVnaW4o
KSA9PSBhbGxvY2F0ZWRfc3BhY2UoKSk7Ci0gICAgICBhbGxvY2F0aW9uKCkuRGVhbGxvYyhhbGxv
Y2F0b3IoKSk7Ci0gICAgICBhbGxvY2F0aW9uKCkgPSBuZXdfYWxsb2NhdGlvbjsKKyAgLy8gTk9U
RTogdGhpcyBvdmVybG9hZCBpcyBmb3IgaXRlcmF0b3JzIHRoYXQgYXJlICJmb3J3YXJkIiBjYXRl
Z29yeSBvciBiZXR0ZXIuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsCisg
ICAgICAgICAgICBFbmFibGVJZkF0TGVhc3RGb3J3YXJkSXRlcmF0b3I8Rm9yd2FyZEl0ZXJhdG9y
PiogPSBudWxscHRyPgorICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zLCBGb3J3
YXJkSXRlcmF0b3IgZmlyc3QsCisgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IgbGFz
dCkgeworICAgIGFzc2VydChwb3MgPj0gYmVnaW4oKSk7CisgICAgYXNzZXJ0KHBvcyA8PSBlbmQo
KSk7CisKKyAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUoZmlyc3QgIT0gbGFzdCkpIHsKKyAgICAg
IHJldHVybiBzdG9yYWdlXy5JbnNlcnQocG9zLCBJdGVyYXRvclZhbHVlQWRhcHRlcjxGb3J3YXJk
SXRlcmF0b3I+KGZpcnN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpkaXN0
YW5jZShmaXJzdCwgbGFzdCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICBEZXN0cm95KGlubGluZWRf
c3BhY2UoKSwgaW5saW5lZF9zcGFjZSgpICsgc2l6ZSgpKTsKLSAgICAgIGluaXRfYWxsb2NhdGlv
bihuZXdfYWxsb2NhdGlvbik7ICAvLyBidWc6IG9ubHkgaW5pdCBvbmNlCisgICAgICByZXR1cm4g
Y29uc3RfY2FzdDxpdGVyYXRvcj4ocG9zKTsKICAgICB9Ci0gICAgdGFnKCkuc2V0X2FsbG9jYXRl
ZF9zaXplKG5ld19zaXplKTsKICAgfQogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgot
ICB2YWx1ZV90eXBlJiBHcm93QW5kRW1wbGFjZUJhY2soQXJncyYmLi4uIGFyZ3MpIHsKLSAgICBh
c3NlcnQoc2l6ZSgpID09IGNhcGFjaXR5KCkpOwotICAgIGNvbnN0IHNpemVfdHlwZSBzID0gc2l6
ZSgpOwotCi0gICAgQWxsb2NhdGlvbiBuZXdfYWxsb2NhdGlvbihhbGxvY2F0b3IoKSwgMiAqIGNh
cGFjaXR5KCkpOworICAvLyBPdmVybG9hZCBvZiBgSW5saW5lZFZlY3Rvcjo6aW5zZXJ0KC4uLilg
IHRoYXQgaW5zZXJ0cyB0aGUgcmFuZ2UgW2BmaXJzdGAsCisgIC8vIGBsYXN0YCkgc3RhcnRpbmcg
YXQgYHBvc2AsIHJldHVybmluZyBhbiBgaXRlcmF0b3JgIHBvaW50aW5nIHRvIHRoZSBmaXJzdAor
ICAvLyBvZiB0aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudHMuCisgIC8vCisgIC8vIE5PVEU6IHRo
aXMgb3ZlcmxvYWQgaXMgZm9yIGl0ZXJhdG9ycyB0aGF0IGFyZSAiaW5wdXQiIGNhdGVnb3J5Lgor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwKKyAgICAgICAgICAgIERpc2FibGVJ
ZkF0TGVhc3RGb3J3YXJkSXRlcmF0b3I8SW5wdXRJdGVyYXRvcj4qID0gbnVsbHB0cj4KKyAgaXRl
cmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvcywgSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5w
dXRJdGVyYXRvciBsYXN0KSB7CisgICAgYXNzZXJ0KHBvcyA+PSBiZWdpbigpKTsKKyAgICBhc3Nl
cnQocG9zIDw9IGVuZCgpKTsKKworICAgIHNpemVfdHlwZSBpbmRleCA9IHN0ZDo6ZGlzdGFuY2Uo
Y2JlZ2luKCksIHBvcyk7CisgICAgZm9yIChzaXplX3R5cGUgaSA9IGluZGV4OyBmaXJzdCAhPSBs
YXN0OyArK2ksIHN0YXRpY19jYXN0PHZvaWQ+KCsrZmlyc3QpKSB7CisgICAgICBpbnNlcnQoZGF0
YSgpICsgaSwgKmZpcnN0KTsKKyAgICB9CiAKLSAgICB2YWx1ZV90eXBlJiBuZXdfZWxlbWVudCA9
Ci0gICAgICAgIENvbnN0cnVjdChuZXdfYWxsb2NhdGlvbi5idWZmZXIoKSArIHMsIHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgVW5pbml0aWFsaXplZENvcHkoc3RkOjptYWtlX21v
dmVfaXRlcmF0b3IoZGF0YSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfbW92
ZV9pdGVyYXRvcihkYXRhKCkgKyBzKSwKLSAgICAgICAgICAgICAgICAgICAgICBuZXdfYWxsb2Nh
dGlvbi5idWZmZXIoKSk7CisgICAgcmV0dXJuIGl0ZXJhdG9yKGRhdGEoKSArIGluZGV4KTsKKyAg
fQogCi0gICAgUmVzZXRBbGxvY2F0aW9uKG5ld19hbGxvY2F0aW9uLCBzICsgMSk7CisgIC8vIGBJ
bmxpbmVkVmVjdG9yOjplbXBsYWNlKC4uLilgCisgIC8vCisgIC8vIENvbnN0cnVjdHMgYW5kIGlu
c2VydHMgYW4gZWxlbWVudCB1c2luZyBgYXJncy4uLmAgaW4gdGhlIGlubGluZWQgdmVjdG9yIGF0
CisgIC8vIGBwb3NgLCByZXR1cm5pbmcgYW4gYGl0ZXJhdG9yYCBwb2ludGluZyB0byB0aGUgbmV3
bHkgZW1wbGFjZWQgZWxlbWVudC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIGl0
ZXJhdG9yIGVtcGxhY2UoY29uc3RfaXRlcmF0b3IgcG9zLCBBcmdzJiYuLi4gYXJncykgeworICAg
IGFzc2VydChwb3MgPj0gYmVnaW4oKSk7CisgICAgYXNzZXJ0KHBvcyA8PSBlbmQoKSk7CiAKLSAg
ICByZXR1cm4gbmV3X2VsZW1lbnQ7CisgICAgdmFsdWVfdHlwZSBkZWFsaWFzKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7CisgICAgcmV0dXJuIHN0b3JhZ2VfLkluc2VydChwb3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvclZhbHVlQWRhcHRlcjxNb3ZlSXRlcmF0b3I+
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdmVJdGVyYXRvcihzdGQ6OmFkZHJl
c3NvZihkZWFsaWFzKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CiAgIH0KIAot
ICB2b2lkIEluaXRBc3NpZ24oc2l6ZV90eXBlIG4pOwotICB2b2lkIEluaXRBc3NpZ24oc2l6ZV90
eXBlIG4sIGNvbnN0IHZhbHVlX3R5cGUmIHQpOwotCisgIC8vIGBJbmxpbmVkVmVjdG9yOjplbXBs
YWNlX2JhY2soLi4uKWAKKyAgLy8KKyAgLy8gQ29uc3RydWN0cyBhbmQgaW5zZXJ0cyBhbiBlbGVt
ZW50IHVzaW5nIGBhcmdzLi4uYCBpbiB0aGUgaW5saW5lZCB2ZWN0b3IgYXQKKyAgLy8gYGVuZCgp
YCwgcmV0dXJuaW5nIGEgYHJlZmVyZW5jZWAgdG8gdGhlIG5ld2x5IGVtcGxhY2VkIGVsZW1lbnQu
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICB2YWx1ZV90eXBlJiBDb25zdHJ1Y3Qo
cG9pbnRlciBwLCBBcmdzJiYuLi4gYXJncykgewotICAgIEFsbG9jYXRvclRyYWl0czo6Y29uc3Ry
dWN0KGFsbG9jYXRvcigpLCBwLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgIHJl
dHVybiAqcDsKKyAgcmVmZXJlbmNlIGVtcGxhY2VfYmFjayhBcmdzJiYuLi4gYXJncykgeworICAg
IHJldHVybiBzdG9yYWdlXy5FbXBsYWNlQmFjayhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OwogICB9CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXI+Ci0gIHZvaWQgVW5pbml0aWFsaXpl
ZENvcHkoSXRlciBzcmMsIEl0ZXIgc3JjX2xhc3QsIHZhbHVlX3R5cGUqIGRzdCkgewotICAgIGZv
ciAoOyBzcmMgIT0gc3JjX2xhc3Q7ICsrZHN0LCArK3NyYykgQ29uc3RydWN0KGRzdCwgKnNyYyk7
CisgIC8vIGBJbmxpbmVkVmVjdG9yOjpwdXNoX2JhY2soLi4uKWAKKyAgLy8KKyAgLy8gSW5zZXJ0
cyBhIGNvcHkgb2YgYHZgIGluIHRoZSBpbmxpbmVkIHZlY3RvciBhdCBgZW5kKClgLgorICB2b2lk
IHB1c2hfYmFjayhjb25zdF9yZWZlcmVuY2UgdikgeyBzdGF0aWNfY2FzdDx2b2lkPihlbXBsYWNl
X2JhY2sodikpOyB9CisKKyAgLy8gT3ZlcmxvYWQgb2YgYElubGluZWRWZWN0b3I6OnB1c2hfYmFj
ayguLi4pYCBmb3IgaW5zZXJ0aW5nIGB2YCBhdCBgZW5kKClgCisgIC8vIHVzaW5nIG1vdmUgc2Vt
YW50aWNzLgorICB2b2lkIHB1c2hfYmFjayhydmFsdWVfcmVmZXJlbmNlIHYpIHsKKyAgICBzdGF0
aWNfY2FzdDx2b2lkPihlbXBsYWNlX2JhY2soc3RkOjptb3ZlKHYpKSk7CiAgIH0KIAotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgdm9pZCBVbmluaXRpYWxpemVkRmlsbCh2YWx1ZV90
eXBlKiBkc3QsIHZhbHVlX3R5cGUqIGRzdF9sYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKLSAgICBmb3IgKDsgZHN0ICE9IGRzdF9sYXN0OyArK2Rz
dCkgQ29uc3RydWN0KGRzdCwgYXJncy4uLik7CisgIC8vIGBJbmxpbmVkVmVjdG9yOjpwb3BfYmFj
aygpYAorICAvLworICAvLyBEZXN0cm95cyB0aGUgZWxlbWVudCBhdCBgYmFjaygpYCwgcmVkdWNp
bmcgdGhlIHNpemUgYnkgYDFgLgorICB2b2lkIHBvcF9iYWNrKCkgbm9leGNlcHQgeworICAgIGFz
c2VydCghZW1wdHkoKSk7CisKKyAgICBBbGxvY2F0b3JUcmFpdHM6OmRlc3Ryb3koKnN0b3JhZ2Vf
LkdldEFsbG9jUHRyKCksIGRhdGEoKSArIChzaXplKCkgLSAxKSk7CisgICAgc3RvcmFnZV8uU3Vi
dHJhY3RTaXplKDEpOwogICB9CiAKLSAgLy8gRGVzdHJveSBbcHRyLCBwdHJfbGFzdCkgaW4gcGxh
Y2UuCi0gIHZvaWQgRGVzdHJveSh2YWx1ZV90eXBlKiBwdHIsIHZhbHVlX3R5cGUqIHB0cl9sYXN0
KTsKKyAgLy8gYElubGluZWRWZWN0b3I6OmVyYXNlKC4uLilgCisgIC8vCisgIC8vIEVyYXNlcyB0
aGUgZWxlbWVudCBhdCBgcG9zYCwgcmV0dXJuaW5nIGFuIGBpdGVyYXRvcmAgcG9pbnRpbmcgdG8g
d2hlcmUgdGhlCisgIC8vIGVyYXNlZCBlbGVtZW50IHdhcyBsb2NhdGVkLgorICAvLworICAvLyBO
T1RFOiBtYXkgcmV0dXJuIGBlbmQoKWAsIHdoaWNoIGlzIG5vdCBkZXJlZmVyZW5jYWJsZS4KKyAg
aXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgcG9zKSB7CisgICAgYXNzZXJ0KHBvcyA+PSBi
ZWdpbigpKTsKKyAgICBhc3NlcnQocG9zIDwgZW5kKCkpOwogCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBJdGVyPgotICB2b2lkIEFwcGVuZFJhbmdlKEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCwgc3RkOjpp
bnB1dF9pdGVyYXRvcl90YWcpIHsKLSAgICBzdGQ6OmNvcHkoZmlyc3QsIGxhc3QsIHN0ZDo6YmFj
a19pbnNlcnRlcigqdGhpcykpOworICAgIHJldHVybiBzdG9yYWdlXy5FcmFzZShwb3MsIHBvcyAr
IDEpOwogICB9CiAKLSAgLy8gRmFzdGVyIHBhdGggZm9yIGZvcndhcmQgaXRlcmF0b3JzLgotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KLSAgdm9pZCBBcHBlbmRSYW5nZShJdGVyIGZpcnN0LCBJ
dGVyIGxhc3QsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpOworICAvLyBPdmVybG9hZCBvZiBg
SW5saW5lZFZlY3Rvcjo6ZXJhc2UoLi4uKWAgdGhhdCBlcmFzZXMgZXZlcnkgZWxlbWVudCBpbiB0
aGUKKyAgLy8gcmFuZ2UgW2Bmcm9tYCwgYHRvYCksIHJldHVybmluZyBhbiBgaXRlcmF0b3JgIHBv
aW50aW5nIHRvIHdoZXJlIHRoZSBmaXJzdAorICAvLyBlcmFzZWQgZWxlbWVudCB3YXMgbG9jYXRl
ZC4KKyAgLy8KKyAgLy8gTk9URTogbWF5IHJldHVybiBgZW5kKClgLCB3aGljaCBpcyBub3QgZGVy
ZWZlcmVuY2FibGUuCisgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZyb20sIGNvbnN0
X2l0ZXJhdG9yIHRvKSB7CisgICAgYXNzZXJ0KGZyb20gPj0gYmVnaW4oKSk7CisgICAgYXNzZXJ0
KGZyb20gPD0gdG8pOworICAgIGFzc2VydCh0byA8PSBlbmQoKSk7CiAKLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIEl0ZXI+Ci0gIHZvaWQgQXBwZW5kUmFuZ2UoSXRlciBmaXJzdCwgSXRlciBsYXN0KSB7
Ci0gICAgdXNpbmcgSXRlclRhZyA9IHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXI+
OjppdGVyYXRvcl9jYXRlZ29yeTsKLSAgICBBcHBlbmRSYW5nZShmaXJzdCwgbGFzdCwgSXRlclRh
ZygpKTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUoZnJvbSAhPSB0bykpIHsKKyAgICAgIHJl
dHVybiBzdG9yYWdlXy5FcmFzZShmcm9tLCB0byk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVy
biBjb25zdF9jYXN0PGl0ZXJhdG9yPihmcm9tKTsKKyAgICB9CiAgIH0KIAotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSXRlcj4KLSAgdm9pZCBBc3NpZ25SYW5nZShJdGVyIGZpcnN0LCBJdGVyIGxhc3Qs
IHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnKTsKKyAgLy8gYElubGluZWRWZWN0b3I6OmNsZWFyKClg
CisgIC8vCisgIC8vIERlc3Ryb3lzIGFsbCBlbGVtZW50cyBpbiB0aGUgaW5saW5lZCB2ZWN0b3Is
IHNldHRpbmcgdGhlIHNpemUgdG8gYDBgIGFuZAorICAvLyBkZWFsbG9jYXRpbmcgYW55IGhlbGQg
bWVtb3J5LgorICB2b2lkIGNsZWFyKCkgbm9leGNlcHQgeworICAgIGlubGluZWRfdmVjdG9yX2lu
dGVybmFsOjpEZXN0cm95RWxlbWVudHMoc3RvcmFnZV8uR2V0QWxsb2NQdHIoKSwgZGF0YSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSgpKTsKKyAg
ICBzdG9yYWdlXy5EZWFsbG9jYXRlSWZBbGxvY2F0ZWQoKTsKKyAgICBzdG9yYWdlXy5TZXRJbmxp
bmVkU2l6ZSgwKTsKKyAgfQogCi0gIC8vIEZhc3RlciBwYXRoIGZvciBmb3J3YXJkIGl0ZXJhdG9y
cy4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXI+Ci0gIHZvaWQgQXNzaWduUmFuZ2UoSXRlciBm
aXJzdCwgSXRlciBsYXN0LCBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKTsKKyAgLy8gYElubGlu
ZWRWZWN0b3I6OnJlc2VydmUoLi4uKWAKKyAgLy8KKyAgLy8gRW5zdXJlcyB0aGF0IHRoZXJlIGlz
IGVub3VnaCByb29tIGZvciBhdCBsZWFzdCBgbmAgZWxlbWVudHMuCisgIHZvaWQgcmVzZXJ2ZShz
aXplX3R5cGUgbikgeyBzdG9yYWdlXy5SZXNlcnZlKG4pOyB9CisKKyAgLy8gYElubGluZWRWZWN0
b3I6OnNocmlua190b19maXQoKWAKKyAgLy8KKyAgLy8gUmVkdWNlcyBtZW1vcnkgdXNhZ2UgYnkg
ZnJlZWluZyB1bnVzZWQgbWVtb3J5LiBBZnRlciBiZWluZyBjYWxsZWQsIGNhbGxzIHRvCisgIC8v
IGBjYXBhY2l0eSgpYCB3aWxsIGJlIGVxdWFsIHRvIGBtYXgoTiwgc2l6ZSgpKWAuCisgIC8vCisg
IC8vIElmIGBzaXplKCkgPD0gTmAgYW5kIHRoZSBpbmxpbmVkIHZlY3RvciBjb250YWlucyBhbGxv
Y2F0ZWQgbWVtb3J5LCB0aGUKKyAgLy8gZWxlbWVudHMgd2lsbCBhbGwgYmUgbW92ZWQgdG8gdGhl
IGlubGluZWQgc3BhY2UgYW5kIHRoZSBhbGxvY2F0ZWQgbWVtb3J5CisgIC8vIHdpbGwgYmUgZGVh
bGxvY2F0ZWQuCisgIC8vCisgIC8vIElmIGBzaXplKCkgPiBOYCBhbmQgYHNpemUoKSA8IGNhcGFj
aXR5KClgLCB0aGUgZWxlbWVudHMgd2lsbCBiZSBtb3ZlZCB0byBhCisgIC8vIHNtYWxsZXIgYWxs
b2NhdGlvbi4KKyAgdm9pZCBzaHJpbmtfdG9fZml0KCkgeworICAgIGlmIChzdG9yYWdlXy5HZXRJ
c0FsbG9jYXRlZCgpKSB7CisgICAgICBzdG9yYWdlXy5TaHJpbmtUb0ZpdCgpOworICAgIH0KKyAg
fQogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgotICB2b2lkIEFzc2lnblJhbmdlKEl0ZXIg
Zmlyc3QsIEl0ZXIgbGFzdCkgewotICAgIHVzaW5nIEl0ZXJUYWcgPSB0eXBlbmFtZSBzdGQ6Oml0
ZXJhdG9yX3RyYWl0czxJdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAgQXNzaWduUmFuZ2Uo
Zmlyc3QsIGxhc3QsIEl0ZXJUYWcoKSk7CisgIC8vIGBJbmxpbmVkVmVjdG9yOjpzd2FwKC4uLilg
CisgIC8vCisgIC8vIFN3YXBzIHRoZSBjb250ZW50cyBvZiB0aGUgaW5saW5lZCB2ZWN0b3Igd2l0
aCBgb3RoZXJgLgorICB2b2lkIHN3YXAoSW5saW5lZFZlY3RvciYgb3RoZXIpIHsKKyAgICBpZiAo
QUJTTF9QUkVESUNUX1RSVUUodGhpcyAhPSBzdGQ6OmFkZHJlc3NvZihvdGhlcikpKSB7CisgICAg
ICBzdG9yYWdlXy5Td2FwKHN0ZDo6YWRkcmVzc29mKG90aGVyLnN0b3JhZ2VfKSk7CisgICAgfQog
ICB9CiAKLSAgaXRlcmF0b3IgSW5zZXJ0V2l0aENvdW50KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9u
LCBzaXplX3R5cGUgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlX3R5
cGUmIHYpOwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXI+Ci0gIGl0ZXJhdG9yIElu
c2VydFdpdGhSYW5nZShjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwgSW5wdXRJdGVyIGZpcnN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyIGxhc3QsIHN0ZDo6aW5wdXRfaXRl
cmF0b3JfdGFnKTsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyPgotICBpdGVyYXRv
ciBJbnNlcnRXaXRoUmFuZ2UoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIEZvcndhcmRJdGVyIGZp
cnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXIgbGFzdCwgc3RkOjpm
b3J3YXJkX2l0ZXJhdG9yX3RhZyk7Ci0KLSAgQWxsb2NhdG9yQW5kVGFnIGFsbG9jYXRvcl9hbmRf
dGFnXzsKLQotICAvLyBFaXRoZXIgdGhlIGlubGluZWQgb3IgYWxsb2NhdGVkIHJlcHJlc2VudGF0
aW9uCi0gIHVuaW9uIFJlcCB7Ci0gICAgLy8gVXNlIHN0cnVjdCB0byBwZXJmb3JtIGluZGlyZWN0
aW9uIHRoYXQgc29sdmVzIGEgYml6YXJyZSBjb21waWxhdGlvbgotICAgIC8vIGVycm9yIG9uIFZp
c3VhbCBTdHVkaW8gKGFsbCBrbm93biB2ZXJzaW9ucykuCi0gICAgc3RydWN0IHsKLSAgICAgIHR5
cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZih2YWx1ZV90eXBlKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWdub2YodmFsdWVfdHlwZSk+Ojp0eXBlIGlu
bGluZWRbTl07Ci0gICAgfSBpbmxpbmVkX3N0b3JhZ2U7Ci0gICAgc3RydWN0IHsKLSAgICAgIHR5
cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihBbGxvY2F0aW9uKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWdub2YoQWxsb2NhdGlvbik+Ojp0eXBlIGFs
bG9jYXRpb247Ci0gICAgfSBhbGxvY2F0aW9uX3N0b3JhZ2U7Ci0gIH0gcmVwXzsKKyBwcml2YXRl
OgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVGhlVCwgc2l6ZV90IFRoZU4sIHR5
cGVuYW1lIFRoZUE+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBjb25zdCBhYnNsOjpJ
bmxpbmVkVmVjdG9yPFRoZVQsIFRoZU4sIFRoZUE+JiBhKTsKKworICBTdG9yYWdlIHN0b3JhZ2Vf
OwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIElubGluZWRWZWN0b3IgTm9uLU1l
bWJlciBGdW5jdGlvbnMKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS8vIHN3YXAoKQorLy8g
YHN3YXAoLi4uKWAKIC8vCi0vLyBTd2FwcyB0aGUgY29udGVudHMgb2YgdHdvIGlubGluZWQgdmVj
dG9ycy4gVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbgotLy8gc2ltcGx5IGNhbGxzIElubGluZWRW
ZWN0b3I6OnN3YXAob3RoZXJfaW5saW5lZF92ZWN0b3IpLgorLy8gU3dhcHMgdGhlIGNvbnRlbnRz
IG9mIHR3byBpbmxpbmVkIHZlY3RvcnMuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4s
IHR5cGVuYW1lIEE+Ci12b2lkIHN3YXAoSW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYSwKLSAgICAg
ICAgICBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBiKSBub2V4Y2VwdChub2V4Y2VwdChhLnN3YXAo
YikpKSB7Cit2b2lkIHN3YXAoYWJzbDo6SW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYSwKKyAgICAg
ICAgICBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBiKSBub2V4Y2VwdChub2V4Y2VwdChh
LnN3YXAoYikpKSB7CiAgIGEuc3dhcChiKTsKIH0KIAotLy8gb3BlcmF0b3I9PSgpCisvLyBgb3Bl
cmF0b3I9PSguLi4pYAogLy8KLS8vIFRlc3RzIHRoZSBlcXVpdmFsZW5jeSBvZiB0aGUgY29udGVu
dHMgb2YgdHdvIGlubGluZWQgdmVjdG9ycy4KKy8vIFRlc3RzIGZvciB2YWx1ZS1lcXVhbGl0eSBv
ZiB0d28gaW5saW5lZCB2ZWN0b3JzLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0
eXBlbmFtZSBBPgotYm9vbCBvcGVyYXRvcj09KGNvbnN0IElubGluZWRWZWN0b3I8VCwgTiwgQT4m
IGEsCi0gICAgICAgICAgICAgICAgY29uc3QgSW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYikgewot
ICByZXR1cm4gYWJzbDo6ZXF1YWwoYS5iZWdpbigpLCBhLmVuZCgpLCBiLmJlZ2luKCksIGIuZW5k
KCkpOworYm9vbCBvcGVyYXRvcj09KGNvbnN0IGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4m
IGEsCisgICAgICAgICAgICAgICAgY29uc3QgYWJzbDo6SW5saW5lZFZlY3RvcjxULCBOLCBBPiYg
YikgeworICBhdXRvIGFfZGF0YSA9IGEuZGF0YSgpOworICBhdXRvIGJfZGF0YSA9IGIuZGF0YSgp
OworICByZXR1cm4gYWJzbDo6ZXF1YWwoYV9kYXRhLCBhX2RhdGEgKyBhLnNpemUoKSwgYl9kYXRh
LCBiX2RhdGEgKyBiLnNpemUoKSk7CiB9CiAKLS8vIG9wZXJhdG9yIT0oKQorLy8gYG9wZXJhdG9y
IT0oLi4uKWAKIC8vCi0vLyBUZXN0cyB0aGUgaW5lcXVhbGl0eSBvZiB0aGUgY29udGVudHMgb2Yg
dHdvIGlubGluZWQgdmVjdG9ycy4KKy8vIFRlc3RzIGZvciB2YWx1ZS1pbmVxdWFsaXR5IG9mIHR3
byBpbmxpbmVkIHZlY3RvcnMuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVu
YW1lIEE+Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgSW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYSwK
LSAgICAgICAgICAgICAgICBjb25zdCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBiKSB7Citib29s
IG9wZXJhdG9yIT0oY29uc3QgYWJzbDo6SW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYSwKKyAgICAg
ICAgICAgICAgICBjb25zdCBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBiKSB7CiAgIHJl
dHVybiAhKGEgPT0gYik7CiB9CiAKLS8vIG9wZXJhdG9yPCgpCisvLyBgb3BlcmF0b3I8KC4uLilg
CiAvLwotLy8gVGVzdHMgd2hldGhlciB0aGUgY29udGVudHMgb2Ygb25lIGlubGluZWQgdmVjdG9y
IGFyZSBsZXNzIHRoYW4gdGhlIGNvbnRlbnRzCi0vLyBvZiBhbm90aGVyIHRocm91Z2ggYSBsZXhp
Y29ncmFwaGljYWwgY29tcGFyaXNvbiBvcGVyYXRpb24uCisvLyBUZXN0cyB3aGV0aGVyIHRoZSB2
YWx1ZSBvZiBhbiBpbmxpbmVkIHZlY3RvciBpcyBsZXNzIHRoYW4gdGhlIHZhbHVlIG9mCisvLyBh
bm90aGVyIGlubGluZWQgdmVjdG9yIHVzaW5nIGEgbGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24g
YWxnb3JpdGhtLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgot
Ym9vbCBvcGVyYXRvcjwoY29uc3QgSW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYSwKLSAgICAgICAg
ICAgICAgIGNvbnN0IElubGluZWRWZWN0b3I8VCwgTiwgQT4mIGIpIHsKLSAgcmV0dXJuIHN0ZDo6
bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoYS5iZWdpbigpLCBhLmVuZCgpLCBiLmJlZ2luKCksIGIu
ZW5kKCkpOworYm9vbCBvcGVyYXRvcjwoY29uc3QgYWJzbDo6SW5saW5lZFZlY3RvcjxULCBOLCBB
PiYgYSwKKyAgICAgICAgICAgICAgIGNvbnN0IGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4m
IGIpIHsKKyAgYXV0byBhX2RhdGEgPSBhLmRhdGEoKTsKKyAgYXV0byBiX2RhdGEgPSBiLmRhdGEo
KTsKKyAgcmV0dXJuIHN0ZDo6bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoYV9kYXRhLCBhX2RhdGEg
KyBhLnNpemUoKSwgYl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiX2RhdGEgKyBiLnNpemUoKSk7CiB9CiAKLS8vIG9wZXJhdG9yPigpCisvLyBgb3BlcmF0b3I+
KC4uLilgCiAvLwotLy8gVGVzdHMgd2hldGhlciB0aGUgY29udGVudHMgb2Ygb25lIGlubGluZWQg
dmVjdG9yIGFyZSBncmVhdGVyIHRoYW4gdGhlCi0vLyBjb250ZW50cyBvZiBhbm90aGVyIHRocm91
Z2ggYSBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBvcGVyYXRpb24uCisvLyBUZXN0cyB3aGV0
aGVyIHRoZSB2YWx1ZSBvZiBhbiBpbmxpbmVkIHZlY3RvciBpcyBncmVhdGVyIHRoYW4gdGhlIHZh
bHVlIG9mCisvLyBhbm90aGVyIGlubGluZWQgdmVjdG9yIHVzaW5nIGEgbGV4aWNvZ3JhcGhpY2Fs
IGNvbXBhcmlzb24gYWxnb3JpdGhtLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0
eXBlbmFtZSBBPgotYm9vbCBvcGVyYXRvcj4oY29uc3QgSW5saW5lZFZlY3RvcjxULCBOLCBBPiYg
YSwKLSAgICAgICAgICAgICAgIGNvbnN0IElubGluZWRWZWN0b3I8VCwgTiwgQT4mIGIpIHsKK2Jv
b2wgb3BlcmF0b3I+KGNvbnN0IGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4mIGEsCisgICAg
ICAgICAgICAgICBjb25zdCBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBiKSB7CiAgIHJl
dHVybiBiIDwgYTsKIH0KIAotLy8gb3BlcmF0b3I8PSgpCisvLyBgb3BlcmF0b3I8PSguLi4pYAog
Ly8KLS8vIFRlc3RzIHdoZXRoZXIgdGhlIGNvbnRlbnRzIG9mIG9uZSBpbmxpbmVkIHZlY3RvciBh
cmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvCi0vLyB0aGUgY29udGVudHMgb2YgYW5vdGhlciB0aHJv
dWdoIGEgbGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gb3BlcmF0aW9uLgorLy8gVGVzdHMgd2hl
dGhlciB0aGUgdmFsdWUgb2YgYW4gaW5saW5lZCB2ZWN0b3IgaXMgbGVzcyB0aGFuIG9yIGVxdWFs
IHRvIHRoZQorLy8gdmFsdWUgb2YgYW5vdGhlciBpbmxpbmVkIHZlY3RvciB1c2luZyBhIGxleGlj
b2dyYXBoaWNhbCBjb21wYXJpc29uIGFsZ29yaXRobS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBz
aXplX3QgTiwgdHlwZW5hbWUgQT4KLWJvb2wgb3BlcmF0b3I8PShjb25zdCBJbmxpbmVkVmVjdG9y
PFQsIE4sIEE+JiBhLAotICAgICAgICAgICAgICAgIGNvbnN0IElubGluZWRWZWN0b3I8VCwgTiwg
QT4mIGIpIHsKK2Jvb2wgb3BlcmF0b3I8PShjb25zdCBhYnNsOjpJbmxpbmVkVmVjdG9yPFQsIE4s
IEE+JiBhLAorICAgICAgICAgICAgICAgIGNvbnN0IGFic2w6OklubGluZWRWZWN0b3I8VCwgTiwg
QT4mIGIpIHsKICAgcmV0dXJuICEoYiA8IGEpOwogfQogCi0vLyBvcGVyYXRvcj49KCkKKy8vIGBv
cGVyYXRvcj49KC4uLilgCiAvLwotLy8gVGVzdHMgd2hldGhlciB0aGUgY29udGVudHMgb2Ygb25l
IGlubGluZWQgdmVjdG9yIGFyZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8KLS8vIHRoZSBjb250
ZW50cyBvZiBhbm90aGVyIHRocm91Z2ggYSBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBvcGVy
YXRpb24uCisvLyBUZXN0cyB3aGV0aGVyIHRoZSB2YWx1ZSBvZiBhbiBpbmxpbmVkIHZlY3RvciBp
cyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlCisvLyB2YWx1ZSBvZiBhbm90aGVyIGlubGlu
ZWQgdmVjdG9yIHVzaW5nIGEgbGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gYWxnb3JpdGhtLgog
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgotYm9vbCBvcGVyYXRv
cj49KGNvbnN0IElubGluZWRWZWN0b3I8VCwgTiwgQT4mIGEsCi0gICAgICAgICAgICAgICAgY29u
c3QgSW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYikgeworYm9vbCBvcGVyYXRvcj49KGNvbnN0IGFi
c2w6OklubGluZWRWZWN0b3I8VCwgTiwgQT4mIGEsCisgICAgICAgICAgICAgICAgY29uc3QgYWJz
bDo6SW5saW5lZFZlY3RvcjxULCBOLCBBPiYgYikgewogICByZXR1cm4gIShhIDwgYik7CiB9CiAK
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBJbXBsZW1lbnRhdGlvbiBvZiBJbmxpbmVkVmVj
dG9yCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYEFic2xIYXNoVmFsdWUoLi4uKWAKIC8v
Ci0vLyBEbyBub3QgZGVwZW5kIG9uIGFueSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGJlbG93IHRo
aXMgbGluZS4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgot
SW5saW5lZFZlY3RvcjxULCBOLCBBPjo6SW5saW5lZFZlY3Rvcihjb25zdCBJbmxpbmVkVmVjdG9y
JiB2KQotICAgIDogYWxsb2NhdG9yX2FuZF90YWdfKHYuYWxsb2NhdG9yKCkpIHsKLSAgcmVzZXJ2
ZSh2LnNpemUoKSk7Ci0gIGlmIChhbGxvY2F0ZWQoKSkgewotICAgIFVuaW5pdGlhbGl6ZWRDb3B5
KHYuYmVnaW4oKSwgdi5lbmQoKSwgYWxsb2NhdGVkX3NwYWNlKCkpOwotICAgIHRhZygpLnNldF9h
bGxvY2F0ZWRfc2l6ZSh2LnNpemUoKSk7Ci0gIH0gZWxzZSB7Ci0gICAgVW5pbml0aWFsaXplZENv
cHkodi5iZWdpbigpLCB2LmVuZCgpLCBpbmxpbmVkX3NwYWNlKCkpOwotICAgIHRhZygpLnNldF9p
bmxpbmVfc2l6ZSh2LnNpemUoKSk7Ci0gIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNp
emVfdCBOLCB0eXBlbmFtZSBBPgotSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6SW5saW5lZFZlY3Rv
cihjb25zdCBJbmxpbmVkVmVjdG9yJiB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCi0gICAgOiBhbGxvY2F0b3JfYW5k
X3RhZ18oYWxsb2MpIHsKLSAgcmVzZXJ2ZSh2LnNpemUoKSk7Ci0gIGlmIChhbGxvY2F0ZWQoKSkg
ewotICAgIFVuaW5pdGlhbGl6ZWRDb3B5KHYuYmVnaW4oKSwgdi5lbmQoKSwgYWxsb2NhdGVkX3Nw
YWNlKCkpOwotICAgIHRhZygpLnNldF9hbGxvY2F0ZWRfc2l6ZSh2LnNpemUoKSk7Ci0gIH0gZWxz
ZSB7Ci0gICAgVW5pbml0aWFsaXplZENvcHkodi5iZWdpbigpLCB2LmVuZCgpLCBpbmxpbmVkX3Nw
YWNlKCkpOwotICAgIHRhZygpLnNldF9pbmxpbmVfc2l6ZSh2LnNpemUoKSk7Ci0gIH0KLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgotSW5saW5lZFZlY3Rv
cjxULCBOLCBBPjo6SW5saW5lZFZlY3RvcihJbmxpbmVkVmVjdG9yJiYgdikgbm9leGNlcHQoCi0g
ICAgYWJzbDo6YWxsb2NhdG9yX2lzX25vdGhyb3c8YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSB8fAot
ICAgIHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8dmFsdWVfdHlwZT46OnZhbHVl
KQotICAgIDogYWxsb2NhdG9yX2FuZF90YWdfKHYuYWxsb2NhdG9yX2FuZF90YWdfKSB7Ci0gIGlm
ICh2LmFsbG9jYXRlZCgpKSB7Ci0gICAgLy8gV2UgY2FuIGp1c3Qgc3RlYWwgdGhlIHVuZGVybHlp
bmcgYnVmZmVyIGZyb20gdGhlIHNvdXJjZS4KLSAgICAvLyBUaGF0IGxlYXZlcyB0aGUgc291cmNl
IGVtcHR5LCBzbyB3ZSBjbGVhciBpdHMgc2l6ZS4KLSAgICBpbml0X2FsbG9jYXRpb24odi5hbGxv
Y2F0aW9uKCkpOwotICAgIHYudGFnKCkgPSBUYWcoKTsKLSAgfSBlbHNlIHsKLSAgICBVbmluaXRp
YWxpemVkQ29weShzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih2LmlubGluZWRfc3BhY2UoKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX21vdmVfaXRlcmF0b3Iodi5pbmxpbmVkX3Nw
YWNlKCkgKyB2LnNpemUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgaW5saW5lZF9zcGFjZSgp
KTsKLSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+
Ci1JbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJbmxpbmVkVmVjdG9yKAotICAgIElubGluZWRWZWN0
b3ImJiB2LAotICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJgotICAgICAgICBhbGxvYykgbm9leGNl
cHQoYWJzbDo6YWxsb2NhdG9yX2lzX25vdGhyb3c8YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSkKLSAg
ICA6IGFsbG9jYXRvcl9hbmRfdGFnXyhhbGxvYykgewotICBpZiAodi5hbGxvY2F0ZWQoKSkgewot
ICAgIGlmIChhbGxvYyA9PSB2LmFsbG9jYXRvcigpKSB7Ci0gICAgICAvLyBXZSBjYW4ganVzdCBz
dGVhbCB0aGUgYWxsb2NhdGlvbiBmcm9tIHRoZSBzb3VyY2UuCi0gICAgICB0YWcoKSA9IHYudGFn
KCk7Ci0gICAgICBpbml0X2FsbG9jYXRpb24odi5hbGxvY2F0aW9uKCkpOwotICAgICAgdi50YWco
KSA9IFRhZygpOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBXZSBuZWVkIHRvIHVzZSBvdXIgb3du
IGFsbG9jYXRvcgotICAgICAgcmVzZXJ2ZSh2LnNpemUoKSk7Ci0gICAgICBVbmluaXRpYWxpemVk
Q29weShzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcih2LmJlZ2luKCkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYWtlX21vdmVfaXRlcmF0b3Iodi5lbmQoKSksIGFsbG9jYXRlZF9zcGFj
ZSgpKTsKLSAgICAgIHRhZygpLnNldF9hbGxvY2F0ZWRfc2l6ZSh2LnNpemUoKSk7Ci0gICAgfQot
ICB9IGVsc2UgewotICAgIFVuaW5pdGlhbGl6ZWRDb3B5KHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9y
KHYuaW5saW5lZF9zcGFjZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfbW92
ZV9pdGVyYXRvcih2LmlubGluZWRfc3BhY2UoKSArIHYuc2l6ZSgpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICBpbmxpbmVkX3NwYWNlKCkpOwotICAgIHRhZygpLnNldF9pbmxpbmVfc2l6ZSh2LnNp
emUoKSk7Ci0gIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFt
ZSBBPgotdm9pZCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpJbml0QXNzaWduKHNpemVfdHlwZSBu
LCBjb25zdCB2YWx1ZV90eXBlJiB0KSB7Ci0gIGlmIChuID4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBl
PihOKSkgewotICAgIEFsbG9jYXRpb24gbmV3X2FsbG9jYXRpb24oYWxsb2NhdG9yKCksIG4pOwot
ICAgIGluaXRfYWxsb2NhdGlvbihuZXdfYWxsb2NhdGlvbik7Ci0gICAgVW5pbml0aWFsaXplZEZp
bGwoYWxsb2NhdGVkX3NwYWNlKCksIGFsbG9jYXRlZF9zcGFjZSgpICsgbiwgdCk7Ci0gICAgdGFn
KCkuc2V0X2FsbG9jYXRlZF9zaXplKG4pOwotICB9IGVsc2UgewotICAgIFVuaW5pdGlhbGl6ZWRG
aWxsKGlubGluZWRfc3BhY2UoKSwgaW5saW5lZF9zcGFjZSgpICsgbiwgdCk7Ci0gICAgdGFnKCku
c2V0X2lubGluZV9zaXplKG4pOwotICB9Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgTiwgdHlwZW5hbWUgQT4KLXZvaWQgSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6SW5pdEFzc2ln
bihzaXplX3R5cGUgbikgewotICBpZiAobiA+IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oTikpIHsK
LSAgICBBbGxvY2F0aW9uIG5ld19hbGxvY2F0aW9uKGFsbG9jYXRvcigpLCBuKTsKLSAgICBpbml0
X2FsbG9jYXRpb24obmV3X2FsbG9jYXRpb24pOwotICAgIFVuaW5pdGlhbGl6ZWRGaWxsKGFsbG9j
YXRlZF9zcGFjZSgpLCBhbGxvY2F0ZWRfc3BhY2UoKSArIG4pOwotICAgIHRhZygpLnNldF9hbGxv
Y2F0ZWRfc2l6ZShuKTsKLSAgfSBlbHNlIHsKLSAgICBVbmluaXRpYWxpemVkRmlsbChpbmxpbmVk
X3NwYWNlKCksIGlubGluZWRfc3BhY2UoKSArIG4pOwotICAgIHRhZygpLnNldF9pbmxpbmVfc2l6
ZShuKTsKLSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1l
IEE+Ci12b2lkIElubGluZWRWZWN0b3I8VCwgTiwgQT46OnJlc2l6ZShzaXplX3R5cGUgbikgewot
ICBzaXplX3R5cGUgcyA9IHNpemUoKTsKLSAgaWYgKG4gPCBzKSB7Ci0gICAgZXJhc2UoYmVnaW4o
KSArIG4sIGVuZCgpKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgcmVzZXJ2ZShuKTsKLSAgYXNzZXJ0
KGNhcGFjaXR5KCkgPj0gbik7Ci0KLSAgLy8gRmlsbCBuZXcgc3BhY2Ugd2l0aCBlbGVtZW50cyBj
b25zdHJ1Y3RlZCBpbi1wbGFjZS4KLSAgaWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgVW5pbml0aWFs
aXplZEZpbGwoYWxsb2NhdGVkX3NwYWNlKCkgKyBzLCBhbGxvY2F0ZWRfc3BhY2UoKSArIG4pOwot
ICAgIHRhZygpLnNldF9hbGxvY2F0ZWRfc2l6ZShuKTsKLSAgfSBlbHNlIHsKLSAgICBVbmluaXRp
YWxpemVkRmlsbChpbmxpbmVkX3NwYWNlKCkgKyBzLCBpbmxpbmVkX3NwYWNlKCkgKyBuKTsKLSAg
ICB0YWcoKS5zZXRfaW5saW5lX3NpemUobik7Ci0gIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgotdm9pZCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+Ojpy
ZXNpemUoc2l6ZV90eXBlIG4sIGNvbnN0IHZhbHVlX3R5cGUmIGVsZW0pIHsKLSAgc2l6ZV90eXBl
IHMgPSBzaXplKCk7Ci0gIGlmIChuIDwgcykgewotICAgIGVyYXNlKGJlZ2luKCkgKyBuLCBlbmQo
KSk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIHJlc2VydmUobik7Ci0gIGFzc2VydChjYXBhY2l0eSgp
ID49IG4pOwotCi0gIC8vIEZpbGwgbmV3IHNwYWNlIHdpdGggY29waWVzIG9mICdlbGVtJy4KLSAg
aWYgKGFsbG9jYXRlZCgpKSB7Ci0gICAgVW5pbml0aWFsaXplZEZpbGwoYWxsb2NhdGVkX3NwYWNl
KCkgKyBzLCBhbGxvY2F0ZWRfc3BhY2UoKSArIG4sIGVsZW0pOwotICAgIHRhZygpLnNldF9hbGxv
Y2F0ZWRfc2l6ZShuKTsKLSAgfSBlbHNlIHsKLSAgICBVbmluaXRpYWxpemVkRmlsbChpbmxpbmVk
X3NwYWNlKCkgKyBzLCBpbmxpbmVkX3NwYWNlKCkgKyBuLCBlbGVtKTsKLSAgICB0YWcoKS5zZXRf
aW5saW5lX3NpemUobik7Ci0gIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBO
LCB0eXBlbmFtZSBBPgotdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci10eXBlbmFtZSBJbmxp
bmVkVmVjdG9yPFQsIE4sIEE+OjppdGVyYXRvciBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjplbXBs
YWNlKAotICAgIGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBBcmdzJiYuLi4gYXJncykgewotICBh
c3NlcnQocG9zaXRpb24gPj0gYmVnaW4oKSk7Ci0gIGFzc2VydChwb3NpdGlvbiA8PSBlbmQoKSk7
Ci0gIGlmIChwb3NpdGlvbiA9PSBlbmQoKSkgewotICAgIGVtcGxhY2VfYmFjayhzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOwotICAgIHJldHVybiBlbmQoKSAtIDE7Ci0gIH0KLQotICBUIG5l
d190ID0gVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotCi0gIGF1dG8gcmFuZ2UgPSBT
aGlmdFJpZ2h0KHBvc2l0aW9uLCAxKTsKLSAgaWYgKHJhbmdlLmZpcnN0ID09IHJhbmdlLnNlY29u
ZCkgewotICAgIC8vIGNvbnN0cnVjdGluZyBpbnRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5Ci0gICAg
Q29uc3RydWN0KHJhbmdlLmZpcnN0LCBzdGQ6Om1vdmUobmV3X3QpKTsKLSAgfSBlbHNlIHsKLSAg
ICAvLyBhc3NpZ25pbmcgaW50byBtb3ZlZC1mcm9tIG9iamVjdAotICAgICpyYW5nZS5maXJzdCA9
IFQoc3RkOjptb3ZlKG5ld190KSk7Ci0gIH0KLQotICByZXR1cm4gcmFuZ2UuZmlyc3Q7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KLXR5cGVuYW1lIElu
bGluZWRWZWN0b3I8VCwgTiwgQT46Oml0ZXJhdG9yIElubGluZWRWZWN0b3I8VCwgTiwgQT46OmVy
YXNlKAotICAgIGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KSB7Ci0g
IGFzc2VydChiZWdpbigpIDw9IGZpcnN0KTsKLSAgYXNzZXJ0KGZpcnN0IDw9IGxhc3QpOwotICBh
c3NlcnQobGFzdCA8PSBlbmQoKSk7Ci0KLSAgaXRlcmF0b3IgcmFuZ2Vfc3RhcnQgPSBjb25zdF9j
YXN0PGl0ZXJhdG9yPihmaXJzdCk7Ci0gIGl0ZXJhdG9yIHJhbmdlX2VuZCA9IGNvbnN0X2Nhc3Q8
aXRlcmF0b3I+KGxhc3QpOwotCi0gIHNpemVfdHlwZSBzID0gc2l6ZSgpOwotICBwdHJkaWZmX3Qg
ZXJhc2VfZ2FwID0gc3RkOjpkaXN0YW5jZShyYW5nZV9zdGFydCwgcmFuZ2VfZW5kKTsKLSAgaWYg
KGVyYXNlX2dhcCA+IDApIHsKLSAgICBwb2ludGVyIHNwYWNlOwotICAgIGlmIChhbGxvY2F0ZWQo
KSkgewotICAgICAgc3BhY2UgPSBhbGxvY2F0ZWRfc3BhY2UoKTsKLSAgICAgIHRhZygpLnNldF9h
bGxvY2F0ZWRfc2l6ZShzIC0gZXJhc2VfZ2FwKTsKLSAgICB9IGVsc2UgewotICAgICAgc3BhY2Ug
PSBpbmxpbmVkX3NwYWNlKCk7Ci0gICAgICB0YWcoKS5zZXRfaW5saW5lX3NpemUocyAtIGVyYXNl
X2dhcCk7Ci0gICAgfQotICAgIHN0ZDo6bW92ZShyYW5nZV9lbmQsIHNwYWNlICsgcywgcmFuZ2Vf
c3RhcnQpOwotICAgIERlc3Ryb3koc3BhY2UgKyBzIC0gZXJhc2VfZ2FwLCBzcGFjZSArIHMpOwot
ICB9Ci0gIHJldHVybiByYW5nZV9zdGFydDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNp
emVfdCBOLCB0eXBlbmFtZSBBPgotdm9pZCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+Ojpzd2FwKElu
bGluZWRWZWN0b3ImIG90aGVyKSB7Ci0gIHVzaW5nIHN0ZDo6c3dhcDsgIC8vIEF1Z21lbnQgQURM
IHdpdGggc3RkOjpzd2FwLgotICBpZiAoJm90aGVyID09IHRoaXMpIHsKLSAgICByZXR1cm47Ci0g
IH0KLSAgaWYgKGFsbG9jYXRlZCgpICYmIG90aGVyLmFsbG9jYXRlZCgpKSB7Ci0gICAgLy8gQm90
aCBvdXQgb2YgbGluZSwgc28ganVzdCBzd2FwIHRoZSB0YWcsIGFsbG9jYXRpb24sIGFuZCBhbGxv
Y2F0b3IuCi0gICAgc3dhcCh0YWcoKSwgb3RoZXIudGFnKCkpOwotICAgIHN3YXAoYWxsb2NhdGlv
bigpLCBvdGhlci5hbGxvY2F0aW9uKCkpOwotICAgIHN3YXAoYWxsb2NhdG9yKCksIG90aGVyLmFs
bG9jYXRvcigpKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgaWYgKCFhbGxvY2F0ZWQoKSAmJiAhb3Ro
ZXIuYWxsb2NhdGVkKCkpIHsKLSAgICAvLyBCb3RoIGlubGluZWQ6IHN3YXAgdXAgdG8gc21hbGxl
ciBzaXplLCB0aGVuIG1vdmUgcmVtYWluaW5nIGVsZW1lbnRzLgotICAgIElubGluZWRWZWN0b3Iq
IGEgPSB0aGlzOwotICAgIElubGluZWRWZWN0b3IqIGIgPSAmb3RoZXI7Ci0gICAgaWYgKHNpemUo
KSA8IG90aGVyLnNpemUoKSkgewotICAgICAgc3dhcChhLCBiKTsKLSAgICB9Ci0KLSAgICBjb25z
dCBzaXplX3R5cGUgYV9zaXplID0gYS0+c2l6ZSgpOwotICAgIGNvbnN0IHNpemVfdHlwZSBiX3Np
emUgPSBiLT5zaXplKCk7Ci0gICAgYXNzZXJ0KGFfc2l6ZSA+PSBiX3NpemUpOwotICAgIC8vICdh
JyBpcyBsYXJnZXIuIFN3YXAgdGhlIGVsZW1lbnRzIHVwIHRvIHRoZSBzbWFsbGVyIGFycmF5IHNp
emUuCi0gICAgc3RkOjpzd2FwX3JhbmdlcyhhLT5pbmxpbmVkX3NwYWNlKCksIGEtPmlubGluZWRf
c3BhY2UoKSArIGJfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgIGItPmlubGluZWRfc3BhY2Uo
KSk7Ci0KLSAgICAvLyBNb3ZlIHRoZSByZW1haW5pbmcgZWxlbWVudHM6IEFbYl9zaXplLGFfc2l6
ZSkgLT4gQltiX3NpemUsYV9zaXplKQotICAgIGItPlVuaW5pdGlhbGl6ZWRDb3B5KGEtPmlubGlu
ZWRfc3BhY2UoKSArIGJfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhLT5pbmxpbmVk
X3NwYWNlKCkgKyBhX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYi0+aW5saW5lZF9z
cGFjZSgpICsgYl9zaXplKTsKLSAgICBhLT5EZXN0cm95KGEtPmlubGluZWRfc3BhY2UoKSArIGJf
c2l6ZSwgYS0+aW5saW5lZF9zcGFjZSgpICsgYV9zaXplKTsKLQotICAgIHN3YXAoYS0+dGFnKCks
IGItPnRhZygpKTsKLSAgICBzd2FwKGEtPmFsbG9jYXRvcigpLCBiLT5hbGxvY2F0b3IoKSk7Ci0g
ICAgYXNzZXJ0KGItPnNpemUoKSA9PSBhX3NpemUpOwotICAgIGFzc2VydChhLT5zaXplKCkgPT0g
Yl9zaXplKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy8gT25lIGlzIG91dCBvZiBsaW5lLCBvbmUg
aXMgaW5saW5lLgotICAvLyBXZSBmaXJzdCBtb3ZlIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBpbmxp
bmVkIHZlY3RvciBpbnRvIHRoZQotICAvLyBpbmxpbmVkIHNwYWNlIGluIHRoZSBvdGhlciB2ZWN0
b3IuICBXZSB0aGVuIHB1dCB0aGUgb3RoZXIgdmVjdG9yJ3MKLSAgLy8gcG9pbnRlci9jYXBhY2l0
eSBpbnRvIHRoZSBvcmlnaW5hbGx5IGlubGluZWQgdmVjdG9yIGFuZCBzd2FwCi0gIC8vIHRoZSB0
YWdzLgotICBJbmxpbmVkVmVjdG9yKiBhID0gdGhpczsKLSAgSW5saW5lZFZlY3RvciogYiA9ICZv
dGhlcjsKLSAgaWYgKGEtPmFsbG9jYXRlZCgpKSB7Ci0gICAgc3dhcChhLCBiKTsKLSAgfQotICBh
c3NlcnQoIWEtPmFsbG9jYXRlZCgpKTsKLSAgYXNzZXJ0KGItPmFsbG9jYXRlZCgpKTsKLSAgY29u
c3Qgc2l6ZV90eXBlIGFfc2l6ZSA9IGEtPnNpemUoKTsKLSAgY29uc3Qgc2l6ZV90eXBlIGJfc2l6
ZSA9IGItPnNpemUoKTsKLSAgLy8gSW4gYW4gb3B0aW1pemVkIGJ1aWxkLCBiX3NpemUgd291bGQg
YmUgdW51c2VkLgotICAodm9pZCliX3NpemU7Ci0KLSAgLy8gTWFkZSBMb2NhbCBjb3BpZXMgb2Yg
c2l6ZSgpLCBkb24ndCBuZWVkIHRhZygpIGFjY3VyYXRlIGFueW1vcmUKLSAgc3dhcChhLT50YWco
KSwgYi0+dGFnKCkpOwotCi0gIC8vIENvcHkgYl9hbGxvY2F0aW9uIG91dCBiZWZvcmUgYidzIHVu
aW9uIGdldHMgY2xvYmJlcmVkIGJ5IGlubGluZV9zcGFjZS4KLSAgQWxsb2NhdGlvbiBiX2FsbG9j
YXRpb24gPSBiLT5hbGxvY2F0aW9uKCk7Ci0KLSAgYi0+VW5pbml0aWFsaXplZENvcHkoYS0+aW5s
aW5lZF9zcGFjZSgpLCBhLT5pbmxpbmVkX3NwYWNlKCkgKyBhX3NpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGItPmlubGluZWRfc3BhY2UoKSk7Ci0gIGEtPkRlc3Ryb3koYS0+aW5saW5lZF9z
cGFjZSgpLCBhLT5pbmxpbmVkX3NwYWNlKCkgKyBhX3NpemUpOwotCi0gIGEtPmFsbG9jYXRpb24o
KSA9IGJfYWxsb2NhdGlvbjsKLQotICBpZiAoYS0+YWxsb2NhdG9yKCkgIT0gYi0+YWxsb2NhdG9y
KCkpIHsKLSAgICBzd2FwKGEtPmFsbG9jYXRvcigpLCBiLT5hbGxvY2F0b3IoKSk7Ci0gIH0KLQot
ICBhc3NlcnQoYi0+c2l6ZSgpID09IGFfc2l6ZSk7Ci0gIGFzc2VydChhLT5zaXplKCkgPT0gYl9z
aXplKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgot
dm9pZCBJbmxpbmVkVmVjdG9yPFQsIE4sIEE+OjpFbmxhcmdlQnkoc2l6ZV90eXBlIGRlbHRhKSB7
Ci0gIGNvbnN0IHNpemVfdHlwZSBzID0gc2l6ZSgpOwotICBhc3NlcnQocyA8PSBjYXBhY2l0eSgp
KTsKLQotICBzaXplX3R5cGUgdGFyZ2V0ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90eXBl
PihOKSwgcyArIGRlbHRhKTsKLQotICAvLyBDb21wdXRlIG5ldyBjYXBhY2l0eSBieSByZXBlYXRl
ZGx5IGRvdWJsaW5nIGN1cnJlbnQgY2FwYWNpdHkKLSAgLy8gVE9ETyhwc3JjKTogQ2hlY2sgYW5k
IGF2b2lkIG92ZXJmbG93PwotICBzaXplX3R5cGUgbmV3X2NhcGFjaXR5ID0gY2FwYWNpdHkoKTsK
LSAgd2hpbGUgKG5ld19jYXBhY2l0eSA8IHRhcmdldCkgewotICAgIG5ld19jYXBhY2l0eSA8PD0g
MTsKLSAgfQotCi0gIEFsbG9jYXRpb24gbmV3X2FsbG9jYXRpb24oYWxsb2NhdG9yKCksIG5ld19j
YXBhY2l0eSk7Ci0KLSAgVW5pbml0aWFsaXplZENvcHkoc3RkOjptYWtlX21vdmVfaXRlcmF0b3Io
ZGF0YSgpKSwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX21vdmVfaXRlcmF0b3IoZGF0
YSgpICsgcyksCi0gICAgICAgICAgICAgICAgICAgIG5ld19hbGxvY2F0aW9uLmJ1ZmZlcigpKTsK
LQotICBSZXNldEFsbG9jYXRpb24obmV3X2FsbG9jYXRpb24sIHMpOwotfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci1hdXRvIElubGluZWRWZWN0b3I8VCwg
TiwgQT46OlNoaWZ0UmlnaHQoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIHNpemVfdHlwZSBuKQot
ICAgIC0+IHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+IHsKLSAgaXRlcmF0b3Igc3RhcnRf
dXNlZCA9IGNvbnN0X2Nhc3Q8aXRlcmF0b3I+KHBvc2l0aW9uKTsKLSAgaXRlcmF0b3Igc3RhcnRf
cmF3ID0gY29uc3RfY2FzdDxpdGVyYXRvcj4ocG9zaXRpb24pOwotICBzaXplX3R5cGUgcyA9IHNp
emUoKTsKLSAgc2l6ZV90eXBlIHJlcXVpcmVkX3NpemUgPSBzICsgbjsKLQotICBpZiAocmVxdWly
ZWRfc2l6ZSA+IGNhcGFjaXR5KCkpIHsKLSAgICAvLyBDb21wdXRlIG5ldyBjYXBhY2l0eSBieSBy
ZXBlYXRlZGx5IGRvdWJsaW5nIGN1cnJlbnQgY2FwYWNpdHkKLSAgICBzaXplX3R5cGUgbmV3X2Nh
cGFjaXR5ID0gY2FwYWNpdHkoKTsKLSAgICB3aGlsZSAobmV3X2NhcGFjaXR5IDwgcmVxdWlyZWRf
c2l6ZSkgewotICAgICAgbmV3X2NhcGFjaXR5IDw8PSAxOwotICAgIH0KLSAgICAvLyBNb3ZlIGV2
ZXJ5b25lIGludG8gdGhlIG5ldyBhbGxvY2F0aW9uLCBsZWF2aW5nIGEgZ2FwIG9mIG4gZm9yIHRo
ZQotICAgIC8vIHJlcXVlc3RlZCBzaGlmdC4KLSAgICBBbGxvY2F0aW9uIG5ld19hbGxvY2F0aW9u
KGFsbG9jYXRvcigpLCBuZXdfY2FwYWNpdHkpOwotICAgIHNpemVfdHlwZSBpbmRleCA9IHBvc2l0
aW9uIC0gYmVnaW4oKTsKLSAgICBVbmluaXRpYWxpemVkQ29weShzdGQ6Om1ha2VfbW92ZV9pdGVy
YXRvcihkYXRhKCkpLAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9tb3ZlX2l0ZXJh
dG9yKGRhdGEoKSArIGluZGV4KSwKLSAgICAgICAgICAgICAgICAgICAgICBuZXdfYWxsb2NhdGlv
bi5idWZmZXIoKSk7Ci0gICAgVW5pbml0aWFsaXplZENvcHkoc3RkOjptYWtlX21vdmVfaXRlcmF0
b3IoZGF0YSgpICsgaW5kZXgpLAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9tb3Zl
X2l0ZXJhdG9yKGRhdGEoKSArIHMpLAotICAgICAgICAgICAgICAgICAgICAgIG5ld19hbGxvY2F0
aW9uLmJ1ZmZlcigpICsgaW5kZXggKyBuKTsKLSAgICBSZXNldEFsbG9jYXRpb24obmV3X2FsbG9j
YXRpb24sIHMpOwotCi0gICAgLy8gTmV3IGFsbG9jYXRpb24gbWVhbnMgb3VyIGl0ZXJhdG9yIGlz
IGludmFsaWQsIHNvIHdlJ2xsIHJlY2FsY3VsYXRlLgotICAgIC8vIFNpbmNlIHRoZSBlbnRpcmUg
Z2FwIGlzIGluIG5ldyBzcGFjZSwgdGhlcmUncyBubyB1c2VkIHNwYWNlIHRvIHJldXNlLgotICAg
IHN0YXJ0X3JhdyA9IGJlZ2luKCkgKyBpbmRleDsKLSAgICBzdGFydF91c2VkID0gc3RhcnRfcmF3
OwotICB9IGVsc2UgewotICAgIC8vIElmIHdlIGhhZCBlbm91Z2ggc3BhY2UsIGl0J3MgYSB0d28t
cGFydCBtb3ZlLiBFbGVtZW50cyBnb2luZyBpbnRvCi0gICAgLy8gcHJldmlvdXNseS11bm9jY3Vw
aWVkIHNwYWNlIG5lZWQgYW4gVW5pbml0aWFsaXplZENvcHkuIEVsZW1lbnRzCi0gICAgLy8gZ29p
bmcgaW50byBhIHByZXZpb3VzbHktb2NjdXBpZWQgc3BhY2UgYXJlIGp1c3QgYSBtb3ZlLgotICAg
IGl0ZXJhdG9yIHBvcyA9IGNvbnN0X2Nhc3Q8aXRlcmF0b3I+KHBvc2l0aW9uKTsKLSAgICBpdGVy
YXRvciByYXdfc3BhY2UgPSBlbmQoKTsKLSAgICBzaXplX3R5cGUgc2xvdHNfaW5fdXNlZF9zcGFj
ZSA9IHJhd19zcGFjZSAtIHBvczsKLSAgICBzaXplX3R5cGUgbmV3X2VsZW1lbnRzX2luX3VzZWRf
c3BhY2UgPSBzdGQ6Om1pbihuLCBzbG90c19pbl91c2VkX3NwYWNlKTsKLSAgICBzaXplX3R5cGUg
bmV3X2VsZW1lbnRzX2luX3Jhd19zcGFjZSA9IG4gLSBuZXdfZWxlbWVudHNfaW5fdXNlZF9zcGFj
ZTsKLSAgICBzaXplX3R5cGUgb2xkX2VsZW1lbnRzX2luX3VzZWRfc3BhY2UgPQotICAgICAgICBz
bG90c19pbl91c2VkX3NwYWNlIC0gbmV3X2VsZW1lbnRzX2luX3VzZWRfc3BhY2U7Ci0KLSAgICBV
bmluaXRpYWxpemVkQ29weShzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihwb3MgKyBvbGRfZWxlbWVu
dHNfaW5fdXNlZF9zcGFjZSksCi0gICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX21vdmVf
aXRlcmF0b3IocmF3X3NwYWNlKSwKLSAgICAgICAgICAgICAgICAgICAgICByYXdfc3BhY2UgKyBu
ZXdfZWxlbWVudHNfaW5fcmF3X3NwYWNlKTsKLSAgICBzdGQ6Om1vdmVfYmFja3dhcmQocG9zLCBw
b3MgKyBvbGRfZWxlbWVudHNfaW5fdXNlZF9zcGFjZSwgcmF3X3NwYWNlKTsKLQotICAgIC8vIElm
IHRoZSBnYXAgaXMgZW50aXJlbHkgaW4gcmF3IHNwYWNlLCB0aGUgdXNlZCBzcGFjZSBzdGFydHMg
d2hlcmUgdGhlIHJhdwotICAgIC8vIHNwYWNlIHN0YXJ0cywgbGVhdmluZyBubyBlbGVtZW50cyBp
biB1c2VkIHNwYWNlLiBJZiB0aGUgZ2FwIGlzIGVudGlyZWx5Ci0gICAgLy8gaW4gdXNlZCBzcGFj
ZSwgdGhlIHJhdyBzcGFjZSBzdGFydHMgYXQgdGhlIGVuZCBvZiB0aGUgZ2FwLCBsZWF2aW5nIGFs
bAotICAgIC8vIGVsZW1lbnRzIGFjY291bnRlZCBmb3Igd2l0aGluIHRoZSB1c2VkIHNwYWNlLgot
ICAgIHN0YXJ0X3VzZWQgPSBwb3M7Ci0gICAgc3RhcnRfcmF3ID0gcG9zICsgbmV3X2VsZW1lbnRz
X2luX3VzZWRfc3BhY2U7Ci0gIH0KLSAgdGFnKCkuYWRkX3NpemUobik7Ci0gIHJldHVybiBzdGQ6
Om1ha2VfcGFpcihzdGFydF91c2VkLCBzdGFydF9yYXcpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci12b2lkIElubGluZWRWZWN0b3I8VCwgTiwgQT46
OkRlc3Ryb3kodmFsdWVfdHlwZSogcHRyLCB2YWx1ZV90eXBlKiBwdHJfbGFzdCkgewotICBmb3Ig
KHZhbHVlX3R5cGUqIHAgPSBwdHI7IHAgIT0gcHRyX2xhc3Q7ICsrcCkgewotICAgIEFsbG9jYXRv
clRyYWl0czo6ZGVzdHJveShhbGxvY2F0b3IoKSwgcCk7Ci0gIH0KLQotICAvLyBPdmVyd3JpdGUg
dW51c2VkIG1lbW9yeSB3aXRoIDB4YWIgc28gd2UgY2FuIGNhdGNoIHVuaW5pdGlhbGl6ZWQgdXNh
Z2UuCi0gIC8vIENhc3QgdG8gdm9pZCogdG8gdGVsbCB0aGUgY29tcGlsZXIgdGhhdCB3ZSBkb24n
dCBjYXJlIHRoYXQgd2UgbWlnaHQgYmUKLSAgLy8gc2NyaWJibGluZyBvbiBhIHZ0YWJsZSBwb2lu
dGVyLgotI2lmbmRlZiBOREVCVUcKLSAgaWYgKHB0ciAhPSBwdHJfbGFzdCkgewotICAgIG1lbXNl
dChyZWludGVycHJldF9jYXN0PHZvaWQqPihwdHIpLCAweGFiLCBzaXplb2YoKnB0cikgKiAocHRy
X2xhc3QgLSBwdHIpKTsKLSAgfQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBz
aXplX3QgTiwgdHlwZW5hbWUgQT4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgotdm9pZCBJbmxp
bmVkVmVjdG9yPFQsIE4sIEE+OjpBcHBlbmRSYW5nZShJdGVyIGZpcnN0LCBJdGVyIGxhc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVy
YXRvcl90YWcpIHsKLSAgdXNpbmcgTGVuZ3RoID0gdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFp
dHM8SXRlcj46OmRpZmZlcmVuY2VfdHlwZTsKLSAgTGVuZ3RoIGxlbmd0aCA9IHN0ZDo6ZGlzdGFu
Y2UoZmlyc3QsIGxhc3QpOwotICByZXNlcnZlKHNpemUoKSArIGxlbmd0aCk7Ci0gIGlmIChhbGxv
Y2F0ZWQoKSkgewotICAgIFVuaW5pdGlhbGl6ZWRDb3B5KGZpcnN0LCBsYXN0LCBhbGxvY2F0ZWRf
c3BhY2UoKSArIHNpemUoKSk7Ci0gICAgdGFnKCkuc2V0X2FsbG9jYXRlZF9zaXplKHNpemUoKSAr
IGxlbmd0aCk7Ci0gIH0gZWxzZSB7Ci0gICAgVW5pbml0aWFsaXplZENvcHkoZmlyc3QsIGxhc3Qs
IGlubGluZWRfc3BhY2UoKSArIHNpemUoKSk7Ci0gICAgdGFnKCkuc2V0X2lubGluZV9zaXplKHNp
emUoKSArIGxlbmd0aCk7Ci0gIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBO
LCB0eXBlbmFtZSBBPgotdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXI+Ci12b2lkIElubGluZWRWZWN0
b3I8VCwgTiwgQT46OkFzc2lnblJhbmdlKEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcp
IHsKLSAgLy8gT3B0aW1pemVkIHRvIGF2b2lkIHJlYWxsb2NhdGlvbi4KLSAgLy8gUHJlZmVyIHJl
YXNzaWdubWVudCB0byBjb3B5IGNvbnN0cnVjdGlvbiBmb3IgZWxlbWVudHMuCi0gIGl0ZXJhdG9y
IG91dCA9IGJlZ2luKCk7Ci0gIGZvciAoOyBmaXJzdCAhPSBsYXN0ICYmIG91dCAhPSBlbmQoKTsg
KytmaXJzdCwgKytvdXQpIHsKLSAgICAqb3V0ID0gKmZpcnN0OwotICB9Ci0gIGVyYXNlKG91dCwg
ZW5kKCkpOwotICBzdGQ6OmNvcHkoZmlyc3QsIGxhc3QsIHN0ZDo6YmFja19pbnNlcnRlcigqdGhp
cykpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Ci10
ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KLXZvaWQgSW5saW5lZFZlY3RvcjxULCBOLCBBPjo6QXNz
aWduUmFuZ2UoSXRlciBmaXJzdCwgSXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKSB7Ci0gIHVzaW5nIExl
bmd0aCA9IHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXI+OjpkaWZmZXJlbmNlX3R5
cGU7Ci0gIExlbmd0aCBsZW5ndGggPSBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgLy8g
UHJlZmVyIHJlYXNzaWdubWVudCB0byBjb3B5IGNvbnN0cnVjdGlvbiBmb3IgZWxlbWVudHMuCi0g
IGlmIChzdGF0aWNfY2FzdDxzaXplX3R5cGU+KGxlbmd0aCkgPD0gc2l6ZSgpKSB7Ci0gICAgZXJh
c2Uoc3RkOjpjb3B5KGZpcnN0LCBsYXN0LCBiZWdpbigpKSwgZW5kKCkpOwotICAgIHJldHVybjsK
LSAgfQotICByZXNlcnZlKGxlbmd0aCk7Ci0gIGl0ZXJhdG9yIG91dCA9IGJlZ2luKCk7Ci0gIGZv
ciAoOyBvdXQgIT0gZW5kKCk7ICsrZmlyc3QsICsrb3V0KSAqb3V0ID0gKmZpcnN0OwotICBpZiAo
YWxsb2NhdGVkKCkpIHsKLSAgICBVbmluaXRpYWxpemVkQ29weShmaXJzdCwgbGFzdCwgb3V0KTsK
LSAgICB0YWcoKS5zZXRfYWxsb2NhdGVkX3NpemUobGVuZ3RoKTsKLSAgfSBlbHNlIHsKLSAgICBV
bmluaXRpYWxpemVkQ29weShmaXJzdCwgbGFzdCwgb3V0KTsKLSAgICB0YWcoKS5zZXRfaW5saW5l
X3NpemUobGVuZ3RoKTsKLSAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4s
IHR5cGVuYW1lIEE+Ci1hdXRvIElubGluZWRWZWN0b3I8VCwgTiwgQT46Okluc2VydFdpdGhDb3Vu
dChjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdHlwZSBuLCBjb25zdCB2YWx1ZV90eXBlJiB2KQotICAgIC0+
IGl0ZXJhdG9yIHsKLSAgYXNzZXJ0KHBvc2l0aW9uID49IGJlZ2luKCkgJiYgcG9zaXRpb24gPD0g
ZW5kKCkpOwotICBpZiAobiA9PSAwKSByZXR1cm4gY29uc3RfY2FzdDxpdGVyYXRvcj4ocG9zaXRp
b24pOwotCi0gIHZhbHVlX3R5cGUgY29weSA9IHY7Ci0gIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRl
cmF0b3I+IGl0X3BhaXIgPSBTaGlmdFJpZ2h0KHBvc2l0aW9uLCBuKTsKLSAgc3RkOjpmaWxsKGl0
X3BhaXIuZmlyc3QsIGl0X3BhaXIuc2Vjb25kLCBjb3B5KTsKLSAgVW5pbml0aWFsaXplZEZpbGwo
aXRfcGFpci5zZWNvbmQsIGl0X3BhaXIuZmlyc3QgKyBuLCBjb3B5KTsKLQotICByZXR1cm4gaXRf
cGFpci5maXJzdDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFt
ZSBBPgotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcj4KLWF1dG8gSW5saW5lZFZlY3RvcjxU
LCBOLCBBPjo6SW5zZXJ0V2l0aFJhbmdlKGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyIGZpcnN0LCBJ
bnB1dEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnKQotICAgIC0+IGl0ZXJhdG9yIHsKLSAgYXNzZXJ0
KHBvc2l0aW9uID49IGJlZ2luKCkgJiYgcG9zaXRpb24gPD0gZW5kKCkpOwotICBzaXplX3R5cGUg
aW5kZXggPSBwb3NpdGlvbiAtIGNiZWdpbigpOwotICBzaXplX3R5cGUgaSA9IGluZGV4OwotICB3
aGlsZSAoZmlyc3QgIT0gbGFzdCkgaW5zZXJ0KGJlZ2luKCkgKyBpKyssICpmaXJzdCsrKTsKLSAg
cmV0dXJuIGJlZ2luKCkgKyBpbmRleDsKLX0KLQotLy8gT3ZlcmxvYWQgb2YgSW5saW5lZFZlY3Rv
cjo6SW5zZXJ0V2l0aFJhbmdlKCkKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlw
ZW5hbWUgQT4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcj4KLWF1dG8gSW5saW5lZFZl
Y3RvcjxULCBOLCBBPjo6SW5zZXJ0V2l0aFJhbmdlKGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXIg
Zmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3J3
YXJkSXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZykKLSAgICAtPiBpdGVyYXRvciB7Ci0gIGFzc2Vy
dChwb3NpdGlvbiA+PSBiZWdpbigpICYmIHBvc2l0aW9uIDw9IGVuZCgpKTsKLSAgaWYgKGZpcnN0
ID09IGxhc3QpIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxpdGVyYXRvcj4ocG9zaXRpb24pOwot
ICB9Ci0gIHVzaW5nIExlbmd0aCA9IHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndh
cmRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlOwotICBMZW5ndGggbiA9IHN0ZDo6ZGlzdGFuY2UoZmly
c3QsIGxhc3QpOwotICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9yPiBpdF9wYWlyID0gU2hp
ZnRSaWdodChwb3NpdGlvbiwgbik7Ci0gIHNpemVfdHlwZSB1c2VkX3Nwb3RzID0gaXRfcGFpci5z
ZWNvbmQgLSBpdF9wYWlyLmZpcnN0OwotICBGb3J3YXJkSXRlciBvcGVuX3Nwb3QgPSBzdGQ6Om5l
eHQoZmlyc3QsIHVzZWRfc3BvdHMpOwotICBzdGQ6OmNvcHkoZmlyc3QsIG9wZW5fc3BvdCwgaXRf
cGFpci5maXJzdCk7Ci0gIFVuaW5pdGlhbGl6ZWRDb3B5KG9wZW5fc3BvdCwgbGFzdCwgaXRfcGFp
ci5zZWNvbmQpOwotICByZXR1cm4gaXRfcGFpci5maXJzdDsKKy8vIFByb3ZpZGVzIGBhYnNsOjpI
YXNoYCBzdXBwb3J0IGZvciBgYWJzbDo6SW5saW5lZFZlY3RvcmAuIEl0IGlzIHVuY29tbW9uIHRv
CisvLyBjYWxsIHRoaXMgZGlyZWN0bHkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUg
VCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+CitIIEFic2xIYXNoVmFsdWUoSCBoLCBjb25zdCBhYnNs
OjpJbmxpbmVkVmVjdG9yPFQsIE4sIEE+JiBhKSB7CisgIGF1dG8gc2l6ZSA9IGEuc2l6ZSgpOwor
ICByZXR1cm4gSDo6Y29tYmluZShIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKGgpLCBh
LmRhdGEoKSwgc2l6ZSksIHNpemUpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX2JlbmNobWFyay5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl9iZW5jaG1hcmsuY2MKaW5kZXggYTNhZDBmOGFlNGYx
YTE2M2M3ZjIzMjkzMmU0NmEzOGVlNGVhNjcwZS4uYjk5YmJkNjI1NDRmNjU2OWUxODBmZjEwMjBm
ZGQ3MDZjN2QxZTQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9y
X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfYmVuY2ht
YXJrLmNjCkBAIC0xLDEwICsxLDEwIEBACi0vLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCiAvLwogLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEyLDI4ICsxMiwyNSBAQAogLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLSNpbmNsdWRlICJh
YnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oIgotCisjaW5jbHVkZSA8YXJyYXk+CiAjaW5j
bHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImJlbmNobWFyay9i
ZW5jaG1hcmsuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIK
KyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW5saW5lZF92ZWN0b3IuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgogCiBu
YW1lc3BhY2UgewogCi11c2luZyBJbnRWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPGludCwgOD47
Ci0KIHZvaWQgQk1fSW5saW5lZFZlY3RvckZpbGwoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
LSAgY29uc3QgaW50IGxlbiA9IHN0YXRlLnJhbmdlKDApOworICBhYnNsOjpJbmxpbmVkVmVjdG9y
PGludCwgOD4gdjsKKyAgaW50IHZhbCA9IDEwOwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0g
ICAgSW50VmVjIHY7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAg
di5wdXNoX2JhY2soaSk7Ci0gICAgfQorICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsK
KyAgICB2LnB1c2hfYmFjayh2YWwpOwogICB9Ci0gIHN0YXRlLlNldEl0ZW1zUHJvY2Vzc2VkKHN0
YXRpY19jYXN0PGludDY0X3Q+KHN0YXRlLml0ZXJhdGlvbnMoKSkgKiBsZW4pOwogfQogQkVOQ0hN
QVJLKEJNX0lubGluZWRWZWN0b3JGaWxsKS0+UmFuZ2UoMCwgMTAyNCk7CiAKQEAgLTQzLDIzICs0
MCwyNSBAQCB2b2lkIEJNX0lubGluZWRWZWN0b3JGaWxsUmFuZ2UoYmVuY2htYXJrOjpTdGF0ZSYg
c3RhdGUpIHsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgIGlhW2ldID0g
aTsKICAgfQorICBhdXRvKiBmcm9tID0gaWEuZ2V0KCk7CisgIGF1dG8qIHRvID0gZnJvbSArIGxl
bjsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIEludFZlYyB2KGlhLmdldCgpLCBpYS5n
ZXQoKSArIGxlbik7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGZyb20pOworICAgIGJl
bmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh0byk7CisgICAgYWJzbDo6SW5saW5lZFZlY3RvcjxpbnQs
IDg+IHYoZnJvbSwgdG8pOwogICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKICAgfQot
ICBzdGF0ZS5TZXRJdGVtc1Byb2Nlc3NlZChzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGF0ZS5pdGVy
YXRpb25zKCkpICogbGVuKTsKIH0KIEJFTkNITUFSSyhCTV9JbmxpbmVkVmVjdG9yRmlsbFJhbmdl
KS0+UmFuZ2UoMCwgMTAyNCk7CiAKIHZvaWQgQk1fU3RkVmVjdG9yRmlsbChiZW5jaG1hcms6OlN0
YXRlJiBzdGF0ZSkgewotICBjb25zdCBpbnQgbGVuID0gc3RhdGUucmFuZ2UoMCk7CisgIHN0ZDo6
dmVjdG9yPGludD4gdjsKKyAgaW50IHZhbCA9IDEwOwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7
Ci0gICAgc3RkOjp2ZWN0b3I8aW50PiB2OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBp
KyspIHsKLSAgICAgIHYucHVzaF9iYWNrKGkpOwotICAgIH0KKyAgICBiZW5jaG1hcms6OkRvTm90
T3B0aW1pemUodik7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHZhbCk7CisgICAgdi5w
dXNoX2JhY2sodmFsKTsKICAgfQotICBzdGF0ZS5TZXRJdGVtc1Byb2Nlc3NlZChzdGF0aWNfY2Fz
dDxpbnQ2NF90PihzdGF0ZS5pdGVyYXRpb25zKCkpICogbGVuKTsKIH0KIEJFTkNITUFSSyhCTV9T
dGRWZWN0b3JGaWxsKS0+UmFuZ2UoMCwgMTAyNCk7CiAKQEAgLTg5LDcgKzg4LDcgQEAgdm9pZCBC
TV9JbmxpbmVkVmVjdG9yRmlsbFN0cmluZyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBj
b25zdCBpbnQgbGVuID0gc3RhdGUucmFuZ2UoMCk7CiAgIGNvbnN0IGludCBub19zc28gPSBHZXRO
b25TaG9ydFN0cmluZ09wdGltaXphdGlvblNpemUoKTsKICAgc3RkOjpzdHJpbmcgc3RyaW5nc1s0
XSA9IHtzdGQ6OnN0cmluZyhub19zc28sICdBJyksIHN0ZDo6c3RyaW5nKG5vX3NzbywgJ0InKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcobm9fc3NvLCAnQycpLCBzdGQ6OnN0
cmluZyhub19zc28sICdEJyl9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nKG5vX3NzbywgJ0MnKSwgc3RkOjpzdHJpbmcobm9fc3NvLCAnRCcpfTsKIAogICBmb3IgKGF1
dG8gXyA6IHN0YXRlKSB7CiAgICAgYWJzbDo6SW5saW5lZFZlY3RvcjxzdGQ6OnN0cmluZywgOD4g
djsKQEAgLTEwNSw3ICsxMDQsNyBAQCB2b2lkIEJNX1N0ZFZlY3RvckZpbGxTdHJpbmcoYmVuY2ht
YXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgY29uc3QgaW50IGxlbiA9IHN0YXRlLnJhbmdlKDApOwog
ICBjb25zdCBpbnQgbm9fc3NvID0gR2V0Tm9uU2hvcnRTdHJpbmdPcHRpbWl6YXRpb25TaXplKCk7
CiAgIHN0ZDo6c3RyaW5nIHN0cmluZ3NbNF0gPSB7c3RkOjpzdHJpbmcobm9fc3NvLCAnQScpLCBz
dGQ6OnN0cmluZyhub19zc28sICdCJyksCi0gICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nKG5vX3NzbywgJ0MnKSwgc3RkOjpzdHJpbmcobm9fc3NvLCAnRCcpfTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyhub19zc28sICdDJyksIHN0ZDo6c3RyaW5nKG5v
X3NzbywgJ0QnKX07CiAKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewogICAgIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiB2OwpAQCAtMTI0LDcgKzEyMyw3IEBAIHN0cnVjdCBCdWZmZXIgeyAgLy8g
c29tZSBhcmJpdHJhcnkgc3RydWN0dXJlIGZvciBiZW5jaG1hcmtpbmcuCiAgIHZvaWQqIHVzZXJf
ZGF0YTsKIH07CiAKLXZvaWQgQk1fSW5saW5lZFZlY3RvclRlbkFzc2lnbm1lbnRzKGJlbmNobWFy
azo6U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX0lubGluZWRWZWN0b3JBc3NpZ25tZW50cyhiZW5j
aG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBjb25zdCBpbnQgbGVuID0gc3RhdGUucmFuZ2UoMCk7
CiAgIHVzaW5nIEJ1ZmZlclZlYyA9IGFic2w6OklubGluZWRWZWN0b3I8QnVmZmVyLCAyPjsKIApA
QCAtMTMzLDE4ICsxMzIsMjUgQEAgdm9pZCBCTV9JbmxpbmVkVmVjdG9yVGVuQXNzaWdubWVudHMo
YmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKIAogICBCdWZmZXJWZWMgZHN0OwogICBmb3IgKGF1
dG8gXyA6IHN0YXRlKSB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAg
ICBkc3QgPSBzcmM7Ci0gICAgfQorICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShkc3QpOwor
ICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShzcmMpOworICAgIGRzdCA9IHNyYzsKICAgfQog
fQotQkVOQ0hNQVJLKEJNX0lubGluZWRWZWN0b3JUZW5Bc3NpZ25tZW50cykKLSAgICAtPkFyZygw
KS0+QXJnKDEpLT5BcmcoMiktPkFyZygzKS0+QXJnKDQpLT5BcmcoMjApOworQkVOQ0hNQVJLKEJN
X0lubGluZWRWZWN0b3JBc3NpZ25tZW50cykKKyAgICAtPkFyZygwKQorICAgIC0+QXJnKDEpCisg
ICAgLT5BcmcoMikKKyAgICAtPkFyZygzKQorICAgIC0+QXJnKDQpCisgICAgLT5BcmcoMjApOwog
CiB2b2lkIEJNX0NyZWF0ZUZyb21Db250YWluZXIoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
ICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIGFic2w6OklubGluZWRWZWN0b3I8aW50LCA0
PiB4KGFic2w6OklubGluZWRWZWN0b3I8aW50LCA0PnsxLCAyLCAzfSk7Ci0gICAgYmVuY2htYXJr
OjpEb05vdE9wdGltaXplKHgpOworICAgIGFic2w6OklubGluZWRWZWN0b3I8aW50LCA0PiBzcmN7
MSwgMiwgM307CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHNyYyk7CisgICAgYWJzbDo6
SW5saW5lZFZlY3RvcjxpbnQsIDQ+IGRzdChzdGQ6Om1vdmUoc3JjKSk7CisgICAgYmVuY2htYXJr
OjpEb05vdE9wdGltaXplKGRzdCk7CiAgIH0KIH0KIEJFTkNITUFSSyhCTV9DcmVhdGVGcm9tQ29u
dGFpbmVyKTsKQEAgLTE1OSwxNSArMTY1LDE0IEBAIHN0cnVjdCBMYXJnZUNvcHlhYmxlT25seSB7
CiAKIHN0cnVjdCBMYXJnZUNvcHlhYmxlU3dhcHBhYmxlIHsKICAgTGFyZ2VDb3B5YWJsZVN3YXBw
YWJsZSgpIDogZCgxMDI0LCAxNykge30KKwogICBMYXJnZUNvcHlhYmxlU3dhcHBhYmxlKGNvbnN0
IExhcmdlQ29weWFibGVTd2FwcGFibGUmIG8pID0gZGVmYXVsdDsKLSAgTGFyZ2VDb3B5YWJsZVN3
YXBwYWJsZShMYXJnZUNvcHlhYmxlU3dhcHBhYmxlJiYgbykgPSBkZWxldGU7CiAKICAgTGFyZ2VD
b3B5YWJsZVN3YXBwYWJsZSYgb3BlcmF0b3I9KExhcmdlQ29weWFibGVTd2FwcGFibGUgbykgewog
ICAgIHVzaW5nIHN0ZDo6c3dhcDsKICAgICBzd2FwKCp0aGlzLCBvKTsKICAgICByZXR1cm4gKnRo
aXM7CiAgIH0KLSAgTGFyZ2VDb3B5YWJsZVN3YXBwYWJsZSYgb3BlcmF0b3I9KExhcmdlQ29weWFi
bGVTd2FwcGFibGUmJiBvKSA9IGRlbGV0ZTsKIAogICBmcmllbmQgdm9pZCBzd2FwKExhcmdlQ29w
eWFibGVTd2FwcGFibGUmIGEsIExhcmdlQ29weWFibGVTd2FwcGFibGUmIGIpIHsKICAgICB1c2lu
ZyBzdGQ6OnN3YXA7CkBAIC0yMTUsNiArMjIwLDggQEAgdm9pZCBCTV9Td2FwRWxlbWVudHMoYmVu
Y2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgVmVjIGI7CiAgIGZvciAoYXV0byBfIDogc3RhdGUp
IHsKICAgICB1c2luZyBzdGQ6OnN3YXA7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGEp
OworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShiKTsKICAgICBzd2FwKGEsIGIpOwogICB9
CiB9CkBAIC0yNjAsNjAgKzI2Nyw0NCBAQCBCRU5DSE1BUktfVEVNUExBVEUoQk1fU2l6ZW9mLCBh
YnNsOjpJbmxpbmVkVmVjdG9yPHN0ZDo6c3RyaW5nLCA4Pik7CiB2b2lkIEJNX0lubGluZWRWZWN0
b3JJbmRleElubGluZWQoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgYWJzbDo6SW5saW5l
ZFZlY3RvcjxpbnQsIDg+IHYgPSB7MSwgMiwgMywgNCwgNSwgNiwgN307CiAgIGZvciAoYXV0byBf
IDogc3RhdGUpIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDA7ICsraSkgewotICAgICAg
YmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOwotICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGlt
aXplKHZbNF0pOwotICAgIH0KKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodik7CisgICAg
YmVuY2htYXJrOjpEb05vdE9wdGltaXplKHZbNF0pOwogICB9Ci0gIHN0YXRlLlNldEl0ZW1zUHJv
Y2Vzc2VkKDEwMDAgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGF0ZS5pdGVyYXRpb25zKCkpKTsK
IH0KIEJFTkNITUFSSyhCTV9JbmxpbmVkVmVjdG9ySW5kZXhJbmxpbmVkKTsKIAogdm9pZCBCTV9J
bmxpbmVkVmVjdG9ySW5kZXhFeHRlcm5hbChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBh
YnNsOjpJbmxpbmVkVmVjdG9yPGludCwgOD4gdiA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5
LCAxMH07CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8
IDEwMDA7ICsraSkgewotICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOwotICAgICAg
YmVuY2htYXJrOjpEb05vdE9wdGltaXplKHZbNF0pOwotICAgIH0KKyAgICBiZW5jaG1hcms6OkRv
Tm90T3B0aW1pemUodik7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHZbNF0pOwogICB9
Ci0gIHN0YXRlLlNldEl0ZW1zUHJvY2Vzc2VkKDEwMDAgKiBzdGF0aWNfY2FzdDxpbnQ2NF90Pihz
dGF0ZS5pdGVyYXRpb25zKCkpKTsKIH0KIEJFTkNITUFSSyhCTV9JbmxpbmVkVmVjdG9ySW5kZXhF
eHRlcm5hbCk7CiAKIHZvaWQgQk1fU3RkVmVjdG9ySW5kZXgoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKICAgc3RkOjp2ZWN0b3I8aW50PiB2ID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDks
IDEwfTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
MTAwMDsgKytpKSB7Ci0gICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodik7Ci0gICAgICBi
ZW5jaG1hcms6OkRvTm90T3B0aW1pemUodls0XSk7Ci0gICAgfQorICAgIGJlbmNobWFyazo6RG9O
b3RPcHRpbWl6ZSh2KTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodls0XSk7CiAgIH0K
LSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoMTAwMCAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHN0
YXRlLml0ZXJhdGlvbnMoKSkpOwogfQogQkVOQ0hNQVJLKEJNX1N0ZFZlY3RvckluZGV4KTsKIAot
I2RlZmluZSBVTlJPTExfMih4KSAgICAgICAgICAgIFwKLSAgYmVuY2htYXJrOjpEb05vdE9wdGlt
aXplKHgpOyBcCi0gIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh4KTsKLQotI2RlZmluZSBVTlJP
TExfNCh4KSBVTlJPTExfMih4KSBVTlJPTExfMih4KQotI2RlZmluZSBVTlJPTExfOCh4KSBVTlJP
TExfNCh4KSBVTlJPTExfNCh4KQotI2RlZmluZSBVTlJPTExfMTYoeCkgVU5ST0xMXzgoeCkgVU5S
T0xMXzgoeCk7Ci0KIHZvaWQgQk1fSW5saW5lZFZlY3RvckRhdGFJbmxpbmVkKGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7CiAgIGFic2w6OklubGluZWRWZWN0b3I8aW50LCA4PiB2ID0gezEsIDIs
IDMsIDQsIDUsIDYsIDd9OwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgVU5ST0xMXzE2
KHYuZGF0YSgpKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodik7CisgICAgYmVuY2ht
YXJrOjpEb05vdE9wdGltaXplKHYuZGF0YSgpKTsKICAgfQotICBzdGF0ZS5TZXRJdGVtc1Byb2Nl
c3NlZCgxNiAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRlLml0ZXJhdGlvbnMoKSkpOwogfQog
QkVOQ0hNQVJLKEJNX0lubGluZWRWZWN0b3JEYXRhSW5saW5lZCk7CiAKIHZvaWQgQk1fSW5saW5l
ZFZlY3RvckRhdGFFeHRlcm5hbChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBhYnNsOjpJ
bmxpbmVkVmVjdG9yPGludCwgOD4gdiA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMH07
CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBVTlJPTExfMTYodi5kYXRhKCkpOworICAg
IGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1p
emUodi5kYXRhKCkpOwogICB9CiAgIHN0YXRlLlNldEl0ZW1zUHJvY2Vzc2VkKDE2ICogc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9ucygpKSk7CiB9CkBAIC0zMjIsNyArMzEzLDgg
QEAgQkVOQ0hNQVJLKEJNX0lubGluZWRWZWN0b3JEYXRhRXh0ZXJuYWwpOwogdm9pZCBCTV9TdGRW
ZWN0b3JEYXRhKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIHN0ZDo6dmVjdG9yPGludD4g
diA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMH07CiAgIGZvciAoYXV0byBfIDogc3Rh
dGUpIHsKLSAgICBVTlJPTExfMTYodi5kYXRhKCkpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRp
bWl6ZSh2KTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodi5kYXRhKCkpOwogICB9CiAg
IHN0YXRlLlNldEl0ZW1zUHJvY2Vzc2VkKDE2ICogc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGUu
aXRlcmF0aW9ucygpKSk7CiB9CkBAIC0zMzEsNTUgKzMyMyw0ODIgQEAgQkVOQ0hNQVJLKEJNX1N0
ZFZlY3RvckRhdGEpOwogdm9pZCBCTV9JbmxpbmVkVmVjdG9yU2l6ZUlubGluZWQoYmVuY2htYXJr
OjpTdGF0ZSYgc3RhdGUpIHsKICAgYWJzbDo6SW5saW5lZFZlY3RvcjxpbnQsIDg+IHYgPSB7MSwg
MiwgMywgNCwgNSwgNiwgN307CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBVTlJPTExf
MTYodi5zaXplKCkpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKKyAgICBiZW5j
aG1hcms6OkRvTm90T3B0aW1pemUodi5zaXplKCkpOwogICB9Ci0gIHN0YXRlLlNldEl0ZW1zUHJv
Y2Vzc2VkKDE2ICogc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9ucygpKSk7CiB9
CiBCRU5DSE1BUksoQk1fSW5saW5lZFZlY3RvclNpemVJbmxpbmVkKTsKIAogdm9pZCBCTV9Jbmxp
bmVkVmVjdG9yU2l6ZUV4dGVybmFsKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGFic2w6
OklubGluZWRWZWN0b3I8aW50LCA4PiB2ID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEw
fTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIFVOUk9MTF8xNih2LnNpemUoKSk7Cisg
ICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHYpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRp
bWl6ZSh2LnNpemUoKSk7CiAgIH0KLSAgc3RhdGUuU2V0SXRlbXNQcm9jZXNzZWQoMTYgKiBzdGF0
aWNfY2FzdDxpbnQ2NF90PihzdGF0ZS5pdGVyYXRpb25zKCkpKTsKIH0KIEJFTkNITUFSSyhCTV9J
bmxpbmVkVmVjdG9yU2l6ZUV4dGVybmFsKTsKIAogdm9pZCBCTV9TdGRWZWN0b3JTaXplKGJlbmNo
bWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIHN0ZDo6dmVjdG9yPGludD4gdiA9IHsxLCAyLCAzLCA0
LCA1LCA2LCA3LCA4LCA5LCAxMH07CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBVTlJP
TExfMTYodi5zaXplKCkpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2KTsKKyAgICBi
ZW5jaG1hcms6OkRvTm90T3B0aW1pemUodi5zaXplKCkpOwogICB9Ci0gIHN0YXRlLlNldEl0ZW1z
UHJvY2Vzc2VkKDE2ICogc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9ucygpKSk7
CiB9CiBCRU5DSE1BUksoQk1fU3RkVmVjdG9yU2l6ZSk7CiAKIHZvaWQgQk1fSW5saW5lZFZlY3Rv
ckVtcHR5SW5saW5lZChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBhYnNsOjpJbmxpbmVk
VmVjdG9yPGludCwgOD4gdiA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3fTsKICAgZm9yIChhdXRvIF8g
OiBzdGF0ZSkgewotICAgIFVOUk9MTF8xNih2LmVtcHR5KCkpOworICAgIGJlbmNobWFyazo6RG9O
b3RPcHRpbWl6ZSh2KTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodi5lbXB0eSgpKTsK
ICAgfQotICBzdGF0ZS5TZXRJdGVtc1Byb2Nlc3NlZCgxNiAqIHN0YXRpY19jYXN0PGludDY0X3Q+
KHN0YXRlLml0ZXJhdGlvbnMoKSkpOwogfQogQkVOQ0hNQVJLKEJNX0lubGluZWRWZWN0b3JFbXB0
eUlubGluZWQpOwogCiB2b2lkIEJNX0lubGluZWRWZWN0b3JFbXB0eUV4dGVybmFsKGJlbmNobWFy
azo6U3RhdGUmIHN0YXRlKSB7CiAgIGFic2w6OklubGluZWRWZWN0b3I8aW50LCA4PiB2ID0gezEs
IDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwfTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewot
ICAgIFVOUk9MTF8xNih2LmVtcHR5KCkpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2
KTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUodi5lbXB0eSgpKTsKICAgfQotICBzdGF0
ZS5TZXRJdGVtc1Byb2Nlc3NlZCgxNiAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHN0YXRlLml0ZXJh
dGlvbnMoKSkpOwogfQogQkVOQ0hNQVJLKEJNX0lubGluZWRWZWN0b3JFbXB0eUV4dGVybmFsKTsK
IAogdm9pZCBCTV9TdGRWZWN0b3JFbXB0eShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBz
dGQ6OnZlY3RvcjxpbnQ+IHYgPSB7MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTB9OwogICBm
b3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgVU5ST0xMXzE2KHYuZW1wdHkoKSk7CisgICAgYmVu
Y2htYXJrOjpEb05vdE9wdGltaXplKHYpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2
LmVtcHR5KCkpOwogICB9Ci0gIHN0YXRlLlNldEl0ZW1zUHJvY2Vzc2VkKDE2ICogc3RhdGljX2Nh
c3Q8aW50NjRfdD4oc3RhdGUuaXRlcmF0aW9ucygpKSk7CiB9CiBCRU5DSE1BUksoQk1fU3RkVmVj
dG9yRW1wdHkpOwogCitjb25zdGV4cHIgc2l6ZV90IGtJbmxpbmVkQ2FwYWNpdHkgPSA0OworY29u
c3RleHByIHNpemVfdCBrTGFyZ2VTaXplID0ga0lubGluZWRDYXBhY2l0eSAqIDI7Citjb25zdGV4
cHIgc2l6ZV90IGtTbWFsbFNpemUgPSBrSW5saW5lZENhcGFjaXR5IC8gMjsKK2NvbnN0ZXhwciBz
aXplX3Qga0JhdGNoU2l6ZSA9IDEwMDsKKworI2RlZmluZSBBQlNMX0lOVEVSTkFMX0JFTkNITUFS
S19PTkVfU0laRShCTV9GdW5jdGlvblRlbXBsYXRlLCBUKSBcCisgIEJFTkNITUFSS19URU1QTEFU
RShCTV9GdW5jdGlvblRlbXBsYXRlLCBULCBrTGFyZ2VTaXplKTsgICAgICAgIFwKKyAgQkVOQ0hN
QVJLX1RFTVBMQVRFKEJNX0Z1bmN0aW9uVGVtcGxhdGUsIFQsIGtTbWFsbFNpemUpCisKKyNkZWZp
bmUgQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fRnVuY3Rpb25UZW1wbGF0ZSwg
VCkgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9GdW5jdGlvblRlbXBsYXRlLCBULCBr
TGFyZ2VTaXplLCBrTGFyZ2VTaXplKTsgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRnVuY3Rp
b25UZW1wbGF0ZSwgVCwga0xhcmdlU2l6ZSwga1NtYWxsU2l6ZSk7IFwKKyAgQkVOQ0hNQVJLX1RF
TVBMQVRFKEJNX0Z1bmN0aW9uVGVtcGxhdGUsIFQsIGtTbWFsbFNpemUsIGtMYXJnZVNpemUpOyBc
CisgIEJFTkNITUFSS19URU1QTEFURShCTV9GdW5jdGlvblRlbXBsYXRlLCBULCBrU21hbGxTaXpl
LCBrU21hbGxTaXplKQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIElubFZlYyA9IGFi
c2w6OklubGluZWRWZWN0b3I8VCwga0lubGluZWRDYXBhY2l0eT47CisKK3N0cnVjdCBUcml2aWFs
VHlwZSB7CisgIHNpemVfdCB2YWw7Cit9OworCitjbGFzcyBOb250cml2aWFsVHlwZSB7CisgcHVi
bGljOgorICBBQlNMX0FUVFJJQlVURV9OT0lOTElORSBOb250cml2aWFsVHlwZSgpIDogdmFsXygp
IHsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoKnRoaXMpOworICB9CisKKyAgQUJTTF9B
VFRSSUJVVEVfTk9JTkxJTkUgTm9udHJpdmlhbFR5cGUoY29uc3QgTm9udHJpdmlhbFR5cGUmIG90
aGVyKQorICAgICAgOiB2YWxfKG90aGVyLnZhbF8pIHsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0
aW1pemUoKnRoaXMpOworICB9CisKKyAgQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUgTm9udHJpdmlh
bFR5cGUmIG9wZXJhdG9yPSgKKyAgICAgIGNvbnN0IE5vbnRyaXZpYWxUeXBlJiBvdGhlcikgewor
ICAgIHZhbF8gPSBvdGhlci52YWxfOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSgqdGhp
cyk7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUg
fk5vbnRyaXZpYWxUeXBlKCkgbm9leGNlcHQgeworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6
ZSgqdGhpcyk7CisgIH0KKworIHByaXZhdGU6CisgIHNpemVfdCB2YWxfOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFByZXBhcmVWZWNGbiwgdHlwZW5hbWUgVGVzdFZlY0Zu
Pgordm9pZCBCYXRjaGVkQmVuY2htYXJrKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlLCBQcmVwYXJl
VmVjRm4gcHJlcGFyZV92ZWMsCisgICAgICAgICAgICAgICAgICAgICAgVGVzdFZlY0ZuIHRlc3Rf
dmVjKSB7CisgIHN0ZDo6YXJyYXk8SW5sVmVjPFQ+LCBrQmF0Y2hTaXplPiB2ZWN0b3JfYmF0Y2h7
fTsKKworICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmdCYXRjaChrQmF0Y2hTaXplKSkgeworICAg
IC8vIFByZXBhcmUgYmF0Y2gKKyAgICBzdGF0ZS5QYXVzZVRpbWluZygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwga0JhdGNoU2l6ZTsgKytpKSB7CisgICAgICBwcmVwYXJlX3ZlYyh2ZWN0
b3JfYmF0Y2guZGF0YSgpICsgaSwgaSk7CisgICAgfQorICAgIGJlbmNobWFyazo6RG9Ob3RPcHRp
bWl6ZSh2ZWN0b3JfYmF0Y2gpOworICAgIHN0YXRlLlJlc3VtZVRpbWluZygpOworCisgICAgLy8g
VGVzdCBiYXRjaAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga0JhdGNoU2l6ZTsgKytpKSB7
CisgICAgICB0ZXN0X3ZlYyh2ZWN0b3JfYmF0Y2guZGF0YSgpICsgaSwgaSk7CisgICAgfQorICB9
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgVG9TaXplPgordm9pZCBCTV9Db25z
dHJ1Y3RGcm9tU2l6ZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICB1c2luZyBWZWNUID0g
SW5sVmVjPFQ+OworICBhdXRvIHNpemUgPSBUb1NpemU7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4o
CisgICAgICBzdGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8gW10oSW5sVmVjPFQ+KiB2
ZWMsIHNpemVfdCkgeyB2ZWMtPn5WZWNUKCk7IH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisg
ICAgICBbJl0odm9pZCogcHRyLCBzaXplX3QpIHsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9w
dGltaXplKHNpemUpOworICAgICAgICA6Om5ldyAocHRyKSBWZWNUKHNpemUpOworICAgICAgfSk7
Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9Db25zdHJ1Y3RGcm9tU2l6
ZSwgVHJpdmlhbFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fQ29u
c3RydWN0RnJvbVNpemUsIE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHNpemVfdCBUb1NpemU+Cit2b2lkIEJNX0NvbnN0cnVjdEZyb21TaXplUmVmKGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7CisgIHVzaW5nIFZlY1QgPSBJbmxWZWM8VD47CisgIGF1dG8gc2l6ZSA9
IFRvU2l6ZTsKKyAgYXV0byByZWYgPSBUKCk7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAg
ICBzdGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8gW10oSW5sVmVjPFQ+KiB2ZWMsIHNp
emVfdCkgeyB2ZWMtPn5WZWNUKCk7IH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBb
Jl0odm9pZCogcHRyLCBzaXplX3QpIHsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXpl
KHNpemUpOworICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocmVmKTsKKyAgICAgICAg
OjpuZXcgKHB0cikgVmVjVChzaXplLCByZWYpOworICAgICAgfSk7Cit9CitBQlNMX0lOVEVSTkFM
X0JFTkNITUFSS19PTkVfU0laRShCTV9Db25zdHJ1Y3RGcm9tU2l6ZVJlZiwgVHJpdmlhbFR5cGUp
OworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fQ29uc3RydWN0RnJvbVNpemVS
ZWYsIE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBUb1Np
emU+Cit2b2lkIEJNX0NvbnN0cnVjdEZyb21SYW5nZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkg
eworICB1c2luZyBWZWNUID0gSW5sVmVjPFQ+OworICBzdGQ6OmFycmF5PFQsIFRvU2l6ZT4gYXJy
e307CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwKKyAgICAgIC8qIHByZXBh
cmVfdmVjID0gKi8gW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeyB2ZWMtPn5WZWNUKCk7IH0s
CisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbJl0odm9pZCogcHRyLCBzaXplX3QpIHsK
KyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGFycik7CisgICAgICAgIDo6bmV3IChw
dHIpIFZlY1QoYXJyLmJlZ2luKCksIGFyci5lbmQoKSk7CisgICAgICB9KTsKK30KK0FCU0xfSU5U
RVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0NvbnN0cnVjdEZyb21SYW5nZSwgVHJpdmlhbFR5
cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fQ29uc3RydWN0RnJvbVJh
bmdlLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgVG9T
aXplPgordm9pZCBCTV9Db25zdHJ1Y3RGcm9tQ29weShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkg
eworICB1c2luZyBWZWNUID0gSW5sVmVjPFQ+OworICBWZWNUIG90aGVyX3ZlYyhUb1NpemUpOwor
ICBCYXRjaGVkQmVuY2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3Zl
YyA9ICovCisgICAgICBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZlYy0+flZlY1QoKTsg
fSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAgICAgIFsmXSh2b2lkKiBwdHIsIHNpemVfdCkg
eworICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUob3RoZXJfdmVjKTsKKyAgICAgICAg
OjpuZXcgKHB0cikgVmVjVChvdGhlcl92ZWMpOworICAgICAgfSk7Cit9CitBQlNMX0lOVEVSTkFM
X0JFTkNITUFSS19PTkVfU0laRShCTV9Db25zdHJ1Y3RGcm9tQ29weSwgVHJpdmlhbFR5cGUpOwor
QUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fQ29uc3RydWN0RnJvbUNvcHksIE5v
bnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBUb1NpemU+Cit2
b2lkIEJNX0NvbnN0cnVjdEZyb21Nb3ZlKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHVz
aW5nIFZlY1QgPSBJbmxWZWM8VD47CisgIHN0ZDo6YXJyYXk8VmVjVCwga0JhdGNoU2l6ZT4gdmVj
dG9yX2JhdGNoe307CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBzdGF0ZSwKKyAgICAg
IC8qIHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFsmXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90IGkp
IHsKKyAgICAgICAgdmVjdG9yX2JhdGNoW2ldLmNsZWFyKCk7CisgICAgICAgIHZlY3Rvcl9iYXRj
aFtpXS5yZXNpemUoVG9TaXplKTsKKyAgICAgICAgdmVjLT5+VmVjVCgpOworICAgICAgfSwKKyAg
ICAgIC8qIHRlc3RfdmVjID0gKi8KKyAgICAgIFsmXSh2b2lkKiBwdHIsIHNpemVfdCBpKSB7Cisg
ICAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2ZWN0b3JfYmF0Y2hbaV0pOworICAgICAg
ICA6Om5ldyAocHRyKSBWZWNUKHN0ZDo6bW92ZSh2ZWN0b3JfYmF0Y2hbaV0pKTsKKyAgICAgIH0p
OworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fQ29uc3RydWN0RnJvbU1v
dmUsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX0Nv
bnN0cnVjdEZyb21Nb3ZlLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgRnJvbVNpemUsIHNpemVfdCBUb1NpemU+Cit2b2lkIEJNX0Fzc2lnblNpemVSZWYo
YmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgYXV0byBzaXplID0gVG9TaXplOworICBhdXRv
IHJlZiA9IFQoKTsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAg
LyogcHJlcGFyZV92ZWMgPSAqLyBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZlYy0+cmVz
aXplKEZyb21TaXplKTsgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAgICAgIFsmXShJbmxW
ZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShz
aXplKTsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHJlZik7CisgICAgICAgIHZl
Yy0+YXNzaWduKHNpemUsIHJlZik7CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVOQ0hN
QVJLX1RXT19TSVpFKEJNX0Fzc2lnblNpemVSZWYsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJO
QUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX0Fzc2lnblNpemVSZWYsIE5vbnRyaXZpYWxUeXBlKTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9tU2l6ZSwgc2l6ZV90IFRvU2l6ZT4K
K3ZvaWQgQk1fQXNzaWduUmFuZ2UoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgc3RkOjph
cnJheTxULCBUb1NpemU+IGFycnt9OworICBCYXRjaGVkQmVuY2htYXJrPFQ+KAorICAgICAgc3Rh
dGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3Qp
IHsgdmVjLT5yZXNpemUoRnJvbVNpemUpOyB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAg
ICAgWyZdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsKKyAgICAgICAgYmVuY2htYXJrOjpEb05v
dE9wdGltaXplKGFycik7CisgICAgICAgIHZlYy0+YXNzaWduKGFyci5iZWdpbigpLCBhcnIuZW5k
KCkpOworICAgICAgfSk7Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9B
c3NpZ25SYW5nZSwgVHJpdmlhbFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJ
WkUoQk1fQXNzaWduUmFuZ2UsIE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBGcm9tU2l6ZSwgc2l6ZV90IFRvU2l6ZT4KK3ZvaWQgQk1fQXNzaWduRnJvbUNv
cHkoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgSW5sVmVjPFQ+IG90aGVyX3ZlYyhUb1Np
emUpOworICBCYXRjaGVkQmVuY2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVw
YXJlX3ZlYyA9ICovIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5yZXNpemUoRnJv
bVNpemUpOyB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAgWyZdKElubFZlYzxUPiog
dmVjLCBzaXplX3QpIHsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKG90aGVyX3Zl
Yyk7CisgICAgICAgICp2ZWMgPSBvdGhlcl92ZWM7CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJO
QUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX0Fzc2lnbkZyb21Db3B5LCBUcml2aWFsVHlwZSk7CitB
QlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9Bc3NpZ25Gcm9tQ29weSwgTm9udHJp
dmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplLCBzaXpl
X3QgVG9TaXplPgordm9pZCBCTV9Bc3NpZ25Gcm9tTW92ZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0
ZSkgeworICB1c2luZyBWZWNUID0gSW5sVmVjPFQ+OworICBzdGQ6OmFycmF5PFZlY1QsIGtCYXRj
aFNpemU+IHZlY3Rvcl9iYXRjaHt9OworICBCYXRjaGVkQmVuY2htYXJrPFQ+KAorICAgICAgc3Rh
dGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisgICAgICBbJl0oSW5sVmVjPFQ+KiB2ZWMs
IHNpemVfdCBpKSB7CisgICAgICAgIHZlY3Rvcl9iYXRjaFtpXS5jbGVhcigpOworICAgICAgICB2
ZWN0b3JfYmF0Y2hbaV0ucmVzaXplKFRvU2l6ZSk7CisgICAgICAgIHZlYy0+cmVzaXplKEZyb21T
aXplKTsKKyAgICAgIH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbJl0oSW5sVmVj
PFQ+KiB2ZWMsIHNpemVfdCBpKSB7CisgICAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZSh2
ZWN0b3JfYmF0Y2hbaV0pOworICAgICAgICAqdmVjID0gc3RkOjptb3ZlKHZlY3Rvcl9iYXRjaFtp
XSk7CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX0Fz
c2lnbkZyb21Nb3ZlLCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09f
U0laRShCTV9Bc3NpZ25Gcm9tTW92ZSwgTm9udHJpdmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplLCBzaXplX3QgVG9TaXplPgordm9pZCBCTV9SZXNpemVT
aXplKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisg
ICAgICBzdGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxU
PiogdmVjLCBzaXplX3QpIHsKKyAgICAgICAgdmVjLT5jbGVhcigpOworICAgICAgICB2ZWMtPnJl
c2l6ZShGcm9tU2l6ZSk7CisgICAgICB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAg
W10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeyB2ZWMtPnJlc2l6ZShUb1NpemUpOyB9KTsKK30K
K0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX1Jlc2l6ZVNpemUsIFRyaXZpYWxU
eXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX1Jlc2l6ZVNpemUsIE5v
bnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9tU2l6ZSwg
c2l6ZV90IFRvU2l6ZT4KK3ZvaWQgQk1fUmVzaXplU2l6ZVJlZihiZW5jaG1hcms6OlN0YXRlJiBz
dGF0ZSkgeworICBhdXRvIHQgPSBUKCk7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4oCisgICAgICBz
dGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxUPiogdmVj
LCBzaXplX3QpIHsKKyAgICAgICAgdmVjLT5jbGVhcigpOworICAgICAgICB2ZWMtPnJlc2l6ZShG
cm9tU2l6ZSk7CisgICAgICB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAgWyZdKElu
bFZlYzxUPiogdmVjLCBzaXplX3QpIHsKKyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXpl
KHQpOworICAgICAgICB2ZWMtPnJlc2l6ZShUb1NpemUsIHQpOworICAgICAgfSk7Cit9CitBQlNM
X0lOVEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9SZXNpemVTaXplUmVmLCBUcml2aWFsVHlw
ZSk7CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19UV09fU0laRShCTV9SZXNpemVTaXplUmVmLCBO
b250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRnJvbVNpemUs
IHNpemVfdCBUb1NpemU+Cit2b2lkIEJNX0luc2VydFNpemVSZWYoYmVuY2htYXJrOjpTdGF0ZSYg
c3RhdGUpIHsKKyAgYXV0byB0ID0gVCgpOworICBCYXRjaGVkQmVuY2htYXJrPFQ+KAorICAgICAg
c3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisgICAgICBbXShJbmxWZWM8VD4qIHZl
Yywgc2l6ZV90KSB7CisgICAgICAgIHZlYy0+Y2xlYXIoKTsKKyAgICAgICAgdmVjLT5yZXNpemUo
RnJvbVNpemUpOworICAgICAgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAgICAgIFsmXShJ
bmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6
ZSh0KTsKKyAgICAgICAgYXV0byogcG9zID0gdmVjLT5kYXRhKCkgKyAodmVjLT5zaXplKCkgLyAy
KTsKKyAgICAgICAgdmVjLT5pbnNlcnQocG9zLCB0KTsKKyAgICAgIH0pOworfQorQUJTTF9JTlRF
Uk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fSW5zZXJ0U2l6ZVJlZiwgVHJpdmlhbFR5cGUpOwor
QUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fSW5zZXJ0U2l6ZVJlZiwgTm9udHJp
dmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplLCBzaXpl
X3QgVG9TaXplPgordm9pZCBCTV9JbnNlcnRSYW5nZShiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkg
eworICBJbmxWZWM8VD4gb3RoZXJfdmVjKFRvU2l6ZSk7CisgIEJhdGNoZWRCZW5jaG1hcms8VD4o
CisgICAgICBzdGF0ZSwKKyAgICAgIC8qIHByZXBhcmVfdmVjID0gKi8KKyAgICAgIFtdKElubFZl
YzxUPiogdmVjLCBzaXplX3QpIHsKKyAgICAgICAgdmVjLT5jbGVhcigpOworICAgICAgICB2ZWMt
PnJlc2l6ZShGcm9tU2l6ZSk7CisgICAgICB9LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAg
ICAgWyZdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsKKyAgICAgICAgYmVuY2htYXJrOjpEb05v
dE9wdGltaXplKG90aGVyX3ZlYyk7CisgICAgICAgIGF1dG8qIHBvcyA9IHZlYy0+ZGF0YSgpICsg
KHZlYy0+c2l6ZSgpIC8gMik7CisgICAgICAgIHZlYy0+aW5zZXJ0KHBvcywgb3RoZXJfdmVjLmJl
Z2luKCksIG90aGVyX3ZlYy5lbmQoKSk7CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVO
Q0hNQVJLX1RXT19TSVpFKEJNX0luc2VydFJhbmdlLCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVS
TkFMX0JFTkNITUFSS19UV09fU0laRShCTV9JbnNlcnRSYW5nZSwgTm9udHJpdmlhbFR5cGUpOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXplPgordm9pZCBCTV9FbXBsYWNl
QmFjayhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBCYXRjaGVkQmVuY2htYXJrPFQ+KAor
ICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisgICAgICBbXShJbmxWZWM8
VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIHZlYy0+Y2xlYXIoKTsKKyAgICAgICAgdmVjLT5y
ZXNpemUoRnJvbVNpemUpOworICAgICAgfSwKKyAgICAgIC8qIHRlc3RfdmVjID0gKi8KKyAgICAg
IFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5lbXBsYWNlX2JhY2soKTsgfSk7Cit9
CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9FbXBsYWNlQmFjaywgVHJpdmlh
bFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fRW1wbGFjZUJhY2ss
IE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9tU2l6
ZT4KK3ZvaWQgQk1fUG9wQmFjayhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBCYXRjaGVk
QmVuY2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovCisg
ICAgICBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAgIHZlYy0+Y2xlYXIoKTsK
KyAgICAgICAgdmVjLT5yZXNpemUoRnJvbVNpemUpOworICAgICAgfSwKKyAgICAgIC8qIHRlc3Rf
dmVjID0gKi8KKyAgICAgIFtdKElubFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5wb3BfYmFj
aygpOyB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX1BvcEJhY2ss
IFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX09ORV9TSVpFKEJNX1BvcEJh
Y2ssIE5vbnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9t
U2l6ZT4KK3ZvaWQgQk1fRXJhc2VPbmUoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgQmF0
Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyogcHJlcGFyZV92ZWMgPSAq
LworICAgICAgW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeworICAgICAgICB2ZWMtPmNsZWFy
KCk7CisgICAgICAgIHZlYy0+cmVzaXplKEZyb21TaXplKTsKKyAgICAgIH0sCisgICAgICAvKiB0
ZXN0X3ZlYyA9ICovCisgICAgICBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7CisgICAgICAg
IGF1dG8qIHBvcyA9IHZlYy0+ZGF0YSgpICsgKHZlYy0+c2l6ZSgpIC8gMik7CisgICAgICAgIHZl
Yy0+ZXJhc2UocG9zKTsKKyAgICAgIH0pOworfQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05F
X1NJWkUoQk1fRXJhc2VPbmUsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJL
X09ORV9TSVpFKEJNX0VyYXNlT25lLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCBzaXplX3QgRnJvbVNpemU+Cit2b2lkIEJNX0VyYXNlUmFuZ2UoYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAg
ICAgLyogcHJlcGFyZV92ZWMgPSAqLworICAgICAgW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkg
eworICAgICAgICB2ZWMtPmNsZWFyKCk7CisgICAgICAgIHZlYy0+cmVzaXplKEZyb21TaXplKTsK
KyAgICAgIH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbXShJbmxWZWM8VD4qIHZl
Yywgc2l6ZV90KSB7CisgICAgICAgIGF1dG8qIHBvcyA9IHZlYy0+ZGF0YSgpICsgKHZlYy0+c2l6
ZSgpIC8gMik7CisgICAgICAgIHZlYy0+ZXJhc2UocG9zLCBwb3MgKyAxKTsKKyAgICAgIH0pOwor
fQorQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fRXJhc2VSYW5nZSwgVHJpdmlh
bFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fRXJhc2VSYW5nZSwg
Tm9udHJpdmlhbFR5cGUpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEZyb21TaXpl
Pgordm9pZCBCTV9DbGVhcihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBCYXRjaGVkQmVu
Y2htYXJrPFQ+KAorICAgICAgc3RhdGUsCisgICAgICAvKiBwcmVwYXJlX3ZlYyA9ICovIFtdKElu
bFZlYzxUPiogdmVjLCBzaXplX3QpIHsgdmVjLT5yZXNpemUoRnJvbVNpemUpOyB9LAorICAgICAg
LyogdGVzdF92ZWMgPSAqLyBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90KSB7IHZlYy0+Y2xlYXIo
KTsgfSk7Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNITUFSS19PTkVfU0laRShCTV9DbGVhciwgVHJp
dmlhbFR5cGUpOworQUJTTF9JTlRFUk5BTF9CRU5DSE1BUktfT05FX1NJWkUoQk1fQ2xlYXIsIE5v
bnRyaXZpYWxUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBGcm9tU2l6ZSwg
c2l6ZV90IFRvQ2FwYWNpdHk+Cit2b2lkIEJNX1Jlc2VydmUoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyogcHJl
cGFyZV92ZWMgPSAqLworICAgICAgW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeworICAgICAg
ICB2ZWMtPmNsZWFyKCk7CisgICAgICAgIHZlYy0+cmVzaXplKEZyb21TaXplKTsKKyAgICAgIH0s
CisgICAgICAvKiB0ZXN0X3ZlYyA9ICovCisgICAgICBbXShJbmxWZWM8VD4qIHZlYywgc2l6ZV90
KSB7IHZlYy0+cmVzZXJ2ZShUb0NhcGFjaXR5KTsgfSk7Cit9CitBQlNMX0lOVEVSTkFMX0JFTkNI
TUFSS19UV09fU0laRShCTV9SZXNlcnZlLCBUcml2aWFsVHlwZSk7CitBQlNMX0lOVEVSTkFMX0JF
TkNITUFSS19UV09fU0laRShCTV9SZXNlcnZlLCBOb250cml2aWFsVHlwZSk7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCBzaXplX3QgRnJvbUNhcGFjaXR5LCBzaXplX3QgVG9DYXBhY2l0eT4KK3Zv
aWQgQk1fU2hyaW5rVG9GaXQoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgQmF0Y2hlZEJl
bmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyogcHJlcGFyZV92ZWMgPSAqLworICAg
ICAgW10oSW5sVmVjPFQ+KiB2ZWMsIHNpemVfdCkgeworICAgICAgICB2ZWMtPmNsZWFyKCk7Cisg
ICAgICAgIHZlYy0+cmVzaXplKFRvQ2FwYWNpdHkpOworICAgICAgICB2ZWMtPnJlc2VydmUoRnJv
bUNhcGFjaXR5KTsKKyAgICAgIH0sCisgICAgICAvKiB0ZXN0X3ZlYyA9ICovIFtdKElubFZlYzxU
PiogdmVjLCBzaXplX3QpIHsgdmVjLT5zaHJpbmtfdG9fZml0KCk7IH0pOworfQorQUJTTF9JTlRF
Uk5BTF9CRU5DSE1BUktfVFdPX1NJWkUoQk1fU2hyaW5rVG9GaXQsIFRyaXZpYWxUeXBlKTsKK0FC
U0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpFKEJNX1Nocmlua1RvRml0LCBOb250cml2aWFs
VHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRnJvbVNpemUsIHNpemVfdCBU
b1NpemU+Cit2b2lkIEJNX1N3YXAoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgdXNpbmcg
VmVjVCA9IElubFZlYzxUPjsKKyAgc3RkOjphcnJheTxWZWNULCBrQmF0Y2hTaXplPiB2ZWN0b3Jf
YmF0Y2h7fTsKKyAgQmF0Y2hlZEJlbmNobWFyazxUPigKKyAgICAgIHN0YXRlLAorICAgICAgLyog
cHJlcGFyZV92ZWMgPSAqLworICAgICAgWyZdKElubFZlYzxUPiogdmVjLCBzaXplX3QgaSkgewor
ICAgICAgICB2ZWN0b3JfYmF0Y2hbaV0uY2xlYXIoKTsKKyAgICAgICAgdmVjdG9yX2JhdGNoW2ld
LnJlc2l6ZShUb1NpemUpOworICAgICAgICB2ZWMtPnJlc2l6ZShGcm9tU2l6ZSk7CisgICAgICB9
LAorICAgICAgLyogdGVzdF92ZWMgPSAqLworICAgICAgWyZdKElubFZlYzxUPiogdmVjLCBzaXpl
X3QgaSkgeworICAgICAgICB1c2luZyBzdGQ6OnN3YXA7CisgICAgICAgIGJlbmNobWFyazo6RG9O
b3RPcHRpbWl6ZSh2ZWN0b3JfYmF0Y2hbaV0pOworICAgICAgICBzd2FwKCp2ZWMsIHZlY3Rvcl9i
YXRjaFtpXSk7CisgICAgICB9KTsKK30KK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpF
KEJNX1N3YXAsIFRyaXZpYWxUeXBlKTsKK0FCU0xfSU5URVJOQUxfQkVOQ0hNQVJLX1RXT19TSVpF
KEJNX1N3YXAsIE5vbnRyaXZpYWxUeXBlKTsKKwogfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZjBkYTc1YjdiYTc1OGU4MjI0ZWY3YWJkZTFhY2ViZjAxODI0ZTk3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX2V4Y2VwdGlv
bl9zYWZldHlfdGVzdC5jYwpAQCAtMCwwICsxLDQ4OSBAQAorLy8gQ29weXJpZ2h0IDIwMTkgVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxpbml0aWFs
aXplcl9saXN0PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNs
dWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaCIKKworbmFtZXNwYWNlIHsKKworY29uc3RleHBy
IHNpemVfdCBrSW5saW5lZENhcGFjaXR5ID0gNDsKK2NvbnN0ZXhwciBzaXplX3Qga0xhcmdlU2l6
ZSA9IGtJbmxpbmVkQ2FwYWNpdHkgKiAyOworY29uc3RleHByIHNpemVfdCBrU21hbGxTaXplID0g
a0lubGluZWRDYXBhY2l0eSAvIDI7CisKK3VzaW5nIFRocm93ZXIgPSB0ZXN0aW5nOjpUaHJvd2lu
Z1ZhbHVlPD47Cit1c2luZyBNb3ZhYmxlVGhyb3dlciA9IHRlc3Rpbmc6OlRocm93aW5nVmFsdWU8
dGVzdGluZzo6VHlwZVNwZWM6OmtOb1Rocm93TW92ZT47Cit1c2luZyBUaHJvd0FsbG9jID0gdGVz
dGluZzo6VGhyb3dpbmdBbGxvY2F0b3I8VGhyb3dlcj47CisKK3VzaW5nIFRocm93ZXJWZWMgPSBh
YnNsOjpJbmxpbmVkVmVjdG9yPFRocm93ZXIsIGtJbmxpbmVkQ2FwYWNpdHk+OwordXNpbmcgTW92
YWJsZVRocm93ZXJWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPE1vdmFibGVUaHJvd2VyLCBrSW5s
aW5lZENhcGFjaXR5PjsKKwordXNpbmcgVGhyb3dBbGxvY1Rocm93ZXJWZWMgPQorICAgIGFic2w6
OklubGluZWRWZWN0b3I8VGhyb3dlciwga0lubGluZWRDYXBhY2l0eSwgVGhyb3dBbGxvYz47Cit1
c2luZyBUaHJvd0FsbG9jTW92YWJsZVRocm93ZXJWZWMgPQorICAgIGFic2w6OklubGluZWRWZWN0
b3I8TW92YWJsZVRocm93ZXIsIGtJbmxpbmVkQ2FwYWNpdHksIFRocm93QWxsb2M+OworCisvLyBJ
biBHQ0MsIGlmIGFuIGVsZW1lbnQgb2YgYSBgc3RkOjppbml0aWFsaXplcl9saXN0YCB0aHJvd3Mg
ZHVyaW5nIGNvbnN0cnVjdGlvbgorLy8gdGhlIGVsZW1lbnRzIHRoYXQgd2VyZSBjb25zdHJ1Y3Rl
ZCBiZWZvcmUgaXQgYXJlIG5vdCBkZXN0cm95ZWQuIFRoaXMgY2F1c2VzCisvLyBpbmNvcnJlY3Qg
ZXhjZXB0aW9uIHNhZmV0eSB0ZXN0IGZhaWx1cmVzLiBUaHVzLCBgdGVzdGluZzo6bm90aHJvd19j
dG9yYCBpcworLy8gcmVxdWlyZWQuIFNlZTogaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9z
aG93X2J1Zy5jZ2k/aWQ9NjYxMzkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9NQUtFX0lOSVRfTElT
VChULCBOKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgKE4gPiBrSW5saW5lZENhcGFjaXR5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICA/IHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxUPntUKDAsIHRlc3Rpbmc6Om5vdGhyb3dfY3RvciksIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUKDEsIHRlc3Rpbmc6Om5vdGhyb3dfY3RvciksIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUKDIsIHRlc3Rpbmc6Om5vdGhyb3df
Y3RvciksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUKDMsIHRlc3Rpbmc6
Om5vdGhyb3dfY3RvciksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUKDQs
IHRlc3Rpbmc6Om5vdGhyb3dfY3RvciksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUKDUsIHRlc3Rpbmc6Om5vdGhyb3dfY3RvciksIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUKDYsIHRlc3Rpbmc6Om5vdGhyb3dfY3RvciksIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUKDcsIHRlc3Rpbmc6Om5vdGhyb3dfY3Rvcil9IFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICA6IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPntUKDAsIHRlc3Rpbmc6Om5v
dGhyb3dfY3RvciksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUKDEsIHRl
c3Rpbmc6Om5vdGhyb3dfY3Rvcil9KQorc3RhdGljX2Fzc2VydCgoa0xhcmdlU2l6ZSA9PSA4IHx8
IGtTbWFsbFNpemUgPT0gMiksCisgICAgICAgICAgICAgICJNdXN0IHVwZGF0ZSBBQlNMX0lOVEVS
TkFMX01BS0VfSU5JVF9MSVNUKC4uLikuIik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUaGVWZWNU
LCBzaXplX3QuLi4gVGhlU2l6ZXM+CitjbGFzcyBUZXN0UGFyYW1zIHsKKyBwdWJsaWM6CisgIHVz
aW5nIFZlY1QgPSBUaGVWZWNUOworICBjb25zdGV4cHIgc3RhdGljIHNpemVfdCBHZXRTaXplQXQo
c2l6ZV90IGkpIHsgcmV0dXJuIGtTaXplc1sxICsgaV07IH0KKworIHByaXZhdGU6CisgIGNvbnN0
ZXhwciBzdGF0aWMgc2l6ZV90IGtTaXplc1sxICsgc2l6ZW9mLi4uKFRoZVNpemVzKV0gPSB7MSwg
VGhlU2l6ZXMuLi59OworfTsKKwordXNpbmcgTm9TaXplVGVzdFBhcmFtcyA9CisgICAgOjp0ZXN0
aW5nOjpUeXBlczxUZXN0UGFyYW1zPFRocm93ZXJWZWM+LCBUZXN0UGFyYW1zPE1vdmFibGVUaHJv
d2VyVmVjPiwKKyAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY1Rocm93
ZXJWZWM+LAorICAgICAgICAgICAgICAgICAgICAgVGVzdFBhcmFtczxUaHJvd0FsbG9jTW92YWJs
ZVRocm93ZXJWZWM+PjsKKwordXNpbmcgT25lU2l6ZVRlc3RQYXJhbXMgPQorICAgIDo6dGVzdGlu
Zzo6VHlwZXM8VGVzdFBhcmFtczxUaHJvd2VyVmVjLCBrTGFyZ2VTaXplPiwKKyAgICAgICAgICAg
ICAgICAgICAgIFRlc3RQYXJhbXM8VGhyb3dlclZlYywga1NtYWxsU2l6ZT4sCisgICAgICAgICAg
ICAgICAgICAgICBUZXN0UGFyYW1zPE1vdmFibGVUaHJvd2VyVmVjLCBrTGFyZ2VTaXplPiwKKyAg
ICAgICAgICAgICAgICAgICAgIFRlc3RQYXJhbXM8TW92YWJsZVRocm93ZXJWZWMsIGtTbWFsbFNp
emU+LAorICAgICAgICAgICAgICAgICAgICAgVGVzdFBhcmFtczxUaHJvd0FsbG9jVGhyb3dlclZl
Yywga0xhcmdlU2l6ZT4sCisgICAgICAgICAgICAgICAgICAgICBUZXN0UGFyYW1zPFRocm93QWxs
b2NUaHJvd2VyVmVjLCBrU21hbGxTaXplPiwKKyAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJh
bXM8VGhyb3dBbGxvY01vdmFibGVUaHJvd2VyVmVjLCBrTGFyZ2VTaXplPiwKKyAgICAgICAgICAg
ICAgICAgICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY01vdmFibGVUaHJvd2VyVmVjLCBrU21hbGxT
aXplPj47CisKK3VzaW5nIFR3b1NpemVUZXN0UGFyYW1zID0gOjp0ZXN0aW5nOjpUeXBlczwKKyAg
ICBUZXN0UGFyYW1zPFRocm93ZXJWZWMsIGtMYXJnZVNpemUsIGtMYXJnZVNpemU+LAorICAgIFRl
c3RQYXJhbXM8VGhyb3dlclZlYywga0xhcmdlU2l6ZSwga1NtYWxsU2l6ZT4sCisgICAgVGVzdFBh
cmFtczxUaHJvd2VyVmVjLCBrU21hbGxTaXplLCBrTGFyZ2VTaXplPiwKKyAgICBUZXN0UGFyYW1z
PFRocm93ZXJWZWMsIGtTbWFsbFNpemUsIGtTbWFsbFNpemU+LAorICAgIFRlc3RQYXJhbXM8TW92
YWJsZVRocm93ZXJWZWMsIGtMYXJnZVNpemUsIGtMYXJnZVNpemU+LAorICAgIFRlc3RQYXJhbXM8
TW92YWJsZVRocm93ZXJWZWMsIGtMYXJnZVNpemUsIGtTbWFsbFNpemU+LAorICAgIFRlc3RQYXJh
bXM8TW92YWJsZVRocm93ZXJWZWMsIGtTbWFsbFNpemUsIGtMYXJnZVNpemU+LAorICAgIFRlc3RQ
YXJhbXM8TW92YWJsZVRocm93ZXJWZWMsIGtTbWFsbFNpemUsIGtTbWFsbFNpemU+LAorICAgIFRl
c3RQYXJhbXM8VGhyb3dBbGxvY1Rocm93ZXJWZWMsIGtMYXJnZVNpemUsIGtMYXJnZVNpemU+LAor
ICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY1Rocm93ZXJWZWMsIGtMYXJnZVNpemUsIGtTbWFsbFNp
emU+LAorICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY1Rocm93ZXJWZWMsIGtTbWFsbFNpemUsIGtM
YXJnZVNpemU+LAorICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY1Rocm93ZXJWZWMsIGtTbWFsbFNp
emUsIGtTbWFsbFNpemU+LAorICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY01vdmFibGVUaHJvd2Vy
VmVjLCBrTGFyZ2VTaXplLCBrTGFyZ2VTaXplPiwKKyAgICBUZXN0UGFyYW1zPFRocm93QWxsb2NN
b3ZhYmxlVGhyb3dlclZlYywga0xhcmdlU2l6ZSwga1NtYWxsU2l6ZT4sCisgICAgVGVzdFBhcmFt
czxUaHJvd0FsbG9jTW92YWJsZVRocm93ZXJWZWMsIGtTbWFsbFNpemUsIGtMYXJnZVNpemU+LAor
ICAgIFRlc3RQYXJhbXM8VGhyb3dBbGxvY01vdmFibGVUaHJvd2VyVmVjLCBrU21hbGxTaXplLCBr
U21hbGxTaXplPj47CisKK3RlbXBsYXRlIDx0eXBlbmFtZT4KK3N0cnVjdCBOb1NpemVUZXN0IDog
Ojp0ZXN0aW5nOjpUZXN0IHt9OworVFlQRURfVEVTVF9TVUlURShOb1NpemVUZXN0LCBOb1NpemVU
ZXN0UGFyYW1zKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lPgorc3RydWN0IE9uZVNpemVUZXN0IDog
Ojp0ZXN0aW5nOjpUZXN0IHt9OworVFlQRURfVEVTVF9TVUlURShPbmVTaXplVGVzdCwgT25lU2l6
ZVRlc3RQYXJhbXMpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWU+CitzdHJ1Y3QgVHdvU2l6ZVRlc3Qg
OiA6OnRlc3Rpbmc6OlRlc3Qge307CitUWVBFRF9URVNUX1NVSVRFKFR3b1NpemVUZXN0LCBUd29T
aXplVGVzdFBhcmFtcyk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBWZWNUPgorYm9vbCBJbmxpbmVk
VmVjdG9ySW52YXJpYW50cyhWZWNUKiB2ZWMpIHsKKyAgaWYgKCp2ZWMgIT0gKnZlYykgcmV0dXJu
IGZhbHNlOworICBpZiAodmVjLT5zaXplKCkgPiB2ZWMtPmNhcGFjaXR5KCkpIHJldHVybiBmYWxz
ZTsKKyAgaWYgKHZlYy0+c2l6ZSgpID4gdmVjLT5tYXhfc2l6ZSgpKSByZXR1cm4gZmFsc2U7Cisg
IGlmICh2ZWMtPmNhcGFjaXR5KCkgPiB2ZWMtPm1heF9zaXplKCkpIHJldHVybiBmYWxzZTsKKyAg
aWYgKHZlYy0+ZGF0YSgpICE9IHN0ZDo6YWRkcmVzc29mKHZlYy0+YXQoMCkpKSByZXR1cm4gZmFs
c2U7CisgIGlmICh2ZWMtPmRhdGEoKSAhPSB2ZWMtPmJlZ2luKCkpIHJldHVybiBmYWxzZTsKKyAg
aWYgKCp2ZWMtPmRhdGEoKSAhPSAqdmVjLT5iZWdpbigpKSByZXR1cm4gZmFsc2U7CisgIGlmICh2
ZWMtPmJlZ2luKCkgPiB2ZWMtPmVuZCgpKSByZXR1cm4gZmFsc2U7CisgIGlmICgodmVjLT5lbmQo
KSAtIHZlYy0+YmVnaW4oKSkgIT0gdmVjLT5zaXplKCkpIHJldHVybiBmYWxzZTsKKyAgaWYgKHN0
ZDo6ZGlzdGFuY2UodmVjLT5iZWdpbigpLCB2ZWMtPmVuZCgpKSAhPSB2ZWMtPnNpemUoKSkgcmV0
dXJuIGZhbHNlOworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gRnVuY3Rpb24gdGhhdCBhbHdheXMg
cmV0dXJucyBmYWxzZSBpcyBjb3JyZWN0LCBidXQgcmVmYWN0b3JpbmcgaXMgcmVxdWlyZWQKKy8v
IGZvciBjbGFyaXR5LiBJdCdzIG5lZWRlZCB0byBleHByZXNzIHRoYXQsIGFzIGEgY29udHJhY3Qs
IGNlcnRhaW4gb3BlcmF0aW9ucworLy8gc2hvdWxkIG5vdCB0aHJvdyBhdCBhbGwuIEV4ZWN1dGlv
biBvZiB0aGlzIGZ1bmN0aW9uIG1lYW5zIGFuIGV4Y2VwdGlvbiB3YXMKKy8vIHRocm93biBhbmQg
dGh1cyB0aGUgdGVzdCBzaG91bGQgZmFpbC4KKy8vIFRPRE8oam9obnNvbmNqKTogQWRkIGB0ZXN0
aW5nOjpOb1Rocm93R3VhcmFudGVlYCB0byB0aGUgZnJhbWV3b3JrCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmVjVD4KK2Jvb2wgTm9UaHJvd0d1YXJhbnRlZShWZWNUKiAvKiB2ZWMgKi8pIHsKKyAgcmV0
dXJuIGZhbHNlOworfQorCitUWVBFRF9URVNUKE5vU2l6ZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3Rv
cikgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpWZWNUOworICB1c2luZyBh
bGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OmFsbG9jYXRvcl90eXBlOworCisgIHRlc3Rp
bmc6OlRlc3RUaHJvd2luZ0N0b3I8VmVjVD4oKTsKKworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdD
dG9yPFZlY1Q+KGFsbG9jYXRvcl90eXBle30pOworfQorCitUWVBFRF9URVNUKE9uZVNpemVUZXN0
LCBTaXplQ29uc3RydWN0b3IpIHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
VmVjVDsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSB0eXBlbmFtZSBWZWNUOjphbGxvY2F0b3Jf
dHlwZTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHNpemUgPSBUeXBlUGFyYW06OkdldFNpemVB
dCgwKTsKKworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdDdG9yPFZlY1Q+KHNpemUpOworCisgIHRl
c3Rpbmc6OlRlc3RUaHJvd2luZ0N0b3I8VmVjVD4oc2l6ZSwgYWxsb2NhdG9yX3R5cGV7fSk7Cit9
CisKK1RZUEVEX1RFU1QoT25lU2l6ZVRlc3QsIFNpemVSZWZDb25zdHJ1Y3RvcikgeworICB1c2lu
ZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpWZWNUOworICB1c2luZyB2YWx1ZV90eXBlID0g
dHlwZW5hbWUgVmVjVDo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSB0eXBl
bmFtZSBWZWNUOjphbGxvY2F0b3JfdHlwZTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHNpemUg
PSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdDdG9y
PFZlY1Q+KHNpemUsIHZhbHVlX3R5cGV7fSk7CisKKyAgdGVzdGluZzo6VGVzdFRocm93aW5nQ3Rv
cjxWZWNUPihzaXplLCB2YWx1ZV90eXBle30sIGFsbG9jYXRvcl90eXBle30pOworfQorCitUWVBF
RF9URVNUKE9uZVNpemVUZXN0LCBJbml0aWFsaXplckxpc3RDb25zdHJ1Y3RvcikgeworICB1c2lu
ZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpWZWNUOworICB1c2luZyB2YWx1ZV90eXBlID0g
dHlwZW5hbWUgVmVjVDo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSB0eXBl
bmFtZSBWZWNUOjphbGxvY2F0b3JfdHlwZTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHNpemUg
PSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdDdG9y
PFZlY1Q+KAorICAgICAgQUJTTF9JTlRFUk5BTF9NQUtFX0lOSVRfTElTVCh2YWx1ZV90eXBlLCBz
aXplKSk7CisKKyAgdGVzdGluZzo6VGVzdFRocm93aW5nQ3RvcjxWZWNUPigKKyAgICAgIEFCU0xf
SU5URVJOQUxfTUFLRV9JTklUX0xJU1QodmFsdWVfdHlwZSwgc2l6ZSksIGFsbG9jYXRvcl90eXBl
e30pOworfQorCitUWVBFRF9URVNUKE9uZVNpemVUZXN0LCBSYW5nZUNvbnN0cnVjdG9yKSB7Cisg
IHVzaW5nIFZlY1QgPSB0eXBlbmFtZSBUeXBlUGFyYW06OlZlY1Q7CisgIHVzaW5nIHZhbHVlX3R5
cGUgPSB0eXBlbmFtZSBWZWNUOjp2YWx1ZV90eXBlOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9
IHR5cGVuYW1lIFZlY1Q6OmFsbG9jYXRvcl90eXBlOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8g
c2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDApOworCisgIHN0ZDo6YXJyYXk8dmFsdWVfdHlw
ZSwgc2l6ZT4gYXJye307CisKKyAgdGVzdGluZzo6VGVzdFRocm93aW5nQ3RvcjxWZWNUPihhcnIu
YmVnaW4oKSwgYXJyLmVuZCgpKTsKKworICB0ZXN0aW5nOjpUZXN0VGhyb3dpbmdDdG9yPFZlY1Q+
KGFyci5iZWdpbigpLCBhcnIuZW5kKCksIGFsbG9jYXRvcl90eXBle30pOworfQorCitUWVBFRF9U
RVNUKE9uZVNpemVUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSB0eXBlbmFtZSBW
ZWNUOjphbGxvY2F0b3JfdHlwZTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHNpemUgPSBUeXBl
UGFyYW06OkdldFNpemVBdCgwKTsKKworICBWZWNUIG90aGVyX3ZlY3tzaXplfTsKKworICB0ZXN0
aW5nOjpUZXN0VGhyb3dpbmdDdG9yPFZlY1Q+KG90aGVyX3ZlYyk7CisKKyAgdGVzdGluZzo6VGVz
dFRocm93aW5nQ3RvcjxWZWNUPihvdGhlcl92ZWMsIGFsbG9jYXRvcl90eXBle30pOworfQorCitU
WVBFRF9URVNUKE9uZVNpemVUZXN0LCBNb3ZlQ29uc3RydWN0b3IpIHsKKyAgdXNpbmcgVmVjVCA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSB0eXBl
bmFtZSBWZWNUOjphbGxvY2F0b3JfdHlwZTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHNpemUg
PSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICBpZiAoIWFic2w6OmFsbG9jYXRvcl9pc19u
b3Rocm93PGFsbG9jYXRvcl90eXBlPjo6dmFsdWUpIHsKKyAgICB0ZXN0aW5nOjpUZXN0VGhyb3dp
bmdDdG9yPFZlY1Q+KFZlY1R7c2l6ZX0pOworCisgICAgdGVzdGluZzo6VGVzdFRocm93aW5nQ3Rv
cjxWZWNUPihWZWNUe3NpemV9LCBhbGxvY2F0b3JfdHlwZXt9KTsKKyAgfQorfQorCitUWVBFRF9U
RVNUKFR3b1NpemVUZXN0LCBBc3NpZ24pIHsKKyAgdXNpbmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQ
YXJhbTo6VmVjVDsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIFZlY1Q6OnZhbHVlX3R5
cGU7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byBmcm9tX3NpemUgPSBUeXBlUGFyYW06OkdldFNp
emVBdCgwKTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHRvX3NpemUgPSBUeXBlUGFyYW06Okdl
dFNpemVBdCgxKTsKKworICBhdXRvIHRlc3RlciA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZl
dHlUZXN0ZXIoKQorICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShWZWNUe2Zy
b21fc2l6ZX0pCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKElubGluZWRWZWN0
b3JJbnZhcmlhbnRzPFZlY1Q+KTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNU
KiB2ZWMpIHsKKyAgICAqdmVjID0gQUJTTF9JTlRFUk5BTF9NQUtFX0lOSVRfTElTVCh2YWx1ZV90
eXBlLCB0b19zaXplKTsKKyAgfSkpOworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZl
Y1QqIHZlYykgeworICAgIFZlY1Qgb3RoZXJfdmVje3RvX3NpemV9OworICAgICp2ZWMgPSBvdGhl
cl92ZWM7CisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMp
IHsKKyAgICBWZWNUIG90aGVyX3ZlY3t0b19zaXplfTsKKyAgICAqdmVjID0gc3RkOjptb3ZlKG90
aGVyX3ZlYyk7CisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2
ZWMpIHsKKyAgICB2YWx1ZV90eXBlIHZhbHt9OworICAgIHZlYy0+YXNzaWduKHRvX3NpemUsIHZh
bCk7CisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMpIHsK
KyAgICB2ZWMtPmFzc2lnbihBQlNMX0lOVEVSTkFMX01BS0VfSU5JVF9MSVNUKHZhbHVlX3R5cGUs
IHRvX3NpemUpKTsKKyAgfSkpOworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1Qq
IHZlYykgeworICAgIHN0ZDo6YXJyYXk8dmFsdWVfdHlwZSwgdG9fc2l6ZT4gYXJye307CisgICAg
dmVjLT5hc3NpZ24oYXJyLmJlZ2luKCksIGFyci5lbmQoKSk7CisgIH0pKTsKK30KKworVFlQRURf
VEVTVChUd29TaXplVGVzdCwgUmVzaXplKSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFtZSBUeXBl
UGFyYW06OlZlY1Q7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBWZWNUOjp2YWx1ZV90
eXBlOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gZnJvbV9zaXplID0gVHlwZVBhcmFtOjpHZXRT
aXplQXQoMCk7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byB0b19zaXplID0gVHlwZVBhcmFtOjpH
ZXRTaXplQXQoMSk7CisKKyAgYXV0byB0ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2Fm
ZXR5VGVzdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoVmVjVHtm
cm9tX3NpemV9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhJbmxpbmVkVmVj
dG9ySW52YXJpYW50czxWZWNUPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdGluZzo6c3Ryb25nX2d1YXJhbnRlZSk7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3Qo
W10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5yZXNpemUodG9fc2l6ZSk7ICAvLworICB9KSk7CisK
KyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5yZXNp
emUodG9fc2l6ZSwgdmFsdWVfdHlwZXt9KTsgIC8vCisgIH0pKTsKK30KKworVFlQRURfVEVTVChP
bmVTaXplVGVzdCwgSW5zZXJ0KSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFtZSBUeXBlUGFyYW06
OlZlY1Q7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBWZWNUOjp2YWx1ZV90eXBlOwor
ICBjb25zdGV4cHIgc3RhdGljIGF1dG8gZnJvbV9zaXplID0gVHlwZVBhcmFtOjpHZXRTaXplQXQo
MCk7CisKKyAgYXV0byB0ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVy
KCkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoVmVjVHtmcm9tX3NpemV9
KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhJbmxpbmVkVmVjdG9ySW52YXJp
YW50czxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7
CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKTsKKyAgICB2ZWMtPmluc2VydChpdCwgdmFsdWVf
dHlwZXt9KTsKKyAgfSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMp
IHsKKyAgICBhdXRvIGl0ID0gdmVjLT5iZWdpbigpICsgKHZlYy0+c2l6ZSgpIC8gMik7CisgICAg
dmVjLT5pbnNlcnQoaXQsIHZhbHVlX3R5cGV7fSk7CisgIH0pKTsKKyAgRVhQRUNUX1RSVUUodGVz
dGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+ZW5kKCk7CisgICAg
dmVjLT5pbnNlcnQoaXQsIHZhbHVlX3R5cGV7fSk7CisgIH0pKTsKK30KKworVFlQRURfVEVTVChU
d29TaXplVGVzdCwgSW5zZXJ0KSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFtZSBUeXBlUGFyYW06
OlZlY1Q7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBWZWNUOjp2YWx1ZV90eXBlOwor
ICBjb25zdGV4cHIgc3RhdGljIGF1dG8gZnJvbV9zaXplID0gVHlwZVBhcmFtOjpHZXRTaXplQXQo
MCk7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byBjb3VudCA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0
KDEpOworCisgIGF1dG8gdGVzdGVyID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rl
cigpCisgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFZlY1R7ZnJvbV9zaXpl
fSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoSW5saW5lZFZlY3RvckludmFy
aWFudHM8VmVjVD4pOworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykg
eworICAgIGF1dG8gaXQgPSB2ZWMtPmJlZ2luKCk7CisgICAgdmVjLT5pbnNlcnQoaXQsIGNvdW50
LCB2YWx1ZV90eXBle30pOworICB9KSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZl
Y1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMtPmJlZ2luKCkgKyAodmVjLT5zaXplKCkgLyAy
KTsKKyAgICB2ZWMtPmluc2VydChpdCwgY291bnQsIHZhbHVlX3R5cGV7fSk7CisgIH0pKTsKKyAg
RVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZl
Yy0+ZW5kKCk7CisgICAgdmVjLT5pbnNlcnQoaXQsIGNvdW50LCB2YWx1ZV90eXBle30pOworICB9
KSk7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgYXV0
byBpdCA9IHZlYy0+YmVnaW4oKTsKKyAgICB2ZWMtPmluc2VydChpdCwgQUJTTF9JTlRFUk5BTF9N
QUtFX0lOSVRfTElTVCh2YWx1ZV90eXBlLCBjb3VudCkpOworICB9KSk7CisgIEVYUEVDVF9UUlVF
KHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMtPmJlZ2luKCkg
KyAodmVjLT5zaXplKCkgLyAyKTsKKyAgICB2ZWMtPmluc2VydChpdCwgQUJTTF9JTlRFUk5BTF9N
QUtFX0lOSVRfTElTVCh2YWx1ZV90eXBlLCBjb3VudCkpOworICB9KSk7CisgIEVYUEVDVF9UUlVF
KHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMtPmVuZCgpOwor
ICAgIHZlYy0+aW5zZXJ0KGl0LCBBQlNMX0lOVEVSTkFMX01BS0VfSU5JVF9MSVNUKHZhbHVlX3R5
cGUsIGNvdW50KSk7CisgIH0pKTsKKworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNU
KiB2ZWMpIHsKKyAgICBhdXRvIGl0ID0gdmVjLT5iZWdpbigpOworICAgIHN0ZDo6YXJyYXk8dmFs
dWVfdHlwZSwgY291bnQ+IGFycnt9OworICAgIHZlYy0+aW5zZXJ0KGl0LCBhcnIuYmVnaW4oKSwg
YXJyLmVuZCgpKTsKKyAgfSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2
ZWMpIHsKKyAgICBhdXRvIGl0ID0gdmVjLT5iZWdpbigpICsgKHZlYy0+c2l6ZSgpIC8gMik7Cisg
ICAgc3RkOjphcnJheTx2YWx1ZV90eXBlLCBjb3VudD4gYXJye307CisgICAgdmVjLT5pbnNlcnQo
aXQsIGFyci5iZWdpbigpLCBhcnIuZW5kKCkpOworICB9KSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rl
ci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMtPmVuZCgpOworICAgIHN0
ZDo6YXJyYXk8dmFsdWVfdHlwZSwgY291bnQ+IGFycnt9OworICAgIHZlYy0+aW5zZXJ0KGl0LCBh
cnIuYmVnaW4oKSwgYXJyLmVuZCgpKTsKKyAgfSkpOworfQorCitUWVBFRF9URVNUKE9uZVNpemVU
ZXN0LCBFbXBsYWNlQmFjaykgeworICB1c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpW
ZWNUOworICBjb25zdGV4cHIgc3RhdGljIGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0
KDApOworCisgIFZlY1QgZnVsbF92ZWN7c2l6ZX07CisgIGZ1bGxfdmVjLnJlc2l6ZShmdWxsX3Zl
Yy5jYXBhY2l0eSgpKTsKKworICBWZWNUIG5vbmZ1bGxfdmVje3NpemV9OworICBub25mdWxsX3Zl
Yy5yZXNlcnZlKHNpemUgKyAxKTsKKworICBhdXRvIHRlc3RlciA9IHRlc3Rpbmc6Ok1ha2VFeGNl
cHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoQ29udHJhY3RzKAorICAgICAgSW5saW5lZFZlY3Rvcklu
dmFyaWFudHM8VmVjVD4pOworCisgIEVYUEVDVF9UUlVFKHRlc3Rlci5XaXRoSW5pdGlhbFZhbHVl
KG5vbmZ1bGxfdmVjKS5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIHZlYy0+ZW1wbGFjZV9iYWNr
KCk7ICAvLworICB9KSk7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLldpdGhJbml0aWFsVmFsdWUo
ZnVsbF92ZWMpLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5lbXBsYWNlX2JhY2soKTsg
IC8vCisgIH0pKTsKK30KKworVFlQRURfVEVTVChPbmVTaXplVGVzdCwgUG9wQmFjaykgeworICB1
c2luZyBWZWNUID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpWZWNUOworICBjb25zdGV4cHIgc3RhdGlj
IGF1dG8gc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDApOworCisgIGF1dG8gdGVzdGVyID0g
dGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCisgICAgICAgICAgICAgICAgICAg
IC5XaXRoSW5pdGlhbFZhbHVlKFZlY1R7c2l6ZX0pCisgICAgICAgICAgICAgICAgICAgIC5XaXRo
Q29udHJhY3RzKE5vVGhyb3dHdWFyYW50ZWU8VmVjVD4pOworCisgIEVYUEVDVF9UUlVFKHRlc3Rl
ci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIHZlYy0+cG9wX2JhY2soKTsgIC8vCisgIH0pKTsK
K30KKworVFlQRURfVEVTVChPbmVTaXplVGVzdCwgRXJhc2UpIHsKKyAgdXNpbmcgVmVjVCA9IHR5
cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHNpemUgPSBU
eXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICBhdXRvIHRlc3RlciA9IHRlc3Rpbmc6Ok1ha2VF
eGNlcHRpb25TYWZldHlUZXN0ZXIoKQorICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxW
YWx1ZShWZWNUe3NpemV9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhJbmxp
bmVkVmVjdG9ySW52YXJpYW50czxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3Qo
W10oVmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKTsKKyAgICB2ZWMtPmVy
YXNlKGl0KTsKKyAgfSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShWZWNUKiB2ZWMp
IHsKKyAgICBhdXRvIGl0ID0gdmVjLT5iZWdpbigpICsgKHZlYy0+c2l6ZSgpIC8gMik7CisgICAg
dmVjLT5lcmFzZShpdCk7CisgIH0pKTsKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVj
VCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKSArICh2ZWMtPnNpemUoKSAtIDEp
OworICAgIHZlYy0+ZXJhc2UoaXQpOworICB9KSk7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRl
c3QoW10oVmVjVCogdmVjKSB7CisgICAgYXV0byBpdCA9IHZlYy0+YmVnaW4oKTsKKyAgICB2ZWMt
PmVyYXNlKGl0LCBpdCArIDEpOworICB9KSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtd
KFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMtPmJlZ2luKCkgKyAodmVjLT5zaXplKCkg
LyAyKTsKKyAgICB2ZWMtPmVyYXNlKGl0LCBpdCArIDEpOworICB9KSk7CisgIEVYUEVDVF9UUlVF
KHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIGF1dG8gaXQgPSB2ZWMtPmJlZ2luKCkg
KyAodmVjLT5zaXplKCkgLSAxKTsKKyAgICB2ZWMtPmVyYXNlKGl0LCBpdCArIDEpOworICB9KSk7
Cit9CisKK1RZUEVEX1RFU1QoT25lU2l6ZVRlc3QsIENsZWFyKSB7CisgIHVzaW5nIFZlY1QgPSB0
eXBlbmFtZSBUeXBlUGFyYW06OlZlY1Q7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byBzaXplID0g
VHlwZVBhcmFtOjpHZXRTaXplQXQoMCk7CisKKyAgYXV0byB0ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtl
RXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFs
VmFsdWUoVmVjVHtzaXplfSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoTm9U
aHJvd0d1YXJhbnRlZTxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVmVj
VCogdmVjKSB7CisgICAgdmVjLT5jbGVhcigpOyAgLy8KKyAgfSkpOworfQorCitUWVBFRF9URVNU
KFR3b1NpemVUZXN0LCBSZXNlcnZlKSB7CisgIHVzaW5nIFZlY1QgPSB0eXBlbmFtZSBUeXBlUGFy
YW06OlZlY1Q7CisgIGNvbnN0ZXhwciBzdGF0aWMgYXV0byBmcm9tX3NpemUgPSBUeXBlUGFyYW06
OkdldFNpemVBdCgwKTsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRvIHRvX2NhcGFjaXR5ID0gVHlw
ZVBhcmFtOjpHZXRTaXplQXQoMSk7CisKKyAgYXV0byB0ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtlRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFs
dWUoVmVjVHtmcm9tX3NpemV9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhJ
bmxpbmVkVmVjdG9ySW52YXJpYW50czxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUodGVzdGVyLlRl
c3QoW10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5yZXNlcnZlKHRvX2NhcGFjaXR5KTsgIC8vCisg
IH0pKTsKK30KKworVFlQRURfVEVTVChPbmVTaXplVGVzdCwgU2hyaW5rVG9GaXQpIHsKKyAgdXNp
bmcgVmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgY29uc3RleHByIHN0YXRpYyBh
dXRvIHNpemUgPSBUeXBlUGFyYW06OkdldFNpemVBdCgwKTsKKworICBhdXRvIHRlc3RlciA9IHRl
c3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQorICAgICAgICAgICAgICAgICAgICAu
V2l0aEluaXRpYWxWYWx1ZShWZWNUe3NpemV9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENv
bnRyYWN0cyhJbmxpbmVkVmVjdG9ySW52YXJpYW50czxWZWNUPik7CisKKyAgRVhQRUNUX1RSVUUo
dGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgdmVjLT5zaHJpbmtfdG9fZml0KCk7ICAv
LworICB9KSk7Cit9CisKK1RZUEVEX1RFU1QoVHdvU2l6ZVRlc3QsIFN3YXApIHsKKyAgdXNpbmcg
VmVjVCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6VmVjVDsKKyAgY29uc3RleHByIHN0YXRpYyBhdXRv
IGZyb21fc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDApOworICBjb25zdGV4cHIgc3RhdGlj
IGF1dG8gdG9fc2l6ZSA9IFR5cGVQYXJhbTo6R2V0U2l6ZUF0KDEpOworCisgIGF1dG8gdGVzdGVy
ID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCisgICAgICAgICAgICAgICAg
ICAgIC5XaXRoSW5pdGlhbFZhbHVlKFZlY1R7ZnJvbV9zaXplfSkKKyAgICAgICAgICAgICAgICAg
ICAgLldpdGhDb250cmFjdHMoSW5saW5lZFZlY3RvckludmFyaWFudHM8VmVjVD4pOworCisgIEVY
UEVDVF9UUlVFKHRlc3Rlci5UZXN0KFtdKFZlY1QqIHZlYykgeworICAgIFZlY1Qgb3RoZXJfdmVj
e3RvX3NpemV9OworICAgIHZlYy0+c3dhcChvdGhlcl92ZWMpOworICB9KSk7CisKKyAgRVhQRUNU
X1RSVUUodGVzdGVyLlRlc3QoW10oVmVjVCogdmVjKSB7CisgICAgdXNpbmcgc3RkOjpzd2FwOwor
ICAgIFZlY1Qgb3RoZXJfdmVje3RvX3NpemV9OworICAgIHN3YXAoKnZlYywgb3RoZXJfdmVjKTsK
KyAgfSkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbmxpbmVkX3ZlY3Rvcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9y
X3Rlc3QuY2MKaW5kZXggMDhkY2QzZWY2NmZiNmEzMzAyZjg2MmM1MmFkOTFmNTM2MjYwZDQwMC4u
YmFkYTRmZWM5Y2NiYTY0NzhlMTNiYjI2ZTM2YTE4NTI3OTMxOGM5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2lubGluZWRfdmVjdG9yX3Rlc3QuY2MKQEAgLTEsMTAgKzEsMTAgQEAKLS8vIENvcHlyaWdodCAy
MDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0
aG9ycy4KIC8vCiAvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fdGVzdGluZy5o
IgogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgogI2luY2x1ZGUg
ImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9j
b3VudGluZ19hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90
ZXN0X2luc3RhbmNlX3RyYWNrZXIuaCIKICNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaF90ZXN0aW5n
LmgiCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCkBAIC0zNyw2ICszOCw3IEBACiAK
IG5hbWVzcGFjZSB7CiAKK3VzaW5nIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6Q291bnRpbmdB
bGxvY2F0b3I7CiB1c2luZyBhYnNsOjp0ZXN0X2ludGVybmFsOjpDb3B5YWJsZU1vdmFibGVJbnN0
YW5jZTsKIHVzaW5nIGFic2w6OnRlc3RfaW50ZXJuYWw6OkNvcHlhYmxlT25seUluc3RhbmNlOwog
dXNpbmcgYWJzbDo6dGVzdF9pbnRlcm5hbDo6SW5zdGFuY2VUcmFja2VyOwpAQCAtNjgsMTggKzcw
LDE1IEBAIE1BVENIRVJfUChWYWx1ZUlzLCBlLCAiIikgewogLy8gdGVzdF9pbnN0YW5jZV90cmFj
a2VyLmguCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIEluc3RhbmNlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3Qge307Ci1UWVBFRF9URVNUX0NBU0VfUChJbnN0YW5jZVRlc3QpOwor
VFlQRURfVEVTVF9TVUlURV9QKEluc3RhbmNlVGVzdCk7CiAKIC8vIEEgc2ltcGxlIHJlZmVyZW5j
ZSBjb3VudGVkIGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwcm9wZXIgZWxlbWVudHMgYXJl
CiAvLyBkZXN0cm95ZWQgaW4gdGhlIGVyYXNlKGJlZ2luLCBlbmQpIHRlc3QuCiBjbGFzcyBSZWZD
b3VudGVkIHsKICBwdWJsaWM6Ci0gIFJlZkNvdW50ZWQoaW50IHZhbHVlLCBpbnQqIGNvdW50KSA6
IHZhbHVlXyh2YWx1ZSksIGNvdW50Xyhjb3VudCkgewotICAgIFJlZigpOwotICB9CisgIFJlZkNv
dW50ZWQoaW50IHZhbHVlLCBpbnQqIGNvdW50KSA6IHZhbHVlXyh2YWx1ZSksIGNvdW50Xyhjb3Vu
dCkgeyBSZWYoKTsgfQogCi0gIFJlZkNvdW50ZWQoY29uc3QgUmVmQ291bnRlZCYgdikKLSAgICAg
IDogdmFsdWVfKHYudmFsdWVfKSwgY291bnRfKHYuY291bnRfKSB7CisgIFJlZkNvdW50ZWQoY29u
c3QgUmVmQ291bnRlZCYgdikgOiB2YWx1ZV8odi52YWx1ZV8pLCBjb3VudF8odi5jb3VudF8pIHsK
ICAgICBSZWYoKTsKICAgfQogCkBAIC0xMzgsNTcgKzEzNyw2IEBAIHN0YXRpYyBJbnRWZWMgRmls
bChpbnQgbGVuLCBpbnQgb2Zmc2V0ID0gMCkgewogICByZXR1cm4gdjsKIH0KIAotLy8gVGhpcyBp
cyBhIHN0YXRlZnVsIGFsbG9jYXRvciwgYnV0IHRoZSBzdGF0ZSBsaXZlcyBvdXRzaWRlIG9mIHRo
ZQotLy8gYWxsb2NhdG9yIChpbiB3aGF0ZXZlciB0ZXN0IGlzIHVzaW5nIHRoZSBhbGxvY2F0b3Ip
LiBUaGlzIGlzIG9kZAotLy8gYnV0IGhlbHBzIGluIHRlc3RzIHdoZXJlIHRoZSBhbGxvY2F0b3Ig
aXMgcHJvcGFnYXRlZCBpbnRvIG5lc3RlZAotLy8gY29udGFpbmVycyAtIHRoYXQgY2hhaW4gb2Yg
YWxsb2NhdG9ycyB1c2VzIHRoZSBzYW1lIHN0YXRlIGFuZCBpcwotLy8gdGh1cyBlYXNpZXIgdG8g
cXVlcnkgZm9yIGFnZ3JlZ2F0ZSBhbGxvY2F0aW9uIGluZm9ybWF0aW9uLgotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jbGFzcyBDb3VudGluZ0FsbG9jYXRvciA6IHB1YmxpYyBzdGQ6OmFsbG9jYXRv
cjxUPiB7Ci0gcHVibGljOgotICB1c2luZyBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPFQ+OwotICB1
c2luZyBwb2ludGVyID0gdHlwZW5hbWUgQWxsb2M6OnBvaW50ZXI7Ci0gIHVzaW5nIHNpemVfdHlw
ZSA9IHR5cGVuYW1lIEFsbG9jOjpzaXplX3R5cGU7Ci0KLSAgQ291bnRpbmdBbGxvY2F0b3IoKSA6
IGJ5dGVzX3VzZWRfKG51bGxwdHIpIHt9Ci0gIGV4cGxpY2l0IENvdW50aW5nQWxsb2NhdG9yKGlu
dDY0X3QqIGIpIDogYnl0ZXNfdXNlZF8oYikge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4K
LSAgQ291bnRpbmdBbGxvY2F0b3IoY29uc3QgQ291bnRpbmdBbGxvY2F0b3I8VT4mIHgpCi0gICAg
ICA6IEFsbG9jKHgpLCBieXRlc191c2VkXyh4LmJ5dGVzX3VzZWRfKSB7fQotCi0gIHBvaW50ZXIg
YWxsb2NhdGUoc2l6ZV90eXBlIG4sCi0gICAgICAgICAgICAgICAgICAgc3RkOjphbGxvY2F0b3I8
dm9pZD46OmNvbnN0X3BvaW50ZXIgaGludCA9IG51bGxwdHIpIHsKLSAgICBhc3NlcnQoYnl0ZXNf
dXNlZF8gIT0gbnVsbHB0cik7Ci0gICAgKmJ5dGVzX3VzZWRfICs9IG4gKiBzaXplb2YoVCk7Ci0g
ICAgcmV0dXJuIEFsbG9jOjphbGxvY2F0ZShuLCBoaW50KTsKLSAgfQotCi0gIHZvaWQgZGVhbGxv
Y2F0ZShwb2ludGVyIHAsIHNpemVfdHlwZSBuKSB7Ci0gICAgQWxsb2M6OmRlYWxsb2NhdGUocCwg
bik7Ci0gICAgYXNzZXJ0KGJ5dGVzX3VzZWRfICE9IG51bGxwdHIpOwotICAgICpieXRlc191c2Vk
XyAtPSBuICogc2l6ZW9mKFQpOwotICB9Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgY2xh
c3MgcmViaW5kIHsKLSAgIHB1YmxpYzoKLSAgICB1c2luZyBvdGhlciA9IENvdW50aW5nQWxsb2Nh
dG9yPFU+OwotICB9OwotCi0gIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnRpbmdB
bGxvY2F0b3ImIGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ291bnRpbmdBbGxv
Y2F0b3ImIGIpIHsKLSAgICByZXR1cm4gYS5ieXRlc191c2VkXyA9PSBiLmJ5dGVzX3VzZWRfOwot
ICB9Ci0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb3VudGluZ0FsbG9jYXRvciYg
YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb3VudGluZ0FsbG9jYXRvciYgYikg
ewotICAgIHJldHVybiAhKGEgPT0gYik7Ci0gIH0KLQotICBpbnQ2NF90KiBieXRlc191c2VkXzsK
LX07Ci0KIFRFU1QoSW50VmVjLCBTaW1wbGVPcHMpIHsKICAgZm9yIChpbnQgbGVuID0gMDsgbGVu
IDwgMjA7IGxlbisrKSB7CiAgICAgSW50VmVjIHY7CkBAIC0yMzksNiArMTg3LDEyIEBAIFRFU1Qo
SW50VmVjLCBTaW1wbGVPcHMpIHsKICAgfQogfQogCitURVNUKEludFZlYywgUG9wQmFja05vT3Zl
cmZsb3cpIHsKKyAgSW50VmVjIHYgPSB7MX07CisgIHYucG9wX2JhY2soKTsKKyAgRVhQRUNUX0VR
KHYuc2l6ZSgpLCAwKTsKK30KKwogVEVTVChJbnRWZWMsIEF0VGhyb3dzKSB7CiAgIEludFZlYyB2
ID0gezEsIDIsIDN9OwogICBFWFBFQ1RfRVEodi5hdCgyKSwgMyk7CkBAIC0zMzMsNyArMjg3LDcg
QEAgVEVTVChSZWZDb3VudGVkVmVjLCBFcmFzZUJlZ2luRW5kKSB7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBDaGVjayB0aGF0IHRoZSBlbGVtZW50cyBhdCB0aGUgZW5kIGFyZSBwcmVzZXJ2ZWQu
Ci0gICAgICAgIGZvciAoaW50IGkgPSBlcmFzZV9lbmQ7IGk8IGxlbjsgKytpKSB7CisgICAgICAg
IGZvciAoaW50IGkgPSBlcmFzZV9lbmQ7IGkgPCBsZW47ICsraSkgewogICAgICAgICAgIEVYUEVD
VF9FUSgxLCBjb3VudHNbaV0pOwogICAgICAgICB9CiAgICAgICB9CkBAIC01OTUsMTAgKzU0OSwx
MCBAQCBURVNUKEludFZlYywgUmVzaXplKSB7CiAgICAgc3RhdGljIGNvbnN0IGludCBrUmVzaXpl
RWxlbSA9IDEwMDAwMDA7CiAgICAgZm9yIChpbnQgayA9IDA7IGsgPCAxMDsgaysrKSB7CiAgICAg
ICAvLyBFbmxhcmdpbmcgcmVzaXplCi0gICAgICB2LnJlc2l6ZShsZW4raywga1Jlc2l6ZUVsZW0p
OwotICAgICAgRVhQRUNUX0VRKGxlbitrLCB2LnNpemUoKSk7Ci0gICAgICBFWFBFQ1RfTEUobGVu
K2ssIHYuY2FwYWNpdHkoKSk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbitrOyBpKysp
IHsKKyAgICAgIHYucmVzaXplKGxlbiArIGssIGtSZXNpemVFbGVtKTsKKyAgICAgIEVYUEVDVF9F
UShsZW4gKyBrLCB2LnNpemUoKSk7CisgICAgICBFWFBFQ1RfTEUobGVuICsgaywgdi5jYXBhY2l0
eSgpKTsKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuICsgazsgaSsrKSB7CiAgICAgICAg
IGlmIChpIDwgbGVuKSB7CiAgICAgICAgICAgRVhQRUNUX0VRKGksIHZbaV0pOwogICAgICAgICB9
IGVsc2UgewpAQCAtOTA2LDggKzg2MCwxMCBAQCBUWVBFRF9URVNUX1AoSW5zdGFuY2VUZXN0LCBT
d2FwKSB7CiAgICAgICBJbnN0YW5jZVRyYWNrZXIgdHJhY2tlcjsKICAgICAgIEluc3RhbmNlVmVj
IGEsIGI7CiAgICAgICBjb25zdCBzaXplX3QgaW5saW5lZF9jYXBhY2l0eSA9IGEuY2FwYWNpdHko
KTsKKyAgICAgIGF1dG8gbWluX2xlbiA9IHN0ZDo6bWluKGwxLCBsMik7CisgICAgICBhdXRvIG1h
eF9sZW4gPSBzdGQ6Om1heChsMSwgbDIpOwogICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsMTsg
aSsrKSBhLnB1c2hfYmFjayhJbnN0YW5jZShpKSk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGwyOyBpKyspIGIucHVzaF9iYWNrKEluc3RhbmNlKDEwMCtpKSk7CisgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGwyOyBpKyspIGIucHVzaF9iYWNrKEluc3RhbmNlKDEwMCArIGkpKTsKICAgICAg
IEVYUEVDVF9FUSh0cmFja2VyLmluc3RhbmNlcygpLCBsMSArIGwyKTsKICAgICAgIHRyYWNrZXIu
UmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCk7CiAgICAgICB7CkBAIC05MTksMTUgKzg3NSwxNSBAQCBU
WVBFRF9URVNUX1AoSW5zdGFuY2VUZXN0LCBTd2FwKSB7CiAgICAgICAgIEVYUEVDVF9FUSh0cmFj
a2VyLnN3YXBzKCksIDApOyAgLy8gQWxsb2NhdGlvbnMgYXJlIHN3YXBwZWQuCiAgICAgICAgIEVY
UEVDVF9FUSh0cmFja2VyLm1vdmVzKCksIDApOwogICAgICAgfSBlbHNlIGlmIChhLnNpemUoKSA8
PSBpbmxpbmVkX2NhcGFjaXR5ICYmIGIuc2l6ZSgpIDw9IGlubGluZWRfY2FwYWNpdHkpIHsKLSAg
ICAgICAgRVhQRUNUX0VRKHRyYWNrZXIuc3dhcHMoKSwgc3RkOjptaW4obDEsIGwyKSk7Ci0gICAg
ICAgIC8vIFRPRE8oYnNhbXdlbCk6IFRoaXMgc2hvdWxkIHVzZSBtb3ZlcyB3aGVuIHRoZSB0eXBl
IGlzIG1vdmFibGUuCi0gICAgICAgIEVYUEVDVF9FUSh0cmFja2VyLmNvcGllcygpLCBzdGQ6Om1h
eChsMSwgbDIpIC0gc3RkOjptaW4obDEsIGwyKSk7CisgICAgICAgIEVYUEVDVF9FUSh0cmFja2Vy
LnN3YXBzKCksIG1pbl9sZW4pOworICAgICAgICBFWFBFQ1RfRVEoKHRyYWNrZXIubW92ZXMoKSA/
IHRyYWNrZXIubW92ZXMoKSA6IHRyYWNrZXIuY29waWVzKCkpLAorICAgICAgICAgICAgICAgICAg
bWF4X2xlbiAtIG1pbl9sZW4pOwogICAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT25lIGlzIGFs
bG9jYXRlZCBhbmQgdGhlIG90aGVyIGlzbid0LiBUaGUgYWxsb2NhdGlvbiBpcyB0cmFuc2ZlcnJl
ZAogICAgICAgICAvLyB3aXRob3V0IGNvcHlpbmcgZWxlbWVudHMsIGFuZCB0aGUgaW5saW5lZCBp
bnN0YW5jZXMgYXJlIGNvcGllZC9tb3ZlZC4KICAgICAgICAgRVhQRUNUX0VRKHRyYWNrZXIuc3dh
cHMoKSwgMCk7Ci0gICAgICAgIC8vIFRPRE8oYnNhbXdlbCk6IFRoaXMgc2hvdWxkIHVzZSBtb3Zl
cyB3aGVuIHRoZSB0eXBlIGlzIG1vdmFibGUuCi0gICAgICAgIEVYUEVDVF9FUSh0cmFja2VyLmNv
cGllcygpLCBzdGQ6Om1pbihsMSwgbDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKCh0cmFja2VyLm1v
dmVzKCkgPyB0cmFja2VyLm1vdmVzKCkgOiB0cmFja2VyLmNvcGllcygpKSwKKyAgICAgICAgICAg
ICAgICAgIG1pbl9sZW4pOwogICAgICAgfQogCiAgICAgICBFWFBFQ1RfRVEobDEsIGIuc2l6ZSgp
KTsKQEAgLTk3NSw3ICs5MzEsNyBAQCBURVNUKEludFZlYywgRXF1YWxBbmROb3RFcXVhbCkgewog
ICAgIEVYUEVDVF9GQUxTRShhID09IGIpOwogICAgIEVYUEVDVF9UUlVFKGEgIT0gYik7CiAKLSAg
ICBiW2ldID0gYltpXSAtIDE7ICAgIC8vIEJhY2sgdG8gYmVmb3JlCisgICAgYltpXSA9IGJbaV0g
LSAxOyAgLy8gQmFjayB0byBiZWZvcmUKICAgICBFWFBFQ1RfVFJVRShhID09IGIpOwogICAgIEVY
UEVDVF9GQUxTRShhICE9IGIpOwogICB9CkBAIC0xMDQyLDcgKzk5OCw3IEBAIFRZUEVEX1RFU1Rf
UChJbnN0YW5jZVRlc3QsIENvdW50Q29uc3RydWN0b3JzRGVzdHJ1Y3RvcnMpIHsKIAogICAgIC8v
IHJlc2VydmUoKSBtdXN0IG5vdCBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGluaXRpYWxpemVkIG9i
amVjdHMKICAgICBTQ09QRURfVFJBQ0UoInJlc2VydmUiKTsKLSAgICB2LnJlc2VydmUobGVuKzEw
MDApOworICAgIHYucmVzZXJ2ZShsZW4gKyAxMDAwKTsKICAgICBFWFBFQ1RfRVEodHJhY2tlci5p
bnN0YW5jZXMoKSwgbGVuKTsKICAgICBFWFBFQ1RfRVEodHJhY2tlci5jb3BpZXMoKSArIHRyYWNr
ZXIubW92ZXMoKSwgbGVuKTsKIApAQCAtMTI4OCw5ICsxMjQ0LDggQEAgdm9pZCBJbnN0YW5jZUNv
dW50RWxlbUFzc2lnbldpdGhBbGxvY2F0aW9uVGVzdCgpIHsKICAgICBhYnNsOjpJbmxpbmVkVmVj
dG9yPEluc3RhbmNlLCAyPiB2KG9yaWdpbmFsX2NvbnRlbnRzLmJlZ2luKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9jb250ZW50cy5lbmQoKSk7CiAg
ICAgdi5hc3NpZ24oMywgSW5zdGFuY2UoMTIzKSk7Ci0gICAgRVhQRUNUX1RIQVQodiwKLSAgICAg
ICAgICAgICAgICBBbGxPZihTaXplSXMoMyksCi0gICAgICAgICAgICAgICAgICAgICAgRWxlbWVu
dHNBcmUoVmFsdWVJcygxMjMpLCBWYWx1ZUlzKDEyMyksIFZhbHVlSXMoMTIzKSkpKTsKKyAgICBF
WFBFQ1RfVEhBVCh2LCBBbGxPZihTaXplSXMoMyksIEVsZW1lbnRzQXJlKFZhbHVlSXMoMTIzKSwg
VmFsdWVJcygxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWVJcygxMjMpKSkpOwogICAgIEVYUEVDVF9MRSh2LnNpemUoKSwgdi5jYXBhY2l0
eSgpKTsKICAgfQogfQpAQCAtMTU2OSw4ICsxNTI0LDggQEAgVFlQRURfVEVTVF9QKEluc3RhbmNl
VGVzdCwgSW5pdGlhbGl6ZXJMaXN0QXNzaWduKSB7CiAgICAgU0NPUEVEX1RSQUNFKG9yaWdpbmFs
X3NpemUpOwogICAgIGFic2w6OklubGluZWRWZWN0b3I8SW5zdGFuY2UsIDI+IHYob3JpZ2luYWxf
c2l6ZSwgSW5zdGFuY2UoMTIzNDUpKTsKICAgICB2LmFzc2lnbih7SW5zdGFuY2UoMyksIEluc3Rh
bmNlKDQpLCBJbnN0YW5jZSg1KX0pOwotICAgIEVYUEVDVF9USEFUKHYsIEFsbE9mKFNpemVJcygz
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50c0FyZShWYWx1ZUlzKDMpLCBWYWx1
ZUlzKDQpLCBWYWx1ZUlzKDUpKSkpOworICAgIEVYUEVDVF9USEFUKAorICAgICAgICB2LCBBbGxP
ZihTaXplSXMoMyksIEVsZW1lbnRzQXJlKFZhbHVlSXMoMyksIFZhbHVlSXMoNCksIFZhbHVlSXMo
NSkpKSk7CiAgICAgRVhQRUNUX0xFKDMsIHYuY2FwYWNpdHkoKSk7CiAgIH0KIH0KQEAgLTE1OTUs
NyArMTU1MCw3IEBAIFRFU1QoRHluYW1pY1ZlYywgRHluYW1pY1ZlY0NvbXBpbGVzKSB7CiBURVNU
KEFsbG9jYXRvclN1cHBvcnRUZXN0LCBDb25zdHJ1Y3RvcnMpIHsKICAgdXNpbmcgTXlBbGxvYyA9
IENvdW50aW5nQWxsb2NhdG9yPGludD47CiAgIHVzaW5nIEFsbG9jVmVjID0gYWJzbDo6SW5saW5l
ZFZlY3RvcjxpbnQsIDQsIE15QWxsb2M+OwotICBjb25zdCBpbnQgaWFbXSA9IHsgMCwgMSwgMiwg
MywgNCwgNSwgNiwgNyB9OworICBjb25zdCBpbnQgaWFbXSA9IHswLCAxLCAyLCAzLCA0LCA1LCA2
LCA3fTsKICAgaW50NjRfdCBhbGxvY2F0ZWQgPSAwOwogICBNeUFsbG9jIGFsbG9jKCZhbGxvY2F0
ZWQpOwogICB7IEFsbG9jVmVjIEFCU0xfQVRUUklCVVRFX1VOVVNFRCB2OyB9CkBAIC0xNjExLDcg
KzE1NjYsNyBAQCBURVNUKEFsbG9jYXRvclN1cHBvcnRUZXN0LCBDb25zdHJ1Y3RvcnMpIHsKIFRF
U1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIENvdW50QWxsb2NhdGlvbnMpIHsKICAgdXNpbmcgTXlB
bGxvYyA9IENvdW50aW5nQWxsb2NhdG9yPGludD47CiAgIHVzaW5nIEFsbG9jVmVjID0gYWJzbDo6
SW5saW5lZFZlY3RvcjxpbnQsIDQsIE15QWxsb2M+OwotICBjb25zdCBpbnQgaWFbXSA9IHsgMCwg
MSwgMiwgMywgNCwgNSwgNiwgNyB9OworICBjb25zdCBpbnQgaWFbXSA9IHswLCAxLCAyLCAzLCA0
LCA1LCA2LCA3fTsKICAgaW50NjRfdCBhbGxvY2F0ZWQgPSAwOwogICBNeUFsbG9jIGFsbG9jKCZh
bGxvY2F0ZWQpOwogICB7CkBAIC0xNjc1LDggKzE2MzAsOCBAQCBURVNUKEFsbG9jYXRvclN1cHBv
cnRUZXN0LCBTd2FwQm90aEFsbG9jYXRlZCkgewogICBpbnQ2NF90IGFsbG9jYXRlZDEgPSAwOwog
ICBpbnQ2NF90IGFsbG9jYXRlZDIgPSAwOwogICB7Ci0gICAgY29uc3QgaW50IGlhMVtdID0geyAw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3IH07Ci0gICAgY29uc3QgaW50IGlhMltdID0geyAwLCAxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4IH07CisgICAgY29uc3QgaW50IGlhMVtdID0gezAsIDEsIDIsIDMs
IDQsIDUsIDYsIDd9OworICAgIGNvbnN0IGludCBpYTJbXSA9IHswLCAxLCAyLCAzLCA0LCA1LCA2
LCA3LCA4fTsKICAgICBNeUFsbG9jIGExKCZhbGxvY2F0ZWQxKTsKICAgICBNeUFsbG9jIGEyKCZh
bGxvY2F0ZWQyKTsKICAgICBBbGxvY1ZlYyB2MShpYTEsIGlhMSArIEFCU0xfQVJSQVlTSVpFKGlh
MSksIGExKTsKQEAgLTE3MDAsOCArMTY1NSw4IEBAIFRFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3Qs
IFN3YXBPbmVBbGxvY2F0ZWQpIHsKICAgaW50NjRfdCBhbGxvY2F0ZWQxID0gMDsKICAgaW50NjRf
dCBhbGxvY2F0ZWQyID0gMDsKICAgewotICAgIGNvbnN0IGludCBpYTFbXSA9IHsgMCwgMSwgMiwg
MywgNCwgNSwgNiwgNyB9OwotICAgIGNvbnN0IGludCBpYTJbXSA9IHsgMCwgMSwgMiwgMyB9Owor
ICAgIGNvbnN0IGludCBpYTFbXSA9IHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3fTsKKyAgICBjb25z
dCBpbnQgaWEyW10gPSB7MCwgMSwgMiwgM307CiAgICAgTXlBbGxvYyBhMSgmYWxsb2NhdGVkMSk7
CiAgICAgTXlBbGxvYyBhMigmYWxsb2NhdGVkMik7CiAgICAgQWxsb2NWZWMgdjEoaWExLCBpYTEg
KyBBQlNMX0FSUkFZU0laRShpYTEpLCBhMSk7CkBAIC0xNzIwLDQ4ICsxNjc1LDUzIEBAIFRFU1Qo
QWxsb2NhdG9yU3VwcG9ydFRlc3QsIFN3YXBPbmVBbGxvY2F0ZWQpIHsKICAgRVhQRUNUX1RIQVQo
YWxsb2NhdGVkMiwgMCk7CiB9CiAKLVRFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIFNjb3BlZEFs
bG9jYXRvcldvcmtzKSB7CitURVNUKEFsbG9jYXRvclN1cHBvcnRUZXN0LCBTY29wZWRBbGxvY2F0
b3JXb3Jrc0lubGluZWQpIHsKICAgdXNpbmcgU3RkVmVjdG9yID0gc3RkOjp2ZWN0b3I8aW50LCBD
b3VudGluZ0FsbG9jYXRvcjxpbnQ+PjsKLSAgdXNpbmcgTXlBbGxvYyA9Ci0gICAgICBzdGQ6OnNj
b3BlZF9hbGxvY2F0b3JfYWRhcHRvcjxDb3VudGluZ0FsbG9jYXRvcjxTdGRWZWN0b3I+PjsKLSAg
dXNpbmcgQWxsb2NWZWMgPSBhYnNsOjpJbmxpbmVkVmVjdG9yPFN0ZFZlY3RvciwgNCwgTXlBbGxv
Yz47CisgIHVzaW5nIEFsbG9jID0gQ291bnRpbmdBbGxvY2F0b3I8U3RkVmVjdG9yPjsKKyAgdXNp
bmcgU2NvcGVkQWxsb2MgPSBzdGQ6OnNjb3BlZF9hbGxvY2F0b3JfYWRhcHRvcjxBbGxvYz47Cisg
IHVzaW5nIEFsbG9jVmVjID0gYWJzbDo6SW5saW5lZFZlY3RvcjxTdGRWZWN0b3IsIDEsIFNjb3Bl
ZEFsbG9jPjsKIAotICBpbnQ2NF90IGFsbG9jYXRlZCA9IDA7Ci0gIEFsbG9jVmVjIHZlYyhNeUFs
bG9je0NvdW50aW5nQWxsb2NhdG9yPFN0ZFZlY3Rvcj57JmFsbG9jYXRlZH19KTsKLSAgRVhQRUNU
X0VRKGFsbG9jYXRlZCwgMCk7CisgIGludDY0X3QgdG90YWxfYWxsb2NhdGVkX2J5dGVfY291bnQg
PSAwOwogCi0gIC8vIFRoaXMgZGVmYXVsdCBjb25zdHJ1Y3RzIGEgdmVjdG9yPGludD4sIGJ1dCB0
aGUgYWxsb2NhdG9yIHNob3VsZCBwYXNzIGl0c2VsZgotICAvLyBpbnRvIHRoZSB2ZWN0b3I8aW50
Pi4KLSAgLy8gVGhlIGFic2w6OklubGluZWRWZWN0b3IgZG9lcyBub3QgYWxsb2NhdGUgYW55IG1l
bW9yeS4KLSAgLy8gVGhlIHZlY3RvcjxpbnQ+IGRvZXMgbm90IGFsbG9jYXRlIGFueSBtZW1vcnku
Ci0gIHZlYy5yZXNpemUoMSk7Ci0gIEVYUEVDVF9FUShhbGxvY2F0ZWQsIDApOworICBBbGxvY1Zl
YyBpbmxpbmVkX2Nhc2UoU2NvcGVkQWxsb2MoQWxsb2MoKyZ0b3RhbF9hbGxvY2F0ZWRfYnl0ZV9j
b3VudCkpKTsKIAotICAvLyBXZSBtYWtlIHZlY3RvcjxpbnQ+IGFsbG9jYXRlIG1lbW9yeS4KLSAg
Ly8gSXQgbXVzdCBnbyB0aHJvdWdoIHRoZSBhbGxvY2F0b3IgZXZlbiB0aG91Z2ggd2UgZGlkbid0
IGNvbnN0cnVjdCB0aGUKLSAgLy8gdmVjdG9yIGRpcmVjdGx5LgotICB2ZWNbMF0ucHVzaF9iYWNr
KDEpOwotICBFWFBFQ1RfRVEoYWxsb2NhdGVkLCBzaXplb2YoaW50KSAqIDEpOworICAvLyBDYWxs
ZWQgb25seSBvbmNlIHRvIHJlbWFpbiBpbmxpbmVkCisgIGlubGluZWRfY2FzZS5lbXBsYWNlX2Jh
Y2soKTsKIAotICAvLyBBbm90aGVyIGFsbG9jYXRpbmcgdmVjdG9yLgotICB2ZWMucHVzaF9iYWNr
KHZlY1swXSk7Ci0gIEVYUEVDVF9FUShhbGxvY2F0ZWQsIHNpemVvZihpbnQpICogMik7CisgIGlu
dDY0X3QgYWJzbF9yZXNwb25zaWJsZV9mb3JfY291bnQgPSB0b3RhbF9hbGxvY2F0ZWRfYnl0ZV9j
b3VudDsKKyAgRVhQRUNUX0VRKGFic2xfcmVzcG9uc2libGVfZm9yX2NvdW50LCAwKTsKIAotICAv
LyBPdmVyZmxvdyB0aGUgaW5saW5lZCBtZW1vcnkuCi0gIC8vIFRoZSBhYnNsOjpJbmxpbmVkVmVj
dG9yIHdpbGwgbm93IGFsbG9jYXRlLgotICB2ZWMucmVzaXplKDUpOwotICBFWFBFQ1RfRVEoYWxs
b2NhdGVkLCBzaXplb2YoaW50KSAqIDIgKyBzaXplb2YoU3RkVmVjdG9yKSAqIDgpOworICBpbmxp
bmVkX2Nhc2VbMF0uZW1wbGFjZV9iYWNrKCk7CisgIEVYUEVDVF9HVCh0b3RhbF9hbGxvY2F0ZWRf
Ynl0ZV9jb3VudCwgYWJzbF9yZXNwb25zaWJsZV9mb3JfY291bnQpOwogCi0gIC8vIEFkZGluZyBv
bmUgbW9yZSBpbiBleHRlcm5hbCBtb2RlIHNob3VsZCBhbHNvIHdvcmsuCi0gIHZlYy5wdXNoX2Jh
Y2sodmVjWzBdKTsKLSAgRVhQRUNUX0VRKGFsbG9jYXRlZCwgc2l6ZW9mKGludCkgKiAzICsgc2l6
ZW9mKFN0ZFZlY3RvcikgKiA4KTsKKyAgaW5saW5lZF9jYXNlLmNsZWFyKCk7CisgIGlubGluZWRf
Y2FzZS5zaHJpbmtfdG9fZml0KCk7CisgIEVYUEVDVF9FUSh0b3RhbF9hbGxvY2F0ZWRfYnl0ZV9j
b3VudCwgMCk7Cit9CiAKLSAgLy8gQW5kIGV4dGVuZGluZyB0aGVzZSBzaG91bGQgc3RpbGwgd29y
ay4KLSAgdmVjWzBdLnB1c2hfYmFjaygxKTsKLSAgRVhQRUNUX0VRKGFsbG9jYXRlZCwgc2l6ZW9m
KGludCkgKiA0ICsgc2l6ZW9mKFN0ZFZlY3RvcikgKiA4KTsKK1RFU1QoQWxsb2NhdG9yU3VwcG9y
dFRlc3QsIFNjb3BlZEFsbG9jYXRvcldvcmtzQWxsb2NhdGVkKSB7CisgIHVzaW5nIFN0ZFZlY3Rv
ciA9IHN0ZDo6dmVjdG9yPGludCwgQ291bnRpbmdBbGxvY2F0b3I8aW50Pj47CisgIHVzaW5nIEFs
bG9jID0gQ291bnRpbmdBbGxvY2F0b3I8U3RkVmVjdG9yPjsKKyAgdXNpbmcgU2NvcGVkQWxsb2Mg
PSBzdGQ6OnNjb3BlZF9hbGxvY2F0b3JfYWRhcHRvcjxBbGxvYz47CisgIHVzaW5nIEFsbG9jVmVj
ID0gYWJzbDo6SW5saW5lZFZlY3RvcjxTdGRWZWN0b3IsIDEsIFNjb3BlZEFsbG9jPjsKIAotICB2
ZWMuY2xlYXIoKTsKLSAgRVhQRUNUX0VRKGFsbG9jYXRlZCwgMCk7CisgIGludDY0X3QgdG90YWxf
YWxsb2NhdGVkX2J5dGVfY291bnQgPSAwOworCisgIEFsbG9jVmVjIGFsbG9jYXRlZF9jYXNlKFNj
b3BlZEFsbG9jKEFsbG9jKCsmdG90YWxfYWxsb2NhdGVkX2J5dGVfY291bnQpKSk7CisKKyAgLy8g
Q2FsbGVkIHR3aWNlIHRvIGZvcmNlIGludG8gYmVpbmcgYWxsb2NhdGVkCisgIGFsbG9jYXRlZF9j
YXNlLmVtcGxhY2VfYmFjaygpOworICBhbGxvY2F0ZWRfY2FzZS5lbXBsYWNlX2JhY2soKTsKKwor
ICBpbnQ2NF90IGFic2xfcmVzcG9uc2libGVfZm9yX2NvdW50ID0gdG90YWxfYWxsb2NhdGVkX2J5
dGVfY291bnQ7CisgIEVYUEVDVF9HVChhYnNsX3Jlc3BvbnNpYmxlX2Zvcl9jb3VudCwgMCk7CisK
KyAgYWxsb2NhdGVkX2Nhc2VbMV0uZW1wbGFjZV9iYWNrKCk7CisgIEVYUEVDVF9HVCh0b3RhbF9h
bGxvY2F0ZWRfYnl0ZV9jb3VudCwgYWJzbF9yZXNwb25zaWJsZV9mb3JfY291bnQpOworCisgIGFs
bG9jYXRlZF9jYXNlLmNsZWFyKCk7CisgIGFsbG9jYXRlZF9jYXNlLnNocmlua190b19maXQoKTsK
KyAgRVhQRUNUX0VRKHRvdGFsX2FsbG9jYXRlZF9ieXRlX2NvdW50LCAwKTsKIH0KIAogVEVTVChB
bGxvY2F0b3JTdXBwb3J0VGVzdCwgU2l6ZUFsbG9jQ29uc3RydWN0b3IpIHsKQEAgLTE3OTAsNCAr
MTc1MCwyMyBAQCBURVNUKEFsbG9jYXRvclN1cHBvcnRUZXN0LCBTaXplQWxsb2NDb25zdHJ1Y3Rv
cikgewogICB9CiB9CiAKK1RFU1QoSW5saW5lZFZlY3RvclRlc3QsIEFic2xIYXNoVmFsdWVXb3Jr
cykgeworICB1c2luZyBWID0gYWJzbDo6SW5saW5lZFZlY3RvcjxpbnQsIDQ+OworICBzdGQ6OnZl
Y3RvcjxWPiBjYXNlczsKKworICAvLyBHZW5lcmF0ZSBhIHZhcmlldHkgb2YgdmVjdG9ycyBzb21l
IG9mIHRoZXNlIGFyZSBzbWFsbCBlbm91Z2ggZm9yIHRoZSBpbmxpbmUKKyAgLy8gc3BhY2UgYnV0
IGFyZSBzdG9yZWQgb3V0IG9mIGxpbmUuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkg
eworICAgIFYgdjsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IGk7ICsraikgeworICAgICAgdi5w
dXNoX2JhY2soaik7CisgICAgfQorICAgIGNhc2VzLnB1c2hfYmFjayh2KTsKKyAgICB2LnJlc2l6
ZShpICUgNCk7CisgICAgY2FzZXMucHVzaF9iYWNrKHYpOworICB9CisKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShjYXNlcykpOworfQor
CiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvYnRyZWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9idHJlZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk1NjFhNGQ2MmZlNGExZGFkMGZkNzllYThiZDk0MDM4Y2UwNjQ3MDEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvYnRyZWUuaApAQCAtMCwwICsxLDI2
MTAgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisvLyBBIGJ0
cmVlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTVEwgc2V0IGFuZCBtYXAgaW50ZXJmYWNlcy4gQSBi
dHJlZSBpcyBzbWFsbGVyCisvLyBhbmQgZ2VuZXJhbGx5IGFsc28gZmFzdGVyIHRoYW4gU1RMIHNl
dC9tYXAgKHJlZmVyIHRvIHRoZSBiZW5jaG1hcmtzIGJlbG93KS4KKy8vIFRoZSByZWQtYmxhY2sg
dHJlZSBpbXBsZW1lbnRhdGlvbiBvZiBTVEwgc2V0L21hcCBoYXMgYW4gb3ZlcmhlYWQgb2YgMwor
Ly8gcG9pbnRlcnMgKGxlZnQsIHJpZ2h0IGFuZCBwYXJlbnQpIHBsdXMgdGhlIG5vZGUgY29sb3Ig
aW5mb3JtYXRpb24gZm9yIGVhY2gKKy8vIHN0b3JlZCB2YWx1ZS4gU28gYSBzZXQ8aW50MzJfdD4g
Y29uc3VtZXMgNDAgYnl0ZXMgZm9yIGVhY2ggdmFsdWUgc3RvcmVkIGluCisvLyA2NC1iaXQgbW9k
ZS4gVGhpcyBidHJlZSBpbXBsZW1lbnRhdGlvbiBzdG9yZXMgbXVsdGlwbGUgdmFsdWVzIG9uIGZp
eGVkCisvLyBzaXplIG5vZGVzICh1c3VhbGx5IDI1NiBieXRlcykgYW5kIGRvZXNuJ3Qgc3RvcmUg
Y2hpbGQgcG9pbnRlcnMgZm9yIGxlYWYKKy8vIG5vZGVzLiBUaGUgcmVzdWx0IGlzIHRoYXQgYSBi
dHJlZV9zZXQ8aW50MzJfdD4gbWF5IHVzZSBtdWNoIGxlc3MgbWVtb3J5IHBlcgorLy8gc3RvcmVk
IHZhbHVlLiBGb3IgdGhlIHJhbmRvbSBpbnNlcnRpb24gYmVuY2htYXJrIGluIGJ0cmVlX2JlbmNo
LmNjLCBhCisvLyBidHJlZV9zZXQ8aW50MzJfdD4gd2l0aCBub2RlLXNpemUgb2YgMjU2IHVzZXMg
NS4xIGJ5dGVzIHBlciBzdG9yZWQgdmFsdWUuCisvLworLy8gVGhlIHBhY2tpbmcgb2YgbXVsdGlw
bGUgdmFsdWVzIG9uIHRvIGVhY2ggbm9kZSBvZiBhIGJ0cmVlIGhhcyBhbm90aGVyIGVmZmVjdAor
Ly8gYmVzaWRlcyBiZXR0ZXIgc3BhY2UgdXRpbGl6YXRpb246IGJldHRlciBjYWNoZSBsb2NhbGl0
eSBkdWUgdG8gZmV3ZXIgY2FjaGUKKy8vIGxpbmVzIGJlaW5nIGFjY2Vzc2VkLiBCZXR0ZXIgY2Fj
aGUgbG9jYWxpdHkgdHJhbnNsYXRlcyBpbnRvIGZhc3RlcgorLy8gb3BlcmF0aW9ucy4KKy8vCisv
LyBDQVZFQVRTCisvLworLy8gSW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zIG9uIGEgYnRyZWUgY2Fu
IGNhdXNlIHNwbGl0dGluZywgbWVyZ2luZyBvcgorLy8gcmViYWxhbmNpbmcgb2YgYnRyZWUgbm9k
ZXMuIEFuZCBldmVuIHdpdGhvdXQgdGhlc2Ugb3BlcmF0aW9ucywgaW5zZXJ0aW9ucworLy8gYW5k
IGRlbGV0aW9ucyBvbiBhIGJ0cmVlIHdpbGwgbW92ZSB2YWx1ZXMgYXJvdW5kIHdpdGhpbiBhIG5v
ZGUuIEluIGJvdGgKKy8vIGNhc2VzLCB0aGUgcmVzdWx0IGlzIHRoYXQgaW5zZXJ0aW9ucyBhbmQg
ZGVsZXRpb25zIGNhbiBpbnZhbGlkYXRlIGl0ZXJhdG9ycworLy8gcG9pbnRpbmcgdG8gdmFsdWVz
IG90aGVyIHRoYW4gdGhlIG9uZSBiZWluZyBpbnNlcnRlZC9kZWxldGVkLiBUaGVyZWZvcmUsIHRo
aXMKKy8vIGNvbnRhaW5lciBkb2VzIG5vdCBwcm92aWRlIHBvaW50ZXIgc3RhYmlsaXR5LiBUaGlz
IGlzIG5vdGFibHkgZGlmZmVyZW50IGZyb20KKy8vIFNUTCBzZXQvbWFwIHdoaWNoIHRha2VzIGNh
cmUgdG8gbm90IGludmFsaWRhdGUgaXRlcmF0b3JzIG9uIGluc2VydC9lcmFzZQorLy8gZXhjZXB0
LCBvZiBjb3Vyc2UsIGZvciBpdGVyYXRvcnMgcG9pbnRpbmcgdG8gdGhlIHZhbHVlIGJlaW5nIGVy
YXNlZC4gIEEKKy8vIHBhcnRpYWwgd29ya2Fyb3VuZCB3aGVuIGVyYXNpbmcgaXMgYXZhaWxhYmxl
OiBlcmFzZSgpIHJldHVybnMgYW4gaXRlcmF0b3IKKy8vIHBvaW50aW5nIHRvIHRoZSBpdGVtIGp1
c3QgYWZ0ZXIgdGhlIG9uZSB0aGF0IHdhcyBlcmFzZWQgKG9yIGVuZCgpIGlmIG5vbmUKKy8vIGV4
aXN0cykuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQlRSRUVfSF8KKyNkZWZp
bmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQlRSRUVfSF8KKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0
ZGludD4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVk
ZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG5ldz4KKyNpbmNsdWRl
IDxzdHJpbmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKwor
I2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9jb21tb24uaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21w
cmVzc2VkX3R1cGxlLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFp
bmVyX21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dC5o
IgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90
eXBlX3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorI2lu
Y2x1ZGUgImFic2wvdHlwZXMvY29tcGFyZS5oIgorI2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGls
aXR5LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwg
eworCisvLyBBIGhlbHBlciBjbGFzcyB0aGF0IGluZGljYXRlcyBpZiB0aGUgQ29tcGFyZSBwYXJh
bWV0ZXIgaXMgYSBrZXktY29tcGFyZS10bworLy8gY29tcGFyYXRvci4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBDb21wYXJlLCB0eXBlbmFtZSBUPgordXNpbmcgYnRyZWVfaXNfa2V5X2NvbXBhcmVfdG8g
PQorICAgIHN0ZDo6aXNfY29udmVydGlibGU8YWJzbDo6cmVzdWx0X29mX3Q8Q29tcGFyZShjb25z
dCBUICYsIGNvbnN0IFQgJik+LAorICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6d2Vha19v
cmRlcmluZz47CisKK3N0cnVjdCBTdHJpbmdCdHJlZURlZmF1bHRMZXNzIHsKKyAgdXNpbmcgaXNf
dHJhbnNwYXJlbnQgPSB2b2lkOworCisgIFN0cmluZ0J0cmVlRGVmYXVsdExlc3MoKSA9IGRlZmF1
bHQ7CisKKyAgLy8gQ29tcGF0aWJpbGl0eSBjb25zdHJ1Y3Rvci4KKyAgU3RyaW5nQnRyZWVEZWZh
dWx0TGVzcyhzdGQ6Omxlc3M8c3RkOjpzdHJpbmc+KSB7fSAgLy8gTk9MSU5UCisgIFN0cmluZ0J0
cmVlRGVmYXVsdExlc3Moc3RkOjpsZXNzPHN0cmluZ192aWV3Pikge30gIC8vIE5PTElOVAorCisg
IGFic2w6OndlYWtfb3JkZXJpbmcgb3BlcmF0b3IoKShhYnNsOjpzdHJpbmdfdmlldyBsaHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldyByaHMpIGNv
bnN0IHsKKyAgICByZXR1cm4gY29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3Jk
ZXJpbmcobGhzLmNvbXBhcmUocmhzKSk7CisgIH0KK307CisKK3N0cnVjdCBTdHJpbmdCdHJlZURl
ZmF1bHRHcmVhdGVyIHsKKyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworCisgIFN0cmlu
Z0J0cmVlRGVmYXVsdEdyZWF0ZXIoKSA9IGRlZmF1bHQ7CisKKyAgU3RyaW5nQnRyZWVEZWZhdWx0
R3JlYXRlcihzdGQ6OmdyZWF0ZXI8c3RkOjpzdHJpbmc+KSB7fSAgLy8gTk9MSU5UCisgIFN0cmlu
Z0J0cmVlRGVmYXVsdEdyZWF0ZXIoc3RkOjpncmVhdGVyPHN0cmluZ192aWV3Pikge30gIC8vIE5P
TElOVAorCisgIGFic2w6OndlYWtfb3JkZXJpbmcgb3BlcmF0b3IoKShhYnNsOjpzdHJpbmdfdmll
dyBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmll
dyByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1
bHRfYXNfb3JkZXJpbmcocmhzLmNvbXBhcmUobGhzKSk7CisgIH0KK307CisKKy8vIEEgaGVscGVy
IGNsYXNzIHRvIGNvbnZlcnQgYSBib29sZWFuIGNvbXBhcmlzb24gaW50byBhIHRocmVlLXdheSAi
Y29tcGFyZS10byIKKy8vIGNvbXBhcmlzb24gdGhhdCByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUg
dG8gaW5kaWNhdGUgbGVzcy10aGFuLCB6ZXJvIHRvCisvLyBpbmRpY2F0ZSBlcXVhbGl0eSBhbmQg
YSBwb3NpdGl2ZSB2YWx1ZSB0byBpbmRpY2F0ZSBncmVhdGVyLXRoYW4uIFRoaXMgaGVscGVyCisv
LyBjbGFzcyBpcyBzcGVjaWFsaXplZCBmb3IgbGVzczxzdGQ6OnN0cmluZz4sIGdyZWF0ZXI8c3Rk
OjpzdHJpbmc+LAorLy8gbGVzczxzdHJpbmdfdmlldz4sIGFuZCBncmVhdGVyPHN0cmluZ192aWV3
Pi4KKy8vCisvLyBrZXlfY29tcGFyZV90b19hZGFwdGVyIGlzIHByb3ZpZGVkIHNvIHRoYXQgYnRy
ZWUgdXNlcnMKKy8vIGF1dG9tYXRpY2FsbHkgZ2V0IHRoZSBtb3JlIGVmZmljaWVudCBjb21wYXJl
LXRvIGNvZGUgd2hlbiB1c2luZyBjb21tb24KKy8vIGdvb2dsZSBzdHJpbmcgdHlwZXMgd2l0aCBj
b21tb24gY29tcGFyaXNvbiBmdW5jdG9ycy4KKy8vIFRoZXNlIHN0cmluZy1saWtlIHNwZWNpYWxp
emF0aW9ucyBhbHNvIHR1cm4gb24gaGV0ZXJvZ2VuZW91cyBsb29rdXAgYnkKKy8vIGRlZmF1bHQu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29tcGFyZT4KK3N0cnVjdCBrZXlfY29tcGFyZV90b19hZGFw
dGVyIHsKKyAgdXNpbmcgdHlwZSA9IENvbXBhcmU7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0
IGtleV9jb21wYXJlX3RvX2FkYXB0ZXI8c3RkOjpsZXNzPHN0ZDo6c3RyaW5nPj4geworICB1c2lu
ZyB0eXBlID0gU3RyaW5nQnRyZWVEZWZhdWx0TGVzczsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1
Y3Qga2V5X2NvbXBhcmVfdG9fYWRhcHRlcjxzdGQ6OmdyZWF0ZXI8c3RkOjpzdHJpbmc+PiB7Cisg
IHVzaW5nIHR5cGUgPSBTdHJpbmdCdHJlZURlZmF1bHRHcmVhdGVyOworfTsKKwordGVtcGxhdGUg
PD4KK3N0cnVjdCBrZXlfY29tcGFyZV90b19hZGFwdGVyPHN0ZDo6bGVzczxhYnNsOjpzdHJpbmdf
dmlldz4+IHsKKyAgdXNpbmcgdHlwZSA9IFN0cmluZ0J0cmVlRGVmYXVsdExlc3M7Cit9OworCit0
ZW1wbGF0ZSA8Pgorc3RydWN0IGtleV9jb21wYXJlX3RvX2FkYXB0ZXI8c3RkOjpncmVhdGVyPGFi
c2w6OnN0cmluZ192aWV3Pj4geworICB1c2luZyB0eXBlID0gU3RyaW5nQnRyZWVEZWZhdWx0R3Jl
YXRlcjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIENvbXBhcmUsIHR5
cGVuYW1lIEFsbG9jLCBpbnQgVGFyZ2V0Tm9kZVNpemUsCisgICAgICAgICAgYm9vbCBNdWx0aSwg
dHlwZW5hbWUgU2xvdFBvbGljeT4KK3N0cnVjdCBjb21tb25fcGFyYW1zIHsKKyAgLy8gSWYgQ29t
cGFyZSBpcyBhIGNvbW1vbiBjb21wYXJhdG9yIGZvciBhIHN0ZDo6c3RyaW5nLWxpa2UgdHlwZSwg
dGhlbiB3ZSBhZGFwdCBpdAorICAvLyB0byB1c2UgaGV0ZXJvZ2VuZW91cyBsb29rdXAgYW5kIHRv
IGJlIGEga2V5LWNvbXBhcmUtdG8gY29tcGFyYXRvci4KKyAgdXNpbmcga2V5X2NvbXBhcmUgPSB0
eXBlbmFtZSBrZXlfY29tcGFyZV90b19hZGFwdGVyPENvbXBhcmU+Ojp0eXBlOworICAvLyBBIHR5
cGUgd2hpY2ggaW5kaWNhdGVzIGlmIHdlIGhhdmUgYSBrZXktY29tcGFyZS10byBmdW5jdG9yIG9y
IGEgcGxhaW4gb2xkCisgIC8vIGtleS1jb21wYXJlIGZ1bmN0b3IuCisgIHVzaW5nIGlzX2tleV9j
b21wYXJlX3RvID0gYnRyZWVfaXNfa2V5X2NvbXBhcmVfdG88a2V5X2NvbXBhcmUsIEtleT47CisK
KyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSBBbGxvYzsKKyAgdXNpbmcga2V5X3R5cGUgPSBLZXk7
CisgIHVzaW5nIHNpemVfdHlwZSA9IHN0ZDo6bWFrZV9zaWduZWQ8c2l6ZV90Pjo6dHlwZTsKKyAg
dXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OworCisgIC8vIFRydWUgaWYgdGhpcyBp
cyBhIG11bHRpc2V0IG9yIG11bHRpbWFwLgorICB1c2luZyBpc19tdWx0aV9jb250YWluZXIgPSBz
dGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIE11bHRpPjsKKworICB1c2luZyBzbG90X3BvbGlj
eSA9IFNsb3RQb2xpY3k7CisgIHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIHNsb3RfcG9saWN5
OjpzbG90X3R5cGU7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBzbG90X3BvbGljeTo6
dmFsdWVfdHlwZTsKKyAgdXNpbmcgaW5pdF90eXBlID0gdHlwZW5hbWUgc2xvdF9wb2xpY3k6Om11
dGFibGVfdmFsdWVfdHlwZTsKKyAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUgKjsKKyAgdXNp
bmcgY29uc3RfcG9pbnRlciA9IGNvbnN0IHZhbHVlX3R5cGUgKjsKKyAgdXNpbmcgcmVmZXJlbmNl
ID0gdmFsdWVfdHlwZSAmOworICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25zdCB2YWx1ZV90
eXBlICY7CisKKyAgZW51bSB7CisgICAga1RhcmdldE5vZGVTaXplID0gVGFyZ2V0Tm9kZVNpemUs
CisKKyAgICAvLyBVcHBlciBib3VuZCBmb3IgdGhlIGF2YWlsYWJsZSBzcGFjZSBmb3IgdmFsdWVz
LiBUaGlzIGlzIGxhcmdlc3QgZm9yIGxlYWYKKyAgICAvLyBub2Rlcywgd2hpY2ggaGF2ZSBvdmVy
aGVhZCBvZiBhdCBsZWFzdCBhIHBvaW50ZXIgKyA0IGJ5dGVzIChmb3Igc3RvcmluZworICAgIC8v
IDMgZmllbGRfdHlwZXMgYW5kIGFuIGVudW0pLgorICAgIGtOb2RlVmFsdWVTcGFjZSA9CisgICAg
ICAgIFRhcmdldE5vZGVTaXplIC0gLyptaW5pbXVtIG92ZXJoZWFkPSovKHNpemVvZih2b2lkICop
ICsgNCksCisgIH07CisKKyAgLy8gVGhpcyBpcyBhbiBpbnRlZ3JhbCB0eXBlIGxhcmdlIGVub3Vn
aCB0byBob2xkIGFzIG1hbnkKKyAgLy8gVmFsdWVTaXplLXZhbHVlcyBhcyB3aWxsIGZpdCBhIG5v
ZGUgb2YgVGFyZ2V0Tm9kZVNpemUgYnl0ZXMuCisgIHVzaW5nIG5vZGVfY291bnRfdHlwZSA9Cisg
ICAgICBhYnNsOjpjb25kaXRpb25hbF90PChrTm9kZVZhbHVlU3BhY2UgLyBzaXplb2YodmFsdWVf
dHlwZSkgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDhfdD46Om1heCkoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90LCB1
aW50OF90PjsgIC8vIE5PTElOVAorCisgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbmVj
ZXNzYXJ5IGZvciBwYXNzaW5nIHRoaXMgc3RydWN0IGFzIFBvbGljeVRyYWl0cworICAvLyBmb3Ig
bm9kZV9oYW5kbGUgYW5kL29yIGFyZSB1c2VkIHdpdGhpbiBidHJlZS4KKyAgc3RhdGljIHZhbHVl
X3R5cGUgJmVsZW1lbnQoc2xvdF90eXBlICpzbG90KSB7CisgICAgcmV0dXJuIHNsb3RfcG9saWN5
OjplbGVtZW50KHNsb3QpOworICB9CisgIHN0YXRpYyBjb25zdCB2YWx1ZV90eXBlICZlbGVtZW50
KGNvbnN0IHNsb3RfdHlwZSAqc2xvdCkgeworICAgIHJldHVybiBzbG90X3BvbGljeTo6ZWxlbWVu
dChzbG90KTsKKyAgfQorICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgc3RhdGljIHZvaWQg
Y29uc3RydWN0KEFsbG9jICphbGxvYywgc2xvdF90eXBlICpzbG90LCBBcmdzICYmLi4uIGFyZ3Mp
IHsKKyAgICBzbG90X3BvbGljeTo6Y29uc3RydWN0KGFsbG9jLCBzbG90LCBzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOworICB9CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvYyAqYWxs
b2MsIHNsb3RfdHlwZSAqc2xvdCwgc2xvdF90eXBlICpvdGhlcikgeworICAgIHNsb3RfcG9saWN5
Ojpjb25zdHJ1Y3QoYWxsb2MsIHNsb3QsIG90aGVyKTsKKyAgfQorICBzdGF0aWMgdm9pZCBkZXN0
cm95KEFsbG9jICphbGxvYywgc2xvdF90eXBlICpzbG90KSB7CisgICAgc2xvdF9wb2xpY3k6OmRl
c3Ryb3koYWxsb2MsIHNsb3QpOworICB9CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVyKEFsbG9jICph
bGxvYywgc2xvdF90eXBlICpuZXdfc2xvdCwgc2xvdF90eXBlICpvbGRfc2xvdCkgeworICAgIGNv
bnN0cnVjdChhbGxvYywgbmV3X3Nsb3QsIG9sZF9zbG90KTsKKyAgICBkZXN0cm95KGFsbG9jLCBv
bGRfc2xvdCk7CisgIH0KKyAgc3RhdGljIHZvaWQgc3dhcChBbGxvYyAqYWxsb2MsIHNsb3RfdHlw
ZSAqYSwgc2xvdF90eXBlICpiKSB7CisgICAgc2xvdF9wb2xpY3k6OnN3YXAoYWxsb2MsIGEsIGIp
OworICB9CisgIHN0YXRpYyB2b2lkIG1vdmUoQWxsb2MgKmFsbG9jLCBzbG90X3R5cGUgKnNyYywg
c2xvdF90eXBlICpkZXN0KSB7CisgICAgc2xvdF9wb2xpY3k6Om1vdmUoYWxsb2MsIHNyYywgZGVz
dCk7CisgIH0KKyAgc3RhdGljIHZvaWQgbW92ZShBbGxvYyAqYWxsb2MsIHNsb3RfdHlwZSAqZmly
c3QsIHNsb3RfdHlwZSAqbGFzdCwKKyAgICAgICAgICAgICAgICAgICBzbG90X3R5cGUgKnJlc3Vs
dCkgeworICAgIHNsb3RfcG9saWN5Ojptb3ZlKGFsbG9jLCBmaXJzdCwgbGFzdCwgcmVzdWx0KTsK
KyAgfQorfTsKKworLy8gQSBwYXJhbWV0ZXJzIHN0cnVjdHVyZSBmb3IgaG9sZGluZyB0aGUgdHlw
ZSBwYXJhbWV0ZXJzIGZvciBhIGJ0cmVlX21hcC4KKy8vIENvbXBhcmUgYW5kIEFsbG9jIHNob3Vs
ZCBiZSBub3Rocm93IGNvcHktY29uc3RydWN0aWJsZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIERhdGEsIHR5cGVuYW1lIENvbXBhcmUsIHR5cGVuYW1lIEFsbG9jLAorICAgICAg
ICAgIGludCBUYXJnZXROb2RlU2l6ZSwgYm9vbCBNdWx0aT4KK3N0cnVjdCBtYXBfcGFyYW1zIDog
Y29tbW9uX3BhcmFtczxLZXksIENvbXBhcmUsIEFsbG9jLCBUYXJnZXROb2RlU2l6ZSwgTXVsdGks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwX3Nsb3RfcG9saWN5PEtleSwg
RGF0YT4+IHsKKyAgdXNpbmcgc3VwZXJfdHlwZSA9IHR5cGVuYW1lIG1hcF9wYXJhbXM6OmNvbW1v
bl9wYXJhbXM7CisgIHVzaW5nIG1hcHBlZF90eXBlID0gRGF0YTsKKyAgLy8gVGhpcyB0eXBlIGFs
bG93cyB1cyB0byBtb3ZlIGtleXMgd2hlbiBpdCBpcyBzYWZlIHRvIGRvIHNvLiBJdCBpcyBzYWZl
CisgIC8vIGZvciBtYXBzIGluIHdoaWNoIHZhbHVlX3R5cGUgYW5kIG11dGFibGVfdmFsdWVfdHlw
ZSBhcmUgbGF5b3V0IGNvbXBhdGlibGUuCisgIHVzaW5nIHNsb3RfcG9saWN5ID0gdHlwZW5hbWUg
c3VwZXJfdHlwZTo6c2xvdF9wb2xpY3k7CisgIHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIHN1
cGVyX3R5cGU6OnNsb3RfdHlwZTsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIHN1cGVy
X3R5cGU6OnZhbHVlX3R5cGU7CisgIHVzaW5nIGluaXRfdHlwZSA9IHR5cGVuYW1lIHN1cGVyX3R5
cGU6OmluaXRfdHlwZTsKKworICB1c2luZyBrZXlfY29tcGFyZSA9IHR5cGVuYW1lIHN1cGVyX3R5
cGU6OmtleV9jb21wYXJlOworICAvLyBJbmhlcml0IGZyb20ga2V5X2NvbXBhcmUgZm9yIGVtcHR5
IGJhc2UgY2xhc3Mgb3B0aW1pemF0aW9uLgorICBzdHJ1Y3QgdmFsdWVfY29tcGFyZSA6IHByaXZh
dGUga2V5X2NvbXBhcmUgeworICAgIHZhbHVlX2NvbXBhcmUoKSA9IGRlZmF1bHQ7CisgICAgZXhw
bGljaXQgdmFsdWVfY29tcGFyZShjb25zdCBrZXlfY29tcGFyZSAmY21wKSA6IGtleV9jb21wYXJl
KGNtcCkge30KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGF1
dG8gb3BlcmF0b3IoKShjb25zdCBUICZsZWZ0LCBjb25zdCBVICZyaWdodCkgY29uc3QKKyAgICAg
ICAgLT4gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPGtleV9jb21wYXJlPigpKGxlZnQuZmlyc3QsIHJp
Z2h0LmZpcnN0KSkgeworICAgICAgcmV0dXJuIGtleV9jb21wYXJlOjpvcGVyYXRvcigpKGxlZnQu
Zmlyc3QsIHJpZ2h0LmZpcnN0KTsKKyAgICB9CisgIH07CisgIHVzaW5nIGlzX21hcF9jb250YWlu
ZXIgPSBzdGQ6OnRydWVfdHlwZTsKKworICBzdGF0aWMgY29uc3QgS2V5ICZrZXkoY29uc3QgdmFs
dWVfdHlwZSAmeCkgeyByZXR1cm4geC5maXJzdDsgfQorICBzdGF0aWMgY29uc3QgS2V5ICZrZXko
Y29uc3QgaW5pdF90eXBlICZ4KSB7IHJldHVybiB4LmZpcnN0OyB9CisgIHN0YXRpYyBjb25zdCBL
ZXkgJmtleShjb25zdCBzbG90X3R5cGUgKngpIHsgcmV0dXJuIHNsb3RfcG9saWN5OjprZXkoeCk7
IH0KKyAgc3RhdGljIG1hcHBlZF90eXBlICZ2YWx1ZSh2YWx1ZV90eXBlICp2YWx1ZSkgeyByZXR1
cm4gdmFsdWUtPnNlY29uZDsgfQorfTsKKworLy8gVGhpcyB0eXBlIGltcGxlbWVudHMgdGhlIG5l
Y2Vzc2FyeSBmdW5jdGlvbnMgZnJvbSB0aGUKKy8vIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6
c2xvdF90eXBlIGludGVyZmFjZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBLZXk+CitzdHJ1Y3Qgc2V0
X3Nsb3RfcG9saWN5IHsKKyAgdXNpbmcgc2xvdF90eXBlID0gS2V5OworICB1c2luZyB2YWx1ZV90
eXBlID0gS2V5OworICB1c2luZyBtdXRhYmxlX3ZhbHVlX3R5cGUgPSBLZXk7CisKKyAgc3RhdGlj
IHZhbHVlX3R5cGUgJmVsZW1lbnQoc2xvdF90eXBlICpzbG90KSB7IHJldHVybiAqc2xvdDsgfQor
ICBzdGF0aWMgY29uc3QgdmFsdWVfdHlwZSAmZWxlbWVudChjb25zdCBzbG90X3R5cGUgKnNsb3Qp
IHsgcmV0dXJuICpzbG90OyB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCBjbGFzcy4u
LiBBcmdzPgorICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2MgKmFsbG9jLCBzbG90X3R5cGUg
KnNsb3QsIEFyZ3MgJiYuLi4gYXJncykgeworICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxs
b2M+Ojpjb25zdHJ1Y3QoKmFsbG9jLCBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KKyAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9j
ICphbGxvYywgc2xvdF90eXBlICpzbG90LCBzbG90X3R5cGUgKm90aGVyKSB7CisgICAgYWJzbDo6
YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OmNvbnN0cnVjdCgqYWxsb2MsIHNsb3QsIHN0ZDo6bW92
ZSgqb3RoZXIpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KKyAgc3RhdGlj
IHZvaWQgZGVzdHJveShBbGxvYyAqYWxsb2MsIHNsb3RfdHlwZSAqc2xvdCkgeworICAgIGFic2w6
OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjpkZXN0cm95KCphbGxvYywgc2xvdCk7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+CisgIHN0YXRpYyB2b2lkIHN3YXAoQWxsb2MgKiAv
KmFsbG9jKi8sIHNsb3RfdHlwZSAqYSwgc2xvdF90eXBlICpiKSB7CisgICAgdXNpbmcgc3RkOjpz
d2FwOworICAgIHN3YXAoKmEsICpiKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxv
Yz4KKyAgc3RhdGljIHZvaWQgbW92ZShBbGxvYyAqIC8qYWxsb2MqLywgc2xvdF90eXBlICpzcmMs
IHNsb3RfdHlwZSAqZGVzdCkgeworICAgICpkZXN0ID0gc3RkOjptb3ZlKCpzcmMpOworICB9CisK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgorICBzdGF0aWMgdm9pZCBtb3ZlKEFsbG9jICph
bGxvYywgc2xvdF90eXBlICpmaXJzdCwgc2xvdF90eXBlICpsYXN0LAorICAgICAgICAgICAgICAg
ICAgIHNsb3RfdHlwZSAqcmVzdWx0KSB7CisgICAgZm9yIChzbG90X3R5cGUgKnNyYyA9IGZpcnN0
LCAqZGVzdCA9IHJlc3VsdDsgc3JjICE9IGxhc3Q7ICsrc3JjLCArK2Rlc3QpCisgICAgICBtb3Zl
KGFsbG9jLCBzcmMsIGRlc3QpOworICB9Cit9OworCisvLyBBIHBhcmFtZXRlcnMgc3RydWN0dXJl
IGZvciBob2xkaW5nIHRoZSB0eXBlIHBhcmFtZXRlcnMgZm9yIGEgYnRyZWVfc2V0LgorLy8gQ29t
cGFyZSBhbmQgQWxsb2Mgc2hvdWxkIGJlIG5vdGhyb3cgY29weS1jb25zdHJ1Y3RpYmxlLgordGVt
cGxhdGUgPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgQWxsb2MsIGlu
dCBUYXJnZXROb2RlU2l6ZSwKKyAgICAgICAgICBib29sIE11bHRpPgorc3RydWN0IHNldF9wYXJh
bXMgOiBjb21tb25fcGFyYW1zPEtleSwgQ29tcGFyZSwgQWxsb2MsIFRhcmdldE5vZGVTaXplLCBN
dWx0aSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfc2xvdF9wb2xpY3k8
S2V5Pj4geworICB1c2luZyB2YWx1ZV90eXBlID0gS2V5OworICB1c2luZyBzbG90X3R5cGUgPSB0
eXBlbmFtZSBzZXRfcGFyYW1zOjpjb21tb25fcGFyYW1zOjpzbG90X3R5cGU7CisgIHVzaW5nIHZh
bHVlX2NvbXBhcmUgPSB0eXBlbmFtZSBzZXRfcGFyYW1zOjpjb21tb25fcGFyYW1zOjprZXlfY29t
cGFyZTsKKyAgdXNpbmcgaXNfbWFwX2NvbnRhaW5lciA9IHN0ZDo6ZmFsc2VfdHlwZTsKKworICBz
dGF0aWMgY29uc3QgS2V5ICZrZXkoY29uc3QgdmFsdWVfdHlwZSAmeCkgeyByZXR1cm4geDsgfQor
ICBzdGF0aWMgY29uc3QgS2V5ICZrZXkoY29uc3Qgc2xvdF90eXBlICp4KSB7IHJldHVybiAqeDsg
fQorfTsKKworLy8gQW4gYWRhcHRlciBjbGFzcyB0aGF0IGNvbnZlcnRzIGEgbG93ZXItYm91bmQg
Y29tcGFyZSBpbnRvIGFuIHVwcGVyLWJvdW5kCisvLyBjb21wYXJlLiBOb3RlOiB0aGVyZSBpcyBu
byBuZWVkIHRvIG1ha2UgYSB2ZXJzaW9uIG9mIHRoaXMgYWRhcHRlciBzcGVjaWFsaXplZAorLy8g
Zm9yIGtleS1jb21wYXJlLXRvIGZ1bmN0b3JzIGJlY2F1c2UgdGhlIHVwcGVyLWJvdW5kICh0aGUg
Zmlyc3QgdmFsdWUgZ3JlYXRlcgorLy8gdGhhbiB0aGUgaW5wdXQpIGlzIG5ldmVyIGFuIGV4YWN0
IG1hdGNoLgordGVtcGxhdGUgPHR5cGVuYW1lIENvbXBhcmU+CitzdHJ1Y3QgdXBwZXJfYm91bmRf
YWRhcHRlciB7CisgIGV4cGxpY2l0IHVwcGVyX2JvdW5kX2FkYXB0ZXIoY29uc3QgQ29tcGFyZSAm
YykgOiBjb21wKGMpIHt9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBMSz4KKyAg
Ym9vbCBvcGVyYXRvcigpKGNvbnN0IEsgJmEsIGNvbnN0IExLICZiKSBjb25zdCB7CisgICAgLy8g
UmV0dXJucyB0cnVlIHdoZW4gYSBpcyBub3QgZ3JlYXRlciB0aGFuIGIuCisgICAgcmV0dXJuICFj
b21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19sZXNzX3RoYW4oY29tcChiLCBhKSk7
CisgIH0KKworIHByaXZhdGU6CisgIENvbXBhcmUgY29tcDsKK307CisKK2VudW0gY2xhc3MgTWF0
Y2hLaW5kIDogdWludDhfdCB7IGtFcSwga05lIH07CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBWLCBi
b29sIElzQ29tcGFyZVRvPgorc3RydWN0IFNlYXJjaFJlc3VsdCB7CisgIFYgdmFsdWU7CisgIE1h
dGNoS2luZCBtYXRjaDsKKworICBzdGF0aWMgY29uc3RleHByIGJvb2wgSGFzTWF0Y2goKSB7IHJl
dHVybiB0cnVlOyB9CisgIGJvb2wgSXNFcSgpIGNvbnN0IHsgcmV0dXJuIG1hdGNoID09IE1hdGNo
S2luZDo6a0VxOyB9Cit9OworCisvLyBXaGVuIHdlIGRvbid0IHVzZSBDb21wYXJlVG8sIGBtYXRj
aGAgaXMgbm90IHByZXNlbnQuCisvLyBUaGlzIGVuc3VyZXMgdGhhdCBjYWxsZXJzIGNhbid0IHVz
ZSBpdCBhY2NpZGVudGFsbHkgd2hlbiBpdCBwcm92aWRlcyBubworLy8gdXNlZnVsIGluZm9ybWF0
aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFY+CitzdHJ1Y3QgU2VhcmNoUmVzdWx0PFYsIGZhbHNl
PiB7CisgIFYgdmFsdWU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIEhhc01hdGNoKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIElzRXEoKSB7IHJldHVybiBm
YWxzZTsgfQorfTsKKworLy8gQSBub2RlIGluIHRoZSBidHJlZSBob2xkaW5nLiBUaGUgc2FtZSBu
b2RlIHR5cGUgaXMgdXNlZCBmb3IgYm90aCBpbnRlcm5hbAorLy8gYW5kIGxlYWYgbm9kZXMgaW4g
dGhlIGJ0cmVlLCB0aG91Z2ggdGhlIG5vZGVzIGFyZSBhbGxvY2F0ZWQgaW4gc3VjaCBhIHdheQor
Ly8gdGhhdCB0aGUgY2hpbGRyZW4gYXJyYXkgaXMgb25seSB2YWxpZCBpbiBpbnRlcm5hbCBub2Rl
cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbXM+CitjbGFzcyBidHJlZV9ub2RlIHsKKyAgdXNp
bmcgaXNfa2V5X2NvbXBhcmVfdG8gPSB0eXBlbmFtZSBQYXJhbXM6OmlzX2tleV9jb21wYXJlX3Rv
OworICB1c2luZyBpc19tdWx0aV9jb250YWluZXIgPSB0eXBlbmFtZSBQYXJhbXM6OmlzX211bHRp
X2NvbnRhaW5lcjsKKyAgdXNpbmcgZmllbGRfdHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6bm9kZV9j
b3VudF90eXBlOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6YWxs
b2NhdG9yX3R5cGU7CisgIHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6c2xvdF90
eXBlOworCisgcHVibGljOgorICB1c2luZyBwYXJhbXNfdHlwZSA9IFBhcmFtczsKKyAgdXNpbmcg
a2V5X3R5cGUgPSB0eXBlbmFtZSBQYXJhbXM6OmtleV90eXBlOworICB1c2luZyB2YWx1ZV90eXBl
ID0gdHlwZW5hbWUgUGFyYW1zOjp2YWx1ZV90eXBlOworICB1c2luZyBwb2ludGVyID0gdHlwZW5h
bWUgUGFyYW1zOjpwb2ludGVyOworICB1c2luZyBjb25zdF9wb2ludGVyID0gdHlwZW5hbWUgUGFy
YW1zOjpjb25zdF9wb2ludGVyOworICB1c2luZyByZWZlcmVuY2UgPSB0eXBlbmFtZSBQYXJhbXM6
OnJlZmVyZW5jZTsKKyAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0gdHlwZW5hbWUgUGFyYW1zOjpj
b25zdF9yZWZlcmVuY2U7CisgIHVzaW5nIGtleV9jb21wYXJlID0gdHlwZW5hbWUgUGFyYW1zOjpr
ZXlfY29tcGFyZTsKKyAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjpzaXplX3R5
cGU7CisgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6ZGlmZmVyZW5j
ZV90eXBlOworCisgIC8vIEJ0cmVlIGRlY2lkZXMgd2hldGhlciB0byB1c2UgbGluZWFyIG5vZGUg
c2VhcmNoIGFzIGZvbGxvd3M6CisgIC8vICAgLSBJZiB0aGUga2V5IGlzIGFyaXRobWV0aWMgYW5k
IHRoZSBjb21wYXJhdG9yIGlzIHN0ZDo6bGVzcyBvcgorICAvLyAgICAgc3RkOjpncmVhdGVyLCBj
aG9vc2UgbGluZWFyLgorICAvLyAgIC0gT3RoZXJ3aXNlLCBjaG9vc2UgYmluYXJ5LgorICAvLyBU
T0RPKGV6Yik6IE1pZ2h0IG1ha2Ugc2Vuc2UgdG8gYWRkIGNvbmRpdGlvbihzKSBiYXNlZCBvbiBu
b2RlLXNpemUuCisgIHVzaW5nIHVzZV9saW5lYXJfc2VhcmNoID0gc3RkOjppbnRlZ3JhbF9jb25z
dGFudDwKKyAgICAgIGJvb2wsCisgICAgICAgICAgICAgICAgc3RkOjppc19hcml0aG1ldGljPGtl
eV90eXBlPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgKHN0ZDo6aXNfc2FtZTxzdGQ6
Omxlc3M8a2V5X3R5cGU+LCBrZXlfY29tcGFyZT46OnZhbHVlIHx8CisgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmlzX3NhbWU8c3RkOjpncmVhdGVyPGtleV90eXBlPiwga2V5X2NvbXBhcmU+Ojp2
YWx1ZSk+OworCisgIC8vIFRoaXMgY2xhc3MgaXMgb3JnYW5pemVkIGJ5IGd0bDo6TGF5b3V0IGFz
IGlmIGl0IGhhZCB0aGUgZm9sbG93aW5nCisgIC8vIHN0cnVjdHVyZToKKyAgLy8gICAvLyBBIHBv
aW50ZXIgdG8gdGhlIG5vZGUncyBwYXJlbnQuCisgIC8vICAgYnRyZWVfbm9kZSAqcGFyZW50Owor
ICAvLworICAvLyAgIC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgbm9kZSBpbiB0aGUgbm9kZSdzIHBh
cmVudC4KKyAgLy8gICBmaWVsZF90eXBlIHBvc2l0aW9uOworICAvLyAgIC8vIFRoZSBpbmRleCBv
ZiB0aGUgZmlyc3QgcG9wdWxhdGVkIHZhbHVlIGluIGB2YWx1ZXNgLgorICAvLyAgIC8vIFRPRE8o
ZXpiKTogcmlnaHQgbm93LCBgc3RhcnRgIGlzIGFsd2F5cyAwLiBVcGRhdGUgaW5zZXJ0aW9uL21l
cmdlCisgIC8vICAgLy8gbG9naWMgdG8gYWxsb3cgZm9yIGZsb2F0aW5nIHN0b3JhZ2Ugd2l0aGlu
IG5vZGVzLgorICAvLyAgIGZpZWxkX3R5cGUgc3RhcnQ7CisgIC8vICAgLy8gVGhlIGNvdW50IG9m
IHRoZSBudW1iZXIgb2YgcG9wdWxhdGVkIHZhbHVlcyBpbiB0aGUgbm9kZS4KKyAgLy8gICBmaWVs
ZF90eXBlIGNvdW50OworICAvLyAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiB2YWx1ZXMgdGhl
IG5vZGUgY2FuIGhvbGQuIFRoaXMgaXMgYW4gaW50ZWdlciBpbgorICAvLyAgIC8vIFsxLCBrTm9k
ZVZhbHVlc10gZm9yIHJvb3QgbGVhZiBub2Rlcywga05vZGVWYWx1ZXMgZm9yIG5vbi1yb290IGxl
YWYKKyAgLy8gICAvLyBub2RlcywgYW5kIGtJbnRlcm5hbE5vZGVNYXhDb3VudCAoYXMgYSBzZW50
aW5lbCB2YWx1ZSkgZm9yIGludGVybmFsCisgIC8vICAgLy8gbm9kZXMgKGV2ZW4gdGhvdWdoIHRo
ZXJlIGFyZSBzdGlsbCBrTm9kZVZhbHVlcyB2YWx1ZXMgaW4gdGhlIG5vZGUpLgorICAvLyAgIC8v
IFRPRE8oZXpiKTogbWFrZSBtYXhfY291bnQgdXNlIG9ubHkgNCBiaXRzIGFuZCByZWNvcmQgbG9n
MihjYXBhY2l0eSkKKyAgLy8gICAvLyB0byBmcmVlIGV4dHJhIGJpdHMgZm9yIGlzX3Jvb3QsIGV0
Yy4KKyAgLy8gICBmaWVsZF90eXBlIG1heF9jb3VudDsKKyAgLy8KKyAgLy8gICAvLyBUaGUgYXJy
YXkgb2YgdmFsdWVzLiBUaGUgY2FwYWNpdHkgaXMgYG1heF9jb3VudGAgZm9yIGxlYWYgbm9kZXMg
YW5kCisgIC8vICAgLy8ga05vZGVWYWx1ZXMgZm9yIGludGVybmFsIG5vZGVzLiBPbmx5IHRoZSB2
YWx1ZXMgaW4KKyAgLy8gICAvLyBbc3RhcnQsIHN0YXJ0ICsgY291bnQpIGhhdmUgYmVlbiBpbml0
aWFsaXplZCBhbmQgYXJlIHZhbGlkLgorICAvLyAgIHNsb3RfdHlwZSB2YWx1ZXNbbWF4X2NvdW50
XTsKKyAgLy8KKyAgLy8gICAvLyBUaGUgYXJyYXkgb2YgY2hpbGQgcG9pbnRlcnMuIFRoZSBrZXlz
IGluIGNoaWxkcmVuW2ldIGFyZSBhbGwgbGVzcworICAvLyAgIC8vIHRoYW4ga2V5KGkpLiBUaGUg
a2V5cyBpbiBjaGlsZHJlbltpICsgMV0gYXJlIGFsbCBncmVhdGVyIHRoYW4ga2V5KGkpLgorICAv
LyAgIC8vIFRoZXJlIGFyZSAwIGNoaWxkcmVuIGZvciBsZWFmIG5vZGVzIGFuZCBrTm9kZVZhbHVl
cyArIDEgY2hpbGRyZW4gZm9yCisgIC8vICAgLy8gaW50ZXJuYWwgbm9kZXMuCisgIC8vICAgYnRy
ZWVfbm9kZSAqY2hpbGRyZW5ba05vZGVWYWx1ZXMgKyAxXTsKKyAgLy8KKyAgLy8gVGhpcyBjbGFz
cyBpcyBvbmx5IGNvbnN0cnVjdGVkIGJ5IEVtcHR5Tm9kZVR5cGUuIE5vcm1hbGx5LCBwb2ludGVy
cyB0byB0aGUKKyAgLy8gbGF5b3V0IGFib3ZlIGFyZSBhbGxvY2F0ZWQsIGNhc3QgdG8gYnRyZWVf
bm9kZSosIGFuZCBkZS1hbGxvY2F0ZWQgd2l0aGluCisgIC8vIHRoZSBidHJlZSBpbXBsZW1lbnRh
dGlvbi4KKyAgfmJ0cmVlX25vZGUoKSA9IGRlZmF1bHQ7CisgIGJ0cmVlX25vZGUoYnRyZWVfbm9k
ZSBjb25zdCAmKSA9IGRlbGV0ZTsKKyAgYnRyZWVfbm9kZSAmb3BlcmF0b3I9KGJ0cmVlX25vZGUg
Y29uc3QgJikgPSBkZWxldGU7CisKKyAgLy8gUHVibGljIGZvciBFbXB0eU5vZGVUeXBlLgorICBj
b25zdGV4cHIgc3RhdGljIHNpemVfdHlwZSBBbGlnbm1lbnQoKSB7CisgICAgc3RhdGljX2Fzc2Vy
dChMZWFmTGF5b3V0KDEpLkFsaWdubWVudCgpID09IEludGVybmFsTGF5b3V0KCkuQWxpZ25tZW50
KCksCisgICAgICAgICAgICAgICAgICAiQWxpZ25tZW50IG9mIGFsbCBub2RlcyBtdXN0IGJlIGVx
dWFsLiIpOworICAgIHJldHVybiBJbnRlcm5hbExheW91dCgpLkFsaWdubWVudCgpOworICB9CisK
KyBwcm90ZWN0ZWQ6CisgIGJ0cmVlX25vZGUoKSA9IGRlZmF1bHQ7CisKKyBwcml2YXRlOgorICB1
c2luZyBsYXlvdXRfdHlwZSA9IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6TGF5b3V0PGJ0cmVl
X25vZGUgKiwgZmllbGRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG90X3R5cGUsIGJ0cmVlX25vZGUgKj47CisgIGNvbnN0ZXhw
ciBzdGF0aWMgc2l6ZV90eXBlIFNpemVXaXRoTlZhbHVlcyhzaXplX3R5cGUgbikgeworICAgIHJl
dHVybiBsYXlvdXRfdHlwZSgvKnBhcmVudCovIDEsCisgICAgICAgICAgICAgICAgICAgICAgIC8q
cG9zaXRpb24sIHN0YXJ0LCBjb3VudCwgbWF4X2NvdW50Ki8gNCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgLyp2YWx1ZXMqLyBuLAorICAgICAgICAgICAgICAgICAgICAgICAvKmNoaWxkcmVuKi8g
MCkKKyAgICAgICAgLkFsbG9jU2l6ZSgpOworICB9CisgIC8vIEEgbG93ZXIgYm91bmQgZm9yIHRo
ZSBvdmVyaGVhZCBvZiBmaWVsZHMgb3RoZXIgdGhhbiB2YWx1ZXMgaW4gYSBsZWFmIG5vZGUuCisg
IGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90eXBlIE1pbmltdW1PdmVyaGVhZCgpIHsKKyAgICByZXR1
cm4gU2l6ZVdpdGhOVmFsdWVzKDEpIC0gc2l6ZW9mKHZhbHVlX3R5cGUpOworICB9CisKKyAgLy8g
Q29tcHV0ZSBob3cgbWFueSB2YWx1ZXMgd2UgY2FuIGZpdCBvbnRvIGEgbGVhZiBub2RlIHRha2lu
ZyBpbnRvIGFjY291bnQKKyAgLy8gcGFkZGluZy4KKyAgY29uc3RleHByIHN0YXRpYyBzaXplX3R5
cGUgTm9kZVRhcmdldFZhbHVlcyhjb25zdCBpbnQgYmVnaW4sIGNvbnN0IGludCBlbmQpIHsKKyAg
ICByZXR1cm4gYmVnaW4gPT0gZW5kID8gYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDog
U2l6ZVdpdGhOVmFsdWVzKChiZWdpbiArIGVuZCkgLyAyICsgMSkgPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc190eXBlOjprVGFyZ2V0Tm9kZVNpemUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID8gTm9kZVRhcmdldFZhbHVlcyhiZWdpbiwgKGJlZ2luICsg
ZW5kKSAvIDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE5vZGVUYXJnZXRWYWx1
ZXMoKGJlZ2luICsgZW5kKSAvIDIgKyAxLCBlbmQpOworICB9CisKKyAgZW51bSB7CisgICAga1Rh
cmdldE5vZGVTaXplID0gcGFyYW1zX3R5cGU6OmtUYXJnZXROb2RlU2l6ZSwKKyAgICBrTm9kZVRh
cmdldFZhbHVlcyA9IE5vZGVUYXJnZXRWYWx1ZXMoMCwgcGFyYW1zX3R5cGU6OmtUYXJnZXROb2Rl
U2l6ZSksCisKKyAgICAvLyBXZSBuZWVkIGEgbWluaW11bSBvZiAzIHZhbHVlcyBwZXIgaW50ZXJu
YWwgbm9kZSBpbiBvcmRlciB0byBwZXJmb3JtCisgICAgLy8gc3BsaXR0aW5nICgxIHZhbHVlIGZv
ciB0aGUgdHdvIG5vZGVzIGludm9sdmVkIGluIHRoZSBzcGxpdCBhbmQgMSB2YWx1ZQorICAgIC8v
IHByb3BhZ2F0ZWQgdG8gdGhlIHBhcmVudCBhcyB0aGUgZGVsaW1pdGVyIGZvciB0aGUgc3BsaXQp
LgorICAgIGtOb2RlVmFsdWVzID0ga05vZGVUYXJnZXRWYWx1ZXMgPj0gMyA/IGtOb2RlVGFyZ2V0
VmFsdWVzIDogMywKKworICAgIC8vIFRoZSBub2RlIGlzIGludGVybmFsIChpLmUuIGlzIG5vdCBh
IGxlYWYgbm9kZSkgaWYgYW5kIG9ubHkgaWYgYG1heF9jb3VudGAKKyAgICAvLyBoYXMgdGhpcyB2
YWx1ZS4KKyAgICBrSW50ZXJuYWxOb2RlTWF4Q291bnQgPSAwLAorICB9OworCisgIC8vIExlYXZl
cyBjYW4gaGF2ZSBsZXNzIHRoYW4ga05vZGVWYWx1ZXMgdmFsdWVzLgorICBjb25zdGV4cHIgc3Rh
dGljIGxheW91dF90eXBlIExlYWZMYXlvdXQoY29uc3QgaW50IG1heF92YWx1ZXMgPSBrTm9kZVZh
bHVlcykgeworICAgIHJldHVybiBsYXlvdXRfdHlwZSgvKnBhcmVudCovIDEsCisgICAgICAgICAg
ICAgICAgICAgICAgIC8qcG9zaXRpb24sIHN0YXJ0LCBjb3VudCwgbWF4X2NvdW50Ki8gNCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgLyp2YWx1ZXMqLyBtYXhfdmFsdWVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAvKmNoaWxkcmVuKi8gMCk7CisgIH0KKyAgY29uc3RleHByIHN0YXRpYyBsYXlv
dXRfdHlwZSBJbnRlcm5hbExheW91dCgpIHsKKyAgICByZXR1cm4gbGF5b3V0X3R5cGUoLypwYXJl
bnQqLyAxLAorICAgICAgICAgICAgICAgICAgICAgICAvKnBvc2l0aW9uLCBzdGFydCwgY291bnQs
IG1heF9jb3VudCovIDQsCisgICAgICAgICAgICAgICAgICAgICAgIC8qdmFsdWVzKi8ga05vZGVW
YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgIC8qY2hpbGRyZW4qLyBrTm9kZVZhbHVlcyAr
IDEpOworICB9CisgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90eXBlIExlYWZTaXplKGNvbnN0IGlu
dCBtYXhfdmFsdWVzID0ga05vZGVWYWx1ZXMpIHsKKyAgICByZXR1cm4gTGVhZkxheW91dChtYXhf
dmFsdWVzKS5BbGxvY1NpemUoKTsKKyAgfQorICBjb25zdGV4cHIgc3RhdGljIHNpemVfdHlwZSBJ
bnRlcm5hbFNpemUoKSB7CisgICAgcmV0dXJuIEludGVybmFsTGF5b3V0KCkuQWxsb2NTaXplKCk7
CisgIH0KKworICAvLyBOIGlzIHRoZSBpbmRleCBvZiB0aGUgdHlwZSBpbiB0aGUgTGF5b3V0IGRl
ZmluaXRpb24uCisgIC8vIEVsZW1lbnRUeXBlPE4+IGlzIHRoZSBOdGggdHlwZSBpbiB0aGUgTGF5
b3V0IGRlZmluaXRpb24uCisgIHRlbXBsYXRlIDxzaXplX3R5cGUgTj4KKyAgaW5saW5lIHR5cGVu
YW1lIGxheW91dF90eXBlOjp0ZW1wbGF0ZSBFbGVtZW50VHlwZTxOPiAqR2V0RmllbGQoKSB7Cisg
ICAgLy8gV2UgYXNzZXJ0IHRoYXQgd2UgZG9uJ3QgcmVhZCBmcm9tIHZhbHVlcyB0aGF0IGFyZW4n
dCB0aGVyZS4KKyAgICBhc3NlcnQoTiA8IDMgfHwgIWxlYWYoKSk7CisgICAgcmV0dXJuIEludGVy
bmFsTGF5b3V0KCkudGVtcGxhdGUgUG9pbnRlcjxOPihyZWludGVycHJldF9jYXN0PGNoYXIgKj4o
dGhpcykpOworICB9CisgIHRlbXBsYXRlIDxzaXplX3R5cGUgTj4KKyAgaW5saW5lIGNvbnN0IHR5
cGVuYW1lIGxheW91dF90eXBlOjp0ZW1wbGF0ZSBFbGVtZW50VHlwZTxOPiAqR2V0RmllbGQoKSBj
b25zdCB7CisgICAgYXNzZXJ0KE4gPCAzIHx8ICFsZWFmKCkpOworICAgIHJldHVybiBJbnRlcm5h
bExheW91dCgpLnRlbXBsYXRlIFBvaW50ZXI8Tj4oCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhciAqPih0aGlzKSk7CisgIH0KKyAgdm9pZCBzZXRfcGFyZW50KGJ0cmVlX25vZGUg
KnApIHsgKkdldEZpZWxkPDA+KCkgPSBwOyB9CisgIGZpZWxkX3R5cGUgJm11dGFibGVfY291bnQo
KSB7IHJldHVybiBHZXRGaWVsZDwxPigpWzJdOyB9CisgIHNsb3RfdHlwZSAqc2xvdChpbnQgaSkg
eyByZXR1cm4gJkdldEZpZWxkPDI+KClbaV07IH0KKyAgY29uc3Qgc2xvdF90eXBlICpzbG90KGlu
dCBpKSBjb25zdCB7IHJldHVybiAmR2V0RmllbGQ8Mj4oKVtpXTsgfQorICB2b2lkIHNldF9wb3Np
dGlvbihmaWVsZF90eXBlIHYpIHsgR2V0RmllbGQ8MT4oKVswXSA9IHY7IH0KKyAgdm9pZCBzZXRf
c3RhcnQoZmllbGRfdHlwZSB2KSB7IEdldEZpZWxkPDE+KClbMV0gPSB2OyB9CisgIHZvaWQgc2V0
X2NvdW50KGZpZWxkX3R5cGUgdikgeyBHZXRGaWVsZDwxPigpWzJdID0gdjsgfQorICAvLyBUaGlz
IG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBieSB0aGUgbm9kZSBpbml0IG1ldGhvZHMuCisgIHZvaWQg
c2V0X21heF9jb3VudChmaWVsZF90eXBlIHYpIHsgR2V0RmllbGQ8MT4oKVszXSA9IHY7IH0KKwor
IHB1YmxpYzoKKyAgLy8gV2hldGhlciB0aGlzIGlzIGEgbGVhZiBub2RlIG9yIG5vdC4gVGhpcyB2
YWx1ZSBkb2Vzbid0IGNoYW5nZSBhZnRlciB0aGUKKyAgLy8gbm9kZSBpcyBjcmVhdGVkLgorICBi
b29sIGxlYWYoKSBjb25zdCB7IHJldHVybiBHZXRGaWVsZDwxPigpWzNdICE9IGtJbnRlcm5hbE5v
ZGVNYXhDb3VudDsgfQorCisgIC8vIEdldHRlciBmb3IgdGhlIHBvc2l0aW9uIG9mIHRoaXMgbm9k
ZSBpbiBpdHMgcGFyZW50LgorICBmaWVsZF90eXBlIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
R2V0RmllbGQ8MT4oKVswXTsgfQorCisgIC8vIEdldHRlciBmb3IgdGhlIG9mZnNldCBvZiB0aGUg
Zmlyc3QgdmFsdWUgaW4gdGhlIGB2YWx1ZXNgIGFycmF5LgorICBmaWVsZF90eXBlIHN0YXJ0KCkg
Y29uc3QgeyByZXR1cm4gR2V0RmllbGQ8MT4oKVsxXTsgfQorCisgIC8vIEdldHRlcnMgZm9yIHRo
ZSBudW1iZXIgb2YgdmFsdWVzIHN0b3JlZCBpbiB0aGlzIG5vZGUuCisgIGZpZWxkX3R5cGUgY291
bnQoKSBjb25zdCB7IHJldHVybiBHZXRGaWVsZDwxPigpWzJdOyB9CisgIGZpZWxkX3R5cGUgbWF4
X2NvdW50KCkgY29uc3QgeworICAgIC8vIEludGVybmFsIG5vZGVzIGhhdmUgbWF4X2NvdW50PT1r
SW50ZXJuYWxOb2RlTWF4Q291bnQuCisgICAgLy8gTGVhZiBub2RlcyBoYXZlIG1heF9jb3VudCBp
biBbMSwga05vZGVWYWx1ZXNdLgorICAgIGNvbnN0IGZpZWxkX3R5cGUgbWF4X2NvdW50ID0gR2V0
RmllbGQ8MT4oKVszXTsKKyAgICByZXR1cm4gbWF4X2NvdW50ID09IGZpZWxkX3R5cGV7a0ludGVy
bmFsTm9kZU1heENvdW50fQorICAgICAgICAgICAgICAgPyBmaWVsZF90eXBle2tOb2RlVmFsdWVz
fQorICAgICAgICAgICAgICAgOiBtYXhfY291bnQ7CisgIH0KKworICAvLyBHZXR0ZXIgZm9yIHRo
ZSBwYXJlbnQgb2YgdGhpcyBub2RlLgorICBidHJlZV9ub2RlICpwYXJlbnQoKSBjb25zdCB7IHJl
dHVybiAqR2V0RmllbGQ8MD4oKTsgfQorICAvLyBHZXR0ZXIgZm9yIHdoZXRoZXIgdGhlIG5vZGUg
aXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuIFRoZSBwYXJlbnQgb2YgdGhlCisgIC8vIHJvb3Qgb2Yg
dGhlIHRyZWUgaXMgdGhlIGxlZnRtb3N0IG5vZGUgaW4gdGhlIHRyZWUgd2hpY2ggaXMgZ3VhcmFu
dGVlZCB0bworICAvLyBiZSBhIGxlYWYuCisgIGJvb2wgaXNfcm9vdCgpIGNvbnN0IHsgcmV0dXJu
IHBhcmVudCgpLT5sZWFmKCk7IH0KKyAgdm9pZCBtYWtlX3Jvb3QoKSB7CisgICAgYXNzZXJ0KHBh
cmVudCgpLT5pc19yb290KCkpOworICAgIHNldF9wYXJlbnQocGFyZW50KCktPnBhcmVudCgpKTsK
KyAgfQorCisgIC8vIEdldHRlcnMgZm9yIHRoZSBrZXkvdmFsdWUgYXQgcG9zaXRpb24gaSBpbiB0
aGUgbm9kZS4KKyAgY29uc3Qga2V5X3R5cGUgJmtleShpbnQgaSkgY29uc3QgeyByZXR1cm4gcGFy
YW1zX3R5cGU6OmtleShzbG90KGkpKTsgfQorICByZWZlcmVuY2UgdmFsdWUoaW50IGkpIHsgcmV0
dXJuIHBhcmFtc190eXBlOjplbGVtZW50KHNsb3QoaSkpOyB9CisgIGNvbnN0X3JlZmVyZW5jZSB2
YWx1ZShpbnQgaSkgY29uc3QgeyByZXR1cm4gcGFyYW1zX3R5cGU6OmVsZW1lbnQoc2xvdChpKSk7
IH0KKworICAvLyBHZXR0ZXJzL3NldHRlciBmb3IgdGhlIGNoaWxkIGF0IHBvc2l0aW9uIGkgaW4g
dGhlIG5vZGUuCisgIGJ0cmVlX25vZGUgKmNoaWxkKGludCBpKSBjb25zdCB7IHJldHVybiBHZXRG
aWVsZDwzPigpW2ldOyB9CisgIGJ0cmVlX25vZGUgKiZtdXRhYmxlX2NoaWxkKGludCBpKSB7IHJl
dHVybiBHZXRGaWVsZDwzPigpW2ldOyB9CisgIHZvaWQgY2xlYXJfY2hpbGQoaW50IGkpIHsKKyAg
ICBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OlNhbml0aXplclBvaXNvbk9iamVjdCgmbXV0YWJs
ZV9jaGlsZChpKSk7CisgIH0KKyAgdm9pZCBzZXRfY2hpbGQoaW50IGksIGJ0cmVlX25vZGUgKmMp
IHsKKyAgICBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OlNhbml0aXplclVucG9pc29uT2JqZWN0
KCZtdXRhYmxlX2NoaWxkKGkpKTsKKyAgICBtdXRhYmxlX2NoaWxkKGkpID0gYzsKKyAgICBjLT5z
ZXRfcG9zaXRpb24oaSk7CisgIH0KKyAgdm9pZCBpbml0X2NoaWxkKGludCBpLCBidHJlZV9ub2Rl
ICpjKSB7CisgICAgc2V0X2NoaWxkKGksIGMpOworICAgIGMtPnNldF9wYXJlbnQodGhpcyk7Cisg
IH0KKworICAvLyBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgdmFsdWUgd2hvc2Ug
a2V5IGlzIG5vdCBsZXNzIHRoYW4gay4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIFNlYXJj
aFJlc3VsdDxpbnQsIGlzX2tleV9jb21wYXJlX3RvOjp2YWx1ZT4gbG93ZXJfYm91bmQoCisgICAg
ICBjb25zdCBLICZrLCBjb25zdCBrZXlfY29tcGFyZSAmY29tcCkgY29uc3QgeworICAgIHJldHVy
biB1c2VfbGluZWFyX3NlYXJjaDo6dmFsdWUgPyBsaW5lYXJfc2VhcmNoKGssIGNvbXApCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGJpbmFyeV9zZWFyY2goaywgY29tcCk7
CisgIH0KKyAgLy8gUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IHZhbHVlIHdob3Nl
IGtleSBpcyBncmVhdGVyIHRoYW4gay4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIGludCB1
cHBlcl9ib3VuZChjb25zdCBLICZrLCBjb25zdCBrZXlfY29tcGFyZSAmY29tcCkgY29uc3Qgewor
ICAgIGF1dG8gdXBwZXJfY29tcGFyZSA9IHVwcGVyX2JvdW5kX2FkYXB0ZXI8a2V5X2NvbXBhcmU+
KGNvbXApOworICAgIHJldHVybiB1c2VfbGluZWFyX3NlYXJjaDo6dmFsdWUgPyBsaW5lYXJfc2Vh
cmNoKGssIHVwcGVyX2NvbXBhcmUpLnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IGJpbmFyeV9zZWFyY2goaywgdXBwZXJfY29tcGFyZSkudmFsdWU7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgQ29tcGFyZT4KKyAgU2VhcmNoUmVzdWx0
PGludCwgYnRyZWVfaXNfa2V5X2NvbXBhcmVfdG88Q29tcGFyZSwga2V5X3R5cGU+Ojp2YWx1ZT4K
KyAgbGluZWFyX3NlYXJjaChjb25zdCBLICZrLCBjb25zdCBDb21wYXJlICZjb21wKSBjb25zdCB7
CisgICAgcmV0dXJuIGxpbmVhcl9zZWFyY2hfaW1wbChrLCAwLCBjb3VudCgpLCBjb21wLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRyZWVfaXNfa2V5X2NvbXBhcmVfdG88Q29tcGFy
ZSwga2V5X3R5cGU+KCkpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1l
IENvbXBhcmU+CisgIFNlYXJjaFJlc3VsdDxpbnQsIGJ0cmVlX2lzX2tleV9jb21wYXJlX3RvPENv
bXBhcmUsIGtleV90eXBlPjo6dmFsdWU+CisgIGJpbmFyeV9zZWFyY2goY29uc3QgSyAmaywgY29u
c3QgQ29tcGFyZSAmY29tcCkgY29uc3QgeworICAgIHJldHVybiBiaW5hcnlfc2VhcmNoX2ltcGwo
aywgMCwgY291bnQoKSwgY29tcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0cmVl
X2lzX2tleV9jb21wYXJlX3RvPENvbXBhcmUsIGtleV90eXBlPigpKTsKKyAgfQorCisgIC8vIFJl
dHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCB2YWx1ZSB3aG9zZSBrZXkgaXMgbm90IGxl
c3MgdGhhbiBrIHVzaW5nCisgIC8vIGxpbmVhciBzZWFyY2ggcGVyZm9ybWVkIHVzaW5nIHBsYWlu
IGNvbXBhcmUuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBDb21wYXJlPgorICBT
ZWFyY2hSZXN1bHQ8aW50LCBmYWxzZT4gbGluZWFyX3NlYXJjaF9pbXBsKAorICAgICAgY29uc3Qg
SyAmaywgaW50IHMsIGNvbnN0IGludCBlLCBjb25zdCBDb21wYXJlICZjb21wLAorICAgICAgc3Rk
OjpmYWxzZV90eXBlIC8qIElzQ29tcGFyZVRvICovKSBjb25zdCB7CisgICAgd2hpbGUgKHMgPCBl
KSB7CisgICAgICBpZiAoIWNvbXAoa2V5KHMpLCBrKSkgeworICAgICAgICBicmVhazsKKyAgICAg
IH0KKyAgICAgICsrczsKKyAgICB9CisgICAgcmV0dXJuIHtzfTsKKyAgfQorCisgIC8vIFJldHVy
bnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCB2YWx1ZSB3aG9zZSBrZXkgaXMgbm90IGxlc3Mg
dGhhbiBrIHVzaW5nCisgIC8vIGxpbmVhciBzZWFyY2ggcGVyZm9ybWVkIHVzaW5nIGNvbXBhcmUt
dG8uCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBDb21wYXJlPgorICBTZWFyY2hS
ZXN1bHQ8aW50LCB0cnVlPiBsaW5lYXJfc2VhcmNoX2ltcGwoCisgICAgICBjb25zdCBLICZrLCBp
bnQgcywgY29uc3QgaW50IGUsIGNvbnN0IENvbXBhcmUgJmNvbXAsCisgICAgICBzdGQ6OnRydWVf
dHlwZSAvKiBJc0NvbXBhcmVUbyAqLykgY29uc3QgeworICAgIHdoaWxlIChzIDwgZSkgeworICAg
ICAgY29uc3QgYWJzbDo6d2Vha19vcmRlcmluZyBjID0gY29tcChrZXkocyksIGspOworICAgICAg
aWYgKGMgPT0gMCkgeworICAgICAgICByZXR1cm4ge3MsIE1hdGNoS2luZDo6a0VxfTsKKyAgICAg
IH0gZWxzZSBpZiAoYyA+IDApIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICArK3M7
CisgICAgfQorICAgIHJldHVybiB7cywgTWF0Y2hLaW5kOjprTmV9OworICB9CisKKyAgLy8gUmV0
dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IHZhbHVlIHdob3NlIGtleSBpcyBub3QgbGVz
cyB0aGFuIGsgdXNpbmcKKyAgLy8gYmluYXJ5IHNlYXJjaCBwZXJmb3JtZWQgdXNpbmcgcGxhaW4g
Y29tcGFyZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIENvbXBhcmU+CisgIFNl
YXJjaFJlc3VsdDxpbnQsIGZhbHNlPiBiaW5hcnlfc2VhcmNoX2ltcGwoCisgICAgICBjb25zdCBL
ICZrLCBpbnQgcywgaW50IGUsIGNvbnN0IENvbXBhcmUgJmNvbXAsCisgICAgICBzdGQ6OmZhbHNl
X3R5cGUgLyogSXNDb21wYXJlVG8gKi8pIGNvbnN0IHsKKyAgICB3aGlsZSAocyAhPSBlKSB7Cisg
ICAgICBjb25zdCBpbnQgbWlkID0gKHMgKyBlKSA+PiAxOworICAgICAgaWYgKGNvbXAoa2V5KG1p
ZCksIGspKSB7CisgICAgICAgIHMgPSBtaWQgKyAxOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ZSA9IG1pZDsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHtzfTsKKyAgfQorCisgIC8vIFJl
dHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCB2YWx1ZSB3aG9zZSBrZXkgaXMgbm90IGxl
c3MgdGhhbiBrIHVzaW5nCisgIC8vIGJpbmFyeSBzZWFyY2ggcGVyZm9ybWVkIHVzaW5nIGNvbXBh
cmUtdG8uCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBDb21wYXJlVG8+CisgIFNl
YXJjaFJlc3VsdDxpbnQsIHRydWU+IGJpbmFyeV9zZWFyY2hfaW1wbCgKKyAgICAgIGNvbnN0IEsg
JmssIGludCBzLCBpbnQgZSwgY29uc3QgQ29tcGFyZVRvICZjb21wLAorICAgICAgc3RkOjp0cnVl
X3R5cGUgLyogSXNDb21wYXJlVG8gKi8pIGNvbnN0IHsKKyAgICBpZiAoaXNfbXVsdGlfY29udGFp
bmVyOjp2YWx1ZSkgeworICAgICAgTWF0Y2hLaW5kIGV4YWN0X21hdGNoID0gTWF0Y2hLaW5kOjpr
TmU7CisgICAgICB3aGlsZSAocyAhPSBlKSB7CisgICAgICAgIGNvbnN0IGludCBtaWQgPSAocyAr
IGUpID4+IDE7CisgICAgICAgIGNvbnN0IGFic2w6OndlYWtfb3JkZXJpbmcgYyA9IGNvbXAoa2V5
KG1pZCksIGspOworICAgICAgICBpZiAoYyA8IDApIHsKKyAgICAgICAgICBzID0gbWlkICsgMTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBlID0gbWlkOworICAgICAgICAgIGlmIChjID09
IDApIHsKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gcmV0dXJuIHRoZSBmaXJzdCB2YWx1ZSB3aG9z
ZSBrZXkgaXMgbm90IGxlc3MgdGhhbiBrLAorICAgICAgICAgICAgLy8gd2hpY2ggcmVxdWlyZXMg
Y29udGludWluZyB0aGUgYmluYXJ5IHNlYXJjaCBpZiB0aGlzIGlzIGEKKyAgICAgICAgICAgIC8v
IG11bHRpLWNvbnRhaW5lci4KKyAgICAgICAgICAgIGV4YWN0X21hdGNoID0gTWF0Y2hLaW5kOjpr
RXE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4ge3MsIGV4
YWN0X21hdGNofTsKKyAgICB9IGVsc2UgeyAgLy8gTm90IGEgbXVsdGktY29udGFpbmVyLgorICAg
ICAgd2hpbGUgKHMgIT0gZSkgeworICAgICAgICBjb25zdCBpbnQgbWlkID0gKHMgKyBlKSA+PiAx
OworICAgICAgICBjb25zdCBhYnNsOjp3ZWFrX29yZGVyaW5nIGMgPSBjb21wKGtleShtaWQpLCBr
KTsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgcyA9IG1pZCArIDE7CisgICAgICAg
IH0gZWxzZSBpZiAoYyA+IDApIHsKKyAgICAgICAgICBlID0gbWlkOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIHJldHVybiB7bWlkLCBNYXRjaEtpbmQ6OmtFcX07CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIHJldHVybiB7cywgTWF0Y2hLaW5kOjprTmV9OworICAgIH0KKyAgfQorCisg
IC8vIEVtcGxhY2VzIGEgdmFsdWUgYXQgcG9zaXRpb24gaSwgc2hpZnRpbmcgYWxsIGV4aXN0aW5n
IHZhbHVlcyBhbmQKKyAgLy8gY2hpbGRyZW4gYXQgcG9zaXRpb25zID49IGkgdG8gdGhlIHJpZ2h0
IGJ5IDEuCisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICB2b2lkIGVtcGxhY2VfdmFs
dWUoc2l6ZV90eXBlIGksIGFsbG9jYXRvcl90eXBlICphbGxvYywgQXJncyAmJi4uLiBhcmdzKTsK
KworICAvLyBSZW1vdmVzIHRoZSB2YWx1ZSBhdCBwb3NpdGlvbiBpLCBzaGlmdGluZyBhbGwgZXhp
c3RpbmcgdmFsdWVzIGFuZCBjaGlsZHJlbgorICAvLyBhdCBwb3NpdGlvbnMgPiBpIHRvIHRoZSBs
ZWZ0IGJ5IDEuCisgIHZvaWQgcmVtb3ZlX3ZhbHVlKGludCBpLCBhbGxvY2F0b3JfdHlwZSAqYWxs
b2MpOworCisgIC8vIFJlbW92ZXMgdGhlIHZhbHVlcyBhdCBwb3NpdGlvbnMgW2ksIGkgKyB0b19l
cmFzZSksIHNoaWZ0aW5nIGFsbCB2YWx1ZXMKKyAgLy8gYWZ0ZXIgdGhhdCByYW5nZSB0byB0aGUg
bGVmdCBieSB0b19lcmFzZS4gRG9lcyBub3QgY2hhbmdlIGNoaWxkcmVuIGF0IGFsbC4KKyAgdm9p
ZCByZW1vdmVfdmFsdWVzX2lnbm9yZV9jaGlsZHJlbihpbnQgaSwgaW50IHRvX2VyYXNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlICphbGxvYyk7
CisKKyAgLy8gUmViYWxhbmNlcyBhIG5vZGUgd2l0aCBpdHMgcmlnaHQgc2libGluZy4KKyAgdm9p
ZCByZWJhbGFuY2VfcmlnaHRfdG9fbGVmdChpbnQgdG9fbW92ZSwgYnRyZWVfbm9kZSAqcmlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGUgKmFsbG9jKTsK
KyAgdm9pZCByZWJhbGFuY2VfbGVmdF90b19yaWdodChpbnQgdG9fbW92ZSwgYnRyZWVfbm9kZSAq
cmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGUgKmFs
bG9jKTsKKworICAvLyBTcGxpdHMgYSBub2RlLCBtb3ZpbmcgYSBwb3J0aW9uIG9mIHRoZSBub2Rl
J3MgdmFsdWVzIHRvIGl0cyByaWdodCBzaWJsaW5nLgorICB2b2lkIHNwbGl0KGludCBpbnNlcnRf
cG9zaXRpb24sIGJ0cmVlX25vZGUgKmRlc3QsIGFsbG9jYXRvcl90eXBlICphbGxvYyk7CisKKyAg
Ly8gTWVyZ2VzIGEgbm9kZSB3aXRoIGl0cyByaWdodCBzaWJsaW5nLCBtb3ZpbmcgYWxsIG9mIHRo
ZSB2YWx1ZXMgYW5kIHRoZQorICAvLyBkZWxpbWl0aW5nIGtleSBpbiB0aGUgcGFyZW50IG5vZGUg
b250byBpdHNlbGYuCisgIHZvaWQgbWVyZ2UoYnRyZWVfbm9kZSAqc2libGluZywgYWxsb2NhdG9y
X3R5cGUgKmFsbG9jKTsKKworICAvLyBTd2FwIHRoZSBjb250ZW50cyBvZiAidGhpcyIgYW5kICJz
cmMiLgorICB2b2lkIHN3YXAoYnRyZWVfbm9kZSAqc3JjLCBhbGxvY2F0b3JfdHlwZSAqYWxsb2Mp
OworCisgIC8vIE5vZGUgYWxsb2NhdGlvbi9kZWxldGlvbiByb3V0aW5lcy4KKyAgc3RhdGljIGJ0
cmVlX25vZGUgKmluaXRfbGVhZihidHJlZV9ub2RlICpuLCBidHJlZV9ub2RlICpwYXJlbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9jb3VudCkgeworICAgIG4tPnNl
dF9wYXJlbnQocGFyZW50KTsKKyAgICBuLT5zZXRfcG9zaXRpb24oMCk7CisgICAgbi0+c2V0X3N0
YXJ0KDApOworICAgIG4tPnNldF9jb3VudCgwKTsKKyAgICBuLT5zZXRfbWF4X2NvdW50KG1heF9j
b3VudCk7CisgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpTYW5pdGl6ZXJQb2lzb25NZW1v
cnlSZWdpb24oCisgICAgICAgIG4tPnNsb3QoMCksIG1heF9jb3VudCAqIHNpemVvZihzbG90X3R5
cGUpKTsKKyAgICByZXR1cm4gbjsKKyAgfQorICBzdGF0aWMgYnRyZWVfbm9kZSAqaW5pdF9pbnRl
cm5hbChidHJlZV9ub2RlICpuLCBidHJlZV9ub2RlICpwYXJlbnQpIHsKKyAgICBpbml0X2xlYWYo
biwgcGFyZW50LCBrTm9kZVZhbHVlcyk7CisgICAgLy8gU2V0IGBtYXhfY291bnRgIHRvIGEgc2Vu
dGluZWwgdmFsdWUgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIG5vZGUgaXMKKyAgICAvLyBpbnRlcm5h
bC4KKyAgICBuLT5zZXRfbWF4X2NvdW50KGtJbnRlcm5hbE5vZGVNYXhDb3VudCk7CisgICAgYWJz
bDo6Y29udGFpbmVyX2ludGVybmFsOjpTYW5pdGl6ZXJQb2lzb25NZW1vcnlSZWdpb24oCisgICAg
ICAgICZuLT5tdXRhYmxlX2NoaWxkKDApLCAoa05vZGVWYWx1ZXMgKyAxKSAqIHNpemVvZihidHJl
ZV9ub2RlICopKTsKKyAgICByZXR1cm4gbjsKKyAgfQorICB2b2lkIGRlc3Ryb3koYWxsb2NhdG9y
X3R5cGUgKmFsbG9jKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudCgpOyArK2kpIHsK
KyAgICAgIHZhbHVlX2Rlc3Ryb3koaSwgYWxsb2MpOworICAgIH0KKyAgfQorCisgcHVibGljOgor
ICAvLyBFeHBvc2VkIG9ubHkgZm9yIHRlc3RzLgorICBzdGF0aWMgYm9vbCB0ZXN0b25seV91c2Vz
X2xpbmVhcl9ub2RlX3NlYXJjaCgpIHsKKyAgICByZXR1cm4gdXNlX2xpbmVhcl9zZWFyY2g6OnZh
bHVlOworICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAg
dm9pZCB2YWx1ZV9pbml0KGNvbnN0IHNpemVfdHlwZSBpLCBhbGxvY2F0b3JfdHlwZSAqYWxsb2Ms
IEFyZ3MgJiYuLi4gYXJncykgeworICAgIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6U2FuaXRp
emVyVW5wb2lzb25PYmplY3Qoc2xvdChpKSk7CisgICAgcGFyYW1zX3R5cGU6OmNvbnN0cnVjdChh
bGxvYywgc2xvdChpKSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorICB2b2lk
IHZhbHVlX2Rlc3Ryb3koY29uc3Qgc2l6ZV90eXBlIGksIGFsbG9jYXRvcl90eXBlICphbGxvYykg
eworICAgIHBhcmFtc190eXBlOjpkZXN0cm95KGFsbG9jLCBzbG90KGkpKTsKKyAgICBhYnNsOjpj
b250YWluZXJfaW50ZXJuYWw6OlNhbml0aXplclBvaXNvbk9iamVjdChzbG90KGkpKTsKKyAgfQor
CisgIC8vIE1vdmUgbiB2YWx1ZXMgc3RhcnRpbmcgYXQgdmFsdWUgaSBpbiB0aGlzIG5vZGUgaW50
byB0aGUgdmFsdWVzIHN0YXJ0aW5nIGF0CisgIC8vIHZhbHVlIGogaW4gbm9kZSB4LgorICB2b2lk
IHVuaW5pdGlhbGl6ZWRfbW92ZV9uKGNvbnN0IHNpemVfdHlwZSBuLCBjb25zdCBzaXplX3R5cGUg
aSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3R5cGUgaiwgYnRyZWVf
bm9kZSAqeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHlwZSAqYWxs
b2MpIHsKKyAgICBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OlNhbml0aXplclVucG9pc29uTWVt
b3J5UmVnaW9uKAorICAgICAgICB4LT5zbG90KGopLCBuICogc2l6ZW9mKHNsb3RfdHlwZSkpOwor
ICAgIGZvciAoc2xvdF90eXBlICpzcmMgPSBzbG90KGkpLCAqZW5kID0gc3JjICsgbiwgKmRlc3Qg
PSB4LT5zbG90KGopOworICAgICAgICAgc3JjICE9IGVuZDsgKytzcmMsICsrZGVzdCkgeworICAg
ICAgcGFyYW1zX3R5cGU6OmNvbnN0cnVjdChhbGxvYywgZGVzdCwgc3JjKTsKKyAgICB9CisgIH0K
KworICAvLyBEZXN0cm95cyBhIHJhbmdlIG9mIG4gdmFsdWVzLCBzdGFydGluZyBhdCBpbmRleCBp
LgorICB2b2lkIHZhbHVlX2Rlc3Ryb3lfbihjb25zdCBzaXplX3R5cGUgaSwgY29uc3Qgc2l6ZV90
eXBlIG4sCisgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlICphbGxvYykgewor
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgKytqKSB7CisgICAgICB2YWx1ZV9kZXN0cm95KGkg
KyBqLCBhbGxvYyk7CisgICAgfQorICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+CisgIGZy
aWVuZCBjbGFzcyBidHJlZTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE4sIHR5cGVuYW1lIFIsIHR5
cGVuYW1lIFA+CisgIGZyaWVuZCBzdHJ1Y3QgYnRyZWVfaXRlcmF0b3I7CisgIGZyaWVuZCBjbGFz
cyBCdHJlZU5vZGVQZWVyOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1l
IFJlZmVyZW5jZSwgdHlwZW5hbWUgUG9pbnRlcj4KK3N0cnVjdCBidHJlZV9pdGVyYXRvciB7Cisg
cHJpdmF0ZToKKyAgdXNpbmcga2V5X3R5cGUgPSB0eXBlbmFtZSBOb2RlOjprZXlfdHlwZTsKKyAg
dXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgTm9kZTo6c2l6ZV90eXBlOworICB1c2luZyBwYXJh
bXNfdHlwZSA9IHR5cGVuYW1lIE5vZGU6OnBhcmFtc190eXBlOworCisgIHVzaW5nIG5vZGVfdHlw
ZSA9IE5vZGU7CisgIHVzaW5nIG5vcm1hbF9ub2RlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29u
c3Q8Tm9kZT46OnR5cGU7CisgIHVzaW5nIGNvbnN0X25vZGUgPSBjb25zdCBOb2RlOworICB1c2lu
ZyBub3JtYWxfcG9pbnRlciA9IHR5cGVuYW1lIHBhcmFtc190eXBlOjpwb2ludGVyOworICB1c2lu
ZyBub3JtYWxfcmVmZXJlbmNlID0gdHlwZW5hbWUgcGFyYW1zX3R5cGU6OnJlZmVyZW5jZTsKKyAg
dXNpbmcgY29uc3RfcG9pbnRlciA9IHR5cGVuYW1lIHBhcmFtc190eXBlOjpjb25zdF9wb2ludGVy
OworICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6Y29uc3Rf
cmVmZXJlbmNlOworICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6c2xv
dF90eXBlOworCisgIHVzaW5nIGl0ZXJhdG9yID0KKyAgICAgIGJ0cmVlX2l0ZXJhdG9yPG5vcm1h
bF9ub2RlLCBub3JtYWxfcmVmZXJlbmNlLCBub3JtYWxfcG9pbnRlcj47CisgIHVzaW5nIGNvbnN0
X2l0ZXJhdG9yID0KKyAgICAgIGJ0cmVlX2l0ZXJhdG9yPGNvbnN0X25vZGUsIGNvbnN0X3JlZmVy
ZW5jZSwgY29uc3RfcG9pbnRlcj47CisKKyBwdWJsaWM6CisgIC8vIFRoZXNlIGFsaWFzZXMgYXJl
IHB1YmxpYyBmb3Igc3RkOjppdGVyYXRvcl90cmFpdHMuCisgIHVzaW5nIGRpZmZlcmVuY2VfdHlw
ZSA9IHR5cGVuYW1lIE5vZGU6OmRpZmZlcmVuY2VfdHlwZTsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9
IHR5cGVuYW1lIHBhcmFtc190eXBlOjp2YWx1ZV90eXBlOworICB1c2luZyBwb2ludGVyID0gUG9p
bnRlcjsKKyAgdXNpbmcgcmVmZXJlbmNlID0gUmVmZXJlbmNlOworICB1c2luZyBpdGVyYXRvcl9j
YXRlZ29yeSA9IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7CisKKyAgYnRyZWVfaXRl
cmF0b3IoKSA6IG5vZGUobnVsbHB0ciksIHBvc2l0aW9uKC0xKSB7fQorICBidHJlZV9pdGVyYXRv
cihOb2RlICpuLCBpbnQgcCkgOiBub2RlKG4pLCBwb3NpdGlvbihwKSB7fQorCisgIC8vIE5PVEU6
IHRoaXMgU0ZJTkFFIGFsbG93cyBmb3IgaW1wbGljaXQgY29udmVyc2lvbnMgZnJvbSBpdGVyYXRv
ciB0bworICAvLyBjb25zdF9pdGVyYXRvciwgYnV0IGl0IHNwZWNpZmljYWxseSBhdm9pZHMgZGVm
aW5pbmcgY29weSBjb25zdHJ1Y3RvcnMgc28KKyAgLy8gdGhhdCBidHJlZV9pdGVyYXRvciBjYW4g
YmUgdHJpdmlhbGx5IGNvcHlhYmxlLiBUaGlzIGlzIGZvciBwZXJmb3JtYW5jZSBhbmQKKyAgLy8g
YmluYXJ5IHNpemUgcmVhc29ucy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE4sIHR5cGVuYW1lIFIs
IHR5cGVuYW1lIFAsCisgICAgICAgICAgICBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICAgICAg
ICAgICBzdGQ6OmlzX3NhbWU8YnRyZWVfaXRlcmF0b3I8TiwgUiwgUD4sIGl0ZXJhdG9yPjo6dmFs
dWUgJiYKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPGJ0cmVlX2l0ZXJhdG9yLCBj
b25zdF9pdGVyYXRvcj46OnZhbHVlLAorICAgICAgICAgICAgICAgIGludD4gPSAwPgorICBidHJl
ZV9pdGVyYXRvcihjb25zdCBidHJlZV9pdGVyYXRvcjxOLCBSLCBQPiAmeCkgIC8vIE5PTElOVAor
ICAgICAgOiBub2RlKHgubm9kZSksIHBvc2l0aW9uKHgucG9zaXRpb24pIHt9CisKKyBwcml2YXRl
OgorICAvLyBUaGlzIFNGSU5BRSBhbGxvd3MgZXhwbGljaXQgY29udmVyc2lvbnMgZnJvbSBjb25z
dF9pdGVyYXRvciB0bworICAvLyBpdGVyYXRvciwgYnV0IGFsc28gYXZvaWRzIGRlZmluaW5nIGEg
Y29weSBjb25zdHJ1Y3Rvci4KKyAgLy8gTk9URTogdGhlIGNvbnN0X2Nhc3QgaXMgc2FmZSBiZWNh
dXNlIHRoaXMgY29uc3RydWN0b3IgaXMgb25seSBjYWxsZWQgYnkKKyAgLy8gbm9uLWNvbnN0IG1l
dGhvZHMgYW5kIHRoZSBjb250YWluZXIgb3ducyB0aGUgbm9kZXMuCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBOLCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBQLAorICAgICAgICAgICAgYWJzbDo6ZW5hYmxl
X2lmX3Q8CisgICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPGJ0cmVlX2l0ZXJhdG9yPE4sIFIs
IFA+LCBjb25zdF9pdGVyYXRvcj46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6
aXNfc2FtZTxidHJlZV9pdGVyYXRvciwgaXRlcmF0b3I+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAg
ICBpbnQ+ID0gMD4KKyAgZXhwbGljaXQgYnRyZWVfaXRlcmF0b3IoY29uc3QgYnRyZWVfaXRlcmF0
b3I8TiwgUiwgUD4gJngpCisgICAgICA6IG5vZGUoY29uc3RfY2FzdDxub2RlX3R5cGUgKj4oeC5u
b2RlKSksIHBvc2l0aW9uKHgucG9zaXRpb24pIHt9CisKKyAgLy8gSW5jcmVtZW50L2RlY3JlbWVu
dCB0aGUgaXRlcmF0b3IuCisgIHZvaWQgaW5jcmVtZW50KCkgeworICAgIGlmIChub2RlLT5sZWFm
KCkgJiYgKytwb3NpdGlvbiA8IG5vZGUtPmNvdW50KCkpIHsKKyAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaW5jcmVtZW50X3Nsb3coKTsKKyAgfQorICB2b2lkIGluY3JlbWVudF9zbG93KCk7CisK
KyAgdm9pZCBkZWNyZW1lbnQoKSB7CisgICAgaWYgKG5vZGUtPmxlYWYoKSAmJiAtLXBvc2l0aW9u
ID49IDApIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgZGVjcmVtZW50X3Nsb3coKTsKKyAg
fQorICB2b2lkIGRlY3JlbWVudF9zbG93KCk7CisKKyBwdWJsaWM6CisgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBjb25zdF9pdGVyYXRvciAmeCkgY29uc3QgeworICAgIHJldHVybiBub2RlID09IHgu
bm9kZSAmJiBwb3NpdGlvbiA9PSB4LnBvc2l0aW9uOworICB9CisgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBjb25zdF9pdGVyYXRvciAmeCkgY29uc3QgeworICAgIHJldHVybiBub2RlICE9IHgubm9k
ZSB8fCBwb3NpdGlvbiAhPSB4LnBvc2l0aW9uOworICB9CisKKyAgLy8gQWNjZXNzb3JzIGZvciB0
aGUga2V5L3ZhbHVlIHRoZSBpdGVyYXRvciBpcyBwb2ludGluZyBhdC4KKyAgcmVmZXJlbmNlIG9w
ZXJhdG9yKigpIGNvbnN0IHsKKyAgICByZXR1cm4gbm9kZS0+dmFsdWUocG9zaXRpb24pOworICB9
CisgIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsKKyAgICByZXR1cm4gJm5vZGUtPnZhbHVl
KHBvc2l0aW9uKTsKKyAgfQorCisgIGJ0cmVlX2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeworICAg
IGluY3JlbWVudCgpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorICBidHJlZV9pdGVyYXRvciYg
b3BlcmF0b3ItLSgpIHsKKyAgICBkZWNyZW1lbnQoKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0K
KyAgYnRyZWVfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsKKyAgICBidHJlZV9pdGVyYXRvciB0
bXAgPSAqdGhpczsKKyAgICArKyp0aGlzOworICAgIHJldHVybiB0bXA7CisgIH0KKyAgYnRyZWVf
aXRlcmF0b3Igb3BlcmF0b3ItLShpbnQpIHsKKyAgICBidHJlZV9pdGVyYXRvciB0bXAgPSAqdGhp
czsKKyAgICAtLSp0aGlzOworICAgIHJldHVybiB0bXA7CisgIH0KKworIHByaXZhdGU6CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBQYXJhbXM+CisgIGZyaWVuZCBjbGFzcyBidHJlZTsKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFRyZWU+CisgIGZyaWVuZCBjbGFzcyBidHJlZV9jb250YWluZXI7CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUcmVlPgorICBmcmllbmQgY2xhc3MgYnRyZWVfc2V0X2NvbnRhaW5l
cjsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWU+CisgIGZyaWVuZCBjbGFzcyBidHJlZV9tYXBf
Y29udGFpbmVyOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZT4KKyAgZnJpZW5kIGNsYXNzIGJ0
cmVlX211bHRpc2V0X2NvbnRhaW5lcjsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE4sIHR5cGVuYW1l
IFIsIHR5cGVuYW1lIFA+CisgIGZyaWVuZCBzdHJ1Y3QgYnRyZWVfaXRlcmF0b3I7CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUcmVlVHlwZSwgdHlwZW5hbWUgQ2hlY2tlclR5cGU+CisgIGZyaWVuZCBj
bGFzcyBiYXNlX2NoZWNrZXI7CisKKyAgY29uc3Qga2V5X3R5cGUgJmtleSgpIGNvbnN0IHsgcmV0
dXJuIG5vZGUtPmtleShwb3NpdGlvbik7IH0KKyAgc2xvdF90eXBlICpzbG90KCkgeyByZXR1cm4g
bm9kZS0+c2xvdChwb3NpdGlvbik7IH0KKworICAvLyBUaGUgbm9kZSBpbiB0aGUgdHJlZSB0aGUg
aXRlcmF0b3IgaXMgcG9pbnRpbmcgYXQuCisgIE5vZGUgKm5vZGU7CisgIC8vIFRoZSBwb3NpdGlv
biB3aXRoaW4gdGhlIG5vZGUgb2YgdGhlIHRyZWUgdGhlIGl0ZXJhdG9yIGlzIHBvaW50aW5nIGF0
LgorICAvLyBUT0RPKGV6Yik6IG1ha2UgdGhpcyBhIGZpZWxkX3R5cGUKKyAgaW50IHBvc2l0aW9u
OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtcz4KK2NsYXNzIGJ0cmVlIHsKKyAgdXNp
bmcgbm9kZV90eXBlID0gYnRyZWVfbm9kZTxQYXJhbXM+OworICB1c2luZyBpc19rZXlfY29tcGFy
ZV90byA9IHR5cGVuYW1lIFBhcmFtczo6aXNfa2V5X2NvbXBhcmVfdG87CisKKyAgLy8gV2UgdXNl
IGEgc3RhdGljIGVtcHR5IG5vZGUgZm9yIHRoZSByb290L2xlZnRtb3N0L3JpZ2h0bW9zdCBvZiBl
bXB0eSBidHJlZXMKKyAgLy8gaW4gb3JkZXIgdG8gYXZvaWQgYnJhbmNoaW5nIGluIGJlZ2luKCkv
ZW5kKCkuCisgIHN0cnVjdCBhbGlnbmFzKG5vZGVfdHlwZTo6QWxpZ25tZW50KCkpIEVtcHR5Tm9k
ZVR5cGUgOiBub2RlX3R5cGUgeworICAgIHVzaW5nIGZpZWxkX3R5cGUgPSB0eXBlbmFtZSBub2Rl
X3R5cGU6OmZpZWxkX3R5cGU7CisgICAgbm9kZV90eXBlICpwYXJlbnQ7CisgICAgZmllbGRfdHlw
ZSBwb3NpdGlvbiA9IDA7CisgICAgZmllbGRfdHlwZSBzdGFydCA9IDA7CisgICAgZmllbGRfdHlw
ZSBjb3VudCA9IDA7CisgICAgLy8gbWF4X2NvdW50IG11c3QgYmUgIT0ga0ludGVybmFsTm9kZU1h
eENvdW50IChzbyB0aGF0IHRoaXMgbm9kZSBpcyByZWdhcmRlZAorICAgIC8vIGFzIGEgbGVhZiBu
b2RlKS4gbWF4X2NvdW50KCkgaXMgbmV2ZXIgY2FsbGVkIHdoZW4gdGhlIHRyZWUgaXMgZW1wdHku
CisgICAgZmllbGRfdHlwZSBtYXhfY291bnQgPSBub2RlX3R5cGU6OmtJbnRlcm5hbE5vZGVNYXhD
b3VudCArIDE7CisKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8vIE1TVkMgaGFzIGNvbnN0ZXhwciBj
b2RlIGdlbmVyYXRpb25zIGJ1Z3MgaGVyZS4KKyAgICBFbXB0eU5vZGVUeXBlKCkgOiBwYXJlbnQo
dGhpcykge30KKyNlbHNlCisgICAgY29uc3RleHByIEVtcHR5Tm9kZVR5cGUobm9kZV90eXBlICpw
KSA6IHBhcmVudChwKSB7fQorI2VuZGlmCisgIH07CisKKyAgc3RhdGljIG5vZGVfdHlwZSAqRW1w
dHlOb2RlKCkgeworI2lmZGVmIF9NU0NfVkVSCisgICAgc3RhdGljIEVtcHR5Tm9kZVR5cGUqIGVt
cHR5X25vZGUgPSBuZXcgRW1wdHlOb2RlVHlwZTsKKyAgICAvLyBUaGlzIGFzc2VydCBmYWlscyBv
biBzb21lIG90aGVyIGNvbnN0cnVjdGlvbiBtZXRob2RzLgorICAgIGFzc2VydChlbXB0eV9ub2Rl
LT5wYXJlbnQgPT0gZW1wdHlfbm9kZSk7CisgICAgcmV0dXJuIGVtcHR5X25vZGU7CisjZWxzZQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgRW1wdHlOb2RlVHlwZSBlbXB0eV9ub2RlKAorICAgICAgICBj
b25zdF9jYXN0PEVtcHR5Tm9kZVR5cGUgKj4oJmVtcHR5X25vZGUpKTsKKyAgICByZXR1cm4gY29u
c3RfY2FzdDxFbXB0eU5vZGVUeXBlICo+KCZlbXB0eV9ub2RlKTsKKyNlbmRpZgorICB9CisKKyAg
ZW51bSB7CisgICAga05vZGVWYWx1ZXMgPSBub2RlX3R5cGU6OmtOb2RlVmFsdWVzLAorICAgIGtN
aW5Ob2RlVmFsdWVzID0ga05vZGVWYWx1ZXMgLyAyLAorICB9OworCisgIHN0cnVjdCBub2RlX3N0
YXRzIHsKKyAgICB1c2luZyBzaXplX3R5cGUgPSB0eXBlbmFtZSBQYXJhbXM6OnNpemVfdHlwZTsK
KworICAgIG5vZGVfc3RhdHMoc2l6ZV90eXBlIGwsIHNpemVfdHlwZSBpKQorICAgICAgICA6IGxl
YWZfbm9kZXMobCksCisgICAgICAgICAgaW50ZXJuYWxfbm9kZXMoaSkgeworICAgIH0KKworICAg
IG5vZGVfc3RhdHMmIG9wZXJhdG9yKz0oY29uc3Qgbm9kZV9zdGF0cyAmeCkgeworICAgICAgbGVh
Zl9ub2RlcyArPSB4LmxlYWZfbm9kZXM7CisgICAgICBpbnRlcm5hbF9ub2RlcyArPSB4LmludGVy
bmFsX25vZGVzOworICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHNpemVfdHlwZSBs
ZWFmX25vZGVzOworICAgIHNpemVfdHlwZSBpbnRlcm5hbF9ub2RlczsKKyAgfTsKKworIHB1Ymxp
YzoKKyAgdXNpbmcga2V5X3R5cGUgPSB0eXBlbmFtZSBQYXJhbXM6OmtleV90eXBlOworICB1c2lu
ZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgUGFyYW1zOjp2YWx1ZV90eXBlOworICB1c2luZyBzaXpl
X3R5cGUgPSB0eXBlbmFtZSBQYXJhbXM6OnNpemVfdHlwZTsKKyAgdXNpbmcgZGlmZmVyZW5jZV90
eXBlID0gdHlwZW5hbWUgUGFyYW1zOjpkaWZmZXJlbmNlX3R5cGU7CisgIHVzaW5nIGtleV9jb21w
YXJlID0gdHlwZW5hbWUgUGFyYW1zOjprZXlfY29tcGFyZTsKKyAgdXNpbmcgdmFsdWVfY29tcGFy
ZSA9IHR5cGVuYW1lIFBhcmFtczo6dmFsdWVfY29tcGFyZTsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5
cGUgPSB0eXBlbmFtZSBQYXJhbXM6OmFsbG9jYXRvcl90eXBlOworICB1c2luZyByZWZlcmVuY2Ug
PSB0eXBlbmFtZSBQYXJhbXM6OnJlZmVyZW5jZTsKKyAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0g
dHlwZW5hbWUgUGFyYW1zOjpjb25zdF9yZWZlcmVuY2U7CisgIHVzaW5nIHBvaW50ZXIgPSB0eXBl
bmFtZSBQYXJhbXM6OnBvaW50ZXI7CisgIHVzaW5nIGNvbnN0X3BvaW50ZXIgPSB0eXBlbmFtZSBQ
YXJhbXM6OmNvbnN0X3BvaW50ZXI7CisgIHVzaW5nIGl0ZXJhdG9yID0gYnRyZWVfaXRlcmF0b3I8
bm9kZV90eXBlLCByZWZlcmVuY2UsIHBvaW50ZXI+OworICB1c2luZyBjb25zdF9pdGVyYXRvciA9
IHR5cGVuYW1lIGl0ZXJhdG9yOjpjb25zdF9pdGVyYXRvcjsKKyAgdXNpbmcgcmV2ZXJzZV9pdGVy
YXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisgIHVzaW5nIGNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+Owor
ICB1c2luZyBub2RlX2hhbmRsZV90eXBlID0gbm9kZV9oYW5kbGU8UGFyYW1zLCBQYXJhbXMsIGFs
bG9jYXRvcl90eXBlPjsKKworICAvLyBJbnRlcm5hbCB0eXBlcyBtYWRlIHB1YmxpYyBmb3IgdXNl
IGJ5IGJ0cmVlX2NvbnRhaW5lciB0eXBlcy4KKyAgdXNpbmcgcGFyYW1zX3R5cGUgPSBQYXJhbXM7
CisgIHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIFBhcmFtczo6c2xvdF90eXBlOworCisgcHJp
dmF0ZToKKyAgLy8gRm9yIHVzZSBpbiBjb3B5X29yX21vdmVfdmFsdWVzX2luX29yZGVyLgorICBj
b25zdCB2YWx1ZV90eXBlICZtYXliZV9tb3ZlX2Zyb21faXRlcmF0b3IoY29uc3RfaXRlcmF0b3Ig
eCkgeyByZXR1cm4gKng7IH0KKyAgdmFsdWVfdHlwZSAmJm1heWJlX21vdmVfZnJvbV9pdGVyYXRv
cihpdGVyYXRvciB4KSB7IHJldHVybiBzdGQ6Om1vdmUoKngpOyB9CisKKyAgLy8gQ29waWVzIG9y
IG1vdmVzIChkZXBlbmRpbmcgb24gdGhlIHRlbXBsYXRlIHBhcmFtZXRlcikgdGhlIHZhbHVlcyBp
bgorICAvLyB4IGludG8gdGhpcyBidHJlZSBpbiB0aGVpciBvcmRlciBpbiB4LiBUaGlzIGJ0cmVl
IG11c3QgYmUgZW1wdHkgYmVmb3JlIHRoaXMKKyAgLy8gbWV0aG9kIGlzIGNhbGxlZC4gVGhpcyBt
ZXRob2QgaXMgdXNlZCBpbiBjb3B5IGNvbnN0cnVjdGlvbiwgY29weQorICAvLyBhc3NpZ25tZW50
LCBhbmQgbW92ZSBhc3NpZ25tZW50LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQnRyZWU+CisgIHZv
aWQgY29weV9vcl9tb3ZlX3ZhbHVlc19pbl9vcmRlcihCdHJlZSAqeCk7CisKKyAgLy8gVmFsaWRh
dGVzIHRoYXQgdmFyaW91cyBhc3N1bXB0aW9ucy9yZXF1aXJlbWVudHMgYXJlIHRydWUgYXQgY29t
cGlsZSB0aW1lLgorICBjb25zdGV4cHIgc3RhdGljIGJvb2wgc3RhdGljX2Fzc2VydF92YWxpZGF0
aW9uKCk7CisKKyBwdWJsaWM6CisgIGJ0cmVlKGNvbnN0IGtleV9jb21wYXJlICZjb21wLCBjb25z
dCBhbGxvY2F0b3JfdHlwZSAmYWxsb2MpOworCisgIGJ0cmVlKGNvbnN0IGJ0cmVlICZ4KTsKKyAg
YnRyZWUoYnRyZWUgJiZ4KSBub2V4Y2VwdAorICAgICAgOiByb290XyhzdGQ6Om1vdmUoeC5yb290
XykpLAorICAgICAgICByaWdodG1vc3RfKGFic2w6OmV4Y2hhbmdlKHgucmlnaHRtb3N0XywgRW1w
dHlOb2RlKCkpKSwKKyAgICAgICAgc2l6ZV8oYWJzbDo6ZXhjaGFuZ2UoeC5zaXplXywgMCkpIHsK
KyAgICB4Lm11dGFibGVfcm9vdCgpID0gRW1wdHlOb2RlKCk7CisgIH0KKworICB+YnRyZWUoKSB7
CisgICAgLy8gUHV0IHN0YXRpY19hc3NlcnRzIGluIGRlc3RydWN0b3IgdG8gYXZvaWQgdHJpZ2dl
cmluZyB0aGVtIGJlZm9yZSB0aGUgdHlwZQorICAgIC8vIGlzIGNvbXBsZXRlLgorICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Fzc2VydF92YWxpZGF0aW9uKCksICJUaGlzIGNhbGwgbXVzdCBiZSBl
bGlkZWQuIik7CisgICAgY2xlYXIoKTsKKyAgfQorCisgIC8vIEFzc2lnbiB0aGUgY29udGVudHMg
b2YgeCB0byAqdGhpcy4KKyAgYnRyZWUgJm9wZXJhdG9yPShjb25zdCBidHJlZSAmeCk7CisgIGJ0
cmVlICZvcGVyYXRvcj0oYnRyZWUgJiZ4KSBub2V4Y2VwdDsKKworICBpdGVyYXRvciBiZWdpbigp
IHsKKyAgICByZXR1cm4gaXRlcmF0b3IobGVmdG1vc3QoKSwgMCk7CisgIH0KKyAgY29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKGxlZnRtb3N0
KCksIDApOworICB9CisgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIGl0ZXJhdG9yKHJpZ2h0bW9z
dF8sIHJpZ2h0bW9zdF8tPmNvdW50KCkpOyB9CisgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0
IHsKKyAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IocmlnaHRtb3N0XywgcmlnaHRtb3N0Xy0+Y291
bnQoKSk7CisgIH0KKyAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7CisgICAgcmV0dXJuIHJl
dmVyc2VfaXRlcmF0b3IoZW5kKCkpOworICB9CisgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJl
Z2luKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsK
KyAgfQorICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7CisgICAgcmV0dXJuIHJldmVyc2VfaXRl
cmF0b3IoYmVnaW4oKSk7CisgIH0KKyAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29u
c3QgeworICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOworICB9CisK
KyAgLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgd2hvc2Uga2V5IGlzIG5vdCBsZXNzIHRoYW4g
a2V5LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgaXRlcmF0b3IgbG93ZXJfYm91bmQoY29u
c3QgSyAma2V5KSB7CisgICAgcmV0dXJuIGludGVybmFsX2VuZChpbnRlcm5hbF9sb3dlcl9ib3Vu
ZChrZXkpKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgY29uc3RfaXRlcmF0b3Ig
bG93ZXJfYm91bmQoY29uc3QgSyAma2V5KSBjb25zdCB7CisgICAgcmV0dXJuIGludGVybmFsX2Vu
ZChpbnRlcm5hbF9sb3dlcl9ib3VuZChrZXkpKTsKKyAgfQorCisgIC8vIEZpbmRzIHRoZSBmaXJz
dCBlbGVtZW50IHdob3NlIGtleSBpcyBncmVhdGVyIHRoYW4ga2V5LgorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSz4KKyAgaXRlcmF0b3IgdXBwZXJfYm91bmQoY29uc3QgSyAma2V5KSB7CisgICAgcmV0
dXJuIGludGVybmFsX2VuZChpbnRlcm5hbF91cHBlcl9ib3VuZChrZXkpKTsKKyAgfQorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSz4KKyAgY29uc3RfaXRlcmF0b3IgdXBwZXJfYm91bmQoY29uc3QgSyAm
a2V5KSBjb25zdCB7CisgICAgcmV0dXJuIGludGVybmFsX2VuZChpbnRlcm5hbF91cHBlcl9ib3Vu
ZChrZXkpKTsKKyAgfQorCisgIC8vIEZpbmRzIHRoZSByYW5nZSBvZiB2YWx1ZXMgd2hpY2ggY29t
cGFyZSBlcXVhbCB0byBrZXkuIFRoZSBmaXJzdCBtZW1iZXIgb2YKKyAgLy8gdGhlIHJldHVybmVk
IHBhaXIgaXMgZXF1YWwgdG8gbG93ZXJfYm91bmQoa2V5KS4gVGhlIHNlY29uZCBtZW1iZXIgcGFp
ciBvZgorICAvLyB0aGUgcGFpciBpcyBlcXVhbCB0byB1cHBlcl9ib3VuZChrZXkpLgorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSz4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4gZXF1YWxf
cmFuZ2UoY29uc3QgSyAma2V5KSB7CisgICAgcmV0dXJuIHtsb3dlcl9ib3VuZChrZXkpLCB1cHBl
cl9ib3VuZChrZXkpfTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgc3RkOjpwYWly
PGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gZXF1YWxfcmFuZ2UoY29uc3QgSyAma2V5
KSBjb25zdCB7CisgICAgcmV0dXJuIHtsb3dlcl9ib3VuZChrZXkpLCB1cHBlcl9ib3VuZChrZXkp
fTsKKyAgfQorCisgIC8vIEluc2VydHMgYSB2YWx1ZSBpbnRvIHRoZSBidHJlZSBvbmx5IGlmIGl0
IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIFRoZQorICAvLyBib29sZWFuIHJldHVybiB2YWx1ZSBp
bmRpY2F0ZXMgd2hldGhlciBpbnNlcnRpb24gc3VjY2VlZGVkIG9yIGZhaWxlZC4KKyAgLy8gUmVx
dWlyZW1lbnQ6IGlmIGBrZXlgIGFscmVhZHkgZXhpc3RzIGluIHRoZSBidHJlZSwgZG9lcyBub3Qg
Y29uc3VtZSBgYXJnc2AuCisgIC8vIFJlcXVpcmVtZW50OiBga2V5YCBpcyBuZXZlciByZWZlcmVu
Y2VkIGFmdGVyIGNvbnN1bWluZyBgYXJnc2AuCisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydF91bmlxdWUoY29uc3Qga2V5X3R5
cGUgJmtleSwgQXJncyAmJi4uLiBhcmdzKTsKKworICAvLyBJbnNlcnRzIHdpdGggaGludC4gQ2hl
Y2tzIHRvIHNlZSBpZiB0aGUgdmFsdWUgc2hvdWxkIGJlIHBsYWNlZCBpbW1lZGlhdGVseQorICAv
LyBiZWZvcmUgYHBvc2l0aW9uYCBpbiB0aGUgdHJlZS4gSWYgc28sIHRoZW4gdGhlIGluc2VydGlv
biB3aWxsIHRha2UKKyAgLy8gYW1vcnRpemVkIGNvbnN0YW50IHRpbWUuIElmIG5vdCwgdGhlIGlu
c2VydGlvbiB3aWxsIHRha2UgYW1vcnRpemVkCisgIC8vIGxvZ2FyaXRobWljIHRpbWUgYXMgaWYg
YSBjYWxsIHRvIGluc2VydF91bmlxdWUoKSB3ZXJlIG1hZGUuCisgIC8vIFJlcXVpcmVtZW50OiBp
ZiBga2V5YCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgYnRyZWUsIGRvZXMgbm90IGNvbnN1bWUgYGFy
Z3NgLgorICAvLyBSZXF1aXJlbWVudDogYGtleWAgaXMgbmV2ZXIgcmVmZXJlbmNlZCBhZnRlciBj
b25zdW1pbmcgYGFyZ3NgLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgc3RkOjpw
YWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnRfaGludF91bmlxdWUoaXRlcmF0b3IgcG9zaXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtl
eV90eXBlICZrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFyZ3MgJiYuLi4gYXJncyk7CisKKyAgLy8gSW5zZXJ0IGEgcmFuZ2Ugb2YgdmFsdWVzIGlu
dG8gdGhlIGJ0cmVlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgdm9p
ZCBpbnNlcnRfaXRlcmF0b3JfdW5pcXVlKElucHV0SXRlcmF0b3IgYiwgSW5wdXRJdGVyYXRvciBl
KTsKKworICAvLyBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUgYnRyZWUuCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBWYWx1ZVR5cGU+CisgIGl0ZXJhdG9yIGluc2VydF9tdWx0aShjb25zdCBrZXlfdHlw
ZSAma2V5LCBWYWx1ZVR5cGUgJiZ2KTsKKworICAvLyBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUg
YnRyZWUuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVR5cGU+CisgIGl0ZXJhdG9yIGluc2Vy
dF9tdWx0aShWYWx1ZVR5cGUgJiZ2KSB7CisgICAgcmV0dXJuIGluc2VydF9tdWx0aShwYXJhbXNf
dHlwZTo6a2V5KHYpLCBzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2KSk7CisgIH0KKworICAvLyBJ
bnNlcnQgd2l0aCBoaW50LiBDaGVjayB0byBzZWUgaWYgdGhlIHZhbHVlIHNob3VsZCBiZSBwbGFj
ZWQgaW1tZWRpYXRlbHkKKyAgLy8gYmVmb3JlIHBvc2l0aW9uIGluIHRoZSB0cmVlLiBJZiBpdCBk
b2VzLCB0aGVuIHRoZSBpbnNlcnRpb24gd2lsbCB0YWtlCisgIC8vIGFtb3J0aXplZCBjb25zdGFu
dCB0aW1lLiBJZiBub3QsIHRoZSBpbnNlcnRpb24gd2lsbCB0YWtlIGFtb3J0aXplZAorICAvLyBs
b2dhcml0aG1pYyB0aW1lIGFzIGlmIGEgY2FsbCB0byBpbnNlcnRfbXVsdGkodikgd2VyZSBtYWRl
LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWVUeXBlPgorICBpdGVyYXRvciBpbnNlcnRfaGlu
dF9tdWx0aShpdGVyYXRvciBwb3NpdGlvbiwgVmFsdWVUeXBlICYmdik7CisKKyAgLy8gSW5zZXJ0
IGEgcmFuZ2Ugb2YgdmFsdWVzIGludG8gdGhlIGJ0cmVlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW5wdXRJdGVyYXRvcj4KKyAgdm9pZCBpbnNlcnRfaXRlcmF0b3JfbXVsdGkoSW5wdXRJdGVyYXRv
ciBiLCBJbnB1dEl0ZXJhdG9yIGUpOworCisgIC8vIEVyYXNlIHRoZSBzcGVjaWZpZWQgaXRlcmF0
b3IgZnJvbSB0aGUgYnRyZWUuIFRoZSBpdGVyYXRvciBtdXN0IGJlIHZhbGlkCisgIC8vIChpLmUu
IG5vdCBlcXVhbCB0byBlbmQoKSkuICBSZXR1cm4gYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhl
IG5vZGUgYWZ0ZXIKKyAgLy8gdGhlIG9uZSB0aGF0IHdhcyBlcmFzZWQgKG9yIGVuZCgpIGlmIG5v
bmUgZXhpc3RzKS4KKyAgLy8gUmVxdWlyZW1lbnQ6IGRvZXMgbm90IHJlYWQgdGhlIHZhbHVlIGF0
IGAqaXRlcmAuCisgIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIGl0ZXIpOworCisgIC8vIEVyYXNl
cyByYW5nZS4gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGtleXMgZXJhc2VkIGFuZCBhbiBpdGVyYXRv
ciBwb2ludGluZworICAvLyB0byB0aGUgZWxlbWVudCBhZnRlciB0aGUgbGFzdCBlcmFzZWQgZWxl
bWVudC4KKyAgc3RkOjpwYWlyPHNpemVfdHlwZSwgaXRlcmF0b3I+IGVyYXNlKGl0ZXJhdG9yIGJl
Z2luLCBpdGVyYXRvciBlbmQpOworCisgIC8vIEVyYXNlcyB0aGUgc3BlY2lmaWVkIGtleSBmcm9t
IHRoZSBidHJlZS4gUmV0dXJucyAxIGlmIGFuIGVsZW1lbnQgd2FzCisgIC8vIGVyYXNlZCBhbmQg
MCBvdGhlcndpc2UuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgorICBzaXplX3R5cGUgZXJhc2Vf
dW5pcXVlKGNvbnN0IEsgJmtleSk7CisKKyAgLy8gRXJhc2VzIGFsbCBvZiB0aGUgZW50cmllcyBt
YXRjaGluZyB0aGUgc3BlY2lmaWVkIGtleSBmcm9tIHRoZQorICAvLyBidHJlZS4gUmV0dXJucyB0
aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVyYXNlZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+Cisg
IHNpemVfdHlwZSBlcmFzZV9tdWx0aShjb25zdCBLICZrZXkpOworCisgIC8vIEZpbmRzIHRoZSBp
dGVyYXRvciBjb3JyZXNwb25kaW5nIHRvIGEga2V5IG9yIHJldHVybnMgZW5kKCkgaWYgdGhlIGtl
eSBpcworICAvLyBub3QgcHJlc2VudC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIGl0ZXJh
dG9yIGZpbmQoY29uc3QgSyAma2V5KSB7CisgICAgcmV0dXJuIGludGVybmFsX2VuZChpbnRlcm5h
bF9maW5kKGtleSkpOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgorICBjb25zdF9pdGVy
YXRvciBmaW5kKGNvbnN0IEsgJmtleSkgY29uc3QgeworICAgIHJldHVybiBpbnRlcm5hbF9lbmQo
aW50ZXJuYWxfZmluZChrZXkpKTsKKyAgfQorCisgIC8vIFJldHVybnMgYSBjb3VudCBvZiB0aGUg
bnVtYmVyIG9mIHRpbWVzIHRoZSBrZXkgYXBwZWFycyBpbiB0aGUgYnRyZWUuCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBLPgorICBzaXplX3R5cGUgY291bnRfdW5pcXVlKGNvbnN0IEsgJmtleSkgY29u
c3QgeworICAgIGNvbnN0IGl0ZXJhdG9yIGJlZ2luID0gaW50ZXJuYWxfZmluZChrZXkpOworICAg
IGlmIChiZWdpbi5ub2RlID09IG51bGxwdHIpIHsKKyAgICAgIC8vIFRoZSBrZXkgZG9lc24ndCBl
eGlzdCBpbiB0aGUgdHJlZS4KKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsK
KyAgfQorICAvLyBSZXR1cm5zIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUga2V5
IGFwcGVhcnMgaW4gdGhlIGJ0cmVlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgc2l6ZV90
eXBlIGNvdW50X211bHRpKGNvbnN0IEsgJmtleSkgY29uc3QgeworICAgIGNvbnN0IGF1dG8gcmFu
Z2UgPSBlcXVhbF9yYW5nZShrZXkpOworICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKHJhbmdlLmZp
cnN0LCByYW5nZS5zZWNvbmQpOworICB9CisKKyAgLy8gQ2xlYXIgdGhlIGJ0cmVlLCBkZWxldGlu
ZyBhbGwgb2YgdGhlIHZhbHVlcyBpdCBjb250YWlucy4KKyAgdm9pZCBjbGVhcigpOworCisgIC8v
IFN3YXAgdGhlIGNvbnRlbnRzIG9mICp0aGlzIGFuZCB4LgorICB2b2lkIHN3YXAoYnRyZWUgJngp
OworCisgIGNvbnN0IGtleV9jb21wYXJlICZrZXlfY29tcCgpIGNvbnN0IG5vZXhjZXB0IHsKKyAg
ICByZXR1cm4gcm9vdF8udGVtcGxhdGUgZ2V0PDA+KCk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEssIHR5cGVuYW1lIExLPgorICBib29sIGNvbXBhcmVfa2V5cyhjb25zdCBLICZ4LCBjb25z
dCBMSyAmeSkgY29uc3QgeworICAgIHJldHVybiBjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jl
c3VsdF9hc19sZXNzX3RoYW4oa2V5X2NvbXAoKSh4LCB5KSk7CisgIH0KKworICB2YWx1ZV9jb21w
YXJlIHZhbHVlX2NvbXAoKSBjb25zdCB7IHJldHVybiB2YWx1ZV9jb21wYXJlKGtleV9jb21wKCkp
OyB9CisKKyAgLy8gVmVyaWZpZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgYnRyZWUuCisgIHZvaWQg
dmVyaWZ5KCkgY29uc3Q7CisKKyAgLy8gU2l6ZSByb3V0aW5lcy4KKyAgc2l6ZV90eXBlIHNpemUo
KSBjb25zdCB7IHJldHVybiBzaXplXzsgfQorICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7
IHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3R5cGU+OjptYXgpKCk7IH0KKyAgYm9v
bCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHNpemVfID09IDA7IH0KKworICAvLyBUaGUgaGVpZ2h0
IG9mIHRoZSBidHJlZS4gQW4gZW1wdHkgdHJlZSB3aWxsIGhhdmUgaGVpZ2h0IDAuCisgIHNpemVf
dHlwZSBoZWlnaHQoKSBjb25zdCB7CisgICAgc2l6ZV90eXBlIGggPSAwOworICAgIGlmIChyb290
KCkpIHsKKyAgICAgIC8vIENvdW50IHRoZSBsZW5ndGggb2YgdGhlIGNoYWluIGZyb20gdGhlIGxl
ZnRtb3N0IG5vZGUgdXAgdG8gdGhlCisgICAgICAvLyByb290LiBXZSBhY3R1YWxseSBjb3VudCBm
cm9tIHRoZSByb290IGJhY2sgYXJvdW5kIHRvIHRoZSBsZXZlbCBiZWxvdworICAgICAgLy8gdGhl
IHJvb3QsIGJ1dCB0aGUgY2FsY3VsYXRpb24gaXMgdGhlIHNhbWUgYmVjYXVzZSBvZiB0aGUgY2ly
Y3VsYXJpdHkKKyAgICAgIC8vIG9mIHRoYXQgdHJhdmVyc2FsLgorICAgICAgY29uc3Qgbm9kZV90
eXBlICpuID0gcm9vdCgpOworICAgICAgZG8geworICAgICAgICArK2g7CisgICAgICAgIG4gPSBu
LT5wYXJlbnQoKTsKKyAgICAgIH0gd2hpbGUgKG4gIT0gcm9vdCgpKTsKKyAgICB9CisgICAgcmV0
dXJuIGg7CisgIH0KKworICAvLyBUaGUgbnVtYmVyIG9mIGludGVybmFsLCBsZWFmIGFuZCB0b3Rh
bCBub2RlcyB1c2VkIGJ5IHRoZSBidHJlZS4KKyAgc2l6ZV90eXBlIGxlYWZfbm9kZXMoKSBjb25z
dCB7CisgICAgcmV0dXJuIGludGVybmFsX3N0YXRzKHJvb3QoKSkubGVhZl9ub2RlczsKKyAgfQor
ICBzaXplX3R5cGUgaW50ZXJuYWxfbm9kZXMoKSBjb25zdCB7CisgICAgcmV0dXJuIGludGVybmFs
X3N0YXRzKHJvb3QoKSkuaW50ZXJuYWxfbm9kZXM7CisgIH0KKyAgc2l6ZV90eXBlIG5vZGVzKCkg
Y29uc3QgeworICAgIG5vZGVfc3RhdHMgc3RhdHMgPSBpbnRlcm5hbF9zdGF0cyhyb290KCkpOwor
ICAgIHJldHVybiBzdGF0cy5sZWFmX25vZGVzICsgc3RhdHMuaW50ZXJuYWxfbm9kZXM7CisgIH0K
KworICAvLyBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgYnkgdGhlIGJ0cmVlLgorICBz
aXplX3R5cGUgYnl0ZXNfdXNlZCgpIGNvbnN0IHsKKyAgICBub2RlX3N0YXRzIHN0YXRzID0gaW50
ZXJuYWxfc3RhdHMocm9vdCgpKTsKKyAgICBpZiAoc3RhdHMubGVhZl9ub2RlcyA9PSAxICYmIHN0
YXRzLmludGVybmFsX25vZGVzID09IDApIHsKKyAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpICsK
KyAgICAgICAgICAgICBub2RlX3R5cGU6OkxlYWZTaXplKHJvb3QoKS0+bWF4X2NvdW50KCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKSArCisgICAgICAgICAgICAg
c3RhdHMubGVhZl9ub2RlcyAqIG5vZGVfdHlwZTo6TGVhZlNpemUoKSArCisgICAgICAgICAgICAg
c3RhdHMuaW50ZXJuYWxfbm9kZXMgKiBub2RlX3R5cGU6OkludGVybmFsU2l6ZSgpOworICAgIH0K
KyAgfQorCisgIC8vIFRoZSBhdmVyYWdlIG51bWJlciBvZiBieXRlcyB1c2VkIHBlciB2YWx1ZSBz
dG9yZWQgaW4gdGhlIGJ0cmVlLgorICBzdGF0aWMgZG91YmxlIGF2ZXJhZ2VfYnl0ZXNfcGVyX3Zh
bHVlKCkgeworICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBwZXIgdmFsdWUgb24g
YSBsZWFmIG5vZGUgdGhhdCBpcyA3NSUKKyAgICAvLyBmdWxsLiBFeHBlcmltZW50YWxseSwgdGhp
cyBtYXRjaGVzIHVwIG5pY2VseSB3aXRoIHRoZSBjb21wdXRlZCBudW1iZXIgb2YKKyAgICAvLyBi
eXRlcyBwZXIgdmFsdWUgaW4gdHJlZXMgdGhhdCBoYWQgdGhlaXIgdmFsdWVzIGluc2VydGVkIGlu
IHJhbmRvbSBvcmRlci4KKyAgICByZXR1cm4gbm9kZV90eXBlOjpMZWFmU2l6ZSgpIC8gKGtOb2Rl
VmFsdWVzICogMC43NSk7CisgIH0KKworICAvLyBUaGUgZnVsbG5lc3Mgb2YgdGhlIGJ0cmVlLiBD
b21wdXRlZCBhcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBidHJlZQorICAvLyBkaXZp
ZGVkIGJ5IHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBhIHRyZWUgd2l0aCB0aGUgY3Vy
cmVudCBudW1iZXIKKyAgLy8gb2Ygbm9kZXMgY291bGQgaG9sZC4gQSB2YWx1ZSBvZiAxIGluZGlj
YXRlcyBwZXJmZWN0IHNwYWNlCisgIC8vIHV0aWxpemF0aW9uLiBTbWFsbGVyIHZhbHVlcyBpbmRp
Y2F0ZSBzcGFjZSB3YXN0YWdlLgorICBkb3VibGUgZnVsbG5lc3MoKSBjb25zdCB7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oc2l6ZSgpKSAvIChub2RlcygpICoga05vZGVWYWx1ZXMp
OworICB9CisgIC8vIFRoZSBvdmVyaGVhZCBvZiB0aGUgYnRyZWUgc3RydWN0dXJlIGluIGJ5dGVz
IHBlciBub2RlLiBDb21wdXRlZCBhcyB0aGUKKyAgLy8gdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHVz
ZWQgYnkgdGhlIGJ0cmVlIG1pbnVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3IKKyAgLy8g
c3RvcmluZyBlbGVtZW50cyBkaXZpZGVkIGJ5IHRoZSBudW1iZXIgb2YgZWxlbWVudHMuCisgIGRv
dWJsZSBvdmVyaGVhZCgpIGNvbnN0IHsKKyAgICBpZiAoZW1wdHkoKSkgeworICAgICAgcmV0dXJu
IDAuMDsKKyAgICB9CisgICAgcmV0dXJuIChieXRlc191c2VkKCkgLSBzaXplKCkgKiBzaXplb2Yo
dmFsdWVfdHlwZSkpIC8KKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihzaXplKCkpOwor
ICB9CisKKyAgLy8gVGhlIGFsbG9jYXRvciB1c2VkIGJ5IHRoZSBidHJlZS4KKyAgYWxsb2NhdG9y
X3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IHsKKyAgICByZXR1cm4gYWxsb2NhdG9yKCk7Cisg
IH0KKworIHByaXZhdGU6CisgIC8vIEludGVybmFsIGFjY2Vzc29yIHJvdXRpbmVzLgorICBub2Rl
X3R5cGUgKnJvb3QoKSB7IHJldHVybiByb290Xy50ZW1wbGF0ZSBnZXQ8Mj4oKTsgfQorICBjb25z
dCBub2RlX3R5cGUgKnJvb3QoKSBjb25zdCB7IHJldHVybiByb290Xy50ZW1wbGF0ZSBnZXQ8Mj4o
KTsgfQorICBub2RlX3R5cGUgKiZtdXRhYmxlX3Jvb3QoKSBub2V4Y2VwdCB7IHJldHVybiByb290
Xy50ZW1wbGF0ZSBnZXQ8Mj4oKTsgfQorICBrZXlfY29tcGFyZSAqbXV0YWJsZV9rZXlfY29tcCgp
IG5vZXhjZXB0IHsgcmV0dXJuICZyb290Xy50ZW1wbGF0ZSBnZXQ8MD4oKTsgfQorCisgIC8vIFRo
ZSBsZWZ0bW9zdCBub2RlIGlzIHN0b3JlZCBhcyB0aGUgcGFyZW50IG9mIHRoZSByb290IG5vZGUu
CisgIG5vZGVfdHlwZSAqbGVmdG1vc3QoKSB7IHJldHVybiByb290KCktPnBhcmVudCgpOyB9Cisg
IGNvbnN0IG5vZGVfdHlwZSAqbGVmdG1vc3QoKSBjb25zdCB7IHJldHVybiByb290KCktPnBhcmVu
dCgpOyB9CisKKyAgLy8gQWxsb2NhdG9yIHJvdXRpbmVzLgorICBhbGxvY2F0b3JfdHlwZSAqbXV0
YWJsZV9hbGxvY2F0b3IoKSBub2V4Y2VwdCB7CisgICAgcmV0dXJuICZyb290Xy50ZW1wbGF0ZSBn
ZXQ8MT4oKTsKKyAgfQorICBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYWxsb2NhdG9yKCkgY29uc3Qg
bm9leGNlcHQgeworICAgIHJldHVybiByb290Xy50ZW1wbGF0ZSBnZXQ8MT4oKTsKKyAgfQorCisg
IC8vIEFsbG9jYXRlcyBhIGNvcnJlY3RseSBhbGlnbmVkIG5vZGUgb2YgYXQgbGVhc3Qgc2l6ZSBi
eXRlcyB1c2luZyB0aGUKKyAgLy8gYWxsb2NhdG9yLgorICBub2RlX3R5cGUgKmFsbG9jYXRlKGNv
bnN0IHNpemVfdHlwZSBzaXplKSB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8bm9kZV90
eXBlICo+KAorICAgICAgICBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkFsbG9jYXRlPG5vZGVf
dHlwZTo6QWxpZ25tZW50KCk+KAorICAgICAgICAgICAgbXV0YWJsZV9hbGxvY2F0b3IoKSwgc2l6
ZSkpOworICB9CisKKyAgLy8gTm9kZSBjcmVhdGlvbi9kZWxldGlvbiByb3V0aW5lcy4KKyAgbm9k
ZV90eXBlKiBuZXdfaW50ZXJuYWxfbm9kZShub2RlX3R5cGUgKnBhcmVudCkgeworICAgIG5vZGVf
dHlwZSAqcCA9IGFsbG9jYXRlKG5vZGVfdHlwZTo6SW50ZXJuYWxTaXplKCkpOworICAgIHJldHVy
biBub2RlX3R5cGU6OmluaXRfaW50ZXJuYWwocCwgcGFyZW50KTsKKyAgfQorICBub2RlX3R5cGUq
IG5ld19sZWFmX25vZGUobm9kZV90eXBlICpwYXJlbnQpIHsKKyAgICBub2RlX3R5cGUgKnAgPSBh
bGxvY2F0ZShub2RlX3R5cGU6OkxlYWZTaXplKCkpOworICAgIHJldHVybiBub2RlX3R5cGU6Omlu
aXRfbGVhZihwLCBwYXJlbnQsIGtOb2RlVmFsdWVzKTsKKyAgfQorICBub2RlX3R5cGUgKm5ld19s
ZWFmX3Jvb3Rfbm9kZShjb25zdCBpbnQgbWF4X2NvdW50KSB7CisgICAgbm9kZV90eXBlICpwID0g
YWxsb2NhdGUobm9kZV90eXBlOjpMZWFmU2l6ZShtYXhfY291bnQpKTsKKyAgICByZXR1cm4gbm9k
ZV90eXBlOjppbml0X2xlYWYocCwgcCwgbWF4X2NvdW50KTsKKyAgfQorCisgIC8vIERlbGV0aW9u
IGhlbHBlciByb3V0aW5lcy4KKyAgdm9pZCBlcmFzZV9zYW1lX25vZGUoaXRlcmF0b3IgYmVnaW4s
IGl0ZXJhdG9yIGVuZCk7CisgIGl0ZXJhdG9yIGVyYXNlX2Zyb21fbGVhZl9ub2RlKGl0ZXJhdG9y
IGJlZ2luLCBzaXplX3R5cGUgdG9fZXJhc2UpOworICBpdGVyYXRvciByZWJhbGFuY2VfYWZ0ZXJf
ZGVsZXRlKGl0ZXJhdG9yIGl0ZXIpOworCisgIC8vIERlYWxsb2NhdGVzIGEgbm9kZSBvZiBhIGNl
cnRhaW4gc2l6ZSBpbiBieXRlcyB1c2luZyB0aGUgYWxsb2NhdG9yLgorICB2b2lkIGRlYWxsb2Nh
dGUoY29uc3Qgc2l6ZV90eXBlIHNpemUsIG5vZGVfdHlwZSAqbm9kZSkgeworICAgIGFic2w6OmNv
bnRhaW5lcl9pbnRlcm5hbDo6RGVhbGxvY2F0ZTxub2RlX3R5cGU6OkFsaWdubWVudCgpPigKKyAg
ICAgICAgbXV0YWJsZV9hbGxvY2F0b3IoKSwgbm9kZSwgc2l6ZSk7CisgIH0KKworICB2b2lkIGRl
bGV0ZV9pbnRlcm5hbF9ub2RlKG5vZGVfdHlwZSAqbm9kZSkgeworICAgIG5vZGUtPmRlc3Ryb3ko
bXV0YWJsZV9hbGxvY2F0b3IoKSk7CisgICAgZGVhbGxvY2F0ZShub2RlX3R5cGU6OkludGVybmFs
U2l6ZSgpLCBub2RlKTsKKyAgfQorICB2b2lkIGRlbGV0ZV9sZWFmX25vZGUobm9kZV90eXBlICpu
b2RlKSB7CisgICAgbm9kZS0+ZGVzdHJveShtdXRhYmxlX2FsbG9jYXRvcigpKTsKKyAgICBkZWFs
bG9jYXRlKG5vZGVfdHlwZTo6TGVhZlNpemUobm9kZS0+bWF4X2NvdW50KCkpLCBub2RlKTsKKyAg
fQorCisgIC8vIFJlYmFsYW5jZXMgb3Igc3BsaXRzIHRoZSBub2RlIGl0ZXIgcG9pbnRzIHRvLgor
ICB2b2lkIHJlYmFsYW5jZV9vcl9zcGxpdChpdGVyYXRvciAqaXRlcik7CisKKyAgLy8gTWVyZ2Vz
IHRoZSB2YWx1ZXMgb2YgbGVmdCwgcmlnaHQgYW5kIHRoZSBkZWxpbWl0aW5nIGtleSBvbiB0aGVp
ciBwYXJlbnQKKyAgLy8gb250byBsZWZ0LCByZW1vdmluZyB0aGUgZGVsaW1pdGluZyBrZXkgYW5k
IGRlbGV0aW5nIHJpZ2h0LgorICB2b2lkIG1lcmdlX25vZGVzKG5vZGVfdHlwZSAqbGVmdCwgbm9k
ZV90eXBlICpyaWdodCk7CisKKyAgLy8gVHJpZXMgdG8gbWVyZ2Ugbm9kZSB3aXRoIGl0cyBsZWZ0
IG9yIHJpZ2h0IHNpYmxpbmcsIGFuZCBmYWlsaW5nIHRoYXQsCisgIC8vIHJlYmFsYW5jZSB3aXRo
IGl0cyBsZWZ0IG9yIHJpZ2h0IHNpYmxpbmcuIFJldHVybnMgdHJ1ZSBpZiBhIG1lcmdlCisgIC8v
IG9jY3VycmVkLCBhdCB3aGljaCBwb2ludCBpdCBpcyBubyBsb25nZXIgdmFsaWQgdG8gYWNjZXNz
IG5vZGUuIFJldHVybnMKKyAgLy8gZmFsc2UgaWYgbm8gbWVyZ2luZyB0b29rIHBsYWNlLgorICBi
b29sIHRyeV9tZXJnZV9vcl9yZWJhbGFuY2UoaXRlcmF0b3IgKml0ZXIpOworCisgIC8vIFRyaWVz
IHRvIHNocmluayB0aGUgaGVpZ2h0IG9mIHRoZSB0cmVlIGJ5IDEuCisgIHZvaWQgdHJ5X3Nocmlu
aygpOworCisgIGl0ZXJhdG9yIGludGVybmFsX2VuZChpdGVyYXRvciBpdGVyKSB7CisgICAgcmV0
dXJuIGl0ZXIubm9kZSAhPSBudWxscHRyID8gaXRlciA6IGVuZCgpOworICB9CisgIGNvbnN0X2l0
ZXJhdG9yIGludGVybmFsX2VuZChjb25zdF9pdGVyYXRvciBpdGVyKSBjb25zdCB7CisgICAgcmV0
dXJuIGl0ZXIubm9kZSAhPSBudWxscHRyID8gaXRlciA6IGVuZCgpOworICB9CisKKyAgLy8gRW1w
bGFjZXMgYSB2YWx1ZSBpbnRvIHRoZSBidHJlZSBpbW1lZGlhdGVseSBiZWZvcmUgaXRlci4gUmVx
dWlyZXMgdGhhdAorICAvLyBrZXkodikgPD0gaXRlci5rZXkoKSBhbmQgKC0taXRlcikua2V5KCkg
PD0ga2V5KHYpLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgaXRlcmF0b3IgaW50
ZXJuYWxfZW1wbGFjZShpdGVyYXRvciBpdGVyLCBBcmdzICYmLi4uIGFyZ3MpOworCisgIC8vIFJl
dHVybnMgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IHZhbHVlID49IHRoZSB2YWx1
ZSAiaXRlciIgaXMKKyAgLy8gcG9pbnRpbmcgYXQuIE5vdGUgdGhhdCAiaXRlciIgbWlnaHQgYmUg
cG9pbnRpbmcgdG8gYW4gaW52YWxpZCBsb2NhdGlvbiBhcworICAvLyBpdGVyLnBvc2l0aW9uID09
IGl0ZXIubm9kZS0+Y291bnQoKS4gVGhpcyByb3V0aW5lIHNpbXBseSBtb3ZlcyBpdGVyIHVwIGlu
CisgIC8vIHRoZSB0cmVlIHRvIGEgdmFsaWQgbG9jYXRpb24uCisgIC8vIFJlcXVpcmVzOiBpdGVy
Lm5vZGUgaXMgbm9uLW51bGwuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyVHlwZT4KKyAgc3Rh
dGljIEl0ZXJUeXBlIGludGVybmFsX2xhc3QoSXRlclR5cGUgaXRlcik7CisKKyAgLy8gUmV0dXJu
cyBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgbGVhZiBwb3NpdGlvbiBhdCB3aGljaCBrZXkg
d291bGQKKyAgLy8gcmVzaWRlIGluIHRoZSB0cmVlLiBXZSBwcm92aWRlIDIgdmVyc2lvbnMgb2Yg
aW50ZXJuYWxfbG9jYXRlLiBUaGUgZmlyc3QKKyAgLy8gdmVyc2lvbiB1c2VzIGEgbGVzcy10aGFu
IGNvbXBhcmF0b3IgYW5kIGlzIGluY2FwYWJsZSBvZiBkaXN0aW5ndWlzaGluZyB3aGVuCisgIC8v
IHRoZXJlIGlzIGFuIGV4YWN0IG1hdGNoLiBUaGUgc2Vjb25kIHZlcnNpb24gaXMgZm9yIHRoZSBr
ZXktY29tcGFyZS10bworICAvLyBzcGVjaWFsaXphdGlvbiBhbmQgZGlzdGluZ3Vpc2hlcyBleGFj
dCBtYXRjaGVzLiBUaGUga2V5LWNvbXBhcmUtdG8KKyAgLy8gc3BlY2lhbGl6YXRpb24gYWxsb3dz
IHRoZSBjYWxsZXIgdG8gYXZvaWQgYSBzdWJzZXF1ZW50IGNvbXBhcmlzb24gdG8KKyAgLy8gZGV0
ZXJtaW5lIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyBtYWRlLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9y
IGtleXMgd2l0aAorICAvLyBleHBlbnNpdmUgY29tcGFyaXNvbiwgc3VjaCBhcyBzdHJpbmdzLgor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KKyAgU2VhcmNoUmVzdWx0PGl0ZXJhdG9yLCBpc19rZXlf
Y29tcGFyZV90bzo6dmFsdWU+IGludGVybmFsX2xvY2F0ZSgKKyAgICAgIGNvbnN0IEsgJmtleSkg
Y29uc3Q7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+CisgIFNlYXJjaFJlc3VsdDxpdGVyYXRv
ciwgZmFsc2U+IGludGVybmFsX2xvY2F0ZV9pbXBsKAorICAgICAgY29uc3QgSyAma2V5LCBzdGQ6
OmZhbHNlX3R5cGUgLyogSXNDb21wYXJlVG8gKi8pIGNvbnN0OworCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBLPgorICBTZWFyY2hSZXN1bHQ8aXRlcmF0b3IsIHRydWU+IGludGVybmFsX2xvY2F0ZV9p
bXBsKAorICAgICAgY29uc3QgSyAma2V5LCBzdGQ6OnRydWVfdHlwZSAvKiBJc0NvbXBhcmVUbyAq
LykgY29uc3Q7CisKKyAgLy8gSW50ZXJuYWwgcm91dGluZSB3aGljaCBpbXBsZW1lbnRzIGxvd2Vy
X2JvdW5kKCkuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgorICBpdGVyYXRvciBpbnRlcm5hbF9s
b3dlcl9ib3VuZChjb25zdCBLICZrZXkpIGNvbnN0OworCisgIC8vIEludGVybmFsIHJvdXRpbmUg
d2hpY2ggaW1wbGVtZW50cyB1cHBlcl9ib3VuZCgpLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4K
KyAgaXRlcmF0b3IgaW50ZXJuYWxfdXBwZXJfYm91bmQoY29uc3QgSyAma2V5KSBjb25zdDsKKwor
ICAvLyBJbnRlcm5hbCByb3V0aW5lIHdoaWNoIGltcGxlbWVudHMgZmluZCgpLgorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSz4KKyAgaXRlcmF0b3IgaW50ZXJuYWxfZmluZChjb25zdCBLICZrZXkpIGNv
bnN0OworCisgIC8vIERlbGV0ZXMgYSBub2RlIGFuZCBhbGwgb2YgaXRzIGNoaWxkcmVuLgorICB2
b2lkIGludGVybmFsX2NsZWFyKG5vZGVfdHlwZSAqbm9kZSk7CisKKyAgLy8gVmVyaWZpZXMgdGhl
IHRyZWUgc3RydWN0dXJlIG9mIG5vZGUuCisgIGludCBpbnRlcm5hbF92ZXJpZnkoY29uc3Qgbm9k
ZV90eXBlICpub2RlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleV90eXBlICpsbywg
Y29uc3Qga2V5X3R5cGUgKmhpKSBjb25zdDsKKworICBub2RlX3N0YXRzIGludGVybmFsX3N0YXRz
KGNvbnN0IG5vZGVfdHlwZSAqbm9kZSkgY29uc3QgeworICAgIC8vIFRoZSByb290IGNhbiBiZSBh
IHN0YXRpYyBlbXB0eSBub2RlLgorICAgIGlmIChub2RlID09IG51bGxwdHIgfHwgKG5vZGUgPT0g
cm9vdCgpICYmIGVtcHR5KCkpKSB7CisgICAgICByZXR1cm4gbm9kZV9zdGF0cygwLCAwKTsKKyAg
ICB9CisgICAgaWYgKG5vZGUtPmxlYWYoKSkgeworICAgICAgcmV0dXJuIG5vZGVfc3RhdHMoMSwg
MCk7CisgICAgfQorICAgIG5vZGVfc3RhdHMgcmVzKDAsIDEpOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDw9IG5vZGUtPmNvdW50KCk7ICsraSkgeworICAgICAgcmVzICs9IGludGVybmFsX3N0YXRz
KG5vZGUtPmNoaWxkKGkpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKKyAgfQorCisgcHVibGlj
OgorICAvLyBFeHBvc2VkIG9ubHkgZm9yIHRlc3RzLgorICBzdGF0aWMgYm9vbCB0ZXN0b25seV91
c2VzX2xpbmVhcl9ub2RlX3NlYXJjaCgpIHsKKyAgICByZXR1cm4gbm9kZV90eXBlOjp0ZXN0b25s
eV91c2VzX2xpbmVhcl9ub2RlX3NlYXJjaCgpOworICB9CisKKyBwcml2YXRlOgorICAvLyBXZSB1
c2UgY29tcHJlc3NlZCB0dXBsZSBpbiBvcmRlciB0byBzYXZlIHNwYWNlIGJlY2F1c2Uga2V5X2Nv
bXBhcmUgYW5kCisgIC8vIGFsbG9jYXRvcl90eXBlIGFyZSB1c3VhbGx5IGVtcHR5LgorICBhYnNs
Ojpjb250YWluZXJfaW50ZXJuYWw6OkNvbXByZXNzZWRUdXBsZTxrZXlfY29tcGFyZSwgYWxsb2Nh
dG9yX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGVfdHlwZSAqPgorICAgICAgcm9vdF87CisKKyAgLy8gQSBwb2ludGVyIHRvIHRoZSByaWdodG1v
c3Qgbm9kZS4gTm90ZSB0aGF0IHRoZSBsZWZ0bW9zdCBub2RlIGlzIHN0b3JlZCBhcworICAvLyB0
aGUgcm9vdCdzIHBhcmVudC4KKyAgbm9kZV90eXBlICpyaWdodG1vc3RfOworCisgIC8vIE51bWJl
ciBvZiB2YWx1ZXMuCisgIHNpemVfdHlwZSBzaXplXzsKK307CisKKy8vLy8KKy8vIGJ0cmVlX25v
ZGUgbWV0aG9kcwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KK2lubGluZSB2b2lkIGJ0cmVlX25vZGU8UD46OmVtcGxhY2VfdmFsdWUoY29uc3Qgc2l6
ZV90eXBlIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9j
YXRvcl90eXBlICphbGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQXJncyAmJi4uLiBhcmdzKSB7CisgIGFzc2VydChpIDw9IGNvdW50KCkpOworICAvLyBTaGlm
dCBvbGQgdmFsdWVzIHRvIGNyZWF0ZSBzcGFjZSBmb3IgbmV3IHZhbHVlIGFuZCB0aGVuIGNvbnN0
cnVjdCBpdCBpbgorICAvLyBwbGFjZS4KKyAgaWYgKGkgPCBjb3VudCgpKSB7CisgICAgdmFsdWVf
aW5pdChjb3VudCgpLCBhbGxvYywgc2xvdChjb3VudCgpIC0gMSkpOworICAgIGZvciAoc2l6ZV90
eXBlIGogPSBjb3VudCgpIC0gMTsgaiA+IGk7IC0taikKKyAgICAgIHBhcmFtc190eXBlOjptb3Zl
KGFsbG9jLCBzbG90KGogLSAxKSwgc2xvdChqKSk7CisgICAgdmFsdWVfZGVzdHJveShpLCBhbGxv
Yyk7CisgIH0KKyAgdmFsdWVfaW5pdChpLCBhbGxvYywgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgc2V0X2NvdW50KGNvdW50KCkgKyAxKTsKKworICBpZiAoIWxlYWYoKSAmJiBjb3Vu
dCgpID4gaSArIDEpIHsKKyAgICBmb3IgKGludCBqID0gY291bnQoKTsgaiA+IGkgKyAxOyAtLWop
IHsKKyAgICAgIHNldF9jaGlsZChqLCBjaGlsZChqIC0gMSkpOworICAgIH0KKyAgICBjbGVhcl9j
aGlsZChpICsgMSk7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+CitpbmxpbmUgdm9p
ZCBidHJlZV9ub2RlPFA+OjpyZW1vdmVfdmFsdWUoY29uc3QgaW50IGksIGFsbG9jYXRvcl90eXBl
ICphbGxvYykgeworICBpZiAoIWxlYWYoKSAmJiBjb3VudCgpID4gaSArIDEpIHsKKyAgICBhc3Nl
cnQoY2hpbGQoaSArIDEpLT5jb3VudCgpID09IDApOworICAgIGZvciAoc2l6ZV90eXBlIGogPSBp
ICsgMTsgaiA8IGNvdW50KCk7ICsraikgeworICAgICAgc2V0X2NoaWxkKGosIGNoaWxkKGogKyAx
KSk7CisgICAgfQorICAgIGNsZWFyX2NoaWxkKGNvdW50KCkpOworICB9CisKKyAgcmVtb3ZlX3Zh
bHVlc19pZ25vcmVfY2hpbGRyZW4oaSwgLyp0b19lcmFzZT0qLzEsIGFsbG9jKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFA+CitpbmxpbmUgdm9pZCBidHJlZV9ub2RlPFA+OjpyZW1vdmVfdmFs
dWVzX2lnbm9yZV9jaGlsZHJlbigKKyAgICBjb25zdCBpbnQgaSwgY29uc3QgaW50IHRvX2VyYXNl
LCBhbGxvY2F0b3JfdHlwZSAqYWxsb2MpIHsKKyAgcGFyYW1zX3R5cGU6Om1vdmUoYWxsb2MsIHNs
b3QoaSArIHRvX2VyYXNlKSwgc2xvdChjb3VudCgpKSwgc2xvdChpKSk7CisgIHZhbHVlX2Rlc3Ry
b3lfbihjb3VudCgpIC0gdG9fZXJhc2UsIHRvX2VyYXNlLCBhbGxvYyk7CisgIHNldF9jb3VudChj
b3VudCgpIC0gdG9fZXJhc2UpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRy
ZWVfbm9kZTxQPjo6cmViYWxhbmNlX3JpZ2h0X3RvX2xlZnQoY29uc3QgaW50IHRvX21vdmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0cmVlX25vZGUgKnJp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0
b3JfdHlwZSAqYWxsb2MpIHsKKyAgYXNzZXJ0KHBhcmVudCgpID09IHJpZ2h0LT5wYXJlbnQoKSk7
CisgIGFzc2VydChwb3NpdGlvbigpICsgMSA9PSByaWdodC0+cG9zaXRpb24oKSk7CisgIGFzc2Vy
dChyaWdodC0+Y291bnQoKSA+PSBjb3VudCgpKTsKKyAgYXNzZXJ0KHRvX21vdmUgPj0gMSk7Cisg
IGFzc2VydCh0b19tb3ZlIDw9IHJpZ2h0LT5jb3VudCgpKTsKKworICAvLyAxKSBNb3ZlIHRoZSBk
ZWxpbWl0aW5nIHZhbHVlIGluIHRoZSBwYXJlbnQgdG8gdGhlIGxlZnQgbm9kZS4KKyAgdmFsdWVf
aW5pdChjb3VudCgpLCBhbGxvYywgcGFyZW50KCktPnNsb3QocG9zaXRpb24oKSkpOworCisgIC8v
IDIpIE1vdmUgdGhlICh0b19tb3ZlIC0gMSkgdmFsdWVzIGZyb20gdGhlIHJpZ2h0IG5vZGUgdG8g
dGhlIGxlZnQgbm9kZS4KKyAgcmlnaHQtPnVuaW5pdGlhbGl6ZWRfbW92ZV9uKHRvX21vdmUgLSAx
LCAwLCBjb3VudCgpICsgMSwgdGhpcywgYWxsb2MpOworCisgIC8vIDMpIE1vdmUgdGhlIG5ldyBk
ZWxpbWl0aW5nIHZhbHVlIHRvIHRoZSBwYXJlbnQgZnJvbSB0aGUgcmlnaHQgbm9kZS4KKyAgcGFy
YW1zX3R5cGU6Om1vdmUoYWxsb2MsIHJpZ2h0LT5zbG90KHRvX21vdmUgLSAxKSwKKyAgICAgICAg
ICAgICAgICAgICAgcGFyZW50KCktPnNsb3QocG9zaXRpb24oKSkpOworCisgIC8vIDQpIFNoaWZ0
IHRoZSB2YWx1ZXMgaW4gdGhlIHJpZ2h0IG5vZGUgdG8gdGhlaXIgY29ycmVjdCBwb3NpdGlvbi4K
KyAgcGFyYW1zX3R5cGU6Om1vdmUoYWxsb2MsIHJpZ2h0LT5zbG90KHRvX21vdmUpLCByaWdodC0+
c2xvdChyaWdodC0+Y291bnQoKSksCisgICAgICAgICAgICAgICAgICAgIHJpZ2h0LT5zbG90KDAp
KTsKKworICAvLyA1KSBEZXN0cm95IHRoZSBub3ctZW1wdHkgdG9fbW92ZSBlbnRyaWVzIGluIHRo
ZSByaWdodCBub2RlLgorICByaWdodC0+dmFsdWVfZGVzdHJveV9uKHJpZ2h0LT5jb3VudCgpIC0g
dG9fbW92ZSwgdG9fbW92ZSwgYWxsb2MpOworCisgIGlmICghbGVhZigpKSB7CisgICAgLy8gTW92
ZSB0aGUgY2hpbGQgcG9pbnRlcnMgZnJvbSB0aGUgcmlnaHQgdG8gdGhlIGxlZnQgbm9kZS4KKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHRvX21vdmU7ICsraSkgeworICAgICAgaW5pdF9jaGlsZChj
b3VudCgpICsgaSArIDEsIHJpZ2h0LT5jaGlsZChpKSk7CisgICAgfQorICAgIGZvciAoaW50IGkg
PSAwOyBpIDw9IHJpZ2h0LT5jb3VudCgpIC0gdG9fbW92ZTsgKytpKSB7CisgICAgICBhc3NlcnQo
aSArIHRvX21vdmUgPD0gcmlnaHQtPm1heF9jb3VudCgpKTsKKyAgICAgIHJpZ2h0LT5pbml0X2No
aWxkKGksIHJpZ2h0LT5jaGlsZChpICsgdG9fbW92ZSkpOworICAgICAgcmlnaHQtPmNsZWFyX2No
aWxkKGkgKyB0b19tb3ZlKTsKKyAgICB9CisgIH0KKworICAvLyBGaXh1cCB0aGUgY291bnRzIG9u
IHRoZSBsZWZ0IGFuZCByaWdodCBub2Rlcy4KKyAgc2V0X2NvdW50KGNvdW50KCkgKyB0b19tb3Zl
KTsKKyAgcmlnaHQtPnNldF9jb3VudChyaWdodC0+Y291bnQoKSAtIHRvX21vdmUpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWVfbm9kZTxQPjo6cmViYWxhbmNlX2xlZnRf
dG9fcmlnaHQoY29uc3QgaW50IHRvX21vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ0cmVlX25vZGUgKnJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHlwZSAqYWxsb2MpIHsKKyAgYXNzZXJ0
KHBhcmVudCgpID09IHJpZ2h0LT5wYXJlbnQoKSk7CisgIGFzc2VydChwb3NpdGlvbigpICsgMSA9
PSByaWdodC0+cG9zaXRpb24oKSk7CisgIGFzc2VydChjb3VudCgpID49IHJpZ2h0LT5jb3VudCgp
KTsKKyAgYXNzZXJ0KHRvX21vdmUgPj0gMSk7CisgIGFzc2VydCh0b19tb3ZlIDw9IGNvdW50KCkp
OworCisgIC8vIFZhbHVlcyBpbiB0aGUgcmlnaHQgbm9kZSBhcmUgc2hpZnRlZCB0byB0aGUgcmln
aHQgdG8gbWFrZSByb29tIGZvciB0aGUKKyAgLy8gbmV3IHRvX21vdmUgdmFsdWVzLiBUaGVuLCB0
aGUgZGVsaW1pdGluZyB2YWx1ZSBpbiB0aGUgcGFyZW50IGFuZCB0aGUKKyAgLy8gb3RoZXIgKHRv
X21vdmUgLSAxKSB2YWx1ZXMgaW4gdGhlIGxlZnQgbm9kZSBhcmUgbW92ZWQgaW50byB0aGUgcmln
aHQgbm9kZS4KKyAgLy8gTGFzdGx5LCBhIG5ldyBkZWxpbWl0aW5nIHZhbHVlIGlzIG1vdmVkIGZy
b20gdGhlIGxlZnQgbm9kZSBpbnRvIHRoZQorICAvLyBwYXJlbnQsIGFuZCB0aGUgcmVtYWluaW5n
IGVtcHR5IGxlZnQgbm9kZSBlbnRyaWVzIGFyZSBkZXN0cm95ZWQuCisKKyAgaWYgKHJpZ2h0LT5j
b3VudCgpID49IHRvX21vdmUpIHsKKyAgICAvLyBUaGUgb3JpZ2luYWwgbG9jYXRpb24gb2YgdGhl
IHJpZ2h0LT5jb3VudCgpIHZhbHVlcyBhcmUgc3VmZmljaWVudCB0byBob2xkCisgICAgLy8gdGhl
IG5ldyB0b19tb3ZlIGVudHJpZXMgZnJvbSB0aGUgcGFyZW50IGFuZCBsZWZ0IG5vZGUuCisKKyAg
ICAvLyAxKSBTaGlmdCBleGlzdGluZyB2YWx1ZXMgaW4gdGhlIHJpZ2h0IG5vZGUgdG8gdGhlaXIg
Y29ycmVjdCBwb3NpdGlvbnMuCisgICAgcmlnaHQtPnVuaW5pdGlhbGl6ZWRfbW92ZV9uKHRvX21v
dmUsIHJpZ2h0LT5jb3VudCgpIC0gdG9fbW92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmlnaHQtPmNvdW50KCksIHJpZ2h0LCBhbGxvYyk7CisgICAgZm9yIChzbG90X3R5cGUg
KnNyYyA9IHJpZ2h0LT5zbG90KHJpZ2h0LT5jb3VudCgpIC0gdG9fbW92ZSAtIDEpLAorICAgICAg
ICAgICAgICAgICAgICpkZXN0ID0gcmlnaHQtPnNsb3QocmlnaHQtPmNvdW50KCkgLSAxKSwKKyAg
ICAgICAgICAgICAgICAgICAqZW5kID0gcmlnaHQtPnNsb3QoMCk7CisgICAgICAgICBzcmMgPj0g
ZW5kOyAtLXNyYywgLS1kZXN0KSB7CisgICAgICBwYXJhbXNfdHlwZTo6bW92ZShhbGxvYywgc3Jj
LCBkZXN0KTsKKyAgICB9CisKKyAgICAvLyAyKSBNb3ZlIHRoZSBkZWxpbWl0aW5nIHZhbHVlIGlu
IHRoZSBwYXJlbnQgdG8gdGhlIHJpZ2h0IG5vZGUuCisgICAgcGFyYW1zX3R5cGU6Om1vdmUoYWxs
b2MsIHBhcmVudCgpLT5zbG90KHBvc2l0aW9uKCkpLAorICAgICAgICAgICAgICAgICAgICAgIHJp
Z2h0LT5zbG90KHRvX21vdmUgLSAxKSk7CisKKyAgICAvLyAzKSBNb3ZlIHRoZSAodG9fbW92ZSAt
IDEpIHZhbHVlcyBmcm9tIHRoZSBsZWZ0IG5vZGUgdG8gdGhlIHJpZ2h0IG5vZGUuCisgICAgcGFy
YW1zX3R5cGU6Om1vdmUoYWxsb2MsIHNsb3QoY291bnQoKSAtICh0b19tb3ZlIC0gMSkpLCBzbG90
KGNvdW50KCkpLAorICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0LT5zbG90KDApKTsKKyAgfSBl
bHNlIHsKKyAgICAvLyBUaGUgcmlnaHQgbm9kZSBkb2VzIG5vdCBoYXZlIGVub3VnaCBpbml0aWFs
aXplZCBzcGFjZSB0byBob2xkIHRoZSBuZXcKKyAgICAvLyB0b19tb3ZlIGVudHJpZXMsIHNvIHBh
cnQgb2YgdGhlbSB3aWxsIG1vdmUgdG8gdW5pbml0aWFsaXplZCBzcGFjZS4KKworICAgIC8vIDEp
IFNoaWZ0IGV4aXN0aW5nIHZhbHVlcyBpbiB0aGUgcmlnaHQgbm9kZSB0byB0aGVpciBjb3JyZWN0
IHBvc2l0aW9ucy4KKyAgICByaWdodC0+dW5pbml0aWFsaXplZF9tb3ZlX24ocmlnaHQtPmNvdW50
KCksIDAsIHRvX21vdmUsIHJpZ2h0LCBhbGxvYyk7CisKKyAgICAvLyAyKSBNb3ZlIHRoZSBkZWxp
bWl0aW5nIHZhbHVlIGluIHRoZSBwYXJlbnQgdG8gdGhlIHJpZ2h0IG5vZGUuCisgICAgcmlnaHQt
PnZhbHVlX2luaXQodG9fbW92ZSAtIDEsIGFsbG9jLCBwYXJlbnQoKS0+c2xvdChwb3NpdGlvbigp
KSk7CisKKyAgICAvLyAzKSBNb3ZlIHRoZSAodG9fbW92ZSAtIDEpIHZhbHVlcyBmcm9tIHRoZSBs
ZWZ0IG5vZGUgdG8gdGhlIHJpZ2h0IG5vZGUuCisgICAgY29uc3Qgc2l6ZV90eXBlIHVuaW5pdGlh
bGl6ZWRfcmVtYWluaW5nID0gdG9fbW92ZSAtIHJpZ2h0LT5jb3VudCgpIC0gMTsKKyAgICB1bmlu
aXRpYWxpemVkX21vdmVfbih1bmluaXRpYWxpemVkX3JlbWFpbmluZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjb3VudCgpIC0gdW5pbml0aWFsaXplZF9yZW1haW5pbmcsIHJpZ2h0LT5jb3Vu
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0LCBhbGxvYyk7CisgICAgcGFyYW1z
X3R5cGU6Om1vdmUoYWxsb2MsIHNsb3QoY291bnQoKSAtICh0b19tb3ZlIC0gMSkpLAorICAgICAg
ICAgICAgICAgICAgICAgIHNsb3QoY291bnQoKSAtIHVuaW5pdGlhbGl6ZWRfcmVtYWluaW5nKSwg
cmlnaHQtPnNsb3QoMCkpOworICB9CisKKyAgLy8gNCkgTW92ZSB0aGUgbmV3IGRlbGltaXRpbmcg
dmFsdWUgdG8gdGhlIHBhcmVudCBmcm9tIHRoZSBsZWZ0IG5vZGUuCisgIHBhcmFtc190eXBlOjpt
b3ZlKGFsbG9jLCBzbG90KGNvdW50KCkgLSB0b19tb3ZlKSwgcGFyZW50KCktPnNsb3QocG9zaXRp
b24oKSkpOworCisgIC8vIDUpIERlc3Ryb3kgdGhlIG5vdy1lbXB0eSB0b19tb3ZlIGVudHJpZXMg
aW4gdGhlIGxlZnQgbm9kZS4KKyAgdmFsdWVfZGVzdHJveV9uKGNvdW50KCkgLSB0b19tb3ZlLCB0
b19tb3ZlLCBhbGxvYyk7CisKKyAgaWYgKCFsZWFmKCkpIHsKKyAgICAvLyBNb3ZlIHRoZSBjaGls
ZCBwb2ludGVycyBmcm9tIHRoZSBsZWZ0IHRvIHRoZSByaWdodCBub2RlLgorICAgIGZvciAoaW50
IGkgPSByaWdodC0+Y291bnQoKTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgIHJpZ2h0LT5pbml0X2No
aWxkKGkgKyB0b19tb3ZlLCByaWdodC0+Y2hpbGQoaSkpOworICAgICAgcmlnaHQtPmNsZWFyX2No
aWxkKGkpOworICAgIH0KKyAgICBmb3IgKGludCBpID0gMTsgaSA8PSB0b19tb3ZlOyArK2kpIHsK
KyAgICAgIHJpZ2h0LT5pbml0X2NoaWxkKGkgLSAxLCBjaGlsZChjb3VudCgpIC0gdG9fbW92ZSAr
IGkpKTsKKyAgICAgIGNsZWFyX2NoaWxkKGNvdW50KCkgLSB0b19tb3ZlICsgaSk7CisgICAgfQor
ICB9CisKKyAgLy8gRml4dXAgdGhlIGNvdW50cyBvbiB0aGUgbGVmdCBhbmQgcmlnaHQgbm9kZXMu
CisgIHNldF9jb3VudChjb3VudCgpIC0gdG9fbW92ZSk7CisgIHJpZ2h0LT5zZXRfY291bnQocmln
aHQtPmNvdW50KCkgKyB0b19tb3ZlKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit2b2lk
IGJ0cmVlX25vZGU8UD46OnNwbGl0KGNvbnN0IGludCBpbnNlcnRfcG9zaXRpb24sIGJ0cmVlX25v
ZGUgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlICphbGxv
YykgeworICBhc3NlcnQoZGVzdC0+Y291bnQoKSA9PSAwKTsKKyAgYXNzZXJ0KG1heF9jb3VudCgp
ID09IGtOb2RlVmFsdWVzKTsKKworICAvLyBXZSBiaWFzIHRoZSBzcGxpdCBiYXNlZCBvbiB0aGUg
cG9zaXRpb24gYmVpbmcgaW5zZXJ0ZWQuIElmIHdlJ3JlCisgIC8vIGluc2VydGluZyBhdCB0aGUg
YmVnaW5uaW5nIG9mIHRoZSBsZWZ0IG5vZGUgdGhlbiBiaWFzIHRoZSBzcGxpdCB0byBwdXQKKyAg
Ly8gbW9yZSB2YWx1ZXMgb24gdGhlIHJpZ2h0IG5vZGUuIElmIHdlJ3JlIGluc2VydGluZyBhdCB0
aGUgZW5kIG9mIHRoZQorICAvLyByaWdodCBub2RlIHRoZW4gYmlhcyB0aGUgc3BsaXQgdG8gcHV0
IG1vcmUgdmFsdWVzIG9uIHRoZSBsZWZ0IG5vZGUuCisgIGlmIChpbnNlcnRfcG9zaXRpb24gPT0g
MCkgeworICAgIGRlc3QtPnNldF9jb3VudChjb3VudCgpIC0gMSk7CisgIH0gZWxzZSBpZiAoaW5z
ZXJ0X3Bvc2l0aW9uID09IGtOb2RlVmFsdWVzKSB7CisgICAgZGVzdC0+c2V0X2NvdW50KDApOwor
ICB9IGVsc2UgeworICAgIGRlc3QtPnNldF9jb3VudChjb3VudCgpIC8gMik7CisgIH0KKyAgc2V0
X2NvdW50KGNvdW50KCkgLSBkZXN0LT5jb3VudCgpKTsKKyAgYXNzZXJ0KGNvdW50KCkgPj0gMSk7
CisKKyAgLy8gTW92ZSB2YWx1ZXMgZnJvbSB0aGUgbGVmdCBzaWJsaW5nIHRvIHRoZSByaWdodCBz
aWJsaW5nLgorICB1bmluaXRpYWxpemVkX21vdmVfbihkZXN0LT5jb3VudCgpLCBjb3VudCgpLCAw
LCBkZXN0LCBhbGxvYyk7CisKKyAgLy8gRGVzdHJveSB0aGUgbm93LWVtcHR5IGVudHJpZXMgaW4g
dGhlIGxlZnQgbm9kZS4KKyAgdmFsdWVfZGVzdHJveV9uKGNvdW50KCksIGRlc3QtPmNvdW50KCks
IGFsbG9jKTsKKworICAvLyBUaGUgc3BsaXQga2V5IGlzIHRoZSBsYXJnZXN0IHZhbHVlIGluIHRo
ZSBsZWZ0IHNpYmxpbmcuCisgIHNldF9jb3VudChjb3VudCgpIC0gMSk7CisgIHBhcmVudCgpLT5l
bXBsYWNlX3ZhbHVlKHBvc2l0aW9uKCksIGFsbG9jLCBzbG90KGNvdW50KCkpKTsKKyAgdmFsdWVf
ZGVzdHJveShjb3VudCgpLCBhbGxvYyk7CisgIHBhcmVudCgpLT5pbml0X2NoaWxkKHBvc2l0aW9u
KCkgKyAxLCBkZXN0KTsKKworICBpZiAoIWxlYWYoKSkgeworICAgIGZvciAoaW50IGkgPSAwOyBp
IDw9IGRlc3QtPmNvdW50KCk7ICsraSkgeworICAgICAgYXNzZXJ0KGNoaWxkKGNvdW50KCkgKyBp
ICsgMSkgIT0gbnVsbHB0cik7CisgICAgICBkZXN0LT5pbml0X2NoaWxkKGksIGNoaWxkKGNvdW50
KCkgKyBpICsgMSkpOworICAgICAgY2xlYXJfY2hpbGQoY291bnQoKSArIGkgKyAxKTsKKyAgICB9
CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit2b2lkIGJ0cmVlX25vZGU8UD46Om1l
cmdlKGJ0cmVlX25vZGUgKnNyYywgYWxsb2NhdG9yX3R5cGUgKmFsbG9jKSB7CisgIGFzc2VydChw
YXJlbnQoKSA9PSBzcmMtPnBhcmVudCgpKTsKKyAgYXNzZXJ0KHBvc2l0aW9uKCkgKyAxID09IHNy
Yy0+cG9zaXRpb24oKSk7CisKKyAgLy8gTW92ZSB0aGUgZGVsaW1pdGluZyB2YWx1ZSB0byB0aGUg
bGVmdCBub2RlLgorICB2YWx1ZV9pbml0KGNvdW50KCksIGFsbG9jLCBwYXJlbnQoKS0+c2xvdChw
b3NpdGlvbigpKSk7CisKKyAgLy8gTW92ZSB0aGUgdmFsdWVzIGZyb20gdGhlIHJpZ2h0IHRvIHRo
ZSBsZWZ0IG5vZGUuCisgIHNyYy0+dW5pbml0aWFsaXplZF9tb3ZlX24oc3JjLT5jb3VudCgpLCAw
LCBjb3VudCgpICsgMSwgdGhpcywgYWxsb2MpOworCisgIC8vIERlc3Ryb3kgdGhlIG5vdy1lbXB0
eSBlbnRyaWVzIGluIHRoZSByaWdodCBub2RlLgorICBzcmMtPnZhbHVlX2Rlc3Ryb3lfbigwLCBz
cmMtPmNvdW50KCksIGFsbG9jKTsKKworICBpZiAoIWxlYWYoKSkgeworICAgIC8vIE1vdmUgdGhl
IGNoaWxkIHBvaW50ZXJzIGZyb20gdGhlIHJpZ2h0IHRvIHRoZSBsZWZ0IG5vZGUuCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPD0gc3JjLT5jb3VudCgpOyArK2kpIHsKKyAgICAgIGluaXRfY2hpbGQo
Y291bnQoKSArIGkgKyAxLCBzcmMtPmNoaWxkKGkpKTsKKyAgICAgIHNyYy0+Y2xlYXJfY2hpbGQo
aSk7CisgICAgfQorICB9CisKKyAgLy8gRml4dXAgdGhlIGNvdW50cyBvbiB0aGUgc3JjIGFuZCBk
ZXN0IG5vZGVzLgorICBzZXRfY291bnQoMSArIGNvdW50KCkgKyBzcmMtPmNvdW50KCkpOworICBz
cmMtPnNldF9jb3VudCgwKTsKKworICAvLyBSZW1vdmUgdGhlIHZhbHVlIG9uIHRoZSBwYXJlbnQg
bm9kZS4KKyAgcGFyZW50KCktPnJlbW92ZV92YWx1ZShwb3NpdGlvbigpLCBhbGxvYyk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordm9pZCBidHJlZV9ub2RlPFA+Ojpzd2FwKGJ0cmVlX25v
ZGUgKngsIGFsbG9jYXRvcl90eXBlICphbGxvYykgeworICB1c2luZyBzdGQ6OnN3YXA7CisgIGFz
c2VydChsZWFmKCkgPT0geC0+bGVhZigpKTsKKworICAvLyBEZXRlcm1pbmUgd2hpY2ggaXMgdGhl
IHNtYWxsZXIvbGFyZ2VyIG5vZGUuCisgIGJ0cmVlX25vZGUgKnNtYWxsZXIgPSB0aGlzLCAqbGFy
Z2VyID0geDsKKyAgaWYgKHNtYWxsZXItPmNvdW50KCkgPiBsYXJnZXItPmNvdW50KCkpIHsKKyAg
ICBzd2FwKHNtYWxsZXIsIGxhcmdlcik7CisgIH0KKworICAvLyBTd2FwIHRoZSB2YWx1ZXMuCisg
IGZvciAoc2xvdF90eXBlICphID0gc21hbGxlci0+c2xvdCgwKSwgKmIgPSBsYXJnZXItPnNsb3Qo
MCksCisgICAgICAgICAgICAgICAgICplbmQgPSBhICsgc21hbGxlci0+Y291bnQoKTsKKyAgICAg
ICBhICE9IGVuZDsgKythLCArK2IpIHsKKyAgICBwYXJhbXNfdHlwZTo6c3dhcChhbGxvYywgYSwg
Yik7CisgIH0KKworICAvLyBNb3ZlIHZhbHVlcyB0aGF0IGNhbid0IGJlIHN3YXBwZWQuCisgIGNv
bnN0IHNpemVfdHlwZSB0b19tb3ZlID0gbGFyZ2VyLT5jb3VudCgpIC0gc21hbGxlci0+Y291bnQo
KTsKKyAgbGFyZ2VyLT51bmluaXRpYWxpemVkX21vdmVfbih0b19tb3ZlLCBzbWFsbGVyLT5jb3Vu
dCgpLCBzbWFsbGVyLT5jb3VudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNt
YWxsZXIsIGFsbG9jKTsKKyAgbGFyZ2VyLT52YWx1ZV9kZXN0cm95X24oc21hbGxlci0+Y291bnQo
KSwgdG9fbW92ZSwgYWxsb2MpOworCisgIGlmICghbGVhZigpKSB7CisgICAgLy8gU3dhcCB0aGUg
Y2hpbGQgcG9pbnRlcnMuCisgICAgc3RkOjpzd2FwX3Jhbmdlcygmc21hbGxlci0+bXV0YWJsZV9j
aGlsZCgwKSwKKyAgICAgICAgICAgICAgICAgICAgICZzbWFsbGVyLT5tdXRhYmxlX2NoaWxkKHNt
YWxsZXItPmNvdW50KCkgKyAxKSwKKyAgICAgICAgICAgICAgICAgICAgICZsYXJnZXItPm11dGFi
bGVfY2hpbGQoMCkpOworICAgIC8vIFVwZGF0ZSBzd2FwcGVkIGNoaWxkcmVuJ3MgcGFyZW50IHBv
aW50ZXJzLgorICAgIGludCBpID0gMDsKKyAgICBmb3IgKDsgaSA8PSBzbWFsbGVyLT5jb3VudCgp
OyArK2kpIHsKKyAgICAgIHNtYWxsZXItPmNoaWxkKGkpLT5zZXRfcGFyZW50KHNtYWxsZXIpOwor
ICAgICAgbGFyZ2VyLT5jaGlsZChpKS0+c2V0X3BhcmVudChsYXJnZXIpOworICAgIH0KKyAgICAv
LyBNb3ZlIHRoZSBjaGlsZCBwb2ludGVycyB0aGF0IGNvdWxkbid0IGJlIHN3YXBwZWQuCisgICAg
Zm9yICg7IGkgPD0gbGFyZ2VyLT5jb3VudCgpOyArK2kpIHsKKyAgICAgIHNtYWxsZXItPmluaXRf
Y2hpbGQoaSwgbGFyZ2VyLT5jaGlsZChpKSk7CisgICAgICBsYXJnZXItPmNsZWFyX2NoaWxkKGkp
OworICAgIH0KKyAgfQorCisgIC8vIFN3YXAgdGhlIGNvdW50cy4KKyAgc3dhcChtdXRhYmxlX2Nv
dW50KCksIHgtPm11dGFibGVfY291bnQoKSk7Cit9CisKKy8vLy8KKy8vIGJ0cmVlX2l0ZXJhdG9y
IG1ldGhvZHMKK3RlbXBsYXRlIDx0eXBlbmFtZSBOLCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBQPgor
dm9pZCBidHJlZV9pdGVyYXRvcjxOLCBSLCBQPjo6aW5jcmVtZW50X3Nsb3coKSB7CisgIGlmIChu
b2RlLT5sZWFmKCkpIHsKKyAgICBhc3NlcnQocG9zaXRpb24gPj0gbm9kZS0+Y291bnQoKSk7Cisg
ICAgYnRyZWVfaXRlcmF0b3Igc2F2ZSgqdGhpcyk7CisgICAgd2hpbGUgKHBvc2l0aW9uID09IG5v
ZGUtPmNvdW50KCkgJiYgIW5vZGUtPmlzX3Jvb3QoKSkgeworICAgICAgYXNzZXJ0KG5vZGUtPnBh
cmVudCgpLT5jaGlsZChub2RlLT5wb3NpdGlvbigpKSA9PSBub2RlKTsKKyAgICAgIHBvc2l0aW9u
ID0gbm9kZS0+cG9zaXRpb24oKTsKKyAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnQoKTsKKyAgICB9
CisgICAgaWYgKHBvc2l0aW9uID09IG5vZGUtPmNvdW50KCkpIHsKKyAgICAgICp0aGlzID0gc2F2
ZTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgYXNzZXJ0KHBvc2l0aW9uIDwgbm9kZS0+Y291bnQo
KSk7CisgICAgbm9kZSA9IG5vZGUtPmNoaWxkKHBvc2l0aW9uICsgMSk7CisgICAgd2hpbGUgKCFu
b2RlLT5sZWFmKCkpIHsKKyAgICAgIG5vZGUgPSBub2RlLT5jaGlsZCgwKTsKKyAgICB9CisgICAg
cG9zaXRpb24gPSAwOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOLCB0eXBlbmFtZSBS
LCB0eXBlbmFtZSBQPgordm9pZCBidHJlZV9pdGVyYXRvcjxOLCBSLCBQPjo6ZGVjcmVtZW50X3Ns
b3coKSB7CisgIGlmIChub2RlLT5sZWFmKCkpIHsKKyAgICBhc3NlcnQocG9zaXRpb24gPD0gLTEp
OworICAgIGJ0cmVlX2l0ZXJhdG9yIHNhdmUoKnRoaXMpOworICAgIHdoaWxlIChwb3NpdGlvbiA8
IDAgJiYgIW5vZGUtPmlzX3Jvb3QoKSkgeworICAgICAgYXNzZXJ0KG5vZGUtPnBhcmVudCgpLT5j
aGlsZChub2RlLT5wb3NpdGlvbigpKSA9PSBub2RlKTsKKyAgICAgIHBvc2l0aW9uID0gbm9kZS0+
cG9zaXRpb24oKSAtIDE7CisgICAgICBub2RlID0gbm9kZS0+cGFyZW50KCk7CisgICAgfQorICAg
IGlmIChwb3NpdGlvbiA8IDApIHsKKyAgICAgICp0aGlzID0gc2F2ZTsKKyAgICB9CisgIH0gZWxz
ZSB7CisgICAgYXNzZXJ0KHBvc2l0aW9uID49IDApOworICAgIG5vZGUgPSBub2RlLT5jaGlsZChw
b3NpdGlvbik7CisgICAgd2hpbGUgKCFub2RlLT5sZWFmKCkpIHsKKyAgICAgIG5vZGUgPSBub2Rl
LT5jaGlsZChub2RlLT5jb3VudCgpKTsKKyAgICB9CisgICAgcG9zaXRpb24gPSBub2RlLT5jb3Vu
dCgpIC0gMTsKKyAgfQorfQorCisvLy8vCisvLyBidHJlZSBtZXRob2RzCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBCdHJlZT4KK3ZvaWQgYnRyZWU8UD46OmNvcHlf
b3JfbW92ZV92YWx1ZXNfaW5fb3JkZXIoQnRyZWUgKngpIHsKKyAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWU8YnRyZWUsIEJ0cmVlPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3Rk
Ojppc19zYW1lPGNvbnN0IGJ0cmVlLCBCdHJlZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJC
dHJlZSB0eXBlIG11c3QgYmUgc2FtZSBvciBjb25zdC4iKTsKKyAgYXNzZXJ0KGVtcHR5KCkpOwor
CisgIC8vIFdlIGNhbiBhdm9pZCBrZXkgY29tcGFyaXNvbnMgYmVjYXVzZSB3ZSBrbm93IHRoZSBv
cmRlciBvZiB0aGUKKyAgLy8gdmFsdWVzIGlzIHRoZSBzYW1lIG9yZGVyIHdlJ2xsIHN0b3JlIHRo
ZW0gaW4uCisgIGF1dG8gaXRlciA9IHgtPmJlZ2luKCk7CisgIGlmIChpdGVyID09IHgtPmVuZCgp
KSByZXR1cm47CisgIGluc2VydF9tdWx0aShtYXliZV9tb3ZlX2Zyb21faXRlcmF0b3IoaXRlcikp
OworICArK2l0ZXI7CisgIGZvciAoOyBpdGVyICE9IHgtPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAv
LyBJZiB0aGUgYnRyZWUgaXMgbm90IGVtcHR5LCB3ZSBjYW4ganVzdCBpbnNlcnQgdGhlIG5ldyB2
YWx1ZSBhdCB0aGUgZW5kCisgICAgLy8gb2YgdGhlIHRyZWUuCisgICAgaW50ZXJuYWxfZW1wbGFj
ZShlbmQoKSwgbWF5YmVfbW92ZV9mcm9tX2l0ZXJhdG9yKGl0ZXIpKTsKKyAgfQorfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgUD4KK2NvbnN0ZXhwciBib29sIGJ0cmVlPFA+OjpzdGF0aWNfYXNzZXJ0
X3ZhbGlkYXRpb24oKSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2NvcHlfY29u
c3RydWN0aWJsZTxrZXlfY29tcGFyZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJLZXkgY29t
cGFyaXNvbiBtdXN0IGJlIG5vdGhyb3cgY29weSBjb25zdHJ1Y3RpYmxlIik7CisgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxhbGxvY2F0b3JfdHlwZT46
OnZhbHVlLAorICAgICAgICAgICAgICAgICJBbGxvY2F0b3IgbXVzdCBiZSBub3Rocm93IGNvcHkg
Y29uc3RydWN0aWJsZSIpOworICBzdGF0aWNfYXNzZXJ0KHR5cGVfdHJhaXRzX2ludGVybmFsOjpp
c190cml2aWFsbHlfY29weWFibGU8aXRlcmF0b3I+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAi
aXRlcmF0b3Igbm90IHRyaXZpYWxseSBjb3B5YWJsZS4iKTsKKworICAvLyBOb3RlOiBXZSBhc3Nl
cnQgdGhhdCBrVGFyZ2V0VmFsdWVzLCB3aGljaCBpcyBjb21wdXRlZCBmcm9tCisgIC8vIFBhcmFt
czo6a1RhcmdldE5vZGVTaXplLCBtdXN0IGZpdCB0aGUgbm9kZV90eXBlOjpmaWVsZF90eXBlLgor
ICBzdGF0aWNfYXNzZXJ0KAorICAgICAga05vZGVWYWx1ZXMgPCAoMSA8PCAoOCAqIHNpemVvZih0
eXBlbmFtZSBub2RlX3R5cGU6OmZpZWxkX3R5cGUpKSksCisgICAgICAidGFyZ2V0IG5vZGUgc2l6
ZSB0b28gbGFyZ2UiKTsKKworICAvLyBWZXJpZnkgdGhhdCBrZXlfY29tcGFyZSByZXR1cm5zIGFu
IGFic2w6Ont3ZWFrLHN0cm9uZ31fb3JkZXJpbmcgb3IgYm9vbC4KKyAgdXNpbmcgY29tcGFyZV9y
ZXN1bHRfdHlwZSA9CisgICAgICBhYnNsOjpyZXN1bHRfb2ZfdDxrZXlfY29tcGFyZShrZXlfdHlw
ZSwga2V5X3R5cGUpPjsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIHN0ZDo6aXNfc2FtZTxjb21w
YXJlX3Jlc3VsdF90eXBlLCBib29sPjo6dmFsdWUgfHwKKyAgICAgICAgICBzdGQ6OmlzX2NvbnZl
cnRpYmxlPGNvbXBhcmVfcmVzdWx0X3R5cGUsIGFic2w6OndlYWtfb3JkZXJpbmc+Ojp2YWx1ZSwK
KyAgICAgICJrZXkgY29tcGFyaXNvbiBmdW5jdGlvbiBtdXN0IHJldHVybiBhYnNsOjp7d2Vhayxz
dHJvbmd9X29yZGVyaW5nIG9yICIKKyAgICAgICJib29sLiIpOworCisgIC8vIFRlc3QgdGhlIGFz
c3VtcHRpb24gbWFkZSBpbiBzZXR0aW5nIGtOb2RlVmFsdWVTcGFjZS4KKyAgc3RhdGljX2Fzc2Vy
dChub2RlX3R5cGU6Ok1pbmltdW1PdmVyaGVhZCgpID49IHNpemVvZih2b2lkICopICsgNCwKKyAg
ICAgICAgICAgICAgICAibm9kZSBzcGFjZSBhc3N1bXB0aW9uIGluY29ycmVjdCIpOworCisgIHJl
dHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK2J0cmVlPFA+OjpidHJlZShj
b25zdCBrZXlfY29tcGFyZSAmY29tcCwgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmFsbG9jKQorICAg
IDogcm9vdF8oY29tcCwgYWxsb2MsIEVtcHR5Tm9kZSgpKSwgcmlnaHRtb3N0XyhFbXB0eU5vZGUo
KSksIHNpemVfKDApIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgorYnRyZWU8UD46OmJ0cmVl
KGNvbnN0IGJ0cmVlICZ4KSA6IGJ0cmVlKHgua2V5X2NvbXAoKSwgeC5hbGxvY2F0b3IoKSkgewor
ICBjb3B5X29yX21vdmVfdmFsdWVzX2luX29yZGVyKCZ4KTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KK2F1dG8gYnRyZWU8UD46Omluc2Vy
dF91bmlxdWUoY29uc3Qga2V5X3R5cGUgJmtleSwgQXJncyAmJi4uLiBhcmdzKQorICAgIC0+IHN0
ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4geworICBpZiAoZW1wdHkoKSkgeworICAgIG11dGFibGVf
cm9vdCgpID0gcmlnaHRtb3N0XyA9IG5ld19sZWFmX3Jvb3Rfbm9kZSgxKTsKKyAgfQorCisgIGF1
dG8gcmVzID0gaW50ZXJuYWxfbG9jYXRlKGtleSk7CisgIGl0ZXJhdG9yICZpdGVyID0gcmVzLnZh
bHVlOworCisgIGlmIChyZXMuSGFzTWF0Y2goKSkgeworICAgIGlmIChyZXMuSXNFcSgpKSB7Cisg
ICAgICAvLyBUaGUga2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSB0cmVlLCBkbyBub3RoaW5nLgor
ICAgICAgcmV0dXJuIHtpdGVyLCBmYWxzZX07CisgICAgfQorICB9IGVsc2UgeworICAgIGl0ZXJh
dG9yIGxhc3QgPSBpbnRlcm5hbF9sYXN0KGl0ZXIpOworICAgIGlmIChsYXN0Lm5vZGUgJiYgIWNv
bXBhcmVfa2V5cyhrZXksIGxhc3Qua2V5KCkpKSB7CisgICAgICAvLyBUaGUga2V5IGFscmVhZHkg
ZXhpc3RzIGluIHRoZSB0cmVlLCBkbyBub3RoaW5nLgorICAgICAgcmV0dXJuIHtsYXN0LCBmYWxz
ZX07CisgICAgfQorICB9CisgIHJldHVybiB7aW50ZXJuYWxfZW1wbGFjZShpdGVyLCBzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pLCB0cnVlfTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KK2lubGluZSBhdXRvIGJ0cmVlPFA+OjppbnNl
cnRfaGludF91bmlxdWUoaXRlcmF0b3IgcG9zaXRpb24sIGNvbnN0IGtleV90eXBlICZrZXksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3MgJiYuLi4gYXJncykK
KyAgICAtPiBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHsKKyAgaWYgKCFlbXB0eSgpKSB7Cisg
ICAgaWYgKHBvc2l0aW9uID09IGVuZCgpIHx8IGNvbXBhcmVfa2V5cyhrZXksIHBvc2l0aW9uLmtl
eSgpKSkgeworICAgICAgaXRlcmF0b3IgcHJldiA9IHBvc2l0aW9uOworICAgICAgaWYgKHBvc2l0
aW9uID09IGJlZ2luKCkgfHwgY29tcGFyZV9rZXlzKCgtLXByZXYpLmtleSgpLCBrZXkpKSB7Cisg
ICAgICAgIC8vIHByZXYua2V5KCkgPCBrZXkgPCBwb3NpdGlvbi5rZXkoKQorICAgICAgICByZXR1
cm4ge2ludGVybmFsX2VtcGxhY2UocG9zaXRpb24sIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LiksIHRydWV9OworICAgICAgfQorICAgIH0gZWxzZSBpZiAoY29tcGFyZV9rZXlzKHBvc2l0aW9u
LmtleSgpLCBrZXkpKSB7CisgICAgICArK3Bvc2l0aW9uOworICAgICAgaWYgKHBvc2l0aW9uID09
IGVuZCgpIHx8IGNvbXBhcmVfa2V5cyhrZXksIHBvc2l0aW9uLmtleSgpKSkgeworICAgICAgICAv
LyB7b3JpZ2luYWwgYHBvc2l0aW9uYH0ua2V5KCkgPCBrZXkgPCB7Y3VycmVudCBgcG9zaXRpb25g
fS5rZXkoKQorICAgICAgICByZXR1cm4ge2ludGVybmFsX2VtcGxhY2UocG9zaXRpb24sIHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLiksIHRydWV9OworICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAvLyBwb3NpdGlvbi5rZXkoKSA9PSBrZXkKKyAgICAgIHJldHVybiB7cG9zaXRpb24sIGZh
bHNlfTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGluc2VydF91bmlxdWUoa2V5LCBzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgordm9pZCBidHJlZTxQPjo6aW5zZXJ0X2l0ZXJhdG9y
X3VuaXF1ZShJbnB1dEl0ZXJhdG9yIGIsIElucHV0SXRlcmF0b3IgZSkgeworICBmb3IgKDsgYiAh
PSBlOyArK2IpIHsKKyAgICBpbnNlcnRfaGludF91bmlxdWUoZW5kKCksIHBhcmFtc190eXBlOjpr
ZXkoKmIpLCAqYik7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVmFsdWVUeXBlPgorYXV0byBidHJlZTxQPjo6aW5zZXJ0X211bHRpKGNvbnN0IGtl
eV90eXBlICZrZXksIFZhbHVlVHlwZSAmJnYpIC0+IGl0ZXJhdG9yIHsKKyAgaWYgKGVtcHR5KCkp
IHsKKyAgICBtdXRhYmxlX3Jvb3QoKSA9IHJpZ2h0bW9zdF8gPSBuZXdfbGVhZl9yb290X25vZGUo
MSk7CisgIH0KKworICBpdGVyYXRvciBpdGVyID0gaW50ZXJuYWxfdXBwZXJfYm91bmQoa2V5KTsK
KyAgaWYgKGl0ZXIubm9kZSA9PSBudWxscHRyKSB7CisgICAgaXRlciA9IGVuZCgpOworICB9Cisg
IHJldHVybiBpbnRlcm5hbF9lbXBsYWNlKGl0ZXIsIHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHYp
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWVU
eXBlPgorYXV0byBidHJlZTxQPjo6aW5zZXJ0X2hpbnRfbXVsdGkoaXRlcmF0b3IgcG9zaXRpb24s
IFZhbHVlVHlwZSAmJnYpIC0+IGl0ZXJhdG9yIHsKKyAgaWYgKCFlbXB0eSgpKSB7CisgICAgY29u
c3Qga2V5X3R5cGUgJmtleSA9IHBhcmFtc190eXBlOjprZXkodik7CisgICAgaWYgKHBvc2l0aW9u
ID09IGVuZCgpIHx8ICFjb21wYXJlX2tleXMocG9zaXRpb24ua2V5KCksIGtleSkpIHsKKyAgICAg
IGl0ZXJhdG9yIHByZXYgPSBwb3NpdGlvbjsKKyAgICAgIGlmIChwb3NpdGlvbiA9PSBiZWdpbigp
IHx8ICFjb21wYXJlX2tleXMoa2V5LCAoLS1wcmV2KS5rZXkoKSkpIHsKKyAgICAgICAgLy8gcHJl
di5rZXkoKSA8PSBrZXkgPD0gcG9zaXRpb24ua2V5KCkKKyAgICAgICAgcmV0dXJuIGludGVybmFs
X2VtcGxhY2UocG9zaXRpb24sIHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHYpKTsKKyAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgaXRlcmF0b3IgbmV4dCA9IHBvc2l0aW9uOworICAgICAgKytu
ZXh0OworICAgICAgaWYgKG5leHQgPT0gZW5kKCkgfHwgIWNvbXBhcmVfa2V5cyhuZXh0LmtleSgp
LCBrZXkpKSB7CisgICAgICAgIC8vIHBvc2l0aW9uLmtleSgpIDwga2V5IDw9IG5leHQua2V5KCkK
KyAgICAgICAgcmV0dXJuIGludGVybmFsX2VtcGxhY2UobmV4dCwgc3RkOjpmb3J3YXJkPFZhbHVl
VHlwZT4odikpOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gaW5zZXJ0X211bHRpKHN0
ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHYpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KK3ZvaWQgYnRyZWU8UD46Omluc2VydF9p
dGVyYXRvcl9tdWx0aShJbnB1dEl0ZXJhdG9yIGIsIElucHV0SXRlcmF0b3IgZSkgeworICBmb3Ig
KDsgYiAhPSBlOyArK2IpIHsKKyAgICBpbnNlcnRfaGludF9tdWx0aShlbmQoKSwgKmIpOworICB9
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgorYXV0byBidHJlZTxQPjo6b3BlcmF0b3I9KGNv
bnN0IGJ0cmVlICZ4KSAtPiBidHJlZSAmIHsKKyAgaWYgKHRoaXMgIT0gJngpIHsKKyAgICBjbGVh
cigpOworCisgICAgKm11dGFibGVfa2V5X2NvbXAoKSA9IHgua2V5X2NvbXAoKTsKKyAgICBpZiAo
YWJzbDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlPjo6cHJv
cGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQ6OnZhbHVlKSB7CisgICAgICAqbXV0
YWJsZV9hbGxvY2F0b3IoKSA9IHguYWxsb2NhdG9yKCk7CisgICAgfQorCisgICAgY29weV9vcl9t
b3ZlX3ZhbHVlc19pbl9vcmRlcigmeCk7CisgIH0KKyAgcmV0dXJuICp0aGlzOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgUD4KK2F1dG8gYnRyZWU8UD46Om9wZXJhdG9yPShidHJlZSAmJngpIG5v
ZXhjZXB0IC0+IGJ0cmVlICYgeworICBpZiAodGhpcyAhPSAmeCkgeworICAgIGNsZWFyKCk7CisK
KyAgICB1c2luZyBzdGQ6OnN3YXA7CisgICAgaWYgKGFic2w6OmFsbG9jYXRvcl90cmFpdHM8Cisg
ICAgICAgICAgICBhbGxvY2F0b3JfdHlwZT46OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9h
c3NpZ25tZW50Ojp2YWx1ZSkgeworICAgICAgLy8gTm90ZTogYHJvb3RfYCBhbHNvIGNvbnRhaW5z
IHRoZSBhbGxvY2F0b3IgYW5kIHRoZSBrZXkgY29tcGFyYXRvci4KKyAgICAgIHN3YXAocm9vdF8s
IHgucm9vdF8pOworICAgICAgc3dhcChyaWdodG1vc3RfLCB4LnJpZ2h0bW9zdF8pOworICAgICAg
c3dhcChzaXplXywgeC5zaXplXyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGlmIChhbGxvY2F0b3Io
KSA9PSB4LmFsbG9jYXRvcigpKSB7CisgICAgICAgIHN3YXAobXV0YWJsZV9yb290KCksIHgubXV0
YWJsZV9yb290KCkpOworICAgICAgICBzd2FwKCptdXRhYmxlX2tleV9jb21wKCksICp4Lm11dGFi
bGVfa2V5X2NvbXAoKSk7CisgICAgICAgIHN3YXAocmlnaHRtb3N0XywgeC5yaWdodG1vc3RfKTsK
KyAgICAgICAgc3dhcChzaXplXywgeC5zaXplXyk7CisgICAgICB9IGVsc2UgeworICAgICAgICAv
LyBXZSBhcmVuJ3QgYWxsb3dlZCB0byBwcm9wYWdhdGUgdGhlIGFsbG9jYXRvciBhbmQgdGhlIGFs
bG9jYXRvciBpcworICAgICAgICAvLyBkaWZmZXJlbnQgc28gd2UgY2FuJ3QgdGFrZSBvdmVyIGl0
cyBtZW1vcnkuIFdlIG11c3QgbW92ZSBlYWNoIGVsZW1lbnQKKyAgICAgICAgLy8gaW5kaXZpZHVh
bGx5LiBXZSBuZWVkIGJvdGggYHhgIGFuZCBgdGhpc2AgdG8gaGF2ZSBgeGBzIGtleSBjb21wYXJh
dG9yCisgICAgICAgIC8vIHdoaWxlIG1vdmluZyB0aGUgdmFsdWVzIHNvIHdlIGNhbid0IHN3YXAg
dGhlIGtleSBjb21wYXJhdG9ycy4KKyAgICAgICAgKm11dGFibGVfa2V5X2NvbXAoKSA9IHgua2V5
X2NvbXAoKTsKKyAgICAgICAgY29weV9vcl9tb3ZlX3ZhbHVlc19pbl9vcmRlcigmeCk7CisgICAg
ICB9CisgICAgfQorICB9CisgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFA+CithdXRvIGJ0cmVlPFA+OjplcmFzZShpdGVyYXRvciBpdGVyKSAtPiBpdGVyYXRvciB7Cisg
IGJvb2wgaW50ZXJuYWxfZGVsZXRlID0gZmFsc2U7CisgIGlmICghaXRlci5ub2RlLT5sZWFmKCkp
IHsKKyAgICAvLyBEZWxldGlvbiBvZiBhIHZhbHVlIG9uIGFuIGludGVybmFsIG5vZGUuIEZpcnN0
LCBtb3ZlIHRoZSBsYXJnZXN0IHZhbHVlCisgICAgLy8gZnJvbSBvdXIgbGVmdCBjaGlsZCBoZXJl
LCB0aGVuIGRlbGV0ZSB0aGF0IHBvc2l0aW9uIChpbiByZW1vdmVfdmFsdWUoKQorICAgIC8vIGJl
bG93KS4gV2UgY2FuIGdldCB0byB0aGUgbGFyZ2VzdCB2YWx1ZSBmcm9tIG91ciBsZWZ0IGNoaWxk
IGJ5CisgICAgLy8gZGVjcmVtZW50aW5nIGl0ZXIuCisgICAgaXRlcmF0b3IgaW50ZXJuYWxfaXRl
cihpdGVyKTsKKyAgICAtLWl0ZXI7CisgICAgYXNzZXJ0KGl0ZXIubm9kZS0+bGVhZigpKTsKKyAg
ICBhc3NlcnQoIWNvbXBhcmVfa2V5cyhpbnRlcm5hbF9pdGVyLmtleSgpLCBpdGVyLmtleSgpKSk7
CisgICAgcGFyYW1zX3R5cGU6Om1vdmUobXV0YWJsZV9hbGxvY2F0b3IoKSwgaXRlci5ub2RlLT5z
bG90KGl0ZXIucG9zaXRpb24pLAorICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsX2l0ZXIu
bm9kZS0+c2xvdChpbnRlcm5hbF9pdGVyLnBvc2l0aW9uKSk7CisgICAgaW50ZXJuYWxfZGVsZXRl
ID0gdHJ1ZTsKKyAgfQorCisgIC8vIERlbGV0ZSB0aGUga2V5IGZyb20gdGhlIGxlYWYuCisgIGl0
ZXIubm9kZS0+cmVtb3ZlX3ZhbHVlKGl0ZXIucG9zaXRpb24sIG11dGFibGVfYWxsb2NhdG9yKCkp
OworICAtLXNpemVfOworCisgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBuZXh0IHZhbHVlIGFm
dGVyIHRoZSBvbmUgd2UganVzdCBlcmFzZWQuIElmIHdlCisgIC8vIGVyYXNlZCBmcm9tIGFuIGlu
dGVybmFsIG5vZGUgKGludGVybmFsX2RlbGV0ZSA9PSB0cnVlKSwgdGhlbiB0aGUgbmV4dAorICAv
LyB2YWx1ZSBpcyArKygrK2l0ZXIpLiBJZiB3ZSBlcmFzZWQgZnJvbSBhIGxlYWYgbm9kZSAoaW50
ZXJuYWxfZGVsZXRlID09CisgIC8vIGZhbHNlKSB0aGVuIHRoZSBuZXh0IHZhbHVlIGlzICsraXRl
ci4gTm90ZSB0aGF0ICsraXRlciBtYXkgcG9pbnQgdG8gYW4KKyAgLy8gaW50ZXJuYWwgbm9kZSBh
bmQgdGhlIHZhbHVlIGluIHRoZSBpbnRlcm5hbCBub2RlIG1heSBtb3ZlIHRvIGEgbGVhZiBub2Rl
CisgIC8vIChpdGVyLm5vZGUpIHdoZW4gcmViYWxhbmNpbmcgaXMgcGVyZm9ybWVkIGF0IHRoZSBs
ZWFmIGxldmVsLgorCisgIGl0ZXJhdG9yIHJlcyA9IHJlYmFsYW5jZV9hZnRlcl9kZWxldGUoaXRl
cik7CisKKyAgLy8gSWYgd2UgZXJhc2VkIGZyb20gYW4gaW50ZXJuYWwgbm9kZSwgYWR2YW5jZSB0
aGUgaXRlcmF0b3IuCisgIGlmIChpbnRlcm5hbF9kZWxldGUpIHsKKyAgICArK3JlczsKKyAgfQor
ICByZXR1cm4gcmVzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK2F1dG8gYnRyZWU8UD46
OnJlYmFsYW5jZV9hZnRlcl9kZWxldGUoaXRlcmF0b3IgaXRlcikgLT4gaXRlcmF0b3IgeworICAv
LyBNZXJnZS9yZWJhbGFuY2UgYXMgd2Ugd2FsayBiYWNrIHVwIHRoZSB0cmVlLgorICBpdGVyYXRv
ciByZXMoaXRlcik7CisgIGJvb2wgZmlyc3RfaXRlcmF0aW9uID0gdHJ1ZTsKKyAgZm9yICg7Oykg
eworICAgIGlmIChpdGVyLm5vZGUgPT0gcm9vdCgpKSB7CisgICAgICB0cnlfc2hyaW5rKCk7Cisg
ICAgICBpZiAoZW1wdHkoKSkgeworICAgICAgICByZXR1cm4gZW5kKCk7CisgICAgICB9CisgICAg
ICBicmVhazsKKyAgICB9CisgICAgaWYgKGl0ZXIubm9kZS0+Y291bnQoKSA+PSBrTWluTm9kZVZh
bHVlcykgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIGJvb2wgbWVyZ2VkID0gdHJ5X21lcmdl
X29yX3JlYmFsYW5jZSgmaXRlcik7CisgICAgLy8gT24gdGhlIGZpcnN0IGl0ZXJhdGlvbiwgd2Ug
c2hvdWxkIHVwZGF0ZSBgcmVzYCB3aXRoIGBpdGVyYCBiZWNhdXNlIGByZXNgCisgICAgLy8gbWF5
IGhhdmUgYmVlbiBpbnZhbGlkYXRlZC4KKyAgICBpZiAoZmlyc3RfaXRlcmF0aW9uKSB7CisgICAg
ICByZXMgPSBpdGVyOworICAgICAgZmlyc3RfaXRlcmF0aW9uID0gZmFsc2U7CisgICAgfQorICAg
IGlmICghbWVyZ2VkKSB7CisgICAgICBicmVhazsKKyAgICB9CisgICAgaXRlci5ub2RlID0gaXRl
ci5ub2RlLT5wYXJlbnQoKTsKKyAgfQorCisgIC8vIEFkanVzdCBvdXIgcmV0dXJuIHZhbHVlLiBJ
ZiB3ZSdyZSBwb2ludGluZyBhdCB0aGUgZW5kIG9mIGEgbm9kZSwgYWR2YW5jZQorICAvLyB0aGUg
aXRlcmF0b3IuCisgIGlmIChyZXMucG9zaXRpb24gPT0gcmVzLm5vZGUtPmNvdW50KCkpIHsKKyAg
ICByZXMucG9zaXRpb24gPSByZXMubm9kZS0+Y291bnQoKSAtIDE7CisgICAgKytyZXM7CisgIH0K
KworICByZXR1cm4gcmVzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK2F1dG8gYnRyZWU8
UD46OmVyYXNlKGl0ZXJhdG9yIGJlZ2luLCBpdGVyYXRvciBlbmQpCisgICAgLT4gc3RkOjpwYWly
PHNpemVfdHlwZSwgaXRlcmF0b3I+IHsKKyAgZGlmZmVyZW5jZV90eXBlIGNvdW50ID0gc3RkOjpk
aXN0YW5jZShiZWdpbiwgZW5kKTsKKyAgYXNzZXJ0KGNvdW50ID49IDApOworCisgIGlmIChjb3Vu
dCA9PSAwKSB7CisgICAgcmV0dXJuIHswLCBiZWdpbn07CisgIH0KKworICBpZiAoY291bnQgPT0g
c2l6ZV8pIHsKKyAgICBjbGVhcigpOworICAgIHJldHVybiB7Y291bnQsIHRoaXMtPmVuZCgpfTsK
KyAgfQorCisgIGlmIChiZWdpbi5ub2RlID09IGVuZC5ub2RlKSB7CisgICAgZXJhc2Vfc2FtZV9u
b2RlKGJlZ2luLCBlbmQpOworICAgIHNpemVfIC09IGNvdW50OworICAgIHJldHVybiB7Y291bnQs
IHJlYmFsYW5jZV9hZnRlcl9kZWxldGUoYmVnaW4pfTsKKyAgfQorCisgIGNvbnN0IHNpemVfdHlw
ZSB0YXJnZXRfc2l6ZSA9IHNpemVfIC0gY291bnQ7CisgIHdoaWxlIChzaXplXyA+IHRhcmdldF9z
aXplKSB7CisgICAgaWYgKGJlZ2luLm5vZGUtPmxlYWYoKSkgeworICAgICAgY29uc3Qgc2l6ZV90
eXBlIHJlbWFpbmluZ190b19lcmFzZSA9IHNpemVfIC0gdGFyZ2V0X3NpemU7CisgICAgICBjb25z
dCBzaXplX3R5cGUgcmVtYWluaW5nX2luX25vZGUgPSBiZWdpbi5ub2RlLT5jb3VudCgpIC0gYmVn
aW4ucG9zaXRpb247CisgICAgICBiZWdpbiA9IGVyYXNlX2Zyb21fbGVhZl9ub2RlKAorICAgICAg
ICAgIGJlZ2luLCAoc3RkOjptaW4pKHJlbWFpbmluZ190b19lcmFzZSwgcmVtYWluaW5nX2luX25v
ZGUpKTsKKyAgICB9IGVsc2UgeworICAgICAgYmVnaW4gPSBlcmFzZShiZWdpbik7CisgICAgfQor
ICB9CisgIHJldHVybiB7Y291bnQsIGJlZ2lufTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+
Cit2b2lkIGJ0cmVlPFA+OjplcmFzZV9zYW1lX25vZGUoaXRlcmF0b3IgYmVnaW4sIGl0ZXJhdG9y
IGVuZCkgeworICBhc3NlcnQoYmVnaW4ubm9kZSA9PSBlbmQubm9kZSk7CisgIGFzc2VydChlbmQu
cG9zaXRpb24gPiBiZWdpbi5wb3NpdGlvbik7CisKKyAgbm9kZV90eXBlICpub2RlID0gYmVnaW4u
bm9kZTsKKyAgc2l6ZV90eXBlIHRvX2VyYXNlID0gZW5kLnBvc2l0aW9uIC0gYmVnaW4ucG9zaXRp
b247CisgIGlmICghbm9kZS0+bGVhZigpKSB7CisgICAgLy8gRGVsZXRlIGFsbCBjaGlsZHJlbiBi
ZXR3ZWVuIGJlZ2luIGFuZCBlbmQuCisgICAgZm9yIChzaXplX3R5cGUgaSA9IDA7IGkgPCB0b19l
cmFzZTsgKytpKSB7CisgICAgICBpbnRlcm5hbF9jbGVhcihub2RlLT5jaGlsZChiZWdpbi5wb3Np
dGlvbiArIGkgKyAxKSk7CisgICAgfQorICAgIC8vIFJvdGF0ZSBjaGlsZHJlbiBhZnRlciBlbmQg
aW50byBuZXcgcG9zaXRpb25zLgorICAgIGZvciAoc2l6ZV90eXBlIGkgPSBiZWdpbi5wb3NpdGlv
biArIHRvX2VyYXNlICsgMTsgaSA8PSBub2RlLT5jb3VudCgpOyArK2kpIHsKKyAgICAgIG5vZGUt
PnNldF9jaGlsZChpIC0gdG9fZXJhc2UsIG5vZGUtPmNoaWxkKGkpKTsKKyAgICAgIG5vZGUtPmNs
ZWFyX2NoaWxkKGkpOworICAgIH0KKyAgfQorICBub2RlLT5yZW1vdmVfdmFsdWVzX2lnbm9yZV9j
aGlsZHJlbihiZWdpbi5wb3NpdGlvbiwgdG9fZXJhc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG11dGFibGVfYWxsb2NhdG9yKCkpOworCisgIC8vIERvIG5vdCBuZWVk
IHRvIHVwZGF0ZSByaWdodG1vc3RfLCBiZWNhdXNlCisgIC8vICogZWl0aGVyIGVuZCA9PSB0aGlz
LT5lbmQoKSwgYW5kIHRoZXJlZm9yZSBub2RlID09IHJpZ2h0bW9zdF8sIGFuZCBzdGlsbAorICAv
LyAgIGV4aXN0cworICAvLyAqIG9yIGVuZCAhPSB0aGlzLT5lbmQoKSwgYW5kIHRoZXJlZm9yZSBy
aWdodG1vc3RfIGhhc24ndCBiZWVuIGVyYXNlZCwgc2luY2UKKyAgLy8gICBpdCB3YXNuJ3QgY292
ZXJlZCBpbiBbYmVnaW4sIGVuZCkKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+CithdXRvIGJ0
cmVlPFA+OjplcmFzZV9mcm9tX2xlYWZfbm9kZShpdGVyYXRvciBiZWdpbiwgc2l6ZV90eXBlIHRv
X2VyYXNlKQorICAgIC0+IGl0ZXJhdG9yIHsKKyAgbm9kZV90eXBlICpub2RlID0gYmVnaW4ubm9k
ZTsKKyAgYXNzZXJ0KG5vZGUtPmxlYWYoKSk7CisgIGFzc2VydChub2RlLT5jb3VudCgpID4gYmVn
aW4ucG9zaXRpb24pOworICBhc3NlcnQoYmVnaW4ucG9zaXRpb24gKyB0b19lcmFzZSA8PSBub2Rl
LT5jb3VudCgpKTsKKworICBub2RlLT5yZW1vdmVfdmFsdWVzX2lnbm9yZV9jaGlsZHJlbihiZWdp
bi5wb3NpdGlvbiwgdG9fZXJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG11dGFibGVfYWxsb2NhdG9yKCkpOworCisgIHNpemVfIC09IHRvX2VyYXNlOworCisgIHJl
dHVybiByZWJhbGFuY2VfYWZ0ZXJfZGVsZXRlKGJlZ2luKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KK2F1dG8gYnRyZWU8UD46OmVyYXNlX3VuaXF1
ZShjb25zdCBLICZrZXkpIC0+IHNpemVfdHlwZSB7CisgIGNvbnN0IGl0ZXJhdG9yIGl0ZXIgPSBp
bnRlcm5hbF9maW5kKGtleSk7CisgIGlmIChpdGVyLm5vZGUgPT0gbnVsbHB0cikgeworICAgIC8v
IFRoZSBrZXkgZG9lc24ndCBleGlzdCBpbiB0aGUgdHJlZSwgcmV0dXJuIG5vdGhpbmcgZG9uZS4K
KyAgICByZXR1cm4gMDsKKyAgfQorICBlcmFzZShpdGVyKTsKKyAgcmV0dXJuIDE7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lIEs+CithdXRvIGJ0cmVlPFA+
OjplcmFzZV9tdWx0aShjb25zdCBLICZrZXkpIC0+IHNpemVfdHlwZSB7CisgIGNvbnN0IGl0ZXJh
dG9yIGJlZ2luID0gaW50ZXJuYWxfbG93ZXJfYm91bmQoa2V5KTsKKyAgaWYgKGJlZ2luLm5vZGUg
PT0gbnVsbHB0cikgeworICAgIC8vIFRoZSBrZXkgZG9lc24ndCBleGlzdCBpbiB0aGUgdHJlZSwg
cmV0dXJuIG5vdGhpbmcgZG9uZS4KKyAgICByZXR1cm4gMDsKKyAgfQorICAvLyBEZWxldGUgYWxs
IG9mIHRoZSBrZXlzIGJldHdlZW4gYmVnaW4gYW5kIHVwcGVyX2JvdW5kKGtleSkuCisgIGNvbnN0
IGl0ZXJhdG9yIGVuZCA9IGludGVybmFsX2VuZChpbnRlcm5hbF91cHBlcl9ib3VuZChrZXkpKTsK
KyAgcmV0dXJuIGVyYXNlKGJlZ2luLCBlbmQpLmZpcnN0OworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgUD4KK3ZvaWQgYnRyZWU8UD46OmNsZWFyKCkgeworICBpZiAoIWVtcHR5KCkpIHsKKyAgICBp
bnRlcm5hbF9jbGVhcihyb290KCkpOworICB9CisgIG11dGFibGVfcm9vdCgpID0gRW1wdHlOb2Rl
KCk7CisgIHJpZ2h0bW9zdF8gPSBFbXB0eU5vZGUoKTsKKyAgc2l6ZV8gPSAwOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWU8UD46OnN3YXAoYnRyZWUgJngpIHsKKyAgdXNp
bmcgc3RkOjpzd2FwOworICBpZiAoYWJzbDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgICAgICBh
bGxvY2F0b3JfdHlwZT46OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWUpIHsKKyAg
ICAvLyBOb3RlOiBgcm9vdF9gIGFsc28gY29udGFpbnMgdGhlIGFsbG9jYXRvciBhbmQgdGhlIGtl
eSBjb21wYXJhdG9yLgorICAgIHN3YXAocm9vdF8sIHgucm9vdF8pOworICB9IGVsc2UgeworICAg
IC8vIEl0J3MgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIHRoZSBhbGxvY2F0b3JzIGFyZSB1bmVxdWFs
IGhlcmUuCisgICAgYXNzZXJ0KGFsbG9jYXRvcigpID09IHguYWxsb2NhdG9yKCkpOworICAgIHN3
YXAobXV0YWJsZV9yb290KCksIHgubXV0YWJsZV9yb290KCkpOworICAgIHN3YXAoKm11dGFibGVf
a2V5X2NvbXAoKSwgKngubXV0YWJsZV9rZXlfY29tcCgpKTsKKyAgfQorICBzd2FwKHJpZ2h0bW9z
dF8sIHgucmlnaHRtb3N0Xyk7CisgIHN3YXAoc2l6ZV8sIHguc2l6ZV8pOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWU8UD46OnZlcmlmeSgpIGNvbnN0IHsKKyAgYXNzZXJ0
KHJvb3QoKSAhPSBudWxscHRyKTsKKyAgYXNzZXJ0KGxlZnRtb3N0KCkgIT0gbnVsbHB0cik7Cisg
IGFzc2VydChyaWdodG1vc3RfICE9IG51bGxwdHIpOworICBhc3NlcnQoZW1wdHkoKSB8fCBzaXpl
KCkgPT0gaW50ZXJuYWxfdmVyaWZ5KHJvb3QoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICBhc3Nl
cnQobGVmdG1vc3QoKSA9PSAoKytjb25zdF9pdGVyYXRvcihyb290KCksIC0xKSkubm9kZSk7Cisg
IGFzc2VydChyaWdodG1vc3RfID09ICgtLWNvbnN0X2l0ZXJhdG9yKHJvb3QoKSwgcm9vdCgpLT5j
b3VudCgpKSkubm9kZSk7CisgIGFzc2VydChsZWZ0bW9zdCgpLT5sZWFmKCkpOworICBhc3NlcnQo
cmlnaHRtb3N0Xy0+bGVhZigpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit2b2lkIGJ0
cmVlPFA+OjpyZWJhbGFuY2Vfb3Jfc3BsaXQoaXRlcmF0b3IgKml0ZXIpIHsKKyAgbm9kZV90eXBl
ICombm9kZSA9IGl0ZXItPm5vZGU7CisgIGludCAmaW5zZXJ0X3Bvc2l0aW9uID0gaXRlci0+cG9z
aXRpb247CisgIGFzc2VydChub2RlLT5jb3VudCgpID09IG5vZGUtPm1heF9jb3VudCgpKTsKKyAg
YXNzZXJ0KGtOb2RlVmFsdWVzID09IG5vZGUtPm1heF9jb3VudCgpKTsKKworICAvLyBGaXJzdCB0
cnkgdG8gbWFrZSByb29tIG9uIHRoZSBub2RlIGJ5IHJlYmFsYW5jaW5nLgorICBub2RlX3R5cGUg
KnBhcmVudCA9IG5vZGUtPnBhcmVudCgpOworICBpZiAobm9kZSAhPSByb290KCkpIHsKKyAgICBp
ZiAobm9kZS0+cG9zaXRpb24oKSA+IDApIHsKKyAgICAgIC8vIFRyeSByZWJhbGFuY2luZyB3aXRo
IG91ciBsZWZ0IHNpYmxpbmcuCisgICAgICBub2RlX3R5cGUgKmxlZnQgPSBwYXJlbnQtPmNoaWxk
KG5vZGUtPnBvc2l0aW9uKCkgLSAxKTsKKyAgICAgIGFzc2VydChsZWZ0LT5tYXhfY291bnQoKSA9
PSBrTm9kZVZhbHVlcyk7CisgICAgICBpZiAobGVmdC0+Y291bnQoKSA8IGtOb2RlVmFsdWVzKSB7
CisgICAgICAgIC8vIFdlIGJpYXMgcmViYWxhbmNpbmcgYmFzZWQgb24gdGhlIHBvc2l0aW9uIGJl
aW5nIGluc2VydGVkLiBJZiB3ZSdyZQorICAgICAgICAvLyBpbnNlcnRpbmcgYXQgdGhlIGVuZCBv
ZiB0aGUgcmlnaHQgbm9kZSB0aGVuIHdlIGJpYXMgcmViYWxhbmNpbmcgdG8KKyAgICAgICAgLy8g
ZmlsbCB1cCB0aGUgbGVmdCBub2RlLgorICAgICAgICBpbnQgdG9fbW92ZSA9IChrTm9kZVZhbHVl
cyAtIGxlZnQtPmNvdW50KCkpIC8KKyAgICAgICAgICAgICAgICAgICAgICAoMSArIChpbnNlcnRf
cG9zaXRpb24gPCBrTm9kZVZhbHVlcykpOworICAgICAgICB0b19tb3ZlID0gKHN0ZDo6bWF4KSgx
LCB0b19tb3ZlKTsKKworICAgICAgICBpZiAoKChpbnNlcnRfcG9zaXRpb24gLSB0b19tb3ZlKSA+
PSAwKSB8fAorICAgICAgICAgICAgKChsZWZ0LT5jb3VudCgpICsgdG9fbW92ZSkgPCBrTm9kZVZh
bHVlcykpIHsKKyAgICAgICAgICBsZWZ0LT5yZWJhbGFuY2VfcmlnaHRfdG9fbGVmdCh0b19tb3Zl
LCBub2RlLCBtdXRhYmxlX2FsbG9jYXRvcigpKTsKKworICAgICAgICAgIGFzc2VydChub2RlLT5t
YXhfY291bnQoKSAtIG5vZGUtPmNvdW50KCkgPT0gdG9fbW92ZSk7CisgICAgICAgICAgaW5zZXJ0
X3Bvc2l0aW9uID0gaW5zZXJ0X3Bvc2l0aW9uIC0gdG9fbW92ZTsKKyAgICAgICAgICBpZiAoaW5z
ZXJ0X3Bvc2l0aW9uIDwgMCkgeworICAgICAgICAgICAgaW5zZXJ0X3Bvc2l0aW9uID0gaW5zZXJ0
X3Bvc2l0aW9uICsgbGVmdC0+Y291bnQoKSArIDE7CisgICAgICAgICAgICBub2RlID0gbGVmdDsK
KyAgICAgICAgICB9CisKKyAgICAgICAgICBhc3NlcnQobm9kZS0+Y291bnQoKSA8IG5vZGUtPm1h
eF9jb3VudCgpKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAobm9kZS0+cG9zaXRpb24oKSA8IHBhcmVudC0+Y291bnQoKSkgeworICAgICAg
Ly8gVHJ5IHJlYmFsYW5jaW5nIHdpdGggb3VyIHJpZ2h0IHNpYmxpbmcuCisgICAgICBub2RlX3R5
cGUgKnJpZ2h0ID0gcGFyZW50LT5jaGlsZChub2RlLT5wb3NpdGlvbigpICsgMSk7CisgICAgICBh
c3NlcnQocmlnaHQtPm1heF9jb3VudCgpID09IGtOb2RlVmFsdWVzKTsKKyAgICAgIGlmIChyaWdo
dC0+Y291bnQoKSA8IGtOb2RlVmFsdWVzKSB7CisgICAgICAgIC8vIFdlIGJpYXMgcmViYWxhbmNp
bmcgYmFzZWQgb24gdGhlIHBvc2l0aW9uIGJlaW5nIGluc2VydGVkLiBJZiB3ZSdyZQorICAgICAg
ICAvLyBpbnNlcnRpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGVmdCBub2RlIHRoZW4gd2Ug
YmlhcyByZWJhbGFuY2luZworICAgICAgICAvLyB0byBmaWxsIHVwIHRoZSByaWdodCBub2RlLgor
ICAgICAgICBpbnQgdG9fbW92ZSA9CisgICAgICAgICAgICAoa05vZGVWYWx1ZXMgLSByaWdodC0+
Y291bnQoKSkgLyAoMSArIChpbnNlcnRfcG9zaXRpb24gPiAwKSk7CisgICAgICAgIHRvX21vdmUg
PSAoc3RkOjptYXgpKDEsIHRvX21vdmUpOworCisgICAgICAgIGlmICgoaW5zZXJ0X3Bvc2l0aW9u
IDw9IChub2RlLT5jb3VudCgpIC0gdG9fbW92ZSkpIHx8CisgICAgICAgICAgICAoKHJpZ2h0LT5j
b3VudCgpICsgdG9fbW92ZSkgPCBrTm9kZVZhbHVlcykpIHsKKyAgICAgICAgICBub2RlLT5yZWJh
bGFuY2VfbGVmdF90b19yaWdodCh0b19tb3ZlLCByaWdodCwgbXV0YWJsZV9hbGxvY2F0b3IoKSk7
CisKKyAgICAgICAgICBpZiAoaW5zZXJ0X3Bvc2l0aW9uID4gbm9kZS0+Y291bnQoKSkgeworICAg
ICAgICAgICAgaW5zZXJ0X3Bvc2l0aW9uID0gaW5zZXJ0X3Bvc2l0aW9uIC0gbm9kZS0+Y291bnQo
KSAtIDE7CisgICAgICAgICAgICBub2RlID0gcmlnaHQ7CisgICAgICAgICAgfQorCisgICAgICAg
ICAgYXNzZXJ0KG5vZGUtPmNvdW50KCkgPCBub2RlLT5tYXhfY291bnQoKSk7CisgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgLy8gUmViYWxhbmNpbmcg
ZmFpbGVkLCBtYWtlIHN1cmUgdGhlcmUgaXMgcm9vbSBvbiB0aGUgcGFyZW50IG5vZGUgZm9yIGEg
bmV3CisgICAgLy8gdmFsdWUuCisgICAgYXNzZXJ0KHBhcmVudC0+bWF4X2NvdW50KCkgPT0ga05v
ZGVWYWx1ZXMpOworICAgIGlmIChwYXJlbnQtPmNvdW50KCkgPT0ga05vZGVWYWx1ZXMpIHsKKyAg
ICAgIGl0ZXJhdG9yIHBhcmVudF9pdGVyKG5vZGUtPnBhcmVudCgpLCBub2RlLT5wb3NpdGlvbigp
KTsKKyAgICAgIHJlYmFsYW5jZV9vcl9zcGxpdCgmcGFyZW50X2l0ZXIpOworICAgIH0KKyAgfSBl
bHNlIHsKKyAgICAvLyBSZWJhbGFuY2luZyBub3QgcG9zc2libGUgYmVjYXVzZSB0aGlzIGlzIHRo
ZSByb290IG5vZGUuCisgICAgLy8gQ3JlYXRlIGEgbmV3IHJvb3Qgbm9kZSBhbmQgc2V0IHRoZSBj
dXJyZW50IHJvb3Qgbm9kZSBhcyB0aGUgY2hpbGQgb2YgdGhlCisgICAgLy8gbmV3IHJvb3QuCisg
ICAgcGFyZW50ID0gbmV3X2ludGVybmFsX25vZGUocGFyZW50KTsKKyAgICBwYXJlbnQtPmluaXRf
Y2hpbGQoMCwgcm9vdCgpKTsKKyAgICBtdXRhYmxlX3Jvb3QoKSA9IHBhcmVudDsKKyAgICAvLyBJ
ZiB0aGUgZm9ybWVyIHJvb3Qgd2FzIGEgbGVhZiBub2RlLCB0aGVuIGl0J3Mgbm93IHRoZSByaWdo
dG1vc3Qgbm9kZS4KKyAgICBhc3NlcnQoIXBhcmVudC0+Y2hpbGQoMCktPmxlYWYoKSB8fCBwYXJl
bnQtPmNoaWxkKDApID09IHJpZ2h0bW9zdF8pOworICB9CisKKyAgLy8gU3BsaXQgdGhlIG5vZGUu
CisgIG5vZGVfdHlwZSAqc3BsaXRfbm9kZTsKKyAgaWYgKG5vZGUtPmxlYWYoKSkgeworICAgIHNw
bGl0X25vZGUgPSBuZXdfbGVhZl9ub2RlKHBhcmVudCk7CisgICAgbm9kZS0+c3BsaXQoaW5zZXJ0
X3Bvc2l0aW9uLCBzcGxpdF9ub2RlLCBtdXRhYmxlX2FsbG9jYXRvcigpKTsKKyAgICBpZiAocmln
aHRtb3N0XyA9PSBub2RlKSByaWdodG1vc3RfID0gc3BsaXRfbm9kZTsKKyAgfSBlbHNlIHsKKyAg
ICBzcGxpdF9ub2RlID0gbmV3X2ludGVybmFsX25vZGUocGFyZW50KTsKKyAgICBub2RlLT5zcGxp
dChpbnNlcnRfcG9zaXRpb24sIHNwbGl0X25vZGUsIG11dGFibGVfYWxsb2NhdG9yKCkpOworICB9
CisKKyAgaWYgKGluc2VydF9wb3NpdGlvbiA+IG5vZGUtPmNvdW50KCkpIHsKKyAgICBpbnNlcnRf
cG9zaXRpb24gPSBpbnNlcnRfcG9zaXRpb24gLSBub2RlLT5jb3VudCgpIC0gMTsKKyAgICBub2Rl
ID0gc3BsaXRfbm9kZTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3ZvaWQgYnRy
ZWU8UD46Om1lcmdlX25vZGVzKG5vZGVfdHlwZSAqbGVmdCwgbm9kZV90eXBlICpyaWdodCkgewor
ICBsZWZ0LT5tZXJnZShyaWdodCwgbXV0YWJsZV9hbGxvY2F0b3IoKSk7CisgIGlmIChyaWdodC0+
bGVhZigpKSB7CisgICAgaWYgKHJpZ2h0bW9zdF8gPT0gcmlnaHQpIHJpZ2h0bW9zdF8gPSBsZWZ0
OworICAgIGRlbGV0ZV9sZWFmX25vZGUocmlnaHQpOworICB9IGVsc2UgeworICAgIGRlbGV0ZV9p
bnRlcm5hbF9ub2RlKHJpZ2h0KTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK2Jv
b2wgYnRyZWU8UD46OnRyeV9tZXJnZV9vcl9yZWJhbGFuY2UoaXRlcmF0b3IgKml0ZXIpIHsKKyAg
bm9kZV90eXBlICpwYXJlbnQgPSBpdGVyLT5ub2RlLT5wYXJlbnQoKTsKKyAgaWYgKGl0ZXItPm5v
ZGUtPnBvc2l0aW9uKCkgPiAwKSB7CisgICAgLy8gVHJ5IG1lcmdpbmcgd2l0aCBvdXIgbGVmdCBz
aWJsaW5nLgorICAgIG5vZGVfdHlwZSAqbGVmdCA9IHBhcmVudC0+Y2hpbGQoaXRlci0+bm9kZS0+
cG9zaXRpb24oKSAtIDEpOworICAgIGFzc2VydChsZWZ0LT5tYXhfY291bnQoKSA9PSBrTm9kZVZh
bHVlcyk7CisgICAgaWYgKCgxICsgbGVmdC0+Y291bnQoKSArIGl0ZXItPm5vZGUtPmNvdW50KCkp
IDw9IGtOb2RlVmFsdWVzKSB7CisgICAgICBpdGVyLT5wb3NpdGlvbiArPSAxICsgbGVmdC0+Y291
bnQoKTsKKyAgICAgIG1lcmdlX25vZGVzKGxlZnQsIGl0ZXItPm5vZGUpOworICAgICAgaXRlci0+
bm9kZSA9IGxlZnQ7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgIH0KKyAgaWYgKGl0ZXIt
Pm5vZGUtPnBvc2l0aW9uKCkgPCBwYXJlbnQtPmNvdW50KCkpIHsKKyAgICAvLyBUcnkgbWVyZ2lu
ZyB3aXRoIG91ciByaWdodCBzaWJsaW5nLgorICAgIG5vZGVfdHlwZSAqcmlnaHQgPSBwYXJlbnQt
PmNoaWxkKGl0ZXItPm5vZGUtPnBvc2l0aW9uKCkgKyAxKTsKKyAgICBhc3NlcnQocmlnaHQtPm1h
eF9jb3VudCgpID09IGtOb2RlVmFsdWVzKTsKKyAgICBpZiAoKDEgKyBpdGVyLT5ub2RlLT5jb3Vu
dCgpICsgcmlnaHQtPmNvdW50KCkpIDw9IGtOb2RlVmFsdWVzKSB7CisgICAgICBtZXJnZV9ub2Rl
cyhpdGVyLT5ub2RlLCByaWdodCk7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgLy8g
VHJ5IHJlYmFsYW5jaW5nIHdpdGggb3VyIHJpZ2h0IHNpYmxpbmcuIFdlIGRvbid0IHBlcmZvcm0g
cmViYWxhbmNpbmcgaWYKKyAgICAvLyB3ZSBkZWxldGVkIHRoZSBmaXJzdCBlbGVtZW50IGZyb20g
aXRlci0+bm9kZSBhbmQgdGhlIG5vZGUgaXMgbm90CisgICAgLy8gZW1wdHkuIFRoaXMgaXMgYSBz
bWFsbCBvcHRpbWl6YXRpb24gZm9yIHRoZSBjb21tb24gcGF0dGVybiBvZiBkZWxldGluZworICAg
IC8vIGZyb20gdGhlIGZyb250IG9mIHRoZSB0cmVlLgorICAgIGlmICgocmlnaHQtPmNvdW50KCkg
PiBrTWluTm9kZVZhbHVlcykgJiYKKyAgICAgICAgKChpdGVyLT5ub2RlLT5jb3VudCgpID09IDAp
IHx8CisgICAgICAgICAoaXRlci0+cG9zaXRpb24gPiAwKSkpIHsKKyAgICAgIGludCB0b19tb3Zl
ID0gKHJpZ2h0LT5jb3VudCgpIC0gaXRlci0+bm9kZS0+Y291bnQoKSkgLyAyOworICAgICAgdG9f
bW92ZSA9IChzdGQ6Om1pbikodG9fbW92ZSwgcmlnaHQtPmNvdW50KCkgLSAxKTsKKyAgICAgIGl0
ZXItPm5vZGUtPnJlYmFsYW5jZV9yaWdodF90b19sZWZ0KHRvX21vdmUsIHJpZ2h0LCBtdXRhYmxl
X2FsbG9jYXRvcigpKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKyAgaWYgKGl0
ZXItPm5vZGUtPnBvc2l0aW9uKCkgPiAwKSB7CisgICAgLy8gVHJ5IHJlYmFsYW5jaW5nIHdpdGgg
b3VyIGxlZnQgc2libGluZy4gV2UgZG9uJ3QgcGVyZm9ybSByZWJhbGFuY2luZyBpZgorICAgIC8v
IHdlIGRlbGV0ZWQgdGhlIGxhc3QgZWxlbWVudCBmcm9tIGl0ZXItPm5vZGUgYW5kIHRoZSBub2Rl
IGlzIG5vdAorICAgIC8vIGVtcHR5LiBUaGlzIGlzIGEgc21hbGwgb3B0aW1pemF0aW9uIGZvciB0
aGUgY29tbW9uIHBhdHRlcm4gb2YgZGVsZXRpbmcKKyAgICAvLyBmcm9tIHRoZSBiYWNrIG9mIHRo
ZSB0cmVlLgorICAgIG5vZGVfdHlwZSAqbGVmdCA9IHBhcmVudC0+Y2hpbGQoaXRlci0+bm9kZS0+
cG9zaXRpb24oKSAtIDEpOworICAgIGlmICgobGVmdC0+Y291bnQoKSA+IGtNaW5Ob2RlVmFsdWVz
KSAmJgorICAgICAgICAoKGl0ZXItPm5vZGUtPmNvdW50KCkgPT0gMCkgfHwKKyAgICAgICAgIChp
dGVyLT5wb3NpdGlvbiA8IGl0ZXItPm5vZGUtPmNvdW50KCkpKSkgeworICAgICAgaW50IHRvX21v
dmUgPSAobGVmdC0+Y291bnQoKSAtIGl0ZXItPm5vZGUtPmNvdW50KCkpIC8gMjsKKyAgICAgIHRv
X21vdmUgPSAoc3RkOjptaW4pKHRvX21vdmUsIGxlZnQtPmNvdW50KCkgLSAxKTsKKyAgICAgIGxl
ZnQtPnJlYmFsYW5jZV9sZWZ0X3RvX3JpZ2h0KHRvX21vdmUsIGl0ZXItPm5vZGUsIG11dGFibGVf
YWxsb2NhdG9yKCkpOworICAgICAgaXRlci0+cG9zaXRpb24gKz0gdG9fbW92ZTsKKyAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUD4KK3ZvaWQgYnRyZWU8UD46OnRyeV9zaHJpbmsoKSB7CisgIGlmIChyb290KCkt
PmNvdW50KCkgPiAwKSB7CisgICAgcmV0dXJuOworICB9CisgIC8vIERlbGV0ZWQgdGhlIGxhc3Qg
aXRlbSBvbiB0aGUgcm9vdCBub2RlLCBzaHJpbmsgdGhlIGhlaWdodCBvZiB0aGUgdHJlZS4KKyAg
aWYgKHJvb3QoKS0+bGVhZigpKSB7CisgICAgYXNzZXJ0KHNpemUoKSA9PSAwKTsKKyAgICBkZWxl
dGVfbGVhZl9ub2RlKHJvb3QoKSk7CisgICAgbXV0YWJsZV9yb290KCkgPSBFbXB0eU5vZGUoKTsK
KyAgICByaWdodG1vc3RfID0gRW1wdHlOb2RlKCk7CisgIH0gZWxzZSB7CisgICAgbm9kZV90eXBl
ICpjaGlsZCA9IHJvb3QoKS0+Y2hpbGQoMCk7CisgICAgY2hpbGQtPm1ha2Vfcm9vdCgpOworICAg
IGRlbGV0ZV9pbnRlcm5hbF9ub2RlKHJvb3QoKSk7CisgICAgbXV0YWJsZV9yb290KCkgPSBjaGls
ZDsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJ
dGVyVHlwZT4KK2lubGluZSBJdGVyVHlwZSBidHJlZTxQPjo6aW50ZXJuYWxfbGFzdChJdGVyVHlw
ZSBpdGVyKSB7CisgIGFzc2VydChpdGVyLm5vZGUgIT0gbnVsbHB0cik7CisgIHdoaWxlIChpdGVy
LnBvc2l0aW9uID09IGl0ZXIubm9kZS0+Y291bnQoKSkgeworICAgIGl0ZXIucG9zaXRpb24gPSBp
dGVyLm5vZGUtPnBvc2l0aW9uKCk7CisgICAgaXRlci5ub2RlID0gaXRlci5ub2RlLT5wYXJlbnQo
KTsKKyAgICBpZiAoaXRlci5ub2RlLT5sZWFmKCkpIHsKKyAgICAgIGl0ZXIubm9kZSA9IG51bGxw
dHI7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGl0ZXI7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CitpbmxpbmUgYXV0
byBidHJlZTxQPjo6aW50ZXJuYWxfZW1wbGFjZShpdGVyYXRvciBpdGVyLCBBcmdzICYmLi4uIGFy
Z3MpCisgICAgLT4gaXRlcmF0b3IgeworICBpZiAoIWl0ZXIubm9kZS0+bGVhZigpKSB7CisgICAg
Ly8gV2UgY2FuJ3QgaW5zZXJ0IG9uIGFuIGludGVybmFsIG5vZGUuIEluc3RlYWQsIHdlJ2xsIGlu
c2VydCBhZnRlciB0aGUKKyAgICAvLyBwcmV2aW91cyB2YWx1ZSB3aGljaCBpcyBndWFyYW50ZWVk
IHRvIGJlIG9uIGEgbGVhZiBub2RlLgorICAgIC0taXRlcjsKKyAgICArK2l0ZXIucG9zaXRpb247
CisgIH0KKyAgY29uc3QgaW50IG1heF9jb3VudCA9IGl0ZXIubm9kZS0+bWF4X2NvdW50KCk7Cisg
IGlmIChpdGVyLm5vZGUtPmNvdW50KCkgPT0gbWF4X2NvdW50KSB7CisgICAgLy8gTWFrZSByb29t
IGluIHRoZSBsZWFmIGZvciB0aGUgbmV3IGl0ZW0uCisgICAgaWYgKG1heF9jb3VudCA8IGtOb2Rl
VmFsdWVzKSB7CisgICAgICAvLyBJbnNlcnRpb24gaW50byB0aGUgcm9vdCB3aGVyZSB0aGUgcm9v
dCBpcyBzbWFsbGVyIHRoYW4gdGhlIGZ1bGwgbm9kZQorICAgICAgLy8gc2l6ZS4gU2ltcGx5IGdy
b3cgdGhlIHNpemUgb2YgdGhlIHJvb3Qgbm9kZS4KKyAgICAgIGFzc2VydChpdGVyLm5vZGUgPT0g
cm9vdCgpKTsKKyAgICAgIGl0ZXIubm9kZSA9CisgICAgICAgICAgbmV3X2xlYWZfcm9vdF9ub2Rl
KChzdGQ6Om1pbjxpbnQ+KShrTm9kZVZhbHVlcywgMiAqIG1heF9jb3VudCkpOworICAgICAgaXRl
ci5ub2RlLT5zd2FwKHJvb3QoKSwgbXV0YWJsZV9hbGxvY2F0b3IoKSk7CisgICAgICBkZWxldGVf
bGVhZl9ub2RlKHJvb3QoKSk7CisgICAgICBtdXRhYmxlX3Jvb3QoKSA9IGl0ZXIubm9kZTsKKyAg
ICAgIHJpZ2h0bW9zdF8gPSBpdGVyLm5vZGU7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlYmFsYW5j
ZV9vcl9zcGxpdCgmaXRlcik7CisgICAgfQorICB9CisgIGl0ZXIubm9kZS0+ZW1wbGFjZV92YWx1
ZShpdGVyLnBvc2l0aW9uLCBtdXRhYmxlX2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgKytzaXplXzsKKyAgcmV0
dXJuIGl0ZXI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVuYW1l
IEs+CitpbmxpbmUgYXV0byBidHJlZTxQPjo6aW50ZXJuYWxfbG9jYXRlKGNvbnN0IEsgJmtleSkg
Y29uc3QKKyAgICAtPiBTZWFyY2hSZXN1bHQ8aXRlcmF0b3IsIGlzX2tleV9jb21wYXJlX3RvOjp2
YWx1ZT4geworICByZXR1cm4gaW50ZXJuYWxfbG9jYXRlX2ltcGwoa2V5LCBpc19rZXlfY29tcGFy
ZV90bygpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Sz4KK2lubGluZSBhdXRvIGJ0cmVlPFA+OjppbnRlcm5hbF9sb2NhdGVfaW1wbCgKKyAgICBjb25z
dCBLICZrZXksIHN0ZDo6ZmFsc2VfdHlwZSAvKiBJc0NvbXBhcmVUbyAqLykgY29uc3QKKyAgICAt
PiBTZWFyY2hSZXN1bHQ8aXRlcmF0b3IsIGZhbHNlPiB7CisgIGl0ZXJhdG9yIGl0ZXIoY29uc3Rf
Y2FzdDxub2RlX3R5cGUgKj4ocm9vdCgpKSwgMCk7CisgIGZvciAoOzspIHsKKyAgICBpdGVyLnBv
c2l0aW9uID0gaXRlci5ub2RlLT5sb3dlcl9ib3VuZChrZXksIGtleV9jb21wKCkpLnZhbHVlOwor
ICAgIC8vIE5PVEU6IHdlIGRvbid0IG5lZWQgdG8gd2FsayBhbGwgdGhlIHdheSBkb3duIHRoZSB0
cmVlIGlmIHRoZSBrZXlzIGFyZQorICAgIC8vIGVxdWFsLCBidXQgZGV0ZXJtaW5pbmcgZXF1YWxp
dHkgd291bGQgcmVxdWlyZSBkb2luZyBhbiBleHRyYSBjb21wYXJpc29uCisgICAgLy8gb24gZWFj
aCBub2RlIG9uIHRoZSB3YXkgZG93biwgYW5kIHdlIHdpbGwgbmVlZCB0byBnbyBhbGwgdGhlIHdh
eSB0byB0aGUKKyAgICAvLyBsZWFmIG5vZGUgaW4gdGhlIGV4cGVjdGVkIGNhc2UuCisgICAgaWYg
KGl0ZXIubm9kZS0+bGVhZigpKSB7CisgICAgICBicmVhazsKKyAgICB9CisgICAgaXRlci5ub2Rl
ID0gaXRlci5ub2RlLT5jaGlsZChpdGVyLnBvc2l0aW9uKTsKKyAgfQorICByZXR1cm4ge2l0ZXJ9
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBLPgoraW5s
aW5lIGF1dG8gYnRyZWU8UD46OmludGVybmFsX2xvY2F0ZV9pbXBsKAorICAgIGNvbnN0IEsgJmtl
eSwgc3RkOjp0cnVlX3R5cGUgLyogSXNDb21wYXJlVG8gKi8pIGNvbnN0CisgICAgLT4gU2VhcmNo
UmVzdWx0PGl0ZXJhdG9yLCB0cnVlPiB7CisgIGl0ZXJhdG9yIGl0ZXIoY29uc3RfY2FzdDxub2Rl
X3R5cGUgKj4ocm9vdCgpKSwgMCk7CisgIGZvciAoOzspIHsKKyAgICBTZWFyY2hSZXN1bHQ8aW50
LCB0cnVlPiByZXMgPSBpdGVyLm5vZGUtPmxvd2VyX2JvdW5kKGtleSwga2V5X2NvbXAoKSk7Cisg
ICAgaXRlci5wb3NpdGlvbiA9IHJlcy52YWx1ZTsKKyAgICBpZiAocmVzLm1hdGNoID09IE1hdGNo
S2luZDo6a0VxKSB7CisgICAgICByZXR1cm4ge2l0ZXIsIE1hdGNoS2luZDo6a0VxfTsKKyAgICB9
CisgICAgaWYgKGl0ZXIubm9kZS0+bGVhZigpKSB7CisgICAgICBicmVhazsKKyAgICB9CisgICAg
aXRlci5ub2RlID0gaXRlci5ub2RlLT5jaGlsZChpdGVyLnBvc2l0aW9uKTsKKyAgfQorICByZXR1
cm4ge2l0ZXIsIE1hdGNoS2luZDo6a05lfTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFA+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KK2F1dG8gYnRyZWU8UD46OmludGVybmFsX2xvd2VyX2JvdW5k
KGNvbnN0IEsgJmtleSkgY29uc3QgLT4gaXRlcmF0b3IgeworICBpdGVyYXRvciBpdGVyKGNvbnN0
X2Nhc3Q8bm9kZV90eXBlICo+KHJvb3QoKSksIDApOworICBmb3IgKDs7KSB7CisgICAgaXRlci5w
b3NpdGlvbiA9IGl0ZXIubm9kZS0+bG93ZXJfYm91bmQoa2V5LCBrZXlfY29tcCgpKS52YWx1ZTsK
KyAgICBpZiAoaXRlci5ub2RlLT5sZWFmKCkpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBp
dGVyLm5vZGUgPSBpdGVyLm5vZGUtPmNoaWxkKGl0ZXIucG9zaXRpb24pOworICB9CisgIHJldHVy
biBpbnRlcm5hbF9sYXN0KGl0ZXIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBLPgorYXV0byBidHJlZTxQPjo6aW50ZXJuYWxfdXBwZXJfYm91bmQoY29u
c3QgSyAma2V5KSBjb25zdCAtPiBpdGVyYXRvciB7CisgIGl0ZXJhdG9yIGl0ZXIoY29uc3RfY2Fz
dDxub2RlX3R5cGUgKj4ocm9vdCgpKSwgMCk7CisgIGZvciAoOzspIHsKKyAgICBpdGVyLnBvc2l0
aW9uID0gaXRlci5ub2RlLT51cHBlcl9ib3VuZChrZXksIGtleV9jb21wKCkpOworICAgIGlmIChp
dGVyLm5vZGUtPmxlYWYoKSkgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIGl0ZXIubm9kZSA9
IGl0ZXIubm9kZS0+Y2hpbGQoaXRlci5wb3NpdGlvbik7CisgIH0KKyAgcmV0dXJuIGludGVybmFs
X2xhc3QoaXRlcik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQPgordGVtcGxhdGUgPHR5cGVu
YW1lIEs+CithdXRvIGJ0cmVlPFA+OjppbnRlcm5hbF9maW5kKGNvbnN0IEsgJmtleSkgY29uc3Qg
LT4gaXRlcmF0b3IgeworICBhdXRvIHJlcyA9IGludGVybmFsX2xvY2F0ZShrZXkpOworICBpZiAo
cmVzLkhhc01hdGNoKCkpIHsKKyAgICBpZiAocmVzLklzRXEoKSkgeworICAgICAgcmV0dXJuIHJl
cy52YWx1ZTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgY29uc3QgaXRlcmF0b3IgaXRlciA9IGlu
dGVybmFsX2xhc3QocmVzLnZhbHVlKTsKKyAgICBpZiAoaXRlci5ub2RlICE9IG51bGxwdHIgJiYg
IWNvbXBhcmVfa2V5cyhrZXksIGl0ZXIua2V5KCkpKSB7CisgICAgICByZXR1cm4gaXRlcjsKKyAg
ICB9CisgIH0KKyAgcmV0dXJuIHtudWxscHRyLCAwfTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFA+Cit2b2lkIGJ0cmVlPFA+OjppbnRlcm5hbF9jbGVhcihub2RlX3R5cGUgKm5vZGUpIHsKKyAg
aWYgKCFub2RlLT5sZWFmKCkpIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8PSBub2RlLT5jb3Vu
dCgpOyArK2kpIHsKKyAgICAgIGludGVybmFsX2NsZWFyKG5vZGUtPmNoaWxkKGkpKTsKKyAgICB9
CisgICAgZGVsZXRlX2ludGVybmFsX25vZGUobm9kZSk7CisgIH0gZWxzZSB7CisgICAgZGVsZXRl
X2xlYWZfbm9kZShub2RlKTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KK2ludCBi
dHJlZTxQPjo6aW50ZXJuYWxfdmVyaWZ5KAorICAgIGNvbnN0IG5vZGVfdHlwZSAqbm9kZSwgY29u
c3Qga2V5X3R5cGUgKmxvLCBjb25zdCBrZXlfdHlwZSAqaGkpIGNvbnN0IHsKKyAgYXNzZXJ0KG5v
ZGUtPmNvdW50KCkgPiAwKTsKKyAgYXNzZXJ0KG5vZGUtPmNvdW50KCkgPD0gbm9kZS0+bWF4X2Nv
dW50KCkpOworICBpZiAobG8pIHsKKyAgICBhc3NlcnQoIWNvbXBhcmVfa2V5cyhub2RlLT5rZXko
MCksICpsbykpOworICB9CisgIGlmIChoaSkgeworICAgIGFzc2VydCghY29tcGFyZV9rZXlzKCpo
aSwgbm9kZS0+a2V5KG5vZGUtPmNvdW50KCkgLSAxKSkpOworICB9CisgIGZvciAoaW50IGkgPSAx
OyBpIDwgbm9kZS0+Y291bnQoKTsgKytpKSB7CisgICAgYXNzZXJ0KCFjb21wYXJlX2tleXMobm9k
ZS0+a2V5KGkpLCBub2RlLT5rZXkoaSAtIDEpKSk7CisgIH0KKyAgaW50IGNvdW50ID0gbm9kZS0+
Y291bnQoKTsKKyAgaWYgKCFub2RlLT5sZWFmKCkpIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
PSBub2RlLT5jb3VudCgpOyArK2kpIHsKKyAgICAgIGFzc2VydChub2RlLT5jaGlsZChpKSAhPSBu
dWxscHRyKTsKKyAgICAgIGFzc2VydChub2RlLT5jaGlsZChpKS0+cGFyZW50KCkgPT0gbm9kZSk7
CisgICAgICBhc3NlcnQobm9kZS0+Y2hpbGQoaSktPnBvc2l0aW9uKCkgPT0gaSk7CisgICAgICBj
b3VudCArPSBpbnRlcm5hbF92ZXJpZnkoCisgICAgICAgICAgbm9kZS0+Y2hpbGQoaSksCisgICAg
ICAgICAgKGkgPT0gMCkgPyBsbyA6ICZub2RlLT5rZXkoaSAtIDEpLAorICAgICAgICAgIChpID09
IG5vZGUtPmNvdW50KCkpID8gaGkgOiAmbm9kZS0+a2V5KGkpKTsKKyAgICB9CisgIH0KKyAgcmV0
dXJuIGNvdW50OworfQorCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAv
LyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0JU
UkVFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvYnRyZWVfY29udGFp
bmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvYnRyZWVfY29udGFpbmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzI2ODYxZDViYmIxODkzYjJhYjliOWE4MWExNTc5NWNjYWFiMGU2YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9idHJlZV9jb250YWluZXIuaApAQCAt
MCwwICsxLDYwOSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQlRSRUVfQ09OVEFJTkVSX0hfCisjZGVm
aW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0JUUkVFX0NPTlRBSU5FUl9IXworCisjaW5jbHVk
ZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisjaW5jbHVkZSA8aXRl
cmF0b3I+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5h
bC90aHJvd19kZWxlZ2F0ZS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2J0
cmVlLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvY29tbW9uLmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisK
K25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCisvLyBB
IGNvbW1vbiBiYXNlIGNsYXNzIGZvciBidHJlZV9zZXQsIGJ0cmVlX21hcCwgYnRyZWVfbXVsdGlz
ZXQsIGFuZAorLy8gYnRyZWVfbXVsdGltYXAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZT4KK2Ns
YXNzIGJ0cmVlX2NvbnRhaW5lciB7CisgIHVzaW5nIHBhcmFtc190eXBlID0gdHlwZW5hbWUgVHJl
ZTo6cGFyYW1zX3R5cGU7CisKKyBwcm90ZWN0ZWQ6CisgIC8vIEFsaWFzIHVzZWQgZm9yIGhldGVy
b2dlbmVvdXMgbG9va3VwIGZ1bmN0aW9ucy4KKyAgLy8gYGtleV9hcmc8Sz5gIGV2YWx1YXRlcyB0
byBgS2Agd2hlbiB0aGUgZnVuY3RvcnMgYXJlIHRyYW5zcGFyZW50IGFuZCB0bworICAvLyBga2V5
X3R5cGVgIG90aGVyd2lzZS4gSXQgcGVybWl0cyB0ZW1wbGF0ZSBhcmd1bWVudCBkZWR1Y3Rpb24g
b24gYEtgIGZvciB0aGUKKyAgLy8gdHJhbnNwYXJlbnQgY2FzZS4KKyAgdGVtcGxhdGUgPGNsYXNz
IEs+CisgIHVzaW5nIGtleV9hcmcgPQorICAgICAgdHlwZW5hbWUgS2V5QXJnPElzVHJhbnNwYXJl
bnQ8dHlwZW5hbWUgVHJlZTo6a2V5X2NvbXBhcmU+Ojp2YWx1ZT46OgorICAgICAgICAgIHRlbXBs
YXRlIHR5cGU8SywgdHlwZW5hbWUgVHJlZTo6a2V5X3R5cGU+OworCisgcHVibGljOgorICB1c2lu
ZyBrZXlfdHlwZSA9IHR5cGVuYW1lIFRyZWU6OmtleV90eXBlOworICB1c2luZyB2YWx1ZV90eXBl
ID0gdHlwZW5hbWUgVHJlZTo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5h
bWUgVHJlZTo6c2l6ZV90eXBlOworICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBU
cmVlOjpkaWZmZXJlbmNlX3R5cGU7CisgIHVzaW5nIGtleV9jb21wYXJlID0gdHlwZW5hbWUgVHJl
ZTo6a2V5X2NvbXBhcmU7CisgIHVzaW5nIHZhbHVlX2NvbXBhcmUgPSB0eXBlbmFtZSBUcmVlOjp2
YWx1ZV9jb21wYXJlOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1lIFRyZWU6OmFs
bG9jYXRvcl90eXBlOworICB1c2luZyByZWZlcmVuY2UgPSB0eXBlbmFtZSBUcmVlOjpyZWZlcmVu
Y2U7CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IHR5cGVuYW1lIFRyZWU6OmNvbnN0X3JlZmVy
ZW5jZTsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIFRyZWU6OnBvaW50ZXI7CisgIHVzaW5n
IGNvbnN0X3BvaW50ZXIgPSB0eXBlbmFtZSBUcmVlOjpjb25zdF9wb2ludGVyOworICB1c2luZyBp
dGVyYXRvciA9IHR5cGVuYW1lIFRyZWU6Oml0ZXJhdG9yOworICB1c2luZyBjb25zdF9pdGVyYXRv
ciA9IHR5cGVuYW1lIFRyZWU6OmNvbnN0X2l0ZXJhdG9yOworICB1c2luZyByZXZlcnNlX2l0ZXJh
dG9yID0gdHlwZW5hbWUgVHJlZTo6cmV2ZXJzZV9pdGVyYXRvcjsKKyAgdXNpbmcgY29uc3RfcmV2
ZXJzZV9pdGVyYXRvciA9IHR5cGVuYW1lIFRyZWU6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Cisg
IHVzaW5nIG5vZGVfdHlwZSA9IHR5cGVuYW1lIFRyZWU6Om5vZGVfaGFuZGxlX3R5cGU7CisKKyAg
Ly8gQ29uc3RydWN0b3JzL2Fzc2lnbm1lbnRzLgorICBidHJlZV9jb250YWluZXIoKSA6IHRyZWVf
KGtleV9jb21wYXJlKCksIGFsbG9jYXRvcl90eXBlKCkpIHt9CisgIGV4cGxpY2l0IGJ0cmVlX2Nv
bnRhaW5lcihjb25zdCBrZXlfY29tcGFyZSAmY29tcCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhbGxvYyA9IGFsbG9jYXRvcl90eXBlKCkpCisgICAg
ICA6IHRyZWVfKGNvbXAsIGFsbG9jKSB7fQorICBidHJlZV9jb250YWluZXIoY29uc3QgYnRyZWVf
Y29udGFpbmVyICZ4KSA9IGRlZmF1bHQ7CisgIGJ0cmVlX2NvbnRhaW5lcihidHJlZV9jb250YWlu
ZXIgJiZ4KSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgIGJ0cmVlX2NvbnRhaW5lciAmb3BlcmF0b3I9
KGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeCkgPSBkZWZhdWx0OworICBidHJlZV9jb250YWluZXIg
Jm9wZXJhdG9yPShidHJlZV9jb250YWluZXIgJiZ4KSBub2V4Y2VwdCgKKyAgICAgIHN0ZDo6aXNf
bm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8VHJlZT46OnZhbHVlKSA9IGRlZmF1bHQ7CisKKyAgLy8g
SXRlcmF0b3Igcm91dGluZXMuCisgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gdHJlZV8uYmVn
aW4oKTsgfQorICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLmJl
Z2luKCk7IH0KKyAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4gdHJlZV8u
YmVnaW4oKTsgfQorICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiB0cmVlXy5lbmQoKTsgfQorICBj
b25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiB0cmVlXy5lbmQoKTsgfQorICBjb25z
dF9pdGVyYXRvciBjZW5kKCkgY29uc3QgeyByZXR1cm4gdHJlZV8uZW5kKCk7IH0KKyAgcmV2ZXJz
ZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiB0cmVlXy5yYmVnaW4oKTsgfQorICBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLnJiZWdpbigpOyB9
CisgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHRyZWVf
LnJiZWdpbigpOyB9CisgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHRyZWVfLnJl
bmQoKTsgfQorICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiB0
cmVlXy5yZW5kKCk7IH0KKyAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmVuZCgpIGNvbnN0IHsg
cmV0dXJuIHRyZWVfLnJlbmQoKTsgfQorCisgIC8vIExvb2t1cCByb3V0aW5lcy4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgaXRlcmF0b3IgZmluZChjb25zdCBrZXlfYXJn
PEs+ICZrZXkpIHsKKyAgICByZXR1cm4gdHJlZV8uZmluZChrZXkpOworICB9CisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBLID0ga2V5X3R5cGU+CisgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3Qga2V5
X2FyZzxLPiAma2V5KSBjb25zdCB7CisgICAgcmV0dXJuIHRyZWVfLmZpbmQoa2V5KTsKKyAgfQor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSyA9IGtleV90eXBlPgorICBib29sIGNvbnRhaW5zKGNvbnN0
IGtleV9hcmc8Sz4gJmtleSkgY29uc3QgeworICAgIHJldHVybiBmaW5kKGtleSkgIT0gZW5kKCk7
CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgaXRlcmF0b3IgbG93
ZXJfYm91bmQoY29uc3Qga2V5X2FyZzxLPiAma2V5KSB7CisgICAgcmV0dXJuIHRyZWVfLmxvd2Vy
X2JvdW5kKGtleSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAg
Y29uc3RfaXRlcmF0b3IgbG93ZXJfYm91bmQoY29uc3Qga2V5X2FyZzxLPiAma2V5KSBjb25zdCB7
CisgICAgcmV0dXJuIHRyZWVfLmxvd2VyX2JvdW5kKGtleSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgaXRlcmF0b3IgdXBwZXJfYm91bmQoY29uc3Qga2V5X2Fy
ZzxLPiAma2V5KSB7CisgICAgcmV0dXJuIHRyZWVfLnVwcGVyX2JvdW5kKGtleSk7CisgIH0KKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgY29uc3RfaXRlcmF0b3IgdXBwZXJf
Ym91bmQoY29uc3Qga2V5X2FyZzxLPiAma2V5KSBjb25zdCB7CisgICAgcmV0dXJuIHRyZWVfLnVw
cGVyX2JvdW5kKGtleSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4K
KyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4gZXF1YWxfcmFuZ2UoY29uc3Qga2V5X2Fy
ZzxLPiAma2V5KSB7CisgICAgcmV0dXJuIHRyZWVfLmVxdWFsX3JhbmdlKGtleSk7CisgIH0KKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJh
dG9yLCBjb25zdF9pdGVyYXRvcj4gZXF1YWxfcmFuZ2UoCisgICAgICBjb25zdCBrZXlfYXJnPEs+
ICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gdHJlZV8uZXF1YWxfcmFuZ2Uoa2V5KTsKKyAgfQor
CisgIC8vIERlbGV0aW9uIHJvdXRpbmVzLiBOb3RlIHRoYXQgdGhlcmUgaXMgYWxzbyBhIGRlbGV0
aW9uIHJvdXRpbmUgdGhhdCBpcworICAvLyBzcGVjaWZpYyB0byBidHJlZV9zZXRfY29udGFpbmVy
L2J0cmVlX211bHRpc2V0X2NvbnRhaW5lci4KKworICAvLyBFcmFzZSB0aGUgc3BlY2lmaWVkIGl0
ZXJhdG9yIGZyb20gdGhlIGJ0cmVlLiBUaGUgaXRlcmF0b3IgbXVzdCBiZSB2YWxpZAorICAvLyAo
aS5lLiBub3QgZXF1YWwgdG8gZW5kKCkpLiAgUmV0dXJuIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRv
IHRoZSBub2RlIGFmdGVyCisgIC8vIHRoZSBvbmUgdGhhdCB3YXMgZXJhc2VkIChvciBlbmQoKSBp
ZiBub25lIGV4aXN0cykuCisgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGl0ZXIpIHsg
cmV0dXJuIHRyZWVfLmVyYXNlKGl0ZXJhdG9yKGl0ZXIpKTsgfQorICBpdGVyYXRvciBlcmFzZShp
dGVyYXRvciBpdGVyKSB7IHJldHVybiB0cmVlXy5lcmFzZShpdGVyKTsgfQorICBpdGVyYXRvciBl
cmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCkgeworICAgIHJl
dHVybiB0cmVlXy5lcmFzZShpdGVyYXRvcihmaXJzdCksIGl0ZXJhdG9yKGxhc3QpKS5zZWNvbmQ7
CisgIH0KKworICAvLyBFeHRyYWN0IHJvdXRpbmVzLgorICBub2RlX3R5cGUgZXh0cmFjdChpdGVy
YXRvciBwb3NpdGlvbikgeworICAgIC8vIFVzZSBNb3ZlIGluc3RlYWQgb2YgVHJhbnNmZXIsIGJl
Y2F1c2UgdGhlIHJlYmFsYW5jaW5nIGNvZGUgZXhwZWN0cyB0bworICAgIC8vIGhhdmUgYSB2YWxp
ZCBvYmplY3QgdG8gc2NyaWJibGUgbWV0YWRhdGEgYml0cyBvbiB0b3Agb2YuCisgICAgYXV0byBu
b2RlID0gQ29tbW9uQWNjZXNzOjpNb3ZlPG5vZGVfdHlwZT4oZ2V0X2FsbG9jYXRvcigpLCBwb3Np
dGlvbi5zbG90KCkpOworICAgIGVyYXNlKHBvc2l0aW9uKTsKKyAgICByZXR1cm4gbm9kZTsKKyAg
fQorICBub2RlX3R5cGUgZXh0cmFjdChjb25zdF9pdGVyYXRvciBwb3NpdGlvbikgeworICAgIHJl
dHVybiBleHRyYWN0KGl0ZXJhdG9yKHBvc2l0aW9uKSk7CisgIH0KKworIHB1YmxpYzoKKyAgLy8g
VXRpbGl0eSByb3V0aW5lcy4KKyAgdm9pZCBjbGVhcigpIHsgdHJlZV8uY2xlYXIoKTsgfQorICB2
b2lkIHN3YXAoYnRyZWVfY29udGFpbmVyICZ4KSB7IHRyZWVfLnN3YXAoeC50cmVlXyk7IH0KKyAg
dm9pZCB2ZXJpZnkoKSBjb25zdCB7IHRyZWVfLnZlcmlmeSgpOyB9CisKKyAgLy8gU2l6ZSByb3V0
aW5lcy4KKyAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVybiB0cmVlXy5zaXplKCk7IH0K
KyAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgeyByZXR1cm4gdHJlZV8ubWF4X3NpemUoKTsg
fQorICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gdHJlZV8uZW1wdHkoKTsgfQorCisgIGZy
aWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgYnRyZWVfY29udGFpbmVyICZ4LCBjb25zdCBidHJl
ZV9jb250YWluZXIgJnkpIHsKKyAgICBpZiAoeC5zaXplKCkgIT0geS5zaXplKCkpIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gc3RkOjplcXVhbCh4LmJlZ2luKCksIHguZW5kKCksIHkuYmVnaW4o
KSk7CisgIH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGJ0cmVlX2NvbnRhaW5l
ciAmeCwgY29uc3QgYnRyZWVfY29udGFpbmVyICZ5KSB7CisgICAgcmV0dXJuICEoeCA9PSB5KTsK
KyAgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPChjb25zdCBidHJlZV9jb250YWluZXIgJngs
IGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeSkgeworICAgIHJldHVybiBzdGQ6OmxleGljb2dyYXBo
aWNhbF9jb21wYXJlKHguYmVnaW4oKSwgeC5lbmQoKSwgeS5iZWdpbigpLCB5LmVuZCgpKTsKKyAg
fQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPihjb25zdCBidHJlZV9jb250YWluZXIgJngsIGNv
bnN0IGJ0cmVlX2NvbnRhaW5lciAmeSkgeworICAgIHJldHVybiB5IDwgeDsKKyAgfQorCisgIGZy
aWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgYnRyZWVfY29udGFpbmVyICZ4LCBjb25zdCBidHJl
ZV9jb250YWluZXIgJnkpIHsKKyAgICByZXR1cm4gISh5IDwgeCk7CisgIH0KKworICBmcmllbmQg
Ym9vbCBvcGVyYXRvcj49KGNvbnN0IGJ0cmVlX2NvbnRhaW5lciAmeCwgY29uc3QgYnRyZWVfY29u
dGFpbmVyICZ5KSB7CisgICAgcmV0dXJuICEoeCA8IHkpOworICB9CisKKyAgLy8gVGhlIGFsbG9j
YXRvciB1c2VkIGJ5IHRoZSBidHJlZS4KKyAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigp
IGNvbnN0IHsgcmV0dXJuIHRyZWVfLmdldF9hbGxvY2F0b3IoKTsgfQorCisgIC8vIFRoZSBrZXkg
Y29tcGFyYXRvciB1c2VkIGJ5IHRoZSBidHJlZS4KKyAga2V5X2NvbXBhcmUga2V5X2NvbXAoKSBj
b25zdCB7IHJldHVybiB0cmVlXy5rZXlfY29tcCgpOyB9CisgIHZhbHVlX2NvbXBhcmUgdmFsdWVf
Y29tcCgpIGNvbnN0IHsgcmV0dXJuIHRyZWVfLnZhbHVlX2NvbXAoKTsgfQorCisgIC8vIFN1cHBv
cnQgYWJzbDo6SGFzaC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0YXRlPgorICBmcmllbmQgU3Rh
dGUgQWJzbEhhc2hWYWx1ZShTdGF0ZSBoLCBjb25zdCBidHJlZV9jb250YWluZXIgJmIpIHsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8gJnYgOiBiKSB7CisgICAgICBoID0gU3RhdGU6OmNvbWJpbmUoc3Rk
Ojptb3ZlKGgpLCB2KTsKKyAgICB9CisgICAgcmV0dXJuIFN0YXRlOjpjb21iaW5lKHN0ZDo6bW92
ZShoKSwgYi5zaXplKCkpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIFRyZWUgdHJlZV87Cit9Owor
CisvLyBBIGNvbW1vbiBiYXNlIGNsYXNzIGZvciBidHJlZV9zZXQgYW5kIGJ0cmVlX21hcC4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUcmVlPgorY2xhc3MgYnRyZWVfc2V0X2NvbnRhaW5lciA6IHB1Ymxp
YyBidHJlZV9jb250YWluZXI8VHJlZT4geworICB1c2luZyBzdXBlcl90eXBlID0gYnRyZWVfY29u
dGFpbmVyPFRyZWU+OworICB1c2luZyBwYXJhbXNfdHlwZSA9IHR5cGVuYW1lIFRyZWU6OnBhcmFt
c190eXBlOworICB1c2luZyBpbml0X3R5cGUgPSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6aW5pdF90
eXBlOworICB1c2luZyBpc19rZXlfY29tcGFyZV90byA9IHR5cGVuYW1lIHBhcmFtc190eXBlOjpp
c19rZXlfY29tcGFyZV90bzsKKyAgZnJpZW5kIGNsYXNzIEJ0cmVlTm9kZVBlZXI7CisKKyBwcm90
ZWN0ZWQ6CisgIHRlbXBsYXRlIDxjbGFzcyBLPgorICB1c2luZyBrZXlfYXJnID0gdHlwZW5hbWUg
c3VwZXJfdHlwZTo6dGVtcGxhdGUga2V5X2FyZzxLPjsKKworIHB1YmxpYzoKKyAgdXNpbmcga2V5
X3R5cGUgPSB0eXBlbmFtZSBUcmVlOjprZXlfdHlwZTsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5
cGVuYW1lIFRyZWU6OnZhbHVlX3R5cGU7CisgIHVzaW5nIHNpemVfdHlwZSA9IHR5cGVuYW1lIFRy
ZWU6OnNpemVfdHlwZTsKKyAgdXNpbmcga2V5X2NvbXBhcmUgPSB0eXBlbmFtZSBUcmVlOjprZXlf
Y29tcGFyZTsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSB0eXBlbmFtZSBUcmVlOjphbGxvY2F0
b3JfdHlwZTsKKyAgdXNpbmcgaXRlcmF0b3IgPSB0eXBlbmFtZSBUcmVlOjppdGVyYXRvcjsKKyAg
dXNpbmcgY29uc3RfaXRlcmF0b3IgPSB0eXBlbmFtZSBUcmVlOjpjb25zdF9pdGVyYXRvcjsKKyAg
dXNpbmcgbm9kZV90eXBlID0gdHlwZW5hbWUgc3VwZXJfdHlwZTo6bm9kZV90eXBlOworICB1c2lu
ZyBpbnNlcnRfcmV0dXJuX3R5cGUgPSBJbnNlcnRSZXR1cm5UeXBlPGl0ZXJhdG9yLCBub2RlX3R5
cGU+OworCisgIC8vIEluaGVyaXQgY29uc3RydWN0b3JzLgorICB1c2luZyBzdXBlcl90eXBlOjpz
dXBlcl90eXBlOworICBidHJlZV9zZXRfY29udGFpbmVyKCkge30KKworICAvLyBSYW5nZSBjb25z
dHJ1Y3Rvci4KKyAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+CisgIGJ0cmVlX3NldF9j
b250YWluZXIoSW5wdXRJdGVyYXRvciBiLCBJbnB1dEl0ZXJhdG9yIGUsCisgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qga2V5X2NvbXBhcmUgJmNvbXAgPSBrZXlfY29tcGFyZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhbGxvYyA9IGFsbG9jYXRvcl90
eXBlKCkpCisgICAgICA6IHN1cGVyX3R5cGUoY29tcCwgYWxsb2MpIHsKKyAgICBpbnNlcnQoYiwg
ZSk7CisgIH0KKworICAvLyBJbml0aWFsaXplciBsaXN0IGNvbnN0cnVjdG9yLgorICBidHJlZV9z
ZXRfY29udGFpbmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGluaXQsCisgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qga2V5X2NvbXBhcmUgJmNvbXAgPSBrZXlfY29tcGFyZSgp
LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhbGxvYyA9IGFs
bG9jYXRvcl90eXBlKCkpCisgICAgICA6IGJ0cmVlX3NldF9jb250YWluZXIoaW5pdC5iZWdpbigp
LCBpbml0LmVuZCgpLCBjb21wLCBhbGxvYykge30KKworICAvLyBMb29rdXAgcm91dGluZXMuCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBLID0ga2V5X3R5cGU+CisgIHNpemVfdHlwZSBjb3VudChjb25z
dCBrZXlfYXJnPEs+ICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gdGhpcy0+dHJlZV8uY291bnRf
dW5pcXVlKGtleSk7CisgIH0KKworICAvLyBJbnNlcnRpb24gcm91dGluZXMuCisgIHN0ZDo6cGFp
cjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0KGNvbnN0IHZhbHVlX3R5cGUgJngpIHsKKyAgICByZXR1
cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X3VuaXF1ZShwYXJhbXNfdHlwZTo6a2V5KHgpLCB4KTsKKyAg
fQorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydCh2YWx1ZV90eXBlICYmeCkgewor
ICAgIHJldHVybiB0aGlzLT50cmVlXy5pbnNlcnRfdW5pcXVlKHBhcmFtc190eXBlOjprZXkoeCks
IHN0ZDo6bW92ZSh4KSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIHN0
ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZShBcmdzICYmLi4uIGFyZ3MpIHsKKyAgICBp
bml0X3R5cGUgdihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVybiB0aGlz
LT50cmVlXy5pbnNlcnRfdW5pcXVlKHBhcmFtc190eXBlOjprZXkodiksIHN0ZDo6bW92ZSh2KSk7
CisgIH0KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBjb25zdCB2
YWx1ZV90eXBlICZ4KSB7CisgICAgcmV0dXJuIHRoaXMtPnRyZWVfCisgICAgICAgIC5pbnNlcnRf
aGludF91bmlxdWUoaXRlcmF0b3IocG9zaXRpb24pLCBwYXJhbXNfdHlwZTo6a2V5KHgpLCB4KQor
ICAgICAgICAuZmlyc3Q7CisgIH0KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBv
c2l0aW9uLCB2YWx1ZV90eXBlICYmeCkgeworICAgIHJldHVybiB0aGlzLT50cmVlXworICAgICAg
ICAuaW5zZXJ0X2hpbnRfdW5pcXVlKGl0ZXJhdG9yKHBvc2l0aW9uKSwgcGFyYW1zX3R5cGU6Omtl
eSh4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoeCkpCisgICAgICAg
IC5maXJzdDsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgaXRlcmF0b3Ig
ZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBBcmdzICYmLi4uIGFyZ3MpIHsK
KyAgICBpbml0X3R5cGUgdihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVy
biB0aGlzLT50cmVlXworICAgICAgICAuaW5zZXJ0X2hpbnRfdW5pcXVlKGl0ZXJhdG9yKHBvc2l0
aW9uKSwgcGFyYW1zX3R5cGU6OmtleSh2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1vdmUodikpCisgICAgICAgIC5maXJzdDsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW5wdXRJdGVyYXRvcj4KKyAgdm9pZCBpbnNlcnQoSW5wdXRJdGVyYXRvciBiLCBJbnB1dEl0ZXJh
dG9yIGUpIHsKKyAgICB0aGlzLT50cmVlXy5pbnNlcnRfaXRlcmF0b3JfdW5pcXVlKGIsIGUpOwor
ICB9CisgIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGluaXQp
IHsKKyAgICB0aGlzLT50cmVlXy5pbnNlcnRfaXRlcmF0b3JfdW5pcXVlKGluaXQuYmVnaW4oKSwg
aW5pdC5lbmQoKSk7CisgIH0KKyAgaW5zZXJ0X3JldHVybl90eXBlIGluc2VydChub2RlX3R5cGUg
JiZub2RlKSB7CisgICAgaWYgKCFub2RlKSByZXR1cm4ge3RoaXMtPmVuZCgpLCBmYWxzZSwgbm9k
ZV90eXBlKCl9OworICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzID0KKyAgICAgICAg
aW5zZXJ0KHN0ZDo6bW92ZShwYXJhbXNfdHlwZTo6ZWxlbWVudChDb21tb25BY2Nlc3M6OkdldFNs
b3Qobm9kZSkpKSk7CisgICAgaWYgKHJlcy5zZWNvbmQpIHsKKyAgICAgIENvbW1vbkFjY2Vzczo6
UmVzZXQoJm5vZGUpOworICAgICAgcmV0dXJuIHtyZXMuZmlyc3QsIHRydWUsIG5vZGVfdHlwZSgp
fTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHtyZXMuZmlyc3QsIGZhbHNlLCBzdGQ6Om1v
dmUobm9kZSl9OworICAgIH0KKyAgfQorICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3Ig
aGludCwgbm9kZV90eXBlICYmbm9kZSkgeworICAgIGlmICghbm9kZSkgcmV0dXJuIHRoaXMtPmVu
ZCgpOworICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzID0gdGhpcy0+dHJlZV8uaW5z
ZXJ0X2hpbnRfdW5pcXVlKAorICAgICAgICBpdGVyYXRvcihoaW50KSwgcGFyYW1zX3R5cGU6Omtl
eShDb21tb25BY2Nlc3M6OkdldFNsb3Qobm9kZSkpLAorICAgICAgICBzdGQ6Om1vdmUocGFyYW1z
X3R5cGU6OmVsZW1lbnQoQ29tbW9uQWNjZXNzOjpHZXRTbG90KG5vZGUpKSkpOworICAgIGlmIChy
ZXMuc2Vjb25kKSBDb21tb25BY2Nlc3M6OlJlc2V0KCZub2RlKTsKKyAgICByZXR1cm4gcmVzLmZp
cnN0OworICB9CisKKyAgLy8gRGVsZXRpb24gcm91dGluZXMuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBLID0ga2V5X3R5cGU+CisgIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfYXJnPEs+ICZrZXkp
IHsKKyAgICByZXR1cm4gdGhpcy0+dHJlZV8uZXJhc2VfdW5pcXVlKGtleSk7CisgIH0KKyAgdXNp
bmcgc3VwZXJfdHlwZTo6ZXJhc2U7CisKKyAgLy8gTm9kZSBleHRyYWN0aW9uIHJvdXRpbmVzLgor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSyA9IGtleV90eXBlPgorICBub2RlX3R5cGUgZXh0cmFjdChj
b25zdCBrZXlfYXJnPEs+ICZrZXkpIHsKKyAgICBhdXRvIGl0ID0gZmluZChrZXkpOworICAgIHJl
dHVybiBpdCA9PSB0aGlzLT5lbmQoKSA/IG5vZGVfdHlwZSgpIDogZXh0cmFjdChpdCk7CisgIH0K
KyAgdXNpbmcgc3VwZXJfdHlwZTo6ZXh0cmFjdDsKKworICAvLyBNZXJnZSByb3V0aW5lcy4KKyAg
Ly8gTW92ZXMgZWxlbWVudHMgZnJvbSBgc3JjYCBpbnRvIGB0aGlzYC4gSWYgdGhlIGVsZW1lbnQg
YWxyZWFkeSBleGlzdHMgaW4KKyAgLy8gYHRoaXNgLCBpdCBpcyBsZWZ0IHVubW9kaWZpZWQgaW4g
YHNyY2AuCisgIHRlbXBsYXRlIDwKKyAgICAgIHR5cGVuYW1lIFQsCisgICAgICB0eXBlbmFtZSBh
YnNsOjplbmFibGVfaWZfdDwKKyAgICAgICAgICBhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAg
ICAgICAgc3RkOjppc19zYW1lPHZhbHVlX3R5cGUsIHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGU+LAor
ICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8YWxsb2NhdG9yX3R5cGUsIHR5cGVuYW1lIFQ6OmFs
bG9jYXRvcl90eXBlPiwKKyAgICAgICAgICAgICAgc3RkOjppc19zYW1lPHR5cGVuYW1lIHBhcmFt
c190eXBlOjppc19tYXBfY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZW5hbWUgVDo6cGFyYW1zX3R5cGU6OmlzX21hcF9jb250YWluZXI+Pjo6dmFsdWUsCisgICAgICAg
ICAgaW50PiA9IDA+CisgIHZvaWQgbWVyZ2UoYnRyZWVfY29udGFpbmVyPFQ+ICZzcmMpIHsgIC8v
IE5PTElOVAorICAgIGZvciAoYXV0byBzcmNfaXQgPSBzcmMuYmVnaW4oKTsgc3JjX2l0ICE9IHNy
Yy5lbmQoKTspIHsKKyAgICAgIGlmIChpbnNlcnQoc3RkOjptb3ZlKCpzcmNfaXQpKS5zZWNvbmQp
IHsKKyAgICAgICAgc3JjX2l0ID0gc3JjLmVyYXNlKHNyY19pdCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICArK3NyY19pdDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICB0ZW1wbGF0ZSA8Cisg
ICAgICB0eXBlbmFtZSBULAorICAgICAgdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAg
ICAgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTx2YWx1
ZV90eXBlLCB0eXBlbmFtZSBUOjp2YWx1ZV90eXBlPiwKKyAgICAgICAgICAgICAgc3RkOjppc19z
YW1lPGFsbG9jYXRvcl90eXBlLCB0eXBlbmFtZSBUOjphbGxvY2F0b3JfdHlwZT4sCisgICAgICAg
ICAgICAgIHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBwYXJhbXNfdHlwZTo6aXNfbWFwX2NvbnRhaW5l
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFQ6OnBhcmFtc190eXBlOjpp
c19tYXBfY29udGFpbmVyPj46OnZhbHVlLAorICAgICAgICAgIGludD4gPSAwPgorICB2b2lkIG1l
cmdlKGJ0cmVlX2NvbnRhaW5lcjxUPiAmJnNyYykgeworICAgIG1lcmdlKHNyYyk7CisgIH0KK307
CisKKy8vIEJhc2UgY2xhc3MgZm9yIGJ0cmVlX21hcC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUcmVl
PgorY2xhc3MgYnRyZWVfbWFwX2NvbnRhaW5lciA6IHB1YmxpYyBidHJlZV9zZXRfY29udGFpbmVy
PFRyZWU+IHsKKyAgdXNpbmcgc3VwZXJfdHlwZSA9IGJ0cmVlX3NldF9jb250YWluZXI8VHJlZT47
CisgIHVzaW5nIHBhcmFtc190eXBlID0gdHlwZW5hbWUgVHJlZTo6cGFyYW1zX3R5cGU7CisKKyBw
cm90ZWN0ZWQ6CisgIHRlbXBsYXRlIDxjbGFzcyBLPgorICB1c2luZyBrZXlfYXJnID0gdHlwZW5h
bWUgc3VwZXJfdHlwZTo6dGVtcGxhdGUga2V5X2FyZzxLPjsKKworIHB1YmxpYzoKKyAgdXNpbmcg
a2V5X3R5cGUgPSB0eXBlbmFtZSBUcmVlOjprZXlfdHlwZTsKKyAgdXNpbmcgbWFwcGVkX3R5cGUg
PSB0eXBlbmFtZSBwYXJhbXNfdHlwZTo6bWFwcGVkX3R5cGU7CisgIHVzaW5nIHZhbHVlX3R5cGUg
PSB0eXBlbmFtZSBUcmVlOjp2YWx1ZV90eXBlOworICB1c2luZyBrZXlfY29tcGFyZSA9IHR5cGVu
YW1lIFRyZWU6OmtleV9jb21wYXJlOworICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IHR5cGVuYW1l
IFRyZWU6OmFsbG9jYXRvcl90eXBlOworICB1c2luZyBpdGVyYXRvciA9IHR5cGVuYW1lIFRyZWU6
Oml0ZXJhdG9yOworICB1c2luZyBjb25zdF9pdGVyYXRvciA9IHR5cGVuYW1lIFRyZWU6OmNvbnN0
X2l0ZXJhdG9yOworCisgIC8vIEluaGVyaXQgY29uc3RydWN0b3JzLgorICB1c2luZyBzdXBlcl90
eXBlOjpzdXBlcl90eXBlOworICBidHJlZV9tYXBfY29udGFpbmVyKCkge30KKworICAvLyBJbnNl
cnRpb24gcm91dGluZXMuCisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBzdGQ6OnBh
aXI8aXRlcmF0b3IsIGJvb2w+IHRyeV9lbXBsYWNlKGNvbnN0IGtleV90eXBlICZrLCBBcmdzICYm
Li4uIGFyZ3MpIHsKKyAgICByZXR1cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X3VuaXF1ZSgKKyAgICAg
ICAgaywgc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoayks
CisgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgc3RkOjpwYWlyPGl0
ZXJhdG9yLCBib29sPiB0cnlfZW1wbGFjZShrZXlfdHlwZSAmJmssIEFyZ3MgJiYuLi4gYXJncykg
eworICAgIC8vIE5vdGU6IGBrZXlfcmVmYCBleGlzdHMgdG8gYXZvaWQgYSBDbGFuZ1RpZHkgd2Fy
bmluZyBhYm91dCBtb3ZpbmcgZnJvbSBga2AKKyAgICAvLyBhbmQgdGhlbiB1c2luZyBga2AgdW5z
ZXF1ZW5jZWQuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoZSBtb3ZlIGlzIGludG8gYQorICAgIC8v
IGZvcndhcmRpbmcgcmVmZXJlbmNlIGFuZCBpbnNlcnRfdW5pcXVlIGd1YXJhbnRlZXMgdGhhdCBg
a2V5YCBpcyBuZXZlcgorICAgIC8vIHJlZmVyZW5jZWQgYWZ0ZXIgY29uc3VtaW5nIGBhcmdzYC4K
KyAgICBjb25zdCBrZXlfdHlwZSYga2V5X3JlZiA9IGs7CisgICAgcmV0dXJuIHRoaXMtPnRyZWVf
Lmluc2VydF91bmlxdWUoCisgICAgICAgIGtleV9yZWYsIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVj
dCwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6bW92ZShrKSksCisgICAgICAgIHN0ZDo6Zm9y
d2FyZF9hc190dXBsZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgfQorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgaXRlcmF0b3IgdHJ5X2VtcGxhY2UoY29uc3RfaXRl
cmF0b3IgaGludCwgY29uc3Qga2V5X3R5cGUgJmssCisgICAgICAgICAgICAgICAgICAgICAgIEFy
Z3MgJiYuLi4gYXJncykgeworICAgIHJldHVybiB0aGlzLT50cmVlXworICAgICAgICAuaW5zZXJ0
X2hpbnRfdW5pcXVlKGl0ZXJhdG9yKGhpbnQpLCBrLCBzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKGspLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKQorICAgICAgICAuZmlyc3Q7CisgIH0KKyAgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIEFyZ3M+CisgIGl0ZXJhdG9yIHRyeV9lbXBsYWNlKGNvbnN0X2l0ZXJhdG9y
IGhpbnQsIGtleV90eXBlICYmaywgQXJncyAmJi4uLiBhcmdzKSB7CisgICAgLy8gTm90ZTogYGtl
eV9yZWZgIGV4aXN0cyB0byBhdm9pZCBhIENsYW5nVGlkeSB3YXJuaW5nIGFib3V0IG1vdmluZyBm
cm9tIGBrYAorICAgIC8vIGFuZCB0aGVuIHVzaW5nIGBrYCB1bnNlcXVlbmNlZC4gVGhpcyBpcyBz
YWZlIGJlY2F1c2UgdGhlIG1vdmUgaXMgaW50byBhCisgICAgLy8gZm9yd2FyZGluZyByZWZlcmVu
Y2UgYW5kIGluc2VydF9oaW50X3VuaXF1ZSBndWFyYW50ZWVzIHRoYXQgYGtleWAgaXMKKyAgICAv
LyBuZXZlciByZWZlcmVuY2VkIGFmdGVyIGNvbnN1bWluZyBgYXJnc2AuCisgICAgY29uc3Qga2V5
X3R5cGUmIGtleV9yZWYgPSBrOworICAgIHJldHVybiB0aGlzLT50cmVlXworICAgICAgICAuaW5z
ZXJ0X2hpbnRfdW5pcXVlKGl0ZXJhdG9yKGhpbnQpLCBrZXlfcmVmLCBzdGQ6OnBpZWNld2lzZV9j
b25zdHJ1Y3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1
cGxlKHN0ZDo6bW92ZShrKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3
YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpCisgICAgICAgIC5maXJz
dDsKKyAgfQorICBtYXBwZWRfdHlwZSAmb3BlcmF0b3JbXShjb25zdCBrZXlfdHlwZSAmaykgewor
ICAgIHJldHVybiB0cnlfZW1wbGFjZShrKS5maXJzdC0+c2Vjb25kOworICB9CisgIG1hcHBlZF90
eXBlICZvcGVyYXRvcltdKGtleV90eXBlICYmaykgeworICAgIHJldHVybiB0cnlfZW1wbGFjZShz
dGQ6Om1vdmUoaykpLmZpcnN0LT5zZWNvbmQ7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SyA9IGtleV90eXBlPgorICBtYXBwZWRfdHlwZSAmYXQoY29uc3Qga2V5X2FyZzxLPiAma2V5KSB7
CisgICAgYXV0byBpdCA9IHRoaXMtPmZpbmQoa2V5KTsKKyAgICBpZiAoaXQgPT0gdGhpcy0+ZW5k
KCkpCisgICAgICBiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoImFic2w6OmJ0cmVl
X21hcDo6YXQiKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgfQorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSyA9IGtleV90eXBlPgorICBjb25zdCBtYXBwZWRfdHlwZSAmYXQoY29uc3Qga2V5X2Fy
ZzxLPiAma2V5KSBjb25zdCB7CisgICAgYXV0byBpdCA9IHRoaXMtPmZpbmQoa2V5KTsKKyAgICBp
ZiAoaXQgPT0gdGhpcy0+ZW5kKCkpCisgICAgICBiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9m
UmFuZ2UoImFic2w6OmJ0cmVlX21hcDo6YXQiKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAg
fQorfTsKKworLy8gQSBjb21tb24gYmFzZSBjbGFzcyBmb3IgYnRyZWVfbXVsdGlzZXQgYW5kIGJ0
cmVlX211bHRpbWFwLgordGVtcGxhdGUgPHR5cGVuYW1lIFRyZWU+CitjbGFzcyBidHJlZV9tdWx0
aXNldF9jb250YWluZXIgOiBwdWJsaWMgYnRyZWVfY29udGFpbmVyPFRyZWU+IHsKKyAgdXNpbmcg
c3VwZXJfdHlwZSA9IGJ0cmVlX2NvbnRhaW5lcjxUcmVlPjsKKyAgdXNpbmcgcGFyYW1zX3R5cGUg
PSB0eXBlbmFtZSBUcmVlOjpwYXJhbXNfdHlwZTsKKyAgdXNpbmcgaW5pdF90eXBlID0gdHlwZW5h
bWUgcGFyYW1zX3R5cGU6OmluaXRfdHlwZTsKKyAgdXNpbmcgaXNfa2V5X2NvbXBhcmVfdG8gPSB0
eXBlbmFtZSBwYXJhbXNfdHlwZTo6aXNfa2V5X2NvbXBhcmVfdG87CisKKyAgdGVtcGxhdGUgPGNs
YXNzIEs+CisgIHVzaW5nIGtleV9hcmcgPSB0eXBlbmFtZSBzdXBlcl90eXBlOjp0ZW1wbGF0ZSBr
ZXlfYXJnPEs+OworCisgcHVibGljOgorICB1c2luZyBrZXlfdHlwZSA9IHR5cGVuYW1lIFRyZWU6
OmtleV90eXBlOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgVHJlZTo6dmFsdWVfdHlw
ZTsKKyAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgVHJlZTo6c2l6ZV90eXBlOworICB1c2lu
ZyBrZXlfY29tcGFyZSA9IHR5cGVuYW1lIFRyZWU6OmtleV9jb21wYXJlOworICB1c2luZyBhbGxv
Y2F0b3JfdHlwZSA9IHR5cGVuYW1lIFRyZWU6OmFsbG9jYXRvcl90eXBlOworICB1c2luZyBpdGVy
YXRvciA9IHR5cGVuYW1lIFRyZWU6Oml0ZXJhdG9yOworICB1c2luZyBjb25zdF9pdGVyYXRvciA9
IHR5cGVuYW1lIFRyZWU6OmNvbnN0X2l0ZXJhdG9yOworICB1c2luZyBub2RlX3R5cGUgPSB0eXBl
bmFtZSBzdXBlcl90eXBlOjpub2RlX3R5cGU7CisKKyAgLy8gSW5oZXJpdCBjb25zdHJ1Y3RvcnMu
CisgIHVzaW5nIHN1cGVyX3R5cGU6OnN1cGVyX3R5cGU7CisgIGJ0cmVlX211bHRpc2V0X2NvbnRh
aW5lcigpIHt9CisKKyAgLy8gUmFuZ2UgY29uc3RydWN0b3IuCisgIHRlbXBsYXRlIDxjbGFzcyBJ
bnB1dEl0ZXJhdG9yPgorICBidHJlZV9tdWx0aXNldF9jb250YWluZXIoSW5wdXRJdGVyYXRvciBi
LCBJbnB1dEl0ZXJhdG9yIGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlf
Y29tcGFyZSAmY29tcCA9IGtleV9jb21wYXJlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQorICAgICAg
OiBzdXBlcl90eXBlKGNvbXAsIGFsbG9jKSB7CisgICAgaW5zZXJ0KGIsIGUpOworICB9CisKKyAg
Ly8gSW5pdGlhbGl6ZXIgbGlzdCBjb25zdHJ1Y3Rvci4KKyAgYnRyZWVfbXVsdGlzZXRfY29udGFp
bmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGluaXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBrZXlfY29tcGFyZSAmY29tcCA9IGtleV9jb21wYXJlKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYWxsb2MgPSBh
bGxvY2F0b3JfdHlwZSgpKQorICAgICAgOiBidHJlZV9tdWx0aXNldF9jb250YWluZXIoaW5pdC5i
ZWdpbigpLCBpbml0LmVuZCgpLCBjb21wLCBhbGxvYykge30KKworICAvLyBMb29rdXAgcm91dGlu
ZXMuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLID0ga2V5X3R5cGU+CisgIHNpemVfdHlwZSBjb3Vu
dChjb25zdCBrZXlfYXJnPEs+ICZrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gdGhpcy0+dHJlZV8u
Y291bnRfbXVsdGkoa2V5KTsKKyAgfQorCisgIC8vIEluc2VydGlvbiByb3V0aW5lcy4KKyAgaXRl
cmF0b3IgaW5zZXJ0KGNvbnN0IHZhbHVlX3R5cGUgJngpIHsgcmV0dXJuIHRoaXMtPnRyZWVfLmlu
c2VydF9tdWx0aSh4KTsgfQorICBpdGVyYXRvciBpbnNlcnQodmFsdWVfdHlwZSAmJngpIHsKKyAg
ICByZXR1cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X211bHRpKHN0ZDo6bW92ZSh4KSk7CisgIH0KKyAg
aXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBl
ICZ4KSB7CisgICAgcmV0dXJuIHRoaXMtPnRyZWVfLmluc2VydF9oaW50X211bHRpKGl0ZXJhdG9y
KHBvc2l0aW9uKSwgeCk7CisgIH0KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIHBv
c2l0aW9uLCB2YWx1ZV90eXBlICYmeCkgeworICAgIHJldHVybiB0aGlzLT50cmVlXy5pbnNlcnRf
aGludF9tdWx0aShpdGVyYXRvcihwb3NpdGlvbiksIHN0ZDo6bW92ZSh4KSk7CisgIH0KKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+CisgIHZvaWQgaW5zZXJ0KElucHV0SXRlcmF0
b3IgYiwgSW5wdXRJdGVyYXRvciBlKSB7CisgICAgdGhpcy0+dHJlZV8uaW5zZXJ0X2l0ZXJhdG9y
X211bHRpKGIsIGUpOworICB9CisgIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxp
bml0X3R5cGU+IGluaXQpIHsKKyAgICB0aGlzLT50cmVlXy5pbnNlcnRfaXRlcmF0b3JfbXVsdGko
aW5pdC5iZWdpbigpLCBpbml0LmVuZCgpKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KKyAgaXRlcmF0b3IgZW1wbGFjZShBcmdzICYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4g
dGhpcy0+dHJlZV8uaW5zZXJ0X211bHRpKGluaXRfdHlwZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgaXRlcmF0b3Ig
ZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uLCBBcmdzICYmLi4uIGFyZ3MpIHsK
KyAgICByZXR1cm4gdGhpcy0+dHJlZV8uaW5zZXJ0X2hpbnRfbXVsdGkoCisgICAgICAgIGl0ZXJh
dG9yKHBvc2l0aW9uKSwgaW5pdF90eXBlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwor
ICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgaXRlcmF0
b3IgaW5zZXJ0X25vZGVfaGVscGVyKG5vZGVfdHlwZSAmJm5vZGUsIEFyZ3MgJiYuLi4gYXJncykg
eworICAgIGlmICghbm9kZSkgcmV0dXJuIHRoaXMtPmVuZCgpOworICAgIGl0ZXJhdG9yIHJlcyA9
CisgICAgICAgIGluc2VydChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4sCisgICAgICAgICAg
ICAgICBzdGQ6Om1vdmUocGFyYW1zX3R5cGU6OmVsZW1lbnQoQ29tbW9uQWNjZXNzOjpHZXRTbG90
KG5vZGUpKSkpOworICAgIENvbW1vbkFjY2Vzczo6UmVzZXQoJm5vZGUpOworICAgIHJldHVybiBy
ZXM7CisgIH0KKworIHB1YmxpYzoKKyAgaXRlcmF0b3IgaW5zZXJ0KG5vZGVfdHlwZSAmJm5vZGUp
IHsKKyAgICByZXR1cm4gaW5zZXJ0X25vZGVfaGVscGVyKHN0ZDo6bW92ZShub2RlKSk7CisgIH0K
KyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIG5vZGVfdHlwZSAmJm5vZGUp
IHsKKyAgICByZXR1cm4gaW5zZXJ0X25vZGVfaGVscGVyKHN0ZDo6bW92ZShub2RlKSwgaGludCk7
CisgIH0KKworICAvLyBEZWxldGlvbiByb3V0aW5lcy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEsg
PSBrZXlfdHlwZT4KKyAgc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtleV9hcmc8Sz4gJmtleSkgewor
ICAgIHJldHVybiB0aGlzLT50cmVlXy5lcmFzZV9tdWx0aShrZXkpOworICB9CisgIHVzaW5nIHN1
cGVyX3R5cGU6OmVyYXNlOworCisgIC8vIE5vZGUgZXh0cmFjdGlvbiByb3V0aW5lcy4KKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEsgPSBrZXlfdHlwZT4KKyAgbm9kZV90eXBlIGV4dHJhY3QoY29uc3Qg
a2V5X2FyZzxLPiAma2V5KSB7CisgICAgYXV0byBpdCA9IGZpbmQoa2V5KTsKKyAgICByZXR1cm4g
aXQgPT0gdGhpcy0+ZW5kKCkgPyBub2RlX3R5cGUoKSA6IGV4dHJhY3QoaXQpOworICB9CisgIHVz
aW5nIHN1cGVyX3R5cGU6OmV4dHJhY3Q7CisKKyAgLy8gTWVyZ2Ugcm91dGluZXMuCisgIC8vIE1v
dmVzIGFsbCBlbGVtZW50cyBmcm9tIGBzcmNgIGludG8gYHRoaXNgLgorICB0ZW1wbGF0ZSA8Cisg
ICAgICB0eXBlbmFtZSBULAorICAgICAgdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAg
ICAgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTx2YWx1
ZV90eXBlLCB0eXBlbmFtZSBUOjp2YWx1ZV90eXBlPiwKKyAgICAgICAgICAgICAgc3RkOjppc19z
YW1lPGFsbG9jYXRvcl90eXBlLCB0eXBlbmFtZSBUOjphbGxvY2F0b3JfdHlwZT4sCisgICAgICAg
ICAgICAgIHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBwYXJhbXNfdHlwZTo6aXNfbWFwX2NvbnRhaW5l
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFQ6OnBhcmFtc190eXBlOjpp
c19tYXBfY29udGFpbmVyPj46OnZhbHVlLAorICAgICAgICAgIGludD4gPSAwPgorICB2b2lkIG1l
cmdlKGJ0cmVlX2NvbnRhaW5lcjxUPiAmc3JjKSB7ICAvLyBOT0xJTlQKKyAgICBpbnNlcnQoc3Rk
OjptYWtlX21vdmVfaXRlcmF0b3Ioc3JjLmJlZ2luKCkpLAorICAgICAgICAgICBzdGQ6Om1ha2Vf
bW92ZV9pdGVyYXRvcihzcmMuZW5kKCkpKTsKKyAgICBzcmMuY2xlYXIoKTsKKyAgfQorCisgIHRl
bXBsYXRlIDwKKyAgICAgIHR5cGVuYW1lIFQsCisgICAgICB0eXBlbmFtZSBhYnNsOjplbmFibGVf
aWZfdDwKKyAgICAgICAgICBhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAgICAgICAgc3RkOjpp
c19zYW1lPHZhbHVlX3R5cGUsIHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGU+LAorICAgICAgICAgICAg
ICBzdGQ6OmlzX3NhbWU8YWxsb2NhdG9yX3R5cGUsIHR5cGVuYW1lIFQ6OmFsbG9jYXRvcl90eXBl
PiwKKyAgICAgICAgICAgICAgc3RkOjppc19zYW1lPHR5cGVuYW1lIHBhcmFtc190eXBlOjppc19t
YXBfY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVDo6cGFy
YW1zX3R5cGU6OmlzX21hcF9jb250YWluZXI+Pjo6dmFsdWUsCisgICAgICAgICAgaW50PiA9IDA+
CisgIHZvaWQgbWVyZ2UoYnRyZWVfY29udGFpbmVyPFQ+ICYmc3JjKSB7CisgICAgbWVyZ2Uoc3Jj
KTsKKyAgfQorfTsKKworLy8gQSBiYXNlIGNsYXNzIGZvciBidHJlZV9tdWx0aW1hcC4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUcmVlPgorY2xhc3MgYnRyZWVfbXVsdGltYXBfY29udGFpbmVyIDogcHVi
bGljIGJ0cmVlX211bHRpc2V0X2NvbnRhaW5lcjxUcmVlPiB7CisgIHVzaW5nIHN1cGVyX3R5cGUg
PSBidHJlZV9tdWx0aXNldF9jb250YWluZXI8VHJlZT47CisgIHVzaW5nIHBhcmFtc190eXBlID0g
dHlwZW5hbWUgVHJlZTo6cGFyYW1zX3R5cGU7CisKKyBwdWJsaWM6CisgIHVzaW5nIG1hcHBlZF90
eXBlID0gdHlwZW5hbWUgcGFyYW1zX3R5cGU6Om1hcHBlZF90eXBlOworCisgIC8vIEluaGVyaXQg
Y29uc3RydWN0b3JzLgorICB1c2luZyBzdXBlcl90eXBlOjpzdXBlcl90eXBlOworICBidHJlZV9t
dWx0aW1hcF9jb250YWluZXIoKSB7fQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9p
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5F
Ul9JTlRFUk5BTF9CVFJFRV9DT05UQUlORVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9jb21tb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21tb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41OTFkM2VhMTFmYTI1ZjE5N2UxMmRiOThjYjAwZmYyNmI3ZmQyYTZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbW1vbi5oCkBAIC0wLDAg
KzEsMTk2IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lm
bmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9DT05UQUlORVJfSF8KKyNkZWZpbmUgQUJTTF9D
T05UQUlORVJfSU5URVJOQUxfQ09OVEFJTkVSX0hfCisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2lu
Y2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgi
CisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzLCBjbGFzcyA9
IHZvaWQ+CitzdHJ1Y3QgSXNUcmFuc3BhcmVudCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKK3RlbXBs
YXRlIDxjbGFzcyBUPgorc3RydWN0IElzVHJhbnNwYXJlbnQ8VCwgYWJzbDo6dm9pZF90PHR5cGVu
YW1lIFQ6OmlzX3RyYW5zcGFyZW50Pj4KKyAgICA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCit0ZW1w
bGF0ZSA8Ym9vbCBpc190cmFuc3BhcmVudD4KK3N0cnVjdCBLZXlBcmcgeworICAvLyBUcmFuc3Bh
cmVudC4gRm9yd2FyZCBgS2AuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBrZXlf
dHlwZT4KKyAgdXNpbmcgdHlwZSA9IEs7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IEtleUFy
ZzxmYWxzZT4geworICAvLyBOb3QgdHJhbnNwYXJlbnQuIEFsd2F5cyB1c2UgYGtleV90eXBlYC4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIGtleV90eXBlPgorICB1c2luZyB0eXBl
ID0ga2V5X3R5cGU7Cit9OworCisvLyBUaGUgbm9kZV9oYW5kbGUgY29uY2VwdCBmcm9tIEMrKzE3
LgorLy8gV2Ugc3BlY2lhbGl6ZSBub2RlX2hhbmRsZSBmb3Igc2V0cyBhbmQgbWFwcy4gbm9kZV9o
YW5kbGVfYmFzZSBob2xkcyB0aGUKKy8vIGNvbW1vbiBBUEkgb2YgYm90aC4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBQb2xpY3lUcmFpdHMsIHR5cGVuYW1lIEFsbG9jPgorY2xhc3Mgbm9kZV9oYW5kbGVf
YmFzZSB7CisgcHJvdGVjdGVkOgorICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3lU
cmFpdHM6OnNsb3RfdHlwZTsKKworIHB1YmxpYzoKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSBB
bGxvYzsKKworICBjb25zdGV4cHIgbm9kZV9oYW5kbGVfYmFzZSgpIHt9CisgIG5vZGVfaGFuZGxl
X2Jhc2Uobm9kZV9oYW5kbGVfYmFzZSYmIG90aGVyKSBub2V4Y2VwdCB7CisgICAgKnRoaXMgPSBz
dGQ6Om1vdmUob3RoZXIpOworICB9CisgIH5ub2RlX2hhbmRsZV9iYXNlKCkgeyBkZXN0cm95KCk7
IH0KKyAgbm9kZV9oYW5kbGVfYmFzZSYgb3BlcmF0b3I9KG5vZGVfaGFuZGxlX2Jhc2UmJiBvdGhl
cikgbm9leGNlcHQgeworICAgIGRlc3Ryb3koKTsKKyAgICBpZiAoIW90aGVyLmVtcHR5KCkpIHsK
KyAgICAgIGFsbG9jXyA9IG90aGVyLmFsbG9jXzsKKyAgICAgIFBvbGljeVRyYWl0czo6dHJhbnNm
ZXIoYWxsb2MoKSwgc2xvdCgpLCBvdGhlci5zbG90KCkpOworICAgICAgb3RoZXIucmVzZXQoKTsK
KyAgICB9CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgYm9vbCBlbXB0eSgpIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuICFhbGxvY187IH0KKyAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IG5vZXhjZXB0IHsgcmV0dXJuICFlbXB0eSgpOyB9CisgIGFsbG9jYXRvcl90eXBlIGdldF9h
bGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiAqYWxsb2NfOyB9CisKKyBwcm90ZWN0ZWQ6CisgIGZy
aWVuZCBzdHJ1Y3QgQ29tbW9uQWNjZXNzOworCisgIHN0cnVjdCB0cmFuc2Zlcl90YWdfdCB7fTsK
KyAgbm9kZV9oYW5kbGVfYmFzZSh0cmFuc2Zlcl90YWdfdCwgY29uc3QgYWxsb2NhdG9yX3R5cGUm
IGEsIHNsb3RfdHlwZSogcykKKyAgICAgIDogYWxsb2NfKGEpIHsKKyAgICBQb2xpY3lUcmFpdHM6
OnRyYW5zZmVyKGFsbG9jKCksIHNsb3QoKSwgcyk7CisgIH0KKworICBzdHJ1Y3QgbW92ZV90YWdf
dCB7fTsKKyAgbm9kZV9oYW5kbGVfYmFzZShtb3ZlX3RhZ190LCBjb25zdCBhbGxvY2F0b3JfdHlw
ZSYgYSwgc2xvdF90eXBlKiBzKQorICAgICAgOiBhbGxvY18oYSkgeworICAgIFBvbGljeVRyYWl0
czo6Y29uc3RydWN0KGFsbG9jKCksIHNsb3QoKSwgcyk7CisgIH0KKworICB2b2lkIGRlc3Ryb3ko
KSB7CisgICAgaWYgKCFlbXB0eSgpKSB7CisgICAgICBQb2xpY3lUcmFpdHM6OmRlc3Ryb3koYWxs
b2MoKSwgc2xvdCgpKTsKKyAgICAgIHJlc2V0KCk7CisgICAgfQorICB9CisKKyAgdm9pZCByZXNl
dCgpIHsKKyAgICBhc3NlcnQoYWxsb2NfLmhhc192YWx1ZSgpKTsKKyAgICBhbGxvY18gPSBhYnNs
OjpudWxsb3B0OworICB9CisKKyAgc2xvdF90eXBlKiBzbG90KCkgY29uc3QgeworICAgIGFzc2Vy
dCghZW1wdHkoKSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8c2xvdF90eXBlKj4oc3Rk
OjphZGRyZXNzb2Yoc2xvdF9zcGFjZV8pKTsKKyAgfQorICBhbGxvY2F0b3JfdHlwZSogYWxsb2Mo
KSB7IHJldHVybiBzdGQ6OmFkZHJlc3NvZigqYWxsb2NfKTsgfQorCisgcHJpdmF0ZToKKyAgYWJz
bDo6b3B0aW9uYWw8YWxsb2NhdG9yX3R5cGU+IGFsbG9jXzsKKyAgbXV0YWJsZSBhYnNsOjphbGln
bmVkX3N0b3JhZ2VfdDxzaXplb2Yoc2xvdF90eXBlKSwgYWxpZ25vZihzbG90X3R5cGUpPgorICAg
ICAgc2xvdF9zcGFjZV87Cit9OworCisvLyBGb3Igc2V0cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBQ
b2xpY3ksIHR5cGVuYW1lIFBvbGljeVRyYWl0cywgdHlwZW5hbWUgQWxsb2MsCisgICAgICAgICAg
dHlwZW5hbWUgPSB2b2lkPgorY2xhc3Mgbm9kZV9oYW5kbGUgOiBwdWJsaWMgbm9kZV9oYW5kbGVf
YmFzZTxQb2xpY3lUcmFpdHMsIEFsbG9jPiB7CisgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBub2Rl
X2hhbmRsZTo6bm9kZV9oYW5kbGVfYmFzZTsKKworIHB1YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlw
ZSA9IHR5cGVuYW1lIFBvbGljeVRyYWl0czo6dmFsdWVfdHlwZTsKKworICBjb25zdGV4cHIgbm9k
ZV9oYW5kbGUoKSB7fQorCisgIHZhbHVlX3R5cGUmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gUG9s
aWN5VHJhaXRzOjplbGVtZW50KHRoaXMtPnNsb3QoKSk7IH0KKworIHByaXZhdGU6CisgIGZyaWVu
ZCBzdHJ1Y3QgQ29tbW9uQWNjZXNzOworCisgIHVzaW5nIEJhc2U6OkJhc2U7Cit9OworCisvLyBG
b3IgbWFwcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBQb2xpY3ksIHR5cGVuYW1lIFBvbGljeVRyYWl0
cywgdHlwZW5hbWUgQWxsb2M+CitjbGFzcyBub2RlX2hhbmRsZTxQb2xpY3ksIFBvbGljeVRyYWl0
cywgQWxsb2MsCisgICAgICAgICAgICAgICAgICBhYnNsOjp2b2lkX3Q8dHlwZW5hbWUgUG9saWN5
OjptYXBwZWRfdHlwZT4+CisgICAgOiBwdWJsaWMgbm9kZV9oYW5kbGVfYmFzZTxQb2xpY3lUcmFp
dHMsIEFsbG9jPiB7CisgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBub2RlX2hhbmRsZTo6bm9kZV9o
YW5kbGVfYmFzZTsKKworIHB1YmxpYzoKKyAgdXNpbmcga2V5X3R5cGUgPSB0eXBlbmFtZSBQb2xp
Y3k6OmtleV90eXBlOworICB1c2luZyBtYXBwZWRfdHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6bWFw
cGVkX3R5cGU7CisKKyAgY29uc3RleHByIG5vZGVfaGFuZGxlKCkge30KKworICBhdXRvIGtleSgp
IGNvbnN0IC0+IGRlY2x0eXBlKFBvbGljeVRyYWl0czo6a2V5KHRoaXMtPnNsb3QoKSkpIHsKKyAg
ICByZXR1cm4gUG9saWN5VHJhaXRzOjprZXkodGhpcy0+c2xvdCgpKTsKKyAgfQorCisgIG1hcHBl
ZF90eXBlJiBtYXBwZWQoKSBjb25zdCB7CisgICAgcmV0dXJuIFBvbGljeVRyYWl0czo6dmFsdWUo
JlBvbGljeVRyYWl0czo6ZWxlbWVudCh0aGlzLT5zbG90KCkpKTsKKyAgfQorCisgcHJpdmF0ZToK
KyAgZnJpZW5kIHN0cnVjdCBDb21tb25BY2Nlc3M7CisKKyAgdXNpbmcgQmFzZTo6QmFzZTsKK307
CisKKy8vIFByb3ZpZGUgYWNjZXNzIHRvIG5vbi1wdWJsaWMgbm9kZS1oYW5kbGUgZnVuY3Rpb25z
Lgorc3RydWN0IENvbW1vbkFjY2VzcyB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPgorICBz
dGF0aWMgYXV0byBHZXRTbG90KGNvbnN0IE5vZGUmIG5vZGUpIC0+IGRlY2x0eXBlKG5vZGUuc2xv
dCgpKSB7CisgICAgcmV0dXJuIG5vZGUuc2xvdCgpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIE5vZGU+CisgIHN0YXRpYyB2b2lkIFJlc2V0KE5vZGUqIG5vZGUpIHsKKyAgICBub2RlLT5y
ZXNldCgpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgIHN0YXRpYyBUIFRyYW5zZmVyKEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIFQodHlw
ZW5hbWUgVDo6dHJhbnNmZXJfdGFnX3R7fSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
KyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgorICBzdGF0
aWMgVCBNb3ZlKEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIFQodHlwZW5hbWUgVDo6bW92
ZV90YWdfdHt9LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9Cit9OworCisvLyBJ
bXBsZW1lbnQgdGhlIGluc2VydF9yZXR1cm5fdHlwZTw+IGNvbmNlcHQgb2YgQysrMTcuCit0ZW1w
bGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIE5vZGVUeXBlPgorc3RydWN0IEluc2VydFJldHVy
blR5cGUgeworICBJdGVyYXRvciBwb3NpdGlvbjsKKyAgYm9vbCBpbnNlcnRlZDsKKyAgTm9kZVR5
cGUgbm9kZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQ09O
VEFJTkVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29tcHJlc3Nl
ZF90dXBsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbXByZXNzZWRfdHVwbGUuaApp
bmRleCBjYzUyNjE0ZjViMzdmZjM3NzRiZWIzMTAzY2JhMWJlOTUwYmU5ZDdiLi43ZDA4ZTM3MGRl
YzE2ZTJkMzcwN2Q3MWMxZTI4NzA5NTU4MDE2YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9jb21wcmVzc2VkX3R1cGxlLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKQEAgLTI3LDI0ICsyNywyNSBAQAogLy8gICBjb25zdCBUMiYgdDIgPSB2YWx1ZS5n
ZXQ8Mj4oKTsKIC8vICAgLi4uCiAvLwotLy8gaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9j
cHAvbGFuZ3VhZ2UvZWJvCisvLyBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFu
Z3VhZ2UvZWJvCiAKICNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQ09NUFJFU1NFRF9U
VVBMRV9IXwogI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9DT01QUkVTU0VEX1RVUExF
X0hfCiAKKyNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgogI2luY2x1ZGUgPHR1cGxlPgogI2lu
Y2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhYnNs
L3V0aWxpdHkvdXRpbGl0eS5oIgogCi0jaWZkZWYgX01TQ19WRVIKKyNpZiBkZWZpbmVkKF9NU0Nf
VkVSKSAmJiAhZGVmaW5lZChfX05WQ0NfXykKIC8vIFdlIG5lZWQgdG8gbWFyayB0aGVzZSBjbGFz
c2VzIHdpdGggdGhpcyBkZWNsc3BlYyB0byBlbnN1cmUgdGhhdAogLy8gQ29tcHJlc3NlZFR1cGxl
IGhhcHBlbnMuCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfQ09NUFJFU1NFRF9UVVBMRV9ERUNMU1BF
QyBfX2RlY2xzcGVjKGVtcHR5X2Jhc2VzKQotI2Vsc2UgIC8vIF9NU0NfVkVSCisjZWxzZQogI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX0NPTVBSRVNTRURfVFVQTEVfREVDTFNQRUMKLSNlbmRpZiAgLy8g
X01TQ19WRVIKKyNlbmRpZgogCiBuYW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsIHsKQEAgLTc1LDU3ICs3NiwxMTAgQEAgY29uc3RleHByIGJvb2wgSXNGaW5hbCgp
IHsKICNlbmRpZgogfQogCisvLyBXZSBjYW4ndCB1c2UgRUJDTyBvbiBvdGhlciBDb21wcmVzc2Vk
VHVwbGVzIGJlY2F1c2UgdGhhdCB3b3VsZCBtZWFuIHRoYXQgd2UKKy8vIGRlcml2ZSBmcm9tIG11
bHRpcGxlIFN0b3JhZ2U8PiBpbnN0YW50aWF0aW9ucyB3aXRoIHRoZSBzYW1lIEkgcGFyYW1ldGVy
LAorLy8gYW5kIHBvdGVudGlhbGx5IGZyb20gbXVsdGlwbGUgaWRlbnRpY2FsIFN0b3JhZ2U8PiBp
bnN0YW50aWF0aW9ucy4gIFNvIGFueXRpbWUKKy8vIHdlIHVzZSB0eXBlIGluaGVyaXRhbmNlIHJh
dGhlciB0aGFuIGVuY2Fwc3VsYXRpb24sIHdlIG1hcmsKKy8vIENvbXByZXNzZWRUdXBsZUltcGws
IHRvIG1ha2UgdGhpcyBlYXN5IHRvIGRldGVjdC4KK3N0cnVjdCB1c2VzX2luaGVyaXRhbmNlIHt9
OworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBib29sIFNob3VsZFVzZUJhc2Uo
KSB7Ci0gIHJldHVybiBzdGQ6OmlzX2NsYXNzPFQ+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2VtcHR5PFQ+
Ojp2YWx1ZSAmJiAhSXNGaW5hbDxUPigpOworICByZXR1cm4gc3RkOjppc19jbGFzczxUPjo6dmFs
dWUgJiYgc3RkOjppc19lbXB0eTxUPjo6dmFsdWUgJiYgIUlzRmluYWw8VD4oKSAmJgorICAgICAg
ICAgIXN0ZDo6aXNfYmFzZV9vZjx1c2VzX2luaGVyaXRhbmNlLCBUPjo6dmFsdWU7CiB9CiAKIC8v
IFRoZSBzdG9yYWdlIGNsYXNzIHByb3ZpZGVzIHR3byBzcGVjaWFsaXphdGlvbnM6CiAvLyAgLSBG
b3IgZW1wdHkgY2xhc3NlcywgaXQgc3RvcmVzIFQgYXMgYSBiYXNlIGNsYXNzLgogLy8gIC0gRm9y
IGV2ZXJ5dGhpbmcgZWxzZSwgaXQgc3RvcmVzIFQgYXMgYSBtZW1iZXIuCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRCwgc2l6ZV90IEksIGJvb2wgPSBTaG91bGRVc2VCYXNlPEVsZW1UPEQsIEk+PigpPgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBJLAorI2lmIGRlZmluZWQoX01TQ19WRVIpCisg
ICAgICAgICAgYm9vbCBVc2VCYXNlID0KKyAgICAgICAgICAgICAgU2hvdWxkVXNlQmFzZTx0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjx0cnVlLCBUPjo6dHlwZT4oKT4KKyNlbHNlCisgICAgICAgICAg
Ym9vbCBVc2VCYXNlID0gU2hvdWxkVXNlQmFzZTxUPigpPgorI2VuZGlmCiBzdHJ1Y3QgU3RvcmFn
ZSB7Ci0gIHVzaW5nIFQgPSBFbGVtVDxELCBJPjsKICAgVCB2YWx1ZTsKICAgY29uc3RleHByIFN0
b3JhZ2UoKSA9IGRlZmF1bHQ7Ci0gIGV4cGxpY2l0IGNvbnN0ZXhwciBTdG9yYWdlKFQmJiB2KSA6
IHZhbHVlKGFic2w6OmZvcndhcmQ8VD4odikpIHt9Ci0gIGNvbnN0ZXhwciBjb25zdCBUJiBnZXQo
KSBjb25zdCB7IHJldHVybiB2YWx1ZTsgfQotICBUJiBnZXQoKSB7IHJldHVybiB2YWx1ZTsgfQor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KKyAgZXhwbGljaXQgY29uc3RleHByIFN0b3JhZ2UoYWJz
bDo6aW5fcGxhY2VfdCwgViYmIHYpCisgICAgICA6IHZhbHVlKGFic2w6OmZvcndhcmQ8Vj4odikp
IHt9CisgIGNvbnN0ZXhwciBjb25zdCBUJiBnZXQoKSBjb25zdCYgeyByZXR1cm4gdmFsdWU7IH0K
KyAgVCYgZ2V0KCkgJiB7IHJldHVybiB2YWx1ZTsgfQorICBjb25zdGV4cHIgY29uc3QgVCYmIGdl
dCgpIGNvbnN0JiYgeyByZXR1cm4gYWJzbDo6bW92ZSgqdGhpcykudmFsdWU7IH0KKyAgVCYmIGdl
dCgpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZSgqdGhpcykudmFsdWU7IH0KIH07CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBELCBzaXplX3QgST4KLXN0cnVjdCBBQlNMX0lOVEVSTkFMX0NPTVBSRVNTRURf
VFVQTEVfREVDTFNQRUMgU3RvcmFnZTxELCBJLCB0cnVlPgotICAgIDogRWxlbVQ8RCwgST4gewot
ICB1c2luZyBUID0gaW50ZXJuYWxfY29tcHJlc3NlZF90dXBsZTo6RWxlbVQ8RCwgST47Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEk+CitzdHJ1Y3QgQUJTTF9JTlRFUk5BTF9DT01QUkVT
U0VEX1RVUExFX0RFQ0xTUEVDIFN0b3JhZ2U8VCwgSSwgdHJ1ZT4gOiBUIHsKICAgY29uc3RleHBy
IFN0b3JhZ2UoKSA9IGRlZmF1bHQ7Ci0gIGV4cGxpY2l0IGNvbnN0ZXhwciBTdG9yYWdlKFQmJiB2
KSA6IFQoYWJzbDo6Zm9yd2FyZDxUPih2KSkge30KLSAgY29uc3RleHByIGNvbnN0IFQmIGdldCgp
IGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gIFQmIGdldCgpIHsgcmV0dXJuICp0aGlzOyB9CisK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBTdG9yYWdlKGFi
c2w6OmluX3BsYWNlX3QsIFYmJiB2KQorICAgICAgOiBUKGFic2w6OmZvcndhcmQ8Vj4odikpIHt9
CisKKyAgY29uc3RleHByIGNvbnN0IFQmIGdldCgpIGNvbnN0JiB7IHJldHVybiAqdGhpczsgfQor
ICBUJiBnZXQoKSAmIHsgcmV0dXJuICp0aGlzOyB9CisgIGNvbnN0ZXhwciBjb25zdCBUJiYgZ2V0
KCkgY29uc3QmJiB7IHJldHVybiBhYnNsOjptb3ZlKCp0aGlzKTsgfQorICBUJiYgZ2V0KCkgJiYg
eyByZXR1cm4gc3RkOjptb3ZlKCp0aGlzKTsgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEQs
IHR5cGVuYW1lIEk+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRCwgdHlwZW5hbWUgSSwgYm9vbCBTaG91
bGRBbnlVc2VCYXNlPgogc3RydWN0IEFCU0xfSU5URVJOQUxfQ09NUFJFU1NFRF9UVVBMRV9ERUNM
U1BFQyBDb21wcmVzc2VkVHVwbGVJbXBsOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHMsIHNp
emVfdC4uLiBJPgotc3RydWN0IEFCU0xfSU5URVJOQUxfQ09NUFJFU1NFRF9UVVBMRV9ERUNMU1BF
QwotICAgIENvbXByZXNzZWRUdXBsZUltcGw8Q29tcHJlc3NlZFR1cGxlPFRzLi4uPiwgYWJzbDo6
aW5kZXhfc2VxdWVuY2U8SS4uLj4+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHMsIHNpemVfdC4u
LiBJLCBib29sIFNob3VsZEFueVVzZUJhc2U+CitzdHJ1Y3QgQUJTTF9JTlRFUk5BTF9DT01QUkVT
U0VEX1RVUExFX0RFQ0xTUEVDIENvbXByZXNzZWRUdXBsZUltcGw8CisgICAgQ29tcHJlc3NlZFR1
cGxlPFRzLi4uPiwgYWJzbDo6aW5kZXhfc2VxdWVuY2U8SS4uLj4sIFNob3VsZEFueVVzZUJhc2U+
CiAgICAgLy8gV2UgdXNlIHRoZSBkdW1teSBpZGVudGl0eSBmdW5jdGlvbiB0aHJvdWdoIHN0ZDo6
aW50ZWdyYWxfY29uc3RhbnQgdG8KICAgICAvLyBjb252aW5jZSBNU1ZDIG9mIGFjY2VwdGluZyBh
bmQgZXhwYW5kaW5nIEkgaW4gdGhhdCBjb250ZXh0LiBXaXRob3V0IGl0CiAgICAgLy8geW91IHdv
dWxkIGdldDoKICAgICAvLyAgIGVycm9yIEMzNTQ4OiAnSSc6IHBhcmFtZXRlciBwYWNrIGNhbm5v
dCBiZSB1c2VkIGluIHRoaXMgY29udGV4dAotICAgIDogU3RvcmFnZTxDb21wcmVzc2VkVHVwbGU8
VHMuLi4+LAotICAgICAgICAgICAgICBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgST46
OnZhbHVlPi4uLiB7CisgICAgOiB1c2VzX2luaGVyaXRhbmNlLAorICAgICAgU3RvcmFnZTxUcywg
c3RkOjppbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIEk+Ojp2YWx1ZT4uLi4gewogICBjb25zdGV4
cHIgQ29tcHJlc3NlZFR1cGxlSW1wbCgpID0gZGVmYXVsdDsKLSAgZXhwbGljaXQgY29uc3RleHBy
IENvbXByZXNzZWRUdXBsZUltcGwoVHMmJi4uLiBhcmdzKQotICAgICAgOiBTdG9yYWdlPENvbXBy
ZXNzZWRUdXBsZTxUcy4uLj4sIEk+KGFic2w6OmZvcndhcmQ8VHM+KGFyZ3MpKS4uLiB7fQorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVnM+CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBDb21wcmVzc2Vk
VHVwbGVJbXBsKGFic2w6OmluX3BsYWNlX3QsIFZzJiYuLi4gYXJncykKKyAgICAgIDogU3RvcmFn
ZTxUcywgST4oYWJzbDo6aW5fcGxhY2UsIGFic2w6OmZvcndhcmQ8VnM+KGFyZ3MpKS4uLiB7fQor
ICBmcmllbmQgQ29tcHJlc3NlZFR1cGxlPFRzLi4uPjsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBUcywgc2l6ZV90Li4uIEk+CitzdHJ1Y3QgQUJTTF9JTlRFUk5BTF9DT01QUkVTU0VEX1RV
UExFX0RFQ0xTUEVDIENvbXByZXNzZWRUdXBsZUltcGw8CisgICAgQ29tcHJlc3NlZFR1cGxlPFRz
Li4uPiwgYWJzbDo6aW5kZXhfc2VxdWVuY2U8SS4uLj4sIGZhbHNlPgorICAgIC8vIFdlIHVzZSB0
aGUgZHVtbXkgaWRlbnRpdHkgZnVuY3Rpb24gYXMgYWJvdmUuLi4KKyAgICA6IFN0b3JhZ2U8VHMs
IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBJPjo6dmFsdWUsIGZhbHNlPi4uLiB7Cisg
IGNvbnN0ZXhwciBDb21wcmVzc2VkVHVwbGVJbXBsKCkgPSBkZWZhdWx0OworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gVnM+CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBDb21wcmVzc2VkVHVwbGVJbXBs
KGFic2w6OmluX3BsYWNlX3QsIFZzJiYuLi4gYXJncykKKyAgICAgIDogU3RvcmFnZTxUcywgSSwg
ZmFsc2U+KGFic2w6OmluX3BsYWNlLCBhYnNsOjpmb3J3YXJkPFZzPihhcmdzKSkuLi4ge30KKyAg
ZnJpZW5kIENvbXByZXNzZWRUdXBsZTxUcy4uLj47Cit9OworCitzdGQ6OmZhbHNlX3R5cGUgT3Io
c3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6ZmFsc2VfdHlwZT4pOworc3RkOjp0cnVlX3R5cGUg
T3Ioc3RkOjppbml0aWFsaXplcl9saXN0PGJvb2w+KTsKKworLy8gTVNWQyByZXF1aXJlcyB0aGlz
IHRvIGJlIGRvbmUgc2VwYXJhdGVseSByYXRoZXIgdGhhbiB3aXRoaW4gdGhlIGRlY2xhcmF0aW9u
CisvLyBvZiBDb21wcmVzc2VkVHVwbGUgYmVsb3cuCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHM+
Citjb25zdGV4cHIgYm9vbCBTaG91bGRBbnlVc2VCYXNlKCkgeworICByZXR1cm4gZGVjbHR5cGUo
CisgICAgICBPcih7c3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBTaG91bGRVc2VCYXNlPFRz
PigpPigpLi4ufSkpe307Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWPgor
dXNpbmcgVHVwbGVNb3ZlQ29uc3RydWN0aWJsZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8
CisgICAgICBzdGQ6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUsIHN0ZDo6aXNfY29udmVydGlibGU8
ViwgVD4sCisgICAgICBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgViYmPj46OnR5cGU7CisKIH0g
IC8vIG5hbWVzcGFjZSBpbnRlcm5hbF9jb21wcmVzc2VkX3R1cGxlCiAKIC8vIEhlbHBlciBjbGFz
cyB0byBwZXJmb3JtIHRoZSBFbXB0eSBCYXNlIENsYXNzIE9wdGltaXphdGlvbi4KIC8vIFRzIGNh
biBjb250YWluIGNsYXNzZXMgYW5kIG5vbi1jbGFzc2VzLCBlbXB0eSBvciBub3QuIEZvciB0aGUg
b25lcyB0aGF0CiAvLyBhcmUgZW1wdHkgY2xhc3Nlcywgd2UgcGVyZm9ybSB0aGUgQ29tcHJlc3Nl
ZFR1cGxlLiBJZiBhbGwgdHlwZXMgaW4gVHMgYXJlCi0vLyBlbXB0eSBjbGFzc2VzLCB0aGVuIENv
bXByZXNzZWRUdXBsZTxUcy4uLj4gaXMgaXRzZWxmIGFuIGVtcHR5IGNsYXNzLgorLy8gZW1wdHkg
Y2xhc3NlcywgdGhlbiBDb21wcmVzc2VkVHVwbGU8VHMuLi4+IGlzIGl0c2VsZiBhbiBlbXB0eSBj
bGFzcy4gIChUaGlzCisvLyBkb2VzIG5vdCBhcHBseSB3aGVuIG9uZSBvciBtb3JlIG9mIHRob3Nl
IGVtcHR5IGNsYXNzZXMgaXMgaXRzZWxmIGFuIGVtcHR5CisvLyBDb21wcmVzc2VkVHVwbGUuKQog
Ly8KIC8vIFRvIGFjY2VzcyB0aGUgbWVtYmVycywgdXNlIG1lbWJlciAuZ2V0PE4+KCkgZnVuY3Rp
b24uCiAvLwpAQCAtMTM3LDI4ICsxOTEsNjIgQEAgc3RydWN0IEFCU0xfSU5URVJOQUxfQ09NUFJF
U1NFRF9UVVBMRV9ERUNMU1BFQwogLy8gICBjb25zdCBUMiYgdDIgPSB2YWx1ZS5nZXQ8Mj4oKTsK
IC8vICAgLi4uCiAvLwotLy8gaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3Vh
Z2UvZWJvCisvLyBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZWJv
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHM+CiBjbGFzcyBBQlNMX0lOVEVSTkFMX0NPTVBSRVNT
RURfVFVQTEVfREVDTFNQRUMgQ29tcHJlc3NlZFR1cGxlCiAgICAgOiBwcml2YXRlIGludGVybmFs
X2NvbXByZXNzZWRfdHVwbGU6OkNvbXByZXNzZWRUdXBsZUltcGw8Ci0gICAgICAgICAgQ29tcHJl
c3NlZFR1cGxlPFRzLi4uPiwgYWJzbDo6aW5kZXhfc2VxdWVuY2VfZm9yPFRzLi4uPj4geworICAg
ICAgICAgIENvbXByZXNzZWRUdXBsZTxUcy4uLj4sIGFic2w6OmluZGV4X3NlcXVlbmNlX2ZvcjxU
cy4uLj4sCisgICAgICAgICAgaW50ZXJuYWxfY29tcHJlc3NlZF90dXBsZTo6U2hvdWxkQW55VXNl
QmFzZTxUcy4uLj4oKT4gewogIHByaXZhdGU6CiAgIHRlbXBsYXRlIDxpbnQgST4KICAgdXNpbmcg
RWxlbVQgPSBpbnRlcm5hbF9jb21wcmVzc2VkX3R1cGxlOjpFbGVtVDxDb21wcmVzc2VkVHVwbGUs
IEk+OwogCisgIHRlbXBsYXRlIDxpbnQgST4KKyAgdXNpbmcgU3RvcmFnZVQgPSBpbnRlcm5hbF9j
b21wcmVzc2VkX3R1cGxlOjpTdG9yYWdlPEVsZW1UPEk+LCBJPjsKKwogIHB1YmxpYzoKKyAgLy8g
VGhlcmUgc2VlbXMgdG8gYmUgYSBidWcgaW4gTVNWQyBkZWFsaW5nIGluIHdoaWNoIHVzaW5nICc9
ZGVmYXVsdCcgaGVyZSB3aWxsCisgIC8vIGNhdXNlIHRoZSBjb21waWxlciB0byBpZ25vcmUgdGhl
IGJvZHkgb2Ygb3RoZXIgY29uc3RydWN0b3JzLiBUaGUgd29yay0KKyAgLy8gYXJvdW5kIGlzIHRv
IGV4cGxpY2l0bHkgaW1wbGVtZW50IHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yLgorI2lmIGRlZmlu
ZWQoX01TQ19WRVIpCisgIGNvbnN0ZXhwciBDb21wcmVzc2VkVHVwbGUoKSA6IENvbXByZXNzZWRU
dXBsZTo6Q29tcHJlc3NlZFR1cGxlSW1wbCgpIHt9CisjZWxzZQogICBjb25zdGV4cHIgQ29tcHJl
c3NlZFR1cGxlKCkgPSBkZWZhdWx0OwotICBleHBsaWNpdCBjb25zdGV4cHIgQ29tcHJlc3NlZFR1
cGxlKFRzLi4uIGJhc2UpCi0gICAgICA6IENvbXByZXNzZWRUdXBsZTo6Q29tcHJlc3NlZFR1cGxl
SW1wbChhYnNsOjpmb3J3YXJkPFRzPihiYXNlKS4uLikge30KKyNlbmRpZgorICBleHBsaWNpdCBj
b25zdGV4cHIgQ29tcHJlc3NlZFR1cGxlKGNvbnN0IFRzJi4uLiBiYXNlKQorICAgICAgOiBDb21w
cmVzc2VkVHVwbGU6OkNvbXByZXNzZWRUdXBsZUltcGwoYWJzbDo6aW5fcGxhY2UsIGJhc2UuLi4p
IHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFZzLAorICAgICAgICAgICAgYWJzbDo6ZW5h
YmxlX2lmX3Q8CisgICAgICAgICAgICAgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgICAg
ICAgICAgICAgIC8vIEVuc3VyZSB3ZSBhcmUgbm90IGhpZGluZyBkZWZhdWx0IGNvcHkvbW92ZSBj
b25zdHJ1Y3RvcnMuCisgICAgICAgICAgICAgICAgICAgIGFic2w6Om5lZ2F0aW9uPHN0ZDo6aXNf
c2FtZTx2b2lkKENvbXByZXNzZWRUdXBsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkKGFic2w6OmRlY2F5X3Q8VnM+Li4uKT4+LAorICAgICAg
ICAgICAgICAgICAgICBpbnRlcm5hbF9jb21wcmVzc2VkX3R1cGxlOjpUdXBsZU1vdmVDb25zdHJ1
Y3RpYmxlPAorICAgICAgICAgICAgICAgICAgICAgICAgVHMsIFZzJiY+Li4uPjo6dmFsdWUsCisg
ICAgICAgICAgICAgICAgYm9vbD4gPSB0cnVlPgorICBleHBsaWNpdCBjb25zdGV4cHIgQ29tcHJl
c3NlZFR1cGxlKFZzJiYuLi4gYmFzZSkKKyAgICAgIDogQ29tcHJlc3NlZFR1cGxlOjpDb21wcmVz
c2VkVHVwbGVJbXBsKGFic2w6OmluX3BsYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWJzbDo6Zm9yd2FyZDxWcz4oYmFzZSkuLi4pIHt9CisKKyAgdGVt
cGxhdGUgPGludCBJPgorICBFbGVtVDxJPiYgZ2V0KCkgJiB7CisgICAgcmV0dXJuIGludGVybmFs
X2NvbXByZXNzZWRfdHVwbGU6OlN0b3JhZ2U8RWxlbVQ8ST4sIEk+OjpnZXQoKTsKKyAgfQorCisg
IHRlbXBsYXRlIDxpbnQgST4KKyAgY29uc3RleHByIGNvbnN0IEVsZW1UPEk+JiBnZXQoKSBjb25z
dCYgeworICAgIHJldHVybiBTdG9yYWdlVDxJPjo6Z2V0KCk7CisgIH0KIAogICB0ZW1wbGF0ZSA8
aW50IEk+Ci0gIEVsZW1UPEk+JiBnZXQoKSB7Ci0gICAgcmV0dXJuIGludGVybmFsX2NvbXByZXNz
ZWRfdHVwbGU6OlN0b3JhZ2U8Q29tcHJlc3NlZFR1cGxlLCBJPjo6Z2V0KCk7CisgIEVsZW1UPEk+
JiYgZ2V0KCkgJiYgeworICAgIHJldHVybiBzdGQ6Om1vdmUoKnRoaXMpLlN0b3JhZ2VUPEk+Ojpn
ZXQoKTsKICAgfQogCiAgIHRlbXBsYXRlIDxpbnQgST4KLSAgY29uc3RleHByIGNvbnN0IEVsZW1U
PEk+JiBnZXQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGludGVybmFsX2NvbXByZXNzZWRfdHVwbGU6
OlN0b3JhZ2U8Q29tcHJlc3NlZFR1cGxlLCBJPjo6Z2V0KCk7CisgIGNvbnN0ZXhwciBjb25zdCBF
bGVtVDxJPiYmIGdldCgpIGNvbnN0JiYgeworICAgIHJldHVybiBhYnNsOjptb3ZlKCp0aGlzKS5T
dG9yYWdlVDxJPjo6Z2V0KCk7CiAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvY29tcHJlc3NlZF90dXBsZV90ZXN0LmNjCmluZGV4IDQ1MDMwYzY3NWVlMWFkYWYyNDI3
MjQwMWIyNmNiZDlhYzUzYTk3YTcuLjE5YWY4ZjEwYWE2Y2Y3MDlkNzQ2NzM0NGQxMTNlN2E5OTFk
MWVmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21wcmVzc2VkX3R1
cGxlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbXByZXNzZWRfdHVw
bGVfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
MTQsMTcgKzE0LDI2IEBACiAKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21w
cmVzc2VkX3R1cGxlLmgiCiAKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgog
CiAjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5oIgor
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvYW55
LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFic2wvdXRp
bGl0eS91dGlsaXR5LmgiCiAKLW5hbWVzcGFjZSBhYnNsIHsKLW5hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwgewotbmFtZXNwYWNlIHsKKy8vIFRoZXNlIGFyZSBkZWNsYXJlZCBhdCBnbG9iYWwg
c2NvcGUgcHVyZWx5IHNvIHRoYXQgZXJyb3IgbWVzc2FnZXMKKy8vIGFyZSBzbWFsbGVyIGFuZCBl
YXNpZXIgdG8gdW5kZXJzdGFuZC4KK2VudW0gY2xhc3MgQ2FsbFR5cGUgeyBrQ29uc3RSZWYsIGtD
b25zdE1vdmUgfTsKIAogdGVtcGxhdGUgPGludD4KLXN0cnVjdCBFbXB0eSB7fTsKK3N0cnVjdCBF
bXB0eSB7CisgIGNvbnN0ZXhwciBDYWxsVHlwZSB2YWx1ZSgpIGNvbnN0JiB7IHJldHVybiBDYWxs
VHlwZTo6a0NvbnN0UmVmOyB9CisgIGNvbnN0ZXhwciBDYWxsVHlwZSB2YWx1ZSgpIGNvbnN0JiYg
eyByZXR1cm4gQ2FsbFR5cGU6OmtDb25zdE1vdmU7IH0KK307CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogc3RydWN0IE5vdEVtcHR5IHsKQEAgLTM3LDYgKzQ2LDE0IEBAIHN0cnVjdCBUd29WYWx1
ZXMgewogICBVIHZhbHVlMjsKIH07CiAKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNv
bnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjp0ZXN0X2ludGVy
bmFsOjpDb3B5YWJsZU1vdmFibGVJbnN0YW5jZTsKK3VzaW5nIGFic2w6OnRlc3RfaW50ZXJuYWw6
Okluc3RhbmNlVHJhY2tlcjsKKwogVEVTVChDb21wcmVzc2VkVHVwbGVUZXN0LCBTaXplb2YpIHsK
ICAgRVhQRUNUX0VRKHNpemVvZihpbnQpLCBzaXplb2YoQ29tcHJlc3NlZFR1cGxlPGludD4pKTsK
ICAgRVhQRUNUX0VRKHNpemVvZihpbnQpLCBzaXplb2YoQ29tcHJlc3NlZFR1cGxlPGludCwgRW1w
dHk8MD4+KSk7CkBAIC01Miw2ICs2OSwxNDEgQEAgVEVTVChDb21wcmVzc2VkVHVwbGVUZXN0LCBT
aXplb2YpIHsKICAgICAgICAgICAgIHNpemVvZihDb21wcmVzc2VkVHVwbGU8aW50LCBFbXB0eTww
PiwgTm90RW1wdHk8ZG91YmxlPiwgRW1wdHk8MT4+KSk7CiB9CiAKK1RFU1QoQ29tcHJlc3NlZFR1
cGxlVGVzdCwgT25lTW92ZU9uUlZhbHVlQ29uc3RydWN0aW9uVGVtcCkgeworICBJbnN0YW5jZVRy
YWNrZXIgdHJhY2tlcjsKKyAgQ29tcHJlc3NlZFR1cGxlPENvcHlhYmxlTW92YWJsZUluc3RhbmNl
PiB4MShDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSgxKSk7CisgIEVYUEVDVF9FUSh0cmFja2VyLmlu
c3RhbmNlcygpLCAxKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDApOworICBFWFBF
Q1RfTEUodHJhY2tlci5tb3ZlcygpLCAxKTsKKyAgRVhQRUNUX0VRKHgxLmdldDwwPigpLnZhbHVl
KCksIDEpOworfQorCitURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIE9uZU1vdmVPblJWYWx1ZUNv
bnN0cnVjdGlvbk1vdmUpIHsKKyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisKKyAgQ29weWFi
bGVNb3ZhYmxlSW5zdGFuY2UgaTEoMSk7CisgIENvbXByZXNzZWRUdXBsZTxDb3B5YWJsZU1vdmFi
bGVJbnN0YW5jZT4geDEoc3RkOjptb3ZlKGkxKSk7CisgIEVYUEVDVF9FUSh0cmFja2VyLmluc3Rh
bmNlcygpLCAyKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDApOworICBFWFBFQ1Rf
TEUodHJhY2tlci5tb3ZlcygpLCAxKTsKKyAgRVhQRUNUX0VRKHgxLmdldDwwPigpLnZhbHVlKCks
IDEpOworfQorCitURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIE9uZU1vdmVPblJWYWx1ZUNvbnN0
cnVjdGlvbk1peGVkVHlwZXMpIHsKKyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIENvcHlh
YmxlTW92YWJsZUluc3RhbmNlIGkxKDEpOworICBDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSBpMigy
KTsKKyAgRW1wdHk8MD4gZW1wdHk7CisgIENvbXByZXNzZWRUdXBsZTxDb3B5YWJsZU1vdmFibGVJ
bnN0YW5jZSwgQ29weWFibGVNb3ZhYmxlSW5zdGFuY2UmLCBFbXB0eTwwPj4KKyAgICAgIHgxKHN0
ZDo6bW92ZShpMSksIGkyLCBlbXB0eSk7CisgIEVYUEVDVF9FUSh4MS5nZXQ8MD4oKS52YWx1ZSgp
LCAxKTsKKyAgRVhQRUNUX0VRKHgxLmdldDwxPigpLnZhbHVlKCksIDIpOworICBFWFBFQ1RfRVEo
dHJhY2tlci5jb3BpZXMoKSwgMCk7CisgIEVYUEVDVF9FUSh0cmFja2VyLm1vdmVzKCksIDEpOwor
fQorCitzdHJ1Y3QgSW5jb21wbGV0ZVR5cGU7CitDb21wcmVzc2VkVHVwbGU8Q29weWFibGVNb3Zh
YmxlSW5zdGFuY2UsIEluY29tcGxldGVUeXBlJiwgRW1wdHk8MD4+CitNYWtlV2l0aEluY29tcGxl
dGUoQ29weWFibGVNb3ZhYmxlSW5zdGFuY2UgaTEsCisgICAgICAgICAgICAgICAgICAgSW5jb21w
bGV0ZVR5cGUmIHQsICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAgICAgICBFbXB0eTwwPiBlbXB0
eSkgeworICByZXR1cm4gQ29tcHJlc3NlZFR1cGxlPENvcHlhYmxlTW92YWJsZUluc3RhbmNlLCBJ
bmNvbXBsZXRlVHlwZSYsIEVtcHR5PDA+PnsKKyAgICAgIHN0ZDo6bW92ZShpMSksIHQsIGVtcHR5
fTsKK30KKworc3RydWN0IEluY29tcGxldGVUeXBlIHt9OworVEVTVChDb21wcmVzc2VkVHVwbGVU
ZXN0LCBPbmVNb3ZlT25SVmFsdWVDb25zdHJ1Y3Rpb25XaXRoSW5jb21wbGV0ZVR5cGUpIHsKKyAg
SW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIENvcHlhYmxlTW92YWJsZUluc3RhbmNlIGkxKDEp
OworICBFbXB0eTwwPiBlbXB0eTsKKyAgc3RydWN0IERlcml2ZWRUeXBlIDogSW5jb21wbGV0ZVR5
cGUge2ludCB2YWx1ZSA9IDA7fTsKKyAgRGVyaXZlZFR5cGUgZmQ7CisgIGZkLnZhbHVlID0gNzsK
KworICBDb21wcmVzc2VkVHVwbGU8Q29weWFibGVNb3ZhYmxlSW5zdGFuY2UsIEluY29tcGxldGVU
eXBlJiwgRW1wdHk8MD4+IHgxID0KKyAgICAgIE1ha2VXaXRoSW5jb21wbGV0ZShzdGQ6Om1vdmUo
aTEpLCBmZCwgZW1wdHkpOworCisgIEVYUEVDVF9FUSh4MS5nZXQ8MD4oKS52YWx1ZSgpLCAxKTsK
KyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PERlcml2ZWRUeXBlJj4oeDEuZ2V0PDE+KCkpLnZhbHVl
LCA3KTsKKworICBFWFBFQ1RfRVEodHJhY2tlci5jb3BpZXMoKSwgMCk7CisgIEVYUEVDVF9FUSh0
cmFja2VyLm1vdmVzKCksIDIpOworfQorCitURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsCisgICAg
IE9uZU1vdmVPblJWYWx1ZUNvbnN0cnVjdGlvbk1peGVkVHlwZXNfQnJhY2VJbml0UG9pc29uUGls
bEV4cGVjdGVkKSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyOworICBDb3B5YWJsZU1vdmFi
bGVJbnN0YW5jZSBpMSgxKTsKKyAgQ29weWFibGVNb3ZhYmxlSW5zdGFuY2UgaTIoMik7CisgIENv
bXByZXNzZWRUdXBsZTxDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSwgQ29weWFibGVNb3ZhYmxlSW5z
dGFuY2UmLCBFbXB0eTwwPj4KKyAgICAgIHgxKHN0ZDo6bW92ZShpMSksIGkyLCB7fSk7ICAvLyBO
T0xJTlQKKyAgRVhQRUNUX0VRKHgxLmdldDwwPigpLnZhbHVlKCksIDEpOworICBFWFBFQ1RfRVEo
eDEuZ2V0PDE+KCkudmFsdWUoKSwgMik7CisgIEVYUEVDVF9FUSh0cmFja2VyLmluc3RhbmNlcygp
LCAzKTsKKyAgLy8gV2UgYXJlIGZvcmNlZCBpbnRvIHRoZSBgY29uc3QgVHMmLi4uYCBjb25zdHJ1
Y3RvciAoaW52b2tpbmcgY29waWVzKQorICAvLyBiZWNhdXNlIHdlIG5lZWQgaXQgdG8gZGVkdWNl
IHRoZSB0eXBlIG9mIGB7fWAuCisgIC8vIHN0ZDo6dHVwbGUgYWxzbyBoYXMgdGhpcyBiZWhhdmlv
ci4KKyAgLy8gTm90ZSwgdGhpcyB0ZXN0IGlzIHByb29mIHRoYXQgdGhpcyBpcyBleHBlY3RlZCBi
ZWhhdmlvciwgYnV0IGl0IGlzIG5vdAorICAvLyBfZGVzaXJlZF8gYmVoYXZpb3IuCisgIEVYUEVD
VF9FUSh0cmFja2VyLmNvcGllcygpLCAxKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwg
MCk7Cit9CisKK1RFU1QoQ29tcHJlc3NlZFR1cGxlVGVzdCwgT25lQ29weU9uTFZhbHVlQ29uc3Ry
dWN0aW9uKSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyOworICBDb3B5YWJsZU1vdmFibGVJ
bnN0YW5jZSBpMSgxKTsKKworICBDb21wcmVzc2VkVHVwbGU8Q29weWFibGVNb3ZhYmxlSW5zdGFu
Y2U+IHgxKGkxKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVzKCksIDEpOworICBFWFBFQ1Rf
RVEodHJhY2tlci5tb3ZlcygpLCAwKTsKKworICB0cmFja2VyLlJlc2V0Q29waWVzTW92ZXNTd2Fw
cygpOworCisgIENvcHlhYmxlTW92YWJsZUluc3RhbmNlIGkyKDIpOworICBjb25zdCBDb3B5YWJs
ZU1vdmFibGVJbnN0YW5jZSYgaTJfcmVmID0gaTI7CisgIENvbXByZXNzZWRUdXBsZTxDb3B5YWJs
ZU1vdmFibGVJbnN0YW5jZT4geDIoaTJfcmVmKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIuY29waWVz
KCksIDEpOworICBFWFBFQ1RfRVEodHJhY2tlci5tb3ZlcygpLCAwKTsKK30KKworVEVTVChDb21w
cmVzc2VkVHVwbGVUZXN0LCBPbmVNb3ZlT25SVmFsdWVBY2Nlc3MpIHsKKyAgSW5zdGFuY2VUcmFj
a2VyIHRyYWNrZXI7CisgIENvcHlhYmxlTW92YWJsZUluc3RhbmNlIGkxKDEpOworICBDb21wcmVz
c2VkVHVwbGU8Q29weWFibGVNb3ZhYmxlSW5zdGFuY2U+IHgoc3RkOjptb3ZlKGkxKSk7CisgIHRy
YWNrZXIuUmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCk7CisKKyAgQ29weWFibGVNb3ZhYmxlSW5zdGFu
Y2UgaTIgPSBzdGQ6Om1vdmUoeCkuZ2V0PDA+KCk7CisgIEVYUEVDVF9FUSh0cmFja2VyLmNvcGll
cygpLCAwKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMSk7Cit9CisKK1RFU1QoQ29t
cHJlc3NlZFR1cGxlVGVzdCwgT25lQ29weU9uTFZhbHVlQWNjZXNzKSB7CisgIEluc3RhbmNlVHJh
Y2tlciB0cmFja2VyOworCisgIENvbXByZXNzZWRUdXBsZTxDb3B5YWJsZU1vdmFibGVJbnN0YW5j
ZT4geChDb3B5YWJsZU1vdmFibGVJbnN0YW5jZSgwKSk7CisgIEVYUEVDVF9FUSh0cmFja2VyLmNv
cGllcygpLCAwKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMSk7CisKKyAgQ29weWFi
bGVNb3ZhYmxlSW5zdGFuY2UgdCA9IHguZ2V0PDA+KCk7CisgIEVYUEVDVF9FUSh0cmFja2VyLmNv
cGllcygpLCAxKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMSk7Cit9CisKK1RFU1Qo
Q29tcHJlc3NlZFR1cGxlVGVzdCwgWmVyb0NvcHlPblJlZkFjY2VzcykgeworICBJbnN0YW5jZVRy
YWNrZXIgdHJhY2tlcjsKKworICBDb21wcmVzc2VkVHVwbGU8Q29weWFibGVNb3ZhYmxlSW5zdGFu
Y2U+IHgoQ29weWFibGVNb3ZhYmxlSW5zdGFuY2UoMCkpOworICBFWFBFQ1RfRVEodHJhY2tlci5j
b3BpZXMoKSwgMCk7CisgIEVYUEVDVF9FUSh0cmFja2VyLm1vdmVzKCksIDEpOworCisgIENvcHlh
YmxlTW92YWJsZUluc3RhbmNlJiB0MSA9IHguZ2V0PDA+KCk7CisgIGNvbnN0IENvcHlhYmxlTW92
YWJsZUluc3RhbmNlJiB0MiA9IHguZ2V0PDA+KCk7CisgIEVYUEVDVF9FUSh0cmFja2VyLmNvcGll
cygpLCAwKTsKKyAgRVhQRUNUX0VRKHRyYWNrZXIubW92ZXMoKSwgMSk7CisgIEVYUEVDVF9FUSh0
MS52YWx1ZSgpLCAwKTsKKyAgRVhQRUNUX0VRKHQyLnZhbHVlKCksIDApOworfQorCiBURVNUKENv
bXByZXNzZWRUdXBsZVRlc3QsIEFjY2VzcykgewogICBzdHJ1Y3QgUyB7CiAgICAgc3RkOjpzdHJp
bmcgeDsKQEAgLTExMiw5ICsyNjQsMTQgQEAgVEVTVChDb21wcmVzc2VkVHVwbGVUZXN0LCBOZXN0
ZWQpIHsKICAgRVhQRUNUX0VRKDQgKiBzaXplb2YoY2hhciksCiAgICAgICAgICAgICBzaXplb2Yo
Q29tcHJlc3NlZFR1cGxlPENvbXByZXNzZWRUdXBsZTxjaGFyLCBjaGFyPiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZFR1cGxlPGNoYXIsIGNoYXI+PikpOwot
ICBFWFBFQ1RfVFJVRSgKLSAgICAgIChzdGQ6OmlzX2VtcHR5PENvbXByZXNzZWRUdXBsZTxDb21w
cmVzc2VkVHVwbGU8RW1wdHk8MD4+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvbXByZXNzZWRUdXBsZTxFbXB0eTwxPj4+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUo
KHN0ZDo6aXNfZW1wdHk8Q29tcHJlc3NlZFR1cGxlPEVtcHR5PDA+LCBFbXB0eTwxPj4+Ojp2YWx1
ZSkpOworCisgIC8vIE1ha2Ugc3VyZSBldmVyeXRoaW5nIHN0aWxsIHdvcmtzIHdoZW4gdGhpbmdz
IGFyZSBuZXN0ZWQuCisgIHN0cnVjdCBDVF9FbXB0eSA6IENvbXByZXNzZWRUdXBsZTxFbXB0eTww
Pj4ge307CisgIENvbXByZXNzZWRUdXBsZTxFbXB0eTwwPiwgQ1RfRW1wdHk+IG5lc3RlZF9lbXB0
eTsKKyAgYXV0byBjb250YWluZWQgPSBuZXN0ZWRfZW1wdHkuZ2V0PDA+KCk7CisgIGF1dG8gbmVz
dGVkID0gbmVzdGVkX2VtcHR5LmdldDwxPigpLmdldDwwPigpOworICBFWFBFQ1RfVFJVRSgoc3Rk
Ojppc19zYW1lPGRlY2x0eXBlKGNvbnRhaW5lZCksIGRlY2x0eXBlKG5lc3RlZCk+Ojp2YWx1ZSkp
OwogfQogCiBURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIFJlZmVyZW5jZSkgewpAQCAtMTQwLDE1
ICsyOTcsMTAzIEBAIFRFU1QoQ29tcHJlc3NlZFR1cGxlVGVzdCwgTm9FbGVtZW50cykgewogICBF
WFBFQ1RfVFJVRShzdGQ6OmlzX2VtcHR5PENvbXByZXNzZWRUdXBsZTw+Pjo6dmFsdWUpOwogfQog
CitURVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIE1vdmVPbmx5RWxlbWVudHMpIHsKKyAgQ29tcHJl
c3NlZFR1cGxlPHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmluZz4+IHN0cl90dXAoCisgICAgICBh
YnNsOjptYWtlX3VuaXF1ZTxzdGQ6OnN0cmluZz4oInN0ciIpKTsKKworICBDb21wcmVzc2VkVHVw
bGU8Q29tcHJlc3NlZFR1cGxlPHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmluZz4+LAorICAgICAg
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGludD4+CisgIHgoc3RkOjptb3ZlKHN0cl90dXAp
LCBhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDUpKTsKKworICBFWFBFQ1RfRVEoKnguZ2V0PDA+KCku
Z2V0PDA+KCksICJzdHIiKTsKKyAgRVhQRUNUX0VRKCp4LmdldDwxPigpLCA1KTsKKworICBzdGQ6
OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+IHgwID0gc3RkOjptb3ZlKHguZ2V0PDA+KCkpLmdldDww
PigpOworICBzdGQ6OnVuaXF1ZV9wdHI8aW50PiB4MSA9IHN0ZDo6bW92ZSh4KS5nZXQ8MT4oKTsK
KworICBFWFBFQ1RfRVEoKngwLCAic3RyIik7CisgIEVYUEVDVF9FUSgqeDEsIDUpOworfQorCitU
RVNUKENvbXByZXNzZWRUdXBsZVRlc3QsIE1vdmVDb25zdHJ1Y3Rpb25Nb3ZlT25seUVsZW1lbnRz
KSB7CisgIENvbXByZXNzZWRUdXBsZTxzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+PiBiYXNl
KAorICAgICAgYWJzbDo6bWFrZV91bmlxdWU8c3RkOjpzdHJpbmc+KCJzdHIiKSk7CisgIEVYUEVD
VF9FUSgqYmFzZS5nZXQ8MD4oKSwgInN0ciIpOworCisgIENvbXByZXNzZWRUdXBsZTxzdGQ6OnVu
aXF1ZV9wdHI8c3RkOjpzdHJpbmc+PiBjb3B5KHN0ZDo6bW92ZShiYXNlKSk7CisgIEVYUEVDVF9F
USgqY29weS5nZXQ8MD4oKSwgInN0ciIpOworfQorCitURVNUKENvbXByZXNzZWRUdXBsZVRlc3Qs
IEFueUVsZW1lbnRzKSB7CisgIGFueSBhKHN0ZDo6c3RyaW5nKCJzdHIiKSk7CisgIENvbXByZXNz
ZWRUdXBsZTxhbnksIGFueSY+IHgoYW55KDUpLCBhKTsKKyAgRVhQRUNUX0VRKGFic2w6OmFueV9j
YXN0PGludD4oeC5nZXQ8MD4oKSksIDUpOworICBFWFBFQ1RfRVEoYWJzbDo6YW55X2Nhc3Q8c3Rk
OjpzdHJpbmc+KHguZ2V0PDE+KCkpLCAic3RyIik7CisKKyAgYSA9IDAuNWY7CisgIEVYUEVDVF9F
UShhYnNsOjphbnlfY2FzdDxmbG9hdD4oeC5nZXQ8MT4oKSksIDAuNSk7CisKKyAgLy8gRW5zdXJl
IGNvcHkgY29uc3RydWN0aW9uIHdvcmsgaW4gdGhlIGZhY2Ugb2YgYSB0eXBlIHdpdGggYSB1bml2
ZXJzYWwKKyAgLy8gaW1wbGljaXQgY29uc3RydWN0b3I7CisgIENvbXByZXNzZWRUdXBsZTxhYnNs
Ojphbnk+IGN7fSwgZChjKTsgIC8vIE5PTElOVAorfQorCiBURVNUKENvbXByZXNzZWRUdXBsZVRl
c3QsIENvbnN0ZXhwcikgewotICBjb25zdGV4cHIgQ29tcHJlc3NlZFR1cGxlPGludCwgZG91Ymxl
LCBDb21wcmVzc2VkVHVwbGU8aW50Pj4geCgKLSAgICAgIDcsIDEuMjUsIENvbXByZXNzZWRUdXBs
ZTxpbnQ+KDUpKTsKKyAgc3RydWN0IE5vblRyaXZpYWxTdHJ1Y3QgeworICAgIGNvbnN0ZXhwciBO
b25Ucml2aWFsU3RydWN0KCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBpbnQgdmFsdWUoKSBj
b25zdCB7IHJldHVybiB2OyB9CisgICAgaW50IHYgPSA1OworICB9OworICBzdHJ1Y3QgVHJpdmlh
bFN0cnVjdCB7CisgICAgVHJpdmlhbFN0cnVjdCgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIg
aW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdjsgfQorICAgIGludCB2OworICB9OworICBjb25z
dGV4cHIgQ29tcHJlc3NlZFR1cGxlPGludCwgZG91YmxlLCBDb21wcmVzc2VkVHVwbGU8aW50Piwg
RW1wdHk8MD4+IHgoCisgICAgICA3LCAxLjI1LCBDb21wcmVzc2VkVHVwbGU8aW50Pig1KSwge30p
OwogICBjb25zdGV4cHIgaW50IHgwID0geC5nZXQ8MD4oKTsKICAgY29uc3RleHByIGRvdWJsZSB4
MSA9IHguZ2V0PDE+KCk7CiAgIGNvbnN0ZXhwciBpbnQgeDIgPSB4LmdldDwyPigpLmdldDwwPigp
OworICBjb25zdGV4cHIgQ2FsbFR5cGUgeDMgPSB4LmdldDwzPigpLnZhbHVlKCk7CisKICAgRVhQ
RUNUX0VRKHgwLCA3KTsKICAgRVhQRUNUX0VRKHgxLCAxLjI1KTsKICAgRVhQRUNUX0VRKHgyLCA1
KTsKKyAgRVhQRUNUX0VRKHgzLCBDYWxsVHlwZTo6a0NvbnN0UmVmKTsKKworI2lmICFkZWZpbmVk
KF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fY2xhbmdfXykgfHwgX19HTlVDX18gPiA0CisgIGNvbnN0
ZXhwciBDb21wcmVzc2VkVHVwbGU8RW1wdHk8MD4sIFRyaXZpYWxTdHJ1Y3QsIGludD4gdHJpdmlh
bCA9IHt9OworICBjb25zdGV4cHIgQ2FsbFR5cGUgdHJpdmlhbDAgPSB0cml2aWFsLmdldDwwPigp
LnZhbHVlKCk7CisgIGNvbnN0ZXhwciBpbnQgdHJpdmlhbDEgPSB0cml2aWFsLmdldDwxPigpLnZh
bHVlKCk7CisgIGNvbnN0ZXhwciBpbnQgdHJpdmlhbDIgPSB0cml2aWFsLmdldDwyPigpOworCisg
IEVYUEVDVF9FUSh0cml2aWFsMCwgQ2FsbFR5cGU6OmtDb25zdFJlZik7CisgIEVYUEVDVF9FUSh0
cml2aWFsMSwgMCk7CisgIEVYUEVDVF9FUSh0cml2aWFsMiwgMCk7CisjZW5kaWYKKworICBjb25z
dGV4cHIgQ29tcHJlc3NlZFR1cGxlPEVtcHR5PDA+LCBOb25Ucml2aWFsU3RydWN0LCBhYnNsOjpv
cHRpb25hbDxpbnQ+PgorICAgICAgbm9uX3RyaXZpYWwgPSB7fTsKKyAgY29uc3RleHByIENhbGxU
eXBlIG5vbl90cml2aWFsMCA9IG5vbl90cml2aWFsLmdldDwwPigpLnZhbHVlKCk7CisgIGNvbnN0
ZXhwciBpbnQgbm9uX3RyaXZpYWwxID0gbm9uX3RyaXZpYWwuZ2V0PDE+KCkudmFsdWUoKTsKKyAg
Y29uc3RleHByIGFic2w6Om9wdGlvbmFsPGludD4gbm9uX3RyaXZpYWwyID0gbm9uX3RyaXZpYWwu
Z2V0PDI+KCk7CisKKyAgRVhQRUNUX0VRKG5vbl90cml2aWFsMCwgQ2FsbFR5cGU6OmtDb25zdFJl
Zik7CisgIEVYUEVDVF9FUShub25fdHJpdmlhbDEsIDUpOworICBFWFBFQ1RfRVEobm9uX3RyaXZp
YWwyLCBhYnNsOjpudWxsb3B0KTsKKworICBzdGF0aWMgY29uc3RleHByIGNoYXIgZGF0YVtdID0g
IkRFRiI7CisgIGNvbnN0ZXhwciBDb21wcmVzc2VkVHVwbGU8Y29uc3QgY2hhcio+IHooZGF0YSk7
CisgIGNvbnN0ZXhwciBjb25zdCBjaGFyKiB6MSA9IHouZ2V0PDA+KCk7CisgIEVYUEVDVF9FUShz
dGQ6OnN0cmluZyh6MSksIHN0ZDo6c3RyaW5nKGRhdGEpKTsKKworI2lmIGRlZmluZWQoX19jbGFu
Z19fKQorICAvLyBBbiBhcHBhcmVudCBidWcgaW4gZWFybGllciB2ZXJzaW9ucyBvZiBnY2MgY2xh
aW1zIHRoZXNlIGFyZSBhbWJpZ3VvdXMuCisgIGNvbnN0ZXhwciBpbnQgeDJtID0gYWJzbDo6bW92
ZSh4LmdldDwyPigpKS5nZXQ8MD4oKTsKKyAgY29uc3RleHByIENhbGxUeXBlIHgzbSA9IGFic2w6
Om1vdmUoeCkuZ2V0PDM+KCkudmFsdWUoKTsKKyAgRVhQRUNUX0VRKHgybSwgNSk7CisgIEVYUEVD
VF9FUSh4M20sIENhbGxUeXBlOjprQ29uc3RNb3ZlKTsKKyNlbmRpZgogfQogCiAjaWYgZGVmaW5l
ZChfX2NsYW5nX18pIHx8IGRlZmluZWQoX19HTlVDX18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL2NvbnRhaW5lcl9tZW1vcnkuaAppbmRleCA1NmM1ZDJkZjY3MzE0ZTgyOWZjOWY1OTFiMzZl
NjVhYjlkZjNlMGNhLi5lNWJiOTc3MzU1ZWUyMjlkYmU2OTVjNGExZGY0ZGUxNjQ3ZGEwNDVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI4NiwxMyArMjg2LDQ4IEBAIHN0
cnVjdCBJc0xheW91dENvbXBhdGlibGUgewogCiB9ICAvLyBuYW1lc3BhY2UgbWVtb3J5X2ludGVy
bmFsCiAKLS8vIElmIGtNdXRhYmxlS2V5cyBpcyBmYWxzZSwgb25seSB0aGUgdmFsdWUgbWVtYmVy
IGlzIGFjY2Vzc2VkLgorLy8gVGhlIGludGVybmFsIHN0b3JhZ2UgdHlwZSBmb3Iga2V5LXZhbHVl
IGNvbnRhaW5lcnMgbGlrZSBmbGF0X2hhc2hfbWFwLgogLy8KLS8vIElmIGtNdXRhYmxlS2V5cyBp
cyB0cnVlLCBrZXkgaXMgYWNjZXNzZWQgdGhyb3VnaCBhbGwgc2xvdHMgd2hpbGUgdmFsdWUgYW5k
Ci0vLyBtdXRhYmxlX3ZhbHVlIGFyZSBhY2Nlc3NlZCBvbmx5IHZpYSBJTklUSUFMSVpFRCBzbG90
cy4gU2xvdHMgYXJlIGNyZWF0ZWQgYW5kCi0vLyBkZXN0cm95ZWQgdmlhIG11dGFibGVfdmFsdWUg
c28gdGhhdCB0aGUga2V5IGNhbiBiZSBtb3ZlZCBsYXRlci4KKy8vIEl0IGlzIGNvbnZlbmllbnQg
Zm9yIHRoZSB2YWx1ZV90eXBlIG9mIGEgZmxhdF9oYXNoX21hcDxLLCBWPiB0byBiZQorLy8gcGFp
cjxjb25zdCBLLCBWPjsgdGhlICJjb25zdCBLIiBwcmV2ZW50cyBhY2NpZGVudGFsIG1vZGlmaWNh
dGlvbiBvZiB0aGUga2V5CisvLyB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgcmVmZXJlbmNlIHJldHVy
bmVkIGZyb20gZmluZCgpIGFuZCBzaW1pbGFyIG1ldGhvZHMuCisvLyBIb3dldmVyLCB0aGlzIGNy
ZWF0ZXMgb3RoZXIgcHJvYmxlbXM7IHdlIHdhbnQgdG8gYmUgYWJsZSB0byBlbXBsYWNlKEssIFYp
CisvLyBlZmZpY2llbnRseSB3aXRoIG1vdmUgb3BlcmF0aW9ucywgYW5kIHNpbWlsYXJseSBiZSBh
YmxlIHRvIG1vdmUgYQorLy8gcGFpcjxLLCBWPiBpbiBpbnNlcnQoKS4KKy8vCisvLyBUaGUgc29s
dXRpb24gaXMgdGhpcyB1bmlvbiwgd2hpY2ggYWxpYXNlcyB0aGUgY29uc3QgYW5kIG5vbi1jb25z
dCB2ZXJzaW9ucworLy8gb2YgdGhlIHBhaXIuIFRoaXMgYWxzbyBhbGxvd3MgZmxhdF9oYXNoX21h
cDxjb25zdCBLLCBWPiB0byB3b3JrLCBldmVuIHRob3VnaAorLy8gdGhhdCBoYXMgdGhlIHNhbWUg
ZWZmaWNpZW5jeSBpc3N1ZXMgd2l0aCBtb3ZlIGluIGVtcGxhY2UoKSBhbmQgaW5zZXJ0KCkgLQor
Ly8gYnV0IHBlb3BsZSBkbyBpdCBhbnl3YXkuCisvLworLy8gSWYga011dGFibGVLZXlzIGlzIGZh
bHNlLCBvbmx5IHRoZSB2YWx1ZSBtZW1iZXIgY2FuIGJlIGFjY2Vzc2VkLgorLy8KKy8vIElmIGtN
dXRhYmxlS2V5cyBpcyB0cnVlLCBrZXkgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggYWxsIHNsb3Rz
IHdoaWxlIHZhbHVlCisvLyBhbmQgbXV0YWJsZV92YWx1ZSBtdXN0IGJlIGFjY2Vzc2VkIG9ubHkg
dmlhIElOSVRJQUxJWkVEIHNsb3RzLiBTbG90cyBhcmUKKy8vIGNyZWF0ZWQgYW5kIGRlc3Ryb3ll
ZCB2aWEgbXV0YWJsZV92YWx1ZSBzbyB0aGF0IHRoZSBrZXkgY2FuIGJlIG1vdmVkIGxhdGVyLgor
Ly8KKy8vIEFjY2Vzc2luZyBvbmUgb2YgdGhlIHVuaW9uIGZpZWxkcyB3aGlsZSB0aGUgb3RoZXIg
aXMgYWN0aXZlIGlzIHNhZmUgYXMKKy8vIGxvbmcgYXMgdGhleSBhcmUgbGF5b3V0LWNvbXBhdGli
bGUsIHdoaWNoIGlzIGd1YXJhbnRlZWQgYnkgdGhlIGRlZmluaXRpb24gb2YKKy8vIGtNdXRhYmxl
S2V5cy4gRm9yIEMrKzExLCB0aGUgcmVsZXZhbnQgc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgaXMK
Ky8vIGh0dHBzOi8vdGltc29uZy1jcHAuZ2l0aHViLmlvL2NwcHdwL24zMzM3L2NsYXNzLm1lbSMx
OSAoOS4yLjE5KQogdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+Ci11bmlvbiBzbG90X3R5cGUg
ewordW5pb24gbWFwX3Nsb3RfdHlwZSB7CisgIG1hcF9zbG90X3R5cGUoKSB7fQorICB+bWFwX3Ns
b3RfdHlwZSgpID0gZGVsZXRlOworICB1c2luZyB2YWx1ZV90eXBlID0gc3RkOjpwYWlyPGNvbnN0
IEssIFY+OworICB1c2luZyBtdXRhYmxlX3ZhbHVlX3R5cGUgPSBzdGQ6OnBhaXI8SywgVj47CisK
KyAgdmFsdWVfdHlwZSB2YWx1ZTsKKyAgbXV0YWJsZV92YWx1ZV90eXBlIG11dGFibGVfdmFsdWU7
CisgIEsga2V5OworfTsKKwordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+CitzdHJ1Y3QgbWFw
X3Nsb3RfcG9saWN5IHsKKyAgdXNpbmcgc2xvdF90eXBlID0gbWFwX3Nsb3RfdHlwZTxLLCBWPjsK
KyAgdXNpbmcgdmFsdWVfdHlwZSA9IHN0ZDo6cGFpcjxjb25zdCBLLCBWPjsKKyAgdXNpbmcgbXV0
YWJsZV92YWx1ZV90eXBlID0gc3RkOjpwYWlyPEssIFY+OworCiAgcHJpdmF0ZToKICAgc3RhdGlj
IHZvaWQgZW1wbGFjZShzbG90X3R5cGUqIHNsb3QpIHsKICAgICAvLyBUaGUgY29uc3RydWN0aW9u
IG9mIHVuaW9uIGRvZXNuJ3QgZG8gYW55dGhpbmcgYXQgcnVudGltZSBidXQgaXQgYWxsb3dzIHVz
CkBAIC0zMDIsMTkgKzMzNywxNyBAQCB1bmlvbiBzbG90X3R5cGUgewogICAvLyBJZiBwYWlyPGNv
bnN0IEssIFY+IGFuZCBwYWlyPEssIFY+IGFyZSBsYXlvdXQtY29tcGF0aWJsZSwgd2UgY2FuIGFj
Y2VwdCBvbmUKICAgLy8gb3IgdGhlIG90aGVyIHZpYSBzbG90X3R5cGUuIFdlIGFyZSBhbHNvIGZy
ZWUgdG8gYWNjZXNzIHRoZSBrZXkgdmlhCiAgIC8vIHNsb3RfdHlwZTo6a2V5IGluIHRoaXMgY2Fz
ZS4KLSAgdXNpbmcga011dGFibGVLZXlzID0KLSAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8
Ym9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X2ludGVybmFsOjpJc0xh
eW91dENvbXBhdGlibGU8SywgVj46OnZhbHVlPjsKKyAgdXNpbmcga011dGFibGVLZXlzID0gbWVt
b3J5X2ludGVybmFsOjpJc0xheW91dENvbXBhdGlibGU8SywgVj47CiAKICBwdWJsaWM6Ci0gIHNs
b3RfdHlwZSgpIHt9Ci0gIH5zbG90X3R5cGUoKSA9IGRlbGV0ZTsKLSAgdXNpbmcgdmFsdWVfdHlw
ZSA9IHN0ZDo6cGFpcjxjb25zdCBLLCBWPjsKLSAgdXNpbmcgbXV0YWJsZV92YWx1ZV90eXBlID0g
c3RkOjpwYWlyPEssIFY+OworICBzdGF0aWMgdmFsdWVfdHlwZSYgZWxlbWVudChzbG90X3R5cGUq
IHNsb3QpIHsgcmV0dXJuIHNsb3QtPnZhbHVlOyB9CisgIHN0YXRpYyBjb25zdCB2YWx1ZV90eXBl
JiBlbGVtZW50KGNvbnN0IHNsb3RfdHlwZSogc2xvdCkgeworICAgIHJldHVybiBzbG90LT52YWx1
ZTsKKyAgfQogCi0gIHZhbHVlX3R5cGUgdmFsdWU7Ci0gIG11dGFibGVfdmFsdWVfdHlwZSBtdXRh
YmxlX3ZhbHVlOwotICBLIGtleTsKKyAgc3RhdGljIGNvbnN0IEsmIGtleShjb25zdCBzbG90X3R5
cGUqIHNsb3QpIHsKKyAgICByZXR1cm4ga011dGFibGVLZXlzOjp2YWx1ZSA/IHNsb3QtPmtleSA6
IHNsb3QtPnZhbHVlLmZpcnN0OworICB9CiAKICAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvciwg
Y2xhc3MuLi4gQXJncz4KICAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9jYXRvciogYWxsb2Ms
IHNsb3RfdHlwZSogc2xvdCwgQXJncyYmLi4uIGFyZ3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNjCmluZGV4IGYxYzQwNTgyOThjMTU3
NDA5ZmVjOWFjOTkwODUwYzBiMTQ5NDk3MWYuLmQ2YjA0OTVmMTczYWQ0YzRiM2IyZGQ2YzAxOGNi
Y2VjNjhhNWExMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWlu
ZXJfbWVtb3J5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5l
cl9tZW1vcnlfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvdW50aW5nX2FsbG9jYXRv
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvdW50aW5nX2FsbG9jYXRvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRlNzE3YmVmNjc4OTQ4M2Y2MThjMmQxMDg3YmQ4NjE0YmQ1Yzk3NDMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY291bnRpbmdfYWxsb2NhdG9yLmgK
QEAgLTAsMCArMSw3OSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQ09VTlRJTkdfQUxMT0NBVE9SX0hf
CisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0NPVU5USU5HX0FMTE9DQVRPUl9IXwor
CisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPG1lbW9y
eT4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisK
Ky8vIFRoaXMgaXMgYSBzdGF0ZWZ1bCBhbGxvY2F0b3IsIGJ1dCB0aGUgc3RhdGUgbGl2ZXMgb3V0
c2lkZSBvZiB0aGUKKy8vIGFsbG9jYXRvciAoaW4gd2hhdGV2ZXIgdGVzdCBpcyB1c2luZyB0aGUg
YWxsb2NhdG9yKS4gVGhpcyBpcyBvZGQKKy8vIGJ1dCBoZWxwcyBpbiB0ZXN0cyB3aGVyZSB0aGUg
YWxsb2NhdG9yIGlzIHByb3BhZ2F0ZWQgaW50byBuZXN0ZWQKKy8vIGNvbnRhaW5lcnMgLSB0aGF0
IGNoYWluIG9mIGFsbG9jYXRvcnMgdXNlcyB0aGUgc2FtZSBzdGF0ZSBhbmQgaXMKKy8vIHRodXMg
ZWFzaWVyIHRvIHF1ZXJ5IGZvciBhZ2dyZWdhdGUgYWxsb2NhdGlvbiBpbmZvcm1hdGlvbi4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ291bnRpbmdBbGxvY2F0b3IgOiBwdWJsaWMgc3Rk
OjphbGxvY2F0b3I8VD4geworIHB1YmxpYzoKKyAgdXNpbmcgQWxsb2MgPSBzdGQ6OmFsbG9jYXRv
cjxUPjsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIEFsbG9jOjpwb2ludGVyOworICB1c2lu
ZyBzaXplX3R5cGUgPSB0eXBlbmFtZSBBbGxvYzo6c2l6ZV90eXBlOworCisgIENvdW50aW5nQWxs
b2NhdG9yKCkgOiBieXRlc191c2VkXyhudWxscHRyKSB7fQorICBleHBsaWNpdCBDb3VudGluZ0Fs
bG9jYXRvcihpbnQ2NF90KiBiKSA6IGJ5dGVzX3VzZWRfKGIpIHt9CisKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+CisgIENvdW50aW5nQWxsb2NhdG9yKGNvbnN0IENvdW50aW5nQWxsb2NhdG9yPFU+
JiB4KQorICAgICAgOiBBbGxvYyh4KSwgYnl0ZXNfdXNlZF8oeC5ieXRlc191c2VkXykge30KKwor
ICBwb2ludGVyIGFsbG9jYXRlKHNpemVfdHlwZSBuLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6
YWxsb2NhdG9yPHZvaWQ+Ojpjb25zdF9wb2ludGVyIGhpbnQgPSBudWxscHRyKSB7CisgICAgYXNz
ZXJ0KGJ5dGVzX3VzZWRfICE9IG51bGxwdHIpOworICAgICpieXRlc191c2VkXyArPSBuICogc2l6
ZW9mKFQpOworICAgIHJldHVybiBBbGxvYzo6YWxsb2NhdGUobiwgaGludCk7CisgIH0KKworICB2
b2lkIGRlYWxsb2NhdGUocG9pbnRlciBwLCBzaXplX3R5cGUgbikgeworICAgIEFsbG9jOjpkZWFs
bG9jYXRlKHAsIG4pOworICAgIGFzc2VydChieXRlc191c2VkXyAhPSBudWxscHRyKTsKKyAgICAq
Ynl0ZXNfdXNlZF8gLT0gbiAqIHNpemVvZihUKTsKKyAgfQorCisgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+CisgIGNsYXNzIHJlYmluZCB7CisgICBwdWJsaWM6CisgICAgdXNpbmcgb3RoZXIgPSBDb3Vu
dGluZ0FsbG9jYXRvcjxVPjsKKyAgfTsKKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENvdW50aW5nQWxsb2NhdG9yJiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
dW50aW5nQWxsb2NhdG9yJiBiKSB7CisgICAgcmV0dXJuIGEuYnl0ZXNfdXNlZF8gPT0gYi5ieXRl
c191c2VkXzsKKyAgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgQ291bnRpbmdB
bGxvY2F0b3ImIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ291bnRpbmdBbGxv
Y2F0b3ImIGIpIHsKKyAgICByZXR1cm4gIShhID09IGIpOworICB9CisKKyAgaW50NjRfdCogYnl0
ZXNfdXNlZF87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAv
LyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0NP
VU5USU5HX0FMTE9DQVRPUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
X2Z1bmN0aW9uX2RlZmF1bHRzLmgKaW5kZXggMWYwZDc5NGQ5NjYzODgxODZkZDdkZmQ2OWE4YWU5
YTZhZGY3MDlmNi4uY2I4ZjAzYzg3YWFmYmQyMTM0ZGI1ZGJlMzVlMWY3OWRkNDVkYTJhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5o
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zOSw4ICszOSw4
IEBACiAvLyBlcXVhbCBmdW5jdGlvbnMgYXJlIHN0aWxsIGJvdW5kIHRvIFQuIFRoaXMgaXMgaW1w
b3J0YW50IGJlY2F1c2Ugc29tZSB0eXBlIFUKIC8vIGNhbiBiZSBoYXNoZWQgYnkvdGVzdGVkIGZv
ciBlcXVhbGl0eSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gVC4gQSBub3RhYmxlCiAvLyBleGFt
cGxlIGlzIGBjb25zdCBjaGFyKmAuIGBjb25zdCBjaGFyKmAgaXMgdHJlYXRlZCBhcyBhIGMtc3R5
bGUgc3RyaW5nIHdoZW4KLS8vIHRoZSBoYXNoIGZ1bmN0aW9uIGlzIGhhc2g8c3RyaW5nPiBidXQg
YXMgYSBwb2ludGVyIHdoZW4gdGhlIGhhc2ggZnVuY3Rpb24gaXMKLS8vIGhhc2g8dm9pZCo+Lgor
Ly8gdGhlIGhhc2ggZnVuY3Rpb24gaXMgaGFzaDxzdGQ6OnN0cmluZz4gYnV0IGFzIGEgcG9pbnRl
ciB3aGVuIHRoZSBoYXNoCisvLyBmdW5jdGlvbiBpcyBoYXNoPHZvaWQqPi4KIC8vCiAjaWZuZGVm
IEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hfRlVOQ1RJT05fREVGQVVMVFNfSF8KICNkZWZp
bmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSF9GVU5DVElPTl9ERUZBVUxUU19IXwpAQCAt
ODMsNiArODMsNyBAQCBzdHJ1Y3QgU3RyaW5nSGFzaEVxIHsKICAgICB9CiAgIH07CiB9OworCiB0
ZW1wbGF0ZSA8Pgogc3RydWN0IEhhc2hFcTxzdGQ6OnN0cmluZz4gOiBTdHJpbmdIYXNoRXEge307
CiB0ZW1wbGF0ZSA8PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hf
ZnVuY3Rpb25fZGVmYXVsdHNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
X2Z1bmN0aW9uX2RlZmF1bHRzX3Rlc3QuY2MKaW5kZXggNDY0YmFhZTAyY2RkYjBjNDFlNjEyZTU5
Nzg4ZDgzN2Q1OWY5MTdmYy4uODI3MDhkYmU5NTMwNmEzMTMzMDA1YTk2NDRhZjZjZjk1ZGUxYjcw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVm
YXVsdHNfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlv
bl9kZWZhdWx0c190ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC03NywxNCArNzcsMTQgQEAgc3RydWN0IEVxU3RyaW5nIDogOjp0ZXN0aW5nOjpUZXN0
IHsKICAgaGFzaF9kZWZhdWx0X2VxPFQ+IGtleV9lcTsKIH07CiAKLVRZUEVEX1RFU1RfQ0FTRShF
cVN0cmluZywgU3RyaW5nVHlwZXMpOworVFlQRURfVEVTVF9TVUlURShFcVN0cmluZywgU3RyaW5n
VHlwZXMpOwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIHN0cnVjdCBIYXNoU3RyaW5nIDogOjp0ZXN0
aW5nOjpUZXN0IHsKICAgaGFzaF9kZWZhdWx0X2hhc2g8VD4gaGFzaGVyOwogfTsKIAotVFlQRURf
VEVTVF9DQVNFKEhhc2hTdHJpbmcsIFN0cmluZ1R5cGVzKTsKK1RZUEVEX1RFU1RfU1VJVEUoSGFz
aFN0cmluZywgU3RyaW5nVHlwZXMpOwogCiBUWVBFRF9URVNUKEVxU3RyaW5nLCBXb3Jrcykgewog
ICBhdXRvIGVxID0gdGhpcy0+a2V5X2VxOwpAQCAtMTIxLDE0ICsxMjEsMTQgQEAgc3RydWN0IEVx
UG9pbnRlciA6IDo6dGVzdGluZzo6VGVzdCB7CiAgIGhhc2hfZGVmYXVsdF9lcTxUPiBrZXlfZXE7
CiB9OwogCi1UWVBFRF9URVNUX0NBU0UoRXFQb2ludGVyLCBQb2ludGVyVHlwZXMpOworVFlQRURf
VEVTVF9TVUlURShFcVBvaW50ZXIsIFBvaW50ZXJUeXBlcyk7CiAKIHRlbXBsYXRlIDxjbGFzcyBU
Pgogc3RydWN0IEhhc2hQb2ludGVyIDogOjp0ZXN0aW5nOjpUZXN0IHsKICAgaGFzaF9kZWZhdWx0
X2hhc2g8VD4gaGFzaGVyOwogfTsKIAotVFlQRURfVEVTVF9DQVNFKEhhc2hQb2ludGVyLCBQb2lu
dGVyVHlwZXMpOworVFlQRURfVEVTVF9TVUlURShIYXNoUG9pbnRlciwgUG9pbnRlclR5cGVzKTsK
IAogVFlQRURfVEVTVChFcVBvaW50ZXIsIFdvcmtzKSB7CiAgIGludCBkdW1teTsKQEAgLTIwMiwx
NSArMjAyLDExIEBAIFRZUEVEX1RFU1QoSGFzaFBvaW50ZXIsIFdvcmtzKSB7CiAgIEVYUEVDVF9O
RShoYXNoKCZkdW1teSksIGhhc2goY3VwdHIpKTsKIH0KIAotLy8gQ2FydGVzaWFuIHByb2R1Y3Qg
b2YgKHN0cmluZywgc3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3KQotLy8gd2l0aCAoc3Ry
aW5nLCBzdGQ6OnN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXcsIGNvbnN0IGNoYXIqKS4KKy8vIENh
cnRlc2lhbiBwcm9kdWN0IG9mIChzdGQ6OnN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXcpCisvLyB3
aXRoIChzdGQ6OnN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXcsIGNvbnN0IGNoYXIqKS4KIHVzaW5n
IFN0cmluZ1R5cGVzQ2FydGVzaWFuUHJvZHVjdCA9IFR5cGVzPAogICAgIC8vIGNsYW5nLWZvcm1h
dCBvZmYKIAotICAgIHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+LAotICAgIHN0
ZDo6cGFpcjxzdGQ6OnN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXc+LAotICAgIHN0ZDo6cGFpcjxz
dGQ6OnN0cmluZywgY29uc3QgY2hhcio+LAotCiAgICAgc3RkOjpwYWlyPGFic2w6OnN0cmluZ192
aWV3LCBzdGQ6OnN0cmluZz4sCiAgICAgc3RkOjpwYWlyPGFic2w6OnN0cmluZ192aWV3LCBhYnNs
OjpzdHJpbmdfdmlldz4sCiAgICAgc3RkOjpwYWlyPGFic2w6OnN0cmluZ192aWV3LCBjb25zdCBj
aGFyKj4+OwpAQCAtMjQ4LDcgKzI0NCw3IEBAIFRZUEVEX1RFU1RfUChTdHJpbmdMaWtlVGVzdCwg
SGFzaEVxKSB7CiAgIEVYUEVDVF9ORSh0aGlzLT5oYXNoKHRoaXMtPmExKSwgdGhpcy0+aGFzaCh0
aGlzLT5iMikpOwogfQogCi1UWVBFRF9URVNUX0NBU0UoU3RyaW5nTGlrZVRlc3QsIFN0cmluZ1R5
cGVzQ2FydGVzaWFuUHJvZHVjdCk7CitUWVBFRF9URVNUX1NVSVRFKFN0cmluZ0xpa2VUZXN0LCBT
dHJpbmdUeXBlc0NhcnRlc2lhblByb2R1Y3QpOwogCiB9ICAvLyBuYW1lc3BhY2UKIH0gIC8vIG5h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuY2MKaW5kZXggMGQ2YTlkZjE2ZjhhMzM2YzE0M2Fm
YWVlYzIwNjkxNDIzNjFiODg5Yy4uMzdhMjNkNjA5MWQ5NDYzYTg3MDZlNGUwYjhlYmJmOTQzYzRm
YzA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9y
X3Rlc3RpbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9y
X3Rlc3RpbmcuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTM5LDkgKzM5LDkgQEAgY2xhc3MgUmFuZG9tRGV2aWNlU2VlZFNlcSB7CiAKIH0gIC8vIG5hbWVz
cGFjZQogCi1zdGQ6Om10MTk5MzdfNjQqIEdldFRocmVhZExvY2FsUm5nKCkgeworc3RkOjptdDE5
OTM3XzY0KiBHZXRTaGFyZWRSbmcoKSB7CiAgIFJhbmRvbURldmljZVNlZWRTZXEgc2VlZF9zZXE7
Ci0gIHRocmVhZF9sb2NhbCBhdXRvKiBybmcgPSBuZXcgc3RkOjptdDE5OTM3XzY0KHNlZWRfc2Vx
KTsKKyAgc3RhdGljIGF1dG8qIHJuZyA9IG5ldyBzdGQ6Om10MTk5MzdfNjQoc2VlZF9zZXEpOwog
ICByZXR1cm4gcm5nOwogfQogCkBAIC01MSw3ICs1MSw3IEBAIHN0ZDo6c3RyaW5nIEdlbmVyYXRv
cjxzdGQ6OnN0cmluZz46Om9wZXJhdG9yKCkoKSBjb25zdCB7CiAgIHN0ZDo6c3RyaW5nIHJlczsK
ICAgcmVzLnJlc2l6ZSgzMik7CiAgIHN0ZDo6Z2VuZXJhdGUocmVzLmJlZ2luKCksIHJlcy5lbmQo
KSwKLSAgICAgICAgICAgICAgICBbJl0oKSB7IHJldHVybiBjaGFycygqR2V0VGhyZWFkTG9jYWxS
bmcoKSk7IH0pOworICAgICAgICAgICAgICAgIFsmXSgpIHsgcmV0dXJuIGNoYXJzKCpHZXRTaGFy
ZWRSbmcoKSk7IH0pOwogICByZXR1cm4gcmVzOwogfQogCkBAIC02Myw3ICs2Myw3IEBAIGFic2w6
OnN0cmluZ192aWV3IEdlbmVyYXRvcjxhYnNsOjpzdHJpbmdfdmlldz46Om9wZXJhdG9yKCkoKSBj
b25zdCB7CiAgIGF1dG8mIHJlcyA9IGFyZW5hLT5iYWNrKCk7CiAgIHJlcy5yZXNpemUoMzIpOwog
ICBzdGQ6OmdlbmVyYXRlKHJlcy5iZWdpbigpLCByZXMuZW5kKCksCi0gICAgICAgICAgICAgICAg
WyZdKCkgeyByZXR1cm4gY2hhcnMoKkdldFRocmVhZExvY2FsUm5nKCkpOyB9KTsKKyAgICAgICAg
ICAgICAgICBbJl0oKSB7IHJldHVybiBjaGFycygqR2V0U2hhcmVkUm5nKCkpOyB9KTsKICAgcmV0
dXJuIHJlczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hf
Z2VuZXJhdG9yX3Rlc3RpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2dlbmVy
YXRvcl90ZXN0aW5nLmgKaW5kZXggNTBkNzcxMDI2YzdiNTAwNTEzNWQyODYzMTY1YTAwOWNiNGRi
Y2E5OC4uMjdmYjg0ZjVkMGY2ZWJlYWE0ZTJlZmFjZGFkOTY1NzU1MmZkMjMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC00Myw3ICs0Myw3IEBAIHN0
cnVjdCBJc01hcDxNYXAsIGFic2w6OnZvaWRfdDx0eXBlbmFtZSBNYXA6Om1hcHBlZF90eXBlPj4g
OiBzdGQ6OnRydWVfdHlwZSB7fTsKIAogfSAgLy8gbmFtZXNwYWNlIGdlbmVyYXRvcl9pbnRlcm5h
bAogCi1zdGQ6Om10MTk5MzdfNjQqIEdldFRocmVhZExvY2FsUm5nKCk7CitzdGQ6Om10MTk5Mzdf
NjQqIEdldFNoYXJlZFJuZygpOwogCiBlbnVtIEVudW0gewogICBrRW51bUVtcHR5LApAQCAtNjYs
NyArNjYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIHN0cnVjdCBHZW5lcmF0b3I8VCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlPiB7CiAg
IFQgb3BlcmF0b3IoKSgpIGNvbnN0IHsKICAgICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
bjxUPiBkaXN0OwotICAgIHJldHVybiBkaXN0KCpHZXRUaHJlYWRMb2NhbFJuZygpKTsKKyAgICBy
ZXR1cm4gZGlzdCgqR2V0U2hhcmVkUm5nKCkpOwogICB9CiB9OwogCkBAIC03Niw3ICs3Niw3IEBA
IHN0cnVjdCBHZW5lcmF0b3I8RW51bT4gewogICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0
aW9uPHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEVudW0+Ojp0eXBlPgogICAgICAgICBk
aXN0OwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICBhdXRvIHZhcmlhdGUgPSBkaXN0KCpHZXRU
aHJlYWRMb2NhbFJuZygpKTsKKyAgICAgIGF1dG8gdmFyaWF0ZSA9IGRpc3QoKkdldFNoYXJlZFJu
ZygpKTsKICAgICAgIGlmICh2YXJpYXRlICE9IGtFbnVtRW1wdHkgJiYgdmFyaWF0ZSAhPSBrRW51
bURlbGV0ZWQpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnVtPih2YXJpYXRlKTsKICAg
ICB9CkBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBHZW5lcmF0b3I8RW51bUNsYXNzPiB7CiAgICAg
ICAgIHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEVudW1DbGFzcz46OnR5cGU+CiAgICAg
ICAgIGRpc3Q7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgIEVudW1DbGFzcyB2YXJpYXRlID0g
c3RhdGljX2Nhc3Q8RW51bUNsYXNzPihkaXN0KCpHZXRUaHJlYWRMb2NhbFJuZygpKSk7CisgICAg
ICBFbnVtQ2xhc3MgdmFyaWF0ZSA9IHN0YXRpY19jYXN0PEVudW1DbGFzcz4oZGlzdCgqR2V0U2hh
cmVkUm5nKCkpKTsKICAgICAgIGlmICh2YXJpYXRlICE9IEVudW1DbGFzczo6a0VtcHR5ICYmIHZh
cmlhdGUgIT0gRW51bUNsYXNzOjprRGVsZXRlZCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVudW1DbGFzcz4odmFyaWF0ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNoX3BvbGljeV90ZXN0aW5nLmgKaW5kZXggZmZjNzZlYWQ3YTY4NDJlOWZjYmNmMzIwNDJm
MTJmN2VhYzZlOWY5OC4uYzU3NDA3YTAyYjJlOTdmNjM3Njg4YmI1ZTllNDlmNjAwZjk0MjlhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3Rpbmcu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMzksNyArMTM5LDcg
QEAgc3RydWN0IEFsbG9jIDogc3RkOjphbGxvY2F0b3I8VD4gewogICBmcmllbmQgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEFsbG9jJiBhLCBjb25zdCBBbGxvYyYgYikgeyByZXR1cm4gIShhID09IGIp
OyB9CiAKICBwcml2YXRlOgotICBzaXplX3QgaWRfID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKTsKKyAgc2l6ZV90IGlkXyA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCkoKTsKIH07CiAKIHRlbXBsYXRlIDxjbGFzcyBNYXA+CkBAIC0xNjksNyArMTY5LDExIEBA
IGF1dG8ga2V5cyhjb25zdCBTZXQmIHMpCiAvLyB0YWtlIGFsbG9jYXRvciBhcmd1bWVudHMuIFRo
aXMgdGVzdCBpcyBkZWZpbmVkIGFkLWhvYyBmb3IgdGhlIHBsYXRmb3JtcwogLy8gd2UgY2FyZSBh
Ym91dCAobm90YWJseSBDcm9zc3Rvb2wgMTcpIGJlY2F1c2UgbGlic3RkY3h4J3MgdXNlbGVzcwog
Ly8gdmVyc2lvbmluZyBzY2hlbWUgcHJlY2x1ZGVzIGEgbW9yZSBwcmluY2lwbGVkIHNvbHV0aW9u
LgotI2lmIGRlZmluZWQoX19HTElCQ1hYX18pICYmIF9fR0xJQkNYWF9fIDw9IDIwMTQwNDI1Cisv
LyBGcm9tIEdDQy00LjkgQ2hhbmdlbG9nOiAoc3JjOiBodHRwczovL2djYy5nbnUub3JnL2djYy00
LjkvY2hhbmdlcy5odG1sKQorLy8gInRoZSB1bm9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVy
cyBpbiA8dW5vcmRlcmVkX21hcD4gYW5kIDx1bm9yZGVyZWRfc2V0PgorLy8gbWVldCB0aGUgYWxs
b2NhdG9yLWF3YXJlIGNvbnRhaW5lciByZXF1aXJlbWVudHM7IgorI2lmIChkZWZpbmVkKF9fR0xJ
QkNYWF9fKSAmJiBfX0dMSUJDWFhfXyA8PSAyMDE0MDQyNSApIHx8IFwKKyggX19HTlVDX18gPCA0
IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgOSApKQogI2RlZmluZSBBQlNM
X1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUyAwCiAjZWxzZQogI2RlZmluZSBBQlNMX1VO
T1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUyAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmdfdGVzdC5jYwppbmRleCBjMjE1YzQyMzdhZTU1
MTY4NmRkODI0ZDQyZGE3Y2ZiOTNiMGNlOTE1Li4wYzk1ZWI1ZWFhNTdhODUzNjRjMzI1NmI5OGVi
ZWVhY2VmN2IwOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9w
b2xpY3lfdGVzdGluZ190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
X3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGlj
eV90cmFpdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMu
aAppbmRleCAwMjllNDdlMTc1YzlkZmFlMzUyNGI3Y2IxNTM5MzEwMjZkZTViZjk3Li5mZDAwN2Rl
N2MwZGI3ZWVlYWZiZTI0YjM4NzgzN2MxZmEzYzliMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC04NCw3ICs4NCw3IEBAIHN0cnVjdCBoYXNoX3BvbGljeV90cmFp
dHMgewogICB9CiAKICAgLy8gVHJhbnNmZXJzIHRoZSBgb2xkX3Nsb3RgIHRvIGBuZXdfc2xvdGAu
IEFueSBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZQotICAvLyBhbGxvY2F0b3IgaW5zaWRlIGBvbGRf
c2xvdGAgdG8gYG5ld19zbG90YCBjYW4gYmUgdHJhbnNmZXJlZC4KKyAgLy8gYWxsb2NhdG9yIGlu
c2lkZSBgb2xkX3Nsb3RgIHRvIGBuZXdfc2xvdGAgY2FuIGJlIHRyYW5zZmVycmVkLgogICAvLwog
ICAvLyBPUFRJT05BTDogZGVmYXVsdHMgdG86CiAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzX3Rlc3QuY2MKaW5kZXggNDIzZjE1NDhlN2Nh
MTM4ZWU1YWNhMDkyNDJhZmQzYmM0Zjk3MmIyNi4uZTY0M2QxODk5MTNjZDlhYTJjYWExMzEyZDIy
MjIyOGY3NzgzYmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hf
cG9saWN5X3RyYWl0c190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
X3BvbGljeV90cmFpdHNfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZV9k
ZWJ1Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZV9kZWJ1Zy5oCmluZGV4
IGMzYmQ2NWM5YzRlYzUyZDVmNGE3OTZmNzZiMThkYmNkYTcyOTJiMzQuLjcxOTMwMDA0NjA3ZTI5
YjA0ZmFmY2FmYzhkMjQ5MDE1YjZjNmIyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXNodGFibGVfZGVidWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaHRhYmxlX2RlYnVnLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTYwLDcgKzYwLDcgQEAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBHZXRIYXNodGFibGVEZWJ1
Z051bVByb2Jlc0hpc3RvZ3JhbShjb25zdCBDJiBjb250YWluZXIpIHsKICAgICBzaXplX3QgbnVt
X3Byb2JlcyA9IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVzKAogICAgICAgICBjb250YWluZXIs
CiAgICAgICAgIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaHRhYmxlX2RlYnVnX2ludGVy
bmFsOjpHZXRLZXk8Qz4oKml0LCAwKSk7Ci0gICAgdi5yZXNpemUoc3RkOjptYXgodi5zaXplKCks
IG51bV9wcm9iZXMgKyAxKSk7CisgICAgdi5yZXNpemUoKHN0ZDo6bWF4KSh2LnNpemUoKSwgbnVt
X3Byb2JlcyArIDEpKTsKICAgICB2W251bV9wcm9iZXNdKys7CiAgIH0KICAgcmV0dXJuIHY7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tzLmgKaW5k
ZXggOGYyMTk3MjZiZWUwMWZlOTdhOGYxMGUzMzA2NDk0ODY4MDk0ZTkyYi4uMzcxY2U4MWY1NWM2
NzVmM2Q4NGU0ZTJlZDQyY2ZiNzU0MWU4MzgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2h0YWJsZV9kZWJ1Z19ob29rcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXNodGFibGVfZGVidWdfaG9va3MuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hh
c2h0YWJsZXpfc2FtcGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGV6
X3NhbXBsZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAzZGQ4MmU3ZmQ1N2ZjMmNmZTkwYjFjZWMzZTNkMWRj
OGE5YjkyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
dGFibGV6X3NhbXBsZXIuY2MKQEAgLTAsMCArMSwzMDggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRo
ZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaHRhYmxlel9zYW1wbGVyLmgiCisKKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8Y2Fz
c2VydD4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUg
PGxpbWl0cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAi
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGF2ZV9zc2UuaCIKKyNpbmNsdWRlICJhYnNsL2RlYnVn
Z2luZy9zdGFja3RyYWNlLmgiCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5j
bHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIKKworbmFtZXNwYWNlIGFic2wgewor
bmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7Citjb25zdGV4cHIgaW50IEhhc2h0YWJsZXpJ
bmZvOjprTWF4U3RhY2tEZXB0aDsKKworbmFtZXNwYWNlIHsKK0FCU0xfQ09OU1RfSU5JVCBzdGQ6
OmF0b21pYzxib29sPiBnX2hhc2h0YWJsZXpfZW5hYmxlZHsKKyAgICBmYWxzZQorfTsKK0FCU0xf
Q09OU1RfSU5JVCBzdGQ6OmF0b21pYzxpbnQzMl90PiBnX2hhc2h0YWJsZXpfc2FtcGxlX3BhcmFt
ZXRlcnsxIDw8IDEwfTsKK0FCU0xfQ09OU1RfSU5JVCBzdGQ6OmF0b21pYzxpbnQzMl90PiBnX2hh
c2h0YWJsZXpfbWF4X3NhbXBsZXN7MSA8PCAyMH07CisKKy8vIFJldHVybnMgdGhlIG5leHQgcHNl
dWRvLXJhbmRvbSB2YWx1ZS4KKy8vIHBSTkcgaXM6IGFYK2IgbW9kIGMgd2l0aCBhID0gMHg1REVF
Q0U2NkQsIGIgPSAgMHhCLCBjID0gMTw8NDgKKy8vIFRoaXMgaXMgdGhlIGxyYW5kNjQgZ2VuZXJh
dG9yLgordWludDY0X3QgTmV4dFJhbmRvbSh1aW50NjRfdCBybmQpIHsKKyAgY29uc3QgdWludDY0
X3QgcHJuZ19tdWx0ID0gdWludDY0X3R7MHg1REVFQ0U2NkR9OworICBjb25zdCB1aW50NjRfdCBw
cm5nX2FkZCA9IDB4QjsKKyAgY29uc3QgdWludDY0X3QgcHJuZ19tb2RfcG93ZXIgPSA0ODsKKyAg
Y29uc3QgdWludDY0X3QgcHJuZ19tb2RfbWFzayA9IH4ofnVpbnQ2NF90ezB9IDw8IHBybmdfbW9k
X3Bvd2VyKTsKKyAgcmV0dXJuIChwcm5nX211bHQgKiBybmQgKyBwcm5nX2FkZCkgJiBwcm5nX21v
ZF9tYXNrOworfQorCisvLyBHZW5lcmF0ZXMgYSBnZW9tZXRyaWMgdmFyaWFibGUgd2l0aCB0aGUg
c3BlY2lmaWVkIG1lYW4uCisvLyBUaGlzIGlzIGRvbmUgYnkgZ2VuZXJhdGluZyBhIHJhbmRvbSBu
dW1iZXIgYmV0d2VlbiAwIGFuZCAxIGFuZCBhcHBseWluZworLy8gdGhlIGludmVyc2UgY3VtdWxh
dGl2ZSBkaXN0cmlidXRpb24gZnVuY3Rpb24gZm9yIGFuIGV4cG9uZW50aWFsLgorLy8gU3BlY2lm
aWNhbGx5OiBMZXQgbSBiZSB0aGUgaW52ZXJzZSBvZiB0aGUgc2FtcGxlIHBlcmlvZCwgdGhlbgor
Ly8gdGhlIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiBmdW5jdGlvbiBpcyBtKmV4cCgtbXgpIHNv
IHRoZSBDREYgaXMKKy8vIHAgPSAxIC0gZXhwKC1teCksIHNvCisvLyBxID0gMSAtIHAgPSBleHAo
LW14KQorLy8gbG9nX2UocSkgPSAtbXgKKy8vIC1sb2dfZShxKS9tID0geAorLy8gbG9nXzIocSkg
KiAoLWxvZ19lKDIpICogMS9tKSA9IHgKKy8vIEluIHRoZSBjb2RlLCBxIGlzIGFjdHVhbGx5IGlu
IHRoZSByYW5nZSAxIHRvIDIqKjI2LCBoZW5jZSB0aGUgLTI2IGJlbG93CisvLworaW50NjRfdCBH
ZXRHZW9tZXRyaWNWYXJpYWJsZShpbnQ2NF90IG1lYW4pIHsKKyNpZiBBQlNMX0hBVkVfVEhSRUFE
X0xPQ0FMCisgIHRocmVhZF9sb2NhbAorI2Vsc2UgICAvLyBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FM
CisgIC8vIFNhbXBsZVNsb3cgYW5kIGhlbmNlIEdldEdlb21ldHJpY1ZhcmlhYmxlIGlzIGd1YXJk
ZWQgYnkgYSBzaW5nbGUgbXV0ZXggd2hlbgorICAvLyB0aGVyZSBhcmUgbm90IHRocmVhZCBsb2Nh
bHMuICBUaHVzLCBhIHNpbmdsZSBnbG9iYWwgcm5nIGlzIGFjY2VwdGFibGUgZm9yCisgIC8vIHRo
YXQgY2FzZS4KKyAgc3RhdGljCisjZW5kaWYgIC8vIEFCU0xfSEFWRV9USFJFQURfTE9DQUwKKyAg
ICAgIHVpbnQ2NF90IHJuZyA9IFtdKCkgeworICAgICAgICAvLyBXZSBkb24ndCBnZXQgd2VsbCBk
aXN0cmlidXRlZCBudW1iZXJzIGZyb20gdGhpcyBzbyB3ZSBjYWxsCisgICAgICAgIC8vIE5leHRS
YW5kb20oKSBhIGJ1bmNoIHRvIG11c2ggdGhlIGJpdHMgYXJvdW5kLiAgV2UgdXNlIGEgZ2xvYmFs
X3JhbmQKKyAgICAgICAgLy8gdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBzYW1lIHRocmVh
ZCAoYnkgbWVtb3J5IGFkZHJlc3MpIGdldHMKKyAgICAgICAgLy8gY3JlYXRlZCBhbmQgZGVzdHJv
eWVkIHJlcGVhdGVkbHkuCisgICAgICAgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgc3RkOjphdG9t
aWM8dWludDMyX3Q+IGdsb2JhbF9yYW5kKDApOworICAgICAgICB1aW50NjRfdCByID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdD4oJnJuZykgKworICAgICAgICAgICAgICAgICAgIGdsb2JhbF9y
YW5kLmZldGNoX2FkZCgxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCAyMDsgKytpKSB7CisgICAgICAgICAgciA9IE5leHRSYW5kb20ocik7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHI7CisgICAgICB9KCk7CisKKyAgcm5nID0gTmV4
dFJhbmRvbShybmcpOworCisgIC8vIFRha2UgdGhlIHRvcCAyNiBiaXRzIGFzIHRoZSByYW5kb20g
bnVtYmVyCisgIC8vIChUaGlzIHBsdXMgdGhlIDE8PDU4IHNhbXBsaW5nIGJvdW5kIGdpdmUgYSBt
YXggcG9zc2libGUgc3RlcCBvZgorICAvLyA1MTk0Mjk3MTgzOTczNzgwNDgwIGJ5dGVzLikKKyAg
Y29uc3QgdWludDY0X3QgcHJuZ19tb2RfcG93ZXIgPSA0ODsgIC8vIE51bWJlciBvZiBiaXRzIGlu
IHBybmcKKyAgLy8gVGhlIHVpbnQzMl90IGNhc3QgaXMgdG8gcHJldmVudCBhIChoYXJkLXRvLXJl
cHJvZHVjZSkgTkFOCisgIC8vIHVuZGVyIHBpaWkgZGVidWcgZm9yIHNvbWUgYmluYXJpZXMuCisg
IGRvdWJsZSBxID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJuZyA+PiAocHJuZ19tb2RfcG93ZXIg
LSAyNikpICsgMS4wOworICAvLyBQdXQgdGhlIGNvbXB1dGVkIHAtdmFsdWUgdGhyb3VnaCB0aGUg
Q0RGIG9mIGEgZ2VvbWV0cmljLgorICBkb3VibGUgaW50ZXJ2YWwgPSAobG9nMihxKSAtIDI2KSAq
ICgtc3RkOjpsb2coMi4wKSAqIG1lYW4pOworCisgIC8vIFZlcnkgbGFyZ2UgdmFsdWVzIG9mIGlu
dGVydmFsIG92ZXJmbG93IGludDY0X3QuIElmIHdlIGhhcHBlbiB0bworICAvLyBoaXQgc3VjaCBp
bXByb2JhYmxlIGNvbmRpdGlvbiwgd2Ugc2ltcGx5IGNoZWF0IGFuZCBjbGFtcCBpbnRlcnZhbAor
ICAvLyB0byBsYXJnZXN0IHN1cHBvcnRlZCB2YWx1ZS4KKyAgaWYgKGludGVydmFsID4gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSAvIDIpKSB7
CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpIC8gMjsKKyAg
fQorCisgIC8vIFNtYWxsIHZhbHVlcyBvZiBpbnRlcnZhbCBhcmUgZXF1aXZhbGVudCB0byBqdXN0
IHNhbXBsaW5nIG5leHQgdGltZS4KKyAgaWYgKGludGVydmFsIDwgMSkgeworICAgIHJldHVybiAx
OworICB9CisgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihpbnRlcnZhbCk7Cit9CisKK30g
IC8vIG5hbWVzcGFjZQorCitIYXNodGFibGV6U2FtcGxlciYgSGFzaHRhYmxlelNhbXBsZXI6Okds
b2JhbCgpIHsKKyAgc3RhdGljIGF1dG8qIHNhbXBsZXIgPSBuZXcgSGFzaHRhYmxlelNhbXBsZXIo
KTsKKyAgcmV0dXJuICpzYW1wbGVyOworfQorCitIYXNodGFibGV6U2FtcGxlcjo6RGlzcG9zZUNh
bGxiYWNrIEhhc2h0YWJsZXpTYW1wbGVyOjpTZXREaXNwb3NlQ2FsbGJhY2soCisgICAgRGlzcG9z
ZUNhbGxiYWNrIGYpIHsKKyAgcmV0dXJuIGRpc3Bvc2VfLmV4Y2hhbmdlKGYsIHN0ZDo6bWVtb3J5
X29yZGVyX3JlbGF4ZWQpOworfQorCitIYXNodGFibGV6SW5mbzo6SGFzaHRhYmxlekluZm8oKSB7
IFByZXBhcmVGb3JTYW1wbGluZygpOyB9CitIYXNodGFibGV6SW5mbzo6fkhhc2h0YWJsZXpJbmZv
KCkgPSBkZWZhdWx0OworCit2b2lkIEhhc2h0YWJsZXpJbmZvOjpQcmVwYXJlRm9yU2FtcGxpbmco
KSB7CisgIGNhcGFjaXR5LnN0b3JlKDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBz
aXplLnN0b3JlKDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBudW1fZXJhc2VzLnN0
b3JlKDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBtYXhfcHJvYmVfbGVuZ3RoLnN0
b3JlKDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICB0b3RhbF9wcm9iZV9sZW5ndGgu
c3RvcmUoMCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGhhc2hlc19iaXR3aXNlX29y
LnN0b3JlKDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBoYXNoZXNfYml0d2lzZV9h
bmQuc3RvcmUofnNpemVfdHt9LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKworICBjcmVh
dGVfdGltZSA9IGFic2w6Ok5vdygpOworICAvLyBUaGUgaW5saW5lciBtYWtlcyBoYXJkY29kZWQg
c2tpcF9jb3VudCBkaWZmaWN1bHQgKGVzcGVjaWFsbHkgd2hlbiBjb21iaW5lZAorICAvLyB3aXRo
IExUTykuICBXZSB1c2UgdGhlIGFiaWxpdHkgdG8gZXhjbHVkZSBzdGFja3MgYnkgcmVnZXggd2hl
biBlbmNvZGluZworICAvLyBpbnN0ZWFkLgorICBkZXB0aCA9IGFic2w6OkdldFN0YWNrVHJhY2Uo
c3RhY2ssIEhhc2h0YWJsZXpJbmZvOjprTWF4U3RhY2tEZXB0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIHNraXBfY291bnQ9ICovIDApOworICBkZWFkID0gbnVsbHB0cjsKK30K
KworSGFzaHRhYmxlelNhbXBsZXI6Okhhc2h0YWJsZXpTYW1wbGVyKCkKKyAgICA6IGRyb3BwZWRf
c2FtcGxlc18oMCksIHNpemVfZXN0aW1hdGVfKDApLCBhbGxfKG51bGxwdHIpLCBkaXNwb3NlXyhu
dWxscHRyKSB7CisgIGFic2w6Ok11dGV4TG9jayBsKCZncmF2ZXlhcmRfLmluaXRfbXUpOworICBn
cmF2ZXlhcmRfLmRlYWQgPSAmZ3JhdmV5YXJkXzsKK30KKworSGFzaHRhYmxlelNhbXBsZXI6On5I
YXNodGFibGV6U2FtcGxlcigpIHsKKyAgSGFzaHRhYmxlekluZm8qIHMgPSBhbGxfLmxvYWQoc3Rk
OjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgIHdoaWxlIChzICE9IG51bGxwdHIpIHsKKyAgICBI
YXNodGFibGV6SW5mbyogbmV4dCA9IHMtPm5leHQ7CisgICAgZGVsZXRlIHM7CisgICAgcyA9IG5l
eHQ7CisgIH0KK30KKwordm9pZCBIYXNodGFibGV6U2FtcGxlcjo6UHVzaE5ldyhIYXNodGFibGV6
SW5mbyogc2FtcGxlKSB7CisgIHNhbXBsZS0+bmV4dCA9IGFsbF8ubG9hZChzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKTsKKyAgd2hpbGUgKCFhbGxfLmNvbXBhcmVfZXhjaGFuZ2Vfd2VhayhzYW1w
bGUtPm5leHQsIHNhbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpKSB7CisgIH0KK30KKwordm9pZCBIYXNo
dGFibGV6U2FtcGxlcjo6UHVzaERlYWQoSGFzaHRhYmxlekluZm8qIHNhbXBsZSkgeworICBpZiAo
YXV0byogZGlzcG9zZSA9IGRpc3Bvc2VfLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkp
IHsKKyAgICBkaXNwb3NlKCpzYW1wbGUpOworICB9CisKKyAgYWJzbDo6TXV0ZXhMb2NrIGdyYXZl
eWFyZF9sb2NrKCZncmF2ZXlhcmRfLmluaXRfbXUpOworICBhYnNsOjpNdXRleExvY2sgc2FtcGxl
X2xvY2soJnNhbXBsZS0+aW5pdF9tdSk7CisgIHNhbXBsZS0+ZGVhZCA9IGdyYXZleWFyZF8uZGVh
ZDsKKyAgZ3JhdmV5YXJkXy5kZWFkID0gc2FtcGxlOworfQorCitIYXNodGFibGV6SW5mbyogSGFz
aHRhYmxlelNhbXBsZXI6OlBvcERlYWQoKSB7CisgIGFic2w6Ok11dGV4TG9jayBncmF2ZXlhcmRf
bG9jaygmZ3JhdmV5YXJkXy5pbml0X211KTsKKworICAvLyBUaGUgbGlzdCBpcyBjaXJjdWxhciwg
c28gZXZlbnR1YWxseSBpdCBjb2xsYXBzZXMgZG93biB0bworICAvLyAgIGdyYXZleWFyZF8uZGVh
ZCA9PSAmZ3JhdmV5YXJkXworICAvLyB3aGVuIGl0IGlzIGVtcHR5LgorICBIYXNodGFibGV6SW5m
byogc2FtcGxlID0gZ3JhdmV5YXJkXy5kZWFkOworICBpZiAoc2FtcGxlID09ICZncmF2ZXlhcmRf
KSByZXR1cm4gbnVsbHB0cjsKKworICBhYnNsOjpNdXRleExvY2sgc2FtcGxlX2xvY2soJnNhbXBs
ZS0+aW5pdF9tdSk7CisgIGdyYXZleWFyZF8uZGVhZCA9IHNhbXBsZS0+ZGVhZDsKKyAgc2FtcGxl
LT5QcmVwYXJlRm9yU2FtcGxpbmcoKTsKKyAgcmV0dXJuIHNhbXBsZTsKK30KKworSGFzaHRhYmxl
ekluZm8qIEhhc2h0YWJsZXpTYW1wbGVyOjpSZWdpc3RlcigpIHsKKyAgaW50NjRfdCBzaXplID0g
c2l6ZV9lc3RpbWF0ZV8uZmV0Y2hfYWRkKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwor
ICBpZiAoc2l6ZSA+IGdfaGFzaHRhYmxlel9tYXhfc2FtcGxlcy5sb2FkKHN0ZDo6bWVtb3J5X29y
ZGVyX3JlbGF4ZWQpKSB7CisgICAgc2l6ZV9lc3RpbWF0ZV8uZmV0Y2hfc3ViKDEsIHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGF4ZWQpOworICAgIGRyb3BwZWRfc2FtcGxlc18uZmV0Y2hfYWRkKDEsIHN0
ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgIHJldHVybiBudWxscHRyOworICB9CisKKyAg
SGFzaHRhYmxlekluZm8qIHNhbXBsZSA9IFBvcERlYWQoKTsKKyAgaWYgKHNhbXBsZSA9PSBudWxs
cHRyKSB7CisgICAgLy8gUmVzdXJyZWN0aW9uIGZhaWxlZC4gIEhpcmUgYSBuZXcgd2FybG9jay4K
KyAgICBzYW1wbGUgPSBuZXcgSGFzaHRhYmxlekluZm8oKTsKKyAgICBQdXNoTmV3KHNhbXBsZSk7
CisgIH0KKworICByZXR1cm4gc2FtcGxlOworfQorCit2b2lkIEhhc2h0YWJsZXpTYW1wbGVyOjpV
bnJlZ2lzdGVyKEhhc2h0YWJsZXpJbmZvKiBzYW1wbGUpIHsKKyAgUHVzaERlYWQoc2FtcGxlKTsK
KyAgc2l6ZV9lc3RpbWF0ZV8uZmV0Y2hfc3ViKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OworfQorCitpbnQ2NF90IEhhc2h0YWJsZXpTYW1wbGVyOjpJdGVyYXRlKAorICAgIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBIYXNodGFibGV6SW5mbyYgc3RhY2spPiYgZikgeworICBI
YXNodGFibGV6SW5mbyogcyA9IGFsbF8ubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsK
KyAgd2hpbGUgKHMgIT0gbnVsbHB0cikgeworICAgIGFic2w6Ok11dGV4TG9jayBsKCZzLT5pbml0
X211KTsKKyAgICBpZiAocy0+ZGVhZCA9PSBudWxscHRyKSB7CisgICAgICBmKCpzKTsKKyAgICB9
CisgICAgcyA9IHMtPm5leHQ7CisgIH0KKworICByZXR1cm4gZHJvcHBlZF9zYW1wbGVzXy5sb2Fk
KHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworfQorCitIYXNodGFibGV6SW5mbyogU2FtcGxl
U2xvdyhpbnQ2NF90KiBuZXh0X3NhbXBsZSkgeworICBpZiAoa0Fic2xDb250YWluZXJJbnRlcm5h
bFNhbXBsZUV2ZXJ5dGhpbmcpIHsKKyAgICAqbmV4dF9zYW1wbGUgPSAxOworICAgIHJldHVybiBI
YXNodGFibGV6U2FtcGxlcjo6R2xvYmFsKCkuUmVnaXN0ZXIoKTsKKyAgfQorCisgIGJvb2wgZmly
c3QgPSAqbmV4dF9zYW1wbGUgPCAwOworICAqbmV4dF9zYW1wbGUgPSBHZXRHZW9tZXRyaWNWYXJp
YWJsZSgKKyAgICAgIGdfaGFzaHRhYmxlel9zYW1wbGVfcGFyYW1ldGVyLmxvYWQoc3RkOjptZW1v
cnlfb3JkZXJfcmVsYXhlZCkpOworCisgIC8vIGdfaGFzaHRhYmxlel9lbmFibGVkIGNhbiBiZSBk
eW5hbWljYWxseSBmbGlwcGVkLCB3ZSBuZWVkIHRvIHNldCBhIHRocmVzaG9sZAorICAvLyBsb3cg
ZW5vdWdoIHRoYXQgd2Ugd2lsbCBzdGFydCBzYW1wbGluZyBpbiBhIHJlYXNvbmFibGUgdGltZSwg
c28gd2UganVzdCB1c2UKKyAgLy8gdGhlIGRlZmF1bHQgc2FtcGxpbmcgcmF0ZS4KKyAgaWYgKCFn
X2hhc2h0YWJsZXpfZW5hYmxlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpKSByZXR1
cm4gbnVsbHB0cjsKKworICAvLyBXZSB3aWxsIG9ubHkgYmUgbmVnYXRpdmUgb24gb3VyIGZpcnN0
IGNvdW50LCBzbyB3ZSBzaG91bGQganVzdCByZXRyeSBpbgorICAvLyB0aGF0IGNhc2UuCisgIGlm
IChmaXJzdCkgeworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRSgtLSpuZXh0X3NhbXBsZSA+IDAp
KSByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gU2FtcGxlU2xvdyhuZXh0X3NhbXBsZSk7Cisg
IH0KKworICByZXR1cm4gSGFzaHRhYmxlelNhbXBsZXI6Okdsb2JhbCgpLlJlZ2lzdGVyKCk7Cit9
CisKKyNpZiBBQlNMX1BFUl9USFJFQURfVExTID09IDEKK0FCU0xfUEVSX1RIUkVBRF9UTFNfS0VZ
V09SRCBpbnQ2NF90IGdsb2JhbF9uZXh0X3NhbXBsZSA9IDA7CisjZW5kaWYgIC8vIEFCU0xfUEVS
X1RIUkVBRF9UTFMgPT0gMQorCit2b2lkIFVuc2FtcGxlU2xvdyhIYXNodGFibGV6SW5mbyogaW5m
bykgeworICBIYXNodGFibGV6U2FtcGxlcjo6R2xvYmFsKCkuVW5yZWdpc3RlcihpbmZvKTsKK30K
Kwordm9pZCBSZWNvcmRJbnNlcnRTbG93KEhhc2h0YWJsZXpJbmZvKiBpbmZvLCBzaXplX3QgaGFz
aCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGlzdGFuY2VfZnJvbV9kZXNpcmVkKSB7
CisgIC8vIFN3aXNzVGFibGVzIHByb2JlIGluIGdyb3VwcyBvZiAxNiwgc28gc2NhbGUgdGhpcyB0
byBjb3VudCBpdGVtcyBwcm9iZXMgYW5kCisgIC8vIG5vdCBvZmZzZXQgZnJvbSBkZXNpcmVkLgor
ICBzaXplX3QgcHJvYmVfbGVuZ3RoID0gZGlzdGFuY2VfZnJvbV9kZXNpcmVkOworI2lmIFNXSVNT
VEFCTEVfSEFWRV9TU0UyCisgIHByb2JlX2xlbmd0aCAvPSAxNjsKKyNlbHNlCisgIHByb2JlX2xl
bmd0aCAvPSA4OworI2VuZGlmCisKKyAgaW5mby0+aGFzaGVzX2JpdHdpc2VfYW5kLmZldGNoX2Fu
ZChoYXNoLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaW5mby0+aGFzaGVzX2JpdHdp
c2Vfb3IuZmV0Y2hfb3IoaGFzaCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGluZm8t
Pm1heF9wcm9iZV9sZW5ndGguc3RvcmUoCisgICAgICBzdGQ6Om1heChpbmZvLT5tYXhfcHJvYmVf
bGVuZ3RoLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCksCisgICAgICAgICAgICAgICBw
cm9iZV9sZW5ndGgpLAorICAgICAgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGluZm8t
PnRvdGFsX3Byb2JlX2xlbmd0aC5mZXRjaF9hZGQocHJvYmVfbGVuZ3RoLCBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKTsKKyAgaW5mby0+c2l6ZS5mZXRjaF9hZGQoMSwgc3RkOjptZW1vcnlfb3Jk
ZXJfcmVsYXhlZCk7Cit9CisKK3ZvaWQgU2V0SGFzaHRhYmxlekVuYWJsZWQoYm9vbCBlbmFibGVk
KSB7CisgIGdfaGFzaHRhYmxlel9lbmFibGVkLnN0b3JlKGVuYWJsZWQsIHN0ZDo6bWVtb3J5X29y
ZGVyX3JlbGVhc2UpOworfQorCit2b2lkIFNldEhhc2h0YWJsZXpTYW1wbGVQYXJhbWV0ZXIoaW50
MzJfdCByYXRlKSB7CisgIGlmIChyYXRlID4gMCkgeworICAgIGdfaGFzaHRhYmxlel9zYW1wbGVf
cGFyYW1ldGVyLnN0b3JlKHJhdGUsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICB9IGVs
c2UgeworICAgIEFCU0xfUkFXX0xPRyhFUlJPUiwgIkludmFsaWQgaGFzaHRhYmxleiBzYW1wbGUg
cmF0ZTogJWxsZCIsCisgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocmF0
ZSkpOyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorICB9Cit9CisKK3ZvaWQgU2V0SGFzaHRhYmxl
ek1heFNhbXBsZXMoaW50MzJfdCBtYXgpIHsKKyAgaWYgKG1heCA+IDApIHsKKyAgICBnX2hhc2h0
YWJsZXpfbWF4X3NhbXBsZXMuc3RvcmUobWF4LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsK
KyAgfSBlbHNlIHsKKyAgICBBQlNMX1JBV19MT0coRVJST1IsICJJbnZhbGlkIGhhc2h0YWJsZXog
bWF4IHNhbXBsZXM6ICVsbGQiLAorICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxsb25nIGxv
bmc+KG1heCkpOyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorICB9Cit9CisKK30gIC8vIG5hbWVz
cGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDExMjE3
NTQ0OWVmOWUxY2U3YWI0YzBmZDczMTkwZTZmYTFlMjM3YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGV6X3NhbXBsZXIuaApAQCAtMCwwICsxLDI4
OCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IGhhc2h0YWJsZXpfc2FtcGxlci5oCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyB0aGUgQVBJ
IGZvciBhIGxvdyBsZXZlbCBsaWJyYXJ5IHRvIHNhbXBsZSBoYXNodGFibGVzCisvLyBhbmQgY29s
bGVjdCBydW50aW1lIHN0YXRpc3RpY3MgYWJvdXQgdGhlbS4KKy8vCisvLyBgSGFzaHRhYmxlelNh
bXBsZXJgIGNvbnRyb2xzIHRoZSBsaWZlY3ljbGUgb2YgYEhhc2h0YWJsZXpJbmZvYCBvYmplY3Rz
IHdoaWNoCisvLyBzdG9yZSBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBzYW1wbGUuCisvLwor
Ly8gYFJlY29yZCpgIG1ldGhvZHMgc3RvcmUgaW5mb3JtYXRpb24gaW50byBzYW1wbGVzLgorLy8g
YFNhbXBsZSgpYCBhbmQgYFVuc2FtcGxlKClgIG1ha2UgdXNlIG9mIGEgc2luZ2xlIGdsb2JhbCBz
YW1wbGVyIHdpdGgKKy8vIHByb3BlcnRpZXMgY29udHJvbGxlZCBieSB0aGUgZmxhZ3MgaGFzaHRh
Ymxlel9lbmFibGVkLAorLy8gaGFzaHRhYmxlel9zYW1wbGVfcmF0ZSwgYW5kIGhhc2h0YWJsZXpf
bWF4X3NhbXBsZXMuCisvLworLy8gV0FSTklORworLy8KKy8vIFVzaW5nIHRoaXMgc2FtcGxpbmcg
QVBJIG1heSBjYXVzZSBzYW1wbGVkIFN3aXNzIHRhYmxlcyB0byB1c2UgdGhlIGdsb2JhbAorLy8g
YWxsb2NhdG9yIChvcGVyYXRvciBgbmV3YCkgaW4gYWRkaXRpb24gdG8gYW55IGN1c3RvbSBhbGxv
Y2F0b3IuICBJZiB5b3UKKy8vIGFyZSB1c2luZyBhIHRhYmxlIGluIGFuIHVudXN1YWwgY2lyY3Vt
c3RhbmNlIHdoZXJlIGFsbG9jYXRpb24gb3IgY2FsbGluZyBhCisvLyBsaW51eCBzeXNjYWxsIGlz
IHVuYWNjZXB0YWJsZSwgdGhpcyBjb3VsZCBpbnRlcmZlcmUuCisvLworLy8gVGhpcyB1dGlsaXR5
IGlzIGludGVybmFsLW9ubHkuIFVzZSBhdCB5b3VyIG93biByaXNrLgorCisjaWZuZGVmIEFCU0xf
Q09OVEFJTkVSX0lOVEVSTkFMX0hBU0hUQUJMRVpfU0FNUExFUl9IXworI2RlZmluZSBBQlNMX0NP
TlRBSU5FUl9JTlRFUk5BTF9IQVNIVEFCTEVaX1NBTVBMRVJfSF8KKworI2luY2x1ZGUgPGF0b21p
Yz4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcGVyX3RocmVhZF90bHMuaCIK
KyNpbmNsdWRlICJhYnNsL2Jhc2Uvb3B0aW1pemF0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGF2ZV9zc2UuaCIKKyNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlv
bi9tdXRleC5oIgorI2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCisKK25hbWVzcGFj
ZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCisvLyBTdG9yZXMgaW5m
b3JtYXRpb24gYWJvdXQgYSBzYW1wbGVkIGhhc2h0YWJsZS4gIEFsbCBtdXRhdGlvbnMgdG8gdGhp
cyAqbXVzdCoKKy8vIGJlIG1hZGUgdGhyb3VnaCBgUmVjb3JkKmAgZnVuY3Rpb25zIGJlbG93LiAg
QWxsIHJlYWRzIGZyb20gdGhpcyAqbXVzdCogb25seQorLy8gb2NjdXIgaW4gdGhlIGNhbGxiYWNr
IHRvIGBIYXNodGFibGV6U2FtcGxlcjo6SXRlcmF0ZWAuCitzdHJ1Y3QgSGFzaHRhYmxlekluZm8g
eworICAvLyBDb25zdHJ1Y3RzIHRoZSBvYmplY3QgYnV0IGRvZXMgbm90IGZpbGwgaW4gYW55IGZp
ZWxkcy4KKyAgSGFzaHRhYmxlekluZm8oKTsKKyAgfkhhc2h0YWJsZXpJbmZvKCk7CisgIEhhc2h0
YWJsZXpJbmZvKGNvbnN0IEhhc2h0YWJsZXpJbmZvJikgPSBkZWxldGU7CisgIEhhc2h0YWJsZXpJ
bmZvJiBvcGVyYXRvcj0oY29uc3QgSGFzaHRhYmxlekluZm8mKSA9IGRlbGV0ZTsKKworICAvLyBQ
dXRzIHRoZSBvYmplY3QgaW50byBhIGNsZWFuIHN0YXRlLCBmaWxscyBpbiB0aGUgbG9naWNhbGx5
IGBjb25zdGAgbWVtYmVycywKKyAgLy8gYmxvY2tpbmcgZm9yIGFueSByZWFkZXJzIHRoYXQgYXJl
IGN1cnJlbnRseSBzYW1wbGluZyB0aGUgb2JqZWN0LgorICB2b2lkIFByZXBhcmVGb3JTYW1wbGlu
ZygpIEFCU0xfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGluaXRfbXUpOworCisgIC8vIFRoZXNl
IGZpZWxkcyBhcmUgbXV0YXRlZCBieSB0aGUgdmFyaW91cyBSZWNvcmQqIEFQSXMgYW5kIG5lZWQg
dG8gYmUKKyAgLy8gdGhyZWFkLXNhZmUuCisgIHN0ZDo6YXRvbWljPHNpemVfdD4gY2FwYWNpdHk7
CisgIHN0ZDo6YXRvbWljPHNpemVfdD4gc2l6ZTsKKyAgc3RkOjphdG9taWM8c2l6ZV90PiBudW1f
ZXJhc2VzOworICBzdGQ6OmF0b21pYzxzaXplX3Q+IG1heF9wcm9iZV9sZW5ndGg7CisgIHN0ZDo6
YXRvbWljPHNpemVfdD4gdG90YWxfcHJvYmVfbGVuZ3RoOworICBzdGQ6OmF0b21pYzxzaXplX3Q+
IGhhc2hlc19iaXR3aXNlX29yOworICBzdGQ6OmF0b21pYzxzaXplX3Q+IGhhc2hlc19iaXR3aXNl
X2FuZDsKKworICAvLyBgSGFzaHRhYmxlelNhbXBsZXJgIG1haW50YWlucyBpbnRydXNpdmUgbGlu
a2VkIGxpc3RzIGZvciBhbGwgc2FtcGxlcy4gIFNlZQorICAvLyBjb21tZW50cyBvbiBgSGFzaHRh
YmxlelNhbXBsZXI6OmFsbF9gIGZvciBkZXRhaWxzIG9uIHRoZXNlLiAgYGluaXRfbXVgCisgIC8v
IGd1YXJkcyB0aGUgYWJpbGl0eSB0byByZXN0b3JlIHRoZSBzYW1wbGUgdG8gYSBwcmlzdGluZSBz
dGF0ZS4gIFRoaXMKKyAgLy8gcHJldmVudHMgcmFjZXMgd2l0aCBzYW1wbGluZyBhbmQgcmVzdXJy
ZWN0aW5nIGFuIG9iamVjdC4KKyAgYWJzbDo6TXV0ZXggaW5pdF9tdTsKKyAgSGFzaHRhYmxleklu
Zm8qIG5leHQ7CisgIEhhc2h0YWJsZXpJbmZvKiBkZWFkIEFCU0xfR1VBUkRFRF9CWShpbml0X211
KTsKKworICAvLyBBbGwgb2YgdGhlIGZpZWxkcyBiZWxvdyBhcmUgc2V0IGJ5IGBQcmVwYXJlRm9y
U2FtcGxpbmdgLCB0aGV5IG11c3Qgbm90IGJlCisgIC8vIG11dGF0ZWQgaW4gYFJlY29yZCpgIGZ1
bmN0aW9ucy4gIFRoZXkgYXJlIGxvZ2ljYWxseSBgY29uc3RgIGluIHRoYXQgc2Vuc2UuCisgIC8v
IFRoZXNlIGFyZSBndWFyZGVkIGJ5IGluaXRfbXUsIGJ1dCB0aGF0IGlzIG5vdCBleHRlcm5hbGl6
ZWQgdG8gY2xpZW50cywgd2hvCisgIC8vIGNhbiBvbmx5IHJlYWQgdGhlbSBkdXJpbmcgYEhhc2h0
YWJsZXpTYW1wbGVyOjpJdGVyYXRlYCB3aGljaCB3aWxsIGhvbGQgdGhlCisgIC8vIGxvY2suCisg
IHN0YXRpYyBjb25zdGV4cHIgaW50IGtNYXhTdGFja0RlcHRoID0gNjQ7CisgIGFic2w6OlRpbWUg
Y3JlYXRlX3RpbWU7CisgIGludDMyX3QgZGVwdGg7CisgIHZvaWQqIHN0YWNrW2tNYXhTdGFja0Rl
cHRoXTsKK307CisKK2lubGluZSB2b2lkIFJlY29yZFJlaGFzaFNsb3coSGFzaHRhYmxlekluZm8q
IGluZm8sIHNpemVfdCB0b3RhbF9wcm9iZV9sZW5ndGgpIHsKKyNpZiBTV0lTU1RBQkxFX0hBVkVf
U1NFMgorICB0b3RhbF9wcm9iZV9sZW5ndGggLz0gMTY7CisjZWxzZQorICB0b3RhbF9wcm9iZV9s
ZW5ndGggLz0gODsKKyNlbmRpZgorICBpbmZvLT50b3RhbF9wcm9iZV9sZW5ndGguc3RvcmUodG90
YWxfcHJvYmVfbGVuZ3RoLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaW5mby0+bnVt
X2VyYXNlcy5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKworaW5saW5l
IHZvaWQgUmVjb3JkU3RvcmFnZUNoYW5nZWRTbG93KEhhc2h0YWJsZXpJbmZvKiBpbmZvLCBzaXpl
X3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2Fw
YWNpdHkpIHsKKyAgaW5mby0+c2l6ZS5zdG9yZShzaXplLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxh
eGVkKTsKKyAgaW5mby0+Y2FwYWNpdHkuc3RvcmUoY2FwYWNpdHksIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpOworICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgLy8gVGhpcyBpcyBhIGNsZWFyLCBy
ZXNldCB0aGUgdG90YWwvbnVtX2VyYXNlcyB0b28uCisgICAgUmVjb3JkUmVoYXNoU2xvdyhpbmZv
LCAwKTsKKyAgfQorfQorCit2b2lkIFJlY29yZEluc2VydFNsb3coSGFzaHRhYmxlekluZm8qIGlu
Zm8sIHNpemVfdCBoYXNoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkaXN0YW5jZV9m
cm9tX2Rlc2lyZWQpOworCitpbmxpbmUgdm9pZCBSZWNvcmRFcmFzZVNsb3coSGFzaHRhYmxleklu
Zm8qIGluZm8pIHsKKyAgaW5mby0+c2l6ZS5mZXRjaF9zdWIoMSwgc3RkOjptZW1vcnlfb3JkZXJf
cmVsYXhlZCk7CisgIGluZm8tPm51bV9lcmFzZXMuZmV0Y2hfYWRkKDEsIHN0ZDo6bWVtb3J5X29y
ZGVyX3JlbGF4ZWQpOworfQorCitIYXNodGFibGV6SW5mbyogU2FtcGxlU2xvdyhpbnQ2NF90KiBu
ZXh0X3NhbXBsZSk7Cit2b2lkIFVuc2FtcGxlU2xvdyhIYXNodGFibGV6SW5mbyogaW5mbyk7CisK
K2NsYXNzIEhhc2h0YWJsZXpJbmZvSGFuZGxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEhhc2h0
YWJsZXpJbmZvSGFuZGxlKCkgOiBpbmZvXyhudWxscHRyKSB7fQorICBleHBsaWNpdCBIYXNodGFi
bGV6SW5mb0hhbmRsZShIYXNodGFibGV6SW5mbyogaW5mbykgOiBpbmZvXyhpbmZvKSB7fQorICB+
SGFzaHRhYmxlekluZm9IYW5kbGUoKSB7CisgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKGluZm9f
ID09IG51bGxwdHIpKSByZXR1cm47CisgICAgVW5zYW1wbGVTbG93KGluZm9fKTsKKyAgfQorCisg
IEhhc2h0YWJsZXpJbmZvSGFuZGxlKGNvbnN0IEhhc2h0YWJsZXpJbmZvSGFuZGxlJikgPSBkZWxl
dGU7CisgIEhhc2h0YWJsZXpJbmZvSGFuZGxlJiBvcGVyYXRvcj0oY29uc3QgSGFzaHRhYmxleklu
Zm9IYW5kbGUmKSA9IGRlbGV0ZTsKKworICBIYXNodGFibGV6SW5mb0hhbmRsZShIYXNodGFibGV6
SW5mb0hhbmRsZSYmIG8pIG5vZXhjZXB0CisgICAgICA6IGluZm9fKGFic2w6OmV4Y2hhbmdlKG8u
aW5mb18sIG51bGxwdHIpKSB7fQorICBIYXNodGFibGV6SW5mb0hhbmRsZSYgb3BlcmF0b3I9KEhh
c2h0YWJsZXpJbmZvSGFuZGxlJiYgbykgbm9leGNlcHQgeworICAgIGlmIChBQlNMX1BSRURJQ1Rf
RkFMU0UoaW5mb18gIT0gbnVsbHB0cikpIHsKKyAgICAgIFVuc2FtcGxlU2xvdyhpbmZvXyk7Cisg
ICAgfQorICAgIGluZm9fID0gYWJzbDo6ZXhjaGFuZ2Uoby5pbmZvXywgbnVsbHB0cik7CisgICAg
cmV0dXJuICp0aGlzOworICB9CisKKyAgaW5saW5lIHZvaWQgUmVjb3JkU3RvcmFnZUNoYW5nZWQo
c2l6ZV90IHNpemUsIHNpemVfdCBjYXBhY2l0eSkgeworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJV
RShpbmZvXyA9PSBudWxscHRyKSkgcmV0dXJuOworICAgIFJlY29yZFN0b3JhZ2VDaGFuZ2VkU2xv
dyhpbmZvXywgc2l6ZSwgY2FwYWNpdHkpOworICB9CisKKyAgaW5saW5lIHZvaWQgUmVjb3JkUmVo
YXNoKHNpemVfdCB0b3RhbF9wcm9iZV9sZW5ndGgpIHsKKyAgICBpZiAoQUJTTF9QUkVESUNUX1RS
VUUoaW5mb18gPT0gbnVsbHB0cikpIHJldHVybjsKKyAgICBSZWNvcmRSZWhhc2hTbG93KGluZm9f
LCB0b3RhbF9wcm9iZV9sZW5ndGgpOworICB9CisKKyAgaW5saW5lIHZvaWQgUmVjb3JkSW5zZXJ0
KHNpemVfdCBoYXNoLCBzaXplX3QgZGlzdGFuY2VfZnJvbV9kZXNpcmVkKSB7CisgICAgaWYgKEFC
U0xfUFJFRElDVF9UUlVFKGluZm9fID09IG51bGxwdHIpKSByZXR1cm47CisgICAgUmVjb3JkSW5z
ZXJ0U2xvdyhpbmZvXywgaGFzaCwgZGlzdGFuY2VfZnJvbV9kZXNpcmVkKTsKKyAgfQorCisgIGlu
bGluZSB2b2lkIFJlY29yZEVyYXNlKCkgeworICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShpbmZv
XyA9PSBudWxscHRyKSkgcmV0dXJuOworICAgIFJlY29yZEVyYXNlU2xvdyhpbmZvXyk7CisgIH0K
KworICBmcmllbmQgaW5saW5lIHZvaWQgc3dhcChIYXNodGFibGV6SW5mb0hhbmRsZSYgbGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNodGFibGV6SW5mb0hhbmRsZSYgcmhzKSB7Cisg
ICAgc3RkOjpzd2FwKGxocy5pbmZvXywgcmhzLmluZm9fKTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
ZnJpZW5kIGNsYXNzIEhhc2h0YWJsZXpJbmZvSGFuZGxlUGVlcjsKKyAgSGFzaHRhYmxlekluZm8q
IGluZm9fOworfTsKKworI2lmIEFCU0xfUEVSX1RIUkVBRF9UTFMgPT0gMQorZXh0ZXJuIEFCU0xf
UEVSX1RIUkVBRF9UTFNfS0VZV09SRCBpbnQ2NF90IGdsb2JhbF9uZXh0X3NhbXBsZTsKKyNlbmRp
ZiAgLy8gQUJTTF9QRVJfVEhSRUFEX1RMUworCisvLyBSZXR1cm5zIGFuIFJBSUkgc2FtcGxpbmcg
aGFuZGxlIHRoYXQgbWFuYWdlcyByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0YXRpb24KKy8vIHdp
dGggdGhlIGdsb2JhbCBzYW1wbGVyLgoraW5saW5lIEhhc2h0YWJsZXpJbmZvSGFuZGxlIFNhbXBs
ZSgpIHsKKyNpZiBBQlNMX1BFUl9USFJFQURfVExTID09IDAKKyAgc3RhdGljIGF1dG8qIG11ID0g
bmV3IGFic2w6Ok11dGV4OworICBzdGF0aWMgaW50NjRfdCBnbG9iYWxfbmV4dF9zYW1wbGUgPSAw
OworICBhYnNsOjpNdXRleExvY2sgbChtdSk7CisjZW5kaWYgIC8vICFBQlNMX0hBVkVfVEhSRUFE
X0xPQ0FMCisKKyAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKC0tZ2xvYmFsX25leHRfc2FtcGxlID4g
MCkpIHsKKyAgICByZXR1cm4gSGFzaHRhYmxlekluZm9IYW5kbGUobnVsbHB0cik7CisgIH0KKyAg
cmV0dXJuIEhhc2h0YWJsZXpJbmZvSGFuZGxlKFNhbXBsZVNsb3coJmdsb2JhbF9uZXh0X3NhbXBs
ZSkpOworfQorCisvLyBIb2xkcyBzYW1wbGVzIGFuZCB0aGVpciBhc3NvY2lhdGVkIHN0YWNrIHRy
YWNlcyB3aXRoIGEgc29mdCBsaW1pdCBvZgorLy8gYFNldEhhc2h0YWJsZXpNYXhTYW1wbGVzKClg
LgorLy8KKy8vIFRocmVhZCBzYWZlLgorY2xhc3MgSGFzaHRhYmxlelNhbXBsZXIgeworIHB1Ymxp
YzoKKyAgLy8gUmV0dXJucyBhIGdsb2JhbCBTYW1wbGVyLgorICBzdGF0aWMgSGFzaHRhYmxlelNh
bXBsZXImIEdsb2JhbCgpOworCisgIEhhc2h0YWJsZXpTYW1wbGVyKCk7CisgIH5IYXNodGFibGV6
U2FtcGxlcigpOworCisgIC8vIFJlZ2lzdGVycyBmb3Igc2FtcGxpbmcuICBSZXR1cm5zIGFuIG9w
YXF1ZSByZWdpc3RyYXRpb24gaW5mby4KKyAgSGFzaHRhYmxlekluZm8qIFJlZ2lzdGVyKCk7CisK
KyAgLy8gVW5yZWdpc3RlcnMgdGhlIHNhbXBsZS4KKyAgdm9pZCBVbnJlZ2lzdGVyKEhhc2h0YWJs
ZXpJbmZvKiBzYW1wbGUpOworCisgIC8vIFRoZSBkaXNwb3NlIGNhbGxiYWNrIHdpbGwgYmUgY2Fs
bGVkIG9uIGFsbCBzYW1wbGVzIHRoZSBtb21lbnQgdGhleSBhcmUKKyAgLy8gYmVpbmcgdW5yZWdp
c3RlcmVkLiBPbmx5IGFmZmVjdHMgc2FtcGxlcyB0aGF0IGFyZSB1bnJlZ2lzdGVyZWQgYWZ0ZXIg
dGhlCisgIC8vIGNhbGxiYWNrIGhhcyBiZWVuIHNldC4KKyAgLy8gUmV0dXJucyB0aGUgcHJldmlv
dXMgY2FsbGJhY2suCisgIHVzaW5nIERpc3Bvc2VDYWxsYmFjayA9IHZvaWQgKCopKGNvbnN0IEhh
c2h0YWJsZXpJbmZvJik7CisgIERpc3Bvc2VDYWxsYmFjayBTZXREaXNwb3NlQ2FsbGJhY2soRGlz
cG9zZUNhbGxiYWNrIGYpOworCisgIC8vIEl0ZXJhdGVzIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVk
IGBTdGFja0luZm9gcy4gIFJldHVybmluZyB0aGUgbnVtYmVyIG9mCisgIC8vIHNhbXBsZXMgdGhh
dCBoYXZlIGJlZW4gZHJvcHBlZC4KKyAgaW50NjRfdCBJdGVyYXRlKGNvbnN0IHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBIYXNodGFibGV6SW5mbyYgc3RhY2spPiYgZik7CisKKyBwcml2YXRlOgor
ICB2b2lkIFB1c2hOZXcoSGFzaHRhYmxlekluZm8qIHNhbXBsZSk7CisgIHZvaWQgUHVzaERlYWQo
SGFzaHRhYmxlekluZm8qIHNhbXBsZSk7CisgIEhhc2h0YWJsZXpJbmZvKiBQb3BEZWFkKCk7CisK
KyAgc3RkOjphdG9taWM8c2l6ZV90PiBkcm9wcGVkX3NhbXBsZXNfOworICBzdGQ6OmF0b21pYzxz
aXplX3Q+IHNpemVfZXN0aW1hdGVfOworCisgIC8vIEludHJ1c2l2ZSBsb2NrIGZyZWUgbGlua2Vk
IGxpc3RzIGZvciB0cmFja2luZyBzYW1wbGVzLgorICAvLworICAvLyBgYWxsX2AgcmVjb3JkcyBh
bGwgc2FtcGxlcyAodGhleSBhcmUgbmV2ZXIgcmVtb3ZlZCBmcm9tIHRoaXMgbGlzdCkgYW5kIGlz
CisgIC8vIHRlcm1pbmF0ZWQgd2l0aCBhIGBudWxscHRyYC4KKyAgLy8KKyAgLy8gYGdyYXZleWFy
ZF8uZGVhZGAgaXMgYSBjaXJjdWxhciBsaW5rZWQgbGlzdC4gIFdoZW4gaXQgaXMgZW1wdHksCisg
IC8vIGBncmF2ZXlhcmRfLmRlYWQgPT0gJmdyYXZleWFyZGAuICBUaGUgbGlzdCBpcyBjaXJjdWxh
ciBzbyB0aGF0CisgIC8vIGV2ZXJ5IGl0ZW0gb24gaXQgKGV2ZW4gdGhlIGxhc3QpIGhhcyBhIG5v
bi1udWxsIGRlYWQgcG9pbnRlci4gIFRoaXMgYWxsb3dzCisgIC8vIGBJdGVyYXRlYCB0byBkZXRl
cm1pbmUgaWYgYSBnaXZlbiBzYW1wbGUgaXMgbGl2ZSBvciBkZWFkIHVzaW5nIG9ubHkKKyAgLy8g
aW5mb3JtYXRpb24gb24gdGhlIHNhbXBsZSBpdHNlbGYuCisgIC8vCisgIC8vIEZvciBleGFtcGxl
LCBub2RlcyBbQSwgQiwgQywgRCwgRV0gd2l0aCBbQSwgQywgRV0gYWxpdmUgYW5kIFtCLCBEXSBk
ZWFkCisgIC8vIGxvb2tzIGxpa2UgdGhpcyAoRyBpcyB0aGUgR3JhdmV5YXJkKToKKyAgLy8KKyAg
Ly8gICAgICAgICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisg
IC8vICAgIGFsbCAtLT58IEEgfC0tLT58IEIgfC0tLT58IEMgfC0tLT58IEQgfC0tLT58IEUgfAor
ICAvLyAgICAgICAgICAgfCAgIHwgICAgfCAgIHwgICAgfCAgIHwgICAgfCAgIHwgICAgfCAgIHwK
KyAgLy8gICArLS0tKyAgIHwgICB8ICstPnwgICB8LSsgIHwgICB8ICstPnwgICB8LSsgIHwgICB8
CisgIC8vICAgfCBHIHwgICArLS0tKyB8ICArLS0tKyB8ICArLS0tKyB8ICArLS0tKyB8ICArLS0t
KworICAvLyAgIHwgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgfCAgICAgICAgfAorICAv
LyAgIHwgICB8IC0tLS0tLS0tKyAgICAgICAgKy0tLS0tLS0tKyAgICAgICAgfAorICAvLyAgICst
LS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAvLyAgICAgXiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAvLyAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAvLworICBzdGQ6OmF0b21pYzxIYXNodGFi
bGV6SW5mbyo+IGFsbF87CisgIEhhc2h0YWJsZXpJbmZvIGdyYXZleWFyZF87CisKKyAgc3RkOjph
dG9taWM8RGlzcG9zZUNhbGxiYWNrPiBkaXNwb3NlXzsKK307CisKKy8vIEVuYWJsZXMgb3IgZGlz
YWJsZXMgc2FtcGxpbmcgZm9yIFN3aXNzIHRhYmxlcy4KK3ZvaWQgU2V0SGFzaHRhYmxlekVuYWJs
ZWQoYm9vbCBlbmFibGVkKTsKKworLy8gU2V0cyB0aGUgcmF0ZSBhdCB3aGljaCBTd2lzcyB0YWJs
ZXMgd2lsbCBiZSBzYW1wbGVkLgordm9pZCBTZXRIYXNodGFibGV6U2FtcGxlUGFyYW1ldGVyKGlu
dDMyX3QgcmF0ZSk7CisKKy8vIFNldHMgYSBzb2Z0IG1heCBmb3IgdGhlIG51bWJlciBvZiBzYW1w
bGVzIHRoYXQgd2lsbCBiZSBrZXB0Lgordm9pZCBTZXRIYXNodGFibGV6TWF4U2FtcGxlcyhpbnQz
Ml90IG1heCk7CisKKy8vIENvbmZpZ3VyYXRpb24gb3ZlcnJpZGUuCisvLyBUaGlzIGFsbG93cyBw
cm9jZXNzLXdpZGUgc2FtcGxpbmcgd2l0aG91dCBkZXBlbmRpbmcgb24gb3JkZXIgb2YKKy8vIGlu
aXRpYWxpemF0aW9uIG9mIHN0YXRpYyBzdG9yYWdlIGR1cmF0aW9uIG9iamVjdHMuCisvLyBUaGUg
ZGVmaW5pdGlvbiBvZiB0aGlzIGNvbnN0YW50IGlzIHdlYWssIHdoaWNoIGFsbG93cyB1cyB0byBp
bmplY3QgYQorLy8gZGlmZmVyZW50IHZhbHVlIGZvciBpdCBhdCBsaW5rIHRpbWUuCitleHRlcm4g
IkMiIGNvbnN0IGJvb2wga0Fic2xDb250YWluZXJJbnRlcm5hbFNhbXBsZUV2ZXJ5dGhpbmc7CisK
K30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNs
CisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSFRBQkxFWl9TQU1QTEVS
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1w
bGVyX2ZvcmNlX3dlYWtfZGVmaW5pdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXNodGFibGV6X3NhbXBsZXJfZm9yY2Vfd2Vha19kZWZpbml0aW9uLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRj
YTZmZmRhZGQ3ZGFjZTM1NTM2MzFmM2MwZmYzNGJkMjgwNjViNDgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlel9zYW1wbGVyX2ZvcmNlX3dlYWtf
ZGVmaW5pdGlvbi5jYwpAQCAtMCwwICsxLDI3IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJz
ZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0
YWJsZXpfc2FtcGxlci5oIgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKwor
bmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKKy8vIFNl
ZSBoYXNodGFibGV6X3NhbXBsZXIuaCBmb3IgZGV0YWlscy4KK2V4dGVybiAiQyIgQUJTTF9BVFRS
SUJVVEVfV0VBSyBjb25zdCBib29sCisgICAga0Fic2xDb250YWluZXJJbnRlcm5hbFNhbXBsZUV2
ZXJ5dGhpbmcgPSBmYWxzZTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAor
fSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNodGFibGV6X3NhbXBsZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXNodGFibGV6X3NhbXBsZXJfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjllOGRkMjFmZmM3MGMzYzhi
NTJhZmEzZmRkZTcyOWExMjVlNDhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlcl90ZXN0LmNjCkBAIC0wLDAgKzEsMzU1IEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wv
Y29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5oIgorCisjaW5jbHVkZSA8YXRv
bWljPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxyYW5kb20+CisKKyNpbmNsdWRlICJn
bW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9i
YXNlL2F0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXZl
X3NzZS5oIgorI2luY2x1ZGUgImFic2wvc3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXIu
aCIKKyNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC90aHJlYWRfcG9vbC5o
IgorI2luY2x1ZGUgImFic2wvc3luY2hyb25pemF0aW9uL211dGV4LmgiCisjaW5jbHVkZSAiYWJz
bC9zeW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC90aW1lL2Ns
b2NrLmgiCisjaW5jbHVkZSAiYWJzbC90aW1lL3RpbWUuaCIKKworI2lmIFNXSVNTVEFCTEVfSEFW
RV9TU0UyCitjb25zdGV4cHIgaW50IGtQcm9iZUxlbmd0aCA9IDE2OworI2Vsc2UKK2NvbnN0ZXhw
ciBpbnQga1Byb2JlTGVuZ3RoID0gODsKKyNlbmRpZgorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK2NsYXNzIEhhc2h0YWJsZXpJbmZvSGFuZGxlUGVl
ciB7CisgcHVibGljOgorICBzdGF0aWMgYm9vbCBJc1NhbXBsZWQoY29uc3QgSGFzaHRhYmxleklu
Zm9IYW5kbGUmIGgpIHsKKyAgICByZXR1cm4gaC5pbmZvXyAhPSBudWxscHRyOworICB9CisKKyAg
c3RhdGljIEhhc2h0YWJsZXpJbmZvKiBHZXRJbmZvKEhhc2h0YWJsZXpJbmZvSGFuZGxlKiBoKSB7
IHJldHVybiBoLT5pbmZvXzsgfQorfTsKKworbmFtZXNwYWNlIHsKK3VzaW5nIDo6YWJzbDo6c3lu
Y2hyb25pemF0aW9uX2ludGVybmFsOjpUaHJlYWRQb29sOwordXNpbmcgOjp0ZXN0aW5nOjpJc0Vt
cHR5OwordXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsKKworc3RkOjp2ZWN0
b3I8c2l6ZV90PiBHZXRTaXplcyhIYXNodGFibGV6U2FtcGxlciogcykgeworICBzdGQ6OnZlY3Rv
cjxzaXplX3Q+IHJlczsKKyAgcy0+SXRlcmF0ZShbJl0oY29uc3QgSGFzaHRhYmxlekluZm8mIGlu
Zm8pIHsKKyAgICByZXMucHVzaF9iYWNrKGluZm8uc2l6ZS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVy
X2FjcXVpcmUpKTsKKyAgfSk7CisgIHJldHVybiByZXM7Cit9CisKK0hhc2h0YWJsZXpJbmZvKiBS
ZWdpc3RlcihIYXNodGFibGV6U2FtcGxlciogcywgc2l6ZV90IHNpemUpIHsKKyAgYXV0byogaW5m
byA9IHMtPlJlZ2lzdGVyKCk7CisgIGFzc2VydChpbmZvICE9IG51bGxwdHIpOworICBpbmZvLT5z
aXplLnN0b3JlKHNpemUpOworICByZXR1cm4gaW5mbzsKK30KKworVEVTVChIYXNodGFibGV6SW5m
b1Rlc3QsIFByZXBhcmVGb3JTYW1wbGluZykgeworICBhYnNsOjpUaW1lIHRlc3Rfc3RhcnQgPSBh
YnNsOjpOb3coKTsKKyAgSGFzaHRhYmxlekluZm8gaW5mbzsKKyAgYWJzbDo6TXV0ZXhMb2NrIGwo
JmluZm8uaW5pdF9tdSk7CisgIGluZm8uUHJlcGFyZUZvclNhbXBsaW5nKCk7CisKKyAgRVhQRUNU
X0VRKGluZm8uY2FwYWNpdHkubG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8uc2l6ZS5sb2Fk
KCksIDApOworICBFWFBFQ1RfRVEoaW5mby5udW1fZXJhc2VzLmxvYWQoKSwgMCk7CisgIEVYUEVD
VF9FUShpbmZvLm1heF9wcm9iZV9sZW5ndGgubG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8u
dG90YWxfcHJvYmVfbGVuZ3RoLmxvYWQoKSwgMCk7CisgIEVYUEVDVF9FUShpbmZvLmhhc2hlc19i
aXR3aXNlX29yLmxvYWQoKSwgMCk7CisgIEVYUEVDVF9FUShpbmZvLmhhc2hlc19iaXR3aXNlX2Fu
ZC5sb2FkKCksIH5zaXplX3R7fSk7CisgIEVYUEVDVF9HRShpbmZvLmNyZWF0ZV90aW1lLCB0ZXN0
X3N0YXJ0KTsKKworICBpbmZvLmNhcGFjaXR5LnN0b3JlKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3Jl
bGF4ZWQpOworICBpbmZvLnNpemUuc3RvcmUoMSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7
CisgIGluZm8ubnVtX2VyYXNlcy5zdG9yZSgxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsK
KyAgaW5mby5tYXhfcHJvYmVfbGVuZ3RoLnN0b3JlKDEsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4
ZWQpOworICBpbmZvLnRvdGFsX3Byb2JlX2xlbmd0aC5zdG9yZSgxLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKKyAgaW5mby5oYXNoZXNfYml0d2lzZV9vci5zdG9yZSgxLCBzdGQ6Om1lbW9y
eV9vcmRlcl9yZWxheGVkKTsKKyAgaW5mby5oYXNoZXNfYml0d2lzZV9hbmQuc3RvcmUoMSwgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIGluZm8uY3JlYXRlX3RpbWUgPSB0ZXN0X3N0YXJ0
IC0gYWJzbDo6SG91cnMoMjApOworCisgIGluZm8uUHJlcGFyZUZvclNhbXBsaW5nKCk7CisgIEVY
UEVDVF9FUShpbmZvLmNhcGFjaXR5LmxvYWQoKSwgMCk7CisgIEVYUEVDVF9FUShpbmZvLnNpemUu
bG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8ubnVtX2VyYXNlcy5sb2FkKCksIDApOworICBF
WFBFQ1RfRVEoaW5mby5tYXhfcHJvYmVfbGVuZ3RoLmxvYWQoKSwgMCk7CisgIEVYUEVDVF9FUShp
bmZvLnRvdGFsX3Byb2JlX2xlbmd0aC5sb2FkKCksIDApOworICBFWFBFQ1RfRVEoaW5mby5oYXNo
ZXNfYml0d2lzZV9vci5sb2FkKCksIDApOworICBFWFBFQ1RfRVEoaW5mby5oYXNoZXNfYml0d2lz
ZV9hbmQubG9hZCgpLCB+c2l6ZV90e30pOworICBFWFBFQ1RfR0UoaW5mby5jcmVhdGVfdGltZSwg
dGVzdF9zdGFydCk7Cit9CisKK1RFU1QoSGFzaHRhYmxlekluZm9UZXN0LCBSZWNvcmRTdG9yYWdl
Q2hhbmdlZCkgeworICBIYXNodGFibGV6SW5mbyBpbmZvOworICBhYnNsOjpNdXRleExvY2sgbCgm
aW5mby5pbml0X211KTsKKyAgaW5mby5QcmVwYXJlRm9yU2FtcGxpbmcoKTsKKyAgUmVjb3JkU3Rv
cmFnZUNoYW5nZWRTbG93KCZpbmZvLCAxNywgNDcpOworICBFWFBFQ1RfRVEoaW5mby5zaXplLmxv
YWQoKSwgMTcpOworICBFWFBFQ1RfRVEoaW5mby5jYXBhY2l0eS5sb2FkKCksIDQ3KTsKKyAgUmVj
b3JkU3RvcmFnZUNoYW5nZWRTbG93KCZpbmZvLCAyMCwgMjApOworICBFWFBFQ1RfRVEoaW5mby5z
aXplLmxvYWQoKSwgMjApOworICBFWFBFQ1RfRVEoaW5mby5jYXBhY2l0eS5sb2FkKCksIDIwKTsK
K30KKworVEVTVChIYXNodGFibGV6SW5mb1Rlc3QsIFJlY29yZEluc2VydCkgeworICBIYXNodGFi
bGV6SW5mbyBpbmZvOworICBhYnNsOjpNdXRleExvY2sgbCgmaW5mby5pbml0X211KTsKKyAgaW5m
by5QcmVwYXJlRm9yU2FtcGxpbmcoKTsKKyAgRVhQRUNUX0VRKGluZm8ubWF4X3Byb2JlX2xlbmd0
aC5sb2FkKCksIDApOworICBSZWNvcmRJbnNlcnRTbG93KCZpbmZvLCAweDAwMDBGRjAwLCA2ICog
a1Byb2JlTGVuZ3RoKTsKKyAgRVhQRUNUX0VRKGluZm8ubWF4X3Byb2JlX2xlbmd0aC5sb2FkKCks
IDYpOworICBFWFBFQ1RfRVEoaW5mby5oYXNoZXNfYml0d2lzZV9hbmQubG9hZCgpLCAweDAwMDBG
RjAwKTsKKyAgRVhQRUNUX0VRKGluZm8uaGFzaGVzX2JpdHdpc2Vfb3IubG9hZCgpLCAweDAwMDBG
RjAwKTsKKyAgUmVjb3JkSW5zZXJ0U2xvdygmaW5mbywgMHgwMDBGRjAwMCwgNCAqIGtQcm9iZUxl
bmd0aCk7CisgIEVYUEVDVF9FUShpbmZvLm1heF9wcm9iZV9sZW5ndGgubG9hZCgpLCA2KTsKKyAg
RVhQRUNUX0VRKGluZm8uaGFzaGVzX2JpdHdpc2VfYW5kLmxvYWQoKSwgMHgwMDAwRjAwMCk7Cisg
IEVYUEVDVF9FUShpbmZvLmhhc2hlc19iaXR3aXNlX29yLmxvYWQoKSwgMHgwMDBGRkYwMCk7Cisg
IFJlY29yZEluc2VydFNsb3coJmluZm8sIDB4MDBGRjAwMDAsIDEyICoga1Byb2JlTGVuZ3RoKTsK
KyAgRVhQRUNUX0VRKGluZm8ubWF4X3Byb2JlX2xlbmd0aC5sb2FkKCksIDEyKTsKKyAgRVhQRUNU
X0VRKGluZm8uaGFzaGVzX2JpdHdpc2VfYW5kLmxvYWQoKSwgMHgwMDAwMDAwMCk7CisgIEVYUEVD
VF9FUShpbmZvLmhhc2hlc19iaXR3aXNlX29yLmxvYWQoKSwgMHgwMEZGRkYwMCk7Cit9CisKK1RF
U1QoSGFzaHRhYmxlekluZm9UZXN0LCBSZWNvcmRFcmFzZSkgeworICBIYXNodGFibGV6SW5mbyBp
bmZvOworICBhYnNsOjpNdXRleExvY2sgbCgmaW5mby5pbml0X211KTsKKyAgaW5mby5QcmVwYXJl
Rm9yU2FtcGxpbmcoKTsKKyAgRVhQRUNUX0VRKGluZm8ubnVtX2VyYXNlcy5sb2FkKCksIDApOwor
ICBFWFBFQ1RfRVEoaW5mby5zaXplLmxvYWQoKSwgMCk7CisgIFJlY29yZEluc2VydFNsb3coJmlu
Zm8sIDB4MDAwMEZGMDAsIDYgKiBrUHJvYmVMZW5ndGgpOworICBFWFBFQ1RfRVEoaW5mby5zaXpl
LmxvYWQoKSwgMSk7CisgIFJlY29yZEVyYXNlU2xvdygmaW5mbyk7CisgIEVYUEVDVF9FUShpbmZv
LnNpemUubG9hZCgpLCAwKTsKKyAgRVhQRUNUX0VRKGluZm8ubnVtX2VyYXNlcy5sb2FkKCksIDEp
OworfQorCitURVNUKEhhc2h0YWJsZXpJbmZvVGVzdCwgUmVjb3JkUmVoYXNoKSB7CisgIEhhc2h0
YWJsZXpJbmZvIGluZm87CisgIGFic2w6Ok11dGV4TG9jayBsKCZpbmZvLmluaXRfbXUpOworICBp
bmZvLlByZXBhcmVGb3JTYW1wbGluZygpOworICBSZWNvcmRJbnNlcnRTbG93KCZpbmZvLCAweDEs
IDApOworICBSZWNvcmRJbnNlcnRTbG93KCZpbmZvLCAweDIsIGtQcm9iZUxlbmd0aCk7CisgIFJl
Y29yZEluc2VydFNsb3coJmluZm8sIDB4NCwga1Byb2JlTGVuZ3RoKTsKKyAgUmVjb3JkSW5zZXJ0
U2xvdygmaW5mbywgMHg4LCAyICoga1Byb2JlTGVuZ3RoKTsKKyAgRVhQRUNUX0VRKGluZm8uc2l6
ZS5sb2FkKCksIDQpOworICBFWFBFQ1RfRVEoaW5mby50b3RhbF9wcm9iZV9sZW5ndGgubG9hZCgp
LCA0KTsKKworICBSZWNvcmRFcmFzZVNsb3coJmluZm8pOworICBSZWNvcmRFcmFzZVNsb3coJmlu
Zm8pOworICBFWFBFQ1RfRVEoaW5mby5zaXplLmxvYWQoKSwgMik7CisgIEVYUEVDVF9FUShpbmZv
LnRvdGFsX3Byb2JlX2xlbmd0aC5sb2FkKCksIDQpOworICBFWFBFQ1RfRVEoaW5mby5udW1fZXJh
c2VzLmxvYWQoKSwgMik7CisKKyAgUmVjb3JkUmVoYXNoU2xvdygmaW5mbywgMyAqIGtQcm9iZUxl
bmd0aCk7CisgIEVYUEVDVF9FUShpbmZvLnNpemUubG9hZCgpLCAyKTsKKyAgRVhQRUNUX0VRKGlu
Zm8udG90YWxfcHJvYmVfbGVuZ3RoLmxvYWQoKSwgMyk7CisgIEVYUEVDVF9FUShpbmZvLm51bV9l
cmFzZXMubG9hZCgpLCAwKTsKK30KKworVEVTVChIYXNodGFibGV6U2FtcGxlclRlc3QsIFNtYWxs
U2FtcGxlUGFyYW1ldGVyKSB7CisgIFNldEhhc2h0YWJsZXpFbmFibGVkKHRydWUpOworICBTZXRI
YXNodGFibGV6U2FtcGxlUGFyYW1ldGVyKDEwMCk7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAx
MDAwOyArK2kpIHsKKyAgICBpbnQ2NF90IG5leHRfc2FtcGxlID0gMDsKKyAgICBIYXNodGFibGV6
SW5mbyogc2FtcGxlID0gU2FtcGxlU2xvdygmbmV4dF9zYW1wbGUpOworICAgIEVYUEVDVF9HVChu
ZXh0X3NhbXBsZSwgMCk7CisgICAgRVhQRUNUX05FKHNhbXBsZSwgbnVsbHB0cik7CisgICAgVW5z
YW1wbGVTbG93KHNhbXBsZSk7CisgIH0KK30KKworVEVTVChIYXNodGFibGV6U2FtcGxlclRlc3Qs
IExhcmdlU2FtcGxlUGFyYW1ldGVyKSB7CisgIFNldEhhc2h0YWJsZXpFbmFibGVkKHRydWUpOwor
ICBTZXRIYXNodGFibGV6U2FtcGxlUGFyYW1ldGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGlu
dDY0X3QgbmV4dF9zYW1wbGUgPSAwOworICAgIEhhc2h0YWJsZXpJbmZvKiBzYW1wbGUgPSBTYW1w
bGVTbG93KCZuZXh0X3NhbXBsZSk7CisgICAgRVhQRUNUX0dUKG5leHRfc2FtcGxlLCAwKTsKKyAg
ICBFWFBFQ1RfTkUoc2FtcGxlLCBudWxscHRyKTsKKyAgICBVbnNhbXBsZVNsb3coc2FtcGxlKTsK
KyAgfQorfQorCitURVNUKEhhc2h0YWJsZXpTYW1wbGVyVGVzdCwgU2FtcGxlKSB7CisgIFNldEhh
c2h0YWJsZXpFbmFibGVkKHRydWUpOworICBTZXRIYXNodGFibGV6U2FtcGxlUGFyYW1ldGVyKDEw
MCk7CisgIGludDY0X3QgbnVtX3NhbXBsZWQgPSAwOworICBpbnQ2NF90IHRvdGFsID0gMDsKKyAg
ZG91YmxlIHNhbXBsZV9yYXRlID0gMC4wOworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDAwMDA7
ICsraSkgeworICAgIEhhc2h0YWJsZXpJbmZvSGFuZGxlIGggPSBTYW1wbGUoKTsKKyAgICArK3Rv
dGFsOworICAgIGlmIChIYXNodGFibGV6SW5mb0hhbmRsZVBlZXI6OklzU2FtcGxlZChoKSkgewor
ICAgICAgKytudW1fc2FtcGxlZDsKKyAgICB9CisgICAgc2FtcGxlX3JhdGUgPSBzdGF0aWNfY2Fz
dDxkb3VibGU+KG51bV9zYW1wbGVkKSAvIHRvdGFsOworICAgIGlmICgwLjAwNSA8IHNhbXBsZV9y
YXRlICYmIHNhbXBsZV9yYXRlIDwgMC4wMTUpIGJyZWFrOworICB9CisgIEVYUEVDVF9ORUFSKHNh
bXBsZV9yYXRlLCAwLjAxLCAwLjAwNSk7Cit9CisKK1RFU1QoSGFzaHRhYmxlelNhbXBsZXJUZXN0
LCBIYW5kbGUpIHsKKyAgYXV0byYgc2FtcGxlciA9IEhhc2h0YWJsZXpTYW1wbGVyOjpHbG9iYWwo
KTsKKyAgSGFzaHRhYmxlekluZm9IYW5kbGUgaChzYW1wbGVyLlJlZ2lzdGVyKCkpOworICBhdXRv
KiBpbmZvID0gSGFzaHRhYmxlekluZm9IYW5kbGVQZWVyOjpHZXRJbmZvKCZoKTsKKyAgaW5mby0+
aGFzaGVzX2JpdHdpc2VfYW5kLnN0b3JlKDB4MTIzNDU2NzgsIHN0ZDo6bWVtb3J5X29yZGVyX3Jl
bGF4ZWQpOworCisgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgc2FtcGxlci5JdGVyYXRlKFsmXShj
b25zdCBIYXNodGFibGV6SW5mbyYgaCkgeworICAgIGlmICgmaCA9PSBpbmZvKSB7CisgICAgICBF
WFBFQ1RfRVEoaC5oYXNoZXNfYml0d2lzZV9hbmQubG9hZCgpLCAweDEyMzQ1Njc4KTsKKyAgICAg
IGZvdW5kID0gdHJ1ZTsKKyAgICB9CisgIH0pOworICBFWFBFQ1RfVFJVRShmb3VuZCk7CisKKyAg
aCA9IEhhc2h0YWJsZXpJbmZvSGFuZGxlKCk7CisgIGZvdW5kID0gZmFsc2U7CisgIHNhbXBsZXIu
SXRlcmF0ZShbJl0oY29uc3QgSGFzaHRhYmxlekluZm8mIGgpIHsKKyAgICBpZiAoJmggPT0gaW5m
bykgeworICAgICAgLy8gdGhpcyB3aWxsIG9ubHkgaGFwcGVuIGlmIHNvbWUgb3RoZXIgdGhyZWFk
IGhhcyByZXN1cnJlY3RlZCB0aGUgaW5mbworICAgICAgLy8gdGhlIG9sZCBoYW5kbGUgd2FzIHVz
aW5nLgorICAgICAgaWYgKGguaGFzaGVzX2JpdHdpc2VfYW5kLmxvYWQoKSA9PSAweDEyMzQ1Njc4
KSB7CisgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgIH0pOworICBFWFBF
Q1RfRkFMU0UoZm91bmQpOworfQorCitURVNUKEhhc2h0YWJsZXpTYW1wbGVyVGVzdCwgUmVnaXN0
cmF0aW9uKSB7CisgIEhhc2h0YWJsZXpTYW1wbGVyIHNhbXBsZXI7CisgIGF1dG8qIGluZm8xID0g
UmVnaXN0ZXIoJnNhbXBsZXIsIDEpOworICBFWFBFQ1RfVEhBVChHZXRTaXplcygmc2FtcGxlciks
IFVub3JkZXJlZEVsZW1lbnRzQXJlKDEpKTsKKworICBhdXRvKiBpbmZvMiA9IFJlZ2lzdGVyKCZz
YW1wbGVyLCAyKTsKKyAgRVhQRUNUX1RIQVQoR2V0U2l6ZXMoJnNhbXBsZXIpLCBVbm9yZGVyZWRF
bGVtZW50c0FyZSgxLCAyKSk7CisgIGluZm8xLT5zaXplLnN0b3JlKDMpOworICBFWFBFQ1RfVEhB
VChHZXRTaXplcygmc2FtcGxlciksIFVub3JkZXJlZEVsZW1lbnRzQXJlKDMsIDIpKTsKKworICBz
YW1wbGVyLlVucmVnaXN0ZXIoaW5mbzEpOworICBzYW1wbGVyLlVucmVnaXN0ZXIoaW5mbzIpOwor
fQorCitURVNUKEhhc2h0YWJsZXpTYW1wbGVyVGVzdCwgVW5yZWdpc3RyYXRpb24pIHsKKyAgSGFz
aHRhYmxlelNhbXBsZXIgc2FtcGxlcjsKKyAgc3RkOjp2ZWN0b3I8SGFzaHRhYmxlekluZm8qPiBp
bmZvczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICBpbmZvcy5wdXNo
X2JhY2soUmVnaXN0ZXIoJnNhbXBsZXIsIGkpKTsKKyAgfQorICBFWFBFQ1RfVEhBVChHZXRTaXpl
cygmc2FtcGxlciksIFVub3JkZXJlZEVsZW1lbnRzQXJlKDAsIDEsIDIpKTsKKworICBzYW1wbGVy
LlVucmVnaXN0ZXIoaW5mb3NbMV0pOworICBFWFBFQ1RfVEhBVChHZXRTaXplcygmc2FtcGxlciks
IFVub3JkZXJlZEVsZW1lbnRzQXJlKDAsIDIpKTsKKworICBpbmZvcy5wdXNoX2JhY2soUmVnaXN0
ZXIoJnNhbXBsZXIsIDMpKTsKKyAgaW5mb3MucHVzaF9iYWNrKFJlZ2lzdGVyKCZzYW1wbGVyLCA0
KSk7CisgIEVYUEVDVF9USEFUKEdldFNpemVzKCZzYW1wbGVyKSwgVW5vcmRlcmVkRWxlbWVudHNB
cmUoMCwgMiwgMywgNCkpOworICBzYW1wbGVyLlVucmVnaXN0ZXIoaW5mb3NbM10pOworICBFWFBF
Q1RfVEhBVChHZXRTaXplcygmc2FtcGxlciksIFVub3JkZXJlZEVsZW1lbnRzQXJlKDAsIDIsIDQp
KTsKKworICBzYW1wbGVyLlVucmVnaXN0ZXIoaW5mb3NbMF0pOworICBzYW1wbGVyLlVucmVnaXN0
ZXIoaW5mb3NbMl0pOworICBzYW1wbGVyLlVucmVnaXN0ZXIoaW5mb3NbNF0pOworICBFWFBFQ1Rf
VEhBVChHZXRTaXplcygmc2FtcGxlciksIElzRW1wdHkoKSk7Cit9CisKK1RFU1QoSGFzaHRhYmxl
elNhbXBsZXJUZXN0LCBNdWx0aVRocmVhZGVkKSB7CisgIEhhc2h0YWJsZXpTYW1wbGVyIHNhbXBs
ZXI7CisgIE5vdGlmaWNhdGlvbiBzdG9wOworICBUaHJlYWRQb29sIHBvb2woMTApOworCisgIGZv
ciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgIHBvb2wuU2NoZWR1bGUoWyZzYW1wbGVy
LCAmc3RvcF0oKSB7CisgICAgICBzdGQ6OnJhbmRvbV9kZXZpY2UgcmQ7CisgICAgICBzdGQ6Om10
MTk5MzcgZ2VuKHJkKCkpOworCisgICAgICBzdGQ6OnZlY3RvcjxIYXNodGFibGV6SW5mbyo+IGlu
Zm96OworICAgICAgd2hpbGUgKCFzdG9wLkhhc0JlZW5Ob3RpZmllZCgpKSB7CisgICAgICAgIGlm
IChpbmZvei5lbXB0eSgpKSB7CisgICAgICAgICAgaW5mb3oucHVzaF9iYWNrKHNhbXBsZXIuUmVn
aXN0ZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChzdGQ6OnVuaWZvcm1faW50X2Rp
c3RyaWJ1dGlvbjw+KDAsIDIpKGdlbikpIHsKKyAgICAgICAgICBjYXNlIDA6IHsKKyAgICAgICAg
ICAgIGluZm96LnB1c2hfYmFjayhzYW1wbGVyLlJlZ2lzdGVyKCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgfQorICAgICAgICAgIGNhc2UgMTogeworICAgICAgICAgICAgc2l6ZV90
IHAgPQorICAgICAgICAgICAgICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPD4oMCwg
aW5mb3ouc2l6ZSgpIC0gMSkoZ2VuKTsKKyAgICAgICAgICAgIEhhc2h0YWJsZXpJbmZvKiBpbmZv
ID0gaW5mb3pbcF07CisgICAgICAgICAgICBpbmZveltwXSA9IGluZm96LmJhY2soKTsKKyAgICAg
ICAgICAgIGluZm96LnBvcF9iYWNrKCk7CisgICAgICAgICAgICBzYW1wbGVyLlVucmVnaXN0ZXIo
aW5mbyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgY2FzZSAy
OiB7CisgICAgICAgICAgICBhYnNsOjpEdXJhdGlvbiBvbGRlc3QgPSBhYnNsOjpaZXJvRHVyYXRp
b24oKTsKKyAgICAgICAgICAgIHNhbXBsZXIuSXRlcmF0ZShbJl0oY29uc3QgSGFzaHRhYmxleklu
Zm8mIGluZm8pIHsKKyAgICAgICAgICAgICAgb2xkZXN0ID0gc3RkOjptYXgob2xkZXN0LCBhYnNs
OjpOb3coKSAtIGluZm8uY3JlYXRlX3RpbWUpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBBU1NFUlRfR0Uob2xkZXN0LCBhYnNsOjpaZXJvRHVyYXRpb24oKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9KTsKKyAgfQorICAv
LyBUaGUgdGhyZWFkcyB3aWxsIGhhbW1lciBhd2F5LiAgR2l2ZSBpdCBhIGxpdHRsZSBiaXQgb2Yg
dGltZSBmb3IgdHNhbiB0bworICAvLyBzcG90IGVycm9ycy4KKyAgYWJzbDo6U2xlZXBGb3IoYWJz
bDo6U2Vjb25kcygzKSk7CisgIHN0b3AuTm90aWZ5KCk7Cit9CisKK1RFU1QoSGFzaHRhYmxlelNh
bXBsZXJUZXN0LCBDYWxsYmFjaykgeworICBIYXNodGFibGV6U2FtcGxlciBzYW1wbGVyOworCisg
IGF1dG8qIGluZm8xID0gUmVnaXN0ZXIoJnNhbXBsZXIsIDEpOworICBhdXRvKiBpbmZvMiA9IFJl
Z2lzdGVyKCZzYW1wbGVyLCAyKTsKKworICBzdGF0aWMgY29uc3QgSGFzaHRhYmxlekluZm8qIGV4
cGVjdGVkOworCisgIGF1dG8gY2FsbGJhY2sgPSBbXShjb25zdCBIYXNodGFibGV6SW5mbyYgaW5m
bykgeworICAgIC8vIFdlIGNhbid0IHVzZSBgaW5mb2Agb3V0c2lkZSBvZiB0aGlzIGNhbGxiYWNr
IGJlY2F1c2UgdGhlIG9iamVjdCB3aWxsIGJlCisgICAgLy8gZGlzcG9zZWQgYXMgc29vbiBhcyB3
ZSByZXR1cm4gZnJvbSBoZXJlLgorICAgIEVYUEVDVF9FUSgmaW5mbywgZXhwZWN0ZWQpOworICB9
OworCisgIC8vIFNldCB0aGUgY2FsbGJhY2suCisgIEVYUEVDVF9FUShzYW1wbGVyLlNldERpc3Bv
c2VDYWxsYmFjayhjYWxsYmFjayksIG51bGxwdHIpOworICBleHBlY3RlZCA9IGluZm8xOworICBz
YW1wbGVyLlVucmVnaXN0ZXIoaW5mbzEpOworCisgIC8vIFVuc2V0IHRoZSBjYWxsYmFjay4KKyAg
RVhQRUNUX0VRKGNhbGxiYWNrLCBzYW1wbGVyLlNldERpc3Bvc2VDYWxsYmFjayhudWxscHRyKSk7
CisgIGV4cGVjdGVkID0gbnVsbHB0cjsgIC8vIG5vIG1vcmUgY2FsbHMuCisgIHNhbXBsZXIuVW5y
ZWdpc3RlcihpbmZvMik7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNv
bnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9oYXZlX3NzZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L2hhdmVfc3NlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM0MTQ0MThkYmEwNjRlZmFhODc4NjJhN2NlOGMxYWRj
ZTk4ZDcwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXZl
X3NzZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vIFNoYXJlZCBjb25maWcgcHJvYmluZyBmb3IgU1NFIGluc3RydWN0aW9u
cyB1c2VkIGluIFN3aXNzIHRhYmxlcy4KKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxf
SEFWRV9TU0VfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFWRV9TU0VfSF8K
KworI2lmbmRlZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgorI2lmIGRlZmluZWQoX19TU0UyX18pIHx8
ICBcCisgICAgKGRlZmluZWQoX01TQ19WRVIpICYmIFwKKyAgICAgKGRlZmluZWQoX01fWDY0KSB8
fCAoZGVmaW5lZChfTV9JWDg2KSAmJiBfTV9JWDg2X0ZQID49IDIpKSkKKyNkZWZpbmUgU1dJU1NU
QUJMRV9IQVZFX1NTRTIgMQorI2Vsc2UKKyNkZWZpbmUgU1dJU1NUQUJMRV9IQVZFX1NTRTIgMAor
I2VuZGlmCisjZW5kaWYKKworI2lmbmRlZiBTV0lTU1RBQkxFX0hBVkVfU1NTRTMKKyNpZmRlZiBf
X1NTU0UzX18KKyNkZWZpbmUgU1dJU1NUQUJMRV9IQVZFX1NTU0UzIDEKKyNlbHNlCisjZGVmaW5l
IFNXSVNTVEFCTEVfSEFWRV9TU1NFMyAwCisjZW5kaWYKKyNlbmRpZgorCisjaWYgU1dJU1NUQUJM
RV9IQVZFX1NTU0UzICYmICFTV0lTU1RBQkxFX0hBVkVfU1NFMgorI2Vycm9yICJCYWQgY29uZmln
dXJhdGlvbiEiCisjZW5kaWYKKworI2lmIFNXSVNTVEFCTEVfSEFWRV9TU0UyCisjaW5jbHVkZSA8
ZW1taW50cmluLmg+CisjZW5kaWYKKworI2lmIFNXSVNTVEFCTEVfSEFWRV9TU1NFMworI2luY2x1
ZGUgPHRtbWludHJpbi5oPgorI2VuZGlmCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5U
RVJOQUxfSEFWRV9TU0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9p
bmxpbmVkX3ZlY3Rvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2lubGluZWRfdmVjdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjFjNGY2ZWJmY2NjYmRhYWRkNGY5MGEwOWNmY2Q5ZDZjY2VkOGE2ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9pbmxpbmVkX3ZlY3Rv
ci5oCkBAIC0wLDAgKzEsODkzIEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhv
cnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9JTkxJTkVEX1ZFQ1RPUl9J
TlRFUk5BTF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9JTkxJTkVEX1ZFQ1RP
Ul9JTlRFUk5BTF9IXworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRkZWY+
CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxsaW1p
dHM+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29t
cHJlc3NlZF90dXBsZS5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1
ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvc3Bhbi5o
IgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWwg
eworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+Cit1c2luZyBJc0F0TGVhc3RGb3J3YXJk
SXRlcmF0b3IgPSBzdGQ6OmlzX2NvbnZlcnRpYmxlPAorICAgIHR5cGVuYW1lIHN0ZDo6aXRlcmF0
b3JfdHJhaXRzPEl0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnksCisgICAgc3RkOjpmb3J3YXJk
X2l0ZXJhdG9yX3RhZz47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3JUeXBlPgordXNp
bmcgSXNNZW1jcHlPayA9IGFic2w6OmNvbmp1bmN0aW9uPAorICAgIHN0ZDo6aXNfc2FtZTxzdGQ6
OmFsbG9jYXRvcjx0eXBlbmFtZSBBbGxvY2F0b3JUeXBlOjp2YWx1ZV90eXBlPiwKKyAgICAgICAg
ICAgICAgICAgQWxsb2NhdG9yVHlwZT4sCisgICAgYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29u
c3RydWN0aWJsZTx0eXBlbmFtZSBBbGxvY2F0b3JUeXBlOjp2YWx1ZV90eXBlPiwKKyAgICBhYnNs
Ojppc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6OnZh
bHVlX3R5cGU+LAorICAgIGFic2w6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8dHlwZW5hbWUg
QWxsb2NhdG9yVHlwZTo6dmFsdWVfdHlwZT4+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2Nh
dG9yVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBTaXplVHlwZT4KK3ZvaWQgRGVz
dHJveUVsZW1lbnRzKEFsbG9jYXRvclR5cGUqIGFsbG9jX3B0ciwgVmFsdWVUeXBlKiBkZXN0cm95
X2ZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgU2l6ZVR5cGUgZGVzdHJveV9zaXplKSB7Cisg
IHVzaW5nIEFsbG9jYXRvclRyYWl0cyA9IGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9y
VHlwZT47CisKKyAgaWYgKGRlc3Ryb3lfZmlyc3QgIT0gbnVsbHB0cikgeworICAgIGZvciAoYXV0
byBpID0gZGVzdHJveV9zaXplOyBpICE9IDA7KSB7CisgICAgICAtLWk7CisgICAgICBBbGxvY2F0
b3JUcmFpdHM6OmRlc3Ryb3koKmFsbG9jX3B0ciwgZGVzdHJveV9maXJzdCArIGkpOworICAgIH0K
KworI2lmbmRlZiBOREVCVUcKKyAgICAvLyBPdmVyd3JpdGUgdW51c2VkIG1lbW9yeSB3aXRoIGAw
eGFiYCBzbyB3ZSBjYW4gY2F0Y2ggdW5pbml0aWFsaXplZCB1c2FnZS4KKyAgICAvLworICAgIC8v
IENhc3QgdG8gYHZvaWQqYCB0byB0ZWxsIHRoZSBjb21waWxlciB0aGF0IHdlIGRvbid0IGNhcmUg
dGhhdCB3ZSBtaWdodCBiZQorICAgIC8vIHNjcmliYmxpbmcgb24gYSB2dGFibGUgcG9pbnRlci4K
KyAgICBhdXRvKiBtZW1vcnlfcHRyID0gc3RhdGljX2Nhc3Q8dm9pZCo+KGRlc3Ryb3lfZmlyc3Qp
OworICAgIGF1dG8gbWVtb3J5X3NpemUgPSBzaXplb2YoVmFsdWVUeXBlKSAqIGRlc3Ryb3lfc2l6
ZTsKKyAgICBzdGQ6Om1lbXNldChtZW1vcnlfcHRyLCAweGFiLCBtZW1vcnlfc2l6ZSk7CisjZW5k
aWYgIC8vIE5ERUJVRworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3JUeXBl
LCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlQWRhcHRlciwKKyAgICAgICAgICB0
eXBlbmFtZSBTaXplVHlwZT4KK3ZvaWQgQ29uc3RydWN0RWxlbWVudHMoQWxsb2NhdG9yVHlwZSog
YWxsb2NfcHRyLCBWYWx1ZVR5cGUqIGNvbnN0cnVjdF9maXJzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWVBZGFwdGVyKiB2YWx1ZXNfcHRyLCBTaXplVHlwZSBjb25zdHJ1Y3Rfc2l6ZSkg
eworICBmb3IgKFNpemVUeXBlIGkgPSAwOyBpIDwgY29uc3RydWN0X3NpemU7ICsraSkgeworICAg
IEFCU0xfSU5URVJOQUxfVFJZIHsKKyAgICAgIHZhbHVlc19wdHItPkNvbnN0cnVjdE5leHQoYWxs
b2NfcHRyLCBjb25zdHJ1Y3RfZmlyc3QgKyBpKTsKKyAgICB9CisgICAgQUJTTF9JTlRFUk5BTF9D
QVRDSF9BTlkgeworICAgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkRlc3Ryb3lFbGVtZW50
cyhhbGxvY19wdHIsIGNvbnN0cnVjdF9maXJzdCwgaSk7CisgICAgICBBQlNMX0lOVEVSTkFMX1JF
VEhST1c7CisgICAgfQorICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5
cGVuYW1lIFZhbHVlQWRhcHRlciwgdHlwZW5hbWUgU2l6ZVR5cGU+Cit2b2lkIEFzc2lnbkVsZW1l
bnRzKFZhbHVlVHlwZSogYXNzaWduX2ZpcnN0LCBWYWx1ZUFkYXB0ZXIqIHZhbHVlc19wdHIsCisg
ICAgICAgICAgICAgICAgICAgIFNpemVUeXBlIGFzc2lnbl9zaXplKSB7CisgIGZvciAoU2l6ZVR5
cGUgaSA9IDA7IGkgPCBhc3NpZ25fc2l6ZTsgKytpKSB7CisgICAgdmFsdWVzX3B0ci0+QXNzaWdu
TmV4dChhc3NpZ25fZmlyc3QgKyBpKTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxs
b2NhdG9yVHlwZT4KK3N0cnVjdCBTdG9yYWdlVmlldyB7CisgIHVzaW5nIHBvaW50ZXIgPSB0eXBl
bmFtZSBBbGxvY2F0b3JUeXBlOjpwb2ludGVyOworICB1c2luZyBzaXplX3R5cGUgPSB0eXBlbmFt
ZSBBbGxvY2F0b3JUeXBlOjpzaXplX3R5cGU7CisKKyAgcG9pbnRlciBkYXRhOworICBzaXplX3R5
cGUgc2l6ZTsKKyAgc2l6ZV90eXBlIGNhcGFjaXR5OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IEFsbG9jYXRvclR5cGUsIHR5cGVuYW1lIEl0ZXJhdG9yPgorY2xhc3MgSXRlcmF0b3JWYWx1ZUFk
YXB0ZXIgeworICB1c2luZyBwb2ludGVyID0gdHlwZW5hbWUgQWxsb2NhdG9yVHlwZTo6cG9pbnRl
cjsKKyAgdXNpbmcgQWxsb2NhdG9yVHJhaXRzID0gYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxv
Y2F0b3JUeXBlPjsKKworIHB1YmxpYzoKKyAgZXhwbGljaXQgSXRlcmF0b3JWYWx1ZUFkYXB0ZXIo
Y29uc3QgSXRlcmF0b3ImIGl0KSA6IGl0XyhpdCkge30KKworICB2b2lkIENvbnN0cnVjdE5leHQo
QWxsb2NhdG9yVHlwZSogYWxsb2NfcHRyLCBwb2ludGVyIGNvbnN0cnVjdF9hdCkgeworICAgIEFs
bG9jYXRvclRyYWl0czo6Y29uc3RydWN0KCphbGxvY19wdHIsIGNvbnN0cnVjdF9hdCwgKml0Xyk7
CisgICAgKytpdF87CisgIH0KKworICB2b2lkIEFzc2lnbk5leHQocG9pbnRlciBhc3NpZ25fYXQp
IHsKKyAgICAqYXNzaWduX2F0ID0gKml0XzsKKyAgICArK2l0XzsKKyAgfQorCisgcHJpdmF0ZToK
KyAgSXRlcmF0b3IgaXRfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvclR5cGU+
CitjbGFzcyBDb3B5VmFsdWVBZGFwdGVyIHsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIEFs
bG9jYXRvclR5cGU6OnBvaW50ZXI7CisgIHVzaW5nIGNvbnN0X3BvaW50ZXIgPSB0eXBlbmFtZSBB
bGxvY2F0b3JUeXBlOjpjb25zdF9wb2ludGVyOworICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSB0
eXBlbmFtZSBBbGxvY2F0b3JUeXBlOjpjb25zdF9yZWZlcmVuY2U7CisgIHVzaW5nIEFsbG9jYXRv
clRyYWl0cyA9IGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yVHlwZT47CisKKyBwdWJs
aWM6CisgIGV4cGxpY2l0IENvcHlWYWx1ZUFkYXB0ZXIoY29uc3RfcmVmZXJlbmNlIHYpIDogcHRy
XyhzdGQ6OmFkZHJlc3NvZih2KSkge30KKworICB2b2lkIENvbnN0cnVjdE5leHQoQWxsb2NhdG9y
VHlwZSogYWxsb2NfcHRyLCBwb2ludGVyIGNvbnN0cnVjdF9hdCkgeworICAgIEFsbG9jYXRvclRy
YWl0czo6Y29uc3RydWN0KCphbGxvY19wdHIsIGNvbnN0cnVjdF9hdCwgKnB0cl8pOworICB9CisK
KyAgdm9pZCBBc3NpZ25OZXh0KHBvaW50ZXIgYXNzaWduX2F0KSB7ICphc3NpZ25fYXQgPSAqcHRy
XzsgfQorCisgcHJpdmF0ZToKKyAgY29uc3RfcG9pbnRlciBwdHJfOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIEFsbG9jYXRvclR5cGU+CitjbGFzcyBEZWZhdWx0VmFsdWVBZGFwdGVyIHsKKyAg
dXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6OnBvaW50ZXI7CisgIHVzaW5n
IHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBBbGxvY2F0b3JUeXBlOjp2YWx1ZV90eXBlOworICB1c2lu
ZyBBbGxvY2F0b3JUcmFpdHMgPSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvclR5cGU+
OworCisgcHVibGljOgorICBleHBsaWNpdCBEZWZhdWx0VmFsdWVBZGFwdGVyKCkge30KKworICB2
b2lkIENvbnN0cnVjdE5leHQoQWxsb2NhdG9yVHlwZSogYWxsb2NfcHRyLCBwb2ludGVyIGNvbnN0
cnVjdF9hdCkgeworICAgIEFsbG9jYXRvclRyYWl0czo6Y29uc3RydWN0KCphbGxvY19wdHIsIGNv
bnN0cnVjdF9hdCk7CisgIH0KKworICB2b2lkIEFzc2lnbk5leHQocG9pbnRlciBhc3NpZ25fYXQp
IHsgKmFzc2lnbl9hdCA9IHZhbHVlX3R5cGUoKTsgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IEFsbG9jYXRvclR5cGU+CitjbGFzcyBBbGxvY2F0aW9uVHJhbnNhY3Rpb24geworICB1c2luZyB2
YWx1ZV90eXBlID0gdHlwZW5hbWUgQWxsb2NhdG9yVHlwZTo6dmFsdWVfdHlwZTsKKyAgdXNpbmcg
cG9pbnRlciA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6OnBvaW50ZXI7CisgIHVzaW5nIHNpemVf
dHlwZSA9IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU6OnNpemVfdHlwZTsKKyAgdXNpbmcgQWxsb2Nh
dG9yVHJhaXRzID0gYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3JUeXBlPjsKKworIHB1
YmxpYzoKKyAgZXhwbGljaXQgQWxsb2NhdGlvblRyYW5zYWN0aW9uKEFsbG9jYXRvclR5cGUqIGFs
bG9jX3B0cikKKyAgICAgIDogYWxsb2NfZGF0YV8oKmFsbG9jX3B0ciwgbnVsbHB0cikge30KKwor
ICB+QWxsb2NhdGlvblRyYW5zYWN0aW9uKCkgeworICAgIGlmIChEaWRBbGxvY2F0ZSgpKSB7Cisg
ICAgICBBbGxvY2F0b3JUcmFpdHM6OmRlYWxsb2NhdGUoR2V0QWxsb2NhdG9yKCksIEdldERhdGEo
KSwgR2V0Q2FwYWNpdHkoKSk7CisgICAgfQorICB9CisKKyAgQWxsb2NhdGlvblRyYW5zYWN0aW9u
KGNvbnN0IEFsbG9jYXRpb25UcmFuc2FjdGlvbiYpID0gZGVsZXRlOworICB2b2lkIG9wZXJhdG9y
PShjb25zdCBBbGxvY2F0aW9uVHJhbnNhY3Rpb24mKSA9IGRlbGV0ZTsKKworICBBbGxvY2F0b3JU
eXBlJiBHZXRBbGxvY2F0b3IoKSB7IHJldHVybiBhbGxvY19kYXRhXy50ZW1wbGF0ZSBnZXQ8MD4o
KTsgfQorICBwb2ludGVyJiBHZXREYXRhKCkgeyByZXR1cm4gYWxsb2NfZGF0YV8udGVtcGxhdGUg
Z2V0PDE+KCk7IH0KKyAgc2l6ZV90eXBlJiBHZXRDYXBhY2l0eSgpIHsgcmV0dXJuIGNhcGFjaXR5
XzsgfQorCisgIGJvb2wgRGlkQWxsb2NhdGUoKSB7IHJldHVybiBHZXREYXRhKCkgIT0gbnVsbHB0
cjsgfQorICBwb2ludGVyIEFsbG9jYXRlKHNpemVfdHlwZSBjYXBhY2l0eSkgeworICAgIEdldERh
dGEoKSA9IEFsbG9jYXRvclRyYWl0czo6YWxsb2NhdGUoR2V0QWxsb2NhdG9yKCksIGNhcGFjaXR5
KTsKKyAgICBHZXRDYXBhY2l0eSgpID0gY2FwYWNpdHk7CisgICAgcmV0dXJuIEdldERhdGEoKTsK
KyAgfQorCisgcHJpdmF0ZToKKyAgY29udGFpbmVyX2ludGVybmFsOjpDb21wcmVzc2VkVHVwbGU8
QWxsb2NhdG9yVHlwZSwgcG9pbnRlcj4gYWxsb2NfZGF0YV87CisgIHNpemVfdHlwZSBjYXBhY2l0
eV8gPSAwOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvclR5cGU+CitjbGFzcyBD
b25zdHJ1Y3Rpb25UcmFuc2FjdGlvbiB7CisgIHVzaW5nIHBvaW50ZXIgPSB0eXBlbmFtZSBBbGxv
Y2F0b3JUeXBlOjpwb2ludGVyOworICB1c2luZyBzaXplX3R5cGUgPSB0eXBlbmFtZSBBbGxvY2F0
b3JUeXBlOjpzaXplX3R5cGU7CisKKyBwdWJsaWM6CisgIGV4cGxpY2l0IENvbnN0cnVjdGlvblRy
YW5zYWN0aW9uKEFsbG9jYXRvclR5cGUqIGFsbG9jX3B0cikKKyAgICAgIDogYWxsb2NfZGF0YV8o
KmFsbG9jX3B0ciwgbnVsbHB0cikge30KKworICB+Q29uc3RydWN0aW9uVHJhbnNhY3Rpb24oKSB7
CisgICAgaWYgKERpZENvbnN0cnVjdCgpKSB7CisgICAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5h
bDo6RGVzdHJveUVsZW1lbnRzKHN0ZDo6YWRkcmVzc29mKEdldEFsbG9jYXRvcigpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0RGF0YSgpLCBHZXRT
aXplKCkpOworICAgIH0KKyAgfQorCisgIENvbnN0cnVjdGlvblRyYW5zYWN0aW9uKGNvbnN0IENv
bnN0cnVjdGlvblRyYW5zYWN0aW9uJikgPSBkZWxldGU7CisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IENvbnN0cnVjdGlvblRyYW5zYWN0aW9uJikgPSBkZWxldGU7CisKKyAgQWxsb2NhdG9yVHlwZSYg
R2V0QWxsb2NhdG9yKCkgeyByZXR1cm4gYWxsb2NfZGF0YV8udGVtcGxhdGUgZ2V0PDA+KCk7IH0K
KyAgcG9pbnRlciYgR2V0RGF0YSgpIHsgcmV0dXJuIGFsbG9jX2RhdGFfLnRlbXBsYXRlIGdldDwx
PigpOyB9CisgIHNpemVfdHlwZSYgR2V0U2l6ZSgpIHsgcmV0dXJuIHNpemVfOyB9CisKKyAgYm9v
bCBEaWRDb25zdHJ1Y3QoKSB7IHJldHVybiBHZXREYXRhKCkgIT0gbnVsbHB0cjsgfQorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmFsdWVBZGFwdGVyPgorICB2b2lkIENvbnN0cnVjdChwb2ludGVyIGRh
dGEsIFZhbHVlQWRhcHRlciogdmFsdWVzX3B0ciwgc2l6ZV90eXBlIHNpemUpIHsKKyAgICBpbmxp
bmVkX3ZlY3Rvcl9pbnRlcm5hbDo6Q29uc3RydWN0RWxlbWVudHMoc3RkOjphZGRyZXNzb2YoR2V0
QWxsb2NhdG9yKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhLCB2YWx1ZXNfcHRyLCBzaXplKTsKKyAgICBHZXREYXRhKCkgPSBkYXRhOworICAg
IEdldFNpemUoKSA9IHNpemU7CisgIH0KKyAgdm9pZCBDb21taXQoKSB7CisgICAgR2V0RGF0YSgp
ID0gbnVsbHB0cjsKKyAgICBHZXRTaXplKCkgPSAwOworICB9CisKKyBwcml2YXRlOgorICBjb250
YWluZXJfaW50ZXJuYWw6OkNvbXByZXNzZWRUdXBsZTxBbGxvY2F0b3JUeXBlLCBwb2ludGVyPiBh
bGxvY19kYXRhXzsKKyAgc2l6ZV90eXBlIHNpemVfID0gMDsKK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KK2NsYXNzIFN0b3JhZ2UgeworIHB1YmxpYzoK
KyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSBBOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5h
bWUgYWxsb2NhdG9yX3R5cGU6OnZhbHVlX3R5cGU7CisgIHVzaW5nIHBvaW50ZXIgPSB0eXBlbmFt
ZSBhbGxvY2F0b3JfdHlwZTo6cG9pbnRlcjsKKyAgdXNpbmcgY29uc3RfcG9pbnRlciA9IHR5cGVu
YW1lIGFsbG9jYXRvcl90eXBlOjpjb25zdF9wb2ludGVyOworICB1c2luZyByZWZlcmVuY2UgPSB0
eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6cmVmZXJlbmNlOworICB1c2luZyBjb25zdF9yZWZlcmVu
Y2UgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6Y29uc3RfcmVmZXJlbmNlOworICB1c2luZyBy
dmFsdWVfcmVmZXJlbmNlID0gdHlwZW5hbWUgYWxsb2NhdG9yX3R5cGU6OnZhbHVlX3R5cGUmJjsK
KyAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgYWxsb2NhdG9yX3R5cGU6OnNpemVfdHlwZTsK
KyAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gdHlwZW5hbWUgYWxsb2NhdG9yX3R5cGU6OmRpZmZl
cmVuY2VfdHlwZTsKKyAgdXNpbmcgaXRlcmF0b3IgPSBwb2ludGVyOworICB1c2luZyBjb25zdF9p
dGVyYXRvciA9IGNvbnN0X3BvaW50ZXI7CisgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6
OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OworICB1c2luZyBjb25zdF9yZXZlcnNlX2l0ZXJh
dG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPjsKKyAgdXNpbmcgTW92
ZUl0ZXJhdG9yID0gc3RkOjptb3ZlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsKKyAgdXNpbmcgQWxsb2Nh
dG9yVHJhaXRzID0gYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT47CisgIHVz
aW5nIElzTWVtY3B5T2sgPSBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6SXNNZW1jcHlPazxhbGxv
Y2F0b3JfdHlwZT47CisKKyAgdXNpbmcgU3RvcmFnZVZpZXcgPSBpbmxpbmVkX3ZlY3Rvcl9pbnRl
cm5hbDo6U3RvcmFnZVZpZXc8YWxsb2NhdG9yX3R5cGU+OworCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBJdGVyYXRvcj4KKyAgdXNpbmcgSXRlcmF0b3JWYWx1ZUFkYXB0ZXIgPQorICAgICAgaW5saW5l
ZF92ZWN0b3JfaW50ZXJuYWw6Okl0ZXJhdG9yVmFsdWVBZGFwdGVyPGFsbG9jYXRvcl90eXBlLCBJ
dGVyYXRvcj47CisgIHVzaW5nIENvcHlWYWx1ZUFkYXB0ZXIgPQorICAgICAgaW5saW5lZF92ZWN0
b3JfaW50ZXJuYWw6OkNvcHlWYWx1ZUFkYXB0ZXI8YWxsb2NhdG9yX3R5cGU+OworICB1c2luZyBE
ZWZhdWx0VmFsdWVBZGFwdGVyID0KKyAgICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpEZWZh
dWx0VmFsdWVBZGFwdGVyPGFsbG9jYXRvcl90eXBlPjsKKworICB1c2luZyBBbGxvY2F0aW9uVHJh
bnNhY3Rpb24gPQorICAgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkFsbG9jYXRpb25UcmFu
c2FjdGlvbjxhbGxvY2F0b3JfdHlwZT47CisgIHVzaW5nIENvbnN0cnVjdGlvblRyYW5zYWN0aW9u
ID0KKyAgICAgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpDb25zdHJ1Y3Rpb25UcmFuc2FjdGlv
bjxhbGxvY2F0b3JfdHlwZT47CisKKyAgc3RhdGljIHNpemVfdHlwZSBOZXh0Q2FwYWNpdHkoc2l6
ZV90eXBlIGN1cnJlbnRfY2FwYWNpdHkpIHsKKyAgICByZXR1cm4gY3VycmVudF9jYXBhY2l0eSAq
IDI7CisgIH0KKworICBzdGF0aWMgc2l6ZV90eXBlIENvbXB1dGVDYXBhY2l0eShzaXplX3R5cGUg
Y3VycmVudF9jYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90eXBlIHJlcXVlc3RlZF9jYXBhY2l0eSkgeworICAgIHJldHVybiAoc3RkOjptYXgpKE5leHRD
YXBhY2l0eShjdXJyZW50X2NhcGFjaXR5KSwgcmVxdWVzdGVkX2NhcGFjaXR5KTsKKyAgfQorCisg
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAvLyBTdG9yYWdlIENvbnN0cnVjdG9ycyBhbmQgRGVz
dHJ1Y3RvcgorICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBTdG9yYWdlKCkgOiBtZXRhZGF0
YV8oKSB7fQorCisgIGV4cGxpY2l0IFN0b3JhZ2UoY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9j
KQorICAgICAgOiBtZXRhZGF0YV8oYWxsb2MsIC8qIGVtcHR5IGFuZCBpbmxpbmVkICovIDApIHt9
CisKKyAgflN0b3JhZ2UoKSB7CisgICAgcG9pbnRlciBkYXRhID0gR2V0SXNBbGxvY2F0ZWQoKSA/
IEdldEFsbG9jYXRlZERhdGEoKSA6IEdldElubGluZWREYXRhKCk7CisgICAgaW5saW5lZF92ZWN0
b3JfaW50ZXJuYWw6OkRlc3Ryb3lFbGVtZW50cyhHZXRBbGxvY1B0cigpLCBkYXRhLCBHZXRTaXpl
KCkpOworICAgIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICB9CisKKyAgLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgIC8vIFN0b3JhZ2UgTWVtYmVyIEFjY2Vzc29ycworICAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworICBzaXplX3R5cGUmIEdldFNpemVBbmRJc0FsbG9jYXRlZCgpIHsgcmV0dXJu
IG1ldGFkYXRhXy50ZW1wbGF0ZSBnZXQ8MT4oKTsgfQorCisgIGNvbnN0IHNpemVfdHlwZSYgR2V0
U2l6ZUFuZElzQWxsb2NhdGVkKCkgY29uc3QgeworICAgIHJldHVybiBtZXRhZGF0YV8udGVtcGxh
dGUgZ2V0PDE+KCk7CisgIH0KKworICBzaXplX3R5cGUgR2V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IEdldFNpemVBbmRJc0FsbG9jYXRlZCgpID4+IDE7IH0KKworICBib29sIEdldElzQWxsb2NhdGVk
KCkgY29uc3QgeyByZXR1cm4gR2V0U2l6ZUFuZElzQWxsb2NhdGVkKCkgJiAxOyB9CisKKyAgcG9p
bnRlciBHZXRBbGxvY2F0ZWREYXRhKCkgeyByZXR1cm4gZGF0YV8uYWxsb2NhdGVkLmFsbG9jYXRl
ZF9kYXRhOyB9CisKKyAgY29uc3RfcG9pbnRlciBHZXRBbGxvY2F0ZWREYXRhKCkgY29uc3Qgewor
ICAgIHJldHVybiBkYXRhXy5hbGxvY2F0ZWQuYWxsb2NhdGVkX2RhdGE7CisgIH0KKworICBwb2lu
dGVyIEdldElubGluZWREYXRhKCkgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHBvaW50
ZXI+KAorICAgICAgICBzdGQ6OmFkZHJlc3NvZihkYXRhXy5pbmxpbmVkLmlubGluZWRfZGF0YVsw
XSkpOworICB9CisKKyAgY29uc3RfcG9pbnRlciBHZXRJbmxpbmVkRGF0YSgpIGNvbnN0IHsKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdF9wb2ludGVyPigKKyAgICAgICAgc3RkOjph
ZGRyZXNzb2YoZGF0YV8uaW5saW5lZC5pbmxpbmVkX2RhdGFbMF0pKTsKKyAgfQorCisgIHNpemVf
dHlwZSBHZXRBbGxvY2F0ZWRDYXBhY2l0eSgpIGNvbnN0IHsKKyAgICByZXR1cm4gZGF0YV8uYWxs
b2NhdGVkLmFsbG9jYXRlZF9jYXBhY2l0eTsKKyAgfQorCisgIHNpemVfdHlwZSBHZXRJbmxpbmVk
Q2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KE4pOyB9CisK
KyAgU3RvcmFnZVZpZXcgTWFrZVN0b3JhZ2VWaWV3KCkgeworICAgIHJldHVybiBHZXRJc0FsbG9j
YXRlZCgpCisgICAgICAgICAgICAgICA/IFN0b3JhZ2VWaWV3e0dldEFsbG9jYXRlZERhdGEoKSwg
R2V0U2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRBbGxvY2F0ZWRDYXBh
Y2l0eSgpfQorICAgICAgICAgICAgICAgOiBTdG9yYWdlVmlld3tHZXRJbmxpbmVkRGF0YSgpLCBH
ZXRTaXplKCksIEdldElubGluZWRDYXBhY2l0eSgpfTsKKyAgfQorCisgIGFsbG9jYXRvcl90eXBl
KiBHZXRBbGxvY1B0cigpIHsKKyAgICByZXR1cm4gc3RkOjphZGRyZXNzb2YobWV0YWRhdGFfLnRl
bXBsYXRlIGdldDwwPigpKTsKKyAgfQorCisgIGNvbnN0IGFsbG9jYXRvcl90eXBlKiBHZXRBbGxv
Y1B0cigpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RkOjphZGRyZXNzb2YobWV0YWRhdGFfLnRlbXBs
YXRlIGdldDwwPigpKTsKKyAgfQorCisgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAvLyBTdG9y
YWdlIE1lbWJlciBNdXRhdG9ycworICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVmFsdWVBZGFwdGVyPgorICB2b2lkIEluaXRpYWxpemUoVmFsdWVBZGFwdGVy
IHZhbHVlcywgc2l6ZV90eXBlIG5ld19zaXplKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFs
dWVBZGFwdGVyPgorICB2b2lkIEFzc2lnbihWYWx1ZUFkYXB0ZXIgdmFsdWVzLCBzaXplX3R5cGUg
bmV3X3NpemUpOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZUFkYXB0ZXI+CisgIHZvaWQg
UmVzaXplKFZhbHVlQWRhcHRlciB2YWx1ZXMsIHNpemVfdHlwZSBuZXdfc2l6ZSk7CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFZhbHVlQWRhcHRlcj4KKyAgaXRlcmF0b3IgSW5zZXJ0KGNvbnN0X2l0
ZXJhdG9yIHBvcywgVmFsdWVBZGFwdGVyIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgIHNpemVf
dHlwZSBpbnNlcnRfY291bnQpOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICBy
ZWZlcmVuY2UgRW1wbGFjZUJhY2soQXJncyYmLi4uIGFyZ3MpOworCisgIGl0ZXJhdG9yIEVyYXNl
KGNvbnN0X2l0ZXJhdG9yIGZyb20sIGNvbnN0X2l0ZXJhdG9yIHRvKTsKKworICB2b2lkIFJlc2Vy
dmUoc2l6ZV90eXBlIHJlcXVlc3RlZF9jYXBhY2l0eSk7CisKKyAgdm9pZCBTaHJpbmtUb0ZpdCgp
OworCisgIHZvaWQgU3dhcChTdG9yYWdlKiBvdGhlcl9zdG9yYWdlX3B0cik7CisKKyAgdm9pZCBT
ZXRJc0FsbG9jYXRlZCgpIHsKKyAgICBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSB8PSBzdGF0aWNf
Y2FzdDxzaXplX3R5cGU+KDEpOworICB9CisKKyAgdm9pZCBVbnNldElzQWxsb2NhdGVkKCkgewor
ICAgIEdldFNpemVBbmRJc0FsbG9jYXRlZCgpICY9ICgoc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3R5cGU+OjptYXgpKCkgLSAxKTsKKyAgfQorCisgIHZvaWQgU2V0U2l6ZShzaXplX3R5cGUgc2l6
ZSkgeworICAgIEdldFNpemVBbmRJc0FsbG9jYXRlZCgpID0KKyAgICAgICAgKHNpemUgPDwgMSkg
fCBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KEdldElzQWxsb2NhdGVkKCkpOworICB9CisKKyAgdm9p
ZCBTZXRBbGxvY2F0ZWRTaXplKHNpemVfdHlwZSBzaXplKSB7CisgICAgR2V0U2l6ZUFuZElzQWxs
b2NhdGVkKCkgPSAoc2l6ZSA8PCAxKSB8IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oMSk7CisgIH0K
KworICB2b2lkIFNldElubGluZWRTaXplKHNpemVfdHlwZSBzaXplKSB7CisgICAgR2V0U2l6ZUFu
ZElzQWxsb2NhdGVkKCkgPSBzaXplIDw8IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oMSk7CisgIH0K
KworICB2b2lkIEFkZFNpemUoc2l6ZV90eXBlIGNvdW50KSB7CisgICAgR2V0U2l6ZUFuZElzQWxs
b2NhdGVkKCkgKz0gY291bnQgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigxKTsKKyAgfQorCisg
IHZvaWQgU3VidHJhY3RTaXplKHNpemVfdHlwZSBjb3VudCkgeworICAgIGFzc2VydChjb3VudCA8
PSBHZXRTaXplKCkpOworCisgICAgR2V0U2l6ZUFuZElzQWxsb2NhdGVkKCkgLT0gY291bnQgPDwg
c3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigxKTsKKyAgfQorCisgIHZvaWQgU2V0QWxsb2NhdGVkRGF0
YShwb2ludGVyIGRhdGEsIHNpemVfdHlwZSBjYXBhY2l0eSkgeworICAgIGRhdGFfLmFsbG9jYXRl
ZC5hbGxvY2F0ZWRfZGF0YSA9IGRhdGE7CisgICAgZGF0YV8uYWxsb2NhdGVkLmFsbG9jYXRlZF9j
YXBhY2l0eSA9IGNhcGFjaXR5OworICB9CisKKyAgdm9pZCBBY3F1aXJlQWxsb2NhdGVkRGF0YShB
bGxvY2F0aW9uVHJhbnNhY3Rpb24qIGFsbG9jYXRpb25fdHhfcHRyKSB7CisgICAgU2V0QWxsb2Nh
dGVkRGF0YShhbGxvY2F0aW9uX3R4X3B0ci0+R2V0RGF0YSgpLAorICAgICAgICAgICAgICAgICAg
ICAgYWxsb2NhdGlvbl90eF9wdHItPkdldENhcGFjaXR5KCkpOworICAgIGFsbG9jYXRpb25fdHhf
cHRyLT5HZXREYXRhKCkgPSBudWxscHRyOworICAgIGFsbG9jYXRpb25fdHhfcHRyLT5HZXRDYXBh
Y2l0eSgpID0gMDsKKyAgfQorCisgIHZvaWQgTWVtY3B5RnJvbShjb25zdCBTdG9yYWdlJiBvdGhl
cl9zdG9yYWdlKSB7CisgICAgYXNzZXJ0KElzTWVtY3B5T2s6OnZhbHVlIHx8IG90aGVyX3N0b3Jh
Z2UuR2V0SXNBbGxvY2F0ZWQoKSk7CisKKyAgICBHZXRTaXplQW5kSXNBbGxvY2F0ZWQoKSA9IG90
aGVyX3N0b3JhZ2UuR2V0U2l6ZUFuZElzQWxsb2NhdGVkKCk7CisgICAgZGF0YV8gPSBvdGhlcl9z
dG9yYWdlLmRhdGFfOworICB9CisKKyAgdm9pZCBEZWFsbG9jYXRlSWZBbGxvY2F0ZWQoKSB7Cisg
ICAgaWYgKEdldElzQWxsb2NhdGVkKCkpIHsKKyAgICAgIEFsbG9jYXRvclRyYWl0czo6ZGVhbGxv
Y2F0ZSgqR2V0QWxsb2NQdHIoKSwgR2V0QWxsb2NhdGVkRGF0YSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdldEFsbG9jYXRlZENhcGFjaXR5KCkpOworICAgIH0KKyAgfQor
CisgcHJpdmF0ZToKKyAgdXNpbmcgTWV0YWRhdGEgPQorICAgICAgY29udGFpbmVyX2ludGVybmFs
OjpDb21wcmVzc2VkVHVwbGU8YWxsb2NhdG9yX3R5cGUsIHNpemVfdHlwZT47CisKKyAgc3RydWN0
IEFsbG9jYXRlZCB7CisgICAgcG9pbnRlciBhbGxvY2F0ZWRfZGF0YTsKKyAgICBzaXplX3R5cGUg
YWxsb2NhdGVkX2NhcGFjaXR5OworICB9OworCisgIHN0cnVjdCBJbmxpbmVkIHsKKyAgICB1c2lu
ZyBJbmxpbmVkRGF0YUVsZW1lbnQgPQorICAgICAgICBhYnNsOjphbGlnbmVkX3N0b3JhZ2VfdDxz
aXplb2YodmFsdWVfdHlwZSksIGFsaWdub2YodmFsdWVfdHlwZSk+OworICAgIElubGluZWREYXRh
RWxlbWVudCBpbmxpbmVkX2RhdGFbTl07CisgIH07CisKKyAgdW5pb24gRGF0YSB7CisgICAgQWxs
b2NhdGVkIGFsbG9jYXRlZDsKKyAgICBJbmxpbmVkIGlubGluZWQ7CisgIH07CisKKyAgTWV0YWRh
dGEgbWV0YWRhdGFfOworICBEYXRhIGRhdGFfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHNpemVfdCBOLCB0eXBlbmFtZSBBPgordGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlQWRhcHRlcj4K
K2F1dG8gU3RvcmFnZTxULCBOLCBBPjo6SW5pdGlhbGl6ZShWYWx1ZUFkYXB0ZXIgdmFsdWVzLCBz
aXplX3R5cGUgbmV3X3NpemUpCisgICAgLT4gdm9pZCB7CisgIC8vIE9ubHkgY2FsbGFibGUgZnJv
bSBjb25zdHJ1Y3RvcnMhCisgIGFzc2VydCghR2V0SXNBbGxvY2F0ZWQoKSk7CisgIGFzc2VydChH
ZXRTaXplKCkgPT0gMCk7CisKKyAgcG9pbnRlciBjb25zdHJ1Y3RfZGF0YTsKKworICBpZiAobmV3
X3NpemUgPiBHZXRJbmxpbmVkQ2FwYWNpdHkoKSkgeworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBv
bmx5IGNhbGxlZCBmcm9tIHRoZSBgSW5saW5lZFZlY3RvcmAgY29uc3RydWN0b3JzLCBpdCdzCisg
ICAgLy8gc2FmZSB0byB0YWtlIG9uIHRoZSBhbGxvY2F0aW9uIHdpdGggc2l6ZSBgMGAuIElmIGBD
b25zdHJ1Y3RFbGVtZW50cyguLi4pYAorICAgIC8vIHRocm93cywgZGVhbGxvY2F0aW9uIHdpbGwg
YmUgYXV0b21hdGljYWxseSBoYW5kbGVkIGJ5IGB+U3RvcmFnZSgpYC4KKyAgICBzaXplX3R5cGUg
bmV3X2NhcGFjaXR5ID0gQ29tcHV0ZUNhcGFjaXR5KEdldElubGluZWRDYXBhY2l0eSgpLCBuZXdf
c2l6ZSk7CisgICAgcG9pbnRlciBuZXdfZGF0YSA9IEFsbG9jYXRvclRyYWl0czo6YWxsb2NhdGUo
KkdldEFsbG9jUHRyKCksIG5ld19jYXBhY2l0eSk7CisKKyAgICBTZXRBbGxvY2F0ZWREYXRhKG5l
d19kYXRhLCBuZXdfY2FwYWNpdHkpOworICAgIFNldElzQWxsb2NhdGVkKCk7CisKKyAgICBjb25z
dHJ1Y3RfZGF0YSA9IG5ld19kYXRhOworICB9IGVsc2UgeworICAgIGNvbnN0cnVjdF9kYXRhID0g
R2V0SW5saW5lZERhdGEoKTsKKyAgfQorCisgIGlubGluZWRfdmVjdG9yX2ludGVybmFsOjpDb25z
dHJ1Y3RFbGVtZW50cyhHZXRBbGxvY1B0cigpLCBjb25zdHJ1Y3RfZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZXMsIG5ld19zaXplKTsKKwor
ICAvLyBTaW5jZSB0aGUgaW5pdGlhbCBzaXplIHdhcyBndWFyYW50ZWVkIHRvIGJlIGAwYCBhbmQg
dGhlIGFsbG9jYXRlZCBiaXQgaXMKKyAgLy8gYWxyZWFkeSBjb3JyZWN0IGZvciBlaXRoZXIgY2Fz
ZSwgKmFkZGluZyogYG5ld19zaXplYCBnaXZlcyB1cyB0aGUgY29ycmVjdAorICAvLyByZXN1bHQg
ZmFzdGVyIHRoYW4gc2V0dGluZyBpdCBkaXJlY3RseS4KKyAgQWRkU2l6ZShuZXdfc2l6ZSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTiwgdHlwZW5hbWUgQT4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBWYWx1ZUFkYXB0ZXI+CithdXRvIFN0b3JhZ2U8VCwgTiwgQT46OkFzc2lnbihW
YWx1ZUFkYXB0ZXIgdmFsdWVzLCBzaXplX3R5cGUgbmV3X3NpemUpIC0+IHZvaWQgeworICBTdG9y
YWdlVmlldyBzdG9yYWdlX3ZpZXcgPSBNYWtlU3RvcmFnZVZpZXcoKTsKKworICBBbGxvY2F0aW9u
VHJhbnNhY3Rpb24gYWxsb2NhdGlvbl90eChHZXRBbGxvY1B0cigpKTsKKworICBhYnNsOjpTcGFu
PHZhbHVlX3R5cGU+IGFzc2lnbl9sb29wOworICBhYnNsOjpTcGFuPHZhbHVlX3R5cGU+IGNvbnN0
cnVjdF9sb29wOworICBhYnNsOjpTcGFuPHZhbHVlX3R5cGU+IGRlc3Ryb3lfbG9vcDsKKworICBp
ZiAobmV3X3NpemUgPiBzdG9yYWdlX3ZpZXcuY2FwYWNpdHkpIHsKKyAgICBzaXplX3R5cGUgbmV3
X2NhcGFjaXR5ID0gQ29tcHV0ZUNhcGFjaXR5KHN0b3JhZ2Vfdmlldy5jYXBhY2l0eSwgbmV3X3Np
emUpOworICAgIHBvaW50ZXIgbmV3X2RhdGEgPSBhbGxvY2F0aW9uX3R4LkFsbG9jYXRlKG5ld19j
YXBhY2l0eSk7CisKKyAgICBjb25zdHJ1Y3RfbG9vcCA9IHtuZXdfZGF0YSwgbmV3X3NpemV9Owor
ICAgIGRlc3Ryb3lfbG9vcCA9IHtzdG9yYWdlX3ZpZXcuZGF0YSwgc3RvcmFnZV92aWV3LnNpemV9
OworICB9IGVsc2UgaWYgKG5ld19zaXplID4gc3RvcmFnZV92aWV3LnNpemUpIHsKKyAgICBhc3Np
Z25fbG9vcCA9IHtzdG9yYWdlX3ZpZXcuZGF0YSwgc3RvcmFnZV92aWV3LnNpemV9OworICAgIGNv
bnN0cnVjdF9sb29wID0ge3N0b3JhZ2Vfdmlldy5kYXRhICsgc3RvcmFnZV92aWV3LnNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgbmV3X3NpemUgLSBzdG9yYWdlX3ZpZXcuc2l6ZX07CisgIH0g
ZWxzZSB7CisgICAgYXNzaWduX2xvb3AgPSB7c3RvcmFnZV92aWV3LmRhdGEsIG5ld19zaXplfTsK
KyAgICBkZXN0cm95X2xvb3AgPSB7c3RvcmFnZV92aWV3LmRhdGEgKyBuZXdfc2l6ZSwgc3RvcmFn
ZV92aWV3LnNpemUgLSBuZXdfc2l6ZX07CisgIH0KKworICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5h
bDo6QXNzaWduRWxlbWVudHMoYXNzaWduX2xvb3AuZGF0YSgpLCAmdmFsdWVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWduX2xvb3Auc2l6ZSgpKTsKKwor
ICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6Q29uc3RydWN0RWxlbWVudHMoCisgICAgICBHZXRB
bGxvY1B0cigpLCBjb25zdHJ1Y3RfbG9vcC5kYXRhKCksICZ2YWx1ZXMsIGNvbnN0cnVjdF9sb29w
LnNpemUoKSk7CisKKyAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkRlc3Ryb3lFbGVtZW50cyhH
ZXRBbGxvY1B0cigpLCBkZXN0cm95X2xvb3AuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfbG9vcC5zaXplKCkpOworCisgIGlmIChhbGxv
Y2F0aW9uX3R4LkRpZEFsbG9jYXRlKCkpIHsKKyAgICBEZWFsbG9jYXRlSWZBbGxvY2F0ZWQoKTsK
KyAgICBBY3F1aXJlQWxsb2NhdGVkRGF0YSgmYWxsb2NhdGlvbl90eCk7CisgICAgU2V0SXNBbGxv
Y2F0ZWQoKTsKKyAgfQorCisgIFNldFNpemUobmV3X3NpemUpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWVB
ZGFwdGVyPgorYXV0byBTdG9yYWdlPFQsIE4sIEE+OjpSZXNpemUoVmFsdWVBZGFwdGVyIHZhbHVl
cywgc2l6ZV90eXBlIG5ld19zaXplKSAtPiB2b2lkIHsKKyAgU3RvcmFnZVZpZXcgc3RvcmFnZV92
aWV3ID0gTWFrZVN0b3JhZ2VWaWV3KCk7CisKKyAgQWxsb2NhdGlvblRyYW5zYWN0aW9uIGFsbG9j
YXRpb25fdHgoR2V0QWxsb2NQdHIoKSk7CisgIENvbnN0cnVjdGlvblRyYW5zYWN0aW9uIGNvbnN0
cnVjdGlvbl90eChHZXRBbGxvY1B0cigpKTsKKworICBJdGVyYXRvclZhbHVlQWRhcHRlcjxNb3Zl
SXRlcmF0b3I+IG1vdmVfdmFsdWVzKAorICAgICAgTW92ZUl0ZXJhdG9yKHN0b3JhZ2Vfdmlldy5k
YXRhKSk7CisKKyAgYWJzbDo6U3Bhbjx2YWx1ZV90eXBlPiBjb25zdHJ1Y3RfbG9vcDsKKyAgYWJz
bDo6U3Bhbjx2YWx1ZV90eXBlPiBtb3ZlX2NvbnN0cnVjdF9sb29wOworICBhYnNsOjpTcGFuPHZh
bHVlX3R5cGU+IGRlc3Ryb3lfbG9vcDsKKworICBpZiAobmV3X3NpemUgPiBzdG9yYWdlX3ZpZXcu
Y2FwYWNpdHkpIHsKKyAgICBzaXplX3R5cGUgbmV3X2NhcGFjaXR5ID0gQ29tcHV0ZUNhcGFjaXR5
KHN0b3JhZ2Vfdmlldy5jYXBhY2l0eSwgbmV3X3NpemUpOworICAgIHBvaW50ZXIgbmV3X2RhdGEg
PSBhbGxvY2F0aW9uX3R4LkFsbG9jYXRlKG5ld19jYXBhY2l0eSk7CisgICAgY29uc3RydWN0X2xv
b3AgPSB7bmV3X2RhdGEgKyBzdG9yYWdlX3ZpZXcuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBuZXdfc2l6ZSAtIHN0b3JhZ2Vfdmlldy5zaXplfTsKKyAgICBtb3ZlX2NvbnN0cnVjdF9sb29w
ID0ge25ld19kYXRhLCBzdG9yYWdlX3ZpZXcuc2l6ZX07CisgICAgZGVzdHJveV9sb29wID0ge3N0
b3JhZ2Vfdmlldy5kYXRhLCBzdG9yYWdlX3ZpZXcuc2l6ZX07CisgIH0gZWxzZSBpZiAobmV3X3Np
emUgPiBzdG9yYWdlX3ZpZXcuc2l6ZSkgeworICAgIGNvbnN0cnVjdF9sb29wID0ge3N0b3JhZ2Vf
dmlldy5kYXRhICsgc3RvcmFnZV92aWV3LnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgbmV3
X3NpemUgLSBzdG9yYWdlX3ZpZXcuc2l6ZX07CisgIH0gZWxzZSB7CisgICAgZGVzdHJveV9sb29w
ID0ge3N0b3JhZ2Vfdmlldy5kYXRhICsgbmV3X3NpemUsIHN0b3JhZ2Vfdmlldy5zaXplIC0gbmV3
X3NpemV9OworICB9CisKKyAgY29uc3RydWN0aW9uX3R4LkNvbnN0cnVjdChjb25zdHJ1Y3RfbG9v
cC5kYXRhKCksICZ2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0
X2xvb3Auc2l6ZSgpKTsKKworICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6Q29uc3RydWN0RWxl
bWVudHMoCisgICAgICBHZXRBbGxvY1B0cigpLCBtb3ZlX2NvbnN0cnVjdF9sb29wLmRhdGEoKSwg
Jm1vdmVfdmFsdWVzLAorICAgICAgbW92ZV9jb25zdHJ1Y3RfbG9vcC5zaXplKCkpOworCisgIGlu
bGluZWRfdmVjdG9yX2ludGVybmFsOjpEZXN0cm95RWxlbWVudHMoR2V0QWxsb2NQdHIoKSwgZGVz
dHJveV9sb29wLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXN0cm95X2xvb3Auc2l6ZSgpKTsKKworICBjb25zdHJ1Y3Rpb25fdHguQ29tbWl0KCk7
CisgIGlmIChhbGxvY2F0aW9uX3R4LkRpZEFsbG9jYXRlKCkpIHsKKyAgICBEZWFsbG9jYXRlSWZB
bGxvY2F0ZWQoKTsKKyAgICBBY3F1aXJlQWxsb2NhdGVkRGF0YSgmYWxsb2NhdGlvbl90eCk7Cisg
ICAgU2V0SXNBbGxvY2F0ZWQoKTsKKyAgfQorCisgIFNldFNpemUobmV3X3NpemUpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVmFsdWVBZGFwdGVyPgorYXV0byBTdG9yYWdlPFQsIE4sIEE+OjpJbnNlcnQoY29uc3Rf
aXRlcmF0b3IgcG9zLCBWYWx1ZUFkYXB0ZXIgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90eXBlIGluc2VydF9jb3VudCkgLT4gaXRlcmF0b3IgeworICBTdG9yYWdl
VmlldyBzdG9yYWdlX3ZpZXcgPSBNYWtlU3RvcmFnZVZpZXcoKTsKKworICBzaXplX3R5cGUgaW5z
ZXJ0X2luZGV4ID0KKyAgICAgIHN0ZDo6ZGlzdGFuY2UoY29uc3RfaXRlcmF0b3Ioc3RvcmFnZV92
aWV3LmRhdGEpLCBwb3MpOworICBzaXplX3R5cGUgaW5zZXJ0X2VuZF9pbmRleCA9IGluc2VydF9p
bmRleCArIGluc2VydF9jb3VudDsKKyAgc2l6ZV90eXBlIG5ld19zaXplID0gc3RvcmFnZV92aWV3
LnNpemUgKyBpbnNlcnRfY291bnQ7CisKKyAgaWYgKG5ld19zaXplID4gc3RvcmFnZV92aWV3LmNh
cGFjaXR5KSB7CisgICAgQWxsb2NhdGlvblRyYW5zYWN0aW9uIGFsbG9jYXRpb25fdHgoR2V0QWxs
b2NQdHIoKSk7CisgICAgQ29uc3RydWN0aW9uVHJhbnNhY3Rpb24gY29uc3RydWN0aW9uX3R4KEdl
dEFsbG9jUHRyKCkpOworICAgIENvbnN0cnVjdGlvblRyYW5zYWN0aW9uIG1vdmVfY29uc3RydWNp
dG9uX3R4KEdldEFsbG9jUHRyKCkpOworCisgICAgSXRlcmF0b3JWYWx1ZUFkYXB0ZXI8TW92ZUl0
ZXJhdG9yPiBtb3ZlX3ZhbHVlcygKKyAgICAgICAgTW92ZUl0ZXJhdG9yKHN0b3JhZ2Vfdmlldy5k
YXRhKSk7CisKKyAgICBzaXplX3R5cGUgbmV3X2NhcGFjaXR5ID0gQ29tcHV0ZUNhcGFjaXR5KHN0
b3JhZ2Vfdmlldy5jYXBhY2l0eSwgbmV3X3NpemUpOworICAgIHBvaW50ZXIgbmV3X2RhdGEgPSBh
bGxvY2F0aW9uX3R4LkFsbG9jYXRlKG5ld19jYXBhY2l0eSk7CisKKyAgICBjb25zdHJ1Y3Rpb25f
dHguQ29uc3RydWN0KG5ld19kYXRhICsgaW5zZXJ0X2luZGV4LCAmdmFsdWVzLCBpbnNlcnRfY291
bnQpOworCisgICAgbW92ZV9jb25zdHJ1Y2l0b25fdHguQ29uc3RydWN0KG5ld19kYXRhLCAmbW92
ZV92YWx1ZXMsIGluc2VydF9pbmRleCk7CisKKyAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6
Q29uc3RydWN0RWxlbWVudHMoCisgICAgICAgIEdldEFsbG9jUHRyKCksIG5ld19kYXRhICsgaW5z
ZXJ0X2VuZF9pbmRleCwgJm1vdmVfdmFsdWVzLAorICAgICAgICBzdG9yYWdlX3ZpZXcuc2l6ZSAt
IGluc2VydF9pbmRleCk7CisKKyAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVzdHJveUVs
ZW1lbnRzKEdldEFsbG9jUHRyKCksIHN0b3JhZ2Vfdmlldy5kYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZV92aWV3LnNpemUpOworCisgICAg
Y29uc3RydWN0aW9uX3R4LkNvbW1pdCgpOworICAgIG1vdmVfY29uc3RydWNpdG9uX3R4LkNvbW1p
dCgpOworICAgIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICAgIEFjcXVpcmVBbGxvY2F0ZWRE
YXRhKCZhbGxvY2F0aW9uX3R4KTsKKworICAgIFNldEFsbG9jYXRlZFNpemUobmV3X3NpemUpOwor
ICAgIHJldHVybiBpdGVyYXRvcihuZXdfZGF0YSArIGluc2VydF9pbmRleCk7CisgIH0gZWxzZSB7
CisgICAgc2l6ZV90eXBlIG1vdmVfY29uc3RydWN0aW9uX2Rlc3RpbmF0aW9uX2luZGV4ID0KKyAg
ICAgICAgKHN0ZDo6bWF4KShpbnNlcnRfZW5kX2luZGV4LCBzdG9yYWdlX3ZpZXcuc2l6ZSk7CisK
KyAgICBDb25zdHJ1Y3Rpb25UcmFuc2FjdGlvbiBtb3ZlX2NvbnN0cnVjdGlvbl90eChHZXRBbGxv
Y1B0cigpKTsKKworICAgIEl0ZXJhdG9yVmFsdWVBZGFwdGVyPE1vdmVJdGVyYXRvcj4gbW92ZV9j
b25zdHJ1Y3Rpb25fdmFsdWVzKAorICAgICAgICBNb3ZlSXRlcmF0b3Ioc3RvcmFnZV92aWV3LmRh
dGEgKworICAgICAgICAgICAgICAgICAgICAgKG1vdmVfY29uc3RydWN0aW9uX2Rlc3RpbmF0aW9u
X2luZGV4IC0gaW5zZXJ0X2NvdW50KSkpOworICAgIGFic2w6OlNwYW48dmFsdWVfdHlwZT4gbW92
ZV9jb25zdHJ1Y3Rpb24gPSB7CisgICAgICAgIHN0b3JhZ2Vfdmlldy5kYXRhICsgbW92ZV9jb25z
dHJ1Y3Rpb25fZGVzdGluYXRpb25faW5kZXgsCisgICAgICAgIG5ld19zaXplIC0gbW92ZV9jb25z
dHJ1Y3Rpb25fZGVzdGluYXRpb25faW5kZXh9OworCisgICAgcG9pbnRlciBtb3ZlX2Fzc2lnbm1l
bnRfdmFsdWVzID0gc3RvcmFnZV92aWV3LmRhdGEgKyBpbnNlcnRfaW5kZXg7CisgICAgYWJzbDo6
U3Bhbjx2YWx1ZV90eXBlPiBtb3ZlX2Fzc2lnbm1lbnQgPSB7CisgICAgICAgIHN0b3JhZ2Vfdmll
dy5kYXRhICsgaW5zZXJ0X2VuZF9pbmRleCwKKyAgICAgICAgbW92ZV9jb25zdHJ1Y3Rpb25fZGVz
dGluYXRpb25faW5kZXggLSBpbnNlcnRfZW5kX2luZGV4fTsKKworICAgIGFic2w6OlNwYW48dmFs
dWVfdHlwZT4gaW5zZXJ0X2Fzc2lnbm1lbnQgPSB7bW92ZV9hc3NpZ25tZW50X3ZhbHVlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfY29uc3Ry
dWN0aW9uLnNpemUoKX07CisKKyAgICBhYnNsOjpTcGFuPHZhbHVlX3R5cGU+IGluc2VydF9jb25z
dHJ1Y3Rpb24gPSB7CisgICAgICAgIGluc2VydF9hc3NpZ25tZW50LmRhdGEoKSArIGluc2VydF9h
c3NpZ25tZW50LnNpemUoKSwKKyAgICAgICAgaW5zZXJ0X2NvdW50IC0gaW5zZXJ0X2Fzc2lnbm1l
bnQuc2l6ZSgpfTsKKworICAgIG1vdmVfY29uc3RydWN0aW9uX3R4LkNvbnN0cnVjdChtb3ZlX2Nv
bnN0cnVjdGlvbi5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZt
b3ZlX2NvbnN0cnVjdGlvbl92YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vdmVfY29uc3RydWN0aW9uLnNpemUoKSk7CisKKyAgICBmb3IgKHBvaW50ZXIgZGVzdGlu
YXRpb24gPSBtb3ZlX2Fzc2lnbm1lbnQuZGF0YSgpICsgbW92ZV9hc3NpZ25tZW50LnNpemUoKSwK
KyAgICAgICAgICAgICAgICAgbGFzdF9kZXN0aW5hdGlvbiA9IG1vdmVfYXNzaWdubWVudC5kYXRh
KCksCisgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1vdmVfYXNzaWdubWVudF92YWx1ZXMgKyBt
b3ZlX2Fzc2lnbm1lbnQuc2l6ZSgpOworICAgICAgICAgOykgeworICAgICAgLS1kZXN0aW5hdGlv
bjsKKyAgICAgIC0tc291cmNlOworICAgICAgaWYgKGRlc3RpbmF0aW9uIDwgbGFzdF9kZXN0aW5h
dGlvbikgYnJlYWs7CisgICAgICAqZGVzdGluYXRpb24gPSBzdGQ6Om1vdmUoKnNvdXJjZSk7Cisg
ICAgfQorCisgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkFzc2lnbkVsZW1lbnRzKGluc2Vy
dF9hc3NpZ25tZW50LmRhdGEoKSwgJnZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0X2Fzc2lnbm1lbnQuc2l6ZSgpKTsKKworICAgIGlubGlu
ZWRfdmVjdG9yX2ludGVybmFsOjpDb25zdHJ1Y3RFbGVtZW50cygKKyAgICAgICAgR2V0QWxsb2NQ
dHIoKSwgaW5zZXJ0X2NvbnN0cnVjdGlvbi5kYXRhKCksICZ2YWx1ZXMsCisgICAgICAgIGluc2Vy
dF9jb25zdHJ1Y3Rpb24uc2l6ZSgpKTsKKworICAgIG1vdmVfY29uc3RydWN0aW9uX3R4LkNvbW1p
dCgpOworCisgICAgQWRkU2l6ZShpbnNlcnRfY291bnQpOworICAgIHJldHVybiBpdGVyYXRvcihz
dG9yYWdlX3ZpZXcuZGF0YSArIGluc2VydF9pbmRleCk7CisgIH0KK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgordGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFy
Z3M+CithdXRvIFN0b3JhZ2U8VCwgTiwgQT46OkVtcGxhY2VCYWNrKEFyZ3MmJi4uLiBhcmdzKSAt
PiByZWZlcmVuY2UgeworICBTdG9yYWdlVmlldyBzdG9yYWdlX3ZpZXcgPSBNYWtlU3RvcmFnZVZp
ZXcoKTsKKworICBBbGxvY2F0aW9uVHJhbnNhY3Rpb24gYWxsb2NhdGlvbl90eChHZXRBbGxvY1B0
cigpKTsKKworICBJdGVyYXRvclZhbHVlQWRhcHRlcjxNb3ZlSXRlcmF0b3I+IG1vdmVfdmFsdWVz
KAorICAgICAgTW92ZUl0ZXJhdG9yKHN0b3JhZ2Vfdmlldy5kYXRhKSk7CisKKyAgcG9pbnRlciBj
b25zdHJ1Y3RfZGF0YTsKKworICBpZiAoc3RvcmFnZV92aWV3LnNpemUgPT0gc3RvcmFnZV92aWV3
LmNhcGFjaXR5KSB7CisgICAgc2l6ZV90eXBlIG5ld19jYXBhY2l0eSA9IE5leHRDYXBhY2l0eShz
dG9yYWdlX3ZpZXcuY2FwYWNpdHkpOworICAgIHBvaW50ZXIgbmV3X2RhdGEgPSBhbGxvY2F0aW9u
X3R4LkFsbG9jYXRlKG5ld19jYXBhY2l0eSk7CisKKyAgICBjb25zdHJ1Y3RfZGF0YSA9IG5ld19k
YXRhOworICB9IGVsc2UgeworICAgIGNvbnN0cnVjdF9kYXRhID0gc3RvcmFnZV92aWV3LmRhdGE7
CisgIH0KKworICBwb2ludGVyIGVuZCA9IGNvbnN0cnVjdF9kYXRhICsgc3RvcmFnZV92aWV3LnNp
emU7CisKKyAgQWxsb2NhdG9yVHJhaXRzOjpjb25zdHJ1Y3QoKkdldEFsbG9jUHRyKCksIGVuZCwg
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKworICBpZiAoYWxsb2NhdGlvbl90eC5EaWRB
bGxvY2F0ZSgpKSB7CisgICAgQUJTTF9JTlRFUk5BTF9UUlkgeworICAgICAgaW5saW5lZF92ZWN0
b3JfaW50ZXJuYWw6OkNvbnN0cnVjdEVsZW1lbnRzKAorICAgICAgICAgIEdldEFsbG9jUHRyKCks
IGFsbG9jYXRpb25fdHguR2V0RGF0YSgpLCAmbW92ZV92YWx1ZXMsCisgICAgICAgICAgc3RvcmFn
ZV92aWV3LnNpemUpOworICAgIH0KKyAgICBBQlNMX0lOVEVSTkFMX0NBVENIX0FOWSB7CisgICAg
ICBBbGxvY2F0b3JUcmFpdHM6OmRlc3Ryb3koKkdldEFsbG9jUHRyKCksIGVuZCk7CisgICAgICBB
QlNMX0lOVEVSTkFMX1JFVEhST1c7CisgICAgfQorCisgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJu
YWw6OkRlc3Ryb3lFbGVtZW50cyhHZXRBbGxvY1B0cigpLCBzdG9yYWdlX3ZpZXcuZGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Vfdmlldy5z
aXplKTsKKworICAgIERlYWxsb2NhdGVJZkFsbG9jYXRlZCgpOworICAgIEFjcXVpcmVBbGxvY2F0
ZWREYXRhKCZhbGxvY2F0aW9uX3R4KTsKKyAgICBTZXRJc0FsbG9jYXRlZCgpOworICB9CisKKyAg
QWRkU2l6ZSgxKTsKKyAgcmV0dXJuICplbmQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBz
aXplX3QgTiwgdHlwZW5hbWUgQT4KK2F1dG8gU3RvcmFnZTxULCBOLCBBPjo6RXJhc2UoY29uc3Rf
aXRlcmF0b3IgZnJvbSwgY29uc3RfaXRlcmF0b3IgdG8pCisgICAgLT4gaXRlcmF0b3IgeworICBh
c3NlcnQoZnJvbSAhPSB0byk7CisKKyAgU3RvcmFnZVZpZXcgc3RvcmFnZV92aWV3ID0gTWFrZVN0
b3JhZ2VWaWV3KCk7CisKKyAgc2l6ZV90eXBlIGVyYXNlX3NpemUgPSBzdGQ6OmRpc3RhbmNlKGZy
b20sIHRvKTsKKyAgc2l6ZV90eXBlIGVyYXNlX2luZGV4ID0KKyAgICAgIHN0ZDo6ZGlzdGFuY2Uo
Y29uc3RfaXRlcmF0b3Ioc3RvcmFnZV92aWV3LmRhdGEpLCBmcm9tKTsKKyAgc2l6ZV90eXBlIGVy
YXNlX2VuZF9pbmRleCA9IGVyYXNlX2luZGV4ICsgZXJhc2Vfc2l6ZTsKKworICBJdGVyYXRvclZh
bHVlQWRhcHRlcjxNb3ZlSXRlcmF0b3I+IG1vdmVfdmFsdWVzKAorICAgICAgTW92ZUl0ZXJhdG9y
KHN0b3JhZ2Vfdmlldy5kYXRhICsgZXJhc2VfZW5kX2luZGV4KSk7CisKKyAgaW5saW5lZF92ZWN0
b3JfaW50ZXJuYWw6OkFzc2lnbkVsZW1lbnRzKHN0b3JhZ2Vfdmlldy5kYXRhICsgZXJhc2VfaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW92ZV92YWx1
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlX3Zp
ZXcuc2l6ZSAtIGVyYXNlX2VuZF9pbmRleCk7CisKKyAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6
OkRlc3Ryb3lFbGVtZW50cygKKyAgICAgIEdldEFsbG9jUHRyKCksIHN0b3JhZ2Vfdmlldy5kYXRh
ICsgKHN0b3JhZ2Vfdmlldy5zaXplIC0gZXJhc2Vfc2l6ZSksCisgICAgICBlcmFzZV9zaXplKTsK
KworICBTdWJ0cmFjdFNpemUoZXJhc2Vfc2l6ZSk7CisgIHJldHVybiBpdGVyYXRvcihzdG9yYWdl
X3ZpZXcuZGF0YSArIGVyYXNlX2luZGV4KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNp
emVfdCBOLCB0eXBlbmFtZSBBPgorYXV0byBTdG9yYWdlPFQsIE4sIEE+OjpSZXNlcnZlKHNpemVf
dHlwZSByZXF1ZXN0ZWRfY2FwYWNpdHkpIC0+IHZvaWQgeworICBTdG9yYWdlVmlldyBzdG9yYWdl
X3ZpZXcgPSBNYWtlU3RvcmFnZVZpZXcoKTsKKworICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHJl
cXVlc3RlZF9jYXBhY2l0eSA8PSBzdG9yYWdlX3ZpZXcuY2FwYWNpdHkpKSByZXR1cm47CisKKyAg
QWxsb2NhdGlvblRyYW5zYWN0aW9uIGFsbG9jYXRpb25fdHgoR2V0QWxsb2NQdHIoKSk7CisKKyAg
SXRlcmF0b3JWYWx1ZUFkYXB0ZXI8TW92ZUl0ZXJhdG9yPiBtb3ZlX3ZhbHVlcygKKyAgICAgIE1v
dmVJdGVyYXRvcihzdG9yYWdlX3ZpZXcuZGF0YSkpOworCisgIHNpemVfdHlwZSBuZXdfY2FwYWNp
dHkgPQorICAgICAgQ29tcHV0ZUNhcGFjaXR5KHN0b3JhZ2Vfdmlldy5jYXBhY2l0eSwgcmVxdWVz
dGVkX2NhcGFjaXR5KTsKKyAgcG9pbnRlciBuZXdfZGF0YSA9IGFsbG9jYXRpb25fdHguQWxsb2Nh
dGUobmV3X2NhcGFjaXR5KTsKKworICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6Q29uc3RydWN0
RWxlbWVudHMoR2V0QWxsb2NQdHIoKSwgbmV3X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmbW92ZV92YWx1ZXMsIHN0b3JhZ2Vfdmlldy5zaXplKTsK
KworICBpbmxpbmVkX3ZlY3Rvcl9pbnRlcm5hbDo6RGVzdHJveUVsZW1lbnRzKEdldEFsbG9jUHRy
KCksIHN0b3JhZ2Vfdmlldy5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0b3JhZ2Vfdmlldy5zaXplKTsKKworICBEZWFsbG9jYXRlSWZBbGxvY2F0ZWQo
KTsKKyAgQWNxdWlyZUFsbG9jYXRlZERhdGEoJmFsbG9jYXRpb25fdHgpOworICBTZXRJc0FsbG9j
YXRlZCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIHR5cGVuYW1lIEE+
CithdXRvIFN0b3JhZ2U8VCwgTiwgQT46OlNocmlua1RvRml0KCkgLT4gdm9pZCB7CisgIC8vIE1h
eSBvbmx5IGJlIGNhbGxlZCBvbiBhbGxvY2F0ZWQgaW5zdGFuY2VzIQorICBhc3NlcnQoR2V0SXNB
bGxvY2F0ZWQoKSk7CisKKyAgU3RvcmFnZVZpZXcgc3RvcmFnZV92aWV3e0dldEFsbG9jYXRlZERh
dGEoKSwgR2V0U2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0QWxsb2NhdGVk
Q2FwYWNpdHkoKX07CisKKyAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShzdG9yYWdlX3ZpZXcuc2l6
ZSA9PSBzdG9yYWdlX3ZpZXcuY2FwYWNpdHkpKSByZXR1cm47CisKKyAgQWxsb2NhdGlvblRyYW5z
YWN0aW9uIGFsbG9jYXRpb25fdHgoR2V0QWxsb2NQdHIoKSk7CisKKyAgSXRlcmF0b3JWYWx1ZUFk
YXB0ZXI8TW92ZUl0ZXJhdG9yPiBtb3ZlX3ZhbHVlcygKKyAgICAgIE1vdmVJdGVyYXRvcihzdG9y
YWdlX3ZpZXcuZGF0YSkpOworCisgIHBvaW50ZXIgY29uc3RydWN0X2RhdGE7CisKKyAgaWYgKHN0
b3JhZ2Vfdmlldy5zaXplID4gR2V0SW5saW5lZENhcGFjaXR5KCkpIHsKKyAgICBzaXplX3R5cGUg
bmV3X2NhcGFjaXR5ID0gc3RvcmFnZV92aWV3LnNpemU7CisgICAgcG9pbnRlciBuZXdfZGF0YSA9
IGFsbG9jYXRpb25fdHguQWxsb2NhdGUobmV3X2NhcGFjaXR5KTsKKworICAgIGNvbnN0cnVjdF9k
YXRhID0gbmV3X2RhdGE7CisgIH0gZWxzZSB7CisgICAgY29uc3RydWN0X2RhdGEgPSBHZXRJbmxp
bmVkRGF0YSgpOworICB9CisKKyAgQUJTTF9JTlRFUk5BTF9UUlkgeworICAgIGlubGluZWRfdmVj
dG9yX2ludGVybmFsOjpDb25zdHJ1Y3RFbGVtZW50cyhHZXRBbGxvY1B0cigpLCBjb25zdHJ1Y3Rf
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1v
dmVfdmFsdWVzLCBzdG9yYWdlX3ZpZXcuc2l6ZSk7CisgIH0KKyAgQUJTTF9JTlRFUk5BTF9DQVRD
SF9BTlkgeworICAgIFNldEFsbG9jYXRlZERhdGEoc3RvcmFnZV92aWV3LmRhdGEsIHN0b3JhZ2Vf
dmlldy5jYXBhY2l0eSk7CisgICAgQUJTTF9JTlRFUk5BTF9SRVRIUk9XOworICB9CisKKyAgaW5s
aW5lZF92ZWN0b3JfaW50ZXJuYWw6OkRlc3Ryb3lFbGVtZW50cyhHZXRBbGxvY1B0cigpLCBzdG9y
YWdlX3ZpZXcuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdG9yYWdlX3ZpZXcuc2l6ZSk7CisKKyAgQWxsb2NhdG9yVHJhaXRzOjpkZWFsbG9jYXRlKCpH
ZXRBbGxvY1B0cigpLCBzdG9yYWdlX3ZpZXcuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0b3JhZ2Vfdmlldy5jYXBhY2l0eSk7CisKKyAgaWYgKGFsbG9jYXRpb25fdHguRGlk
QWxsb2NhdGUoKSkgeworICAgIEFjcXVpcmVBbGxvY2F0ZWREYXRhKCZhbGxvY2F0aW9uX3R4KTsK
KyAgfSBlbHNlIHsKKyAgICBVbnNldElzQWxsb2NhdGVkKCk7CisgIH0KK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHNpemVfdCBOLCB0eXBlbmFtZSBBPgorYXV0byBTdG9yYWdlPFQsIE4sIEE+
OjpTd2FwKFN0b3JhZ2UqIG90aGVyX3N0b3JhZ2VfcHRyKSAtPiB2b2lkIHsKKyAgdXNpbmcgc3Rk
Ojpzd2FwOworICBhc3NlcnQodGhpcyAhPSBvdGhlcl9zdG9yYWdlX3B0cik7CisKKyAgaWYgKEdl
dElzQWxsb2NhdGVkKCkgJiYgb3RoZXJfc3RvcmFnZV9wdHItPkdldElzQWxsb2NhdGVkKCkpIHsK
KyAgICBzd2FwKGRhdGFfLmFsbG9jYXRlZCwgb3RoZXJfc3RvcmFnZV9wdHItPmRhdGFfLmFsbG9j
YXRlZCk7CisgIH0gZWxzZSBpZiAoIUdldElzQWxsb2NhdGVkKCkgJiYgIW90aGVyX3N0b3JhZ2Vf
cHRyLT5HZXRJc0FsbG9jYXRlZCgpKSB7CisgICAgU3RvcmFnZSogc21hbGxfcHRyID0gdGhpczsK
KyAgICBTdG9yYWdlKiBsYXJnZV9wdHIgPSBvdGhlcl9zdG9yYWdlX3B0cjsKKyAgICBpZiAoc21h
bGxfcHRyLT5HZXRTaXplKCkgPiBsYXJnZV9wdHItPkdldFNpemUoKSkgc3dhcChzbWFsbF9wdHIs
IGxhcmdlX3B0cik7CisKKyAgICBmb3IgKHNpemVfdHlwZSBpID0gMDsgaSA8IHNtYWxsX3B0ci0+
R2V0U2l6ZSgpOyArK2kpIHsKKyAgICAgIHN3YXAoc21hbGxfcHRyLT5HZXRJbmxpbmVkRGF0YSgp
W2ldLCBsYXJnZV9wdHItPkdldElubGluZWREYXRhKClbaV0pOworICAgIH0KKworICAgIEl0ZXJh
dG9yVmFsdWVBZGFwdGVyPE1vdmVJdGVyYXRvcj4gbW92ZV92YWx1ZXMoCisgICAgICAgIE1vdmVJ
dGVyYXRvcihsYXJnZV9wdHItPkdldElubGluZWREYXRhKCkgKyBzbWFsbF9wdHItPkdldFNpemUo
KSkpOworCisgICAgaW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkNvbnN0cnVjdEVsZW1lbnRzKAor
ICAgICAgICBsYXJnZV9wdHItPkdldEFsbG9jUHRyKCksCisgICAgICAgIHNtYWxsX3B0ci0+R2V0
SW5saW5lZERhdGEoKSArIHNtYWxsX3B0ci0+R2V0U2l6ZSgpLCAmbW92ZV92YWx1ZXMsCisgICAg
ICAgIGxhcmdlX3B0ci0+R2V0U2l6ZSgpIC0gc21hbGxfcHRyLT5HZXRTaXplKCkpOworCisgICAg
aW5saW5lZF92ZWN0b3JfaW50ZXJuYWw6OkRlc3Ryb3lFbGVtZW50cygKKyAgICAgICAgbGFyZ2Vf
cHRyLT5HZXRBbGxvY1B0cigpLAorICAgICAgICBsYXJnZV9wdHItPkdldElubGluZWREYXRhKCkg
KyBzbWFsbF9wdHItPkdldFNpemUoKSwKKyAgICAgICAgbGFyZ2VfcHRyLT5HZXRTaXplKCkgLSBz
bWFsbF9wdHItPkdldFNpemUoKSk7CisgIH0gZWxzZSB7CisgICAgU3RvcmFnZSogYWxsb2NhdGVk
X3B0ciA9IHRoaXM7CisgICAgU3RvcmFnZSogaW5saW5lZF9wdHIgPSBvdGhlcl9zdG9yYWdlX3B0
cjsKKyAgICBpZiAoIWFsbG9jYXRlZF9wdHItPkdldElzQWxsb2NhdGVkKCkpIHN3YXAoYWxsb2Nh
dGVkX3B0ciwgaW5saW5lZF9wdHIpOworCisgICAgU3RvcmFnZVZpZXcgYWxsb2NhdGVkX3N0b3Jh
Z2Vfdmlld3thbGxvY2F0ZWRfcHRyLT5HZXRBbGxvY2F0ZWREYXRhKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZWRfcHRyLT5HZXRTaXplKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZWRfcHRyLT5HZXRBbGxv
Y2F0ZWRDYXBhY2l0eSgpfTsKKworICAgIEl0ZXJhdG9yVmFsdWVBZGFwdGVyPE1vdmVJdGVyYXRv
cj4gbW92ZV92YWx1ZXMoCisgICAgICAgIE1vdmVJdGVyYXRvcihpbmxpbmVkX3B0ci0+R2V0SW5s
aW5lZERhdGEoKSkpOworCisgICAgQUJTTF9JTlRFUk5BTF9UUlkgeworICAgICAgaW5saW5lZF92
ZWN0b3JfaW50ZXJuYWw6OkNvbnN0cnVjdEVsZW1lbnRzKAorICAgICAgICAgIGlubGluZWRfcHRy
LT5HZXRBbGxvY1B0cigpLCBhbGxvY2F0ZWRfcHRyLT5HZXRJbmxpbmVkRGF0YSgpLAorICAgICAg
ICAgICZtb3ZlX3ZhbHVlcywgaW5saW5lZF9wdHItPkdldFNpemUoKSk7CisgICAgfQorICAgIEFC
U0xfSU5URVJOQUxfQ0FUQ0hfQU5ZIHsKKyAgICAgIGFsbG9jYXRlZF9wdHItPlNldEFsbG9jYXRl
ZERhdGEoYWxsb2NhdGVkX3N0b3JhZ2Vfdmlldy5kYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbGxvY2F0ZWRfc3RvcmFnZV92aWV3LmNhcGFjaXR5KTsKKyAgICAg
IEFCU0xfSU5URVJOQUxfUkVUSFJPVzsKKyAgICB9CisKKyAgICBpbmxpbmVkX3ZlY3Rvcl9pbnRl
cm5hbDo6RGVzdHJveUVsZW1lbnRzKGlubGluZWRfcHRyLT5HZXRBbGxvY1B0cigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lZF9wdHItPkdldElu
bGluZWREYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmxpbmVkX3B0ci0+R2V0U2l6ZSgpKTsKKworICAgIGlubGluZWRfcHRyLT5TZXRBbGxvY2F0
ZWREYXRhKGFsbG9jYXRlZF9zdG9yYWdlX3ZpZXcuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbGxvY2F0ZWRfc3RvcmFnZV92aWV3LmNhcGFjaXR5KTsKKyAgfQorCisg
IHN3YXAoR2V0U2l6ZUFuZElzQWxsb2NhdGVkKCksIG90aGVyX3N0b3JhZ2VfcHRyLT5HZXRTaXpl
QW5kSXNBbGxvY2F0ZWQoKSk7CisgIHN3YXAoKkdldEFsbG9jUHRyKCksICpvdGhlcl9zdG9yYWdl
X3B0ci0+R2V0QWxsb2NQdHIoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbmxpbmVkX3ZlY3Rv
cl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRB
SU5FUl9JTlRFUk5BTF9JTkxJTkVEX1ZFQ1RPUl9JTlRFUk5BTF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L2xheW91dC5oCmluZGV4IDY3NmM3ZDY3ZWU2OGRjZDU2NmUxNzA5NGQ0OTU4ZTM3NDc1NDdkOTku
LmJiZGRlNTA3OTZlYTFkYjY4NmNlM2Q3ZGZkNWFhYzM3MDdkNTVlNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvbGF5b3V0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTIzMiwxMyArMjMyLDE3IEBAIHN0cnVjdCBTaXplT2YgOiBOb3RBbGlnbmVkPFQ+LCBzdGQ6
OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc2l6ZW9mKFQpPiB7fTsKIHRlbXBsYXRlIDxjbGFz
cyBULCBzaXplX3QgTj4KIHN0cnVjdCBTaXplT2Y8QWxpZ25lZDxULCBOPj4gOiBzdGQ6OmludGVn
cmFsX2NvbnN0YW50PHNpemVfdCwgc2l6ZW9mKFQpPiB7fTsKIAorLy8gTm90ZTogd29ya2Fyb3Vu
ZCBmb3IgaHR0cHM6Ly9nY2MuZ251Lm9yZy9QUjg4MTE1CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0
cnVjdCBBbGlnbk9mIDogTm90QWxpZ25lZDxUPiwgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxzaXpl
X3QsIGFsaWdub2YoVCk+IHt9Oworc3RydWN0IEFsaWduT2YgOiBOb3RBbGlnbmVkPFQ+IHsKKyAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgdmFsdWUgPSBhbGlnbm9mKFQpOworfTsKIAogdGVtcGxh
dGUgPGNsYXNzIFQsIHNpemVfdCBOPgotc3RydWN0IEFsaWduT2Y8QWxpZ25lZDxULCBOPj4gOiBz
dGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgTj4geworc3RydWN0IEFsaWduT2Y8QWxpZ25l
ZDxULCBOPj4gewogICBzdGF0aWNfYXNzZXJ0KE4gJSBhbGlnbm9mKFQpID09IDAsCiAgICAgICAg
ICAgICAgICAgIkN1c3RvbSBhbGlnbm1lbnQgY2FuJ3QgYmUgbG93ZXIgdGhhbiB0aGUgdHlwZSdz
IGFsaWdubWVudCIpOworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCB2YWx1ZSA9IE47CiB9Owog
CiAvLyBEb2VzIGBUcy4uLmAgY29udGFpbiBgVGA/CkBAIC0yNDksOCArMjUzLDEwIEBAIHRlbXBs
YXRlIDxjbGFzcyBGcm9tLCBjbGFzcyBUbz4KIHVzaW5nIENvcHlDb25zdCA9CiAgICAgdHlwZW5h
bWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnN0PEZyb20+Ojp2YWx1ZSwgY29uc3QgVG8s
IFRvPjo6dHlwZTsKIAorLy8gTm90ZTogV2UncmUgbm90IHF1YWxpZnlpbmcgdGhpcyB3aXRoIGFi
c2w6OiBiZWNhdXNlIGl0IGRvZXNuJ3QgY29tcGlsZSB1bmRlcgorLy8gTVNWQy4KIHRlbXBsYXRl
IDxjbGFzcyBUPgotdXNpbmcgU2xpY2VUeXBlID0gYWJzbDo6U3BhbjxUPjsKK3VzaW5nIFNsaWNl
VHlwZSA9IFNwYW48VD47CiAKIC8vIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIG5vIHR5cGVzLiBJ
dCBwcmV2ZW50cyBmdW5jdGlvbnMgZGVmaW5lZCBpbiBpdCBmcm9tCiAvLyBiZWluZyBmb3VuZCBi
eSBBREwuCkBAIC0yOTAsNyArMjk2LDcgQEAgc3RkOjpzdHJpbmcgVHlwZU5hbWUoKSB7CiAjaWZk
ZWYgQUJTTF9JTlRFUk5BTF9IQVNfQ1hBX0RFTUFOR0xFCiAgIGRlbWFuZ2xlZCA9IGFiaTo6X19j
eGFfZGVtYW5nbGUodHlwZWlkKFQpLm5hbWUoKSwgbnVsbHB0ciwgbnVsbHB0ciwgJnN0YXR1cyk7
CiAjZW5kaWYKLSAgaWYgKHN0YXR1cyA9PSAwICYmIGRlbWFuZ2xlZCAhPSBudWxscHRyKSB7ICAv
LyBEZW1hbmdsaW5nIHN1Y2NlZWVkZWQuCisgIGlmIChzdGF0dXMgPT0gMCAmJiBkZW1hbmdsZWQg
IT0gbnVsbHB0cikgeyAgLy8gRGVtYW5nbGluZyBzdWNjZWVkZWQuCiAgICAgYWJzbDo6U3RyQXBw
ZW5kKCZvdXQsICI8IiwgZGVtYW5nbGVkLCAiPiIpOwogICAgIGZyZWUoZGVtYW5nbGVkKTsKICAg
fSBlbHNlIHsKQEAgLTM5Niw3ICs0MDIsNyBAQCBjbGFzcyBMYXlvdXRJbXBsPHN0ZDo6dHVwbGU8
RWxlbWVudHMuLi4+LCBhYnNsOjppbmRleF9zZXF1ZW5jZTxTaXplU2VxLi4uPiwKICAgICBzdGF0
aWNfYXNzZXJ0KE4gPCBOdW1PZmZzZXRzLCAiSW5kZXggb3V0IG9mIGJvdW5kcyIpOwogICAgIHJl
dHVybiBhZGxfYmFycmllcjo6QWxpZ24oCiAgICAgICAgIE9mZnNldDxOIC0gMT4oKSArIFNpemVP
ZjxFbGVtZW50VHlwZTxOIC0gMT4+KCkgKiBzaXplX1tOIC0gMV0sCi0gICAgICAgIEVsZW1lbnRB
bGlnbm1lbnQ8Tj4oKSk7CisgICAgICAgIEVsZW1lbnRBbGlnbm1lbnQ8Tj46OnZhbHVlKTsKICAg
fQogCiAgIC8vIE9mZnNldCBpbiBieXRlcyBvZiB0aGUgYXJyYXkgd2l0aCB0aGUgc3BlY2lmaWVk
IGVsZW1lbnQgdHlwZS4gVGhlcmUgbXVzdApAQCAtNDQ1LDcgKzQ1MSw3IEBAIGNsYXNzIExheW91
dEltcGw8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4sIGFic2w6OmluZGV4X3NlcXVlbmNlPFNpemVT
ZXEuLi4+LAogICAgIHJldHVybiBTaXplPEVsZW1lbnRJbmRleDxUPigpPigpOwogICB9CiAKLSAg
ICAvLyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIGFsbCBhcnJheXMgZm9yIHdoaWNoIHRoZXkg
YXJlIGtub3duLgorICAvLyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIGFsbCBhcnJheXMgZm9y
IHdoaWNoIHRoZXkgYXJlIGtub3duLgogICBjb25zdGV4cHIgc3RkOjphcnJheTxzaXplX3QsIE51
bVNpemVzPiBTaXplcygpIGNvbnN0IHsKICAgICByZXR1cm4ge3tTaXplPFNpemVTZXE+KCkuLi59
fTsKICAgfQpAQCAtNjEwLDcgKzYxNiw3IEBAIGNsYXNzIExheW91dEltcGw8c3RkOjp0dXBsZTxF
bGVtZW50cy4uLj4sIGFic2w6OmluZGV4X3NlcXVlbmNlPFNpemVTZXEuLi4+LAogI2lmZGVmIEFE
RFJFU1NfU0FOSVRJWkVSCiAgICAgUG9pc29uUGFkZGluZzxDaGFyLCBOIC0gMT4ocCk7CiAgICAg
Ly8gVGhlIGBpZmAgaXMgYW4gb3B0aW1pemF0aW9uLiBJdCBkb2Vzbid0IGFmZmVjdCB0aGUgb2Jz
ZXJ2YWJsZSBiZWhhdmlvdXIuCi0gICAgaWYgKEVsZW1lbnRBbGlnbm1lbnQ8TiAtIDE+KCkgJSBF
bGVtZW50QWxpZ25tZW50PE4+KCkpIHsKKyAgICBpZiAoRWxlbWVudEFsaWdubWVudDxOIC0gMT46
OnZhbHVlICUgRWxlbWVudEFsaWdubWVudDxOPjo6dmFsdWUpIHsKICAgICAgIHNpemVfdCBzdGFy
dCA9CiAgICAgICAgICAgT2Zmc2V0PE4gLSAxPigpICsgU2l6ZU9mPEVsZW1lbnRUeXBlPE4gLSAx
Pj4oKSAqIHNpemVfW04gLSAxXTsKICAgICAgIEFTQU5fUE9JU09OX01FTU9SWV9SRUdJT04ocCAr
IHN0YXJ0LCBPZmZzZXQ8Tj4oKSAtIHN0YXJ0KTsKQEAgLTYzNyw3ICs2NDMsOCBAQCBjbGFzcyBM
YXlvdXRJbXBsPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+LCBhYnNsOjppbmRleF9zZXF1ZW5jZTxT
aXplU2VxLi4uPiwKICAgc3RkOjpzdHJpbmcgRGVidWdTdHJpbmcoKSBjb25zdCB7CiAgICAgY29u
c3QgYXV0byBvZmZzZXRzID0gT2Zmc2V0cygpOwogICAgIGNvbnN0IHNpemVfdCBzaXplc1tdID0g
e1NpemVPZjxFbGVtZW50VHlwZTxPZmZzZXRTZXE+PigpLi4ufTsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyB0eXBlc1tdID0ge2FkbF9iYXJyaWVyOjpUeXBlTmFtZTxFbGVtZW50VHlwZTxPZmZzZXRT
ZXE+PigpLi4ufTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB0eXBlc1tdID0geworICAgICAgICBh
ZGxfYmFycmllcjo6VHlwZU5hbWU8RWxlbWVudFR5cGU8T2Zmc2V0U2VxPj4oKS4uLn07CiAgICAg
c3RkOjpzdHJpbmcgcmVzID0gYWJzbDo6U3RyQ2F0KCJAMCIsIHR5cGVzWzBdLCAiKCIsIHNpemVz
WzBdLCAiKSIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IE51bU9mZnNldHMgLSAxOyAr
K2kpIHsKICAgICAgIGFic2w6OlN0ckFwcGVuZCgmcmVzLCAiWyIsIHNpemVfW2ldLCAiXTsgQCIs
IG9mZnNldHNbaSArIDFdLCB0eXBlc1tpICsgMV0sCkBAIC02OTAsNyArNjk3LDcgQEAgY2xhc3Mg
TGF5b3V0IDogcHVibGljIGludGVybmFsX2xheW91dDo6TGF5b3V0VHlwZTxzaXplb2YuLi4oVHMp
LCBUcy4uLj4gewogICAvLwogICAvLyBJdCdzIGFsbG93ZWQgdG8gcGFzcyBmZXdlciBhcnJheSBz
aXplcyB0aGFuIHRoZSBudW1iZXIgb2YgYXJyYXlzLiBFLmcuLAogICAvLyBpZiBhbGwgeW91IG5l
ZWQgaXMgdG8gdGhlIG9mZnNldCBvZiB0aGUgc2Vjb25kIGFycmF5LCB5b3Ugb25seSBuZWVkIHRv
Ci0gIC8vIHBhc3Mgb25lIGFyZ3VtZW50IC0tIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhl
IGZpcnN0IGFycmF5cy4KKyAgLy8gcGFzcyBvbmUgYXJndW1lbnQgLS0gdGhlIG51bWJlciBvZiBl
bGVtZW50cyBpbiB0aGUgZmlyc3QgYXJyYXkuCiAgIC8vCiAgIC8vICAgLy8gaW50WzNdIGZvbGxv
d2VkIGJ5IDQgYnl0ZXMgb2YgcGFkZGluZyBhbmQgYW4gdW5rbm93biBudW1iZXIgb2YKICAgLy8g
ICAvLyBkb3VibGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91
dF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dF90ZXN0LmNjCmluZGV4
IGYzNTE1N2EzYmQ4NTIxOTg4Njk0NmZkMDYyNjkxYzU3MDUzYjJlZGUuLjMzYjcyYmQzNzJlMzQ1
ZTdlNjRiMTFlZDFmZmE3NWU0MTMyODVlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9sYXlvdXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbGF5
b3V0X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTQ1LDcgKzQ1LDI1IEBAIEV4cGVjdGVkIFR5cGUoQWN0dWFsIHZhbCkgewogICByZXR1cm4gdmFs
OwogfQogCi11c2luZyBJbnQxMjggPSBpbnQ2NF90WzJdOworLy8gSGVscGVyIGNsYXNzZXMgdG8g
dGVzdCBkaWZmZXJlbnQgc2l6ZSBhbmQgYWxpZ25tZW50cy4KK3N0cnVjdCBhbGlnbmFzKDgpIElu
dDEyOCB7CisgIHVpbnQ2NF90IGEsIGI7CisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oSW50MTI4
IGxocywgSW50MTI4IHJocykgeworICAgIHJldHVybiBzdGQ6OnRpZShsaHMuYSwgbGhzLmIpID09
IHN0ZDo6dGllKHJocy5hLCByaHMuYik7CisgIH0KKworICBzdGF0aWMgc3RkOjpzdHJpbmcgTmFt
ZSgpIHsKKyAgICByZXR1cm4gaW50ZXJuYWxfbGF5b3V0OjphZGxfYmFycmllcjo6VHlwZU5hbWU8
SW50MTI4PigpOworICB9Cit9OworCisvLyBpbnQ2NF90IGlzICpub3QqIDgtYnl0ZSBhbGlnbmVk
IG9uIGFsbCBwbGF0Zm9ybXMhCitzdHJ1Y3QgYWxpZ25hcyg4KSBJbnQ2NCB7CisgIGludDY0X3Qg
YTsKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShJbnQ2NCBsaHMsIEludDY0IHJocykgeworICAg
IHJldHVybiBsaHMuYSA9PSByaHMuYTsKKyAgfQorfTsKIAogLy8gUHJvcGVydGllcyBvZiB0eXBl
cyB0aGF0IHRoaXMgdGVzdCByZWxpZXMgb24uCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQ4X3Qp
ID09IDEsICIiKTsKQEAgLTU0LDYgKzcyLDggQEAgc3RhdGljX2Fzc2VydChzaXplb2YoaW50MTZf
dCkgPT0gMiwgIiIpOwogc3RhdGljX2Fzc2VydChhbGlnbm9mKGludDE2X3QpID09IDIsICIiKTsK
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKGludDMyX3QpID09IDQsICIiKTsKIHN0YXRpY19hc3NlcnQo
YWxpZ25vZihpbnQzMl90KSA9PSA0LCAiIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihJbnQ2NCkg
PT0gOCwgIiIpOworc3RhdGljX2Fzc2VydChhbGlnbm9mKEludDY0KSA9PSA4LCAiIik7CiBzdGF0
aWNfYXNzZXJ0KHNpemVvZihJbnQxMjgpID09IDE2LCAiIik7CiBzdGF0aWNfYXNzZXJ0KGFsaWdu
b2YoSW50MTI4KSA9PSA4LCAiIik7CiAKQEAgLTEyNzEsMTQgKzEyOTEsMTQgQEAgVEVTVChMYXlv
dXQsIE92ZXJBbGlnbmVkKSB7CiBURVNUKExheW91dCwgQWxpZ25tZW50KSB7CiAgIHN0YXRpY19h
c3NlcnQoTGF5b3V0PGludDhfdD46OkFsaWdubWVudCgpID09IDEsICIiKTsKICAgc3RhdGljX2Fz
c2VydChMYXlvdXQ8aW50MzJfdD46OkFsaWdubWVudCgpID09IDQsICIiKTsKLSAgc3RhdGljX2Fz
c2VydChMYXlvdXQ8aW50NjRfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsKKyAgc3RhdGljX2Fz
c2VydChMYXlvdXQ8SW50NjQ+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7CiAgIHN0YXRpY19hc3Nl
cnQoTGF5b3V0PEFsaWduZWQ8aW50OF90LCA2ND4+OjpBbGlnbm1lbnQoKSA9PSA2NCwgIiIpOwot
ICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQ4X3QsIGludDMyX3QsIGludDY0X3Q+OjpBbGlnbm1l
bnQoKSA9PSA4LCAiIik7Ci0gIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDhfdCwgaW50NjRfdCwg
aW50MzJfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsKLSAgc3RhdGljX2Fzc2VydChMYXlvdXQ8
aW50MzJfdCwgaW50OF90LCBpbnQ2NF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOwotICBzdGF0
aWNfYXNzZXJ0KExheW91dDxpbnQzMl90LCBpbnQ2NF90LCBpbnQ4X3Q+OjpBbGlnbm1lbnQoKSA9
PSA4LCAiIik7Ci0gIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDY0X3QsIGludDhfdCwgaW50MzJf
dD46OkFsaWdubWVudCgpID09IDgsICIiKTsKLSAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50NjRf
dCwgaW50MzJfdCwgaW50OF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNz
ZXJ0KExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDY0Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIp
OworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQ4X3QsIEludDY0LCBpbnQzMl90Pjo6QWxpZ25t
ZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQzMl90LCBpbnQ4X3Qs
IEludDY0Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxp
bnQzMl90LCBJbnQ2NCwgaW50OF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNf
YXNzZXJ0KExheW91dDxJbnQ2NCwgaW50OF90LCBpbnQzMl90Pjo6QWxpZ25tZW50KCkgPT0gOCwg
IiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxJbnQ2NCwgaW50MzJfdCwgaW50OF90Pjo6QWxp
Z25tZW50KCkgPT0gOCwgIiIpOwogfQogCiBURVNUKExheW91dCwgQ29uc3RleHByUGFydGlhbCkg
ewpAQCAtMTMxMyw3ICsxMzMzLDcgQEAgdm9pZCBFeHBlY3RQb2lzb25lZChjb25zdCB1bnNpZ25l
ZCBjaGFyICgmYnVmKVtOXSwKIH0KIAogVEVTVChMYXlvdXQsIFBvaXNvblBhZGRpbmcpIHsKLSAg
dXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDY0X3QsIGludDMyX3QsIEludDEyOD47CisgIHVz
aW5nIEwgPSBMYXlvdXQ8aW50OF90LCBJbnQ2NCwgaW50MzJfdCwgSW50MTI4PjsKIAogICBjb25z
dGV4cHIgc2l6ZV90IG4gPSBMOjpQYXJ0aWFsKDEsIDIsIDMsIDQpLkFsbG9jU2l6ZSgpOwogICB7
CkBAIC0xMzYxLDEyICsxMzgxLDYgQEAgVEVTVChMYXlvdXQsIFBvaXNvblBhZGRpbmcpIHsKIH0K
IAogVEVTVChMYXlvdXQsIERlYnVnU3RyaW5nKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGludDY0
X3R5cGUgPQotI2lmZGVmIF9NU0NfVkVSCi0gICJfX2ludDY0IjsKLSNlbHNlICAgLy8gX01TQ19W
RVIKLSAgc3RkOjppc19zYW1lPGludDY0X3QsIGxvbmcgbG9uZz46OnZhbHVlID8gImxvbmcgbG9u
ZyIgOiAibG9uZyI7ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gX01TQ19WRVIKICAgewogICAgIGNv
bnN0ZXhwciBhdXRvIHggPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBpbnQ4X3QsIEludDEyOD46
OlBhcnRpYWwoKTsKICAgICBFWFBFQ1RfRVEoIkAwPHNpZ25lZCBjaGFyPigxKSIsIHguRGVidWdT
dHJpbmcoKSk7CkBAIC0xMzg0LDI0ICsxMzk4LDI0IEBAIFRFU1QoTGF5b3V0LCBEZWJ1Z1N0cmlu
ZykgewogICAgIGNvbnN0ZXhwciBhdXRvIHggPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBpbnQ4
X3QsIEludDEyOD46OlBhcnRpYWwoMSwgMiwgMyk7CiAgICAgRVhQRUNUX0VRKAogICAgICAgICAi
QDA8c2lnbmVkIGNoYXI+KDEpWzFdOyBANDxpbnQ+KDQpWzJdOyBAMTI8c2lnbmVkIGNoYXI+KDEp
WzNdOyAiCi0gICAgICAgICJAMTY8IiArCi0gICAgICAgICAgICBpbnQ2NF90eXBlICsgIiBbMl0+
KDE2KSIsCisgICAgICAgICJAMTYiICsKKyAgICAgICAgICAgIEludDEyODo6TmFtZSgpICsgIigx
NikiLAogICAgICAgICB4LkRlYnVnU3RyaW5nKCkpOwogICB9CiAgIHsKICAgICBjb25zdGV4cHIg
YXV0byB4ID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgaW50OF90LCBJbnQxMjg+OjpQYXJ0aWFs
KDEsIDIsIDMsIDQpOwogICAgIEVYUEVDVF9FUSgKICAgICAgICAgIkAwPHNpZ25lZCBjaGFyPigx
KVsxXTsgQDQ8aW50Pig0KVsyXTsgQDEyPHNpZ25lZCBjaGFyPigxKVszXTsgIgotICAgICAgICAi
QDE2PCIgKwotICAgICAgICAgICAgaW50NjRfdHlwZSArICIgWzJdPigxNilbNF0iLAorICAgICAg
ICAiQDE2IiArCisgICAgICAgICAgICBJbnQxMjg6Ok5hbWUoKSArICIoMTYpWzRdIiwKICAgICAg
ICAgeC5EZWJ1Z1N0cmluZygpKTsKICAgfQogICB7CiAgICAgY29uc3RleHByIExheW91dDxpbnQ4
X3QsIGludDMyX3QsIGludDhfdCwgSW50MTI4PiB4KDEsIDIsIDMsIDQpOwogICAgIEVYUEVDVF9F
USgKICAgICAgICAgIkAwPHNpZ25lZCBjaGFyPigxKVsxXTsgQDQ8aW50Pig0KVsyXTsgQDEyPHNp
Z25lZCBjaGFyPigxKVszXTsgIgotICAgICAgICAiQDE2PCIgKwotICAgICAgICAgICAgaW50NjRf
dHlwZSArICIgWzJdPigxNilbNF0iLAorICAgICAgICAiQDE2IiArCisgICAgICAgICAgICBJbnQx
Mjg6Ok5hbWUoKSArICIoMTYpWzRdIiwKICAgICAgICAgeC5EZWJ1Z1N0cmluZygpKTsKICAgfQog
fQpAQCAtMTUyOCw4ICsxNTQyLDcgQEAgY2xhc3MgQ29tcGFjdFN0cmluZyB7CiAgIGNvbnN0IGNo
YXIqIGNfc3RyKCkgY29uc3QgewogICAgIC8vIEVxdWl2YWxlbnQgdG8gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4ocC5nZXQoKSArIHNpemVvZihzaXplX3QpKS4KICAgICAvLyBUaGUgYXJndW1lbnQg
aW4gUGFydGlhbCgxKSBzcGVjaWZpZXMgdGhhdCB3ZSBoYXZlIHNpemVfdFsxXSBpbiBmcm9udCBv
ZgotICAgIC8vIHRoZQotICAgIC8vIGNoYXJhY3RlcnMuCisgICAgLy8gdGhlIGNoYXJhY3RlcnMu
CiAgICAgcmV0dXJuIEw6OlBhcnRpYWwoMSkuUG9pbnRlcjxjaGFyPihwXy5nZXQoKSk7CiAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL25vZGVfaGFzaF9wb2xpY3ku
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5LmgKaW5kZXggMDY1
ZTcwMDllN2U3ZTRjNWIwMzNhNWQyNThjYWQ5MzU3MmNmZGE1ZS4uMTliNGZjMDk4ZmI4ZDZlODYx
N2ZhMDFkYTJkM2E0ZjM0Nzc2Yzk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL25vZGVfaGFzaF9wb2xpY3kuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9k
ZV9oYXNoX3BvbGljeS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL25vZGVfaGFzaF9wb2xpY3lfdGVzdC5j
YwppbmRleCA0M2QyODdlM2M0YTA0ZWJkNjE4YzMwNWExNWI3NjMwNWY3MmE3NDk3Li5mMWQzZWMz
MDE0YWU5Y2ExYmM3MGY3MmNkY2ViMjJjNWY2YWM5NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9yYXdfaGFzaF9tYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9t
YXAuaAppbmRleCAxZWRjMDA3MWU3ZGU4MjlkZTJkZGM3OTY3NTg0NjYzMmY2NjA0YzQ2Li42YTlj
NzMwYzQ2NDQzYWRhNmJkZTZjN2E3ZDE4MjJhNTFmMzk0NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL3Jhd19oYXNoX21hcC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVk
ZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnku
aCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIgIC8v
IElXWVUgcHJhZ21hOiBleHBvcnQKIApAQCAtMzksMTEgKzQwLDE0IEBAIGNsYXNzIHJhd19oYXNo
X21hcCA6IHB1YmxpYyByYXdfaGFzaF9zZXQ8UG9saWN5LCBIYXNoLCBFcSwgQWxsb2M+IHsKICAg
dXNpbmcgTWFwcGVkQ29uc3RSZWZlcmVuY2UgPSBkZWNsdHlwZShQOjp2YWx1ZSgKICAgICAgIHN0
ZDo6YWRkcmVzc29mKHN0ZDo6ZGVjbHZhbDx0eXBlbmFtZSByYXdfaGFzaF9tYXA6OmNvbnN0X3Jl
ZmVyZW5jZT4oKSkpKTsKIAorICB1c2luZyBLZXlBcmdJbXBsID0KKyAgICAgIEtleUFyZzxJc1Ry
YW5zcGFyZW50PEVxPjo6dmFsdWUgJiYgSXNUcmFuc3BhcmVudDxIYXNoPjo6dmFsdWU+OworCiAg
cHVibGljOgogICB1c2luZyBrZXlfdHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6a2V5X3R5cGU7CiAg
IHVzaW5nIG1hcHBlZF90eXBlID0gdHlwZW5hbWUgUG9saWN5OjptYXBwZWRfdHlwZTsKLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIEs+Ci0gIHVzaW5nIGtleV9hcmcgPSB0eXBlbmFtZSByYXdfaGFzaF9t
YXA6OnJhd19oYXNoX3NldDo6dGVtcGxhdGUga2V5X2FyZzxLPjsKKyAgdGVtcGxhdGUgPGNsYXNz
IEs+CisgIHVzaW5nIGtleV9hcmcgPSB0eXBlbmFtZSBLZXlBcmdJbXBsOjp0ZW1wbGF0ZSB0eXBl
PEssIGtleV90eXBlPjsKIAogICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3JlZmVyZW5jZTxrZXlf
dHlwZT46OnZhbHVlLCAiIik7CiAgIC8vIFRPRE8oYWxraXMpOiByZW1vdmUgdGhpcyBhc3NlcnRp
b24gYW5kIHZlcmlmeSB0aGF0IHJlZmVyZW5jZSBtYXBwZWRfdHlwZSBpcwpAQCAtMTMzLDE0ICsx
MzcsMjAgQEAgY2xhc3MgcmF3X2hhc2hfbWFwIDogcHVibGljIHJhd19oYXNoX3NldDxQb2xpY3ks
IEhhc2gsIEVxLCBBbGxvYz4gewogICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFz
cyBQID0gUG9saWN5PgogICBNYXBwZWRSZWZlcmVuY2U8UD4gYXQoY29uc3Qga2V5X2FyZzxLPiYg
a2V5KSB7CiAgICAgYXV0byBpdCA9IHRoaXMtPmZpbmQoa2V5KTsKLSAgICBpZiAoaXQgPT0gdGhp
cy0+ZW5kKCkpIHN0ZDo6YWJvcnQoKTsKKyAgICBpZiAoaXQgPT0gdGhpcy0+ZW5kKCkpIHsKKyAg
ICAgIGJhc2VfaW50ZXJuYWw6OlRocm93U3RkT3V0T2ZSYW5nZSgKKyAgICAgICAgICAiYWJzbDo6
Y29udGFpbmVyX2ludGVybmFsOjpyYXdfaGFzaF9tYXA8Pjo6YXQiKTsKKyAgICB9CiAgICAgcmV0
dXJuIFBvbGljeTo6dmFsdWUoJippdCk7CiAgIH0KIAogICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtl
eV90eXBlLCBjbGFzcyBQID0gUG9saWN5PgogICBNYXBwZWRDb25zdFJlZmVyZW5jZTxQPiBhdChj
b25zdCBrZXlfYXJnPEs+JiBrZXkpIGNvbnN0IHsKICAgICBhdXRvIGl0ID0gdGhpcy0+ZmluZChr
ZXkpOwotICAgIGlmIChpdCA9PSB0aGlzLT5lbmQoKSkgc3RkOjphYm9ydCgpOworICAgIGlmIChp
dCA9PSB0aGlzLT5lbmQoKSkgeworICAgICAgYmFzZV9pbnRlcm5hbDo6VGhyb3dTdGRPdXRPZlJh
bmdlKAorICAgICAgICAgICJhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OnJhd19oYXNoX21hcDw+
OjphdCIpOworICAgIH0KICAgICByZXR1cm4gUG9saWN5Ojp2YWx1ZSgmKml0KTsKICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5jYwppbmRleCAxMDE1MzEyOWZkMWU2
ZWJlNzUxMzAwOWVhODQyM2ZkZWM0NWUzNjM0Li5hYzJkMTBhNzY2NmMxNmJlMTBkYWY2N2IyZjk2
ZjBiMGY2NDJiMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hh
c2hfc2V0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDYgKzE0LDcg
QEAKIAogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5oIgog
CisjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGNzdGRkZWY+CiAKICNpbmNsdWRlICJhYnNs
L2Jhc2UvY29uZmlnLmgiCkBAIC0yOSw3ICszMCw3IEBAIGlubGluZSBzaXplX3QgUmFuZG9tU2Vl
ZCgpIHsKICAgc3RhdGljIHRocmVhZF9sb2NhbCBzaXplX3QgY291bnRlciA9IDA7CiAgIHNpemVf
dCB2YWx1ZSA9ICsrY291bnRlcjsKICNlbHNlICAgLy8gQUJTTF9IQVZFX1RIUkVBRF9MT0NBTAot
ICBzdGF0aWMgc3RkOjphdG9taWM8c2l6ZV90PiBjb3VudGVyOworICBzdGF0aWMgc3RkOjphdG9t
aWM8c2l6ZV90PiBjb3VudGVyKDApOwogICBzaXplX3QgdmFsdWUgPSBjb3VudGVyLmZldGNoX2Fk
ZCgxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKICNlbmRpZiAgLy8gQUJTTF9IQVZFX1RI
UkVBRF9MT0NBTAogICByZXR1cm4gdmFsdWUgXiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PigmY291bnRlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jh
d19oYXNoX3NldC5oCmluZGV4IDcwZGE5MGY3OWE0ZmM2M2E5Njc2NTgyNzI3Y2ZlY2M3ZWQ4YzJi
ZTUuLjY1NmU5ODA2ZDg5OTVjMWU5NTljMDY5Y2ZhNDVjNDA0MWM1ZDMwYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTkxLDMwICs5MSw2IEBACiAjaWZuZGVmIEFCU0xfQ09OVEFJTkVS
X0lOVEVSTkFMX1JBV19IQVNIX1NFVF9IXwogI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5B
TF9SQVdfSEFTSF9TRVRfSF8KIAotI2lmbmRlZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgotI2lmZGVm
IF9fU1NFMl9fCi0jZGVmaW5lIFNXSVNTVEFCTEVfSEFWRV9TU0UyIDEKLSNlbHNlCi0jZGVmaW5l
IFNXSVNTVEFCTEVfSEFWRV9TU0UyIDAKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgU1dJU1NU
QUJMRV9IQVZFX1NTU0UzCi0jaWZkZWYgX19TU1NFM19fCi0jZGVmaW5lIFNXSVNTVEFCTEVfSEFW
RV9TU1NFMyAxCi0jZWxzZQotI2RlZmluZSBTV0lTU1RBQkxFX0hBVkVfU1NTRTMgMAotI2VuZGlm
Ci0jZW5kaWYKLQotI2lmIFNXSVNTVEFCTEVfSEFWRV9TU1NFMyAmJiAhU1dJU1NUQUJMRV9IQVZF
X1NTRTIKLSNlcnJvciAiQmFkIGNvbmZpZ3VyYXRpb24hIgotI2VuZGlmCi0KLSNpZiBTV0lTU1RB
QkxFX0hBVkVfU1NFMgotI2luY2x1ZGUgPHg4NmludHJpbi5oPgotI2VuZGlmCi0KICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0ZGludD4KQEAgLTEy
OSwxNCArMTA1LDE2IEBACiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaCIKICNp
bmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNl
L3BvcnQuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21tb24uaCIKICNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlLmgiCiAjaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIgogI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIgogI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZV9kZWJ1Z19ob29rcy5oIgorI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZXpfc2FtcGxlci5oIgorI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhdmVfc3NlLmgiCiAjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0LmgiCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCiAjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCi0jaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCiAK
IG5hbWVzcGFjZSBhYnNsIHsKQEAgLTE4NywxMiArMTY1LDYgQEAgc3RydWN0IElzRGVjb21wb3Nh
YmxlPAogICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxUcz4oKS4uLikpPiwKICAg
ICBQb2xpY3ksIEhhc2gsIEVxLCBUcy4uLj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKIAotdGVtcGxh
dGUgPGNsYXNzLCBjbGFzcyA9IHZvaWQ+Ci1zdHJ1Y3QgSXNUcmFuc3BhcmVudCA6IHN0ZDo6ZmFs
c2VfdHlwZSB7fTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IElzVHJhbnNwYXJlbnQ8VCwg
YWJzbDo6dm9pZF90PHR5cGVuYW1lIFQ6OmlzX3RyYW5zcGFyZW50Pj4KLSAgICA6IHN0ZDo6dHJ1
ZV90eXBlIHt9OwotCiAvLyBUT0RPKGFsa2lzKTogU3dpdGNoIHRvIHN0ZDo6aXNfbm90aHJvd19z
d2FwcGFibGUgd2hlbiBnY2MvY2xhbmcgc3VwcG9ydHMgaXQuCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4K
IGNvbnN0ZXhwciBib29sIElzTm9UaHJvd1N3YXBwYWJsZSgpIHsKQEAgLTIwMiwxNCArMTc0LDE3
IEBAIGNvbnN0ZXhwciBib29sIElzTm9UaHJvd1N3YXBwYWJsZSgpIHsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBpbnQgVHJhaWxpbmdaZXJvcyhUIHgpIHsKLSAgcmV0dXJuIHNpemVvZihUKSA9
PSA4ID8gYmFzZV9pbnRlcm5hbDo6Q291bnRUcmFpbGluZ1plcm9zTm9uWmVybzY0KHgpCi0gICAg
ICAgICAgICAgICAgICAgICAgICA6IGJhc2VfaW50ZXJuYWw6OkNvdW50VHJhaWxpbmdaZXJvc05v
blplcm8zMih4KTsKKyAgcmV0dXJuIHNpemVvZihUKSA9PSA4ID8gYmFzZV9pbnRlcm5hbDo6Q291
bnRUcmFpbGluZ1plcm9zTm9uWmVybzY0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHgpKQorICAgICAgICAgICAgICAgICAgICAgICAgOiBiYXNl
X2ludGVybmFsOjpDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvMzIoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCkpOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIGludCBMZWFkaW5nWmVyb3MoVCB4KSB7Ci0gIHJldHVybiBzaXplb2YoVCkg
PT0gOCA/IGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQoeCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIDogYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3MzMih4KTsKKyAg
cmV0dXJuIHNpemVvZihUKSA9PSA4CisgICAgICAgICAgICAgPyBiYXNlX2ludGVybmFsOjpDb3Vu
dExlYWRpbmdaZXJvczY0KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih4KSkKKyAgICAgICAgICAgICA6
IGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHgpKTsKIH0KIAogLy8gQW4gYWJzdHJhY3Rpb24gb3ZlciBhIGJpdG1hc2suIEl0IHByb3ZpZGVz
IGFuIGVhc3kgd2F5IHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUKQEAgLTMzNywxMCArMzEyLDI3IEBA
IGlubGluZSBib29sIElzRGVsZXRlZChjdHJsX3QgYykgeyByZXR1cm4gYyA9PSBrRGVsZXRlZDsg
fQogaW5saW5lIGJvb2wgSXNFbXB0eU9yRGVsZXRlZChjdHJsX3QgYykgeyByZXR1cm4gYyA8IGtT
ZW50aW5lbDsgfQogCiAjaWYgU1dJU1NUQUJMRV9IQVZFX1NTRTIKLXN0cnVjdCBHcm91cCB7CisK
Ky8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hYnNlaWwvYWJzZWlsLWNwcC9pc3N1ZXMvMjA5CisvLyBo
dHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD04Nzg1MworLy8gX21t
X2NtcGd0X2VwaTggaXMgYnJva2VuIHVuZGVyIEdDQyB3aXRoIC1mdW5zaWduZWQtY2hhcgorLy8g
V29yayBhcm91bmQgdGhpcyBieSB1c2luZyB0aGUgcG9ydGFibGUgaW1wbGVtZW50YXRpb24gb2Yg
R3JvdXAKKy8vIHdoZW4gdXNpbmcgLWZ1bnNpZ25lZC1jaGFyIHVuZGVyIEdDQy4KK2lubGluZSBf
X20xMjhpIF9tbV9jbXBndF9lcGk4X2ZpeGVkKF9fbTEyOGkgYSwgX19tMTI4aSBiKSB7CisjaWYg
ZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICBpZiAoc3RkOjppc191
bnNpZ25lZDxjaGFyPjo6dmFsdWUpIHsKKyAgICBjb25zdCBfX20xMjhpIG1hc2sgPSBfbW1fc2V0
MV9lcGk4KDB4ODApOworICAgIGNvbnN0IF9fbTEyOGkgZGlmZiA9IF9tbV9zdWJzX2VwaTgoYiwg
YSk7CisgICAgcmV0dXJuIF9tbV9jbXBlcV9lcGk4KF9tbV9hbmRfc2kxMjgoZGlmZiwgbWFzayks
IG1hc2spOworICB9CisjZW5kaWYKKyAgcmV0dXJuIF9tbV9jbXBndF9lcGk4KGEsIGIpOworfQor
CitzdHJ1Y3QgR3JvdXBTc2UySW1wbCB7CiAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtXaWR0
aCA9IDE2OyAgLy8gdGhlIG51bWJlciBvZiBzbG90cyBwZXIgZ3JvdXAKIAotICBleHBsaWNpdCBH
cm91cChjb25zdCBjdHJsX3QqIHBvcykgeworICBleHBsaWNpdCBHcm91cFNzZTJJbXBsKGNvbnN0
IGN0cmxfdCogcG9zKSB7CiAgICAgY3RybCA9IF9tbV9sb2FkdV9zaTEyOChyZWludGVycHJldF9j
YXN0PGNvbnN0IF9fbTEyOGkqPihwb3MpKTsKICAgfQogCkBAIC0zNTgsNyArMzUwLDcgQEAgc3Ry
dWN0IEdyb3VwIHsKICAgICByZXR1cm4gQml0TWFzazx1aW50MzJfdCwga1dpZHRoPigKICAgICAg
ICAgX21tX21vdmVtYXNrX2VwaTgoX21tX3NpZ25fZXBpOChjdHJsLCBjdHJsKSkpOwogI2Vsc2UK
LSAgICByZXR1cm4gTWF0Y2goa0VtcHR5KTsKKyAgICByZXR1cm4gTWF0Y2goc3RhdGljX2Nhc3Q8
aDJfdD4oa0VtcHR5KSk7CiAjZW5kaWYKICAgfQogCkBAIC0zNjYsMjMgKzM1OCwyNCBAQCBzdHJ1
Y3QgR3JvdXAgewogICBCaXRNYXNrPHVpbnQzMl90LCBrV2lkdGg+IE1hdGNoRW1wdHlPckRlbGV0
ZWQoKSBjb25zdCB7CiAgICAgYXV0byBzcGVjaWFsID0gX21tX3NldDFfZXBpOChrU2VudGluZWwp
OwogICAgIHJldHVybiBCaXRNYXNrPHVpbnQzMl90LCBrV2lkdGg+KAotICAgICAgICBfbW1fbW92
ZW1hc2tfZXBpOChfbW1fY21wZ3RfZXBpOChzcGVjaWFsLCBjdHJsKSkpOworICAgICAgICBfbW1f
bW92ZW1hc2tfZXBpOChfbW1fY21wZ3RfZXBpOF9maXhlZChzcGVjaWFsLCBjdHJsKSkpOwogICB9
CiAKICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIGVtcHR5IG9yIGRlbGV0ZWQg
ZWxlbWVudHMgaW4gdGhlIGdyb3VwLgogICB1aW50MzJfdCBDb3VudExlYWRpbmdFbXB0eU9yRGVs
ZXRlZCgpIGNvbnN0IHsKICAgICBhdXRvIHNwZWNpYWwgPSBfbW1fc2V0MV9lcGk4KGtTZW50aW5l
bCk7Ci0gICAgcmV0dXJuIFRyYWlsaW5nWmVyb3MoX21tX21vdmVtYXNrX2VwaTgoX21tX2NtcGd0
X2VwaTgoc3BlY2lhbCwgY3RybCkpICsgMSk7CisgICAgcmV0dXJuIFRyYWlsaW5nWmVyb3MoCisg
ICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KF9tbV9jbXBndF9lcGk4X2ZpeGVkKHNwZWNpYWwsIGN0
cmwpKSArIDEpOwogICB9CiAKICAgdm9pZCBDb252ZXJ0U3BlY2lhbFRvRW1wdHlBbmRGdWxsVG9E
ZWxldGVkKGN0cmxfdCogZHN0KSBjb25zdCB7Ci0gICAgYXV0byBtc2JzID0gX21tX3NldDFfZXBp
OCgweDgwKTsKKyAgICBhdXRvIG1zYnMgPSBfbW1fc2V0MV9lcGk4KHN0YXRpY19jYXN0PGNoYXI+
KC0xMjgpKTsKICAgICBhdXRvIHgxMjYgPSBfbW1fc2V0MV9lcGk4KDEyNik7CiAjaWYgU1dJU1NU
QUJMRV9IQVZFX1NTU0UzCiAgICAgYXV0byByZXMgPSBfbW1fb3Jfc2kxMjgoX21tX3NodWZmbGVf
ZXBpOCh4MTI2LCBjdHJsKSwgbXNicyk7CiAjZWxzZQogICAgIGF1dG8gemVybyA9IF9tbV9zZXR6
ZXJvX3NpMTI4KCk7Ci0gICAgYXV0byBzcGVjaWFsX21hc2sgPSBfbW1fY21wZ3RfZXBpOCh6ZXJv
LCBjdHJsKTsKKyAgICBhdXRvIHNwZWNpYWxfbWFzayA9IF9tbV9jbXBndF9lcGk4X2ZpeGVkKHpl
cm8sIGN0cmwpOwogICAgIGF1dG8gcmVzID0gX21tX29yX3NpMTI4KG1zYnMsIF9tbV9hbmRub3Rf
c2kxMjgoc3BlY2lhbF9tYXNrLCB4MTI2KSk7CiAjZW5kaWYKICAgICBfbW1fc3RvcmV1X3NpMTI4
KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KGRzdCksIHJlcyk7CkBAIC0zOTAsMTEgKzM4Mywx
MyBAQCBzdHJ1Y3QgR3JvdXAgewogCiAgIF9fbTEyOGkgY3RybDsKIH07Ci0jZWxzZQotc3RydWN0
IEdyb3VwIHsKKyNlbmRpZiAgLy8gU1dJU1NUQUJMRV9IQVZFX1NTRTIKKworc3RydWN0IEdyb3Vw
UG9ydGFibGVJbXBsIHsKICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1dpZHRoID0gODsKIAot
ICBleHBsaWNpdCBHcm91cChjb25zdCBjdHJsX3QqIHBvcykgOiBjdHJsKGxpdHRsZV9lbmRpYW46
OkxvYWQ2NChwb3MpKSB7fQorICBleHBsaWNpdCBHcm91cFBvcnRhYmxlSW1wbChjb25zdCBjdHJs
X3QqIHBvcykKKyAgICAgIDogY3RybChsaXR0bGVfZW5kaWFuOjpMb2FkNjQocG9zKSkge30KIAog
ICBCaXRNYXNrPHVpbnQ2NF90LCBrV2lkdGgsIDM+IE1hdGNoKGgyX3QgaGFzaCkgY29uc3Qgewog
ICAgIC8vIEZvciB0aGUgdGVjaG5pcXVlLCBzZWU6CkBAIC00NDEsMTUgKzQzNiwxNyBAQCBzdHJ1
Y3QgR3JvdXAgewogCiAgIHVpbnQ2NF90IGN0cmw7CiB9OwotI2VuZGlmICAvLyBTV0lTU1RBQkxF
X0hBVkVfU1NFMgorCisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTRTIKK3VzaW5nIEdyb3VwID0gR3Jv
dXBTc2UySW1wbDsKKyNlbHNlCit1c2luZyBHcm91cCA9IEdyb3VwUG9ydGFibGVJbXBsOworI2Vu
ZGlmCiAKIHRlbXBsYXRlIDxjbGFzcyBQb2xpY3ksIGNsYXNzIEhhc2gsIGNsYXNzIEVxLCBjbGFz
cyBBbGxvYz4KIGNsYXNzIHJhd19oYXNoX3NldDsKIAotCi1pbmxpbmUgYm9vbCBJc1ZhbGlkQ2Fw
YWNpdHkoc2l6ZV90IG4pIHsKLSAgcmV0dXJuICgobiArIDEpICYgbikgPT0gMCAmJiBuID49IEdy
b3VwOjprV2lkdGggLSAxOwotfQoraW5saW5lIGJvb2wgSXNWYWxpZENhcGFjaXR5KHNpemVfdCBu
KSB7IHJldHVybiAoKG4gKyAxKSAmIG4pID09IDAgJiYgbiA+IDA7IH0KIAogLy8gUFJFQ09ORElU
SU9OOgogLy8gICBJc1ZhbGlkQ2FwYWNpdHkoY2FwYWNpdHkpCkBAIC00NzEsMTUyICs0NjgsMzIg
QEAgaW5saW5lIHZvaWQgQ29udmVydERlbGV0ZWRUb0VtcHR5QW5kRnVsbFRvRGVsZXRlZCgKICAg
Y3RybFtjYXBhY2l0eV0gPSBrU2VudGluZWw7CiB9CiAKLS8vIFJvdW5kcyB1cCB0aGUgY2FwYWNp
dHkgdG8gdGhlIG5leHQgcG93ZXIgb2YgMiBtaW51cyAxIGFuZCBlbnN1cmVzIGl0IGlzCi0vLyBn
cmVhdGVyIG9yIGVxdWFsIHRvIEdyb3VwOjprV2lkdGggLSAxLgorLy8gUm91bmRzIHVwIHRoZSBj
YXBhY2l0eSB0byB0aGUgbmV4dCBwb3dlciBvZiAyIG1pbnVzIDEsIHdpdGggYSBtaW5pbXVtIG9m
IDEuCiBpbmxpbmUgc2l6ZV90IE5vcm1hbGl6ZUNhcGFjaXR5KHNpemVfdCBuKSB7Ci0gIGNvbnN0
ZXhwciBzaXplX3Qga01pbkNhcGFjaXR5ID0gR3JvdXA6OmtXaWR0aCAtIDE7Ci0gIHJldHVybiBu
IDw9IGtNaW5DYXBhY2l0eQotICAgICAgICAgICAgID8ga01pbkNhcGFjaXR5Ci0gICAgICAgICAg
ICAgOiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpID4+IExlYWRpbmdaZXJvcyhu
KTsKKyAgcmV0dXJuIG4gPyB+c2l6ZV90e30gPj4gTGVhZGluZ1plcm9zKG4pIDogMTsKIH0KIAot
Ly8gVGhlIG5vZGVfaGFuZGxlIGNvbmNlcHQgZnJvbSBDKysxNy4KLS8vIFdlIHNwZWNpYWxpemUg
bm9kZV9oYW5kbGUgZm9yIHNldHMgYW5kIG1hcHMuIG5vZGVfaGFuZGxlX2Jhc2UgaG9sZHMgdGhl
Ci0vLyBjb21tb24gQVBJIG9mIGJvdGguCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUG9saWN5LCB0eXBl
bmFtZSBBbGxvYz4KLWNsYXNzIG5vZGVfaGFuZGxlX2Jhc2UgewotIHByb3RlY3RlZDoKLSAgdXNp
bmcgUG9saWN5VHJhaXRzID0gaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeT47Ci0gIHVzaW5nIHNs
b3RfdHlwZSA9IHR5cGVuYW1lIFBvbGljeVRyYWl0czo6c2xvdF90eXBlOwotCi0gcHVibGljOgot
ICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IEFsbG9jOwotCi0gIGNvbnN0ZXhwciBub2RlX2hhbmRs
ZV9iYXNlKCkge30KLSAgbm9kZV9oYW5kbGVfYmFzZShub2RlX2hhbmRsZV9iYXNlJiYgb3RoZXIp
IG5vZXhjZXB0IHsKLSAgICAqdGhpcyA9IHN0ZDo6bW92ZShvdGhlcik7Ci0gIH0KLSAgfm5vZGVf
aGFuZGxlX2Jhc2UoKSB7IGRlc3Ryb3koKTsgfQotICBub2RlX2hhbmRsZV9iYXNlJiBvcGVyYXRv
cj0obm9kZV9oYW5kbGVfYmFzZSYmIG90aGVyKSB7Ci0gICAgZGVzdHJveSgpOwotICAgIGlmICgh
b3RoZXIuZW1wdHkoKSkgewotICAgICAgYWxsb2NfID0gb3RoZXIuYWxsb2NfOwotICAgICAgUG9s
aWN5VHJhaXRzOjp0cmFuc2ZlcihhbGxvYygpLCBzbG90KCksIG90aGVyLnNsb3QoKSk7Ci0gICAg
ICBvdGhlci5yZXNldCgpOwotICAgIH0KLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICBib29s
IGVtcHR5KCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gIWFsbG9jXzsgfQotICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gIWVtcHR5KCk7IH0KLSAgYWxs
b2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuICphbGxvY187IH0KLQot
IHByb3RlY3RlZDoKLSAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUsIHR5
cGVuYW1lPgotICBmcmllbmQgY2xhc3MgcmF3X2hhc2hfc2V0OwotCi0gIG5vZGVfaGFuZGxlX2Jh
c2UoY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEsIHNsb3RfdHlwZSogcykgOiBhbGxvY18oYSkgewot
ICAgIFBvbGljeVRyYWl0czo6dHJhbnNmZXIoYWxsb2MoKSwgc2xvdCgpLCBzKTsKLSAgfQotCi0g
IHZvaWQgZGVzdHJveSgpIHsKLSAgICBpZiAoIWVtcHR5KCkpIHsKLSAgICAgIFBvbGljeVRyYWl0
czo6ZGVzdHJveShhbGxvYygpLCBzbG90KCkpOwotICAgICAgcmVzZXQoKTsKLSAgICB9Ci0gIH0K
LQotICB2b2lkIHJlc2V0KCkgewotICAgIGFzc2VydChhbGxvY18uaGFzX3ZhbHVlKCkpOwotICAg
IGFsbG9jXyA9IGFic2w6Om51bGxvcHQ7Ci0gIH0KLQotICBzbG90X3R5cGUqIHNsb3QoKSBjb25z
dCB7Ci0gICAgYXNzZXJ0KCFlbXB0eSgpKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxz
bG90X3R5cGUqPihzdGQ6OmFkZHJlc3NvZihzbG90X3NwYWNlXykpOwotICB9Ci0gIGFsbG9jYXRv
cl90eXBlKiBhbGxvYygpIHsgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKCphbGxvY18pOyB9Ci0KLSBw
cml2YXRlOgotICBhYnNsOjpvcHRpb25hbDxhbGxvY2F0b3JfdHlwZT4gYWxsb2NfOwotICBtdXRh
YmxlIGFic2w6OmFsaWduZWRfc3RvcmFnZV90PHNpemVvZihzbG90X3R5cGUpLCBhbGlnbm9mKHNs
b3RfdHlwZSk+Ci0gICAgICBzbG90X3NwYWNlXzsKLX07Ci0KLS8vIEZvciBzZXRzLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFBvbGljeSwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lID0gdm9pZD4KLWNs
YXNzIG5vZGVfaGFuZGxlIDogcHVibGljIG5vZGVfaGFuZGxlX2Jhc2U8UG9saWN5LCBBbGxvYz4g
ewotICB1c2luZyBCYXNlID0gdHlwZW5hbWUgbm9kZV9oYW5kbGU6Om5vZGVfaGFuZGxlX2Jhc2U7
Ci0KLSBwdWJsaWM6Ci0gIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBCYXNlOjpQb2xpY3lU
cmFpdHM6OnZhbHVlX3R5cGU7Ci0KLSAgY29uc3RleHByIG5vZGVfaGFuZGxlKCkge30KLQotICB2
YWx1ZV90eXBlJiB2YWx1ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gQmFzZTo6UG9saWN5VHJhaXRz
OjplbGVtZW50KHRoaXMtPnNsb3QoKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHRlbXBsYXRlIDx0
eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4KLSAgZnJpZW5kIGNsYXNzIHJh
d19oYXNoX3NldDsKLQotICBub2RlX2hhbmRsZShjb25zdCBBbGxvYyYgYSwgdHlwZW5hbWUgQmFz
ZTo6c2xvdF90eXBlKiBzKSA6IEJhc2UoYSwgcykge30KLX07Ci0KLS8vIEZvciBtYXBzLgotdGVt
cGxhdGUgPHR5cGVuYW1lIFBvbGljeSwgdHlwZW5hbWUgQWxsb2M+Ci1jbGFzcyBub2RlX2hhbmRs
ZTxQb2xpY3ksIEFsbG9jLCBhYnNsOjp2b2lkX3Q8dHlwZW5hbWUgUG9saWN5OjptYXBwZWRfdHlw
ZT4+Ci0gICAgOiBwdWJsaWMgbm9kZV9oYW5kbGVfYmFzZTxQb2xpY3ksIEFsbG9jPiB7Ci0gIHVz
aW5nIEJhc2UgPSB0eXBlbmFtZSBub2RlX2hhbmRsZTo6bm9kZV9oYW5kbGVfYmFzZTsKLQotIHB1
YmxpYzoKLSAgdXNpbmcga2V5X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3k6OmtleV90eXBlOwotICB1
c2luZyBtYXBwZWRfdHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6bWFwcGVkX3R5cGU7Ci0KLSAgY29u
c3RleHByIG5vZGVfaGFuZGxlKCkge30KLQotICBhdXRvIGtleSgpIGNvbnN0IC0+IGRlY2x0eXBl
KEJhc2U6OlBvbGljeVRyYWl0czo6a2V5KHRoaXMtPnNsb3QoKSkpIHsKLSAgICByZXR1cm4gQmFz
ZTo6UG9saWN5VHJhaXRzOjprZXkodGhpcy0+c2xvdCgpKTsKLSAgfQotCi0gIG1hcHBlZF90eXBl
JiBtYXBwZWQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIEJhc2U6OlBvbGljeVRyYWl0czo6dmFsdWUo
Ci0gICAgICAgICZCYXNlOjpQb2xpY3lUcmFpdHM6OmVsZW1lbnQodGhpcy0+c2xvdCgpKSk7Cisv
LyBXZSB1c2UgNy84dGggYXMgbWF4aW11bSBsb2FkIGZhY3Rvci4KKy8vIEZvciAxNi13aWRlIGdy
b3VwcywgdGhhdCBnaXZlcyBhbiBhdmVyYWdlIG9mIHR3byBlbXB0eSBzbG90cyBwZXIgZ3JvdXAu
CitpbmxpbmUgc2l6ZV90IENhcGFjaXR5VG9Hcm93dGgoc2l6ZV90IGNhcGFjaXR5KSB7CisgIGFz
c2VydChJc1ZhbGlkQ2FwYWNpdHkoY2FwYWNpdHkpKTsKKyAgLy8gYGNhcGFjaXR5KjcvOGAKKyAg
aWYgKEdyb3VwOjprV2lkdGggPT0gOCAmJiBjYXBhY2l0eSA9PSA3KSB7CisgICAgLy8geC14Lzgg
ZG9lcyBub3Qgd29yayB3aGVuIHg9PTcuCisgICAgcmV0dXJuIDY7CiAgIH0KLQotIHByaXZhdGU6
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4KLSAg
ZnJpZW5kIGNsYXNzIHJhd19oYXNoX3NldDsKLQotICBub2RlX2hhbmRsZShjb25zdCBBbGxvYyYg
YSwgdHlwZW5hbWUgQmFzZTo6c2xvdF90eXBlKiBzKSA6IEJhc2UoYSwgcykge30KLX07Ci0KLS8v
IEltcGxlbWVudCB0aGUgaW5zZXJ0X3JldHVybl90eXBlPD4gY29uY2VwdCBvZiBDKysxNy4KLXRl
bXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgTm9kZVR5cGU+Ci1zdHJ1Y3QgaW5zZXJ0X3Jl
dHVybl90eXBlIHsKLSAgSXRlcmF0b3IgcG9zaXRpb247Ci0gIGJvb2wgaW5zZXJ0ZWQ7Ci0gIE5v
ZGVUeXBlIG5vZGU7Ci19OwotCi0vLyBIZWxwZXIgdHJhaXQgdG8gYWxsb3cgb3IgZGlzYWxsb3cg
YXJiaXRyYXJ5IGtleXMgd2hlbiB0aGUgaGFzaCBhbmQKLS8vIGVxIGZ1bmN0aW9ucyBhcmUgdHJh
bnNwYXJlbnQuCi0vLyBJdCBpcyB2ZXJ5IGltcG9ydGFudCB0aGF0IHRoZSBpbm5lciB0ZW1wbGF0
ZSBpcyBhbiBhbGlhcyBhbmQgdGhhdCB0aGUgdHlwZSBpdAotLy8gcHJvZHVjZXMgaXMgbm90IGEg
ZGVwZW5kZW50IHR5cGUuIE90aGVyd2lzZSwgdHlwZSBkZWR1Y3Rpb24gd291bGQgZmFpbC4KLXRl
bXBsYXRlIDxib29sIGlzX3RyYW5zcGFyZW50Pgotc3RydWN0IEtleUFyZyB7Ci0gIC8vIFRyYW5z
cGFyZW50LiBGb3J3YXJkIGBLYC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIGtl
eV90eXBlPgotICB1c2luZyB0eXBlID0gSzsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgS2V5
QXJnPGZhbHNlPiB7Ci0gIC8vIE5vdCB0cmFuc3BhcmVudC4gQWx3YXlzIHVzZSBga2V5X3R5cGVg
LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUga2V5X3R5cGU+Ci0gIHVzaW5nIHR5
cGUgPSBrZXlfdHlwZTsKLX07CisgIHJldHVybiBjYXBhY2l0eSAtIGNhcGFjaXR5IC8gODsKK30K
Ky8vIEZyb20gZGVzaXJlZCAiZ3Jvd3RoIiB0byBhIGxvd2VyYm91bmQgb2YgdGhlIG5lY2Vzc2Fy
eSBjYXBhY2l0eS4KKy8vIE1pZ2h0IG5vdCBiZSBhIHZhbGlkIG9uZSBhbmQgcmVxdWlyZWQgTm9y
bWFsaXplQ2FwYWNpdHkoKS4KK2lubGluZSBzaXplX3QgR3Jvd3RoVG9Mb3dlcmJvdW5kQ2FwYWNp
dHkoc2l6ZV90IGdyb3d0aCkgeworICAvLyBgZ3Jvd3RoKjgvN2AKKyAgaWYgKEdyb3VwOjprV2lk
dGggPT0gOCAmJiBncm93dGggPT0gNykgeworICAgIC8vIHgrKHgtMSkvNyBkb2VzIG5vdCB3b3Jr
IHdoZW4geD09Ny4KKyAgICByZXR1cm4gODsKKyAgfQorICByZXR1cm4gZ3Jvd3RoICsgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pigoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZ3Jvd3RoKSAtIDEpIC8gNyk7Cit9
CiAKIC8vIFBvbGljeTogYSBwb2xpY3kgZGVmaW5lcyBob3cgdG8gcGVyZm9ybSBkaWZmZXJlbnQg
b3BlcmF0aW9ucyBvbgogLy8gdGhlIHNsb3RzIG9mIHRoZSBoYXNodGFibGUgKHNlZSBoYXNoX3Bv
bGljeV90cmFpdHMuaCBmb3IgdGhlIGZ1bGwgaW50ZXJmYWNlCkBAIC02MzIsMTQgKzUwOSwxNCBA
QCBzdHJ1Y3QgS2V5QXJnPGZhbHNlPiB7CiAvLyBpZiB0aGV5IGFyZSBlcXVhbCwgZmFsc2UgaWYg
dGhleSBhcmUgbm90LiBJZiB0d28ga2V5cyBjb21wYXJlIGVxdWFsLCB0aGVuCiAvLyB0aGVpciBo
YXNoIHZhbHVlcyBhcyBkZWZpbmVkIGJ5IEhhc2ggTVVTVCBiZSBlcXVhbC4KIC8vCi0vLyBBbGxv
Y2F0b3I6IGFuIEFsbG9jYXRvciBbaHR0cDovL2RldmRvY3MuaW8vY3BwL2NvbmNlcHQvYWxsb2Nh
dG9yXSB3aXRoIHdoaWNoCisvLyBBbGxvY2F0b3I6IGFuIEFsbG9jYXRvciBbaHR0cHM6Ly9kZXZk
b2NzLmlvL2NwcC9jb25jZXB0L2FsbG9jYXRvcl0gd2l0aCB3aGljaAogLy8gdGhlIHN0b3JhZ2Ug
b2YgdGhlIGhhc2h0YWJsZSB3aWxsIGJlIGFsbG9jYXRlZCBhbmQgdGhlIGVsZW1lbnRzIHdpbGwg
YmUKIC8vIGNvbnN0cnVjdGVkIGFuZCBkZXN0cm95ZWQuCiB0ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5
LCBjbGFzcyBIYXNoLCBjbGFzcyBFcSwgY2xhc3MgQWxsb2M+CiBjbGFzcyByYXdfaGFzaF9zZXQg
ewogICB1c2luZyBQb2xpY3lUcmFpdHMgPSBoYXNoX3BvbGljeV90cmFpdHM8UG9saWN5PjsKLSAg
dXNpbmcgS2V5QXJnSW1wbCA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6S2V5QXJnPElzVHJhbnNwYXJl
bnQ8RXE+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXNUcmFuc3BhcmVudDxIYXNoPjo6dmFsdWU+OworICB1c2luZyBLZXlBcmdJbXBs
ID0KKyAgICAgIEtleUFyZzxJc1RyYW5zcGFyZW50PEVxPjo6dmFsdWUgJiYgSXNUcmFuc3BhcmVu
dDxIYXNoPjo6dmFsdWU+OwogCiAgcHVibGljOgogICB1c2luZyBpbml0X3R5cGUgPSB0eXBlbmFt
ZSBQb2xpY3lUcmFpdHM6OmluaXRfdHlwZTsKQEAgLTY2Miw3ICs1MzksNyBAQCBjbGFzcyByYXdf
aGFzaF9zZXQgewogICAgICAgYWxsb2NhdG9yX3R5cGU+Ojp0ZW1wbGF0ZSByZWJpbmRfdHJhaXRz
PHZhbHVlX3R5cGU+Ojpjb25zdF9wb2ludGVyOwogCiAgIC8vIEFsaWFzIHVzZWQgZm9yIGhldGVy
b2dlbmVvdXMgbG9va3VwIGZ1bmN0aW9ucy4KLSAgLy8gYGtleV9hcmc8Sz5gIGV2YWx1YXRlcyB0
byBgS2Agd2hlbiB0aGUgZnVuY3RvcnMgYXJlIHRyYW5wYXJlbnQgYW5kIHRvCisgIC8vIGBrZXlf
YXJnPEs+YCBldmFsdWF0ZXMgdG8gYEtgIHdoZW4gdGhlIGZ1bmN0b3JzIGFyZSB0cmFuc3BhcmVu
dCBhbmQgdG8KICAgLy8gYGtleV90eXBlYCBvdGhlcndpc2UuIEl0IHBlcm1pdHMgdGVtcGxhdGUg
YXJndW1lbnQgZGVkdWN0aW9uIG9uIGBLYCBmb3IgdGhlCiAgIC8vIHRyYW5zcGFyZW50IGNhc2Uu
CiAgIHRlbXBsYXRlIDxjbGFzcyBLPgpAQCAtNzgwLDcgKzY1NywxMSBAQCBjbGFzcyByYXdfaGFz
aF9zZXQgewogICAgIH0KIAogICAgIGN0cmxfdCogY3RybF8gPSBudWxscHRyOwotICAgIHNsb3Rf
dHlwZSogc2xvdF87CisgICAgLy8gVG8gYXZvaWQgdW5pbml0aWFsaXplZCBtZW1iZXIgd2Fybmln
cywgcHV0IHNsb3RfIGluIGFuIGFub255bW91cyB1bmlvbi4KKyAgICAvLyBUaGUgbWVtYmVyIGlz
IG5vdCBpbml0aWFsaXplZCBvbiBzaW5nbGV0b24gYW5kIGVuZCBpdGVyYXRvcnMuCisgICAgdW5p
b24geworICAgICAgc2xvdF90eXBlKiBzbG90XzsKKyAgICB9OwogICB9OwogCiAgIGNsYXNzIGNv
bnN0X2l0ZXJhdG9yIHsKQEAgLTgyMCw3ICs3MDEsOCBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewog
ICAgIGl0ZXJhdG9yIGlubmVyXzsKICAgfTsKIAotICB1c2luZyBub2RlX3R5cGUgPSBjb250YWlu
ZXJfaW50ZXJuYWw6Om5vZGVfaGFuZGxlPFBvbGljeSwgQWxsb2M+OworICB1c2luZyBub2RlX3R5
cGUgPSBub2RlX2hhbmRsZTxQb2xpY3ksIGhhc2hfcG9saWN5X3RyYWl0czxQb2xpY3k+LCBBbGxv
Yz47CisgIHVzaW5nIGluc2VydF9yZXR1cm5fdHlwZSA9IEluc2VydFJldHVyblR5cGU8aXRlcmF0
b3IsIG5vZGVfdHlwZT47CiAKICAgcmF3X2hhc2hfc2V0KCkgbm9leGNlcHQoCiAgICAgICBzdGQ6
OmlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPGhhc2hlcj46OnZhbHVlJiYKQEAgLTgz
Myw3ICs3MTUsNyBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewogICAgICAgOiBjdHJsXyhFbXB0eUdy
b3VwKCkpLCBzZXR0aW5nc18oMCwgaGFzaCwgZXEsIGFsbG9jKSB7CiAgICAgaWYgKGJ1Y2tldF9j
b3VudCkgewogICAgICAgY2FwYWNpdHlfID0gTm9ybWFsaXplQ2FwYWNpdHkoYnVja2V0X2NvdW50
KTsKLSAgICAgIGdyb3d0aF9sZWZ0KCkgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNhcGFjaXR5XyAq
IGtNYXhMb2FkRmFjdG9yKTsKKyAgICAgIHJlc2V0X2dyb3d0aF9sZWZ0KCk7CiAgICAgICBpbml0
aWFsaXplX3Nsb3RzKCk7CiAgICAgfQogICB9CkBAIC04NzUsOCArNzU3LDggQEAgY2xhc3MgcmF3
X2hhc2hfc2V0IHsKICAgLy8gdGhhdCBhY2NlcHQgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGFu
ZCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW5pdF90eXBlPi4KICAgLy8gVGhpcyBpcyBhZHZhbnRh
Z2VvdXMgZm9yIHBlcmZvcm1hbmNlLgogICAvLwotICAvLyAgIC8vIFR1cm5zIHsiYWJjIiwgImRl
ZiJ9IGludG8gc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6c3RyaW5nPiwgdGhlbiBjb3BpZXMK
LSAgLy8gICAvLyB0aGUgc3RyaW5ncyBpbnRvIHRoZSBzZXQuCisgIC8vICAgLy8gVHVybnMgeyJh
YmMiLCAiZGVmIn0gaW50byBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpzdHJpbmc+LCB0aGVu
CisgIC8vICAgLy8gY29waWVzIHRoZSBzdHJpbmdzIGludG8gdGhlIHNldC4KICAgLy8gICBzdGQ6
OnVub3JkZXJlZF9zZXQ8c3RkOjpzdHJpbmc+IHMgPSB7ImFiYyIsICJkZWYifTsKICAgLy8KICAg
Ly8gICAvLyBUdXJucyB7ImFiYyIsICJkZWYifSBpbnRvIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxj
b25zdCBjaGFyKj4sIHRoZW4KQEAgLTkzOSw5ICs4MjEsMTAgQEAgY2xhc3MgcmF3X2hhc2hfc2V0
IHsKICAgICAvLyB0aGFuIGEgZnVsbCBgaW5zZXJ0YC4KICAgICBmb3IgKGNvbnN0IGF1dG8mIHYg
OiB0aGF0KSB7CiAgICAgICBjb25zdCBzaXplX3QgaGFzaCA9IFBvbGljeVRyYWl0czo6YXBwbHko
SGFzaEVsZW1lbnR7aGFzaF9yZWYoKX0sIHYpOwotICAgICAgY29uc3Qgc2l6ZV90IGkgPSBmaW5k
X2ZpcnN0X25vbl9mdWxsKGhhc2gpOwotICAgICAgc2V0X2N0cmwoaSwgSDIoaGFzaCkpOwotICAg
ICAgZW1wbGFjZV9hdChpLCB2KTsKKyAgICAgIGF1dG8gdGFyZ2V0ID0gZmluZF9maXJzdF9ub25f
ZnVsbChoYXNoKTsKKyAgICAgIHNldF9jdHJsKHRhcmdldC5vZmZzZXQsIEgyKGhhc2gpKTsKKyAg
ICAgIGVtcGxhY2VfYXQodGFyZ2V0Lm9mZnNldCwgdik7CisgICAgICBpbmZvel8uUmVjb3JkSW5z
ZXJ0KGhhc2gsIHRhcmdldC5wcm9iZV9sZW5ndGgpOwogICAgIH0KICAgICBzaXplXyA9IHRoYXQu
c2l6ZSgpOwogICAgIGdyb3d0aF9sZWZ0KCkgLT0gdGhhdC5zaXplKCk7CkBAIC05NTUsNiArODM4
LDcgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgICAgICAgc2xvdHNfKGFic2w6OmV4Y2hhbmdl
KHRoYXQuc2xvdHNfLCBudWxscHRyKSksCiAgICAgICAgIHNpemVfKGFic2w6OmV4Y2hhbmdlKHRo
YXQuc2l6ZV8sIDApKSwKICAgICAgICAgY2FwYWNpdHlfKGFic2w6OmV4Y2hhbmdlKHRoYXQuY2Fw
YWNpdHlfLCAwKSksCisgICAgICAgIGluZm96XyhhYnNsOjpleGNoYW5nZSh0aGF0LmluZm96Xywg
SGFzaHRhYmxlekluZm9IYW5kbGUoKSkpLAogICAgICAgICAvLyBIYXNoLCBlcXVhbGl0eSBhbmQg
YWxsb2NhdG9yIGFyZSBjb3BpZWQgaW5zdGVhZCBvZiBtb3ZlZCBiZWNhdXNlCiAgICAgICAgIC8v
IGB0aGF0YCBtdXN0IGJlIGxlZnQgdmFsaWQuIElmIEhhc2ggaXMgc3RkOjpmdW5jdGlvbjxLZXk+
LCBtb3ZpbmcgaXQKICAgICAgICAgLy8gd291bGQgY3JlYXRlIGEgbnVsbHB0ciBmdW5jdG9yIHRo
YXQgY2Fubm90IGJlIGNhbGxlZC4KQEAgLTk3NSw2ICs4NTksNyBAQCBjbGFzcyByYXdfaGFzaF9z
ZXQgewogICAgICAgc3RkOjpzd2FwKHNpemVfLCB0aGF0LnNpemVfKTsKICAgICAgIHN0ZDo6c3dh
cChjYXBhY2l0eV8sIHRoYXQuY2FwYWNpdHlfKTsKICAgICAgIHN0ZDo6c3dhcChncm93dGhfbGVm
dCgpLCB0aGF0Lmdyb3d0aF9sZWZ0KCkpOworICAgICAgc3RkOjpzd2FwKGluZm96XywgdGhhdC5p
bmZvel8pOwogICAgIH0gZWxzZSB7CiAgICAgICByZXNlcnZlKHRoYXQuc2l6ZSgpKTsKICAgICAg
IC8vIE5vdGU6IHRoaXMgd2lsbCBjb3B5IGVsZW1lbnRzIG9mIGRlbnNlX3NldCBhbmQgdW5vcmRl
cmVkX3NldCBpbnN0ZWFkIG9mCkBAIC0xMDIyLDkgKzkwNyw5IEBAIGNsYXNzIHJhd19oYXNoX3Nl
dCB7CiAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAgIHNpemVfdCBz
aXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0KICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gY2FwYWNpdHlfOyB9Ci0gIHNpemVfdCBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7IH0KKyAgc2l6ZV90IG1heF9zaXpl
KCkgY29uc3QgeyByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KSgpOyB9
CiAKLSAgdm9pZCBjbGVhcigpIHsKKyAgQUJTTF9BVFRSSUJVVEVfUkVJTklUSUFMSVpFUyB2b2lk
IGNsZWFyKCkgewogICAgIC8vIEl0ZXJhdGluZyBvdmVyIHRoaXMgY29udGFpbmVyIGlzIE8oYnVj
a2V0X2NvdW50KCkpLiBXaGVuIGJ1Y2tldF9jb3VudCgpCiAgICAgLy8gaXMgbXVjaCBncmVhdGVy
IHRoYW4gc2l6ZSgpLCBpdGVyYXRpb24gYmVjb21lcyBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZS4K
ICAgICAvLyBGb3IgY2xlYXIoKSBpdCBpcyBtb3JlIGltcG9ydGFudCB0byByZXVzZSB0aGUgYWxs
b2NhdGVkIGFycmF5IHdoZW4gdGhlCkBAIC0xMDQyLDkgKzkyNywxMCBAQCBjbGFzcyByYXdfaGFz
aF9zZXQgewogICAgICAgfQogICAgICAgc2l6ZV8gPSAwOwogICAgICAgcmVzZXRfY3RybCgpOwot
ICAgICAgZ3Jvd3RoX2xlZnQoKSA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2FwYWNpdHlfICoga01h
eExvYWRGYWN0b3IpOworICAgICAgcmVzZXRfZ3Jvd3RoX2xlZnQoKTsKICAgICB9CiAgICAgYXNz
ZXJ0KGVtcHR5KCkpOworICAgIGluZm96Xy5SZWNvcmRTdG9yYWdlQ2hhbmdlZCgwLCBjYXBhY2l0
eV8pOwogICB9CiAKICAgLy8gVGhpcyBvdmVybG9hZCBraWNrcyBpbiB3aGVuIHRoZSBhcmd1bWVu
dCBpcyBhbiBydmFsdWUgb2YgaW5zZXJ0YWJsZSBhbmQKQEAgLTEwODMsNyArOTY5LDcgQEAgY2xh
c3MgcmF3X2hhc2hfc2V0IHsKICAgLy8gVGhpcyBvdmVybG9hZCBraWNrcyBpbiB3aGVuIHRoZSBh
cmd1bWVudCBpcyBhbiBydmFsdWUgb2YgaW5pdF90eXBlLiBJdHMKICAgLy8gcHVycG9zZSBpcyB0
byBoYW5kbGUgYnJhY2UtaW5pdC1saXN0IGFyZ3VtZW50cy4KICAgLy8KLSAgLy8gICBmbGF0X2hh
c2hfc2V0PHN0ZDo6c3RyaW5nLCBpbnQ+IHM7CisgIC8vICAgZmxhdF9oYXNoX21hcDxzdGQ6OnN0
cmluZywgaW50PiBzOwogICAvLyAgIHMuaW5zZXJ0KHsiYWJjIiwgNDJ9KTsKICAgc3RkOjpwYWly
PGl0ZXJhdG9yLCBib29sPiBpbnNlcnQoaW5pdF90eXBlJiYgdmFsdWUpIHsKICAgICByZXR1cm4g
ZW1wbGFjZShzdGQ6Om1vdmUodmFsdWUpKTsKQEAgLTExMjQsMTMgKzEwMTAsMTQgQEAgY2xhc3Mg
cmF3X2hhc2hfc2V0IHsKICAgICBpbnNlcnQoaWxpc3QuYmVnaW4oKSwgaWxpc3QuZW5kKCkpOwog
ICB9CiAKLSAgaW5zZXJ0X3JldHVybl90eXBlPGl0ZXJhdG9yLCBub2RlX3R5cGU+IGluc2VydChu
b2RlX3R5cGUmJiBub2RlKSB7CisgIGluc2VydF9yZXR1cm5fdHlwZSBpbnNlcnQobm9kZV90eXBl
JiYgbm9kZSkgewogICAgIGlmICghbm9kZSkgcmV0dXJuIHtlbmQoKSwgZmFsc2UsIG5vZGVfdHlw
ZSgpfTsKLSAgICBjb25zdCBhdXRvJiBlbGVtID0gUG9saWN5VHJhaXRzOjplbGVtZW50KG5vZGUu
c2xvdCgpKTsKKyAgICBjb25zdCBhdXRvJiBlbGVtID0gUG9saWN5VHJhaXRzOjplbGVtZW50KENv
bW1vbkFjY2Vzczo6R2V0U2xvdChub2RlKSk7CiAgICAgYXV0byByZXMgPSBQb2xpY3lUcmFpdHM6
OmFwcGx5KAotICAgICAgICBJbnNlcnRTbG90PGZhbHNlPnsqdGhpcywgc3RkOjptb3ZlKCpub2Rl
LnNsb3QoKSl9LCBlbGVtKTsKKyAgICAgICAgSW5zZXJ0U2xvdDxmYWxzZT57KnRoaXMsIHN0ZDo6
bW92ZSgqQ29tbW9uQWNjZXNzOjpHZXRTbG90KG5vZGUpKX0sCisgICAgICAgIGVsZW0pOwogICAg
IGlmIChyZXMuc2Vjb25kKSB7Ci0gICAgICBub2RlLnJlc2V0KCk7CisgICAgICBDb21tb25BY2Nl
c3M6OlJlc2V0KCZub2RlKTsKICAgICAgIHJldHVybiB7cmVzLmZpcnN0LCB0cnVlLCBub2RlX3R5
cGUoKX07CiAgICAgfSBlbHNlIHsKICAgICAgIHJldHVybiB7cmVzLmZpcnN0LCBmYWxzZSwgc3Rk
Ojptb3ZlKG5vZGUpfTsKQEAgLTEyOTQsNyArMTE4MSw4IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7
CiAgIH0KIAogICBub2RlX3R5cGUgZXh0cmFjdChjb25zdF9pdGVyYXRvciBwb3NpdGlvbikgewot
ICAgIG5vZGVfdHlwZSBub2RlKGFsbG9jX3JlZigpLCBwb3NpdGlvbi5pbm5lcl8uc2xvdF8pOwor
ICAgIGF1dG8gbm9kZSA9CisgICAgICAgIENvbW1vbkFjY2Vzczo6VHJhbnNmZXI8bm9kZV90eXBl
PihhbGxvY19yZWYoKSwgcG9zaXRpb24uaW5uZXJfLnNsb3RfKTsKICAgICBlcmFzZV9tZXRhX29u
bHkocG9zaXRpb24pOwogICAgIHJldHVybiBub2RlOwogICB9CkBAIC0xMzE5LDYgKzEyMDcsNyBA
QCBjbGFzcyByYXdfaGFzaF9zZXQgewogICAgIHN3YXAoZ3Jvd3RoX2xlZnQoKSwgdGhhdC5ncm93
dGhfbGVmdCgpKTsKICAgICBzd2FwKGhhc2hfcmVmKCksIHRoYXQuaGFzaF9yZWYoKSk7CiAgICAg
c3dhcChlcV9yZWYoKSwgdGhhdC5lcV9yZWYoKSk7CisgICAgc3dhcChpbmZvel8sIHRoYXQuaW5m
b3pfKTsKICAgICBpZiAoQWxsb2NUcmFpdHM6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6
dmFsdWUpIHsKICAgICAgIHN3YXAoYWxsb2NfcmVmKCksIHRoYXQuYWxsb2NfcmVmKCkpOwogICAg
IH0gZWxzZSB7CkBAIC0xMzI5LDE3ICsxMjE4LDIxIEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAK
ICAgdm9pZCByZWhhc2goc2l6ZV90IG4pIHsKICAgICBpZiAobiA9PSAwICYmIGNhcGFjaXR5XyA9
PSAwKSByZXR1cm47Ci0gICAgaWYgKG4gPT0gMCAmJiBzaXplXyA9PSAwKSByZXR1cm4gZGVzdHJv
eV9zbG90cygpOwotICAgIGF1dG8gbSA9IE5vcm1hbGl6ZUNhcGFjaXR5KHN0ZDo6bWF4KG4sIE51
bVNsb3RzRmFzdChzaXplKCkpKSk7CisgICAgaWYgKG4gPT0gMCAmJiBzaXplXyA9PSAwKSB7Cisg
ICAgICBkZXN0cm95X3Nsb3RzKCk7CisgICAgICBpbmZvel8uUmVjb3JkU3RvcmFnZUNoYW5nZWQo
MCwgMCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIGJpdG9yIGlzIGEgZmFzdGVyIHdh
eSBvZiBkb2luZyBgbWF4YCBoZXJlLiBXZSB3aWxsIHJvdW5kIHVwIHRvIHRoZSBuZXh0CisgICAg
Ly8gcG93ZXItb2YtMi1taW51cy0xLCBzbyBiaXRvciBpcyBnb29kIGVub3VnaC4KKyAgICBhdXRv
IG0gPSBOb3JtYWxpemVDYXBhY2l0eShuIHwgR3Jvd3RoVG9Mb3dlcmJvdW5kQ2FwYWNpdHkoc2l6
ZSgpKSk7CiAgICAgLy8gbiA9PSAwIHVuY29uZGl0aW9uYWxseSByZWhhc2hlcyBhcyBwZXIgdGhl
IHN0YW5kYXJkLgogICAgIGlmIChuID09IDAgfHwgbSA+IGNhcGFjaXR5XykgewogICAgICAgcmVz
aXplKG0pOwogICAgIH0KICAgfQogCi0gIHZvaWQgcmVzZXJ2ZShzaXplX3QgbikgewotICAgIHJl
aGFzaChOdW1TbG90c0Zhc3QobikpOwotICB9CisgIHZvaWQgcmVzZXJ2ZShzaXplX3QgbikgeyBy
ZWhhc2goR3Jvd3RoVG9Mb3dlcmJvdW5kQ2FwYWNpdHkobikpOyB9CiAKICAgLy8gRXh0ZW5zaW9u
IEFQSTogc3VwcG9ydCBmb3IgaGV0ZXJvZ2VuZW91cyBrZXlzLgogICAvLwpAQCAtMTUxNywxMyAr
MTQxMCw2IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAgICAgc2xvdF90eXBlJiYgc2xvdDsKICAg
fTsKIAotICAvLyBDb21wdXRlcyBzdGQ6OmNlaWwobiAvIGtNYXhMb2FkRmFjdG9yKS4gRmFzdGVy
IHRoYW4gY2FsbGluZyBzdGQ6OmNlaWwuCi0gIHN0YXRpYyBpbmxpbmUgc2l6ZV90IE51bVNsb3Rz
RmFzdChzaXplX3QgbikgewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KAotICAgICAg
ICAobiAqIGtNYXhMb2FkRmFjdG9yRGVub21pbmF0b3IgKyAoa01heExvYWRGYWN0b3JOdW1lcmF0
b3IgLSAxKSkgLwotICAgICAgICBrTWF4TG9hZEZhY3Rvck51bWVyYXRvcik7Ci0gIH0KLQogICAv
LyAiZXJhc2VzIiB0aGUgb2JqZWN0IGZyb20gdGhlIGNvbnRhaW5lciwgZXhjZXB0IHRoYXQgaXQg
ZG9lc24ndCBhY3R1YWxseQogICAvLyBkZXN0cm95IHRoZSBvYmplY3QuIEl0IG9ubHkgdXBkYXRl
cyBhbGwgdGhlIG1ldGFkYXRhIG9mIHRoZSBjbGFzcy4KICAgLy8gVGhpcyBjYW4gYmUgdXNlZCBp
biBjb25qdW5jdGlvbiB3aXRoIFBvbGljeTo6dHJhbnNmZXIgdG8gbW92ZSB0aGUgb2JqZWN0IHRv
CkBAIC0xNTQ2LDE3ICsxNDMyLDM0IEBAIGNsYXNzIHJhd19oYXNoX3NldCB7CiAKICAgICBzZXRf
Y3RybChpbmRleCwgd2FzX25ldmVyX2Z1bGwgPyBrRW1wdHkgOiBrRGVsZXRlZCk7CiAgICAgZ3Jv
d3RoX2xlZnQoKSArPSB3YXNfbmV2ZXJfZnVsbDsKKyAgICBpbmZvel8uUmVjb3JkRXJhc2UoKTsK
ICAgfQogCiAgIHZvaWQgaW5pdGlhbGl6ZV9zbG90cygpIHsKICAgICBhc3NlcnQoY2FwYWNpdHlf
KTsKKyAgICAvLyBGb2xrcyB3aXRoIGN1c3RvbSBhbGxvY2F0b3JzIG9mdGVuIG1ha2UgdW53YXJy
YW50ZWQgYXNzdW1wdGlvbnMgYWJvdXQgdGhlCisgICAgLy8gYmVoYXZpb3Igb2YgdGhlaXIgY2xh
c3NlcyB2aXMtYS12aXMgdHJpdmlhbCBkZXN0cnVjdGFiaWxpdHkgYW5kIHdoYXQKKyAgICAvLyBj
YWxscyB0aGV5IHdpbGwgb3Igd29udCBtYWtlLiAgQXZvaWQgc2FtcGxpbmcgZm9yIHBlb3BsZSB3
aXRoIGN1c3RvbQorICAgIC8vIGFsbG9jYXRvcnMgdG8gZ2V0IHVzIG91dCBvZiB0aGlzIG1lc3Mu
ICBUaGlzIGlzIG5vdCBhIGhhcmQgZ3VhcmFudGVlIGJ1dAorICAgIC8vIGEgd29ya2Fyb3VuZCB3
aGlsZSB3ZSBwbGFuIHRoZSBleGFjdCBndWFyYW50ZWUgd2Ugd2FudCB0byBwcm92aWRlLgorICAg
IC8vCisgICAgLy8gUGVvcGxlIGFyZSBvZnRlbiBzbG9wcHkgd2l0aCB0aGUgZXhhY3QgdHlwZSBv
ZiB0aGVpciBhbGxvY2F0b3IgKHNvbWV0aW1lcworICAgIC8vIGl0IGhhcyBhbiBleHRyYSBjb25z
dCBvciBpcyBtaXNzaW5nIHRoZSBwYWlyLCBidXQgcmViaW5kcyBtYWRlIGl0IHdvcmsKKyAgICAv
LyBhbnl3YXkpLiAgVG8gYXZvaWQgdGhlIGFtYmlndWl0eSwgd2Ugd29yayBvZmYgU2xvdEFsbG9j
IHdoaWNoIHdlIGhhdmUKKyAgICAvLyBib3VuZCBtb3JlIGNhcmVmdWxseS4KKyAgICBpZiAoc3Rk
Ojppc19zYW1lPFNsb3RBbGxvYywgc3RkOjphbGxvY2F0b3I8c2xvdF90eXBlPj46OnZhbHVlICYm
CisgICAgICAgIHNsb3RzXyA9PSBudWxscHRyKSB7CisgICAgICBpbmZvel8gPSBTYW1wbGUoKTsK
KyAgICB9CisKICAgICBhdXRvIGxheW91dCA9IE1ha2VMYXlvdXQoY2FwYWNpdHlfKTsKICAgICBj
aGFyKiBtZW0gPSBzdGF0aWNfY2FzdDxjaGFyKj4oCiAgICAgICAgIEFsbG9jYXRlPExheW91dDo6
QWxpZ25tZW50KCk+KCZhbGxvY19yZWYoKSwgbGF5b3V0LkFsbG9jU2l6ZSgpKSk7CiAgICAgY3Ry
bF8gPSByZWludGVycHJldF9jYXN0PGN0cmxfdCo+KGxheW91dC50ZW1wbGF0ZSBQb2ludGVyPDA+
KG1lbSkpOwogICAgIHNsb3RzXyA9IGxheW91dC50ZW1wbGF0ZSBQb2ludGVyPDE+KG1lbSk7CiAg
ICAgcmVzZXRfY3RybCgpOwotICAgIGdyb3d0aF9sZWZ0KCkgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGNhcGFjaXR5XyAqIGtNYXhMb2FkRmFjdG9yKSAtIHNpemVfOworICAgIHJlc2V0X2dyb3d0aF9s
ZWZ0KCk7CisgICAgaW5mb3pfLlJlY29yZFN0b3JhZ2VDaGFuZ2VkKHNpemVfLCBjYXBhY2l0eV8p
OwogICB9CiAKICAgdm9pZCBkZXN0cm95X3Nsb3RzKCkgewpAQCAtMTU4NSwxMSArMTQ4OCwxNCBA
QCBjbGFzcyByYXdfaGFzaF9zZXQgewogICAgIGNhcGFjaXR5XyA9IG5ld19jYXBhY2l0eTsKICAg
ICBpbml0aWFsaXplX3Nsb3RzKCk7CiAKKyAgICBzaXplX3QgdG90YWxfcHJvYmVfbGVuZ3RoID0g
MDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBvbGRfY2FwYWNpdHk7ICsraSkgewogICAg
ICAgaWYgKElzRnVsbChvbGRfY3RybFtpXSkpIHsKICAgICAgICAgc2l6ZV90IGhhc2ggPSBQb2xp
Y3lUcmFpdHM6OmFwcGx5KEhhc2hFbGVtZW50e2hhc2hfcmVmKCl9LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9saWN5VHJhaXRzOjplbGVtZW50KG9sZF9zbG90
cyArIGkpKTsKLSAgICAgICAgc2l6ZV90IG5ld19pID0gZmluZF9maXJzdF9ub25fZnVsbChoYXNo
KTsKKyAgICAgICAgYXV0byB0YXJnZXQgPSBmaW5kX2ZpcnN0X25vbl9mdWxsKGhhc2gpOworICAg
ICAgICBzaXplX3QgbmV3X2kgPSB0YXJnZXQub2Zmc2V0OworICAgICAgICB0b3RhbF9wcm9iZV9s
ZW5ndGggKz0gdGFyZ2V0LnByb2JlX2xlbmd0aDsKICAgICAgICAgc2V0X2N0cmwobmV3X2ksIEgy
KGhhc2gpKTsKICAgICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2ZlcigmYWxsb2NfcmVmKCksIHNs
b3RzXyArIG5ld19pLCBvbGRfc2xvdHMgKyBpKTsKICAgICAgIH0KQEAgLTE2MDEsMTAgKzE1MDcs
MTIgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgICAgIERlYWxsb2NhdGU8TGF5b3V0OjpBbGln
bm1lbnQoKT4oJmFsbG9jX3JlZigpLCBvbGRfY3RybCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGF5b3V0LkFsbG9jU2l6ZSgpKTsKICAgICB9CisgICAgaW5mb3pfLlJl
Y29yZFJlaGFzaCh0b3RhbF9wcm9iZV9sZW5ndGgpOwogICB9CiAKICAgdm9pZCBkcm9wX2RlbGV0
ZXNfd2l0aG91dF9yZXNpemUoKSBBQlNMX0FUVFJJQlVURV9OT0lOTElORSB7CiAgICAgYXNzZXJ0
KElzVmFsaWRDYXBhY2l0eShjYXBhY2l0eV8pKTsKKyAgICBhc3NlcnQoIWlzX3NtYWxsKCkpOwog
ICAgIC8vIEFsZ29yaXRobToKICAgICAvLyAtIG1hcmsgYWxsIERFTEVURUQgc2xvdHMgYXMgRU1Q
VFkKICAgICAvLyAtIG1hcmsgYWxsIEZVTEwgc2xvdHMgYXMgREVMRVRFRApAQCAtMTYyNCwxMiAr
MTUzMiwxNSBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewogICAgIENvbnZlcnREZWxldGVkVG9FbXB0
eUFuZEZ1bGxUb0RlbGV0ZWQoY3RybF8sIGNhcGFjaXR5Xyk7CiAgICAgdHlwZW5hbWUgc3RkOjph
bGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKHNsb3RfdHlwZSksIGFsaWdub2Yoc2xvdF90eXBlKT46OnR5
cGUKICAgICAgICAgcmF3OworICAgIHNpemVfdCB0b3RhbF9wcm9iZV9sZW5ndGggPSAwOwogICAg
IHNsb3RfdHlwZSogc2xvdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2xvdF90eXBlKj4oJnJhdyk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gY2FwYWNpdHlfOyArK2kpIHsKICAgICAgIGlmICgh
SXNEZWxldGVkKGN0cmxfW2ldKSkgY29udGludWU7CiAgICAgICBzaXplX3QgaGFzaCA9IFBvbGlj
eVRyYWl0czo6YXBwbHkoSGFzaEVsZW1lbnR7aGFzaF9yZWYoKX0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUG9saWN5VHJhaXRzOjplbGVtZW50KHNsb3RzXyArIGkp
KTsKLSAgICAgIHNpemVfdCBuZXdfaSA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAg
ICBhdXRvIHRhcmdldCA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAgICBzaXplX3Qg
bmV3X2kgPSB0YXJnZXQub2Zmc2V0OworICAgICAgdG90YWxfcHJvYmVfbGVuZ3RoICs9IHRhcmdl
dC5wcm9iZV9sZW5ndGg7CiAKICAgICAgIC8vIFZlcmlmeSBpZiB0aGUgb2xkIGFuZCBuZXcgaSBm
YWxsIHdpdGhpbiB0aGUgc2FtZSBncm91cCB3cnQgdGhlIGhhc2guCiAgICAgICAvLyBJZiB0aGV5
IGRvLCB3ZSBkb24ndCBuZWVkIHRvIG1vdmUgdGhlIG9iamVjdCBhcyBpdCBmYWxscyBhbHJlYWR5
IGluIHRoZQpAQCAtMTY2MSwxMyArMTU3MiwxNCBAQCBjbGFzcyByYXdfaGFzaF9zZXQgewogICAg
ICAgICAtLWk7ICAvLyByZXBlYXQKICAgICAgIH0KICAgICB9Ci0gICAgZ3Jvd3RoX2xlZnQoKSA9
IHN0YXRpY19jYXN0PHNpemVfdD4oY2FwYWNpdHlfICoga01heExvYWRGYWN0b3IpIC0gc2l6ZV87
CisgICAgcmVzZXRfZ3Jvd3RoX2xlZnQoKTsKKyAgICBpbmZvel8uUmVjb3JkUmVoYXNoKHRvdGFs
X3Byb2JlX2xlbmd0aCk7CiAgIH0KIAogICB2b2lkIHJlaGFzaF9hbmRfZ3Jvd19pZl9uZWNlc3Nh
cnkoKSB7CiAgICAgaWYgKGNhcGFjaXR5XyA9PSAwKSB7Ci0gICAgICByZXNpemUoR3JvdXA6OmtX
aWR0aCAtIDEpOwotICAgIH0gZWxzZSBpZiAoc2l6ZSgpIDw9IGtNYXhMb2FkRmFjdG9yIC8gMiAq
IGNhcGFjaXR5XykgeworICAgICAgcmVzaXplKDEpOworICAgIH0gZWxzZSBpZiAoc2l6ZSgpIDw9
IENhcGFjaXR5VG9Hcm93dGgoY2FwYWNpdHkoKSkgLyAyKSB7CiAgICAgICAvLyBTcXVhc2ggREVM
RVRFRCB3aXRob3V0IGdyb3dpbmcgaWYgdGhlcmUgaXMgZW5vdWdoIGNhcGFjaXR5LgogICAgICAg
ZHJvcF9kZWxldGVzX3dpdGhvdXRfcmVzaXplKCk7CiAgICAgfSBlbHNlIHsKQEAgLTE3MDIsMjQg
KzE2MTQsMjYgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgLy8gLSB0aGUgaW5wdXQgaXMgYWxy
ZWFkeSBhIHNldAogICAvLyAtIHRoZXJlIGFyZSBlbm91Z2ggc2xvdHMKICAgLy8gLSB0aGUgZWxl
bWVudCB3aXRoIHRoZSBoYXNoIGlzIG5vdCBpbiB0aGUgdGFibGUKLSAgc2l6ZV90IGZpbmRfZmly
c3Rfbm9uX2Z1bGwoc2l6ZV90IGhhc2gpIHsKKyAgc3RydWN0IEZpbmRJbmZvIHsKKyAgICBzaXpl
X3Qgb2Zmc2V0OworICAgIHNpemVfdCBwcm9iZV9sZW5ndGg7CisgIH07CisgIEZpbmRJbmZvIGZp
bmRfZmlyc3Rfbm9uX2Z1bGwoc2l6ZV90IGhhc2gpIHsKICAgICBhdXRvIHNlcSA9IHByb2JlKGhh
c2gpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICBHcm91cCBne2N0cmxfICsgc2VxLm9mZnNl
dCgpfTsKICAgICAgIGF1dG8gbWFzayA9IGcuTWF0Y2hFbXB0eU9yRGVsZXRlZCgpOwogICAgICAg
aWYgKG1hc2spIHsKICNpZiAhZGVmaW5lZChOREVCVUcpCi0gICAgICAgIC8vIFdlIHdhbnQgdG8g
Zm9yY2Ugc21hbGwgdGFibGVzIHRvIGhhdmUgcmFuZG9tIGVudHJpZXMgdG9vLCBzbwotICAgICAg
ICAvLyBpbiBkZWJ1ZyBidWlsZCB3ZSB3aWxsIHJhbmRvbWx5IGluc2VydCBpbiBlaXRoZXIgdGhl
IGZyb250IG9yIGJhY2sgb2YKKyAgICAgICAgLy8gV2Ugd2FudCB0byBhZGQgZW50cm9weSBldmVu
IHdoZW4gQVNMUiBpcyBub3QgZW5hYmxlZC4KKyAgICAgICAgLy8gSW4gZGVidWcgYnVpbGQgd2Ug
d2lsbCByYW5kb21seSBpbnNlcnQgaW4gZWl0aGVyIHRoZSBmcm9udCBvciBiYWNrIG9mCiAgICAg
ICAgIC8vIHRoZSBncm91cC4KICAgICAgICAgLy8gVE9ETyhrZm0sc2JlbnphKTogcmV2aXNpdCBh
ZnRlciB3ZSBkbyB1bmNvbmRpdGlvbmFsIG1peGluZwotICAgICAgICBpZiAoU2hvdWxkSW5zZXJ0
QmFja3dhcmRzKGhhc2gsIGN0cmxfKSkKLSAgICAgICAgICByZXR1cm4gc2VxLm9mZnNldChtYXNr
LkhpZ2hlc3RCaXRTZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1cm4gc2VxLm9m
ZnNldChtYXNrLkxvd2VzdEJpdFNldCgpKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBzZXEub2Zm
c2V0KG1hc2suTG93ZXN0Qml0U2V0KCkpOworICAgICAgICBpZiAoIWlzX3NtYWxsKCkgJiYgU2hv
dWxkSW5zZXJ0QmFja3dhcmRzKGhhc2gsIGN0cmxfKSkgeworICAgICAgICAgIHJldHVybiB7c2Vx
Lm9mZnNldChtYXNrLkhpZ2hlc3RCaXRTZXQoKSksIHNlcS5pbmRleCgpfTsKKyAgICAgICAgfQog
I2VuZGlmCisgICAgICAgIHJldHVybiB7c2VxLm9mZnNldChtYXNrLkxvd2VzdEJpdFNldCgpKSwg
c2VxLmluZGV4KCl9OwogICAgICAgfQogICAgICAgYXNzZXJ0KHNlcS5pbmRleCgpIDwgY2FwYWNp
dHlfICYmICJmdWxsIHRhYmxlISIpOwogICAgICAgc2VxLm5leHQoKTsKQEAgLTE3NTgsMTUgKzE2
NzIsMTcgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgfQogCiAgIHNpemVfdCBwcmVwYXJlX2lu
c2VydChzaXplX3QgaGFzaCkgQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUgewotICAgIHNpemVfdCB0
YXJnZXQgPSBmaW5kX2ZpcnN0X25vbl9mdWxsKGhhc2gpOwotICAgIGlmIChBQlNMX1BSRURJQ1Rf
RkFMU0UoZ3Jvd3RoX2xlZnQoKSA9PSAwICYmICFJc0RlbGV0ZWQoY3RybF9bdGFyZ2V0XSkpKSB7
CisgICAgYXV0byB0YXJnZXQgPSBmaW5kX2ZpcnN0X25vbl9mdWxsKGhhc2gpOworICAgIGlmIChB
QlNMX1BSRURJQ1RfRkFMU0UoZ3Jvd3RoX2xlZnQoKSA9PSAwICYmCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAhSXNEZWxldGVkKGN0cmxfW3RhcmdldC5vZmZzZXRdKSkpIHsKICAgICAgIHJl
aGFzaF9hbmRfZ3Jvd19pZl9uZWNlc3NhcnkoKTsKICAgICAgIHRhcmdldCA9IGZpbmRfZmlyc3Rf
bm9uX2Z1bGwoaGFzaCk7CiAgICAgfQogICAgICsrc2l6ZV87Ci0gICAgZ3Jvd3RoX2xlZnQoKSAt
PSBJc0VtcHR5KGN0cmxfW3RhcmdldF0pOwotICAgIHNldF9jdHJsKHRhcmdldCwgSDIoaGFzaCkp
OwotICAgIHJldHVybiB0YXJnZXQ7CisgICAgZ3Jvd3RoX2xlZnQoKSAtPSBJc0VtcHR5KGN0cmxf
W3RhcmdldC5vZmZzZXRdKTsKKyAgICBzZXRfY3RybCh0YXJnZXQub2Zmc2V0LCBIMihoYXNoKSk7
CisgICAgaW5mb3pfLlJlY29yZEluc2VydChoYXNoLCB0YXJnZXQucHJvYmVfbGVuZ3RoKTsKKyAg
ICByZXR1cm4gdGFyZ2V0Lm9mZnNldDsKICAgfQogCiAgIC8vIENvbnN0cnVjdHMgdGhlIHZhbHVl
IGluIHRoZSBzcGFjZSBwb2ludGVkIGJ5IHRoZSBpdGVyYXRvci4gVGhpcyBvbmx5IHdvcmtzCkBA
IC0xODA0LDYgKzE3MjAsMTAgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsKICAgICBTYW5pdGl6ZXJQ
b2lzb25NZW1vcnlSZWdpb24oc2xvdHNfLCBzaXplb2Yoc2xvdF90eXBlKSAqIGNhcGFjaXR5Xyk7
CiAgIH0KIAorICB2b2lkIHJlc2V0X2dyb3d0aF9sZWZ0KCkgeworICAgIGdyb3d0aF9sZWZ0KCkg
PSBDYXBhY2l0eVRvR3Jvd3RoKGNhcGFjaXR5KCkpIC0gc2l6ZV87CisgIH0KKwogICAvLyBTZXRz
IHRoZSBjb250cm9sIGJ5dGUsIGFuZCBpZiBgaSA8IEdyb3VwOjprV2lkdGhgLCBzZXQgdGhlIGNs
b25lZCBieXRlIGF0CiAgIC8vIHRoZSBlbmQgdG9vLgogICB2b2lkIHNldF9jdHJsKHNpemVfdCBp
LCBjdHJsX3QgaCkgewpAQCAtMTgxNiwxMSArMTczNiwyOCBAQCBjbGFzcyByYXdfaGFzaF9zZXQg
ewogICAgIH0KIAogICAgIGN0cmxfW2ldID0gaDsKLSAgICBjdHJsX1soKGkgLSBHcm91cDo6a1dp
ZHRoKSAmIGNhcGFjaXR5XykgKyBHcm91cDo6a1dpZHRoXSA9IGg7CisgICAgY3RybF9bKChpIC0g
R3JvdXA6OmtXaWR0aCkgJiBjYXBhY2l0eV8pICsgMSArCisgICAgICAgICAgKChHcm91cDo6a1dp
ZHRoIC0gMSkgJiBjYXBhY2l0eV8pXSA9IGg7CiAgIH0KIAogICBzaXplX3QmIGdyb3d0aF9sZWZ0
KCkgeyByZXR1cm4gc2V0dGluZ3NfLnRlbXBsYXRlIGdldDwwPigpOyB9CiAKKyAgLy8gVGhlIHJl
cHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QgaGFzIHR3byBtb2RlczoKKyAgLy8gIC0gc21hbGw6
IEZvciBjYXBhY2l0aWVzIDwga1dpZHRoLTEKKyAgLy8gIC0gbGFyZ2U6IEZvciB0aGUgcmVzdC4K
KyAgLy8KKyAgLy8gRGlmZmVyZW5jZXM6CisgIC8vICAtIEluIHNtYWxsIG1vZGUgd2UgYXJlIGFi
bGUgdG8gdXNlIHRoZSB3aG9sZSBjYXBhY2l0eS4gVGhlIGV4dHJhIGNvbnRyb2wKKyAgLy8gIGJ5
dGVzIGdpdmUgdXMgYXQgbGVhc3Qgb25lICJlbXB0eSIgY29udHJvbCBieXRlIHRvIHN0b3AgdGhl
IGl0ZXJhdGlvbi4KKyAgLy8gIFRoaXMgaXMgaW1wb3J0YW50IHRvIG1ha2UgMSBhIHZhbGlkIGNh
cGFjaXR5LgorICAvLworICAvLyAgLSBJbiBzbWFsbCBtb2RlIG9ubHkgdGhlIGZpcnN0IGBjYXBh
Y2l0eSgpYCBjb250cm9sIGJ5dGVzIGFmdGVyIHRoZQorICAvLyAgc2VudGluZWwgYXJlIHZhbGlk
LiBUaGUgcmVzdCBjb250YWluIGR1bW15IGtFbXB0eSB2YWx1ZXMgdGhhdCBkbyBub3QKKyAgLy8g
IHJlcHJlc2VudCBhIHJlYWwgc2xvdC4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gdGFrZSBpbnRvIGFj
Y291bnQgb24KKyAgLy8gIGZpbmRfZmlyc3Rfbm9uX2Z1bGwoKSwgd2hlcmUgd2UgbmV2ZXIgdHJ5
IFNob3VsZEluc2VydEJhY2t3YXJkcygpIGZvcgorICAvLyAgc21hbGwgdGFibGVzLgorICBib29s
IGlzX3NtYWxsKCkgY29uc3QgeyByZXR1cm4gY2FwYWNpdHlfIDwgR3JvdXA6OmtXaWR0aCAtIDE7
IH0KKwogICBoYXNoZXImIGhhc2hfcmVmKCkgeyByZXR1cm4gc2V0dGluZ3NfLnRlbXBsYXRlIGdl
dDwxPigpOyB9CiAgIGNvbnN0IGhhc2hlciYgaGFzaF9yZWYoKSBjb25zdCB7IHJldHVybiBzZXR0
aW5nc18udGVtcGxhdGUgZ2V0PDE+KCk7IH0KICAga2V5X2VxdWFsJiBlcV9yZWYoKSB7IHJldHVy
biBzZXR0aW5nc18udGVtcGxhdGUgZ2V0PDI+KCk7IH0KQEAgLTE4MzAsMTIgKzE3NjcsNiBAQCBj
bGFzcyByYXdfaGFzaF9zZXQgewogICAgIHJldHVybiBzZXR0aW5nc18udGVtcGxhdGUgZ2V0PDM+
KCk7CiAgIH0KIAotICAvLyBPbiBhdmVyYWdlIGVhY2ggZ3JvdXAgaGFzIDIgZW1wdHkgc2xvdCAo
Zm9yIHRoZSB2ZWN0b3JpemVkIGNhc2UpLgotICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qga01h
eExvYWRGYWN0b3JOdW1lcmF0b3IgPSAxNDsKLSAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IGtN
YXhMb2FkRmFjdG9yRGVub21pbmF0b3IgPSAxNjsKLSAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBr
TWF4TG9hZEZhY3RvciA9Ci0gICAgICAxLjAgKiBrTWF4TG9hZEZhY3Rvck51bWVyYXRvciAvIGtN
YXhMb2FkRmFjdG9yRGVub21pbmF0b3I7Ci0KICAgLy8gVE9ETyhhbGtpcyk6IEludmVzdGlnYXRl
IHJlbW92aW5nIHNvbWUgb2YgdGhlc2UgZmllbGRzOgogICAvLyAtIGN0cmwvc2xvdHMgY2FuIGJl
IGRlcml2ZWQgZnJvbSBlYWNoIG90aGVyCiAgIC8vIC0gc2l6ZSBjYW4gYmUgbW92ZWQgaW50byB0
aGUgc2xvdCBhcnJheQpAQCAtMTg0Myw2ICsxNzc0LDcgQEAgY2xhc3MgcmF3X2hhc2hfc2V0IHsK
ICAgc2xvdF90eXBlKiBzbG90c18gPSBudWxscHRyOyAgICAgLy8gW2NhcGFjaXR5ICogc2xvdF90
eXBlXQogICBzaXplX3Qgc2l6ZV8gPSAwOyAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2YgZnVs
bCBzbG90cwogICBzaXplX3QgY2FwYWNpdHlfID0gMDsgICAgICAgICAgICAvLyB0b3RhbCBudW1i
ZXIgb2Ygc2xvdHMKKyAgSGFzaHRhYmxlekluZm9IYW5kbGUgaW5mb3pfOwogICBhYnNsOjpjb250
YWluZXJfaW50ZXJuYWw6OkNvbXByZXNzZWRUdXBsZTxzaXplX3QgLyogZ3Jvd3RoX2xlZnQgKi8s
IGhhc2hlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5
X2VxdWFsLCBhbGxvY2F0b3JfdHlwZT4KICAgICAgIHNldHRpbmdzX3swLCBoYXNoZXJ7fSwga2V5
X2VxdWFse30sIGFsbG9jYXRvcl90eXBle319OwpAQCAtMTg5NSwxMCArMTgyNyw5IEBAIHN0cnVj
dCBIYXNodGFibGVEZWJ1Z0FjY2VzczxTZXQsIGFic2w6OnZvaWRfdDx0eXBlbmFtZSBTZXQ6OnJh
d19oYXNoX3NldD4+IHsKICAgfQogCiAgIHN0YXRpYyBzaXplX3QgTG93ZXJCb3VuZEFsbG9jYXRl
ZEJ5dGVTaXplKHNpemVfdCBzaXplKSB7Ci0gICAgc2l6ZV90IGNhcGFjaXR5ID0gY29udGFpbmVy
X2ludGVybmFsOjpOb3JtYWxpemVDYXBhY2l0eSgKLSAgICAgICAgc3RkOjpjZWlsKHNpemUgLyBT
ZXQ6OmtNYXhMb2FkRmFjdG9yKSk7CisgICAgc2l6ZV90IGNhcGFjaXR5ID0gR3Jvd3RoVG9Mb3dl
cmJvdW5kQ2FwYWNpdHkoc2l6ZSk7CiAgICAgaWYgKGNhcGFjaXR5ID09IDApIHJldHVybiAwOwot
ICAgIGF1dG8gbGF5b3V0ID0gU2V0OjpNYWtlTGF5b3V0KGNhcGFjaXR5KTsKKyAgICBhdXRvIGxh
eW91dCA9IFNldDo6TWFrZUxheW91dChOb3JtYWxpemVDYXBhY2l0eShjYXBhY2l0eSkpOwogICAg
IHNpemVfdCBtID0gbGF5b3V0LkFsbG9jU2l6ZSgpOwogICAgIHNpemVfdCBwZXJfc2xvdCA9IFRy
YWl0czo6c3BhY2VfdXNlZChzdGF0aWNfY2FzdDxjb25zdCBTbG90Kj4obnVsbHB0cikpOwogICAg
IGlmIChwZXJfc2xvdCAhPSB+c2l6ZV90e30pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9yYXdfaGFzaF9zZXRfYWxsb2NhdG9yX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0LmNjCmluZGV4IDg5MWZhNDUw
ZmUwOGMyMjNlMjAyYjU4ZmMzOGEwMmI4YmY3NzgyMmIuLmE1ZWZmMGIzZDI3ZmE3NzA2NjhmZDhj
NGQzNDJkNTViZDdmOGQ1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9y
YXdfaGFzaF9zZXRfYWxsb2NhdG9yX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL3Jhd19oYXNoX3NldF9hbGxvY2F0b3JfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L3Jhd19oYXNoX3NldF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNo
X3NldF90ZXN0LmNjCmluZGV4IGNkMzNhM2FjYjkxNzg4ODg4NTVmZjkxZGU5NDE0NjkzNGM4Mzc1
NTYuLmVkNGNhOGM4OGQzYjY4MjM4NTYxN2Q1NjI1MWE3NzZlMTFjYmNmYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXRfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDcgKzE0LDYgQEAKIAogI2luY2x1ZGUg
ImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5oIgogCi0jaW5jbHVkZSA8YXJy
YXk+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxkZXF1
ZT4KQEAgLTQ5LDE4ICs0OCw0NyBAQCBuYW1lc3BhY2UgewogCiB1c2luZyA6OnRlc3Rpbmc6OkRv
dWJsZU5lYXI7CiB1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlOwordXNpbmcgOjp0ZXN0aW5n
OjpHZTsKK3VzaW5nIDo6dGVzdGluZzo6THQ7CiB1c2luZyA6OnRlc3Rpbmc6Ok9wdGlvbmFsOwog
dXNpbmcgOjp0ZXN0aW5nOjpQYWlyOwogdXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50
c0FyZTsKIAogVEVTVChVdGlsLCBOb3JtYWxpemVDYXBhY2l0eSkgewotICBjb25zdGV4cHIgc2l6
ZV90IGtNaW5DYXBhY2l0eSA9IEdyb3VwOjprV2lkdGggLSAxOwotICBFWFBFQ1RfRVEoa01pbkNh
cGFjaXR5LCBOb3JtYWxpemVDYXBhY2l0eSgwKSk7Ci0gIEVYUEVDVF9FUShrTWluQ2FwYWNpdHks
IE5vcm1hbGl6ZUNhcGFjaXR5KDEpKTsKLSAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSwgTm9ybWFs
aXplQ2FwYWNpdHkoMikpOwotICBFWFBFQ1RfRVEoa01pbkNhcGFjaXR5LCBOb3JtYWxpemVDYXBh
Y2l0eShrTWluQ2FwYWNpdHkpKTsKLSAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSAqIDIgKyAxLCBO
b3JtYWxpemVDYXBhY2l0eShrTWluQ2FwYWNpdHkgKyAxKSk7Ci0gIEVYUEVDVF9FUShrTWluQ2Fw
YWNpdHkgKiAyICsgMSwgTm9ybWFsaXplQ2FwYWNpdHkoa01pbkNhcGFjaXR5ICsgMikpOworICBF
WFBFQ1RfRVEoMSwgTm9ybWFsaXplQ2FwYWNpdHkoMCkpOworICBFWFBFQ1RfRVEoMSwgTm9ybWFs
aXplQ2FwYWNpdHkoMSkpOworICBFWFBFQ1RfRVEoMywgTm9ybWFsaXplQ2FwYWNpdHkoMikpOwor
ICBFWFBFQ1RfRVEoMywgTm9ybWFsaXplQ2FwYWNpdHkoMykpOworICBFWFBFQ1RfRVEoNywgTm9y
bWFsaXplQ2FwYWNpdHkoNCkpOworICBFWFBFQ1RfRVEoNywgTm9ybWFsaXplQ2FwYWNpdHkoNykp
OworICBFWFBFQ1RfRVEoMTUsIE5vcm1hbGl6ZUNhcGFjaXR5KDgpKTsKKyAgRVhQRUNUX0VRKDE1
LCBOb3JtYWxpemVDYXBhY2l0eSgxNSkpOworICBFWFBFQ1RfRVEoMTUgKiAyICsgMSwgTm9ybWFs
aXplQ2FwYWNpdHkoMTUgKyAxKSk7CisgIEVYUEVDVF9FUSgxNSAqIDIgKyAxLCBOb3JtYWxpemVD
YXBhY2l0eSgxNSArIDIpKTsKK30KKworVEVTVChVdGlsLCBHcm93dGhBbmRDYXBhY2l0eSkgewor
ICAvLyBWZXJpZnkgdGhhdCBHcm93dGhUb0NhcGFjaXR5IGdpdmVzIHRoZSBtaW5pbXVtIGNhcGFj
aXR5IHRoYXQgaGFzIGVub3VnaAorICAvLyBncm93dGguCisgIGZvciAoc2l6ZV90IGdyb3d0aCA9
IDA7IGdyb3d0aCA8IDEwMDAwOyArK2dyb3d0aCkgeworICAgIFNDT1BFRF9UUkFDRShncm93dGgp
OworICAgIHNpemVfdCBjYXBhY2l0eSA9IE5vcm1hbGl6ZUNhcGFjaXR5KEdyb3d0aFRvTG93ZXJi
b3VuZENhcGFjaXR5KGdyb3d0aCkpOworICAgIC8vIFRoZSBjYXBhY2l0eSBpcyBsYXJnZSBlbm91
Z2ggZm9yIGBncm93dGhgCisgICAgRVhQRUNUX1RIQVQoQ2FwYWNpdHlUb0dyb3d0aChjYXBhY2l0
eSksIEdlKGdyb3d0aCkpOworICAgIGlmIChncm93dGggIT0gMCAmJiBjYXBhY2l0eSA+IDEpIHsK
KyAgICAgIC8vIFRoZXJlIGlzIG5vIHNtYWxsZXIgY2FwYWNpdHkgdGhhdCB3b3Jrcy4KKyAgICAg
IEVYUEVDVF9USEFUKENhcGFjaXR5VG9Hcm93dGgoY2FwYWNpdHkgLyAyKSwgTHQoZ3Jvd3RoKSk7
CisgICAgfQorICB9CisKKyAgZm9yIChzaXplX3QgY2FwYWNpdHkgPSBHcm91cDo6a1dpZHRoIC0g
MTsgY2FwYWNpdHkgPCAxMDAwMDsKKyAgICAgICBjYXBhY2l0eSA9IDIgKiBjYXBhY2l0eSArIDEp
IHsKKyAgICBTQ09QRURfVFJBQ0UoY2FwYWNpdHkpOworICAgIHNpemVfdCBncm93dGggPSBDYXBh
Y2l0eVRvR3Jvd3RoKGNhcGFjaXR5KTsKKyAgICBFWFBFQ1RfVEhBVChncm93dGgsIEx0KGNhcGFj
aXR5KSk7CisgICAgRVhQRUNUX0xFKEdyb3d0aFRvTG93ZXJib3VuZENhcGFjaXR5KGdyb3d0aCks
IGNhcGFjaXR5KTsKKyAgICBFWFBFQ1RfRVEoTm9ybWFsaXplQ2FwYWNpdHkoR3Jvd3RoVG9Mb3dl
cmJvdW5kQ2FwYWNpdHkoZ3Jvd3RoKSksIGNhcGFjaXR5KTsKKyAgfQogfQogCiBURVNUKFV0aWws
IHByb2JlX3NlcSkgewpAQCAtMTA3LDE0ICsxMzUsMTQgQEAgVEVTVChCaXRNYXNrLCBXaXRoU2hp
ZnQpIHsKIH0KIAogVEVTVChCaXRNYXNrLCBMZWFkaW5nVHJhaWxpbmcpIHsKLSAgRVhQRUNUX0VR
KChCaXRNYXNrPHVpbnQzMl90LCAxNj4oMGIwMDAxMTAxMDAxMDAwMDAwKS5MZWFkaW5nWmVyb3Mo
KSksIDMpOwotICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2PigwYjAwMDExMDEwMDEw
MDAwMDApLlRyYWlsaW5nWmVyb3MoKSksIDYpOworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMy
X3QsIDE2PigweDAwMDAxYTQwKS5MZWFkaW5nWmVyb3MoKSksIDMpOworICBFWFBFQ1RfRVEoKEJp
dE1hc2s8dWludDMyX3QsIDE2PigweDAwMDAxYTQwKS5UcmFpbGluZ1plcm9zKCkpLCA2KTsKIAot
ICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2PigwYjAwMDAwMDAwMDAwMDAwMDEpLkxl
YWRpbmdaZXJvcygpKSwgMTUpOwotICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2Pigw
YjAwMDAwMDAwMDAwMDAwMDEpLlRyYWlsaW5nWmVyb3MoKSksIDApOworICBFWFBFQ1RfRVEoKEJp
dE1hc2s8dWludDMyX3QsIDE2PigweDAwMDAwMDAxKS5MZWFkaW5nWmVyb3MoKSksIDE1KTsKKyAg
RVhQRUNUX0VRKChCaXRNYXNrPHVpbnQzMl90LCAxNj4oMHgwMDAwMDAwMSkuVHJhaWxpbmdaZXJv
cygpKSwgMCk7CiAKLSAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQzMl90LCAxNj4oMGIxMDAwMDAw
MDAwMDAwMDAwKS5MZWFkaW5nWmVyb3MoKSksIDApOwotICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWlu
dDMyX3QsIDE2PigwYjEwMDAwMDAwMDAwMDAwMDApLlRyYWlsaW5nWmVyb3MoKSksIDE1KTsKKyAg
RVhQRUNUX0VRKChCaXRNYXNrPHVpbnQzMl90LCAxNj4oMHgwMDAwODAwMCkuTGVhZGluZ1plcm9z
KCkpLCAwKTsKKyAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQzMl90LCAxNj4oMHgwMDAwODAwMCku
VHJhaWxpbmdaZXJvcygpKSwgMTUpOwogCiAgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50NjRfdCwg
OCwgMz4oMHgwMDAwMDA4MDgwODA4MDAwKS5MZWFkaW5nWmVyb3MoKSksIDMpOwogICBFWFBFQ1Rf
RVEoKEJpdE1hc2s8dWludDY0X3QsIDgsIDM+KDB4MDAwMDAwODA4MDgwODAwMCkuVHJhaWxpbmda
ZXJvcygpKSwgMSk7CkBAIC0xMzAsNDUgKzE1OCw1MCBAQCBURVNUKEdyb3VwLCBFbXB0eUdyb3Vw
KSB7CiAgIGZvciAoaDJfdCBoID0gMDsgaCAhPSAxMjg7ICsraCkgRVhQRUNUX0ZBTFNFKEdyb3Vw
e0VtcHR5R3JvdXAoKX0uTWF0Y2goaCkpOwogfQogCi0jaWYgU1dJU1NUQUJMRV9IQVZFX1NTRTIK
IFRFU1QoR3JvdXAsIE1hdGNoKSB7Ci0gIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwga0Rl
bGV0ZWQsIDMsIGtFbXB0eSwgNSwga1NlbnRpbmVsLCA3LAotICAgICAgICAgICAgICAgICAgICA3
LCAgICAgIDUsIDMsICAgICAgICAxLCAxLCAgICAgIDEsIDEsICAgICAgICAgMX07Ci0gIEVYUEVD
VF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaCgwKSwgRWxlbWVudHNBcmUoKSk7Ci0gIEVYUEVDVF9U
SEFUKEdyb3Vwe2dyb3VwfS5NYXRjaCgxKSwgRWxlbWVudHNBcmUoMSwgMTEsIDEyLCAxMywgMTQs
IDE1KSk7Ci0gIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaCgzKSwgRWxlbWVudHNBcmUo
MywgMTApKTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDUpLCBFbGVtZW50c0Fy
ZSg1LCA5KSk7Ci0gIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaCg3KSwgRWxlbWVudHNB
cmUoNywgOCkpOwotfQotCi1URVNUKEdyb3VwLCBNYXRjaEVtcHR5KSB7Ci0gIGN0cmxfdCBncm91
cFtdID0ge2tFbXB0eSwgMSwga0RlbGV0ZWQsIDMsIGtFbXB0eSwgNSwga1NlbnRpbmVsLCA3LAot
ICAgICAgICAgICAgICAgICAgICA3LCAgICAgIDUsIDMsICAgICAgICAxLCAxLCAgICAgIDEsIDEs
ICAgICAgICAgMX07Ci0gIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaEVtcHR5KCksIEVs
ZW1lbnRzQXJlKDAsIDQpKTsKKyAgaWYgKEdyb3VwOjprV2lkdGggPT0gMTYpIHsKKyAgICBjdHJs
X3QgZ3JvdXBbXSA9IHtrRW1wdHksIDEsIGtEZWxldGVkLCAzLCBrRW1wdHksIDUsIGtTZW50aW5l
bCwgNywKKyAgICAgICAgICAgICAgICAgICAgICA3LCAgICAgIDUsIDMsICAgICAgICAxLCAxLCAg
ICAgIDEsIDEsICAgICAgICAgMX07CisgICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNo
KDApLCBFbGVtZW50c0FyZSgpKTsKKyAgICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2go
MSksIEVsZW1lbnRzQXJlKDEsIDExLCAxMiwgMTMsIDE0LCAxNSkpOworICAgIEVYUEVDVF9USEFU
KEdyb3Vwe2dyb3VwfS5NYXRjaCgzKSwgRWxlbWVudHNBcmUoMywgMTApKTsKKyAgICBFWFBFQ1Rf
VEhBVChHcm91cHtncm91cH0uTWF0Y2goNSksIEVsZW1lbnRzQXJlKDUsIDkpKTsKKyAgICBFWFBF
Q1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goNyksIEVsZW1lbnRzQXJlKDcsIDgpKTsKKyAgfSBl
bHNlIGlmIChHcm91cDo6a1dpZHRoID09IDgpIHsKKyAgICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1w
dHksIDEsIDIsIGtEZWxldGVkLCAyLCAxLCBrU2VudGluZWwsIDF9OworICAgIEVYUEVDVF9USEFU
KEdyb3Vwe2dyb3VwfS5NYXRjaCgwKSwgRWxlbWVudHNBcmUoKSk7CisgICAgRVhQRUNUX1RIQVQo
R3JvdXB7Z3JvdXB9Lk1hdGNoKDEpLCBFbGVtZW50c0FyZSgxLCA1LCA3KSk7CisgICAgRVhQRUNU
X1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDIpLCBFbGVtZW50c0FyZSgyLCA0KSk7CisgIH0gZWxz
ZSB7CisgICAgRkFJTCgpIDw8ICJObyB0ZXN0IGNvdmVyYWdlIGZvciBHcm91cDo6a1dpZHRoPT0i
IDw8IEdyb3VwOjprV2lkdGg7CisgIH0KIH0KIAotVEVTVChHcm91cCwgTWF0Y2hFbXB0eU9yRGVs
ZXRlZCkgewotICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1wdHksIDEsIGtEZWxldGVkLCAzLCBrRW1w
dHksIDUsIGtTZW50aW5lbCwgNywKLSAgICAgICAgICAgICAgICAgICAgNywgICAgICA1LCAzLCAg
ICAgICAgMSwgMSwgICAgICAxLCAxLCAgICAgICAgIDF9OwotICBFWFBFQ1RfVEhBVChHcm91cHtn
cm91cH0uTWF0Y2hFbXB0eU9yRGVsZXRlZCgpLCBFbGVtZW50c0FyZSgwLCAyLCA0KSk7Ci19Ci0j
ZWxzZQotVEVTVChHcm91cCwgTWF0Y2gpIHsKLSAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAx
LCAyLCBrRGVsZXRlZCwgMiwgMSwga1NlbnRpbmVsLCAxfTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7
Z3JvdXB9Lk1hdGNoKDApLCBFbGVtZW50c0FyZSgpKTsKLSAgRVhQRUNUX1RIQVQoR3JvdXB7Z3Jv
dXB9Lk1hdGNoKDEpLCBFbGVtZW50c0FyZSgxLCA1LCA3KSk7Ci0gIEVYUEVDVF9USEFUKEdyb3Vw
e2dyb3VwfS5NYXRjaCgyKSwgRWxlbWVudHNBcmUoMiwgNCkpOwotfQogVEVTVChHcm91cCwgTWF0
Y2hFbXB0eSkgewotICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1wdHksIDEsIDIsIGtEZWxldGVkLCAy
LCAxLCBrU2VudGluZWwsIDF9OwotICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2hFbXB0
eSgpLCBFbGVtZW50c0FyZSgwKSk7CisgIGlmIChHcm91cDo6a1dpZHRoID09IDE2KSB7CisgICAg
Y3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCBrRGVsZXRlZCwgMywga0VtcHR5LCA1LCBrU2Vu
dGluZWwsIDcsCisgICAgICAgICAgICAgICAgICAgICAgNywgICAgICA1LCAzLCAgICAgICAgMSwg
MSwgICAgICAxLCAxLCAgICAgICAgIDF9OworICAgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5N
YXRjaEVtcHR5KCksIEVsZW1lbnRzQXJlKDAsIDQpKTsKKyAgfSBlbHNlIGlmIChHcm91cDo6a1dp
ZHRoID09IDgpIHsKKyAgICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1wdHksIDEsIDIsIGtEZWxldGVk
LCAyLCAxLCBrU2VudGluZWwsIDF9OworICAgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRj
aEVtcHR5KCksIEVsZW1lbnRzQXJlKDApKTsKKyAgfSBlbHNlIHsKKyAgICBGQUlMKCkgPDwgIk5v
IHRlc3QgY292ZXJhZ2UgZm9yIEdyb3VwOjprV2lkdGg9PSIgPDwgR3JvdXA6OmtXaWR0aDsKKyAg
fQogfQogCiBURVNUKEdyb3VwLCBNYXRjaEVtcHR5T3JEZWxldGVkKSB7Ci0gIGN0cmxfdCBncm91
cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0ZWQsIDIsIDEsIGtTZW50aW5lbCwgMX07Ci0gIEVY
UEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaEVtcHR5T3JEZWxldGVkKCksIEVsZW1lbnRzQXJl
KDAsIDMpKTsKKyAgaWYgKEdyb3VwOjprV2lkdGggPT0gMTYpIHsKKyAgICBjdHJsX3QgZ3JvdXBb
XSA9IHtrRW1wdHksIDEsIGtEZWxldGVkLCAzLCBrRW1wdHksIDUsIGtTZW50aW5lbCwgNywKKyAg
ICAgICAgICAgICAgICAgICAgICA3LCAgICAgIDUsIDMsICAgICAgICAxLCAxLCAgICAgIDEsIDEs
ICAgICAgICAgMX07CisgICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoRW1wdHlPckRl
bGV0ZWQoKSwgRWxlbWVudHNBcmUoMCwgMiwgNCkpOworICB9IGVsc2UgaWYgKEdyb3VwOjprV2lk
dGggPT0gOCkgeworICAgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0ZWQs
IDIsIDEsIGtTZW50aW5lbCwgMX07CisgICAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNo
RW1wdHlPckRlbGV0ZWQoKSwgRWxlbWVudHNBcmUoMCwgMykpOworICB9IGVsc2UgeworICAgIEZB
SUwoKSA8PCAiTm8gdGVzdCBjb3ZlcmFnZSBmb3IgR3JvdXA6OmtXaWR0aD09IiA8PCBHcm91cDo6
a1dpZHRoOworICB9CiB9Ci0jZW5kaWYKIAogVEVTVChCYXRjaCwgRHJvcERlbGV0ZXMpIHsKICAg
Y29uc3RleHByIHNpemVfdCBrQ2FwYWNpdHkgPSA2MzsKQEAgLTMxMCw3ICszNDMsMjUgQEAgc3Ry
dWN0IEludFRhYmxlCiAgICAgOiByYXdfaGFzaF9zZXQ8SW50UG9saWN5LCBjb250YWluZXJfaW50
ZXJuYWw6Omhhc2hfZGVmYXVsdF9oYXNoPGludDY0X3Q+LAogICAgICAgICAgICAgICAgICAgIHN0
ZDo6ZXF1YWxfdG88aW50NjRfdD4sIHN0ZDo6YWxsb2NhdG9yPGludDY0X3Q+PiB7CiAgIHVzaW5n
IEJhc2UgPSB0eXBlbmFtZSBJbnRUYWJsZTo6cmF3X2hhc2hfc2V0OwotICBJbnRUYWJsZSgpIHt9
CisgIHVzaW5nIEJhc2U6OkJhc2U7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBDdXN0b21BbGxvYyA6IHN0ZDo6YWxsb2NhdG9yPFQ+IHsKKyAgQ3VzdG9tQWxsb2MoKSB7fQor
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBDdXN0b21BbGxvYyhjb25zdCBDdXN0b21BbGxv
YzxVPiYgb3RoZXIpIHt9CisKKyAgdGVtcGxhdGU8Y2xhc3MgVT4gc3RydWN0IHJlYmluZCB7Cisg
ICAgdXNpbmcgb3RoZXIgPSBDdXN0b21BbGxvYzxVPjsKKyAgfTsKK307CisKK3N0cnVjdCBDdXN0
b21BbGxvY0ludFRhYmxlCisgICAgOiByYXdfaGFzaF9zZXQ8SW50UG9saWN5LCBjb250YWluZXJf
aW50ZXJuYWw6Omhhc2hfZGVmYXVsdF9oYXNoPGludDY0X3Q+LAorICAgICAgICAgICAgICAgICAg
IHN0ZDo6ZXF1YWxfdG88aW50NjRfdD4sIEN1c3RvbUFsbG9jPGludDY0X3Q+PiB7CisgIHVzaW5n
IEJhc2UgPSB0eXBlbmFtZSBDdXN0b21BbGxvY0ludFRhYmxlOjpyYXdfaGFzaF9zZXQ7CiAgIHVz
aW5nIEJhc2U6OkJhc2U7CiB9OwogCkBAIC0zMzgsNiArMzg5LDcgQEAgVEVTVChUYWJsZSwgRW1w
dHlGdW5jdG9yT3B0aW1pemF0aW9uKSB7CiAgICAgc2l6ZV90IHNpemU7CiAgICAgc2l6ZV90IGNh
cGFjaXR5OwogICAgIHNpemVfdCBncm93dGhfbGVmdDsKKyAgICB2b2lkKiBpbmZvejsKICAgfTsK
ICAgc3RydWN0IFN0YXRlbGVzc0hhc2ggewogICAgIHNpemVfdCBvcGVyYXRvcigpKGFic2w6OnN0
cmluZ192aWV3KSBjb25zdCB7IHJldHVybiAwOyB9CkBAIC0zODAsMTMgKzQzMiwxNSBAQCBURVNU
KFRhYmxlLCBQcmVmZXRjaCkgewogICB0LnByZWZldGNoKDIpOwogCiAgIC8vIERvIG5vdCBydW4g
aW4gZGVidWcgbW9kZSwgd2hlbiBwcmVmZXRjaCBpcyBub3QgaW1wbGVtZW50ZWQsIG9yIHdoZW4K
LSAgLy8gc2FuaXRpemVycyBhcmUgZW5hYmxlZC4KLSNpZiBkZWZpbmVkKE5ERUJVRykgJiYgZGVm
aW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpICYmIFwKLSAgICAh
ZGVmaW5lZChNRU1PUllfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChUSFJFQURfU0FOSVRJWkVSKSAm
JiAgICAgICAgICAgIFwKLSAgICAhZGVmaW5lZChVTkRFRklORURfQkVIQVZJT1JfU0FOSVRJWkVS
KQorICAvLyBzYW5pdGl6ZXJzIGFyZSBlbmFibGVkLCBvciBvbiBXZWJBc3NlbWJseS4KKyNpZiBk
ZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX3g4Nl82NF9f
KSAmJiAgICAgICAgICBcCisgICAgIWRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpICYmICFkZWZp
bmVkKE1FTU9SWV9TQU5JVElaRVIpICYmICAgICAgICAgICAgXAorICAgICFkZWZpbmVkKFRIUkVB
RF9TQU5JVElaRVIpICYmICFkZWZpbmVkKFVOREVGSU5FRF9CRUhBVklPUl9TQU5JVElaRVIpICYm
IFwKKyAgICAhZGVmaW5lZChfX0VNU0NSSVBURU5fXykKICAgY29uc3QgYXV0byBub3cgPSBbXSB7
IHJldHVybiBhYnNsOjpiYXNlX2ludGVybmFsOjpDeWNsZUNsb2NrOjpOb3coKTsgfTsKIAotICBz
dGF0aWMgY29uc3RleHByIGludCBzaXplID0gMTAwMDAwMDsKKyAgLy8gTWFrZSBzaXplIGVub3Vn
aCB0byBub3QgZml0IGluIEwyIGNhY2hlICgxNi43IE1iKQorICBzdGF0aWMgY29uc3RleHByIGlu
dCBzaXplID0gMSA8PCAyMjsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHQuaW5z
ZXJ0KGkpOwogCiAgIGludDY0X3Qgbm9fcHJlZmV0Y2ggPSAwLCBwcmVmZXRjaCA9IDA7CkBAIC02
ODcsNyArNzQxLDcgQEAgVEVTVChUYWJsZSwgUmVoYXNoV2l0aE5vUmVzaXplKSB7CiAgIE1vZHVs
bzEwMDBIYXNoVGFibGUgdDsKICAgLy8gQWRkaW5nIHRoZSBzYW1lIGxlbmd0aCAoYW5kIHRoZSBz
YW1lIGhhc2gpIHN0cmluZ3MKICAgLy8gdG8gaGF2ZSBhdCBsZWFzdCBrTWluRnVsbEdyb3VwcyBn
cm91cHMKLSAgLy8gd2l0aCBHcm91cDo6a1dpZHRoIGNvbGxpc2lvbnMuIFRoZW4gZmVlbCB1cHRv
IE1heERlbnNpdHlTaXplOworICAvLyB3aXRoIEdyb3VwOjprV2lkdGggY29sbGlzaW9ucy4gVGhl
biBmaWxsIHVwIHRvIE1heERlbnNpdHlTaXplOwogICBjb25zdCBzaXplX3Qga01pbkZ1bGxHcm91
cHMgPSA3OwogICBzdGQ6OnZlY3RvcjxpbnQ+IGtleXM7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgTWF4RGVuc2l0eVNpemUoR3JvdXA6OmtXaWR0aCAqIGtNaW5GdWxsR3JvdXBzKTsgKytpKSB7
CkBAIC03NzksNyArODMzLDcgQEAgVEVTVChUYWJsZSwgRW5zdXJlTm9uUXVhZHJhdGljQXNJblJ1
c3QpIHsKIFRFU1QoVGFibGUsIENsZWFyQnVnKSB7CiAgIEludFRhYmxlIHQ7CiAgIGNvbnN0ZXhw
ciBzaXplX3QgY2FwYWNpdHkgPSBjb250YWluZXJfaW50ZXJuYWw6Okdyb3VwOjprV2lkdGggLSAx
OwotICBjb25zdGV4cHIgc2l6ZV90IG1heF9zaXplID0gY2FwYWNpdHkgLyAyOworICBjb25zdGV4
cHIgc2l6ZV90IG1heF9zaXplID0gY2FwYWNpdHkgLyAyICsgMTsKICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtYXhfc2l6ZTsgKytpKSB7CiAgICAgdC5pbnNlcnQoaSk7CiAgIH0KQEAgLTgxMCw2
ICs4NjQsMjUgQEAgVEVTVChUYWJsZSwgRXJhc2UpIHsKICAgRVhQRUNUX1RSVUUodC5maW5kKDAp
ID09IHQuZW5kKCkpOwogfQogCitURVNUKFRhYmxlLCBFcmFzZU1haW50YWluc1ZhbGlkSXRlcmF0
b3IpIHsKKyAgSW50VGFibGUgdDsKKyAgY29uc3QgaW50IGtOdW1FbGVtZW50cyA9IDEwMDsKKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBrTnVtRWxlbWVudHM7IGkgKyspIHsKKyAgICBFWFBFQ1RfVFJV
RSh0LmVtcGxhY2UoaSkuc2Vjb25kKTsKKyAgfQorICBFWFBFQ1RfRVEodC5zaXplKCksIGtOdW1F
bGVtZW50cyk7CisKKyAgaW50IG51bV9lcmFzZV9jYWxscyA9IDA7CisgIGF1dG8gaXQgPSB0LmJl
Z2luKCk7CisgIHdoaWxlIChpdCAhPSB0LmVuZCgpKSB7CisgICAgdC5lcmFzZShpdCsrKTsKKyAg
ICBudW1fZXJhc2VfY2FsbHMrKzsKKyAgfQorCisgIEVYUEVDVF9UUlVFKHQuZW1wdHkoKSk7Cisg
IEVYUEVDVF9FUShudW1fZXJhc2VfY2FsbHMsIGtOdW1FbGVtZW50cyk7Cit9CisKIC8vIENvbGxl
Y3QgTiBiYWQga2V5cyBieSBmb2xsb3dpbmcgYWxnb3JpdGhtOgogLy8gMS4gQ3JlYXRlIGFuIGVt
cHR5IHRhYmxlIGFuZCByZXNlcnZlIGl0IHRvIDIgKiBOLgogLy8gMi4gSW5zZXJ0IE4gcmFuZG9t
IGVsZW1lbnRzLgpAQCAtMTAwOCw3ICsxMDgxLDcgQEAgUHJvYmVTdGF0cyBDb2xsZWN0UHJvYmVT
dGF0c09uS2V5c1hvcmVkV2l0aFNlZWQoY29uc3Qgc3RkOjp2ZWN0b3I8aW50NjRfdD4mIGtleXMK
IAogRXhwZWN0ZWRTdGF0cyBYb3JTZWVkRXhwZWN0ZWRTdGF0cygpIHsKICAgY29uc3RleHByIGJv
b2wga1JhbmRvbWl6ZXNJbnNlcnRzID0KLSNpZiBOREVCVUcKKyNpZmRlZiBOREVCVUcKICAgICAg
IGZhbHNlOwogI2Vsc2UgICAvLyBOREVCVUcKICAgICAgIHRydWU7CkBAIC0xMDI5LDcgKzExMDIs
NiBAQCBFeHBlY3RlZFN0YXRzIFhvclNlZWRFeHBlY3RlZFN0YXRzKCkgewogICAgICAgICAgIHt7
MC45NSwgMC4xfX0sCiAgICAgICAgICAge3swLjk1LCAwfSwgezAuOTksIDJ9LCB7MC45OTksIDR9
LCB7MC45OTk5LCAxMH19fTsKICAgICAgIH0KLSAgICAgIGJyZWFrOwogICAgIGNhc2UgMTY6CiAg
ICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7CiAgICAgICAgIHJldHVybiB7MC4xLApAQCAt
MTA0MiwxMiArMTExNCwxMSBAQCBFeHBlY3RlZFN0YXRzIFhvclNlZWRFeHBlY3RlZFN0YXRzKCkg
ewogICAgICAgICAgICAgICAgIHt7MC45NSwgMC4wNX19LAogICAgICAgICAgICAgICAgIHt7MC45
NSwgMH0sIHswLjk5LCAxfSwgezAuOTk5LCA0fSwgezAuOTk5OSwgMTB9fX07CiAgICAgICB9Ci0g
ICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgQUJTTF9SQVdfTE9HKEZBVEFMLCAiJXMi
LCAiVW5rbm93biBHcm91cCB3aWR0aCIpOwogICB9CisgIEFCU0xfUkFXX0xPRyhGQVRBTCwgIiVz
IiwgIlVua25vd24gR3JvdXAgd2lkdGgiKTsKICAgcmV0dXJuIHt9OwogfQorCiBURVNUKFRhYmxl
LCBESVNBQkxFRF9FbnN1cmVOb25RdWFkcmF0aWNUb3BOWG9yU2VlZEJ5UHJvYmVTZXFMZW5ndGgp
IHsKICAgUHJvYmVTdGF0c1BlclNpemUgc3RhdHM7CiAgIHN0ZDo6dmVjdG9yPHNpemVfdD4gc2l6
ZXMgPSB7R3JvdXA6OmtXaWR0aCA8PCA1LCBHcm91cDo6a1dpZHRoIDw8IDEwfTsKQEAgLTExMDQs
NyArMTE3NSw3IEBAIFByb2JlU3RhdHMgQ29sbGVjdFByb2JlU3RhdHNPbkxpbmVhcmx5VHJhbnNm
b3JtZWRLZXlzKAogCiBFeHBlY3RlZFN0YXRzIExpbmVhclRyYW5zZm9ybUV4cGVjdGVkU3RhdHMo
KSB7CiAgIGNvbnN0ZXhwciBib29sIGtSYW5kb21pemVzSW5zZXJ0cyA9Ci0jaWYgTkRFQlVHCisj
aWZkZWYgTkRFQlVHCiAgICAgICBmYWxzZTsKICNlbHNlICAgLy8gTkRFQlVHCiAgICAgICB0cnVl
OwpAQCAtMTEyNSw3ICsxMTk2LDYgQEAgRXhwZWN0ZWRTdGF0cyBMaW5lYXJUcmFuc2Zvcm1FeHBl
Y3RlZFN0YXRzKCkgewogICAgICAgICAgICAgICAgIHt7MC45NSwgMC4zfX0sCiAgICAgICAgICAg
ICAgICAge3swLjk1LCAwfSwgezAuOTksIDN9LCB7MC45OTksIDE1fSwgezAuOTk5OSwgMjV9fX07
CiAgICAgICB9Ci0gICAgICBicmVhazsKICAgICBjYXNlIDE2OgogICAgICAgaWYgKGtSYW5kb21p
emVzSW5zZXJ0cykgewogICAgICAgICByZXR1cm4gezAuMSwKQEAgLTExMzgsMTIgKzEyMDgsMTEg
QEAgRXhwZWN0ZWRTdGF0cyBMaW5lYXJUcmFuc2Zvcm1FeHBlY3RlZFN0YXRzKCkgewogICAgICAg
ICAgICAgICAgIHt7MC45NSwgMC4xfX0sCiAgICAgICAgICAgICAgICAge3swLjk1LCAwfSwgezAu
OTksIDF9LCB7MC45OTksIDZ9LCB7MC45OTk5LCAxMH19fTsKICAgICAgIH0KLSAgICAgIGJyZWFr
OwotICAgIGRlZmF1bHQ6Ci0gICAgICBBQlNMX1JBV19MT0coRkFUQUwsICIlcyIsICJVbmtub3du
IEdyb3VwIHdpZHRoIik7CiAgIH0KKyAgQUJTTF9SQVdfTE9HKEZBVEFMLCAiJXMiLCAiVW5rbm93
biBHcm91cCB3aWR0aCIpOwogICByZXR1cm4ge307CiB9CisKIFRFU1QoVGFibGUsIERJU0FCTEVE
X0Vuc3VyZU5vblF1YWRyYXRpY1RvcE5MaW5lYXJUcmFuc2Zvcm1CeVByb2JlU2VxTGVuZ3RoKSB7
CiAgIFByb2JlU3RhdHNQZXJTaXplIHN0YXRzOwogICBzdGQ6OnZlY3RvcjxzaXplX3Q+IHNpemVz
ID0ge0dyb3VwOjprV2lkdGggPDwgNSwgR3JvdXA6OmtXaWR0aCA8PCAxMH07CkBAIC0xMjk2LDM3
ICsxMzY1LDMxIEBAIFRFU1QoVGFibGUsIENvbnN0cnVjdEZyb21Jbml0TGlzdCkgewogCiBURVNU
KFRhYmxlLCBDb3B5Q29uc3RydWN0KSB7CiAgIEludFRhYmxlIHQ7Ci0gIHQubWF4X2xvYWRfZmFj
dG9yKC4zMjFmKTsKICAgdC5lbXBsYWNlKDApOwogICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOwog
ICB7CiAgICAgSW50VGFibGUgdSh0KTsKICAgICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOwotICAg
IEVYUEVDVF9FUSh0Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAg
ICBFWFBFQ1RfVEhBVCgqdS5maW5kKDApLCAwKTsKICAgfQogICB7CiAgICAgSW50VGFibGUgdXt0
fTsKICAgICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOwotICAgIEVYUEVDVF9FUSh0Lm1heF9sb2Fk
X2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgICBFWFBFQ1RfVEhBVCgqdS5maW5k
KDApLCAwKTsKICAgfQogICB7CiAgICAgSW50VGFibGUgdSA9IHQ7CiAgICAgRVhQRUNUX0VRKDEs
IHUuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVEodC5tYXhfbG9hZF9mYWN0b3IoKSwgdS5tYXhfbG9h
ZF9mYWN0b3IoKSk7CiAgICAgRVhQRUNUX1RIQVQoKnUuZmluZCgwKSwgMCk7CiAgIH0KIH0KIAog
VEVTVChUYWJsZSwgQ29weUNvbnN0cnVjdFdpdGhBbGxvYykgewogICBTdHJpbmdUYWJsZSB0Owot
ICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7CiAgIHQuZW1wbGFjZSgiYSIsICJiIik7CiAgIEVY
UEVDVF9FUSgxLCB0LnNpemUoKSk7CiAgIFN0cmluZ1RhYmxlIHUodCwgQWxsb2M8c3RkOjpwYWly
PHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+KCkpOwogICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkp
OwotICBFWFBFQ1RfRVEodC5tYXhfbG9hZF9mYWN0b3IoKSwgdS5tYXhfbG9hZF9mYWN0b3IoKSk7
CiAgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikpOwogfQogCkBAIC0x
MzQ0LDk0ICsxNDA3LDc1IEBAIFRFU1QoVGFibGUsIEFsbG9jV2l0aEV4cGxpY2l0Q3Rvcikgewog
VEVTVChUYWJsZSwgTW92ZUNvbnN0cnVjdCkgewogICB7CiAgICAgU3RyaW5nVGFibGUgdDsKLSAg
ICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7Ci0gICAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9s
b2FkX2ZhY3RvcigpOwogICAgIHQuZW1wbGFjZSgiYSIsICJiIik7CiAgICAgRVhQRUNUX0VRKDEs
IHQuc2l6ZSgpKTsKIAogICAgIFN0cmluZ1RhYmxlIHUoc3RkOjptb3ZlKHQpKTsKICAgICBFWFBF
Q1RfRVEoMSwgdS5zaXplKCkpOwotICAgIEVYUEVDVF9FUShsZiwgdS5tYXhfbG9hZF9mYWN0b3Io
KSk7CiAgICAgRVhQRUNUX1RIQVQoKnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7CiAgIH0K
ICAgewogICAgIFN0cmluZ1RhYmxlIHQ7Ci0gICAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOwot
ICAgIGNvbnN0IGZsb2F0IGxmID0gdC5tYXhfbG9hZF9mYWN0b3IoKTsKICAgICB0LmVtcGxhY2Uo
ImEiLCAiYiIpOwogICAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CiAKICAgICBTdHJpbmdUYWJs
ZSB1e3N0ZDo6bW92ZSh0KX07CiAgICAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKLSAgICBFWFBF
Q1RfRVEobGYsIHUubWF4X2xvYWRfZmFjdG9yKCkpOwogICAgIEVYUEVDVF9USEFUKCp1LmZpbmQo
ImEiKSwgUGFpcigiYSIsICJiIikpOwogICB9CiAgIHsKICAgICBTdHJpbmdUYWJsZSB0OwotICAg
IHQubWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsKLSAgICBjb25zdCBmbG9hdCBsZiA9IHQubWF4X2xv
YWRfZmFjdG9yKCk7CiAgICAgdC5lbXBsYWNlKCJhIiwgImIiKTsKICAgICBFWFBFQ1RfRVEoMSwg
dC5zaXplKCkpOwogCiAgICAgU3RyaW5nVGFibGUgdSA9IHN0ZDo6bW92ZSh0KTsKICAgICBFWFBF
Q1RfRVEoMSwgdS5zaXplKCkpOwotICAgIEVYUEVDVF9FUShsZiwgdS5tYXhfbG9hZF9mYWN0b3Io
KSk7CiAgICAgRVhQRUNUX1RIQVQoKnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7CiAgIH0K
IH0KIAogVEVTVChUYWJsZSwgTW92ZUNvbnN0cnVjdFdpdGhBbGxvYykgewogICBTdHJpbmdUYWJs
ZSB0OwotICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7Ci0gIGNvbnN0IGZsb2F0IGxmID0gdC5t
YXhfbG9hZF9mYWN0b3IoKTsKICAgdC5lbXBsYWNlKCJhIiwgImIiKTsKICAgRVhQRUNUX0VRKDEs
IHQuc2l6ZSgpKTsKICAgU3RyaW5nVGFibGUgdShzdGQ6Om1vdmUodCksIEFsbG9jPHN0ZDo6cGFp
cjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PigpKTsKICAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgp
KTsKLSAgRVhQRUNUX0VRKGxmLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKICAgRVhQRUNUX1RIQVQo
KnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7CiB9CiAKIFRFU1QoVGFibGUsIENvcHlBc3Np
Z24pIHsKICAgU3RyaW5nVGFibGUgdDsKLSAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOwogICB0
LmVtcGxhY2UoImEiLCAiYiIpOwogICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOwogICBTdHJpbmdU
YWJsZSB1OwogICB1ID0gdDsKICAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKLSAgRVhQRUNUX0VR
KHQubWF4X2xvYWRfZmFjdG9yKCksIHUubWF4X2xvYWRfZmFjdG9yKCkpOwogICBFWFBFQ1RfVEhB
VCgqdS5maW5kKCJhIiksIFBhaXIoImEiLCAiYiIpKTsKIH0KIAogVEVTVChUYWJsZSwgQ29weVNl
bGZBc3NpZ24pIHsKICAgU3RyaW5nVGFibGUgdDsKLSAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYp
OwotICBjb25zdCBmbG9hdCBsZiA9IHQubWF4X2xvYWRfZmFjdG9yKCk7CiAgIHQuZW1wbGFjZSgi
YSIsICJiIik7CiAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CiAgIHQgPSAqJnQ7CiAgIEVYUEVD
VF9FUSgxLCB0LnNpemUoKSk7Ci0gIEVYUEVDVF9FUShsZiwgdC5tYXhfbG9hZF9mYWN0b3IoKSk7
CiAgIEVYUEVDVF9USEFUKCp0LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikpOwogfQogCiBURVNU
KFRhYmxlLCBNb3ZlQXNzaWduKSB7CiAgIFN0cmluZ1RhYmxlIHQ7Ci0gIHQubWF4X2xvYWRfZmFj
dG9yKC4zMjFmKTsKLSAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9sb2FkX2ZhY3RvcigpOwogICB0
LmVtcGxhY2UoImEiLCAiYiIpOwogICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOwogICBTdHJpbmdU
YWJsZSB1OwogICB1ID0gc3RkOjptb3ZlKHQpOwogICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOwot
ICBFWFBFQ1RfRVEobGYsIHUubWF4X2xvYWRfZmFjdG9yKCkpOwogICBFWFBFQ1RfVEhBVCgqdS5m
aW5kKCJhIiksIFBhaXIoImEiLCAiYiIpKTsKIH0KIAogVEVTVChUYWJsZSwgRXF1YWxpdHkpIHsK
ICAgU3RyaW5nVGFibGUgdDsKLSAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBz
dGQ6OnN0cmluZz4+IHYgPSB7eyJhIiwgImIifSwgeyJhYSIsICJiYiJ9fTsKKyAgc3RkOjp2ZWN0
b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYgPSB7eyJhIiwgImIifSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eyJhYSIsICJiYiJ9fTsKICAgdC5pbnNlcnQoc3RkOjpiZWdpbih2KSwgc3RkOjplbmQodikpOwog
ICBTdHJpbmdUYWJsZSB1ID0gdDsKICAgRVhQRUNUX0VRKHUsIHQpOwpAQCAtMTQzOSwyMCArMTQ4
MywyNCBAQCBURVNUKFRhYmxlLCBFcXVhbGl0eSkgewogCiBURVNUKFRhYmxlLCBFcXVhbGl0eTIp
IHsKICAgU3RyaW5nVGFibGUgdDsKLSAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5n
LCBzdGQ6OnN0cmluZz4+IHYxID0ge3siYSIsICJiIn0sIHsiYWEiLCAiYmIifX07CisgIHN0ZDo6
dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2MSA9IHt7ImEiLCAi
YiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyJhYSIsICJiYiJ9fTsKICAgdC5pbnNlcnQoc3RkOjpiZWdpbih2MSksIHN0ZDo6ZW5k
KHYxKSk7CiAgIFN0cmluZ1RhYmxlIHU7Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0
cmluZywgc3RkOjpzdHJpbmc+PiB2MiA9IHt7ImEiLCAiYSJ9LCB7ImFhIiwgImFhIn19OworICBz
dGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4gdjIgPSB7eyJh
IiwgImEifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsiYWEiLCAiYWEifX07CiAgIHUuaW5zZXJ0KHN0ZDo6YmVnaW4odjIpLCBzdGQ6
OmVuZCh2MikpOwogICBFWFBFQ1RfTkUodSwgdCk7CiB9CiAKIFRFU1QoVGFibGUsIEVxdWFsaXR5
MykgewogICBTdHJpbmdUYWJsZSB0OwotICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJp
bmcsIHN0ZDo6c3RyaW5nPj4gdjEgPSB7eyJiIiwgImIifSwgeyJiYiIsICJiYiJ9fTsKKyAgc3Rk
Ojp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYxID0ge3siYiIs
ICJiIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7ImJiIiwgImJiIn19OwogICB0Lmluc2VydChzdGQ6OmJlZ2luKHYxKSwgc3RkOjpl
bmQodjEpKTsKICAgU3RyaW5nVGFibGUgdTsKLSAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6
c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYyID0ge3siYSIsICJhIn0sIHsiYWEiLCAiYWEifX07Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2MiA9IHt7
ImEiLCAiYSJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeyJhYSIsICJhYSJ9fTsKICAgdS5pbnNlcnQoc3RkOjpiZWdpbih2MiksIHN0
ZDo6ZW5kKHYyKSk7CiAgIEVYUEVDVF9ORSh1LCB0KTsKIH0KQEAgLTE2NzcsNyArMTcyNSw3IEBA
IFRFU1QoTm9kZXMsIEV4dHJhY3RJbnNlcnQpIHsKICAgRVhQRUNUX0ZBTFNFKG5vZGUuZW1wdHko
KSk7CiAKICAgU3RyaW5nVGFibGUgdDI7Ci0gIGF1dG8gcmVzID0gdDIuaW5zZXJ0KHN0ZDo6bW92
ZShub2RlKSk7CisgIFN0cmluZ1RhYmxlOjppbnNlcnRfcmV0dXJuX3R5cGUgcmVzID0gdDIuaW5z
ZXJ0KHN0ZDo6bW92ZShub2RlKSk7CiAgIEVYUEVDVF9UUlVFKHJlcy5pbnNlcnRlZCk7CiAgIEVY
UEVDVF9USEFUKCpyZXMucG9zaXRpb24sIFBhaXIoazAsICIiKSk7CiAgIEVYUEVDVF9GQUxTRShy
ZXMubm9kZSk7CkBAIC0xNzA3LDczICsxNzU1LDQ5IEBAIFRFU1QoTm9kZXMsIEV4dHJhY3RJbnNl
cnQpIHsKICAgRVhQRUNUX0ZBTFNFKG5vZGUpOwogfQogCi1TdHJpbmdUYWJsZSBNYWtlU2ltcGxl
VGFibGUoc2l6ZV90IHNpemUpIHsKLSAgU3RyaW5nVGFibGUgdDsKLSAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHQuZW1wbGFjZShzdGQ6OnN0cmluZygxLCAnQScgKyBpKSwgIiIp
OworSW50VGFibGUgTWFrZVNpbXBsZVRhYmxlKHNpemVfdCBzaXplKSB7CisgIEludFRhYmxlIHQ7
CisgIHdoaWxlICh0LnNpemUoKSA8IHNpemUpIHQuaW5zZXJ0KHQuc2l6ZSgpKTsKICAgcmV0dXJu
IHQ7CiB9CiAKLXN0ZDo6c3RyaW5nIE9yZGVyT2ZJdGVyYXRpb24oY29uc3QgU3RyaW5nVGFibGUm
IHQpIHsKLSAgc3RkOjpzdHJpbmcgb3JkZXI7Ci0gIGZvciAoYXV0byYgcCA6IHQpIG9yZGVyICs9
IHAuZmlyc3Q7Ci0gIHJldHVybiBvcmRlcjsKK3N0ZDo6dmVjdG9yPGludD4gT3JkZXJPZkl0ZXJh
dGlvbihjb25zdCBJbnRUYWJsZSYgdCkgeworICByZXR1cm4ge3QuYmVnaW4oKSwgdC5lbmQoKX07
CiB9CiAKKy8vIFRoZXNlIEl0ZXJhdGlvbk9yZGVyQ2hhbmdlcyB0ZXN0cyBkZXBlbmQgb24gbm9u
LWRldGVybWluaXN0aWMgYmVoYXZpb3IuCisvLyBXZSBhcmUgaW5qZWN0aW5nIG5vbi1kZXRlcm1p
bmlzbSBmcm9tIHRoZSBwb2ludGVyIG9mIHRoZSB0YWJsZSwgYnV0IGRvIHNvIGluCisvLyBhIHdh
eSB0aGF0IG9ubHkgdGhlIHBhZ2UgbWF0dGVycy4gV2UgaGF2ZSB0byByZXRyeSBlbm91Z2ggdGlt
ZXMgdG8gbWFrZSBzdXJlCisvLyB3ZSBhcmUgdG91Y2hpbmcgZGlmZmVyZW50IG1lbW9yeSBwYWdl
cyB0byBjYXVzZSB0aGUgb3JkZXJpbmcgdG8gY2hhbmdlLgorLy8gV2UgYWxzbyBuZWVkIHRvIGtl
ZXAgdGhlIG9sZCB0YWJsZXMgYXJvdW5kIHRvIGF2b2lkIGdldHRpbmcgdGhlIHNhbWUgbWVtb3J5
CisvLyBibG9ja3Mgb3ZlciBhbmQgb3Zlci4KIFRFU1QoVGFibGUsIEl0ZXJhdGlvbk9yZGVyQ2hh
bmdlc0J5SW5zdGFuY2UpIHsKLSAgLy8gTmVlZHMgdG8gYmUgbW9yZSB0aGFuIGtXaWR0aCBlbGVt
ZW50cyB0byBiZSBhYmxlIHRvIGFmZmVjdCBvcmRlci4KLSAgY29uc3QgU3RyaW5nVGFibGUgcmVm
ZXJlbmNlID0gTWFrZVNpbXBsZVRhYmxlKDIwKTsKLQotICAvLyBTaW5jZSBvcmRlciBpcyBub24t
ZGV0ZXJtaW5pc3RpYyB3ZSBjYW4ndCBqdXN0IHRyeSBvbmNlIGFuZCB2ZXJpZnkuCi0gIC8vIFdl
J2xsIHRyeSB1bnRpbCB3ZSBmaW5kIHRoYXQgb3JkZXIgY2hhbmdlZC4gSXQgc2hvdWxkIG5vdCB0
YWtlIG1hbnkgdHJpZXMKLSAgLy8gZm9yIHRoYXQuCi0gIC8vIEltcG9ydGFudDogd2UgaGF2ZSB0
byBrZWVwIHRoZSBvbGQgdGFibGVzIGFyb3VuZC4gT3RoZXJ3aXNlIHRjbWFsbG9jIHdpbGwKLSAg
Ly8ganVzdCBnaXZlIHVzIHRoZSBzYW1lIGJsb2NrcyBhbmQgd2Ugd291bGQgYmUgZG9pbmcgdGhl
IHNhbWUgb3JkZXIgYWdhaW4uCi0gIHN0ZDo6dmVjdG9yPFN0cmluZ1RhYmxlPiBnYXJiYWdlOwot
ICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICBhdXRvIHRyaWFsID0gTWFrZVNp
bXBsZVRhYmxlKDIwKTsKLSAgICBpZiAoT3JkZXJPZkl0ZXJhdGlvbih0cmlhbCkgIT0gT3JkZXJP
Zkl0ZXJhdGlvbihyZWZlcmVuY2UpKSB7Ci0gICAgICAvLyBXZSBhcmUgZG9uZS4KLSAgICAgIHJl
dHVybjsKKyAgZm9yIChzaXplX3Qgc2l6ZSA6IHsyLCA2LCAxMiwgMjB9KSB7CisgICAgY29uc3Qg
YXV0byByZWZlcmVuY2VfdGFibGUgPSBNYWtlU2ltcGxlVGFibGUoc2l6ZSk7CisgICAgY29uc3Qg
YXV0byByZWZlcmVuY2UgPSBPcmRlck9mSXRlcmF0aW9uKHJlZmVyZW5jZV90YWJsZSk7CisKKyAg
ICBzdGQ6OnZlY3RvcjxJbnRUYWJsZT4gdGFibGVzOworICAgIGJvb2wgZm91bmRfZGlmZmVyZW5j
ZSA9IGZhbHNlOworICAgIGZvciAoaW50IGkgPSAwOyAhZm91bmRfZGlmZmVyZW5jZSAmJiBpIDwg
NTAwMDsgKytpKSB7CisgICAgICB0YWJsZXMucHVzaF9iYWNrKE1ha2VTaW1wbGVUYWJsZShzaXpl
KSk7CisgICAgICBmb3VuZF9kaWZmZXJlbmNlID0gT3JkZXJPZkl0ZXJhdGlvbih0YWJsZXMuYmFj
aygpKSAhPSByZWZlcmVuY2U7CisgICAgfQorICAgIGlmICghZm91bmRfZGlmZmVyZW5jZSkgewor
ICAgICAgRkFJTCgpCisgICAgICAgICAgPDwgIkl0ZXJhdGlvbiBvcmRlciByZW1haW5lZCB0aGUg
c2FtZSBhY3Jvc3MgbWFueSBhdHRlbXB0cyB3aXRoIHNpemUgIgorICAgICAgICAgIDw8IHNpemU7
CiAgICAgfQotICAgIGdhcmJhZ2UucHVzaF9iYWNrKHN0ZDo6bW92ZSh0cmlhbCkpOwogICB9Ci0g
IEZBSUwoKTsKIH0KIAogVEVTVChUYWJsZSwgSXRlcmF0aW9uT3JkZXJDaGFuZ2VzT25SZWhhc2gp
IHsKLSAgLy8gU2luY2Ugb3JkZXIgaXMgbm9uLWRldGVybWluaXN0aWMgd2UgY2FuJ3QganVzdCB0
cnkgb25jZSBhbmQgdmVyaWZ5LgotICAvLyBXZSdsbCB0cnkgdW50aWwgd2UgZmluZCB0aGF0IG9y
ZGVyIGNoYW5nZWQuIEl0IHNob3VsZCBub3QgdGFrZSBtYW55IHRyaWVzCi0gIC8vIGZvciB0aGF0
LgotICAvLyBJbXBvcnRhbnQ6IHdlIGhhdmUgdG8ga2VlcCB0aGUgb2xkIHRhYmxlcyBhcm91bmQu
IE90aGVyd2lzZSB0Y21hbGxvYyB3aWxsCi0gIC8vIGp1c3QgZ2l2ZSB1cyB0aGUgc2FtZSBibG9j
a3MgYW5kIHdlIHdvdWxkIGJlIGRvaW5nIHRoZSBzYW1lIG9yZGVyIGFnYWluLgotICBzdGQ6OnZl
Y3RvcjxTdHJpbmdUYWJsZT4gZ2FyYmFnZTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgKytp
KSB7Ci0gICAgLy8gTmVlZHMgdG8gYmUgbW9yZSB0aGFuIGtXaWR0aCBlbGVtZW50cyB0byBiZSBh
YmxlIHRvIGFmZmVjdCBvcmRlci4KLSAgICBTdHJpbmdUYWJsZSB0ID0gTWFrZVNpbXBsZVRhYmxl
KDIwKTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyByZWZlcmVuY2UgPSBPcmRlck9mSXRlcmF0aW9u
KHQpOworICBzdGQ6OnZlY3RvcjxJbnRUYWJsZT4gZ2FyYmFnZTsKKyAgZm9yIChpbnQgaSA9IDA7
IGkgPCA1MDAwOyArK2kpIHsKKyAgICBhdXRvIHQgPSBNYWtlU2ltcGxlVGFibGUoMjApOworICAg
IGNvbnN0IGF1dG8gcmVmZXJlbmNlID0gT3JkZXJPZkl0ZXJhdGlvbih0KTsKICAgICAvLyBGb3Jj
ZSByZWhhc2ggdG8gdGhlIHNhbWUgc2l6ZS4KICAgICB0LnJlaGFzaCgwKTsKLSAgICBzdGQ6OnN0
cmluZyB0cmlhbCA9IE9yZGVyT2ZJdGVyYXRpb24odCk7Ci0gICAgaWYgKHRyaWFsICE9IHJlZmVy
ZW5jZSkgewotICAgICAgLy8gV2UgYXJlIGRvbmUuCi0gICAgICByZXR1cm47Ci0gICAgfQotICAg
IGdhcmJhZ2UucHVzaF9iYWNrKHN0ZDo6bW92ZSh0KSk7Ci0gIH0KLSAgRkFJTCgpOwotfQotCi1U
RVNUKFRhYmxlLCBJdGVyYXRpb25PcmRlckNoYW5nZXNGb3JTbWFsbFRhYmxlcykgewotICAvLyBT
aW5jZSBvcmRlciBpcyBub24tZGV0ZXJtaW5pc3RpYyB3ZSBjYW4ndCBqdXN0IHRyeSBvbmNlIGFu
ZCB2ZXJpZnkuCi0gIC8vIFdlJ2xsIHRyeSB1bnRpbCB3ZSBmaW5kIHRoYXQgb3JkZXIgY2hhbmdl
ZC4KLSAgLy8gSW1wb3J0YW50OiB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9sZCB0YWJsZXMgYXJvdW5k
LiBPdGhlcndpc2UgdGNtYWxsb2Mgd2lsbAotICAvLyBqdXN0IGdpdmUgdXMgdGhlIHNhbWUgYmxv
Y2tzIGFuZCB3ZSB3b3VsZCBiZSBkb2luZyB0aGUgc2FtZSBvcmRlciBhZ2Fpbi4KLSAgU3RyaW5n
VGFibGUgcmVmZXJlbmNlX3RhYmxlID0gTWFrZVNpbXBsZVRhYmxlKDUpOwotICBjb25zdCBzdGQ6
OnN0cmluZyByZWZlcmVuY2UgPSBPcmRlck9mSXRlcmF0aW9uKHJlZmVyZW5jZV90YWJsZSk7Ci0g
IHN0ZDo6dmVjdG9yPFN0cmluZ1RhYmxlPiBnYXJiYWdlOwotICBmb3IgKGludCBpID0gMDsgaSA8
IDUwOyArK2kpIHsKLSAgICBTdHJpbmdUYWJsZSB0ID0gTWFrZVNpbXBsZVRhYmxlKDUpOwotICAg
IHN0ZDo6c3RyaW5nIHRyaWFsID0gT3JkZXJPZkl0ZXJhdGlvbih0KTsKKyAgICBhdXRvIHRyaWFs
ID0gT3JkZXJPZkl0ZXJhdGlvbih0KTsKICAgICBpZiAodHJpYWwgIT0gcmVmZXJlbmNlKSB7CiAg
ICAgICAvLyBXZSBhcmUgZG9uZS4KICAgICAgIHJldHVybjsKQEAgLTE3ODMsMTM2ICsxODA3LDIy
IEBAIFRFU1QoVGFibGUsIEl0ZXJhdGlvbk9yZGVyQ2hhbmdlc0ZvclNtYWxsVGFibGVzKSB7CiAg
IEZBSUwoKSA8PCAiSXRlcmF0aW9uIG9yZGVyIHJlbWFpbmVkIHRoZSBzYW1lIGFjcm9zcyBtYW55
IGF0dGVtcHRzLiI7CiB9CiAKLS8vIEZpbGwgdGhlIHRhYmxlIHRvIDMgZGlmZmVyZW50IGxvYWQg
ZmFjdG9ycyAobWluLCBtZWRpYW4sIG1heCkgYW5kIGV2YWx1YXRlCi0vLyB0aGUgcGVyY2VudGFn
ZSBvZiBwZXJmZWN0IGhpdHMgdXNpbmcgdGhlIGRlYnVnIEFQSS4KLXRlbXBsYXRlIDxjbGFzcyBU
YWJsZSwgY2xhc3MgQWRkRm4+Ci1zdGQ6OnZlY3Rvcjxkb3VibGU+IENvbGxlY3RQZXJmZWN0UmF0
aW9zKFRhYmxlIHQsIEFkZEZuIGFkZCkgewotICB1c2luZyBLZXkgPSB0eXBlbmFtZSBUYWJsZTo6
a2V5X3R5cGU7Ci0KLSAgLy8gRmlyc3QsIGZpbGwgZW5vdWdoIHRvIGhhdmUgYSBnb29kIGRpc3Ry
aWJ1dGlvbi4KLSAgY29uc3RleHByIHNpemVfdCBrTWluU2l6ZSA9IDEwMDAwOwotICBzdGQ6OnZl
Y3RvcjxLZXk+IGtleXM7Ci0gIHdoaWxlICh0LnNpemUoKSA8IGtNaW5TaXplKSBrZXlzLnB1c2hf
YmFjayhhZGQodCkpOwotICAvLyBUaGVuLCBpbnNlcnQgdW50aWwgd2UgcmVhY2ggbWluIGxvYWQg
ZmFjdG9yLgotICBkb3VibGUgbGYgPSB0LmxvYWRfZmFjdG9yKCk7Ci0gIHdoaWxlIChsZiA8PSB0
LmxvYWRfZmFjdG9yKCkpIGtleXMucHVzaF9iYWNrKGFkZCh0KSk7Ci0KLSAgLy8gV2UgYXJlIG5v
dyBhdCBtaW4gbG9hZCBmYWN0b3IuIFRha2UgYSBzbmFwc2hvdC4KLSAgc2l6ZV90IHBlcmZlY3Qg
PSAwOwotICBhdXRvIHVwZGF0ZV9wZXJmZWN0ID0gWyZdKEtleSBrKSB7Ci0gICAgcGVyZmVjdCAr
PSBHZXRIYXNodGFibGVEZWJ1Z051bVByb2Jlcyh0LCBrKSA9PSAwOwotICB9OwotICBmb3IgKGNv
bnN0IGF1dG8mIGsgOiBrZXlzKSB1cGRhdGVfcGVyZmVjdChrKTsKKy8vIFZlcmlmeSB0aGF0IHBv
aW50ZXJzIGFyZSBpbnZhbGlkYXRlZCBhcyBzb29uIGFzIGEgc2Vjb25kIGVsZW1lbnQgaXMgaW5z
ZXJ0ZWQuCisvLyBUaGlzIHByZXZlbnRzIGRlcGVuZGVuY3kgb24gcG9pbnRlciBzdGFiaWxpdHkg
b24gc21hbGwgdGFibGVzLgorVEVTVChUYWJsZSwgVW5zdGFibGVQb2ludGVycykgeworICBJbnRU
YWJsZSB0YWJsZTsKIAotICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHBlcmZlY3RfcmF0aW9zOwotICAv
LyBLZWVwIGdvaW5nIHVudGlsIHdlIGhpdCBtYXggbG9hZCBmYWN0b3IuCi0gIHdoaWxlICh0Lmxv
YWRfZmFjdG9yKCkgPCAuNikgewotICAgIHBlcmZlY3RfcmF0aW9zLnB1c2hfYmFjaygxLjAgKiBw
ZXJmZWN0IC8gdC5zaXplKCkpOwotICAgIHVwZGF0ZV9wZXJmZWN0KGFkZCh0KSk7Ci0gIH0KLSAg
d2hpbGUgKHQubG9hZF9mYWN0b3IoKSA+IC41KSB7Ci0gICAgcGVyZmVjdF9yYXRpb3MucHVzaF9i
YWNrKDEuMCAqIHBlcmZlY3QgLyB0LnNpemUoKSk7Ci0gICAgdXBkYXRlX3BlcmZlY3QoYWRkKHQp
KTsKLSAgfQotICByZXR1cm4gcGVyZmVjdF9yYXRpb3M7Ci19Ci0KLXN0ZDo6dmVjdG9yPHN0ZDo6
cGFpcjxkb3VibGUsIGRvdWJsZT4+IFN0cmluZ1RhYmxlUGVmZWN0UmF0aW9zKCkgewotICBjb25z
dGV4cHIgYm9vbCBrUmFuZG9taXplc0luc2VydHMgPQotI2lmIE5ERUJVRwotICAgICAgZmFsc2U7
Ci0jZWxzZSAgIC8vIE5ERUJVRwotICAgICAgdHJ1ZTsKLSNlbmRpZiAgLy8gTkRFQlVHCi0KLSAg
Ly8gVGhlIGVmZmVjdGl2ZSBsb2FkIGZhY3RvciBpcyBsYXJnZXIgaW4gbm9uLW9wdCBtb2RlIGJl
Y2F1c2Ugd2UgaW5zZXJ0Ci0gIC8vIGVsZW1lbnRzIG91dCBvZiBvcmRlci4KLSAgc3dpdGNoIChj
b250YWluZXJfaW50ZXJuYWw6Okdyb3VwOjprV2lkdGgpIHsKLSAgICBjYXNlIDg6Ci0gICAgICBp
ZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7Ci0gICAgICAgIHJldHVybiB7ezAuOTg2LCAwLjAyfSwg
ezAuOTUsIDAuMDJ9LCB7MC44OSwgMC4wMn19OwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0
dXJuIHt7MC45OTUsIDAuMDF9LCB7MC45NywgMC4wMX0sIHswLjg5LCAwLjAyfX07Ci0gICAgICB9
Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDE2OgotICAgICAgaWYgKGtSYW5kb21pemVzSW5zZXJ0
cykgewotICAgICAgICByZXR1cm4ge3swLjk3MywgMC4wMX0sIHswLjk2NSwgMC4wMX0sIHswLjky
LCAwLjAyfX07Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4ge3swLjk5NSwgMC4wMDV9
LCB7MC45OSwgMC4wMDV9LCB7MC45NCwgMC4wMX19OwotICAgICAgfQotICAgICAgYnJlYWs7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgIC8vIElnbm9yZSBhbnl0aGluZyBlbHNlLgotICAgICAgcmV0dXJu
IHt9OwotICB9Ci19Ci0KLS8vIFRoaXMgaXMgYWxtb3N0IGEgY2hhbmdlIGRldGVjdG9yLCBidXQg
aXQgYWxsb3dzIHVzIHRvIGtub3cgaG93IHdlIGFyZQotLy8gYWZmZWN0aW5nIHRoZSBwcm9iZSBk
aXN0cmlidXRpb24uCi1URVNUKFRhYmxlLCBFZmZlY3RpdmVMb2FkRmFjdG9yU3RyaW5ncykgewot
ICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHBlcmZlY3RfcmF0aW9zID0KLSAgICAgIENvbGxlY3RQZXJm
ZWN0UmF0aW9zKFN0cmluZ1RhYmxlKCksIFtdKFN0cmluZ1RhYmxlJiB0KSB7Ci0gICAgICAgIHJl
dHVybiB0LmVtcGxhY2Uoc3RkOjp0b19zdHJpbmcodC5zaXplKCkpLCAiIikuZmlyc3QtPmZpcnN0
OwotICAgICAgfSk7Ci0KLSAgYXV0byByYXRpb3MgPSBTdHJpbmdUYWJsZVBlZmVjdFJhdGlvcygp
OwotICBpZiAocmF0aW9zLmVtcHR5KCkpIHJldHVybjsKLQotICBFWFBFQ1RfVEhBVChwZXJmZWN0
X3JhdGlvcy5mcm9udCgpLAotICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1swXS5maXJz
dCwgcmF0aW9zWzBdLnNlY29uZCkpOwotICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlvc1twZXJm
ZWN0X3JhdGlvcy5zaXplKCkgLyAyXSwKLSAgICAgICAgICAgICAgRG91YmxlTmVhcihyYXRpb3Nb
MV0uZmlyc3QsIHJhdGlvc1sxXS5zZWNvbmQpKTsKLSAgRVhQRUNUX1RIQVQocGVyZmVjdF9yYXRp
b3MuYmFjaygpLAotICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1syXS5maXJzdCwgcmF0
aW9zWzJdLnNlY29uZCkpOwotfQotCi1zdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3Vi
bGU+PiBJbnRUYWJsZVBlZmVjdFJhdGlvcygpIHsKLSAgY29uc3RleHByIGJvb2wga1JhbmRvbWl6
ZXNJbnNlcnRzID0KLSNpZmRlZiBOREVCVUcKLSAgICAgIGZhbHNlOwotI2Vsc2UgICAvLyBOREVC
VUcKLSAgICAgIHRydWU7Ci0jZW5kaWYgIC8vIE5ERUJVRwotCi0gIC8vIFRoZSBlZmZlY3RpdmUg
bG9hZCBmYWN0b3IgaXMgbGFyZ2VyIGluIG5vbi1vcHQgbW9kZSBiZWNhdXNlIHdlIGluc2VydAot
ICAvLyBlbGVtZW50cyBvdXQgb2Ygb3JkZXIuCi0gIHN3aXRjaCAoY29udGFpbmVyX2ludGVybmFs
OjpHcm91cDo6a1dpZHRoKSB7Ci0gICAgY2FzZSA4OgotICAgICAgaWYgKGtSYW5kb21pemVzSW5z
ZXJ0cykgewotICAgICAgICByZXR1cm4ge3swLjk5LCAwLjAyfSwgezAuOTg1LCAwLjAyfSwgezAu
OTUsIDAuMDV9fTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiB7ezAuOTksIDAuMDF9
LCB7MC45OSwgMC4wMX0sIHswLjk1LCAwLjAyfX07Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAg
ICBjYXNlIDE2OgotICAgICAgaWYgKGtSYW5kb21pemVzSW5zZXJ0cykgewotICAgICAgICByZXR1
cm4ge3swLjk4LCAwLjAyfSwgezAuOTc4LCAwLjAyfSwgezAuOTYsIDAuMDJ9fTsKLSAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHJldHVybiB7ezAuOTk4LCAwLjAwM30sIHswLjk5NSwgMC4wMX0sIHsw
Ljk3NSwgMC4wMn19OwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAg
IC8vIElnbm9yZSBhbnl0aGluZyBlbHNlLgotICAgICAgcmV0dXJuIHt9OwotICB9Ci19CisgIGNv
bnN0IGF1dG8gYWRkciA9IFsmXShpbnQgaSkgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oJip0YWJsZS5maW5kKGkpKTsKKyAgfTsKIAotLy8gVGhpcyBpcyBhbG1vc3Qg
YSBjaGFuZ2UgZGV0ZWN0b3IsIGJ1dCBpdCBhbGxvd3MgdXMgdG8ga25vdyBob3cgd2UgYXJlCi0v
LyBhZmZlY3RpbmcgdGhlIHByb2JlIGRpc3RyaWJ1dGlvbi4KLVRFU1QoVGFibGUsIEVmZmVjdGl2
ZUxvYWRGYWN0b3JJbnRzKSB7Ci0gIHN0ZDo6dmVjdG9yPGRvdWJsZT4gcGVyZmVjdF9yYXRpb3Mg
PSBDb2xsZWN0UGVyZmVjdFJhdGlvcygKLSAgICAgIEludFRhYmxlKCksIFtdKEludFRhYmxlJiB0
KSB7IHJldHVybiAqdC5lbXBsYWNlKHQuc2l6ZSgpKS5maXJzdDsgfSk7CisgIHRhYmxlLmluc2Vy
dCgwKTsKKyAgY29uc3QgdWludHB0cl90IG9sZF9wdHIgPSBhZGRyKDApOwogCi0gIGF1dG8gcmF0
aW9zID0gSW50VGFibGVQZWZlY3RSYXRpb3MoKTsKLSAgaWYgKHJhdGlvcy5lbXB0eSgpKSByZXR1
cm47CisgIC8vIFRoaXMgY2F1c2VzIGEgcmVoYXNoLgorICB0YWJsZS5pbnNlcnQoMSk7CiAKLSAg
RVhQRUNUX1RIQVQocGVyZmVjdF9yYXRpb3MuZnJvbnQoKSwKLSAgICAgICAgICAgICAgRG91Ymxl
TmVhcihyYXRpb3NbMF0uZmlyc3QsIHJhdGlvc1swXS5zZWNvbmQpKTsKLSAgRVhQRUNUX1RIQVQo
cGVyZmVjdF9yYXRpb3NbcGVyZmVjdF9yYXRpb3Muc2l6ZSgpIC8gMl0sCi0gICAgICAgICAgICAg
IERvdWJsZU5lYXIocmF0aW9zWzFdLmZpcnN0LCByYXRpb3NbMV0uc2Vjb25kKSk7Ci0gIEVYUEVD
VF9USEFUKHBlcmZlY3RfcmF0aW9zLmJhY2soKSwKLSAgICAgICAgICAgICAgRG91YmxlTmVhcihy
YXRpb3NbMl0uZmlyc3QsIHJhdGlvc1syXS5zZWNvbmQpKTsKKyAgRVhQRUNUX05FKG9sZF9wdHIs
IGFkZHIoMCkpOwogfQogCiAvLyBDb25maXJtIHRoYXQgd2UgYXNzZXJ0IGlmIHdlIHRyeSB0byBl
cmFzZSgpIGVuZCgpLgpAQCAtMTkzMSw5ICsxODQxLDUyIEBAIFRFU1QoVGFibGVEZWF0aFRlc3Qs
IEVyYXNlT2ZFbmRBc3NlcnRzKSB7CiAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQodC5lcmFz
ZSh0LmVuZCgpKSwga0RlYXRoTXNnKTsKIH0KIAorVEVTVChSYXdIYXNoU2FtcGxlclRlc3QsIFNh
bXBsZSkgeworICAvLyBFbmFibGUgdGhlIGZlYXR1cmUgZXZlbiBpZiB0aGUgcHJvZCBkZWZhdWx0
IGlzIG9mZi4KKyAgU2V0SGFzaHRhYmxlekVuYWJsZWQodHJ1ZSk7CisgIFNldEhhc2h0YWJsZXpT
YW1wbGVQYXJhbWV0ZXIoMTAwKTsKKworICBhdXRvJiBzYW1wbGVyID0gSGFzaHRhYmxlelNhbXBs
ZXI6Okdsb2JhbCgpOworICBzaXplX3Qgc3RhcnRfc2l6ZSA9IDA7CisgIHN0YXJ0X3NpemUgKz0g
c2FtcGxlci5JdGVyYXRlKFsmXShjb25zdCBIYXNodGFibGV6SW5mbyYpIHsgKytzdGFydF9zaXpl
OyB9KTsKKworICBzdGQ6OnZlY3RvcjxJbnRUYWJsZT4gdGFibGVzOworICBmb3IgKGludCBpID0g
MDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHRhYmxlcy5lbXBsYWNlX2JhY2soKTsKKyAgICB0
YWJsZXMuYmFjaygpLmluc2VydCgxKTsKKyAgfQorICBzaXplX3QgZW5kX3NpemUgPSAwOworICBl
bmRfc2l6ZSArPSBzYW1wbGVyLkl0ZXJhdGUoWyZdKGNvbnN0IEhhc2h0YWJsZXpJbmZvJikgeyAr
K2VuZF9zaXplOyB9KTsKKworICBFWFBFQ1RfTkVBUigoZW5kX3NpemUgLSBzdGFydF9zaXplKSAv
IHN0YXRpY19jYXN0PGRvdWJsZT4odGFibGVzLnNpemUoKSksCisgICAgICAgICAgICAgIDAuMDEs
IDAuMDA1KTsKK30KKworVEVTVChSYXdIYXNoU2FtcGxlclRlc3QsIERvTm90U2FtcGxlQ3VzdG9t
QWxsb2NhdG9ycykgeworICAvLyBFbmFibGUgdGhlIGZlYXR1cmUgZXZlbiBpZiB0aGUgcHJvZCBk
ZWZhdWx0IGlzIG9mZi4KKyAgU2V0SGFzaHRhYmxlekVuYWJsZWQodHJ1ZSk7CisgIFNldEhhc2h0
YWJsZXpTYW1wbGVQYXJhbWV0ZXIoMTAwKTsKKworICBhdXRvJiBzYW1wbGVyID0gSGFzaHRhYmxl
elNhbXBsZXI6Okdsb2JhbCgpOworICBzaXplX3Qgc3RhcnRfc2l6ZSA9IDA7CisgIHN0YXJ0X3Np
emUgKz0gc2FtcGxlci5JdGVyYXRlKFsmXShjb25zdCBIYXNodGFibGV6SW5mbyYpIHsgKytzdGFy
dF9zaXplOyB9KTsKKworICBzdGQ6OnZlY3RvcjxDdXN0b21BbGxvY0ludFRhYmxlPiB0YWJsZXM7
CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgdGFibGVzLmVtcGxh
Y2VfYmFjaygpOworICAgIHRhYmxlcy5iYWNrKCkuaW5zZXJ0KDEpOworICB9CisgIHNpemVfdCBl
bmRfc2l6ZSA9IDA7CisgIGVuZF9zaXplICs9IHNhbXBsZXIuSXRlcmF0ZShbJl0oY29uc3QgSGFz
aHRhYmxlekluZm8mKSB7ICsrZW5kX3NpemU7IH0pOworCisgIEVYUEVDVF9ORUFSKChlbmRfc2l6
ZSAtIHN0YXJ0X3NpemUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPih0YWJsZXMuc2l6ZSgpKSwKKyAg
ICAgICAgICAgICAgMC4wMCwgMC4wMDEpOworfQorCiAjaWZkZWYgQUREUkVTU19TQU5JVElaRVIK
IFRFU1QoU2FuaXRpemVyLCBQb2lzb25pbmdVbnVzZWQpIHsKICAgSW50VGFibGUgdDsKKyAgdC5y
ZXNlcnZlKDUpOwogICAvLyBJbnNlcnQgc29tZXRoaW5nIHRvIGZvcmNlIGFuIGFsbG9jYXRpb24u
CiAgIGludDY0X3QmIHYxID0gKnQuaW5zZXJ0KDApLmZpcnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5jYwppbmRleCBiMThlMGJiN2Ex
ZWE1ZmZmZGM5NjE4ZjFlNzkzYjhmZjkyZWQ5MDM4Li41YTY2Y2I0ZDE0ZDI3N2UwODU1OGU0Yzli
Njg3YzdkOGYzMWEwY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVz
dF9pbnN0YW5jZV90cmFja2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0
X2luc3RhbmNlX3RyYWNrZXIuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNl
X3RyYWNrZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNr
ZXIuaAppbmRleCBlYzQ1ZjU3NDAzN2ZjOGUwYjY5MzdiY2Q4ZmMxZjQyNzU2ZTA4MTA4Li5jNDcz
MWRiZTNkMWQ4YjM1MzYxZGNjNGRiMWY1Y2NjMTljMWRmYzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5oCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOCwxMCArMTgsMTIgQEAKICNpbmNsdWRlIDxj
c3RkbGliPgogI2luY2x1ZGUgPG9zdHJlYW0+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL2NvbXBh
cmUuaCIKKwogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHRlc3RfaW50ZXJuYWwgewogCi0v
LyBBIHR5cGUgdGhhdCBjb3VudHMgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgdGhlIHR5cGUsIHRo
ZSBsaXZlIG9jY3VycmVuY2VzIG9mCisvLyBBIHR5cGUgdGhhdCBjb3VudHMgbnVtYmVyIG9mIG9j
Y3VycmVuY2VzIG9mIHRoZSB0eXBlLCB0aGUgbGl2ZSBvY2N1cnJlbmNlcyBvZgogLy8gdGhlIHR5
cGUsIGFzIHdlbGwgYXMgdGhlIG51bWJlciBvZiBjb3BpZXMsIG1vdmVzLCBzd2FwcywgYW5kIGNv
bXBhcmlzb25zIHRoYXQKIC8vIGhhdmUgb2NjdXJyZWQgb24gdGhlIHR5cGUuIFRoaXMgaXMgdXNl
ZCBhcyBhIGJhc2UgY2xhc3MgZm9yIHRoZSBjb3B5YWJsZSwKIC8vIGNvcHlhYmxlK21vdmFibGUs
IGFuZCBtb3ZhYmxlIHR5cGVzIGJlbG93IHRoYXQgYXJlIHVzZWQgaW4gYWN0dWFsIHRlc3RzLiBV
c2UKQEAgLTk2LDYgKzk4LDE0IEBAIGNsYXNzIEJhc2VDb3VudGVkSW5zdGFuY2UgewogICAgIHJl
dHVybiB2YWx1ZV8gPj0geC52YWx1ZV87CiAgIH0KIAorICBhYnNsOjp3ZWFrX29yZGVyaW5nIGNv
bXBhcmUoY29uc3QgQmFzZUNvdW50ZWRJbnN0YW5jZSYgeCkgY29uc3QgeworICAgICsrbnVtX2Nv
bXBhcmlzb25zXzsKKyAgICByZXR1cm4gdmFsdWVfIDwgeC52YWx1ZV8KKyAgICAgICAgICAgICAg
ID8gYWJzbDo6d2Vha19vcmRlcmluZzo6bGVzcworICAgICAgICAgICAgICAgOiB2YWx1ZV8gPT0g
eC52YWx1ZV8gPyBhYnNsOjp3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6OndlYWtfb3JkZXJpbmc6OmdyZWF0ZXI7Cisg
IH0KKwogICBpbnQgdmFsdWUoKSBjb25zdCB7CiAgICAgaWYgKCFpc19saXZlXykgc3RkOjphYm9y
dCgpOwogICAgIHJldHVybiB2YWx1ZV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyX3Rlc3QuY2MKaW5kZXggMGFlNTc2MzZkZjIxMzM4
OTc5MjEwMzk1YmIzOTk2YmJkOGM5N2I4ZS4uMWM2YTRmYTcxNTBkMzM0ODdlYjA3ODE1OTA4ZjRh
YzE5MmNjZTU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5z
dGFuY2VfdHJhY2tlcl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0
X2luc3RhbmNlX3RyYWNrZXJfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtMTc0LDYgKzE3NCw4IEBAIFRFU1QoVGVzdEluc3RhbmNlVHJhY2tlciwg
Q29tcGFyaXNvbnMpIHsKICAgRVhQRUNUX0VRKDUsIHRyYWNrZXIuY29tcGFyaXNvbnMoKSk7CiAg
IEVYUEVDVF9GQUxTRShvbmUgPj0gdHdvKTsKICAgRVhQRUNUX0VRKDYsIHRyYWNrZXIuY29tcGFy
aXNvbnMoKSk7CisgIEVYUEVDVF9UUlVFKG9uZS5jb21wYXJlKHR3bykgPCAwKTsgIC8vIE5PTElO
VAorICBFWFBFQ1RfRVEoNywgdHJhY2tlci5jb21wYXJpc29ucygpKTsKIAogICB0cmFja2VyLlJl
c2V0Q29waWVzTW92ZXNTd2FwcygpOwogICBFWFBFQ1RfRVEoMCwgdHJhY2tlci5jb21wYXJpc29u
cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90cmFja2VkLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvdHJhY2tlZC5oCmluZGV4IDdkMTRhZjAzMTM4ZDNlZmQ2
NjIzN2I3OTdmM2VmNzNjMDAzYzg4MTUuLjc1MTczYWIwMGFhY2QxNDdiM2UwMGZlOGEyOWE0Yzlj
OGZmYjM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90cmFja2VkLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3RyYWNrZWQuaApAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oCmluZGV4IDJmZmI2NDZj
YjI2NGE2NWVmYTRiZWNjZGVmMmNhMjhlMTRlOWE1ZDcuLjY4ODE3ZTRlNGNjMDY0OGI0MmE0OTkw
YzYxM2M2ZWNmMTYxMTA5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91
bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIGNvbnRh
aW5lcl9pbnRlcm5hbCB7CiB0ZW1wbGF0ZSA8Y2xhc3MgVW5vcmRNYXA+CiBjbGFzcyBDb25zdHJ1
Y3RvclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OwogCi1UWVBFRF9URVNUX0NBU0Vf
UChDb25zdHJ1Y3RvclRlc3QpOworVFlQRURfVEVTVF9TVUlURV9QKENvbnN0cnVjdG9yVGVzdCk7
CiAKIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE5vQXJncykgewogICBUeXBlUGFyYW0g
bTsKQEAgLTgzLDggKzgzLDI4IEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tl
dENvdW50SGFzaEVxdWFsQWxsb2MpIHsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEy
Myk7CiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50QWxsb2Mp
IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX3N0ZF91bm9yZGVyZWRfbWFwIDog
c3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVD4KK3N0cnVjdCBp
c19zdGRfdW5vcmRlcmVkX21hcDxzdGQ6OnVub3JkZXJlZF9tYXA8VC4uLj4+IDogc3RkOjp0cnVl
X3R5cGUge307CisKICNpZiBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQo
VU5PUkRFUkVEX01BUF9DWFgxNykKK3VzaW5nIGhhc19jeHgxNF9zdGRfYXBpcyA9IHN0ZDo6dHJ1
ZV90eXBlOworI2Vsc2UKK3VzaW5nIGhhc19jeHgxNF9zdGRfYXBpcyA9IHN0ZDo6ZmFsc2VfdHlw
ZTsKKyNlbmRpZgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIGV4cGVjdF9jeHgxNF9h
cGlzID0KKyAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpuZWdhdGlvbjxpc19zdGRfdW5vcmRl
cmVkX21hcDxUPj4sCisgICAgICAgICAgICAgICAgICAgICAgaGFzX2N4eDE0X3N0ZF9hcGlzPjsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQnVja2V0Q291bnRBbGxvY1Rl
c3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgor
dm9pZCBCdWNrZXRDb3VudEFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBBID0g
dHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKICAgQSBhbGxvYygwKTsKICAgVHlw
ZVBhcmFtIG0oMTIzLCBhbGxvYyk7CkBAIC05MiwxMSArMTEyLDE3IEBAIFRZUEVEX1RFU1RfUChD
b25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50QWxsb2MpIHsKICAgRVhQRUNUX1RSVUUobS5lbXB0
eSgpKTsKICAgRVhQRUNUX1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgp
KTsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Ci0jZW5kaWYKIH0KIAotVFlQ
RURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRIYXNoQWxsb2MpIHsKLSNpZiBk
ZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgx
NykKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50QWxsb2MpIHsKKyAg
QnVja2V0Q291bnRBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfY3h4MTRfYXBpczxUeXBlUGFy
YW0+KCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBCdWNrZXRD
b3VudEhhc2hBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHlwZVBhcmFtPgordm9pZCBCdWNrZXRDb3VudEhhc2hBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5
cGUpIHsKICAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOwogICB1c2luZyBB
ID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKICAgSCBoYXNoZXI7CkBAIC0x
MDcsMTggKzEzMywzOCBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3Vu
dEhhc2hBbGxvYykgewogICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOwogICBFWFBFQ1RfVEhBVCht
LCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOwogICBFWFBFQ1RfR0UobS5idWNr
ZXRfY291bnQoKSwgMTIzKTsKLSNlbmRpZgogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBCdWNrZXRBbGxvYykgeworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0
Q291bnRIYXNoQWxsb2MpIHsKKyAgQnVja2V0Q291bnRIYXNoQWxsb2NUZXN0PFR5cGVQYXJhbT4o
ZXhwZWN0X2N4eDE0X2FwaXM8VHlwZVBhcmFtPigpKTsKK30KKwogI2lmIEFCU0xfVU5PUkRFUkVE
X1NVUFBPUlRTX0FMTE9DX0NUT1JTCit1c2luZyBoYXNfYWxsb2Nfc3RkX2NvbnN0cnVjdG9ycyA9
IHN0ZDo6dHJ1ZV90eXBlOworI2Vsc2UKK3VzaW5nIGhhc19hbGxvY19zdGRfY29uc3RydWN0b3Jz
ID0gc3RkOjpmYWxzZV90eXBlOworI2VuZGlmCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNp
bmcgZXhwZWN0X2FsbG9jX2NvbnN0cnVjdG9ycyA9CisgICAgYWJzbDo6ZGlzanVuY3Rpb248YWJz
bDo6bmVnYXRpb248aXNfc3RkX3Vub3JkZXJlZF9tYXA8VD4+LAorICAgICAgICAgICAgICAgICAg
ICAgIGhhc19hbGxvY19zdGRfY29uc3RydWN0b3JzPjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5
cGVQYXJhbT4KK3ZvaWQgQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAg
IHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOwogICBBIGFsbG9j
KDApOwogICBUeXBlUGFyYW0gbShhbGxvYyk7CiAgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3Io
KSwgYWxsb2MpOwogICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOwogICBFWFBFQ1RfVEhBVChtLCA6
OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOwotI2VuZGlmCit9CisKK1RZUEVEX1RF
U1RfUChDb25zdHJ1Y3RvclRlc3QsIEFsbG9jKSB7CisgIEFsbG9jVGVzdDxUeXBlUGFyYW0+KGV4
cGVjdF9hbGxvY19jb25zdHJ1Y3RvcnM8VHlwZVBhcmFtPigpKTsKIH0KIAogVFlQRURfVEVTVF9Q
KENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9jKSB7CkBA
IC0xNDAsOCArMTg2LDExIEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRl
cmF0b3JCdWNrZXRIYXNoRXF1YWxBbGxvYykgewogICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQo
KSwgMTIzKTsKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRv
ckJ1Y2tldEFsbG9jKSB7Ci0jaWYgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE0KSB8fCBkZWZp
bmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgor
dm9pZCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgSW5wdXRJdGVyYXRvckJ1Y2tldEFs
bG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwogICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjph
bGxvY2F0b3JfdHlwZTsKICAgQSBhbGxvYygwKTsKQEAgLTE1MiwxMSArMjAxLDE3IEBAIFRZUEVE
X1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNrZXRBbGxvYykgewogICBF
WFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKICAgRVhQRUNUX1RIQVQoaXRlbXMo
bSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKICAgRVhQ
RUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Ci0jZW5kaWYKIH0KIAotVFlQRURfVEVTVF9Q
KENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvYykgewotI2lmIGRl
ZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE3
KQorVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9j
KSB7CisgIElucHV0SXRlcmF0b3JCdWNrZXRBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfY3h4
MTRfYXBpczxUeXBlUGFyYW0+KCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFt
Pgordm9pZCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jVGVzdChzdGQ6OmZhbHNlX3R5cGUp
IHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIElucHV0SXRlcmF0b3JC
dWNrZXRIYXNoQWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CiAgIHVzaW5nIEggPSB0eXBlbmFtZSBU
eXBlUGFyYW06Omhhc2hlcjsKICAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2Nh
dG9yX3R5cGU7CkBAIC0xNzAsNyArMjI1LDEwIEBAIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxsb2MpIHsKICAgRVhQRUNUX0VRKG0uZ2V0X2Fs
bG9jYXRvcigpLCBhbGxvYyk7CiAgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVu
b3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9j
b3VudCgpLCAxMjMpOwotI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3Qs
IElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxsb2MpIHsKKyAgSW5wdXRJdGVyYXRvckJ1Y2tldEhh
c2hBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfY3h4MTRfYXBpczxUeXBlUGFyYW0+KCkpOwog
fQogCiBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKQEAg
LTE5MCw4ICsyNDgsMTEgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0
cnVjdG9yKSB7CiAgIEVYUEVDVF9FUShtLCBuKTsKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yQWxsb2MpIHsKLSNpZiBBQlNMX1VOT1JERVJFRF9TVVBQ
T1JUU19BTExPQ19DVE9SUwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQ29w
eUNvbnN0cnVjdG9yQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQ29weUNvbnN0cnVjdG9yQWxsb2NUZXN0KHN0ZDo6dHJ1
ZV90eXBlKSB7CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQ
YXJhbT47CiAgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKICAgdXNpbmcg
RSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOwpAQCAtMjA2LDcgKzI2NywxMCBAQCBU
WVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3JBbGxvYykgewogICBF
WFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CiAgIEVYUEVDVF9ORShtLmdldF9hbGxv
Y2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOwogICBFWFBFQ1RfRVEobSwgbik7Ci0jZW5kaWYK
K30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yQWxsb2Mp
IHsKKyAgQ29weUNvbnN0cnVjdG9yQWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2FsbG9jX2Nv
bnN0cnVjdG9yczxUeXBlUGFyYW0+KCkpOwogfQogCiAvLyBUT0RPKGFsa2lzKTogVGVzdCBub24t
cHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBvbiBjb3B5IGNvbnN0cnVjdG9ycy4KQEAgLTIyOSw4ICsy
OTMsMTEgQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUNvbnN0cnVjdG9yKSB7
CiAgIEVYUEVDVF9FUShtLCBuKTsKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwg
TW92ZUNvbnN0cnVjdG9yQWxsb2MpIHsKLSNpZiBBQlNMX1VOT1JERVJFRF9TVVBQT1JUU19BTExP
Q19DVE9SUwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgTW92ZUNvbnN0cnVj
dG9yQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5
cGVQYXJhbT4KK3ZvaWQgTW92ZUNvbnN0cnVjdG9yQWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7
CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CiAg
IHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKICAgdXNpbmcgRSA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOwpAQCAtMjQ2LDcgKzMxMywxMCBAQCBUWVBFRF9URVNU
X1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3JBbGxvYykgewogICBFWFBFQ1RfRVEo
bS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CiAgIEVYUEVDVF9ORShtLmdldF9hbGxvY2F0b3IoKSwg
bi5nZXRfYWxsb2NhdG9yKCkpOwogICBFWFBFQ1RfRVEobSwgbik7Ci0jZW5kaWYKK30KKworVFlQ
RURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUNvbnN0cnVjdG9yQWxsb2MpIHsKKyAgTW92
ZUNvbnN0cnVjdG9yQWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2FsbG9jX2NvbnN0cnVjdG9y
czxUeXBlUGFyYW0+KCkpOwogfQogCiAvLyBUT0RPKGFsa2lzKTogVGVzdCBub24tcHJvcGFnYXRp
bmcgYWxsb2NhdG9ycyBvbiBtb3ZlIGNvbnN0cnVjdG9ycy4KQEAgLTI2OSw4ICszMzksMTEgQEAg
VFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEVx
dWFsQWxsb2MpIHsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CiB9CiAKLVRZ
UEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jKSB7
Ci0jaWYgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9N
QVBfQ1hYMTcpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbml0aWFsaXpl
ckxpc3RCdWNrZXRBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvY1Rlc3Qoc3Rk
Ojp0cnVlX3R5cGUpIHsKICAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKICAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5
cGU7CiAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CkBAIC0yODAsMTEgKzM1Mywx
NyBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRB
bGxvYykgewogICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKICAgRVhQRUNU
X1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1
ZXMpKTsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Ci0jZW5kaWYKIH0KIAot
VFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFs
bG9jKSB7Ci0jaWYgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JE
RVJFRF9NQVBfQ1hYMTcpCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXpl
ckxpc3RCdWNrZXRBbGxvYykgeworICBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvY1Rlc3Q8VHlw
ZVBhcmFtPihleHBlY3RfY3h4MTRfYXBpczxUeXBlUGFyYW0+KCkpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2NU
ZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4K
K3ZvaWQgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkg
ewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+Owog
ICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CiAgIHVzaW5nIEEgPSB0eXBl
bmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOwpAQCAtMjk3LDcgKzM3NiwxMCBAQCBUWVBF
RF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2Mp
IHsKICAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CiAgIEVYUEVDVF9USEFU
KGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7
CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwotI2VuZGlmCit9CisKK1RZUEVE
X1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvYykg
eworICBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0
X2N4eDE0X2FwaXM8VHlwZVBhcmFtPigpKTsKIH0KIAogVFlQRURfVEVTVF9QKENvbnN0cnVjdG9y
VGVzdCwgQXNzaWdubWVudCkgewpAQCAtMzkwLDE1ICs0NzIsMTYgQEAgVFlQRURfVEVTVF9QKENv
bnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudE9uU2VsZikgewogCiBSRUdJU1RFUl9UWVBFRF9URVNU
X0NBU0VfUCgKICAgICBDb25zdHJ1Y3RvclRlc3QsIE5vQXJncywgQnVja2V0Q291bnQsIEJ1Y2tl
dENvdW50SGFzaCwgQnVja2V0Q291bnRIYXNoRXF1YWwsCi0gICAgQnVja2V0Q291bnRIYXNoRXF1
YWxBbGxvYywgQnVja2V0Q291bnRBbGxvYywgQnVja2V0Q291bnRIYXNoQWxsb2MsCi0gICAgQnVj
a2V0QWxsb2MsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoRXF1YWxBbGxvYywgSW5wdXRJdGVyYXRv
ckJ1Y2tldEFsbG9jLAorICAgIEJ1Y2tldENvdW50SGFzaEVxdWFsQWxsb2MsIEJ1Y2tldENvdW50
QWxsb2MsIEJ1Y2tldENvdW50SGFzaEFsbG9jLCBBbGxvYywKKyAgICBJbnB1dEl0ZXJhdG9yQnVj
a2V0SGFzaEVxdWFsQWxsb2MsIElucHV0SXRlcmF0b3JCdWNrZXRBbGxvYywKICAgICBJbnB1dEl0
ZXJhdG9yQnVja2V0SGFzaEFsbG9jLCBDb3B5Q29uc3RydWN0b3IsIENvcHlDb25zdHJ1Y3RvckFs
bG9jLAogICAgIE1vdmVDb25zdHJ1Y3RvciwgTW92ZUNvbnN0cnVjdG9yQWxsb2MsIEluaXRpYWxp
emVyTGlzdEJ1Y2tldEhhc2hFcXVhbEFsbG9jLAogICAgIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFs
bG9jLCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2MsIEFzc2lnbm1lbnQsCi0gICAgTW92
ZUFzc2lnbm1lbnQsIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0LAotICAgIEFzc2lnbm1l
bnRPdmVyd3JpdGVzRXhpc3RpbmcsIE1vdmVBc3NpZ25tZW50T3ZlcndyaXRlc0V4aXN0aW5nLAor
ICAgIE1vdmVBc3NpZ25tZW50LCBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdCwgQXNzaWdu
bWVudE92ZXJ3cml0ZXNFeGlzdGluZywKKyAgICBNb3ZlQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlz
dGluZywKICAgICBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdE92ZXJ3cml0ZXNFeGlzdGlu
ZywgQXNzaWdubWVudE9uU2VsZik7CiAKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJu
YWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5U
RVJOQUxfVU5PUkRFUkVEX01BUF9DT05TVFJVQ1RPUl9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QuaAppbmRleCAxZjFi
NmI0ODliMzAxZWI5ZmFkZDFiZjg0OTE5Y2FkNjM3YzlhYjhiLi5lYmQzNjEyYmRmMzcxZjNmZThi
NjFmZWE2ZmY0ODA5NzI4NDlmZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvdW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKQEAgLTI2LDcgKzI2LDcgQEAgbmFtZXNwYWNlIGNvbnRhaW5lcl9p
bnRlcm5hbCB7CiB0ZW1wbGF0ZSA8Y2xhc3MgVW5vcmRNYXA+CiBjbGFzcyBMb29rdXBUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKIAotVFlQRURfVEVTVF9DQVNFX1AoTG9va3VwVGVz
dCk7CitUWVBFRF9URVNUX1NVSVRFX1AoTG9va3VwVGVzdCk7CiAKIFRZUEVEX1RFU1RfUChMb29r
dXBUZXN0LCBBdCkgewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxU
eXBlUGFyYW0+OwpAQCAtMTExLDQgKzExMSw1IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9Q
KExvb2t1cFRlc3QsIEF0LCBPcGVyYXRvckJyYWNrZXQsIENvdW50LCBGaW5kLAogCiB9ICAvLyBu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCiAjZW5k
aWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9NQVBfTE9PS1VQX1RFU1Rf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21l
bWJlcnNfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbWVt
YmVyc190ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJmMzFhYjQwOTUxNmJiNjMzM2Q1ZTc2NzRhYjU1YTEz
YTMyNGNjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9y
ZGVyZWRfbWFwX21lbWJlcnNfdGVzdC5oCkBAIC0wLDAgKzEsODUgQEAKKy8vIENvcHlyaWdodCAy
MDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVS
TkFMX1VOT1JERVJFRF9NQVBfTUVNQkVSU19URVNUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVS
X0lOVEVSTkFMX1VOT1JERVJFRF9NQVBfTUVNQkVSU19URVNUX0hfCisKKyNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4KKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisKK25hbWVzcGFjZSBhYnNs
IHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MgVW5v
cmRNYXA+CitjbGFzcyBNZW1iZXJzVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisK
K1RZUEVEX1RFU1RfU1VJVEVfUChNZW1iZXJzVGVzdCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgordm9pZCBVc2VUeXBlKCkge30KKworVFlQRURfVEVTVF9QKE1lbWJlcnNUZXN0LCBUeXBlZGVm
cykgeworICBFWFBFQ1RfVFJVRSgoc3RkOjppc19zYW1lPHN0ZDo6cGFpcjxjb25zdCB0eXBlbmFt
ZSBUeXBlUGFyYW06OmtleV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlbmFtZSBUeXBlUGFyYW06Om1hcHBlZF90eXBlPiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGU+KCkpKTsKKyAgRVhQRUNU
X1RSVUUoKGFic2w6OmNvbmp1bmN0aW9uPAorICAgICAgICAgICAgICAgYWJzbDo6bmVnYXRpb248
c3RkOjppc19zaWduZWQ8dHlwZW5hbWUgVHlwZVBhcmFtOjpzaXplX3R5cGU+PiwKKyAgICAgICAg
ICAgICAgIHN0ZDo6aXNfaW50ZWdyYWw8dHlwZW5hbWUgVHlwZVBhcmFtOjpzaXplX3R5cGU+Pigp
KSk7CisgIEVYUEVDVF9UUlVFKChhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAgICAgICAgIHN0
ZDo6aXNfc2lnbmVkPHR5cGVuYW1lIFR5cGVQYXJhbTo6ZGlmZmVyZW5jZV90eXBlPiwKKyAgICAg
ICAgICAgICAgIHN0ZDo6aXNfaW50ZWdyYWw8dHlwZW5hbWUgVHlwZVBhcmFtOjpkaWZmZXJlbmNl
X3R5cGU+PigpKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX2NvbnZlcnRpYmxlPAorICAgICAg
ICAgICAgICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6
aGFzaGVyJj4oKSgKKyAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgdHlwZW5h
bWUgVHlwZVBhcmFtOjprZXlfdHlwZSY+KCkpKSwKKyAgICAgICAgICAgICAgIHNpemVfdD4oKSkp
OworICBFWFBFQ1RfVFJVRSgoc3RkOjppc19jb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgIGRl
Y2x0eXBlKHN0ZDo6ZGVjbHZhbDxjb25zdCB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbCY+
KCkoCisgICAgICAgICAgICAgICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IHR5cGVuYW1lIFR5cGVQ
YXJhbTo6a2V5X3R5cGUmPigpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25z
dCB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV90eXBlJj4oKSkpLAorICAgICAgICAgICAgICAgYm9v
bD4oKSkpOworICBFWFBFQ1RfVFJVRSgoc3RkOjppc19zYW1lPHR5cGVuYW1lIFR5cGVQYXJhbTo6
YWxsb2NhdG9yX3R5cGU6OnZhbHVlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZW5hbWUgVHlwZVBhcmFtOjp2YWx1ZV90eXBlPigpKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6
OmlzX3NhbWU8dHlwZW5hbWUgVHlwZVBhcmFtOjp2YWx1ZV90eXBlJiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OnJlZmVyZW5jZT4oKSkpOworICBFWFBF
Q1RfVFJVRSgoc3RkOjppc19zYW1lPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6dmFsdWVfdHlw
ZSYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjpjb25z
dF9yZWZlcmVuY2U+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBz
dGQ6OmFsbG9jYXRvcl90cmFpdHM8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU+Ojpwb2ludGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVQYXJhbTo6cG9pbnRlcj4oKSkpOworICBFWFBF
Q1RfVFJVRSgKKyAgICAgIChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjphbGxvY2F0b3JfdHJh
aXRzPAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0
b3JfdHlwZT46OmNvbnN0X3BvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5
cGVQYXJhbTo6Y29uc3RfcG9pbnRlcj4oKSkpOworfQorCitUWVBFRF9URVNUX1AoTWVtYmVyc1Rl
c3QsIFNpbXBsZUZ1bmN0aW9ucykgeworICBFWFBFQ1RfR1QoVHlwZVBhcmFtKCkubWF4X3NpemUo
KSwgMCk7Cit9CisKK1RZUEVEX1RFU1RfUChNZW1iZXJzVGVzdCwgQmVnaW5FbmQpIHsKKyAgVHlw
ZVBhcmFtIHQgPSB7dHlwZW5hbWUgVHlwZVBhcmFtOjp2YWx1ZV90eXBle319OworICBFWFBFQ1Rf
RVEodC5iZWdpbigpLCB0LmNiZWdpbigpKTsKKyAgRVhQRUNUX0VRKHQuZW5kKCksIHQuY2VuZCgp
KTsKKyAgRVhQRUNUX05FKHQuYmVnaW4oKSwgdC5lbmQoKSk7CisgIEVYUEVDVF9ORSh0LmNiZWdp
bigpLCB0LmNlbmQoKSk7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfU1VJVEVfUChNZW1iZXJz
VGVzdCwgVHlwZWRlZnMsIFNpbXBsZUZ1bmN0aW9ucywgQmVnaW5FbmQpOworCit9ICAvLyBuYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYg
IC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9NQVBfTUVNQkVSU19URVNUX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2Rp
ZmllcnNfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9k
aWZpZXJzX3Rlc3QuaAppbmRleCBiNmM2MzNhZTI3MzU3YzE0NWU2ZTFmMjA2YmEyZDJjYzI0Yzg4
NTRhLi41MmExMDkyZTZiMjIwOGU0YWRhMmNhNDBlNWY4MDA2NmRhNGJkYjc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190
ZXN0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI2LDcg
KzI2LDcgQEAgbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VW5vcmRNYXA+CiBjbGFzcyBNb2RpZmllcnNUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
fTsKIAotVFlQRURfVEVTVF9DQVNFX1AoTW9kaWZpZXJzVGVzdCk7CitUWVBFRF9URVNUX1NVSVRF
X1AoTW9kaWZpZXJzVGVzdCk7CiAKIFRZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBDbGVhcikg
ewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwpA
QCAtMjY5LDQgKzI2OSw1IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE1vZGlmaWVyc1Rl
c3QsIENsZWFyLCBJbnNlcnQsIEluc2VydEhpbnQsCiAKIH0gIC8vIG5hbWVzcGFjZSBjb250YWlu
ZXJfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9DT05U
QUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9NT0RJRklFUlNfVEVTVF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX3Rlc3QuY2MKaW5kZXggNDBlNzk5Y2Rh
ODljM2M5MDU1M2IzOGRiN2FiMzJhMmMxNGVkMDI4MC4uNzI1NjdlYWMzM2RjMmQ2ZGM1MDc3NTE5
NWIyYzMxNWVlODlhNDA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vu
b3JkZXJlZF9tYXBfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRl
cmVkX21hcF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91
bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tZW1iZXJzX3Rlc3QuaCIKICNpbmNsdWRl
ICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0Lmgi
CiAKIG5hbWVzcGFjZSBhYnNsIHsKQEAgLTI5LDkgKzMwLDEwIEBAIHVzaW5nIE1hcFR5cGVzID0g
Ojp0ZXN0aW5nOjpUeXBlczwKICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVmdWxUZXN0aW5n
RXF1YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jPHN0ZDo6cGFpcjxjb25zdCBzdGQ6
OnN0cmluZywgc3RkOjpzdHJpbmc+Pj4+OwogCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChVbm9yZGVyZWRNYXAsIENvbnN0cnVjdG9yVGVzdCwgTWFwVHlwZXMpOwotSU5TVEFOVElBVEVf
VFlQRURfVEVTVF9DQVNFX1AoVW5vcmRlcmVkTWFwLCBMb29rdXBUZXN0LCBNYXBUeXBlcyk7Ci1J
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbm9yZGVyZWRNYXAsIE1vZGlmaWVyc1Rlc3Qs
IE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChVbm9yZGVyZWRNYXAs
IENvbnN0cnVjdG9yVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlU
RV9QKFVub3JkZXJlZE1hcCwgTG9va3VwVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9TVUlURV9QKFVub3JkZXJlZE1hcCwgTWVtYmVyc1Rlc3QsIE1hcFR5cGVzKTsKK0lO
U1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChVbm9yZGVyZWRNYXAsIE1vZGlmaWVyc1Rlc3Qs
IE1hcFR5cGVzKTsKIAogfSAgLy8gbmFtZXNwYWNlCiB9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVk
X3NldF9jb25zdHJ1Y3Rvcl90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRl
cmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0LmgKaW5kZXggY2I1OTM3MDQ2ODVjNDdmYWJhMTMwM2Uy
YzUzOTdiYzE1NTI0NGUyMi4uZjQ4NDQ2ODM5M2U0Y2U4ZDNmMDMwYWVmODljYzJmNzhmYmM5MzJk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfY29u
c3RydWN0b3JfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRf
c2V0X2NvbnN0cnVjdG9yX3Rlc3QuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtMTYsMTIgKzE2LDE0IEBACiAjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVS
TkFMX1VOT1JERVJFRF9TRVRfQ09OU1RSVUNUT1JfVEVTVF9IXwogCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPHVub3JkZXJlZF9zZXQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5j
bHVkZSAiZ21vY2svZ21vY2suaCIKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUg
ImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKICNpbmNs
dWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmgiCisjaW5j
bHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVz
cGFjZSBjb250YWluZXJfaW50ZXJuYWwgewpAQCAtMjksNyArMzEsNyBAQCBuYW1lc3BhY2UgY29u
dGFpbmVyX2ludGVybmFsIHsKIHRlbXBsYXRlIDxjbGFzcyBVbm9yZE1hcD4KIGNsYXNzIENvbnN0
cnVjdG9yVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CiAKLVRZUEVEX1RFU1RfQ0FT
RV9QKENvbnN0cnVjdG9yVGVzdCk7CitUWVBFRF9URVNUX1NVSVRFX1AoQ29uc3RydWN0b3JUZXN0
KTsKIAogVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTm9BcmdzKSB7CiAgIFR5cGVQYXJh
bSBtOwpAQCAtOTEsOCArOTMsMjggQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVj
a2V0Q291bnRIYXNoRXF1YWxBbGxvYykgewogICBFWFBFQ1RfR0UoY20uYnVja2V0X2NvdW50KCks
IDEyMyk7CiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50QWxs
b2MpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX3N0ZF91bm9yZGVyZWRfc2V0
IDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVD4KK3N0cnVj
dCBpc19zdGRfdW5vcmRlcmVkX3NldDxzdGQ6OnVub3JkZXJlZF9zZXQ8VC4uLj4+IDogc3RkOjp0
cnVlX3R5cGUge307CisKICNpZiBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmlu
ZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykKK3VzaW5nIGhhc19jeHgxNF9zdGRfYXBpcyA9IHN0ZDo6
dHJ1ZV90eXBlOworI2Vsc2UKK3VzaW5nIGhhc19jeHgxNF9zdGRfYXBpcyA9IHN0ZDo6ZmFsc2Vf
dHlwZTsKKyNlbmRpZgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIGV4cGVjdF9jeHgx
NF9hcGlzID0KKyAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpuZWdhdGlvbjxpc19zdGRfdW5v
cmRlcmVkX3NldDxUPj4sCisgICAgICAgICAgICAgICAgICAgICAgaGFzX2N4eDE0X3N0ZF9hcGlz
PjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQnVja2V0Q291bnRBbGxv
Y1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFt
Pgordm9pZCBCdWNrZXRDb3VudEFsbG9jVGVzdChzdGQ6OnRydWVfdHlwZSkgewogICB1c2luZyBB
ID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKICAgQSBhbGxvYygwKTsKICAg
VHlwZVBhcmFtIG0oMTIzLCBhbGxvYyk7CkBAIC0xMDAsMTEgKzEyMiwxNyBAQCBUWVBFRF9URVNU
X1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEFsbG9jKSB7CiAgIEVYUEVDVF9UUlVFKG0u
ZW1wdHkoKSk7CiAgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxl
bWVudHNBcmUoKSk7CiAgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwotI2VuZGlm
CiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEFsbG9j
KSB7Ci0jaWYgZGVmaW5lZChVTk9SREVSRURfU0VUX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJF
RF9TRVRfQ1hYMTcpCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEFs
bG9jKSB7CisgIEJ1Y2tldENvdW50QWxsb2NUZXN0PFR5cGVQYXJhbT4oZXhwZWN0X2N4eDE0X2Fw
aXM8VHlwZVBhcmFtPigpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3Zv
aWQgQnVja2V0Q291bnRIYXNoQWxsb2NUZXN0KHN0ZDo6ZmFsc2VfdHlwZSkge30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgQnVja2V0Q291bnRIYXNoQWxsb2NUZXN0KHN0
ZDo6dHJ1ZV90eXBlKSB7CiAgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsK
ICAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CiAgIEggaGFz
aGVyOwpAQCAtMTE1LDE4ICsxNDMsMzggQEAgVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwg
QnVja2V0Q291bnRIYXNoQWxsb2MpIHsKICAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKICAgRVhQ
RUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKICAg
RVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Ci0jZW5kaWYKIH0KIAotVFlQRURfVEVT
VF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0QWxsb2MpIHsKK1RZUEVEX1RFU1RfUChDb25zdHJ1
Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEFsbG9jKSB7CisgIEJ1Y2tldENvdW50SGFzaEFsbG9j
VGVzdDxUeXBlUGFyYW0+KGV4cGVjdF9jeHgxNF9hcGlzPFR5cGVQYXJhbT4oKSk7Cit9CisKICNp
ZiBBQlNMX1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUwordXNpbmcgaGFzX2FsbG9jX3N0
ZF9jb25zdHJ1Y3RvcnMgPSBzdGQ6OnRydWVfdHlwZTsKKyNlbHNlCit1c2luZyBoYXNfYWxsb2Nf
c3RkX2NvbnN0cnVjdG9ycyA9IHN0ZDo6ZmFsc2VfdHlwZTsKKyNlbmRpZgorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3VzaW5nIGV4cGVjdF9hbGxvY19jb25zdHJ1Y3RvcnMgPQorICAgIGFic2w6
OmRpc2p1bmN0aW9uPGFic2w6Om5lZ2F0aW9uPGlzX3N0ZF91bm9yZGVyZWRfc2V0PFQ+PiwKKyAg
ICAgICAgICAgICAgICAgICAgICBoYXNfYWxsb2Nfc3RkX2NvbnN0cnVjdG9ycz47CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIEFsbG9jVGVzdChzdGQ6OmZhbHNlX3R5cGUp
IHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIEFsbG9jVGVzdChzdGQ6
OnRydWVfdHlwZSkgewogICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3Jf
dHlwZTsKICAgQSBhbGxvYygwKTsKICAgVHlwZVBhcmFtIG0oYWxsb2MpOwogICBFWFBFQ1RfRVEo
bS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKICAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKICAg
RVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsK
LSNlbmRpZgorfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBBbGxvYykgeworICBB
bGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfYWxsb2NfY29uc3RydWN0b3JzPFR5cGVQYXJhbT4o
KSk7CiB9CiAKIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNr
ZXRIYXNoRXF1YWxBbGxvYykgewpAQCAtMTQ4LDggKzE5NiwxMSBAQCBUWVBFRF9URVNUX1AoQ29u
c3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEVxdWFsQWxsb2MpIHsKICAgRVhQ
RUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CiB9CiAKLVRZUEVEX1RFU1RfUChDb25zdHJ1
Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNrZXRBbGxvYykgewotI2lmIGRlZmluZWQoVU5PUkRF
UkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfU0VUX0NYWDE3KQordGVtcGxhdGUg
PHR5cGVuYW1lIFR5cGVQYXJhbT4KK3ZvaWQgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jVGVzdChz
dGQ6OmZhbHNlX3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lk
IElucHV0SXRlcmF0b3JCdWNrZXRBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKICAgdXNpbmcgQSA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CiAgIEEgYWxsb2MoMCk7CkBAIC0x
NjAsMTEgKzIxMSwxNyBAQCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJh
dG9yQnVja2V0QWxsb2MpIHsKICAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7
CiAgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVB
cnJheSh2YWx1ZXMpKTsKICAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Ci0jZW5k
aWYKIH0KIAotVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tl
dEhhc2hBbGxvYykgewotI2lmIGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5l
ZChVTk9SREVSRURfU0VUX0NYWDE3KQorVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5w
dXRJdGVyYXRvckJ1Y2tldEFsbG9jKSB7CisgIElucHV0SXRlcmF0b3JCdWNrZXRBbGxvY1Rlc3Q8
VHlwZVBhcmFtPihleHBlY3RfY3h4MTRfYXBpczxUeXBlUGFyYW0+KCkpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9j
VGVzdChzdGQ6OmZhbHNlX3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+
Cit2b2lkIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxsb2NUZXN0KHN0ZDo6dHJ1ZV90eXBlKSB7
CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CiAg
IHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKICAgdXNpbmcgQSA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CkBAIC0xNzgsNyArMjM1LDEwIEBAIFRZUEVE
X1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxsb2MpIHsK
ICAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CiAgIEVYUEVDVF9USEFUKGtl
eXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKICAg
RVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Ci0jZW5kaWYKK30KKworVFlQRURfVEVT
VF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvYykgeworICBJ
bnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jVGVzdDxUeXBlUGFyYW0+KGV4cGVjdF9jeHgxNF9h
cGlzPFR5cGVQYXJhbT4oKSk7CiB9CiAKIFRZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIENv
cHlDb25zdHJ1Y3RvcikgewpAQCAtMTk2LDEwICsyNTYsMTQgQEAgVFlQRURfVEVTVF9QKENvbnN0
cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7CiAgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBu
LmtleV9lcSgpKTsKICAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBuLmdldF9hbGxvY2F0
b3IoKSk7CiAgIEVYUEVDVF9FUShtLCBuKTsKKyAgRVhQRUNUX05FKFR5cGVQYXJhbSgwLCBoYXNo
ZXIsIGVxdWFsLCBhbGxvYyksIG4pOwogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0
LCBDb3B5Q29uc3RydWN0b3JBbGxvYykgewotI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBPUlRTX0FM
TE9DX0NUT1JTCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBDb3B5Q29uc3Ry
dWN0b3JBbGxvY1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHlwZVBhcmFtPgordm9pZCBDb3B5Q29uc3RydWN0b3JBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUp
IHsKICAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsK
ICAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOwogICB1c2luZyBFID0gdHlw
ZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CkBAIC0yMTQsNyArMjc4LDEwIEBAIFRZUEVEX1RF
U1RfUChDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvckFsbG9jKSB7CiAgIEVYUEVDVF9F
UShtLmtleV9lcSgpLCBuLmtleV9lcSgpKTsKICAgRVhQRUNUX05FKG0uZ2V0X2FsbG9jYXRvcigp
LCBuLmdldF9hbGxvY2F0b3IoKSk7CiAgIEVYUEVDVF9FUShtLCBuKTsKLSNlbmRpZgorfQorCitU
WVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3JBbGxvYykgeworICBD
b3B5Q29uc3RydWN0b3JBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfYWxsb2NfY29uc3RydWN0
b3JzPFR5cGVQYXJhbT4oKSk7CiB9CiAKIC8vIFRPRE8oYWxraXMpOiBUZXN0IG5vbi1wcm9wYWdh
dGluZyBhbGxvY2F0b3JzIG9uIGNvcHkgY29uc3RydWN0b3JzLgpAQCAtMjM3LDggKzMwNCwxMSBA
QCBUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3IpIHsKICAgRVhQ
RUNUX0VRKG0sIG4pOwogfQogCi1UWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQ29u
c3RydWN0b3JBbGxvYykgewotI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JT
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFtPgordm9pZCBNb3ZlQ29uc3RydWN0b3JBbGxv
Y1Rlc3Qoc3RkOjpmYWxzZV90eXBlKSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZVBhcmFt
Pgordm9pZCBNb3ZlQ29uc3RydWN0b3JBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNp
bmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKICAgdXNpbmcg
SCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOwogICB1c2luZyBFID0gdHlwZW5hbWUgVHlw
ZVBhcmFtOjprZXlfZXF1YWw7CkBAIC0yNTQsNyArMzI0LDEwIEBAIFRZUEVEX1RFU1RfUChDb25z
dHJ1Y3RvclRlc3QsIE1vdmVDb25zdHJ1Y3RvckFsbG9jKSB7CiAgIEVYUEVDVF9FUShtLmtleV9l
cSgpLCBuLmtleV9lcSgpKTsKICAgRVhQRUNUX05FKG0uZ2V0X2FsbG9jYXRvcigpLCBuLmdldF9h
bGxvY2F0b3IoKSk7CiAgIEVYUEVDVF9FUShtLCBuKTsKLSNlbmRpZgorfQorCitUWVBFRF9URVNU
X1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3JBbGxvYykgeworICBNb3ZlQ29uc3Ry
dWN0b3JBbGxvY1Rlc3Q8VHlwZVBhcmFtPihleHBlY3RfYWxsb2NfY29uc3RydWN0b3JzPFR5cGVQ
YXJhbT4oKSk7CiB9CiAKIC8vIFRPRE8oYWxraXMpOiBUZXN0IG5vbi1wcm9wYWdhdGluZyBhbGxv
Y2F0b3JzIG9uIG1vdmUgY29uc3RydWN0b3JzLgpAQCAtMjc3LDggKzM1MCwxMSBAQCBUWVBFRF9U
RVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoRXF1YWxBbGxv
YykgewogICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKIH0KIAotVFlQRURfVEVT
VF9QKENvbnN0cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MpIHsKLSNpZiBk
ZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgx
NykKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIEluaXRpYWxpemVyTGlzdEJ1
Y2tldEFsbG9jVGVzdChzdGQ6OmZhbHNlX3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
eXBlUGFyYW0+Cit2b2lkIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jVGVzdChzdGQ6OnRydWVf
dHlwZSkgewogICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFy
YW0+OwogICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKICAg
aGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKQEAgLTI4OCwxMSArMzY0LDE3IEBAIFRZ
UEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jKSB7
CiAgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOwogICBFWFBFQ1RfVEhBVChr
ZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CiAg
IEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwotI2VuZGlmCiB9CiAKLVRZUEVEX1RF
U1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvYykgewot
I2lmIGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfU0VU
X0NYWDE3KQorVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVj
a2V0QWxsb2MpIHsKKyAgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2NUZXN0PFR5cGVQYXJhbT4o
ZXhwZWN0X2N4eDE0X2FwaXM8VHlwZVBhcmFtPigpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFR5cGVQYXJhbT4KK3ZvaWQgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jVGVzdChzdGQ6
OmZhbHNlX3R5cGUpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlUGFyYW0+Cit2b2lkIElu
aXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvY1Rlc3Qoc3RkOjp0cnVlX3R5cGUpIHsKICAgdXNp
bmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKICAgdXNpbmcg
SCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOwogICB1c2luZyBBID0gdHlwZW5hbWUgVHlw
ZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKQEAgLTMwNSwxMCArMzg3LDEzIEBAIFRZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvYykgewogICBF
WFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKICAgRVhQRUNUX1RIQVQoa2V5cyht
KSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOwogICBFWFBF
Q1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKLSNlbmRpZgogfQogCi1UWVBFRF9URVNUX1Ao
Q29uc3RydWN0b3JUZXN0LCBBc3NpZ25tZW50KSB7CitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2MpIHsKKyAgSW5pdGlhbGl6ZXJMaXN0
QnVja2V0SGFzaEFsbG9jVGVzdDxUeXBlUGFyYW0+KGV4cGVjdF9jeHgxNF9hcGlzPFR5cGVQYXJh
bT4oKSk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIENvcHlBc3NpZ25tZW50
KSB7CiAgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47
CiAgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKICAgdXNpbmcgRSA9IHR5
cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOwpAQCAtMzk0LDE1ICs0NzksMTYgQEAgVFlQRURf
VEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudE9uU2VsZikgewogCiBSRUdJU1RFUl9U
WVBFRF9URVNUX0NBU0VfUCgKICAgICBDb25zdHJ1Y3RvclRlc3QsIE5vQXJncywgQnVja2V0Q291
bnQsIEJ1Y2tldENvdW50SGFzaCwgQnVja2V0Q291bnRIYXNoRXF1YWwsCi0gICAgQnVja2V0Q291
bnRIYXNoRXF1YWxBbGxvYywgQnVja2V0Q291bnRBbGxvYywgQnVja2V0Q291bnRIYXNoQWxsb2Ms
Ci0gICAgQnVja2V0QWxsb2MsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoRXF1YWxBbGxvYywgSW5w
dXRJdGVyYXRvckJ1Y2tldEFsbG9jLAorICAgIEJ1Y2tldENvdW50SGFzaEVxdWFsQWxsb2MsIEJ1
Y2tldENvdW50QWxsb2MsIEJ1Y2tldENvdW50SGFzaEFsbG9jLCBBbGxvYywKKyAgICBJbnB1dEl0
ZXJhdG9yQnVja2V0SGFzaEVxdWFsQWxsb2MsIElucHV0SXRlcmF0b3JCdWNrZXRBbGxvYywKICAg
ICBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jLCBDb3B5Q29uc3RydWN0b3IsIENvcHlDb25z
dHJ1Y3RvckFsbG9jLAogICAgIE1vdmVDb25zdHJ1Y3RvciwgTW92ZUNvbnN0cnVjdG9yQWxsb2Ms
IEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hFcXVhbEFsbG9jLAotICAgIEluaXRpYWxpemVyTGlz
dEJ1Y2tldEFsbG9jLCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2MsIEFzc2lnbm1lbnQs
Ci0gICAgTW92ZUFzc2lnbm1lbnQsIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0LAotICAg
IEFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3RpbmcsIE1vdmVBc3NpZ25tZW50T3ZlcndyaXRlc0V4
aXN0aW5nLAorICAgIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jLCBJbml0aWFsaXplckxpc3RC
dWNrZXRIYXNoQWxsb2MsIENvcHlBc3NpZ25tZW50LAorICAgIE1vdmVBc3NpZ25tZW50LCBBc3Np
Z25tZW50RnJvbUluaXRpYWxpemVyTGlzdCwgQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZywK
KyAgICBNb3ZlQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZywKICAgICBBc3NpZ25tZW50RnJv
bUluaXRpYWxpemVyTGlzdE92ZXJ3cml0ZXNFeGlzdGluZywgQXNzaWdubWVudE9uU2VsZik7CiAK
IH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNs
CisKICNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NFVF9DT05T
VFJVQ1RPUl9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5v
cmRlcmVkX3NldF9sb29rdXBfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3Jk
ZXJlZF9zZXRfbG9va3VwX3Rlc3QuaAppbmRleCBhY2E5YzZhNWRmN2I3MjVjMTc1OTkzZjQ3MDY5
ZGE0ZTkyMTcyOWQzLi4wNWIzMmI1ZDkwNmI5NjQyM2IwMjYyNjE1ZTlmOTA0YzY3MmE1YmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9sb29rdXBf
dGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1
cF90ZXN0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI2
LDcgKzI2LDcgQEAgbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CiB0ZW1wbGF0ZSA8Y2xh
c3MgVW5vcmRTZXQ+CiBjbGFzcyBMb29rdXBUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
fTsKIAotVFlQRURfVEVTVF9DQVNFX1AoTG9va3VwVGVzdCk7CitUWVBFRF9URVNUX1NVSVRFX1Ao
TG9va3VwVGVzdCk7CiAKIFRZUEVEX1RFU1RfUChMb29rdXBUZXN0LCBDb3VudCkgewogICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwpAQCAtODUsNCAr
ODUsNSBAQCBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChMb29rdXBUZXN0LCBDb3VudCwgRmlu
ZCwgRXF1YWxSYW5nZSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKIH0g
IC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxf
VU5PUkRFUkVEX1NFVF9MT09LVVBfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tZW1iZXJzX3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTZjOTQ1
YTExYmRmNTk4MjQxMTdmZWVmZjUyMzkxYWM3YmY4YWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbWVtYmVyc190ZXN0LmgKQEAgLTAs
MCArMSw4NCBAQAorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNp
Zm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NFVF9NRU1CRVJTX1RFU1Rf
SF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NFVF9NRU1CRVJT
X1RFU1RfSF8KKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90
cmFpdHMuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5h
bCB7CisKK3RlbXBsYXRlIDxjbGFzcyBVbm9yZFNldD4KK2NsYXNzIE1lbWJlcnNUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworVFlQRURfVEVTVF9TVUlURV9QKE1lbWJlcnNUZXN0
KTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVzZVR5cGUoKSB7fQorCitUWVBFRF9U
RVNUX1AoTWVtYmVyc1Rlc3QsIFR5cGVkZWZzKSB7CisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3Nh
bWU8dHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGU+KCkpKTsKKyAgRVhQRUNUX1RSVUUo
KGFic2w6OmNvbmp1bmN0aW9uPAorICAgICAgICAgICAgICAgYWJzbDo6bmVnYXRpb248c3RkOjpp
c19zaWduZWQ8dHlwZW5hbWUgVHlwZVBhcmFtOjpzaXplX3R5cGU+PiwKKyAgICAgICAgICAgICAg
IHN0ZDo6aXNfaW50ZWdyYWw8dHlwZW5hbWUgVHlwZVBhcmFtOjpzaXplX3R5cGU+PigpKSk7Cisg
IEVYUEVDVF9UUlVFKChhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAgICAgICAgIHN0ZDo6aXNf
c2lnbmVkPHR5cGVuYW1lIFR5cGVQYXJhbTo6ZGlmZmVyZW5jZV90eXBlPiwKKyAgICAgICAgICAg
ICAgIHN0ZDo6aXNfaW50ZWdyYWw8dHlwZW5hbWUgVHlwZVBhcmFtOjpkaWZmZXJlbmNlX3R5cGU+
PigpKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX2NvbnZlcnRpYmxlPAorICAgICAgICAgICAg
ICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVy
Jj4oKSgKKyAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgdHlwZW5hbWUgVHlw
ZVBhcmFtOjprZXlfdHlwZSY+KCkpKSwKKyAgICAgICAgICAgICAgIHNpemVfdD4oKSkpOworICBF
WFBFQ1RfVFJVRSgoc3RkOjppc19jb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgIGRlY2x0eXBl
KHN0ZDo6ZGVjbHZhbDxjb25zdCB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbCY+KCkoCisg
ICAgICAgICAgICAgICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6
a2V5X3R5cGUmPigpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCB0eXBl
bmFtZSBUeXBlUGFyYW06OmtleV90eXBlJj4oKSkpLAorICAgICAgICAgICAgICAgYm9vbD4oKSkp
OworICBFWFBFQ1RfVFJVRSgoc3RkOjppc19zYW1lPHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2Nh
dG9yX3R5cGU6OnZhbHVlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5h
bWUgVHlwZVBhcmFtOjp2YWx1ZV90eXBlPigpKSk7CisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3Nh
bWU8dHlwZW5hbWUgVHlwZVBhcmFtOjp2YWx1ZV90eXBlJiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlbmFtZSBUeXBlUGFyYW06OnJlZmVyZW5jZT4oKSkpOworICBFWFBFQ1RfVFJV
RSgoc3RkOjppc19zYW1lPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6dmFsdWVfdHlwZSYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjpjb25zdF9yZWZl
cmVuY2U+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmFs
bG9jYXRvcl90cmFpdHM8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1l
IFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU+Ojpwb2ludGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVuYW1lIFR5cGVQYXJhbTo6cG9pbnRlcj4oKSkpOworICBFWFBFQ1RfVFJV
RSgKKyAgICAgIChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjphbGxvY2F0b3JfdHJhaXRzPAor
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlw
ZT46OmNvbnN0X3BvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVQYXJh
bTo6Y29uc3RfcG9pbnRlcj4oKSkpOworfQorCitUWVBFRF9URVNUX1AoTWVtYmVyc1Rlc3QsIFNp
bXBsZUZ1bmN0aW9ucykgeworICBFWFBFQ1RfR1QoVHlwZVBhcmFtKCkubWF4X3NpemUoKSwgMCk7
Cit9CisKK1RZUEVEX1RFU1RfUChNZW1iZXJzVGVzdCwgQmVnaW5FbmQpIHsKKyAgVHlwZVBhcmFt
IHQgPSB7dHlwZW5hbWUgVHlwZVBhcmFtOjp2YWx1ZV90eXBle319OworICBFWFBFQ1RfRVEodC5i
ZWdpbigpLCB0LmNiZWdpbigpKTsKKyAgRVhQRUNUX0VRKHQuZW5kKCksIHQuY2VuZCgpKTsKKyAg
RVhQRUNUX05FKHQuYmVnaW4oKSwgdC5lbmQoKSk7CisgIEVYUEVDVF9ORSh0LmNiZWdpbigpLCB0
LmNlbmQoKSk7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfU1VJVEVfUChNZW1iZXJzVGVzdCwg
VHlwZWRlZnMsIFNpbXBsZUZ1bmN0aW9ucywgQmVnaW5FbmQpOworCit9ICAvLyBuYW1lc3BhY2Ug
Y29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFC
U0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9TRVRfTUVNQkVSU19URVNUX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNf
dGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJz
X3Rlc3QuaAppbmRleCA5YmVhY2YzMzE2OTczZGQ3YmNkY2I5MzgyYTEzNmMxOGQwYThjNzZiLi43
OWE4ZDQyMmJlMWVmNGZhNDM1ZjBiYTk5MjRhOTZlOTMxNzc1OTVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmgK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI2LDcgKzI2LDcg
QEAgbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CiB0ZW1wbGF0ZSA8Y2xhc3MgVW5vcmRT
ZXQ+CiBjbGFzcyBNb2RpZmllcnNUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKIAot
VFlQRURfVEVTVF9DQVNFX1AoTW9kaWZpZXJzVGVzdCk7CitUWVBFRF9URVNUX1NVSVRFX1AoTW9k
aWZpZXJzVGVzdCk7CiAKIFRZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBDbGVhcikgewogICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OwpAQCAtMTg0
LDQgKzE4NCw1IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE1vZGlmaWVyc1Rlc3QsIENs
ZWFyLCBJbnNlcnQsIEluc2VydEhpbnQsCiAKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50
ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJf
SU5URVJOQUxfVU5PUkRFUkVEX1NFVF9NT0RJRklFUlNfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X3Rlc3QuY2MKaW5kZXggMTI4MWNlNTNkNWUyZTQw
NzI4ZmI2Y2E4ZGQ5MGMwYzk0OThhZWZhMy4uNjQ3OGZhYzE3YzdkMWMyNWRjYzgzMTE4ZGRjZGU1
Y2Q0NGVkMGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJl
ZF9zZXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3Nl
dF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0x
NiwyMSArMTYsMjMgQEAKIAogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3Jk
ZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
dGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21lbWJlcnNfdGVzdC5oIgogI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaCIKIAog
bmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CiBuYW1lc3Bh
Y2UgewogCi11c2luZyBTZXRUeXBlcyA9Ci0gICAgOjp0ZXN0aW5nOjpUeXBlczxzdGQ6OnVub3Jk
ZXJlZF9zZXQ8aW50LCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzxpbnQ+PiwKLSAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5vcmRlcmVkX3NldDxzdGQ6OnN0cmluZywgU3RhdGVm
dWxUZXN0aW5nSGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
dGF0ZWZ1bFRlc3RpbmdFcXVhbCwgQWxsb2M8c3RkOjpzdHJpbmc+Pj47Cit1c2luZyBTZXRUeXBl
cyA9IDo6dGVzdGluZzo6VHlwZXM8CisgICAgc3RkOjp1bm9yZGVyZWRfc2V0PGludCwgU3RhdGVm
dWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsCisgICAgICAgICAgICAgICAgICAg
ICAgIEFsbG9jPGludD4+LAorICAgIHN0ZDo6dW5vcmRlcmVkX3NldDxzdGQ6OnN0cmluZywgU3Rh
dGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsCisgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG9jPHN0ZDo6c3RyaW5nPj4+OwogCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NB
U0VfUChVbm9yZGVyZWRTZXQsIENvbnN0cnVjdG9yVGVzdCwgU2V0VHlwZXMpOwotSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9DQVNFX1AoVW5vcmRlcmVkU2V0LCBMb29rdXBUZXN0LCBTZXRUeXBlcyk7
Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbm9yZGVyZWRTZXQsIE1vZGlmaWVyc1Rl
c3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChVbm9yZGVyZWRT
ZXQsIENvbnN0cnVjdG9yVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9T
VUlURV9QKFVub3JkZXJlZFNldCwgTG9va3VwVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVf
VFlQRURfVEVTVF9TVUlURV9QKFVub3JkZXJlZFNldCwgTWVtYmVyc1Rlc3QsIFNldFR5cGVzKTsK
K0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfU1VJVEVfUChVbm9yZGVyZWRTZXQsIE1vZGlmaWVyc1Rl
c3QsIFNldFR5cGVzKTsKIAogfSAgLy8gbmFtZXNwYWNlCiB9ICAvLyBuYW1lc3BhY2UgY29udGFp
bmVyX2ludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX21hcC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9tYXAuaAppbmRleCA2MzY5ZWMzYWQ2NDMxYTQ3
ZTY0MzE2NTg4ZTQ2NzE0MzE3ZTYxZDlhLi5hODQxZjVhYmQwMDAyM2ViMTE0ZWQ4NjQ2OGZiYjM0
YmRiN2QwZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX21hcC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFwLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx0eXBlX3Ry
YWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9hbGdvcml0aG0vY29u
dGFpbmVyLmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21l
bW9yeS5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25f
ZGVmYXVsdHMuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKICNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5LmgiCkBAIC03MSw3ICs3Miw3IEBAIGNsYXNz
IE5vZGVIYXNoTWFwUG9saWN5OwogLy8gQnkgZGVmYXVsdCwgYG5vZGVfaGFzaF9tYXBgIHVzZXMg
dGhlIGBhYnNsOjpIYXNoYCBoYXNoaW5nIGZyYW1ld29yay4KIC8vIEFsbCBmdW5kYW1lbnRhbCBh
bmQgQWJzZWlsIHR5cGVzIHRoYXQgc3VwcG9ydCB0aGUgYGFic2w6Okhhc2hgIGZyYW1ld29yayBo
YXZlCiAvLyBhIGNvbXBhdGlibGUgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIGNvbXBhcmluZyBpbnNl
cnRpb25zIGludG8gYG5vZGVfaGFzaF9tYXBgLgotLy8gSWYgeW91ciB0eXBlIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkIGJ5IHRoZSBgYXNibDo6SGFzaGAgZnJhbWV3b3JrLCBzZWUKKy8vIElmIHlvdXIg
dHlwZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBieSB0aGUgYGFic2w6Okhhc2hgIGZyYW1ld29yaywg
c2VlCiAvLyBhYnNsL2hhc2gvaGFzaC5oIGZvciBpbmZvcm1hdGlvbiBvbiBleHRlbmRpbmcgQWJz
ZWlsIGhhc2hpbmcgdG8gdXNlci1kZWZpbmVkCiAvLyB0eXBlcy4KIC8vCkBAIC05MSw3ICs5Miw3
IEBAIGNsYXNzIE5vZGVIYXNoTWFwUG9saWN5OwogLy8gIHN0ZDo6c3RyaW5nIHNlYXJjaF9rZXkg
PSAiYiI7CiAvLyAgYXV0byByZXN1bHQgPSBkdWNrcy5maW5kKHNlYXJjaF9rZXkpOwogLy8gIGlm
IChyZXN1bHQgIT0gZHVja3MuZW5kKCkpIHsKLS8vICAgIHN0ZDo6Y291dCA8PCAiUmVzdWx0OiAi
IDw8IHNlYXJjaF9rZXktPnNlY29uZCA8PCBzdGQ6OmVuZGw7CisvLyAgICBzdGQ6OmNvdXQgPDwg
IlJlc3VsdDogIiA8PCByZXN1bHQtPnNlY29uZCA8PCBzdGQ6OmVuZGw7CiAvLyAgfQogdGVtcGxh
dGUgPGNsYXNzIEtleSwgY2xhc3MgVmFsdWUsCiAgICAgICAgICAgY2xhc3MgSGFzaCA9IGFic2w6
OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0X2hhc2g8S2V5PiwKQEAgLTEwNCw2ICsx
MDUsNDYgQEAgY2xhc3Mgbm9kZV9oYXNoX21hcAogICB1c2luZyBCYXNlID0gdHlwZW5hbWUgbm9k
ZV9oYXNoX21hcDo6cmF3X2hhc2hfbWFwOwogCiAgcHVibGljOgorICAvLyBDb25zdHJ1Y3RvcnMg
YW5kIEFzc2lnbm1lbnQgT3BlcmF0b3JzCisgIC8vCisgIC8vIEEgbm9kZV9oYXNoX21hcCBzdXBw
b3J0cyB0aGUgc2FtZSBvdmVybG9hZCBzZXQgYXMgYHN0ZDo6dW5vcmRlcmVkX21hcGAKKyAgLy8g
Zm9yIGNvbnN0cnVjdGlvbiBhbmQgYXNzaWdubWVudDoKKyAgLy8KKyAgLy8gKiAgRGVmYXVsdCBj
b25zdHJ1Y3RvcgorICAvLworICAvLyAgICAvLyBObyBhbGxvY2F0aW9uIGZvciB0aGUgdGFibGUn
cyBlbGVtZW50cyBpcyBtYWRlLgorICAvLyAgICBhYnNsOjpub2RlX2hhc2hfbWFwPGludCwgc3Rk
OjpzdHJpbmc+IG1hcDE7CisgIC8vCisgIC8vICogSW5pdGlhbGl6ZXIgTGlzdCBjb25zdHJ1Y3Rv
cgorICAvLworICAvLyAgIGFic2w6Om5vZGVfaGFzaF9tYXA8aW50LCBzdGQ6OnN0cmluZz4gbWFw
MiA9CisgIC8vICAgICAgIHt7MSwgImh1ZXkifSwgezIsICJkZXdleSJ9LCB7MywgImxvdWllIn0s
fTsKKyAgLy8KKyAgLy8gKiBDb3B5IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6bm9k
ZV9oYXNoX21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBtYXAzKG1hcDIpOworICAvLworICAvLyAqIENv
cHkgYXNzaWdubWVudCBvcGVyYXRvcgorICAvLworICAvLyAgLy8gSGFzaCBmdW5jdG9yIGFuZCBD
b21wYXJhdG9yIGFyZSBjb3BpZWQgYXMgd2VsbAorICAvLyAgYWJzbDo6bm9kZV9oYXNoX21hcDxp
bnQsIHN0ZDo6c3RyaW5nPiBtYXA0OworICAvLyAgbWFwNCA9IG1hcDM7CisgIC8vCisgIC8vICog
TW92ZSBjb25zdHJ1Y3RvcgorICAvLworICAvLyAgIC8vIE1vdmUgaXMgZ3VhcmFudGVlZCBlZmZp
Y2llbnQKKyAgLy8gICBhYnNsOjpub2RlX2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDUo
c3RkOjptb3ZlKG1hcDQpKTsKKyAgLy8KKyAgLy8gKiBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IK
KyAgLy8KKyAgLy8gICAvLyBNYXkgYmUgZWZmaWNpZW50IGlmIGFsbG9jYXRvcnMgYXJlIGNvbXBh
dGlibGUKKyAgLy8gICBhYnNsOjpub2RlX2hhc2hfbWFwPGludCwgc3RkOjpzdHJpbmc+IG1hcDY7
CisgIC8vICAgbWFwNiA9IHN0ZDo6bW92ZShtYXA1KTsKKyAgLy8KKyAgLy8gKiBSYW5nZSBjb25z
dHJ1Y3RvcgorICAvLworICAvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxpbnQsIHN0ZDo6c3Ry
aW5nPj4gdiA9IHt7MSwgImEifSwgezIsICJiIn19OworICAvLyAgIGFic2w6Om5vZGVfaGFzaF9t
YXA8aW50LCBzdGQ6OnN0cmluZz4gbWFwNyh2LmJlZ2luKCksIHYuZW5kKCkpOwogICBub2RlX2hh
c2hfbWFwKCkge30KICAgdXNpbmcgQmFzZTo6QmFzZTsKIApAQCAtNTI2LDUgKzU2NywxNiBAQCBj
bGFzcyBOb2RlSGFzaE1hcFBvbGljeQogICBzdGF0aWMgY29uc3QgVmFsdWUmIHZhbHVlKGNvbnN0
IHZhbHVlX3R5cGUqIGVsZW0pIHsgcmV0dXJuIGVsZW0tPnNlY29uZDsgfQogfTsKIH0gIC8vIG5h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKKworbmFtZXNwYWNlIGNvbnRhaW5lcl9hbGdvcml0
aG1faW50ZXJuYWwgeworCisvLyBTcGVjaWFsaXphdGlvbiBvZiB0cmFpdCBpbiBhYnNsL2FsZ29y
aXRobS9jb250YWluZXIuaAordGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgSGFz
aCwgY2xhc3MgS2V5RXF1YWwsIGNsYXNzIEFsbG9jYXRvcj4KK3N0cnVjdCBJc1Vub3JkZXJlZENv
bnRhaW5lcjwKKyAgICBhYnNsOjpub2RlX2hhc2hfbWFwPEtleSwgVCwgSGFzaCwgS2V5RXF1YWws
IEFsbG9jYXRvcj4+IDogc3RkOjp0cnVlX3R5cGUge307CisKK30gIC8vIG5hbWVzcGFjZSBjb250
YWluZXJfYWxnb3JpdGhtX2ludGVybmFsCisKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRp
ZiAgLy8gQUJTTF9DT05UQUlORVJfTk9ERV9IQVNIX01BUF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL25vZGVfaGFzaF9tYXBfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hh
c2hfbWFwX3Rlc3QuY2MKaW5kZXggYmQ3ODk2NDRjMjRlOGM4MTc0MTQ5M2U1NWJmMGI2MWUyZjM1
NjY2MC4uMGYyNzE0YTcyY2ViM2I4NWIzMTQ1M2Q0NDk1ZjFlNGNkN2I2YzYyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9tYXBfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvbm9kZV9oYXNoX21hcF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvdHJhY2tlZC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vu
b3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21lbWJlcnNfdGVzdC5oIgogI2luY2x1ZGUg
ImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCIK
IAogbmFtZXNwYWNlIGFic2wgewpAQCAtMzQsOSArMzUsMTAgQEAgdXNpbmcgTWFwVHlwZXMgPSA6
OnRlc3Rpbmc6OlR5cGVzPAogICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVmdWxUZXN0aW5n
RXF1YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvYzxzdGQ6OnBhaXI8Y29uc3Qgc3Rk
OjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4+PjsKIAotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1AoTm9kZUhhc2hNYXAsIENvbnN0cnVjdG9yVGVzdCwgTWFwVHlwZXMpOwotSU5TVEFOVElBVEVf
VFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hNYXAsIExvb2t1cFRlc3QsIE1hcFR5cGVzKTsKLUlO
U1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE5vZGVIYXNoTWFwLCBNb2RpZmllcnNUZXN0LCBN
YXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoTm9kZUhhc2hNYXAsIENv
bnN0cnVjdG9yVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9TVUlURV9Q
KE5vZGVIYXNoTWFwLCBMb29rdXBUZXN0LCBNYXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9U
RVNUX1NVSVRFX1AoTm9kZUhhc2hNYXAsIE1lbWJlcnNUZXN0LCBNYXBUeXBlcyk7CitJTlNUQU5U
SUFURV9UWVBFRF9URVNUX1NVSVRFX1AoTm9kZUhhc2hNYXAsIE1vZGlmaWVyc1Rlc3QsIE1hcFR5
cGVzKTsKIAogdXNpbmcgTSA9IGFic2w6Om5vZGVfaGFzaF9tYXA8c3RkOjpzdHJpbmcsIFRyYWNr
ZWQ8aW50Pj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX3NldC5oCmluZGV4IDkwZDRjZTBjMTYzMWQ3OGNm
ZWNmY2Q4ZmMyOWExYzQ4NGFlOWY2MzcuLjBjZDFmZTU3Zjk2NTQ0MGU5NGIzZmNjMDYzNWE4YWY2
MjY3MDRhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXQuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSA8dHlwZV90
cmFpdHM+CiAKKyNpbmNsdWRlICJhYnNsL2FsZ29yaXRobS9jb250YWluZXIuaCIKICNpbmNsdWRl
ICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiICAvLyBJ
V1lVIHByYWdtYTogZXhwb3J0CiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9k
ZV9oYXNoX3BvbGljeS5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19o
YXNoX3NldC5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydApAQCAtNjcsNyArNjgsNyBAQCBzdHJ1
Y3QgTm9kZUhhc2hTZXRQb2xpY3k7CiAvLyBCeSBkZWZhdWx0LCBgbm9kZV9oYXNoX3NldGAgdXNl
cyB0aGUgYGFic2w6Okhhc2hgIGhhc2hpbmcgZnJhbWV3b3JrLgogLy8gQWxsIGZ1bmRhbWVudGFs
IGFuZCBBYnNlaWwgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3Jr
IGhhdmUKIC8vIGEgY29tcGF0aWJsZSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgY29tcGFyaW5nIGlu
c2VydGlvbnMgaW50byBgbm9kZV9oYXNoX3NldGAuCi0vLyBJZiB5b3VyIHR5cGUgaXMgbm90IHll
dCBzdXBwb3J0ZWQgYnkgdGhlIGBhc2JsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQorLy8gSWYgeW91
ciB0eXBlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3Jr
LCBzZWUKIC8vIGFic2wvaGFzaC9oYXNoLmggZm9yIGluZm9ybWF0aW9uIG9uIGV4dGVuZGluZyBB
YnNlaWwgaGFzaGluZyB0byB1c2VyLWRlZmluZWQKIC8vIHR5cGVzLgogLy8KQEAgLTk2LDYgKzk3
LDQ2IEBAIGNsYXNzIG5vZGVfaGFzaF9zZXQKICAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIG5vZGVf
aGFzaF9zZXQ6OnJhd19oYXNoX3NldDsKIAogIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0b3JzIGFu
ZCBBc3NpZ25tZW50IE9wZXJhdG9ycworICAvLworICAvLyBBIG5vZGVfaGFzaF9zZXQgc3VwcG9y
dHMgdGhlIHNhbWUgb3ZlcmxvYWQgc2V0IGFzIGBzdGQ6OnVub3JkZXJlZF9tYXBgCisgIC8vIGZv
ciBjb25zdHJ1Y3Rpb24gYW5kIGFzc2lnbm1lbnQ6CisgIC8vCisgIC8vICogIERlZmF1bHQgY29u
c3RydWN0b3IKKyAgLy8KKyAgLy8gICAgLy8gTm8gYWxsb2NhdGlvbiBmb3IgdGhlIHRhYmxlJ3Mg
ZWxlbWVudHMgaXMgbWFkZS4KKyAgLy8gICAgYWJzbDo6bm9kZV9oYXNoX3NldDxzdGQ6OnN0cmlu
Zz4gc2V0MTsKKyAgLy8KKyAgLy8gKiBJbml0aWFsaXplciBMaXN0IGNvbnN0cnVjdG9yCisgIC8v
CisgIC8vICAgYWJzbDo6bm9kZV9oYXNoX3NldDxzdGQ6OnN0cmluZz4gc2V0MiA9CisgIC8vICAg
ICAgIHt7Imh1ZXkifSwgeyJkZXdleSJ9LCB7ImxvdWllIn0sfTsKKyAgLy8KKyAgLy8gKiBDb3B5
IGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAgYWJzbDo6bm9kZV9oYXNoX3NldDxzdGQ6OnN0cmlu
Zz4gc2V0MyhzZXQyKTsKKyAgLy8KKyAgLy8gKiBDb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAg
Ly8KKyAgLy8gIC8vIEhhc2ggZnVuY3RvciBhbmQgQ29tcGFyYXRvciBhcmUgY29waWVkIGFzIHdl
bGwKKyAgLy8gIGFic2w6Om5vZGVfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHNldDQ7CisgIC8vICBz
ZXQ0ID0gc2V0MzsKKyAgLy8KKyAgLy8gKiBNb3ZlIGNvbnN0cnVjdG9yCisgIC8vCisgIC8vICAg
Ly8gTW92ZSBpcyBndWFyYW50ZWVkIGVmZmljaWVudAorICAvLyAgIGFic2w6Om5vZGVfaGFzaF9z
ZXQ8c3RkOjpzdHJpbmc+IHNldDUoc3RkOjptb3ZlKHNldDQpKTsKKyAgLy8KKyAgLy8gKiBNb3Zl
IGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgLy8KKyAgLy8gICAvLyBNYXkgYmUgZWZmaWNpZW50IGlm
IGFsbG9jYXRvcnMgYXJlIGNvbXBhdGlibGUKKyAgLy8gICBhYnNsOjpub2RlX2hhc2hfc2V0PHN0
ZDo6c3RyaW5nPiBzZXQ2OworICAvLyAgIHNldDYgPSBzdGQ6Om1vdmUoc2V0NSk7CisgIC8vCisg
IC8vICogUmFuZ2UgY29uc3RydWN0b3IKKyAgLy8KKyAgLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gdiA9IHsiYSIsICJiIn07CisgIC8vICAgYWJzbDo6bm9kZV9oYXNoX3NldDxzdGQ6OnN0
cmluZz4gc2V0Nyh2LmJlZ2luKCksIHYuZW5kKCkpOwogICBub2RlX2hhc2hfc2V0KCkge30KICAg
dXNpbmcgQmFzZTo6QmFzZTsKIApAQCAtMjMyLDggKzI3Myw3IEBAIGNsYXNzIG5vZGVfaGFzaF9z
ZXQKICAgLy8KICAgLy8gVGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhl
cmUgYWxyZWFkeSBpcyBhbiBlbGVtZW50IHdpdGggdGhlCiAgIC8vIGtleSBpbiB0aGUgY29udGFp
bmVyLCBpbiB3aGljaCBjYXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUK
LSAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVz
cyB5b3VyIGtleSBpcyBub3QKLSAgLy8gY29weWFibGUgb3IgbW92ZWFibGUuCisgIC8vIGRlc3Ry
b3llZCBpbW1lZGlhdGVseS4KICAgLy8KICAgLy8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUgdG8g
dGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCiAgIHVzaW5nIEJh
c2U6OmVtcGxhY2U7CkBAIC0yNDcsOCArMjg3LDcgQEAgY2xhc3Mgbm9kZV9oYXNoX3NldAogICAv
LwogICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJl
YWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKICAgLy8ga2V5IGluIHRoZSBjb250YWluZXIsIGlu
IHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQotICAvLyBk
ZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIg
a2V5IGlzIG5vdAotICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8gZGVzdHJveWVkIGlt
bWVkaWF0ZWx5LgogICAvLwogICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5z
ZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KICAgdXNpbmcgQmFzZTo6ZW1w
bGFjZV9oaW50OwpAQCAtNDM1LDUgKzQ3NCwxNSBAQCBzdHJ1Y3QgTm9kZUhhc2hTZXRQb2xpY3kK
ICAgc3RhdGljIHNpemVfdCBlbGVtZW50X3NwYWNlX3VzZWQoY29uc3QgVCopIHsgcmV0dXJuIHNp
emVvZihUKTsgfQogfTsKIH0gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKKworbmFt
ZXNwYWNlIGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWwgeworCisvLyBTcGVjaWFsaXphdGlv
biBvZiB0cmFpdCBpbiBhYnNsL2FsZ29yaXRobS9jb250YWluZXIuaAordGVtcGxhdGUgPGNsYXNz
IEtleSwgY2xhc3MgSGFzaCwgY2xhc3MgS2V5RXF1YWwsIGNsYXNzIEFsbG9jYXRvcj4KK3N0cnVj
dCBJc1Vub3JkZXJlZENvbnRhaW5lcjxhYnNsOjpub2RlX2hhc2hfc2V0PEtleSwgSGFzaCwgS2V5
RXF1YWwsIEFsbG9jYXRvcj4+CisgICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsKKworfSAgLy8gbmFt
ZXNwYWNlIGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNs
CisKICNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfTk9ERV9IQVNIX1NFVF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9ub2RlX2hhc2hfc2V0X3Rlc3QuY2MKaW5kZXggN2U0OThmMGY3NzliNGQ2ZTc2NGVjYWZjYTYy
YjFjYjA4Y2NmZDVhZS4uMGVhNzZlN2M3OGVjNjUzMWJkMDkyOWE2OTE1YTQ1NTI2NmMzN2EyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXRfdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvbm9kZV9oYXNoX3NldF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCIKICNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0
LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tZW1i
ZXJzX3Rlc3QuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRf
c2V0X21vZGlmaWVyc190ZXN0LmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKQEAgLTI5LDE0ICszMCwx
NSBAQCB1c2luZyA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlOwogdXNpbmcgU2V0VHlw
ZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPAogICAgIG5vZGVfaGFzaF9zZXQ8aW50LCBTdGF0ZWZ1bFRl
c3RpbmdIYXNoLCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwgQWxsb2M8aW50Pj4sCiAgICAgbm9kZV9o
YXNoX3NldDxzdGQ6OnN0cmluZywgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5n
RXF1YWwsCi0gICAgICAgICAgICAgICAgICBBbGxvYzxpbnQ+PiwKKyAgICAgICAgICAgICAgICAg
IEFsbG9jPHN0ZDo6c3RyaW5nPj4sCiAgICAgbm9kZV9oYXNoX3NldDxFbnVtLCBTdGF0ZWZ1bFRl
c3RpbmdIYXNoLCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwgQWxsb2M8RW51bT4+LAogICAgIG5vZGVf
aGFzaF9zZXQ8RW51bUNsYXNzLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLCBTdGF0ZWZ1bFRlc3RpbmdF
cXVhbCwKICAgICAgICAgICAgICAgICAgIEFsbG9jPEVudW1DbGFzcz4+PjsKIAotSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hTZXQsIENvbnN0cnVjdG9yVGVzdCwgU2V0VHlw
ZXMpOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hTZXQsIExvb2t1cFRl
c3QsIFNldFR5cGVzKTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE5vZGVIYXNoU2V0
LCBNb2RpZmllcnNUZXN0LCBTZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRF
X1AoTm9kZUhhc2hTZXQsIENvbnN0cnVjdG9yVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVf
VFlQRURfVEVTVF9TVUlURV9QKE5vZGVIYXNoU2V0LCBMb29rdXBUZXN0LCBTZXRUeXBlcyk7CitJ
TlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoTm9kZUhhc2hTZXQsIE1lbWJlcnNUZXN0LCBT
ZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX1NVSVRFX1AoTm9kZUhhc2hTZXQsIE1v
ZGlmaWVyc1Rlc3QsIFNldFR5cGVzKTsKIAogVEVTVChOb2RlSGFzaFNldCwgTW92ZWFibGVOb3RD
b3B5YWJsZUNvbXBpbGVzKSB7CiAgIG5vZGVfaGFzaF9zZXQ8c3RkOjp1bmlxdWVfcHRyPHZvaWQq
Pj4gdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzLmJ6bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzLmJ6bApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM1MDhmMTdkZjk3NDc2MThjYTUyYzVlNGI5MzNm
ODE4ZWU5YjljOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb3B0cy5iemwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotIiIiYWJz
bCBzcGVjaWZpYyBjb3B0cy4KLQotRmxhZ3Mgc3BlY2lmaWVkIGhlcmUgbXVzdCBub3QgaW1wYWN0
IEFCSS4gQ29kZSBjb21waWxlZCB3aXRoIGFuZCB3aXRob3V0IHRoZXNlCi1vcHRzIHdpbGwgYmUg
bGlua2VkIHRvZ2V0aGVyLCBhbmQgaW4gc29tZSBjYXNlcyBoZWFkZXJzIGNvbXBpbGVkIHdpdGgg
YW5kCi13aXRob3V0IHRoZXNlIG9wdGlvbnMgd2lsbCBiZSBwYXJ0IG9mIHRoZSBzYW1lIHByb2dy
YW0uCi0iIiIKLUdDQ19GTEFHUyA9IFsKLSAgICAiLVdhbGwiLAotICAgICItV2V4dHJhIiwKLSAg
ICAiLVdjYXN0LXF1YWwiLAotICAgICItV2NvbnZlcnNpb24tbnVsbCIsCi0gICAgIi1XbWlzc2lu
Zy1kZWNsYXJhdGlvbnMiLAotICAgICItV292ZXJsZW5ndGgtc3RyaW5ncyIsCi0gICAgIi1XcG9p
bnRlci1hcml0aCIsCi0gICAgIi1XdW51c2VkLWxvY2FsLXR5cGVkZWZzIiwKLSAgICAiLVd1bnVz
ZWQtcmVzdWx0IiwKLSAgICAiLVd2YXJhcmdzIiwKLSAgICAiLVd2bGEiLCAgIyB2YXJpYWJsZS1s
ZW5ndGggYXJyYXkKLSAgICAiLVd3cml0ZS1zdHJpbmdzIiwKLSAgICAjIEdvb2dsZSBzdHlsZSBk
b2VzIG5vdCB1c2UgdW5zaWduZWQgaW50ZWdlcnMsIHRob3VnaCBTVEwgY29udGFpbmVycwotICAg
ICMgaGF2ZSB1bnNpZ25lZCB0eXBlcy4KLSAgICAiLVduby1zaWduLWNvbXBhcmUiLAotXQotCi1H
Q0NfVEVTVF9GTEFHUyA9IFsKLSAgICAiLVduby1jb252ZXJzaW9uLW51bGwiLAotICAgICItV25v
LW1pc3NpbmctZGVjbGFyYXRpb25zIiwKLSAgICAiLVduby1zaWduLWNvbXBhcmUiLAotICAgICIt
V25vLXVudXNlZC1mdW5jdGlvbiIsCi0gICAgIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCi0gICAg
Ii1Xbm8tdW51c2VkLXByaXZhdGUtZmllbGQiLAotXQotCi0jIERvY3Mgb24gc2luZ2xlIGZsYWdz
IGlzIHByZWNlZGVkIGJ5IGEgY29tbWVudC4KLSMgRG9jcyBvbiBncm91cHMgb2YgZmxhZ3MgaXMg
cHJlY2VkZWQgYnkgIyMjLgotCi1MTFZNX0ZMQUdTID0gWwotICAgICItV2FsbCIsCi0gICAgIi1X
ZXh0cmEiLAotICAgICItV2V2ZXJ5dGhpbmciLAotICAgICMgQWJzZWlsIGRvZXMgbm90IHN1cHBv
cnQgQysrOTgKLSAgICAiLVduby1jKys5OC1jb21wYXQtcGVkYW50aWMiLAotICAgICMgVHVybnMg
b2ZmIGFsbCBpbXBsaWNpdCBjb252ZXJzaW9uIHdhcm5pbmdzLiBNb3N0IGFyZSByZS1lbmFibGVk
IGJlbG93LgotICAgICItV25vLWNvbnZlcnNpb24iLAotICAgICItV25vLWNvdmVyZWQtc3dpdGNo
LWRlZmF1bHQiLAotICAgICItV25vLWRlcHJlY2F0ZWQiLAotICAgICItV25vLWRpc2FibGVkLW1h
Y3JvLWV4cGFuc2lvbiIsCi0gICAgIi1Xbm8tZG91YmxlLXByb21vdGlvbiIsCi0gICAgIyMjCi0g
ICAgIyBUdXJuZWQgb2ZmIGFzIHRoZXkgaW5jbHVkZSB2YWxpZCBDKysgY29kZS4KLSAgICAiLVdu
by1jb21tYSIsCi0gICAgIi1Xbm8tZXh0cmEtc2VtaSIsCi0gICAgIi1Xbm8tcGFja2VkIiwKLSAg
ICAiLVduby1wYWRkZWQiLAotICAgICMjIwotICAgICMgR29vZ2xlIHN0eWxlIGRvZXMgbm90IHVz
ZSB1bnNpZ25lZCBpbnRlZ2VycywgdGhvdWdoIFNUTCBjb250YWluZXJzCi0gICAgIyBoYXZlIHVu
c2lnbmVkIHR5cGVzLgotICAgICItV25vLXNpZ24tY29tcGFyZSIsCi0gICAgIyMjCi0gICAgIi1X
bm8tZmxvYXQtY29udmVyc2lvbiIsCi0gICAgIi1Xbm8tZmxvYXQtZXF1YWwiLAotICAgICItV25v
LWZvcm1hdC1ub25saXRlcmFsIiwKLSAgICAjIFRvbyBhZ2dyZXNzaXZlOiB3YXJucyBvbiBDbGFu
ZyBleHRlbnNpb25zIGVuY2xvc2VkIGluIENsYW5nLW9ubHkKLSAgICAjIGNvbXBpbGF0aW9uIHBh
dGhzLgotICAgICItV25vLWdjYy1jb21wYXQiLAotICAgICMjIwotICAgICMgU29tZSBpbnRlcm5h
bCBnbG9iYWxzIGFyZSBuZWNlc3NhcnkuIERvbid0IGRvIHRoaXMgYXQgaG9tZS4KLSAgICAiLVdu
by1nbG9iYWwtY29uc3RydWN0b3JzIiwKLSAgICAiLVduby1leGl0LXRpbWUtZGVzdHJ1Y3RvcnMi
LAotICAgICMjIwotICAgICItV25vLW5lc3RlZC1hbm9uLXR5cGVzIiwKLSAgICAiLVduby1ub24t
bW9kdWxhci1pbmNsdWRlLWluLW1vZHVsZSIsCi0gICAgIi1Xbm8tb2xkLXN0eWxlLWNhc3QiLAot
ICAgICMgV2FybnMgb24gcHJlZmVycmVkIHVzYWdlIG9mIG5vbi1QT0QgdHlwZXMgc3VjaCBhcyBz
dHJpbmdfdmlldwotICAgICItV25vLXJhbmdlLWxvb3AtYW5hbHlzaXMiLAotICAgICItV25vLXJl
c2VydmVkLWlkLW1hY3JvIiwKLSAgICAiLVduby1zaG9ydGVuLTY0LXRvLTMyIiwKLSAgICAiLVdu
by1zd2l0Y2gtZW51bSIsCi0gICAgIi1Xbm8tdGhyZWFkLXNhZmV0eS1uZWdhdGl2ZSIsCi0gICAg
Ii1Xbm8tdW5kZWYiLAotICAgICItV25vLXVua25vd24td2FybmluZy1vcHRpb24iLAotICAgICIt
V25vLXVucmVhY2hhYmxlLWNvZGUiLAotICAgICMgQ2F1c2VzIHdhcm5pbmdzIG9uIGluY2x1ZGUg
Z3VhcmRzCi0gICAgIi1Xbm8tdW51c2VkLW1hY3JvcyIsCi0gICAgIi1Xbm8td2Vhay12dGFibGVz
IiwKLSAgICAjIyMKLSAgICAjIEltcGxpY2l0IGNvbnZlcnNpb24gd2FybmluZ3MgdHVybmVkIG9m
ZiBieSAtV25vLWNvbnZlcnNpb24KLSAgICAjIHdoaWNoIGFyZSByZS1lbmFibGVkIGJlbG93Lgot
ICAgICItV2JpdGZpZWxkLWVudW0tY29udmVyc2lvbiIsCi0gICAgIi1XYm9vbC1jb252ZXJzaW9u
IiwKLSAgICAiLVdjb25zdGFudC1jb252ZXJzaW9uIiwKLSAgICAiLVdlbnVtLWNvbnZlcnNpb24i
LAotICAgICItV2ludC1jb252ZXJzaW9uIiwKLSAgICAiLVdsaXRlcmFsLWNvbnZlcnNpb24iLAot
ICAgICItV25vbi1saXRlcmFsLW51bGwtY29udmVyc2lvbiIsCi0gICAgIi1XbnVsbC1jb252ZXJz
aW9uIiwKLSAgICAiLVdvYmpjLWxpdGVyYWwtY29udmVyc2lvbiIsCi0gICAgIi1Xbm8tc2lnbi1j
b252ZXJzaW9uIiwKLSAgICAiLVdzdHJpbmctY29udmVyc2lvbiIsCi0gICAgIyMjCi1dCi0KLUxM
Vk1fVEVTVF9GTEFHUyA9IFsKLSAgICAiLVduby1jOTktZXh0ZW5zaW9ucyIsCi0gICAgIi1Xbm8t
bWlzc2luZy1ub3JldHVybiIsCi0gICAgIi1Xbm8tbWlzc2luZy1wcm90b3R5cGVzIiwKLSAgICAi
LVduby1taXNzaW5nLXZhcmlhYmxlLWRlY2xhcmF0aW9ucyIsCi0gICAgIi1Xbm8tbnVsbC1jb252
ZXJzaW9uIiwKLSAgICAiLVduby1zaGFkb3ciLAotICAgICItV25vLXNoaWZ0LXNpZ24tb3ZlcmZs
b3ciLAotICAgICItV25vLXNpZ24tY29tcGFyZSIsCi0gICAgIi1Xbm8tdW51c2VkLWZ1bmN0aW9u
IiwKLSAgICAiLVduby11bnVzZWQtbWVtYmVyLWZ1bmN0aW9uIiwKLSAgICAiLVduby11bnVzZWQt
cGFyYW1ldGVyIiwKLSAgICAiLVduby11bnVzZWQtcHJpdmF0ZS1maWVsZCIsCi0gICAgIi1Xbm8t
dW51c2VkLXRlbXBsYXRlIiwKLSAgICAiLVduby11c2VkLWJ1dC1tYXJrZWQtdW51c2VkIiwKLSAg
ICAiLVduby16ZXJvLWFzLW51bGwtcG9pbnRlci1jb25zdGFudCIsCi0gICAgIyBndGVzdCBkZXBl
bmRzIG9uIHRoaXMgR05VIGV4dGVuc2lvbiBiZWluZyBvZmZlcmVkLgotICAgICItV25vLWdudS16
ZXJvLXZhcmlhZGljLW1hY3JvLWFyZ3VtZW50cyIsCi1dCi0KLU1TVkNfRkxBR1MgPSBbCi0gICAg
Ii9XMyIsCi0gICAgIi93ZDQwMDUiLCAgIyBtYWNyby1yZWRlZmluaXRpb24KLSAgICAiL3dkNDA2
OCIsICAjIHVua25vd24gcHJhZ21hCi0gICAgIi93ZDQxODAiLCAgIyBxdWFsaWZpZXIgYXBwbGll
ZCB0byBmdW5jdGlvbiB0eXBlIGhhcyBubyBtZWFuaW5nOyBpZ25vcmVkCi0gICAgIi93ZDQyNDQi
LCAgIyBjb252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTInLCBwb3NzaWJsZSBsb3NzIG9m
IGRhdGEKLSAgICAiL3dkNDI2NyIsICAjIGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAndHlw
ZScsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotICAgICIvd2Q0ODAwIiwgICMgZm9yY2luZyB2YWx1
ZSB0byBib29sICd0cnVlJyBvciAnZmFsc2UnIChwZXJmb3JtYW5jZSB3YXJuaW5nKQotICAgICIv
RE5PTUlOTUFYIiwgICMgRG9uJ3QgZGVmaW5lIG1pbiBhbmQgbWF4IG1hY3JvcyAod2luZG93cy5o
KQotICAgICIvRFdJTjMyX0xFQU5fQU5EX01FQU4iLCAgIyBEb24ndCBibG9hdCBuYW1lc3BhY2Ug
d2l0aCBpbmNvbXBhdGlibGUgd2luc29jayB2ZXJzaW9ucy4KLSAgICAiL0RfQ1JUX1NFQ1VSRV9O
T19XQVJOSU5HUyIsICAjIERvbid0IHdhcm4gYWJvdXQgdXNhZ2Ugb2YgaW5zZWN1cmUgQyBmdW5j
dGlvbnMKLV0KLQotTVNWQ19URVNUX0ZMQUdTID0gWwotICAgICIvd2Q0MDE4IiwgICMgc2lnbmVk
L3Vuc2lnbmVkIG1pc21hdGNoCi0gICAgIi93ZDQxMDEiLCAgIyB1bnJlZmVyZW5jZWQgbG9jYWwg
dmFyaWFibGUKLSAgICAiL3dkNDUwMyIsICAjIGRlY29yYXRlZCBuYW1lIGxlbmd0aCBleGNlZWRl
ZCwgbmFtZSB3YXMgdHJ1bmNhdGVkCi1dCi0KLSMgL1dhbGwgd2l0aCBtc3ZjIGluY2x1ZGVzIHVu
aGVscGZ1bCB3YXJuaW5ncyBzdWNoIGFzIEM0NzExLCBDNDcxMCwgLi4uCi1BQlNMX0RFRkFVTFRf
Q09QVFMgPSBzZWxlY3QoewotICAgICIvL2Fic2w6d2luZG93cyI6IE1TVkNfRkxBR1MsCi0gICAg
Ii8vYWJzbDpsbHZtX2NvbXBpbGVyIjogTExWTV9GTEFHUywKLSAgICAiLy9jb25kaXRpb25zOmRl
ZmF1bHQiOiBHQ0NfRkxBR1MsCi19KQotCi0jIGluIGFic2VuY2Ugb2YgbW9kdWxlcyAoLS1jb21w
aWxlcj1nY2Mgb3IgLWMgb3B0KSwgY2NfdGVzdHMgbGVhayB0aGVpciBjb3B0cwotIyB0byB0aGVp
ciAoaW5jbHVkZWQgaGVhZGVyKSBkZXBlbmRlbmNpZXMgYW5kIGZhaWwgdG8gYnVpbGQgb3V0c2lk
ZSBhYnNsCi1BQlNMX1RFU1RfQ09QVFMgPSBBQlNMX0RFRkFVTFRfQ09QVFMgKyBzZWxlY3Qoewot
ICAgICIvL2Fic2w6d2luZG93cyI6IE1TVkNfVEVTVF9GTEFHUywKLSAgICAiLy9hYnNsOmxsdm1f
Y29tcGlsZXIiOiBMTFZNX1RFU1RfRkxBR1MsCi0gICAgIi8vY29uZGl0aW9uczpkZWZhdWx0Ijog
R0NDX1RFU1RfRkxBR1MsCi19KQotCi1BQlNMX0VYQ0VQVElPTlNfRkxBRyA9IHNlbGVjdCh7Ci0g
ICAgIi8vYWJzbDp3aW5kb3dzIjogWyIvVV9IQVNfRVhDRVBUSU9OUyIsICIvRF9IQVNfRVhDRVBU
SU9OUz0xIiwgIi9FSHNjIl0sCi0gICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItZmV4Y2Vw
dGlvbnMiXSwKLX0pCi0KLUFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTID0gc2VsZWN0KHsK
LSAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbXSwKLX0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b3B0cy9BYnNlaWxDb25maWd1cmVDb3B0cy5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL0Fic2VpbENvbmZp
Z3VyZUNvcHRzLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlY2U0YzZmNDhjNzM0NjM1MWM0ZTM0OTQ0NTUw
ZmUyYzg2ZjNjZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9BYnNlaWxDb25maWd1
cmVDb3B0cy5jbWFrZQpAQCAtMCwwICsxLDYwIEBACisjIFNlZSBhYnNsL2NvcHRzL2NvcHRzLnB5
IGFuZCBhYnNsL2NvcHRzL2dlbmVyYXRlX2NvcHRzLnB5CitpbmNsdWRlKEdFTkVSQVRFRF9BYnNl
aWxDb3B0cykKKworc2V0KEFCU0xfTFNBTl9MSU5LT1BUUyAiIikKK3NldChBQlNMX0hBVkVfTFNB
TiBPRkYpCitzZXQoQUJTTF9ERUZBVUxUX0xJTktPUFRTICIiKQorCitpZigiJHtDTUFLRV9DWFhf
Q09NUElMRVJfSUR9IiBTVFJFUVVBTCAiR05VIikKKyAgc2V0KEFCU0xfREVGQVVMVF9DT1BUUyAi
JHtBQlNMX0dDQ19GTEFHU30iKQorICBzZXQoQUJTTF9URVNUX0NPUFRTICIke0FCU0xfR0NDX0ZM
QUdTfTske0FCU0xfR0NDX1RFU1RfRkxBR1N9IikKKyAgc2V0KEFCU0xfRVhDRVBUSU9OU19GTEFH
ICIke0FCU0xfR0NDX0VYQ0VQVElPTlNfRkxBR1N9IikKKyAgc2V0KEFCU0xfUkFORE9NX1JBTkRF
Tl9DT1BUUyAiJHtBQlNMX1JBTkRPTV9IV0FFU19YNjRfRkxBR1N9IikKK2Vsc2VpZigiJHtDTUFL
RV9DWFhfQ09NUElMRVJfSUR9IiBNQVRDSEVTICJDbGFuZyIpCisgICMgTUFUQ0hFUyBzbyB3ZSBn
ZXQgYm90aCBDbGFuZyBhbmQgQXBwbGVDbGFuZworICBpZihNU1ZDKQorICAgICMgY2xhbmctY2wg
aXMgaGFsZiBNU1ZDLCBoYWxmIExMVk0KKyAgICBzZXQoQUJTTF9ERUZBVUxUX0NPUFRTICIke0FC
U0xfQ0xBTkdfQ0xfRkxBR1N9IikKKyAgICBzZXQoQUJTTF9URVNUX0NPUFRTICIke0FCU0xfQ0xB
TkdfQ0xfRkxBR1N9OyR7QUJTTF9DTEFOR19DTF9URVNUX0ZMQUdTfSIpCisgICAgc2V0KEFCU0xf
RVhDRVBUSU9OU19GTEFHICIke0FCU0xfQ0xBTkdfQ0xfRVhDRVBUSU9OU19GTEFHU30iKQorICAg
IHNldChBQlNMX0RFRkFVTFRfTElOS09QVFMgIiR7QUJTTF9NU1ZDX0xJTktPUFRTfSIpCisgICAg
c2V0KEFCU0xfUkFORE9NX1JBTkRFTl9DT1BUUyAiJHtBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2
NF9GTEFHU30iKQorICBlbHNlKCkKKyAgICBzZXQoQUJTTF9ERUZBVUxUX0NPUFRTICIke0FCU0xf
TExWTV9GTEFHU30iKQorICAgIHNldChBQlNMX1RFU1RfQ09QVFMgIiR7QUJTTF9MTFZNX0ZMQUdT
fTske0FCU0xfTExWTV9URVNUX0ZMQUdTfSIpCisgICAgc2V0KEFCU0xfRVhDRVBUSU9OU19GTEFH
ICIke0FCU0xfTExWTV9FWENFUFRJT05TX0ZMQUdTfSIpCisgICAgc2V0KEFCU0xfUkFORE9NX1JB
TkRFTl9DT1BUUyAiJHtBQlNMX1JBTkRPTV9IV0FFU19YNjRfRkxBR1N9IikKKyAgICBpZigiJHtD
TUFLRV9DWFhfQ09NUElMRVJfSUR9IiBTVFJFUVVBTCAiQ2xhbmciKQorICAgICAgIyBBcHBsZUNs
YW5nIGRvZXNuJ3QgaGF2ZSBsc2FuCisgICAgICAjIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNv
bS9kb2N1bWVudGF0aW9uL2NvZGVfZGlhZ25vc3RpY3MKKyAgICAgIGlmKE5PVCBDTUFLRV9DWFhf
Q09NUElMRVJfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMy41KQorICAgICAgICBzZXQoQUJTTF9MU0FO
X0xJTktPUFRTICItZnNhbml0aXplPWxlYWsiKQorICAgICAgICBzZXQoQUJTTF9IQVZFX0xTQU4g
T04pCisgICAgICBlbmRpZigpCisgICAgZW5kaWYoKQorICBlbmRpZigpCitlbHNlaWYoIiR7Q01B
S0VfQ1hYX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIk1TVkMiKQorICBzZXQoQUJTTF9ERUZBVUxU
X0NPUFRTICIke0FCU0xfTVNWQ19GTEFHU30iKQorICBzZXQoQUJTTF9URVNUX0NPUFRTICIke0FC
U0xfTVNWQ19GTEFHU307JHtBQlNMX01TVkNfVEVTVF9GTEFHU30iKQorICBzZXQoQUJTTF9FWENF
UFRJT05TX0ZMQUcgIiR7QUJTTF9NU1ZDX0VYQ0VQVElPTlNfRkxBR1N9IikKKyAgc2V0KEFCU0xf
REVGQVVMVF9MSU5LT1BUUyAiJHtBQlNMX01TVkNfTElOS09QVFN9IikKKyAgc2V0KEFCU0xfUkFO
RE9NX1JBTkRFTl9DT1BUUyAiJHtBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2NF9GTEFHU30iKQor
ZWxzZSgpCisgIG1lc3NhZ2UoV0FSTklORyAiVW5rbm93biBjb21waWxlcjogJHtDTUFLRV9DWFhf
Q09NUElMRVJ9LiAgQnVpbGRpbmcgd2l0aCBubyBkZWZhdWx0IGZsYWdzIikKKyAgc2V0KEFCU0xf
REVGQVVMVF9DT1BUUyAiIikKKyAgc2V0KEFCU0xfVEVTVF9DT1BUUyAiIikKKyAgc2V0KEFCU0xf
RVhDRVBUSU9OU19GTEFHICIiKQorICBzZXQoQUJTTF9SQU5ET01fUkFOREVOX0NPUFRTICIiKQor
ZW5kaWYoKQorCisjIFRoaXMgZmxhZyBpcyB1c2VkIGludGVybmFsbHkgZm9yIEJhemVsIGJ1aWxk
cyBhbmQgaXMga2VwdCBoZXJlIGZvciBjb25zaXN0ZW5jeQorc2V0KEFCU0xfRVhDRVBUSU9OU19G
TEFHX0xJTktPUFRTICIiKQorCitpZigiJHtDTUFLRV9DWFhfU1RBTkRBUkR9IiBFUVVBTCA5OCkK
KyAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQWJzZWlsIHJlcXVpcmVzIGF0IGxlYXN0IEMrKzExIikK
K2Vsc2VpZihOT1QgIiR7Q01BS0VfQ1hYX1NUQU5EQVJEfSIpCisgIG1lc3NhZ2UoU1RBVFVTICJO
byBDTUFLRV9DWFhfU1RBTkRBUkQgc2V0LCBhc3N1bWluZyAxMSIpCisgIHNldChBQlNMX0NYWF9T
VEFOREFSRCAxMSkKK2Vsc2UoKQorICBzZXQoQUJTTF9DWFhfU1RBTkRBUkQgIiR7Q01BS0VfQ1hY
X1NUQU5EQVJEfSIpCitlbmRpZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9HRU5FUkFURURf
QWJzZWlsQ29wdHMuY21ha2UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9HRU5FUkFURURfQWJzZWlsQ29wdHMuY21h
a2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDFiZDQwYjI4ZWUxZTRmN2ZlMTU4ZjYzMmQ5YzcwZjBlY2EyN2Y3Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL0dFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFr
ZQpAQCAtMCwwICsxLDIzNiBAQAorIyBHRU5FUkFURUQhIERPIE5PVCBNQU5VQUxMWSBFRElUIFRI
SVMgRklMRS4KKyMKKyMgKDEpIEVkaXQgYWJzbC9jb3B0cy9jb3B0cy5weS4KKyMgKDIpIFJ1biBg
cHl0aG9uIDxwYXRoX3RvX2Fic2w+L2NvcHRzL2dlbmVyYXRlX2NvcHRzLnB5YC4KKworbGlzdChB
UFBFTkQgQUJTTF9DTEFOR19DTF9FWENFUFRJT05TX0ZMQUdTCisgICAgIi9VX0hBU19FWENFUFRJ
T05TIgorICAgICIvRF9IQVNfRVhDRVBUSU9OUz0xIgorICAgICIvRUhzYyIKKykKKworbGlzdChB
UFBFTkQgQUJTTF9DTEFOR19DTF9GTEFHUworICAgICIvVzMiCisgICAgIi1Xbm8tYysrOTgtY29t
cGF0LXBlZGFudGljIgorICAgICItV25vLWNvbnZlcnNpb24iCisgICAgIi1Xbm8tY292ZXJlZC1z
d2l0Y2gtZGVmYXVsdCIKKyAgICAiLVduby1kZXByZWNhdGVkIgorICAgICItV25vLWRpc2FibGVk
LW1hY3JvLWV4cGFuc2lvbiIKKyAgICAiLVduby1kb3VibGUtcHJvbW90aW9uIgorICAgICItV25v
LWNvbW1hIgorICAgICItV25vLWV4dHJhLXNlbWkiCisgICAgIi1Xbm8tZXh0cmEtc2VtaS1zdG10
IgorICAgICItV25vLXBhY2tlZCIKKyAgICAiLVduby1wYWRkZWQiCisgICAgIi1Xbm8tc2lnbi1j
b21wYXJlIgorICAgICItV25vLWZsb2F0LWNvbnZlcnNpb24iCisgICAgIi1Xbm8tZmxvYXQtZXF1
YWwiCisgICAgIi1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwiCisgICAgIi1Xbm8tZ2NjLWNvbXBhdCIK
KyAgICAiLVduby1nbG9iYWwtY29uc3RydWN0b3JzIgorICAgICItV25vLWV4aXQtdGltZS1kZXN0
cnVjdG9ycyIKKyAgICAiLVduby1uZXN0ZWQtYW5vbi10eXBlcyIKKyAgICAiLVduby1ub24tbW9k
dWxhci1pbmNsdWRlLWluLW1vZHVsZSIKKyAgICAiLVduby1vbGQtc3R5bGUtY2FzdCIKKyAgICAi
LVduby1yYW5nZS1sb29wLWFuYWx5c2lzIgorICAgICItV25vLXJlc2VydmVkLWlkLW1hY3JvIgor
ICAgICItV25vLXNob3J0ZW4tNjQtdG8tMzIiCisgICAgIi1Xbm8tc3dpdGNoLWVudW0iCisgICAg
Ii1Xbm8tdGhyZWFkLXNhZmV0eS1uZWdhdGl2ZSIKKyAgICAiLVduby11bmtub3duLXdhcm5pbmct
b3B0aW9uIgorICAgICItV25vLXVucmVhY2hhYmxlLWNvZGUiCisgICAgIi1Xbm8tdW51c2VkLW1h
Y3JvcyIKKyAgICAiLVduby13ZWFrLXZ0YWJsZXMiCisgICAgIi1Xbm8temVyby1hcy1udWxsLXBv
aW50ZXItY29uc3RhbnQiCisgICAgIi1XYml0ZmllbGQtZW51bS1jb252ZXJzaW9uIgorICAgICIt
V2Jvb2wtY29udmVyc2lvbiIKKyAgICAiLVdjb25zdGFudC1jb252ZXJzaW9uIgorICAgICItV2Vu
dW0tY29udmVyc2lvbiIKKyAgICAiLVdpbnQtY29udmVyc2lvbiIKKyAgICAiLVdsaXRlcmFsLWNv
bnZlcnNpb24iCisgICAgIi1Xbm9uLWxpdGVyYWwtbnVsbC1jb252ZXJzaW9uIgorICAgICItV251
bGwtY29udmVyc2lvbiIKKyAgICAiLVdvYmpjLWxpdGVyYWwtY29udmVyc2lvbiIKKyAgICAiLVdu
by1zaWduLWNvbnZlcnNpb24iCisgICAgIi1Xc3RyaW5nLWNvbnZlcnNpb24iCisgICAgIi9ETk9N
SU5NQVgiCisgICAgIi9EV0lOMzJfTEVBTl9BTkRfTUVBTiIKKyAgICAiL0RfQ1JUX1NFQ1VSRV9O
T19XQVJOSU5HUyIKKyAgICAiL0RfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUyIKKyAgICAiL0RfRU5B
QkxFX0VYVEVOREVEX0FMSUdORURfU1RPUkFHRSIKKykKKworbGlzdChBUFBFTkQgQUJTTF9DTEFO
R19DTF9URVNUX0ZMQUdTCisgICAgIi1Xbm8tYzk5LWV4dGVuc2lvbnMiCisgICAgIi1Xbm8tZGVw
cmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgIi1Xbm8tbWlzc2luZy1ub3JldHVybiIKKyAgICAi
LVduby1taXNzaW5nLXByb3RvdHlwZXMiCisgICAgIi1Xbm8tbWlzc2luZy12YXJpYWJsZS1kZWNs
YXJhdGlvbnMiCisgICAgIi1Xbm8tbnVsbC1jb252ZXJzaW9uIgorICAgICItV25vLXNoYWRvdyIK
KyAgICAiLVduby1zaGlmdC1zaWduLW92ZXJmbG93IgorICAgICItV25vLXNpZ24tY29tcGFyZSIK
KyAgICAiLVduby11bnVzZWQtZnVuY3Rpb24iCisgICAgIi1Xbm8tdW51c2VkLW1lbWJlci1mdW5j
dGlvbiIKKyAgICAiLVduby11bnVzZWQtcGFyYW1ldGVyIgorICAgICItV25vLXVudXNlZC1wcml2
YXRlLWZpZWxkIgorICAgICItV25vLXVudXNlZC10ZW1wbGF0ZSIKKyAgICAiLVduby11c2VkLWJ1
dC1tYXJrZWQtdW51c2VkIgorICAgICItV25vLXplcm8tYXMtbnVsbC1wb2ludGVyLWNvbnN0YW50
IgorICAgICItV25vLWdudS16ZXJvLXZhcmlhZGljLW1hY3JvLWFyZ3VtZW50cyIKKykKKworbGlz
dChBUFBFTkQgQUJTTF9HQ0NfRVhDRVBUSU9OU19GTEFHUworICAgICItZmV4Y2VwdGlvbnMiCisp
CisKK2xpc3QoQVBQRU5EIEFCU0xfR0NDX0ZMQUdTCisgICAgIi1XYWxsIgorICAgICItV2V4dHJh
IgorICAgICItV2Nhc3QtcXVhbCIKKyAgICAiLVdjb252ZXJzaW9uLW51bGwiCisgICAgIi1XbWlz
c2luZy1kZWNsYXJhdGlvbnMiCisgICAgIi1Xb3Zlcmxlbmd0aC1zdHJpbmdzIgorICAgICItV3Bv
aW50ZXItYXJpdGgiCisgICAgIi1XdW51c2VkLWxvY2FsLXR5cGVkZWZzIgorICAgICItV3VudXNl
ZC1yZXN1bHQiCisgICAgIi1XdmFyYXJncyIKKyAgICAiLVd2bGEiCisgICAgIi1Xd3JpdGUtc3Ry
aW5ncyIKKyAgICAiLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIKKyAgICAiLVduby1z
aWduLWNvbXBhcmUiCispCisKK2xpc3QoQVBQRU5EIEFCU0xfR0NDX1RFU1RfRkxBR1MKKyAgICAi
LVduby1jb252ZXJzaW9uLW51bGwiCisgICAgIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMi
CisgICAgIi1Xbm8tbWlzc2luZy1kZWNsYXJhdGlvbnMiCisgICAgIi1Xbm8tc2lnbi1jb21wYXJl
IgorICAgICItV25vLXVudXNlZC1mdW5jdGlvbiIKKyAgICAiLVduby11bnVzZWQtcGFyYW1ldGVy
IgorICAgICItV25vLXVudXNlZC1wcml2YXRlLWZpZWxkIgorKQorCitsaXN0KEFQUEVORCBBQlNM
X0xMVk1fRVhDRVBUSU9OU19GTEFHUworICAgICItZmV4Y2VwdGlvbnMiCispCisKK2xpc3QoQVBQ
RU5EIEFCU0xfTExWTV9GTEFHUworICAgICItV2FsbCIKKyAgICAiLVdleHRyYSIKKyAgICAiLVdl
dmVyeXRoaW5nIgorICAgICItV25vLWMrKzk4LWNvbXBhdC1wZWRhbnRpYyIKKyAgICAiLVduby1j
b252ZXJzaW9uIgorICAgICItV25vLWNvdmVyZWQtc3dpdGNoLWRlZmF1bHQiCisgICAgIi1Xbm8t
ZGVwcmVjYXRlZCIKKyAgICAiLVduby1kaXNhYmxlZC1tYWNyby1leHBhbnNpb24iCisgICAgIi1X
bm8tZG91YmxlLXByb21vdGlvbiIKKyAgICAiLVduby1jb21tYSIKKyAgICAiLVduby1leHRyYS1z
ZW1pIgorICAgICItV25vLWV4dHJhLXNlbWktc3RtdCIKKyAgICAiLVduby1wYWNrZWQiCisgICAg
Ii1Xbm8tcGFkZGVkIgorICAgICItV25vLXNpZ24tY29tcGFyZSIKKyAgICAiLVduby1mbG9hdC1j
b252ZXJzaW9uIgorICAgICItV25vLWZsb2F0LWVxdWFsIgorICAgICItV25vLWZvcm1hdC1ub25s
aXRlcmFsIgorICAgICItV25vLWdjYy1jb21wYXQiCisgICAgIi1Xbm8tZ2xvYmFsLWNvbnN0cnVj
dG9ycyIKKyAgICAiLVduby1leGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgIi1Xbm8tbmVzdGVk
LWFub24tdHlwZXMiCisgICAgIi1Xbm8tbm9uLW1vZHVsYXItaW5jbHVkZS1pbi1tb2R1bGUiCisg
ICAgIi1Xbm8tb2xkLXN0eWxlLWNhc3QiCisgICAgIi1Xbm8tcmFuZ2UtbG9vcC1hbmFseXNpcyIK
KyAgICAiLVduby1yZXNlcnZlZC1pZC1tYWNybyIKKyAgICAiLVduby1zaG9ydGVuLTY0LXRvLTMy
IgorICAgICItV25vLXN3aXRjaC1lbnVtIgorICAgICItV25vLXRocmVhZC1zYWZldHktbmVnYXRp
dmUiCisgICAgIi1Xbm8tdW5rbm93bi13YXJuaW5nLW9wdGlvbiIKKyAgICAiLVduby11bnJlYWNo
YWJsZS1jb2RlIgorICAgICItV25vLXVudXNlZC1tYWNyb3MiCisgICAgIi1Xbm8td2Vhay12dGFi
bGVzIgorICAgICItV25vLXplcm8tYXMtbnVsbC1wb2ludGVyLWNvbnN0YW50IgorICAgICItV2Jp
dGZpZWxkLWVudW0tY29udmVyc2lvbiIKKyAgICAiLVdib29sLWNvbnZlcnNpb24iCisgICAgIi1X
Y29uc3RhbnQtY29udmVyc2lvbiIKKyAgICAiLVdlbnVtLWNvbnZlcnNpb24iCisgICAgIi1XaW50
LWNvbnZlcnNpb24iCisgICAgIi1XbGl0ZXJhbC1jb252ZXJzaW9uIgorICAgICItV25vbi1saXRl
cmFsLW51bGwtY29udmVyc2lvbiIKKyAgICAiLVdudWxsLWNvbnZlcnNpb24iCisgICAgIi1Xb2Jq
Yy1saXRlcmFsLWNvbnZlcnNpb24iCisgICAgIi1Xbm8tc2lnbi1jb252ZXJzaW9uIgorICAgICIt
V3N0cmluZy1jb252ZXJzaW9uIgorKQorCitsaXN0KEFQUEVORCBBQlNMX0xMVk1fVEVTVF9GTEFH
UworICAgICItV25vLWM5OS1leHRlbnNpb25zIgorICAgICItV25vLWRlcHJlY2F0ZWQtZGVjbGFy
YXRpb25zIgorICAgICItV25vLW1pc3Npbmctbm9yZXR1cm4iCisgICAgIi1Xbm8tbWlzc2luZy1w
cm90b3R5cGVzIgorICAgICItV25vLW1pc3NpbmctdmFyaWFibGUtZGVjbGFyYXRpb25zIgorICAg
ICItV25vLW51bGwtY29udmVyc2lvbiIKKyAgICAiLVduby1zaGFkb3ciCisgICAgIi1Xbm8tc2hp
ZnQtc2lnbi1vdmVyZmxvdyIKKyAgICAiLVduby1zaWduLWNvbXBhcmUiCisgICAgIi1Xbm8tdW51
c2VkLWZ1bmN0aW9uIgorICAgICItV25vLXVudXNlZC1tZW1iZXItZnVuY3Rpb24iCisgICAgIi1X
bm8tdW51c2VkLXBhcmFtZXRlciIKKyAgICAiLVduby11bnVzZWQtcHJpdmF0ZS1maWVsZCIKKyAg
ICAiLVduby11bnVzZWQtdGVtcGxhdGUiCisgICAgIi1Xbm8tdXNlZC1idXQtbWFya2VkLXVudXNl
ZCIKKyAgICAiLVduby16ZXJvLWFzLW51bGwtcG9pbnRlci1jb25zdGFudCIKKyAgICAiLVduby1n
bnUtemVyby12YXJpYWRpYy1tYWNyby1hcmd1bWVudHMiCispCisKK2xpc3QoQVBQRU5EIEFCU0xf
TVNWQ19FWENFUFRJT05TX0ZMQUdTCisgICAgIi9VX0hBU19FWENFUFRJT05TIgorICAgICIvRF9I
QVNfRVhDRVBUSU9OUz0xIgorICAgICIvRUhzYyIKKykKKworbGlzdChBUFBFTkQgQUJTTF9NU1ZD
X0ZMQUdTCisgICAgIi9XMyIKKyAgICAiL0ROT01JTk1BWCIKKyAgICAiL0RXSU4zMl9MRUFOX0FO
RF9NRUFOIgorICAgICIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIgorICAgICIvRF9TQ0xfU0VD
VVJFX05PX1dBUk5JTkdTIgorICAgICIvRF9FTkFCTEVfRVhURU5ERURfQUxJR05FRF9TVE9SQUdF
IgorICAgICIvd2Q0MDA1IgorICAgICIvd2Q0MDY4IgorICAgICIvd2Q0MTgwIgorICAgICIvd2Q0
MjQ0IgorICAgICIvd2Q0MjY3IgorICAgICIvd2Q0NTAzIgorICAgICIvd2Q0ODAwIgorKQorCits
aXN0KEFQUEVORCBBQlNMX01TVkNfTElOS09QVFMKKyAgICAiLWlnbm9yZTo0MjIxIgorKQorCits
aXN0KEFQUEVORCBBQlNMX01TVkNfVEVTVF9GTEFHUworICAgICIvd2Q0MDE4IgorICAgICIvd2Q0
MTAxIgorICAgICIvd2Q0NTAzIgorICAgICIvd2Q0OTk2IgorICAgICIvRE5PTUlOTUFYIgorKQor
CitsaXN0KEFQUEVORCBBQlNMX1JBTkRPTV9IV0FFU19BUk0zMl9GTEFHUworICAgICItbWZwdT1u
ZW9uIgorKQorCitsaXN0KEFQUEVORCBBQlNMX1JBTkRPTV9IV0FFU19BUk02NF9GTEFHUworICAg
ICItbWFyY2g9YXJtdjgtYStjcnlwdG8iCispCisKK2xpc3QoQVBQRU5EIEFCU0xfUkFORE9NX0hX
QUVTX01TVkNfWDY0X0ZMQUdTCisgICAgIi9PMiIKKyAgICAiL09iMiIKKykKKworbGlzdChBUFBF
TkQgQUJTTF9SQU5ET01fSFdBRVNfWDY0X0ZMQUdTCisgICAgIi1tYWVzIgorICAgICItbXNzZTQu
MSIKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL0dFTkVSQVRFRF9jb3B0cy5iemwgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb3B0cy9HRU5FUkFURURfY29wdHMuYnpsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyZjMzMmY0OWNkMWU1YzUy
OTIzNzliMGM1YmE3OWNjNTllZTdkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9H
RU5FUkFURURfY29wdHMuYnpsCkBAIC0wLDAgKzEsMjM3IEBACisiIiJHRU5FUkFURUQhIERPIE5P
VCBNQU5VQUxMWSBFRElUIFRISVMgRklMRS4KKworKDEpIEVkaXQgYWJzbC9jb3B0cy9jb3B0cy5w
eS4KKygyKSBSdW4gYHB5dGhvbiA8cGF0aF90b19hYnNsPi9jb3B0cy9nZW5lcmF0ZV9jb3B0cy5w
eWAuCisiIiIKKworQUJTTF9DTEFOR19DTF9FWENFUFRJT05TX0ZMQUdTID0gWworICAgICIvVV9I
QVNfRVhDRVBUSU9OUyIsCisgICAgIi9EX0hBU19FWENFUFRJT05TPTEiLAorICAgICIvRUhzYyIs
CitdCisKK0FCU0xfQ0xBTkdfQ0xfRkxBR1MgPSBbCisgICAgIi9XMyIsCisgICAgIi1Xbm8tYysr
OTgtY29tcGF0LXBlZGFudGljIiwKKyAgICAiLVduby1jb252ZXJzaW9uIiwKKyAgICAiLVduby1j
b3ZlcmVkLXN3aXRjaC1kZWZhdWx0IiwKKyAgICAiLVduby1kZXByZWNhdGVkIiwKKyAgICAiLVdu
by1kaXNhYmxlZC1tYWNyby1leHBhbnNpb24iLAorICAgICItV25vLWRvdWJsZS1wcm9tb3Rpb24i
LAorICAgICItV25vLWNvbW1hIiwKKyAgICAiLVduby1leHRyYS1zZW1pIiwKKyAgICAiLVduby1l
eHRyYS1zZW1pLXN0bXQiLAorICAgICItV25vLXBhY2tlZCIsCisgICAgIi1Xbm8tcGFkZGVkIiwK
KyAgICAiLVduby1zaWduLWNvbXBhcmUiLAorICAgICItV25vLWZsb2F0LWNvbnZlcnNpb24iLAor
ICAgICItV25vLWZsb2F0LWVxdWFsIiwKKyAgICAiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisg
ICAgIi1Xbm8tZ2NjLWNvbXBhdCIsCisgICAgIi1Xbm8tZ2xvYmFsLWNvbnN0cnVjdG9ycyIsCisg
ICAgIi1Xbm8tZXhpdC10aW1lLWRlc3RydWN0b3JzIiwKKyAgICAiLVduby1uZXN0ZWQtYW5vbi10
eXBlcyIsCisgICAgIi1Xbm8tbm9uLW1vZHVsYXItaW5jbHVkZS1pbi1tb2R1bGUiLAorICAgICIt
V25vLW9sZC1zdHlsZS1jYXN0IiwKKyAgICAiLVduby1yYW5nZS1sb29wLWFuYWx5c2lzIiwKKyAg
ICAiLVduby1yZXNlcnZlZC1pZC1tYWNybyIsCisgICAgIi1Xbm8tc2hvcnRlbi02NC10by0zMiIs
CisgICAgIi1Xbm8tc3dpdGNoLWVudW0iLAorICAgICItV25vLXRocmVhZC1zYWZldHktbmVnYXRp
dmUiLAorICAgICItV25vLXVua25vd24td2FybmluZy1vcHRpb24iLAorICAgICItV25vLXVucmVh
Y2hhYmxlLWNvZGUiLAorICAgICItV25vLXVudXNlZC1tYWNyb3MiLAorICAgICItV25vLXdlYWst
dnRhYmxlcyIsCisgICAgIi1Xbm8temVyby1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQiLAorICAg
ICItV2JpdGZpZWxkLWVudW0tY29udmVyc2lvbiIsCisgICAgIi1XYm9vbC1jb252ZXJzaW9uIiwK
KyAgICAiLVdjb25zdGFudC1jb252ZXJzaW9uIiwKKyAgICAiLVdlbnVtLWNvbnZlcnNpb24iLAor
ICAgICItV2ludC1jb252ZXJzaW9uIiwKKyAgICAiLVdsaXRlcmFsLWNvbnZlcnNpb24iLAorICAg
ICItV25vbi1saXRlcmFsLW51bGwtY29udmVyc2lvbiIsCisgICAgIi1XbnVsbC1jb252ZXJzaW9u
IiwKKyAgICAiLVdvYmpjLWxpdGVyYWwtY29udmVyc2lvbiIsCisgICAgIi1Xbm8tc2lnbi1jb252
ZXJzaW9uIiwKKyAgICAiLVdzdHJpbmctY29udmVyc2lvbiIsCisgICAgIi9ETk9NSU5NQVgiLAor
ICAgICIvRFdJTjMyX0xFQU5fQU5EX01FQU4iLAorICAgICIvRF9DUlRfU0VDVVJFX05PX1dBUk5J
TkdTIiwKKyAgICAiL0RfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUyIsCisgICAgIi9EX0VOQUJMRV9F
WFRFTkRFRF9BTElHTkVEX1NUT1JBR0UiLAorXQorCitBQlNMX0NMQU5HX0NMX1RFU1RfRkxBR1Mg
PSBbCisgICAgIi1Xbm8tYzk5LWV4dGVuc2lvbnMiLAorICAgICItV25vLWRlcHJlY2F0ZWQtZGVj
bGFyYXRpb25zIiwKKyAgICAiLVduby1taXNzaW5nLW5vcmV0dXJuIiwKKyAgICAiLVduby1taXNz
aW5nLXByb3RvdHlwZXMiLAorICAgICItV25vLW1pc3NpbmctdmFyaWFibGUtZGVjbGFyYXRpb25z
IiwKKyAgICAiLVduby1udWxsLWNvbnZlcnNpb24iLAorICAgICItV25vLXNoYWRvdyIsCisgICAg
Ii1Xbm8tc2hpZnQtc2lnbi1vdmVyZmxvdyIsCisgICAgIi1Xbm8tc2lnbi1jb21wYXJlIiwKKyAg
ICAiLVduby11bnVzZWQtZnVuY3Rpb24iLAorICAgICItV25vLXVudXNlZC1tZW1iZXItZnVuY3Rp
b24iLAorICAgICItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorICAgICItV25vLXVudXNlZC1wcml2
YXRlLWZpZWxkIiwKKyAgICAiLVduby11bnVzZWQtdGVtcGxhdGUiLAorICAgICItV25vLXVzZWQt
YnV0LW1hcmtlZC11bnVzZWQiLAorICAgICItV25vLXplcm8tYXMtbnVsbC1wb2ludGVyLWNvbnN0
YW50IiwKKyAgICAiLVduby1nbnUtemVyby12YXJpYWRpYy1tYWNyby1hcmd1bWVudHMiLAorXQor
CitBQlNMX0dDQ19FWENFUFRJT05TX0ZMQUdTID0gWworICAgICItZmV4Y2VwdGlvbnMiLAorXQor
CitBQlNMX0dDQ19GTEFHUyA9IFsKKyAgICAiLVdhbGwiLAorICAgICItV2V4dHJhIiwKKyAgICAi
LVdjYXN0LXF1YWwiLAorICAgICItV2NvbnZlcnNpb24tbnVsbCIsCisgICAgIi1XbWlzc2luZy1k
ZWNsYXJhdGlvbnMiLAorICAgICItV292ZXJsZW5ndGgtc3RyaW5ncyIsCisgICAgIi1XcG9pbnRl
ci1hcml0aCIsCisgICAgIi1XdW51c2VkLWxvY2FsLXR5cGVkZWZzIiwKKyAgICAiLVd1bnVzZWQt
cmVzdWx0IiwKKyAgICAiLVd2YXJhcmdzIiwKKyAgICAiLVd2bGEiLAorICAgICItV3dyaXRlLXN0
cmluZ3MiLAorICAgICItV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIiwKKyAgICAiLVdu
by1zaWduLWNvbXBhcmUiLAorXQorCitBQlNMX0dDQ19URVNUX0ZMQUdTID0gWworICAgICItV25v
LWNvbnZlcnNpb24tbnVsbCIsCisgICAgIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiLAor
ICAgICItV25vLW1pc3NpbmctZGVjbGFyYXRpb25zIiwKKyAgICAiLVduby1zaWduLWNvbXBhcmUi
LAorICAgICItV25vLXVudXNlZC1mdW5jdGlvbiIsCisgICAgIi1Xbm8tdW51c2VkLXBhcmFtZXRl
ciIsCisgICAgIi1Xbm8tdW51c2VkLXByaXZhdGUtZmllbGQiLAorXQorCitBQlNMX0xMVk1fRVhD
RVBUSU9OU19GTEFHUyA9IFsKKyAgICAiLWZleGNlcHRpb25zIiwKK10KKworQUJTTF9MTFZNX0ZM
QUdTID0gWworICAgICItV2FsbCIsCisgICAgIi1XZXh0cmEiLAorICAgICItV2V2ZXJ5dGhpbmci
LAorICAgICItV25vLWMrKzk4LWNvbXBhdC1wZWRhbnRpYyIsCisgICAgIi1Xbm8tY29udmVyc2lv
biIsCisgICAgIi1Xbm8tY292ZXJlZC1zd2l0Y2gtZGVmYXVsdCIsCisgICAgIi1Xbm8tZGVwcmVj
YXRlZCIsCisgICAgIi1Xbm8tZGlzYWJsZWQtbWFjcm8tZXhwYW5zaW9uIiwKKyAgICAiLVduby1k
b3VibGUtcHJvbW90aW9uIiwKKyAgICAiLVduby1jb21tYSIsCisgICAgIi1Xbm8tZXh0cmEtc2Vt
aSIsCisgICAgIi1Xbm8tZXh0cmEtc2VtaS1zdG10IiwKKyAgICAiLVduby1wYWNrZWQiLAorICAg
ICItV25vLXBhZGRlZCIsCisgICAgIi1Xbm8tc2lnbi1jb21wYXJlIiwKKyAgICAiLVduby1mbG9h
dC1jb252ZXJzaW9uIiwKKyAgICAiLVduby1mbG9hdC1lcXVhbCIsCisgICAgIi1Xbm8tZm9ybWF0
LW5vbmxpdGVyYWwiLAorICAgICItV25vLWdjYy1jb21wYXQiLAorICAgICItV25vLWdsb2JhbC1j
b25zdHJ1Y3RvcnMiLAorICAgICItV25vLWV4aXQtdGltZS1kZXN0cnVjdG9ycyIsCisgICAgIi1X
bm8tbmVzdGVkLWFub24tdHlwZXMiLAorICAgICItV25vLW5vbi1tb2R1bGFyLWluY2x1ZGUtaW4t
bW9kdWxlIiwKKyAgICAiLVduby1vbGQtc3R5bGUtY2FzdCIsCisgICAgIi1Xbm8tcmFuZ2UtbG9v
cC1hbmFseXNpcyIsCisgICAgIi1Xbm8tcmVzZXJ2ZWQtaWQtbWFjcm8iLAorICAgICItV25vLXNo
b3J0ZW4tNjQtdG8tMzIiLAorICAgICItV25vLXN3aXRjaC1lbnVtIiwKKyAgICAiLVduby10aHJl
YWQtc2FmZXR5LW5lZ2F0aXZlIiwKKyAgICAiLVduby11bmtub3duLXdhcm5pbmctb3B0aW9uIiwK
KyAgICAiLVduby11bnJlYWNoYWJsZS1jb2RlIiwKKyAgICAiLVduby11bnVzZWQtbWFjcm9zIiwK
KyAgICAiLVduby13ZWFrLXZ0YWJsZXMiLAorICAgICItV25vLXplcm8tYXMtbnVsbC1wb2ludGVy
LWNvbnN0YW50IiwKKyAgICAiLVdiaXRmaWVsZC1lbnVtLWNvbnZlcnNpb24iLAorICAgICItV2Jv
b2wtY29udmVyc2lvbiIsCisgICAgIi1XY29uc3RhbnQtY29udmVyc2lvbiIsCisgICAgIi1XZW51
bS1jb252ZXJzaW9uIiwKKyAgICAiLVdpbnQtY29udmVyc2lvbiIsCisgICAgIi1XbGl0ZXJhbC1j
b252ZXJzaW9uIiwKKyAgICAiLVdub24tbGl0ZXJhbC1udWxsLWNvbnZlcnNpb24iLAorICAgICIt
V251bGwtY29udmVyc2lvbiIsCisgICAgIi1Xb2JqYy1saXRlcmFsLWNvbnZlcnNpb24iLAorICAg
ICItV25vLXNpZ24tY29udmVyc2lvbiIsCisgICAgIi1Xc3RyaW5nLWNvbnZlcnNpb24iLAorXQor
CitBQlNMX0xMVk1fVEVTVF9GTEFHUyA9IFsKKyAgICAiLVduby1jOTktZXh0ZW5zaW9ucyIsCisg
ICAgIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiLAorICAgICItV25vLW1pc3Npbmctbm9y
ZXR1cm4iLAorICAgICItV25vLW1pc3NpbmctcHJvdG90eXBlcyIsCisgICAgIi1Xbm8tbWlzc2lu
Zy12YXJpYWJsZS1kZWNsYXJhdGlvbnMiLAorICAgICItV25vLW51bGwtY29udmVyc2lvbiIsCisg
ICAgIi1Xbm8tc2hhZG93IiwKKyAgICAiLVduby1zaGlmdC1zaWduLW92ZXJmbG93IiwKKyAgICAi
LVduby1zaWduLWNvbXBhcmUiLAorICAgICItV25vLXVudXNlZC1mdW5jdGlvbiIsCisgICAgIi1X
bm8tdW51c2VkLW1lbWJlci1mdW5jdGlvbiIsCisgICAgIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIs
CisgICAgIi1Xbm8tdW51c2VkLXByaXZhdGUtZmllbGQiLAorICAgICItV25vLXVudXNlZC10ZW1w
bGF0ZSIsCisgICAgIi1Xbm8tdXNlZC1idXQtbWFya2VkLXVudXNlZCIsCisgICAgIi1Xbm8temVy
by1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQiLAorICAgICItV25vLWdudS16ZXJvLXZhcmlhZGlj
LW1hY3JvLWFyZ3VtZW50cyIsCitdCisKK0FCU0xfTVNWQ19FWENFUFRJT05TX0ZMQUdTID0gWwor
ICAgICIvVV9IQVNfRVhDRVBUSU9OUyIsCisgICAgIi9EX0hBU19FWENFUFRJT05TPTEiLAorICAg
ICIvRUhzYyIsCitdCisKK0FCU0xfTVNWQ19GTEFHUyA9IFsKKyAgICAiL1czIiwKKyAgICAiL0RO
T01JTk1BWCIsCisgICAgIi9EV0lOMzJfTEVBTl9BTkRfTUVBTiIsCisgICAgIi9EX0NSVF9TRUNV
UkVfTk9fV0FSTklOR1MiLAorICAgICIvRF9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTIiwKKyAgICAi
L0RfRU5BQkxFX0VYVEVOREVEX0FMSUdORURfU1RPUkFHRSIsCisgICAgIi93ZDQwMDUiLAorICAg
ICIvd2Q0MDY4IiwKKyAgICAiL3dkNDE4MCIsCisgICAgIi93ZDQyNDQiLAorICAgICIvd2Q0MjY3
IiwKKyAgICAiL3dkNDUwMyIsCisgICAgIi93ZDQ4MDAiLAorXQorCitBQlNMX01TVkNfTElOS09Q
VFMgPSBbCisgICAgIi1pZ25vcmU6NDIyMSIsCitdCisKK0FCU0xfTVNWQ19URVNUX0ZMQUdTID0g
WworICAgICIvd2Q0MDE4IiwKKyAgICAiL3dkNDEwMSIsCisgICAgIi93ZDQ1MDMiLAorICAgICIv
d2Q0OTk2IiwKKyAgICAiL0ROT01JTk1BWCIsCitdCisKK0FCU0xfUkFORE9NX0hXQUVTX0FSTTMy
X0ZMQUdTID0gWworICAgICItbWZwdT1uZW9uIiwKK10KKworQUJTTF9SQU5ET01fSFdBRVNfQVJN
NjRfRkxBR1MgPSBbCisgICAgIi1tYXJjaD1hcm12OC1hK2NyeXB0byIsCitdCisKK0FCU0xfUkFO
RE9NX0hXQUVTX01TVkNfWDY0X0ZMQUdTID0gWworICAgICIvTzIiLAorICAgICIvT2IyIiwKK10K
KworQUJTTF9SQU5ET01fSFdBRVNfWDY0X0ZMQUdTID0gWworICAgICItbWFlcyIsCisgICAgIi1t
c3NlNC4xIiwKK10KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzL2NvbmZpZ3VyZV9jb3B0cy5iemwg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb3B0cy9jb25maWd1cmVfY29wdHMuYnpsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjNGVmZTc3YzIx
YTE5YzMwOGE3ZmZhMGEzZTVlN2M0NTRmNDAxZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b3B0cy9jb25maWd1cmVfY29wdHMuYnpsCkBAIC0wLDAgKzEsODkgQEAKKyIiImFic2wgc3BlY2lm
aWMgY29wdHMuCisKK1RoaXMgZmlsZSBzaW1wbHkgc2VsZWN0cyB0aGUgY29ycmVjdCBvcHRpb25z
IGZyb20gdGhlIGdlbmVyYXRlZCBmaWxlcy4gIFRvCitjaGFuZ2UgQWJzZWlsIGNvcHRzLCBlZGl0
IGFic2wvY29wdHMvY29wdHMucHkKKyIiIgorCitsb2FkKAorICAgICIvL2Fic2w6Y29wdHMvR0VO
RVJBVEVEX2NvcHRzLmJ6bCIsCisgICAgIkFCU0xfR0NDX0VYQ0VQVElPTlNfRkxBR1MiLAorICAg
ICJBQlNMX0dDQ19GTEFHUyIsCisgICAgIkFCU0xfR0NDX1RFU1RfRkxBR1MiLAorICAgICJBQlNM
X0xMVk1fRVhDRVBUSU9OU19GTEFHUyIsCisgICAgIkFCU0xfTExWTV9GTEFHUyIsCisgICAgIkFC
U0xfTExWTV9URVNUX0ZMQUdTIiwKKyAgICAiQUJTTF9NU1ZDX0VYQ0VQVElPTlNfRkxBR1MiLAor
ICAgICJBQlNMX01TVkNfRkxBR1MiLAorICAgICJBQlNMX01TVkNfTElOS09QVFMiLAorICAgICJB
QlNMX01TVkNfVEVTVF9GTEFHUyIsCisgICAgIkFCU0xfUkFORE9NX0hXQUVTX0FSTTMyX0ZMQUdT
IiwKKyAgICAiQUJTTF9SQU5ET01fSFdBRVNfQVJNNjRfRkxBR1MiLAorICAgICJBQlNMX1JBTkRP
TV9IV0FFU19NU1ZDX1g2NF9GTEFHUyIsCisgICAgIkFCU0xfUkFORE9NX0hXQUVTX1g2NF9GTEFH
UyIsCispCisKK0FCU0xfREVGQVVMVF9DT1BUUyA9IHNlbGVjdCh7CisgICAgIi8vYWJzbDp3aW5k
b3dzIjogQUJTTF9NU1ZDX0ZMQUdTLAorICAgICIvL2Fic2w6bGx2bV9jb21waWxlciI6IEFCU0xf
TExWTV9GTEFHUywKKyAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBBQlNMX0dDQ19GTEFHUywK
K30pCisKKyMgaW4gYWJzZW5jZSBvZiBtb2R1bGVzICgtLWNvbXBpbGVyPWdjYyBvciAtYyBvcHQp
LCBjY190ZXN0cyBsZWFrIHRoZWlyIGNvcHRzCisjIHRvIHRoZWlyIChpbmNsdWRlZCBoZWFkZXIp
IGRlcGVuZGVuY2llcyBhbmQgZmFpbCB0byBidWlsZCBvdXRzaWRlIGFic2wKK0FCU0xfVEVTVF9D
T1BUUyA9IEFCU0xfREVGQVVMVF9DT1BUUyArIHNlbGVjdCh7CisgICAgIi8vYWJzbDp3aW5kb3dz
IjogQUJTTF9NU1ZDX1RFU1RfRkxBR1MsCisgICAgIi8vYWJzbDpsbHZtX2NvbXBpbGVyIjogQUJT
TF9MTFZNX1RFU1RfRkxBR1MsCisgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogQUJTTF9HQ0Nf
VEVTVF9GTEFHUywKK30pCisKK0FCU0xfRVhDRVBUSU9OU19GTEFHID0gc2VsZWN0KHsKKyAgICAi
Ly9hYnNsOndpbmRvd3MiOiBBQlNMX01TVkNfRVhDRVBUSU9OU19GTEFHUywKKyAgICAiLy9hYnNs
Omxsdm1fY29tcGlsZXIiOiBBQlNMX0xMVk1fRVhDRVBUSU9OU19GTEFHUywKKyAgICAiLy9jb25k
aXRpb25zOmRlZmF1bHQiOiBBQlNMX0dDQ19FWENFUFRJT05TX0ZMQUdTLAorfSkKKworQUJTTF9F
WENFUFRJT05TX0ZMQUdfTElOS09QVFMgPSBzZWxlY3QoeworICAgICIvL2NvbmRpdGlvbnM6ZGVm
YXVsdCI6IFtdLAorfSkKKworQUJTTF9ERUZBVUxUX0xJTktPUFRTID0gc2VsZWN0KHsKKyAgICAi
Ly9hYnNsOndpbmRvd3MiOiBBQlNMX01TVkNfTElOS09QVFMsCisgICAgIi8vY29uZGl0aW9uczpk
ZWZhdWx0IjogW10sCit9KQorCisjIEFCU0xfUkFORE9NX1JBTkRFTl9DT1BUUyBibGF6ZSBjb3B0
cyBmbGFncyB3aGljaCBhcmUgcmVxdWlyZWQgYnkgZWFjaAorIyBlbnZpcm9ubWVudCB0byBidWls
ZCBhbiBhY2NlbGVyYXRlZCBSYW5kZW5Id0FlcyBsaWJyYXJ5LgorQUJTTF9SQU5ET01fUkFOREVO
X0NPUFRTID0gc2VsZWN0KHsKKyAgICAjIEFQUExFCisgICAgIjpjcHVfZGFyd2luX3g4Nl82NCI6
IEFCU0xfUkFORE9NX0hXQUVTX1g2NF9GTEFHUywKKyAgICAiOmNwdV9kYXJ3aW4iOiBBQlNMX1JB
TkRPTV9IV0FFU19YNjRfRkxBR1MsCisgICAgIjpjcHVfeDY0X3dpbmRvd3NfbXN2YyI6IEFCU0xf
UkFORE9NX0hXQUVTX01TVkNfWDY0X0ZMQUdTLAorICAgICI6Y3B1X3g2NF93aW5kb3dzIjogQUJT
TF9SQU5ET01fSFdBRVNfTVNWQ19YNjRfRkxBR1MsCisgICAgIjpjcHVfaGFzd2VsbCI6IEFCU0xf
UkFORE9NX0hXQUVTX1g2NF9GTEFHUywKKyAgICAiOmNwdV9wcGMiOiBbIi1tY3J5cHRvIl0sCisK
KyAgICAjIFN1cHBvcnRlZCBieSBkZWZhdWx0IG9yIHVuc3VwcG9ydGVkLgorICAgICIvL2NvbmRp
dGlvbnM6ZGVmYXVsdCI6IFtdLAorfSkKKworIyBhYnNsX3JhbmRvbV9yYW5kZW5fY29wdHNfaW5p
dDoKKyMgIEluaXRpYWxpemUgdGhlIGNvbmZpZyB0YXJnZXRzIGJhc2VkIG9uIGNwdSwgb3MsIGV0
Yy4gdXNlZCB0byBzZWxlY3QKKyMgIHRoZSByZXF1aXJlZCB2YWx1ZXMgZm9yIEFCU0xfUkFORE9N
X1JBTkRFTl9DT1BUUworZGVmIGFic2xfcmFuZG9tX3JhbmRlbl9jb3B0c19pbml0KCk6CisgICAg
IiIiSW5pdGlhbGl6ZSB0aGUgY29uZmlnX3NldHRpbmdzIHVzZWQgYnkgQUJTTF9SQU5ET01fUkFO
REVOX0NPUFRTLiIiIgorCisgICAgIyBDUFUgY29uZmlncy4KKyAgICAjIFRoZXNlIGNvbmZpZ3Mg
aGF2ZSBjb25zaXN0ZW50IGZsYWdzIHRvIGVuYWJsZSBIV0FFUyBpbnRzcnVjdGlvbnMuCisgICAg
Y3B1X2NvbmZpZ3MgPSBbCisgICAgICAgICJwcGMiLAorICAgICAgICAiaGFzd2VsbCIsCisgICAg
ICAgICJkYXJ3aW5feDg2XzY0IiwKKyAgICAgICAgImRhcndpbiIsCisgICAgICAgICJ4NjRfd2lu
ZG93c19tc3ZjIiwKKyAgICAgICAgIng2NF93aW5kb3dzIiwKKyAgICBdCisgICAgZm9yIGNwdSBp
biBjcHVfY29uZmlnczoKKyAgICAgICAgbmF0aXZlLmNvbmZpZ19zZXR0aW5nKAorICAgICAgICAg
ICAgbmFtZSA9ICJjcHVfJXMiICUgY3B1LAorICAgICAgICAgICAgdmFsdWVzID0geyJjcHUiOiBj
cHV9LAorICAgICAgICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9jb3B0cy5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvcHRzL2NvcHRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2OGFiY2ViY2MzMzQ2OTM5NjY0OGQwMGZhMDRk
YWFmYTYwYjhkNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy9jb3B0cy5weQpAQCAt
MCwwICsxLDIxNCBAQAorIiIiQWJzZWlsIGNvbXBpbGVyIG9wdGlvbnMuCisKK1RoaXMgaXMgdGhl
IHNvdXJjZSBvZiB0cnV0aCBmb3IgQWJzZWlsIGNvbXBpbGVyIG9wdGlvbnMuICBUbyBtb2RpZnkg
QWJzZWlsCitjb21waWxhdGlvbiBvcHRpb25zOgorCisgICgxKSBFZGl0IHRoZSBhcHByb3ByaWF0
ZSBsaXN0IGluIHRoaXMgZmlsZSBiYXNlZCBvbiB0aGUgcGxhdGZvcm0gdGhlIGZsYWcgaXMKKyAg
ICAgIG5lZWRlZCBvbi4KKyAgKDIpIFJ1biBgPHBhdGhfdG9fYWJzbD4vY29wdHMvZ2VuZXJhdGVf
Y29wdHMucHlgLgorCitUaGUgZ2VuZXJhdGVkIGNvcHRzIGFyZSBjb25zdW1lZCBieSBjb25maWd1
cmVfY29wdHMuYnpsIGFuZAorQWJzZWlsQ29uZmlndXJlQ29wdHMuY21ha2UuCisiIiIKKworIyAv
V2FsbCB3aXRoIG1zdmMgaW5jbHVkZXMgdW5oZWxwZnVsIHdhcm5pbmdzIHN1Y2ggYXMgQzQ3MTEs
IEM0NzEwLCAuLi4KK01TVkNfQklHX1dBUk5JTkdfRkxBR1MgPSBbCisgICAgIi9XMyIsCitdCisK
K0xMVk1fQklHX1dBUk5JTkdfRkxBR1MgPSBbCisgICAgIi1XYWxsIiwKKyAgICAiLVdleHRyYSIs
CisgICAgIi1XZXZlcnl0aGluZyIsCitdCisKKyMgRG9jcyBvbiBzaW5nbGUgZmxhZ3MgaXMgcHJl
Y2VkZWQgYnkgYSBjb21tZW50LgorIyBEb2NzIG9uIGdyb3VwcyBvZiBmbGFncyBpcyBwcmVjZWRl
ZCBieSAjIyMuCitMTFZNX0RJU0FCTEVfV0FSTklOR1NfRkxBR1MgPSBbCisgICAgIyBBYnNlaWwg
ZG9lcyBub3Qgc3VwcG9ydCBDKys5OAorICAgICItV25vLWMrKzk4LWNvbXBhdC1wZWRhbnRpYyIs
CisgICAgIyBUdXJucyBvZmYgYWxsIGltcGxpY2l0IGNvbnZlcnNpb24gd2FybmluZ3MuIE1vc3Qg
YXJlIHJlLWVuYWJsZWQgYmVsb3cuCisgICAgIi1Xbm8tY29udmVyc2lvbiIsCisgICAgIi1Xbm8t
Y292ZXJlZC1zd2l0Y2gtZGVmYXVsdCIsCisgICAgIi1Xbm8tZGVwcmVjYXRlZCIsCisgICAgIi1X
bm8tZGlzYWJsZWQtbWFjcm8tZXhwYW5zaW9uIiwKKyAgICAiLVduby1kb3VibGUtcHJvbW90aW9u
IiwKKyAgICAjIyMKKyAgICAjIFR1cm5lZCBvZmYgYXMgdGhleSBpbmNsdWRlIHZhbGlkIEMrKyBj
b2RlLgorICAgICItV25vLWNvbW1hIiwKKyAgICAiLVduby1leHRyYS1zZW1pIiwKKyAgICAiLVdu
by1leHRyYS1zZW1pLXN0bXQiLAorICAgICItV25vLXBhY2tlZCIsCisgICAgIi1Xbm8tcGFkZGVk
IiwKKyAgICAjIyMKKyAgICAjIEdvb2dsZSBzdHlsZSBkb2VzIG5vdCB1c2UgdW5zaWduZWQgaW50
ZWdlcnMsIHRob3VnaCBTVEwgY29udGFpbmVycworICAgICMgaGF2ZSB1bnNpZ25lZCB0eXBlcy4K
KyAgICAiLVduby1zaWduLWNvbXBhcmUiLAorICAgICMjIworICAgICItV25vLWZsb2F0LWNvbnZl
cnNpb24iLAorICAgICItV25vLWZsb2F0LWVxdWFsIiwKKyAgICAiLVduby1mb3JtYXQtbm9ubGl0
ZXJhbCIsCisgICAgIyBUb28gYWdncmVzc2l2ZTogd2FybnMgb24gQ2xhbmcgZXh0ZW5zaW9ucyBl
bmNsb3NlZCBpbiBDbGFuZy1vbmx5CisgICAgIyBjb21waWxhdGlvbiBwYXRocy4KKyAgICAiLVdu
by1nY2MtY29tcGF0IiwKKyAgICAjIyMKKyAgICAjIFNvbWUgaW50ZXJuYWwgZ2xvYmFscyBhcmUg
bmVjZXNzYXJ5LiBEb24ndCBkbyB0aGlzIGF0IGhvbWUuCisgICAgIi1Xbm8tZ2xvYmFsLWNvbnN0
cnVjdG9ycyIsCisgICAgIi1Xbm8tZXhpdC10aW1lLWRlc3RydWN0b3JzIiwKKyAgICAjIyMKKyAg
ICAiLVduby1uZXN0ZWQtYW5vbi10eXBlcyIsCisgICAgIi1Xbm8tbm9uLW1vZHVsYXItaW5jbHVk
ZS1pbi1tb2R1bGUiLAorICAgICItV25vLW9sZC1zdHlsZS1jYXN0IiwKKyAgICAjIFdhcm5zIG9u
IHByZWZlcnJlZCB1c2FnZSBvZiBub24tUE9EIHR5cGVzIHN1Y2ggYXMgc3RyaW5nX3ZpZXcKKyAg
ICAiLVduby1yYW5nZS1sb29wLWFuYWx5c2lzIiwKKyAgICAiLVduby1yZXNlcnZlZC1pZC1tYWNy
byIsCisgICAgIi1Xbm8tc2hvcnRlbi02NC10by0zMiIsCisgICAgIi1Xbm8tc3dpdGNoLWVudW0i
LAorICAgICItV25vLXRocmVhZC1zYWZldHktbmVnYXRpdmUiLAorICAgICItV25vLXVua25vd24t
d2FybmluZy1vcHRpb24iLAorICAgICItV25vLXVucmVhY2hhYmxlLWNvZGUiLAorICAgICMgQ2F1
c2VzIHdhcm5pbmdzIG9uIGluY2x1ZGUgZ3VhcmRzCisgICAgIi1Xbm8tdW51c2VkLW1hY3JvcyIs
CisgICAgIi1Xbm8td2Vhay12dGFibGVzIiwKKyAgICAjIENhdXNlcyB3YXJuaW5ncyBvbiB1c2Fn
ZSBvZiB0eXBlcy9jb21wYXJlLmggY29tcGFyaXNvbiBvcGVyYXRvcnMuCisgICAgIi1Xbm8temVy
by1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQiLAorICAgICMjIworICAgICMgSW1wbGljaXQgY29u
dmVyc2lvbiB3YXJuaW5ncyB0dXJuZWQgb2ZmIGJ5IC1Xbm8tY29udmVyc2lvbgorICAgICMgd2hp
Y2ggYXJlIHJlLWVuYWJsZWQgYmVsb3cuCisgICAgIi1XYml0ZmllbGQtZW51bS1jb252ZXJzaW9u
IiwKKyAgICAiLVdib29sLWNvbnZlcnNpb24iLAorICAgICItV2NvbnN0YW50LWNvbnZlcnNpb24i
LAorICAgICItV2VudW0tY29udmVyc2lvbiIsCisgICAgIi1XaW50LWNvbnZlcnNpb24iLAorICAg
ICItV2xpdGVyYWwtY29udmVyc2lvbiIsCisgICAgIi1Xbm9uLWxpdGVyYWwtbnVsbC1jb252ZXJz
aW9uIiwKKyAgICAiLVdudWxsLWNvbnZlcnNpb24iLAorICAgICItV29iamMtbGl0ZXJhbC1jb252
ZXJzaW9uIiwKKyAgICAiLVduby1zaWduLWNvbnZlcnNpb24iLAorICAgICItV3N0cmluZy1jb252
ZXJzaW9uIiwKK10KKworTExWTV9URVNUX0RJU0FCTEVfV0FSTklOR1NfRkxBR1MgPSBbCisgICAg
Ii1Xbm8tYzk5LWV4dGVuc2lvbnMiLAorICAgICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25z
IiwKKyAgICAiLVduby1taXNzaW5nLW5vcmV0dXJuIiwKKyAgICAiLVduby1taXNzaW5nLXByb3Rv
dHlwZXMiLAorICAgICItV25vLW1pc3NpbmctdmFyaWFibGUtZGVjbGFyYXRpb25zIiwKKyAgICAi
LVduby1udWxsLWNvbnZlcnNpb24iLAorICAgICItV25vLXNoYWRvdyIsCisgICAgIi1Xbm8tc2hp
ZnQtc2lnbi1vdmVyZmxvdyIsCisgICAgIi1Xbm8tc2lnbi1jb21wYXJlIiwKKyAgICAiLVduby11
bnVzZWQtZnVuY3Rpb24iLAorICAgICItV25vLXVudXNlZC1tZW1iZXItZnVuY3Rpb24iLAorICAg
ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorICAgICItV25vLXVudXNlZC1wcml2YXRlLWZpZWxk
IiwKKyAgICAiLVduby11bnVzZWQtdGVtcGxhdGUiLAorICAgICItV25vLXVzZWQtYnV0LW1hcmtl
ZC11bnVzZWQiLAorICAgICItV25vLXplcm8tYXMtbnVsbC1wb2ludGVyLWNvbnN0YW50IiwKKyAg
ICAjIGd0ZXN0IGRlcGVuZHMgb24gdGhpcyBHTlUgZXh0ZW5zaW9uIGJlaW5nIG9mZmVyZWQuCisg
ICAgIi1Xbm8tZ251LXplcm8tdmFyaWFkaWMtbWFjcm8tYXJndW1lbnRzIiwKK10KKworTVNWQ19T
VFlMRV9FWENFUFRJT05TX0ZMQUdTID0gWworICAgICIvVV9IQVNfRVhDRVBUSU9OUyIsCisgICAg
Ii9EX0hBU19FWENFUFRJT05TPTEiLAorICAgICIvRUhzYyIKK10KKworTVNWQ19ERUZJTkVTID0g
WworICAgICIvRE5PTUlOTUFYIiwgICMgRG9uJ3QgZGVmaW5lIG1pbiBhbmQgbWF4IG1hY3JvcyAo
d2luZG93cy5oKQorICAgICMgRG9uJ3QgYmxvYXQgbmFtZXNwYWNlIHdpdGggaW5jb21wYXRpYmxl
IHdpbnNvY2sgdmVyc2lvbnMuCisgICAgIi9EV0lOMzJfTEVBTl9BTkRfTUVBTiIsCisgICAgIyBE
b24ndCB3YXJuIGFib3V0IHVzYWdlIG9mIGluc2VjdXJlIEMgZnVuY3Rpb25zLgorICAgICIvRF9D
UlRfU0VDVVJFX05PX1dBUk5JTkdTIiwKKyAgICAiL0RfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUyIs
CisgICAgIyBJbnRyb2R1Y2VkIGluIFZTIDIwMTcgMTUuOCwgYWxsb3cgb3ZlcmFsaWduZWQgdHlw
ZXMgaW4gYWxpZ25lZF9zdG9yYWdlCisgICAgIi9EX0VOQUJMRV9FWFRFTkRFRF9BTElHTkVEX1NU
T1JBR0UiLAorXQorCitDT1BUX1ZBUlMgPSB7CisgICAgIkFCU0xfR0NDX0ZMQUdTIjogWworICAg
ICAgICAiLVdhbGwiLAorICAgICAgICAiLVdleHRyYSIsCisgICAgICAgICItV2Nhc3QtcXVhbCIs
CisgICAgICAgICItV2NvbnZlcnNpb24tbnVsbCIsCisgICAgICAgICItV21pc3NpbmctZGVjbGFy
YXRpb25zIiwKKyAgICAgICAgIi1Xb3Zlcmxlbmd0aC1zdHJpbmdzIiwKKyAgICAgICAgIi1XcG9p
bnRlci1hcml0aCIsCisgICAgICAgICItV3VudXNlZC1sb2NhbC10eXBlZGVmcyIsCisgICAgICAg
ICItV3VudXNlZC1yZXN1bHQiLAorICAgICAgICAiLVd2YXJhcmdzIiwKKyAgICAgICAgIi1Xdmxh
IiwgICMgdmFyaWFibGUtbGVuZ3RoIGFycmF5CisgICAgICAgICItV3dyaXRlLXN0cmluZ3MiLAor
ICAgICAgICAjIGdjYy00LnggaGFzIHNwdXJpb3VzIG1pc3NpbmcgZmllbGQgaW5pdGlhbGl6ZXIg
d2FybmluZ3MuCisgICAgICAgICMgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1
Zy5jZ2k/aWQ9MzY3NTAKKyAgICAgICAgIyBSZW1vdmUgd2hlbiBnY2MtNC54IGlzIG5vIGxvbmdl
ciBzdXBwb3J0ZWQuCisgICAgICAgICItV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIiwK
KyAgICAgICAgIyBHb29nbGUgc3R5bGUgZG9lcyBub3QgdXNlIHVuc2lnbmVkIGludGVnZXJzLCB0
aG91Z2ggU1RMIGNvbnRhaW5lcnMKKyAgICAgICAgIyBoYXZlIHVuc2lnbmVkIHR5cGVzLgorICAg
ICAgICAiLVduby1zaWduLWNvbXBhcmUiLAorICAgIF0sCisgICAgIkFCU0xfR0NDX1RFU1RfRkxB
R1MiOiBbCisgICAgICAgICItV25vLWNvbnZlcnNpb24tbnVsbCIsCisgICAgICAgICItV25vLWRl
cHJlY2F0ZWQtZGVjbGFyYXRpb25zIiwKKyAgICAgICAgIi1Xbm8tbWlzc2luZy1kZWNsYXJhdGlv
bnMiLAorICAgICAgICAiLVduby1zaWduLWNvbXBhcmUiLAorICAgICAgICAiLVduby11bnVzZWQt
ZnVuY3Rpb24iLAorICAgICAgICAiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKKyAgICAgICAgIi1X
bm8tdW51c2VkLXByaXZhdGUtZmllbGQiLAorICAgIF0sCisgICAgIkFCU0xfR0NDX0VYQ0VQVElP
TlNfRkxBR1MiOiBbIi1mZXhjZXB0aW9ucyJdLAorICAgICJBQlNMX0xMVk1fRkxBR1MiOgorICAg
ICAgICBMTFZNX0JJR19XQVJOSU5HX0ZMQUdTICsgTExWTV9ESVNBQkxFX1dBUk5JTkdTX0ZMQUdT
LAorICAgICJBQlNMX0xMVk1fVEVTVF9GTEFHUyI6CisgICAgICAgIExMVk1fVEVTVF9ESVNBQkxF
X1dBUk5JTkdTX0ZMQUdTLAorICAgICJBQlNMX0xMVk1fRVhDRVBUSU9OU19GTEFHUyI6IFsiLWZl
eGNlcHRpb25zIl0sCisgICAgIkFCU0xfQ0xBTkdfQ0xfRkxBR1MiOgorICAgICAgICAoTVNWQ19C
SUdfV0FSTklOR19GTEFHUyArIExMVk1fRElTQUJMRV9XQVJOSU5HU19GTEFHUyArIE1TVkNfREVG
SU5FUyksCisgICAgIkFCU0xfQ0xBTkdfQ0xfVEVTVF9GTEFHUyI6CisgICAgICAgIExMVk1fVEVT
VF9ESVNBQkxFX1dBUk5JTkdTX0ZMQUdTLAorICAgICJBQlNMX0NMQU5HX0NMX0VYQ0VQVElPTlNf
RkxBR1MiOgorICAgICAgICBNU1ZDX1NUWUxFX0VYQ0VQVElPTlNfRkxBR1MsCisgICAgIkFCU0xf
TVNWQ19GTEFHUyI6CisgICAgICAgIE1TVkNfQklHX1dBUk5JTkdfRkxBR1MgKyBNU1ZDX0RFRklO
RVMgKyBbCisgICAgICAgICAgICAiL3dkNDAwNSIsICAjIG1hY3JvLXJlZGVmaW5pdGlvbgorICAg
ICAgICAgICAgIi93ZDQwNjgiLCAgIyB1bmtub3duIHByYWdtYQorICAgICAgICAgICAgIyBxdWFs
aWZpZXIgYXBwbGllZCB0byBmdW5jdGlvbiB0eXBlIGhhcyBubyBtZWFuaW5nOyBpZ25vcmVkCisg
ICAgICAgICAgICAiL3dkNDE4MCIsCisgICAgICAgICAgICAjIGNvbnZlcnNpb24gZnJvbSAndHlw
ZTEnIHRvICd0eXBlMicsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQorICAgICAgICAgICAgIi93ZDQy
NDQiLAorICAgICAgICAgICAgIyBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUnLCBw
b3NzaWJsZSBsb3NzIG9mIGRhdGEKKyAgICAgICAgICAgICIvd2Q0MjY3IiwKKyAgICAgICAgICAg
ICMgVGhlIGRlY29yYXRlZCBuYW1lIHdhcyBsb25nZXIgdGhhbiB0aGUgY29tcGlsZXIgbGltaXQK
KyAgICAgICAgICAgICIvd2Q0NTAzIiwKKyAgICAgICAgICAgICMgZm9yY2luZyB2YWx1ZSB0byBi
b29sICd0cnVlJyBvciAnZmFsc2UnIChwZXJmb3JtYW5jZSB3YXJuaW5nKQorICAgICAgICAgICAg
Ii93ZDQ4MDAiLAorICAgICAgICBdLAorICAgICJBQlNMX01TVkNfVEVTVF9GTEFHUyI6IFsKKyAg
ICAgICAgIi93ZDQwMTgiLCAgIyBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2gKKyAgICAgICAgIi93
ZDQxMDEiLCAgIyB1bnJlZmVyZW5jZWQgbG9jYWwgdmFyaWFibGUKKyAgICAgICAgIi93ZDQ1MDMi
LCAgIyBkZWNvcmF0ZWQgbmFtZSBsZW5ndGggZXhjZWVkZWQsIG5hbWUgd2FzIHRydW5jYXRlZAor
ICAgICAgICAiL3dkNDk5NiIsICAjIHVzZSBvZiBkZXByZWNhdGVkIHN5bWJvbAorICAgICAgICAi
L0ROT01JTk1BWCIsICAjIGRpc2FibGUgdGhlIG1pbigpIGFuZCBtYXgoKSBtYWNyb3MgZnJvbSA8
d2luZG93cy5oPgorICAgIF0sCisgICAgIkFCU0xfTVNWQ19FWENFUFRJT05TX0ZMQUdTIjoKKyAg
ICAgICAgTVNWQ19TVFlMRV9FWENFUFRJT05TX0ZMQUdTLAorICAgICJBQlNMX01TVkNfTElOS09Q
VFMiOiBbCisgICAgICAgICMgT2JqZWN0IGZpbGUgZG9lc24ndCBleHBvcnQgYW55IHByZXZpb3Vz
bHkgdW5kZWZpbmVkIHN5bWJvbHMKKyAgICAgICAgIi1pZ25vcmU6NDIyMSIsCisgICAgXSwKKyAg
ICAjICJIV0FFUyIgaXMgYW4gYWJicmV2aWF0aW9uIGZvciAiaGFyZHdhcmUgQUVTIiAoQUVTIC0g
QWR2YW5jZWQgRW5jcnlwdGlvbgorICAgICMgU3RhbmRhcmQpLiBUaGVzZSBmbGFncyBhcmUgdXNl
ZCBmb3IgZGV0ZWN0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSB0YXJnZXQKKyAgICAjIGFyY2hpdGVj
dHVyZSBoYXMgaGFyZHdhcmUgc3VwcG9ydCBmb3IgQUVTIGluc3RydWN0aW9ucyB3aGljaCBjYW4g
YmUgdXNlZAorICAgICMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBzb21lIHJhbmRvbSBiaXQg
Z2VuZXJhdG9ycy4KKyAgICAiQUJTTF9SQU5ET01fSFdBRVNfQVJNNjRfRkxBR1MiOiBbIi1tYXJj
aD1hcm12OC1hK2NyeXB0byJdLAorICAgICJBQlNMX1JBTkRPTV9IV0FFU19BUk0zMl9GTEFHUyI6
IFsiLW1mcHU9bmVvbiJdLAorICAgICJBQlNMX1JBTkRPTV9IV0FFU19YNjRfRkxBR1MiOiBbCisg
ICAgICAgICItbWFlcyIsCisgICAgICAgICItbXNzZTQuMSIsCisgICAgXSwKKyAgICAiQUJTTF9S
QU5ET01fSFdBRVNfTVNWQ19YNjRfRkxBR1MiOiBbCisgICAgICAgICIvTzIiLCAgIyBNYXhpbWl6
ZSBzcGVlZAorICAgICAgICAiL09iMiIsICAjIEFnZ3Jlc3NpdmUgaW5saW5pbmcKKyAgICBdLAor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMvZ2VuZXJhdGVfY29wdHMucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0
cy9nZW5lcmF0ZV9jb3B0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTVkYzlmYWQyOTUxYWJjZTc3MTZkNmYy
YzIyZGI3NzdkZjFlODJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMvZ2VuZXJhdGVf
Y29wdHMucHkKQEAgLTAsMCArMSwxMDkgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisiIiJHZW5lcmF0
ZSBBYnNlaWwgY29tcGlsZSBjb21waWxlIG9wdGlvbiBjb25maWdzLgorCitVc2FnZTogPHBhdGhf
dG9fYWJzbD4vY29wdHMvZ2VuZXJhdGVfY29wdHMucHkKKworVGhlIGNvbmZpZ3MgYXJlIGdlbmVy
YXRlZCBmcm9tIGNvcHRzLnB5LgorIiIiCisKK2Zyb20gb3MgaW1wb3J0IHBhdGgKK2ltcG9ydCBz
eXMKK2Zyb20gY29wdHMgaW1wb3J0IENPUFRfVkFSUworCisKKyMgSGVscGVyIGZ1bmN0aW9ucwor
ZGVmIGZpbGVfaGVhZGVyX2xpbmVzKCk6CisgIHJldHVybiBbCisgICAgICAiR0VORVJBVEVEISBE
TyBOT1QgTUFOVUFMTFkgRURJVCBUSElTIEZJTEUuIiwgIiIsCisgICAgICAiKDEpIEVkaXQgYWJz
bC9jb3B0cy9jb3B0cy5weS4iLAorICAgICAgIigyKSBSdW4gYHB5dGhvbiA8cGF0aF90b19hYnNs
Pi9jb3B0cy9nZW5lcmF0ZV9jb3B0cy5weWAuIgorICBdCisKKworZGVmIGZsYXR0ZW4oKmxpc3Rz
KToKKyAgcmV0dXJuIFtpdGVtIGZvciBzdWJsaXN0IGluIGxpc3RzIGZvciBpdGVtIGluIHN1Ymxp
c3RdCisKKworZGVmIHJlbGF0aXZlX2ZpbGVuYW1lKGZpbGVuYW1lKToKKyAgcmV0dXJuIHBhdGgu
am9pbihwYXRoLmRpcm5hbWUoX19maWxlX18pLCBmaWxlbmFtZSkKKworCisjIFN0eWxlIGNsYXNz
ZXMuICBUaGVzZSBjb250YWluIGFsbCB0aGUgc3ludGFjdGljIHN0eWxpbmcgbmVlZGVkIHRvIGdl
bmVyYXRlIGEKKyMgY29wdCBmaWxlIGZvciBkaWZmZXJlbnQgYnVpbGQgdG9vbHMuCitjbGFzcyBD
TWFrZVN0eWxlKG9iamVjdCk6CisgICIiIlN0eWxlIG9iamVjdCBmb3IgQ01ha2UgY29wdHMgZmls
ZS4iIiIKKworICBkZWYgc2VwYXJhdG9yKHNlbGYpOgorICAgIHJldHVybiAiIgorCisgIGRlZiBs
aXN0X2ludHJvZHVjZXIoc2VsZiwgbmFtZSk6CisgICAgcmV0dXJuICJsaXN0KEFQUEVORCAiICsg
bmFtZQorCisgIGRlZiBsaXN0X2Nsb3NlcihzZWxmKToKKyAgICByZXR1cm4gIilcbiIKKworICBk
ZWYgZG9jc3RyaW5nKHNlbGYpOgorICAgIHJldHVybiAiXG4iLmpvaW4oKCgiIyAiICsgbGluZSku
c3RyaXAoKSBmb3IgbGluZSBpbiBmaWxlX2hlYWRlcl9saW5lcygpKSkKKworICBkZWYgZmlsZW5h
bWUoc2VsZik6CisgICAgcmV0dXJuICJHRU5FUkFURURfQWJzZWlsQ29wdHMuY21ha2UiCisKKwor
Y2xhc3MgU3RhcmxhcmtTdHlsZShvYmplY3QpOgorICAiIiJTdHlsZSBvYmplY3QgZm9yIFN0YXJs
YXJrIGNvcHRzIGZpbGUuIiIiCisKKyAgZGVmIHNlcGFyYXRvcihzZWxmKToKKyAgICByZXR1cm4g
IiwiCisKKyAgZGVmIGxpc3RfaW50cm9kdWNlcihzZWxmLCBuYW1lKToKKyAgICByZXR1cm4gbmFt
ZSArICIgPSBbIgorCisgIGRlZiBsaXN0X2Nsb3NlcihzZWxmKToKKyAgICByZXR1cm4gIl1cbiIK
KworICBkZWYgZG9jc3RyaW5nKHNlbGYpOgorICAgIGRvY3N0cmluZ19xdW90ZXMgPSAiXCJcIlwi
IgorICAgIHJldHVybiBkb2NzdHJpbmdfcXVvdGVzICsgIlxuIi5qb2luKAorICAgICAgICBmbGF0
dGVuKGZpbGVfaGVhZGVyX2xpbmVzKCksIFtkb2NzdHJpbmdfcXVvdGVzXSkpCisKKyAgZGVmIGZp
bGVuYW1lKHNlbGYpOgorICAgIHJldHVybiAiR0VORVJBVEVEX2NvcHRzLmJ6bCIKKworCitkZWYg
Y29wdF9saXN0KG5hbWUsIGFyZ19saXN0LCBzdHlsZSk6CisgICIiIkNvcHQgZmlsZSBnZW5lcmF0
aW9uLiIiIgorCisgIG1ha2VfbGluZSA9IGxhbWJkYSBzOiAiICAgIFwiIiArIHMgKyAiXCIiICsg
c3R5bGUuc2VwYXJhdG9yKCkKKyAgZXh0ZXJuYWxfc3RyX2xpc3QgPSBbbWFrZV9saW5lKHMpIGZv
ciBzIGluIGFyZ19saXN0XQorCisgIHJldHVybiAiXG4iLmpvaW4oCisgICAgICBmbGF0dGVuKAor
ICAgICAgICAgIFtzdHlsZS5saXN0X2ludHJvZHVjZXIobmFtZSldLAorICAgICAgICAgIGV4dGVy
bmFsX3N0cl9saXN0LAorICAgICAgICAgIFtzdHlsZS5saXN0X2Nsb3NlcigpXSkpCisKKworZGVm
IGdlbmVyYXRlX2NvcHRfZmlsZShzdHlsZSk6CisgICIiIkNyZWF0ZXMgYSBnZW5lcmF0ZWQgY29w
dCBmaWxlIHVzaW5nIHRoZSBnaXZlbiBzdHlsZSBvYmplY3QuCisKKyAgQXJnczoKKyAgICBzdHls
ZTogZWl0aGVyIFN0YXJsYXJrU3R5bGUoKSBvciBDTWFrZVN0eWxlKCkKKyAgIiIiCisgIHdpdGgg
b3BlbihyZWxhdGl2ZV9maWxlbmFtZShzdHlsZS5maWxlbmFtZSgpKSwgInciKSBhcyBmOgorICAg
IGYud3JpdGUoc3R5bGUuZG9jc3RyaW5nKCkpCisgICAgZi53cml0ZSgiXG4iKQorICAgIGZvciB2
YXJfbmFtZSwgYXJnX2xpc3QgaW4gc29ydGVkKENPUFRfVkFSUy5pdGVtcygpKToKKyAgICAgIGYu
d3JpdGUoIlxuIikKKyAgICAgIGYud3JpdGUoY29wdF9saXN0KHZhcl9uYW1lLCBhcmdfbGlzdCwg
c3R5bGUpKQorCisKK2RlZiBtYWluKGFyZ3YpOgorICBpZiBsZW4oYXJndikgPiAxOgorICAgIHJh
aXNlIFJ1bnRpbWVFcnJvcigiZ2VuZXJhdGVfY29wdHMgbmVlZHMgbm8gY29tbWFuZCBsaW5lIGFy
Z3MiKQorCisgIGdlbmVyYXRlX2NvcHRfZmlsZShTdGFybGFya1N0eWxlKCkpCisgIGdlbmVyYXRl
X2NvcHRfZmlsZShDTWFrZVN0eWxlKCkpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoK
KyAgbWFpbihzeXMuYXJndikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9CVUlMRC5iYXpl
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2RlYnVnZ2luZy9CVUlMRC5iYXplbAppbmRleCBlMWU3ZmNlZDY5ZmI5YTljZjQ0
ODQ5M2RlZWFjZGU5ODY0ZDk3OTg5Li45MTNjZmFmYjJkZjYyNDM3M2YyZjg0MmFhMDdiYzg5MWIx
M2RmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJTEQuYmF6ZWwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZGVidWdnaW5nL0JVSUxELmJhemVsCkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMTUsOCArMTUsOSBAQAogIwogCiBsb2FkKAotICAgICIvL2Fic2w6Y29wdHMuYnpsIiwK
KyAgICAiLy9hYnNsOmNvcHRzL2NvbmZpZ3VyZV9jb3B0cy5iemwiLAogICAgICJBQlNMX0RFRkFV
TFRfQ09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElOS09QVFMiLAogICAgICJBQlNMX1RFU1Rf
Q09QVFMiLAogKQogCkBAIC0zMyw2ICszNCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgXSwKICAgICBo
ZHJzID0gWyJzdGFja3RyYWNlLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAg
ICAgICAiOmRlYnVnZ2luZ19pbnRlcm5hbCIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCkBAIC01
MywxMSArNTUsMTMgQEAgY2NfbGlicmFyeSgKICAgICAgICAgInN5bWJvbGl6ZS5oIiwKICAgICBd
LAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9E
RUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6ZGVidWdnaW5nX2ludGVy
bmFsIiwKICAgICAgICAgIjpkZW1hbmdsZV9pbnRlcm5hbCIsCiAgICAgICAgICIvL2Fic2wvYmFz
ZSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNs
L2Jhc2U6ZHluYW1pY19hbm5vdGF0aW9ucyIsCiAgICAgICAgICIvL2Fic2wvYmFzZTptYWxsb2Nf
aW50ZXJuYWwiLAogICAgIF0sCiApCkBAIC02Niw2ICs3MCw3IEBAIGNjX3Rlc3QoCiAgICAgbmFt
ZSA9ICJzeW1ib2xpemVfdGVzdCIsCiAgICAgc3JjcyA9IFsic3ltYm9saXplX3Rlc3QuY2MiXSwK
ICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnN0YWNrX2NvbnN1bXB0aW9uIiwK
ICAgICAgICAgIjpzeW1ib2xpemUiLApAQCAtODUsNiArOTAsNyBAQCBjY19saWJyYXJ5KAogICAg
ICAgICAiaW50ZXJuYWwvZXhhbWluZV9zdGFjay5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJT
TF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCiAgICAgZGVwcyA9IFsK
ICAgICAgICAgIjpzdGFja3RyYWNlIiwKQEAgLTk5LDYgKzEwNSw3IEBAIGNjX2xpYnJhcnkoCiAg
ICAgc3JjcyA9IFsiZmFpbHVyZV9zaWduYWxfaGFuZGxlci5jYyJdLAogICAgIGhkcnMgPSBbImZh
aWx1cmVfc2lnbmFsX2hhbmRsZXIuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAg
ICAgICAgICI6ZXhhbWluZV9zdGFjayIsCiAgICAgICAgICI6c3RhY2t0cmFjZSIsCkBAIC0xMTUs
NyArMTIyLDcgQEAgY2NfdGVzdCgKICAgICBsaW5rb3B0cyA9IHNlbGVjdCh7CiAgICAgICAgICIv
L2Fic2w6d2luZG93cyI6IFtdLAogICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi1w
dGhyZWFkIl0sCi0gICAgfSksCisgICAgfSkgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAg
ZGVwcyA9IFsKICAgICAgICAgIjpmYWlsdXJlX3NpZ25hbF9oYW5kbGVyIiwKICAgICAgICAgIjpz
dGFja3RyYWNlIiwKQEAgLTE0Nyw4ICsxNTQsMTAgQEAgY2NfbGlicmFyeSgKICAgICAgICAgImlu
dGVybmFsL3Zkc29fc3VwcG9ydC5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxU
X0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMg
PSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hl
YWRlcnMiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZHluYW1pY19hbm5vdGF0aW9ucyIsCiAgICAg
XSwKICkKQEAgLTE2OCw2ICsxNzcsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiZGVtYW5nbGVf
dGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvZGVtYW5nbGVfdGVzdC5jYyJdLAogICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6ZGVtYW5nbGVfaW50ZXJuYWwiLAogICAgICAg
ICAiOnN0YWNrX2NvbnN1bXB0aW9uIiwKQEAgLTE4MCwyMiArMTkwLDkgQEAgY2NfdGVzdCgKIAog
Y2NfbGlicmFyeSgKICAgICBuYW1lID0gImxlYWtfY2hlY2siLAotICAgIHNyY3MgPSBzZWxlY3Qo
ewotICAgICAgICAjIFRoZSBsZWFrIGNoZWNraW5nIGludGVyZmFjZSBkZXBlbmRzIG9uIHdlYWsg
ZnVuY3Rpb24KLSAgICAgICAgIyBkZWNsYXJhdGlvbnMgdGhhdCBtYXkgbm90IG5lY2Vzc2FyaWx5
IGhhdmUgZGVmaW5pdGlvbnMuCi0gICAgICAgICMgV2luZG93cyBkb2Vzbid0IHN1cHBvcnQgdGhp
cywgYW5kIGlvcyByZXF1aXJlcwotICAgICAgICAjIGd1YXJhbnRlZWQgZGVmaW5pdGlvbnMgZm9y
IHdlYWsgc3ltYm9scy4KLSAgICAgICAgIi8vYWJzbDppb3MiOiBbXSwKLSAgICAgICAgIi8vYWJz
bDp3aW5kb3dzIjogW10sCi0gICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsKLSAgICAg
ICAgICAgICJsZWFrX2NoZWNrLmNjIiwKLSAgICAgICAgXSwKLSAgICB9KSwKLSAgICBoZHJzID0g
c2VsZWN0KHsKLSAgICAgICAgIi8vYWJzbDppb3MiOiBbXSwKLSAgICAgICAgIi8vYWJzbDp3aW5k
b3dzIjogW10sCi0gICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsibGVha19jaGVjay5o
Il0sCi0gICAgfSksCisgICAgc3JjcyA9IFsibGVha19jaGVjay5jYyJdLAorICAgIGhkcnMgPSBb
ImxlYWtfY2hlY2suaCJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIGRlcHMgPSBbIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyJdLAogKQogCkBAIC0yMDUsNiAr
MjAyLDcgQEAgY2NfbGlicmFyeSgKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJsZWFrX2NoZWNr
X2Rpc2FibGUiLAogICAgIHNyY3MgPSBbImxlYWtfY2hlY2tfZGlzYWJsZS5jYyJdLAorICAgIGxp
bmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGxpbmtzdGF0aWMgPSAxLAogICAg
IGFsd2F5c2xpbmsgPSAxLAogKQpAQCAtMjI1LDYgKzIyMyw3IEBAIGNjX2xpYnJhcnkoCiAgICAg
ICAgICIvL2Fic2w6bGx2bV9jb21waWxlciI6IFsiLURMRUFLX1NBTklUSVpFUiJdLAogICAgICAg
ICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbXSwKICAgICB9KSwKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJp
dmF0ZSJdLAogKQogCkBAIC0yMzQsNiArMjMzLDcgQEAgY2NfbGlicmFyeSgKICAgICBzcmNzID0g
WyJsZWFrX2NoZWNrLmNjIl0sCiAgICAgaGRycyA9IFsibGVha19jaGVjay5oIl0sCiAgICAgY29w
dHMgPSBbIi1VTEVBS19TQU5JVElaRVIiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogKQog
CkBAIC0yNDQsNyArMjQ0LDggQEAgY2NfdGVzdCgKICAgICAgICAgIi8vYWJzbDpsbHZtX2NvbXBp
bGVyIjogWyItREFCU0xfRVhQRUNUX0xFQUtfU0FOSVRJWkVSIl0sCiAgICAgICAgICIvL2NvbmRp
dGlvbnM6ZGVmYXVsdCI6IFtdLAogICAgIH0pLAotICAgIGxpbmtvcHRzID0gQUJTTF9MU0FOX0xJ
TktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9MU0FOX0xJTktPUFRTICsgQUJTTF9ERUZBVUxU
X0xJTktPUFRTLAorICAgIHRhZ3MgPSBbIm5vdHNhbiJdLAogICAgIGRlcHMgPSBbCiAgICAgICAg
ICI6bGVha19jaGVja19hcGlfZW5hYmxlZF9mb3JfdGVzdGluZyIsCiAgICAgICAgICIvL2Fic2wv
YmFzZSIsCkBAIC0yNTYsNiArMjU3LDggQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImxlYWtfY2hl
Y2tfbm9fbHNhbl90ZXN0IiwKICAgICBzcmNzID0gWyJsZWFrX2NoZWNrX3Rlc3QuY2MiXSwKICAg
ICBjb3B0cyA9IFsiLVVBQlNMX0VYUEVDVF9MRUFLX1NBTklUSVpFUiJdLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHRhZ3MgPSBbIm5vYXNhbiJdLAogICAgIGRl
cHMgPSBbCiAgICAgICAgICI6bGVha19jaGVja19hcGlfZGlzYWJsZWRfZm9yX3Rlc3RpbmciLAog
ICAgICAgICAiLy9hYnNsL2Jhc2UiLCAgIyBmb3IgcmF3X2xvZ2dpbmcKQEAgLTI3MCw3ICsyNzMs
OCBAQCBjY190ZXN0KAogY2NfdGVzdCgKICAgICBuYW1lID0gImRpc2FibGVkX2xlYWtfY2hlY2tf
dGVzdCIsCiAgICAgc3JjcyA9IFsibGVha19jaGVja19mYWlsX3Rlc3QuY2MiXSwKLSAgICBsaW5r
b3B0cyA9IEFCU0xfTFNBTl9MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfTFNBTl9MSU5L
T1BUUyArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB0YWdzID0gWyJub3RzYW4iXSwKICAg
ICBkZXBzID0gWwogICAgICAgICAiOmxlYWtfY2hlY2tfYXBpX2VuYWJsZWRfZm9yX3Rlc3Rpbmci
LAogICAgICAgICAiOmxlYWtfY2hlY2tfZGlzYWJsZSIsCkBAIC0yODUsNiArMjg5LDcgQEAgY2Nf
bGlicmFyeSgKICAgICBzcmNzID0gWyJpbnRlcm5hbC9zdGFja19jb25zdW1wdGlvbi5jYyJdLAog
ICAgIGhkcnMgPSBbImludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9uLmgiXSwKICAgICBjb3B0cyA9
IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BU
UywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogICAgIGRlcHMg
PSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCkBAIC0yOTYsNiArMzAxLDcgQEAgY2NfdGVzdCgK
ICAgICBuYW1lID0gInN0YWNrX2NvbnN1bXB0aW9uX3Rlc3QiLAogICAgIHNyY3MgPSBbImludGVy
bmFsL3N0YWNrX2NvbnN1bXB0aW9uX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiOnN0YWNrX2NvbnN1bXB0aW9uIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9C
VUlMRC5nbgppbmRleCBkMzU4MmQ2YTQyNmY3NzU3MTZlYjExNzYyZDU3YTE5OTFiMDRjYjMyLi5h
M2M3Y2ZlMmYwNDUzNWFlZmI0MzViODA2YzExODkyMTBmMzI1NTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL0JVSUxELmduCkBAIC0y
LDExICsyLDE4IEBACiAjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KIAotaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogaW1wb3J0KCIvL2J1
aWxkL2NvbmZpZy9zYW5pdGl6ZXJzL3Nhbml0aXplcnMuZ25pIikKK2ltcG9ydCgiLy9idWlsZF9v
dmVycmlkZXMvYnVpbGQuZ25pIikKIAorIyBVc2FnZSBvZiBBYnNlaWwgaW4gQ2hyb21pdW0gaXMg
Z3VhcmRlZCBieSBhbiBleHBsaWNpdCBvcHQtaW4gbGlzdCwgYmVmb3JlCisjIGFkZGluZyBwcm9q
ZWN0cyB0byB0aGlzIGxpc3QgcGxlYXNlIHJlYWNoIG91dCB0byBjeHhAY2hyb21pdW0ub3JnIGFu
ZCBDQzoKKyMgLSBodHRwczovL2NzLmNocm9taXVtLm9yZy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9PV05FUlMKKyMKKyMgTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQg
YXQ6CisjIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMURnUzEtQTNyemJvVExq
cGY0bTFzcWtKZ1dqbllfUnUyZG9razFYMXZCRFUKIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7
CiAgIHZpc2liaWxpdHkgPSBbCisgICAgIi8vbGliYXNzaXN0YW50LyoiLAogICAgICIvL3RoaXJk
X3BhcnR5L3dlYnJ0Yy8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAogICAg
ICIvL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Q6Z3Rlc3QiLApAQCAtNTcsNiArNjQsNyBAQCBzb3Vy
Y2Vfc2V0KCJzeW1ib2xpemUiKSB7CiAgICAgIjpkZW1hbmdsZV9pbnRlcm5hbCIsCiAgICAgIi4u
L2Jhc2UiLAogICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL2Jhc2U6ZHluYW1p
Y19hbm5vdGF0aW9ucyIsCiAgICAgIi4uL2Jhc2U6bWFsbG9jX2ludGVybmFsIiwKICAgXQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdn
aW5nL0NNYWtlTGlzdHMudHh0CmluZGV4IDRhZjJlYzhhNDExNDNjYmIxMTgxNDA3ZjA0ZWJiMTM1
NDdjZjUyZTguLjAwMWUyNzI3OTA0OTRkYWUwZDMxZmU3NzM2Y2FkNmQ3NDhmZmI2NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dp
bmcvQ01ha2VMaXN0cy50eHQKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0x
NCwyMDQgKzE0LDMwNSBAQAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICMKIAot
bGlzdChBUFBFTkQgREVCVUdHSU5HX1BVQkxJQ19IRUFERVJTCi0gICJmYWlsdXJlX3NpZ25hbF9o
YW5kbGVyLmgiCi0gICJsZWFrX2NoZWNrLmgiCi0gICJzdGFja3RyYWNlLmgiCi0gICJzeW1ib2xp
emUuaCIKLSkKLQotIyBUT0RPKGNvaGVuam9uKSBUaGUgYmVsb3cgaXMgYWxsIGtpbmRzIG9mIHdy
b25nLiAgTWFrZSB0aGlzIG1hdGNoIHdoYXQgd2UgZG8gaW4KLSMgQmF6ZWwKLWxpc3QoQVBQRU5E
IERFQlVHR0lOR19JTlRFUk5BTF9IRUFERVJTCi0gICJpbnRlcm5hbC9hZGRyZXNzX2lzX3JlYWRh
YmxlLmgiCi0gICJpbnRlcm5hbC9kZW1hbmdsZS5oIgotICAiaW50ZXJuYWwvZWxmX21lbV9pbWFn
ZS5oIgotICAiaW50ZXJuYWwvZXhhbWluZV9zdGFjay5oIgotICAiaW50ZXJuYWwvc3RhY2t0cmFj
ZV9jb25maWcuaCIKLSAgImludGVybmFsL3N5bWJvbGl6ZS5oIgotICAiaW50ZXJuYWwvdmRzb19z
dXBwb3J0LmgiCi0pCi0KLWxpc3QoQVBQRU5EIERFQlVHR0lOR19JTlRFUk5BTF9TUkMKLSAgImlu
dGVybmFsL2FkZHJlc3NfaXNfcmVhZGFibGUuY2MiCi0gICJpbnRlcm5hbC9lbGZfbWVtX2ltYWdl
LmNjIgotICAiaW50ZXJuYWwvdmRzb19zdXBwb3J0LmNjIgotKQotCi0KLWxpc3QoQVBQRU5EIFNU
QUNLVFJBQ0VfU1JDCi0gICJzdGFja3RyYWNlLmNjIgotICAke0RFQlVHR0lOR19JTlRFUk5BTF9T
UkN9Ci0gICR7REVCVUdHSU5HX1BVQkxJQ19IRUFERVJTfQotICAke0RFQlVHR0lOR19JTlRFUk5B
TF9IRUFERVJTfQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgc3RhY2t0cmFjZQorICBI
RFJTCisgICAgInN0YWNrdHJhY2UuaCIKKyAgU1JDUworICAgICJzdGFja3RyYWNlLmNjIgorICBD
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZGVidWdn
aW5nX2ludGVybmFsCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICBQ
VUJMSUMKICkKIAotbGlzdChBUFBFTkQgU1lNQk9MSVpFX1NSQwotICAic3ltYm9saXplLmNjIgot
ICAic3ltYm9saXplX2VsZi5pbmMiCi0gICJzeW1ib2xpemVfdW5pbXBsZW1lbnRlZC5pbmMiCi0g
ICJzeW1ib2xpemVfd2luMzIuaW5jIgotICAiaW50ZXJuYWwvZGVtYW5nbGUuY2MiCi0gICR7REVC
VUdHSU5HX1BVQkxJQ19IRUFERVJTfQotICAke0RFQlVHR0lOR19JTlRFUk5BTF9IRUFERVJTfQot
ICAke0RFQlVHR0lOR19JTlRFUk5BTF9TUkN9CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAg
ICBzeW1ib2xpemUKKyAgSERSUworICAgICJzeW1ib2xpemUuaCIKKyAgICAiaW50ZXJuYWwvc3lt
Ym9saXplLmgiCisgIFNSQ1MKKyAgICAic3ltYm9saXplLmNjIgorICAgICJzeW1ib2xpemVfZWxm
LmluYyIKKyAgICAic3ltYm9saXplX3VuaW1wbGVtZW50ZWQuaW5jIgorICAgICJzeW1ib2xpemVf
d2luMzIuaW5jIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZGVidWdn
aW5nX2ludGVybmFsCisgICAgYWJzbDo6ZGVtYW5nbGVfaW50ZXJuYWwKKyAgICBhYnNsOjpiYXNl
CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZHluYW1pY19hbm5vdGF0aW9ucwor
ICAgIGFic2w6Om1hbGxvY19pbnRlcm5hbAorICBQVUJMSUMKICkKIAotbGlzdChBUFBFTkQgRkFJ
TFVSRV9TSUdOQUxfSEFORExFUl9TUkMKLSAgImZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuY2MiCi0g
ICR7REVCVUdHSU5HX1BVQkxJQ19IRUFERVJTfQorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAg
c3ltYm9saXplX3Rlc3QKKyAgU1JDUworICAgICJzeW1ib2xpemVfdGVzdC5jYyIKKyAgQ09QVFMK
KyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0YWNrX2NvbnN1bXB0
aW9uCisgICAgYWJzbDo6c3ltYm9saXplCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVf
aGVhZGVycworICAgIGFic2w6Om1lbW9yeQorICAgIGdtb2NrCiApCiAKLWxpc3QoQVBQRU5EIEVY
QU1JTkVfU1RBQ0tfU1JDCi0gICJpbnRlcm5hbC9leGFtaW5lX3N0YWNrLmNjIgotICAke0RFQlVH
R0lOR19QVUJMSUNfSEVBREVSU30KLSAgJHtERUJVR0dJTkdfSU5URVJOQUxfSEVBREVSU30KK2Fi
c2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGV4YW1pbmVfc3RhY2sKKyAgSERSUworICAgICJp
bnRlcm5hbC9leGFtaW5lX3N0YWNrLmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvZXhhbWluZV9z
dGFjay5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAg
IGFic2w6OnN0YWNrdHJhY2UKKyAgICBhYnNsOjpzeW1ib2xpemUKKyAgICBhYnNsOjpiYXNlCisg
ICAgYWJzbDo6Y29yZV9oZWFkZXJzCiApCiAKLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAg
YWJzbF9zdGFja3RyYWNlCi0gIFNPVVJDRVMKLSAgICAke1NUQUNLVFJBQ0VfU1JDfQotICBFWFBP
UlRfTkFNRQotICAgIHN0YWNrdHJhY2UKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGZh
aWx1cmVfc2lnbmFsX2hhbmRsZXIKKyAgSERSUworICAgICJmYWlsdXJlX3NpZ25hbF9oYW5kbGVy
LmgiCisgIFNSQ1MKKyAgICAiZmFpbHVyZV9zaWduYWxfaGFuZGxlci5jYyIKKyAgQ09QVFMKKyAg
ICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmV4YW1pbmVfc3RhY2sK
KyAgICBhYnNsOjpzdGFja3RyYWNlCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvbmZpZwor
ICAgIGFic2w6OmNvcmVfaGVhZGVycworICBQVUJMSUMKICkKIAotYWJzbF9saWJyYXJ5KAotICBU
QVJHRVQKLSAgICBhYnNsX3N5bWJvbGl6ZQotICBTT1VSQ0VTCi0gICAgJHtTWU1CT0xJWkVfU1JD
fQotICBQVUJMSUNfTElCUkFSSUVTCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBmYWlsdXJl
X3NpZ25hbF9oYW5kbGVyX3Rlc3QKKyAgU1JDUworICAgICJmYWlsdXJlX3NpZ25hbF9oYW5kbGVy
X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjpmYWlsdXJlX3NpZ25hbF9oYW5kbGVyCisgICAgYWJzbDo6c3RhY2t0cmFjZQorICAgIGFi
c2w6OnN5bWJvbGl6ZQogICAgIGFic2w6OmJhc2UKLSAgICBhYnNsX21hbGxvY19pbnRlcm5hbAot
ICBFWFBPUlRfTkFNRQotICAgIHN5bWJvbGl6ZQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBUaHJl
YWRzOjpUaHJlYWRzCisgICAgZ21vY2sKICkKIAotYWJzbF9saWJyYXJ5KAotICBUQVJHRVQKLSAg
ICBhYnNsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIKLSAgU09VUkNFUwotICAgICR7RkFJTFVSRV9T
SUdOQUxfSEFORExFUl9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsX2Jhc2UgYWJz
bDo6ZXhhbWluZV9zdGFjayBhYnNsOjpzdGFja3RyYWNlIGFic2xfc3luY2hyb25pemF0aW9uCi0g
IEVYUE9SVF9OQU1FCi0gICAgZmFpbHVyZV9zaWduYWxfaGFuZGxlcgorYWJzbF9jY19saWJyYXJ5
KAorICBOQU1FCisgICAgZGVidWdnaW5nX2ludGVybmFsCisgIEhEUlMKKyAgICAiaW50ZXJuYWwv
YWRkcmVzc19pc19yZWFkYWJsZS5oIgorICAgICJpbnRlcm5hbC9lbGZfbWVtX2ltYWdlLmgiCisg
ICAgImludGVybmFsL3N0YWNrdHJhY2VfYWFyY2g2NC1pbmwuaW5jIgorICAgICJpbnRlcm5hbC9z
dGFja3RyYWNlX2FybS1pbmwuaW5jIgorICAgICJpbnRlcm5hbC9zdGFja3RyYWNlX2NvbmZpZy5o
IgorICAgICJpbnRlcm5hbC9zdGFja3RyYWNlX2dlbmVyaWMtaW5sLmluYyIKKyAgICAiaW50ZXJu
YWwvc3RhY2t0cmFjZV9wb3dlcnBjLWlubC5pbmMiCisgICAgImludGVybmFsL3N0YWNrdHJhY2Vf
dW5pbXBsZW1lbnRlZC1pbmwuaW5jIgorICAgICJpbnRlcm5hbC9zdGFja3RyYWNlX3dpbjMyLWlu
bC5pbmMiCisgICAgImludGVybmFsL3N0YWNrdHJhY2VfeDg2LWlubC5pbmMiCisgICAgImludGVy
bmFsL3Zkc29fc3VwcG9ydC5oIgorICBTUkNTCisgICAgImludGVybmFsL2FkZHJlc3NfaXNfcmVh
ZGFibGUuY2MiCisgICAgImludGVybmFsL2VsZl9tZW1faW1hZ2UuY2MiCisgICAgImludGVybmFs
L3Zkc29fc3VwcG9ydC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAg
REVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpk
eW5hbWljX2Fubm90YXRpb25zCiApCiAKLSMgSW50ZXJuYWwtb25seS4gUHJvamVjdHMgZXh0ZXJu
YWwgdG8gQWJzZWlsIHNob3VsZCBub3QgZGVwZW5kCi0jIGRpcmVjdGx5IG9uIHRoaXMgbGlicmFy
eS4KLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9leGFtaW5lX3N0YWNrCi0gIFNP
VVJDRVMKLSAgICAke0VYQU1JTkVfU1RBQ0tfU1JDfQotICBFWFBPUlRfTkFNRQotICAgIGV4YW1p
bmVfc3RhY2sKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGRlbWFuZ2xlX2ludGVybmFs
CisgIEhEUlMKKyAgICAiaW50ZXJuYWwvZGVtYW5nbGUuaCIKKyAgU1JDUworICAgICJpbnRlcm5h
bC9kZW1hbmdsZS5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQ
UworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgUFVCTElDCiApCiAK
LWxpc3QoQVBQRU5EIExFQUtfQ0hFQ0tfU1JDCi0gICJsZWFrX2NoZWNrLmNjIgorYWJzbF9jY190
ZXN0KAorICBOQU1FCisgICAgZGVtYW5nbGVfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL2Rl
bWFuZ2xlX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpkZW1hbmdsZV9pbnRlcm5hbAorICAgIGFic2w6OnN0YWNrX2NvbnN1bXB0aW9u
CisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6Om1lbW9y
eQorICAgIGdtb2NrX21haW4KICkKIAotCi0jIGxlYWtfY2hlY2sgbGlicmFyeQotYWJzbF9saWJy
YXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX2xlYWtfY2hlY2sKLSAgU09VUkNFUwotICAgICR7TEVB
S19DSEVDS19TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNsX2Jhc2UKLSAgRVhQT1JU
X05BTUUKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQogICAgIGxlYWtfY2hlY2sKKyAgSERSUwor
ICAgICJsZWFrX2NoZWNrLmgiCisgIFNSQ1MKKyAgICAibGVha19jaGVjay5jYyIKKyAgQ09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvcmVfaGVhZGVy
cworICBQVUJMSUMKICkKIAotCi0jIGNvbXBvbmVudCB0YXJnZXQKLWFic2xfaGVhZGVyX2xpYnJh
cnkoCi0gIFRBUkdFVAotICAgIGFic2xfZGVidWdnaW5nCi0gIFBVQkxJQ19MSUJSQVJJRVMKLSAg
ICBhYnNsX3N0YWNrdHJhY2UgYWJzbF9sZWFrX2NoZWNrCi0gIEVYUE9SVF9OQU1FCi0gICAgZGVi
dWdnaW5nCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBsZWFrX2NoZWNrX2Rpc2FibGUK
KyAgU1JDUworICAgICJsZWFrX2NoZWNrX2Rpc2FibGUuY2MiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgIFBVQkxJQwogKQogCi0jCi0jIyBURVNUUwotIwotCi1saXN0KEFQ
UEVORCBTVEFDS19DT05TVU1QVElPTl9TUkMKLSAgImludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9u
LmNjIgotICAiaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uaCIKK2Fic2xfY2NfbGlicmFyeSgK
KyAgTkFNRQorICAgIGxlYWtfY2hlY2tfYXBpX2VuYWJsZWRfZm9yX3Rlc3RpbmcKKyAgSERSUwor
ICAgICJsZWFrX2NoZWNrLmgiCisgIFNSQ1MKKyAgICAibGVha19jaGVjay5jYyIKKyAgQ09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgICAkPCQ8Qk9PTDoke0FCU0xfSEFWRV9MU0FO
fT46LURMRUFLX1NBTklUSVpFUj4KKyAgVEVTVE9OTFkKICkKIAotYWJzbF9saWJyYXJ5KAotICBU
QVJHRVQKLSAgICBhYnNsX3N0YWNrX2NvbnN1bXB0aW9uCi0gIFNPVVJDRVMKLSAgICAke1NUQUNL
X0NPTlNVTVBUSU9OX1NSQ30KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGxlYWtfY2hl
Y2tfYXBpX2Rpc2FibGVkX2Zvcl90ZXN0aW5nCisgIEhEUlMKKyAgICAibGVha19jaGVjay5oIgor
ICBTUkNTCisgICAgImxlYWtfY2hlY2suY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRf
Q09QVFN9CisgICAgIi1VTEVBS19TQU5JVElaRVIiCisgIFRFU1RPTkxZCiApCiAKLWFic2xfdGVz
dCgKLSAgVEFSR0VUCi0gICAgYWJzbF9zdGFja19jb25zdW1wdGlvbl90ZXN0Ci0gIFNPVVJDRVMK
LSAgICAiaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb25fdGVzdC5jYyIKLSAgUFVCTElDX0xJQlJB
UklFUwotICAgIGFic2xfc3RhY2tfY29uc3VtcHRpb24KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQor
ICAgIGxlYWtfY2hlY2tfdGVzdAorICBTUkNTCisgICAgImxlYWtfY2hlY2tfdGVzdC5jYyIKKyAg
Q09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgICAiJDwkPEJPT0w6JHtBQlNMX0hB
VkVfTFNBTn0+Oi1EQUJTTF9FWFBFQ1RfTEVBS19TQU5JVElaRVI+IgorICBMSU5LT1BUUworICAg
ICIke0FCU0xfTFNBTl9MSU5LT1BUU30iCisgIERFUFMKKyAgICBhYnNsOjpsZWFrX2NoZWNrX2Fw
aV9lbmFibGVkX2Zvcl90ZXN0aW5nCiAgICAgYWJzbDo6YmFzZQorICAgIGdtb2NrX21haW4KICkK
IAotbGlzdChBUFBFTkQgREVNQU5HTEVfVEVTVF9TUkMgImludGVybmFsL2RlbWFuZ2xlX3Rlc3Qu
Y2MiKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIGRlbWFuZ2xlX3Rlc3QKLSAgU09VUkNF
UwotICAgICR7REVNQU5HTEVfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICBhYnNs
X3N5bWJvbGl6ZSBhYnNsX3N0YWNrX2NvbnN1bXB0aW9uCithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
KyAgICBsZWFrX2NoZWNrX25vX2xzYW5fdGVzdAorICBTUkNTCisgICAgImxlYWtfY2hlY2tfdGVz
dC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgICAiLVVBQlNMX0VYUEVD
VF9MRUFLX1NBTklUSVpFUiIKKyAgREVQUworICAgIGFic2w6OmxlYWtfY2hlY2tfYXBpX2Rpc2Fi
bGVkX2Zvcl90ZXN0aW5nCisgICAgYWJzbDo6YmFzZQorICAgIGdtb2NrX21haW4KICkKIAotbGlz
dChBUFBFTkQgU1lNQk9MSVpFX1RFU1RfU1JDICJzeW1ib2xpemVfdGVzdC5jYyIpCi0KLWFic2xf
dGVzdCgKLSAgVEFSR0VUCi0gICAgc3ltYm9saXplX3Rlc3QKLSAgU09VUkNFUwotICAgICR7U1lN
Qk9MSVpFX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbDo6YmFzZSBhYnNs
OjptZW1vcnkgYWJzbF9zeW1ib2xpemUgYWJzbF9zdGFja19jb25zdW1wdGlvbgorYWJzbF9jY190
ZXN0KAorICBOQU1FCisgICAgZGlzYWJsZWRfbGVha19jaGVja190ZXN0CisgIFNSQ1MKKyAgICAi
bGVha19jaGVja19mYWlsX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9
CisgIExJTktPUFRTCisgICAgIiR7QUJTTF9MU0FOX0xJTktPUFRTfSIKKyAgREVQUworICAgIGFi
c2w6OmxlYWtfY2hlY2tfYXBpX2VuYWJsZWRfZm9yX3Rlc3RpbmcKKyAgICBhYnNsOjpsZWFrX2No
ZWNrX2Rpc2FibGUKKyAgICBhYnNsOjpiYXNlCisgICAgZ21vY2tfbWFpbgogKQogCi1saXN0KEFQ
UEVORCBGQUlMVVJFX1NJR05BTF9IQU5ETEVSX1RFU1RfU1JDICJmYWlsdXJlX3NpZ25hbF9oYW5k
bGVyX3Rlc3QuY2MiKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIGZhaWx1cmVfc2lnbmFs
X2hhbmRsZXJfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtGQUlMVVJFX1NJR05BTF9IQU5ETEVSX1RF
U1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbF9leGFtaW5lX3N0YWNrCi0gICAg
YWJzbF9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyCi0gICAgYWJzbF9zdGFja3RyYWNlCi0gICAgYWJz
bF9zeW1ib2xpemUKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHN0YWNrX2NvbnN1bXB0
aW9uCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uaCIKKyAgU1JDUwor
ICAgICJpbnRlcm5hbC9zdGFja19jb25zdW1wdGlvbi5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xf
REVGQVVMVF9DT1BUU30KKyAgREVQUwogICAgIGFic2w6OmJhc2UKLSAgICBhYnNsOjpzdHJpbmdz
CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgIFRFU1RPTkxZCiApCiAKLSMgdGVzdCBsZWFrX2No
ZWNrX3Rlc3QKLWxpc3QoQVBQRU5EIExFQUtfQ0hFQ0tfVEVTVF9TUkMgImxlYWtfY2hlY2tfdGVz
dC5jYyIpCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBzdGFja19jb25zdW1wdGlvbl90ZXN0
CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb25fdGVzdC5jYyIKKyAgQ09Q
VFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0YWNrX2NvbnN1
bXB0aW9uCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGdtb2Nr
X21haW4KKykKIAotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBsZWFrX2NoZWNrX3Rlc3QKLSAg
U09VUkNFUwotICAgICR7TEVBS19DSEVDS19URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwot
ICAgIGFic2xfbGVha19jaGVjaworIyBjb21wb25lbnQgdGFyZ2V0CithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICBkZWJ1Z2dpbmcKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BU
U30KKyAgREVQUworICAgIGFic2w6OnN0YWNrdHJhY2UKKyAgICBhYnNsOjpsZWFrX2NoZWNrCisg
IFBVQkxJQwogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ZhaWx1cmVfc2lnbmFsX2hh
bmRsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvZmFpbHVyZV9zaWduYWxfaGFuZGxlci5jYwppbmRl
eCBkNGI5NTdiYzJlNDE4ZjQ2ODFjYmY4MDRhODBhMTY3NzkyZWUzZGI4Li5jNmE0ZDk2MmI0MmNl
YTg4YzA5YjU1M2VjNjM4Mzg3ZDViZmVkZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcv
ZmFpbHVyZV9zaWduYWxfaGFuZGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvZmFpbHVyZV9z
aWduYWxfaGFuZGxlci5jYwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMTE5LDcgKzExOSwxMSBAQCBjb25zdCBjaGFyKiBGYWlsdXJlU2lnbmFsVG9TdHJpbmco
aW50IHNpZ25vKSB7CiAjaWZuZGVmIF9XSU4zMgogCiBzdGF0aWMgYm9vbCBTZXR1cEFsdGVybmF0
ZVN0YWNrT25jZSgpIHsKKyNpZiBkZWZpbmVkKF9fd2FzbV9fKSB8fCBkZWZpbmVkIChfX2Fzam1z
X18pCiAgIGNvbnN0IHNpemVfdCBwYWdlX21hc2sgPSBnZXRwYWdlc2l6ZSgpIC0gMTsKKyNlbHNl
CisgIGNvbnN0IHNpemVfdCBwYWdlX21hc2sgPSBzeXNjb25mKF9TQ19QQUdFU0laRSkgLSAxOwor
I2VuZGlmCiAgIHNpemVfdCBzdGFja19zaXplID0gKHN0ZDo6bWF4KFNJR1NUS1NaLCA2NTUzNikg
KyBwYWdlX21hc2spICYgfnBhZ2VfbWFzazsKICNpZiBkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVS
KSB8fCBkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpIHx8IFwKICAgICBkZWZpbmVkKFRIUkVBRF9T
QU5JVElaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvZmFpbHVyZV9zaWduYWxfaGFu
ZGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuaAppbmRleCBj
NTc5NTRlNTg3NWNhYzRkODk3MWQ5MDYwMGZiOGNjNjAxMzBkOGViLi4xYmViNzhiOTM3ODgyYTAy
YWQ4MDgxNmQyNDg4YWU2NTZjZDZhODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvZmFp
bHVyZV9zaWduYWxfaGFuZGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25h
bF9oYW5kbGVyLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyX3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvZmFpbHVyZV9zaWduYWxfaGFuZGxlcl90ZXN0LmNjCmluZGV4IGJh
NTIwOTEwZjQ3ZjIxN2YyOGRjNDhkNDJiYzI1MzVjMjYzZWYwM2QuLmJiMmNjNDhlYjRhNjAyNjAx
ZWU4MDQ3ZjlhZWZmZmVjNzliNGE1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9mYWls
dXJlX3NpZ25hbF9oYW5kbGVyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ZhaWx1cmVf
c2lnbmFsX2hhbmRsZXJfdGVzdC5jYwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtMTMzLDE2ICsxMzMsMTcgQEAgY29uc3RleHByIGludCBrRmFpbHVyZVNpZ25h
bHNbXSA9IHsKIH07CiAKIHN0ZDo6c3RyaW5nIFNpZ25hbFBhcmFtVG9TdHJpbmcoY29uc3QgOjp0
ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGludD4mIGluZm8pIHsKLSAgc3RkOjpzdHJpbmcgcmVzdWx0
ID0gYWJzbDo6ZGVidWdnaW5nX2ludGVybmFsOjpGYWlsdXJlU2lnbmFsVG9TdHJpbmcoaW5mby5w
YXJhbSk7CisgIHN0ZDo6c3RyaW5nIHJlc3VsdCA9CisgICAgICBhYnNsOjpkZWJ1Z2dpbmdfaW50
ZXJuYWw6OkZhaWx1cmVTaWduYWxUb1N0cmluZyhpbmZvLnBhcmFtKTsKICAgaWYgKHJlc3VsdC5l
bXB0eSgpKSB7CiAgICAgcmVzdWx0ID0gYWJzbDo6U3RyQ2F0KGluZm8ucGFyYW0pOwogICB9CiAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFic2xEZWF0aFRl
c3QsIEZhaWx1cmVTaWduYWxIYW5kbGVyRGVhdGhUZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgOjp0ZXN0aW5nOjpWYWx1ZXNJbihrRmFpbHVyZVNpZ25hbHMpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgU2lnbmFsUGFyYW1Ub1N0cmluZyk7CitJTlNUQU5USUFURV9URVNUX1NVSVRFX1Ao
QWJzbERlYXRoVGVzdCwgRmFpbHVyZVNpZ25hbEhhbmRsZXJEZWF0aFRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXNJbihrRmFpbHVyZVNpZ25hbHMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIFNpZ25hbFBhcmFtVG9TdHJpbmcpOwogCiAjZW5kaWYgIC8v
IEdURVNUX0hBU19ERUFUSF9URVNUCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRl
cm5hbC9hZGRyZXNzX2lzX3JlYWRhYmxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2Fk
ZHJlc3NfaXNfcmVhZGFibGUuY2MKaW5kZXggNzQ1NWFhMGI0MTY0NTZlMDRiN2UzODg1MjBjZDAw
ZDA4NDAwNzc4OC4uOTljNGM2NGJlODFlMjFjMTlmZThkZWU1N2JjNzY3NWFiZmIyN2Q3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2FkZHJlc3NfaXNfcmVhZGFibGUuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2FkZHJlc3NfaXNfcmVhZGFibGUuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9pbnRlcm5hbC9hZGRyZXNzX2lzX3JlYWRhYmxlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dp
bmcvaW50ZXJuYWwvYWRkcmVzc19pc19yZWFkYWJsZS5oCmluZGV4IDlkNDgwMzAwNjVjODExM2I0
MTdlOTRhNzk4OTk2OWMzYzZlZTdkNDkuLmNhODAwM2U2MjkyYTRjZGNjMTQ3ZGVkNzYyMzU3YjY4
ZDdkZDQ0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9hZGRyZXNzX2lz
X3JlYWRhYmxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2FkZHJlc3NfaXNfcmVh
ZGFibGUuaApAQCAtNCwxNCArNCwxMyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgotLy8KIAogI2lmbmRlZiBBQlNMX0RFQlVHR0lOR19JTlRFUk5BTF9BRERSRVNTX0lT
X1JFQURBQkxFX0hfCiAjZGVmaW5lIEFCU0xfREVCVUdHSU5HX0lOVEVSTkFMX0FERFJFU1NfSVNf
UkVBREFCTEVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmds
ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5jYwppbmRleCA0ODM1NDQ1
OWJjODVmODZkZmEwZDMxOWU5NzQxMTg4YjNlOWQ2NzQ2Li41MmE1NTNmZDA1ODU2OTk5MTlmYjA4
ZDFiODU4ZGU0NTYxMGE1MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwv
ZGVtYW5nbGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmNjCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC03NDksOCArNzQ5LDgg
QEAgc3RhdGljIGJvb2wgUGFyc2VTb3VyY2VOYW1lKFN0YXRlICpzdGF0ZSkgewogLy8gPGxvY2Fs
LXNvdXJjZS1uYW1lPiA6Oj0gTCA8c291cmNlLW5hbWU+IFs8ZGlzY3JpbWluYXRvcj5dCiAvLwog
Ly8gUmVmZXJlbmNlczoKLS8vICAgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVn
LmNnaT9pZD0zMTc3NQotLy8gICBodHRwOi8vZ2NjLmdudS5vcmcvdmlld2N2cz92aWV3PXJldiZy
ZXZpc2lvbj0xMjQ0NjcKKy8vICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1
Zy5jZ2k/aWQ9MzE3NzUKKy8vICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy92aWV3Y3ZzP3ZpZXc9cmV2
JnJldmlzaW9uPTEyNDQ2Nwogc3RhdGljIGJvb2wgUGFyc2VMb2NhbFNvdXJjZU5hbWUoU3RhdGUg
KnN0YXRlKSB7CiAgIENvbXBsZXhpdHlHdWFyZCBndWFyZChzdGF0ZSk7CiAgIGlmIChndWFyZC5J
c1Rvb0NvbXBsZXgoKSkgcmV0dXJuIGZhbHNlOwpAQCAtMTE2OCw2ICsxMTY4LDEyIEBAIHN0YXRp
YyBib29sIFBhcnNlVHlwZShTdGF0ZSAqc3RhdGUpIHsKICAgfQogICBzdGF0ZS0+cGFyc2Vfc3Rh
dGUgPSBjb3B5OwogCisgIC8vIG51bGxwdHJfdCwgaS5lLiBkZWNsdHlwZShudWxscHRyKS4KKyAg
aWYgKFBhcnNlVHdvQ2hhclRva2VuKHN0YXRlLCAiRG4iKSkgeworICAgIHJldHVybiB0cnVlOwor
ICB9CisgIHN0YXRlLT5wYXJzZV9zdGF0ZSA9IGNvcHk7CisKICAgaWYgKFBhcnNlT25lQ2hhclRv
a2VuKHN0YXRlLCAnVScpICYmIFBhcnNlU291cmNlTmFtZShzdGF0ZSkgJiYKICAgICAgIFBhcnNl
VHlwZShzdGF0ZSkpIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE2MzYsNiArMTY0MiwxNSBAQCBz
dGF0aWMgYm9vbCBQYXJzZUV4cHJlc3Npb24oU3RhdGUgKnN0YXRlKSB7CiAgIH0KICAgc3RhdGUt
PnBhcnNlX3N0YXRlID0gY29weTsKIAorICAvLyBQb2ludGVyLXRvLW1lbWJlciBhY2Nlc3MgZXhw
cmVzc2lvbnMuICBUaGlzIHBhcnNlcyB0aGUgc2FtZSBhcyBhIGJpbmFyeQorICAvLyBvcGVyYXRv
ciwgYnV0IGl0J3MgaW1wbGVtZW50ZWQgc2VwYXJhdGVseSBiZWNhdXNlICJkcyIgc2hvdWxkbid0
IGJlCisgIC8vIGFjY2VwdGVkIGluIG90aGVyIGNvbnRleHRzIHRoYXQgcGFyc2UgYW4gb3BlcmF0
b3IgbmFtZS4KKyAgaWYgKFBhcnNlVHdvQ2hhclRva2VuKHN0YXRlLCAiZHMiKSAmJiBQYXJzZUV4
cHJlc3Npb24oc3RhdGUpICYmCisgICAgICBQYXJzZUV4cHJlc3Npb24oc3RhdGUpKSB7CisgICAg
cmV0dXJuIHRydWU7CisgIH0KKyAgc3RhdGUtPnBhcnNlX3N0YXRlID0gY29weTsKKwogICAvLyBQ
YXJhbWV0ZXIgcGFjayBleHBhbnNpb24KICAgaWYgKFBhcnNlVHdvQ2hhclRva2VuKHN0YXRlLCAi
c3AiKSAmJiBQYXJzZUV4cHJlc3Npb24oc3RhdGUpKSB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZGVtYW5nbGUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVn
Z2luZy9pbnRlcm5hbC9kZW1hbmdsZS5oCmluZGV4IDJlNzU1NjRlZDM1YjQ3YTFlMmUyYzdhOGQ4
Y2RkZmU4MmQwNjYxZDEuLjgxYmIwZGZkNGJkYTFhMWYwY2FkZmVlNTg4NmUyNWFkZTdkNmIyMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwv
ZGVtYW5nbGVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZV90ZXN0
LmNjCmluZGV4IGI5ZDkwMDhmMDA3N2U2NjBiYWFiMjI2YjMwYTlmZDNlNGU4NjQwYTQuLmE2OGNl
MzI0OWJjYjJmY2EwM2Q5ZDJkNDBlN2NlMjdlNjQxZDU3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Rl
YnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9p
bnRlcm5hbC9kZW1hbmdsZV90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC04MSw4ICs4MSw5IEBAIFRFU1QoRGVtYW5nbGUsIENsb25lcykgewogLy8g
VGVzdHMgdGhhdCB2ZXJpZnkgdGhhdCBEZW1hbmdsZSBmb290cHJpbnQgaXMgd2l0aGluIHNvbWUg
bGltaXQuCiAvLyBUaGV5IGFyZSBub3QgdG8gYmUgcnVuIHVuZGVyIHNhbml0aXplcnMgYXMgdGhl
IHNhbml0aXplcnMgaW5jcmVhc2UKIC8vIHN0YWNrIGNvbnN1bXB0aW9uIGJ5IGFib3V0IDR4Lgot
I2lmIGRlZmluZWQoQUJTTF9JTlRFUk5BTF9IQVZFX0RFQlVHR0lOR19TVEFDS19DT05TVU1QVElP
TikgJiYgXAotICAgICFBRERSRVNTX1NBTklUSVpFUiAmJiAhTUVNT1JZX1NBTklUSVpFUiAmJiAh
VEhSRUFEX1NBTklUSVpFUgorI2lmIGRlZmluZWQoQUJTTF9JTlRFUk5BTF9IQVZFX0RFQlVHR0lO
R19TVEFDS19DT05TVU1QVElPTikgJiYgICBcCisgICAgIWRlZmluZWQoQUREUkVTU19TQU5JVEla
RVIpICYmICFkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpICYmIFwKKyAgICAhZGVmaW5lZChUSFJF
QURfU0FOSVRJWkVSKQogCiBzdGF0aWMgY29uc3QgY2hhciAqZ19tYW5nbGVkOwogc3RhdGljIGNo
YXIgZ19kZW1hbmdsZV9idWZmZXJbNDA5Nl07CkBAIC0xNzYsNiArMTc3LDcgQEAgc3RhdGljIHZv
aWQgVGVzdE9uSW5wdXQoY29uc3QgY2hhciogaW5wdXQpIHsKIFRFU1QoRGVtYW5nbGVSZWdyZXNz
aW9uLCBOZWdhdGl2ZUxlbmd0aCkgewogICBUZXN0T25JbnB1dCgiX1pabjQiKTsKIH0KKwogVEVT
VChEZW1hbmdsZVJlZ3Jlc3Npb24sIERlZXBseU5lc3RlZEFycmF5VHlwZSkgewogICBjb25zdCBp
bnQgZGVwdGggPSAxMDAwMDA7CiAgIHN0ZDo6c3RyaW5nIGRhdGEgPSAiX1pTdEkiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2VsZl9tZW1faW1hZ2UuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvaW50ZXJuYWwvZWxmX21lbV9pbWFnZS5jYwppbmRleCAzZjc0N2U3Zjk1OGVjMTJh
NmU1ZjFlMmNkYWE5OTY4MDYxMTZkMWZmLi5lNzQwOGJjYThlNDI4YzRmM2FhOWY2OWUyZTU2YmJj
NjIyYjYxODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZWxmX21lbV9p
bWFnZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZWxmX21lbV9pbWFnZS5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZGVidWdnaW5nL2ludGVybmFsL2VsZl9tZW1faW1hZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9p
bnRlcm5hbC9lbGZfbWVtX2ltYWdlLmgKaW5kZXggM2I1NzcyNjg5NTQzMzdkNGIxNTI1MDg2YWQ4
NGRiNzk0NGUzNjZiOS4uZDg0MjAwZGIxZTFhMTFmMDc0NTAxYWExZmYyOWMxZjZlNWUzZTY3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2VsZl9tZW1faW1hZ2UuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZWxmX21lbV9pbWFnZS5oCkBAIC01LDcgKzUsNyBA
QAogICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAgKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
KyAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogICoK
ICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zNCw3ICszNCw3IEBACiAjZGVmaW5lIEFC
U0xfSEFWRV9FTEZfTUVNX0lNQUdFIDEKICNlbmRpZgogCi0jaWYgQUJTTF9IQVZFX0VMRl9NRU1f
SU1BR0UKKyNpZmRlZiBBQlNMX0hBVkVfRUxGX01FTV9JTUFHRQogCiAjaW5jbHVkZSA8bGluay5o
PiAgLy8gZm9yIEVsZlcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2V4
YW1pbmVfc3RhY2suY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFjay5j
YwppbmRleCBmYWY4ODgzNjczNTZmZWYyMjM0MGY1MzRiMTViZTU2OTBhZTcxZjJlLi4xZWJjNzg4
ZmUzZDZkNTFmMDFlZGU4ZjU2OWU3MTk2NjcwNDE2YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1
Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFjay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50
ZXJuYWwvZXhhbWluZV9zdGFjay5jYwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2V4YW1pbmVfc3Rh
Y2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9leGFtaW5lX3N0YWNrLmgKaW5kZXggYTE2
YzAzYjI3NDhmNjg2MWU4ZTE1NDNhMTUzYjBjNWRmZGMwYWEwMS4uNTZjOTc2M2ViNzMzMzc0YjM2
ODFjN2NhYjA5MzgyMTQwNDhiYTg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVy
bmFsL2V4YW1pbmVfc3RhY2suaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWlu
ZV9zdGFjay5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uY2MKaW5kZXggMmIzYjk3
MmVhNTM5MDJjMTk1ZGU1YTFhOWRjOTU3OTcxOGExNzBiMy4uNGIwNWY0OTU1ZWUwZjU1NzQzYWU4
M2FiNWQ0ZTg5N2VmZTVhY2YyMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFs
L3N0YWNrX2NvbnN1bXB0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFj
a19jb25zdW1wdGlvbi5jYwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrX2NvbnN1bXB0aW9u
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uaAppbmRleCA0
YzVmYTBmMGQ4MjFkNDk2M2UzNGE4MmQ0NThkMDJjMDRlNTY2ODAzLi5iODYwYTNjMWExN2UxMDBm
N2QzYmMwMTM3ZDhlMmY2NmFjMmYyNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50
ZXJuYWwvc3RhY2tfY29uc3VtcHRpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwv
c3RhY2tfY29uc3VtcHRpb24uaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrX2NvbnN1bXB0
aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb25f
dGVzdC5jYwppbmRleCA1Y2UzODQ2ZWM0NDk3MTU5MGMzNDJjNDhjNjc3NmExNmU3MWNhYzhjLi42
OGJmYTEyNmUyM2I5ZGQxNjhiZGQyNTM1NGViM2U3OWRmOGRmOTU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb25fdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2tfY29uc3VtcHRpb25fdGVzdC5jYwpAQCAtNSw3ICs1
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdn
aW5nL2ludGVybmFsL3N0YWNrdHJhY2VfY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJu
YWwvc3RhY2t0cmFjZV9jb25maWcuaAppbmRleCBkZDcxM2RhOGMwYzdkNzY1MDlkMDMyYjA4MjYz
ZGUxNzQ4NmZmYTZlLi5kNGU4NDgwYThlMjgwZjM4YmQ5OTkzNGZmNTRlZDJiYjlmNmFhYWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9jb25maWcuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9jb25maWcuaApAQCAtNSw3
ICs1LDcgQEAKICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisgKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKICAqCiAgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNDEsOCArNDEsOSBAQAogI2Rl
ZmluZSBBQlNMX1NUQUNLVFJBQ0VfSU5MX0hFQURFUiBcCiAgICAgImFic2wvZGVidWdnaW5nL2lu
dGVybmFsL3N0YWNrdHJhY2VfYWFyY2g2NC1pbmwuaW5jIgogIyBlbGlmIGRlZmluZWQoX19hcm1f
XykKKy8vIE5vdGU6IFdoZW4gdXNpbmcgZ2xpYmMgdGhpcyBtYXkgcmVxdWlyZSAtZnVud2luZC10
YWJsZXMgdG8gZnVuY3Rpb24gcHJvcGVybHkuCiAjZGVmaW5lIEFCU0xfU1RBQ0tUUkFDRV9JTkxf
SEVBREVSIFwKLSAgICAiYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9hcm0taW5s
LmluYyIKKyAgImFic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfZ2VuZXJpYy1pbmwu
aW5jIgogIyBlbHNlCiAjZGVmaW5lIEFCU0xfU1RBQ0tUUkFDRV9JTkxfSEVBREVSIFwKICAgICJh
YnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3VuaW1wbGVtZW50ZWQtaW5sLmluYyIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX2dlbmVyaWMt
aW5sLmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX2dlbmVyaWMtaW5s
LmluYwppbmRleCAyYzljYTQxMGM2MDgzZGZhMTc1OGFiMTE1NTg0MWY3ZmVlZDJhYzJiLi4yZTg3
NmZlZjk2Y2Y5YjdiYmYxM2Q0Yjg1NzBiODRlNDk2M2NiNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9nZW5lcmljLWlubC5pbmMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfZ2VuZXJpYy1pbmwuaW5jCkBAIC0xMiwxMyAr
MTIsNDggQEAKICNkZWZpbmUgQUJTTF9ERUJVR0dJTkdfSU5URVJOQUxfU1RBQ0tUUkFDRV9HRU5F
UklDX0lOTF9IXwogCiAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KKyNpbmNsdWRlIDxhdG9taWM+CiAj
aW5jbHVkZSA8Y3N0cmluZz4KIAogI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL3N0YWNrdHJhY2Uu
aCIKIAorLy8gU29tZXRpbWVzLCB3ZSBjYW4gdHJ5IHRvIGdldCBhIHN0YWNrIHRyYWNlIGZyb20g
d2l0aGluIGEgc3RhY2sKKy8vIHRyYWNlLCBiZWNhdXNlIHdlIGRvbid0IGJsb2NrIHNpZ25hbHMg
aW5zaWRlIHRoaXMgY29kZSAod2hpY2ggd291bGQgYmUgdG9vCisvLyBleHBlbnNpdmU6IHRoZSB0
d28gZXh0cmEgc3lzdGVtIGNhbGxzIHBlciBzdGFjayB0cmFjZSBkbyBtYXR0ZXIgaGVyZSkuCisv
LyBUaGF0IGNhbiBjYXVzZSBhIHNlbGYtZGVhZGxvY2suCisvLyBQcm90ZWN0IGFnYWluc3Qgc3Vj
aCByZWVudHJhbnQgY2FsbCBieSBmYWlsaW5nIHRvIGdldCBhIHN0YWNrIHRyYWNlLgorLy8KKy8v
IFdlIHVzZSBfX3RocmVhZCBoZXJlIGJlY2F1c2UgdGhlIGNvZGUgaGVyZSBpcyBleHRyZW1lbHkg
bG93IGxldmVsIC0tIGl0IGlzCisvLyBjYWxsZWQgd2hpbGUgY29sbGVjdGluZyBzdGFjayB0cmFj
ZXMgZnJvbSB3aXRoaW4gbWFsbG9jIGFuZCBtbWFwLCBhbmQgdGh1cworLy8gY2FuIG5vdCBjYWxs
IGFueXRoaW5nIHdoaWNoIG1pZ2h0IGNhbGwgbWFsbG9jIG9yIG1tYXAgaXRzZWxmLgorc3RhdGlj
IF9fdGhyZWFkIGludCByZWN1cnNpdmUgPSAwOworCisvLyBUaGUgc3RhY2sgdHJhY2UgZnVuY3Rp
b24gbWlnaHQgYmUgaW52b2tlZCB2ZXJ5IGVhcmx5IGluIHRoZSBwcm9ncmFtJ3MKKy8vIGV4ZWN1
dGlvbiAoZS5nLiBmcm9tIHRoZSB2ZXJ5IGZpcnN0IG1hbGxvYyBpZiB1c2luZyB0Y21hbGxvYyku
IEFsc28sIHRoZQorLy8gZ2xpYmMgaW1wbGVtZW50YXRpb24gaXRzZWxmIHdpbGwgdHJpZ2dlciBt
YWxsb2MgdGhlIGZpcnN0IHRpbWUgaXQgaXMgY2FsbGVkLgorLy8gQXMgc3VjaCwgd2Ugc3VwcHJl
c3MgdXNhZ2Ugb2YgYmFja3RyYWNlIGR1cmluZyB0aGlzIGVhcmx5IHN0YWdlIG9mIGV4ZWN1dGlv
bi4KK3N0YXRpYyBzdGQ6OmF0b21pYzxib29sPiBkaXNhYmxlX3N0YWNrdHJhY2VzKHRydWUpOyAg
Ly8gRGlzYWJsZWQgdW50aWwgaGVhbHRoeS4KKy8vIFdhaXRpbmcgdW50aWwgc3RhdGljIGluaXRp
YWxpemVycyBydW4gc2VlbXMgdG8gYmUgbGF0ZSBlbm91Z2guCisvLyBUaGlzIGZpbGUgaXMgaW5j
bHVkZWQgaW50byBzdGFja3RyYWNlLmNjIHNvIHRoaXMgd2lsbCBvbmx5IHJ1biBvbmNlLgorc3Rh
dGljIGludCBzdGFja3RyYWNlc19lbmFibGVyID0gW10oKSB7CisgIHZvaWQqIHVudXNlZF9zdGFj
a1sxXTsKKyAgLy8gRm9yY2UgdGhlIGZpcnN0IGJhY2t0cmFjZSB0byBoYXBwZW4gZWFybHkgdG8g
Z2V0IHRoZSBvbmUtdGltZSBzaGFyZWQgbGliCisgIC8vIGxvYWRpbmcgKGFsbG9jYXRpb24pIG91
dCBvZiB0aGUgd2F5LiBBZnRlciB0aGUgZmlyc3QgY2FsbCBpdCBpcyBtdWNoIHNhZmVyCisgIC8v
IHRvIHVzZSBiYWNrdHJhY2UgZnJvbSBhIHNpZ25hbCBoYW5kbGVyIGlmIHdlIGNyYXNoIHNvbWV3
aGVyZSBsYXRlci4KKyAgYmFja3RyYWNlKHVudXNlZF9zdGFjaywgMSk7CisgIGRpc2FibGVfc3Rh
Y2t0cmFjZXMuc3RvcmUoZmFsc2UsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICByZXR1
cm4gMDsKK30oKTsKKwogdGVtcGxhdGUgPGJvb2wgSVNfU1RBQ0tfRlJBTUVTLCBib29sIElTX1dJ
VEhfQ09OVEVYVD4KIHN0YXRpYyBpbnQgVW53aW5kSW1wbCh2b2lkKiogcmVzdWx0LCBpbnQqIHNp
emVzLCBpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICp1Y3AsIGludCAqbWluX2Ryb3BwZWRfZnJhbWVzKSB7CisgIGlmIChyZWN1
cnNpdmUgfHwgZGlzYWJsZV9zdGFja3RyYWNlcy5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4
ZWQpKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgKytyZWN1cnNpdmU7CisKKyAgc3RhdGljX2Nh
c3Q8dm9pZD4odWNwKTsgIC8vIFVudXNlZC4KICAgc3RhdGljIGNvbnN0IGludCBrU3RhY2tMZW5n
dGggPSA2NDsKICAgdm9pZCAqIHN0YWNrW2tTdGFja0xlbmd0aF07CiAgIGludCBzaXplOwpAQCAt
NDUsNiArODAsOCBAQCBzdGF0aWMgaW50IFVud2luZEltcGwodm9pZCoqIHJlc3VsdCwgaW50KiBz
aXplcywgaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQsCiAgICAgfQogICB9CiAKKyAgLS1y
ZWN1cnNpdmU7CisKICAgcmV0dXJuIHJlc3VsdF9jb3VudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfcG93ZXJwYy1pbmwuaW5jIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfcG93ZXJwYy1pbmwuaW5jCmluZGV4IDg2MGFj
MmIzZTU4MjUxMDU5NWNiY2JmZmIyYjlkY2YxMDFjMmM1NTkuLjNhMDcwZWU0NWQ0YjAwZDVmMjE4
ZDFhODg3OTM0MTM4MDNlOTNhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5h
bC9zdGFja3RyYWNlX3Bvd2VycGMtaW5sLmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJu
YWwvc3RhY2t0cmFjZV9wb3dlcnBjLWlubC5pbmMKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTE0LDggKzE0LDggQEAKIC8vCiAvLyBQcm9kdWNlIHN0YWNrIHRy
YWNlLiAgSSdtIGd1ZXNzaW5nIChob3BpbmchKSB0aGUgY29kZSBpcyBtdWNoIGxpa2UKIC8vIGZv
ciB4ODYuICBGb3IgYXBwbGUgbWFjaGluZXMsIGF0IGxlYXN0LCBpdCBzZWVtcyB0byBiZTsgc2Vl
Ci0vLyAgICBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL21hYy9ydW50
aW1laHRtbC9SVEFyY2gtNTkuaHRtbAotLy8gICAgaHR0cDovL3d3dy5saW51eC1mb3VuZGF0aW9u
Lm9yZy9zcGVjL0VMRi9wcGM2NC9QUEMtZWxmNjRhYmktMS45Lmh0bWwjU1RBQ0sKKy8vICAgIGh0
dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL21hYy9ydW50aW1laHRtbC9S
VEFyY2gtNTkuaHRtbAorLy8gICAgaHR0cHM6Ly93d3cubGludXgtZm91bmRhdGlvbi5vcmcvc3Bl
Yy9FTEYvcHBjNjQvUFBDLWVsZjY0YWJpLTEuOS5odG1sI1NUQUNLCiAvLyBMaW51eCBoYXMgc2lt
aWxhciBjb2RlOiBodHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvbGludXhwcGMvcGF0Y2g/aWQ9
ODg4MgogCiAjaWZuZGVmIEFCU0xfREVCVUdHSU5HX0lOVEVSTkFMX1NUQUNLVFJBQ0VfUE9XRVJQ
Q19JTkxfSF8KQEAgLTE2Miw3ICsxNjIsNyBAQCBBQlNMX0FUVFJJQlVURV9OT19TQU5JVElaRV9N
RU1PUlkgICAvLyBNYXkgcmVhZCByYW5kb20gZWxlbWVudHMgZnJvbSBzdGFjay4KIHN0YXRpYyBp
bnQgVW53aW5kSW1wbCh2b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLCBpbnQgbWF4X2RlcHRoLCBp
bnQgc2tpcF9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp1Y3AsIGlu
dCAqbWluX2Ryb3BwZWRfZnJhbWVzKSB7CiAgIHZvaWQgKipzcDsKLSAgLy8gQXBwbGUgT1MgWCB1
c2VzIGFuIG9sZCB2ZXJzaW9uIG9mIGdudSBhcyAtLSBib3RoIERhcndpbiA3LjkuMCAoUGFudGhl
cikKKyAgLy8gQXBwbGUgbWFjT1MgdXNlcyBhbiBvbGQgdmVyc2lvbiBvZiBnbnUgYXMgLS0gYm90
aCBEYXJ3aW4gNy45LjAgKFBhbnRoZXIpCiAgIC8vIGFuZCBEYXJ3aW4gOC44LjEgKFRpZ2VyKSB1
c2UgYXMgMS4zOC4gIFRoaXMgbWVhbnMgd2UgaGF2ZSB0byB1c2UgYQogICAvLyBkaWZmZXJlbnQg
YXNtIHN5bnRheC4gIEkgZG9uJ3Qga25vdyBxdWl0ZSB0aGUgYmVzdCB3YXkgdG8gZGlzY3JpbWlu
YXRlCiAgIC8vIHN5c3RlbXMgdXNpbmcgdGhlIG9sZCBhcyBmcm9tIHRoZSBuZXcgb25lOyBJJ3Zl
IGdvbmUgd2l0aCBfX0FQUExFX18uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJu
YWwvc3RhY2t0cmFjZV93aW4zMi1pbmwuaW5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0
YWNrdHJhY2Vfd2luMzItaW5sLmluYwppbmRleCBhOGY4YTU2YWZiMzc0ODIyMGQ1MDJlMjZhMTky
MTA5MWVkNmFiMDdhLi5iNDY0OTFmODE0M2QwMjhkMTEwMmJlYjA2MTgxYWFhZTliYWEzYWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV93aW4zMi1pbmwu
aW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3dpbjMyLWlubC5p
bmMKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTMyLDcgKzMy
LDcgQEAKIC8vIHNlcnZlci4KIC8vCiAvLyBUaGlzIGNvZGUgaXMgaW5zcGlyZWQgYnkgYSBwYXRj
aCBmcm9tIERhdmlkIFZpdGVrOgotLy8gICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xl
LXBlcmZ0b29scy9pc3N1ZXMvZGV0YWlsP2lkPTgzCisvLyAgIGh0dHBzOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xlLXBlcmZ0b29scy9pc3N1ZXMvZGV0YWlsP2lkPTgzCiAKICNpZm5kZWYgQUJT
TF9ERUJVR0dJTkdfSU5URVJOQUxfU1RBQ0tUUkFDRV9XSU4zMl9JTkxfSF8KICNkZWZpbmUgQUJT
TF9ERUJVR0dJTkdfSU5URVJOQUxfU1RBQ0tUUkFDRV9XSU4zMl9JTkxfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3g4Ni1pbmwuaW5jIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfeDg2LWlubC5pbmMKaW5kZXggYWM4NWI5MjAz
MzI0MTdjY2YwMGMxMzk2MTMyNTQ0ZGY4YjM1MmViOC4uMjVhYThiZGY4YzhjODY0MDExMzQyYTdk
OTI2OWI1Y2ViNjVkZjg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0
YWNrdHJhY2VfeDg2LWlubC5pbmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNr
dHJhY2VfeDg2LWlubC5pbmMKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9h
ZGRyZXNzX2lzX3JlYWRhYmxlLmgiCiAjaW5jbHVkZSAiYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwv
dmRzb19zdXBwb3J0LmgiICAvLyBhIG5vLW9wIG9uIG5vbi1lbGYgb3Igbm9uLWdsaWJjIHN5c3Rl
bXMKICNpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNlLmgiCisKICNpbmNsdWRlICJh
YnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKIAogI2lmIGRlZmluZWQoX19saW51eF9f
KSAmJiBkZWZpbmVkKF9faTM4Nl9fKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVy
bmFsL3N5bWJvbGl6ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N5bWJvbGl6ZS5oCmlu
ZGV4IDhkOTI2ZmVjNDhhYWU4YzM2NTIxNTUzNTMxN2M4NTM5MmIzMDU5ODAuLjNlNTM3ODkzMDk3
ZGJjYjFkNWU4NGM5OTdkMjU1MGQxZjdjYTRiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9pbnRlcm5hbC9zeW1ib2xpemUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3lt
Ym9saXplLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIw
LDcgKzIwLDYgQEAKIAogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8Y3N0ZGludD4KLSNp
bmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIiAgLy8gTmVlZGVkIGZvciBzdHJpbmcgdnMgc3RkOjpz
dHJpbmcKIAogI2lmZGVmIEFCU0xfSU5URVJOQUxfSEFWRV9FTEZfU1lNQk9MSVpFCiAjZXJyb3Ig
QUJTTF9JTlRFUk5BTF9IQVZFX0VMRl9TWU1CT0xJWkUgY2Fubm90IGJlIGRpcmVjdGx5IHNldApA
QCAtNDIsOSArNDEsOSBAQCBuYW1lc3BhY2UgZGVidWdnaW5nX2ludGVybmFsIHsKIC8vIFJldHVy
bnMgdHJ1ZSBvbiBzdWNjZXNzOyBvdGhlcndpc2UgcmV0dXJucyBmYWxzZSBpbiBjYXNlIG9mIGVy
cm9ycy4KIC8vCiAvLyBUaGlzIGlzIG5vdCBhc3luYy1zaWduYWwtc2FmZS4KLWJvb2wgRm9yRWFj
aFNlY3Rpb24oCi0gICAgaW50IGZkLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3Qgc3Rk
OjpzdHJpbmcmIG5hbWUsIGNvbnN0IEVsZlcoU2hkcikgJik+JgotICAgICAgICAgICAgICAgIGNh
bGxiYWNrKTsKK2Jvb2wgRm9yRWFjaFNlY3Rpb24oaW50IGZkLAorICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFbGZXKFNoZHIp
ICYpPiYgY2FsbGJhY2spOwogCiAvLyBHZXRzIHRoZSBzZWN0aW9uIGhlYWRlciBmb3IgdGhlIGdp
dmVuIG5hbWUsIGlmIGl0IGV4aXN0cy4gUmV0dXJucyB0cnVlIG9uCiAvLyBzdWNjZXNzLiBPdGhl
cndpc2UsIHJldHVybnMgZmFsc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJu
YWwvdmRzb19zdXBwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3Zkc29fc3VwcG9y
dC5jYwppbmRleCBlODEyOWU4N2RjYTc1NTY4MTA4Yjk3ZmI5MTZlNmVkOTcyNTBiMWJlLi4yM2Mz
MDg0NzRkODhiMzZlY2JmYjRiMzU1ODk2Njk4YjBjZWE3NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvaW50ZXJuYWwvdmRzb19zdXBwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9p
bnRlcm5hbC92ZHNvX3N1cHBvcnQuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC92ZHNvX3N1cHBv
cnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC92ZHNvX3N1cHBvcnQuaAppbmRleCA4MDAy
Yzc0MDVmYWRkOGExZDM1OGI2MzgwNmJlZWIzNDhkM2E4MzUwLi45ODk1YjQ4ZGQzNjhmZjk1YzY0
YzEzZWRkZjVhMDNmMDJlODMwMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJu
YWwvdmRzb19zdXBwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3Zkc29fc3Vw
cG9ydC5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVjay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFr
X2NoZWNrLmNjCmluZGV4IGUwMWU1ZjhjOTM3ZWMxZWY1NmVhY2EzN2MxNzFmM2RlOTEwODRjY2Eu
LmZmZTNkMWJkYTlkNjEzNGMxZjlmMmZjYjkyZmE2Yjc0NTUxZTMzOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFrX2No
ZWNrLmNjCkBAIC00LDEzICs0LDE0IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIC8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgogLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKIC8vIFdyYXBwZXJzIGFyb3VuZCBsc2FuX2ludGVyZmFjZSBmdW5jdGlvbnMuCiAv
LyBXaGVuIGxzYW4gaXMgbm90IGxpbmtlZCBpbiwgdGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgYXZh
aWxhYmxlLAogLy8gdGhlcmVmb3JlIEFic2VpbCBjb2RlIHdoaWNoIGRlcGVuZHMgb24gdGhlc2Ug
ZnVuY3Rpb25zIGlzIGNvbmRpdGlvbmVkIG9uIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdn
aW5nL2xlYWtfY2hlY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrLmgKaW5kZXggYzkz
MDY4NGU5NTk4ZDc0ODY4Zjg5ZWU3ZWZiNzdkNWJhZGE1NmRhNi4uNGQ0ODljNTgyODQ5ZjQzZDgx
NDFjNGNiMmUwYzRhNDMxYjRhNmYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtf
Y2hlY2suaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVjay5oCkBAIC00LDcgKzQsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcv
bGVha19jaGVja19kaXNhYmxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2tfZGlzYWJs
ZS5jYwppbmRleCBkZjIyYzFjYWU5MWQyOWUzYTc0OWY1NmU5YzNiMDg2NTI4YzYzOWQ4Li45MjRk
NmUzZDU0M2IxYjNmOTA1ZDgyNmVjNzk3MDRiYjRkY2M3NDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvbGVha19jaGVja19kaXNhYmxlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFr
X2NoZWNrX2Rpc2FibGUuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrX2ZhaWxfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9sZWFrX2NoZWNrX2ZhaWxfdGVzdC5jYwppbmRleCBiZjU0MWZlODQx
NTNjZDFkNjg4MmFlOWViMDQyZjhlZTFlMjI0YjFhLi4yODg3Y2VhYjE0N2FkY2E2MmM5MDUxMTUz
NmJlZTM2MjRhMDI2ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVja19m
YWlsX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtfY2hlY2tfZmFpbF90ZXN0LmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVja190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2xlYWtf
Y2hlY2tfdGVzdC5jYwppbmRleCBmZWJkMWVlNGY5MjhkM2Q5Yjg1ZGM3YTg3ZGRjN2U4OWIxMTNl
YTMyLi45M2E3ZWRkMmQwZWI5Y2ViMjA2MzIyOGJjMjEwOGQxNWU1ZmQwMjNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvbGVha19jaGVja190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9sZWFrX2NoZWNrX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZGVidWdnaW5nL3N0YWNrdHJhY2UuY2MKaW5kZXggNDYzZmFkMjY5YzE2YWZiYTNlMzgzZWVkMTI5
MDZjNTQ4ODQ5ZjM4Zi4uOWRlODc4MmY0Y2FlZTgwN2NhY2Y1ZDA1ZDdhYWY3NDE5NjhhZTNkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N0YWNrdHJhY2UuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVi
dWdnaW5nL3N0YWNrdHJhY2UuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIEFCU0xfU1RBQ0tUUkFDRV9JTkxfSEVB
REVSCiAjZWxzZQogIyBlcnJvciBDYW5ub3QgY2FsY3VsYXRlIHN0YWNrIHRyYWNlOiB3aWxsIG5l
ZWQgdG8gd3JpdGUgZm9yIHlvdXIgZW52aXJvbm1lbnQKKwogIyBpbmNsdWRlICJhYnNsL2RlYnVn
Z2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX2FhcmNoNjQtaW5sLmluYyIKICMgaW5jbHVkZSAiYWJz
bC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9hcm0taW5sLmluYyIKICMgaW5jbHVkZSAi
YWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9nZW5lcmljLWlubC5pbmMiCkBAIC04
MCwyOSArODEsMjkgQEAgQUJTTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBpbmxpbmUgaW50IFVu
d2luZCh2b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLAogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCiAKLUFCU0xfQVRUUklCVVRFX05PSU5MSU5FCi1pbnQgR2V0U3RhY2tGcmFtZXModm9pZCoq
IHJlc3VsdCwgaW50KiBzaXplcywgaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpIHsKK0FC
U0xfQVRUUklCVVRFX05PSU5MSU5FIEFCU0xfQVRUUklCVVRFX05PX1RBSUxfQ0FMTCBpbnQgR2V0
U3RhY2tGcmFtZXMoCisgICAgdm9pZCoqIHJlc3VsdCwgaW50KiBzaXplcywgaW50IG1heF9kZXB0
aCwgaW50IHNraXBfY291bnQpIHsKICAgcmV0dXJuIFVud2luZDx0cnVlLCBmYWxzZT4ocmVzdWx0
LCBzaXplcywgbWF4X2RlcHRoLCBza2lwX2NvdW50LCBudWxscHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKIH0KIAotQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUKLWlu
dCBHZXRTdGFja0ZyYW1lc1dpdGhDb250ZXh0KHZvaWQqKiByZXN1bHQsIGludCogc2l6ZXMsIGlu
dCBtYXhfZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcF9jb3Vu
dCwgY29uc3Qgdm9pZCogdWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1p
bl9kcm9wcGVkX2ZyYW1lcykgeworQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUgQUJTTF9BVFRSSUJV
VEVfTk9fVEFJTF9DQUxMIGludAorR2V0U3RhY2tGcmFtZXNXaXRoQ29udGV4dCh2b2lkKiogcmVz
dWx0LCBpbnQqIHNpemVzLCBpbnQgbWF4X2RlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc2tpcF9jb3VudCwgY29uc3Qgdm9pZCogdWMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCogbWluX2Ryb3BwZWRfZnJhbWVzKSB7CiAgIHJldHVybiBVbndpbmQ8dHJ1ZSwgdHJ1
ZT4ocmVzdWx0LCBzaXplcywgbWF4X2RlcHRoLCBza2lwX2NvdW50LCB1YywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtaW5fZHJvcHBlZF9mcmFtZXMpOwogfQogCi1BQlNMX0FUVFJJQlVU
RV9OT0lOTElORQotaW50IEdldFN0YWNrVHJhY2Uodm9pZCoqIHJlc3VsdCwgaW50IG1heF9kZXB0
aCwgaW50IHNraXBfY291bnQpIHsKK0FCU0xfQVRUUklCVVRFX05PSU5MSU5FIEFCU0xfQVRUUklC
VVRFX05PX1RBSUxfQ0FMTCBpbnQgR2V0U3RhY2tUcmFjZSgKKyAgICB2b2lkKiogcmVzdWx0LCBp
bnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgewogICByZXR1cm4gVW53aW5kPGZhbHNlLCBm
YWxzZT4ocmVzdWx0LCBudWxscHRyLCBtYXhfZGVwdGgsIHNraXBfY291bnQsIG51bGxwdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKIH0KIAotQUJTTF9BVFRSSUJV
VEVfTk9JTkxJTkUKLWludCBHZXRTdGFja1RyYWNlV2l0aENvbnRleHQodm9pZCoqIHJlc3VsdCwg
aW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQqIHVjLCBpbnQqIG1pbl9kcm9wcGVkX2ZyYW1lcykgeworQUJTTF9BVFRS
SUJVVEVfTk9JTkxJTkUgQUJTTF9BVFRSSUJVVEVfTk9fVEFJTF9DQUxMIGludAorR2V0U3RhY2tU
cmFjZVdpdGhDb250ZXh0KHZvaWQqKiByZXN1bHQsIGludCBtYXhfZGVwdGgsIGludCBza2lwX2Nv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIHVjLCBpbnQqIG1pbl9k
cm9wcGVkX2ZyYW1lcykgewogICByZXR1cm4gVW53aW5kPGZhbHNlLCB0cnVlPihyZXN1bHQsIG51
bGxwdHIsIG1heF9kZXB0aCwgc2tpcF9jb3VudCwgdWMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1pbl9kcm9wcGVkX2ZyYW1lcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dp
bmcvc3RhY2t0cmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N0YWNrdHJhY2UuaAppbmRleCA4Yjgz
MWUyNjgxNTU4NzAyZjQ1NGQ1ZGJkM2UzN2U4ZTI5M2UyYTNkLi4zZmMxYzAzZjNlNmI5YTExYjIy
MjMwZDQwNTIyMmNjOTExZTczN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0
cmFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNlLmgKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9z
eW1ib2xpemUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplLmNjCmluZGV4IGEzNWUyNGNj
MjlhNGI3ODUxZDQwZTY1MmMzODc4MzZmYjUwODAyMjUuLjI0ZTNhN2YwYTBlNTZlZWE0MTU5NWU5
NDg4NTY3YmNmNWYyZjY2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemUu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJv
bGl6ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZS5oCmluZGV4IDI0ZTZlNjQ3MWM2NTgw
YzA2NWI1NzBkODUxOTM0MmQ3Y2I1OGM4NWYuLmE3M2RiZDllYWJlZGYwNDU1MzdlNDA3YjNkNWNh
MTY5ZTkyZmQyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemUuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfZWxm
LmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfZWxmLmluYwppbmRleCBiMTZhNDJhNjJj
OTVmNTBmZGNiNDkxNGVmNDFmMjc4Y2M0MTAyNDNlLi40NjBkZDAzYTFkNmJmZGVjYzYxZGFiN2Fk
MDdhYWJjZTdmZDk3MWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX2Vs
Zi5pbmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZV9lbGYuaW5jCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zMDUsNyArMzA1LDcgQEAgY2xhc3Mg
U3ltYm9saXplciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqdG1wX2J1ZiwgaW50IHRtcF9idWZfc2l6ZSk7CiAKICAgZW51bSB7Ci0gICAgU1lNQk9M
X0JVRl9TSVpFID0gMjA0OCwKKyAgICBTWU1CT0xfQlVGX1NJWkUgPSAzMDcyLAogICAgIFRNUF9C
VUZfU0laRSA9IDEwMjQsCiAgICAgU1lNQk9MX0NBQ0hFX0xJTkVTID0gMTI4LAogICB9OwpAQCAt
MzMzLDcgKzMzMywxMSBAQCBzdGF0aWMgc3RkOjphdG9taWM8U3ltYm9saXplciAqPiBnX2NhY2hl
ZF9zeW1ib2xpemVyOwogfSAgLy8gbmFtZXNwYWNlCiAKIHN0YXRpYyBpbnQgU3ltYm9saXplclNp
emUoKSB7CisjaWYgZGVmaW5lZChfX3dhc21fXykgfHwgZGVmaW5lZChfX2FzbWpzX18pCiAgIGlu
dCBwYWdlc2l6ZSA9IGdldHBhZ2VzaXplKCk7CisjZWxzZQorICBpbnQgcGFnZXNpemUgPSBzeXNj
b25mKF9TQ19QQUdFU0laRSk7CisjZW5kaWYKICAgcmV0dXJuICgoc2l6ZW9mKFN5bWJvbGl6ZXIp
IC0gMSkgLyBwYWdlc2l6ZSArIDEpICogcGFnZXNpemU7CiB9CiAKQEAgLTc1OCwzNyArNzYyLDI3
IEBAIEZpbmRTeW1ib2xSZXN1bHQgU3ltYm9saXplcjo6R2V0U3ltYm9sRnJvbU9iamVjdEZpbGUo
CiAgICAgfQogICB9CiAKLSAgLy8gQ29uc3VsdCBhIHJlZ3VsYXIgc3ltYm9sIHRhYmxlIGZpcnN0
LgotICBpZiAoIUdldFNlY3Rpb25IZWFkZXJCeVR5cGUob2JqLmZkLCBvYmouZWxmX2hlYWRlci5l
X3NobnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmVsZl9oZWFkZXIuZV9z
aG9mZiwgU0hUX1NZTVRBQiwgJnN5bXRhYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRtcF9idWYsIHRtcF9idWZfc2l6ZSkpIHsKLSAgICByZXR1cm4gU1lNQk9MX05PVF9GT1VORDsK
LSAgfQotICBpZiAoIVJlYWRGcm9tT2Zmc2V0RXhhY3QoCi0gICAgICAgICAgb2JqLmZkLCAmc3Ry
dGFiLCBzaXplb2Yoc3RydGFiKSwKLSAgICAgICAgICBvYmouZWxmX2hlYWRlci5lX3Nob2ZmICsg
c3ltdGFiLnNoX2xpbmsgKiBzaXplb2Yoc3ltdGFiKSkpIHsKLSAgICByZXR1cm4gU1lNQk9MX05P
VF9GT1VORDsKLSAgfQotICBjb25zdCBGaW5kU3ltYm9sUmVzdWx0IHJjID0KLSAgICAgIEZpbmRT
eW1ib2wocGMsIG9iai5mZCwgb3V0LCBvdXRfc2l6ZSwgcmVsb2NhdGlvbiwgJnN0cnRhYiwgJnN5
bXRhYiwKLSAgICAgICAgICAgICAgICAgb3BkX3B0ciwgdG1wX2J1ZiwgdG1wX2J1Zl9zaXplKTsK
LSAgaWYgKHJjICE9IFNZTUJPTF9OT1RfRk9VTkQpIHsKLSAgICByZXR1cm4gcmM7ICAvLyBGb3Vu
ZCB0aGUgc3ltYm9sIGluIGEgcmVndWxhciBzeW1ib2wgdGFibGUuCisgIC8vIENvbnN1bHQgYSBy
ZWd1bGFyIHN5bWJvbCB0YWJsZSwgdGhlbiBmYWxsIGJhY2sgdG8gdGhlIGR5bmFtaWMgc3ltYm9s
IHRhYmxlLgorICBmb3IgKGNvbnN0IGF1dG8gc3ltYm9sX3RhYmxlX3R5cGUgOiB7U0hUX1NZTVRB
QiwgU0hUX0RZTlNZTX0pIHsKKyAgICBpZiAoIUdldFNlY3Rpb25IZWFkZXJCeVR5cGUob2JqLmZk
LCBvYmouZWxmX2hlYWRlci5lX3NobnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvYmouZWxmX2hlYWRlci5lX3Nob2ZmLCBzeW1ib2xfdGFibGVfdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnN5bXRhYiwgdG1wX2J1ZiwgdG1wX2J1Zl9zaXplKSkgewor
ICAgICAgY29udGludWU7CisgICAgfQorICAgIGlmICghUmVhZEZyb21PZmZzZXRFeGFjdCgKKyAg
ICAgICAgICAgIG9iai5mZCwgJnN0cnRhYiwgc2l6ZW9mKHN0cnRhYiksCisgICAgICAgICAgICBv
YmouZWxmX2hlYWRlci5lX3Nob2ZmICsgc3ltdGFiLnNoX2xpbmsgKiBzaXplb2Yoc3ltdGFiKSkp
IHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBjb25zdCBGaW5kU3ltYm9sUmVzdWx0IHJj
ID0KKyAgICAgICAgRmluZFN5bWJvbChwYywgb2JqLmZkLCBvdXQsIG91dF9zaXplLCByZWxvY2F0
aW9uLCAmc3RydGFiLCAmc3ltdGFiLAorICAgICAgICAgICAgICAgICAgIG9wZF9wdHIsIHRtcF9i
dWYsIHRtcF9idWZfc2l6ZSk7CisgICAgaWYgKHJjICE9IFNZTUJPTF9OT1RfRk9VTkQpIHsKKyAg
ICAgIHJldHVybiByYzsKKyAgICB9CiAgIH0KIAotICAvLyBJZiB0aGUgc3ltYm9sIGlzIG5vdCBm
b3VuZCwgdGhlbiBjb25zdWx0IGEgZHluYW1pYyBzeW1ib2wgdGFibGUuCi0gIGlmICghR2V0U2Vj
dGlvbkhlYWRlckJ5VHlwZShvYmouZmQsIG9iai5lbGZfaGVhZGVyLmVfc2hudW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvYmouZWxmX2hlYWRlci5lX3Nob2ZmLCBTSFRfRFlOU1lN
LCAmc3ltdGFiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX2J1ZiwgdG1wX2J1
Zl9zaXplKSkgewotICAgIHJldHVybiBTWU1CT0xfTk9UX0ZPVU5EOwotICB9Ci0gIGlmICghUmVh
ZEZyb21PZmZzZXRFeGFjdCgKLSAgICAgICAgICBvYmouZmQsICZzdHJ0YWIsIHNpemVvZihzdHJ0
YWIpLAotICAgICAgICAgIG9iai5lbGZfaGVhZGVyLmVfc2hvZmYgKyBzeW10YWIuc2hfbGluayAq
IHNpemVvZihzeW10YWIpKSkgewotICAgIHJldHVybiBTWU1CT0xfTk9UX0ZPVU5EOwotICB9Ci0g
IHJldHVybiBGaW5kU3ltYm9sKHBjLCBvYmouZmQsIG91dCwgb3V0X3NpemUsIHJlbG9jYXRpb24s
ICZzdHJ0YWIsICZzeW10YWIsCi0gICAgICAgICAgICAgICAgICAgIG9wZF9wdHIsIHRtcF9idWYs
IHRtcF9idWZfc2l6ZSk7CisgIHJldHVybiBTWU1CT0xfTk9UX0ZPVU5EOwogfQogCiBuYW1lc3Bh
Y2UgewpAQCAtOTIxLDYgKzkxNSwxNCBAQCBzdGF0aWMgY29uc3QgY2hhciAqR2V0SGV4KGNvbnN0
IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQsCiAgIHJldHVybiBwOwogfQogCisvLyBOb3Jt
YWxseSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluICJyP3giIG1hcHMuCisvLyBPbiB0aGUgUG93
ZXJQQywgZnVuY3Rpb24gcG9pbnRlcnMgcG9pbnQgdG8gZGVzY3JpcHRvcnMgaW4gdGhlIC5vcGQK
Ky8vIHNlY3Rpb24uICBUaGUgZGVzY3JpcHRvcnMgdGhlbXNlbHZlcyBhcmUgbm90IGV4ZWN1dGFi
bGUgY29kZSwgc28KKy8vIHdlIG5lZWQgdG8gcmVsYXggdGhlIGNoZWNrIGJlbG93IHRvICJyPz8i
Lgorc3RhdGljIGJvb2wgU2hvdWxkVXNlTWFwcGluZyhjb25zdCBjaGFyICpjb25zdCBmbGFncykg
eworICByZXR1cm4gZmxhZ3NbMF0gPT0gJ3InICYmIChrUGxhdGZvcm1Vc2VzT1BEU2VjdGlvbnMg
fHwgZmxhZ3NbMl0gPT0gJ3gnKTsKK30KKwogLy8gUmVhZCAvcHJvYy9zZWxmL21hcHMgYW5kIHJ1
biAiY2FsbGJhY2siIGZvciBlYWNoIG1tYXBwZWQgZmlsZSBmb3VuZC4gIElmCiAvLyAiY2FsbGJh
Y2siIHJldHVybnMgZmFsc2UsIHN0b3Agc2Nhbm5pbmcgYW5kIHJldHVybiB0cnVlLiBFbHNlIGNv
bnRpbnVlCiAvLyBzY2FubmluZyAvcHJvYy9zZWxmL21hcHMuIFJldHVybiB0cnVlIGlmIG5vIHBh
cnNlIGVycm9yIGlzIGZvdW5kLgpAQCAtOTkwLDEyICs5OTIsOCBAQCBzdGF0aWMgQUJTTF9BVFRS
SUJVVEVfTk9JTkxJTkUgYm9vbCBSZWFkQWRkck1hcCgKICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICAvLyBDaGVjayBmbGFncy4gIE5vcm1hbGx5IHdlIGFyZSBvbmx5IGludGVyZXN0
ZWQgaW4gInIteCIgbWFwcy4gIE9uCi0gICAgLy8gdGhlIFBvd2VyUEMsIGZ1bmN0aW9uIHBvaW50
ZXJzIHBvaW50IHRvIGRlc2NyaXB0b3JzIGluIHRoZSAub3BkCi0gICAgLy8gc2VjdGlvbi4gIFRo
ZSBkZXNjcmlwdG9ycyB0aGVtc2VsdmVzIGFyZSBub3QgZXhlY3V0YWJsZSBjb2RlLiAgU28KLSAg
ICAvLyB3ZSBuZWVkIHRvIHJlbGF4IHRoZSBjaGVjayBiZWxvdyB0byAicioqIi4KLSAgICBpZiAo
bWVtY21wKGZsYWdzX3N0YXJ0LCAici14IiwgMykgIT0gMCAmJiAgLy8gTm90IGEgInIteCIgbWFw
LgotICAgICAgICAhKGtQbGF0Zm9ybVVzZXNPUERTZWN0aW9ucyAmJiBmbGFnc19zdGFydFswXSA9
PSAncicpKSB7CisgICAgLy8gQ2hlY2sgZmxhZ3MuCisgICAgaWYgKCFTaG91bGRVc2VNYXBwaW5n
KGZsYWdzX3N0YXJ0KSkgewogICAgICAgY29udGludWU7ICAvLyBXZSBza2lwIHRoaXMgbWFwLgog
ICAgIH0KICAgICArK2N1cnNvcjsgIC8vIFNraXAgJyAnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVi
dWdnaW5nL3N5bWJvbGl6ZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZV90ZXN0
LmNjCmluZGV4IDgwMjlmYmU5ZDJlNmZiNzIwODE2ZWYwNDM1ZTA3MDk5Y2MzODcyOTIuLjA4MDY4
YzMwN2ZkZGRiYjg0OWQzZjcyNTA1ZmE1ZjFlZWJlZDc3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Rl
YnVnZ2luZy9zeW1ib2xpemVfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXpl
X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTEw
Nyw3ICsxMDcsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqVHJ5U3ltYm9saXplV2l0aExpbWl0KHZv
aWQgKnBjLCBpbnQgbGltaXQpIHsKICAgICBBQlNMX1JBV19DSEVDSyhzdHJubGVuKGhlYXBfYnVm
ZmVyLmdldCgpLCBsaW1pdCkgPCBsaW1pdCwKICAgICAgICAgICAgICAgICAgICAiYWJzbDo6U3lt
Ym9saXplKCkgZGlkIG5vdCBwcm9wZXJseSB0ZXJtaW5hdGUgdGhlIHN0cmluZyIpOwogICAgIHN0
cm5jcHkodHJ5X3N5bWJvbGl6ZV9idWZmZXIsIGhlYXBfYnVmZmVyLmdldCgpLAotICAgICAgICAg
ICAgc2l6ZW9mKHRyeV9zeW1ib2xpemVfYnVmZmVyKSk7CisgICAgICAgICAgICBzaXplb2YodHJ5
X3N5bWJvbGl6ZV9idWZmZXIpIC0gMSk7CisgICAgdHJ5X3N5bWJvbGl6ZV9idWZmZXJbc2l6ZW9m
KHRyeV9zeW1ib2xpemVfYnVmZmVyKSAtIDFdID0gJ1wwJzsKICAgfQogCiAgIHJldHVybiBmb3Vu
ZCA/IHRyeV9zeW1ib2xpemVfYnVmZmVyIDogbnVsbHB0cjsKQEAgLTM5MiwxNiArMzkzLDIwIEBA
IFRFU1QoU3ltYm9saXplLCBGb3JFYWNoU2VjdGlvbikgewogZXh0ZXJuICJDIiB7CiBpbmxpbmUg
dm9pZCAqQUJTTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBpbmxpbmVfZnVuYygpIHsKICAgdm9p
ZCAqcGMgPSBudWxscHRyOwotI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZf
NjRfXykKLSAgX19hc21fXyBfX3ZvbGF0aWxlX18oImNhbGwgMWY7IDE6IHBvcCAlMCIgOiAiPXIi
KHBjKSk7CisjaWYgZGVmaW5lZChfX2kzODZfXykKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18oImNh
bGwgMWY7XG4gMTogcG9wICVbUENdIiA6IFsgUEMgXSAiPXIiKHBjKSk7CisjZWxpZiBkZWZpbmVk
KF9feDg2XzY0X18pCisgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsZWFxIDAoJSVyaXApLCVbUENd
O1xuIiA6IFsgUEMgXSAiPXIiKHBjKSk7CiAjZW5kaWYKICAgcmV0dXJuIHBjOwogfQogCiB2b2lk
ICpBQlNMX0FUVFJJQlVURV9OT0lOTElORSBub25faW5saW5lX2Z1bmMoKSB7CiAgIHZvaWQgKnBj
ID0gbnVsbHB0cjsKLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p
Ci0gIF9fYXNtX18gX192b2xhdGlsZV9fKCJjYWxsIDFmOyAxOiBwb3AgJTAiIDogIj1yIihwYykp
OworI2lmIGRlZmluZWQoX19pMzg2X18pCisgIF9fYXNtX18gX192b2xhdGlsZV9fKCJjYWxsIDFm
O1xuIDE6IHBvcCAlW1BDXSIgOiBbIFBDIF0gIj1yIihwYykpOworI2VsaWYgZGVmaW5lZChfX3g4
Nl82NF9fKQorICBfX2FzbV9fIF9fdm9sYXRpbGVfXygibGVhcSAwKCUlcmlwKSwlW1BDXTtcbiIg
OiBbIFBDIF0gIj1yIihwYykpOwogI2VuZGlmCiAgIHJldHVybiBwYzsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfdW5pbXBsZW1lbnRlZC5pbmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1
Z2dpbmcvc3ltYm9saXplX3VuaW1wbGVtZW50ZWQuaW5jCmluZGV4IDJhM2Y0YWNiMGUxYTJkNjFk
MWViMThkNGJhNWU3ODk1OTNlYjYyZWYuLjdjNTgwZmU0NDdlZDA5MjZkZTQ3YTNiODQ2ZTgwZTVl
YTM0MjA2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfdW5pbXBsZW1l
bnRlZC5pbmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZV91bmltcGxlbWVudGVkLmlu
YwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjYsNiArMjYs
OSBAQCBib29sIFJlbW92ZUFsbFN5bWJvbERlY29yYXRvcnModm9pZCkgeyByZXR1cm4gZmFsc2U7
IH0KIGJvb2wgUmVnaXN0ZXJGaWxlTWFwcGluZ0hpbnQoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lk
ICosIHVpbnQ2NF90LCBjb25zdCBjaGFyICopIHsKICAgcmV0dXJuIGZhbHNlOwogfQorYm9vbCBH
ZXRGaWxlTWFwcGluZ0hpbnQoY29uc3Qgdm9pZCAqKiwgY29uc3Qgdm9pZCAqKiwgdWludDY0X3Qg
KiwgY29uc3QgY2hhciAqKikgeworICByZXR1cm4gZmFsc2U7Cit9CiAKIH0gIC8vIG5hbWVzcGFj
ZSBkZWJ1Z2dpbmdfaW50ZXJuYWwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJv
bGl6ZV93aW4zMi5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3dpbjMyLmluYwppbmRl
eCBlM2ZmZjc0ZDQ5M2NlMzVmMDFhZWQwYmQwZjVkYWRlYmJiNjM4Nzk2Li41YTU1ZjI5ZDI5NjY0
NjBmMmY2ZjAwMzdkZGFiMzY0MDg5ZDE4YmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcv
c3ltYm9saXplX3dpbjMyLmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3dpbjMy
LmluYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTYsOCAr
MTYsMTQgQEAKIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2lu
ZG93cy9kZXNrdG9wL21zNjgwNTc4KHY9dnMuODUpLmFzcHgKIAogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KKworLy8gTVNWQyBoZWFkZXIgRGJnSGVscC5oIGhhcyBhIHdhcm5pbmcgZm9yIGFuIGlnbm9y
ZWQgdHlwZWRlZi4KKyNwcmFnbWEgd2FybmluZyhwdXNoKQorI3ByYWdtYSB3YXJuaW5nKGRpc2Fi
bGU6NDA5MSkKICNpbmNsdWRlIDxEYmdIZWxwLmg+Ci0jcHJhZ21hIGNvbW1lbnQobGliLCAiRGJn
SGVscCIpCisjcHJhZ21hIHdhcm5pbmcocG9wKQorCisjcHJhZ21hIGNvbW1lbnQobGliLCAiZGJn
aGVscC5saWIiKQogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNzdHJpbmc+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL0JVSUxELmJh
emVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJmZTYxZWFhOGE4YjU5M2YxOWU1Yzg2N2E2NGMzZjRjNWYxM2RjN2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9CVUlMRC5iYXplbApAQCAtMCwwICsxLDM4
NCBAQAorIworIyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorIworIyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
KyMKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisj
CisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisKK2xvYWQoCisgICAgIi8v
YWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKKyAgICAiQUJTTF9ERUZBVUxUX0NPUFRT
IiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRTIiwKKyAgICAiQUJTTF9URVNUX0NPUFRTIiwK
KykKKworcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMi
XSkKKworbGljZW5zZXMoWyJub3RpY2UiXSkgICMgQXBhY2hlIDIuMAorCitjY19saWJyYXJ5KAor
ICAgIG5hbWUgPSAiaW50ZXJuYWwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJpbnRlcm5hbC9w
cm9ncmFtX25hbWUuY2MiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgImludGVybmFs
L3BhdGhfdXRpbC5oIiwKKyAgICAgICAgImludGVybmFsL3Byb2dyYW1fbmFtZS5oIiwKKyAgICBd
LAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9E
RUZBVUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2wvZmxh
Z3M6X19wa2dfXyIsCisgICAgXSwKKyAgICBkZXBzID0gWworICAgICAgICAiLy9hYnNsL3N0cmlu
Z3MiLAorICAgICAgICAiLy9hYnNsL3N5bmNocm9uaXphdGlvbiIsCisgICAgXSwKKykKKworY2Nf
bGlicmFyeSgKKyAgICBuYW1lID0gImNvbmZpZyIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgInVz
YWdlX2NvbmZpZy5jYyIsCisgICAgXSwKKyAgICBoZHJzID0gWworICAgICAgICAiY29uZmlnLmgi
LAorICAgICAgICAidXNhZ2VfY29uZmlnLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RF
RkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAg
ZGVwcyA9IFsKKyAgICAgICAgIjppbnRlcm5hbCIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3Jl
X2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3N5
bmNocm9uaXphdGlvbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gIm1h
cnNoYWxsaW5nIiwKKyAgICBzcmNzID0gWworICAgICAgICAibWFyc2hhbGxpbmcuY2MiLAorICAg
IF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgIm1hcnNoYWxsaW5nLmgiLAorICAgIF0sCisgICAg
Y29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVy
cyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5nczpz
dHJfZm9ybWF0IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFuZGxl
IiwKKyAgICBzcmNzID0gWworICAgICAgICAiaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmNjIiwK
KyAgICBdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJpbnRlcm5hbC9jb21tYW5kbGluZWZsYWcu
aCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB2aXNpYmlsaXR5ID0gWworICAgICAgICAi
Ly9hYnNsL2ZsYWdzOl9fcGtnX18iLAorICAgIF0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpj
b25maWciLAorICAgICAgICAiOm1hcnNoYWxsaW5nIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwK
KyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvc3Ry
aW5ncyIsCisgICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0aW9uIiwKKyAgICAgICAgIi8vYWJz
bC90eXBlczpvcHRpb25hbCIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0g
InJlZ2lzdHJ5IiwKKyAgICBzcmNzID0gWworICAgICAgICAiaW50ZXJuYWwvcmVnaXN0cnkuY2Mi
LAorICAgICAgICAiaW50ZXJuYWwvdHlwZV9lcmFzZWQuY2MiLAorICAgIF0sCisgICAgaGRycyA9
IFsKKyAgICAgICAgImludGVybmFsL3JlZ2lzdHJ5LmgiLAorICAgICAgICAiaW50ZXJuYWwvdHlw
ZV9lcmFzZWQuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAg
ICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB2aXNpYmlsaXR5ID0gWwor
ICAgICAgICAiLy9hYnNsL2ZsYWdzOl9fcGtnX18iLAorICAgIF0sCisgICAgZGVwcyA9IFsKKyAg
ICAgICAgIjpjb25maWciLAorICAgICAgICAiOmhhbmRsZSIsCisgICAgICAgICIvL2Fic2wvYmFz
ZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNs
L2Jhc2U6ZHluYW1pY19hbm5vdGF0aW9ucyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisg
ICAgICAgICIvL2Fic2wvc3luY2hyb25pemF0aW9uIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5
KAorICAgIG5hbWUgPSAiZmxhZyIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImZsYWcuY2MiLAor
ICAgIF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgImRlY2xhcmUuaCIsCisgICAgICAgICJmbGFn
LmgiLAorICAgICAgICAiaW50ZXJuYWwvZmxhZy5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJT
TF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29uZmlnIiwKKyAgICAgICAgIjpoYW5kbGUiLAorICAg
ICAgICAiOm1hcnNoYWxsaW5nIiwKKyAgICAgICAgIjpyZWdpc3RyeSIsCisgICAgICAgICIvL2Fi
c2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAi
Ly9hYnNsL3N0cmluZ3MiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ1
c2FnZV9pbnRlcm5hbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImludGVybmFsL3VzYWdlLmNj
IiwKKyAgICBdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJpbnRlcm5hbC91c2FnZS5oIiwKKyAg
ICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHZpc2liaWxpdHkgPSBbCisgICAgICAgICIvL2Fic2wv
ZmxhZ3M6X19wa2dfXyIsCisgICAgXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbmZpZyIs
CisgICAgICAgICI6ZmxhZyIsCisgICAgICAgICI6aGFuZGxlIiwKKyAgICAgICAgIjppbnRlcm5h
bCIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvc3luY2hyb25p
emF0aW9uIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAidXNhZ2UiLAor
ICAgIHNyY3MgPSBbCisgICAgICAgICJ1c2FnZS5jYyIsCisgICAgXSwKKyAgICBoZHJzID0gWwor
ICAgICAgICAidXNhZ2UuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWwor
ICAgICAgICAiOnVzYWdlX2ludGVybmFsIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAg
ICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb24iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnko
CisgICAgbmFtZSA9ICJwYXJzZSIsCisgICAgc3JjcyA9IFsicGFyc2UuY2MiXSwKKyAgICBoZHJz
ID0gWworICAgICAgICAiaW50ZXJuYWwvcGFyc2UuaCIsCisgICAgICAgICJwYXJzZS5oIiwKKyAg
ICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29uZmlnIiwKKyAg
ICAgICAgIjpmbGFnIiwKKyAgICAgICAgIjpoYW5kbGUiLAorICAgICAgICAiOmludGVybmFsIiwK
KyAgICAgICAgIjpyZWdpc3RyeSIsCisgICAgICAgICI6dXNhZ2UiLAorICAgICAgICAiOnVzYWdl
X2ludGVybmFsIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9z
eW5jaHJvbml6YXRpb24iLAorICAgIF0sCispCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVW5p
dCB0ZXN0cyBpbiBhbHBhaGFiZXRpY2FsIG9yZGVyLgorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
Y29tbWFuZGxpbmVmbGFnX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBb
CisgICAgICAgICJpbnRlcm5hbC9jb21tYW5kbGluZWZsYWdfdGVzdC5jYyIsCisgICAgXSwKKyAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmZsYWciLAorICAgICAgICAiOmhhbmRs
ZSIsCisgICAgICAgICI6cmVnaXN0cnkiLAorICAgICAgICAiLy9hYnNsL21lbW9yeSIsCisgICAg
ICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImNvbmZpZ190
ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiY29uZmln
X3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlu
a29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpj
b25maWciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAor
ICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJmbGFnX3Rlc3QiLAorICAgIHNpemUg
PSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJmbGFnX3Rlc3QuY2MiLAorICAgICAg
ICAiZmxhZ190ZXN0X2RlZnMuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsK
KyAgICAgICAgIjpmbGFnIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIkBj
b21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0
KAorICAgIG5hbWUgPSAibWFyc2hhbGxpbmdfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisg
ICAgc3JjcyA9IFsKKyAgICAgICAgIm1hcnNoYWxsaW5nX3Rlc3QuY2MiLAorICAgIF0sCisgICAg
Y29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjptYXJzaGFsbGluZyIsCisgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVz
dCgKKyAgICBuYW1lID0gInBhdGhfdXRpbF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAg
ICBzcmNzID0gWworICAgICAgICAiaW50ZXJuYWwvcGF0aF91dGlsX3Rlc3QuY2MiLAorICAgIF0s
CisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjppbnRlcm5hbCIsCisgICAgICAg
ICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2Nf
dGVzdCgKKyAgICBuYW1lID0gInBhcnNlX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAg
IHNyY3MgPSBbCisgICAgICAgICJwYXJzZV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6ZmxhZyIsCisgICAgICAgICI6cGFyc2UiLAorICAgICAg
ICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6c2NvcGVkX3NldF9lbnYiLAor
ICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOnNwYW4iLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCisp
CisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJwcm9ncmFtX25hbWVfdGVzdCIsCisgICAgc2l6ZSA9
ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImludGVybmFsL3Byb2dyYW1fbmFtZV90
ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtv
cHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aW50
ZXJuYWwiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiQGNvbV9nb29nbGVf
Z29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFt
ZSA9ICJ0eXBlX2VyYXNlZF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0g
WworICAgICAgICAiaW50ZXJuYWwvdHlwZV9lcmFzZWRfdGVzdC5jYyIsCisgICAgXSwKKyAgICBj
b3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmZsYWciLAorICAgICAgICAiOnJlZ2lzdHJ5
IiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCisp
CisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJ1c2FnZV9jb25maWdfdGVzdCIsCisgICAgc2l6ZSA9
ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgInVzYWdlX2NvbmZpZ190ZXN0LmNjIiwK
KyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29uZmlnIiwKKyAg
ICAgICAgIjppbnRlcm5hbCIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVz
dCgKKyAgICBuYW1lID0gInVzYWdlX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNy
Y3MgPSBbCisgICAgICAgICJpbnRlcm5hbC91c2FnZV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29uZmlnIiwKKyAgICAgICAgIjpmbGFnIiwK
KyAgICAgICAgIjppbnRlcm5hbCIsCisgICAgICAgICI6cGFyc2UiLAorICAgICAgICAiOnVzYWdl
IiwKKyAgICAgICAgIjp1c2FnZV9pbnRlcm5hbCIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwK
KyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRl
c3QvLzpndGVzdCIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZmxhZ3MvQlVJTEQuZ24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDczYzc0YWM0YTliNGRhYjM4ZmU2
MDNmZDFjZWZjOWQxOGE1NTZiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL0JVSUxE
LmduCkBAIC0wLDAgKzEsMjUyIEBACisjIENvcHlyaWdodCAyMDE5IFRoZSBDaHJvbWl1bSBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKK2ltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIikK
KworIyBVc2FnZSBvZiBBYnNlaWwgaW4gQ2hyb21pdW0gaXMgZ3VhcmRlZCBieSBhbiBleHBsaWNp
dCBvcHQtaW4gbGlzdCwgYmVmb3JlCisjIGFkZGluZyBwcm9qZWN0cyB0byB0aGlzIGxpc3QgcGxl
YXNlIHJlYWNoIG91dCB0byBjeHhAY2hyb21pdW0ub3JnIGFuZCBDQzoKKyMgLSBodHRwczovL2Nz
LmNocm9taXVtLm9yZy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9PV05FUlMK
KyMKKyMgTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgYXQ6CisjIGh0dHBzOi8vZG9jcy5n
b29nbGUuY29tL2RvY3VtZW50L2QvMURnUzEtQTNyemJvVExqcGY0bTFzcWtKZ1dqbllfUnUyZG9r
azFYMXZCRFUKK2lmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CisgIHZpc2liaWxpdHkgPSBbCisg
ICAgIi8vbGliYXNzaXN0YW50LyoiLAorICAgICIvL3RoaXJkX3BhcnR5L3dlYnJ0Yy8qIiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAorICAgICIvL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3Q6Z3Rlc3QiLAorICBdCit9IGVsc2UgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorfQor
CisjIEJ1aWxkIHRhcmdldHMgaW4gdGhpcyBtb2R1bGUgYXJlIG1hcmtlZCBhcyAidGVzdG9ubHki
IGJlY2F1c2UgaXQgaXMgbm90IGNsZWFyCisjIGhvdyBBQlNMX0ZMQUcgd2lsbCBpbnRlcmFjdCB3
aXRoIC8vYmFzZS9jb21tYW5kX2xpbmUuaC4KKyMgSWYgdGhpcyBpcyBhIHByb2JsZW0sIGZlZWwg
ZnJlZSB0byByZW1vdmUgInRlc3Rvbmx5IiBhbmQgdXNlICJhc3NlcnRfbm9fZGVwcyIKKyMgb24g
dGhlIG1haW4gQ2hyb21lIGJpbmFyeS4KKworc291cmNlX3NldCgiaW50ZXJuYWwiKSB7CisgIHRl
c3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNo
cm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBp
bGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJz
bF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0gWwor
ICAgICJpbnRlcm5hbC9wcm9ncmFtX25hbWUuY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAi
aW50ZXJuYWwvcGF0aF91dGlsLmgiLAorICAgICJpbnRlcm5hbC9wcm9ncmFtX25hbWUuaCIsCisg
IF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3N5bmNocm9uaXphdGlv
biIsCisgIF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxpdHkgKz0gWyAiOioiIF0KK30K
Kworc291cmNlX3NldCgiY29uZmlnIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAt
PSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3Mg
Kz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBd
CisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5j
bHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAidXNhZ2VfY29uZmlnLmNjIiwKKyAg
XQorICBwdWJsaWMgPSBbCisgICAgImNvbmZpZy5oIiwKKyAgICAidXNhZ2VfY29uZmlnLmgiLAor
ICBdCisgIGRlcHMgPSBbCisgICAgIjppbnRlcm5hbCIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFk
ZXJzIiwKKyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3N5bmNocm9uaXphdGlvbiIsCisgIF0K
K30KKworc291cmNlX3NldCgibWFyc2hhbGxpbmciKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBj
b25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAg
Y29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2Nv
ZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19j
YyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6
YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0gWworICAgICJtYXJzaGFsbGluZy5j
YyIsCisgIF0KKyAgcHVibGljID0gWworICAgICJtYXJzaGFsbGluZy5oIiwKKyAgXQorICBkZXBz
ID0gWworICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL3N0cmluZ3MiLAorICAg
ICIuLi9zdHJpbmdzOnN0cl9mb3JtYXQiLAorICBdCit9CisKK3NvdXJjZV9zZXQoImhhbmRsZSIp
IHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJj
ZXMgPSBbCisgICAgImludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5jYyIsCisgIF0KKyAgcHVibGlj
ID0gWworICAgICJpbnRlcm5hbC9jb21tYW5kbGluZWZsYWcuaCIsCisgIF0KKyAgZGVwcyA9IFsK
KyAgICAiOmNvbmZpZyIsCisgICAgIjptYXJzaGFsbGluZyIsCisgICAgIi4uL2Jhc2UiLAorICAg
ICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL3N0cmluZ3MiLAorICAgICIuLi9zeW5j
aHJvbml6YXRpb24iLAorICAgICIuLi90eXBlczpvcHRpb25hbCIsCisgIF0KKyAgdmlzaWJpbGl0
eSA9IFtdCisgIHZpc2liaWxpdHkgKz0gWyAiOioiIF0KK30KKworc291cmNlX3NldCgicmVnaXN0
cnkiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmln
L2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQv
Y29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3Mg
PSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBz
b3VyY2VzID0gWworICAgICJpbnRlcm5hbC9yZWdpc3RyeS5jYyIsCisgICAgImludGVybmFsL3R5
cGVfZXJhc2VkLmNjIiwKKyAgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL3JlZ2lzdHJ5
LmgiLAorICAgICJpbnRlcm5hbC90eXBlX2VyYXNlZC5oIiwKKyAgXQorICBkZXBzID0gWworICAg
ICI6Y29uZmlnIiwKKyAgICAiOmhhbmRsZSIsCisgICAgIi4uL2Jhc2UiLAorICAgICIuLi9iYXNl
OmNvcmVfaGVhZGVycyIsCisgICAgIi4uL2Jhc2U6ZHluYW1pY19hbm5vdGF0aW9ucyIsCisgICAg
Ii4uL3N0cmluZ3MiLAorICAgICIuLi9zeW5jaHJvbml6YXRpb24iLAorICBdCisgIHZpc2liaWxp
dHkgPSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIjoqIiBdCit9CisKK3NvdXJjZV9zZXQoImZsYWci
KSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2Nv
bXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29u
ZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBb
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3Vy
Y2VzID0gWworICAgICJmbGFnLmNjIiwKKyAgXQorICBwdWJsaWMgPSBbCisgICAgImRlY2xhcmUu
aCIsCisgICAgImZsYWcuaCIsCisgICAgImludGVybmFsL2ZsYWcuaCIsCisgIF0KKyAgZGVwcyA9
IFsKKyAgICAiOmNvbmZpZyIsCisgICAgIjpoYW5kbGUiLAorICAgICI6bWFyc2hhbGxpbmciLAor
ICAgICI6cmVnaXN0cnkiLAorICAgICIuLi9iYXNlIiwKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRl
cnMiLAorICAgICIuLi9zdHJpbmdzIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1c2FnZV9pbnRl
cm5hbCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmln
cyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisg
IHNvdXJjZXMgPSBbCisgICAgImludGVybmFsL3VzYWdlLmNjIiwKKyAgXQorICBwdWJsaWMgPSBb
CisgICAgImludGVybmFsL3VzYWdlLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb25maWci
LAorICAgICI6ZmxhZyIsCisgICAgIjpoYW5kbGUiLAorICAgICI6aW50ZXJuYWwiLAorICAgICIu
Li9zdHJpbmdzIiwKKyAgICAiLi4vc3luY2hyb25pemF0aW9uIiwKKyAgXQorICB2aXNpYmlsaXR5
ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICI6KiIgXQorfQorCitzb3VyY2Vfc2V0KCJ1c2FnZSIp
IHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJj
ZXMgPSBbCisgICAgInVzYWdlLmNjIiwKKyAgXQorICBwdWJsaWMgPSBbCisgICAgInVzYWdlLmgi
LAorICBdCisgIGRlcHMgPSBbCisgICAgIjp1c2FnZV9pbnRlcm5hbCIsCisgICAgIi4uL3N0cmlu
Z3MiLAorICAgICIuLi9zeW5jaHJvbml6YXRpb24iLAorICBdCit9CisKK3NvdXJjZV9zZXQoInBh
cnNlIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxk
L2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdz
ID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAg
c291cmNlcyA9IFsKKyAgICAicGFyc2UuY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50
ZXJuYWwvcGFyc2UuaCIsCisgICAgInBhcnNlLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpj
b25maWciLAorICAgICI6ZmxhZyIsCisgICAgIjpoYW5kbGUiLAorICAgICI6aW50ZXJuYWwiLAor
ICAgICI6cmVnaXN0cnkiLAorICAgICI6dXNhZ2UiLAorICAgICI6dXNhZ2VfaW50ZXJuYWwiLAor
ICAgICIuLi9zdHJpbmdzIiwKKyAgICAiLi4vc3luY2hyb25pemF0aW9uIiwKKyAgXQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZmxhZ3MvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9DTWFrZUxp
c3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mYTFkNGUxNzdiM2U1YmMzYzhmZjcyYTg0NTZmYTVkMTljYTAz
M2M3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvQ01ha2VMaXN0cy50eHQKQEAgLTAs
MCArMSwzNDYgQEAKKyMKKyMgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorIwor
IyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKyMKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisKKyMgSW50ZXJu
YWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJh
cnkoCisgIE5BTUUKKyAgICBmbGFnc19pbnRlcm5hbAorICBTUkNTCisgICAgImludGVybmFsL3By
b2dyYW1fbmFtZS5jYyIKKyAgSERSUworICAgICJpbnRlcm5hbC9wYXRoX3V0aWwuaCIKKyAgICAi
aW50ZXJuYWwvcHJvZ3JhbV9uYW1lLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09Q
VFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAg
ICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgIFBVQkxJQworKQor
CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBmbGFnc19jb25maWcKKyAgU1JDUworICAg
ICJ1c2FnZV9jb25maWcuY2MiCisgIEhEUlMKKyAgICAiY29uZmlnLmgiCisgICAgInVzYWdlX2Nv
bmZpZy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6ZmxhZ3NfaW50
ZXJuYWwKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJz
bDo6c3luY2hyb25pemF0aW9uCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGZs
YWdzX21hcnNoYWxsaW5nCisgIFNSQ1MKKyAgICAibWFyc2hhbGxpbmcuY2MiCisgIEhEUlMKKyAg
ICAibWFyc2hhbGxpbmcuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAg
TElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6
OmNvcmVfaGVhZGVycworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzdHJfZm9ybWF0Cisp
CisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCith
YnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBmbGFnc19oYW5kbGUKKyAgU1JDUworICAgICJp
bnRlcm5hbC9jb21tYW5kbGluZWZsYWcuY2MiCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvY29tbWFu
ZGxpbmVmbGFnLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFn
c19jb25maWcKKyAgICBhYnNsOjpmbGFnc19tYXJzaGFsbGluZworICAgIGFic2w6OmJhc2UKKyAg
ICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6c3luY2hy
b25pemF0aW9uCisgICAgYWJzbDo6b3B0aW9uYWwKKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdl
dCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQor
ICAgIGZsYWdzX3JlZ2lzdHJ5CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcmVnaXN0cnkuY2MiCisg
ICAgImludGVybmFsL3R5cGVfZXJhc2VkLmNjIgorICBIRFJTCisgICAgImludGVybmFsL3JlZ2lz
dHJ5LmgiCisgICAgImludGVybmFsL3R5cGVfZXJhc2VkLmgiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpmbGFnc19jb25maWcKKyAgICBhYnNsOjpmbGFnc19oYW5kbGUK
KyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZHluYW1p
Y19hbm5vdGF0aW9ucworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRp
b24KKykKKworYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgZmxhZ3MKKyAgU1JDUworICAg
ICJmbGFnLmNjIgorICBIRFJTCisgICAgImRlY2xhcmUuaCIKKyAgICAiZmxhZy5oIgorICAgICJp
bnRlcm5hbC9mbGFnLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJ
TktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpm
bGFnc19jb25maWcKKyAgICBhYnNsOjpmbGFnc19oYW5kbGUKKyAgICBhYnNsOjpmbGFnc19tYXJz
aGFsbGluZworICAgIGFic2w6OmZsYWdzX3JlZ2lzdHJ5CisgICAgYWJzbDo6YmFzZQorICAgIGFi
c2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnN0cmluZ3MKKykKKworIyBJbnRlcm5hbC1vbmx5
IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAg
TkFNRQorICAgIGZsYWdzX3VzYWdlX2ludGVybmFsCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvdXNh
Z2UuY2MiCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdXNhZ2UuaCIKKyAgQ09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BU
U30KKyAgREVQUworICAgIGFic2w6OmZsYWdzX2NvbmZpZworICAgIGFic2w6OmZsYWdzCisgICAg
YWJzbDo6ZmxhZ3NfaGFuZGxlCisgICAgYWJzbDo6ZmxhZ3NfaW50ZXJuYWwKKyAgICBhYnNsOjpz
dHJpbmdzCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCispCisKK2Fic2xfY2NfbGlicmFyeSgK
KyAgTkFNRQorICAgIGZsYWdzX3VzYWdlCisgIFNSQ1MKKyAgICAidXNhZ2UuY2MiCisgIEhEUlMK
KyAgICAidXNhZ2UuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElO
S09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmZs
YWdzX3VzYWdlX2ludGVybmFsCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN5bmNocm9u
aXphdGlvbgorKQorCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBmbGFnc19wYXJzZQor
ICBTUkNTCisgICAgInBhcnNlLmNjIgorICBIRFJTCisgICAgImludGVybmFsL3BhcnNlLmgiCisg
ICAgInBhcnNlLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFn
c19jb25maWcKKyAgICBhYnNsOjpmbGFncworICAgIGFic2w6OmZsYWdzX2hhbmRsZQorICAgIGFi
c2w6OmZsYWdzX2ludGVybmFsCisgICAgYWJzbDo6ZmxhZ3NfcmVnaXN0cnkKKyAgICBhYnNsOjpm
bGFnc191c2FnZQorICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24K
KykKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBVbml0IHRlc3RzIGluIGFscGFoYWJldGljYWwg
b3JkZXIuCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGZsYWdzX2NvbW1hbmRsaW5lZmxh
Z190ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnX3Rlc3QuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFncwor
ICAgIGFic2w6OmZsYWdzX2hhbmRsZQorICAgIGFic2w6OmZsYWdzX3JlZ2lzdHJ5CisgICAgYWJz
bDo6bWVtb3J5CisgICAgYWJzbDo6c3RyaW5ncworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9j
Y190ZXN0KAorICBOQU1FCisgICAgZmxhZ3NfY29uZmlnX3Rlc3QKKyAgU1JDUworICAgICJjb25m
aWdfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAg
IGFic2w6OmZsYWdzX2NvbmZpZworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAor
ICBOQU1FCisgICAgZmxhZ3NfZmxhZ190ZXN0CisgIFNSQ1MKKyAgICAiZmxhZ190ZXN0LmNjIgor
ICAgICJmbGFnX3Rlc3RfZGVmcy5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OmZsYWdzCisgICAgYWJzbDo6c3RyaW5ncworICAgIGd0ZXN0X21h
aW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgZmxhZ3NfbWFyc2hhbGxpbmdfdGVz
dAorICBTUkNTCisgICAgIm1hcnNoYWxsaW5nX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNM
X1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFnc19tYXJzaGFsbGluZworICAgIGd0
ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgZmxhZ3NfcGFyc2VfdGVz
dAorICBTUkNTCisgICAgInBhcnNlX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFncworICAgIGFic2w6OmJhc2UKKyAgICBhYnNs
OjpmbGFnc19wYXJzZQorICAgIGFic2w6OnNjb3BlZF9zZXRfZW52CisgICAgYWJzbDo6c3Bhbgor
ICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9ja19tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAg
TkFNRQorICAgIGZsYWdzX3BhdGhfdXRpbF90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcGF0
aF91dGlsX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpmbGFnc19pbnRlcm5hbAorICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190
ZXN0KAorICBOQU1FCisgICAgZmxhZ3NfcHJvZ3JhbV9uYW1lX3Rlc3QKKyAgU1JDUworICAgICJp
bnRlcm5hbC9wcm9ncmFtX25hbWVfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6OmZsYWdzX2ludGVybmFsCisgICAgYWJzbDo6c3RyaW5n
cworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgZmxhZ3Nf
dHlwZV9lcmFzZWRfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3R5cGVfZXJhc2VkX3Rlc3Qu
Y2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpm
bGFncworICAgIGFic2w6OmZsYWdzX3JlZ2lzdHJ5CisgICAgYWJzbDo6bWVtb3J5CisgICAgYWJz
bDo6c3RyaW5ncworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisg
ICAgZmxhZ3NfdXNhZ2VfY29uZmlnX3Rlc3QKKyAgU1JDUworICAgICJ1c2FnZV9jb25maWdfdGVz
dC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6
OmZsYWdzX2NvbmZpZworICAgIGFic2w6OmZsYWdzX2ludGVybmFsCisgICAgYWJzbDo6c3RyaW5n
cworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgZmxhZ3Nf
dXNhZ2VfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3VzYWdlX3Rlc3QuY2MiCisgIENPUFRT
CisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpmbGFnc19jb25maWcK
KyAgICBhYnNsOjpmbGFncworICAgIGFic2w6OmZsYWdzX2ludGVybmFsCisgICAgYWJzbDo6Zmxh
Z3NfcGFyc2UKKyAgICBhYnNsOjpmbGFnc191c2FnZQorICAgIGFic2w6Om1lbW9yeQorICAgIGFi
c2w6OnN0cmluZ3MKKyAgICBndGVzdAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvY29uZmln
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9mbGFncy9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWZkOTdhZDBmMzdhNTk5MjY4
ZTRkMDMzNjA2YmViMzE3ODM2OWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvY29u
ZmlnLmgKQEAgLTAsMCArMSw0OCBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0ZMQUdTX0NPTkZJR19IXworI2RlZmluZSBBQlNM
X0ZMQUdTX0NPTkZJR19IXworCisvLyBEZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHN0cmlwIHN0cmlu
ZyBsaXRlcmFscyBmcm9tIHRoZSBGbGFnIG9iamVjdHMuCisvLyBCeSBkZWZhdWx0IHdlIHN0cmlw
IHN0cmluZyBsaXRlcmFscyBvbiBtb2JpbGUgcGxhdGZvcm1zLgorI2lmICFkZWZpbmVkKEFCU0xf
RkxBR1NfU1RSSVBfTkFNRVMpCisKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorI2RlZmluZSBB
QlNMX0ZMQUdTX1NUUklQX05BTUVTIDEKKworI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisjaW5j
bHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjaWYgZGVmaW5lZChUQVJHRVRfT1NfSVBIT05F
KSAmJiBUQVJHRVRfT1NfSVBIT05FCisjZGVmaW5lIEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMgMQor
I2VsaWYgZGVmaW5lZChUQVJHRVRfT1NfRU1CRURERUQpICYmIFRBUkdFVF9PU19FTUJFRERFRAor
I2RlZmluZSBBQlNMX0ZMQUdTX1NUUklQX05BTUVTIDEKKyNlbmRpZiAgLy8gVEFSR0VUX09TXyoK
KyNlbmRpZgorCisjZW5kaWYgIC8vICFkZWZpbmVkKEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMpCisK
KyNpZiAhZGVmaW5lZChBQlNMX0ZMQUdTX1NUUklQX05BTUVTKQorLy8gSWYgQUJTTF9GTEFHU19T
VFJJUF9OQU1FUyB3YXNuJ3Qgc2V0IG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgYWJvdmUsCisvLyB0
aGUgZGVmYXVsdCBpcyBub3QgdG8gc3RyaXAuCisjZGVmaW5lIEFCU0xfRkxBR1NfU1RSSVBfTkFN
RVMgMAorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChBQlNMX0ZMQUdTX1NUUklQX0hFTFApCisvLyBC
eSBkZWZhdWx0LCBpZiB3ZSBzdHJpcCBuYW1lcywgd2UgYWxzbyBzdHJpcCBoZWxwLgorI2RlZmlu
ZSBBQlNMX0ZMQUdTX1NUUklQX0hFTFAgQUJTTF9GTEFHU19TVFJJUF9OQU1FUworI2VuZGlmCisK
KyNlbmRpZiAgLy8gQUJTTF9GTEFHU19DT05GSUdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdz
L2NvbmZpZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvY29uZmlnX3Rlc3QuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjM4OTk4NjY3ZTcwNmMzMTVjOWU4ZTAyNmVjNjlmMmQ1MmY1YThjOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL2NvbmZpZ190ZXN0LmNjCkBAIC0wLDAgKzEsNjEgQEAKKy8vICBDb3B5
cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3Mv
Y29uZmlnLmgiCisKKyNpZmRlZiBfX0FQUExFX18KKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25h
bHMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmbmRlZiBBQlNM
X0ZMQUdTX1NUUklQX05BTUVTCisjZXJyb3IgQUJTTF9GTEFHU19TVFJJUF9OQU1FUyBpcyBub3Qg
ZGVmaW5lZAorI2VuZGlmCisKKyNpZm5kZWYgQUJTTF9GTEFHU19TVFJJUF9IRUxQCisjZXJyb3Ig
QUJTTF9GTEFHU19TVFJJUF9IRUxQIGlzIG5vdCBkZWZpbmVkCisjZW5kaWYKKworbmFtZXNwYWNl
IHsKKworLy8gVGVzdCB0aGF0IEFCU0xfRkxBR1NfU1RSSVBfTkFNRVMgYW5kIEFCU0xfRkxBR1Nf
U1RSSVBfSEVMUCBhcmUgY29uZmlndXJlZCBob3cKKy8vIHdlIGV4cGVjdCB0aGVtIHRvIGJlIGNv
bmZpZ3VyZWQgYnkgZGVmYXVsdC4gSWYgeW91IG92ZXJyaWRlIHRoaXMKKy8vIGNvbmZpZ3VyYXRp
b24sIHRoaXMgdGVzdCB3aWxsIGZhaWwsIGJ1dCB0aGUgY29kZSBzaG91bGQgc3RpbGwgYmUgc2Fm
ZSB0byB1c2UuCitURVNUKEZsYWdzQ29uZmlnVGVzdCwgVGVzdCkgeworI2lmIGRlZmluZWQoX19B
TkRST0lEX18pCisgIEVYUEVDVF9FUShBQlNMX0ZMQUdTX1NUUklQX05BTUVTLCAxKTsKKyAgRVhQ
RUNUX0VRKEFCU0xfRkxBR1NfU1RSSVBfSEVMUCwgMSk7CisjZWxpZiBkZWZpbmVkKF9fbXlyaWFk
Ml9fKQorICBFWFBFQ1RfRVEoQUJTTF9GTEFHU19TVFJJUF9OQU1FUywgMCk7CisgIEVYUEVDVF9F
UShBQlNMX0ZMQUdTX1NUUklQX0hFTFAsIDApOworI2VsaWYgZGVmaW5lZChUQVJHRVRfT1NfSVBI
T05FKSAmJiBUQVJHRVRfT1NfSVBIT05FCisgIEVYUEVDVF9FUShBQlNMX0ZMQUdTX1NUUklQX05B
TUVTLCAxKTsKKyAgRVhQRUNUX0VRKEFCU0xfRkxBR1NfU1RSSVBfSEVMUCwgMSk7CisjZWxpZiBk
ZWZpbmVkKFRBUkdFVF9PU19FTUJFRERFRCkgJiYgVEFSR0VUX09TX0VNQkVEREVECisgIEVYUEVD
VF9FUShBQlNMX0ZMQUdTX1NUUklQX05BTUVTLCAxKTsKKyAgRVhQRUNUX0VRKEFCU0xfRkxBR1Nf
U1RSSVBfSEVMUCwgMSk7CisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgRVhQRUNUX0VRKEFC
U0xfRkxBR1NfU1RSSVBfTkFNRVMsIDApOworICBFWFBFQ1RfRVEoQUJTTF9GTEFHU19TVFJJUF9I
RUxQLCAwKTsKKyNlbGlmIGRlZmluZWQoX1dJTjMyKQorICBFWFBFQ1RfRVEoQUJTTF9GTEFHU19T
VFJJUF9OQU1FUywgMCk7CisgIEVYUEVDVF9FUShBQlNMX0ZMQUdTX1NUUklQX0hFTFAsIDApOwor
I2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCisgIEVYUEVDVF9FUShBQlNMX0ZMQUdTX1NUUklQX05B
TUVTLCAwKTsKKyAgRVhQRUNUX0VRKEFCU0xfRkxBR1NfU1RSSVBfSEVMUCwgMCk7CisjZW5kaWYK
K30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9kZWNsYXJlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9kZWNsYXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTU2ZWM1ZTlhZWY5OTJiMmE3ZmU3
YzIxYThlNzIxZDNjN2Y4OGZkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2RlY2xh
cmUuaApAQCAtMCwwICsxLDU4IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBkZWNsYXJl
LmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBmaWxlIGRlZmluZXMgdGhl
IEFCU0xfREVDTEFSRV9GTEFHIG1hY3JvLCBhbGxvd2luZyB5b3UgdG8gZGVjbGFyZSBhbgorLy8g
YGFic2w6OkZsYWdgIGZvciB1c2Ugd2l0aGluIGEgdHJhbnNsYXRpb24gdW5pdC4gWW91IHNob3Vs
ZCBwbGFjZSB0aGlzCisvLyBkZWNsYXJhdGlvbiB3aXRoaW4gdGhlIGhlYWRlciBmaWxlIGFzc29j
aWF0ZWQgd2l0aCB0aGUgLmNjIGZpbGUgdGhhdCBkZWZpbmVzCisvLyBhbmQgb3ducyB0aGUgYEZs
YWdgLgorCisjaWZuZGVmIEFCU0xfRkxBR1NfREVDTEFSRV9IXworI2RlZmluZSBBQlNMX0ZMQUdT
X0RFQ0xBUkVfSF8KKworI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCitu
YW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworCisvLyBhYnNsOjpG
bGFnPFQ+IHJlcHJlc2VudHMgYSBmbGFnIG9mIHR5cGUgJ1QnIGNyZWF0ZWQgYnkgQUJTTF9GTEFH
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGbGFnOworCit9ICAvLyBuYW1lc3BhY2Ug
ZmxhZ3NfaW50ZXJuYWwKKworLy8gRmxhZworLy8KKy8vIEZvcndhcmQgZGVjbGFyYXRpb24gb2Yg
dGhlIGBhYnNsOjpGbGFnYCB0eXBlIGZvciB1c2UgaW4gZGVmaW5pbmcgdGhlIG1hY3JvLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBGbGFnID0gZmxhZ3NfaW50ZXJuYWw6OkZsYWc8VD47
CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKy8vIEFCU0xfREVDTEFSRV9GTEFHKCkKKy8vCisv
LyBUaGlzIG1hY3JvIGlzIGEgY29udmVuaWVuY2UgZm9yIGRlY2xhcmluZyB1c2Ugb2YgYW4gYGFi
c2w6OkZsYWdgIHdpdGhpbiBhCisvLyB0cmFuc2xhdGlvbiB1bml0LiBUaGlzIG1hY3JvIHNob3Vs
ZCBiZSB1c2VkIHdpdGhpbiBhIGhlYWRlciBmaWxlIHRvCisvLyBkZWNsYXJlIHVzYWdlIG9mIHRo
ZSBmbGFnIHdpdGhpbiBhbnkgLmNjIGZpbGUgaW5jbHVkaW5nIHRoYXQgaGVhZGVyIGZpbGUuCisv
LworLy8gVGhlIEFCU0xfREVDTEFSRV9GTEFHKHR5cGUsIG5hbWUpIG1hY3JvIGV4cGFuZHMgdG86
CisvLworLy8gICBleHRlcm4gYWJzbDo6RmxhZzx0eXBlPiBGTEFHU19uYW1lOworI2RlZmluZSBB
QlNMX0RFQ0xBUkVfRkxBRyh0eXBlLCBuYW1lKSBleHRlcm4gOjphYnNsOjpGbGFnPHR5cGU+IEZM
QUdTXyMjbmFtZQorCisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfREVDTEFSRV9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZmxhZ3MvZmxhZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWcuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjE2Y2M3NWUzODQzMDJhNzJjYjMwNTk4YWM5ZDgzNmM3ZTg3YWU4NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL2ZsYWcuY2MKQEAgLTAsMCArMSw0NCBAQAorLy8KKy8vICBDb3B5cmln
aHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvZmxh
Zy5oIgorCisjaW5jbHVkZSA8Y3N0cmluZz4KKworbmFtZXNwYWNlIGFic2wgeworCisvLyBXZSB3
YW50IHRvIHZhbGlkYXRlIHRoZSB0eXBlIG1pc21hdGNoIGJldHdlZW4gdHlwZSBkZWZpbml0aW9u
IGFuZAorLy8gZGVjbGFyYXRpb24uIFRoZSBsb2NrLWZyZWUgaW1wbGVtZW50YXRpb24gZG9lcyBu
b3QgYWxsb3cgdXMgdG8gZG8gaXQsCisvLyBzbyBpbiBkZWJ1ZyBidWlsZHMgd2UgYWx3YXlzIHVz
ZSB0aGUgc2xvd2VyIGltcGxlbWVudGF0aW9uLCB3aGljaCBhbHdheXMKKy8vIHZhbGlkYXRlcyB0
aGUgdHlwZS4KKyNpZm5kZWYgTkRFQlVHCisjZGVmaW5lIEFCU0xfRkxBR1NfQVRPTUlDX0dFVChU
KSBcCisgIFQgR2V0RmxhZyhjb25zdCBhYnNsOjpGbGFnPFQ+JiBmbGFnKSB7IHJldHVybiBmbGFn
LkdldCgpOyB9CisjZWxzZQorI2RlZmluZSBBQlNMX0ZMQUdTX0FUT01JQ19HRVQoVCkgICAgICAg
ICBcCisgIFQgR2V0RmxhZyhjb25zdCBhYnNsOjpGbGFnPFQ+JiBmbGFnKSB7IFwKKyAgICBUIHJl
c3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChmbGFnLkF0b21pY0dl
dCgmcmVzdWx0KSkgeyAgICAgICBcCisgICAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHJldHVybiBmbGFnLkdldCgpOyAgICAgICAgICAgICAgICAgICBcCisgIH0KKyNlbmRpZgorCitB
QlNMX0ZMQUdTX0lOVEVSTkFMX0ZPUl9FQUNIX0xPQ0tfRlJFRShBQlNMX0ZMQUdTX0FUT01JQ19H
RVQpCisKKyN1bmRlZiBBQlNMX0ZMQUdTX0FUT01JQ19HRVQKKworfSAgLy8gbmFtZXNwYWNlIGFi
c2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWcuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNmM3NzFjZjQ5YjFlZDBjOThhNDUzOWE1ZjUzMjZkY2JlYWNhZjc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvZmxhZy5oCkBAIC0wLDAgKzEsMjU3IEBACisvLwor
Ly8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyBGaWxlOiBmbGFnLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBgYWJzbDo6RmxhZzxUPmAgdHlwZSBm
b3IgaG9sZGluZyBjb21tYW5kLWxpbmUKKy8vIGZsYWcgZGF0YSwgYW5kIGFic3RyYWN0aW9ucyB0
byBjcmVhdGUsIGdldCBhbmQgc2V0IHN1Y2ggZmxhZyBkYXRhLgorLy8KKy8vIEl0IGlzIGltcG9y
dGFudCB0byBub3RlIHRoYXQgdGhpcyB0eXBlIGlzICoqdW5zcGVjaWZpZWQqKiAoYW4gaW1wbGVt
ZW50YXRpb24KKy8vIGRldGFpbCkgYW5kIHlvdSBkbyBub3QgY29uc3RydWN0IG9yIG1hbmlwdWxh
dGUgYWN0dWFsIGBhYnNsOjpGbGFnPFQ+YAorLy8gaW5zdGFuY2VzLiBJbnN0ZWFkLCB5b3UgZGVm
aW5lIGFuZCBkZWNsYXJlIGZsYWdzIHVzaW5nIHRoZQorLy8gYEFCU0xfRkxBRygpYCBhbmQgYEFC
U0xfREVDTEFSRV9GTEFHKClgIG1hY3JvcywgYW5kIGdldCBhbmQgc2V0IGZsYWcgdmFsdWVzCisv
LyB1c2luZyB0aGUgYGFic2w6OkdldEZsYWcoKWAgYW5kIGBhYnNsOjpTZXRGbGFnKClgIGZ1bmN0
aW9ucy4KKworI2lmbmRlZiBBQlNMX0ZMQUdTX0ZMQUdfSF8KKyNkZWZpbmUgQUJTTF9GTEFHU19G
TEFHX0hfCisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImFi
c2wvYmFzZS9jYXN0cy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvY29uZmlnLmgiCisjaW5jbHVk
ZSAiYWJzbC9mbGFncy9kZWNsYXJlLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9j
b21tYW5kbGluZWZsYWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL2ZsYWcuaCIK
KyNpbmNsdWRlICJhYnNsL2ZsYWdzL21hcnNoYWxsaW5nLmgiCisKK25hbWVzcGFjZSBhYnNsIHsK
KworLy8gRmxhZworLy8KKy8vIEFuIGBhYnNsOjpGbGFnYCBob2xkcyBhIGNvbW1hbmQtbGluZSBm
bGFnIHZhbHVlLCBwcm92aWRpbmcgYSBydW50aW1lCisvLyBwYXJhbWV0ZXIgdG8gYSBiaW5hcnku
IFN1Y2ggZmxhZ3Mgc2hvdWxkIGJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UKKy8v
IGFuZCAocHJlZmVyYWJseSkgaW4gdGhlIG1vZHVsZSBjb250YWluaW5nIHRoZSBiaW5hcnkncyBg
bWFpbigpYCBmdW5jdGlvbi4KKy8vCisvLyBZb3Ugc2hvdWxkIG5vdCBjb25zdHJ1Y3QgYW5kIGNh
bm5vdCB1c2UgdGhlIGBhYnNsOjpGbGFnYCB0eXBlIGRpcmVjdGx5OworLy8gaW5zdGVhZCwgeW91
IHNob3VsZCBkZWNsYXJlIGZsYWdzIHVzaW5nIHRoZSBgQUJTTF9ERUNMQVJFX0ZMQUcoKWAgbWFj
cm8KKy8vIHdpdGhpbiBhIGhlYWRlciBmaWxlLCBhbmQgZGVmaW5lIHlvdXIgZmxhZyB1c2luZyBg
QUJTTF9GTEFHKClgIHdpdGhpbiB5b3VyCisvLyBoZWFkZXIncyBhc3NvY2lhdGVkIGAuY2NgIGZp
bGUuIFN1Y2ggZmxhZ3Mgd2lsbCBiZSBuYW1lZCBgRkxBR1NfbmFtZWAuCisvLworLy8gRXhhbXBs
ZToKKy8vCisvLyAgICAuaCBmaWxlCisvLworLy8gICAgICAvLyBEZWNsYXJlcyB1c2FnZSBvZiBh
IGZsYWcgbmFtZWQgIkZMQUdTX2NvdW50IgorLy8gICAgICBBQlNMX0RFQ0xBUkVfRkxBRyhpbnQs
IGNvdW50KTsKKy8vCisvLyAgICAuY2MgZmlsZQorLy8KKy8vICAgICAgLy8gRGVmaW5lcyBhIGZs
YWcgbmFtZWQgIkZMQUdTX2NvdW50IiB3aXRoIGEgZGVmYXVsdCBgaW50YCB2YWx1ZSBvZiAwLgor
Ly8gICAgICBBQlNMX0ZMQUcoaW50LCBjb3VudCwgMCwgIkNvdW50IG9mIGl0ZW1zIHRvIHByb2Nl
c3MiKTsKKy8vCisvLyBObyBwdWJsaWMgbWV0aG9kcyBvZiBgYWJzbDo6RmxhZzxUPmAgYXJlIHBh
cnQgb2YgdGhlIEFic2VpbCBGbGFncyBBUEkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5n
IEZsYWcgPSBmbGFnc19pbnRlcm5hbDo6RmxhZzxUPjsKKworLy8gR2V0RmxhZygpCisvLworLy8g
UmV0dXJucyB0aGUgdmFsdWUgKG9mIHR5cGUgYFRgKSBvZiBhbiBgYWJzbDo6RmxhZzxUPmAgaW5z
dGFuY2UsIGJ5IHZhbHVlLiBEbworLy8gbm90IGNvbnN0cnVjdCBhbiBgYWJzbDo6RmxhZzxUPmAg
ZGlyZWN0bHkgYW5kIGNhbGwgYGFic2w6OkdldEZsYWcoKWA7CisvLyBpbnN0ZWFkLCByZWZlciB0
byBmbGFnJ3MgY29uc3RydWN0ZWQgdmFyaWFibGUgbmFtZSAoZS5nLiBgRkxBR1NfbmFtZWApLgor
Ly8gQmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYnkgdmFsdWUgYW5kIG5vdCBieSByZWZl
cmVuY2UsIGl0IGlzCisvLyB0aHJlYWQtc2FmZSwgYnV0IG5vdGUgdGhhdCB0aGUgb3BlcmF0aW9u
IG1heSBiZSBleHBlbnNpdmU7IGFzIGEgcmVzdWx0LCBhdm9pZAorLy8gYGFic2w6OkdldEZsYWco
KWAgd2l0aGluIGFueSB0aWdodCBsb29wcy4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8g
RkxBR1NfY291bnQgaXMgYSBGbGFnIG9mIHR5cGUgYGludGAKKy8vICAgaW50IG15X2NvdW50ID0g
YWJzbDo6R2V0RmxhZyhGTEFHU19jb3VudCk7CisvLworLy8gICAvLyBGTEFHU19maXJzdG5hbWUg
aXMgYSBGbGFnIG9mIHR5cGUgYHN0ZDo6c3RyaW5nYAorLy8gICBzdGQ6OnN0cmluZyBmaXJzdF9u
YW1lID0gYWJzbDo6R2V0RmxhZyhGTEFHU19maXJzdG5hbWUpOwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitUIEdldEZsYWcoY29uc3QgYWJzbDo6RmxhZzxUPiYgZmxhZykgeworI2RlZmluZSBBQlNM
X0ZMQUdTX0lOVEVSTkFMX0xPQ0tfRlJFRV9WQUxJREFURShCSVQpIFwKKyAgc3RhdGljX2Fzc2Vy
dCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAhc3RkOjppc19z
YW1lPFQsIEJJVD46OnZhbHVlLCAgICAgICAgICAgICAgICAgXAorICAgICAgIkRvIG5vdCBzcGVj
aWZ5IGV4cGxpY2l0IHRlbXBsYXRlIHBhcmFtZXRlcnMgdG8gYWJzbDo6R2V0RmxhZyIpOworICBB
QlNMX0ZMQUdTX0lOVEVSTkFMX0ZPUl9FQUNIX0xPQ0tfRlJFRShBQlNMX0ZMQUdTX0lOVEVSTkFM
X0xPQ0tfRlJFRV9WQUxJREFURSkKKyN1bmRlZiBBQlNMX0ZMQUdTX0lOVEVSTkFMX0xPQ0tfRlJF
RV9WQUxJREFURQorCisgIHJldHVybiBmbGFnLkdldCgpOworfQorCisvLyBPdmVybG9hZCBmb3Ig
YEdldEZsYWcoKWAgZm9yIHR5cGVzIHRoYXQgc3VwcG9ydCBsb2NrLWZyZWUgcmVhZHMuCisjZGVm
aW5lIEFCU0xfRkxBR1NfSU5URVJOQUxfTE9DS19GUkVFX0VYUE9SVChUKSBcCisgIGV4dGVybiBU
IEdldEZsYWcoY29uc3QgYWJzbDo6RmxhZzxUPiYgZmxhZyk7CitBQlNMX0ZMQUdTX0lOVEVSTkFM
X0ZPUl9FQUNIX0xPQ0tfRlJFRShBQlNMX0ZMQUdTX0lOVEVSTkFMX0xPQ0tfRlJFRV9FWFBPUlQp
CisjdW5kZWYgQUJTTF9GTEFHU19JTlRFUk5BTF9MT0NLX0ZSRUVfRVhQT1JUCisKKy8vIFNldEZs
YWcoKQorLy8KKy8vIFNldHMgdGhlIHZhbHVlIG9mIGFuIGBhYnNsOjpGbGFnYCB0byB0aGUgdmFs
dWUgYHZgLiBEbyBub3QgY29uc3RydWN0IGFuCisvLyBgYWJzbDo6RmxhZzxUPmAgZGlyZWN0bHkg
YW5kIGNhbGwgYGFic2w6OlNldEZsYWcoKWA7IGluc3RlYWQsIHVzZSB0aGUKKy8vIGZsYWcncyB2
YXJpYWJsZSBuYW1lIChlLmcuIGBGTEFHU19uYW1lYCkuIFRoaXMgZnVuY3Rpb24gaXMKKy8vIHRo
cmVhZC1zYWZlLCBidXQgaXMgcG90ZW50aWFsbHkgZXhwZW5zaXZlLiBBdm9pZCBzZXR0aW5nIGZs
YWdzIGluIGdlbmVyYWwsCisvLyBidXQgZXNwZWNpYWxseSB3aXRoaW4gcGVyZm9ybWFuY2UtY3Jp
dGljYWwgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBTZXRGbGFnKGFic2w6OkZs
YWc8VD4qIGZsYWcsIGNvbnN0IFQmIHYpIHsKKyAgZmxhZy0+U2V0KHYpOworfQorCisvLyBPdmVy
bG9hZCBvZiBgU2V0RmxhZygpYCB0byBhbGxvdyBjYWxsZXJzIHRvIHBhc3MgaW4gYSB2YWx1ZSB0
aGF0IGlzCisvLyBjb252ZXJ0aWJsZSB0byBgVGAuIEUuZy4sIHVzZSB0aGlzIG92ZXJsb2FkIHRv
IHBhc3MgYSAiY29uc3QgY2hhcioiIHdoZW4gYFRgCisvLyBpcyBgc3RkOjpzdHJpbmdgLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Cit2b2lkIFNldEZsYWcoYWJzbDo6RmxhZzxU
PiogZmxhZywgY29uc3QgViYgdikgeworICBUIHZhbHVlKHYpOworICBmbGFnLT5TZXQodmFsdWUp
OworfQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisKKy8vIEFCU0xfRkxBRygpCisvLworLy8g
VGhpcyBtYWNybyBkZWZpbmVzIGFuIGBhYnNsOjpGbGFnPFQ+YCBpbnN0YW5jZSBvZiBhIHNwZWNp
ZmllZCB0eXBlIGBUYDoKKy8vCisvLyAgIEFCU0xfRkxBRyhULCBuYW1lLCBkZWZhdWx0X3ZhbHVl
LCBoZWxwKTsKKy8vCisvLyB3aGVyZToKKy8vCisvLyAgICogYFRgIGlzIGEgc3VwcG9ydGVkIGZs
YWcgdHlwZSAoc2VlIHRoZSBsaXN0IG9mIHR5cGVzIGluIGBtYXJzaGFsbGluZy5oYCksCisvLyAg
ICogYG5hbWVgIGRlc2lnbmF0ZXMgdGhlIG5hbWUgb2YgdGhlIGZsYWcgKGFzIGEgZ2xvYmFsIHZh
cmlhYmxlCisvLyAgICAgYEZMQUdTX25hbWVgKSwKKy8vICAgKiBgZGVmYXVsdF92YWx1ZWAgaXMg
YW4gZXhwcmVzc2lvbiBob2xkaW5nIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGZsYWcKKy8v
ICAgICAod2hpY2ggbXVzdCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIGBUYCksCisvLyAg
ICogYGhlbHBgIGlzIHRoZSBoZWxwIHRleHQsIHdoaWNoIGNhbiBhbHNvIGJlIGFuIGV4cHJlc3Np
b24uCisvLworLy8gVGhpcyBtYWNybyBleHBhbmRzIHRvIGEgZmxhZyBuYW1lZCAnRkxBR1NfbmFt
ZScgb2YgdHlwZSAnVCc6CisvLworLy8gICBhYnNsOjpGbGFnPFQ+IEZMQUdTX25hbWUgPSAuLi47
CisvLworLy8gTm90ZSB0aGF0IGFsbCBzdWNoIGluc3RhbmNlcyBhcmUgY3JlYXRlZCBhcyBnbG9i
YWwgdmFyaWFibGVzLgorLy8KKy8vIEZvciBgQUJTTF9GTEFHKClgIHZhbHVlcyB0aGF0IHlvdSB3
aXNoIHRvIGV4cG9zZSB0byBvdGhlciB0cmFuc2xhdGlvbiB1bml0cywKKy8vIGl0IGlzIHJlY29t
bWVuZGVkIHRvIGRlZmluZSB0aG9zZSBmbGFncyB3aXRoaW4gdGhlIGAuY2NgIGZpbGUgYXNzb2Np
YXRlZCB3aXRoCisvLyB0aGUgaGVhZGVyIHdoZXJlIHRoZSBmbGFnIGlzIGRlY2xhcmVkLgorLy8K
Ky8vIE5vdGU6IGRvIG5vdCBjb25zdHJ1Y3Qgb2JqZWN0cyBvZiB0eXBlIGBhYnNsOjpGbGFnPFQ+
YCBkaXJlY3RseS4gT25seSB1c2UgdGhlCisvLyBgQUJTTF9GTEFHKClgIG1hY3JvIGZvciBzdWNo
IGNvbnN0cnVjdGlvbi4KKyNkZWZpbmUgQUJTTF9GTEFHKFR5cGUsIG5hbWUsIGRlZmF1bHRfdmFs
dWUsIGhlbHApIFwKKyAgQUJTTF9GTEFHX0lNUEwoVHlwZSwgbmFtZSwgZGVmYXVsdF92YWx1ZSwg
aGVscCkKKworLy8gQUJTTF9GTEFHKCkuT25VcGRhdGUoKQorLy8KKy8vIERlZmluZXMgYSBmbGFn
IG9mIHR5cGUgYFRgIHdpdGggYSBjYWxsYmFjayBhdHRhY2hlZDoKKy8vCisvLyAgIEFCU0xfRkxB
RyhULCBuYW1lLCBkZWZhdWx0X3ZhbHVlLCBoZWxwKS5PblVwZGF0ZShjYWxsYmFjayk7CisvLwor
Ly8gQWZ0ZXIgYW55IHNldHRpbmcgb2YgdGhlIGZsYWcgdmFsdWUsIHRoZSBjYWxsYmFjayB3aWxs
IGJlIGNhbGxlZCBhdCBsZWFzdAorLy8gb25jZS4gQSByYXBpZCBzZXF1ZW5jZSBvZiBjaGFuZ2Vz
IG1heSBiZSBtZXJnZWQgdG9nZXRoZXIgaW50byB0aGUgc2FtZQorLy8gY2FsbGJhY2suIE5vIGNv
bmN1cnJlbnQgY2FsbHMgdG8gdGhlIGNhbGxiYWNrIHdpbGwgYmUgbWFkZSBmb3IgdGhlIHNhbWUK
Ky8vIGZsYWcuIENhbGxiYWNrcyBhcmUgYWxsb3dlZCB0byByZWFkIHRoZSBjdXJyZW50IHZhbHVl
IG9mIHRoZSBmbGFnIGJ1dCBtdXN0CisvLyBub3QgbXV0YXRlIHRoYXQgZmxhZy4KKy8vCisvLyBU
aGUgdXBkYXRlIG1lY2hhbmlzbSBndWFyYW50ZWVzICJldmVudHVhbCBjb25zaXN0ZW5jeSI7IGlm
IHRoZSBjYWxsYmFjaworLy8gZGVyaXZlcyBhbiBhdXhpbGlhcnkgZGF0YSBzdHJ1Y3R1cmUgZnJv
bSB0aGUgZmxhZyB2YWx1ZSwgaXQgaXMgZ3VhcmFudGVlZAorLy8gdGhhdCBldmVudHVhbGx5IHRo
ZSBmbGFnIHZhbHVlIGFuZCB0aGUgZGVyaXZlZCBkYXRhIHN0cnVjdHVyZSB3aWxsIGJlCisvLyBj
b25zaXN0ZW50LgorLy8KKy8vIE5vdGU6IEFCU0xfRkxBRy5PblVwZGF0ZSgpIGRvZXMgbm90IGhh
dmUgYSBwdWJsaWMgZGVmaW5pdGlvbi4gSGVuY2UsIHRoaXMKKy8vIGNvbW1lbnQgc2VydmVzIGFz
IGl0cyBBUEkgZG9jdW1lbnRhdGlvbi4KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8g
SW1wbGVtZW50YXRpb24gZGV0YWlscyBiZWxvdyB0aGlzIHNlY3Rpb24KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKy8vIEFCU0xfRkxBR19JTVBMIG1hY3JvIGRlZmluaXRpb24gY29uZGl0aW9u
YWwgb24gQUJTTF9GTEFHU19TVFJJUF9OQU1FUworCisjaWYgQUJTTF9GTEFHU19TVFJJUF9OQU1F
UworI2RlZmluZSBBQlNMX0ZMQUdfSU1QTF9GTEFHTkFNRSh0eHQpICIiCisjZGVmaW5lIEFCU0xf
RkxBR19JTVBMX0ZJTEVOQU1FKCkgIiIKKyNkZWZpbmUgQUJTTF9GTEFHX0lNUExfUkVHSVNUUkFS
KFQsIGZsYWcpIFwKKyAgYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6OkZsYWdSZWdpc3RyYXI8VCwgZmFs
c2U+KCZmbGFnKQorI2Vsc2UKKyNkZWZpbmUgQUJTTF9GTEFHX0lNUExfRkxBR05BTUUodHh0KSB0
eHQKKyNkZWZpbmUgQUJTTF9GTEFHX0lNUExfRklMRU5BTUUoKSBfX0ZJTEVfXworI2RlZmluZSBB
QlNMX0ZMQUdfSU1QTF9SRUdJU1RSQVIoVCwgZmxhZykgXAorICBhYnNsOjpmbGFnc19pbnRlcm5h
bDo6RmxhZ1JlZ2lzdHJhcjxULCB0cnVlPigmZmxhZykKKyNlbmRpZgorCisvLyBBQlNMX0ZMQUdf
SU1QTCBtYWNybyBkZWZpbml0aW9uIGNvbmRpdGlvbmFsIG9uIEFCU0xfRkxBR1NfU1RSSVBfSEVM
UAorCisjaWYgQUJTTF9GTEFHU19TVFJJUF9IRUxQCisjZGVmaW5lIEFCU0xfRkxBR19JTVBMX0ZM
QUdIRUxQKHR4dCkgYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6OmtTdHJpcHBlZEZsYWdIZWxwCisjZWxz
ZQorI2RlZmluZSBBQlNMX0ZMQUdfSU1QTF9GTEFHSEVMUCh0eHQpIHR4dAorI2VuZGlmCisKKyNk
ZWZpbmUgQUJTTF9GTEFHX0lNUExfREVDTEFSRV9IRUxQX1dSQVBQRVIobmFtZSwgdHh0KSBcCisg
IHN0YXRpYyBzdGQ6OnN0cmluZyBBYnNsRmxhZ3NXcmFwSGVscCMjbmFtZSgpIHsgICAgICAgXAor
ICAgIHJldHVybiBBQlNMX0ZMQUdfSU1QTF9GTEFHSEVMUCh0eHQpOyAgICAgICAgICAgICAgIFwK
KyAgfQorCisjZGVmaW5lIEFCU0xfRkxBR19JTVBMX0RFQ0xBUkVfREVGX1ZBTF9XUkFQUEVSKG5h
bWUsIFR5cGUsIGRlZmF1bHRfdmFsdWUpICAgXAorICBzdGF0aWMgdm9pZCogQWJzbEZsYWdzSW5p
dEZsYWcjI25hbWUoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBy
ZXR1cm4gYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6Ok1ha2VGcm9tRGVmYXVsdFZhbHVlPFR5cGU+KGRl
ZmF1bHRfdmFsdWUpOyBcCisgIH0KKworLy8gQUJTTF9GTEFHX0lNUEwKKy8vCisvLyBOb3RlOiBO
YW1lIG9mIHJlZ2lzdHJhciBvYmplY3QgaXMgbm90IGFyYml0cmFyeS4gSXQgaXMgdXNlZCB0byAi
Z3JhYiIKKy8vIGdsb2JhbCBuYW1lIGZvciBGTEFHU19ubzxmbGFnX25hbWU+IHN5bWJvbCwgdGh1
cyBwcmV2ZW50aW5nIHRoZSBwb3NzaWJpbGl0eQorLy8gb2YgZGVmaW5pbmcgdHdvIGZsYWdzIHdp
dGggbmFtZXMgZm9vIGFuZCBub2Zvby4KKyNkZWZpbmUgQUJTTF9GTEFHX0lNUEwoVHlwZSwgbmFt
ZSwgZGVmYXVsdF92YWx1ZSwgaGVscCkgICAgICAgICAgICAgXAorICBuYW1lc3BhY2UgYWJzbCAv
KiBibG9jayBmbGFncyBpbiBuYW1lc3BhY2VzICovIHt9ICAgICAgICAgICAgICAgICBcCisgIEFC
U0xfRkxBR19JTVBMX0RFQ0xBUkVfREVGX1ZBTF9XUkFQUEVSKG5hbWUsIFR5cGUsIGRlZmF1bHRf
dmFsdWUpIFwKKyAgQUJTTF9GTEFHX0lNUExfREVDTEFSRV9IRUxQX1dSQVBQRVIobmFtZSwgaGVs
cCkgICAgICAgICAgICAgICAgICAgXAorICBBQlNMX0NPTlNUX0lOSVQgYWJzbDo6RmxhZzxUeXBl
PiBGTEFHU18jI25hbWUoICAgICAgICAgICAgICAgICAgICBcCisgICAgICBBQlNMX0ZMQUdfSU1Q
TF9GTEFHTkFNRSgjbmFtZSksICZBYnNsRmxhZ3NXcmFwSGVscCMjbmFtZSwgICAgIFwKKyAgICAg
IEFCU0xfRkxBR19JTVBMX0ZJTEVOQU1FKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgJmFic2w6OmZsYWdzX2ludGVybmFsOjpGbGFnTWFyc2hhbGxpbmdPcHM8
VHlwZT4sICAgICAgICAgICAgICBcCisgICAgICAmQWJzbEZsYWdzSW5pdEZsYWcjI25hbWUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZXh0ZXJuIGJvb2wgRkxBR1Nf
bm8jI25hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBib29s
IEZMQUdTX25vIyNuYW1lID0gQUJTTF9GTEFHX0lNUExfUkVHSVNUUkFSKFR5cGUsIEZMQUdTXyMj
bmFtZSkKKworLy8gQUJTTF9SRVRJUkVEX0ZMQUcKKy8vCisvLyBEZXNpZ25hdGVzIHRoZSBmbGFn
ICh3aGljaCBpcyB1c3VhbGx5IHByZS1leGlzdGluZykgYXMgInJldGlyZWQuIiBBIHJldGlyZWQK
Ky8vIGZsYWcgaXMgYSBmbGFnIHRoYXQgaXMgbm93IHVudXNlZCBieSB0aGUgcHJvZ3JhbSwgYnV0
IG1heSBzdGlsbCBiZSBwYXNzZWQgb24KKy8vIHRoZSBjb21tYW5kIGxpbmUsIHVzdWFsbHkgYnkg
cHJvZHVjdGlvbiBzY3JpcHRzLiBBIHJldGlyZWQgZmxhZyBpcyBpZ25vcmVkCisvLyBhbmQgY29k
ZSBjYW4ndCBhY2Nlc3MgaXQgYXQgcnVudGltZS4KKy8vCisvLyBUaGlzIG1hY3JvIHJlZ2lzdGVy
cyBhIHJldGlyZWQgZmxhZyB3aXRoIGdpdmVuIG5hbWUgYW5kIHR5cGUsIHdpdGggYSBuYW1lCisv
LyBpZGVudGljYWwgdG8gdGhlIG5hbWUgb2YgdGhlIG9yaWdpbmFsIGZsYWcgeW91IGFyZSByZXRp
cmluZy4gVGhlIHJldGlyZWQKKy8vIGZsYWcncyB0eXBlIGNhbiBjaGFuZ2Ugb3ZlciB0aW1lLCBz
byB0aGF0IHlvdSBjYW4gcmV0aXJlIGNvZGUgdG8gc3VwcG9ydCBhCisvLyBjdXN0b20gZmxhZyB0
eXBlLgorLy8KKy8vIFRoaXMgbWFjcm8gaGFzIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyBgQUJTTF9G
TEFHYC4gVG8gcmV0aXJlIGEgZmxhZywgc2ltcGx5CisvLyByZXBsYWNlIGFuIGBBQlNMX0ZMQUdg
IGRlZmluaXRpb24gd2l0aCBgQUJTTF9SRVRJUkVEX0ZMQUdgLCBsZWF2aW5nIHRoZQorLy8gYXJn
dW1lbnRzIHVuY2hhbmdlZCAodW5sZXNzIG9mIGNvdXJzZSB5b3UgYWN0dWFsbHkgd2FudCB0byBy
ZXRpcmUgdGhlIGZsYWcKKy8vIHR5cGUgYXQgdGhpcyB0aW1lIGFzIHdlbGwpLgorLy8KKy8vIGBk
ZWZhdWx0X3ZhbHVlYCBpcyBvbmx5IHVzZWQgYXMgYSBkb3VibGUgY2hlY2sgb24gdGhlIHR5cGUu
IGBleHBsYW5hdGlvbmAgaXMKKy8vIHVudXNlZC4KKy8vIFRPRE8ocm9nZWVmZik6IFJldHVybiBh
biBhbm9ueW1vdXMgc3RydWN0IGluc3RlYWQgb2YgYm9vbCwgYW5kIHBsYWNlIGl0IGludG8KKy8v
IHRoZSB1bm5hbWVkIG5hbWVzcGFjZS4KKyNkZWZpbmUgQUJTTF9SRVRJUkVEX0ZMQUcodHlwZSwg
ZmxhZ25hbWUsIGRlZmF1bHRfdmFsdWUsIGV4cGxhbmF0aW9uKSBcCisgIEFCU0xfQVRUUklCVVRF
X1VOVVNFRCBzdGF0aWMgY29uc3QgYm9vbCBpZ25vcmVkXyMjZmxhZ25hbWUgPSAgICAgICAgXAor
ICAgICAgKFtdIHsgcmV0dXJuIHR5cGUoZGVmYXVsdF92YWx1ZSk7IH0sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICBhYnNsOjpmbGFnc19pbnRlcm5hbDo6UmV0aXJlZEZsYWc8
dHlwZT4oI2ZsYWduYW1lKSkKKworI2VuZGlmICAvLyBBQlNMX0ZMQUdTX0ZMQUdfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWdfdGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYmNkN2U5Njg2OGU3YWUxYmEzOTZmNmUwZTEyZWIxMDNmN2FmOWRhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvZmxhZ190ZXN0LmNjCkBAIC0wLDAgKzEsNDgy
IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5j
bHVkZSAiYWJzbC9mbGFncy9mbGFnLmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9udW1i
ZXJzLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3Mvc3RyX3NwbGl0LmgiCisKK0FCU0xfREVDTEFSRV9GTEFHKGludDY0X3QsIG1pc3R5
cGVkX2ludF9mbGFnKTsKK0FCU0xfREVDTEFSRV9GTEFHKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiwgbWlzdHlwZWRfc3RyaW5nX2ZsYWcpOworCituYW1lc3BhY2UgeworCituYW1lc3BhY2UgZmxh
Z3MgPSBhYnNsOjpmbGFnc19pbnRlcm5hbDsKKworc3RkOjpzdHJpbmcgVGVzdEhlbHBNc2coKSB7
IHJldHVybiAiaGVscCI7IH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCogVGVzdE1ha2VE
Zmx0KCkgeworICByZXR1cm4gbmV3IFR7fTsKK30KK3ZvaWQgVGVzdENhbGxiYWNrKCkge30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIFRlc3RDb25zdHJ1Y3Rpb25Gb3IoKSB7CisgIGNv
bnN0ZXhwciBmbGFnczo6RmxhZzxUPiBmMSgiZjEiLCAmVGVzdEhlbHBNc2csICJmaWxlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhYnNsOjpmbGFnc19pbnRlcm5hbDo6RmxhZ01h
cnNoYWxsaW5nT3BzPFQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRlc3RNYWtl
RGZsdDxUPik7CisgIEVYUEVDVF9FUShmMS5OYW1lKCksICJmMSIpOworICBFWFBFQ1RfRVEoZjEu
SGVscCgpLCAiaGVscCIpOworICBFWFBFQ1RfRVEoZjEuRmlsZW5hbWUoKSwgImZpbGUiKTsKKwor
ICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGZsYWdzOjpGbGFnPFQ+IGYyKAorICAgICAgImYyIiwg
JlRlc3RIZWxwTXNnLCAiZmlsZSIsICZhYnNsOjpmbGFnc19pbnRlcm5hbDo6RmxhZ01hcnNoYWxs
aW5nT3BzPFQ+LAorICAgICAgJlRlc3RNYWtlRGZsdDxUPik7CisgIGZsYWdzOjpGbGFnUmVnaXN0
cmFyPFQsIGZhbHNlPigmZjIpLk9uVXBkYXRlKFRlc3RDYWxsYmFjayk7CisKKyAgRVhQRUNUX0VR
KGYyLk5hbWUoKSwgImYyIik7CisgIEVYUEVDVF9FUShmMi5IZWxwKCksICJoZWxwIik7CisgIEVY
UEVDVF9FUShmMi5GaWxlbmFtZSgpLCAiZmlsZSIpOworCisgIHJldHVybiB0cnVlOworfQorCitz
dHJ1Y3QgVURUIHsKKyAgVURUKCkgPSBkZWZhdWx0OworICBVRFQoY29uc3QgVURUJikgPSBkZWZh
dWx0OworfTsKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgVURUKiwgc3Rk
OjpzdHJpbmcqKSB7IHJldHVybiB0cnVlOyB9CitzdGQ6OnN0cmluZyBBYnNsVW5wYXJzZUZsYWco
Y29uc3QgVURUJikgeyByZXR1cm4gIiI7IH0KKworVEVTVChGbGFnVGVzdCwgVGVzdENvbnN0cnVj
dGlvbikgeworICBUZXN0Q29uc3RydWN0aW9uRm9yPGJvb2w+KCk7CisgIFRlc3RDb25zdHJ1Y3Rp
b25Gb3I8aW50MTZfdD4oKTsKKyAgVGVzdENvbnN0cnVjdGlvbkZvcjx1aW50MTZfdD4oKTsKKyAg
VGVzdENvbnN0cnVjdGlvbkZvcjxpbnQzMl90PigpOworICBUZXN0Q29uc3RydWN0aW9uRm9yPHVp
bnQzMl90PigpOworICBUZXN0Q29uc3RydWN0aW9uRm9yPGludDY0X3Q+KCk7CisgIFRlc3RDb25z
dHJ1Y3Rpb25Gb3I8dWludDY0X3Q+KCk7CisgIFRlc3RDb25zdHJ1Y3Rpb25Gb3I8ZG91YmxlPigp
OworICBUZXN0Q29uc3RydWN0aW9uRm9yPGZsb2F0PigpOworICBUZXN0Q29uc3RydWN0aW9uRm9y
PHN0ZDo6c3RyaW5nPigpOworCisgIFRlc3RDb25zdHJ1Y3Rpb25Gb3I8VURUPigpOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCit9ICAvLyBuYW1lc3BhY2UKKworQUJTTF9ERUNMQVJFX0ZMQUcoYm9v
bCwgdGVzdF9mbGFnXzAxKTsKK0FCU0xfREVDTEFSRV9GTEFHKGludCwgdGVzdF9mbGFnXzAyKTsK
K0FCU0xfREVDTEFSRV9GTEFHKGludDE2X3QsIHRlc3RfZmxhZ18wMyk7CitBQlNMX0RFQ0xBUkVf
RkxBRyh1aW50MTZfdCwgdGVzdF9mbGFnXzA0KTsKK0FCU0xfREVDTEFSRV9GTEFHKGludDMyX3Qs
IHRlc3RfZmxhZ18wNSk7CitBQlNMX0RFQ0xBUkVfRkxBRyh1aW50MzJfdCwgdGVzdF9mbGFnXzA2
KTsKK0FCU0xfREVDTEFSRV9GTEFHKGludDY0X3QsIHRlc3RfZmxhZ18wNyk7CitBQlNMX0RFQ0xB
UkVfRkxBRyh1aW50NjRfdCwgdGVzdF9mbGFnXzA4KTsKK0FCU0xfREVDTEFSRV9GTEFHKGRvdWJs
ZSwgdGVzdF9mbGFnXzA5KTsKK0FCU0xfREVDTEFSRV9GTEFHKGZsb2F0LCB0ZXN0X2ZsYWdfMTAp
OworQUJTTF9ERUNMQVJFX0ZMQUcoc3RkOjpzdHJpbmcsIHRlc3RfZmxhZ18xMSk7CisKK25hbWVz
cGFjZSB7CisKKyNpZiAhQUJTTF9GTEFHU19TVFJJUF9OQU1FUworCitURVNUKEZsYWdUZXN0LCBU
ZXN0RmxhZ0RlY2xhcmF0aW9uKSB7CisgIC8vIHRlc3QgdGhhdCB3ZSBjYW4gYWNjZXNzIGZsYWcg
b2JqZWN0cy4KKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wMS5OYW1lKCksICJ0ZXN0X2Zs
YWdfMDEiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wMi5OYW1lKCksICJ0ZXN0X2Zs
YWdfMDIiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wMy5OYW1lKCksICJ0ZXN0X2Zs
YWdfMDMiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wNC5OYW1lKCksICJ0ZXN0X2Zs
YWdfMDQiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wNS5OYW1lKCksICJ0ZXN0X2Zs
YWdfMDUiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wNi5OYW1lKCksICJ0ZXN0X2Zs
YWdfMDYiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wNy5OYW1lKCksICJ0ZXN0X2Zs
YWdfMDciKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wOC5OYW1lKCksICJ0ZXN0X2Zs
YWdfMDgiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wOS5OYW1lKCksICJ0ZXN0X2Zs
YWdfMDkiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18xMC5OYW1lKCksICJ0ZXN0X2Zs
YWdfMTAiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18xMS5OYW1lKCksICJ0ZXN0X2Zs
YWdfMTEiKTsKK30KKyNlbmRpZiAgLy8gIUFCU0xfRkxBR1NfU1RSSVBfTkFNRVMKKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworfSAgLy8gbmFtZXNwYWNlCisKK0FCU0xfRkxBRyhib29sLCB0ZXN0X2ZsYWdf
MDEsIHRydWUsICJ0ZXN0IGZsYWcgMDEiKTsKK0FCU0xfRkxBRyhpbnQsIHRlc3RfZmxhZ18wMiwg
MTIzNCwgInRlc3QgZmxhZyAwMiIpOworQUJTTF9GTEFHKGludDE2X3QsIHRlc3RfZmxhZ18wMywg
LTM0LCAidGVzdCBmbGFnIDAzIik7CitBQlNMX0ZMQUcodWludDE2X3QsIHRlc3RfZmxhZ18wNCwg
MTg5LCAidGVzdCBmbGFnIDA0Iik7CitBQlNMX0ZMQUcoaW50MzJfdCwgdGVzdF9mbGFnXzA1LCAx
MDc2NSwgInRlc3QgZmxhZyAwNSIpOworQUJTTF9GTEFHKHVpbnQzMl90LCB0ZXN0X2ZsYWdfMDYs
IDQwMDAwLCAidGVzdCBmbGFnIDA2Iik7CitBQlNMX0ZMQUcoaW50NjRfdCwgdGVzdF9mbGFnXzA3
LCAtMTIzNDU2NywgInRlc3QgZmxhZyAwNyIpOworQUJTTF9GTEFHKHVpbnQ2NF90LCB0ZXN0X2Zs
YWdfMDgsIDk4NzY1NDMsICJ0ZXN0IGZsYWcgMDgiKTsKK0FCU0xfRkxBRyhkb3VibGUsIHRlc3Rf
ZmxhZ18wOSwgLTkuODc2ZS01MCwgInRlc3QgZmxhZyAwOSIpOworQUJTTF9GTEFHKGZsb2F0LCB0
ZXN0X2ZsYWdfMTAsIDEuMjM0ZTEyZiwgInRlc3QgZmxhZyAxMCIpOworQUJTTF9GTEFHKHN0ZDo6
c3RyaW5nLCB0ZXN0X2ZsYWdfMTEsICIiLCAidGVzdCBmbGFnIDExIik7CisKK25hbWVzcGFjZSB7
CisKKyNpZiAhQUJTTF9GTEFHU19TVFJJUF9OQU1FUworVEVTVChGbGFnVGVzdCwgVGVzdEZsYWdE
ZWZpbml0aW9uKSB7CisgIGFic2w6OnN0cmluZ192aWV3IGV4cGVjdGVkX2ZpbGVfbmFtZSA9ICJh
YnNsL2ZsYWdzL2ZsYWdfdGVzdC5jYyI7CisKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18w
MS5OYW1lKCksICJ0ZXN0X2ZsYWdfMDEiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18w
MS5IZWxwKCksICJ0ZXN0IGZsYWcgMDEiKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpF
bmRzV2l0aChGTEFHU190ZXN0X2ZsYWdfMDEuRmlsZW5hbWUoKSwgZXhwZWN0ZWRfZmlsZV9uYW1l
KSk7CisKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wMi5OYW1lKCksICJ0ZXN0X2ZsYWdf
MDIiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wMi5IZWxwKCksICJ0ZXN0IGZsYWcg
MDIiKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpFbmRzV2l0aChGTEFHU190ZXN0X2Zs
YWdfMDIuRmlsZW5hbWUoKSwgZXhwZWN0ZWRfZmlsZV9uYW1lKSk7CisKKyAgRVhQRUNUX0VRKEZM
QUdTX3Rlc3RfZmxhZ18wMy5OYW1lKCksICJ0ZXN0X2ZsYWdfMDMiKTsKKyAgRVhQRUNUX0VRKEZM
QUdTX3Rlc3RfZmxhZ18wMy5IZWxwKCksICJ0ZXN0IGZsYWcgMDMiKTsKKyAgRVhQRUNUX1RSVUUo
CisgICAgICBhYnNsOjpFbmRzV2l0aChGTEFHU190ZXN0X2ZsYWdfMDMuRmlsZW5hbWUoKSwgZXhw
ZWN0ZWRfZmlsZV9uYW1lKSk7CisKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wNC5OYW1l
KCksICJ0ZXN0X2ZsYWdfMDQiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wNC5IZWxw
KCksICJ0ZXN0IGZsYWcgMDQiKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpFbmRzV2l0
aChGTEFHU190ZXN0X2ZsYWdfMDQuRmlsZW5hbWUoKSwgZXhwZWN0ZWRfZmlsZV9uYW1lKSk7CisK
KyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wNS5OYW1lKCksICJ0ZXN0X2ZsYWdfMDUiKTsK
KyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wNS5IZWxwKCksICJ0ZXN0IGZsYWcgMDUiKTsK
KyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpFbmRzV2l0aChGTEFHU190ZXN0X2ZsYWdfMDUu
RmlsZW5hbWUoKSwgZXhwZWN0ZWRfZmlsZV9uYW1lKSk7CisKKyAgRVhQRUNUX0VRKEZMQUdTX3Rl
c3RfZmxhZ18wNi5OYW1lKCksICJ0ZXN0X2ZsYWdfMDYiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rl
c3RfZmxhZ18wNi5IZWxwKCksICJ0ZXN0IGZsYWcgMDYiKTsKKyAgRVhQRUNUX1RSVUUoCisgICAg
ICBhYnNsOjpFbmRzV2l0aChGTEFHU190ZXN0X2ZsYWdfMDYuRmlsZW5hbWUoKSwgZXhwZWN0ZWRf
ZmlsZV9uYW1lKSk7CisKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wNy5OYW1lKCksICJ0
ZXN0X2ZsYWdfMDciKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wNy5IZWxwKCksICJ0
ZXN0IGZsYWcgMDciKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpFbmRzV2l0aChGTEFH
U190ZXN0X2ZsYWdfMDcuRmlsZW5hbWUoKSwgZXhwZWN0ZWRfZmlsZV9uYW1lKSk7CisKKyAgRVhQ
RUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wOC5OYW1lKCksICJ0ZXN0X2ZsYWdfMDgiKTsKKyAgRVhQ
RUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18wOC5IZWxwKCksICJ0ZXN0IGZsYWcgMDgiKTsKKyAgRVhQ
RUNUX1RSVUUoCisgICAgICBhYnNsOjpFbmRzV2l0aChGTEFHU190ZXN0X2ZsYWdfMDguRmlsZW5h
bWUoKSwgZXhwZWN0ZWRfZmlsZV9uYW1lKSk7CisKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxh
Z18wOS5OYW1lKCksICJ0ZXN0X2ZsYWdfMDkiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxh
Z18wOS5IZWxwKCksICJ0ZXN0IGZsYWcgMDkiKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNs
OjpFbmRzV2l0aChGTEFHU190ZXN0X2ZsYWdfMDkuRmlsZW5hbWUoKSwgZXhwZWN0ZWRfZmlsZV9u
YW1lKSk7CisKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18xMC5OYW1lKCksICJ0ZXN0X2Zs
YWdfMTAiKTsKKyAgRVhQRUNUX0VRKEZMQUdTX3Rlc3RfZmxhZ18xMC5IZWxwKCksICJ0ZXN0IGZs
YWcgMTAiKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpFbmRzV2l0aChGTEFHU190ZXN0
X2ZsYWdfMTAuRmlsZW5hbWUoKSwgZXhwZWN0ZWRfZmlsZV9uYW1lKSk7CisKKyAgRVhQRUNUX0VR
KEZMQUdTX3Rlc3RfZmxhZ18xMS5OYW1lKCksICJ0ZXN0X2ZsYWdfMTEiKTsKKyAgRVhQRUNUX0VR
KEZMQUdTX3Rlc3RfZmxhZ18xMS5IZWxwKCksICJ0ZXN0IGZsYWcgMTEiKTsKKyAgRVhQRUNUX1RS
VUUoCisgICAgICBhYnNsOjpFbmRzV2l0aChGTEFHU190ZXN0X2ZsYWdfMTEuRmlsZW5hbWUoKSwg
ZXhwZWN0ZWRfZmlsZV9uYW1lKSk7Cit9CisjZW5kaWYgIC8vICFBQlNMX0ZMQUdTX1NUUklQX05B
TUVTCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoRmxhZ1Rlc3QsIFRlc3REZWZhdWx0KSB7Cisg
IEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wMSksIHRydWUpOworICBF
WFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMDIpLCAxMjM0KTsKKyAgRVhQ
RUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzAzKSwgLTM0KTsKKyAgRVhQRUNU
X0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzA0KSwgMTg5KTsKKyAgRVhQRUNUX0VR
KGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzA1KSwgMTA3NjUpOworICBFWFBFQ1RfRVEo
YWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMDYpLCA0MDAwMCk7CisgIEVYUEVDVF9FUShh
YnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wNyksIC0xMjM0NTY3KTsKKyAgRVhQRUNUX0VR
KGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzA4KSwgOTg3NjU0Myk7CisgIEVYUEVDVF9O
RUFSKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzA5KSwgLTkuODc2ZS01MCwgMWUtNTUp
OworICBFWFBFQ1RfTkVBUihhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18xMCksIDEuMjM0
ZTEyZiwgMWU1Zik7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18x
MSksICIiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChGbGFnVGVzdCwgVGVzdEdldFNl
dCkgeworICBhYnNsOjpTZXRGbGFnKCZGTEFHU190ZXN0X2ZsYWdfMDEsIGZhbHNlKTsKKyAgRVhQ
RUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzAxKSwgZmFsc2UpOworCisgIGFi
c2w6OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ18wMiwgMzIxKTsKKyAgRVhQRUNUX0VRKGFic2w6
OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzAyKSwgMzIxKTsKKworICBhYnNsOjpTZXRGbGFnKCZG
TEFHU190ZXN0X2ZsYWdfMDMsIDY3KTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1Nf
dGVzdF9mbGFnXzAzKSwgNjcpOworCisgIGFic2w6OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ18w
NCwgMSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wNCksIDEp
OworCisgIGFic2w6OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ18wNSwgLTkwOCk7CisgIEVYUEVD
VF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wNSksIC05MDgpOworCisgIGFic2w6
OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxhZ18wNiwgNDAwMSk7CisgIEVYUEVDVF9FUShhYnNsOjpH
ZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ18wNiksIDQwMDEpOworCisgIGFic2w6OlNldEZsYWcoJkZM
QUdTX3Rlc3RfZmxhZ18wNywgLTIzNDU2KTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxB
R1NfdGVzdF9mbGFnXzA3KSwgLTIzNDU2KTsKKworICBhYnNsOjpTZXRGbGFnKCZGTEFHU190ZXN0
X2ZsYWdfMDgsIDk3NTMxMCk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3Rf
ZmxhZ18wOCksIDk3NTMxMCk7CisKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfdGVzdF9mbGFnXzA5
LCAxLjAwMDAxKTsKKyAgRVhQRUNUX05FQVIoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdf
MDkpLCAxLjAwMDAxLCAxZS0xMCk7CisKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfdGVzdF9mbGFn
XzEwLCAtMy41NGYpOworICBFWFBFQ1RfTkVBUihhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxh
Z18xMCksIC0zLjU0ZiwgMWUtNmYpOworCisgIGFic2w6OlNldEZsYWcoJkZMQUdTX3Rlc3RfZmxh
Z18xMSwgImFzZGYiKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFn
XzExKSwgImFzZGYiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IEdldERmbHQxKCkgeyBy
ZXR1cm4gMTsgfQorCit9ICAvLyBuYW1lc3BhY2UKKworQUJTTF9GTEFHKGludCwgdGVzdF9mbGFn
XzEyLCBHZXREZmx0MSgpLCAidGVzdCBmbGFnIDEyIik7CitBQlNMX0ZMQUcoc3RkOjpzdHJpbmcs
IHRlc3RfZmxhZ18xMywgYWJzbDo6U3RyQ2F0KCJBQUEiLCAiQkJCIiksCisgICAgICAgICAgInRl
c3QgZmxhZyAxMyIpOworCituYW1lc3BhY2UgeworCitURVNUKEZsYWdUZXN0LCBUZXN0Tm9uQ29u
c3RleHByRGVmYXVsdCkgeworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2Zs
YWdfMTIpLCAxKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnXzEz
KSwgIkFBQUJCQiIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit9ICAvLyBuYW1lc3BhY2UKKwor
QUJTTF9GTEFHKGJvb2wsIHRlc3RfZmxhZ18xNCwgdHJ1ZSwgYWJzbDo6U3RyQ2F0KCJ0ZXN0ICIs
ICJmbGFnICIsICIxNCIpKTsKKworbmFtZXNwYWNlIHsKKworI2lmICFBQlNMX0ZMQUdTX1NUUklQ
X0hFTFAKK1RFU1QoRmxhZ1Rlc3QsIFRlc3ROb25Db25zdGV4cHJIZWxwKSB7CisgIEVYUEVDVF9F
UShGTEFHU190ZXN0X2ZsYWdfMTQuSGVscCgpLCAidGVzdCBmbGFnIDE0Iik7Cit9CisjZW5kaWYg
IC8vISBBQlNMX0ZMQUdTX1NUUklQX0hFTFAKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IGNiX3Rl
c3RfdmFsdWUgPSAtMTsKK3ZvaWQgVGVzdEZsYWdDQigpOworCit9ICAvLyBuYW1lc3BhY2UKKwor
QUJTTF9GTEFHKGludCwgdGVzdF9mbGFnX3dpdGhfY2IsIDEwMCwgIiIpLk9uVXBkYXRlKFRlc3RG
bGFnQ0IpOworCitBQlNMX0ZMQUcoaW50LCB0ZXN0X2ZsYWdfd2l0aF9sYW1iZGFfY2IsIDIwMCwg
IiIpLk9uVXBkYXRlKFtdKCkgeworICBjYl90ZXN0X3ZhbHVlID0gYWJzbDo6R2V0RmxhZyhGTEFH
U190ZXN0X2ZsYWdfd2l0aF9sYW1iZGFfY2IpICsKKyAgICAgICAgICAgICAgICAgIGFic2w6Okdl
dEZsYWcoRkxBR1NfdGVzdF9mbGFnX3dpdGhfY2IpOworfSk7CisKK25hbWVzcGFjZSB7CisKK3Zv
aWQgVGVzdEZsYWdDQigpIHsgY2JfdGVzdF92YWx1ZSA9IGFic2w6OkdldEZsYWcoRkxBR1NfdGVz
dF9mbGFnX3dpdGhfY2IpOyB9CisKKy8vIFRlc3RzIHNpZGUtZWZmZWN0cyBvZiBjYWxsYmFjayBp
bnZvY2F0aW9uLgorVEVTVChGbGFnVGVzdCwgQ2FsbGJhY2tJbnZvY2F0aW9uKSB7CisgIEVYUEVD
VF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Rlc3RfZmxhZ193aXRoX2NiKSwgMTAwKTsKKyAgRVhQ
RUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdGVzdF9mbGFnX3dpdGhfbGFtYmRhX2NiKSwgMjAw
KTsKKyAgRVhQRUNUX0VRKGNiX3Rlc3RfdmFsdWUsIDMwMCk7CisKKyAgYWJzbDo6U2V0RmxhZygm
RkxBR1NfdGVzdF9mbGFnX3dpdGhfY2IsIDEpOworICBFWFBFQ1RfRVEoY2JfdGVzdF92YWx1ZSwg
MSk7CisKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfdGVzdF9mbGFnX3dpdGhfbGFtYmRhX2NiLCAz
KTsKKyAgRVhQRUNUX0VRKGNiX3Rlc3RfdmFsdWUsIDQpOworfQorCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitzdHJ1Y3QgQ3VzdG9tVURUIHsKKyAgQ3VzdG9tVURUKCkgOiBhKDEpLCBiKDEpIHt9CisgIEN1
c3RvbVVEVChpbnQgYV8sIGludCBiXykgOiBhKGFfKSwgYihiXykge30KKworICBmcmllbmQgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbVVEVCYgZjEsIGNvbnN0IEN1c3RvbVVEVCYgZjIpIHsK
KyAgICByZXR1cm4gZjEuYSA9PSBmMi5hICYmIGYxLmIgPT0gZjIuYjsKKyAgfQorCisgIGludCBh
OworICBpbnQgYjsKK307Citib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgaW4s
IEN1c3RvbVVEVCogZiwgc3RkOjpzdHJpbmcqKSB7CisgIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmlu
Z192aWV3PiBwYXJ0cyA9CisgICAgICBhYnNsOjpTdHJTcGxpdChpbiwgJzonLCBhYnNsOjpTa2lw
V2hpdGVzcGFjZSgpKTsKKworICBpZiAocGFydHMuc2l6ZSgpICE9IDIpIHJldHVybiBmYWxzZTsK
KworICBpZiAoIWFic2w6OlNpbXBsZUF0b2kocGFydHNbMF0sICZmLT5hKSkgcmV0dXJuIGZhbHNl
OworCisgIGlmICghYWJzbDo6U2ltcGxlQXRvaShwYXJ0c1sxXSwgJmYtPmIpKSByZXR1cm4gZmFs
c2U7CisKKyAgcmV0dXJuIHRydWU7Cit9CitzdGQ6OnN0cmluZyBBYnNsVW5wYXJzZUZsYWcoY29u
c3QgQ3VzdG9tVURUJiBmKSB7CisgIHJldHVybiBhYnNsOjpTdHJDYXQoZi5hLCAiOiIsIGYuYik7
Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitBQlNMX0ZMQUcoQ3VzdG9tVURULCB0ZXN0X2ZsYWdf
MTUsIEN1c3RvbVVEVCgpLCAidGVzdCBmbGFnIDE1Iik7CisKK25hbWVzcGFjZSB7CisKK1RFU1Qo
RmxhZ1Rlc3QsIFRlc3RDdXN0b21VRFQpIHsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxB
R1NfdGVzdF9mbGFnXzE1KSwgQ3VzdG9tVURUKDEsIDEpKTsKKyAgYWJzbDo6U2V0RmxhZygmRkxB
R1NfdGVzdF9mbGFnXzE1LCBDdXN0b21VRFQoMiwgMykpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0
RmxhZyhGTEFHU190ZXN0X2ZsYWdfMTUpLCBDdXN0b21VRFQoMiwgMykpOworfQorCisvLyBNU1ZD
IHByb2R1Y2VzIGxpbmsgZXJyb3Igb24gdGhlIHR5cGUgbWlzbWF0Y2guCisvLyBMaW51eCBkb2Vz
IG5vdCBoYXZlIGJ1aWxkIGVycm9ycyBhbmQgdmFsaWRhdGlvbnMgd29yayBhcyBleHBlY3RlZC4K
KyNpZiAwICAvLyAhZGVmaW5lZChfV0lOMzIpICYmIEdURVNUX0hBU19ERUFUSF9URVNUCisKK1RF
U1QoRmxhZ3Rlc3QsIFRlc3RUeXBlTWlzbWF0Y2hWYWxpZGF0aW9ucykgeworICAvLyBGb3IgYnVp
bHRpbiB0eXBlcywgR2V0RmxhZygpIG9ubHkgZG9lcyB2YWxpZGF0aW9uIGluIGRlYnVnIG1vZGUu
CisgIEVYUEVDVF9ERUJVR19ERUFUSCgKKyAgICAgIGFic2w6OkdldEZsYWcoRkxBR1NfbWlzdHlw
ZWRfaW50X2ZsYWcpLAorICAgICAgIkZsYWcgJ21pc3R5cGVkX2ludF9mbGFnJyBpcyBkZWZpbmVk
IGFzIG9uZSB0eXBlIGFuZCBkZWNsYXJlZCAiCisgICAgICAiYXMgYW5vdGhlciIpOworICBFWFBF
Q1RfREVBVEgoYWJzbDo6U2V0RmxhZygmRkxBR1NfbWlzdHlwZWRfaW50X2ZsYWcsIDApLAorICAg
ICAgICAgICAgICAgIkZsYWcgJ21pc3R5cGVkX2ludF9mbGFnJyBpcyBkZWZpbmVkIGFzIG9uZSB0
eXBlIGFuZCBkZWNsYXJlZCAiCisgICAgICAgICAgICAgICAiYXMgYW5vdGhlciIpOworCisgIEVY
UEVDVF9ERUFUSChhYnNsOjpHZXRGbGFnKEZMQUdTX21pc3R5cGVkX3N0cmluZ19mbGFnKSwKKyAg
ICAgICAgICAgICAgICJGbGFnICdtaXN0eXBlZF9zdHJpbmdfZmxhZycgaXMgZGVmaW5lZCBhcyBv
bmUgdHlwZSBhbmQgIgorICAgICAgICAgICAgICAgImRlY2xhcmVkIGFzIGFub3RoZXIiKTsKKyAg
RVhQRUNUX0RFQVRIKAorICAgICAgYWJzbDo6U2V0RmxhZygmRkxBR1NfbWlzdHlwZWRfc3RyaW5n
X2ZsYWcsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPnt9KSwKKyAgICAgICJGbGFnICdtaXN0eXBl
ZF9zdHJpbmdfZmxhZycgaXMgZGVmaW5lZCBhcyBvbmUgdHlwZSBhbmQgZGVjbGFyZWQgYXMgIgor
ICAgICAgImFub3RoZXIiKTsKK30KKworI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEEg
Y29udHJpdmVkIHR5cGUgdGhhdCBvZmZlcnMgaW1wbGljaXQgYW5kIGV4cGxpY2l0IGNvbnZlcnNp
b24gZnJvbSBzcGVjaWZpYworLy8gc291cmNlIHR5cGVzLgorc3RydWN0IENvbnZlcnNpb25UZXN0
VmFsIHsKKyAgQ29udmVyc2lvblRlc3RWYWwoKSA9IGRlZmF1bHQ7CisgIGV4cGxpY2l0IENvbnZl
cnNpb25UZXN0VmFsKGludCBhX2luKSA6IGEoYV9pbikge30KKworICBlbnVtIGNsYXNzIFZpYUlt
cGxpY2l0Q29udiB7IGtUZW4gPSAxMCwga0VsZXZlbiB9OworICAvLyBOT0xJTlRORVhUTElORQor
ICBDb252ZXJzaW9uVGVzdFZhbChWaWFJbXBsaWNpdENvbnYgZnJvbSkgOiBhKHN0YXRpY19jYXN0
PGludD4oZnJvbSkpIHt9CisKKyAgaW50IGE7Cit9OworCitib29sIEFic2xQYXJzZUZsYWcoYWJz
bDo6c3RyaW5nX3ZpZXcgaW4sIENvbnZlcnNpb25UZXN0VmFsKiB2YWxfb3V0LAorICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nKikgeworICBpZiAoIWFic2w6OlNpbXBsZUF0b2koaW4sICZ2
YWxfb3V0LT5hKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30K
K3N0ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxhZyhjb25zdCBDb252ZXJzaW9uVGVzdFZhbCYgdmFs
KSB7CisgIHJldHVybiBhYnNsOjpTdHJDYXQodmFsLmEpOworfQorCit9ICAvLyBuYW1lc3BhY2UK
KworLy8gRmxhZyBkZWZhdWx0IHZhbHVlcyBjYW4gYmUgc3BlY2lmaWVkIHdpdGggYSB2YWx1ZSB0
aGF0IGNvbnZlcnRzIHRvIHRoZSBmbGFnCisvLyB2YWx1ZSB0eXBlIGltcGxpY2l0bHkuCitBQlNM
X0ZMQUcoQ29udmVyc2lvblRlc3RWYWwsIHRlc3RfZmxhZ18xNiwKKyAgICAgICAgICBDb252ZXJz
aW9uVGVzdFZhbDo6VmlhSW1wbGljaXRDb252OjprVGVuLCAidGVzdCBmbGFnIDE2Iik7CisKK25h
bWVzcGFjZSB7CisKK1RFU1QoRmxhZ1Rlc3QsIENhblNldFZpYUltcGxpY2l0Q29udmVyc2lvbikg
eworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMTYpLmEsIDEwKTsK
KyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfdGVzdF9mbGFnXzE2LAorICAgICAgICAgICAgICAgIENv
bnZlcnNpb25UZXN0VmFsOjpWaWFJbXBsaWNpdENvbnY6OmtFbGV2ZW4pOworICBFWFBFQ1RfRVEo
YWJzbDo6R2V0RmxhZyhGTEFHU190ZXN0X2ZsYWdfMTYpLmEsIDExKTsKK30KKworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworc3RydWN0IE5vbkRmbHRDb25zdHJ1Y3RpYmxlIHsKKyBwdWJsaWM6CisgIC8vIFRo
aXMgY29uc3RydWN0b3IgdGVzdHMgdGhhdCB3ZSBjYW4gaW5pdGlhbGl6ZSB0aGUgZmxhZyB3aXRo
IGludCB2YWx1ZQorICBOb25EZmx0Q29uc3RydWN0aWJsZShpbnQgaSkgOiB2YWx1ZShpKSB7fSAg
Ly8gTk9MSU5UCisKKyAgLy8gVGhpcyBjb25zdHJ1Y3RvciB0ZXN0cyB0aGF0IHdlIGNhbid0IGlu
aXRpYWxpemUgdGhlIGZsYWcgd2l0aCBjaGFyIHZhbHVlCisgIC8vIGJ1dCBjYW4gd2l0aCBleHBs
aWNpdGx5IGNvbnN0cnVjdGVkIE5vbkRmbHRDb25zdHJ1Y3RpYmxlLgorICBleHBsaWNpdCBOb25E
Zmx0Q29uc3RydWN0aWJsZShjaGFyIGMpIDogdmFsdWUoMTAwICsgc3RhdGljX2Nhc3Q8aW50Pihj
KSkge30KKworICBpbnQgdmFsdWU7Cit9OworCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3Ry
aW5nX3ZpZXcgaW4sIE5vbkRmbHRDb25zdHJ1Y3RpYmxlKiBuZGNfb3V0LAorICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nKikgeworICByZXR1cm4gYWJzbDo6U2ltcGxlQXRvaShpbiwgJm5k
Y19vdXQtPnZhbHVlKTsKK30KK3N0ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxhZyhjb25zdCBOb25E
Zmx0Q29uc3RydWN0aWJsZSYgbmRjKSB7CisgIHJldHVybiBhYnNsOjpTdHJDYXQobmRjLnZhbHVl
KTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK0FCU0xfRkxBRyhOb25EZmx0Q29uc3RydWN0aWJs
ZSwgbmRjX2ZsYWcxLCBOb25EZmx0Q29uc3RydWN0aWJsZSgnMScpLAorICAgICAgICAgICJGbGFn
IHdpdGggbm9uIGRlZmF1bHQgY29uc3RydWN0aWJsZSB0eXBlIik7CitBQlNMX0ZMQUcoTm9uRGZs
dENvbnN0cnVjdGlibGUsIG5kY19mbGFnMiwgMCwKKyAgICAgICAgICAiRmxhZyB3aXRoIG5vbiBk
ZWZhdWx0IGNvbnN0cnVjdGlibGUgdHlwZSIpOworCituYW1lc3BhY2UgeworCitURVNUKEZsYWdU
ZXN0LCBUZXN0Tm9uRGVmYXVsdENvbnN0cnVjdGlibGVUeXBlKSB7CisgIEVYUEVDVF9FUShhYnNs
OjpHZXRGbGFnKEZMQUdTX25kY19mbGFnMSkudmFsdWUsICcxJyArIDEwMCk7CisgIEVYUEVDVF9F
UShhYnNsOjpHZXRGbGFnKEZMQUdTX25kY19mbGFnMikudmFsdWUsIDApOworCisgIGFic2w6OlNl
dEZsYWcoJkZMQUdTX25kY19mbGFnMSwgTm9uRGZsdENvbnN0cnVjdGlibGUoJ0EnKSk7CisgIGFi
c2w6OlNldEZsYWcoJkZMQUdTX25kY19mbGFnMiwgMjUpOworCisgIEVYUEVDVF9FUShhYnNsOjpH
ZXRGbGFnKEZMQUdTX25kY19mbGFnMSkudmFsdWUsICdBJyArIDEwMCk7CisgIEVYUEVDVF9FUShh
YnNsOjpHZXRGbGFnKEZMQUdTX25kY19mbGFnMikudmFsdWUsIDI1KTsKK30KKworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworfSAgLy8gbmFtZXNwYWNlCisKK0FCU0xfUkVUSVJFRF9GTEFHKGJvb2wsIG9sZF9i
b29sX2ZsYWcsIHRydWUsICJvbGQgZGVzY3IiKTsKK0FCU0xfUkVUSVJFRF9GTEFHKGludCwgb2xk
X2ludF9mbGFnLCAoaW50KXN0ZDo6c3FydCgxMCksICJvbGQgZGVzY3IiKTsKK0FCU0xfUkVUSVJF
RF9GTEFHKHN0ZDo6c3RyaW5nLCBvbGRfc3RyX2ZsYWcsICIiLCBhYnNsOjpTdHJDYXQoIm9sZCAi
LCAiZGVzY3IiKSk7CisKK25hbWVzcGFjZSB7CisKK1RFU1QoRmxhZ1Rlc3QsIFRlc3RSZXRpcmVk
RmxhZ1JlZ2lzdHJhdGlvbikgeworICBib29sIGlzX2Jvb2wgPSBmYWxzZTsKKyAgRVhQRUNUX1RS
VUUoZmxhZ3M6OklzUmV0aXJlZEZsYWcoIm9sZF9ib29sX2ZsYWciLCAmaXNfYm9vbCkpOworICBF
WFBFQ1RfVFJVRShpc19ib29sKTsKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OklzUmV0aXJlZEZsYWco
Im9sZF9pbnRfZmxhZyIsICZpc19ib29sKSk7CisgIEVYUEVDVF9GQUxTRShpc19ib29sKTsKKyAg
RVhQRUNUX1RSVUUoZmxhZ3M6OklzUmV0aXJlZEZsYWcoIm9sZF9zdHJfZmxhZyIsICZpc19ib29s
KSk7CisgIEVYUEVDVF9GQUxTRShpc19ib29sKTsKKyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpJc1Jl
dGlyZWRGbGFnKCJzb21lX290aGVyX2ZsYWciLCAmaXNfYm9vbCkpOworfQorCit9ICAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWdfdGVzdF9kZWZzLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvZmxhZ190ZXN0X2RlZnMuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM2NmM1ODAzMjc5NjcwYjk3NWEy
MTY0MDQ0YjY3MWRlNWZhMmYzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ZsYWdf
dGVzdF9kZWZzLmNjCkBAIC0wLDAgKzEsMjIgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisKKy8vIFRoaXMgZmlsZSBpcyB1c2VkIHRvIHRlc3QgdGhlIG1p
c21hdGNoIG9mIHRoZSBmbGFnIHR5cGUgYmV0d2VlbiBkZWZpbml0aW9uCisvLyBhbmQgZGVjbGFy
YXRpb24uIFRoZXNlIGFyZSBkZWZpbml0aW9ucy4gZmxhZ190ZXN0LmNjIGNvbnRhaW5zIGRlY2xh
cmF0aW9ucy4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSAiYWJzbC9mbGFncy9mbGFnLmgi
CisKK0FCU0xfRkxBRyhpbnQsIG1pc3R5cGVkX2ludF9mbGFnLCAwLCAiIik7CitBQlNMX0ZMQUco
c3RkOjpzdHJpbmcsIG1pc3R5cGVkX3N0cmluZ19mbGFnLCAiIiwgIiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50
ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwODAwZmMwZmIwYzQ0OGI3ZjVl
ZmU4NTE3YzVlMDExN2ZkMDUwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRl
cm5hbC9jb21tYW5kbGluZWZsYWcuY2MKQEAgLTAsMCArMSw0OTQgQEAKKy8vCisvLyBDb3B5cmln
aHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50
ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmgiCisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorCisjaW5jbHVk
ZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNl
L29wdGltaXphdGlvbi5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvY29uZmlnLmgiCisjaW5jbHVk
ZSAiYWJzbC9mbGFncy91c2FnZV9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Ry
X2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3luY2hyb25pemF0aW9uL211dGV4LmgiCisKK25hbWVz
cGFjZSBhYnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIFRoZSBoZWxwIG1l
c3NhZ2UgaW5kaWNhdGluZyB0aGF0IHRoZSBjb21tYW5kbGluZSBmbGFnIGhhcyBiZWVuCisvLyAn
c3RyaXBwZWQnLiBJdCB3aWxsIG5vdCBzaG93IHVwIHdoZW4gZG9pbmcgIi1oZWxwIiBhbmQgaXRz
CisvLyB2YXJpYW50cy4gVGhlIGZsYWcgaXMgc3RyaXBwZWQgaWYgQUJTTF9GTEFHU19TVFJJUF9I
RUxQIGlzIHNldCB0byAxCisvLyBiZWZvcmUgaW5jbHVkaW5nIGFic2wvZmxhZ3MvZmxhZy5oCisK
Ky8vIFRoaXMgaXMgdXNlZCBieSB0aGlzIGZpbGUsIGFuZCBhbHNvIGluIGNvbW1hbmRsaW5lZmxh
Z3NfcmVwb3J0aW5nLmNjCitjb25zdCBjaGFyIGtTdHJpcHBlZEZsYWdIZWxwW10gPSAiXDAwMVww
MDJcMDAzXDAwNCAodW5rbm93bikgXDAwNFwwMDNcMDAyXDAwMSI7CisKK25hbWVzcGFjZSB7CisK
Ky8vIEN1cnJlbnRseSB3ZSBvbmx5IHZhbGlkYXRlIGZsYWcgdmFsdWVzIGZvciB1c2VyLWRlZmlu
ZWQgZmxhZyB0eXBlcy4KK2Jvb2wgU2hvdWxkVmFsaWRhdGVGbGFnVmFsdWUoY29uc3QgQ29tbWFu
ZExpbmVGbGFnJiBmbGFnKSB7CisjZGVmaW5lIERPTlRfVkFMSURBVEUoVCkgXAorICBpZiAoZmxh
Zy5Jc09mVHlwZTxUPigpKSByZXR1cm4gZmFsc2U7CisgIEFCU0xfRkxBR1NfSU5URVJOQUxfRk9S
X0VBQ0hfTE9DS19GUkVFKERPTlRfVkFMSURBVEUpCisgIERPTlRfVkFMSURBVEUoc3RkOjpzdHJp
bmcpCisgIERPTlRfVkFMSURBVEUoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KQorI3VuZGVmIERP
TlRfVkFMSURBVEUKKworICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2Fi
c2w6Ok11dGV4KiBJbml0RmxhZyhDb21tYW5kTGluZUZsYWcqIGZsYWcpIHsKKyAgQUJTTF9DT05T
VF9JTklUIHN0YXRpYyBhYnNsOjpNdXRleCBpbml0X2xvY2soYWJzbDo6a0NvbnN0SW5pdCk7Cisg
IGFic2w6Ok11dGV4KiBtdTsKKworICB7CisgICAgYWJzbDo6TXV0ZXhMb2NrIGxvY2soJmluaXRf
bG9jayk7CisKKyAgICBpZiAoZmxhZy0+bG9ja3MgPT0gbnVsbHB0cikgeyAgLy8gTXVzdCBpbml0
aWFsaXplIE11dGV4ZXMgZm9yIHRoaXMgZmxhZy4KKyAgICAgIGZsYWctPmxvY2tzID0gbmV3IGZs
YWdzX2ludGVybmFsOjpDb21tYW5kTGluZUZsYWdMb2NrczsKKyAgICB9CisKKyAgICBtdSA9ICZm
bGFnLT5sb2Nrcy0+cHJpbWFyeV9tdTsKKyAgfQorCisgIHsKKyAgICBhYnNsOjpNdXRleExvY2sg
bG9jayhtdSk7CisKKyAgICBpZiAoIWZsYWctPnJldGlyZWQgJiYgZmxhZy0+ZGVmID09IG51bGxw
dHIpIHsKKyAgICAgIC8vIE5lZWQgdG8gaW5pdGlhbGl6ZSBkZWYgYW5kIGN1ciBmaWVsZHMuCisg
ICAgICBmbGFnLT5kZWYgPSAoKmZsYWctPm1ha2VfaW5pdF92YWx1ZSkoKTsKKyAgICAgIGZsYWct
PmN1ciA9IENsb25lKGZsYWctPm9wLCBmbGFnLT5kZWYpOworICAgICAgVXBkYXRlQ29weShmbGFn
KTsKKyAgICAgIGZsYWctPmluaXRlZC5zdG9yZSh0cnVlLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxl
YXNlKTsKKyAgICAgIGZsYWctPkludm9rZUNhbGxiYWNrKCk7CisgICAgfQorICB9CisKKyAgZmxh
Zy0+aW5pdGVkLnN0b3JlKHRydWUsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICByZXR1
cm4gbXU7Cit9CisKKy8vIEVuc3VyZSB0aGF0IHRoZSBsYXppbHkgaW5pdGlhbGl6ZWQgZmllbGRz
IG9mICpmbGFnIGhhdmUgYmVlbiBpbml0aWFsaXplZCwKKy8vIGFuZCByZXR1cm4gJmZsYWctPmxv
Y2tzLT5wcmltYXJ5X211LgorYWJzbDo6TXV0ZXgqIENvbW1hbmRMaW5lRmxhZzo6SW5pdEZsYWdJ
Zk5lY2Vzc2FyeSgpIGNvbnN0CisgICAgQUJTTF9MT0NLX1JFVFVSTkVEKGxvY2tzLT5wcmltYXJ5
X211KSB7CisgIGlmICghdGhpcy0+aW5pdGVkLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWly
ZSkpIHsKKyAgICByZXR1cm4gSW5pdEZsYWcoY29uc3RfY2FzdDxDb21tYW5kTGluZUZsYWcqPih0
aGlzKSk7CisgIH0KKworICAvLyBBbGwgZmllbGRzIGluaXRpYWxpemVkOyB0aGlzLT5sb2NrcyBp
cyB0aGVyZWZvcmUgc2FmZSB0byByZWFkLgorICByZXR1cm4gJnRoaXMtPmxvY2tzLT5wcmltYXJ5
X211OworfQorCit2b2lkIENvbW1hbmRMaW5lRmxhZzo6RGVzdHJveSgpIGNvbnN0IHsKKyAgLy8g
VmFsdWVzIGFyZSBoZWFwIGFsbG9jYXRlZCBmb3IgcmV0aXJlZCBhbmQgQWJzZWlsIEZsYWdzLgor
ICBpZiAoSXNSZXRpcmVkKCkgfHwgSXNBYnNlaWxGbGFnKCkpIHsKKyAgICBpZiAodGhpcy0+Y3Vy
KSBEZWxldGUodGhpcy0+b3AsIHRoaXMtPmN1cik7CisgICAgaWYgKHRoaXMtPmRlZikgRGVsZXRl
KHRoaXMtPm9wLCB0aGlzLT5kZWYpOworICB9CisKKyAgZGVsZXRlIHRoaXMtPmxvY2tzOworfQor
Citib29sIENvbW1hbmRMaW5lRmxhZzo6SXNNb2RpZmllZCgpIGNvbnN0IHsKKyAgYWJzbDo6TXV0
ZXhMb2NrIGwoSW5pdEZsYWdJZk5lY2Vzc2FyeSgpKTsKKyAgcmV0dXJuIG1vZGlmaWVkOworfQor
Cit2b2lkIENvbW1hbmRMaW5lRmxhZzo6U2V0TW9kaWZpZWQoYm9vbCBpc19tb2RpZmllZCkgewor
ICBhYnNsOjpNdXRleExvY2sgbChJbml0RmxhZ0lmTmVjZXNzYXJ5KCkpOworICBtb2RpZmllZCA9
IGlzX21vZGlmaWVkOworfQorCitib29sIENvbW1hbmRMaW5lRmxhZzo6SXNTcGVjaWZpZWRPbkNv
bW1hbmRMaW5lKCkgY29uc3QgeworICBhYnNsOjpNdXRleExvY2sgbChJbml0RmxhZ0lmTmVjZXNz
YXJ5KCkpOworICByZXR1cm4gb25fY29tbWFuZF9saW5lOworfQorCithYnNsOjpzdHJpbmdfdmll
dyBDb21tYW5kTGluZUZsYWc6OlR5cGVuYW1lKCkgY29uc3QgeworICAvLyBXZSBkbyBub3Qgc3Rv
cmUvcmVwb3J0IHR5cGUgaW4gQWJzZWlsIEZsYWdzLCBzbyB0aGF0IHVzZXIgZG8gbm90IHJlbHkg
b24gaW4KKyAgLy8gYXQgcnVudGltZQorICBpZiAoSXNBYnNlaWxGbGFnKCkgfHwgSXNSZXRpcmVk
KCkpIHJldHVybiAiIjsKKworI2RlZmluZSBIQU5ETEVfVjFfQlVJTFRJTl9UWVBFKHQpIFwKKyAg
aWYgKElzT2ZUeXBlPHQ+KCkpIHsgICAgICAgICAgICBcCisgICAgcmV0dXJuICN0OyAgICAgICAg
ICAgICAgICAgICAgXAorICB9CisKKyAgSEFORExFX1YxX0JVSUxUSU5fVFlQRShib29sKTsKKyAg
SEFORExFX1YxX0JVSUxUSU5fVFlQRShpbnQzMl90KTsKKyAgSEFORExFX1YxX0JVSUxUSU5fVFlQ
RShpbnQ2NF90KTsKKyAgSEFORExFX1YxX0JVSUxUSU5fVFlQRSh1aW50NjRfdCk7CisgIEhBTkRM
RV9WMV9CVUlMVElOX1RZUEUoZG91YmxlKTsKKyN1bmRlZiBIQU5ETEVfVjFfQlVJTFRJTl9UWVBF
CisKKyAgaWYgKElzT2ZUeXBlPHN0ZDo6c3RyaW5nPigpKSB7CisgICAgcmV0dXJuICJzdHJpbmci
OworICB9CisKKyAgcmV0dXJuICIiOworfQorCitzdGQ6OnN0cmluZyBDb21tYW5kTGluZUZsYWc6
OkZpbGVuYW1lKCkgY29uc3QgeworICByZXR1cm4gZmxhZ3NfaW50ZXJuYWw6OkdldFVzYWdlQ29u
ZmlnKCkubm9ybWFsaXplX2ZpbGVuYW1lKHRoaXMtPmZpbGVuYW1lKTsKK30KKworc3RkOjpzdHJp
bmcgQ29tbWFuZExpbmVGbGFnOjpEZWZhdWx0VmFsdWUoKSBjb25zdCB7CisgIGFic2w6Ok11dGV4
TG9jayBsKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisKKyAgcmV0dXJuIFVucGFyc2UodGhpcy0+
bWFyc2hhbGxpbmdfb3AsIHRoaXMtPmRlZik7Cit9CisKK3N0ZDo6c3RyaW5nIENvbW1hbmRMaW5l
RmxhZzo6Q3VycmVudFZhbHVlKCkgY29uc3QgeworICBhYnNsOjpNdXRleExvY2sgbChJbml0Rmxh
Z0lmTmVjZXNzYXJ5KCkpOworCisgIHJldHVybiBVbnBhcnNlKHRoaXMtPm1hcnNoYWxsaW5nX29w
LCB0aGlzLT5jdXIpOworfQorCitib29sIENvbW1hbmRMaW5lRmxhZzo6SGFzVmFsaWRhdG9yRm4o
KSBjb25zdCB7CisgIGFic2w6Ok11dGV4TG9jayBsKEluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisK
KyAgcmV0dXJuIHRoaXMtPnZhbGlkYXRvciAhPSBudWxscHRyOworfQorCitib29sIENvbW1hbmRM
aW5lRmxhZzo6U2V0VmFsaWRhdG9yRm4oRmxhZ1ZhbGlkYXRvciBmbikgeworICBhYnNsOjpNdXRl
eExvY2sgbChJbml0RmxhZ0lmTmVjZXNzYXJ5KCkpOworCisgIC8vIG9rIHRvIHJlZ2lzdGVyIHRo
ZSBzYW1lIGZ1bmN0aW9uIG92ZXIgYW5kIG92ZXIgYWdhaW4KKyAgaWYgKGZuID09IHRoaXMtPnZh
bGlkYXRvcikgcmV0dXJuIHRydWU7CisKKyAgLy8gQ2FuJ3Qgc2V0IHZhbGlkYXRvciB0byBhIGRp
ZmZlcmVudCBmdW5jdGlvbiwgdW5sZXNzIHJlc2V0IGZpcnN0LgorICBpZiAoZm4gIT0gbnVsbHB0
ciAmJiB0aGlzLT52YWxpZGF0b3IgIT0gbnVsbHB0cikgeworICAgIEFCU0xfSU5URVJOQUxfTE9H
KAorICAgICAgICBXQVJOSU5HLCBhYnNsOjpTdHJDYXQoIklnbm9yaW5nIFNldFZhbGlkYXRvckZu
KCkgZm9yIGZsYWcgJyIsIE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIn
OiB2YWxpZGF0ZS1mbiBhbHJlYWR5IHJlZ2lzdGVyZWQiKSk7CisKKyAgICByZXR1cm4gZmFsc2U7
CisgIH0KKworICB0aGlzLT52YWxpZGF0b3IgPSBmbjsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgQ29tbWFuZExpbmVGbGFnOjpJbnZva2VWYWxpZGF0b3IoY29uc3Qgdm9pZCogdmFsdWUpIGNv
bnN0CisgICAgQUJTTF9FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQodGhpcy0+bG9ja3MtPnByaW1h
cnlfbXUpIHsKKyAgaWYgKCF0aGlzLT52YWxpZGF0b3IpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fQorCisgICh2b2lkKXZhbHVlOworCisgIEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAgRkFUQUws
CisgICAgICBhYnNsOjpTdHJDYXQoIkZsYWcgJyIsIE5hbWUoKSwKKyAgICAgICAgICAgICAgICAg
ICAiJyBvZiBlbmNhcHN1bGF0ZWQgdHlwZSBzaG91bGQgbm90IGhhdmUgYSB2YWxpZGF0b3IiKSk7
CisKKyAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENvbW1hbmRMaW5lRmxhZzo6U2V0Q2FsbGJh
Y2soCisgICAgY29uc3QgZmxhZ3NfaW50ZXJuYWw6OkZsYWdDYWxsYmFjayBtdXRhdGlvbl9jYWxs
YmFjaykgeworICBhYnNsOjpNdXRleExvY2sgbChJbml0RmxhZ0lmTmVjZXNzYXJ5KCkpOworCisg
IGNhbGxiYWNrID0gbXV0YXRpb25fY2FsbGJhY2s7CisKKyAgSW52b2tlQ2FsbGJhY2soKTsKK30K
KworLy8gSWYgdGhlIGZsYWcgaGFzIGEgbXV0YXRpb24gY2FsbGJhY2sgdGhpcyBmdW5jdGlvbiBp
bnZva2VzIGl0LiBXaGlsZSB0aGUKKy8vIGNhbGxiYWNrIGlzIGJlaW5nIGludm9rZWQgdGhlIHBy
aW1hcnkgZmxhZydzIG11dGV4IGlzIHVubG9ja2VkIGFuZCBpdCBpcworLy8gcmUtbG9ja2VkIGJh
Y2sgYWZ0ZXIgY2FsbCB0byBjYWxsYmFjayBpcyBjb21wbGV0ZWQuIENhbGxiYWNrIGludm9jYXRp
b24gaXMKKy8vIGd1YXJkZWQgYnkgZmxhZydzIHNlY29uZGFyeSBtdXRleCBpbnN0ZWFkIHdoaWNo
IHByZXZlbnRzIGNvbmN1cnJlbnQgY2FsbGJhY2sKKy8vIGludm9jYXRpb24uIE5vdGUgdGhhdCBp
dCBpcyBwb3NzaWJsZSBmb3Igb3RoZXIgdGhyZWFkIHRvIGdyYWIgdGhlIHByaW1hcnkKKy8vIGxv
Y2sgYW5kIHVwZGF0ZSBmbGFnJ3MgdmFsdWUgYXQgYW55IHRpbWUgZHVyaW5nIHRoZSBjYWxsYmFj
ayBpbnZvY2F0aW9uLgorLy8gVGhpcyBpcyBieSBkZXNpZ24uIENhbGxiYWNrIGNhbiBnZXQgYSB2
YWx1ZSBvZiB0aGUgZmxhZyBpZiBuZWNlc3NhcnksIGJ1dCBpdAorLy8gbWlnaHQgYmUgZGlmZmVy
ZW50IGZyb20gdGhlIHZhbHVlIGluaXRpYXRlZCB0aGUgY2FsbGJhY2sgYW5kIGl0IGFsc28gY2Fu
IGJlCisvLyBkaWZmZXJlbnQgYnkgdGhlIHRpbWUgdGhlIGNhbGxiYWNrIGludm9jYXRpb24gaXMg
Y29tcGxldGVkLgorLy8gUmVxdWlyZXMgdGhhdCAqcHJpbWFyeV9sb2NrIGJlIGhlbGQgaW4gZXhj
bHVzaXZlIG1vZGU7IGl0IG1heSBiZSByZWxlYXNlZAorLy8gYW5kIHJlYWNxdWlyZWQgYnkgdGhl
IGltcGxlbWVudGF0aW9uLgordm9pZCBDb21tYW5kTGluZUZsYWc6Okludm9rZUNhbGxiYWNrKCkK
KyAgICBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRCh0aGlzLT5sb2Nrcy0+cHJpbWFyeV9t
dSkgeworICBpZiAoIXRoaXMtPmNhbGxiYWNrKSByZXR1cm47CisKKyAgLy8gVGhlIGNhbGxiYWNr
IGxvY2sgaXMgZ3VhcmFudGVlZCBpbml0aWFsaXplZCwgYmVjYXVzZSAqbG9ja3MtPnByaW1hcnlf
bXUKKyAgLy8gZXhpc3RzLgorICBhYnNsOjpNdXRleCogY2FsbGJhY2tfbXUgPSAmdGhpcy0+bG9j
a3MtPmNhbGxiYWNrX211OworCisgIC8vIFdoZW4gZXhlY3V0aW5nIHRoZSBjYWxsYmFjayB3ZSBu
ZWVkIHRoZSBwcmltYXJ5IGZsYWcncyBtdXRleCB0byBiZSB1bmxvY2tlZAorICAvLyBzbyB0aGF0
IGNhbGxiYWNrIGNhbiByZXRyaWV2ZSB0aGUgZmxhZydzIHZhbHVlLgorICB0aGlzLT5sb2Nrcy0+
cHJpbWFyeV9tdS5VbmxvY2soKTsKKworICB7CisgICAgYWJzbDo6TXV0ZXhMb2NrIGxvY2soY2Fs
bGJhY2tfbXUpOworICAgIHRoaXMtPmNhbGxiYWNrKCk7CisgIH0KKworICB0aGlzLT5sb2Nrcy0+
cHJpbWFyeV9tdS5Mb2NrKCk7Cit9CisKKy8vIEF0dGVtcHRzIHRvIHBhcnNlIHN1cHBsaWVkIGB2
YWx1ZWAgc3RyaW5nIHVzaW5nIHBhcnNpbmcgcm91dGluZSBpbiB0aGUgYGZsYWdgCisvLyBhcmd1
bWVudC4gSWYgcGFyc2luZyBpcyBzdWNjZXNzZnVsLCBpdCB3aWxsIHRyeSB0byB2YWxpZGF0ZSB0
aGF0IHRoZSBwYXJzZWQKKy8vIHZhbHVlIGlzIHZhbGlkIGZvciB0aGUgc3BlY2lmaWVkICdmbGFn
Jy4gRmluYWxseSB0aGlzIGZ1bmN0aW9uIHN0b3JlcyB0aGUKKy8vIHBhcnNlZCB2YWx1ZSBpbiAn
ZHN0JyBhc3N1bWluZyBpdCBpcyBhIHBvaW50ZXIgdG8gdGhlIGZsYWcncyB2YWx1ZSB0eXBlLiBJ
bgorLy8gY2FzZSBpZiBhbnkgZXJyb3IgaXMgZW5jb3VudGVyZWQgaW4gZWl0aGVyIHN0ZXAsIHRo
ZSBlcnJvciBtZXNzYWdlIGlzIHN0b3JlZAorLy8gaW4gJ2VycicKK2Jvb2wgVHJ5UGFyc2VMb2Nr
ZWQoQ29tbWFuZExpbmVGbGFnKiBmbGFnLCB2b2lkKiBkc3QsIGFic2w6OnN0cmluZ192aWV3IHZh
bHVlLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJyKQorICAgIEFCU0xfRVhD
TFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGZsYWctPmxvY2tzLT5wcmltYXJ5X211KSB7CisgIHZvaWQq
IHRlbnRhdGl2ZV92YWx1ZSA9IENsb25lKGZsYWctPm9wLCBmbGFnLT5kZWYpOworICBzdGQ6OnN0
cmluZyBwYXJzZV9lcnI7CisgIGlmICghUGFyc2UoZmxhZy0+bWFyc2hhbGxpbmdfb3AsIHZhbHVl
LCB0ZW50YXRpdmVfdmFsdWUsICZwYXJzZV9lcnIpKSB7CisgICAgYXV0byB0eXBlX25hbWUgPSBm
bGFnLT5UeXBlbmFtZSgpOworICAgIGFic2w6OnN0cmluZ192aWV3IGVycl9zZXAgPSBwYXJzZV9l
cnIuZW1wdHkoKSA/ICIiIDogIjsgIjsKKyAgICBhYnNsOjpzdHJpbmdfdmlldyB0eXBlbmFtZV9z
ZXAgPSB0eXBlX25hbWUuZW1wdHkoKSA/ICIiIDogIiAiOworICAgICplcnIgPSBhYnNsOjpTdHJD
YXQoIklsbGVnYWwgdmFsdWUgJyIsIHZhbHVlLCAiJyBzcGVjaWZpZWQgZm9yIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGVuYW1lX3NlcCwgdHlwZV9uYW1lLCAiIGZsYWcgJyIsIGZsYWct
Pk5hbWUoKSwgIiciLAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyX3NlcCwgcGFyc2VfZXJy
KTsKKyAgICBEZWxldGUoZmxhZy0+b3AsIHRlbnRhdGl2ZV92YWx1ZSk7CisgICAgcmV0dXJuIGZh
bHNlOworICB9CisKKyAgaWYgKCFmbGFnLT5JbnZva2VWYWxpZGF0b3IodGVudGF0aXZlX3ZhbHVl
KSkgeworICAgICplcnIgPSBhYnNsOjpTdHJDYXQoIkZhaWxlZCB2YWxpZGF0aW9uIG9mIG5ldyB2
YWx1ZSAnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVucGFyc2UoZmxhZy0+bWFyc2hhbGxp
bmdfb3AsIHRlbnRhdGl2ZV92YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAiJyBmb3Ig
ZmxhZyAnIiwgZmxhZy0+TmFtZSgpLCAiJyIpOworICAgIERlbGV0ZShmbGFnLT5vcCwgdGVudGF0
aXZlX3ZhbHVlKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBmbGFnLT5jb3VudGVyKys7
CisgIENvcHkoZmxhZy0+b3AsIHRlbnRhdGl2ZV92YWx1ZSwgZHN0KTsKKyAgRGVsZXRlKGZsYWct
Pm9wLCB0ZW50YXRpdmVfdmFsdWUpOworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gU2V0cyB0aGUg
dmFsdWUgb2YgdGhlIGZsYWcgYmFzZWQgb24gc3BlY2lmaWVkIHN0cmluZyBgdmFsdWVgLiBJZiB0
aGUgZmxhZworLy8gd2FzIHN1Y2Nlc3NmdWxseSBzZXQgdG8gbmV3IHZhbHVlLCBpdCByZXR1cm5z
IHRydWUuIE90aGVyd2lzZSwgc2V0cyBgZXJyYAorLy8gdG8gaW5kaWNhdGUgdGhlIGVycm9yLCBs
ZWF2ZXMgdGhlIGZsYWcgdW5jaGFuZ2VkLCBhbmQgcmV0dXJucyBmYWxzZS4gVGhlcmUKKy8vIGFy
ZSB0aHJlZSB3YXlzIHRvIHNldCB0aGUgZmxhZydzIHZhbHVlOgorLy8gICogVXBkYXRlIHRoZSBj
dXJyZW50IGZsYWcgdmFsdWUKKy8vICAqIFVwZGF0ZSB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUK
Ky8vICAqIFVwZGF0ZSB0aGUgY3VycmVudCBmbGFnIHZhbHVlIGlmIGl0IHdhcyBuZXZlciBzZXQg
YmVmb3JlCisvLyBUaGUgbW9kZSBpcyBzZWxlY3RlZCBiYXNlZCBvbiAnc2V0X21vZGUnIHBhcmFt
ZXRlci4KK2Jvb2wgQ29tbWFuZExpbmVGbGFnOjpTZXRGcm9tU3RyaW5nKGFic2w6OnN0cmluZ192
aWV3IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhZ1NldHRp
bmdNb2RlIHNldF9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVTb3VyY2Ugc291cmNlLCBzdGQ6OnN0cmluZyogZXJyKSB7CisgIGlmIChJc1JldGlyZWQoKSkg
cmV0dXJuIGZhbHNlOworCisgIGFic2w6Ok11dGV4TG9jayBsKEluaXRGbGFnSWZOZWNlc3Nhcnko
KSk7CisKKyAgLy8gRGlyZWN0LWFjY2VzcyBmbGFncyBjYW4gYmUgbW9kaWZpZWQgd2l0aG91dCBn
b2luZyB0aHJvdWdoIHRoZQorICAvLyBmbGFnIEFQSS4gRGV0ZWN0IHN1Y2ggY2hhbmdlcyBhbmQg
dXBkYXRlIHRoZSBmbGFnLT5tb2RpZmllZCBiaXQuCisgIGlmICghSXNBYnNlaWxGbGFnKCkpIHsK
KyAgICBpZiAoIXRoaXMtPm1vZGlmaWVkICYmIENoYW5nZWREaXJlY3RseSh0aGlzLCB0aGlzLT5j
dXIsIHRoaXMtPmRlZikpIHsKKyAgICAgIHRoaXMtPm1vZGlmaWVkID0gdHJ1ZTsKKyAgICB9Cisg
IH0KKworICBzd2l0Y2ggKHNldF9tb2RlKSB7CisgICAgY2FzZSBTRVRfRkxBR1NfVkFMVUU6IHsK
KyAgICAgIC8vIHNldCBvciBtb2RpZnkgdGhlIGZsYWcncyB2YWx1ZQorICAgICAgaWYgKCFUcnlQ
YXJzZUxvY2tlZCh0aGlzLCB0aGlzLT5jdXIsIHZhbHVlLCBlcnIpKSByZXR1cm4gZmFsc2U7Cisg
ICAgICB0aGlzLT5tb2RpZmllZCA9IHRydWU7CisgICAgICBVcGRhdGVDb3B5KHRoaXMpOworICAg
ICAgSW52b2tlQ2FsbGJhY2soKTsKKworICAgICAgaWYgKHNvdXJjZSA9PSBrQ29tbWFuZExpbmUp
IHsKKyAgICAgICAgdGhpcy0+b25fY29tbWFuZF9saW5lID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNFVF9GTEFHX0lGX0RFRkFVTFQ6IHsKKyAgICAgIC8v
IHNldCB0aGUgZmxhZydzIHZhbHVlLCBidXQgb25seSBpZiBpdCBoYXNuJ3QgYmVlbiBzZXQgYnkg
c29tZW9uZSBlbHNlCisgICAgICBpZiAoIXRoaXMtPm1vZGlmaWVkKSB7CisgICAgICAgIGlmICgh
VHJ5UGFyc2VMb2NrZWQodGhpcywgdGhpcy0+Y3VyLCB2YWx1ZSwgZXJyKSkgcmV0dXJuIGZhbHNl
OworICAgICAgICB0aGlzLT5tb2RpZmllZCA9IHRydWU7CisgICAgICAgIFVwZGF0ZUNvcHkodGhp
cyk7CisgICAgICAgIEludm9rZUNhbGxiYWNrKCk7CisgICAgICB9IGVsc2UgeworICAgICAgICAv
LyBUT0RPKHJvZ2VlZmYpOiByZXZpZXcgYW5kIGZpeCB0aGlzIHNlbWFudGljLiBDdXJyZW50bHkg
d2UgZG8gbm90IGZhaWwKKyAgICAgICAgLy8gaW4gdGhpcyBjYXNlIGlmIGZsYWcgaXMgbW9kaWZp
ZWQuIFRoaXMgaXMgbWlzbGVhZGluZyBzaW5jZSB0aGUgZmxhZydzCisgICAgICAgIC8vIHZhbHVl
IGlzIG5vdCB1cGRhdGVkIGV2ZW4gdGhvdWdoIHdlIHJldHVybiB0cnVlLgorICAgICAgICAvLyAq
ZXJyID0gYWJzbDo6U3RyQ2F0KHRoaXMtPk5hbWUoKSwgIiBpcyBhbHJlYWR5IHNldCB0byAiLAor
ICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnRWYWx1ZSgpLCAiXG4iKTsKKyAg
ICAgICAgLy8gcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNFVF9GTEFHU19ERUZBVUxUOiB7CisgICAgICAv
LyBtb2RpZnkgdGhlIGZsYWcncyBkZWZhdWx0LXZhbHVlCisgICAgICBpZiAoIVRyeVBhcnNlTG9j
a2VkKHRoaXMsIHRoaXMtPmRlZiwgdmFsdWUsIGVycikpIHJldHVybiBmYWxzZTsKKworICAgICAg
aWYgKCF0aGlzLT5tb2RpZmllZCkgeworICAgICAgICAvLyBOZWVkIHRvIHNldCBib3RoIGRlZnZh
bHVlICphbmQqIGN1cnJlbnQsIGluIHRoaXMgY2FzZQorICAgICAgICBDb3B5KHRoaXMtPm9wLCB0
aGlzLT5kZWYsIHRoaXMtPmN1cik7CisgICAgICAgIFVwZGF0ZUNvcHkodGhpcyk7CisgICAgICAg
IEludm9rZUNhbGxiYWNrKCk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICB9CisgICAgZGVm
YXVsdDogeworICAgICAgLy8gdW5rbm93biBzZXRfbW9kZQorICAgICAgYXNzZXJ0KGZhbHNlKTsK
KyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBDb21tYW5kTGluZUZsYWc6OlN0b3JlQXRvbWljKHNpemVfdCBzaXplKSB7CisgIGludDY0
X3QgdCA9IDA7CisgIGFzc2VydChzaXplIDw9IHNpemVvZihpbnQ2NF90KSk7CisgIG1lbWNweSgm
dCwgdGhpcy0+Y3VyLCBzaXplKTsKKyAgdGhpcy0+YXRvbWljLnN0b3JlKHQsIHN0ZDo6bWVtb3J5
X29yZGVyX3JlbGVhc2UpOworfQorCit2b2lkIENvbW1hbmRMaW5lRmxhZzo6Q2hlY2tEZWZhdWx0
VmFsdWVQYXJzaW5nUm91bmR0cmlwKCkgY29uc3QgeworICBzdGQ6OnN0cmluZyB2ID0gRGVmYXVs
dFZhbHVlKCk7CisKKyAgYWJzbDo6TXV0ZXhMb2NrIGxvY2soSW5pdEZsYWdJZk5lY2Vzc2FyeSgp
KTsKKworICB2b2lkKiBkc3QgPSBDbG9uZSh0aGlzLT5vcCwgdGhpcy0+ZGVmKTsKKyAgc3RkOjpz
dHJpbmcgZXJyb3I7CisgIGlmICghZmxhZ3NfaW50ZXJuYWw6OlBhcnNlKHRoaXMtPm1hcnNoYWxs
aW5nX29wLCB2LCBkc3QsICZlcnJvcikpIHsKKyAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAg
ICAgRkFUQUwsCisgICAgICAgIGFic2w6OlN0ckNhdCgiRmxhZyAiLCBOYW1lKCksICIgKGZyb20g
IiwgRmlsZW5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICIpOiBzdGQ6OnN0cmluZyBmb3Jt
IG9mIGRlZmF1bHQgdmFsdWUgJyIsIHYsCisgICAgICAgICAgICAgICAgICAgICAiJyBjb3VsZCBu
b3QgYmUgcGFyc2VkOyBlcnJvcj0iLCBlcnJvcikpOworICB9CisKKyAgLy8gV2UgZG8gbm90IGNv
bXBhcmUgZHN0IHRvIGRlZiBzaW5jZSBwYXJzaW5nL3VucGFyc2luZyBtYXkgbWFrZQorICAvLyBz
bWFsbCBjaGFuZ2VzLCBlLmcuLCBwcmVjaXNpb24gbG9zcyBmb3IgZmxvYXRpbmcgcG9pbnQgdHlw
ZXMuCisgIERlbGV0ZSh0aGlzLT5vcCwgZHN0KTsKK30KKworYm9vbCBDb21tYW5kTGluZUZsYWc6
OlZhbGlkYXRlRGVmYXVsdFZhbHVlKCkgY29uc3QgeworICBhYnNsOjpNdXRleExvY2sgbG9jayhJ
bml0RmxhZ0lmTmVjZXNzYXJ5KCkpOworICByZXR1cm4gSW52b2tlVmFsaWRhdG9yKHRoaXMtPmRl
Zik7Cit9CisKK2Jvb2wgQ29tbWFuZExpbmVGbGFnOjpWYWxpZGF0ZUlucHV0VmFsdWUoYWJzbDo6
c3RyaW5nX3ZpZXcgdmFsdWUpIGNvbnN0IHsKKyAgYWJzbDo6TXV0ZXhMb2NrIGwoSW5pdEZsYWdJ
Zk5lY2Vzc2FyeSgpKTsgIC8vIHByb3RlY3QgZGVmYXVsdCB2YWx1ZSBhY2Nlc3MKKworICB2b2lk
KiBvYmogPSBDbG9uZSh0aGlzLT5vcCwgdGhpcy0+ZGVmKTsKKyAgc3RkOjpzdHJpbmcgaWdub3Jl
ZF9lcnJvcjsKKyAgY29uc3QgYm9vbCByZXN1bHQgPQorICAgICAgZmxhZ3NfaW50ZXJuYWw6OlBh
cnNlKHRoaXMtPm1hcnNoYWxsaW5nX29wLCB2YWx1ZSwgb2JqLCAmaWdub3JlZF9lcnJvcikgJiYK
KyAgICAgIEludm9rZVZhbGlkYXRvcihvYmopOworICBEZWxldGUodGhpcy0+b3AsIG9iaik7Cisg
IHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0IGludDY0X3QgQ29tbWFuZExpbmVGbGFnOjprQXRv
bWljSW5pdDsKKwordm9pZCBDb21tYW5kTGluZUZsYWc6OlJlYWQodm9pZCogZHN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxhZ3NfaW50ZXJuYWw6OkZsYWdPcEZuIGRzdF9v
cCkgY29uc3QgeworICBhYnNsOjpSZWFkZXJNdXRleExvY2sgbChJbml0RmxhZ0lmTmVjZXNzYXJ5
KCkpOworCisgIC8vIGBkc3Rfb3BgIGlzIHRoZSB1bm1hcnNoYWxpbmcgb3BlcmF0aW9uIGNvcnJl
c3BvbmRpbmcgdG8gdGhlIGRlY2xhcmF0aW9uCisgIC8vIHZpc2liaWxlIGF0IHRoZSBjYWxsIHNp
dGUuIGBvcGAgaXMgdGhlIEZsYWcncyBkZWZpbmVkIHVubWFyc2hhbGxpbmcKKyAgLy8gb3BlcmF0
aW9uLiBUaGV5IG11c3QgbWF0Y2ggZm9yIHRoaXMgb3BlcmF0aW9uIHRvIGJlIHdlbGwtZGVmaW5l
ZC4KKyAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShkc3Rfb3AgIT0gb3ApKSB7CisgICAgQUJTTF9J
TlRFUk5BTF9MT0coCisgICAgICAgIEVSUk9SLAorICAgICAgICBhYnNsOjpTdHJDYXQoIkZsYWcg
JyIsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAiJyBpcyBkZWZpbmVkIGFzIG9uZSB0eXBl
IGFuZCBkZWNsYXJlZCBhcyBhbm90aGVyIikpOworICB9CisgIENvcHlDb25zdHJ1Y3Qob3AsIGN1
ciwgZHN0KTsKK30KKwordm9pZCBDb21tYW5kTGluZUZsYWc6OldyaXRlKGNvbnN0IHZvaWQqIHNy
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGFnc19pbnRlcm5hbDo6Rmxh
Z09wRm4gc3JjX29wKSB7CisgIGFic2w6Ok11dGV4TG9jayBsKEluaXRGbGFnSWZOZWNlc3Nhcnko
KSk7CisKKyAgLy8gYHNyY19vcGAgaXMgdGhlIG1hcnNoYWxsaW5nIG9wZXJhdGlvbiBjb3JyZXNw
b25kaW5nIHRvIHRoZSBkZWNsYXJhdGlvbgorICAvLyB2aXNpYmxlIGF0IHRoZSBjYWxsIHNpdGUu
IGBvcGAgaXMgdGhlIEZsYWcncyBkZWZpbmVkIG1hcnNoYWxsaW5nIG9wZXJhdGlvbi4KKyAgLy8g
VGhleSBtdXN0IG1hdGNoIGZvciB0aGlzIG9wZXJhdGlvbiB0byBiZSB3ZWxsLWRlZmluZWQuCisg
IGlmIChBQlNMX1BSRURJQ1RfRkFMU0Uoc3JjX29wICE9IG9wKSkgeworICAgIEFCU0xfSU5URVJO
QUxfTE9HKAorICAgICAgICBFUlJPUiwKKyAgICAgICAgYWJzbDo6U3RyQ2F0KCJGbGFnICciLCBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgIicgaXMgZGVmaW5lZCBhcyBvbmUgdHlwZSBhbmQg
ZGVjbGFyZWQgYXMgYW5vdGhlciIpKTsKKyAgfQorCisgIGlmIChTaG91bGRWYWxpZGF0ZUZsYWdW
YWx1ZSgqdGhpcykpIHsKKyAgICB2b2lkKiBvYmogPSBDbG9uZShvcCwgc3JjKTsKKyAgICBzdGQ6
OnN0cmluZyBpZ25vcmVkX2Vycm9yOworICAgIHN0ZDo6c3RyaW5nIHNyY19hc19zdHIgPSBVbnBh
cnNlKG1hcnNoYWxsaW5nX29wLCBzcmMpOworICAgIGlmICghUGFyc2UobWFyc2hhbGxpbmdfb3As
IHNyY19hc19zdHIsIG9iaiwgJmlnbm9yZWRfZXJyb3IpIHx8CisgICAgICAgICFJbnZva2VWYWxp
ZGF0b3Iob2JqKSkgeworICAgICAgQUJTTF9JTlRFUk5BTF9MT0coRVJST1IsIGFic2w6OlN0ckNh
dCgiQXR0ZW1wdCB0byBzZXQgZmxhZyAnIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIicgdG8gaW52YWxpZCB2YWx1ZSAiLCBzcmNfYXNfc3RyKSk7
CisgICAgfQorICAgIERlbGV0ZShvcCwgb2JqKTsKKyAgfQorCisgIG1vZGlmaWVkID0gdHJ1ZTsK
KyAgY291bnRlcisrOworICBDb3B5KG9wLCBzcmMsIGN1cik7CisKKyAgVXBkYXRlQ29weSh0aGlz
KTsKKyAgSW52b2tlQ2FsbGJhY2soKTsKK30KKworc3RkOjpzdHJpbmcgSGVscFRleHQ6OkdldEhl
bHBUZXh0KCkgY29uc3QgeworICBpZiAoaGVscF9mdW5jdGlvbl8pIHJldHVybiBoZWxwX2Z1bmN0
aW9uXygpOworICBpZiAoaGVscF9tZXNzYWdlXykgcmV0dXJuIGhlbHBfbWVzc2FnZV87CisKKyAg
cmV0dXJuIHt9OworfQorCisvLyBVcGRhdGUgYW55IGNvcHkgb2YgdGhlIGZsYWcgdmFsdWUgdGhh
dCBpcyBzdG9yZWQgaW4gYW4gYXRvbWljIHdvcmQuCisvLyBJbiBhZGRpdGlvbiBpZiBmbGFnIGhh
cyBhIG11dGF0aW9uIGNhbGxiYWNrIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBpdC4KK3ZvaWQgVXBk
YXRlQ29weShDb21tYW5kTGluZUZsYWcqIGZsYWcpIHsKKyNkZWZpbmUgU1RPUkVfQVRPTUlDKFQp
ICAgICAgICAgICBcCisgIGVsc2UgaWYgKGZsYWctPklzT2ZUeXBlPFQ+KCkpIHsgXAorICAgIGZs
YWctPlN0b3JlQXRvbWljKHNpemVvZihUKSk7IFwKKyAgfQorCisgIGlmIChmYWxzZSkgeworICB9
CisgIEFCU0xfRkxBR1NfSU5URVJOQUxfRk9SX0VBQ0hfTE9DS19GUkVFKFNUT1JFX0FUT01JQykK
KyN1bmRlZiBTVE9SRV9BVE9NSUMKK30KKworLy8gUmV0dXJuIHRydWUgaWZmIGZsYWcgdmFsdWUg
d2FzIGNoYW5nZWQgdmlhIGRpcmVjdC1hY2Nlc3MuCitib29sIENoYW5nZWREaXJlY3RseShDb21t
YW5kTGluZUZsYWcqIGZsYWcsIGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpIHsKKyAgaWYg
KCFmbGFnLT5Jc0Fic2VpbEZsYWcoKSkgeworLy8gTmVlZCB0byBjb21wYXJlIHZhbHVlcyBmb3Ig
ZGlyZWN0LWFjY2VzcyBmbGFncy4KKyNkZWZpbmUgQ0hBTkdFRF9GT1JfVFlQRShUKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpZiAoZmxhZy0+
SXNPZlR5cGU8VD4oKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihhKSAhPSAq
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oYik7IFwKKyAgfQorCisgICAgQ0hBTkdFRF9GT1Jf
VFlQRShib29sKTsKKyAgICBDSEFOR0VEX0ZPUl9UWVBFKGludDMyX3QpOworICAgIENIQU5HRURf
Rk9SX1RZUEUoaW50NjRfdCk7CisgICAgQ0hBTkdFRF9GT1JfVFlQRSh1aW50NjRfdCk7CisgICAg
Q0hBTkdFRF9GT1JfVFlQRShkb3VibGUpOworICAgIENIQU5HRURfRk9SX1RZUEUoc3RkOjpzdHJp
bmcpOworI3VuZGVmIENIQU5HRURfRk9SX1RZUEUKKyAgfQorCisgIHJldHVybiBmYWxzZTsKK30K
KworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGluZWZsYWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODI0NDNhNzc2
MGU4OWFhNjQ0MGUxNzZkZDE5Y2ExMzVkYzM4MDFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmgKQEAgLTAsMCArMSwzODMgQEAKKy8vCisv
LyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0ZM
QUdTX0lOVEVSTkFMX0NPTU1BTkRMSU5FRkxBR19IXworI2RlZmluZSBBQlNMX0ZMQUdTX0lOVEVS
TkFMX0NPTU1BTkRMSU5FRkxBR19IXworCisjaW5jbHVkZSA8YXRvbWljPgorCisjaW5jbHVkZSAi
YWJzbC9iYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvbWFyc2hhbGxpbmcuaCIK
KyNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgorI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGZsYWdzX2lu
dGVybmFsIHsKKworLy8gVHlwZS1zcGVjaWZpYyBvcGVyYXRpb25zLCBlZy4sIHBhcnNpbmcsIGNv
cHlpbmcsIGV0Yy4gYXJlIHByb3ZpZGVkCisvLyBieSBmdW5jdGlvbiBzcGVjaWZpYyB0byB0aGF0
IHR5cGUgd2l0aCBhIHNpZ25hdHVyZSBtYXRjaGluZyBGbGFnT3BGbi4KK2VudW0gRmxhZ09wIHsK
KyAga0RlbGV0ZSwKKyAga0Nsb25lLAorICBrQ29weSwKKyAga0NvcHlDb25zdHJ1Y3QsCisgIGtT
aXplb2YsCisgIGtQYXJzZSwKKyAga1VucGFyc2UKK307Cit1c2luZyBGbGFnT3BGbiA9IHZvaWQq
ICgqKShGbGFnT3AsIGNvbnN0IHZvaWQqLCB2b2lkKik7Cit1c2luZyBGbGFnTWFyc2hhbGxpbmdP
cEZuID0gdm9pZCogKCopKEZsYWdPcCwgY29uc3Qgdm9pZCosIHZvaWQqLCB2b2lkKik7CisKKy8v
IE9wdGlvbnMgdGhhdCBjb250cm9sIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUuCitlbnVt
IEZsYWdTZXR0aW5nTW9kZSB7CisgIC8vIHVwZGF0ZSB0aGUgZmxhZydzIHZhbHVlIHVuY29uZGl0
aW9uYWxseSAoY2FuIGNhbGwgdGhpcyBtdWx0aXBsZSB0aW1lcykuCisgIFNFVF9GTEFHU19WQUxV
RSwKKyAgLy8gdXBkYXRlIHRoZSBmbGFnJ3MgdmFsdWUsIGJ1dCAqb25seSBpZiogaXQgaGFzIG5v
dCB5ZXQgYmVlbiB1cGRhdGVkCisgIC8vIHdpdGggU0VUX0ZMQUdTX1ZBTFVFLCBTRVRfRkxBR19J
Rl9ERUZBVUxULCBvciAiRkxBR1NfeHh4ID0gbm9uZGVmIi4KKyAgU0VUX0ZMQUdfSUZfREVGQVVM
VCwKKyAgLy8gc2V0IHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1ZSB0byB0aGlzLiAgSWYgdGhlIGZs
YWcgaGFzIG5vdCBiZWVuIHVwZGF0ZWQKKyAgLy8geWV0ICh2aWEgU0VUX0ZMQUdTX1ZBTFVFLCBT
RVRfRkxBR19JRl9ERUZBVUxULCBvciAiRkxBR1NfeHh4ID0gbm9uZGVmIikKKyAgLy8gY2hhbmdl
IHRoZSBmbGFnJ3MgY3VycmVudCB2YWx1ZSB0byB0aGUgbmV3IGRlZmF1bHQgdmFsdWUgYXMgd2Vs
bC4KKyAgU0VUX0ZMQUdTX0RFRkFVTFQKK307CisKKy8vIE9wdGlvbnMgdGhhdCBjb250cm9sIFNl
dEZyb21TdHJpbmc6IFNvdXJjZSBvZiBhIHZhbHVlLgorZW51bSBWYWx1ZVNvdXJjZSB7CisgIC8v
IEZsYWcgaXMgYmVpbmcgc2V0IGJ5IHZhbHVlIHNwZWNpZmllZCBvbiBhIGNvbW1hbmQgbGluZS4K
KyAga0NvbW1hbmRMaW5lLAorICAvLyBGbGFnIGlzIGJlaW5nIHNldCBieSB2YWx1ZSBzcGVjaWZp
ZWQgaW4gdGhlIGNvZGUuCisgIGtQcm9ncmFtbWF0aWNDaGFuZ2UsCit9OworCisvLyBTaWduYXR1
cmUgZm9yIHRoZSBoZWxwIGdlbmVyYXRpb24gZnVuY3Rpb24gdXNlZCBhcyBhbiBhcmd1bWVudCBm
b3IgdGhlCisvLyBhYnNsOjpGbGFnIGNvbnN0cnVjdG9yLgordXNpbmcgSGVscEdlbkZ1bmMgPSBz
dGQ6OnN0cmluZyAoKikoKTsKKworLy8gU2lnbmF0dXJlIGZvciB0aGUgZnVuY3Rpb24gZ2VuZXJh
dGluZyB0aGUgaW5pdGlhbCBmbGFnIHZhbHVlIGJhc2VkICh1c3VhbGx5CisvLyBiYXNlZCBvbiBk
ZWZhdWx0IHZhbHVlIHN1cHBsaWVkIGluIGZsYWcncyBkZWZpbml0aW9uKQordXNpbmcgSW5pdGlh
bFZhbEdlbkZ1bmMgPSB2b2lkKiAoKikoKTsKKworc3RydWN0IENvbW1hbmRMaW5lRmxhZ0luZm87
CisKKy8vIFNpZ25hdHVyZSBmb3IgdGhlIG11dGF0aW9uIGNhbGxiYWNrIHVzZWQgYnkgd2F0Y2hl
ZCBGbGFncworLy8gVGhlIGNhbGxiYWNrIGlzIG5vZXhjZXB0LgorLy8gVE9ETyhyb2dlZWZmKTog
YWRkIG5vZXhjZXB0IGFmdGVyIEMrKzE3IHN1cHBvcnQgaXMgYWRkZWQuCit1c2luZyBGbGFnQ2Fs
bGJhY2sgPSB2b2lkICgqKSgpOworCit1c2luZyBGbGFnVmFsaWRhdG9yID0gYm9vbCAoKikoKTsK
KworZXh0ZXJuIGNvbnN0IGNoYXIga1N0cmlwcGVkRmxhZ0hlbHBbXTsKKworLy8gVGhlIHBlci10
eXBlIGZ1bmN0aW9uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQqIEZsYWdPcHMoRmxhZ09w
IG9wLCBjb25zdCB2b2lkKiB2MSwgdm9pZCogdjIpIHsKKyAgc3dpdGNoIChvcCkgeworICAgIGNh
c2Uga0RlbGV0ZToKKyAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxjb25zdCBUKj4odjEpOworICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBrQ2xvbmU6CisgICAgICByZXR1cm4gbmV3IFQo
KnN0YXRpY19jYXN0PGNvbnN0IFQqPih2MSkpOworICAgIGNhc2Uga0NvcHk6CisgICAgICAqc3Rh
dGljX2Nhc3Q8VCo+KHYyKSA9ICpzdGF0aWNfY2FzdDxjb25zdCBUKj4odjEpOworICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgY2FzZSBrQ29weUNvbnN0cnVjdDoKKyAgICAgIG5ldyAodjIpIFQo
KnN0YXRpY19jYXN0PGNvbnN0IFQqPih2MSkpOworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
Y2FzZSBrU2l6ZW9mOgorICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNpemVv
ZihUKSk7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBudWxscHRyOworICB9Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCogRmxhZ01hcnNoYWxsaW5nT3BzKEZsYWdPcCBvcCwg
Y29uc3Qgdm9pZCogdjEsIHZvaWQqIHYyLCB2b2lkKiB2MykgeworICBzd2l0Y2ggKG9wKSB7Cisg
ICAgY2FzZSBrUGFyc2U6IHsKKyAgICAgIC8vIGluaXRpYWxpemUgdGhlIHRlbXBvcmFyeSBpbnN0
YW5jZSBvZiB0eXBlIFQgYmFzZWQgb24gY3VycmVudCB2YWx1ZSBpbgorICAgICAgLy8gZGVzdGlu
YXRpb24gKHdoaWNoIGlzIGdvaW5nIHRvIGJlIGZsYWcncyBkZWZhdWx0IHZhbHVlKS4KKyAgICAg
IFQgdGVtcCgqc3RhdGljX2Nhc3Q8VCo+KHYyKSk7CisgICAgICBpZiAoIWFic2w6OlBhcnNlRmxh
ZzxUPigqc3RhdGljX2Nhc3Q8Y29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcqPih2MSksICZ0ZW1wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmcqPih2
MykpKSB7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgfQorICAgICAgKnN0YXRpY19j
YXN0PFQqPih2MikgPSBzdGQ6Om1vdmUodGVtcCk7CisgICAgICByZXR1cm4gdjI7CisgICAgfQor
ICAgIGNhc2Uga1VucGFyc2U6CisgICAgICAqc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmcqPih2Mikg
PQorICAgICAgICAgIGFic2w6OlVucGFyc2VGbGFnPFQ+KCpzdGF0aWNfY2FzdDxjb25zdCBUKj4o
djEpKTsKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgfQorfQorCisvLyBGdW5jdGlvbnMgdGhhdCBpbnZva2UgZmxhZy10eXBlLXNw
ZWNpZmljIG9wZXJhdGlvbnMuCitpbmxpbmUgdm9pZCBEZWxldGUoRmxhZ09wRm4gb3AsIGNvbnN0
IHZvaWQqIG9iaikgeworICBvcChmbGFnc19pbnRlcm5hbDo6a0RlbGV0ZSwgb2JqLCBudWxscHRy
KTsKK30KKworaW5saW5lIHZvaWQqIENsb25lKEZsYWdPcEZuIG9wLCBjb25zdCB2b2lkKiBvYmop
IHsKKyAgcmV0dXJuIG9wKGZsYWdzX2ludGVybmFsOjprQ2xvbmUsIG9iaiwgbnVsbHB0cik7Cit9
CisKK2lubGluZSB2b2lkIENvcHkoRmxhZ09wRm4gb3AsIGNvbnN0IHZvaWQqIHNyYywgdm9pZCog
ZHN0KSB7CisgIG9wKGZsYWdzX2ludGVybmFsOjprQ29weSwgc3JjLCBkc3QpOworfQorCitpbmxp
bmUgdm9pZCBDb3B5Q29uc3RydWN0KEZsYWdPcEZuIG9wLCBjb25zdCB2b2lkKiBzcmMsIHZvaWQq
IGRzdCkgeworICBvcChmbGFnc19pbnRlcm5hbDo6a0NvcHlDb25zdHJ1Y3QsIHNyYywgZHN0KTsK
K30KKworaW5saW5lIGJvb2wgUGFyc2UoRmxhZ01hcnNoYWxsaW5nT3BGbiBvcCwgYWJzbDo6c3Ry
aW5nX3ZpZXcgdGV4dCwgdm9pZCogZHN0LAorICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcq
IGVycm9yKSB7CisgIHJldHVybiBvcChmbGFnc19pbnRlcm5hbDo6a1BhcnNlLCAmdGV4dCwgZHN0
LCBlcnJvcikgIT0gbnVsbHB0cjsKK30KKworaW5saW5lIHN0ZDo6c3RyaW5nIFVucGFyc2UoRmxh
Z01hcnNoYWxsaW5nT3BGbiBvcCwgY29uc3Qgdm9pZCogdmFsKSB7CisgIHN0ZDo6c3RyaW5nIHJl
c3VsdDsKKyAgb3AoZmxhZ3NfaW50ZXJuYWw6OmtVbnBhcnNlLCB2YWwsICZyZXN1bHQsIG51bGxw
dHIpOworICByZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgc2l6ZV90IFNpemVvZihGbGFnT3BG
biBvcCkgeworICAvLyBUaGlzIHNlcXVlbmNlIG9mIGNhc3RzIHJldmVyc2VzIHRoZSBzZXF1ZW5j
ZSBmcm9tIGJhc2U6OmludGVybmFsOjpGbGFnT3BzKCkKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oCisgICAgICBvcChmbGFnc19pbnRlcm5h
bDo6a1NpemVvZiwgbnVsbHB0ciwgbnVsbHB0cikpKTsKK30KKworLy8gVGhlIGZvbGxvd2luZyBz
dHJ1Y3QgY29udGFpbnMgdGhlIGxvY2tzIGluIGEgQ29tbWFuZExpbmVGbGFnIHN0cnVjdC4KKy8v
IFRoZXkgYXJlIGluIGEgc2VwYXJhdGUgc3RydWN0IHRoYXQgaXMgbGF6aWx5IGFsbG9jYXRlZCB0
byBhdm9pZCBwcm9ibGVtcworLy8gd2l0aCBzdGF0aWMgaW5pdGlhbGl6YXRpb24gYW5kIHRvIGF2
b2lkIG11bHRpcGxlIGFsbG9jYXRpb25zLgorc3RydWN0IENvbW1hbmRMaW5lRmxhZ0xvY2tzIHsK
KyAgYWJzbDo6TXV0ZXggcHJpbWFyeV9tdTsgICAvLyBwcm90ZWN0cyBzZXZlcmFsIGZpZWxkcyBp
biBDb21tYW5kTGluZUZsYWcKKyAgYWJzbDo6TXV0ZXggY2FsbGJhY2tfbXU7ICAvLyB1c2VkIHRv
IHNlcmlhbGl6ZSBjYWxsYmFja3MKK307CisKKy8vIEhvbGRzIGVpdGhlciBhIHBvaW50ZXIgdG8g
aGVscCB0ZXh0IG9yIGEgZnVuY3Rpb24gd2hpY2ggcHJvZHVjZXMgaXQuICBUaGlzIGlzCisvLyBu
ZWVkZWQgZm9yIHN1cHBvcnRpbmcgYm90aCBzdGF0aWMgaW5pdGlhbGl6YXRpb24gb2YgRmxhZ3Mg
d2hpbGUgc3VwcG9ydGluZworLy8gdGhlIGxlZ2FjeSByZWdpc3RyYXRpb24gZnJhbWV3b3JrLiAg
V2UgY2FuJ3QgdXNlIGFic2w6OnZhcmlhbnQ8Y29uc3QgY2hhciosCisvLyBjb25zdCBjaGFyKigq
KSgpPiBzaW5jZSBhbnlib2R5IHBhc3NpbmcgMCBvciBudWxscHRyIGluIHRvIGEgQ29tbWFuZExp
bmVGbGFnCisvLyB3b3VsZCBmaW5kIGFuIGFtYmlndWl0eS4KK2NsYXNzIEhlbHBUZXh0IHsKKyBw
dWJsaWM6CisgIHN0YXRpYyBjb25zdGV4cHIgSGVscFRleHQgRnJvbUZ1bmN0aW9uUG9pbnRlcihj
b25zdCBIZWxwR2VuRnVuYyBmbikgeworICAgIHJldHVybiBIZWxwVGV4dChmbiwgbnVsbHB0cik7
CisgIH0KKyAgc3RhdGljIGNvbnN0ZXhwciBIZWxwVGV4dCBGcm9tU3RhdGljQ1N0cmluZyhjb25z
dCBjaGFyKiBtc2cpIHsKKyAgICByZXR1cm4gSGVscFRleHQobnVsbHB0ciwgbXNnKTsKKyAgfQor
CisgIHN0ZDo6c3RyaW5nIEdldEhlbHBUZXh0KCkgY29uc3Q7CisKKyAgSGVscFRleHQoKSA9IGRl
bGV0ZTsKKyAgSGVscFRleHQoY29uc3QgSGVscFRleHQmKSA9IGRlZmF1bHQ7CisgIEhlbHBUZXh0
KEhlbHBUZXh0JiYpID0gZGVmYXVsdDsKKworIHByaXZhdGU6CisgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBIZWxwVGV4dChjb25zdCBIZWxwR2VuRnVuYyBmbiwgY29uc3QgY2hhciogbXNnKQorICAgICAg
OiBoZWxwX2Z1bmN0aW9uXyhmbiksIGhlbHBfbWVzc2FnZV8obXNnKSB7fQorCisgIEhlbHBHZW5G
dW5jIGhlbHBfZnVuY3Rpb25fOworICBjb25zdCBjaGFyKiBoZWxwX21lc3NhZ2VfOworfTsKKwor
Ly8gSG9sZHMgYWxsIGluZm9ybWF0aW9uIGZvciBhIGZsYWcuCitzdHJ1Y3QgQ29tbWFuZExpbmVG
bGFnIHsKKyAgY29uc3RleHByIENvbW1hbmRMaW5lRmxhZygKKyAgICAgIGNvbnN0IGNoYXIqIG5h
bWVfYXJnLCBIZWxwVGV4dCBoZWxwX3RleHQsIGNvbnN0IGNoYXIqIGZpbGVuYW1lX2FyZywKKyAg
ICAgIGNvbnN0IGZsYWdzX2ludGVybmFsOjpGbGFnT3BGbiBvcF9hcmcsCisgICAgICBjb25zdCBm
bGFnc19pbnRlcm5hbDo6RmxhZ01hcnNoYWxsaW5nT3BGbiBtYXJzaGFsbGluZ19vcF9hcmcsCisg
ICAgICBjb25zdCBmbGFnc19pbnRlcm5hbDo6SW5pdGlhbFZhbEdlbkZ1bmMgaW5pdGlhbF92YWx1
ZV9nZW4sCisgICAgICBjb25zdCBib29sIHJldGlyZWRfYXJnLCB2b2lkKiBkZWZfYXJnLCB2b2lk
KiBjdXJfYXJnKQorICAgICAgOiBuYW1lKG5hbWVfYXJnKSwKKyAgICAgICAgaGVscChoZWxwX3Rl
eHQpLAorICAgICAgICBmaWxlbmFtZShmaWxlbmFtZV9hcmcpLAorICAgICAgICBvcChvcF9hcmcp
LAorICAgICAgICBtYXJzaGFsbGluZ19vcChtYXJzaGFsbGluZ19vcF9hcmcpLAorICAgICAgICBt
YWtlX2luaXRfdmFsdWUoaW5pdGlhbF92YWx1ZV9nZW4pLAorICAgICAgICByZXRpcmVkKHJldGly
ZWRfYXJnKSwKKyAgICAgICAgaW5pdGVkKGZhbHNlKSwKKyAgICAgICAgbW9kaWZpZWQoZmFsc2Up
LAorICAgICAgICBvbl9jb21tYW5kX2xpbmUoZmFsc2UpLAorICAgICAgICB2YWxpZGF0b3IobnVs
bHB0ciksCisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpLAorICAgICAgICBkZWYoZGVmX2FyZyks
CisgICAgICAgIGN1cihjdXJfYXJnKSwKKyAgICAgICAgY291bnRlcigwKSwKKyAgICAgICAgYXRv
bWljKGtBdG9taWNJbml0KSwKKyAgICAgICAgbG9ja3MobnVsbHB0cikge30KKworICAvLyBSZXZl
cnQgdGhlIGluaXQgcm91dGluZS4KKyAgdm9pZCBEZXN0cm95KCkgY29uc3Q7CisKKyAgLy8gTm90
IGNvcHlhYmxlL2Fzc2lnbmFibGUuCisgIENvbW1hbmRMaW5lRmxhZyhjb25zdCBDb21tYW5kTGlu
ZUZsYWcmKSA9IGRlbGV0ZTsKKyAgQ29tbWFuZExpbmVGbGFnJiBvcGVyYXRvcj0oY29uc3QgQ29t
bWFuZExpbmVGbGFnJikgPSBkZWxldGU7CisKKyAgYWJzbDo6c3RyaW5nX3ZpZXcgTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG5hbWU7IH0KKyAgc3RkOjpzdHJpbmcgSGVscCgpIGNvbnN0IHsgcmV0dXJu
IGhlbHAuR2V0SGVscFRleHQoKTsgfQorICBib29sIElzUmV0aXJlZCgpIGNvbnN0IHsgcmV0dXJu
IHRoaXMtPnJldGlyZWQ7IH0KKyAgYm9vbCBJc01vZGlmaWVkKCkgY29uc3Q7CisgIHZvaWQgU2V0
TW9kaWZpZWQoYm9vbCBpc19tb2RpZmllZCk7CisgIGJvb2wgSXNTcGVjaWZpZWRPbkNvbW1hbmRM
aW5lKCkgY29uc3Q7CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBpcyBhIGhhbmRsZSB0byBh
biBBYnNlaWwgRmxhZy4KKyAgYm9vbCBJc0Fic2VpbEZsYWcoKSBjb25zdCB7CisgICAgLy8gU2V0
IHRvIG51bGwgZm9yIFYxIGZsYWdzCisgICAgcmV0dXJuIHRoaXMtPm1ha2VfaW5pdF92YWx1ZSAh
PSBudWxscHRyOworICB9CisKKyAgYWJzbDo6c3RyaW5nX3ZpZXcgVHlwZW5hbWUoKSBjb25zdDsK
KyAgc3RkOjpzdHJpbmcgRmlsZW5hbWUoKSBjb25zdDsKKyAgc3RkOjpzdHJpbmcgRGVmYXVsdFZh
bHVlKCkgY29uc3Q7CisgIHN0ZDo6c3RyaW5nIEN1cnJlbnRWYWx1ZSgpIGNvbnN0OworCisgIGJv
b2wgSGFzVmFsaWRhdG9yRm4oKSBjb25zdDsKKyAgYm9vbCBTZXRWYWxpZGF0b3JGbihGbGFnVmFs
aWRhdG9yIGZuKTsKKyAgYm9vbCBJbnZva2VWYWxpZGF0b3IoY29uc3Qgdm9pZCogdmFsdWUpIGNv
bnN0OworCisgIC8vIFJldHVybiB0cnVlIGlmZiBmbGFnIGhhcyB0eXBlIFQuCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICBpbmxpbmUgYm9vbCBJc09mVHlwZSgpIGNvbnN0IHsKKyAgICByZXR1
cm4gdGhpcy0+b3AgPT0gJmZsYWdzX2ludGVybmFsOjpGbGFnT3BzPFQ+OworICB9CisKKyAgLy8g
QXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlIGZsYWcgdmFsdWUuIFJldHVybnMgdmFsdWUgb24gc3Vj
Y2VzcywKKyAgLy8gYWJzbDo6bnVsbG9wdCBvdGhlcndpc2UuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICBhYnNsOjpvcHRpb25hbDxUPiBHZXQoKSBjb25zdCB7CisgICAgaWYgKElzUmV0aXJl
ZCgpIHx8IGZsYWdzX2ludGVybmFsOjpGbGFnT3BzPFQ+ICE9IHRoaXMtPm9wKQorICAgICAgcmV0
dXJuIGFic2w6Om51bGxvcHQ7CisKKyAgICBUIHJlczsKKyAgICBSZWFkKCZyZXMsIGZsYWdzX2lu
dGVybmFsOjpGbGFnT3BzPFQ+KTsKKworICAgIHJldHVybiByZXM7CisgIH0KKworICB2b2lkIFNl
dENhbGxiYWNrKGNvbnN0IGZsYWdzX2ludGVybmFsOjpGbGFnQ2FsbGJhY2sgbXV0YXRpb25fY2Fs
bGJhY2spOworICB2b2lkIEludm9rZUNhbGxiYWNrKCk7CisKKyAgLy8gU2V0cyB0aGUgdmFsdWUg
b2YgdGhlIGZsYWcgYmFzZWQgb24gc3BlY2lmaWVkIHN0ZDo6c3RyaW5nIGB2YWx1ZWAuIElmIHRo
ZSBmbGFnCisgIC8vIHdhcyBzdWNjZXNzZnVsbHkgc2V0IHRvIG5ldyB2YWx1ZSwgaXQgcmV0dXJu
cyB0cnVlLiBPdGhlcndpc2UsIHNldHMgYGVycm9yYAorICAvLyB0byBpbmRpY2F0ZSB0aGUgZXJy
b3IsIGxlYXZlcyB0aGUgZmxhZyB1bmNoYW5nZWQsIGFuZCByZXR1cm5zIGZhbHNlLiBUaGVyZQor
ICAvLyBhcmUgdGhyZWUgd2F5cyB0byBzZXQgdGhlIGZsYWcncyB2YWx1ZToKKyAgLy8gICogVXBk
YXRlIHRoZSBjdXJyZW50IGZsYWcgdmFsdWUKKyAgLy8gICogVXBkYXRlIHRoZSBmbGFnJ3MgZGVm
YXVsdCB2YWx1ZQorICAvLyAgKiBVcGRhdGUgdGhlIGN1cnJlbnQgZmxhZyB2YWx1ZSBpZiBpdCB3
YXMgbmV2ZXIgc2V0IGJlZm9yZQorICAvLyBUaGUgbW9kZSBpcyBzZWxlY3RlZCBiYXNlZCBvbiBg
c2V0X21vZGVgIHBhcmFtZXRlci4KKyAgYm9vbCBTZXRGcm9tU3RyaW5nKGFic2w6OnN0cmluZ192
aWV3IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdTZXR0
aW5nTW9kZSBzZXRfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzX2ludGVybmFsOjpW
YWx1ZVNvdXJjZSBzb3VyY2UsIHN0ZDo6c3RyaW5nKiBlcnJvcik7CisKKyAgdm9pZCBTdG9yZUF0
b21pYyhzaXplX3Qgc2l6ZSk7CisKKyAgdm9pZCBDaGVja0RlZmF1bHRWYWx1ZVBhcnNpbmdSb3Vu
ZHRyaXAoKSBjb25zdDsKKyAgLy8gSW52b2tlIHRoZSBmbGFnIHZhbGlkYXRvcnMgZm9yIG9sZCBm
bGFncy4KKyAgLy8gVE9ETyhyb2dlZWZmKTogaW1wbGVtZW50IHByb3BlciB2YWxpZGF0b3JzIGZv
ciBBYnNlaWwgRmxhZ3MKKyAgYm9vbCBWYWxpZGF0ZURlZmF1bHRWYWx1ZSgpIGNvbnN0OworICBi
b29sIFZhbGlkYXRlSW5wdXRWYWx1ZShhYnNsOjpzdHJpbmdfdmlldyB2YWx1ZSkgY29uc3Q7CisK
KyAgLy8gQ29uc3RhbnQgY29uZmlndXJhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGZsYWcuCisgcHJp
dmF0ZToKKyAgY29uc3QgY2hhciogY29uc3QgbmFtZTsKKyAgY29uc3QgSGVscFRleHQgaGVscDsK
KyAgY29uc3QgY2hhciogY29uc3QgZmlsZW5hbWU7CisKKyBwcm90ZWN0ZWQ6CisgIGNvbnN0IEZs
YWdPcEZuIG9wOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlLXNwZWNpZmljIGhhbmRs
ZXIKKyAgY29uc3QgRmxhZ01hcnNoYWxsaW5nT3BGbiBtYXJzaGFsbGluZ19vcDsgIC8vIE1hcnNo
YWxsaW5nIG9wcyBoYW5kbGVyCisgIGNvbnN0IEluaXRpYWxWYWxHZW5GdW5jIG1ha2VfaW5pdF92
YWx1ZTsgICAvLyBNYWtlcyBpbml0aWFsIHZhbHVlIGZvciB0aGUgZmxhZworICBjb25zdCBib29s
IHJldGlyZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXMgdGhlIGZsYWcgcmV0aXJlZD8K
KyAgc3RkOjphdG9taWM8Ym9vbD4gaW5pdGVkOyAgLy8gZmllbGRzIGhhdmUgYmVlbiBsYXppbHkg
aW5pdGlhbGl6ZWQKKworICAvLyBNdXRhYmxlIHN0YXRlIChndWFyZGVkIGJ5IGxvY2tzLT5wcmlt
YXJ5X211KS4KKyAgYm9vbCBtb2RpZmllZDsgICAgICAgICAgICAvLyBIYXMgZmxhZyB2YWx1ZSBi
ZWVuIG1vZGlmaWVkPworICBib29sIG9uX2NvbW1hbmRfbGluZTsgICAgIC8vIFNwZWNpZmllZCBv
biBjb21tYW5kIGxpbmUuCisgIEZsYWdWYWxpZGF0b3IgdmFsaWRhdG9yOyAgLy8gVmFsaWRhdG9y
IGZ1bmN0aW9uLCBvciBudWxscHRyCisgIEZsYWdDYWxsYmFjayBjYWxsYmFjazsgICAgLy8gTXV0
YXRpb24gY2FsbGJhY2ssIG9yIG51bGxwdHIKKyAgdm9pZCogZGVmOyAgICAgICAgICAgICAgICAv
LyBMYXppbHkgaW5pdGlhbGl6ZWQgcG9pbnRlciB0byBkZWZhdWx0IHZhbHVlCisgIHZvaWQqIGN1
cjsgICAgICAgICAgICAgICAgLy8gTGF6aWx5IGluaXRpYWxpemVkIHBvaW50ZXIgdG8gY3VycmVu
dCB2YWx1ZQorICBpbnQ2NF90IGNvdW50ZXI7ICAgICAgICAgICAgLy8gTXV0YXRpb24gY291bnRl
cgorCisgIC8vIEZvciBzb21lIHR5cGVzLCBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgdmFsdWUgaXMg
a2VwdCBpbiBhbiBhdG9taWNhbGx5CisgIC8vIGFjY2Vzc2libGUgZmllbGQuCisgIHN0YXRpYyBj
b25zdCBpbnQ2NF90IGtBdG9taWNJbml0ID0gMHhhYmFiYWJhYmFiYWJhYmFibGw7CisgIHN0ZDo6
YXRvbWljPGludDY0X3Q+IGF0b21pYzsKKworICAvLyBMYXppbHkgaW5pdGlhbGl6ZWQgbXV0ZXhl
cyBmb3IgdGhpcyBmbGFnIHZhbHVlLiAgV2UgY2Fubm90IGlubGluZSBhCisgIC8vIFNwaW5Mb2Nr
IG9yIE11dGV4IGhlcmUgYmVjYXVzZSB0aG9zZSBoYXZlIG5vbi1jb25zdGV4cHIgY29uc3RydWN0
b3JzIGFuZAorICAvLyBzbyB3b3VsZCBwcmV2ZW50IGNvbnN0YW50IGluaXRpYWxpemF0aW9uIG9m
IHRoaXMgdHlwZS4KKyAgLy8gVE9ETyhyb2dlZWZmKTogZml4IGl0IG9uY2UgTXV0ZXggaGFzIGNv
bnN0ZXhwciBjb25zdHJ1Y3RvcgorICBzdHJ1Y3QgQ29tbWFuZExpbmVGbGFnTG9ja3MqIGxvY2tz
OyAgLy8gbG9ja3MsIGxhemlsaXkgYWxsb2NhdGVkLgorCisgIC8vIEVuc3VyZSB0aGF0IHRoZSBs
YXppbHkgaW5pdGlhbGl6ZWQgZmllbGRzIG9mICpmbGFnIGhhdmUgYmVlbiBpbml0aWFsaXplZCwK
KyAgLy8gYW5kIHJldHVybiB0aGUgbG9jayB3aGljaCBzaG91bGQgYmUgbG9ja2VkIHdoZW4gZmxh
ZydzIHN0YXRlIGlzIG11dGF0ZWQuCisgIGFic2w6Ok11dGV4KiBJbml0RmxhZ0lmTmVjZXNzYXJ5
KCkgY29uc3Q7CisKKyAgLy8gY29weSBjb25zdHJ1Y3QgbmV3IHZhbHVlIG9mIGZsYWcncyB0eXBl
IGluIGEgbWVtb3J5IHJlZmVyZW5jZWQgYnkgZHN0CisgIC8vIGJhc2VkIG9uIGN1cnJlbnQgZmxh
ZydzIHZhbHVlCisgIHZvaWQgUmVhZCh2b2lkKiBkc3QsIGNvbnN0IGZsYWdzX2ludGVybmFsOjpG
bGFnT3BGbiBkc3Rfb3ApIGNvbnN0OworICAvLyB1cGRhdGVzIGZsYWcncyB2YWx1ZSB0byAqc3Jj
IChsb2NrZWQpCisgIHZvaWQgV3JpdGUoY29uc3Qgdm9pZCogc3JjLCBjb25zdCBmbGFnc19pbnRl
cm5hbDo6RmxhZ09wRm4gc3JjX29wKTsKKworICBmcmllbmQgY2xhc3MgRmxhZ1JlZ2lzdHJ5Owor
ICBmcmllbmQgY2xhc3MgRmxhZ1B0ck1hcDsKKyAgZnJpZW5kIGNsYXNzIEZsYWdTYXZlckltcGw7
CisgIGZyaWVuZCB2b2lkIEZpbGxDb21tYW5kTGluZUZsYWdJbmZvKENvbW1hbmRMaW5lRmxhZyog
ZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZExpbmVG
bGFnSW5mbyogcmVzdWx0KTsKKyAgZnJpZW5kIGJvb2wgVHJ5UGFyc2VMb2NrZWQoQ29tbWFuZExp
bmVGbGFnKiBmbGFnLCB2b2lkKiBkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFi
c2w6OnN0cmluZ192aWV3IHZhbHVlLCBzdGQ6OnN0cmluZyogZXJyKTsKKyAgZnJpZW5kIGFic2w6
Ok11dGV4KiBJbml0RmxhZyhDb21tYW5kTGluZUZsYWcqIGZsYWcpOworfTsKKworLy8gVXBkYXRl
IGFueSBjb3B5IG9mIHRoZSBmbGFnIHZhbHVlIHRoYXQgaXMgc3RvcmVkIGluIGFuIGF0b21pYyB3
b3JkLgorLy8gSW4gYWRkaXRpb24gaWYgZmxhZyBoYXMgYSBtdXRhdGlvbiBjYWxsYmFjayB0aGlz
IGZ1bmN0aW9uIGludm9rZXMgaXQuIFdoaWxlCisvLyBjYWxsYmFjayBpcyBiZWluZyBpbnZva2Vk
IHRoZSBwcmltYXJ5IGZsYWcncyBtdXRleCBpcyB1bmxvY2tlZCBhbmQgaXQgaXMKKy8vIHJlLWxv
Y2tlZCBiYWNrIGFmdGVyIGNhbGwgdG8gY2FsbGJhY2sgaXMgY29tcGxldGVkLiBDYWxsYmFjayBp
bnZvY2F0aW9uIGlzCisvLyBndWFyZGVkIGJ5IGZsYWcncyBzZWNvbmRhcnkgbXV0ZXggaW5zdGVh
ZCB3aGljaCBwcmV2ZW50cyBjb25jdXJyZW50IGNhbGxiYWNrCisvLyBpbnZvY2F0aW9uLiBOb3Rl
IHRoYXQgaXQgaXMgcG9zc2libGUgZm9yIG90aGVyIHRocmVhZCB0byBncmFiIHRoZSBwcmltYXJ5
CisvLyBsb2NrIGFuZCB1cGRhdGUgZmxhZydzIHZhbHVlIGF0IGFueSB0aW1lIGR1cmluZyB0aGUg
Y2FsbGJhY2sgaW52b2NhdGlvbi4KKy8vIFRoaXMgaXMgYnkgZGVzaWduLiBDYWxsYmFjayBjYW4g
Z2V0IGEgdmFsdWUgb2YgdGhlIGZsYWcgaWYgbmVjZXNzYXJ5LCBidXQgaXQKKy8vIG1pZ2h0IGJl
IGRpZmZlcmVudCBmcm9tIHRoZSB2YWx1ZSBpbml0aWF0ZWQgdGhlIGNhbGxiYWNrIGFuZCBpdCBh
bHNvIGNhbiBiZQorLy8gZGlmZmVyZW50IGJ5IHRoZSB0aW1lIHRoZSBjYWxsYmFjayBpbnZvY2F0
aW9uIGlzIGNvbXBsZXRlZC4KKy8vIFJlcXVpcmVzIHRoYXQgKnByaW1hcnlfbG9jayBiZSBoZWxk
IGluIGV4Y2x1c2l2ZSBtb2RlOyBpdCBtYXkgYmUgcmVsZWFzZWQKKy8vIGFuZCByZWFjcXVpcmVk
IGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4KK3ZvaWQgVXBkYXRlQ29weShDb21tYW5kTGluZUZsYWcq
IGZsYWcpOworLy8gUmV0dXJuIHRydWUgaWZmIGZsYWcgdmFsdWUgd2FzIGNoYW5nZWQgdmlhIGRp
cmVjdC1hY2Nlc3MuCitib29sIENoYW5nZWREaXJlY3RseShDb21tYW5kTGluZUZsYWcqIGZsYWcs
IGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpOworCisvLyBUaGlzIG1hY3JvIGlzIHRoZSAi
c291cmNlIG9mIHRydXRoIiBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWcgdHlwZXMgd2UK
Ky8vIGV4cGVjdCB0byBwZXJmb3JtIGxvY2sgZnJlZSBvcGVyYXRpb25zIG9uLiBTcGVjaWZpY2Fs
bHkgaXQgZ2VuZXJhdGVzIGNvZGUsCisvLyBhIG9uZSBhcmd1bWVudCBtYWNybyBvcGVyYXRpbmcg
b24gYSB0eXBlLCBzdXBwbGllZCBhcyBhIG1hY3JvIGFyZ3VtZW50LCBmb3IKKy8vIGVhY2ggdHlw
ZSBpbiB0aGUgbGlzdC4KKyNkZWZpbmUgQUJTTF9GTEFHU19JTlRFUk5BTF9GT1JfRUFDSF9MT0NL
X0ZSRUUoQSkgXAorICBBKGJvb2wpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgIEEoc2hvcnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgQSh1bnNpZ25lZCBzaG9ydCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICBBKGludCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEEo
dW5zaWduZWQgaW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQShsb25n
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBBKHVuc2lnbmVk
IGxvbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEEobG9uZyBsb25nKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQSh1bnNpZ25lZCBsb25nIGxv
bmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBBKGRvdWJsZSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEEoZmxvYXQpCisKK30gIC8vIG5hbWVzcGFj
ZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNM
X0ZMQUdTX0lOVEVSTkFMX0NPTU1BTkRMSU5FRkxBR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxh
Z3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5h
bC9jb21tYW5kbGluZWZsYWdfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGQ1N2FkYmQyNjA2NGUxMmIz
YThmZWZhY2Q0MDNiODc3YjFhYTg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50
ZXJuYWwvY29tbWFuZGxpbmVmbGFnX3Rlc3QuY2MKQEAgLTAsMCArMSwxOTYgQEAKKy8vCisvLyAg
Q29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2Zs
YWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZy5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ZsYWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2lu
dGVybmFsL3JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5j
bHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9j
YXQuaCIKKworQUJTTF9GTEFHKGludCwgaW50X2ZsYWcsIDIwMSwgImludF9mbGFnIGhlbHAiKTsK
K0FCU0xfRkxBRyhzdGQ6OnN0cmluZywgc3RyaW5nX2ZsYWcsICJkZmx0IiwKKyAgICAgICAgICBh
YnNsOjpTdHJDYXQoInN0cmluZ19mbGFnIiwgIiBoZWxwIikpOworQUJTTF9SRVRJUkVEX0ZMQUco
Ym9vbCwgYm9vbF9yZXRpcmVkX2ZsYWcsIGZhbHNlLCAiYm9vbF9yZXRpcmVkX2ZsYWcgaGVscCIp
OworCituYW1lc3BhY2UgeworCituYW1lc3BhY2UgZmxhZ3MgPSBhYnNsOjpmbGFnc19pbnRlcm5h
bDsKKworY2xhc3MgQ29tbWFuZExpbmVGbGFnVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7IGZsYWdfc2F2ZXJfID0gYWJz
bDo6bWFrZV91bmlxdWU8ZmxhZ3M6OkZsYWdTYXZlcj4oKTsgfQorICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUgeyBmbGFnX3NhdmVyXy5yZXNldCgpOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnVu
aXF1ZV9wdHI8ZmxhZ3M6OkZsYWdTYXZlcj4gZmxhZ19zYXZlcl87Cit9OworCitURVNUX0YoQ29t
bWFuZExpbmVGbGFnVGVzdCwgVGVzdEF0dHJpYnV0ZXNBY2Nlc3NNZXRob2RzKSB7CisgIGF1dG8q
IGZsYWdfMDEgPSBmbGFnczo6RmluZENvbW1hbmRMaW5lRmxhZygiaW50X2ZsYWciKTsKKworICBB
U1NFUlRfVFJVRShmbGFnXzAxKTsKKyAgRVhQRUNUX0VRKGZsYWdfMDEtPk5hbWUoKSwgImludF9m
bGFnIik7CisgIEVYUEVDVF9FUShmbGFnXzAxLT5IZWxwKCksICJpbnRfZmxhZyBoZWxwIik7Cisg
IEVYUEVDVF9FUShmbGFnXzAxLT5UeXBlbmFtZSgpLCAiIik7CisgIEVYUEVDVF9UUlVFKCFmbGFn
XzAxLT5Jc1JldGlyZWQoKSk7CisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPklzT2ZUeXBlPGludD4o
KSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OkVuZHNXaXRoKAorICAgICAgZmxhZ18wMS0+RmlsZW5h
bWUoKSwKKyAgICAgICJhYnNsL2ZsYWdzL2ludGVybmFsL2NvbW1hbmRsaW5lZmxhZ190ZXN0LmNj
IikpOworCisgIGF1dG8qIGZsYWdfMDIgPSBmbGFnczo6RmluZENvbW1hbmRMaW5lRmxhZygic3Ry
aW5nX2ZsYWciKTsKKworICBBU1NFUlRfVFJVRShmbGFnXzAyKTsKKyAgRVhQRUNUX0VRKGZsYWdf
MDItPk5hbWUoKSwgInN0cmluZ19mbGFnIik7CisgIEVYUEVDVF9FUShmbGFnXzAyLT5IZWxwKCks
ICJzdHJpbmdfZmxhZyBoZWxwIik7CisgIEVYUEVDVF9FUShmbGFnXzAyLT5UeXBlbmFtZSgpLCAi
Iik7CisgIEVYUEVDVF9UUlVFKCFmbGFnXzAyLT5Jc1JldGlyZWQoKSk7CisgIEVYUEVDVF9UUlVF
KGZsYWdfMDItPklzT2ZUeXBlPHN0ZDo6c3RyaW5nPigpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
RW5kc1dpdGgoCisgICAgICBmbGFnXzAyLT5GaWxlbmFtZSgpLAorICAgICAgImFic2wvZmxhZ3Mv
aW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnX3Rlc3QuY2MiKSk7CisKKyAgYXV0byogZmxhZ18wMyA9
IGZsYWdzOjpGaW5kUmV0aXJlZEZsYWcoImJvb2xfcmV0aXJlZF9mbGFnIik7CisKKyAgQVNTRVJU
X1RSVUUoZmxhZ18wMyk7CisgIEVYUEVDVF9FUShmbGFnXzAzLT5OYW1lKCksICJib29sX3JldGly
ZWRfZmxhZyIpOworICBFWFBFQ1RfRVEoZmxhZ18wMy0+SGVscCgpLCAiIik7CisgIEVYUEVDVF9F
UShmbGFnXzAzLT5UeXBlbmFtZSgpLCAiIik7CisgIEVYUEVDVF9UUlVFKGZsYWdfMDMtPklzUmV0
aXJlZCgpKTsKKyAgRVhQRUNUX1RSVUUoZmxhZ18wMy0+SXNPZlR5cGU8Ym9vbD4oKSk7CisgIEVY
UEVDVF9FUShmbGFnXzAzLT5GaWxlbmFtZSgpLCAiUkVUSVJFRCIpOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitURVNUX0YoQ29tbWFuZExpbmVGbGFnVGVzdCwgVGVzdFZhbHVlQWNjZXNzTWV0aG9k
cykgeworICBhYnNsOjpTZXRGbGFnKCZGTEFHU19pbnRfZmxhZywgMzAxKTsKKyAgYXV0byogZmxh
Z18wMSA9IGZsYWdzOjpGaW5kQ29tbWFuZExpbmVGbGFnKCJpbnRfZmxhZyIpOworCisgIEFTU0VS
VF9UUlVFKGZsYWdfMDEpOworICBFWFBFQ1RfRVEoZmxhZ18wMS0+Q3VycmVudFZhbHVlKCksICIz
MDEiKTsKKyAgRVhQRUNUX0VRKGZsYWdfMDEtPkRlZmF1bHRWYWx1ZSgpLCAiMjAxIik7CisKKyAg
YWJzbDo6U2V0RmxhZygmRkxBR1Nfc3RyaW5nX2ZsYWcsICJuZXdfc3RyX3ZhbHVlIik7CisgIGF1
dG8qIGZsYWdfMDIgPSBmbGFnczo6RmluZENvbW1hbmRMaW5lRmxhZygic3RyaW5nX2ZsYWciKTsK
KworICBBU1NFUlRfVFJVRShmbGFnXzAyKTsKKyAgRVhQRUNUX0VRKGZsYWdfMDItPkN1cnJlbnRW
YWx1ZSgpLCAibmV3X3N0cl92YWx1ZSIpOworICBFWFBFQ1RfRVEoZmxhZ18wMi0+RGVmYXVsdFZh
bHVlKCksICJkZmx0Iik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihDb21tYW5kTGlu
ZUZsYWdUZXN0LCBUZXN0U2V0RnJvbVN0cmluZ0N1cnJlbnRWYWx1ZSkgeworICBzdGQ6OnN0cmlu
ZyBlcnI7CisKKyAgYXV0byogZmxhZ18wMSA9IGZsYWdzOjpGaW5kQ29tbWFuZExpbmVGbGFnKCJp
bnRfZmxhZyIpOworICBFWFBFQ1RfRkFMU0UoZmxhZ18wMS0+SXNTcGVjaWZpZWRPbkNvbW1hbmRM
aW5lKCkpOworCisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPlNldEZyb21TdHJpbmcoIjExIiwgZmxh
Z3M6OlNFVF9GTEFHU19WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFnczo6a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikpOworICBFWFBFQ1RfRVEoYWJzbDo6
R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDExKTsKKyAgRVhQRUNUX0ZBTFNFKGZsYWdfMDEtPklz
U3BlY2lmaWVkT25Db21tYW5kTGluZSgpKTsKKworICBFWFBFQ1RfVFJVRShmbGFnXzAxLT5TZXRG
cm9tU3RyaW5nKCItMTIzIiwgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikp
OworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIC0xMjMpOworICBF
WFBFQ1RfRkFMU0UoZmxhZ18wMS0+SXNTcGVjaWZpZWRPbkNvbW1hbmRMaW5lKCkpOworCisgIEVY
UEVDVF9UUlVFKCFmbGFnXzAxLT5TZXRGcm9tU3RyaW5nKCJ4eXoiLCBmbGFnczo6U0VUX0ZMQUdT
X1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6a1By
b2dyYW1tYXRpY0NoYW5nZSwgJmVycikpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFH
U19pbnRfZmxhZyksIC0xMjMpOworICBFWFBFQ1RfRVEoZXJyLCAiSWxsZWdhbCB2YWx1ZSAneHl6
JyBzcGVjaWZpZWQgZm9yIGZsYWcgJ2ludF9mbGFnJyIpOworICBFWFBFQ1RfRkFMU0UoZmxhZ18w
MS0+SXNTcGVjaWZpZWRPbkNvbW1hbmRMaW5lKCkpOworCisgIEVYUEVDVF9UUlVFKCFmbGFnXzAx
LT5TZXRGcm9tU3RyaW5nKCJBMSIsIGZsYWdzOjpTRVRfRkxBR1NfVkFMVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprUHJvZ3JhbW1hdGljQ2hhbmdlLCAm
ZXJyKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2ludF9mbGFnKSwgLTEyMyk7
CisgIEVYUEVDVF9FUShlcnIsICJJbGxlZ2FsIHZhbHVlICdBMScgc3BlY2lmaWVkIGZvciBmbGFn
ICdpbnRfZmxhZyciKTsKKyAgRVhQRUNUX0ZBTFNFKGZsYWdfMDEtPklzU3BlY2lmaWVkT25Db21t
YW5kTGluZSgpKTsKKworICBFWFBFQ1RfVFJVRShmbGFnXzAxLT5TZXRGcm9tU3RyaW5nKCIweDEw
IiwgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFnczo6a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikpOworICBFWFBFQ1RfRVEo
YWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDE2KTsKKyAgRVhQRUNUX0ZBTFNFKGZsYWdf
MDEtPklzU3BlY2lmaWVkT25Db21tYW5kTGluZSgpKTsKKworICBFWFBFQ1RfVFJVRShmbGFnXzAx
LT5TZXRGcm9tU3RyaW5nKCIwMTEiLCBmbGFnczo6U0VUX0ZMQUdTX1ZBTFVFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprQ29tbWFuZExpbmUsICZlcnIpKTsK
KyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfaW50X2ZsYWcpLCAxMSk7CisgIEVYUEVD
VF9UUlVFKGZsYWdfMDEtPklzU3BlY2lmaWVkT25Db21tYW5kTGluZSgpKTsKKworICBFWFBFQ1Rf
VFJVRSghZmxhZ18wMS0+U2V0RnJvbVN0cmluZygiIiwgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OmtQcm9ncmFtbWF0
aWNDaGFuZ2UsICZlcnIpKTsKKyAgRVhQRUNUX0VRKGVyciwgIklsbGVnYWwgdmFsdWUgJycgc3Bl
Y2lmaWVkIGZvciBmbGFnICdpbnRfZmxhZyciKTsKKworICBhdXRvKiBmbGFnXzAyID0gZmxhZ3M6
OkZpbmRDb21tYW5kTGluZUZsYWcoInN0cmluZ19mbGFnIik7CisgIEVYUEVDVF9UUlVFKGZsYWdf
MDItPlNldEZyb21TdHJpbmcoInh5eiIsIGZsYWdzOjpTRVRfRkxBR1NfVkFMVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OmtQcm9ncmFtbWF0aWNDaGFuZ2Us
ICZlcnIpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1Nfc3RyaW5nX2ZsYWcpLCAi
eHl6Iik7CisKKyAgRVhQRUNUX1RSVUUoZmxhZ18wMi0+U2V0RnJvbVN0cmluZygiIiwgZmxhZ3M6
OlNFVF9GTEFHU19WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGFnczo6a1Byb2dyYW1tYXRpY0NoYW5nZSwgJmVycikpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0
RmxhZyhGTEFHU19zdHJpbmdfZmxhZyksICIiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVT
VF9GKENvbW1hbmRMaW5lRmxhZ1Rlc3QsIFRlc3RTZXRGcm9tU3RyaW5nRGVmYXVsdFZhbHVlKSB7
CisgIHN0ZDo6c3RyaW5nIGVycjsKKworICBhdXRvKiBmbGFnXzAxID0gZmxhZ3M6OkZpbmRDb21t
YW5kTGluZUZsYWcoImludF9mbGFnIik7CisKKyAgRVhQRUNUX1RSVUUoZmxhZ18wMS0+U2V0RnJv
bVN0cmluZygiMTExIiwgZmxhZ3M6OlNFVF9GTEFHU19ERUZBVUxULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprUHJvZ3JhbW1hdGljQ2hhbmdlLCAmZXJyKSk7
CisgIEVYUEVDVF9FUShmbGFnXzAxLT5EZWZhdWx0VmFsdWUoKSwgIjExMSIpOworCisgIGF1dG8q
IGZsYWdfMDIgPSBmbGFnczo6RmluZENvbW1hbmRMaW5lRmxhZygic3RyaW5nX2ZsYWciKTsKKwor
ICBFWFBFQ1RfVFJVRShmbGFnXzAyLT5TZXRGcm9tU3RyaW5nKCJhYmMiLCBmbGFnczo6U0VUX0ZM
QUdTX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6
OmtQcm9ncmFtbWF0aWNDaGFuZ2UsICZlcnIpKTsKKyAgRVhQRUNUX0VRKGZsYWdfMDItPkRlZmF1
bHRWYWx1ZSgpLCAiYWJjIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihDb21tYW5k
TGluZUZsYWdUZXN0LCBUZXN0U2V0RnJvbVN0cmluZ0lmRGVmYXVsdCkgeworICBzdGQ6OnN0cmlu
ZyBlcnI7CisKKyAgYXV0byogZmxhZ18wMSA9IGZsYWdzOjpGaW5kQ29tbWFuZExpbmVGbGFnKCJp
bnRfZmxhZyIpOworCisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPlNldEZyb21TdHJpbmcoIjIyIiwg
ZmxhZ3M6OlNFVF9GTEFHX0lGX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3M6OmtQcm9ncmFtbWF0aWNDaGFuZ2UsICZlcnIpKQorICAgICAgPDwgZXJy
OworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDIyKTsKKworICBF
WFBFQ1RfVFJVRShmbGFnXzAxLT5TZXRGcm9tU3RyaW5nKCIzMyIsIGZsYWdzOjpTRVRfRkxBR19J
Rl9ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjpr
UHJvZ3JhbW1hdGljQ2hhbmdlLCAmZXJyKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZM
QUdTX2ludF9mbGFnKSwgMjIpOworICAvLyBFWFBFQ1RfRVEoZXJyLCAiRVJST1I6IGludF9mbGFn
IGlzIGFscmVhZHkgc2V0IHRvIDIyIik7CisKKyAgLy8gUmVzZXQgYmFjayB0byBkZWZhdWx0IHZh
bHVlCisgIEVYUEVDVF9UUlVFKGZsYWdfMDEtPlNldEZyb21TdHJpbmcoIjIwMSIsIGZsYWdzOjpT
RVRfRkxBR1NfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxh
Z3M6OmtQcm9ncmFtbWF0aWNDaGFuZ2UsICZlcnIpKTsKKworICBFWFBFQ1RfVFJVRShmbGFnXzAx
LT5TZXRGcm9tU3RyaW5nKCIzMyIsIGZsYWdzOjpTRVRfRkxBR19JRl9ERUZBVUxULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjprUHJvZ3JhbW1hdGljQ2hhbmdl
LCAmZXJyKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2ludF9mbGFnKSwgMjAx
KTsKKyAgLy8gRVhQRUNUX0VRKGVyciwgIkVSUk9SOiBpbnRfZmxhZyBpcyBhbHJlYWR5IHNldCB0
byAyMDEiKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9p
bnRlcm5hbC9mbGFnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9mbGFnLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmM1MGRlNTQ4NmJjZDFlNmJhYmJjZDFmZjkxMmY5NTE3N2UwNDM3MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL2ZsYWcuaApAQCAtMCwwICsxLDEyMSBAQAorLy8KKy8v
IENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfRkxB
R1NfSU5URVJOQUxfRkxBR19IXworI2RlZmluZSBBQlNMX0ZMQUdTX0lOVEVSTkFMX0ZMQUdfSF8K
KworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmgiCisjaW5j
bHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9yZWdpc3RyeS5oIgorCituYW1lc3BhY2UgYWJzbCB7
CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworCisvLyBUaGlzIGlzICJ1bnNwZWNpZmllZCIg
aW1wbGVtZW50YXRpb24gb2YgYWJzbDo6RmxhZzxUPiB0eXBlLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitjbGFzcyBGbGFnIDogcHVibGljIGZsYWdzX2ludGVybmFsOjpDb21tYW5kTGluZUZsYWcg
eworIHB1YmxpYzoKKyAgY29uc3RleHByIEZsYWcoY29uc3QgY2hhciogbmFtZSwgY29uc3QgZmxh
Z3NfaW50ZXJuYWw6OkhlbHBHZW5GdW5jIGhlbHBfZ2VuLAorICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgY29uc3QgZmxhZ3NfaW50ZXJuYWw6
OkZsYWdNYXJzaGFsbGluZ09wRm4gbWFyc2hhbGxpbmdfb3BfYXJnLAorICAgICAgICAgICAgICAg
ICBjb25zdCBmbGFnc19pbnRlcm5hbDo6SW5pdGlhbFZhbEdlbkZ1bmMgaW5pdGlhbF92YWx1ZV9n
ZW4pCisgICAgICA6IGZsYWdzX2ludGVybmFsOjpDb21tYW5kTGluZUZsYWcoCisgICAgICAgICAg
ICBuYW1lLCBmbGFnc19pbnRlcm5hbDo6SGVscFRleHQ6OkZyb21GdW5jdGlvblBvaW50ZXIoaGVs
cF9nZW4pLAorICAgICAgICAgICAgZmlsZW5hbWUsICZmbGFnc19pbnRlcm5hbDo6RmxhZ09wczxU
PiwgbWFyc2hhbGxpbmdfb3BfYXJnLAorICAgICAgICAgICAgaW5pdGlhbF92YWx1ZV9nZW4sCisg
ICAgICAgICAgICAvKnJldGlyZWRfYXJnPSovZmFsc2UsIC8qZGVmX2FyZz0qL251bGxwdHIsCisg
ICAgICAgICAgICAvKmN1cl9hcmc9Ki9udWxscHRyKSB7fQorCisgIFQgR2V0KCkgY29uc3Qgewor
ICAgIC8vIEltcGxlbWVudGF0aW9uIG5vdGVzOgorICAgIC8vCisgICAgLy8gV2UgYXJlIHdyYXBw
aW5nIGEgdW5pb24gYXJvdW5kIHRoZSB2YWx1ZSBvZiBgVGAgdG8gc2VydmUgdGhyZWUgcHVycG9z
ZXM6CisgICAgLy8KKyAgICAvLyAgMS4gYFUudmFsdWVgIGhhcyBjb3JyZWN0IHNpemUgYW5kIGFs
aWdubWVudCBmb3IgYSB2YWx1ZSBvZiB0eXBlIGBUYAorICAgIC8vICAyLiBUaGUgYFUudmFsdWVg
IGNvbnN0cnVjdG9yIGlzIG5vdCBpbnZva2VkIHNpbmNlIFUncyBjb25zdHJ1Y3RvciBkb2VzCisg
ICAgLy8gIG5vdAorICAgIC8vICAgICBkbyBpdCBleHBsaWNpdGx5LgorICAgIC8vICAzLiBUaGUg
YFUudmFsdWVgIGRlc3RydWN0b3IgaXMgaW52b2tlZCBzaW5jZSBVJ3MgZGVzdHJ1Y3RvciBkb2Vz
IGl0CisgICAgLy8gICAgIGV4cGxpY2l0bHkuIFRoaXMgbWFrZXMgYFVgIGEga2luZCBvZiBSQUlJ
IHdyYXBwZXIgYXJvdW5kIG5vbiBkZWZhdWx0CisgICAgLy8gICAgIGNvbnN0cnVjdGlibGUgdmFs
dWUgb2YgVCwgd2hpY2ggaXMgZGVzdHJ1Y3RlZCB3aGVuIHdlIGxlYXZlIHRoZQorICAgIC8vICAg
ICBzY29wZS4gV2UgZG8gbmVlZCB0byBkZXN0cm95IFUudmFsdWUsIHdoaWNoIGlzIGNvbnN0cnVj
dGVkIGJ5CisgICAgLy8gICAgIENvbW1hbmRMaW5lRmxhZzo6UmVhZCBldmVuIHRob3VnaCB3ZSBs
ZWZ0IGl0IGluIGEgbW92ZWQtZnJvbSBzdGF0ZQorICAgIC8vICAgICBhZnRlciBzdGQ6Om1vdmUu
CisgICAgLy8KKyAgICAvLyBBbGwgb2YgdGhpcyBzZXJ2ZXMgdG8gYXZvaWQgcmVxdWlyaW5nIGBU
YCBiZWluZyBkZWZhdWx0IGNvbnN0cnVjdGlibGUuCisgICAgdW5pb24gVSB7CisgICAgICBUIHZh
bHVlOworICAgICAgVSgpIHt9CisgICAgICB+VSgpIHsgdmFsdWUuflQoKTsgfQorICAgIH07Cisg
ICAgVSB1OworCisgICAgdGhpcy0+UmVhZCgmdS52YWx1ZSwgJmZsYWdzX2ludGVybmFsOjpGbGFn
T3BzPFQ+KTsKKyAgICByZXR1cm4gc3RkOjptb3ZlKHUudmFsdWUpOworICB9CisKKyAgYm9vbCBB
dG9taWNHZXQoVCogdikgY29uc3QgeworICAgIGNvbnN0IGludDY0X3QgciA9IHRoaXMtPmF0b21p
Yy5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAgIGlmIChyICE9IGZsYWdzX2lu
dGVybmFsOjpDb21tYW5kTGluZUZsYWc6OmtBdG9taWNJbml0KSB7CisgICAgICBtZW1jcHkodiwg
JnIsIHNpemVvZihUKSk7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7CisgIH0KKworICB2b2lkIFNldChjb25zdCBUJiB2KSB7IHRoaXMtPldyaXRlKCZ2LCAm
ZmxhZ3NfaW50ZXJuYWw6OkZsYWdPcHM8VD4pOyB9Cit9OworCisvLyBUaGlzIGNsYXNzIGZhY2ls
aXRhdGVzIEZsYWcgb2JqZWN0IHJlZ2lzdHJhdGlvbiBhbmQgdGFpbCBleHByZXNzaW9uLWJhc2Vk
CisvLyBmbGFnIGRlZmluaXRpb24sIGZvciBleGFtcGxlOgorLy8gQUJTTF9GTEFHKGludCwgZm9v
LCA0MiwgIkZvbyBoZWxwIikuT25VcGRhdGUoTm90aWZ5Rm9vV2F0Y2hlcik7Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgYm9vbCBkb19yZWdpc3Rlcj4KK2NsYXNzIEZsYWdSZWdpc3RyYXIgeworIHB1
YmxpYzoKKyAgZXhwbGljaXQgRmxhZ1JlZ2lzdHJhcihGbGFnPFQ+KiBmbGFnKSA6IGZsYWdfKGZs
YWcpIHsKKyAgICBpZiAoZG9fcmVnaXN0ZXIpIGZsYWdzX2ludGVybmFsOjpSZWdpc3RlckNvbW1h
bmRMaW5lRmxhZyhmbGFnXyk7CisgIH0KKworICBGbGFnUmVnaXN0cmFyJiBPblVwZGF0ZShmbGFn
c19pbnRlcm5hbDo6RmxhZ0NhbGxiYWNrIGNiKSAmJiB7CisgICAgZmxhZ18tPlNldENhbGxiYWNr
KGNiKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAvLyBNYWtlIHRoZSByZWdpc3RyYXIg
ImRpZSIgZ3JhY2VmdWxseSBhcyBhIGJvb2wgb24gYSBsaW5lIHdoZXJlIHJlZ2lzdHJhdGlvbgor
ICAvLyBoYXBwZW5zLiBSZWdpc3RyYXIgb2JqZWN0cyBhcmUgaW50ZW5kZWQgdG8gbGl2ZSBvbmx5
IGFzIHRlbXBvcmFyeS4KKyAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0g
IC8vIE5PTElOVAorCisgcHJpdmF0ZToKKyAgRmxhZzxUPiogZmxhZ187ICAvLyBGbGFnIGJlaW5n
IHJlZ2lzdGVyZWQgKG5vdCBvd25lZCkuCit9OworCisvLyBUaGlzIHN0cnVjdCBhbmQgY29ycmVz
cG9uZGluZyBvdmVybG9hZCB0byBNYWtlRGVmYXVsdFZhbHVlIGFyZSB1c2VkIHRvCisvLyBmYWNp
bGl0YXRlIHVzYWdlIG9mIHt9IGFzIGRlZmF1bHQgdmFsdWUgaW4gQUJTTF9GTEFHIG1hY3JvLgor
c3RydWN0IEVtcHR5QnJhY2VzIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QqIE1ha2VG
cm9tRGVmYXVsdFZhbHVlKFQgdCkgeworICByZXR1cm4gbmV3IFQoc3RkOjptb3ZlKHQpKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitUKiBNYWtlRnJvbURlZmF1bHRWYWx1ZShFbXB0eUJy
YWNlcykgeworICByZXR1cm4gbmV3IFQ7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19pbnRl
cm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0ZMQUdTX0lOVEVS
TkFMX0ZMQUdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3BhcnNlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy9pbnRlcm5hbC9wYXJzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkM2FjYTYxZjQwOGIzYWMz
M2EzMzcwNjQyOTNmMWYyNDAzN2ExNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9p
bnRlcm5hbC9wYXJzZS5oCkBAIC0wLDAgKzEsNDggQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOSBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0ZMQUdTX0lOVEVSTkFMX1BBUlNF
X0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfSU5URVJOQUxfUEFSU0VfSF8KKworI2luY2x1ZGUgPHN0
cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2RlY2xhcmUu
aCIKKworQUJTTF9ERUNMQVJFX0ZMQUcoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LCBmbGFnZmls
ZSk7CitBQlNMX0RFQ0xBUkVfRkxBRyhzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4sIGZyb21lbnYp
OworQUJTTF9ERUNMQVJFX0ZMQUcoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LCB0cnlmcm9tZW52
KTsKK0FCU0xfREVDTEFSRV9GTEFHKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiwgdW5kZWZvayk7
CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKK2VudW0g
Y2xhc3MgQXJndkxpc3RBY3Rpb24geyBrUmVtb3ZlUGFyc2VkQXJncywga0tlZXBQYXJzZWRBcmdz
IH07CitlbnVtIGNsYXNzIFVzYWdlRmxhZ3NBY3Rpb24geyBrSGFuZGxlVXNhZ2UsIGtJZ25vcmVV
c2FnZSB9OworZW51bSBjbGFzcyBPblVuZGVmaW5lZEZsYWcgeworICBrSWdub3JlVW5kZWZpbmVk
LAorICBrUmVwb3J0VW5kZWZpbmVkLAorICBrQWJvcnRJZlVuZGVmaW5lZAorfTsKKworc3RkOjp2
ZWN0b3I8Y2hhcio+IFBhcnNlQ29tbWFuZExpbmVJbXBsKGludCBhcmdjLCBjaGFyKiBhcmd2W10s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJndkxpc3RBY3Rpb24g
YXJnX2xpc3RfYWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVz
YWdlRmxhZ3NBY3Rpb24gdXNhZ2VfZmxhZ19hY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgT25VbmRlZmluZWRGbGFnIG9uX3VuZGVmX2ZsYWcpOworCit9ICAvLyBu
YW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAg
Ly8gQUJTTF9GTEFHU19JTlRFUk5BTF9QQVJTRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3Mv
aW50ZXJuYWwvcGF0aF91dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0aWwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NjE1YzBlNmM1OTBlYzZlN2U0NzBkZGQxMmMwMTA3NTI0ZTY4YjUzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcGF0aF91dGlsLmgKQEAgLTAsMCAr
MSw2MCBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwor
I2lmbmRlZiBBQlNMX0ZMQUdTX0lOVEVSTkFMX1BBVEhfVVRJTF9IXworI2RlZmluZSBBQlNMX0ZM
QUdTX0lOVEVSTkFMX1BBVEhfVVRJTF9IXworCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNo
LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIEEgcG9ydGFibGUgaW50ZXJm
YWNlIHRoYXQgcmV0dXJucyB0aGUgYmFzZW5hbWUgb2YgdGhlIGZpbGVuYW1lIHBhc3NlZCBhcyBh
bgorLy8gYXJndW1lbnQuIEl0IGlzIHNpbWlsYXIgdG8gYmFzZW5hbWUoMykKKy8vIDxodHRwczov
L2xpbnV4LmRpZS5uZXQvbWFuLzMvYmFzZW5hbWU+LgorLy8gRm9yIGV4YW1wbGU6CisvLyAgICAg
ZmxhZ3NfaW50ZXJuYWw6OkJhc2VuYW1lKCJhL2IvcHJvZy9maWxlLmNjIikKKy8vIHJldHVybnMg
ImZpbGUuY2MiCisvLyAgICAgZmxhZ3NfaW50ZXJuYWw6OkJhc2VuYW1lKCJmaWxlLmNjIikKKy8v
IHJldHVybnMgImZpbGUuY2MiCitpbmxpbmUgYWJzbDo6c3RyaW5nX3ZpZXcgQmFzZW5hbWUoYWJz
bDo6c3RyaW5nX3ZpZXcgZmlsZW5hbWUpIHsKKyAgYXV0byBsYXN0X3NsYXNoX3BvcyA9IGZpbGVu
YW1lLmZpbmRfbGFzdF9vZigiL1xcIik7CisKKyAgcmV0dXJuIGxhc3Rfc2xhc2hfcG9zID09IGFi
c2w6OnN0cmluZ192aWV3OjpucG9zCisgICAgICAgICAgICAgPyBmaWxlbmFtZQorICAgICAgICAg
ICAgIDogZmlsZW5hbWUuc3Vic3RyKGxhc3Rfc2xhc2hfcG9zICsgMSk7Cit9CisKKy8vIEEgcG9y
dGFibGUgaW50ZXJmYWNlIHRoYXQgcmV0dXJucyB0aGUgZGlyZWN0b3J5IG5hbWUgb2YgdGhlIGZp
bGVuYW1lCisvLyBwYXNzZWQgYXMgYW4gYXJndW1lbnQsIGluY2x1ZGluZyB0aGUgdHJhaWxpbmcg
c2xhc2guCisvLyBSZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcgaWYgYSBzbGFzaCBpcyBub3QgZm91
bmQgaW4gdGhlIGlucHV0IGZpbGUgbmFtZS4KKy8vIEZvciBleGFtcGxlOgorLy8gICAgICBmbGFn
c19pbnRlcm5hbDo6UGFja2FnZSgiYS9iL3Byb2cvZmlsZS5jYyIpCisvLyByZXR1cm5zICJhL2Iv
cHJvZy8iCisvLyAgICAgIGZsYWdzX2ludGVybmFsOjpQYWNrYWdlKCJmaWxlLmNjIikKKy8vIHJl
dHVybnMgIiIKK2lubGluZSBhYnNsOjpzdHJpbmdfdmlldyBQYWNrYWdlKGFic2w6OnN0cmluZ192
aWV3IGZpbGVuYW1lKSB7CisgIGF1dG8gbGFzdF9zbGFzaF9wb3MgPSBmaWxlbmFtZS5maW5kX2xh
c3Rfb2YoIi9cXCIpOworCisgIHJldHVybiBsYXN0X3NsYXNoX3BvcyA9PSBhYnNsOjpzdHJpbmdf
dmlldzo6bnBvcworICAgICAgICAgICAgID8gYWJzbDo6c3RyaW5nX3ZpZXcoKQorICAgICAgICAg
ICAgIDogZmlsZW5hbWUuc3Vic3RyKDAsIGxhc3Rfc2xhc2hfcG9zICsgMSk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlm
ICAvLyBBQlNMX0ZMQUdTX0lOVEVSTkFMX1BBVEhfVVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
ZmxhZ3MvaW50ZXJuYWwvcGF0aF91dGlsX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9w
YXRoX3V0aWxfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDkxMzczYzg4ZWFlYzAyNDhkMjdmYWY5OTMz
ZDZhNjQ4OTRiZmIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcGF0
aF91dGlsX3Rlc3QuY2MKQEAgLTAsMCArMSw0NiBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcGF0
aF91dGlsLmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCitu
YW1lc3BhY2UgZmxhZ3MgPSBhYnNsOjpmbGFnc19pbnRlcm5hbDsKKworVEVTVChGbGFnc1BhdGhV
dGlsVGVzdCwgVGVzdEJhc2VuYW1lKSB7CisgIEVYUEVDVF9FUShmbGFnczo6QmFzZW5hbWUoIiIp
LCAiIik7CisgIEVYUEVDVF9FUShmbGFnczo6QmFzZW5hbWUoImEuY2MiKSwgImEuY2MiKTsKKyAg
RVhQRUNUX0VRKGZsYWdzOjpCYXNlbmFtZSgiZGlyL2EuY2MiKSwgImEuY2MiKTsKKyAgRVhQRUNU
X0VRKGZsYWdzOjpCYXNlbmFtZSgiZGlyMS9kaXIyL2EuY2MiKSwgImEuY2MiKTsKKyAgRVhQRUNU
X0VRKGZsYWdzOjpCYXNlbmFtZSgiLi4vZGlyMS9kaXIyL2EuY2MiKSwgImEuY2MiKTsKKyAgRVhQ
RUNUX0VRKGZsYWdzOjpCYXNlbmFtZSgiL2RpcjEvZGlyMi9hLmNjIiksICJhLmNjIik7CisgIEVY
UEVDVF9FUShmbGFnczo6QmFzZW5hbWUoIi9kaXIxL2RpcjIvLi4vZGlyMy9hLmNjIiksICJhLmNj
Iik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoRmxhZ3NQYXRoVXRpbFRlc3QsIFRlc3RQ
YWNrYWdlKSB7CisgIEVYUEVDVF9FUShmbGFnczo6UGFja2FnZSgiIiksICIiKTsKKyAgRVhQRUNU
X0VRKGZsYWdzOjpQYWNrYWdlKCJhLmNjIiksICIiKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpQYWNr
YWdlKCJkaXIvYS5jYyIpLCAiZGlyLyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OlBhY2thZ2UoImRp
cjEvZGlyMi9hLmNjIiksICJkaXIxL2RpcjIvIik7CisgIEVYUEVDVF9FUShmbGFnczo6UGFja2Fn
ZSgiLi4vZGlyMS9kaXIyL2EuY2MiKSwgIi4uL2RpcjEvZGlyMi8iKTsKKyAgRVhQRUNUX0VRKGZs
YWdzOjpQYWNrYWdlKCIvZGlyMS9kaXIyL2EuY2MiKSwgIi9kaXIxL2RpcjIvIik7CisgIEVYUEVD
VF9FUShmbGFnczo6UGFja2FnZSgiL2RpcjEvZGlyMi8uLi9kaXIzL2EuY2MiKSwgIi9kaXIxL2Rp
cjIvLi4vZGlyMy8iKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9m
bGFncy9pbnRlcm5hbC9wcm9ncmFtX25hbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9wcm9n
cmFtX25hbWUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA4MTFmMTQ0ODY4ZjI0MDA4NjQ4NzI2YThjZTI0ZWEz
NTNiNDNhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1f
bmFtZS5jYwpAQCAtMCwwICsxLDUzIEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9wcm9ncmFtX25h
bWUuaCIKKworI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJu
YWwvcGF0aF91dGlsLmgiCisjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIK
KworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsIHsKKworQUJTTF9D
T05TVF9JTklUIHN0YXRpYyBhYnNsOjpNdXRleCBwcm9ncmFtX25hbWVfZ3VhcmQoYWJzbDo6a0Nv
bnN0SW5pdCk7CitBQlNMX0NPTlNUX0lOSVQgc3RhdGljIHN0ZDo6c3RyaW5nKiBwcm9ncmFtX25h
bWUKKyAgICBBQlNMX0dVQVJERURfQlkocHJvZ3JhbV9uYW1lX2d1YXJkKSA9IG51bGxwdHI7CisK
K3N0ZDo6c3RyaW5nIFByb2dyYW1JbnZvY2F0aW9uTmFtZSgpIHsKKyAgYWJzbDo6TXV0ZXhMb2Nr
IGwoJnByb2dyYW1fbmFtZV9ndWFyZCk7CisKKyAgcmV0dXJuIHByb2dyYW1fbmFtZSA/ICpwcm9n
cmFtX25hbWUgOiAiVU5LTk9XTiI7Cit9CisKK3N0ZDo6c3RyaW5nIFNob3J0UHJvZ3JhbUludm9j
YXRpb25OYW1lKCkgeworICBhYnNsOjpNdXRleExvY2sgbCgmcHJvZ3JhbV9uYW1lX2d1YXJkKTsK
KworICByZXR1cm4gcHJvZ3JhbV9uYW1lID8gc3RkOjpzdHJpbmcoZmxhZ3NfaW50ZXJuYWw6OkJh
c2VuYW1lKCpwcm9ncmFtX25hbWUpKQorICAgICAgICAgICAgICAgICAgICAgIDogIlVOS05PV04i
OworfQorCit2b2lkIFNldFByb2dyYW1JbnZvY2F0aW9uTmFtZShhYnNsOjpzdHJpbmdfdmlldyBw
cm9nX25hbWVfc3RyKSB7CisgIGFic2w6Ok11dGV4TG9jayBsKCZwcm9ncmFtX25hbWVfZ3VhcmQp
OworCisgIGlmICghcHJvZ3JhbV9uYW1lKQorICAgIHByb2dyYW1fbmFtZSA9IG5ldyBzdGQ6OnN0
cmluZyhwcm9nX25hbWVfc3RyKTsKKyAgZWxzZQorICAgIHByb2dyYW1fbmFtZS0+YXNzaWduKHBy
b2dfbmFtZV9zdHIuZGF0YSgpLCBwcm9nX25hbWVfc3RyLnNpemUoKSk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJu
YWwvcHJvZ3JhbV9uYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI2ZjI0YmI2NTMzNGJhYTlmZDllMzQxMjNm
ZjE3ODMyM2IzNjlkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3By
b2dyYW1fbmFtZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9GTEFHU19JTlRFUk5BTF9QUk9HUkFN
X05BTUVfSF8KKyNkZWZpbmUgQUJTTF9GTEFHU19JTlRFUk5BTF9QUk9HUkFNX05BTUVfSF8KKwor
I2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5o
IgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUHJvZ3JhbSBuYW1lCisKK25hbWVzcGFjZSBhYnNsIHsK
K25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKKy8vIFJldHVybnMgcHJvZ3JhbSBpbnZvY2F0
aW9uIG5hbWUgb3IgIlVOS05PV04iIGlmIGBTZXRQcm9ncmFtSW52b2NhdGlvbk5hbWUoKWAKKy8v
IGlzIG5ldmVyIGNhbGxlZC4gQXQgdGhlIG1vbWVudCB0aGlzIGlzIGFsd2F5cyBzZXQgdG8gYXJn
dlswXSBhcyBwYXJ0IG9mCisvLyBsaWJyYXJ5IGluaXRpYWxpemF0aW9uLgorc3RkOjpzdHJpbmcg
UHJvZ3JhbUludm9jYXRpb25OYW1lKCk7CisKKy8vIFJldHVybnMgYmFzZSBuYW1lIGZvciBwcm9n
cmFtIGludm9jYXRpb24gbmFtZS4gRm9yIGV4YW1wbGUsIGlmCisvLyAgIFByb2dyYW1JbnZvY2F0
aW9uTmFtZSgpID09ICJhL2IvbXliaW5hcnkiCisvLyB0aGVuCisvLyAgIFNob3J0UHJvZ3JhbUlu
dm9jYXRpb25OYW1lKCkgPT0gIm15YmluYXJ5Igorc3RkOjpzdHJpbmcgU2hvcnRQcm9ncmFtSW52
b2NhdGlvbk5hbWUoKTsKKworLy8gU2V0cyBwcm9ncmFtIGludm9jYXRpb24gbmFtZSB0byBhIG5l
dyB2YWx1ZS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UKKy8vIGR1cmluZyBwcm9ncmFtIGlu
aXRpYWxpemF0aW9uLCBiZWZvcmUgYW55IHRocmVhZHMgYXJlIHNwYXduZWQuCit2b2lkIFNldFBy
b2dyYW1JbnZvY2F0aW9uTmFtZShhYnNsOjpzdHJpbmdfdmlldyBwcm9nX25hbWVfc3RyKTsKKwor
fSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
ZW5kaWYgIC8vIEFCU0xfRkxBR1NfSU5URVJOQUxfUFJPR1JBTV9OQU1FX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9mbGFncy9pbnRlcm5hbC9wcm9ncmFtX25hbWVfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdz
L2ludGVybmFsL3Byb2dyYW1fbmFtZV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkNjkyMThiODM5NWEz
ZGNhODdhMTAxMjZjYmI1ODBiOWQxYzgwMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFn
cy9pbnRlcm5hbC9wcm9ncmFtX25hbWVfdGVzdC5jYwpAQCAtMCwwICsxLDYwIEBACisvLworLy8g
IENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9m
bGFncy9pbnRlcm5hbC9wcm9ncmFtX25hbWUuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCisKK25hbWVzcGFjZSB7CisKK25hbWVz
cGFjZSBmbGFncyA9IGFic2w6OmZsYWdzX2ludGVybmFsOworCitURVNUKEZsYWdzUGF0aFV0aWxU
ZXN0LCBUZXN0SW5pdGlhbFByb2dhbU5hbWUpIHsKKyAgZmxhZ3M6OlNldFByb2dyYW1JbnZvY2F0
aW9uTmFtZSgiYWJzbC9mbGFncy9wcm9ncmFtX25hbWVfdGVzdCIpOworICBzdGQ6OnN0cmluZyBw
cm9ncmFtX25hbWUgPSBmbGFnczo6UHJvZ3JhbUludm9jYXRpb25OYW1lKCk7CisgIGZvciAoY2hh
ciYgYyA6IHByb2dyYW1fbmFtZSkKKyAgICBpZiAoYyA9PSAnXFwnKSBjID0gJy8nOworCisjaWYg
IWRlZmluZWQoX193YXNtX18pICYmICFkZWZpbmVkKF9fYXNtanNfXykKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgZXhwZWN0X25hbWUgPSAiYWJzbC9mbGFncy9wcm9ncmFtX25hbWVfdGVzdCI7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGV4cGVjdF9iYXNlbmFtZSA9ICJwcm9ncmFtX25hbWVfdGVzdCI7Cisj
ZWxzZQorICAvLyBGb3IgdGFyZ2V0cyB0aGF0IGdlbmVyYXRlIGphdmFzY3JpcHQgb3Igd2ViYXNz
ZW1ibHkgdGhlIGludm9jYXRpb24gbmFtZQorICAvLyBoYXMgdGhlIHNwZWNpYWwgdmFsdWUgYmVs
b3cuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdF9uYW1lID0gInRoaXMucHJvZ3JhbSI7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdF9iYXNlbmFtZSA9ICJ0aGlzLnByb2dyYW0iOworI2Vu
ZGlmCisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6RW5kc1dpdGgocHJvZ3JhbV9uYW1lLCBleHBlY3Rf
bmFtZSkpIDw8IHByb2dyYW1fbmFtZTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpTaG9ydFByb2dyYW1J
bnZvY2F0aW9uTmFtZSgpLCBleHBlY3RfYmFzZW5hbWUpOworfQorCitURVNUKEZsYWdzUGF0aFV0
aWxUZXN0LCBUZXN0UHJvZ2FtTmFtZUludGVyZmFjZXMpIHsKKyAgZmxhZ3M6OlNldFByb2dyYW1J
bnZvY2F0aW9uTmFtZSgiYS9teV90ZXN0Iik7CisKKyAgRVhQRUNUX0VRKGZsYWdzOjpQcm9ncmFt
SW52b2NhdGlvbk5hbWUoKSwgImEvbXlfdGVzdCIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OlNob3J0
UHJvZ3JhbUludm9jYXRpb25OYW1lKCksICJteV90ZXN0Iik7CisKKyAgYWJzbDo6c3RyaW5nX3Zp
ZXcgbm90X251bGxfdGVybWluYXRlZCgiYWJzbC9hYWEvYmJiIik7CisgIG5vdF9udWxsX3Rlcm1p
bmF0ZWQgPSBub3RfbnVsbF90ZXJtaW5hdGVkLnN1YnN0cigxLCAxMCk7CisKKyAgZmxhZ3M6OlNl
dFByb2dyYW1JbnZvY2F0aW9uTmFtZShub3RfbnVsbF90ZXJtaW5hdGVkKTsKKworICBFWFBFQ1Rf
RVEoZmxhZ3M6OlByb2dyYW1JbnZvY2F0aW9uTmFtZSgpLCAiYnNsL2FhYS9iYiIpOworICBFWFBF
Q1RfRVEoZmxhZ3M6OlNob3J0UHJvZ3JhbUludm9jYXRpb25OYW1lKCksICJiYiIpOworfQorCit9
ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3JlZ2lzdHJ5
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcmVnaXN0cnkuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ3NWJk
ODQxMjZjZDYyMGUyYjBjODU4Mjc3NWFjYTFmNzQ0YmRjNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2ZsYWdzL2ludGVybmFsL3JlZ2lzdHJ5LmNjCkBAIC0wLDAgKzEsNDQzIEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2Zs
YWdzL2ludGVybmFsL3JlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvZHluYW1pY19h
bm5vdGF0aW9ucy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5o
IgorI2luY2x1ZGUgImFic2wvZmxhZ3MvY29uZmlnLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy91
c2FnZV9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1
ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorI2luY2x1ZGUgImFic2wvc3luY2hyb25p
emF0aW9uL211dGV4LmgiCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGbGFnUmVnaXN0cnkgaW1wbGVt
ZW50YXRpb24KKy8vICAgIEEgRmxhZ1JlZ2lzdHJ5IGhvbGRzIGFsbCBmbGFnIG9iamVjdHMgaW5k
ZXhlZAorLy8gICAgYnkgdGhlaXIgbmFtZXMgc28gdGhhdCBpZiB5b3Uga25vdyBhIGZsYWcncyBu
YW1lIHlvdSBjYW4gYWNjZXNzIG9yCisvLyAgICBzZXQgaXQuCisKK25hbWVzcGFjZSBhYnNsIHsK
K25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit2b2lkIERlc3Ryb3lG
bGFnKENvbW1hbmRMaW5lRmxhZyogZmxhZykgQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lT
IHsKKyAgZmxhZy0+RGVzdHJveSgpOworCisgIC8vIENvbW1hbmRMaW5lRmxhZyBoYW5kbGUgb2Jq
ZWN0IGlzIGhlYXAgYWxsb2NhdGVkIGZvciBub24gQWJzZWlsIEZsYWdzLgorICBpZiAoIWZsYWct
PklzQWJzZWlsRmxhZygpKSB7CisgICAgZGVsZXRlIGZsYWc7CisgIH0KK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGbGFnUmVnaXN0cnkKKy8vICAgIEEgRmxhZ1Jl
Z2lzdHJ5IHNpbmdsZXRvbiBvYmplY3QgaG9sZHMgYWxsIGZsYWcgb2JqZWN0cyBpbmRleGVkCisv
LyAgICBieSB0aGVpciBuYW1lcyBzbyB0aGF0IGlmIHlvdSBrbm93IGEgZmxhZydzIG5hbWUgKGFz
IGEgQworLy8gICAgc3RyaW5nKSwgeW91IGNhbiBhY2Nlc3Mgb3Igc2V0IGl0LiAgSWYgdGhlIGZ1
bmN0aW9uIGlzIG5hbWVkCisvLyAgICBGb29Mb2NrZWQoKSwgeW91IG11c3Qgb3duIHRoZSByZWdp
c3RyeSBsb2NrIGJlZm9yZSBjYWxsaW5nCisvLyAgICB0aGUgZnVuY3Rpb247IG90aGVyd2lzZSwg
eW91IHNob3VsZCAqbm90KiBob2xkIHRoZSBsb2NrLCBhbmQKKy8vICAgIHRoZSBmdW5jdGlvbiB3
aWxsIGFjcXVpcmUgaXQgaXRzZWxmIGlmIG5lZWRlZC4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNz
IEZsYWdSZWdpc3RyeSB7CisgcHVibGljOgorICBGbGFnUmVnaXN0cnkoKSA9IGRlZmF1bHQ7Cisg
IH5GbGFnUmVnaXN0cnkoKSB7CisgICAgZm9yIChhdXRvJiBwIDogZmxhZ3NfKSB7CisgICAgICBE
ZXN0cm95RmxhZyhwLnNlY29uZCk7CisgICAgfQorICB9CisKKyAgLy8gU3RvcmUgYSBmbGFnIGlu
IHRoaXMgcmVnaXN0cnkuICBUYWtlcyBvd25lcnNoaXAgb2YgKmZsYWcuCisgIHZvaWQgUmVnaXN0
ZXJGbGFnKENvbW1hbmRMaW5lRmxhZyogZmxhZyk7CisKKyAgdm9pZCBMb2NrKCkgQUJTTF9FWENM
VVNJVkVfTE9DS19GVU5DVElPTihsb2NrXykgeyBsb2NrXy5Mb2NrKCk7IH0KKyAgdm9pZCBVbmxv
Y2soKSBBQlNMX1VOTE9DS19GVU5DVElPTihsb2NrXykgeyBsb2NrXy5VbmxvY2soKTsgfQorCisg
IC8vIFJldHVybnMgdGhlIGZsYWcgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIG5hbWUsIG9yIG51
bGxwdHIgaWYgbm90IGZvdW5kLgorICAvLyBXaWxsIGVtaXQgYSB3YXJuaW5nIGlmIGEgJ3JldGly
ZWQnIGZsYWcgaXMgc3BlY2lmaWVkLgorICBDb21tYW5kTGluZUZsYWcqIEZpbmRGbGFnTG9ja2Vk
KGFic2w6OnN0cmluZ192aWV3IG5hbWUpOworCisgIC8vIFJldHVybnMgdGhlIHJldGlyZWQgZmxh
ZyBvYmplY3QgZm9yIHRoZSBzcGVjaWZpZWQgbmFtZSwgb3IgbnVsbHB0ciBpZiBub3QKKyAgLy8g
Zm91bmQgb3Igbm90IHJldGlyZWQuICBEb2VzIG5vdCBlbWl0IGEgd2FybmluZy4KKyAgQ29tbWFu
ZExpbmVGbGFnKiBGaW5kUmV0aXJlZEZsYWdMb2NrZWQoYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSk7
CisKKyAgc3RhdGljIEZsYWdSZWdpc3RyeSogR2xvYmFsUmVnaXN0cnkoKTsgIC8vIHJldHVybnMg
YSBzaW5nbGV0b24gcmVnaXN0cnkKKworIHByaXZhdGU6CisgIGZyaWVuZCBjbGFzcyBGbGFnU2F2
ZXJJbXBsOyAgLy8gcmVhZHMgYWxsIHRoZSBmbGFncyBpbiBvcmRlciB0byBjb3B5IHRoZW0KKyAg
ZnJpZW5kIHZvaWQgRm9yRWFjaEZsYWdVbmxvY2tlZCgKKyAgICAgIHN0ZDo6ZnVuY3Rpb248dm9p
ZChDb21tYW5kTGluZUZsYWcqKT4gdmlzaXRvcik7CisKKyAgLy8gVGhlIG1hcCBmcm9tIG5hbWUg
dG8gZmxhZywgZm9yIEZpbmRGbGFnTG9ja2VkKCkuCisgIHVzaW5nIEZsYWdNYXAgPSBzdGQ6Om1h
cDxhYnNsOjpzdHJpbmdfdmlldywgQ29tbWFuZExpbmVGbGFnKj47CisgIHVzaW5nIEZsYWdJdGVy
YXRvciA9IEZsYWdNYXA6Oml0ZXJhdG9yOworICB1c2luZyBGbGFnQ29uc3RJdGVyYXRvciA9IEZs
YWdNYXA6OmNvbnN0X2l0ZXJhdG9yOworICBGbGFnTWFwIGZsYWdzXzsKKworICBhYnNsOjpNdXRl
eCBsb2NrXzsKKworICAvLyBEaXNhbGxvdworICBGbGFnUmVnaXN0cnkoY29uc3QgRmxhZ1JlZ2lz
dHJ5Jik7CisgIEZsYWdSZWdpc3RyeSYgb3BlcmF0b3I9KGNvbnN0IEZsYWdSZWdpc3RyeSYpOwor
fTsKKworRmxhZ1JlZ2lzdHJ5KiBGbGFnUmVnaXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCkgeworICBz
dGF0aWMgRmxhZ1JlZ2lzdHJ5KiBnbG9iYWxfcmVnaXN0cnkgPSBuZXcgRmxhZ1JlZ2lzdHJ5Owor
ICByZXR1cm4gZ2xvYmFsX3JlZ2lzdHJ5OworfQorCituYW1lc3BhY2UgeworCitjbGFzcyBGbGFn
UmVnaXN0cnlMb2NrIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEZsYWdSZWdpc3RyeUxvY2soRmxh
Z1JlZ2lzdHJ5KiBmcikgOiBmcl8oZnIpIHsgZnJfLT5Mb2NrKCk7IH0KKyAgfkZsYWdSZWdpc3Ry
eUxvY2soKSB7IGZyXy0+VW5sb2NrKCk7IH0KKworIHByaXZhdGU6CisgIEZsYWdSZWdpc3RyeSog
Y29uc3QgZnJfOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK3ZvaWQgRmxhZ1JlZ2lzdHJ5OjpS
ZWdpc3RlckZsYWcoQ29tbWFuZExpbmVGbGFnKiBmbGFnKSB7CisgIEZsYWdSZWdpc3RyeUxvY2sg
cmVnaXN0cnlfbG9jayh0aGlzKTsKKyAgc3RkOjpwYWlyPEZsYWdJdGVyYXRvciwgYm9vbD4gaW5z
ID0KKyAgICAgIGZsYWdzXy5pbnNlcnQoRmxhZ01hcDo6dmFsdWVfdHlwZShmbGFnLT5OYW1lKCks
IGZsYWcpKTsKKyAgaWYgKGlucy5zZWNvbmQgPT0gZmFsc2UpIHsgIC8vIG1lYW5zIHRoZSBuYW1l
IHdhcyBhbHJlYWR5IGluIHRoZSBtYXAKKyAgICBDb21tYW5kTGluZUZsYWcqIG9sZF9mbGFnID0g
aW5zLmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKGZsYWctPklzUmV0aXJlZCgpICE9IG9sZF9mbGFn
LT5Jc1JldGlyZWQoKSkgeworICAgICAgLy8gQWxsIHJlZ2lzdHJhdGlvbnMgbXVzdCBhZ3JlZSBv
biB0aGUgJ3JldGlyZWQnIGZsYWcuCisgICAgICBmbGFnc19pbnRlcm5hbDo6UmVwb3J0VXNhZ2VF
cnJvcigKKyAgICAgICAgICBhYnNsOjpTdHJDYXQoCisgICAgICAgICAgICAgICJSZXRpcmVkIGZs
YWcgJyIsIGZsYWctPk5hbWUoKSwKKyAgICAgICAgICAgICAgIicgd2FzIGRlZmluZWQgbm9ybWFs
bHkgaW4gZmlsZSAnIiwKKyAgICAgICAgICAgICAgKGZsYWctPklzUmV0aXJlZCgpID8gb2xkX2Zs
YWctPkZpbGVuYW1lKCkgOiBmbGFnLT5GaWxlbmFtZSgpKSwKKyAgICAgICAgICAgICAgIicuIiks
CisgICAgICAgICAgdHJ1ZSk7CisgICAgfSBlbHNlIGlmIChmbGFnLT5vcCAhPSBvbGRfZmxhZy0+
b3ApIHsKKyAgICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVycm9yKAorICAgICAgICAg
IGFic2w6OlN0ckNhdCgiRmxhZyAnIiwgZmxhZy0+TmFtZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAiJyB3YXMgZGVmaW5lZCBtb3JlIHRoYW4gb25jZSBidXQgd2l0aCAiCisgICAgICAgICAg
ICAgICAgICAgICAgICJkaWZmZXJpbmcgdHlwZXMuIERlZmluZWQgaW4gZmlsZXMgJyIsCisgICAg
ICAgICAgICAgICAgICAgICAgIG9sZF9mbGFnLT5GaWxlbmFtZSgpLCAiJyBhbmQgJyIsIGZsYWct
PkZpbGVuYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICInIHdpdGggdHlwZXMgJyIsIG9s
ZF9mbGFnLT5UeXBlbmFtZSgpLCAiJyBhbmQgJyIsCisgICAgICAgICAgICAgICAgICAgICAgIGZs
YWctPlR5cGVuYW1lKCksICInLCByZXNwZWN0aXZlbHkuIiksCisgICAgICAgICAgdHJ1ZSk7Cisg
ICAgfSBlbHNlIGlmIChvbGRfZmxhZy0+SXNSZXRpcmVkKCkpIHsKKyAgICAgIC8vIFJldGlyZWQg
ZGVmaW5pdGlvbnMgYXJlIGlkZW1wb3RlbnQuIEp1c3Qga2VlcCB0aGUgb2xkIG9uZS4KKyAgICAg
IERlc3Ryb3lGbGFnKGZsYWcpOworICAgICAgcmV0dXJuOworICAgIH0gZWxzZSBpZiAob2xkX2Zs
YWctPkZpbGVuYW1lKCkgIT0gZmxhZy0+RmlsZW5hbWUoKSkgeworICAgICAgZmxhZ3NfaW50ZXJu
YWw6OlJlcG9ydFVzYWdlRXJyb3IoCisgICAgICAgICAgYWJzbDo6U3RyQ2F0KCJGbGFnICciLCBm
bGFnLT5OYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICInIHdhcyBkZWZpbmVkIG1vcmUg
dGhhbiBvbmNlIChpbiBmaWxlcyAnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkX2ZsYWct
PkZpbGVuYW1lKCksICInIGFuZCAnIiwgZmxhZy0+RmlsZW5hbWUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIicpLiIpLAorICAgICAgICAgIHRydWUpOworICAgIH0gZWxzZSB7CisgICAgICBm
bGFnc19pbnRlcm5hbDo6UmVwb3J0VXNhZ2VFcnJvcigKKyAgICAgICAgICBhYnNsOjpTdHJDYXQo
CisgICAgICAgICAgICAgICJTb21ldGhpbmcgd3Jvbmcgd2l0aCBmbGFnICciLCBmbGFnLT5OYW1l
KCksICInIGluIGZpbGUgJyIsCisgICAgICAgICAgICAgIGZsYWctPkZpbGVuYW1lKCksICInLiBP
bmUgcG9zc2liaWxpdHk6IGZpbGUgJyIsIGZsYWctPkZpbGVuYW1lKCksCisgICAgICAgICAgICAg
ICInIGlzIGJlaW5nIGxpbmtlZCBib3RoIHN0YXRpY2FsbHkgYW5kIGR5bmFtaWNhbGx5IGludG8g
dGhpcyAiCisgICAgICAgICAgICAgICJleGVjdXRhYmxlLiBlLmcuIHNvbWUgZmlsZXMgbGlzdGVk
IGFzIHNyY3MgdG8gYSB0ZXN0IGFuZCBhbHNvICIKKyAgICAgICAgICAgICAgImxpc3RlZCBhcyBz
cmNzIG9mIHNvbWUgc2hhcmVkIGxpYiBkZXBzIG9mIHRoZSBzYW1lIHRlc3QuIiksCisgICAgICAg
ICAgdHJ1ZSk7CisgICAgfQorICAgIC8vIEFsbCBjYXNlcyBhYm92ZSBhcmUgZmF0YWwsIGV4Y2Vw
dCBmb3IgdGhlIHJldGlyZWQgZmxhZ3MuCisgICAgc3RkOjpleGl0KDEpOworICB9Cit9CisKK0Nv
bW1hbmRMaW5lRmxhZyogRmxhZ1JlZ2lzdHJ5OjpGaW5kRmxhZ0xvY2tlZChhYnNsOjpzdHJpbmdf
dmlldyBuYW1lKSB7CisgIEZsYWdDb25zdEl0ZXJhdG9yIGkgPSBmbGFnc18uZmluZChuYW1lKTsK
KyAgaWYgKGkgPT0gZmxhZ3NfLmVuZCgpKSB7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKwor
ICBpZiAoaS0+c2Vjb25kLT5Jc1JldGlyZWQoKSkgeworICAgIGZsYWdzX2ludGVybmFsOjpSZXBv
cnRVc2FnZUVycm9yKAorICAgICAgICBhYnNsOjpTdHJDYXQoIkFjY2Vzc2luZyByZXRpcmVkIGZs
YWcgJyIsIG5hbWUsICInIiksIGZhbHNlKTsKKyAgfQorCisgIHJldHVybiBpLT5zZWNvbmQ7Cit9
CisKK0NvbW1hbmRMaW5lRmxhZyogRmxhZ1JlZ2lzdHJ5OjpGaW5kUmV0aXJlZEZsYWdMb2NrZWQo
YWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSkgeworICBGbGFnQ29uc3RJdGVyYXRvciBpID0gZmxhZ3Nf
LmZpbmQobmFtZSk7CisgIGlmIChpID09IGZsYWdzXy5lbmQoKSB8fCAhaS0+c2Vjb25kLT5Jc1Jl
dGlyZWQoKSkgeworICAgIHJldHVybiBudWxscHRyOworICB9CisKKyAgcmV0dXJuIGktPnNlY29u
ZDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZsYWdTYXZlcgorLy8gRmxhZ1NhdmVySW1wbAor
Ly8gICAgVGhpcyBjbGFzcyBzdG9yZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxhZ3MgYXQgY29uc3Ry
dWN0IHRpbWUsCisvLyAgICBhbmQgcmVzdG9yZXMgYWxsIGZsYWdzIHRvIHRoYXQgc3RhdGUgYXQg
ZGVzdHJ1Y3QgdGltZS4KKy8vICAgIEl0cyBtYWpvciBpbXBsZW1lbnRhdGlvbiBjaGFsbGVuZ2Ug
aXMgdGhhdCBpdCBuZXZlciBtb2RpZmllcworLy8gICAgcG9pbnRlcnMgaW4gdGhlICdtYWluJyBy
ZWdpc3RyeSwgc28gZ2xvYmFsIEZMQUdfKiB2YXJzIGFsd2F5cworLy8gICAgcG9pbnQgdG8gdGhl
IHJpZ2h0IHBsYWNlLgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgRmxhZ1NhdmVySW1wbCB7Cisg
cHVibGljOgorICAvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IEZsYWdTYXZlckltcGwgb2JqZWN0Lgor
ICBGbGFnU2F2ZXJJbXBsKCkge30KKyAgfkZsYWdTYXZlckltcGwoKSB7CisgICAgLy8gcmVjbGFp
bSBtZW1vcnkgZnJvbSBlYWNoIG9mIG91ciBDb21tYW5kTGluZUZsYWdzCisgICAgZm9yIChjb25z
dCBTYXZlZEZsYWcmIHNyYyA6IGJhY2t1cF9yZWdpc3RyeV8pIHsKKyAgICAgIERlbGV0ZShzcmMu
b3AsIHNyYy5jdXJyZW50KTsKKyAgICAgIERlbGV0ZShzcmMub3AsIHNyYy5kZWZhdWx0X3ZhbHVl
KTsKKyAgICB9CisgIH0KKworICAvLyBTYXZlcyB0aGUgZmxhZyBzdGF0ZXMgZnJvbSB0aGUgZmxh
ZyByZWdpc3RyeSBpbnRvIHRoaXMgb2JqZWN0LgorICAvLyBJdCdzIGFuIGVycm9yIHRvIGNhbGwg
dGhpcyBtb3JlIHRoYW4gb25jZS4KKyAgLy8gTXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgcmVnaXN0
cnkgbXV0ZXggaXMgbm90IGhlbGQuCisgIHZvaWQgU2F2ZUZyb21SZWdpc3RyeSgpIHsKKyAgICBh
c3NlcnQoYmFja3VwX3JlZ2lzdHJ5Xy5lbXB0eSgpKTsgIC8vIGNhbGwgb25seSBvbmNlIQorICAg
IFNhdmVkRmxhZyBzYXZlZDsKKyAgICBmbGFnc19pbnRlcm5hbDo6Rm9yRWFjaEZsYWcoWyZdKGZs
YWdzX2ludGVybmFsOjpDb21tYW5kTGluZUZsYWcqIGZsYWcpIHsKKyAgICAgIGlmIChmbGFnLT5J
c1JldGlyZWQoKSkgcmV0dXJuOworCisgICAgICBzYXZlZC5uYW1lID0gZmxhZy0+TmFtZSgpOwor
ICAgICAgc2F2ZWQub3AgPSBmbGFnLT5vcDsKKyAgICAgIHNhdmVkLm1hcnNoYWxsaW5nX29wID0g
ZmxhZy0+bWFyc2hhbGxpbmdfb3A7CisgICAgICB7CisgICAgICAgIGFic2w6Ok11dGV4TG9jayBs
KGZsYWctPkluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisgICAgICAgIHNhdmVkLnZhbGlkYXRvciA9
IGZsYWctPnZhbGlkYXRvcjsKKyAgICAgICAgc2F2ZWQubW9kaWZpZWQgPSBmbGFnLT5tb2RpZmll
ZDsKKyAgICAgICAgc2F2ZWQub25fY29tbWFuZF9saW5lID0gZmxhZy0+b25fY29tbWFuZF9saW5l
OworICAgICAgICBzYXZlZC5jdXJyZW50ID0gQ2xvbmUoc2F2ZWQub3AsIGZsYWctPmN1cik7Cisg
ICAgICAgIHNhdmVkLmRlZmF1bHRfdmFsdWUgPSBDbG9uZShzYXZlZC5vcCwgZmxhZy0+ZGVmKTsK
KyAgICAgICAgc2F2ZWQuY291bnRlciA9IGZsYWctPmNvdW50ZXI7CisgICAgICB9CisgICAgICBi
YWNrdXBfcmVnaXN0cnlfLnB1c2hfYmFjayhzYXZlZCk7CisgICAgfSk7CisgIH0KKworICAvLyBS
ZXN0b3JlcyB0aGUgc2F2ZWQgZmxhZyBzdGF0ZXMgaW50byB0aGUgZmxhZyByZWdpc3RyeS4gIFdl
CisgIC8vIGFzc3VtZSBubyBmbGFncyB3ZXJlIGFkZGVkIG9yIGRlbGV0ZWQgZnJvbSB0aGUgcmVn
aXN0cnkgc2luY2UKKyAgLy8gdGhlIFNhdmVGcm9tUmVnaXN0cnk7IGlmIHRoZXkgd2VyZSwgdGhh
dCdzIHRyb3VibGUhICBNdXN0IGJlCisgIC8vIGNhbGxlZCB3aGVuIHRoZSByZWdpc3RyeSBtdXRl
eCBpcyBub3QgaGVsZC4KKyAgdm9pZCBSZXN0b3JlVG9SZWdpc3RyeSgpIHsKKyAgICBGbGFnUmVn
aXN0cnkqIGNvbnN0IGdsb2JhbF9yZWdpc3RyeSA9IEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0
cnkoKTsKKyAgICBGbGFnUmVnaXN0cnlMb2NrIGZybChnbG9iYWxfcmVnaXN0cnkpOworICAgIGZv
ciAoY29uc3QgU2F2ZWRGbGFnJiBzcmMgOiBiYWNrdXBfcmVnaXN0cnlfKSB7CisgICAgICBDb21t
YW5kTGluZUZsYWcqIGZsYWcgPSBnbG9iYWxfcmVnaXN0cnktPkZpbmRGbGFnTG9ja2VkKHNyYy5u
YW1lKTsKKyAgICAgIC8vIElmIG51bGwsIGZsYWcgZ290IGRlbGV0ZWQgZnJvbSByZWdpc3RyeS4K
KyAgICAgIGlmICghZmxhZykgY29udGludWU7CisKKyAgICAgIGJvb2wgcmVzdG9yZWQgPSBmYWxz
ZTsKKyAgICAgIHsKKyAgICAgICAgYWJzbDo6TXV0ZXhMb2NrIGwoZmxhZy0+SW5pdEZsYWdJZk5l
Y2Vzc2FyeSgpKTsKKyAgICAgICAgZmxhZy0+dmFsaWRhdG9yID0gc3JjLnZhbGlkYXRvcjsKKyAg
ICAgICAgZmxhZy0+bW9kaWZpZWQgPSBzcmMubW9kaWZpZWQ7CisgICAgICAgIGZsYWctPm9uX2Nv
bW1hbmRfbGluZSA9IHNyYy5vbl9jb21tYW5kX2xpbmU7CisgICAgICAgIGlmIChmbGFnLT5jb3Vu
dGVyICE9IHNyYy5jb3VudGVyIHx8CisgICAgICAgICAgICBDaGFuZ2VkRGlyZWN0bHkoZmxhZywg
c3JjLmRlZmF1bHRfdmFsdWUsIGZsYWctPmRlZikpIHsKKyAgICAgICAgICByZXN0b3JlZCA9IHRy
dWU7CisgICAgICAgICAgQ29weShzcmMub3AsIHNyYy5kZWZhdWx0X3ZhbHVlLCBmbGFnLT5kZWYp
OworICAgICAgICB9CisgICAgICAgIGlmIChmbGFnLT5jb3VudGVyICE9IHNyYy5jb3VudGVyIHx8
CisgICAgICAgICAgICBDaGFuZ2VkRGlyZWN0bHkoZmxhZywgc3JjLmN1cnJlbnQsIGZsYWctPmN1
cikpIHsKKyAgICAgICAgICByZXN0b3JlZCA9IHRydWU7CisgICAgICAgICAgQ29weShzcmMub3As
IHNyYy5jdXJyZW50LCBmbGFnLT5jdXIpOworICAgICAgICAgIFVwZGF0ZUNvcHkoZmxhZyk7Cisg
ICAgICAgICAgZmxhZy0+SW52b2tlQ2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgICAgfQorCisg
ICAgICBpZiAocmVzdG9yZWQpIHsKKyAgICAgICAgZmxhZy0+Y291bnRlcisrOworCisgICAgICAg
IC8vIFJldmFsaWRhdGUgdGhlIGZsYWcgYmVjYXVzZSB0aGUgdmFsaWRhdG9yIG1pZ2h0IHN0b3Jl
IHN0YXRlIGJhc2VkCisgICAgICAgIC8vIG9uIHRoZSBmbGFnJ3MgdmFsdWUsIHdoaWNoIGp1c3Qg
Y2hhbmdlZCBkdWUgdG8gdGhlIHJlc3RvcmUuCisgICAgICAgIC8vIEZhaWxpbmcgdmFsaWRhdGlv
biBpcyBpZ25vcmVkIGJlY2F1c2UgaXQncyBhc3N1bWVkIHRoYXQgdGhlIGZsYWcKKyAgICAgICAg
Ly8gd2FzIHZhbGlkIHByZXZpb3VzbHkgYW5kIHRoZXJlJ3MgbGl0dGxlIHRoYXQgY2FuIGJlIGRv
bmUgYWJvdXQgaXQKKyAgICAgICAgLy8gaGVyZSwgYW55d2F5LgorICAgICAgICBmbGFnLT5WYWxp
ZGF0ZUlucHV0VmFsdWUoZmxhZy0+Q3VycmVudFZhbHVlKCkpOworCisgICAgICAgIEFCU0xfSU5U
RVJOQUxfTE9HKAorICAgICAgICAgICAgSU5GTywgYWJzbDo6U3RyQ2F0KCJSZXN0b3JlIHNhdmVk
IHZhbHVlIG9mICIsIGZsYWctPk5hbWUoKSwgIjogIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbnBhcnNlKHNyYy5tYXJzaGFsbGluZ19vcCwgc3JjLmN1cnJlbnQpKSk7CisgICAg
ICB9CisgICAgfQorICB9CisKKyBwcml2YXRlOgorICBzdHJ1Y3QgU2F2ZWRGbGFnIHsKKyAgICBh
YnNsOjpzdHJpbmdfdmlldyBuYW1lOworICAgIEZsYWdPcEZuIG9wOworICAgIEZsYWdNYXJzaGFs
bGluZ09wRm4gbWFyc2hhbGxpbmdfb3A7CisgICAgaW50NjRfdCBjb3VudGVyOworICAgIGJvb2wg
bW9kaWZpZWQ7CisgICAgYm9vbCBvbl9jb21tYW5kX2xpbmU7CisgICAgYm9vbCAoKnZhbGlkYXRv
cikoKTsKKyAgICBjb25zdCB2b2lkKiBjdXJyZW50OyAgICAgICAgLy8gbnVsbHB0ciBhZnRlciBy
ZXN0b3JlCisgICAgY29uc3Qgdm9pZCogZGVmYXVsdF92YWx1ZTsgIC8vIG51bGxwdHIgYWZ0ZXIg
cmVzdG9yZQorICB9OworCisgIHN0ZDo6dmVjdG9yPFNhdmVkRmxhZz4gYmFja3VwX3JlZ2lzdHJ5
XzsKKworICBGbGFnU2F2ZXJJbXBsKGNvbnN0IEZsYWdTYXZlckltcGwmKTsgIC8vIG5vIGNvcHlp
bmchCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEZsYWdTYXZlckltcGwmKTsKK307CisKK0ZsYWdT
YXZlcjo6RmxhZ1NhdmVyKCkgOiBpbXBsXyhuZXcgRmxhZ1NhdmVySW1wbCgpKSB7CisgIGltcGxf
LT5TYXZlRnJvbVJlZ2lzdHJ5KCk7Cit9CisKK3ZvaWQgRmxhZ1NhdmVyOjpJZ25vcmUoKSB7Cisg
IGRlbGV0ZSBpbXBsXzsKKyAgaW1wbF8gPSBudWxscHRyOworfQorCitGbGFnU2F2ZXI6On5GbGFn
U2F2ZXIoKSB7CisgIGlmICghaW1wbF8pIHJldHVybjsKKworICBpbXBsXy0+UmVzdG9yZVRvUmVn
aXN0cnkoKTsKKyAgZGVsZXRlIGltcGxfOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gR2V0QWxs
RmxhZ3MoKQorLy8gICAgVGhlIG1haW4gd2F5IHRoZSBGbGFnUmVnaXN0cnkgY2xhc3MgZXhwb3Nl
cyBpdHMgZGF0YS4gIFRoaXMKKy8vICAgIHJldHVybnMsIGFzIHN0cmluZ3MsIGFsbCB0aGUgaW5m
byBhYm91dCBhbGwgdGhlIGZsYWdzIGluCisvLyAgICB0aGUgbWFpbiByZWdpc3RyeSwgc29ydGVk
IGZpcnN0IGJ5IGZpbGVuYW1lIHRoZXkgYXJlIGRlZmluZWQKKy8vICAgIGluLCBhbmQgdGhlbiBi
eSBmbGFnbmFtZS4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0cnVjdCBGaWxlbmFtZUZsYWduYW1lTGVz
cyB7CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvJiBhLAorICAg
ICAgICAgICAgICAgICAgY29uc3QgQ29tbWFuZExpbmVGbGFnSW5mbyYgYikgY29uc3QgeworICAg
IGludCBjbXAgPSBhYnNsOjpzdHJpbmdfdmlldyhhLmZpbGVuYW1lKS5jb21wYXJlKGIuZmlsZW5h
bWUpOworICAgIGlmIChjbXAgIT0gMCkgcmV0dXJuIGNtcCA8IDA7CisgICAgcmV0dXJuIGEubmFt
ZSA8IGIubmFtZTsKKyAgfQorfTsKKwordm9pZCBGaWxsQ29tbWFuZExpbmVGbGFnSW5mbyhDb21t
YW5kTGluZUZsYWcqIGZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRM
aW5lRmxhZ0luZm8qIHJlc3VsdCkgeworICByZXN1bHQtPm5hbWUgPSBzdGQ6OnN0cmluZyhmbGFn
LT5OYW1lKCkpOworICByZXN1bHQtPnR5cGUgPSBzdGQ6OnN0cmluZyhmbGFnLT5UeXBlbmFtZSgp
KTsKKyAgcmVzdWx0LT5kZXNjcmlwdGlvbiA9IGZsYWctPkhlbHAoKTsKKyAgcmVzdWx0LT5maWxl
bmFtZSA9IGZsYWctPkZpbGVuYW1lKCk7CisKKyAgaWYgKCFmbGFnLT5Jc0Fic2VpbEZsYWcoKSkg
eworICAgIGlmICghZmxhZy0+SXNNb2RpZmllZCgpICYmIENoYW5nZWREaXJlY3RseShmbGFnLCBm
bGFnLT5jdXIsIGZsYWctPmRlZikpIHsKKyAgICAgIGZsYWctPm1vZGlmaWVkID0gdHJ1ZTsKKyAg
ICB9CisgIH0KKworICByZXN1bHQtPmN1cnJlbnRfdmFsdWUgPSBmbGFnLT5DdXJyZW50VmFsdWUo
KTsKKyAgcmVzdWx0LT5kZWZhdWx0X3ZhbHVlID0gZmxhZy0+RGVmYXVsdFZhbHVlKCk7CisgIHJl
c3VsdC0+aXNfZGVmYXVsdCA9ICFmbGFnLT5Jc01vZGlmaWVkKCk7CisgIHJlc3VsdC0+aGFzX3Zh
bGlkYXRvcl9mbiA9IGZsYWctPkhhc1ZhbGlkYXRvckZuKCk7CisgIGFic2w6Ok11dGV4TG9jayBs
KGZsYWctPkluaXRGbGFnSWZOZWNlc3NhcnkoKSk7CisgIHJlc3VsdC0+ZmxhZ19wdHIgPSBmbGFn
LT5Jc0Fic2VpbEZsYWcoKSA/IG51bGxwdHIgOiBmbGFnLT5jdXI7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK0NvbW1hbmRMaW5lRmxhZyogRmluZENvbW1hbmRMaW5lRmxhZyhhYnNsOjpzdHJpbmdf
dmlldyBuYW1lKSB7CisgIGlmIChuYW1lLmVtcHR5KCkpIHJldHVybiBudWxscHRyOworICBGbGFn
UmVnaXN0cnkqIGNvbnN0IHJlZ2lzdHJ5ID0gRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgp
OworICBGbGFnUmVnaXN0cnlMb2NrIGZybChyZWdpc3RyeSk7CisKKyAgcmV0dXJuIHJlZ2lzdHJ5
LT5GaW5kRmxhZ0xvY2tlZChuYW1lKTsKK30KKworQ29tbWFuZExpbmVGbGFnKiBGaW5kUmV0aXJl
ZEZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSkgeworICBGbGFnUmVnaXN0cnkqIGNvbnN0IHJl
Z2lzdHJ5ID0gRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpOworICBGbGFnUmVnaXN0cnlM
b2NrIGZybChyZWdpc3RyeSk7CisKKyAgcmV0dXJuIHJlZ2lzdHJ5LT5GaW5kUmV0aXJlZEZsYWdM
b2NrZWQobmFtZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgRm9yRWFjaEZsYWdVbmxv
Y2tlZChzdGQ6OmZ1bmN0aW9uPHZvaWQoQ29tbWFuZExpbmVGbGFnKik+IHZpc2l0b3IpIHsKKyAg
RmxhZ1JlZ2lzdHJ5KiBjb25zdCByZWdpc3RyeSA9IEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0
cnkoKTsKKyAgZm9yIChGbGFnUmVnaXN0cnk6OkZsYWdDb25zdEl0ZXJhdG9yIGkgPSByZWdpc3Ry
eS0+ZmxhZ3NfLmJlZ2luKCk7CisgICAgICAgaSAhPSByZWdpc3RyeS0+ZmxhZ3NfLmVuZCgpOyAr
K2kpIHsKKyAgICB2aXNpdG9yKGktPnNlY29uZCk7CisgIH0KK30KKwordm9pZCBGb3JFYWNoRmxh
ZyhzdGQ6OmZ1bmN0aW9uPHZvaWQoQ29tbWFuZExpbmVGbGFnKik+IHZpc2l0b3IpIHsKKyAgRmxh
Z1JlZ2lzdHJ5KiBjb25zdCByZWdpc3RyeSA9IEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0cnko
KTsKKyAgRmxhZ1JlZ2lzdHJ5TG9jayBmcmwocmVnaXN0cnkpOworICBGb3JFYWNoRmxhZ1VubG9j
a2VkKHZpc2l0b3IpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIEdldEFsbEZsYWdzKHN0
ZDo6dmVjdG9yPENvbW1hbmRMaW5lRmxhZ0luZm8+KiBPVVRQVVQpIHsKKyAgZmxhZ3NfaW50ZXJu
YWw6OkZvckVhY2hGbGFnKFsmXShDb21tYW5kTGluZUZsYWcqIGZsYWcpIHsKKyAgICBpZiAoZmxh
Zy0+SXNSZXRpcmVkKCkpIHJldHVybjsKKworICAgIENvbW1hbmRMaW5lRmxhZ0luZm8gZmk7Cisg
ICAgRmlsbENvbW1hbmRMaW5lRmxhZ0luZm8oZmxhZywgJmZpKTsKKyAgICBPVVRQVVQtPnB1c2hf
YmFjayhmaSk7CisgIH0pOworCisgIC8vIE5vdyBzb3J0IHRoZSBmbGFncywgZmlyc3QgYnkgZmls
ZW5hbWUgdGhleSBvY2N1ciBpbiwgdGhlbiBhbHBoYWJldGljYWxseQorICBzdGQ6OnNvcnQoT1VU
UFVULT5iZWdpbigpLCBPVVRQVVQtPmVuZCgpLCBGaWxlbmFtZUZsYWduYW1lTGVzcygpKTsKK30K
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBSZWdpc3RlckNvbW1hbmRMaW5lRmxhZyhDb21tYW5k
TGluZUZsYWcqIGZsYWcpIHsKKyAgRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpLT5SZWdp
c3RlckZsYWcoZmxhZyk7CisgIHJldHVybiB0cnVlOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiti
b29sIFJldGlyZShGbGFnT3BGbiBvcHMsIEZsYWdNYXJzaGFsbGluZ09wRm4gbWFyc2hhbGxpbmdf
b3BzLAorICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSkgeworICBhdXRvKiBmbGFnID0gbmV3
IENvbW1hbmRMaW5lRmxhZygKKyAgICAgIG5hbWUsCisgICAgICAvKmhlbHBfdGV4dD0qL2Fic2w6
OmZsYWdzX2ludGVybmFsOjpIZWxwVGV4dDo6RnJvbVN0YXRpY0NTdHJpbmcobnVsbHB0ciksCisg
ICAgICAvKmZpbGVuYW1lX2FyZz0qLyJSRVRJUkVEIiwgb3BzLCBtYXJzaGFsbGluZ19vcHMsCisg
ICAgICAvKmluaXRpYWxfdmFsdWVfZ2VuPSovbnVsbHB0ciwKKyAgICAgIC8qcmV0aXJlZF9hcmc9
Ki90cnVlLCBudWxscHRyLCBudWxscHRyKTsKKyAgRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3Ry
eSgpLT5SZWdpc3RlckZsYWcoZmxhZyk7CisgIHJldHVybiB0cnVlOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitib29sIElzUmV0aXJlZEZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSwgYm9vbCog
dHlwZV9pc19ib29sKSB7CisgIGFzc2VydCghbmFtZS5lbXB0eSgpKTsKKyAgQ29tbWFuZExpbmVG
bGFnKiBmbGFnID0gZmxhZ3NfaW50ZXJuYWw6OkZpbmRSZXRpcmVkRmxhZyhuYW1lKTsKKyAgaWYg
KGZsYWcgPT0gbnVsbHB0cikgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBhc3NlcnQodHlw
ZV9pc19ib29sKTsKKyAgKnR5cGVfaXNfYm9vbCA9IGZsYWctPklzT2ZUeXBlPGJvb2w+KCk7Cisg
IHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC9yZWdpc3Ry
eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZmxhZ3MvaW50ZXJuYWwvcmVnaXN0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzU2NmZi
ZjRhYjcwZThkMjc3OTdiMjQxNTk4MjI3ZWIyNTI5Y2FlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvZmxhZ3MvaW50ZXJuYWwvcmVnaXN0cnkuaApAQCAtMCwwICsxLDE2NyBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfRkxBR1Nf
SU5URVJOQUxfUkVHSVNUUllfSF8KKyNkZWZpbmUgQUJTTF9GTEFHU19JTlRFUk5BTF9SRUdJU1RS
WV9IXworCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8
c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImFic2wv
ZmxhZ3MvaW50ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmgiCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBH
bG9iYWwgZmxhZ3MgcmVnaXN0cnkgQVBJLgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
ZmxhZ3NfaW50ZXJuYWwgeworCisvLyBDb21tYW5kTGluZUZsYWdJbmZvIGhvbGRzIGFsbCBpbmZv
cm1hdGlvbiBmb3IgYSBmbGFnLgorc3RydWN0IENvbW1hbmRMaW5lRmxhZ0luZm8geworICBzdGQ6
OnN0cmluZyBuYW1lOyAgICAgICAgICAgLy8gdGhlIG5hbWUgb2YgdGhlIGZsYWcKKyAgc3RkOjpz
dHJpbmcgdHlwZTsgICAgICAgICAgIC8vIERPIE5PVCB1c2UuIFVzZSBmbGFnLT5Jc09mVHlwZTxU
PigpIGluc3RlYWQuCisgIHN0ZDo6c3RyaW5nIGRlc2NyaXB0aW9uOyAgICAvLyB0aGUgImhlbHAg
dGV4dCIgYXNzb2NpYXRlZCB3aXRoIHRoZSBmbGFnCisgIHN0ZDo6c3RyaW5nIGN1cnJlbnRfdmFs
dWU7ICAvLyB0aGUgY3VycmVudCB2YWx1ZSwgYXMgYSBzdGQ6OnN0cmluZworICBzdGQ6OnN0cmlu
ZyBkZWZhdWx0X3ZhbHVlOyAgLy8gdGhlIGRlZmF1bHQgdmFsdWUsIGFzIGEgc3RkOjpzdHJpbmcK
KyAgc3RkOjpzdHJpbmcgZmlsZW5hbWU7ICAgICAgIC8vICdjbGVhbmVkJyB2ZXJzaW9uIG9mIGZp
bGVuYW1lIGhvbGRpbmcgdGhlIGZsYWcKKyAgYm9vbCBoYXNfdmFsaWRhdG9yX2ZuOyAgLy8gdHJ1
ZSBpZiBSZWdpc3RlckZsYWdWYWxpZGF0b3IgY2FsbGVkIG9uIHRoaXMgZmxhZworCisgIGJvb2wg
aXNfZGVmYXVsdDsgIC8vIHRydWUgaWYgdGhlIGZsYWcgaGFzIHRoZSBkZWZhdWx0IHZhbHVlIGFu
ZAorICAgICAgICAgICAgICAgICAgICAvLyBoYXMgbm90IGJlZW4gc2V0IGV4cGxpY2l0bHkgZnJv
bSB0aGUgY21kbGluZQorICAgICAgICAgICAgICAgICAgICAvLyBvciB2aWEgU2V0Q29tbWFuZExp
bmVPcHRpb24uCisKKyAgLy8gbnVsbHB0ciBmb3IgQUJTTF9GTEFHLiAgQSBwb2ludGVyIHRvIHRo
ZSBmbGFnJ3MgY3VycmVudCB2YWx1ZQorICAvLyBvdGhlcndpc2UuICBFLmcuLCBmb3IgREVGSU5F
X2ludDMyKGZvbywgLi4uKSwgZmxhZ19wdHIgd2lsbCBiZQorICAvLyAmRkxBR1NfZm9vLgorICBj
b25zdCB2b2lkKiBmbGFnX3B0cjsKK307CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9p
ZCBGaWxsQ29tbWFuZExpbmVGbGFnSW5mbyhDb21tYW5kTGluZUZsYWcqIGZsYWcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRMaW5lRmxhZ0luZm8qIHJlc3VsdCk7CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29tbWFuZExpbmVGbGFnKiBGaW5kQ29tbWFuZExpbmVG
bGFnKGFic2w6OnN0cmluZ192aWV3IG5hbWUpOworQ29tbWFuZExpbmVGbGFnKiBGaW5kUmV0aXJl
ZEZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSk7CisKKy8vIEV4ZWN1dGVzIHNwZWNpZmllZCB2
aXNpdG9yIGZvciBlYWNoIG5vbi1yZXRpcmVkIGZsYWcgaW4gdGhlIHJlZ2lzdHJ5LgorLy8gUmVx
dWlyZXMgdGhlIGNhbGxlciBob2xkIHRoZSByZWdpc3RyeSBsb2NrLgordm9pZCBGb3JFYWNoRmxh
Z1VubG9ja2VkKHN0ZDo6ZnVuY3Rpb248dm9pZChDb21tYW5kTGluZUZsYWcqKT4gdmlzaXRvcik7
CisvLyBFeGVjdXRlcyBzcGVjaWZpZWQgdmlzaXRvciBmb3IgZWFjaCBub24tcmV0aXJlZCBmbGFn
IGluIHRoZSByZWdpc3RyeS4gV2hpbGUKKy8vIGNhbGxiYWNrIGFyZSBleGVjdXRlZCwgdGhlIHJl
Z2lzdHJ5IGlzIGxvY2tlZCBhbmQgY2FuJ3QgYmUgY2hhbmdlZC4KK3ZvaWQgRm9yRWFjaEZsYWco
c3RkOjpmdW5jdGlvbjx2b2lkKENvbW1hbmRMaW5lRmxhZyopPiB2aXNpdG9yKTsKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisvLyBTdG9yZSB0aGUgbGlzdCBvZiBhbGwgZmxhZ3MgaW4gKk9V
VFBVVCwgc29ydGVkIGJ5IGZpbGUuCit2b2lkIEdldEFsbEZsYWdzKHN0ZDo6dmVjdG9yPENvbW1h
bmRMaW5lRmxhZ0luZm8+KiBPVVRQVVQpOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jv
b2wgUmVnaXN0ZXJDb21tYW5kTGluZUZsYWcoQ29tbWFuZExpbmVGbGFnKik7CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vIFJldGlyZWQgcmVnaXN0cmF0aW9uczoKKy8vCisvLyBSZXRpcmVk
IGZsYWcgcmVnaXN0cmF0aW9ucyBhcmUgdHJlYXRlZCBzcGVjaWFsbHkuIEEgJ3JldGlyZWQnIGZs
YWcgaXMKKy8vIHByb3ZpZGVkIG9ubHkgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBhdXRvbWF0ZWQg
aW52b2NhdGlvbnMgdGhhdCBzdGlsbAorLy8gbmFtZSBpdC4gIEEgJ3JldGlyZWQnIGZsYWc6Cisv
LyAgIC0gaXMgbm90IGJvdW5kIHRvIGEgQysrIEZMQUdTXyByZWZlcmVuY2UuCisvLyAgIC0gaGFz
IGEgdHlwZSBhbmQgYSB2YWx1ZSwgYnV0IHRoYXQgdmFsdWUgaXMgaW50ZW50aW9uYWxseSBpbmFj
Y2Vzc2libGUuCisvLyAgIC0gZG9lcyBub3QgYXBwZWFyIGluIC0taGVscCBtZXNzYWdlcy4KKy8v
ICAgLSBpcyBmdWxseSBzdXBwb3J0ZWQgYnkgX2FsbF8gZmxhZyBwYXJzaW5nIHJvdXRpbmVzLgor
Ly8gICAtIGNvbnN1bWVzIGFyZ3Mgbm9ybWFsbHksIGFuZCBjb21wbGFpbnMgYWJvdXQgdHlwZSBt
aXNtYXRjaGVzIGluIGl0cworLy8gICAgIGFyZ3VtZW50LgorLy8gICAtIGVtaXRzIGEgY29tcGxh
aW50IGJ1dCBkb2VzIG5vdCBkaWUgKGUuZy4gTE9HKEVSUk9SKSkgaWYgaXQgaXMKKy8vICAgICBh
Y2Nlc3NlZCBieSBuYW1lIHRocm91Z2ggdGhlIGZsYWdzIEFQSSBmb3IgcGFyc2luZyBvciBvdGhl
cndpc2UuCisvLworLy8gVGhlIHJlZ2lzdHJhdGlvbnMgZm9yIGEgZmxhZyBoYXBwZW4gaW4gYW4g
dW5zcGVjaWZpZWQgb3JkZXIgYXMgdGhlCisvLyBpbml0aWFsaXplcnMgZm9yIHRoZSBuYW1lc3Bh
Y2Utc2NvcGUgb2JqZWN0cyBvZiBhIHByb2dyYW0gYXJlIHJ1bi4KKy8vIEFueSBudW1iZXIgb2Yg
d2VhayByZWdpc3RyYXRpb25zIGZvciBhIGZsYWcgY2FuIHdlYWtseSBkZWZpbmUgdGhlIGZsYWcu
CisvLyBPbmUgbm9uLXdlYWsgcmVnaXN0cmF0aW9uIHdpbGwgdXBncmFkZSB0aGUgZmxhZyBmcm9t
IHdlYWsgdG8gbm9uLXdlYWsuCisvLyBGdXJ0aGVyIHdlYWsgcmVnaXN0cmF0aW9ucyBvZiBhIG5v
bi13ZWFrIGZsYWcgYXJlIGlnbm9yZWQuCisvLworLy8gVGhpcyBtZWNoYW5pc20gaXMgZGVzaWdu
ZWQgdG8gc3VwcG9ydCBtb3ZpbmcgZGVhZCBmbGFncyBpbnRvIGEKKy8vICdncmF2ZXlhcmQnIGxp
YnJhcnkuICBBbiBleGFtcGxlIG1pZ3JhdGlvbjoKKy8vCisvLyAgIDA6IFJlbW92ZSByZWZlcmVu
Y2VzIHRvIHRoaXMgRkxBR1NfZmxhZ25hbWUgaW4gdGhlIEMrKyBjb2RlYmFzZS4KKy8vICAgMTog
UmVnaXN0ZXIgYXMgJ3JldGlyZWQnIGluIG9sZF9saWIuCisvLyAgIDI6IE1ha2Ugb2xkX2xpYiBk
ZXBlbmQgb24gZ3JhdmV5YXJkLgorLy8gICAzOiBBZGQgYSByZWR1bmRhbnQgJ3JldGlyZWQnIHJl
Z2lzdHJhdGlvbiB0byBncmF2ZXlhcmQuCisvLyAgIDQ6IFJlbW92ZSB0aGUgb2xkX2xpYiAncmV0
aXJlZCcgcmVnaXN0cmF0aW9uLgorLy8gICA1OiBFdmVudHVhbGx5IGRlbGV0ZSB0aGUgZ3JhdmV5
YXJkIHJlZ2lzdHJhdGlvbiBlbnRpcmVseS4KKy8vCisvLyBSZXR1cm5zIGJvb2wgdG8gZW5hYmxl
IHVzZSBpbiBuYW1lc3BhY2Utc2NvcGUgaW5pdGlhbGl6ZXJzLgorLy8gRm9yIGV4YW1wbGU6Cisv
LworLy8gICBzdGF0aWMgY29uc3QgYm9vbCBkdW1teSA9IGJhc2U6OlJldGlyZWRGbGFnPGludDMy
X3Q+KCJteWZsYWciKTsKKy8vCisvLyBPciB0byBkZWNsYXJlIHNldmVyYWwgYXQgb25jZToKKy8v
CisvLyAgIHN0YXRpYyBib29sIGR1bW1pZXNbXSA9IHsKKy8vICAgICAgIGJhc2U6OlJldGlyZWRG
bGFnPHN0ZDo6c3RyaW5nPigic29tZV9zdHJpbmdfZmxhZyIpLAorLy8gICAgICAgYmFzZTo6UmV0
aXJlZEZsYWc8ZG91YmxlPigic29tZV9kb3VibGVfZmxhZyIpLAorLy8gICAgICAgYmFzZTo6UmV0
aXJlZEZsYWc8aW50MzJfdD4oInNvbWVfaW50MzJfZmxhZyIpCisvLyAgIH07CisKKy8vIFJldGly
ZSBmbGFnIHdpdGggbmFtZSAibmFtZSIgYW5kIHR5cGUgaW5kaWNhdGVkIGJ5IG9wcy4KK2Jvb2wg
UmV0aXJlKEZsYWdPcEZuIG9wcywgRmxhZ01hcnNoYWxsaW5nT3BGbiBtYXJzaGFsbGluZ19vcHMs
CisgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lKTsKKworLy8gUmVnaXN0ZXJlZCBhIHJldGly
ZWQgZmxhZyB3aXRoIG5hbWUgJ2ZsYWdfbmFtZScgYW5kIHR5cGUgJ1QnLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitpbmxpbmUgYm9vbCBSZXRpcmVkRmxhZyhjb25zdCBjaGFyKiBmbGFnX25hbWUp
IHsKKyAgcmV0dXJuIGZsYWdzX2ludGVybmFsOjpSZXRpcmUoZmxhZ3NfaW50ZXJuYWw6OkZsYWdP
cHM8VD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzX2ludGVybmFsOjpG
bGFnTWFyc2hhbGxpbmdPcHM8VD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdfbmFtZSk7Cit9CisKKy8vIElmIHRoZSBmbGFnIGlzIHJldGlyZWQsIHJldHVybnMgdHJ1ZSBh
bmQgaW5kaWNhdGVzIGluIHwqdHlwZV9pc19ib29sfAorLy8gd2hldGhlciB0aGUgdHlwZSBvZiB0
aGUgcmV0aXJlZCBmbGFnIGlzIGEgYm9vbC4KKy8vIE9ubHkgdG8gYmUgY2FsbGVkIGJ5IGNvZGUg
dGhhdCBuZWVkcyB0byBleHBsaWNpdGx5IGlnbm9yZSByZXRpcmVkIGZsYWdzLgorYm9vbCBJc1Jl
dGlyZWRGbGFnKGFic2w6OnN0cmluZ192aWV3IG5hbWUsIGJvb2wqIHR5cGVfaXNfYm9vbCk7CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFNhdmVzIHRoZSBzdGF0ZXMgKHZhbHVlLCBkZWZh
dWx0IHZhbHVlLCB3aGV0aGVyIHRoZSB1c2VyIGhhcyBzZXQKKy8vIHRoZSBmbGFnLCByZWdpc3Rl
cmVkIHZhbGlkYXRvcnMsIGV0Yykgb2YgYWxsIGZsYWdzLCBhbmQgcmVzdG9yZXMKKy8vIHRoZW0g
d2hlbiB0aGUgRmxhZ1NhdmVyIGlzIGRlc3Ryb3llZC4KKy8vCisvLyBUaGlzIGNsYXNzIGlzIHRo
cmVhZC1zYWZlLiAgSG93ZXZlciwgaXRzIGRlc3RydWN0b3Igd3JpdGVzIHRvCisvLyBleGFjdGx5
IHRoZSBzZXQgb2YgZmxhZ3MgdGhhdCBoYXZlIGNoYW5nZWQgdmFsdWUgZHVyaW5nIGl0cworLy8g
bGlmZXRpbWUsIHNvIGNvbmN1cnJlbnQgX2RpcmVjdF8gYWNjZXNzIHRvIHRob3NlIGZsYWdzCisv
LyAoaS5lLiBGTEFHU19mb28gaW5zdGVhZCBvZiB7R2V0LFNldH1Db21tYW5kTGluZU9wdGlvbigp
KSBpcyB1bnNhZmUuCisKK2NsYXNzIEZsYWdTYXZlciB7CisgcHVibGljOgorICBGbGFnU2F2ZXIo
KTsKKyAgfkZsYWdTYXZlcigpOworCisgIEZsYWdTYXZlcihjb25zdCBGbGFnU2F2ZXImKSA9IGRl
bGV0ZTsKKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRmxhZ1NhdmVyJikgPSBkZWxldGU7CisKKyAg
Ly8gUHJldmVudHMgc2F2ZXIgZnJvbSByZXN0b3JpbmcgdGhlIHNhdmVkIHN0YXRlIG9mIGZsYWdz
LgorICB2b2lkIElnbm9yZSgpOworCisgcHJpdmF0ZToKKyAgY2xhc3MgRmxhZ1NhdmVySW1wbCog
aW1wbF87ICAvLyB3ZSB1c2UgcGltcGwgaGVyZSB0byBrZWVwIEFQSSBzdGVhZHkKK307CisKK30g
IC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2Vu
ZGlmICAvLyBBQlNMX0ZMQUdTX0lOVEVSTkFMX1JFR0lTVFJZX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9mbGFncy9pbnRlcm5hbC90eXBlX2VyYXNlZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3R5
cGVfZXJhc2VkLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5ODQyOTFjODdjN2ZmZDdhNTRmZTlhOTRmMDI1ZWU2
MWQxZjBhNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2Vy
YXNlZC5jYwpAQCAtMCwwICsxLDEwNiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2VyYXNl
ZC5oIgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5j
bHVkZSAiYWJzbC9mbGFncy9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3VzYWdlX2Nv
bmZpZy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7CisKK2Jvb2wgR2V0Q29tbWFuZExpbmVP
cHRpb24oYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSwgc3RkOjpzdHJpbmcqIHZhbHVlKSB7CisgIGlm
IChuYW1lLmVtcHR5KCkpIHJldHVybiBmYWxzZTsKKyAgYXNzZXJ0KHZhbHVlKTsKKworICBDb21t
YW5kTGluZUZsYWcqIGZsYWcgPSBmbGFnc19pbnRlcm5hbDo6RmluZENvbW1hbmRMaW5lRmxhZyhu
YW1lKTsKKyAgaWYgKGZsYWcgPT0gbnVsbHB0ciB8fCBmbGFnLT5Jc1JldGlyZWQoKSkgeworICAg
IHJldHVybiBmYWxzZTsKKyAgfQorCisgICp2YWx1ZSA9IGZsYWctPkN1cnJlbnRWYWx1ZSgpOwor
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHZXRDb21tYW5kTGluZUZsYWdJbmZvKGFic2w6OnN0
cmluZ192aWV3IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZExpbmVG
bGFnSW5mbyogT1VUUFVUKSB7CisgIGlmIChuYW1lLmVtcHR5KCkpIHJldHVybiBmYWxzZTsKKwor
ICBDb21tYW5kTGluZUZsYWcqIGZsYWcgPSBmbGFnc19pbnRlcm5hbDo6RmluZENvbW1hbmRMaW5l
RmxhZyhuYW1lKTsKKyAgaWYgKGZsYWcgPT0gbnVsbHB0ciB8fCBmbGFnLT5Jc1JldGlyZWQoKSkg
eworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGFzc2VydChPVVRQVVQpOworICBGaWxsQ29t
bWFuZExpbmVGbGFnSW5mbyhmbGFnLCBPVVRQVVQpOworICByZXR1cm4gdHJ1ZTsKK30KKworQ29t
bWFuZExpbmVGbGFnSW5mbyBHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JEaWUoYWJzbDo6c3RyaW5n
X3ZpZXcgbmFtZSkgeworICBDb21tYW5kTGluZUZsYWdJbmZvIGluZm87CisgIGlmICghR2V0Q29t
bWFuZExpbmVGbGFnSW5mbyhuYW1lLCAmaW5mbykpIHsKKyAgICBBQlNMX0lOVEVSTkFMX0xPRyhG
QVRBTCwgYWJzbDo6U3RyQ2F0KCJGbGFnICciLCBuYW1lLCAiJyBkb2VzIG5vdCBleGlzdCIpKTsK
KyAgfQorICByZXR1cm4gaW5mbzsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBTZXRDb21t
YW5kTGluZU9wdGlvbihhYnNsOjpzdHJpbmdfdmlldyBuYW1lLCBhYnNsOjpzdHJpbmdfdmlldyB2
YWx1ZSkgeworICByZXR1cm4gU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZShuYW1lLCB2YWx1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfaW50ZXJuYWw6
OlNFVF9GTEFHU19WQUxVRSk7Cit9CisKK2Jvb2wgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9k
ZShhYnNsOjpzdHJpbmdfdmlldyBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFic2w6OnN0cmluZ192aWV3IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZsYWdTZXR0aW5nTW9kZSBzZXRfbW9kZSkgeworICBDb21tYW5kTGluZUZsYWcqIGZs
YWcgPSBmbGFnc19pbnRlcm5hbDo6RmluZENvbW1hbmRMaW5lRmxhZyhuYW1lKTsKKworICBpZiAo
IWZsYWcgfHwgZmxhZy0+SXNSZXRpcmVkKCkpIHJldHVybiBmYWxzZTsKKworICBzdGQ6OnN0cmlu
ZyBlcnJvcjsKKyAgaWYgKCFmbGFnLT5TZXRGcm9tU3RyaW5nKHZhbHVlLCBzZXRfbW9kZSwga1By
b2dyYW1tYXRpY0NoYW5nZSwgJmVycm9yKSkgeworICAgIC8vIEVycm9ycyBoZXJlIGFyZSBhbGwg
b2YgdGhlIGZvcm06IHRoZSBwcm92aWRlZCBuYW1lIHdhcyBhIHJlY29nbml6ZWQKKyAgICAvLyBm
bGFnLCBidXQgdGhlIHZhbHVlIHdhcyBpbnZhbGlkIChiYWQgdHlwZSwgb3IgdmFsaWRhdGlvbiBm
YWlsZWQpLgorICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVycm9yKGVycm9yLCBmYWxz
ZSk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK2Jvb2wgSXNWYWxpZEZsYWdWYWx1ZShhYnNsOjpzdHJpbmdfdmlldyBuYW1l
LCBhYnNsOjpzdHJpbmdfdmlldyB2YWx1ZSkgeworICBDb21tYW5kTGluZUZsYWcqIGZsYWcgPSBm
bGFnc19pbnRlcm5hbDo6RmluZENvbW1hbmRMaW5lRmxhZyhuYW1lKTsKKworICByZXR1cm4gZmxh
ZyAhPSBudWxscHRyICYmCisgICAgICAgICAoZmxhZy0+SXNSZXRpcmVkKCkgfHwgZmxhZy0+VmFs
aWRhdGVJbnB1dFZhbHVlKHZhbHVlKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgU3Bl
Y2lmaWVkT25Db21tYW5kTGluZShhYnNsOjpzdHJpbmdfdmlldyBuYW1lKSB7CisgIENvbW1hbmRM
aW5lRmxhZyogZmxhZyA9IGZsYWdzX2ludGVybmFsOjpGaW5kQ29tbWFuZExpbmVGbGFnKG5hbWUp
OworICBpZiAoZmxhZyAhPSBudWxscHRyICYmICFmbGFnLT5Jc1JldGlyZWQoKSkgeworICAgIHJl
dHVybiBmbGFnLT5Jc1NwZWNpZmllZE9uQ29tbWFuZExpbmUoKTsKKyAgfQorICByZXR1cm4gZmFs
c2U7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNl
IGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3R5cGVfZXJhc2VkLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2VyYXNlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0OWQzNmI5ZjMz
ZjA0OWYzYmJkMTI2NGEzY2M1MDY0M2FkZGYyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9m
bGFncy9pbnRlcm5hbC90eXBlX2VyYXNlZC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0ZMQUdTX0lO
VEVSTkFMX1RZUEVfRVJBU0VEX0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfSU5URVJOQUxfVFlQRV9F
UkFTRURfSF8KKworI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50
ZXJuYWwvY29tbWFuZGxpbmVmbGFnLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9y
ZWdpc3RyeS5oIgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUmVnaXN0cnkgaW50ZXJmYWNlcyBvcGVy
YXRpbmcgb24gdHlwZSBlcmFzZWQgaGFuZGxlcy4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNw
YWNlIGZsYWdzX2ludGVybmFsIHsKKworLy8gSWYgYSBmbGFnIG5hbWVkICJuYW1lIiBleGlzdHMs
IHN0b3JlIGl0cyBjdXJyZW50IHZhbHVlIGluICpPVVRQVVQKKy8vIGFuZCByZXR1cm4gdHJ1ZS4g
IEVsc2UgcmV0dXJuIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKk9VVFBVVC4KKy8vIFRocmVhZC1z
YWZlLgorYm9vbCBHZXRDb21tYW5kTGluZU9wdGlvbihhYnNsOjpzdHJpbmdfdmlldyBuYW1lLCBz
dGQ6OnN0cmluZyogdmFsdWUpOworCisvLyBJZiBhIGZsYWcgbmFtZWQgIm5hbWUiIGV4aXN0cywg
c3RvcmUgaXRzIGluZm9ybWF0aW9uIGluICpPVVRQVVQKKy8vIGFuZCByZXR1cm4gdHJ1ZS4gIEVs
c2UgcmV0dXJuIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKk9VVFBVVC4KKy8vIFRocmVhZC1zYWZl
LgorYm9vbCBHZXRDb21tYW5kTGluZUZsYWdJbmZvKGFic2w6OnN0cmluZ192aWV3IG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZExpbmVGbGFnSW5mbyogT1VUUFVUKTsK
KworLy8gUmV0dXJucyB0aGUgQ29tbWFuZExpbmVGbGFnSW5mbyBvZiB0aGUgZmxhZ25hbWUuICBl
eGl0KCkgd2l0aCBhbgorLy8gZXJyb3IgY29kZSBpZiBuYW1lIG5vdCBmb3VuZC4KKy8vIFRocmVh
ZC1zYWZlLgorQ29tbWFuZExpbmVGbGFnSW5mbyBHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JEaWUo
YWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSk7CisKKy8vIFNldCB0aGUgdmFsdWUgb2YgdGhlIGZsYWcg
bmFtZWQgIm5hbWUiIHRvIHZhbHVlLiAgSWYgc3VjY2Vzc2Z1bCwKKy8vIHJldHVybnMgdHJ1ZS4g
IElmIG5vdCBzdWNjZXNzZnVsIChlLmcuLCB0aGUgZmxhZyB3YXMgbm90IGZvdW5kIG9yCisvLyB0
aGUgdmFsdWUgaXMgbm90IGEgdmFsaWQgdmFsdWUpLCByZXR1cm5zIGZhbHNlLgorLy8gVGhyZWFk
LXNhZmUuCitib29sIFNldENvbW1hbmRMaW5lT3B0aW9uKGFic2w6OnN0cmluZ192aWV3IG5hbWUs
IGFic2w6OnN0cmluZ192aWV3IHZhbHVlKTsKKworYm9vbCBTZXRDb21tYW5kTGluZU9wdGlvbldp
dGhNb2RlKGFic2w6OnN0cmluZ192aWV3IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmxhZ1NldHRpbmdNb2RlIHNldF9tb2RlKTsKKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisvLyBSZXR1cm5zIHRydWUgaWZmIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIHRydWU6CisvLyAoYSkgIm5hbWUiIG5hbWVzIGEgcmVnaXN0ZXJlZCBmbGFnCisv
LyAoYikgInZhbHVlIiBjYW4gYmUgcGFyc2VkIHN1Y2Nlc2Z1bGx5IGFjY29yZGluZyB0byB0aGUg
dHlwZSBvZiB0aGUgZmxhZworLy8gKGMpIHBhcnNlZCB2YWx1ZSBwYXNzZXMgYW55IHZhbGlkYXRv
ciBhc3NvY2lhdGVkIHdpdGggdGhlIGZsYWcKK2Jvb2wgSXNWYWxpZEZsYWdWYWx1ZShhYnNsOjpz
dHJpbmdfdmlldyBuYW1lLCBhYnNsOjpzdHJpbmdfdmlldyB2YWx1ZSk7CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworLy8gUmV0dXJucyB0cnVlIGlmZiBhIGZsYWcgbmFtZWQgIm5hbWUiIHdh
cyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZQorLy8gKGVpdGhlciBkaXJlY3RseSwgb3Ig
dmlhIG9uZSBvZiAtLWZsYWdmaWxlIG9yIC0tZnJvbWVudiBvciAtLXRyeWZyb21lbnYpLgorLy8K
Ky8vIEFueSBub24tY29tbWFuZC1saW5lIG1vZGlmaWNhdGlvbiBvZiB0aGUgZmxhZyBkb2VzIG5v
dCBhZmZlY3QgdGhlCisvLyByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbi4gIFNvIGZvciBleGFtcGxl
LCBpZiBhIGZsYWcgd2FzIHBhc3NlZCBvbgorLy8gdGhlIGNvbW1hbmQgbGluZSBidXQgdGhlbiBy
ZXNldCB2aWEgU0VUX0ZMQUdTX0RFRkFVTFQsIHRoaXMKKy8vIGZ1bmN0aW9uIHdpbGwgc3RpbGwg
cmV0dXJuIHRydWUuCitib29sIFNwZWNpZmllZE9uQ29tbWFuZExpbmUoYWJzbDo6c3RyaW5nX3Zp
ZXcgbmFtZSk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gSWYgYSBmbGFnIHdpdGgg
c3BlY2lmaWVkICJuYW1lIiBleGlzdHMgYW5kIGhhcyB0eXBlIFQsIHN0b3JlCisvLyBpdHMgY3Vy
cmVudCB2YWx1ZSBpbiAqZHN0IGFuZCByZXR1cm4gdHJ1ZS4gIEVsc2UgcmV0dXJuIGZhbHNlCisv
LyB3aXRob3V0IHRvdWNoaW5nICpkc3QuICBUIG11c3Qgb2JleSBhbGwgb2YgdGhlIHJlcXVpcmVt
ZW50cyBmb3IKKy8vIHR5cGVzIHBhc3NlZCB0byBERUZJTkVfRkxBRy4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgoraW5saW5lIGJvb2wgR2V0QnlOYW1lKGFic2w6OnN0cmluZ192aWV3IG5hbWUsIFQq
IGRzdCkgeworICBDb21tYW5kTGluZUZsYWcqIGZsYWcgPSBmbGFnc19pbnRlcm5hbDo6RmluZENv
bW1hbmRMaW5lRmxhZyhuYW1lKTsKKyAgaWYgKCFmbGFnKSByZXR1cm4gZmFsc2U7CisKKyAgaWYg
KGF1dG8gdmFsID0gZmxhZy0+R2V0PFQ+KCkpIHsKKyAgICAqZHN0ID0gKnZhbDsKKyAgICByZXR1
cm4gdHJ1ZTsKKyAgfQorCisgIHJldHVybiBmYWxzZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGZs
YWdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfRkxB
R1NfSU5URVJOQUxfVFlQRV9FUkFTRURfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVy
bmFsL3R5cGVfZXJhc2VkX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2VyYXNl
ZF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjNzQ5YTYwNzU0ODVlMGJmNWU4NWVmNWRjZjJjMzYwMzll
ODNkNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2VyYXNl
ZF90ZXN0LmNjCkBAIC0wLDAgKzEsMTQ3IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC90eXBlX2Vy
YXNlZC5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
I2luY2x1ZGUgImFic2wvZmxhZ3MvZmxhZy5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9y
eS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisKK0FCU0xfRkxBRyhpbnQs
IGludF9mbGFnLCAxLCAiaW50X2ZsYWcgaGVscCIpOworQUJTTF9GTEFHKHN0ZDo6c3RyaW5nLCBz
dHJpbmdfZmxhZywgImRmbHQiLCAic3RyaW5nX2ZsYWcgaGVscCIpOworQUJTTF9SRVRJUkVEX0ZM
QUcoYm9vbCwgYm9vbF9yZXRpcmVkX2ZsYWcsIGZhbHNlLCAiYm9vbF9yZXRpcmVkX2ZsYWcgaGVs
cCIpOworCituYW1lc3BhY2UgeworCituYW1lc3BhY2UgZmxhZ3MgPSBhYnNsOjpmbGFnc19pbnRl
cm5hbDsKKworY2xhc3MgVHlwZUVyYXNlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cisg
cHJvdGVjdGVkOgorICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgeyBmbGFnX3NhdmVyXyA9IGFic2w6
Om1ha2VfdW5pcXVlPGZsYWdzOjpGbGFnU2F2ZXI+KCk7IH0KKyAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlIHsgZmxhZ19zYXZlcl8ucmVzZXQoKTsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjp1bmlx
dWVfcHRyPGZsYWdzOjpGbGFnU2F2ZXI+IGZsYWdfc2F2ZXJfOworfTsKKworLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworVEVTVF9GKFR5cGVFcmFzZWRUZXN0LCBUZXN0R2V0Q29tbWFuZExpbmVPcHRpb24pIHsK
KyAgc3RkOjpzdHJpbmcgdmFsdWU7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRDb21tYW5kTGlu
ZU9wdGlvbigiaW50X2ZsYWciLCAmdmFsdWUpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAiMSIpOwor
CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRDb21tYW5kTGluZU9wdGlvbigic3RyaW5nX2ZsYWci
LCAmdmFsdWUpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAiZGZsdCIpOworCisgIEVYUEVDVF9GQUxT
RShmbGFnczo6R2V0Q29tbWFuZExpbmVPcHRpb24oImJvb2xfcmV0aXJlZF9mbGFnIiwgJnZhbHVl
KSk7CisKKyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpHZXRDb21tYW5kTGluZU9wdGlvbigidW5rbm93
bl9mbGFnIiwgJnZhbHVlKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihUeXBlRXJh
c2VkVGVzdCwgVGVzdFNldENvbW1hbmRMaW5lT3B0aW9uKSB7CisgIEVYUEVDVF9UUlVFKGZsYWdz
OjpTZXRDb21tYW5kTGluZU9wdGlvbigiaW50X2ZsYWciLCAiMTAxIikpOworICBFWFBFQ1RfRVEo
YWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDEwMSk7CisKKyAgRVhQRUNUX1RSVUUoZmxh
Z3M6OlNldENvbW1hbmRMaW5lT3B0aW9uKCJzdHJpbmdfZmxhZyIsICJhc2RmZ2giKSk7CisgIEVY
UEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3N0cmluZ19mbGFnKSwgImFzZGZnaCIpOworCisg
IEVYUEVDVF9GQUxTRShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRpb24oImJvb2xfcmV0aXJlZF9m
bGFnIiwgInRydWUiKSk7CisKKyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9w
dGlvbigidW5rbm93bl9mbGFnIiwgInRydWUiKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
U1RfRihUeXBlRXJhc2VkVGVzdCwgVGVzdFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGVfU0VU
X0ZMQUdTX1ZBTFVFKSB7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlv
bldpdGhNb2RlKCJpbnRfZmxhZyIsICIxMDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdTX1ZBTFVFKSk7CisgIEVYUEVD
VF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2ludF9mbGFnKSwgMTAxKTsKKworICBFWFBFQ1RfVFJV
RShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgic3RyaW5nX2ZsYWciLCAiYXNk
ZmdoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSkpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFH
U19zdHJpbmdfZmxhZyksICJhc2RmZ2giKTsKKworICBFWFBFQ1RfRkFMU0UoZmxhZ3M6OlNldENv
bW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoImJvb2xfcmV0aXJlZF9mbGFnIiwgInRydWUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNF
VF9GTEFHU19WQUxVRSkpOworCisgIEVYUEVDVF9GQUxTRShmbGFnczo6U2V0Q29tbWFuZExpbmVP
cHRpb25XaXRoTW9kZSgidW5rbm93bl9mbGFnIiwgInRydWUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNFVF9GTEFHU19WQUxVRSkp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoVHlwZUVyYXNlZFRlc3QsIFRlc3RTZXRD
b21tYW5kTGluZU9wdGlvbldpdGhNb2RlX1NFVF9GTEFHX0lGX0RFRkFVTFQpIHsKKyAgRVhQRUNU
X1RSVUUoZmxhZ3M6OlNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoImludF9mbGFnIiwgIjEw
MSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzOjpTRVRfRkxBR19JRl9ERUZBVUxUKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZM
QUdTX2ludF9mbGFnKSwgMTAxKTsKKworICAvLyBUaGlzIHNlbWFudGljIGlzIGJyb2tlbi4gV2Ug
cmV0dXJuIHRydWUgaW5zdGVhZCBvZiBmYWxzZS4gVmFsdWUgaXMgbm90CisgIC8vIHVwZGF0ZWQu
CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJpbnRf
ZmxhZyIsICIyMDIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFnczo6U0VUX0ZMQUdfSUZfREVGQVVMVCkpOworICBFWFBFQ1RfRVEoYWJzbDo6
R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDEwMSk7CisKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OlNl
dENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInN0cmluZ19mbGFnIiwgImFzZGZnaCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjpTRVRf
RkxBR19JRl9ERUZBVUxUKSk7CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3N0cmlu
Z19mbGFnKSwgImFzZGZnaCIpOworCisgIEVYUEVDVF9GQUxTRShmbGFnczo6U2V0Q29tbWFuZExp
bmVPcHRpb25XaXRoTW9kZSgiYm9vbF9yZXRpcmVkX2ZsYWciLCAidHJ1ZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdf
SUZfREVGQVVMVCkpOworCisgIEVYUEVDVF9GQUxTRShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRp
b25XaXRoTW9kZSgidW5rbm93bl9mbGFnIiwgInRydWUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNFVF9GTEFHX0lGX0RFRkFVTFQp
KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFR5cGVFcmFzZWRUZXN0LCBUZXN0U2V0
Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZV9TRVRfRkxBR1NfREVGQVVMVCkgeworICBFWFBFQ1Rf
VFJVRShmbGFnczo6U2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgiaW50X2ZsYWciLCAiMTAx
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxh
Z3M6OlNFVF9GTEFHU19ERUZBVUxUKSk7CisKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OlNldENvbW1h
bmRMaW5lT3B0aW9uV2l0aE1vZGUoInN0cmluZ19mbGFnIiwgImFzZGZnaCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOjpTRVRfRkxBR1Nf
REVGQVVMVCkpOworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19zdHJpbmdfZmxhZyks
ICJhc2RmZ2giKTsKKworICBFWFBFQ1RfRkFMU0UoZmxhZ3M6OlNldENvbW1hbmRMaW5lT3B0aW9u
V2l0aE1vZGUoImJvb2xfcmV0aXJlZF9mbGFnIiwgInRydWUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6OlNFVF9GTEFHU19ERUZBVUxU
KSk7CisKKyAgRVhQRUNUX0ZBTFNFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2Rl
KCJ1bmtub3duX2ZsYWciLCAidHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFnczo6U0VUX0ZMQUdTX0RFRkFVTFQpKTsKKworICAvLyBU
aGlzIHNob3VsZCBiZSBzdWNjZXNzZnVsbCwgc2luY2UgZmxhZyBpcyBzdGlsbCBpcyBub3Qgc2V0
CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJpbnRf
ZmxhZyIsICIyMDIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFnczo6U0VUX0ZMQUdfSUZfREVGQVVMVCkpOworICBFWFBFQ1RfRVEoYWJzbDo6
R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDIwMik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
U1RfRihUeXBlRXJhc2VkVGVzdCwgVGVzdElzVmFsaWRGbGFnVmFsdWUpIHsKKyAgRVhQRUNUX1RS
VUUoZmxhZ3M6OklzVmFsaWRGbGFnVmFsdWUoImludF9mbGFnIiwgIjU3IikpOworICBFWFBFQ1Rf
VFJVRShmbGFnczo6SXNWYWxpZEZsYWdWYWx1ZSgiaW50X2ZsYWciLCAiLTEwMSIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKGZsYWdzOjpJc1ZhbGlkRmxhZ1ZhbHVlKCJpbnRfZmxhZyIsICIxLjEiKSk7CisK
KyAgRVhQRUNUX1RSVUUoZmxhZ3M6OklzVmFsaWRGbGFnVmFsdWUoInN0cmluZ19mbGFnIiwgIiMl
XiMlXiQlREdIREckVyVhZHNmIikpOworCisgIEVYUEVDVF9UUlVFKGZsYWdzOjpJc1ZhbGlkRmxh
Z1ZhbHVlKCJib29sX3JldGlyZWRfZmxhZyIsICJ0cnVlIikpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxh
Z3MvaW50ZXJuYWwvdXNhZ2UuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMwNDg1MTRhZTBiOWJjOGIyNzJmZDdh
NTI5ZDhlOGU2ODY5YjJhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFs
L3VzYWdlLmNjCkBAIC0wLDAgKzEsMzgzIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFi
c2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlLmgi
CisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9m
bGFncy9mbGFnLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0aWwuaCIK
KyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5oIgorI2luY2x1ZGUg
ImFic2wvZmxhZ3MvdXNhZ2VfY29uZmlnLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2FzY2lp
LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3Mvc3RyX3NwbGl0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3Lmgi
CisjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIKKworQUJTTF9GTEFHKGJv
b2wsIGhlbHAsIGZhbHNlLAorICAgICAgICAgICJzaG93IGhlbHAgb24gaW1wb3J0YW50IGZsYWdz
IGZvciB0aGlzIGJpbmFyeSBbdGlwOiBhbGwgZmxhZ3MgY2FuICIKKyAgICAgICAgICAiaGF2ZSB0
d28gZGFzaGVzXSIpOworQUJTTF9GTEFHKGJvb2wsIGhlbHBmdWxsLCBmYWxzZSwgInNob3cgaGVs
cCBvbiBhbGwgZmxhZ3MiKTsKK0FCU0xfRkxBRyhib29sLCBoZWxwc2hvcnQsIGZhbHNlLAorICAg
ICAgICAgICJzaG93IGhlbHAgb24gb25seSB0aGUgbWFpbiBtb2R1bGUgZm9yIHRoaXMgcHJvZ3Jh
bSIpOworQUJTTF9GTEFHKGJvb2wsIGhlbHBwYWNrYWdlLCBmYWxzZSwKKyAgICAgICAgICAic2hv
dyBoZWxwIG9uIGFsbCBtb2R1bGVzIGluIHRoZSBtYWluIHBhY2thZ2UiKTsKK0FCU0xfRkxBRyhi
b29sLCB2ZXJzaW9uLCBmYWxzZSwgInNob3cgdmVyc2lvbiBhbmQgYnVpbGQgaW5mbyBhbmQgZXhp
dCIpOworQUJTTF9GTEFHKGJvb2wsIG9ubHlfY2hlY2tfYXJncywgZmFsc2UsICJleGl0IGFmdGVy
IGNoZWNraW5nIGFsbCBmbGFncyIpOworQUJTTF9GTEFHKHN0ZDo6c3RyaW5nLCBoZWxwb24sICIi
LAorICAgICAgICAgICJzaG93IGhlbHAgb24gdGhlIG1vZHVsZXMgbmFtZWQgYnkgdGhpcyBmbGFn
IHZhbHVlIik7CitBQlNMX0ZMQUcoc3RkOjpzdHJpbmcsIGhlbHBtYXRjaCwgIiIsCisgICAgICAg
ICAgInNob3cgaGVscCBvbiBtb2R1bGVzIHdob3NlIG5hbWUgY29udGFpbnMgdGhlIHNwZWNpZmll
ZCBzdWJzdHIiKTsKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVybmFs
IHsKK25hbWVzcGFjZSB7CisKKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBlbWl0IGFuIFhNTCBl
bGVtZW50IHdpdGggYHRhZ2AgYW5kIGB0ZXh0YC4KKy8vIEl0IGFkZHMgb3BlbmluZyBhbmQgY2xv
c2luZyB0YWdzIGFuZCBlc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgdGV4dC4KKy8v
IEZvciBleGFtcGxlOgorLy8gc3RkOjpjb3V0IDw8IFhNTEVsZW1lbnQoInRpdGxlIiwgIk1pbGsg
JiBDb29raWVzIik7CisvLyBwcmludHMgIjx0aXRsZT5NaWxrICZhbXA7IENvb2tpZXM8L3RpdGxl
PiIKK2NsYXNzIFhNTEVsZW1lbnQgeworIHB1YmxpYzoKKyAgWE1MRWxlbWVudChhYnNsOjpzdHJp
bmdfdmlldyB0YWcsIGFic2w6OnN0cmluZ192aWV3IHR4dCkKKyAgICAgIDogdGFnXyh0YWcpLCB0
eHRfKHR4dCkge30KKworICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0
cmVhbSYgb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTEVs
ZW1lbnQmIHhtbF9lbGVtKSB7CisgICAgb3V0IDw8ICI8IiA8PCB4bWxfZWxlbS50YWdfIDw8ICI+
IjsKKworICAgIGZvciAoYXV0byBjIDogeG1sX2VsZW0udHh0XykgeworICAgICAgc3dpdGNoIChj
KSB7CisgICAgICAgIGNhc2UgJyInOgorICAgICAgICAgIG91dCA8PCAiJnF1b3Q7IjsKKyAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnXCcnOgorICAgICAgICAgIG91dCA8PCAiJmFwb3M7
IjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnJic6CisgICAgICAgICAgb3V0IDw8
ICImYW1wOyI7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJzwnOgorICAgICAgICAg
IG91dCA8PCAiJmx0OyI7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJz4nOgorICAg
ICAgICAgIG91dCA8PCAiJmd0OyI7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgb3V0IDw8IGM7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIG91dCA8PCAiPC8iIDw8IHhtbF9lbGVtLnRhZ18gPDwgIj4iOworICB9CisK
KyBwcml2YXRlOgorICBhYnNsOjpzdHJpbmdfdmlldyB0YWdfOworICBhYnNsOjpzdHJpbmdfdmll
dyB0eHRfOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEhlbHBlciBjbGFzcyB0byBwcmV0dHkt
cHJpbnQgaW5mbyBhYm91dCBhIGZsYWcuCisKK2NsYXNzIEZsYWdIZWxwUHJldHR5UHJpbnRlciB7
CisgcHVibGljOgorICAvLyBQcmV0dHkgcHJpbnRlciBob2xkcyBvbiB0byB0aGUgc3RkOjpvc3Ry
ZWFtJiByZWZlcmVuY2UgdG8gZGlyZWN0IGFuIG91dHB1dAorICAvLyB0byB0aGF0IHN0cmVhbS4K
KyAgRmxhZ0hlbHBQcmV0dHlQcmludGVyKGludCBtYXhfbGluZV9sZW4sIHN0ZDo6b3N0cmVhbSog
b3V0KQorICAgICAgOiBvdXRfKCpvdXQpLAorICAgICAgICBtYXhfbGluZV9sZW5fKG1heF9saW5l
X2xlbiksCisgICAgICAgIGxpbmVfbGVuXygwKSwKKyAgICAgICAgZmlyc3RfbGluZV8odHJ1ZSkg
e30KKworICB2b2lkIFdyaXRlKGFic2w6OnN0cmluZ192aWV3IHN0ciwgYm9vbCB3cmFwX2xpbmUg
PSBmYWxzZSkgeworICAgIC8vIEVtcHR5IHN0ZDo6c3RyaW5nIC0gZG8gbm90aGluZy4KKyAgICBp
ZiAoc3RyLmVtcHR5KCkpIHJldHVybjsKKworICAgIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192
aWV3PiB0b2tlbnM7CisgICAgaWYgKHdyYXBfbGluZSkgeworICAgICAgZm9yIChhdXRvIGxpbmUg
OiBhYnNsOjpTdHJTcGxpdChzdHIsIGFic2w6OkJ5QW55Q2hhcigiXG5cciIpKSkgeworICAgICAg
ICBpZiAoIXRva2Vucy5lbXB0eSgpKSB7CisgICAgICAgICAgLy8gS2VlcCBsaW5lIHNlcGFyYXRv
cnMgaW4gdGhlIGlucHV0IHN0ZDo6c3RyaW5nLgorICAgICAgICAgIHRva2Vucy5wdXNoX2JhY2so
IlxuIik7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvIHRva2VuIDoKKyAgICAgICAgICAg
ICBhYnNsOjpTdHJTcGxpdChsaW5lLCBhYnNsOjpCeUFueUNoYXIoIiBcdCIpLCBhYnNsOjpTa2lw
RW1wdHkoKSkpIHsKKyAgICAgICAgICB0b2tlbnMucHVzaF9iYWNrKHRva2VuKTsKKyAgICAgICAg
fQorICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB0b2tlbnMucHVzaF9iYWNrKHN0cik7Cisg
ICAgfQorCisgICAgZm9yIChhdXRvIHRva2VuIDogdG9rZW5zKSB7CisgICAgICBib29sIG5ld19s
aW5lID0gKGxpbmVfbGVuXyA9PSAwKTsKKworICAgICAgLy8gUmVzcGVjdCBsaW5lIHNlcGFyYXRv
cnMgaW4gdGhlIGlucHV0IHN0ZDo6c3RyaW5nLgorICAgICAgaWYgKHRva2VuID09ICJcbiIpIHsK
KyAgICAgICAgRW5kTGluZSgpOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAg
Ly8gV3JpdGUgdGhlIHRva2VuLCBlbmRpbmcgdGhlIHN0ZDo6c3RyaW5nIGZpcnN0IGlmIG5lY2Vz
c2FyeS9wb3NzaWJsZS4KKyAgICAgIGlmICghbmV3X2xpbmUgJiYgKGxpbmVfbGVuXyArIHRva2Vu
LnNpemUoKSA+PSBtYXhfbGluZV9sZW5fKSkgeworICAgICAgICBFbmRMaW5lKCk7CisgICAgICAg
IG5ld19saW5lID0gdHJ1ZTsKKyAgICAgIH0KKworICAgICAgaWYgKG5ld19saW5lKSB7CisgICAg
ICAgIFN0YXJ0TGluZSgpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgb3V0XyA8PCAnICc7Cisg
ICAgICAgICsrbGluZV9sZW5fOworICAgICAgfQorCisgICAgICBvdXRfIDw8IHRva2VuOworICAg
ICAgbGluZV9sZW5fICs9IHRva2VuLnNpemUoKTsKKyAgICB9CisgIH0KKworICB2b2lkIFN0YXJ0
TGluZSgpIHsKKyAgICBpZiAoZmlyc3RfbGluZV8pIHsKKyAgICAgIG91dF8gPDwgIiAgICAiOwor
ICAgICAgbGluZV9sZW5fID0gNDsKKyAgICAgIGZpcnN0X2xpbmVfID0gZmFsc2U7CisgICAgfSBl
bHNlIHsKKyAgICAgIG91dF8gPDwgIiAgICAgICI7CisgICAgICBsaW5lX2xlbl8gPSA2OworICAg
IH0KKyAgfQorICB2b2lkIEVuZExpbmUoKSB7CisgICAgb3V0XyA8PCAnXG4nOworICAgIGxpbmVf
bGVuXyA9IDA7CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6b3N0cmVhbSYgb3V0XzsKKyAgY29u
c3QgaW50IG1heF9saW5lX2xlbl87CisgIGludCBsaW5lX2xlbl87CisgIGJvb2wgZmlyc3RfbGlu
ZV87Cit9OworCit2b2lkIEZsYWdIZWxwSHVtYW5SZWFkYWJsZShjb25zdCBmbGFnc19pbnRlcm5h
bDo6Q29tbWFuZExpbmVGbGFnJiBmbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojpvc3RyZWFtKiBvdXQpIHsKKyAgRmxhZ0hlbHBQcmV0dHlQcmludGVyIHByaW50ZXIoODAsIG91
dCk7ICAvLyBNYXggbGluZSBsZW5ndGggaXMgODAuCisKKyAgLy8gRmxhZyBuYW1lLgorICBwcmlu
dGVyLldyaXRlKGFic2w6OlN0ckNhdCgiLSIsIGZsYWcuTmFtZSgpKSk7CisKKyAgLy8gRmxhZyBo
ZWxwLgorICBwcmludGVyLldyaXRlKGFic2w6OlN0ckNhdCgiKCIsIGZsYWcuSGVscCgpLCAiKTsi
KSwgLyp3cmFwX2xpbmU9Ki90cnVlKTsKKworICAvLyBGbGFnIGRhdGEgdHlwZSAoZm9yIFYxIGZs
YWdzIG9ubHkpLgorICBpZiAoIWZsYWcuSXNBYnNlaWxGbGFnKCkgJiYgIWZsYWcuSXNSZXRpcmVk
KCkpIHsKKyAgICBwcmludGVyLldyaXRlKGFic2w6OlN0ckNhdCgidHlwZTogIiwgZmxhZy5UeXBl
bmFtZSgpLCAiOyIpKTsKKyAgfQorCisgIC8vIFRoZSBsaXN0ZWQgZGVmYXVsdCB2YWx1ZSB3aWxs
IGJlIHRoZSBhY3R1YWwgZGVmYXVsdCBmcm9tIHRoZSBmbGFnCisgIC8vIGRlZmluaXRpb24gaW4g
dGhlIG9yaWdpbmF0aW5nIHNvdXJjZSBmaWxlLCB1bmxlc3MgdGhlIHZhbHVlIGhhcworICAvLyBz
dWJzZXF1ZW50bHkgYmVlbiBtb2RpZmllZCB1c2luZyBTZXRDb21tYW5kTGluZU9wdGlvbigpIHdp
dGggbW9kZQorICAvLyBTRVRfRkxBR1NfREVGQVVMVC4KKyAgc3RkOjpzdHJpbmcgZGZsdF92YWwg
PSBmbGFnLkRlZmF1bHRWYWx1ZSgpOworICBpZiAoZmxhZy5Jc09mVHlwZTxzdGQ6OnN0cmluZz4o
KSkgeworICAgIGRmbHRfdmFsID0gYWJzbDo6U3RyQ2F0KCJcIiIsIGRmbHRfdmFsLCAiXCIiKTsK
KyAgfQorICBwcmludGVyLldyaXRlKGFic2w6OlN0ckNhdCgiZGVmYXVsdDogIiwgZGZsdF92YWws
ICI7IikpOworCisgIGlmIChmbGFnLklzTW9kaWZpZWQoKSkgeworICAgIHN0ZDo6c3RyaW5nIGN1
cnJfdmFsID0gZmxhZy5DdXJyZW50VmFsdWUoKTsKKyAgICBpZiAoZmxhZy5Jc09mVHlwZTxzdGQ6
OnN0cmluZz4oKSkgeworICAgICAgY3Vycl92YWwgPSBhYnNsOjpTdHJDYXQoIlwiIiwgY3Vycl92
YWwsICJcIiIpOworICAgIH0KKyAgICBwcmludGVyLldyaXRlKGFic2w6OlN0ckNhdCgiY3VycmVu
dGx5OiAiLCBjdXJyX3ZhbCwgIjsiKSk7CisgIH0KKworICBwcmludGVyLkVuZExpbmUoKTsKK30K
KworLy8gU2hvd3MgaGVscCBmb3IgZXZlcnkgZmlsZW5hbWUgd2hpY2ggbWF0Y2hlcyBhbnkgb2Yg
dGhlIGZpbHRlcnMKKy8vIElmIGZpbHRlcnMgYXJlIGVtcHR5LCBzaG93cyBoZWxwIGZvciBldmVy
eSBmaWxlLgorLy8gSWYgYSBmbGFnJ3MgaGVscCBtZXNzYWdlIGhhcyBiZWVuIHN0cmlwcGVkIChl
LmcuIGJ5IGFkZGluZyAnI2RlZmluZQorLy8gU1RSSVBfRkxBR19IRUxQIDEnIHRoZW4gdGhpcyBm
bGFnIHdpbGwgbm90IGJlIGRpc3BsYXllZCBieSAnLS1oZWxwJworLy8gYW5kIGl0cyB2YXJpYW50
cy4KK3ZvaWQgRmxhZ3NIZWxwSW1wbChzdGQ6Om9zdHJlYW0mIG91dCwgZmxhZ3NfaW50ZXJuYWw6
OkZsYWdLaW5kRmlsdGVyIGZpbHRlcl9jYiwKKyAgICAgICAgICAgICAgICAgICBIZWxwRm9ybWF0
IGZvcm1hdCwgYWJzbDo6c3RyaW5nX3ZpZXcgcHJvZ3JhbV91c2FnZV9tZXNzYWdlKSB7CisgIGlm
IChmb3JtYXQgPT0gSGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUpIHsKKyAgICBvdXQgPDwgZmxh
Z3NfaW50ZXJuYWw6OlNob3J0UHJvZ3JhbUludm9jYXRpb25OYW1lKCkgPDwgIjogIgorICAgICAg
ICA8PCBwcm9ncmFtX3VzYWdlX21lc3NhZ2UgPDwgIlxuXG4iOworICB9IGVsc2UgeworICAgIC8v
IFhNTCBzY2hlbWEgaXMgbm90IGEgcGFydCBvZiBvdXIgcHVibGljIEFQSSBmb3Igbm93LgorICAg
IG91dCA8PCAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz5cbiIKKyAgICAgICAgLy8gVGhlIGRvY3Vt
ZW50LgorICAgICAgICA8PCAiPEFsbEZsYWdzPlxuIgorICAgICAgICAvLyBUaGUgcHJvZ3JhbSBu
YW1lIGFuZCB1c2FnZS4KKyAgICAgICAgPDwgWE1MRWxlbWVudCgicHJvZ3JhbSIsIGZsYWdzX2lu
dGVybmFsOjpTaG9ydFByb2dyYW1JbnZvY2F0aW9uTmFtZSgpKQorICAgICAgICA8PCAnXG4nCisg
ICAgICAgIDw8IFhNTEVsZW1lbnQoInVzYWdlIiwgcHJvZ3JhbV91c2FnZV9tZXNzYWdlKSA8PCAn
XG4nOworICB9CisKKyAgLy8gTWFwIG9mIHBhY2thZ2UgbmFtZSB0bworICAvLyAgIG1hcCBvZiBm
aWxlIG5hbWUgdG8KKyAgLy8gICAgIHZlY3RvciBvZiBmbGFncyBpbiB0aGUgZmlsZS4KKyAgLy8g
VGhpcyBtYXAgaXMgdXNlZCB0byBvdXRwdXQgbWF0Y2hpbmcgZmxhZ3MgZ3JvdXBlZCBieSBwYWNr
YWdlIGFuZCBmaWxlCisgIC8vIG5hbWUuCisgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLAorICAgICAg
ICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8Y29uc3QgZmxhZ3NfaW50ZXJuYWw6OkNvbW1hbmRMaW5lRmxhZyo+Pj4KKyAgICAgIG1hdGNo
aW5nX2ZsYWdzOworCisgIGZsYWdzX2ludGVybmFsOjpGb3JFYWNoRmxhZyhbJl0oZmxhZ3NfaW50
ZXJuYWw6OkNvbW1hbmRMaW5lRmxhZyogZmxhZykgeworICAgIHN0ZDo6c3RyaW5nIGZsYWdfZmls
ZW5hbWUgPSBmbGFnLT5GaWxlbmFtZSgpOworCisgICAgLy8gSWdub3JlIHJldGlyZWQgZmxhZ3Mu
CisgICAgaWYgKGZsYWctPklzUmV0aXJlZCgpKSByZXR1cm47CisKKyAgICAvLyBJZiB0aGUgZmxh
ZyBoYXMgYmVlbiBzdHJpcHBlZCwgcHJldGVuZCB0aGF0IGl0IGRvZXNuJ3QgZXhpc3QuCisgICAg
aWYgKGZsYWctPkhlbHAoKSA9PSBmbGFnc19pbnRlcm5hbDo6a1N0cmlwcGVkRmxhZ0hlbHApIHJl
dHVybjsKKworICAgIC8vIE1ha2Ugc3VyZSBmbGFnIHNhdGlzZmllcyB0aGUgZmlsdGVyCisgICAg
aWYgKCFmaWx0ZXJfY2IgfHwgIWZpbHRlcl9jYihmbGFnX2ZpbGVuYW1lKSkgcmV0dXJuOworCisg
ICAgbWF0Y2hpbmdfZmxhZ3Nbc3RkOjpzdHJpbmcoZmxhZ3NfaW50ZXJuYWw6OlBhY2thZ2UoZmxh
Z19maWxlbmFtZSkpXQorICAgICAgICAgICAgICAgICAgW2ZsYWdfZmlsZW5hbWVdCisgICAgICAg
ICAgICAgICAgICAgICAgLnB1c2hfYmFjayhmbGFnKTsKKyAgfSk7CisKKyAgYWJzbDo6c3RyaW5n
X3ZpZXcKKyAgICAgIHBhY2thZ2Vfc2VwYXJhdG9yOyAgICAgICAgICAgICAvLyBjb250cm9scyBi
bGFuayBsaW5lcyBiZXR3ZWVuIHBhY2thZ2VzLgorICBhYnNsOjpzdHJpbmdfdmlldyBmaWxlX3Nl
cGFyYXRvcjsgIC8vIGNvbnRyb2xzIGJsYW5rIGxpbmVzIGJldHdlZW4gZmlsZXMuCisgIGZvciAo
Y29uc3QgYXV0byYgcGFja2FnZSA6IG1hdGNoaW5nX2ZsYWdzKSB7CisgICAgaWYgKGZvcm1hdCA9
PSBIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSkgeworICAgICAgb3V0IDw8IHBhY2thZ2Vfc2Vw
YXJhdG9yOworICAgICAgcGFja2FnZV9zZXBhcmF0b3IgPSAiXG5cbiI7CisgICAgfQorCisgICAg
ZmlsZV9zZXBhcmF0b3IgPSAiIjsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGZsYWdzX2luX2ZpbGUg
OiBwYWNrYWdlLnNlY29uZCkgeworICAgICAgaWYgKGZvcm1hdCA9PSBIZWxwRm9ybWF0OjprSHVt
YW5SZWFkYWJsZSkgeworICAgICAgICBvdXQgPDwgZmlsZV9zZXBhcmF0b3IgPDwgIiAgRmxhZ3Mg
ZnJvbSAiIDw8IGZsYWdzX2luX2ZpbGUuZmlyc3QKKyAgICAgICAgICAgIDw8ICI6XG4iOworICAg
ICAgICBmaWxlX3NlcGFyYXRvciA9ICJcbiI7CisgICAgICB9CisKKyAgICAgIGZvciAoY29uc3Qg
YXV0byogZmxhZyA6IGZsYWdzX2luX2ZpbGUuc2Vjb25kKSB7CisgICAgICAgIGZsYWdzX2ludGVy
bmFsOjpGbGFnSGVscChvdXQsICpmbGFnLCBmb3JtYXQpOworICAgICAgfQorICAgIH0KKyAgfQor
CisgIGlmIChmb3JtYXQgPT0gSGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUpIHsKKyAgICBpZiAo
ZmlsdGVyX2NiICYmIG1hdGNoaW5nX2ZsYWdzLmVtcHR5KCkpIHsKKyAgICAgIG91dCA8PCAiICBO
byBtb2R1bGVzIG1hdGNoZWQ6IHVzZSAtaGVscGZ1bGxcbiI7CisgICAgfQorICB9IGVsc2Ugewor
ICAgIC8vIFRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LgorICAgIG91dCA8PCAiPC9BbGxGbGFncz5c
biI7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBQcm9k
dWNlcyB0aGUgaGVscCBtZXNzYWdlIGRlc2NyaWJpbmcgc3BlY2lmaWMgZmxhZy4KK3ZvaWQgRmxh
Z0hlbHAoc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IGZsYWdzX2ludGVybmFsOjpDb21tYW5kTGlu
ZUZsYWcmIGZsYWcsCisgICAgICAgICAgICAgIEhlbHBGb3JtYXQgZm9ybWF0KSB7CisgIGlmIChm
b3JtYXQgPT0gSGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUpCisgICAgZmxhZ3NfaW50ZXJuYWw6
OkZsYWdIZWxwSHVtYW5SZWFkYWJsZShmbGFnLCAmb3V0KTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vIFByb2R1Y2VzIHRoZSBoZWxwIG1lc3NhZ2VzIGZvciBhbGwgZmxhZ3MgbWF0Y2hpbmcgdGhl
IGZpbHRlci4KKy8vIElmIGZpbHRlciBpcyBlbXB0eSBwcm9kdWNlcyBoZWxwIG1lc3NhZ2VzIGZv
ciBhbGwgZmxhZ3MuCit2b2lkIEZsYWdzSGVscChzdGQ6Om9zdHJlYW0mIG91dCwgYWJzbDo6c3Ry
aW5nX3ZpZXcgZmlsdGVyLCBIZWxwRm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAgICAgIGFic2w6
OnN0cmluZ192aWV3IHByb2dyYW1fdXNhZ2VfbWVzc2FnZSkgeworICBmbGFnc19pbnRlcm5hbDo6
RmxhZ0tpbmRGaWx0ZXIgZmlsdGVyX2NiID0gWyZdKGFic2w6OnN0cmluZ192aWV3IGZpbGVuYW1l
KSB7CisgICAgcmV0dXJuIGZpbHRlci5lbXB0eSgpIHx8IGZpbGVuYW1lLmZpbmQoZmlsdGVyKSAh
PSBhYnNsOjpzdHJpbmdfdmlldzo6bnBvczsKKyAgfTsKKyAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdz
SGVscEltcGwob3V0LCBmaWx0ZXJfY2IsIGZvcm1hdCwgcHJvZ3JhbV91c2FnZV9tZXNzYWdlKTsK
K30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENoZWNrcyBhbGwgdGhlICd1c2FnZScgY29tbWFuZCBs
aW5lIGZsYWdzIHRvIHNlZSBpZiBhbnkgaGF2ZSBiZWVuIHNldC4KKy8vIElmIHNvLCBoYW5kbGVz
IHRoZW0gYXBwcm9wcmlhdGVseS4KK2ludCBIYW5kbGVVc2FnZUZsYWdzKHN0ZDo6b3N0cmVhbSYg
b3V0LAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgcHJvZ3JhbV91c2Fn
ZV9tZXNzYWdlKSB7CisgIGlmIChhYnNsOjpHZXRGbGFnKEZMQUdTX2hlbHBzaG9ydCkpIHsKKyAg
ICBmbGFnc19pbnRlcm5hbDo6RmxhZ3NIZWxwSW1wbCgKKyAgICAgICAgb3V0LCBmbGFnc19pbnRl
cm5hbDo6R2V0VXNhZ2VDb25maWcoKS5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MsCisgICAgICAg
IEhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlLCBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpOworICAg
IHJldHVybiAxOworICB9CisKKyAgaWYgKGFic2w6OkdldEZsYWcoRkxBR1NfaGVscGZ1bGwpKSB7
CisgICAgLy8gc2hvdyBhbGwgb3B0aW9ucworICAgIGZsYWdzX2ludGVybmFsOjpGbGFnc0hlbHAo
b3V0LCAiIiwgSGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpOworICAgIHJldHVybiAxOworICB9CisK
KyAgaWYgKCFhYnNsOjpHZXRGbGFnKEZMQUdTX2hlbHBvbikuZW1wdHkoKSkgeworICAgIGZsYWdz
X2ludGVybmFsOjpGbGFnc0hlbHAoCisgICAgICAgIG91dCwgYWJzbDo6U3RyQ2F0KCIvIiwgYWJz
bDo6R2V0RmxhZyhGTEFHU19oZWxwb24pLCAiLiIpLAorICAgICAgICBIZWxwRm9ybWF0OjprSHVt
YW5SZWFkYWJsZSwgcHJvZ3JhbV91c2FnZV9tZXNzYWdlKTsKKyAgICByZXR1cm4gMTsKKyAgfQor
CisgIGlmICghYWJzbDo6R2V0RmxhZyhGTEFHU19oZWxwbWF0Y2gpLmVtcHR5KCkpIHsKKyAgICBm
bGFnc19pbnRlcm5hbDo6RmxhZ3NIZWxwKG91dCwgYWJzbDo6R2V0RmxhZyhGTEFHU19oZWxwbWF0
Y2gpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscEZvcm1hdDo6a0h1bWFuUmVh
ZGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtX3VzYWdlX21lc3Nh
Z2UpOworICAgIHJldHVybiAxOworICB9CisKKyAgaWYgKGFic2w6OkdldEZsYWcoRkxBR1NfaGVs
cCkpIHsKKyAgICBmbGFnc19pbnRlcm5hbDo6RmxhZ3NIZWxwSW1wbCgKKyAgICAgICAgb3V0LCBm
bGFnc19pbnRlcm5hbDo6R2V0VXNhZ2VDb25maWcoKS5jb250YWluc19oZWxwX2ZsYWdzLAorICAg
ICAgICBIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSwgcHJvZ3JhbV91c2FnZV9tZXNzYWdlKTsK
KworICAgIG91dCA8PCAiXG5UcnkgLS1oZWxwZnVsbCB0byBnZXQgYSBsaXN0IG9mIGFsbCBmbGFn
cy5cbiI7CisKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIGlmIChhYnNsOjpHZXRGbGFnKEZMQUdT
X2hlbHBwYWNrYWdlKSkgeworICAgIGZsYWdzX2ludGVybmFsOjpGbGFnc0hlbHBJbXBsKAorICAg
ICAgICBvdXQsIGZsYWdzX2ludGVybmFsOjpHZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBw
YWNrYWdlX2ZsYWdzLAorICAgICAgICBIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSwgcHJvZ3Jh
bV91c2FnZV9tZXNzYWdlKTsKKworICAgIG91dCA8PCAiXG5UcnkgLS1oZWxwZnVsbCB0byBnZXQg
YSBsaXN0IG9mIGFsbCBmbGFncy5cbiI7CisKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIGlmIChh
YnNsOjpHZXRGbGFnKEZMQUdTX3ZlcnNpb24pKSB7CisgICAgaWYgKGZsYWdzX2ludGVybmFsOjpH
ZXRVc2FnZUNvbmZpZygpLnZlcnNpb25fc3RyaW5nKQorICAgICAgb3V0IDw8IGZsYWdzX2ludGVy
bmFsOjpHZXRVc2FnZUNvbmZpZygpLnZlcnNpb25fc3RyaW5nKCk7CisgICAgLy8gVW5saWtlIGhl
bHAsIHdlIG1heSBiZSBhc2tpbmcgZm9yIHZlcnNpb24gaW4gYSBzY3JpcHQsIHNvIHJldHVybiAw
CisgICAgcmV0dXJuIDA7CisgIH0KKworICBpZiAoYWJzbDo6R2V0RmxhZyhGTEFHU19vbmx5X2No
ZWNrX2FyZ3MpKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICByZXR1cm4gLTE7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5h
bC91c2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MDc1YjA4MjlkOWFhZTk0YmE5ZmZlNjNjNTAxZTI0NTQ1
N2FiNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZS5oCkBA
IC0wLDAgKzEsNzggQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisKKyNpZm5kZWYgQUJTTF9GTEFHU19JTlRFUk5BTF9VU0FHRV9IXworI2RlZmluZSBBQlNM
X0ZMQUdTX0lOVEVSTkFMX1VTQUdFX0hfCisKKyNpbmNsdWRlIDxpb3Nmd2Q+CisjaW5jbHVkZSA8
c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9kZWNsYXJlLmgiCisjaW5jbHVkZSAiYWJz
bC9mbGFncy9pbnRlcm5hbC9jb21tYW5kbGluZWZsYWcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3Mvc3RyaW5nX3ZpZXcuaCIKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFVzYWdlIHJlcG9ydGluZyBp
bnRlcmZhY2VzCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBmbGFnc19pbnRlcm5hbCB7
CisKKy8vIFRoZSBmb3JtYXQgdG8gcmVwb3J0IHRoZSBoZWxwIG1lc3NhZ2VzIGluLgorZW51bSBj
bGFzcyBIZWxwRm9ybWF0IHsKKyAga0h1bWFuUmVhZGFibGUsCit9OworCisvLyBPdXRwdXRzIHRo
ZSBoZWxwIG1lc3NhZ2UgZGVzY3JpYmluZyBzcGVjaWZpYyBmbGFnLgordm9pZCBGbGFnSGVscChz
dGQ6Om9zdHJlYW0mIG91dCwgY29uc3QgZmxhZ3NfaW50ZXJuYWw6OkNvbW1hbmRMaW5lRmxhZyYg
ZmxhZywKKyAgICAgICAgICAgICAgSGVscEZvcm1hdCBmb3JtYXQgPSBIZWxwRm9ybWF0OjprSHVt
YW5SZWFkYWJsZSk7CisKKy8vIFByb2R1Y2VzIHRoZSBoZWxwIG1lc3NhZ2VzIGZvciBhbGwgZmxh
Z3MgbWF0Y2hpbmcgdGhlIGZpbHRlci4gQSBmbGFnIG1hdGNoZXMKKy8vIHRoZSBmaWx0ZXIgaWYg
aXQgaXMgZGVmaW5lZCBpbiBhIGZpbGUgd2l0aCBhIGZpbGVuYW1lIHdoaWNoIGluY2x1ZGVzCisv
LyBmaWx0ZXIgc3RyaW5nIGFzIGEgc3Vic3RyaW5nLiBZb3UgY2FuIHVzZSAnLycgYW5kICcuJyB0
byByZXN0cmljdCB0aGUKKy8vIG1hdGNoaW5nIHRvIGEgc3BlY2lmaWMgZmlsZSBuYW1lcy4gRm9y
IGV4YW1wbGU6CisvLyAgIEZsYWdzSGVscChvdXQsICIvcGF0aC90by9maWxlLiIpOworLy8gcmVz
dHJpY3RzIGhlbHAgdG8gb25seSBmbGFncyB3aGljaCByZXNpZGVzIGluIGZpbGVzIG5hbWVkIGxp
a2U6CisvLyAgLi4uL3BhdGgvdG8vZmlsZS48ZXh0PgorLy8gZm9yIGFueSBleHRlbnNpb24gJ2V4
dCcuIElmIHRoZSBmaWx0ZXIgaXMgZW1wdHkgdGhpcyBmdW5jdGlvbiBwcm9kdWNlcyBoZWxwCisv
LyBtZXNzYWdlcyBmb3IgYWxsIGZsYWdzLgordm9pZCBGbGFnc0hlbHAoc3RkOjpvc3RyZWFtJiBv
dXQsIGFic2w6OnN0cmluZ192aWV3IGZpbHRlciwKKyAgICAgICAgICAgICAgIEhlbHBGb3JtYXQg
Zm9ybWF0LCBhYnNsOjpzdHJpbmdfdmlldyBwcm9ncmFtX3VzYWdlX21lc3NhZ2UpOworCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisvLyBJZiBhbnkgb2YgdGhlICd1c2FnZScgcmVsYXRlZCBjb21tYW5kIGxp
bmUgZmxhZ3MgKGxpc3RlZCBvbiB0aGUgYm90dG9tIG9mCisvLyB0aGlzIGZpbGUpIGhhcyBiZWVu
IHNldCB0aGlzIHJvdXRpbmUgcHJvZHVjZXMgY29ycmVzcG9uZGluZyBoZWxwIG1lc3NhZ2UgaW4K
Ky8vIHRoZSBzcGVjaWZpZWQgb3V0cHV0IHN0cmVhbSBhbmQgcmV0dXJuczoKKy8vICAwIC0gaWYg
InZlcnNpb24iIG9yICJvbmx5X2NoZWNrX2ZsYWdzIiBmbGFncyB3ZXJlIHNldCBhbmQgaGFuZGxl
ZC4KKy8vICAxIC0gaWYgc29tZSBvdGhlciAndXNhZ2UnIHJlbGF0ZWQgZmxhZyB3YXMgc2V0IGFu
ZCBoYW5kbGVkLgorLy8gLTEgLSBpZiBubyB1c2FnZSBmbGFncyB3ZXJlIHNldCBvbiBhIGNvbW1t
YW5kIGxpbmUuCisvLyBOb24gbmVnYXRpdmUgcmV0dXJuIHZhbHVlcyBhcmUgZXhwZWN0ZWQgdG8g
YmUgdXNlZCBhcyBhbiBleGl0IGNvZGUgZm9yIGEKKy8vIGJpbmFyeS4KK2ludCBIYW5kbGVVc2Fn
ZUZsYWdzKHN0ZDo6b3N0cmVhbSYgb3V0LAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3Ry
aW5nX3ZpZXcgcHJvZ3JhbV91c2FnZV9tZXNzYWdlKTsKKworfSAgLy8gbmFtZXNwYWNlIGZsYWdz
X2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCitBQlNMX0RFQ0xBUkVfRkxBRyhib29s
LCBoZWxwKTsKK0FCU0xfREVDTEFSRV9GTEFHKGJvb2wsIGhlbHBmdWxsKTsKK0FCU0xfREVDTEFS
RV9GTEFHKGJvb2wsIGhlbHBzaG9ydCk7CitBQlNMX0RFQ0xBUkVfRkxBRyhib29sLCBoZWxwcGFj
a2FnZSk7CitBQlNMX0RFQ0xBUkVfRkxBRyhib29sLCB2ZXJzaW9uKTsKK0FCU0xfREVDTEFSRV9G
TEFHKGJvb2wsIG9ubHlfY2hlY2tfYXJncyk7CitBQlNMX0RFQ0xBUkVfRkxBRyhzdGQ6OnN0cmlu
ZywgaGVscG9uKTsKK0FCU0xfREVDTEFSRV9GTEFHKHN0ZDo6c3RyaW5nLCBoZWxwbWF0Y2gpOwor
CisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfSU5URVJOQUxfVVNBR0VfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC91
c2FnZV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MWUxZDJiMTZhYmE1NzZlMmMxNTllYTM4MDA1ZTNh
OWQ3MjdkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZV90
ZXN0LmNjCkBAIC0wLDAgKzEsNDA0IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZS5oIgor
CisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVk
ZSAiYWJzbC9mbGFncy9mbGFnLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRo
X3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5oIgor
I2luY2x1ZGUgImFic2wvZmxhZ3MvcGFyc2UuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3VzYWdl
LmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy91c2FnZV9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKworQUJT
TF9GTEFHKGludCwgdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMSwgMTAxLAorICAgICAgICAg
ICJ1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIGhlbHAgbWVzc2FnZSIpOworQUJTTF9GTEFH
KGJvb2wsIHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIsIGZhbHNlLAorICAgICAgICAgICJ1
c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAyIGhlbHAgbWVzc2FnZSIpOworQUJTTF9GTEFHKGRv
dWJsZSwgdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMywgMS4wMywKKyAgICAgICAgICAidXNh
Z2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMyBoZWxwIG1lc3NhZ2UiKTsKK0FCU0xfRkxBRyhpbnQ2
NF90LCB1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0LCAxMDAwMDAwMDAwMDAwMDA0TCwKKyAg
ICAgICAgICAidXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNCBoZWxwIG1lc3NhZ2UiKTsKKwor
c3RhdGljIGNvbnN0IGNoYXIga1Rlc3RVc2FnZU1lc3NhZ2VbXSA9ICJDdXN0b20gdXNhZ2UgbWVz
c2FnZSI7CisKK3N0cnVjdCBVRFQgeworICBVRFQoKSA9IGRlZmF1bHQ7CisgIFVEVChjb25zdCBV
RFQmKSA9IGRlZmF1bHQ7Cit9OworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3
LCBVRFQqLCBzdGQ6OnN0cmluZyopIHsgcmV0dXJuIHRydWU7IH0KK3N0ZDo6c3RyaW5nIEFic2xV
bnBhcnNlRmxhZyhjb25zdCBVRFQmKSB7IHJldHVybiAiVURUe30iOyB9CisKK0FCU0xfRkxBRyhV
RFQsIHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUsIHt9LAorICAgICAgICAgICJ1c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzA1IGhlbHAgbWVzc2FnZSIpOworCitBQlNMX0ZMQUcoCisgICAg
c3RkOjpzdHJpbmcsIHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDYsIHt9LAorICAgICJ1c2Fn
ZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA2IGhlbHAgbWVzc2FnZS5cbiIKKyAgICAiXG4iCisgICAg
IlNvbWUgbW9yZSBoZWxwLlxuIgorICAgICJFdmVuIG1vcmUgbG9uZyBsb25nIGxvbmcgbG9uZyBs
b25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgIgorICAgICJoZWxwIG1lc3Nh
Z2UuIik7CisKK25hbWVzcGFjZSB7CisKK25hbWVzcGFjZSBmbGFncyA9IGFic2w6OmZsYWdzX2lu
dGVybmFsOworCitzdGF0aWMgc3RkOjpzdHJpbmcgTm9ybWFsaXplRmlsZU5hbWUoYWJzbDo6c3Ry
aW5nX3ZpZXcgZm5hbWUpIHsKKyNpZmRlZiBfV0lOMzIKKyAgc3RkOjpzdHJpbmcgbm9ybWFsaXpl
ZChmbmFtZSk7CisgIHN0ZDo6cmVwbGFjZShub3JtYWxpemVkLmJlZ2luKCksIG5vcm1hbGl6ZWQu
ZW5kKCksICdcXCcsICcvJyk7CisgIGZuYW1lID0gbm9ybWFsaXplZDsKKyNlbmRpZgorCisgIGF1
dG8gYWJzbF9wb3MgPSBmbmFtZS5maW5kKCIvYWJzbC8iKTsKKyAgaWYgKGFic2xfcG9zICE9IGFi
c2w6OnN0cmluZ192aWV3OjpucG9zKSB7CisgICAgZm5hbWUgPSBmbmFtZS5zdWJzdHIoYWJzbF9w
b3MgKyAxKTsKKyAgfQorICByZXR1cm4gc3RkOjpzdHJpbmcoZm5hbWUpOworfQorCitjbGFzcyBV
c2FnZVJlcG9ydGluZ1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgor
ICBVc2FnZVJlcG9ydGluZ1Rlc3QoKSB7CisgICAgLy8gSW5zdGFsbCBkZWZhdWx0IGNvbmZpZyBm
b3IgdGhlIHVzZSBvbiB0aGlzIHVuaXQgdGVzdC4KKyAgICAvLyBCaW5hcnkgbWF5IGluc3RhbGwg
YSBjdXN0b20gY29uZmlnIGJlZm9yZSB0ZXN0cyBhcmUgcnVuLgorICAgIGFic2w6OkZsYWdzVXNh
Z2VDb25maWcgZGVmYXVsdF9jb25maWc7CisgICAgZGVmYXVsdF9jb25maWcubm9ybWFsaXplX2Zp
bGVuYW1lID0gJk5vcm1hbGl6ZUZpbGVOYW1lOworICAgIGFic2w6OlNldEZsYWdzVXNhZ2VDb25m
aWcoZGVmYXVsdF9jb25maWcpOworICB9CisKKyBwcml2YXRlOgorICBmbGFnczo6RmxhZ1NhdmVy
IGZsYWdfc2F2ZXJfOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordXNpbmcgVXNhZ2VSZXBvcnRp
bmdEZWF0aFRlc3QgPSBVc2FnZVJlcG9ydGluZ1Rlc3Q7CisKK1RFU1RfRihVc2FnZVJlcG9ydGlu
Z0RlYXRoVGVzdCwgVGVzdFNldFByb2dyYW1Vc2FnZU1lc3NhZ2UpIHsKKyAgRVhQRUNUX0VRKGFi
c2w6OlByb2dyYW1Vc2FnZU1lc3NhZ2UoKSwga1Rlc3RVc2FnZU1lc3NhZ2UpOworCisjaWZuZGVm
IF9XSU4zMgorICAvLyBUT0RPKHJvZ2VlZmYpOiBmaWd1cmUgb3V0IHdoeSB0aGlzIGRvZXMgbm90
IHdvcmsgb24gV2luZG93cy4KKyAgRVhQRUNUX0RFQVRIKGFic2w6OlNldFByb2dyYW1Vc2FnZU1l
c3NhZ2UoImN1c3RvbSB1c2FnZSBtZXNzYWdlIiksCisgICAgICAgICAgICAgICAiLipTZXRQcm9n
cmFtVXNhZ2VNZXNzYWdlXFwoXFwpIGNhbGxlZCB0d2ljZS4qIik7CisjZW5kaWYKK30KKworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworVEVTVF9GKFVzYWdlUmVwb3J0aW5nVGVzdCwgVGVzdEZsYWdIZWxwSFJG
X29uX2ZsYWdfMDEpIHsKKyAgY29uc3QgYXV0byogZmxhZyA9IGZsYWdzOjpGaW5kQ29tbWFuZExp
bmVGbGFnKCJ1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIik7CisgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIHRlc3RfYnVmOworCisgIGZsYWdzOjpGbGFnSGVscCh0ZXN0X2J1ZiwgKmZsYWcsIGZsYWdz
OjpIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHRlc3Rf
YnVmLnN0cigpLAorICAgICAgUiIoICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxICh1
c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0
OiAxMDE7CispIik7Cit9CisKK1RFU1RfRihVc2FnZVJlcG9ydGluZ1Rlc3QsIFRlc3RGbGFnSGVs
cEhSRl9vbl9mbGFnXzAyKSB7CisgIGNvbnN0IGF1dG8qIGZsYWcgPSBmbGFnczo6RmluZENvbW1h
bmRMaW5lRmxhZygidXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiIpOworICBzdGQ6OnN0cmlu
Z3N0cmVhbSB0ZXN0X2J1ZjsKKworICBmbGFnczo6RmxhZ0hlbHAodGVzdF9idWYsICpmbGFnLCBm
bGFnczo6SGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUpOworICBFWFBFQ1RfRVEoCisgICAgICB0
ZXN0X2J1Zi5zdHIoKSwKKyAgICAgIFIiKCAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18w
MiAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVm
YXVsdDogZmFsc2U7CispIik7Cit9CisKK1RFU1RfRihVc2FnZVJlcG9ydGluZ1Rlc3QsIFRlc3RG
bGFnSGVscEhSRl9vbl9mbGFnXzAzKSB7CisgIGNvbnN0IGF1dG8qIGZsYWcgPSBmbGFnczo6Rmlu
ZENvbW1hbmRMaW5lRmxhZygidXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMyIpOworICBzdGQ6
OnN0cmluZ3N0cmVhbSB0ZXN0X2J1ZjsKKworICBmbGFnczo6RmxhZ0hlbHAodGVzdF9idWYsICpm
bGFnLCBmbGFnczo6SGVscEZvcm1hdDo6a0h1bWFuUmVhZGFibGUpOworICBFWFBFQ1RfRVEoCisg
ICAgICB0ZXN0X2J1Zi5zdHIoKSwKKyAgICAgIFIiKCAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3Rf
ZmxhZ18wMyAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMyBoZWxwIG1lc3NhZ2UpOworICAg
ICAgZGVmYXVsdDogMS4wMzsKKykiKTsKK30KKworVEVTVF9GKFVzYWdlUmVwb3J0aW5nVGVzdCwg
VGVzdEZsYWdIZWxwSFJGX29uX2ZsYWdfMDQpIHsKKyAgY29uc3QgYXV0byogZmxhZyA9IGZsYWdz
OjpGaW5kQ29tbWFuZExpbmVGbGFnKCJ1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0Iik7Cisg
IHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmOworCisgIGZsYWdzOjpGbGFnSGVscCh0ZXN0X2J1
ZiwgKmZsYWcsIGZsYWdzOjpIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSk7CisgIEVYUEVDVF9F
USgKKyAgICAgIHRlc3RfYnVmLnN0cigpLAorICAgICAgUiIoICAgIC11c2FnZV9yZXBvcnRpbmdf
dGVzdF9mbGFnXzA0ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0IGhlbHAgbWVzc2FnZSk7
CisgICAgICBkZWZhdWx0OiAxMDAwMDAwMDAwMDAwMDA0OworKSIpOworfQorCitURVNUX0YoVXNh
Z2VSZXBvcnRpbmdUZXN0LCBUZXN0RmxhZ0hlbHBIUkZfb25fZmxhZ18wNSkgeworICBjb25zdCBh
dXRvKiBmbGFnID0gZmxhZ3M6OkZpbmRDb21tYW5kTGluZUZsYWcoInVzYWdlX3JlcG9ydGluZ190
ZXN0X2ZsYWdfMDUiKTsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWY7CisKKyAgZmxhZ3M6
OkZsYWdIZWxwKHRlc3RfYnVmLCAqZmxhZywgZmxhZ3M6OkhlbHBGb3JtYXQ6OmtIdW1hblJlYWRh
YmxlKTsKKyAgRVhQRUNUX0VRKAorICAgICAgdGVzdF9idWYuc3RyKCksCisgICAgICBSIiggICAg
LXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdf
MDUgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IFVEVHt9OworKSIpOworfQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitURVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0LCBUZXN0RmxhZ3NIZWxwSFJG
KSB7CisgIHN0ZDo6c3RyaW5nIHVzYWdlX3Rlc3RfZmxhZ3Nfb3V0ID0KKyAgICAgIFIiKHVzYWdl
X3Rlc3Q6IEN1c3RvbSB1c2FnZSBtZXNzYWdlCisKKyAgRmxhZ3MgZnJvbSBhYnNsL2ZsYWdzL2lu
dGVybmFsL3VzYWdlX3Rlc3QuY2M6CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDEg
KHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDEgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1
bHQ6IDEwMTsKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMiAodXNhZ2VfcmVwb3J0
aW5nX3Rlc3RfZmxhZ18wMiBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogZmFsc2U7Cisg
ICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDMgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2Zs
YWdfMDMgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEuMDM7CisgICAgLXVzYWdlX3Jl
cG9ydGluZ190ZXN0X2ZsYWdfMDQgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDQgaGVscCBt
ZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IDEwMDAwMDAwMDAwMDAwMDQ7CisgICAgLXVzYWdlX3Jl
cG9ydGluZ190ZXN0X2ZsYWdfMDUgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDUgaGVscCBt
ZXNzYWdlKTsKKyAgICAgIGRlZmF1bHQ6IFVEVHt9OworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVz
dF9mbGFnXzA2ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA2IGhlbHAgbWVzc2FnZS4KKwor
ICAgICAgU29tZSBtb3JlIGhlbHAuCisgICAgICBFdmVuIG1vcmUgbG9uZyBsb25nIGxvbmcgbG9u
ZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgaGVscAorICAgICAgbWVz
c2FnZS4pOyBkZWZhdWx0OiAiIjsKKykiOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVm
XzAxOworICBmbGFnczo6RmxhZ3NIZWxwKHRlc3RfYnVmXzAxLCAidXNhZ2VfdGVzdC5jYyIsCisg
ICAgICAgICAgICAgICAgICAgZmxhZ3M6OkhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlLCBrVGVz
dFVzYWdlTWVzc2FnZSk7CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zl8wMS5zdHIoKSwgdXNhZ2VfdGVz
dF9mbGFnc19vdXQpOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmXzAyOworICBmbGFn
czo6RmxhZ3NIZWxwKHRlc3RfYnVmXzAyLCAiZmxhZ3MvaW50ZXJuYWwvdXNhZ2VfdGVzdC5jYyIs
CisgICAgICAgICAgICAgICAgICAgZmxhZ3M6OkhlbHBGb3JtYXQ6OmtIdW1hblJlYWRhYmxlLCBr
VGVzdFVzYWdlTWVzc2FnZSk7CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zl8wMi5zdHIoKSwgdXNhZ2Vf
dGVzdF9mbGFnc19vdXQpOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmXzAzOworICBm
bGFnczo6RmxhZ3NIZWxwKHRlc3RfYnVmXzAzLCAidXNhZ2VfdGVzdCIsIGZsYWdzOjpIZWxwRm9y
bWF0OjprSHVtYW5SZWFkYWJsZSwKKyAgICAgICAgICAgICAgICAgICBrVGVzdFVzYWdlTWVzc2Fn
ZSk7CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zl8wMy5zdHIoKSwgdXNhZ2VfdGVzdF9mbGFnc19vdXQp
OworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmXzA0OworICBmbGFnczo6RmxhZ3NIZWxw
KHRlc3RfYnVmXzA0LCAiZmxhZ3MvaW52YWxpZF9maWxlX25hbWUuY2MiLAorICAgICAgICAgICAg
ICAgICAgIGZsYWdzOjpIZWxwRm9ybWF0OjprSHVtYW5SZWFkYWJsZSwga1Rlc3RVc2FnZU1lc3Nh
Z2UpOworICBFWFBFQ1RfRVEodGVzdF9idWZfMDQuc3RyKCksCisgICAgICAgICAgICBSIih1c2Fn
ZV90ZXN0OiBDdXN0b20gdXNhZ2UgbWVzc2FnZQorCisgIE5vIG1vZHVsZXMgbWF0Y2hlZDogdXNl
IC1oZWxwZnVsbAorKSIpOworCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHRlc3RfYnVmXzA1OworICBm
bGFnczo6RmxhZ3NIZWxwKHRlc3RfYnVmXzA1LCAiIiwgZmxhZ3M6OkhlbHBGb3JtYXQ6OmtIdW1h
blJlYWRhYmxlLAorICAgICAgICAgICAgICAgICAgIGtUZXN0VXNhZ2VNZXNzYWdlKTsKKyAgc3Rk
OjpzdHJpbmcgdGVzdF9vdXQgPSB0ZXN0X2J1Zl8wNS5zdHIoKTsKKyAgYWJzbDo6c3RyaW5nX3Zp
ZXcgdGVzdF9vdXRfc3RyKHRlc3Rfb3V0KTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpT
dGFydHNXaXRoKHRlc3Rfb3V0X3N0ciwgInVzYWdlX3Rlc3Q6IEN1c3RvbSB1c2FnZSBtZXNzYWdl
IikpOworICBFWFBFQ1RfVFJVRShhYnNsOjpTdHJDb250YWlucygKKyAgICAgIHRlc3Rfb3V0X3N0
ciwgIkZsYWdzIGZyb20gYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0LmNjOiIpKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6U3RyQ29udGFpbnModGVzdF9vdXRfc3RyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRmxhZ3MgZnJvbSBhYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdl
LmNjOiIpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpTdHJDb250YWlucyh0ZXN0X291
dF9zdHIsICItdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMSAiKSk7CisgIEVYUEVDVF9UUlVF
KGFic2w6OlN0ckNvbnRhaW5zKHRlc3Rfb3V0X3N0ciwgIi1oZWxwIChzaG93IGhlbHAiKSkKKyAg
ICAgIDw8IHRlc3Rfb3V0X3N0cjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFVzYWdl
UmVwb3J0aW5nVGVzdCwgVGVzdE5vVXNhZ2VGbGFncykgeworICBzdGQ6OnN0cmluZ3N0cmVhbSB0
ZXN0X2J1ZjsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5kbGVVc2FnZUZsYWdzKHRlc3RfYnVmLCBr
VGVzdFVzYWdlTWVzc2FnZSksIC0xKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFVz
YWdlUmVwb3J0aW5nVGVzdCwgVGVzdFVzYWdlRmxhZ19oZWxwc2hvcnQpIHsKKyAgYWJzbDo6U2V0
RmxhZygmRkxBR1NfaGVscHNob3J0LCB0cnVlKTsKKworICBzdGQ6OnN0cmluZ3N0cmVhbSB0ZXN0
X2J1ZjsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5kbGVVc2FnZUZsYWdzKHRlc3RfYnVmLCBrVGVz
dFVzYWdlTWVzc2FnZSksIDEpOworICBFWFBFQ1RfRVEodGVzdF9idWYuc3RyKCksCisgICAgICAg
ICAgICBSIih1c2FnZV90ZXN0OiBDdXN0b20gdXNhZ2UgbWVzc2FnZQorCisgIEZsYWdzIGZyb20g
YWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0LmNjOgorICAgIC11c2FnZV9yZXBvcnRpbmdf
dGVzdF9mbGFnXzAxICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIGhlbHAgbWVzc2FnZSk7
CisgICAgICBkZWZhdWx0OiAxMDE7CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIg
KHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIgaGVscCBtZXNzYWdlKTsKKyAgICAgIGRlZmF1
bHQ6IGZhbHNlOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAzICh1c2FnZV9yZXBv
cnRpbmdfdGVzdF9mbGFnXzAzIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxLjAzOwor
ICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9m
bGFnXzA0IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxMDAwMDAwMDAwMDAwMDA0Owor
ICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA1ICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9m
bGFnXzA1IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiBVRFR7fTsKKyAgICAtdXNhZ2Vf
cmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiBoZWxw
IG1lc3NhZ2UuCisKKyAgICAgIFNvbWUgbW9yZSBoZWxwLgorICAgICAgRXZlbiBtb3JlIGxvbmcg
bG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGhl
bHAKKyAgICAgIG1lc3NhZ2UuKTsgZGVmYXVsdDogIiI7CispIik7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1RFU1RfRihVc2FnZVJlcG9ydGluZ1Rlc3QsIFRlc3RVc2FnZUZsYWdfaGVscCkgewor
ICBhYnNsOjpTZXRGbGFnKCZGTEFHU19oZWxwLCB0cnVlKTsKKworICBzdGQ6OnN0cmluZ3N0cmVh
bSB0ZXN0X2J1ZjsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5kbGVVc2FnZUZsYWdzKHRlc3RfYnVm
LCBrVGVzdFVzYWdlTWVzc2FnZSksIDEpOworICBFWFBFQ1RfRVEodGVzdF9idWYuc3RyKCksCisg
ICAgICAgICAgICBSIih1c2FnZV90ZXN0OiBDdXN0b20gdXNhZ2UgbWVzc2FnZQorCisgIEZsYWdz
IGZyb20gYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0LmNjOgorICAgIC11c2FnZV9yZXBv
cnRpbmdfdGVzdF9mbGFnXzAxICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxIGhlbHAgbWVz
c2FnZSk7CisgICAgICBkZWZhdWx0OiAxMDE7CisgICAgLXVzYWdlX3JlcG9ydGluZ190ZXN0X2Zs
YWdfMDIgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIgaGVscCBtZXNzYWdlKTsKKyAgICAg
IGRlZmF1bHQ6IGZhbHNlOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAzICh1c2Fn
ZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAzIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAx
LjAzOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0ICh1c2FnZV9yZXBvcnRpbmdf
dGVzdF9mbGFnXzA0IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxMDAwMDAwMDAwMDAw
MDA0OworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA1ICh1c2FnZV9yZXBvcnRpbmdf
dGVzdF9mbGFnXzA1IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiBVRFR7fTsKKyAgICAt
dXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18w
NiBoZWxwIG1lc3NhZ2UuCisKKyAgICAgIFNvbWUgbW9yZSBoZWxwLgorICAgICAgRXZlbiBtb3Jl
IGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBs
b25nIGhlbHAKKyAgICAgIG1lc3NhZ2UuKTsgZGVmYXVsdDogIiI7CisKK1RyeSAtLWhlbHBmdWxs
IHRvIGdldCBhIGxpc3Qgb2YgYWxsIGZsYWdzLgorKSIpOworfQorCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitURVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0LCBUZXN0VXNhZ2VGbGFnX2hlbHBwYWNrYWdlKSB7
CisgIGFic2w6OlNldEZsYWcoJkZMQUdTX2hlbHBwYWNrYWdlLCB0cnVlKTsKKworICBzdGQ6OnN0
cmluZ3N0cmVhbSB0ZXN0X2J1ZjsKKyAgRVhQRUNUX0VRKGZsYWdzOjpIYW5kbGVVc2FnZUZsYWdz
KHRlc3RfYnVmLCBrVGVzdFVzYWdlTWVzc2FnZSksIDEpOworICBFWFBFQ1RfRVEodGVzdF9idWYu
c3RyKCksCisgICAgICAgICAgICBSIih1c2FnZV90ZXN0OiBDdXN0b20gdXNhZ2UgbWVzc2FnZQor
CisgIEZsYWdzIGZyb20gYWJzbC9mbGFncy9pbnRlcm5hbC91c2FnZV90ZXN0LmNjOgorICAgIC11
c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAxICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAx
IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxMDE7CisgICAgLXVzYWdlX3JlcG9ydGlu
Z190ZXN0X2ZsYWdfMDIgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDIgaGVscCBtZXNzYWdl
KTsKKyAgICAgIGRlZmF1bHQ6IGZhbHNlOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFn
XzAzICh1c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAzIGhlbHAgbWVzc2FnZSk7CisgICAgICBk
ZWZhdWx0OiAxLjAzOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA0ICh1c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzA0IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiAxMDAw
MDAwMDAwMDAwMDA0OworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzA1ICh1c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzA1IGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiBVRFR7
fTsKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNiAodXNhZ2VfcmVwb3J0aW5nX3Rl
c3RfZmxhZ18wNiBoZWxwIG1lc3NhZ2UuCisKKyAgICAgIFNvbWUgbW9yZSBoZWxwLgorICAgICAg
RXZlbiBtb3JlIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxv
bmcgbG9uZyBsb25nIGhlbHAKKyAgICAgIG1lc3NhZ2UuKTsgZGVmYXVsdDogIiI7CisKK1RyeSAt
LWhlbHBmdWxsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGZsYWdzLgorKSIpOworfQorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitURVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0LCBUZXN0VXNhZ2VGbGFnX3ZlcnNp
b24pIHsKKyAgYWJzbDo6U2V0RmxhZygmRkxBR1NfdmVyc2lvbiwgdHJ1ZSk7CisKKyAgc3RkOjpz
dHJpbmdzdHJlYW0gdGVzdF9idWY7CisgIEVYUEVDVF9FUShmbGFnczo6SGFuZGxlVXNhZ2VGbGFn
cyh0ZXN0X2J1Ziwga1Rlc3RVc2FnZU1lc3NhZ2UpLCAwKTsKKyNpZm5kZWYgTkRFQlVHCisgIEVY
UEVDVF9FUSh0ZXN0X2J1Zi5zdHIoKSwgInVzYWdlX3Rlc3RcbkRlYnVnIGJ1aWxkIChOREVCVUcg
bm90ICNkZWZpbmVkKVxuIik7CisjZWxzZQorICBFWFBFQ1RfRVEodGVzdF9idWYuc3RyKCksICJ1
c2FnZV90ZXN0XG4iKTsKKyNlbmRpZgorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoVXNh
Z2VSZXBvcnRpbmdUZXN0LCBUZXN0VXNhZ2VGbGFnX29ubHlfY2hlY2tfYXJncykgeworICBhYnNs
OjpTZXRGbGFnKCZGTEFHU19vbmx5X2NoZWNrX2FyZ3MsIHRydWUpOworCisgIHN0ZDo6c3RyaW5n
c3RyZWFtIHRlc3RfYnVmOworICBFWFBFQ1RfRVEoZmxhZ3M6OkhhbmRsZVVzYWdlRmxhZ3ModGVz
dF9idWYsIGtUZXN0VXNhZ2VNZXNzYWdlKSwgMCk7CisgIEVYUEVDVF9FUSh0ZXN0X2J1Zi5zdHIo
KSwgIiIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoVXNhZ2VSZXBvcnRpbmdUZXN0
LCBUZXN0VXNhZ2VGbGFnX2hlbHBvbikgeworICBhYnNsOjpTZXRGbGFnKCZGTEFHU19oZWxwb24s
ICJibGEtYmxhIik7CisKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWZfMDE7CisgIEVYUEVD
VF9FUShmbGFnczo6SGFuZGxlVXNhZ2VGbGFncyh0ZXN0X2J1Zl8wMSwga1Rlc3RVc2FnZU1lc3Nh
Z2UpLCAxKTsKKyAgRVhQRUNUX0VRKHRlc3RfYnVmXzAxLnN0cigpLAorICAgICAgICAgICAgUiIo
dXNhZ2VfdGVzdDogQ3VzdG9tIHVzYWdlIG1lc3NhZ2UKKworICBObyBtb2R1bGVzIG1hdGNoZWQ6
IHVzZSAtaGVscGZ1bGwKKykiKTsKKworICBhYnNsOjpTZXRGbGFnKCZGTEFHU19oZWxwb24sICJ1
c2FnZV90ZXN0Iik7CisKKyAgc3RkOjpzdHJpbmdzdHJlYW0gdGVzdF9idWZfMDI7CisgIEVYUEVD
VF9FUShmbGFnczo6SGFuZGxlVXNhZ2VGbGFncyh0ZXN0X2J1Zl8wMiwga1Rlc3RVc2FnZU1lc3Nh
Z2UpLCAxKTsKKyAgRVhQRUNUX0VRKHRlc3RfYnVmXzAyLnN0cigpLAorICAgICAgICAgICAgUiIo
dXNhZ2VfdGVzdDogQ3VzdG9tIHVzYWdlIG1lc3NhZ2UKKworICBGbGFncyBmcm9tIGFic2wvZmxh
Z3MvaW50ZXJuYWwvdXNhZ2VfdGVzdC5jYzoKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxh
Z18wMSAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMSBoZWxwIG1lc3NhZ2UpOworICAgICAg
ZGVmYXVsdDogMTAxOworICAgIC11c2FnZV9yZXBvcnRpbmdfdGVzdF9mbGFnXzAyICh1c2FnZV9y
ZXBvcnRpbmdfdGVzdF9mbGFnXzAyIGhlbHAgbWVzc2FnZSk7CisgICAgICBkZWZhdWx0OiBmYWxz
ZTsKKyAgICAtdXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wMyAodXNhZ2VfcmVwb3J0aW5nX3Rl
c3RfZmxhZ18wMyBoZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogMS4wMzsKKyAgICAtdXNh
Z2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNCAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNCBo
ZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogMTAwMDAwMDAwMDAwMDAwNDsKKyAgICAtdXNh
Z2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNSAodXNhZ2VfcmVwb3J0aW5nX3Rlc3RfZmxhZ18wNSBo
ZWxwIG1lc3NhZ2UpOworICAgICAgZGVmYXVsdDogVURUe307CisgICAgLXVzYWdlX3JlcG9ydGlu
Z190ZXN0X2ZsYWdfMDYgKHVzYWdlX3JlcG9ydGluZ190ZXN0X2ZsYWdfMDYgaGVscCBtZXNzYWdl
LgorCisgICAgICBTb21lIG1vcmUgaGVscC4KKyAgICAgIEV2ZW4gbW9yZSBsb25nIGxvbmcgbG9u
ZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBoZWxwCisgICAg
ICBtZXNzYWdlLik7IGRlZmF1bHQ6ICIiOworKSIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit9
ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworICBh
YnNsOjpHZXRGbGFnKEZMQUdTX3VuZGVmb2spOyAgLy8gRm9yY2UgbGlua2luZyBvZiBwYXJzZS5j
YworICBmbGFnczo6U2V0UHJvZ3JhbUludm9jYXRpb25OYW1lKCJ1c2FnZV90ZXN0Iik7CisgIGFi
c2w6OlNldFByb2dyYW1Vc2FnZU1lc3NhZ2Uoa1Rlc3RVc2FnZU1lc3NhZ2UpOworICA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvbWFyc2hhbGxpbmcuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9m
bGFncy9tYXJzaGFsbGluZy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDI1YWU3ZTg2YzRkY2ZmZDM1NTc1NWQx
YjVhNzE0OGM4NzU2NTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvbWFyc2hhbGxp
bmcuY2MKQEAgLTAsMCArMSwxODkgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL21hcnNoYWxsaW5nLmgiCisKKyNp
bmNsdWRlIDxsaW1pdHM+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVk
ZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL251bWJlcnMu
aCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9zdHJfZm9ybWF0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9qb2luLmgiCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5oIgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWJzbFBhcnNl
RmxhZyBzcGVjaWFsaXphdGlvbnMgZm9yIGJvb2xlYW4gdHlwZS4KKworYm9vbCBBYnNsUGFyc2VG
bGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGJvb2wqIGRzdCwgc3RkOjpzdHJpbmcqKSB7Cisg
IGNvbnN0IGNoYXIqIGtUcnVlW10gPSB7IjEiLCAidCIsICJ0cnVlIiwgInkiLCAieWVzIn07Cisg
IGNvbnN0IGNoYXIqIGtGYWxzZVtdID0geyIwIiwgImYiLCAiZmFsc2UiLCAibiIsICJubyJ9Owor
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihrVHJ1ZSkgPT0gc2l6ZW9mKGtGYWxzZSksICJ0cnVlX2Zh
bHNlX2VxdWFsIik7CisKKyAgdGV4dCA9IGFic2w6OlN0cmlwQXNjaWlXaGl0ZXNwYWNlKHRleHQp
OworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQUJTTF9BUlJBWVNJWkUoa1RydWUpOyArK2kp
IHsKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZSh0ZXh0LCBrVHJ1ZVtpXSkpIHsKKyAg
ICAgICpkc3QgPSB0cnVlOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIGlmIChhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKHRleHQsIGtGYWxzZVtpXSkpIHsKKyAgICAgICpkc3QgPSBmYWxz
ZTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorICByZXR1cm4gZmFsc2U7ICAvLyBk
aWRuJ3QgbWF0Y2ggYSBsZWdhbCBpbnB1dAorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWJzbFBh
cnNlRmxhZyBmb3IgaW50ZWdyYWwgdHlwZXMuCisKKy8vIFJldHVybiB0aGUgYmFzZSB0byB1c2Ug
Zm9yIHBhcnNpbmcgdGV4dCBhcyBhbiBpbnRlZ2VyLiAgTGVhZGluZyAweAorLy8gcHV0cyB1cyBp
biBiYXNlIDE2LiAgQnV0IGxlYWRpbmcgMCBkb2VzIG5vdCBwdXQgdXMgaW4gYmFzZSA4LiBJdAor
Ly8gY2F1c2VkIHRvbyBtYW55IGJ1Z3Mgd2hlbiB3ZSBoYWQgdGhhdCBiZWhhdmlvci4KK3N0YXRp
YyBpbnQgTnVtZXJpY0Jhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCkgeworICBjb25zdCBib29s
IGhleCA9ICh0ZXh0LnNpemUoKSA+PSAyICYmIHRleHRbMF0gPT0gJzAnICYmCisgICAgICAgICAg
ICAgICAgICAgICh0ZXh0WzFdID09ICd4JyB8fCB0ZXh0WzFdID09ICdYJykpOworICByZXR1cm4g
aGV4ID8gMTYgOiAxMDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CitpbmxpbmUg
Ym9vbCBQYXJzZUZsYWdJbXBsKGFic2w6OnN0cmluZ192aWV3IHRleHQsIEludFR5cGUqIGRzdCkg
eworICB0ZXh0ID0gYWJzbDo6U3RyaXBBc2NpaVdoaXRlc3BhY2UodGV4dCk7CisKKyAgcmV0dXJu
IGFic2w6Om51bWJlcnNfaW50ZXJuYWw6OnNhZmVfc3RydG9pX2Jhc2UodGV4dCwgZHN0LCBOdW1l
cmljQmFzZSh0ZXh0KSk7Cit9CisKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmll
dyB0ZXh0LCBzaG9ydCogZHN0LCBzdGQ6OnN0cmluZyopIHsKKyAgaW50IHZhbDsKKyAgaWYgKCFQ
YXJzZUZsYWdJbXBsKHRleHQsICZ2YWwpKSByZXR1cm4gZmFsc2U7CisgIGlmIChzdGF0aWNfY2Fz
dDxzaG9ydD4odmFsKSAhPSB2YWwpICAvLyB3b3JrZWQsIGJ1dCBudW1iZXIgb3V0IG9mIHJhbmdl
CisgICAgcmV0dXJuIGZhbHNlOworICAqZHN0ID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KHZhbCk7Cisg
IHJldHVybiB0cnVlOworfQorCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcg
dGV4dCwgdW5zaWduZWQgc2hvcnQqIGRzdCwgc3RkOjpzdHJpbmcqKSB7CisgIHVuc2lnbmVkIGlu
dCB2YWw7CisgIGlmICghUGFyc2VGbGFnSW1wbCh0ZXh0LCAmdmFsKSkgcmV0dXJuIGZhbHNlOwor
ICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KHZhbCkgIT0KKyAgICAgIHZhbCkgIC8v
IHdvcmtlZCwgYnV0IG51bWJlciBvdXQgb2YgcmFuZ2UKKyAgICByZXR1cm4gZmFsc2U7CisgICpk
c3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4odmFsKTsKKyAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBpbnQqIGRzdCwg
c3RkOjpzdHJpbmcqKSB7CisgIHJldHVybiBQYXJzZUZsYWdJbXBsKHRleHQsIGRzdCk7Cit9CisK
K2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCB1bnNpZ25lZCBpbnQq
IGRzdCwgc3RkOjpzdHJpbmcqKSB7CisgIHJldHVybiBQYXJzZUZsYWdJbXBsKHRleHQsIGRzdCk7
Cit9CisKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBsb25nKiBk
c3QsIHN0ZDo6c3RyaW5nKikgeworICByZXR1cm4gUGFyc2VGbGFnSW1wbCh0ZXh0LCBkc3QpOwor
fQorCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgdW5zaWduZWQg
bG9uZyogZHN0LCBzdGQ6OnN0cmluZyopIHsKKyAgcmV0dXJuIFBhcnNlRmxhZ0ltcGwodGV4dCwg
ZHN0KTsKK30KKworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGxv
bmcgbG9uZyogZHN0LCBzdGQ6OnN0cmluZyopIHsKKyAgcmV0dXJuIFBhcnNlRmxhZ0ltcGwodGV4
dCwgZHN0KTsKK30KKworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQs
IHVuc2lnbmVkIGxvbmcgbG9uZyogZHN0LAorICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
KikgeworICByZXR1cm4gUGFyc2VGbGFnSW1wbCh0ZXh0LCBkc3QpOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gQWJzbFBhcnNlRmxhZyBmb3IgZmxvYXRpbmcgcG9pbnQgdHlwZXMuCisKK2Jvb2wg
QWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBmbG9hdCogZHN0LCBzdGQ6OnN0
cmluZyopIHsKKyAgcmV0dXJuIGFic2w6OlNpbXBsZUF0b2YodGV4dCwgZHN0KTsKK30KKworYm9v
bCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGRvdWJsZSogZHN0LCBzdGQ6
OnN0cmluZyopIHsKKyAgcmV0dXJuIGFic2w6OlNpbXBsZUF0b2QodGV4dCwgZHN0KTsKK30KKwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vIEFic2xQYXJzZUZsYWcgZm9yIHN0cmluZ3MuCisKK2Jvb2wgQWJz
bFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBzdGQ6OnN0cmluZyogZHN0LCBzdGQ6
OnN0cmluZyopIHsKKyAgZHN0LT5hc3NpZ24odGV4dC5kYXRhKCksIHRleHQuc2l6ZSgpKTsKKyAg
cmV0dXJuIHRydWU7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsUGFyc2VGbGFnIGZvciB2
ZWN0b3Igb2Ygc3RyaW5ncy4KKworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3
IHRleHQsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogZHN0LAorICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKikgeworICAvLyBBbiBlbXB0eSBmbGFnIHZhbHVlIGNvcnJlc3BvbmRzIHRv
IGFuIGVtcHR5IHZlY3Rvciwgbm90IGEgdmVjdG9yCisgIC8vIHdpdGggYSBzaW5nbGUsIGVtcHR5
IHN0ZDo6c3RyaW5nLgorICBpZiAodGV4dC5lbXB0eSgpKSB7CisgICAgZHN0LT5jbGVhcigpOwor
ICAgIHJldHVybiB0cnVlOworICB9CisgICpkc3QgPSBhYnNsOjpTdHJTcGxpdCh0ZXh0LCAnLCcs
IGFic2w6OkFsbG93RW1wdHkoKSk7CisgIHJldHVybiB0cnVlOworfQorCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gQWJzbFVucGFyc2VGbGFnIHNwZWNpYWxpemF0aW9ucyBmb3IgdmFyaW91cyBidWlsdGlu
IGZsYWcgdHlwZXMuCisKK3N0ZDo6c3RyaW5nIFVucGFyc2UoYm9vbCB2KSB7IHJldHVybiB2ID8g
InRydWUiIDogImZhbHNlIjsgfQorc3RkOjpzdHJpbmcgVW5wYXJzZShzaG9ydCB2KSB7IHJldHVy
biBhYnNsOjpTdHJDYXQodik7IH0KK3N0ZDo6c3RyaW5nIFVucGFyc2UodW5zaWduZWQgc2hvcnQg
dikgeyByZXR1cm4gYWJzbDo6U3RyQ2F0KHYpOyB9CitzdGQ6OnN0cmluZyBVbnBhcnNlKGludCB2
KSB7IHJldHVybiBhYnNsOjpTdHJDYXQodik7IH0KK3N0ZDo6c3RyaW5nIFVucGFyc2UodW5zaWdu
ZWQgaW50IHYpIHsgcmV0dXJuIGFic2w6OlN0ckNhdCh2KTsgfQorc3RkOjpzdHJpbmcgVW5wYXJz
ZShsb25nIHYpIHsgcmV0dXJuIGFic2w6OlN0ckNhdCh2KTsgfQorc3RkOjpzdHJpbmcgVW5wYXJz
ZSh1bnNpZ25lZCBsb25nIHYpIHsgcmV0dXJuIGFic2w6OlN0ckNhdCh2KTsgfQorc3RkOjpzdHJp
bmcgVW5wYXJzZShsb25nIGxvbmcgdikgeyByZXR1cm4gYWJzbDo6U3RyQ2F0KHYpOyB9CitzdGQ6
OnN0cmluZyBVbnBhcnNlKHVuc2lnbmVkIGxvbmcgbG9uZyB2KSB7IHJldHVybiBhYnNsOjpTdHJD
YXQodik7IH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RkOjpzdHJpbmcgVW5wYXJzZUZsb2F0
aW5nUG9pbnRWYWwoVCB2KSB7CisgIC8vIGRpZ2l0czEwIGlzIGd1YXJhbnRlZWQgdG8gcm91bmR0
cmlwIGNvcnJlY3RseSBpbiBzdGQ6OnN0cmluZyAtPiB2YWx1ZSAtPiBzdGQ6OnN0cmluZworICAv
LyBjb252ZXJzaW9ucywgYnV0IG1heSBub3QgYmUgZW5vdWdoIHRvIHJlcHJlc2VudCBhbGwgdGhl
IHZhbHVlcyBjb3JyZWN0bHkuCisgIHN0ZDo6c3RyaW5nIGRpZ2l0MTBfc3RyID0KKyAgICAgIGFi
c2w6OlN0ckZvcm1hdCgiJS4qZyIsIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0czEwLCB2
KTsKKyAgaWYgKHN0ZDo6aXNuYW4odikgfHwgc3RkOjppc2luZih2KSkgcmV0dXJuIGRpZ2l0MTBf
c3RyOworCisgIFQgcm91bmR0cmlwX3ZhbCA9IDA7CisgIHN0ZDo6c3RyaW5nIGVycjsKKyAgaWYg
KGFic2w6OlBhcnNlRmxhZyhkaWdpdDEwX3N0ciwgJnJvdW5kdHJpcF92YWwsICZlcnIpICYmCisg
ICAgICByb3VuZHRyaXBfdmFsID09IHYpIHsKKyAgICByZXR1cm4gZGlnaXQxMF9zdHI7CisgIH0K
KworICAvLyBtYXhfZGlnaXRzMTAgaXMgdGhlIG51bWJlciBvZiBiYXNlLTEwIGRpZ2l0cyB0aGF0
IGFyZSBuZWNlc3NhcnkgdG8gdW5pcXVlbHkKKyAgLy8gcmVwcmVzZW50IGFsbCBkaXN0aW5jdCB2
YWx1ZXMuCisgIHJldHVybiBhYnNsOjpTdHJGb3JtYXQoIiUuKmciLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPFQ+OjptYXhfZGlnaXRzMTAsIHYpOworfQorc3RkOjpzdHJpbmcgVW5wYXJzZShmbG9hdCB2
KSB7IHJldHVybiBVbnBhcnNlRmxvYXRpbmdQb2ludFZhbCh2KTsgfQorc3RkOjpzdHJpbmcgVW5w
YXJzZShkb3VibGUgdikgeyByZXR1cm4gVW5wYXJzZUZsb2F0aW5nUG9pbnRWYWwodik7IH0KK3N0
ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldyB2KSB7IHJldHVybiBz
dGQ6OnN0cmluZyh2KTsgfQorc3RkOjpzdHJpbmcgQWJzbFVucGFyc2VGbGFnKGNvbnN0IHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdikgeworICByZXR1cm4gYWJzbDo6U3RySm9pbih2LCAiLCIp
OworfQorCit9ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9tYXJzaGFsbGluZy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3Mv
bWFyc2hhbGxpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWUyOTU5NDM3YTFlOGZlMDUyNTg2NDBiYTY5YWMw
MTE0Mjk5NGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvbWFyc2hhbGxpbmcuaApA
QCAtMCwwICsxLDI1MyBAQAorLy8KKy8vICBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhv
cnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogbWFyc2hhbGxpbmcu
aAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmlu
ZXMgdGhlIEFQSSBmb3IgZXh0ZW5kaW5nIEFic2VpbCBmbGFnIHN1cHBvcnQgdG8KKy8vIGN1c3Rv
bSB0eXBlcywgYW5kIGRlZmluZXMgdGhlIHNldCBvZiBvdmVybG9hZHMgZm9yIGZ1bmRhbWVudGFs
IHR5cGVzLgorLy8KKy8vIE91dCBvZiB0aGUgYm94LCB0aGUgQWJzZWlsIGZsYWdzIGxpYnJhcnkg
c3VwcG9ydHMgdGhlIGZvbGxvd2luZyB0eXBlczoKKy8vCisvLyAqIGBib29sYAorLy8gKiBgaW50
MTZfdGAKKy8vICogYHVpbnQxNl90YAorLy8gKiBgaW50MzJfdGAKKy8vICogYHVpbnQzMl90YAor
Ly8gKiBgaW50NjRfdGAKKy8vICogYHVpbnQ2NF90YAorLy8gKiBgZmxvYXRgCisvLyAqIGBkb3Vi
bGVgCisvLyAqIGBzdGQ6OnN0cmluZ2AKKy8vICogYHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPmAK
Ky8vCisvLyBOb3RlIHRoYXQgc3VwcG9ydCBmb3IgaW50ZWdyYWwgdHlwZXMgaXMgaW1wbGVtZW50
ZWQgdXNpbmcgb3ZlcmxvYWRzIGZvcgorLy8gdmFyaWFibGUtd2lkdGggZnVuZGFtZW50YWwgdHlw
ZXMgKGBzaG9ydGAsIGBpbnRgLCBgbG9uZ2AsIGV0Yy4pLiBIb3dldmVyLAorLy8geW91IHNob3Vs
ZCBwcmVmZXIgdGhlIGZpeGVkLXdpZHRoIGludGVncmFsIHR5cGVzIChgaW50MzJfdGAsIGB1aW50
NjRfdGAsCisvLyBldGMuKSB3ZSd2ZSBub3RlZCBhYm92ZSB3aXRoaW4gZmxhZyBkZWZpbml0aW9u
cy4KKworLy8KKy8vIEluIGFkZGl0aW9uLCBzZXZlcmFsIEFic2VpbCBsaWJyYXJpZXMgcHJvdmlk
ZSB0aGVpciBvd24gY3VzdG9tIHN1cHBvcnQgZm9yCisvLyBBYnNlaWwgZmxhZ3MuCisvLworLy8g
VGhlIEFic2VpbCB0aW1lIGxpYnJhcnkgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBzdXBwb3J0IGZv
ciBjaXZpbCB0aW1lIHZhbHVlczoKKy8vCisvLyAqIGBhYnNsOjpDaXZpbFNlY29uZGAKKy8vICog
YGFic2w6OkNpdmlsTWludXRlYAorLy8gKiBgYWJzbDo6Q2l2aWxIb3VyYAorLy8gKiBgYWJzbDo6
Q2l2aWxEYXlgCisvLyAqIGBhYnNsOjpDaXZpbE1vbnRoYAorLy8gKiBgYWJzbDo6Q2l2aWxZZWFy
YAorLy8KKy8vIGFuZCBhbHNvIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgYWJz
b2x1dGUgdGltZSB2YWx1ZXM6CisvLworLy8gKiBgYWJzbDo6RHVyYXRpb25gCisvLyAqIGBhYnNs
OjpUaW1lYAorLy8KKy8vIEFkZGl0aW9uYWwgc3VwcG9ydCBmb3IgQWJzZWlsIHR5cGVzIHdpbGwg
YmUgbm90ZWQgaGVyZSBhcyBpdCBpcyBhZGRlZC4KKy8vCisvLyBZb3UgY2FuIGFsc28gcHJvdmlk
ZSB5b3VyIG93biBjdXN0b20gZmxhZ3MgYnkgYWRkaW5nIG92ZXJsb2FkcyBmb3IKKy8vIGBBYnNs
UGFyc2VGbGFnKClgIGFuZCBgQWJzbFVucGFyc2VGbGFnKClgIHRvIHlvdXIgdHlwZSBkZWZpbml0
aW9ucy4gKFNlZQorLy8gYmVsb3cuKQorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBB
ZGRpbmcgVHlwZSBTdXBwb3J0IGZvciBBYnNlaWwgRmxhZ3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gVG8gYWRkIHN1cHBvcnQgZm9yIHlvdXIgdXNlci1kZWZpbmVkIHR5cGUsIGFk
ZCBvdmVybG9hZHMgb2YgYEFic2xQYXJzZUZsYWcoKWAKKy8vIGFuZCBgQWJzbFVucGFyc2VGbGFn
KClgIGFzIGZyZWUgKG5vbi1tZW1iZXIpIGZ1bmN0aW9ucyB0byB5b3VyIHR5cGUuIElmIGBUYAor
Ly8gaXMgYSBjbGFzcyB0eXBlLCB0aGVzZSBmdW5jdGlvbnMgY2FuIGJlIGZyaWVuZCBmdW5jdGlv
biBkZWZpbml0aW9ucy4gVGhlc2UKKy8vIG92ZXJsb2FkcyBtdXN0IGJlIGFkZGVkIHRvIHRoZSBz
YW1lIG5hbWVzcGFjZSB3aGVyZSB0aGUgdHlwZSBpcyBkZWZpbmVkLCBzbworLy8gdGhhdCB0aGV5
IGNhbiBiZSBkaXNjb3ZlcmVkIGJ5IEFyZ3VtZW50LURlcGVuZGVudCBMb29rdXAgKEFETCkuCisv
LworLy8gRXhhbXBsZToKKy8vCisvLyAgIG5hbWVzcGFjZSBmb28geworLy8KKy8vICAgZW51bSBP
dXRwdXRNb2RlIHsga1BsYWluVGV4dCwga0h0bWwgfTsKKy8vCisvLyAgIC8vIEFic2xQYXJzZUZs
YWcgY29udmVydHMgZnJvbSBhIHN0cmluZyB0byBPdXRwdXRNb2RlLgorLy8gICAvLyBNdXN0IGJl
IGluIHNhbWUgbmFtZXNwYWNlIGFzIE91dHB1dE1vZGUuCisvLworLy8gICAvLyBQYXJzZXMgYW4g
T3V0cHV0TW9kZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUgZmxhZyB2YWx1ZSBgdGV4dC4gUmV0dXJu
cworLy8gICAvLyBgdHJ1ZWAgYW5kIHNldHMgYCptb2RlYCBvbiBzdWNjZXNzOyByZXR1cm5zIGBm
YWxzZWAgYW5kIHNldHMgYCplcnJvcmAKKy8vICAgLy8gb24gZmFpbHVyZS4KKy8vICAgYm9vbCBB
YnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsCisvLyAgICAgICAgICAgICAgICAg
ICAgICBPdXRwdXRNb2RlKiBtb2RlLAorLy8gICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcqIGVycm9yKSB7CisvLyAgICAgaWYgKHRleHQgPT0gInBsYWludGV4dCIpIHsKKy8vICAgICAg
ICptb2RlID0ga1BsYWluVGV4dDsKKy8vICAgICAgIHJldHVybiB0cnVlOworLy8gICAgIH0KKy8v
ICAgICBpZiAodGV4dCA9PSAiaHRtbCIpIHsKKy8vICAgICAgICptb2RlID0ga0h0bWw7CisvLyAg
ICAgIHJldHVybiB0cnVlOworLy8gICAgIH0KKy8vICAgICAqZXJyb3IgPSAidW5rbm93biB2YWx1
ZSBmb3IgZW51bWVyYXRpb24iOworLy8gICAgIHJldHVybiBmYWxzZTsKKy8vICB9CisvLworLy8g
IC8vIEFic2xVbnBhcnNlRmxhZyBjb252ZXJ0cyBmcm9tIGFuIE91dHB1dE1vZGUgdG8gYSBzdHJp
bmcuCisvLyAgLy8gTXVzdCBiZSBpbiBzYW1lIG5hbWVzcGFjZSBhcyBPdXRwdXRNb2RlLgorLy8K
Ky8vICAvLyBSZXR1cm5zIGEgdGV4dHVhbCBmbGFnIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IE91dHB1dE1vZGUgYG1vZGVgLgorLy8gIHN0ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxhZyhPdXRw
dXRNb2RlIG1vZGUpIHsKKy8vICAgIHN3aXRjaCAobW9kZSkgeworLy8gICAgICBjYXNlIGtQbGFp
blRleHQ6IHJldHVybiAicGxhaW50ZXh0IjsKKy8vICAgICAgY2FzZSBrSHRtbDogcmV0dXJuICJo
dG1sIjsKKy8vICAgIH0KKy8vICAgIHJldHVybiBhYnNsOjpTdHJDYXQobW9kZSk7CisvLyAgfQor
Ly8KKy8vIE5vdGljZSB0aGF0IG5laXRoZXIgYEFic2xQYXJzZUZsYWcoKWAgbm9yIGBBYnNsVW5w
YXJzZUZsYWcoKWAgYXJlIGNsYXNzCisvLyBtZW1iZXJzLCBidXQgZnJlZSBmdW5jdGlvbnMuIGBB
YnNsUGFyc2VGbGFnL0Fic2xVbnBhcnNlRmxhZygpYCBvdmVybG9hZHMKKy8vIGZvciBhIHR5cGUg
c2hvdWxkIG9ubHkgYmUgZGVjbGFyZWQgaW4gdGhlIHNhbWUgZmlsZSBhbmQgbmFtZXNwYWNlIGFz
IHNhaWQKKy8vIHR5cGUuIFRoZSBwcm9wZXIgYEFic2xQYXJzZUZsYWcvQWJzbFVucGFyc2VGbGFn
KClgIGltcGxlbWVudGF0aW9ucyBmb3IgYQorLy8gZ2l2ZW4gdHlwZSB3aWxsIGJlIGRpc2NvdmVy
ZWQgdmlhIEFyZ3VtZW50LURlcGVuZGVudCBMb29rdXAgKEFETCkuCisvLworLy8gYEFic2xQYXJz
ZUZsYWcoKWAgbWF5IG5lZWQsIGluIHR1cm4sIHRvIHBhcnNlIHNpbXBsZXIgY29uc3RpdHVlbnQg
dHlwZXMKKy8vIHVzaW5nIGBhYnNsOjpQYXJzZUZsYWcoKWAuIEZvciBleGFtcGxlLCBhIGN1c3Rv
bSBzdHJ1Y3QgYE15RmxhZ1R5cGVgCisvLyBjb25zaXN0aW5nIG9mIGEgYHN0ZDo6cGFpcjxpbnQs
IHN0ZDo6c3RyaW5nPmAgd291bGQgYWRkIGFuIGBBYnNsUGFyc2VGbGFnKClgCisvLyBvdmVybG9h
ZCBmb3IgaXRzIGBNeUZsYWdUeXBlYCBsaWtlIHNvOgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8g
ICBuYW1lc3BhY2UgbXlfZmxhZ190eXBlIHsKKy8vCisvLyAgIHN0cnVjdCBNeUZsYWdUeXBlIHsK
Ky8vICAgICBzdGQ6OnBhaXI8aW50LCBzdGQ6OnN0cmluZz4gbXlfZmxhZ19kYXRhOworLy8gICB9
OworLy8KKy8vICAgYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIE15
RmxhZ1R5cGUqIGZsYWcsCisvLyAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJy
KTsKKy8vCisvLyAgIHN0ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxhZyhjb25zdCBNeUZsYWdUeXBl
Jik7CisvLworLy8gICAvLyBXaXRoaW4gdGhlIGltcGxlbWVudGF0aW9uLCBgQWJzbFBhcnNlRmxh
ZygpYCB3aWxsLCBpbiB0dXJuIGludm9rZQorLy8gICAvLyBgYWJzbDo6UGFyc2VGbGFnKClgIG9u
IGl0cyBjb25zdGl0dWVudCBgaW50YCBhbmQgYHN0ZDo6c3RyaW5nYCB0eXBlcworLy8gICAvLyAo
d2hpY2ggaGF2ZSBidWlsdC1pbiBBYnNlaWwgZmxhZyBzdXBwb3J0LgorLy8KKy8vICAgYm9vbCBB
YnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3IHRleHQsIE15RmxhZ1R5cGUqIGZsYWcsCisv
LyAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJyKSB7CisvLyAgICAgc3RkOjpw
YWlyPGFic2w6OnN0cmluZ192aWV3LCBhYnNsOjpzdHJpbmdfdmlldz4gdG9rZW5zID0KKy8vICAg
ICAgICAgYWJzbDo6U3RyU3BsaXQodGV4dCwgJywnKTsKKy8vICAgICBpZiAoIWFic2w6OlBhcnNl
RmxhZyh0b2tlbnMuZmlyc3QsICZmbGFnLT5teV9mbGFnX2RhdGEuZmlyc3QsIGVycikpCisvLyAg
ICAgICAgIHJldHVybiBmYWxzZTsKKy8vICAgICBpZiAoIWFic2w6OlBhcnNlRmxhZyh0b2tlbnMu
c2Vjb25kLCAmZmxhZy0+bXlfZmxhZ19kYXRhLnNlY29uZCwgZXJyKSkKKy8vICAgICAgICAgcmV0
dXJuIGZhbHNlOworLy8gICAgIHJldHVybiB0cnVlOworLy8gICB9CisvLworLy8gICAvLyBTaW1p
bGFybHksIGZvciB1bnBhcnNpbmcsIHdlIGNhbiBzaW1wbHkgaW52b2tlIGBhYnNsOjpVbnBhcnNl
RmxhZygpYCBvbgorLy8gICAvLyB0aGUgY29uc3RpdHVlbnQgdHlwZXMuCisvLyAgIHN0ZDo6c3Ry
aW5nIEFic2xVbnBhcnNlRmxhZyhjb25zdCBNeUZsYWdUeXBlJiBmbGFnKSB7CisvLyAgICAgcmV0
dXJuIGFic2w6OlN0ckNhdChhYnNsOjpVbnBhcnNlRmxhZyhmbGFnLm15X2ZsYWdfZGF0YS5maXJz
dCksCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAiLCIsCisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjpVbnBhcnNlRmxhZyhmbGFnLm15X2ZsYWdfZGF0YS5zZWNvbmQpKTsKKy8v
ICAgfQorI2lmbmRlZiBBQlNMX0ZMQUdTX01BUlNIQUxMSU5HX0hfCisjZGVmaW5lIEFCU0xfRkxB
R1NfTUFSU0hBTExJTkdfSF8KKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsIHsKKworLy8gT3ZlcmxvYWRzIG9mIGBBYnNs
UGFyc2VGbGFnKClgIGFuZCBgQWJzbFVucGFyc2VGbGFnKClgIGZvciBmdW5kYW1lbnRhbCB0eXBl
cy4KK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgYm9vbCosIHN0ZDo6c3Ry
aW5nKik7Citib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIHNob3J0Kiwgc3Rk
OjpzdHJpbmcqKTsgICAgICAgICAgIC8vIE5PTElOVAorYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6
OnN0cmluZ192aWV3LCB1bnNpZ25lZCBzaG9ydCosIHN0ZDo6c3RyaW5nKik7ICAvLyBOT0xJTlQK
K2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgaW50Kiwgc3RkOjpzdHJpbmcq
KTsgICAgICAgICAgICAgLy8gTk9MSU5UCitib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5n
X3ZpZXcsIHVuc2lnbmVkIGludCosIHN0ZDo6c3RyaW5nKik7ICAgIC8vIE5PTElOVAorYm9vbCBB
YnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCBsb25nKiwgc3RkOjpzdHJpbmcqKTsgICAg
ICAgICAgICAvLyBOT0xJTlQKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywg
dW5zaWduZWQgbG9uZyosIHN0ZDo6c3RyaW5nKik7ICAgLy8gTk9MSU5UCitib29sIEFic2xQYXJz
ZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcsIGxvbmcgbG9uZyosIHN0ZDo6c3RyaW5nKik7ICAgICAg
IC8vIE5PTElOVAorYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCB1bnNpZ25l
ZCBsb25nIGxvbmcqLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKik7ICAvLyBOT0xJ
TlQKK2Jvb2wgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgZmxvYXQqLCBzdGQ6OnN0
cmluZyopOworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCBkb3VibGUqLCBz
dGQ6OnN0cmluZyopOworYm9vbCBBYnNsUGFyc2VGbGFnKGFic2w6OnN0cmluZ192aWV3LCBzdGQ6
OnN0cmluZyosIHN0ZDo6c3RyaW5nKik7Citib29sIEFic2xQYXJzZUZsYWcoYWJzbDo6c3RyaW5n
X3ZpZXcsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiosIHN0ZDo6c3RyaW5nKik7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorYm9vbCBJbnZva2VQYXJzZUZsYWcoYWJzbDo6c3RyaW5nX3ZpZXcg
aW5wdXQsIFQqIGRzdCwgc3RkOjpzdHJpbmcqIGVycikgeworICAvLyBDb21tZW50IG9uIG5leHQg
bGluZSBwcm92aWRlcyBhIGdvb2QgY29tcGlsZXIgZXJyb3IgbWVzc2FnZSBpZiBUCisgIC8vIGRv
ZXMgbm90IGhhdmUgQWJzbFBhcnNlRmxhZyhhYnNsOjpzdHJpbmdfdmlldywgVCosIHN0ZDo6c3Ry
aW5nKikuCisgIHJldHVybiBBYnNsUGFyc2VGbGFnKGlucHV0LCBkc3QsIGVycik7ICAvLyBJcyBU
IG1pc3NpbmcgQWJzbFBhcnNlRmxhZz8KK30KKworLy8gU3RyaW5ncyBhbmQgc3RkOjogY29udGFp
bmVycyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBvdmVybG9hZCByZXNvbHV0aW9uCisvLyBjb25zaWRl
cmF0aW9ucyBhcyBmdW5kYW1lbnRhbCB0eXBlcy4gTmFtaW5nIHRoZXNlICdBYnNsVW5wYXJzZUZs
YWcnIG1lYW5zIHdlCisvLyBjYW4gYXZvaWQgdGhlIG5lZWQgZm9yIGFkZGl0aW9uYWwgc3BlY2lh
bGl6YXRpb25zIG9mIFVucGFyc2UgKGJlbG93KS4KK3N0ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxh
ZyhhYnNsOjpzdHJpbmdfdmlldyB2KTsKK3N0ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxhZyhjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citz
dGQ6OnN0cmluZyBVbnBhcnNlKGNvbnN0IFQmIHYpIHsKKyAgLy8gQ29tbWVudCBvbiBuZXh0IGxp
bmUgcHJvdmlkZXMgYSBnb29kIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2UgaWYgVCBkb2VzIG5vdAor
ICAvLyBoYXZlIFVucGFyc2VGbGFnLgorICByZXR1cm4gQWJzbFVucGFyc2VGbGFnKHYpOyAgLy8g
SXMgVCBtaXNzaW5nIEFic2xVbnBhcnNlRmxhZz8KK30KKworLy8gT3ZlcmxvYWRzIGZvciBidWls
dGluIHR5cGVzLgorc3RkOjpzdHJpbmcgVW5wYXJzZShib29sIHYpOworc3RkOjpzdHJpbmcgVW5w
YXJzZShzaG9ydCB2KTsgICAgICAgICAgICAgICAvLyBOT0xJTlQKK3N0ZDo6c3RyaW5nIFVucGFy
c2UodW5zaWduZWQgc2hvcnQgdik7ICAgICAgLy8gTk9MSU5UCitzdGQ6OnN0cmluZyBVbnBhcnNl
KGludCB2KTsgICAgICAgICAgICAgICAgIC8vIE5PTElOVAorc3RkOjpzdHJpbmcgVW5wYXJzZSh1
bnNpZ25lZCBpbnQgdik7ICAgICAgICAvLyBOT0xJTlQKK3N0ZDo6c3RyaW5nIFVucGFyc2UobG9u
ZyB2KTsgICAgICAgICAgICAgICAgLy8gTk9MSU5UCitzdGQ6OnN0cmluZyBVbnBhcnNlKHVuc2ln
bmVkIGxvbmcgdik7ICAgICAgIC8vIE5PTElOVAorc3RkOjpzdHJpbmcgVW5wYXJzZShsb25nIGxv
bmcgdik7ICAgICAgICAgICAvLyBOT0xJTlQKK3N0ZDo6c3RyaW5nIFVucGFyc2UodW5zaWduZWQg
bG9uZyBsb25nIHYpOyAgLy8gTk9MSU5UCitzdGQ6OnN0cmluZyBVbnBhcnNlKGZsb2F0IHYpOwor
c3RkOjpzdHJpbmcgVW5wYXJzZShkb3VibGUgdik7CisKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19p
bnRlcm5hbAorCisvLyBQYXJzZUZsYWcoKQorLy8KKy8vIFBhcnNlcyBhIHN0cmluZyB2YWx1ZSBp
bnRvIGEgZmxhZyB2YWx1ZSBvZiB0eXBlIGBUYC4gRG8gbm90IGFkZCBvdmVybG9hZHMgb2YKKy8v
IHRoaXMgZnVuY3Rpb24gZm9yIHlvdXIgdHlwZSBkaXJlY3RseTsgaW5zdGVhZCwgYWRkIGFuIGBB
YnNsUGFyc2VGbGFnKClgCisvLyBmcmVlIGZ1bmN0aW9uIGFzIGRvY3VtZW50ZWQgYWJvdmUuCisv
LworLy8gU29tZSBpbXBsZW1lbnRhdGlvbnMgb2YgYEFic2xQYXJzZUZsYWcoKWAgZm9yIHR5cGVz
IHdoaWNoIGNvbnNpc3Qgb2Ygb3RoZXIsCisvLyBjb25zdGl0dWVudCB0eXBlcyB3aGljaCBhbHJl
YWR5IGhhdmUgQWJzZWlsIGZsYWcgc3VwcG9ydCwgbWF5IG5lZWQgdG8gY2FsbAorLy8gYGFic2w6
OlBhcnNlRmxhZygpYCBvbiB0aG9zZSBjb25zaXR1ZW50IHN0cmluZyB2YWx1ZXMuIChTZWUgYWJv
dmUuKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgYm9vbCBQYXJzZUZsYWcoYWJzbDo6
c3RyaW5nX3ZpZXcgaW5wdXQsIFQqIGRzdCwgc3RkOjpzdHJpbmcqIGVycm9yKSB7CisgIHJldHVy
biBmbGFnc19pbnRlcm5hbDo6SW52b2tlUGFyc2VGbGFnKGlucHV0LCBkc3QsIGVycm9yKTsKK30K
KworLy8gVW5wYXJzZUZsYWcoKQorLy8KKy8vIFVucGFyc2VzIGEgZmxhZyB2YWx1ZSBvZiB0eXBl
IGBUYCBpbnRvIGEgc3RyaW5nIHZhbHVlLiBEbyBub3QgYWRkIG92ZXJsb2FkcworLy8gb2YgdGhp
cyBmdW5jdGlvbiBmb3IgeW91ciB0eXBlIGRpcmVjdGx5OyBpbnN0ZWFkLCBhZGQgYW4gYEFic2xV
bnBhcnNlRmxhZygpYAorLy8gZnJlZSBmdW5jdGlvbiBhcyBkb2N1bWVudGVkIGFib3ZlLgorLy8K
Ky8vIFNvbWUgaW1wbGVtZW50YXRpb25zIG9mIGBBYnNsVW5wYXJzZUZsYWcoKWAgZm9yIHR5cGVz
IHdoaWNoIGNvbnNpc3Qgb2Ygb3RoZXIsCisvLyBjb25zdGl0dWVudCB0eXBlcyB3aGljaCBhbHJl
YWR5IGhhdmUgQWJzZWlsIGZsYWcgc3VwcG9ydCwgbWF5IHdhbnQgdG8gY2FsbAorLy8gYGFic2w6
OlVucGFyc2VGbGFnKClgIG9uIHRob3NlIGNvbnN0aXR1ZW50IHR5cGVzLiAoU2VlIGFib3ZlLikK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHN0ZDo6c3RyaW5nIFVucGFyc2VGbGFnKGNv
bnN0IFQmIHYpIHsKKyAgcmV0dXJuIGZsYWdzX2ludGVybmFsOjpVbnBhcnNlKHYpOworfQorCit9
ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfTUFSU0hBTExJTkdf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL21hcnNoYWxsaW5nX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9m
bGFncy9tYXJzaGFsbGluZ190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3Y2QxOTQwZTM0ZDIyZDBlMzVl
NTgwYjUxZWIzNjIwNmQwZmYxOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9tYXJz
aGFsbGluZ190ZXN0LmNjCkBAIC0wLDAgKzEsODk5IEBACisvLworLy8gIENvcHlyaWdodCAyMDE5
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9mbGFncy9tYXJzaGFsbGlu
Zy5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitu
YW1lc3BhY2UgeworCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdEJvb2xQYXJzaW5nKSB7Cisg
IHN0ZDo6c3RyaW5nIGVycjsKKyAgYm9vbCB2YWx1ZTsKKworICAvLyBUcnVlIHZhbHVlcy4KKyAg
RVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJUcnVlIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9UUlVFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJ0cnVlIiwg
JnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCJUUlVFIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHZhbHVl
KTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIlllcyIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygi
eWVzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHZhbHVlKTsKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6UGFyc2VGbGFnKCJZRVMiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUo
dmFsdWUpOworCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygidCIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxh
ZygiVCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisKKyAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJ5IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVF
KHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJZIiwgJnZhbHVlLCAmZXJy
KSk7CisgIEVYUEVDVF9UUlVFKHZhbHVlKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZs
YWcoIjEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUodmFsdWUpOworCisgIC8vIEZh
bHNlIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJGYWxzZSIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UodmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoImZhbHNlIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRSh2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiRkFMU0UiLCAmdmFsdWUsICZlcnIpKTsK
KyAgRVhQRUNUX0ZBTFNFKHZhbHVlKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWco
Ik5vIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRSh2YWx1ZSk7CisgIEVYUEVDVF9U
UlVFKGFic2w6OlBhcnNlRmxhZygibm8iLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNF
KHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJOTyIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRkFMU0UodmFsdWUpOworCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNl
RmxhZygiZiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UodmFsdWUpOworICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIkYiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZB
TFNFKHZhbHVlKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIm4iLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKHZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCJOIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRSh2YWx1ZSk7CisKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVD
VF9GQUxTRSh2YWx1ZSk7CisKKyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZy4KKyAgRVhQRUNUX1RS
VUUoYWJzbDo6UGFyc2VGbGFnKCIgIHRydWUiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RS
VUUodmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoInRydWUgICIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBh
cnNlRmxhZygiICB0cnVlICAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHZhbHVl
KTsKKworICAvLyBJbnZhbGlkIGlucHV0LgorICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFn
KCIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiICAi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXG4iLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXHQiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMiIsICZ2YWx1ZSwg
JmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIxMSIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJ0dCIsICZ2YWx1ZSwgJmVycikp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdEludDE2
UGFyc2luZykgeworICBzdGQ6OnN0cmluZyBlcnI7CisgIGludDE2X3QgdmFsdWU7CisKKyAgLy8g
RGVjaW1hbCB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMSIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoIjAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAwKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCItMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfRVEodmFsdWUsIC0xKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxMjMiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMjMpOworICBFWFBFQ1RfVFJVRShh
YnNsOjpQYXJzZUZsYWcoIi0xODc2NSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFs
dWUsIC0xODc2NSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiKzMiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAzKTsKKworICAvLyBMZWFkaW5nIHplcm8gdmFs
dWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAxIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygi
LTAwMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIC0xKTsKKyAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDAwMTAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVD
VF9FUSh2YWx1ZSwgMTAwKTsKKworICAvLyBIZXggdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIjB4MTAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAx
Nik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMFgyMzQiLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX0VRKHZhbHVlLCA1NjQpOworICAvLyBUT0RPKHJvZ2VlZmYpOiBmaXggYmVs
b3cgdmFsaWRhdGlvbnMKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiLTB4N0ZGRCIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfTkUodmFsdWUsIC0zKTsKKyAgRVhQRUNUX0ZBTFNF
KGFic2w6OlBhcnNlRmxhZygiKzB4MzEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FKHZh
bHVlLCA0OSk7CisKKyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZworICBFWFBFQ1RfVFJVRShhYnNs
OjpQYXJzZUZsYWcoIjEwICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAx
MCk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAxMSIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfRVEodmFsdWUsIDExKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCIgIDAxMiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTIpOworICBF
WFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAweDIyICAgICIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfRVEodmFsdWUsIDM0KTsKKworICAvLyBJbnZhbGlkIHZhbHVlcy4KKyAgRVhQRUNU
X0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxT
RShhYnNsOjpQYXJzZUZsYWcoIiAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFi
c2w6OlBhcnNlRmxhZygiICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6
OlBhcnNlRmxhZygiNDAwMDAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6
OlBhcnNlRmxhZygiLS0xIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQ
YXJzZUZsYWcoIlxuIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJz
ZUZsYWcoIlx0IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZs
YWcoIjJVIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWco
IkZGRiIsICZ2YWx1ZSwgJmVycikpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNo
YWxsaW5nVGVzdCwgVGVzdFVpbnQxNlBhcnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJyOworICB1
aW50MTZfdCB2YWx1ZTsKKworICAvLyBEZWNpbWFsIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCIxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMCIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRVEodmFsdWUsIDApOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEyMyIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEyMyk7CisgIEVYUEVDVF9UUlVF
KGFic2w6OlBhcnNlRmxhZygiKzMiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVl
LCAzKTsKKworICAvLyBMZWFkaW5nIHplcm8gdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoIjAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7Cisg
IEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDAwMDEw
MCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEwMCk7CisKKyAgLy8gSGV4
IHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDEwIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTYpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJz
ZUZsYWcoIjBYMjM0IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgNTY0KTsK
KyAgLy8gVE9ETyhyb2dlZWZmKTogZml4IGJlbG93IHZhbGlkYXRpb25zCisgIEVYUEVDVF9GQUxT
RShhYnNsOjpQYXJzZUZsYWcoIisweDMxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORSh2
YWx1ZSwgNDkpOworCisgIC8vIFdoaXRlc3BhY2UgaGFuZGxpbmcKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCIxMCAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwg
MTApOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAgMTEiLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxh
ZygiICAwMTIgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEyKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgMHgyMiAgICAiLCAmdmFsdWUsICZlcnIpKTsK
KyAgRVhQRUNUX0VRKHZhbHVlLCAzNCk7CisKKyAgLy8gSW52YWxpZCB2YWx1ZXMuCisgIEVYUEVD
VF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFM
U0UoYWJzbDo6UGFyc2VGbGFnKCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShh
YnNsOjpQYXJzZUZsYWcoIiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNs
OjpQYXJzZUZsYWcoIjcwMDAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNs
OjpQYXJzZUZsYWcoIi0xIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQ
YXJzZUZsYWcoIi0tMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFy
c2VGbGFnKCJcbiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VG
bGFnKCJcdCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFn
KCIyVSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCJG
RkYiLCAmdmFsdWUsICZlcnIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFs
bGluZ1Rlc3QsIFRlc3RJbnQzMlBhcnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJyOworICBpbnQz
Ml90IHZhbHVlOworCisgIC8vIERlY2ltYWwgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoIjEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVD
VF9FUSh2YWx1ZSwgMCk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiLTEiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAtMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6
OlBhcnNlRmxhZygiMTIzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTIz
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCItOTg3NjUiLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAtOTg3NjUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJz
ZUZsYWcoIiszIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMyk7CisKKyAg
Ly8gTGVhZGluZyB6ZXJvIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIw
MSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEpOworICBFWFBFQ1RfVFJV
RShhYnNsOjpQYXJzZUZsYWcoIi0wMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZh
bHVlLCAtMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDAwMDEwMCIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEwMCk7CisKKyAgLy8gSGV4IHZhbHVlcy4K
KyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDEwIiwgJnZhbHVlLCAmZXJyKSk7Cisg
IEVYUEVDVF9FUSh2YWx1ZSwgMTYpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjBY
MjM0IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgNTY0KTsKKyAgLy8gVE9E
Tyhyb2dlZWZmKTogZml4IGJlbG93IHZhbGlkYXRpb25zCisgIEVYUEVDVF9GQUxTRShhYnNsOjpQ
YXJzZUZsYWcoIi0weDdGRkZGRkZEIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORSh2YWx1
ZSwgLTMpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIrMHgzMSIsICZ2YWx1ZSwg
JmVycikpOworICBFWFBFQ1RfTkUodmFsdWUsIDQ5KTsKKworICAvLyBXaGl0ZXNwYWNlIGhhbmRs
aW5nCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMTAgICIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfRVEodmFsdWUsIDEwKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCIgIDExIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTEpOworICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAgMDEyICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQ
RUNUX0VRKHZhbHVlLCAxMik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiIDB4MjIg
ICAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMzQpOworCisgIC8vIElu
dmFsaWQgdmFsdWVzLgorICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiICIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIgICIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCI3MDAwMDAwMDAwMCIsICZ2YWx1ZSwg
JmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCItLTEiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXG4iLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiXHQiLCAmdmFsdWUsICZlcnIpKTsK
KyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMlUiLCAmdmFsdWUsICZlcnIpKTsKKyAg
RVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiRkZGIiwgJnZhbHVlLCAmZXJyKSk7Cit9CisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0VWludDMyUGFyc2lu
ZykgeworICBzdGQ6OnN0cmluZyBlcnI7CisgIHVpbnQzMl90IHZhbHVlOworCisgIC8vIERlY2lt
YWwgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCIwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMCk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMTIzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9F
USh2YWx1ZSwgMTIzKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIrMyIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDMpOworCisgIC8vIExlYWRpbmcgemVybyB2
YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDEiLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCIwMDAwMTAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTAwKTsKKwor
ICAvLyBIZXggdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4MTAiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxNik7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OlBhcnNlRmxhZygiMFgyMzQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVl
LCA1NjQpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4RkZGRkZGRkQiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCA0Mjk0OTY3MjkzKTsKKyAgLy8gVE9ETyhy
b2dlZWZmKTogZml4IGJlbG93IHZhbGlkYXRpb25zCisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJz
ZUZsYWcoIisweDMxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORSh2YWx1ZSwgNDkpOwor
CisgIC8vIFdoaXRlc3BhY2UgaGFuZGxpbmcKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCIxMCAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTApOworICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAgMTEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNU
X0VRKHZhbHVlLCAxMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAwMTIgICIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEyKTsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6UGFyc2VGbGFnKCIgMHgyMiAgICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VR
KHZhbHVlLCAzNCk7CisKKyAgLy8gSW52YWxpZCB2YWx1ZXMuCisgIEVYUEVDVF9GQUxTRShhYnNs
OjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFy
c2VGbGFnKCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZs
YWcoIiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWco
IjE0MDAwMDAwMDAwMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFy
c2VGbGFnKCItMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VG
bGFnKCItLTEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxh
ZygiXG4iLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygi
XHQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiMlUi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiRkZGIiwg
JnZhbHVlLCAmZXJyKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdU
ZXN0LCBUZXN0SW50NjRQYXJzaW5nKSB7CisgIHN0ZDo6c3RyaW5nIGVycjsKKyAgaW50NjRfdCB2
YWx1ZTsKKworICAvLyBEZWNpbWFsIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCIxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEo
dmFsdWUsIDApOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIi0xIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgLTEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJz
ZUZsYWcoIjEyMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDEyMyk7Cisg
IEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiLTk4NzY1IiwgJnZhbHVlLCAmZXJyKSk7Cisg
IEVYUEVDVF9FUSh2YWx1ZSwgLTk4NzY1KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCIrMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDMpOworCisgIC8vIExl
YWRpbmcgemVybyB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDEiLCAm
dmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCIwMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAx
KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDAwMTAwIiwgJnZhbHVlLCAmZXJy
KSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTAwKTsKKworICAvLyBIZXggdmFsdWVzLgorICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjB4MTAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNU
X0VRKHZhbHVlLCAxNik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMFhGRkZBQUFC
QkJDQ0NEREQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMTUyODI3Njg0
MTk3MDI3MjkzKTsKKyAgLy8gVE9ETyhyb2dlZWZmKTogZml4IGJlbG93IHZhbGlkYXRpb24KKyAg
RVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiLTB4N0ZGRkZGRkZGRkZGRkZGRSIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfTkUodmFsdWUsIC0yKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6
OlBhcnNlRmxhZygiKzB4MzEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FKHZhbHVlLCA0
OSk7CisKKyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJz
ZUZsYWcoIjEwICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMCk7Cisg
IEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAxMSIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRVEodmFsdWUsIDExKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDAx
MiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTIpOworICBFWFBFQ1Rf
VFJVRShhYnNsOjpQYXJzZUZsYWcoIiAweDdGICAgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfRVEodmFsdWUsIDEyNyk7CisKKyAgLy8gSW52YWxpZCB2YWx1ZXMuCisgIEVYUEVDVF9GQUxT
RShhYnNsOjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJz
bDo6UGFyc2VGbGFnKCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQ
YXJzZUZsYWcoIiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpQYXJz
ZUZsYWcoIjB4RkZGRkZGRkZGRkZGRkZGRkZGIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9G
QUxTRShhYnNsOjpQYXJzZUZsYWcoIi0tMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFM
U0UoYWJzbDo6UGFyc2VGbGFnKCJcbiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0Uo
YWJzbDo6UGFyc2VGbGFnKCJcdCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJz
bDo6UGFyc2VGbGFnKCIyVSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6
UGFyc2VGbGFnKCJGRkYiLCAmdmFsdWUsICZlcnIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
VEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRlc3RVSW50NjRQYXJzaW5nKSB7CisgIHN0ZDo6c3RyaW5n
IGVycjsKKyAgdWludDY0X3QgdmFsdWU7CisKKyAgLy8gRGVjaW1hbCB2YWx1ZXMuCisgIEVYUEVD
VF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEo
dmFsdWUsIDEpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAwKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCIxMjMiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAxMjMpOworICBF
WFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIisxMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfRVEodmFsdWUsIDEzKTsKKworICAvLyBMZWFkaW5nIHplcm8gdmFsdWVzLgorICBFWFBFQ1Rf
VFJVRShhYnNsOjpQYXJzZUZsYWcoIjAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2
YWx1ZSwgMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMDAxIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNl
RmxhZygiMDAwMDMwMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDMwMCk7
CisKKyAgLy8gSGV4IHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDEw
IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgMTYpOworICBFWFBFQ1RfVFJV
RShhYnNsOjpQYXJzZUZsYWcoIjBYRkZGRiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEo
dmFsdWUsIDY1NTM1KTsKKyAgLy8gVE9ETyhyb2dlZWZmKTogZml4IGJlbG93IHZhbGlkYXRpb24K
KyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiKzB4MzEiLCAmdmFsdWUsICZlcnIpKTsK
KyAgRVhQRUNUX05FKHZhbHVlLCA0OSk7CisKKyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZworICBF
WFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEwICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQ
RUNUX0VRKHZhbHVlLCAxMCk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAxMSIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIDExKTsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6UGFyc2VGbGFnKCIgIDAxMiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2
YWx1ZSwgMTIpOworCisgIC8vIEludmFsaWQgdmFsdWVzLgorICBFWFBFQ1RfRkFMU0UoYWJzbDo6
UGFyc2VGbGFnKCIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNl
RmxhZygiICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFn
KCIgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIw
eEZGRkZGRkZGRkZGRkZGRkZGRiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJz
bDo6UGFyc2VGbGFnKCItMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6
UGFyc2VGbGFnKCItLTEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBh
cnNlRmxhZygiXG4iLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNl
RmxhZygiXHQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxh
ZygiMlUiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygi
RkZGIiwgJnZhbHVlLCAmZXJyKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hh
bGxpbmdUZXN0LCBUZXN0RmxvYXRQYXJzaW5nKSB7CisgIHN0ZDo6c3RyaW5nIGVycjsKKyAgZmxv
YXQgdmFsdWU7CisKKyAgLy8gT3JkaW5hcnkgdmFsdWVzLgorICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoIjEuMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkxPQVRfRVEodmFsdWUs
IDEuM2YpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIi0wLjEiLCAmdmFsdWUsICZl
cnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgLTAuMWYpOworICBFWFBFQ1RfVFJVRShh
YnNsOjpQYXJzZUZsYWcoIiswLjAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVf
RVEodmFsdWUsIDAuMDFmKTsKKworICAvLyBTY2llbnRpZmljIHZhbHVlcy4KKyAgRVhQRUNUX1RS
VUUoYWJzbDo6UGFyc2VGbGFnKCIxLjJlMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9V
QkxFX0VRKHZhbHVlLCAxLjJlM2YpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjku
ODc2NTQwMmUtMzciLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwg
OS44NzY1NDAyZS0zN2YpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjAuMTFlKzMi
LCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgMC4xMWUrM2YpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIjEuZS0yMzAwIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDAuZik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBh
cnNlRmxhZygiMS5lKzIzMDAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjpp
c2luZih2YWx1ZSkpOworCisgIC8vIExlYWRpbmcgemVybyB2YWx1ZXMuCisgIEVYUEVDVF9UUlVF
KGFic2w6OlBhcnNlRmxhZygiMDEuNiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxF
X0VRKHZhbHVlLCAxLjZmKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMDAuMDAw
MSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAwLjAwMDFmKTsK
KworICAvLyBUcmFpbGluZyB6ZXJvIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCItNS4xMDAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUs
IC01LjFmKTsKKworICAvLyBFeGNlcHRpb25hbCB2YWx1ZXMuCisgIEVYUEVDVF9UUlVFKGFic2w6
OlBhcnNlRmxhZygiTmFOIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNu
YW4odmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJJbmYiLCAmdmFsdWUs
ICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc2luZih2YWx1ZSkpOworCisgIC8vIEhleCB2
YWx1ZXMKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDEwLjIzcDEyIiwgJnZhbHVl
LCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDY2MDk2LmYpOworICBFWFBFQ1Rf
VFJVRShhYnNsOjpQYXJzZUZsYWcoIi0weEYxLkEzcC0yIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVY
UEVDVF9ORUFSKHZhbHVlLCAtNjAuNDA5MmYsIDVlLTVmKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
UGFyc2VGbGFnKCIrMHgwLjBBQXAtMTIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05FQVIo
dmFsdWUsIDEuMDEzMjhlLTA1ZiwgNWUtMTFmKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VG
bGFnKCIweC4wMXAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORUFSKHZhbHVlLCAwLjAw
NzgxMjVmLCA1ZS04Zik7CisKKyAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZworICBFWFBFQ1RfVFJV
RShhYnNsOjpQYXJzZUZsYWcoIjEwLjEgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9V
QkxFX0VRKHZhbHVlLCAxMC4xZik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAy
LjM0IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDIuMzRmKTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIgIDUuNyAgIiwgJnZhbHVlLCAmZXJyKSk7
CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDUuN2YpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoIiAgLTB4RTAuRjNwMDEgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfTkVB
Uih2YWx1ZSwgLTQ0OS44OTg0Mzc1ZiwgNWUtOGYpOworCisgIC8vIEludmFsaWQgdmFsdWVzLgor
ICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKGFic2w6OlBhcnNlRmxhZygiICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1Rf
RkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIgICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFM
U0UoYWJzbDo6UGFyc2VGbGFnKCItLTEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNF
KGFic2w6OlBhcnNlRmxhZygiXG4iLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFi
c2w6OlBhcnNlRmxhZygiXHQiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6
OlBhcnNlRmxhZygiMi4zeHh4IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxTRShhYnNs
OjpQYXJzZUZsYWcoIjB4MC4xcEFBIiwgJnZhbHVlLCAmZXJyKSk7CisgIC8vIFRPRE8ocm9nZWVm
Zik6IGJlbG93IGFzc2VydGlvbiBzaG91bGQgZmFpbAorICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJz
ZUZsYWcoIjB4MC4xIiwgJnZhbHVlLCAmZXJyKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
U1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0RG91YmxlUGFyc2luZykgeworICBzdGQ6OnN0cmluZyBl
cnI7CisgIGRvdWJsZSB2YWx1ZTsKKworICAvLyBPcmRpbmFyeSB2YWx1ZXMuCisgIEVYUEVDVF9U
UlVFKGFic2w6OlBhcnNlRmxhZygiMS4zIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VC
TEVfRVEodmFsdWUsIDEuMyk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiLTAuMSIs
ICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAtMC4xKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIrMC4wMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfRE9VQkxFX0VRKHZhbHVlLCAwLjAxKTsKKworICAvLyBTY2llbnRpZmljIHZhbHVlcy4KKyAg
RVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxLjJlMyIsICZ2YWx1ZSwgJmVycikpOworICBF
WFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAxLjJlMyk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNl
RmxhZygiOS4wMDAwMDAwMmUtMTIzIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVf
RVEodmFsdWUsIDkuMDAwMDAwMDJlLTEyMyk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxh
ZygiMC4xMWUrMyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAw
LjExZSszKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxLmUtMjMwMCIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlLCAwKTsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6UGFyc2VGbGFnKCIxLmUrMjMwMCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfVFJV
RShzdGQ6OmlzaW5mKHZhbHVlKSk7CisKKyAgLy8gTGVhZGluZyB6ZXJvIHZhbHVlcy4KKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIwMS42IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVD
VF9ET1VCTEVfRVEodmFsdWUsIDEuNik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygi
MDAwLjAwMDEiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgMC4w
MDAxKTsKKworICAvLyBUcmFpbGluZyB6ZXJvIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUoYWJzbDo6
UGFyc2VGbGFnKCItNS4xMDAwIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEo
dmFsdWUsIC01LjEpOworCisgIC8vIEV4Y2VwdGlvbmFsIHZhbHVlcy4KKyAgRVhQRUNUX1RSVUUo
YWJzbDo6UGFyc2VGbGFnKCJOYU4iLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUoc3Rk
Ojppc25hbih2YWx1ZSkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIm5hbiIsICZ2
YWx1ZSwgJmVycikpOworICBFWFBFQ1RfVFJVRShzdGQ6OmlzbmFuKHZhbHVlKSk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OlBhcnNlRmxhZygiSW5mIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9U
UlVFKHN0ZDo6aXNpbmYodmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJp
bmYiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc2luZih2YWx1ZSkpOwor
CisgIC8vIEhleCB2YWx1ZXMKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIweDEwLjIz
cDEyIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDY2MDk2KTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCItMHhGMS5BM3AtMiIsICZ2YWx1ZSwgJmVy
cikpOworICBFWFBFQ1RfTkVBUih2YWx1ZSwgLTYwLjQwOTIsIDVlLTUpOworICBFWFBFQ1RfVFJV
RShhYnNsOjpQYXJzZUZsYWcoIisweDAuMEFBcC0xMiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfTkVBUih2YWx1ZSwgMS4wMTMyOGUtMDUsIDVlLTExKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
UGFyc2VGbGFnKCIweC4wMXAxIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ORUFSKHZhbHVl
LCAwLjAwNzgxMjUsIDVlLTgpOworCisgIC8vIFdoaXRlc3BhY2UgaGFuZGxpbmcKKyAgRVhQRUNU
X1RSVUUoYWJzbDo6UGFyc2VGbGFnKCIxMC4xICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNU
X0RPVUJMRV9FUSh2YWx1ZSwgMTAuMSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygi
ICAyLjM0IiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWUsIDIuMzQp
OworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiAgNS43ICAiLCAmdmFsdWUsICZlcnIp
KTsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZSwgNS43KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
UGFyc2VGbGFnKCIgIC0weEUwLkYzcDAxICAiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX05F
QVIodmFsdWUsIC00NDkuODk4NDM3NSwgNWUtOCk7CisKKyAgLy8gSW52YWxpZCB2YWx1ZXMuCisg
IEVYUEVDVF9GQUxTRShhYnNsOjpQYXJzZUZsYWcoIiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBF
Q1RfRkFMU0UoYWJzbDo6UGFyc2VGbGFnKCIgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9G
QUxTRShhYnNsOjpQYXJzZUZsYWcoIiAgIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9GQUxT
RShhYnNsOjpQYXJzZUZsYWcoIi0tMSIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0Uo
YWJzbDo6UGFyc2VGbGFnKCJcbiIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJz
bDo6UGFyc2VGbGFnKCJcdCIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6
UGFyc2VGbGFnKCIyLjN4eHgiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6
OlBhcnNlRmxhZygiMHgwLjFwQUEiLCAmdmFsdWUsICZlcnIpKTsKKyAgLy8gVE9ETyhyb2dlZWZm
KTogYmVsb3cgYXNzZXJ0aW9uIHNob3VsZCBmYWlsCisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNl
RmxhZygiMHgwLjEiLCAmdmFsdWUsICZlcnIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVT
VChNYXJzaGFsbGluZ1Rlc3QsIFRlc3RTdHJpbmdQYXJzaW5nKSB7CisgIHN0ZDo6c3RyaW5nIGVy
cjsKKyAgc3RkOjpzdHJpbmcgdmFsdWU7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCAiIik7CisgIEVYUEVDVF9U
UlVFKGFic2w6OlBhcnNlRmxhZygiICIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFs
dWUsICIgIik7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiICAgIiwgJnZhbHVlLCAm
ZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgIiAgICIpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQ
YXJzZUZsYWcoIlxuIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgIlxuIik7
CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiXHQiLCAmdmFsdWUsICZlcnIpKTsKKyAg
RVhQRUNUX0VRKHZhbHVlLCAiXHQiKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJh
c2RmZyIsICZ2YWx1ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsICJhc2RmZyIpOworICBF
WFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoImFzZGYgZ2hqayIsICZ2YWx1ZSwgJmVycikpOwor
ICBFWFBFQ1RfRVEodmFsdWUsICJhc2RmIGdoamsiKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFy
c2VGbGFnKCJhXG5iXG5jIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgImFc
bmJcbmMiKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJhc2RcMGZnaCIsICZ2YWx1
ZSwgJmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsICJhc2QiKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6UGFyc2VGbGFnKCJcXFxcIiwgJnZhbHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwg
IlxcXFwiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRl
c3RWZWN0b3JPZlN0cmluZ1BhcnNpbmcpIHsKKyAgc3RkOjpzdHJpbmcgZXJyOworICBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gdmFsdWU7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFn
KCIiLCAmdmFsdWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz57fSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiMSIsICZ2YWx1ZSwg
JmVycikpOworICBFWFBFQ1RfRVEodmFsdWUsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7IjEi
fSkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoImEsYiIsICZ2YWx1ZSwgJmVycikp
OworICBFWFBFQ1RfRVEodmFsdWUsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7ImEiLCAiYiJ9
KSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRmxhZygiYSxiLGMsIiwgJnZhbHVlLCAmZXJy
KSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHsiYSIsICJi
IiwgImMiLCAiIn0pKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJhLCwiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4o
eyJhIiwgIiIsICIifSkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpQYXJzZUZsYWcoIiwiLCAmdmFs
dWUsICZlcnIpKTsKKyAgRVhQRUNUX0VRKHZhbHVlLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4o
eyIiLCAiIn0pKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VGbGFnKCJhLCBiLGMgIiwgJnZh
bHVlLCAmZXJyKSk7CisgIEVYUEVDVF9FUSh2YWx1ZSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
KHsiYSIsICIgYiIsICJjICJ9KSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hh
bGxpbmdUZXN0LCBUZXN0Qm9vbFVucGFyc2luZykgeworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJz
ZUZsYWcodHJ1ZSksICJ0cnVlIik7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyhmYWxz
ZSksICJmYWxzZSIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVz
dCwgVGVzdEludDE2VW5wYXJzaW5nKSB7CisgIGludDE2X3QgdmFsdWU7CisKKyAgdmFsdWUgPSAx
OworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMSIpOworICB2YWx1ZSA9
IDA7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVl
ID0gLTE7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICItMSIpOworICB2
YWx1ZSA9IDk4NzY7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICI5ODc2
Iik7CisgIHZhbHVlID0gLTk4NzsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVl
KSwgIi05ODciKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGluZ1Rlc3Qs
IFRlc3RVaW50MTZVbnBhcnNpbmcpIHsKKyAgdWludDE2X3QgdmFsdWU7CisKKyAgdmFsdWUgPSAx
OworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMSIpOworICB2YWx1ZSA9
IDA7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVl
ID0gMTk4NzY7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxOTg3NiIp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdEludDMy
VW5wYXJzaW5nKSB7CisgIGludDMyX3QgdmFsdWU7CisKKyAgdmFsdWUgPSAxOworICBFWFBFQ1Rf
RVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMSIpOworICB2YWx1ZSA9IDA7CisgIEVYUEVD
VF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVlID0gLTE7CisgIEVY
UEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICItMSIpOworICB2YWx1ZSA9IDEyMzQ1
OworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMTIzNDUiKTsKKyAgdmFs
dWUgPSAtOTg3OworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiLTk4NyIp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdFVpbnQz
MlVucGFyc2luZykgeworICB1aW50MzJfdCB2YWx1ZTsKKworICB2YWx1ZSA9IDE7CisgIEVYUEVD
VF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxIik7CisgIHZhbHVlID0gMDsKKyAgRVhQ
RUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjAiKTsKKyAgdmFsdWUgPSAxMjM0NTAw
OworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMTIzNDUwMCIpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwgVGVzdEludDY0VW5wYXJz
aW5nKSB7CisgIGludDY0X3QgdmFsdWU7CisKKyAgdmFsdWUgPSAxOworICBFWFBFQ1RfRVEoYWJz
bDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMSIpOworICB2YWx1ZSA9IDA7CisgIEVYUEVDVF9FUShh
YnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVlID0gLTE7CisgIEVYUEVDVF9F
UShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICItMSIpOworICB2YWx1ZSA9IDEyMzQ1Njc4OUw7
CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxMjM0NTY3ODkiKTsKKyAg
dmFsdWUgPSAtOTg3NjU0MzIxTDsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVl
KSwgIi05ODc2NTQzMjEiKTsKKyAgdmFsdWUgPSAweDdGRkZGRkZGRkZGRkZGRkY7CisgIEVYUEVD
VF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICI5MjIzMzcyMDM2ODU0Nzc1ODA3Iik7Cisg
IHZhbHVlID0gMHhGRkZGRkZGRkZGRkZGRkZGOworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZs
YWcodmFsdWUpLCAiLTEiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVChNYXJzaGFsbGlu
Z1Rlc3QsIFRlc3RVaW50NjRVbnBhcnNpbmcpIHsKKyAgdWludDY0X3QgdmFsdWU7CisKKyAgdmFs
dWUgPSAxOworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMSIpOworICB2
YWx1ZSA9IDA7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwIik7Cisg
IHZhbHVlID0gMTIzNDU2Nzg5TDsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVl
KSwgIjEyMzQ1Njc4OSIpOworICB2YWx1ZSA9IDB4RkZGRkZGRkZGRkZGRkZGRjsKKyAgRVhQRUNU
X0VRKGFic2w6OlVucGFyc2VGbGFnKHZhbHVlKSwgIjE4NDQ2NzQ0MDczNzA5NTUxNjE1Iik7Cit9
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0RmxvYXRVbnBh
cnNpbmcpIHsKKyAgZmxvYXQgdmFsdWU7CisKKyAgdmFsdWUgPSAxLjFmOworICBFWFBFQ1RfRVEo
YWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMS4xIik7CisgIHZhbHVlID0gMC4wMWY7CisgIEVY
UEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwLjAxIik7CisgIHZhbHVlID0gMS4y
M2UtMmY7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIwLjAxMjMiKTsK
KyAgdmFsdWUgPSAtMC43MWY7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSks
ICItMC43MSIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUKE1hcnNoYWxsaW5nVGVzdCwg
VGVzdERvdWJsZVVucGFyc2luZykgeworICBkb3VibGUgdmFsdWU7CisKKyAgdmFsdWUgPSAxLjE7
CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSksICIxLjEiKTsKKyAgdmFsdWUg
PSAwLjAxOworICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAiMC4wMSIpOwor
ICB2YWx1ZSA9IDEuMjNlLTI7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZyh2YWx1ZSks
ICIwLjAxMjMiKTsKKyAgdmFsdWUgPSAtMC43MTsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VG
bGFnKHZhbHVlKSwgIi0wLjcxIik7CisgIHZhbHVlID0gLTA7CisgIEVYUEVDVF9FUShhYnNsOjpV
bnBhcnNlRmxhZyh2YWx1ZSksICIwIik7CisgIHZhbHVlID0gc3RkOjpuYW4oIiIpOworICBFWFBF
Q1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcodmFsdWUpLCAibmFuIik7CisgIHZhbHVlID0gc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworICBFWFBFQ1RfRVEoYWJzbDo6VW5w
YXJzZUZsYWcodmFsdWUpLCAiaW5mIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1QoTWFy
c2hhbGxpbmdUZXN0LCBUZXN0U3RyaW5nVW5wYXJzaW5nKSB7CisgIEVYUEVDVF9FUShhYnNsOjpV
bnBhcnNlRmxhZygiIiksICIiKTsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKCIgIiks
ICIgIik7CisgIEVYUEVDVF9FUShhYnNsOjpVbnBhcnNlRmxhZygicXdlcnR5IiksICJxd2VydHki
KTsKKyAgRVhQRUNUX0VRKGFic2w6OlVucGFyc2VGbGFnKCJBU0RGR0giKSwgIkFTREZHSCIpOwor
ICBFWFBFQ1RfRVEoYWJzbDo6VW5wYXJzZUZsYWcoIlxuXHQgICIpLCAiXG5cdCAgIik7Cit9CisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBUZXN0Um91bmR0
cmlwKFQgdikgeworICBUIG5ld192OworICBzdGQ6OnN0cmluZyBlcnI7CisgIEVYUEVDVF9UUlVF
KGFic2w6OlBhcnNlRmxhZyhhYnNsOjpVbnBhcnNlRmxhZyh2KSwgJm5ld192LCAmZXJyKSk7Cisg
IEVYUEVDVF9FUShuZXdfdiwgdik7Cit9CisKK1RFU1QoTWFyc2hhbGxpbmdUZXN0LCBUZXN0Rmxv
YXRSb3VuZFRyaXApIHsKKyAgVGVzdFJvdW5kdHJpcCgwLjFmKTsKKyAgVGVzdFJvdW5kdHJpcCgw
LjEyZik7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjNmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzRm
KTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Zik7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTZm
KTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NjdmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1
Njc4Zik7CisKKyAgVGVzdFJvdW5kdHJpcCgwLjFlMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEy
ZTIwZik7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjNlMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEy
MzRlMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1ZTIwZik7CisgIFRlc3RSb3VuZHRyaXAo
MC4xMjM0NTZlMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NjdlMjBmKTsKKyAgVGVzdFJv
dW5kdHJpcCgwLjEyMzQ1Njc4ZTIwZik7CisKKyAgVGVzdFJvdW5kdHJpcCgwLjFlLTIwZik7Cisg
IFRlc3RSb3VuZHRyaXAoMC4xMmUtMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyM2UtMjBmKTsK
KyAgVGVzdFJvdW5kdHJpcCgwLjEyMzRlLTIwZik7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NWUt
MjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NmUtMjBmKTsKKyAgVGVzdFJvdW5kdHJpcCgw
LjEyMzQ1NjdlLTIwZik7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3OGUtMjBmKTsKK30KKwor
VEVTVChNYXJzaGFsbGluZ1Rlc3QsIFRlc3REb3VibGVSb3VuZFRyaXApIHsKKyAgVGVzdFJvdW5k
dHJpcCgwLjEpOworICBUZXN0Um91bmR0cmlwKDAuMTIpOworICBUZXN0Um91bmR0cmlwKDAuMTIz
KTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDUpOwor
ICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2KTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NjcpOwor
ICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2NzgpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5
KTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEpOworICBUZXN0Um91bmR0cmlwKDAuMTIz
NDU2Nzg5MTIpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzKTsKKyAgVGVzdFJvdW5k
dHJpcCgwLjEyMzQ1Njc4OTEyMzQpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDUp
OworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2KTsKKyAgVGVzdFJvdW5kdHJpcCgw
LjEyMzQ1Njc4OTEyMzQ1NjcpOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2Nzgp
OworCisgIFRlc3RSb3VuZHRyaXAoMC4xZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyZTUwKTsK
KyAgVGVzdFJvdW5kdHJpcCgwLjEyM2U1MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0ZTUwKTsK
KyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1NmU1
MCk7CisgIFRlc3RSb3VuZHRyaXAoMC4xMjM0NTY3ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEy
MzQ1Njc4ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OWU1MCk7CisgIFRlc3RSb3Vu
ZHRyaXAoMC4xMjM0NTY3ODkxZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyZTUw
KTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyM2U1MCk7CisgIFRlc3RSb3VuZHRyaXAo
MC4xMjM0NTY3ODkxMjM0ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyMzQ1ZTUw
KTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyMzQ1NmU1MCk7CisgIFRlc3RSb3VuZHRy
aXAoMC4xMjM0NTY3ODkxMjM0NTY3ZTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEy
MzQ1Njc4ZTUwKTsKKworICBUZXN0Um91bmR0cmlwKDAuMWUtNTApOworICBUZXN0Um91bmR0cmlw
KDAuMTJlLTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyM2UtNTApOworICBUZXN0Um91bmR0cmlw
KDAuMTIzNGUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDVlLTUwKTsKKyAgVGVzdFJvdW5k
dHJpcCgwLjEyMzQ1NmUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2N2UtNTApOworICBU
ZXN0Um91bmR0cmlwKDAuMTIzNDU2NzhlLTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4
OWUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MWUtNTApOworICBUZXN0Um91bmR0
cmlwKDAuMTIzNDU2Nzg5MTJlLTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEyM2Ut
NTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNGUtNTApOworICBUZXN0Um91bmR0
cmlwKDAuMTIzNDU2Nzg5MTIzNDVlLTUwKTsKKyAgVGVzdFJvdW5kdHJpcCgwLjEyMzQ1Njc4OTEy
MzQ1NmUtNTApOworICBUZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2N2UtNTApOworICBU
ZXN0Um91bmR0cmlwKDAuMTIzNDU2Nzg5MTIzNDU2NzhlLTUwKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9wYXJzZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3BhcnNl
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE2YzRkNjhmYzI3MGUwYzA5YjY4MjQyNGVhMGNjNGRmNjg5YjcyM2YK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9mbGFncy9wYXJzZS5jYwpAQCAtMCwwICsxLDc1MSBA
QAorLy8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVk
ZSAiYWJzbC9mbGFncy9wYXJzZS5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRl
IDxmc3RyZWFtPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHR1cGxlPgorCisjaWZk
ZWYgX1dJTjMyCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJhYnNs
L2ZsYWdzL2ZsYWcuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFt
ZS5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcmVnaXN0cnkuaCIKKyNpbmNsdWRl
ICJhYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlLmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy91c2Fn
ZS5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvdXNhZ2VfY29uZmlnLmgiCisjaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaXAuaCIKKyNp
bmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgorCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworbmFtZXNwYWNl
IHsKKworQUJTTF9DT05TVF9JTklUIGFic2w6Ok11dGV4IHByb2Nlc3NpbmdfY2hlY2tzX2d1YXJk
KGFic2w6OmtDb25zdEluaXQpOworCitBQlNMX0NPTlNUX0lOSVQgYm9vbCBmbGFnZmlsZV9uZWVk
c19wcm9jZXNzaW5nCisgICAgQUJTTF9HVUFSREVEX0JZKHByb2Nlc3NpbmdfY2hlY2tzX2d1YXJk
KSA9IGZhbHNlOworQUJTTF9DT05TVF9JTklUIGJvb2wgZnJvbWVudl9uZWVkc19wcm9jZXNzaW5n
CisgICAgQUJTTF9HVUFSREVEX0JZKHByb2Nlc3NpbmdfY2hlY2tzX2d1YXJkKSA9IGZhbHNlOwor
QUJTTF9DT05TVF9JTklUIGJvb2wgdHJ5ZnJvbWVudl9uZWVkc19wcm9jZXNzaW5nCisgICAgQUJT
TF9HVUFSREVEX0JZKHByb2Nlc3NpbmdfY2hlY2tzX2d1YXJkKSA9IGZhbHNlOworCit9ICAvLyBu
YW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBmbGFnc19pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNl
IGFic2wKKworQUJTTF9GTEFHKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiwgZmxhZ2ZpbGUsIHt9
LAorICAgICAgICAgICJjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBmaWxlcyB0byBsb2FkIGZsYWdz
IGZyb20iKQorICAgIC5PblVwZGF0ZShbXSgpIHsKKyAgICAgIGlmIChhYnNsOjpHZXRGbGFnKEZM
QUdTX2ZsYWdmaWxlKS5lbXB0eSgpKSByZXR1cm47CisKKyAgICAgIGFic2w6Ok11dGV4TG9jayBs
KCZhYnNsOjpmbGFnc19pbnRlcm5hbDo6cHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpOworCisgICAg
ICAvLyBTZXR0aW5nIHRoaXMgZmxhZyB0d2ljZSBiZWZvcmUgaXQgaXMgaGFuZGxlZCBtb3N0IGxp
a2VseSBhbiBpbnRlcm5hbAorICAgICAgLy8gZXJyb3IgYW5kIHNob3VsZCBiZSByZXZpZXdlZCBi
eSBkZXZlbG9wZXJzLgorICAgICAgaWYgKGFic2w6OmZsYWdzX2ludGVybmFsOjpmbGFnZmlsZV9u
ZWVkc19wcm9jZXNzaW5nKSB7CisgICAgICAgIEFCU0xfSU5URVJOQUxfTE9HKFdBUk5JTkcsICJm
bGFnZmlsZSBzZXQgdHdpY2UgYmVmb3JlIGl0IGlzIGhhbmRsZWQiKTsKKyAgICAgIH0KKworICAg
ICAgYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6OmZsYWdmaWxlX25lZWRzX3Byb2Nlc3NpbmcgPSB0cnVl
OworICAgIH0pOworQUJTTF9GTEFHKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiwgZnJvbWVudiwg
e30sCisgICAgICAgICAgImNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZsYWdzIHRvIHNldCBmcm9t
IHRoZSBlbnZpcm9ubWVudCIKKyAgICAgICAgICAiIFt1c2UgJ2V4cG9ydCBGTEFHU19mbGFnMT12
YWx1ZSddIikKKyAgICAuT25VcGRhdGUoW10oKSB7CisgICAgICBpZiAoYWJzbDo6R2V0RmxhZyhG
TEFHU19mcm9tZW52KS5lbXB0eSgpKSByZXR1cm47CisKKyAgICAgIGFic2w6Ok11dGV4TG9jayBs
KCZhYnNsOjpmbGFnc19pbnRlcm5hbDo6cHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpOworCisgICAg
ICAvLyBTZXR0aW5nIHRoaXMgZmxhZyB0d2ljZSBiZWZvcmUgaXQgaXMgaGFuZGxlZCBtb3N0IGxp
a2VseSBhbiBpbnRlcm5hbAorICAgICAgLy8gZXJyb3IgYW5kIHNob3VsZCBiZSByZXZpZXdlZCBi
eSBkZXZlbG9wZXJzLgorICAgICAgaWYgKGFic2w6OmZsYWdzX2ludGVybmFsOjpmcm9tZW52X25l
ZWRzX3Byb2Nlc3NpbmcpIHsKKyAgICAgICAgQUJTTF9JTlRFUk5BTF9MT0coV0FSTklORywgImZy
b21lbnYgc2V0IHR3aWNlIGJlZm9yZSBpdCBpcyBoYW5kbGVkLiIpOworICAgICAgfQorCisgICAg
ICBhYnNsOjpmbGFnc19pbnRlcm5hbDo6ZnJvbWVudl9uZWVkc19wcm9jZXNzaW5nID0gdHJ1ZTsK
KyAgICB9KTsKK0FCU0xfRkxBRyhzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4sIHRyeWZyb21lbnYs
IHt9LAorICAgICAgICAgICJjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBmbGFncyB0byB0cnkgdG8g
c2V0IGZyb20gdGhlIGVudmlyb25tZW50IGlmICIKKyAgICAgICAgICAicHJlc2VudCIpCisgICAg
Lk9uVXBkYXRlKFtdKCkgeworICAgICAgaWYgKGFic2w6OkdldEZsYWcoRkxBR1NfdHJ5ZnJvbWVu
dikuZW1wdHkoKSkgcmV0dXJuOworCisgICAgICBhYnNsOjpNdXRleExvY2sgbCgmYWJzbDo6Zmxh
Z3NfaW50ZXJuYWw6OnByb2Nlc3NpbmdfY2hlY2tzX2d1YXJkKTsKKworICAgICAgLy8gU2V0dGlu
ZyB0aGlzIGZsYWcgdHdpY2UgYmVmb3JlIGl0IGlzIGhhbmRsZWQgbW9zdCBsaWtlbHkgYW4gaW50
ZXJuYWwKKyAgICAgIC8vIGVycm9yIGFuZCBzaG91bGQgYmUgcmV2aWV3ZWQgYnkgZGV2ZWxvcGVy
cy4KKyAgICAgIGlmIChhYnNsOjpmbGFnc19pbnRlcm5hbDo6dHJ5ZnJvbWVudl9uZWVkc19wcm9j
ZXNzaW5nKSB7CisgICAgICAgIEFCU0xfSU5URVJOQUxfTE9HKFdBUk5JTkcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ0cnlmcm9tZW52IHNldCB0d2ljZSBiZWZvcmUgaXQgaXMgaGFuZGxl
ZC4iKTsKKyAgICAgIH0KKworICAgICAgYWJzbDo6ZmxhZ3NfaW50ZXJuYWw6OnRyeWZyb21lbnZf
bmVlZHNfcHJvY2Vzc2luZyA9IHRydWU7CisgICAgfSk7CisKK0FCU0xfRkxBRyhzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4sIHVuZGVmb2ssIHt9LAorICAgICAgICAgICJjb21tYS1zZXBhcmF0ZWQg
bGlzdCBvZiBmbGFnIG5hbWVzIHRoYXQgaXQgaXMgb2theSB0byBzcGVjaWZ5ICIKKyAgICAgICAg
ICAib24gdGhlIGNvbW1hbmQgbGluZSBldmVuIGlmIHRoZSBwcm9ncmFtIGRvZXMgbm90IGRlZmlu
ZSBhIGZsYWcgIgorICAgICAgICAgICJ3aXRoIHRoYXQgbmFtZSIpOworCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgeworCituYW1lc3BhY2UgeworCitjbGFzcyBB
cmdzTGlzdCB7CisgcHVibGljOgorICBBcmdzTGlzdCgpIDogbmV4dF9hcmdfKDApIHt9CisgIEFy
Z3NMaXN0KGludCBhcmdjLCBjaGFyKiBhcmd2W10pIDogYXJnc18oYXJndiwgYXJndiArIGFyZ2Mp
LCBuZXh0X2FyZ18oMCkge30KKyAgZXhwbGljaXQgQXJnc0xpc3QoY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+JiBhcmdzKQorICAgICAgOiBhcmdzXyhhcmdzKSwgbmV4dF9hcmdfKDApIHt9
CisKKyAgLy8gUmV0dXJucyBzdWNjZXNzIHN0YXR1czogdHJ1ZSBpZiBwYXJzaW5nIHN1Y2Nlc3Nm
dWwsIGZhbHNlIG90aGVyd2lzZS4KKyAgYm9vbCBSZWFkRnJvbUZsYWdmaWxlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBmbGFnX2ZpbGVfbmFtZSk7CisKKyAgaW50IFNpemUoKSBjb25zdCB7IHJldHVybiBh
cmdzXy5zaXplKCkgLSBuZXh0X2FyZ187IH0KKyAgaW50IEZyb250SW5kZXgoKSBjb25zdCB7IHJl
dHVybiBuZXh0X2FyZ187IH0KKyAgYWJzbDo6c3RyaW5nX3ZpZXcgRnJvbnQoKSBjb25zdCB7IHJl
dHVybiBhcmdzX1tuZXh0X2FyZ19dOyB9CisgIHZvaWQgUG9wRnJvbnQoKSB7IG5leHRfYXJnXysr
OyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYXJnc187CisgIGlu
dCBuZXh0X2FyZ187Cit9OworCitib29sIEFyZ3NMaXN0OjpSZWFkRnJvbUZsYWdmaWxlKGNvbnN0
IHN0ZDo6c3RyaW5nJiBmbGFnX2ZpbGVfbmFtZSkgeworICBzdGQ6Omlmc3RyZWFtIGZsYWdfZmls
ZShmbGFnX2ZpbGVfbmFtZSk7CisKKyAgaWYgKCFmbGFnX2ZpbGUpIHsKKyAgICBmbGFnc19pbnRl
cm5hbDo6UmVwb3J0VXNhZ2VFcnJvcigKKyAgICAgICAgYWJzbDo6U3RyQ2F0KCJDYW4ndCBvcGVu
IGZsYWdmaWxlICIsIGZsYWdfZmlsZV9uYW1lKSwgdHJ1ZSk7CisKKyAgICByZXR1cm4gZmFsc2U7
CisgIH0KKworICAvLyBUaGlzIGFyZ3VtZW50IHJlcHJlc2VudHMgZmFrZSBhcmd2WzBdLCB3aGlj
aCBzaG91bGQgYmUgcHJlc2VudCBpbiBhbGwgYXJnCisgIC8vIGxpc3RzLgorICBhcmdzXy5wdXNo
X2JhY2soIiIpOworCisgIHN0ZDo6c3RyaW5nIGxpbmU7CisgIGJvb2wgc3VjY2VzcyA9IHRydWU7
CisKKyAgd2hpbGUgKHN0ZDo6Z2V0bGluZShmbGFnX2ZpbGUsIGxpbmUpKSB7CisgICAgYWJzbDo6
c3RyaW5nX3ZpZXcgc3RyaXBwZWQgPSBhYnNsOjpTdHJpcExlYWRpbmdBc2NpaVdoaXRlc3BhY2Uo
bGluZSk7CisKKyAgICBpZiAoc3RyaXBwZWQuZW1wdHkoKSB8fCBzdHJpcHBlZFswXSA9PSAnIycp
IHsKKyAgICAgIC8vIENvbW1lbnQgb3IgZW1wdHkgbGluZTsganVzdCBpZ25vcmUuCisgICAgICBj
b250aW51ZTsKKyAgICB9CisKKyAgICBpZiAoc3RyaXBwZWRbMF0gPT0gJy0nKSB7CisgICAgICBp
ZiAoc3RyaXBwZWQgPT0gIi0tIikgeworICAgICAgICBmbGFnc19pbnRlcm5hbDo6UmVwb3J0VXNh
Z2VFcnJvcigKKyAgICAgICAgICAgICJGbGFnZmlsZSBjYW4ndCBjb250YWluIHBvc2l0aW9uIGFy
Z3VtZW50cyBvciAtLSIsIHRydWUpOworCisgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIGFyZ3NfLnB1c2hfYmFjayhzdGQ6OnN0cmluZyhz
dHJpcHBlZCkpOworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgZmxhZ3NfaW50ZXJuYWw6
OlJlcG9ydFVzYWdlRXJyb3IoCisgICAgICAgIGFic2w6OlN0ckNhdCgiVW5leHBlY3RlZCBsaW5l
IGluIHRoZSBmbGFnZmlsZSAiLCBmbGFnX2ZpbGVfbmFtZSwgIjogIiwKKyAgICAgICAgICAgICAg
ICAgICAgIGxpbmUpLAorICAgICAgICB0cnVlKTsKKworICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAg
fQorCisgIHJldHVybiBzdWNjZXNzOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBSZWFkcyB0
aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aCBuYW1lIGBuYW1lYCBhbmQgc3RvcmVzIHJlc3Vs
dHMgaW4KKy8vIGB2YWx1ZWAuIElmIHZhcmlhYmxlIGlzIG5vdCBwcmVzZW50IGluIGVudmlyb25t
ZW50IHJldHVybnMgZmFsc2UsIG90aGVyd2lzZQorLy8gcmV0dXJucyB0cnVlLgorYm9vbCBHZXRF
bnZWYXIoY29uc3QgY2hhciogdmFyX25hbWUsIHN0ZDo6c3RyaW5nKiB2YXJfdmFsdWUpIHsKKyNp
ZmRlZiBfV0lOMzIKKyAgY2hhciBidWZbMTAyNF07CisgIGF1dG8gZ2V0X3JlcyA9IEdldEVudmly
b25tZW50VmFyaWFibGVBKHZhcl9uYW1lLCBidWYsIHNpemVvZihidWYpKTsKKyAgaWYgKGdldF9y
ZXMgPj0gc2l6ZW9mKGJ1ZikpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBpZiAoZ2V0
X3JlcyA9PSAwKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgKnZhcl92YWx1ZSA9IHN0
ZDo6c3RyaW5nKGJ1ZiwgZ2V0X3Jlcyk7CisjZWxzZQorICBjb25zdCBjaGFyKiB2YWwgPSA6Omdl
dGVudih2YXJfbmFtZSk7CisgIGlmICh2YWwgPT0gbnVsbHB0cikgeworICAgIHJldHVybiBmYWxz
ZTsKKyAgfQorCisgICp2YXJfdmFsdWUgPSB2YWw7CisjZW5kaWYKKworICByZXR1cm4gdHJ1ZTsK
K30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUmV0dXJuczoKKy8vICBGbGFnIG5hbWUgb3IgZW1w
dHkgaWYgYXJnPSAtLQorLy8gIEZsYWcgdmFsdWUgYWZ0ZXIgPSBpbiAtLWZsYWc9dmFsdWUgKGVt
cHR5IGlmIC0tZm9vKQorLy8gICJJcyBlbXB0eSB2YWx1ZSIgc3RhdHVzLiBUcnVlIGlmIGFyZz0g
LS1mb289LCBmYWxzZSBvdGhlcndpc2UuIFRoaXMgaXMKKy8vICByZXF1aXJlZCB0byBzZXBhcmF0
ZSAtLWZvbyBmcm9tIC0tZm9vPS4KKy8vIEZvciBleGFtcGxlOgorLy8gICAgICBhcmcgICAgICAg
ICAgIHJldHVybiB2YWx1ZXMKKy8vICAgIi0tZm9vPWJhciIgLT4geyJmb28iLCAiYmFyIiwgZmFs
c2V9LgorLy8gICAiLS1mb28iICAgICAtPiB7ImZvbyIsICIiLCBmYWxzZX0uCisvLyAgICItLWZv
bz0iICAgIC0+IHsiZm9vIiwgIiIsIHRydWV9Lgorc3RkOjp0dXBsZTxhYnNsOjpzdHJpbmdfdmll
dywgYWJzbDo6c3RyaW5nX3ZpZXcsIGJvb2w+IFNwbGl0TmFtZUFuZFZhbHVlKAorICAgIGFic2w6
OnN0cmluZ192aWV3IGFyZykgeworICAvLyBBbGxvdyAtZm9vIGFuZCAtLWZvbworICBhYnNsOjpD
b25zdW1lUHJlZml4KCZhcmcsICItIik7CisKKyAgaWYgKGFyZy5lbXB0eSgpKSB7CisgICAgcmV0
dXJuIHN0ZDo6bWFrZV90dXBsZSgiIiwgIiIsIGZhbHNlKTsKKyAgfQorCisgIGF1dG8gZXF1YWxf
c2lnbl9wb3MgPSBhcmcuZmluZCgiPSIpOworCisgIGFic2w6OnN0cmluZ192aWV3IGZsYWdfbmFt
ZSA9IGFyZy5zdWJzdHIoMCwgZXF1YWxfc2lnbl9wb3MpOworCisgIGFic2w6OnN0cmluZ192aWV3
IHZhbHVlOworICBib29sIGlzX2VtcHR5X3ZhbHVlID0gZmFsc2U7CisKKyAgaWYgKGVxdWFsX3Np
Z25fcG9zICE9IGFic2w6OnN0cmluZ192aWV3OjpucG9zKSB7CisgICAgdmFsdWUgPSBhcmcuc3Vi
c3RyKGVxdWFsX3NpZ25fcG9zICsgMSk7CisgICAgaXNfZW1wdHlfdmFsdWUgPSB2YWx1ZS5lbXB0
eSgpOworICB9CisKKyAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShmbGFnX25hbWUsIHZhbHVlLCBp
c19lbXB0eV92YWx1ZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFJldHVybnM6CisvLyAg
Zm91bmQgZmxhZyBvciBudWxscHRyCisvLyAgaXMgbmVnYXRpdmUgaW4gY2FzZSBvZiAtLW5vZm9v
CitzdGQ6OnR1cGxlPENvbW1hbmRMaW5lRmxhZyosIGJvb2w+IExvY2F0ZUZsYWcoYWJzbDo6c3Ry
aW5nX3ZpZXcgZmxhZ19uYW1lKSB7CisgIENvbW1hbmRMaW5lRmxhZyogZmxhZyA9IGZsYWdzX2lu
dGVybmFsOjpGaW5kQ29tbWFuZExpbmVGbGFnKGZsYWdfbmFtZSk7CisgIGJvb2wgaXNfbmVnYXRp
dmUgPSBmYWxzZTsKKworICBpZiAoIWZsYWcgJiYgYWJzbDo6Q29uc3VtZVByZWZpeCgmZmxhZ19u
YW1lLCAibm8iKSkgeworICAgIGZsYWcgPSBmbGFnc19pbnRlcm5hbDo6RmluZENvbW1hbmRMaW5l
RmxhZyhmbGFnX25hbWUpOworICAgIGlzX25lZ2F0aXZlID0gdHJ1ZTsKKyAgfQorCisgIHJldHVy
biBzdGQ6Om1ha2VfdHVwbGUoZmxhZywgaXNfbmVnYXRpdmUpOworfQorCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisvLyBWZXJpZnkgdGhhdCBkZWZhdWx0IHZhbHVlcyBvZiB0eXBlZCBmbGFncyBtdXN0IGJl
IGNvbnZlcnRpYmxlIHRvIHN0cmluZyBhbmQKKy8vIGJhY2suCit2b2lkIENoZWNrRGVmYXVsdFZh
bHVlc1BhcnNpbmdSb3VuZHRyaXAoKSB7CisjaWZuZGVmIE5ERUJVRworICBmbGFnc19pbnRlcm5h
bDo6Rm9yRWFjaEZsYWcoWyZdKENvbW1hbmRMaW5lRmxhZyogZmxhZykgeworICAgIGlmIChmbGFn
LT5Jc1JldGlyZWQoKSkgcmV0dXJuOworCisjZGVmaW5lIElHTk9SRV9UWVBFKFQpIFwKKyAgaWYg
KGZsYWctPklzT2ZUeXBlPFQ+KCkpIHJldHVybjsKKworICAgIEFCU0xfRkxBR1NfSU5URVJOQUxf
Rk9SX0VBQ0hfTE9DS19GUkVFKElHTk9SRV9UWVBFKQorICAgIElHTk9SRV9UWVBFKHN0ZDo6c3Ry
aW5nKQorICAgIElHTk9SRV9UWVBFKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPikKKyN1bmRlZiBJ
R05PUkVfVFlQRQorCisgICAgZmxhZy0+Q2hlY2tEZWZhdWx0VmFsdWVQYXJzaW5nUm91bmR0cmlw
KCk7CisgIH0pOworI2VuZGlmCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFJldHVybnMgc3Vj
Y2VzcyBzdGF0dXMsIHdoaWNoIGlzIHRydWUgaWYgd2Ugc3VjY2Vzc2Z1bGx5IHJlYWQgYWxsIGZs
YWcgZmlsZXMsCisvLyBpbiB3aGljaCBjYXNlIG5ldyBBcmdMaXN0cyBhcmUgYXBwZW5kZWQgdG8g
dGhlIGlucHV0X2FyZ3MgaW4gYSByZXZlcnNlIG9yZGVyCisvLyBvZiBmaWxlIG5hbWVzIGluIHRo
ZSBpbnB1dCBmbGFnZmlsZXMgbGlzdC4gVGhpcyBvcmRlciBlbnN1cmVzIHRoYXQgZmxhZ3MgZnJv
bQorLy8gdGhlIGZpcnN0IGZsYWdmaWxlIGluIHRoZSBpbnB1dCBsaXN0IGFyZSBwcm9jZXNzZWQg
YmVmb3JlIHRoZSBzZWNvbmQgZmxhZ2ZpbGUKKy8vIGV0Yy4KK2Jvb2wgUmVhZEZsYWdmaWxlcyhj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGZsYWdmaWxlcywKKyAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjxBcmdzTGlzdD4qIGlucHV0X2FyZ3MpIHsKKyAgYm9vbCBzdWNjZXNz
ID0gdHJ1ZTsKKyAgZm9yIChhdXRvIGl0ID0gZmxhZ2ZpbGVzLnJiZWdpbigpOyBpdCAhPSBmbGFn
ZmlsZXMucmVuZCgpOyArK2l0KSB7CisgICAgQXJnc0xpc3QgYWw7CisKKyAgICBpZiAoYWwuUmVh
ZEZyb21GbGFnZmlsZSgqaXQpKSB7CisgICAgICBpbnB1dF9hcmdzLT5wdXNoX2JhY2soYWwpOwor
ICAgIH0gZWxzZSB7CisgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgfQorICB9CisKKyAgcmV0
dXJuIHN1Y2Nlc3M7Cit9CisKKy8vIFJldHVybnMgc3VjY2VzcyBzdGF0dXMsIHdoaWNoIGlzIHRy
dWUgaWYgd2VyZSBhYmxlIHRvIGxvY2F0ZSBhbGwgZW52aXJvbm1lbnQKKy8vIHZhcmlhYmxlcyBj
b3JyZWN0bHkgb3IgaWYgZmFpbF9vbl9hYnNlbnRfaW5fZW52IGlzIGZhbHNlLiBUaGUgZW52aXJv
bm1lbnQKKy8vIHZhcmlhYmxlIG5hbWVzIGFyZSBleHBlY3RlZCB0byBiZSBvZiB0aGUgZm9ybSBg
RkxBR1NfPGZsYWdfbmFtZT5gLCB3aGVyZQorLy8gYGZsYWdfbmFtZWAgaXMgYSBzdHJpbmcgZnJv
bSB0aGUgaW5wdXQgZmxhZ19uYW1lcyBsaXN0LiBJZiBzdWNjZXNzZnVsIHdlCisvLyBhcHBlbmQg
YSBzaW5nbGUgQXJnTGlzdCBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dF9hcmdzLgorYm9vbCBSZWFk
RmxhZ3NGcm9tRW52KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgZmxhZ19uYW1lcywK
KyAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxBcmdzTGlzdD4qIGlucHV0X2FyZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmYWlsX29uX2Fic2VudF9pbl9lbnYpIHsKKyAg
Ym9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGFyZ3M7CisK
KyAgLy8gVGhpcyBhcmd1bWVudCByZXByZXNlbnRzIGZha2UgYXJndlswXSwgd2hpY2ggc2hvdWxk
IGJlIHByZXNlbnQgaW4gYWxsIGFyZworICAvLyBsaXN0cy4KKyAgYXJncy5wdXNoX2JhY2soIiIp
OworCisgIGZvciAoY29uc3QgYXV0byYgZmxhZ19uYW1lIDogZmxhZ19uYW1lcykgeworICAgIC8v
IEF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbi4KKyAgICBpZiAoZmxhZ19uYW1lID09ICJmcm9tZW52
IiB8fCBmbGFnX25hbWUgPT0gInRyeWZyb21lbnYiKSB7CisgICAgICBmbGFnc19pbnRlcm5hbDo6
UmVwb3J0VXNhZ2VFcnJvcigKKyAgICAgICAgICBhYnNsOjpTdHJDYXQoIkluZmluaXRlIHJlY3Vy
c2lvbiBvbiBmbGFnICIsIGZsYWdfbmFtZSksIHRydWUpOworCisgICAgICBzdWNjZXNzID0gZmFs
c2U7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBlbnZu
YW1lID0gYWJzbDo6U3RyQ2F0KCJGTEFHU18iLCBmbGFnX25hbWUpOworICAgIHN0ZDo6c3RyaW5n
IGVudnZhbDsKKyAgICBpZiAoIUdldEVudlZhcihlbnZuYW1lLmNfc3RyKCksICZlbnZ2YWwpKSB7
CisgICAgICBpZiAoZmFpbF9vbl9hYnNlbnRfaW5fZW52KSB7CisgICAgICAgIGZsYWdzX2ludGVy
bmFsOjpSZXBvcnRVc2FnZUVycm9yKAorICAgICAgICAgICAgYWJzbDo6U3RyQ2F0KGVudm5hbWUs
ICIgbm90IGZvdW5kIGluIGVudmlyb25tZW50IiksIHRydWUpOworCisgICAgICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsKKyAgICAgIH0KKworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgYXJncy5w
dXNoX2JhY2soYWJzbDo6U3RyQ2F0KCItLSIsIGZsYWdfbmFtZSwgIj0iLCBlbnZ2YWwpKTsKKyAg
fQorCisgIGlmIChzdWNjZXNzKSB7CisgICAgaW5wdXRfYXJncy0+ZW1wbGFjZV9iYWNrKGFyZ3Mp
OworICB9CisKKyAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFJl
dHVybnMgc3VjY2VzcyBzdGF0dXMsIHdoaWNoIGlzIHRydWUgaWYgd2VyZSBhYmxlIHRvIGhhbmRs
ZSBhbGwgZ2VuZXJhdG9yCisvLyBmbGFncyAoZmxhZ2ZpbGUsIGZyb21lbnYsIHRyeWZyb21lbXYp
IHN1Y2Nlc3NmdWxseS4KK2Jvb2wgSGFuZGxlR2VuZXJhdG9yRmxhZ3Moc3RkOjp2ZWN0b3I8QXJn
c0xpc3Q+KiBpbnB1dF9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4qIGZsYWdmaWxlX3ZhbHVlKSB7CisgIGJvb2wgc3VjY2VzcyA9IHRydWU7
CisKKyAgYWJzbDo6TXV0ZXhMb2NrIGwoJmZsYWdzX2ludGVybmFsOjpwcm9jZXNzaW5nX2NoZWNr
c19ndWFyZCk7CisKKyAgLy8gZmxhZ2ZpbGUgY291bGQgaGF2ZSBiZWVuIHNldCBlaXRoZXIgb24g
YSBjb21tYW5kIGxpbmUgb3IKKyAgLy8gcHJvZ3JhbW1hdGljYWxseSBiZWZvcmUgaW52b2tpbmcg
UGFyc2VDb21tYW5kTGluZS4gTm90ZSB0aGF0IHdlIGRvIG5vdAorICAvLyBhY3R1YWxseSBwcm9j
ZXNzIGFyZ3VtZW50cyBzcGVjaWZpZWQgaW4gdGhlIGZsYWdmaWxlLCBidXQgaW5zdGVhZAorICAv
LyBjcmVhdGUgYSBzZWNvbmRhcnkgYXJndW1lbnRzIGxpc3QgdG8gYmUgcHJvY2Vzc2VkIGFsb25n
IHdpdGggdGhlIHJlc3QKKyAgLy8gb2YgdGhlIGNvbWFtbmQgbGluZSBhcmd1bWVudHMuIFNpbmNl
IHdlIGFsd2F5cyB0aGUgcHJvY2VzcyBtb3N0IHJlY2VudGx5CisgIC8vIGNyZWF0ZWQgbGlzdCBv
ZiBhcmd1bWVudHMgZmlyc3QsIHRoaXMgd2lsbCByZXN1bHQgaW4gZmxhZ2ZpbGUgYXJndW1lbnQK
KyAgLy8gYmVpbmcgcHJvY2Vzc2VkIGJlZm9yZSBhbnkgb3RoZXIgYXJndW1lbnQgaW4gdGhlIGNv
bW1hbmQgbGluZS4gSWYKKyAgLy8gRkxBR1NfZmxhZ2ZpbGUgY29udGFpbnMgbW9yZSB0aGFuIG9u
ZSBmaWxlIG5hbWUgd2UgY3JlYXRlIG11bHRpcGxlIG5ldworICAvLyBsZXZlbHMgb2YgYXJndW1l
bnRzIGluIGEgcmV2ZXJzZSBvcmRlciBvZiBmaWxlIG5hbWVzLiBUaHVzIHdlIGFsd2F5cworICAv
LyBwcm9jZXNzIGFyZ3VtZW50cyBmcm9tIGZpcnN0IGZpbGUgYmVmb3JlIGFyZ3VtZW50cyBjb250
YWluaW5nIGluIGEKKyAgLy8gc2Vjb25kIGZpbGUsIGV0Yy4gSWYgZmxhZ2ZpbGUgY29udGFpbnMg
YW5vdGhlcgorICAvLyAtLWZsYWdmaWxlIGluc2lkZSBvZiBpdCwgaXQgd2lsbCBwcm9kdWNlIG5l
dyBsZXZlbCBvZiBhcmd1bWVudHMgYW5kCisgIC8vIHByb2Nlc3NlZCBiZWZvcmUgdGhlIHJlc3Qg
b2YgdGhlIGZsYWdmaWxlLiBXZSBhcmUgYWxzbyBjb2xsZWN0aW5nIGFsbAorICAvLyBmbGFnZmls
ZXMgc2V0IG9uIG9yaWdpbmFsIGNvbW1hbmQgbGluZS4gVW5saWtlIHRoZSByZXN0IG9mIHRoZSBm
bGFncywKKyAgLy8gdGhpcyBmbGFnIGNhbiBiZSBzZXQgbXVsdGlwbGUgdGltZXMgYW5kIGlzIGV4
cGVjdGVkIHRvIGJlIGhhbmRsZWQKKyAgLy8gbXVsdGlwbGUgdGltZXMuIFdlIGFyZSBjb2xsZWN0
aW5nIHRoZW0gYWxsIGludG8gYSBzaW5nbGUgbGlzdCBhbmQgc2V0CisgIC8vIHRoZSB2YWx1ZSBv
ZiBGTEFHU19mbGFnZmlsZSB0byB0aGF0IHZhbHVlIGF0IHRoZSBlbmQgb2YgdGhlIHBhcnNpbmcu
CisgIGlmIChmbGFnc19pbnRlcm5hbDo6ZmxhZ2ZpbGVfbmVlZHNfcHJvY2Vzc2luZykgeworICAg
IGF1dG8gZmxhZ2ZpbGVzID0gYWJzbDo6R2V0RmxhZyhGTEFHU19mbGFnZmlsZSk7CisKKyAgICBp
ZiAoaW5wdXRfYXJncy0+c2l6ZSgpID09IDEpIHsKKyAgICAgIGZsYWdmaWxlX3ZhbHVlLT5pbnNl
cnQoZmxhZ2ZpbGVfdmFsdWUtPmVuZCgpLCBmbGFnZmlsZXMuYmVnaW4oKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ2ZpbGVzLmVuZCgpKTsKKyAgICB9CisKKyAgICBzdWNjZXNz
ICY9IFJlYWRGbGFnZmlsZXMoZmxhZ2ZpbGVzLCBpbnB1dF9hcmdzKTsKKworICAgIGZsYWdzX2lu
dGVybmFsOjpmbGFnZmlsZV9uZWVkc19wcm9jZXNzaW5nID0gZmFsc2U7CisgIH0KKworICAvLyBT
aW1pbGFyIHRvIGZsYWdmaWxlIGZyb21lbnYvdHJ5ZnJvbWVtdiBjYW4gYmUgc2V0IGJvdGgKKyAg
Ly8gcHJvZ3JhbW1hdGljYWxseSBhbmQgYXQgcnVudGltZSBvbiBhIGNvbW1hbmQgbGluZS4gVW5s
aWtlIGZsYWdmaWxlIHRoZXNlCisgIC8vIGNhbid0IGJlIHJlY3Vyc2l2ZS4KKyAgaWYgKGZsYWdz
X2ludGVybmFsOjpmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcpIHsKKyAgICBhdXRvIGZsYWdzX2xp
c3QgPSBhYnNsOjpHZXRGbGFnKEZMQUdTX2Zyb21lbnYpOworCisgICAgc3VjY2VzcyAmPSBSZWFk
RmxhZ3NGcm9tRW52KGZsYWdzX2xpc3QsIGlucHV0X2FyZ3MsIHRydWUpOworCisgICAgZmxhZ3Nf
aW50ZXJuYWw6OmZyb21lbnZfbmVlZHNfcHJvY2Vzc2luZyA9IGZhbHNlOworICB9CisKKyAgaWYg
KGZsYWdzX2ludGVybmFsOjp0cnlmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcpIHsKKyAgICBhdXRv
IGZsYWdzX2xpc3QgPSBhYnNsOjpHZXRGbGFnKEZMQUdTX3RyeWZyb21lbnYpOworCisgICAgc3Vj
Y2VzcyAmPSBSZWFkRmxhZ3NGcm9tRW52KGZsYWdzX2xpc3QsIGlucHV0X2FyZ3MsIGZhbHNlKTsK
KworICAgIGZsYWdzX2ludGVybmFsOjp0cnlmcm9tZW52X25lZWRzX3Byb2Nlc3NpbmcgPSBmYWxz
ZTsKKyAgfQorCisgIHJldHVybiBzdWNjZXNzOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lk
IFJlc2V0R2VuZXJhdG9yRmxhZ3MoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBmbGFn
ZmlsZV92YWx1ZSkgeworICAvLyBTZXR0aW5nIGZsYWdmaWxlIHRvIHRoZSB2YWx1ZSB3aGljaCBj
b2xsYXRlcyBhbGwgdGhlIHZhbHVlcyBzZXQgb24gYQorICAvLyBjb21tYW5kIGxpbmUgYW5kIHBy
b2dyYW1tYXRpY2FsbHkuIFNvIGlmIGNvbW1hbmQgbGluZSBsb29rZWQgbGlrZQorICAvLyAtLWZs
YWdmaWxlPWYxIC0tZmxhZ2ZpbGU9ZjIgdGhlIGZpbmFsIHZhbHVlIG9mIHRoZSBGTEFHU19mbGFn
ZmlsZSBmbGFnIGlzCisgIC8vIGdvaW5nIHRvIGJlIHsiZjEiLCAiZjIifQorICBpZiAoIWZsYWdm
aWxlX3ZhbHVlLmVtcHR5KCkpIHsKKyAgICBhYnNsOjpTZXRGbGFnKCZGTEFHU19mbGFnZmlsZSwg
ZmxhZ2ZpbGVfdmFsdWUpOworICAgIGFic2w6Ok11dGV4TG9jayBsKCZmbGFnc19pbnRlcm5hbDo6
cHJvY2Vzc2luZ19jaGVja3NfZ3VhcmQpOworICAgIGZsYWdzX2ludGVybmFsOjpmbGFnZmlsZV9u
ZWVkc19wcm9jZXNzaW5nID0gZmFsc2U7CisgIH0KKworICAvLyBmcm9tZW52L3RyeWZyb21lbnYg
YXJlIHNldCB0byA8dW5kZWZpbmVkPiB2YWx1ZS4KKyAgaWYgKCFhYnNsOjpHZXRGbGFnKEZMQUdT
X2Zyb21lbnYpLmVtcHR5KCkpIHsKKyAgICBhYnNsOjpTZXRGbGFnKCZGTEFHU19mcm9tZW52LCB7
fSk7CisgIH0KKyAgaWYgKCFhYnNsOjpHZXRGbGFnKEZMQUdTX3RyeWZyb21lbnYpLmVtcHR5KCkp
IHsKKyAgICBhYnNsOjpTZXRGbGFnKCZGTEFHU190cnlmcm9tZW52LCB7fSk7CisgIH0KKworICBh
YnNsOjpNdXRleExvY2sgbCgmZmxhZ3NfaW50ZXJuYWw6OnByb2Nlc3NpbmdfY2hlY2tzX2d1YXJk
KTsKKyAgZmxhZ3NfaW50ZXJuYWw6OmZyb21lbnZfbmVlZHNfcHJvY2Vzc2luZyA9IGZhbHNlOwor
ICBmbGFnc19pbnRlcm5hbDo6dHJ5ZnJvbWVudl9uZWVkc19wcm9jZXNzaW5nID0gZmFsc2U7Cit9
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFJldHVybnM6CisvLyAgc3VjY2VzcyBzdGF0dXMKKy8v
ICBkZWR1Y2VkIHZhbHVlCisvLyBXZSBhcmUgYWxzbyBtdXRhdGluZyBjdXJyX2xpc3QgaW4gY2Fz
ZSBpZiB3ZSBuZWVkIHRvIGdldCBhIGhvbGQgb2YgbmV4dAorLy8gYXJndW1lbnQgaW4gdGhlIGlu
cHV0Lgorc3RkOjp0dXBsZTxib29sLCBhYnNsOjpzdHJpbmdfdmlldz4gRGVkdWNlRmxhZ1ZhbHVl
KGNvbnN0IENvbW1hbmRMaW5lRmxhZyYgZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldyB2YWx1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX25l
Z2F0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNfZW1wdHlfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQXJnc0xpc3QqIGN1cnJfbGlzdCkgeworICAvLyBWYWx1ZSBp
cyBlaXRoZXIgYW4gYXJndW1lbnQgc3VmZml4IGFmdGVyIGA9YCBpbiAiLS1mb289PHZhbHVlPiIK
KyAgLy8gb3Igc2VwYXJhdGUgYXJndW1lbnQgaW4gY2FzZSBvZiAiLS1mb28iICI8dmFsdWU+Ii4K
KworICAvLyBib29sZWFuIGZsYWdzIGhhdmUgdGhlc2UgZm9ybXM6CisgIC8vICAgLS1mb28KKyAg
Ly8gICAtLW5vZm9vCisgIC8vICAgLS1mb289dHJ1ZQorICAvLyAgIC0tZm9vPWZhbHNlCisgIC8v
ICAgLS1ub2Zvbz08dmFsdWU+IGlzIG5vdCBzdXBwb3J0ZWQKKyAgLy8gICAtLWZvbyA8dmFsdWU+
IGlzIG5vdCBzdXBwb3J0ZWQKKworICAvLyBub24gYm9vbGVhbiBmbGFncyBoYXZlIHRoZXNlIGZv
cm1zOgorICAvLyAtLWZvbz08dmFsdWU+CisgIC8vIC0tZm9vIDx2YWx1ZT4KKyAgLy8gLS1ub2Zv
byBpcyBub3Qgc3VwcG9ydGVkCisKKyAgaWYgKGZsYWcuSXNPZlR5cGU8Ym9vbD4oKSkgeworICAg
IGlmICh2YWx1ZS5lbXB0eSgpKSB7CisgICAgICBpZiAoaXNfZW1wdHlfdmFsdWUpIHsKKyAgICAg
ICAgLy8gIi0tYm9vbF9mbGFnPSIgY2FzZQorICAgICAgICBmbGFnc19pbnRlcm5hbDo6UmVwb3J0
VXNhZ2VFcnJvcigKKyAgICAgICAgICAgIGFic2w6OlN0ckNhdCgKKyAgICAgICAgICAgICAgICAi
TWlzc2luZyB0aGUgdmFsdWUgYWZ0ZXIgYXNzaWdubWVudCBmb3IgdGhlIGJvb2xlYW4gZmxhZyAn
IiwKKyAgICAgICAgICAgICAgICBmbGFnLk5hbWUoKSwgIiciKSwKKyAgICAgICAgICAgIHRydWUp
OworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKGZhbHNlLCAiIik7CisgICAgICB9CisK
KyAgICAgIC8vICItLWJvb2xfZmxhZyIgY2FzZQorICAgICAgdmFsdWUgPSBpc19uZWdhdGl2ZSA/
ICIwIiA6ICIxIjsKKyAgICB9IGVsc2UgaWYgKGlzX25lZ2F0aXZlKSB7CisgICAgICAvLyAiLS1u
b2Jvb2xfZmxhZz1ZIiBjYXNlCisgICAgICBmbGFnc19pbnRlcm5hbDo6UmVwb3J0VXNhZ2VFcnJv
cigKKyAgICAgICAgICBhYnNsOjpTdHJDYXQoIk5lZ2F0aXZlIGZvcm0gd2l0aCBhc3NpZ25tZW50
IGlzIG5vdCB2YWxpZCBmb3IgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgImJvb2xlYW4g
ZmxhZyAnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgZmxhZy5OYW1lKCksICInIiksCisgICAg
ICAgICAgdHJ1ZSk7CisgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKGZhbHNlLCAiIik7Cisg
ICAgfQorICB9IGVsc2UgaWYgKGlzX25lZ2F0aXZlKSB7CisgICAgLy8gIi0tbm9pbnRfZmxhZz0x
IiBjYXNlCisgICAgZmxhZ3NfaW50ZXJuYWw6OlJlcG9ydFVzYWdlRXJyb3IoCisgICAgICAgIGFi
c2w6OlN0ckNhdCgiTmVnYXRpdmUgZm9ybSBpcyBub3QgdmFsaWQgZm9yIHRoZSBmbGFnICciLCBm
bGFnLk5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICInIiksCisgICAgICAgIHRydWUpOwor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoZmFsc2UsICIiKTsKKyAgfSBlbHNlIGlmICh2YWx1
ZS5lbXB0eSgpICYmICghaXNfZW1wdHlfdmFsdWUpKSB7CisgICAgaWYgKGN1cnJfbGlzdC0+U2l6
ZSgpID09IDEpIHsKKyAgICAgIC8vICItLWludF9mbGFnIiBjYXNlCisgICAgICBmbGFnc19pbnRl
cm5hbDo6UmVwb3J0VXNhZ2VFcnJvcigKKyAgICAgICAgICBhYnNsOjpTdHJDYXQoIk1pc3Npbmcg
dGhlIHZhbHVlIGZvciB0aGUgZmxhZyAnIiwgZmxhZy5OYW1lKCksICInIiksCisgICAgICAgICAg
dHJ1ZSk7CisgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKGZhbHNlLCAiIik7CisgICAgfQor
CisgICAgLy8gIi0taW50X2ZsYWciICIxMCIgY2FzZQorICAgIGN1cnJfbGlzdC0+UG9wRnJvbnQo
KTsKKyAgICB2YWx1ZSA9IGN1cnJfbGlzdC0+RnJvbnQoKTsKKworICAgIC8vIEhldXJpc3RpYyB0
byBkZXRlY3QgdGhlIGNhc2Ugd2hlcmUgc29tZW9uZSB0cmVhdHMgYSBzdGQ6OnN0cmluZyBhcmcK
KyAgICAvLyBsaWtlIGEgYm9vbCBvciBqdXN0IGZvcmdldHMgdG8gcGFzcyBhIHZhbHVlOgorICAg
IC8vIC0tbXlfc3RyaW5nX3ZhciAtLWZvbz1iYXIKKyAgICAvLyBXZSBsb29rIGZvciBhIGZsYWcg
b2Ygc3RkOjpzdHJpbmcgdHlwZSwgd2hvc2UgdmFsdWUgYmVnaW5zIHdpdGggYQorICAgIC8vIGRh
c2ggYW5kIGNvcnJlc3BvbmRzIHRvIGtub3duIGZsYWcgb3Igc3RhbmRhbG9uZSAtLS4KKyAgICBp
ZiAodmFsdWVbMF0gPT0gJy0nICYmIGZsYWcuSXNPZlR5cGU8c3RkOjpzdHJpbmc+KCkpIHsKKyAg
ICAgIGF1dG8gbWF5YmVfZmxhZ19uYW1lID0gc3RkOjpnZXQ8MD4oU3BsaXROYW1lQW5kVmFsdWUo
dmFsdWUuc3Vic3RyKDEpKSk7CisKKyAgICAgIGlmIChtYXliZV9mbGFnX25hbWUuZW1wdHkoKSB8
fAorICAgICAgICAgIHN0ZDo6Z2V0PDA+KExvY2F0ZUZsYWcobWF5YmVfZmxhZ19uYW1lKSkgIT0g
bnVsbHB0cikgeworICAgICAgICAvLyAiLS1zdHJpbmdfZmxhZyIgIi0ta25vd25fZmxhZyIgY2Fz
ZQorICAgICAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAgICAgICAgIFdBUk5JTkcsCisgICAg
ICAgICAgICBhYnNsOjpTdHJDYXQoIkRpZCB5b3UgcmVhbGx5IG1lYW4gdG8gc2V0IGZsYWcgJyIs
IGZsYWcuTmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICInIHRvIHRoZSB2YWx1ZSAn
IiwgdmFsdWUsICInPyIpKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICByZXR1cm4gc3RkOjpt
YWtlX3R1cGxlKHRydWUsIHZhbHVlKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBDYW5J
Z25vcmVVbmRlZmluZWRGbGFnKGFic2w6OnN0cmluZ192aWV3IGZsYWdfbmFtZSkgeworICBhdXRv
IHVuZGVmb2sgPSBhYnNsOjpHZXRGbGFnKEZMQUdTX3VuZGVmb2spOworICBpZiAoc3RkOjpmaW5k
KHVuZGVmb2suYmVnaW4oKSwgdW5kZWZvay5lbmQoKSwgZmxhZ19uYW1lKSAhPSB1bmRlZm9rLmVu
ZCgpKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICBpZiAoYWJzbDo6Q29uc3VtZVByZWZp
eCgmZmxhZ19uYW1lLCAibm8iKSAmJgorICAgICAgc3RkOjpmaW5kKHVuZGVmb2suYmVnaW4oKSwg
dW5kZWZvay5lbmQoKSwgZmxhZ19uYW1lKSAhPSB1bmRlZm9rLmVuZCgpKSB7CisgICAgcmV0dXJu
IHRydWU7CisgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitzdGQ6OnZlY3RvcjxjaGFyKj4gUGFyc2VDb21tYW5kTGluZUltcGwo
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBcmd2TGlzdEFjdGlvbiBhcmdfbGlzdF9hY3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVXNhZ2VGbGFnc0FjdGlvbiB1c2FnZV9mbGFnX2FjdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPblVuZGVmaW5lZEZsYWcgb25f
dW5kZWZfZmxhZykgeworICBBQlNMX0lOVEVSTkFMX0NIRUNLKGFyZ2MgPiAwLCAiTWlzc2luZyBh
cmd2WzBdIik7CisKKyAgLy8gVGhpcyByb3V0aW5lIGRvZXMgbm90IHJldHVybiBhbnl0aGluZyBz
aW5jZSB3ZSBhYm9ydCBvbiBmYWlsdXJlLgorICBDaGVja0RlZmF1bHRWYWx1ZXNQYXJzaW5nUm91
bmR0cmlwKCk7CisKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGZsYWdmaWxlX3ZhbHVlOwor
CisgIHN0ZDo6dmVjdG9yPEFyZ3NMaXN0PiBpbnB1dF9hcmdzOworICBpbnB1dF9hcmdzLnB1c2hf
YmFjayhBcmdzTGlzdChhcmdjLCBhcmd2KSk7CisKKyAgc3RkOjp2ZWN0b3I8Y2hhcio+IG91dHB1
dF9hcmdzOworICBzdGQ6OnZlY3RvcjxjaGFyKj4gcG9zaXRpb25hbF9hcmdzOworICBvdXRwdXRf
YXJncy5yZXNlcnZlKGFyZ2MpOworCisgIC8vIFRoaXMgaXMgdGhlIGxpc3Qgb2YgdW5kZWZpbmVk
IGZsYWdzLiBUaGUgZWxlbWVudCBvZiB0aGUgbGlzdCBpcyB0aGUgcGFpcgorICAvLyBjb25zaXN0
aW5nIG9mIGJvb2xlYW4gaW5kaWNhdGluZyBpZiBmbGFnIGNhbWUgZnJvbSBjb21tYW5kIGxpbmUg
KHZzIGZyb20KKyAgLy8gc29tZSBmbGFnIGZpbGUgd2UndmUgcmVhZCkgYW5kIGZsYWcgbmFtZS4K
KyAgLy8gVE9ETyhyb2dlZWZmKTogRWxpbWluYXRlIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBw
YWlyIGFmdGVyIGNsZWFudXAuCisgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxib29sLCBzdGQ6OnN0
cmluZz4+IHVuZGVmaW5lZF9mbGFnX25hbWVzOworCisgIC8vIFNldCBwcm9ncmFtIGludm9jYXRp
b24gbmFtZSBpZiBpdCBpcyBub3Qgc2V0IGJlZm9yZS4KKyAgaWYgKFByb2dyYW1JbnZvY2F0aW9u
TmFtZSgpID09ICJVTktOT1dOIikgeworICAgIGZsYWdzX2ludGVybmFsOjpTZXRQcm9ncmFtSW52
b2NhdGlvbk5hbWUoYXJndlswXSk7CisgIH0KKyAgb3V0cHV0X2FyZ3MucHVzaF9iYWNrKGFyZ3Zb
MF0pOworCisgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbGlzdCBvZiB0aGUgaW5wdXQgYXJndW1l
bnRzLiBGaXJzdCBsZXZlbCBhcmUgYXJndW1lbnRzCisgIC8vIG9yaWdpbmF0ZWQgZnJvbSBhcmdj
L2FyZ3YuIEZvbGxvd2luZyBsZXZlbHMgYXJlIGFyZ3VtZW50cyBvcmlnaW5hdGVkIGZyb20KKyAg
Ly8gcmVjdXJzaXZlIHBhcnNpbmcgb2YgZmxhZ2ZpbGUocykuCisgIGJvb2wgc3VjY2VzcyA9IHRy
dWU7CisgIHdoaWxlICghaW5wdXRfYXJncy5lbXB0eSgpKSB7CisgICAgLy8gMTAuIEZpcnN0IHdl
IHByb2Nlc3MgdGhlIGJ1aWx0LWluIGdlbmVyYXRvciBmbGFncy4KKyAgICBzdWNjZXNzICY9IEhh
bmRsZUdlbmVyYXRvckZsYWdzKCZpbnB1dF9hcmdzLCAmZmxhZ2ZpbGVfdmFsdWUpOworCisgICAg
Ly8gMzAuIFNlbGVjdCB0b3AtbW9zdCAobW9zdCByZWNlbnQpIGFyZ3VtZW50cyBsaXN0LiBJZiBp
dCBpcyBlbXB0eSBkcm9wIGl0CisgICAgLy8gYW5kIHJlLXRyeS4KKyAgICBBcmdzTGlzdCYgY3Vy
cl9saXN0ID0gaW5wdXRfYXJncy5iYWNrKCk7CisKKyAgICBjdXJyX2xpc3QuUG9wRnJvbnQoKTsK
KworICAgIGlmIChjdXJyX2xpc3QuU2l6ZSgpID09IDApIHsKKyAgICAgIGlucHV0X2FyZ3MucG9w
X2JhY2soKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIC8vIDQwLiBQaWNrIHVwIHRo
ZSBmcm9udCByZW1haW5pbmcgYXJndW1lbnQgaW4gdGhlIGN1cnJlbnQgbGlzdC4gSWYgY3VycmVu
dAorICAgIC8vIHN0YWNrIG9mIGFyZ3VtZW50IGxpc3RzIGNvbnRhaW5zIG9ubHkgb25lIGVsZW1l
bnQgLSB3ZSBhcmUgcHJvY2Vzc2luZyBhbgorICAgIC8vIGFyZ3VtZW50IGZyb20gdGhlIG9yaWdp
bmFsIGFyZ3YuCisgICAgYWJzbDo6c3RyaW5nX3ZpZXcgYXJnKGN1cnJfbGlzdC5Gcm9udCgpKTsK
KyAgICBib29sIGFyZ19mcm9tX2FyZ3YgPSBpbnB1dF9hcmdzLnNpemUoKSA9PSAxOworCisgICAg
Ly8gNTAuIElmIGFyZ3VtZW50IGRvZXMgbm90IHN0YXJ0IHdpdGggLSBvciBpcyBqdXN0ICItIiAt
IHRoaXMgaXMKKyAgICAvLyBwb3NpdGlvbmFsIGFyZ3VtZW50LgorICAgIGlmICghYWJzbDo6Q29u
c3VtZVByZWZpeCgmYXJnLCAiLSIpIHx8IGFyZy5lbXB0eSgpKSB7CisgICAgICBBQlNMX0lOVEVS
TkFMX0NIRUNLKGFyZ19mcm9tX2FyZ3YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJGbGFn
ZmlsZSBjYW5ub3QgY29udGFpbiBwb3NpdGlvbmFsIGFyZ3VtZW50Iik7CisKKyAgICAgIHBvc2l0
aW9uYWxfYXJncy5wdXNoX2JhY2soYXJndltjdXJyX2xpc3QuRnJvbnRJbmRleCgpXSk7CisgICAg
ICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpZiAoYXJnX2Zyb21fYXJndiAmJiAoYXJnX2xpc3Rf
YWN0ID09IEFyZ3ZMaXN0QWN0aW9uOjprS2VlcFBhcnNlZEFyZ3MpKSB7CisgICAgICBvdXRwdXRf
YXJncy5wdXNoX2JhY2soYXJndltjdXJyX2xpc3QuRnJvbnRJbmRleCgpXSk7CisgICAgfQorCisg
ICAgLy8gNjAuIFNwbGl0IHRoZSBjdXJyZW50IGFyZ3VtZW50IG9uICc9JyB0byBmaWd1cmUgb3V0
IHRoZSBhcmd1bWVudAorICAgIC8vIG5hbWUgYW5kIHZhbHVlLiBJZiBmbGFnIG5hbWUgaXMgZW1w
dHkgaXQgbWVhbnMgd2UndmUgZ290ICItLSIuIHZhbHVlCisgICAgLy8gY2FuIGJlIGVtcHR5IGVp
dGhlciBpZiB0aGVyZSB3ZXJlIG5vICc9JyBpbiBhcmd1bWVudCBzdGQ6OnN0cmluZyBhdCBhbGwg
b3IKKyAgICAvLyBhbiBhcmd1bWVudCBsb29rZWQgbGlrZSAiLS1mb289Ii4gSW4gYSBsYXR0ZXIg
Y2FzZSBpc19lbXB0eV92YWx1ZSBpcworICAgIC8vIHRydWUuCisgICAgYWJzbDo6c3RyaW5nX3Zp
ZXcgZmxhZ19uYW1lOworICAgIGFic2w6OnN0cmluZ192aWV3IHZhbHVlOworICAgIGJvb2wgaXNf
ZW1wdHlfdmFsdWUgPSBmYWxzZTsKKworICAgIHN0ZDo6dGllKGZsYWdfbmFtZSwgdmFsdWUsIGlz
X2VtcHR5X3ZhbHVlKSA9IFNwbGl0TmFtZUFuZFZhbHVlKGFyZyk7CisKKyAgICAvLyA3MC4gIi0t
IiBhbG9uZSBtZWFucyB3aGF0IGl0IGRvZXMgZm9yIEdOVTogc3RvcCBmbGFncyBwYXJzaW5nLiBX
ZSBkbworICAgIC8vIG5vdCBzdXBwb3J0IHBvc2l0aW9uYWwgYXJndW1lbnRzIGluIGZsYWdmaWxl
cywgc28gd2UganVzdCBkcm9wIHRoZW0uCisgICAgaWYgKGZsYWdfbmFtZS5lbXB0eSgpKSB7Cisg
ICAgICBBQlNMX0lOVEVSTkFMX0NIRUNLKGFyZ19mcm9tX2FyZ3YsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJGbGFnZmlsZSBjYW5ub3QgY29udGFpbiBwb3NpdGlvbmFsIGFyZ3VtZW50Iik7
CisKKyAgICAgIGN1cnJfbGlzdC5Qb3BGcm9udCgpOworICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgLy8gODAuIExvY2F0ZSB0aGUgZmxhZyBiYXNlZCBvbiBmbGFnIG5hbWUuIEhhbmRsZSBib3Ro
IC0tZm9vIGFuZCAtLW5vZm9vCisgICAgQ29tbWFuZExpbmVGbGFnKiBmbGFnID0gbnVsbHB0cjsK
KyAgICBib29sIGlzX25lZ2F0aXZlID0gZmFsc2U7CisgICAgc3RkOjp0aWUoZmxhZywgaXNfbmVn
YXRpdmUpID0gTG9jYXRlRmxhZyhmbGFnX25hbWUpOworCisgICAgaWYgKGZsYWcgPT0gbnVsbHB0
cikgeworICAgICAgaWYgKG9uX3VuZGVmX2ZsYWcgIT0gT25VbmRlZmluZWRGbGFnOjprSWdub3Jl
VW5kZWZpbmVkKSB7CisgICAgICAgIHVuZGVmaW5lZF9mbGFnX25hbWVzLmVtcGxhY2VfYmFjayhh
cmdfZnJvbV9hcmd2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcoZmxhZ19uYW1lKSk7CisgICAgICB9CisgICAgICBjb250aW51ZTsKKyAgICB9
CisKKyAgICAvLyA5MC4gRGVkdWNlIGZsYWcncyB2YWx1ZSAoZnJvbSB0aGlzIG9yIG5leHQgYXJn
dW1lbnQpCisgICAgYXV0byBjdXJyX2luZGV4ID0gY3Vycl9saXN0LkZyb250SW5kZXgoKTsKKyAg
ICBib29sIHZhbHVlX3N1Y2Nlc3MgPSB0cnVlOworICAgIHN0ZDo6dGllKHZhbHVlX3N1Y2Nlc3Ms
IHZhbHVlKSA9CisgICAgICAgIERlZHVjZUZsYWdWYWx1ZSgqZmxhZywgdmFsdWUsIGlzX25lZ2F0
aXZlLCBpc19lbXB0eV92YWx1ZSwgJmN1cnJfbGlzdCk7CisgICAgc3VjY2VzcyAmPSB2YWx1ZV9z
dWNjZXNzOworCisgICAgLy8gSWYgYWJvdmUgY2FsbCBjb25zdW1lZCBhbiBhcmd1bWVudCwgaXQg
d2FzIGEgc3RhbmRhbG9uZSB2YWx1ZQorICAgIGlmIChhcmdfZnJvbV9hcmd2ICYmIChhcmdfbGlz
dF9hY3QgPT0gQXJndkxpc3RBY3Rpb246OmtLZWVwUGFyc2VkQXJncykgJiYKKyAgICAgICAgKGN1
cnJfaW5kZXggIT0gY3Vycl9saXN0LkZyb250SW5kZXgoKSkpIHsKKyAgICAgIG91dHB1dF9hcmdz
LnB1c2hfYmFjayhhcmd2W2N1cnJfbGlzdC5Gcm9udEluZGV4KCldKTsKKyAgICB9CisKKyAgICAv
LyAxMDAuIFNldCB0aGUgbG9jYXRlZCBmbGFnIHRvIGEgbmV3IG5ldyB2YWx1ZSwgdW5sZXNzIGl0
IGlzIHJldGlyZWQuCisgICAgLy8gU2V0dGluZyByZXRpcmVkIGZsYWcgZmFpbHMsIGJ1dCB3ZSBp
Z25vcmluZyBpdCBoZXJlLgorICAgIGlmIChmbGFnLT5Jc1JldGlyZWQoKSkgY29udGludWU7CisK
KyAgICBzdGQ6OnN0cmluZyBlcnJvcjsKKyAgICBpZiAoIWZsYWctPlNldEZyb21TdHJpbmcodmFs
dWUsIFNFVF9GTEFHU19WQUxVRSwga0NvbW1hbmRMaW5lLCAmZXJyb3IpKSB7CisgICAgICBmbGFn
c19pbnRlcm5hbDo6UmVwb3J0VXNhZ2VFcnJvcihlcnJvciwgdHJ1ZSk7CisgICAgICBzdWNjZXNz
ID0gZmFsc2U7CisgICAgfQorICB9CisKKyAgZm9yIChjb25zdCBhdXRvJiBmbGFnX25hbWUgOiB1
bmRlZmluZWRfZmxhZ19uYW1lcykgeworICAgIGlmIChDYW5JZ25vcmVVbmRlZmluZWRGbGFnKGZs
YWdfbmFtZS5zZWNvbmQpKSBjb250aW51ZTsKKworICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRV
c2FnZUVycm9yKAorICAgICAgICBhYnNsOjpTdHJDYXQoIlVua25vd24gY29tbWFuZCBsaW5lIGZs
YWcgJyIsIGZsYWdfbmFtZS5zZWNvbmQsICInIiksCisgICAgICAgIHRydWUpOworCisgICAgc3Vj
Y2VzcyA9IGZhbHNlOworICB9CisKKyNpZiBBQlNMX0ZMQUdTX1NUUklQX05BTUVTCisgIGlmICgh
c3VjY2VzcykgeworICAgIGZsYWdzX2ludGVybmFsOjpSZXBvcnRVc2FnZUVycm9yKAorICAgICAg
ICAiTk9URTogY29tbWFuZCBsaW5lIGZsYWdzIGFyZSBkaXNhYmxlZCBpbiB0aGlzIGJ1aWxkIiwg
dHJ1ZSk7CisgIH0KKyNlbmRpZgorCisgIGlmICghc3VjY2VzcykgeworICAgIGZsYWdzX2ludGVy
bmFsOjpIYW5kbGVVc2FnZUZsYWdzKHN0ZDo6Y291dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQcm9ncmFtVXNhZ2VNZXNzYWdlKCkpOworICAgIHN0ZDo6ZXhpdCgxKTsK
KyAgfQorCisgIGlmICh1c2FnZV9mbGFnX2FjdCA9PSBVc2FnZUZsYWdzQWN0aW9uOjprSGFuZGxl
VXNhZ2UpIHsKKyAgICBpbnQgZXhpdF9jb2RlID0gZmxhZ3NfaW50ZXJuYWw6OkhhbmRsZVVzYWdl
RmxhZ3MoCisgICAgICAgIHN0ZDo6Y291dCwgUHJvZ3JhbVVzYWdlTWVzc2FnZSgpKTsKKworICAg
IGlmIChleGl0X2NvZGUgIT0gLTEpIHsKKyAgICAgIHN0ZDo6ZXhpdChleGl0X2NvZGUpOworICAg
IH0KKyAgfQorCisgIFJlc2V0R2VuZXJhdG9yRmxhZ3MoZmxhZ2ZpbGVfdmFsdWUpOworCisgIC8v
IFJlaW5zdGF0ZSBwb3NpdGlvbmFsIGFyZ3Mgd2hpY2ggd2VyZSBpbnRlcm1peGVkIHdpdGggZmxh
Z3MgaW4gdGhlIGFyZ3VtZW50cworICAvLyBsaXN0LgorICBmb3IgKGF1dG8gYXJnIDogcG9zaXRp
b25hbF9hcmdzKSB7CisgICAgb3V0cHV0X2FyZ3MucHVzaF9iYWNrKGFyZyk7CisgIH0KKworICAv
LyBBbGwgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHBvc2l0aW9uYWwuCisgIGlmICghaW5w
dXRfYXJncy5lbXB0eSgpKSB7CisgICAgZm9yIChpbnQgYXJnX2luZGV4ID0gaW5wdXRfYXJncy5i
YWNrKCkuRnJvbnRJbmRleCgpOyBhcmdfaW5kZXggPCBhcmdjOworICAgICAgICAgKythcmdfaW5k
ZXgpIHsKKyAgICAgIG91dHB1dF9hcmdzLnB1c2hfYmFjayhhcmd2W2FyZ19pbmRleF0pOworICAg
IH0KKyAgfQorCisgIHJldHVybiBvdXRwdXRfYXJnczsKK30KKworfSAgLy8gbmFtZXNwYWNlIGZs
YWdzX2ludGVybmFsCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0ZDo6dmVjdG9yPGNoYXIqPiBQYXJz
ZUNvbW1hbmRMaW5lKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKKyAgcmV0dXJuIGZsYWdzX2lu
dGVybmFsOjpQYXJzZUNvbW1hbmRMaW5lSW1wbCgKKyAgICAgIGFyZ2MsIGFyZ3YsIGZsYWdzX2lu
dGVybmFsOjpBcmd2TGlzdEFjdGlvbjo6a1JlbW92ZVBhcnNlZEFyZ3MsCisgICAgICBmbGFnc19p
bnRlcm5hbDo6VXNhZ2VGbGFnc0FjdGlvbjo6a0hhbmRsZVVzYWdlLAorICAgICAgZmxhZ3NfaW50
ZXJuYWw6Ok9uVW5kZWZpbmVkRmxhZzo6a0Fib3J0SWZVbmRlZmluZWQpOworfQorCit9ICAvLyBu
YW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvcGFyc2UuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Zs
YWdzL3BhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJiNzUxMDE1Njg2ZDA3ODQzMTFiOThjZDlhZTFmYTI2
YjYyMWVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3BhcnNlLmgKQEAgLTAsMCAr
MSw1OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBwYXJzZS5oCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtYWluIHBhcnNpbmcgZnVu
Y3Rpb24gZm9yIEFic2VpbCBmbGFnczoKKy8vIGBhYnNsOjpQYXJzZUNvbW1hbmRMaW5lKClgLgor
CisjaWZuZGVmIEFCU0xfRkxBR1NfUEFSU0VfSF8KKyNkZWZpbmUgQUJTTF9GTEFHU19QQVJTRV9I
XworCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFi
c2wvZmxhZ3MvaW50ZXJuYWwvcGFyc2UuaCIKKworbmFtZXNwYWNlIGFic2wgeworCisvLyBQYXJz
ZUNvbW1hbmRMaW5lKCkKKy8vCisvLyBQYXJzZXMgdGhlIHNldCBvZiBjb21tYW5kLWxpbmUgYXJn
dW1lbnRzIHBhc3NlZCBpbiB0aGUgYGFyZ2NgIChhcmd1bWVudAorLy8gY291bnQpIGFuZCBgYXJn
dltdYCAoYXJndW1lbnQgdmVjdG9yKSBwYXJhbWV0ZXJzIGZyb20gYG1haW4oKWAsIGFzc2lnbmlu
ZworLy8gdmFsdWVzIHRvIGFueSBkZWZpbmVkIEFic2VpbCBmbGFncy4gKEFueSBhcmd1bWVudHMg
cGFzc2VkIGFmdGVyIHRoZQorLy8gZmxhZy10ZXJtaW5hdGluZyBkZWxpbWl0ZXIgKGAtLWApIGFy
ZSB0cmVhdGVkIGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFuZAorLy8gaWdub3JlZC4pCisvLwor
Ly8gQW55IGNvbW1hbmQtbGluZSBmbGFncyAoYW5kIGFyZ3VtZW50cyB0byB0aG9zZSBmbGFncykg
YXJlIHBhcnNlZCBpbnRvIEFic2VpbAorLy8gRmxhZyB2YWx1ZXMsIGlmIHRob3NlIGZsYWdzIGFy
ZSBkZWZpbmVkLiBBbnkgdW5kZWZpbmVkIGZsYWdzIHdpbGwgZWl0aGVyCisvLyByZXR1cm4gYW4g
ZXJyb3IsIG9yIGJlIGlnbm9yZWQgaWYgdGhhdCBmbGFnIGlzIGRlc2lnbmF0ZWQgdXNpbmcgYHVu
ZGVmb2tgIHRvCisvLyBpbmRpY2F0ZSAidW5kZWZpbmVkIGlzIE9LLiIKKy8vCisvLyBBbnkgY29t
bWFuZC1saW5lIHBvc2l0aW9uYWwgYXJndW1lbnRzIG5vdCBwYXJ0IG9mIGFueSBjb21tYW5kLWxp
bmUgZmxhZyAob3IKKy8vIGFyZ3VtZW50cyB0byBhIGZsYWcpIGFyZSByZXR1cm5lZCBpbiBhIHZl
Y3Rvciwgd2l0aCB0aGUgcHJvZ3JhbSBpbnZvY2F0aW9uCisvLyBuYW1lIGF0IHBvc2l0aW9uIDAg
b2YgdGhhdCB2ZWN0b3IuIChOb3RlIHRoYXQgdGhpcyBpbmNsdWRlcyBwb3NpdGlvbmFsCisvLyBh
cmd1bWVudHMgYWZ0ZXIgdGhlIGZsYWctdGVybWluYXRpbmcgZGVsaW1pdGVyIGAtLWAuKQorLy8K
Ky8vIEFmdGVyIGFsbCBmbGFncyBhbmQgZmxhZyBhcmd1bWVudHMgYXJlIHBhcnNlZCwgdGhpcyBm
dW5jdGlvbiBsb29rcyBmb3IgYW55CisvLyBidWlsdC1pbiB1c2FnZSBmbGFncyAoZS5nLiBgLS1o
ZWxwYCksIGFuZCBpZiBhbnkgd2VyZSBzcGVjaWZpZWQsIGl0IHJlcG9ydHMKKy8vIGhlbHAgbWVz
c2FnZXMgYW5kIHRoZW4gZXhpdHMgdGhlIHByb2dyYW0uCitzdGQ6OnZlY3RvcjxjaGFyKj4gUGFy
c2VDb21tYW5kTGluZShpbnQgYXJnYywgY2hhciogYXJndltdKTsKKworfSAgLy8gbmFtZXNwYWNl
IGFic2wKKworI2VuZGlmICAvLyBBQlNMX0ZMQUdTX1BBUlNFX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9mbGFncy9wYXJzZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvcGFyc2VfdGVzdC5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NDdhM2JjN2JkY2JkMmEzZDUwNmZjNDAzNjAzNTE3ZDczMmVlMmQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZmxhZ3MvcGFyc2VfdGVzdC5jYwpAQCAtMCwwICsxLDg1OCBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJz
bC9mbGFncy9wYXJzZS5oIgorCisjaW5jbHVkZSA8ZnN0cmVhbT4KKworI2luY2x1ZGUgImdtb2Nr
L2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2Uv
aW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvc2Nv
cGVkX3NldF9lbnYuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ZsYWcuaCIKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdWJzdGl0dXRl
LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9zcGFuLmgiCisKKyNpZmRlZiBfV0lOMzIKKyNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIHsKKwordXNpbmcgYWJzbDo6YmFz
ZV9pbnRlcm5hbDo6U2NvcGVkU2V0RW52OworCitzdHJ1Y3QgVURUIHsKKyAgVURUKCkgPSBkZWZh
dWx0OworICBVRFQoY29uc3QgVURUJikgPSBkZWZhdWx0OworICBVRFQoaW50IHYpIDogdmFsdWUo
dikge30gIC8vIE5PTElOVAorCisgIGludCB2YWx1ZTsKK307CisKK2Jvb2wgQWJzbFBhcnNlRmxh
ZyhhYnNsOjpzdHJpbmdfdmlldyBpbiwgVURUKiB1ZHQsIHN0ZDo6c3RyaW5nKiBlcnIpIHsKKyAg
aWYgKGluID09ICJBIikgeworICAgIHVkdC0+dmFsdWUgPSAxOworICAgIHJldHVybiB0cnVlOwor
ICB9CisgIGlmIChpbiA9PSAiQUFBIikgeworICAgIHVkdC0+dmFsdWUgPSAxMDsKKyAgICByZXR1
cm4gdHJ1ZTsKKyAgfQorCisgICplcnIgPSAiVXNlIHZhbHVlcyBBLCBBQUEgaW5zdGVhZCI7Cisg
IHJldHVybiBmYWxzZTsKK30KK3N0ZDo6c3RyaW5nIEFic2xVbnBhcnNlRmxhZyhjb25zdCBVRFQm
IHVkdCkgeworICByZXR1cm4gdWR0LnZhbHVlID09IDEgPyAiQSIgOiAiQUFBIjsKK30KKworc3Rk
OjpzdHJpbmcgR2V0VGVzdFRtcERpckVudlZhcihjb25zdCBjaGFyKiBjb25zdCBlbnZfdmFyX25h
bWUpIHsKKyNpZmRlZiBfV0lOMzIKKyAgY2hhciBidWZbTUFYX1BBVEhdOworICBhdXRvIGdldF9y
ZXMgPSBHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShlbnZfdmFyX25hbWUsIGJ1Ziwgc2l6ZW9mKGJ1
ZikpOworICBpZiAoZ2V0X3JlcyA+PSBzaXplb2YoYnVmKSB8fCBnZXRfcmVzID09IDApIHsKKyAg
ICByZXR1cm4gIiI7CisgIH0KKworICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmLCBnZXRfcmVzKTsK
KyNlbHNlCisgIGNvbnN0IGNoYXIqIHZhbCA9IDo6Z2V0ZW52KGVudl92YXJfbmFtZSk7CisgIGlm
ICh2YWwgPT0gbnVsbHB0cikgeworICAgIHJldHVybiAiIjsKKyAgfQorCisgIHJldHVybiB2YWw7
CisjZW5kaWYKK30KKworY29uc3Qgc3RkOjpzdHJpbmcmIEdldFRlc3RUZW1wRGlyKCkgeworICBz
dGF0aWMgc3RkOjpzdHJpbmcqIHRlbXBfZGlyX25hbWUgPSBbXSgpIC0+IHN0ZDo6c3RyaW5nKiB7
CisgICAgc3RkOjpzdHJpbmcqIHJlcyA9IG5ldyBzdGQ6OnN0cmluZyhHZXRUZXN0VG1wRGlyRW52
VmFyKCJURVNUX1RNUERJUiIpKTsKKworICAgIGlmIChyZXMtPmVtcHR5KCkpIHsKKyAgICAgICpy
ZXMgPSBHZXRUZXN0VG1wRGlyRW52VmFyKCJUTVBESVIiKTsKKyAgICB9CisKKyAgICBpZiAocmVz
LT5lbXB0eSgpKSB7CisjaWZkZWYgX1dJTjMyCisgICAgICBjaGFyIHRlbXBfcGF0aF9idWZmZXJb
TUFYX1BBVEhdOworCisgICAgICBhdXRvIGxlbiA9IEdldFRlbXBQYXRoQShNQVhfUEFUSCwgdGVt
cF9wYXRoX2J1ZmZlcik7CisgICAgICBpZiAobGVuIDwgTUFYX1BBVEggJiYgbGVuICE9IDApIHsK
KyAgICAgICAgc3RkOjpzdHJpbmcgdGVtcF9kaXJfbmFtZSA9IGFic2w6OlN0ckNhdCgKKyAgICAg
ICAgICAgIHRlbXBfcGF0aF9idWZmZXIsICJcXHBhcnNlX3Rlc3QuIiwgR2V0Q3VycmVudFByb2Nl
c3NJZCgpKTsKKyAgICAgICAgaWYgKENyZWF0ZURpcmVjdG9yeUEodGVtcF9kaXJfbmFtZS5jX3N0
cigpLCBudWxscHRyKSkgeworICAgICAgICAgICpyZXMgPSB0ZW1wX2Rpcl9uYW1lOworICAgICAg
ICB9CisgICAgICB9CisjZWxzZQorICAgICAgY2hhciB0ZW1wX2Rpcl90ZW1wbGF0ZVtdID0gIi90
bXAvcGFyc2VfdGVzdC5YWFhYWFgiOworICAgICAgaWYgKGF1dG8qIHVuaXF1ZV9uYW1lID0gOjpt
a2R0ZW1wKHRlbXBfZGlyX3RlbXBsYXRlKSkgeworICAgICAgICAqcmVzID0gdW5pcXVlX25hbWU7
CisgICAgICB9CisjZW5kaWYKKworICAgICAgaWYgKHJlcy0+ZW1wdHkoKSkgeworICAgICAgICBB
QlNMX0lOVEVSTkFMX0xPRyhGQVRBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxl
ZCB0byBtYWtlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIGRhdGEgZmlsZXMiKTsKKyAgICAgIH0K
KyAgICB9CisKKyNpZmRlZiBfV0lOMzIKKyAgICAqcmVzICs9ICJcXCI7CisjZWxzZQorICAgICpy
ZXMgKz0gIi8iOworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzOworICB9KCk7CisKKyAgcmV0dXJu
ICp0ZW1wX2Rpcl9uYW1lOworfQorCitzdHJ1Y3QgRmxhZ2ZpbGVEYXRhIHsKKyAgY29uc3QgYWJz
bDo6c3RyaW5nX3ZpZXcgZmlsZV9uYW1lOworICBjb25zdCBhYnNsOjpTcGFuPGNvbnN0IGNoYXIq
IGNvbnN0PiBmaWxlX2xpbmVzOworfTsKKworLy8gY2xhbmctZm9ybWF0IG9mZgorY29uc3RleHBy
IGNvbnN0IGNoYXIqIGNvbnN0IGZmMV9kYXRhW10gPSB7CisgICAgIiMgY29tbWVudCAgICAiLAor
ICAgICIgICMgY29tbWVudCAgIiwKKyAgICAiIiwKKyAgICAiICAgICAiLAorICAgICItLWludF9m
bGFnPS0xIiwKKyAgICAiICAtLXN0cmluZ19mbGFnPXEydzIgICIsCisgICAgIiAgIyMgICAiLAor
ICAgICIgIC0tZG91YmxlX2ZsYWc9MC4xIiwKKyAgICAiLS1ib29sX2ZsYWc9WSAgIgorfTsKKwor
Y29uc3RleHByIGNvbnN0IGNoYXIqIGNvbnN0IGZmMl9kYXRhW10gPSB7CisgICAgIiMgU2V0dGlu
ZyBsZWdhY3kgZmxhZyIsCisgICAgIi0tbGVnYWN5X2ludD0xMTExIiwKKyAgICAiLS1sZWdhY3lf
Ym9vbCIsCisgICAgIi0tbm9ib29sX2ZsYWciLAorICAgICItLWxlZ2FjeV9zdHI9YXFzdyIsCisg
ICAgIi0taW50X2ZsYWc9MTAwIiwKKyAgICAiICAgIyMgPT09PT09PT09PT09PSIKK307CisvLyBj
bGFuZy1mb3JtYXQgb24KKworLy8gQnVpbGRzIGZsYWdmaWxlIGZsYWcgaW4gdGhlIGZsYWdmaWxl
X2ZsYWcgYnVmZmVyIGFuZCByZXR1cm5zIGl0LiBUaGlzCisvLyBmdW5jdGlvbiBhbHNvIGNyZWF0
ZXMgYSB0ZW1wb3JhcnkgZmxhZ2ZpbGUgYmFzZWQgb24gRmxhZ2ZpbGVEYXRhIGlucHV0LgorLy8g
V2UgY3JlYXRlIGEgZmxhZ2ZpbGUgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHdpdGggdGhlIG5h
bWUgc3BlY2lmaWVkIGluCisvLyBGbGFnZmlsZURhdGEgYW5kIHBvcHVsYXRlIGl0IHdpdGggbGlu
ZXMgc3BlY2lmZWQgaW4gRmxhZ2ZpbGVEYXRhLiBJZiAkMCBpcworLy8gcmVmZXJlbmNlZCBpbiBh
bnkgb2YgdGhlIGxpbmVzIGluIEZsYWdmaWxlRGF0YSB0aGV5IGFyZSByZXBsYWNlZCB3aXRoCisv
LyB0ZW1wb3JhcnkgZGlyZWN0b3J5IGxvY2F0aW9uLiBUaGlzIHdheSB3ZSBjYW4gdGVzdCBpbmNs
dXNpb24gb2Ygb25lIGZsYWdmaWxlCisvLyBmcm9tIGFub3RoZXIgZmxhZ2ZpbGUuCitjb25zdCBj
aGFyKiBHZXRGbGFnZmlsZUZsYWcoY29uc3Qgc3RkOjp2ZWN0b3I8RmxhZ2ZpbGVEYXRhPiYgZmZk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBmbGFnZmlsZV9mbGFn
KSB7CisgICpmbGFnZmlsZV9mbGFnID0gIi0tZmxhZ2ZpbGU9IjsKKyAgYWJzbDo6c3RyaW5nX3Zp
ZXcgc2VwYXJhdG9yOworICBmb3IgKGNvbnN0IGF1dG8mIGZsYWdmaWxlX2RhdGEgOiBmZmQpIHsK
KyAgICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9uYW1lID0KKyAgICAgICAgYWJzbDo6U3RyQ2F0KEdl
dFRlc3RUZW1wRGlyKCksIGZsYWdmaWxlX2RhdGEuZmlsZV9uYW1lKTsKKworICAgIHN0ZDo6b2Zz
dHJlYW0gZmxhZ2ZpbGVfb3V0KGZsYWdmaWxlX25hbWUpOworICAgIGZvciAoYXV0byBsaW5lIDog
ZmxhZ2ZpbGVfZGF0YS5maWxlX2xpbmVzKSB7CisgICAgICBmbGFnZmlsZV9vdXQgPDwgYWJzbDo6
U3Vic3RpdHV0ZShsaW5lLCBHZXRUZXN0VGVtcERpcigpKSA8PCAiXG4iOworICAgIH0KKworICAg
IGFic2w6OlN0ckFwcGVuZChmbGFnZmlsZV9mbGFnLCBzZXBhcmF0b3IsIGZsYWdmaWxlX25hbWUp
OworICAgIHNlcGFyYXRvciA9ICIsIjsKKyAgfQorCisgIHJldHVybiBmbGFnZmlsZV9mbGFnLT5j
X3N0cigpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworQUJTTF9GTEFHKGludCwgaW50X2ZsYWcs
IDEsICIiKTsKK0FCU0xfRkxBRyhkb3VibGUsIGRvdWJsZV9mbGFnLCAxLjEsICIiKTsKK0FCU0xf
RkxBRyhzdGQ6OnN0cmluZywgc3RyaW5nX2ZsYWcsICJhIiwgIiIpOworQUJTTF9GTEFHKGJvb2ws
IGJvb2xfZmxhZywgZmFsc2UsICIiKTsKK0FCU0xfRkxBRyhVRFQsIHVkdF9mbGFnLCAtMSwgIiIp
OworQUJTTF9SRVRJUkVEX0ZMQUcoaW50LCBsZWdhY3lfaW50LCAxLCAiIik7CitBQlNMX1JFVElS
RURfRkxBRyhib29sLCBsZWdhY3lfYm9vbCwgZmFsc2UsICIiKTsKK0FCU0xfUkVUSVJFRF9GTEFH
KHN0ZDo6c3RyaW5nLCBsZWdhY3lfc3RyLCAibCIsICIiKTsKKworbmFtZXNwYWNlIHsKKworbmFt
ZXNwYWNlIGZsYWdzID0gYWJzbDo6ZmxhZ3NfaW50ZXJuYWw7Cit1c2luZyB0ZXN0aW5nOjpFbGVt
ZW50c0FyZUFycmF5OworCitjbGFzcyBQYXJzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CisgcHJpdmF0ZToKKyAgZmxhZ3M6OkZsYWdTYXZlciBmbGFnX3NhdmVyXzsKK307CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK3RlbXBsYXRlIDxpbnQgTj4KK3N0ZDo6dmVjdG9yPGNoYXIqPiBJbnZva2VQ
YXJzZShjb25zdCBjaGFyKiAoJmluX2FyZ3YpW05dKSB7CisgIHJldHVybiBhYnNsOjpQYXJzZUNv
bW1hbmRMaW5lKE4sIGNvbnN0X2Nhc3Q8Y2hhcioqPihpbl9hcmd2KSk7Cit9CisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK3RlbXBsYXRlIDxpbnQgTj4KK3ZvaWQgVGVzdFBhcnNlKGNvbnN0IGNoYXIqICgm
aW5fYXJndilbTl0sIGludCBpbnRfZmxhZ192YWx1ZSwKKyAgICAgICAgICAgICAgIGRvdWJsZSBk
b3VibGVfZmxhZ192YWwsIGFic2w6OnN0cmluZ192aWV3IHN0cmluZ19mbGFnX3ZhbCwKKyAgICAg
ICAgICAgICAgIGJvb2wgYm9vbF9mbGFnX3ZhbCwgaW50IGV4cF9wb3NpdGlvbl9hcmdzID0gMCkg
eworICBhdXRvIG91dF9hcmdzID0gSW52b2tlUGFyc2UoaW5fYXJndik7CisKKyAgRVhQRUNUX0VR
KG91dF9hcmdzLnNpemUoKSwgMSArIGV4cF9wb3NpdGlvbl9hcmdzKTsKKyAgRVhQRUNUX1NUUkVR
KG91dF9hcmdzWzBdLCAidGVzdGJpbiIpOworCisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZM
QUdTX2ludF9mbGFnKSwgaW50X2ZsYWdfdmFsdWUpOworICBFWFBFQ1RfTkVBUihhYnNsOjpHZXRG
bGFnKEZMQUdTX2RvdWJsZV9mbGFnKSwgZG91YmxlX2ZsYWdfdmFsLCAwLjAwMDEpOworICBFWFBF
Q1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19zdHJpbmdfZmxhZyksIHN0cmluZ19mbGFnX3ZhbCk7
CisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX2Jvb2xfZmxhZyksIGJvb2xfZmxhZ192
YWwpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0RW1wdHlB
cmd2KSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3ZbXSA9IHsidGVzdGJpbiJ9OworCisgIGF1dG8g
b3V0X2FyZ3MgPSBJbnZva2VQYXJzZShpbl9hcmd2KTsKKworICBFWFBFQ1RfRVEob3V0X2FyZ3Mu
c2l6ZSgpLCAxKTsKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdzWzBdLCAidGVzdGJpbiIpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0VmFsaWRJbnRBcmcpIHsK
KyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICIt
LWludF9mbGFnPTEwIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAxMCwgMS4xLCAiYSIs
IGZhbHNlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4i
LAorICAgICAgIi1pbnRfZmxhZz0wMjAiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczIsIDIw
LCAxLjEsICJhIiwgZmFsc2UpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MzW10gPSB7CisgICAg
ICAidGVzdGJpbiIsCisgICAgICAiLS1pbnRfZmxhZyIsCisgICAgICAiLTMwIiwKKyAgfTsKKyAg
VGVzdFBhcnNlKGluX2FyZ3MzLCAtMzAsIDEuMSwgImEiLCBmYWxzZSk7CisKKyAgY29uc3QgY2hh
ciogaW5fYXJnczRbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItaW50X2ZsYWciLAor
ICAgICAgIjB4MjEiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczQsIDMzLCAxLjEsICJhIiwg
ZmFsc2UpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0VmFs
aWREb3VibGVBcmcpIHsKKyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0
YmluIiwKKyAgICAgICItLWRvdWJsZV9mbGFnPTIuMyIsCisgIH07CisgIFRlc3RQYXJzZShpbl9h
cmdzMSwgMSwgMi4zLCAiYSIsIGZhbHNlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0g
eworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tZG91YmxlX2ZsYWc9MHgxLjIiLAorICB9Owor
ICBUZXN0UGFyc2UoaW5fYXJnczIsIDEsIDEuMTI1LCAiYSIsIGZhbHNlKTsKKworICBjb25zdCBj
aGFyKiBpbl9hcmdzM1tdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tZG91YmxlX2Zs
YWciLAorICAgICAgIjk5LjciLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczMsIDEsIDk5Ljcs
ICJhIiwgZmFsc2UpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3M0W10gPSB7CisgICAgICAidGVz
dGJpbiIsCisgICAgICAiLS1kb3VibGVfZmxhZyIsCisgICAgICAiMHgyMC4xIiwKKyAgfTsKKyAg
VGVzdFBhcnNlKGluX2FyZ3M0LCAxLCAzMi4wNjI1LCAiYSIsIGZhbHNlKTsKK30KKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdFZhbGlkU3RyaW5nQXJnKSB7CisgIGNv
bnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1zdHJp
bmdfZmxhZz1hcXN3ZGUiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczEsIDEsIDEuMSwgImFx
c3dkZSIsIGZhbHNlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRl
c3RiaW4iLAorICAgICAgIi1zdHJpbmdfZmxhZz1hPWI9YyIsCisgIH07CisgIFRlc3RQYXJzZShp
bl9hcmdzMiwgMSwgMS4xLCAiYT1iPWMiLCBmYWxzZSk7CisKKyAgY29uc3QgY2hhciogaW5fYXJn
czNbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLXN0cmluZ19mbGFnIiwKKyAgICAg
ICJ6YXhzY2QiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczMsIDEsIDEuMSwgInpheHNjZCIs
IGZhbHNlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzNFtdID0geworICAgICAgInRlc3RiaW4i
LAorICAgICAgIi1zdHJpbmdfZmxhZyIsCisgICAgICAiLS1pbnRfZmxhZyIsCisgIH07CisgIFRl
c3RQYXJzZShpbl9hcmdzNCwgMSwgMS4xLCAiLS1pbnRfZmxhZyIsIGZhbHNlKTsKKworICBjb25z
dCBjaGFyKiBpbl9hcmdzNVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tc3RyaW5n
X2ZsYWciLAorICAgICAgIi0tbm9fYV9mbGFnPTExIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2Fy
Z3M1LCAxLCAxLjEsICItLW5vX2FfZmxhZz0xMSIsIGZhbHNlKTsKK30KKworLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdFZhbGlkQm9vbEFyZykgeworICBjb25zdCBjaGFy
KiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tYm9vbF9mbGFnIiwK
KyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAxLCAxLjEsICJhIiwgdHJ1ZSk7CisKKyAgY29u
c3QgY2hhciogaW5fYXJnczJbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLW5vYm9v
bF9mbGFnIiwKKyAgfTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MyLCAxLCAxLjEsICJhIiwgZmFsc2Up
OworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MzW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAg
ICAiLS1ib29sX2ZsYWc9dHJ1ZSIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMywgMSwgMS4x
LCAiYSIsIHRydWUpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3M0W10gPSB7CisgICAgICAidGVz
dGJpbiIsCisgICAgICAiLWJvb2xfZmxhZz1mYWxzZSIsCisgIH07CisgIFRlc3RQYXJzZShpbl9h
cmdzNCwgMSwgMS4xLCAiYSIsIGZhbHNlKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9G
KFBhcnNlVGVzdCwgVGVzdFZhbGlkVURUQXJnKSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10g
PSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS11ZHRfZmxhZz1BIiwKKyAgfTsKKyAgSW52
b2tlUGFyc2UoaW5fYXJnczEpOworCisgIEVYUEVDVF9FUShhYnNsOjpHZXRGbGFnKEZMQUdTX3Vk
dF9mbGFnKS52YWx1ZSwgMSk7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczJbXSA9IHsidGVzdGJp
biIsICItLXVkdF9mbGFnIiwgIkFBQSJ9OworICBJbnZva2VQYXJzZShpbl9hcmdzMik7CisKKyAg
RVhQRUNUX0VRKGFic2w6OkdldEZsYWcoRkxBR1NfdWR0X2ZsYWcpLnZhbHVlLCAxMCk7Cit9CisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RWYWxpZE11bHRpcGxlQXJn
KSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsICAgICAg
ICAgICAiLS1ib29sX2ZsYWciLCAgICAgICAiLS1pbnRfZmxhZz0yIiwKKyAgICAgICItLWRvdWJs
ZV9mbGFnPTAuMSIsICItLXN0cmluZ19mbGFnPWFzZCIsCisgIH07CisgIFRlc3RQYXJzZShpbl9h
cmdzMSwgMiwgMC4xLCAiYXNkIiwgdHJ1ZSk7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczJbXSA9
IHsKKyAgICAgICJ0ZXN0YmluIiwgIi0tc3RyaW5nX2ZsYWc9IiwgIi0tbm9ib29sX2ZsYWciLCAi
LS1pbnRfZmxhZyIsCisgICAgICAiLTAxMSIsICAgICItLWRvdWJsZV9mbGFnIiwgICItMWUtMiIs
CisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMiwgLTExLCAtMC4wMSwgIiIsIGZhbHNlKTsKKwor
ICBjb25zdCBjaGFyKiBpbl9hcmdzM1tdID0geworICAgICAgInRlc3RiaW4iLCAgICAgICAgICAi
LS1pbnRfZmxhZyIsICAgICAgICAgIi0wIiwgIi0tc3RyaW5nX2ZsYWciLCAiXCJcIiIsCisgICAg
ICAiLS1ib29sX2ZsYWc9dHJ1ZSIsICItLWRvdWJsZV9mbGFnPTFlMTgiLAorICB9OworICBUZXN0
UGFyc2UoaW5fYXJnczMsIDAsIDFlMTgsICJcIlwiIiwgdHJ1ZSk7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RQb3NpdGlvbmFsQXJncykgeworICBjb25zdCBj
aGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgInAxIiwKKyAgICAg
ICJwMiIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMSwgMSwgMS4xLCAiYSIsIGZhbHNlLCAy
KTsKKworICBhdXRvIG91dF9hcmdzMSA9IEludm9rZVBhcnNlKGluX2FyZ3MxKTsKKworICBFWFBF
Q1RfU1RSRVEob3V0X2FyZ3MxWzFdLCAicDEiKTsKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdzMVsy
XSwgInAyIik7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczJbXSA9IHsKKyAgICAgICJ0ZXN0Ymlu
IiwKKyAgICAgICItLWludF9mbGFnPTIiLAorICAgICAgInAxIiwKKyAgfTsKKyAgVGVzdFBhcnNl
KGluX2FyZ3MyLCAyLCAxLjEsICJhIiwgZmFsc2UsIDEpOworCisgIGF1dG8gb3V0X2FyZ3MyID0g
SW52b2tlUGFyc2UoaW5fYXJnczIpOworCisgIEVYUEVDVF9TVFJFUShvdXRfYXJnczJbMV0sICJw
MSIpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MzW10gPSB7InRlc3RiaW4iLCAicDEiLCAgICAg
ICAgICAiLS1pbnRfZmxhZz0zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicDIiLCAg
ICAgICItLWJvb2xfZmxhZyIsICJ0cnVlIn07CisgIFRlc3RQYXJzZShpbl9hcmdzMywgMywgMS4x
LCAiYSIsIHRydWUsIDMpOworCisgIGF1dG8gb3V0X2FyZ3MzID0gSW52b2tlUGFyc2UoaW5fYXJn
czMpOworCisgIEVYUEVDVF9TVFJFUShvdXRfYXJnczNbMV0sICJwMSIpOworICBFWFBFQ1RfU1RS
RVEob3V0X2FyZ3MzWzJdLCAicDIiKTsKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdzM1szXSwgInRy
dWUiKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzNFtdID0geworICAgICAgInRlc3RiaW4iLAor
ICAgICAgIi0tIiwKKyAgICAgICJwMSIsCisgICAgICAicDIiLAorICB9OworICBUZXN0UGFyc2Uo
aW5fYXJnczQsIDMsIDEuMSwgImEiLCB0cnVlLCAyKTsKKworICBhdXRvIG91dF9hcmdzNCA9IElu
dm9rZVBhcnNlKGluX2FyZ3M0KTsKKworICBFWFBFQ1RfU1RSRVEob3V0X2FyZ3M0WzFdLCAicDEi
KTsKKyAgRVhQRUNUX1NUUkVRKG91dF9hcmdzNFsyXSwgInAyIik7CisKKyAgY29uc3QgY2hhciog
aW5fYXJnczVbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwgInAxIiwgIi0taW50X2ZsYWc9NCIsICIt
LSIsICItLWJvb2xfZmxhZyIsICJmYWxzZSIsICJwMiIsCisgIH07CisgIFRlc3RQYXJzZShpbl9h
cmdzNSwgNCwgMS4xLCAiYSIsIHRydWUsIDQpOworCisgIGF1dG8gb3V0X2FyZ3M1ID0gSW52b2tl
UGFyc2UoaW5fYXJnczUpOworCisgIEVYUEVDVF9TVFJFUShvdXRfYXJnczVbMV0sICJwMSIpOwor
ICBFWFBFQ1RfU1RSRVEob3V0X2FyZ3M1WzJdLCAiLS1ib29sX2ZsYWciKTsKKyAgRVhQRUNUX1NU
UkVRKG91dF9hcmdzNVszXSwgImZhbHNlIik7CisgIEVYUEVDVF9TVFJFUShvdXRfYXJnczVbNF0s
ICJwMiIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1c2luZyBQYXJzZURlYXRoVGVzdCA9IFBh
cnNlVGVzdDsKKworVEVTVF9GKFBhcnNlRGVhdGhUZXN0LCBUZXN0VW5kZWZpbmVkQXJnKSB7Cisg
IGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS11
bmRlZmluZWRfZmxhZyIsCisgIH07CisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9hcmdz
MSksCisgICAgICAgICAgICAgICAiVW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyAndW5kZWZpbmVk
X2ZsYWcnIik7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczJbXSA9IHsKKyAgICAgICJ0ZXN0Ymlu
IiwKKyAgICAgICItLW5vcHJlZml4ZWRfZmxhZyIsCisgIH07CisgIEVYUEVDVF9ERUFUSChJbnZv
a2VQYXJzZShpbl9hcmdzMiksCisgICAgICAgICAgICAgICAiVW5rbm93biBjb21tYW5kIGxpbmUg
ZmxhZyAnbm9wcmVmaXhlZF9mbGFnJyIpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MzW10gPSB7
CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS1JbnRfZmxhZz0xIiwKKyAgfTsKKyAgRVhQRUNU
X0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3MzKSwgIlVua25vd24gY29tbWFuZCBsaW5lIGZsYWcg
J0ludF9mbGFnJyIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VEZWF0aFRl
c3QsIFRlc3RJbnZhbGlkQm9vbEZsYWdGb3JtYXQpIHsKKyAgY29uc3QgY2hhciogaW5fYXJnczFb
XSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLWJvb2xfZmxhZz0iLAorICB9OworICBF
WFBFQ1RfREVBVEgoCisgICAgICBJbnZva2VQYXJzZShpbl9hcmdzMSksCisgICAgICAiTWlzc2lu
ZyB0aGUgdmFsdWUgYWZ0ZXIgYXNzaWdubWVudCBmb3IgdGhlIGJvb2xlYW4gZmxhZyAnYm9vbF9m
bGFnJyIpOworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3MyW10gPSB7CisgICAgICAidGVzdGJpbiIs
CisgICAgICAiLS1ub2Jvb2xfZmxhZz10cnVlIiwKKyAgfTsKKyAgRVhQRUNUX0RFQVRIKEludm9r
ZVBhcnNlKGluX2FyZ3MyKSwKKyAgICAgICAgICAgICAgICJOZWdhdGl2ZSBmb3JtIHdpdGggYXNz
aWdubWVudCBpcyBub3QgdmFsaWQgZm9yIHRoZSBib29sZWFuICIKKyAgICAgICAgICAgICAgICJm
bGFnICdib29sX2ZsYWcnIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZURl
YXRoVGVzdCwgVGVzdEludmFsaWROb25Cb29sRmxhZ0Zvcm1hdCkgeworICBjb25zdCBjaGFyKiBp
bl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tbm9zdHJpbmdfZmxhZyIs
CisgIH07CisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9hcmdzMSksCisgICAgICAgICAg
ICAgICAiTmVnYXRpdmUgZm9ybSBpcyBub3QgdmFsaWQgZm9yIHRoZSBmbGFnICdzdHJpbmdfZmxh
ZyciKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAor
ICAgICAgIi0taW50X2ZsYWciLAorICB9OworICBFWFBFQ1RfREVBVEgoSW52b2tlUGFyc2UoaW5f
YXJnczIpLAorICAgICAgICAgICAgICAgIk1pc3NpbmcgdGhlIHZhbHVlIGZvciB0aGUgZmxhZyAn
aW50X2ZsYWcnIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZURlYXRoVGVz
dCwgVGVzdEludmFsaWRVRFRGbGFnRm9ybWF0KSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10g
PSB7CisgICAgICAidGVzdGJpbiIsCisgICAgICAiLS11ZHRfZmxhZz0xIiwKKyAgfTsKKyAgRVhQ
RUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3MxKSwKKyAgICAgICAgICAgICAgICJJbGxlZ2Fs
IHZhbHVlICcxJyBzcGVjaWZpZWQgZm9yIGZsYWcgJ3VkdF9mbGFnJzsgVXNlIHZhbHVlcyBBLCAi
CisgICAgICAgICAgICAgICAiQUFBIGluc3RlYWQiKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdz
MltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tdWR0X2ZsYWciLAorICAgICAgIkFB
IiwKKyAgfTsKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3MyKSwKKyAgICAgICAg
ICAgICAgICJJbGxlZ2FsIHZhbHVlICdBQScgc3BlY2lmaWVkIGZvciBmbGFnICd1ZHRfZmxhZyc7
IFVzZSB2YWx1ZXMgIgorICAgICAgICAgICAgICAgIkEsIEFBQSBpbnN0ZWFkIik7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RMZWdhY3lGbGFncykgeworICBj
b25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tbGVn
YWN5X2ludD0xMSIsCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMSwgMSwgMS4xLCAiYSIsIGZh
bHNlKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAor
ICAgICAgIi0tbGVnYWN5X2Jvb2wiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczIsIDEsIDEu
MSwgImEiLCBmYWxzZSk7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczNbXSA9IHsKKyAgICAgICJ0
ZXN0YmluIiwgICAgICAgIi0tbGVnYWN5X2ludCIsICIyMiIsICAgICAgICAgICAiLS1pbnRfZmxh
Zz0yIiwKKyAgICAgICItLWxlZ2FjeV9ib29sIiwgInRydWUiLCAgICAgICAgICItLWxlZ2FjeV9z
dHIiLCAiLS1zdHJpbmdfZmxhZz1xd2UiLAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczMsIDIs
IDEuMSwgImEiLCBmYWxzZSwgMSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJz
ZVRlc3QsIFRlc3RTaW1wbGVWYWxpZEZsYWdmaWxlKSB7CisgIHN0ZDo6c3RyaW5nIGZsYWdmaWxl
X2ZsYWc7CisKKyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwK
KyAgICAgIEdldEZsYWdmaWxlRmxhZyh7eyJwYXJzZV90ZXN0LmZmMSIsIGFic2w6Ok1ha2VDb25z
dFNwYW4oZmYxX2RhdGEpfX0sCisgICAgICAgICAgICAgICAgICAgICAgJmZsYWdmaWxlX2ZsYWcp
LAorICB9OworICBUZXN0UGFyc2UoaW5fYXJnczEsIC0xLCAwLjEsICJxMncyICAiLCB0cnVlKTsK
KworICBjb25zdCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAg
R2V0RmxhZ2ZpbGVGbGFnKHt7InBhcnNlX3Rlc3QuZmYyIiwgYWJzbDo6TWFrZUNvbnN0U3Bhbihm
ZjJfZGF0YSl9fSwKKyAgICAgICAgICAgICAgICAgICAgICAmZmxhZ2ZpbGVfZmxhZyksCisgIH07
CisgIFRlc3RQYXJzZShpbl9hcmdzMiwgMTAwLCAwLjEsICJxMncyICAiLCBmYWxzZSk7Cit9CisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RWYWxpZE11bHRpRmxhZ2Zp
bGUpIHsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZzsKKworICBjb25zdCBjaGFyKiBpbl9h
cmdzMVtdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgR2V0RmxhZ2ZpbGVGbGFnKHt7InBh
cnNlX3Rlc3QuZmYyIiwgYWJzbDo6TWFrZUNvbnN0U3BhbihmZjJfZGF0YSl9LAorICAgICAgICAg
ICAgICAgICAgICAgICB7InBhcnNlX3Rlc3QuZmYxIiwgYWJzbDo6TWFrZUNvbnN0U3BhbihmZjFf
ZGF0YSl9fSwKKyAgICAgICAgICAgICAgICAgICAgICAmZmxhZ2ZpbGVfZmxhZyksCisgIH07Cisg
IFRlc3RQYXJzZShpbl9hcmdzMSwgLTEsIDAuMSwgInEydzIgICIsIHRydWUpOworfQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0RmxhZ2ZpbGVNaXhlZFdpdGhSZWd1
bGFyRmxhZ3MpIHsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZzsKKworICBjb25zdCBjaGFy
KiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLCAiLS1pbnRfZmxhZz0zIiwKKyAgICAg
IEdldEZsYWdmaWxlRmxhZyh7eyJwYXJzZV90ZXN0LmZmMSIsIGFic2w6Ok1ha2VDb25zdFNwYW4o
ZmYxX2RhdGEpfX0sCisgICAgICAgICAgICAgICAgICAgICAgJmZsYWdmaWxlX2ZsYWcpLAorICAg
ICAgIi1kb3VibGVfZmxhZz0wLjIifTsKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAtMSwgMC4yLCAi
cTJ3MiAgIiwgdHJ1ZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3Qs
IFRlc3RGbGFnZmlsZUluRmxhZ2ZpbGUpIHsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZzsK
KworICBjb25zdGV4cHIgY29uc3QgY2hhciogY29uc3QgZmYzX2RhdGFbXSA9IHsKKyAgICAgICIt
LWZsYWdmaWxlPSQwL3BhcnNlX3Rlc3QuZmYxIiwKKyAgICAgICItLWZsYWdmaWxlPSQwL3BhcnNl
X3Rlc3QuZmYyIiwKKyAgfTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAg
InRlc3RiaW4iLAorICAgICAgR2V0RmxhZ2ZpbGVGbGFnKHt7InBhcnNlX3Rlc3QuZmYzIiwgYWJz
bDo6TWFrZUNvbnN0U3BhbihmZjNfZGF0YSl9fSwKKyAgICAgICAgICAgICAgICAgICAgICAmZmxh
Z2ZpbGVfZmxhZyksCisgIH07CisgIFRlc3RQYXJzZShpbl9hcmdzMSwgMTAwLCAwLjEsICJxMncy
ICAiLCBmYWxzZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZURlYXRoVGVz
dCwgVGVzdEludmFsaWRGbGFnZmlsZXMpIHsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZzsK
KworICBjb25zdGV4cHIgY29uc3QgY2hhciogY29uc3QgZmY0X2RhdGFbXSA9IHsKKyAgICAiLS11
bmtub3duX2ZsYWc9MTAiCisgIH07CisKKyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAg
ICAgICJ0ZXN0YmluIiwKKyAgICAgIEdldEZsYWdmaWxlRmxhZyh7eyJwYXJzZV90ZXN0LmZmNCIs
CisgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpNYWtlQ29uc3RTcGFuKGZmNF9kYXRhKX19
LCAmZmxhZ2ZpbGVfZmxhZyksCisgIH07CisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9h
cmdzMSksCisgICAgICAgICAgICAgICAiVW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyAndW5rbm93
bl9mbGFnJyIpOworCisgIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjb25zdCBmZjVfZGF0YVtdID0g
eworICAgICItLWludF9mbGFnIDEwIiwKKyAgfTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzMltd
ID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgR2V0RmxhZ2ZpbGVGbGFnKHt7InBhcnNlX3Rl
c3QuZmY1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Ok1ha2VDb25zdFNwYW4oZmY1
X2RhdGEpfX0sICZmbGFnZmlsZV9mbGFnKSwKKyAgfTsKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBh
cnNlKGluX2FyZ3MyKSwKKyAgICAgICAgICAgICAgICJVbmtub3duIGNvbW1hbmQgbGluZSBmbGFn
ICdpbnRfZmxhZyAxMCciKTsKKworICBjb25zdGV4cHIgY29uc3QgY2hhciogY29uc3QgZmY2X2Rh
dGFbXSA9IHsKKyAgICAgICItLWludF9mbGFnPTEwIiwgIi0tIiwgImFyZzEiLCAiYXJnMiIsICJh
cmczIiwKKyAgfTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzM1tdID0geworICAgICAgInRlc3Ri
aW4iLAorICAgICAgR2V0RmxhZ2ZpbGVGbGFnKHt7InBhcnNlX3Rlc3QuZmY2IiwgYWJzbDo6TWFr
ZUNvbnN0U3BhbihmZjZfZGF0YSl9fSwKKyAgICAgICAgICAgICAgICAgICAgICAmZmxhZ2ZpbGVf
ZmxhZyksCisgIH07CisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9hcmdzMyksCisgICAg
ICAgICAgICAgICAiRmxhZ2ZpbGUgY2FuJ3QgY29udGFpbiBwb3NpdGlvbiBhcmd1bWVudHMgb3Ig
LS0iKTsKKworICBjb25zdCBjaGFyKiBpbl9hcmdzNFtdID0geworICAgICAgInRlc3RiaW4iLAor
ICAgICAgIi0tZmxhZ2ZpbGU9aW52YWxpZF9mbGFnX2ZpbGUiLAorICB9OworICBFWFBFQ1RfREVB
VEgoSW52b2tlUGFyc2UoaW5fYXJnczQpLCAiQ2FuJ3Qgb3BlbiBmbGFnZmlsZSBpbnZhbGlkX2Zs
YWdfZmlsZSIpOworCisgIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjb25zdCBmZjdfZGF0YVtdID0g
eworICAgICAgIi0taW50X2ZsYWc9MTAiLAorICAgICAgIipiaW4qIiwKKyAgICAgICItLXN0cl9m
bGFnPWFxc3ciLAorICB9OworCisgIGNvbnN0IGNoYXIqIGluX2FyZ3M1W10gPSB7CisgICAgICAi
dGVzdGJpbiIsCisgICAgICBHZXRGbGFnZmlsZUZsYWcoe3sicGFyc2VfdGVzdC5mZjciLCBhYnNs
OjpNYWtlQ29uc3RTcGFuKGZmN19kYXRhKX19LAorICAgICAgICAgICAgICAgICAgICAgICZmbGFn
ZmlsZV9mbGFnKSwKKyAgfTsKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNlKGluX2FyZ3M1KSwK
KyAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIGxpbmUgaW4gdGhlIGZsYWdmaWxlIC4qOiBcXCpi
aW5cXCoiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdFJl
YWRpbmdSZXF1aXJlZEZsYWdzRnJvbUVudikgeworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0g
eyJ0ZXN0YmluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1mcm9tZW52PWludF9m
bGFnLGJvb2xfZmxhZyxzdHJpbmdfZmxhZyJ9OworCisgIFNjb3BlZFNldEVudiBzZXRfaW50X2Zs
YWcoIkZMQUdTX2ludF9mbGFnIiwgIjMzIik7CisgIFNjb3BlZFNldEVudiBzZXRfYm9vbF9mbGFn
KCJGTEFHU19ib29sX2ZsYWciLCAiVHJ1ZSIpOworICBTY29wZWRTZXRFbnYgc2V0X3N0cmluZ19m
bGFnKCJGTEFHU19zdHJpbmdfZmxhZyIsICJBUTEyIik7CisKKyAgVGVzdFBhcnNlKGluX2FyZ3Mx
LCAzMywgMS4xLCAiQVExMiIsIHRydWUpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0Yo
UGFyc2VEZWF0aFRlc3QsIFRlc3RSZWFkaW5nVW5zZXRSZXF1aXJlZEZsYWdzRnJvbUVudikgewor
ICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geyJ0ZXN0YmluIiwgIi0tZnJvbWVudj1pbnRfZmxh
ZyJ9OworCisgIEVYUEVDVF9ERUFUSChJbnZva2VQYXJzZShpbl9hcmdzMSksCisgICAgICAgICAg
ICAgICAiRkxBR1NfaW50X2ZsYWcgbm90IGZvdW5kIGluIGVudmlyb25tZW50Iik7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZURlYXRoVGVzdCwgVGVzdFJlY3Vyc2l2ZUZsYWdz
RnJvbUVudikgeworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geyJ0ZXN0YmluIiwgIi0tZnJv
bWVudj10cnlmcm9tZW52In07CisKKyAgU2NvcGVkU2V0RW52IHNldF90cnlmcm9tZW52KCJGTEFH
U190cnlmcm9tZW52IiwgImludF9mbGFnIik7CisKKyAgRVhQRUNUX0RFQVRIKEludm9rZVBhcnNl
KGluX2FyZ3MxKSwgIkluZmluaXRlIHJlY3Vyc2lvbiBvbiBmbGFnIHRyeWZyb21lbnYiKTsKK30K
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKFBhcnNlVGVzdCwgVGVzdFJlYWRpbmdPcHRpb25h
bEZsYWdzRnJvbUVudikgeworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRl
c3RiaW4iLCAiLS10cnlmcm9tZW52PWludF9mbGFnLGJvb2xfZmxhZyxzdHJpbmdfZmxhZyxvdGhl
cl9mbGFnIn07CisKKyAgU2NvcGVkU2V0RW52IHNldF9pbnRfZmxhZygiRkxBR1NfaW50X2ZsYWci
LCAiMTciKTsKKyAgU2NvcGVkU2V0RW52IHNldF9ib29sX2ZsYWcoIkZMQUdTX2Jvb2xfZmxhZyIs
ICJZIik7CisKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAxNywgMS4xLCAiYSIsIHRydWUpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0UmVhZGluZ0ZsYWdzRnJv
bUVudk1veGVkV2l0aFJlZ3VsYXJGbGFncykgeworICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0g
eworICAgICAgInRlc3RiaW4iLAorICAgICAgIi0tYm9vbF9mbGFnPVQiLAorICAgICAgIi0tdHJ5
ZnJvbWVudj1pbnRfZmxhZyxib29sX2ZsYWciLAorICAgICAgIi0taW50X2ZsYWc9LTIxIiwKKyAg
fTsKKworICBTY29wZWRTZXRFbnYgc2V0X2ludF9mbGFnKCJGTEFHU19pbnRfZmxhZyIsICItMTUi
KTsKKyAgU2NvcGVkU2V0RW52IHNldF9ib29sX2ZsYWcoIkZMQUdTX2Jvb2xfZmxhZyIsICJGIik7
CisKKyAgVGVzdFBhcnNlKGluX2FyZ3MxLCAtMjEsIDEuMSwgImEiLCBmYWxzZSk7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK1RFU1RfRihQYXJzZVRlc3QsIFRlc3RLZWVwUGFyc2VkQXJncykgewor
ICBjb25zdCBjaGFyKiBpbl9hcmdzMVtdID0geworICAgICAgInRlc3RiaW4iLCAgICAgICAgImFy
ZzEiLCAiLS1ib29sX2ZsYWciLAorICAgICAgIi0taW50X2ZsYWc9MjExIiwgImFyZzIiLCAiLS1k
b3VibGVfZmxhZz0xLjEiLAorICAgICAgIi0tc3RyaW5nX2ZsYWciLCAgImFzZCIsICAiLS0iLAor
ICAgICAgImFyZzMiLCAgICAgICAgICAgImFyZzQiLAorICB9OworCisgIGF1dG8gb3V0X2FyZ3Mx
ID0gSW52b2tlUGFyc2UoaW5fYXJnczEpOworCisgIEVYUEVDVF9USEFUKAorICAgICAgb3V0X2Fy
Z3MxLAorICAgICAgRWxlbWVudHNBcmVBcnJheSh7YWJzbDo6c3RyaW5nX3ZpZXcoInRlc3RiaW4i
KSwgYWJzbDo6c3RyaW5nX3ZpZXcoImFyZzEiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFi
c2w6OnN0cmluZ192aWV3KCJhcmcyIiksIGFic2w6OnN0cmluZ192aWV3KCJhcmczIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldygiYXJnNCIpfSkpOworCisgIGF1
dG8gb3V0X2FyZ3MyID0gZmxhZ3M6OlBhcnNlQ29tbWFuZExpbmVJbXBsKAorICAgICAgMTEsIGNv
bnN0X2Nhc3Q8Y2hhcioqPihpbl9hcmdzMSksIGZsYWdzOjpBcmd2TGlzdEFjdGlvbjo6a0tlZXBQ
YXJzZWRBcmdzLAorICAgICAgZmxhZ3M6OlVzYWdlRmxhZ3NBY3Rpb246OmtIYW5kbGVVc2FnZSwK
KyAgICAgIGZsYWdzOjpPblVuZGVmaW5lZEZsYWc6OmtBYm9ydElmVW5kZWZpbmVkKTsKKworICBF
WFBFQ1RfVEhBVCgKKyAgICAgIG91dF9hcmdzMiwKKyAgICAgIEVsZW1lbnRzQXJlQXJyYXkoe2Fi
c2w6OnN0cmluZ192aWV3KCJ0ZXN0YmluIiksCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNs
OjpzdHJpbmdfdmlldygiLS1ib29sX2ZsYWciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFi
c2w6OnN0cmluZ192aWV3KCItLWludF9mbGFnPTIxMSIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6c3RyaW5nX3ZpZXcoIi0tZG91YmxlX2ZsYWc9MS4xIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldygiLS1zdHJpbmdfZmxhZyIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoImFzZCIpLCBhYnNsOjpzdHJpbmdfdmll
dygiLS0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3KCJhcmcx
IiksIGFic2w6OnN0cmluZ192aWV3KCJhcmcyIiksCisgICAgICAgICAgICAgICAgICAgICAgICBh
YnNsOjpzdHJpbmdfdmlldygiYXJnMyIpLCBhYnNsOjpzdHJpbmdfdmlldygiYXJnNCIpfSkpOwor
fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VUZXN0LCBUZXN0SWdub3JlVW5kZWZp
bmVkRmxhZ3MpIHsKKyAgY29uc3QgY2hhciogaW5fYXJnczFbXSA9IHsKKyAgICAgICJ0ZXN0Ymlu
IiwKKyAgICAgICJhcmcxIiwKKyAgICAgICItLXVuZGVmX2ZsYWc9YWEiLAorICAgICAgIi0taW50
X2ZsYWc9MjEiLAorICB9OworCisgIGF1dG8gb3V0X2FyZ3MxID0gZmxhZ3M6OlBhcnNlQ29tbWFu
ZExpbmVJbXBsKAorICAgICAgNCwgY29uc3RfY2FzdDxjaGFyKio+KGluX2FyZ3MxKSwgZmxhZ3M6
OkFyZ3ZMaXN0QWN0aW9uOjprUmVtb3ZlUGFyc2VkQXJncywKKyAgICAgIGZsYWdzOjpVc2FnZUZs
YWdzQWN0aW9uOjprSGFuZGxlVXNhZ2UsCisgICAgICBmbGFnczo6T25VbmRlZmluZWRGbGFnOjpr
SWdub3JlVW5kZWZpbmVkKTsKKworICBFWFBFQ1RfVEhBVChvdXRfYXJnczEsIEVsZW1lbnRzQXJl
QXJyYXkoe2Fic2w6OnN0cmluZ192aWV3KCJ0ZXN0YmluIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoImFyZzEiKX0pKTsKKwor
ICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19pbnRfZmxhZyksIDIxKTsKKworICBjb25z
dCBjaGFyKiBpbl9hcmdzMltdID0geworICAgICAgInRlc3RiaW4iLAorICAgICAgImFyZzEiLAor
ICAgICAgIi0tdW5kZWZfZmxhZz1hYSIsCisgICAgICAiLS1zdHJpbmdfZmxhZz1BQSIsCisgIH07
CisKKyAgYXV0byBvdXRfYXJnczIgPSBmbGFnczo6UGFyc2VDb21tYW5kTGluZUltcGwoCisgICAg
ICA0LCBjb25zdF9jYXN0PGNoYXIqKj4oaW5fYXJnczIpLCBmbGFnczo6QXJndkxpc3RBY3Rpb246
OmtLZWVwUGFyc2VkQXJncywKKyAgICAgIGZsYWdzOjpVc2FnZUZsYWdzQWN0aW9uOjprSGFuZGxl
VXNhZ2UsCisgICAgICBmbGFnczo6T25VbmRlZmluZWRGbGFnOjprSWdub3JlVW5kZWZpbmVkKTsK
KworICBFWFBFQ1RfVEhBVCgKKyAgICAgIG91dF9hcmdzMiwKKyAgICAgIEVsZW1lbnRzQXJlQXJy
YXkoCisgICAgICAgICAge2Fic2w6OnN0cmluZ192aWV3KCJ0ZXN0YmluIiksIGFic2w6OnN0cmlu
Z192aWV3KCItLXVuZGVmX2ZsYWc9YWEiKSwKKyAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXco
Ii0tc3RyaW5nX2ZsYWc9QUEiKSwgYWJzbDo6c3RyaW5nX3ZpZXcoImFyZzEiKX0pKTsKKworICBF
WFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19zdHJpbmdfZmxhZyksICJBQSIpOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitURVNUX0YoUGFyc2VEZWF0aFRlc3QsIFRlc3RIZWxwRmxhZ0hhbmRs
aW5nKSB7CisgIGNvbnN0IGNoYXIqIGluX2FyZ3MxW10gPSB7CisgICAgICAidGVzdGJpbiIsCisg
ICAgICAiLS1oZWxwIiwKKyAgfTsKKworICBFWFBFQ1RfRVhJVChJbnZva2VQYXJzZShpbl9hcmdz
MSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7CisKKyAgY29uc3QgY2hhciogaW5f
YXJnczJbXSA9IHsKKyAgICAgICJ0ZXN0YmluIiwKKyAgICAgICItLWhlbHAiLAorICAgICAgIi0t
aW50X2ZsYWc9MyIsCisgIH07CisKKyAgYXV0byBvdXRfYXJnczIgPSBmbGFnczo6UGFyc2VDb21t
YW5kTGluZUltcGwoCisgICAgICAzLCBjb25zdF9jYXN0PGNoYXIqKj4oaW5fYXJnczIpLCBmbGFn
czo6QXJndkxpc3RBY3Rpb246OmtSZW1vdmVQYXJzZWRBcmdzLAorICAgICAgZmxhZ3M6OlVzYWdl
RmxhZ3NBY3Rpb246OmtJZ25vcmVVc2FnZSwKKyAgICAgIGZsYWdzOjpPblVuZGVmaW5lZEZsYWc6
OmtBYm9ydElmVW5kZWZpbmVkKTsKKworICBFWFBFQ1RfRVEoYWJzbDo6R2V0RmxhZyhGTEFHU19p
bnRfZmxhZyksIDMpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Zs
YWdzL3VzYWdlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2UuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZmN2EzZGFi
MzljZmZhNTYxZjE1ZGY1MDExZTE5MWVmYWJhNWYzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2ZsYWdzL3VzYWdlLmNjCkBAIC0wLDAgKzEsNTYgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOSBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3VzYWdlLmgiCisKKyNp
bmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL2ludGVybmFsL3VzYWdlLmgi
CisjaW5jbHVkZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CitBQlNMX0NPTlNU
X0lOSVQgYWJzbDo6TXV0ZXggdXNhZ2VfbWVzc2FnZV9ndWFyZChhYnNsOjprQ29uc3RJbml0KTsK
K0FCU0xfQ09OU1RfSU5JVCBzdGQ6OnN0cmluZyogcHJvZ3JhbV91c2FnZV9tZXNzYWdlCisgICAg
QUJTTF9HVUFSREVEX0JZKHVzYWdlX21lc3NhZ2VfZ3VhcmQpID0gbnVsbHB0cjsKK30gIC8vIG5h
bWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyBTZXRzIHRoZSAidXNhZ2UiIG1lc3NhZ2UgdG8gYmUgdXNlZCBieSBoZWxwIHJlcG9ydGlu
ZyByb3V0aW5lcy4KK3ZvaWQgU2V0UHJvZ3JhbVVzYWdlTWVzc2FnZShhYnNsOjpzdHJpbmdfdmll
dyBuZXdfdXNhZ2VfbWVzc2FnZSkgeworICBhYnNsOjpNdXRleExvY2sgbCgmZmxhZ3NfaW50ZXJu
YWw6OnVzYWdlX21lc3NhZ2VfZ3VhcmQpOworCisgIGlmIChmbGFnc19pbnRlcm5hbDo6cHJvZ3Jh
bV91c2FnZV9tZXNzYWdlICE9IG51bGxwdHIpIHsKKyAgICBBQlNMX0lOVEVSTkFMX0xPRyhGQVRB
TCwgIlNldFByb2dyYW1Vc2FnZU1lc3NhZ2UoKSBjYWxsZWQgdHdpY2UuIik7CisgICAgc3RkOjpl
eGl0KDEpOworICB9CisKKyAgZmxhZ3NfaW50ZXJuYWw6OnByb2dyYW1fdXNhZ2VfbWVzc2FnZSA9
IG5ldyBzdGQ6OnN0cmluZyhuZXdfdXNhZ2VfbWVzc2FnZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyBSZXR1cm5zIHRoZSB1c2FnZSBtZXNzYWdlIHNldCBieSBTZXRQcm9ncmFtVXNhZ2VNZXNz
YWdlKCkuCisvLyBOb3RlOiBXZSBhYmxlIHRvIHJldHVybiBzdHJpbmdfdmlldyBoZXJlIG9ubHkg
YmVjYXVzZSBjYWxsaW5nCisvLyBTZXRQcm9ncmFtVXNhZ2VNZXNzYWdlIHR3aWNlIGlzIHByb2hp
Yml0ZWQuCithYnNsOjpzdHJpbmdfdmlldyBQcm9ncmFtVXNhZ2VNZXNzYWdlKCkgeworICBhYnNs
OjpNdXRleExvY2sgbCgmZmxhZ3NfaW50ZXJuYWw6OnVzYWdlX21lc3NhZ2VfZ3VhcmQpOworCisg
IHJldHVybiBmbGFnc19pbnRlcm5hbDo6cHJvZ3JhbV91c2FnZV9tZXNzYWdlICE9IG51bGxwdHIK
KyAgICAgICAgICAgICA/IGFic2w6OnN0cmluZ192aWV3KCpmbGFnc19pbnRlcm5hbDo6cHJvZ3Jh
bV91c2FnZV9tZXNzYWdlKQorICAgICAgICAgICAgIDogIldhcm5pbmc6IFNldFByb2dyYW1Vc2Fn
ZU1lc3NhZ2UoKSBuZXZlciBjYWxsZWQiOworfQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3VzYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2ExMjEwNzEzN2FkNDcxYzhhMDMyYWQ4MTQzNmUxMzZlYTdiMmQxNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3VzYWdlLmgKQEAgLTAsMCArMSw0MCBAQAorLy8KKy8vICBD
b3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0ZMQUdT
X1VTQUdFX0hfCisjZGVmaW5lIEFCU0xfRkxBR1NfVVNBR0VfSF8KKworI2luY2x1ZGUgImFic2wv
c3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gVXNhZ2UgcmVwb3J0
aW5nIGludGVyZmFjZXMKKworbmFtZXNwYWNlIGFic2wgeworCisvLyBTZXRzIHRoZSAidXNhZ2Ui
IG1lc3NhZ2UgdG8gYmUgdXNlZCBieSBoZWxwIHJlcG9ydGluZyByb3V0aW5lcy4KKy8vIEZvciBl
eGFtcGxlOgorLy8gIGFic2w6OlNldFByb2dyYW1Vc2FnZU1lc3NhZ2UoCisvLyAgICAgIGFic2w6
OlN0ckNhdCgiVGhpcyBwcm9ncmFtIGRvZXMgbm90aGluZy4gIFNhbXBsZSB1c2FnZTpcbiIsIGFy
Z3ZbMF0sCisvLyAgICAgICAgICAgICAgICAgICAiIDx1c2VsZXNzYXJnMT4gPHVzZWxlc3Nhcmcy
PiIpKTsKKy8vIERvIG5vdCBpbmNsdWRlIGNvbW1hbmRsaW5lIGZsYWdzIGluIHRoZSB1c2FnZTog
d2UgZG8gdGhhdCBmb3IgeW91IQorLy8gTm90ZTogQ2FsbGluZyBTZXRQcm9ncmFtVXNhZ2VNZXNz
YWdlIHR3aWNlIHdpbGwgdHJpZ2dlciBhIGNhbGwgdG8gc3RkOjpleGl0Lgordm9pZCBTZXRQcm9n
cmFtVXNhZ2VNZXNzYWdlKGFic2w6OnN0cmluZ192aWV3IG5ld191c2FnZV9tZXNzYWdlKTsKKwor
Ly8gUmV0dXJucyB0aGUgdXNhZ2UgbWVzc2FnZSBzZXQgYnkgU2V0UHJvZ3JhbVVzYWdlTWVzc2Fn
ZSgpLgorYWJzbDo6c3RyaW5nX3ZpZXcgUHJvZ3JhbVVzYWdlTWVzc2FnZSgpOworCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfRkxBR1NfVVNBR0VfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2ZsYWdzL3VzYWdlX2NvbmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2ZsYWdzL3VzYWdlX2NvbmZp
Zy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mOTdiZjMwMGRkZTczODA4M2U4ZmQ5ZmRjMDc2ZTg2ODE3YTU5NDY1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2VfY29uZmlnLmNjCkBAIC0wLDAg
KzEsMTUyIEBACisvLworLy8gIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
CisjaW5jbHVkZSAiYWJzbC9mbGFncy91c2FnZV9jb25maWcuaCIKKworI2luY2x1ZGUgPGlvc3Ry
ZWFtPgorI2luY2x1ZGUgPG1lbW9yeT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVz
LmgiCisjaW5jbHVkZSAiYWJzbC9mbGFncy9pbnRlcm5hbC9wYXRoX3V0aWwuaCIKKyNpbmNsdWRl
ICJhYnNsL2ZsYWdzL2ludGVybmFsL3Byb2dyYW1fbmFtZS5oIgorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmlwLmgiCisjaW5jbHVk
ZSAiYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIKKworZXh0ZXJuICJDIiB7CisKKy8vIEFk
ZGl0aW9uYWwgcmVwb3J0IG9mIGZhdGFsIHVzYWdlIGVycm9yIG1lc3NhZ2UgYmVmb3JlIHdlIHN0
ZDo6ZXhpdC4gRXJyb3IgaXMKKy8vIGZhdGFsIGlmIGlzX2ZhdGFsIGFyZ3VtZW50IHRvIFJlcG9y
dFVzYWdlRXJyb3IgaXMgdHJ1ZS4KK0FCU0xfQVRUUklCVVRFX1dFQUsgdm9pZCBBYnNsSW50ZXJu
YWxSZXBvcnRGYXRhbFVzYWdlRXJyb3IoYWJzbDo6c3RyaW5nX3ZpZXcpIHt9CisKK30gIC8vIGV4
dGVybiAiQyIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsIHsK
KworbmFtZXNwYWNlIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFJldHVybnMgdHJ1ZSBpZiBmbGFn
cyBkZWZpbmVkIGluIHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcmVwb3J0ZWQgd2l0aAorLy8gLWhl
bHBzaG9ydCBmbGFnLgorCitib29sIENvbnRhaW5zSGVscHNob3J0RmxhZ3MoYWJzbDo6c3RyaW5n
X3ZpZXcgZmlsZW5hbWUpIHsKKyAgLy8gQnkgZGVmYXVsdCB3ZSBvbmx5IHdhbnQgZmxhZ3MgaW4g
YmluYXJ5J3MgbWFpbi4gV2UgZXhwZWN0IHRoZSBtYWluCisgIC8vIHJvdXRpbmUgdG8gcmVzaWRl
IGluIDxwcm9ncmFtPi5jYyBvciA8cHJvZ3JhbT4tbWFpbi5jYyBvcgorICAvLyA8cHJvZ3JhbT5f
bWFpbi5jYywgd2hlcmUgdGhlIDxwcm9ncmFtPiBpcyB0aGUgbmFtZSBvZiB0aGUgYmluYXJ5Lgor
ICBhdXRvIHN1ZmZpeCA9IGZsYWdzX2ludGVybmFsOjpCYXNlbmFtZShmaWxlbmFtZSk7CisgIGlm
ICghYWJzbDo6Q29uc3VtZVByZWZpeCgmc3VmZml4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3NfaW50ZXJuYWw6OlNob3J0UHJvZ3JhbUludm9jYXRpb25OYW1lKCkpKQorICAgIHJl
dHVybiBmYWxzZTsKKyAgcmV0dXJuIGFic2w6OlN0YXJ0c1dpdGgoc3VmZml4LCAiLiIpIHx8IGFi
c2w6OlN0YXJ0c1dpdGgoc3VmZml4LCAiLW1haW4uIikgfHwKKyAgICAgICAgIGFic2w6OlN0YXJ0
c1dpdGgoc3VmZml4LCAiX21haW4uIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBSZXR1cm5z
IHRydWUgaWYgZmxhZ3MgZGVmaW5lZCBpbiB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHJlcG9ydGVk
IHdpdGgKKy8vIC1oZWxwcGFja2FnZSBmbGFnLgorCitib29sIENvbnRhaW5zSGVscHBhY2thZ2VG
bGFncyhhYnNsOjpzdHJpbmdfdmlldyBmaWxlbmFtZSkgeworICAvLyBUT0RPKHJvZ2VlZmYpOiBp
bXBsZW1lbnQgcHJvcGVybHkgd2hlbiByZWdpc3RyeSBpcyBhdmFpbGFibGUuCisgIHJldHVybiBD
b250YWluc0hlbHBzaG9ydEZsYWdzKGZpbGVuYW1lKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IEdlbmVyYXRlcyBwcm9ncmFtIHZlcnNpb24gaW5mb3JtYXRpb24gaW50byBzdXBwbGllZCBvdXRw
dXQuCisKK3N0ZDo6c3RyaW5nIFZlcnNpb25TdHJpbmcoKSB7CisgIHN0ZDo6c3RyaW5nIHZlcnNp
b25fc3RyKGZsYWdzX2ludGVybmFsOjpTaG9ydFByb2dyYW1JbnZvY2F0aW9uTmFtZSgpKTsKKwor
ICB2ZXJzaW9uX3N0ciArPSAiXG4iOworCisjaWYgIWRlZmluZWQoTkRFQlVHKQorICB2ZXJzaW9u
X3N0ciArPSAiRGVidWcgYnVpbGQgKE5ERUJVRyBub3QgI2RlZmluZWQpXG4iOworI2VuZGlmCisK
KyAgcmV0dXJuIHZlcnNpb25fc3RyOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gTm9ybWFsaXpl
cyB0aGUgZmlsZW5hbWUgc3BlY2lmaWMgdG8gdGhlIGJ1aWxkIHN5c3RlbS9maWxlc3lzdGVtIHVz
ZWQuCisKK3N0ZDo6c3RyaW5nIE5vcm1hbGl6ZUZpbGVuYW1lKGFic2w6OnN0cmluZ192aWV3IGZp
bGVuYW1lKSB7CisgIC8vIFNraXAgYW55IGxlYWRpbmcgc2xhc2hlcworICBhdXRvIHBvcyA9IGZp
bGVuYW1lLmZpbmRfZmlyc3Rfbm90X29mKCJcXC8iKTsKKyAgaWYgKHBvcyA9PSBhYnNsOjpzdHJp
bmdfdmlldzo6bnBvcykgcmV0dXJuICIiOworCisgIGZpbGVuYW1lLnJlbW92ZV9wcmVmaXgocG9z
KTsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKGZpbGVuYW1lKTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworQUJTTF9DT05TVF9JTklUIGFic2w6Ok11dGV4IGN1c3RvbV91c2FnZV9jb25maWdfZ3VhcmQo
YWJzbDo6a0NvbnN0SW5pdCk7CitBQlNMX0NPTlNUX0lOSVQgRmxhZ3NVc2FnZUNvbmZpZyogY3Vz
dG9tX3VzYWdlX2NvbmZpZworICAgIEFCU0xfR1VBUkRFRF9CWShjdXN0b21fdXNhZ2VfY29uZmln
X2d1YXJkKSA9IG51bGxwdHI7CisKK30gIC8vIG5hbWVzcGFjZQorCitGbGFnc1VzYWdlQ29uZmln
IEdldFVzYWdlQ29uZmlnKCkgeworICBhYnNsOjpNdXRleExvY2sgbCgmY3VzdG9tX3VzYWdlX2Nv
bmZpZ19ndWFyZCk7CisKKyAgaWYgKGN1c3RvbV91c2FnZV9jb25maWcpIHJldHVybiAqY3VzdG9t
X3VzYWdlX2NvbmZpZzsKKworICBGbGFnc1VzYWdlQ29uZmlnIGRlZmF1bHRfY29uZmlnOworICBk
ZWZhdWx0X2NvbmZpZy5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MgPSAmQ29udGFpbnNIZWxwc2hv
cnRGbGFnczsKKyAgZGVmYXVsdF9jb25maWcuY29udGFpbnNfaGVscF9mbGFncyA9ICZDb250YWlu
c0hlbHBwYWNrYWdlRmxhZ3M7CisgIGRlZmF1bHRfY29uZmlnLmNvbnRhaW5zX2hlbHBwYWNrYWdl
X2ZsYWdzID0gJkNvbnRhaW5zSGVscHBhY2thZ2VGbGFnczsKKyAgZGVmYXVsdF9jb25maWcudmVy
c2lvbl9zdHJpbmcgPSAmVmVyc2lvblN0cmluZzsKKyAgZGVmYXVsdF9jb25maWcubm9ybWFsaXpl
X2ZpbGVuYW1lID0gJk5vcm1hbGl6ZUZpbGVuYW1lOworCisgIHJldHVybiBkZWZhdWx0X2NvbmZp
ZzsKK30KKwordm9pZCBSZXBvcnRVc2FnZUVycm9yKGFic2w6OnN0cmluZ192aWV3IG1zZywgYm9v
bCBpc19mYXRhbCkgeworICBzdGQ6OmNlcnIgPDwgIkVSUk9SOiAiIDw8IG1zZyA8PCBzdGQ6OmVu
ZGw7CisKKyAgaWYgKGlzX2ZhdGFsKSB7CisgICAgQWJzbEludGVybmFsUmVwb3J0RmF0YWxVc2Fn
ZUVycm9yKG1zZyk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGZsYWdzX2ludGVybmFsCisK
K3ZvaWQgU2V0RmxhZ3NVc2FnZUNvbmZpZyhGbGFnc1VzYWdlQ29uZmlnIHVzYWdlX2NvbmZpZykg
eworICBhYnNsOjpNdXRleExvY2sgbCgmZmxhZ3NfaW50ZXJuYWw6OmN1c3RvbV91c2FnZV9jb25m
aWdfZ3VhcmQpOworCisgIGlmICghdXNhZ2VfY29uZmlnLmNvbnRhaW5zX2hlbHBzaG9ydF9mbGFn
cykKKyAgICB1c2FnZV9jb25maWcuY29udGFpbnNfaGVscHNob3J0X2ZsYWdzID0KKyAgICAgICAg
ZmxhZ3NfaW50ZXJuYWw6OkNvbnRhaW5zSGVscHNob3J0RmxhZ3M7CisKKyAgaWYgKCF1c2FnZV9j
b25maWcuY29udGFpbnNfaGVscF9mbGFncykKKyAgICB1c2FnZV9jb25maWcuY29udGFpbnNfaGVs
cF9mbGFncyA9IGZsYWdzX2ludGVybmFsOjpDb250YWluc0hlbHBwYWNrYWdlRmxhZ3M7CisKKyAg
aWYgKCF1c2FnZV9jb25maWcuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MpCisgICAgdXNhZ2Vf
Y29uZmlnLmNvbnRhaW5zX2hlbHBwYWNrYWdlX2ZsYWdzID0KKyAgICAgICAgZmxhZ3NfaW50ZXJu
YWw6OkNvbnRhaW5zSGVscHBhY2thZ2VGbGFnczsKKworICBpZiAoIXVzYWdlX2NvbmZpZy52ZXJz
aW9uX3N0cmluZykKKyAgICB1c2FnZV9jb25maWcudmVyc2lvbl9zdHJpbmcgPSBmbGFnc19pbnRl
cm5hbDo6VmVyc2lvblN0cmluZzsKKworICBpZiAoIXVzYWdlX2NvbmZpZy5ub3JtYWxpemVfZmls
ZW5hbWUpCisgICAgdXNhZ2VfY29uZmlnLm5vcm1hbGl6ZV9maWxlbmFtZSA9IGZsYWdzX2ludGVy
bmFsOjpOb3JtYWxpemVGaWxlbmFtZTsKKworICBpZiAoZmxhZ3NfaW50ZXJuYWw6OmN1c3RvbV91
c2FnZV9jb25maWcpCisgICAgKmZsYWdzX2ludGVybmFsOjpjdXN0b21fdXNhZ2VfY29uZmlnID0g
dXNhZ2VfY29uZmlnOworICBlbHNlCisgICAgZmxhZ3NfaW50ZXJuYWw6OmN1c3RvbV91c2FnZV9j
b25maWcgPSBuZXcgRmxhZ3NVc2FnZUNvbmZpZyh1c2FnZV9jb25maWcpOworfQorCit9ICAvLyBu
YW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2VfY29uZmlnLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9mbGFncy91c2FnZV9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTUwMTZhOWVlMzBmZjE5MmUx
ZTE4MzYyZWUzMjYwN2YyOGM2MDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNh
Z2VfY29uZmlnLmgKQEAgLTAsMCArMSwxMzEgQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIwMTkgVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6
IHVzYWdlX2NvbmZpZy5oCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgZmls
ZSBkZWZpbmVzIHRoZSBtYWluIHVzYWdlIHJlcG9ydGluZyBjb25maWd1cmF0aW9uIGludGVyZmFj
ZXMgYW5kCisvLyBkb2N1bWVudHMgQWJzZWlsJ3Mgc3VwcG9ydGVkIGJ1aWx0LWluIHVzYWdlIGZs
YWdzLiBJZiB0aGVzZSBmbGFncyBhcmUgZm91bmQKKy8vIHdoZW4gcGFyc2luZyBhIGNvbW1hbmQt
bGluZSwgQWJzZWlsIHdpbGwgZXhpdCB0aGUgcHJvZ3JhbSBhbmQgZGlzcGxheQorLy8gYXBwcm9w
cmlhdGUgaGVscCBtZXNzYWdlcy4KKyNpZm5kZWYgQUJTTF9GTEFHU19VU0FHRV9DT05GSUdfSF8K
KyNkZWZpbmUgQUJTTF9GTEFHU19VU0FHRV9DT05GSUdfSF8KKworI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192
aWV3LmgiCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBCdWlsdC1pbiBVc2FnZSBGbGFn
cworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBBYnNlaWwgc3VwcG9ydHMgdGhlIGZv
bGxvd2luZyBidWlsdC1pbiB1c2FnZSBmbGFncy4gV2hlbiBwYXNzZWQsIHRoZXNlIGZsYWdzCisv
LyBleGl0IHRoZSBwcm9ncmFtIGFuZCA6CisvLworLy8gKiAtLWhlbHAKKy8vICAgICBTaG93cyBo
ZWxwIG9uIGltcG9ydGFudCBmbGFncyBmb3IgdGhpcyBiaW5hcnkKKy8vICogLS1oZWxwZnVsbAor
Ly8gICAgIFNob3dzIGhlbHAgb24gYWxsIGZsYWdzCisvLyAqIC0taGVscHNob3J0CisvLyAgICAg
U2hvd3MgaGVscCBvbiBvbmx5IHRoZSBtYWluIG1vZHVsZSBmb3IgdGhpcyBwcm9ncmFtCisvLyAq
IC0taGVscHBhY2thZ2UKKy8vICAgICBTaG93cyBoZWxwIG9uIGFsbCBtb2R1bGVzIGluIHRoZSBt
YWluIHBhY2thZ2UKKy8vICogLS12ZXJzaW9uCisvLyAgICAgU2hvd3MgdGhlIHZlcnNpb24gYW5k
IGJ1aWxkIGluZm8gZm9yIHRoaXMgYmluYXJ5IGFuZCBleGl0cworLy8gKiAtLW9ubHlfY2hlY2tf
YXJncworLy8gICAgIEV4aXRzIGFmdGVyIGNoZWNraW5nIGFsbCBmbGFncworLy8gKiAtLWhlbHBv
bgorLy8gICAgIFNob3dzIGhlbHAgb24gdGhlIG1vZHVsZXMgbmFtZWQgYnkgdGhpcyBmbGFnIHZh
bHVlCisvLyAqIC0taGVscG1hdGNoCisvLyAgICAgU2hvd3MgaGVscCBvbiBtb2R1bGVzIHdob3Nl
IG5hbWUgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdWJzdHJpbmcKKworbmFtZXNwYWNlIGFic2wg
eworCituYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwgewordXNpbmcgRmxhZ0tpbmRGaWx0ZXIgPSBz
dGQ6OmZ1bmN0aW9uPGJvb2wgKGFic2w6OnN0cmluZ192aWV3KT47Cit9ICAvLyBuYW1lc3BhY2Ug
ZmxhZ3NfaW50ZXJuYWwKKworLy8gRmxhZ3NVc2FnZUNvbmZpZworLy8KKy8vIFRoaXMgc3RydWN0
dXJlIGNvbnRhaW5zIHRoZSBjb2xsZWN0aW9uIG9mIGNhbGxiYWNrcyBmb3IgY2hhbmdpbmcgdGhl
IGJlaGF2aW9yCisvLyBvZiB0aGUgdXNhZ2UgcmVwb3J0aW5nIHJvdXRpbmVzIGluIEFic2VpbCBG
bGFncy4KK3N0cnVjdCBGbGFnc1VzYWdlQ29uZmlnIHsKKyAgLy8gUmV0dXJucyB0cnVlIGlmIGZs
YWdzIGRlZmluZWQgaW4gdGhlIGdpdmVuIHNvdXJjZSBjb2RlIGZpbGUgc2hvdWxkIGJlCisgIC8v
IHJlcG9ydGVkIHdpdGggLS1oZWxwc2hvcnQgZmxhZy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBmaWxl
CisgIC8vICJwYXRoL3RvL215L2NvZGUuY2MiIGRlZmluZXMgdGhlIGZsYWcgIi0tbXlfZmxhZyIs
IGFuZAorICAvLyBjb250YWluc19oZWxwc2hvcnRfZmxhZ3MoInBhdGgvdG8vbXkvY29kZS5jYyIp
IHJldHVybnMgdHJ1ZSwgaW52b2tpbmcgdGhlCisgIC8vIHByb2dyYW0gd2l0aCAtLWhlbHBzaG9y
dCB3aWxsIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgLS1teV9mbGFnIGluIHRoZQorICAvLyBw
cm9ncmFtIG91dHB1dC4KKyAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdLaW5kRmlsdGVyIGNvbnRhaW5z
X2hlbHBzaG9ydF9mbGFnczsKKworICAvLyBSZXR1cm5zIHRydWUgaWYgZmxhZ3MgZGVmaW5lZCBp
biB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHJlcG9ydGVkIHdpdGgKKyAgLy8gLS1oZWxwIGZsYWcu
IEZvciBleGFtcGxlLCBpZiB0aGUgZmlsZQorICAvLyAicGF0aC90by9teS9jb2RlLmNjIiBkZWZp
bmVzIHRoZSBmbGFnICItLW15X2ZsYWciLCBhbmQKKyAgLy8gY29udGFpbnNfaGVscF9mbGFncygi
cGF0aC90by9teS9jb2RlLmNjIikgcmV0dXJucyB0cnVlLCBpbnZva2luZyB0aGUKKyAgLy8gcHJv
Z3JhbSB3aXRoIC0taGVscCB3aWxsIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgLS1teV9mbGFn
IGluIHRoZQorICAvLyBwcm9ncmFtIG91dHB1dC4KKyAgZmxhZ3NfaW50ZXJuYWw6OkZsYWdLaW5k
RmlsdGVyIGNvbnRhaW5zX2hlbHBfZmxhZ3M7CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmIGZsYWdz
IGRlZmluZWQgaW4gdGhlIGZpbGVuYW1lIHNob3VsZCBiZSByZXBvcnRlZCB3aXRoCisgIC8vIC0t
aGVscHBhY2thZ2UgZmxhZy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBmaWxlCisgIC8vICJwYXRoL3Rv
L215L2NvZGUuY2MiIGRlZmluZXMgdGhlIGZsYWcgIi0tbXlfZmxhZyIsIGFuZAorICAvLyBjb250
YWluc19oZWxwcGFja2FnZV9mbGFncygicGF0aC90by9teS9jb2RlLmNjIikgcmV0dXJucyB0cnVl
LCBpbnZva2luZyB0aGUKKyAgLy8gcHJvZ3JhbSB3aXRoIC0taGVscHBhY2thZ2Ugd2lsbCBpbmNs
dWRlIGluZm9ybWF0aW9uIGFib3V0IC0tbXlfZmxhZyBpbiB0aGUKKyAgLy8gcHJvZ3JhbSBvdXRw
dXQuCisgIGZsYWdzX2ludGVybmFsOjpGbGFnS2luZEZpbHRlciBjb250YWluc19oZWxwcGFja2Fn
ZV9mbGFnczsKKworICAvLyBHZW5lcmF0ZXMgc3RkOjpzdHJpbmcgY29udGFpbmluZyBwcm9ncmFt
IHZlcnNpb24uIFRoaXMgaXMgdGhlIHN0ZDo6c3RyaW5nIHJlcG9ydGVkCisgIC8vIHdoZW4gdXNl
ciBzcGVjaWZpZXMgLS12ZXJzaW9uIGluIGEgY29tbWFuZCBsaW5lLgorICBzdGQ6OmZ1bmN0aW9u
PHN0ZDo6c3RyaW5nKCk+IHZlcnNpb25fc3RyaW5nOworCisgIC8vIE5vcm1hbGl6ZXMgdGhlIGZp
bGVuYW1lIHNwZWNpZmljIHRvIHRoZSBidWlsZCBzeXN0ZW0vZmlsZXN5c3RlbSB1c2VkLiBUaGlz
CisgIC8vIHJvdXRpbmUgaXMgdXNlZCB3aGVuIHdlIHJlcG9ydCB0aGUgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGZsYWcgZGVmaW5pdGlvbgorICAvLyBsb2NhdGlvbi4gRm9yIGluc3RhbmNlLCBpZiB5
b3VyIGJ1aWxkIHJlc2lkZXMgYXQgc29tZSBsb2NhdGlvbiB5b3UgZG8gbm90CisgIC8vIHdhbnQg
dG8gZXhwb3NlIGluIHRoZSB1c2FnZSBvdXRwdXQsIHlvdSBjYW4gdHJpbSBpdCB0byBzaG93IG9u
bHkgcmVsZXZhbnQKKyAgLy8gcGFydC4KKyAgLy8gRm9yIGV4YW1wbGU6CisgIC8vICAgbm9ybWFs
aXplX2ZpbGVuYW1lKCIvbXlfY29tcGFueS9zb21lX2xvbmdfcGF0aC9zcmMvcHJvamVjdC9maWxl
LmNjIikKKyAgLy8gbWlnaHQgcHJvZHVjZQorICAvLyAgICJwcm9qZWN0L2ZpbGUuY2MiLgorICBz
dGQ6OmZ1bmN0aW9uPHN0ZDo6c3RyaW5nIChhYnNsOjpzdHJpbmdfdmlldyk+IG5vcm1hbGl6ZV9m
aWxlbmFtZTsKK307CisKKy8vIFNldEZsYWdzVXNhZ2VDb25maWcoKQorLy8KKy8vIFNldHMgdGhl
IHVzYWdlIHJlcG9ydGluZyBjb25maWd1cmF0aW9uIGNhbGxiYWNrcy4gSWYgYW55IG9mIHRoZSBj
YWxsYmFja3MgYXJlCisvLyBub3Qgc2V0IGluIHVzYWdlX2NvbmZpZyBpbnN0YW5jZSwgdGhlbiB0
aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgY2FsbGJhY2sgaXMKKy8vIHVzZWQuCit2b2lkIFNldEZs
YWdzVXNhZ2VDb25maWcoRmxhZ3NVc2FnZUNvbmZpZyB1c2FnZV9jb25maWcpOworCituYW1lc3Bh
Y2UgZmxhZ3NfaW50ZXJuYWwgeworCitGbGFnc1VzYWdlQ29uZmlnIEdldFVzYWdlQ29uZmlnKCk7
CisKK3ZvaWQgUmVwb3J0VXNhZ2VFcnJvcihhYnNsOjpzdHJpbmdfdmlldyBtc2csIGJvb2wgaXNf
ZmF0YWwpOworCit9ICAvLyBuYW1lc3BhY2UgZmxhZ3NfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFj
ZSBhYnNsCisKK2V4dGVybiAiQyIgeworCisvLyBBZGRpdGlvbmFsIHJlcG9ydCBvZiBmYXRhbCB1
c2FnZSBlcnJvciBtZXNzYWdlIGJlZm9yZSB3ZSBzdGQ6OmV4aXQuIEVycm9yIGlzCisvLyBmYXRh
bCBpZiBpc19mYXRhbCBhcmd1bWVudCB0byBSZXBvcnRVc2FnZUVycm9yIGlzIHRydWUuCit2b2lk
IEFic2xJbnRlcm5hbFJlcG9ydEZhdGFsVXNhZ2VFcnJvcihhYnNsOjpzdHJpbmdfdmlldyk7CisK
K30gIC8vIGV4dGVybiAiQyIKKworI2VuZGlmICAvLyBBQlNMX0ZMQUdTX1VTQUdFX0NPTkZJR19I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNhZ2VfY29uZmlnX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9m
bGFncy91c2FnZV9jb25maWdfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYmRlMTNhZjhmODQzM2U0ZmJm
ODkwZTNmNDBmNTlmZmU0NmNlNzA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZmxhZ3MvdXNh
Z2VfY29uZmlnX3Rlc3QuY2MKQEAgLTAsMCArMSwxOTggQEAKKy8vCisvLyAgQ29weXJpZ2h0IDIw
MTkgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2ZsYWdzL3VzYWdlX2Nv
bmZpZy5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2ZsYWdz
L2ludGVybmFsL3BhdGhfdXRpbC5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvaW50ZXJuYWwvcHJv
Z3JhbV9uYW1lLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCisKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIEZsYWdzVXNhZ2VDb25maWdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
eworIHByb3RlY3RlZDoKKyAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsKKyAgICAvLyBJbnN0YWxs
IERlZmF1bHQgY29uZmlnIGZvciB0aGUgdXNlIG9uIHRoaXMgdW5pdCB0ZXN0LgorICAgIC8vIEJp
bmFyeSBtYXkgaW5zdGFsbCBhIGN1c3RvbSBjb25maWcgYmVmb3JlIHRlc3RzIGFyZSBydW4uCisg
ICAgYWJzbDo6RmxhZ3NVc2FnZUNvbmZpZyBkZWZhdWx0X2NvbmZpZzsKKyAgICBhYnNsOjpTZXRG
bGFnc1VzYWdlQ29uZmlnKGRlZmF1bHRfY29uZmlnKTsKKyAgfQorfTsKKworbmFtZXNwYWNlIGZs
YWdzID0gYWJzbDo6ZmxhZ3NfaW50ZXJuYWw7CisKK2Jvb2wgVHN0Q29udGFpbnNIZWxwc2hvcnRG
bGFncyhhYnNsOjpzdHJpbmdfdmlldyBmKSB7CisgIHJldHVybiBhYnNsOjpTdGFydHNXaXRoKGZs
YWdzOjpCYXNlbmFtZShmKSwgInByb2duYW1lLiIpOworfQorCitib29sIFRzdENvbnRhaW5zSGVs
cHBhY2thZ2VGbGFncyhhYnNsOjpzdHJpbmdfdmlldyBmKSB7CisgIHJldHVybiBhYnNsOjpFbmRz
V2l0aChmbGFnczo6UGFja2FnZShmKSwgImFhYS8iKTsKK30KKworYm9vbCBUc3RDb250YWluc0hl
bHBGbGFncyhhYnNsOjpzdHJpbmdfdmlldyBmKSB7CisgIHJldHVybiBhYnNsOjpFbmRzV2l0aChm
bGFnczo6UGFja2FnZShmKSwgInp6ei8iKTsKK30KKworc3RkOjpzdHJpbmcgVHN0VmVyc2lvblN0
cmluZygpIHsgcmV0dXJuICJwcm9ncmFtIDEuMC4wIjsgfQorCitzdGQ6OnN0cmluZyBUc3ROb3Jt
YWxpemVGaWxlbmFtZShhYnNsOjpzdHJpbmdfdmlldyBmaWxlbmFtZSkgeworICByZXR1cm4gc3Rk
OjpzdHJpbmcoZmlsZW5hbWUuc3Vic3RyKDIpKTsKK30KKwordm9pZCBUc3RSZXBvcnRVc2FnZU1l
c3NhZ2UoYWJzbDo6c3RyaW5nX3ZpZXcgbXNnKSB7fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURVNU
X0YoRmxhZ3NVc2FnZUNvbmZpZ1Rlc3QsIFRlc3RHZXRTZXRGbGFnc1VzYWdlQ29uZmlnKSB7Cisg
IEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBzaG9ydF9m
bGFncyk7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hl
bHBfZmxhZ3MpOworICBFWFBFQ1RfVFJVRShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5jb250YWlu
c19oZWxwcGFja2FnZV9mbGFncyk7CisgIEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRVc2FnZUNvbmZp
ZygpLnZlcnNpb25fc3RyaW5nKTsKKyAgRVhQRUNUX1RSVUUoZmxhZ3M6OkdldFVzYWdlQ29uZmln
KCkubm9ybWFsaXplX2ZpbGVuYW1lKTsKKworICBhYnNsOjpGbGFnc1VzYWdlQ29uZmlnIGVtcHR5
X2NvbmZpZzsKKyAgZW1wdHlfY29uZmlnLmNvbnRhaW5zX2hlbHBzaG9ydF9mbGFncyA9ICZUc3RD
b250YWluc0hlbHBzaG9ydEZsYWdzOworICBlbXB0eV9jb25maWcuY29udGFpbnNfaGVscF9mbGFn
cyA9ICZUc3RDb250YWluc0hlbHBGbGFnczsKKyAgZW1wdHlfY29uZmlnLmNvbnRhaW5zX2hlbHBw
YWNrYWdlX2ZsYWdzID0gJlRzdENvbnRhaW5zSGVscHBhY2thZ2VGbGFnczsKKyAgZW1wdHlfY29u
ZmlnLnZlcnNpb25fc3RyaW5nID0gJlRzdFZlcnNpb25TdHJpbmc7CisgIGVtcHR5X2NvbmZpZy5u
b3JtYWxpemVfZmlsZW5hbWUgPSAmVHN0Tm9ybWFsaXplRmlsZW5hbWU7CisgIGFic2w6OlNldEZs
YWdzVXNhZ2VDb25maWcoZW1wdHlfY29uZmlnKTsKKworICBFWFBFQ1RfVFJVRShmbGFnczo6R2V0
VXNhZ2VDb25maWcoKS5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MpOworICBFWFBFQ1RfVFJVRShm
bGFnczo6R2V0VXNhZ2VDb25maWcoKS5jb250YWluc19oZWxwX2ZsYWdzKTsKKyAgRVhQRUNUX1RS
VUUoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MpOwor
ICBFWFBFQ1RfVFJVRShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS52ZXJzaW9uX3N0cmluZyk7Cisg
IEVYUEVDVF9UUlVFKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6ZV9maWxlbmFtZSk7
Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFU1RfRihGbGFnc1VzYWdlQ29uZmlnVGVzdCwgVGVz
dENvbnRhaW5zSGVscHNob3J0RmxhZ3MpIHsKKyAgZmxhZ3M6OlNldFByb2dyYW1JbnZvY2F0aW9u
TmFtZSgidXNhZ2VfY29uZmlnX3Rlc3QiKTsKKworICBhdXRvIGNvbmZpZyA9IGZsYWdzOjpHZXRV
c2FnZUNvbmZpZygpOworICBFWFBFQ1RfVFJVRShjb25maWcuY29udGFpbnNfaGVscHNob3J0X2Zs
YWdzKCJhZGlyL2NkL3VzYWdlX2NvbmZpZ190ZXN0LmNjIikpOworICBFWFBFQ1RfVFJVRSgKKyAg
ICAgIGNvbmZpZy5jb250YWluc19oZWxwc2hvcnRfZmxhZ3MoImFhYWEvdXNhZ2VfY29uZmlnX3Rl
c3QtbWFpbi5jYyIpKTsKKyAgRVhQRUNUX1RSVUUoY29uZmlnLmNvbnRhaW5zX2hlbHBzaG9ydF9m
bGFncygiYWJjL3VzYWdlX2NvbmZpZ190ZXN0X21haW4uY2MiKSk7CisgIEVYUEVDVF9GQUxTRShj
b25maWcuY29udGFpbnNfaGVscHNob3J0X2ZsYWdzKCJ1c2FnZV9jb25maWdfbWFpbi5jYyIpKTsK
KworICBhYnNsOjpGbGFnc1VzYWdlQ29uZmlnIGVtcHR5X2NvbmZpZzsKKyAgZW1wdHlfY29uZmln
LmNvbnRhaW5zX2hlbHBzaG9ydF9mbGFncyA9ICZUc3RDb250YWluc0hlbHBzaG9ydEZsYWdzOwor
ICBhYnNsOjpTZXRGbGFnc1VzYWdlQ29uZmlnKGVtcHR5X2NvbmZpZyk7CisKKyAgRVhQRUNUX1RS
VUUoCisgICAgICBmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5jb250YWluc19oZWxwc2hvcnRfZmxh
Z3MoImFhYS9wcm9nbmFtZS5jcHAiKSk7CisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIGZsYWdzOjpH
ZXRVc2FnZUNvbmZpZygpLmNvbnRhaW5zX2hlbHBzaG9ydF9mbGFncygiYWFhL3Byb2dtYW5lLmNw
cCIpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKEZsYWdzVXNhZ2VDb25maWdUZXN0
LCBUZXN0Q29udGFpbnNIZWxwRmxhZ3MpIHsKKyAgZmxhZ3M6OlNldFByb2dyYW1JbnZvY2F0aW9u
TmFtZSgidXNhZ2VfY29uZmlnX3Rlc3QiKTsKKworICBhdXRvIGNvbmZpZyA9IGZsYWdzOjpHZXRV
c2FnZUNvbmZpZygpOworICBFWFBFQ1RfVFJVRShjb25maWcuY29udGFpbnNfaGVscF9mbGFncygi
enp6L3VzYWdlX2NvbmZpZ190ZXN0LmNjIikpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGNvbmZp
Zy5jb250YWluc19oZWxwX2ZsYWdzKCJiZGlyL2Evenp6L3VzYWdlX2NvbmZpZ190ZXN0LW1haW4u
Y2MiKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgY29uZmlnLmNvbnRhaW5zX2hlbHBfZmxhZ3Mo
Ii8vYXFzZS96enovdXNhZ2VfY29uZmlnX3Rlc3RfbWFpbi5jYyIpKTsKKyAgRVhQRUNUX0ZBTFNF
KGNvbmZpZy5jb250YWluc19oZWxwX2ZsYWdzKCJ6enovYWEvdXNhZ2VfY29uZmlnX21haW4uY2Mi
KSk7CisKKyAgYWJzbDo6RmxhZ3NVc2FnZUNvbmZpZyBlbXB0eV9jb25maWc7CisgIGVtcHR5X2Nv
bmZpZy5jb250YWluc19oZWxwX2ZsYWdzID0gJlRzdENvbnRhaW5zSGVscEZsYWdzOworICBhYnNs
OjpTZXRGbGFnc1VzYWdlQ29uZmlnKGVtcHR5X2NvbmZpZyk7CisKKyAgRVhQRUNUX1RSVUUoZmxh
Z3M6OkdldFVzYWdlQ29uZmlnKCkuY29udGFpbnNfaGVscF9mbGFncygienp6L21haW4tYm9keS5j
IikpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5jb250
YWluc19oZWxwX2ZsYWdzKCJ6enovZGlyL21haW4tYm9keS5jIikpOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitURVNUX0YoRmxhZ3NVc2FnZUNvbmZpZ1Rlc3QsIFRlc3RDb250YWluc0hlbHBwYWNr
YWdlRmxhZ3MpIHsKKyAgZmxhZ3M6OlNldFByb2dyYW1JbnZvY2F0aW9uTmFtZSgidXNhZ2VfY29u
ZmlnX3Rlc3QiKTsKKworICBhdXRvIGNvbmZpZyA9IGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpOwor
ICBFWFBFQ1RfVFJVRShjb25maWcuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MoImFhYS91c2Fn
ZV9jb25maWdfdGVzdC5jYyIpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBjb25maWcuY29udGFp
bnNfaGVscHBhY2thZ2VfZmxhZ3MoImJiZGlyL2FhYS91c2FnZV9jb25maWdfdGVzdC1tYWluLmNj
IikpOworICBFWFBFQ1RfVFJVRShjb25maWcuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MoCisg
ICAgICAiLy9hcXN3ZGUvYWFhL3VzYWdlX2NvbmZpZ190ZXN0X21haW4uY2MiKSk7CisgIEVYUEVD
VF9GQUxTRShjb25maWcuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MoImFhZGlyL3VzYWdlX2Nv
bmZpZ19tYWluLmNjIikpOworCisgIGFic2w6OkZsYWdzVXNhZ2VDb25maWcgZW1wdHlfY29uZmln
OworICBlbXB0eV9jb25maWcuY29udGFpbnNfaGVscHBhY2thZ2VfZmxhZ3MgPSAmVHN0Q29udGFp
bnNIZWxwcGFja2FnZUZsYWdzOworICBhYnNsOjpTZXRGbGFnc1VzYWdlQ29uZmlnKGVtcHR5X2Nv
bmZpZyk7CisKKyAgRVhQRUNUX1RSVUUoCisgICAgICBmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5j
b250YWluc19oZWxwcGFja2FnZV9mbGFncygiYWFhL21haW4tYm9keS5jIikpOworICBFWFBFQ1Rf
RkFMU0UoCisgICAgICBmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5jb250YWluc19oZWxwcGFja2Fn
ZV9mbGFncygiYWFkaXIvbWFpbi1ib2R5LmMiKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
U1RfRihGbGFnc1VzYWdlQ29uZmlnVGVzdCwgVGVzdFZlcnNpb25TdHJpbmcpIHsKKyAgZmxhZ3M6
OlNldFByb2dyYW1JbnZvY2F0aW9uTmFtZSgidXNhZ2VfY29uZmlnX3Rlc3QiKTsKKworI2lmZGVm
IE5ERUJVRworICBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXQgPSAidXNhZ2VfY29uZmlnX3Rl
c3RcbiI7CisjZWxzZQorICBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXQgPQorICAgICAgInVz
YWdlX2NvbmZpZ190ZXN0XG5EZWJ1ZyBidWlsZCAoTkRFQlVHIG5vdCAjZGVmaW5lZClcbiI7Cisj
ZW5kaWYKKworICBFWFBFQ1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkudmVyc2lvbl9zdHJp
bmcoKSwgZXhwZWN0ZWRfb3V0cHV0KTsKKworICBhYnNsOjpGbGFnc1VzYWdlQ29uZmlnIGVtcHR5
X2NvbmZpZzsKKyAgZW1wdHlfY29uZmlnLnZlcnNpb25fc3RyaW5nID0gJlRzdFZlcnNpb25TdHJp
bmc7CisgIGFic2w6OlNldEZsYWdzVXNhZ2VDb25maWcoZW1wdHlfY29uZmlnKTsKKworICBFWFBF
Q1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkudmVyc2lvbl9zdHJpbmcoKSwgInByb2dyYW0g
MS4wLjAiKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVTVF9GKEZsYWdzVXNhZ2VDb25maWdU
ZXN0LCBUZXN0Tm9ybWFsaXplRmlsZW5hbWUpIHsKKyAgLy8gVGhpcyB0ZXN0cyB0aGUgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi4KKyAgRVhQRUNUX0VRKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLm5v
cm1hbGl6ZV9maWxlbmFtZSgiYS9hLmNjIiksICJhL2EuY2MiKTsKKyAgRVhQRUNUX0VRKGZsYWdz
OjpHZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6ZV9maWxlbmFtZSgiL2EvYS5jYyIpLCAiYS9hLmNj
Iik7CisgIEVYUEVDVF9FUShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5ub3JtYWxpemVfZmlsZW5h
bWUoIi8vL2EvYS5jYyIpLCAiYS9hLmNjIik7CisgIEVYUEVDVF9FUShmbGFnczo6R2V0VXNhZ2VD
b25maWcoKS5ub3JtYWxpemVfZmlsZW5hbWUoIi8iKSwgIiIpOworCisgIC8vIFRoaXMgdGVzdHMg
dGhhdCB0aGUgY3VzdG9tIGltcGxlbWVudGF0aW9uIGlzIGNhbGxlZC4KKyAgYWJzbDo6RmxhZ3NV
c2FnZUNvbmZpZyBlbXB0eV9jb25maWc7CisgIGVtcHR5X2NvbmZpZy5ub3JtYWxpemVfZmlsZW5h
bWUgPSAmVHN0Tm9ybWFsaXplRmlsZW5hbWU7CisgIGFic2w6OlNldEZsYWdzVXNhZ2VDb25maWco
ZW1wdHlfY29uZmlnKTsKKworICBFWFBFQ1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCkubm9y
bWFsaXplX2ZpbGVuYW1lKCJhL2EuY2MiKSwgImEuY2MiKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpH
ZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6ZV9maWxlbmFtZSgiYWFhL2EuY2MiKSwgImEvYS5jYyIp
OworCisgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBj
YWxsZWQuCisgIGVtcHR5X2NvbmZpZy5ub3JtYWxpemVfZmlsZW5hbWUgPSBudWxscHRyOworICBh
YnNsOjpTZXRGbGFnc1VzYWdlQ29uZmlnKGVtcHR5X2NvbmZpZyk7CisKKyAgRVhQRUNUX0VRKGZs
YWdzOjpHZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6ZV9maWxlbmFtZSgiYS9hLmNjIiksICJhL2Eu
Y2MiKTsKKyAgRVhQRUNUX0VRKGZsYWdzOjpHZXRVc2FnZUNvbmZpZygpLm5vcm1hbGl6ZV9maWxl
bmFtZSgiL2EvYS5jYyIpLCAiYS9hLmNjIik7CisgIEVYUEVDVF9FUShmbGFnczo6R2V0VXNhZ2VD
b25maWcoKS5ub3JtYWxpemVfZmlsZW5hbWUoIi8vL2EvYS5jYyIpLCAiYS9hLmNjIik7CisgIEVY
UEVDVF9FUShmbGFnczo6R2V0VXNhZ2VDb25maWcoKS5ub3JtYWxpemVfZmlsZW5hbWUoIlxcYVxc
YS5jYyIpLCAiYVxcYS5jYyIpOworICBFWFBFQ1RfRVEoZmxhZ3M6OkdldFVzYWdlQ29uZmlnKCku
bm9ybWFsaXplX2ZpbGVuYW1lKCIvLyIpLCAiIik7CisgIEVYUEVDVF9FUShmbGFnczo6R2V0VXNh
Z2VDb25maWcoKS5ub3JtYWxpemVfZmlsZW5hbWUoIlxcXFwiKSwgIiIpOworfQorCit9ICAvLyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNo
L0JVSUxELmJhemVsCmluZGV4IDUwYWE1NTA2YzExYzg3ZWQwYjRhMDY0MmI5NTBiYTE2MGY4YTJm
NzkuLjhjMmRhZjcwM2JjZDFhZmZjM2ZkOWU4YjZmMGVlZmFjZTY1YWVjMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2hhc2gvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5iYXplbApAQCAt
NSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1LDggKzE1LDkgQEAKICMKIAogbG9h
ZCgKLSAgICAiLy9hYnNsOmNvcHRzLmJ6bCIsCisgICAgIi8vYWJzbDpjb3B0cy9jb25maWd1cmVf
Y29wdHMuYnpsIiwKICAgICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKKyAgICAiQUJTTF9ERUZBVUxU
X0xJTktPUFRTIiwKICAgICAiQUJTTF9URVNUX0NPUFRTIiwKICkKIApAQCAtMzIsNiArMzMsNyBA
QCBjY19saWJyYXJ5KAogICAgIF0sCiAgICAgaGRycyA9IFsiaGFzaC5oIl0sCiAgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpjaXR5IiwKICAgICAgICAgIi8vYWJzbC9iYXNl
OmNvcmVfaGVhZGVycyIsCkBAIC01MCw2ICs1Miw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9
ICJoYXNoX3Rlc3RpbmciLAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBoZHJzID0gWyJoYXNoX3Rl
c3RpbmcuaCJdLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRl
cHMgPSBbCiAgICAgICAgICI6c3B5X2hhc2hfc3RhdGUiLAogICAgICAgICAiLy9hYnNsL21ldGE6
dHlwZV90cmFpdHMiLApAQCAtNjMsNiArNjYsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiaGFz
aF90ZXN0IiwKICAgICBzcmNzID0gWyJoYXNoX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xf
VEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBk
ZXBzID0gWwogICAgICAgICAiOmhhc2giLAogICAgICAgICAiOmhhc2hfdGVzdGluZyIsCkBAIC04
MCw2ICs4NCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgdGVzdG9ubHkgPSAxLAogICAgIGhkcnMgPSBb
ImludGVybmFsL3NweV9oYXNoX3N0YXRlLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9D
T1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICB2aXNpYmls
aXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6
aGFzaCIsCkBAIC05Myw5ICs5OCw5IEBAIGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsiaW50ZXJu
YWwvY2l0eS5jYyJdLAogICAgIGhkcnMgPSBbCiAgICAgICAgICJpbnRlcm5hbC9jaXR5LmgiLAot
ICAgICAgICAiaW50ZXJuYWwvY2l0eV9jcmMuaCIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xf
REVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAg
ICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKICAgICAgICAgIi8vYWJz
bC9iYXNlOmNvcmVfaGVhZGVycyIsCkBAIC0xMDcsNiArMTEyLDcgQEAgY2NfdGVzdCgKICAgICBu
YW1lID0gImNpdHlfdGVzdCIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvY2l0eV90ZXN0LmNjIl0s
CiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpjaXR5IiwKICAgICAgICAgIkBj
b21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hh
c2gvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxELmduCmluZGV4IDQwYjZiM2EyMmIzNzEzMmJi
NmVmOTJhYmNjZmJhMWY2NjljZmU0N2YuLjIxYmY4ODFhMWQ5NjU5YmY3YjcyYzE2NWM1MzlkYWZj
MWRhZjEzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQlVJTEQuZ24KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFz
aC9CVUlMRC5nbgpAQCAtNCw4ICs0LDE1IEBACiAKIGltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMv
YnVpbGQuZ25pIikKIAorIyBVc2FnZSBvZiBBYnNlaWwgaW4gQ2hyb21pdW0gaXMgZ3VhcmRlZCBi
eSBhbiBleHBsaWNpdCBvcHQtaW4gbGlzdCwgYmVmb3JlCisjIGFkZGluZyBwcm9qZWN0cyB0byB0
aGlzIGxpc3QgcGxlYXNlIHJlYWNoIG91dCB0byBjeHhAY2hyb21pdW0ub3JnIGFuZCBDQzoKKyMg
LSBodHRwczovL2NzLmNocm9taXVtLm9yZy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9PV05FUlMKKyMKKyMgTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgYXQ6CisjIGh0
dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMURnUzEtQTNyemJvVExqcGY0bTFzcWtK
Z1dqbllfUnUyZG9razFYMXZCRFUKIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CiAgIHZpc2li
aWxpdHkgPSBbCisgICAgIi8vbGliYXNzaXN0YW50LyoiLAogICAgICIvL3RoaXJkX3BhcnR5L3dl
YnJ0Yy8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAogICAgICIvL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3Q6Z3Rlc3QiLApAQCAtOTEsNyArOTgsNiBAQCBzb3VyY2Vfc2V0KCJj
aXR5IikgewogICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2luY2x1ZGVfY29uZmlnIiBdCiAgIHB1YmxpYyA9IFsKICAgICAiaW50ZXJuYWwvY2l0eS5o
IiwKLSAgICAiaW50ZXJuYWwvY2l0eV9jcmMuaCIsCiAgIF0KICAgc291cmNlcyA9IFsKICAgICAi
aW50ZXJuYWwvY2l0eS5jYyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvaGFzaC9DTWFrZUxpc3RzLnR4dAppbmRleCAzNTA4MWUzNzc0ZjhmMzIyYTlkNzVk
YTk0OGVmMjdhMjIxM2QyMjdlLi5mZWJjNTUxZmNlZGJmNDc1MDkwZTA2MTgzNGI3ODY3MDVmZjVk
MzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hh
c2gvQ01ha2VMaXN0cy50eHQKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0x
NCw2NyArMTQsMTAyIEBACiAjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogIwogCi1s
aXN0KEFQUEVORCBIQVNIX1BVQkxJQ19IRUFERVJTCi0gICJoYXNoLmgiCithYnNsX2NjX2xpYnJh
cnkoCisgIE5BTUUKKyAgICBoYXNoCisgIEhEUlMKKyAgICAiaGFzaC5oIgorICBTUkNTCisgICAg
ImludGVybmFsL2hhc2guY2MiCisgICAgImludGVybmFsL2hhc2guaCIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAg
IGFic2w6OmVuZGlhbgorICAgIGFic2w6OmZpeGVkX2FycmF5CisgICAgYWJzbDo6bWV0YQorICAg
IGFic2w6OmludDEyOAorICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpvcHRpb25hbAorICAg
IGFic2w6OnZhcmlhbnQKKyAgICBhYnNsOjp1dGlsaXR5CisgICAgYWJzbDo6Y2l0eQorICBQVUJM
SUMKICkKIAotbGlzdChBUFBFTkQgSEFTSF9JTlRFUk5BTF9IRUFERVJTCi0gICJpbnRlcm5hbC9j
aXR5LmgiCi0gICJpbnRlcm5hbC9jaXR5X2NyYy5oIgotICAiaW50ZXJuYWwvaGFzaC5oIgorYWJz
bF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgaGFzaF90ZXN0aW5nCisgIEhEUlMKKyAgICAiaGFz
aF90ZXN0aW5nLmgiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAg
ICBhYnNsOjpzcHlfaGFzaF9zdGF0ZQorICAgIGFic2w6Om1ldGEKKyAgICBhYnNsOjpzdHJpbmdz
CisgICAgYWJzbDo6dmFyaWFudAorICAgIGdtb2NrCisgIFRFU1RPTkxZCiApCiAKLSMgYWJzbF9o
YXNoIGxpYnJhcnkKLWxpc3QoQVBQRU5EIEhBU0hfU1JDCi0gICJpbnRlcm5hbC9jaXR5LmNjIgot
ICAiaW50ZXJuYWwvaGFzaC5jYyIKLSAgJHtIQVNIX1BVQkxJQ19IRUFERVJTfQotICAke0hBU0hf
SU5URVJOQUxfSEVBREVSU30KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGhhc2hfdGVzdAor
ICBTUkNTCisgICAgImhhc2hfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BU
U30KKyAgREVQUworICAgIGFic2w6Omhhc2gKKyAgICBhYnNsOjpoYXNoX3Rlc3RpbmcKKyAgICBh
YnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpmbGF0X2hhc2hfc2V0CisgICAgYWJzbDo6c3B5
X2hhc2hfc3RhdGUKKyAgICBhYnNsOjptZXRhCisgICAgYWJzbDo6aW50MTI4CisgICAgZ21vY2tf
bWFpbgogKQogCi1zZXQoSEFTSF9QVUJMSUNfTElCUkFSSUVTIGFic2w6Omhhc2ggYWJzbDo6Y29u
dGFpbmVyIGFic2w6OnN0cmluZ3MgYWJzbDo6c3RyX2Zvcm1hdCBhYnNsOjp1dGlsaXR5KQotCi1h
YnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfaGFzaAotICBTT1VSQ0VTCi0gICAgJHtI
QVNIX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7SEFTSF9QVUJMSUNfTElCUkFSSUVT
fQotICBFWFBPUlRfTkFNRQotICAgIGhhc2gKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAg
IHNweV9oYXNoX3N0YXRlCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvc3B5X2hhc2hfc3RhdGUuaCIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6Omhh
c2gKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6c3RyX2Zvcm1hdAorICBURVNUT05MWQog
KQogCi0jCi0jIyBURVNUUwotIwotCi0jIHRlc3Rpbmcgc3VwcG9ydAotc2V0KEhBU0hfVEVTVF9I
RUFERVJTIGhhc2hfdGVzdGluZy5oIGludGVybmFsL3NweV9oYXNoX3N0YXRlLmgpCi1zZXQoSEFT
SF9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6aGFzaCBhYnNsOjpjb250YWluZXIgYWJzbDo6
bnVtZXJpYyBhYnNsOjpzdHJpbmdzIGFic2w6OnN0cl9mb3JtYXQpCi0KLSMgaGFzaF90ZXN0Ci1z
ZXQoSEFTSF9URVNUX1NSQyAiaGFzaF90ZXN0LmNjIiAke0hBU0hfVEVTVF9IRUFERVJTfSkKLQot
YWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBoYXNoX3Rlc3QKLSAgU09VUkNFUwotICAgICR7SEFT
SF9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7SEFTSF9URVNUX1BVQkxJQ19M
SUJSQVJJRVN9CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBjaXR5CisgIEhEUlMKKyAg
ICAiaW50ZXJuYWwvY2l0eS5oIgorICBTUkNTCisgICAgImludGVybmFsL2NpdHkuY2MiCisgIENP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb25maWcK
KyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjplbmRpYW4KICkKIAotIyBoYXNoX3Rl
c3QKLXNldChDSVRZX1RFU1RfU1JDICJpbnRlcm5hbC9jaXR5X3Rlc3QuY2MiKQotCi1hYnNsX3Rl
c3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgY2l0eV90ZXN0Ci0gIFNP
VVJDRVMKLSAgICAke0NJVFlfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0hB
U0hfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgImludGVybmFsL2NpdHlfdGVz
dC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6
OmNpdHkKKyAgICBnbW9ja19tYWluCiApCiAKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNo
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9oYXNoL2hhc2guaAppbmRleCBjN2JhNGMyYjdhNWMxOThmNzRjZTI3MzkxMGJh
Yzg4MWM0NTU5Zjg5Li4yOTdkYzljYjIyYWM0NjYzMTE2OGMwZWI3ODA0NGUyOGI3OTcwNzJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2guaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2guaApAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjUsOCArMjUsOCBAQAog
Ly8gICAqIGBBYnNsSGFzaFZhbHVlYCwgYW4gZXh0ZW5zaW9uIHBvaW50IHRoYXQgYWxsb3dzIHlv
dSB0byBleHRlbmQgdHlwZXMgdG8KIC8vICAgICBzdXBwb3J0IEFic2VpbCBoYXNoaW5nIHdpdGhv
dXQgcmVxdWlyaW5nIHlvdSB0byBkZWZpbmUgYSBoYXNoaW5nCiAvLyAgICAgYWxnb3JpdGhtLgot
Ly8gICAqIGBIYXNoU3RhdGVgLCBhIHR5cGUtZXJhc2VkIGNsYXNzIHdoaWNoIGltcGxlbWVudCB0
aGUgbWFuaXB1bGF0aW9uIG9mIHRoZQotLy8gICAgIGhhc2ggc3RhdGUgKEgpIGl0c2VsZi4gY29u
dGFpbmluZyBtZW1iZXIgZnVuY3Rpb25zIGBjb21iaW5lKClgIGFuZAorLy8gICAqIGBIYXNoU3Rh
dGVgLCBhIHR5cGUtZXJhc2VkIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhlIG1hbmlwdWxhdGlv
biBvZiB0aGUKKy8vICAgICBoYXNoIHN0YXRlIChIKSBpdHNlbGYsIGNvbnRhaW5zIG1lbWJlciBm
dW5jdGlvbnMgYGNvbWJpbmUoKWAgYW5kCiAvLyAgICAgYGNvbWJpbmVfY29udGlndW91cygpYCwg
d2hpY2ggeW91IGNhbiB1c2UgdG8gY29udHJpYnV0ZSB0byBhbiBleGlzdGluZwogLy8gICAgIGhh
c2ggc3RhdGUgd2hlbiBoYXNoaW5nIHlvdXIgdHlwZXMuCiAvLwpAQCAtMzYsMjUgKzM2LDM0IEBA
CiAvLyBmcmFtZXdvcmsgYnkgc2ltcGx5IGNvbWJpbmluZyBpdHMgc3RhdGUgd2l0aCB0aGUgc3Rh
dGUgb2Yga25vd24sIGhhc2hhYmxlCiAvLyB0eXBlcy4gSGFzaGluZyBvZiB0aGF0IGNvbWJpbmVk
IHN0YXRlIGlzIHNlcGFyYXRlbHkgZG9uZSBieSBgYWJzbDo6SGFzaGAuCiAvLworLy8gT25lIHNo
b3VsZCBhc3N1bWUgdGhhdCBhIGhhc2ggYWxnb3JpdGhtIGlzIGNob3NlbiByYW5kb21seSBhdCB0
aGUgc3RhcnQgb2YKKy8vIGVhY2ggcHJvY2Vzcy4gIEUuZy4sIGFic2w6Okhhc2g8aW50PigpKDkp
IGluIG9uZSBwcm9jZXNzIGFuZAorLy8gYWJzbDo6SGFzaDxpbnQ+KCkoOSkgaW4gYW5vdGhlciBw
cm9jZXNzIGFyZSBsaWtlbHkgdG8gZGlmZmVyLgorLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICAv
LyBTdXBwb3NlIHdlIGhhdmUgYSBjbGFzcyBgQ2lyY2xlYCBmb3Igd2hpY2ggd2Ugd2FudCB0byBh
ZGQgaGFzaGluZworLy8gICAvLyBTdXBwb3NlIHdlIGhhdmUgYSBjbGFzcyBgQ2lyY2xlYCBmb3Ig
d2hpY2ggd2Ugd2FudCB0byBhZGQgaGFzaGluZzoKIC8vICAgY2xhc3MgQ2lyY2xlIHsKLS8vICAg
ICBwdWJsaWM6Ci0vLyAgICAgICAuLi4KLS8vICAgICBwcml2YXRlOgotLy8gICAgICAgc3RkOjpw
YWlyPGludCwgaW50PiBjZW50ZXJfOwotLy8gICAgICAgaW50IHJhZGl1c187Ci0vLyAgICAgfTsK
LS8vCi0vLyAgIC8vIFRvIGFkZCBoYXNoaW5nIHN1cHBvcnQgdG8gYENpcmNsZWAsIHdlIHNpbXBs
eSBuZWVkIHRvIGFkZCBhbiBvcmRpbmFyeQotLy8gICAvLyBmdW5jdGlvbiBgQWJzbEhhc2hWYWx1
ZSgpYCwgYW5kIHJldHVybiB0aGUgY29tYmluZWQgaGFzaCBzdGF0ZSBvZiB0aGUKLS8vICAgLy8g
ZXhpc3RpbmcgaGFzaCBzdGF0ZSBhbmQgdGhlIGNsYXNzIHN0YXRlOgorLy8gICAgcHVibGljOgor
Ly8gICAgIC4uLgorLy8gICAgcHJpdmF0ZToKKy8vICAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IGNl
bnRlcl87CisvLyAgICAgaW50IHJhZGl1c187CisvLyAgIH07CiAvLworLy8gICAvLyBUbyBhZGQg
aGFzaGluZyBzdXBwb3J0IHRvIGBDaXJjbGVgLCB3ZSBzaW1wbHkgbmVlZCB0byBhZGQgYSBmcmVl
CisvLyAgIC8vIChub24tbWVtYmVyKSBmdW5jdGlvbiBgQWJzbEhhc2hWYWx1ZSgpYCwgYW5kIHJl
dHVybiB0aGUgY29tYmluZWQgaGFzaAorLy8gICAvLyBzdGF0ZSBvZiB0aGUgZXhpc3RpbmcgaGFz
aCBzdGF0ZSBhbmQgdGhlIGNsYXNzIHN0YXRlLiBZb3UgY2FuIGFkZCBzdWNoIGEKKy8vICAgLy8g
ZnJlZSBmdW5jdGlvbiB1c2luZyBhIGZyaWVuZCBkZWNsYXJhdGlvbiB3aXRoaW4gdGhlIGJvZHkg
b2YgdGhlIGNsYXNzOgorLy8gICBjbGFzcyBDaXJjbGUgeworLy8gICAgcHVibGljOgorLy8gICAg
IC4uLgogLy8gICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgogLy8gICAgIGZyaWVuZCBIIEFic2xI
YXNoVmFsdWUoSCBoLCBjb25zdCBDaXJjbGUmIGMpIHsKIC8vICAgICAgIHJldHVybiBIOjpjb21i
aW5lKHN0ZDo6bW92ZShoKSwgYy5jZW50ZXJfLCBjLnJhZGl1c18pOwogLy8gICAgIH0KKy8vICAg
ICAuLi4KKy8vICAgfTsKIC8vCiAvLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIEFkZGluZyBU
eXBlIFN1cHBvcnQgdG8gYGFic2w6Okhhc2hgIGJlbG93LgogLy8KQEAgLTY5LDcgKzc4LDcgQEAg
bmFtZXNwYWNlIGFic2wgewogLy8gYGFic2w6Okhhc2hgCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogLy8KLS8vIGBhYnNsOjpIYXNoPFQ+YCBpcyBhIGNvbnZlbmllbnQgZ2VuZXJhbC1wdXJwb3Nl
IGhhc2ggZnVuY3RvciBmb3IgYSB0eXBlIGBUYAorLy8gYGFic2w6Okhhc2g8VD5gIGlzIGEgY29u
dmVuaWVudCBnZW5lcmFsLXB1cnBvc2UgaGFzaCBmdW5jdG9yIGZvciBhbnkgdHlwZSBgVGAKIC8v
IHNhdGlzZnlpbmcgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyAoaW4gb3JkZXIpOgog
Ly8KIC8vICAqIFQgaXMgYW4gYXJpdGhtZXRpYyBvciBwb2ludGVyIHR5cGUKQEAgLTk4LDcgKzEw
Nyw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vICAgICogYWJzbDo6c3RyaW5nX3ZpZXcKIC8vICAg
ICogYWJzbDo6SW5saW5lZFZlY3RvcgogLy8gICAgKiBhYnNsOjpGaXhlZEFycmF5Ci0vLyAgICAq
IGFic2w6OnVuaXQxMjgKKy8vICAgICogYWJzbDo6dWludDEyOAogLy8gICAgKiBhYnNsOjpUaW1l
LCBhYnNsOjpEdXJhdGlvbiwgYW5kIGFic2w6OlRpbWVab25lCiAvLwogLy8gTm90ZTogdGhlIGxp
c3QgYWJvdmUgaXMgbm90IG1lYW50IHRvIGJlIGV4aGF1c3RpdmUuIEFkZGl0aW9uYWwgdHlwZSBz
dXBwb3J0CkBAIC0xNDIsNyArMTUxLDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8KIC8vIFRoZSAi
aGFzaCBzdGF0ZSIgY29uY2VwdCBjb250YWlucyB0d28gbWVtYmVyIGZ1bmN0aW9ucyBmb3IgbWl4
aW5nIGhhc2ggc3RhdGU6CiAvLwotLy8gKiBgSDo6Y29tYmluZSgpYAorLy8gKiBgSDo6Y29tYmlu
ZShzdGF0ZSwgdmFsdWVzLi4uKWAKIC8vCiAvLyAgIENvbWJpbmVzIGFuIGFyYml0cmFyeSBudW1i
ZXIgb2YgdmFsdWVzIGludG8gYSBoYXNoIHN0YXRlLCByZXR1cm5pbmcgdGhlCiAvLyAgIHVwZGF0
ZWQgc3RhdGUuIE5vdGUgdGhhdCB0aGUgZXhpc3RpbmcgaGFzaCBzdGF0ZSBpcyBtb3ZlLW9ubHkg
YW5kIG11c3QgYmUKQEAgLTE2MCw3ICsxNjksNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAgICAg
c3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMik7CiAvLyAgICAgc3Rh
dGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMyk7CiAvLwotLy8gKiBgSDo6
Y29tYmluZV9jb250aWd1b3VzKClgCisvLyAqIGBIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RhdGUs
IGRhdGEsIHNpemUpYAogLy8KIC8vICAgIENvbWJpbmVzIGEgY29udGlndW91cyBhcnJheSBvZiBg
c2l6ZWAgZWxlbWVudHMgaW50byBhIGhhc2ggc3RhdGUsCiAvLyAgICByZXR1cm5pbmcgdGhlIHVw
ZGF0ZWQgc3RhdGUuIE5vdGUgdGhhdCB0aGUgZXhpc3RpbmcgaGFzaCBzdGF0ZSBpcwpAQCAtMjM1
LDcgKzI0NCw3IEBAIHVzaW5nIEhhc2ggPSBhYnNsOjpoYXNoX2ludGVybmFsOjpIYXNoPFQ+Owog
Ly8gICAgIH0KIC8vICAgIHByaXZhdGU6CiAvLyAgICAgdmlydHVhbCB2b2lkIEhhc2hWYWx1ZShh
YnNsOjpIYXNoU3RhdGUgc3RhdGUpIGNvbnN0ID0gMDsKLS8vICB9OworLy8gICB9OwogLy8KIC8v
ICAgY2xhc3MgSW1wbCA6IEludGVyZmFjZSB7CiAvLyAgICBwcml2YXRlOgpAQCAtMjQzLDcgKzI1
Miw3IEBAIHVzaW5nIEhhc2ggPSBhYnNsOjpoYXNoX2ludGVybmFsOjpIYXNoPFQ+OwogLy8gICAg
ICAgYWJzbDo6SGFzaFN0YXRlOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHYxXywgdjJfKTsK
IC8vICAgICB9CiAvLyAgICAgaW50IHYxXzsKLS8vICAgICBzdHJpbmcgdjJfOworLy8gICAgIHN0
ZDo6c3RyaW5nIHYyXzsKIC8vICAgfTsKIGNsYXNzIEhhc2hTdGF0ZSA6IHB1YmxpYyBoYXNoX2lu
dGVybmFsOjpIYXNoU3RhdGVCYXNlPEhhc2hTdGF0ZT4gewogIHB1YmxpYzoKQEAgLTMwOSw0ICsz
MTgsNSBAQCBjbGFzcyBIYXNoU3RhdGUgOiBwdWJsaWMgaGFzaF9pbnRlcm5hbDo6SGFzaFN0YXRl
QmFzZTxIYXNoU3RhdGU+IHsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAg
Ly8gQUJTTF9IQVNIX0hBU0hfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvaGFzaC9oYXNoX3Rlc3QuY2MKaW5kZXggN2I2ZmIyZTdhYzFjYjA5MzFjNWU2Yjk4
MzNkZWY2NGVhY2UyYWM3Ny4uOWE2NjdiYTcwM2I0YTYyNmQzNTQ5NmIzYjQ2MmJlODZjNmVlZTAx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9o
YXNoX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaC5oIgogCiAjaW5jbHVkZSA8
YXJyYXk+CisjaW5jbHVkZSA8Yml0c2V0PgogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8
ZGVxdWU+CiAjaW5jbHVkZSA8Zm9yd2FyZF9saXN0PgpAQCAtNTAsNyArNTEsNyBAQCB1c2luZyBh
YnNsOjpoYXNoX2ludGVybmFsOjpTcHlIYXNoU3RhdGU7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
IGNsYXNzIEhhc2hWYWx1ZUludFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiB9OwotVFlQ
RURfVEVTVF9DQVNFX1AoSGFzaFZhbHVlSW50VGVzdCk7CitUWVBFRF9URVNUX1NVSVRFX1AoSGFz
aFZhbHVlSW50VGVzdCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3B5SGFzaFN0YXRlIFNw
eUhhc2goY29uc3QgVCYgdmFsdWUpIHsKQEAgLTg0LDExICs4NSwzNDkgQEAgdXNpbmcgSW50VHlw
ZXMgPSB0ZXN0aW5nOjpUeXBlczx1bnNpZ25lZCBjaGFyLCBjaGFyLCBpbnQsIGludDMyX3QsIGlu
dDY0X3QsIHVpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QsIHNp
emVfdD47CiBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgSGFzaFZhbHVlSW50VGVz
dCwgSW50VHlwZXMpOwogCitlbnVtIExlZ2FjeUVudW0geyBrVmFsdWUxLCBrVmFsdWUyLCBrVmFs
dWUzIH07CisKK2VudW0gY2xhc3MgRW51bUNsYXNzIHsga1ZhbHVlNCwga1ZhbHVlNSwga1ZhbHVl
NiB9OworCitURVNUKEhhc2hWYWx1ZVRlc3QsIEVudW1BbmRCb29sKSB7CisgIEVYUEVDVF9UUlVF
KChpc19oYXNoYWJsZTxMZWdhY3lFbnVtPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKGlzX2hh
c2hhYmxlPEVudW1DbGFzcz46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxi
b29sPjo6dmFsdWUpKTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50
c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgIExlZ2FjeUVudW06OmtW
YWx1ZTEsIExlZ2FjeUVudW06OmtWYWx1ZTIsIExlZ2FjeUVudW06OmtWYWx1ZTMpKSk7CisgIEVY
UEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoc3Rk
OjptYWtlX3R1cGxlKAorICAgICAgRW51bUNsYXNzOjprVmFsdWU0LCBFbnVtQ2xhc3M6OmtWYWx1
ZTUsIEVudW1DbGFzczo6a1ZhbHVlNikpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlw
ZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIHN0ZDo6bWFrZV90dXBsZSh0cnVl
LCBmYWxzZSkpKTsKK30KKworVEVTVChIYXNoVmFsdWVUZXN0LCBGbG9hdGluZ1BvaW50KSB7Cisg
IEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxmbG9hdD46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVF
KChpc19oYXNoYWJsZTxkb3VibGU+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFi
bGU8bG9uZyBkb3VibGU+Ojp2YWx1ZSkpOworCisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5
cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoCisgICAgICBzdGQ6Om1ha2VfdHVwbGUoNDIu
ZiwgMC5mLCAtMC5mLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5
KCkpKSk7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFz
aENvcnJlY3RseSgKKyAgICAgIHN0ZDo6bWFrZV90dXBsZSg0Mi4sIDAuLCAtMC4sIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAt
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSkpOworCisgIEVYUEVDVF9U
UlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoc3RkOjptYWtl
X3R1cGxlKAorICAgICAgLy8gQWRkIHNvbWUgdmFsdWVzIHdpdGggc21hbGwgZXhwb25lbnQgdG8g
dGVzdCB0aGF0IE5PUk1BTCB2YWx1ZXMgYWxzbworICAgICAgLy8gYXBwZW5kIHRoZWlyIGNhdGVn
b3J5LgorICAgICAgLjVMLCAxLkwsIDIuTCwgNC5MLCA0Mi5MLCAwLkwsIC0wLkwsCisgICAgICAx
NyAqIHN0YXRpY19jYXN0PGxvbmcgZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
Om1heCgpKSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBkb3VibGU+OjppbmZpbml0
eSgpLAorICAgICAgLXN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBkb3VibGU+OjppbmZpbml0eSgp
KSkpOworfQorCitURVNUKEhhc2hWYWx1ZVRlc3QsIFBvaW50ZXIpIHsKKyAgRVhQRUNUX1RSVUUo
KGlzX2hhc2hhYmxlPGludCo+Ojp2YWx1ZSkpOworCisgIGludCBpOworICBpbnQqIHB0ciA9ICZp
OworICBpbnQqIG4gPSBudWxscHRyOworCisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJ
bXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoCisgICAgICBzdGQ6Om1ha2VfdHVwbGUoJmksIHB0
ciwgbnVsbHB0ciwgcHRyICsgMSwgbikpKTsKK30KKworVEVTVChIYXNoVmFsdWVUZXN0LCBQb2lu
dGVyQWxpZ25tZW50KSB7CisgIC8vIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgcG9pbnRlciBh
bGlnbm1lbnQgd2lsbCBub3QgY2F1c2UgYml0cyB0byBiZQorICAvLyBzdHVjay4KKworICBjb25z
dGV4cHIgc2l6ZV90IGtUb3RhbFNpemUgPSAxIDw8IDIwOworICBzdGQ6OnVuaXF1ZV9wdHI8Y2hh
cltdPiBkYXRhKG5ldyBjaGFyW2tUb3RhbFNpemVdKTsKKyAgY29uc3RleHByIHNpemVfdCBrTG9n
Mk51bVZhbHVlcyA9IDU7CisgIGNvbnN0ZXhwciBzaXplX3Qga051bVZhbHVlcyA9IDEgPDwga0xv
ZzJOdW1WYWx1ZXM7CisKKyAgZm9yIChzaXplX3QgYWxpZ24gPSAxOyBhbGlnbiA8IGtUb3RhbFNp
emUgLyBrTnVtVmFsdWVzOworICAgICAgIGFsaWduIDwgOCA/IGFsaWduICs9IDEgOiBhbGlnbiA8
IDEwMjQgPyBhbGlnbiArPSA4IDogYWxpZ24gKz0gMzIpIHsKKyAgICBTQ09QRURfVFJBQ0UoYWxp
Z24pOworICAgIEFTU0VSVF9MRShhbGlnbiAqIGtOdW1WYWx1ZXMsIGtUb3RhbFNpemUpOworCisg
ICAgc2l6ZV90IGJpdHNfb3IgPSAwOworICAgIHNpemVfdCBiaXRzX2FuZCA9IH5zaXplX3R7fTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bVZhbHVlczsgKytpKSB7CisgICAgICBz
aXplX3QgaGFzaCA9IGFic2w6Okhhc2g8dm9pZCo+KCkoZGF0YS5nZXQoKSArIGkgKiBhbGlnbik7
CisgICAgICBiaXRzX29yIHw9IGhhc2g7CisgICAgICBiaXRzX2FuZCAmPSBoYXNoOworICAgIH0K
KworICAgIC8vIExpbWl0IHRoZSBzY29wZSB0byB0aGUgYml0cyB3ZSB3b3VsZCBiZSB1c2luZyBm
b3IgU3dpc3N0YWJsZS4KKyAgICBjb25zdGV4cHIgc2l6ZV90IGtNYXNrID0gKDEgPDwgKGtMb2cy
TnVtVmFsdWVzICsgNykpIC0gMTsKKyAgICBzaXplX3Qgc3R1Y2tfYml0cyA9ICh+Yml0c19vciB8
IGJpdHNfYW5kKSAmIGtNYXNrOworICAgIEVYUEVDVF9FUShzdHVja19iaXRzLCAwKSA8PCAiMHgi
IDw8IHN0ZDo6aGV4IDw8IHN0dWNrX2JpdHM7CisgIH0KK30KKworVEVTVChIYXNoVmFsdWVUZXN0
LCBQYWlyQW5kVHVwbGUpIHsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPHN0ZDo6cGFpcjxp
bnQsIGludD4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8c3RkOjpwYWly
PGNvbnN0IGludCYsIGNvbnN0IGludCY+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKGlzX2hh
c2hhYmxlPHN0ZDo6dHVwbGU8aW50JiwgaW50Jj4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgo
aXNfaGFzaGFibGU8c3RkOjp0dXBsZTxpbnQmJiwgaW50JiY+Pjo6dmFsdWUpKTsKKworICBFWFBF
Q1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6
bWFrZV90dXBsZSgKKyAgICAgIHN0ZDo6bWFrZV9wYWlyKDAsIDQyKSwgc3RkOjptYWtlX3BhaXIo
MCwgNDIpLCBzdGQ6Om1ha2VfcGFpcig0MiwgMCksCisgICAgICBzdGQ6Om1ha2VfcGFpcigwLCAw
KSwgc3RkOjptYWtlX3BhaXIoNDIsIDQyKSwgc3RkOjptYWtlX3BhaXIoMSwgNDIpKSkpOworCisg
IEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHko
CisgICAgICBzdGQ6Om1ha2VfdHVwbGUoc3RkOjptYWtlX3R1cGxlKDAsIDAsIDApLCBzdGQ6Om1h
a2VfdHVwbGUoMCwgMCwgNDIpLAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV90dXBs
ZSgwLCAyMywgMCksIHN0ZDo6bWFrZV90dXBsZSgxNywgMCwgMCksCisgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYWtlX3R1cGxlKDQyLCAwLCAwKSwgc3RkOjptYWtlX3R1cGxlKDMsIDksIDkp
LAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV90dXBsZSgwLCAwLCAtNDIpKSkpOwor
CisgIC8vIFRlc3QgdGhhdCB0dXBsZXMgb2YgbHZhbHVlIHJlZmVyZW5jZXMgd29yayAoc28gd2Ug
bmVlZCBhIGZldyBsdmFsdWVzKToKKyAgaW50IGEgPSAwLCBiID0gMSwgYyA9IDE3LCBkID0gMjM7
CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0
bHkoc3RkOjptYWtlX3R1cGxlKAorICAgICAgc3RkOjp0aWUoYSwgYSksIHN0ZDo6dGllKGEsIGIp
LCBzdGQ6OnRpZShiLCBjKSwgc3RkOjp0aWUoYywgZCkpKSk7CisKKyAgLy8gVGVzdCB0aGF0IHR1
cGxlcyBvZiBydmFsdWUgcmVmZXJlbmNlcyB3b3JrOgorICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJp
ZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6bWFrZV90dXBsZSgKKyAgICAg
IHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgwLCAwLCAwKSwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKDAs
IDAsIDQyKSwKKyAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgwLCAyMywgMCksIHN0ZDo6Zm9y
d2FyZF9hc190dXBsZSgxNywgMCwgMCksCisgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoNDIs
IDAsIDApLCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoMywgOSwgOSksCisgICAgICBzdGQ6OmZvcndh
cmRfYXNfdHVwbGUoMCwgMCwgLTQyKSkpKTsKK30KKworVEVTVChIYXNoVmFsdWVUZXN0LCBDb21i
aW5lQ29udGlndW91c1dvcmtzKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dHVwbGU8aW50Pj4gdjEg
PSB7c3RkOjptYWtlX3R1cGxlKDEpLCBzdGQ6Om1ha2VfdHVwbGUoMyl9OworICBzdGQ6OnZlY3Rv
cjxzdGQ6OnR1cGxlPGludD4+IHYyID0ge3N0ZDo6bWFrZV90dXBsZSgxKSwgc3RkOjptYWtlX3R1
cGxlKDIpfTsKKworICBhdXRvIHZoMSA9IFNweUhhc2godjEpOworICBhdXRvIHZoMiA9IFNweUhh
c2godjIpOworICBFWFBFQ1RfTkUodmgxLCB2aDIpOworfQorCitzdHJ1Y3QgRHVtbXlEZWxldGVy
IHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHZvaWQgb3BlcmF0b3IoKSAoVCogcHRyKSB7
fQorfTsKKworc3RydWN0IFNtYXJ0UG9pbnRlckVxIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUJiB0LCBjb25zdCBVJiB1KSBj
b25zdCB7CisgICAgcmV0dXJuIEdldFB0cih0KSA9PSBHZXRQdHIodSk7CisgIH0KKworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIGF1dG8gR2V0UHRyKGNvbnN0IFQmIHQpIC0+IGRl
Y2x0eXBlKCYqdCkgeworICAgIHJldHVybiB0ID8gJip0IDogbnVsbHB0cjsKKyAgfQorCisgIHN0
YXRpYyBzdGQ6Om51bGxwdHJfdCBHZXRQdHIoc3RkOjpudWxscHRyX3QpIHsgcmV0dXJuIG51bGxw
dHI7IH0KK307CisKK1RFU1QoSGFzaFZhbHVlVGVzdCwgU21hcnRQb2ludGVycykgeworICBFWFBF
Q1RfVFJVRSgoaXNfaGFzaGFibGU8c3RkOjp1bmlxdWVfcHRyPGludD4+Ojp2YWx1ZSkpOworICBF
WFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8c3RkOjp1bmlxdWVfcHRyPGludCwgRHVtbXlEZWxldGVy
Pj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxzdGQ6OnNoYXJlZF9wdHI8
aW50Pj46OnZhbHVlKSk7CisKKyAgaW50IGksIGo7CisgIHN0ZDo6dW5pcXVlX3B0cjxpbnQsIER1
bW15RGVsZXRlcj4gdW5pcXVlMSgmaSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxpbnQsIER1bW15RGVs
ZXRlcj4gdW5pcXVlMigmaSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxpbnQsIER1bW15RGVsZXRlcj4g
dW5pcXVlX290aGVyKCZqKTsKKyAgc3RkOjp1bmlxdWVfcHRyPGludCwgRHVtbXlEZWxldGVyPiB1
bmlxdWVfbnVsbDsKKworICBzdGQ6OnNoYXJlZF9wdHI8aW50PiBzaGFyZWQxKCZpLCBEdW1teURl
bGV0ZXIoKSk7CisgIHN0ZDo6c2hhcmVkX3B0cjxpbnQ+IHNoYXJlZDIoJmksIER1bW15RGVsZXRl
cigpKTsKKyAgc3RkOjpzaGFyZWRfcHRyPGludD4gc2hhcmVkX290aGVyKCZqLCBEdW1teURlbGV0
ZXIoKSk7CisgIHN0ZDo6c2hhcmVkX3B0cjxpbnQ+IHNoYXJlZF9udWxsOworCisgIC8vIFNhbml0
eSBjaGVjayBvZiB0aGUgRXEgZnVuY3Rpb24uCisgIEFTU0VSVF9UUlVFKFNtYXJ0UG9pbnRlckVx
e30odW5pcXVlMSwgc2hhcmVkMSkpOworICBBU1NFUlRfRkFMU0UoU21hcnRQb2ludGVyRXF7fSh1
bmlxdWUxLCBzaGFyZWRfb3RoZXIpKTsKKyAgQVNTRVJUX1RSVUUoU21hcnRQb2ludGVyRXF7fSh1
bmlxdWVfbnVsbCwgbnVsbHB0cikpOworICBBU1NFUlRfRkFMU0UoU21hcnRQb2ludGVyRXF7fShz
aGFyZWQyLCBudWxscHRyKSk7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxl
bWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgmaSwg
bnVsbHB0ciwgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5pcXVlMSwgdW5pcXVlMiwgdW5pcXVlX251bGwsICAvLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPGludD4oKSwgICAgICAgLy8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaGFyZWQxLCBzaGFyZWQyLCBzaGFyZWRfbnVsbCwgIC8vCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3NoYXJlZDxpbnQ+KCkpLAorICAgICAg
U21hcnRQb2ludGVyRXF7fSkpOworfQorCitURVNUKEhhc2hWYWx1ZVRlc3QsIEZ1bmN0aW9uUG9p
bnRlcikgeworICB1c2luZyBGdW5jID0gaW50ICgqKSgpOworICBFWFBFQ1RfVFJVRShpc19oYXNo
YWJsZTxGdW5jPjo6dmFsdWUpOworCisgIEZ1bmMgcDEgPSBbXSB7IHJldHVybiAyOyB9LCBwMiA9
IFtdIHsgcmV0dXJuIDE7IH07CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1l
bnRzQWJzbEhhc2hDb3JyZWN0bHkoCisgICAgICBzdGQ6Om1ha2VfdHVwbGUocDEsIHAyLCBudWxs
cHRyKSkpOworfQorCitzdHJ1Y3QgV3JhcEluVHVwbGUgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgc3RkOjp0dXBsZTxpbnQsIFQsIHNpemVfdD4gb3BlcmF0b3IoKShjb25zdCBUJiB0KSBj
b25zdCB7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSg3LCB0LCAweGRlYWRiZWVmKTsKKyAg
fQorfTsKKworVEVTVChIYXNoVmFsdWVUZXN0LCBTdHJpbmdzKSB7CisgIEVYUEVDVF9UUlVFKChp
c19oYXNoYWJsZTxzdGQ6OnN0cmluZz46OnZhbHVlKSk7CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
c21hbGwgPSAiZm9vIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZHVwID0gImZvb2ZvbyI7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGxhcmdlID0gImxhcmdlIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaHVn
ZSA9IHN0ZDo6c3RyaW5nKDUwMDAsICdhJyk7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5
VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShzdGQ6Om1ha2VfdHVwbGUoCisgICAgICBz
dGQ6OnN0cmluZygpLCBhYnNsOjpzdHJpbmdfdmlldygpLAorICAgICAgc3RkOjpzdHJpbmcoIiIp
LCBhYnNsOjpzdHJpbmdfdmlldygiIiksCisgICAgICBzdGQ6OnN0cmluZyhzbWFsbCksIGFic2w6
OnN0cmluZ192aWV3KHNtYWxsKSwKKyAgICAgIHN0ZDo6c3RyaW5nKGR1cCksIGFic2w6OnN0cmlu
Z192aWV3KGR1cCksCisgICAgICBzdGQ6OnN0cmluZyhsYXJnZSksIGFic2w6OnN0cmluZ192aWV3
KGxhcmdlKSwKKyAgICAgIHN0ZDo6c3RyaW5nKGh1Z2UpLCBhYnNsOjpzdHJpbmdfdmlldyhodWdl
KSkpKTsKKworICAvLyBBbHNvIGNoZWNrIHRoYXQgbmVzdGVkIHR5cGVzIG1haW50YWluIHRoZSBz
YW1lIGhhc2guCisgIGNvbnN0IFdyYXBJblR1cGxlIHR7fTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShzdGQ6Om1ha2VfdHVwbGUoCisg
ICAgICB0KHN0ZDo6c3RyaW5nKCkpLCB0KGFic2w6OnN0cmluZ192aWV3KCkpLAorICAgICAgdChz
dGQ6OnN0cmluZygiIikpLCB0KGFic2w6OnN0cmluZ192aWV3KCIiKSksCisgICAgICB0KHN0ZDo6
c3RyaW5nKHNtYWxsKSksIHQoYWJzbDo6c3RyaW5nX3ZpZXcoc21hbGwpKSwKKyAgICAgIHQoc3Rk
OjpzdHJpbmcoZHVwKSksIHQoYWJzbDo6c3RyaW5nX3ZpZXcoZHVwKSksCisgICAgICB0KHN0ZDo6
c3RyaW5nKGxhcmdlKSksIHQoYWJzbDo6c3RyaW5nX3ZpZXcobGFyZ2UpKSwKKyAgICAgIHQoc3Rk
OjpzdHJpbmcoaHVnZSkpLCB0KGFic2w6OnN0cmluZ192aWV3KGh1Z2UpKSkpKTsKKworICAvLyBN
YWtlIHN1cmUgdGhhdCBoYXNoaW5nIGEgYGNvbnN0IGNoYXIqYCBkb2VzIG5vdCB1c2UgaXRzIHN0
ZDo6c3RyaW5nLXZhbHVlLgorICBFWFBFQ1RfTkUoU3B5SGFzaChzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oIkFCQyIpKSwKKyAgICAgICAgICAgIFNweUhhc2goYWJzbDo6c3RyaW5nX3ZpZXcoIkFC
QyIpKSk7Cit9CisKK1RFU1QoSGFzaFZhbHVlVGVzdCwgU3RkQXJyYXkpIHsKKyAgRVhQRUNUX1RS
VUUoKGlzX2hhc2hhYmxlPHN0ZDo6YXJyYXk8aW50LCAzPj46OnZhbHVlKSk7CisKKyAgRVhQRUNU
X1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAg
IHN0ZDo6bWFrZV90dXBsZShzdGQ6OmFycmF5PGludCwgMz57fSwgc3RkOjphcnJheTxpbnQsIDM+
e3swLCAyMywgNDJ9fSkpKTsKK30KKworVEVTVChIYXNoVmFsdWVUZXN0LCBTdGRCaXRzZXQpIHsK
KyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPHN0ZDo6Yml0c2V0PDI1Nz4+Ojp2YWx1ZSkpOwor
CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0
bHkoCisgICAgICB7c3RkOjpiaXRzZXQ8Mj4oIjAwIiksIHN0ZDo6Yml0c2V0PDI+KCIwMSIpLCBz
dGQ6OmJpdHNldDwyPigiMTAiKSwKKyAgICAgICBzdGQ6OmJpdHNldDwyPigiMTEiKX0pKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgK
KyAgICAgIHtzdGQ6OmJpdHNldDw1PigiMTAxMDEiKSwgc3RkOjpiaXRzZXQ8NT4oIjEwMDAxIiks
IHN0ZDo6Yml0c2V0PDU+KCl9KSk7CisKKyAgY29uc3RleHByIGludCBrTnVtQml0cyA9IDI1NjsK
KyAgc3RkOjphcnJheTxzdGQ6OnN0cmluZywgNj4gYml0X3N0cmluZ3M7CisgIGJpdF9zdHJpbmdz
LmZpbGwoc3RkOjpzdHJpbmcoa051bUJpdHMsICcxJykpOworICBiaXRfc3RyaW5nc1sxXVswXSA9
ICcwJzsKKyAgYml0X3N0cmluZ3NbMl1bMV0gPSAnMCc7CisgIGJpdF9zdHJpbmdzWzNdW2tOdW1C
aXRzIC8gM10gPSAnMCc7CisgIGJpdF9zdHJpbmdzWzRdW2tOdW1CaXRzIC0gMl0gPSAnMCc7Cisg
IGJpdF9zdHJpbmdzWzVdW2tOdW1CaXRzIC0gMV0gPSAnMCc7CisgIEVYUEVDVF9UUlVFKGFic2w6
OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoCisgICAgICB7c3RkOjpiaXRz
ZXQ8a051bUJpdHM+KGJpdF9zdHJpbmdzWzBdLmNfc3RyKCkpLAorICAgICAgIHN0ZDo6Yml0c2V0
PGtOdW1CaXRzPihiaXRfc3RyaW5nc1sxXS5jX3N0cigpKSwKKyAgICAgICBzdGQ6OmJpdHNldDxr
TnVtQml0cz4oYml0X3N0cmluZ3NbMl0uY19zdHIoKSksCisgICAgICAgc3RkOjpiaXRzZXQ8a051
bUJpdHM+KGJpdF9zdHJpbmdzWzNdLmNfc3RyKCkpLAorICAgICAgIHN0ZDo6Yml0c2V0PGtOdW1C
aXRzPihiaXRfc3RyaW5nc1s0XS5jX3N0cigpKSwKKyAgICAgICBzdGQ6OmJpdHNldDxrTnVtQml0
cz4oYml0X3N0cmluZ3NbNV0uY19zdHIoKSl9KSk7Cit9ICAvLyBuYW1lc3BhY2UKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBIYXNoVmFsdWVTZXF1ZW5jZVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Cit9OworVFlQRURfVEVTVF9TVUlURV9QKEhhc2hWYWx1ZVNlcXVlbmNlVGVz
dCk7CisKK1RZUEVEX1RFU1RfUChIYXNoVmFsdWVTZXF1ZW5jZVRlc3QsIEJhc2ljVXNhZ2UpIHsK
KyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPFR5cGVQYXJhbT46OnZhbHVlKSk7CisKKyAgdXNp
bmcgVmFsdWVUeXBlID0gdHlwZW5hbWUgVHlwZVBhcmFtOjp2YWx1ZV90eXBlOworICBhdXRvIGEg
PSBzdGF0aWNfY2FzdDxWYWx1ZVR5cGU+KDApOworICBhdXRvIGIgPSBzdGF0aWNfY2FzdDxWYWx1
ZVR5cGU+KDIzKTsKKyAgYXV0byBjID0gc3RhdGljX2Nhc3Q8VmFsdWVUeXBlPig0Mik7CisKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgK
KyAgICAgIHN0ZDo6bWFrZV90dXBsZShUeXBlUGFyYW0oKSwgVHlwZVBhcmFte30sIFR5cGVQYXJh
bXthLCBiLCBjfSwKKyAgICAgICAgICAgICAgICAgICAgICBUeXBlUGFyYW17YSwgYn0sIFR5cGVQ
YXJhbXtiLCBjfSkpKTsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoSGFzaFZhbHVl
U2VxdWVuY2VUZXN0LCBCYXNpY1VzYWdlKTsKK3VzaW5nIEludFNlcXVlbmNlVHlwZXMgPQorICAg
IHRlc3Rpbmc6OlR5cGVzPHN0ZDo6ZGVxdWU8aW50Piwgc3RkOjpmb3J3YXJkX2xpc3Q8aW50Piwg
c3RkOjpsaXN0PGludD4sCisgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50Piwgc3Rk
Ojp2ZWN0b3I8Ym9vbD4sIHN0ZDo6c2V0PGludD4sCisgICAgICAgICAgICAgICAgICAgc3RkOjpt
dWx0aXNldDxpbnQ+PjsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBIYXNoVmFs
dWVTZXF1ZW5jZVRlc3QsIEludFNlcXVlbmNlVHlwZXMpOworCisvLyBQcml2YXRlIHR5cGUgdGhh
dCBvbmx5IHN1cHBvcnRzIEFic2xIYXNoVmFsdWUgdG8gbWFrZSBzdXJlIG91ciBjaG9zZW4gaGFz
aAorLy8gaW1wbGVudGF0aW9uIGlzIHJlY3Vyc2l2ZSB3aXRoaW4gYWJzbDo6SGFzaC4KKy8vIEl0
IHVzZXMgc3RkOjphYnMoKSBvbiB0aGUgdmFsdWUgdG8gcHJvdmlkZSBkaWZmZXJlbnQgYml0d2lz
ZSByZXByZXNlbnRhdGlvbnMKKy8vIG9mIHRoZSBzYW1lIGxvZ2ljYWwgdmFsdWUuCitzdHJ1Y3Qg
UHJpdmF0ZSB7CisgIGludCBpOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEgg
QWJzbEhhc2hWYWx1ZShIIGgsIFByaXZhdGUgcCkgeworICAgIHJldHVybiBIOjpjb21iaW5lKHN0
ZDo6bW92ZShoKSwgc3RkOjphYnMocC5pKSk7CisgIH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRv
cj09KFByaXZhdGUgYSwgUHJpdmF0ZSBiKSB7CisgICAgcmV0dXJuIHN0ZDo6YWJzKGEuaSkgPT0g
c3RkOjphYnMoYi5pKTsKKyAgfQorCisgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwo
c3RkOjpvc3RyZWFtJiBvLCBQcml2YXRlIHApIHsKKyAgICByZXR1cm4gbyA8PCBwLmk7CisgIH0K
K307CisKK1RFU1QoSGFzaFZhbHVlVGVzdCwgUHJpdmF0ZVNhbml0eSkgeworICAvLyBTYW5pdHkg
Y2hlY2sgdGhhdCBQcml2YXRlIGlzIHdvcmtpbmcgYXMgdGhlIHRlc3RzIGJlbG93IGV4cGVjdCBp
dCB0byB3b3JrLgorICBFWFBFQ1RfVFJVRShpc19oYXNoYWJsZTxQcml2YXRlPjo6dmFsdWUpOwor
ICBFWFBFQ1RfTkUoU3B5SGFzaChQcml2YXRlezB9KSwgU3B5SGFzaChQcml2YXRlezF9KSk7Cisg
IEVYUEVDVF9FUShTcHlIYXNoKFByaXZhdGV7MX0pLCBTcHlIYXNoKFByaXZhdGV7MX0pKTsKK30K
KworVEVTVChIYXNoVmFsdWVUZXN0LCBPcHRpb25hbCkgeworICBFWFBFQ1RfVFJVRShpc19oYXNo
YWJsZTxhYnNsOjpvcHRpb25hbDxQcml2YXRlPj46OnZhbHVlKTsKKworICB1c2luZyBPID0gYWJz
bDo6b3B0aW9uYWw8UHJpdmF0ZT47CisgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBs
ZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoCisgICAgICBzdGQ6Om1ha2VfdHVwbGUoT3t9LCBPe3sx
fX0sIE97ey0xfX0sIE97ezEwfX0pKSk7Cit9CisKK1RFU1QoSGFzaFZhbHVlVGVzdCwgVmFyaWFu
dCkgeworICB1c2luZyBWID0gYWJzbDo6dmFyaWFudDxQcml2YXRlLCBzdGQ6OnN0cmluZz47Cisg
IEVYUEVDVF9UUlVFKGlzX2hhc2hhYmxlPFY+Ojp2YWx1ZSk7CisKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShzdGQ6Om1ha2VfdHVwbGUo
CisgICAgICBWKFByaXZhdGV7MX0pLCBWKFByaXZhdGV7LTF9KSwgVihQcml2YXRlezJ9KSwgVigi
QUJDIiksIFYoIkJDRCIpKSkpOworCisjaWYgQUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNIX1NG
SU5BRV9GUklFTkRMWV8KKyAgc3RydWN0IFMge307CisgIEVYUEVDVF9GQUxTRShpc19oYXNoYWJs
ZTxhYnNsOjp2YXJpYW50PFM+Pjo6dmFsdWUpOworI2VuZGlmCit9CisKK1RFU1QoSGFzaFZhbHVl
VGVzdCwgTWFwcykgeworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8c3RkOjptYXA8aW50LCBz
dGQ6OnN0cmluZz4+Ojp2YWx1ZSkpOworCisgIHVzaW5nIE0gPSBzdGQ6Om1hcDxpbnQsIHN0ZDo6
c3RyaW5nPjsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFz
aENvcnJlY3RseShzdGQ6Om1ha2VfdHVwbGUoCisgICAgICBNe30sIE17ezAsICJmb28ifX0sIE17
ezEsICJmb28ifX0sIE17ezAsICJiYXIifX0sIE17ezEsICJiYXIifX0sCisgICAgICBNe3swLCAi
Zm9vIn0sIHs0MiwgImJhciJ9fSwgTXt7MSwgImZvbyJ9LCB7NDIsICJiYXIifX0sCisgICAgICBN
e3sxLCAiZm9vIn0sIHs0MywgImJhciJ9fSwgTXt7MSwgImZvbyJ9LCB7NDMsICJiYXoifX0pKSk7
CisKKyAgdXNpbmcgTU0gPSBzdGQ6Om11bHRpbWFwPGludCwgc3RkOjpzdHJpbmc+OworICBFWFBF
Q1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6
bWFrZV90dXBsZSgKKyAgICAgIE1Ne30sIE1Ne3swLCAiZm9vIn19LCBNTXt7MSwgImZvbyJ9fSwg
TU17ezAsICJiYXIifX0sIE1Ne3sxLCAiYmFyIn19LAorICAgICAgTU17ezAsICJmb28ifSwgezAs
ICJiYXIifX0sIE1Ne3swLCAiYmFyIn0sIHswLCAiZm9vIn19LAorICAgICAgTU17ezAsICJmb28i
fSwgezQyLCAiYmFyIn19LCBNTXt7MSwgImZvbyJ9LCB7NDIsICJiYXIifX0sCisgICAgICBNTXt7
MSwgImZvbyJ9LCB7MSwgImZvbyJ9LCB7NDMsICJiYXIifX0sIE1Ne3sxLCAiZm9vIn0sIHs0Mywg
ImJheiJ9fSkpKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4K
LXN0cnVjdCBJc0hhc2hDYWxsYmxlIDogc3RkOjpmYWxzZV90eXBlIHt9Oworc3RydWN0IElzSGFz
aENhbGxhYmxlIDogc3RkOjpmYWxzZV90eXBlIHt9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXN0cnVjdCBJc0hhc2hDYWxsYmxlPFQsIGFic2w6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2
YWw8YWJzbDo6SGFzaDxUPj4oKSgKK3N0cnVjdCBJc0hhc2hDYWxsYWJsZTxULCBhYnNsOjp2b2lk
X3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPGFic2w6Okhhc2g8VD4+KCkoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IFQmPigpKSk+PiA6IHN0ZDo6dHJ1ZV90
eXBlIHt9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPgpAQCAtMTA1
LDEwICs0NDQsMTEgQEAgVEVTVChJc0hhc2hhYmxlVGVzdCwgVmFsaWRIYXNoKSB7CiAgIEVYUEVD
VF9UUlVFKHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPGFic2w6Okhhc2g8aW50Pj46OnZhbHVl
KTsKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPGFic2w6Okhhc2g8aW50
Pj46OnZhbHVlKTsKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6
Okhhc2g8aW50Pj46OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoSXNIYXNoQ2FsbGJsZTxpbnQ+Ojp2
YWx1ZSk7CisgIEVYUEVDVF9UUlVFKElzSGFzaENhbGxhYmxlPGludD46OnZhbHVlKTsKICAgRVhQ
RUNUX1RSVUUoSXNBZ2dyZWdhdGVJbml0aWFsaXphYmxlPGFic2w6Okhhc2g8aW50Pj46OnZhbHVl
KTsKIH0KLSNpZiBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8gJiYgIWRlZmluZWQoX19B
UFBMRV9fKQorCisjaWYgQUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNIX1NGSU5BRV9GUklFTkRM
WV8KIFRFU1QoSXNIYXNoYWJsZVRlc3QsIFBvaXNvbkhhc2gpIHsKICAgc3RydWN0IFgge307CiAg
IEVYUEVDVF9GQUxTRSgoaXNfaGFzaGFibGU8WD46OnZhbHVlKSk7CkBAIC0xMTcsMTAgKzQ1Nywx
MCBAQCBURVNUKElzSGFzaGFibGVUZXN0LCBQb2lzb25IYXNoKSB7CiAgIEVYUEVDVF9GQUxTRShz
dGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxhYnNsOjpIYXNoPFg+Pjo6dmFsdWUpOwogICBFWFBF
Q1RfRkFMU0UoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPGFic2w6Okhhc2g8WD4+Ojp2YWx1ZSk7
CiAgIEVYUEVDVF9GQUxTRShhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxYPj46
OnZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKElzSGFzaENhbGxibGU8WD46OnZhbHVlKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzSGFzaENhbGxhYmxlPFg+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9GQUxTRShJc0Fn
Z3JlZ2F0ZUluaXRpYWxpemFibGU8YWJzbDo6SGFzaDxYPj46OnZhbHVlKTsKIH0KLSNlbmRpZiAg
Ly8gQUJTTF9IQVNIX0lOVEVSTkFMX0NBTl9QT0lTT05fCisjZW5kaWYgIC8vIEFCU0xfTUVUQV9J
TlRFUk5BTF9TVERfSEFTSF9TRklOQUVfRlJJRU5ETFlfCiAKIC8vIEhhc2hhYmxlIHR5cGVzCiAv
LwpAQCAtMTI5LDcgKzQ2OSw3IEBAIFRFU1QoSXNIYXNoYWJsZVRlc3QsIFBvaXNvbkhhc2gpIHsK
IHN0cnVjdCBOb09wIHsKICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hDb2RlPgogICBmcmllbmQg
SGFzaENvZGUgQWJzbEhhc2hWYWx1ZShIYXNoQ29kZSBoLCBOb09wIG4pIHsKLSAgICByZXR1cm4g
c3RkOjptb3ZlKGgpOworICAgIHJldHVybiBoOwogICB9CiB9OwogCkBAIC0xNTksOCArNDk5LDE2
IEBAIHN0cnVjdCBDb21iaW5lVmFyaWFkaWMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnQoNCkpOwogICB9CiB9OworZW51bSBjbGFzcyBJbnZva2VUYWcgeworICBrVW5pcXVlbHlS
ZXByZXNlbnRlZCwKKyAga0hhc2hWYWx1ZSwKKyNpZiBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9S
VF9MRUdBQ1lfSEFTSF8KKyAga0xlZ2FjeUhhc2gsCisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRF
Uk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworICBrU3RkSGFzaCwKKyAga05vbmUKK307CiAKLXVz
aW5nIEludm9rZVRhZyA9IGFic2w6Omhhc2hfaW50ZXJuYWw6Okludm9rZUhhc2hUYWc7CiB0ZW1w
bGF0ZSA8SW52b2tlVGFnIFQ+CiB1c2luZyBJbnZva2VUYWdDb25zdGFudCA9IHN0ZDo6aW50ZWdy
YWxfY29uc3RhbnQ8SW52b2tlVGFnLCBUPjsKIApAQCAtMTc1LDYgKzUyMyw3IEBAIHN0cnVjdCBN
aW5UYWc8YT4gOiBJbnZva2VUYWdDb25zdGFudDxhPiB7fTsKIAogdGVtcGxhdGUgPEludm9rZVRh
Zy4uLiBUYWdzPgogc3RydWN0IEN1c3RvbUhhc2hUeXBlIHsKKyAgZXhwbGljaXQgQ3VzdG9tSGFz
aFR5cGUoc2l6ZV90IHZhbCkgOiB2YWx1ZSh2YWwpIHt9CiAgIHNpemVfdCB2YWx1ZTsKIH07CiAK
QEAgLTI0MSwxNyArNTkwLDE3IEBAIHZvaWQgVGVzdEN1c3RvbUhhc2hUeXBlKEludm9rZVRhZ0Nv
bnN0YW50PEludm9rZVRhZzo6a05vbmU+LCBULi4uKSB7CiAgIEVYUEVDVF9UUlVFKGlzX2hhc2hh
YmxlPGNvbnN0IHR5cGUmPigpKTsKIAogICBjb25zdCBzaXplX3Qgb2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8aW50PihzdGQ6Om1pbih7VDo6dmFsdWUuLi59KSk7Ci0gIEVYUEVDVF9FUShTcHlIYXNoKHR5
cGV7N30pLCBTcHlIYXNoKHNpemVfdHs3ICsgb2Zmc2V0fSkpOworICBFWFBFQ1RfRVEoU3B5SGFz
aCh0eXBlKDcpKSwgU3B5SGFzaChzaXplX3R7NyArIG9mZnNldH0pKTsKIH0KIAogdm9pZCBUZXN0
Q3VzdG9tSGFzaFR5cGUoSW52b2tlVGFnQ29uc3RhbnQ8SW52b2tlVGFnOjprTm9uZT4pIHsKLSNp
ZiBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8KKyNpZiBBQlNMX01FVEFfSU5URVJOQUxf
U1REX0hBU0hfU0ZJTkFFX0ZSSUVORExZXwogICAvLyBpc19oYXNoYWJsZSBpcyBmYWxzZSBpZiB3
ZSBkb24ndCBzdXBwb3J0IGFueSBvZiB0aGUgaG9va3MuCiAgIHVzaW5nIHR5cGUgPSBDdXN0b21I
YXNoVHlwZTw+OwogICBFWFBFQ1RfRkFMU0UoaXNfaGFzaGFibGU8dHlwZT4oKSk7CiAgIEVYUEVD
VF9GQUxTRShpc19oYXNoYWJsZTxjb25zdCB0eXBlPigpKTsKICAgRVhQRUNUX0ZBTFNFKGlzX2hh
c2hhYmxlPGNvbnN0IHR5cGUmPigpKTsKLSNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX0NB
Tl9QT0lTT05fCisjZW5kaWYgIC8vIEFCU0xfTUVUQV9JTlRFUk5BTF9TVERfSEFTSF9TRklOQUVf
RlJJRU5ETFlfCiB9CiAKIHRlbXBsYXRlIDxJbnZva2VUYWcgVGFnLCB0eXBlbmFtZS4uLiBUPgpA
QCAtMjczLDcgKzYyMiw3IEBAIFRFU1QoSGFzaFRlc3QsIE5vT3BzQXJlRXF1aXZhbGVudCkgewog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBIYXNoSW50VGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKIH07Ci1UWVBFRF9URVNUX0NBU0VfUChIYXNoSW50VGVzdCk7CitUWVBFRF9URVNU
X1NVSVRFX1AoSGFzaEludFRlc3QpOwogCiBUWVBFRF9URVNUX1AoSGFzaEludFRlc3QsIEJhc2lj
VXNhZ2UpIHsKICAgRVhQRUNUX05FKEhhc2g8Tm9PcD4oKSh7fSksIEhhc2g8VHlwZVBhcmFtPigp
KDApKTsKQEAgLTM1Miw3ICs3MDEsOCBAQCBURVNUKEhhc2hUZXN0LCBIYXNoTm9uVW5pcXVlbHlS
ZXByZXNlbnRlZFR5cGUpIHsKIH0KIAogVEVTVChIYXNoVGVzdCwgU3RhbmRhcmRIYXNoQ29udGFp
bmVyVXNhZ2UpIHsKLSAgc3RkOjp1bm9yZGVyZWRfbWFwPGludCwgc3RkOjpzdHJpbmcsIEhhc2g8
aW50Pj4gbWFwID0ge3swLCAiZm9vIn0sIHsgNDIsICJiYXIiIH19OworICBzdGQ6OnVub3JkZXJl
ZF9tYXA8aW50LCBzdGQ6OnN0cmluZywgSGFzaDxpbnQ+PiBtYXAgPSB7ezAsICJmb28ifSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHs0
MiwgImJhciJ9fTsKIAogICBFWFBFQ1RfTkUobWFwLmZpbmQoMCksIG1hcC5lbmQoKSk7CiAgIEVY
UEVDVF9FUShtYXAuZmluZCgxKSwgbWFwLmVuZCgpKTsKQEAgLTQyMiw0ICs3NzIsMjQgQEAgVEVT
VChIYXNoVGVzdCwgVHlwZUVyYXNlZCkgewogICAgICAgICAgICAgU3B5SGFzaChzdGQ6Om1ha2Vf
cGFpcihzaXplX3R7N30sIDE3KSkpOwogfQogCitzdHJ1Y3QgVmFsdWVXaXRoQm9vbENvbnZlcnNp
b24geworICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgaW50IGk7
Cit9OworCit9ICAvLyBuYW1lc3BhY2UKK25hbWVzcGFjZSBzdGQgewordGVtcGxhdGUgPD4KK3N0
cnVjdCBoYXNoPFZhbHVlV2l0aEJvb2xDb252ZXJzaW9uPiB7CisgIHNpemVfdCBvcGVyYXRvcigp
KFZhbHVlV2l0aEJvb2xDb252ZXJzaW9uIHYpIHsgcmV0dXJuIHYuaTsgfQorfTsKK30gIC8vIG5h
bWVzcGFjZSBzdGQKKworbmFtZXNwYWNlIHsKKworVEVTVChIYXNoVGVzdCwgRG9lc05vdFVzZUlt
cGxpY2l0Q29udmVyc2lvbnNUb0Jvb2wpIHsKKyAgRVhQRUNUX05FKGFic2w6Okhhc2g8VmFsdWVX
aXRoQm9vbENvbnZlcnNpb24+KCkoVmFsdWVXaXRoQm9vbENvbnZlcnNpb257MH0pLAorICAgICAg
ICAgICAgYWJzbDo6SGFzaDxWYWx1ZVdpdGhCb29sQ29udmVyc2lvbj4oKShWYWx1ZVdpdGhCb29s
Q29udmVyc2lvbnsxfSkpOworfQorCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2hhc2gvaGFzaF90ZXN0aW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2hfdGVzdGluZy5oCmluZGV4IDFl
M2NkYTY0NDY3ZGZhYjBlZTE2NjFjMDc1ZjYzYzA2YmMyMTgwMGQuLmM0NWJjMTU0OTgyYjUxYTFh
N2ZhMTBmZjVjODA1OGY0NDAxNGVmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0
aW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoX3Rlc3RpbmcuaApAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgYWJzbCB7
CiAvLyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgogLy8gICBmcmllbmQgSCBBYnNsSGFzaFZhbHVl
KEggc3RhdGUsIEJhZDIgeCkgewogLy8gICAgIC8vIFVzZXMgYSBhbmQgYi4KLS8vICAgICByZXR1
cm4gSDo6Y29tYmluZSh4LmEsIHguYik7CisvLyAgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjpt
b3ZlKHN0YXRlKSwgeC5hLCB4LmIpOwogLy8gICB9CiAvLyAgIGZyaWVuZCBib29sIG9wZXJhdG9y
PT0oQmFkMiB4LCBCYWQyIHkpIHsKIC8vICAgICAvLyBPbmx5IHVzZXMgYS4KQEAgLTEwNyw3ICsx
MDcsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgogLy8g
ICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggc3RhdGUsIEJhZDMgeCkgewogLy8gICAgIC8vIE9u
bHkgdXNlcyBhLgotLy8gICAgIHJldHVybiBIOjpjb21iaW5lKHguYSk7CisvLyAgICAgcmV0dXJu
IEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwgeC5hKTsKIC8vICAgfQogLy8gICBmcmllbmQg
Ym9vbCBvcGVyYXRvcj09KEJhZDMgeCwgQmFkMyB5KSB7CiAvLyAgICAgLy8gVXNlcyBhIGFuZCBi
LgpAQCAtMTIzLDE5ICsxMjMsMjEgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gICBpbnQgKnAsIHNp
emU7CiAvLyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgogLy8gICBmcmllbmQgSCBBYnNsSGFzaFZh
bHVlKEggc3RhdGUsIEJhZDQgeCkgewotLy8gICAgIHJldHVybiBIOjpjb21iaW5lX3JhbmdlKHgu
cCwgeC5wICsgeC5zaXplKTsKKy8vICAgICByZXR1cm4gSDo6Y29tYmluZV9jb250aWd1b3VzKHN0
ZDo6bW92ZShzdGF0ZSksIHgucCwgeC5wICsgeC5zaXplKTsKIC8vICAgfQogLy8gICBmcmllbmQg
Ym9vbCBvcGVyYXRvcj09KEJhZDQgeCwgQmFkNCB5KSB7Ci0vLyAgICAgcmV0dXJuIHN0ZDo6ZXF1
YWwoeC5wLCB4LnAgKyB4LnNpemUsIHkucCwgeS5wICsgeS5zaXplKTsKKy8vICAgIC8vIENvbXBh
cmUgdHdvIHJhbmdlcyBmb3IgZXF1YWxpdHkuIEMrKzE0IGNvZGUgY2FuIGluc3RlYWQgdXNlIHN0
ZDo6ZXF1YWwuCisvLyAgICAgcmV0dXJuIGFic2w6OmVxdWFsKHgucCwgeC5wICsgeC5zaXplLCB5
LnAsIHkucCArIHkuc2l6ZSk7CiAvLyAgIH0KIC8vIH07CiAvLwogLy8gQW4gZWFzeSBzb2x1dGlv
biB0byB0aGlzIGlzIHRvIGNvbWJpbmUgdGhlIHNpemUgYWZ0ZXIgY29tYmluaW5nIHRoZSByYW5n
ZSwKIC8vIGxpa2Ugc286Ci0vLyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgotLy8gICBmcmllbmQg
SCBBYnNsSGFzaFZhbHVlKEggc3RhdGUsIEJhZDQgeCkgewotLy8gICAgIHJldHVybiBIOjpjb21i
aW5lKEg6OmNvbWJpbmVfcmFuZ2UoeC5wLCB4LnAgKyB4LnNpemUpLCB4LnNpemUpOwotLy8gICB9
CisvLyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKy8vIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBz
dGF0ZSwgQmFkNCB4KSB7CisvLyAgIHJldHVybiBIOjpjb21iaW5lKAorLy8gICAgICAgSDo6Y29t
YmluZV9jb250aWd1b3VzKHN0ZDo6bW92ZShzdGF0ZSksIHgucCwgeC5wICsgeC5zaXplKSwgeC5z
aXplKTsKKy8vIH0KIC8vCiB0ZW1wbGF0ZSA8aW50Ji4uLiBFeHBsaWNpdEJhcnJpZXIsIHR5cGVu
YW1lIENvbnRhaW5lcj4KIEFCU0xfTVVTVF9VU0VfUkVTVUxUIHRlc3Rpbmc6OkFzc2VydGlvblJl
c3VsdApAQCAtMTg4LDcgKzE5MCw5IEBAIFZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3Jy
ZWN0bHkoY29uc3QgQ29udGFpbmVyJiB2YWx1ZXMsIEVxIGVxdWFscykgewogICBzdHJ1Y3QgSW5m
byB7CiAgICAgY29uc3QgViYgdmFsdWU7CiAgICAgc2l6ZV90IGluZGV4OwotICAgIHN0ZDo6c3Ry
aW5nIFRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gYWJzbDo6dmlzaXQoUHJpbnRWaXNpdG9ye2lu
ZGV4fSwgdmFsdWUpOyB9CisgICAgc3RkOjpzdHJpbmcgVG9TdHJpbmcoKSBjb25zdCB7CisgICAg
ICByZXR1cm4gYWJzbDo6dmlzaXQoUHJpbnRWaXNpdG9ye2luZGV4fSwgdmFsdWUpOworICAgIH0K
ICAgICBTcHlIYXNoU3RhdGUgZXhwYW5kKCkgY29uc3QgeyByZXR1cm4gYWJzbDo6dmlzaXQoRXhw
YW5kVmlzaXRvcnt9LCB2YWx1ZSk7IH0KICAgfTsKIApAQCAtMjI3LDcgKzIzMSw4IEBAIFZlcmlm
eVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoY29uc3QgQ29udGFpbmVyJiB2YWx1ZXMs
IEVxIGVxdWFscykgewogICAvLyBOb3cgd2UgdmVyaWZ5IHRoYXQgQWJzbEhhc2hWYWx1ZSBpcyBh
bHNvIGNvcnJlY3RseSBpbXBsZW1lbnRlZC4KIAogICBmb3IgKGNvbnN0IGF1dG8mIGMgOiBjbGFz
c2VzKSB7Ci0gICAgLy8gQWxsIGVsZW1lbnRzIG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBtdXN0
IGhhdmUgdGhlIHNhbWUgaGFzaCBleHBhbnNpb24uCisgICAgLy8gQWxsIGVsZW1lbnRzIG9mIHRo
ZSBlcXVpdmFsZW5jZSBjbGFzcyBtdXN0IGhhdmUgdGhlIHNhbWUgaGFzaAorICAgIC8vIGV4cGFu
c2lvbi4KICAgICBjb25zdCBTcHlIYXNoU3RhdGUgZXhwZWN0ZWQgPSBjWzBdLmV4cGFuZCgpOwog
ICAgIGZvciAoY29uc3QgSW5mbyYgdiA6IGMpIHsKICAgICAgIGlmICh2LmV4cGFuZCgpICE9IHYu
ZXhwYW5kKCkpIHsKQEAgLTI4NSw3ICsyOTAsNyBAQCBzdHJ1Y3QgVHlwZVNldCB7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVD4KLXN0cnVjdCBNYWtlVHlwZVNldCA6IFR5cGVTZXQ8Pnt9
Oworc3RydWN0IE1ha2VUeXBlU2V0IDogVHlwZVNldDw+IHt9OwogdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lLi4uIFRzPgogc3RydWN0IE1ha2VUeXBlU2V0PFQsIFRzLi4uPiA6IE1ha2VU
eXBlU2V0PFRzLi4uPjo6dGVtcGxhdGUgSW5zZXJ0PFQ+Ojp0eXBlIHt9OwogCkBAIC0zNDYsOCAr
MzUxLDcgQEAgdGVtcGxhdGUgPGludCYuLi4sIHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUg
RXE+CiBBQlNMX01VU1RfVVNFX1JFU1VMVCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQKIFZlcmlm
eVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoY29uc3QgQ29udGFpbmVyJiB2YWx1ZXMs
IEVxIGVxdWFscykgewogICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6VmVyaWZ5VHlwZUltcGxlbWVu
dHNBYnNsSGFzaENvcnJlY3RseSgKLSAgICAgIGhhc2hfaW50ZXJuYWw6OkNvbnRhaW5lckFzVmVj
dG9yPENvbnRhaW5lcj46OkRvKHZhbHVlcyksCi0gICAgICBlcXVhbHMpOworICAgICAgaGFzaF9p
bnRlcm5hbDo6Q29udGFpbmVyQXNWZWN0b3I8Q29udGFpbmVyPjo6RG8odmFsdWVzKSwgZXF1YWxz
KTsKIH0KIAogdGVtcGxhdGUgPGludCYuLi4sIHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9oYXNoL2ludGVybmFsL2NpdHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHkuY2MKaW5k
ZXggOGY3MmRkMWI3ZDBjOWY1MzhkOTFkNjI3ZGZmMDY2MmU0ZTBjOWIyYy4uZGM3NjUwYTc5ZTBm
MjViNzczMGZlYzBlZTI3ZGQwMWE2MjA0YzkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRl
cm5hbC9jaXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5jYwpAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzQwLDI1MSArMzQwLDUgQEAgdWlu
dDY0X3QgQ2l0eUhhc2g2NFdpdGhTZWVkcyhjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50
NjRfdCBzZWVkMCwKICAgcmV0dXJuIEhhc2hMZW4xNihDaXR5SGFzaDY0KHMsIGxlbikgLSBzZWVk
MCwgc2VlZDEpOwogfQogCi0vLyBBIHN1YnJvdXRpbmUgZm9yIENpdHlIYXNoMTI4KCkuICBSZXR1
cm5zIGEgZGVjZW50IDEyOC1iaXQgaGFzaCBmb3Igc3RyaW5ncwotLy8gb2YgYW55IGxlbmd0aCBy
ZXByZXNlbnRhYmxlIGluIHNpZ25lZCBsb25nLiAgQmFzZWQgb24gQ2l0eSBhbmQgTXVybXVyLgot
c3RhdGljIHVpbnQxMjggQ2l0eU11cm11cihjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50
MTI4IHNlZWQpIHsKLSAgdWludDY0X3QgYSA9IFVpbnQxMjhMb3c2NChzZWVkKTsKLSAgdWludDY0
X3QgYiA9IFVpbnQxMjhIaWdoNjQoc2VlZCk7Ci0gIHVpbnQ2NF90IGMgPSAwOwotICB1aW50NjRf
dCBkID0gMDsKLSAgaW50NjRfdCBsID0gbGVuIC0gMTY7Ci0gIGlmIChsIDw9IDApIHsgIC8vIGxl
biA8PSAxNgotICAgIGEgPSBTaGlmdE1peChhICogazEpICogazE7Ci0gICAgYyA9IGIgKiBrMSAr
IEhhc2hMZW4wdG8xNihzLCBsZW4pOwotICAgIGQgPSBTaGlmdE1peChhICsgKGxlbiA+PSA4ID8g
RmV0Y2g2NChzKSA6IGMpKTsKLSAgfSBlbHNlIHsgIC8vIGxlbiA+IDE2Ci0gICAgYyA9IEhhc2hM
ZW4xNihGZXRjaDY0KHMgKyBsZW4gLSA4KSArIGsxLCBhKTsKLSAgICBkID0gSGFzaExlbjE2KGIg
KyBsZW4sIGMgKyBGZXRjaDY0KHMgKyBsZW4gLSAxNikpOwotICAgIGEgKz0gZDsKLSAgICBkbyB7
Ci0gICAgICBhIF49IFNoaWZ0TWl4KEZldGNoNjQocykgKiBrMSkgKiBrMTsKLSAgICAgIGEgKj0g
azE7Ci0gICAgICBiIF49IGE7Ci0gICAgICBjIF49IFNoaWZ0TWl4KEZldGNoNjQocyArIDgpICog
azEpICogazE7Ci0gICAgICBjICo9IGsxOwotICAgICAgZCBePSBjOwotICAgICAgcyArPSAxNjsK
LSAgICAgIGwgLT0gMTY7Ci0gICAgfSB3aGlsZSAobCA+IDApOwotICB9Ci0gIGEgPSBIYXNoTGVu
MTYoYSwgYyk7Ci0gIGIgPSBIYXNoTGVuMTYoZCwgYik7Ci0gIHJldHVybiB1aW50MTI4KGEgXiBi
LCBIYXNoTGVuMTYoYiwgYSkpOwotfQotCi11aW50MTI4IENpdHlIYXNoMTI4V2l0aFNlZWQoY29u
c3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDEyOCBzZWVkKSB7Ci0gIGlmIChsZW4gPCAxMjgp
IHsKLSAgICByZXR1cm4gQ2l0eU11cm11cihzLCBsZW4sIHNlZWQpOwotICB9Ci0KLSAgLy8gV2Ug
ZXhwZWN0IGxlbiA+PSAxMjggdG8gYmUgdGhlIGNvbW1vbiBjYXNlLiAgS2VlcCA1NiBieXRlcyBv
ZiBzdGF0ZToKLSAgLy8gdiwgdywgeCwgeSwgYW5kIHouCi0gIHN0ZDo6cGFpcjx1aW50NjRfdCwg
dWludDY0X3Q+IHYsIHc7Ci0gIHVpbnQ2NF90IHggPSBVaW50MTI4TG93NjQoc2VlZCk7Ci0gIHVp
bnQ2NF90IHkgPSBVaW50MTI4SGlnaDY0KHNlZWQpOwotICB1aW50NjRfdCB6ID0gbGVuICogazE7
Ci0gIHYuZmlyc3QgPSBSb3RhdGUoeSBeIGsxLCA0OSkgKiBrMSArIEZldGNoNjQocyk7Ci0gIHYu
c2Vjb25kID0gUm90YXRlKHYuZmlyc3QsIDQyKSAqIGsxICsgRmV0Y2g2NChzICsgOCk7Ci0gIHcu
Zmlyc3QgPSBSb3RhdGUoeSArIHosIDM1KSAqIGsxICsgeDsKLSAgdy5zZWNvbmQgPSBSb3RhdGUo
eCArIEZldGNoNjQocyArIDg4KSwgNTMpICogazE7Ci0KLSAgLy8gVGhpcyBpcyB0aGUgc2FtZSBp
bm5lciBsb29wIGFzIENpdHlIYXNoNjQoKSwgbWFudWFsbHkgdW5yb2xsZWQuCi0gIGRvIHsKLSAg
ICB4ID0gUm90YXRlKHggKyB5ICsgdi5maXJzdCArIEZldGNoNjQocyArIDgpLCAzNykgKiBrMTsK
LSAgICB5ID0gUm90YXRlKHkgKyB2LnNlY29uZCArIEZldGNoNjQocyArIDQ4KSwgNDIpICogazE7
Ci0gICAgeCBePSB3LnNlY29uZDsKLSAgICB5ICs9IHYuZmlyc3QgKyBGZXRjaDY0KHMgKyA0MCk7
Ci0gICAgeiA9IFJvdGF0ZSh6ICsgdy5maXJzdCwgMzMpICogazE7Ci0gICAgdiA9IFdlYWtIYXNo
TGVuMzJXaXRoU2VlZHMocywgdi5zZWNvbmQgKiBrMSwgeCArIHcuZmlyc3QpOwotICAgIHcgPSBX
ZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMgKyAzMiwgeiArIHcuc2Vjb25kLCB5ICsgRmV0Y2g2NChz
ICsgMTYpKTsKLSAgICBzdGQ6OnN3YXAoeiwgeCk7Ci0gICAgcyArPSA2NDsKLSAgICB4ID0gUm90
YXRlKHggKyB5ICsgdi5maXJzdCArIEZldGNoNjQocyArIDgpLCAzNykgKiBrMTsKLSAgICB5ID0g
Um90YXRlKHkgKyB2LnNlY29uZCArIEZldGNoNjQocyArIDQ4KSwgNDIpICogazE7Ci0gICAgeCBe
PSB3LnNlY29uZDsKLSAgICB5ICs9IHYuZmlyc3QgKyBGZXRjaDY0KHMgKyA0MCk7Ci0gICAgeiA9
IFJvdGF0ZSh6ICsgdy5maXJzdCwgMzMpICogazE7Ci0gICAgdiA9IFdlYWtIYXNoTGVuMzJXaXRo
U2VlZHMocywgdi5zZWNvbmQgKiBrMSwgeCArIHcuZmlyc3QpOwotICAgIHcgPSBXZWFrSGFzaExl
bjMyV2l0aFNlZWRzKHMgKyAzMiwgeiArIHcuc2Vjb25kLCB5ICsgRmV0Y2g2NChzICsgMTYpKTsK
LSAgICBzdGQ6OnN3YXAoeiwgeCk7Ci0gICAgcyArPSA2NDsKLSAgICBsZW4gLT0gMTI4OwotICB9
IHdoaWxlIChBQlNMX1BSRURJQ1RfVFJVRShsZW4gPj0gMTI4KSk7Ci0gIHggKz0gUm90YXRlKHYu
Zmlyc3QgKyB6LCA0OSkgKiBrMDsKLSAgeSA9IHkgKiBrMCArIFJvdGF0ZSh3LnNlY29uZCwgMzcp
OwotICB6ID0geiAqIGswICsgUm90YXRlKHcuZmlyc3QsIDI3KTsKLSAgdy5maXJzdCAqPSA5Owot
ICB2LmZpcnN0ICo9IGswOwotICAvLyBJZiAwIDwgbGVuIDwgMTI4LCBoYXNoIHVwIHRvIDQgY2h1
bmtzIG9mIDMyIGJ5dGVzIGVhY2ggZnJvbSB0aGUgZW5kIG9mIHMuCi0gIGZvciAoc2l6ZV90IHRh
aWxfZG9uZSA9IDA7IHRhaWxfZG9uZSA8IGxlbjspIHsKLSAgICB0YWlsX2RvbmUgKz0gMzI7Ci0g
ICAgeSA9IFJvdGF0ZSh4ICsgeSwgNDIpICogazAgKyB2LnNlY29uZDsKLSAgICB3LmZpcnN0ICs9
IEZldGNoNjQocyArIGxlbiAtIHRhaWxfZG9uZSArIDE2KTsKLSAgICB4ID0geCAqIGswICsgdy5m
aXJzdDsKLSAgICB6ICs9IHcuc2Vjb25kICsgRmV0Y2g2NChzICsgbGVuIC0gdGFpbF9kb25lKTsK
LSAgICB3LnNlY29uZCArPSB2LmZpcnN0OwotICAgIHYgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRz
KHMgKyBsZW4gLSB0YWlsX2RvbmUsIHYuZmlyc3QgKyB6LCB2LnNlY29uZCk7Ci0gICAgdi5maXJz
dCAqPSBrMDsKLSAgfQotICAvLyBBdCB0aGlzIHBvaW50IG91ciA1NiBieXRlcyBvZiBzdGF0ZSBz
aG91bGQgY29udGFpbiBtb3JlIHRoYW4KLSAgLy8gZW5vdWdoIGluZm9ybWF0aW9uIGZvciBhIHN0
cm9uZyAxMjgtYml0IGhhc2guICBXZSB1c2UgdHdvCi0gIC8vIGRpZmZlcmVudCA1Ni1ieXRlLXRv
LTgtYnl0ZSBoYXNoZXMgdG8gZ2V0IGEgMTYtYnl0ZSBmaW5hbCByZXN1bHQuCi0gIHggPSBIYXNo
TGVuMTYoeCwgdi5maXJzdCk7Ci0gIHkgPSBIYXNoTGVuMTYoeSArIHosIHcuZmlyc3QpOwotICBy
ZXR1cm4gdWludDEyOChIYXNoTGVuMTYoeCArIHYuc2Vjb25kLCB3LnNlY29uZCkgKyB5LAotICAg
ICAgICAgICAgICAgICBIYXNoTGVuMTYoeCArIHcuc2Vjb25kLCB5ICsgdi5zZWNvbmQpKTsKLX0K
LQotdWludDEyOCBDaXR5SGFzaDEyOChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7Ci0gIHJl
dHVybiBsZW4gPj0gMTYKLSAgICAgICAgICAgICA/IENpdHlIYXNoMTI4V2l0aFNlZWQocyArIDE2
LCBsZW4gLSAxNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDEyOChG
ZXRjaDY0KHMpLCBGZXRjaDY0KHMgKyA4KSArIGswKSkKLSAgICAgICAgICAgICA6IENpdHlIYXNo
MTI4V2l0aFNlZWQocywgbGVuLCB1aW50MTI4KGswLCBrMSkpOwotfQogfSAgLy8gbmFtZXNwYWNl
IGhhc2hfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCi0KLSNpZmRlZiBfX1NTRTRfMl9f
Ci0jaW5jbHVkZSA8bm1taW50cmluLmg+Ci0jaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL2Np
dHlfY3JjLmgiCi0KLW5hbWVzcGFjZSBhYnNsIHsKLW5hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsK
LQotLy8gUmVxdWlyZXMgbGVuID49IDI0MC4KLXN0YXRpYyB2b2lkIENpdHlIYXNoQ3JjMjU2TG9u
Zyhjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50MzJfdCBzZWVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpyZXN1bHQpIHsKLSAgdWludDY0X3QgYSA9IEZl
dGNoNjQocyArIDU2KSArIGswOwotICB1aW50NjRfdCBiID0gRmV0Y2g2NChzICsgOTYpICsgazA7
Ci0gIHVpbnQ2NF90IGMgPSByZXN1bHRbMF0gPSBIYXNoTGVuMTYoYiwgbGVuKTsKLSAgdWludDY0
X3QgZCA9IHJlc3VsdFsxXSA9IEZldGNoNjQocyArIDEyMCkgKiBrMCArIGxlbjsKLSAgdWludDY0
X3QgZSA9IEZldGNoNjQocyArIDE4NCkgKyBzZWVkOwotICB1aW50NjRfdCBmID0gMDsKLSAgdWlu
dDY0X3QgZyA9IDA7Ci0gIHVpbnQ2NF90IGggPSBjICsgZDsKLSAgdWludDY0X3QgeCA9IHNlZWQ7
Ci0gIHVpbnQ2NF90IHkgPSAwOwotICB1aW50NjRfdCB6ID0gMDsKLQotICAvLyAyNDAgYnl0ZXMg
b2YgaW5wdXQgcGVyIGl0ZXIuCi0gIHNpemVfdCBpdGVycyA9IGxlbiAvIDI0MDsKLSAgbGVuIC09
IGl0ZXJzICogMjQwOwotICBkbyB7Ci0jdW5kZWYgQ0hVTksKLSNkZWZpbmUgQ0hVTksocikgICAg
ICAgICAgICAgICBcCi0gIFBFUk1VVEUzKHgsIHosIHkpOyAgICAgICAgICAgXAotICBiICs9IEZl
dGNoNjQocyk7ICAgICAgICAgICAgIFwKLSAgYyArPSBGZXRjaDY0KHMgKyA4KTsgICAgICAgICBc
Ci0gIGQgKz0gRmV0Y2g2NChzICsgMTYpOyAgICAgICAgXAotICBlICs9IEZldGNoNjQocyArIDI0
KTsgICAgICAgIFwKLSAgZiArPSBGZXRjaDY0KHMgKyAzMik7ICAgICAgICBcCi0gIGEgKz0gYjsg
ICAgICAgICAgICAgICAgICAgICAgXAotICBoICs9IGY7ICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgYiArPSBjOyAgICAgICAgICAgICAgICAgICAgICBcCi0gIGYgKz0gZDsgICAgICAgICAgICAg
ICAgICAgICAgXAotICBnICs9IGU7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZSArPSB6OyAg
ICAgICAgICAgICAgICAgICAgICBcCi0gIGcgKz0geDsgICAgICAgICAgICAgICAgICAgICAgXAot
ICB6ID0gX21tX2NyYzMyX3U2NCh6LCBiICsgZyk7IFwKLSAgeSA9IF9tbV9jcmMzMl91NjQoeSwg
ZSArIGgpOyBcCi0gIHggPSBfbW1fY3JjMzJfdTY0KHgsIGYgKyBhKTsgXAotICBlID0gUm90YXRl
KGUsIHIpOyAgICAgICAgICAgIFwKLSAgYyArPSBlOyAgICAgICAgICAgICAgICAgICAgICBcCi0g
IHMgKz0gNDAKLQotICAgIENIVU5LKDApOwotICAgIFBFUk1VVEUzKGEsIGgsIGMpOwotICAgIENI
VU5LKDMzKTsKLSAgICBQRVJNVVRFMyhhLCBoLCBmKTsKLSAgICBDSFVOSygwKTsKLSAgICBQRVJN
VVRFMyhiLCBoLCBmKTsKLSAgICBDSFVOSyg0Mik7Ci0gICAgUEVSTVVURTMoYiwgaCwgZCk7Ci0g
ICAgQ0hVTksoMCk7Ci0gICAgUEVSTVVURTMoYiwgaCwgZSk7Ci0gICAgQ0hVTksoMzMpOwotICAg
IFBFUk1VVEUzKGEsIGgsIGUpOwotICB9IHdoaWxlICgtLWl0ZXJzID4gMCk7Ci0KLSAgd2hpbGUg
KGxlbiA+PSA0MCkgewotICAgIENIVU5LKDI5KTsKLSAgICBlIF49IFJvdGF0ZShhLCAyMCk7Ci0g
ICAgaCArPSBSb3RhdGUoYiwgMzApOwotICAgIGcgXj0gUm90YXRlKGMsIDQwKTsKLSAgICBmICs9
IFJvdGF0ZShkLCAzNCk7Ci0gICAgUEVSTVVURTMoYywgaCwgZyk7Ci0gICAgbGVuIC09IDQwOwot
ICB9Ci0gIGlmIChsZW4gPiAwKSB7Ci0gICAgcyA9IHMgKyBsZW4gLSA0MDsKLSAgICBDSFVOSygz
Myk7Ci0gICAgZSBePSBSb3RhdGUoYSwgNDMpOwotICAgIGggKz0gUm90YXRlKGIsIDQyKTsKLSAg
ICBnIF49IFJvdGF0ZShjLCA0MSk7Ci0gICAgZiArPSBSb3RhdGUoZCwgNDApOwotICB9Ci0gIHJl
c3VsdFswXSBePSBoOwotICByZXN1bHRbMV0gXj0gZzsKLSAgZyArPSBoOwotICBhID0gSGFzaExl
bjE2KGEsIGcgKyB6KTsKLSAgeCArPSB5IDw8IDMyOwotICBiICs9IHg7Ci0gIGMgPSBIYXNoTGVu
MTYoYywgeikgKyBoOwotICBkID0gSGFzaExlbjE2KGQsIGUgKyByZXN1bHRbMF0pOwotICBnICs9
IGU7Ci0gIGggKz0gSGFzaExlbjE2KHgsIGYpOwotICBlID0gSGFzaExlbjE2KGEsIGQpICsgZzsK
LSAgeiA9IEhhc2hMZW4xNihiLCBjKSArIGE7Ci0gIHkgPSBIYXNoTGVuMTYoZywgaCkgKyBjOwot
ICByZXN1bHRbMF0gPSBlICsgeiArIHkgKyB4OwotICBhID0gU2hpZnRNaXgoKGEgKyB5KSAqIGsw
KSAqIGswICsgYjsKLSAgcmVzdWx0WzFdICs9IGEgKyByZXN1bHRbMF07Ci0gIGEgPSBTaGlmdE1p
eChhICogazApICogazAgKyBjOwotICByZXN1bHRbMl0gPSBhICsgcmVzdWx0WzFdOwotICBhID0g
U2hpZnRNaXgoKGEgKyBlKSAqIGswKSAqIGswOwotICByZXN1bHRbM10gPSBhICsgcmVzdWx0WzJd
OwotfQotCi0vLyBSZXF1aXJlcyBsZW4gPCAyNDAuCi1zdGF0aWMgdm9pZCBDaXR5SGFzaENyYzI1
NlNob3J0KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90ICpyZXN1bHQpIHsKLSAg
Y2hhciBidWZbMjQwXTsKLSAgbWVtY3B5KGJ1ZiwgcywgbGVuKTsKLSAgbWVtc2V0KGJ1ZiArIGxl
biwgMCwgMjQwIC0gbGVuKTsKLSAgQ2l0eUhhc2hDcmMyNTZMb25nKGJ1ZiwgMjQwLCB+c3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGxlbiksIHJlc3VsdCk7Ci19Ci0KLXZvaWQgQ2l0eUhhc2hDcmMyNTYo
Y29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDY0X3QgKnJlc3VsdCkgewotICBpZiAoQUJT
TF9QUkVESUNUX1RSVUUobGVuID49IDI0MCkpIHsKLSAgICBDaXR5SGFzaENyYzI1Nkxvbmcocywg
bGVuLCAwLCByZXN1bHQpOwotICB9IGVsc2UgewotICAgIENpdHlIYXNoQ3JjMjU2U2hvcnQocywg
bGVuLCByZXN1bHQpOwotICB9Ci19Ci0KLXVpbnQxMjggQ2l0eUhhc2hDcmMxMjhXaXRoU2VlZChj
b25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50MTI4IHNlZWQpIHsKLSAgaWYgKGxlbiA8PSA5
MDApIHsKLSAgICByZXR1cm4gQ2l0eUhhc2gxMjhXaXRoU2VlZChzLCBsZW4sIHNlZWQpOwotICB9
IGVsc2UgewotICAgIHVpbnQ2NF90IHJlc3VsdFs0XTsKLSAgICBDaXR5SGFzaENyYzI1NihzLCBs
ZW4sIHJlc3VsdCk7Ci0gICAgdWludDY0X3QgdSA9IFVpbnQxMjhIaWdoNjQoc2VlZCkgKyByZXN1
bHRbMF07Ci0gICAgdWludDY0X3QgdiA9IFVpbnQxMjhMb3c2NChzZWVkKSArIHJlc3VsdFsxXTsK
LSAgICByZXR1cm4gdWludDEyOChIYXNoTGVuMTYodSwgdiArIHJlc3VsdFsyXSksCi0gICAgICAg
ICAgICAgICAgICAgSGFzaExlbjE2KFJvdGF0ZSh2LCAzMiksIHUgKiBrMCArIHJlc3VsdFszXSkp
OwotICB9Ci19Ci0KLXVpbnQxMjggQ2l0eUhhc2hDcmMxMjgoY29uc3QgY2hhciAqcywgc2l6ZV90
IGxlbikgewotICBpZiAobGVuIDw9IDkwMCkgewotICAgIHJldHVybiBDaXR5SGFzaDEyOChzLCBs
ZW4pOwotICB9IGVsc2UgewotICAgIHVpbnQ2NF90IHJlc3VsdFs0XTsKLSAgICBDaXR5SGFzaENy
YzI1NihzLCBsZW4sIHJlc3VsdCk7Ci0gICAgcmV0dXJuIHVpbnQxMjgocmVzdWx0WzJdLCByZXN1
bHRbM10pOwotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCi19ICAvLyBu
YW1lc3BhY2UgYWJzbAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwv
Y2l0eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmgKaW5kZXggNTViMzdiODc1ZjBiM2Zk
ODQ2N2RhOTlkYmVkNDI5N2FjODlmMTgxOS4uYjQzZDM0MDdkY2I0NGM0NmMzNWYwMmY0Mzk3ZTg4
MGY0NTljZWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTEyLDcgKzEyLDcgQEAKIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgogLy8KLS8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9j
aXR5aGFzaC8KKy8vIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2l0eWhhc2gvCiAvLwogLy8g
VGhpcyBmaWxlIHByb3ZpZGVzIGEgZmV3IGZ1bmN0aW9ucyBmb3IgaGFzaGluZyBzdHJpbmdzLiAg
QWxsIG9mIHRoZW0gYXJlCiAvLyBoaWdoLXF1YWxpdHkgZnVuY3Rpb25zIGluIHRoZSBzZW5zZSB0
aGF0IHRoZXkgcGFzcyBzdGFuZGFyZCB0ZXN0cyBzdWNoCkBAIC0yMywxNSArMjMsNiBAQAogLy8g
aXMgTXVybXVyMy4gIEZvciA2NC1iaXQgeDg2IGNvZGUsIENpdHlIYXNoNjQgaXMgYW4gZXhjZWxs
ZW50IGNob2ljZSBmb3IgaGFzaAogLy8gdGFibGVzIGFuZCBtb3N0IG90aGVyIGhhc2hpbmcgKGV4
Y2x1ZGluZyBjcnlwdG9ncmFwaHkpLgogLy8KLS8vIEZvciA2NC1iaXQgeDg2IGNvZGUsIG9uIGxv
bmcgc3RyaW5ncywgdGhlIHBpY3R1cmUgaXMgbW9yZSBjb21wbGljYXRlZC4KLS8vIE9uIG1hbnkg
cmVjZW50IEludGVsIENQVXMsIHN1Y2ggYXMgTmVoYWxlbSwgV2VzdG1lcmUsIFNhbmR5IEJyaWRn
ZSwgZXRjLiwKLS8vIENpdHlIYXNoQ3JjMTI4IGFwcGVhcnMgdG8gYmUgZmFzdGVyIHRoYW4gYWxs
IGNvbXBldGl0b3JzIG9mIGNvbXBhcmFibGUKLS8vIHF1YWxpdHkuICBDaXR5SGFzaDEyOCBpcyBh
bHNvIGdvb2QgYnV0IG5vdCBxdWl0ZSBhcyBmYXN0LiAgV2UgYmVsaWV2ZSBvdXIKLS8vIG5lYXJl
c3QgY29tcGV0aXRvciBpcyBCb2IgSmVua2lucycgU3Bvb2t5LiAgV2UgZG9uJ3QgaGF2ZSBncmVh
dCBkYXRhIGZvcgotLy8gb3RoZXIgNjQtYml0IENQVXMsIGJ1dCBmb3IgbG9uZyBzdHJpbmdzIHdl
IGtub3cgdGhhdCBTcG9va3kgaXMgc2xpZ2h0bHkKLS8vIGZhc3RlciB0aGFuIENpdHlIYXNoIG9u
IHNvbWUgcmVsYXRpdmVseSByZWNlbnQgQU1EIHg4Ni02NCBDUFVzLCBmb3IgZXhhbXBsZS4KLS8v
IE5vdGUgdGhhdCBDaXR5SGFzaENyYzEyOCBpcyBkZWNsYXJlZCBpbiBjaXR5Y3JjLmguCi0vLwog
Ly8gRm9yIDMyLWJpdCB4ODYgY29kZSwgd2UgZG9uJ3Qga25vdyBvZiBhbnl0aGluZyBmYXN0ZXIg
dGhhbiBDaXR5SGFzaDMyIHRoYXQKIC8vIGlzIG9mIGNvbXBhcmFibGUgcXVhbGl0eS4gIFdlIGJl
bGlldmUgb3VyIG5lYXJlc3QgY29tcGV0aXRvciBpcyBNdXJtdXIzQS4KIC8vIChPbiA2NC1iaXQg
Q1BVcywgaXQgaXMgdHlwaWNhbGx5IGZhc3RlciB0byB1c2UgdGhlIG90aGVyIENpdHlIYXNoIHZh
cmlhbnRzLikKQEAgLTU4LDcgKzQ5LDYgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIGZvciBz
aXplX3QuCiAjaW5jbHVkZSA8dXRpbGl0eT4KIAotCiBuYW1lc3BhY2UgYWJzbCB7CiBuYW1lc3Bh
Y2UgaGFzaF9pbnRlcm5hbCB7CiAKQEAgLTc5LDEzICs2OSw2IEBAIHVpbnQ2NF90IENpdHlIYXNo
NjRXaXRoU2VlZChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50NjRfdCBzZWVkKTsKIHVp
bnQ2NF90IENpdHlIYXNoNjRXaXRoU2VlZHMoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWlu
dDY0X3Qgc2VlZDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBzZWVkMSk7
CiAKLS8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4KLXVpbnQxMjggQ2l0eUhhc2gx
MjgoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbik7Ci0KLS8vIEhhc2ggZnVuY3Rpb24gZm9yIGEg
Ynl0ZSBhcnJheS4gIEZvciBjb252ZW5pZW5jZSwgYSAxMjgtYml0IHNlZWQgaXMgYWxzbwotLy8g
aGFzaGVkIGludG8gdGhlIHJlc3VsdC4KLXVpbnQxMjggQ2l0eUhhc2gxMjhXaXRoU2VlZChjb25z
dCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50MTI4IHNlZWQpOwotCiAvLyBIYXNoIGZ1bmN0aW9u
IGZvciBhIGJ5dGUgYXJyYXkuICBNb3N0IHVzZWZ1bCBpbiAzMi1iaXQgYmluYXJpZXMuCiB1aW50
MzJfdCBDaXR5SGFzaDMyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfY3JjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2Np
dHlfY3JjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZTY1NTdkMjEzZjJiNDBh
OGM0NzRjNmEwYzI3OWYwYTZiY2FmMjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5X2NyYy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3Jz
LgotLy8KLS8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOwotLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0Ci0vLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKLS8vCi0vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0vLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCi0vLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0vLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KLS8vCi0vLyBUaGlzIGZpbGUgZGVjbGFyZXMgdGhlIHN1YnNldCBvZiB0aGUgQ2l0eUhhc2gg
ZnVuY3Rpb25zIHRoYXQgcmVxdWlyZQotLy8gX21tX2NyYzMyX3U2NCgpLiAgU2VlIHRoZSBDaXR5
SGFzaCBSRUFETUUgZm9yIGRldGFpbHMuCi0vLwotLy8gRnVuY3Rpb25zIGluIHRoZSBDaXR5SGFz
aCBmYW1pbHkgYXJlIG5vdCBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGh5LgotCi0jaWZuZGVmIEFC
U0xfSEFTSF9JTlRFUk5BTF9DSVRZX0NSQ19IXwotI2RlZmluZSBBQlNMX0hBU0hfSU5URVJOQUxf
Q0lUWV9DUkNfSF8KLQotI2luY2x1ZGUgImFic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmgiCi0KLW5h
bWVzcGFjZSBhYnNsIHsKLW5hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsKLQotLy8gSGFzaCBmdW5j
dGlvbiBmb3IgYSBieXRlIGFycmF5LgotdWludDEyOCBDaXR5SGFzaENyYzEyOChjb25zdCBjaGFy
ICpzLCBzaXplX3QgbGVuKTsKLQotLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LiAg
Rm9yIGNvbnZlbmllbmNlLCBhIDEyOC1iaXQgc2VlZCBpcyBhbHNvCi0vLyBoYXNoZWQgaW50byB0
aGUgcmVzdWx0LgotdWludDEyOCBDaXR5SGFzaENyYzEyOFdpdGhTZWVkKGNvbnN0IGNoYXIgKnMs
IHNpemVfdCBsZW4sIHVpbnQxMjggc2VlZCk7Ci0KLS8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0
ZSBhcnJheS4gIFNldHMgcmVzdWx0WzBdIC4uLiByZXN1bHRbM10uCi12b2lkIENpdHlIYXNoQ3Jj
MjU2KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90ICpyZXN1bHQpOwotCi19ICAv
LyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIGFic2wKLQotI2VuZGlm
ICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfQ0lUWV9DUkNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hh
c2gvaW50ZXJuYWwvY2l0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5X3Rlc3Qu
Y2MKaW5kZXggNjc4ZGE1M2QzNGQwNGQ2MDExZmU4N2IwNmE3ZTI2NjEzYmRiZWY5OS4uNzFiNGVj
Y2VjZmY5MTZhY2JjMmQ4OGJkNzBiY2QzZjMwMDUzMTE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFz
aC9pbnRlcm5hbC9jaXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5X3Rl
c3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE4LDkg
KzE4LDYgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpZmRlZiBfX1NTRTRfMl9fCi0jaW5jbHVkZSAiYWJzbC9oYXNo
L2ludGVybmFsL2NpdHlfY3JjLmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIGFic2wgewogbmFtZXNw
YWNlIGhhc2hfaW50ZXJuYWwgewpAQCAtMjgsNyArMjUsNiBAQCBuYW1lc3BhY2UgaGFzaF9pbnRl
cm5hbCB7CiBzdGF0aWMgY29uc3QgdWludDY0X3QgazAgPSAweGMzYTVjODVjOTdjYjMxMjdVTEw7
CiBzdGF0aWMgY29uc3QgdWludDY0X3Qga1NlZWQwID0gMTIzNDU2NzsKIHN0YXRpYyBjb25zdCB1
aW50NjRfdCBrU2VlZDEgPSBrMDsKLXN0YXRpYyBjb25zdCB1aW50MTI4IGtTZWVkMTI4KGtTZWVk
MCwga1NlZWQxKTsKIHN0YXRpYyBjb25zdCBpbnQga0RhdGFTaXplID0gMSA8PCAyMDsKIHN0YXRp
YyBjb25zdCBpbnQga1Rlc3RTaXplID0gMzAwOwogCkBAIC00OSwxNzU0ICs0NSw1MzkgQEAgdm9p
ZCBzZXR1cCgpIHsKIH0KIAogI2RlZmluZSBDKHgpIDB4IyN4IyNVTEwKLXN0YXRpYyBjb25zdCB1
aW50NjRfdCB0ZXN0ZGF0YVtrVGVzdFNpemVdWzE2XSA9IHsKK3N0YXRpYyBjb25zdCB1aW50NjRf
dCB0ZXN0ZGF0YVtrVGVzdFNpemVdWzRdID0gewogICAgIHtDKDlhZTE2YTNiMmY5MDQwNGYpLCBD
KDc1MTA2ZGI4OTAyMzdhNGEpLCBDKDNmZWFjNWY2MzYwMzk3NjYpLAotICAgICBDKDNkZjA5ZGZj
NjRjMDlhMmIpLCBDKDNjYjU0MGMzOTJlNTFlMjkpLCBDKDZiNTYzNDNmZWFjMDY2MyksCi0gICAg
IEMoNWI3YmM1MGZkOGU4YWQ5MiksIEMoM2RmMDlkZmM2NGMwOWEyYiksIEMoM2NiNTQwYzM5MmU1
MWUyOSksCi0gICAgIEMoNmI1NjM0M2ZlYWMwNjYzKSwgQyg1YjdiYzUwZmQ4ZThhZDkyKSwgQyg5
NTE2MmYyNGU2YTVmOTMwKSwKLSAgICAgQyg2ODA4YmRmNGYxZWIwNmUwKSwgQyhiM2IxZjNhNjdi
NjI0ZDgyKSwgQyhjOWE2MmYxMmJkNGNkODBiKSwKICAgICAgQyhkYzU2ZDE3YSl9LAogICAgIHtD
KDU0MTE1MGU4N2Y0MTVlOTYpLCBDKDFhZWYwZDI0YjMxNDhhMWEpLCBDKGJhY2MzMDBlMWU4MjM0
NWEpLAotICAgICBDKGMzY2RjNDFlMWRmMzM1MTMpLCBDKDJjMTM4ZmYyNTk2ZDQyZjYpLCBDKGY1
OGU5MDgyYWVkMzA1NWYpLAotICAgICBDKDE2MmUxOTJiMjk1NzE2M2QpLCBDKGMzY2RjNDFlMWRm
MzM1MTMpLCBDKDJjMTM4ZmYyNTk2ZDQyZjYpLAotICAgICBDKGY1OGU5MDgyYWVkMzA1NWYpLCBD
KDE2MmUxOTJiMjk1NzE2M2QpLCBDKGZiOTllODVlMGQxNmY5MGMpLAotICAgICBDKDYwODQ2MmMx
NWJkZjI3ZTgpLCBDKGU3ZDJjNWM5NDM1NzJiNjIpLCBDKDFiYWFhOTMyNzY0Mjc5OGMpLAogICAg
ICBDKDk5OTI5MzM0KX0sCi0gICAge0MoZjM3ODZhNGIyNTgyN2MxKSwgQygzNGVlMWEyYmY3Njdi
ZDFjKSwgQygyZjE1Y2EyZWJmYjYzMWYyKSwKLSAgICAgQygzMTQ5YmExZGFjNzcyNzBkKSwgQyg3
MGUyZTA3NmUzMDcwM2MpLCBDKDU5YmNjOTY1OWJjNTI5NiksCi0gICAgIEMoOWVjYmM4MTMyYWUy
ZjFkNyksIEMoMzE0OWJhMWRhYzc3MjcwZCksIEMoNzBlMmUwNzZlMzA3MDNjKSwKLSAgICAgQyg1
OWJjYzk2NTliYzUyOTYpLCBDKDllY2JjODEzMmFlMmYxZDcpLCBDKGEwMWQzMDc4OWJhZDdjZjIp
LAotICAgICBDKGFlMDNmZTM3MTk4MWEwZTApLCBDKDEyN2UzODgzYjg3ODg5MzQpLCBDKGQwYWMz
ZDRjMGE2ZmNhMzIpLAotICAgICBDKDQyNTJlZGI3KX0sCisgICAge0MoZjM3ODZhNGIyNTgyN2Mx
KSwgQygzNGVlMWEyYmY3NjdiZDFjKSwgQygyZjE1Y2EyZWJmYjYzMWYyKSwgQyg0MjUyZWRiNyl9
LAogICAgIHtDKGVmOTIzYTdhMWFmNzhlYWIpLCBDKDc5MTYzYjFlMWU5YTliMTgpLCBDKGRmM2Iy
YWNhNmUxZTRhMzApLAotICAgICBDKDIxOTNmYjc2MjBjYmYyM2IpLCBDKDhiNmE4ZmYwNmNkYTgz
MDIpLCBDKDFhNDQ0NjlhZmQzZTA5MWYpLAotICAgICBDKDhiMDQ0OTM3NjYxMjUwNiksIEMoMjE5
M2ZiNzYyMGNiZjIzYiksIEMoOGI2YThmZjA2Y2RhODMwMiksCi0gICAgIEMoMWE0NDQ2OWFmZDNl
MDkxZiksIEMoOGIwNDQ5Mzc2NjEyNTA2KSwgQyhlOWQ5ZDQxYzMyYWQ5MWQxKSwKLSAgICAgQyhi
NDRhYjA5ZjU4ZTNjNjA4KSwgQygxOWU5MTc1ZjlmY2Y3ODQpLCBDKDgzOWIzYzk1ODFiNGE0ODAp
LCBDKGViYzM0ZjNjKX0sCisgICAgIEMoZWJjMzRmM2MpfSwKICAgICB7QygxMWRmNTkyNTk2ZjQx
ZDg4KSwgQyg4NDNlYzBiY2U5MDQyZjljKSwgQyhjY2UyZWExZTA4YjFlYjMwKSwKLSAgICAgQyg0
ZDA5ZTQyZjA5Y2MzNDk1KSwgQyg2NjYyMzY2MzFiOWYyNTNiKSwgQyhkMjhiMzc2M2NkMDJiNmEz
KSwKLSAgICAgQyg0M2IyNDllNTdjNGQwYzFiKSwgQyg0ZDA5ZTQyZjA5Y2MzNDk1KSwgQyg2NjYy
MzY2MzFiOWYyNTNiKSwKLSAgICAgQyhkMjhiMzc2M2NkMDJiNmEzKSwgQyg0M2IyNDllNTdjNGQw
YzFiKSwgQygzODg3MTAxYzhhZGVhMTAxKSwKLSAgICAgQyg4YTkzNTVkNGVmYzkxZGYwKSwgQygz
ZTYxMDk0NGNjOWZlY2ZkKSwgQyg1YmY5ZWI2MGIwOGFjMGNlKSwKICAgICAgQygyNmYyYjQ2Myl9
LAogICAgIHtDKDgzMWY0NDhiZGM1NjAwYjMpLCBDKDYyYTI0YmUzMTIwYTY5MTkpLCBDKDFiNDQw
OThhNDFlMDEwZGEpLAotICAgICBDKGRjMDdkZjUzYjk0OWM2YiksIEMoZDJiMTFiMjA4MWFlYjAw
MiksIEMoZDIxMmIwMmMxYjEzZjc3MiksCi0gICAgIEMoYzBiZWQyOTdiNGJlMTkxMiksIEMoZGMw
N2RmNTNiOTQ5YzZiKSwgQyhkMmIxMWIyMDgxYWViMDAyKSwKLSAgICAgQyhkMjEyYjAyYzFiMTNm
NzcyKSwgQyhjMGJlZDI5N2I0YmUxOTEyKSwgQyg2ODJkM2QyYWQzMDRlNGFmKSwKLSAgICAgQyg0
MGU5MTEyYTY1NTQzN2ExKSwgQygyNjhiMDlmN2VlMDk4NDNmKSwgQyg2Yjk2OThkNDM4NTljYTQ3
KSwKICAgICAgQyhiMDQyYzA0Nyl9LAotICAgIHtDKDNlY2E4MDNlNzAzMDQ4OTQpLCBDKGQ4MGRl
NzY3ZTRhOTIwYSksIEMoYTUxY2ZiYjI5MmVmZDUzZCksCi0gICAgIEMoZDE4M2RjZGE1ZjczZWRm
YSksIEMoM2E5M2NiZjQwZjMwMTI4YyksIEMoMWE5MjU0NGQwYjQxZGJkYSksCi0gICAgIEMoYWVj
MmM0YmVlODE5NzVlMSksIEMoZDE4M2RjZGE1ZjczZWRmYSksIEMoM2E5M2NiZjQwZjMwMTI4Yyks
Ci0gICAgIEMoMWE5MjU0NGQwYjQxZGJkYSksIEMoYWVjMmM0YmVlODE5NzVlMSksIEMoNWY5MTgx
NGQxMTI2YmE0YiksCi0gICAgIEMoZjhhYzU3ZWVlODdmY2YxZiksIEMoYzU1YzY0NGE1ZDAwMjNj
ZCksIEMoYWRiNzYxZTgyNzgyNWZmMiksCi0gICAgIEMoZTczYmIwYTgpfSwKKyAgICB7QygzZWNh
ODAzZTcwMzA0ODk0KSwgQyhkODBkZTc2N2U0YTkyMGEpLCBDKGE1MWNmYmIyOTJlZmQ1M2QpLCBD
KGU3M2JiMGE4KX0sCiAgICAge0MoMWI1YTA2M2ZiNGM3ZjlmMSksIEMoMzE4ZGJjMjRhZjY2ZGVl
OSksIEMoMTBlZjdiMzJkNWM3MTlhZiksCi0gICAgIEMoYjE0MGEwMmVmNWM5NzcxMiksIEMoYjdk
MDBlZjA2NWI1MWIzMyksIEMoNjM1MTIxZDUzMjg5N2Q5OCksCi0gICAgIEMoNTMyZGFmMjFiMzEy
YTZkNiksIEMoYjE0MGEwMmVmNWM5NzcxMiksIEMoYjdkMDBlZjA2NWI1MWIzMyksCi0gICAgIEMo
NjM1MTIxZDUzMjg5N2Q5OCksIEMoNTMyZGFmMjFiMzEyYTZkNiksIEMoYzBiMDliNzVkOTQzOTEw
KSwKLSAgICAgQyg4Yzg0ZGZiNWVmMmE4ZTk2KSwgQyhlNWMwNjAzNGIwMzUzNDMzKSwgQygzMTcw
ZmFmMWMzM2E0NWRkKSwKICAgICAgQyg5MWRmZGQ3NSl9LAogICAgIHtDKGEwZjEwMTQ5YTBlNTM4
ZDYpLCBDKDY5ZDAwOGMyMGY4NzQxOWYpLCBDKDQxYjM2Mzc2MTg1YjNlOWUpLAotICAgICBDKDI2
YjY2ODk5NjBjY2Y4MWQpLCBDKDU1ZjIzYjI3YmI5ZWZkOTQpLCBDKDNhMTdmNjE2NmRkNzY1ZGIp
LAotICAgICBDKGM4OTFhOGE2MjkzMWU3ODIpLCBDKDI2YjY2ODk5NjBjY2Y4MWQpLCBDKDU1ZjIz
YjI3YmI5ZWZkOTQpLAotICAgICBDKDNhMTdmNjE2NmRkNzY1ZGIpLCBDKGM4OTFhOGE2MjkzMWU3
ODIpLCBDKDIzODUyZGMzN2RkZDI2MDcpLAotICAgICBDKDhiN2YxYjFlYzg5NzgyOWUpLCBDKGQx
ZDY5NDUyYTU0ZWVkOGEpLCBDKDU2NDMxZjJiZDc2NmVjMjQpLAogICAgICBDKGM4N2Y5NWRlKX0s
CiAgICAge0MoZmI4ZDljNzA2NjBiOTEwYiksIEMoYTQ1YjBjYzM0NzZiZmYxYiksIEMoYjI4ZDE5
OTYxNDRmMDIwNyksCi0gICAgIEMoOThlYzMxMTEzZTVlMzVkMiksIEMoNWU0YWViODUzZjFiOWFh
NyksIEMoYmNmNWM4ZmU0NDY1YjdjOCksCi0gICAgIEMoYjFlYTNhODI0Mzk5NmYxNSksIEMoOThl
YzMxMTEzZTVlMzVkMiksIEMoNWU0YWViODUzZjFiOWFhNyksCi0gICAgIEMoYmNmNWM4ZmU0NDY1
YjdjOCksIEMoYjFlYTNhODI0Mzk5NmYxNSksIEMoY2FiYmNjZWRiNjQwNzU3MSksCi0gICAgIEMo
ZDFlNDBhODRjNDQ1ZWMzYSksIEMoMzMzMDJhYTkwOGNmNDAzOSksIEMoOWYxNWY3OTIxMWI1Y2Rm
OCksCiAgICAgIEMoM2Y1NTM4ZWYpfSwKICAgICB7QygyMzY4MjdiZWFlMjgyYTQ2KSwgQyhlNDM5
NzAyMjExMzljOTQ2KSwgQyg0ZjNhYzZmYWE4MzdhM2FhKSwKLSAgICAgQyg3MWZlYzBmOTcyMjQ4
OTE1KSwgQygyMTcwZWMyMDYxZjI0NTc0KSwgQyg5ZWIzNDZiNmNhYTM2ZTgyKSwKLSAgICAgQygy
OTA4ZjBmZGJjYTQ4ZTczKSwgQyg3MWZlYzBmOTcyMjQ4OTE1KSwgQygyMTcwZWMyMDYxZjI0NTc0
KSwKLSAgICAgQyg5ZWIzNDZiNmNhYTM2ZTgyKSwgQygyOTA4ZjBmZGJjYTQ4ZTczKSwgQyg4MTAx
Yzk5ZjA3YzY0YWJiKSwKLSAgICAgQyhiOWY0YjAyYjFiNmE5NmE3KSwgQyg1ODNhMmIxMGNkMjIy
Zjg4KSwgQygxOTlkYWU0Y2Y5ZGIyNGMpLCBDKDcwZWIxYTFmKX0sCisgICAgIEMoNzBlYjFhMWYp
fSwKICAgICB7QyhjMzg1ZTQzNTEzNmVjZjdjKSwgQyhkOWQxNzM2OGZmNmM0YTA4KSwgQygxYjMx
ZWVkNGU1MjUxYTY3KSwKLSAgICAgQyhkZjAxYTMyMmM0M2E2MjAwKSwgQygyOThiNjVhMTcxNGI1
YTdlKSwgQyg5MzNiODNmMGFlZGYyM2MpLAotICAgICBDKDE1N2JjYjQ0ZDYzZjc2NWEpLCBDKGRm
MDFhMzIyYzQzYTYyMDApLCBDKDI5OGI2NWExNzE0YjVhN2UpLAotICAgICBDKDkzM2I4M2YwYWVk
ZjIzYyksIEMoMTU3YmNiNDRkNjNmNzY1YSksIEMoZDZlOWZjN2EyNzJkOGI1MSksCi0gICAgIEMo
M2VlNTA3M2VmMWE5Yjc3NyksIEMoNjMxNDllMzFmYWMwMmM1OSksIEMoMmY3OTc5ZmY2MzZiYTFk
OCksCiAgICAgIEMoY2ZkNjNiODMpfSwKICAgICB7QyhlM2Y2ODI4YjYwMTcwODZkKSwgQygyMWI0
ZDE5MDA1NTRiM2IwKSwgQyhiZWYzOGJlMTgwOWUyNGYxKSwKLSAgICAgQyhkOTMyNTE3NTg5ODVl
ZTZjKSwgQygzMmE5ZTlmODJiYTJhOTMyKSwgQygzODIyYWFjYWE5NWYzMzI5KSwKLSAgICAgQyhk
YjM0OWIyZjkwYTQ5MGQ4KSwgQyhkOTMyNTE3NTg5ODVlZTZjKSwgQygzMmE5ZTlmODJiYTJhOTMy
KSwKLSAgICAgQygzODIyYWFjYWE5NWYzMzI5KSwgQyhkYjM0OWIyZjkwYTQ5MGQ4KSwgQyg4ZDQ5
MTk0YTg5NGExOWNhKSwKLSAgICAgQyg3OWE3OGIwNmU0MjczOGU2KSwgQyg3ZTBmMWVkYTNkMzkw
YzY2KSwgQygxYzI5MWQ3ZTY0MTEwMGE1KSwKICAgICAgQyg4OTRhNTJlZil9LAogICAgIHtDKDg1
MWZmZjI4NTU2MWRjYTApLCBDKDRkMTI3N2Q3M2NkZjQxNmYpLCBDKDI4Y2NmZmE2MTAxMGViZTIp
LAotICAgICBDKDc3YTRjY2FjZDEzMWQ5ZWUpLCBDKGUxZDA4ZWViMmYwZTI5YWEpLCBDKDcwYjll
MzA1MTM4M2ZhNDUpLAotICAgICBDKDU4MmQwMTIwNDI1Y2FiYSksIEMoNzdhNGNjYWNkMTMxZDll
ZSksIEMoZTFkMDhlZWIyZjBlMjlhYSksCi0gICAgIEMoNzBiOWUzMDUxMzgzZmE0NSksIEMoNTgy
ZDAxMjA0MjVjYWJhKSwgQyhhNzQwZWVmMTg0NmU0NTY0KSwKLSAgICAgQyg1NzJkZGRiNzRhYzNh
ZTAwKSwgQyhmZGI1Y2E5NTc5MTYzYmJkKSwgQyhhNjQ5YjliNzk5YzYxNWQyKSwKICAgICAgQyg5
Y2RlNmE1NCl9LAogICAgIHtDKDYxMTUyYTYzNTk1YTk2ZDkpLCBDKGQxYTNhOTFlZjNhN2JhNDUp
LCBDKDQ0M2I2YmI0YTQ5M2FkMGMpLAotICAgICBDKGExNTQyOTZkMTEzNjJkMDYpLCBDKGQwZjBi
ZjFmMWNiMDJmYzEpLCBDKGNjYjg3ZTA5MzA5ZjkwZDEpLAotICAgICBDKGIyNGE4ZTQ4ODE5MTEx
MDEpLCBDKGExNTQyOTZkMTEzNjJkMDYpLCBDKGQwZjBiZjFmMWNiMDJmYzEpLAotICAgICBDKGNj
Yjg3ZTA5MzA5ZjkwZDEpLCBDKGIyNGE4ZTQ4ODE5MTExMDEpLCBDKDFhNDgxYjQ1Mjg1NTlmNTgp
LAotICAgICBDKGJmODM3YTMxNTA4OTY5OTUpLCBDKDQ5ODllZjZiOTQxYTM3NTcpLCBDKDJlNzI1
YWI3MmQwYjI5NDgpLAogICAgICBDKDZjNDg5OGQ1KX0sCiAgICAge0MoNDQ0NzNlMDNiZTMwNmM4
OCksIEMoMzAwOTc3NjFmODcyNDcyYSksIEMoOWZkMWI2NjliZmFkODJkNyksCi0gICAgIEMoM2Jh
YjE4YjE2NDM5Njc4MyksIEMoNDdlMzg1ZmY5ZDRjMDZmKSwgQygxODA2MjA4MWJmNTU4ZGYpLAot
ICAgICBDKDYzNDE2ZWI2OGYxMDRhMzYpLCBDKDNiYWIxOGIxNjQzOTY3ODMpLCBDKDQ3ZTM4NWZm
OWQ0YzA2ZiksCi0gICAgIEMoMTgwNjIwODFiZjU1OGRmKSwgQyg2MzQxNmViNjhmMTA0YTM2KSwg
Qyg0YWJkYTE1NjBjNDdhYzgwKSwKLSAgICAgQygxZWEwZTYzZGM2NTg3YWVlKSwgQygzM2VjNzlk
OTJlYmMxZGUpLCBDKDk0ZjlkY2NlZjc3MWUwNDgpLCBDKDEzZTE5NzhlKX0sCi0gICAge0MoM2Vh
ZDVmMjFkMzQ0MDU2KSwgQyhmYjY0MjAzOTNjZmIwNWMzKSwgQyg0MDc5MzIzOTRjYmJkMzAzKSwK
LSAgICAgQyhhYzA1OTYxN2Y1OTA2NjczKSwgQyg5NGQ1MGQzZGNkMzA2OWE3KSwgQygyYjI2YzNi
OTJkZWEwZjApLAotICAgICBDKDk5YjczNzRjYzc4ZmMzZmIpLCBDKGFjMDU5NjE3ZjU5MDY2NzMp
LCBDKDk0ZDUwZDNkY2QzMDY5YTcpLAotICAgICBDKDJiMjZjM2I5MmRlYTBmMCksIEMoOTliNzM3
NGNjNzhmYzNmYiksIEMoMWE4ZTNjNzNjZGQ0MGVlOCksCi0gICAgIEMoY2JiNWZjYTA2NzQ3ZjQ1
YiksIEMoY2VlYzQ0MjM4YjI5MTg0MSksIEMoMjhiZjM1Y2NlOWM5MGEyNSksIEMoNTFiNGJhOCl9
LAorICAgICBDKDEzZTE5NzhlKX0sCisgICAge0MoM2VhZDVmMjFkMzQ0MDU2KSwgQyhmYjY0MjAz
OTNjZmIwNWMzKSwgQyg0MDc5MzIzOTRjYmJkMzAzKSwgQyg1MWI0YmE4KX0sCiAgICAge0MoNmFi
YmZkZTM3ZWUwM2I1YiksIEMoODNmZWJmMTg4ZDJjYzExMyksIEMoY2RhN2I2MmQ5NGQ1YjhlZSks
Ci0gICAgIEMoYTQzNzU1OTBiOGFlN2M4MiksIEMoMTY4ZmQ0MmY5ZWNhZTRmZiksIEMoMjNiYmRl
NDNkZTJjYjIxNCksCi0gICAgIEMoYThjMzMzMTEyYTI0M2M4YyksIEMoYTQzNzU1OTBiOGFlN2M4
MiksIEMoMTY4ZmQ0MmY5ZWNhZTRmZiksCi0gICAgIEMoMjNiYmRlNDNkZTJjYjIxNCksIEMoYThj
MzMzMTEyYTI0M2M4YyksIEMoMTBhYzAxMmU4YzUxOGI0OSksCi0gICAgIEMoNjRhNDQ2MDVkOGIy
OTQ1OCksIEMoYTY3ZTcwMWQyYTY3OTA3NSksIEMoM2EzYTIwZjQzZWM5MjMwMyksCiAgICAgIEMo
YjZiMDZlNDApfSwKLSAgICB7Qyg5NDNlN2VkNjNiM2MwODApLCBDKDFlZjIwN2U5NDQ0ZWY3Zjgp
LCBDKGVmNGE5ZjlmOGM2ZjliNGEpLAotICAgICBDKDZiNTRmYzM4ZDZhODQxMDgpLCBDKDMyZjQy
MTJhNDdhNDY2NSksIEMoNmI1YTlhOGY2NGVlMWRhNiksCi0gICAgIEMoOWY3NGU4NmM2ZGE2OTQy
MSksIEMoNmI1NGZjMzhkNmE4NDEwOCksIEMoMzJmNDIxMmE0N2E0NjY1KSwKLSAgICAgQyg2YjVh
OWE4ZjY0ZWUxZGE2KSwgQyg5Zjc0ZTg2YzZkYTY5NDIxKSwgQyg5NDZkZDBjYjMwYzFhMDhlKSwK
LSAgICAgQyhmZGYzNzY5NTY5MDdlYWFhKSwgQyhhNTkwNzRjNmVlYzAzMDI4KSwgQyhiMWEzYWJj
ZjI4M2YzNGFjKSwgQygyNDBhMmYyKX0sCisgICAge0MoOTQzZTdlZDYzYjNjMDgwKSwgQygxZWYy
MDdlOTQ0NGVmN2Y4KSwgQyhlZjRhOWY5ZjhjNmY5YjRhKSwgQygyNDBhMmYyKX0sCiAgICAge0Mo
ZDcyY2UwNTE3MWVmOGExYSksIEMoYzZiZDZiZDg2OTIwMzg5NCksIEMoYzc2MGU2Mzk2NDU1ZDIz
YSksCi0gICAgIEMoZjg2YWYwYjQwZGNjZTdiKSwgQyg4ZDNjMTVkNjEzMzk0ZDNjKSwgQyg0OTFl
NDAwNDkxY2Q0ZWNlKSwKLSAgICAgQyg3YzE5ZDM1MzBlYTM1NDdmKSwgQyhmODZhZjBiNDBkY2Nl
N2IpLCBDKDhkM2MxNWQ2MTMzOTRkM2MpLAotICAgICBDKDQ5MWU0MDA0OTFjZDRlY2UpLCBDKDdj
MTlkMzUzMGVhMzU0N2YpLCBDKDEzNjI5NjNhMWRjMzJhZjkpLAotICAgICBDKGZiOWJjMTE3NjJl
MTM4NWMpLCBDKDllMTY0ZWYxZjUzNzYwODMpLCBDKDZjMTU4MTliNWU4MjhhN2UpLAogICAgICBD
KDVkY2VmYzMwKX0sCiAgICAge0MoNDE4MjgzMmI1MmQ2MzczNSksIEMoMzM3MDk3ZTEyM2VlYTQx
NCksIEMoYjVhNzJjYTA0NTZkZjkxMCksCi0gICAgIEMoN2ViYzAzNDIzNWJjMTIyZiksIEMoZDlh
Nzc4M2Q0ZWRkODA0OSksIEMoNWY4YjA0YTE1YWU0MjM2MSksCi0gICAgIEMoZmMxOTMzNjMzMzY0
NTNkZCksIEMoN2ViYzAzNDIzNWJjMTIyZiksIEMoZDlhNzc4M2Q0ZWRkODA0OSksCi0gICAgIEMo
NWY4YjA0YTE1YWU0MjM2MSksIEMoZmMxOTMzNjMzMzY0NTNkZCksIEMoOWI2YzUwMjI0ZWY4YzRm
OCksCi0gICAgIEMoYmEyMjVjNzk0MmQxNmMzZiksIEMoNmY2ZDU1MjI2YTczYzQxMiksIEMoYWJj
YTA2MWZlMDcyMTUyYSksCiAgICAgIEMoN2E0OGIxMDUpfSwKICAgICB7QyhkNmNkYWU4OTI1ODRh
MmNiKSwgQyg1OGRlMGZhNGVjYTE3ZGNkKSwgQyg0M2RmMzBiOGY1ZjFjYjAwKSwKLSAgICAgQyg5
ZTRlYTVhNDk0MWUwOTdkKSwgQyg1NDdlMDQ4ZDVhOWRhYWJhKSwgQyhlYjZlY2JiMGI4MzFkMTg1
KSwKLSAgICAgQyhlMDE2OGRmNWZhZDBjNjcwKSwgQyg5ZTRlYTVhNDk0MWUwOTdkKSwgQyg1NDdl
MDQ4ZDVhOWRhYWJhKSwKLSAgICAgQyhlYjZlY2JiMGI4MzFkMTg1KSwgQyhlMDE2OGRmNWZhZDBj
NjcwKSwgQyhhZmE5NzA1Zjk4YzJjOTZhKSwKLSAgICAgQyg3NDk0MzZmNDgxMzdhOTZiKSwgQyg3
NTljMDQxZmMyMWRmNDg2KSwgQyhiMjNiZjQwMDEwN2FhMmVjKSwKICAgICAgQyhmZDU1MDA3Yil9
LAogICAgIHtDKDVjOGU5MGJjMjY3YzVlZTQpLCBDKGU5YWUwNDQwNzVkOTkyZDkpLCBDKGYyMzRj
YmZkMWYwYTFlNTkpLAotICAgICBDKGNlMjc0NDUyMTk0NGYxNGMpLCBDKDEwNGY4MDMyZjk5ZGMx
NTIpLCBDKDRlN2Y0MjViZmFjNjdjYTcpLAotICAgICBDKDk0NjFiOTExYTFjNmQ1ODkpLCBDKGNl
Mjc0NDUyMTk0NGYxNGMpLCBDKDEwNGY4MDMyZjk5ZGMxNTIpLAotICAgICBDKDRlN2Y0MjViZmFj
NjdjYTcpLCBDKDk0NjFiOTExYTFjNmQ1ODkpLCBDKDVlNWVjYzcyNmRiOGI2MGQpLAotICAgICBD
KGNjZTY4YjA1ODYwODNiNTEpLCBDKDhhN2Y4ZTU0YTljYmEwZmMpLCBDKDQyZjAxMDE4MWQxNmYw
NDkpLAogICAgICBDKDZiOTU4OTRjKX0sCiAgICAge0MoYmJkN2YzMGFjMzEwYTZmMyksIEMoYjIz
YjU3MGQyNjY2Njg1ZiksIEMoZmIxM2ZiMDhjOTgxNGZlNyksCi0gICAgIEMoNGVlMTA3MDQyZTUx
MjM3NCksIEMoMWUyYzhjMGQxNjA5N2UxMyksIEMoMjEwYzc1MDA5OTVhYTBlNiksCi0gICAgIEMo
NmMxMzE5MDU1NzEwNjQ1NyksIEMoNGVlMTA3MDQyZTUxMjM3NCksIEMoMWUyYzhjMGQxNjA5N2Ux
MyksCi0gICAgIEMoMjEwYzc1MDA5OTVhYTBlNiksIEMoNmMxMzE5MDU1NzEwNjQ1NyksIEMoYTk5
YjMxYzk2Nzc3ZjM4MSksCi0gICAgIEMoODMxMmFlODMwMWQzODZjMCksIEMoZWQ1MDQyYjJhNGZh
OTZhMyksIEMoZDcxZDFiYjIzOTA3ZmU5NyksCiAgICAgIEMoMzM2MGU4MjcpfSwKLSAgICB7Qygz
NmEwOTdhYTQ5NTE5ZDk3KSwgQyg4MjA0MzgwYTczYzQwNjUpLCBDKDc3YzIwMDRiZGQ5ZTI3NmEp
LAotICAgICBDKDZlZTFmODE3Y2UwYjdhZWUpLCBDKGU5ZGNiMzUwN2YwNTk2Y2EpLCBDKDZiYzYz
YzY2NmI1MTAwZTIpLAotICAgICBDKGUwYjA1NmYxODIxNzUyYWYpLCBDKDZlZTFmODE3Y2UwYjdh
ZWUpLCBDKGU5ZGNiMzUwN2YwNTk2Y2EpLAotICAgICBDKDZiYzYzYzY2NmI1MTAwZTIpLCBDKGUw
YjA1NmYxODIxNzUyYWYpLCBDKDhlYTExMTRlNjAyOTI2NzgpLAotICAgICBDKDkwNGI4MGI0NmJl
Y2M3NyksIEMoNDZjZDliYjZlOWRmZjUyZiksIEMoNGM5MWUzYjY5ODM1NTU0MCksIEMoNDUxNzdl
MGIpfSwKLSAgICB7QyhkYzc4Y2IwMzJjNDkyMTcpLCBDKDExMjQ2NDA4M2Y4M2UwM2EpLCBDKDk2
YWU1M2UyODE3MGMwZjUpLAotICAgICBDKGQzNjdmZjU0OTUyYTk1OCksIEMoY2RhZDkzMDY1NzM3
MTE0NyksIEMoYWEyNGRjMmE5NTczZDVmZSksCi0gICAgIEMoZWIxMzZkYWE4OWRhNTExMCksIEMo
ZDM2N2ZmNTQ5NTJhOTU4KSwgQyhjZGFkOTMwNjU3MzcxMTQ3KSwKLSAgICAgQyhhYTI0ZGMyYTk1
NzNkNWZlKSwgQyhlYjEzNmRhYTg5ZGE1MTEwKSwgQyhkZTYyMzAwNWY2ZDQ2MDU3KSwKLSAgICAg
QyhiNTBjMGM5MmI5NWU5YjdmKSwgQyhhOGFhNTQwNTBiODFjOTc4KSwgQyg1NzNmYjVjNzg5NWFm
OWI1KSwKLSAgICAgQyg3YzZmZmZlNCl9LAorICAgIHtDKDM2YTA5N2FhNDk1MTlkOTcpLCBDKDgy
MDQzODBhNzNjNDA2NSksIEMoNzdjMjAwNGJkZDllMjc2YSksIEMoNDUxNzdlMGIpfSwKKyAgICB7
QyhkYzc4Y2IwMzJjNDkyMTcpLCBDKDExMjQ2NDA4M2Y4M2UwM2EpLCBDKDk2YWU1M2UyODE3MGMw
ZjUpLCBDKDdjNmZmZmU0KX0sCiAgICAge0MoNDQxNTkzZTBkYTkyMmRmZSksIEMoOTM2ZWY0NjA2
MTQ2OWIzMiksIEMoMjA0YTE5MjExOTdkZGQ4NyksCi0gICAgIEMoNTBkOGE3MGU3YThkOGY1Niks
IEMoMjU2ZDE1MGFlNzVkYWI3NiksIEMoZTgxZjRjNGExOTg5MDM2YSksCi0gICAgIEMoZDBmOGRi
MzY1ZjlkN2UwMCksIEMoNTBkOGE3MGU3YThkOGY1NiksIEMoMjU2ZDE1MGFlNzVkYWI3NiksCi0g
ICAgIEMoZTgxZjRjNGExOTg5MDM2YSksIEMoZDBmOGRiMzY1ZjlkN2UwMCksIEMoNzUzZDY4NjY3
N2IxNDUyMiksCi0gICAgIEMoOWY3NmUwY2I2ZjJkMGE2NiksIEMoYWIxNGY5NTk4OGVjMGQzOSks
IEMoOTc2MjFkOWRhOWM5ODEyZiksCiAgICAgIEMoYmJjNzhkYTQpfSwKICAgICB7QygyYmEzODgz
ZDcxY2MyMTMzKSwgQyg3MmYyYmJiMzJiZWQxYTNjKSwgQygyN2UxYmQ5NmQ0ODQzMjUxKSwKLSAg
ICAgQyhhOTBmNzYxZThkYjE1NDNhKSwgQyhjMzM5ZTIzYzA5NzAzY2Q4KSwgQyhmMGM2NjI0YzRi
MDk4ZmQzKSwKLSAgICAgQygxYmFlMjA1M2U0MWZhNGQ5KSwgQyhhOTBmNzYxZThkYjE1NDNhKSwg
QyhjMzM5ZTIzYzA5NzAzY2Q4KSwKLSAgICAgQyhmMGM2NjI0YzRiMDk4ZmQzKSwgQygxYmFlMjA1
M2U0MWZhNGQ5KSwgQygzNTg5ZTI3M2MyMmJhMDU5KSwKLSAgICAgQyg2Mzc5ODI0NmU1OTExYTBi
KSwgQygxOGU3MTBlYzI2OGZjNWRjKSwgQyg3MTRhMTIyZGUxZDA3NGYzKSwKICAgICAgQyhjNWMy
NWQzOSl9LAogICAgIHtDKGYyYjZkMmFkZjg0MjM2MDApLCBDKDc1MTRlMmYwMTZhNDg3MjIpLCBD
KDQzMDQ1NzQzYTUwMzk2YmEpLAotICAgICBDKDIzZGFjYjgxMTY1MmFkNGYpLCBDKGM5ODJkYTQ4
MGUwZDRjN2QpLCBDKDNhOWM4ZWQ1YTM5OWQwYTkpLAotICAgICBDKDk1MWI4ZDA4NDY5MWQ0ZTQp
LCBDKDIzZGFjYjgxMTY1MmFkNGYpLCBDKGM5ODJkYTQ4MGUwZDRjN2QpLAotICAgICBDKDNhOWM4
ZWQ1YTM5OWQwYTkpLCBDKDk1MWI4ZDA4NDY5MWQ0ZTQpLCBDKGQ5Zjg3YjQ5ODhjZmYyZjcpLAot
ICAgICBDKDIxN2ExOTFkOTg2YWEzYmMpLCBDKDZhZDIzYzU2YjQ4MDM1MCksIEMoZGQ3ODY3Mzkz
OGNlYjJlNyksIEMoYjZlNWQwNmUpfSwKKyAgICAgQyhiNmU1ZDA2ZSl9LAogICAgIHtDKDM4ZmZm
ZTdmMzY4MGQ2M2MpLCBDKGQ1MTMzMjUyNTVhN2E2ZDEpLCBDKDMxZWQ0Nzc5MGY2Y2E2MmYpLAot
ICAgICBDKGM4MDFmYWFhMGEyZTMzMWYpLCBDKDQ5MWRiYzU4Mjc5YzdmODgpLCBDKDljMDE3ODg0
ODMyMWM5N2EpLAotICAgICBDKDlkOTM0ZjgxNGY0ZDZhM2MpLCBDKGM4MDFmYWFhMGEyZTMzMWYp
LCBDKDQ5MWRiYzU4Mjc5YzdmODgpLAotICAgICBDKDljMDE3ODg0ODMyMWM5N2EpLCBDKDlkOTM0
ZjgxNGY0ZDZhM2MpLCBDKDYwNmEzZTRmYzg3NjMxOTIpLAotICAgICBDKGJjMTVjYjM2YTY3N2Vl
ODQpLCBDKDUyZDU5MDQxNTdlMWZlNzEpLCBDKDE1ODhkZDhiMTE0NWI3OWIpLAogICAgICBDKDYx
Nzg1MDRlKX0sCi0gICAge0MoYjc0NzdiZjBiOWNlMzdjNiksIEMoNjNiMWM1ODBhN2ZkMDJhNCks
IEMoZjY0MzNiOWYxMGE1ZGFjKSwKLSAgICAgQyg2OGRkNzZkYjlkNjRlY2E3KSwgQygzNjI5NzY4
MmI2NGI2NyksIEMoNDJiMTkyZDcxZjQxNGI3YSksCi0gICAgIEMoNzk2OTJjZWY0NGZhMDIwNiks
IEMoNjhkZDc2ZGI5ZDY0ZWNhNyksIEMoMzYyOTc2ODJiNjRiNjcpLAotICAgICBDKDQyYjE5MmQ3
MWY0MTRiN2EpLCBDKDc5NjkyY2VmNDRmYTAyMDYpLCBDKGYwOTc5MjUyZjQ3NzZkMDcpLAotICAg
ICBDKDRiODdjZDRmMWM5YmJmNTIpLCBDKDUxYjg0YmJjNjMxMmM3MTApLCBDKDE1MDcyMGZiZjg1
NDI4YTcpLAotICAgICBDKGJkNGMzNjM3KX0sCisgICAge0MoYjc0NzdiZjBiOWNlMzdjNiksIEMo
NjNiMWM1ODBhN2ZkMDJhNCksIEMoZjY0MzNiOWYxMGE1ZGFjKSwgQyhiZDRjMzYzNyl9LAogICAg
IHtDKDU1YmRiMGU3MWUzZWRlYmQpLCBDKGM3YWI1NjJiY2YwNTY4YmMpLCBDKDQzMTY2MzMyZjll
ZTY4NGYpLAotICAgICBDKGIyZTI1OTY0Y2Q0MDkxMTcpLCBDKGEwMTA1OTlkNjI4N2M0MTIpLCBD
KGZhNWQ2NDYxZTc2OGRkYTIpLAotICAgICBDKGNiM2NlNzRlOGVjNGY5MDYpLCBDKGIyZTI1OTY0
Y2Q0MDkxMTcpLCBDKGEwMTA1OTlkNjI4N2M0MTIpLAotICAgICBDKGZhNWQ2NDYxZTc2OGRkYTIp
LCBDKGNiM2NlNzRlOGVjNGY5MDYpLCBDKDYxMjBhYmZkNTQxYTI2MTApLAotICAgICBDKGFhODhi
MTQ4Y2M5NTc5NGQpLCBDKDI2ODZjYTM1ZGY2NTkwZTMpLCBDKGM2YjAyZDE4NjE2Y2U5NGQpLAog
ICAgICBDKDZlN2FjNDc0KX0sCi0gICAge0MoNzgyZmExYjA4YjQ3NWU3KSwgQyhmYjcxMzg5NTFj
NjFiMjNiKSwgQyg5ODI5MTA1ZTIzNGZiMTFlKSwKLSAgICAgQyg5YThjNDMxZjUwMGVmMDZlKSwg
QyhkODQ4NTgxYTU4MGI2YzEyKSwgQyhmZWNmZTExZTEzYTJiZGI0KSwKLSAgICAgQyg2YzRmYTAy
NzNkN2RiMDhjKSwgQyg5YThjNDMxZjUwMGVmMDZlKSwgQyhkODQ4NTgxYTU4MGI2YzEyKSwKLSAg
ICAgQyhmZWNmZTExZTEzYTJiZGI0KSwgQyg2YzRmYTAyNzNkN2RiMDhjKSwgQyg0ODJmNDNiZjVh
ZTU5ZmNiKSwKLSAgICAgQyhmNjUxZmJjYTEwNWQ3OWU2KSwgQyhmMDlmNzg2OTVkODY1ODE3KSwg
Qyg3YTk5ZDAwOTIwODVjZjQ3KSwKLSAgICAgQygxZmI0YjUxOCl9LAorICAgIHtDKDc4MmZhMWIw
OGI0NzVlNyksIEMoZmI3MTM4OTUxYzYxYjIzYiksIEMoOTgyOTEwNWUyMzRmYjExZSksIEMoMWZi
NGI1MTgpfSwKICAgICB7QyhjNWRjMTliODc2ZDM3YTgwKSwgQygxNWZmY2ZmNjY2Y2ZkNzEwKSwg
QyhlOGMzMGM3MjAwMzEwM2UyKSwKLSAgICAgQyg3ODcwNzY1YjQ3MGIyYzVkKSwgQyg3OGE5MTAz
ZmY5NjBkODIpLCBDKDdiYjUwZmZjOWZhYzc0YjMpLAotICAgICBDKDQ3N2U3MGFiMmIzNDdkYjIp
LCBDKDc4NzA3NjViNDcwYjJjNWQpLCBDKDc4YTkxMDNmZjk2MGQ4MiksCi0gICAgIEMoN2JiNTBm
ZmM5ZmFjNzRiMyksIEMoNDc3ZTcwYWIyYjM0N2RiMiksIEMoYTYyNTIzOGJkZjdjMDdjZiksCi0g
ICAgIEMoMTEyOGQ1MTUxNzQ4MDlmNSksIEMoYjBmMTY0N2U4MmY0NTg3MyksIEMoMTc3OTJkMWM0
ZjIyMmMzOSksCiAgICAgIEMoMzFkMTNkNmQpfSwKICAgICB7Qyg1ZTExNDE3MTFkMmQ2NzA2KSwg
QyhiNTM3ZjZkZWU4ZGU2OTMzKSwgQygzYWYwYTFmYmJlMDI3YzU0KSwKLSAgICAgQyhlYTM0OWRi
YzE2YzJlNDQxKSwgQygzOGE3NDU1YjZhODc3NTQ3KSwgQyg1Zjk3Yjk3NTBlMzY1NDExKSwKLSAg
ICAgQyhlOGNkZTdmOTNhZjQ5YTMpLCBDKGVhMzQ5ZGJjMTZjMmU0NDEpLCBDKDM4YTc0NTViNmE4
Nzc1NDcpLAotICAgICBDKDVmOTdiOTc1MGUzNjU0MTEpLCBDKGU4Y2RlN2Y5M2FmNDlhMyksIEMo
YmExMDE5MjVlYzFmN2UyNiksCi0gICAgIEMoZDVlODRjYWI4MTkyYzcxZSksIEMoZTI1NjQyNzcy
NmZkZDYzMyksIEMoYTRmMzhlMmM2MTE2ODkwZCksCiAgICAgIEMoMjZmYTcyZTMpfSwKLSAgICB7
Qyg3ODJlZGY2ZGEwMDEyMzRmKSwgQyhmNDhjYmQ1YzY2YzQ4ZjMpLCBDKDgwODc1NGQxZTY0ZTJh
MzIpLAotICAgICBDKDVkOWRkZTc3MzUzYjFhNmQpLCBDKDExZjU4YzU0NTgxZmE4YjEpLCBDKGRh
OTBmYTdjMjhjMzc0NzgpLAotICAgICBDKDVlOWEyZWFmYzY3MGE4OGEpLCBDKDVkOWRkZTc3MzUz
YjFhNmQpLCBDKDExZjU4YzU0NTgxZmE4YjEpLAotICAgICBDKGRhOTBmYTdjMjhjMzc0NzgpLCBD
KDVlOWEyZWFmYzY3MGE4OGEpLCBDKGUzNWUxYmMxNzJlMDExZWYpLAotICAgICBDKGJmOTI1NWE0
NDUwYWU3ZmUpLCBDKDU1Zjg1MTk0ZTI2YmM1NWYpLCBDKDRmMzI3ODczZTE0ZDBlNTQpLAotICAg
ICBDKDZhNzQzM2JmKX0sCisgICAge0MoNzgyZWRmNmRhMDAxMjM0ZiksIEMoZjQ4Y2JkNWM2NmM0
OGYzKSwgQyg4MDg3NTRkMWU2NGUyYTMyKSwgQyg2YTc0MzNiZil9LAogICAgIHtDKGQyNjI4NTg0
MmZmMDRkNDQpLCBDKDhmMzhkNzEzNDFlYWNjYTkpLCBDKDVjYTQzNmY0ZGI3YTg4M2MpLAotICAg
ICBDKGJmNDFlNTM3NmI5ZjBlZWMpLCBDKDIyNTJkMjFlYjdlMWMwZTkpLCBDKGY0YjcwYTk3MTg1
NWU3MzIpLAotICAgICBDKDQwYzc2OTVhYTM2NjJhZmQpLCBDKGJmNDFlNTM3NmI5ZjBlZWMpLCBD
KDIyNTJkMjFlYjdlMWMwZTkpLAotICAgICBDKGY0YjcwYTk3MTg1NWU3MzIpLCBDKDQwYzc2OTVh
YTM2NjJhZmQpLCBDKDc3MGZlMTllMTZhYjczYmIpLAotICAgICBDKGQ2MDNlYmRhNjM5M2Q3NDkp
LCBDKGU1OGM2MjQzOWFhNTBkYmQpLCBDKDk2ZDUxZTVhMDJkMmQ3Y2YpLAogICAgICBDKDRlNmRm
NzU4KX0sCiAgICAge0MoYzZhYjgzMDg2NWE2YmFlNiksIEMoNmFhOGU4ZGQ0Yjk4ODE1YyksIEMo
ZWZlMzg0NjcxM2MzNzFlNSksCi0gICAgIEMoYTE5MjRjYmYwYjVmOTIyMiksIEMoN2Y0ODcyMzY5
YzJiNDI1OCksIEMoY2Q2ZGEzMDUzMGYzZWE4OSksCi0gICAgIEMoYjdmOGI5YTcwNGU2Y2VhMSks
IEMoYTE5MjRjYmYwYjVmOTIyMiksIEMoN2Y0ODcyMzY5YzJiNDI1OCksCi0gICAgIEMoY2Q2ZGEz
MDUzMGYzZWE4OSksIEMoYjdmOGI5YTcwNGU2Y2VhMSksIEMoZmEwNmZmNDA0MzNmZDUzNSksCi0g
ICAgIEMoZmIxYzM2ZmU4ZjA3MzdmMSksIEMoYmI3MDUwNTYxMTcxZjgwKSwgQyhiMWJjMjMyMzU5
MzVkODk3KSwgQyhkNTdmNjNlYSl9LAotICAgIHtDKDQ0YjNhMTkyOTIzMjg5MiksIEMoNjFkY2Ew
ZTkxNGZjMjE3KSwgQyhhNjA3Y2MxNDIwOTZiOTY0KSwKLSAgICAgQyhmN2RiYzg0MzNjODliMjc0
KSwgQygyZjVmNzA1ODFjOWI3ZDMyKSwgQygzOWJmNWU1ZmVjODJkY2NhKSwKLSAgICAgQyg4YWRl
NTYzODg5MDFhNjE5KSwgQyhmN2RiYzg0MzNjODliMjc0KSwgQygyZjVmNzA1ODFjOWI3ZDMyKSwK
LSAgICAgQygzOWJmNWU1ZmVjODJkY2NhKSwgQyg4YWRlNTYzODg5MDFhNjE5KSwgQyhjMWM2YTcy
NWNhYWIzZWE5KSwKLSAgICAgQyhjMWM3OTA2YzJmODBiODk4KSwgQyg5YzM4NzFhMDRjYzg4NGU2
KSwgQyhkZjAxODEzY2JiZGYyMTdmKSwKLSAgICAgQyg1MmVmNzNiMyl9LAotICAgIHtDKDRiNjAz
ZDc5MzJhOGRlNGYpLCBDKGZhZTY0YzQ2NGI4YThmNDUpLCBDKDhmYWZhYjc1NjYxZDYwMmEpLAot
ICAgICBDKDhmZmU4NzBlZjRhZGMwODcpLCBDKDY1YmVhMmJlNDFmNTViNTQpLCBDKDgyZjM1MDNm
NjM2YWVmMSksCi0gICAgIEMoNWY3OGEyODIzNzhiNmJiMCksIEMoOGZmZTg3MGVmNGFkYzA4Nyks
IEMoNjViZWEyYmU0MWY1NWI1NCksCi0gICAgIEMoODJmMzUwM2Y2MzZhZWYxKSwgQyg1Zjc4YTI4
MjM3OGI2YmIwKSwgQyg3YmYyNDIyYzBiZWNlZGRiKSwKLSAgICAgQyg5ZDIzOGQ0NzgwMTE0YmQp
LCBDKDdhZDE5ODMxMTkwNjU5N2YpLCBDKGVjOGY4OTJjMDQyMmFjYTMpLCBDKDNjYjM2YzMpfSwK
KyAgICAgQyhkNTdmNjNlYSl9LAorICAgIHtDKDQ0YjNhMTkyOTIzMjg5MiksIEMoNjFkY2EwZTkx
NGZjMjE3KSwgQyhhNjA3Y2MxNDIwOTZiOTY0KSwgQyg1MmVmNzNiMyl9LAorICAgIHtDKDRiNjAz
ZDc5MzJhOGRlNGYpLCBDKGZhZTY0YzQ2NGI4YThmNDUpLCBDKDhmYWZhYjc1NjYxZDYwMmEpLCBD
KDNjYjM2YzMpfSwKICAgICB7Qyg0ZWMwYjU0Y2YxNTY2YWZmKSwgQygzMGQyYzcyNjliMjA2YmY0
KSwgQyg3N2MyMmU4MjI5NWUxMDYxKSwKLSAgICAgQygzZGY5YjA0NDM0NzcxNTQyKSwgQyhmZWRk
Y2U3ODVjY2I2NjFmKSwgQyhhNjQ0YWZmNzE2OTI4Mjk3KSwKLSAgICAgQyhkZDQ2YWVlNzM4MjRi
NGVkKSwgQygzZGY5YjA0NDM0NzcxNTQyKSwgQyhmZWRkY2U3ODVjY2I2NjFmKSwKLSAgICAgQyhh
NjQ0YWZmNzE2OTI4Mjk3KSwgQyhkZDQ2YWVlNzM4MjRiNGVkKSwgQyhiZjhkNzE4NzlkYTI5YjAy
KSwKLSAgICAgQyhmYzgyZGNjYmZjODAyMmEwKSwgQygzMWJmY2QwZDlmNDhkMWQzKSwgQyhjNjRl
ZTI0ZDBlN2I1ZjhiKSwKICAgICAgQyg3MmMzOWJlYSl9LAogICAgIHtDKGVkOGI3YTRiMzQ5NTRm
ZjcpLCBDKDU2NDMyZGUzMWY0ZWU3NTcpLCBDKDg1YmQzYWJhYTU3MmIxNTUpLAotICAgICBDKDdk
MmMzOGE5MjZkYzFiODgpLCBDKDUyNDViOWViNGNkNjc5MWQpLCBDKGZiNTNhYjAzYjlhZDA4NTUp
LAotICAgICBDKDM2NjQwMjZjOGZjNjY5ZDcpLCBDKDdkMmMzOGE5MjZkYzFiODgpLCBDKDUyNDVi
OWViNGNkNjc5MWQpLAotICAgICBDKGZiNTNhYjAzYjlhZDA4NTUpLCBDKDM2NjQwMjZjOGZjNjY5
ZDcpLCBDKDQ1MDI0ZDUwODBiYzE5NiksCi0gICAgIEMoYjIzNmViZWMyY2MyNzQwKSwgQygyNzIz
MWFkMGUzNDQzYmU0KSwgQygxNDU3ODBiNjNmODA5MjUwKSwgQyhhNjVhYTI1Yyl9LAorICAgICBD
KGE2NWFhMjVjKX0sCiAgICAge0MoNWQyOGI0MzY5NDE3NmMyNiksIEMoNzE0Y2M4YmMxMmQwNjBh
ZSksIEMoMzQzNzcyNjI3M2E4M2ZlNiksCi0gICAgIEMoODY0YjFiMjhlYzE2ZWE4NiksIEMoNmE3
OGE1YTQwMzllYzJiOSksIEMoOGU5NTk1MzNlMzVhNzY2KSwKLSAgICAgQygzNDdiN2MyMmI3NWFl
NjVmKSwgQyg4NjRiMWIyOGVjMTZlYTg2KSwgQyg2YTc4YTVhNDAzOWVjMmI5KSwKLSAgICAgQyg4
ZTk1OTUzM2UzNWE3NjYpLCBDKDM0N2I3YzIyYjc1YWU2NWYpLCBDKDUwMDU4OTJiYjYxZTY0N2Mp
LAotICAgICBDKGZlNjQ2NTE5YjRhMTg5NGQpLCBDKGNkODAxMDI2Zjc0YThhNTMpLCBDKDg3MTM0
NjNlOWExYWI5Y2UpLAogICAgICBDKDc0NzQwNTM5KX0sCiAgICAge0MoNmExZWYzNjM5ZTFkMjAy
ZSksIEMoOTE5YmMxYmQxNDVhZDkyOCksIEMoMzBmM2Y3ZTQ4YzI4YTc3MyksCi0gICAgIEMoMmU4
YzQ5ZDdjN2FhYTUyNyksIEMoNWUyMzI4ZmM4NzAxZGI3YyksIEMoODllZjFhZmNhODFmN2RlOCks
Ci0gICAgIEMoYjE4NTdkYjExOTg1ZDI5NiksIEMoMmU4YzQ5ZDdjN2FhYTUyNyksIEMoNWUyMzI4
ZmM4NzAxZGI3YyksCi0gICAgIEMoODllZjFhZmNhODFmN2RlOCksIEMoYjE4NTdkYjExOTg1ZDI5
NiksIEMoMTc3NjNkNjk1ZjYxNjExNSksCi0gICAgIEMoYjhmN2JmMWZjZGM4MzIyYyksIEMoY2Yw
YzYxOTM4YWIwN2EyNyksIEMoMTEyMmQzZTZlZGI0ZTg2NiksCiAgICAgIEMoYzNhZTNjMjYpfSwK
LSAgICB7QygxNTlmNGQ5ZTAzMDdiMTExKSwgQygzZTE3OTE0YTU2NzVhMGMpLCBDKGFmODQ5YmQ0
MjUwNDdiNTEpLAotICAgICBDKDNiNjllZGFkZjM1NzQzMmIpLCBDKDNhMmUzMTFjMTIxZTZiZjIp
LCBDKDM4MGZhZDFlMjg4ZDU3ZTUpLAotICAgICBDKGJmN2M3ZThlZjBlM2I4M2EpLCBDKDNiNjll
ZGFkZjM1NzQzMmIpLCBDKDNhMmUzMTFjMTIxZTZiZjIpLAotICAgICBDKDM4MGZhZDFlMjg4ZDU3
ZTUpLCBDKGJmN2M3ZThlZjBlM2I4M2EpLCBDKDkyOTY2ZDVmNDM1NmFlOWIpLAotICAgICBDKDJh
MDNmYzY2YzRkNmMwMzYpLCBDKDI1MTZkOGJkZGIwZDUyNTkpLCBDKGIzZmZlOTczN2ZmNTA5MCks
IEMoZjI5ZGI4YTIpfSwKKyAgICB7QygxNTlmNGQ5ZTAzMDdiMTExKSwgQygzZTE3OTE0YTU2NzVh
MGMpLCBDKGFmODQ5YmQ0MjUwNDdiNTEpLCBDKGYyOWRiOGEyKX0sCiAgICAge0MoY2MwYTg0MDcy
NWE3ZTI1YiksIEMoNTdjNjk0NTQzOTZlMTkzYSksIEMoOTc2ZWFmN2VlZTBiNDU0MCksCi0gICAg
IEMoY2Q3YTQ2ODUwYjk1ZTkwMSksIEMoYzU3ZjdkMDYwZGRhMjQ2ZiksIEMoNmI5NDA2ZWFkNjQw
NzliZiksCi0gICAgIEMoMTFiMjhlMjBhNTczYjdiZCksIEMoY2Q3YTQ2ODUwYjk1ZTkwMSksIEMo
YzU3ZjdkMDYwZGRhMjQ2ZiksCi0gICAgIEMoNmI5NDA2ZWFkNjQwNzliZiksIEMoMTFiMjhlMjBh
NTczYjdiZCksIEMoMmQ2ZGIzNTZlOTM2OWFjZSksCi0gICAgIEMoZGMwYWZlMTBmYmExOTMpLCBD
KDVjZGIxMDg4NWRiYmZjZSksIEMoNWM3MDBlMjA1NzgyZTM1YSksIEMoMWVmNGNiZjQpfSwKKyAg
ICAgQygxZWY0Y2JmNCl9LAogICAgIHtDKGEyYjI3ZWUyMmY2M2MzZjEpLCBDKDllYmRlMGNlMWIz
OTc2YjIpLCBDKDJmZTZhOTJhMjU3YWYzMDgpLAotICAgICBDKDhjMWRmOTI3YTkzMGFmNTkpLCBD
KGE0NjJmNDQyM2M5ZTM4NGUpLCBDKDIzNjU0MjI1NWIyYWQ4ZDkpLAotICAgICBDKDU5NWQyMDFh
MmMxOWQ1YmMpLCBDKDhjMWRmOTI3YTkzMGFmNTkpLCBDKGE0NjJmNDQyM2M5ZTM4NGUpLAotICAg
ICBDKDIzNjU0MjI1NWIyYWQ4ZDkpLCBDKDU5NWQyMDFhMmMxOWQ1YmMpLCBDKDIyYzg3ZDQ2MDRh
NjdmMyksCi0gICAgIEMoNTg1YTA2ZWI0YmM0NGM0ZiksIEMoYjQxNzVhN2FjN2VhYmNkOCksIEMo
YTQ1N2QzZWViYTE0YWI4YyksCiAgICAgIEMoYTliZTZjNDEpfSwKLSAgICB7QyhkOGYyZjIzNDg5
OWJjYWIzKSwgQyhiMTBiMDM3Mjk3YzNhMTY4KSwgQyhkZWJlYTJjNTEwY2VkYTdmKSwKLSAgICAg
Qyg5NDk4ZmVmYjg5MDI4N2NlKSwgQyhhZTY4YzJiZTViMWE2OWE2KSwgQyg2MTg5ZGZiYTM0ZWQ2
NTZjKSwKLSAgICAgQyg5MTY1OGY5NTgzNmU1MjA2KSwgQyg5NDk4ZmVmYjg5MDI4N2NlKSwgQyhh
ZTY4YzJiZTViMWE2OWE2KSwKLSAgICAgQyg2MTg5ZGZiYTM0ZWQ2NTZjKSwgQyg5MTY1OGY5NTgz
NmU1MjA2KSwgQyhjMGJiNGZmZjMyYWVjZDRkKSwKLSAgICAgQyg5NDEyNWY1MDVhNTBlZWY5KSwg
Qyg2YWM0MDZlN2NmYmNlNWJiKSwgQygzNDRhNGIxZGNkYjdmNWQ4KSwgQyhmYTMxODAxKX0sCisg
ICAge0MoZDhmMmYyMzQ4OTliY2FiMyksIEMoYjEwYjAzNzI5N2MzYTE2OCksIEMoZGViZWEyYzUx
MGNlZGE3ZiksIEMoZmEzMTgwMSl9LAogICAgIHtDKDU4NGYyODU0Mzg2NDg0NGYpLCBDKGQ3Y2Vl
OWZjMmQ0NmYyMGQpLCBDKGEzOGRjYTU2NTczODcyMDUpLAotICAgICBDKDdhMGI2ZGJhYjlhMTRl
NjkpLCBDKGM2ZDBhOWQ2YjBlMzFhYzQpLCBDKGE2NzRkODU4MTJjN2NmNiksCi0gICAgIEMoNjM1
MzhjMDM1MTA0OTk0MCksIEMoN2EwYjZkYmFiOWExNGU2OSksIEMoYzZkMGE5ZDZiMGUzMWFjNCks
Ci0gICAgIEMoYTY3NGQ4NTgxMmM3Y2Y2KSwgQyg2MzUzOGMwMzUxMDQ5OTQwKSwgQyg5NzEwZTVm
MGJjOTNkMWQpLAotICAgICBDKGMyYmVhNWJkN2M1NGRkZDQpLCBDKDQ4NzM5YWYyYmVkMGQzMmQp
LCBDKGJhMmM0ZTA5ZTIxZmJhODUpLAogICAgICBDKDgzMzFjNWQ4KX0sCi0gICAge0MoYTk0YmU0
NmRkOWFhNDFhZiksIEMoYTU3ZTViNzcyM2QzZjliZCksIEMoMzRiZjg0NWE1MmZkMmYpLAotICAg
ICBDKDg0M2I1ODQ2M2M4ZGYwYWUpLCBDKDc0YjI1ODMyNGU5MTYwNDUpLCBDKGJkZDczNTMyMzBl
YjJiMzgpLAotICAgICBDKGZhZDMxZmNlZDdhYmFkZTUpLCBDKDg0M2I1ODQ2M2M4ZGYwYWUpLCBD
KDc0YjI1ODMyNGU5MTYwNDUpLAotICAgICBDKGJkZDczNTMyMzBlYjJiMzgpLCBDKGZhZDMxZmNl
ZDdhYmFkZTUpLCBDKDI0MzZhZWFmYjAwNDZmODUpLAotICAgICBDKDY1YmM5YWY5ZTVlMzMxNjEp
LCBDKDkyNzMzYjFiM2FlOTA2MjgpLCBDKGY0ODE0M2VhZjc4YTdhODkpLAotICAgICBDKGU5ODc2
ZGI4KX0sCisgICAge0MoYTk0YmU0NmRkOWFhNDFhZiksIEMoYTU3ZTViNzcyM2QzZjliZCksIEMo
MzRiZjg0NWE1MmZkMmYpLCBDKGU5ODc2ZGI4KX0sCiAgICAge0MoOWE4N2JlYTIyNzQ5MWQyMCks
IEMoYTQ2ODY1N2UyYjljNDNlNyksIEMoYWY5YmE2MGRiOGQ4OWVmNyksCi0gICAgIEMoY2M3NmY0
MjllYTdhMTJiYiksIEMoNWYzMGVhZjJiYjE0ODcwYSksIEMoNDM0ZTgyNGNiM2UwY2QxMSksCi0g
ICAgIEMoNDMxYTRkMzgyZTM5ZDE2ZSksIEMoY2M3NmY0MjllYTdhMTJiYiksIEMoNWYzMGVhZjJi
YjE0ODcwYSksCi0gICAgIEMoNDM0ZTgyNGNiM2UwY2QxMSksIEMoNDMxYTRkMzgyZTM5ZDE2ZSks
IEMoOWU1MWY5MTNjNDc3M2E4KSwKLSAgICAgQygzMmFiMTkyNTgyM2QwYWRkKSwgQyg5OWM2MWI1
NGMxZDhmNjlkKSwgQygzOGNmYjgwZjAyYjQzYjFmKSwKICAgICAgQygyN2IwNjA0ZSl9LAogICAg
IHtDKDI3Njg4YzI0OTU4ZDFhNWMpLCBDKGUzYjRhMWM5NDI5Y2YyNTMpLCBDKDQ4YTk1ODExZjcw
ZDY0YmMpLAotICAgICBDKDMyODA2MzIyOWRiMjI4ODQpLCBDKDY3ZTljOTVmOGJhOTYwMjgpLCBD
KDdjNmJmMDFjNjA0MzYwNzUpLAotICAgICBDKGZhNTUxNjFlN2Q5MDMwYjIpLCBDKDMyODA2MzIy
OWRiMjI4ODQpLCBDKDY3ZTljOTVmOGJhOTYwMjgpLAotICAgICBDKDdjNmJmMDFjNjA0MzYwNzUp
LCBDKGZhNTUxNjFlN2Q5MDMwYjIpLCBDKGRhZGJjMmYwZGFiOTE2ODEpLAotICAgICBDKGRhMzlk
N2E0OTM0Y2ExMSksIEMoMTYyZTg0NWQyNGMxYjQ1YyksIEMoZWI1YjlkY2Q4YzZlZDMxYiksIEMo
ZGNlYzA3ZjIpfSwKKyAgICAgQyhkY2VjMDdmMil9LAogICAgIHtDKDVkMWQzNzc5MGExODczYWQp
LCBDKGVkOWNkNGJjYzVmYTEwOTApLCBDKGNlNTFjZGUwNWQ4Y2Q5NmEpLAotICAgICBDKGY3MmMy
NmU2MjQ0MDdlNjYpLCBDKGEwZWI1NDFiZGJjNmQ0MDkpLCBDKGMzZjQwYTJmNDBiM2IyMTMpLAot
ICAgICBDKDZhNzg0ZGU2ODc5NDQ5MmQpLCBDKGY3MmMyNmU2MjQ0MDdlNjYpLCBDKGEwZWI1NDFi
ZGJjNmQ0MDkpLAotICAgICBDKGMzZjQwYTJmNDBiM2IyMTMpLCBDKDZhNzg0ZGU2ODc5NDQ5MmQp
LCBDKDEwYTM4YTIzZGJlZjc5MzcpLAotICAgICBDKDZhNTU2MGY4NTMyNTIyNzgpLCBDKGMzMzg3
YmJmM2M3YjgyYmEpLCBDKGZiZWU3YzEyZWIwNzI4MDUpLAogICAgICBDKGNmZjBhODJhKX0sCiAg
ICAge0MoMWYwM2ZkMThiNzExZWVhOSksIEMoNTY2ZDg5YjE5NDZkMzgxYSksIEMoNmU5NmU4M2Zj
OTI1NjNhYiksCi0gICAgIEMoNDA1ZjY2Y2Y4Y2FlMWEzMiksIEMoZDcyNjE3NDBkOGYxOGNlNiks
IEMoZmVhM2FmNjRhNDEzZDBiMiksCi0gICAgIEMoZDY0ZDE4MTBlODM1MjBmZSksIEMoNDA1ZjY2
Y2Y4Y2FlMWEzMiksIEMoZDcyNjE3NDBkOGYxOGNlNiksCi0gICAgIEMoZmVhM2FmNjRhNDEzZDBi
MiksIEMoZDY0ZDE4MTBlODM1MjBmZSksIEMoZTEzMzRhMDBhNTgwYzZlOCksCi0gICAgIEMoNDU0
MDQ5ZTFiNTJjMTVmKSwgQyg4ODk1ZDgyM2Q5Nzc4MjQ3KSwgQyhlZmE3ZjJlODhiODI2NjE4KSwg
QyhmZWM4MzYyMSl9LAotICAgIHtDKGYwMzE2ZjI4NmNmNTI3YjYpLCBDKGY4NGMyOTUzOGRlMWFh
NWEpLCBDKDc2MTJlZDNjOTIzZDRhNzEpLAotICAgICBDKGQ0ZWNjZWJlOTM5M2VlOGEpLCBDKDJl
Yjc4NjdjMjMxOGNjNTkpLCBDKDFjZTYyMWZkNzAwZmUzOTYpLAotICAgICBDKDY4NjQ1MGQ3YTM0
Njg3OGEpLCBDKGQ0ZWNjZWJlOTM5M2VlOGEpLCBDKDJlYjc4NjdjMjMxOGNjNTkpLAotICAgICBD
KDFjZTYyMWZkNzAwZmUzOTYpLCBDKDY4NjQ1MGQ3YTM0Njg3OGEpLCBDKDc1YTVmMzc1NzlmOGI0
Y2IpLAotICAgICBDKDUwMGNjMTZlYjY1NDFkYzcpLCBDKGI3YjAyMzE3YjUzOWQ5YTYpLCBDKDM1
MTlkZGZmNWJjMjBhMjkpLCBDKDc0M2Q4ZGMpfSwKKyAgICAgQyhmZWM4MzYyMSl9LAorICAgIHtD
KGYwMzE2ZjI4NmNmNTI3YjYpLCBDKGY4NGMyOTUzOGRlMWFhNWEpLCBDKDc2MTJlZDNjOTIzZDRh
NzEpLCBDKDc0M2Q4ZGMpfSwKICAgICB7QygyOTcwMDhiY2IzZTM0MDFkKSwgQyg2MWE4ZTQwN2Y4
MmIwYzY5KSwgQyhhNGEzNWJmZjA1MjRmYTBlKSwKLSAgICAgQyg3YTYxZDhmNTUyYTUzNDQyKSwg
Qyg4MjFkMWQ4ZDhjZmFjZjM1KSwgQyg3Y2MwNjM2MWI4NmQwNTU5KSwKLSAgICAgQygxMTliNjE3
YThjMmJlMTk5KSwgQyg3YTYxZDhmNTUyYTUzNDQyKSwgQyg4MjFkMWQ4ZDhjZmFjZjM1KSwKLSAg
ICAgQyg3Y2MwNjM2MWI4NmQwNTU5KSwgQygxMTliNjE3YThjMmJlMTk5KSwgQygyOTk2NDg3ZGE2
NzIxNzU5KSwKLSAgICAgQyg2MWE5MDEzNzYwNzBiOTFkKSwgQyhkODhkZWUxMmFlOWM5YjNjKSwg
Qyg1NjY1NDkxYmUxZmE1M2E3KSwKICAgICAgQyg2NGQ0MWQyNil9LAotICAgIHtDKDQzYzYyNTI0
MTFlZTNiZSksIEMoYjRjYTFiODA3Nzc3NzE2OCksIEMoMjc0NmRjM2Y3ZGExNzM3ZiksCi0gICAg
IEMoMjI0N2E0YjIwNThkMWM1MCksIEMoMWIzZmExODRiMWQ3YmNjMCksIEMoZGViODU2MTM5OTVj
MDZlZCksCi0gICAgIEMoY2JlMWQ5NTc0ODVhM2NjZCksIEMoMjI0N2E0YjIwNThkMWM1MCksIEMo
MWIzZmExODRiMWQ3YmNjMCksCi0gICAgIEMoZGViODU2MTM5OTVjMDZlZCksIEMoY2JlMWQ5NTc0
ODVhM2NjZCksIEMoZGZlMjQxZjhmMzNjOTZiNiksCi0gICAgIEMoNjU5N2ViMDUwMTljMjEwOSks
IEMoZGEzNDRiMmE2M2EyMTljZiksIEMoNzliOGUzODg3NjEyMzc4YSksCi0gICAgIEMoYWNkOTBj
ODEpfSwKKyAgICB7Qyg0M2M2MjUyNDExZWUzYmUpLCBDKGI0Y2ExYjgwNzc3NzcxNjgpLCBDKDI3
NDZkYzNmN2RhMTczN2YpLCBDKGFjZDkwYzgxKX0sCiAgICAge0MoY2UzOGE5YTU0ZmFkNjU5OSks
IEMoNmQ2ZjRhOTBiOWU4NzU1ZSksIEMoYzNlY2M3OWZmMTA1ZGUzZiksCi0gICAgIEMoZThiOWVl
OTZlZmEyZDBlKSwgQyg5MDEyMjkwNWM0YWI1MzU4KSwgQyg4NGY4MGM4MzJkNzE5NzljKSwKLSAg
ICAgQygyMjkzMTBmM2ZmYmJmNGM2KSwgQyhlOGI5ZWU5NmVmYTJkMGUpLCBDKDkwMTIyOTA1YzRh
YjUzNTgpLAotICAgICBDKDg0ZjgwYzgzMmQ3MTk3OWMpLCBDKDIyOTMxMGYzZmZiYmY0YzYpLCBD
KGNjOWViNDIxMDBjZDYzYTcpLAotICAgICBDKDdhMjgzZjJmM2RhN2I5ZiksIEMoMzU5YjA2MWQz
MTRlN2E3MiksIEMoZDBkOTU5NzIwMDI4ODYyKSwgQyg3Yzc0NmE0Yil9LAotICAgIHtDKDI3MGE5
MzA1ZmVmNzBjZiksIEMoNjAwMTkzOTk5ZDg4NGYzYSksIEMoZjRkNDllYWUwOWVkOGExKSwKLSAg
ICAgQygyZTA5MWI4NTY2MGYxMjk4KSwgQyhiZmUzN2ZhZTFjZGQ2NGM5KSwgQyg4ZGRkZmJhYjkz
MGY2NDk0KSwKLSAgICAgQygyY2NmNGIwOGY1ZDQxN2EpLCBDKDJlMDkxYjg1NjYwZjEyOTgpLCBD
KGJmZTM3ZmFlMWNkZDY0YzkpLAotICAgICBDKDhkZGRmYmFiOTMwZjY0OTQpLCBDKDJjY2Y0YjA4
ZjVkNDE3YSksIEMoMzY1YzJlZTg1NTgyZmU2KSwKLSAgICAgQyhkZWUwMjdiY2QzNmRiNjJhKSwg
QyhiMTUwOTk0ZDNjN2U1ODM4KSwgQyhmZGZkMWEwZTY5MmU0MzZkKSwKLSAgICAgQyhiMTA0N2U5
OSl9LAorICAgICBDKDdjNzQ2YTRiKX0sCisgICAge0MoMjcwYTkzMDVmZWY3MGNmKSwgQyg2MDAx
OTM5OTlkODg0ZjNhKSwgQyhmNGQ0OWVhZTA5ZWQ4YTEpLCBDKGIxMDQ3ZTk5KX0sCiAgICAge0Mo
ZTcxYmU3YzI4ZTg0ZDExOSksIEMoZWI2YWNlNTk5MzI3MzZlNiksIEMoNzBjNDM5NzgwN2JhMTJj
NSksCi0gICAgIEMoN2E5ZDc3NzgxYWM1MzUwOSksIEMoNDQ4OWMzY2NmZGEzYjM5YyksIEMoZmE3
MjJkNGYyNDNiNDk2NCksCi0gICAgIEMoMjVmMTU4MDBiZmZkZDEyMiksIEMoN2E5ZDc3NzgxYWM1
MzUwOSksIEMoNDQ4OWMzY2NmZGEzYjM5YyksCi0gICAgIEMoZmE3MjJkNGYyNDNiNDk2NCksIEMo
MjVmMTU4MDBiZmZkZDEyMiksIEMoZWQ4NWU0MTU3ZmJkMzI5NyksCi0gICAgIEMoYWFiMTk2NzIy
N2Q1OWVmZCksIEMoMjE5OTYzMTIxMmViMzgzOSksIEMoM2U0YzE5MzU5YWFlMWNjMiksCiAgICAg
IEMoZDFmZDEwNjgpfSwKICAgICB7QyhiNWI1OGMyNGI1M2FhYTE5KSwgQyhkMmE2YWIwNzczZGQ4
OTdmKSwgQyhlZjc2MmZlMDFlY2I1Yjk3KSwKLSAgICAgQyg5ZGVlZmJjZmE0Y2FiMWYxKSwgQyhi
NThmNTk0M2NkMjQ5MmJhKSwgQyhhOTZkY2M0ZDFmNDc4MmE3KSwKLSAgICAgQygxMDJiNjJhODIz
MDlkZGU1KSwgQyg5ZGVlZmJjZmE0Y2FiMWYxKSwgQyhiNThmNTk0M2NkMjQ5MmJhKSwKLSAgICAg
QyhhOTZkY2M0ZDFmNDc4MmE3KSwgQygxMDJiNjJhODIzMDlkZGU1KSwgQygzNWZlNTI2ODQ3NjNi
MzM4KSwKLSAgICAgQyhhZmUyNjE2NjUxZWFhZDFmKSwgQyg0M2UzODcxNWJkZmEwNWU3KSwgQyg4
M2M5YmE4M2I1ZWM0YTQwKSwKICAgICAgQyg1NjQ4NjA3Nyl9LAogICAgIHtDKDQ0ZGQ1OWJkMzAx
OTk1Y2YpLCBDKDNjY2FiZDc2NDkzYWRhMWEpLCBDKDU0MGRiNGM4N2Q1NWVmMjMpLAotICAgICBD
KGNmYzZkN2FkZGEzNTc5NyksIEMoMTRjN2QxZjMyMzMyY2YwMyksIEMoMmQ1NTNmZmJmZjNiZTk5
ZCksCi0gICAgIEMoYzkxYzRlZTBjYjU2MzE4MiksIEMoY2ZjNmQ3YWRkYTM1Nzk3KSwgQygxNGM3
ZDFmMzIzMzJjZjAzKSwKLSAgICAgQygyZDU1M2ZmYmZmM2JlOTlkKSwgQyhjOTFjNGVlMGNiNTYz
MTgyKSwgQyg5YWE1ZTUwN2Y0OTEzNmYwKSwKLSAgICAgQyg3NjBjNWRkMWE4MmM0ODg4KSwgQyhi
ZWVhN2U5NzRhMWNmYjVjKSwgQyg2NDBiMjQ3Nzc0ZmU0YmY3KSwKICAgICAgQyg2MDY5YmU4MCl9
LAotICAgIHtDKGI0ZDQ3ODllYjZmMjYzMGIpLCBDKGJmNjk3MzI2M2NlOGVmMGUpLCBDKGQxYzc1
YzUwODQ0YjlkMyksCi0gICAgIEMoYmNlOTA1OTAwYzFlYzZlYSksIEMoYzMwZjMwNGY0MDQ1NDg3
ZCksIEMoYTVjNTUwMTY2YjNhMTQyYiksCi0gICAgIEMoMmY0ODJiNGUzNTMyNzI4NyksIEMoYmNl
OTA1OTAwYzFlYzZlYSksIEMoYzMwZjMwNGY0MDQ1NDg3ZCksCi0gICAgIEMoYTVjNTUwMTY2YjNh
MTQyYiksIEMoMmY0ODJiNGUzNTMyNzI4NyksIEMoMTViMjFkZGRkZjM1NTQzOCksCi0gICAgIEMo
NDk2NDcxZmEzMDA2YmFiKSwgQygyYThmZDQ1OGQwNmMxYTMyKSwgQyhkYjkxZThhZTgxMmYwYjhk
KSwgQygyMDc4MzU5Yil9LAorICAgIHtDKGI0ZDQ3ODllYjZmMjYzMGIpLCBDKGJmNjk3MzI2M2Nl
OGVmMGUpLCBDKGQxYzc1YzUwODQ0YjlkMyksIEMoMjA3ODM1OWIpfSwKICAgICB7QygxMjgwNzgz
M2M0NjM3MzdjKSwgQyg1OGU5MjdlYTNiMzc3NmI0KSwgQyg3MmRkMjBlZjFjMmY4YWQwKSwKLSAg
ICAgQyg5MTBiNjEwZGU3YTk2N2JmKSwgQyg4MDFiYzg2MjEyMGY2YmY1KSwgQyg5NjUzZWZlZWQ1
ODk3NjgxKSwKLSAgICAgQyhmNTM2N2ZmODNlOWViYmIzKSwgQyg5MTBiNjEwZGU3YTk2N2JmKSwg
Qyg4MDFiYzg2MjEyMGY2YmY1KSwKLSAgICAgQyg5NjUzZWZlZWQ1ODk3NjgxKSwgQyhmNTM2N2Zm
ODNlOWViYmIzKSwgQyhjZjU2ZDQ4OWFmZDFiMGJmKSwKLSAgICAgQyhjN2M3OTM3MTVjYWUzZGU4
KSwgQyg2MzFmOTFkNjRhYmFlNDdjKSwgQyg1ZjFmNDJmYjE0YTQ0NGEyKSwKICAgICAgQyg5ZWEy
MTAwNCl9LAogICAgIHtDKGU4ODQxOTkyMmI4NzE3NmYpLCBDKGJjZjMyZjQxYTdkZGJmNmYpLCBD
KGQ2ZWJlZmQ4MDg1YzFhMGYpLAotICAgICBDKGQxZDQ0ZmU5OTQ1MWVmNzIpLCBDKGVjOTUxYmE4
ZTUxZTM1NDUpLCBDKGMwY2E4NmIzNjA3NDZlOTYpLAotICAgICBDKGFhNjc5Y2MwNjZhODA0MGIp
LCBDKGQxZDQ0ZmU5OTQ1MWVmNzIpLCBDKGVjOTUxYmE4ZTUxZTM1NDUpLAotICAgICBDKGMwY2E4
NmIzNjA3NDZlOTYpLCBDKGFhNjc5Y2MwNjZhODA0MGIpLCBDKDUxMDY1ODYxZWNlNmZmYzEpLAot
ICAgICBDKDc2Nzc3MzY4YTI5OTdlMTEpLCBDKDg3ZjI3OGY0NjczMTEwMGMpLCBDKGJiYWE0MTQw
YmRiYTQ1MjcpLAogICAgICBDKDljOWNmZTg4KX0sCiAgICAge0MoMTA1MTkxZTBlYzhmN2Y2MCks
IEMoNTkxOGRiZmNjYTk3MWU3OSksIEMoNmIyODVjOGE5NDQ3NjdiOSksCi0gICAgIEMoZDNlODZh
YzRmNWVjY2ZhNCksIEMoZTUzOTlkZjJiMTA2Y2ExKSwgQyg4MTRhYWRmYWNkMjE3ZjFkKSwKLSAg
ICAgQygyNzU0ZTNkZWYxYzQwNWE5KSwgQyhkM2U4NmFjNGY1ZWNjZmE0KSwgQyhlNTM5OWRmMmIx
MDZjYTEpLAotICAgICBDKDgxNGFhZGZhY2QyMTdmMWQpLCBDKDI3NTRlM2RlZjFjNDA1YTkpLCBD
KDk5MjkwMzIzYjlmMDZlNzQpLAotICAgICBDKGE5NzgyZTA0M2YyNzE0NjEpLCBDKDEzYzhiM2I4
YzI3NWE4NjApLCBDKDYwMzhkNjIwZTU4MWU5ZTcpLAogICAgICBDKGI3MGE2ZGRkKX0sCiAgICAg
e0MoYTViODhiZjczOTlhOWYwNyksIEMoZmNhM2RkZmQ5NjQ2MWNjNCksIEMoZWJlNzM4ZmRjMDI4
MmZjNiksCi0gICAgIEMoNjlhZmJjODAwNjA2ZDBmYiksIEMoNjEwNGI5N2E5ZGIxMmRmNyksIEMo
ZmNjMDkxOThiYjkwYmY5ZiksCi0gICAgIEMoYzVlMDc3ZTQxYTY1YmE5MSksIEMoNjlhZmJjODAw
NjA2ZDBmYiksIEMoNjEwNGI5N2E5ZGIxMmRmNyksCi0gICAgIEMoZmNjMDkxOThiYjkwYmY5Ziks
IEMoYzVlMDc3ZTQxYTY1YmE5MSksIEMoZGIyNjE4MzVlZThhYTA4ZSksCi0gICAgIEMoZGIwZWU2
NjJlNTc5NmRjOSksIEMoZmMxODgwZWNlYzQ5OWU1ZiksIEMoNjQ4ODY2ZmJlMTUwMjAzNCksCiAg
ICAgIEMoZGVhMzcyOTgpfSwKICAgICB7QyhkMDhjM2Y1NzQ3ZDg0ZjUwKSwgQyg0ZTcwOGIyN2Qx
YjZmOGFjKSwgQyg3MGY3MGZkNzM0ODg4NjA2KSwKLSAgICAgQyg5MDlhZTAxOWQ3NjFkMDE5KSwg
QygzNjhiZjRhYWIxYjg2ZWY5KSwgQygzMDhiZDYxNmQ1NDYwMjM5KSwKLSAgICAgQyg0ZmQzMzI2
OWY3Njc4M2VhKSwgQyg5MDlhZTAxOWQ3NjFkMDE5KSwgQygzNjhiZjRhYWIxYjg2ZWY5KSwKLSAg
ICAgQygzMDhiZDYxNmQ1NDYwMjM5KSwgQyg0ZmQzMzI2OWY3Njc4M2VhKSwgQyg3ZDUzYjM3YzE5
NzEzZWFiKSwKLSAgICAgQyg2YmJhNmVhYmRhNThhODk3KSwgQyg5MWFiYjUwZWZjMTE2MDQ3KSwg
Qyg0ZTkwMmYzNDdlMGUwZTM1KSwKICAgICAgQyg4ZjQ4MDgxOSl9LAotICAgIHtDKDJmNzJkMTJh
NDAwNDRiNGIpLCBDKDg4OTY4OTM1MmZlYzUzZGUpLCBDKGYwM2U2YWQ4N2ViMmYzNiksCi0gICAg
IEMoZWY3OWYyOGQ4NzRiOWUyZCksIEMoYjUxMjA4OWU4ZTYzYjc2YyksIEMoMjRkYzA2ODMzYmYx
OTNhOSksCi0gICAgIEMoM2MyMzMwOGJhOGU5OWQ3ZSksIEMoZWY3OWYyOGQ4NzRiOWUyZCksIEMo
YjUxMjA4OWU4ZTYzYjc2YyksCi0gICAgIEMoMjRkYzA2ODMzYmYxOTNhOSksIEMoM2MyMzMwOGJh
OGU5OWQ3ZSksIEMoNWNlZmY3Yjg1Y2FjZWZiNyksCi0gICAgIEMoZWYzOTAzMzg4OThjZDczKSwg
QyhiMTI5NjdkN2QyMjU0ZjU0KSwgQyhkZTg3NGNiZDhhZWY3Yjc1KSwgQygzMGIzYjE2KX0sCisg
ICAge0MoMmY3MmQxMmE0MDA0NGI0YiksIEMoODg5Njg5MzUyZmVjNTNkZSksIEMoZjAzZTZhZDg3
ZWIyZjM2KSwgQygzMGIzYjE2KX0sCiAgICAge0MoYWExZjYxZmRjNWMyZTExZSksIEMoYzJjNTZj
ZDExMjc3YWIyNyksIEMoYTFlNzMwNjlmZGYxZjk0ZiksCi0gICAgIEMoODE4NGJhYjM2YmI3OWRm
MCksIEMoYzgxOTI5Y2U4NjU1Yjk0MCksIEMoMzAxYjExYmY4YTRkOGNlOCksCi0gICAgIEMoNzMx
MjZmZDQ1YWI3NWRlOSksIEMoODE4NGJhYjM2YmI3OWRmMCksIEMoYzgxOTI5Y2U4NjU1Yjk0MCks
Ci0gICAgIEMoMzAxYjExYmY4YTRkOGNlOCksIEMoNzMxMjZmZDQ1YWI3NWRlOSksIEMoNGJkNmY3
NmU0ODg4MjI5YSksCi0gICAgIEMoOWFhZTM1NWI1NGE3NTZkNSksIEMoY2EzZGU5NzI2ZjZlOTlk
NSksIEMoODNmODBjYWM1YmMzNjg1MiksCiAgICAgIEMoZjMxYmM0ZTgpfSwKICAgICB7Qyg5NDg5
YjM2ZmUyMjQ2MjQ0KSwgQygzMzU1MzY3MDMzYmU3NGI4KSwgQyg1ZjU3YzIyNzdjYmNlNTE2KSwK
LSAgICAgQyhiYzYxNDE0Zjk4MDJlY2FmKSwgQyg4ZWRkMWU3YTUwNTYyOTI0KSwgQyg0OGY0YWI3
NGEzNWU5NWYyKSwKLSAgICAgQyhjYzFhZmNmZDk5YTE4MGU3KSwgQyhiYzYxNDE0Zjk4MDJlY2Fm
KSwgQyg4ZWRkMWU3YTUwNTYyOTI0KSwKLSAgICAgQyg0OGY0YWI3NGEzNWU5NWYyKSwgQyhjYzFh
ZmNmZDk5YTE4MGU3KSwgQyg1MTdkZDVlM2FjZjY2MTEwKSwKLSAgICAgQyg3ZGQzYWQ5ZTg5Nzhi
MzBkKSwgQygxZjZkNWRmYzcwZGU4MTJiKSwgQyg5NDdkYWFiYTY0NDFhYWYzKSwKICAgICAgQyg0
MTlmOTUzYil9LAogICAgIHtDKDM1OGQ3YzA0NzZhMDQ0Y2QpLCBDKGUwYjdiNDdiY2JkODg1NGYp
LCBDKGZmYjQyZWM2OTY3MDU1MTkpLAotICAgICBDKGQ0NWU0NGMyNjNlOTVjMzgpLCBDKGRmNjFk
YjUzOTIzYWUzYjEpLCBDKGYyYmM5NDhjYzRmYzAyN2MpLAotICAgICBDKDhhODAwMGM2MDY2Nzcy
YTMpLCBDKGQ0NWU0NGMyNjNlOTVjMzgpLCBDKGRmNjFkYjUzOTIzYWUzYjEpLAotICAgICBDKGYy
YmM5NDhjYzRmYzAyN2MpLCBDKDhhODAwMGM2MDY2NzcyYTMpLCBDKDlmZDkzYzk0MmQzMWZhMTcp
LAotICAgICBDKGQ3NjUxZWNlYmUwOWNiZDMpLCBDKDY4NjgyY2VmYjZhNmYxNjUpLCBDKDU0MWVi
OTlhMmRjZWU0MGUpLAogICAgICBDKDIwZTllNzZkKX0sCiAgICAge0MoYjBjNDhkZjE0Mjc1MjY1
YSksIEMoOWRhNDQ0ODk3NTkwNWVmYSksIEMoZDcxNjYxOGU0MTRjZWI2ZCksCi0gICAgIEMoMzBl
ODg4YWY3MGRmMWU1NiksIEMoNGJlZTU0YmQ0NzI3NGY2OSksIEMoMTc4YjQwNTllMWEwYWZlNSks
Ci0gICAgIEMoNmUyYzk2YjdmNThlNTE3OCksIEMoMzBlODg4YWY3MGRmMWU1NiksIEMoNGJlZTU0
YmQ0NzI3NGY2OSksCi0gICAgIEMoMTc4YjQwNTllMWEwYWZlNSksIEMoNmUyYzk2YjdmNThlNTE3
OCksIEMoYmI0MjlkM2I5Mjc1ZTliYyksCi0gICAgIEMoYzE5ODAxM2YwOWNhZmRjNiksIEMoZWMw
YTZlZTRmYjVkZTM0OCksIEMoNzQ0ZTFlOGVkMmViMWViMCksCiAgICAgIEMoNjQ2ZjBmZjgpfSwK
ICAgICB7QyhkYWE3MGJiMzAwOTU2NTg4KSwgQyg0MTBlYTY4ODNhMjQwYzZkKSwgQyhmNWM4MjM5
ZmI1NjczZWIzKSwKLSAgICAgQyg4YjFkN2JiNDkwM2MxMDVmKSwgQyhjZmIxYzMyMmI3Mzg5MWQ0
KSwgQyg1ZjNiNzkyYjIyZjA3Mjk3KSwKLSAgICAgQyhmZDY0MDYxZjhiZTg2ODExKSwgQyg4YjFk
N2JiNDkwM2MxMDVmKSwgQyhjZmIxYzMyMmI3Mzg5MWQ0KSwKLSAgICAgQyg1ZjNiNzkyYjIyZjA3
Mjk3KSwgQyhmZDY0MDYxZjhiZTg2ODExKSwgQygxZDJkYjcxMjkyMWNmYzJiKSwKLSAgICAgQyhj
ZDFiMmIyZjJjZWUxOGFlKSwgQyg2YjZmODc5MGRjN2ZlYjA5KSwgQyg0NmMxNzllZmEzZjBmNTE4
KSwKICAgICAgQyhlZWI3ZWNhOCl9LAotICAgIHtDKDRlYzk3YTIwYjZjNGM3YzIpLCBDKDU5MTNi
MWNkNDU0ZjI5ZmQpLCBDKGE5NjI5ZjlkYWYwNmQ2ODUpLAotICAgICBDKDg1MmM5NDk5MTU2YThm
MyksIEMoM2ExODBhNmFiZmI3OTAxNiksIEMoOWZjM2M0NzY0MDM3YzNjOSksCi0gICAgIEMoMjg5
MGM0MmZjMGQ5NzJjZiksIEMoODUyYzk0OTkxNTZhOGYzKSwgQygzYTE4MGE2YWJmYjc5MDE2KSwK
LSAgICAgQyg5ZmMzYzQ3NjQwMzdjM2M5KSwgQygyODkwYzQyZmMwZDk3MmNmKSwgQygxZjkyMjMx
ZDRlNTM3NjUxKSwKLSAgICAgQyhmYWI4YmIwN2FhNTRiN2I5KSwgQyhlMDVkMmQ3NzFjNDg1ZWQ0
KSwgQyhkNTBiMzRiZjgwOGNhNzMxKSwgQyg4MTEyYmI5KX0sCisgICAge0MoNGVjOTdhMjBiNmM0
YzdjMiksIEMoNTkxM2IxY2Q0NTRmMjlmZCksIEMoYTk2MjlmOWRhZjA2ZDY4NSksIEMoODExMmJi
OSl9LAogICAgIHtDKDVjMzMyMzYyODQzNWEyZTgpLCBDKDFiZWE0NWNlOWU3MmE2ZTMpLCBDKDkw
NGYwYTcwMjdkZGI1MmUpLAotICAgICBDKDkzOWYzMWRlMTRkY2RjN2IpLCBDKGE2OGZkZjQzNzlk
ZjA2OCksIEMoZjE2OWUxZjBiODM1Mjc5ZCksCi0gICAgIEMoNzQ5OGU0MzJmOTYxOWIyNyksIEMo
OTM5ZjMxZGUxNGRjZGM3YiksIEMoYTY4ZmRmNDM3OWRmMDY4KSwKLSAgICAgQyhmMTY5ZTFmMGI4
MzUyNzlkKSwgQyg3NDk4ZTQzMmY5NjE5YjI3KSwgQygxYWEyYTFmMTEwODhlNzg1KSwKLSAgICAg
QyhkNmFkNzJmNDU3MjlkZTc4KSwgQyg5YTYzODE0MTU3YzgwMjY3KSwgQyg1NTUzOGUzNWM2NDhl
NDM1KSwKICAgICAgQyg4NWE2ZDQ3Nyl9LAogICAgIHtDKGMxZWYyNmJlYTI2MGFiZGIpLCBDKDZl
ZTQyM2YyMTM3ZjkyODApLCBDKGRmMjExOGI5NDZlZDBiNDMpLAotICAgICBDKDExYjg3ZmIxYjkw
MGNjMzkpLCBDKGUzM2U1OWI5MGRkODE1YjEpLCBDKGFhNmNiNWM0YmFmYWU3NDEpLAotICAgICBD
KDczOTY5OTk1MWNhOGM3MTMpLCBDKDExYjg3ZmIxYjkwMGNjMzkpLCBDKGUzM2U1OWI5MGRkODE1
YjEpLAotICAgICBDKGFhNmNiNWM0YmFmYWU3NDEpLCBDKDczOTY5OTk1MWNhOGM3MTMpLCBDKDJi
NDM4OWE5NjczMTAwNzcpLAotICAgICBDKDFkNTM4MjU2OGEzMWMyYzkpLCBDKDU1ZDFlNzg3ZmJl
Njg5OTEpLCBDKDI3N2MyNTRiYzMxMzAxZTcpLAogICAgICBDKDU2Zjc2Yzg0KX0sCiAgICAge0Mo
NmJlNzM4MWIxMTVkNjUzYSksIEMoZWQwNDYxOTA3NThlYTUxMSksIEMoZGU2YTQ1ZmZjM2VkMTE1
OSksCi0gICAgIEMoYTY0NzYwZTQwNDE0NDdkMCksIEMoZTNlYWM0OWYzZTBjNTEwOSksIEMoZGQ4
NmM0ZDRjYjYyNThlMiksCi0gICAgIEMoZWZhOTg1N2FmZDA0NmM3ZiksIEMoYTY0NzYwZTQwNDE0
NDdkMCksIEMoZTNlYWM0OWYzZTBjNTEwOSksCi0gICAgIEMoZGQ4NmM0ZDRjYjYyNThlMiksIEMo
ZWZhOTg1N2FmZDA0NmM3ZiksIEMoZmFiNzkzZGFlODI0NmYxNiksCi0gICAgIEMoYzllM2IxMjFi
MzFkMDk0YyksIEMoYTJhMGY1NTg1ODQ2NTIyNiksIEMoZGJhNmYwZmYzOTQzNjM0NCksCiAgICAg
IEMoOWFmNDVkNTUpfSwKICAgICB7QyhhZTNlZWNlMTcxMWIyMTA1KSwgQygxNGZkM2Y0MDI3Zjgx
YTRhKSwgQyhhYmI3ZTQ1MTc3ZDE1MWRiKSwKLSAgICAgQyg1MDFmM2U5YjE4ODYxZTQ0KSwgQyg0
NjUyMDExNzAwNzRlN2Q4KSwgQyg5NmQ1YzkxOTcwZjJjYjEyKSwKLSAgICAgQyg0MGZkMjhjNDM1
MDZjOTVkKSwgQyg1MDFmM2U5YjE4ODYxZTQ0KSwgQyg0NjUyMDExNzAwNzRlN2Q4KSwKLSAgICAg
Qyg5NmQ1YzkxOTcwZjJjYjEyKSwgQyg0MGZkMjhjNDM1MDZjOTVkKSwgQyhlODZjNGIwNzgwMmFh
ZmYzKSwKLSAgICAgQyhmMzE3ZDE0MTEyMzcyYTcwKSwgQyg2NDFiMTNlNTg3NzExNjUwKSwgQyg0
OTE1NDIxYWIxMDkwZWFhKSwKICAgICAgQyhkMWMzMzc2MCl9LAogICAgIHtDKDM3NmMyODU4OGI4
ZmIzODkpLCBDKDZiMDQ1ZTg0ZDg0OTFlZDIpLCBDKDRlODU3ZWZmYjdkNGU3ZGMpLAotICAgICBD
KDE1NGRkNzlmZDJmOTg0YjQpLCBDKGYxMTE3MTc3NTYyMmMxYzMpLCBDKDFmYmUzMDk4MmU3OGU2
ZjApLAotICAgICBDKGE0NjBhMTVkY2YzMjdlNDQpLCBDKDE1NGRkNzlmZDJmOTg0YjQpLCBDKGYx
MTE3MTc3NTYyMmMxYzMpLAotICAgICBDKDFmYmUzMDk4MmU3OGU2ZjApLCBDKGE0NjBhMTVkY2Yz
MjdlNDQpLCBDKGYzNTllMDkwMGNjM2Q1ODIpLAotICAgICBDKDdlMTEwNzA0NDc5NzZkMDApLCBD
KDMyNGU2ZGFmMjc2ZWE0YjUpLCBDKDdhYTZlMmRmMGNjOTRmYTIpLAogICAgICBDKGM1NmJiZjY5
KX0sCiAgICAge0MoNThkOTQzNTAzYmI2NzQ4ZiksIEMoNDE5YzZjOGU4OGFjNzBmNiksIEMoNTg2
NzYwY2JmM2QzZDM2OCksCi0gICAgIEMoYjdlMTY0OTc5ZDVjY2ZjMSksIEMoMTJjYjQyMzBkMjZi
ZjI4NiksIEMoZjFiZjkxMGQ0NGJkODRjYiksCi0gICAgIEMoYjMyYzI0YzZhNDAyNzIpLCBDKGI3
ZTE2NDk3OWQ1Y2NmYzEpLCBDKDEyY2I0MjMwZDI2YmYyODYpLAotICAgICBDKGYxYmY5MTBkNDRi
ZDg0Y2IpLCBDKGIzMmMyNGM2YTQwMjcyKSwgQygxMWVkMTJlMzRjNDhjMDM5KSwKLSAgICAgQyhi
MGMyNTM4ZTUxZDBhNmFjKSwgQyg0MjY5YmI3NzNlMWQ1NTNhKSwgQyhlMzVhOWRiYWJkMzQ4Njcp
LCBDKGFiZWNmYjliKX0sCisgICAgIEMoYWJlY2ZiOWIpfSwKICAgICB7QyhkZmZmNTk4OWY1Y2Zk
OWExKSwgQyhiY2VlMmU3ZWEzYTk2ZjgzKSwgQyg2ODFjNzg3NGFkYjI5MDE3KSwKLSAgICAgQygz
ZmY2YzhhYzdjMzZiNjNhKSwgQyg0OGJjODgzMWQ4NDllMzI2KSwgQygzMGIwNzhlNzZiMDIxNGUy
KSwKLSAgICAgQyg0Mjk1NGU2YWQ3MjFiOTIwKSwgQygzZmY2YzhhYzdjMzZiNjNhKSwgQyg0OGJj
ODgzMWQ4NDllMzI2KSwKLSAgICAgQygzMGIwNzhlNzZiMDIxNGUyKSwgQyg0Mjk1NGU2YWQ3MjFi
OTIwKSwgQyhmOWFlYjMzZDE2NGI0NDcyKSwKLSAgICAgQyg3YjM1M2IxMTA4MzFkYmRjKSwgQygx
NmY2NGM4MmY0NGFlMTdiKSwgQyhiNzEyNDRjYzE2NGIzYjJiKSwKICAgICAgQyg4ZGUxMzI1NSl9
LAogICAgIHtDKDdmYjE5ZWIxYTQ5NmU4ZjUpLCBDKGQ0OWU1ZGZkYjVjMDgzM2YpLCBDKGMwZDVk
N2IyZjdjNDhkYzcpLAotICAgICBDKDFhNTczMTNhMzJmMjJkZGUpLCBDKDMwYWY0NmU0OTg1MGJm
OGIpLCBDKGFhMGZlOGQxMmY4MDhmODMpLAotICAgICBDKDQ0M2UzMWQ3MDg3M2JiNmIpLCBDKDFh
NTczMTNhMzJmMjJkZGUpLCBDKDMwYWY0NmU0OTg1MGJmOGIpLAotICAgICBDKGFhMGZlOGQxMmY4
MDhmODMpLCBDKDQ0M2UzMWQ3MDg3M2JiNmIpLCBDKGJiZWI2N2M0OWM5ZmRjMTMpLAotICAgICBD
KDE4ZjFlMmE4OGY1OWY5ZDUpLCBDKGZiMWIwNTAzOGU1ZGVmMTEpLCBDKGQwNDUwYjVjZTRjMzlj
NTIpLAogICAgICBDKGE5OGVlMjk5KX0sCiAgICAge0MoNWRiYTViMGRhZGNjZGJhYSksIEMoNGJh
OGRhOGRlZDg3ZmNkYyksIEMoZjY5M2ZkZDI1YmFkZjJmMCksCi0gICAgIEMoZTkwMjllNjM2NDI4
NjU4NyksIEMoYWU2OWY0OWVjYjQ2NzI2YyksIEMoMThlMDAyNjc5MjE3YzQwNSksCi0gICAgIEMo
YmQ2ZDY2ZTg1MzMyYWU5ZiksIEMoZTkwMjllNjM2NDI4NjU4NyksIEMoYWU2OWY0OWVjYjQ2NzI2
YyksCi0gICAgIEMoMThlMDAyNjc5MjE3YzQwNSksIEMoYmQ2ZDY2ZTg1MzMyYWU5ZiksIEMoNmJm
MzMwYjFjMzUzZGQyYSksCi0gICAgIEMoNzRlOWYyZTcxZTNhNDE1MiksIEMoM2Y4NTU2MGI1MGY2
YzQxMyksIEMoZDMzYTUyYTQ3ZWFlZDJiNCksCiAgICAgIEMoMzAxNWY1NTYpfSwKICAgICB7Qyg2
ODhiZWY0YjEzNWE2ODI5KSwgQyg4ZDMxZDgyYWJjZDU0ZThlKSwgQyhmOTVmOGEzMGQ1NTAzNmQ3
KSwKLSAgICAgQygzZDhjOTBlMjdhYTJlMTQ3KSwgQygyZWM5MzdjZTBhYTIzNmI0KSwgQyg4OWI1
NjM5OTZkM2EwYjc4KSwKLSAgICAgQygzOWIwMjQxM2IyM2MzZjA4KSwgQygzZDhjOTBlMjdhYTJl
MTQ3KSwgQygyZWM5MzdjZTBhYTIzNmI0KSwKLSAgICAgQyg4OWI1NjM5OTZkM2EwYjc4KSwgQygz
OWIwMjQxM2IyM2MzZjA4KSwgQyg4ZDQ3NWEyZTY0ZmFmMmQyKSwKLSAgICAgQyg0ODU2N2Y3ZGNh
NDZlY2FmKSwgQygyNTRjZGEwOGQ1Zjg3YTZkKSwgQyhlYzZhZTlmNzI5YzQ3MDM5KSwKICAgICAg
Qyg1YTQzMGUyOSl9LAogICAgIHtDKGQ4MzIzYmUwNTQzM2E0MTIpLCBDKDhkNDhmYTJiMmI3NjE0
MWQpLCBDKDNkMzQ2ZjIzOTc4MzM2YTUpLAotICAgICBDKDRkNTBjNzUzNzU2MjAzM2YpLCBDKDU3
ZGM3NjI1YjYxZGZlODkpLCBDKDk3MjNhOWY0YzA4YWQ5M2EpLAotICAgICBDKDUzMDk1OTZmNDhh
YjQ1NmIpLCBDKDRkNTBjNzUzNzU2MjAzM2YpLCBDKDU3ZGM3NjI1YjYxZGZlODkpLAotICAgICBD
KDk3MjNhOWY0YzA4YWQ5M2EpLCBDKDUzMDk1OTZmNDhhYjQ1NmIpLCBDKDdlNDUzMDg4MDE5ZDIy
MGYpLAotICAgICBDKDg3NzYwNjdiYTZhYjk3MTQpLCBDKDY3ZTFkMDZiZDE5NWRlMzkpLCBDKDc0
YTFhMzJmODk5NGI5MTgpLAogICAgICBDKDI3OTdhZGQwKX0sCiAgICAge0MoM2I1NDA0Mjc4YTU1
YTdmYyksIEMoMjNjYTBiMzI3YzJkMGE4MSksIEMoYTZkNjUzMjk1NzFjODkyYyksCi0gICAgIEMo
NDU1MDQ4MDFlMGU2MDY2YiksIEMoODZlNmM2ZDYxNTJhM2QwNCksIEMoNGYzZGIxYzUzZWNhMjk1
MiksCi0gICAgIEMoZDI0ZDY5YjNlOWVmMTBmMyksIEMoNDU1MDQ4MDFlMGU2MDY2YiksIEMoODZl
NmM2ZDYxNTJhM2QwNCksCi0gICAgIEMoNGYzZGIxYzUzZWNhMjk1MiksIEMoZDI0ZDY5YjNlOWVm
MTBmMyksIEMoOTNhMGRlMjIxOWU2NmE3MCksCi0gICAgIEMoODkzMmM3MTE1Y2NiMWY4YSksIEMo
NWVmNTAzZmRmMjg0MWE4YyksIEMoMzgwNjRkZDllZmE4MGE0MSksCiAgICAgIEMoMjdkNTUwMTYp
fSwKICAgICB7QygyYTk2YTNmOTZjNWU5YmJjKSwgQyg4Y2FmODU2NmUyMTJkZGE4KSwgQyg5MDRk
ZTU1OWNhMTZlNDVlKSwKLSAgICAgQyhmMTNiYzJkOWMyZmUyMjJlKSwgQyhiZTRjY2VjOWE2Y2Rj
Y2ZkKSwgQygzN2IyY2JkZDk3M2EzYWM5KSwKLSAgICAgQyg3YjMyMjNjZDljOTQ5N2JlKSwgQyhm
MTNiYzJkOWMyZmUyMjJlKSwgQyhiZTRjY2VjOWE2Y2RjY2ZkKSwKLSAgICAgQygzN2IyY2JkZDk3
M2EzYWM5KSwgQyg3YjMyMjNjZDljOTQ5N2JlKSwgQyhkNTkwNDQ0MGYzNzZmODg5KSwKLSAgICAg
Qyg2MmIxMzE4NzY5OWM0NzNjKSwgQyg0NzUxYjg5MjUxZjI2NzI2KSwgQyg5NTAwZDg0ZmEzYTYx
YmE4KSwKICAgICAgQyg4NDk0NWE4Mil9LAogICAgIHtDKDIyYmViZmRjYzI2ZDE4ZmYpLCBDKDRi
NGQ4ZGNiMTA4MDdiYTEpLCBDKDQwMjY1ZWVlMzBjNmI4OTYpLAotICAgICBDKDM3NTJiNDIzMDcz
YjExOWEpLCBDKDM3N2RjNWViN2M2NjJiZGIpLCBDKDJiOWYwN2Y5M2E2YzI1YjkpLAotICAgICBD
KDk2ZjI0ZWRlMmJkYzA3MTgpLCBDKDM3NTJiNDIzMDczYjExOWEpLCBDKDM3N2RjNWViN2M2NjJi
ZGIpLAotICAgICBDKDJiOWYwN2Y5M2E2YzI1YjkpLCBDKDk2ZjI0ZWRlMmJkYzA3MTgpLCBDKGY3
Njk5YjEyYzMxNDE3YmQpLAotICAgICBDKDE3YjM2NmY0MDFjNThiMiksIEMoYmY2MDE4OGQ1ZjQz
N2IzNyksIEMoNDg0NDM2ZTU2ZGYxN2YwNCksIEMoM2VmN2UyMjQpfSwKKyAgICAgQygzZWY3ZTIy
NCl9LAogICAgIHtDKDYyN2EyMjQ5ZWM2YmJjYzIpLCBDKGMwNTc4YjQ2MmE0NjczNWEpLCBDKDQ5
NzRiOGVlMWMyZDRmMWYpLAotICAgICBDKGViZGJiOTE4ZWI2ZDgzN2YpLCBDKDhmYjVmMjE4ZGQ4
NDE0N2MpLCBDKGM3N2RkMWY4ODFkZjJjNTQpLAotICAgICBDKDYyZWFjMjk4ZWMyMjZkYzMpLCBD
KGViZGJiOTE4ZWI2ZDgzN2YpLCBDKDhmYjVmMjE4ZGQ4NDE0N2MpLAotICAgICBDKGM3N2RkMWY4
ODFkZjJjNTQpLCBDKDYyZWFjMjk4ZWMyMjZkYzMpLCBDKDQzZWRlZDgzYzRiNjBiZDApLAotICAg
ICBDKDlhMGE0MDNiNTQ4NzUwM2IpLCBDKDI1ZjMwNWQ5MTQ3ZjBiZGEpLCBDKDNhZDQxN2Y1MTFi
YzFlNjQpLAogICAgICBDKDM1ZWQ4ZGM4KX0sCi0gICAge0MoM2FiYWYxNjY3YmEyZjNlMCksIEMo
ZWU3ODQ3NmI1ZWVhZGMxKSwgQyg3ZTU2YWMwYTZjYTRmM2Y0KSwKLSAgICAgQyhmMWI5YjQxM2Rm
OWQ3OWVkKSwgQyhhNzYyMWI2ZmQwMmRiNTAzKSwgQyhkOTJmN2JhOTkyOGE0ZmZlKSwKLSAgICAg
Qyg1M2Y1NmJhYmRjYWU5NmE2KSwgQyhmMWI5YjQxM2RmOWQ3OWVkKSwgQyhhNzYyMWI2ZmQwMmRi
NTAzKSwKLSAgICAgQyhkOTJmN2JhOTkyOGE0ZmZlKSwgQyg1M2Y1NmJhYmRjYWU5NmE2KSwgQyg1
MzAyYjg5ZmM0ODcxM2FiKSwKLSAgICAgQyhkMDNlM2IwNGRiZTdhMmYyKSwgQyhmYTc0ZWY4YWY2
ZDM3NmE3KSwgQygxMDNjOGNkZWExMDUwZWYyKSwKLSAgICAgQyg2YTc1ZTQzZCl9LAorICAgIHtD
KDNhYmFmMTY2N2JhMmYzZTApLCBDKGVlNzg0NzZiNWVlYWRjMSksIEMoN2U1NmFjMGE2Y2E0ZjNm
NCksIEMoNmE3NWU0M2QpfSwKICAgICB7QygzOTMxYWM2OGM1ZjFiMmM5KSwgQyhlZmUzODkyMzYz
YWIwZmIwKSwgQyg0MGI3MDcyNjgzMzdjZDM2KSwKLSAgICAgQyhhNTNhNmI2NGIxYWM4NWM5KSwg
QyhkNTBlN2Y4NmVlMWI4MzJiKSwgQyg3YmFiMDhmZGQyNmJhMGE0KSwKLSAgICAgQyg3NTg3NzQz
YzE4ZmUyNDc1KSwgQyhhNTNhNmI2NGIxYWM4NWM5KSwgQyhkNTBlN2Y4NmVlMWI4MzJiKSwKLSAg
ICAgQyg3YmFiMDhmZGQyNmJhMGE0KSwgQyg3NTg3NzQzYzE4ZmUyNDc1KSwgQyhlM2I1ZDVkNDkw
Y2Y1NzYxKSwKLSAgICAgQyhkZmMwNTNmN2QwNjVlZGQ1KSwgQyg0MmZmZDhkNWZiNzAxMjlmKSwg
Qyg1OTljYTM4Njc3Y2NjZGMzKSwKICAgICAgQygyMzVkOTgwNSl9LAotICAgIHtDKGI5OGZiMDYw
NmY0MTY3NTQpLCBDKDQ2YTZlNTU0N2JhOTljMWUpLCBDKGM5MDlkODIxMTJhOGVkMiksCi0gICAg
IEMoZGJmYWFlOTY0MmIzMjA1YSksIEMoZjY3NmExMzM5NDAyYmNiOSksIEMoZjRmMTJhNWIxYWMx
MWYyOSksCi0gICAgIEMoN2RiOGJhZDgxMjQ5ZGVlNCksIEMoZGJmYWFlOTY0MmIzMjA1YSksIEMo
ZjY3NmExMzM5NDAyYmNiOSksCi0gICAgIEMoZjRmMTJhNWIxYWMxMWYyOSksIEMoN2RiOGJhZDgx
MjQ5ZGVlNCksIEMoYjI2ZTQ2ZjJkYTk1OTIyZSksCi0gICAgIEMoMmFhZWRkNWUxMmUzYzYxMSks
IEMoYTBlMmQ5MDgyOTY2MDc0KSwgQyhjNjRkYThhMTY3YWRkNjNkKSwgQyhmN2Q2OTU3Mil9LAor
ICAgIHtDKGI5OGZiMDYwNmY0MTY3NTQpLCBDKDQ2YTZlNTU0N2JhOTljMWUpLCBDKGM5MDlkODIx
MTJhOGVkMiksIEMoZjdkNjk1NzIpfSwKICAgICB7Qyg3Zjc3MjlhMzNlNThmY2M0KSwgQygyZTRi
YzFlN2EwMjNlYWQ0KSwgQyhlNzA3MDA4ZWE3Y2E2MjIyKSwKLSAgICAgQyg0NzQxOGE3MTgwMDMz
NGEwKSwgQyhkMTAzOTVkOGZjNjRkOGE0KSwgQyg4MjU3YTMwMDYyY2I2NmYpLAotICAgICBDKDY3
ODZmOWIyZGMxZmYxOGEpLCBDKDQ3NDE4YTcxODAwMzM0YTApLCBDKGQxMDM5NWQ4ZmM2NGQ4YTQp
LAotICAgICBDKDgyNTdhMzAwNjJjYjY2ZiksIEMoNjc4NmY5YjJkYzFmZjE4YSksIEMoNTYzM2Y0
MzdiYjJmMTgwZiksCi0gICAgIEMoZTVhM2E0MDU3MzdkMjJkNiksIEMoY2EwZmYxZWY2ZjdmMGI3
NCksIEMoZDBhZTYwMDY4NGIxNmRmOCksCiAgICAgIEMoYmFjZDAxOTkpfSwKICAgICB7Qyg0MmEw
YWE5Y2U4Mjg0OGIzKSwgQyg1NzIzMjczMGU2YmVlMTc1KSwgQyhmODliYjNmMzcwNzgyMDMxKSwK
LSAgICAgQyhjYWEzM2NmOWI0ZjY2MTljKSwgQyhiMmM4NjQ4YWQ0OWMyMDlmKSwgQyg5ZTg5ZWNl
MDcxMmRiMWMwKSwKLSAgICAgQygxMDFkODI3NGE3MTFhNTRiKSwgQyhjYWEzM2NmOWI0ZjY2MTlj
KSwgQyhiMmM4NjQ4YWQ0OWMyMDlmKSwKLSAgICAgQyg5ZTg5ZWNlMDcxMmRiMWMwKSwgQygxMDFk
ODI3NGE3MTFhNTRiKSwgQyg1MzhlNzlmMWU3MDEzNWNkKSwKLSAgICAgQyhlMWY1YTc2Zjk4M2M4
NDRlKSwgQyg2NTNjMDgyZmQ2NjA4OGZjKSwgQygxYjljOWI0NjRiNjU0OTU4KSwKICAgICAgQyhl
NDI4ZjUwZSl9LAogICAgIHtDKDZiMmM2ZDM4NDA4YTQ4ODkpLCBDKGRlM2VmNmY2OGZiMjU4ODUp
LCBDKDIwNzU0ZjQ1NmMyMDMzNjEpLAotICAgICBDKDk0MWY1MDIzYzBjOTQzZjkpLCBDKGRmZGVi
OTU2NGZkNjZmMjQpLCBDKDIxNDBjZWM3MDZiOWQ0MDYpLAotICAgICBDKDdiMjI0MjliMTMxZTlj
NzIpLCBDKDk0MWY1MDIzYzBjOTQzZjkpLCBDKGRmZGViOTU2NGZkNjZmMjQpLAotICAgICBDKDIx
NDBjZWM3MDZiOWQ0MDYpLCBDKDdiMjI0MjliMTMxZTljNzIpLCBDKDk0MjE1YzIyZWI5NDBmNDUp
LAotICAgICBDKGQyOGI5ZWQ0NzRmNzI0OWEpLCBDKDZmMjVlODhmMmZiZjlmNTYpLCBDKGI2NzE4
ZjllNjA1YjM4YWMpLAogICAgICBDKDgxZWFhYWQzKX0sCiAgICAge0MoOTMwMzgwYTM3NDFlODYy
YSksIEMoMzQ4ZDI4NjM4ZGM3MTY1OCksIEMoODlkZWRjZmQxNjU0ZWEwZCksCi0gICAgIEMoN2U3
ZjYxNjg0MDgwMTA2KSwgQyg4MzdhY2U5Nzk0NTgyOTc2KSwgQyg1YWM4Y2E3NmEzNTdlYjFiKSwK
LSAgICAgQygzMmI1ODMwODYyNTY2MWZiKSwgQyg3ZTdmNjE2ODQwODAxMDYpLCBDKDgzN2FjZTk3
OTQ1ODI5NzYpLAotICAgICBDKDVhYzhjYTc2YTM1N2ViMWIpLCBDKDMyYjU4MzA4NjI1NjYxZmIp
LCBDKGMwOTcwNWM0NTcyMDI1ZDkpLAotICAgICBDKGY5MTg3ZjZhZjAyOTEzMDMpLCBDKDFjMGVk
ZDhlZTRiMDI1MzgpLCBDKGU2Y2IxMDVkYWEwNTc4YSksIEMoYWRkYmQzZTMpfSwKKyAgICAgQyhh
ZGRiZDNlMyl9LAogICAgIHtDKDk0ODA4YjVkMmFhMjVmOWEpLCBDKGNlYzcyOTY4MTI4MTk1ZTAp
LCBDKGQ5ZjRkYTJiZGMxZTEzMGYpLAotICAgICBDKDI3MmQ4ZGQ3NGYzMDA2Y2MpLCBDKGVjNmMy
YWQxZWMwM2Y1NTQpLCBDKDRhZDI3NmIyNDlhNWQ1ZGQpLAotICAgICBDKDU0OWEyMmExN2MwY2Rl
MTIpLCBDKDI3MmQ4ZGQ3NGYzMDA2Y2MpLCBDKGVjNmMyYWQxZWMwM2Y1NTQpLAotICAgICBDKDRh
ZDI3NmIyNDlhNWQ1ZGQpLCBDKDU0OWEyMmExN2MwY2RlMTIpLCBDKDYwMjExOWNiODI0ZDdjZGUp
LAotICAgICBDKGY0ZDNjZWYyNDBlZjM1ZmEpLCBDKGU4ODk4OTVlMDE5MTFiYzcpLCBDKDc4NWE3
ZTVhYzIwZTg1MmIpLAogICAgICBDKGU2NmRiY2EwKX0sCiAgICAge0MoYjMxYWJiMDhhZTZlM2Qz
OCksIEMoOWViOWE5NWNiZDllODIyMyksIEMoODAxOWU3OWI3ZWU5NGVhOSksCi0gICAgIEMoN2Iy
MjcxYTdhMzI0OGUyMiksIEMoM2I0ZjcwMGU1YTBiYTUyMyksIEMoOGViYzUyMGMyMjcyMDZmZSks
Ci0gICAgIEMoZGEzZjg2MTQ5MGY1ZDI5MSksIEMoN2IyMjcxYTdhMzI0OGUyMiksIEMoM2I0Zjcw
MGU1YTBiYTUyMyksCi0gICAgIEMoOGViYzUyMGMyMjcyMDZmZSksIEMoZGEzZjg2MTQ5MGY1ZDI5
MSksIEMoZDA4YTY4OWY5ZjNhYTYwZSksCi0gICAgIEMoNTQ3YzFiOTdhMDY4NjYxZiksIEMoNGIx
NWE2N2ZhMjkxNzJmMCksIEMoZWFmNDBjMDg1MTkxZDgwZiksCiAgICAgIEMoYWZlMTFmZDUpfSwK
ICAgICB7QyhkY2NiNTUzNGE4OTNlYTFhKSwgQyhjZTcxYzM5ODcwOGM2MTMxKSwgQyhmZTIzOTYz
MTU0NTdjMTY0KSwKLSAgICAgQygzZjEyMjlmNGQwZmQ5NmZiKSwgQygzMzEzMGFhNWZhOWQ0M2Yy
KSwgQyhlNDI2OTNkNWIzNGU2M2FiKSwKLSAgICAgQygyZjRlZjJiZTY3ZjYyMTA0KSwgQygzZjEy
MjlmNGQwZmQ5NmZiKSwgQygzMzEzMGFhNWZhOWQ0M2YyKSwKLSAgICAgQyhlNDI2OTNkNWIzNGU2
M2FiKSwgQygyZjRlZjJiZTY3ZjYyMTA0KSwgQygzNzJlNTE1MzUxNmUzN2I5KSwKLSAgICAgQyhh
ZjllYzE0MmFiMTJjYzg2KSwgQyg3Nzc5MjBjMDkzNDVlMzU5KSwgQyhlN2M0YTM4M2JlZjhhZGM2
KSwKICAgICAgQyhhNzFhNDA2Zil9LAogICAgIHtDKDYzNjkxNjM1NjU4MTRkZTYpLCBDKDhmZWI4
NmZiMzhkMDhjMmYpLCBDKDQ5NzY5MzM0ODVjYzlhMjApLAotICAgICBDKDdkM2U4MmQ1YmEyOWE5
MGQpLCBDKGQ1OTgzY2M5M2E5ZDEyNmEpLCBDKDM3ZTlkZmQ5NTBlN2I2OTIpLAotICAgICBDKDgw
NjczYmU2YTc4ODhiODcpLCBDKDdkM2U4MmQ1YmEyOWE5MGQpLCBDKGQ1OTgzY2M5M2E5ZDEyNmEp
LAotICAgICBDKDM3ZTlkZmQ5NTBlN2I2OTIpLCBDKDgwNjczYmU2YTc4ODhiODcpLCBDKDU3Zjcz
MmRjNjAwODA4YmMpLAotICAgICBDKDU5NDc3MTk5ODAyY2M3OGIpLCBDKGY4MjQ4MTBlYjhmMmMy
ZGUpLCBDKGM0YTM0MzdmMDViM2I2MWMpLAogICAgICBDKDlkOTBlYWY1KX0sCiAgICAge0MoZWRl
ZTRmZjI1M2Q5ZjliMyksIEMoOTZlZjc2ZmIyNzllZjBhZCksIEMoYTRkMjA0ZDE3OWRiMjQ2MCks
Ci0gICAgIEMoMWYzZGNkZmE1MTM1MTJkNiksIEMoNGRjN2VjMDcyODMxMTdlNCksIEMoNDQzOGJh
ZTg4YWUyOGJmOSksCi0gICAgIEMoYWE3ZWFlNzJjOTI0NGEwZCksIEMoMWYzZGNkZmE1MTM1MTJk
NiksIEMoNGRjN2VjMDcyODMxMTdlNCksCi0gICAgIEMoNDQzOGJhZTg4YWUyOGJmOSksIEMoYWE3
ZWFlNzJjOTI0NGEwZCksIEMoYjlhZWRjOGQzZWNjNzJkZiksCi0gICAgIEMoYjc1YThlYjA5MGE3
N2Q2MiksIEMoNmIxNTY3N2Y5Y2Q5MTUwNyksIEMoNTFkODI4MmNiM2E5ZGRiZiksCiAgICAgIEMo
NjY2NWRiMTApfSwKICAgICB7Qyg5NDE5OTNkZjZlNjMzMjE0KSwgQyg5MjliYzFiZWNhNWI3MmM2
KSwgQygxNDFmYzUyYjhkNTU1NzJkKSwKLSAgICAgQyhiM2I3ODJhZDMwOGYyMWVkKSwgQyg0ZjI2
NzY0ODUwNDFkZWUwKSwgQyhiZmUyNzlhZWQ1Y2I0YmM4KSwKLSAgICAgQygyYTYyNTA4YTQ2N2Ey
MmZmKSwgQyhiM2I3ODJhZDMwOGYyMWVkKSwgQyg0ZjI2NzY0ODUwNDFkZWUwKSwKLSAgICAgQyhi
ZmUyNzlhZWQ1Y2I0YmM4KSwgQygyYTYyNTA4YTQ2N2EyMmZmKSwgQyhlNzRkMjllYWI3NDIzODVk
KSwKLSAgICAgQyg1NmIwNWNkOTBlY2ZjMjkzKSwgQyhjNjAzNzI4ZWE3M2Y4ODQ0KSwgQyg4NjM4
ZmNkMjFiYzY5MmM0KSwKICAgICAgQyg5Yzk3N2NiZil9LAogICAgIHtDKDg1OTgzODI5M2Y2NGNk
NGMpLCBDKDQ4NDQwM2IzOWQ0NGFkNzkpLCBDKGJmNjc0ZTY0ZDY0YjkzMzkpLAotICAgICBDKDQ0
ZDY4YWZkYTk1NjhmMDgpLCBDKDQ3ODU2OGVkNTFjYTFkNjUpLCBDKDY3OWMyMDRhZDNkOWU3NjYp
LAotICAgICBDKGIyOGU3ODg4Nzg0ODhkYzEpLCBDKDQ0ZDY4YWZkYTk1NjhmMDgpLCBDKDQ3ODU2
OGVkNTFjYTFkNjUpLAotICAgICBDKDY3OWMyMDRhZDNkOWU3NjYpLCBDKGIyOGU3ODg4Nzg0ODhk
YzEpLCBDKGQwMDFhODRkM2E4NGZhZTYpLAotICAgICBDKGQzNzY5NThmZTRjYjkxM2UpLCBDKDE3
NDM1Mjc3ZTM2Yzg2ZjApLCBDKDIzNjU3YjI2M2MzNDdhYTYpLAogICAgICBDKGVlODNkZGQ0KX0s
Ci0gICAge0MoYzE5YjU2NDhlMGQ5ZjU1NSksIEMoMzI4ZTQ3YjJiNzU2Mjk5MyksIEMoZTc1NmI5
MmJhNGJkNmE1MSksCi0gICAgIEMoYzMzMTRlMzYyNzY0ZGRiOCksIEMoNjQ4MWMwODRlZTllYzZi
NSksIEMoZWRlMjNmYjlhMjUxNzcxKSwKLSAgICAgQyhiZDYxN2YyNjQzMzI0NTkwKSwgQyhjMzMx
NGUzNjI3NjRkZGI4KSwgQyg2NDgxYzA4NGVlOWVjNmI1KSwKLSAgICAgQyhlZGUyM2ZiOWEyNTE3
NzEpLCBDKGJkNjE3ZjI2NDMzMjQ1OTApLCBDKGQyZDMwYzliOTVlMDMwZjUpLAotICAgICBDKDhh
NTE3MzEyZmZjNTc5NWUpLCBDKDhiMWYzMjUwMzNiZDUzNWUpLCBDKDNlZTZlODY3ZTAzZjI4OTIp
LCBDKDI2NTE5Y2MpfSwKKyAgICB7QyhjMTliNTY0OGUwZDlmNTU1KSwgQygzMjhlNDdiMmI3NTYy
OTkzKSwgQyhlNzU2YjkyYmE0YmQ2YTUxKSwgQygyNjUxOWNjKX0sCiAgICAge0MoZjk2M2I2M2I5
MDA2YzI0OCksIEMoOWU5YmY3MjdmZmFhMDBiYyksIEMoYzczYmFjYzc1YjkxN2UzYSksCi0gICAg
IEMoMmM2YWE3MDYxMjljYzU0YyksIEMoMTdhNzA2ZjU5YTQ5ZjA4NiksIEMoYzdjMWVlYzQ1NTIx
NzE0NSksCi0gICAgIEMoNmFkZmRjNmUwNzYwMmQ0MiksIEMoMmM2YWE3MDYxMjljYzU0YyksIEMo
MTdhNzA2ZjU5YTQ5ZjA4NiksCi0gICAgIEMoYzdjMWVlYzQ1NTIxNzE0NSksIEMoNmFkZmRjNmUw
NzYwMmQ0MiksIEMoZmI3NWZjYTMwZDg0OGRkMiksCi0gICAgIEMoNTIyOGM5ZWQxNDY1M2VkNCks
IEMoOTUzOTU4OTEwMTUzYjFhMiksIEMoYTQzMDEwM2EyNGY0MmE1ZCksCiAgICAgIEMoYTQ4NWE1
M2YpfSwKICAgICB7Qyg2YThhYTA4NTJhOGMxZjNiKSwgQyhjOGYxZTVlMjA2YTIxMDE2KSwgQygy
YWE1NTRhZWQxZWJiNTI0KSwKLSAgICAgQyhmYzNlM2MzMjJjZDVkODliKSwgQyhiN2UzOTExZGMy
YmQ0ZWJiKSwgQyhmY2Q2ZGE1ZTVmYWU4MzNhKSwKLSAgICAgQyg1MWVkM2M0MWY4N2Y5MTE4KSwg
QyhmYzNlM2MzMjJjZDVkODliKSwgQyhiN2UzOTExZGMyYmQ0ZWJiKSwKLSAgICAgQyhmY2Q2ZGE1
ZTVmYWU4MzNhKSwgQyg1MWVkM2M0MWY4N2Y5MTE4KSwgQyhmMzE3NTBjYmMxOWM0MjBhKSwKLSAg
ICAgQygxODZkYWIxYWJhZGExZDg2KSwgQyhjYTdmODhjYjg5NGIzY2Q3KSwgQygyODU5ZWViMWMz
NzM3OTBjKSwKICAgICAgQyhmNjJiYzQxMil9LAogICAgIHtDKDc0MDQyOGI0ZDQ1ZTVmYjgpLCBD
KDRjOTVhNGNlOTIyY2IwYTUpLCBDKGU5OWMzYmE3OGZlYWU3OTYpLAotICAgICBDKDkxNGYxZWEy
ZmRjZWJmNWMpLCBDKDk1NjY0NTNjMDdjZDA2MDEpLCBDKDk4NDFiZjY2ZDA0NjJjZCksCi0gICAg
IEMoNzkxNDBjMWMxODUzNmFlYiksIEMoOTE0ZjFlYTJmZGNlYmY1YyksIEMoOTU2NjQ1M2MwN2Nk
MDYwMSksCi0gICAgIEMoOTg0MWJmNjZkMDQ2MmNkKSwgQyg3OTE0MGMxYzE4NTM2YWViKSwgQyhh
OTYzYjkzMGIwNTgyMGMyKSwKLSAgICAgQyg2YTdkOWZhMGM4YzQ1MTUzKSwgQyg2NDIxNGM0MGQw
N2NmMzliKSwgQyg3MDU3ZGFmMWQ4MDZjMDE0KSwKICAgICAgQyg4OTc1YTQzNil9LAotICAgIHtD
KDY1OGI4ODNiM2E4NzJiODYpLCBDKDJmMGUzMDNmMGY2NDgyN2EpLCBDKDk3NTMzN2UyM2RjNDVl
MSksCi0gICAgIEMoOTk0NjhhOTE3OTg2MTYyYiksIEMoN2IzMTQzNGFhYzZlMGFmMCksIEMoZjY5
MTVjMTU2MmM3ZDgyZiksCi0gICAgIEMoZTQwNzFkODJhNmRkNzFkYiksIEMoOTk0NjhhOTE3OTg2
MTYyYiksIEMoN2IzMTQzNGFhYzZlMGFmMCksCi0gICAgIEMoZjY5MTVjMTU2MmM3ZDgyZiksIEMo
ZTQwNzFkODJhNmRkNzFkYiksIEMoNWY1MzMxZjA3N2I1ZDk5NiksCi0gICAgIEMoN2IzMTRiYTIx
Yjc0N2E0ZiksIEMoNWE3M2NiOTUyMWRhMTdmNSksIEMoMTJlZDQzNWZhZTI4NmQ4NiksCi0gICAg
IEMoOTRmZjdmNDEpfSwKLSAgICB7Qyg2ZGYwYTk3N2RhNWQyN2Q0KSwgQyg4OTFkZDBlN2NiMTk1
MDgpLCBDKGZkNjU0MzRhMGI3MWU2ODApLAotICAgICBDKDg3OTllNDc0MGU1NzNjNTApLCBDKDll
NzM5YjUyZDBmMzQxZTgpLCBDKGNkZmQzNGJhN2Q3YjAzZWIpLAotICAgICBDKDUwNjE4MTJjZTZj
ODg0OTkpLCBDKDg3OTllNDc0MGU1NzNjNTApLCBDKDllNzM5YjUyZDBmMzQxZTgpLAotICAgICBD
KGNkZmQzNGJhN2Q3YjAzZWIpLCBDKDUwNjE4MTJjZTZjODg0OTkpLCBDKDYxMmI4ZDhmMjQxMWRj
NWMpLAotICAgICBDKDg3OGJkODgzZDI5Yzc3ODcpLCBDKDQ3YTg0NjcyNzE4MmJiKSwgQyhlYzQ5
NDk1MDhjOGIzYjlhKSwgQyg3NjBhYTAzMSl9LAotICAgIHtDKGE5MDAyNzU0NjRhZTA3ZWYpLCBD
KDExZjJjZmRhMzRiZWI0YTMpLCBDKDlhYmY5MWU1YTFjMzhlNCksCi0gICAgIEMoODA2M2Q4MGFi
MjZmM2Q2ZCksIEMoNDE3N2I0YjliNGYwMzkzZiksIEMoNmRlNDJiYTg2NzJiOTY0MCksCi0gICAg
IEMoZDBiY2NkYjcyYzUxYzE4KSwgQyg4MDYzZDgwYWIyNmYzZDZkKSwgQyg0MTc3YjRiOWI0ZjAz
OTNmKSwKLSAgICAgQyg2ZGU0MmJhODY3MmI5NjQwKSwgQyhkMGJjY2RiNzJjNTFjMTgpLCBDKGFm
M2Y2MTFiN2YyMmNmMTIpLAotICAgICBDKDM4NjNjNDE0OTI2NDU3NTUpLCBDKDkyOGM3YTYxNmE4
ZjE0ZjkpLCBDKGE4MmM3OGViMmVhZGM1OGIpLAotICAgICBDKDNiZGE3NmRmKX0sCisgICAge0Mo
NjU4Yjg4M2IzYTg3MmI4NiksIEMoMmYwZTMwM2YwZjY0ODI3YSksIEMoOTc1MzM3ZTIzZGM0NWUx
KSwgQyg5NGZmN2Y0MSl9LAorICAgIHtDKDZkZjBhOTc3ZGE1ZDI3ZDQpLCBDKDg5MWRkMGU3Y2Ix
OTUwOCksIEMoZmQ2NTQzNGEwYjcxZTY4MCksIEMoNzYwYWEwMzEpfSwKKyAgICB7QyhhOTAwMjc1
NDY0YWUwN2VmKSwgQygxMWYyY2ZkYTM0YmViNGEzKSwgQyg5YWJmOTFlNWExYzM4ZTQpLCBDKDNi
ZGE3NmRmKX0sCiAgICAge0MoODEwYmM4YWEwYzQwYmNiMCksIEMoNDQ4YTAxOTU2OGQwMTQ0MSks
IEMoZjYwZWM1MmY2MGQzYWVhZSksCi0gICAgIEMoNTJjNDQ4MzdhYTZkZmM3NyksIEMoMTVkOGQ4
ZmNjZGQ2ZGM1YiksIEMoMzQ1Yjc5M2NjZmE5MzA1NSksCi0gICAgIEMoOTMyMTYwZmU4MDJjYTk3
NSksIEMoNTJjNDQ4MzdhYTZkZmM3NyksIEMoMTVkOGQ4ZmNjZGQ2ZGM1YiksCi0gICAgIEMoMzQ1
Yjc5M2NjZmE5MzA1NSksIEMoOTMyMTYwZmU4MDJjYTk3NSksIEMoYTYyNGIwZGQ5M2ZjMThjZCks
Ci0gICAgIEMoZDk1NWIyNTRjMjAzN2YxZSksIEMoZTU0MDUzM2QzNzBhNjY0YyksIEMoMmJhNGVj
MTI1MTRlOWQ3KSwgQyg0OThlMmU2NSl9LAorICAgICBDKDQ5OGUyZTY1KX0sCiAgICAge0MoMjIw
MzYzMjdkZWI1OWVkNyksIEMoYWRjMDVjZWI5NzAyNmEwMiksIEMoNDhiZmYwNjU0MjYyNjcyYiks
Ci0gICAgIEMoYzc5MWIzMTNhYmEzZjI1OCksIEMoNDQzYzc3NTdhNDcyN2JlZSksIEMoZTMwZTRi
MjM3MjE3MWJkZiksCi0gICAgIEMoZjNkYjk4NmM0MTU2ZjNjYiksIEMoYzc5MWIzMTNhYmEzZjI1
OCksIEMoNDQzYzc3NTdhNDcyN2JlZSksCi0gICAgIEMoZTMwZTRiMjM3MjE3MWJkZiksIEMoZjNk
Yjk4NmM0MTU2ZjNjYiksIEMoYTkzOWFlZmFiOTdjNmUxNSksCi0gICAgIEMoZGJlYjhhY2YxZDVi
MGU2YyksIEMoMWUwZWFiNjY3YTc5NWJiYSksIEMoODBkZDUzOTkwMmRmNGQ1MCksCiAgICAgIEMo
ZDM4ZGViNDgpfSwKICAgICB7Qyg3ZDE0ZGZhOTc3MmIwMGM4KSwgQyg1OTU3MzVlZmM3ZWVhZWQ3
KSwgQygyOTg3Mjg1NGY5NGMzNTA3KSwKLSAgICAgQyhiYzI0MTU3OWQ4MzQ4NDAxKSwgQygxNmRj
ODMyODA0ZDcyOGYwKSwgQyhlOWNjNzFhZTY0ZTNmMDllKSwKLSAgICAgQyhiZWY2MzRiYzk3OGJh
YzMxKSwgQyhiYzI0MTU3OWQ4MzQ4NDAxKSwgQygxNmRjODMyODA0ZDcyOGYwKSwKLSAgICAgQyhl
OWNjNzFhZTY0ZTNmMDllKSwgQyhiZWY2MzRiYzk3OGJhYzMxKSwgQyg3ZjY0YjFmYTJhOTEyOWUp
LAotICAgICBDKDcxZDgzMWJkNTMwYWM3ZjMpLCBDKGM3YWQwYThhNmQ1YmU2ZjEpLCBDKDgyYTdk
M2E4MTVjN2FhYWIpLAogICAgICBDKDgyYjNmYjZiKX0sCiAgICAge0MoMmQ3NzdjZGRiOTEyNjc1
ZCksIEMoMjc4ZDdiMTA3MjJhMTNmOSksIEMoZjVjMDJiZmI3Y2MwNzhhZiksCi0gICAgIEMoNDI4
MzAwMTIzOTg4ODgzNiksIEMoZjQ0Y2EzOWE2Zjc5ZGI4OSksIEMoZWQxODYxMjJkNzFiY2M5Ziks
Ci0gICAgIEMoODYyMDAxN2FiNWYzYmEzYiksIEMoNDI4MzAwMTIzOTg4ODgzNiksIEMoZjQ0Y2Ez
OWE2Zjc5ZGI4OSksCi0gICAgIEMoZWQxODYxMjJkNzFiY2M5ZiksIEMoODYyMDAxN2FiNWYzYmEz
YiksIEMoZTc4NzQ3MjE4N2YxNzZjKSwKLSAgICAgQygyNjdlNjRjNDcyOGNmMTgxKSwgQyhmMWJh
NGIzMDA3YzE1ZTMwKSwgQyg4ZTNhNzVkNWIwMmVjZmMwKSwKICAgICAgQyhlNTAwZTI1Zil9LAog
ICAgIHtDKGYyZWM5ODgyNGU4YWE2MTMpLCBDKDVlYjdlM2ZiNTNmZTNiZWQpLCBDKDEyYzIyODYw
NDY2ZTFkZDQpLAotICAgICBDKDM3NGRkNDI4OGUwYjcyZTUpLCBDKGZmODkxNmRiNzA2YzBkZjQp
LCBDKGNiMWE5ZTg1ZGU1ZTRiOGQpLAotICAgICBDKGQ0ZDEyYWZiNjdhMjc2NTkpLCBDKDM3NGRk
NDI4OGUwYjcyZTUpLCBDKGZmODkxNmRiNzA2YzBkZjQpLAotICAgICBDKGNiMWE5ZTg1ZGU1ZTRi
OGQpLCBDKGQ0ZDEyYWZiNjdhMjc2NTkpLCBDKGZlYjY5MDk1ZDFiYTE3NWEpLAotICAgICBDKGUy
MDAzYWFiMjNhNDdmYWQpLCBDKDgxNjNhM2VjYWI4OTRiNDkpLCBDKDQ2ZDM1NjY3NGNlMDQxZjYp
LAogICAgICBDKGJkMmJiMDdjKX0sCiAgICAge0MoNWU3NjM5ODhlMjFmNDg3ZiksIEMoMjQxODlk
ZTgwNjVkOGRjNSksIEMoZDE1MTlkMjQwM2I2MmFhMCksCi0gICAgIEMoOTEzNjQ1Njc0MDExOTgx
NSksIEMoNGQ4ZmY3NzMzYjI3ZWI4MyksIEMoZWEzMDQwYmMwYzcxN2VmOCksCi0gICAgIEMoNzYx
N2FiNDAwZGZhZGJjKSwgQyg5MTM2NDU2NzQwMTE5ODE1KSwgQyg0ZDhmZjc3MzNiMjdlYjgzKSwK
LSAgICAgQyhlYTMwNDBiYzBjNzE3ZWY4KSwgQyg3NjE3YWI0MDBkZmFkYmMpLCBDKGZiMzM2Nzcw
YzEwYjE3YTEpLAotICAgICBDKDYxMjNiNjhiNWIzMWYxNTEpLCBDKDFlMTQ3ZDVmMjk1ZWNjZjIp
LCBDKDllY2JiMTMzMzU1NmY5NzcpLAogICAgICBDKDNhMmI0MzFkKX0sCiAgICAge0MoNDg5NDlk
YzMyN2JiOTZhZCksIEMoZTFmZDIxNjM2YzVjNTBiNCksIEMoM2Y2ZWI3ZjEzYTg3MTJiNCksCi0g
ICAgIEMoMTRjZjdmMDJkYWIwZWVlOCksIEMoNmQwMTc1MDYwNWU4OTQ0NSksIEMoNGYxY2Y0MDA2
ZTYxM2I3OCksCi0gICAgIEMoNTdjNDBjNGRiMzJiZWMzYiksIEMoMTRjZjdmMDJkYWIwZWVlOCks
IEMoNmQwMTc1MDYwNWU4OTQ0NSksCi0gICAgIEMoNGYxY2Y0MDA2ZTYxM2I3OCksIEMoNTdjNDBj
NGRiMzJiZWMzYiksIEMoMWZkZTVhMzQ3ZjRhMzI2ZSksCi0gICAgIEMoY2I1YTU0MzA4YWRiMGUz
ZiksIEMoMTQ5OTRiMmJhNDQ3YTIzYyksIEMoNzA2N2QwYWJiNDI1N2I2OCksCiAgICAgIEMoNzMy
MmE4M2QpfSwKICAgICB7QyhiN2M0MjA5ZmIyNGE4NWM1KSwgQyhiMzVmZWIzMTljNzljZTEwKSwg
QyhmMGQzZGUxOTE4MzNiOTIyKSwKLSAgICAgQyg1NzBkNjI3NThkZGY2Mzk3KSwgQyg1ZTAyMDRm
YjY4YTdiODAwKSwgQyg0MzgzYTkyMzZmOGI1YTJiKSwKLSAgICAgQyg3YmMxYTY0NjQxZDgwM2E0
KSwgQyg1NzBkNjI3NThkZGY2Mzk3KSwgQyg1ZTAyMDRmYjY4YTdiODAwKSwKLSAgICAgQyg0Mzgz
YTkyMzZmOGI1YTJiKSwgQyg3YmMxYTY0NjQxZDgwM2E0KSwgQyg1NDM0ZDYxMjg1MDk5ZjdhKSwK
LSAgICAgQyhkNDk0NDlhYWNkZDVkZDY3KSwgQyg5Nzg1NWJhMGU5YTdkNzVkKSwgQyhkYTY3MzI4
MDYyZjNhNjJmKSwKICAgICAgQyhhNjQ1Y2ExYyl9LAogICAgIHtDKDljOWU1YmUwOTQzZDRiMDUp
LCBDKGI3M2RjNjllNDUyMDFjYmIpLCBDKGFhYjE3MTgwYmZlNTA4M2QpLAotICAgICBDKGM3Mzhh
NzdhOWE1NWYwZTIpLCBDKDcwNTIyMWFkZGVkZDgxZGYpLCBDKGZkOWJkOGQzOTdhYmNmYTMpLAot
ICAgICBDKDhjY2YwMDA0YWE4NmI3OTUpLCBDKGM3MzhhNzdhOWE1NWYwZTIpLCBDKDcwNTIyMWFk
ZGVkZDgxZGYpLAotICAgICBDKGZkOWJkOGQzOTdhYmNmYTMpLCBDKDhjY2YwMDA0YWE4NmI3OTUp
LCBDKDJiYjVkYjIyODAwNjgyMDYpLAotICAgICBDKDhjMjJkMjlmMzA3YTAxZCksIEMoMjc0YTIy
ZGUwMmY0NzNjOCksIEMoYjg3OTE4NzBmNDI2ODE4MiksIEMoODkwOWE0NWEpfSwKKyAgICAgQyg4
OTA5YTQ1YSl9LAogICAgIHtDKDM4OThiY2E0ZGZkNjYzOGQpLCBDKGY5MTFmZjM1ZWZlZjAxNjcp
LCBDKDI0YmRmNjllNTA5MWZjODgpLAotICAgICBDKDliODI1NjdhYjY1NjA3OTYpLCBDKDg5MWI2
OTQ2MmI0MWMyMjQpLCBDKDhlY2NjN2U0ZjNhZjNiNTEpLAotICAgICBDKDM4MWU1NGMzYzhmMWM3
ZDApLCBDKDliODI1NjdhYjY1NjA3OTYpLCBDKDg5MWI2OTQ2MmI0MWMyMjQpLAotICAgICBDKDhl
Y2NjN2U0ZjNhZjNiNTEpLCBDKDM4MWU1NGMzYzhmMWM3ZDApLCBDKGM4MGZiYzQ4OWE1NThhNTUp
LAotICAgICBDKDFiYTg4ZTA2MmE2NjNhZjcpLCBDKGFmN2IxZWYxYzAxMTYzMDMpLCBDKGJkMjBl
MWE1YTZiMWEwY2QpLAogICAgICBDKGJkMzAwNzRjKX0sCi0gICAge0MoNWI1ZDI1NTc0MDBlNjhl
NyksIEMoOThkNjEwMDMzNTc0Y2VlKSwgQyhkZmQwODc3MmNlMzg1ZGViKSwKLSAgICAgQygzYzEz
ZTg5NDM2NWRjNmMyKSwgQygyNmZjN2JiY2RhM2YwZWYpLCBDKGRiYjcxMTA2Y2RiZmVhMzYpLAot
ICAgICBDKDc4NTIzOWE3NDJjNmQyNmQpLCBDKDNjMTNlODk0MzY1ZGM2YzIpLCBDKDI2ZmM3YmJj
ZGEzZjBlZiksCi0gICAgIEMoZGJiNzExMDZjZGJmZWEzNiksIEMoNzg1MjM5YTc0MmM2ZDI2ZCks
IEMoZjgxMGM0MTVhZTA1YjJmNCksCi0gICAgIEMoYmI5YjllNzM5ODUyNjA4OCksIEMoNzAxMjhm
MWJmODMwYTMyYiksIEMoYmNjNzNmODJiNjQxMDg5OSksCi0gICAgIEMoYzE3Y2YwMDEpfSwKKyAg
ICB7Qyg1YjVkMjU1NzQwMGU2OGU3KSwgQyg5OGQ2MTAwMzM1NzRjZWUpLCBDKGRmZDA4NzcyY2Uz
ODVkZWIpLCBDKGMxN2NmMDAxKX0sCiAgICAge0MoYTkyN2VkOGIyYmYwOWJiNiksIEMoNjA2ZTUy
ZjEwYWU5NGVjYSksIEMoNzFjMjIwM2ZlYjM1YTllZSksCi0gICAgIEMoNmU2NWVjMTRhOGZiNTY1
KSwgQygzNGJmZjZmMmVlNWE3Zjc5KSwgQygyZTMyOWE1YmUyYzAxMWIpLAotICAgICBDKDczMTYx
YzkzMzMxYjE0ZjkpLCBDKDZlNjVlYzE0YThmYjU2NSksIEMoMzRiZmY2ZjJlZTVhN2Y3OSksCi0g
ICAgIEMoMmUzMjlhNWJlMmMwMTFiKSwgQyg3MzE2MWM5MzMzMWIxNGY5KSwgQygxNWQxM2YyNDA4
YWVjZjg4KSwKLSAgICAgQyg5ZjViNjFiOGE0YjU1YjMxKSwgQyg4ZmUyNWE0M2IyOTZkYmE2KSwg
QyhiZGFkMDNiNzMwMGYyODRlKSwKICAgICAgQygyNmZmZDI1YSl9LAogICAgIHtDKDhkMjU3NDY0
MTRhZWRmMjgpLCBDKDM0YjE2MjlkMjhiMzNkM2EpLCBDKDRkNTM5NGFlYTVmODJkN2IpLAotICAg
ICBDKDM3OWY3NjQ1OGEzYzg5NTcpLCBDKDc5ZGQwODBmOTg0M2FmNzcpLCBDKGM0NmYwYTc4NDdm
NjBjMWQpLAotICAgICBDKGFmMTU3OWM1Nzk3NzAzY2MpLCBDKDM3OWY3NjQ1OGEzYzg5NTcpLCBD
KDc5ZGQwODBmOTg0M2FmNzcpLAotICAgICBDKGM0NmYwYTc4NDdmNjBjMWQpLCBDKGFmMTU3OWM1
Nzk3NzAzY2MpLCBDKDhiN2QzMWYzMzg3NTVjMTQpLAotICAgICBDKDJlZmY5NzY3OTUxMmFhYTgp
LCBDKGRmMDdkNjhlMDc1MTc5ZWQpLCBDKGM4ZmE2YzdhNzI5ZTdmMWYpLAogICAgICBDKGYxZDhj
ZTNjKX0sCiAgICAge0MoYjViYmRiNzM0NTg3MTJmMiksIEMoMWZmODg3YjNjMmEzNTEzNyksIEMo
N2Y3MjMxZjcwMmQwYWNlOSksCi0gICAgIEMoMWU2ZjA5MTBjM2QyNWJkOCksIEMoYWQ5ZTI1MDg2
MjEwMjQ2NyksIEMoMWM4NDJhMDdhYmFiMzBjZCksCi0gICAgIEMoY2Q4MTI0MTc2YmFjMDFhYyks
IEMoMWU2ZjA5MTBjM2QyNWJkOCksIEMoYWQ5ZTI1MDg2MjEwMjQ2NyksCi0gICAgIEMoMWM4NDJh
MDdhYmFiMzBjZCksIEMoY2Q4MTI0MTc2YmFjMDFhYyksIEMoZWE2ZWJlN2E3OWI2N2VkYyksCi0g
ICAgIEMoNzNmNTk4YWM5ZGIyNjcxMyksIEMoNGY0ZTcyZDc0NjBiOGZjKSwgQygzNjVkYzRiOWZk
ZjEzZjIxKSwgQygzZWU4ZmIxNyl9LAorICAgICBDKDNlZThmYjE3KX0sCiAgICAge0MoM2QzMmEy
NmUzYWI5ZDI1NCksIEMoZmM0MDcwNTc0ZGMzMGQzYSksIEMoZjAyNjI5NTc5YzJiMjdjOSksCi0g
ICAgIEMoYjFjZjA5YjAxODRhNDgzNCksIEMoNWMwM2RiNDhlYjZjYzE1OSksIEMoZjE4YzdmY2Yz
NGQxZGY0NyksCi0gICAgIEMoZGZiMDQzNDE5ZWNmMWZhOSksIEMoYjFjZjA5YjAxODRhNDgzNCks
IEMoNWMwM2RiNDhlYjZjYzE1OSksCi0gICAgIEMoZjE4YzdmY2YzNGQxZGY0NyksIEMoZGZiMDQz
NDE5ZWNmMWZhOSksIEMoZGNkNzhkMTNmOWNhNjU4ZiksCi0gICAgIEMoNDM1NWQ0MDhmZmU4ZTQ5
ZiksIEMoODFlZWZlZTkwOGI1OTNiNCksIEMoNTkwYzIxM2MyMGU5ODFhMyksCiAgICAgIEMoYTc3
YWNjMmEpfSwKLSAgICB7Qyg5MzcxZDNjMzVmYTVlOWE1KSwgQyg0Mjk2N2NmNGQwMWYzMCksIEMo
NjUyZDFlZWFlNzA0MTQ1YyksCi0gICAgIEMoY2VhZjFhMGQxNTIzNGYxNSksIEMoMTQ1MGE1NGU0
NWJhOWI5KSwgQyg2NWU5YzFmZDg4NWFhOTMyKSwKLSAgICAgQygzNTRkNGJjMDM0YmE4Y2JlKSwg
QyhjZWFmMWEwZDE1MjM0ZjE1KSwgQygxNDUwYTU0ZTQ1YmE5YjkpLAotICAgICBDKDY1ZTljMWZk
ODg1YWE5MzIpLCBDKDM1NGQ0YmMwMzRiYThjYmUpLCBDKDhmZDRmZjQ4NGMwOGZiNGIpLAotICAg
ICBDKGJmNDY3NDk4NjZmNjliYTApLCBDKGNmMWMyMWVkZTgyYzk0NzcpLCBDKDQyMTc1NDhjNDNk
YTEwOSksIEMoZjQ1NTZkZWUpfSwKLSAgICB7QyhjYmFhM2NiOGY2NGY1NGUwKSwgQyg3NmMzYjQ4
ZWU1YzA4NDE3KSwgQyg5ZjdkMjRlODdlNjFjZTkpLAotICAgICBDKDg1YjhlNTNmMjJlMTk1MDcp
LCBDKGJiNTcxMzc3MzljYTQ4NmIpLCBDKGM3N2YxMzFjY2EzOGY3NjEpLAotICAgICBDKGM1NmFj
M2NmMjc1YmUxMjEpLCBDKDg1YjhlNTNmMjJlMTk1MDcpLCBDKGJiNTcxMzc3MzljYTQ4NmIpLAot
ICAgICBDKGM3N2YxMzFjY2EzOGY3NjEpLCBDKGM1NmFjM2NmMjc1YmUxMjEpLCBDKDllYzFhNmM5
MTA5ZDI2ODUpLAotICAgICBDKDNkYWQwOTIyZTc2YWZkYjApLCBDKGZkNThjYmY5NTI5NTgxMDMp
LCBDKDdiMDRjOTA4ZTc4NjM5YTEpLAotICAgICBDKGRlMjg3YTY0KX0sCisgICAge0MoOTM3MWQz
YzM1ZmE1ZTlhNSksIEMoNDI5NjdjZjRkMDFmMzApLCBDKDY1MmQxZWVhZTcwNDE0NWMpLCBDKGY0
NTU2ZGVlKX0sCisgICAge0MoY2JhYTNjYjhmNjRmNTRlMCksIEMoNzZjM2I0OGVlNWMwODQxNyks
IEMoOWY3ZDI0ZTg3ZTYxY2U5KSwgQyhkZTI4N2E2NCl9LAogICAgIHtDKGIyZTIzZTgxMTZjMmJh
OWYpLCBDKDdlNGQ5YzAwNjAxMDExNTEpLCBDKDMzMTBkYTVlNTAyOGYzNjcpLAotICAgICBDKGFk
YzUyZGRkYjc2ZjZlNWUpLCBDKDRhYWQ0ZTkyNWE5NjJiNjgpLCBDKDIwNGI3OWI3ZjcxNjhlNjQp
LAotICAgICBDKGRmMjllZDY2NzFjMzY5NTIpLCBDKGFkYzUyZGRkYjc2ZjZlNWUpLCBDKDRhYWQ0
ZTkyNWE5NjJiNjgpLAotICAgICBDKDIwNGI3OWI3ZjcxNjhlNjQpLCBDKGRmMjllZDY2NzFjMzY5
NTIpLCBDKGUwMjkyN2NhYzM5NmQyMTApLAotICAgICBDKDVkNTAwZTcxNzQyYjYzOGEpLCBDKDVj
OTk5OGFmN2YyN2IxMjQpLCBDKDNmYmE5YTI1NzNkYzJmNyksIEMoODc4ZTU1YjkpfSwKLSAgICB7
Qyg4YWE3N2Y1MmQ3ODY4ZWI5KSwgQyg0ZDU1YmQ1ODc1ODRlNmUyKSwgQyhkMmRiMzcwNDFmNDk1
ZjUpLAotICAgICBDKGNlMDMwZDE1YjVmZTJmNCksIEMoODZiNGE3YTA3ODBjMjQzMSksIEMoZWUw
NzBhOWFlNWI1MWRiNyksCi0gICAgIEMoZWRjMjkzZDk1OTViZTVkOCksIEMoY2UwMzBkMTViNWZl
MmY0KSwgQyg4NmI0YTdhMDc4MGMyNDMxKSwKLSAgICAgQyhlZTA3MGE5YWU1YjUxZGI3KSwgQyhl
ZGMyOTNkOTU5NWJlNWQ4KSwgQygzZGZjNWVjMTA4MjYwYTJiKSwKLSAgICAgQyg4YWZlMjhjNzEy
M2JmNGUyKSwgQyhkYTgyZWYzODAyM2E3YTVmKSwgQygzZTFmNzdiMDE3NGI3N2MzKSwgQyg3NjQ4
NDg2KX0sCisgICAgIEMoODc4ZTU1YjkpfSwKKyAgICB7Qyg4YWE3N2Y1MmQ3ODY4ZWI5KSwgQyg0
ZDU1YmQ1ODc1ODRlNmUyKSwgQyhkMmRiMzcwNDFmNDk1ZjUpLCBDKDc2NDg0ODYpfSwKICAgICB7
Qyg4NThmZWE5MjJjN2ZlMGMzKSwgQyhjZmU4MzI2YmY3MzNiYzZmKSwgQyg0ZTVlMjAxOGNmOGY3
ZGZjKSwKLSAgICAgQyg2NGZkMWJjMDExZTViYWI3KSwgQyg1YzllODU4NzI4MDE1NTY4KSwgQyg5
N2FjNDJjMmIwMGIyOWIxKSwKLSAgICAgQyg3Zjg5Y2FmMDhjMTA5YWVlKSwgQyg2NGZkMWJjMDEx
ZTViYWI3KSwgQyg1YzllODU4NzI4MDE1NTY4KSwKLSAgICAgQyg5N2FjNDJjMmIwMGIyOWIxKSwg
Qyg3Zjg5Y2FmMDhjMTA5YWVlKSwgQyg5YThhZjM0ZmQwZTlkYWNmKSwKLSAgICAgQyhiYmM1NDE2
MWFhMTUwN2UwKSwgQyg3Y2RhNzIzY2NiYmZlNWVlKSwgQygyYzI4OWQ4MzlmYjkzZjU4KSwKICAg
ICAgQyg1N2FjMGZiMSl9LAogICAgIHtDKDQ2ZWYyNWZkZWM4MzkyYjEpLCBDKGU0OGQ3YjZkNDJh
NWNkMzUpLCBDKDU2YTZmZTFjMTc1Mjk5Y2EpLAotICAgICBDKGZkZmE4MzZiNDFkY2VmNjIpLCBD
KDJmOGRiODAzMGU4NDdlMWIpLCBDKDViYTBhNDlhYzRmOWIwZjgpLAotICAgICBDKGRhZTg5N2Vk
M2UzZmNlNDQpLCBDKGZkZmE4MzZiNDFkY2VmNjIpLCBDKDJmOGRiODAzMGU4NDdlMWIpLAotICAg
ICBDKDViYTBhNDlhYzRmOWIwZjgpLCBDKGRhZTg5N2VkM2UzZmNlNDQpLCBDKDljNDMyZTMxYWVm
NjI2ZTcpLAotICAgICBDKDlhMzZlMWM2Y2Q2ZTNkZCksIEMoNTA5NWExNjdjMzRkMTlkKSwgQyhh
NzAwMDVjZmE2YmFiYmVhKSwgQyhkMDE5NjdjYSl9LAorICAgICBDKGQwMTk2N2NhKX0sCiAgICAg
e0MoOGQwNzhmNzI2YjJkZjQ2NCksIEMoYjUwZWU3MWNkY2FiYjI5OSksIEMoZjRhZjMwMDEwNmY5
YzdiYSksCi0gICAgIEMoN2QyMjJjYWFlMDI1MTU4YSksIEMoY2MwMjhkNWZkNDAyNDFiOSksIEMo
ZGQ0MjUxNWI2MzllNmY5NyksCi0gICAgIEMoZTA4ZTg2NTMxYTU4Zjg3ZiksIEMoN2QyMjJjYWFl
MDI1MTU4YSksIEMoY2MwMjhkNWZkNDAyNDFiOSksCi0gICAgIEMoZGQ0MjUxNWI2MzllNmY5Nyks
IEMoZTA4ZTg2NTMxYTU4Zjg3ZiksIEMoZDkzNjEyYzgzNWIzN2Q3YiksCi0gICAgIEMoOTFkZDYx
NzI5YjJmYTdmNCksIEMoYmE3NjVhMWJkZGEwOWRiNyksIEMoNTUyNThiNDUxYjJiMTI5NyksCiAg
ICAgIEMoOTZlY2RmNzQpfSwKICAgICB7QygzNWVhODZlNjk2MGNhOTUwKSwgQygzNGZlMWZlMjM0
ZmM1Yzc2KSwgQyhhMDAyMDdhM2RjMmE3MmI3KSwKLSAgICAgQyg4MDM5NWU0ODczOWUxYTY3KSwg
Qyg3NGE2N2Q4ZjdmNDNjM2Q3KSwgQyhkZDJiZGQxZDYyMjQ2YzZlKSwKLSAgICAgQyhhMWY0NDI5
OGJhODBhY2Y2KSwgQyg4MDM5NWU0ODczOWUxYTY3KSwgQyg3NGE2N2Q4ZjdmNDNjM2Q3KSwKLSAg
ICAgQyhkZDJiZGQxZDYyMjQ2YzZlKSwgQyhhMWY0NDI5OGJhODBhY2Y2KSwgQyhhZDg2ZDg2YzE4
N2JmMzgpLAotICAgICBDKDI2ZmVlYTFmMmVlZTI0MGQpLCBDKGVkN2YxZmQwNjZiMjM4OTcpLCBD
KGE3NjhjZjFlMGZiYjUwMiksIEMoNzc5ZjU1MDYpfSwKKyAgICAgQyg3NzlmNTUwNil9LAogICAg
IHtDKDhhZWU5ZWRiYzE1ZGQwMTEpLCBDKDUxZjU4MzlkYzg0NjI2OTUpLCBDKGIyMjEzZTE3YzM3
ZGNhMmQpLAotICAgICBDKDEzM2IyOTlhOTM5NzQ1YzUpLCBDKDc5NmUyYWFjMDUzZjUyYjMpLCBD
KGU4ZDlmZTE1MjFhNGEyMjIpLAotICAgICBDKDgxOWE4ODYzZTVkMWMyOTApLCBDKDEzM2IyOTlh
OTM5NzQ1YzUpLCBDKDc5NmUyYWFjMDUzZjUyYjMpLAotICAgICBDKGU4ZDlmZTE1MjFhNGEyMjIp
LCBDKDgxOWE4ODYzZTVkMWMyOTApLCBDKGMwNzM3ZjBmZTM0ZDM2YWQpLAotICAgICBDKGU2ZDZk
NGEyNjdhNWNjMzEpLCBDKDk4MzAwYTc5MTE2NzRjMjMpLCBDKGJlZjE4OTY2MWMyNTcwOTgpLAog
ICAgICBDKDNjOTRjMmRlKX0sCiAgICAge0MoYzNlMTQyYmE5ODQzMmRkYSksIEMoOTExZDA2MGNh
YjEyNjE4OCksIEMoYjc1M2ZiZmE4MzY1Yjg0NCksCi0gICAgIEMoZmQxYTliYTVlNzFiMDhhMiks
IEMoN2FjMGRjMmVkNzc3ODUzMyksIEMoYjU0MzE2MWZmMTc3MTg4YSksCi0gICAgIEMoNDkyZmMw
OGE2MTg2ZjNmNCksIEMoZmQxYTliYTVlNzFiMDhhMiksIEMoN2FjMGRjMmVkNzc3ODUzMyksCi0g
ICAgIEMoYjU0MzE2MWZmMTc3MTg4YSksIEMoNDkyZmMwOGE2MTg2ZjNmNCksIEMoZmM0NzQ1ZjUx
NmFmZDNiNiksCi0gICAgIEMoODhjMzAzNzBhNTMwODBlKSwgQyg2NWExYmIzNGFiYzQ2NWUyKSwg
QyhhYmJkMTQ2NjI5MTFjOGIzKSwgQygzOWY5OGZhZil9LAorICAgICBDKDM5Zjk4ZmFmKX0sCiAg
ICAge0MoMTIzYmE2Yjk5YzhjZDhkYiksIEMoNDQ4ZTU4MjY3MmVlMDdjNCksIEMoY2ViZTM3OTI5
MmRiOWU2NSksCi0gICAgIEMoOTM4ZjViYmFiNTQ0ZDNkNiksIEMoZDJhOTVmOWYyZDM3NmQ3Myks
IEMoNjhiMmYxNjE0OWU4MWFhMyksCi0gICAgIEMoYWQ3ZTMyZjgyZDg2Yzc5ZCksIEMoOTM4ZjVi
YmFiNTQ0ZDNkNiksIEMoZDJhOTVmOWYyZDM3NmQ3MyksCi0gICAgIEMoNjhiMmYxNjE0OWU4MWFh
MyksIEMoYWQ3ZTMyZjgyZDg2Yzc5ZCksIEMoNDU3NDAxNWFlODYyNmNlMiksCi0gICAgIEMoNDU1
YWE2MTM3Mzg2YTU4MiksIEMoNjU4YWQyNTQyZThlYzIwKSwgQyhlMzFkN2JlMmNhMzVkMDApLCBD
KDdhZjMxMTk5KX0sCisgICAgIEMoN2FmMzExOTkpfSwKICAgICB7QyhiYTg3YWNlZjc5ZDE0ZjUz
KSwgQyhiM2UwZmNhZTYzYTExNTU4KSwgQyhkNWFjMzEzYTU5M2E5ZjQ1KSwKLSAgICAgQyhlZWE1
ZjVhOWY3NGFmNTkxKSwgQyg1Nzg3MTBiY2MzNmZiZWEyKSwgQyg3YTgzOTM0MzIxODg5MzFkKSwK
LSAgICAgQyg3MDVjZmM1ZWM3Y2MxNzIpLCBDKGVlYTVmNWE5Zjc0YWY1OTEpLCBDKDU3ODcxMGJj
YzM2ZmJlYTIpLAotICAgICBDKDdhODM5MzQzMjE4ODkzMWQpLCBDKDcwNWNmYzVlYzdjYzE3Miks
IEMoZGE4NWViZTVmYzQyNzk3NiksCi0gICAgIEMoYmZhNWM3YTQ1NGRmNTRjOCksIEMoNDYzMmI3
MmE4MWJmNjZkMiksIEMoNWRkNzI4NzdkYjUzOWVlMiksCiAgICAgIEMoZTM0MWE5ZDYpfSwKLSAg
ICB7QyhiY2QzOTU3ZDU3MTdkYzMpLCBDKDJkYTc0Njc0MWIwM2EwMDcpLCBDKDg3MzgxNmY0YjFl
Y2U0NzIpLAotICAgICBDKDJiODI2ZjFhMmMwOGMyODkpLCBDKGRhNTBmNTY4NjNiNTVlNzQpLCBD
KGIxODcxMmY2YjNlZWQ4M2IpLAotICAgICBDKGJkYzdjYzA1YWI0YzY4NWYpLCBDKDJiODI2ZjFh
MmMwOGMyODkpLCBDKGRhNTBmNTY4NjNiNTVlNzQpLAotICAgICBDKGIxODcxMmY2YjNlZWQ4M2Ip
LCBDKGJkYzdjYzA1YWI0YzY4NWYpLCBDKDllNDVmYjgzM2QxYjBhZiksCi0gICAgIEMoZDcyMTMw
ODFkYjI5ZDgyZSksIEMoZDJhNmI2YzZhMDllZDU1ZSksIEMoOThhNzY4NmNiYTMyM2NhOSksCi0g
ICAgIEMoY2EyNGFlZWIpfSwKKyAgICB7QyhiY2QzOTU3ZDU3MTdkYzMpLCBDKDJkYTc0Njc0MWIw
M2EwMDcpLCBDKDg3MzgxNmY0YjFlY2U0NzIpLCBDKGNhMjRhZWViKX0sCiAgICAge0MoNjE0NDJm
ZjU1NjA5MTY4ZSksIEMoNjQ0N2M1ZmM3NmU4YzljZiksIEMoNmE4NDZkZTgzYWUxNTcyOCksCi0g
ICAgIEMoZWZmYzI2NjNjZmZjNzc3ZiksIEMoOTMyMTRmOGY0NjNhZmJlZCksIEMoYTE1NmVmMDYw
NjZmNGU0ZSksCi0gICAgIEMoYTQwN2I2ZWQ4NzY5ZDUxZSksIEMoZWZmYzI2NjNjZmZjNzc3Ziks
IEMoOTMyMTRmOGY0NjNhZmJlZCksCi0gICAgIEMoYTE1NmVmMDYwNjZmNGU0ZSksIEMoYTQwN2I2
ZWQ4NzY5ZDUxZSksIEMoYmIyZjllZDI5NzQ1YzAyYSksCi0gICAgIEMoOTgxZWVjZDQzNWIzNmFk
OSksIEMoNDYxYTVhMDVmYjljZGZmNCksIEMoYmQ2Y2IyYTg3YjlmOTEwYyksCiAgICAgIEMoYjIy
NTJiNTcpfSwKLSAgICB7QyhkYmU0YjFiMmQxNzQ3NTdmKSwgQyg1MDY1MTJkYTE4NzEyNjU2KSwg
Qyg2ODU3ZjNlMGI4ZGQ5NWYpLAotICAgICBDKDVhNGZjMjcyOGE5YmI2NzEpLCBDKGViYjk3MTUy
MmVjMzg3NTkpLCBDKDFhNWEwOTNlNmNmMWY3MmIpLAotICAgICBDKDcyOWIwNTdmZTc4NGY1MDQp
LCBDKDVhNGZjMjcyOGE5YmI2NzEpLCBDKGViYjk3MTUyMmVjMzg3NTkpLAotICAgICBDKDFhNWEw
OTNlNmNmMWY3MmIpLCBDKDcyOWIwNTdmZTc4NGY1MDQpLCBDKDcxZmNiZjQyYTc2N2Y5Y2YpLAot
ICAgICBDKDExNGNmZTc3MmRhNmNkZCksIEMoNjBjZGY5Y2I2MjlkOWQ3YSksIEMoZTI3MGQxMGFk
MDg4YjI0ZSksIEMoNzJjODFkYTEpfSwKKyAgICB7QyhkYmU0YjFiMmQxNzQ3NTdmKSwgQyg1MDY1
MTJkYTE4NzEyNjU2KSwgQyg2ODU3ZjNlMGI4ZGQ5NWYpLCBDKDcyYzgxZGExKX0sCiAgICAge0Mo
NTMxZThlNzdiMzYzMTYxYyksIEMoZWVjZTBiNDNlMmRhZTAzMCksIEMoODI5NGI4MmM3OGYzNGVk
MSksCi0gICAgIEMoZTc3N2IxZmQ1ODA1ODJmMiksIEMoN2I4ODBmNThkYTExMjY5OSksIEMoNTYy
YzZiMTg5YTYzMzNmNCksCi0gICAgIEMoMTM5ZDY0Zjg4YTYxMWQ0KSwgQyhlNzc3YjFmZDU4MDU4
MmYyKSwgQyg3Yjg4MGY1OGRhMTEyNjk5KSwKLSAgICAgQyg1NjJjNmIxODlhNjMzM2Y0KSwgQygx
MzlkNjRmODhhNjExZDQpLCBDKDUzZDhlZjE3ZWRhNjRmYTQpLAotICAgICBDKGJmM2VkZWQxNGRj
NjBhMDQpLCBDKDJiNWM1NTljZjVlYzA3YzUpLCBDKDg4OTVmNzMzOWQwM2E0OGEpLAogICAgICBD
KDZiOWZjZTk1KX0sCiAgICAge0MoZjcxZTljOTI2ZDcxMWUyYiksIEMoZDc3YWYyODUzYTRjZWFh
MSksIEMoOWFhMGQ2ZDc2YTM2ZmFlNyksCi0gICAgIEMoZGQxNmNkMGZiYzA4MzkzKSwgQygyOWE0
MTRhNWQ4YzU4OTYyKSwgQyg3Mjc5M2Q4ZDEwMjJiNWIyKSwKLSAgICAgQygyZThlNjljZjdjYmZm
ZGYwKSwgQyhkZDE2Y2QwZmJjMDgzOTMpLCBDKDI5YTQxNGE1ZDhjNTg5NjIpLAotICAgICBDKDcy
NzkzZDhkMTAyMmI1YjIpLCBDKDJlOGU2OWNmN2NiZmZkZjApLCBDKDM3MjFjMDQ3M2FhOTljOWEp
LAotICAgICBDKDFjZmY0ZWQ5YzMxY2Q5MWMpLCBDKDQ5OTA3MzUwMzNjYzQ4MmIpLCBDKDdmZGY4
YzcwMWM3MmY1NzcpLAogICAgICBDKDE5Mzk5ODU3KX0sCiAgICAge0MoY2IyMGFjMjhmNTJkZjM2
OCksIEMoZTY3MDVlZTc4ODA5OTZkZSksIEMoOWI2NjVjYzNlYzY5NzJmMiksCi0gICAgIEMoNDI2
MGU4YzI1NGU5OTI0YiksIEMoZjE5N2E2ZWI0NTkxNTcyZCksIEMoOGU4NjdmZjBmYjdhYjI3Yyks
Ci0gICAgIEMoZjk1NTAyZmI1MDNlZmFmMyksIEMoNDI2MGU4YzI1NGU5OTI0YiksIEMoZjE5N2E2
ZWI0NTkxNTcyZCksCi0gICAgIEMoOGU4NjdmZjBmYjdhYjI3YyksIEMoZjk1NTAyZmI1MDNlZmFm
MyksIEMoMzBjNDE4NzZiMDhlM2UyMiksCi0gICAgIEMoOTU4ZTI0MTllM2NkMjJmNCksIEMoZjBm
M2FhMWZlMTE5YTEwNyksIEMoNDgxNjYyMzEwYTM3OTEwMCksCiAgICAgIEMoM2M1N2E5OTQpfSwK
ICAgICB7QyhlNGE3OTRiNGFjYjk0YjU1KSwgQyg4OTc5NTM1ODA1N2I2NjFiKSwgQyg5YzRjZGNl
YzE3NmQ3YTcwKSwKLSAgICAgQyg0ODkwYTgzZWU0MzViYzhiKSwgQyhkOGMxYzAwZmNlYjAwOTE0
KSwgQyg5ZTcxMTFiYTIzNGY5MDBmKSwKLSAgICAgQyhlYjhkYmFiMzY0ZDhiNjA0KSwgQyg0ODkw
YTgzZWU0MzViYzhiKSwgQyhkOGMxYzAwZmNlYjAwOTE0KSwKLSAgICAgQyg5ZTcxMTFiYTIzNGY5
MDBmKSwgQyhlYjhkYmFiMzY0ZDhiNjA0KSwgQyhiMzI2MTQ1Mjk2M2VlYmIpLAotICAgICBDKDZj
Zjk0YjAyNzkyYzRmOTUpLCBDKGQ4OGZhODE1ZWYxZThmYyksIEMoMmQ2ODdhZjY2NjA0YzczKSwg
QyhjMDUzZTcyOSl9LAorICAgICBDKGMwNTNlNzI5KX0sCiAgICAge0MoY2I5NDJlOTE0NDNlNzIw
OCksIEMoZTMzNWRlODEyNTU2N2MyYSksIEMoZDRkNzRkMjY4Yjg2ZGYxZiksCi0gICAgIEMoOGJh
MGZkZDJmZmM4YjIzOSksIEMoZjQxM2IzNjZjMWZmZTAyZiksIEMoYzA1YjI3MTdjNTlhOGEyOCks
Ci0gICAgIEMoOTgxMTg4ZWFiNGZjYzhmYiksIEMoOGJhMGZkZDJmZmM4YjIzOSksIEMoZjQxM2Iz
NjZjMWZmZTAyZiksCi0gICAgIEMoYzA1YjI3MTdjNTlhOGEyOCksIEMoOTgxMTg4ZWFiNGZjYzhm
YiksIEMoZTU2M2Y0OWExZDkwNzJiYSksCi0gICAgIEMoM2M2YTNhYTRhMjYzNjdkYyksIEMoYmEw
ZGIxMzQ0ODY1M2YzNCksIEMoMzEwNjVkNzU2MDc0ZDdkNiksCiAgICAgIEMoNTFjYmJiYTcpfSwK
ICAgICB7QyhlY2NhNzU2M2MyMDNmN2JhKSwgQygxNzdhZTI0MjNlZjM0YmIyKSwgQyhmNjBiNzI0
MzQwMGM1NzMxKSwKLSAgICAgQyhjZjFlZGJmZTczMzBlOTRlKSwgQyg4ODE5NDU5MDZiY2IzY2M2
KSwgQyg0YWNmMDI5MzI0NDg1NWRhKSwKLSAgICAgQyg2NWFlMDQyYzFjMmEyOGMyKSwgQyhjZjFl
ZGJmZTczMzBlOTRlKSwgQyg4ODE5NDU5MDZiY2IzY2M2KSwKLSAgICAgQyg0YWNmMDI5MzI0NDg1
NWRhKSwgQyg2NWFlMDQyYzFjMmEyOGMyKSwgQyhiMjVmYTBhMWNhYjMzNTU5KSwKLSAgICAgQyhk
OThlOGRhYTI4MTI0MTMxKSwgQyhmY2UxN2Y1MGI5YzM1MWIzKSwgQygzZjk5NWNjZjczODY4NjRi
KSwKICAgICAgQygxYWNkZTc5YSl9LAogICAgIHtDKDE2NTJjYjk0MDE3N2M4YjUpLCBDKDhjNGZl
N2Q4NWQyYTZkNmQpLCBDKGY2MjE2YWQwOTdlNTRlNzIpLAotICAgICBDKGY2NTIxYjkxMmIzNjhh
ZTYpLCBDKGE5ZmU0ZWZmODFkMDNlNzMpLCBDKGQ2ZjYyMzYyOWY4MGQxYTMpLAotICAgICBDKDJi
OTYwNGYzMmNiN2RjMzQpLCBDKGY2NTIxYjkxMmIzNjhhZTYpLCBDKGE5ZmU0ZWZmODFkMDNlNzMp
LAotICAgICBDKGQ2ZjYyMzYyOWY4MGQxYTMpLCBDKDJiOTYwNGYzMmNiN2RjMzQpLCBDKDJhNDNk
ODRkY2Y1OWM3ZTIpLAotICAgICBDKGQwYTE5N2M3MGM1ZGFlMGIpLCBDKDZlODRkNGJiYzcxZDc2
YTApLCBDKGM3ZTk0NjIwMzc4YzZjYjIpLAogICAgICBDKDJkMTYwZDEzKX0sCiAgICAge0MoMzFm
ZWQwZmMwNGMxM2NlOCksIEMoM2Q1ZDAzZGJmN2ZmMjQwYSksIEMoNzI3YzVjOWI1MTU4MTIwMyks
Ci0gICAgIEMoNmI1ZmZjMWY1NGZlY2IyOSksIEMoYThlOGU3YWQ1YjlhMjFkOSksIEMoYzRkNWEz
MmNkNmFhYzIyZCksCi0gICAgIEMoZDdlMjc0YWQyMmQ0YTc5YSksIEMoNmI1ZmZjMWY1NGZlY2Iy
OSksIEMoYThlOGU3YWQ1YjlhMjFkOSksCi0gICAgIEMoYzRkNWEzMmNkNmFhYzIyZCksIEMoZDdl
Mjc0YWQyMmQ0YTc5YSksIEMoMzY4ODQxZWE1NzMxYTExMiksCi0gICAgIEMoZmVhZjdiYzJlNzNj
YTQ4ZiksIEMoNjM2ZmIyNzJlOWVhMWY2KSwgQyg1ZDljYjc1ODBjM2Y2MjA3KSwgQyg3ODdmNTgw
MSl9LAorICAgICBDKDc4N2Y1ODAxKX0sCiAgICAge0MoZTdiNjY4OTQ3NTkwYjliMyksIEMoYmFh
NDFhZDMyOTM4ZDNmYSksIEMoYWJjYmM4ZDRjYTRiMzllNCksCi0gICAgIEMoMzgxZWUxYjdlYTUz
NGY0ZSksIEMoZGEzNzU5ODI4ZTNkZTQyOSksIEMoM2UwMTVkNzY3MjlmOTk1NSksCi0gICAgIEMo
Y2JiZWM1MWE2NDg1ZmJkZSksIEMoMzgxZWUxYjdlYTUzNGY0ZSksIEMoZGEzNzU5ODI4ZTNkZTQy
OSksCi0gICAgIEMoM2UwMTVkNzY3MjlmOTk1NSksIEMoY2JiZWM1MWE2NDg1ZmJkZSksIEMoOWI4
NjYwNTI4MWYyMDcyNyksCi0gICAgIEMoZmM2ZmNmNTA4Njc2OTgyYSksIEMoM2IxMzVmN2E4MTNh
MTA0MCksIEMoZDNhNDcwNmJlYTFkYjljOSksCiAgICAgIEMoYzk2Mjk4MjgpfSwKICAgICB7Qygx
ZGUyMTE5OTIzZThlZjNjKSwgQyg2YWIyN2MwOTZjZjJmZTE0KSwgQyg4YzM2NThlZGNhOTU4ODkx
KSwKLSAgICAgQyg0Y2M4ZWQzYWRhNWYwZjIpLCBDKDRhNDk2Yjc3YzFmMWMwNGUpLCBDKDkwODVi
MGE4NjIwODQyMDEpLAotICAgICBDKGExODk0YmRlOWUzZGVlMjEpLCBDKDRjYzhlZDNhZGE1ZjBm
MiksIEMoNGE0OTZiNzdjMWYxYzA0ZSksCi0gICAgIEMoOTA4NWIwYTg2MjA4NDIwMSksIEMoYTE4
OTRiZGU5ZTNkZWUyMSksIEMoMzY3ZmI0NzJkYzViMjc3ZCksCi0gICAgIEMoN2QzOWNjY2ExNmZj
Njc0NSksIEMoNzYzZjk4OGQ3MGRiOTEwNiksIEMoYThiNjZmN2ZlY2I3MGYwMiksCiAgICAgIEMo
YmUxMzkyMzEpfSwKICAgICB7QygxMjY5ZGYxZTY5ZTE0ZmE3KSwgQyg5OTJmOWQ1OGFjNTA0MWI3
KSwgQyhlOTdmY2Y2OTVhN2NiYmI0KSwKLSAgICAgQyhlNWQwNTQ5ODAyZDE1MDA4KSwgQyg0MjRj
MTM0ZWNkMGRiODM0KSwgQyg2ZmM0NGZkOTFiZTE1YzZjKSwKLSAgICAgQyhhMWE1ZWY5NWQ1MGU1
MzdkKSwgQyhlNWQwNTQ5ODAyZDE1MDA4KSwgQyg0MjRjMTM0ZWNkMGRiODM0KSwKLSAgICAgQyg2
ZmM0NGZkOTFiZTE1YzZjKSwgQyhhMWE1ZWY5NWQ1MGU1MzdkKSwgQyhkMWUzZGFmNWQwNWY1MzA4
KSwKLSAgICAgQyg0YzdmODE2MDBlYWExMzI3KSwgQygxMDlkMWI4ZDFmOWQwZDJiKSwgQyg4NzFl
ODY5OWUwYWViODYyKSwKICAgICAgQyg3ZGY2OTllZil9LAogICAgIHtDKDgyMDgyNmQ3YWJhNTY3
ZmYpLCBDKDFmNzNkMjhlMDM2YTUyZjMpLCBDKDQxYzRjNWE3M2YzYjA4OTMpLAotICAgICBDKGFh
MGQ3NGQ0YTk4ZGI4OWIpLCBDKDM2ZmQ0ODZkMDdjNTZlMWQpLCBDKGQwYWQyM2NiYjY2NjBkOGEp
LAotICAgICBDKDEyNjRhODQ2NjViMzVlMTkpLCBDKGFhMGQ3NGQ0YTk4ZGI4OWIpLCBDKDM2ZmQ0
ODZkMDdjNTZlMWQpLAotICAgICBDKGQwYWQyM2NiYjY2NjBkOGEpLCBDKDEyNjRhODQ2NjViMzVl
MTkpLCBDKDc4OTY4MmJmN2Q3ODFiMzMpLAotICAgICBDKDZiZmE2YWJkMmZiNTcyMmQpLCBDKDY3
NzljYjM2MjNkMzM5MDApLCBDKDQzNWNhNTIxNGUxZWU1ZjApLAogICAgICBDKDhjZTZiOTZkKX0s
CiAgICAge0MoZmZlMDU0N2U0OTIzY2VmOSksIEMoMzUzNGVkNDliOWRhNWIwMiksIEMoNTQ4YTI3
MzcwMGZiYTAzZCksCi0gICAgIEMoMjhhYzg0Y2E3MDk1OGY3ZSksIEMoZDhhZTU3NWE2OGZhYTcz
MSksIEMoMmFhYWVlOWI5ZGNmZmQ0YyksCi0gICAgIEMoNmM3ZmFhYjVjMjg1YzZkYSksIEMoMjhh
Yzg0Y2E3MDk1OGY3ZSksIEMoZDhhZTU3NWE2OGZhYTczMSksCi0gICAgIEMoMmFhYWVlOWI5ZGNm
ZmQ0YyksIEMoNmM3ZmFhYjVjMjg1YzZkYSksIEMoNDVkOTQyMzVmOTliYTc4ZiksCi0gICAgIEMo
YWI1ZWExNmYzOTQ5N2Y1YiksIEMoZmI0ZDZjODZmY2NiZGNhMyksIEMoODEwNGU2MzEwYTVmZDJj
NyksCiAgICAgIEMoNmY5ZWQ5OWMpfSwKICAgICB7Qyg3MmRhOGQxYjExZDhiYzhiKSwgQyhiYTk0
YjU2YjkxYjY4MWM2KSwgQyg0ZThjYzUxYmQ5YjBmYzhjKSwKLSAgICAgQyg0MzUwNWVkMTMzYmU2
NzJhKSwgQyhlOGYyZjlkOTczYzI3NzRlKSwgQyg2NzdiOWI5YzdjYWQ2ZDk3KSwKLSAgICAgQyg0
ZTFmNWQ1NmVmMTdiOTA2KSwgQyg0MzUwNWVkMTMzYmU2NzJhKSwgQyhlOGYyZjlkOTczYzI3NzRl
KSwKLSAgICAgQyg2NzdiOWI5YzdjYWQ2ZDk3KSwgQyg0ZTFmNWQ1NmVmMTdiOTA2KSwgQyhlZWEz
YTYwMzhmOTgzNzY3KSwKLSAgICAgQyg4NzEwOWYwNzdmODZkYjAxKSwgQyhlY2MxY2E0MWY3NGQ2
MWNjKSwgQygzNGE4N2U4NmU4M2JlZDE3KSwKICAgICAgQyhlMDI0NDc5Nil9LAotICAgIHtDKGQ2
MmFiNGUzZjg4ZmM3OTcpLCBDKGVhODZjN2FlYjYyODNhZTQpLCBDKGI1YjkzZTA5YTdmZTQ2NSks
Ci0gICAgIEMoNDM0NGExYTAxMzRhZmUyKSwgQyhmZjVjMTdmMDJiNjIzNDFkKSwgQygzMjE0YzZh
NTg3Y2U0NjQ0KSwKLSAgICAgQyhhOTA1ZTdlZDA2MjlkMDVjKSwgQyg0MzQ0YTFhMDEzNGFmZTIp
LCBDKGZmNWMxN2YwMmI2MjM0MWQpLAotICAgICBDKDMyMTRjNmE1ODdjZTQ2NDQpLCBDKGE5MDVl
N2VkMDYyOWQwNWMpLCBDKGI1YzcyNjkwY2Q3MTZlODIpLAotICAgICBDKDdjNjA5NzY0OWU2ZWJl
N2IpLCBDKDdjZWVlOGM2ZTU2YTRkY2QpLCBDKDgwY2E4NDlkYzUzZWI5ZTQpLAotICAgICBDKDRj
Y2Y3ZTc1KX0sCisgICAge0MoZDYyYWI0ZTNmODhmYzc5NyksIEMoZWE4NmM3YWViNjI4M2FlNCks
IEMoYjViOTNlMDlhN2ZlNDY1KSwgQyg0Y2NmN2U3NSl9LAogICAgIHtDKGQwZjA2YzI4YzdiMzY4
MjMpLCBDKDEwMDhjYjA4NzRkZTRiYjgpLCBDKGQ2YzdmZjgxNmM3YTczN2IpLAotICAgICBDKDQ4
OWI2OTdmZTMwYWE2NWYpLCBDKDRkYTBmYjYyMWZkYzc4MTcpLCBDKGRjNDM1ODNiODJjNTgxMDcp
LAotICAgICBDKDRiMDI2MWRlYmRlYzNjZDYpLCBDKDQ4OWI2OTdmZTMwYWE2NWYpLCBDKDRkYTBm
YjYyMWZkYzc4MTcpLAotICAgICBDKGRjNDM1ODNiODJjNTgxMDcpLCBDKDRiMDI2MWRlYmRlYzNj
ZDYpLCBDKGE5NzQ4ZDdiNmMwZTAxNmMpLAotICAgICBDKDdlODgyOGY3YmE0YjAzNGIpLCBDKGRh
MGZhNTQzNDhhMjUxMmEpLCBDKGViZjk3NDVjMDk2MmY5YWQpLAogICAgICBDKDkxNWNlZjg2KX0s
CiAgICAge0MoOTliNzA0MjQ2MGQ3MmVjNiksIEMoMmE1M2U1ZTJiOGU3OTVjMiksIEMoNTNhNzgx
MzJkOWUxYjNlMyksCi0gICAgIEMoYzA0M2U2N2U2ZmM2NDExOCksIEMoZmYwYWJmZTkyNmQ4NDRk
MyksIEMoZjJhOWZlNWRiMmU5MTBmZSksCi0gICAgIEMoY2UzNTJjZGM4NGE5NjRkZCksIEMoYzA0
M2U2N2U2ZmM2NDExOCksIEMoZmYwYWJmZTkyNmQ4NDRkMyksCi0gICAgIEMoZjJhOWZlNWRiMmU5
MTBmZSksIEMoY2UzNTJjZGM4NGE5NjRkZCksIEMoYjg5YmMwMjhhYTVlNjA2MyksCi0gICAgIEMo
YTM1NGU3ZmRhYzA0NDU5YyksIEMoNjhkNjU0N2U2ZTk4MDE4OSksIEMoYzk2OGRkZGZkNTczNzcz
ZSksCiAgICAgIEMoNWNiNTk0ODIpfSwKLSAgICB7Qyg0ZjRkZmNmYzBlYzJiYWU1KSwgQyg4NDEy
MzMxNDgyNjhhMWI4KSwgQyg5MjQ4YTc2YWI4YmUwZDMpLAotICAgICBDKDMzNGM1YTI1YjU5MDNh
OGMpLCBDKDRjOTRmZWY0NDMxMjIxMjgpLCBDKDc0M2U3ZDg0NTQ2NTVjNDApLAotICAgICBDKDFh
YjFlNmQxNDUyYWUyY2QpLCBDKDMzNGM1YTI1YjU5MDNhOGMpLCBDKDRjOTRmZWY0NDMxMjIxMjgp
LAotICAgICBDKDc0M2U3ZDg0NTQ2NTVjNDApLCBDKDFhYjFlNmQxNDUyYWUyY2QpLCBDKGZlYzc2
NmRlNGE4ZTQ3NmMpLAotICAgICBDKGNjMDkyOWRhOTU2N2U3MWIpLCBDKDVmOWVmNWI1ZjE1MGMz
NWEpLCBDKDg3NjU5Y2FiZDY0OTc2OGYpLAotICAgICBDKDZjYTNmNTMyKX0sCisgICAge0MoNGY0
ZGZjZmMwZWMyYmFlNSksIEMoODQxMjMzMTQ4MjY4YTFiOCksIEMoOTI0OGE3NmFiOGJlMGQzKSwg
Qyg2Y2EzZjUzMil9LAogICAgIHtDKGZlODZiZjlkNDQyMmI5YWUpLCBDKGViY2U4OWM5MDY0MWVm
OWMpLCBDKDFjODRlMjI5MmMwYjU2NTkpLAotICAgICBDKDhiZGU2MjVhMTBhOGM1MGQpLCBDKGVi
ODI3MWRlZDFmNzlhMGIpLCBDKDE0ZGM2ODQ0ZjBkZTdhM2MpLAotICAgICBDKGY4NWIyZjk1NDFl
N2U2ZGEpLCBDKDhiZGU2MjVhMTBhOGM1MGQpLCBDKGViODI3MWRlZDFmNzlhMGIpLAotICAgICBD
KDE0ZGM2ODQ0ZjBkZTdhM2MpLCBDKGY4NWIyZjk1NDFlN2U2ZGEpLCBDKDJmZTIyY2ZkMTY4M2I5
NjEpLAotICAgICBDKGVhMWQ3NWM1YjdhYTAxY2EpLCBDKDllZWY2MGE0NDg3NmJiOTUpLCBDKDk1
MGM4MThlNTA1YzZmN2YpLAogICAgICBDKGUyNGYzODU5KX0sCiAgICAge0MoYTkwZDgxMDYwOTMy
ZGJiMCksIEMoOGFjZmFhODhjNWZiZTkyYiksIEMoN2M2ZjM0NDdlOTBmN2YzZiksCi0gICAgIEMo
ZGQ1MmZjMTRjOGRkMzE0MyksIEMoMWJjNzUwODUxNmU0MDYyOCksIEMoMzA1OTczMDI2NmFkZTYy
NiksCi0gICAgIEMoZmZhNTI2ODIyZjM5MWMyKSwgQyhkZDUyZmMxNGM4ZGQzMTQzKSwgQygxYmM3
NTA4NTE2ZTQwNjI4KSwKLSAgICAgQygzMDU5NzMwMjY2YWRlNjI2KSwgQyhmZmE1MjY4MjJmMzkx
YzIpLCBDKGUyNTIzMmQ3YWZjOGE0MDYpLAotICAgICBDKGQyYjhhNWEzZjNiNWY2NzApLCBDKDY2
MzBmMzNlZGI3ZGZlMzIpLCBDKGM3MTI1MGJhNjhjNGVhODYpLAogICAgICBDKGFkZjVhOWM3KX0s
CiAgICAge0MoMTc5MzhhMWIwZTdmNTk1MiksIEMoMjJjYWRkMmY1NmY4YTRiZSksIEMoODRiMGQx
MTgzZDVlZDdjMSksCi0gICAgIEMoYzEzMzZiOTJmZWY5MWJmNiksIEMoODAzMzJhMzk0NWYzM2Zh
OSksIEMoYTBmNjhiODZmNzI2ZmY5MiksCi0gICAgIEMoYTNkYjUyODJjZjVmNGMwYiksIEMoYzEz
MzZiOTJmZWY5MWJmNiksIEMoODAzMzJhMzk0NWYzM2ZhOSksCi0gICAgIEMoYTBmNjhiODZmNzI2
ZmY5MiksIEMoYTNkYjUyODJjZjVmNGMwYiksIEMoODI2NDBiNmZjNDkxNjYwNyksCi0gICAgIEMo
MmRjMmEzYWExYTg5NDE3NSksIEMoOGI0Yzg1MmJkZWU3Y2M5KSwgQygxMGI5ZDBhMDhiNTVmZjgz
KSwgQygzMjI2NGI3NSl9LAorICAgICBDKDMyMjY0Yjc1KX0sCiAgICAge0MoZGU5ZTBjYjBlMTZm
NmU2ZCksIEMoMjM4ZTYyODNhYTRmNjU5NCksIEMoNGZiOWM5MTRjMmYwYTEzYiksCi0gICAgIEMo
NDk3Y2I5MTJiNjcwZjNiKSwgQyhkOTYzYTNmMDJmZjRhNWI2KSwgQyg0ZmNjZWZhZTExYjUwMzkx
KSwKLSAgICAgQyg0MmJhNDdkYjNmNzY3MmYpLCBDKDQ5N2NiOTEyYjY3MGYzYiksIEMoZDk2M2Ez
ZjAyZmY0YTViNiksCi0gICAgIEMoNGZjY2VmYWUxMWI1MDM5MSksIEMoNDJiYTQ3ZGIzZjc2NzJm
KSwgQygxZDZiNjU1YTE4ODlmZWVmKSwKLSAgICAgQyg1ZjMxOWFiZjhmYWZhMTlmKSwgQyg3MTVj
MmU0OWRlYjE0NjIwKSwgQyg4ZDkxNTMwODJlY2RjZWE0KSwKICAgICAgQyhhNjRiMzM3Nil9LAot
ICAgIHtDKDZkNGI4NzZkOWIxNDZkMWEpLCBDKGFhYjJkNjRjZThmMjY3MzkpLCBDKGQzMTVmOTM2
MDBlODNmZTUpLAotICAgICBDKDJmZTlmYWJkYmU3ZmRkNCksIEMoNzU1ZGIyNDlhMmQ4MWE2OSks
IEMoZjI3OTI5ZjM2MDQ0NmQ3MSksCi0gICAgIEMoNzlhMWJmOTU3YzBjMWI5MiksIEMoMmZlOWZh
YmRiZTdmZGQ0KSwgQyg3NTVkYjI0OWEyZDgxYTY5KSwKLSAgICAgQyhmMjc5MjlmMzYwNDQ2ZDcx
KSwgQyg3OWExYmY5NTdjMGMxYjkyKSwgQygzYzhhMjhkNGM5MzZjOWNkKSwKLSAgICAgQyhkZjBk
M2QxM2IyYzZhOTAyKSwgQyhjNzY3MDJkZDk3Y2QyZWRkKSwgQygxYWEyMjBmN2JlMTY1MTcpLCBD
KGQzMzg5MGUpfSwKKyAgICB7Qyg2ZDRiODc2ZDliMTQ2ZDFhKSwgQyhhYWIyZDY0Y2U4ZjI2NzM5
KSwgQyhkMzE1ZjkzNjAwZTgzZmU1KSwgQyhkMzM4OTBlKX0sCiAgICAge0MoZTY5OGZhM2Y1NGU2
ZWEyMiksIEMoYmQyOGUyMGU3NDU1MzU4YyksIEMoOWFjZTE2MWY2ZWE3NmU2NiksCi0gICAgIEMo
ZDUzZmI3ZTNjOTNhOWU0KSwgQyg3MzdhZTcxYjA1MWJmMTA4KSwgQyg3YWM3MWZlYjg0YzJkZjQy
KSwKLSAgICAgQygzZDgwNzVjZDI5M2ExNWI0KSwgQyhkNTNmYjdlM2M5M2E5ZTQpLCBDKDczN2Fl
NzFiMDUxYmYxMDgpLAotICAgICBDKDdhYzcxZmViODRjMmRmNDIpLCBDKDNkODA3NWNkMjkzYTE1
YjQpLCBDKGJmOGNlZTVlMDk1ZDhhN2MpLAotICAgICBDKGU3MDg2YjNjNzYwODE0M2EpLCBDKGU1
NWIwYzJmYTkzOGQ3MGMpLCBDKGZmZmI1ZjU4ZTY0MzY0OWMpLAogICAgICBDKDkyNmQ0YjYzKX0s
CiAgICAge0MoN2JjMGRlZWQ0ZmIzNDlmNyksIEMoMTc3MWFmZjI1ZGM3MjJmYSksIEMoMTlmZjA2
NDRkOTY4MTkxNyksCi0gICAgIEMoY2Y3ZDdmMjViZDcwY2QyYyksIEMoOTQ2NGVkOWJhZWI0MWI0
ZiksIEMoYjkwNjRmNWMzY2IxMWI3MSksCi0gICAgIEMoMjM3ZTM5MjI5YjAxMmIyMCksIEMoY2Y3
ZDdmMjViZDcwY2QyYyksIEMoOTQ2NGVkOWJhZWI0MWI0ZiksCi0gICAgIEMoYjkwNjRmNWMzY2Ix
MWI3MSksIEMoMjM3ZTM5MjI5YjAxMmIyMCksIEMoZGQ1NGQzZjVkOTgyZGZmZSksCi0gICAgIEMo
N2ZjNzU2MmRiZmM4MWRiZiksIEMoNWIwZGQxOTI0ZjcwOTQ1KSwgQyhmMTc2MDUzN2Q4MjYxMTM1
KSwgQyhkNTFiYTUzOSl9LAorICAgICBDKGQ1MWJhNTM5KX0sCiAgICAge0MoZGI0YjE1ZTg4NTMz
ZjYyMiksIEMoMjU2ZDZkMjQxOWI0MWNlOSksIEMoOWQ3YzUzNzgzOTY3NjVkNSksCi0gICAgIEMo
OTA0MGU1YjkzNmI4NjYxYiksIEMoMjc2ZTA4ZmE1M2FjMjdmZCksIEMoOGM5NDRkMzljMmJkZDJj
YyksCi0gICAgIEMoZTI1MTRjOTgwMmE1NzQzYyksIEMoOTA0MGU1YjkzNmI4NjYxYiksIEMoMjc2
ZTA4ZmE1M2FjMjdmZCksCi0gICAgIEMoOGM5NDRkMzljMmJkZDJjYyksIEMoZTI1MTRjOTgwMmE1
NzQzYyksIEMoZTgyMTA3YjExYWM5MDM4NiksCi0gICAgIEMoN2Q2YTIyYmMzNTA1NWU2KSwgQyhm
ZDZlYTlkMWM0MzhkOGFlKSwgQyhiZTYwMTUxNDllOTgxNTUzKSwgQyg3ZjM3NjM2ZCl9LAorICAg
ICBDKDdmMzc2MzZkKX0sCiAgICAge0MoOTIyODM0NzM1ZTg2ZWNiMiksIEMoMzYzMzgyNjg1Yjg4
MzI4ZSksIEMoZTljOTI5NjBkNzE0NDYzMCksCi0gICAgIEMoODQzMWIxYmZkMGEyMzc5YyksIEMo
OTAzODM5MTNhZWEyODNmOSksIEMoYTYxNjM4MzFlYjQ5MjRkMiksCi0gICAgIEMoNWYzOTIxYjRm
OTA4NGFlZSksIEMoODQzMWIxYmZkMGEyMzc5YyksIEMoOTAzODM5MTNhZWEyODNmOSksCi0gICAg
IEMoYTYxNjM4MzFlYjQ5MjRkMiksIEMoNWYzOTIxYjRmOTA4NGFlZSksIEMoN2E3MDA2MWExNDcz
ZTU3OSksCi0gICAgIEMoNWIxOWQ4MGRjZDJjNjMzMSksIEMoNjE5NmI5NzkzMWZhYWQyNyksIEMo
ODY5YmY2ODI4ZTIzN2MzZiksCiAgICAgIEMoYjk4MDI2YzApfSwKICAgICB7QygzMGYxZDcyYzgx
MmYxZWI4KSwgQyhiNTY3Y2Q0YTY5Y2Q4OTg5KSwgQyg4MjBiNmM5OTJhNTFmMGJjKSwKLSAgICAg
QyhjNTQ2NzdhODAzNjcxMjVlKSwgQygzMjA0ZmJkYmE0NjJlNjA2KSwgQyg4NTYzMjc4YWZjOWVh
ZTY5KSwKLSAgICAgQygyNjIxNDdkZDRiZjdlNTY2KSwgQyhjNTQ2NzdhODAzNjcxMjVlKSwgQygz
MjA0ZmJkYmE0NjJlNjA2KSwKLSAgICAgQyg4NTYzMjc4YWZjOWVhZTY5KSwgQygyNjIxNDdkZDRi
ZjdlNTY2KSwgQygyMTc4YjYzZTdlZTJkMjMwKSwKLSAgICAgQyhlOWM2MWFkODFmNWJmZjI2KSwg
Qyg5YWY3YTgxYjNjNTAxZWNhKSwgQyg0NDEwNGEzODU5ZjAyMzhmKSwKICAgICAgQyhiODc3NzY3
ZSl9LAotICAgIHtDKDE2ODg4NDI2N2YzODE3ZTkpLCBDKDViMzc2ZTA1MGY2Mzc2NDUpLCBDKDFj
MTgzMTRhYmQzNDQ5N2EpLAotICAgICBDKDk1OThmNmFiMDY4M2ZjYzIpLCBDKDFjODA1YWJmN2I4
MGUxZWUpLCBDKGRlYzlhYzQyZWUwZDBmMzIpLAotICAgICBDKDhjZDcyZTM5MTJkMjQ2NjMpLCBD
KDk1OThmNmFiMDY4M2ZjYzIpLCBDKDFjODA1YWJmN2I4MGUxZWUpLAotICAgICBDKGRlYzlhYzQy
ZWUwZDBmMzIpLCBDKDhjZDcyZTM5MTJkMjQ2NjMpLCBDKDFmMDI1ZDQwNWYxYzFkODcpLAotICAg
ICBDKGJmN2I2MjIxZTE2NjhmOGYpLCBDKDUyMzE2ZjY0ZTY5MmRiYjApLCBDKDdiZjQzZGY2MWVj
NTFiMzkpLCBDKGFlZmFlNzcpfSwKLSAgICB7Qyg4MmU3ODU5NmVlM2U1NmE3KSwgQygyNTY5N2Q5
Yzg3ZjMwZDk4KSwgQyg3NjAwYTgzNDI4MzQ5MjRkKSwKLSAgICAgQyg2YmEzNzJmNGI3YWIyNjhi
KSwgQyg4YzMyMzdjZjFmZTI0M2RmKSwgQygzODMzZmM1MTAxMjkwM2RmKSwKLSAgICAgQyg4ZTMx
MzEwMTA4YzU2ODNmKSwgQyg2YmEzNzJmNGI3YWIyNjhiKSwgQyg4YzMyMzdjZjFmZTI0M2RmKSwK
LSAgICAgQygzODMzZmM1MTAxMjkwM2RmKSwgQyg4ZTMxMzEwMTA4YzU2ODNmKSwgQygxMjY1OTM3
MTVjMmRlNDI5KSwKLSAgICAgQyg0OGNhOGYzNWEzZjU0YjkwKSwgQyhiOTMyMmI2MzJmNGY4YjAp
LCBDKDkyNmJiMTY5YjczMzc2OTMpLCBDKGY2ODY5MTEpfSwKKyAgICB7QygxNjg4ODQyNjdmMzgx
N2U5KSwgQyg1YjM3NmUwNTBmNjM3NjQ1KSwgQygxYzE4MzE0YWJkMzQ0OTdhKSwgQyhhZWZhZTc3
KX0sCisgICAge0MoODJlNzg1OTZlZTNlNTZhNyksIEMoMjU2OTdkOWM4N2YzMGQ5OCksIEMoNzYw
MGE4MzQyODM0OTI0ZCksIEMoZjY4NjkxMSl9LAogICAgIHtDKGFhMmQ2Y2YyMmUzY2MyNTIpLCBD
KDliNGRlYzRmNWUxNzlmMTYpLCBDKDc2ZmIwZmJhMWQ5OWE5OWEpLAotICAgICBDKDlhNjJhZjNk
YmJhMTQwZGEpLCBDKDI3ODU3ZWEwNDRlOWRmYzEpLCBDKDMzYWJjZTlkYTIyNzI2NDcpLAotICAg
ICBDKGIyMmE3OTkzYWFmMzI1NTYpLCBDKDlhNjJhZjNkYmJhMTQwZGEpLCBDKDI3ODU3ZWEwNDRl
OWRmYzEpLAotICAgICBDKDMzYWJjZTlkYTIyNzI2NDcpLCBDKGIyMmE3OTkzYWFmMzI1NTYpLCBD
KGJmOGY4OGY4MDE5YmVkZjApLAotICAgICBDKGVkMmQ3ZjAxZmIyNzM5MDUpLCBDKDZiNDVmMTU5
MDFiNDgxY2QpLCBDKGY4OGViYjQxM2JhNmE4ZDUpLAogICAgICBDKDNkZWFkZjEyKX0sCiAgICAg
e0MoN2JmNWZmZDdmNjkzODVjNyksIEMoZmMwNzdiMWQ4YmM4Mjg3OSksIEMoOWMwNGUzNmY5ZWQ4
M2EyNCksCi0gICAgIEMoODIwNjVjNjJlNjU4MjE4OCksIEMoOGVmNzg3ZmQzNTZmNWU0MyksIEMo
MjkyMmU1M2UzNmUxN2RmYSksCi0gICAgIEMoOTgwNWYyMjNkMzg1MDEwYiksIEMoODIwNjVjNjJl
NjU4MjE4OCksIEMoOGVmNzg3ZmQzNTZmNWU0MyksCi0gICAgIEMoMjkyMmU1M2UzNmUxN2RmYSks
IEMoOTgwNWYyMjNkMzg1MDEwYiksIEMoNjkyMTU0ZjM0OTFiNzg3ZCksCi0gICAgIEMoZTdlNjQ3
MDBlNDE0ZmJmKSwgQyg3NTdkNGQ0YWI2NTA2OWEwKSwgQyhjZDAyOTQ0NmE4ZTM0OGUyKSwgQyhj
Y2YwMmE0ZSl9LAorICAgICBDKGNjZjAyYTRlKX0sCiAgICAge0MoZTg5YzhmZjlmOWM2ZTM0Yiks
IEMoZjU0YzBmNjY5YTQ5ZjZjNCksIEMoZmMzZTQ2ZjVkODQ2YWRlZiksCi0gICAgIEMoMjJmMmFh
M2RmMjIyMWNjKSwgQyhmNjZmZWE5MGY1ZDYyMTc0KSwgQyhiNzVkZWZhZWFhMWRkMmE3KSwKLSAg
ICAgQyg5Yjk5NGNkOWE3MjE0ZmQ1KSwgQygyMmYyYWEzZGYyMjIxY2MpLCBDKGY2NmZlYTkwZjVk
NjIxNzQpLAotICAgICBDKGI3NWRlZmFlYWExZGQyYTcpLCBDKDliOTk0Y2Q5YTcyMTRmZDUpLCBD
KGZhYzY3NWEzMTgwNGI3NzMpLAotICAgICBDKDk4YmNiM2I4MjBjNTBmYzYpLCBDKGUxNGFmNjRk
MjhjZjA4ODUpLCBDKDI3NDY2ZmJkMmIzNjBlYjUpLAogICAgICBDKDE3NmMxNzIyKX0sCi0gICAg
e0MoYTE4ZmJjZGNjZDExZTFmNCksIEMoODI0ODIxNjc1MWRmZDY1ZSksIEMoNDBjMDg5ZjIwOGQ4
OWQ3YyksCi0gICAgIEMoMjI5Yjc5YWI2OWFlOTdkKSwgQyhhODdhYWJjMmVjMjZlNTgyKSwgQyhi
ZTJiMDUzNzIxZWIyNmQyKSwKLSAgICAgQygxMGZlYmQ3ZjBjM2Q2ZmNiKSwgQygyMjliNzlhYjY5
YWU5N2QpLCBDKGE4N2FhYmMyZWMyNmU1ODIpLAotICAgICBDKGJlMmIwNTM3MjFlYjI2ZDIpLCBD
KDEwZmViZDdmMGMzZDZmY2IpLCBDKDljYzViOWIyZjZlM2JmN2IpLAotICAgICBDKDY1NWQ4NDk1
ZmU2MjRhODYpLCBDKDYzODFhOWYzZDFmMmJkN2UpLCBDKDc5ZWJhYmJmYzI1YzgzZTIpLCBDKDI2
ZjgyYWQpfSwKKyAgICB7QyhhMThmYmNkY2NkMTFlMWY0KSwgQyg4MjQ4MjE2NzUxZGZkNjVlKSwg
Qyg0MGMwODlmMjA4ZDg5ZDdjKSwgQygyNmY4MmFkKX0sCiAgICAge0MoMmQ1NGY0MGNjNDA4OGIx
NyksIEMoNTlkMTU2MzNiMGNkMTM5OSksIEMoYThjYzA0YmIxYmZmZDE1YiksCi0gICAgIEMoZDMz
MmNkYjA3M2Q4ZGM0NiksIEMoMjcyYzU2NDY2ODY4Y2I0NiksIEMoN2U3ZmNiZTM1Y2E2YzNmMyks
Ci0gICAgIEMoZWU4ZjUxZTVhNzAzOTlkNCksIEMoZDMzMmNkYjA3M2Q4ZGM0NiksIEMoMjcyYzU2
NDY2ODY4Y2I0NiksCi0gICAgIEMoN2U3ZmNiZTM1Y2E2YzNmMyksIEMoZWU4ZjUxZTVhNzAzOTlk
NCksIEMoMTY3MzdhOWM3NTgxZmU3YiksCi0gICAgIEMoZWQwNGJmNTJmNGI3NWRjYiksIEMoOTcw
N2ZmYjM2YmQzMGMxYSksIEMoMTM5MGYyMzZmZGMwZGUzZSksCiAgICAgIEMoYjUyNDRmNDIpfSwK
ICAgICB7Qyg2OTI3Njk0NmNiNGU4N2M3KSwgQyg2MmJkYmU2MTgzYmU2ZmE5KSwgQygzYmE5Nzcz
ZGFjNDQyYTFhKSwKLSAgICAgQyg3MDJlMmFmYzdmNWExODI1KSwgQyg4YzQ5YjExZWE4MTUxZmRj
KSwgQyhjYWYzZmVmNjFmNWE4NmZhKSwKLSAgICAgQyhlZjBiMmVlODY0OWQ3MjcyKSwgQyg3MDJl
MmFmYzdmNWExODI1KSwgQyg4YzQ5YjExZWE4MTUxZmRjKSwKLSAgICAgQyhjYWYzZmVmNjFmNWE4
NmZhKSwgQyhlZjBiMmVlODY0OWQ3MjcyKSwgQyg5ZTM0YTRlMDhkOTQ0MWUxKSwKLSAgICAgQyg3
YmRjMGNkNjRkNWFmNTMzKSwgQyhhOTI2YjE0ZDk5ZTNkODY4KSwgQyhmY2E5MjNhMTc3ODhjY2U0
KSwKICAgICAgQyg0OWE2ODllNSl9LAotICAgIHtDKDY2ODE3NGEzZjQ0M2RmMWQpLCBDKDQwNzI5
OTM5MmRhMWNlODYpLCBDKGMyYTNmN2Q3ZjJjNWJlMjgpLAotICAgICBDKGE1OTBiMjAyYTdhNTgw
N2IpLCBDKDk2OGQyNTkzZjdjY2I1NGUpLCBDKDlkZDhkNjY5ZTNlOTVkZWMpLAotICAgICBDKGVl
MGNjNWRkNThiNmU5M2EpLCBDKGE1OTBiMjAyYTdhNTgwN2IpLCBDKDk2OGQyNTkzZjdjY2I1NGUp
LAotICAgICBDKDlkZDhkNjY5ZTNlOTVkZWMpLCBDKGVlMGNjNWRkNThiNmU5M2EpLCBDKGFjNjVk
NWE5NDY2ZmI0ODMpLAotICAgICBDKDIyMWJlNTM4YjJjOWQ4MDYpLCBDKDVjYmU5NDQxNzg0Zjlm
ZDkpLCBDKGQ0YzdkNWQ2ZTNjMTIyYjgpLCBDKDU5ZmNkZDMpfSwKLSAgICB7Qyg1ZTI5YmU4NDdi
ZDUwNDYpLCBDKGI1NjFjN2YxOWM4ZjgwYzMpLCBDKDVlNWFiZDUwMjFjY2FlYWYpLAotICAgICBD
KDc0MzJkNjM4ODhlMGMzMDYpLCBDKDc0YmJjZWVlZDQ3OWNiNzEpLCBDKDY0NzE1ODY1OTk1NzVm
ZGYpLAotICAgICBDKDZhODU5YWQyMzM2NWNiYTIpLCBDKDc0MzJkNjM4ODhlMGMzMDYpLCBDKDc0
YmJjZWVlZDQ3OWNiNzEpLAotICAgICBDKDY0NzE1ODY1OTk1NzVmZGYpLCBDKDZhODU5YWQyMzM2
NWNiYTIpLCBDKGY5Y2VlYzg0YWNkMThkY2MpLAotICAgICBDKDc0YTI0MmZmMTkwNzQzN2MpLCBD
KGY3MDg5MDE5NGUxZWU5MTMpLCBDKDc3N2RmY2I0YmIwMWYwYmEpLAotICAgICBDKDRmNGIwNGU5
KX0sCisgICAge0MoNjY4MTc0YTNmNDQzZGYxZCksIEMoNDA3Mjk5MzkyZGExY2U4NiksIEMoYzJh
M2Y3ZDdmMmM1YmUyOCksIEMoNTlmY2RkMyl9LAorICAgIHtDKDVlMjliZTg0N2JkNTA0NiksIEMo
YjU2MWM3ZjE5YzhmODBjMyksIEMoNWU1YWJkNTAyMWNjYWVhZiksIEMoNGY0YjA0ZTkpfSwKICAg
ICB7QyhjZDBkNzlmMjE2NGRhMDE0KSwgQyg0YzM4NmJiNWM1ZDZjYTBjKSwgQyg4ZTc3MWIwMzY0
N2MzYjYzKSwKLSAgICAgQyg2OWRiMjM4NzVjYjBiNzE1KSwgQyhhZGE4ZGQ5MTUwNGFlMzdmKSwg
Qyg0NmJmMThkYmYwNDVlZDZhKSwKLSAgICAgQyhlMWI1ZjY3YjA2NDVhYjYzKSwgQyg2OWRiMjM4
NzVjYjBiNzE1KSwgQyhhZGE4ZGQ5MTUwNGFlMzdmKSwKLSAgICAgQyg0NmJmMThkYmYwNDVlZDZh
KSwgQyhlMWI1ZjY3YjA2NDVhYjYzKSwgQyg4NzdiZThmNWRjZGRmZjQpLAotICAgICBDKDZkNDcx
YjVmOWNhMmUyZDEpLCBDKDgwMmM4NmQ2ZjQ5NWI5YmIpLCBDKGExZjliOWIyMmIzYmU3MDQpLAog
ICAgICBDKDhiMDBmODkxKX0sCiAgICAge0MoZTBlNmZjMGIxNjI4YWYxZCksIEMoMjliZTVmYjRj
MjdhMjk0OSksIEMoMWMzZjc4MWE2MDRkMzYzMCksCi0gICAgIEMoYzRhZjdmYWY4ODMwMzNhYSks
IEMoOWJkMjk2YzRlOTQ1M2NhYyksIEMoY2E0NTQyNmMxZjdlMzNmOSksCi0gICAgIEMoYTZiYmRj
ZjcwNzRkNDBjNSksIEMoYzRhZjdmYWY4ODMwMzNhYSksIEMoOWJkMjk2YzRlOTQ1M2NhYyksCi0g
ICAgIEMoY2E0NTQyNmMxZjdlMzNmOSksIEMoYTZiYmRjZjcwNzRkNDBjNSksIEMoZTEzYTAwNWQ3
MTQyNzMzYiksCi0gICAgIEMoYzAyYjc5MjVjNWVlZWZhZiksIEMoZDM5MTE5YTYwNDQxZTJkNSks
IEMoM2MyNGM3MTBkZjhmNGQ0MyksCiAgICAgIEMoMTZlMTE0ZjMpfSwKICAgICB7QygyMDU4OTI3
NjY0YWRmZDkzKSwgQyg2ZThmOTY4Yzc5NjNiYWE1KSwgQyhhZjNkY2VkNmZmZjdjMzk0KSwKLSAg
ICAgQyg0MmUzNGNmM2Q1M2M3ODc2KSwgQyg5Y2RkYmIyNjQyNGRjNWUpLCBDKDY0ZjYzNDBhNmQ4
ZWRkYWQpLAotICAgICBDKDIxOTZlNDg4ZWIyYTNhNGIpLCBDKDQyZTM0Y2YzZDUzYzc4NzYpLCBD
KDljZGRiYjI2NDI0ZGM1ZSksCi0gICAgIEMoNjRmNjM0MGE2ZDhlZGRhZCksIEMoMjE5NmU0ODhl
YjJhM2E0YiksIEMoYzllOWRhMjU5MTFhMTZmZCksCi0gICAgIEMoZTIxYjQ2ODNmM2UxOTZhOCks
IEMoY2I4MGJmMWE0YzZmZGJiNCksIEMoNTM3OTJlOWIzYzNlNjdmOCksCiAgICAgIEMoZDZiNmRh
ZGMpfSwKICAgICB7QyhkYzEwNzI4NWZkOGUxYWY3KSwgQyhhODY0MWEwNjA5MzIxZjNmKSwgQyhk
YjA2ZTg5ZmZkYzU0NDY2KSwKLSAgICAgQyhiY2M3YTgxZWQ1NDMyNDI5KSwgQyhiNmQ3YmRjNmFk
MmU4MWYxKSwgQyg5MzYwNWVjNDcxYWEzN2RiKSwKLSAgICAgQyhhMmE3M2Y4YTg1YThlMzk3KSwg
QyhiY2M3YTgxZWQ1NDMyNDI5KSwgQyhiNmQ3YmRjNmFkMmU4MWYxKSwKLSAgICAgQyg5MzYwNWVj
NDcxYWEzN2RiKSwgQyhhMmE3M2Y4YTg1YThlMzk3KSwgQygxMGEwMTJiOGNhN2FjMjRiKSwKLSAg
ICAgQyhhYWM1ZmQ2MzM1MTU5NWNmKSwgQyg1YmI0YzY0OGEyMjZkZWEwKSwgQyg5ZDExZWNiMmI1
YzA1YzVmKSwKICAgICAgQyg4OTdlMjBhYyl9LAotICAgIHtDKGZiYmExYWZlMmUzMjgwZjEpLCBD
KDc1NWE1ZjM5MmYwN2ZjZSksIEMoOWU0NGE5YTE1NDAyODA5YSksCi0gICAgIEMoNjIyNmEzMmUy
NTA5OTg0OCksIEMoZWE4OTU2NjFlY2Y1MzAwNCksIEMoNGQ3ZTAxNThkYjIyMjhiOSksCi0gICAg
IEMoZTVhN2Q4MjkyMmY2OTg0MiksIEMoNjIyNmEzMmUyNTA5OTg0OCksIEMoZWE4OTU2NjFlY2Y1
MzAwNCksCi0gICAgIEMoNGQ3ZTAxNThkYjIyMjhiOSksIEMoZTVhN2Q4MjkyMmY2OTg0MiksIEMo
MmNlYTc3MTNiNjk4NDBjYSksCi0gICAgIEMoMThkZTdiOWFlOTM4Mzc1YiksIEMoZjEyN2NjYTA4
ZjNjYzY2NSksIEMoYjFjMjJkNzI3NjY1YWQyKSwgQyhmOTk2ZTA1ZCl9LAorICAgIHtDKGZiYmEx
YWZlMmUzMjgwZjEpLCBDKDc1NWE1ZjM5MmYwN2ZjZSksIEMoOWU0NGE5YTE1NDAyODA5YSksIEMo
Zjk5NmUwNWQpfSwKICAgICB7QyhiZmExMDc4NWRkYzEwMTFiKSwgQyhiNmUxYzRkMmY2NzBmN2Rl
KSwgQyg1MTdkOTU2MDRlNGZjYzFmKSwKLSAgICAgQyhjYTY1NTJhMGRmYjgyYzczKSwgQyhiMDI0
Y2RmMDllMzRiYTA3KSwgQyg2NmNkOGM1YTk1ZDczOTNiKSwKLSAgICAgQyhlMzkzOWFjZjc5MGQ0
YTc0KSwgQyhjYTY1NTJhMGRmYjgyYzczKSwgQyhiMDI0Y2RmMDllMzRiYTA3KSwKLSAgICAgQyg2
NmNkOGM1YTk1ZDczOTNiKSwgQyhlMzkzOWFjZjc5MGQ0YTc0KSwgQyg5NzgyNzU0MWExZWYwNTFl
KSwKLSAgICAgQyhhYzJmY2U0N2ViZTY1MDBjKSwgQyhiM2YwNmQzYmRkZjNiZDZhKSwgQygxZDc0
YWZiMjVlMWNlNWZlKSwKICAgICAgQyhjNDMwNmFmNil9LAotICAgIHtDKDUzNGNjMzVmMGVlMWVi
NGUpLCBDKGI3MDM4MjBmMWYzYjNkY2UpLCBDKDg4NGFhMTY0Y2YyMjM2MyksCi0gICAgIEMoZjE0
ZWY3ZjQ3ZDhhNTdhMyksIEMoODBkMWY4NmYyZTA2MWQ3YyksIEMoNDAxZDZjMmYxNTFiNWE2Miks
Ci0gICAgIEMoZTk4ODQ2MDIyNDEwODk0NCksIEMoZjE0ZWY3ZjQ3ZDhhNTdhMyksIEMoODBkMWY4
NmYyZTA2MWQ3YyksCi0gICAgIEMoNDAxZDZjMmYxNTFiNWE2MiksIEMoZTk4ODQ2MDIyNDEwODk0
NCksIEMoNzgwNGQ0MTM1ZjY4Y2QxOSksCi0gICAgIEMoNTQ4N2I0YjM5ZTY5ZmU4ZSksIEMoOGNj
NTk5OTAxNTM1OGEyNyksIEMoOGYzNzI5YjYxYzJkNTYwMSksCi0gICAgIEMoNmRjYWQ0MzMpfSwK
LSAgICB7Qyg3Y2E2ZTM5MzM5OTVkYWMpLCBDKGZkMTE4Yzc3ZGFhODE4OCksIEMoM2FjZWI3YjVl
N2RhNjU0NSksCi0gICAgIEMoYzgzODk3OTk0NDU0ODBkYiksIEMoNTM4OWY1ZGY4YWFjZDUwZCks
IEMoZDEzNjU4MWYyMmZhYjVmKSwKLSAgICAgQyhjMmYzMWY4NTk5MWRhNDE3KSwgQyhjODM4OTc5
OTQ0NTQ4MGRiKSwgQyg1Mzg5ZjVkZjhhYWNkNTBkKSwKLSAgICAgQyhkMTM2NTgxZjIyZmFiNWYp
LCBDKGMyZjMxZjg1OTkxZGE0MTcpLCBDKGFlZmJmOWZmODQwMzVhNDMpLAotICAgICBDKDhhY2Ni
YWY0NGFkYWRkN2MpLCBDKGU1N2YzNjU3MzQ0YjY3ZjUpLCBDKDIxNDkwZTVlOGFiZGVjNTEpLAot
ICAgICBDKDNjMDczNzRkKX0sCisgICAge0MoNTM0Y2MzNWYwZWUxZWI0ZSksIEMoYjcwMzgyMGYx
ZjNiM2RjZSksIEMoODg0YWExNjRjZjIyMzYzKSwgQyg2ZGNhZDQzMyl9LAorICAgIHtDKDdjYTZl
MzkzMzk5NWRhYyksIEMoZmQxMThjNzdkYWE4MTg4KSwgQygzYWNlYjdiNWU3ZGE2NTQ1KSwgQygz
YzA3Mzc0ZCl9LAogICAgIHtDKGYwZDYwNDRmNmVmZDc1OTgpLCBDKGUwNDRkNmJhNDM2OTg1NmUp
LCBDKDkxOTY4ZTRmOGM4YTFhNGMpLAotICAgICBDKDcwYmQxOTY4OTk2YmZmYzIpLCBDKDRjNjEz
ZGU1ZDhhYjMyYWMpLCBDKGZlMWY0Zjk3MjA2Zjc5ZDgpLAotICAgICBDKGFjMDQzNGYyYzRlMjEz
YTkpLCBDKDcwYmQxOTY4OTk2YmZmYzIpLCBDKDRjNjEzZGU1ZDhhYjMyYWMpLAotICAgICBDKGZl
MWY0Zjk3MjA2Zjc5ZDgpLCBDKGFjMDQzNGYyYzRlMjEzYTkpLCBDKDc0OTBlOWQ4MmNmZTIyY2Ep
LAotICAgICBDKDVmYmJmN2Y5ODc0NTQyMzgpLCBDKGMzOWUwZGM4MzY4Y2U5NDkpLCBDKDIyMjAx
ZDM4OTQ2NzZjNzEpLAogICAgICBDKGYwZjQ2MDJjKX0sCiAgICAge0MoM2Q2OWU1MjA0OTg3OWQ2
MSksIEMoNzY2MTA2MzZlYTlmNzRmZSksIEMoZTliZjU2MDJmODkzMTBjMCksCi0gICAgIEMoOGVl
YjE3N2E4NjA1M2MxMSksIEMoZTM5MDEyMmMzNDVmMzRhMiksIEMoMWUzMGU0N2FmYmFhZjhkNiks
Ci0gICAgIEMoN2I4OTJmNjhlNWY5MTczMiksIEMoOGVlYjE3N2E4NjA1M2MxMSksIEMoZTM5MDEy
MmMzNDVmMzRhMiksCi0gICAgIEMoMWUzMGU0N2FmYmFhZjhkNiksIEMoN2I4OTJmNjhlNWY5MTcz
MiksIEMoYjg3OTIyNTI1ZmE0NDE1OCksCi0gICAgIEMoZjQ0MGExZWUxYTFhNzY2YiksIEMoZWU4
ZWZhZDI3OWQwOGM1YyksIEMoNDIxZjkxMGM1YjYwMjE2ZSksCiAgICAgIEMoM2UxZWEwNzEpfSwK
LSAgICB7Qyg3OWRhMjQyYTE2YWNhZTMxKSwgQygxODNjNWY0MzhlMjlkNDApLCBDKDZkMzUxNzEw
YWU5MmYzZGUpLAotICAgICBDKDI3MjMzYjI4YjViMTFlOWIpLCBDKGM3ZGZlODk4OGE5NDI3MDAp
LCBDKDU3MGVkMTFjNGFiYWQ5ODQpLAotICAgICBDKDRiNGMwNDYzMmY0ODMxMWEpLCBDKDI3MjMz
YjI4YjViMTFlOWIpLCBDKGM3ZGZlODk4OGE5NDI3MDApLAotICAgICBDKDU3MGVkMTFjNGFiYWQ5
ODQpLCBDKDRiNGMwNDYzMmY0ODMxMWEpLCBDKDEyZjMzMjM1NDQyY2JmOSksCi0gICAgIEMoYTM1
MzE1Y2EwYjViOGNkYiksIEMoZDhhYmRlNjJlYWQ1NTA2YiksIEMoZmMwZmNmODQ3OGFkNTI2Niks
Ci0gICAgIEMoNjc1ODBmMGMpfSwKKyAgICB7Qyg3OWRhMjQyYTE2YWNhZTMxKSwgQygxODNjNWY0
MzhlMjlkNDApLCBDKDZkMzUxNzEwYWU5MmYzZGUpLCBDKDY3NTgwZjBjKX0sCiAgICAge0MoNDYx
YzgyNjU2YTc0ZmI1NyksIEMoZDg0YjQ5MWIyNzVhYTBmNyksIEMoOGYyNjJjYjI5YTZlYjhiMiks
Ci0gICAgIEMoNDlmYTMwNzBiYzdiMDZkMCksIEMoZjEyZWQ0NDZiZDBjMDUzOSksIEMoNmQ0M2Fj
NWQxZGQ0YjI0MCksCi0gICAgIEMoNzYwOTUyNGZlOTBiZWM5MyksIEMoNDlmYTMwNzBiYzdiMDZk
MCksIEMoZjEyZWQ0NDZiZDBjMDUzOSksCi0gICAgIEMoNmQ0M2FjNWQxZGQ0YjI0MCksIEMoNzYw
OTUyNGZlOTBiZWM5MyksIEMoMzkxYzJiMmUwNzZlYzI0MSksCi0gICAgIEMoZjVlNjJkZWRhNzgz
OWY3YiksIEMoM2M3YjMxODZhMTBkODcwZiksIEMoNzdlZjRmMmNiYTRmMTAwNSksCiAgICAgIEMo
NGUxMDk0NTQpfSwKLSAgICB7Qyg1M2MxYTY2ZDBiMTMwMDMpLCBDKDczMWYwNjBlNmZlNzk3ZmMp
LCBDKGRhYTU2ODExNzkxMzcxZTMpLAotICAgICBDKDU3NDY2MDQ2Y2Y2ODk2ZWQpLCBDKDhhYzM3
ZTBlOGIyNWIwYzYpLCBDKDNlNjA3NGI1MmFkM2NmMTgpLAotICAgICBDKGFhNDkxY2U3YjQ1ZGIy
OTcpLCBDKDU3NDY2MDQ2Y2Y2ODk2ZWQpLCBDKDhhYzM3ZTBlOGIyNWIwYzYpLAotICAgICBDKDNl
NjA3NGI1MmFkM2NmMTgpLCBDKGFhNDkxY2U3YjQ1ZGIyOTcpLCBDKGY3YTkyMjdjNWU1ZTIyYzMp
LAotICAgICBDKDNkOTJlMDg0MWUyOWNlMjgpLCBDKDJkMzBkYTViMjg1OWU1OWQpLCBDKGZmMzdm
YTFjOWNiZmFmYzIpLAotICAgICBDKDg4YTQ3NGE3KX0sCi0gICAge0MoZDNhMmVmZWMwZjA0N2U5
KSwgQygxY2FiY2U1ODg1M2U1OGVhKSwgQyg3YTE3YjJlYWUzMjU2YmU0KSwKLSAgICAgQyhjMmRj
Yzk3NThjOTEwMTcxKSwgQyhjYjVjZGRhZWZmNGRkYjQwKSwgQyg1ZDdjYzU4NjliYWVmZWYxKSwK
LSAgICAgQyg5NjQ0YzU4NTNhZjljZmViKSwgQyhjMmRjYzk3NThjOTEwMTcxKSwgQyhjYjVjZGRh
ZWZmNGRkYjQwKSwKLSAgICAgQyg1ZDdjYzU4NjliYWVmZWYxKSwgQyg5NjQ0YzU4NTNhZjljZmVi
KSwgQygyNTVjOTY4MTg0Njk0ZWUxKSwKLSAgICAgQyg0ZTRkNzI2ZWRhMzYwOTI3KSwgQyg3ZDI3
ZGQ1YjZkMTAwMzc3KSwgQyg5YTMwMGUyMDIwZGRlYTJjKSwgQyg1YjViZWRkKX0sCisgICAge0Mo
NTNjMWE2NmQwYjEzMDAzKSwgQyg3MzFmMDYwZTZmZTc5N2ZjKSwgQyhkYWE1NjgxMTc5MTM3MWUz
KSwgQyg4OGE0NzRhNyl9LAorICAgIHtDKGQzYTJlZmVjMGYwNDdlOSksIEMoMWNhYmNlNTg4NTNl
NThlYSksIEMoN2ExN2IyZWFlMzI1NmJlNCksIEMoNWI1YmVkZCl9LAogICAgIHtDKDQzYzY0ZDc0
ODRmN2Y5YjIpLCBDKDVkYTAwMmI2NGFhZmFlYjcpLCBDKGI1NzZjMWU0NTgwMGE3MTYpLAotICAg
ICBDKDNlZTg0ZDNkNWI0Y2EwMGIpLCBDKDVjYmM2ZDcwMTg5NGMzZjkpLCBDKGQ5ZTk0NmY1YWUx
Y2E5NSksCi0gICAgIEMoMjRjYTA2ZTY3ZjBiMTgzMyksIEMoM2VlODRkM2Q1YjRjYTAwYiksIEMo
NWNiYzZkNzAxODk0YzNmOSksCi0gICAgIEMoZDllOTQ2ZjVhZTFjYTk1KSwgQygyNGNhMDZlNjdm
MGIxODMzKSwgQygzNDEzZDQ2YjQxNTI2NTBlKSwKLSAgICAgQyhjYmRmZGJjMmFiNTE2ZjljKSwg
QygyYWFkOGFjYjczOWUwYzZjKSwgQygyYmZjOTUwZDlmOWZhOTc3KSwKICAgICAgQygxYWFkZGZh
Nyl9LAogICAgIHtDKGE3ZGVjNmFkODFjZjdmYTEpLCBDKDE4MGMxYWI3MDg2ODMwNjMpLCBDKDk1
ZTBmZDcwMDhkNjdjZmYpLAotICAgICBDKDZiMTFjNTA3MzY4NzIwOCksIEMoN2UwYTU3ZGUwZDQ1
M2YzKSwgQyhlNDhjMjY3ZDRmNjQ2ODY3KSwKLSAgICAgQygyMTY4ZTkxMzYzNzVmOWNiKSwgQyg2
YjExYzUwNzM2ODcyMDgpLCBDKDdlMGE1N2RlMGQ0NTNmMyksCi0gICAgIEMoZTQ4YzI2N2Q0ZjY0
Njg2NyksIEMoMjE2OGU5MTM2Mzc1ZjljYiksIEMoNjRkYTE5NGFlZWVhN2ZkZiksCi0gICAgIEMo
YTNiOWYwMWZhNTg4NTY3OCksIEMoYzMxNmY4ZWUyZWIyYmQxNyksIEMoYTdlNGQ4MGY4M2U0NDI3
ZiksCiAgICAgIEMoNWJlMDdmZDgpfSwKLSAgICB7Qyg1NDA4YTFkZjk5ZDRhZmYpLCBDKGI5NTY1
ZTU4ODc0MGY2YmQpLCBDKGFiZjI0MTgxM2IwODAwNmUpLAotICAgICBDKDdkYTllODFkODlmZGE3
YWQpLCBDKDI3NDE1N2NhYmU3MTQ0MGQpLCBDKDJjMjJkOWE0ODBiMzMxZjcpLAotICAgICBDKGU4
MzVjOGFjNzQ2NDcyZDUpLCBDKDdkYTllODFkODlmZGE3YWQpLCBDKDI3NDE1N2NhYmU3MTQ0MGQp
LAotICAgICBDKDJjMjJkOWE0ODBiMzMxZjcpLCBDKGU4MzVjOGFjNzQ2NDcyZDUpLCBDKDIwMzhj
ZTgxN2EyMDFhZTQpLAotICAgICBDKDQ2ZjMyODlkZmUxYzVlNDApLCBDKDQzNTU3OGE0MmQ0Yjdj
NTYpLCBDKGY5NmQ5ZjQwOWZjZjU2MSksIEMoY2JjYTg2MDYpfSwKKyAgICB7Qyg1NDA4YTFkZjk5
ZDRhZmYpLCBDKGI5NTY1ZTU4ODc0MGY2YmQpLCBDKGFiZjI0MTgxM2IwODAwNmUpLCBDKGNiY2E4
NjA2KX0sCiAgICAge0MoYThiMjdhNmJjYWVlZWQ0YiksIEMoYWVjMWVlZGVkNmE4N2UzOSksIEMo
OWRhZjI0NmQ2ZmVkODMyNiksCi0gICAgIEMoZDQ1YTkzOGI3OWY1NGU4ZiksIEMoMzY2YjIxOWQ2
ZDEzM2U0OCksIEMoNWIxNGJlM2MyNWM0OTQwNSksCi0gICAgIEMoZmRkNzkxZDQ4ODExYTU3Miks
IEMoZDQ1YTkzOGI3OWY1NGU4ZiksIEMoMzY2YjIxOWQ2ZDEzM2U0OCksCi0gICAgIEMoNWIxNGJl
M2MyNWM0OTQwNSksIEMoZmRkNzkxZDQ4ODExYTU3MiksIEMoM2RlNjdiOGQ5ZTk1ZDMzNSksCi0g
ICAgIEMoOTAzYzAxMzA3Y2ZiZWVkNSksIEMoYWY3ZDY1ZjMyMjc0ZjFkMSksIEMoNGRiYTE0MWI1
ZmMwM2M0MiksCiAgICAgIEMoYmRlNjRkMDEpfSwKICAgICB7Qyg5YTk1MmE4MjQ2ZmRjMjY5KSwg
QyhkMGRjZmNhYzc0ZWYyNzhjKSwgQygyNTBmNzEzOTgzNmYwZjFmKSwKLSAgICAgQyhjODNkM2M1
ZjRlNWYwMzIwKSwgQyg2OTRlN2FkZWIyYmYzMmU1KSwgQyg3YWQwOTUzOGEzZGEyN2Y1KSwKLSAg
ICAgQygyYjVjMThmOTM0YWE1MzAzKSwgQyhjODNkM2M1ZjRlNWYwMzIwKSwgQyg2OTRlN2FkZWIy
YmYzMmU1KSwKLSAgICAgQyg3YWQwOTUzOGEzZGEyN2Y1KSwgQygyYjVjMThmOTM0YWE1MzAzKSwg
QyhjNGRhZDc3MDNkMzQzMjZlKSwKLSAgICAgQyg4MjU1NjllMmJjZGM2YTI1KSwgQyhiODNkMjY3
NzA5Y2E5MDBkKSwgQyg0NGVkMDUxNTFmNWQ3NGU2KSwKICAgICAgQyhlZTkwY2YzMyl9LAogICAg
IHtDKGM5MzA4NDFkMWQ4ODY4NGYpLCBDKDVlYjY2ZWIxOGI3Zjk2NzIpLCBDKGU0NTVkNDEzMDA4
YTI1NDYpLAotICAgICBDKGJjMjcxYmMwZGYxNGQ2NDcpLCBDKGIwNzExMDBhOWZmMmVkYmIpLCBD
KDJiMWE0YzFjYzMxYTExOWEpLAotICAgICBDKGI1ZDdjYWExYmQ5NDZjZWYpLCBDKGJjMjcxYmMw
ZGYxNGQ2NDcpLCBDKGIwNzExMDBhOWZmMmVkYmIpLAotICAgICBDKDJiMWE0YzFjYzMxYTExOWEp
LCBDKGI1ZDdjYWExYmQ5NDZjZWYpLCBDKGUwMjYyM2FlMTBmNGFhZGQpLAotICAgICBDKGQ3OWY2
MDAzODljZDA2ZmQpLCBDKDFlOGRhNzk2NTMwM2U2MmIpLCBDKDg2ZjUwZTEwZWVhYjA5MjUpLAog
ICAgICBDKDQzMDVjM2NlKX0sCi0gICAge0MoOTRkYzY5NzFlM2NmMDcxYSksIEMoOTk0YzcwMDNi
NzNiMmIzNCksIEMoZWExNmU4NTk3ODY5NGU1KSwKLSAgICAgQygzMzZjMWI1OWExZmMxOWY2KSwg
QyhjMTczYWNhZWNjNDcxMzA1KSwgQyhkYjEyNjdkMjRmM2YzZjM2KSwKLSAgICAgQyhlOWE1ZWU5
ODYyN2E2ZTc4KSwgQygzMzZjMWI1OWExZmMxOWY2KSwgQyhjMTczYWNhZWNjNDcxMzA1KSwKLSAg
ICAgQyhkYjEyNjdkMjRmM2YzZjM2KSwgQyhlOWE1ZWU5ODYyN2E2ZTc4KSwgQyg3MThmMzM0MjA0
MzA1YWU1KSwKLSAgICAgQyhlM2I1M2MxNDhmOThkMjJjKSwgQyhhMTg0MDEyZGY4NDg5MjYpLCBD
KDZlOTYzODYxMjdkNTExODMpLCBDKDRiM2ExZDc2KX0sCi0gICAge0MoN2ZjOTgwMDZlMjVjYWM5
KSwgQyg3N2ZlZTA0ODRjZGE4NmE3KSwgQygzNzZlYzNkNDQ3MDYwNDU2KSwKLSAgICAgQyg4NDA2
NGE2ZGNmOTE2MzQwKSwgQyhmYmY1NWEyNjc5MGUwZWJiKSwgQygyZTdmODQxNTFjMzFhNWMyKSwK
LSAgICAgQyg5ZjdmNmQ3NmI5NTBmOWJmKSwgQyg4NDA2NGE2ZGNmOTE2MzQwKSwgQyhmYmY1NWEy
Njc5MGUwZWJiKSwKLSAgICAgQygyZTdmODQxNTFjMzFhNWMyKSwgQyg5ZjdmNmQ3NmI5NTBmOWJm
KSwgQygxMjVlMDk0ZmJlZTJiMTQ2KSwKLSAgICAgQyg1NzA2YWE3MmIyZWVmN2MyKSwgQygxYzRh
MmRhYTkwNWVlNjZlKSwgQyg4M2Q0ODAyOWI1NDUxNjk0KSwKLSAgICAgQyhhOGJiNmQ4MCl9LAot
ICAgIHtDKGJkNzgxYzQ0NTQxMDNmNiksIEMoNjEyMTk3MzIyZjQ5YzkzMSksIEMoYjljZjE3ZmQ3
ZTU0NjJkNSksCi0gICAgIEMoZTM4ZTUyNmNkMzMyNDM2NCksIEMoODVmMmI2M2E1YjVlODQwYSks
IEMoNDg1ZDdjZWY1YWFhZGQ4NyksCi0gICAgIEMoZDJiODM3YTQ2MmY2ZGI2ZCksIEMoZTM4ZTUy
NmNkMzMyNDM2NCksIEMoODVmMmI2M2E1YjVlODQwYSksCi0gICAgIEMoNDg1ZDdjZWY1YWFhZGQ4
NyksIEMoZDJiODM3YTQ2MmY2ZGI2ZCksIEMoM2U0MWNlZjAzMTUyMGQ5YSksCi0gICAgIEMoODJk
ZjczOTAyZDdmNjdlKSwgQygzYmE2ZmQ1NGMxNTI1N2NiKSwgQygyMmY5MWYwNzliZTQyZDQwKSwg
QygxZjlmYTYwNyl9LAorICAgIHtDKDk0ZGM2OTcxZTNjZjA3MWEpLCBDKDk5NGM3MDAzYjczYjJi
MzQpLCBDKGVhMTZlODU5Nzg2OTRlNSksIEMoNGIzYTFkNzYpfSwKKyAgICB7Qyg3ZmM5ODAwNmUy
NWNhYzkpLCBDKDc3ZmVlMDQ4NGNkYTg2YTcpLCBDKDM3NmVjM2Q0NDcwNjA0NTYpLCBDKGE4YmI2
ZDgwKX0sCisgICAge0MoYmQ3ODFjNDQ1NDEwM2Y2KSwgQyg2MTIxOTczMjJmNDljOTMxKSwgQyhi
OWNmMTdmZDdlNTQ2MmQ1KSwgQygxZjlmYTYwNyl9LAogICAgIHtDKGRhNjBlNmIxNDQ3OWY5ZGYp
LCBDKDNiZGNjZjY5ZWNlMTY3OTIpLCBDKDE4ZWJmNDVjNGZlY2ZkYzkpLAotICAgICBDKDE2ODE4
ZWU5ZDM4YzY2NjQpLCBDKDU1MTlmYTlhMWUzNWEzMjkpLCBDKGNiZDAwMDFlNGIwOGVkOCksCi0g
ICAgIEMoNDFhOTY1ZTM3YTBjNzMxYiksIEMoMTY4MThlZTlkMzhjNjY2NCksIEMoNTUxOWZhOWEx
ZTM1YTMyOSksCi0gICAgIEMoY2JkMDAwMWU0YjA4ZWQ4KSwgQyg0MWE5NjVlMzdhMGM3MzFiKSwg
Qyg2NmU3YjVkY2NhMWNhMjhmKSwKLSAgICAgQyg5NjNiMmQ5OTM2MTQzNDdkKSwgQyg5YjZmYzZm
NDFkNDExMTA2KSwgQyhhYWFlY2FjY2Y3ODQ4YzBjKSwKICAgICAgQyg4ZDBlNGVkMil9LAotICAg
IHtDKDRjYTU2YTM0OGI2YzRkMyksIEMoNjA2MTg1MzdjMzg3MjUxNCksIEMoMmZiYjlmMGU2NTg3
MWIwOSksCi0gICAgIEMoMzAyNzgwMTY4MzBkZGQ0MyksIEMoZjA0NjY0NmQ5MDEyZTA3NCksIEMo
YzYyYTU4MDRmNmU3YzlkYSksCi0gICAgIEMoOThkNTFmNTgzMGUyYmMxZSksIEMoMzAyNzgwMTY4
MzBkZGQ0MyksIEMoZjA0NjY0NmQ5MDEyZTA3NCksCi0gICAgIEMoYzYyYTU4MDRmNmU3YzlkYSks
IEMoOThkNTFmNTgzMGUyYmMxZSksIEMoN2IyY2JlNWQzN2UzZjI5ZSksCi0gICAgIEMoN2I4YzNl
ZDUwYmRhNGFhMCksIEMoM2VhNjBjYzI0NjM5ZTAzOCksIEMoZjc3MDZkZTlmYjBiNTgwMSksCi0g
ICAgIEMoMWJmMzEzNDcpfSwKKyAgICB7Qyg0Y2E1NmEzNDhiNmM0ZDMpLCBDKDYwNjE4NTM3YzM4
NzI1MTQpLCBDKDJmYmI5ZjBlNjU4NzFiMDkpLCBDKDFiZjMxMzQ3KX0sCiAgICAge0MoZWJkMjJk
NGI3MDk0NjQwMSksIEMoNjg2MzYwMmJmNzEzOTAxNyksIEMoYzBiMWFjNGUxMWIwMDY2NiksCi0g
ICAgIEMoN2QyNzgyYjgyYmQ0OTRiNiksIEMoOTcxNTliYTFjMjZiMzA0YiksIEMoNDJiM2IwZmQ0
MzFiMmFjMiksCi0gICAgIEMoZmFhODFmODI2OTFjODMwYyksIEMoN2QyNzgyYjgyYmQ0OTRiNiks
IEMoOTcxNTliYTFjMjZiMzA0YiksCi0gICAgIEMoNDJiM2IwZmQ0MzFiMmFjMiksIEMoZmFhODFm
ODI2OTFjODMwYyksIEMoN2NjNjQ0OTIzNGM3ZTE4NSksCi0gICAgIEMoYWVhYTZmYTY0M2NhODZh
NSksIEMoMTQxMmRiMWMwZjJlMDEzMyksIEMoNGRmMmZlM2U0MDcyOTM0ZiksCiAgICAgIEMoMWFl
M2ZjNWIpfSwKLSAgICB7QygzY2M0NjkzZDZjYmNiMGMpLCBDKDUwMTY4OWVhMWM3MGZmYSksIEMo
MTBhNDM1M2U5Yzg5ZTM2NCksCi0gICAgIEMoNThjOGFiYTc0NzVlMmQ5NSksIEMoM2UyZjI5MTY5
OGM5NDI3YSksIEMoZTg3MTBkMTljOWRlOWU0MSksCi0gICAgIEMoNjVkZGEyMmViMDRjZjk1Myks
IEMoNThjOGFiYTc0NzVlMmQ5NSksIEMoM2UyZjI5MTY5OGM5NDI3YSksCi0gICAgIEMoZTg3MTBk
MTljOWRlOWU0MSksIEMoNjVkZGEyMmViMDRjZjk1MyksIEMoZDc3MjljNDhjMjUwY2ZmYSksCi0g
ICAgIEMoZWY3NjE2MmIyZGRmYmE0YiksIEMoNTIzNzFlMTdmNGQ1MWY2ZCksIEMoZGRkMDAyMTEy
ZmYwYzgzMyksCi0gICAgIEMoNDU5YzM5MzApfSwKKyAgICB7QygzY2M0NjkzZDZjYmNiMGMpLCBD
KDUwMTY4OWVhMWM3MGZmYSksIEMoMTBhNDM1M2U5Yzg5ZTM2NCksIEMoNDU5YzM5MzApfSwKICAg
ICB7QygzODkwOGU0M2Y3YmE1ZWYwKSwgQygxYWIwMzVkNGU3NzgxZTc2KSwgQyg0MWQxMzNlOGMw
YTY4ZmY3KSwKLSAgICAgQyhkMTA5MDg5M2FmYWFiOGJjKSwgQyg5NmM0ZmU2OTIyNzcyODA3KSwg
Qyg0NTIyNDI2YzJiNDIwNWViKSwKLSAgICAgQyhlZmFkOTlhMTI2MmU3ZTBkKSwgQyhkMTA5MDg5
M2FmYWFiOGJjKSwgQyg5NmM0ZmU2OTIyNzcyODA3KSwKLSAgICAgQyg0NTIyNDI2YzJiNDIwNWVi
KSwgQyhlZmFkOTlhMTI2MmU3ZTBkKSwgQyhjNzY5NjAyOWFiZGI0NjVlKSwKLSAgICAgQyg0ZTE4
ZWFmMDNkNTE3NjUxKSwgQyhkMDA2YmNlZDU0Yzg2YWM4KSwgQyg0MzMwMzI2ZDEwMjE4NjBjKSwK
ICAgICAgQyhlMDBjNDE4NCl9LAotICAgIHtDKDM0OTgzY2NjNmFhNDAyMDUpLCBDKDIxODAyY2Fk
MzRlNzJiYzQpLCBDKDE5NDNlOGZiM2MxN2JiOCksCi0gICAgIEMoZmM5NDcxNjdmNjljMGRhNSks
IEMoYWU3OWNmZGI5MWI2ZjZjMSksIEMoN2IyNTFkMDRjMjZjYmRhMyksCi0gICAgIEMoMTI4YTMz
YTc5MDYwZDI1ZSksIEMoZmM5NDcxNjdmNjljMGRhNSksIEMoYWU3OWNmZGI5MWI2ZjZjMSksCi0g
ICAgIEMoN2IyNTFkMDRjMjZjYmRhMyksIEMoMTI4YTMzYTc5MDYwZDI1ZSksIEMoMWVjYTg0MmRi
ZmUwMThkZCksCi0gICAgIEMoNTBhNGNkMmVlMGJhOWM2MyksIEMoYzJmNWM5N2Q4Mzk5NjgyZiks
IEMoM2Y5MjlmYzdjYmU4ZWNiYiksCi0gICAgIEMoZmZjN2E3ODEpfSwKKyAgICB7QygzNDk4M2Nj
YzZhYTQwMjA1KSwgQygyMTgwMmNhZDM0ZTcyYmM0KSwgQygxOTQzZThmYjNjMTdiYjgpLCBDKGZm
YzdhNzgxKX0sCiAgICAge0MoODYyMTVjNDVkY2FjOTkwNSksIEMoZWE1NDZhZmU4NTFjYWU0Yiks
IEMoZDg1YjY0NTdlNDg5ZTM3NCksCi0gICAgIEMoYjc2MDljOGU3MDM4NmQ2NiksIEMoMzZlNmNj
YzI3OGQxNjM2ZCksIEMoMmY4NzMzMDdjMDhlNmExYyksCi0gICAgIEMoMTBmMjUyYTc1ODUwNTI4
OSksIEMoYjc2MDljOGU3MDM4NmQ2NiksIEMoMzZlNmNjYzI3OGQxNjM2ZCksCi0gICAgIEMoMmY4
NzMzMDdjMDhlNmExYyksIEMoMTBmMjUyYTc1ODUwNTI4OSksIEMoYzg5Nzc2NDZlODFhYjRiNiks
Ci0gICAgIEMoODAxN2I3NDVjZDgwMjEzYiksIEMoOTYwNjg3ZGIzNTliZWEwKSwgQyhlZjRhNDcw
NjYwNzk5NDg4KSwgQyg2YTEyNTQ4MCl9LAorICAgICBDKDZhMTI1NDgwKX0sCiAgICAge0MoNDIw
ZmMyNTVjMzhkYjE3NSksIEMoZDUwM2NkMGYzYzEyMDhkMSksIEMoZDQ2ODRlNzRjODI1YTBiYyks
Ci0gICAgIEMoNGMxMDUzNzQ0MzE1MmYzZCksIEMoNzIwNDUxZDNjODk1ZTI1ZCksIEMoYWZmNjBj
NGQxMWY1MTNmZCksCi0gICAgIEMoODgxZThkNmQyZDVmYjk1MyksIEMoNGMxMDUzNzQ0MzE1MmYz
ZCksIEMoNzIwNDUxZDNjODk1ZTI1ZCksCi0gICAgIEMoYWZmNjBjNGQxMWY1MTNmZCksIEMoODgx
ZThkNmQyZDVmYjk1MyksIEMoOWRlYzAzNGEwNDNmMWY1NSksCi0gICAgIEMoZTI3YTBjMjJlN2Jm
YjM5ZCksIEMoMjIyMGI5NTkxMjgzMjQpLCBDKDUzMjQwMjcyMTUyZGJkOGIpLCBDKDg4YTE1MTJi
KX0sCisgICAgIEMoODhhMTUxMmIpfSwKICAgICB7QygxZDdhMzFmNWJjOGZlMmY5KSwgQyg0NzYz
OTkxMDkyZGNmODM2KSwgQyhlZDY5NWY1NWI5NzQxNmY0KSwKLSAgICAgQyhmMjY1ZWRiMGMxYzQx
MWQ3KSwgQygzMGUxZTllYzUyNjJiN2U2KSwgQyhjMmMzYmEwNjFjZTc5NTdhKSwKLSAgICAgQyhk
OTc1ZjkzYjg5YTE2NDA5KSwgQyhmMjY1ZWRiMGMxYzQxMWQ3KSwgQygzMGUxZTllYzUyNjJiN2U2
KSwKLSAgICAgQyhjMmMzYmEwNjFjZTc5NTdhKSwgQyhkOTc1ZjkzYjg5YTE2NDA5KSwgQyhlOWQ3
MDMxMjNmNDM0NTBhKSwKLSAgICAgQyg0MTM4M2ZlZGZlZDY3YzgyKSwgQyg2ZTlmNDNlY2JiYmQ2
MDA0KSwgQyhjN2NjZDIzYTI0ZTc3YjgpLCBDKDU0OWJiYmU1KX0sCisgICAgIEMoNTQ5YmJiZTUp
fSwKICAgICB7Qyg5NDEyOWE4NGMzNzZhMjZlKSwgQyhjMjQ1ZTg1OWRjMjMxOTMzKSwgQygxYjhm
NzRmZWNmOTE3NDUzKSwKLSAgICAgQyhlOTM2OWQyZTkwMDdlNzRiKSwgQyhiMTM3NTkxNWQxMTM2
MDUyKSwgQyg5MjZjMjAyMWZlMWQyMzUxKSwKLSAgICAgQygxZDk0M2FkZGFhYTJlN2U2KSwgQyhl
OTM2OWQyZTkwMDdlNzRiKSwgQyhiMTM3NTkxNWQxMTM2MDUyKSwKLSAgICAgQyg5MjZjMjAyMWZl
MWQyMzUxKSwgQygxZDk0M2FkZGFhYTJlN2U2KSwgQyhmNWY1MTU4NjljMjQ2NzM4KSwKLSAgICAg
Qyg3ZTMwOWNkMGUxYzBmMmEwKSwgQygxNTNjM2MzNmNmNTIzZTNiKSwgQyg0OTMxYzY2ODcyZWE2
NzU4KSwKICAgICAgQyhjMTMzZDM4Yyl9LAotICAgIHtDKDFkM2E5ODA5ZGFiMDVjOGQpLCBDKGFk
ZGRlYjRmNzFjOTNlOCksIEMoZWYzNDJlYjM2NjMxZWRiKSwKLSAgICAgQygzMDFkN2E2MWM0YjNk
YmNhKSwgQyg4NjEzMzZjM2YwNTUyZDYxKSwgQygxMmM2ZGI5NDc0NzEzMDBmKSwKLSAgICAgQyhh
Njc5ZWYwZWQ3NjFkZWI5KSwgQygzMDFkN2E2MWM0YjNkYmNhKSwgQyg4NjEzMzZjM2YwNTUyZDYx
KSwKLSAgICAgQygxMmM2ZGI5NDc0NzEzMDBmKSwgQyhhNjc5ZWYwZWQ3NjFkZWI5KSwgQyg1Zjcx
M2I3MjBlZmNkMTQ3KSwKLSAgICAgQygzN2FjMzMwYTMzM2FhNmIpLCBDKDMzMDlkYzllYzE2MTZl
ZWYpLCBDKDUyMzAxZDdhOTA4MDI2YjUpLCBDKGZjYWNlMzQ4KX0sCisgICAge0MoMWQzYTk4MDlk
YWIwNWM4ZCksIEMoYWRkZGViNGY3MWM5M2U4KSwgQyhlZjM0MmViMzY2MzFlZGIpLCBDKGZjYWNl
MzQ4KX0sCiAgICAge0MoOTBmYTNjY2JkNjA4NDhkYSksIEMoZGZhNmUwNTk1YjU2OWUxMSksIEMo
ZTU4NWQwNjdhMWY1MTM1ZCksCi0gICAgIEMoNmNlZjg2NmVjMjk1YWJlYSksIEMoYzQ4NmMwZDky
MTRiZWIyZCksIEMoZDZlNDkwOTQ0ZDVmZTEwMCksCi0gICAgIEMoNTlkZjMxNzVkNzJjOWYzOCks
IEMoNmNlZjg2NmVjMjk1YWJlYSksIEMoYzQ4NmMwZDkyMTRiZWIyZCksCi0gICAgIEMoZDZlNDkw
OTQ0ZDVmZTEwMCksIEMoNTlkZjMxNzVkNzJjOWYzOCksIEMoM2YyM2FlYjRjMDRkMTQ0MyksCi0g
ICAgIEMoOWJmMDUxNWNkOGQyNDc3MCksIEMoOTU4NTU0ZjYwY2NhYWRlMiksIEMoNTE4Mjg2M2M5
MDEzMmZlOCksCiAgICAgIEMoZWQ3YjZmOWEpfSwKICAgICB7QygyZGJiNGZjNzFiNTU0NTE0KSwg
Qyg5NjUwZTA0Yjg2YmUwZjgyKSwgQyg2MGYyMzA0ZmJhOTI3NGQzKSwKLSAgICAgQyhmY2ZiOTQ0
M2U5OTdjYWIpLCBDKGYxMzMxMGQ5NmRlYzI3NzIpLCBDKDcwOWNhZDIwNDUyNTFhZjIpLAotICAg
ICBDKGFmZDBkMzBjYzYzNzZkYWQpLCBDKGZjZmI5NDQzZTk5N2NhYiksIEMoZjEzMzEwZDk2ZGVj
Mjc3MiksCi0gICAgIEMoNzA5Y2FkMjA0NTI1MWFmMiksIEMoYWZkMGQzMGNjNjM3NmRhZCksIEMo
NTlkNGJlZDMwZDU1MGQwZCksCi0gICAgIEMoNTgwMDZkNGUyMmQ4YWFkMSksIEMoZWVlMTJkMjM2
MmQxZjEzYiksIEMoMzVjZjFkN2ZhYWYxZDIyOCksCiAgICAgIEMoNmQ5MDdkZGEpfSwKICAgICB7
QyhiOThiZjQyNzRkMTgzNzRhKSwgQygxYjY2OWZkNGM3ZjlhMTlhKSwgQyhiMWY1OTcyYjg4YmEy
YjdhKSwKLSAgICAgQyg3MzExOWM5OWU2ZDUwOGJlKSwgQyg1ZDQwMzZhMTg3NzM1Mzg1KSwgQyg4
ZmE2NmUxOTJmZDgzODMxKSwKLSAgICAgQygyYWJmNjRiNmI1OTJlZDU3KSwgQyg3MzExOWM5OWU2
ZDUwOGJlKSwgQyg1ZDQwMzZhMTg3NzM1Mzg1KSwKLSAgICAgQyg4ZmE2NmUxOTJmZDgzODMxKSwg
QygyYWJmNjRiNmI1OTJlZDU3KSwgQyhkNDUwMWY5NWRkODRiMDhjKSwKLSAgICAgQyhiZjE1NTI0
MzljOGJlYTAyKSwgQyg0ZjU2ZmU3NTNiYTdlMGJhKSwgQyg0Y2E4ZDM1Y2MwNThjZmNkKSwKICAg
ICAgQyg3YTRkNDhkNSl9LAogICAgIHtDKGQ2NzgxZDBiNWUxOGViNjgpLCBDKGI5OTI5MTNjYWUw
OWI1MzMpLCBDKDU4ZjYwMjFjYWFlZTNhNDApLAotICAgICBDKGFhZmNiNzc0OTdiNWEyMGIpLCBD
KDQxMTgxOWU1ZTc5Yjc3YTMpLCBDKGJkNzc5NTc5YzUxYzc3Y2UpLAotICAgICBDKDU4ZDExZjVk
Y2Y1ZDA3NWQpLCBDKGFhZmNiNzc0OTdiNWEyMGIpLCBDKDQxMTgxOWU1ZTc5Yjc3YTMpLAotICAg
ICBDKGJkNzc5NTc5YzUxYzc3Y2UpLCBDKDU4ZDExZjVkY2Y1ZDA3NWQpLCBDKDllYWU3NmNkZTFj
YjQyMzMpLAotICAgICBDKDMyZmUyNWE5YmY2NTc5NzApLCBDKDFjMGM4MDc5NDhlZGIwNmEpLCBD
KGI4ZjI5YTNkZmFlZTI1NGQpLAogICAgICBDKGU2ODZmM2RiKX0sCi0gICAge0MoMjI2NjUxY2Yx
OGY0ODg0YyksIEMoNTk1MDUyYTg3NGYwZjUxYyksIEMoYzliNzUxNjJiMjNiYWI0MiksCi0gICAg
IEMoM2Y0NGY4NzNiZTQ4MTJlYyksIEMoNDI3NjYyYzFkYmZhYTdiMiksIEMoYTIwN2ZmOTYzOGZi
NjU1OCksCi0gICAgIEMoYTczOGQ5MTllNDVmNTUwZiksIEMoM2Y0NGY4NzNiZTQ4MTJlYyksIEMo
NDI3NjYyYzFkYmZhYTdiMiksCi0gICAgIEMoYTIwN2ZmOTYzOGZiNjU1OCksIEMoYTczOGQ5MTll
NDVmNTUwZiksIEMoY2IxODZlYTA1NzE3ZTdkNiksCi0gICAgIEMoMWNhN2Q2OGE1ODcxZmRjMSks
IEMoNWQ0YzExOWVhOGVmMzc1MCksIEMoNzJiNmExMGZhMmZmOTQwNiksIEMoY2NlN2M1NSl9LAot
ICAgIHtDKGE3MzRmYjA0N2QzMTYyZDYpLCBDKGU1MjMxNzBkMjQwYmEzYTUpLCBDKDEyNWE2OTcy
ODA5NzMwZTgpLAotICAgICBDKGQzOTZhMjk3Nzk5YzI0YTEpLCBDKDhmZWU5OTJlMzA2OWJhZDUp
LCBDKDJlM2EwMWIwNjk3Y2NmNTcpLAotICAgICBDKGVlOWM3MzkwYmQ5MDFjZmEpLCBDKGQzOTZh
Mjk3Nzk5YzI0YTEpLCBDKDhmZWU5OTJlMzA2OWJhZDUpLAotICAgICBDKDJlM2EwMWIwNjk3Y2Nm
NTcpLCBDKGVlOWM3MzkwYmQ5MDFjZmEpLCBDKDU2ZjJkOWRhMGFmMjhhZjIpLAotICAgICBDKDNm
ZGQzN2IyZmU4NDM3Y2IpLCBDKDNkMTNlZWViNjBkNmFlYzApLCBDKDI0MzJhZTYyZTgwMGE1Y2Up
LCBDKGY1OGI5NmIpfSwKKyAgICB7QygyMjY2NTFjZjE4ZjQ4ODRjKSwgQyg1OTUwNTJhODc0ZjBm
NTFjKSwgQyhjOWI3NTE2MmIyM2JhYjQyKSwgQyhjY2U3YzU1KX0sCisgICAge0MoYTczNGZiMDQ3
ZDMxNjJkNiksIEMoZTUyMzE3MGQyNDBiYTNhNSksIEMoMTI1YTY5NzI4MDk3MzBlOCksIEMoZjU4
Yjk2Yil9LAogICAgIHtDKGM2ZGY2MzY0YTI0Zjc1YTMpLCBDKGMyOTRlMmM4NGM0ZjVkZjgpLCBD
KGE4OGRmNjVjNmE4OTMxM2IpLAotICAgICBDKDg5NWZlODQ0MzE4M2RhNzQpLCBDKGM3ZjJmNmY4
OTVhNjczMzQpLCBDKGEwZDZiNmE1MDY2OTFkMzEpLAotICAgICBDKDI0ZjUxNzEyYjQ1OWE5ZjAp
LCBDKDg5NWZlODQ0MzE4M2RhNzQpLCBDKGM3ZjJmNmY4OTVhNjczMzQpLAotICAgICBDKGEwZDZi
NmE1MDY2OTFkMzEpLCBDKDI0ZjUxNzEyYjQ1OWE5ZjApLCBDKDE3M2E2OTk0ODFiOWUwODgpLAot
ICAgICBDKDFkZWU5Yjc3YmNiZjQ1ZDMpLCBDKDMyYjk4YTY0NmE4NjY3ZDApLCBDKDNhZGNkNGVl
MjhmNDJhMGUpLAogICAgICBDKDFiYmY2ZjYwKX0sCi0gICAge0MoZDhkMTM2NGMxZmJjZDEwKSwg
QygyZDdjYzdmNTQ4MzJkZWFhKSwgQyg0ZTIyYzg3NmE3YzU3NjI1KSwKLSAgICAgQyhhM2Q1ZDEx
MzdkMzBjNGJkKSwgQygxZTdkNzA2YTQ5YmRmYjllKSwgQyhjNjMyODJiMjBhZDg2ZGIyKSwKLSAg
ICAgQyhhZWM5N2ZhMDc5MTZiZmQ2KSwgQyhhM2Q1ZDExMzdkMzBjNGJkKSwgQygxZTdkNzA2YTQ5
YmRmYjllKSwKLSAgICAgQyhjNjMyODJiMjBhZDg2ZGIyKSwgQyhhZWM5N2ZhMDc5MTZiZmQ2KSwg
Qyg3YzliYTNlNTJkNDRmNzNlKSwKLSAgICAgQyhhZjYyZmQyNDU4MTExODVkKSwgQyg4YTlkMmRh
Y2Q4NzM3NjUyKSwgQyhiZDJjY2UyNzdkNWZiZWMwKSwKLSAgICAgQyhjZTVlMGNjMil9LAorICAg
IHtDKGQ4ZDEzNjRjMWZiY2QxMCksIEMoMmQ3Y2M3ZjU0ODMyZGVhYSksIEMoNGUyMmM4NzZhN2M1
NzYyNSksIEMoY2U1ZTBjYzIpfSwKICAgICB7QyhhYWUwNmY5MTQ2ZGI4ODVmKSwgQygzNTk4NzM2
NDQxZTI4MGQ5KSwgQyhmYmEzMzliMTE3MDgzZTU1KSwKLSAgICAgQyhiMjJiZjA4ZDlmOGFlY2Y3
KSwgQyhjMTgyNzMwZGUzMzdiOTIyKSwgQygyYjlhZGM4N2EwNDUwYTQ2KSwKLSAgICAgQygxOTJj
MjlhOWNmYzAwYWFkKSwgQyhiMjJiZjA4ZDlmOGFlY2Y3KSwgQyhjMTgyNzMwZGUzMzdiOTIyKSwK
LSAgICAgQygyYjlhZGM4N2EwNDUwYTQ2KSwgQygxOTJjMjlhOWNmYzAwYWFkKSwgQyg5ZmQ3MzNm
MWQ4NGE1OWQ5KSwKLSAgICAgQyhkODZiZDVjOTgzOWFjZTE1KSwgQyhhZjIwYjU3MzAzMTcyODc2
KSwgQyg5ZjYzY2I3MTYxYjUzNjRjKSwKICAgICAgQyg1ODRjZmQ2Zil9LAogICAgIHtDKDg5NTVl
ZjA3NjMxZTNiY2MpLCBDKDdkNzA5NjVlYTM5MjZmODMpLCBDKDM5YWVkNDEzNGY4YjJkYjYpLAot
ICAgICBDKDg4MmVmYzI1NjE3MTVhOWMpLCBDKGVmODEzMmExOGE1NDAyMjEpLCBDKGIyMGEzYzg3
YThjMjU3YzEpLAotICAgICBDKGY1NDFiODYyOGZhZDZjMjMpLCBDKDg4MmVmYzI1NjE3MTVhOWMp
LCBDKGVmODEzMmExOGE1NDAyMjEpLAotICAgICBDKGIyMGEzYzg3YThjMjU3YzEpLCBDKGY1NDFi
ODYyOGZhZDZjMjMpLCBDKDk1NTJhZWQ1N2E2ZTA0NjcpLAotICAgICBDKDRkOWZkZDU2ODY3NjEx
YTcpLCBDKGMzMzAyNzliZjIzYjllYWIpLCBDKDQ0ZGJiYWVhMmZjYjhlYmEpLAogICAgICBDKDhm
OWJiYzMzKX0sCiAgICAge0MoYWQ2MTFjNjA5Y2ZiZTQxMiksIEMoZDNjMDBiMThiZjI1Mzg3Nyks
IEMoOTBiMjE3MmUxZjNkMGJmZCksCi0gICAgIEMoMzcxYTk4YjJjYjA4NDg4MyksIEMoMzNhMjg4
NmVlOWYwMDY2MyksIEMoYmU5NTY4ODE4ZWQ2ZTZiZCksCi0gICAgIEMoZjI0NGEwZmEyNjczNDY5
YSksIEMoMzcxYTk4YjJjYjA4NDg4MyksIEMoMzNhMjg4NmVlOWYwMDY2MyksCi0gICAgIEMoYmU5
NTY4ODE4ZWQ2ZTZiZCksIEMoZjI0NGEwZmEyNjczNDY5YSksIEMoYjQ0NzA1MGJkM2U1NTllOSks
Ci0gICAgIEMoZDNiNjk1ZGFlN2ExMzM4MyksIEMoZGVkMGJiNjViZTQ3MTE4OCksIEMoY2EzYzdh
MmI3ODkyMmNhZSksCiAgICAgIEMoZDc2NDBkOTUpfSwKLSAgICB7QyhkNTMzOWFkYzI5NWQ1ZDY5
KSwgQyhiNjMzY2MxZGNiOGI1ODZhKSwgQyhlZTg0MTg0Y2Y1YjFhZWFmKSwKLSAgICAgQyg4OWYz
YWFiOTlhZmJkNjM2KSwgQyhmNDIwZTAwNGY4MTQ4YjlhKSwgQyg2ODE4MDczZmFhNzk3YzdjKSwK
LSAgICAgQyhkZDNiNGUyMWNiYmY0MmNhKSwgQyg4OWYzYWFiOTlhZmJkNjM2KSwgQyhmNDIwZTAw
NGY4MTQ4YjlhKSwKLSAgICAgQyg2ODE4MDczZmFhNzk3YzdjKSwgQyhkZDNiNGUyMWNiYmY0MmNh
KSwgQyg2YTJiN2RiMjYxMTY0ODQ0KSwKLSAgICAgQyhjYmVhZDYzZDE4OTU4NTJhKSwgQyg5M2Qz
N2UxZWFlMDVlMmY5KSwgQyg1ZDA2ZGIyNzAzZmJjM2FlKSwgQygzZDEyYTJiKX0sCisgICAge0Mo
ZDUzMzlhZGMyOTVkNWQ2OSksIEMoYjYzM2NjMWRjYjhiNTg2YSksIEMoZWU4NDE4NGNmNWIxYWVh
ZiksIEMoM2QxMmEyYil9LAogICAgIHtDKDQwZDBhZWZmNTIxMzc1YTgpLCBDKDc3YmExYWQ3ZWNl
YmQ1MDYpLCBDKDU0N2M2ZjFhN2Q5ZGY0MjcpLAotICAgICBDKDIxYzJiZTA5ODMyN2Y0OWIpLCBD
KDdlMDM1MDY1YWM3YmJlZjUpLCBDKDZkNzM0OGU2MzAyM2ZiMzUpLAotICAgICBDKDlkNDI3ZGMx
YjY3YzM4MzApLCBDKDIxYzJiZTA5ODMyN2Y0OWIpLCBDKDdlMDM1MDY1YWM3YmJlZjUpLAotICAg
ICBDKDZkNzM0OGU2MzAyM2ZiMzUpLCBDKDlkNDI3ZGMxYjY3YzM4MzApLCBDKDRlM2QwMThhNDM4
NTgzNDEpLAotICAgICBDKGNmOTI0YmI0NGQ2YjQzYzUpLCBDKDQ2MThiNmEyNmUzNDQ2YWUpLCBD
KDU0ZDMwMTNmYWMzZWQ0NjkpLAogICAgICBDKGFhZWFmZWQwKX0sCiAgICAge0MoOGIyZDU0YWUx
YTNkZjc2OSksIEMoMTFlN2FkYWVlMzIxNjY3OSksIEMoMzQ4Mzc4MWVmYzU2M2UwMyksCi0gICAg
IEMoOWQwOTdkZDMxNTJhYjEwNyksIEMoNTFlMjFkMjQxMjZlODU2MyksIEMoY2JhNTZjYWM4ODRh
MTM1NCksCi0gICAgIEMoMzlhYmIxYjU5NWYwYTk3NyksIEMoOWQwOTdkZDMxNTJhYjEwNyksIEMo
NTFlMjFkMjQxMjZlODU2MyksCi0gICAgIEMoY2JhNTZjYWM4ODRhMTM1NCksIEMoMzlhYmIxYjU5
NWYwYTk3NyksIEMoODFlNmRkMWMxMTA5ODQ4ZiksCi0gICAgIEMoMTY0NGIyMDk4MjZkN2IxNSks
IEMoNmFjNjdlNGU0YjQ4MTJmMCksIEMoYjNhOWY1NjIyYzkzNWJmNyksCiAgICAgIEMoOTViOWI4
MTQpfSwKICAgICB7Qyg5OWMxNzU4MTliNGVhZTI4KSwgQyg5MzJlOGZmOWY3YTQwMDQzKSwgQyhl
Yzc4ZGNhYjA3Y2E5ZjdjKSwKLSAgICAgQyhjMWE3OGI4MmJhODE1Yjc0KSwgQyg0NThjYmRmYzgy
ZWIzMjJhKSwgQygxN2Y0YTE5MjM3NmVkOGQ3KSwKLSAgICAgQyg2ZjllOTI5NjhiYzhjY2VmKSwg
QyhjMWE3OGI4MmJhODE1Yjc0KSwgQyg0NThjYmRmYzgyZWIzMjJhKSwKLSAgICAgQygxN2Y0YTE5
MjM3NmVkOGQ3KSwgQyg2ZjllOTI5NjhiYzhjY2VmKSwgQyg5M2UwOThjMzMzYjM5OTA1KSwKLSAg
ICAgQyhkNTliMWNhY2U0NGI3ZmRjKSwgQyhmN2E2NGVkNzhjNjRjN2M1KSwgQyg3YzZlY2E1ZGQ4
N2VjMWNlKSwKICAgICAgQyg0NWZiZTY2ZSl9LAogICAgIHtDKDJhNDE4MzM1Nzc5YjgyZmMpLCBD
KGFmMDI5NTk4Nzg0OWE3NmIpLCBDKGMxMmJjNWZmMDIxM2Y0NmUpLAotICAgICBDKDVhZWVhZDhk
NmNiMjViYjkpLCBDKDczOTMxNWY3NzQzZWMzZmYpLCBDKDlhYjQ4ZDI3MTExZDJkY2MpLAotICAg
ICBDKDViODdiZDM1YTk3NTkyOWIpLCBDKDVhZWVhZDhkNmNiMjViYjkpLCBDKDczOTMxNWY3NzQz
ZWMzZmYpLAotICAgICBDKDlhYjQ4ZDI3MTExZDJkY2MpLCBDKDViODdiZDM1YTk3NTkyOWIpLCBD
KGMzZGQ4ZDZkOTVhNDZiYjMpLAotICAgICBDKDdiZjkwOTMyMTVhNGY0ODMpLCBDKGNiNTU3ZDZl
ZDg0Mjg1YmQpLCBDKGRhZjU4NDIyZjI2MWZkYjUpLAogICAgICBDKGI0YmFhN2E4KX0sCi0gICAg
e0MoM2IxZmM2YTNkMjc5ZTY3ZCksIEMoNzBlYTFlNDljMjI2Mzk2KSwgQygyNTUwNWFkY2YxMDQ2
OTdjKSwKLSAgICAgQyhiYTFmZmJhMjlmMDM2N2FhKSwgQyhhMjBiZWMxZGQxNWE4YjZjKSwgQyhl
OWJmNjFkMmRhYjBmNzc0KSwKLSAgICAgQyhmNGYzNWJmNTg3MGEwNDljKSwgQyhiYTFmZmJhMjlm
MDM2N2FhKSwgQyhhMjBiZWMxZGQxNWE4YjZjKSwKLSAgICAgQyhlOWJmNjFkMmRhYjBmNzc0KSwg
QyhmNGYzNWJmNTg3MGEwNDljKSwgQygyNjc4N2VmYTViOTIzODUpLAotICAgICBDKDNkOTUzMzU5
MGNlMzBiNTkpLCBDKGE0ZGEzZTQwNTMwYTAxZDQpLCBDKDYzOTVkZWFlZmI3MDA2N2MpLAotICAg
ICBDKDgzZTk2MmZlKX0sCi0gICAge0MoZDk3ZWFjZGYxMGYxYzNjOSksIEMoYjU0ZjQ2NTQwNDNh
MzZlMCksIEMoYjEyOGY2ZWIwOWQxMjM0KSwKLSAgICAgQyhkOGFkN2VjODRhOWM5YWEyKSwgQyhl
MjU2Y2ZmZWQxMWY2OWU2KSwgQygyY2Y2NWU0OTU4YWQ1YmRhKSwKLSAgICAgQyhjZmJmOWIwMzI0
NTk4OWE3KSwgQyhkOGFkN2VjODRhOWM5YWEyKSwgQyhlMjU2Y2ZmZWQxMWY2OWU2KSwKLSAgICAg
QygyY2Y2NWU0OTU4YWQ1YmRhKSwgQyhjZmJmOWIwMzI0NTk4OWE3KSwgQyg5ZmE1MWU2Njg2Y2Y0
NDQ0KSwKLSAgICAgQyg5NDI1YzExN2EzNDYwOWQ1KSwgQyhiMjVmN2UyYzZmMzBlOTYpLCBDKGVh
NTQ3N2MzZjJiNWFmZDEpLCBDKGFhYzM1MzFjKX0sCisgICAge0MoM2IxZmM2YTNkMjc5ZTY3ZCks
IEMoNzBlYTFlNDljMjI2Mzk2KSwgQygyNTUwNWFkY2YxMDQ2OTdjKSwgQyg4M2U5NjJmZSl9LAor
ICAgIHtDKGQ5N2VhY2RmMTBmMWMzYzkpLCBDKGI1NGY0NjU0MDQzYTM2ZTApLCBDKGIxMjhmNmVi
MDlkMTIzNCksIEMoYWFjMzUzMWMpfSwKICAgICB7QygyOTNhNWMxYzRlMjAzY2Q0KSwgQyg2YjMz
MjlmMWMxMzBjZWZlKSwgQyhmMmUzMmY4ZWM3NmFhYzkxKSwKLSAgICAgQygzNjFlMGE2MmM4MTg3
YmZmKSwgQyg2MDg5OTcxYmI4NGQ3MTMzKSwgQyg5M2RmNzc0MTU4OGRkNTBiKSwKLSAgICAgQyhj
MmE5YjZhYmNkMWQ4MGIxKSwgQygzNjFlMGE2MmM4MTg3YmZmKSwgQyg2MDg5OTcxYmI4NGQ3MTMz
KSwKLSAgICAgQyg5M2RmNzc0MTU4OGRkNTBiKSwgQyhjMmE5YjZhYmNkMWQ4MGIxKSwgQyg0ZDJm
ODY4NjlkNzliYzU5KSwKLSAgICAgQyg4NWNkMjRkOGFhNTcwZmYpLCBDKGIwZGNmNmVmMGU5NGJi
YjUpLCBDKDIwMzdjNjlhYTdhNzg0MjEpLCBDKDJiMWRiN2NjKX0sCisgICAgIEMoMmIxZGI3Y2Mp
fSwKICAgICB7Qyg0MjkwZTAxOGZmYWVkZGU3KSwgQyhhMTQ5NDg1NDU0MThlYjVlKSwgQyg3MmQ4
NTFiMjAyMjg0NjM2KSwKLSAgICAgQyg0ZWMwMmYzZDJmMmIyM2YyKSwgQyhhYjM1ODA3MDhhYTdj
MzM5KSwgQyhjZGNlMDY2ZmJhYjNmNjUpLAotICAgICBDKGQ4ZWQzZWNmM2M3NjQ3YjkpLCBDKDRl
YzAyZjNkMmYyYjIzZjIpLCBDKGFiMzU4MDcwOGFhN2MzMzkpLAotICAgICBDKGNkY2UwNjZmYmFi
M2Y2NSksIEMoZDhlZDNlY2YzYzc2NDdiOSksIEMoNmQyMjA0YjNlMzFmMzQ0YSksCi0gICAgIEMo
NjFhNGQ4N2Y4MGVlNjFkNyksIEMoNDQ2YzQzZGJlZDRiNzI4ZiksIEMoNzMxMzBhYzk0ZjU4NzQ3
ZSksCiAgICAgIEMoY2YwMGNkMzEpfSwKICAgICB7QyhmOTE5YTU5Y2JkZThiZjJmKSwgQyhhNTZk
MDQyMDNiMmRjNWE1KSwgQygzOGIwNjc1M2FjODcxZTQ4KSwKLSAgICAgQyhjMmM5ZmM2MzdkYmRm
Y2ZhKSwgQygyOTJhYjgzMDZkMTQ5ZDc1KSwgQyg3ZjQzNmI4NzRiOWZmYzA3KSwKLSAgICAgQyhh
NWI1NmIwMTI5MjE4YjgwKSwgQyhjMmM5ZmM2MzdkYmRmY2ZhKSwgQygyOTJhYjgzMDZkMTQ5ZDc1
KSwKLSAgICAgQyg3ZjQzNmI4NzRiOWZmYzA3KSwgQyhhNWI1NmIwMTI5MjE4YjgwKSwgQyg5MTg4
ZjdiZGM0N2VjMDUwKSwKLSAgICAgQyhjZmU5MzQ1ZDAzYTE1YWRlKSwgQyg0MGI1MjBmYjI3NTBj
NDllKSwgQyhjMmU4M2QzNDM5NjhhZjJlKSwKICAgICAgQyg3ZDNjNDNiOCl9LAogICAgIHtDKDFk
NzBhM2Y1NTIxZDdmYTQpLCBDKGZiOTdiM2ZkYzU4OTE5NjUpLCBDKDI5OWQ0OWJiYmUzNTM1YWYp
LAotICAgICBDKGUxYTgyODZhN2Q2Nzk0NmUpLCBDKDUyYmQ5NTZmMDQ3YjI5OCksIEMoY2JkNzQz
MzJkZDQyMDRhYyksCi0gICAgIEMoMTJiNWJlNzc1MjcyMTk3NiksIEMoZTFhODI4NmE3ZDY3OTQ2
ZSksIEMoNTJiZDk1NmYwNDdiMjk4KSwKLSAgICAgQyhjYmQ3NDMzMmRkNDIwNGFjKSwgQygxMmI1
YmU3NzUyNzIxOTc2KSwgQygyNzg0MjZlMjdmNjIwNGI2KSwKLSAgICAgQyg5MzJjYTdhN2NkNjEw
MTgxKSwgQyg0MTY0NzMyMWYwYTU5MTRkKSwgQyg0OGY0YWE2MWEwYWU4MGRiKSwKICAgICAgQyhj
YmQ1ZmFjNil9LAogICAgIHtDKDZhZjk4ZDdiNjU2ZDBkN2MpLCBDKGQyZTk5YWU5NmQ2YjVjMGMp
LCBDKGY2M2JkMTYwM2VmODA2MjcpLAotICAgICBDKGJkZTUxMDMzYWMwNDEzZjgpLCBDKGJjMDI3
MmY2OTFhZWM2MjkpLCBDKDYyMDQzMzI2NTFiZWJjNDQpLAotICAgICBDKDFjYmYwMGRlMDI2ZWE5
YmQpLCBDKGJkZTUxMDMzYWMwNDEzZjgpLCBDKGJjMDI3MmY2OTFhZWM2MjkpLAotICAgICBDKDYy
MDQzMzI2NTFiZWJjNDQpLCBDKDFjYmYwMGRlMDI2ZWE5YmQpLCBDKGI5YzdlZDZhNzVmM2ZmMWUp
LAotICAgICBDKDdlMzEwYjc2YTU4MDhlNGYpLCBDKGFjYmJkMWFhZDU1MzE4ODUpLCBDKGZjMjQ1
ZjI0NzNhZGViOWMpLAogICAgICBDKDc2ZDBmZWM0KX0sCi0gICAge0MoMzk1YjdhOGFkYjk2YWI3
NSksIEMoNTgyZGY3MTY1YjIwZjRhKSwgQyhlNTJiZDMwZTlmZjY1N2Y5KSwKLSAgICAgQyg2Yzcx
MDY0OTk2Y2JlYzhiKSwgQygzNTJjNTM1ZWRlZWZjYjg5KSwgQyhhYzdmMGFiYTE1Y2Q1ZWNkKSwK
LSAgICAgQygzYWJhMWNhODM1M2U1YzYwKSwgQyg2YzcxMDY0OTk2Y2JlYzhiKSwgQygzNTJjNTM1
ZWRlZWZjYjg5KSwKLSAgICAgQyhhYzdmMGFiYTE1Y2Q1ZWNkKSwgQygzYWJhMWNhODM1M2U1YzYw
KSwgQyg1YzMwYTI4OGE4MGNlNjQ2KSwKLSAgICAgQyhjMjk0MDQ4OGI2NjE3Njc0KSwgQyg5MjVm
OGNjNjZiMzcwNTc1KSwgQyhhYTY1ZDEyODNiOWJiMGVmKSwKLSAgICAgQyg0MDVlMzQwMil9LAor
ICAgIHtDKDM5NWI3YThhZGI5NmFiNzUpLCBDKDU4MmRmNzE2NWIyMGY0YSksIEMoZTUyYmQzMGU5
ZmY2NTdmOSksIEMoNDA1ZTM0MDIpfSwKICAgICB7QygzODIyZGQ4MmM3ZGYwMTJmKSwgQyhiOTAy
OWI0MGJkOWYxMjJiKSwgQyhmZDI1Yjk4ODQ2ODI2NmM0KSwKLSAgICAgQyg0M2U0N2JkNWJhYjFl
MGVmKSwgQyg0YTcxZjM2MzQyMWYyODJmKSwgQyg4ODBiMmYzMmEyYjRlMjg5KSwKLSAgICAgQygx
Mjk5ZDRlZGE5ZDNlYWRmKSwgQyg0M2U0N2JkNWJhYjFlMGVmKSwgQyg0YTcxZjM2MzQyMWYyODJm
KSwKLSAgICAgQyg4ODBiMmYzMmEyYjRlMjg5KSwgQygxMjk5ZDRlZGE5ZDNlYWRmKSwgQyhkNzEz
YTQwMjI2ZjU1NjQpLAotICAgICBDKDRkOGQzNGZlZGM3Njk0MDYpLCBDKGE4NTAwMWIyOWNkOWNh
YzMpLCBDKGNhZTkyMzUyYTQxZmQyYjApLAogICAgICBDKGM3MzJjNDgxKX0sCiAgICAge0MoNzlm
N2VmZTRhODBiOTUxYSksIEMoZGQzYTNmZGRmYzZjOWM0MSksIEMoYWI0YzgxMmY5ZTI3YWE0MCks
Ci0gICAgIEMoODMyOTU0ZWM5ZDBkZTMzMyksIEMoOTRjMzkwYWE5YmNiNmI4YSksIEMoZjNiMzJh
ZmRjMWYwNGY4MiksCi0gICAgIEMoZDIyOWMzYjcyZTRiOWE3NCksIEMoODMyOTU0ZWM5ZDBkZTMz
MyksIEMoOTRjMzkwYWE5YmNiNmI4YSksCi0gICAgIEMoZjNiMzJhZmRjMWYwNGY4MiksIEMoZDIy
OWMzYjcyZTRiOWE3NCksIEMoMWQxMTg2MGQ3ZWQ2MjRhNiksCi0gICAgIEMoY2FkZWUyMGIzNDQx
Yjk4NCksIEMoNzUzMDcwNzliZjMwNmY3YiksIEMoODc5MDJhYTNiOTc1M2JhNCksCiAgICAgIEMo
YThkMTIzYzkpfSwKLSAgICB7QyhhZTZlNTlmNWYwNTU5MjFhKSwgQyhlOWQ5YjdiZjY4ZTgyKSwg
Qyg1Y2U0ZTRhNWIyNjljYzU5KSwKLSAgICAgQyg0OTYwMTExNzg5NzI3NTY3KSwgQygxNDliOGEz
N2M3MTI1YWI2KSwgQyg3OGM3YTEzYWI5NzQ5MzgyKSwKLSAgICAgQygxYzYxMTMxMjYwY2ExNTFh
KSwgQyg0OTYwMTExNzg5NzI3NTY3KSwgQygxNDliOGEzN2M3MTI1YWI2KSwKLSAgICAgQyg3OGM3
YTEzYWI5NzQ5MzgyKSwgQygxYzYxMTMxMjYwY2ExNTFhKSwgQygxZTkzMjc2YjM1YzMwOWEwKSwK
LSAgICAgQygyNjE4ZjU2MjMwYWNkZTU4KSwgQyhhZjYxMTMwYTE4ZTRmZWJmKSwgQyg3MTQ1ZGVi
MThlODliZWZlKSwKLSAgICAgQygxZTgwYWQ3ZCl9LAorICAgIHtDKGFlNmU1OWY1ZjA1NTkyMWEp
LCBDKGU5ZDliN2JmNjhlODIpLCBDKDVjZTRlNGE1YjI2OWNjNTkpLCBDKDFlODBhZDdkKX0sCiAg
ICAge0MoODk1OWRiYmYwNzM4N2QzNiksIEMoYjQ2NThhZmNlNDhlYTM1ZCksIEMoOGYzZjgyNDM3
ZDhjYjhkNiksCi0gICAgIEMoNjU2NmQ3NDk1NDk4NmJhNSksIEMoOTlkNTIzNWNjODI1MTlhNyks
IEMoMjU3YTIzODA1YzJkODI1KSwKLSAgICAgQyhhZDc1Y2NiOTY4ZTkzNDAzKSwgQyg2NTY2ZDc0
OTU0OTg2YmE1KSwgQyg5OWQ1MjM1Y2M4MjUxOWE3KSwKLSAgICAgQygyNTdhMjM4MDVjMmQ4MjUp
LCBDKGFkNzVjY2I5NjhlOTM0MDMpLCBDKGI0NWJkNGNmNzhlMTFmN2YpLAotICAgICBDKDgwYzU1
MzZiZGM0ODc5ODMpLCBDKGE0ZmQ3NmVjYmYwMThjOGEpLCBDKDNiOWRhYzc4YTdhNzBkNDMpLAog
ICAgICBDKDUyYWViODYzKX0sCiAgICAge0MoNDczOTYxMzIzNDI3OGE0OSksIEMoOTllYTViY2Qz
NDBiZjY2MyksIEMoMjU4NjQwOTEyZTcxMmIxMiksCi0gICAgIEMoYzhhMjgyNzQwNDk5MTQwMiks
IEMoN2VlNWU3ODU1MGYwMjY3NSksIEMoMmVjNTM5NTJkYjVhYzY2MiksCi0gICAgIEMoMTUyNjQw
NWE5ZGY2Nzk0YiksIEMoYzhhMjgyNzQwNDk5MTQwMiksIEMoN2VlNWU3ODU1MGYwMjY3NSksCi0g
ICAgIEMoMmVjNTM5NTJkYjVhYzY2MiksIEMoMTUyNjQwNWE5ZGY2Nzk0YiksIEMoZWRkYzYyNzEx
NzBjNWUxZiksCi0gICAgIEMoZjVhODVmOTg2MDAxZDlkNiksIEMoOTU0MjdjNjc3YmY1OGQ1OCks
IEMoNTNlZDY2NmRmYTg1Y2IyOSksCiAgICAgIEMoZWY3YzBjMTgpfSwKICAgICB7Qyg0MjBlNmM5
MjZiYzU0ODQxKSwgQyg5NmRiYmY2ZjRlN2M3NWNkKSwgQyhkOGQ0MGZhNzBjM2M2N2JiKSwKLSAg
ICAgQygzZWRiYzEwZTRiZmVlOTFiKSwgQyhmMGQ2ODEzMDRjMjhlZjY4KSwgQyg3N2VhNjAyMDI5
YWFhZjljKSwKLSAgICAgQyg5MGYwNzBiZDI0Yzg0ODNjKSwgQygzZWRiYzEwZTRiZmVlOTFiKSwg
QyhmMGQ2ODEzMDRjMjhlZjY4KSwKLSAgICAgQyg3N2VhNjAyMDI5YWFhZjljKSwgQyg5MGYwNzBi
ZDI0Yzg0ODNjKSwgQygyOGJjOGU0MWUwOGNlYjg2KSwKLSAgICAgQygxZWI1NmU0OGE2NTY5MWVm
KSwgQyg5ZmVhNTMwMWM5MjAyZjBlKSwgQygzZmNiNjUwOTFhYTlmMTM1KSwKICAgICAgQyhiNmFk
NGI2OCl9LAogICAgIHtDKGM4NjAxYmFiNTYxYmMxYjcpLCBDKDcyYjI2MjcyYTBmZjg2OWEpLCBD
KDU2ZmRmYzk4NmQ2YmMzYzQpLAotICAgICBDKDgzNzA3NzMwY2FkNzI1ZDQpLCBDKGM5Y2E4OGMz
YTc3OTY3NGEpLCBDKGUxYzY5NmZiYmQ5YWE5MzMpLAotICAgICBDKDcyM2YzYmFhYjFjMTdhNDUp
LCBDKDgzNzA3NzMwY2FkNzI1ZDQpLCBDKGM5Y2E4OGMzYTc3OTY3NGEpLAotICAgICBDKGUxYzY5
NmZiYmQ5YWE5MzMpLCBDKDcyM2YzYmFhYjFjMTdhNDUpLCBDKGY4MmFiYzdhMWQ4NTE2ODIpLAot
ICAgICBDKDMwNjgzODM2ODE4ZTg1N2QpLCBDKDc4YmZhM2U4OWE1YWIyM2YpLCBDKDY5MjgyMzQ0
ODJiMzE4MTcpLAogICAgICBDKGMxZTQ2YjE3KX0sCi0gICAge0MoYjJkMjk0OTMxYTBlMjBlYiks
IEMoMjg0ZmZkOWEwODE1YmMzOCksIEMoMWY4YTEwM2FhYzliYmU2KSwKLSAgICAgQygxZWY4ZTk4
ZTFlYTU3MjY5KSwgQyg1OTcxMTE2MjcyZjQ1YThiKSwgQygxODdhZDY4Y2U5NWQ4ZWFjKSwKLSAg
ICAgQyhlOTRlOTNlZTRlOGVjYWE2KSwgQygxZWY4ZTk4ZTFlYTU3MjY5KSwgQyg1OTcxMTE2Mjcy
ZjQ1YThiKSwKLSAgICAgQygxODdhZDY4Y2U5NWQ4ZWFjKSwgQyhlOTRlOTNlZTRlOGVjYWE2KSwg
QyhhMGZmMmE1ODYxMTgzOGI1KSwKLSAgICAgQyhiMDFlMDM4NDliZmJhZTZmKSwgQyhkMDgxZTIw
MmUyOGVhM2FiKSwgQyg1MTgzNmJjZWU3NjJiZjEzKSwKLSAgICAgQyg1N2I4ZGYyNSl9LAorICAg
IHtDKGIyZDI5NDkzMWEwZTIwZWIpLCBDKDI4NGZmZDlhMDgxNWJjMzgpLCBDKDFmOGExMDNhYWM5
YmJlNiksIEMoNTdiOGRmMjUpfSwKICAgICB7Qyg3OTY2ZjUzYzM3YjZjNmQ3KSwgQyg4ZTZhYmNm
YjNhYTJiODhmKSwgQyg3ZjJlNWUwNzI0ZTVmMzQ1KSwKLSAgICAgQygzZWViNjBjM2Y1ZjgxNDNk
KSwgQyhhMjVhZWMwNWM0MjJhMjRmKSwgQyhiMDI2YjAzYWQzY2NhNGRiKSwKLSAgICAgQyhlNmUw
MzAwMjhjYzAyYTAyKSwgQygzZWViNjBjM2Y1ZjgxNDNkKSwgQyhhMjVhZWMwNWM0MjJhMjRmKSwK
LSAgICAgQyhiMDI2YjAzYWQzY2NhNGRiKSwgQyhlNmUwMzAwMjhjYzAyYTAyKSwgQygxNmZlNjc5
MzM4YjM0YmZjKSwKLSAgICAgQyhjMWJlMzg1YjVjOGE5ZGU0KSwgQyg2NWFmNWRmNjU2NzUzMGVi
KSwgQyhlZDNiMzAzZGY0ZGM2MzM1KSwKICAgICAgQyhlOWZhMzZkNil9LAogICAgIHtDKGJlOWJi
MGFiZDAzYjczNjgpLCBDKDEzYmNhOTNhMzAzMWJlNTUpLCBDKGU4NjRmNGY1MmI1NWI0NzIpLAot
ICAgICBDKDM2YThkMTNhMmNiYjA5MzkpLCBDKDI1NGFjNzM5MDc0MTMyMzApLCBDKDczNTIwZDE1
MjIzMTVhNzApLAotICAgICBDKDhjOWZkYjVjZjFlMWE1MDcpLCBDKDM2YThkMTNhMmNiYjA5Mzkp
LCBDKDI1NGFjNzM5MDc0MTMyMzApLAotICAgICBDKDczNTIwZDE1MjIzMTVhNzApLCBDKDhjOWZk
YjVjZjFlMWE1MDcpLCBDKGIzNjQwNTcwYjkyNjg4NiksCi0gICAgIEMoZmJhMjM0NGVlODdmN2Jh
YiksIEMoZGU1NzM0MWFiNDQ4ZGYwNSksIEMoMzg1NjEyZWUwOTRmYTk3NyksCiAgICAgIEMoOGY4
ZGFlZmMpfSwKLSAgICB7QyhhMDhkMTI4YzVmMTY0OWJlKSwgQyhhODE2NmMzZGJiZTE5YWFkKSwg
QyhjYjlmOTE0ZjgyOWVjNjJjKSwKLSAgICAgQyg1YjJiN2NhODU2ZmFkMWMzKSwgQyg4MDkzMDIy
ZDY4MmUzNzVkKSwgQyhlYTVkMTYzYmE3ZWEyMzFmKSwKLSAgICAgQyhkNjE4MWQwMTJjMGRlNjQx
KSwgQyg1YjJiN2NhODU2ZmFkMWMzKSwgQyg4MDkzMDIyZDY4MmUzNzVkKSwKLSAgICAgQyhlYTVk
MTYzYmE3ZWEyMzFmKSwgQyhkNjE4MWQwMTJjMGRlNjQxKSwgQyhlN2Q0MGQwYWI4YjA4MTU5KSwK
LSAgICAgQygyZTgyMzIwZjUxYjNhNjdlKSwgQygyN2MyZTM1NmVhMGI2M2EzKSwgQyg1ODg0MmQw
MWEyYjFkMDc3KSwgQyg2ZTFiYjdlKX0sCisgICAge0MoYTA4ZDEyOGM1ZjE2NDliZSksIEMoYTgx
NjZjM2RiYmUxOWFhZCksIEMoY2I5ZjkxNGY4MjllYzYyYyksIEMoNmUxYmI3ZSl9LAogICAgIHtD
KDdjMzg2ZjBmZmUwNDY1YWMpLCBDKDUzMDQxOWM5ZDg0M2RiZjMpLCBDKDc0NTBlM2E0ZjcyYjhk
OGMpLAotICAgICBDKDQ4YjIxOGUzYjcyMTgxMGQpLCBDKGQzNzU3YWM4NjA5YmM3ZmMpLCBDKDEx
MWJhMDJhODhhZWZjOCksCi0gICAgIEMoZTg2MzQzMTM3ZDNiZmMyYSksIEMoNDhiMjE4ZTNiNzIx
ODEwZCksIEMoZDM3NTdhYzg2MDliYzdmYyksCi0gICAgIEMoMTExYmEwMmE4OGFlZmM4KSwgQyhl
ODYzNDMxMzdkM2JmYzJhKSwgQyg0NGFkMjZiNTE2NjFiNTA3KSwKLSAgICAgQyhkYjEyNjg2NzAy
NzRmNTFlKSwgQyg2MmE1ZTc1YmVhZTg3NWYzKSwgQyhlMjY2ZTdhNDRjNWYyOGM2KSwKICAgICAg
QyhmZDAwNzZmMCl9LAotICAgIHtDKGJiMzYyMDk0ZTdlZjRmOCksIEMoZmYzYzJhNDg5NjZmOTcy
NSksIEMoNTUxNTI4MDNhY2Q0YTdmZSksCi0gICAgIEMoMTU3NDdkOGM1MDVmZmQwMCksIEMoNDM4
YTE1ZjM5MTMxMmNkNiksIEMoZTQ2Y2E2MmMyNmQ4MjFmNSksCi0gICAgIEMoYmU3OGQ3NGM5Zjc5
Y2I0NCksIEMoMTU3NDdkOGM1MDVmZmQwMCksIEMoNDM4YTE1ZjM5MTMxMmNkNiksCi0gICAgIEMo
ZTQ2Y2E2MmMyNmQ4MjFmNSksIEMoYmU3OGQ3NGM5Zjc5Y2I0NCksIEMoYThhYTE5ZjNhYTU5ZjA5
YSksCi0gICAgIEMoZWZmYjNjZGRhYjJjOTI2NyksIEMoZDc4ZTQxYWQ5N2NiMTZhNSksIEMoYWNl
NjgyMTUxMzUyN2QzMiksCi0gICAgIEMoODk5YjE3YjYpfSwKKyAgICB7QyhiYjM2MjA5NGU3ZWY0
ZjgpLCBDKGZmM2MyYTQ4OTY2Zjk3MjUpLCBDKDU1MTUyODAzYWNkNGE3ZmUpLCBDKDg5OWIxN2I2
KX0sCiAgICAge0MoY2Q4MGRlYTI0MzIxZWVhNCksIEMoNTJiNGZkYzgxMzBjMmIxNSksIEMoZjNl
YTEwMGIxNTRiZmI4MiksCi0gICAgIEMoZDljY2VmMWQ0YmU0Njk4OCksIEMoNWVkZTBjNGUzODNh
NWU2NiksIEMoZGE2OTY4MzcxNmE1NGQxZSksCi0gICAgIEMoYmZjM2ZkZjAyZDI0MmQyNCksIEMo
ZDljY2VmMWQ0YmU0Njk4OCksIEMoNWVkZTBjNGUzODNhNWU2NiksCi0gICAgIEMoZGE2OTY4Mzcx
NmE1NGQxZSksIEMoYmZjM2ZkZjAyZDI0MmQyNCksIEMoMjBlZDMwMjc0NjUxYjNmNSksCi0gICAg
IEMoNGM2NTk4MjQxNjllODZjNiksIEMoNjM3MjI2ZGFlNWI1MmEwZSksIEMoN2UwNTBkYmQxYzcx
ZGM3ZiksCiAgICAgIEMoZTNlODRlMzEpfSwKICAgICB7QyhkNTk5YTA0MTI1MzcyYzNhKSwgQygz
MTMxMzZjNTZhNTZmMzYzKSwgQygxZTk5M2MzNjc3NjI1ODMyKSwKLSAgICAgQygyODcwYTk5Yzc2
YTU4N2E0KSwgQyg5OWY3NGNjMGIxODJkZGE0KSwgQyg4YTVlODk1YjJmMGNhN2I2KSwKLSAgICAg
QygzZDc4ODgyZDVlMGJiMWRjKSwgQygyODcwYTk5Yzc2YTU4N2E0KSwgQyg5OWY3NGNjMGIxODJk
ZGE0KSwKLSAgICAgQyg4YTVlODk1YjJmMGNhN2I2KSwgQygzZDc4ODgyZDVlMGJiMWRjKSwgQyhm
NDY2MTIzNzMyYTNlMjVlKSwKLSAgICAgQyhhY2E1ZTU5NzE2YTQwZTUwKSwgQygyNjFkMmU3Mzgz
ZDBlNjg2KSwgQyhjZTkzNjJkNmE0MmMxNWE3KSwKICAgICAgQyhlZWY3OWI2Yil9LAotICAgIHtD
KGRiYmY1NDFlOWRmZGEwYSksIEMoMTQ3OWZjZWI2ZGI0Zjg0NCksIEMoMzFhYjU3NmI1OTA2MjUz
NCksCi0gICAgIEMoYTMzMzVjNDE3Njg3Y2YzYSksIEMoOTJmZjExNGFjNDVjZGE3NSksIEMoYzNi
OGE2MjczODRmMTNiNSksCi0gICAgIEMoYzRmMjVkZTMzZGU4YjNmNyksIEMoYTMzMzVjNDE3Njg3
Y2YzYSksIEMoOTJmZjExNGFjNDVjZGE3NSksCi0gICAgIEMoYzNiOGE2MjczODRmMTNiNSksIEMo
YzRmMjVkZTMzZGU4YjNmNyksIEMoZWFjYmY1MjA1NzhjNTk2NCksCi0gICAgIEMoNGNiMTljNWFi
MjRmMzIxNSksIEMoZTdkOGE2ZjY3ZjBjNmU3KSwgQygzMjVjMjQxM2ViNzcwYWRhKSwgQyg4Njhl
MzMxNSl9LAotICAgIHtDKGMyZWUzMjg4YmU0ZmUyYmYpLCBDKGM2NWQyZjVkZGYzMmI5MiksIEMo
YWY2ZWNkZjEyMWJhNTQ4NSksCi0gICAgIEMoYzdjZDQ4ZjdhYmYxZmU1OSksIEMoY2U2MDA2NTZh
Y2U2ZjUzYSksIEMoOGE5NGE0MzgxYjEwOGIzNCksCi0gICAgIEMoZjlkMTI3NmM2NGJmNTlmYiks
IEMoYzdjZDQ4ZjdhYmYxZmU1OSksIEMoY2U2MDA2NTZhY2U2ZjUzYSksCi0gICAgIEMoOGE5NGE0
MzgxYjEwOGIzNCksIEMoZjlkMTI3NmM2NGJmNTlmYiksIEMoMjE5Y2U3MGZmNWExMTJhNSksCi0g
ICAgIEMoZTYwMjZjNTc2ZTJkMjhkNyksIEMoYjhlNDY3ZjI1MDE1ZTNhNiksIEMoOTUwY2I5MDRm
MzdhZjcxMCksCi0gICAgIEMoNDYzOWE0MjYpfSwKKyAgICB7QyhkYmJmNTQxZTlkZmRhMGEpLCBD
KDE0NzlmY2ViNmRiNGY4NDQpLCBDKDMxYWI1NzZiNTkwNjI1MzQpLCBDKDg2OGUzMzE1KX0sCisg
ICAge0MoYzJlZTMyODhiZTRmZTJiZiksIEMoYzY1ZDJmNWRkZjMyYjkyKSwgQyhhZjZlY2RmMTIx
YmE1NDg1KSwgQyg0NjM5YTQyNil9LAogICAgIHtDKGQ4NjYwM2NlZDFlZDQ3MzApLCBDKGY5ZGU3
MThhYWFkYTc3MDkpLCBDKGRiOGI5NzU1MTk0YzY1MzUpLAotICAgICBDKGQ4MDNlMWVlYWQ0NzYw
NGMpLCBDKGFkMDBmNzYxMTk3MGE3MWIpLCBDKGJjNTAwMzZiMTZjZTcxZjUpLAotICAgICBDKGFm
YmE5NjIxMGEyY2E3ZDYpLCBDKGQ4MDNlMWVlYWQ0NzYwNGMpLCBDKGFkMDBmNzYxMTk3MGE3MWIp
LAotICAgICBDKGJjNTAwMzZiMTZjZTcxZjUpLCBDKGFmYmE5NjIxMGEyY2E3ZDYpLCBDKDI4Zjdh
N2JlMWQ2NzY1ZjApLAotICAgICBDKDk3YmQ4ODhiOTM5MzhjNjgpLCBDKDZhZDQxZDFiNDA3ZGVk
NDkpLCBDKGI5YmZlYzA5OGRjNTQzZTQpLAogICAgICBDKGYzMjEzNjQ2KX0sCiAgICAge0MoOTE1
MjYzYzY3MWIyODgwOSksIEMoYTgxNTM3OGU3YWQ3NjJmZCksIEMoYWJlYzZkYzliNjY5ZjU1OSks
Ci0gICAgIEMoZDE3YzkyOGM1MzQyNDc3ZiksIEMoNzQ1MTMwYjc5NTI1NGFkNSksIEMoOGM1ZGI5
MjZmZTg4ZjhiYSksCi0gICAgIEMoNzQyYTk1Yzk1M2U2ZDk3NCksIEMoZDE3YzkyOGM1MzQyNDc3
ZiksIEMoNzQ1MTMwYjc5NTI1NGFkNSksCi0gICAgIEMoOGM1ZGI5MjZmZTg4ZjhiYSksIEMoNzQy
YTk1Yzk1M2U2ZDk3NCksIEMoMjc5ZGI4MDU3YjVkM2U5NiksCi0gICAgIEMoOTgxNjg0MTE1NjVi
NGVjNCksIEMoNTBhNzJjNTRmYTExMjVmYSksIEMoMjc3NjZhNjM1ZGI3MzYzOCksCiAgICAgIEMo
MTdmMTQ4ZTkpfSwKLSAgICB7QygyYjY3Y2RkMzhjMzA3YTVlKSwgQyhjYjFkNDViYjVjOWZlMWMp
LCBDKDgwMGJhZjJhMDJlYzE4YWQpLAotICAgICBDKDY1MzFjMWZlMzJiY2I0MTcpLCBDKDhjOTcw
ZDhkZjhjZGJlYjQpLCBDKDkxN2JhNWZjNjdlNzJiNDApLAotICAgICBDKDRiNjVlNGUyNjNlMGE0
MjYpLCBDKDY1MzFjMWZlMzJiY2I0MTcpLCBDKDhjOTcwZDhkZjhjZGJlYjQpLAotICAgICBDKDkx
N2JhNWZjNjdlNzJiNDApLCBDKDRiNjVlNGUyNjNlMGE0MjYpLCBDKGUwZGUzM2NlODhhOGIzYTkp
LAotICAgICBDKGY4ZWY5OGE0MzdlMTZiMDgpLCBDKGE1MTYyYzBjN2M1ZjdiNjIpLCBDKGRiZGFj
NDMzNjFiMmI4ODEpLAotICAgICBDKGJmZDk0ODgwKX0sCisgICAge0MoMmI2N2NkZDM4YzMwN2E1
ZSksIEMoY2IxZDQ1YmI1YzlmZTFjKSwgQyg4MDBiYWYyYTAyZWMxOGFkKSwgQyhiZmQ5NDg4MCl9
LAogICAgIHtDKDJkMTA3NDE5MDczYjljZDApLCBDKGE5NmRiMDc0MGNlZjhmNTQpLCBDKGVjNDFl
ZTkxYjNlY2RjMWIpLAotICAgICBDKGZmZTMxOTY1NGM4ZTdlYmMpLCBDKDZhNjdiOGYxM2VhZDVh
NzIpLCBDKDZkZDEwYTM0ZjgwZDUzMmYpLAotICAgICBDKDZlOWNmYWVjZTlmYmNhNCksIEMoZmZl
MzE5NjU0YzhlN2ViYyksIEMoNmE2N2I4ZjEzZWFkNWE3MiksCi0gICAgIEMoNmRkMTBhMzRmODBk
NTMyZiksIEMoNmU5Y2ZhZWNlOWZiY2E0KSwgQyhiNDQ2OGViNmEzMGFhN2U5KSwKLSAgICAgQyhl
ODc5OTViZWU0ODMyMjJhKSwgQyhkMDM2YzJjOTBjNjA5MzkxKSwgQyg4NTMzMDZlODJmYTMyMjQ3
KSwKICAgICAgQyhiYjFmYTdmMyl9LAotICAgIHtDKGYzZTk0ODdlYzBlMjZkZmMpLCBDKDFhYjFm
NjMyMjRlODM3ZmEpLCBDKDExOTk4M2JiNWE4MTI1ZDgpLAotICAgICBDKDg5NTBjZmNmNGJkZjYy
MmMpLCBDKDg4NDdkY2E4MmVmZWVmMmYpLCBDKDY0NmI3NWIwMjY3MDgxNjkpLAotICAgICBDKDIx
Y2FiNGIxNjg3YmQ4YiksIEMoODk1MGNmY2Y0YmRmNjIyYyksIEMoODg0N2RjYTgyZWZlZWYyZiks
Ci0gICAgIEMoNjQ2Yjc1YjAyNjcwODE2OSksIEMoMjFjYWI0YjE2ODdiZDhiKSwgQygyNDNiNDg5
YTllYWU2MjMxKSwKLSAgICAgQyg1ZjNlNjM0YzRiNzc5ODc2KSwgQyhmZjhhYmQxNTQ4ZWFmNjQ2
KSwgQyhjNzk2MmY1ZjAxNTE5MTRiKSwgQyg4ODgxNmIxKX0sCisgICAge0MoZjNlOTQ4N2VjMGUy
NmRmYyksIEMoMWFiMWY2MzIyNGU4MzdmYSksIEMoMTE5OTgzYmI1YTgxMjVkOCksIEMoODg4MTZi
MSl9LAogICAgIHtDKDExNjA5ODdjOGZlODZmN2QpLCBDKDg3OWU2ZGIxNDgxZWI5MWIpLCBDKGQ3
ZGNiODAyYmZlNjg4NWQpLAotICAgICBDKDE0NDUzYjVjYzNkODIzOTYpLCBDKDRlZjcwMGMzM2Vk
Mjc4YmMpLCBDKDE2MzljNzJmZmMwMGQxMmUpLAotICAgICBDKGZiMTQwZWU2MTU1ZjcwMGQpLCBD
KDE0NDUzYjVjYzNkODIzOTYpLCBDKDRlZjcwMGMzM2VkMjc4YmMpLAotICAgICBDKDE2MzljNzJm
ZmMwMGQxMmUpLCBDKGZiMTQwZWU2MTU1ZjcwMGQpLCBDKDJlNmI1Yzk2YTY2MjA4NjIpLAotICAg
ICBDKGExZjEzNjk5OGNiZTE5YyksIEMoNzRlMDU4YTNiNmM1YTcxMiksIEMoOTNkY2Y2YmQzMzky
OGIxNyksIEMoNWMyZmFlYjMpfSwKKyAgICAgQyg1YzJmYWViMyl9LAogICAgIHtDKGVhYjgxMTJj
NTYwYjk2N2IpLCBDKDk3ZjU1MGI1OGU4OWRiYWUpLCBDKDg0NmVkNTA2ZDMwNDA1MWYpLAotICAg
ICBDKDI3NmFhMzc3NDRiNWEwMjgpLCBDKDhjMTA4MDBlZTkwZWE1NzMpLCBDKGU2ZTU3ZDJiMzNh
MWUwYjcpLAotICAgICBDKDkxZjgzNTYzY2QzYjlkZGEpLCBDKDI3NmFhMzc3NDRiNWEwMjgpLCBD
KDhjMTA4MDBlZTkwZWE1NzMpLAotICAgICBDKGU2ZTU3ZDJiMzNhMWUwYjcpLCBDKDkxZjgzNTYz
Y2QzYjlkZGEpLCBDKGFmYmI0NzM5NTcwNzM4YTEpLAotICAgICBDKDQ0MGJhOThkYTVkOGY2OSks
IEMoZmRlNGU5YjBlZGEyMDM1MCksIEMoZTY3ZGZhNWEyMTM4ZmExKSwgQyg1MWI1ZmM2Zil9LAor
ICAgICBDKDUxYjVmYzZmKX0sCiAgICAge0MoMWFkZGNmMDM4NmQzNTM1MSksIEMoYjVmNDM2NTYx
ZjhmMTQ4NCksIEMoODVkMzhlMjIxODFjOWJiMSksCi0gICAgIEMoZmY1YzAzZjAwM2MxZmVmZSks
IEMoZTEwOTg2NzBhZmU3ZmY2KSwgQyhlYTQ0NTAzMGNmODZkZTE5KSwKLSAgICAgQyhmMTU1YzY4
YjVjMjk2N2Y4KSwgQyhmZjVjMDNmMDAzYzFmZWZlKSwgQyhlMTA5ODY3MGFmZTdmZjYpLAotICAg
ICBDKGVhNDQ1MDMwY2Y4NmRlMTkpLCBDKGYxNTVjNjhiNWMyOTY3ZjgpLCBDKDk1ZDMxYjE0NWRi
YjJlOWUpLAotICAgICBDKDkxNGZlMWNhM2RlYjMyNjUpLCBDKDYwNjYwMjBiMTM1OGNjYzEpLCBD
KGM3NGJiN2UyZGVlMTUwMzYpLAogICAgICBDKDMzZDk0NzUyKX0sCiAgICAge0MoZDQ0NWJhODRi
ZjgwM2UwOSksIEMoMTIxNmMyNDk3MDM4ZjgwNCksIEMoMjI5MzIxNmVhMjIzNzIwNyksCi0gICAg
IEMoZTIxNjQ0NTFjNjUxYWRmYiksIEMoYjI1MzRlNjU0NzdmOTgyMyksIEMoNGQ3MDY5MWE2OTY3
MWUzNCksCi0gICAgIEMoMTViZTQ5NjNkYmRlODE0MyksIEMoZTIxNjQ0NTFjNjUxYWRmYiksIEMo
YjI1MzRlNjU0NzdmOTgyMyksCi0gICAgIEMoNGQ3MDY5MWE2OTY3MWUzNCksIEMoMTViZTQ5NjNk
YmRlODE0MyksIEMoNzYyZTc1YzQwNmM1ZTlhMyksCi0gICAgIEMoN2I3NTc5ZjdlMDM1Njg0MSks
IEMoNDgwNTMzZWIwNjZkZmNlNSksIEMoOTBhZTE0ZWE2YmZlYjRhZSksCiAgICAgIEMoYjBjOTI5
NDgpfSwKICAgICB7QygzNzIzNWEwOTZhOGJlNDM1KSwgQyhkOWI3MzEzMDQ5MzU4OWMyKSwgQygz
YjEwMjRmNTkzNzhkM2JlKSwKLSAgICAgQyhhZDE1OWY1NDJkODFmMDRlKSwgQyg0OTYyNmE5N2E5
NDYwOTYpLCBDKGQ4ZDM5OThiZjA5ZmQzMDQpLAotICAgICBDKGQxMjdhNDExZWFlNjk0NTkpLCBD
KGFkMTU5ZjU0MmQ4MWYwNGUpLCBDKDQ5NjI2YTk3YTk0NjA5NiksCi0gICAgIEMoZDhkMzk5OGJm
MDlmZDMwNCksIEMoZDEyN2E0MTFlYWU2OTQ1OSksIEMoOGYzMjUzYzRlYjc4NWE3YiksCi0gICAg
IEMoNDA0OTA2MmYzN2U2MjM5NyksIEMoYjlmYTA0ZDNiNjcwZTVjMSksIEMoMTIxMWE3OTY3YWM5
MzUwZiksCiAgICAgIEMoYzcxNzE1OTApfSwKICAgICB7Qyg3NjNhZDZlYTJmZTFjOTlkKSwgQyhj
ZjdhZjUzNjhhYzFlMjZiKSwgQyg0ZDVlNDUxYjNiYjhkM2Q0KSwKLSAgICAgQygzNzEyZWI5MTNk
MDRlMmYyKSwgQygyZjk1MDBkMzE5Yzg0ZDg5KSwgQyg0YWM2ZWIyMWE4Y2YwNmY5KSwKLSAgICAg
Qyg3ZDE5MTdhZmNkZTQyNzQ0KSwgQygzNzEyZWI5MTNkMDRlMmYyKSwgQygyZjk1MDBkMzE5Yzg0
ZDg5KSwKLSAgICAgQyg0YWM2ZWIyMWE4Y2YwNmY5KSwgQyg3ZDE5MTdhZmNkZTQyNzQ0KSwgQyg2
YjU4NjA0YjVkZDEwOTAzKSwKLSAgICAgQyhjNDI4OGRmYmMxZTMxOWZjKSwgQygyMzBmNzVjYTk2
ODE3YzZlKSwgQyg4ODk0Y2JhM2I3NjM3NTZjKSwKICAgICAgQygyNDBhNjdmYil9LAogICAgIHtD
KGVhNjI3ZmM4NGNkMWI4NTcpLCBDKDg1ZTM3MjQ5NDUyMDA3MWYpLCBDKDY5ZWM2MTgwMDg0NTc4
MGIpLAotICAgICBDKGEzYzFjNWNhMWIwMzY3KSwgQyhlYjY5MzM5OTcyNzJiYjNkKSwgQyg3NmE3
MmNiNjI2OTJhNjU1KSwKLSAgICAgQygxNDBiYjU1MzFlZGY3NTZlKSwgQyhhM2MxYzVjYTFiMDM2
NyksIEMoZWI2OTMzOTk3MjcyYmIzZCksCi0gICAgIEMoNzZhNzJjYjYyNjkyYTY1NSksIEMoMTQw
YmI1NTMxZWRmNzU2ZSksIEMoOGQwZDgwNjdkMWM5MjVmNCksCi0gICAgIEMoN2IzZmE1NmQ4ZDc3
YTEwYyksIEMoMmJkMDAyODdiMDk0NmQ4OCksIEMoZjA4YzhlNGJkNjViODk3MCksCiAgICAgIEMo
ZTE4NDNjZDUpfSwKICAgICB7QygxZjJmZmQ3OWYyY2RjMGM4KSwgQyg3MjZhMWJjMzFiMzM3YWFh
KSwgQyg2NzhiN2YyNzVlZjk2NDM0KSwKLSAgICAgQyg1YWE4MmJmYWE5OWQzOTc4KSwgQyhjMThm
OTZjYWRlNWNlMThkKSwgQygzODQwNDQ5MWY5ZTM0YzAzKSwKLSAgICAgQyg4OTFmYjg5MjZiYTA0
MThjKSwgQyg1YWE4MmJmYWE5OWQzOTc4KSwgQyhjMThmOTZjYWRlNWNlMThkKSwKLSAgICAgQygz
ODQwNDQ5MWY5ZTM0YzAzKSwgQyg4OTFmYjg5MjZiYTA0MThjKSwgQyhlNWY2OWE2Mzk4MTE0YzE1
KSwKLSAgICAgQyg3YjhkZWQzNjIzYmM2YjFkKSwgQygyZjNlNWM1ZGE1ZmY3MGU4KSwgQygxYWIx
NDJhZGRlYTZhOWVjKSwKICAgICAgQyhmZGExNDUyYil9LAogICAgIHtDKDM5YTllMTQ2ZWM0YjMy
MTApLCBDKGY2M2Y3NTgwMmE3OGIxYWMpLCBDKGUyZTIyNTM5Yzk0NzQxYzMpLAotICAgICBDKDhi
MzA1ZDUzMmU2MTIyNmUpLCBDKGNhZWFlODBkYTJlYTJlKSwgQyg4OGE2Mjg5YTc2YWM2ODRlKSwK
LSAgICAgQyg4Y2U1YjVmOWRmMWNiZDg1KSwgQyg4YjMwNWQ1MzJlNjEyMjZlKSwgQyhjYWVhZTgw
ZGEyZWEyZSksCi0gICAgIEMoODhhNjI4OWE3NmFjNjg0ZSksIEMoOGNlNWI1ZjlkZjFjYmQ4NSks
IEMoOGFlMWZjNDc5OGUwMGQ1NyksCi0gICAgIEMoZTcxNjRiOGZiMzY0ZmM0NiksIEMoNmE5Nzhj
OWJkM2E2Njk0MyksIEMoZWYxMGQ1YWU0ZGQwOGRjKSwgQyhhMmNhZDMzMCl9LAorICAgICBDKGEy
Y2FkMzMwKX0sCiAgICAge0MoNzRjYmEzMDNlMmRkOWQ2ZCksIEMoNjkyNjk5YjgzMjg5ZmFkMSks
IEMoZGZiOWFhNzg3NDY3ODQ4MCksCi0gICAgIEMoNzUxMzkwYThhNWM0MWJkYyksIEMoNmVlNWZi
Zjg3NjA1ZDM0KSwgQyg2Y2E3M2Y2MTBmM2E4ZjdjKSwKLSAgICAgQyhlODk4YjNjOTk2NTcwYWQp
LCBDKDc1MTM5MGE4YTVjNDFiZGMpLCBDKDZlZTVmYmY4NzYwNWQzNCksCi0gICAgIEMoNmNhNzNm
NjEwZjNhOGY3YyksIEMoZTg5OGIzYzk5NjU3MGFkKSwgQyg5ODE2OGE1ODU4ZmM3MTEwKSwKLSAg
ICAgQyg2Zjk4N2ZhMjdhYTBkYWEyKSwgQyhmMjVlM2UxODBkNGIzNmEzKSwgQyhkMGIwMzQ5NWFl
YjFiZThhKSwKICAgICAgQyg1MzQ2N2UxNil9LAogICAgIHtDKDRjYmMyYjczYTQzMDcxZTApLCBD
KDU2YzVkYjRjNGNhNGUwYjcpLCBDKDFiMjc1YTE2MmY0NmJkM2QpLAotICAgICBDKGI4N2EzMjZl
NDEzNjA0YmYpLCBDKGQ4ZjlhNWZhMjE0YjAzYWIpLCBDKDhhOGJiODI2NTc3MWNmODgpLAotICAg
ICBDKGE2NTUzMTkwNTRmNmU3MGYpLCBDKGI4N2EzMjZlNDEzNjA0YmYpLCBDKGQ4ZjlhNWZhMjE0
YjAzYWIpLAotICAgICBDKDhhOGJiODI2NTc3MWNmODgpLCBDKGE2NTUzMTkwNTRmNmU3MGYpLCBD
KGI0OTljYjhlNjVhOWFmNDQpLAotICAgICBDKGJlZTdmYWZjYzgzMDc0OTEpLCBDKDVkMmU1NWZh
OWIyN2NkYTIpLCBDKDYzYjEyMGY1ZmIyZDZlZTUpLAogICAgICBDKGRhMTRhOGQwKX0sCiAgICAg
e0MoODc1NjM4Yjk3MTVkMjIyMSksIEMoZDliYTA2MTVjMGM1ODc0MCksIEMoNjE2ZDRiZTJkZmU4
MjVhYSksCi0gICAgIEMoNWRmMjVmMTNlYTdiYzI4NCksIEMoMTY1ZWRmYWFmZDI1OThmYiksIEMo
YWY3MjE1YzVjNzE4YzY5NiksCi0gICAgIEMoZTlmMmY5Y2E2NTVlNzY5KSwgQyg1ZGYyNWYxM2Vh
N2JjMjg0KSwgQygxNjVlZGZhYWZkMjU5OGZiKSwKLSAgICAgQyhhZjcyMTVjNWM3MThjNjk2KSwg
QyhlOWYyZjljYTY1NWU3NjkpLCBDKGU0NTljZmNiNTY1ZDNkMmQpLAotICAgICBDKDQxZDAzMjYz
MWJlMjQxOGEpLCBDKGM1MDVkYjA1ZmQ5NDZmNjApLCBDKDU0OTkwMzk0YTcxNGY1ZGUpLAogICAg
ICBDKDY3MzMzNTUxKX0sCiAgICAge0MoZmI2ODZiMjc4Mjk5NGE4ZCksIEMoZWRlZTYwNjkzNzU2
YmI0OCksIEMoZTZiYzNjYWUwZGVkMmVmNSksCi0gICAgIEMoNThlYjRkMDNiMmMzZGRmNSksIEMo
NmQyNTQyOTk1ZjkxODlmMSksIEMoYzBiZWVjNThhNWY1ZmVhMiksCi0gICAgIEMoZWQ2NzQzNmY0
MmUyYTc4YiksIEMoNThlYjRkMDNiMmMzZGRmNSksIEMoNmQyNTQyOTk1ZjkxODlmMSksCi0gICAg
IEMoYzBiZWVjNThhNWY1ZmVhMiksIEMoZWQ2NzQzNmY0MmUyYTc4YiksIEMoZGZlYzc2M2NkYjJi
NTE5MyksCi0gICAgIEMoNzI0YThkNTM0NWJkMmQ2KSwgQyg5NGQ0ZmQxYjgxNDU3YzIzKSwgQygy
OGU4N2M1MGNkZWRlNDUzKSwgQyhhMGViZDY2ZSl9LAorICAgICBDKGEwZWJkNjZlKX0sCiAgICAg
e0MoYWIyMWQ4MWE5MTFlNjcyMyksIEMoNGMzMWIwNzM1NDg1MmY1OSksIEMoODM1ZGEzODRjOTM4
NDc0NCksCi0gICAgIEMoN2Y3NTlkZGRjNmU4NTQ5YSksIEMoNjE2ZGQwY2EwMjJjODczNSksIEMo
OTQ3MTdhZDRiYzE1Y2ViMyksCi0gICAgIEMoZjY2YzdiZTgwOGFiMzZlKSwgQyg3Zjc1OWRkZGM2
ZTg1NDlhKSwgQyg2MTZkZDBjYTAyMmM4NzM1KSwKLSAgICAgQyg5NDcxN2FkNGJjMTVjZWIzKSwg
QyhmNjZjN2JlODA4YWIzNmUpLCBDKGFmODI4NmI1NTBiMmY0YjcpLAotICAgICBDKDc0NWJkMjE3
ZDIwYTlmNDApLCBDKGM3M2JmYjljNTQzMGYwMTUpLCBDKDU1ZTY1OTIyNjY2ZTNmYzIpLAogICAg
ICBDKDRiNzY5NTkzKX0sCiAgICAge0MoMzNkMDEzY2MwY2Q0NmVjZiksIEMoM2RlNzI2NDIzYWVh
MTIyYyksIEMoMTE2YWY1MTExN2ZlMjFhOSksCi0gICAgIEMoZjI3MWJhNDc0ZWRjNTYyZCksIEMo
ZTY1OTZlNjdmOWRkM2ViZCksIEMoYzBhMjg4ZWRmODA4ZjM4MyksCi0gICAgIEMoYjNkZWY3MDY4
MWM2YmFiYyksIEMoZjI3MWJhNDc0ZWRjNTYyZCksIEMoZTY1OTZlNjdmOWRkM2ViZCksCi0gICAg
IEMoYzBhMjg4ZWRmODA4ZjM4MyksIEMoYjNkZWY3MDY4MWM2YmFiYyksIEMoN2RhNzg2NGU5OTg5
YjA5NSksCi0gICAgIEMoYmYyZjg3MTg2OTNjZDhhMSksIEMoMjY0YTkxNDQxNjZkYTc3NiksIEMo
NjFhZDkwNjc2ODcwYmViNiksCiAgICAgIEMoNmFhNzU2MjQpfSwKLSAgICB7Qyg4Y2E5MmM3Y2Qz
OWZhZTVkKSwgQygzMTdlNjIwZTFiZjIwZjEpLCBDKDRmMGIzM2JmMjE5NGI5N2YpLAotICAgICBD
KDQ1NzQ0YWZjZjEzMWRiZWUpLCBDKDk3MjIyMzkyYzI1NTkzNTApLCBDKDQ5OGExOWIyODBjNmQ2
ZWQpLAotICAgICBDKDgzYWMyYzM2YWNkYjhkNDkpLCBDKDQ1NzQ0YWZjZjEzMWRiZWUpLCBDKDk3
MjIyMzkyYzI1NTkzNTApLAotICAgICBDKDQ5OGExOWIyODBjNmQ2ZWQpLCBDKDgzYWMyYzM2YWNk
YjhkNDkpLCBDKDdhNjk2NDVjMjk0ZGFhNjIpLAotICAgICBDKGFiZTlkMmJlODI3NWIzZDIpLCBD
KDM5NTQyMDE5ZGUzNzEwODUpLCBDKDdmNGVmYWM4NDg4Y2Q2YWQpLAotICAgICBDKDYwMmEzZjk2
KX0sCi0gICAge0MoZmRkZTNiMDNmMDE4ZjQzZSksIEMoMzhmOTMyOTQ2Yzc4NjYwKSwgQyhjODQw
ODRjZTk0Njg1MWVlKSwKLSAgICAgQyhiNmRkMDliYTc4NTFjN2FmKSwgQyg1NzBkZTRlMWJiMTNi
MTMzKSwgQyhjNGU3ODRlYjk3MjExNjQyKSwKLSAgICAgQyg4Mjg1YTdmY2RjYzdjNThkKSwgQyhi
NmRkMDliYTc4NTFjN2FmKSwgQyg1NzBkZTRlMWJiMTNiMTMzKSwKLSAgICAgQyhjNGU3ODRlYjk3
MjExNjQyKSwgQyg4Mjg1YTdmY2RjYzdjNThkKSwgQyhkNDIxZjQ3OTkwZGE4OTliKSwKLSAgICAg
Qyg4YWVkNDA5Yzk5N2VhYTEzKSwgQyg3YTA0NTkyOWMyZTI5Y2NmKSwgQyhiMzczNjgyYTYyMDJj
ODZiKSwKLSAgICAgQyhjZDE4M2M0ZCl9LAorICAgIHtDKDhjYTkyYzdjZDM5ZmFlNWQpLCBDKDMx
N2U2MjBlMWJmMjBmMSksIEMoNGYwYjMzYmYyMTk0Yjk3ZiksIEMoNjAyYTNmOTYpfSwKKyAgICB7
QyhmZGRlM2IwM2YwMThmNDNlKSwgQygzOGY5MzI5NDZjNzg2NjApLCBDKGM4NDA4NGNlOTQ2ODUx
ZWUpLCBDKGNkMTgzYzRkKX0sCiAgICAge0MoOWM4NTAyMDUwZTljOTQ1OCksIEMoZDZkMmExYTY5
OTY0YmViOSksIEMoMTY3NTc2NmY0ODAyMjliNSksCi0gICAgIEMoMjE2ZTFkNmM4NmNiNTI0Yyks
IEMoZDAxY2Y2ZmQ0ZjQwNjVjMCksIEMoZmZmYTRlYzViNDgyZWEwZiksCi0gICAgIEMoYTBlMjBl
ZTZhNTQwNGFjMSksIEMoMjE2ZTFkNmM4NmNiNTI0YyksIEMoZDAxY2Y2ZmQ0ZjQwNjVjMCksCi0g
ICAgIEMoZmZmYTRlYzViNDgyZWEwZiksIEMoYTBlMjBlZTZhNTQwNGFjMSksIEMoYzFiMDM3ZTRl
ZWJhZjg1ZSksCi0gICAgIEMoNjM0ZTNkN2MzZWJmODllYiksIEMoYmNkYTk3MjM1OGM2N2QxKSwg
QyhmZDEzNTIxODFlNWI4NTc4KSwgQyg5NjBhNGQwNyl9LAorICAgICBDKDk2MGE0ZDA3KX0sCiAg
ICAge0MoMzQ4MTc2Y2EyZmEyZmRkMiksIEMoM2E4OWM1MTRjYzM2MGMyZCksIEMoOWY5MGI4YWZi
MzE4ZDZkMCksCi0gICAgIEMoYmNlZWUwN2MxMWE5YWMzMCksIEMoMmUyZDQ3ZGZmOGU3N2ViNyks
IEMoMTFhMzk0Y2Q3YjZkNjE0YSksCi0gICAgIEMoMWQ3YzQxZDU0ZTE1Y2I0YSksIEMoYmNlZWUw
N2MxMWE5YWMzMCksIEMoMmUyZDQ3ZGZmOGU3N2ViNyksCi0gICAgIEMoMTFhMzk0Y2Q3YjZkNjE0
YSksIEMoMWQ3YzQxZDU0ZTE1Y2I0YSksIEMoMTViYWE1YWU3MzEyYjBmYyksCi0gICAgIEMoZjM5
OGY1OTZjYzk4NDYzNSksIEMoOGFiOGZkZjg3YTY3ODhlOCksIEMoYjJiNWMxMjM0YWI0N2UyKSwg
Qyg5YWU5OThjNCl9LAorICAgICBDKDlhZTk5OGM0KX0sCiAgICAge0MoNGEzZDNkZmJiYWVhMTMw
YiksIEMoNGUyMjFjOTIwZjYxZWQwMSksIEMoNTUzZmQ2Y2QxMzA0NTMxZiksCi0gICAgIEMoYmQy
YjMxYjU2MDgxNDNmZSksIEMoYWI3MTdhMTBmMjU1NDg1MyksIEMoMjkzODU3ZjA0ZDE5NGQyMiks
Ci0gICAgIEMoZDUxYmU4ZmE4NmYyNTRmMCksIEMoYmQyYjMxYjU2MDgxNDNmZSksIEMoYWI3MTdh
MTBmMjU1NDg1MyksCi0gICAgIEMoMjkzODU3ZjA0ZDE5NGQyMiksIEMoZDUxYmU4ZmE4NmYyNTRm
MCksIEMoMWVlZTM5ZTA3Njg2OTA3ZSksCi0gICAgIEMoNjM5MDM5ZmUwZThkMzA1MiksIEMoZDZl
YzE0NzBjZWY5N2ZmKSwgQygzNzBjODJiODYwMDM0ZjBmKSwgQyg3NGUyMTc5ZCl9LAorICAgICBD
KDc0ZTIxNzlkKX0sCiAgICAge0MoYjM3MWY3NjhjZGY0ZWRiOSksIEMoYmRlZjJhY2U2ZDJkZTBm
MCksIEMoZTA1YjQxMDBmN2YxYmFlYyksCi0gICAgIEMoYjllMGQ0MTViNGViZDUzNCksIEMoYzk3
YzJhMjdlZmFhMzNkNyksIEMoNTkxY2RiMzVmODRlZjlkYSksCi0gICAgIEMoYTU3ZDAyZDBlOGUz
NzU2YyksIEMoYjllMGQ0MTViNGViZDUzNCksIEMoYzk3YzJhMjdlZmFhMzNkNyksCi0gICAgIEMo
NTkxY2RiMzVmODRlZjlkYSksIEMoYTU3ZDAyZDBlOGUzNzU2YyksIEMoMjNmNTVmMTJkN2M1Yzg3
YiksCi0gICAgIEMoNGM3Y2EwZmUyMzIyMTEwMSksIEMoZGJjMzAyMDQ4MDMzNDU2NCksIEMoZDk4
NTk5MmYzMmMyMzZiMSksCiAgICAgIEMoZWU5YmFlMjUpfSwKLSAgICB7Qyg3YTFkMmU5NjkzNGY2
MWYpLCBDKGViMTc2MGFlNmFmN2Q5NjEpLCBDKDg4N2ViMGRhMDYzMDA1ZGYpLAotICAgICBDKDIy
MjhkNjcyNWUzMWI4YWIpLCBDKDliOThmN2U0ZDAxNDJlNzApLCBDKGI2YThjMjExNWI4ZTBmZTcp
LAotICAgICBDKGI1OTFlMmY1YWI5Yjk0YjEpLCBDKDIyMjhkNjcyNWUzMWI4YWIpLCBDKDliOThm
N2U0ZDAxNDJlNzApLAotICAgICBDKGI2YThjMjExNWI4ZTBmZTcpLCBDKGI1OTFlMmY1YWI5Yjk0
YjEpLCBDKDZjMWZlYWE4MDY1MzE4ZTApLAotICAgICBDKDRlN2UyY2EyMWMyZTgxZmIpLCBDKGU5
ZmU1ZDhjZTc5OTNjNDUpLCBDKGVlNDExZmEyZjEyY2Y4ZGYpLAotICAgICBDKGI2NmVkZjEwKX0s
CisgICAge0MoN2ExZDJlOTY5MzRmNjFmKSwgQyhlYjE3NjBhZTZhZjdkOTYxKSwgQyg4ODdlYjBk
YTA2MzAwNWRmKSwgQyhiNjZlZGYxMCl9LAogICAgIHtDKDhiZTUzZDQ2NmQ0NzI4ZjIpLCBDKDg2
YTVhYzhlMGQ0MTY2NDApLCBDKDk4NGFhNDY0Y2RiNWM4YmIpLAotICAgICBDKDg3MDQ5ZTY4ZjVk
MzhlNTkpLCBDKDdkOGNlNDRlYzZiZDc3NTEpLCBDKGNjMjhkMDhhYjQxNDgzOWMpLAotICAgICBD
KDZjOGYwYmQzNGZlODQzZTMpLCBDKDg3MDQ5ZTY4ZjVkMzhlNTkpLCBDKDdkOGNlNDRlYzZiZDc3
NTEpLAotICAgICBDKGNjMjhkMDhhYjQxNDgzOWMpLCBDKDZjOGYwYmQzNGZlODQzZTMpLCBDKGI4
NDk2ZGNkYzAxZjNlNDcpLAotICAgICBDKDJmMDMxMjVjMjgyYWMyNiksIEMoODJhODc5N2JhM2Y1
ZWYwNyksIEMoN2M5NzdhNGQxMGJmNTJiOCksIEMoZDYyMDk3MzcpfSwKLSAgICB7Qyg4Mjk2Nzdl
YjAzYWJmMDQyKSwgQyg0M2NhZDAwNGI2YmMyYzApLCBDKGYyZjIyNDc1NjgwMzk3MWEpLAotICAg
ICBDKDk4ZDBkYmY3OTY0ODAxODcpLCBDKGZiY2I1ZjNlMWJlZjU3NDIpLCBDKDVhZjJhMDQ2M2Jm
NmU5MjEpLAotICAgICBDKGFkOTU1NWJmMDEyMGIzYTMpLCBDKDk4ZDBkYmY3OTY0ODAxODcpLCBD
KGZiY2I1ZjNlMWJlZjU3NDIpLAotICAgICBDKDVhZjJhMDQ2M2JmNmU5MjEpLCBDKGFkOTU1NWJm
MDEyMGIzYTMpLCBDKDI4M2UzOWIzZGM5OWY0NDcpLAotICAgICBDKGJlZGFhMWE0YTAyNTBjMjgp
LCBDKDlkNTA1NDY2MjRmZjlhNTcpLCBDKDRhYmFmNTIzZDFjMDkwZjYpLCBDKGI5OTRhODgpfSwK
LSAgICB7Qyg3NTQ0MzViYWUzNDk2ZmMpLCBDKDU3MDdmYzAwNmYwOTRkY2YpLCBDKDg5NTFjODZh
YjE5ZDhlNDApLAotICAgICBDKDU3YzUyMDhlOGYwMjFhNzcpLCBDKGY3NjUzZmJiNjljZDkyNzYp
LCBDKGE0ODQ0MTBhZjIxZDc1Y2IpLAotICAgICBDKGYxOWI2ODQ0YjNkNjI3ZTgpLCBDKDU3YzUy
MDhlOGYwMjFhNzcpLCBDKGY3NjUzZmJiNjljZDkyNzYpLAotICAgICBDKGE0ODQ0MTBhZjIxZDc1
Y2IpLCBDKGYxOWI2ODQ0YjNkNjI3ZTgpLCBDKGYzNzQwMGZjM2ZmZDk1MTQpLAotICAgICBDKDM2
YWUwZDgyMTczNGVkZmQpLCBDKDVmMzc4MjBhZjFmMWYzMDYpLCBDKGJlNjM3ZDQwZTZhNWFkMCks
IEMoYTA1ZDQzYzApfSwKKyAgICAgQyhkNjIwOTczNyl9LAorICAgIHtDKDgyOTY3N2ViMDNhYmYw
NDIpLCBDKDQzY2FkMDA0YjZiYzJjMCksIEMoZjJmMjI0NzU2ODAzOTcxYSksIEMoYjk5NGE4OCl9
LAorICAgIHtDKDc1NDQzNWJhZTM0OTZmYyksIEMoNTcwN2ZjMDA2ZjA5NGRjZiksIEMoODk1MWM4
NmFiMTlkOGU0MCksIEMoYTA1ZDQzYzApfSwKICAgICB7QyhmZGE5ODc3ZWE4ZTM4MDVmKSwgQygz
MWU4NjhiNmZmZDUyMWI3KSwgQyhiMDhjOTA2ODFmYjZhMGZkKSwKLSAgICAgQyg2ODExMGE3Zjgz
ZjVkM2ZmKSwgQyg2ZDc3ZTA0NTkwMWI4NWE4KSwgQyg4NGVmNjgxMTEzMDM2ZDhiKSwKLSAgICAg
QygzYjlmOGUzOTI4ZjU2MTYwKSwgQyg2ODExMGE3ZjgzZjVkM2ZmKSwgQyg2ZDc3ZTA0NTkwMWI4
NWE4KSwKLSAgICAgQyg4NGVmNjgxMTEzMDM2ZDhiKSwgQygzYjlmOGUzOTI4ZjU2MTYwKSwgQyhm
YzhiN2Y1NmMxMzA4MzUpLAotICAgICBDKGExMWYzZTgwMDYzOGU4NDEpLCBDKGQ5NTcyMjY3ZjVj
ZjI4YzEpLCBDKDc4OTdjODE0OTgwM2YyYWEpLAogICAgICBDKGM3OWY3M2E4KX0sCiAgICAge0Mo
MmUzNmY1MjNjYThmNWViNSksIEMoOGIyMjkzMmY4OWIyNzUxMyksIEMoMzMxY2Q2ZWNiZmFkYzFi
YiksCi0gICAgIEMoZDFiZmU0ZGYxMmIwNGNiZiksIEMoZjU4YzE3MjQzZmQ2Mzg0MiksIEMoM2E0
NTNjZGJhODBhNjBhZiksCi0gICAgIEMoNTczN2IyY2E3NDcwZWE5NSksIEMoZDFiZmU0ZGYxMmIw
NGNiZiksIEMoZjU4YzE3MjQzZmQ2Mzg0MiksCi0gICAgIEMoM2E0NTNjZGJhODBhNjBhZiksIEMo
NTczN2IyY2E3NDcwZWE5NSksIEMoNTRkNDRhM2Y0NDc3MDMwYyksCi0gICAgIEMoODE2OGUwMmQ0
ODY5YWE3ZiksIEMoNzdmMzgzYTE3Nzc4NTU5ZCksIEMoOTVlMTczN2Q3N2EyNjhmYyksCiAgICAg
IEMoYTQ5MGFmZjUpfSwKICAgICB7QygyMWEzNzhlZjc2ODI4MjA4KSwgQyhhNWMxMzAzN2ZhODQx
ZGEyKSwgQyg1MDZkMjJhNTNmYmU5ODEyKSwKLSAgICAgQyg2MWM5Yzk1ZDkxMDE3ZGE1KSwgQygx
NmY3YzgzYmE2OGY1Mjc5KSwgQyg5YzA2MTliMDgwOGQwNWY3KSwKLSAgICAgQyg4M2MxMTdjZTRl
NmI3MGEzKSwgQyg2MWM5Yzk1ZDkxMDE3ZGE1KSwgQygxNmY3YzgzYmE2OGY1Mjc5KSwKLSAgICAg
Qyg5YzA2MTliMDgwOGQwNWY3KSwgQyg4M2MxMTdjZTRlNmI3MGEzKSwgQyhjZmI0YzhhZjdmZDAx
NDEzKSwKLSAgICAgQyhmZGVmMDRlNjAyZTcyMjk2KSwgQyhlZDYxMjRkMzM3ODg5YjEpLCBDKDQ5
MTljODY3MDdiODMwZGEpLCBDKGRmYWQ2NWI0KX0sCi0gICAge0MoY2NkZDU2MDAwNTRiMTZjYSks
IEMoZjc4ODQ2ZTg0MjA0Y2I3YiksIEMoMWY5ZmFlYzgyYzI0ZWFjOSksCi0gICAgIEMoNTg2MzQw
MDRjN2IyZDE5YSksIEMoMjRiYjVmNTFlZDNiOTA3MyksIEMoNDY0MDlkZTAxODAzM2QwMCksCi0g
ICAgIEMoNGE5ODA1ZWVkNWFjODAyZSksIEMoNTg2MzQwMDRjN2IyZDE5YSksIEMoMjRiYjVmNTFl
ZDNiOTA3MyksCi0gICAgIEMoNDY0MDlkZTAxODAzM2QwMCksIEMoNGE5ODA1ZWVkNWFjODAyZSks
IEMoZTE4ZGU4ZGIzMDZiYWY4MiksCi0gICAgIEMoNDZiYmY3NWYxZmEwMjVmZiksIEMoNWZhZjJm
YjA5YmUwOTQ4NyksIEMoM2ZiYzYyYmQ0ZTU1OGZiMyksIEMoMWQwN2RmYil9LAorICAgICBDKGRm
YWQ2NWI0KX0sCisgICAge0MoY2NkZDU2MDAwNTRiMTZjYSksIEMoZjc4ODQ2ZTg0MjA0Y2I3Yiks
IEMoMWY5ZmFlYzgyYzI0ZWFjOSksIEMoMWQwN2RmYil9LAogICAgIHtDKDc4NTQ0NjhmNGUwY2Fi
ZDApLCBDKDNhM2Y2YjRmMDk4ZDA2OTIpLCBDKGFlMjQyM2VjNzc5OWQzMGQpLAotICAgICBDKDI5
YzM1MjllYjE2NWVlYmEpLCBDKDQ0M2RlMzcwM2I2NTdjMzUpLCBDKDY2YWNiY2UzMWFlMWJjOGQp
LAotICAgICBDKDFhY2M5OWVmZmUxZDU0N2UpLCBDKDI5YzM1MjllYjE2NWVlYmEpLCBDKDQ0M2Rl
MzcwM2I2NTdjMzUpLAotICAgICBDKDY2YWNiY2UzMWFlMWJjOGQpLCBDKDFhY2M5OWVmZmUxZDU0
N2UpLCBDKGNmMDdmOGE1NzkwNjU3M2QpLAotICAgICBDKDMxYmFmYjBiYmI5YTg2ZTcpLCBDKDQw
YzY5NDkyNzAyYTkzNDYpLCBDKDdkZjYxZmRhYTBiODU4YWYpLAogICAgICBDKDQxNmRmOWEwKX0s
CiAgICAge0MoN2Y4OGRiNTM0NmQ4Zjk5NyksIEMoODhlYWM5YWFjYzY1Mzc5OCksIEMoNjhhNGQw
Mjk1ZjhlZWZhMSksCi0gICAgIEMoYWU1OWNhODZmNGMzMzIzZCksIEMoMjU5MDZjMDk5MDZkNWM0
YyksIEMoOGRkMmFhMGMwYTY1ODRhZSksCi0gICAgIEMoMjMyYTdkOTZiMzhmNDBlOSksIEMoYWU1
OWNhODZmNGMzMzIzZCksIEMoMjU5MDZjMDk5MDZkNWM0YyksCi0gICAgIEMoOGRkMmFhMGMwYTY1
ODRhZSksIEMoMjMyYTdkOTZiMzhmNDBlOSksIEMoODk4NmVlMDBhMmVkMDA0MiksCi0gICAgIEMo
YzQ5YWU3ZTQyOGM4YTdkMSksIEMoYjdkZDgyODA3MTNhYzljMiksIEMoZTAxODcyMGFlZDFlYmMy
OCksCiAgICAgIEMoMWY4ZmI5Y2MpfSwKICAgICB7QyhiYjNmYjVmYjAxZDYwZmNmKSwgQygxYjdj
YzA4NDdhMjE1ZWI2KSwgQygxMjQ2Yzk5NDQzNzk5MGExKSwKLSAgICAgQyhkNGVkYzk1NGMwN2Nk
OGYzKSwgQygyMjRmNDdlN2MwMGEzMGFiKSwgQyhkNWFkN2FkN2Y0MWVmMGM2KSwKLSAgICAgQyg1
OWUwODkyODFkODY5ZmQ3KSwgQyhkNGVkYzk1NGMwN2NkOGYzKSwgQygyMjRmNDdlN2MwMGEzMGFi
KSwKLSAgICAgQyhkNWFkN2FkN2Y0MWVmMGM2KSwgQyg1OWUwODkyODFkODY5ZmQ3KSwgQyhmMjkz
NDBkMDdhMTRiNmYxKSwKLSAgICAgQyhjODdjNWVmNzZkOWM0ZWYzKSwgQyg0NjMxMTg3OTQxOTNh
OWEpLCBDKDI5MjJkY2IwNTQwZjBkYmMpLCBDKDdhYmY0OGUzKX0sCisgICAgIEMoN2FiZjQ4ZTMp
fSwKICAgICB7QygyZTc4M2UxNzYxYWNkODRkKSwgQygzOTE1ODA0MmJhYzk3NWEwKSwgQygxY2Qy
MWM1YTgwNzExODhkKSwKLSAgICAgQyhiMWI3ZWM0NGY5MzAyMTc2KSwgQyg1Y2I0NzY0NTBkYzBj
Mjk3KSwgQyhkYzVlZjY1MjUyMWVmNmEyKSwKLSAgICAgQygzY2M3OWE5ZTMzNGUxZjg0KSwgQyhi
MWI3ZWM0NGY5MzAyMTc2KSwgQyg1Y2I0NzY0NTBkYzBjMjk3KSwKLSAgICAgQyhkYzVlZjY1MjUy
MWVmNmEyKSwgQygzY2M3OWE5ZTMzNGUxZjg0KSwgQyg3NjllMmEyODNkYmNjNjUxKSwKLSAgICAg
Qyg5ZjI0YjEwNWM4NTExZDNmKSwgQyhjMzFjMTU1NzVkZTJmMjdlKSwgQyhlY2ZlY2YzMmMzYWUy
ZDY2KSwKICAgICAgQyhkZWE0ZTNkZCl9LAogICAgIHtDKDM5MjA1ODI1MWNmMjJhY2MpLCBDKDk0
NGVjNDQ3NWVhZDQ2MjApLCBDKGIzMzBhMTBiNWNiOTQxNjYpLAotICAgICBDKDU0YmM5YmVlN2Ni
ZTE3NjcpLCBDKDQ4NTgyMGJkYmU0NDI0MzEpLCBDKDU0ZDYxMjBlYTI5NzJlOTApLAotICAgICBD
KGY0MzdhMDM0MWYyOWI3MmEpLCBDKDU0YmM5YmVlN2NiZTE3NjcpLCBDKDQ4NTgyMGJkYmU0NDI0
MzEpLAotICAgICBDKDU0ZDYxMjBlYTI5NzJlOTApLCBDKGY0MzdhMDM0MWYyOWI3MmEpLCBDKDhm
MzA4ODVjNzg0ZDU3MDQpLAotICAgICBDKGFhOTUzNzZiMTZjNzkwNmEpLCBDKGU4MjY5MjhjZmFm
OTNkYzMpLCBDKDIwZThmNTRkMWMxNmQ3ZDgpLAogICAgICBDKGM2MDY0ZjIyKX0sCi0gICAge0Mo
YWRmNWMxZTVkNjQxOTk0NyksIEMoMmE5NzQ3YmM2NTlkMjhhYSksIEMoOTVjNWI4Y2IxZjVkNjJj
KSwKLSAgICAgQyg4MDk3M2VhNTMyYjBmMzEwKSwgQyhhNDcxODI5YWE5YzE3ZGQ5KSwgQyhjMmZm
MzQ3OTM5NDgwNGFiKSwKLSAgICAgQyg2YmY0NGY4NjA2NzUzNjM2KSwgQyg4MDk3M2VhNTMyYjBm
MzEwKSwgQyhhNDcxODI5YWE5YzE3ZGQ5KSwKLSAgICAgQyhjMmZmMzQ3OTM5NDgwNGFiKSwgQyg2
YmY0NGY4NjA2NzUzNjM2KSwgQyg1MTg0ZDI5NzNlNmRkODI3KSwKLSAgICAgQygxMjFiOTYzNjlh
MzMyZDlhKSwgQyg1YzI1ZDM0NzVhYjY5ZTUwKSwgQygyNmQyOTYxZDYyODg0MTY4KSwKLSAgICAg
Qyg3NDNiZWQ5Yyl9LAorICAgIHtDKGFkZjVjMWU1ZDY0MTk5NDcpLCBDKDJhOTc0N2JjNjU5ZDI4
YWEpLCBDKDk1YzViOGNiMWY1ZDYyYyksIEMoNzQzYmVkOWMpfSwKICAgICB7Qyg2YmMxZGIyYzJi
ZWU1YWJhKSwgQyhlNjNiMGVkNjM1MzA3Mzk4KSwgQyg3YjJlY2ExMTFmMzBkYmJjKSwKLSAgICAg
QygyMzBkMmIzZTQ3ZjA5ODMwKSwgQyhlYzg2MjRhODIxYzFjYWY0KSwgQyhlYTZlYzQxMWNkYmYx
Y2IxKSwKLSAgICAgQyg1ZjM4YWU4MmFmMzY0ZTI3KSwgQygyMzBkMmIzZTQ3ZjA5ODMwKSwgQyhl
Yzg2MjRhODIxYzFjYWY0KSwKLSAgICAgQyhlYTZlYzQxMWNkYmYxY2IxKSwgQyg1ZjM4YWU4MmFm
MzY0ZTI3KSwgQyhhNTE5ZWY1MTVlYTcxODdjKSwKLSAgICAgQyg2YmFkNWVmYTdlYmFlMDVmKSwg
Qyg3NDhhYmFjYjExYTc0YTYzKSwgQyhhMjhlZWY5NjNkMTM5NmViKSwKICAgICAgQyhmY2UyNTRk
NSl9LAogICAgIHtDKGIwMGY4OTgyMjllZmE1MDgpLCBDKDgzYjc1OTBhZDdmNjk4NWMpLCBDKDI3
ODBlNzBhMDU5MmU0MWQpLAotICAgICBDKDcxMjI0MTNiZGJjOTQwMzUpLCBDKGU3ZjkwZmFlMzNi
Zjc3NjMpLCBDKDRiNmJkMGZiMzBiMTIzODcpLAotICAgICBDKDU1NzM1OWMwYzQ0ZjQ4Y2EpLCBD
KDcxMjI0MTNiZGJjOTQwMzUpLCBDKGU3ZjkwZmFlMzNiZjc3NjMpLAotICAgICBDKDRiNmJkMGZi
MzBiMTIzODcpLCBDKDU1NzM1OWMwYzQ0ZjQ4Y2EpLCBDKGQ1NjU2YzNkNmJjNWYwZCksCi0gICAg
IEMoOTgzZmY4ZTVlNzg0ZGE5OSksIEMoNjI4NDc5NjcxYjQ0NWJmKSwgQyhlMTc5YTFlMjdjZTY4
ZjVkKSwgQyhlNDdlYzlkMSl9LAorICAgICBDKGU0N2VjOWQxKX0sCiAgICAge0MoYjU2ZWI3Njlj
ZTBkOWE4YyksIEMoY2UxOTYxMTdiZmJjYWYwNCksIEMoYjI2YzNjMzc5N2Q2NjE2NSksCi0gICAg
IEMoNWVkMTIzMzhmNjMwYWI3NiksIEMoZmFiMTlmY2IzMTkxMTZkKSwgQygxNjdmNWY0MmI1MjE3
MjRiKSwKLSAgICAgQyhjNGFhNTZjNDA5NTY4ZDc0KSwgQyg1ZWQxMjMzOGY2MzBhYjc2KSwgQyhm
YWIxOWZjYjMxOTExNmQpLAotICAgICBDKDE2N2Y1ZjQyYjUyMTcyNGIpLCBDKGM0YWE1NmM0MDk1
NjhkNzQpLCBDKDc1ZmZmNGI0MmY4ZTk3NzgpLAotICAgICBDKDk0MjE4Zjk0NzEwYzFlYTMpLCBD
KGI3YjA1ZWZiNzM4YjA2YTYpLCBDKDgzZmZmMmRlYWJmOWNkMyksIEMoMzM0YTE0NWMpfSwKKyAg
ICAgQygzMzRhMTQ1Yyl9LAogICAgIHtDKDcwYzA2Mzc2NzViOTQxNTApLCBDKDI1OWUxNjY5MzA1
YjBhMTUpLCBDKDQ2ZTFkZDlmZDM4N2E1OGQpLAotICAgICBDKGZjYTRlNWJjOTI5Mjc4OGUpLCBD
KGNkNTA5ZGMxZmFjY2U0MWMpLCBDKGJiYmE1NzVhNTlkODJmZSksCi0gICAgIEMoNGUyZTcxYzE1
YjQ1ZDRkMyksIEMoZmNhNGU1YmM5MjkyNzg4ZSksIEMoY2Q1MDlkYzFmYWNjZTQxYyksCi0gICAg
IEMoYmJiYTU3NWE1OWQ4MmZlKSwgQyg0ZTJlNzFjMTViNDVkNGQzKSwgQyg1ZGM1NDU4MmVhZDk5
OWMpLAotICAgICBDKDcyNjEyZDE1NzE5NjNjNmYpLCBDKDMwMzE4YTlkMmQzZDE4MjkpLCBDKDc4
NWRkMDBmNGNjOWM5YTApLAogICAgICBDKGFkZWMxZTNjKX0sCiAgICAge0MoNzRjMGI4YTY4MjFm
YWFmZSksIEMoYWJhYzM5ZDc0OTEzNzBlNyksIEMoZmFmMGIyYTQ4YTRlNmFlZCksCi0gICAgIEMo
OTY3ZTk3MGRmOTY3M2QyYSksIEMoZDQ2NTI0N2NmZmE0MTVjMCksIEMoMzNhMWRmMGNhMTEwNzcy
MiksCi0gICAgIEMoNDlmYzJhMTBhZGNlNGEzMiksIEMoOTY3ZTk3MGRmOTY3M2QyYSksIEMoZDQ2
NTI0N2NmZmE0MTVjMCksCi0gICAgIEMoMzNhMWRmMGNhMTEwNzcyMiksIEMoNDlmYzJhMTBhZGNl
NGEzMiksIEMoYzU3MDdlMDc5YTI4NDMwOCksCi0gICAgIEMoNTczMDI4MjY2NjM1ZGRhNiksIEMo
Zjc4NmY1ZWVlNjEyN2ZhMCksIEMoYjMwZDc5Y2ViZmI1MTI2NiksCiAgICAgIEMoZjZhOWZiZjgp
fSwKICAgICB7Qyg1ZmI1ZTQ4YWM3YjdmYTRmKSwgQyhhOTYxNzBmMDhmNWFjYmM3KSwgQyhiYmY1
YzYzZDRmNTJhMWU1KSwKLSAgICAgQyg2Y2MwOWU2MDcwMDU2M2U5KSwgQyhkMThmMjMyMjFlOTY0
NzkxKSwgQyhmZmMyM2VlZWY3YWYyNmViKSwKLSAgICAgQyg2OTNhOTU0YTM2MjJhMzE1KSwgQyg4
MTUzMDhhMzJhOWIwZGFmKSwgQyhlZmIyYWIyN2JmNmZkMGJkKSwKLSAgICAgQyg5ZjFmZmMwOTg2
MTExMTE4KSwgQyhmOWEzYWExNzc4ZWEzOTg1KSwgQyg2OThmZTU0YjJiOTM5MzNiKSwKLSAgICAg
QyhkYWNjMmIyODQwNGQwZjEwKSwgQyg4MTUzMDhhMzJhOWIwZGFmKSwgQyhlZmIyYWIyN2JmNmZk
MGJkKSwKICAgICAgQyg1Mzk4MjEwYyl9LAogfTsKIAogdm9pZCBUZXN0VW5jaGFuZ2luZyhjb25z
dCB1aW50NjRfdCogZXhwZWN0ZWQsIGludCBvZmZzZXQsIGludCBsZW4pIHsKLSAgY29uc3QgdWlu
dDEyOCB1ID0gQ2l0eUhhc2gxMjgoZGF0YSArIG9mZnNldCwgbGVuKTsKLSAgY29uc3QgdWludDEy
OCB2ID0gQ2l0eUhhc2gxMjhXaXRoU2VlZChkYXRhICsgb2Zmc2V0LCBsZW4sIGtTZWVkMTI4KTsK
ICAgRVhQRUNUX0VRKGV4cGVjdGVkWzBdLCBDaXR5SGFzaDY0KGRhdGEgKyBvZmZzZXQsIGxlbikp
OwotICBFWFBFQ1RfRVEoZXhwZWN0ZWRbMTVdLCBDaXR5SGFzaDMyKGRhdGEgKyBvZmZzZXQsIGxl
bikpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbM10sIENpdHlIYXNoMzIoZGF0YSArIG9mZnNldCwg
bGVuKSk7CiAgIEVYUEVDVF9FUShleHBlY3RlZFsxXSwgQ2l0eUhhc2g2NFdpdGhTZWVkKGRhdGEg
KyBvZmZzZXQsIGxlbiwga1NlZWQwKSk7CiAgIEVYUEVDVF9FUShleHBlY3RlZFsyXSwKICAgICAg
ICAgICAgIENpdHlIYXNoNjRXaXRoU2VlZHMoZGF0YSArIG9mZnNldCwgbGVuLCBrU2VlZDAsIGtT
ZWVkMSkpOwotICBFWFBFQ1RfRVEoZXhwZWN0ZWRbM10sIFVpbnQxMjhMb3c2NCh1KSk7Ci0gIEVY
UEVDVF9FUShleHBlY3RlZFs0XSwgVWludDEyOEhpZ2g2NCh1KSk7Ci0gIEVYUEVDVF9FUShleHBl
Y3RlZFs1XSwgVWludDEyOExvdzY0KHYpKTsKLSAgRVhQRUNUX0VRKGV4cGVjdGVkWzZdLCBVaW50
MTI4SGlnaDY0KHYpKTsKLSNpZmRlZiBfX1NTRTRfMl9fCi0gIGNvbnN0IHVpbnQxMjggeSA9IENp
dHlIYXNoQ3JjMTI4KGRhdGEgKyBvZmZzZXQsIGxlbik7Ci0gIGNvbnN0IHVpbnQxMjggeiA9IENp
dHlIYXNoQ3JjMTI4V2l0aFNlZWQoZGF0YSArIG9mZnNldCwgbGVuLCBrU2VlZDEyOCk7Ci0gIHVp
bnQ2NF90IGNyYzI1Nl9yZXN1bHRzWzRdOwotICBDaXR5SGFzaENyYzI1NihkYXRhICsgb2Zmc2V0
LCBsZW4sIGNyYzI1Nl9yZXN1bHRzKTsKLSAgRVhQRUNUX0VRKGV4cGVjdGVkWzddLCBVaW50MTI4
TG93NjQoeSkpOwotICBFWFBFQ1RfRVEoZXhwZWN0ZWRbOF0sIFVpbnQxMjhIaWdoNjQoeSkpOwot
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRbOV0sIFVpbnQxMjhMb3c2NCh6KSk7Ci0gIEVYUEVDVF9FUShl
eHBlY3RlZFsxMF0sIFVpbnQxMjhIaWdoNjQoeikpOwotICBmb3IgKGludCBpID0gMDsgaSA8IDQ7
IGkrKykgewotICAgIEVYUEVDVF9FUShleHBlY3RlZFsxMSArIGldLCBjcmMyNTZfcmVzdWx0c1tp
XSk7Ci0gIH0KLSNlbmRpZgogfQogCiBURVNUKENpdHlIYXNoVGVzdCwgVW5jaGFuZ2luZykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNoLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRl
cm5hbC9oYXNoLmNjCmluZGV4IDRiZjY0MDk2ZTdlYWEzYjM0NmVkMmYyYTIyZGYyY2QyYThlNzE1
NzQuLjRhYjdhOWY4YmZkOTcyNzQ1NDk2ZWJlZWE3OWZkYjFlZDlmYWFmNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hh
c2guY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNo
LmgKaW5kZXggNzgyMTdkMmZlNzYwMDAzY2I4M2U4YTMxN2E1OTE4NWU4MmE3MzBmNy4uNGZmNGEx
MjZmMGNkMGExYzlmNWVjODg3YjIwMjAwOTI5Nzk2MzY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFz
aC9pbnRlcm5hbC9oYXNoLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNoLmgKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIyMSw3ICsyMjEsOSBAQCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2VudW08RW51bT46OnZhbHVlLCBIPjo6dHlw
ZSBBYnNsSGFzaFZhbHVlKAogfQogLy8gQWJzbEhhc2hWYWx1ZSgpIGZvciBoYXNoaW5nIGZsb2F0
aW5nLXBvaW50IHZhbHVlcwogdGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIEZsb2F0Pgot
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxGbG9hdD46OnZh
bHVlLCBIPjo6dHlwZQordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEZsb2F0
LCBmbG9hdD46OnZhbHVlIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19z
YW1lPEZsb2F0LCBkb3VibGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEg+Ojp0
eXBlCiBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgRmxvYXQgdmFsdWUpIHsKICAgcmV0dXJu
IGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9PSAwID8gMCA6IHZhbHVlKTsKQEAg
LTIzMSw4ICsyMzMsOSBAQCBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgRmxvYXQgdmFsdWUp
IHsKIC8vIEZvciBleGFtcGxlLCBpbiB4ODYgc2l6ZW9mKGxvbmcgZG91YmxlKT09MTYgYnV0IGl0
IG9ubHkgcmVhbGx5IHVzZXMgODAtYml0cwogLy8gb2YgaXQuIFRoaXMgbWVhbnMgd2UgY2FuJ3Qg
dXNlIGhhc2hfYnl0ZXMgb24gYSBsb25nIGRvdWJsZSBhbmQgaGF2ZSB0bwogLy8gY29udmVydCBp
dCB0byBzb21ldGhpbmcgZWxzZSBmaXJzdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBIPgotSCBBYnNs
SGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgbG9uZyBkb3VibGUgdmFsdWUpIHsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBILCB0eXBlbmFtZSBMb25nRG91YmxlPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19zYW1lPExvbmdEb3VibGUsIGxvbmcgZG91YmxlPjo6dmFsdWUsIEg+Ojp0eXBlCitB
YnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgTG9uZ0RvdWJsZSB2YWx1ZSkgewogICBjb25zdCBp
bnQgY2F0ZWdvcnkgPSBzdGQ6OmZwY2xhc3NpZnkodmFsdWUpOwogICBzd2l0Y2ggKGNhdGVnb3J5
KSB7CiAgICAgY2FzZSBGUF9JTkZJTklURToKQEAgLTI2NCw3ICsyNjcsMTIgQEAgSCBBYnNsSGFz
aFZhbHVlKEggaGFzaF9zdGF0ZSwgbG9uZyBkb3VibGUgdmFsdWUpIHsKIC8vIEFic2xIYXNoVmFs
dWUoKSBmb3IgaGFzaGluZyBwb2ludGVycwogdGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1l
IFQ+CiBIIEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBUKiBwdHIpIHsKLSAgcmV0dXJuIGhh
c2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBwdHIpOworICBh
dXRvIHYgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKTsKKyAgLy8gRHVlIHRvIGFs
aWdubWVudCwgcG9pbnRlcnMgdGVuZCB0byBoYXZlIGxvdyBiaXRzIGFzIHplcm8sIGFuZCB0aGUg
bmV4dCBmZXcKKyAgLy8gYml0cyBmb2xsb3cgYSBwYXR0ZXJuIHNpbmNlIHRoZXkgYXJlIGFsc28g
bXVsdGlwbGVzIG9mIHNvbWUgYmFzZSB2YWx1ZS4KKyAgLy8gTWl4aW5nIHRoZSBwb2ludGVyIHR3
aWNlIGhlbHBzIHByZXZlbnQgc3R1Y2sgbG93IGJpdHMgZm9yIGNlcnRhaW4gYWxpZ25tZW50Cisg
IC8vIHZhbHVlcy4KKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB2
LCB2KTsKIH0KIAogLy8gQWJzbEhhc2hWYWx1ZSgpIGZvciBoYXNoaW5nIG51bGxwdHJfdApAQCAt
NDk0LDYgKzUwMiwxNSBAQCBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgY29uc3QgYWJzbDo6
dmFyaWFudDxULi4uPiYgdikgewogICB9CiAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZSho
YXNoX3N0YXRlKSwgdi5pbmRleCgpKTsKIH0KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IEFic2xIYXNoVmFsdWUgZm9yIE90aGVyIFR5cGVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6Yml0c2V0IGlzIG5vdCBkZWZpbmVk
LCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzCisvLyBmb3IgdmVjdG9yPGJvb2w+IChzZWUgc3RkOjp2
ZWN0b3IgYWJvdmUpOiBJdCBkb2VzIG5vdCBleHBvc2UgdGhlIHJhdyBieXRlcywKKy8vIGFuZCBh
IGZhbGxiYWNrIHRvIHN0ZDo6aGFzaDw+IGlzIG1vc3QgbGlrZWx5IGZhc3Rlci4KKwogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gaGFzaF9yYW5nZV9vcl9ieXRlcygpCkBAIC01MTgsNTMg
KzUzNSwyMiBAQCBoYXNoX3JhbmdlX29yX2J5dGVzKEggaGFzaF9zdGF0ZSwgY29uc3QgVCogZGF0
YSwgc2l6ZV90IHNpemUpIHsKICAgcmV0dXJuIGhhc2hfc3RhdGU7CiB9CiAKLS8vIEludm9rZUhh
c2hUYWcKLS8vCi0vLyBJbnZva2VIYXNoKEgsIGNvbnN0IFQmKSBpbnZva2VzIHRoZSBhcHByb3By
aWF0ZSBoYXNoIGltcGxlbWVudGF0aW9uIGZvciBhCi0vLyBoYXNoZXIgb2YgdHlwZSBgSGAgYW5k
IGEgdmFsdWUgb2YgdHlwZSBgVGAuIElmIGBUYCBpcyBub3QgaGFzaGFibGUsIHRoZXJlCi0vLyB3
aWxsIGJlIG5vIG1hdGNoaW5nIG92ZXJsb2FkIG9mIEludm9rZUhhc2goKS4KLS8vIE5vdGU6IFNv
bWUgcGxhdGZvcm1zIChlZyBNU1ZDKSBkbyBub3Qgc3VwcG9ydCB0aGUgZGV0ZWN0IGlkaW9tIG9u
Ci0vLyBzdGQ6Omhhc2guIEluIHRob3NlIHBsYXRmb3JtcyB0aGUgbGFzdCBmYWxsYmFjayB3aWxs
IGJlIHN0ZDo6aGFzaCBhbmQKLS8vIEludm9rZUhhc2goKSB3aWxsIGFsd2F5cyBoYXZlIGEgdmFs
aWQgb3ZlcmxvYWQgZXZlbiBpZiBzdGQ6Omhhc2g8VD4gaXMgbm90Ci0vLyB2YWxpZC4KLS8vCi0v
LyBXZSB0cnkgdGhlIGZvbGxvd2luZyBvcHRpb25zIGluIG9yZGVyOgotLy8gICAqIElmIGlzX3Vu
aXF1ZWx5X3JlcHJlc2VudGVkLCBoYXNoIGJ5dGVzIGRpcmVjdGx5LgotLy8gICAqIEFETCBBYnNs
SGFzaFZhbHVlKEgsIGNvbnN0IFQmKSBjYWxsLgotLy8gICAqIHN0ZDo6aGFzaDxUPgotCi0vLyBJ
biBNU1ZDIHdlIGNhbid0IHByb2JlIHN0ZDo6aGFzaCBvciBzdGRleHQ6Omhhc2ggYmVjYXVzZSBp
dCB0cmlnZ2VycyBhCi0vLyBzdGF0aWNfYXNzZXJ0IGluc3RlYWQgb2YgZmFpbGluZyBzdWJzdGl0
dXRpb24uCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNkZWZpbmUgQUJTTF9IQVNIX0lOVEVSTkFM
X0NBTl9QT0lTT05fIDAKLSNlbHNlICAgLy8gX01TQ19WRVIKLSNkZWZpbmUgQUJTTF9IQVNIX0lO
VEVSTkFMX0NBTl9QT0lTT05fIDEKLSNlbmRpZiAgLy8gX01TQ19WRVIKLQogI2lmIGRlZmluZWQo
QUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9OQU1FU1BBQ0UpICYmIFwKLSAgICBBQlNMX0hBU0hf
SU5URVJOQUxfQ0FOX1BPSVNPTl8KKyAgICBBQlNMX01FVEFfSU5URVJOQUxfU1REX0hBU0hfU0ZJ
TkFFX0ZSSUVORExZXwogI2RlZmluZSBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lf
SEFTSF8gMQogI2Vsc2UKICNkZWZpbmUgQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZ
X0hBU0hfIDAKICNlbmRpZgogCi1lbnVtIGNsYXNzIEludm9rZUhhc2hUYWcgewotICBrVW5pcXVl
bHlSZXByZXNlbnRlZCwKLSAga0hhc2hWYWx1ZSwKLSNpZiBBQlNMX0hBU0hfSU5URVJOQUxfU1VQ
UE9SVF9MRUdBQ1lfSEFTSF8KLSAga0xlZ2FjeUhhc2gsCi0jZW5kaWYgIC8vIEFCU0xfSEFTSF9J
TlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXwotICBrU3RkSGFzaCwKLSAga05vbmUKLX07Ci0K
IC8vIEhhc2hTZWxlY3QKIC8vCiAvLyBUeXBlIHRyYWl0IHRvIHNlbGVjdCB0aGUgYXBwcm9wcmlh
dGUgaGFzaCBpbXBsZW1lbnRhdGlvbiB0byB1c2UuCi0vLyBIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSBp
cyBhbiBpbnN0YW5jZSBvZiBJbnZva2VIYXNoVGFnIHRoYXQgaW5kaWNhdGVzIHRoZSBiZXN0Ci0v
LyBhdmFpbGFibGUgaGFzaGluZyBtZWNoYW5pc20uCi0vLyBTZWUgYE5vdGVgIGFib3ZlIGFib3V0
IE1TVkMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vIEhhc2hTZWxlY3Q6OnR5cGU8VD4gd2ls
bCBnaXZlIHRoZSBwcm9wZXIgaGFzaCBpbXBsZW1lbnRhdGlvbiwgdG8gYmUgaW52b2tlZAorLy8g
YXM6CisvLyAgIEhhc2hTZWxlY3Q6OnR5cGU8VD46Okludm9rZShzdGF0ZSwgdmFsdWUpCisvLyBB
bHNvLCBIYXNoU2VsZWN0Ojp0eXBlPFQ+Ojp2YWx1ZSBpcyBhIGJvb2xlYW4gZXF1YWwgdG8gYHRy
dWVgIGlmIHRoZXJlIGlzIGEKKy8vIHZhbGlkIGBJbnZva2VgIGZ1bmN0aW9uLiBUeXBlcyB0aGF0
IGFyZSBub3QgaGFzaGFibGUgd2lsbCBoYXZlIGEgOjp2YWx1ZSBvZgorLy8gYGZhbHNlYC4KIHN0
cnVjdCBIYXNoU2VsZWN0IHsKICBwcml2YXRlOgogICBzdHJ1Y3QgU3RhdGUgOiBIYXNoU3RhdGVC
YXNlPFN0YXRlPiB7CkBAIC01NzMsOTUgKzU1OSw3NSBAQCBzdHJ1Y3QgSGFzaFNlbGVjdCB7CiAg
ICAgdXNpbmcgU3RhdGU6Okhhc2hTdGF0ZUJhc2U6OmNvbWJpbmVfY29udGlndW91czsKICAgfTsK
IAotICAvLyBgUHJvYmU8ViwgVGFnPjo6dmFsdWVgIGV2YWx1YXRlcyB0byBgVjxUPjo6dmFsdWVg
IGlmIGl0IGlzIGEgdmFsaWQKLSAgLy8gZXhwcmVzc2lvbiwgYW5kIGBmYWxzZWAgb3RoZXJ3aXNl
LgotICAvLyBgUHJvYmU8ViwgVGFnPjo6dGFnYCBhbHdheXMgZXZhbHVhdGVzIHRvIGBUYWdgLgot
ICB0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBWLCBJbnZva2VIYXNoVGFnIFRh
Zz4KLSAgc3RydWN0IFByb2JlIHsKLSAgIHByaXZhdGU6Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFY8VT46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMD4K
LSAgICBzdGF0aWMgc3RkOjp0cnVlX3R5cGUgVGVzdChpbnQpOwotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBVPgotICAgIHN0YXRpYyBzdGQ6OmZhbHNlX3R5cGUgVGVzdChjaGFyKTsKLQotICAgcHVi
bGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgSW52b2tlSGFzaFRhZyBrVGFnID0gVGFnOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IGRlY2x0eXBlKAotICAgICAgICBUZXN0PGFi
c2w6OnJlbW92ZV9jb25zdF90PGFic2w6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+KDApKTo6dmFs
dWU7CisgIHN0cnVjdCBVbmlxdWVseVJlcHJlc2VudGVkUHJvYmUgeworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBILCB0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBhdXRvIEludm9rZShIIHN0YXRlLCBj
b25zdCBUJiB2YWx1ZSkKKyAgICAgICAgLT4gYWJzbDo6ZW5hYmxlX2lmX3Q8aXNfdW5pcXVlbHlf
cmVwcmVzZW50ZWQ8VD46OnZhbHVlLCBIPiB7CisgICAgICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6
aGFzaF9ieXRlcyhzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZSk7CisgICAgfQogICB9OwogCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBVPgotICB1c2luZyBQcm9iZVVuaXF1ZWx5UmVwcmVzZW50ZWQgPSBp
c191bmlxdWVseV9yZXByZXNlbnRlZDxVPjsKLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAg
dXNpbmcgUHJvYmVIYXNoVmFsdWUgPQotICAgICAgc3RkOjppc19zYW1lPFN0YXRlLCBkZWNsdHlw
ZShBYnNsSGFzaFZhbHVlKHN0ZDo6ZGVjbHZhbDxTdGF0ZT4oKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgVSY+KCkp
KT47CisgIHN0cnVjdCBIYXNoVmFsdWVQcm9iZSB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEgs
IHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIGF1dG8gSW52b2tlKEggc3RhdGUsIGNvbnN0IFQmIHZh
bHVlKSAtPiBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICAgc3RkOjppc19zYW1lPEgsCisgICAg
ICAgICAgICAgICAgICAgICBkZWNsdHlwZShBYnNsSGFzaFZhbHVlKHN0ZDo6bW92ZShzdGF0ZSks
IHZhbHVlKSk+Ojp2YWx1ZSwKKyAgICAgICAgSD4geworICAgICAgcmV0dXJuIEFic2xIYXNoVmFs
dWUoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUpOworICAgIH0KKyAgfTsKIAorICBzdHJ1Y3QgTGVn
YWN5SGFzaFByb2JlIHsKICNpZiBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFT
SF8KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gIHVzaW5nIFByb2JlTGVnYWN5SGFzaCA9Ci0g
ICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPGRlY2x0eXBlKEFCU0xfSU5URVJOQUxfTEVHQUNZX0hB
U0hfTkFNRVNQQUNFOjpoYXNoPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
PigpKHN0ZDo6ZGVjbHZhbDxjb25zdCBVJj4oKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Q+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgorICAgIHN0
YXRpYyBhdXRvIEludm9rZShIIHN0YXRlLCBjb25zdCBUJiB2YWx1ZSkgLT4gYWJzbDo6ZW5hYmxl
X2lmX3Q8CisgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGU8CisgICAgICAgICAgICBkZWNsdHlw
ZShBQlNMX0lOVEVSTkFMX0xFR0FDWV9IQVNIX05BTUVTUEFDRTo6aGFzaDxUPigpKHZhbHVlKSks
CisgICAgICAgICAgICBzaXplX3Q+Ojp2YWx1ZSwKKyAgICAgICAgSD4geworICAgICAgcmV0dXJu
IGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoCisgICAgICAgICAgc3RkOjptb3ZlKHN0YXRlKSwK
KyAgICAgICAgICBBQlNMX0lOVEVSTkFMX0xFR0FDWV9IQVNIX05BTUVTUEFDRTo6aGFzaDxUPnt9
KHZhbHVlKSk7CisgICAgfQogI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9M
RUdBQ1lfSEFTSF8KKyAgfTsKIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgdXNpbmcgUHJv
YmVTdGRIYXNoID0KLSNpZiBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8KLSAgICAgIHN0
ZDo6aXNfY29udmVydGlibGU8ZGVjbHR5cGUoc3RkOjpoYXNoPFU+KCkoc3RkOjpkZWNsdmFsPGNv
bnN0IFUmPigpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdD47Ci0jZWxzZSAg
IC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXwotICAgICAgc3RkOjp0cnVlX3R5cGU7
Ci0jZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXworICBzdHJ1Y3QgU3Rk
SGFzaFByb2JlIHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KKyAgICBz
dGF0aWMgYXV0byBJbnZva2UoSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUpCisgICAgICAgIC0+IGFi
c2w6OmVuYWJsZV9pZl90PHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hhYmxlPFQ+Ojp2YWx1
ZSwgSD4geworICAgICAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoc3RkOjptb3Zl
KHN0YXRlKSwgc3RkOjpoYXNoPFQ+e30odmFsdWUpKTsKKyAgICB9CisgIH07CiAKLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFU+Ci0gIHVzaW5nIFByb2JlTm9uZSA9IHN0ZDo6dHJ1ZV90eXBlOworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaCwgdHlwZW5hbWUgVD4KKyAgc3RydWN0IFByb2JlIDogSGFz
aCB7CisgICBwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSA9IGRl
Y2x0eXBlKEg6Okludm9rZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVj
bHZhbDxTdGF0ZT4oKSwgc3RkOjpkZWNsdmFsPGNvbnN0IFQmPigpKSk+CisgICAgc3RhdGljIHN0
ZDo6dHJ1ZV90eXBlIFRlc3QoaW50KTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgICBz
dGF0aWMgc3RkOjpmYWxzZV90eXBlIFRlc3QoY2hhcik7CisKKyAgIHB1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBkZWNsdHlwZShUZXN0PEhhc2g+KDApKTo6dmFsdWU7
CisgIH07CiAKICBwdWJsaWM6CiAgIC8vIFByb2JlIGVhY2ggaW1wbGVtZW50YXRpb24gaW4gb3Jk
ZXIuCi0gIC8vIGRpc2p1bmN0aW9uIHByb3ZpZGVzIHNob3J0IGNpcmN1dGluZyB3cnQgaW5zdGFu
dGlhdGlvbi4KLSAgc3RhdGljIGNvbnN0ZXhwciBJbnZva2VIYXNoVGFnIHZhbHVlID0gYWJzbDo6
ZGlzanVuY3Rpb248Ci0gICAgICBQcm9iZTxQcm9iZVVuaXF1ZWx5UmVwcmVzZW50ZWQsIEludm9r
ZUhhc2hUYWc6OmtVbmlxdWVseVJlcHJlc2VudGVkPiwKLSAgICAgIFByb2JlPFByb2JlSGFzaFZh
bHVlLCBJbnZva2VIYXNoVGFnOjprSGFzaFZhbHVlPiwKLSNpZiBBQlNMX0hBU0hfSU5URVJOQUxf
U1VQUE9SVF9MRUdBQ1lfSEFTSF8KLSAgICAgIFByb2JlPFByb2JlTGVnYWN5SGFzaCwgSW52b2tl
SGFzaFRhZzo6a0xlZ2FjeUhhc2g+LAotI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfU1VQ
UE9SVF9MRUdBQ1lfSEFTSF8KLSAgICAgIFByb2JlPFByb2JlU3RkSGFzaCwgSW52b2tlSGFzaFRh
Zzo6a1N0ZEhhc2g+LAotICAgICAgUHJvYmU8UHJvYmVOb25lLCBJbnZva2VIYXNoVGFnOjprTm9u
ZT4+OjprVGFnOworICAvLyBkaXNqdW5jdGlvbiBwcm92aWRlcyBzaG9ydCBjaXJjdWl0aW5nIHdy
dCBpbnN0YW50aWF0aW9uLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgdXNpbmcgQXBwbHkg
PSBhYnNsOjpkaXNqdW5jdGlvbjwgICAgICAgICAvLworICAgICAgUHJvYmU8VW5pcXVlbHlSZXBy
ZXNlbnRlZFByb2JlLCBUPiwgIC8vCisgICAgICBQcm9iZTxIYXNoVmFsdWVQcm9iZSwgVD4sICAg
ICAgICAgICAgLy8KKyAgICAgIFByb2JlPExlZ2FjeUhhc2hQcm9iZSwgVD4sICAgICAgICAgICAv
LworICAgICAgUHJvYmU8U3RkSGFzaFByb2JlLCBUPiwgICAgICAgICAgICAgIC8vCisgICAgICBz
dGQ6OmZhbHNlX3R5cGU+OwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNf
aGFzaGFibGUgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIEhhc2hTZWxlY3Q8VD46OnZh
bHVlICE9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnZva2VIYXNoVGFnOjprTm9uZT4ge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBILCB0
eXBlbmFtZSBUPgotYWJzbDo6ZW5hYmxlX2lmX3Q8SGFzaFNlbGVjdDxUPjo6dmFsdWUgPT0gSW52
b2tlSGFzaFRhZzo6a1VuaXF1ZWx5UmVwcmVzZW50ZWQsCi0gICAgICAgICAgICAgICAgICBIPgot
SW52b2tlSGFzaChIIHN0YXRlLCBjb25zdCBUJiB2YWx1ZSkgewotICByZXR1cm4gaGFzaF9pbnRl
cm5hbDo6aGFzaF9ieXRlcyhzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZSk7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgotYWJzbDo6ZW5hYmxlX2lmX3Q8SGFzaFNlbGVjdDxU
Pjo6dmFsdWUgPT0gSW52b2tlSGFzaFRhZzo6a0hhc2hWYWx1ZSwgSD4KLUludm9rZUhhc2goSCBz
dGF0ZSwgY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIEFic2xIYXNoVmFsdWUoc3RkOjptb3Zl
KHN0YXRlKSwgdmFsdWUpOwotfQotCi0jaWYgQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVH
QUNZX0hBU0hfCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KLWFic2w6OmVuYWJs
ZV9pZl90PEhhc2hTZWxlY3Q8VD46OnZhbHVlID09IEludm9rZUhhc2hUYWc6OmtMZWdhY3lIYXNo
LCBIPgotSW52b2tlSGFzaChIIHN0YXRlLCBjb25zdCBUJiB2YWx1ZSkgewotICByZXR1cm4gaGFz
aF9pbnRlcm5hbDo6aGFzaF9ieXRlcygKLSAgICAgIHN0ZDo6bW92ZShzdGF0ZSksIEFCU0xfSU5U
RVJOQUxfTEVHQUNZX0hBU0hfTkFNRVNQQUNFOjpoYXNoPFQ+e30odmFsdWUpKTsKLX0KLSNlbmRp
ZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCi0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgotYWJzbDo6ZW5hYmxlX2lmX3Q8SGFzaFNlbGVjdDxU
Pjo6dmFsdWUgPT0gSW52b2tlSGFzaFRhZzo6a1N0ZEhhc2gsIEg+Ci1JbnZva2VIYXNoKEggc3Rh
dGUsIGNvbnN0IFQmIHZhbHVlKSB7Ci0gIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5dGVz
KHN0ZDo6bW92ZShzdGF0ZSksIHN0ZDo6aGFzaDxUPnt9KHZhbHVlKSk7Ci19CitzdHJ1Y3QgaXNf
aGFzaGFibGUKKyAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgSGFzaFNlbGVjdDo6
dGVtcGxhdGUgQXBwbHk8VD46OnZhbHVlPiB7fTsKIAogLy8gQ2l0eUhhc2hTdGF0ZQogY2xhc3Mg
Q2l0eUhhc2hTdGF0ZSA6IHB1YmxpYyBIYXNoU3RhdGVCYXNlPENpdHlIYXNoU3RhdGU+IHsKQEAg
LTY3NCw3ICs2NDAsOCBAQCBjbGFzcyBDaXR5SGFzaFN0YXRlIDogcHVibGljIEhhc2hTdGF0ZUJh
c2U8Q2l0eUhhc2hTdGF0ZT4gewogI2VuZGlmICAvLyBBQlNMX0hBVkVfSU5UUklOU0lDX0lOVDEy
OAogCiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qga011bCA9Ci0gICAgICBzaXplb2Yoc2l6
ZV90KSA9PSA0ID8gdWludDY0X3R7MHhjYzllMmQ1MX0gOiB1aW50NjRfdHsweDlkZGZlYTA4ZWIz
ODJkNjl9OworICAgICAgc2l6ZW9mKHNpemVfdCkgPT0gNCA/IHVpbnQ2NF90ezB4Y2M5ZTJkNTF9
CisgICAgICAgICAgICAgICAgICAgICAgICAgIDogdWludDY0X3R7MHg5ZGRmZWEwOGViMzgyZDY5
fTsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgdXNpbmcgSW50ZWdyYWxGYXN0UGF0aCA9
CkBAIC04NzEsNyArODM4LDggQEAgc3RydWN0IEhhc2gKIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgog
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIFRzPgogSCBIYXNoU3RhdGVCYXNlPEg+
Ojpjb21iaW5lKEggc3RhdGUsIGNvbnN0IFQmIHZhbHVlLCBjb25zdCBUcyYuLi4gdmFsdWVzKSB7
Ci0gIHJldHVybiBIOjpjb21iaW5lKGhhc2hfaW50ZXJuYWw6Okludm9rZUhhc2goc3RkOjptb3Zl
KHN0YXRlKSwgdmFsdWUpLAorICByZXR1cm4gSDo6Y29tYmluZShoYXNoX2ludGVybmFsOjpIYXNo
U2VsZWN0Ojp0ZW1wbGF0ZSBBcHBseTxUPjo6SW52b2tlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUpLAogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMu
Li4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL3ByaW50X2hhc2hfb2Yu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL3ByaW50X2hhc2hfb2YuY2MKaW5kZXggYjZkZjMxY2M1
ZTg1YjkwNDZlMGE1NGViY2JlODM5YmM2MDQwMjE3NS4uYzM5MjEyNWE2OWZhZjZiNTg1OTJlZDEy
MmU5NTM5NjQxMTNjYjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9wcmludF9o
YXNoX29mLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvcHJpbnRfaGFzaF9vZi5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
aGFzaC9pbnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9zcHlf
aGFzaF9zdGF0ZS5oCmluZGV4IDAzZDc5NWIwOTAwMWUzZGMzMDMwMTM3MzhmNjI0NmFhMmRlMGFj
NWYuLmM0Y2M4ZDA3MzM3YzAxMTk2NjFlMzQ1ZTk4OGUyOGRmNjFhOTRjYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2hhc2gvaW50ZXJuYWwvc3B5X2hhc2hfc3RhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2lu
dGVybmFsL3NweV9oYXNoX3N0YXRlLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKQEAgLTM5LDggKzM5LDcgQEAgbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgewogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBTcHlIYXNoU3RhdGVJbXBsIDogcHVibGljIEhhc2hT
dGF0ZUJhc2U8U3B5SGFzaFN0YXRlSW1wbDxUPj4gewogIHB1YmxpYzoKLSAgU3B5SGFzaFN0YXRl
SW1wbCgpCi0gICAgICA6IGVycm9yXyhzdGQ6Om1ha2Vfc2hhcmVkPGFic2w6Om9wdGlvbmFsPHN0
ZDo6c3RyaW5nPj4oKSkgeworICBTcHlIYXNoU3RhdGVJbXBsKCkgOiBlcnJvcl8oc3RkOjptYWtl
X3NoYXJlZDxhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4+KCkpIHsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfdm9pZDxUPjo6dmFsdWUsICIiKTsKICAgfQogCkBAIC0xNzAsNyArMTY5LDYg
QEAgY2xhc3MgU3B5SGFzaFN0YXRlSW1wbCA6IHB1YmxpYyBIYXNoU3RhdGVCYXNlPFNweUhhc2hT
dGF0ZUltcGw8VD4+IHsKICAgLy8gQWJzbEhhc2hWYWx1ZSBkaXJlY3RseSAoYmVjYXVzZSB0aGUg
aGFzaCBzdGF0ZSB0eXBlIGRvZXMgbm90IG1hdGNoKS4KICAgc3RhdGljIGJvb2wgZGlyZWN0X2Fi
c2xfaGFzaF92YWx1ZV9lcnJvcl87CiAKLQogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gaGFz
aF9yZXByZXNlbnRhdGlvbl87CiAgIC8vIFRoaXMgaXMgYSBzaGFyZWRfcHRyIGJlY2F1c2Ugd2Ug
d2FudCBhbGwgaW5zdGFuY2VzIG9mIHRoZSBwYXJ0aWN1bGFyCiAgIC8vIFNweUhhc2hTdGF0ZSBy
dW4gdG8gc2hhcmUgdGhlIGZpZWxkLiBUaGlzIHdheSB3ZSBjYW4gc2V0IHRoZSBlcnJvciBmb3IK
QEAgLTIwMCw3ICsxOTgsNyBAQCBib29sIFJ1bk9uU3RhcnR1cDxmPjo6cnVuID0gKGYoKSwgdHJ1
ZSk7CiB0ZW1wbGF0ZSA8CiAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKICAgICAvLyBPbmx5
IHRyaWdnZXIgZm9yIHdoZW4gKFQgIT0gVSksCi0gICAgYWJzbDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6
aXNfc2FtZTxULCBVPjo6dmFsdWUsIGludD4gPSAwLAorICAgIHR5cGVuYW1lID0gYWJzbDo6ZW5h
YmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxULCBVPjo6dmFsdWU+LAogICAgIC8vIFRoaXMgc3RhdGVt
ZW50IHdvcmtzIGluIHR3byB3YXlzOgogICAgIC8vICAtIEZpcnN0LCBpdCBpbnN0YW50aWF0ZXMg
UnVuT25TdGFydHVwIGFuZCBmb3JjZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mCiAgICAgLy8gICAg
YHJ1bmAsIHdoaWNoIHNldCB0aGUgZ2xvYmFsIHZhcmlhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bWVtb3J5L0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L0JVSUxELmJhemVsCmluZGV4IDg5YTMx
MmVhYzRiMTliZjg4YmExZjIxMDBjYTA0NWQxY2MzMjc4NWUuLmY4MTVlZjk0MGEyNWJlZTg1OWEx
YmU3YmIyM2IxNjVjOWIxMTFjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9CVUlMRC5iYXpl
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuYmF6ZWwKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAj
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0xNSw4ICsxNSw5IEBACiAjCiAKIGxvYWQoCi0gICAgIi8vYWJzbDpjb3B0
cy5iemwiLAorICAgICIvL2Fic2w6Y29wdHMvY29uZmlndXJlX2NvcHRzLmJ6bCIsCiAgICAgIkFC
U0xfREVGQVVMVF9DT1BUUyIsCisgICAgIkFCU0xfREVGQVVMVF9MSU5LT1BUUyIsCiAgICAgIkFC
U0xfVEVTVF9DT1BUUyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHIiwKICAgICAiQUJTTF9F
WENFUFRJT05TX0ZMQUdfTElOS09QVFMiLApAQCAtMzAsNiArMzEsNyBAQCBjY19saWJyYXJ5KAog
ICAgIG5hbWUgPSAibWVtb3J5IiwKICAgICBoZHJzID0gWyJtZW1vcnkuaCJdLAogICAgIGNvcHRz
ID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAog
ICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLApAQCAtNDAsNiArNDIsNyBAQCBjY190
ZXN0KAogICAgIG5hbWUgPSAibWVtb3J5X3Rlc3QiLAogICAgIHNyY3MgPSBbIm1lbW9yeV90ZXN0
LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjptZW1vcnkiLAogICAg
ICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtNTQsNyArNTcsNyBAQCBjY190ZXN0KAogICAgICAgICAi
bWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFC
U0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAotICAgIGxpbmtvcHRzID0gQUJT
TF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElP
TlNfRkxBR19MSU5LT1BUUyArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwog
ICAgICAgICAiOm1lbW9yeSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fc2FmZXR5
X3Rlc3RpbmciLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L0JVSUxELmduIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5L0JVSUxELmduCmluZGV4IDMwMjI0YzZhMTEyNDAyM2M0M2VhYTQxYjU0OTZiZGQxYzMzN2Fl
OWEuLjA2YmM0YzVhYmNmMzcxMWVmMzk1MzNhZGRjNTNlOWIzYmRmNGEyMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL21lbW9yeS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuZ24KQEAgLTQs
OCArNCwxNSBAQAogCiBpbXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCiAKKyMg
VXNhZ2Ugb2YgQWJzZWlsIGluIENocm9taXVtIGlzIGd1YXJkZWQgYnkgYW4gZXhwbGljaXQgb3B0
LWluIGxpc3QsIGJlZm9yZQorIyBhZGRpbmcgcHJvamVjdHMgdG8gdGhpcyBsaXN0IHBsZWFzZSBy
ZWFjaCBvdXQgdG8gY3h4QGNocm9taXVtLm9yZyBhbmQgQ0M6CisjIC0gaHR0cHM6Ly9jcy5jaHJv
bWl1bS5vcmcvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvT1dORVJTCisjCisj
IE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGF0OgorIyBodHRwczovL2RvY3MuZ29vZ2xl
LmNvbS9kb2N1bWVudC9kLzFEZ1MxLUEzcnpib1RManBmNG0xc3FrSmdXam5ZX1J1MmRva2sxWDF2
QkRVCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICB2aXNpYmlsaXR5ID0gWworICAgICIv
L2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS93ZWJydGMvKiIsCiAgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
Omd0ZXN0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L21lbW9yeS9DTWFrZUxpc3RzLnR4dAppbmRleCA1OTU4ZjVjNTJiZmI2ZGFjYjAxZjE4MWFiOTRm
NjRiNWNhNmNmZjg4Li4wYTgxMjIwM2JmYmYyYmM2OGU2NGEzOTk4Nzk1ZDE3YmFjNjdjZWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
L0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQs
NTggKzE0LDQ1IEBACiAjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogIwogCi1saXN0
KEFQUEVORCBNRU1PUllfUFVCTElDX0hFQURFUlMKLSAgIm1lbW9yeS5oIgotKQotCi0KLWFic2xf
aGVhZGVyX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfbWVtb3J5Ci0gIEVYUE9SVF9OQU1F
CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKICAgICBtZW1vcnkKKyAgSERSUworICAgICJtZW1v
cnkuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFi
c2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6Om1ldGEKKyAgUFVCTElDCiApCiAKLSMKLSMjIFRF
U1RTCi0jCi0KLSMgdGVzdCBtZW1vcnlfdGVzdAotbGlzdChBUFBFTkQgTUVNT1JZX1RFU1RfU1JD
Ci0gICJtZW1vcnlfdGVzdC5jYyIKLSAgJHtNRU1PUllfUFVCTElDX0hFQURFUlN9Ci0pCi1zZXQo
TUVNT1JZX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2w6Om1lbW9yeSkKLQot
Ci0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBtZW1v
cnlfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtNRU1PUllfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJS
QVJJRVMKLSAgICAke01FTU9SWV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Ci0pCi0KLQotIyB0ZXN0
IG1lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QKLXNldChNRU1PUllfRVhDRVBUSU9OX1NBRkVU
WV9URVNUX1NSQyAibWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIpCi1zZXQoTUVNT1JZ
X0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9QVUJMSUNfTElCUkFSSUVTCi0gIGFic2w6Om1lbW9yeQot
ICBhYnNsX2Jhc2VfaW50ZXJuYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nCisgIFNSQ1MKKyAg
ICAibWVtb3J5X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFk
ZXJzCisgICAgZ21vY2tfbWFpbgogKQogCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190
ZXN0KAorICBOQU1FCiAgICAgbWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdAotICBTT1VSQ0VT
Ci0gICAgJHtNRU1PUllfRVhDRVBUSU9OX1NBRkVUWV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJB
UklFUwotICAgICR7TUVNT1JZX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9QVUJMSUNfTElCUkFSSUVT
fQotICBQUklWQVRFX0NPTVBJTEVfRkxBR1MKKyAgU1JDUworICAgICJtZW1vcnlfZXhjZXB0aW9u
X3NhZmV0eV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQogICAgICR7
QUJTTF9FWENFUFRJT05TX0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNf
RkxBR19MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6Om1lbW9yeQorICAgIGFic2w6OmV4Y2Vw
dGlvbl9zYWZldHlfdGVzdGluZworICAgIGdtb2NrX21haW4KICkKLQotCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL21lbW9yeS9tZW1vcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnkuaAppbmRleCAxZWFl
YzBmNDBhZWFkNTdkNjkyZTRiODU4ZTY0MjE0MDQ1NjQ1ZjgxLi41YTRhMWExZGZlMjU5ODcxNGYz
MTE0Y2NhMjNmZGQxNDVkYzJmMmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC00NywxOSArNDcsMTQgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gICBY
KiBOZXdYKGludCwgaW50KTsKIC8vICAgYXV0byB4ID0gV3JhcFVuaXF1ZShOZXdYKDEsIDIpKTsg
IC8vICd4JyBpcyBzdGQ6OnVuaXF1ZV9wdHI8WD4uCiAvLwotLy8gVGhlIHB1cnBvc2Ugb2YgV3Jh
cFVuaXF1ZSBpcyB0byBhdXRvbWF0aWNhbGx5IGRlZHVjZSB0aGUgcG9pbnRlciB0eXBlLiBJZiB5
b3UKLS8vIHdpc2ggdG8gbWFrZSB0aGUgdHlwZSBleHBsaWNpdCwgZm9yIHJlYWRhYmlsaXR5IHJl
YXNvbnMgb3IgYmVjYXVzZSB5b3UgcHJlZmVyCi0vLyB0byB1c2UgYSBiYXNlLWNsYXNzIHBvaW50
ZXIgcmF0aGVyIHRoYW4gYSBkZXJpdmVkIG9uZSwganVzdCB1c2UKKy8vIERvIG5vdCBjYWxsIFdy
YXBVbmlxdWUgd2l0aCBhbiBleHBsaWNpdCB0eXBlLCBhcyBpbgorLy8gYFdyYXBVbmlxdWU8WD4o
TmV3WCgxLCAyKSlgLiAgVGhlIHB1cnBvc2Ugb2YgV3JhcFVuaXF1ZSBpcyB0byBhdXRvbWF0aWNh
bGx5CisvLyBkZWR1Y2UgdGhlIHBvaW50ZXIgdHlwZS4gSWYgeW91IHdpc2ggdG8gbWFrZSB0aGUg
dHlwZSBleHBsaWNpdCwganVzdCB1c2UKIC8vIGBzdGQ6OnVuaXF1ZV9wdHJgIGRpcmVjdGx5Lgog
Ly8KLS8vIEV4YW1wbGU6Ci0vLyAgIFgqIEZhY3RvcnkoaW50LCBpbnQpOwotLy8gICBhdXRvIHgg
PSBzdGQ6OnVuaXF1ZV9wdHI8WD4oRmFjdG9yeSgxLCAyKSk7CisvLyAgIGF1dG8geCA9IHN0ZDo6
dW5pcXVlX3B0cjxYPihOZXdYKDEsIDIpKTsKIC8vICAgICAgICAgICAgICAgICAgLSBvciAtCi0v
LyAgIHN0ZDo6dW5pcXVlX3B0cjxYPiB4KEZhY3RvcnkoMSwgMikpOwotLy8KLS8vIFRoaXMgaGFz
IHRoZSBhZGRlZCBhZHZhbnRhZ2Ugb2Ygd29ya2luZyB3aGV0aGVyIEZhY3RvcnkgcmV0dXJucyBh
IHJhdwotLy8gcG9pbnRlciBvciBhIGBzdGQ6OnVuaXF1ZV9wdHJgLgorLy8gICBzdGQ6OnVuaXF1
ZV9wdHI8WD4geChOZXdYKDEsIDIpKTsKIC8vCiAvLyBXaGlsZSBgYWJzbDo6V3JhcFVuaXF1ZWAg
aXMgdXNlZnVsIGZvciBjYXB0dXJpbmcgdGhlIG91dHB1dCBvZiBhIHJhdwogLy8gcG9pbnRlciBm
YWN0b3J5LCBwcmVmZXIgJ2Fic2w6Om1ha2VfdW5pcXVlPFQ+KGFyZ3MuLi4pJyBvdmVyCkBAIC0x
MjAsNyArMTE1LDcgQEAgdXNpbmcgc3RkOjptYWtlX3VuaXF1ZTsKIC8vCiAvLyBGb3IgbW9yZSBi
YWNrZ3JvdW5kIG9uIHdoeSBgc3RkOjp1bmlxdWVfcHRyPFQ+KG5ldyBUKGEsYikpYCBpcyBwcm9i
bGVtYXRpYywKIC8vIHNlZSBIZXJiIFN1dHRlcidzIGV4cGxhbmF0aW9uIG9uCi0vLyAoRXhjZXB0
aW9uLVNhZmUgRnVuY3Rpb24gQ2FsbHMpW2h0dHA6Ly9oZXJic3V0dGVyLmNvbS9nb3R3L18xMDIv
XS4KKy8vIChFeGNlcHRpb24tU2FmZSBGdW5jdGlvbiBDYWxscylbaHR0cHM6Ly9oZXJic3V0dGVy
LmNvbS9nb3R3L18xMDIvXS4KIC8vIChJbiBnZW5lcmFsLCByZXZpZXdlcnMgc2hvdWxkIHRyZWF0
IGBuZXcgVChhLGIpYCB3aXRoIHNjcnV0aW55LikKIC8vCiAvLyBFeGFtcGxlIHVzYWdlOgpAQCAt
NTk5LDcgKzU5NCw3IEBAIHN0cnVjdCBhbGxvY2F0b3JfdHJhaXRzIHsKICAgICByZXR1cm4gYS5t
YXhfc2l6ZSgpOwogICB9CiAgIHN0YXRpYyBzaXplX3R5cGUgbWF4X3NpemVfaW1wbChjaGFyLCBj
b25zdCBBbGxvYyYpIHsKLSAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3R5cGU+
OjptYXgoKSAvIHNpemVvZih2YWx1ZV90eXBlKTsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90eXBlPjo6bWF4KSgpIC8gc2l6ZW9mKHZhbHVlX3R5cGUpOwogICB9CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEE+CkBAIC02NDYsNyArNjQxLDcgQEAgc3RydWN0IGFsbG9jYXRv
cl9pc19ub3Rocm93CiAgICAgOiBtZW1vcnlfaW50ZXJuYWw6OkV4dHJhY3RPclQ8bWVtb3J5X2lu
dGVybmFsOjpHZXRJc05vdGhyb3csIEFsbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6ZmFsc2VfdHlwZT4ge307CiAKLSNpZiBBQlNMX0FMTE9DQVRPUl9OT1RIUk9X
CisjaWYgZGVmaW5lZChBQlNMX0FMTE9DQVRPUl9OT1RIUk9XKSAmJiBBQlNMX0FMTE9DQVRPUl9O
T1RIUk9XCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBhbGxvY2F0b3JfaXNfbm90aHJv
dzxzdGQ6OmFsbG9jYXRvcjxUPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKIHN0cnVjdCBkZWZhdWx0
X2FsbG9jYXRvcl9pc19ub3Rocm93IDogc3RkOjp0cnVlX3R5cGUge307CkBAIC02NTUsNTkgKzY1
MCw0MiBAQCBzdHJ1Y3QgZGVmYXVsdF9hbGxvY2F0b3JfaXNfbm90aHJvdyA6IHN0ZDo6ZmFsc2Vf
dHlwZSB7fTsKICNlbmRpZgogCiBuYW1lc3BhY2UgbWVtb3J5X2ludGVybmFsIHsKLSNpZmRlZiBB
QlNMX0hBVkVfRVhDRVBUSU9OUyAgLy8gQ29uc3RydWN0UmFuZ2UKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBBbGxvY2F0b3IsIHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZS4uLiBBcmdzPgogdm9pZCBD
b25zdHJ1Y3RSYW5nZShBbGxvY2F0b3ImIGFsbG9jLCBJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3Ig
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXJncyYuLi4gYXJncykgewogICBmb3Ig
KEl0ZXJhdG9yIGN1ciA9IGZpcnN0OyBjdXIgIT0gbGFzdDsgKytjdXIpIHsKLSAgICB0cnkgewot
ICAgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdChhbGxvYywg
Y3VyLCBhcmdzLi4uKTsKLSAgICB9IGNhdGNoICguLi4pIHsKKyAgICBBQlNMX0lOVEVSTkFMX1RS
WSB7CisgICAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KGFs
bG9jLCBzdGQ6OmFkZHJlc3NvZigqY3VyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJncy4uLik7CisgICAgfQorICAgIEFCU0xfSU5URVJOQUxf
Q0FUQ0hfQU5ZIHsKICAgICAgIHdoaWxlIChjdXIgIT0gZmlyc3QpIHsKICAgICAgICAgLS1jdXI7
Ci0gICAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KGFsbG9j
LCBjdXIpOworICAgICAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6ZGVzdHJv
eShhbGxvYywgc3RkOjphZGRyZXNzb2YoKmN1cikpOwogICAgICAgfQotICAgICAgdGhyb3c7Cisg
ICAgICBBQlNMX0lOVEVSTkFMX1JFVEhST1c7CiAgICAgfQogICB9CiB9Ci0jZWxzZSAgIC8vIEFC
U0xfSEFWRV9FWENFUFRJT05TICAvLyBDb25zdHJ1Y3RSYW5nZQotdGVtcGxhdGUgPHR5cGVuYW1l
IEFsbG9jYXRvciwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lLi4uIEFyZ3M+Ci12b2lkIENv
bnN0cnVjdFJhbmdlKEFsbG9jYXRvciYgYWxsb2MsIEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBs
YXN0LAotICAgICAgICAgICAgICAgICAgICBjb25zdCBBcmdzJi4uLiBhcmdzKSB7Ci0gIGZvciAo
OyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KSB7Ci0gICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFs
bG9jYXRvcj46OmNvbnN0cnVjdChhbGxvYywgZmlyc3QsIGFyZ3MuLi4pOwotICB9Ci19Ci0jZW5k
aWYgIC8vIEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBDb25zdHJ1Y3RSYW5nZQogCi0jaWZkZWYg
QUJTTF9IQVZFX0VYQ0VQVElPTlMgIC8vIENvcHlSYW5nZQogdGVtcGxhdGUgPHR5cGVuYW1lIEFs
bG9jYXRvciwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIElucHV0SXRlcmF0b3I+CiB2b2lk
IENvcHlSYW5nZShBbGxvY2F0b3ImIGFsbG9jLCBJdGVyYXRvciBkZXN0aW5hdGlvbiwgSW5wdXRJ
dGVyYXRvciBmaXJzdCwKICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgbGFzdCkgewogICBm
b3IgKEl0ZXJhdG9yIGN1ciA9IGRlc3RpbmF0aW9uOyBmaXJzdCAhPSBsYXN0OwogICAgICAgIHN0
YXRpY19jYXN0PHZvaWQ+KCsrY3VyKSwgc3RhdGljX2Nhc3Q8dm9pZD4oKytmaXJzdCkpIHsKLSAg
ICB0cnkgewotICAgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVj
dChhbGxvYywgY3VyLCAqZmlyc3QpOwotICAgIH0gY2F0Y2ggKC4uLikgeworICAgIEFCU0xfSU5U
RVJOQUxfVFJZIHsKKyAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25z
dHJ1Y3QoYWxsb2MsIHN0ZDo6YWRkcmVzc29mKCpjdXIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZmlyc3QpOworICAgIH0KKyAgICBBQlNMX0lO
VEVSTkFMX0NBVENIX0FOWSB7CiAgICAgICB3aGlsZSAoY3VyICE9IGRlc3RpbmF0aW9uKSB7CiAg
ICAgICAgIC0tY3VyOwotICAgICAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6
ZGVzdHJveShhbGxvYywgY3VyKTsKKyAgICAgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9j
YXRvcj46OmRlc3Ryb3koYWxsb2MsIHN0ZDo6YWRkcmVzc29mKCpjdXIpKTsKICAgICAgIH0KLSAg
ICAgIHRocm93OworICAgICAgQUJTTF9JTlRFUk5BTF9SRVRIUk9XOwogICAgIH0KICAgfQogfQot
I2Vsc2UgICAvLyBBQlNMX0hBVkVfRVhDRVBUSU9OUyAgLy8gQ29weVJhbmdlCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQWxsb2NhdG9yLCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgSW5wdXRJdGVy
YXRvcj4KLXZvaWQgQ29weVJhbmdlKEFsbG9jYXRvciYgYWxsb2MsIEl0ZXJhdG9yIGRlc3RpbmF0
aW9uLCBJbnB1dEl0ZXJhdG9yIGZpcnN0LAotICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBs
YXN0KSB7Ci0gIGZvciAoOyBmaXJzdCAhPSBsYXN0OwotICAgICAgIHN0YXRpY19jYXN0PHZvaWQ+
KCsrZGVzdGluYXRpb24pLCBzdGF0aWNfY2FzdDx2b2lkPigrK2ZpcnN0KSkgewotICAgIHN0ZDo6
YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoYWxsb2MsIGRlc3RpbmF0aW9u
LCAqZmlyc3QpOwotICB9Ci19Ci0jZW5kaWYgIC8vIEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBD
b3B5UmFuZ2UKIH0gIC8vIG5hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFj
ZSBhYnNsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnlfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MK
aW5kZXggMDBkMmIxOTJjZmMzMmRmNjI0MzYzY2E4NjNlYzc5ZjkwZjYxODViNS4uYTFjMzk3MDcy
ZTdiN2Q1NTc5M2FhNzE4NGU5MmIyMzUzMjE4MmNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
L21lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9y
eV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnlfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21lbW9yeS9tZW1vcnlfdGVzdC5jYwppbmRleCAyZTQ1M2UyMmJhNWJhMzljZmQ2OTBmYzU5
MWU0YWZlNDg3Y2I3OGE5Li5jNDc4MjBlNTRhYjA3MzYyMzhhOWE4YjViNWZjOTdiMzU1NzkzNTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5L21lbW9yeV90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCkBAIC02OSw2ICs2OSw0NSBAQCBURVNUKE1ha2VVbmlxdWVUZXN0LCBCYXNpYykgewogICBF
WFBFQ1RfRVEoImhpIiwgKnApOwogfQogCisvLyBJbml0aWFsaXphdGlvblZlcmlmaWVyIGZpbGxz
IGluIGEgcGF0dGVybiB3aGVuIGFsbG9jYXRlZCBzbyB3ZSBjYW4KKy8vIGRpc3Rpbmd1aXNoIGJl
dHdlZW4gaXRzIGRlZmF1bHQgYW5kIHZhbHVlIGluaXRpYWxpemVkIHN0YXRlcyAod2l0aG91dAor
Ly8gYWNjZXNzaW5nIHRydWx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5KS4KK3N0cnVjdCBJbml0aWFs
aXphdGlvblZlcmlmaWVyIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0RlZmF1bHRTY2FsYXIg
PSAweDQzOworICBzdGF0aWMgY29uc3RleHByIGludCBrRGVmYXVsdEFycmF5ID0gMHg0QjsKKwor
ICBzdGF0aWMgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBuKSB7CisgICAgdm9pZCogcmV0ID0g
OjpvcGVyYXRvciBuZXcobik7CisgICAgbWVtc2V0KHJldCwga0RlZmF1bHRTY2FsYXIsIG4pOwor
ICAgIHJldHVybiByZXQ7CisgIH0KKworICBzdGF0aWMgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6
ZV90IG4pIHsKKyAgICB2b2lkKiByZXQgPSA6Om9wZXJhdG9yIG5ld1tdKG4pOworICAgIG1lbXNl
dChyZXQsIGtEZWZhdWx0QXJyYXksIG4pOworICAgIHJldHVybiByZXQ7CisgIH0KKworICBpbnQg
YTsKKyAgaW50IGI7Cit9OworCitURVNUKEluaXRpYWxpemF0aW9uLCBNYWtlVW5pcXVlKSB7Cisg
IGF1dG8gcCA9IGFic2w6Om1ha2VfdW5pcXVlPEluaXRpYWxpemF0aW9uVmVyaWZpZXI+KCk7CisK
KyAgRVhQRUNUX0VRKDAsIHAtPmEpOworICBFWFBFQ1RfRVEoMCwgcC0+Yik7Cit9CisKK1RFU1Qo
SW5pdGlhbGl6YXRpb24sIE1ha2VVbmlxdWVBcnJheSkgeworICBhdXRvIHAgPSBhYnNsOjptYWtl
X3VuaXF1ZTxJbml0aWFsaXphdGlvblZlcmlmaWVyW10+KDIpOworCisgIEVYUEVDVF9FUSgwLCBw
WzBdLmEpOworICBFWFBFQ1RfRVEoMCwgcFswXS5iKTsKKyAgRVhQRUNUX0VRKDAsIHBbMV0uYSk7
CisgIEVYUEVDVF9FUSgwLCBwWzFdLmIpOworfQorCiBzdHJ1Y3QgTW92ZU9ubHkgewogICBNb3Zl
T25seSgpID0gZGVmYXVsdDsKICAgZXhwbGljaXQgTW92ZU9ubHkoaW50IGkxKSA6IGlwMXtuZXcg
aW50e2kxfX0ge30KQEAgLTE0NSw3ICsxODQsNyBAQCBURVNUKE1ha2VfVW5pcXVlVGVzdCwgTm90
QW1iaWd1b3VzV2l0aFN0ZE1ha2VVbmlxdWUpIHsKICAgICBleHBsaWNpdCBUYWtlc1N0ZFR5cGUo
Y29uc3Qgc3RkOjp2ZWN0b3I8aW50PiAmdmVjKSB7fQogICB9OwogICB1c2luZyBhYnNsOjptYWtl
X3VuaXF1ZTsKLSAgbWFrZV91bmlxdWU8VGFrZXNTdGRUeXBlPihzdGQ6OnZlY3RvcjxpbnQ+KCkp
OworICAodm9pZCltYWtlX3VuaXF1ZTxUYWtlc1N0ZFR5cGU+KHN0ZDo6dmVjdG9yPGludD4oKSk7
CiB9CiAKICNpZiAwCkBAIC01ODEsNyArNjIwLDcgQEAgVEVTVChBbGxvY2F0b3JUcmFpdHMsIEZ1
bmN0aW9uc0Z1bGwpIHsKIH0KIAogVEVTVChBbGxvY2F0b3JOb1Rocm93VGVzdCwgRGVmYXVsdEFs
bG9jYXRvcikgewotI2lmIEFCU0xfQUxMT0NBVE9SX05PVEhST1cKKyNpZiBkZWZpbmVkKEFCU0xf
QUxMT0NBVE9SX05PVEhST1cpICYmIEFCU0xfQUxMT0NBVE9SX05PVEhST1cKICAgRVhQRUNUX1RS
VUUoYWJzbDo6ZGVmYXVsdF9hbGxvY2F0b3JfaXNfbm90aHJvdzo6dmFsdWUpOwogI2Vsc2UKICAg
RVhQRUNUX0ZBTFNFKGFic2w6OmRlZmF1bHRfYWxsb2NhdG9yX2lzX25vdGhyb3c6OnZhbHVlKTsK
QEAgLTU4OSw3ICs2MjgsNyBAQCBURVNUKEFsbG9jYXRvck5vVGhyb3dUZXN0LCBEZWZhdWx0QWxs
b2NhdG9yKSB7CiB9CiAKIFRFU1QoQWxsb2NhdG9yTm9UaHJvd1Rlc3QsIFN0ZEFsbG9jYXRvcikg
ewotI2lmIEFCU0xfQUxMT0NBVE9SX05PVEhST1cKKyNpZiBkZWZpbmVkKEFCU0xfQUxMT0NBVE9S
X05PVEhST1cpICYmIEFCU0xfQUxMT0NBVE9SX05PVEhST1cKICAgRVhQRUNUX1RSVUUoYWJzbDo6
YWxsb2NhdG9yX2lzX25vdGhyb3c8c3RkOjphbGxvY2F0b3I8aW50Pj46OnZhbHVlKTsKICNlbHNl
CiAgIEVYUEVDVF9GQUxTRShhYnNsOjphbGxvY2F0b3JfaXNfbm90aHJvdzxzdGQ6OmFsbG9jYXRv
cjxpbnQ+Pjo6dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS9CVUlMRC5iYXplbCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21ldGEvQlVJTEQuYmF6ZWwKaW5kZXggZGJjOTcxN2RkZDMzYzJmYTQ0YTZhZmIwMGZiYjdk
ZDFhOTU3OGI4OC4uZTAwNGI1MDlmMjdlNDQ5NWQwM2VjM2RmZmI0OGM2NGI4OTYxMzE0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvbWV0YS9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL0JVSUxELmJh
emVsCkBAIC0xLDYgKzEsNyBAQAogbG9hZCgKLSAgICAiLy9hYnNsOmNvcHRzLmJ6bCIsCisgICAg
Ii8vYWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKICAgICAiQUJTTF9ERUZBVUxUX0NP
UFRTIiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRTIiwKICAgICAiQUJTTF9URVNUX0NPUFRT
IiwKICkKIApAQCAtMTIsNiArMTMsNyBAQCBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAidHlwZV90
cmFpdHMiLAogICAgIGhkcnMgPSBbInR5cGVfdHJhaXRzLmgiXSwKICAgICBjb3B0cyA9IEFCU0xf
REVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAg
ICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKICAgICBdLApAQCAtMjEs
OSArMjMsOSBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAidHlwZV90cmFpdHNfdGVzdCIsCiAgICAg
c3JjcyA9IFsidHlwZV90cmFpdHNfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6dHlwZV90cmFpdHMiLAotICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFk
ZXJzIiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAg
ICBdLAogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvQlVJ
TEQuZ24KaW5kZXggNjc1NzIxOWMyNzM1NDk5NGU1ZGEwYzVlNDYxM2RkYTg4OTQwNDA2ZC4uZjJl
NWJlMjA2ZWRjNzE3MjAxNTY4Y2VmZjMyZTdmYzhiNDFjNzljNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bWV0YS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL0JVSUxELmduCkBAIC00LDggKzQsMTUgQEAK
IAogaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCisjIFVzYWdlIG9mIEFi
c2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBi
ZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRv
IGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2No
cm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGluZm9y
bWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1l
bnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQogaWYgKGJ1
aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3Rh
bnQvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAogICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZXRhL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS9DTWFrZUxp
c3RzLnR4dAppbmRleCBhZGIwY2ViNzU0ZGY1Mjc4MDFkZjU3Njc0OGJmNWMyODE2ZTk1NGFhLi42
NzJlYWQyZmQwYTU5Mzc2NzA0MTcyNTQ4ZDEzNzRhODVlYmEyMjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9tZXRhL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvQ01ha2VMaXN0cy50eHQKQEAg
LTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNCwzOSArMTQsMzcgQEAKICMgbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAjCiAKLWxpc3QoQVBQRU5EIE1FVEFfUFVCTElD
X0hFQURFUlMKLSAgInR5cGVfdHJhaXRzLmgiCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAg
ICB0eXBlX3RyYWl0cworICBIRFJTCisgICAgInR5cGVfdHJhaXRzLmgiCisgIENPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb25maWcKKyAgUFVCTElD
CiApCiAKLQotIwotIyMgVEVTVFMKLSMKLQotIyB0ZXN0IHR5cGVfdHJhaXRzX3Rlc3QKLWxpc3Qo
QVBQRU5EIFRZUEVfVFJBSVRTX1RFU1RfU1JDCi0gICJ0eXBlX3RyYWl0c190ZXN0LmNjIgotICAk
e01FVEFfUFVCTElDX0hFQURFUlN9CithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICB0eXBlX3Ry
YWl0c190ZXN0CisgIFNSQ1MKKyAgICAidHlwZV90cmFpdHNfdGVzdC5jYyIKKyAgQ09QVFMKKyAg
ICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAg
Z21vY2tfbWFpbgogKQogCi1hYnNsX2hlYWRlcl9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNs
X21ldGEKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFic2w6OmJhc2UKLSAgRVhQT1JUX05BTUUK
KyMgY29tcG9uZW50IHRhcmdldAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCiAgICAgbWV0YQot
ICkKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICB0eXBlX3RyYWl0c190ZXN0Ci0gIFNPVVJD
RVMKLSAgICAke1RZUEVfVFJBSVRTX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAg
YWJzbDo6YmFzZQotICAgIGFic2w6Om1ldGEKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgREVQUworICAgIGFic2w6OnR5cGVfdHJhaXRzCisgIFBVQkxJQwogKQotCi0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90eXBlX3RyYWl0cy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90eXBlX3Ry
YWl0cy5oCmluZGV4IDIzZWJkNmVkMDk5MGZkM2Q5NTEwZDRkOTEwNjZmMDc0Y2ZlMTExMDEuLjky
NzI0NGUwOWRmYjM5YTZhZTFhMGI1YzliZmRiNzZiZDdkNmVjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L21ldGEvdHlwZV90cmFpdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgKQEAgLTUs
NyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIyLDcgKzIyLDcgQEAKIC8v
IHN1cHBvcnQgdHlwZSBpbmZlcmVuY2UsIGNsYXNzaWZpY2F0aW9uLCBhbmQgdHJhbnNmb3JtYXRp
b24sIGFzIHdlbGwgYXMKIC8vIG1ha2UgaXQgZWFzaWVyIHRvIHdyaXRlIHRlbXBsYXRlcyBiYXNl
ZCBvbiBnZW5lcmljIHR5cGUgYmVoYXZpb3IuCiAvLwotLy8gU2VlIGh0dHA6Ly9lbi5jcHByZWZl
cmVuY2UuY29tL3cvY3BwL2hlYWRlci90eXBlX3RyYWl0cworLy8gU2VlIGh0dHBzOi8vZW4uY3Bw
cmVmZXJlbmNlLmNvbS93L2NwcC9oZWFkZXIvdHlwZV90cmFpdHMKIC8vCiAvLyBXQVJOSU5HOiB1
c2Ugb2YgbWFueSBvZiB0aGUgY29uc3RydWN0cyBpbiB0aGlzIGhlYWRlciB3aWxsIGNvdW50IGFz
ICJjb21wbGV4CiAvLyB0ZW1wbGF0ZSBtZXRhcHJvZ3JhbW1pbmciLCBzbyBiZWZvcmUgcHJvY2Vl
ZGluZywgcGxlYXNlIGNhcmVmdWxseSBjb25zaWRlcgpAQCAtNDMsOCArNDMsMzkgQEAKIAogbmFt
ZXNwYWNlIGFic2wgewogCisvLyBEZWZpbmVkIGFuZCBkb2N1bWVudGVkIGxhdGVyIG9uIGluIHRo
aXMgZmlsZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX3RyaXZpYWxseV9tb3Zl
X2Fzc2lnbmFibGU7CisKIG5hbWVzcGFjZSB0eXBlX3RyYWl0c19pbnRlcm5hbCB7CiAKKy8vIFNp
bGVuY2UgTVNWQyB3YXJuaW5ncyBhYm91dCB0aGUgZGVzdHJ1Y3RvciBiZWluZyBkZWZpbmVkIGFz
IGRlbGV0ZWQuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19HTlVDX18pCisj
cHJhZ21hIHdhcm5pbmcocHVzaCkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDYyNCkKKyNl
bmRpZiAgLy8gZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19HTlVDX18pCisKK3RlbXBs
YXRlIDxjbGFzcyBUPgordW5pb24gU2luZ2xlTWVtYmVyVW5pb24geworICBUIHQ7Cit9OworCisv
LyBSZXN0b3JlIHRoZSBzdGF0ZSBvZiB0aGUgZGVzdHJ1Y3RvciB3YXJuaW5nIHRoYXQgd2FzIHNp
bGVuY2VkIGFib3ZlLgorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fR05VQ19f
KQorI3ByYWdtYSB3YXJuaW5nKHBvcCkKKyNlbmRpZiAgLy8gZGVmaW5lZChfTVNDX1ZFUikgJiYg
IWRlZmluZWQoX19HTlVDX18pCisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IElzVHJpdmlh
bGx5TW92ZUFzc2lnbmFibGVSZWZlcmVuY2UgOiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBs
YXRlIDxjbGFzcyBUPgorc3RydWN0IElzVHJpdmlhbGx5TW92ZUFzc2lnbmFibGVSZWZlcmVuY2U8
VCY+CisgICAgOiBhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp0eXBlIHt9
OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBJc1RyaXZpYWxseU1vdmVBc3NpZ25hYmxl
UmVmZXJlbmNlPFQmJj4KKyAgICA6IGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8
VD46OnR5cGUge307CisKIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUcz4KIHN0cnVjdCBWb2lkVElt
cGwgewogICB1c2luZyB0eXBlID0gdm9pZDsKQEAgLTE5Myw2ICsyMjQsMjMgQEAgc3RydWN0IGRp
c2p1bmN0aW9uPD4gOiBzdGQ6OmZhbHNlX3R5cGUge307CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
IHN0cnVjdCBuZWdhdGlvbiA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgIVQ6OnZhbHVl
PiB7fTsKIAorLy8gaXNfZnVuY3Rpb24oKQorLy8KKy8vIERldGVybWluZXMgd2hldGhlciB0aGUg
cGFzc2VkIHR5cGUgYFRgIGlzIGEgZnVuY3Rpb24gdHlwZS4KKy8vCisvLyBUaGlzIG1ldGFmdW5j
dGlvbiBpcyBkZXNpZ25lZCB0byBiZSBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIHRoZSBDKysx
MQorLy8gYHN0ZDo6aXNfZnVuY3Rpb24oKWAgbWV0YWZ1bmN0aW9uIGZvciBwbGF0Zm9ybXMgdGhh
dCBoYXZlIGluY29tcGxldGUgQysrMTEKKy8vIHN1cHBvcnQgKHN1Y2ggYXMgbGlic3RkYysrIDQu
eCkuCisvLworLy8gVGhpcyBtZXRhZnVuY3Rpb24gd29ya3MgYmVjYXVzZSBhcHBlbmRpbmcgYGNv
bnN0YCB0byBhIHR5cGUgZG9lcyBub3RoaW5nIHRvCisvLyBmdW5jdGlvbiB0eXBlcyBhbmQgcmVm
ZXJlbmNlIHR5cGVzIChhbmQgZm9ybXMgYSBjb25zdC1xdWFsaWZpZWQgdHlwZQorLy8gb3RoZXJ3
aXNlKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX2Z1bmN0aW9uCisgICAgOiBz
dGQ6OmludGVncmFsX2NvbnN0YW50PAorICAgICAgICAgIGJvb2wsICEoc3RkOjppc19yZWZlcmVu
Y2U8VD46OnZhbHVlIHx8CisgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnN0PHR5cGVuYW1l
IHN0ZDo6YWRkX2NvbnN0PFQ+Ojp0eXBlPjo6dmFsdWUpPiB7fTsKKwogLy8gaXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZSgpCiAvLwogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXNzZWQgdHlw
ZSBgVGAgaXMgdHJpdmlhbGx5IGRlc3RydWN0YWJsZS4KQEAgLTI0Niw3ICsyOTQsNyBAQCBzdHJ1
Y3QgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZQogLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlz
IGNoZWNrLCB0aGUgY2FsbCB0byBzdGQ6OmRlY2x2YWwgaXMgY29uc2lkZXJlZAogLy8gdHJpdmlh
bC4iCiAvLwotLy8gTm90ZXMgZnJvbSBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC90
eXBlcy9pc19jb25zdHJ1Y3RpYmxlOgorLy8gTm90ZXMgZnJvbSBodHRwczovL2VuLmNwcHJlZmVy
ZW5jZS5jb20vdy9jcHAvdHlwZXMvaXNfY29uc3RydWN0aWJsZToKIC8vIEluIG1hbnkgaW1wbGVt
ZW50YXRpb25zLCBpc19ub3Rocm93X2NvbnN0cnVjdGlibGUgYWxzbyBjaGVja3MgaWYgdGhlCiAv
LyBkZXN0cnVjdG9yIHRocm93cyBiZWNhdXNlIGl0IGlzIGVmZmVjdGl2ZWx5IG5vZXhjZXB0KFQo
YXJnKSkuIFNhbWUKIC8vIGFwcGxpZXMgdG8gaXNfdHJpdmlhbGx5X2NvbnN0cnVjdGlibGUsIHdo
aWNoLCBpbiB0aGVzZSBpbXBsZW1lbnRhdGlvbnMsIGFsc28KQEAgLTI3NSw2ICszMjMsNDAgQEAg
c3RydWN0IGlzX3RyaXZpYWxseV9kZWZhdWx0X2NvbnN0cnVjdGlibGUKICNlbmRpZiAgLy8gQUJT
TF9IQVZFX1NURF9JU19UUklWSUFMTFlfQ09OU1RSVUNUSUJMRQogfTsKIAorLy8gaXNfdHJpdmlh
bGx5X21vdmVfY29uc3RydWN0aWJsZSgpCisvLworLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBw
YXNzZWQgdHlwZSBgVGAgaXMgdHJpdmlhbGx5IG1vdmUgY29uc3RydWN0aWJsZS4KKy8vCisvLyBU
aGlzIG1ldGFmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBhIGRyb3AtaW4gcmVwbGFjZW1lbnQg
Zm9yIHRoZSBDKysxMQorLy8gYHN0ZDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZSgp
YCBtZXRhZnVuY3Rpb24gZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUKKy8vIGluY29tcGxldGUgQysr
MTEgc3VwcG9ydCAoc3VjaCBhcyBsaWJzdGRjKysgNC54KS4gT24gYW55IHBsYXRmb3JtcyB0aGF0
IGRvCisvLyBmdWxseSBzdXBwb3J0IEMrKzExLCB3ZSBjaGVjayB3aGV0aGVyIHRoaXMgeWllbGRz
IHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUgc3RkCisvLyBpbXBsZW1lbnRhdGlvbi4KKy8vCisvLyBO
T1RFOiBgVCBvYmooZGVjbHZhbDxUPigpKTtgIG5lZWRzIHRvIGJlIHdlbGwtZm9ybWVkIGFuZCBu
b3QgY2FsbCBhbnkKKy8vIG5vbnRyaXZpYWwgb3BlcmF0aW9uLiAgTm9udHJpdmlhbGx5IGRlc3Ry
dWN0aWJsZSB0eXBlcyB3aWxsIGNhdXNlIHRoZQorLy8gZXhwcmVzc2lvbiB0byBiZSBub250cml2
aWFsLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfdHJpdmlhbGx5X21vdmVfY29u
c3RydWN0aWJsZQorICAgIDogc3RkOjpjb25kaXRpb25hbDwKKyAgICAgICAgICBzdGQ6OmlzX29i
amVjdDxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJyYXk8VD46OnZhbHVlLAorICAgICAgICAgIHN0
ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPAorICAgICAgICAgICAgICB0eXBlX3RyYWl0c19pbnRl
cm5hbDo6U2luZ2xlTWVtYmVyVW5pb248VD4+LAorICAgICAgICAgIHN0ZDo6aXNfcmVmZXJlbmNl
PFQ+Pjo6dHlwZTo6dHlwZSB7CisjaWZkZWYgQUJTTF9IQVZFX1NURF9JU19UUklWSUFMTFlfQ09O
U1RSVUNUSUJMRQorIHByaXZhdGU6CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjb21wbGlhbnQg
PQorICAgICAgc3RkOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSA9
PQorICAgICAgaXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTo6dmFsdWU7CisgIHN0YXRp
Y19hc3NlcnQoY29tcGxpYW50IHx8IHN0ZDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJs
ZTxUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIk5vdCBjb21wbGlhbnQgd2l0aCBzdGQ6Omlz
X3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU7ICIKKyAgICAgICAgICAgICAgICAiU3RhbmRh
cmQ6IGZhbHNlLCBJbXBsZW1lbnRhdGlvbjogdHJ1ZSIpOworICBzdGF0aWNfYXNzZXJ0KGNvbXBs
aWFudCB8fCAhc3RkOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwK
KyAgICAgICAgICAgICAgICAiTm90IGNvbXBsaWFudCB3aXRoIHN0ZDo6aXNfdHJpdmlhbGx5X21v
dmVfY29uc3RydWN0aWJsZTsgIgorICAgICAgICAgICAgICAgICJTdGFuZGFyZDogdHJ1ZSwgSW1w
bGVtZW50YXRpb246IGZhbHNlIik7CisjZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfSVNfVFJJVklB
TExZX0NPTlNUUlVDVElCTEUKK307CisKIC8vIGlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGli
bGUoKQogLy8KIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgcGFzc2VkIHR5cGUgYFRgIGlzIHRy
aXZpYWxseSBjb3B5IGNvbnN0cnVjdGlibGUuCkBAIC0yOTAsOSArMzcyLDExIEBAIHN0cnVjdCBp
c190cml2aWFsbHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlCiAvLyBleHByZXNzaW9uIHRvIGJlIG5v
bnRyaXZpYWwuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc190cml2aWFsbHlfY29w
eV9jb25zdHJ1Y3RpYmxlCi0gICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIF9faGFz
X3RyaXZpYWxfY29weShUKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWU+IHsK
KyAgICA6IHN0ZDo6Y29uZGl0aW9uYWw8CisgICAgICAgICAgc3RkOjppc19vYmplY3Q8VD46OnZh
bHVlICYmICFzdGQ6OmlzX2FycmF5PFQ+Ojp2YWx1ZSwKKyAgICAgICAgICBzdGQ6OmlzX2NvcHlf
Y29uc3RydWN0aWJsZTwKKyAgICAgICAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OlNpbmds
ZU1lbWJlclVuaW9uPFQ+PiwKKyAgICAgICAgICBzdGQ6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD4+
Ojp0eXBlOjp0eXBlIHsKICNpZmRlZiBBQlNMX0hBVkVfU1REX0lTX1RSSVZJQUxMWV9DT05TVFJV
Q1RJQkxFCiAgcHJpdmF0ZToKICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNvbXBsaWFudCA9CkBA
IC0zMDcsNiArMzkxLDQyIEBAIHN0cnVjdCBpc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxl
CiAjZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfSVNfVFJJVklBTExZX0NPTlNUUlVDVElCTEUKIH07
CiAKKy8vIGlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGUoKQorLy8KKy8vIERldGVybWluZXMg
d2hldGhlciB0aGUgcGFzc2VkIHR5cGUgYFRgIGlzIHRyaXZpYWxseSBtb3ZlIGFzc2lnbmFibGUu
CisvLworLy8gVGhpcyBtZXRhZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgYSBkcm9wLWluIHJl
cGxhY2VtZW50IGZvciB0aGUgQysrMTEKKy8vIGBzdGQ6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2ln
bmFibGUoKWAgbWV0YWZ1bmN0aW9uIGZvciBwbGF0Zm9ybXMgdGhhdCBoYXZlCisvLyBpbmNvbXBs
ZXRlIEMrKzExIHN1cHBvcnQgKHN1Y2ggYXMgbGlic3RkYysrIDQueCkuIE9uIGFueSBwbGF0Zm9y
bXMgdGhhdCBkbworLy8gZnVsbHkgc3VwcG9ydCBDKysxMSwgd2UgY2hlY2sgd2hldGhlciB0aGlz
IHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhlIHN0ZAorLy8gaW1wbGVtZW50YXRpb24uCisv
LworLy8gTk9URTogYGlzX2Fzc2lnbmFibGU8VCwgVT46OnZhbHVlYCBpcyBgdHJ1ZWAgaWYgdGhl
IGV4cHJlc3Npb24KKy8vIGBkZWNsdmFsPFQ+KCkgPSBkZWNsdmFsPFU+KClgIGlzIHdlbGwtZm9y
bWVkIHdoZW4gdHJlYXRlZCBhcyBhbiB1bmV2YWx1YXRlZAorLy8gb3BlcmFuZC4gYGlzX3RyaXZp
YWxseV9hc3NpZ25hYmxlPFQsIFU+YCByZXF1aXJlcyB0aGUgYXNzaWdubWVudCB0byBjYWxsIG5v
CisvLyBvcGVyYXRpb24gdGhhdCBpcyBub3QgdHJpdmlhbC4gYGlzX3RyaXZpYWxseV9jb3B5X2Fz
c2lnbmFibGU8VD5gIGlzIHNpbXBseQorLy8gYGlzX3RyaXZpYWxseV9hc3NpZ25hYmxlPFQmLCBU
PmAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc190cml2aWFsbHlfbW92ZV9hc3Np
Z25hYmxlCisgICAgOiBzdGQ6OmNvbmRpdGlvbmFsPAorICAgICAgICAgIHN0ZDo6aXNfb2JqZWN0
PFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcnJheTxUPjo6dmFsdWUsCisgICAgICAgICAgc3RkOjpp
c19tb3ZlX2Fzc2lnbmFibGU8dHlwZV90cmFpdHNfaW50ZXJuYWw6OlNpbmdsZU1lbWJlclVuaW9u
PFQ+PiwKKyAgICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNUcml2aWFsbHlNb3ZlQXNz
aWduYWJsZVJlZmVyZW5jZTxUPj46OnR5cGU6OgorICAgICAgICAgIHR5cGUgeworI2lmZGVmIEFC
U0xfSEFWRV9TVERfSVNfVFJJVklBTExZX0FTU0lHTkFCTEUKKyBwcml2YXRlOgorICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgY29tcGxpYW50ID0KKyAgICAgIHN0ZDo6aXNfdHJpdmlhbGx5X21vdmVf
YXNzaWduYWJsZTxUPjo6dmFsdWUgPT0KKyAgICAgIGlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFi
bGU6OnZhbHVlOworICBzdGF0aWNfYXNzZXJ0KGNvbXBsaWFudCB8fCBzdGQ6OmlzX3RyaXZpYWxs
eV9tb3ZlX2Fzc2lnbmFibGU8VD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJOb3QgY29tcGxp
YW50IHdpdGggc3RkOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlOyAiCisgICAgICAgICAg
ICAgICAgIlN0YW5kYXJkOiBmYWxzZSwgSW1wbGVtZW50YXRpb246IHRydWUiKTsKKyAgc3RhdGlj
X2Fzc2VydChjb21wbGlhbnQgfHwgIXN0ZDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxU
Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIk5vdCBjb21wbGlhbnQgd2l0aCBzdGQ6OmlzX3Ry
aXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU7ICIKKyAgICAgICAgICAgICAgICAiU3RhbmRhcmQ6IHRy
dWUsIEltcGxlbWVudGF0aW9uOiBmYWxzZSIpOworI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX0lT
X1RSSVZJQUxMWV9BU1NJR05BQkxFCit9OworCiAvLyBpc190cml2aWFsbHlfY29weV9hc3NpZ25h
YmxlKCkKIC8vCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBhc3NlZCB0eXBlIGBUYCBpcyB0
cml2aWFsbHkgY29weSBhc3NpZ25hYmxlLgpAQCAtMzQxLDYgKzQ2MSw0OSBAQCBzdHJ1Y3QgaXNf
dHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZQogI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX0lTX1RS
SVZJQUxMWV9BU1NJR05BQkxFCiB9OwogCituYW1lc3BhY2UgdHlwZV90cmFpdHNfaW50ZXJuYWwg
eworLy8gaXNfdHJpdmlhbGx5X2NvcHlhYmxlKCkKKy8vCisvLyBEZXRlcm1pbmVzIHdoZXRoZXIg
dGhlIHBhc3NlZCB0eXBlIGBUYCBpcyB0cml2aWFsbHkgY29weWFibGUuCisvLworLy8gVGhpcyBt
ZXRhZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciB0
aGUgQysrMTEKKy8vIGBzdGQ6OmlzX3RyaXZpYWxseV9jb3B5YWJsZSgpYCBtZXRhZnVuY3Rpb24g
Zm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUKKy8vIGluY29tcGxldGUgQysrMTEgc3VwcG9ydCAoc3Vj
aCBhcyBsaWJzdGRjKysgNC54KS4gV2UgdXNlIHRoZSBDKysxNyBkZWZpbml0aW9uCisvLyBvZiBU
cml2aWFsbHlDb3B5YWJsZS4KKy8vCisvLyBOT1RFOiBgaXNfdHJpdmlhbGx5X2NvcHlhYmxlPFQ+
Ojp2YWx1ZWAgaXMgYHRydWVgIGlmIGFsbCBvZiBUJ3MgY29weS9tb3ZlCisvLyBjb25zdHJ1Y3Rv
cnMvYXNzaWdubWVudCBvcGVyYXRvcnMgYXJlIHRyaXZpYWwgb3IgZGVsZXRlZCwgVCBoYXMgYXQg
bGVhc3QKKy8vIG9uZSBub24tZGVsZXRlZCBjb3B5L21vdmUgY29uc3RydWN0b3IvYXNzaWdubWVu
dCBvcGVyYXRvciwgYW5kIFQgaXMgdHJpdmlhbGx5CisvLyBkZXN0cnVjdGlibGUuIEFycmF5cyBv
ZiB0cml2aWFsbHkgY29weWFibGUgdHlwZXMgYXJlIHRyaXZpYWxseSBjb3B5YWJsZS4KKy8vCisv
LyBXZSBleHBvc2UgdGhpcyBtZXRhZnVuY3Rpb24gb25seSBmb3IgaW50ZXJuYWwgdXNlIHdpdGhp
biBhYnNsLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBpc190cml2aWFsbHlfY29weWFi
bGVfaW1wbCB7CisgIHVzaW5nIEV4dGVudHNSZW1vdmVkID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVf
YWxsX2V4dGVudHM8VD46OnR5cGU7CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBrSXNDb3B5T3JN
b3ZlQ29uc3RydWN0aWJsZSA9CisgICAgICBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxFeHRl
bnRzUmVtb3ZlZD46OnZhbHVlIHx8CisgICAgICBzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxF
eHRlbnRzUmVtb3ZlZD46OnZhbHVlOworICBzdGF0aWMgY29uc3RleHByIGJvb2wga0lzQ29weU9y
TW92ZUFzc2lnbmFibGUgPQorICAgICAgYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPEV4dGVudHNS
ZW1vdmVkPjo6dmFsdWUgfHwKKyAgICAgIGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxFeHRlbnRz
UmVtb3ZlZD46OnZhbHVlOworCisgcHVibGljOgorICBzdGF0aWMgY29uc3RleHByIGJvb2wga1Zh
bHVlID0KKyAgICAgIChfX2hhc190cml2aWFsX2NvcHkoRXh0ZW50c1JlbW92ZWQpIHx8ICFrSXND
b3B5T3JNb3ZlQ29uc3RydWN0aWJsZSkgJiYKKyAgICAgIChfX2hhc190cml2aWFsX2Fzc2lnbihF
eHRlbnRzUmVtb3ZlZCkgfHwgIWtJc0NvcHlPck1vdmVBc3NpZ25hYmxlKSAmJgorICAgICAgKGtJ
c0NvcHlPck1vdmVDb25zdHJ1Y3RpYmxlIHx8IGtJc0NvcHlPck1vdmVBc3NpZ25hYmxlKSAmJgor
ICAgICAgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxFeHRlbnRzUmVtb3ZlZD46OnZhbHVlICYm
CisgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciB0aGlzIGV4cGxpY2l0bHkgYmVjYXVzZSBv
dGhlcndpc2Ugd2UnbGwgc2F5CisgICAgICAvLyByZWZlcmVuY2VzIGFyZSB0cml2aWFsIGNvcHlh
YmxlIHdoZW4gY29tcGlsZWQgYnkgTVNWQy4KKyAgICAgICFzdGQ6OmlzX3JlZmVyZW5jZTxFeHRl
bnRzUmVtb3ZlZD46OnZhbHVlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg
aXNfdHJpdmlhbGx5X2NvcHlhYmxlCisgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PAorICAg
ICAgICAgIGJvb2wsIHR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGVf
aW1wbDxUPjo6a1ZhbHVlPiB7fTsKK30gIC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0c19pbnRlcm5h
bAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gQysrMTQgIl90IiB0cmFpdCBhbGlhc2Vz
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDEzLDI0ICs1NzYsMTM5IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogdXNpbmcgcmVzdWx0X29mX3QgPSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9v
ZjxUPjo6dHlwZTsKIAogbmFtZXNwYWNlIHR5cGVfdHJhaXRzX2ludGVybmFsIHsKKy8vIEluIE1T
VkMgd2UgY2FuJ3QgcHJvYmUgc3RkOjpoYXNoIG9yIHN0ZGV4dDo6aGFzaCBiZWNhdXNlIGl0IHRy
aWdnZXJzIGEKKy8vIHN0YXRpY19hc3NlcnQgaW5zdGVhZCBvZiBmYWlsaW5nIHN1YnN0aXR1dGlv
bi4gTGliYysrIHByaW9yIHRvIDQuMAorLy8gYWxzbyB1c2VkIGEgc3RhdGljX2Fzc2VydC4KKy8v
CisjaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgKGRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSAmJiBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgIF9MSUJDUFBfVkVSU0lPTiA8IDQwMDAgJiYgX0xJ
QkNQUF9TVERfVkVSID4gMTEpCisjZGVmaW5lIEFCU0xfTUVUQV9JTlRFUk5BTF9TVERfSEFTSF9T
RklOQUVfRlJJRU5ETFlfIDAKKyNlbHNlCisjZGVmaW5lIEFCU0xfTUVUQV9JTlRFUk5BTF9TVERf
SEFTSF9TRklOQUVfRlJJRU5ETFlfIDEKKyNlbmRpZgorCisjaWYgIUFCU0xfTUVUQV9JTlRFUk5B
TF9TVERfSEFTSF9TRklOQUVfRlJJRU5ETFlfCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSA9IHNpemVfdD4KK3N0cnVjdCBJc0hhc2hhYmxlIDogc3RkOjp0cnVlX3R5cGUge307Cisj
ZWxzZSAgIC8vIEFCU0xfTUVUQV9JTlRFUk5BTF9TVERfSEFTSF9TRklOQUVfRlJJRU5ETFlfCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSA9IHZvaWQ+CiBzdHJ1Y3QgSXNIYXNoYWJs
ZSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEtleT4KLXN0cnVj
dCBJc0hhc2hhYmxlPEtleSwKLSAgICAgICAgICAgICAgICAgIGRlY2x0eXBlKHN0ZDo6ZGVjbHZh
bDxzdGQ6Omhhc2g8S2V5Pj4oKShzdGQ6OmRlY2x2YWw8S2V5PigpKSk+Ci0gICAgOiBzdGQ6OnRy
dWVfdHlwZSB7fTsKK3N0cnVjdCBJc0hhc2hhYmxlPAorICAgIEtleSwKKyAgICBhYnNsOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlPAorICAgICAgICBkZWNsdHlwZShzdGQ6OmRlY2x2
YWw8c3RkOjpoYXNoPEtleT4mPigpKHN0ZDo6ZGVjbHZhbDxLZXkgY29uc3QmPigpKSksCisgICAg
ICAgIHN0ZDo6c2l6ZV90Pjo6dmFsdWU+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworI2VuZGlmICAv
LyAhQUJTTF9NRVRBX0lOVEVSTkFMX1NURF9IQVNIX1NGSU5BRV9GUklFTkRMWV8KKworc3RydWN0
IEFzc2VydEhhc2hFbmFibGVkSGVscGVyIHsKKyBwcml2YXRlOgorICBzdGF0aWMgdm9pZCBTaW5r
KC4uLikge30KKyAgc3RydWN0IE5BVCB7fTsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgS2V5PgorICBz
dGF0aWMgYXV0byBHZXRSZXR1cm5UeXBlKGludCkKKyAgICAgIC0+IGRlY2x0eXBlKHN0ZDo6ZGVj
bHZhbDxzdGQ6Omhhc2g8S2V5Pj4oKShzdGQ6OmRlY2x2YWw8S2V5IGNvbnN0Jj4oKSkpOworICB0
ZW1wbGF0ZSA8Y2xhc3MgS2V5PgorICBzdGF0aWMgTkFUIEdldFJldHVyblR5cGUoLi4uKTsKKwor
ICB0ZW1wbGF0ZSA8Y2xhc3MgS2V5PgorICBzdGF0aWMgc3RkOjpudWxscHRyX3QgRG9JdCgpIHsK
KyAgICBzdGF0aWNfYXNzZXJ0KElzSGFzaGFibGU8S2V5Pjo6dmFsdWUsCisgICAgICAgICAgICAg
ICAgICAic3RkOjpoYXNoPEtleT4gZG9lcyBub3QgcHJvdmlkZSBhIGNhbGwgb3BlcmF0b3IiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KAorICAgICAgICBzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJs
ZTxzdGQ6Omhhc2g8S2V5Pj46OnZhbHVlLAorICAgICAgICAic3RkOjpoYXNoPEtleT4gbXVzdCBi
ZSBkZWZhdWx0IGNvbnN0cnVjdGlibGUgd2hlbiBpdCBpcyBlbmFibGVkIik7CisgICAgc3RhdGlj
X2Fzc2VydCgKKyAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8c3RkOjpoYXNoPEtl
eT4+Ojp2YWx1ZSwKKyAgICAgICAgInN0ZDo6aGFzaDxLZXk+IG11c3QgYmUgY29weSBjb25zdHJ1
Y3RpYmxlIHdoZW4gaXQgaXMgZW5hYmxlZCIpOworICAgIHN0YXRpY19hc3NlcnQoYWJzbDo6aXNf
Y29weV9hc3NpZ25hYmxlPHN0ZDo6aGFzaDxLZXk+Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAg
ICAic3RkOjpoYXNoPEtleT4gbXVzdCBiZSBjb3B5IGFzc2lnbmFibGUgd2hlbiBpdCBpcyBlbmFi
bGVkIik7CisgICAgLy8gaXNfZGVzdHJ1Y3RpYmxlIGlzIHVuY2hlY2tlZCBhcyBpdCdzIGltcGxp
ZWQgYnkgZWFjaCBvZiB0aGUKKyAgICAvLyBpc19jb25zdHJ1Y3RpYmxlIGNoZWNrcy4KKyAgICB1
c2luZyBSZXR1cm5UeXBlID0gZGVjbHR5cGUoR2V0UmV0dXJuVHlwZTxLZXk+KDApKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxSZXR1cm5UeXBlLCBOQVQ+Ojp2YWx1ZSB8fAorICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTxSZXR1cm5UeXBlLCBzaXplX3Q+Ojp2YWx1
ZSwKKyAgICAgICAgICAgICAgICAgICJzdGQ6Omhhc2g8S2V5PiBtdXN0IHJldHVybiBzaXplX3Qi
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcy4uLiBUcz4K
KyAgZnJpZW5kIHZvaWQgQXNzZXJ0SGFzaEVuYWJsZWQoKTsKK307CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBLZXk+Ci1zdHJ1Y3QgSXNIYXNoRW5hYmxlZAotICAgIDogYWJzbDo6Y29uanVuY3Rpb248
c3RkOjppc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8c3RkOjpoYXNoPEtleT4+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8c3RkOjpoYXNoPEtleT4+
LAotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19kZXN0cnVjdGlibGU8c3RkOjpoYXNo
PEtleT4+LAotICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6aXNfY29weV9hc3NpZ25hYmxl
PHN0ZDo6aGFzaDxLZXk+PiwKLSAgICAgICAgICAgICAgICAgICAgICAgIElzSGFzaGFibGU8S2V5
Pj4ge307Cit0ZW1wbGF0ZSA8Y2xhc3MuLi4gVHM+CitpbmxpbmUgdm9pZCBBc3NlcnRIYXNoRW5h
YmxlZCgpIHsKKyAgdXNpbmcgSGVscGVyID0gQXNzZXJ0SGFzaEVuYWJsZWRIZWxwZXI7CisgIEhl
bHBlcjo6U2luayhIZWxwZXI6OkRvSXQ8VHM+KCkuLi4pOworfQogCiB9ICAvLyBuYW1lc3BhY2Ug
dHlwZV90cmFpdHNfaW50ZXJuYWwKIAorLy8gQW4gaW50ZXJuYWwgbmFtZXNwYWNlIHRoYXQgaXMg
cmVxdWlyZWQgdG8gaW1wbGVtZW50IHRoZSBDKysxNyBzd2FwIHRyYWl0cy4KKy8vIEl0IGlzIG5v
dCBmdXJ0aGVyIG5lc3RlZCBpbiB0eXBlX3RyYWl0c19pbnRlcm5hbCB0byBhdm9pZCBsb25nIHN5
bWJvbCBuYW1lcy4KK25hbWVzcGFjZSBzd2FwX2ludGVybmFsIHsKKworLy8gTmVjZXNzYXJ5IGZv
ciB0aGUgdHJhaXRzLgordXNpbmcgc3RkOjpzd2FwOworCisvLyBUaGlzIGRlY2xhcmF0aW9uIHBy
ZXZlbnRzIGdsb2JhbCBgc3dhcGAgYW5kIGBhYnNsOjpzd2FwYCBvdmVybG9hZHMgZnJvbSBiZWlu
ZworLy8gY29uc2lkZXJlZCB1bmxlc3MgQURMIHBpY2tzIHRoZW0gdXAuCit2b2lkIHN3YXAoKTsK
KwordGVtcGxhdGUgPGNsYXNzIFQ+Cit1c2luZyBJc1N3YXBwYWJsZUltcGwgPSBkZWNsdHlwZShz
d2FwKHN0ZDo6ZGVjbHZhbDxUJj4oKSwgc3RkOjpkZWNsdmFsPFQmPigpKSk7CisKKy8vIE5PVEU6
IFRoaXMgZGFuY2Ugd2l0aCB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSBwYXJhbWV0ZXIgaXMgZm9yIE1T
VkMuCit0ZW1wbGF0ZSA8Y2xhc3MgVCwKKyAgICAgICAgICBjbGFzcyBJc05vZXhjZXB0ID0gc3Rk
OjppbnRlZ3JhbF9jb25zdGFudDwKKyAgICAgICAgICAgICAgYm9vbCwgbm9leGNlcHQoc3dhcChz
dGQ6OmRlY2x2YWw8VCY+KCksIHN0ZDo6ZGVjbHZhbDxUJj4oKSkpPj4KK3VzaW5nIElzTm90aHJv
d1N3YXBwYWJsZUltcGwgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc05vZXhjZXB0Ojp2YWx1
ZT46OnR5cGU7CisKKy8vIElzU3dhcHBhYmxlCisvLworLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRo
ZSBzdGFuZGFyZCBzd2FwIGlkaW9tIGlzIGEgdmFsaWQgZXhwcmVzc2lvbiBmb3IKKy8vIGFyZ3Vt
ZW50cyBvZiB0eXBlIGBUYC4KK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IElzU3dhcHBhYmxl
CisgICAgOiBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfZGV0ZWN0ZWQ8SXNTd2FwcGFi
bGVJbXBsLCBUPiB7fTsKKworLy8gSXNOb3Rocm93U3dhcHBhYmxlCisvLworLy8gRGV0ZXJtaW5l
cyB3aGV0aGVyIHRoZSBzdGFuZGFyZCBzd2FwIGlkaW9tIGlzIGEgdmFsaWQgZXhwcmVzc2lvbiBm
b3IKKy8vIGFyZ3VtZW50cyBvZiB0eXBlIGBUYCBhbmQgaXMgbm9leGNlcHQuCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4KK3N0cnVjdCBJc05vdGhyb3dTd2FwcGFibGUKKyAgICA6IGFic2w6OnR5cGVfdHJh
aXRzX2ludGVybmFsOjppc19kZXRlY3RlZDxJc05vdGhyb3dTd2FwcGFibGVJbXBsLCBUPiB7fTsK
KworLy8gU3dhcCgpCisvLworLy8gUGVyZm9ybXMgdGhlIHN3YXAgaWRpb20gZnJvbSBhIG5hbWVz
cGFjZSB3aGVyZSB2YWxpZCBjYW5kaWRhdGVzIG1heSBvbmx5IGJlCisvLyBmb3VuZCBpbiBgc3Rk
YCBvciB2aWEgQURMLgordGVtcGxhdGUgPGNsYXNzIFQsIGFic2w6OmVuYWJsZV9pZl90PElzU3dh
cHBhYmxlPFQ+Ojp2YWx1ZSwgaW50PiA9IDA+Cit2b2lkIFN3YXAoVCYgbGhzLCBUJiByaHMpIG5v
ZXhjZXB0KElzTm90aHJvd1N3YXBwYWJsZTxUPjo6dmFsdWUpIHsKKyAgc3dhcChsaHMsIHJocyk7
Cit9CisKKy8vIFN0ZFN3YXBJc1VuY29uc3RyYWluZWQKKy8vCisvLyBTb21lIHN0YW5kYXJkIGxp
YnJhcnkgaW1wbGVtZW50YXRpb25zIGFyZSBicm9rZW4gaW4gdGhhdCB0aGV5IGRvIG5vdAorLy8g
Y29uc3RyYWluIGBzdGQ6OnN3YXBgLiBUaGlzIHdpbGwgZWZmZWN0aXZlbHkgdGVsbCB1cyBpZiB3
ZSBhcmUgZGVhbGluZyB3aXRoCisvLyBvbmUgb2YgdGhvc2UgaW1wbGVtZW50YXRpb25zLgordXNp
bmcgU3RkU3dhcElzVW5jb25zdHJhaW5lZCA9IElzU3dhcHBhYmxlPHZvaWQoKT47CisKK30gIC8v
IG5hbWVzcGFjZSBzd2FwX2ludGVybmFsCisKK25hbWVzcGFjZSB0eXBlX3RyYWl0c19pbnRlcm5h
bCB7CisKKy8vIE1ha2UgdGhlIHN3YXAtcmVsYXRlZCB0cmFpdHMvZnVuY3Rpb24gYWNjZXNzaWJs
ZSBmcm9tIHRoaXMgbmFtZXNwYWNlLgordXNpbmcgc3dhcF9pbnRlcm5hbDo6SXNOb3Rocm93U3dh
cHBhYmxlOwordXNpbmcgc3dhcF9pbnRlcm5hbDo6SXNTd2FwcGFibGU7Cit1c2luZyBzd2FwX2lu
dGVybmFsOjpTd2FwOwordXNpbmcgc3dhcF9pbnRlcm5hbDo6U3RkU3dhcElzVW5jb25zdHJhaW5l
ZDsKKworfSAgLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzX2ludGVybmFsCiB9ICAvLyBuYW1lc3Bh
Y2UgYWJzbAogCiAjZW5kaWYgIC8vIEFCU0xfTUVUQV9UWVBFX1RSQUlUU19IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWV0YS90eXBlX3RyYWl0c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90eXBlX3RyYWl0
c190ZXN0LmNjCmluZGV4IGY1MWY1ZGVkZWU0MzVkNjgzYjRiMmY1ZWIzMDEyYmQ2MWI1ZTJhYTMu
LmE3YTljNWM5MTdmZjIzYWMwNjU4NTE5YjVmNmZlZDJkMzNiMjQzN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21ldGEvdHlwZV90cmFpdHNfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRz
X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIx
NCw2ICsyMTQsMjkgQEAgY2xhc3MgRGVsZXRlZERlZmF1bHRDdG9yIHsKICAgaW50IG5fOwogfTsK
IAorY2xhc3MgVHJpdmlhbE1vdmVDdG9yIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFRyaXZpYWxN
b3ZlQ3RvcihpbnQgbikgOiBuXyhuKSB7fQorICBUcml2aWFsTW92ZUN0b3IoVHJpdmlhbE1vdmVD
dG9yJiYpID0gZGVmYXVsdDsKKyAgVHJpdmlhbE1vdmVDdG9yJiBvcGVyYXRvcj0oY29uc3QgVHJp
dmlhbE1vdmVDdG9yJiB0KSB7CisgICAgbl8gPSB0Lm5fOworICAgIHJldHVybiAqdGhpczsKKyAg
fQorCisgcHJpdmF0ZToKKyAgaW50IG5fOworfTsKKworY2xhc3MgTm9udHJpdmlhbE1vdmVDdG9y
IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IE5vbnRyaXZpYWxNb3ZlQ3RvcihpbnQgbikgOiBuXyhu
KSB7fQorICBOb250cml2aWFsTW92ZUN0b3IoTm9udHJpdmlhbE1vdmVDdG9yJiYgdCkgbm9leGNl
cHQgOiBuXyh0Lm5fKSB7fQorICBOb250cml2aWFsTW92ZUN0b3ImIG9wZXJhdG9yPShjb25zdCBO
b250cml2aWFsTW92ZUN0b3ImKSA9IGRlZmF1bHQ7CisKKyBwcml2YXRlOgorICBpbnQgbl87Cit9
OworCiBjbGFzcyBUcml2aWFsQ29weUN0b3IgewogIHB1YmxpYzoKICAgZXhwbGljaXQgVHJpdmlh
bENvcHlDdG9yKGludCBuKSA6IG5fKG4pIHt9CkBAIC0yNDcsNiArMjcwLDI5IEBAIGNsYXNzIERl
bGV0ZWRDb3B5Q3RvciB7CiAgIGludCBuXzsKIH07CiAKK2NsYXNzIFRyaXZpYWxNb3ZlQXNzaWdu
IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFRyaXZpYWxNb3ZlQXNzaWduKGludCBuKSA6IG5fKG4p
IHt9CisgIFRyaXZpYWxNb3ZlQXNzaWduKGNvbnN0IFRyaXZpYWxNb3ZlQXNzaWduJiB0KSA6IG5f
KHQubl8pIHt9CisgIFRyaXZpYWxNb3ZlQXNzaWduJiBvcGVyYXRvcj0oVHJpdmlhbE1vdmVBc3Np
Z24mJikgPSBkZWZhdWx0OworICB+VHJpdmlhbE1vdmVBc3NpZ24oKSB7fSAgLy8gY2FuIGhhdmUg
bm9udHJpdmlhbCBkZXN0cnVjdG9yCisgcHJpdmF0ZToKKyAgaW50IG5fOworfTsKKworY2xhc3Mg
Tm9udHJpdmlhbE1vdmVBc3NpZ24geworIHB1YmxpYzoKKyAgZXhwbGljaXQgTm9udHJpdmlhbE1v
dmVBc3NpZ24oaW50IG4pIDogbl8obikge30KKyAgTm9udHJpdmlhbE1vdmVBc3NpZ24oY29uc3Qg
Tm9udHJpdmlhbE1vdmVBc3NpZ24mKSA9IGRlZmF1bHQ7CisgIE5vbnRyaXZpYWxNb3ZlQXNzaWdu
JiBvcGVyYXRvcj0oTm9udHJpdmlhbE1vdmVBc3NpZ24mJiB0KSBub2V4Y2VwdCB7CisgICAgbl8g
PSB0Lm5fOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgcHJpdmF0ZToKKyAgaW50IG5fOwor
fTsKKwogY2xhc3MgVHJpdmlhbENvcHlBc3NpZ24gewogIHB1YmxpYzoKICAgZXhwbGljaXQgVHJp
dmlhbENvcHlBc3NpZ24oaW50IG4pIDogbl8obikge30KQEAgLTI4MCwxMCArMzI2LDIwIEBAIGNs
YXNzIERlbGV0ZWRDb3B5QXNzaWduIHsKICAgaW50IG5fOwogfTsKIAotc3RydWN0IE5vbkNvcHlh
YmxlIHsKLSAgTm9uQ29weWFibGUoKSA9IGRlZmF1bHQ7Ci0gIE5vbkNvcHlhYmxlKGNvbnN0IE5v
bkNvcHlhYmxlJikgPSBkZWxldGU7Ci0gIE5vbkNvcHlhYmxlJiBvcGVyYXRvcj0oY29uc3QgTm9u
Q29weWFibGUmKSA9IGRlbGV0ZTsKK3N0cnVjdCBNb3ZhYmxlTm9uQ29weWFibGUgeworICBNb3Zh
YmxlTm9uQ29weWFibGUoKSA9IGRlZmF1bHQ7CisgIE1vdmFibGVOb25Db3B5YWJsZShjb25zdCBN
b3ZhYmxlTm9uQ29weWFibGUmKSA9IGRlbGV0ZTsKKyAgTW92YWJsZU5vbkNvcHlhYmxlKE1vdmFi
bGVOb25Db3B5YWJsZSYmKSA9IGRlZmF1bHQ7CisgIE1vdmFibGVOb25Db3B5YWJsZSYgb3BlcmF0
b3I9KGNvbnN0IE1vdmFibGVOb25Db3B5YWJsZSYpID0gZGVsZXRlOworICBNb3ZhYmxlTm9uQ29w
eWFibGUmIG9wZXJhdG9yPShNb3ZhYmxlTm9uQ29weWFibGUmJikgPSBkZWZhdWx0OworfTsKKwor
c3RydWN0IE5vbkNvcHlhYmxlT3JNb3ZhYmxlIHsKKyAgTm9uQ29weWFibGVPck1vdmFibGUoKSA9
IGRlZmF1bHQ7CisgIE5vbkNvcHlhYmxlT3JNb3ZhYmxlKGNvbnN0IE5vbkNvcHlhYmxlT3JNb3Zh
YmxlJikgPSBkZWxldGU7CisgIE5vbkNvcHlhYmxlT3JNb3ZhYmxlKE5vbkNvcHlhYmxlT3JNb3Zh
YmxlJiYpID0gZGVsZXRlOworICBOb25Db3B5YWJsZU9yTW92YWJsZSYgb3BlcmF0b3I9KGNvbnN0
IE5vbkNvcHlhYmxlT3JNb3ZhYmxlJikgPSBkZWxldGU7CisgIE5vbkNvcHlhYmxlT3JNb3ZhYmxl
JiBvcGVyYXRvcj0oTm9uQ29weWFibGVPck1vdmFibGUmJikgPSBkZWxldGU7CiB9OwogCiBjbGFz
cyBCYXNlIHsKQEAgLTMyOSw2ICszODUsMjIgQEAgY2xhc3MgQmFzZSB7CiAjZGVmaW5lIEFCU0xf
R0NDX0JVR19UUklWSUFMTFlfQ09OU1RSVUNUSUJMRV9PTl9BUlJBWV9PRl9OT05UUklWSUFMIDEK
ICNlbmRpZgogCitURVNUKFR5cGVUcmFpdHNUZXN0LCBUZXN0SXNGdW5jdGlvbikgeworICBzdHJ1
Y3QgQ2FsbGFibGUgeworICAgIHZvaWQgb3BlcmF0b3IoKSgpIHt9CisgIH07CisgIEVYUEVDVF9U
UlVFKGFic2w6OmlzX2Z1bmN0aW9uPHZvaWQoKT46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6aXNfZnVuY3Rpb248dm9pZCgpJj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNf
ZnVuY3Rpb248dm9pZCgpIGNvbnN0Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19m
dW5jdGlvbjx2b2lkKCkgbm9leGNlcHQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6Omlz
X2Z1bmN0aW9uPHZvaWQoLi4uKSBub2V4Y2VwdD46OnZhbHVlKTsKKworICBFWFBFQ1RfRkFMU0Uo
YWJzbDo6aXNfZnVuY3Rpb248dm9pZCgqKSgpPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJz
bDo6aXNfZnVuY3Rpb248dm9pZCgmKSgpPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6
aXNfZnVuY3Rpb248aW50Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfZnVuY3Rp
b248Q2FsbGFibGU+Ojp2YWx1ZSk7Cit9CisKIFRFU1QoVHlwZVRyYWl0c1Rlc3QsIFRlc3RUcml2
aWFsRGVzdHJ1Y3RvcikgewogICAvLyBWZXJpZnkgdGhhdCBhcml0aG1ldGljIHR5cGVzIGFuZCBw
b2ludGVycyBoYXZlIHRyaXZpYWwgZGVzdHJ1Y3RvcnMuCiAgIEVYUEVDVF9UUlVFKGFic2w6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8Ym9vbD46OnZhbHVlKTsKQEAgLTQ3NCw2ICs1NDYsNzkg
QEAgVEVTVChUeXBlVHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxEZWZhdWx0Q3RvcikgewogI2VuZGlm
CiB9CiAKK1RFU1QoVHlwZVRyYWl0c1Rlc3QsIFRlc3RUcml2aWFsTW92ZUN0b3IpIHsKKyAgLy8g
VmVyaWZ5IHRoYXQgYXJpdGhtZXRpYyB0eXBlcyBhbmQgcG9pbnRlcnMgaGF2ZSB0cml2aWFsIG1v
dmUKKyAgLy8gY29uc3RydWN0b3JzLgorICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlf
bW92ZV9jb25zdHJ1Y3RpYmxlPGJvb2w+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6Omlz
X3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8Y2hhcj46OnZhbHVlKTsKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTx1bnNpZ25lZCBjaGFyPjo6
dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3Rp
YmxlPHNpZ25lZCBjaGFyPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFs
bHlfbW92ZV9jb25zdHJ1Y3RpYmxlPHdjaGFyX3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8aW50Pjo6dmFsdWUpOworICBFWFBF
Q1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPHVuc2lnbmVkIGlu
dD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3Ry
dWN0aWJsZTxpbnQxNl90Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFs
bHlfbW92ZV9jb25zdHJ1Y3RpYmxlPHVpbnQxNl90Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShh
YnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPGludDY0X3Q+Ojp2YWx1ZSk7Cisg
IEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8dWludDY0
X3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0
cnVjdGlibGU8ZmxvYXQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxs
eV9tb3ZlX2NvbnN0cnVjdGlibGU8ZG91YmxlPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNs
Ojppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPGxvbmcgZG91YmxlPjo6dmFsdWUpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPHN0ZDo6
c3RyaW5nKj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVf
Y29uc3RydWN0aWJsZTxUcml2aWFsKj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNf
dHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxjb25zdCBzdGQ6OnN0cmluZyo+Ojp2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8Y29u
c3QgVHJpdmlhbCo+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9t
b3ZlX2NvbnN0cnVjdGlibGU8c3RkOjpzdHJpbmcqKj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUo
YWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxUcml2aWFsKio+Ojp2YWx1ZSk7
CisKKyAgLy8gUmVmZXJlbmNlIHR5cGVzCisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxs
eV9tb3ZlX2NvbnN0cnVjdGlibGU8aW50Jj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxpbnQmJj46OnZhbHVlKTsKKworICAvLyB0
eXBlcyB3aXRoIGNvbXBpbGVyIGdlbmVyYXRlZCBtb3ZlIGN0b3JzCisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8VHJpdmlhbD46OnZhbHVlKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxUcml2aWFs
TW92ZUN0b3I+Ojp2YWx1ZSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgdHlwZXMgd2l0aG91dCB0aGVt
IChpLmUuIG5vbnRyaXZpYWwgb3IgZGVsZXRlZCkgYXJlIG5vdC4KKyAgRVhQRUNUX0ZBTFNFKAor
ICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxOb250cml2aWFsQ29w
eUN0b3I+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9j
b25zdHJ1Y3RpYmxlPERlbGV0ZWRDb3B5Q3Rvcj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKAor
ICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxOb25Db3B5YWJsZU9y
TW92YWJsZT46OnZhbHVlKTsKKworI2lmZGVmIEFCU0xfVFJJVklBTExZX0NPTlNUUlVDVElCTEVf
VkVSSUZZX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUKKyAgLy8gdHlwZSB3aXRoIG5vbnRyaXZpYWwg
ZGVzdHJ1Y3RvciBhcmUgbm9udHJpdmlhbCBtb3ZlIGNvbnN0cnVidGlibGUKKyAgRVhQRUNUX0ZB
TFNFKAorICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxOb250cml2
aWFsRGVzdHJ1Y3Rvcj46OnZhbHVlKTsKKyNlbmRpZgorCisgIC8vIHR5cGVzIHdpdGggdnRhYmxl
cworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxC
YXNlPjo6dmFsdWUpOworCisgIC8vIFZlcmlmeSB0aGF0IHNpbXBsZV9wYWlyIG9mIHN1Y2ggdHlw
ZXMgaXMgdHJpdmlhbGx5IG1vdmUgY29uc3RydWN0aWJsZQorICBFWFBFQ1RfVFJVRSgKKyAgICAg
IChhYnNsOjppc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPHNpbXBsZV9wYWlyPGludCwg
Y2hhcio+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKAorICAgICAgYWJzbDo6aXNfdHJpdmlh
bGx5X21vdmVfY29uc3RydWN0aWJsZTxzaW1wbGVfcGFpcjxpbnQsIFRyaXZpYWw+Pjo6dmFsdWUp
KTsKKyAgRVhQRUNUX1RSVUUoKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8
CisgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxpbnQsIFRyaXZpYWxNb3ZlQ3Rvcj4+Ojp2YWx1
ZSkpOworCisgIC8vIFZlcmlmeSB0aGF0IHR5cGVzIHdpdGhvdXQgdHJpdmlhbCBtb3ZlIGNvbnN0
cnVjdG9ycyBhcmUKKyAgLy8gY29ycmVjdGx5IG1hcmtlZCBhcyBzdWNoLgorICBFWFBFQ1RfRkFM
U0UoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxzdGQ6OnN0cmluZz46OnZh
bHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGli
bGU8c3RkOjp2ZWN0b3I8aW50Pj46OnZhbHVlKTsKKworICAvLyBWZXJpZnkgdGhhdCBzaW1wbGVf
cGFpcnMgb2YgdHlwZXMgd2l0aG91dCB0cml2aWFsIG1vdmUgY29uc3RydWN0b3JzCisgIC8vIGFy
ZSBub3QgbWFya2VkIGFzIHRyaXZpYWwuCisgIEVYUEVDVF9GQUxTRSgoYWJzbDo6aXNfdHJpdmlh
bGx5X21vdmVfY29uc3RydWN0aWJsZTwKKyAgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxpbnQs
IHN0ZDo6c3RyaW5nPj46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoYWJzbDo6aXNfdHJpdmlh
bGx5X21vdmVfY29uc3RydWN0aWJsZTwKKyAgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxzdGQ6
OnN0cmluZywgaW50Pj46OnZhbHVlKSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgYXJyYXlzIGFyZSBu
b3QKKyAgdXNpbmcgaW50MTAgPSBpbnRbMTBdOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJp
dmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxpbnQxMD46OnZhbHVlKTsKK30KKwogVEVTVChUeXBl
VHJhaXRzVGVzdCwgVGVzdFRyaXZpYWxDb3B5Q3RvcikgewogICAvLyBWZXJpZnkgdGhhdCBhcml0
aG1ldGljIHR5cGVzIGFuZCBwb2ludGVycyBoYXZlIHRyaXZpYWwgY29weQogICAvLyBjb25zdHJ1
Y3RvcnMuCkBAIC00OTgsNiArNjQzLDEwIEBAIFRFU1QoVHlwZVRyYWl0c1Rlc3QsIFRlc3RUcml2
aWFsQ29weUN0b3IpIHsKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29u
c3RydWN0aWJsZTxzdGQ6OnN0cmluZyoqPjo6dmFsdWUpOwogICBFWFBFQ1RfVFJVRShhYnNsOjpp
c190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPFRyaXZpYWwqKj46OnZhbHVlKTsKIAorICAv
LyBSZWZlcmVuY2UgdHlwZXMKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlf
Y29uc3RydWN0aWJsZTxpbnQmPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJp
dmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxpbnQmJj46OnZhbHVlKTsKKwogICAvLyB0eXBlcyB3
aXRoIGNvbXBpbGVyIGdlbmVyYXRlZCBjb3B5IGN0b3JzCiAgIEVYUEVDVF9UUlVFKGFic2w6Omlz
X3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8VHJpdmlhbD46OnZhbHVlKTsKICAgRVhQRUNU
X1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxUcml2aWFsQ29weUN0
b3I+Ojp2YWx1ZSk7CkBAIC01MDcsNyArNjU2LDkgQEAgVEVTVChUeXBlVHJhaXRzVGVzdCwgVGVz
dFRyaXZpYWxDb3B5Q3RvcikgewogICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3Ry
dWN0aWJsZTxOb250cml2aWFsQ29weUN0b3I+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9GQUxTRShhYnNs
Ojppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPERlbGV0ZWRDb3B5Q3Rvcj46OnZhbHVl
KTsKICAgRVhQRUNUX0ZBTFNFKAotICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3Ry
dWN0aWJsZTxOb25Db3B5YWJsZT46OnZhbHVlKTsKKyAgICAgIGFic2w6OmlzX3RyaXZpYWxseV9j
b3B5X2NvbnN0cnVjdGlibGU8TW92YWJsZU5vbkNvcHlhYmxlPjo6dmFsdWUpOworICBFWFBFQ1Rf
RkFMU0UoCisgICAgICBhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPE5vbkNv
cHlhYmxlT3JNb3ZhYmxlPjo6dmFsdWUpOwogCiAjaWZkZWYgQUJTTF9UUklWSUFMTFlfQ09OU1RS
VUNUSUJMRV9WRVJJRllfVFJJVklBTExZX0RFU1RSVUNUSUJMRQogICAvLyB0eXBlIHdpdGggbm9u
dHJpdmlhbCBkZXN0cnVjdG9yIGFyZSBub250cml2aWFsIGNvcHkgY29uc3RydWJ0aWJsZQpAQCAt
NTQzLDYgKzY5NCw3NCBAQCBURVNUKFR5cGVUcmFpdHNUZXN0LCBUZXN0VHJpdmlhbENvcHlDdG9y
KSB7CiAgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxl
PGludDEwPjo6dmFsdWUpOwogfQogCitURVNUKFR5cGVUcmFpdHNUZXN0LCBUZXN0VHJpdmlhbE1v
dmVBc3NpZ24pIHsKKyAgLy8gVmVyaWZ5IHRoYXQgYXJpdGhtZXRpYyB0eXBlcyBhbmQgcG9pbnRl
cnMgaGF2ZSB0cml2aWFsIG1vdmUKKyAgLy8gYXNzaWdubWVudCBvcGVyYXRvcnMuCisgIEVYUEVD
VF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8Ym9vbD46OnZhbHVlKTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxjaGFyPjo6
dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxl
PHVuc2lnbmVkIGNoYXI+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxs
eV9tb3ZlX2Fzc2lnbmFibGU8c2lnbmVkIGNoYXI+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8d2NoYXJfdD46OnZhbHVlKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxpbnQ+Ojp2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8dW5zaWdu
ZWQgaW50Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9h
c3NpZ25hYmxlPGludDE2X3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZp
YWxseV9tb3ZlX2Fzc2lnbmFibGU8dWludDE2X3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8aW50NjRfdD46OnZhbHVlKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTx1aW50NjRfdD46OnZh
bHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxm
bG9hdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNz
aWduYWJsZTxkb3VibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxs
eV9tb3ZlX2Fzc2lnbmFibGU8bG9uZyBkb3VibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8c3RkOjpzdHJpbmcqPjo6dmFsdWUpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPFRyaXZpYWwq
Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25h
YmxlPGNvbnN0IHN0ZDo6c3RyaW5nKj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNf
dHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxjb25zdCBUcml2aWFsKj46OnZhbHVlKTsKKyAgRVhQ
RUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxzdGQ6OnN0cmluZyoq
Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25h
YmxlPFRyaXZpYWwqKj46OnZhbHVlKTsKKworICAvLyBjb25zdCBxdWFsaWZpZWQgdHlwZXMgYXJl
IG5vdCBhc3NpZ25hYmxlCisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9h
c3NpZ25hYmxlPGNvbnN0IGludD46OnZhbHVlKTsKKworICAvLyB0eXBlcyB3aXRoIGNvbXBpbGVy
IGdlbmVyYXRlZCBtb3ZlIGFzc2lnbm1lbnQKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlh
bGx5X21vdmVfYXNzaWduYWJsZTxUcml2aWFsPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNs
Ojppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPFRyaXZpYWxNb3ZlQXNzaWduPjo6dmFsdWUp
OworCisgIC8vIFZlcmlmeSB0aGF0IHR5cGVzIHdpdGhvdXQgdGhlbSAoaS5lLiBub250cml2aWFs
IG9yIGRlbGV0ZWQpIGFyZSBub3QuCisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlf
bW92ZV9hc3NpZ25hYmxlPE5vbnRyaXZpYWxDb3B5QXNzaWduPjo6dmFsdWUpOworICBFWFBFQ1Rf
RkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZTxEZWxldGVkQ29weUFzc2ln
bj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2ln
bmFibGU8Tm9uQ29weWFibGVPck1vdmFibGU+Ojp2YWx1ZSk7CisKKyAgLy8gdHlwZXMgd2l0aCB2
dGFibGVzCisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxl
PEJhc2U+Ojp2YWx1ZSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgc2ltcGxlX3BhaXIgaXMgdHJpdmlh
bGx5IGFzc2lnbmFibGUKKyAgRVhQRUNUX1RSVUUoCisgICAgICAoYWJzbDo6aXNfdHJpdmlhbGx5
X21vdmVfYXNzaWduYWJsZTxzaW1wbGVfcGFpcjxpbnQsIGNoYXIqPj46OnZhbHVlKSk7CisgIEVY
UEVDVF9UUlVFKAorICAgICAgKGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8c2lt
cGxlX3BhaXI8aW50LCBUcml2aWFsPj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChhYnNsOjpp
c190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlPAorICAgICAgICAgICAgICAgc2ltcGxlX3BhaXI8
aW50LCBUcml2aWFsTW92ZUFzc2lnbj4+Ojp2YWx1ZSkpOworCisgIC8vIFZlcmlmeSB0aGF0IHR5
cGVzIG5vdCB0cml2aWFsbHkgbW92ZSBhc3NpZ25hYmxlIGFyZQorICAvLyBjb3JyZWN0bHkgbWFy
a2VkIGFzIHN1Y2guCisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3Np
Z25hYmxlPHN0ZDo6c3RyaW5nPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJp
dmlhbGx5X21vdmVfYXNzaWduYWJsZTxzdGQ6OnZlY3RvcjxpbnQ+Pjo6dmFsdWUpOworCisgIC8v
IFZlcmlmeSB0aGF0IHNpbXBsZV9wYWlycyBvZiB0eXBlcyBub3QgdHJpdmlhbGx5IG1vdmUgYXNz
aWduYWJsZQorICAvLyBhcmUgbm90IG1hcmtlZCBhcyB0cml2aWFsLgorICBFWFBFQ1RfRkFMU0Uo
KGFic2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8CisgICAgICAgICAgICAgICAgc2lt
cGxlX3BhaXI8aW50LCBzdGQ6OnN0cmluZz4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKGFi
c2w6OmlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGU8CisgICAgICAgICAgICAgICAgc2ltcGxl
X3BhaXI8c3RkOjpzdHJpbmcsIGludD4+Ojp2YWx1ZSkpOworCisgIC8vIFZlcmlmeSB0aGF0IGFy
cmF5cyBhcmUgbm90IHRyaXZpYWxseSBtb3ZlIGFzc2lnbmFibGUKKyAgdXNpbmcgaW50MTAgPSBp
bnRbMTBdOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJs
ZTxpbnQxMD46OnZhbHVlKTsKKworICAvLyBWZXJpZnkgdGhhdCByZWZlcmVuY2VzIGFyZSBoYW5k
bGVkIGNvcnJlY3RseQorICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfbW92ZV9hc3Np
Z25hYmxlPFRyaXZpYWwmJj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlh
bGx5X21vdmVfYXNzaWduYWJsZTxUcml2aWFsJj46OnZhbHVlKTsKK30KKwogVEVTVChUeXBlVHJh
aXRzVGVzdCwgVGVzdFRyaXZpYWxDb3B5QXNzaWduKSB7CiAgIC8vIFZlcmlmeSB0aGF0IGFyaXRo
bWV0aWMgdHlwZXMgYW5kIHBvaW50ZXJzIGhhdmUgdHJpdmlhbCBjb3B5CiAgIC8vIGFzc2lnbm1l
bnQgb3BlcmF0b3JzLgpAQCAtNTc3LDcgKzc5Niw4IEBAIFRFU1QoVHlwZVRyYWl0c1Rlc3QsIFRl
c3RUcml2aWFsQ29weUFzc2lnbikgewogICAvLyBWZXJpZnkgdGhhdCB0eXBlcyB3aXRob3V0IHRo
ZW0gKGkuZS4gbm9udHJpdmlhbCBvciBkZWxldGVkKSBhcmUgbm90LgogICBFWFBFQ1RfRkFMU0Uo
YWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTxOb250cml2aWFsQ29weUFzc2lnbj46
OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFi
bGU8RGVsZXRlZENvcHlBc3NpZ24+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxTRShhYnNsOjppc190
cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPE5vbkNvcHlhYmxlPjo6dmFsdWUpOworICBFWFBFQ1Rf
RkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTxNb3ZhYmxlTm9uQ29weWFi
bGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfY29weV9hc3Np
Z25hYmxlPE5vbkNvcHlhYmxlT3JNb3ZhYmxlPjo6dmFsdWUpOwogCiAgIC8vIHR5cGVzIHdpdGgg
dnRhYmxlcwogICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJs
ZTxCYXNlPjo6dmFsdWUpOwpAQCAtNjExLDYgKzgzMSwxMTYgQEAgVEVTVChUeXBlVHJhaXRzVGVz
dCwgVGVzdFRyaXZpYWxDb3B5QXNzaWduKSB7CiAgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZp
YWxseV9jb3B5X2Fzc2lnbmFibGU8VHJpdmlhbCY+Ojp2YWx1ZSk7CiB9CiAKK1RFU1QoVHlwZVRy
YWl0c1Rlc3QsIFRlc3RUcml2aWFsbHlDb3B5YWJsZSkgeworICAvLyBWZXJpZnkgdGhhdCBhcml0
aG1ldGljIHR5cGVzIGFuZCBwb2ludGVycyBhcmUgdHJpdmlhbGx5IGNvcHlhYmxlLgorICBFWFBF
Q1RfVFJVRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxl
PGJvb2w+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFs
Ojppc190cml2aWFsbHlfY29weWFibGU8Y2hhcj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoCisg
ICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPHVu
c2lnbmVkIGNoYXI+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6dHlwZV90
cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxzaWduZWQgY2hhcj46OnZhbHVl
KTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNf
dHJpdmlhbGx5X2NvcHlhYmxlPHdjaGFyX3Q+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6
OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8aW50Pjo6dmFsdWUp
OworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190
cml2aWFsbHlfY29weWFibGU8dW5zaWduZWQgaW50Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgK
KyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8
aW50MTZfdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0
c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPHVpbnQxNl90Pjo6dmFsdWUpOworICBF
WFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFs
bHlfY29weWFibGU8aW50NjRfdD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNs
Ojp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPHVpbnQ2NF90Pjo6
dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJp
dmlhbGx5X2NvcHlhYmxlPGZsb2F0Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjp0eXBl
X3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPGRvdWJsZT46OnZhbHVlKTsK
KyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJp
dmlhbGx5X2NvcHlhYmxlPGxvbmcgZG91YmxlPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgKKyAg
ICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8c3Rk
OjpzdHJpbmcqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJh
aXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8VHJpdmlhbCo+Ojp2YWx1ZSk7Cisg
IEVYUEVDVF9UUlVFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29w
eWFibGU8CisgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nKj46OnZhbHVlKTsKKyAgRVhQ
RUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5
X2NvcHlhYmxlPGNvbnN0IFRyaXZpYWwqPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSgKKyAgICAg
IGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8c3RkOjpz
dHJpbmcqKj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0
c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPFRyaXZpYWwqKj46OnZhbHVlKTsKKwor
ICAvLyBjb25zdCBxdWFsaWZpZWQgdHlwZXMgYXJlIG5vdCBhc3NpZ25hYmxlIGJ1dCBhcmUgY29u
c3RydWN0aWJsZQorICBFWFBFQ1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVy
bmFsOjppc190cml2aWFsbHlfY29weWFibGU8Y29uc3QgaW50Pjo6dmFsdWUpOworCisgIC8vIFRy
aXZpYWwgY29weSBjb25zdHJ1Y3Rvci9hc3NpZ25tZW50IGFuZCBkZXN0cnVjdG9yLgorICBFWFBF
Q1RfVFJVRSgKKyAgICAgIGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlf
Y29weWFibGU8VHJpdmlhbD46OnZhbHVlKTsKKyAgLy8gVHJpdmlhbCBjb3B5IGFzc2lnbm1lbnQs
IGJ1dCBub24tdHJpdmlhbCBjb3B5IGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IuCisgIEVYUEVDVF9G
QUxTRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPAor
ICAgICAgICAgICAgICAgVHJpdmlhbENvcHlBc3NpZ24+Ojp2YWx1ZSk7CisgIC8vIFRyaXZpYWwg
Y29weSBjb25zdHJ1Y3RvciwgYnV0IG5vbi10cml2aWFsIGFzc2lnbm1lbnQuCisgIEVYUEVDVF9G
QUxTRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPAor
ICAgICAgICAgICAgICAgVHJpdmlhbENvcHlDdG9yPjo6dmFsdWUpOworCisgIC8vIFR5cGVzIHdp
dGggYSBub24tdHJpdmlhbCBjb3B5IGNvbnN0cnVjdG9yL2Fzc2lnbm1lbnQKKyAgRVhQRUNUX0ZB
TFNFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8Cisg
ICAgICAgICAgICAgICBOb250cml2aWFsQ29weUN0b3I+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxT
RShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlPAorICAg
ICAgICAgICAgICAgTm9udHJpdmlhbENvcHlBc3NpZ24+Ojp2YWx1ZSk7CisKKyAgLy8gVHlwZXMg
d2l0aG91dCBjb3B5IGNvbnN0cnVjdG9yL2Fzc2lnbm1lbnQsIGJ1dCB3aXRoIG1vdmUKKyAgLy8g
TVNWQyBkaXNhZ3JlZXMgd2l0aCBvdGhlciBjb21waWxlcnMgYWJvdXQgdGhpczoKKyAgLy8gRVhQ
RUNUX1RSVUUoYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJs
ZTwKKyAgLy8gICAgICAgICAgICAgTW92YWJsZU5vbkNvcHlhYmxlPjo6dmFsdWUpOworCisgIC8v
IFR5cGVzIHdpdGhvdXQgY29weS9tb3ZlIGNvbnN0cnVjdG9yL2Fzc2lnbm1lbnQKKyAgRVhQRUNU
X0ZBTFNFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8
CisgICAgICAgICAgICAgICBOb25Db3B5YWJsZU9yTW92YWJsZT46OnZhbHVlKTsKKworICAvLyBO
byBjb3B5IGFzc2lnbiwgYnV0IGhhcyB0cml2aWFsIGNvcHkgY29uc3RydWN0b3IuCisgIEVYUEVD
VF9UUlVFKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8
CisgICAgICAgICAgICAgIERlbGV0ZWRDb3B5QXNzaWduPjo6dmFsdWUpOworCisgIC8vIHR5cGVz
IHdpdGggdnRhYmxlcworICBFWFBFQ1RfRkFMU0UoYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6
OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxCYXNlPjo6dmFsdWUpOworCisgIC8vIFZlcmlmeSB0aGF0
IHNpbXBsZV9wYWlyIGlzIHRyaXZpYWxseSBjb3B5YWJsZSBpZiBtZW1iZXJzIGFyZQorICBFWFBF
Q1RfVFJVRSgoYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJs
ZTwKKyAgICAgICAgICAgICAgIHNpbXBsZV9wYWlyPGludCwgY2hhcio+Pjo6dmFsdWUpKTsKKyAg
RVhQRUNUX1RSVUUoKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29w
eWFibGU8CisgICAgICAgICAgICAgICBzaW1wbGVfcGFpcjxpbnQsIFRyaXZpYWw+Pjo6dmFsdWUp
KTsKKworICAvLyBWZXJpZnkgdGhhdCB0eXBlcyBub3QgdHJpdmlhbGx5IGNvcHlhYmxlIGFyZQor
ICAvLyBjb3JyZWN0bHkgbWFya2VkIGFzIHN1Y2guCisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIGFi
c2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8c3RkOjpzdHJp
bmc+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6
aXNfdHJpdmlhbGx5X2NvcHlhYmxlPAorICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50Pj46
OnZhbHVlKTsKKworICAvLyBWZXJpZnkgdGhhdCBzaW1wbGVfcGFpcnMgb2YgdHlwZXMgbm90IHRy
aXZpYWxseSBjb3B5YWJsZQorICAvLyBhcmUgbm90IG1hcmtlZCBhcyB0cml2aWFsLgorICBFWFBF
Q1RfRkFMU0UoKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFi
bGU8CisgICAgICAgICAgICAgICAgc2ltcGxlX3BhaXI8aW50LCBzdGQ6OnN0cmluZz4+Ojp2YWx1
ZSkpOworICBFWFBFQ1RfRkFMU0UoKGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjppc190cml2
aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgICAgc2ltcGxlX3BhaXI8c3RkOjpzdHJpbmcs
IGludD4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKGFic2w6OnR5cGVfdHJhaXRzX2ludGVy
bmFsOjppc190cml2aWFsbHlfY29weWFibGU8CisgICAgICAgICAgICAgICAgc2ltcGxlX3BhaXI8
aW50LCBUcml2aWFsQ29weUFzc2lnbj4+Ojp2YWx1ZSkpOworCisgIC8vIFZlcmlmeSB0aGF0IGFy
cmF5cyBvZiB0cml2aWFsbHkgY29weWFibGUgdHlwZXMgYXJlIHRyaXZpYWxseSBjb3B5YWJsZQor
ICB1c2luZyBpbnQxMCA9IGludFsxMF07CisgIEVYUEVDVF9UUlVFKGFic2w6OnR5cGVfdHJhaXRz
X2ludGVybmFsOjppc190cml2aWFsbHlfY29weWFibGU8aW50MTA+Ojp2YWx1ZSk7CisgIHVzaW5n
IGludDEweDEwID0gaW50WzEwXVsxMF07CisgIEVYUEVDVF9UUlVFKAorICAgICAgYWJzbDo6dHlw
ZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxpbnQxMHgxMD46OnZhbHVl
KTsKKworICAvLyBWZXJpZnkgdGhhdCByZWZlcmVuY2VzIGFyZSBoYW5kbGVkIGNvcnJlY3RseQor
ICBFWFBFQ1RfRkFMU0UoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfdHJp
dmlhbGx5X2NvcHlhYmxlPFRyaXZpYWwmJj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAg
ICAgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxUcml2
aWFsJj46OnZhbHVlKTsKK30KKwogI2RlZmluZSBBQlNMX0lOVEVSTkFMX0VYUEVDVF9BTElBU19F
UVVJVkFMRU5DRSh0cmFpdF9uYW1lLCAuLi4pICAgICAgICAgIFwKICAgRVhQRUNUX1RSVUUoKHN0
ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnRyYWl0X25hbWU8X19WQV9BUkdTX18+Ojp0eXBlLCBc
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dHJhaXRfbmFtZSMjX3Q8X19WQV9B
UkdTX18+Pjo6dmFsdWUpKQpAQCAtOTUzLDQgKzEyODMsODUgQEAgVEVTVChUeXBlVHJhaXRzVGVz
dCwgSXNNb3ZlQXNzaWduYWJsZSkgewogI2VuZGlmICAvLyBfTElCQ1BQX1ZFUlNJT04KIH0KIAor
bmFtZXNwYWNlIGFkbF9uYW1lc3BhY2UgeworCitzdHJ1Y3QgRGVsZXRlZFN3YXAgeworfTsKKwor
dm9pZCBzd2FwKERlbGV0ZWRTd2FwJiwgRGVsZXRlZFN3YXAmKSA9IGRlbGV0ZTsKKworc3RydWN0
IFNwZWNpYWxOb2V4Y2VwdFN3YXAgeworICBTcGVjaWFsTm9leGNlcHRTd2FwKFNwZWNpYWxOb2V4
Y2VwdFN3YXAmJikge30KKyAgU3BlY2lhbE5vZXhjZXB0U3dhcCYgb3BlcmF0b3I9KFNwZWNpYWxO
b2V4Y2VwdFN3YXAmJikgeyByZXR1cm4gKnRoaXM7IH0KKyAgflNwZWNpYWxOb2V4Y2VwdFN3YXAo
KSA9IGRlZmF1bHQ7Cit9OworCit2b2lkIHN3YXAoU3BlY2lhbE5vZXhjZXB0U3dhcCYsIFNwZWNp
YWxOb2V4Y2VwdFN3YXAmKSBub2V4Y2VwdCB7fQorCit9ICAvLyBuYW1lc3BhY2UgYWRsX25hbWVz
cGFjZQorCitURVNUKFR5cGVUcmFpdHNUZXN0LCBJc1N3YXBwYWJsZSkgeworICB1c2luZyBhYnNs
Ojp0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNTd2FwcGFibGU7CisgIHVzaW5nIGFic2w6OnR5cGVf
dHJhaXRzX2ludGVybmFsOjpTdGRTd2FwSXNVbmNvbnN0cmFpbmVkOworCisgIEVYUEVDVF9UUlVF
KElzU3dhcHBhYmxlPGludD46OnZhbHVlKTsKKworICBzdHJ1Y3QgUyB7fTsKKyAgRVhQRUNUX1RS
VUUoSXNTd2FwcGFibGU8Uz46OnZhbHVlKTsKKworICBzdHJ1Y3QgTm9Db25zdHJ1Y3QgeworICAg
IE5vQ29uc3RydWN0KE5vQ29uc3RydWN0JiYpID0gZGVsZXRlOworICAgIE5vQ29uc3RydWN0JiBv
cGVyYXRvcj0oTm9Db25zdHJ1Y3QmJikgeyByZXR1cm4gKnRoaXM7IH0KKyAgICB+Tm9Db25zdHJ1
Y3QoKSA9IGRlZmF1bHQ7CisgIH07CisKKyAgRVhQRUNUX0VRKElzU3dhcHBhYmxlPE5vQ29uc3Ry
dWN0Pjo6dmFsdWUsIFN0ZFN3YXBJc1VuY29uc3RyYWluZWQ6OnZhbHVlKTsKKyAgc3RydWN0IE5v
QXNzaWduIHsKKyAgICBOb0Fzc2lnbihOb0Fzc2lnbiYmKSB7fQorICAgIE5vQXNzaWduJiBvcGVy
YXRvcj0oTm9Bc3NpZ24mJikgPSBkZWxldGU7CisgICAgfk5vQXNzaWduKCkgPSBkZWZhdWx0Owor
ICB9OworCisgIEVYUEVDVF9FUShJc1N3YXBwYWJsZTxOb0Fzc2lnbj46OnZhbHVlLCBTdGRTd2Fw
SXNVbmNvbnN0cmFpbmVkOjp2YWx1ZSk7CisKKyAgRVhQRUNUX0ZBTFNFKElzU3dhcHBhYmxlPGFk
bF9uYW1lc3BhY2U6OkRlbGV0ZWRTd2FwPjo6dmFsdWUpOworCisgIEVYUEVDVF9UUlVFKElzU3dh
cHBhYmxlPGFkbF9uYW1lc3BhY2U6OlNwZWNpYWxOb2V4Y2VwdFN3YXA+Ojp2YWx1ZSk7Cit9CisK
K1RFU1QoVHlwZVRyYWl0c1Rlc3QsIElzTm90aHJvd1N3YXBwYWJsZSkgeworICB1c2luZyBhYnNs
Ojp0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNOb3Rocm93U3dhcHBhYmxlOworICB1c2luZyBhYnNs
Ojp0eXBlX3RyYWl0c19pbnRlcm5hbDo6U3RkU3dhcElzVW5jb25zdHJhaW5lZDsKKworICBFWFBF
Q1RfVFJVRShJc05vdGhyb3dTd2FwcGFibGU8aW50Pjo6dmFsdWUpOworCisgIHN0cnVjdCBOb25O
b2V4Y2VwdE1vdmVzIHsKKyAgICBOb25Ob2V4Y2VwdE1vdmVzKE5vbk5vZXhjZXB0TW92ZXMmJikg
e30KKyAgICBOb25Ob2V4Y2VwdE1vdmVzJiBvcGVyYXRvcj0oTm9uTm9leGNlcHRNb3ZlcyYmKSB7
IHJldHVybiAqdGhpczsgfQorICAgIH5Ob25Ob2V4Y2VwdE1vdmVzKCkgPSBkZWZhdWx0OworICB9
OworCisgIEVYUEVDVF9GQUxTRShJc05vdGhyb3dTd2FwcGFibGU8Tm9uTm9leGNlcHRNb3Zlcz46
OnZhbHVlKTsKKworICBzdHJ1Y3QgTm9Db25zdHJ1Y3QgeworICAgIE5vQ29uc3RydWN0KE5vQ29u
c3RydWN0JiYpID0gZGVsZXRlOworICAgIE5vQ29uc3RydWN0JiBvcGVyYXRvcj0oTm9Db25zdHJ1
Y3QmJikgeyByZXR1cm4gKnRoaXM7IH0KKyAgICB+Tm9Db25zdHJ1Y3QoKSA9IGRlZmF1bHQ7Cisg
IH07CisKKyAgRVhQRUNUX0ZBTFNFKElzTm90aHJvd1N3YXBwYWJsZTxOb0NvbnN0cnVjdD46OnZh
bHVlKTsKKworICBzdHJ1Y3QgTm9Bc3NpZ24geworICAgIE5vQXNzaWduKE5vQXNzaWduJiYpIHt9
CisgICAgTm9Bc3NpZ24mIG9wZXJhdG9yPShOb0Fzc2lnbiYmKSA9IGRlbGV0ZTsKKyAgICB+Tm9B
c3NpZ24oKSA9IGRlZmF1bHQ7CisgIH07CisKKyAgRVhQRUNUX0ZBTFNFKElzTm90aHJvd1N3YXBw
YWJsZTxOb0Fzc2lnbj46OnZhbHVlKTsKKworICBFWFBFQ1RfRkFMU0UoSXNOb3Rocm93U3dhcHBh
YmxlPGFkbF9uYW1lc3BhY2U6OkRlbGV0ZWRTd2FwPjo6dmFsdWUpOworCisgIEVYUEVDVF9UUlVF
KElzTm90aHJvd1N3YXBwYWJsZTxhZGxfbmFtZXNwYWNlOjpTcGVjaWFsTm9leGNlcHRTd2FwPjo6
dmFsdWUpOworfQorCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMv
QlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0JVSUxELmJhemVsCmluZGV4IDMyNGNlNjY5NWU0
MDJjODk3M2ZjNWI1ZGYyNTdhYTVmMjY1MjAzZGQuLmQ5YjU2MWRmZWNhMmFlYjM1NmY3YTRjOWQx
YTg2ZjY1OGNhMzVkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvQlVJTEQuYmF6ZWwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5iYXplbApAQCAtNCw3ICs0LDcgQEAKICMgeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
IyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTEzLDggKzEzLDkgQEAKICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CiAKIGxvYWQoCi0gICAgIi8vYWJzbDpjb3B0cy5iemwiLAorICAgICIvL2Fic2w6Y29wdHMvY29u
ZmlndXJlX2NvcHRzLmJ6bCIsCiAgICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCisgICAgIkFCU0xf
REVGQVVMVF9MSU5LT1BUUyIsCiAgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiApCiAKQEAgLTMxLDYg
KzMyLDcgQEAgY2NfbGlicmFyeSgKICAgICBdLAogICAgIGhkcnMgPSBbImludDEyOC5oIl0sCiAg
ICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIs
CiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLApAQCAtNDUsNiArNDcsNyBAQCBj
Y190ZXN0KAogICAgICAgICAiaW50MTI4X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgZGVwcyA9IFsKICAgICAgICAgIjppbnQxMjgiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLApA
QCAtNTksNiArNjIsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiaW50MTI4X2JlbmNobWFyayIs
CiAgICAgc3JjcyA9IFsiaW50MTI4X2JlbmNobWFyay5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRh
Z3MgPSBbImJlbmNobWFyayJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6aW50MTI4IiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL251bWVyaWMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0JVSUxELmdu
CmluZGV4IGZkZmEyZTI3MWZmZmZkZjMzZDZjNzMwN2ZlNTRlOTk1ZjRjOTc4OWIuLjU1YjZkMGI5
ZWRlYjlhMWY1MWI4ZTU4OTIzYjVlNjZkYmE1MzZlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVy
aWMvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5nbgpAQCAtNiw2ICs2LDcgQEAg
aW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCiBpZiAoYnVpbGRfd2l0aF9j
aHJvbWl1bSkgewogICB2aXNpYmlsaXR5ID0gWworICAgICIvL2xpYmFzc2lzdGFudC8qIiwKICAg
ICAiLy90aGlyZF9wYXJ0eS93ZWJydGMvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL251bWVyaWMvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDMzNjBiMmVlNzI2ZTFhMTk4ZjU5YzM0NjZmMjFjZTVhM2JmMDhiOTAuLjI0Mjg4
OWYwODhhZDY0N2VmNzdjNjhjODE2MjcwNTI1ZDE4OWIwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251
bWVyaWMvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9DTWFrZUxpc3RzLnR4dApA
QCAtNSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDQ5ICsxNCw0NyBAQAogIyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICMKIAotbGlzdChBUFBFTkQgTlVNRVJJQ19Q
VUJMSUNfSEVBREVSUwotICAiaW50MTI4LmgiCi0pCi0KLQotIyBsaWJyYXJ5IDEyOAotbGlzdChB
UFBFTkQgSU5UMTI4X1NSQwotICAiaW50MTI4LmNjIgotICAke05VTUVSSUNfUFVCTElDX0hFQURF
UlN9Ci0pCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfaW50MTI4Ci0gIFNPVVJD
RVMKLSAgICAke0lOVDEyOF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0lOVDEyOF9Q
VUJMSUNfTElCUkFSSUVTfQotICBFWFBPUlRfTkFNRQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1F
CiAgICAgaW50MTI4CisgIEhEUlMKKyAgICAiaW50MTI4LmgiCisgIFNSQ1MKKyAgICAiaW50MTI4
LmNjIgorICAgICJpbnQxMjhfaGF2ZV9pbnRyaW5zaWMuaW5jIgorICAgICJpbnQxMjhfbm9faW50
cmluc2ljLmluYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUwor
ICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycworICBQVUJMSUMKICkKIAot
Ci1hYnNsX2hlYWRlcl9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX251bWVyaWMKLSAgUFVC
TElDX0xJQlJBUklFUworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgaW50MTI4X3Rlc3QKKyAg
U1JDUworICAgICJpbnQxMjhfc3RyZWFtX3Rlc3QuY2MiCisgICAgImludDEyOF90ZXN0LmNjIgor
ICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCiAgICAgYWJzbDo6aW50MTI4
Ci0gIEVYUE9SVF9OQU1FCi0gICAgbnVtZXJpYworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpj
b3JlX2hlYWRlcnMKKyAgICBhYnNsOjpoYXNoX3Rlc3RpbmcKKyAgICBhYnNsOjp0eXBlX3RyYWl0
cworICAgIGdtb2NrX21haW4KICkKIAotIyB0ZXN0IGludDEyOF90ZXN0Ci1zZXQoSU5UMTI4X1RF
U1RfU1JDICJpbnQxMjhfdGVzdC5jYyIpCi1zZXQoSU5UMTI4X1RFU1RfUFVCTElDX0xJQlJBUklF
UyBhYnNsOjpudW1lcmljIGFic2w6OmJhc2UpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAg
aW50MTI4X3Rlc3QKLSAgU09VUkNFUwotICAgICR7SU5UMTI4X1RFU1RfU1JDfQotICBQVUJMSUNf
TElCUkFSSUVTCi0gICAgJHtJTlQxMjhfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorIyBjb21wb25l
bnQgdGFyZ2V0CithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBudW1lcmljCisgIENPUFRT
CisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjppbnQxMjgKKyAg
UFVCTElDCiApCi0KLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL251bWVyaWMvaW50MTI4LmNjCmluZGV4IGNkNzk1MzRmM2JmZDlmNjUwZWQxNThmMzViNWQ4
NmM3NGYxNzhjZDMuLjkzYjYyYzUyOTAxZTJkMzkzZTI1ZDExZTVmMmQ1ODA3NTNkYzg5NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50
MTI4LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNyw3
ICsxNyw3IEBACiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8Y2Fzc2VydD4KICNpbmNs
dWRlIDxpb21hbmlwPgotI2luY2x1ZGUgPGlvc3RyZWFtPiAgLy8gTk9MSU5UKHJlYWRhYmlsaXR5
L3N0cmVhbXMpCisjaW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVChyZWFkYWJpbGl0eS9zdHJl
YW1zKQogI2luY2x1ZGUgPHNzdHJlYW0+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHR5
cGVfdHJhaXRzPgpAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBGbHMxMjgodWlu
dDEyOCBuKSB7CiAKIC8vIExvbmcgZGl2aXNpb24vbW9kdWxvIGZvciB1aW50MTI4IGltcGxlbWVu
dGVkIHVzaW5nIHRoZSBzaGlmdC1zdWJ0cmFjdAogLy8gZGl2aXNpb24gYWxnb3JpdGhtIGFkYXB0
ZWQgZnJvbToKLS8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTM4NjM3Ny9k
aXZpc2lvbi13aXRob3V0LXVzaW5nCisvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0
aW9ucy81Mzg2Mzc3L2RpdmlzaW9uLXdpdGhvdXQtdXNpbmcKIHZvaWQgRGl2TW9kSW1wbCh1aW50
MTI4IGRpdmlkZW5kLCB1aW50MTI4IGRpdmlzb3IsIHVpbnQxMjgqIHF1b3RpZW50X3JldCwKICAg
ICAgICAgICAgICAgICB1aW50MTI4KiByZW1haW5kZXJfcmV0KSB7CiAgIGFzc2VydChkaXZpc29y
ICE9IDApOwpAQCAtMTIzLDYgKzEyMywyOCBAQCB1aW50MTI4IE1ha2VVaW50MTI4RnJvbUZsb2F0
KFQgdikgewogCiAgIHJldHVybiBNYWtlVWludDEyOCgwLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
dikpOwogfQorCisjaWYgZGVmaW5lZChfX2NsYW5nX18pICYmICFkZWZpbmVkKF9fU1NFM19fKQor
Ly8gV29ya2Fyb3VuZCBmb3IgY2xhbmcgYnVnOiBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4Mjg5CisvLyBDYXN0aW5nIGZyb20gbG9uZyBkb3VibGUgdG8gdWludDY0X3Qg
aXMgbWlzY29tcGlsZWQgYW5kIGRyb3BzIGJpdHMuCisvLyBJdCBpcyBtb3JlIHdvcmssIHNvIG9u
bHkgdXNlIHdoZW4gd2UgbmVlZCB0aGUgd29ya2Fyb3VuZC4KK3VpbnQxMjggTWFrZVVpbnQxMjhG
cm9tRmxvYXQobG9uZyBkb3VibGUgdikgeworICAvLyBHbyA1MCBiaXRzIGF0IGEgdGltZSwgdGhh
dCBmaXRzIGluIGEgZG91YmxlCisgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjpkaWdpdHMgPj0gNTAsICIiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNf
bGltaXRzPGxvbmcgZG91YmxlPjo6ZGlnaXRzIDw9IDE1MCwgIiIpOworICAvLyBVbmRlZmluZWQg
YmVoYXZpb3IgaWYgdiBpcyBub3QgZmluaXRlIG9yIGNhbm5vdCBmaXQgaW50byB1aW50MTI4Lgor
ICBhc3NlcnQoc3RkOjppc2Zpbml0ZSh2KSAmJiB2ID4gLTEgJiYgdiA8IHN0ZDo6bGRleHAoMS4w
TCwgMTI4KSk7CisKKyAgdiA9IHN0ZDo6bGRleHAodiwgLTEwMCk7CisgIHVpbnQ2NF90IHcwID0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjp0cnVuYyh2KSkp
OworICB2ID0gc3RkOjpsZGV4cCh2IC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih3MCksIDUwKTsKKyAg
dWludDY0X3QgdzEgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGQ6OnRydW5jKHYpKSk7CisgIHYgPSBzdGQ6OmxkZXhwKHYgLSBzdGF0aWNfY2FzdDxkb3VibGU+
KHcxKSwgNTApOworICB1aW50NjRfdCB3MiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0aWNf
Y2FzdDxkb3VibGU+KHN0ZDo6dHJ1bmModikpKTsKKyAgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50
MTI4Pih3MCkgPDwgMTAwKSB8IChzdGF0aWNfY2FzdDx1aW50MTI4Pih3MSkgPDwgNTApIHwKKyAg
ICAgICAgIHN0YXRpY19jYXN0PHVpbnQxMjg+KHcyKTsKK30KKyNlbmRpZiAgLy8gX19jbGFuZ19f
ICYmICFfX1NTRTNfXwogfSAgLy8gbmFtZXNwYWNlCiAKIHVpbnQxMjg6OnVpbnQxMjgoZmxvYXQg
dikgOiB1aW50MTI4KE1ha2VVaW50MTI4RnJvbUZsb2F0KHYpKSB7fQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbnVtZXJpYy9pbnQxMjguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4LmgKaW5kZXggNzliNjJh
NzU4NjY5NWQ1YjJmNDMxZDM4YWY1MmEwYWIyMjc0YWUyYy4uMTBiZThlY2E0MmU3YzE0N2NhODg5
NDkyNTdlNjZiMjVmYTRkOTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjguaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL2ludDEyOC5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0xOSw4ICsxOSw4IEBACiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBk
ZWZpbmVzIDEyOC1iaXQgaW50ZWdlciB0eXBlcy4KIC8vCi0vLyBDdXJyZW50bHksIHRoaXMgZmls
ZSBkZWZpbmVzIGB1aW50MTI4YCwgYW4gdW5zaWduZWQgMTI4LWJpdCBpbnRlZ2VyOyBhIHNpZ25l
ZAotLy8gMTI4LWJpdCBpbnRlZ2VyIGlzIGZvcnRoY29taW5nLgorLy8gQ3VycmVudGx5LCB0aGlz
IGZpbGUgZGVmaW5lcyBgdWludDEyOGAsIGFuIHVuc2lnbmVkIDEyOC1iaXQgaW50ZWdlcjsKKy8v
IGEgc2lnbmVkIDEyOC1iaXQgaW50ZWdlciBpcyBmb3J0aGNvbWluZy4KIAogI2lmbmRlZiBBQlNM
X05VTUVSSUNfSU5UMTI4X0hfCiAjZGVmaW5lIEFCU0xfTlVNRVJJQ19JTlQxMjhfSF8KQEAgLTM3
LDggKzM3LDIxIEBACiAjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgogI2luY2x1ZGUgImFi
c2wvYmFzZS9wb3J0LmgiCiAKLW5hbWVzcGFjZSBhYnNsIHsKKyNpZiBkZWZpbmVkKF9NU0NfVkVS
KQorLy8gSW4gdmVyeSBvbGQgdmVyc2lvbnMgb2YgTVNWQyBhbmQgd2hlbiB0aGUgL1pjOndjaGFy
X3QgZmxhZyBpcyBvZmYsIHdjaGFyX3QgaXMKKy8vIGEgdHlwZWRlZiBmb3IgdW5zaWduZWQgc2hv
cnQuICBPdGhlcndpc2Ugd2NoYXJfdCBpcyBtYXBwZWQgdG8gdGhlIF9fd2NoYXJfdAorLy8gYnVp
bHRpbiB0eXBlLiAgV2UgbmVlZCB0byBtYWtlIHN1cmUgbm90IHRvIGRlZmluZSBvcGVyYXRvciB3
Y2hhcl90KCkKKy8vIGFsb25nc2lkZSBvcGVyYXRvciB1bnNpZ25lZCBzaG9ydCgpIGluIHRoZXNl
IGluc3RhbmNlcy4KKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9XQ0hBUl9UIF9fd2NoYXJfdAorI2lm
IGRlZmluZWQoX01fWDY0KQorI2luY2x1ZGUgPGludHJpbi5oPgorI3ByYWdtYSBpbnRyaW5zaWMo
X3VtdWwxMjgpCisjZW5kaWYgIC8vIGRlZmluZWQoX01fWDY0KQorI2Vsc2UgICAvLyBkZWZpbmVk
KF9NU0NfVkVSKQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1dDSEFSX1Qgd2NoYXJfdAorI2VuZGlm
ICAvLyBkZWZpbmVkKF9NU0NfVkVSKQogCituYW1lc3BhY2UgYWJzbCB7CiAKIC8vIHVpbnQxMjgK
IC8vCkBAIC0xMjYsNyArMTM5LDcgQEAgY2xhc3MKICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJh
dG9yIHVuc2lnbmVkIGNoYXIoKSBjb25zdDsKICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9y
IGNoYXIxNl90KCkgY29uc3Q7CiAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVyYXRvciBjaGFyMzJf
dCgpIGNvbnN0OwotICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3Igd2NoYXJfdCgpIGNvbnN0
OworICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgQUJTTF9JTlRFUk5BTF9XQ0hBUl9UKCkg
Y29uc3Q7CiAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVyYXRvciBzaG9ydCgpIGNvbnN0OyAgLy8g
Tk9MSU5UKHJ1bnRpbWUvaW50KQogICAvLyBOT0xJTlRORVhUTElORShydW50aW1lL2ludCkKICAg
Y29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIHVuc2lnbmVkIHNob3J0KCkgY29uc3Q7CkBAIC0y
MjcsOCArMjQwLDggQEAgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3Ms
IHVpbnQxMjggdik7CiAvLyBUT0RPKHN0cmVsKSBhZGQgb3BlcmF0b3I+PihzdGQ6OmlzdHJlYW0m
LCB1aW50MTI4KQogCiBjb25zdGV4cHIgdWludDEyOCBVaW50MTI4TWF4KCkgewotICByZXR1cm4g
dWludDEyOChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCksCi0gICAgICAgICAg
ICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CisgIHJldHVybiB1
aW50MTI4KChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KSgpLAorICAgICAgICAg
ICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCkoKSk7CiB9CiAKIH0g
IC8vIG5hbWVzcGFjZSBhYnNsCkBAIC0yNjYsOSArMjc5LDkgQEAgY2xhc3MgbnVtZXJpY19saW1p
dHM8YWJzbDo6dWludDEyOD4gewogI2VuZGlmICAvLyBBQlNMX0hBVkVfSU5UUklOU0lDX0lOVDEy
OAogICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAKLSAg
c3RhdGljIGNvbnN0ZXhwciBhYnNsOjp1aW50MTI4IG1pbigpIHsgcmV0dXJuIDA7IH0KKyAgc3Rh
dGljIGNvbnN0ZXhwciBhYnNsOjp1aW50MTI4IChtaW4pKCkgeyByZXR1cm4gMDsgfQogICBzdGF0
aWMgY29uc3RleHByIGFic2w6OnVpbnQxMjggbG93ZXN0KCkgeyByZXR1cm4gMDsgfQotICBzdGF0
aWMgY29uc3RleHByIGFic2w6OnVpbnQxMjggbWF4KCkgeyByZXR1cm4gYWJzbDo6VWludDEyOE1h
eCgpOyB9CisgIHN0YXRpYyBjb25zdGV4cHIgYWJzbDo6dWludDEyOCAobWF4KSgpIHsgcmV0dXJu
IGFic2w6OlVpbnQxMjhNYXgoKTsgfQogICBzdGF0aWMgY29uc3RleHByIGFic2w6OnVpbnQxMjgg
ZXBzaWxvbigpIHsgcmV0dXJuIDA7IH0KICAgc3RhdGljIGNvbnN0ZXhwciBhYnNsOjp1aW50MTI4
IHJvdW5kX2Vycm9yKCkgeyByZXR1cm4gMDsgfQogICBzdGF0aWMgY29uc3RleHByIGFic2w6OnVp
bnQxMjggaW5maW5pdHkoKSB7IHJldHVybiAwOyB9CkBAIC0zODQsMTMgKzM5NywxMyBAQCBjb25z
dGV4cHIgdWludDEyODo6dWludDEyOCh1aW50NjRfdCBoaWdoLCB1aW50NjRfdCBsb3cpCiAKIGNv
bnN0ZXhwciB1aW50MTI4Ojp1aW50MTI4KGludCB2KQogICAgIDogbG9fe3N0YXRpY19jYXN0PHVp
bnQ2NF90Pih2KX0sCi0gICAgICBoaV97diA8IDAgPyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KCkgOiAwfSB7fQorICAgICAgaGlfe3YgPCAwID8gKHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDY0X3Q+OjptYXgpKCkgOiAwfSB7fQogY29uc3RleHByIHVpbnQxMjg6OnVpbnQxMjgo
bG9uZyB2KSAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQogICAgIDogbG9fe3N0YXRpY19jYXN0PHVp
bnQ2NF90Pih2KX0sCi0gICAgICBoaV97diA8IDAgPyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KCkgOiAwfSB7fQorICAgICAgaGlfe3YgPCAwID8gKHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDY0X3Q+OjptYXgpKCkgOiAwfSB7fQogY29uc3RleHByIHVpbnQxMjg6OnVpbnQxMjgo
bG9uZyBsb25nIHYpICAvLyBOT0xJTlQocnVudGltZS9pbnQpCiAgICAgOiBsb197c3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHYpfSwKLSAgICAgIGhpX3t2IDwgMCA/IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDY0X3Q+OjptYXgoKSA6IDB9IHt9CisgICAgICBoaV97diA8IDAgPyAoc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46Om1heCkoKSA6IDB9IHt9CiAKIGNvbnN0ZXhwciB1aW50MTI4Ojp1
aW50MTI4KHVuc2lnbmVkIGludCB2KSA6IGxvX3t2fSwgaGlfezB9IHt9CiAvLyBOT0xJTlRORVhU
TElORShydW50aW1lL2ludCkKQEAgLTQxMywxMyArNDI2LDEzIEBAIGNvbnN0ZXhwciB1aW50MTI4
Ojp1aW50MTI4KHVpbnQ2NF90IGhpZ2gsIHVpbnQ2NF90IGxvdykKICAgICA6IGhpX3toaWdofSwg
bG9fe2xvd30ge30KIAogY29uc3RleHByIHVpbnQxMjg6OnVpbnQxMjgoaW50IHYpCi0gICAgOiBo
aV97diA8IDAgPyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgOiAwfSwKKyAg
ICA6IGhpX3t2IDwgMCA/IChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KSgpIDog
MH0sCiAgICAgICBsb197c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHYpfSB7fQogY29uc3RleHByIHVp
bnQxMjg6OnVpbnQxMjgobG9uZyB2KSAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQotICAgIDogaGlf
e3YgPCAwID8gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIDogMH0sCisgICAg
OiBoaV97diA8IDAgPyAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCkoKSA6IDB9
LAogICAgICAgbG9fe3N0YXRpY19jYXN0PHVpbnQ2NF90Pih2KX0ge30KIGNvbnN0ZXhwciB1aW50
MTI4Ojp1aW50MTI4KGxvbmcgbG9uZyB2KSAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQotICAgIDog
aGlfe3YgPCAwID8gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIDogMH0sCisg
ICAgOiBoaV97diA8IDAgPyAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCkoKSA6
IDB9LAogICAgICAgbG9fe3N0YXRpY19jYXN0PHVpbnQ2NF90Pih2KX0ge30KIAogY29uc3RleHBy
IHVpbnQxMjg6OnVpbnQxMjgodW5zaWduZWQgaW50IHYpIDogaGlfezB9LCBsb197dn0ge30KQEAg
LTQ2Myw4ICs0NzYsOCBAQCBjb25zdGV4cHIgdWludDEyODo6b3BlcmF0b3IgY2hhcjMyX3QoKSBj
b25zdCB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyMzJfdD4obG9fKTsKIH0KIAotY29uc3Rl
eHByIHVpbnQxMjg6Om9wZXJhdG9yIHdjaGFyX3QoKSBjb25zdCB7Ci0gIHJldHVybiBzdGF0aWNf
Y2FzdDx3Y2hhcl90Pihsb18pOworY29uc3RleHByIHVpbnQxMjg6Om9wZXJhdG9yIEFCU0xfSU5U
RVJOQUxfV0NIQVJfVCgpIGNvbnN0IHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PEFCU0xfSU5URVJO
QUxfV0NIQVJfVD4obG9fKTsKIH0KIAogLy8gTk9MSU5UTkVYVExJTkUocnVudGltZS9pbnQpCkBA
IC02NjEsNiArNjc0LDEyIEBAIGlubGluZSB1aW50MTI4IG9wZXJhdG9yKih1aW50MTI4IGxocywg
dWludDEyOCByaHMpIHsKICAgLy8gY2FuIGJlIHVzZWQgZm9yIHVpbnQxMjggc3RvcmFnZS4KICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIF9faW50MTI4PihsaHMpICoKICAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIF9faW50MTI4PihyaHMpOworI2VsaWYgZGVmaW5lZChfTVNDX1ZF
UikgJiYgZGVmaW5lZChfTV9YNjQpCisgIHVpbnQ2NF90IGNhcnJ5OworICB1aW50NjRfdCBsb3cg
PSBfdW11bDEyOChVaW50MTI4TG93NjQobGhzKSwgVWludDEyOExvdzY0KHJocyksICZjYXJyeSk7
CisgIHJldHVybiBNYWtlVWludDEyOChVaW50MTI4TG93NjQobGhzKSAqIFVpbnQxMjhIaWdoNjQo
cmhzKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgVWludDEyOEhpZ2g2NChsaHMpICogVWlu
dDEyOExvdzY0KHJocykgKyBjYXJyeSwKKyAgICAgICAgICAgICAgICAgICAgIGxvdyk7CiAjZWxz
ZSAgIC8vIEFCU0xfSEFWRV9JTlRSSU5TSUMxMjgKICAgdWludDY0X3QgYTMyID0gVWludDEyOExv
dzY0KGxocykgPj4gMzI7CiAgIHVpbnQ2NF90IGEwMCA9IFVpbnQxMjhMb3c2NChsaHMpICYgMHhm
ZmZmZmZmZjsKQEAgLTcwOCw0ICs3MjcsNiBAQCBpbmxpbmUgdWludDEyOCYgdWludDEyODo6b3Bl
cmF0b3ItLSgpIHsKIAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIAorI3VuZGVmIEFCU0xfSU5URVJO
QUxfV0NIQVJfVAorCiAjZW5kaWYgIC8vIEFCU0xfTlVNRVJJQ19JTlQxMjhfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL251bWVyaWMvaW50MTI4X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50
MTI4X2JlbmNobWFyay5jYwppbmRleCAxY2I3ZDBlZDg3ZTBjYTE3ZGViNWRmZWEwZDcxOGExMGQ3
NTg5MmZjLi5hNTUwMmQ5MjdjMDg1Yzg2M2NiMGFiODRjZGQxODlmMDM5OTEzZTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJp
Yy9pbnQxMjhfYmVuY2htYXJrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9oYXZlX2ludHJpbnNpYy5p
bmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9oYXZlX2ludHJpbnNpYy5pbmMKaW5kZXggZWUyYTA5
MzAxOGQ5NTUzMTVmOTUyODIwNTcwMjljYjJmZDU5MDI3Ni4uYzdlYTY4MzQ1MzA3YTkyNGEwN2Jh
ZGE4MjQzZDNkZjI4MzE3MTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfaGF2
ZV9pbnRyaW5zaWMuaW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X2hhdmVfaW50cmluc2lj
LmluYwpAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTUsNCAr
MTUsNCBAQAogCiAvLyBUaGlzIGZpbGUgY29udGFpbnMgOmludDEyOCBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWxzIHRoYXQgZGVwZW5kIG9uIGludGVybmFsCiAvLyByZXByZXNlbnRhdGlvbiB3aGVuIEFC
U0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4IGlzIGRlZmluZWQuIFRoaXMgZmlsZSBpcwotLy8gaW5j
bHVkZWQgYnkgaW50MTI4LmguCisvLyBpbmNsdWRlZCBieSBpbnQxMjguaCBhbmQgcmVsaWVzIG9u
IEFCU0xfSU5URVJOQUxfV0NIQVJfVCBiZWluZyBkZWZpbmVkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bnVtZXJpYy9pbnQxMjhfbm9faW50cmluc2ljLmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X25v
X2ludHJpbnNpYy5pbmMKaW5kZXggMGQwYjNjZmRlYjEyNWE0MjkxZDVhM2RjNWYzYzUwNTUyYjFh
NDBjOS4uMDQ2Y2I5YjNhNDA3MDhhZTUwMzU4NzYwYjY3MmQ3NmVmZjdjYjFlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfbm9faW50cmluc2ljLmluYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1l
cmljL2ludDEyOF9ub19pbnRyaW5zaWMuaW5jCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgog
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0xNSw0ICsxNSw0IEBACiAKIC8vIFRoaXMgZmlsZSBjb250YWlucyA6
aW50MTI4IGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhhdCBkZXBlbmQgb24gaW50ZXJuYWwKIC8v
IHJlcHJlc2VudGF0aW9uIHdoZW4gQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjggaXMgKm5vdCog
ZGVmaW5lZC4gVGhpcyBmaWxlCi0vLyBpcyBpbmNsdWRlZCBieSBpbnQxMjguaC4KKy8vIGlzIGlu
Y2x1ZGVkIGJ5IGludDEyOC5oIGFuZCByZWxpZXMgb24gQUJTTF9JTlRFUk5BTF9XQ0hBUl9UIGJl
aW5nIGRlZmluZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF9zdHJlYW1fdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3N0cmVhbV90ZXN0LmNjCmluZGV4IDA5ZWZhYWQ0
ZTdmYmFkMmRkNzg0OWViY2U0OTJhZTdkMGRjYzI3MGEuLjNjZmE5ZGMxODM1YTU2Y2U2Njk4ZWZj
N2I2MWM1MGJhODcxNTQwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3N0cmVh
bV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3N0cmVhbV90ZXN0LmNjCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9u
dW1lcmljL2ludDEyOF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfdGVzdC5jYwppbmRl
eCBkZmUzNDc1YWNhMDYyN2IyOWU2MzNjYzJmODVjZTg0NmI2MWJjM2YxLi41ZTFiNWVjMzUyYjBh
NTM4NjhiYzQyZGE5NDRlYTIzZmM5OTE0ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2lu
dDEyOF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3Rlc3QuY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTUxLDcgKzUxLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBVaW50MTI4RmxvYXRUcmFpdHNUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7fTsKIHR5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxmbG9hdCwgZG91Ymxl
LCBsb25nIGRvdWJsZT4gRmxvYXRpbmdQb2ludFR5cGVzOwogCi1UWVBFRF9URVNUX0NBU0UoVWlu
dDEyOEludGVnZXJUcmFpdHNUZXN0LCBJbnRlZ2VyVHlwZXMpOworVFlQRURfVEVTVF9TVUlURShV
aW50MTI4SW50ZWdlclRyYWl0c1Rlc3QsIEludGVnZXJUeXBlcyk7CiAKIFRZUEVEX1RFU1QoVWlu
dDEyOEludGVnZXJUcmFpdHNUZXN0LCBDb25zdHJ1Y3RBc3NpZ25UZXN0KSB7CiAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19jb25zdHJ1Y3RpYmxlPGFic2w6OnVpbnQxMjgsIFR5cGVQYXJhbT46OnZh
bHVlLApAQCAtNjIsNyArNjIsNyBAQCBUWVBFRF9URVNUKFVpbnQxMjhJbnRlZ2VyVHJhaXRzVGVz
dCwgQ29uc3RydWN0QXNzaWduVGVzdCkgewogICAgICAgICAgICAgICAgICJUeXBlUGFyYW0gbXVz
dCBub3QgYmUgYXNzaWduYWJsZSBmcm9tIGFic2w6OnVpbnQxMjgiKTsKIH0KIAotVFlQRURfVEVT
VF9DQVNFKFVpbnQxMjhGbG9hdFRyYWl0c1Rlc3QsIEZsb2F0aW5nUG9pbnRUeXBlcyk7CitUWVBF
RF9URVNUX1NVSVRFKFVpbnQxMjhGbG9hdFRyYWl0c1Rlc3QsIEZsb2F0aW5nUG9pbnRUeXBlcyk7
CiAKIFRZUEVEX1RFU1QoVWludDEyOEZsb2F0VHJhaXRzVGVzdCwgQ29uc3RydWN0QXNzaWduVGVz
dCkgewogICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29uc3RydWN0aWJsZTxhYnNsOjp1aW50MTI4
LCBUeXBlUGFyYW0+Ojp2YWx1ZSwKQEAgLTI3MSw2ICsyNzEsMjAgQEAgVEVTVChVaW50MTI4LCBD
b252ZXJzaW9uVGVzdHMpIHsKICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGFic2w6OnVpbnQxMjg+
KHJvdW5kX3RvX3plcm8pLCAwKTsKICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGFic2w6OnVpbnQx
Mjg+KHJvdW5kX3RvX2ZpdmUpLCA1KTsKICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGFic2w6OnVp
bnQxMjg+KHJvdW5kX3RvX25pbmUpLCA5KTsKKworICBhYnNsOjp1aW50MTI4IGhpZ2hlc3RfcHJl
Y2lzaW9uX2luX2xvbmdfZG91YmxlID0KKyAgICAgIH5hYnNsOjp1aW50MTI4e30gPj4gKDEyOCAt
IHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBkb3VibGU+OjpkaWdpdHMpOworICBFWFBFQ1RfRVEo
aGlnaGVzdF9wcmVjaXNpb25faW5fbG9uZ19kb3VibGUsCisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxhYnNsOjp1aW50MTI4PigKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxsb25nIGRvdWJs
ZT4oaGlnaGVzdF9wcmVjaXNpb25faW5fbG9uZ19kb3VibGUpKSk7CisgIC8vIEFwcGx5IGEgbWFz
ayBqdXN0IHRvIG1ha2Ugc3VyZSBhbGwgdGhlIGJpdHMgYXJlIHRoZSByaWdodCBwbGFjZS4KKyAg
Y29uc3QgYWJzbDo6dWludDEyOCBhcmJpdHJhcnlfbWFzayA9CisgICAgICBhYnNsOjpNYWtlVWlu
dDEyOCgweGEyOWY2MjI2NzdkZWQ3NTEsIDB4ZjhjYTY2YWRkMDc2ZjQ2OCk7CisgIEVYUEVDVF9F
UShoaWdoZXN0X3ByZWNpc2lvbl9pbl9sb25nX2RvdWJsZSAmIGFyYml0cmFyeV9tYXNrLAorICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8YWJzbDo6dWludDEyOD4oc3RhdGljX2Nhc3Q8bG9uZyBkb3Vi
bGU+KAorICAgICAgICAgICAgICAgIGhpZ2hlc3RfcHJlY2lzaW9uX2luX2xvbmdfZG91YmxlICYg
YXJiaXRyYXJ5X21hc2spKSk7CisKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGFic2w6OnVpbnQx
Mjg+KC0wLjFMKSwgMCk7CiB9CiAKIFRFU1QoVWludDEyOCwgT3BlcmF0b3JBc3NpZ25SZXR1cm5S
ZWYpIHsKQEAgLTQ0MCw0ICs0NTQsMjkgQEAgVEVTVChVaW50MTI4LCBOdW1lcmljTGltaXRzVGVz
dCkgewogICBFWFBFQ1RfRVEoYWJzbDo6VWludDEyOE1heCgpLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGFic2w6OnVpbnQxMjg+OjptYXgoKSk7CiB9CiAKK1RFU1QoVWludDEyOCwgSGFzaCkgeworICBF
WFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHsK
KyAgICAgIC8vIFNvbWUgc2ltcGxlIHZhbHVlcworICAgICAgYWJzbDo6dWludDEyOHswfSwKKyAg
ICAgIGFic2w6OnVpbnQxMjh7MX0sCisgICAgICB+YWJzbDo6dWludDEyOHt9LAorICAgICAgLy8g
NjQgYml0IGxpbWl0cworICAgICAgYWJzbDo6dWludDEyOHtzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptYXgoKX0sCisgICAgICBhYnNsOjp1aW50MTI4e3N0ZDo6bnVtZXJpY19saW1pdHM8
dWludDY0X3Q+OjptYXgoKX0gKyAwLAorICAgICAgYWJzbDo6dWludDEyOHtzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCl9ICsgMSwKKyAgICAgIGFic2w6OnVpbnQxMjh7c3RkOjpu
dW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpfSArIDIsCisgICAgICAvLyBLZWVwaW5nIGhp
Z2ggc2FtZQorICAgICAgYWJzbDo6dWludDEyOHsxfSA8PCA2MiwKKyAgICAgIGFic2w6OnVpbnQx
Mjh7MX0gPDwgNjMsCisgICAgICAvLyBLZWVwaW5nIGxvdyBzYW1lCisgICAgICBhYnNsOjp1aW50
MTI4ezF9IDw8IDY0LAorICAgICAgYWJzbDo6dWludDEyOHsxfSA8PCA2NSwKKyAgICAgIC8vIDEy
OCBiaXQgbGltaXRzCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGFic2w6OnVpbnQxMjg+Ojpt
YXgoKSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8YWJzbDo6dWludDEyOD46Om1heCgpIC0g
MSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8YWJzbDo6dWludDEyOD46Om1pbigpICsgMSwK
KyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8YWJzbDo6dWludDEyOD46Om1pbigpLAorICB9KSk7
Cit9CisKIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL0JVSUxELmJh
emVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL0JVSUxELmJhemVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NTg3YmY5YTlhNDAy
MGM2M2EyMTFmZmE1NjdhODQ1MzI1NGVlZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vQlVJTEQuYmF6ZWwKQEAgLTAsMCArMSwzOTAgQEAKKyMgQUJTTCByYW5kb20tbnVtYmVyIGdl
bmVyYXRpb24gbGlicmFyaWVzLgorCitsb2FkKAorICAgICIvL2Fic2w6Y29wdHMvY29uZmlndXJl
X2NvcHRzLmJ6bCIsCisgICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCisgICAgIkFCU0xfREVGQVVM
VF9MSU5LT1BUUyIsCisgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHIiwKKyAgICAiQUJTTF9FWENF
UFRJT05TX0ZMQUdfTElOS09QVFMiLAorICAgICJBQlNMX1RFU1RfQ09QVFMiLAorKQorCitwYWNr
YWdlKGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdKQorCitsaWNl
bnNlcyhbIm5vdGljZSJdKSAgIyBBcGFjaGUgMi4wCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9
ICJyYW5kb20iLAorICAgIGhkcnMgPSBbInJhbmRvbS5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RF
RkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAg
ZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIjpzZWVkX3NlcXVl
bmNlcyIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOm5vbnNlY3VyZV9iYXNlIiwK
KyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6cGNnX2VuZ2luZSIsCisgICAgICAgICIv
L2Fic2wvcmFuZG9tL2ludGVybmFsOnBvb2xfdXJiZyIsCisgICAgICAgICIvL2Fic2wvcmFuZG9t
L2ludGVybmFsOnJhbmRlbl9lbmdpbmUiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAg
bmFtZSA9ICJkaXN0cmlidXRpb25zIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZGlzY3JldGVf
ZGlzdHJpYnV0aW9uLmNjIiwKKyAgICAgICAgImdhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5jYyIsCisg
ICAgXSwKKyAgICBoZHJzID0gWworICAgICAgICAiYmVybm91bGxpX2Rpc3RyaWJ1dGlvbi5oIiwK
KyAgICAgICAgImJldGFfZGlzdHJpYnV0aW9uLmgiLAorICAgICAgICAiZGlzY3JldGVfZGlzdHJp
YnV0aW9uLmgiLAorICAgICAgICAiZGlzdHJpYnV0aW9uX2Zvcm1hdF90cmFpdHMuaCIsCisgICAg
ICAgICJkaXN0cmlidXRpb25zLmgiLAorICAgICAgICAiZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9u
LmgiLAorICAgICAgICAiZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmgiLAorICAgICAgICAibG9nX3Vu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAgICAgInBvaXNzb25fZGlzdHJpYnV0aW9u
LmgiLAorICAgICAgICAidW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgiLAorICAgICAgICAidW5p
Zm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAgICAgInppcGZfZGlzdHJpYnV0aW9uLmgi
LAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9i
YXNlOmJhc2VfaW50ZXJuYWwiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
KyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9yYW5k
b20vaW50ZXJuYWw6ZGlzdHJpYnV0aW9uX2ltcGwiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9p
bnRlcm5hbDpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6
ZmFzdF91bmlmb3JtX2JpdHMiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpmYXN0
bWF0aCIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmlvc3RyZWFtX3N0YXRlX3Nh
dmVyIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6dHJhaXRzIiwKKyAgICAgICAg
Ii8vYWJzbC9yYW5kb20vaW50ZXJuYWw6dW5pZm9ybV9oZWxwZXIiLAorICAgICAgICAiLy9hYnNs
L3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOnNwYW4iLAorICAgIF0sCispCisKK2Nj
X2xpYnJhcnkoCisgICAgbmFtZSA9ICJzZWVkX2dlbl9leGNlcHRpb24iLAorICAgIHNyY3MgPSBb
InNlZWRfZ2VuX2V4Y2VwdGlvbi5jYyJdLAorICAgIGhkcnMgPSBbInNlZWRfZ2VuX2V4Y2VwdGlv
bi5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNf
RkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbIi8vYWJzbC9iYXNlOmNvbmZpZyJdLAor
KQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAic2VlZF9zZXF1ZW5jZXMiLAorICAgIHNyY3Mg
PSBbInNlZWRfc2VxdWVuY2VzLmNjIl0sCisgICAgaGRycyA9IFsKKyAgICAgICAgInNlZWRfc2Vx
dWVuY2VzLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAg
IjpzZWVkX2dlbl9leGNlcHRpb24iLAorICAgICAgICAiLy9hYnNsL2NvbnRhaW5lcjppbmxpbmVk
X3ZlY3RvciIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOm5vbnNlY3VyZV9iYXNl
IiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6cG9vbF91cmJnIiwKKyAgICAgICAg
Ii8vYWJzbC9yYW5kb20vaW50ZXJuYWw6c2FsdGVkX3NlZWRfc2VxIiwKKyAgICAgICAgIi8vYWJz
bC9yYW5kb20vaW50ZXJuYWw6c2VlZF9tYXRlcmlhbCIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6
c3BhbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImJlcm5vdWxsaV9kaXN0
cmlidXRpb25fdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgdGltZW91dCA9ICJldGVy
bmFsIiwgICMgQW5kcm9pZCBjYW4gdGFrZSBhIHZlcnkgbG9uZyB0aW1lCisgICAgc3JjcyA9IFsi
YmVybm91bGxpX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1Rf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9
IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIjpyYW5kb20iLAorICAgICAg
ICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpzZXF1ZW5jZV91cmJnIiwKKyAgICAgICAgIkBjb21f
Z29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAor
ICAgIG5hbWUgPSAiYmV0YV9kaXN0cmlidXRpb25fdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIs
CisgICAgdGltZW91dCA9ICJldGVybmFsIiwgICMgQW5kcm9pZCBjYW4gdGFrZSBhIHZlcnkgbG9u
ZyB0aW1lCisgICAgc3JjcyA9IFsiYmV0YV9kaXN0cmlidXRpb25fdGVzdC5jYyJdLAorICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6
cmFuZG9tIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20v
aW50ZXJuYWw6ZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgICAgICIvL2Fic2wvcmFuZG9t
L2ludGVybmFsOnNlcXVlbmNlX3VyYmciLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAg
ICAgICAiLy9hYnNsL3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisgICAgICAgICJAY29tX2dvb2dsZV9n
b29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1l
ID0gImRpc3RyaWJ1dGlvbnNfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9
IFsKKyAgICAgICAgImRpc3RyaWJ1dGlvbnNfdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
KyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3RyaWJ1dGlvbnMiLAorICAgICAgICAiOnJhbmRv
bSIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1dGlvbl90ZXN0X3V0
aWwiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAg
IF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJnZW5lcmF0b3JzX3Rlc3QiLAorICAgIHNp
emUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdlbmVyYXRvcnNfdGVzdC5jYyJdLAorICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6
cmFuZG9tIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwK
KyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAibG9nX3VuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbl90ZXN0IiwKKyAgICBzaXplID0gIm1lZGl1bSIsCisgICAgc3JjcyA9IFsKKyAgICAg
ICAgImxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb25fdGVzdC5jYyIsCisgICAgXSwKKyAgICBj
b3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3RyaWJ1dGlvbnMiLAorICAgICAgICAi
OnJhbmRvbSIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpj
b3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpkaXN0cmlidXRp
b25fdGVzdF91dGlsIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6c2VxdWVuY2Vf
dXJiZyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5n
czpzdHJfZm9ybWF0IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9t
YWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZGlzY3JldGVfZGlzdHJp
YnV0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWworICAgICAg
ICAiZGlzY3JldGVfZGlzdHJpYnV0aW9uX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIjpyYW5kb20i
LAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5h
bDpkaXN0cmlidXRpb25fdGVzdF91dGlsIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJu
YWw6c2VxdWVuY2VfdXJiZyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVz
dCgKKyAgICBuYW1lID0gInBvaXNzb25fZGlzdHJpYnV0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAi
c21hbGwiLAorICAgIHRpbWVvdXQgPSAiZXRlcm5hbCIsICAjIEFuZHJvaWQgY2FuIHRha2UgYSB2
ZXJ5IGxvbmcgdGltZQorICAgIHNyY3MgPSBbCisgICAgICAgICJwb2lzc29uX2Rpc3RyaWJ1dGlv
bl90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxp
bmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIHRhZ3MgPSBbCisgICAgICAgICMg
VG9vIFNsb3cuCisgICAgICAgICJub190ZXN0X2FuZHJvaWRfYXJtIiwKKyAgICAgICAgIm5vX3Rl
c3RfbG9vbml4IiwKKyAgICBdLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZGlzdHJpYnV0aW9u
cyIsCisgICAgICAgICI6cmFuZG9tIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAg
Ii8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvY29udGFpbmVyOmZs
YXRfaGFzaF9tYXAiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpkaXN0cmlidXRp
b25fdGVzdF91dGlsIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6c2VxdWVuY2Vf
dXJiZyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5n
czpzdHJfZm9ybWF0IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9t
YWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZXhwb25lbnRpYWxfZGlz
dHJpYnV0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImV4cG9u
ZW50aWFsX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsK
KyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIjpyYW5kb20iLAorICAgICAgICAi
Ly9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAg
ICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6ZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAg
ICAgICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOnNlcXVlbmNlX3VyYmciLAorICAgICAgICAiLy9h
YnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisgICAg
ICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKwor
Y2NfdGVzdCgKKyAgICBuYW1lID0gImdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl90ZXN0IiwKKyAgICBz
aXplID0gInNtYWxsIiwKKyAgICB0aW1lb3V0ID0gImV0ZXJuYWwiLCAgIyBBbmRyb2lkIGNhbiB0
YWtlIGEgdmVyeSBsb25nIHRpbWUKKyAgICBzcmNzID0gWworICAgICAgICAiZ2F1c3NpYW5fZGlz
dHJpYnV0aW9uX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAg
ICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIjpyYW5kb20iLAorICAgICAgICAiLy9h
YnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAg
Ii8vYWJzbC9yYW5kb20vaW50ZXJuYWw6ZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbCIsCisgICAgICAg
ICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOnNlcXVlbmNlX3VyYmciLAorICAgICAgICAiLy9hYnNs
L3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisgICAgICAg
ICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2Nf
dGVzdCgKKyAgICBuYW1lID0gInVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90ZXN0IiwKKyAgICBz
aXplID0gIm1lZGl1bSIsCisgICAgdGltZW91dCA9ICJsb25nIiwKKyAgICBzcmNzID0gWworICAg
ICAgICAidW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIjpy
YW5kb20iLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9p
bnRlcm5hbDpkaXN0cmlidXRpb25fdGVzdF91dGlsIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20v
aW50ZXJuYWw6c2VxdWVuY2VfdXJiZyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAg
ICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKwor
Y2NfdGVzdCgKKyAgICBuYW1lID0gInVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb25fdGVzdCIsCisg
ICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbCisgICAgICAgICJ1bmlmb3JtX3JlYWxf
ZGlzdHJpYnV0aW9uX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgdGFncyA9IFsK
KyAgICAgICAgIm5vX3Rlc3RfYW5kcm9pZF9hcm0iLAorICAgICAgICAibm9fdGVzdF9hbmRyb2lk
X2FybTY0IiwKKyAgICAgICAgIm5vX3Rlc3RfYW5kcm9pZF94ODYiLAorICAgIF0sCisgICAgZGVw
cyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25zIiwKKyAgICAgICAgIjpyYW5kb20iLAorICAg
ICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9pbnRlcm5hbDpkaXN0
cmlidXRpb25fdGVzdF91dGlsIiwKKyAgICAgICAgIi8vYWJzbC9yYW5kb20vaW50ZXJuYWw6c2Vx
dWVuY2VfdXJiZyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJAY29tX2dv
b2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAg
ICBuYW1lID0gInppcGZfZGlzdHJpYnV0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwK
KyAgICBzcmNzID0gWworICAgICAgICAiemlwZl9kaXN0cmlidXRpb25fdGVzdC5jYyIsCisgICAg
XSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3RyaWJ1dGlvbnMiLAor
ICAgICAgICAiOnJhbmRvbSIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fi
c2wvcmFuZG9tL2ludGVybmFsOmRpc3RyaWJ1dGlvbl90ZXN0X3V0aWwiLAorICAgICAgICAiLy9h
YnNsL3JhbmRvbS9pbnRlcm5hbDpzZXF1ZW5jZV91cmJnIiwKKyAgICAgICAgIi8vYWJzbC9zdHJp
bmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAg
ICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZXhhbXBsZXNfdGVzdCIsCisgICAgc2l6
ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZXhhbXBsZXNfdGVzdC5jYyJdLAorICAgIGNvcHRz
ID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAorICAgIGRlcHMgPSBbCisgICAgICAgICI6cmFuZG9tIiwKKyAgICAgICAgIkBjb21fZ29vZ2xl
X2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5h
bWUgPSAic2VlZF9zZXF1ZW5jZXNfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3Jj
cyA9IFsic2VlZF9zZXF1ZW5jZXNfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBb
CisgICAgICAgICI6cmFuZG9tIiwKKyAgICAgICAgIjpzZWVkX3NlcXVlbmNlcyIsCisgICAgICAg
ICIvL2Fic2wvcmFuZG9tL2ludGVybmFsOm5vbnNlY3VyZV9iYXNlIiwKKyAgICAgICAgIkBjb21f
Z29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitCRU5DSE1BUktf
VEFHUyA9IFsKKyAgICAiYmVuY2htYXJrIiwKKyAgICAibm9fdGVzdF9hbmRyb2lkX2FybSIsCisg
ICAgIm5vX3Rlc3RfYW5kcm9pZF9hcm02NCIsCisgICAgIm5vX3Rlc3RfYW5kcm9pZF94ODYiLAor
ICAgICJub190ZXN0X2Rhcndpbl94ODZfNjQiLAorICAgICJub190ZXN0X2lvc194ODZfNjQiLAor
ICAgICJub190ZXN0X2xvb25peCIsCisgICAgIm5vX3Rlc3RfbXN2Y194NjQiLAorICAgICJub190
ZXN0X3dhc20iLAorXQorCisjIEJlbmNobWFya3MgZm9yIHZhcmlvdXMgbWV0aG9kcyAvIHRlc3Qg
dXRpbGl0aWVzCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJiZW5jaG1hcmtzIiwKKyAgICB0ZXN0
b25seSA9IDEsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImJlbmNobWFya3MuY2MiLAorICAgIF0s
CisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCisgICAgdGFncyA9IEJFTkNITUFSS19UQUdTLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICI6ZGlzdHJpYnV0aW9ucyIsCisgICAgICAgICI6cmFuZG9tIiwKKyAgICAgICAgIjpz
ZWVkX3NlcXVlbmNlcyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAg
ICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3JhbmRvbS9p
bnRlcm5hbDpmYXN0X3VuaWZvcm1fYml0cyIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tL2ludGVy
bmFsOnJhbmRlbl9lbmdpbmUiLAorICAgICAgICAiQGNvbV9naXRodWJfZ29vZ2xlX2JlbmNobWFy
ay8vOmJlbmNobWFya19tYWluIiwKKyAgICBdLAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL0JVSUxELmduCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwZTA5NGE1YzQ0
MWI0YjU2OTcxZjFiOGY2Y2Y4ODkxNzA3NDNiMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vQlVJTEQuZ24KQEAgLTAsMCArMSwxMjYgQEAKKyMgQ29weXJpZ2h0IDIwMTggVGhlIENo
cm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9i
dWlsZC5nbmkiKQorCisjIFVzYWdlIG9mIEFic2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5
IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRo
aXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAt
IGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL09XTkVSUworIworIyBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0
cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pn
V2puWV9SdTJkb2trMVgxdkJEVQoraWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKKyAgdmlzaWJp
bGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCisgICAgIi8vdGhpcmRfcGFydHkvd2Vi
cnRjLyoiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCisgICAgIi8vdGhpcmRf
cGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCisgICAgIi8vdGhpcmRfcGFydHkvb3BlbnNjcmVlbi8q
IiwKKyAgXQorfSBlbHNlIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KK30KKworc291cmNlX3Nl
dCgicmFuZG9tIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNo
cm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBp
bGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJz
bF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisg
ICAgInJhbmRvbS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6ZGlzdHJpYnV0aW9ucyIsCisg
ICAgIjpzZWVkX3NlcXVlbmNlcyIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpub25zZWN1cmVf
YmFzZSIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpwY2dfZW5naW5lIiwKKyAgICAiLi4vcmFu
ZG9tL2ludGVybmFsOnBvb2xfdXJiZyIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpyYW5kZW5f
ZW5naW5lIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJkaXN0cmlidXRpb25zIikgeworICBjb25m
aWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29u
ZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUi
LAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIs
CisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJz
bF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImJlcm5vdWxsaV9kaXN0cmli
dXRpb24uaCIsCisgICAgImJldGFfZGlzdHJpYnV0aW9uLmgiLAorICAgICJkaXNjcmV0ZV9kaXN0
cmlidXRpb24uaCIsCisgICAgImRpc3RyaWJ1dGlvbl9mb3JtYXRfdHJhaXRzLmgiLAorICAgICJk
aXN0cmlidXRpb25zLmgiLAorICAgICJleHBvbmVudGlhbF9kaXN0cmlidXRpb24uaCIsCisgICAg
ImdhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAibG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1
dGlvbi5oIiwKKyAgICAicG9pc3Nvbl9kaXN0cmlidXRpb24uaCIsCisgICAgInVuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbi5oIiwKKyAgICAidW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oIiwKKyAg
ICAiemlwZl9kaXN0cmlidXRpb24uaCIsCisgIF0KKyAgc291cmNlcyA9IFsKKyAgICAiZGlzY3Jl
dGVfZGlzdHJpYnV0aW9uLmNjIiwKKyAgICAiZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmNjIiwKKyAg
XQorICBkZXBzID0gWworICAgICIuLi9iYXNlOmJhc2VfaW50ZXJuYWwiLAorICAgICIuLi9iYXNl
OmNvcmVfaGVhZGVycyIsCisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi9yYW5k
b20vaW50ZXJuYWw6ZGlzdHJpYnV0aW9uX2ltcGwiLAorICAgICIuLi9yYW5kb20vaW50ZXJuYWw6
ZGlzdHJpYnV0aW9ucyIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpmYXN0X3VuaWZvcm1fYml0
cyIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpmYXN0bWF0aCIsCisgICAgIi4uL3JhbmRvbS9p
bnRlcm5hbDppb3N0cmVhbV9zdGF0ZV9zYXZlciIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDp0
cmFpdHMiLAorICAgICIuLi9yYW5kb20vaW50ZXJuYWw6dW5pZm9ybV9oZWxwZXIiLAorICAgICIu
Li9zdHJpbmdzIiwKKyAgICAiLi4vdHlwZXM6c3BhbiIsCisgIF0KK30KKworc291cmNlX3NldCgi
c2VlZF9nZW5fZXhjZXB0aW9uIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2Nv
bXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29u
ZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBb
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJs
aWMgPSBbCisgICAgInNlZWRfZ2VuX2V4Y2VwdGlvbi5oIiwKKyAgXQorICBzb3VyY2VzID0gWwor
ICAgICJzZWVkX2dlbl9leGNlcHRpb24uY2MiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uL2Jh
c2U6Y29uZmlnIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJzZWVkX3NlcXVlbmNlcyIpIHsKKyAg
Y29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisg
IGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9j
b2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3Nf
Y2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJzZWVkX3NlcXVlbmNl
cy5oIiwKKyAgXQorICBzb3VyY2VzID0gWworICAgICJzZWVkX3NlcXVlbmNlcy5jYyIsCisgIF0K
KyAgZGVwcyA9IFsKKyAgICAiOnNlZWRfZ2VuX2V4Y2VwdGlvbiIsCisgICAgIi4uL2NvbnRhaW5l
cjppbmxpbmVkX3ZlY3RvciIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpub25zZWN1cmVfYmFz
ZSIsCisgICAgIi4uL3JhbmRvbS9pbnRlcm5hbDpwb29sX3VyYmciLAorICAgICIuLi9yYW5kb20v
aW50ZXJuYWw6c2FsdGVkX3NlZWRfc2VxIiwKKyAgICAiLi4vcmFuZG9tL2ludGVybmFsOnNlZWRf
bWF0ZXJpYWwiLAorICAgICIuLi90eXBlczpzcGFuIiwKKyAgXQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL0NNYWtlTGlzdHMudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJkNWMwNjU4M2U3YjgzZjA3ZWZkNzZhN2I2MWEyZGNlZDFjOTUzOWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSwxMDM0
IEBACisjCisjIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKyMKKyMgTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisj
CisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIwor
IyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKKyAgICByYW5kb21fcmFuZG9tCisgIEhEUlMKKyAgICAicmFuZG9tLmgiCisgIENP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucwor
ICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9ub25zZWN1cmVfYmFzZQorICAgIGFic2w6OnJhbmRv
bV9pbnRlcm5hbF9wY2dfZW5naW5lCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3Bvb2xfdXJi
ZworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9yYW5kZW5fZW5naW5lCisgICAgYWJzbDo6cmFu
ZG9tX3NlZWRfc2VxdWVuY2VzCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJh
bmRvbV9kaXN0cmlidXRpb25zCisgIFNSQ1MKKyAgICAiZGlzY3JldGVfZGlzdHJpYnV0aW9uLmNj
IgorICAgICJnYXVzc2lhbl9kaXN0cmlidXRpb24uY2MiCisgIEhEUlMKKyAgICAiYmVybm91bGxp
X2Rpc3RyaWJ1dGlvbi5oIgorICAgICJiZXRhX2Rpc3RyaWJ1dGlvbi5oIgorICAgICJkaXNjcmV0
ZV9kaXN0cmlidXRpb24uaCIKKyAgICAiZGlzdHJpYnV0aW9uX2Zvcm1hdF90cmFpdHMuaCIKKyAg
ICAiZGlzdHJpYnV0aW9ucy5oIgorICAgICJleHBvbmVudGlhbF9kaXN0cmlidXRpb24uaCIKKyAg
ICAiZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmgiCisgICAgImxvZ191bmlmb3JtX2ludF9kaXN0cmli
dXRpb24uaCIKKyAgICAicG9pc3Nvbl9kaXN0cmlidXRpb24uaCIKKyAgICAidW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uLmgiCisgICAgInVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24uaCIKKyAgICAi
emlwZl9kaXN0cmlidXRpb24uaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30K
KyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFi
c2w6OmJhc2VfaW50ZXJuYWwKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX2ltcGwKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxf
ZGlzdHJpYnV0aW9ucworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9mYXN0X3VuaWZvcm1fYml0
cworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9mYXN0bWF0aAorICAgIGFic2w6OnJhbmRvbV9p
bnRlcm5hbF9pb3N0cmVhbV9zdGF0ZV9zYXZlcgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF90
cmFpdHMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfdW5pZm9ybV9oZWxwZXIKKyAgICBhYnNs
OjpzdHJpbmdzCisgICAgYWJzbDo6c3BhbgorICAgIGFic2w6OnR5cGVfdHJhaXRzCispCisKK2Fi
c2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9zZWVkX2dlbl9leGNlcHRpb24KKyAg
U1JDUworICAgICJzZWVkX2dlbl9leGNlcHRpb24uY2MiCisgIEhEUlMKKyAgICAic2VlZF9nZW5f
ZXhjZXB0aW9uLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgICAgJHtB
QlNMX0VYQ0VQVElPTlNfRkxBR30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfRVhDRVBUSU9OU19G
TEFHX0xJTktPUFRTfQorICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAg
YWJzbDo6Y29uZmlnCispCisKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9z
ZWVkX3NlcXVlbmNlcworICBTUkNTCisgICAgInNlZWRfc2VxdWVuY2VzLmNjIgorICBIRFJTCisg
ICAgInNlZWRfc2VxdWVuY2VzLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9
CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjppbmxpbmVkX3ZlY3RvcgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9ub25zZWN1cmVf
YmFzZQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9wb29sX3VyYmcKKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfc2FsdGVkX3NlZWRfc2VxCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3Nl
ZWRfbWF0ZXJpYWwKKyAgICBhYnNsOjpyYW5kb21fc2VlZF9nZW5fZXhjZXB0aW9uCisgICAgYWJz
bDo6c3BhbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21fYmVybm91bGxp
X2Rpc3RyaWJ1dGlvbl90ZXN0CisgIFNSQ1MKKyAgICAiYmVybm91bGxpX2Rpc3RyaWJ1dGlvbl90
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAg
ICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2Rpc3Ry
aWJ1dGlvbnMKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9tCisgICAgYWJzbDo6cmFuZG9tX2ludGVy
bmFsX3NlcXVlbmNlX3VyYmcKKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9j
Y190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2JldGFfZGlzdHJpYnV0aW9uX3Rlc3QKKyAgU1JD
UworICAgICJiZXRhX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6cmFuZG9tX2Rpc3RyaWJ1dGlvbnMKKyAgICBhYnNsOjpyYW5kb21fcmFu
ZG9tCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRp
b25fdGVzdF91dGlsCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3NlcXVlbmNlX3VyYmcKKyAg
ICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6c3RyX2Zvcm1hdAorICAgIGdtb2NrCisgICAgZ3Rl
c3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21fZGlzdHJpYnV0
aW9uc190ZXN0CisgIFNSQ1MKKyAgICAiZGlzdHJpYnV0aW9uc190ZXN0LmNjIgorICBDT1BUUwor
ICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJ
TktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2Rpc3RyaWJ1dGlvbnMKKyAgICBhYnNs
OjpyYW5kb21fcmFuZG9tCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlvbl90
ZXN0X3V0aWwKKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAor
ICBOQU1FCisgICAgcmFuZG9tX2dlbmVyYXRvcnNfdGVzdAorICBTUkNTCisgICAgImdlbmVyYXRv
cnNfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0
aW9ucworICAgIGFic2w6OnJhbmRvbV9yYW5kb20KKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4K
KykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2xvZ191bmlmb3JtX2ludF9k
aXN0cmlidXRpb25fdGVzdAorICBTUkNTCisgICAgImxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRp
b25fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6
Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6cmFuZG9tX2Rpc3RyaWJ1dGlvbnMKKyAgICBhYnNsOjpy
YW5kb21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbAorICAgIGFic2w6OnJhbmRvbV9p
bnRlcm5hbF9zZXF1ZW5jZV91cmJnCisgICAgYWJzbDo6cmFuZG9tX3JhbmRvbQorICAgIGFic2w6
OnN0cmluZ3MKKyAgICBhYnNsOjpzdHJfZm9ybWF0CisgICAgZ21vY2sKKyAgICBndGVzdF9tYWlu
CispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9kaXNjcmV0ZV9kaXN0cmli
dXRpb25fdGVzdAorICBTUkNTCisgICAgImRpc2NyZXRlX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIgor
ICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9E
RUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OnJhbmRv
bV9kaXN0cmlidXRpb25zCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlvbl90
ZXN0X3V0aWwKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2VxdWVuY2VfdXJiZworICAgIGFi
c2w6OnJhbmRvbV9yYW5kb20KKyAgICBhYnNsOjpzdHJpbmdzCisgICAgZ21vY2sKKyAgICBndGVz
dF9tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9wb2lzc29uX2Rp
c3RyaWJ1dGlvbl90ZXN0CisgIFNSQ1MKKyAgICAicG9pc3Nvbl9kaXN0cmlidXRpb25fdGVzdC5j
YyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnJhbmRvbV9kaXN0cmlidXRp
b25zCisgICAgYWJzbDo6cmFuZG9tX3JhbmRvbQorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpj
b3JlX2hlYWRlcnMKKyAgICBhYnNsOjpmbGF0X2hhc2hfbWFwCisgICAgYWJzbDo6cmFuZG9tX2lu
dGVybmFsX2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxf
c2VxdWVuY2VfdXJiZworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzdHJfZm9ybWF0Cisg
ICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAg
IHJhbmRvbV9leHBvbmVudGlhbF9kaXN0cmlidXRpb25fdGVzdAorICBTUkNTCisgICAgImV4cG9u
ZW50aWFsX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnJhbmRvbV9k
aXN0cmlidXRpb25zCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlvbl90ZXN0
X3V0aWwKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2VxdWVuY2VfdXJiZworICAgIGFic2w6
OnJhbmRvbV9yYW5kb20KKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6c3RyX2Zvcm1hdAor
ICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAg
ICByYW5kb21fZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX3Rlc3QKKyAgU1JDUworICAgICJnYXVzc2lh
bl9kaXN0cmlidXRpb25fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30K
KyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFi
c2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpyYW5kb21fZGlzdHJp
YnV0aW9ucworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25fdGVzdF91dGls
CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3NlcXVlbmNlX3VyYmcKKyAgICBhYnNsOjpyYW5k
b21fcmFuZG9tCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnN0cl9mb3JtYXQKKyAgICBn
bW9jaworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFu
ZG9tX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90ZXN0CisgIFNSQ1MKKyAgICAidW5pZm9ybV9p
bnRfZGlzdHJpYnV0aW9uX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9
CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjpiYXNlCisgICAgYWJzbDo6cmFuZG9tX2Rpc3RyaWJ1dGlvbnMKKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbAorICAgIGFic2w6OnJhbmRvbV9pbnRl
cm5hbF9zZXF1ZW5jZV91cmJnCisgICAgYWJzbDo6cmFuZG9tX3JhbmRvbQorICAgIGFic2w6OnN0
cmluZ3MKKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBO
QU1FCisgICAgcmFuZG9tX3VuaWZvcm1fcmVhbF9kaXN0cmlidXRpb25fdGVzdAorICBTUkNTCisg
ICAgInVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb25fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30K
KyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpyYW5kb21fZGlzdHJpYnV0aW9ucwor
ICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25fdGVzdF91dGlsCisgICAgYWJz
bDo6cmFuZG9tX2ludGVybmFsX3NlcXVlbmNlX3VyYmcKKyAgICBhYnNsOjpyYW5kb21fcmFuZG9t
CisgICAgYWJzbDo6c3RyaW5ncworICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCithYnNs
X2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21femlwZl9kaXN0cmlidXRpb25fdGVzdAorICBT
UkNTCisgICAgInppcGZfZGlzdHJpYnV0aW9uX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNM
X1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6cmFuZG9tX2Rpc3RyaWJ1dGlvbnMKKyAg
ICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbAorICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9zZXF1ZW5jZV91cmJnCisgICAgYWJzbDo6cmFuZG9tX3JhbmRvbQor
ICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9jaworICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9j
Y190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2V4YW1wbGVzX3Rlc3QKKyAgU1JDUworICAgICJl
eGFtcGxlc190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5L
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFu
ZG9tX3JhbmRvbQorICAgIGd0ZXN0X21haW4KKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCisg
ICAgcmFuZG9tX3NlZWRfc2VxdWVuY2VzX3Rlc3QKKyAgU1JDUworICAgICJzZWVkX3NlcXVlbmNl
c190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX3Nl
ZWRfc2VxdWVuY2VzCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX25vbnNlY3VyZV9iYXNlCisg
ICAgYWJzbDo6cmFuZG9tX3JhbmRvbQorICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCisj
IEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3RyYWl0cworICBIRFJTCisg
ICAgImludGVybmFsL3RyYWl0cy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRT
fQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAg
YWJzbDo6Y29uZmlnCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQg
b24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJu
YWxfZGlzdHJpYnV0aW9uX2NhbGxlcgorICBIRFJTCisgICAgImludGVybmFsL2Rpc3RyaWJ1dGlv
bl9jYWxsZXIuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09Q
VFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKykKKworIyBJbnRlcm5hbC1vbmx5IHRh
cmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFN
RQorICAgIHJhbmRvbV9pbnRlcm5hbF9kaXN0cmlidXRpb25zCisgIEhEUlMKKyAgICAiaW50ZXJu
YWwvZGlzdHJpYnV0aW9ucy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQor
ICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJz
bDo6cmFuZG9tX2ludGVybmFsX2Rpc3RyaWJ1dGlvbl9jYWxsZXIKKyAgICBhYnNsOjpyYW5kb21f
aW50ZXJuYWxfZmFzdF91bmlmb3JtX2JpdHMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZmFz
dG1hdGgKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfdHJhaXRzCisgICAgYWJzbDo6cmFuZG9t
X2ludGVybmFsX3VuaWZvcm1faGVscGVyCisgICAgYWJzbDo6c3BhbgorICAgIGFic2w6OnN0cmlu
Z3MKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBk
byBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAg
cmFuZG9tX2ludGVybmFsX2Zhc3RfdW5pZm9ybV9iaXRzCisgIEhEUlMKKyAgICAiaW50ZXJuYWwv
ZmFzdF91bmlmb3JtX2JpdHMuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30K
KyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKykKKworIyBJbnRlcm5h
bC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFy
eSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9zZWVkX21hdGVyaWFsCisgIFNSQ1MKKyAg
ICAiaW50ZXJuYWwvc2VlZF9tYXRlcmlhbC5jYyIKKyAgSERSUworICAgICJpbnRlcm5hbC9zZWVk
X21hdGVyaWFsLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktP
UFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNl
CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6b3B0aW9uYWwKKyAgICBhYnNsOjpy
YW5kb21faW50ZXJuYWxfZmFzdF91bmlmb3JtX2JpdHMKKyAgICBhYnNsOjpzcGFuCisgICAgYWJz
bDo6c3RyaW5ncworKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9u
IGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFs
X3Bvb2xfdXJiZworICBTUkNTCisgICAgImludGVybmFsL3Bvb2xfdXJiZy5jYyIKKyAgSERSUwor
ICAgICJpbnRlcm5hbC9wb29sX3VyYmcuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9D
T1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUwor
ICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMK
KyAgICBhYnNsOjplbmRpYW4KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcmFuZGVuCisgICAg
YWJzbDo6cmFuZG9tX2ludGVybmFsX3NlZWRfbWF0ZXJpYWwKKyAgICBhYnNsOjpyYW5kb21faW50
ZXJuYWxfdHJhaXRzCisgICAgYWJzbDo6cmFuZG9tX3NlZWRfZ2VuX2V4Y2VwdGlvbgorICAgIGFi
c2w6OnNwYW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBk
aXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9l
eHBsaWNpdF9zZWVkX3NlcQorICBIRFJTCisgICAgICAiaW50ZXJuYWwvcmFuZG9tX2ludGVybmFs
X2V4cGxpY2l0X3NlZWRfc2VxLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9
CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIFRFU1RPTkxZCisp
CisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCith
YnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfc2VxdWVuY2VfdXJi
ZworICBIRFJTCisgICAgImludGVybmFsL3NlcXVlbmNlX3VyYmcuaCIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5L
T1BUU30KKyAgVEVTVE9OTFkKKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRl
cGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9p
bnRlcm5hbF9zYWx0ZWRfc2VlZF9zZXEKKyAgSERSUworICAgICJpbnRlcm5hbC9zYWx0ZWRfc2Vl
ZF9zZXEuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmlubGluZWRf
dmVjdG9yCisgICAgYWJzbDo6b3B0aW9uYWwKKyAgICBhYnNsOjpzcGFuCisgICAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsX3NlZWRfbWF0ZXJpYWwKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworKQorCisj
IEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9j
Y19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX2lvc3RyZWFtX3N0YXRlX3Nh
dmVyCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCIKKyAgQ09Q
VFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVG
QVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmludDEyOAorICAgIGFic2w6OnR5cGVf
dHJhaXRzCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGly
ZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfZGlz
dHJpYnV0aW9uX2ltcGwKKyAgSERSUworICAgICJpbnRlcm5hbC9kaXN0cmlidXRpb25faW1wbC5o
IgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7
QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6Yml0cworICAgIGFic2w6
OmNvbmZpZworICAgIGFic2w6OmludDEyOAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9mYXN0
bWF0aAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF90cmFpdHMKKykKKworIyBJbnRlcm5hbC1v
bmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfbGlicmFyeSgK
KyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9mYXN0bWF0aAorICBIRFJTCisgICAgImludGVy
bmFsL2Zhc3RtYXRoLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJ
TktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpi
aXRzCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0
bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfbm9uc2Vj
dXJlX2Jhc2UKKyAgSERSUworICAgICJpbnRlcm5hbC9ub25zZWN1cmVfYmFzZS5oIgorICBDT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6
b3B0aW9uYWwKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcG9vbF91cmJnCisgICAgYWJzbDo6
cmFuZG9tX2ludGVybmFsX3NhbHRlZF9zZWVkX3NlcQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5h
bF9zZWVkX21hdGVyaWFsCisgICAgYWJzbDo6c3BhbgorICAgIGFic2w6OnN0cmluZ3MKKyAgICBh
YnNsOjp0eXBlX3RyYWl0cworKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVw
ZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2lu
dGVybmFsX3BjZ19lbmdpbmUKKyAgSERSUworICAgICJpbnRlcm5hbC9wY2dfZW5naW5lLmgiCisg
IENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpp
bnQxMjgKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZmFzdG1hdGgKKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfaW9zdHJlYW1fc3RhdGVfc2F2ZXIKKyAgICBhYnNsOjp0eXBlX3RyYWl0cwor
KQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5Lgor
YWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3JhbmRlbl9lbmdp
bmUKKyAgSERSUworICAgICJpbnRlcm5hbC9yYW5kZW5fZW5naW5lLmgiCisgIENPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElO
S09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfaW9zdHJlYW1fc3RhdGVf
c2F2ZXIKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcmFuZGVuCisgICAgYWJzbDo6dHlwZV90
cmFpdHMKKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJl
Y3RseS4KK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9wbGF0
Zm9ybQorICBIRFJTCisgICAgImludGVybmFsL3JhbmRlbl90cmFpdHMuaCIKKyAgICAiaW50ZXJu
YWwvcmFuZGVuLWtleXMuaW5jIgorICAgICJpbnRlcm5hbC9wbGF0Zm9ybS5oIgorICBDT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxU
X0xJTktPUFRTfQorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9u
IGRpcmVjdGx5LgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFs
X3JhbmRlbgorICBTUkNTCisgICAgImludGVybmFsL3JhbmRlbi5jYyIKKyAgSERSUworICAgICJp
bnRlcm5hbC9yYW5kZW4uaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAg
TElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6
OmJhc2UKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcGxhdGZvcm0KKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWxfcmFuZGVuX2h3YWVzCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3JhbmRl
bl9zbG93CispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGly
ZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcmFu
ZGVuX3Nsb3cKKyAgU1JDUworICAgICJpbnRlcm5hbC9yYW5kZW5fc2xvdy5jYyIKKyAgSERSUwor
ICAgICJpbnRlcm5hbC9yYW5kZW5fc2xvdy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxU
X0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBT
CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3BsYXRmb3JtCispCisKKyMgSW50ZXJuYWwtb25s
eSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisg
IE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcmFuZGVuX2h3YWVzCisgIFNSQ1MKKyAgICAiaW50
ZXJuYWwvcmFuZGVuX2RldGVjdC5jYyIKKyAgSERSUworICAgICJpbnRlcm5hbC9yYW5kZW5fZGV0
ZWN0LmgiCisgICAgImludGVybmFsL3JhbmRlbl9od2Flcy5oIgorICBDT1BUUworICAgICR7QUJT
TF9ERUZBVUxUX0NPUFRTfQorICAgICR7QUJTTF9SQU5ET01fUkFOREVOX0NPUFRTfQorICBMSU5L
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsX3BsYXRmb3JtCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3JhbmRlbl9o
d2Flc19pbXBsCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24g
ZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxf
cmFuZGVuX2h3YWVzX2ltcGwKKyAgU1JDUworICAgICJpbnRlcm5hbC9yYW5kZW5faHdhZXMuY2Mi
CisgICAgImludGVybmFsL3JhbmRlbl9od2Flcy5oIgorICBDT1BUUworICAgICR7QUJTTF9ERUZB
VUxUX0NPUFRTfQorICAgICR7QUJTTF9SQU5ET01fUkFOREVOX0NPUFRTfQorICBMSU5LT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2lu
dGVybmFsX3BsYXRmb3JtCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBl
bmQgb24gZGlyZWN0bHkuCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICByYW5kb21faW50
ZXJuYWxfZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbAorICBTUkNTCisgICAgImludGVybmFsL2NoaV9z
cXVhcmUuY2MiCisgICAgImludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuY2MiCisgIEhE
UlMKKyAgICAiaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorICAgICJpbnRlcm5hbC9kaXN0cmlidXRp
b25fdGVzdF91dGlsLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIExJ
TktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpi
YXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6
OnN0cl9mb3JtYXQKKyAgICBhYnNsOjpzcGFuCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQs
IGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBy
YW5kb21faW50ZXJuYWxfdHJhaXRzX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC90cmFpdHNf
dGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAg
ICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnJhbmRvbV9pbnRl
cm5hbF90cmFpdHMKKyAgICBndGVzdF9tYWluCispCisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQs
IGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBy
YW5kb21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX2ltcGxfdGVzdAorICBTUkNTCisgICAgImludGVy
bmFsL2Rpc3RyaWJ1dGlvbl9pbXBsX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpiaXRzCisgICAgYWJzbDo6ZmxhZ3MKKyAgICBhYnNsOjppbnQxMjgKKyAgICBh
YnNsOjpyYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX2ltcGwKKyAgICBndGVzdF9tYWluCisp
CisKKyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCith
YnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfZGlzdHJpYnV0aW9uX3Rl
c3RfdXRpbF90ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRp
bF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUwor
ICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2lu
dGVybmFsX2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwKKyAgICBndGVzdF9tYWluCispCisKKyMgSW50
ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rl
c3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfZmFzdG1hdGhfdGVzdAorICBTUkNTCisg
ICAgImludGVybmFsL2Zhc3RtYXRoX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1Rf
Q09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMK
KyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZmFzdG1hdGgKKyAgICBndGVzdF9tYWluCispCisK
KyMgSW50ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNs
X2NjX3Rlc3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfZXhwbGljaXRfc2VlZF9zZXFf
dGVzdAorICBTUkNTCisgICAgImludGVybmFsL2V4cGxpY2l0X3NlZWRfc2VxX3Rlc3QuY2MiCisg
IENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZXhwbGlj
aXRfc2VlZF9zZXEKKyAgICBhYnNsOjpyYW5kb21fc2VlZF9zZXF1ZW5jZXMKKyAgICBnbW9jawor
ICAgIGd0ZXN0X21haW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVu
ZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5h
bF9zYWx0ZWRfc2VlZF9zZXFfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3NhbHRlZF9zZWVk
X3NlcV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9t
X2ludGVybmFsX3NhbHRlZF9zZWVkX3NlcQorICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQor
CisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJz
bF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX2NoaV9zcXVhcmVfdGVzdAor
ICBTUkNTCisgICAgImludGVybmFsL2NoaV9zcXVhcmVfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BU
U30KKyAgREVQUworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnJhbmRvbV9pbnRl
cm5hbF9kaXN0cmlidXRpb25fdGVzdF91dGlsCisgICAgZ3Rlc3RfbWFpbgorKQorCisjIEludGVy
bmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY190ZXN0
KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX2Zhc3RfdW5pZm9ybV9iaXRzX3Rlc3QKKyAg
U1JDUworICAgICJpbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0c190ZXN0LmNjIgorICBDT1BUUwor
ICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJ
TktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2Zhc3RfdW5pZm9ybV9i
aXRzCisgICAgZ3Rlc3RfbWFpbgorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3Qg
ZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2lu
dGVybmFsX25vbnNlY3VyZV9iYXNlX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9ub25zZWN1
cmVfYmFzZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBMSU5L
T1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsX25vbnNlY3VyZV9iYXNlCisgICAgYWJzbDo6cmFuZG9tX3JhbmRvbQorICAg
IGFic2w6OnJhbmRvbV9kaXN0cmlidXRpb25zCisgICAgYWJzbDo6cmFuZG9tX3NlZWRfc2VxdWVu
Y2VzCisgICAgYWJzbDo6c3RyaW5ncworICAgIGd0ZXN0X21haW4KKykKKworIyBJbnRlcm5hbC1v
bmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAg
TkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9zZWVkX21hdGVyaWFsX3Rlc3QKKyAgU1JDUworICAg
ICJpbnRlcm5hbC9zZWVkX21hdGVyaWFsX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RF
U1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfTElOS09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfc2VlZF9tYXRlcmlhbAorICAgIGdtb2NrCisg
ICAgZ3Rlc3RfbWFpbgorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5k
IG9uIGRpcmVjdGx5LgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFs
X3Bvb2xfdXJiZ190ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcG9vbF91cmJnX3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIExJTktPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcG9v
bF91cmJnCisgICAgYWJzbDo6c3BhbgorICAgIGFic2w6OnR5cGVfdHJhaXRzCisgICAgZ3Rlc3Rf
bWFpbgorKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVj
dGx5LgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3BjZ19lbmdp
bmVfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3BjZ19lbmdpbmVfdGVzdC5jYyIKKyAgQ09Q
VFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVM
VF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9leHBsaWNpdF9z
ZWVkX3NlcQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9wY2dfZW5naW5lCisgICAgYWJzbDo6
dGltZQorICAgIGdtb2NrCisgICAgZ3Rlc3RfbWFpbgorKQorCisjIEludGVybmFsLW9ubHkgdGFy
Z2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5LgorYWJzbF9jY190ZXN0KAorICBOQU1FCisg
ICAgcmFuZG9tX2ludGVybmFsX3JhbmRlbl9lbmdpbmVfdGVzdAorICBTUkNTCisgICAgImludGVy
bmFsL3JhbmRlbl9lbmdpbmVfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BU
U30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAg
IGFic2w6OmJhc2UKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfZXhwbGljaXRfc2VlZF9zZXEK
KyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWxfcmFuZGVuX2VuZ2luZQorICAgIGFic2w6OnN0cmlu
Z3MKKyAgICBhYnNsOjp0aW1lCisgICAgZ21vY2sKKyAgICBndGVzdF9tYWluCispCisKKyMgSW50
ZXJuYWwtb25seSB0YXJnZXQsIGRvIG5vdCBkZXBlbmQgb24gZGlyZWN0bHkuCithYnNsX2NjX3Rl
c3QoCisgIE5BTUUKKyAgICByYW5kb21faW50ZXJuYWxfcmFuZGVuX3Rlc3QKKyAgU1JDUworICAg
ICJpbnRlcm5hbC9yYW5kZW5fdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BU
U30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAg
IGFic2w6OnJhbmRvbV9pbnRlcm5hbF9yYW5kZW4KKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAg
IGd0ZXN0X21haW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwgZG8gbm90IGRlcGVuZCBv
biBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJhbmRvbV9pbnRlcm5hbF9y
YW5kZW5fc2xvd190ZXN0CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcmFuZGVuX3Nsb3dfdGVzdC5j
YyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FC
U0xfREVGQVVMVF9MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9y
YW5kZW5fc2xvdworICAgIGd0ZXN0X21haW4KKykKKworIyBJbnRlcm5hbC1vbmx5IHRhcmdldCwg
ZG8gbm90IGRlcGVuZCBvbiBkaXJlY3RseS4KK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHJh
bmRvbV9pbnRlcm5hbF9yYW5kZW5faHdhZXNfdGVzdAorICBTUkNTCisgICAgImludGVybmFsL3Jh
bmRlbl9od2Flc190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBM
SU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6
cmFuZG9tX2ludGVybmFsX3BsYXRmb3JtCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX3JhbmRl
bl9od2FlcworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9yYW5kZW5faHdhZXNfaW1wbAorICAg
IGFic2w6OmJhc2UKKyAgICBhYnNsOjpzdHJfZm9ybWF0CisgICAgZ21vY2sKKyAgICBndGVzdAor
KQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRpcmVjdGx5Lgor
YWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX3VuaWZvcm1faGVs
cGVyCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvdW5pZm9ybV9oZWxwZXIuaCIKKyAgQ09QVFMKKyAg
ICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9M
SU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OnJhbmRv
bV9pbnRlcm5hbF9kaXN0cmlidXRpb25faW1wbAorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9m
YXN0X3VuaWZvcm1fYml0cworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF9pb3N0cmVhbV9zdGF0
ZV9zYXZlcgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbF90cmFpdHMKKyAgICBhYnNsOjp0eXBl
X3RyYWl0cworKQorCisjIEludGVybmFsLW9ubHkgdGFyZ2V0LCBkbyBub3QgZGVwZW5kIG9uIGRp
cmVjdGx5LgorYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAgcmFuZG9tX2ludGVybmFsX2lvc3Ry
ZWFtX3N0YXRlX3NhdmVyX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9pb3N0cmVhbV9zdGF0
ZV9zYXZlcl90ZXN0LmNjIgorICBMSU5LT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0xJTktPUFRT
fQorICBERVBTCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsX2lvc3RyZWFtX3N0YXRlX3NhdmVy
CisgICAgZ3Rlc3RfbWFpbgorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2JlbmNobWFya3Mu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vYmVuY2htYXJrcy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2JiYjk4MTBhNzcz
ODVjOGFkM2Y0MTNhMjMzODg4ZjkzOTY0NWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2JlbmNobWFya3MuY2MKQEAgLTAsMCArMSwzODMgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRo
ZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorCisvLyBCZW5jaG1hcmtzIGZvciBhYnNsIHJhbmRvbSBkaXN0
cmlidXRpb25zIGFzIHdlbGwgYXMgYSBzZWxlY3Rpb24gb2YgdGhlCisvLyBDKysgc3RhbmRhcmQg
bGlicmFyeSByYW5kb20gZGlzdHJpYnV0aW9ucy4KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8aW5pdGlhbGl6
ZXJfbGlzdD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVk
ZSA8cmFuZG9tPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwor
I2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90
cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uLmgi
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vYmV0YV9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJh
YnNsL3JhbmRvbS9leHBvbmVudGlhbF9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRl
cm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFs
L3JhbmRlbl9lbmdpbmUuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9sb2dfdW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRp
b24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9yYW5kb20uaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS91bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS91
bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vemlwZl9k
aXN0cmlidXRpb24uaCIKKyNpbmNsdWRlICJiZW5jaG1hcmsvYmVuY2htYXJrLmgiCisKK25hbWVz
cGFjZSB7CisKKy8vIFNlZWQgZGF0YSB0byBhdm9pZCByZWFkaW5nIHJhbmRvbV9kZXZpY2UoKSBm
b3IgYmVuY2htYXJrcy4KK3VpbnQzMl90IGtTZWVkRGF0YVtdID0geworICAgIDB4MUI1MTAwNTIs
IDB4OUE1MzI5MTUsIDB4RDYwRjU3M0YsIDB4QkM5QkM2RTQsIDB4MkI2MEE0NzYsIDB4ODFFNjc0
MDAsCisgICAgMHgwOEJBNkZCNSwgMHg1NzFCRTkxRiwgMHhGMjk2RUM2QiwgMHgyQTBERDkxNSwg
MHhCNjYzNjUyMSwgMHhFN0I5RjlCNiwKKyAgICAweEZGMzQwNTJFLCAweEM1ODU1NjY0LCAweDUz
QjAyRDVELCAweEE5OUY4RkExLCAweDA4QkE0Nzk5LCAweDZFODUwNzZBLAorICAgIDB4NEI3QTcw
RTksIDB4QjVCMzI5NDQsIDB4REI3NTA5MkUsIDB4QzQxOTI2MjMsIDB4QUQ2RUE2QjAsIDB4NDlB
N0RGN0QsCisgICAgMHg5Q0VFNjBCOCwgMHg4RkVEQjI2NiwgMHhFQ0FBOEM3MSwgMHg2OTlBMThG
RiwgMHg1NjY0NTI2QywgMHhDMkIxOUVFMSwKKyAgICAweDE5MzYwMkE1LCAweDc1MDk0QzI5LCAw
eEEwNTkxMzQwLCAweEU0MTgzQTNFLCAweDNGNTQ5ODlBLCAweDVCNDI5RDY1LAorICAgIDB4NkI4
RkU0RDYsIDB4OTlGNzNGRDYsIDB4QTFEMjlDMDcsIDB4RUZFODMwRjUsIDB4NEQyRDM4RTYsIDB4
RjAyNTVEQzEsCisgICAgMHg0Q0REMjA4NiwgMHg4NDcwRUIyNiwgMHg2MzgyRTlDNiwgMHgwMjFF
Q0M1RSwgMHgwOTY4NkIzRiwgMHgzRUJBRUZDOSwKKyAgICAweDNDOTcxODE0LCAweDZCNkE3MEEx
LCAweDY4N0YzNTg0LCAweDUyQTBFMjg2LCAweDEzMTk4QTJFLCAweDAzNzA3MzQ0LAorfTsKKwor
Ly8gUHJlY29tcGlsZWRTZWVkU2VxIHByb3ZpZGVzIGtTZWVkRGF0YSB0byBhIGNvbmZvcm1pbmcK
Ky8vIHJhbmRvbSBlbmdpbmUgdG8gc3BlZWQgaW5pdGlhbGl6YXRpb24gaW4gdGhlIGJlbmNobWFy
a3MuCitjbGFzcyBQcmVjb21waWxlZFNlZWRTZXEgeworIHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0
X3R5cGUgPSB1aW50MzJfdDsKKworICBQcmVjb21waWxlZFNlZWRTZXEoKSB7fQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KKyAgUHJlY29tcGlsZWRTZWVkU2VxKEl0ZXJhdG9yIGJl
Z2luLCBJdGVyYXRvciBlbmQpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIFByZWNv
bXBpbGVkU2VlZFNlcShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaWwpIHt9CisKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIE91dEl0ZXJhdG9yPgorICB2b2lkIGdlbmVyYXRlKE91dEl0ZXJhdG9yIGJl
Z2luLCBPdXRJdGVyYXRvciBlbmQpIHsKKyAgICBzdGF0aWMgc2l6ZV90IGlkeCA9IDA7CisgICAg
Zm9yICg7IGJlZ2luICE9IGVuZDsgYmVnaW4rKykgeworICAgICAgKmJlZ2luID0ga1NlZWREYXRh
W2lkeCsrXTsKKyAgICAgIGlmIChpZHggPj0gQUJTTF9BUlJBWVNJWkUoa1NlZWREYXRhKSkgewor
ICAgICAgICBpZHggPSAwOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHNpemVfdCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gQUJTTF9BUlJBWVNJWkUoa1NlZWREYXRhKTsgfQorCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBPdXRJdGVyYXRvcj4KKyAgdm9pZCBwYXJhbShPdXRJdGVyYXRvciBvdXQpIGNv
bnN0IHsKKyAgICBzdGQ6OmNvcHkoc3RkOjpiZWdpbihrU2VlZERhdGEpLCBzdGQ6OmVuZChrU2Vl
ZERhdGEpLCBvdXQpOworICB9Cit9OworCisvLyB1c2VfZGVmYXVsdF9pbml0aWFsaXphdGlvbjxU
PiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmFuZG9tIGVuZ2luZQorLy8gVCBtdXN0IGJlIGRlZmF1
bHQgaW5pdGlhbGl6ZWQsIG9yIHdoZXRoZXIgd2UgbWF5IGluaXRpYWxpemUgaXQgdXNpbmcKKy8v
IGEgc2VlZCBzZXF1ZW5jZS4gVGhpcyBpcyB1c2VkIGJlY2F1c2Ugc29tZSBlbmdpbmVzIGRvIG5v
dCBhY2NlcHQgc2VlZAorLy8gc2VxdWVuY2UtYmFzZWQgaW5pdGlhbGl6YXRpb24uCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRT4KK3VzaW5nIHVzZV9kZWZhdWx0X2luaXRpYWxpemF0aW9uID0gc3RkOjpm
YWxzZV90eXBlOworCisvLyBtYWtlX2VuZ2luZTxULCBTU2VxPiByZXR1cm5zIGEgcmFuZG9tX2Vu
Z2luZSB3aGljaCBpcyBpbml0aWFsaXplZCwKKy8vIGVpdGhlciB2aWEgdGhlIGRlZmF1bHQgY29u
c3RydWN0b3IsIHdoZW4gdXNlX2RlZmF1bHRfaW5pdGlhbGl6YXRpb248VD4KKy8vIGlzIHRydWUs
IG9yIHZpYSB0aGUgaW5kaWNhdGVkIHNlZWQgc2VxdWVuY2UsIFNTZXEuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRW5naW5lLCB0eXBlbmFtZSBTU2VxID0gUHJlY29tcGlsZWRTZWVkU2VxPgordHlwZW5h
bWUgYWJzbDo6ZW5hYmxlX2lmX3Q8IXVzZV9kZWZhdWx0X2luaXRpYWxpemF0aW9uPEVuZ2luZT46
OnZhbHVlLCBFbmdpbmU+CittYWtlX2VuZ2luZSgpIHsKKyAgLy8gSW5pdGlhbGl6ZSB0aGUgcmFu
ZG9tIGVuZ2luZSB1c2luZyB0aGUgc2VlZCBzZXF1ZW5jZSBTU2VxLCB3aGljaAorICAvLyBpcyBj
b25zdHJ1Y3RlZCBmcm9tIHRoZSBwcmVjb21waWxlZCBzZWVkIGRhdGEuCisgIFNTZXEgc2VxKHN0
ZDo6YmVnaW4oa1NlZWREYXRhKSwgc3RkOjplbmQoa1NlZWREYXRhKSk7CisgIHJldHVybiBFbmdp
bmUoc2VxKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZSwgdHlwZW5hbWUgU1NlcSA9
IFByZWNvbXBpbGVkU2VlZFNlcT4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PHVzZV9kZWZh
dWx0X2luaXRpYWxpemF0aW9uPEVuZ2luZT46OnZhbHVlLCBFbmdpbmU+CittYWtlX2VuZ2luZSgp
IHsKKyAgLy8gSW5pdGlhbGl6ZSB0aGUgcmFuZG9tIGVuZ2luZSB1c2luZyB0aGUgZGVmYXVsdCBj
b25zdHJ1Y3Rvci4KKyAgcmV0dXJuIEVuZ2luZSgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RW5naW5lLCB0eXBlbmFtZSBTU2VxPgordm9pZCBCTV9Db25zdHJ1Y3QoYmVuY2htYXJrOjpTdGF0
ZSYgc3RhdGUpIHsKKyAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgeworICAgIGF1dG8gcm5nID0gbWFr
ZV9lbmdpbmU8RW5naW5lLCBTU2VxPigpOworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShy
bmcoKSk7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZT4KK3ZvaWQgQk1fRGly
ZWN0KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBl
bmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlOworICAvLyBEaXJlY3QgdXNlIG9mIHRoZSBVUkJHLgor
ICBhdXRvIHJuZyA9IG1ha2VfZW5naW5lPEVuZ2luZT4oKTsKKyAgZm9yIChhdXRvIF8gOiBzdGF0
ZSkgeworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShybmcoKSk7CisgIH0KKyAgc3RhdGUu
U2V0Qnl0ZXNQcm9jZXNzZWQoc2l6ZW9mKHZhbHVlX3R5cGUpICogc3RhdGUuaXRlcmF0aW9ucygp
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZT4KK3ZvaWQgQk1fR2VuZXJhdGUoYmVu
Y2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgLy8gc3RkOjpnZW5lcmF0ZSBtYWtlcyBhIGNvcHkg
b2YgdGhlIFJORzsgdGh1cyB0aGlzIHRlc3RzIHRoZQorICAvLyBjb3B5LWNvbnN0cnVjdG9yIGVm
ZmljaWVuY3kuCisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90
eXBlOworICBzdGQ6OnZlY3Rvcjx2YWx1ZV90eXBlPiB2KDY0KTsKKyAgYXV0byBybmcgPSBtYWtl
X2VuZ2luZTxFbmdpbmU+KCk7CisgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZ0JhdGNoKDY0KSkg
eworICAgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdpbih2KSwgc3RkOjplbmQodiksIHJuZyk7Cisg
IH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZSwgc2l6ZV90IGVsZW1zPgordm9pZCBC
TV9TaHVmZmxlKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIC8vIERpcmVjdCB1c2Ugb2Yg
dGhlIEVuZ2luZS4KKyAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHYoZWxlbXMpOworICB3aGlsZSAo
c3RhdGUuS2VlcFJ1bm5pbmdCYXRjaChlbGVtcykpIHsKKyAgICBhdXRvIHJuZyA9IG1ha2VfZW5n
aW5lPEVuZ2luZT4oKTsKKyAgICBzdGQ6OnNodWZmbGUoc3RkOjpiZWdpbih2KSwgc3RkOjplbmQo
diksIHJuZyk7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZSwgc2l6ZV90IGVs
ZW1zPgordm9pZCBCTV9TaHVmZmxlUmV1c2UoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAg
Ly8gRGlyZWN0IHVzZSBvZiB0aGUgRW5naW5lLgorICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gdihl
bGVtcyk7CisgIGF1dG8gcm5nID0gbWFrZV9lbmdpbmU8RW5naW5lPigpOworICB3aGlsZSAoc3Rh
dGUuS2VlcFJ1bm5pbmdCYXRjaChlbGVtcykpIHsKKyAgICBzdGQ6OnNodWZmbGUoc3RkOjpiZWdp
bih2KSwgc3RkOjplbmQodiksIHJuZyk7CisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVu
Z2luZSwgdHlwZW5hbWUgRGlzdCwgdHlwZW5hbWUuLi4gQXJncz4KK3ZvaWQgQk1fRGlzdChiZW5j
aG1hcms6OlN0YXRlJiBzdGF0ZSwgQXJncyYmLi4uIGFyZ3MpIHsKKyAgdXNpbmcgdmFsdWVfdHlw
ZSA9IHR5cGVuYW1lIERpc3Q6OnJlc3VsdF90eXBlOworICBhdXRvIHJuZyA9IG1ha2VfZW5naW5l
PEVuZ2luZT4oKTsKKyAgRGlzdCBkaXN7c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4ufTsKKyAg
Ly8gQ29tcGFyZSB0aGUgZm9sbG93aW5nIGxvb3AgcGVyZm9ybWFuY2U6CisgIGZvciAoYXV0byBf
IDogc3RhdGUpIHsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoZGlzKHJuZykpOworICB9
CisgIHN0YXRlLlNldEJ5dGVzUHJvY2Vzc2VkKHNpemVvZih2YWx1ZV90eXBlKSAqIHN0YXRlLml0
ZXJhdGlvbnMoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdpbmUsIHR5cGVuYW1lIERp
c3Q+Cit2b2lkIEJNX0xhcmdlKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHVzaW5nIHZh
bHVlX3R5cGUgPSB0eXBlbmFtZSBEaXN0OjpyZXN1bHRfdHlwZTsKKyAgdm9sYXRpbGUgdmFsdWVf
dHlwZSBrTWluID0gMDsKKyAgdm9sYXRpbGUgdmFsdWVfdHlwZSBrTWF4ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx2YWx1ZV90eXBlPjo6bWF4KCkgLyAyICsgMTsKKyAgQk1fRGlzdDxFbmdpbmUsIERp
c3Q+KHN0YXRlLCBrTWluLCBrTWF4KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZSwg
dHlwZW5hbWUgRGlzdD4KK3ZvaWQgQk1fU21hbGwoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
KyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIERpc3Q6OnJlc3VsdF90eXBlOworICB2b2xh
dGlsZSB2YWx1ZV90eXBlIGtNaW4gPSAwOworICB2b2xhdGlsZSB2YWx1ZV90eXBlIGtNYXggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHZhbHVlX3R5cGU+OjptYXgoKSAvIDY0ICsgMTsKKyAgQk1fRGlz
dDxFbmdpbmUsIERpc3Q+KHN0YXRlLCBrTWluLCBrTWF4KTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIEVuZ2luZSwgdHlwZW5hbWUgRGlzdCwgaW50IEE+Cit2b2lkIEJNX0Jlcm5vdWxsaShiZW5j
aG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICB2b2xhdGlsZSBkb3VibGUgYSA9IHN0YXRpY19jYXN0
PGRvdWJsZT4oQSkgLyAxMDAwMDAwOworICBCTV9EaXN0PEVuZ2luZSwgRGlzdD4oc3RhdGUsIGEp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lLCB0eXBlbmFtZSBEaXN0LCBpbnQgQSwg
aW50IEI+Cit2b2lkIEJNX0JldGEoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgdXNpbmcg
dmFsdWVfdHlwZSA9IHR5cGVuYW1lIERpc3Q6OnJlc3VsdF90eXBlOworICB2b2xhdGlsZSB2YWx1
ZV90eXBlIGEgPSBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPihBKSAvIDEwMDsKKyAgdm9sYXRpbGUg
dmFsdWVfdHlwZSBiID0gc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oQikgLyAxMDA7CisgIEJNX0Rp
c3Q8RW5naW5lLCBEaXN0PihzdGF0ZSwgYSwgYik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBF
bmdpbmUsIHR5cGVuYW1lIERpc3QsIGludCBBPgordm9pZCBCTV9HYW1tYShiZW5jaG1hcms6OlN0
YXRlJiBzdGF0ZSkgeworICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgRGlzdDo6cmVzdWx0
X3R5cGU7CisgIHZvbGF0aWxlIHZhbHVlX3R5cGUgYSA9IHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+
KEEpIC8gMTAwOworICBCTV9EaXN0PEVuZ2luZSwgRGlzdD4oc3RhdGUsIGEpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRW5naW5lLCB0eXBlbmFtZSBEaXN0LCBpbnQgQSA9IDEwMD4KK3ZvaWQg
Qk1fUG9pc3NvbihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICB2b2xhdGlsZSBkb3VibGUg
YSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oQSkgLyAxMDA7CisgIEJNX0Rpc3Q8RW5naW5lLCBEaXN0
PihzdGF0ZSwgYSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmdpbmUsIHR5cGVuYW1lIERp
c3QsIGludCBRID0gMiwgaW50IFYgPSAxPgordm9pZCBCTV9aaXBmKGJlbmNobWFyazo6U3RhdGUm
IHN0YXRlKSB7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBEaXN0OjpyZXN1bHRfdHlw
ZTsKKyAgdm9sYXRpbGUgZG91YmxlIHEgPSBROworICB2b2xhdGlsZSBkb3VibGUgdiA9IFY7Cisg
IEJNX0Rpc3Q8RW5naW5lLCBEaXN0PihzdGF0ZSwgc3RkOjpudW1lcmljX2xpbWl0czx2YWx1ZV90
eXBlPjo6bWF4KCksIHEsIHYpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5naW5lLCB0eXBl
bmFtZSBEaXN0Pgordm9pZCBCTV9UaHJlYWQoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAg
dXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIERpc3Q6OnJlc3VsdF90eXBlOworICBhdXRvIHJu
ZyA9IG1ha2VfZW5naW5lPEVuZ2luZT4oKTsKKyAgRGlzdCBkaXN7fTsKKyAgZm9yIChhdXRvIF8g
OiBzdGF0ZSkgeworICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShkaXMocm5nKSk7CisgIH0K
KyAgc3RhdGUuU2V0Qnl0ZXNQcm9jZXNzZWQoc2l6ZW9mKHZhbHVlX3R5cGUpICogc3RhdGUuaXRl
cmF0aW9ucygpKTsKK30KKworLy8gTk9URVM6CisvLworLy8gc3RkOjpnZW9tZXRyaWNfZGlzdHJp
YnV0aW9uIGlzIHNpbWlsYXIgdG8gdGhlIHppcGYgZGlzdHJpYnV0aW9ucy4KKy8vIFRoZSBhbGdv
cml0aG0gZm9yIHRoZSBnZW9tZXRyaWNfZGlzdHJpYnV0aW9uIGlzLCBiYXNpY2FsbHksCisvLyBm
bG9vcihsb2coMS1YKSAvIGxvZygxLXApKQorCisvLyBOb3JtYWwgYmVuY2htYXJrIHN1aXRlCisj
ZGVmaW5lIEJNX0JBU0lDKEVuZ2luZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fQ29uc3RydWN0
LCBFbmdpbmUsIFByZWNvbXBpbGVkU2VlZFNlcSk7ICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hN
QVJLX1RFTVBMQVRFKEJNX0NvbnN0cnVjdCwgRW5naW5lLCBzdGQ6OnNlZWRfc2VxKTsgICAgICAg
ICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9EaXJlY3QsIEVuZ2luZSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVN
UExBVEUoQk1fU2h1ZmZsZSwgRW5naW5lLCAxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NodWZmbGUsIEVuZ2luZSwgMTAwKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShC
TV9TaHVmZmxlLCBFbmdpbmUsIDEwMDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fU2h1ZmZsZVJldXNlLCBFbmdpbmUsIDEwMCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NodWZm
bGVSZXVzZSwgRW5naW5lLCAxMDAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJF
TkNITUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6cmFuZG9tX2lu
dGVybmFsOjpGYXN0VW5pZm9ybUJpdHM8dWludDMyX3Q+KTsgICAgICAgIFwKKyAgQkVOQ0hNQVJL
X1RFTVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OkZhc3RVbmlmb3JtQml0czx1aW50NjRfdD4pOyAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExB
VEUoQk1fRGlzdCwgRW5naW5lLCBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQzMl90
Pik7IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwgc3RkOjp1bmlmb3Jt
X2ludF9kaXN0cmlidXRpb248aW50NjRfdD4pOyBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9E
aXN0LCBFbmdpbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDMy
X3Q+KTsgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Rpc3QsIEVu
Z2luZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgICAgICBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50NjRfdD4pOyAg
ICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fTGFyZ2UsIEVuZ2luZSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDMyX3Q+KTsgICAgICAgICAg
ICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9MYXJnZSwgRW5naW5lLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAg
c3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50NjRfdD4pOyAgICAgICAgICAgICAgICAg
IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0xhcmdlLCBFbmdpbmUsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBhYnNsOjp1
bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50MzJfdD4pOyAgICAgICAgICAgICAgICAgXAorICBC
RU5DSE1BUktfVEVNUExBVEUoQk1fTGFyZ2UsIEVuZ2luZSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6OnVuaWZvcm1f
aW50X2Rpc3RyaWJ1dGlvbjxpbnQ2NF90Pik7ICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFS
S19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsIHN0ZDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlv
bjxmbG9hdD4pOyAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5lLCBzdGQ6
OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248ZG91YmxlPik7IFwKKyAgQkVOQ0hNQVJLX1RFTVBM
QVRFKEJNX0Rpc3QsIEVuZ2luZSwgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxmbG9h
dD4pOyBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsIGFic2w6OnVuaWZv
cm1fcmVhbF9kaXN0cmlidXRpb248ZG91YmxlPikKKworI2RlZmluZSBCTV9DT1BZKEVuZ2luZSkg
QkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0dlbmVyYXRlLCBFbmdpbmUpCisKKyNkZWZpbmUgQk1fVEhS
RUFEKEVuZ2luZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICBCRU5DSE1BUktfVEVNUExBVEUoQk1fVGhyZWFkLCBFbmdpbmUsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBhYnNsOjp1bmlmb3JtX2ludF9kaXN0
cmlidXRpb248aW50NjRfdD4pICAgICAgIFwKKyAgICAgIC0+VGhyZWFkUGVyQ3B1KCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVN
UExBVEUoQk1fVGhyZWFkLCBFbmdpbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGRvdWJs
ZT4pICAgICAgIFwKKyAgICAgIC0+VGhyZWFkUGVyQ3B1KCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fU2h1ZmZs
ZSwgRW5naW5lLCAxMDApLT5UaHJlYWRQZXJDcHUoKTsgICAgICBcCisgIEJFTkNITUFSS19URU1Q
TEFURShCTV9TaHVmZmxlLCBFbmdpbmUsIDEwMDApLT5UaHJlYWRQZXJDcHUoKTsgICAgIFwKKyAg
QkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NodWZmbGVSZXVzZSwgRW5naW5lLCAxMDApLT5UaHJlYWRQ
ZXJDcHUoKTsgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fU2h1ZmZsZVJldXNlLCBFbmdpbmUs
IDEwMDApLT5UaHJlYWRQZXJDcHUoKTsKKworI2RlZmluZSBCTV9FWFRFTkRFRChFbmdpbmUpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgLyog
LS0tLS0tLS0tLS0tLS0gRXh0ZW5kZWQgVW5pZm9ybSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
ICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9TbWFsbCwgRW5naW5l
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50MzJfdD4pOyAgICAgICAg
ICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NtYWxsLCBFbmdpbmUsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ2NF90Pik7ICAgICAgICAgICAgICAg
ICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fU21hbGwsIEVuZ2luZSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6
OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQzMl90Pik7ICAgICAgICAgICAgICAgICBcCisg
IEJFTkNITUFSS19URU1QTEFURShCTV9TbWFsbCwgRW5naW5lLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgYWJzbDo6dW5pZm9y
bV9pbnRfZGlzdHJpYnV0aW9uPGludDY0X3Q+KTsgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hN
QVJLX1RFTVBMQVRFKEJNX1NtYWxsLCBFbmdpbmUsIHN0ZDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1
dGlvbjxmbG9hdD4pOyBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9TbWFsbCwgRW5naW5lLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4pOyAgICAgICAgICAg
ICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1NtYWxsLCBFbmdpbmUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBh
YnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGZsb2F0Pik7ICAgICAgICAgICAgICAgICAg
XAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fU21hbGwsIEVuZ2luZSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6OnVu
aWZvcm1fcmVhbF9kaXN0cmlidXRpb248ZG91YmxlPik7ICAgICAgICAgICAgICAgICBcCisgIC8q
IC0tLS0tLS0tLS0tLS0tIE90aGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5l
LCBzdGQ6Om5vcm1hbF9kaXN0cmlidXRpb248ZG91YmxlPik7ICAgICAgIFwKKyAgQkVOQ0hNQVJL
X1RFTVBMQVRFKEJNX0Rpc3QsIEVuZ2luZSwgYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uPGRv
dWJsZT4pOyAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsIHN0ZDo6
ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4pOyAgXAorICBCRU5DSE1BUktfVEVNUExB
VEUoQk1fRGlzdCwgRW5naW5lLCBhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248ZG91Ymxl
Pik7IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1BvaXNzb24sIEVuZ2luZSwgc3RkOjpwb2lz
c29uX2Rpc3RyaWJ1dGlvbjxpbnQ2NF90PiwgICBcCisgICAgICAgICAgICAgICAgICAgICAxMDAp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICBCRU5DSE1BUktfVEVNUExBVEUoQk1fUG9pc3NvbiwgRW5naW5lLCBhYnNsOjpwb2lzc29uX2Rp
c3RyaWJ1dGlvbjxpbnQ2NF90PiwgIFwKKyAgICAgICAgICAgICAgICAgICAgIDEwMCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNI
TUFSS19URU1QTEFURShCTV9Qb2lzc29uLCBFbmdpbmUsIHN0ZDo6cG9pc3Nvbl9kaXN0cmlidXRp
b248aW50NjRfdD4sICAgXAorICAgICAgICAgICAgICAgICAgICAgMTAgKiAxMDApOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RF
TVBMQVRFKEJNX1BvaXNzb24sIEVuZ2luZSwgYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248aW50
NjRfdD4sICBcCisgICAgICAgICAgICAgICAgICAgICAxMCAqIDEwMCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUo
Qk1fUG9pc3NvbiwgRW5naW5lLCBzdGQ6OnBvaXNzb25fZGlzdHJpYnV0aW9uPGludDY0X3Q+LCAg
IFwKKyAgICAgICAgICAgICAgICAgICAgIDEzICogMTAwKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9Qb2lz
c29uLCBFbmdpbmUsIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPGludDY0X3Q+LCAgXAorICAg
ICAgICAgICAgICAgICAgICAgMTMgKiAxMDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0Rpc3QsIEVuZ2lu
ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDMyX3Q+KTsg
ICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fRGlzdCwgRW5naW5lLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAg
ICAgIGFic2w6OmxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50NjRfdD4pOyAgICAgICAg
ICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9EaXN0LCBFbmdpbmUsIHN0ZDo6Z2VvbWV0
cmljX2Rpc3RyaWJ1dGlvbjxpbnQ2NF90Pik7ICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1f
WmlwZiwgRW5naW5lLCBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjx1aW50NjRfdD4pOyAgICAgIFwK
KyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX1ppcGYsIEVuZ2luZSwgYWJzbDo6emlwZl9kaXN0cmli
dXRpb248dWludDY0X3Q+LCAyLCAgICBcCisgICAgICAgICAgICAgICAgICAgICAzKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5D
SE1BUktfVEVNUExBVEUoQk1fQmVybm91bGxpLCBFbmdpbmUsIHN0ZDo6YmVybm91bGxpX2Rpc3Ry
aWJ1dGlvbiwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIDI1NzMwNSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19U
RU1QTEFURShCTV9CZXJub3VsbGksIEVuZ2luZSwgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlv
biwgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgMjU3MzA1KTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRF
KEJNX0JldGEsIEVuZ2luZSwgYWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZG91YmxlPiwgNjUsICAg
ICBcCisgICAgICAgICAgICAgICAgICAgICA0MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fQmV0
YSwgRW5naW5lLCBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxkb3VibGU+LCA5OSwgICAgIFwKKyAg
ICAgICAgICAgICAgICAgICAgIDMzMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9CZXRhLCBFbmdp
bmUsIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPGRvdWJsZT4sIDE1MCwgICAgXAorICAgICAgICAg
ICAgICAgICAgICAgMTUwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0JldGEsIEVuZ2luZSwgYWJz
bDo6YmV0YV9kaXN0cmlidXRpb248ZG91YmxlPiwgNDEwLCAgICBcCisgICAgICAgICAgICAgICAg
ICAgICA1ODApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fQmV0YSwgRW5naW5lLCBhYnNsOjpiZXRh
X2Rpc3RyaWJ1dGlvbjxmbG9hdD4sIDY1LCA0MSk7IFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJN
X0JldGEsIEVuZ2luZSwgYWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZmxvYXQ+LCA5OSwgICAgICBc
CisgICAgICAgICAgICAgICAgICAgICAzMzApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICBCRU5DSE1BUktfVEVNUExBVEUoQk1fQmV0YSwg
RW5naW5lLCBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxmbG9hdD4sIDE1MCwgICAgIFwKKyAgICAg
ICAgICAgICAgICAgICAgIDE1MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgIEJFTkNITUFSS19URU1QTEFURShCTV9CZXRhLCBFbmdpbmUs
IGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPGZsb2F0PiwgNDEwLCAgICAgXAorICAgICAgICAgICAg
ICAgICAgICAgNTgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgQkVOQ0hNQVJLX1RFTVBMQVRFKEJNX0dhbW1hLCBFbmdpbmUsIHN0ZDo6
Z2FtbWFfZGlzdHJpYnV0aW9uPGZsb2F0PiwgMTk5KTsgICBcCisgIEJFTkNITUFSS19URU1QTEFU
RShCTV9HYW1tYSwgRW5naW5lLCBzdGQ6OmdhbW1hX2Rpc3RyaWJ1dGlvbjxkb3VibGU+LCAxOTkp
OworCisvLyBBQlNMIFJlY29tbWVuZGVkIGludGVyZmFjZXMuCitCTV9CQVNJQyhhYnNsOjpJbnNl
Y3VyZUJpdEdlbik7ICAvLyA9PT0gcGNnNjRfMjAxOF9lbmdpbmUKK0JNX0JBU0lDKGFic2w6OkJp
dEdlbik7ICAgIC8vID09PSByYW5kZW5fZW5naW5lPHVpbnQ2NF90Pi4KK0JNX1RIUkVBRChhYnNs
OjpCaXRHZW4pOworQk1fRVhURU5ERUQoYWJzbDo6Qml0R2VuKTsKKworLy8gSW5zdGFudGlhdGUg
YmVuY2htYXJrcyBmb3IgbXVsdGlwbGUgZW5naW5lcy4KK3VzaW5nIHJhbmRlbl9lbmdpbmVfNjQg
PSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnJhbmRlbl9lbmdpbmU8dWludDY0X3Q+OwordXNpbmcg
cmFuZGVuX2VuZ2luZV8zMiA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTx1
aW50MzJfdD47CisKKy8vIENvbXBhcmlzb24gaW50ZXJmYWNlcy4KK0JNX0JBU0lDKHN0ZDo6bXQx
OTkzN182NCk7CitCTV9DT1BZKHN0ZDo6bXQxOTkzN182NCk7CitCTV9FWFRFTkRFRChzdGQ6Om10
MTk5MzdfNjQpOworQk1fQkFTSUMocmFuZGVuX2VuZ2luZV82NCk7CitCTV9DT1BZKHJhbmRlbl9l
bmdpbmVfNjQpOworQk1fRVhURU5ERUQocmFuZGVuX2VuZ2luZV82NCk7CisKK0JNX0JBU0lDKHN0
ZDo6bXQxOTkzNyk7CitCTV9DT1BZKHN0ZDo6bXQxOTkzNyk7CitCTV9CQVNJQyhyYW5kZW5fZW5n
aW5lXzMyKTsKK0JNX0NPUFkocmFuZGVuX2VuZ2luZV8zMik7CisKK30gIC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Jlcm5vdWxsaV9kaXN0cmlidXRpb24uaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI2ZmNiNmUwMTJk
YzUxYjdjZWMyMDU0Yzk3MTEwNTAzYjBiMmM3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uLmgKQEAgLTAsMCArMSwxOTggQEAKKy8vIENvcHly
aWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0JF
Uk5PVUxMSV9ESVNUUklCVVRJT05fSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fQkVSTk9VTExJX0RJ
U1RSSUJVVElPTl9IXworCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpc3RyZWFtPgor
I2luY2x1ZGUgPGxpbWl0cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9vcHRpbWl6YXRpb24uaCIK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyLmgiCisKK25h
bWVzcGFjZSBhYnNsIHsKKworLy8gYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiBpcyBhIGRy
b3AgaW4gcmVwbGFjZW1lbnQgZm9yCisvLyBzdGQ6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24uIEl0
IGd1YXJhbnRlZXMgdGhhdCAoZ2l2ZW4gYSBwZXJmZWN0CisvLyBVbmlmb3JtUmFuZG9tQml0R2Vu
ZXJhdG9yKSB0aGUgYWNjZXB0YW5jZSBwcm9iYWJpbGl0eSBpcyAqZXhhY3RseSogZXF1YWwgdG8K
Ky8vIHRoZSBnaXZlbiBkb3VibGUuCisvLworLy8gVGhlIGltcGxlbWVudGF0aW9uIGFzc3VtZXMg
dGhhdCBkb3VibGUgaXMgSUVFRTc1NAorY2xhc3MgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbiB7Cisg
cHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IGJvb2w7CisKKyAgY2xhc3MgcGFyYW1fdHlw
ZSB7CisgICBwdWJsaWM6CisgICAgdXNpbmcgZGlzdHJpYnV0aW9uX3R5cGUgPSBiZXJub3VsbGlf
ZGlzdHJpYnV0aW9uOworCisgICAgZXhwbGljaXQgcGFyYW1fdHlwZShkb3VibGUgcCA9IDAuNSkg
OiBwcm9iXyhwKSB7CisgICAgICBhc3NlcnQocCA+PSAwLjAgJiYgcCA8PSAxLjApOworICAgIH0K
KworICAgIGRvdWJsZSBwKCkgY29uc3QgeyByZXR1cm4gcHJvYl87IH0KKworICAgIGZyaWVuZCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgcDEsIGNvbnN0IHBhcmFtX3R5cGUmIHAy
KSB7CisgICAgICByZXR1cm4gcDEucCgpID09IHAyLnAoKTsKKyAgICB9CisgICAgZnJpZW5kIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBwYXJhbV90eXBlJiBwMSwgY29uc3QgcGFyYW1fdHlwZSYgcDIp
IHsKKyAgICAgIHJldHVybiBwMS5wKCkgIT0gcDIucCgpOworICAgIH0KKworICAgcHJpdmF0ZToK
KyAgICBkb3VibGUgcHJvYl87CisgIH07CisKKyAgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbigpIDog
YmVybm91bGxpX2Rpc3RyaWJ1dGlvbigwLjUpIHt9CisKKyAgZXhwbGljaXQgYmVybm91bGxpX2Rp
c3RyaWJ1dGlvbihkb3VibGUgcCkgOiBwYXJhbV8ocCkge30KKworICBleHBsaWNpdCBiZXJub3Vs
bGlfZGlzdHJpYnV0aW9uKHBhcmFtX3R5cGUgcCkgOiBwYXJhbV8ocCkge30KKworICAvLyBuby1v
cAorICB2b2lkIHJlc2V0KCkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgYm9v
bCBvcGVyYXRvcigpKFVSQkcmIGcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisg
ICAgcmV0dXJuIEdlbmVyYXRlKHBhcmFtXy5wKCksIGcpOworICB9CisKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFVSQkc+CisgIGJvb2wgb3BlcmF0b3IoKShVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRp
bWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIHBhcmFt
KSB7CisgICAgcmV0dXJuIEdlbmVyYXRlKHBhcmFtLnAoKSwgZyk7CisgIH0KKworICBwYXJhbV90
eXBlIHBhcmFtKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQgcGFyYW0oY29uc3Qg
cGFyYW1fdHlwZSYgcGFyYW0pIHsgcGFyYW1fID0gcGFyYW07IH0KKworICBkb3VibGUgcCgpIGNv
bnN0IHsgcmV0dXJuIHBhcmFtXy5wKCk7IH0KKworICByZXN1bHRfdHlwZShtaW4pKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgcmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGJlcm5vdWxsaV9kaXN0cmli
dXRpb24mIGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlcm5vdWxsaV9kaXN0
cmlidXRpb24mIGQyKSB7CisgICAgcmV0dXJuIGQxLnBhcmFtXyA9PSBkMi5wYXJhbV87CisgIH0K
KworICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGJlcm5vdWxsaV9kaXN0cmlidXRpb24m
IGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlcm5vdWxsaV9kaXN0cmlidXRp
b24mIGQyKSB7CisgICAgcmV0dXJuIGQxLnBhcmFtXyAhPSBkMi5wYXJhbV87CisgIH0KKworIHBy
aXZhdGU6CisgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qga1AzMiA9IHN0YXRpY19jYXN0PHVp
bnQ2NF90PigxKSA8PCAzMjsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgc3RhdGlj
IGJvb2wgR2VuZXJhdGUoZG91YmxlIHAsIFVSQkcmIGcpOyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVm
ZXJlbmNlcykKKworICBwYXJhbV90eXBlIHBhcmFtXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFp
dHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYg
b3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0IGJlcm5vdWxsaV9k
aXN0cmlidXRpb24mIHgpIHsKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9v
c3RyZWFtX3N0YXRlX3NhdmVyKG9zKTsKKyAgb3MucHJlY2lzaW9uKHJhbmRvbV9pbnRlcm5hbDo6
c3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8ZG91YmxlPjo6a1ByZWNpc2lvbik7CisgIG9zIDw8IHgu
cCgpOworICByZXR1cm4gb3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5h
bWUgVHJhaXRzPgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcj4+
KAorICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAvLyBOT0xJTlQo
cnVudGltZS9yZWZlcmVuY2VzKQorICAgIGJlcm5vdWxsaV9kaXN0cmlidXRpb24mIHgpIHsgICAg
ICAgICAgICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICBhdXRvIHNhdmVyID0gcmFu
ZG9tX2ludGVybmFsOjptYWtlX2lzdHJlYW1fc3RhdGVfc2F2ZXIoaXMpOworICBhdXRvIHAgPSBy
YW5kb21faW50ZXJuYWw6OnJlYWRfZmxvYXRpbmdfcG9pbnQ8ZG91YmxlPihpcyk7CisgIGlmICgh
aXMuZmFpbCgpKSB7CisgICAgeC5wYXJhbShiZXJub3VsbGlfZGlzdHJpYnV0aW9uOjpwYXJhbV90
eXBlKHApKTsKKyAgfQorICByZXR1cm4gaXM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJH
PgorYm9vbCBiZXJub3VsbGlfZGlzdHJpYnV0aW9uOjpHZW5lcmF0ZShkb3VibGUgcCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJCRyYgZykgeyAgLy8gTk9MSU5UKHJ1
bnRpbWUvcmVmZXJlbmNlcykKKyAgcmFuZG9tX2ludGVybmFsOjpGYXN0VW5pZm9ybUJpdHM8dWlu
dDMyX3Q+IGZhc3RfdTMyOworCisgIHdoaWxlICh0cnVlKSB7CisgICAgLy8gVGhlcmUgYXJlIHR3
byBhc3BlY3RzIG9mIHRoZSBkZWZpbml0aW9uIG9mIGBjYCBiZWxvdyB0aGF0IGFyZSB3b3J0aAor
ICAgIC8vIGNvbW1lbnRpbmcgb24uICBGaXJzdCwgYmVjYXVzZSBgcGAgaXMgaW4gdGhlIHJhbmdl
IFswLCAxXSwgYGNgIGlzIGluIHRoZQorICAgIC8vIHJhbmdlIFswLCAyXjMyXSB3aGljaCBkb2Vz
IG5vdCBmaXQgaW4gYSB1aW50MzJfdCBhbmQgdGhlcmVmb3JlIHJlcXVpcmVzCisgICAgLy8gNjQg
Yml0cy4KKyAgICAvLworICAgIC8vIFNlY29uZCwgYGNgIGlzIGNvbnN0cnVjdGVkIGJ5IGZpcnN0
IGNhc3RpbmcgZXhwbGljaXRseSB0byBhIHNpZ25lZAorICAgIC8vIGludGVnZXIgYW5kIHRoZW4g
Y29udmVydGluZyBpbXBsaWNpdGx5IHRvIGFuIHVuc2lnbmVkIGludGVnZXIgb2YgdGhlIHNhbWUK
KyAgICAvLyBzaXplLiAgVGhpcyBpcyBkb25lIGJlY2F1c2UgdGhlIGhhcmR3YXJlIGNvbnZlcnNp
b24gaW5zdHJ1Y3Rpb25zIHByb2R1Y2UKKyAgICAvLyBzaWduZWQgaW50ZWdlcnMgZnJvbSBkb3Vi
bGU7IGlmIHRha2VuIGFzIGEgdWludDY0X3QgdGhlIGNvbnZlcnNpb24gd291bGQKKyAgICAvLyBi
ZSB3cm9uZyBmb3IgZG91YmxlcyBncmVhdGVyIHRoYW4gMl42MyAobm90IHJlbGV2YW50IGluIHRo
aXMgdXNlLWNhc2UpLgorICAgIC8vIElmIGNvbnZlcnRlZCBkaXJlY3RseSB0byBhbiB1bnNpZ25l
ZCBpbnRlZ2VyLCB0aGUgY29tcGlsZXIgd291bGQgZW5kIHVwCisgICAgLy8gZW1pdHRpbmcgY29k
ZSB0byBoYW5kbGUgc3VjaCBsYXJnZSB2YWx1ZXMgdGhhdCBhcmUgbm90IHJlbGV2YW50IGR1ZSB0
bworICAgIC8vIHRoZSBrbm93biBib3VuZHMgb24gYGNgLiAgVG8gYXZvaWQgdGhlc2UgZXh0cmEg
aW5zdHJ1Y3Rpb25zIHRoaXMKKyAgICAvLyBpbXBsZW1lbnRhdGlvbiBjb252ZXJ0cyBmaXJzdCB0
byB0aGUgc2lnbmVkIHR5cGUgYW5kIHRoZW4gdXNlIHRoZQorICAgIC8vIGltcGxpY2l0IGNvbnZl
cnNpb24gdG8gdW5zaWduZWQgKHdoaWNoIGlzIGEgbm8tb3ApLgorICAgIGNvbnN0IHVpbnQ2NF90
IGMgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihwICoga1AzMik7CisgICAgY29uc3QgdWludDMyX3Qg
diA9IGZhc3RfdTMyKGcpOworICAgIC8vIEZBU1QgUEFUSDogdGhpcyBwYXRoIGZhaWxzIHdpdGgg
cHJvYmFiaWxpdHkgMS8yXjMyLiAgTm90ZSB0aGF0IHNpbXBseQorICAgIC8vIHJldHVybmluZyB2
IDw9IGMgd291bGQgYXBwcm94aW1hdGUgUCB2ZXJ5IHdlbGwgKHVwIHRvIGFuIGFic29sdXRlIGVy
cm9yCisgICAgLy8gb2YgMS8yXjMyKTsgdGhlIHNsb3cgcGF0aCAodGFrZW4gaW4gdGhhdCByYW5n
ZSBvZiBwb3NzaWJsZSBlcnJvciwgaW4gdGhlCisgICAgLy8gY2FzZSBvZiBlcXVhbGl0eSkgZWxp
bWluYXRlcyB0aGUgcmVtYWluaW5nIGVycm9yLgorICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRSh2
ICE9IGMpKSByZXR1cm4gdiA8IGM7CisKKyAgICAvLyBJdCBpcyBndWFyYW50ZWVkIHRoYXQgYHFg
IGlzIHN0cmljdGx5IGxlc3MgdGhhbiAxLCBiZWNhdXNlIGlmIGBxYCB3ZXJlCisgICAgLy8gZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIHRoZSBzYW1lIHdvdWxkIGJlIHRydWUgZm9yIGBwYC4g
Q2VydGFpbmx5IGBwYAorICAgIC8vIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gMSwgYW5kIGlmIGBw
ID09IDFgLCB0aGVuIHRoZSBmYXN0IHBhdGggd291bGQKKyAgICAvLyBuZWNlc3NhcnkgaGF2ZSBi
ZWVuIHRha2VuIGFscmVhZHkuCisgICAgY29uc3QgZG91YmxlIHEgPSBzdGF0aWNfY2FzdDxkb3Vi
bGU+KGMpIC8ga1AzMjsKKworICAgIC8vIFRoZSBwcm9iYWJpbGl0eSBvZiBhY2NlcHRhbmNlIG9u
IHRoZSBmYXN0IHBhdGggaXMgYHFgIGFuZCBzbyB0aGUKKyAgICAvLyBwcm9iYWJpbGl0eSBvZiBh
Y2NlcHRhbmNlIGhlcmUgc2hvdWxkIGJlIGBwIC0gcWAuCisgICAgLy8KKyAgICAvLyBOb3RlIHRo
YXQgYHFgIGlzIG9idGFpbmVkIGZyb20gYHBgIHZpYSBzb21lIHNoaWZ0cyBhbmQgY29udmVyc2lv
bnMsIHRoZQorICAgIC8vIHVwc2hvdCBvZiB3aGljaCBpcyB0aGF0IGBxYCBpcyBzaW1wbHkgYHBg
IHdpdGggc29tZSBvZiB0aGUKKyAgICAvLyBsZWFzdC1zaWduaWZpY2FudCBiaXRzIG9mIGl0cyBt
YW50aXNzYSBzZXQgdG8gemVyby4gVGhpcyBtZWFucyB0aGF0IHRoZQorICAgIC8vIGRpZmZlcmVu
Y2UgYHAgLSBxYCB3aWxsIG5vdCBoYXZlIGFueSByb3VuZGluZyBlcnJvcnMuIFRvIHNlZSB3aHks
IHByZXRlbmQKKyAgICAvLyB0aGF0IGRvdWJsZSBoYXMgMTAgYml0cyBvZiByZXNvbHV0aW9uIGFu
ZCBxIGlzIG9idGFpbmVkIGZyb20gYHBgIGluIHN1Y2gKKyAgICAvLyBhIHdheSB0aGF0IHRoZSA0
IGxlYXN0LXNpZ25pZmljYW50IGJpdHMgb2YgaXRzIG1hbnRpc3NhIGFyZSBzZXQgdG8gemVyby4K
KyAgICAvLyBGb3IgZXhhbXBsZToKKyAgICAvLyAgIHAgICA9IDEuMTEwMDExMTAxMSAqIDJeLTEK
KyAgICAvLyAgIHEgICA9IDEuMTEwMDExMDAwMCAqIDJeLTEKKyAgICAvLyBwIC0gcSA9IDEuMDEx
ICAgICAgICAqIDJeLTgKKyAgICAvLyBUaGUgZGlmZmVyZW5jZSBgcCAtIHFgIGhhcyBleGFjdGx5
IHRoZSBub256ZXJvIG1hbnRpc3NhIGJpdHMgdGhhdCB3ZXJlCisgICAgLy8gImxvc3QiIGluIGBx
YCBwcm9kdWNpbmcgYSBudW1iZXIgd2hpY2ggaXMgY2VydGFpbmx5IHJlcHJlc2VudGFibGUgaW4g
YQorICAgIC8vIGRvdWJsZS4KKyAgICBjb25zdCBkb3VibGUgbGVmdCA9IHAgLSBxOworCisgICAg
Ly8gQnkgY29uc3RydWN0aW9uLCB0aGUgcHJvYmFiaWxpdHkgb2YgYmVpbmcgb24gdGhpcyBzbG93
IHBhdGggaXMgMS8yXjMyLCBzbworICAgIC8vIFAoYWNjZXB0IGluIHNsb3cgcGF0aCkgPSBQKGFj
Y2VwdHwgaW4gc2xvdyBwYXRoKSAqIFAoc2xvdyBwYXRoKSwKKyAgICAvLyB3aGljaCBtZWFucyB0
aGUgcHJvYmFiaWxpdHkgb2YgYWNjZXB0YW5jZSBoZXJlIGlzIGAxIC8gKGxlZnQgKiBrUDMyKWA6
CisgICAgY29uc3QgZG91YmxlIGhlcmUgPSBsZWZ0ICoga1AzMjsKKworICAgIC8vIFRoZSBzaW1w
bGVzdCB3YXkgdG8gY29tcHV0ZSB0aGUgcmVzdWx0IG9mIHRoaXMgdHJpYWwgaXMgdG8gcmVwZWF0
IHRoZQorICAgIC8vIHdob2xlIGFsZ29yaXRobSB3aXRoIHRoZSBuZXcgcHJvYmFiaWxpdHkuIFRo
aXMgdGVybWluYXRlcyBiZWNhdXNlIGV2ZW4KKyAgICAvLyBnaXZlbiAgYXJiaXRyYXJpbHkgdW5m
cmllbmRseSAicmFuZG9tIiBiaXRzLCBlYWNoIGl0ZXJhdGlvbiBlaXRoZXIKKyAgICAvLyBtdWx0
aXBsaWVzIGEgdGlueSBwcm9iYWJpbGl0eSBieSAyXjMyIChpZiBjID09IDApIG9yIHN0cmlwcyBv
ZmYgc29tZQorICAgIC8vIG51bWJlciBvZiBub256ZXJvIG1hbnRpc3NhIGJpdHMuIFRoYXQgcHJv
Y2VzcyBpcyBib3VuZGVkLgorICAgIGlmIChoZXJlID09IDApIHJldHVybiBmYWxzZTsKKyAgICBw
ID0gaGVyZTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFC
U0xfUkFORE9NX0JFUk5PVUxMSV9ESVNUUklCVVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9iZXJub3VsbGlfZGlzdHJpYnV0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmVybm91
bGxpX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyYzNiOTljZDRmZmRjN2U3OWM4
MjRjZmJjOWQwMGZhODliNzhjMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmVy
bm91bGxpX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCkBAIC0wLDAgKzEsMjEzIEBACisvLyBDb3B5cmln
aHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2Jl
cm5vdWxsaV9kaXN0cmlidXRpb24uaCIKKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNz
dGRkZWY+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8
dXRpbGl0eT4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvc2VxdWVuY2VfdXJiZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3JhbmRv
bS5oIgorCituYW1lc3BhY2UgeworCitjbGFzcyBCZXJub3VsbGlUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3RXaXRoUGFyYW08c3RkOjpwYWlyPGRvdWJsZSwgc2l6ZV90Pj4geworfTsKKworVEVT
VF9QKEJlcm5vdWxsaVRlc3QsIFNlcmlhbGl6ZSkgeworICBjb25zdCBkb3VibGUgZCA9IEdldFBh
cmFtKCkuZmlyc3Q7CisgIGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gYmVmb3JlKGQpOwor
CisgIHsKKyAgICBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uIHZpYV9wYXJhbXsKKyAgICAg
ICAgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbjo6cGFyYW1fdHlwZShkKX07CisgICAgRVhQ
RUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNz
OworICBzcyA8PCBiZWZvcmU7CisgIGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24gYWZ0ZXIo
MC42Nzg5KTsKKworICBFWFBFQ1RfTkUoYmVmb3JlLnAoKSwgYWZ0ZXIucCgpKTsKKyAgRVhQRUNU
X05FKGJlZm9yZS5wYXJhbSgpLCBhZnRlci5wYXJhbSgpKTsKKyAgRVhQRUNUX05FKGJlZm9yZSwg
YWZ0ZXIpOworCisgIHNzID4+IGFmdGVyOworCisgIEVYUEVDVF9FUShiZWZvcmUucCgpLCBhZnRl
ci5wKCkpOworICBFWFBFQ1RfRVEoYmVmb3JlLnBhcmFtKCksIGFmdGVyLnBhcmFtKCkpOworICBF
WFBFQ1RfRVEoYmVmb3JlLCBhZnRlcik7Cit9CisKK1RFU1RfUChCZXJub3VsbGlUZXN0LCBBY2N1
cmFjeSkgeworICAvLyBTYWRseSwgdGhlIGNsYWltIHRvIGZhbWUgZm9yIHRoaXMgaW1wbGVtZW50
YXRpb24gaXMgcHJlY2lzZSBhY2N1cmFjeSwgd2hpY2gKKyAgLy8gaXMgdmVyeSwgdmVyeSBoYXJk
IHRvIG1lYXN1cmUsIHRoZSBpbXByb3ZlbWVudHMgY29tZSBhcyB0cmlhbHMgYXBwcm9hY2ggdGhl
CisgIC8vIGxpbWl0IG9mIGRvdWJsZSBhY2N1cmFjeTsgdGh1cyB0aGUgb3V0Y29tZSBkaWZmZXJz
IGZyb20gdGhlCisgIC8vIHN0ZDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiB3aXRoIGEgcHJvYmFi
aWxpdHkgb2YgYXBwcm94aW1hdGVseSAxIGluIDJeLTUzLgorICBjb25zdCBzdGQ6OnBhaXI8ZG91
YmxlLCBzaXplX3Q+IHBhcmEgPSBHZXRQYXJhbSgpOworICBzaXplX3QgdHJpYWxzID0gcGFyYS5z
ZWNvbmQ7CisgIGRvdWJsZSBwID0gcGFyYS5maXJzdDsKKworICBhYnNsOjpJbnNlY3VyZUJpdEdl
biBybmc7CisKKyAgc2l6ZV90IHllcyA9IDA7CisgIGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRp
b24gZGlzdChwKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmlhbHM7ICsraSkgeworICAg
IGlmIChkaXN0KHJuZykpIHllcysrOworICB9CisKKyAgLy8gQ29tcHV0ZSB0aGUgZGlzdHJpYnV0
aW9uIHBhcmFtZXRlcnMgZm9yIGEgYmlub21pYWwgdGVzdCwgdXNpbmcgYSBub3JtYWwKKyAgLy8g
YXBwcm94aW1hdGlvbiBmb3IgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWwsIGFzIHRoZXJlIGFyZSBh
IHN1ZmZpY2llbnRseQorICAvLyBsYXJnZSBudW1iZXIgb2YgdHJpYWxzIHRoYXQgdGhlIGNlbnRy
YWwgbGltaXQgdGhlb3JlbSBhcHBsaWVzLgorICBjb25zdCBkb3VibGUgc3RkZGV2X3AgPSBzdGQ6
OnNxcnQoKHAgKiAoMS4wIC0gcCkpIC8gdHJpYWxzKTsKKyAgY29uc3QgZG91YmxlIGV4cGVjdGVk
ID0gdHJpYWxzICogcDsKKyAgY29uc3QgZG91YmxlIHN0ZGRldiA9IHRyaWFscyAqIHN0ZGRldl9w
OworCisgIC8vIDUgc2lnbWEsIGFwcHJvdmVkIGJ5IFJpY2hhcmQgRmV5bm1hbgorICBFWFBFQ1Rf
TkVBUih5ZXMsIGV4cGVjdGVkLCA1ICogc3RkZGV2KQorICAgICAgPDwgIkAiIDw8IHAgPDwgIiwg
IgorICAgICAgPDwgc3RkOjphYnMoc3RhdGljX2Nhc3Q8ZG91YmxlPih5ZXMpIC0gZXhwZWN0ZWQp
IC8gc3RkZGV2IDw8ICIgc3RkZGV2IjsKK30KKworLy8gVGhlcmUgbXVzdCBiZSBtYW55IG1vcmUg
dHJpYWxzIHRvIG1ha2UgdGhlIG1lYW4gYXBwcm94aW1hdGVseSBub3JtYWwgZm9yIGBwYAorLy8g
Y2xvc2VzIHRvIDAgb3IgMS4KK0lOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCgKKyAgICBBbGwsIEJl
cm5vdWxsaVRlc3QsCisgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoCisgICAgICAgIC8vIFR5cGljYWwg
dmFsdWVzLgorICAgICAgICBzdGQ6Om1ha2VfcGFpcigwLCAzMDAwMCksIHN0ZDo6bWFrZV9wYWly
KDFlLTMsIDMwMDAwMDAwKSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoMC4xLCAzMDAwMDAwKSwg
c3RkOjptYWtlX3BhaXIoMC41LCAzMDAwMDAwKSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoMC45
LCAzMDAwMDAwMCksIHN0ZDo6bWFrZV9wYWlyKDAuOTk5LCAzMDAwMDAwMCksCisgICAgICAgIHN0
ZDo6bWFrZV9wYWlyKDEsIDMwMDAwKSwKKyAgICAgICAgLy8gQm91bmRhcnkgY2FzZXMuCisgICAg
ICAgIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bmV4dGFmdGVyKDEuMCwgMC4wKSwgMSksICAvLyB+MSAt
IGVwc2lsb24KKyAgICAgICAgc3RkOjptYWtlX3BhaXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjplcHNpbG9uKCksIDEpLAorICAgICAgICBzdGQ6Om1ha2VfcGFpcihzdGQ6Om5leHRhZnRl
cihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxLjApLCAgLy8gbWluICsgZXBzaWxvbgorICAgICAgICAgICAg
ICAgICAgICAgICAxKSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjptaW4oKSwgIC8vIHNtYWxsZXN0IG5vcm1hbAorICAgICAgICAgICAgICAgICAg
ICAgICAxKSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoCisgICAgICAgICAgICBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OmRlbm9ybV9taW4oKSwgIC8vIHNtYWxsZXN0IGRlbm9ybQorICAg
ICAgICAgICAgMSksCisgICAgICAgIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6bWluKCkgLyAyLCAxKSwgIC8vIGRlbm9ybQorICAgICAgICBzdGQ6Om1ha2VfcGFp
cihzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjApLCAgLy8gZGVub3JtX21heAor
ICAgICAgICAgICAgICAgICAgICAgICAxKSkpOworCisvLyBOT1RFOiBhYnNsOjpiZXJub3VsbGlf
ZGlzdHJpYnV0aW9uIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4KK1RFU1QoQmVybm91
bGxpVGVzdCwgU3RhYmlsaXR5VGVzdCkgeworICAvLyBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0
aW9uIHN0YWJpbGl0eSByZWxpZXMgb24gRmFzdFVuaWZvcm1CaXRzIGFuZAorICAvLyBpbnRlZ2Vy
IGFyaXRobWV0aWMuCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJn
KHsKKyAgICAgIDB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHhGRkNFQTUwRkRCMkY5NTNCdWxsLCAw
eEMzMzJEREVGQkU2QzVBQTV1bGwsCisgICAgICAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4MkFF
RjdEQUQ1QjZFMkY4NHVsbCwgMHgxNTIxQjYyODI5MDc2MTcwdWxsLAorICAgICAgMHhFQ0RENDc3
NTYxOUYxNTEwdWxsLCAweDEzQ0NBODMwRUI2MUJEOTZ1bGwsIDB4MDMzNEZFMUVBQTAzNjNDRnVs
bCwKKyAgICAgIDB4QjU3MzVDOTA0QzcwQTIzOXVsbCwgMHhENTlFOUUwQkNCQUFERTE0dWxsLCAw
eEVFQ0M4NkJDNjA2MjJDQTd1bGwsCisgICAgICAweDQ4NjRmMjJjMDU5YmYyOWV1bGwsIDB4MjQ3
ODU2ZDhiODYyNjY1Y3VsbCwgMHhlNDZlODZlOWExMzM3ZTEwdWxsLAorICAgICAgMHhkOGM4NTQx
ZjM1MTliMTMzdWxsLCAweGU3NWI1MTYyYzU2N2I5ZTR1bGwsIDB4ZjczMmU1ZGVkNzAwOWM1YnVs
bCwKKyAgICAgIDB4YjE3MGI5ODM1MzEyMWVhY3VsbCwgMHgxZWMyZTg5ODZkMjM2MmNhdWxsLCAw
eDgxNGM4ZTM1ZmU5YTk2MWF1bGwsCisgICAgICAweDBjM2NkNTljOWI2MzhhMDJ1bGwsIDB4Y2Iz
YmI2NDc4YTA3NzE1Y3VsbCwgMHgxMjI0ZTYyYzk3OGJiYzdmdWxsLAorICAgICAgMHg2NzFlZjJj
YjA0ZTgxZjZldWxsLCAweDNjMWNiZDgxMWVhZjE4MDh1bGwsIDB4MWJiYzIzY2ZhOGZhYzcyMXVs
bCwKKyAgICAgIDB4YTRjMmNkYTY1ZTU5NmE1MXVsbCwgMHhiNzcyMTZmYWQzN2FkZjkxdWxsLCAw
eDgzNmQ3OTQ0NTdjMDg4NDl1bGwsCisgICAgICAweGUwODNkZjAzNDc1ZjQ5ZDd1bGwsIDB4YmM5
ZmViNTEyZTZiMGQ2Y3VsbCwgMHhiMTJkNzRmZGQ3MThjOGM1dWxsLAorICAgICAgMHgxMmZmMDk2
NTNiZmJlNGNhdWxsLCAweDhkZDAzYTEwNWJjNGVlN2V1bGwsIDB4NTczODM0MTA0NWJhMGQ4NXVs
bCwKKyAgICAgIDB4ZTNmZDcyMmRjNjVhZDA5ZXVsbCwgMHg1YTE0ZmQyMWVhMmE1NzA1dWxsLCAw
eDE0ZTZlYTRkNmVkYjBjNzN1bGwsCisgICAgICAweDI3NWIwZGM3ZTBhMThhY2Z1bGwsIDB4MzZj
ZWJlMGQyNjUzNjgyZXVsbCwgMHgwMzYxZTliMjM4NjE1OTZidWxsLAorICB9KTsKKworICAvLyBH
ZW5lcmF0ZSBhIHN0ZDo6c3RyaW5nIG9mICcwJyBhbmQgJzEnIGZvciB0aGUgZGlzdHJpYnV0aW9u
IG91dHB1dC4KKyAgYXV0byBnZW5lcmF0ZSA9IFsmdXJiZ10oYWJzbDo6YmVybm91bGxpX2Rpc3Ry
aWJ1dGlvbiYgZGlzdCkgeworICAgIHN0ZDo6c3RyaW5nIG91dHB1dDsKKyAgICBvdXRwdXQucmVz
ZXJ2ZSgzNik7CisgICAgdXJiZy5yZXNldCgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzU7
IGkrKykgeworICAgICAgb3V0cHV0LmFwcGVuZChkaXN0KHVyYmcpID8gIjEiIDogIjAiKTsKKyAg
ICB9CisgICAgcmV0dXJuIG91dHB1dDsKKyAgfTsKKworICBjb25zdCBkb3VibGUga1AgPSAwLjAz
MzEyODk4NjIzNjI7CisgIHsKKyAgICBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uIGRpc3Qo
a1ApOworICAgIGF1dG8gdiA9IGdlbmVyYXRlKGRpc3QpOworICAgIEVYUEVDVF9FUSgzNSwgdXJi
Zy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfRVEodiwgIjAwMDAwMDAwMDAwMDEwMDAwMDAw
MDAwMDEwMDAwMDAwMDAwIikgPDwgZGlzdDsKKyAgfQorICB7CisgICAgYWJzbDo6YmVybm91bGxp
X2Rpc3RyaWJ1dGlvbiBkaXN0KGtQICogMTAuMCk7CisgICAgYXV0byB2ID0gZ2VuZXJhdGUoZGlz
dCk7CisgICAgRVhQRUNUX0VRKDM1LCB1cmJnLmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9F
USh2LCAiMDAwMDAxMDAwMTAwMTAwMTAwMTAwMDAwMTEwMDAwMTEwMTAiKSA8PCBkaXN0OworICB9
CisgIHsKKyAgICBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uIGRpc3Qoa1AgKiAyMC4wKTsK
KyAgICBhdXRvIHYgPSBnZW5lcmF0ZShkaXN0KTsKKyAgICBFWFBFQ1RfRVEoMzUsIHVyYmcuaW52
b2NhdGlvbnMoKSk7CisgICAgRVhQRUNUX0VRKHYsICIwMDAxMTExMDAxMDExMDExMDAxMTAxMTEx
MTExMDExMTAxMSIpIDw8IGRpc3Q7CisgIH0KKyAgeworICAgIGFic2w6OmJlcm5vdWxsaV9kaXN0
cmlidXRpb24gZGlzdCgxLjAgLSBrUCk7CisgICAgYXV0byB2ID0gZ2VuZXJhdGUoZGlzdCk7Cisg
ICAgRVhQRUNUX0VRKDM1LCB1cmJnLmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9FUSh2LCAi
MTExMTExMTExMTExMTExMTExMTEwMTExMTExMTExMTExMTEiKSA8PCBkaXN0OworICB9Cit9CisK
K1RFU1QoQmVybm91bGxpVGVzdCwgU3RhYmlsaXR5VGVzdDIpIHsKKyAgYWJzbDo6cmFuZG9tX2lu
dGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisgICAgICB7MHgwMDAzZWI3NmY2ZjdmNzU1dWxs
LCAweEZGQ0VBNTBGREIyRjk1M0J1bGwsIDB4QzMzMkRERUZCRTZDNUFBNXVsbCwKKyAgICAgICAw
eDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4MkFFRjdEQUQ1QjZFMkY4NHVsbCwgMHgxNTIxQjYyODI5
MDc2MTcwdWxsLAorICAgICAgIDB4RUNERDQ3NzU2MTlGMTUxMHVsbCwgMHgxM0NDQTgzMEVCNjFC
RDk2dWxsLCAweDAzMzRGRTFFQUEwMzYzQ0Z1bGwsCisgICAgICAgMHhCNTczNUM5MDRDNzBBMjM5
dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1bGwsIDB4RUVDQzg2QkM2MDYyMkNBN3VsbH0pOworCisg
IC8vIEdlbmVyYXRlIGEgc3RkOjpzdHJpbmcgb2YgJzAnIGFuZCAnMScgZm9yIHRoZSBkaXN0cmli
dXRpb24gb3V0cHV0LgorICBhdXRvIGdlbmVyYXRlID0gWyZ1cmJnXShhYnNsOjpiZXJub3VsbGlf
ZGlzdHJpYnV0aW9uJiBkaXN0KSB7CisgICAgc3RkOjpzdHJpbmcgb3V0cHV0OworICAgIG91dHB1
dC5yZXNlcnZlKDEzKTsKKyAgICB1cmJnLnJlc2V0KCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAxMjsgaSsrKSB7CisgICAgICBvdXRwdXQuYXBwZW5kKGRpc3QodXJiZykgPyAiMSIgOiAiMCIp
OworICAgIH0KKyAgICByZXR1cm4gb3V0cHV0OworICB9OworCisgIGNvbnN0ZXhwciBkb3VibGUg
YjAgPSAxLjAgLyAxMy4wIC8gMC4yOworICBjb25zdGV4cHIgZG91YmxlIGIxID0gMi4wIC8gMTMu
MCAvIDAuMjsKKyAgY29uc3RleHByIGRvdWJsZSBiMyA9ICg1LjAgLyAxMy4wIC8gMC4yKSAtICgo
MSAtIGIwKSArICgxIC0gYjEpICsgKDEgLSBiMSkpOworICB7CisgICAgYWJzbDo6YmVybm91bGxp
X2Rpc3RyaWJ1dGlvbiBkaXN0KGIwKTsKKyAgICBhdXRvIHYgPSBnZW5lcmF0ZShkaXN0KTsKKyAg
ICBFWFBFQ1RfRVEoMTIsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQRUNUX0VRKHYsICIw
MDAwMTExMDAxMDEiKSA8PCBkaXN0OworICB9CisgIHsKKyAgICBhYnNsOjpiZXJub3VsbGlfZGlz
dHJpYnV0aW9uIGRpc3QoYjEpOworICAgIGF1dG8gdiA9IGdlbmVyYXRlKGRpc3QpOworICAgIEVY
UEVDVF9FUSgxMiwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfRVEodiwgIjAwMTEx
MTEwMTEwMSIpIDw8IGRpc3Q7CisgIH0KKyAgeworICAgIGFic2w6OmJlcm5vdWxsaV9kaXN0cmli
dXRpb24gZGlzdChiMyk7CisgICAgYXV0byB2ID0gZ2VuZXJhdGUoZGlzdCk7CisgICAgRVhQRUNU
X0VRKDEyLCB1cmJnLmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9FUSh2LCAiMDAxMTExMTAx
MTExIikgPDwgZGlzdDsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9iZXRhX2Rpc3RyaWJ1dGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2JldGFfZGlzdHJp
YnV0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdhZmQ2MWM3ZmIxODA2ZDdmOTRlM2UxMDk3ZjYwMGI0YjEy
YzNjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9iZXRhX2Rpc3RyaWJ1dGlvbi5o
CkBAIC0wLDAgKzEsNDE0IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9CRVRBX0RJU1RSSUJVVElPTl9IXworI2RlZmluZSBB
QlNMX1JBTkRPTV9CRVRBX0RJU1RSSUJVVElPTl9IXworCisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNp
bmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxpc3RyZWFtPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNp
bmNsdWRlIDxvc3RyZWFtPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGwuaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9t
L2ludGVybmFsL2Zhc3RtYXRoLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9z
dHJlYW1fc3RhdGVfc2F2ZXIuaCIKKworbmFtZXNwYWNlIGFic2wgeworCisvLyBhYnNsOjpiZXRh
X2Rpc3RyaWJ1dGlvbjoKKy8vIEdlbmVyYXRlIGEgZmxvYXRpbmctcG9pbnQgdmFyaWF0ZSBjb25m
b3JtaW5nIHRvIGEgQmV0YSBkaXN0cmlidXRpb246CisvLyAgIHBkZih4KSBccHJvcHRvIHheKGFs
cGhhLTEpICogKDEteCleKGJldGEtMSksCisvLyB3aGVyZSB0aGUgcGFyYW1zIGFscGhhIGFuZCBi
ZXRhIGFyZSBib3RoIHN0cmljdGx5IHBvc2l0aXZlIHJlYWwgdmFsdWVzLgorLy8KKy8vIFRoZSBz
dXBwb3J0IGlzIHRoZSBvcGVuIGludGVydmFsICgwLCAxKSwgYnV0IHRoZSByZXR1cm4gdmFsdWUg
bWlnaHQgYmUgZXF1YWwKKy8vIHRvIDAgb3IgMSwgZHVlIHRvIG51bWVyaWNhbCBlcnJvcnMgd2hl
biBhbHBoYSBhbmQgYmV0YSBhcmUgdmVyeSBkaWZmZXJlbnQuCisvLworLy8gVXNhZ2Ugbm90ZTog
T25lIHVzYWdlIGlzIHRoYXQgYWxwaGEgYW5kIGJldGEgYXJlIGNvdW50cyBvZiBudW1iZXIgb2YK
Ky8vIHN1Y2Nlc3NlcyBhbmQgZmFpbHVyZXMuIFdoZW4gdGhlIHRvdGFsIG51bWJlciBvZiB0cmlh
bHMgYXJlIGxhcmdlLCBjb25zaWRlcgorLy8gYXBwcm94aW1hdGluZyBhIGJldGEgZGlzdHJpYnV0
aW9uIHdpdGggYSBHYXVzc2lhbiBkaXN0cmlidXRpb24gd2l0aCB0aGUgc2FtZQorLy8gbWVhbiBh
bmQgdmFyaWFuY2UuIE9uZSBjb3VsZCB1c2UgdGhlIHNrZXduZXNzLCB3aGljaCBkZXBlbmRzIG9u
bHkgb24gdGhlCisvLyBzbWFsbGVyIG9mIGFscGhhIGFuZCBiZXRhIHdoZW4gdGhlIG51bWJlciBv
ZiB0cmlhbHMgYXJlIHN1ZmZpY2llbnRseSBsYXJnZSwKKy8vIHRvIHF1YW50aWZ5IGhvdyBmYXIg
YSBiZXRhIGRpc3RyaWJ1dGlvbiBpcyBmcm9tIHRoZSBub3JtYWwgZGlzdHJpYnV0aW9uLgordGVt
cGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlID0gZG91YmxlPgorY2xhc3MgYmV0YV9kaXN0cmlidXRp
b24geworIHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSBSZWFsVHlwZTsKKworICBjbGFz
cyBwYXJhbV90eXBlIHsKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBkaXN0cmlidXRpb25fdHlwZSA9
IGJldGFfZGlzdHJpYnV0aW9uOworCisgICAgZXhwbGljaXQgcGFyYW1fdHlwZShyZXN1bHRfdHlw
ZSBhbHBoYSwgcmVzdWx0X3R5cGUgYmV0YSkKKyAgICAgICAgOiBhbHBoYV8oYWxwaGEpLCBiZXRh
XyhiZXRhKSB7CisgICAgICBhc3NlcnQoYWxwaGEgPj0gMCk7CisgICAgICBhc3NlcnQoYmV0YSA+
PSAwKTsKKyAgICAgIGFzc2VydChhbHBoYSA8PSAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRf
dHlwZT46Om1heCkoKSk7CisgICAgICBhc3NlcnQoYmV0YSA8PSAoc3RkOjpudW1lcmljX2xpbWl0
czxyZXN1bHRfdHlwZT46Om1heCkoKSk7CisgICAgICBpZiAoYWxwaGEgPT0gMCB8fCBiZXRhID09
IDApIHsKKyAgICAgICAgbWV0aG9kXyA9IERFR0VORVJBVEVfU01BTEw7CisgICAgICAgIHhfID0g
KGFscGhhID49IGJldGEpID8gMSA6IDA7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAg
IC8vIGFfID0gbWluKGJldGEsIGFscGhhKSwgYl8gPSBtYXgoYmV0YSwgYWxwaGEpLgorICAgICAg
aWYgKGJldGEgPCBhbHBoYSkgeworICAgICAgICBpbnZlcnRlZF8gPSB0cnVlOworICAgICAgICBh
XyA9IGJldGE7CisgICAgICAgIGJfID0gYWxwaGE7CisgICAgICB9IGVsc2UgeworICAgICAgICBp
bnZlcnRlZF8gPSBmYWxzZTsKKyAgICAgICAgYV8gPSBhbHBoYTsKKyAgICAgICAgYl8gPSBiZXRh
OworICAgICAgfQorICAgICAgaWYgKGFfIDw9IDEgJiYgYl8gPj0gVGhyZXNob2xkRm9yTGFyZ2VB
KCkpIHsKKyAgICAgICAgbWV0aG9kXyA9IERFR0VORVJBVEVfU01BTEw7CisgICAgICAgIHhfID0g
aW52ZXJ0ZWRfID8gcmVzdWx0X3R5cGUoMSkgOiByZXN1bHRfdHlwZSgwKTsKKyAgICAgICAgcmV0
dXJuOworICAgICAgfQorICAgICAgLy8gRm9yIHRocmVzaG9sZCB2YWx1ZXMsIHNlZSBhbHNvOgor
ICAgICAgLy8gRXZhbHVhdGlvbiBvZiBCZXRhIEdlbmVyYXRpb24gQWxnb3JpdGhtcywgWWluZy1D
aGFvIEh1bmcsIGV0LiBhbC4KKyAgICAgIC8vIEZlYnJ1YXJ5LCAyMDA5LgorICAgICAgaWYgKChi
XyA8IDEuMCAmJiBhXyArIGJfIDw9IDEuMikgfHwgYV8gPD0gVGhyZXNob2xkRm9yU21hbGxBKCkp
IHsKKyAgICAgICAgLy8gQ2hvb3NlIEpvZWhuayBvdmVyIENoZW5nIHdoZW4gaXQncyBmYXN0ZXIg
b3Igd2hlbiBDaGVuZyBlbmNvdW50ZXJzCisgICAgICAgIC8vIG51bWVyaWNhbCBpc3N1ZXMuCisg
ICAgICAgIG1ldGhvZF8gPSBKT0VITks7CisgICAgICAgIGFfID0gcmVzdWx0X3R5cGUoMSkgLyBh
bHBoYV87CisgICAgICAgIGJfID0gcmVzdWx0X3R5cGUoMSkgLyBiZXRhXzsKKyAgICAgICAgaWYg
KHN0ZDo6aXNpbmYoYV8pIHx8IHN0ZDo6aXNpbmYoYl8pKSB7CisgICAgICAgICAgbWV0aG9kXyA9
IERFR0VORVJBVEVfU01BTEw7CisgICAgICAgICAgeF8gPSBpbnZlcnRlZF8gPyByZXN1bHRfdHlw
ZSgxKSA6IHJlc3VsdF90eXBlKDApOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICAg
IH0KKyAgICAgIGlmIChhXyA+PSBUaHJlc2hvbGRGb3JMYXJnZUEoKSkgeworICAgICAgICBtZXRo
b2RfID0gREVHRU5FUkFURV9MQVJHRTsKKyAgICAgICAgLy8gTm90ZTogb24gUFBDIGZvciBsb25n
IGRvdWJsZSwgZXZhbHVhdGluZworICAgICAgICAvLyBgc3RkOjpudW1lcmljX2xpbWl0czo6bWF4
KCkgLyBUaHJlc2hvbGRGb3JMYXJnZUFgIHJlc3VsdHMgaW4gTmFOLgorICAgICAgICByZXN1bHRf
dHlwZSByID0gYV8gLyBiXzsKKyAgICAgICAgeF8gPSAoaW52ZXJ0ZWRfID8gcmVzdWx0X3R5cGUo
MSkgOiByKSAvICgxICsgcik7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIHhfID0g
YV8gKyBiXzsKKyAgICAgIGxvZ194XyA9IHN0ZDo6bG9nKHhfKTsKKyAgICAgIGlmIChhXyA8PSAx
KSB7CisgICAgICAgIG1ldGhvZF8gPSBDSEVOR19CQTsKKyAgICAgICAgeV8gPSByZXN1bHRfdHlw
ZSgxKSAvIGFfOworICAgICAgICBnYW1tYV8gPSBhXyArIGFfOworICAgICAgICByZXR1cm47Cisg
ICAgICB9CisgICAgICBtZXRob2RfID0gQ0hFTkdfQkI7CisgICAgICByZXN1bHRfdHlwZSByID0g
KGFfIC0gMSkgLyAoYl8gLSAxKTsKKyAgICAgIHlfID0gc3RkOjpzcXJ0KCgxICsgcikgLyAoYl8g
KiByICogMiAtIHIgKyAxKSk7CisgICAgICBnYW1tYV8gPSBhXyArIHJlc3VsdF90eXBlKDEpIC8g
eV87CisgICAgfQorCisgICAgcmVzdWx0X3R5cGUgYWxwaGEoKSBjb25zdCB7IHJldHVybiBhbHBo
YV87IH0KKyAgICByZXN1bHRfdHlwZSBiZXRhKCkgY29uc3QgeyByZXR1cm4gYmV0YV87IH0KKwor
ICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29uc3QgcGFy
YW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuIGEuYWxwaGFfID09IGIuYWxwaGFfICYmIGEuYmV0
YV8gPT0gYi5iZXRhXzsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAgICAgIHJldHVybiAhKGEg
PT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBiZXRhX2Rpc3Ry
aWJ1dGlvbjsKKworI2lmZGVmIENPTVBJTEVSX01TVkMKKyAgICAvLyBNU1ZDIGRvZXMgbm90IGhh
dmUgY29uc3RleHByIGltcGxlbWVudGF0aW9ucyBmb3Igc3RkOjpsb2cgYW5kIHN0ZDo6ZXhwCisg
ICAgLy8gc28gdGhleSBhcmUgY29tcHV0ZWQgYXQgcnVudGltZS4KKyNkZWZpbmUgQUJTTF9SQU5E
T01fSU5URVJOQUxfTE9HX0VYUF9DT05TVEVYUFIKKyNlbHNlCisjZGVmaW5lIEFCU0xfUkFORE9N
X0lOVEVSTkFMX0xPR19FWFBfQ09OU1RFWFBSIGNvbnN0ZXhwcgorI2VuZGlmCisKKyAgICAvLyBU
aGUgdGhyZXNob2xkIGZvciB3aGV0aGVyIHN0ZDo6ZXhwKDEvYSkgaXMgZmluaXRlLgorICAgIC8v
IE5vdGUgdGhhdCB0aGlzIHZhbHVlIGlzIHF1aXRlIGxhcmdlLCBhbmQgYSBzbWFsbGVyIGFfIGlz
IE5PVCBhYm5vcm1hbC4KKyAgICBzdGF0aWMgQUJTTF9SQU5ET01fSU5URVJOQUxfTE9HX0VYUF9D
T05TVEVYUFIgcmVzdWx0X3R5cGUKKyAgICBUaHJlc2hvbGRGb3JTbWFsbEEoKSB7CisgICAgICBy
ZXR1cm4gcmVzdWx0X3R5cGUoMSkgLworICAgICAgICAgICAgIHN0ZDo6bG9nKChzdGQ6Om51bWVy
aWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpKTsKKyAgICB9CisKKyAgICAvLyBUaGUgdGhy
ZXNob2xkIGZvciB3aGV0aGVyIGEgKiBzdGQ6OmxvZyhhKSBpcyBmaW5pdGUuCisgICAgc3RhdGlj
IEFCU0xfUkFORE9NX0lOVEVSTkFMX0xPR19FWFBfQ09OU1RFWFBSIHJlc3VsdF90eXBlCisgICAg
VGhyZXNob2xkRm9yTGFyZ2VBKCkgeworICAgICAgcmV0dXJuIHN0ZDo6ZXhwKAorICAgICAgICAg
IHN0ZDo6bG9nKChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpKSAtCisg
ICAgICAgICAgc3RkOjpsb2coc3RkOjpsb2coKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5
cGU+OjptYXgpKCkpKSAtCisgICAgICAgICAgVGhyZXNob2xkUGFkZGluZygpKTsKKyAgICB9CisK
KyN1bmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9MT0dfRVhQX0NPTlNURVhQUgorCisgICAgLy8g
UGFkIHRoZSB0aHJlc2hvbGQgZm9yIGxhcmdlIEEgZm9yIGxvbmcgZG91YmxlIG9uIFBQQy4gVGhp
cyBpcyBkb25lIHZpYSBhCisgICAgLy8gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gYmVsb3cuCisg
ICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBUaHJlc2hvbGRQYWRkaW5nKCkgeyByZXR1
cm4gMDsgfQorCisgICAgZW51bSBNZXRob2QgeworICAgICAgSk9FSE5LLCAgICAvLyBVc2VzIGFs
Z29yaXRobSBKb2VobmsKKyAgICAgIENIRU5HX0JBLCAgLy8gVXNlcyBhbGdvcml0aG0gQkEgaW4g
Q2hlbmcKKyAgICAgIENIRU5HX0JCLCAgLy8gVXNlcyBhbGdvcml0aG0gQkIgaW4gQ2hlbmcKKwor
ICAgICAgLy8gTm90ZTogU2VlIGFsc286CisgICAgICAvLyAgIEh1bmcgZXQgYWwuIEV2YWx1YXRp
b24gb2YgYmV0YSBnZW5lcmF0aW9uIGFsZ29yaXRobXMuIENvbW11bmljYXRpb25zCisgICAgICAv
LyAgIGluIFN0YXRpc3RpY3MtU2ltdWxhdGlvbiBhbmQgQ29tcHV0YXRpb24gMzguNCAoMjAwOSk6
IDc1MC03NzAuCisgICAgICAvLyBlc3BlY2lhbGx5OgorICAgICAgLy8gICBaZWNobmVyLCBIZWlu
eiwgYW5kIEVybnN0IFN0YWRsb2Jlci4gR2VuZXJhdGluZyBiZXRhIHZhcmlhdGVzIHZpYQorICAg
ICAgLy8gICBwYXRjaHdvcmsgcmVqZWN0aW9uLiBDb21wdXRpbmcgNTAuMSAoMTk5Myk6IDEtMTgu
CisKKyAgICAgIERFR0VORVJBVEVfU01BTEwsICAvLyBhXyBpcyBhYm5vcm1hbGx5IHNtYWxsLgor
ICAgICAgREVHRU5FUkFURV9MQVJHRSwgIC8vIGFfIGlzIGFibm9ybWFsbHkgbGFyZ2UuCisgICAg
fTsKKworICAgIHJlc3VsdF90eXBlIGFscGhhXzsKKyAgICByZXN1bHRfdHlwZSBiZXRhXzsKKwor
ICAgIHJlc3VsdF90eXBlIGFfOyAgLy8gdGhlIHNtYWxsZXIgb2Yge2FscGhhLCBiZXRhfSwgb3Ig
MS4wL2FscGhhXyBpbiBKT0VITksKKyAgICByZXN1bHRfdHlwZSBiXzsgIC8vIHRoZSBsYXJnZXIg
b2Yge2FscGhhLCBiZXRhfSwgb3IgMS4wL2JldGFfIGluIEpPRUhOSworICAgIHJlc3VsdF90eXBl
IHhfOyAgLy8gYWxwaGEgKyBiZXRhLCBvciB0aGUgcmVzdWx0IGluIGRlZ2VuZXJhdGUgY2FzZXMK
KyAgICByZXN1bHRfdHlwZSBsb2dfeF87ICAvLyBsb2coeF8pCisgICAgcmVzdWx0X3R5cGUgeV87
ICAgICAgLy8gImJldGEiIGluIENoZW5nCisgICAgcmVzdWx0X3R5cGUgZ2FtbWFfOyAgLy8gImdh
bW1hIiBpbiBDaGVuZworCisgICAgTWV0aG9kIG1ldGhvZF87CisKKyAgICAvLyBQbGFjaW5nIHRo
aXMgbGFzdCBmb3Igb3B0aW1hbCBhbGlnbm1lbnQuCisgICAgLy8gV2hldGhlciBhbHBoYV8gIT0g
YV8sIGkuZS4gdHJ1ZSBpZmYgYWxwaGFfID4gYmV0YV8uCisgICAgYm9vbCBpbnZlcnRlZF87CisK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8UmVhbFR5cGU+Ojp2YWx1
ZSwKKyAgICAgICAgICAgICAgICAgICJDbGFzcy10ZW1wbGF0ZSBhYnNsOjpiZXRhX2Rpc3RyaWJ1
dGlvbjw+IG11c3QgYmUgIgorICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcml6ZWQgdXNpbmcg
YSBmbG9hdGluZy1wb2ludCB0eXBlLiIpOworICB9OworCisgIGJldGFfZGlzdHJpYnV0aW9uKCkg
OiBiZXRhX2Rpc3RyaWJ1dGlvbigxKSB7fQorCisgIGV4cGxpY2l0IGJldGFfZGlzdHJpYnV0aW9u
KHJlc3VsdF90eXBlIGFscGhhLCByZXN1bHRfdHlwZSBiZXRhID0gMSkKKyAgICAgIDogcGFyYW1f
KGFscGhhLCBiZXRhKSB7fQorCisgIGV4cGxpY2l0IGJldGFfZGlzdHJpYnV0aW9uKGNvbnN0IHBh
cmFtX3R5cGUmIHApIDogcGFyYW1fKHApIHt9CisKKyAgdm9pZCByZXNldCgpIHt9CisKKyAgLy8g
R2VuZXJhdGluZyBmdW5jdGlvbnMKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3Vs
dF90eXBlIG9wZXJhdG9yKCkoVVJCRyYgZykgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNl
cykKKyAgICByZXR1cm4gKCp0aGlzKShnLCBwYXJhbV8pOworICB9CisKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVVJCRyYgZywgIC8vIE5PTElO
VChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFy
YW1fdHlwZSYgcCk7CisKKyAgcGFyYW1fdHlwZSBwYXJhbSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFt
XzsgfQorICB2b2lkIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIHApIHsgcGFyYW1fID0gcDsgfQor
CisgIHJlc3VsdF90eXBlKG1pbikoKSBjb25zdCB7IHJldHVybiAwOyB9CisgIHJlc3VsdF90eXBl
KG1heCkoKSBjb25zdCB7IHJldHVybiAxOyB9CisKKyAgcmVzdWx0X3R5cGUgYWxwaGEoKSBjb25z
dCB7IHJldHVybiBwYXJhbV8uYWxwaGEoKTsgfQorICByZXN1bHRfdHlwZSBiZXRhKCkgY29uc3Qg
eyByZXR1cm4gcGFyYW1fLmJldGEoKTsgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgYmV0YV9kaXN0cmlidXRpb24mIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
YmV0YV9kaXN0cmlidXRpb24mIGIpIHsKKyAgICByZXR1cm4gYS5wYXJhbV8gPT0gYi5wYXJhbV87
CisgIH0KKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBiZXRhX2Rpc3RyaWJ1dGlvbiYg
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiZXRhX2Rpc3RyaWJ1dGlvbiYgYikg
eworICAgIHJldHVybiBhLnBhcmFtXyAhPSBiLnBhcmFtXzsKKyAgfQorCisgcHJpdmF0ZToKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIEFsZ29yaXRobUpvZWhuayhV
UkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIHApOworCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVUkJHPgorICByZXN1bHRfdHlwZSBBbGdvcml0aG1DaGVuZyhVUkJHJiBnLCAgLy8gTk9MSU5U
KHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cGFyYW1fdHlwZSYgcCk7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90
eXBlIERlZ2VuZXJhdGVDYXNlKFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2Vz
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBwKSB7Cisg
ICAgaWYgKHAubWV0aG9kXyA9PSBwYXJhbV90eXBlOjpERUdFTkVSQVRFX1NNQUxMICYmIHAuYWxw
aGFfID09IHAuYmV0YV8pIHsKKyAgICAgIC8vIFJldHVybnMgMCBvciAxIHdpdGggZXF1YWwgcHJv
YmFiaWxpdHkuCisgICAgICByYW5kb21faW50ZXJuYWw6OkZhc3RVbmlmb3JtQml0czx1aW50OF90
PiBmYXN0X3U4OworICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPigoZmFzdF91
OChnKSAmIDB4MTApICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAp
OyAgLy8gcGljayBhbnkgc2luZ2xlIGJpdC4KKyAgICB9CisgICAgcmV0dXJuIHAueF87CisgIH0K
KworICBwYXJhbV90eXBlIHBhcmFtXzsKKyAgcmFuZG9tX2ludGVybmFsOjpGYXN0VW5pZm9ybUJp
dHM8dWludDY0X3Q+IGZhc3RfdTY0XzsKK307CisKKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p
IHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBcCisgICAg
ZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBDX18pCisvLyBQUEMgbmVlZHMgYSBtb3Jl
IHN0cmluZ2VudCBib3VuZGFyeSBmb3IgbG9uZyBkb3VibGUuCit0ZW1wbGF0ZSA8PgorY29uc3Rl
eHByIGxvbmcgZG91YmxlCitiZXRhX2Rpc3RyaWJ1dGlvbjxsb25nIGRvdWJsZT46OnBhcmFtX3R5
cGU6OlRocmVzaG9sZFBhZGRpbmcoKSB7CisgIHJldHVybiAxMDsKK30KKyNlbmRpZgorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3R5cGVu
YW1lIGJldGFfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjo6cmVzdWx0X3R5cGUKK2JldGFfZGlzdHJp
YnV0aW9uPFJlYWxUeXBlPjo6QWxnb3JpdGhtSm9laG5rKAorICAgIFVSQkcmIGcsICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0IHBhcmFtX3R5cGUmIHApIHsKKyAgLy8g
QmFzZWQgb24gSm9laG5rLCBNLiBELiBFcnpldWd1bmcgdm9uIGJldGF2ZXJ0ZWlsdGVuIHVuZCBn
YW1tYXZlcnRlaWx0ZW4KKyAgLy8gWnVmYWxsc3phaGxlbi4gTWV0cmlrYSA4LjEgKDE5NjQpOiA1
LTE1LgorICAvLyBUaGlzIG1ldGhvZCBpcyBkZXNjcmliZWQgaW4gS251dGgsIFZvbCAyIChUaGly
ZCBFZGl0aW9uKSwgcHAgMTM0LgorICB1c2luZyBSYW5kVTY0VG9SZWFsID0gdHlwZW5hbWUgcmFu
ZG9tX2ludGVybmFsOjpSYW5kVTY0VG9SZWFsPHJlc3VsdF90eXBlPjsKKyAgdXNpbmcgcmFuZG9t
X2ludGVybmFsOjpQb3NpdGl2ZVZhbHVlVDsKKyAgcmVzdWx0X3R5cGUgdSwgdiwgeCwgeSwgejsK
KyAgZm9yICg7OykgeworICAgIHUgPSBSYW5kVTY0VG9SZWFsOjp0ZW1wbGF0ZSBWYWx1ZTxQb3Np
dGl2ZVZhbHVlVCwgZmFsc2U+KGZhc3RfdTY0XyhnKSk7CisgICAgdiA9IFJhbmRVNjRUb1JlYWw6
OnRlbXBsYXRlIFZhbHVlPFBvc2l0aXZlVmFsdWVULCBmYWxzZT4oZmFzdF91NjRfKGcpKTsKKwor
ICAgIC8vIERpcmVjdCBtZXRob2QuIHN0ZDo6cG93IGlzIHNsb3cgZm9yIGZsb2F0LCBzbyByZWx5
IG9uIHRoZSBvcHRpbWl6ZXIgdG8KKyAgICAvLyByZW1vdmUgdGhlIHN0ZDo6cG93KCkgcGF0aCBm
b3IgdGhhdCBjYXNlLgorICAgIGlmICghc3RkOjppc19zYW1lPGZsb2F0LCByZXN1bHRfdHlwZT46
OnZhbHVlKSB7CisgICAgICB4ID0gc3RkOjpwb3codSwgcC5hXyk7CisgICAgICB5ID0gc3RkOjpw
b3codiwgcC5iXyk7CisgICAgICB6ID0geCArIHk7CisgICAgICBpZiAoeiA+IDEpIHsKKyAgICAg
ICAgLy8gUmVqZWN0IGlmIGFuZCBvbmx5IGlmIGB4ICsgeSA+IDEuMGAKKyAgICAgICAgY29udGlu
dWU7CisgICAgICB9CisgICAgICBpZiAoeiA+IDApIHsKKyAgICAgICAgLy8gV2hlbiBib3RoIGFs
cGhhIGFuZCBiZXRhIGFyZSBzbWFsbCwgeCBhbmQgeSBhcmUgYm90aCBjbG9zZSB0byAwLCBzbwor
ICAgICAgICAvLyBkaXZpZGUgYnkgKHgreSkgZGlyZWN0bHkgbWF5IHJlc3VsdCBpbiBuYW4uCisg
ICAgICAgIHJldHVybiB4IC8gejsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBMb2cgdHJhbnNm
b3JtLgorICAgIC8vIHggPSBsb2coIHBvdyh1LCBwLmFfKSApLCB5ID0gbG9nKCBwb3codiwgcC5i
XykgKQorICAgIC8vIHNpbmNlIHUsIHYgPD0gMS4wLCAgeCwgeSA8IDAuCisgICAgeCA9IHN0ZDo6
bG9nKHUpICogcC5hXzsKKyAgICB5ID0gc3RkOjpsb2codikgKiBwLmJfOworICAgIGlmICghc3Rk
Ojppc2Zpbml0ZSh4KSB8fCAhc3RkOjppc2Zpbml0ZSh5KSkgeworICAgICAgY29udGludWU7Cisg
ICAgfQorICAgIC8vIHogPSBsb2coIHBvdyh1LCBhKSArIHBvdyh2LCBiKSApCisgICAgeiA9IHgg
PiB5ID8gKHggKyBzdGQ6OmxvZygxICsgc3RkOjpleHAoeSAtIHgpKSkKKyAgICAgICAgICAgICAg
OiAoeSArIHN0ZDo6bG9nKDEgKyBzdGQ6OmV4cCh4IC0geSkpKTsKKyAgICAvLyBSZWplY3QgaWZm
IGxvZyh4K3kpID4gMC4KKyAgICBpZiAoeiA+IDApIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0K
KyAgICByZXR1cm4gc3RkOjpleHAoeCAtIHopOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBSZWFsVHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordHlwZW5hbWUgYmV0YV9kaXN0
cmlidXRpb248UmVhbFR5cGU+OjpyZXN1bHRfdHlwZQorYmV0YV9kaXN0cmlidXRpb248UmVhbFR5
cGU+OjpBbGdvcml0aG1DaGVuZygKKyAgICBVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVm
ZXJlbmNlcykKKyAgICBjb25zdCBwYXJhbV90eXBlJiBwKSB7CisgIC8vIEJhc2VkIG9uIENoZW5n
LCBSdXNzZWxsIENILiBHZW5lcmF0aW5nIGJldGEgdmFyaWF0ZXMgd2l0aCBub25pbnRlZ3JhbAor
ICAvLyBzaGFwZSBwYXJhbWV0ZXJzLiBDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNIDIxLjQgKDE5
NzgpOiAzMTctMzIyLgorICAvLyAoaHR0cHM6Ly9kbC5hY20ub3JnL2NpdGF0aW9uLmNmbT9pZD0z
NTk0ODIpLgorICB1c2luZyBSYW5kVTY0VG9SZWFsID0gdHlwZW5hbWUgcmFuZG9tX2ludGVybmFs
OjpSYW5kVTY0VG9SZWFsPHJlc3VsdF90eXBlPjsKKyAgdXNpbmcgcmFuZG9tX2ludGVybmFsOjpQ
b3NpdGl2ZVZhbHVlVDsKKworICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlIGtMb2dGb3Vy
ID0KKyAgICAgIHJlc3VsdF90eXBlKDEuMzg2Mjk0MzYxMTE5ODkwNjE4ODM0NDY0MjQyOTE2MzUz
MTM2MSk7ICAvLyBsb2coNCkKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBrUyA9Cisg
ICAgICByZXN1bHRfdHlwZSgyLjYwOTQzNzkxMjQzNDEwMDM3NDYwMDc1OTMzMzIyNjE4NzYpOyAg
Ly8gMStsb2coNSkKKworICBjb25zdCBib29sIHVzZV9hbGdvcml0aG1fYmEgPSAocC5tZXRob2Rf
ID09IHBhcmFtX3R5cGU6OkNIRU5HX0JBKTsKKyAgcmVzdWx0X3R5cGUgdTEsIHUyLCB2LCB3LCB6
LCByLCBzLCB0LCBid19pbnYsIGxoczsKKyAgZm9yICg7OykgeworICAgIHUxID0gUmFuZFU2NFRv
UmVhbDo6dGVtcGxhdGUgVmFsdWU8UG9zaXRpdmVWYWx1ZVQsIGZhbHNlPihmYXN0X3U2NF8oZykp
OworICAgIHUyID0gUmFuZFU2NFRvUmVhbDo6dGVtcGxhdGUgVmFsdWU8UG9zaXRpdmVWYWx1ZVQs
IGZhbHNlPihmYXN0X3U2NF8oZykpOworICAgIHYgPSBwLnlfICogc3RkOjpsb2codTEgLyAoMSAt
IHUxKSk7CisgICAgdyA9IHAuYV8gKiBzdGQ6OmV4cCh2KTsKKyAgICBid19pbnYgPSByZXN1bHRf
dHlwZSgxKSAvIChwLmJfICsgdyk7CisgICAgciA9IHAuZ2FtbWFfICogdiAtIGtMb2dGb3VyOwor
ICAgIHMgPSBwLmFfICsgciAtIHc7CisgICAgeiA9IHUxICogdTEgKiB1MjsKKyAgICBpZiAoIXVz
ZV9hbGdvcml0aG1fYmEgJiYgcyArIGtTID49IDUgKiB6KSB7CisgICAgICBicmVhazsKKyAgICB9
CisgICAgdCA9IHN0ZDo6bG9nKHopOworICAgIGlmICghdXNlX2FsZ29yaXRobV9iYSAmJiBzID49
IHQpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBsaHMgPSBwLnhfICogKHAubG9nX3hfICsg
c3RkOjpsb2coYndfaW52KSkgKyByOworICAgIGlmIChsaHMgPj0gdCkgeworICAgICAgYnJlYWs7
CisgICAgfQorICB9CisgIHJldHVybiBwLmludmVydGVkXyA/ICgxIC0gdyAqIGJ3X2ludikgOiB3
ICogYndfaW52OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGU+Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIGJldGFfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjo6cmVz
dWx0X3R5cGUKK2JldGFfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjo6b3BlcmF0b3IoKShVUkJHJiBn
LCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBwKSB7CisgIHN3aXRjaCAocC5tZXRo
b2RfKSB7CisgICAgY2FzZSBwYXJhbV90eXBlOjpKT0VITks6CisgICAgICByZXR1cm4gQWxnb3Jp
dGhtSm9laG5rKGcsIHApOworICAgIGNhc2UgcGFyYW1fdHlwZTo6Q0hFTkdfQkE6CisgICAgICBB
QlNMX0ZBTExUSFJPVUdIX0lOVEVOREVEOworICAgIGNhc2UgcGFyYW1fdHlwZTo6Q0hFTkdfQkI6
CisgICAgICByZXR1cm4gQWxnb3JpdGhtQ2hlbmcoZywgcCk7CisgICAgZGVmYXVsdDoKKyAgICAg
IHJldHVybiBEZWdlbmVyYXRlQ2FzZShnLCBwKTsKKyAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgUmVhbFR5cGU+CitzdGQ6OmJhc2lj
X29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3RkOjpiYXNpY19vc3Ry
ZWFtPENoYXJULCBUcmFpdHM+JiBvcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisg
ICAgY29uc3QgYmV0YV9kaXN0cmlidXRpb248UmVhbFR5cGU+JiB4KSB7CisgIGF1dG8gc2F2ZXIg
PSByYW5kb21faW50ZXJuYWw6Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZlcihvcyk7CisgIG9zLnBy
ZWNpc2lvbihyYW5kb21faW50ZXJuYWw6OnN0cmVhbV9wcmVjaXNpb25faGVscGVyPFJlYWxUeXBl
Pjo6a1ByZWNpc2lvbik7CisgIG9zIDw8IHguYWxwaGEoKSA8PCBvcy5maWxsKCkgPDwgeC5iZXRh
KCk7CisgIHJldHVybiBvczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIFJlYWxUeXBlPgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBU
cmFpdHM+JiBvcGVyYXRvcj4+KAorICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRz
PiYgaXMsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGJldGFfZGlzdHJpYnV0
aW9uPFJlYWxUeXBlPiYgeCkgeyAgICAgICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIGJldGFfZGlzdHJpYnV0aW9uPFJlYWxUeXBl
Pjo6cmVzdWx0X3R5cGU7CisgIHVzaW5nIHBhcmFtX3R5cGUgPSB0eXBlbmFtZSBiZXRhX2Rpc3Ry
aWJ1dGlvbjxSZWFsVHlwZT46OnBhcmFtX3R5cGU7CisgIHJlc3VsdF90eXBlIGFscGhhLCBiZXRh
OworCisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2VfaXN0cmVhbV9zdGF0ZV9z
YXZlcihpcyk7CisgIGFscGhhID0gcmFuZG9tX2ludGVybmFsOjpyZWFkX2Zsb2F0aW5nX3BvaW50
PHJlc3VsdF90eXBlPihpcyk7CisgIGlmIChpcy5mYWlsKCkpIHJldHVybiBpczsKKyAgYmV0YSA9
IHJhbmRvbV9pbnRlcm5hbDo6cmVhZF9mbG9hdGluZ19wb2ludDxyZXN1bHRfdHlwZT4oaXMpOwor
ICBpZiAoIWlzLmZhaWwoKSkgeworICAgIHgucGFyYW0ocGFyYW1fdHlwZShhbHBoYSwgYmV0YSkp
OworICB9CisgIHJldHVybiBpczsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlm
ICAvLyBBQlNMX1JBTkRPTV9CRVRBX0RJU1RSSUJVVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2JldGFfZGlzdHJpYnV0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vYmV0YV9kaXN0
cmlidXRpb25fdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjZhZDA4YjVjOTE1MTQ2YjVmZGI5MDYwMDM2
YmRmNjM1YzRiNjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2JldGFfZGlzdHJp
YnV0aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSw2MTQgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vYmV0YV9kaXN0cmlidXRp
b24uaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1
ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8cmFuZG9tPgorI2lu
Y2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHVub3JkZXJlZF9t
YXA+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9n
Z2luZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuaCIKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsLmgiCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VxdWVuY2VfdXJiZy5oIgorI2luY2x1ZGUg
ImFic2wvcmFuZG9tL3JhbmRvbS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0Lmgi
CisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3Mvc3RyX3JlcGxhY2UuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaXAuaCIKKwor
bmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CitjbGFzcyBCZXRhRGlz
dHJpYnV0aW9uSW50ZXJmYWNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3Vz
aW5nIFJlYWxUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8ZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3Vi
bGU+OworVFlQRURfVEVTVF9DQVNFKEJldGFEaXN0cmlidXRpb25JbnRlcmZhY2VUZXN0LCBSZWFs
VHlwZXMpOworCitUWVBFRF9URVNUKEJldGFEaXN0cmlidXRpb25JbnRlcmZhY2VUZXN0LCBTZXJp
YWxpemVUZXN0KSB7CisgIC8vIFRoZSB0aHJlc2hvbGQgZm9yIHdoZXRoZXIgc3RkOjpleHAoMS9h
KSBpcyBmaW5pdGUuCisgIGNvbnN0IFR5cGVQYXJhbSBrU21hbGxBID0KKyAgICAgIDEuMGYgLyBz
dGQ6OmxvZygoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgpKCkpOworICAvLyBU
aGUgdGhyZXNob2xkIGZvciB3aGV0aGVyIGEgKiBzdGQ6OmxvZyhhKSBpcyBmaW5pdGUuCisgIGNv
bnN0IFR5cGVQYXJhbSBrTGFyZ2VBID0KKyAgICAgIHN0ZDo6ZXhwKHN0ZDo6bG9nKChzdGQ6Om51
bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCkoKSkgLQorICAgICAgICAgICAgICAgc3RkOjps
b2coc3RkOjpsb2coKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWF4KSgpKSkpOwor
ICBjb25zdCBUeXBlUGFyYW0ga0xhcmdlQVBQQyA9IHN0ZDo6ZXhwKAorICAgICAgc3RkOjpsb2co
KHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWF4KSgpKSAtCisgICAgICBzdGQ6Omxv
ZyhzdGQ6OmxvZygoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgpKCkpKSAtIDEw
LjBmKTsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1lIGFic2w6OmJldGFfZGlzdHJpYnV0
aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7CisKKyAgY29uc3RleHByIGludCBrQ291bnQgPSAx
MDAwOworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47CisgIGNvbnN0IFR5cGVQYXJhbSBrVmFs
dWVzW10gPSB7CisgICAgICBUeXBlUGFyYW0oMWUtMjApLCBUeXBlUGFyYW0oMWUtMTIpLCBUeXBl
UGFyYW0oMWUtOCksIFR5cGVQYXJhbSgxZS00KSwKKyAgICAgIFR5cGVQYXJhbSgxZS0zKSwgVHlw
ZVBhcmFtKDAuMSksIFR5cGVQYXJhbSgwLjI1KSwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKFR5cGVQ
YXJhbSgwLjUpLCBUeXBlUGFyYW0oMCkpLCAgLy8gMC41IC0gZXBzaWxvbgorICAgICAgc3RkOjpu
ZXh0YWZ0ZXIoVHlwZVBhcmFtKDAuNSksIFR5cGVQYXJhbSgxKSksICAvLyAwLjUgKyBlcHNpbG9u
CisgICAgICBUeXBlUGFyYW0oMC41KSwgVHlwZVBhcmFtKDEuMCksICAgICAgICAgICAgICAgIC8v
CisgICAgICBzdGQ6Om5leHRhZnRlcihUeXBlUGFyYW0oMSksIFR5cGVQYXJhbSgwKSksICAgIC8v
IDEgLSBlcHNpbG9uCisgICAgICBzdGQ6Om5leHRhZnRlcihUeXBlUGFyYW0oMSksIFR5cGVQYXJh
bSgyKSksICAgIC8vIDEgKyBlcHNpbG9uCisgICAgICBUeXBlUGFyYW0oMTIuNSksIFR5cGVQYXJh
bSgxZTIpLCBUeXBlUGFyYW0oMWU4KSwgVHlwZVBhcmFtKDFlMTIpLAorICAgICAgVHlwZVBhcmFt
KDFlMjApLCAgICAgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICBrU21hbGxBLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKGtTbWFsbEEs
IFR5cGVQYXJhbSgwKSksICAvLworICAgICAgc3RkOjpuZXh0YWZ0ZXIoa1NtYWxsQSwgVHlwZVBh
cmFtKDEpKSwgIC8vCisgICAgICBrTGFyZ2VBLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKGtMYXJnZUEsIFR5cGVQYXJhbSgwKSksICAvLwor
ICAgICAgc3RkOjpuZXh0YWZ0ZXIoa0xhcmdlQSwgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFy
YW0+OjptYXgoKSksCisgICAgICBrTGFyZ2VBUFBDLCAgLy8KKyAgICAgIHN0ZDo6bmV4dGFmdGVy
KGtMYXJnZUFQUEMsIFR5cGVQYXJhbSgwKSksCisgICAgICBzdGQ6Om5leHRhZnRlcihrTGFyZ2VB
UFBDLCBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpKSwKKyAgICAgIC8vIEJv
dW5kYXJ5IGNhc2VzLgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgo
KSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6ZXBzaWxvbigpLAorICAg
ICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSwK
KyAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbSgxKSksICAgICAgICAgICAgICAgICAgLy8g
bWluICsgZXBzaWxvbgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4o
KSwgICAgICAgICAvLyBzbWFsbGVzdCBub3JtYWwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
VHlwZVBhcmFtPjo6ZGVub3JtX21pbigpLCAgLy8gc21hbGxlc3QgZGVub3JtCisgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1pbigpIC8gMiwgICAgIC8vIGRlbm9ybQorICAg
ICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSwK
KyAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbSgwKSksICAvLyBkZW5vcm1fbWF4CisgIH07
CisgIGZvciAoVHlwZVBhcmFtIGFscGhhIDoga1ZhbHVlcykgeworICAgIGZvciAoVHlwZVBhcmFt
IGJldGEgOiBrVmFsdWVzKSB7CisgICAgICBBQlNMX0lOVEVSTkFMX0xPRygKKyAgICAgICAgICBJ
TkZPLCBhYnNsOjpTdHJGb3JtYXQoIlNtb2tlIHRlc3QgZm9yIEJldGEoJWYsICVmKSIsIGFscGhh
LCBiZXRhKSk7CisKKyAgICAgIHBhcmFtX3R5cGUgcGFyYW0oYWxwaGEsIGJldGEpOworICAgICAg
YWJzbDo6YmV0YV9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBiZWZvcmUoYWxwaGEsIGJldGEpOwor
ICAgICAgRVhQRUNUX0VRKGJlZm9yZS5hbHBoYSgpLCBwYXJhbS5hbHBoYSgpKTsKKyAgICAgIEVY
UEVDVF9FUShiZWZvcmUuYmV0YSgpLCBwYXJhbS5iZXRhKCkpOworCisgICAgICB7CisgICAgICAg
IGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gdmlhX3BhcmFtKHBhcmFtKTsKKyAg
ICAgICAgRVhQRUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAgICAgICAgRVhQRUNUX0VRKHZp
YV9wYXJhbS5wYXJhbSgpLCBiZWZvcmUucGFyYW0oKSk7CisgICAgICB9CisKKyAgICAgIC8vIFNt
b2tlIHRlc3QuCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtDb3VudDsgKytpKSB7CisgICAg
ICAgIGF1dG8gc2FtcGxlID0gYmVmb3JlKGdlbik7CisgICAgICAgIEVYUEVDVF9UUlVFKHN0ZDo6
aXNmaW5pdGUoc2FtcGxlKSk7CisgICAgICAgIEVYUEVDVF9HRShzYW1wbGUsIGJlZm9yZS5taW4o
KSk7CisgICAgICAgIEVYUEVDVF9MRShzYW1wbGUsIGJlZm9yZS5tYXgoKSk7CisgICAgICB9CisK
KyAgICAgIC8vIFZhbGlkYXRlIHN0cmVhbSBzZXJpYWxpemF0aW9uLgorICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gc3M7CisgICAgICBzcyA8PCBiZWZvcmU7CisgICAgICBhYnNsOjpiZXRhX2Rpc3Ry
aWJ1dGlvbjxUeXBlUGFyYW0+IGFmdGVyKDMuOGYsIDEuNDNmKTsKKyAgICAgIEVYUEVDVF9ORShi
ZWZvcmUuYWxwaGEoKSwgYWZ0ZXIuYWxwaGEoKSk7CisgICAgICBFWFBFQ1RfTkUoYmVmb3JlLmJl
dGEoKSwgYWZ0ZXIuYmV0YSgpKTsKKyAgICAgIEVYUEVDVF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0
ZXIucGFyYW0oKSk7CisgICAgICBFWFBFQ1RfTkUoYmVmb3JlLCBhZnRlcik7CisKKyAgICAgIHNz
ID4+IGFmdGVyOworCisjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSB8fCBkZWZpbmVkKF9fUFBD
NjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgXAorICAgIGRlZmluZWQoX19wcGNfXykg
fHwgZGVmaW5lZChfX1BQQ19fKQorICAgICAgaWYgKHN0ZDo6aXNfc2FtZTxUeXBlUGFyYW0sIGxv
bmcgZG91YmxlPjo6dmFsdWUpIHsKKyAgICAgICAgLy8gUm91bmR0cmlwcGluZyBmbG9hdGluZyBw
b2ludCB2YWx1ZXMgcmVxdWlyZXMgc3VmZmljaWVudCBwcmVjaXNpb24KKyAgICAgICAgLy8gdG8g
cmVjb25zdHJ1Y3QgdGhlIGV4YWN0IHZhbHVlLiBJdCB0dXJucyBvdXQgdGhhdCBsb25nIGRvdWJs
ZQorICAgICAgICAvLyBoYXMgc29tZSBlcnJvcnMgZG9pbmcgdGhpcyBvbiBwcGMuCisgICAgICAg
IGlmIChhbHBoYSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpICYmCisgICAg
ICAgICAgICBhbHBoYSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpKSB7
CisgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGRvdWJsZT4oYmVmb3JlLmFscGhhKCkp
LAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KGFmdGVyLmFscGhhKCkp
KQorICAgICAgICAgICAgICA8PCBzcy5zdHIoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYmV0
YSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpICYmCisgICAgICAgICAgICBi
ZXRhID49IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCkpIHsKKyAgICAgICAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8ZG91YmxlPihiZWZvcmUuYmV0YSgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihhZnRlci5iZXRhKCkpKQorICAgICAgICAg
ICAgICA8PCBzcy5zdHIoKTsKKyAgICAgICAgfQorICAgICAgICBjb250aW51ZTsKKyAgICAgIH0K
KyNlbmRpZgorCisgICAgICBFWFBFQ1RfRVEoYmVmb3JlLmFscGhhKCksIGFmdGVyLmFscGhhKCkp
OworICAgICAgRVhQRUNUX0VRKGJlZm9yZS5iZXRhKCksIGFmdGVyLmJldGEoKSk7CisgICAgICBF
WFBFQ1RfRVEoYmVmb3JlLCBhZnRlcikgICAgICAgICAgIC8vCisgICAgICAgICAgPDwgc3Muc3Ry
KCkgPDwgIiAiICAgICAgICAgICAgIC8vCisgICAgICAgICAgPDwgKHNzLmdvb2QoKSA/ICJnb29k
ICIgOiAiIikgIC8vCisgICAgICAgICAgPDwgKHNzLmJhZCgpID8gImJhZCAiIDogIiIpICAgIC8v
CisgICAgICAgICAgPDwgKHNzLmVvZigpID8gImVvZiAiIDogIiIpICAgIC8vCisgICAgICAgICAg
PDwgKHNzLmZhaWwoKSA/ICJmYWlsICIgOiAiIik7CisgICAgfQorICB9Cit9CisKK1RZUEVEX1RF
U1QoQmV0YURpc3RyaWJ1dGlvbkludGVyZmFjZVRlc3QsIERlZ2VuZXJhdGVDYXNlcykgeworICAv
LyBFeHRyZW1lIGNhc2VzIHdoZW4gdGhlIHBhcmFtcyBhcmUgYWJub3JtYWwuCisgIGFic2w6Oklu
c2VjdXJlQml0R2VuIGdlbjsKKyAgY29uc3RleHByIGludCBrQ291bnQgPSAxMDAwOworICBjb25z
dCBUeXBlUGFyYW0ga1NtYWxsVmFsdWVzW10gPSB7CisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRz
PFR5cGVQYXJhbT46Om1pbigpLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+
OjpkZW5vcm1fbWluKCksCisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRz
PFR5cGVQYXJhbT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtKDApKSwg
IC8vIGRlbm9ybV9tYXgKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6ZXBz
aWxvbigpLAorICB9OworICBjb25zdCBUeXBlUGFyYW0ga0xhcmdlVmFsdWVzW10gPSB7CisgICAg
ICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpICogc3RhdGljX2Nhc3Q8VHlw
ZVBhcmFtPigwLjk5OTkpLAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+Ojpt
YXgoKSAtIDEsCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpLAor
ICB9OworICB7CisgICAgLy8gU21hbGwgYWxwaGEgYW5kIGJldGEuCisgICAgLy8gVXNlZnVsIFdv
bGZyYW1BbHBoYSBwbG90czoKKyAgICAvLyAgICogcGxvdCBJbnZlcnNlQmV0YVJlZ3VsYXJpemVk
W3gsIDAuMDAwMSwgMC4wMDAxXSBmcm9tIDAuNDk1IHRvIDAuNTA1CisgICAgLy8gICAqIEJldGFb
MS4wLCAwLjAwMDAwMDEsIDAuMDAwMDAwMV0KKyAgICAvLyAgICogQmV0YVswLjk5OTksIDAuMDAw
MDAwMSwgMC4wMDAwMDAxXQorICAgIGZvciAoVHlwZVBhcmFtIGFscGhhIDoga1NtYWxsVmFsdWVz
KSB7CisgICAgICBmb3IgKFR5cGVQYXJhbSBiZXRhIDoga1NtYWxsVmFsdWVzKSB7CisgICAgICAg
IGludCB6ZXJvcyA9IDA7CisgICAgICAgIGludCBvbmVzID0gMDsKKyAgICAgICAgYWJzbDo6YmV0
YV9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBkKGFscGhhLCBiZXRhKTsKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBrQ291bnQ7ICsraSkgeworICAgICAgICAgIFR5cGVQYXJhbSB4ID0gZChn
ZW4pOworICAgICAgICAgIGlmICh4ID09IDAuMCkgeworICAgICAgICAgICAgemVyb3MrKzsKKyAg
ICAgICAgICB9IGVsc2UgaWYgKHggPT0gMS4wKSB7CisgICAgICAgICAgICBvbmVzKys7CisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUShvbmVzICsgemVyb3MsIGtDb3Vu
dCk7CisgICAgICAgIGlmIChhbHBoYSA9PSBiZXRhKSB7CisgICAgICAgICAgRVhQRUNUX05FKG9u
ZXMsIDApOworICAgICAgICAgIEVYUEVDVF9ORSh6ZXJvcywgMCk7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisgIH0KKyAgeworICAgIC8vIFNtYWxsIGFscGhhLCBsYXJnZSBiZXRhLgorICAg
IC8vIFVzZWZ1bCBXb2xmcmFtQWxwaGEgcGxvdHM6CisgICAgLy8gICAqIHBsb3QgSW52ZXJzZUJl
dGFSZWd1bGFyaXplZFt4LCAwLjAwMDEsIDEwMDAwXSBmcm9tIDAuOTk1IHRvIDEKKyAgICAvLyAg
ICogQmV0YVswLCAwLjAwMDAwMDEsIDEwMDAwMDBdCisgICAgLy8gICAqIEJldGFbMC4wMDEsIDAu
MDAwMDAwMSwgMTAwMDAwMF0KKyAgICAvLyAgICogQmV0YVsxLCAwLjAwMDAwMDEsIDEwMDAwMDBd
CisgICAgZm9yIChUeXBlUGFyYW0gYWxwaGEgOiBrU21hbGxWYWx1ZXMpIHsKKyAgICAgIGZvciAo
VHlwZVBhcmFtIGJldGEgOiBrTGFyZ2VWYWx1ZXMpIHsKKyAgICAgICAgYWJzbDo6YmV0YV9kaXN0
cmlidXRpb248VHlwZVBhcmFtPiBkKGFscGhhLCBiZXRhKTsKKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBrQ291bnQ7ICsraSkgeworICAgICAgICAgIEVYUEVDVF9FUShkKGdlbiksIDAuMCk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKyAgeworICAgIC8vIExhcmdlIGFscGhh
LCBzbWFsbCBiZXRhLgorICAgIC8vIFVzZWZ1bCBXb2xmcmFtQWxwaGEgcGxvdHM6CisgICAgLy8g
ICAqIHBsb3QgSW52ZXJzZUJldGFSZWd1bGFyaXplZFt4LCAxMDAwMCwgMC4wMDAxXSBmcm9tIDAg
dG8gMC4wMDEKKyAgICAvLyAgICogQmV0YVswLjk5LCAxMDAwMDAwLCAwLjAwMDAwMDFdCisgICAg
Ly8gICAqIEJldGFbMSwgMTAwMDAwMCwgMC4wMDAwMDAxXQorICAgIGZvciAoVHlwZVBhcmFtIGFs
cGhhIDoga0xhcmdlVmFsdWVzKSB7CisgICAgICBmb3IgKFR5cGVQYXJhbSBiZXRhIDoga1NtYWxs
VmFsdWVzKSB7CisgICAgICAgIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZChh
bHBoYSwgYmV0YSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga0NvdW50OyArK2kpIHsK
KyAgICAgICAgICBFWFBFQ1RfRVEoZChnZW4pLCAxLjApOworICAgICAgICB9CisgICAgICB9Cisg
ICAgfQorICB9CisgIHsKKyAgICAvLyBMYXJnZSBhbHBoYSBhbmQgYmV0YS4KKyAgICBhYnNsOjpi
ZXRhX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGQoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFy
YW0+OjptYXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSk7CisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBrQ291bnQ7ICsraSkgeworICAgICAgRVhQRUNUX0VRKGQoZ2VuKSwgMC41KTsKKyAgICB9
CisgIH0KKyAgeworICAgIC8vIExhcmdlIGFscGhhIGFuZCBiZXRhIGJ1dCB1bmVxdWFsLgorICAg
IGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZCgKKyAgICAgICAgc3RkOjpudW1l
cmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSwKKyAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czxUeXBlUGFyYW0+OjptYXgoKSAqIDAuOTk5OSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBr
Q291bnQ7ICsraSkgeworICAgICAgVHlwZVBhcmFtIHggPSBkKGdlbik7CisgICAgICBFWFBFQ1Rf
TkUoeCwgMC41Zik7CisgICAgICBFWFBFQ1RfRkxPQVRfRVEoeCwgMC41MDAwMjVmKTsKKyAgICB9
CisgIH0KK30KKworY2xhc3MgQmV0YURpc3RyaWJ1dGlvbk1vZGVsIHsKKyBwdWJsaWM6CisgIGV4
cGxpY2l0IEJldGFEaXN0cmlidXRpb25Nb2RlbCg6OnRlc3Rpbmc6OnR1cGxlPGRvdWJsZSwgZG91
YmxlPiBwKQorICAgICAgOiBhbHBoYV8oOjp0ZXN0aW5nOjpnZXQ8MD4ocCkpLCBiZXRhXyg6OnRl
c3Rpbmc6OmdldDwxPihwKSkge30KKworICBkb3VibGUgTWVhbigpIGNvbnN0IHsgcmV0dXJuIGFs
cGhhXyAvIChhbHBoYV8gKyBiZXRhXyk7IH0KKworICBkb3VibGUgVmFyaWFuY2UoKSBjb25zdCB7
CisgICAgcmV0dXJuIGFscGhhXyAqIGJldGFfIC8gKGFscGhhXyArIGJldGFfICsgMSkgLyAoYWxw
aGFfICsgYmV0YV8pIC8KKyAgICAgICAgICAgKGFscGhhXyArIGJldGFfKTsKKyAgfQorCisgIGRv
dWJsZSBLdXJ0b3NpcygpIGNvbnN0IHsKKyAgICByZXR1cm4gMyArIDYgKgorICAgICAgICAgICAg
ICAgICAgICgoYWxwaGFfIC0gYmV0YV8pICogKGFscGhhXyAtIGJldGFfKSAqIChhbHBoYV8gKyBi
ZXRhXyArIDEpIC0KKyAgICAgICAgICAgICAgICAgICAgYWxwaGFfICogYmV0YV8gKiAoMiArIGFs
cGhhXyArIGJldGFfKSkgLworICAgICAgICAgICAgICAgICAgIGFscGhhXyAvIGJldGFfIC8gKGFs
cGhhXyArIGJldGFfICsgMikgLyAoYWxwaGFfICsgYmV0YV8gKyAzKTsKKyAgfQorCisgcHJvdGVj
dGVkOgorICBjb25zdCBkb3VibGUgYWxwaGFfOworICBjb25zdCBkb3VibGUgYmV0YV87Cit9Owor
CitjbGFzcyBCZXRhRGlzdHJpYnV0aW9uVGVzdAorICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVz
dFdpdGhQYXJhbTw6OnRlc3Rpbmc6OnR1cGxlPGRvdWJsZSwgZG91YmxlPj4sCisgICAgICBwdWJs
aWMgQmV0YURpc3RyaWJ1dGlvbk1vZGVsIHsKKyBwdWJsaWM6CisgIEJldGFEaXN0cmlidXRpb25U
ZXN0KCkgOiBCZXRhRGlzdHJpYnV0aW9uTW9kZWwoR2V0UGFyYW0oKSkge30KKworIHByb3RlY3Rl
ZDoKKyAgdGVtcGxhdGUgPGNsYXNzIEQ+CisgIGJvb2wgU2luZ2xlWlRlc3RPbk1lYW5BbmRWYXJp
YW5jZShkb3VibGUgcCwgc2l6ZV90IHNhbXBsZXMpOworCisgIHRlbXBsYXRlIDxjbGFzcyBEPgor
ICBib29sIFNpbmdsZUNoaVNxdWFyZWRUZXN0KGRvdWJsZSBwLCBzaXplX3Qgc2FtcGxlcywgc2l6
ZV90IGJ1Y2tldHMpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZ187Cit9OworCit0ZW1w
bGF0ZSA8Y2xhc3MgRD4KK2Jvb2wgQmV0YURpc3RyaWJ1dGlvblRlc3Q6OlNpbmdsZVpUZXN0T25N
ZWFuQW5kVmFyaWFuY2UoZG91YmxlIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzYW1wbGVzKSB7CisgIEQgZGlzKGFscGhh
XywgYmV0YV8pOworCisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gZGF0YTsKKyAgZGF0YS5yZXNlcnZl
KHNhbXBsZXMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbXBsZXM7IGkrKykgeworICAg
IGNvbnN0IGRvdWJsZSB2YXJpYXRlID0gZGlzKHJuZ18pOworICAgIEVYUEVDVF9GQUxTRShzdGQ6
OmlzbmFuKHZhcmlhdGUpKTsKKyAgICAvLyBOb3RlIHRoYXQgZXF1YWxpdHkgaXMgYWxsb3dlZCBv
biBib3RoIHNpZGVzLgorICAgIEVYUEVDVF9HRSh2YXJpYXRlLCAwLjApOworICAgIEVYUEVDVF9M
RSh2YXJpYXRlLCAxLjApOworICAgIGRhdGEucHVzaF9iYWNrKHZhcmlhdGUpOworICB9CisKKyAg
Ly8gV2UgdmFsaWRhdGUgdGhhdCB0aGUgc2FtcGxlIG1lYW4gYW5kIHNhbXBsZSB2YXJpYW5jZSBh
cmUgaW5kZWVkIGZyb20gYQorICAvLyBCZXRhIGRpc3RyaWJ1dGlvbiB3aXRoIHRoZSBnaXZlbiBz
aGFwZSBwYXJhbWV0ZXJzLgorICBjb25zdCBhdXRvIG0gPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OkNvbXB1dGVEaXN0cmlidXRpb25Nb21lbnRzKGRhdGEpOworCisgIC8vIFRoZSB2YXJpYW5jZSBv
ZiB0aGUgc2FtcGxlIG1lYW4gaXMgdmFyaWFuY2UgLyBuLgorICBjb25zdCBkb3VibGUgbWVhbl9z
dGRkZXYgPSBzdGQ6OnNxcnQoVmFyaWFuY2UoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obS5uKSk7
CisKKyAgLy8gVGhlIHZhcmlhbmNlIG9mIHRoZSBzYW1wbGUgdmFyaWFuY2UgaXMgKGFwcHJveGlt
YXRlbHkpOgorICAvLyAgIChrdXJ0b3NpcyAtIDEpICogdmFyaWFuY2VeMiAvIG4KKyAgY29uc3Qg
ZG91YmxlIHZhcmlhbmNlX3N0ZGRldiA9IHN0ZDo6c3FydCgKKyAgICAgIChLdXJ0b3NpcygpIC0g
MSkgKiBWYXJpYW5jZSgpICogVmFyaWFuY2UoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obS5uKSk7
CisgIC8vIHogc2NvcmUgZm9yIHRoZSBzYW1wbGUgdmFyaWFuY2UuCisgIGNvbnN0IGRvdWJsZSB6
X3ZhcmlhbmNlID0gKG0udmFyaWFuY2UgLSBWYXJpYW5jZSgpKSAvIHZhcmlhbmNlX3N0ZGRldjsK
KworICBjb25zdCBkb3VibGUgbWF4X2VyciA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6TWF4RXJy
b3JUb2xlcmFuY2UocCk7CisgIGNvbnN0IGRvdWJsZSB6X21lYW4gPSBhYnNsOjpyYW5kb21faW50
ZXJuYWw6OlpTY29yZShNZWFuKCksIG0pOworICBjb25zdCBib29sIHBhc3MgPQorICAgICAgYWJz
bDo6cmFuZG9tX2ludGVybmFsOjpOZWFyKCJ6Iiwgel9tZWFuLCAwLjAsIG1heF9lcnIpICYmCisg
ICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok5lYXIoInpfdmFyaWFuY2UiLCB6X3ZhcmlhbmNl
LCAwLjAsIG1heF9lcnIpOworICBpZiAoIXBhc3MpIHsKKyAgICBBQlNMX0lOVEVSTkFMX0xPRygK
KyAgICAgICAgSU5GTywKKyAgICAgICAgYWJzbDo6U3RyRm9ybWF0KAorICAgICAgICAgICAgIkJl
dGEoJWYsICVmKSwgIgorICAgICAgICAgICAgIm1lYW46IHNhbXBsZSAlZiwgZXhwZWN0ICVmLCB3
aGljaCBpcyAlZiBzdGRkZXZzIGF3YXksICIKKyAgICAgICAgICAgICJ2YXJpYW5jZTogc2FtcGxl
ICVmLCBleHBlY3QgJWYsIHdoaWNoIGlzICVmIHN0ZGRldnMgYXdheS4iLAorICAgICAgICAgICAg
YWxwaGFfLCBiZXRhXywgbS5tZWFuLCBNZWFuKCksCisgICAgICAgICAgICBzdGQ6OmFicyhtLm1l
YW4gLSBNZWFuKCkpIC8gbWVhbl9zdGRkZXYsIG0udmFyaWFuY2UsIFZhcmlhbmNlKCksCisgICAg
ICAgICAgICBzdGQ6OmFicyhtLnZhcmlhbmNlIC0gVmFyaWFuY2UoKSkgLyB2YXJpYW5jZV9zdGRk
ZXYpKTsKKyAgfQorICByZXR1cm4gcGFzczsKK30KKwordGVtcGxhdGUgPGNsYXNzIEQ+Citib29s
IEJldGFEaXN0cmlidXRpb25UZXN0OjpTaW5nbGVDaGlTcXVhcmVkVGVzdChkb3VibGUgcCwgc2l6
ZV90IHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgYnVja2V0cykgeworICBjb25zdGV4cHIgZG91YmxlIGtFcnIgPSAxZS03Owor
ICBzdGQ6OnZlY3Rvcjxkb3VibGU+IGN1dG9mZnMsIGV4cGVjdGVkOworICBjb25zdCBkb3VibGUg
YnVja2V0X3dpZHRoID0gMS4wIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihidWNrZXRzKTsKKyAgaW50
IGkgPSAxOworICBpbnQgdW5tZXJnZWRfYnVja2V0cyA9IDA7CisgIGZvciAoOyBpIDwgYnVja2V0
czsgKytpKSB7CisgICAgY29uc3QgZG91YmxlIHAgPSBidWNrZXRfd2lkdGggKiBzdGF0aWNfY2Fz
dDxkb3VibGU+KGkpOworICAgIGNvbnN0IGRvdWJsZSBib3VuZGFyeSA9CisgICAgICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6QmV0YUluY29tcGxldGVJbnYoYWxwaGFfLCBiZXRhXywgcCk7Cisg
ICAgLy8gVGhlIGludGVudGlvbiBpcyB0byBhZGQgYGJvdW5kYXJ5YCB0byB0aGUgbGlzdCBvZiBg
Y3V0b2Zmc2AuIEl0IGJlY29tZXMKKyAgICAvLyBwcm9ibGVtYXRpYywgaG93ZXZlciwgd2hlbiB0
aGUgYm91bmRhcnkgdmFsdWVzIGFyZSBub3QgbW9ub3RvbmUsIGR1ZSB0bworICAgIC8vIG51bWVy
aWNhbCBpc3N1ZXMgd2hlbiBjb21wdXRpbmcgdGhlIGludmVyc2UgcmVndWxhcml6ZWQgaW5jb21w
bGV0ZQorICAgIC8vIEJldGEgZnVuY3Rpb24uIEluIHRoZXNlIGNhc2VzLCB3ZSBtZXJnZSB0aGF0
IGJ1Y2tldCB3aXRoIGl0cyBwcmV2aW91cworICAgIC8vIG5laWdoYm9yIGFuZCBtZXJnZSB0aGVp
ciBleHBlY3RlZCBjb3VudHMuCisgICAgaWYgKChjdXRvZmZzLmVtcHR5KCkgJiYgYm91bmRhcnkg
PCBrRXJyKSB8fAorICAgICAgICAoIWN1dG9mZnMuZW1wdHkoKSAmJiBib3VuZGFyeSA8PSBjdXRv
ZmZzLmJhY2soKSkpIHsKKyAgICAgIHVubWVyZ2VkX2J1Y2tldHMrKzsKKyAgICAgIGNvbnRpbnVl
OworICAgIH0KKyAgICBpZiAoYm91bmRhcnkgPj0gMS4wIC0gMWUtMTApIHsKKyAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjdXRvZmZzLnB1c2hfYmFjayhib3VuZGFyeSk7CisgICAgZXhwZWN0ZWQu
cHVzaF9iYWNrKHN0YXRpY19jYXN0PGRvdWJsZT4oMSArIHVubWVyZ2VkX2J1Y2tldHMpICoKKyAg
ICAgICAgICAgICAgICAgICAgICAgYnVja2V0X3dpZHRoICogc3RhdGljX2Nhc3Q8ZG91YmxlPihz
YW1wbGVzKSk7CisgICAgdW5tZXJnZWRfYnVja2V0cyA9IDA7CisgIH0KKyAgY3V0b2Zmcy5wdXNo
X2JhY2soc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKKyAgLy8gTWVy
Z2UgYWxsIHJlbWFpbmluZyBidWNrZXRzLgorICBleHBlY3RlZC5wdXNoX2JhY2soc3RhdGljX2Nh
c3Q8ZG91YmxlPihidWNrZXRzIC0gaSArIDEpICogYnVja2V0X3dpZHRoICoKKyAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oc2FtcGxlcykpOworICAvLyBNYWtlIHN1cmUg
dGhhdCB3ZSBkb24ndCBtZXJnZSBhbGwgdGhlIGJ1Y2tldHMsIG1ha2luZyB0aGlzIHRlc3QKKyAg
Ly8gbWVhbmluZ2xlc3MuCisgIEVYUEVDVF9HRShjdXRvZmZzLnNpemUoKSwgMykgPDwgYWxwaGFf
IDw8ICIsICIgPDwgYmV0YV87CisKKyAgRCBkaXMoYWxwaGFfLCBiZXRhXyk7CisKKyAgc3RkOjp2
ZWN0b3I8aW50MzJfdD4gY291bnRzKGN1dG9mZnMuc2l6ZSgpLCAwKTsKKyAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzYW1wbGVzOyBpKyspIHsKKyAgICBjb25zdCBkb3VibGUgeCA9IGRpcyhybmdfKTsK
KyAgICBhdXRvIGl0ID0gc3RkOjp1cHBlcl9ib3VuZChjdXRvZmZzLmJlZ2luKCksIGN1dG9mZnMu
ZW5kKCksIHgpOworICAgIGNvdW50c1tzdGQ6OmRpc3RhbmNlKGN1dG9mZnMuYmVnaW4oKSwgaXQp
XSsrOworICB9CisKKyAgLy8gTnVsbC1oeXBvdGhlc2lzIGlzIHRoYXQgdGhlIGRpc3RyaWJ1dGlv
biBpcyBiZXRhIGRpc3RyaWJ1dGVkIHdpdGggdGhlCisgIC8vIHByb3ZpZGVkIGFscGhhLCBiZXRh
IHBhcmFtcyAobm90IGVzdGltYXRlZCBmcm9tIHRoZSBkYXRhKS4KKyAgY29uc3QgaW50IGRvZiA9
IGN1dG9mZnMuc2l6ZSgpIC0gMTsKKworICBjb25zdCBkb3VibGUgY2hpX3NxdWFyZSA9IGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlKAorICAgICAgY291bnRzLmJlZ2luKCksIGNvdW50
cy5lbmQoKSwgZXhwZWN0ZWQuYmVnaW4oKSwgZXhwZWN0ZWQuZW5kKCkpOworICBjb25zdCBib29s
IHBhc3MgPQorICAgICAgKGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlUFZhbHVlKGNo
aV9zcXVhcmUsIGRvZikgPj0gcCk7CisgIGlmICghcGFzcykgeworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY3V0b2Zmcy5zaXplKCk7IGkrKykgeworICAgICAgQUJTTF9JTlRFUk5BTF9MT0coCisg
ICAgICAgICAgSU5GTywgYWJzbDo6U3RyRm9ybWF0KCJjdXRvZmZbJWRdID0gJWYsIGFjdHVhbCBj
b3VudCAlZCwgZXhwZWN0ZWQgJWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
LCBjdXRvZmZzW2ldLCBjb3VudHNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludD4oZXhwZWN0ZWRbaV0pKSk7CisgICAgfQorCisgICAgQUJTTF9JTlRF
Uk5BTF9MT0coCisgICAgICAgIElORk8sIGFic2w6OlN0ckZvcm1hdCgKKyAgICAgICAgICAgICAg
ICAgICJCZXRhKCVmLCAlZikgJXMgJWYsIHAgPSAlZiIsIGFscGhhXywgYmV0YV8sCisgICAgICAg
ICAgICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OmtDaGlTcXVhcmVkLCBjaGlfc3F1YXJl
LAorICAgICAgICAgICAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVQVmFs
dWUoY2hpX3NxdWFyZSwgZG9mKSkpOworICB9CisgIHJldHVybiBwYXNzOworfQorCitURVNUX1Ao
QmV0YURpc3RyaWJ1dGlvblRlc3QsIFRlc3RTYW1wbGVTdGF0aXN0aWNzKSB7CisgIHN0YXRpYyBj
b25zdGV4cHIgaW50IGtSdW5zID0gMjA7CisgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGtQRmFp
bCA9IDAuMDI7CisgIGNvbnN0IGRvdWJsZSBwID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6UmVxdWlyZWRTdWNjZXNzUHJvYmFiaWxpdHkoa1BGYWlsLCBrUnVucyk7CisgIHN0YXRpYyBj
b25zdGV4cHIgaW50IGtTYW1wbGVDb3VudCA9IDEwMDAwOworICBzdGF0aWMgY29uc3RleHByIGlu
dCBrQnVja2V0Q291bnQgPSAxMDA7CisgIGludCBmYWlsZWQgPSAwOworICBmb3IgKGludCBpID0g
MDsgaSA8IGtSdW5zOyArK2kpIHsKKyAgICBpZiAoIVNpbmdsZVpUZXN0T25NZWFuQW5kVmFyaWFu
Y2U8YWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZG91YmxlPj4oCisgICAgICAgICAgICBwLCBrU2Ft
cGxlQ291bnQpKSB7CisgICAgICBmYWlsZWQrKzsKKyAgICB9CisgICAgaWYgKCFTaW5nbGVDaGlT
cXVhcmVkVGVzdDxhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxkb3VibGU+PigKKyAgICAgICAgICAg
IDAuMDA1LCBrU2FtcGxlQ291bnQsIGtCdWNrZXRDb3VudCkpIHsKKyAgICAgIGZhaWxlZCsrOwor
ICAgIH0KKyAgfQorICAvLyBTZXQgc28gdGhhdCB0aGUgdGVzdCBpcyBub3QgZmxha3kgYXQgLS1y
dW5zX3Blcl90ZXN0PTEwMDAwCisgIEVYUEVDVF9MRShmYWlsZWQsIDUpOworfQorCitzdGQ6OnN0
cmluZyBQYXJhbU5hbWUoCisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPDo6dGVz
dGluZzo6dHVwbGU8ZG91YmxlLCBkb3VibGU+PiYgaW5mbykgeworICBzdGQ6OnN0cmluZyBuYW1l
ID0gYWJzbDo6U3RyQ2F0KCJhbHBoYV8iLCA6OnRlc3Rpbmc6OmdldDwwPihpbmZvLnBhcmFtKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19iZXRhXyIsIDo6dGVzdGluZzo6
Z2V0PDE+KGluZm8ucGFyYW0pKTsKKyAgcmV0dXJuIGFic2w6OlN0clJlcGxhY2VBbGwobmFtZSwg
e3siKyIsICJfIn0sIHsiLSIsICJfIn0sIHsiLiIsICJfIn19KTsKK30KKworSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoCisgICAgVGVzdFNhbXBsZVN0YXRpc3RpY3NDb21iaW5hdGlvbnMsIEJldGFE
aXN0cmlidXRpb25UZXN0LAorICAgIDo6dGVzdGluZzo6Q29tYmluZSg6OnRlc3Rpbmc6OlZhbHVl
cygwLjEsIDAuMiwgMC45LCAxLjEsIDIuNSwgMTAuMCwgMTIzLjQpLAorICAgICAgICAgICAgICAg
ICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygwLjEsIDAuMiwgMC45LCAxLjEsIDIuNSwgMTAuMCwg
MTIzLjQpKSwKKyAgICBQYXJhbU5hbWUpOworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgKKyAg
ICBUZXN0U2FtcGxlU3RhdGlzdGljc19TZWxlY3RlZFBhaXJzLCBCZXRhRGlzdHJpYnV0aW9uVGVz
dCwKKyAgICA6OnRlc3Rpbmc6OlZhbHVlcyhzdGQ6Om1ha2VfcGFpcigwLjUsIDEwMDApLCBzdGQ6
Om1ha2VfcGFpcigxMDAwLCAwLjUpLAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9w
YWlyKDkwMCwgMTAwMCksIHN0ZDo6bWFrZV9wYWlyKDEwMDAwLCAyMDAwMCksCisgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIoNGU1LCAyZTcpLCBzdGQ6Om1ha2VfcGFpcigxZTcs
IDFlNSkpLAorICAgIFBhcmFtTmFtZSk7CisKKy8vIE5PVEU6IGFic2w6OmJldGFfZGlzdHJpYnV0
aW9uIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4KK1RFU1QoQmV0YURpc3RyaWJ1dGlv
blRlc3QsIFN0YWJpbGl0eVRlc3QpIHsKKyAgLy8gYWJzbDo6YmV0YV9kaXN0cmlidXRpb24gc3Rh
YmlsaXR5IHJlbGllcyBvbiB0aGUgc3RhYmlsaXR5IG9mCisgIC8vIGFic2w6OnJhbmRvbV9pbnRl
cm5hOjpSYW5kVTY0VG9Eb3VibGUsIHN0ZDo6ZXhwLCBzdGQ6OmxvZywgc3RkOjpwb3csCisgIC8v
IGFuZCBzdGQ6OnNxcnQuCisgIC8vCisgIC8vIFRoaXMgdGVzdCBhbHNvIGRlcGVuZHMgb24gdGhl
IHN0YWJpbGl0eSBvZiBzdGQ6OmZyZXhwLgorICB1c2luZyB0ZXN0aW5nOjpFbGVtZW50c0FyZTsK
KyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoeworICAgICAgMHhm
ZmZmMDAwMDAwMDBlNmM4dWxsLCAweGZmZmYwMDAwMDAwMDA2Yzh1bGwsIDB4ODAwMDAzNzY2Mjk1
Q0ZBOXVsbCwKKyAgICAgIDB4MTFDODE5Njg0RTczNEE0MXVsbCwgMHg4MzI2MDM3NjYyOTVDRkE5
dWxsLCAweDdmYmU3NmM4YjQzOTU4MDB1bGwsCisgICAgICAweEIzNDcyRENBN0IxNEE5NEF1bGws
IDB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHhGRkNFQTUwRkRCMkY5NTNCdWxsLAorICAgICAgMHgx
M0NDQTgzMEVCNjFCRDk2dWxsLCAweDAzMzRGRTFFQUEwMzYzQ0Z1bGwsIDB4MDAwMzVDOTA0Qzcw
QTIzOXVsbCwKKyAgICAgIDB4MDAwMDlFMEJDQkFBREUxNHVsbCwgMHgwMDAwMDAwMDAwNjIyQ0E3
dWxsLCAweDQ4NjRmMjJjMDU5YmYyOWV1bGwsCisgICAgICAweDI0Nzg1NmQ4Yjg2MjY2NWN1bGws
IDB4ZTQ2ZTg2ZTlhMTMzN2UxMHVsbCwgMHhkOGM4NTQxZjM1MTliMTMzdWxsLAorICAgICAgMHhm
ZmU3NWI1MmM1NjdiOWU0dWxsLCAweGZmZmZmNzMyZTU3MDljNWJ1bGwsIDB4ZmYxZjdmMGI5ODM1
MzJhY3VsbCwKKyAgICAgIDB4MWVjMmU4OTg2ZDIzNjJjYXVsbCwgMHhDMzMyRERFRkJFNkM1QUE1
dWxsLCAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsCisgICAgICAweDJBRUY3REFENUI2RTJGODR1bGws
IDB4MTUyMUI2MjgyOTA3NjE3MHVsbCwgMHhFQ0RENDc3NTYxOUYxNTEwdWxsLAorICAgICAgMHg4
MTRjOGUzNWZlOWE5NjFhdWxsLCAweDBjM2NkNTljOWI2MzhhMDJ1bGwsIDB4Y2IzYmI2NDc4YTA3
NzE1Y3VsbCwKKyAgICAgIDB4MTIyNGU2MmM5NzhiYmM3ZnVsbCwgMHg2NzFlZjJjYjA0ZTgxZjZl
dWxsLCAweDNjMWNiZDgxMWVhZjE4MDh1bGwsCisgICAgICAweDFiYmMyM2NmYThmYWM3MjF1bGws
IDB4YTRjMmNkYTY1ZTU5NmE1MXVsbCwgMHhiNzcyMTZmYWQzN2FkZjkxdWxsLAorICAgICAgMHg4
MzZkNzk0NDU3YzA4ODQ5dWxsLCAweGUwODNkZjAzNDc1ZjQ5ZDd1bGwsIDB4YmM5ZmViNTEyZTZi
MGQ2Y3VsbCwKKyAgICAgIDB4YjEyZDc0ZmRkNzE4YzhjNXVsbCwgMHgxMmZmMDk2NTNiZmJlNGNh
dWxsLCAweDhkZDAzYTEwNWJjNGVlN2V1bGwsCisgICAgICAweDU3MzgzNDEwNDViYTBkODV1bGws
IDB4ZjNmZDcyMmRjNjVhZDA5ZXVsbCwgMHhmYTE0ZmQyMWVhMmE1NzA1dWxsLAorICAgICAgMHhm
ZmU2ZWE0ZDZlZGIwYzczdWxsLCAweEQwN0U5RUZFMkJGMTFGQjR1bGwsIDB4OTVEQkRBNERBRTkw
OTE5OHVsbCwKKyAgICAgIDB4RUFBRDhFNzE2QjkzRDVBMHVsbCwgMHhEMDhFRDFEMEFGQzcyNUUw
dWxsLCAweDhFM0M1QjJGOEU3NTk0Qjd1bGwsCisgICAgICAweDhGRjZFMkZCRjIxMjJCNjR1bGws
IDB4ODg4OEI4MTI5MDBERjAxQ3VsbCwgMHg0RkFENUVBMDY4OEZDMzFDdWxsLAorICAgICAgMHhE
MUNGRjE5MUIzQThDMUFEdWxsLCAweDJGMkYyMjE4QkUwRTE3Nzd1bGwsIDB4RUE3NTJERkU4QjAy
MUZBMXVsbCwKKyAgfSk7CisKKyAgLy8gQ29udmVydCB0aGUgcmVhbC12YWx1ZWQgcmVzdWx0IGlu
dG8gYSB1bml0NjQgd2hlcmUgd2UgY29tcGFyZQorICAvLyA1IChmbG9hdCkgb3IgMTAgKGRvdWJs
ZSkgZGVjaW1hbCBkaWdpdHMgcGx1cyB0aGUgYmFzZS0yIGV4cG9uZW50LgorICBhdXRvIGZsb2F0
X3RvX3U2NCA9IFtdKGZsb2F0IGQpIHsKKyAgICBpbnQgZXhwID0gMDsKKyAgICBhdXRvIGYgPSBz
dGQ6OmZyZXhwKGQsICZleHApOworICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDFl
NSAqIGYpICogMTAwMDApICsgc3RkOjphYnMoZXhwKTsKKyAgfTsKKyAgYXV0byBkb3VibGVfdG9f
dTY0ID0gW10oZG91YmxlIGQpIHsKKyAgICBpbnQgZXhwID0gMDsKKyAgICBhdXRvIGYgPSBzdGQ6
OmZyZXhwKGQsICZleHApOworICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDFlMTAg
KiBmKSAqIDEwMDAwKSArIHN0ZDo6YWJzKGV4cCk7CisgIH07CisKKyAgc3RkOjp2ZWN0b3I8dWlu
dDY0X3Q+IG91dHB1dCgyMCk7CisgIHsKKyAgICAvLyBBbGdvcml0aG0gSm9laG5rIChmbG9hdCkK
KyAgICBhYnNsOjpiZXRhX2Rpc3RyaWJ1dGlvbjxmbG9hdD4gZGlzdCgwLjFmLCAwLjJmKTsKKyAg
ICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwKKyAg
ICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBmbG9hdF90b191NjQoZGlzdCh1cmJnKSk7IH0p
OworICAgIEVYUEVDVF9FUSg0NCwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfVEhB
VChvdXRwdXQsICAvLworICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKAorICAg
ICAgICAgICAgICAgICAgICA5OTgzNDAwMDAsIDYxOTAzMDAwNCwgNTAwMDAwMDAxLCA5OTk5OTAw
MDAsIDk5NjI4MDAwMCwKKyAgICAgICAgICAgICAgICAgICAgNTAwMDAwMDAxLCA4NDQ3NDAwMDQs
IDg0NzIxMDAwMSwgOTk5OTcwMDAwLCA4NzIzMjAwMDAsCisgICAgICAgICAgICAgICAgICAgIDU4
NTQ4MDAwNywgOTMzMjgwMDAwLCA4NjkwODAwNDIsIDY0NzY3MDAzMSwgNTI4MjQwMDA0LAorICAg
ICAgICAgICAgICAgICAgICA5Njk5ODAwMDQsIDYyNjA1MDAwOCwgOTE1OTMwMDAyLCA4MzM0NDAw
MzMsIDg3ODA0MDAxNSkpOworICB9CisKKyAgdXJiZy5yZXNldCgpOworICB7CisgICAgLy8gQWxn
b3JpdGhtIEpvZWhuayAoZG91YmxlKQorICAgIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPGRvdWJs
ZT4gZGlzdCgwLjEsIDAuMik7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91dHB1dCks
IHN0ZDo6ZW5kKG91dHB1dCksCisgICAgICAgICAgICAgICAgICBbJl0geyByZXR1cm4gZG91Ymxl
X3RvX3U2NChkaXN0KHVyYmcpKTsgfSk7CisgICAgRVhQRUNUX0VRKDQ0LCB1cmJnLmludm9jYXRp
b25zKCkpOworICAgIEVYUEVDVF9USEFUKAorICAgICAgICBvdXRwdXQsICAvLworICAgICAgICB0
ZXN0aW5nOjpFbGVtZW50c0FyZSgKKyAgICAgICAgICAgIDk5ODM0NzEzMDAwMDAwLCA2MTkwMzM1
Njg3MDAwNCwgNTAwMDAwMDAwMDAwMDEsIDk5OTk5NzIxMTcwMDAwLAorICAgICAgICAgICAgOTk2
MjgzNzQ3NzAwMDAsIDk5OTk5OTk5OTkwMDAwLCA4NDQ3NDM5Nzg2MDAwNCwgODQ3MjEyNzYyNDAw
MDEsCisgICAgICAgICAgICA5OTk5NzQwNzQ5MDAwMCwgODcyMzI1MjgxMjAwMDAsIDU4NTQ4MzY0
NzgwMDA3LCA5MzMyODkzMjkxMDAwMCwKKyAgICAgICAgICAgIDg2OTA4MjM3NzcwMDQyLCA2NDc2
NzkxNzkzMDAzMSwgNTI4MjQ1ODE5NzAwMDQsIDk2OTk4NTQ0MTQwMDA0LAorICAgICAgICAgICAg
NjI2MDU5NDYyNzAwMDgsIDkxNTkzNjA0MzgwMDAyLCA4MzM0NTAzMTc0MDAzMywgODc4MDQzOTcy
MzAwMTUpKTsKKyAgfQorCisgIHVyYmcucmVzZXQoKTsKKyAgeworICAgIC8vIEFsZ29yaXRobSBD
aGVuZyAxCisgICAgYWJzbDo6YmV0YV9kaXN0cmlidXRpb248ZG91YmxlPiBkaXN0KDAuOSwgMi4w
KTsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0
KSwKKyAgICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBkb3VibGVfdG9fdTY0KGRpc3QodXJi
ZykpOyB9KTsKKyAgICBFWFBFQ1RfRVEoNjIsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgRVhQ
RUNUX1RIQVQoCisgICAgICAgIG91dHB1dCwgIC8vCisgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRz
QXJlKAorICAgICAgICAgICAgNjIwNjkwMDQ3ODAwMDEsIDY0NDMzMjA0NDUwMDAxLCA1MzYwNzQx
NjU2MDAwMCwgODk2NDQyOTU0MzAwMDgsCisgICAgICAgICAgICA2MTQzNDU4NjMxMDAxOSwgNTUx
NzI2MTU4OTAwMDIsIDYyMTg3MTYxNDkwMDAwLCA1NjQzMzY4NDgxMDAwMywKKyAgICAgICAgICAg
IDgwNDU0NjIyMDUwMDA1LCA4NjQxODU1ODcxMDAwMywgOTI5MjA1MTQ3MDAwMDEsIDY0NjQ1MTg0
NjgwMDAxLAorICAgICAgICAgICAgNTg1NDkxODMzODAwMDAsIDg0ODgxMjgzNjUwMDA1LCA3MTA3
ODcyODU5MDAwMiwgNjk5NDk2OTQ5NzAwMDAsCisgICAgICAgICAgICA3MzE1NzQ2MTcxMDAwMSwg
Njg1OTIxOTEzMDAwMDEsIDcwNzQ3NjIzOTAwMDAwLCA3ODU4NDY5NjkzMDAwNSkpOworICB9CisK
KyAgdXJiZy5yZXNldCgpOworICB7CisgICAgLy8gQWxnb3JpdGhtIENoZW5nIDIKKyAgICBhYnNs
OjpiZXRhX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IGRpc3QoMS41LCAyLjUpOworICAgIHN0ZDo6Z2Vu
ZXJhdGUoc3RkOjpiZWdpbihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLAorICAgICAgICAgICAg
ICAgICAgWyZdIHsgcmV0dXJuIGRvdWJsZV90b191NjQoZGlzdCh1cmJnKSk7IH0pOworICAgIEVY
UEVDVF9FUSg1NCwgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfVEhBVCgKKyAgICAg
ICAgb3V0cHV0LCAgLy8KKyAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUoCisgICAgICAgICAg
ICA3NTAwMDAyOTI1MDAwMSwgNzY3NTE0ODI4NjAwMDEsIDUzMjY0NTc1MjIwMDAwLCA2OTE5MzEz
MzY1MDAwNSwKKyAgICAgICAgICAgIDc4MDI4MzI0NDcwMDEzLCA5MTU3MzU4NzU2MDAwMiwgNTkx
Njc1MjM3NzAwMDAsIDYwNjU4NjE4NTYwMDAyLAorICAgICAgICAgICAgODAwNzU4NzA1NDAwMDAs
IDk0MTQxMzIwNDYwMDA0LCA2MzE5NjU5Mjc3MDAwMywgNzg4ODM5MDYzMDAwMDIsCisgICAgICAg
ICAgICA5Njc5Nzk5MjU5MDAwMSwgNzY5MDc1ODc4MDAwMDEsIDU2NjQ1MTY3NTYwMDAwLCA2NTQw
ODMwMjI4MDAwMywKKyAgICAgICAgICAgIDUzNDAxMTU2MzIwMDAxLCA2NDczMTIzODU3MDAwMCwg
ODMwNjU1NzM3NTAwMDEsIDc5Nzg4MzMzODIwMDAxKSk7CisgIH0KK30KKworLy8gVGhpcyBpcyBh
biBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyB0ZXN0LiBJZiBhbnkgcGFydCBvZiB0aGUgaW1wbGVt
ZW50YXRpb24KKy8vIGNoYW5nZXMsIHRoZW4gaXQgaXMgbGlrZWx5IHRoYXQgdGhpcyB0ZXN0IHdp
bGwgY2hhbmdlIGFzIHdlbGwuICBBbHNvLCBpZgorLy8gZGVwZW5kZW5jaWVzIG9mIHRoZSBkaXN0
cmlidXRpb24gY2hhbmdlLCBzdWNoIGFzIFJhbmRVNjRUb0RvdWJsZSwgdGhlbiB0aGlzCisvLyBp
cyBhbHNvIGxpa2VseSB0byBjaGFuZ2UuCitURVNUKEJldGFEaXN0cmlidXRpb25UZXN0LCBBbGdv
cml0aG1Cb3VuZHMpIHsKKyAgeworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2Vf
dXJiZyB1cmJnKAorICAgICAgICB7MHg3ZmJlNzZjOGI0Mzk1ODAwdWxsLCAweDgwMDAwMDAwMDAw
MDAwMDB1bGx9KTsKKyAgICAvLyB1PTAuNDk5LCB2PTAuNQorICAgIGFic2w6OmJldGFfZGlzdHJp
YnV0aW9uPGRvdWJsZT4gZGlzdCgxZS00LCAxZS00KTsKKyAgICBkb3VibGUgYSA9IGRpc3QodXJi
Zyk7CisgICAgRVhQRUNUX0VRKGEsIDIuMDIwMjg2MDg2MTU2NzEwODUyOWUtMDkpOworICAgIEVY
UEVDVF9FUSgyLCB1cmJnLmludm9jYXRpb25zKCkpOworICB9CisKKyAgLy8gVGVzdCB0aGF0IGJv
dGggdGhlIGZsb2F0ICYgZG91YmxlIGFsZ29yaXRobXMgYXBwcm9wcmlhdGVseSByZWplY3QgdGhl
CisgIC8vIGluaXRpYWwgZHJhdy4KKyAgeworICAgIC8vIDEvYWxwaGEgPSAxL2JldGEgPSAyLgor
ICAgIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPGZsb2F0PiBkaXN0KDAuNSwgMC41KTsKKworICAg
IC8vIGZpcnN0IHR3byBvdXRwdXRzIGFyZSBjbG9zZSB0byAxLjAgLSBlcHNpbG9uLAorICAgIC8v
IHRodXM6ICAodSBeIDIgKyB2IF4gMikgPiAxLjAKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAgICAgICAgezB4ZmZmZjAwMDAwMDA2ZTZjOHVsbCwgMHhm
ZmZmMDAwMDAwMDdjN2M4dWxsLCAweDgwMDAwMzc2NjI5NUNGQTl1bGwsCisgICAgICAgICAweDEx
QzgxOTY4NEU3MzRBNDF1bGx9KTsKKyAgICB7CisgICAgICBkb3VibGUgeSA9IGFic2w6OmJldGFf
ZGlzdHJpYnV0aW9uPGRvdWJsZT4oMC41LCAwLjUpKHVyYmcpOworICAgICAgRVhQRUNUX0VRKDQs
IHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAgICBFWFBFQ1RfRVEoeSwgMC45ODEwNjY4OTUyNjMz
ODYyKSA8PCB5OworICAgIH0KKworICAgIC8vIC4uLmFuZDogIGxvZyh1KSAqIGEgfj0gbG9nKHYp
ICogYiB+PSAtMC4wMgorICAgIC8vIHRodXMgeiB+PSAtMC4wMiArIGxvZygxICsgZSh+MCkpCisg
ICAgLy8gICAgICAgIH49IC0wLjAyICsgMC42OQorICAgIC8vIHRodXMgeiA+IDAKKyAgICB1cmJn
LnJlc2V0KCk7CisgICAgeworICAgICAgZmxvYXQgeCA9IGFic2w6OmJldGFfZGlzdHJpYnV0aW9u
PGZsb2F0PigwLjUsIDAuNSkodXJiZyk7CisgICAgICBFWFBFQ1RfRVEoNCwgdXJiZy5pbnZvY2F0
aW9ucygpKTsKKyAgICAgIEVYUEVDVF9ORUFSKDAuOTgxMDY2ODgyNjEwMzIxMDQsIHgsIDAuMDAw
MDAwNSkgPDwgeCA8PCAiZiI7CisgICAgfQorICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc2NyZXRlX2Rpc3RyaWJ1dGlvbi5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9kaXNjcmV0ZV9kaXN0cmlidXRpb24uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZjMDljNTE4MGIzOTk0
YTBjOTU5YzYyZDVkZjQ5OGU3N2U2MDhmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9kaXNjcmV0ZV9kaXN0cmlidXRpb24uY2MKQEAgLTAsMCArMSw5NiBAQAorLy8gQ29weXJpZ2h0
IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9kaXNj
cmV0ZV9kaXN0cmlidXRpb24uaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRv
bV9pbnRlcm5hbCB7CisKKy8vIEluaXRpYWxpemVzIHRoZSBkaXN0cmlidXRpb24gdGFibGUgZm9y
IFdhbGtlcidzIEFsaWFzaW5nIGFsZ29yaXRobSwgZGVzY3JpYmVkCisvLyBpbiBLbnV0aCwgVm9s
IDIuIGFzIHdlbGwgYXMgaW4gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxpYXNfbWV0
aG9kCitzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBzaXplX3Q+PiBJbml0RGlzY3JldGVE
aXN0cmlidXRpb24oCisgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiogcHJvYmFiaWxpdGllcykgewor
ICAvLyBUaGUgZW1wdHktY2FzZSBzaG91bGQgYWxyZWFkeSBiZSBoYW5kbGVkIGJ5IHRoZSBjb25z
dHJ1Y3Rvci4KKyAgYXNzZXJ0KHByb2JhYmlsaXRpZXMpOworICBhc3NlcnQoIXByb2JhYmlsaXRp
ZXMtPmVtcHR5KCkpOworCisgIC8vIFN0ZXAgMS4gTm9ybWFsaXplIHRoZSBpbnB1dCBwcm9iYWJp
bGl0aWVzIHRvIDEuMC4KKyAgZG91YmxlIHN1bSA9IHN0ZDo6YWNjdW11bGF0ZShzdGQ6OmJlZ2lu
KCpwcm9iYWJpbGl0aWVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVu
ZCgqcHJvYmFiaWxpdGllcyksIDAuMCk7CisgIGlmIChzdGQ6OmZhYnMoc3VtIC0gMS4wKSA+IDFl
LTYpIHsKKyAgICAvLyBTY2FsZSBgcHJvYmFiaWxpdGllc2Agb25seSB3aGVuIHRoZSBzdW0gaXMg
dG9vIGZhciBmcm9tIDEuMC4gIFNjYWxpbmcKKyAgICAvLyB1bmNvbmRpdGlvbmFsbHkgd2lsbCBh
bHRlciB0aGUgcHJvYmFiaWxpdGllcyBzbGlnaHRseS4KKyAgICBmb3IgKGRvdWJsZSYgaXRlbSA6
ICpwcm9iYWJpbGl0aWVzKSB7CisgICAgICBpdGVtID0gaXRlbSAvIHN1bTsKKyAgICB9CisgIH0K
KworICAvLyBTdGVwIDIuIEF0IHRoaXMgcG9pbnQgYHByb2JhYmlsaXRpZXNgIGlzIHNldCB0byB0
aGUgY29uZGl0aW9uYWwKKyAgLy8gcHJvYmFiaWxpdGllcyBvZiBlYWNoIGVsZW1lbnQgd2hpY2gg
c3VtIHRvIDEuMCwgdG8gd2l0aGluIHJlYXNvbmFibGUgZXJyb3IuCisgIC8vIFRoZXNlIHZhbHVl
cyBhcmUgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIHByb3BvcnRpb25hbCBwcm9iYWJpbGl0eSB0YWJs
ZXMgZm9yCisgIC8vIHRoZSBzZWxlY3Rpb24gcGhhc2VzIG9mIFdhbGtlcidzIEFsaWFzaW5nIGFs
Z29yaXRobS4KKyAgLy8KKyAgLy8gVG8gY29uc3RydWN0IHRoZSB0YWJsZSwgcGljayBhbiBlbGVt
ZW50IHdoaWNoIGlzIHVuZGVyLWZ1bGwgKGkuZS4sIGFuCisgIC8vIGVsZW1lbnQgZm9yIHdoaWNo
IGAoKnByb2JhYmlsaXRpZXMpW2ldIDwgMS4wL25gKSwgYW5kIHBhaXIgaXQgd2l0aCBhbgorICAv
LyBlbGVtZW50IHdoaWNoIGlzIG92ZXItZnVsbCAoaS5lLiwgYW4gZWxlbWVudCBmb3Igd2hpY2gK
KyAgLy8gYCgqcHJvYmFiaWxpdGllcylbaV0gPiAxLjAvbmApLiBUaGUgc21hbGxlciB2YWx1ZSBj
YW4gYWx3YXlzIGJlIHJldGlyZWQuCisgIC8vIFRoZSBsYXJnZXIgbWF5IHN0aWxsIGJlIGdyZWF0
ZXIgdGhhbiAxLjAvbiwgb3IgbWF5IG5vdyBiZSBsZXNzIHRoYW4gMS4wL24sCisgIC8vIGFuZCBw
dXQgYmFjayBvbnRvIHRoZSBhcHByb3ByaWF0ZSBjb2xsZWN0aW9uLgorICBjb25zdCBzaXplX3Qg
biA9IHByb2JhYmlsaXRpZXMtPnNpemUoKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJs
ZSwgc2l6ZV90Pj4gcTsKKyAgcS5yZXNlcnZlKG4pOworCisgIHN0ZDo6dmVjdG9yPHNpemVfdD4g
b3ZlcjsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiB1bmRlcjsKKyAgc2l6ZV90IGlkeCA9IDA7Cisg
IGZvciAoY29uc3QgZG91YmxlIGl0ZW0gOiAqcHJvYmFiaWxpdGllcykgeworICAgIGFzc2VydChp
dGVtID49IDApOworICAgIGNvbnN0IGRvdWJsZSB2ID0gaXRlbSAqIG47CisgICAgcS5lbXBsYWNl
X2JhY2sodiwgMCk7CisgICAgaWYgKHYgPCAxLjApIHsKKyAgICAgIHVuZGVyLnB1c2hfYmFjayhp
ZHgrKyk7CisgICAgfSBlbHNlIHsKKyAgICAgIG92ZXIucHVzaF9iYWNrKGlkeCsrKTsKKyAgICB9
CisgIH0KKyAgd2hpbGUgKCFvdmVyLmVtcHR5KCkgJiYgIXVuZGVyLmVtcHR5KCkpIHsKKyAgICBh
dXRvIGxvID0gdW5kZXIuYmFjaygpOworICAgIHVuZGVyLnBvcF9iYWNrKCk7CisgICAgYXV0byBo
aSA9IG92ZXIuYmFjaygpOworICAgIG92ZXIucG9wX2JhY2soKTsKKworICAgIHFbbG9dLnNlY29u
ZCA9IGhpOworICAgIGNvbnN0IGRvdWJsZSByID0gcVtoaV0uZmlyc3QgLSAoMS4wIC0gcVtsb10u
Zmlyc3QpOworICAgIHFbaGldLmZpcnN0ID0gcjsKKyAgICBpZiAociA8IDEuMCkgeworICAgICAg
dW5kZXIucHVzaF9iYWNrKGhpKTsKKyAgICB9IGVsc2UgeworICAgICAgb3Zlci5wdXNoX2JhY2so
aGkpOworICAgIH0KKyAgfQorCisgIC8vIER1ZSB0byByb3VuZGluZyBlcnJvcnMsIHRoZXJlIG1h
eSBiZSB1bi1wYWlyZWQgZWxlbWVudHMgaW4gZWl0aGVyCisgIC8vIGNvbGxlY3Rpb247IHRoZXNl
IHNob3VsZCBhbGwgYmUgdmFsdWVzIG5lYXIgMS4wLiAgRm9yIHRoZXNlIHZhbHVlcywgc2V0IGBx
YAorICAvLyB0byAxLjAgYW5kIHNldCB0aGUgYWx0ZXJuYXRlIHRvIHRoZSBpZGVudGl0eS4KKyAg
Zm9yIChhdXRvIGkgOiBvdmVyKSB7CisgICAgcVtpXSA9IHsxLjAsIGl9OworICB9CisgIGZvciAo
YXV0byBpIDogdW5kZXIpIHsKKyAgICBxW2ldID0gezEuMCwgaX07CisgIH0KKyAgcmV0dXJuIHE7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZGlzY3JldGVfZGlzdHJpYnV0aW9uLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vZGlzY3JldGVfZGlzdHJpYnV0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU2MGYwM2M1
ZmRkZDA2YjQ5MjJkN2FjM2E5ZGVmNjcyYzIyMTgxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9kaXNjcmV0ZV9kaXN0cmlidXRpb24uaApAQCAtMCwwICsxLDI0NSBAQAorLy8gQ29w
eXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01f
RElTQ1JFVEVfRElTVFJJQlVUSU9OX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0RJU0NSRVRFX0RJ
U1RSSUJVVElPTl9IXworCisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjbWF0aD4KKyNp
bmNsdWRlIDxpc3RyZWFtPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxudW1lcmljPgor
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVj
dG9yPgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vYmVybm91bGxpX2Rpc3RyaWJ1dGlvbi5oIgor
I2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyLmgiCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgiCisKK25hbWVz
cGFjZSBhYnNsIHsKKworLy8gYWJzbDo6ZGlzY3JldGVfZGlzdHJpYnV0aW9uCisvLworLy8gQSBk
aXNjcmV0ZSBkaXN0cmlidXRpb24gcHJvZHVjZXMgcmFuZG9tIGludGVnZXJzIGksIHdoZXJlIDAg
PD0gaSA8IG4KKy8vIGRpc3RyaWJ1dGVkIGFjY29yZGluZyB0byB0aGUgZGlzY3JldGUgcHJvYmFi
aWxpdHkgZnVuY3Rpb246CisvLworLy8gICAgIFAoaXxwMCwuLi4scG7iiJIxKT1waQorLy8KKy8v
IFRoaXMgY2xhc3MgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgZGlzY3JldGVfZGlzdHJpYnV0aW9u
IChzZWUKKy8vIFtyYW5kLmRpc3Quc2FtcC5kaXNjcmV0ZV0pLgorLy8KKy8vIFRoZSBhbGdvcml0
aG0gdXNlZCBpcyBXYWxrZXIncyBBbGlhc2luZyBhbGdvcml0aG0sIGRlc2NyaWJlZCBpbiBLbnV0
aCwgVm9sIDIuCisvLyBhYnNsOjpkaXNjcmV0ZV9kaXN0cmlidXRpb24gdGFrZXMgTyhOKSB0aW1l
IHRvIHByZWNvbXB1dGUgdGhlIHByb2JhYmlsaXRpZXMKKy8vICh3aGVyZSBOIGlzIHRoZSBudW1i
ZXIgb2YgcG9zc2libGUgb3V0Y29tZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbikgYXQKKy8vIGNvbnN0
cnVjdGlvbiwgYW5kIHRoZW4gdGFrZXMgTygxKSB0aW1lIGZvciBlYWNoIHZhcmlhdGUgZ2VuZXJh
dGlvbi4gIE1hbnkKKy8vIG90aGVyIGltcGxlbWVudGF0aW9ucyBhbHNvIHRha2UgTyhOKSB0aW1l
IHRvIGNvbnN0cnVjdCBhbiBvcmRlcmVkIHNlcXVlbmNlIG9mCisvLyBwYXJ0aWFsIHN1bXMsIHBs
dXMgTyhsb2cgTikgdGltZSBwZXIgdmFyaWF0ZSB0byBiaW5hcnkgc2VhcmNoLgorLy8KK3RlbXBs
YXRlIDx0eXBlbmFtZSBJbnRUeXBlID0gaW50PgorY2xhc3MgZGlzY3JldGVfZGlzdHJpYnV0aW9u
IHsKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gSW50VHlwZTsKKworICBjbGFzcyBw
YXJhbV90eXBlIHsKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBkaXN0cmlidXRpb25fdHlwZSA9IGRp
c2NyZXRlX2Rpc3RyaWJ1dGlvbjsKKworICAgIHBhcmFtX3R5cGUoKSB7IGluaXQoKTsgfQorCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+CisgICAgZXhwbGljaXQgcGFyYW1f
dHlwZShJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCkKKyAgICAgICAgOiBw
XyhiZWdpbiwgZW5kKSB7CisgICAgICBpbml0KCk7CisgICAgfQorCisgICAgZXhwbGljaXQgcGFy
YW1fdHlwZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8ZG91YmxlPiB3ZWlnaHRzKSA6IHBfKHdlaWdo
dHMpIHsKKyAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVW5hcnlP
cGVyYXRpb24+CisgICAgZXhwbGljaXQgcGFyYW1fdHlwZShzaXplX3QgbncsIGRvdWJsZSB4bWlu
LCBkb3VibGUgeG1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuYXJ5T3BlcmF0aW9uIGZ3
KSB7CisgICAgICBpZiAobncgPiAwKSB7CisgICAgICAgIHBfLnJlc2VydmUobncpOworICAgICAg
ICBkb3VibGUgZGVsdGEgPSAoeG1heCAtIHhtaW4pIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihudyk7
CisgICAgICAgIGFzc2VydChkZWx0YSA+IDApOworICAgICAgICBkb3VibGUgdCA9IGRlbHRhICog
MC41OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG53OyArK2kpIHsKKyAgICAgICAg
ICBwXy5wdXNoX2JhY2soZncoeG1pbiArIGkgKiBkZWx0YSArIHQpKTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgICAgaW5pdCgpOworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGRvdWJs
ZT4mIHByb2JhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBwXzsgfQorICAgIHNpemVfdCBuKCkg
Y29uc3QgeyByZXR1cm4gcF8uc2l6ZSgpIC0gMTsgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICBy
ZXR1cm4gYS5wcm9iYWJpbGl0aWVzKCkgPT0gYi5wcm9iYWJpbGl0aWVzKCk7CisgICAgfQorCisg
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJh
bV90eXBlJiBiKSB7CisgICAgICByZXR1cm4gIShhID09IGIpOworICAgIH0KKworICAgcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgZGlzY3JldGVfZGlzdHJpYnV0aW9uOworCisgICAgdm9pZCBp
bml0KCk7CisKKyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHBfOyAgICAgICAgICAgICAgICAgICAg
IC8vIG5vcm1hbGl6ZWQgcHJvYmFiaWxpdGllcworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxk
b3VibGUsIHNpemVfdD4+IHFfOyAgLy8gKGFjY2VwdGFuY2UsIGFsdGVybmF0ZSkgcGFpcnMKKwor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxyZXN1bHRfdHlwZT46OnZhbHVlLAor
ICAgICAgICAgICAgICAgICAgIkNsYXNzLXRlbXBsYXRlIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1
dGlvbjw+IG11c3QgYmUgIgorICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcml6ZWQgdXNpbmcg
YW4gaW50ZWdyYWwgdHlwZS4iKTsKKyAgfTsKKworICBkaXNjcmV0ZV9kaXN0cmlidXRpb24oKSA6
IHBhcmFtXygpIHt9CisKKyAgZXhwbGljaXQgZGlzY3JldGVfZGlzdHJpYnV0aW9uKGNvbnN0IHBh
cmFtX3R5cGUmIHApIDogcGFyYW1fKHApIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0
SXRlcmF0b3I+CisgIGV4cGxpY2l0IGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbihJbnB1dEl0ZXJhdG9y
IGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCkKKyAgICAgIDogcGFyYW1fKGJlZ2luLCBlbmQpIHt9
CisKKyAgZXhwbGljaXQgZGlzY3JldGVfZGlzdHJpYnV0aW9uKHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxkb3VibGU+IHdlaWdodHMpCisgICAgICA6IHBhcmFtXyh3ZWlnaHRzKSB7fQorCisgIHRlbXBs
YXRlIDxjbGFzcyBVbmFyeU9wZXJhdGlvbj4KKyAgZXhwbGljaXQgZGlzY3JldGVfZGlzdHJpYnV0
aW9uKHNpemVfdCBudywgZG91YmxlIHhtaW4sIGRvdWJsZSB4bWF4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5hcnlPcGVyYXRpb24gZncpCisgICAgICA6IHBhcmFtXyhudywg
eG1pbiwgeG1heCwgc3RkOjptb3ZlKGZ3KSkge30KKworICB2b2lkIHJlc2V0KCkge30KKworICAv
LyBnZW5lcmF0aW5nIGZ1bmN0aW9ucworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVz
dWx0X3R5cGUgb3BlcmF0b3IoKShVUkJHJiBnKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVu
Y2VzKQorICAgIHJldHVybiAoKnRoaXMpKGcsIHBhcmFtXyk7CisgIH0KKworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShVUkJHJiBnLCAgLy8gTk9M
SU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBw
YXJhbV90eXBlJiBwKTsKKworICBjb25zdCBwYXJhbV90eXBlJiBwYXJhbSgpIGNvbnN0IHsgcmV0
dXJuIHBhcmFtXzsgfQorICB2b2lkIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIHApIHsgcGFyYW1f
ID0gcDsgfQorCisgIHJlc3VsdF90eXBlKG1pbikoKSBjb25zdCB7IHJldHVybiAwOyB9CisgIHJl
c3VsdF90eXBlKG1heCkoKSBjb25zdCB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJlc3VsdF90
eXBlPihwYXJhbV8ubigpKTsKKyAgfSAgLy8gaW5jbHVzaXZlCisKKyAgLy8gTk9URSBbcmFuZC5k
aXN0LnNhbXBsZS5kaXNjcmV0ZV0gcmV0dXJucyBhIHN0ZDo6dmVjdG9yPGRvdWJsZT4gbm90IGEK
KyAgLy8gY29uc3Qgc3RkOjp2ZWN0b3I8ZG91YmxlPiYuCisgIGNvbnN0IHN0ZDo6dmVjdG9yPGRv
dWJsZT4mIHByb2JhYmlsaXRpZXMoKSBjb25zdCB7CisgICAgcmV0dXJuIHBhcmFtXy5wcm9iYWJp
bGl0aWVzKCk7CisgIH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGRpc2NyZXRl
X2Rpc3RyaWJ1dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNjcmV0
ZV9kaXN0cmlidXRpb24mIGIpIHsKKyAgICByZXR1cm4gYS5wYXJhbV8gPT0gYi5wYXJhbV87Cisg
IH0KKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBkaXNjcmV0ZV9kaXN0cmlidXRpb24m
IGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzY3JldGVfZGlzdHJpYnV0aW9u
JiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fICE9IGIucGFyYW1fOworICB9CisKKyBwcml2YXRl
OgorICBwYXJhbV90eXBlIHBhcmFtXzsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBJ
bXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9ubHkgYmVsb3cKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBVc2luZyB0aGUgdmVjdG9yIGAqcHJv
YmFiaWxpdGllc2AsIHdob3NlIHZhbHVlcyBhcmUgdGhlIHdlaWdodHMgb3IKKy8vIHByb2JhYmls
aXRpZXMgb2YgYW4gZWxlbWVudCBiZWluZyBzZWxlY3RlZCwgY29uc3RydWN0cyB0aGUgcHJvcG9y
dGlvbmFsCisvLyBwcm9iYWJpbGl0aWVzIHVzZWQgYnkgdGhlIGRpc2NyZXRlIGRpc3RyaWJ1dGlv
bi4gIGAqcHJvYmFiaWxpdGllc2Agd2lsbCBiZQorLy8gc2NhbGVkLCBpZiBuZWNlc3NhcnksIHNv
IHRoYXQgaXRzIGVudHJpZXMgc3VtIHRvIGEgdmFsdWUgc3VmZmljaWVudGx5IGNsb3NlCisvLyB0
byAxLjAuCitzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBzaXplX3Q+PiBJbml0RGlzY3Jl
dGVEaXN0cmlidXRpb24oCisgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiogcHJvYmFiaWxpdGllcyk7
CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKKwordGVtcGxhdGUgPHR5cGVuYW1l
IEludFR5cGU+Cit2b2lkIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6cGFyYW1fdHlw
ZTo6aW5pdCgpIHsKKyAgaWYgKHBfLmVtcHR5KCkpIHsKKyAgICBwXy5wdXNoX2JhY2soMS4wKTsK
KyAgICBxXy5lbXBsYWNlX2JhY2soMS4wLCAwKTsKKyAgfSBlbHNlIHsKKyAgICBhc3NlcnQobigp
IDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPEludFR5cGU+OjptYXgpKCkpOworICAgIHFfID0gcmFu
ZG9tX2ludGVybmFsOjpJbml0RGlzY3JldGVEaXN0cmlidXRpb24oJnBfKTsKKyAgfQorfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordHlw
ZW5hbWUgZGlzY3JldGVfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpyZXN1bHRfdHlwZQorZGlzY3Jl
dGVfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpvcGVyYXRvcigpKAorICAgIFVSQkcmIGcsICAvLyBO
T0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0IHBhcmFtX3R5cGUmIHApIHsKKyAg
Y29uc3QgYXV0byBpZHggPSBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248cmVzdWx0X3R5
cGU+KDAsIHAubigpKShnKTsKKyAgY29uc3QgYXV0byYgcSA9IHAucV9baWR4XTsKKyAgY29uc3Qg
Ym9vbCBzZWxlY3RlZCA9IGFic2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24ocS5maXJzdCkoZyk7
CisgIHJldHVybiBzZWxlY3RlZCA/IGlkeCA6IHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPihxLnNl
Y29uZCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBJbnRUeXBlPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVy
YXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3MsICAvLyBO
T0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0IGRpc2NyZXRlX2Rpc3RyaWJ1dGlv
bjxJbnRUeXBlPiYgeCkgeworICBhdXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjptYWtlX29z
dHJlYW1fc3RhdGVfc2F2ZXIob3MpOworICBjb25zdCBhdXRvJiBwcm9iYWJpbGl0aWVzID0geC5w
YXJhbSgpLnByb2JhYmlsaXRpZXMoKTsKKyAgb3MgPDwgcHJvYmFiaWxpdGllcy5zaXplKCk7CisK
KyAgb3MucHJlY2lzaW9uKHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8
ZG91YmxlPjo6a1ByZWNpc2lvbik7CisgIGZvciAoY29uc3QgYXV0byYgcCA6IHByb2JhYmlsaXRp
ZXMpIHsKKyAgICBvcyA8PCBvcy5maWxsKCkgPDwgcDsKKyAgfQorICByZXR1cm4gb3M7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBJbnRU
eXBlPgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcj4+KAorICAg
IHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAvLyBOT0xJTlQocnVudGlt
ZS9yZWZlcmVuY2VzKQorICAgIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPiYgeCkgeyAg
ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICB1c2luZyBwYXJhbV90eXBlID0gdHlw
ZW5hbWUgZGlzY3JldGVfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOworICBhdXRv
IHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjptYWtlX2lzdHJlYW1fc3RhdGVfc2F2ZXIoaXMpOwor
CisgIHNpemVfdCBuOworICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHA7CisKKyAgaXMgPj4gbjsKKyAg
aWYgKGlzLmZhaWwoKSkgcmV0dXJuIGlzOworICBpZiAobiA+IDApIHsKKyAgICBwLnJlc2VydmUo
bik7CisgICAgZm9yIChJbnRUeXBlIGkgPSAwOyBpIDwgbiAmJiAhaXMuZmFpbCgpOyArK2kpIHsK
KyAgICAgIGF1dG8gdG1wID0gcmFuZG9tX2ludGVybmFsOjpyZWFkX2Zsb2F0aW5nX3BvaW50PGRv
dWJsZT4oaXMpOworICAgICAgaWYgKGlzLmZhaWwoKSkgcmV0dXJuIGlzOworICAgICAgcC5wdXNo
X2JhY2sodG1wKTsKKyAgICB9CisgIH0KKyAgeC5wYXJhbShwYXJhbV90eXBlKHAuYmVnaW4oKSwg
cC5lbmQoKSkpOworICByZXR1cm4gaXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNl
bmRpZiAgLy8gQUJTTF9SQU5ET01fRElTQ1JFVEVfRElTVFJJQlVUSU9OX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vZGlzY3JldGVfZGlzdHJpYnV0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vZGlzY3JldGVfZGlzdHJpYnV0aW9uX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI5NmYwYWMyMjZh
YmE3NmMxOWQ0NzY2YzcxZjA2MWEzZjBmYWUyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9kaXNjcmV0ZV9kaXN0cmlidXRpb25fdGVzdC5jYwpAQCAtMCwwICsxLDI0NiBAQAorLy8g
Q29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9kaXNjcmV0ZV9kaXN0cmlidXRpb24uaCIKKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1
ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNp
bmNsdWRlIDxudW1lcmljPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgor
I2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJnbW9jay9n
bW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2lu
dGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hp
X3NxdWFyZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90
ZXN0X3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJn
LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaXAuaCIKKworbmFtZXNw
YWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CitjbGFzcyBEaXNjcmV0ZURpc3Ry
aWJ1dGlvblR5cGVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKwordXNpbmcgSW50
VHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPGludDhfdCwgdWludDhfdCwgaW50MTZfdCwgdWludDE2
X3QsIGludDMyX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qs
IGludDY0X3QsIHVpbnQ2NF90PjsKK1RZUEVEX1RFU1RfU1VJVEUoRGlzY3JldGVEaXN0cmlidXRp
b25UeXBlVGVzdCwgSW50VHlwZXMpOworCitUWVBFRF9URVNUKERpc2NyZXRlRGlzdHJpYnV0aW9u
VHlwZVRlc3QsIFBhcmFtU2VyaWFsaXplVGVzdCkgeworICB1c2luZyBwYXJhbV90eXBlID0KKyAg
ICAgIHR5cGVuYW1lIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+OjpwYXJh
bV90eXBlOworCisgIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGVtcHR5
OworICBFWFBFQ1RfVEhBVChlbXB0eS5wcm9iYWJpbGl0aWVzKCksIHRlc3Rpbmc6OkVsZW1lbnRz
QXJlKDEuMCkpOworCisgIGFic2w6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGJl
Zm9yZSh7MS4wLCAyLjAsIDEuMH0pOworCisgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHByb2JhYmls
aXRpZXMgc3VtIHRvIDEuMC4gV2UgcGlja2VkIHZhbHVlcyB3aGljaAorICAvLyBjYW4gYmUgcmVw
cmVzZW50ZWQgZXhhY3RseSB0byBhdm9pZCBmbG9hdGluZy1wb2ludCByb3VuZG9mZiBlcnJvci4K
KyAgZG91YmxlIHMgPSAwOworICBmb3IgKGNvbnN0IGF1dG8mIHggOiBiZWZvcmUucHJvYmFiaWxp
dGllcygpKSB7CisgICAgcyArPSB4OworICB9CisgIEVYUEVDVF9FUShzLCAxLjApOworICBFWFBF
Q1RfVEhBVChiZWZvcmUucHJvYmFiaWxpdGllcygpLCB0ZXN0aW5nOjpFbGVtZW50c0FyZSgwLjI1
LCAwLjUsIDAuMjUpKTsKKworICAvLyBWYWxpZGF0ZSB0aGUgc2FtZSBkYXRhIHZpYSBhbiBpbml0
aWFsaXplciBsaXN0LgorICB7CisgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBkYXRhKHsxLjAsIDIu
MCwgMS4wfSk7CisKKyAgICBhYnNsOjpkaXNjcmV0ZV9kaXN0cmlidXRpb248VHlwZVBhcmFtPiB2
aWFfcGFyYW17CisgICAgICAgIHBhcmFtX3R5cGUoc3RkOjpiZWdpbihkYXRhKSwgc3RkOjplbmQo
ZGF0YSkpfTsKKworICAgIEVYUEVDVF9FUSh2aWFfcGFyYW0sIGJlZm9yZSk7CisgIH0KKworICBz
dGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwgYmVmb3JlOworICBhYnNsOjpkaXNjcmV0ZV9k
aXN0cmlidXRpb248VHlwZVBhcmFtPiBhZnRlcjsKKworICBFWFBFQ1RfTkUoYmVmb3JlLCBhZnRl
cik7CisKKyAgc3MgPj4gYWZ0ZXI7CisKKyAgRVhQRUNUX0VRKGJlZm9yZSwgYWZ0ZXIpOworfQor
CitUWVBFRF9URVNUKERpc2NyZXRlRGlzdHJpYnV0aW9uVHlwZVRlc3QsIENvbnN0cnVjdG9yKSB7
CisgIGF1dG8gZm4gPSBbXShkb3VibGUgeCkgeyByZXR1cm4geDsgfTsKKyAgeworICAgIGFic2w6
OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxpbnQ+IHVuYXJ5KDAsIDEuMCwgOS4wLCBmbik7CisgICAg
RVhQRUNUX1RIQVQodW5hcnkucHJvYmFiaWxpdGllcygpLCB0ZXN0aW5nOjpFbGVtZW50c0FyZSgx
LjApKTsKKyAgfQorCisgIHsKKyAgICBhYnNsOjpkaXNjcmV0ZV9kaXN0cmlidXRpb248aW50PiB1
bmFyeSgyLCAxLjAsIDkuMCwgZm4pOworICAgIC8vID0+IGZuKDEuMCArIDAgKiA0ICsgMikgPT4g
MworICAgIC8vID0+IGZuKDEuMCArIDEgKiA0ICsgMikgPT4gNworICAgIEVYUEVDVF9USEFUKHVu
YXJ5LnByb2JhYmlsaXRpZXMoKSwgdGVzdGluZzo6RWxlbWVudHNBcmUoMC4zLCAwLjcpKTsKKyAg
fQorfQorCitURVNUKERpc2NyZXRlRGlzdHJpYnV0aW9uVGVzdCwgSW5pdERpc2NyZXRlRGlzdHJp
YnV0aW9uKSB7CisgIHVzaW5nIHRlc3Rpbmc6OlBhaXI7CisKKyAgeworICAgIHN0ZDo6dmVjdG9y
PGRvdWJsZT4gcCh7MS4wLCAyLjAsIDMuMH0pOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxk
b3VibGUsIHNpemVfdD4+IHEgPQorICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkluaXRE
aXNjcmV0ZURpc3RyaWJ1dGlvbigmcCk7CisKKyAgICBFWFBFQ1RfVEhBVChwLCB0ZXN0aW5nOjpF
bGVtZW50c0FyZSgxIC8gNi4wLCAyIC8gNi4wLCAzIC8gNi4wKSk7CisKKyAgICAvLyBFYWNoIGJ1
Y2tldCBpcyBwPTEvMywgc28gYnVja2V0IDAgd2lsbCBzZW5kIGhhbGYgaXQncyB0cmFmZmljCisg
ICAgLy8gdG8gYnVja2V0IDIsIHdoaWxlIHRoZSByZXN0IHdpbGwgcmV0YWluIGFsbCBvZiB0aGVp
ciB0cmFmZmljLgorICAgIEVYUEVDVF9USEFUKHEsIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKFBhaXIo
MC41LCAyKSwgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFp
cigxLjAsIDEpLCAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YWlyKDEuMCwgMikpKTsKKyAgfQorCisgIHsKKyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHAoezEu
MCwgMi4wLCAzLjAsIDUuMCwgMi4wfSk7CisKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8ZG91
YmxlLCBzaXplX3Q+PiBxID0KKyAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpJbml0RGlz
Y3JldGVEaXN0cmlidXRpb24oJnApOworCisgICAgRVhQRUNUX1RIQVQocCwgdGVzdGluZzo6RWxl
bWVudHNBcmUoMSAvIDEzLjAsIDIgLyAxMy4wLCAzIC8gMTMuMCwgNSAvIDEzLjAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAvIDEzLjApKTsKKworICAgIC8vIEEg
bW9yZSBjb21wbGV4IGJ1Y2tldGluZyBzb2x1dGlvbjogRWFjaCBidWNrZXQgaGFzIHA9MC4yCisg
ICAgLy8gU28gYnVja2V0cyAwLCAxLCA0IHdpbGwgc2VuZCB0aGVpciBhbHRlcm5hdGUgdHJhZmZp
YyBlbHNld2hlcmUsIHdoaWNoCisgICAgLy8gaGFwcGVucyB0byBiZSBidWNrZXQgMy4KKyAgICAv
LyBIb3dldmVyLCBzdW1taW5nIHVwIHRoYXQgYWx0ZXJuYXRlIHRyYWZmaWMgZ2l2ZXMgYnVja2V0
IDMgdG9vIG11Y2gKKyAgICAvLyB0cmFmZmljLCBzbyBpdCB3aWxsIHNlbmQgc29tZSB0cmFmZmlj
IHRvIGJ1Y2tldCAyLgorICAgIGNvbnN0ZXhwciBkb3VibGUgYjAgPSAxLjAgLyAxMy4wIC8gMC4y
OworICAgIGNvbnN0ZXhwciBkb3VibGUgYjEgPSAyLjAgLyAxMy4wIC8gMC4yOworICAgIGNvbnN0
ZXhwciBkb3VibGUgYjMgPSAoNS4wIC8gMTMuMCAvIDAuMikgLSAoKDEgLSBiMCkgKyAoMSAtIGIx
KSArICgxIC0gYjEpKTsKKworICAgIEVYUEVDVF9USEFUKHEsIHRlc3Rpbmc6OkVsZW1lbnRzQXJl
KFBhaXIoYjAsIDMpLCAgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFpcihiMSwgMyksICAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYWlyKDEuMCwgMiksICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhaXIoYjMsIDIpLCAgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFpcihiMSwgMykpKTsKKyAgfQorfQorCitURVNUKERpc2NyZXRlRGlzdHJpYnV0
aW9uVGVzdCwgQ2hpU3F1YXJlZFRlc3Q1MCkgeworICB1c2luZyBhYnNsOjpyYW5kb21faW50ZXJu
YWw6OmtDaGlTcXVhcmVkOworCisgIGNvbnN0ZXhwciBzaXplX3Qga1RyaWFscyA9IDEwMDAwOwor
ICBjb25zdGV4cHIgaW50IGtCdWNrZXRzID0gNTA7ICAvLyBpbmNsdXNpdmUsIHNvIGFjdGFsbHkg
KzEKKworICAvLyAxLWluLTEwMDAwMCB0aHJlc2hvbGQsIGJ1dCByZW1lbWJlciwgdGhlcmUgYXJl
IGFib3V0IDggdGVzdHMKKyAgLy8gaW4gdGhpcyBmaWxlLiBBbmQgdGhlIHRlc3QgY291bGQgZmFp
bCBmb3Igb3RoZXIgcmVhc29ucy4KKyAgLy8gRW1waXJpY2FsbHkgdmFsaWRhdGVkIHdpdGggLS1y
dW5zX3Blcl90ZXN0PTEwMDAwLgorICBjb25zdCBpbnQga1RocmVzaG9sZCA9CisgICAgICBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVZhbHVlKGtCdWNrZXRzLCAwLjk5OTk5KTsKKwor
ICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHdlaWdodHMoa0J1Y2tldHMsIDApOworICBzdGQ6OmlvdGEo
c3RkOjpiZWdpbih3ZWlnaHRzKSwgc3RkOjplbmQod2VpZ2h0cyksIDEpOworICBhYnNsOjpkaXNj
cmV0ZV9kaXN0cmlidXRpb248aW50PiBkaXN0KHN0ZDo6YmVnaW4od2VpZ2h0cyksIHN0ZDo6ZW5k
KHdlaWdodHMpKTsKKworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBybmc7CisKKyAgc3RkOjp2ZWN0
b3I8aW50MzJfdD4gY291bnRzKGtCdWNrZXRzLCAwKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBrVHJpYWxzOyBpKyspIHsKKyAgICBhdXRvIHggPSBkaXN0KHJuZyk7CisgICAgY291bnRzW3hd
Kys7CisgIH0KKworICAvLyBTY2FsZSB3ZWlnaHRzLgorICBkb3VibGUgc3VtID0gMDsKKyAgZm9y
IChkb3VibGUgeCA6IHdlaWdodHMpIHsKKyAgICBzdW0gKz0geDsKKyAgfQorICBmb3IgKGRvdWJs
ZSYgeCA6IHdlaWdodHMpIHsKKyAgICB4ID0ga1RyaWFscyAqICh4IC8gc3VtKTsKKyAgfQorCisg
IGRvdWJsZSBjaGlfc3F1YXJlID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1
YXJlKHN0ZDo6YmVnaW4oY291bnRzKSwgc3RkOjplbmQoY291bnRzKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmVnaW4od2VpZ2h0cyksIHN0ZDo6ZW5kKHdl
aWdodHMpKTsKKworICBpZiAoY2hpX3NxdWFyZSA+IGtUaHJlc2hvbGQpIHsKKyAgICBkb3VibGUg
cF92YWx1ZSA9CisgICAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlUFZhbHVl
KGNoaV9zcXVhcmUsIGtCdWNrZXRzKTsKKworICAgIC8vIENoaS1zcXVhcmVkIHRlc3QgZmFpbGVk
LiBPdXRwdXQgZG9lcyBub3QgYXBwZWFyIHRvIGJlIHVuaWZvcm0uCisgICAgc3RkOjpzdHJpbmcg
bXNnOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnRzLnNpemUoKTsgaSsrKSB7Cisg
ICAgICBhYnNsOjpTdHJBcHBlbmQoJm1zZywgaSwgIjogIiwgY291bnRzW2ldLCAiIHZzICIsIHdl
aWdodHNbaV0sICJcbiIpOworICAgIH0KKyAgICBhYnNsOjpTdHJBcHBlbmQoJm1zZywga0NoaVNx
dWFyZWQsICIgcC12YWx1ZSAiLCBwX3ZhbHVlLCAiXG4iKTsKKyAgICBhYnNsOjpTdHJBcHBlbmQo
Jm1zZywgIkhpZ2ggIiwga0NoaVNxdWFyZWQsICIgdmFsdWU6ICIsIGNoaV9zcXVhcmUsICIgPiAi
LAorICAgICAgICAgICAgICAgICAgICBrVGhyZXNob2xkKTsKKyAgICBBQlNMX1JBV19MT0coSU5G
TywgIiVzIiwgbXNnLmNfc3RyKCkpOworICAgIEZBSUwoKSA8PCBtc2c7CisgIH0KK30KKworVEVT
VChEaXNjcmV0ZURpc3RyaWJ1dGlvblRlc3QsIFN0YWJpbGl0eVRlc3QpIHsKKyAgLy8gYWJzbDo6
ZGlzY3JldGVfZGlzdHJpYnV0aW9uIHN0YWJpbGl0aXkgcmVsaWVzIG9uCisgIC8vIGFic2w6OnVu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbiBhbmQgYWJzbDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbi4K
KyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisgICAgICB7MHgw
MDAzZWI3NmY2ZjdmNzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGwsIDB4QzMzMkRERUZCRTZD
NUFBNXVsbCwKKyAgICAgICAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4MkFFRjdEQUQ1QjZFMkY4
NHVsbCwgMHgxNTIxQjYyODI5MDc2MTcwdWxsLAorICAgICAgIDB4RUNERDQ3NzU2MTlGMTUxMHVs
bCwgMHgxM0NDQTgzMEVCNjFCRDk2dWxsLCAweDAzMzRGRTFFQUEwMzYzQ0Z1bGwsCisgICAgICAg
MHhCNTczNUM5MDRDNzBBMjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1bGwsIDB4RUVDQzg2QkM2
MDYyMkNBN3VsbH0pOworCisgIHN0ZDo6dmVjdG9yPGludD4gb3V0cHV0KDYpOworCisgIHsKKyAg
ICBhYnNsOjpkaXNjcmV0ZV9kaXN0cmlidXRpb248aW50MzJfdD4gZGlzdCh7MS4wLCAyLjAsIDMu
MCwgNS4wLCAyLjB9KTsKKyAgICBFWFBFQ1RfRVEoMCwgZGlzdC5taW4oKSk7CisgICAgRVhQRUNU
X0VRKDQsIGRpc3QubWF4KCkpOworICAgIGZvciAoYXV0byYgdiA6IG91dHB1dCkgeworICAgICAg
diA9IGRpc3QodXJiZyk7CisgICAgfQorICAgIEVYUEVDVF9FUSgxMiwgdXJiZy5pbnZvY2F0aW9u
cygpKTsKKyAgfQorCisgIC8vIFdpdGggMTIgY2FsbHMgdG8gdXJiZywgZWFjaCBjYWxsIGludG8g
ZGlzY3JldGVfZGlzdHJpYnV0aW9uIGNvbnN1bWVzCisgIC8vIHByZWNpc2VseSAyIHZhbHVlczog
b25lIGZvciB0aGUgdW5pZm9ybSBjYWxsLCBhbmQgYSBzZWNvbmQgZm9yIHRoZQorICAvLyBiZXJu
b3VsbGkuCisgIC8vCisgIC8vIEdpdmVuIHRoZSBhbHQgbWFwcGluZzogMD0+MywgMT0+MywgMj0+
MiwgMz0+MiwgND0+Mywgd2UgY2FuCisgIC8vCisgIC8vIHVuaWZvcm06ICAgICAgNDQzMjEwMTQz
MTMxCisgIC8vIGJlcm5vdWxsaTogYjAgMDAwMDExMTAwMTAxCisgIC8vIGJlcm5vdWxsaTogYjEg
MDAxMTExMTAxMTAxCisgIC8vIGJlcm5vdWxsaTogYjIgMTExMTExMTExMTExCisgIC8vIGJlcm5v
dWxsaTogYjMgMDAxMTExMTAxMTExCisgIC8vIGJlcm5vdWxsaTogYjQgMDAxMTExMTAxMTAxCisg
IC8vIC4uLgorICBFWFBFQ1RfVEhBVChvdXRwdXQsIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKDMsIDMs
IDEsIDMsIDMsIDMpKTsKKworICB7CisgICAgdXJiZy5yZXNldCgpOworICAgIGFic2w6OmRpc2Ny
ZXRlX2Rpc3RyaWJ1dGlvbjxpbnQ2NF90PiBkaXN0KHsxLjAsIDIuMCwgMy4wLCA1LjAsIDIuMH0p
OworICAgIEVYUEVDVF9FUSgwLCBkaXN0Lm1pbigpKTsKKyAgICBFWFBFQ1RfRVEoNCwgZGlzdC5t
YXgoKSk7CisgICAgZm9yIChhdXRvJiB2IDogb3V0cHV0KSB7CisgICAgICB2ID0gZGlzdCh1cmJn
KTsKKyAgICB9CisgICAgRVhQRUNUX0VRKDEyLCB1cmJnLmludm9jYXRpb25zKCkpOworICB9Cisg
IEVYUEVDVF9USEFUKG91dHB1dCwgdGVzdGluZzo6RWxlbWVudHNBcmUoMywgMywgMCwgMywgMCwg
NCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXN0
cmlidXRpb25fZm9ybWF0X3RyYWl0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbl9mb3Jt
YXRfdHJhaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YyOGM5MDY5NDUzODNkMmNlNjcwYmYyNjZhNzA2YmM2
ZjAwYTM5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXN0cmlidXRpb25fZm9y
bWF0X3RyYWl0cy5oCkBAIC0wLDAgKzEsMjQ5IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTggVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworI2lmbmRlZiBBQlNMX1JBTkRPTV9ESVNUUklCVVRJT05f
Rk9STUFUX1RSQUlUU19IXworI2RlZmluZSBBQlNMX1JBTkRPTV9ESVNUUklCVVRJT05fRk9STUFU
X1RSQUlUU19IXworCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1
ZGUgPHR5cGVpbmZvPgorCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vYmVybm91bGxpX2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2JldGFfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vZXhw
b25lbnRpYWxfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vZ2F1c3NpYW5f
ZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1faW50X2Rp
c3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3BvaXNzb25fZGlzdHJpYnV0aW9u
LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgiCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1
ZGUgImFic2wvcmFuZG9tL3ppcGZfZGlzdHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2pvaW4uaCIKKyNpbmNs
dWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL3Nw
YW4uaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisK
Ky8vIFNjYWxhclR5cGVOYW1lIGRlZmluZXMgYSBwcmVmZXJyZWQgaGllcmFyY2h5IG9mIHByZWZl
cnJlZCB0eXBlIG5hbWVzIGZvcgorLy8gc2NhbGFycywgYW5kIGlzIGV2YWx1YXRlZCBhdCBjb21w
aWxlIHRpbWUgZm9yIHRoZSBzcGVjaWZpYyB0eXBlCisvLyBzcGVjaWFsaXphdGlvbi4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY29uc3RleHByIGNvbnN0IGNoYXIqIFNjYWxhclR5cGVOYW1lKCkg
eworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8VD4oKSB8fCBzdGQ6OmlzX2Zsb2F0
aW5nX3BvaW50PFQ+KCksICIiKTsKKyAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIHJldHVybgor
ICAgICAgICBzdGQ6OmlzX3NhbWU8VCwgZmxvYXQ+Ojp2YWx1ZSA/ICJmbG9hdCIgOgorICAgICAg
ICBzdGQ6OmlzX3NhbWU8VCwgZG91YmxlPjo6dmFsdWUgPyAiZG91YmxlIiA6CisgICAgICAgIHN0
ZDo6aXNfc2FtZTxULCBsb25nIGRvdWJsZT46OnZhbHVlID8gImxvbmcgZG91YmxlIiA6CisgICAg
ICAgIHN0ZDo6aXNfc2FtZTxULCBib29sPjo6dmFsdWUgPyAiYm9vbCIgOgorICAgICAgICBzdGQ6
OmlzX3NpZ25lZDxUPjo6dmFsdWUgJiYgc2l6ZW9mKFQpID09IDEgPyAiaW50OF90IiA6CisgICAg
ICAgIHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gMiA/ICJpbnQxNl90
IiA6CisgICAgICAgIHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gNCA/
ICJpbnQzMl90IiA6CisgICAgICAgIHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2YWx1ZSAmJiBzaXplb2Yo
VCkgPT0gOCA/ICJpbnQ2NF90IiA6CisgICAgICAgIHN0ZDo6aXNfdW5zaWduZWQ8VD46OnZhbHVl
ICYmIHNpemVvZihUKSA9PSAxID8gInVpbnQ4X3QiIDoKKyAgICAgICAgc3RkOjppc191bnNpZ25l
ZDxUPjo6dmFsdWUgJiYgc2l6ZW9mKFQpID09IDIgPyAidWludDE2X3QiIDoKKyAgICAgICAgc3Rk
Ojppc191bnNpZ25lZDxUPjo6dmFsdWUgJiYgc2l6ZW9mKFQpID09IDQgPyAidWludDMyX3QiIDoK
KyAgICAgICAgc3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUgJiYgc2l6ZW9mKFQpID09IDggPyAi
dWludDY0X3QiIDoKKyAgICAgICAgICAgICJ1bmRlZmluZWQiOworICAvLyBjbGFuZy1mb3JtYXQg
b24KKworICAvLyBOT1RFOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSB0eXBlaWQoVCkubmFtZSgp
LCBidXQgdGhhdCdzIGFuCisgIC8vIGltcGxlbWVudGF0aW9uLWRlZmluZWQgYXR0cmlidXRlIHdo
aWNoIGRvZXMgbm90IG5lY2Vzc2FyaWx5CisgIC8vIGNvcnJlc3BvbmQgdG8gYSBuYW1lLiBXZSBj
b3VsZCBwb3RlbnRpYWxseSBkZW1hbmdsZSBpdAorICAvLyB1c2luZywgZS5nLiBhYmk6Ol9fY3hh
X2RlbWFuZ2xlLgorfQorCisvLyBEaXN0cmlidXRpb24gdHJhaXRzIHVzZWQgYnkgRGlzdHJpYnV0
aW9uQ2FsbGVyIGFuZCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbgorLy8gZGV0YWlscyBvZiB0aGUg
bW9ja2luZyBmcmFtZXdvcmsuCisvKgorc3RydWN0IERpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0cyB7
CisgICAvLyBSZXR1cm5zIHRoZSBwYXJhbWV0ZXJpemVkIG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlv
biBmdW5jdGlvbi4KKyAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogRnVuY3Rpb25OYW1l
KCkKKyAgIC8vIEZvcm1hdCBEaXN0clQgcGFyYW1ldGVycy4KKyAgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBGb3JtYXRBcmdzKERpc3RyVCYgZGlzdCk7CisgICAvLyBGb3JtYXQgRGlzdHJUOjpyZXN1bHRf
dHlwZSByZXN1bHRzLgorICAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFJlc3VsdHMoRGlzdHJU
JiBkaXN0KTsKK307CisqLwordGVtcGxhdGUgPHR5cGVuYW1lIERpc3RyVD4KK3N0cnVjdCBEaXN0
cmlidXRpb25Gb3JtYXRUcmFpdHM7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSPgorc3RydWN0IERp
c3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248Uj4+
IHsKKyAgdXNpbmcgZGlzdHJpYnV0aW9uX3QgPSBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRp
b248Uj47CisgIHVzaW5nIHJlc3VsdF90ID0gdHlwZW5hbWUgZGlzdHJpYnV0aW9uX3Q6OnJlc3Vs
dF90eXBlOworCisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogTmFtZSgpIHsgcmV0dXJu
ICJVbmlmb3JtIjsgfQorCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGdW5jdGlvbk5hbWUoKSB7Cisg
ICAgcmV0dXJuIGFic2w6OlN0ckNhdChOYW1lKCksICI8IiwgU2NhbGFyVHlwZU5hbWU8Uj4oKSwg
Ij4iKTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0QXJncyhjb25zdCBkaXN0cmli
dXRpb25fdCYgZCkgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoImFic2w6OkludGVydmFsQ2xv
c2VkQ2xvc2VkLCAiLCAoZC5taW4pKCksICIsICIsCisgICAgICAgICAgICAgICAgICAgICAgICAo
ZC5tYXgpKCkpOworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRSZXN1bHRzKGFic2w6
OlNwYW48Y29uc3QgcmVzdWx0X3Q+IHJlc3VsdHMpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RySm9p
bihyZXN1bHRzLCAiLCAiKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFI+CitzdHJ1
Y3QgRGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzPGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRp
b248Uj4+IHsKKyAgdXNpbmcgZGlzdHJpYnV0aW9uX3QgPSBhYnNsOjp1bmlmb3JtX3JlYWxfZGlz
dHJpYnV0aW9uPFI+OworICB1c2luZyByZXN1bHRfdCA9IHR5cGVuYW1lIGRpc3RyaWJ1dGlvbl90
OjpyZXN1bHRfdHlwZTsKKworICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIE5hbWUoKSB7
IHJldHVybiAiVW5pZm9ybSI7IH0KKworICBzdGF0aWMgc3RkOjpzdHJpbmcgRnVuY3Rpb25OYW1l
KCkgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoTmFtZSgpLCAiPCIsIFNjYWxhclR5cGVOYW1l
PFI+KCksICI+Iik7CisgIH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEFyZ3MoY29uc3Qg
ZGlzdHJpYnV0aW9uX3QmIGQpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RyQ2F0KChkLm1pbikoKSwg
IiwgIiwgKGQubWF4KSgpKTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0UmVzdWx0
cyhhYnNsOjpTcGFuPGNvbnN0IHJlc3VsdF90PiByZXN1bHRzKSB7CisgICAgcmV0dXJuIGFic2w6
OlN0ckpvaW4ocmVzdWx0cywgIiwgIik7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBS
Pgorc3RydWN0IERpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxhYnNsOjpleHBvbmVudGlhbF9kaXN0
cmlidXRpb248Uj4+IHsKKyAgdXNpbmcgZGlzdHJpYnV0aW9uX3QgPSBhYnNsOjpleHBvbmVudGlh
bF9kaXN0cmlidXRpb248Uj47CisgIHVzaW5nIHJlc3VsdF90ID0gdHlwZW5hbWUgZGlzdHJpYnV0
aW9uX3Q6OnJlc3VsdF90eXBlOworCisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogTmFt
ZSgpIHsgcmV0dXJuICJFeHBvbmVudGlhbCI7IH0KKworICBzdGF0aWMgc3RkOjpzdHJpbmcgRnVu
Y3Rpb25OYW1lKCkgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoTmFtZSgpLCAiPCIsIFNjYWxh
clR5cGVOYW1lPFI+KCksICI+Iik7CisgIH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEFy
Z3MoY29uc3QgZGlzdHJpYnV0aW9uX3QmIGQpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RyQ2F0KGQu
bGFtYmRhKCkpOworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRSZXN1bHRzKGFic2w6
OlNwYW48Y29uc3QgcmVzdWx0X3Q+IHJlc3VsdHMpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RySm9p
bihyZXN1bHRzLCAiLCAiKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFI+CitzdHJ1
Y3QgRGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzPGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPFI+
PiB7CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248
Uj47CisgIHVzaW5nIHJlc3VsdF90ID0gdHlwZW5hbWUgZGlzdHJpYnV0aW9uX3Q6OnJlc3VsdF90
eXBlOworCisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogTmFtZSgpIHsgcmV0dXJuICJQ
b2lzc29uIjsgfQorCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGdW5jdGlvbk5hbWUoKSB7CisgICAg
cmV0dXJuIGFic2w6OlN0ckNhdChOYW1lKCksICI8IiwgU2NhbGFyVHlwZU5hbWU8Uj4oKSwgIj4i
KTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0QXJncyhjb25zdCBkaXN0cmlidXRp
b25fdCYgZCkgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoZC5tZWFuKCkpOworICB9CisgIHN0
YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRSZXN1bHRzKGFic2w6OlNwYW48Y29uc3QgcmVzdWx0X3Q+
IHJlc3VsdHMpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RySm9pbihyZXN1bHRzLCAiLCAiKTsKKyAg
fQorfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBEaXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8YWJz
bDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbj4geworICB1c2luZyBkaXN0cmlidXRpb25fdCA9IGFi
c2w6OmJlcm5vdWxsaV9kaXN0cmlidXRpb247CisgIHVzaW5nIHJlc3VsdF90ID0gdHlwZW5hbWUg
ZGlzdHJpYnV0aW9uX3Q6OnJlc3VsdF90eXBlOworCisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
Y2hhciogTmFtZSgpIHsgcmV0dXJuICJCZXJub3VsbGkiOyB9CisKKyAgc3RhdGljIGNvbnN0ZXhw
ciBjb25zdCBjaGFyKiBGdW5jdGlvbk5hbWUoKSB7IHJldHVybiBOYW1lKCk7IH0KKyAgc3RhdGlj
IHN0ZDo6c3RyaW5nIEZvcm1hdEFyZ3MoY29uc3QgZGlzdHJpYnV0aW9uX3QmIGQpIHsKKyAgICBy
ZXR1cm4gYWJzbDo6U3RyQ2F0KGQucCgpKTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9y
bWF0UmVzdWx0cyhhYnNsOjpTcGFuPGNvbnN0IHJlc3VsdF90PiByZXN1bHRzKSB7CisgICAgcmV0
dXJuIGFic2w6OlN0ckpvaW4ocmVzdWx0cywgIiwgIik7CisgIH0KK307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBSPgorc3RydWN0IERpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxhYnNsOjpiZXRhX2Rp
c3RyaWJ1dGlvbjxSPj4geworICB1c2luZyBkaXN0cmlidXRpb25fdCA9IGFic2w6OmJldGFfZGlz
dHJpYnV0aW9uPFI+OworICB1c2luZyByZXN1bHRfdCA9IHR5cGVuYW1lIGRpc3RyaWJ1dGlvbl90
OjpyZXN1bHRfdHlwZTsKKworICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIE5hbWUoKSB7
IHJldHVybiAiQmV0YSI7IH0KKworICBzdGF0aWMgc3RkOjpzdHJpbmcgRnVuY3Rpb25OYW1lKCkg
eworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoTmFtZSgpLCAiPCIsIFNjYWxhclR5cGVOYW1lPFI+
KCksICI+Iik7CisgIH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEFyZ3MoY29uc3QgZGlz
dHJpYnV0aW9uX3QmIGQpIHsKKyAgICByZXR1cm4gYWJzbDo6U3RyQ2F0KGQuYWxwaGEoKSwgIiwg
IiwgZC5iZXRhKCkpOworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRSZXN1bHRzKGFi
c2w6OlNwYW48Y29uc3QgcmVzdWx0X3Q+IHJlc3VsdHMpIHsKKyAgICByZXR1cm4gYWJzbDo6U3Ry
Sm9pbihyZXN1bHRzLCAiLCAiKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFI+Citz
dHJ1Y3QgRGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzPGFic2w6OnppcGZfZGlzdHJpYnV0aW9uPFI+
PiB7CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gYWJzbDo6emlwZl9kaXN0cmlidXRpb248Uj47
CisgIHVzaW5nIHJlc3VsdF90ID0gdHlwZW5hbWUgZGlzdHJpYnV0aW9uX3Q6OnJlc3VsdF90eXBl
OworCisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogTmFtZSgpIHsgcmV0dXJuICJaaXBm
IjsgfQorCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGdW5jdGlvbk5hbWUoKSB7CisgICAgcmV0dXJu
IGFic2w6OlN0ckNhdChOYW1lKCksICI8IiwgU2NhbGFyVHlwZU5hbWU8Uj4oKSwgIj4iKTsKKyAg
fQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0QXJncyhjb25zdCBkaXN0cmlidXRpb25fdCYg
ZCkgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoZC5rKCksICIsICIsIGQudigpLCAiLCAiLCBk
LnEoKSk7CisgIH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFJlc3VsdHMoYWJzbDo6U3Bh
bjxjb25zdCByZXN1bHRfdD4gcmVzdWx0cykgeworICAgIHJldHVybiBhYnNsOjpTdHJKb2luKHJl
c3VsdHMsICIsICIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KK3N0cnVjdCBE
aXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8YWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uPFI+PiB7
CisgIHVzaW5nIGRpc3RyaWJ1dGlvbl90ID0gYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uPFI+
OworICB1c2luZyByZXN1bHRfdCA9IHR5cGVuYW1lIGRpc3RyaWJ1dGlvbl90OjpyZXN1bHRfdHlw
ZTsKKworICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIE5hbWUoKSB7IHJldHVybiAiR2F1
c3NpYW4iOyB9CisKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZ1bmN0aW9uTmFtZSgpIHsKKyAgICBy
ZXR1cm4gYWJzbDo6U3RyQ2F0KE5hbWUoKSwgIjwiLCBTY2FsYXJUeXBlTmFtZTxSPigpLCAiPiIp
OworICB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRBcmdzKGNvbnN0IGRpc3RyaWJ1dGlv
bl90JiBkKSB7CisgICAgcmV0dXJuIGFic2w6OlN0ckpvaW4oc3RkOjptYWtlX3R1cGxlKGQubWVh
bigpLCBkLnN0ZGRldigpKSwgIiwgIik7CisgIH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1h
dFJlc3VsdHMoYWJzbDo6U3Bhbjxjb25zdCByZXN1bHRfdD4gcmVzdWx0cykgeworICAgIHJldHVy
biBhYnNsOjpTdHJKb2luKHJlc3VsdHMsICIsICIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUj4KK3N0cnVjdCBEaXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8YWJzbDo6bG9nX3VuaWZv
cm1faW50X2Rpc3RyaWJ1dGlvbjxSPj4geworICB1c2luZyBkaXN0cmlidXRpb25fdCA9IGFic2w6
OmxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248Uj47CisgIHVzaW5nIHJlc3VsdF90ID0gdHlw
ZW5hbWUgZGlzdHJpYnV0aW9uX3Q6OnJlc3VsdF90eXBlOworCisgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgY2hhciogTmFtZSgpIHsgcmV0dXJuICJMb2dVbmlmb3JtIjsgfQorCisgIHN0YXRpYyBz
dGQ6OnN0cmluZyBGdW5jdGlvbk5hbWUoKSB7CisgICAgcmV0dXJuIGFic2w6OlN0ckNhdChOYW1l
KCksICI8IiwgU2NhbGFyVHlwZU5hbWU8Uj4oKSwgIj4iKTsKKyAgfQorICBzdGF0aWMgc3RkOjpz
dHJpbmcgRm9ybWF0QXJncyhjb25zdCBkaXN0cmlidXRpb25fdCYgZCkgeworICAgIHJldHVybiBh
YnNsOjpTdHJKb2luKHN0ZDo6bWFrZV90dXBsZSgoZC5taW4pKCksIChkLm1heCkoKSwgZC5iYXNl
KCkpLCAiLCAiKTsKKyAgfQorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0UmVzdWx0cyhhYnNs
OjpTcGFuPGNvbnN0IHJlc3VsdF90PiByZXN1bHRzKSB7CisgICAgcmV0dXJuIGFic2w6OlN0ckpv
aW4ocmVzdWx0cywgIiwgIik7CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50
ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fRElT
VFJJQlVUSU9OX0ZPUk1BVF9UUkFJVFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXN0
cmlidXRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZGlzdHJpYnV0aW9ucy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4
YmEzY2RiZTg1ZTNlNmVjYWQwMjA1MmIzNjBkMDZlYWFlZTM5OGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vZGlzdHJpYnV0aW9ucy5oCkBAIC0wLDAgKzEsNDQyIEBACisvLyBDb3B5
cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gRmlsZTogZGlzdHJpYnV0aW9ucy5oCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIFRoaXMgaGVhZGVyIGRlZmluZXMgZnVuY3Rpb25zIHJlcHJlc2VudGluZyBkaXN0cmli
dXRpb25zLCB3aGljaCB5b3UgdXNlIGluCisvLyBjb21iaW5hdGlvbiB3aXRoIGFuIEFic2VpbCBy
YW5kb20gYml0IGdlbmVyYXRvciB0byBwcm9kdWNlIHJhbmRvbSB2YWx1ZXMKKy8vIGFjY29yZGlu
ZyB0byB0aGUgcnVsZXMgb2YgdGhhdCBkaXN0cmlidXRpb24uCisvLworLy8gVGhlIEFic2VpbCBy
YW5kb20gbGlicmFyeSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZGlzdHJpYnV0aW9ucyB3aXRoaW4g
dGhpcworLy8gZmlsZToKKy8vCisvLyAgICogYGFic2w6OlVuaWZvcm1gIGZvciB1bmlmb3JtIChj
b25zdGFudCkgZGlzdHJpYnV0aW9ucyBoYXZpbmcgY29uc3RhbnQKKy8vICAgICBwcm9iYWJpbGl0
eQorLy8gICAqIGBhYnNsOjpCZXJub3VsbGlgIGZvciBkaXNjcmV0ZSBkaXN0cmlidXRpb25zIGhh
dmluZyBleGFjdGx5IHR3byBvdXRjb21lcworLy8gICAqIGBhYnNsOjpCZXRhYCBmb3IgY29udGlu
dW91cyBkaXN0cmlidXRpb25zIHBhcmFtZXRlcml6ZWQgdGhyb3VnaCB0d28KKy8vICAgICBmcmVl
IHBhcmFtZXRlcnMKKy8vICAgKiBgYWJzbDo6RXhwb25lbnRpYWxgIGZvciBkaXNjcmV0ZSBkaXN0
cmlidXRpb25zIG9mIGV2ZW50cyBvY2N1cnJpbmcKKy8vICAgICBjb250aW51b3VzbHkgYW5kIGlu
ZGVwZW5kZW50bHkgYXQgYSBjb25zdGFudCBhdmVyYWdlIHJhdGUKKy8vICAgKiBgYWJzbDo6R2F1
c3NpYW5gIChhbHNvIGtub3duIGFzICJub3JtYWwgZGlzdHJpYnV0aW9ucyIpIGZvciBjb250aW51
b3VzCisvLyAgICAgZGlzdHJpYnV0aW9ucyB1c2luZyBhbiBhc3NvY2lhdGVkIHF1YWRyYXRpYyBm
dW5jdGlvbgorLy8gICAqIGBhYnNsOjpMb2dVbmlmb3JtYCBmb3IgY29udGludW91cyB1bmlmb3Jt
IGRpc3RyaWJ1dGlvbnMgd2hlcmUgdGhlIGxvZworLy8gICAgIHRvIHRoZSBnaXZlbiBiYXNlIG9m
IGFsbCB2YWx1ZXMgaXMgdW5pZm9ybQorLy8gICAqIGBhYnNsOjpQb2lzc29uYCBmb3IgZGlzY3Jl
dGUgcHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9ucyB0aGF0IGV4cHJlc3MgdGhlCisvLyAgICAgcHJv
YmFiaWxpdHkgb2YgYSBnaXZlbiBudW1iZXIgb2YgZXZlbnRzIG9jY3VycmluZyB3aXRoaW4gYSBm
aXhlZCBpbnRlcnZhbAorLy8gICAqIGBhYnNsOjpaaXBmYCBmb3IgZGlzY3JldGUgcHJvYmFiaWxp
dHkgZGlzdHJpYnV0aW9ucyBjb21tb25seSB1c2VkIGZvcgorLy8gICAgIG1vZGVsbGluZyBvZiBy
YXJlIGV2ZW50cworLy8KKy8vIFByZWZlciB1c2Ugb2YgdGhlc2UgZGlzdHJpYnV0aW9uIGZ1bmN0
aW9uIGNsYXNzZXMgb3ZlciBtYW51YWwgY29uc3RydWN0aW9uIG9mCisvLyB5b3VyIG93biBkaXN0
cmlidXRpb24gY2xhc3NlcywgYXMgaXQgYWxsb3dzIGxpYnJhcnkgbWFpbnRhaW5lcnMgZ3JlYXRl
cgorLy8gZmxleGliaWxpdHkgdG8gY2hhbmdlIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9u
IGluIHRoZSBmdXR1cmUuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fRElTVFJJQlVUSU9OU19IXwor
I2RlZmluZSBBQlNMX1JBTkRPTV9ESVNUUklCVVRJT05TX0hfCisKKyNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHJhbmRv
bT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5h
bC9pbmxpbmVfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9iZXJub3VsbGlfZGlz
dHJpYnV0aW9uLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vYmV0YV9kaXN0cmlidXRpb24uaCIK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9kaXN0cmlidXRpb25fZm9ybWF0X3RyYWl0cy5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2V4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUg
ImFic2wvcmFuZG9tL2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5oIgorI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbnMuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC91bmlmb3JtX2hlbHBlci5oIiAgLy8gSVdZVSBw
cmFnbWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wvcmFuZG9tL2xvZ191bmlmb3JtX2ludF9kaXN0
cmlidXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9wb2lzc29uX2Rpc3RyaWJ1dGlvbi5o
IgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL3VuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24uaCIKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS96aXBmX2Rpc3RyaWJ1dGlvbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CisK
K0FCU0xfSU5URVJOQUxfSU5MSU5FX0NPTlNURVhQUihyYW5kb21faW50ZXJuYWw6OkludGVydmFs
Q2xvc2VkQ2xvc2VkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnZhbENs
b3NlZENsb3NlZCwge30pOworQUJTTF9JTlRFUk5BTF9JTkxJTkVfQ09OU1RFWFBSKHJhbmRvbV9p
bnRlcm5hbDo6SW50ZXJ2YWxDbG9zZWRDbG9zZWRULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEludGVydmFsQ2xvc2VkLCB7fSk7CitBQlNMX0lOVEVSTkFMX0lOTElORV9DT05TVEVY
UFIocmFuZG9tX2ludGVybmFsOjpJbnRlcnZhbENsb3NlZE9wZW5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEludGVydmFsQ2xvc2VkT3Blbiwge30pOworQUJTTF9JTlRFUk5BTF9J
TkxJTkVfQ09OU1RFWFBSKHJhbmRvbV9pbnRlcm5hbDo6SW50ZXJ2YWxPcGVuT3BlblQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJ2YWxPcGVuT3Blbiwge30pOworQUJTTF9J
TlRFUk5BTF9JTkxJTkVfQ09OU1RFWFBSKHJhbmRvbV9pbnRlcm5hbDo6SW50ZXJ2YWxPcGVuT3Bl
blQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJ2YWxPcGVuLCB7fSk7CitB
QlNMX0lOVEVSTkFMX0lOTElORV9DT05TVEVYUFIocmFuZG9tX2ludGVybmFsOjpJbnRlcnZhbE9w
ZW5DbG9zZWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVydmFsT3BlbkNs
b3NlZCwge30pOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6VW5pZm9ybTxU
Pih0YWcsIGJpdGdlbiwgbG8sIGhpKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBg
YWJzbDo6VW5pZm9ybSgpYCBwcm9kdWNlcyByYW5kb20gdmFsdWVzIG9mIHR5cGUgYFRgIHVuaWZv
cm1seSBkaXN0cmlidXRlZCBpbgorLy8gYSBkZWZpbmVkIGludGVydmFsIHtsbywgaGl9LiBUaGUg
aW50ZXJ2YWwgYHRhZ2AgZGVmaW5lcyB0aGUgdHlwZSBvZiBpbnRlcnZhbAorLy8gd2hpY2ggc2hv
dWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHBvc3NpYmxlIHZhbHVlczoKKy8vCisvLyAgICog
YGFic2w6OkludGVydmFsT3Blbk9wZW5gCisvLyAgICogYGFic2w6OkludGVydmFsT3BlbkNsb3Nl
ZGAKKy8vICAgKiBgYWJzbDo6SW50ZXJ2YWxDbG9zZWRPcGVuYAorLy8gICAqIGBhYnNsOjpJbnRl
cnZhbENsb3NlZENsb3NlZGAKKy8vCisvLyB3aGVyZSAib3BlbiIgcmVmZXJzIHRvIGFuIGV4Y2x1
c2l2ZSB2YWx1ZSAoZXhjbHVkZWQpIGZyb20gdGhlIG91dHB1dCwgd2hpbGUKKy8vICJjbG9zZWQi
IHJlZmVycyB0byBhbiBpbmNsdXNpdmUgdmFsdWUgKGluY2x1ZGVkKSBmcm9tIHRoZSBvdXRwdXQu
CisvLworLy8gSW4gdGhlIGFic2VuY2Ugb2YgYW4gZXhwbGljaXQgcmV0dXJuIHR5cGUgYFRgLCBg
YWJzbDo6VW5pZm9ybSgpYCB3aWxsIGRlZHVjZQorLy8gdGhlIHJldHVybiB0eXBlIGJhc2VkIG9u
IHRoZSBwcm92aWRlZCBlbmRwb2ludCBhcmd1bWVudHMge0EgbG8sIEIgaGl9LgorLy8gR2l2ZW4g
dGhlc2UgZW5kcG9pbnRzLCBvbmUgb2Yge0EsIEJ9IHdpbGwgYmUgY2hvc2VuIGFzIHRoZSByZXR1
cm4gdHlwZSwgaWYKKy8vIGEgdHlwZSBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgaW50byB0
aGUgb3RoZXIgaW4gYSBsb3NzbGVzcyB3YXkuIFRoZQorLy8gbGFjayBvZiBhbnkgc3VjaCBpbXBs
Y2l0IGNvbnZlcnNpb24gYmV0d2VlbiB7QSwgQn0gd2lsbCBwcm9kdWNlIGEKKy8vIGNvbXBpbGUt
dGltZSBlcnJvcgorLy8KKy8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Vbmlm
b3JtX2Rpc3RyaWJ1dGlvbl8oY29udGludW91cykKKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAg
YWJzbDo6Qml0R2VuIGJpdGdlbjsKKy8vCisvLyAgIC8vIFByb2R1Y2UgYSByYW5kb20gZmxvYXQg
dmFsdWUgYmV0d2VlbiAwLjAgYW5kIDEuMCwgaW5jbHVzaXZlCisvLyAgIGF1dG8geCA9IGFic2w6
OlVuaWZvcm0oYWJzbDo6SW50ZXJ2YWxDbG9zZWRDbG9zZWQsIGJpdGdlbiwgMC4wZiwgMS4wZik7
CisvLworLy8gICAvLyBUaGUgbW9zdCBjb21tb24gaW50ZXJ2YWwgb2YgYGFic2w6OkludGVydmFs
Q2xvc2VkT3BlbmAgaXMgYXZhaWxhYmxlIGJ5CisvLyAgIC8vIGRlZmF1bHQ6CisvLworLy8gICBh
dXRvIHggPSBhYnNsOjpVbmlmb3JtKGJpdGdlbiwgMC4wZiwgMS4wZik7CisvLworLy8gICAvLyBS
ZXR1cm4tdHlwZXMgYXJlIHR5cGljYWxseSBpbmZlcnJlZCBmcm9tIHRoZSBhcmd1bWVudHMsIGhv
d2V2ZXIgY2FsbGVycworLy8gICAvLyBjYW4gb3B0aW9uYWxseSBwcm92aWRlIGFuIGV4cGxpY2l0
IHJldHVybi10eXBlIHRvIHRoZSB0ZW1wbGF0ZS4KKy8vCisvLyAgIGF1dG8geCA9IGFic2w6OlVu
aWZvcm08ZmxvYXQ+KGJpdGdlbiwgMCwgMSk7CisvLwordGVtcGxhdGUgPHR5cGVuYW1lIFIgPSB2
b2lkLCB0eXBlbmFtZSBUYWdUeXBlLCB0eXBlbmFtZSBVUkJHPgordHlwZW5hbWUgYWJzbDo6ZW5h
YmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxSLCB2b2lkPjo6dmFsdWUsIFI+ICAvLworVW5pZm9ybShU
YWdUeXBlIHRhZywKKyAgICAgICAgVVJCRyYmIHVyYmcsICAvLyBOT0xJTlQocnVudGltZS9yZWZl
cmVuY2VzKQorICAgICAgICBSIGxvLCBSIGhpKSB7CisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVj
YXlfdDxVUkJHPjsKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6VW5pZm9ybUltcGw8UiwgVGFn
VHlwZSwgZ2VuX3Q+KHRhZywgdXJiZywgbG8sIGhpKTsKK30KKworLy8gYWJzbDo6VW5pZm9ybTxU
PihiaXRnZW4sIGxvLCBoaSkKKy8vCisvLyBPdmVybG9hZCBvZiBgVW5pZm9ybSgpYCB1c2luZyB0
aGUgZGVmYXVsdCBjbG9zZWQtb3BlbiBpbnRlcnZhbCBvZiBbbG8sIGhpKSwKKy8vIGFuZCByZXR1
cm5pbmcgdmFsdWVzIG9mIHR5cGUgYFRgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiA9IHZvaWQsIHR5
cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFIs
IHZvaWQ+Ojp2YWx1ZSwgUj4gIC8vCitVbmlmb3JtKFVSQkcmJiB1cmJnLCAgLy8gTk9MSU5UKHJ1
bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgUiBsbywgUiBoaSkgeworICBjb25zdGV4cHIgYXV0
byB0YWcgPSBhYnNsOjpJbnRlcnZhbENsb3NlZE9wZW47CisgIHVzaW5nIHRhZ190ID0gZGVjbHR5
cGUodGFnKTsKKyAgdXNpbmcgZ2VuX3QgPSBhYnNsOjpkZWNheV90PFVSQkc+OworCisgIHJldHVy
biByYW5kb21faW50ZXJuYWw6OlVuaWZvcm1JbXBsPFIsIHRhZ190LCBnZW5fdD4odGFnLCB1cmJn
LCBsbywgaGkpOworfQorCisvLyBhYnNsOjpVbmlmb3JtKHRhZywgYml0Z2VuLCBsbywgaGkpCisv
LworLy8gT3ZlcmxvYWQgb2YgYFVuaWZvcm0oKWAgdXNpbmcgZGlmZmVyZW50IChidXQgY29tcGF0
aWJsZSkgbG8sIGhpIHR5cGVzLiBOb3RlCisvLyB0aGF0IGEgY29tcGlsZS1lcnJvciB3aWxsIHJl
c3VsdCBpZiB0aGUgcmV0dXJuIHR5cGUgY2Fubm90IGJlIGRlZHVjZWQKKy8vIGNvcnJlY3RseSBm
cm9tIHRoZSBwYXNzZWQgdHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiA9IHZvaWQsIHR5cGVu
YW1lIFRhZ1R5cGUsIHR5cGVuYW1lIFVSQkcsIHR5cGVuYW1lIEEsCisgICAgICAgICAgdHlwZW5h
bWUgQj4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxSLCB2b2lkPjo6
dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb21faW50ZXJuYWw6OnVuaWZv
cm1faW5mZXJyZWRfcmV0dXJuX3Q8QSwgQj4+CitVbmlmb3JtKFRhZ1R5cGUgdGFnLAorICAgICAg
ICBVUkJHJiYgdXJiZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgIEEg
bG8sIEIgaGkpIHsKKyAgdXNpbmcgZ2VuX3QgPSBhYnNsOjpkZWNheV90PFVSQkc+OworICB1c2lu
ZyByZXR1cm5fdCA9IHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6dW5pZm9ybV9pbmZlcnJlZF9y
ZXR1cm5fdDxBLCBCPjsKKworICByZXR1cm4gcmFuZG9tX2ludGVybmFsOjpVbmlmb3JtSW1wbDxy
ZXR1cm5fdCwgVGFnVHlwZSwgZ2VuX3Q+KHRhZywgdXJiZywgbG8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGkpOworfQor
CisvLyBhYnNsOjpVbmlmb3JtKGJpdGdlbiwgbG8sIGhpKQorLy8KKy8vIE92ZXJsb2FkIG9mIGBV
bmlmb3JtKClgIHVzaW5nIGRpZmZlcmVudCAoYnV0IGNvbXBhdGlibGUpIGxvLCBoaSB0eXBlcyBh
bmQgdGhlCisvLyBkZWZhdWx0IGNsb3NlZC1vcGVuIGludGVydmFsIG9mIFtsbywgaGkpLiBOb3Rl
IHRoYXQgYSBjb21waWxlLWVycm9yIHdpbGwKKy8vIHJlc3VsdCBpZiB0aGUgcmV0dXJuIHR5cGUg
Y2Fubm90IGJlIGRlZHVjZWQgY29ycmVjdGx5IGZyb20gdGhlIHBhc3NlZCB0eXBlcy4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBSID0gdm9pZCwgdHlwZW5hbWUgVVJCRywgdHlwZW5hbWUgQSwgdHlwZW5h
bWUgQj4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxSLCB2b2lkPjo6
dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb21faW50ZXJuYWw6OnVuaWZv
cm1faW5mZXJyZWRfcmV0dXJuX3Q8QSwgQj4+CitVbmlmb3JtKFVSQkcmJiB1cmJnLCAgLy8gTk9M
SU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgQSBsbywgQiBoaSkgeworICBjb25zdGV4
cHIgYXV0byB0YWcgPSBhYnNsOjpJbnRlcnZhbENsb3NlZE9wZW47CisgIHVzaW5nIHRhZ190ID0g
ZGVjbHR5cGUodGFnKTsKKyAgdXNpbmcgZ2VuX3QgPSBhYnNsOjpkZWNheV90PFVSQkc+OworICB1
c2luZyByZXR1cm5fdCA9IHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6dW5pZm9ybV9pbmZlcnJl
ZF9yZXR1cm5fdDxBLCBCPjsKKworICByZXR1cm4gcmFuZG9tX2ludGVybmFsOjpVbmlmb3JtSW1w
bDxyZXR1cm5fdCwgdGFnX3QsIGdlbl90Pih0YWcsIHVyYmcsIGxvLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaSk7Cit9CisK
Ky8vIGFic2w6OlVuaWZvcm08dW5zaWduZWQgVD4oYml0Z2VuKQorLy8KKy8vIE92ZXJsb2FkIG9m
IFVuaWZvcm0oKSB1c2luZyB0aGUgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgb2YgYSBnaXZl
biB0eXBlCisvLyBgVGAgKHdoaWNoIG11c3QgYmUgdW5zaWduZWQpLCByZXR1cm5pbmcgYSB2YWx1
ZSBvZiB0eXBlIGB1bnNpZ25lZCBUYAordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFVS
Qkc+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwhc3RkOjppc19zaWduZWQ8Uj46OnZhbHVl
LCBSPiAgLy8KK1VuaWZvcm0oVVJCRyYmIHVyYmcpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVy
ZW5jZXMpCisgIGNvbnN0ZXhwciBhdXRvIHRhZyA9IGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2Vk
OworICBjb25zdGV4cHIgYXV0byBsbyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8Uj46Omxvd2VzdCgp
OworICBjb25zdGV4cHIgYXV0byBoaSA9IChzdGQ6Om51bWVyaWNfbGltaXRzPFI+OjptYXgpKCk7
CisgIHVzaW5nIHRhZ190ID0gZGVjbHR5cGUodGFnKTsKKyAgdXNpbmcgZ2VuX3QgPSBhYnNsOjpk
ZWNheV90PFVSQkc+OworCisgIHJldHVybiByYW5kb21faW50ZXJuYWw6OlVuaWZvcm1JbXBsPFIs
IHRhZ190LCBnZW5fdD4odGFnLCB1cmJnLCBsbywgaGkpOworfQorCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gYWJzbDo6QmVybm91bGxpKGJpdGdlbiwgcCkKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gYGFic2w6OkJlcm5vdWxsaWAgcHJvZHVjZXMgYSByYW5kb20gYm9vbGVh
biB2YWx1ZSwgd2l0aCBwcm9iYWJpbGl0eSBgcGAKKy8vICh3aGVyZSAwLjAgPD0gcCA8PSAxLjAp
IGVxdWFsaW5nIGB0cnVlYC4KKy8vCisvLyBQcmVmZXIgYGFic2w6OkJlcm5vdWxsaWAgdG8gcHJv
ZHVjZSBib29sZWFuIHZhbHVlcyBvdmVyIG90aGVyIGFsdGVybmF0aXZlcworLy8gc3VjaCBhcyBj
b21wYXJpbmcgYW4gYGFic2w6OlVuaWZvcm0oKWAgdmFsdWUgdG8gYSBzcGVjaWZpYyBvdXRwdXQu
CisvLworLy8gU2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jlcm5vdWxsaV9kaXN0
cmlidXRpb24KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Qml0R2VuIGJpdGdlbjsK
Ky8vICAgLi4uCisvLyAgIGlmIChhYnNsOjpCZXJub3VsbGkoYml0Z2VuLCAxLjAvMzcyMS4wKSkg
eworLy8gICAgIHN0ZDo6Y291dCA8PCAiQXN0ZXJvaWQgZmllbGQgbmF2aWdhdGlvbiBzdWNjZXNz
ZnVsLiI7CisvLyAgIH0KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK2Jvb2wgQmVybm91
bGxpKFVSQkcmJiB1cmJnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAg
ICAgICAgIGRvdWJsZSBwKSB7CisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsK
KyAgdXNpbmcgZGlzdHJpYnV0aW9uX3QgPSBhYnNsOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uOwor
ICB1c2luZyBmb3JtYXRfdCA9IHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9uRm9ybWF0VHJh
aXRzPGRpc3RyaWJ1dGlvbl90PjsKKworICByZXR1cm4gcmFuZG9tX2ludGVybmFsOjpEaXN0cmli
dXRpb25DYWxsZXI8Z2VuX3Q+Ojp0ZW1wbGF0ZSBDYWxsPAorICAgICAgZGlzdHJpYnV0aW9uX3Qs
IGZvcm1hdF90PigmdXJiZywgcCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBh
YnNsOjpCZXRhPFQ+KGJpdGdlbiwgYWxwaGEsIGJldGEpCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIGBhYnNsOjpCZXRhYCBwcm9kdWNlcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciBk
aXN0cmlidXRlZCBpbiB0aGUgY2xvc2VkCisvLyBpbnRlcnZhbCBbMCwxXSBhbmQgcGFyYW1ldGVy
aXplZCBieSB0d28gdmFsdWVzIGBhbHBoYWAgYW5kIGBiZXRhYCBhcyBwZXIgYQorLy8gQmV0YSBk
aXN0cmlidXRpb24uIGBUYCBtdXN0IGJlIGEgZmxvYXRpbmcgcG9pbnQgdHlwZSwgYnV0IG1heSBi
ZSBpbmZlcnJlZAorLy8gZnJvbSB0aGUgdHlwZXMgb2YgYGFscGhhYCBhbmQgYGJldGFgLgorLy8K
Ky8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CZXRhX2Rpc3RyaWJ1dGlvbi4K
Ky8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Qml0R2VuIGJpdGdlbjsKKy8vICAgLi4u
CisvLyAgIGRvdWJsZSBzYW1wbGUgPSBhYnNsOjpCZXRhKGJpdGdlbiwgMy4wLCAyLjApOworLy8K
K3RlbXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlwZSwgdHlwZW5hbWUgVVJCRz4KK1JlYWxUeXBlIEJl
dGEoVVJCRyYmIHVyYmcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAg
ICAgICBSZWFsVHlwZSBhbHBoYSwgUmVhbFR5cGUgYmV0YSkgeworICBzdGF0aWNfYXNzZXJ0KAor
ICAgICAgc3RkOjppc19mbG9hdGluZ19wb2ludDxSZWFsVHlwZT46OnZhbHVlLAorICAgICAgIlRl
bXBsYXRlLWFyZ3VtZW50ICdSZWFsVHlwZScgbXVzdCBiZSBhIGZsb2F0aW5nLXBvaW50IHR5cGUs
IGluICIKKyAgICAgICJhYnNsOjpCZXRhPFJlYWxUeXBlLCBVUkJHPiguLi4pIik7CisKKyAgdXNp
bmcgZ2VuX3QgPSBhYnNsOjpkZWNheV90PFVSQkc+OworICB1c2luZyBkaXN0cmlidXRpb25fdCA9
IHR5cGVuYW1lIGFic2w6OmJldGFfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjsKKyAgdXNpbmcgZm9y
bWF0X3QgPSByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkZvcm1hdFRyYWl0czxkaXN0cmli
dXRpb25fdD47CisKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9uQ2FsbGVy
PGdlbl90Pjo6dGVtcGxhdGUgQ2FsbDwKKyAgICAgIGRpc3RyaWJ1dGlvbl90LCBmb3JtYXRfdD4o
JnVyYmcsIGFscGhhLCBiZXRhKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFi
c2w6OkV4cG9uZW50aWFsPFQ+KGJpdGdlbiwgbGFtYmRhID0gMSkKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gYGFic2w6OkV4cG9uZW50aWFsYCBwcm9kdWNlcyBhIGZsb2F0aW5nIHBv
aW50IG51bWJlciBmb3IgZGlzY3JldGUKKy8vIGRpc3RyaWJ1dGlvbnMgb2YgZXZlbnRzIG9jY3Vy
cmluZyBjb250aW51b3VzbHkgYW5kIGluZGVwZW5kZW50bHkgYXQgYQorLy8gY29uc3RhbnQgYXZl
cmFnZSByYXRlLiBgVGAgbXVzdCBiZSBhIGZsb2F0aW5nIHBvaW50IHR5cGUsIGJ1dCBtYXkgYmUg
aW5mZXJyZWQKKy8vIGZyb20gdGhlIHR5cGUgb2YgYGxhbWJkYWAuCisvLworLy8gU2VlIGh0dHBz
Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbi4KKy8vCisv
LyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Qml0R2VuIGJpdGdlbjsKKy8vICAgLi4uCisvLyAg
IGRvdWJsZSBjYWxsX2xlbmd0aCA9IGFic2w6OkV4cG9uZW50aWFsKGJpdGdlbiwgNy4wKTsKKy8v
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGUsIHR5cGVuYW1lIFVSQkc+CitSZWFsVHlwZSBF
eHBvbmVudGlhbChVUkJHJiYgdXJiZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisg
ICAgICAgICAgICAgICAgICAgICBSZWFsVHlwZSBsYW1iZGEgPSAxKSB7CisgIHN0YXRpY19hc3Nl
cnQoCisgICAgICBzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFJlYWxUeXBlPjo6dmFsdWUsCisgICAg
ICAiVGVtcGxhdGUtYXJndW1lbnQgJ1JlYWxUeXBlJyBtdXN0IGJlIGEgZmxvYXRpbmctcG9pbnQg
dHlwZSwgaW4gIgorICAgICAgImFic2w6OkV4cG9uZW50aWFsPFJlYWxUeXBlLCBVUkJHPiguLi4p
Iik7CisKKyAgdXNpbmcgZ2VuX3QgPSBhYnNsOjpkZWNheV90PFVSQkc+OworICB1c2luZyBkaXN0
cmlidXRpb25fdCA9IHR5cGVuYW1lIGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxSZWFs
VHlwZT47CisgIHVzaW5nIGZvcm1hdF90ID0gcmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25G
b3JtYXRUcmFpdHM8ZGlzdHJpYnV0aW9uX3Q+OworCisgIHJldHVybiByYW5kb21faW50ZXJuYWw6
OkRpc3RyaWJ1dGlvbkNhbGxlcjxnZW5fdD46OnRlbXBsYXRlIENhbGw8CisgICAgICBkaXN0cmli
dXRpb25fdCwgZm9ybWF0X3Q+KCZ1cmJnLCBsYW1iZGEpOworfQorCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gYWJzbDo6R2F1c3NpYW48VD4oYml0Z2VuLCBtZWFuID0gMCwgc3RkZGV2ID0g
MSkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gYGFic2w6OkdhdXNzaWFuYCBwcm9k
dWNlcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciBzZWxlY3RlZCBmcm9tIHRoZSBHYXVzc2lhbgor
Ly8gKGllLiAiTm9ybWFsIikgZGlzdHJpYnV0aW9uLiBgVGAgbXVzdCBiZSBhIGZsb2F0aW5nIHBv
aW50IHR5cGUsIGJ1dCBtYXkgYmUKKy8vIGluZmVycmVkIGZyb20gdGhlIHR5cGVzIG9mIGBtZWFu
YCBhbmQgYHN0ZGRldmAuCisvLworLy8gU2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L05vcm1hbF9kaXN0cmlidXRpb24KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Qml0
R2VuIGJpdGdlbjsKKy8vICAgLi4uCisvLyAgIGRvdWJsZSBnaXJhZmZlX2hlaWdodCA9IGFic2w6
OkdhdXNzaWFuKGJpdGdlbiwgMTYuMywgMy4zKTsKKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVh
bFR5cGUsIHR5cGVuYW1lIFVSQkc+CitSZWFsVHlwZSBHYXVzc2lhbihVUkJHJiYgdXJiZywgIC8v
IE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICBSZWFsVHlwZSBt
ZWFuID0gMCwgUmVhbFR5cGUgc3RkZGV2ID0gMSkgeworICBzdGF0aWNfYXNzZXJ0KAorICAgICAg
c3RkOjppc19mbG9hdGluZ19wb2ludDxSZWFsVHlwZT46OnZhbHVlLAorICAgICAgIlRlbXBsYXRl
LWFyZ3VtZW50ICdSZWFsVHlwZScgbXVzdCBiZSBhIGZsb2F0aW5nLXBvaW50IHR5cGUsIGluICIK
KyAgICAgICJhYnNsOjpHYXVzc2lhbjxSZWFsVHlwZSwgVVJCRz4oLi4uKSIpOworCisgIHVzaW5n
IGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsKKyAgdXNpbmcgZGlzdHJpYnV0aW9uX3QgPSB0
eXBlbmFtZSBhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb248UmVhbFR5cGU+OworICB1c2luZyBm
b3JtYXRfdCA9IHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9uRm9ybWF0VHJhaXRzPGRpc3Ry
aWJ1dGlvbl90PjsKKworICByZXR1cm4gcmFuZG9tX2ludGVybmFsOjpEaXN0cmlidXRpb25DYWxs
ZXI8Z2VuX3Q+Ojp0ZW1wbGF0ZSBDYWxsPAorICAgICAgZGlzdHJpYnV0aW9uX3QsIGZvcm1hdF90
PigmdXJiZywgbWVhbiwgc3RkZGV2KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IGFic2w6OkxvZ1VuaWZvcm08VD4oYml0Z2VuLCBsbywgaGksIGJhc2UgPSAyKQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBgYWJzbDo6TG9nVW5pZm9ybWAgcHJvZHVjZXMgcmFuZG9t
IHZhbHVlcyBkaXN0cmlidXRlZCB3aGVyZSB0aGUgbG9nIHRvIGEKKy8vIGdpdmVuIGJhc2Ugb2Yg
YWxsIHZhbHVlcyBpcyB1bmlmb3JtIGluIGEgY2xvc2VkIGludGVydmFsIFtsbywgaGldLiBgVGAg
bXVzdAorLy8gYmUgYW4gaW50ZWdyYWwgdHlwZSwgYnV0IG1heSBiZSBpbmZlcnJlZCBmcm9tIHRo
ZSB0eXBlcyBvZiBgbG9gIGFuZCBgaGlgLgorLy8KKy8vIEkuZS4sIGBMb2dVbmlmb3JtKDAsIG4s
IGIpYCBpcyB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIGJ1Y2tldHMKKy8vIFswXSwgWzEs
IGItMV0sIFtiLCBiXjItMV0gLi4gW2JeKGstMSksIChiXmspLTFdIC4uIFtiXmZsb29yKGxvZyhu
LCBiKSksIG5dCisvLyBhbmQgaXMgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIHdpdGhpbiBlYWNoIGJ1
Y2tldC4KKy8vCisvLyBUaGUgcmVzdWx0aW5nIHByb2JhYmlsaXR5IGRlbnNpdHkgaXMgaW52ZXJz
ZWx5IHJlbGF0ZWQgdG8gYnVja2V0IHNpemUsIHRob3VnaAorLy8gdmFsdWVzIGluIHRoZSBmaW5h
bCBidWNrZXQgbWF5IGJlIG1vcmUgbGlrZWx5IHRoYW4gcHJldmlvdXMgdmFsdWVzLiAoSW4gdGhl
CisvLyBleHRyZW1lIGNhc2Ugd2hlcmUgbiA9IGJeaSB0aGUgZmluYWwgdmFsdWUgd2lsbCBiZSB0
aWVkIHdpdGggemVybyBhcyB0aGUgbW9zdAorLy8gcHJvYmFibGUgcmVzdWx0LgorLy8KKy8vIElm
IGBsb2AgaXMgbm9uemVybyB0aGVuIHRoaXMgZGlzdHJpYnV0aW9uIGlzIHNoaWZ0ZWQgdG8gdGhl
IGRlc2lyZWQgaW50ZXJ2YWwsCisvLyBzbyBMb2dVbmlmb3JtKGxvLCBoaSwgYikgaXMgZXF1aXZh
bGVudCB0byBMb2dVbmlmb3JtKDAsIGhpLWxvLCBiKStsby4KKy8vCisvLyBTZWUgaHR0cDovL2Vj
b2xlZ28uZmFjaWxpYS5zZS9lY29sZWdvL3Nob3cvTG9nLVVuaWZvcm0lMjBEaXN0cmlidXRpb24K
Ky8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Qml0R2VuIGJpdGdlbjsKKy8vICAgLi4u
CisvLyAgIGludCB2ID0gYWJzbDo6TG9nVW5pZm9ybShiaXRnZW4sIDAsIDEwMDApOworLy8KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlLCB0eXBlbmFtZSBVUkJHPgorSW50VHlwZSBMb2dVbmlm
b3JtKFVSQkcmJiB1cmJnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAg
ICAgICAgICAgICBJbnRUeXBlIGxvLCBJbnRUeXBlIGhpLCBJbnRUeXBlIGJhc2UgPSAyKSB7Cisg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxJbnRUeXBlPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgIlRlbXBsYXRlLWFyZ3VtZW50ICdJbnRUeXBlJyBtdXN0IGJlIGFuIGludGVncmFs
IHR5cGUsIGluICIKKyAgICAgICAgICAgICAgICAiYWJzbDo6TG9nVW5pZm9ybTxJbnRUeXBlLCBV
UkJHPiguLi4pIik7CisKKyAgdXNpbmcgZ2VuX3QgPSBhYnNsOjpkZWNheV90PFVSQkc+OworICB1
c2luZyBkaXN0cmlidXRpb25fdCA9IHR5cGVuYW1lIGFic2w6OmxvZ191bmlmb3JtX2ludF9kaXN0
cmlidXRpb248SW50VHlwZT47CisgIHVzaW5nIGZvcm1hdF90ID0gcmFuZG9tX2ludGVybmFsOjpE
aXN0cmlidXRpb25Gb3JtYXRUcmFpdHM8ZGlzdHJpYnV0aW9uX3Q+OworCisgIHJldHVybiByYW5k
b21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkNhbGxlcjxnZW5fdD46OnRlbXBsYXRlIENhbGw8Cisg
ICAgICBkaXN0cmlidXRpb25fdCwgZm9ybWF0X3Q+KCZ1cmJnLCBsbywgaGksIGJhc2UpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6UG9pc3NvbjxUPihiaXRnZW4sIG1l
YW4gPSAxKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBgYWJzbDo6UG9pc3NvbmAg
cHJvZHVjZXMgZGlzY3JldGUgcHJvYmFiaWxpdGllcyBmb3IgYSBnaXZlbiBudW1iZXIgb2YgZXZl
bnRzCisvLyBvY2N1cnJpbmcgd2l0aGluIGEgZml4ZWQgaW50ZXJ2YWwgd2l0aGluIHRoZSBjbG9z
ZWQgaW50ZXJ2YWwgWzAsIG1heF0uIGBUYAorLy8gbXVzdCBiZSBhbiBpbnRlZ3JhbCB0eXBlLgor
Ly8KKy8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qb2lzc29uX2Rpc3RyaWJ1
dGlvbgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhYnNsOjpCaXRHZW4gYml0Z2VuOworLy8g
ICAuLi4KKy8vICAgaW50IHJlcXVlc3RzX3Blcl9taW51dGUgPSBhYnNsOjpQb2lzc29uPGludD4o
Yml0Z2VuLCAzLjIpOworLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlLCB0eXBlbmFtZSBV
UkJHPgorSW50VHlwZSBQb2lzc29uKFVSQkcmJiB1cmJnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVm
ZXJlbmNlcykKKyAgICAgICAgICAgICAgICBkb3VibGUgbWVhbiA9IDEuMCkgeworICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAg
ICJUZW1wbGF0ZS1hcmd1bWVudCAnSW50VHlwZScgbXVzdCBiZSBhbiBpbnRlZ3JhbCB0eXBlLCBp
biAiCisgICAgICAgICAgICAgICAgImFic2w6OlBvaXNzb248SW50VHlwZSwgVVJCRz4oLi4uKSIp
OworCisgIHVzaW5nIGdlbl90ID0gYWJzbDo6ZGVjYXlfdDxVUkJHPjsKKyAgdXNpbmcgZGlzdHJp
YnV0aW9uX3QgPSB0eXBlbmFtZSBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjsK
KyAgdXNpbmcgZm9ybWF0X3QgPSByYW5kb21faW50ZXJuYWw6OkRpc3RyaWJ1dGlvbkZvcm1hdFRy
YWl0czxkaXN0cmlidXRpb25fdD47CisKKyAgcmV0dXJuIHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJp
YnV0aW9uQ2FsbGVyPGdlbl90Pjo6dGVtcGxhdGUgQ2FsbDwKKyAgICAgIGRpc3RyaWJ1dGlvbl90
LCBmb3JtYXRfdD4oJnVyYmcsIG1lYW4pOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gYWJzbDo6WmlwZjxUPihiaXRnZW4sIGhpID0gbWF4LCBxID0gMiwgdiA9IDEpCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIGBhYnNsOjpaaXBmYCBwcm9kdWNlcyBkaXNjcmV0ZSBw
cm9iYWJpbGl0aWVzIGNvbW1vbmx5IHVzZWQgZm9yIG1vZGVsbGluZyBvZgorLy8gcmFyZSBldmVu
dHMgb3ZlciB0aGUgY2xvc2VkIGludGVydmFsIFswLCBoaV0uIFRoZSBwYXJhbWV0ZXJzIGB2YCBh
bmQgYHFgCisvLyBkZXRlcm1pbmUgdGhlIHNrZXcgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gYFRgICBt
dXN0IGJlIGFuIGludGVncmFsIHR5cGUsIGJ1dAorLy8gbWF5IGJlIGluZmVycmVkIGZyb20gdGhl
IHR5cGUgb2YgYGhpYC4KKy8vCisvLyBTZWUgaHR0cDovL21hdGh3b3JsZC53b2xmcmFtLmNvbS9a
aXBmRGlzdHJpYnV0aW9uLmh0bWwKKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Qml0
R2VuIGJpdGdlbjsKKy8vICAgLi4uCisvLyAgIGludCB0ZXJtX3JhbmsgPSBhYnNsOjpaaXBmPGlu
dD4oYml0Z2VuKTsKKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZSwgdHlwZW5hbWUgVVJC
Rz4KK0ludFR5cGUgWmlwZihVUkJHJiYgdXJiZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5j
ZXMpCisgICAgICAgICAgICAgSW50VHlwZSBoaSA9IChzdGQ6Om51bWVyaWNfbGltaXRzPEludFR5
cGU+OjptYXgpKCksIGRvdWJsZSBxID0gMi4wLAorICAgICAgICAgICAgIGRvdWJsZSB2ID0gMS4w
KSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxJbnRUeXBlPjo6dmFsdWUsCisg
ICAgICAgICAgICAgICAgIlRlbXBsYXRlLWFyZ3VtZW50ICdJbnRUeXBlJyBtdXN0IGJlIGFuIGlu
dGVncmFsIHR5cGUsIGluICIKKyAgICAgICAgICAgICAgICAiYWJzbDo6WmlwZjxJbnRUeXBlLCBV
UkJHPiguLi4pIik7CisKKyAgdXNpbmcgZ2VuX3QgPSBhYnNsOjpkZWNheV90PFVSQkc+OworICB1
c2luZyBkaXN0cmlidXRpb25fdCA9IHR5cGVuYW1lIGFic2w6OnppcGZfZGlzdHJpYnV0aW9uPElu
dFR5cGU+OworICB1c2luZyBmb3JtYXRfdCA9IHJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9u
Rm9ybWF0VHJhaXRzPGRpc3RyaWJ1dGlvbl90PjsKKworICByZXR1cm4gcmFuZG9tX2ludGVybmFs
OjpEaXN0cmlidXRpb25DYWxsZXI8Z2VuX3Q+Ojp0ZW1wbGF0ZSBDYWxsPAorICAgICAgZGlzdHJp
YnV0aW9uX3QsIGZvcm1hdF90PigmdXJiZywgaGksIHEsIHYpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0RJU1RSSUJVVElPTlNfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9kaXN0cmlidXRpb25zX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
ZGlzdHJpYnV0aW9uc190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViODI4NjhkNTMyMDM0M2M1ZjhjMDA2
MWU2MmQzYTJlMjkyNGY2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZGlzdHJp
YnV0aW9uc190ZXN0LmNjCkBAIC0wLDAgKzEsNDk0IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2Rpc3RyaWJ1dGlvbnMu
aCIKKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8cmFu
ZG9tPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL3JhbmRvbS5oIgorCituYW1lc3BhY2UgeworCitjb25zdGV4cHIg
aW50IGtTaXplID0gNDAwMDAwOworCitjbGFzcyBSYW5kb21EaXN0cmlidXRpb25zVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHt9OworCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0aW9uc1Rlc3Qs
IFVuaWZvcm1Cb3VuZEZ1bmN0aW9ucykgeworICB1c2luZyBhYnNsOjpJbnRlcnZhbENsb3NlZENs
b3NlZDsKKyAgdXNpbmcgYWJzbDo6SW50ZXJ2YWxDbG9zZWRPcGVuOworICB1c2luZyBhYnNsOjpJ
bnRlcnZhbE9wZW5DbG9zZWQ7CisgIHVzaW5nIGFic2w6OkludGVydmFsT3Blbk9wZW47CisgIHVz
aW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6dW5pZm9ybV9sb3dlcl9ib3VuZDsKKyAgdXNpbmcg
YWJzbDo6cmFuZG9tX2ludGVybmFsOjp1bmlmb3JtX3VwcGVyX2JvdW5kOworCisgIC8vIGFic2w6
OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiBuYXRpdmVseSBhc3N1bWVzIEludGVydmFsQ2xvc2Vk
Q2xvc2VkCisgIC8vIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24gbmF0aXZlbHkgYXNz
dW1lcyBJbnRlcnZhbENsb3NlZE9wZW4KKworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3Vu
ZChJbnRlcnZhbE9wZW5DbG9zZWQsIDAsIDEwMCksIDEpOworICBFWFBFQ1RfRVEodW5pZm9ybV9s
b3dlcl9ib3VuZChJbnRlcnZhbE9wZW5PcGVuLCAwLCAxMDApLCAxKTsKKyAgRVhQRUNUX0dUKHVu
aWZvcm1fbG93ZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsT3BlbkNsb3NlZCwgMCwgMS4wKSwgMCk7
CisgIEVYUEVDVF9HVCh1bmlmb3JtX2xvd2VyX2JvdW5kPGZsb2F0PihJbnRlcnZhbE9wZW5PcGVu
LCAwLCAxLjApLCAwKTsKKyAgRVhQRUNUX0dUKHVuaWZvcm1fbG93ZXJfYm91bmQ8ZG91YmxlPihJ
bnRlcnZhbE9wZW5DbG9zZWQsIDAsIDEuMCksIDApOworICBFWFBFQ1RfR1QodW5pZm9ybV9sb3dl
cl9ib3VuZDxkb3VibGU+KEludGVydmFsT3Blbk9wZW4sIDAsIDEuMCksIDApOworCisgIEVYUEVD
VF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsQ2xvc2VkQ2xvc2VkLCAwLCAxMDApLCAw
KTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRPcGVuLCAw
LCAxMDApLCAwKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91bmQ8ZmxvYXQ+KEludGVy
dmFsQ2xvc2VkQ2xvc2VkLCAwLCAxLjApLCAwKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJf
Ym91bmQ8ZmxvYXQ+KEludGVydmFsQ2xvc2VkT3BlbiwgMCwgMS4wKSwgMCk7CisgIEVYUEVDVF9F
USh1bmlmb3JtX2xvd2VyX2JvdW5kPGRvdWJsZT4oSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIDAsIDEu
MCksIDApOworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZDxkb3VibGU+KEludGVydmFs
Q2xvc2VkT3BlbiwgMCwgMS4wKSwgMCk7CisKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91
bmQoSW50ZXJ2YWxPcGVuT3BlbiwgMCwgMTAwKSwgOTkpOworICBFWFBFQ1RfRVEodW5pZm9ybV91
cHBlcl9ib3VuZChJbnRlcnZhbENsb3NlZE9wZW4sIDAsIDEwMCksIDk5KTsKKyAgRVhQRUNUX0VR
KHVuaWZvcm1fdXBwZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsT3Blbk9wZW4sIDAsIDEuMCksIDEu
MCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kPGZsb2F0PihJbnRlcnZhbENsb3Nl
ZE9wZW4sIDAsIDEuMCksIDEuMCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kPGRv
dWJsZT4oSW50ZXJ2YWxPcGVuT3BlbiwgMCwgMS4wKSwgMS4wKTsKKyAgRVhQRUNUX0VRKHVuaWZv
cm1fdXBwZXJfYm91bmQ8ZG91YmxlPihJbnRlcnZhbENsb3NlZE9wZW4sIDAsIDEuMCksIDEuMCk7
CisKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxPcGVuQ2xvc2VkLCAw
LCAxMDApLCAxMDApOworICBFWFBFQ1RfRVEodW5pZm9ybV91cHBlcl9ib3VuZChJbnRlcnZhbENs
b3NlZENsb3NlZCwgMCwgMTAwKSwgMTAwKTsKKyAgRVhQRUNUX0dUKHVuaWZvcm1fdXBwZXJfYm91
bmQ8ZmxvYXQ+KEludGVydmFsT3BlbkNsb3NlZCwgMCwgMS4wKSwgMS4wKTsKKyAgRVhQRUNUX0dU
KHVuaWZvcm1fdXBwZXJfYm91bmQ8ZmxvYXQ+KEludGVydmFsQ2xvc2VkQ2xvc2VkLCAwLCAxLjAp
LCAxLjApOworICBFWFBFQ1RfR1QodW5pZm9ybV91cHBlcl9ib3VuZDxkb3VibGU+KEludGVydmFs
T3BlbkNsb3NlZCwgMCwgMS4wKSwgMS4wKTsKKyAgRVhQRUNUX0dUKHVuaWZvcm1fdXBwZXJfYm91
bmQ8ZG91YmxlPihJbnRlcnZhbENsb3NlZENsb3NlZCwgMCwgMS4wKSwgMS4wKTsKKworICAvLyBO
ZWdhdGl2ZSB2YWx1ZSB0ZXN0cworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZChJbnRl
cnZhbE9wZW5DbG9zZWQsIC0xMDAsIC0xKSwgLTk5KTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93
ZXJfYm91bmQoSW50ZXJ2YWxPcGVuT3BlbiwgLTEwMCwgLTEpLCAtOTkpOworICBFWFBFQ1RfR1Qo
dW5pZm9ybV9sb3dlcl9ib3VuZDxmbG9hdD4oSW50ZXJ2YWxPcGVuQ2xvc2VkLCAtMi4wLCAtMS4w
KSwgLTIuMCk7CisgIEVYUEVDVF9HVCh1bmlmb3JtX2xvd2VyX2JvdW5kPGZsb2F0PihJbnRlcnZh
bE9wZW5PcGVuLCAtMi4wLCAtMS4wKSwgLTIuMCk7CisgIEVYUEVDVF9HVCh1bmlmb3JtX2xvd2Vy
X2JvdW5kPGRvdWJsZT4oSW50ZXJ2YWxPcGVuQ2xvc2VkLCAtMi4wLCAtMS4wKSwgLTIuMCk7Cisg
IEVYUEVDVF9HVCh1bmlmb3JtX2xvd2VyX2JvdW5kPGRvdWJsZT4oSW50ZXJ2YWxPcGVuT3Blbiwg
LTIuMCwgLTEuMCksIC0yLjApOworCisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kKElu
dGVydmFsQ2xvc2VkQ2xvc2VkLCAtMTAwLCAtMSksIC0xMDApOworICBFWFBFQ1RfRVEodW5pZm9y
bV9sb3dlcl9ib3VuZChJbnRlcnZhbENsb3NlZE9wZW4sIC0xMDAsIC0xKSwgLTEwMCk7CisgIEVY
UEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kPGZsb2F0PihJbnRlcnZhbENsb3NlZENsb3NlZCwg
LTIuMCwgLTEuMCksIC0yLjApOworICBFWFBFQ1RfRVEodW5pZm9ybV9sb3dlcl9ib3VuZDxmbG9h
dD4oSW50ZXJ2YWxDbG9zZWRPcGVuLCAtMi4wLCAtMS4wKSwgLTIuMCk7CisgIEVYUEVDVF9FUSh1
bmlmb3JtX2xvd2VyX2JvdW5kPGRvdWJsZT4oSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIC0yLjAsIC0x
LjApLAorICAgICAgICAgICAgLTIuMCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5k
PGRvdWJsZT4oSW50ZXJ2YWxDbG9zZWRPcGVuLCAtMi4wLCAtMS4wKSwgLTIuMCk7CisKKyAgRVhQ
RUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxPcGVuT3BlbiwgLTEwMCwgLTEpLCAt
Mik7CisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kKEludGVydmFsQ2xvc2VkT3Blbiwg
LTEwMCwgLTEpLCAtMik7CisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5kPGZsb2F0PihJ
bnRlcnZhbE9wZW5PcGVuLCAtMi4wLCAtMS4wKSwgLTEuMCk7CisgIEVYUEVDVF9FUSh1bmlmb3Jt
X3VwcGVyX2JvdW5kPGZsb2F0PihJbnRlcnZhbENsb3NlZE9wZW4sIC0yLjAsIC0xLjApLCAtMS4w
KTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQ8ZG91YmxlPihJbnRlcnZhbE9wZW5P
cGVuLCAtMi4wLCAtMS4wKSwgLTEuMCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2JvdW5k
PGRvdWJsZT4oSW50ZXJ2YWxDbG9zZWRPcGVuLCAtMi4wLCAtMS4wKSwgLTEuMCk7CisKKyAgRVhQ
RUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxPcGVuQ2xvc2VkLCAtMTAwLCAtMSks
IC0xKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRDbG9z
ZWQsIC0xMDAsIC0xKSwgLTEpOworICBFWFBFQ1RfR1QodW5pZm9ybV91cHBlcl9ib3VuZDxmbG9h
dD4oSW50ZXJ2YWxPcGVuQ2xvc2VkLCAtMi4wLCAtMS4wKSwgLTEuMCk7CisgIEVYUEVDVF9HVCh1
bmlmb3JtX3VwcGVyX2JvdW5kPGZsb2F0PihJbnRlcnZhbENsb3NlZENsb3NlZCwgLTIuMCwgLTEu
MCksIC0xLjApOworICBFWFBFQ1RfR1QodW5pZm9ybV91cHBlcl9ib3VuZDxkb3VibGU+KEludGVy
dmFsT3BlbkNsb3NlZCwgLTIuMCwgLTEuMCksIC0xLjApOworICBFWFBFQ1RfR1QodW5pZm9ybV91
cHBlcl9ib3VuZDxkb3VibGU+KEludGVydmFsQ2xvc2VkQ2xvc2VkLCAtMi4wLCAtMS4wKSwKKyAg
ICAgICAgICAgIC0xLjApOworCisgIC8vIEVkZ2UgY2FzZXM6IHRoZSBuZXh0IHZhbHVlIHRvd2Fy
ZCBpdHNlbGYgaXMgaXRzZWxmLgorICBjb25zdCBkb3VibGUgZCA9IDEuMDsKKyAgY29uc3QgZmxv
YXQgZiA9IDEuMDsKKyAgRVhQRUNUX0VRKHVuaWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxPcGVu
Q2xvc2VkLCBkLCBkKSwgZCk7CisgIEVYUEVDVF9FUSh1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVy
dmFsT3BlbkNsb3NlZCwgZiwgZiksIGYpOworCisgIEVYUEVDVF9HVCh1bmlmb3JtX2xvd2VyX2Jv
dW5kKEludGVydmFsT3BlbkNsb3NlZCwgMS4wLCAyLjApLCAxLjApOworICBFWFBFQ1RfTFQodW5p
Zm9ybV9sb3dlcl9ib3VuZChJbnRlcnZhbE9wZW5DbG9zZWQsIDEuMCwgKzAuMCksIDEuMCk7Cisg
IEVYUEVDVF9MVCh1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsT3BlbkNsb3NlZCwgMS4wLCAt
MC4wKSwgMS4wKTsKKyAgRVhQRUNUX0xUKHVuaWZvcm1fbG93ZXJfYm91bmQoSW50ZXJ2YWxPcGVu
Q2xvc2VkLCAxLjAsIC0xLjApLCAxLjApOworCisgIEVYUEVDVF9FUSh1bmlmb3JtX3VwcGVyX2Jv
dW5kKEludGVydmFsQ2xvc2VkQ2xvc2VkLCAwLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpLAorICAgICAgICAgICAg
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKKyAgRVhQRUNUX0VRKHVuaWZvcm1f
dXBwZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIDAuMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSksCisgICAg
ICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKK30KKworc3RydWN0
IEludmFsaWQge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBCPgorYXV0byBJ
bmZlcnJlZFVuaWZvcm1SZXR1cm5UKGludCkKKyAgICAtPiBkZWNsdHlwZShhYnNsOjpVbmlmb3Jt
KHN0ZDo6ZGVjbHZhbDxhYnNsOjpJbnNlY3VyZUJpdEdlbiY+KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8QT4oKSwgc3RkOjpkZWNsdmFsPEI+KCkpKTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZT4KK0ludmFsaWQgSW5mZXJyZWRVbmlmb3JtUmV0
dXJuVCguLi4pOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFnVHlwZSwgdHlwZW5hbWUgQSwgdHlw
ZW5hbWUgQj4KK2F1dG8gSW5mZXJyZWRUYWdnZWRVbmlmb3JtUmV0dXJuVChpbnQpCisgICAgLT4g
ZGVjbHR5cGUoYWJzbDo6VW5pZm9ybShzdGQ6OmRlY2x2YWw8VGFnVHlwZT4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxhYnNsOjpJbnNlY3VyZUJpdEdlbiY+
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8QT4oKSwgc3Rk
OjpkZWNsdmFsPEI+KCkpKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5h
bWU+CitJbnZhbGlkIEluZmVycmVkVGFnZ2VkVW5pZm9ybVJldHVyblQoLi4uKTsKKworLy8gR2l2
ZW4gdHlwZXMgPEEsIEIsIEV4cGVjdD4sIENoZWNrQXJnc0luZmVyVHlwZSgpIHZlcmlmaWVzIHRo
YXQKKy8vCisvLyAgIGFic2w6OlVuaWZvcm0oZ2VuLCBBe30sIEJ7fSkKKy8vCisvLyByZXR1cm5z
IHRoZSB0eXBlICJFeHBlY3QiLgorLy8KKy8vIFRoaXMgaW50ZXJmYWNlIGNhbiBhbHNvIGJlIHVz
ZWQgdG8gYXNzZXJ0IHRoYXQgYSBnaXZlbiBhYnNsOjpVbmlmb3JtKCkKKy8vIG92ZXJsb2FkIGRv
ZXMgbm90IGV4aXN0IC8gd2lsbCBub3QgY29tcGlsZS4gR2l2ZW4gdHlwZXMgPEEsIEI+LCB0aGUK
Ky8vIGV4cHJlc3Npb24KKy8vCisvLyAgIGRlY2x0eXBlKGFic2w6OlVuaWZvcm0oLi4uLCBzdGQ6
OmRlY2x2YWw8QT4oKSwgc3RkOjpkZWNsdmFsPEI+KCkpKQorLy8KKy8vIHdpbGwgbm90IGNvbXBp
bGUsIGxlYXZpbmcgdGhlIGRlZmluaXRpb24gb2YgSW5mZXJyZWRVbmlmb3JtUmV0dXJuVDxBLCBC
PiB0bworLy8gcmVzb2x2ZSAodmlhIFNGSU5BRSkgdG8gdGhlIG92ZXJsb2FkIHdoaWNoIHJldHVy
bnMgdHlwZSAiSW52YWxpZCIuIFRoaXMKKy8vIGFsbG93cyB0ZXN0cyB0byBhc3NlcnQgdGhhdCBh
biBpbnZvY2F0aW9uIHN1Y2ggYXMKKy8vCisvLyAgIGFic2w6OlVuaWZvcm0oZ2VuLCAxLjIzZiwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSAtIDEpCisvLworLy8gc2hvdWxkIG5vdCBj
b21waWxlLCBzaW5jZSBuZWl0aGVyIHR5cGUsIGZsb2F0IG5vciBpbnQsIGNhbiBwcmVjaXNlbHkK
Ky8vIHJlcHJlc2VudCBib3RoIGVuZHBvaW50LXZhbHVlcy4gV3JpdGluZzoKKy8vCisvLyAgIENo
ZWNrQXJnc0luZmVyVHlwZTxmbG9hdCwgaW50LCBJbnZhbGlkPigpCisvLworLy8gd2lsbCBhc3Nl
cnQgdGhhdCB0aGlzIG92ZXJsb2FkIGRvZXMgbm90IGV4aXN0LgordGVtcGxhdGUgPHR5cGVuYW1l
IEEsIHR5cGVuYW1lIEIsIHR5cGVuYW1lIEV4cGVjdD4KK3ZvaWQgQ2hlY2tBcmdzSW5mZXJUeXBl
KCkgeworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAg
ICAgc3RkOjppc19zYW1lPEV4cGVjdCwgZGVjbHR5cGUoSW5mZXJyZWRVbmlmb3JtUmV0dXJuVDxB
LCBCPigwKSk+LAorICAgICAgICAgIHN0ZDo6aXNfc2FtZTxFeHBlY3QsCisgICAgICAgICAgICAg
ICAgICAgICAgIGRlY2x0eXBlKEluZmVycmVkVW5pZm9ybVJldHVyblQ8QiwgQT4oMCkpPj46OnZh
bHVlLAorICAgICAgIiIpOworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgYWJzbDo6Y29uanVuY3Rp
b248CisgICAgICAgICAgc3RkOjppc19zYW1lPEV4cGVjdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgZGVjbHR5cGUoSW5mZXJyZWRUYWdnZWRVbmlmb3JtUmV0dXJuVDwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpJbnRlcnZhbE9wZW5PcGVu
VCwgQSwgQj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAwKSk+LAorICAgICAgICAgIHN0
ZDo6aXNfc2FtZTxFeHBlY3QsCisgICAgICAgICAgICAgICAgICAgICAgIGRlY2x0eXBlKEluZmVy
cmVkVGFnZ2VkVW5pZm9ybVJldHVyblQ8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6SW50ZXJ2YWxPcGVuT3BlblQsIEIsIEE+KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCkpPj46OnZhbHVlLAorICAgICAgIiIpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQiwgdHlwZW5hbWUgRXhwbGljaXRSZXQ+CithdXRv
IEV4cGxpY2l0VW5pZm9ybVJldHVyblQoaW50KSAtPiBkZWNsdHlwZSgKKyAgICBhYnNsOjpVbmlm
b3JtPEV4cGxpY2l0UmV0Pigqc3RkOjpkZWNsdmFsPGFic2w6Okluc2VjdXJlQml0R2VuKj4oKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8QT4oKSwgc3RkOjpk
ZWNsdmFsPEI+KCkpKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUg
RXhwbGljaXRSZXQ+CitJbnZhbGlkIEV4cGxpY2l0VW5pZm9ybVJldHVyblQoLi4uKTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFRhZ1R5cGUsIHR5cGVuYW1lIEEsIHR5cGVuYW1lIEIsIHR5cGVuYW1l
IEV4cGxpY2l0UmV0PgorYXV0byBFeHBsaWNpdFRhZ2dlZFVuaWZvcm1SZXR1cm5UKGludCkgLT4g
ZGVjbHR5cGUoYWJzbDo6VW5pZm9ybTxFeHBsaWNpdFJldD4oCisgICAgc3RkOjpkZWNsdmFsPFRh
Z1R5cGU+KCksICpzdGQ6OmRlY2x2YWw8YWJzbDo6SW5zZWN1cmVCaXRHZW4qPigpLAorICAgIHN0
ZDo6ZGVjbHZhbDxBPigpLCBzdGQ6OmRlY2x2YWw8Qj4oKSkpOworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUsIHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUgRXhwbGljaXRSZXQ+CitJbnZhbGlkIEV4
cGxpY2l0VGFnZ2VkVW5pZm9ybVJldHVyblQoLi4uKTsKKworLy8gR2l2ZW4gdHlwZXMgPEEsIEIs
IEV4cGVjdD4sIENoZWNrQXJnc1JldHVybkV4cGVjdGVkVHlwZSgpIHZlcmlmaWVzIHRoYXQKKy8v
CisvLyAgIGFic2w6OlVuaWZvcm08RXhwZWN0PihnZW4sIEF7fSwgQnt9KQorLy8KKy8vIHJldHVy
bnMgdGhlIHR5cGUgIkV4cGVjdCIsIGFuZCB0aGF0IHRoZSBmdW5jdGlvbi1vdmVybG9hZCBoYXMg
dGhlIHNpZ25hdHVyZQorLy8KKy8vICAgRXhwZWN0KFVSQkcmLCBFeHBlY3QsIEV4cGVjdCkKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBCLCB0eXBlbmFtZSBFeHBlY3Q+Cit2b2lkIENo
ZWNrQXJnc1JldHVybkV4cGVjdGVkVHlwZSgpIHsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIGFi
c2w6OmNvbmp1bmN0aW9uPAorICAgICAgICAgIHN0ZDo6aXNfc2FtZTxFeHBlY3QsCisgICAgICAg
ICAgICAgICAgICAgICAgIGRlY2x0eXBlKEV4cGxpY2l0VW5pZm9ybVJldHVyblQ8QSwgQiwgRXhw
ZWN0PigwKSk+LAorICAgICAgICAgIHN0ZDo6aXNfc2FtZTxFeHBlY3QsIGRlY2x0eXBlKEV4cGxp
Y2l0VW5pZm9ybVJldHVyblQ8QiwgQSwgRXhwZWN0PigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMCkpPj46OnZhbHVlLAorICAgICAgIiIpOworICBzdGF0aWNfYXNzZXJ0KAor
ICAgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgICAgc3RkOjppc19zYW1lPEV4cGVjdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgZGVjbHR5cGUoRXhwbGljaXRUYWdnZWRVbmlmb3JtUmV0
dXJuVDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVy
bmFsOjpJbnRlcnZhbE9wZW5PcGVuVCwgQSwgQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRXhwZWN0PigwKSk+LAorICAgICAgICAgIHN0ZDo6aXNfc2FtZTxFeHBlY3QsCisgICAg
ICAgICAgICAgICAgICAgICAgIGRlY2x0eXBlKEV4cGxpY2l0VGFnZ2VkVW5pZm9ybVJldHVyblQ8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6
SW50ZXJ2YWxPcGVuT3BlblQsIEIsIEEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEV4cGVjdD4oMCkpPj46OnZhbHVlLAorICAgICAgIiIpOworfQorCitURVNUX0YoUmFuZG9tRGlz
dHJpYnV0aW9uc1Rlc3QsIFVuaWZvcm1UeXBlSW5mZXJlbmNlKSB7CisgIC8vIEluZmVycyBjb21t
b24gdHlwZXMuCisgIENoZWNrQXJnc0luZmVyVHlwZTx1aW50MTZfdCwgdWludDE2X3QsIHVpbnQx
Nl90PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJf
dD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3Q+
KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQxNl90LCBpbnQxNl90LCBpbnQxNl90PigpOwor
ICBDaGVja0FyZ3NJbmZlclR5cGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4oKTsKKyAgQ2hl
Y2tBcmdzSW5mZXJUeXBlPGludDY0X3QsIGludDY0X3QsIGludDY0X3Q+KCk7CisgIENoZWNrQXJn
c0luZmVyVHlwZTxmbG9hdCwgZmxvYXQsIGZsb2F0PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8
ZG91YmxlLCBkb3VibGUsIGRvdWJsZT4oKTsKKworICAvLyBFeHBsaWNpdGx5LXNwZWNpZmllZCBy
ZXR1cm4tdmFsdWVzIG92ZXJyaWRlIGluZmVyZW5jZXMuCisgIENoZWNrQXJnc1JldHVybkV4cGVj
dGVkVHlwZTxpbnQxNl90LCBpbnQxNl90LCBpbnQzMl90PigpOworICBDaGVja0FyZ3NSZXR1cm5F
eHBlY3RlZFR5cGU8dWludDE2X3QsIHVpbnQxNl90LCBpbnQzMl90PigpOworICBDaGVja0FyZ3NS
ZXR1cm5FeHBlY3RlZFR5cGU8aW50MTZfdCwgaW50MTZfdCwgaW50NjRfdD4oKTsKKyAgQ2hlY2tB
cmdzUmV0dXJuRXhwZWN0ZWRUeXBlPGludDE2X3QsIGludDMyX3QsIGludDY0X3Q+KCk7CisgIENo
ZWNrQXJnc1JldHVybkV4cGVjdGVkVHlwZTxpbnQxNl90LCBpbnQzMl90LCBkb3VibGU+KCk7Cisg
IENoZWNrQXJnc1JldHVybkV4cGVjdGVkVHlwZTxmbG9hdCwgZmxvYXQsIGRvdWJsZT4oKTsKKyAg
Q2hlY2tBcmdzUmV0dXJuRXhwZWN0ZWRUeXBlPGludCwgaW50LCBpbnQxNl90PigpOworCisgIC8v
IFByb3Blcmx5IHByb21vdGVzIHVpbnQxNl90LgorICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDE2
X3QsIHVpbnQzMl90LCB1aW50MzJfdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQxNl90
LCB1aW50NjRfdCwgdWludDY0X3Q+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTx1aW50MTZfdCwg
aW50MzJfdCwgaW50MzJfdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQxNl90LCBpbnQ2
NF90LCBpbnQ2NF90PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDE2X3QsIGZsb2F0LCBm
bG9hdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQxNl90LCBkb3VibGUsIGRvdWJsZT4o
KTsKKworICAvLyBQcm9wZXJseSBwcm9tb3RlcyBpbnQxNl90LgorICBDaGVja0FyZ3NJbmZlclR5
cGU8aW50MTZfdCwgaW50MzJfdCwgaW50MzJfdD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGlu
dDE2X3QsIGludDY0X3QsIGludDY0X3Q+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQxNl90
LCBmbG9hdCwgZmxvYXQ+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQxNl90LCBkb3VibGUs
IGRvdWJsZT4oKTsKKworICAvLyBJbnZhbGlkICh1KWludDE2X3QtcGFpcmluZ3MgZG8gbm90IGNv
bXBpbGUuCisgIC8vIFNlZSAiQ2hlY2tBcmdzSW5mZXJUeXBlIiBjb21tZW50cyBhYm92ZSwgZm9y
IGhvdyB0aGlzIGlzIGFjaGlldmVkLgorICBDaGVja0FyZ3NJbmZlclR5cGU8dWludDE2X3QsIGlu
dDE2X3QsIEludmFsaWQ+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQxNl90LCB1aW50MzJf
dCwgSW52YWxpZD4oKTsKKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPGludDE2X3QsIHVpbnQ2NF90LCBJ
bnZhbGlkPigpOworCisgIC8vIFByb3Blcmx5IHByb21vdGVzIHVpbnQzMl90LgorICBDaGVja0Fy
Z3NJbmZlclR5cGU8dWludDMyX3QsIHVpbnQ2NF90LCB1aW50NjRfdD4oKTsKKyAgQ2hlY2tBcmdz
SW5mZXJUeXBlPHVpbnQzMl90LCBpbnQ2NF90LCBpbnQ2NF90PigpOworICBDaGVja0FyZ3NJbmZl
clR5cGU8dWludDMyX3QsIGRvdWJsZSwgZG91YmxlPigpOworCisgIC8vIFByb3Blcmx5IHByb21v
dGVzIGludDMyX3QuCisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQzMl90LCBpbnQ2NF90LCBpbnQ2
NF90PigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8aW50MzJfdCwgZG91YmxlLCBkb3VibGU+KCk7
CisKKyAgLy8gSW52YWxpZCAodSlpbnQzMl90LXBhaXJpbmdzIGRvIG5vdCBjb21waWxlLgorICBD
aGVja0FyZ3NJbmZlclR5cGU8dWludDMyX3QsIGludDMyX3QsIEludmFsaWQ+KCk7CisgIENoZWNr
QXJnc0luZmVyVHlwZTxpbnQzMl90LCB1aW50NjRfdCwgSW52YWxpZD4oKTsKKyAgQ2hlY2tBcmdz
SW5mZXJUeXBlPGludDMyX3QsIGZsb2F0LCBJbnZhbGlkPigpOworICBDaGVja0FyZ3NJbmZlclR5
cGU8dWludDMyX3QsIGZsb2F0LCBJbnZhbGlkPigpOworCisgIC8vIEludmFsaWQgKHUpaW50NjRf
dC1wYWlyaW5ncyBkbyBub3QgY29tcGlsZS4KKyAgQ2hlY2tBcmdzSW5mZXJUeXBlPHVpbnQ2NF90
LCBpbnQ2NF90LCBJbnZhbGlkPigpOworICBDaGVja0FyZ3NJbmZlclR5cGU8aW50NjRfdCwgZmxv
YXQsIEludmFsaWQ+KCk7CisgIENoZWNrQXJnc0luZmVyVHlwZTxpbnQ2NF90LCBkb3VibGUsIElu
dmFsaWQ+KCk7CisKKyAgLy8gUHJvcGVybHkgcHJvbW90ZXMgZmxvYXQuCisgIENoZWNrQXJnc0lu
ZmVyVHlwZTxmbG9hdCwgZG91YmxlLCBkb3VibGU+KCk7CisKKyAgLy8gRXhhbXBsZXMuCisgIGFi
c2w6Okluc2VjdXJlQml0R2VuIGdlbjsKKyAgRVhQRUNUX05FKDEsIGFic2w6OlVuaWZvcm0oZ2Vu
LCBzdGF0aWNfY2FzdDx1aW50MTZfdD4oMCksIDEuMGYpKTsKKyAgRVhQRUNUX05FKDEsIGFic2w6
OlVuaWZvcm0oZ2VuLCAwLCAxLjApKTsKKyAgRVhQRUNUX05FKDEsIGFic2w6OlVuaWZvcm0oYWJz
bDo6SW50ZXJ2YWxPcGVuT3BlbiwgZ2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1aW50MTZfdD4oMCksIDEuMGYpKTsKKyAgRVhQRUNUX05FKDEsIGFic2w6OlVu
aWZvcm0oYWJzbDo6SW50ZXJ2YWxPcGVuT3BlbiwgZ2VuLCAwLCAxLjApKTsKKyAgRVhQRUNUX05F
KDEsIGFic2w6OlVuaWZvcm0oYWJzbDo6SW50ZXJ2YWxPcGVuT3BlbiwgZ2VuLCAtMSwgMS4wKSk7
CisgIEVYUEVDVF9ORSgxLCBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oYWJzbDo6SW50ZXJ2YWxPcGVu
T3BlbiwgZ2VuLCAtMSwgMSkpOworICBFWFBFQ1RfTkUoMSwgYWJzbDo6VW5pZm9ybTxmbG9hdD4o
YWJzbDo6SW50ZXJ2YWxPcGVuT3BlbiwgZ2VuLCAwLCAxKSk7CisgIEVYUEVDVF9ORSgxLCBhYnNs
OjpVbmlmb3JtPGZsb2F0PihnZW4sIDAsIDEpKTsKK30KKworVEVTVF9GKFJhbmRvbURpc3RyaWJ1
dGlvbnNUZXN0LCBVbmlmb3JtTm9Cb3VuZHMpIHsKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2Vu
OworCisgIGFic2w6OlVuaWZvcm08dWludDhfdD4oZ2VuKTsKKyAgYWJzbDo6VW5pZm9ybTx1aW50
MTZfdD4oZ2VuKTsKKyAgYWJzbDo6VW5pZm9ybTx1aW50MzJfdD4oZ2VuKTsKKyAgYWJzbDo6VW5p
Zm9ybTx1aW50NjRfdD4oZ2VuKTsKK30KKworLy8gVE9ETyhsYXIpOiBWYWxpZGF0ZSBwcm9wZXJ0
aWVzIG9mIG5vbi1kZWZhdWx0IGludGVydmFsLXNlbWFudGljcy4KK1RFU1RfRihSYW5kb21EaXN0
cmlidXRpb25zVGVzdCwgVW5pZm9ybVJlYWwpIHsKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiB2YWx1
ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdlbjsKKyAgZm9yIChpbnQgaSA9
IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVzW2ldID0gYWJzbDo6VW5pZm9ybShnZW4s
IDAsIDEuMCk7CisgIH0KKworICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICBFWFBF
Q1RfTkVBUigwLjUsIG1vbWVudHMubWVhbiwgMC4wMik7CisgIEVYUEVDVF9ORUFSKDEgLyAxMi4w
LCBtb21lbnRzLnZhcmlhbmNlLCAwLjAyKTsKKyAgRVhQRUNUX05FQVIoMC4wLCBtb21lbnRzLnNr
ZXduZXNzLCAwLjAyKTsKKyAgRVhQRUNUX05FQVIoOSAvIDUuMCwgbW9tZW50cy5rdXJ0b3Npcywg
MC4wMik7Cit9CisKK1RFU1RfRihSYW5kb21EaXN0cmlidXRpb25zVGVzdCwgVW5pZm9ybUludCkg
eworICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHZhbHVlcyhrU2l6ZSk7CisKKyAgYWJzbDo6SW5zZWN1
cmVCaXRHZW4gZ2VuOworICBmb3IgKGludCBpID0gMDsgaSA8IGtTaXplOyBpKyspIHsKKyAgICBj
b25zdCBpbnQ2NF90IGtNYXggPSAxMDAwMDAwMDAwMDAwbGw7CisgICAgaW50NjRfdCBqID0gYWJz
bDo6VW5pZm9ybShhYnNsOjpJbnRlcnZhbENsb3NlZENsb3NlZCwgZ2VuLCAwLCBrTWF4KTsKKyAg
ICAvLyBjb252ZXJ0IHRvIGRvdWJsZS4KKyAgICB2YWx1ZXNbaV0gPSBzdGF0aWNfY2FzdDxkb3Vi
bGU+KGopIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihrTWF4KTsKKyAgfQorCisgIGNvbnN0IGF1dG8g
bW9tZW50cyA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNvbXB1dGVEaXN0cmlidXRp
b25Nb21lbnRzKHZhbHVlcyk7CisgIEVYUEVDVF9ORUFSKDAuNSwgbW9tZW50cy5tZWFuLCAwLjAy
KTsKKyAgRVhQRUNUX05FQVIoMSAvIDEyLjAsIG1vbWVudHMudmFyaWFuY2UsIDAuMDIpOworICBF
WFBFQ1RfTkVBUigwLjAsIG1vbWVudHMuc2tld25lc3MsIDAuMDIpOworICBFWFBFQ1RfTkVBUig5
IC8gNS4wLCBtb21lbnRzLmt1cnRvc2lzLCAwLjAyKTsKKworICAvKgorICAvLyBOT1RFOiBUaGVz
ZSBhcmUgbm90IHN1cHBvcnRlZCBieSBhYnNsOjpVbmlmb3JtLCB3aGljaCBpcyBzcGVjaWFsaXpl
ZAorICAvLyBvbiBpbnRlZ2VyIGFuZCByZWFsIHZhbHVlZCB0eXBlcy4KKworICBlbnVtIEUgeyBF
MCwgRTEgfTsgICAgLy8gZW51bQorICBlbnVtIFMgOiBpbnQgeyBTMCwgUzEgfTsgICAgLy8gc2ln
bmVkIGVudW0KKyAgZW51bSBVIDogdW5zaWduZWQgaW50IHsgVTAsIFUxIH07ICAvLyB1bnNpZ25l
ZCBlbnVtCisKKyAgYWJzbDo6VW5pZm9ybShnZW4sIEUwLCBFMSk7CisgIGFic2w6OlVuaWZvcm0o
Z2VuLCBTMCwgUzEpOworICBhYnNsOjpVbmlmb3JtKGdlbiwgVTAsIFUxKTsKKyAgKi8KK30KKwor
VEVTVF9GKFJhbmRvbURpc3RyaWJ1dGlvbnNUZXN0LCBFeHBvbmVudGlhbCkgeworICBzdGQ6OnZl
Y3Rvcjxkb3VibGU+IHZhbHVlcyhrU2l6ZSk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2Vu
OworICBmb3IgKGludCBpID0gMDsgaSA8IGtTaXplOyBpKyspIHsKKyAgICB2YWx1ZXNbaV0gPSBh
YnNsOjpFeHBvbmVudGlhbDxkb3VibGU+KGdlbik7CisgIH0KKworICBjb25zdCBhdXRvIG1vbWVu
dHMgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9t
ZW50cyh2YWx1ZXMpOworICBFWFBFQ1RfTkVBUigxLjAsIG1vbWVudHMubWVhbiwgMC4wMik7Cisg
IEVYUEVDVF9ORUFSKDEuMCwgbW9tZW50cy52YXJpYW5jZSwgMC4wMjUpOworICBFWFBFQ1RfTkVB
UigyLjAsIG1vbWVudHMuc2tld25lc3MsIDAuMSk7CisgIEVYUEVDVF9MVCg1LjAsIG1vbWVudHMu
a3VydG9zaXMpOworfQorCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0aW9uc1Rlc3QsIFBvaXNzb25E
ZWZhdWx0KSB7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdmFsdWVzKGtTaXplKTsKKworICBhYnNs
OjpJbnNlY3VyZUJpdEdlbiBnZW47CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1NpemU7IGkrKykg
eworICAgIHZhbHVlc1tpXSA9IGFic2w6OlBvaXNzb248aW50NjRfdD4oZ2VuKTsKKyAgfQorCisg
IGNvbnN0IGF1dG8gbW9tZW50cyA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNvbXB1
dGVEaXN0cmlidXRpb25Nb21lbnRzKHZhbHVlcyk7CisgIEVYUEVDVF9ORUFSKDEuMCwgbW9tZW50
cy5tZWFuLCAwLjAyKTsKKyAgRVhQRUNUX05FQVIoMS4wLCBtb21lbnRzLnZhcmlhbmNlLCAwLjAy
KTsKKyAgRVhQRUNUX05FQVIoMS4wLCBtb21lbnRzLnNrZXduZXNzLCAwLjAyNSk7CisgIEVYUEVD
VF9MVCgyLjAsIG1vbWVudHMua3VydG9zaXMpOworfQorCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0
aW9uc1Rlc3QsIFBvaXNzb25MYXJnZSkgeworICBjb25zdGV4cHIgZG91YmxlIGtNZWFuID0gMTAw
MDAwMDAwLjA7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdmFsdWVzKGtTaXplKTsKKworICBhYnNs
OjpJbnNlY3VyZUJpdEdlbiBnZW47CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1NpemU7IGkrKykg
eworICAgIHZhbHVlc1tpXSA9IGFic2w6OlBvaXNzb248aW50NjRfdD4oZ2VuLCBrTWVhbik7Cisg
IH0KKworICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICBFWFBFQ1RfTkVBUihrTWVh
biwgbW9tZW50cy5tZWFuLCBrTWVhbiAqIDAuMDE1KTsKKyAgRVhQRUNUX05FQVIoa01lYW4sIG1v
bWVudHMudmFyaWFuY2UsIGtNZWFuICogMC4wMTUpOworICBFWFBFQ1RfTkVBUihzdGQ6OnNxcnQo
a01lYW4pLCBtb21lbnRzLnNrZXduZXNzLCBrTWVhbiAqIDAuMDIpOworICBFWFBFQ1RfTFQoMi4w
LCBtb21lbnRzLmt1cnRvc2lzKTsKK30KKworVEVTVF9GKFJhbmRvbURpc3RyaWJ1dGlvbnNUZXN0
LCBCZXJub3VsbGkpIHsKKyAgY29uc3RleHByIGRvdWJsZSBrUCA9IDAuNTE1MTUxNTE1MTsKKyAg
c3RkOjp2ZWN0b3I8ZG91YmxlPiB2YWx1ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJlQml0
R2VuIGdlbjsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVz
W2ldID0gYWJzbDo6QmVybm91bGxpKGdlbiwga1ApOworICB9CisKKyAgY29uc3QgYXV0byBtb21l
bnRzID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1v
bWVudHModmFsdWVzKTsKKyAgRVhQRUNUX05FQVIoa1AsIG1vbWVudHMubWVhbiwgMC4wMSk7Cit9
CisKK1RFU1RfRihSYW5kb21EaXN0cmlidXRpb25zVGVzdCwgQmV0YSkgeworICBjb25zdGV4cHIg
ZG91YmxlIGtBbHBoYSA9IDIuMDsKKyAgY29uc3RleHByIGRvdWJsZSBrQmV0YSA9IDMuMDsKKyAg
c3RkOjp2ZWN0b3I8ZG91YmxlPiB2YWx1ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJlQml0
R2VuIGdlbjsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVz
W2ldID0gYWJzbDo6QmV0YShnZW4sIGtBbHBoYSwga0JldGEpOworICB9CisKKyAgY29uc3QgYXV0
byBtb21lbnRzID0KKyAgICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1
dGlvbk1vbWVudHModmFsdWVzKTsKKyAgRVhQRUNUX05FQVIoMC40LCBtb21lbnRzLm1lYW4sIDAu
MDEpOworfQorCitURVNUX0YoUmFuZG9tRGlzdHJpYnV0aW9uc1Rlc3QsIFppcGYpIHsKKyAgc3Rk
Ojp2ZWN0b3I8ZG91YmxlPiB2YWx1ZXMoa1NpemUpOworCisgIGFic2w6Okluc2VjdXJlQml0R2Vu
IGdlbjsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrU2l6ZTsgaSsrKSB7CisgICAgdmFsdWVzW2ld
ID0gYWJzbDo6WmlwZjxpbnQ2NF90PihnZW4sIDEwMCk7CisgIH0KKworICAvLyBUaGUgbWVhbiBv
ZiBhIHppcGYgZGlzdHJpYnV0aW9uIGlzOiBIKE4sIHMtMSkgLyBIKE4scykuCisgIC8vIEdpdmVu
IHRoZSBwYXJhbWV0ZXIgdiA9IDEsIHRoaXMgZ2l2ZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbjoK
KyAgLy8gKEhuKDEwMCwgMSkgLSBIbigxLDEpKSAvIChIbigxMDAsMikgLSBIbigxLDIpKSA9IDYu
NTk0NAorICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICBFWFBFQ1RfTkVBUig2LjU5
NDQsIG1vbWVudHMubWVhbiwgMjAwMCkgPDwgbW9tZW50czsKK30KKworVEVTVF9GKFJhbmRvbURp
c3RyaWJ1dGlvbnNUZXN0LCBHYXVzc2lhbikgeworICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHZhbHVl
cyhrU2l6ZSk7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBmb3IgKGludCBpID0g
MDsgaSA8IGtTaXplOyBpKyspIHsKKyAgICB2YWx1ZXNbaV0gPSBhYnNsOjpHYXVzc2lhbjxkb3Vi
bGU+KGdlbik7CisgIH0KKworICBjb25zdCBhdXRvIG1vbWVudHMgPQorICAgICAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyh2YWx1ZXMpOworICBFWFBF
Q1RfTkVBUigwLjAsIG1vbWVudHMubWVhbiwgMC4wMik7CisgIEVYUEVDVF9ORUFSKDEuMCwgbW9t
ZW50cy52YXJpYW5jZSwgMC4wNCk7CisgIEVYUEVDVF9ORUFSKDAsIG1vbWVudHMuc2tld25lc3Ms
IDAuMik7CisgIEVYUEVDVF9ORUFSKDMuMCwgbW9tZW50cy5rdXJ0b3NpcywgMC41KTsKK30KKwor
VEVTVF9GKFJhbmRvbURpc3RyaWJ1dGlvbnNUZXN0LCBMb2dVbmlmb3JtKSB7CisgIHN0ZDo6dmVj
dG9yPGRvdWJsZT4gdmFsdWVzKGtTaXplKTsKKworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47
CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1NpemU7IGkrKykgeworICAgIHZhbHVlc1tpXSA9IGFi
c2w6OkxvZ1VuaWZvcm08aW50NjRfdD4oZ2VuLCAwLCAoMSA8PCAxMCkgLSAxKTsKKyAgfQorCisg
IC8vIFRoZSBtZWFuIGlzIHRoZSBzdW0gb2YgdGhlIGZyYWN0aW9uYWwgbWVhbnMgb2YgdGhlIHVu
aWZvcm0gZGlzdHJpYnV0aW9uczoKKyAgLy8gWzAuLjBdWzEuLjFdWzIuLjNdWzQuLjddWzguLjE1
XVsxNi4uMzFdWzMyLi42M10KKyAgLy8gWzY0Li4xMjddWzEyOC4uMjU1XVsyNTYuLjUxMV1bNTEy
Li4xMDIzXQorICBjb25zdCBkb3VibGUgbWVhbiA9ICgwICsgMSArIDEgKyAyICsgMyArIDQgKyA3
ICsgOCArIDE1ICsgMTYgKyAzMSArIDMyICsgNjMgKworICAgICAgICAgICAgICAgICAgICAgICA2
NCArIDEyNyArIDEyOCArIDI1NSArIDI1NiArIDUxMSArIDUxMiArIDEwMjMpIC8KKyAgICAgICAg
ICAgICAgICAgICAgICAoMi4wICogMTEuMCk7CisKKyAgY29uc3QgYXV0byBtb21lbnRzID0KKyAg
ICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1vbWVudHModmFs
dWVzKTsKKyAgRVhQRUNUX05FQVIobWVhbiwgbW9tZW50cy5tZWFuLCAyKSA8PCBtb21lbnRzOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9leGFtcGxlc190
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2V4YW1wbGVzX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRjYjUx
NDZmM2QwMzY1NTRmM2MxMzM1OThhMjBjNTRhOWFjNzAyNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9leGFtcGxlc190ZXN0LmNjCkBAIC0wLDAgKzEsOTkgQEAKKy8vIENvcHlyaWdo
dCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSA8Y2ludHR5cGVzPgorI2lu
Y2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgi
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBVc2UoVCkge30KKworVEVTVChFeGFtcGxl
cywgQmFzaWMpIHsKKyAgYWJzbDo6Qml0R2VuIGdlbjsKKyAgc3RkOjp2ZWN0b3I8aW50PiBvYmpz
ID0gezEwLCAyMCwgMzAsIDQwLCA1MH07CisKKyAgLy8gQ2hvb3NlIGFuIGVsZW1lbnQgZnJvbSBh
IHNldC4KKyAgYXV0byBlbGVtID0gb2Jqc1thYnNsOjpVbmlmb3JtKGdlbiwgMHUsIG9ianMuc2l6
ZSgpKV07CisgIFVzZShlbGVtKTsKKworICAvLyBHZW5lcmF0ZSBhIHVuaWZvcm0gdmFsdWUgYmV0
d2VlbiAxIGFuZCA2LgorICBhdXRvIGRpY2Vfcm9sbCA9IGFic2w6OlVuaWZvcm08aW50PihhYnNs
OjpJbnRlcnZhbENsb3NlZENsb3NlZCwgZ2VuLCAxLCA2KTsKKyAgVXNlKGRpY2Vfcm9sbCk7CisK
KyAgLy8gR2VuZXJhdGUgYSByYW5kb20gYnl0ZS4KKyAgYXV0byBieXRlID0gYWJzbDo6VW5pZm9y
bTx1aW50OF90PihnZW4pOworICBVc2UoYnl0ZSk7CisKKyAgLy8gR2VuZXJhdGUgYSBmcmFjdGlv
bmFsIHZhbHVlIGZyb20gWzBmLCAxZikuCisgIGF1dG8gZnJhY3Rpb24gPSBhYnNsOjpVbmlmb3Jt
PGZsb2F0PihnZW4sIDAsIDEpOworICBVc2UoZnJhY3Rpb24pOworCisgIC8vIFRvc3MgYSBmYWly
IGNvaW47IDUwLzUwIHByb2JhYmlsaXR5LgorICBib29sIGNvaW5fdG9zcyA9IGFic2w6OkJlcm5v
dWxsaShnZW4sIDAuNSk7CisgIFVzZShjb2luX3Rvc3MpOworCisgIC8vIFNlbGVjdCBhIGZpbGUg
c2l6ZSBiZXR3ZWVuIDFrIGFuZCAxME1CLCBiaWFzZWQgdG93YXJkcyBzbWFsbGVyIGZpbGUgc2l6
ZXMuCisgIGF1dG8gZmlsZV9zaXplID0gYWJzbDo6TG9nVW5pZm9ybTxzaXplX3Q+KGdlbiwgMTAw
MCwgMTAgKiAxMDAwICogMTAwMCk7CisgIFVzZShmaWxlX3NpemUpOworCisgIC8vIFJhbmRvbWl6
ZSAoc2h1ZmZsZSkgYSBjb2xsZWN0aW9uLgorICBzdGQ6OnNodWZmbGUoc3RkOjpiZWdpbihvYmpz
KSwgc3RkOjplbmQob2JqcyksIGdlbik7Cit9CisKK1RFU1QoRXhhbXBsZXMsIENyZWF0ZWluZ0Nv
cnJlbGF0ZWRWYXJpYXRlU2VxdWVuY2VzKSB7CisgIC8vIFVuZXhwZWN0ZWQgUFJORyBjb3JyZWxh
dGlvbiBpcyBvZnRlbiBhIHNvdXJjZSBvZiBidWdzLAorICAvLyBzbyB3aGVuIHVzaW5nIGFic2w6
OkJpdEdlbiBpdCBtdXN0IGJlIGFuIGludGVudGlvbmFsIGNob2ljZS4KKyAgLy8gTk9URTogQWxs
IG9mIHRoZXNlIG9ubHkgZXhoaWJpdCBwcm9jZXNzLWxldmVsIHN0YWJpbGl0eS4KKworICAvLyBD
cmVhdGUgYSBjb3JyZWxhdGVkIHNlcXVlbmNlIGZyb20gc3lzdGVtIGVudHJvcHkuCisgIHsKKyAg
ICBhdXRvIG15X3NlZWQgPSBhYnNsOjpNYWtlU2VlZFNlcSgpOworCisgICAgYWJzbDo6Qml0R2Vu
IGdlbl8xKG15X3NlZWQpOworICAgIGFic2w6OkJpdEdlbiBnZW5fMihteV9zZWVkKTsgIC8vIFBy
b2R1Y2VzIHNhbWUgdmFyaWF0ZXMgYXMgZ2VuXzEuCisKKyAgICBFWFBFQ1RfRVEoYWJzbDo6QmVy
bm91bGxpKGdlbl8xLCAwLjUpLCBhYnNsOjpCZXJub3VsbGkoZ2VuXzIsIDAuNSkpOworICAgIEVY
UEVDVF9FUShhYnNsOjpVbmlmb3JtPHVpbnQzMl90PihnZW5fMSksIGFic2w6OlVuaWZvcm08dWlu
dDMyX3Q+KGdlbl8yKSk7CisgIH0KKworICAvLyBDcmVhdGUgYSBjb3JyZWxhdGVkIHNlcXVlbmNl
IGZyb20gYW4gZXhpc3RpbmcgVVJCRy4KKyAgeworICAgIGFic2w6OkJpdEdlbiBnZW47CisKKyAg
ICBhdXRvIG15X3NlZWQgPSBhYnNsOjpDcmVhdGVTZWVkU2VxRnJvbSgmZ2VuKTsKKyAgICBhYnNs
OjpCaXRHZW4gZ2VuXzEobXlfc2VlZCk7CisgICAgYWJzbDo6Qml0R2VuIGdlbl8yKG15X3NlZWQp
OworCisgICAgRVhQRUNUX0VRKGFic2w6OkJlcm5vdWxsaShnZW5fMSwgMC41KSwgYWJzbDo6QmVy
bm91bGxpKGdlbl8yLCAwLjUpKTsKKyAgICBFWFBFQ1RfRVEoYWJzbDo6VW5pZm9ybTx1aW50MzJf
dD4oZ2VuXzEpLCBhYnNsOjpVbmlmb3JtPHVpbnQzMl90PihnZW5fMikpOworICB9CisKKyAgLy8g
QW4gYWx0ZXJuYXRlIGNvbnN0cnVjdGlvbiB3aGljaCB1c2VzIHVzZXItc3VwcGxpZWQgZGF0YQor
ICAvLyBpbnN0ZWFkIG9mIGEgcmFuZG9tIHNlZWQuCisgIHsKKyAgICBjb25zdCBjaGFyIGtEYXRh
W10gPSAiQSBzaW1wbGUgc2VlZCBzdHJpbmciOworICAgIHN0ZDo6c2VlZF9zZXEgbXlfc2VlZChz
dGQ6OmJlZ2luKGtEYXRhKSwgc3RkOjplbmQoa0RhdGEpKTsKKworICAgIGFic2w6OkJpdEdlbiBn
ZW5fMShteV9zZWVkKTsKKyAgICBhYnNsOjpCaXRHZW4gZ2VuXzIobXlfc2VlZCk7CisKKyAgICBF
WFBFQ1RfRVEoYWJzbDo6QmVybm91bGxpKGdlbl8xLCAwLjUpLCBhYnNsOjpCZXJub3VsbGkoZ2Vu
XzIsIDAuNSkpOworICAgIEVYUEVDVF9FUShhYnNsOjpVbmlmb3JtPHVpbnQzMl90PihnZW5fMSks
IGFic2w6OlVuaWZvcm08dWludDMyX3Q+KGdlbl8yKSk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2V4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbi5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2V4
cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YWYxOTc1NzVjMTY2MWJmZDdl
ZmZjOWRjNWYwOWUxYWQzMjBkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZXhw
b25lbnRpYWxfZGlzdHJpYnV0aW9uLmgKQEAgLTAsMCArMSwxNTcgQEAKKy8vIENvcHlyaWdodCAy
MDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0VYUE9ORU5U
SUFMX0RJU1RSSUJVVElPTl9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9FWFBPTkVOVElBTF9ESVNU
UklCVVRJT05fSF8KKworI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8Y21hdGg+CisjaW5j
bHVkZSA8aXN0cmVhbT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25faW1wbC5oIgor
I2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzLmgiCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCIKKworbmFt
ZXNwYWNlIGFic2wgeworCisvLyBhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb246CisvLyBH
ZW5lcmF0ZXMgYSBudW1iZXIgY29uZm9ybWluZyB0byBhbiBleHBvbmVudGlhbCBkaXN0cmlidXRp
b24gYW5kIGlzCisvLyBlcXVpdmFsZW50IHRvIHRoZSBzdGFuZGFyZCBbcmFuZC5kaXN0LnBvaXMu
ZXhwXSBkaXN0cmlidXRpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGUgPSBkb3VibGU+
CitjbGFzcyBleHBvbmVudGlhbF9kaXN0cmlidXRpb24geworIHB1YmxpYzoKKyAgdXNpbmcgcmVz
dWx0X3R5cGUgPSBSZWFsVHlwZTsKKworICBjbGFzcyBwYXJhbV90eXBlIHsKKyAgIHB1YmxpYzoK
KyAgICB1c2luZyBkaXN0cmlidXRpb25fdHlwZSA9IGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjsK
KworICAgIGV4cGxpY2l0IHBhcmFtX3R5cGUocmVzdWx0X3R5cGUgbGFtYmRhID0gMSkgOiBsYW1i
ZGFfKGxhbWJkYSkgeworICAgICAgYXNzZXJ0KGxhbWJkYSA+IDApOworICAgICAgbmVnX2ludl9s
YW1iZGFfID0gLXJlc3VsdF90eXBlKDEpIC8gbGFtYmRhXzsKKyAgICB9CisKKyAgICByZXN1bHRf
dHlwZSBsYW1iZGEoKSBjb25zdCB7IHJldHVybiBsYW1iZGFfOyB9CisKKyAgICBmcmllbmQgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsK
KyAgICAgIHJldHVybiBhLmxhbWJkYV8gPT0gYi5sYW1iZGFfOworICAgIH0KKworICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYg
YikgeworICAgICAgcmV0dXJuICEoYSA9PSBiKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjsKKworICAgIHJlc3VsdF90eXBl
IGxhbWJkYV87CisgICAgcmVzdWx0X3R5cGUgbmVnX2ludl9sYW1iZGFfOworCisgICAgc3RhdGlj
X2Fzc2VydCgKKyAgICAgICAgc3RkOjppc19mbG9hdGluZ19wb2ludDxSZWFsVHlwZT46OnZhbHVl
LAorICAgICAgICAiQ2xhc3MtdGVtcGxhdGUgYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9u
PD4gbXVzdCBiZSBwYXJhbWV0ZXJpemVkICIKKyAgICAgICAgInVzaW5nIGEgZmxvYXRpbmctcG9p
bnQgdHlwZS4iKTsKKyAgfTsKKworICBleHBvbmVudGlhbF9kaXN0cmlidXRpb24oKSA6IGV4cG9u
ZW50aWFsX2Rpc3RyaWJ1dGlvbigxKSB7fQorCisgIGV4cGxpY2l0IGV4cG9uZW50aWFsX2Rpc3Ry
aWJ1dGlvbihyZXN1bHRfdHlwZSBsYW1iZGEpIDogcGFyYW1fKGxhbWJkYSkge30KKworICBleHBs
aWNpdCBleHBvbmVudGlhbF9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgcCkgOiBwYXJh
bV8ocCkge30KKworICB2b2lkIHJlc2V0KCkge30KKworICAvLyBHZW5lcmF0aW5nIGZ1bmN0aW9u
cworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShV
UkJHJiBnKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHJldHVybiAoKnRo
aXMpKGcsIHBhcmFtXyk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVz
dWx0X3R5cGUgb3BlcmF0b3IoKShVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNl
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBwKTsKKworICBw
YXJhbV90eXBlIHBhcmFtKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQgcGFyYW0o
Y29uc3QgcGFyYW1fdHlwZSYgcCkgeyBwYXJhbV8gPSBwOyB9CisKKyAgcmVzdWx0X3R5cGUobWlu
KSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgcmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsKKyAg
ICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46OmluZmluaXR5KCk7Cisg
IH0KKworICByZXN1bHRfdHlwZSBsYW1iZGEoKSBjb25zdCB7IHJldHVybiBwYXJhbV8ubGFtYmRh
KCk7IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cG9uZW50aWFsX2Rpc3Ry
aWJ1dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBvbmVudGlhbF9k
aXN0cmlidXRpb24mIGIpIHsKKyAgICByZXR1cm4gYS5wYXJhbV8gPT0gYi5wYXJhbV87CisgIH0K
KyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBvbmVudGlhbF9kaXN0cmlidXRpb24m
IGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwb25lbnRpYWxfZGlzdHJpYnV0
aW9uJiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fICE9IGIucGFyYW1fOworICB9CisKKyBwcml2
YXRlOgorICBwYXJhbV90eXBlIHBhcmFtXzsKKyAgcmFuZG9tX2ludGVybmFsOjpGYXN0VW5pZm9y
bUJpdHM8dWludDY0X3Q+IGZhc3RfdTY0XzsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZvbGxvdworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxUeXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0
eXBlbmFtZSBleHBvbmVudGlhbF9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpyZXN1bHRfdHlwZQor
ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjo6b3BlcmF0b3IoKSgKKyAgICBVUkJH
JiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBjb25zdCBwYXJhbV90eXBl
JiBwKSB7CisgIHVzaW5nIHJhbmRvbV9pbnRlcm5hbDo6TmVnYXRpdmVWYWx1ZVQ7CisgIGNvbnN0
IHJlc3VsdF90eXBlIHUgPSByYW5kb21faW50ZXJuYWw6OlJhbmRVNjRUb1JlYWw8CisgICAgICBy
ZXN1bHRfdHlwZT46OnRlbXBsYXRlIFZhbHVlPE5lZ2F0aXZlVmFsdWVULCBmYWxzZT4oZmFzdF91
NjRfKGcpKTsKKyAgLy8gbG9nMXAoLXgpIGlzIG1hdGhlbWF0aWNhbGx5IGVxdWl2YWxlbnQgdG8g
bG9nKDEgLSB4KSBidXQgaGFzIG1vcmUKKyAgLy8gYWNjdXJhY3kgZm9yIHggbmVhciB6ZXJvLgor
ICByZXR1cm4gcC5uZWdfaW52X2xhbWJkYV8gKiBzdGQ6OmxvZzFwKHUpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgUmVhbFR5cGU+Citz
dGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3RkOjpi
YXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVy
ZW5jZXMpCisgICAgY29uc3QgZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPiYgeCkg
eworICBhdXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjptYWtlX29zdHJlYW1fc3RhdGVfc2F2
ZXIob3MpOworICBvcy5wcmVjaXNpb24ocmFuZG9tX2ludGVybmFsOjpzdHJlYW1fcHJlY2lzaW9u
X2hlbHBlcjxSZWFsVHlwZT46OmtQcmVjaXNpb24pOworICBvcyA8PCB4LmxhbWJkYSgpOworICBy
ZXR1cm4gb3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBSZWFsVHlwZT4KK3N0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYg
b3BlcmF0b3I+PigKKyAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzLCAg
ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGV4cG9uZW50aWFsX2Rpc3RyaWJ1
dGlvbjxSZWFsVHlwZT4mIHgpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgIHVz
aW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPFJlYWxU
eXBlPjo6cmVzdWx0X3R5cGU7CisgIHVzaW5nIHBhcmFtX3R5cGUgPSB0eXBlbmFtZSBleHBvbmVu
dGlhbF9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpwYXJhbV90eXBlOworICByZXN1bHRfdHlwZSBs
YW1iZGE7CisKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9pc3RyZWFtX3N0
YXRlX3NhdmVyKGlzKTsKKyAgbGFtYmRhID0gcmFuZG9tX2ludGVybmFsOjpyZWFkX2Zsb2F0aW5n
X3BvaW50PHJlc3VsdF90eXBlPihpcyk7CisgIGlmICghaXMuZmFpbCgpKSB7CisgICAgeC5wYXJh
bShwYXJhbV90eXBlKGxhbWJkYSkpOworICB9CisgIHJldHVybiBpczsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9FWFBPTkVOVElBTF9ESVNUUklC
VVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9leHBvbmVudGlhbF9kaXN0cmlidXRp
b25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9leHBvbmVudGlhbF9kaXN0cmlidXRpb25fdGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42Zjg4NjVjMjU5OWZhYzc0ZTNhYmE2ZTJlYzk3MDc0ZmMzODE0ZmUyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2V4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbl90
ZXN0LmNjCkBAIC0wLDAgKzEsNDIyIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2V4cG9uZW50aWFsX2Rpc3RyaWJ1dGlv
bi5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUg
PGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNs
dWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5j
bHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHZlY3Rvcj4K
KworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNp
bmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFy
ZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0
aWwuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgiCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0
cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oIgorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJp
cC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OmtDaGlT
cXVhcmVkOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGU+CitjbGFzcyBFeHBvbmVudGlh
bERpc3RyaWJ1dGlvblR5cGVkVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3Vz
aW5nIFJlYWxUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8ZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3Vi
bGU+OworVFlQRURfVEVTVF9DQVNFKEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVHlwZWRUZXN0LCBS
ZWFsVHlwZXMpOworCitUWVBFRF9URVNUKEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVHlwZWRUZXN0
LCBTZXJpYWxpemVUZXN0KSB7CisgIHVzaW5nIHBhcmFtX3R5cGUgPQorICAgICAgdHlwZW5hbWUg
YWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7CisK
KyAgY29uc3QgVHlwZVBhcmFtIGtQYXJhbXNbXSA9IHsKKyAgICAgIC8vIENhc2VzIGFyb3VuZCAx
LgorICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8K
KyAgICAgIHN0ZDo6bmV4dGFmdGVyKFR5cGVQYXJhbSgxKSwgVHlwZVBhcmFtKDApKSwgIC8vIDEg
LSBlcHNpbG9uCisgICAgICBzdGQ6Om5leHRhZnRlcihUeXBlUGFyYW0oMSksIFR5cGVQYXJhbSgy
KSksICAvLyAxICsgZXBzaWxvbgorICAgICAgLy8gVHlwaWNhbCBjYXNlcy4KKyAgICAgIFR5cGVQ
YXJhbSgxZS04KSwgVHlwZVBhcmFtKDFlLTQpLCBUeXBlUGFyYW0oMSksIFR5cGVQYXJhbSgyKSwK
KyAgICAgIFR5cGVQYXJhbSgxZTQpLCBUeXBlUGFyYW0oMWU4KSwgVHlwZVBhcmFtKDFlMjApLCBU
eXBlUGFyYW0oMi41KSwKKyAgICAgIC8vIEJvdW5kYXJ5IGNhc2VzLgorICAgICAgc3RkOjpudW1l
cmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
VHlwZVBhcmFtPjo6ZXBzaWxvbigpLAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmlj
X2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJh
bSgxKSksICAgICAgICAgICAvLyBtaW4gKyBlcHNpbG9uCisgICAgICBzdGQ6Om51bWVyaWNfbGlt
aXRzPFR5cGVQYXJhbT46Om1pbigpLCAgLy8gc21hbGxlc3Qgbm9ybWFsCisgICAgICAvLyBUaGVy
ZSBhcmUgc29tZSBlcnJvcnMgZGVhbGluZyB3aXRoIGRlbm9ybXMgb24gYXBwbGUgcGxhdGZvcm1z
LgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjpkZW5vcm1fbWluKCksICAv
LyBzbWFsbGVzdCBkZW5vcm0KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6
bWluKCkgLyAyLCAgICAgLy8gZGVub3JtCisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVy
aWNfbGltaXRzPFR5cGVQYXJhbT46Om1pbigpLAorICAgICAgICAgICAgICAgICAgICAgVHlwZVBh
cmFtKDApKSwgIC8vIGRlbm9ybV9tYXgKKyAgfTsKKworICBjb25zdGV4cHIgaW50IGtDb3VudCA9
IDEwMDA7CisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdlbjsKKworICBmb3IgKGNvbnN0IFR5cGVQ
YXJhbSBsYW1iZGEgOiBrUGFyYW1zKSB7CisgICAgLy8gU29tZSB2YWx1ZXMgbWF5IGJlIGludmFs
aWQ7IHNraXAgdGhvc2UuCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGxhbWJkYSkpIGNvbnRpbnVl
OworICAgIEFCU0xfQVNTRVJUKGxhbWJkYSA+IDApOworCisgICAgY29uc3QgcGFyYW1fdHlwZSBw
YXJhbShsYW1iZGEpOworCisgICAgYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPFR5cGVQ
YXJhbT4gYmVmb3JlKGxhbWJkYSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5sYW1iZGEoKSwgcGFy
YW0ubGFtYmRhKCkpOworCisgICAgeworICAgICAgYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0
aW9uPFR5cGVQYXJhbT4gdmlhX3BhcmFtKHBhcmFtKTsKKyAgICAgIEVYUEVDVF9FUSh2aWFfcGFy
YW0sIGJlZm9yZSk7CisgICAgICBFWFBFQ1RfRVEodmlhX3BhcmFtLnBhcmFtKCksIGJlZm9yZS5w
YXJhbSgpKTsKKyAgICB9CisKKyAgICAvLyBTbW9rZSB0ZXN0LgorICAgIGF1dG8gc2FtcGxlX21p
biA9IGJlZm9yZS5tYXgoKTsKKyAgICBhdXRvIHNhbXBsZV9tYXggPSBiZWZvcmUubWluKCk7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQ291bnQ7IGkrKykgeworICAgICAgYXV0byBzYW1wbGUg
PSBiZWZvcmUoZ2VuKTsKKyAgICAgIEVYUEVDVF9HRShzYW1wbGUsIGJlZm9yZS5taW4oKSkgPDwg
YmVmb3JlOworICAgICAgRVhQRUNUX0xFKHNhbXBsZSwgYmVmb3JlLm1heCgpKSA8PCBiZWZvcmU7
CisgICAgICBpZiAoc2FtcGxlID4gc2FtcGxlX21heCkgc2FtcGxlX21heCA9IHNhbXBsZTsKKyAg
ICAgIGlmIChzYW1wbGUgPCBzYW1wbGVfbWluKSBzYW1wbGVfbWluID0gc2FtcGxlOworICAgIH0K
KyAgICBpZiAoIXN0ZDo6aXNfc2FtZTxUeXBlUGFyYW0sIGxvbmcgZG91YmxlPjo6dmFsdWUpIHsK
KyAgICAgIEFCU0xfSU5URVJOQUxfTE9HKElORk8sCisgICAgICAgICAgICAgICAgICAgICAgICBh
YnNsOjpTdHJGb3JtYXQoIlJhbmdlIHslZn06ICVmLCAlZiwgbGFtYmRhPSVmIiwgbGFtYmRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9taW4sIHNhbXBs
ZV9tYXgsIGxhbWJkYSkpOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAg
IHNzIDw8IGJlZm9yZTsKKworICAgIGlmICghc3RkOjppc2Zpbml0ZShsYW1iZGEpKSB7CisgICAg
ICAvLyBTdHJlYW1zIGRvIG5vdCBkZXNlcmlhbGl6ZSBpbmYvbmFuIGNvcnJlY3RseS4KKyAgICAg
IGNvbnRpbnVlOworICAgIH0KKyAgICAvLyBWYWxpZGF0ZSBzdHJlYW0gc2VyaWFsaXphdGlvbi4K
KyAgICBhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBhZnRlcigzNC41
NmYpOworCisgICAgRVhQRUNUX05FKGJlZm9yZS5sYW1iZGEoKSwgYWZ0ZXIubGFtYmRhKCkpOwor
ICAgIEVYUEVDVF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgICAgRVhQRUNU
X05FKGJlZm9yZSwgYWZ0ZXIpOworCisgICAgc3MgPj4gYWZ0ZXI7CisKKyNpZiBkZWZpbmVkKF9f
cG93ZXJwYzY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19f
KSB8fCBcCisgICAgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBDX18pCisgICAgaWYg
KHN0ZDo6aXNfc2FtZTxUeXBlUGFyYW0sIGxvbmcgZG91YmxlPjo6dmFsdWUpIHsKKyAgICAgIC8v
IFJvdW5kdHJpcHBpbmcgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIHJlcXVpcmVzIHN1ZmZpY2llbnQg
cHJlY2lzaW9uIHRvCisgICAgICAvLyByZWNvbnN0cnVjdCB0aGUgZXhhY3QgdmFsdWUuIEl0IHR1
cm5zIG91dCB0aGF0IGxvbmcgZG91YmxlIGhhcyBzb21lCisgICAgICAvLyBlcnJvcnMgZG9pbmcg
dGhpcyBvbiBwcGMsIHBhcnRpY3VsYXJseSBmb3IgdmFsdWVzCisgICAgICAvLyBuZWFyIHsxLjAg
Ky8tIGVwc2lsb259LgorICAgICAgaWYgKGxhbWJkYSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46Om1heCgpICYmCisgICAgICAgICAgbGFtYmRhID49IHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6bG93ZXN0KCkpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGRvdWJs
ZT4oYmVmb3JlLmxhbWJkYSgpKSwKKyAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJs
ZT4oYWZ0ZXIubGFtYmRhKCkpKQorICAgICAgICAgICAgPDwgc3Muc3RyKCk7CisgICAgICB9Cisg
ICAgICBjb250aW51ZTsKKyAgICB9CisjZW5kaWYKKworICAgIEVYUEVDVF9FUShiZWZvcmUubGFt
YmRhKCksIGFmdGVyLmxhbWJkYSgpKSAgLy8KKyAgICAgICAgPDwgc3Muc3RyKCkgPDwgIiAiICAg
ICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgIDw8IChzcy5nb29kKCkgPyAiZ29vZCAiIDog
IiIpICAgICAgICAgICAvLworICAgICAgICA8PCAoc3MuYmFkKCkgPyAiYmFkICIgOiAiIikgICAg
ICAgICAgICAgLy8KKyAgICAgICAgPDwgKHNzLmVvZigpID8gImVvZiAiIDogIiIpICAgICAgICAg
ICAgIC8vCisgICAgICAgIDw8IChzcy5mYWlsKCkgPyAiZmFpbCAiIDogIiIpOworICB9Cit9CisK
Ky8vIGh0dHA6Ly93d3cuaXRsLm5pc3QuZ292L2Rpdjg5OC9oYW5kYm9vay9lZGEvc2VjdGlvbjMv
ZWRhMzY2Ny5odG0KKworY2xhc3MgRXhwb25lbnRpYWxNb2RlbCB7CisgcHVibGljOgorICBleHBs
aWNpdCBFeHBvbmVudGlhbE1vZGVsKGRvdWJsZSBsYW1iZGEpCisgICAgICA6IGxhbWJkYV8obGFt
YmRhKSwgYmV0YV8oMS4wIC8gbGFtYmRhKSB7fQorCisgIGRvdWJsZSBsYW1iZGEoKSBjb25zdCB7
IHJldHVybiBsYW1iZGFfOyB9CisKKyAgZG91YmxlIG1lYW4oKSBjb25zdCB7IHJldHVybiBiZXRh
XzsgfQorICBkb3VibGUgdmFyaWFuY2UoKSBjb25zdCB7IHJldHVybiBiZXRhXyAqIGJldGFfOyB9
CisgIGRvdWJsZSBzdGRkZXYoKSBjb25zdCB7IHJldHVybiBzdGQ6OnNxcnQodmFyaWFuY2UoKSk7
IH0KKyAgZG91YmxlIHNrZXcoKSBjb25zdCB7IHJldHVybiAyOyB9CisgIGRvdWJsZSBrdXJ0b3Np
cygpIGNvbnN0IHsgcmV0dXJuIDYuMDsgfQorCisgIGRvdWJsZSBDREYoZG91YmxlIHgpIHsgcmV0
dXJuIDEuMCAtIHN0ZDo6ZXhwKC1sYW1iZGFfICogeCk7IH0KKworICAvLyBUaGUgaW52ZXJzZSBD
REYsIG9yIFBlcmNlbnRQb2ludCBmdW5jdGlvbiBvZiB0aGUgZGlzdHJpYnV0aW9uCisgIGRvdWJs
ZSBJbnZlcnNlQ0RGKGRvdWJsZSBwKSB7CisgICAgQUJTTF9BU1NFUlQocCA+PSAwLjApOworICAg
IEFCU0xfQVNTRVJUKHAgPCAxLjApOworICAgIHJldHVybiAtYmV0YV8gKiBzdGQ6OmxvZygxLjAg
LSBwKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3QgZG91YmxlIGxhbWJkYV87CisgIGNvbnN0
IGRvdWJsZSBiZXRhXzsKK307CisKK3N0cnVjdCBQYXJhbSB7CisgIGRvdWJsZSBsYW1iZGE7Cisg
IGRvdWJsZSBwX2ZhaWw7CisgIGludCB0cmlhbHM7Cit9OworCitjbGFzcyBFeHBvbmVudGlhbERp
c3RyaWJ1dGlvblRlc3RzIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08UGFyYW0+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBFeHBvbmVudGlhbE1v
ZGVsIHsKKyBwdWJsaWM6CisgIEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVGVzdHMoKSA6IEV4cG9u
ZW50aWFsTW9kZWwoR2V0UGFyYW0oKS5sYW1iZGEpIHt9CisKKyAgLy8gU2luZ2xlWlRlc3QgcHJv
dmlkZXMgYSBiYXNpYyB6LXNxdWFyZWQgdGVzdCBvZiB0aGUgbWVhbiB2cy4gZXhwZWN0ZWQKKyAg
Ly8gbWVhbiBmb3IgZGF0YSBnZW5lcmF0ZWQgYnkgdGhlIHBvaXNzb24gZGlzdHJpYnV0aW9uLgor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRD4KKyAgYm9vbCBTaW5nbGVaVGVzdChjb25zdCBkb3VibGUg
cCwgY29uc3Qgc2l6ZV90IHNhbXBsZXMpOworCisgIC8vIFNpbmdsZUNoaVNxdWFyZWRUZXN0IHBy
b3ZpZGVzIGEgYmFzaWMgY2hpLXNxdWFyZWQgdGVzdCBvZiB0aGUgbm9ybWFsCisgIC8vIGRpc3Ry
aWJ1dGlvbi4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEQ+CisgIGRvdWJsZSBTaW5nbGVDaGlTcXVh
cmVkVGVzdCgpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZ187Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRD4KK2Jvb2wgRXhwb25lbnRpYWxEaXN0cmlidXRpb25UZXN0czo6U2luZ2xl
WlRlc3QoY29uc3QgZG91YmxlIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzYW1wbGVzKSB7CisgIEQgZGlzKGxhbWJkYSgpKTsK
KworICBzdGQ6OnZlY3Rvcjxkb3VibGU+IGRhdGE7CisgIGRhdGEucmVzZXJ2ZShzYW1wbGVzKTsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW1wbGVzOyBpKyspIHsKKyAgICBjb25zdCBkb3Vi
bGUgeCA9IGRpcyhybmdfKTsKKyAgICBkYXRhLnB1c2hfYmFjayh4KTsKKyAgfQorCisgIGNvbnN0
IGF1dG8gbSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1vbWVu
dHMoZGF0YSk7CisgIGNvbnN0IGRvdWJsZSBtYXhfZXJyID0gYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpNYXhFcnJvclRvbGVyYW5jZShwKTsKKyAgY29uc3QgZG91YmxlIHogPSBhYnNsOjpyYW5kb21f
aW50ZXJuYWw6OlpTY29yZShtZWFuKCksIG0pOworICBjb25zdCBib29sIHBhc3MgPSBhYnNsOjpy
YW5kb21faW50ZXJuYWw6Ok5lYXIoInoiLCB6LCAwLjAsIG1heF9lcnIpOworCisgIGlmICghcGFz
cykgeworICAgIEFCU0xfSU5URVJOQUxfTE9HKAorICAgICAgICBJTkZPLCBhYnNsOjpTdHJGb3Jt
YXQoInA9JWYgbWF4X2Vycj0lZlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBs
YW1iZGE9JWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgbWVhbj0lZiB2cy4g
JWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3RkZGV2PSVmIHZzLiAlZlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBza2V3bmVzcz0lZiB2cy4gJWZcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIga3VydG9zaXM9JWYgdnMuICVmXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHo9JWYgdnMuIDAiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcCwgbWF4X2VyciwgbGFtYmRhKCksIG0ubWVhbiwgbWVhbigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzcXJ0KG0udmFyaWFuY2UpLCBzdGRk
ZXYoKSwgbS5za2V3bmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrZXcoKSwg
bS5rdXJ0b3Npcywga3VydG9zaXMoKSwgeikpOworICB9CisgIHJldHVybiBwYXNzOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRD4KK2RvdWJsZSBFeHBvbmVudGlhbERpc3RyaWJ1dGlvblRlc3Rz
OjpTaW5nbGVDaGlTcXVhcmVkVGVzdCgpIHsKKyAgY29uc3Qgc2l6ZV90IGtTYW1wbGVzID0gMTAw
MDA7CisgIGNvbnN0IGludCBrQnVja2V0cyA9IDUwOworCisgIC8vIFRoZSBJbnZlcnNlQ0RGIGlz
IHRoZSBwZXJjZW50IHBvaW50IGZ1bmN0aW9uIG9mIHRoZSBkaXN0cmlidXRpb24sIGFuZCBjYW4K
KyAgLy8gYmUgdXNlZCB0byBhc3NpZ24gYnVja2V0cyByb3VnaGx5IHVuaWZvcm1seS4KKyAgc3Rk
Ojp2ZWN0b3I8ZG91YmxlPiBjdXRvZmZzOworICBjb25zdCBkb3VibGUga0luYyA9IDEuMCAvIHN0
YXRpY19jYXN0PGRvdWJsZT4oa0J1Y2tldHMpOworICBmb3IgKGRvdWJsZSBwID0ga0luYzsgcCA8
IDEuMDsgcCArPSBrSW5jKSB7CisgICAgY3V0b2Zmcy5wdXNoX2JhY2soSW52ZXJzZUNERihwKSk7
CisgIH0KKyAgaWYgKGN1dG9mZnMuYmFjaygpICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6aW5maW5pdHkoKSkgeworICAgIGN1dG9mZnMucHVzaF9iYWNrKHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7CisgIH0KKworICBEIGRpcyhsYW1iZGEoKSk7CisKKyAg
c3RkOjp2ZWN0b3I8aW50MzJfdD4gY291bnRzKGN1dG9mZnMuc2l6ZSgpLCAwKTsKKyAgZm9yIChp
bnQgaiA9IDA7IGogPCBrU2FtcGxlczsgaisrKSB7CisgICAgY29uc3QgZG91YmxlIHggPSBkaXMo
cm5nXyk7CisgICAgYXV0byBpdCA9IHN0ZDo6dXBwZXJfYm91bmQoY3V0b2Zmcy5iZWdpbigpLCBj
dXRvZmZzLmVuZCgpLCB4KTsKKyAgICBjb3VudHNbc3RkOjpkaXN0YW5jZShjdXRvZmZzLmJlZ2lu
KCksIGl0KV0rKzsKKyAgfQorCisgIC8vIE51bGwtaHlwb3RoZXNpcyBpcyB0aGF0IHRoZSBkaXN0
cmlidXRpb24gaXMgZXhwb25lbnRpYWxseSBkaXN0cmlidXRlZAorICAvLyB3aXRoIHRoZSBwcm92
aWRlZCBsYW1iZGEgKG5vdCBlc3RpbWF0ZWQgZnJvbSB0aGUgZGF0YSkuCisgIGNvbnN0IGludCBk
b2YgPSBzdGF0aWNfY2FzdDxpbnQ+KGNvdW50cy5zaXplKCkpIC0gMTsKKworICAvLyBPdXIgdGhy
ZXNob2xkIGZvciBsb2dnaW5nIGlzIDEtaW4tNTAuCisgIGNvbnN0IGRvdWJsZSB0aHJlc2hvbGQg
PSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVZhbHVlKGRvZiwgMC45OCk7CisKKyAg
Y29uc3QgZG91YmxlIGV4cGVjdGVkID0KKyAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oa1NhbXBs
ZXMpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihjb3VudHMuc2l6ZSgpKTsKKworICBkb3VibGUgY2hp
X3NxdWFyZSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlV2l0aEV4cGVjdGVkKAor
ICAgICAgc3RkOjpiZWdpbihjb3VudHMpLCBzdGQ6OmVuZChjb3VudHMpLCBleHBlY3RlZCk7Cisg
IGRvdWJsZSBwID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVQVmFsdWUoY2hpX3Nx
dWFyZSwgZG9mKTsKKworICBpZiAoY2hpX3NxdWFyZSA+IHRocmVzaG9sZCkgeworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY3V0b2Zmcy5zaXplKCk7IGkrKykgeworICAgICAgQUJTTF9JTlRFUk5B
TF9MT0coCisgICAgICAgICAgSU5GTywgYWJzbDo6U3RyRm9ybWF0KCIlZCA6ICglZikgPSAlZCIs
IGksIGN1dG9mZnNbaV0sIGNvdW50c1tpXSkpOworICAgIH0KKworICAgIEFCU0xfSU5URVJOQUxf
TE9HKElORk8sCisgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6U3RyQ2F0KCJsYW1iZGEgIiwg
bGFtYmRhKCksICJcbiIsICAgICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiIGV4cGVjdGVkICIsIGV4cGVjdGVkLCAiXG4iLCAgLy8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga0NoaVNxdWFyZWQsICIgIiwgY2hpX3NxdWFyZSwgIiAoIiwgcCwgIilc
biIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDaGlTcXVhcmVkLCAiIEAg
MC45OCA9ICIsIHRocmVzaG9sZCkpOworICB9CisgIHJldHVybiBwOworfQorCitURVNUX1AoRXhw
b25lbnRpYWxEaXN0cmlidXRpb25UZXN0cywgWlRlc3QpIHsKKyAgY29uc3Qgc2l6ZV90IGtTYW1w
bGVzID0gMTAwMDA7CisgIGNvbnN0IGF1dG8mIHBhcmFtID0gR2V0UGFyYW0oKTsKKyAgY29uc3Qg
aW50IGV4cGVjdGVkX2ZhaWx1cmVzID0KKyAgICAgIHN0ZDo6bWF4KDEsIHN0YXRpY19jYXN0PGlu
dD4oc3RkOjpjZWlsKHBhcmFtLnRyaWFscyAqIHBhcmFtLnBfZmFpbCkpKTsKKyAgY29uc3QgZG91
YmxlIHAgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJlcXVpcmVkU3VjY2Vzc1Byb2JhYmlsaXR5
KAorICAgICAgcGFyYW0ucF9mYWlsLCBwYXJhbS50cmlhbHMpOworCisgIGludCBmYWlsdXJlcyA9
IDA7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW0udHJpYWxzOyBpKyspIHsKKyAgICBmYWls
dXJlcyArPSBTaW5nbGVaVGVzdDxhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248ZG91Ymxl
Pj4ocCwga1NhbXBsZXMpCisgICAgICAgICAgICAgICAgICAgID8gMAorICAgICAgICAgICAgICAg
ICAgICA6IDE7CisgIH0KKyAgRVhQRUNUX0xFKGZhaWx1cmVzLCBleHBlY3RlZF9mYWlsdXJlcyk7
Cit9CisKK1RFU1RfUChFeHBvbmVudGlhbERpc3RyaWJ1dGlvblRlc3RzLCBDaGlTcXVhcmVkVGVz
dCkgeworICBjb25zdCBpbnQga1RyaWFscyA9IDIwOworICBpbnQgZmFpbHVyZXMgPSAwOworCisg
IGZvciAoaW50IGkgPSAwOyBpIDwga1RyaWFsczsgaSsrKSB7CisgICAgZG91YmxlIHBfdmFsdWUg
PQorICAgICAgICBTaW5nbGVDaGlTcXVhcmVkVGVzdDxhYnNsOjpleHBvbmVudGlhbF9kaXN0cmli
dXRpb248ZG91YmxlPj4oKTsKKyAgICBpZiAocF92YWx1ZSA8IDAuMDA1KSB7ICAvLyAxLzIwMAor
ICAgICAgZmFpbHVyZXMrKzsKKyAgICB9CisgIH0KKworICAvLyBUaGVyZSBpcyBhIDAuMTAlIGNo
YW5jZSBvZiBwcm9kdWNpbmcgYXQgbGVhc3Qgb25lIGZhaWx1cmUsIHNvIHJhaXNlIHRoZQorICAv
LyBmYWlsdXJlIHRocmVzaG9sZCBoaWdoIGVub3VnaCB0byBhbGxvdyBmb3IgYSBmbGFrZSByYXRl
IDwgMTAsMDAwLgorICBFWFBFQ1RfTEUoZmFpbHVyZXMsIDQpOworfQorCitzdGQ6OnZlY3RvcjxQ
YXJhbT4gR2VuUGFyYW1zKCkgeworICByZXR1cm4geworICAgICAgUGFyYW17MS4wLCAwLjAyLCAx
MDB9LAorICAgICAgUGFyYW17Mi41LCAwLjAyLCAxMDB9LAorICAgICAgUGFyYW17MTAsIDAuMDIs
IDEwMH0sCisgICAgICAvLyBsYXJnZQorICAgICAgUGFyYW17MWU0LCAwLjAyLCAxMDB9LAorICAg
ICAgUGFyYW17MWU5LCAwLjAyLCAxMDB9LAorICAgICAgLy8gc21hbGwKKyAgICAgIFBhcmFtezAu
MSwgMC4wMiwgMTAwfSwKKyAgICAgIFBhcmFtezFlLTMsIDAuMDIsIDEwMH0sCisgICAgICBQYXJh
bXsxZS01LCAwLjAyLCAxMDB9LAorICB9OworfQorCitzdGQ6OnN0cmluZyBQYXJhbU5hbWUoY29u
c3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPFBhcmFtPiYgaW5mbykgeworICBjb25zdCBhdXRv
JiBwID0gaW5mby5wYXJhbTsKKyAgc3RkOjpzdHJpbmcgbmFtZSA9IGFic2w6OlN0ckNhdCgibGFt
YmRhXyIsIGFic2w6OlNpeERpZ2l0cyhwLmxhbWJkYSkpOworICByZXR1cm4gYWJzbDo6U3RyUmVw
bGFjZUFsbChuYW1lLCB7eyIrIiwgIl8ifSwgeyItIiwgIl8ifSwgeyIuIiwgIl8ifX0pOworfQor
CitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgsIEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uVGVzdHMs
CisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKEdlblBhcmFtcygp
KSwgUGFyYW1OYW1lKTsKKworLy8gTk9URTogYWJzbDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9u
IGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4KK1RFU1QoRXhwb25lbnRpYWxEaXN0cmli
dXRpb25UZXN0LCBTdGFiaWxpdHlUZXN0KSB7CisgIC8vIGFic2w6OmV4cG9uZW50aWFsX2Rpc3Ry
aWJ1dGlvbiBzdGFiaWxpdHkgcmVsaWVzIG9uIHN0ZDo6bG9nMXAgYW5kCisgIC8vIGFic2w6OnVu
aWZvcm1fcmVhbF9kaXN0cmlidXRpb24uCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVu
Y2VfdXJiZyB1cmJnKAorICAgICAgezB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHhGRkNFQTUwRkRC
MkY5NTNCdWxsLCAweEMzMzJEREVGQkU2QzVBQTV1bGwsCisgICAgICAgMHg2NTU4MjE4NTY4QUI5
NzAydWxsLCAweDJBRUY3REFENUI2RTJGODR1bGwsIDB4MTUyMUI2MjgyOTA3NjE3MHVsbCwKKyAg
ICAgICAweEVDREQ0Nzc1NjE5RjE1MTB1bGwsIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbCwgMHgwMzM0
RkUxRUFBMDM2M0NGdWxsLAorICAgICAgIDB4QjU3MzVDOTA0QzcwQTIzOXVsbCwgMHhENTlFOUUw
QkNCQUFERTE0dWxsLCAweEVFQ0M4NkJDNjA2MjJDQTd1bGx9KTsKKworICBzdGQ6OnZlY3Rvcjxp
bnQ+IG91dHB1dCgxNCk7CisKKyAgeworICAgIGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlv
bjxkb3VibGU+IGRpc3Q7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91dHB1dCksIHN0
ZDo6ZW5kKG91dHB1dCksCisgICAgICAgICAgICAgICAgICBbJl0geyByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PigxMDAwMC4wICogZGlzdCh1cmJnKSk7IH0pOworCisgICAgRVhQRUNUX0VRKDE0LCB1
cmJnLmludm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9USEFUKG91dHB1dCwKKyAgICAgICAgICAg
ICAgICB0ZXN0aW5nOjpFbGVtZW50c0FyZSgwLCA3MTkxMywgMTQzNzUsIDUwMzksIDE4MzUsIDg2
MSwgMjU5MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODA0LCAxMjYs
IDEyMzM3LCAxNzk4NCwgMjcwMDIsIDAsIDcxOTEzKSk7CisgIH0KKworICB1cmJnLnJlc2V0KCk7
CisgIHsKKyAgICBhYnNsOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248ZmxvYXQ+IGRpc3Q7Cisg
ICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91dHB1dCksIHN0ZDo6ZW5kKG91dHB1dCksCisg
ICAgICAgICAgICAgICAgICBbJl0geyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PigxMDAwMC4wZiAq
IGRpc3QodXJiZykpOyB9KTsKKworICAgIEVYUEVDVF9FUSgxNCwgdXJiZy5pbnZvY2F0aW9ucygp
KTsKKyAgICBFWFBFQ1RfVEhBVChvdXRwdXQsCisgICAgICAgICAgICAgICAgdGVzdGluZzo6RWxl
bWVudHNBcmUoMCwgNzE5MTMsIDE0Mzc1LCA1MDM5LCAxODM1LCA4NjEsIDI1OTM2LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwNCwgMTI2LCAxMjMzNywgMTc5ODQsIDI3
MDAyLCAwLCA3MTkxMykpOworICB9Cit9CisKK1RFU1QoRXhwb25lbnRpYWxEaXN0cmlidXRpb25U
ZXN0LCBBbGdvcml0aG1Cb3VuZHMpIHsKKyAgLy8gUmVsaWVzIG9uIGFic2w6OnVuaWZvcm1fcmVh
bF9kaXN0cmlidXRpb24sIHNvIHNvbWUgb2YgdGhlc2UgY29tbWVudHMKKyAgLy8gcmVmZXJlbmNl
IHRoYXQuCisgIGFic2w6OmV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IGRpc3Q7CisK
KyAgeworICAgIC8vIFRoaXMgcmV0dXJucyB0aGUgc21hbGxlc3QgdmFsdWUgPjAgZnJvbSBhYnNs
Ojp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6
c2VxdWVuY2VfdXJiZyB1cmJnKHsweDAwMDAwMDAwMDAwMDAwMDF1bGx9KTsKKyAgICBkb3VibGUg
YSA9IGRpc3QodXJiZyk7CisgICAgRVhQRUNUX0VRKGEsIDUuNDIxMDEwODYyNDI3NTIyMTcwMDRl
LTIwKTsKKyAgfQorCisgIHsKKyAgICAvLyBUaGlzIHJldHVybnMgYSB2YWx1ZSB2ZXJ5IG5lYXIg
MC41IGZyb20gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi4KKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZyh7MHg3ZmZmZmZmZmZmZmZmZmVmdWxsfSk7
CisgICAgZG91YmxlIGEgPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9FUShhLCAwLjY5MzE0NzE4
MDU1OTk0NTE3NTIwNCk7CisgIH0KKworICB7CisgICAgLy8gVGhpcyByZXR1cm5zIHRoZSBsYXJn
ZXN0IHZhbHVlIDwxIGZyb20gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi4KKyAgICAv
LyBXb2xmcmFtQWxwaGE6IH4zOS4xNDM5NDY1ODA4OTg3NzY2MjgzMDU4NTQ3Mjk2MzQxOTE1Mjky
MTg3MjUzCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoezB4
RkZGRkZGRkZGRkZGRkZlRnVsbH0pOworICAgIGRvdWJsZSBhID0gZGlzdCh1cmJnKTsKKyAgICBF
WFBFQ1RfRVEoYSwgMzYuNzM2ODAwNTY5Njc3MTAwNzI1MSk7CisgIH0KKyAgeworICAgIC8vIFRo
aXMgKkFMU08qIHJldHVybnMgdGhlIGxhcmdlc3QgdmFsdWUgPDEuCisgICAgYWJzbDo6cmFuZG9t
X2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoezB4RkZGRkZGRkZGRkZGRkZGRnVsbH0pOwor
ICAgIGRvdWJsZSBhID0gZGlzdCh1cmJnKTsKKyAgICBFWFBFQ1RfRVEoYSwgMzYuNzM2ODAwNTY5
Njc3MTAwNzI1MSk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2dhdXNzaWFu
X2Rpc3RyaWJ1dGlvbi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGQ4NDYxOTQxNDFmNjVkNDBiMGM4ZjBiMDQ3
MmU3NGNlZmM4NmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2dhdXNzaWFuX2Rp
c3RyaWJ1dGlvbi5jYwpAQCAtMCwwICsxLDEwMiBAQAorLy8gQkVHSU4gR0VORVJBVEVEIENPREU7
IERPIE5PVCBFRElUCisvLyBjbGFuZy1mb3JtYXQgb2ZmCisKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9nYXVzc2lhbl9kaXN0cmlidXRpb24uaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNl
IHJhbmRvbV9pbnRlcm5hbCB7CisKK2NvbnN0IGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlOjpU
YWJsZXMKKyAgICBnYXVzc2lhbl9kaXN0cmlidXRpb25fYmFzZTo6emdfID0geworICAgIHszLjcx
MzA4NjI0Njc0MjU1MDUsIDMuNDQyNjE5ODU1ODk5MDAwMjE0LCAzLjIyMzA4NDk4NDU4MTE0MTU2
NSwKKyAgICAgMy4wODMyMjg4NTgyMTY4NjgzMTgsIDIuOTc4Njk2MjUyNjQ3Nzc5ODE5LCAyLjg5
NDM0NDAwNzAyMTUyODk0MiwKKyAgICAgMi44MjMxMjUzNTA1NDg5MTA0NSwgMi43NjExNjkzNzIz
ODcxNzY4NTcsIDIuNzA2MTEzNTczMTIxODE5NTQ5LAorICAgICAyLjY1NjQwNjQxMTI2MTM1OTY3
OSwgMi42MTA5NzIyNDg0MzE4NDczODcsIDIuNTY5MDMzNjI1OTI0OTM3NzgsCisgICAgIDIuNTMw
MDA5NjcyMzg4ODI3NDU3LCAyLjQ5MzQ1NDUyMjA5NTM3MjEwNiwgMi40NTkwMTgxNzc0MTE4MzA0
ODYsCisgICAgIDIuNDI2NDIwNjQ1NTMzNzQ5ODA5LCAyLjM5NTQzNDI3ODAxMTA2MjQ1NywgMi4z
NjU4NzEzNzAxMTc2Mzg1OTUsCisgICAgIDIuMzM3NTc1MjQxMzM5MjM2Nzc2LCAyLjMxMDQxMzY4
MzY5ODc2Mjk4OCwgMi4yODQyNzQwNTk2Nzc0NzE3NjksCisgICAgIDIuMjU5MDU5NTczODY5MTk4
MDksIDIuMjM0Njg2Mzk1NTkwOTc5MDM2LCAyLjIxMTA4MTQwODg3ODcwMjk3LAorICAgICAyLjE4
ODE4MDQzMjA3NjA0ODczMSwgMi4xNjU5MjY3OTM3NDg5MjE0OTcsIDIuMTQ0MjcwMTgyMzYwMzk0
OTA1LAorICAgICAyLjEyMzE2NTcwODY3Mzk3NjEzOCwgMi4xMDI1NzMxMzUxODkyMzc2MDgsIDIu
MDgyNDU2MjM3OTkyMDE1OTU3LAorICAgICAyLjA2Mjc4MjI3NDUwODMwNzk3OCwgMi4wNDM1MjE1
MzY2NTUwNjcxOTQsIDIuMDI0NjQ2OTczMzc3Mzg0NjQsCisgICAgIDIuMDA2MTMzODY5OTYzNDcx
MjA2LCAxLjk4Nzk1OTU3NDEyNzYxOTAzMywgMS45NzAxMDMyNjA4NTQzMjU2MzMsCisgICAgIDEu
OTUyNTQ1NzI5NTUzNTU1NzY0LCAxLjkzNTI2OTIyODI5NjYyMTk1NywgMS45MTgyNTczMDA4NjQ1
MDg5NjMsCisgICAgIDEuOTAxNDk0NjUzMTA1MTUwNDIzLCAxLjg4NDk2NzAzNTcwNzc1ODE0Mywg
MS44Njg2NjExNDA5OTQ0ODc3NjgsCisgICAgIDEuODUyNTY0NTExNzI4MDkwMDAyLCAxLjgzNjY2
NTQ2MDI1ODQ0NDkwNCwgMS44MjA5NTI5OTY1OTYxMjQ0MTgsCisgICAgIDEuODA1NDE2NzY0MjE5
MjI3MzY2LCAxLjc5MDA0Njk4MjU5OTg1NzUwNiwgMS43NzQ4MzQzOTU1ODYwNjgzNywKKyAgICAg
MS43NTk3NzAyMjQ4OTk1OTIzMzksIDEuNzQ0ODQ2MTI4MTEzNzk5MjQ0LCAxLjczMDA1NDE2MDU2
MzcyOTE4MiwKKyAgICAgMS43MTUzODY3NDA3MTM2NjY0OCwgMS43MDA4MzY2MTg1Njk5MTU3NDgs
IDEuNjg2Mzk2ODQ2Nzc5MTY3MDE0LAorICAgICAxLjY3MjA2MDc1NDA5NzU5OTgsIDEuNjU3ODIx
OTIwOTU0MDIzMjU0LCAxLjY0MzY3NDE1Njg2Mjg2NzQ0MSwKKyAgICAgMS42Mjk2MTE0Nzk0NzA2
MzM1NjIsIDEuNjE1NjI4MDk1MDQzMTU5NjI5LCAxLjYwMTcxODM4MDIyMTM3NjU4MSwKKyAgICAg
MS41ODc4NzY4NjQ4OTA1NzQ1NTgsIDEuNTc0MDk4MjE2MDIyOTk5MjY0LCAxLjU2MDM3NzIyMjM2
NjE2NzM4MiwKKyAgICAgMS41NDY3MDg3Nzk4NTk5MDg4NDQsIDEuNTMzMDg3ODc3Njc0MDQxNzU1
LCAxLjUxOTUwOTU4NDc2NTkzODU1OSwKKyAgICAgMS41MDU5NjkwMzY4NjMyMDE5MzcsIDEuNDky
NDYxNDIzNzgxMzUyNzE0LCAxLjQ3ODk4MTk3Njk4OTkyMjg0MiwKKyAgICAgMS40NjU1MjU5NTcz
NDI3MDkyOTYsIDEuNDUyMDg4NjQyODg5MjIyNzkyLCAxLjQzODY2NTMxNjY4NDU2MTU0NiwKKyAg
ICAgMS40MjUyNTEyNTQ1MTQwNTgzMTksIDEuNDExODQxNzEyNDQ3MDU1OTE5LCAxLjM5ODQzMTkx
NDEzMTAwMzUzOSwKKyAgICAgMS4zODUwMTcwMzc3MzI2NTAwNTgsIDEuMzcxNTkyMjAyNDI3MzQw
ODEyLCAxLjM1ODE1MjQ1NDMzMDE0MTUzNCwKKyAgICAgMS4zNDQ2OTI3NTE3NTM1NDUxOSwgMS4z
MzEyMDc5NDk2NjU2MjUyNzksIDEuMzE3NjkyNzgzMjA5NDEyMjk5LAorICAgICAxLjMwNDE0MTg1
MDEyODYxNTA1NCwgMS4yOTA1NDk1OTE5MjYxOTQ4OTQsIDEuMjc2OTEwMjczNTYwMTUzNjMsCisg
ICAgIDEuMjYzMjE3OTYxNDU0NjE5Mjg3LCAxLjI0OTQ2NjQ5OTU3MzA2NjQzNiwgMS4yMzU2NDk0
ODMyNjMzNjA2NiwKKyAgICAgMS4yMjE3NjAyMzA1Mzk5OTQzODUsIDEuMjA3NzkxNzUwNDE1OTQ3
NjYyLCAxLjE5MzczNjcwNzgzMzEyNjQ2NSwKKyAgICAgMS4xNzk1ODczODQ2NjM5ODYxNiwgMS4x
NjUzMzU2MzYxNjQ3NTAyMjIsIDEuMTUwOTcyODQyMTQ4ODY1NDE2LAorICAgICAxLjEzNjQ4OTg1
MjAxMzE1ODc3NCwgMS4xMjE4NzY5MjI1ODI1NDAyMzcsIDEuMTA3MTIzNjQ3NTM0MDM0MDI4LAor
ICAgICAxLjA5MjIxODg3NjkwNzI3NTM3MSwgMS4wNzcxNTA2MjQ4OTI4OTM0ODIsIDEuMDYxOTA1
OTYzNjk0ODIyMDQyLAorICAgICAxLjA0NjQ3MDkwMDc2NDA0MjkyMiwgMS4wMzA4MzAyMzYwNjgx
OTI5MDcsIDEuMDE0OTY3Mzk1MjUxMzI3ODQyLAorICAgICAwLjk5ODg2NDIzMzQ5Mjk4MDgxMzEs
IDAuOTgyNTAwODAzNTE1NDI2MzQ2NCwgMC45NjU4NTUwNzk0MDExNDcwMDk4LAorICAgICAwLjk0
ODkwMjYyNTUxMTMwMzQ0MzYsIDAuOTMxNjE2MTk2NjE1MTQ3OTQwMSwgMC45MTM5NjUyNTEwMjMw
MjkyNzkyLAorICAgICAwLjg5NTkxNTM1MjU4MDkzNDY4NzQsIDAuODc3NDI3NDI5MTEyOTIwNDg3
MiwgMC44NTg0NTY4NDMxOTM4MDk5OTMxLAorICAgICAwLjgzODk1MjIxNDI5NzU3NDE2MTQsIDAu
ODE4ODUzOTA2NzAwMzUzODUwNywgMC43OTgwOTIwNjA2NDQwNTM0NjkzLAorICAgICAwLjc3NjU4
Mzk4Nzg5NDc1NjM1NTcsIDAuNzU0MjMwNjY0NDU0MDUyMDY4OCwgMC43MzA5MTE5MTA2NDI0ODUw
NjMxLAorICAgICAwLjcwNjQ3OTYxMTMzNTQzMjU3NzksIDAuNjgwNzQ3OTE4NjY5MTUwNTIwMiwg
MC42NTM0Nzg2Mzg3Mzk5NzEwMjk1LAorICAgICAwLjYyNDM1ODU5NzMzNjA0NjE1MDUsIDAuNTky
OTYyOTQyNDcxNDQzNDMyNywgMC41NTg2OTIxNzg0MDgxNzk4NjI1LAorICAgICAwLjUyMDY1NjAz
ODc2MjA1NDY4NDgsIDAuNDc3NDM3ODM3Mjk2NjgzMDQzMSwgMC40MjY1NDc5ODYzNTU0MTUyNDI5
LAorICAgICAwLjM2Mjg3MTQzMTA5NzAyMTE5MDksIDAuMjcyMzIwODY0ODEzOTQ3NzM4NCwgMH0s
CisgICAgezAuMDAxMDE0MzUyNTY0MTIwMzc3NDEzLCAwLjAwMjY2OTYyOTA4Mzg4MDkyMjc5Mywg
MC4wMDU1NDg5OTUyMjA3NzEzNDU3OTIsCisgICAgIDAuMDA4NjI0NDg0NDEyODU5ODg4NjA3LCAw
LjAxMTgzOTQ3ODY1Nzg4NDg2ODYxLCAwLjAxNTE2NzI5ODAxMDU0NjU2OTc2LAorICAgICAwLjAx
ODU5MjEwMjczNzAxMTI5MTUxLCAwLjAyMjEwMzMwNDYxNTkyNzA5NDc1LCAwLjAyNTY5MzI5MTkz
NTkzNDI4MTUxLAorICAgICAwLjAyOTM1NjMxNzQ0MDAwNjg1MDIzLCAwLjAzMzA4Nzg4NjE0NjIy
NTc1NzU4LCAwLjAzNjg4NDM4ODc4NjY1NjIxNjQ1LAorICAgICAwLjA0MDc0Mjg2ODA3NDQ0NDE3
NDU4LCAwLjA0NDY2MDg2MjIwMDQ5MTQzMTU3LCAwLjA0ODYzNjI5NTg1OTg2NzgwNDk2LAorICAg
ICAwLjA1MjY2NzQwMTkwMzA1MTAwNDYxLCAwLjA1Njc1MjY2MzQ4MTA0OTg0NzU5LCAwLjA2MDg5
MDc3MDM0ODA0MDQxMjc3LAorICAgICAwLjA2NTA4MDU4NTIxMzA2ODA0NTY3LCAwLjA2OTMyMTEx
NzM5MzU3NzkyMTc5LCAwLjA3MzYxMTUwMTg4NDExMzQxNzIyLAorICAgICAwLjA3Nzk1MDk4MjUx
Mzk3MzQ2MzAxLCAwLjA4MjMzODg5ODI0MjIzNTc1MjkzLCAwLjA4Njc3NDY3MTg5NDc4MDI4OTE5
LAorICAgICAwLjA5MTI1NzgwMDgyNjgzMDM2ODA5LCAwLjA5NTc4Nzg0OTEyMTczMTUyMiwgMC4x
MDAzNjQ0NDEwMjg2NTU5OTI5LAorICAgICAwLjEwNDk4NzI1NTQwOTQyMTQyODksIDAuMTA5NjU2
MDIxMDE0ODQwNDU0NiwgMC4xMTQzNzA1MTI0NDg4NjYxMzIzLAorICAgICAwLjExOTEzMDU0Njcw
NzY1MDk1NTYsIDAuMTIzOTM1OTgwMjAyODY3OTczNiwgMC4xMjg3ODY3MDYxOTU5NDM0MDEyLAor
ICAgICAwLjEzMzY4MjY1MjU4MzQzOTYxNTEsIDAuMTM4NjIzNzc5OTg0NTk0ODgwNCwgMC4xNDM2
MTAwODAwOTA2MjgwMzM5LAorICAgICAwLjE0ODY0MTU3NDI0MjM0MjUwNTcsIDAuMTUzNzE4MzEy
MjA4MTgxOTM5NywgMC4xNTg4NDAzNzExMzk0Nzk1NzQ4LAorICAgICAwLjE2NDAwNzg1NDY4MzQy
MDYzNDEsIDAuMTY5MjIwODkyMjM3MzY1MzA1NywgMC4xNzQ0Nzk2MzgzMzA3ODk4MzI0LAorICAg
ICAwLjE3OTc4NDI3MjEyMzI5NTg0MDcsIDAuMTg1MTM0OTk3MDA4OTkyNjA3OCwgMC4xOTA1MzIw
NDAzMTkxMzc1NjMzLAorICAgICAwLjE5NTk3NTY1MzExNjI3ODE1MzQsIDAuMjAxNDY2MTEwMDc0
MzE0MDg2NSwgMC4yMDcwMDM3MDk0Mzk5MjY5MzYyLAorICAgICAwLjIxMjU4ODc3MzA3MTczMDcx
MzQsIDAuMjE4MjIxNjQ2NTU0MzA1ODQyNiwgMC4yMjM5MDI2OTkzODUwMDg4OTY1LAorICAgICAw
LjIyOTYzMjMyNTIzMjExNjYwMiwgMC4yMzU0MTA5NDIyNjM0Nzk1NTU2LCAwLjI0MTIzODk5MzU0
NTQ0MDI4ODksCisgICAgIDAuMjQ3MTE2OTQ3NTEyMzIxODU1MSwgMC4yNTMwNDUyOTg1MDczMjYx
NTUxLCAwLjI1OTAyNDU2NzM5NjIwNTI3NDIsCisgICAgIDAuMjY1MDU1MzAyMjU1NTg5NzA4Nywg
MC4yNzExMzgwNzkxMzgzODUyMjQsIDAuMjc3MjczNTAyOTE5MTg4Nzg1NywKKyAgICAgMC4yODM0
NjIyMDgyMjMyMzM2NDcxLCAwLjI4OTcwNDg2MDQ0Mjk2MDU2NTYsIDAuMjk2MDAyMTU2ODQ2OTMz
NzA2MSwKKyAgICAgMC4zMDIzNTQ4Mjc3ODY0ODQyNTkzLCAwLjMwODc2MzYzODAwNjE4MTgzOTcs
IDAuMzE1MjI5Mzg4MDY1MDExNjA2NSwKKyAgICAgMC4zMjE3NTI5MTU4NzU5ODU1OTAxLCAwLjMy
ODMzNTA5ODM3Mjg1MDk2NDIsIDAuMzM0OTc2ODUzMzEzNTg5OTUwNiwKKyAgICAgMC4zNDE2Nzkx
NDEyMzE1NTEyOTc3LCAwLjM0ODQ0Mjk2NzU0NjMyNzQ3NTYsIDAuMzU1MjY5Mzg0ODQ3OTE4MDM1
LAorICAgICAwLjM2MjE1OTQ5NTM2OTMxODQ2MjYsIDAuMzY5MTE0NDUzNjY0NDczMTUyMiwgMC4z
NzYxMzU0Njk1MTA1NjM1MzYsCisgICAgIDAuMzgzMjIzODExMDU1OTAyMTQxNiwgMC4zOTAzODA4
MDgyMzczMTU1Nzk3LCAwLjM5NzYwNzg1NjQ5Mzg3NDM2NzYsCisgICAgIDAuNDA0OTA2NDIwODA3
MjIzOTk5LCAwLjQxMjI3ODA0MDEwMjY2MjA1NzgsIDAuNDE5NzI0MzMyMDQ5NTc1Mzc3MSwKKyAg
ICAgMC40MjcyNDY5OTgzMDQ5OTcwNzIxLCAwLjQzNDg0NzgzMDI0OTk5MTg1MTMsIDAuNDQyNTI4
NzE1Mjc1NDY5NDk3NSwKKyAgICAgMC40NTAyOTE2NDM2ODIwNDAyNzY4LCAwLjQ1ODEzODcxNjI2
Nzg3MzExNCwgMC40NjYwNzIxNTI2ODk0NTcyMzA5LAorICAgICAwLjQ3NDA5NDMwMDY5MzAxODA1
NTksIDAuNDgyMjA3NjQ2MzI5NDg2MzcyNCwgMC40OTA0MTQ4MjUyODM4NDUzMzQ4LAorICAgICAw
LjQ5ODcxODYzNTQ3MDk4MDcyMDEsIDAuNTA3MTIyMDUxMDc1NTcwMTc5NCwgMC41MTU2MjgyMzgy
NDQwMDMwNTY1LAorICAgICAwLjUyNDI0MDU3MjY3Mjk4NTI5NDQsIDAuNTMyOTYyNjU5MzgzODM3
MzU2MSwgMC41NDE3OTgzNTUwMjU0MjY2MTQ1LAorICAgICAwLjU1MDc1MTc5MzExNDYwNTc1ODgs
IDAuNTU5ODI3NDEyNzA0MDg4MjAwOSwgMC41NjkwMjk5OTEwNjc5NTIzNzg3LAorICAgICAwLjU3
ODM2NDY4MTExOTc2NDY4OTgsIDAuNTg3ODM3MDU0NDM0NzA4MTI4MywgMC41OTc0NTMxNTA5NDQ1
MTgzNDA4LAorICAgICAwLjYwNzIxOTUzNjYyNTEyMTk1ODQsIDAuNjE3MTQzMzcwODE4ODgyNTk3
MywgMC42MjcyMzI0ODUyNDk5MjkwMjgyLAorICAgICAwLjYzNzQ5NTQ3NzMzNTA0NDA4MDYsIDAu
NjQ3OTQxODIxMTEwMjI0MjQ3NSwgMC42NTg1ODIwMDAwNTAwODk4MjE5LAorICAgICAwLjY2OTQy
NzY2NzM0ODg5MjE0MTQsIDAuNjgwNDkxODQwOTk3MzM1ODM5NSwgMC42OTE3ODkxNDM0MzY2NzY5
Njc2LAorICAgICAwLjcwMzMzNjA5OTAxNjE2MDAxMDEsIDAuNzE1MTUxNTA3NDEwNTAwNTk3Niwg
MC43MjcyNTY5MTgzNDQxODY4MjAxLAorICAgICAwLjczOTY3NzI0MzY3MjY0OTMwOTQsIDAuNzUy
NDQxNTU5MTc0NjEzNDE2OSwgMC43NjU1ODQxNzM4OTc3MDY2MTAyLAorICAgICAwLjc3OTE0NjA4
NTkyOTY4OTgxMzQsIDAuNzkzMTc3MDExNzcxMzA3MjgzMiwgMC44MDc3MzgyOTQ2ODI5NjI3NjUy
LAorICAgICAwLjgyMjkwNzIxMTM4MTQxMTMxODcsIDAuODM4NzgzNjA1Mjk1OTkyMDUxOSwgMC44
NTU1MDA2MDc4Njk0NTMxNDQ2LAorICAgICAwLjg3MzI0MzA0ODkxMDA3MjIwNiwgMC44OTIyODE2
NTA3ODQwMjg5OTAxLCAwLjkxMzA0MzY0Nzk3MTc0MzQyMTcsCisgICAgIDAuOTM2MjgyNjgxNjg1
MDYzMjMzOSwgMC45NjM1OTk2OTMxMjcwOTA1OTUyLCAxfX07CisKK30gIC8vIG5hbWVzcGFjZSBy
YW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKy8vIGNsYW5nLWZvcm1hdCBv
bgorLy8gRU5EIEdFTkVSQVRFRCBDT0RFCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZ2F1c3Np
YW5fZGlzdHJpYnV0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWQxMzQ3YmNlMGEwNWJmYzY2NzQ1Mzk4MzRhMTUwMTg5ZTFhZTk5NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nYXVzc2lhbl9kaXN0cmlidXRpb24uaApAQCAt
MCwwICsxLDI2MCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpZm5kZWYgQUJTTF9SQU5ET01fR0FVU1NJQU5fRElTVFJJQlVUSU9OX0hfCisjZGVmaW5lIEFC
U0xfUkFORE9NX0dBVVNTSUFOX0RJU1RSSUJVVElPTl9IXworCisvLyBhYnNsOjpnYXVzc2lhbl9k
aXN0cmlidXRpb24gaW1wbGVtZW50cyB0aGUgWmlnZ3VyYXQgYWxnb3JpdGhtCisvLyBmb3IgZ2Vu
ZXJhdGluZyByYW5kb20gZ2F1c3NpYW4gbnVtYmVycy4KKy8vCisvLyBJbXBsZW1lbnRhdGlvbiBi
YXNlZCBvbiAiVGhlIFppZ2d1cmF0IE1ldGhvZCBmb3IgR2VuZXJhdGluZyBSYW5kb20gVmFyaWFi
bGVzIgorLy8gYnkgR2VvcmdlIE1hcnNhZ2xpYSBhbmQgV2FpIFdhbiBUc2FuZzogaHR0cDovL3d3
dy5qc3RhdHNvZnQub3JnL3YwNS9pMDgvCisvLworCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVk
ZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpc3RyZWFtPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3Ry
aWJ1dGlvbl9pbXBsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdF91bmlm
b3JtX2JpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0
ZV9zYXZlci5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFs
IHsKKworLy8gYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uX2Jhc2UgaW1wbGVtZW50cyB0aGUg
dW5kZXJseWluZyB6aWdndXJhdCBhbGdvcml0aG0KKy8vIHVzaW5nIHRoZSB6aWdndXJhdCB0YWJs
ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBnYXVzc2lhbl9kaXN0cmlidXRpb25fZ2VudGFibGVzCisvLyBi
aW5hcnkuCisvLworLy8gVGhlIHNwZWNpZmljIGFsZ29yaXRobSBoYXMgc29tZSBvZiB0aGUgaW1w
cm92ZW1lbnRzIHN1Z2dlc3RlZCBieSB0aGUKKy8vIDIwMDUgcGFwZXIsICJBbiBJbXByb3ZlZCBa
aWdndXJhdCBNZXRob2QgdG8gR2VuZXJhdGUgTm9ybWFsIFJhbmRvbSBTYW1wbGVzIiwKKy8vIEp1
cmdlbiBBIERvb3JuaWsuICAoaHR0cHM6Ly93d3cuZG9vcm5pay5jb20vcmVzZWFyY2gvemlnZ3Vy
YXQucGRmKQorY2xhc3MgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2Jhc2UgeworIHB1YmxpYzoKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIGlubGluZSBkb3VibGUgemlnbm9yKFVSQkcmIGcp
OyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKworIHByaXZhdGU6CisgIGZyaWVuZCBj
bGFzcyBUYWJsZUdlbmVyYXRvcjsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgaW5s
aW5lIGRvdWJsZSB6aWdub3JfZmFsbGJhY2soVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3Jl
ZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbmVnKTsKKwor
ICAvLyBDb25zdGFudHMgdXNlZCBmb3IgdGhlIGdhdXNzaWFuIGRpc3RyaWJ1dGlvbi4KKyAgc3Rh
dGljIGNvbnN0ZXhwciBkb3VibGUga1IgPSAzLjQ0MjYxOTg1NTg5OTsgIC8vIFN0YXJ0IG9mIHRo
ZSB0YWlsLgorICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrUkludiA9IDAuMjkwNDc2NDUxNjE0
NzQzMTc7ICAvLyB+PSAoMS4wIC8ga1IpIC4KKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga1Yg
PSA5LjkxMjU2MzAzNTI2MjE3ZS0zOworICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGtNYXNr
ID0gMHgwN2Y7CisKKyAgLy8gVGhlIHppZ2d1cmF0IHRhYmxlcyBzdG9yZSB0aGUgcGRmKGYpIGFu
ZCBpbnZlcnNlLXBkZih4KSBmb3IgZXF1YWwtYXJlYQorICAvLyBwb2ludHMgb24gb25lLWhhbGYg
b2YgdGhlIG5vcm1hbCBkaXN0cmlidXRpb24sIHdoZXJlIHRoZSBwZGYgZnVuY3Rpb24sCisgIC8v
IHBkZiA9IGUgXiAoLTEvMiAqeF4yKSwgYXNzdW1lcyB0aGF0IHRoZSBtZWFuID0gMCAmIHN0ZGRl
diA9IDEuCisgIC8vCisgIC8vIFRoZXNlIHRhYmxlcyBhcmUganVzdCBvdmVyIDJrYiBpbiBzaXpl
OyBsYXJnZXIgdGFibGVzIG1pZ2h0IGltcHJvdmUgdGhlCisgIC8vIGRpc3RyaWJ1dGlvbnMsIGJ1
dCBhbHNvIGxlYWQgdG8gbW9yZSBjYWNoZSBwb2xsdXRpb24uCisgIC8vCisgIC8vIHggPSB7My43
MTMwOCwgMy40NDI2MSwgMy4yMjMwOCwgLi4uLCAwfQorICAvLyBmID0gezAuMDAxMDEsIDAuMDAy
NjYsIDAuMDA1NTQsIC4uLiwgMX0KKyAgc3RydWN0IFRhYmxlcyB7CisgICAgZG91YmxlIHhba01h
c2sgKyAyXTsKKyAgICBkb3VibGUgZltrTWFzayArIDJdOworICB9OworICBzdGF0aWMgY29uc3Qg
VGFibGVzIHpnXzsKKyAgcmFuZG9tX2ludGVybmFsOjpGYXN0VW5pZm9ybUJpdHM8dWludDY0X3Q+
IGZhc3RfdTY0XzsKK307CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKKworLy8g
YWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uOgorLy8gR2VuZXJhdGVzIGEgbnVtYmVyIGNvbmZv
cm1pbmcgdG8gYSBHYXVzc2lhbiBkaXN0cmlidXRpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVh
bFR5cGUgPSBkb3VibGU+CitjbGFzcyBnYXVzc2lhbl9kaXN0cmlidXRpb24gOiByYW5kb21faW50
ZXJuYWw6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJl
c3VsdF90eXBlID0gUmVhbFR5cGU7CisKKyAgY2xhc3MgcGFyYW1fdHlwZSB7CisgICBwdWJsaWM6
CisgICAgdXNpbmcgZGlzdHJpYnV0aW9uX3R5cGUgPSBnYXVzc2lhbl9kaXN0cmlidXRpb247CisK
KyAgICBleHBsaWNpdCBwYXJhbV90eXBlKHJlc3VsdF90eXBlIG1lYW4gPSAwLCByZXN1bHRfdHlw
ZSBzdGRkZXYgPSAxKQorICAgICAgICA6IG1lYW5fKG1lYW4pLCBzdGRkZXZfKHN0ZGRldikge30K
KworICAgIC8vIFJldHVybnMgdGhlIG1lYW4gZGlzdHJpYnV0aW9uIHBhcmFtZXRlci4gIFRoZSBt
ZWFuIHNwZWNpZmllcyB0aGUgbG9jYXRpb24KKyAgICAvLyBvZiB0aGUgcGVhay4gIFRoZSBkZWZh
dWx0IHZhbHVlIGlzIDAuMC4KKyAgICByZXN1bHRfdHlwZSBtZWFuKCkgY29uc3QgeyByZXR1cm4g
bWVhbl87IH0KKworICAgIC8vIFJldHVybnMgdGhlIGRldmlhdGlvbiBkaXN0cmlidXRpb24gcGFy
YW1ldGVyLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMS4wLgorICAgIHJlc3VsdF90eXBlIHN0ZGRl
digpIGNvbnN0IHsgcmV0dXJuIHN0ZGRldl87IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
PT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0
dXJuIGEubWVhbl8gPT0gYi5tZWFuXyAmJiBhLnN0ZGRldl8gPT0gYi5zdGRkZXZfOworICAgIH0K
KworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29uc3Qg
cGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuICEoYSA9PSBiKTsKKyAgICB9CisKKyAgIHBy
aXZhdGU6CisgICAgcmVzdWx0X3R5cGUgbWVhbl87CisgICAgcmVzdWx0X3R5cGUgc3RkZGV2XzsK
KworICAgIHN0YXRpY19hc3NlcnQoCisgICAgICAgIHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8UmVh
bFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgIkNsYXNzLXRlbXBsYXRlIGFic2w6OmdhdXNzaWFuX2Rp
c3RyaWJ1dGlvbjw+IG11c3QgYmUgcGFyYW1ldGVyaXplZCAiCisgICAgICAgICJ1c2luZyBhIGZs
b2F0aW5nLXBvaW50IHR5cGUuIik7CisgIH07CisKKyAgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uKCkg
OiBnYXVzc2lhbl9kaXN0cmlidXRpb24oMCkge30KKworICBleHBsaWNpdCBnYXVzc2lhbl9kaXN0
cmlidXRpb24ocmVzdWx0X3R5cGUgbWVhbiwgcmVzdWx0X3R5cGUgc3RkZGV2ID0gMSkKKyAgICAg
IDogcGFyYW1fKG1lYW4sIHN0ZGRldikge30KKworICBleHBsaWNpdCBnYXVzc2lhbl9kaXN0cmli
dXRpb24oY29uc3QgcGFyYW1fdHlwZSYgcCkgOiBwYXJhbV8ocCkge30KKworICB2b2lkIHJlc2V0
KCkge30KKworICAvLyBHZW5lcmF0aW5nIGZ1bmN0aW9ucworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShVUkJHJiBnKSB7ICAvLyBOT0xJTlQocnVu
dGltZS9yZWZlcmVuY2VzKQorICAgIHJldHVybiAoKnRoaXMpKGcsIHBhcmFtXyk7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShVUkJH
JiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBwYXJhbV90eXBlJiBwKTsKKworICBwYXJhbV90eXBlIHBhcmFtKCkgY29uc3Qg
eyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgcCkgeyBw
YXJhbV8gPSBwOyB9CisKKyAgcmVzdWx0X3R5cGUobWluKSgpIGNvbnN0IHsKKyAgICByZXR1cm4g
LXN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjppbmZpbml0eSgpOworICB9CisgIHJl
c3VsdF90eXBlKG1heCkoKSBjb25zdCB7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8
cmVzdWx0X3R5cGU+OjppbmZpbml0eSgpOworICB9CisKKyAgcmVzdWx0X3R5cGUgbWVhbigpIGNv
bnN0IHsgcmV0dXJuIHBhcmFtXy5tZWFuKCk7IH0KKyAgcmVzdWx0X3R5cGUgc3RkZGV2KCkgY29u
c3QgeyByZXR1cm4gcGFyYW1fLnN0ZGRldigpOyB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBnYXVzc2lhbl9kaXN0cmlidXRpb24mIGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uJiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1f
ID09IGIucGFyYW1fOworICB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgZ2F1c3Np
YW5fZGlzdHJpYnV0aW9uJiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdhdXNz
aWFuX2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiBhLnBhcmFtXyAhPSBiLnBhcmFtXzsK
KyAgfQorCisgcHJpdmF0ZToKKyAgcGFyYW1fdHlwZSBwYXJhbV87Cit9OworCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8gSW1wbGVtZW50YXRpb24gZGV0YWlscyBvbmx5IGJlbG93CisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGU+Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT46
OnJlc3VsdF90eXBlCitnYXVzc2lhbl9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpvcGVyYXRvcigp
KAorICAgIFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0
IHBhcmFtX3R5cGUmIHApIHsKKyAgcmV0dXJuIHAubWVhbigpICsgcC5zdGRkZXYoKSAqIHN0YXRp
Y19jYXN0PHJlc3VsdF90eXBlPih6aWdub3IoZykpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgUmVhbFR5cGU+CitzdGQ6OmJhc2ljX29z
dHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3RkOjpiYXNpY19vc3RyZWFt
PENoYXJULCBUcmFpdHM+JiBvcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAg
Y29uc3QgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uPFJlYWxUeXBlPiYgeCkgeworICBhdXRvIHNhdmVy
ID0gcmFuZG9tX2ludGVybmFsOjptYWtlX29zdHJlYW1fc3RhdGVfc2F2ZXIob3MpOworICBvcy5w
cmVjaXNpb24ocmFuZG9tX2ludGVybmFsOjpzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjxSZWFsVHlw
ZT46OmtQcmVjaXNpb24pOworICBvcyA8PCB4Lm1lYW4oKSA8PCBvcy5maWxsKCkgPDwgeC5zdGRk
ZXYoKTsKKyAgcmV0dXJuIG9zOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgUmVhbFR5cGU+CitzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQs
IFRyYWl0cz4mIG9wZXJhdG9yPj4oCisgICAgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFp
dHM+JiBpcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgZ2F1c3NpYW5fZGlz
dHJpYnV0aW9uPFJlYWxUeXBlPiYgeCkgeyAgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMp
CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uPFJl
YWxUeXBlPjo6cmVzdWx0X3R5cGU7CisgIHVzaW5nIHBhcmFtX3R5cGUgPSB0eXBlbmFtZSBnYXVz
c2lhbl9kaXN0cmlidXRpb248UmVhbFR5cGU+OjpwYXJhbV90eXBlOworCisgIGF1dG8gc2F2ZXIg
PSByYW5kb21faW50ZXJuYWw6Om1ha2VfaXN0cmVhbV9zdGF0ZV9zYXZlcihpcyk7CisgIGF1dG8g
bWVhbiA9IHJhbmRvbV9pbnRlcm5hbDo6cmVhZF9mbG9hdGluZ19wb2ludDxyZXN1bHRfdHlwZT4o
aXMpOworICBpZiAoaXMuZmFpbCgpKSByZXR1cm4gaXM7CisgIGF1dG8gc3RkZGV2ID0gcmFuZG9t
X2ludGVybmFsOjpyZWFkX2Zsb2F0aW5nX3BvaW50PHJlc3VsdF90eXBlPihpcyk7CisgIGlmICgh
aXMuZmFpbCgpKSB7CisgICAgeC5wYXJhbShwYXJhbV90eXBlKG1lYW4sIHN0ZGRldikpOworICB9
CisgIHJldHVybiBpczsKK30KKworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBVUkJHPgoraW5saW5lIGRvdWJsZSBnYXVzc2lhbl9kaXN0cmlidXRpb25f
YmFzZTo6emlnbm9yX2ZhbGxiYWNrKFVSQkcmIGcsIGJvb2wgbmVnKSB7CisgIC8vIFRoaXMgZmFs
bGJhY2sgcGF0aCBoYXBwZW5zIGFwcHJveGltYXRlbHkgMC4wNSUgb2YgdGhlIHRpbWUuCisgIGRv
dWJsZSB4LCB5OworICBkbyB7CisgICAgLy8ga1JJbnYgPSAxL3IsIFUoMCwgMSkKKyAgICB4ID0g
a1JJbnYgKiBzdGQ6OmxvZyhSYW5kVTY0VG9Eb3VibGU8UG9zaXRpdmVWYWx1ZVQsIGZhbHNlPihm
YXN0X3U2NF8oZykpKTsKKyAgICB5ID0gLXN0ZDo6bG9nKFJhbmRVNjRUb0RvdWJsZTxQb3NpdGl2
ZVZhbHVlVCwgZmFsc2U+KGZhc3RfdTY0XyhnKSkpOworICB9IHdoaWxlICgoeSArIHkpIDwgKHgg
KiB4KSk7CisgIHJldHVybiBuZWcgPyAoeCAtIGtSKSA6IChrUiAtIHgpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVVJCRz4KK2lubGluZSBkb3VibGUgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2Jh
c2U6OnppZ25vcigKKyAgICBVUkJHJiBnKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2Vz
KQorICB3aGlsZSAodHJ1ZSkgeworICAgIC8vIFdlIHVzZSBhIHNpbmdsZSB1aW50NjRfdCB0byBn
ZW5lcmF0ZSBib3RoIGEgZG91YmxlIGFuZCBhIHN0cmlwLgorICAgIC8vIFRoZXNlIGJpdHMgYXJl
IHVudXNlZCB3aGVuIHRoZSBnZW5lcmF0ZWQgZG91YmxlIGlzID4gMS8yXjUuCisgICAgLy8gVGhp
cyBtYXkgaW50cm9kdWNlIHNvbWUgYmlhcyBmcm9tIHRoZSBkdXBsaWNhdGVkIGxvdyBiaXRzIG9m
IHNtYWxsCisgICAgLy8gdmFsdWVzICh0aG9zZSBzbWFsbGVyIHRoYW4gMS8yXjUsIHdoaWNoIGFs
bCBlbmQgdXAgb24gdGhlIGxlZnQgdGFpbCkuCisgICAgdWludDY0X3QgYml0cyA9IGZhc3RfdTY0
XyhnKTsKKyAgICBpbnQgaSA9IHN0YXRpY19jYXN0PGludD4oYml0cyAmIGtNYXNrKTsgIC8vIHBp
Y2sgYSByYW5kb20gc3RyaXAKKyAgICBkb3VibGUgaiA9IFJhbmRVNjRUb0RvdWJsZTxTaWduZWRW
YWx1ZVQsIGZhbHNlPihiaXRzKTsgIC8vIFUoLTEsIDEpCisgICAgY29uc3QgZG91YmxlIHggPSBq
ICogemdfLnhbaV07CisKKyAgICAvLyBSZXRhbmd1bGFyIGJveC4gSGFuZGxlcyA+OTclIG9mIGFs
bCBjYXNlcy4KKyAgICAvLyBGb3IgYW55IGdpdmVuIGJveCwgdGhpcyBoYW5kbGVzIGJldHdlZW4g
NzUlIGFuZCA5OSUgb2YgdmFsdWVzLgorICAgIC8vIEVxdWl2YWxlbnQgdG8gVSgwMSkgPCAoeFtp
KzFdIC8geFtpXSksIGFuZCB3aGVuIGkgPT0gMCwgfjkzLjUlCisgICAgaWYgKHN0ZDo6YWJzKHgp
IDwgemdfLnhbaSArIDFdKSB7CisgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICAvLyBpID09
IDA6IEJhc2UgYm94LiBTYW1wbGUgdXNpbmcgYSByYXRpbyBvZiB1bmlmb3Jtcy4KKyAgICBpZiAo
aSA9PSAwKSB7CisgICAgICAvLyBUaGlzIHBhdGggaGFwcGVucyBhYm91dCAwLjA1JSBvZiB0aGUg
dGltZS4KKyAgICAgIHJldHVybiB6aWdub3JfZmFsbGJhY2soZywgaiA8IDApOworICAgIH0KKwor
ICAgIC8vIGkgPiAwOiBXZWRnZSBzYW1wbGVzIHVzaW5nIHByZWNvbXB1dGVkIHZhbHVlcy4KKyAg
ICBkb3VibGUgdiA9IFJhbmRVNjRUb0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgZmFsc2U+KGZhc3Rf
dTY0XyhnKSk7ICAvLyBVKDAsIDEpCisgICAgaWYgKCh6Z18uZltpICsgMV0gKyB2ICogKHpnXy5m
W2ldIC0gemdfLmZbaSArIDFdKSkgPAorICAgICAgICBzdGQ6OmV4cCgtMC41ICogeCAqIHgpKSB7
CisgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICAvLyBUaGUgd2VkZ2Ugd2FzIG1pc3NlZDsg
cmVqZWN0IHRoZSB2YWx1ZSBhbmQgdHJ5IGFnYWluLgorICB9Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJT
TF9SQU5ET01fR0FVU1NJQU5fRElTVFJJQlVUSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZ2F1c3NpYW5f
ZGlzdHJpYnV0aW9uX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdjMjk4OWQzNDBiN2U1MmY4ZjYwNWZi
NzU1YjAyZGE2MDFjNTc4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9nYXVzc2lh
bl9kaXN0cmlidXRpb25fdGVzdC5jYwpAQCAtMCwwICsxLDU3MyBAQAorLy8gQ29weXJpZ2h0IDIw
MTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9nYXVzc2lh
bl9kaXN0cmlidXRpb24uaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjbWF0
aD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGlvcz4KKyNpbmNsdWRlIDxpdGVyYXRv
cj4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rv
cj4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3Nx
dWFyZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0
X3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgi
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oIgorI2luY2x1
ZGUgImFic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9z
dHJpcC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OmtD
aGlTcXVhcmVkOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGU+CitjbGFzcyBHYXVzc2lh
bkRpc3RyaWJ1dGlvbkludGVyZmFjZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9Owor
Cit1c2luZyBSZWFsVHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPGZsb2F0LCBkb3VibGUsIGxvbmcg
ZG91YmxlPjsKK1RZUEVEX1RFU1RfQ0FTRShHYXVzc2lhbkRpc3RyaWJ1dGlvbkludGVyZmFjZVRl
c3QsIFJlYWxUeXBlcyk7CisKK1RZUEVEX1RFU1QoR2F1c3NpYW5EaXN0cmlidXRpb25JbnRlcmZh
Y2VUZXN0LCBTZXJpYWxpemVUZXN0KSB7CisgIHVzaW5nIHBhcmFtX3R5cGUgPQorICAgICAgdHlw
ZW5hbWUgYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7
CisKKyAgY29uc3QgVHlwZVBhcmFtIGtQYXJhbXNbXSA9IHsKKyAgICAgIC8vIENhc2VzIGFyb3Vu
ZCAxLgorICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKFR5cGVQYXJhbSgxKSwgVHlwZVBhcmFtKDApKSwgIC8v
IDEgLSBlcHNpbG9uCisgICAgICBzdGQ6Om5leHRhZnRlcihUeXBlUGFyYW0oMSksIFR5cGVQYXJh
bSgyKSksICAvLyAxICsgZXBzaWxvbgorICAgICAgLy8gQXJiaXRyYXJ5IHZhbHVlcy4KKyAgICAg
IFR5cGVQYXJhbSgxZS04KSwgVHlwZVBhcmFtKDFlLTQpLCBUeXBlUGFyYW0oMiksIFR5cGVQYXJh
bSgxZTQpLAorICAgICAgVHlwZVBhcmFtKDFlOCksIFR5cGVQYXJhbSgxZTIwKSwgVHlwZVBhcmFt
KDIuNSksCisgICAgICAvLyBCb3VuZGFyeSBjYXNlcy4KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8VHlwZVBhcmFtPjo6aW5maW5pdHkoKSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VHlw
ZVBhcmFtPjo6bWF4KCksCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46OmVw
c2lsb24oKSwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBh
cmFtPjo6bWluKCksCisgICAgICAgICAgICAgICAgICAgICBUeXBlUGFyYW0oMSkpLCAgICAgICAg
ICAgLy8gbWluICsgZXBzaWxvbgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+
OjptaW4oKSwgIC8vIHNtYWxsZXN0IG5vcm1hbAorICAgICAgLy8gVGhlcmUgYXJlIHNvbWUgZXJy
b3JzIGRlYWxpbmcgd2l0aCBkZW5vcm1zIG9uIGFwcGxlIHBsYXRmb3Jtcy4KKyAgICAgIHN0ZDo6
bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6ZGVub3JtX21pbigpLCAgLy8gc21hbGxlc3QgZGVu
b3JtCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1pbigpIC8gMiwKKyAg
ICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWluKCks
CisgICAgICAgICAgICAgICAgICAgICBUeXBlUGFyYW0oMCkpLCAgLy8gZGVub3JtX21heAorICB9
OworCisgIGNvbnN0ZXhwciBpbnQga0NvdW50ID0gMTAwMDsKKyAgYWJzbDo6SW5zZWN1cmVCaXRH
ZW4gZ2VuOworCisgIC8vIFVzZSBhIGxvb3AgdG8gZ2VuZXJhdGUgdGhlIGNvbWJpbmF0aW9ucyBv
ZiB7Ky8teCwgKy8teX0sIGFuZCBhc3NpZ24geCwgeSB0bworICAvLyBhbGwgdmFsdWVzIGluIGtQ
YXJhbXMsCisgIGZvciAoY29uc3QgYXV0byBtb2QgOiB7MCwgMSwgMiwgM30pIHsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8geCA6IGtQYXJhbXMpIHsKKyAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSkg
Y29udGludWU7CisgICAgICBmb3IgKGNvbnN0IGF1dG8geSA6IGtQYXJhbXMpIHsKKyAgICAgICAg
Y29uc3QgVHlwZVBhcmFtIG1lYW4gPSAobW9kICYgMHgxKSA/IC14IDogeDsKKyAgICAgICAgY29u
c3QgVHlwZVBhcmFtIHN0ZGRldiA9IChtb2QgJiAweDIpID8gLXkgOiB5OworICAgICAgICBjb25z
dCBwYXJhbV90eXBlIHBhcmFtKG1lYW4sIHN0ZGRldik7CisKKyAgICAgICAgYWJzbDo6Z2F1c3Np
YW5fZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gYmVmb3JlKG1lYW4sIHN0ZGRldik7CisgICAgICAg
IEVYUEVDVF9FUShiZWZvcmUubWVhbigpLCBwYXJhbS5tZWFuKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoYmVmb3JlLnN0ZGRldigpLCBwYXJhbS5zdGRkZXYoKSk7CisKKyAgICAgICAgeworICAgICAg
ICAgIGFic2w6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IHZpYV9wYXJhbShwYXJh
bSk7CisgICAgICAgICAgRVhQRUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAgICAgICAgICBF
WFBFQ1RfRVEodmlhX3BhcmFtLnBhcmFtKCksIGJlZm9yZS5wYXJhbSgpKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFNtb2tlIHRlc3QuCisgICAgICAgIGF1dG8gc2FtcGxlX21pbiA9IGJlZm9y
ZS5tYXgoKTsKKyAgICAgICAgYXV0byBzYW1wbGVfbWF4ID0gYmVmb3JlLm1pbigpOworICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGtDb3VudDsgaSsrKSB7CisgICAgICAgICAgYXV0byBzYW1w
bGUgPSBiZWZvcmUoZ2VuKTsKKyAgICAgICAgICBpZiAoc2FtcGxlID4gc2FtcGxlX21heCkgc2Ft
cGxlX21heCA9IHNhbXBsZTsKKyAgICAgICAgICBpZiAoc2FtcGxlIDwgc2FtcGxlX21pbikgc2Ft
cGxlX21pbiA9IHNhbXBsZTsKKyAgICAgICAgICBFWFBFQ1RfR0Uoc2FtcGxlLCBiZWZvcmUubWlu
KCkpIDw8IGJlZm9yZTsKKyAgICAgICAgICBFWFBFQ1RfTEUoc2FtcGxlLCBiZWZvcmUubWF4KCkp
IDw8IGJlZm9yZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXN0ZDo6aXNfc2FtZTxUeXBlUGFy
YW0sIGxvbmcgZG91YmxlPjo6dmFsdWUpIHsKKyAgICAgICAgICBBQlNMX0lOVEVSTkFMX0xPRygK
KyAgICAgICAgICAgICAgSU5GTywgYWJzbDo6U3RyRm9ybWF0KCJSYW5nZXslZiwgJWZ9OiAlZiwg
JWYiLCBtZWFuLCBzdGRkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
YW1wbGVfbWluLCBzYW1wbGVfbWF4KSk7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBzczsKKyAgICAgICAgc3MgPDwgYmVmb3JlOworCisgICAgICAgIGlmICghc3RkOjpp
c2Zpbml0ZShtZWFuKSB8fCAhc3RkOjppc2Zpbml0ZShzdGRkZXYpKSB7CisgICAgICAgICAgLy8g
U3RyZWFtcyBkbyBub3QgcGFyc2UgaW5mL25hbi4KKyAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFZhbGlkYXRlIHN0cmVhbSBzZXJpYWxpemF0aW9uLgorICAgICAg
ICBhYnNsOjpnYXVzc2lhbl9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBhZnRlcigtMC41M2YsIDIu
MzQ1NmYpOworCisgICAgICAgIEVYUEVDVF9ORShiZWZvcmUubWVhbigpLCBhZnRlci5tZWFuKCkp
OworICAgICAgICBFWFBFQ1RfTkUoYmVmb3JlLnN0ZGRldigpLCBhZnRlci5zdGRkZXYoKSk7Cisg
ICAgICAgIEVYUEVDVF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgICAgICAg
IEVYUEVDVF9ORShiZWZvcmUsIGFmdGVyKTsKKworICAgICAgICBzcyA+PiBhZnRlcjsKKworI2lm
IGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX1BQQzY0X18pIHx8IGRlZmluZWQo
X19wb3dlcnBjX18pIHx8IFwKKyAgICBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19QUENf
XykKKyAgICAgICAgaWYgKHN0ZDo6aXNfc2FtZTxUeXBlUGFyYW0sIGxvbmcgZG91YmxlPjo6dmFs
dWUpIHsKKyAgICAgICAgICAvLyBSb3VuZHRyaXBwaW5nIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBy
ZXF1aXJlcyBzdWZmaWNpZW50IHByZWNpc2lvbgorICAgICAgICAgIC8vIHRvIHJlY29uc3RydWN0
IHRoZSBleGFjdCB2YWx1ZS4gIEl0IHR1cm5zIG91dCB0aGF0IGxvbmcgZG91YmxlCisgICAgICAg
ICAgLy8gaGFzIHNvbWUgZXJyb3JzIGRvaW5nIHRoaXMgb24gcHBjLCBwYXJ0aWN1bGFybHkgZm9y
IHZhbHVlcworICAgICAgICAgIC8vIG5lYXIgezEuMCArLy0gZXBzaWxvbn0uCisgICAgICAgICAg
aWYgKG1lYW4gPD0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSAmJgorICAgICAg
ICAgICAgICBtZWFuID49IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCkpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxkb3VibGU+KGJlZm9yZS5tZWFuKCkp
LAorICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oYWZ0ZXIubWVhbigp
KSkKKyAgICAgICAgICAgICAgICA8PCBzcy5zdHIoKTsKKyAgICAgICAgICB9CisgICAgICAgICAg
aWYgKHN0ZGRldiA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpICYmCisgICAg
ICAgICAgICAgIHN0ZGRldiA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgp
KSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8ZG91YmxlPihiZWZvcmUuc3Rk
ZGV2KCkpLAorICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oYWZ0ZXIu
c3RkZGV2KCkpKQorICAgICAgICAgICAgICAgIDw8IHNzLnN0cigpOworICAgICAgICAgIH0KKyAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgRVhQRUNUX0VR
KGJlZm9yZS5tZWFuKCksIGFmdGVyLm1lYW4oKSk7CisgICAgICAgIEVYUEVDVF9FUShiZWZvcmUu
c3RkZGV2KCksIGFmdGVyLnN0ZGRldigpKSAgLy8KKyAgICAgICAgICAgIDw8IHNzLnN0cigpIDw8
ICIgIiAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgPDwgKHNzLmdvb2QoKSA/
ICJnb29kICIgOiAiIikgICAgICAgICAgIC8vCisgICAgICAgICAgICA8PCAoc3MuYmFkKCkgPyAi
YmFkICIgOiAiIikgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIDw8IChzcy5lb2YoKSA/ICJl
b2YgIiA6ICIiKSAgICAgICAgICAgICAvLworICAgICAgICAgICAgPDwgKHNzLmZhaWwoKSA/ICJm
YWlsICIgOiAiIik7CisgICAgICB9CisgICAgfQorICB9Cit9CisKKy8vIGh0dHA6Ly93d3cuaXRs
Lm5pc3QuZ292L2Rpdjg5OC9oYW5kYm9vay9lZGEvc2VjdGlvbjMvZWRhMzY2MS5odG0KKworY2xh
c3MgR2F1c3NpYW5Nb2RlbCB7CisgcHVibGljOgorICBHYXVzc2lhbk1vZGVsKGRvdWJsZSBtZWFu
LCBkb3VibGUgc3RkZGV2KSA6IG1lYW5fKG1lYW4pLCBzdGRkZXZfKHN0ZGRldikge30KKworICBk
b3VibGUgbWVhbigpIGNvbnN0IHsgcmV0dXJuIG1lYW5fOyB9CisgIGRvdWJsZSB2YXJpYW5jZSgp
IGNvbnN0IHsgcmV0dXJuIHN0ZGRldigpICogc3RkZGV2KCk7IH0KKyAgZG91YmxlIHN0ZGRldigp
IGNvbnN0IHsgcmV0dXJuIHN0ZGRldl87IH0KKyAgZG91YmxlIHNrZXcoKSBjb25zdCB7IHJldHVy
biAwOyB9CisgIGRvdWJsZSBrdXJ0b3NpcygpIGNvbnN0IHsgcmV0dXJuIDMuMDsgfQorCisgIC8v
IFRoZSBpbnZlcnNlIENERiwgb3IgUGVyY2VudFBvaW50IGZ1bmN0aW9uLgorICBkb3VibGUgSW52
ZXJzZUNERihkb3VibGUgcCkgeworICAgIEFCU0xfQVNTRVJUKHAgPj0gMC4wKTsKKyAgICBBQlNM
X0FTU0VSVChwIDwgMS4wKTsKKyAgICByZXR1cm4gbWVhbigpICsgc3RkZGV2KCkgKiAtYWJzbDo6
cmFuZG9tX2ludGVybmFsOjpJbnZlcnNlTm9ybWFsU3Vydml2YWwocCk7CisgIH0KKworIHByaXZh
dGU6CisgIGNvbnN0IGRvdWJsZSBtZWFuXzsKKyAgY29uc3QgZG91YmxlIHN0ZGRldl87Cit9Owor
CitzdHJ1Y3QgUGFyYW0geworICBkb3VibGUgbWVhbjsKKyAgZG91YmxlIHN0ZGRldjsKKyAgZG91
YmxlIHBfZmFpbDsgIC8vIFotVGVzdCBwcm9iYWJpbGl0eSBvZiBmYWlsdXJlLgorICBpbnQgdHJp
YWxzOyAgICAgLy8gWi1UZXN0IHRyaWFscy4KK307CisKKy8vIEdhdXNzaWFuRGlzdHJpYnV0aW9u
VGVzdHMgaW1wbGVtZW50cyBhIHotdGVzdCBmb3IgdGhlIGdhdXNzaWFuCisvLyBkaXN0cmlidXRp
b24uCitjbGFzcyBHYXVzc2lhbkRpc3RyaWJ1dGlvblRlc3RzIDogcHVibGljIHRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08UGFyYW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBHYXVzc2lhbk1vZGVsIHsKKyBwdWJsaWM6CisgIEdhdXNzaWFuRGlzdHJpYnV0aW9uVGVz
dHMoKQorICAgICAgOiBHYXVzc2lhbk1vZGVsKEdldFBhcmFtKCkubWVhbiwgR2V0UGFyYW0oKS5z
dGRkZXYpIHt9CisKKyAgLy8gU2luZ2xlWlRlc3QgcHJvdmlkZXMgYSBiYXNpYyB6LXNxdWFyZWQg
dGVzdCBvZiB0aGUgbWVhbiB2cy4gZXhwZWN0ZWQKKyAgLy8gbWVhbiBmb3IgZGF0YSBnZW5lcmF0
ZWQgYnkgdGhlIHBvaXNzb24gZGlzdHJpYnV0aW9uLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRD4K
KyAgYm9vbCBTaW5nbGVaVGVzdChjb25zdCBkb3VibGUgcCwgY29uc3Qgc2l6ZV90IHNhbXBsZXMp
OworCisgIC8vIFNpbmdsZUNoaVNxdWFyZWRUZXN0IHByb3ZpZGVzIGEgYmFzaWMgY2hpLXNxdWFy
ZWQgdGVzdCBvZiB0aGUgbm9ybWFsCisgIC8vIGRpc3RyaWJ1dGlvbi4KKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIEQ+CisgIGRvdWJsZSBTaW5nbGVDaGlTcXVhcmVkVGVzdCgpOworCisgIGFic2w6Oklu
c2VjdXJlQml0R2VuIHJuZ187Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRD4KK2Jvb2wgR2F1
c3NpYW5EaXN0cmlidXRpb25UZXN0czo6U2luZ2xlWlRlc3QoY29uc3QgZG91YmxlIHAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzYW1w
bGVzKSB7CisgIEQgZGlzKG1lYW4oKSwgc3RkZGV2KCkpOworCisgIHN0ZDo6dmVjdG9yPGRvdWJs
ZT4gZGF0YTsKKyAgZGF0YS5yZXNlcnZlKHNhbXBsZXMpOworICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNhbXBsZXM7IGkrKykgeworICAgIGNvbnN0IGRvdWJsZSB4ID0gZGlzKHJuZ18pOworICAg
IGRhdGEucHVzaF9iYWNrKHgpOworICB9CisKKyAgY29uc3QgZG91YmxlIG1heF9lcnIgPSBhYnNs
OjpyYW5kb21faW50ZXJuYWw6Ok1heEVycm9yVG9sZXJhbmNlKHApOworICBjb25zdCBhdXRvIG0g
PSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNvbXB1dGVEaXN0cmlidXRpb25Nb21lbnRzKGRhdGEp
OworICBjb25zdCBkb3VibGUgeiA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6WlNjb3JlKG1lYW4o
KSwgbSk7CisgIGNvbnN0IGJvb2wgcGFzcyA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6TmVhcigi
eiIsIHosIDAuMCwgbWF4X2Vycik7CisKKyAgLy8gTk9URTogSW5mb3JtYXRpb25hbCBzdGF0aXN0
aWNhbCB0ZXN0OgorICAvLworICAvLyBDb21wdXRlIHRoZSBKYXJxdWUtQmVyYSB0ZXN0IHN0YXRp
c3RpYyBnaXZlbiB0aGUgZXhjZXNzIHNrZXduZXNzCisgIC8vIGFuZCBrdXJ0b3Npcy4gVGhlIHN0
YXRpc3RpYyBpcyBkcmF3biBmcm9tIGEgY2hpLXNxdWFyZSgyKSBkaXN0cmlidXRpb24uCisgIC8v
IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0phcnF1ZSVFMiU4MCU5M0JlcmFfdGVzdAor
ICAvLworICAvLyBUaGUgbnVsbC1oeXBvdGhlc2lzIChub3JtYWwgZGlzdHJpYnV0aW9uKSBpcyBy
ZWplY3RlZCB3aGVuCisgIC8vIChwID0gMC4wNSA9PiBqYiA+IDUuOTkpCisgIC8vIChwID0gMC4w
MSA9PiBqYiA+IDkuMjEpCisgIC8vIE5PVEU6IEpCIGhhcyBhIGxhcmdlIHR5cGUtSSBlcnJvciBy
YXRlLCBzbyBpdCB3aWxsIHJlamVjdCB0aGUKKyAgLy8gbnVsbC1oeXBvdGhlc2lzIGV2ZW4gd2hl
biBpdCBpcyB0cnVlIG1vcmUgb2Z0ZW4gdGhhbiB0aGUgei10ZXN0LgorICAvLworICBjb25zdCBk
b3VibGUgamIgPQorICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtLm4pIC8gNi4wICoKKyAgICAg
IChzdGQ6OnBvdyhtLnNrZXduZXNzLCAyLjApICsgc3RkOjpwb3cobS5rdXJ0b3NpcyAtIDMuMCwg
Mi4wKSAvIDQuMCk7CisKKyAgaWYgKCFwYXNzIHx8IGpiID4gOS4yMSkgeworICAgIEFCU0xfSU5U
RVJOQUxfTE9HKAorICAgICAgICBJTkZPLCBhYnNsOjpTdHJGb3JtYXQoInA9JWYgbWF4X2Vycj0l
ZlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBtZWFuPSVmIHZzLiAlZlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzdGRkZXY9JWYgdnMuICVmXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNrZXduZXNzPSVmIHZzLiAlZlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiBrdXJ0b3Npcz0lZiB2cy4gJWZcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgej0lZiB2cy4gMFxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiBqYj0lZiB2cy4gOS4yMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwLCBtYXhfZXJyLCBtLm1lYW4sIG1lYW4oKSwgc3RkOjpzcXJ0KG0udmFyaWFuY2UpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZGV2KCksIG0uc2tld25lc3MsIHNrZXco
KSwgbS5rdXJ0b3NpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt1cnRvc2lzKCks
IHosIGpiKSk7CisgIH0KKyAgcmV0dXJuIHBhc3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBE
PgorZG91YmxlIEdhdXNzaWFuRGlzdHJpYnV0aW9uVGVzdHM6OlNpbmdsZUNoaVNxdWFyZWRUZXN0
KCkgeworICBjb25zdCBzaXplX3Qga1NhbXBsZXMgPSAxMDAwMDsKKyAgY29uc3QgaW50IGtCdWNr
ZXRzID0gNTA7CisKKyAgLy8gVGhlIEludmVyc2VDREYgaXMgdGhlIHBlcmNlbnQgcG9pbnQgZnVu
Y3Rpb24gb2YgdGhlCisgIC8vIGRpc3RyaWJ1dGlvbiwgYW5kIGNhbiBiZSB1c2VkIHRvIGFzc2ln
biBidWNrZXRzCisgIC8vIHJvdWdobHkgdW5pZm9ybWx5LgorICBzdGQ6OnZlY3Rvcjxkb3VibGU+
IGN1dG9mZnM7CisgIGNvbnN0IGRvdWJsZSBrSW5jID0gMS4wIC8gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihrQnVja2V0cyk7CisgIGZvciAoZG91YmxlIHAgPSBrSW5jOyBwIDwgMS4wOyBwICs9IGtJbmMp
IHsKKyAgICBjdXRvZmZzLnB1c2hfYmFjayhJbnZlcnNlQ0RGKHApKTsKKyAgfQorICBpZiAoY3V0
b2Zmcy5iYWNrKCkgIT0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSB7
CisgICAgY3V0b2Zmcy5wdXNoX2JhY2soc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpKTsKKyAgfQorCisgIEQgZGlzKG1lYW4oKSwgc3RkZGV2KCkpOworCisgIHN0ZDo6dmVj
dG9yPGludDMyX3Q+IGNvdW50cyhjdXRvZmZzLnNpemUoKSwgMCk7CisgIGZvciAoaW50IGogPSAw
OyBqIDwga1NhbXBsZXM7IGorKykgeworICAgIGNvbnN0IGRvdWJsZSB4ID0gZGlzKHJuZ18pOwor
ICAgIGF1dG8gaXQgPSBzdGQ6OnVwcGVyX2JvdW5kKGN1dG9mZnMuYmVnaW4oKSwgY3V0b2Zmcy5l
bmQoKSwgeCk7CisgICAgY291bnRzW3N0ZDo6ZGlzdGFuY2UoY3V0b2Zmcy5iZWdpbigpLCBpdCld
Kys7CisgIH0KKworICAvLyBOdWxsLWh5cG90aGVzaXMgaXMgdGhhdCB0aGUgZGlzdHJpYnV0aW9u
IGlzIGEgZ2F1c3NpYW4gZGlzdHJpYnV0aW9uCisgIC8vIHdpdGggdGhlIHByb3ZpZGVkIG1lYW4g
YW5kIHN0ZGRldiAobm90IGVzdGltYXRlZCBmcm9tIHRoZSBkYXRhKS4KKyAgY29uc3QgaW50IGRv
ZiA9IHN0YXRpY19jYXN0PGludD4oY291bnRzLnNpemUoKSkgLSAxOworCisgIC8vIE91ciB0aHJl
c2hvbGQgZm9yIGxvZ2dpbmcgaXMgMS1pbi01MC4KKyAgY29uc3QgZG91YmxlIHRocmVzaG9sZCA9
IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlVmFsdWUoZG9mLCAwLjk4KTsKKworICBj
b25zdCBkb3VibGUgZXhwZWN0ZWQgPQorICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihrU2FtcGxl
cykgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGNvdW50cy5zaXplKCkpOworCisgIGRvdWJsZSBjaGlf
c3F1YXJlID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVXaXRoRXhwZWN0ZWQoCisg
ICAgICBzdGQ6OmJlZ2luKGNvdW50cyksIHN0ZDo6ZW5kKGNvdW50cyksIGV4cGVjdGVkKTsKKyAg
ZG91YmxlIHAgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVBWYWx1ZShjaGlfc3F1
YXJlLCBkb2YpOworCisgIC8vIExvZyBpZiB0aGUgY2hpX3NxdWFyZSB2YWx1ZSBpcyBhYm92ZSB0
aGUgdGhyZXNob2xkLgorICBpZiAoY2hpX3NxdWFyZSA+IHRocmVzaG9sZCkgeworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY3V0b2Zmcy5zaXplKCk7IGkrKykgeworICAgICAgQUJTTF9JTlRFUk5B
TF9MT0coCisgICAgICAgICAgSU5GTywgYWJzbDo6U3RyRm9ybWF0KCIlZCA6ICglZikgPSAlZCIs
IGksIGN1dG9mZnNbaV0sIGNvdW50c1tpXSkpOworICAgIH0KKworICAgIEFCU0xfSU5URVJOQUxf
TE9HKAorICAgICAgICBJTkZPLCBhYnNsOjpTdHJDYXQoIm1lYW49IiwgbWVhbigpLCAiIHN0ZGRl
dj0iLCBzdGRkZXYoKSwgIlxuIiwgICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBl
eHBlY3RlZCAiLCBleHBlY3RlZCwgIlxuIiwgICAgICAgICAgICAgICAgICAvLworICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0NoaVNxdWFyZWQsICIgIiwgY2hpX3NxdWFyZSwgIiAoIiwgcCwg
IilcbiIsICAvLworICAgICAgICAgICAgICAgICAgICAgICAgICAga0NoaVNxdWFyZWQsICIgQCAw
Ljk4ID0gIiwgdGhyZXNob2xkKSk7CisgIH0KKyAgcmV0dXJuIHA7Cit9CisKK1RFU1RfUChHYXVz
c2lhbkRpc3RyaWJ1dGlvblRlc3RzLCBaVGVzdCkgeworICAvLyBUT0RPKGFic2wtdGVhbSk6IFJ1
biB0aGVzZSB0ZXN0cyBhZ2FpbnN0IHN0ZDo6bm9ybWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+Cisg
IC8vIHRvIHZhbGlkYXRlIG91dGNvbWVzIGFyZSBzaW1pbGFyLgorICBjb25zdCBzaXplX3Qga1Nh
bXBsZXMgPSAxMDAwMDsKKyAgY29uc3QgYXV0byYgcGFyYW0gPSBHZXRQYXJhbSgpOworICBjb25z
dCBpbnQgZXhwZWN0ZWRfZmFpbHVyZXMgPQorICAgICAgc3RkOjptYXgoMSwgc3RhdGljX2Nhc3Q8
aW50PihzdGQ6OmNlaWwocGFyYW0udHJpYWxzICogcGFyYW0ucF9mYWlsKSkpOworICBjb25zdCBk
b3VibGUgcCA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmVxdWlyZWRTdWNjZXNzUHJvYmFiaWxp
dHkoCisgICAgICBwYXJhbS5wX2ZhaWwsIHBhcmFtLnRyaWFscyk7CisKKyAgaW50IGZhaWx1cmVz
ID0gMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbS50cmlhbHM7IGkrKykgeworICAgIGZh
aWx1cmVzICs9CisgICAgICAgIFNpbmdsZVpUZXN0PGFic2w6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlv
bjxkb3VibGU+PihwLCBrU2FtcGxlcykgPyAwIDogMTsKKyAgfQorICBFWFBFQ1RfTEUoZmFpbHVy
ZXMsIGV4cGVjdGVkX2ZhaWx1cmVzKTsKK30KKworVEVTVF9QKEdhdXNzaWFuRGlzdHJpYnV0aW9u
VGVzdHMsIENoaVNxdWFyZWRUZXN0KSB7CisgIGNvbnN0IGludCBrVHJpYWxzID0gMjA7CisgIGlu
dCBmYWlsdXJlcyA9IDA7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVHJpYWxzOyBpKyspIHsK
KyAgICBkb3VibGUgcF92YWx1ZSA9CisgICAgICAgIFNpbmdsZUNoaVNxdWFyZWRUZXN0PGFic2w6
OmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbjxkb3VibGU+PigpOworICAgIGlmIChwX3ZhbHVlIDwgMC4w
MDI1KSB7ICAvLyAxLzQwMAorICAgICAgZmFpbHVyZXMrKzsKKyAgICB9CisgIH0KKyAgLy8gVGhl
cmUgaXMgYSAwLjA1JSBjaGFuY2Ugb2YgcHJvZHVjaW5nIGF0IGxlYXN0IG9uZSBmYWlsdXJlLCBz
byByYWlzZSB0aGUKKyAgLy8gZmFpbHVyZSB0aHJlc2hvbGQgaGlnaCBlbm91Z2ggdG8gYWxsb3cg
Zm9yIGEgZmxha2UgcmF0ZSBvZiBsZXNzIHRoYW4gb25lIGluCisgIC8vIDEwLDAwMC4KKyAgRVhQ
RUNUX0xFKGZhaWx1cmVzLCA0KTsKK30KKworc3RkOjp2ZWN0b3I8UGFyYW0+IEdlblBhcmFtcygp
IHsKKyAgcmV0dXJuIHsKKyAgICAgIC8vIE1lYW4gYXJvdW5kIDAuCisgICAgICBQYXJhbXswLjAs
IDEuMCwgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezAuMCwgMWUyLCAwLjAxLCAxMDB9LAorICAg
ICAgUGFyYW17MC4wLCAxZTQsIDAuMDEsIDEwMH0sCisgICAgICBQYXJhbXswLjAsIDFlOCwgMC4w
MSwgMTAwfSwKKyAgICAgIFBhcmFtezAuMCwgMWUxNiwgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFt
ezAuMCwgMWUtMywgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezAuMCwgMWUtNSwgMC4wMSwgMTAw
fSwKKyAgICAgIFBhcmFtezAuMCwgMWUtOSwgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezAuMCwg
MWUtMTcsIDAuMDEsIDEwMH0sCisKKyAgICAgIC8vIE1lYW4gYXJvdW5kIDEuCisgICAgICBQYXJh
bXsxLjAsIDEuMCwgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezEuMCwgMWUyLCAwLjAxLCAxMDB9
LAorICAgICAgUGFyYW17MS4wLCAxZS0yLCAwLjAxLCAxMDB9LAorCisgICAgICAvLyBNZWFuIGFy
b3VuZCAxMDAgLyAtMTAwCisgICAgICBQYXJhbXsxZTIsIDEuMCwgMC4wMSwgMTAwfSwKKyAgICAg
IFBhcmFtey0xZTIsIDEuMCwgMC4wMSwgMTAwfSwKKyAgICAgIFBhcmFtezFlMiwgMWU2LCAwLjAx
LCAxMDB9LAorICAgICAgUGFyYW17LTFlMiwgMWU2LCAwLjAxLCAxMDB9LAorCisgICAgICAvLyBN
b3JlIGV4dHJlbWUKKyAgICAgIFBhcmFtezFlNCwgMWU0LCAwLjAxLCAxMDB9LAorICAgICAgUGFy
YW17MWU4LCAxZTQsIDAuMDEsIDEwMH0sCisgICAgICBQYXJhbXsxZTEyLCAxZTQsIDAuMDEsIDEw
MH0sCisgIH07Cit9CisKK3N0ZDo6c3RyaW5nIFBhcmFtTmFtZShjb25zdCA6OnRlc3Rpbmc6OlRl
c3RQYXJhbUluZm88UGFyYW0+JiBpbmZvKSB7CisgIGNvbnN0IGF1dG8mIHAgPSBpbmZvLnBhcmFt
OworICBzdGQ6OnN0cmluZyBuYW1lID0gYWJzbDo6U3RyQ2F0KCJtZWFuXyIsIGFic2w6OlNpeERp
Z2l0cyhwLm1lYW4pLCAiX19zdGRkZXZfIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhYnNsOjpTaXhEaWdpdHMocC5zdGRkZXYpKTsKKyAgcmV0dXJuIGFic2w6OlN0clJlcGxh
Y2VBbGwobmFtZSwge3siKyIsICJfIn0sIHsiLSIsICJfIn0sIHsiLiIsICJfIn19KTsKK30KKwor
SU5TVEFOVElBVEVfVEVTVF9TVUlURV9QKCwgR2F1c3NpYW5EaXN0cmlidXRpb25UZXN0cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKEdlblBhcmFtcygpKSwg
UGFyYW1OYW1lKTsKKworLy8gTk9URTogYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uIGlzIG5v
dCBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4KK1RFU1QoR2F1c3NpYW5EaXN0cmlidXRpb25UZXN0
LCBTdGFiaWxpdHlUZXN0KSB7CisgIC8vIGFic2w6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbiBzdGFi
aWxpdHkgcmVsaWVzIG9uIHRoZSB1bmRlcmx5aW5nIHppZ25vcgorICAvLyBkYXRhLCBhYnNsOjpy
YW5kb21faW50ZXJuYTo6UmFuZFU2NFRvRG91YmxlLCBzdGQ6OmV4cCwgc3RkOjpsb2csIGFuZAor
ICAvLyBzdGQ6OmFicy4KKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVy
YmcoCisgICAgICB7MHgwMDAzZWI3NmY2ZjdmNzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGws
IDB4QzMzMkRERUZCRTZDNUFBNXVsbCwKKyAgICAgICAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4
MkFFRjdEQUQ1QjZFMkY4NHVsbCwgMHgxNTIxQjYyODI5MDc2MTcwdWxsLAorICAgICAgIDB4RUNE
RDQ3NzU2MTlGMTUxMHVsbCwgMHgxM0NDQTgzMEVCNjFCRDk2dWxsLCAweDAzMzRGRTFFQUEwMzYz
Q0Z1bGwsCisgICAgICAgMHhCNTczNUM5MDRDNzBBMjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1
bGwsIDB4RUVDQzg2QkM2MDYyMkNBN3VsbH0pOworCisgIHN0ZDo6dmVjdG9yPGludD4gb3V0cHV0
KDExKTsKKworICB7CisgICAgYWJzbDo6Z2F1c3NpYW5fZGlzdHJpYnV0aW9uPGRvdWJsZT4gZGlz
dDsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0
KSwKKyAgICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDEwMDAw
MDAwLjAgKiBkaXN0KHVyYmcpKTsgfSk7CisKKyAgICBFWFBFQ1RfRVEoMTMsIHVyYmcuaW52b2Nh
dGlvbnMoKSk7CisgICAgRVhQRUNUX1RIQVQob3V0cHV0LCAgLy8KKyAgICAgICAgICAgICAgICB0
ZXN0aW5nOjpFbGVtZW50c0FyZSgxNDk0LCAyNTUxODg0MSwgOTk5MTU1MCwgMTM1MTg1NiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMjAzNzMyMzgsIDM0NTY2ODIsIDMz
MzUzMCwgLTY4MDQ5ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTE1
Mjc5NTgwLCAtMTY0NTk2NTQsIDE0OTQpKTsKKyAgfQorCisgIHVyYmcucmVzZXQoKTsKKyAgewor
ICAgIGFic2w6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbjxmbG9hdD4gZGlzdDsKKyAgICBzdGQ6Omdl
bmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwKKyAgICAgICAgICAg
ICAgICAgIFsmXSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDEwMDAwMDAuMGYgKiBkaXN0KHVy
YmcpKTsgfSk7CisKKyAgICBFWFBFQ1RfRVEoMTMsIHVyYmcuaW52b2NhdGlvbnMoKSk7CisgICAg
RVhQRUNUX1RIQVQoCisgICAgICAgIG91dHB1dCwgIC8vCisgICAgICAgIHRlc3Rpbmc6OkVsZW1l
bnRzQXJlKDE0OSwgMjU1MTg4NCwgOTk5MTU1LCAxMzUxODUsIC0yMDM3MzIzLCAzNDU2NjgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzMzUzLCAtNjgwNDk4LCAtMTUyNzk1OCwgLTE2
NDU5NjUsIDE0OSkpOworICB9Cit9CisKKy8vIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24tc3Bl
Y2lmaWMgdGVzdC4gSWYgYW55IHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uCisvLyBjaGFuZ2Vz
LCB0aGVuIGl0IGlzIGxpa2VseSB0aGF0IHRoaXMgdGVzdCB3aWxsIGNoYW5nZSBhcyB3ZWxsLgor
Ly8gQWxzbywgaWYgZGVwZW5kZW5jaWVzIG9mIHRoZSBkaXN0cmlidXRpb24gY2hhbmdlLCBzdWNo
IGFzIFJhbmRVNjRUb0RvdWJsZSwKKy8vIHRoZW4gdGhpcyBpcyBhbHNvIGxpa2VseSB0byBjaGFu
Z2UuCitURVNUKEdhdXNzaWFuRGlzdHJpYnV0aW9uVGVzdCwgQWxnb3JpdGhtQm91bmRzKSB7Cisg
IGFic2w6OmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IGRpc3Q7CisKKyAgLy8gSW4gfjk1
JSBvZiBjYXNlcywgYSBzaW5nbGUgdmFsdWUgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgb3V0cHV0
LgorICAvLyBmb3IgYWxsIGlucHV0cyB3aGVyZSB8eHwgPCAwLjc1MDQ2MTAyMTM4OSB0aGlzIHNo
b3VsZCBiZSB0aGUgY2FzZS4KKyAgLy8KKyAgLy8gVGhlIGV4YWN0IGNvbnN0cmFpbnRzIGFyZSBi
YXNlZCBvbiB0aGUgemlnZ3VyYXQgdGFibGVzLCBhbmQgYW55CisgIC8vIGNoYW5nZXMgdG8gdGhl
IHppZ2d1cmF0IHRhYmxlcyBtYXkgcmVxdWlyZSBhZGp1c3RpbmcgdGhlc2UgYm91bmRzLgorICAv
LworICAvLyBmb3IgaSBpbiByYW5nZSgwLCBsZW4oWCktMSk6CisgIC8vICAgcHJpbnQgaSwgWFtp
KzFdL1hbaV0sIChYW2krMV0vWFtpXSA+IDAuOTg0Mzc1KQorICAvLworICAvLyAwLjEyNSA8PSB8
dmFsdWVzfCA8PSAwLjc1CisgIGNvbnN0IHVpbnQ2NF90IGtWYWx1ZXNbXSA9IHsKKyAgICAgIDB4
MTAwMDAwMDAwMDAwMDEwMHVsbCwgMHgyMDAwMDAwMDAwMDAwMTAwdWxsLCAweDMwMDAwMDAwMDAw
MDAxMDB1bGwsCisgICAgICAweDQwMDAwMDAwMDAwMDAxMDB1bGwsIDB4NTAwMDAwMDAwMDAwMDEw
MHVsbCwgMHg2MDAwMDAwMDAwMDAwMTAwdWxsLAorICAgICAgLy8gbmVnYXRpdmUgdmFsdWVzCisg
ICAgICAweDkwMDAwMDAwMDAwMDAxMDB1bGwsIDB4YTAwMDAwMDAwMDAwMDEwMHVsbCwgMHhiMDAw
MDAwMDAwMDAwMTAwdWxsLAorICAgICAgMHhjMDAwMDAwMDAwMDAwMTAwdWxsLCAweGQwMDAwMDAw
MDAwMDAxMDB1bGwsIDB4ZTAwMDAwMDAwMDAwMDEwMHVsbH07CisKKyAgLy8gMC44NzUgPD0gfHZh
bHVlc3wgPD0gMC45ODQzNzUKKyAgY29uc3QgdWludDY0X3Qga0V4dHJhVmFsdWVzW10gPSB7Cisg
ICAgICAweDcwMDAwMDAwMDAwMDAxMDB1bGwsIDB4NzgwMDAwMDAwMDAwMDEwMHVsbCwgIC8vCisg
ICAgICAweDdjMDAwMDAwMDAwMDAxMDB1bGwsIDB4N2UwMDAwMDAwMDAwMDEwMHVsbCwgIC8vCisg
ICAgICAvLyBuZWdhdGl2ZSB2YWx1ZXMKKyAgICAgIDB4ZjAwMDAwMDAwMDAwMDEwMHVsbCwgMHhm
ODAwMDAwMDAwMDAwMTAwdWxsLCAgLy8KKyAgICAgIDB4ZmMwMDAwMDAwMDAwMDEwMHVsbCwgMHhm
ZTAwMDAwMDAwMDAwMTAwdWxsfTsKKworICBhdXRvIG1ha2VfYm94ID0gW10odWludDY0X3Qgdiwg
dWludDY0X3QgYm94KSB7CisgICAgcmV0dXJuICh2ICYgMHhmZmZmZmZmZmZmZmZmZjgwdWxsKSB8
IGJveDsKKyAgfTsKKworICAvLyBUaGUgYm94IGlzIHRoZSBsb3dlciA3IGJpdHMgb2YgdGhlIHZh
bHVlLiBXaGVuIHRoZSBib3ggPT0gMCwgdGhlbgorICAvLyB0aGUgYWxnb3JpdGhtIHVzZXMgYW4g
ZXNjYXBlIGhhdGNoIHRvIHNlbGVjdCB0aGUgcmVzdWx0IGZvciBsYXJnZQorICAvLyBvdXRwdXRz
LgorICBmb3IgKHVpbnQ2NF90IGJveCA9IDA7IGJveCA8IDB4N2Y7IGJveCsrKSB7CisgICAgZm9y
IChjb25zdCB1aW50NjRfdCB2IDoga1ZhbHVlcykgeworICAgICAgLy8gRXh0cmEgdmFsdWVzIGFy
ZSBhZGRlZCB0byB0aGUgc2VxdWVuY2UgdG8gYXR0ZW1wdCB0byBhdm9pZAorICAgICAgLy8gaW5m
aW5pdGUgbG9vcHMgZnJvbSByZWplY3Rpb24gc2FtcGxpbmcgb24gYnVncy9lcnJvcnMuCisgICAg
ICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAgICAgICAgICB7
bWFrZV9ib3godiwgYm94KSwgMHgwMDAzZWI3NmY2ZjdmNzU1dWxsLCAweDVGQ0VBNTBGREIyRjk1
M0J1bGx9KTsKKworICAgICAgYXV0byBhID0gZGlzdCh1cmJnKTsKKyAgICAgIEVYUEVDVF9FUSgx
LCB1cmJnLmludm9jYXRpb25zKCkpIDw8IGJveCA8PCAiICIgPDwgc3RkOjpoZXggPDwgdjsKKyAg
ICAgIGlmICh2ICYgMHg4MDAwMDAwMDAwMDAwMDAwdWxsKSB7CisgICAgICAgIEVYUEVDVF9MVChh
LCAwLjApIDw8IGJveCA8PCAiICIgPDwgc3RkOjpoZXggPDwgdjsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIEVYUEVDVF9HVChhLCAwLjApIDw8IGJveCA8PCAiICIgPDwgc3RkOjpoZXggPDwgdjsK
KyAgICAgIH0KKyAgICB9CisgICAgaWYgKGJveCA+IDEwICYmIGJveCA8IDEwMCkgeworICAgICAg
Ly8gVGhlIGNlbnRlciBib3hlcyB1c2UgdGhlIGZhc3QgYWxnb3JpdGhtIGZvciBtb3JlCisgICAg
ICAvLyB0aGFuIDk4LjQzNzUlIG9mIHZhbHVlcy4KKyAgICAgIGZvciAoY29uc3QgdWludDY0X3Qg
diA6IGtFeHRyYVZhbHVlcykgeworICAgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVl
bmNlX3VyYmcgdXJiZygKKyAgICAgICAgICAgIHttYWtlX2JveCh2LCBib3gpLCAweDAwMDNlYjc2
ZjZmN2Y3NTV1bGwsIDB4NUZDRUE1MEZEQjJGOTUzQnVsbH0pOworCisgICAgICAgIGF1dG8gYSA9
IGRpc3QodXJiZyk7CisgICAgICAgIEVYUEVDVF9FUSgxLCB1cmJnLmludm9jYXRpb25zKCkpIDw8
IGJveCA8PCAiICIgPDwgc3RkOjpoZXggPDwgdjsKKyAgICAgICAgaWYgKHYgJiAweDgwMDAwMDAw
MDAwMDAwMDB1bGwpIHsKKyAgICAgICAgICBFWFBFQ1RfTFQoYSwgMC4wKSA8PCBib3ggPDwgIiAi
IDw8IHN0ZDo6aGV4IDw8IHY7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgRVhQRUNUX0dU
KGEsIDAuMCkgPDwgYm94IDw8ICIgIiA8PCBzdGQ6OmhleCA8PCB2OworICAgICAgICB9CisgICAg
ICB9CisgICAgfQorICB9CisKKyAgLy8gV2hlbiB0aGUgYm94ID09IDAsIHRoZSBmYWxsYmFjayBh
bGdvcml0aG0gdXNlcyBhIHJhdGlvIG9mIHVuaWZvcm1zLAorICAvLyB3aGljaCBjb25zdW1lcyAy
IGFkZGl0aW9uYWwgdmFsdWVzIGZyb20gdGhlIHVyYmcuCisgIC8vIEZhbGxiYWNrIGFsc28gcmVx
dWlyZXMgdGhhdCB0aGUgaW5pdGlhbCB2YWx1ZSBiZSA+IDAuOTI3MTU4NjAyNjA5NjY4MS4KKyAg
YXV0byBtYWtlX2ZhbGxiYWNrID0gW10odWludDY0X3QgdikgeyByZXR1cm4gKHYgJiAweGZmZmZm
ZmZmZmZmZmZmODB1bGwpOyB9OworCisgIGRvdWJsZSB0YWlsWzJdOworICB7CisgICAgLy8gMC45
Mzc1CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisgICAg
ICAgIHttYWtlX2ZhbGxiYWNrKDB4NzgwMDAwMDAwMDAwMDAwMHVsbCksIDB4MTNDQ0E4MzBFQjYx
QkQ5NnVsbCwKKyAgICAgICAgIDB4MDAwMDAwNzZmNmY3Zjc1NXVsbH0pOworICAgIHRhaWxbMF0g
PSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9FUSgzLCB1cmJnLmludm9jYXRpb25zKCkpOworICAg
IEVYUEVDVF9HVCh0YWlsWzBdLCAwKTsKKyAgfQorICB7CisgICAgLy8gLTAuOTM3NQorICAgIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKAorICAgICAgICB7bWFrZV9m
YWxsYmFjaygweGY4MDAwMDAwMDAwMDAwMDB1bGwpLCAweDEzQ0NBODMwRUI2MUJEOTZ1bGwsCisg
ICAgICAgICAweDAwMDAwMDc2ZjZmN2Y3NTV1bGx9KTsKKyAgICB0YWlsWzFdID0gZGlzdCh1cmJn
KTsKKyAgICBFWFBFQ1RfRVEoMywgdXJiZy5pbnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfTFQo
dGFpbFsxXSwgMCk7CisgIH0KKyAgRVhQRUNUX0VRKHRhaWxbMF0sIC10YWlsWzFdKTsKKyAgRVhQ
RUNUX0VRKDQxODYxMCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGFpbFswXSAqIDEwMDAwMC4wKSk7
CisKKyAgLy8gV2hlbiB0aGUgYm94ICE9IDAsIHRoZSBmYWxsYmFjayBhbGdvcml0aG0gY29tcHV0
ZXMgYSB3ZWRnZSBmdW5jdGlvbi4KKyAgLy8gRGVwZW5kaW5nIG9uIHRoZSBib3gsIHRoZSB0aHJl
c2hvbGQgZm9yIHZhcmllcyBhcyBoaWdoIGFzCisgIC8vIDAuOTkxNTIyNDgwMjI4LgorICB7Cisg
ICAgLy8gMC45OTIxODc1LCAwLjg3NQorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVu
Y2VfdXJiZyB1cmJnKAorICAgICAgICB7bWFrZV9ib3goMHg3ZjAwMDAwMDAwMDAwMDAwdWxsLCAx
MjApLCAweGUwMDAwMDAwMDAwMDAwMDF1bGwsCisgICAgICAgICAweDEzQ0NBODMwRUI2MUJEOTZ1
bGx9KTsKKyAgICB0YWlsWzBdID0gZGlzdCh1cmJnKTsKKyAgICBFWFBFQ1RfRVEoMiwgdXJiZy5p
bnZvY2F0aW9ucygpKTsKKyAgICBFWFBFQ1RfR1QodGFpbFswXSwgMCk7CisgIH0KKyAgeworICAg
IC8vIC0wLjk5MjE4NzUsIDAuODc1CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5j
ZV91cmJnIHVyYmcoCisgICAgICAgIHttYWtlX2JveCgweGZmMDAwMDAwMDAwMDAwMDB1bGwsIDEy
MCksIDB4ZTAwMDAwMDAwMDAwMDAwMXVsbCwKKyAgICAgICAgIDB4MTNDQ0E4MzBFQjYxQkQ5NnVs
bH0pOworICAgIHRhaWxbMV0gPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9FUSgyLCB1cmJnLmlu
dm9jYXRpb25zKCkpOworICAgIEVYUEVDVF9MVCh0YWlsWzFdLCAwKTsKKyAgfQorICBFWFBFQ1Rf
RVEodGFpbFswXSwgLXRhaWxbMV0pOworICBFWFBFQ1RfRVEoNjE5NDgsIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHRhaWxbMF0gKiAxMDAwMDAuMCkpOworCisgIC8vIEZhbGxiYWNrIHJlamVjdGVkLCB0
cnkgYWdhaW4uCisgIHsKKyAgICAvLyAtMC45OTIxODc1LCAwLjA2MjUKKyAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWw6OnNlcXVlbmNlX3VyYmcgdXJiZygKKyAgICAgICAge21ha2VfYm94KDB4ZmYw
MDAwMDAwMDAwMDAwMHVsbCwgMTIwKSwgMHgxMDAwMDAwMDAwMDAwMDAxLAorICAgICAgICAgbWFr
ZV9ib3goMHgxMDAwMDAwMDAwMDAwMTAwdWxsLCA1MCksIDB4MTNDQ0E4MzBFQjYxQkQ5NnVsbH0p
OworICAgIGRpc3QodXJiZyk7CisgICAgRVhQRUNUX0VRKDMsIHVyYmcuaW52b2NhdGlvbnMoKSk7
CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vZ2Vu
ZXJhdG9yc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2dlbmVyYXRvcnNfdGVzdC5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MTcyNWYxMzljZDNjOTVmNzQyOGUwZjBjNGNjYzZhNTE1Zjk3OTdkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2dlbmVyYXRvcnNfdGVzdC5jYwpAQCAtMCwwICsxLDE3OSBA
QAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxj
c3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUg
PHZlY3Rvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vZGlzdHJpYnV0aW9ucy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3JhbmRvbS5oIgorCitu
YW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3ZvaWQgVGVzdFVuaWZvcm0o
VVJCRyogZ2VuKSB7CisgIC8vIFthLCBiKSBkZWZhdWx0LXNlbWFudGljcywgaW5mZXJyZWQgdHlw
ZXMuCisgIGFic2w6OlVuaWZvcm0oKmdlbiwgMCwgMTAwKTsgICAgIC8vIGludAorICBhYnNsOjpV
bmlmb3JtKCpnZW4sIDAsIDEuMCk7ICAgICAvLyBQcm9tb3RlZCB0byBkb3VibGUKKyAgYWJzbDo6
VW5pZm9ybSgqZ2VuLCAwLjBmLCAxLjApOyAgLy8gUHJvbW90ZWQgdG8gZG91YmxlCisgIGFic2w6
OlVuaWZvcm0oKmdlbiwgMC4wLCAxLjApOyAgIC8vIGRvdWJsZQorICBhYnNsOjpVbmlmb3JtKCpn
ZW4sIC0xLCAxTCk7ICAgICAvLyBQcm9tb3RlZCB0byBsb25nCisKKyAgLy8gUm9sbCBhIGRpZS4K
KyAgYWJzbDo6VW5pZm9ybShhYnNsOjpJbnRlcnZhbENsb3NlZENsb3NlZCwgKmdlbiwgMSwgNik7
CisKKyAgLy8gR2V0IGEgZnJhY3Rpb24uCisgIGFic2w6OlVuaWZvcm0oYWJzbDo6SW50ZXJ2YWxP
cGVuT3BlbiwgKmdlbiwgMC4wLCAxLjApOworCisgIC8vIEFzc2lnbiBhIHZhbHVlIHRvIGEgcmFu
ZG9tIGVsZW1lbnQuCisgIHN0ZDo6dmVjdG9yPGludD4gZWxlbXMgPSB7MTAsIDIwLCAzMCwgNDAs
IDUwfTsKKyAgZWxlbXNbYWJzbDo6VW5pZm9ybSgqZ2VuLCAwdSwgZWxlbXMuc2l6ZSgpKV0gPSA1
OworICBlbGVtc1thYnNsOjpVbmlmb3JtPHNpemVfdD4oKmdlbiwgMCwgZWxlbXMuc2l6ZSgpKV0g
PSAzOworCisgIC8vIENob29zZSBzb21lIGVwc2lsb24gYXJvdW5kIHplcm8uCisgIGFic2w6OlVu
aWZvcm0oYWJzbDo6SW50ZXJ2YWxPcGVuT3BlbiwgKmdlbiwgLTEuMCwgMS4wKTsKKworICAvLyAo
YSwgYikgc2VtYW50aWNzLCBpbmZlcnJlZCB0eXBlcy4KKyAgYWJzbDo6VW5pZm9ybShhYnNsOjpJ
bnRlcnZhbE9wZW5PcGVuLCAqZ2VuLCAwLCAxLjApOyAgLy8gUHJvbW90ZWQgdG8gZG91YmxlCisK
KyAgLy8gRXhwbGljdCBvdmVycmlkaW5nIG9mIHR5cGVzLgorICBhYnNsOjpVbmlmb3JtPGludD4o
KmdlbiwgMCwgMTAwKTsKKyAgYWJzbDo6VW5pZm9ybTxpbnQ4X3Q+KCpnZW4sIDAsIDEwMCk7Cisg
IGFic2w6OlVuaWZvcm08aW50MTZfdD4oKmdlbiwgMCwgMTAwKTsKKyAgYWJzbDo6VW5pZm9ybTx1
aW50MTZfdD4oKmdlbiwgMCwgMTAwKTsKKyAgYWJzbDo6VW5pZm9ybTxpbnQzMl90PigqZ2VuLCAw
LCAxIDw8IDEwKTsKKyAgYWJzbDo6VW5pZm9ybTx1aW50MzJfdD4oKmdlbiwgMCwgMSA8PCAxMCk7
CisgIGFic2w6OlVuaWZvcm08aW50NjRfdD4oKmdlbiwgMCwgMSA8PCAxMCk7CisgIGFic2w6OlVu
aWZvcm08dWludDY0X3Q+KCpnZW4sIDAsIDEgPDwgMTApOworCisgIGFic2w6OlVuaWZvcm08Zmxv
YXQ+KCpnZW4sIDAuMCwgMS4wKTsKKyAgYWJzbDo6VW5pZm9ybTxmbG9hdD4oKmdlbiwgMCwgMSk7
CisgIGFic2w6OlVuaWZvcm08ZmxvYXQ+KCpnZW4sIC0xLCAxKTsKKyAgYWJzbDo6VW5pZm9ybTxk
b3VibGU+KCpnZW4sIDAuMCwgMS4wKTsKKworICBhYnNsOjpVbmlmb3JtPGZsb2F0PigqZ2VuLCAt
MS4wLCAwKTsKKyAgYWJzbDo6VW5pZm9ybTxkb3VibGU+KCpnZW4sIC0xLjAsIDApOworCisgIC8v
IFRhZ2dlZAorICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oYWJzbDo6SW50ZXJ2YWxDbG9zZWRDbG9z
ZWQsICpnZW4sIDAsIDEpOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oYWJzbDo6SW50ZXJ2YWxD
bG9zZWRPcGVuLCAqZ2VuLCAwLCAxKTsKKyAgYWJzbDo6VW5pZm9ybTxkb3VibGU+KGFic2w6Oklu
dGVydmFsT3Blbk9wZW4sICpnZW4sIDAsIDEpOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oYWJz
bDo6SW50ZXJ2YWxPcGVuQ2xvc2VkLCAqZ2VuLCAwLCAxKTsKKyAgYWJzbDo6VW5pZm9ybTxkb3Vi
bGU+KGFic2w6OkludGVydmFsQ2xvc2VkQ2xvc2VkLCAqZ2VuLCAwLCAxKTsKKyAgYWJzbDo6VW5p
Zm9ybTxkb3VibGU+KGFic2w6OkludGVydmFsT3Blbk9wZW4sICpnZW4sIDAsIDEpOworCisgIGFi
c2w6OlVuaWZvcm08aW50PihhYnNsOjpJbnRlcnZhbENsb3NlZENsb3NlZCwgKmdlbiwgMCwgMTAw
KTsKKyAgYWJzbDo6VW5pZm9ybTxpbnQ+KGFic2w6OkludGVydmFsQ2xvc2VkT3BlbiwgKmdlbiwg
MCwgMTAwKTsKKyAgYWJzbDo6VW5pZm9ybTxpbnQ+KGFic2w6OkludGVydmFsT3Blbk9wZW4sICpn
ZW4sIDAsIDEwMCk7CisgIGFic2w6OlVuaWZvcm08aW50PihhYnNsOjpJbnRlcnZhbE9wZW5DbG9z
ZWQsICpnZW4sIDAsIDEwMCk7CisgIGFic2w6OlVuaWZvcm08aW50PihhYnNsOjpJbnRlcnZhbENs
b3NlZENsb3NlZCwgKmdlbiwgMCwgMTAwKTsKKyAgYWJzbDo6VW5pZm9ybTxpbnQ+KGFic2w6Oklu
dGVydmFsT3Blbk9wZW4sICpnZW4sIDAsIDEwMCk7CisKKyAgLy8gV2l0aCAqZ2VuZXJhdG9yIGFz
IGFuIFItdmFsdWUgcmVmZXJlbmNlLgorICBhYnNsOjpVbmlmb3JtPGludD4oVVJCRygpLCAwLCAx
MDApOworICBhYnNsOjpVbmlmb3JtPGRvdWJsZT4oVVJCRygpLCAwLjAsIDEuMCk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordm9pZCBUZXN0RXhwb25lbnRpYWwoVVJCRyogZ2VuKSB7
CisgIGFic2w6OkV4cG9uZW50aWFsPGZsb2F0PigqZ2VuKTsKKyAgYWJzbDo6RXhwb25lbnRpYWw8
ZG91YmxlPigqZ2VuKTsKKyAgYWJzbDo6RXhwb25lbnRpYWw8ZG91YmxlPihVUkJHKCkpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3ZvaWQgVGVzdFBvaXNzb24oVVJCRyogZ2VuKSB7
CisgIC8vIFtyYW5kLmRpc3QucG9pc10gSW5kaWNhdGVzIHRoYXQgdGhlIHN0ZDo6cG9pc3Nvbl9k
aXN0cmlidXRpb24KKyAgLy8gaXMgcGFyYW1ldGVyaXplZCBieSBJbnRUeXBlLCBob3dldmVyIE1T
VkMgZG9lcyBub3QgYWxsb3cgOC1iaXQKKyAgLy8gdHlwZXMuCisgIGFic2w6OlBvaXNzb248aW50
PigqZ2VuKTsKKyAgYWJzbDo6UG9pc3NvbjxpbnQxNl90PigqZ2VuKTsKKyAgYWJzbDo6UG9pc3Nv
bjx1aW50MTZfdD4oKmdlbik7CisgIGFic2w6OlBvaXNzb248aW50MzJfdD4oKmdlbik7CisgIGFi
c2w6OlBvaXNzb248dWludDMyX3Q+KCpnZW4pOworICBhYnNsOjpQb2lzc29uPGludDY0X3Q+KCpn
ZW4pOworICBhYnNsOjpQb2lzc29uPHVpbnQ2NF90PigqZ2VuKTsKKyAgYWJzbDo6UG9pc3Nvbjx1
aW50NjRfdD4oVVJCRygpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit2b2lkIFRl
c3RCZXJub3VsbGkoVVJCRyogZ2VuKSB7CisgIGFic2w6OkJlcm5vdWxsaSgqZ2VuLCAwLjUpOwor
ICBhYnNsOjpCZXJub3VsbGkoKmdlbiwgMC41KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVS
Qkc+Cit2b2lkIFRlc3RaaXBmKFVSQkcqIGdlbikgeworICBhYnNsOjpaaXBmPGludD4oKmdlbiwg
MTAwKTsKKyAgYWJzbDo6WmlwZjxpbnQ4X3Q+KCpnZW4sIDEwMCk7CisgIGFic2w6OlppcGY8aW50
MTZfdD4oKmdlbiwgMTAwKTsKKyAgYWJzbDo6WmlwZjx1aW50MTZfdD4oKmdlbiwgMTAwKTsKKyAg
YWJzbDo6WmlwZjxpbnQzMl90PigqZ2VuLCAxIDw8IDEwKTsKKyAgYWJzbDo6WmlwZjx1aW50MzJf
dD4oKmdlbiwgMSA8PCAxMCk7CisgIGFic2w6OlppcGY8aW50NjRfdD4oKmdlbiwgMSA8PCAxMCk7
CisgIGFic2w6OlppcGY8dWludDY0X3Q+KCpnZW4sIDEgPDwgMTApOworICBhYnNsOjpaaXBmPHVp
bnQ2NF90PihVUkJHKCksIDEgPDwgMTApOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4K
K3ZvaWQgVGVzdEdhdXNzaWFuKFVSQkcqIGdlbikgeworICBhYnNsOjpHYXVzc2lhbjxmbG9hdD4o
KmdlbiwgMS4wLCAxLjApOworICBhYnNsOjpHYXVzc2lhbjxkb3VibGU+KCpnZW4sIDEuMCwgMS4w
KTsKKyAgYWJzbDo6R2F1c3NpYW48ZG91YmxlPihVUkJHKCksIDEuMCwgMS4wKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit2b2lkIFRlc3RMb2dOb3JtYWwoVVJCRyogZ2VuKSB7Cisg
IGFic2w6OkxvZ1VuaWZvcm08aW50PigqZ2VuLCAwLCAxMDApOworICBhYnNsOjpMb2dVbmlmb3Jt
PGludDhfdD4oKmdlbiwgMCwgMTAwKTsKKyAgYWJzbDo6TG9nVW5pZm9ybTxpbnQxNl90PigqZ2Vu
LCAwLCAxMDApOworICBhYnNsOjpMb2dVbmlmb3JtPHVpbnQxNl90PigqZ2VuLCAwLCAxMDApOwor
ICBhYnNsOjpMb2dVbmlmb3JtPGludDMyX3Q+KCpnZW4sIDAsIDEgPDwgMTApOworICBhYnNsOjpM
b2dVbmlmb3JtPHVpbnQzMl90PigqZ2VuLCAwLCAxIDw8IDEwKTsKKyAgYWJzbDo6TG9nVW5pZm9y
bTxpbnQ2NF90PigqZ2VuLCAwLCAxIDw8IDEwKTsKKyAgYWJzbDo6TG9nVW5pZm9ybTx1aW50NjRf
dD4oKmdlbiwgMCwgMSA8PCAxMCk7CisgIGFic2w6OkxvZ1VuaWZvcm08dWludDY0X3Q+KFVSQkco
KSwgMCwgMSA8PCAxMCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordm9pZCBDb21w
YXRpYmlsaXR5VGVzdCgpIHsKKyAgVVJCRyBnZW47CisKKyAgVGVzdFVuaWZvcm0oJmdlbik7Cisg
IFRlc3RFeHBvbmVudGlhbCgmZ2VuKTsKKyAgVGVzdFBvaXNzb24oJmdlbik7CisgIFRlc3RCZXJu
b3VsbGkoJmdlbik7CisgIFRlc3RaaXBmKCZnZW4pOworICBUZXN0R2F1c3NpYW4oJmdlbik7Cisg
IFRlc3RMb2dOb3JtYWwoJmdlbik7Cit9CisKK1RFU1Qoc3RkX210MTk5MzdfNjQsIENvbXBhdGli
aWxpdHkpIHsKKyAgLy8gVmFsaWRhdGUgd2l0aCBzdGQ6Om10MTk5MzdfNjQKKyAgQ29tcGF0aWJp
bGl0eVRlc3Q8c3RkOjptdDE5OTM3XzY0PigpOworfQorCitURVNUKEJpdEdlbiwgQ29tcGF0aWJp
bGl0eSkgeworICAvLyBWYWxpZGF0ZSB3aXRoIGFic2w6OkJpdEdlbgorICBDb21wYXRpYmlsaXR5
VGVzdDxhYnNsOjpCaXRHZW4+KCk7Cit9CisKK1RFU1QoSW5zZWN1cmVCaXRHZW4sIENvbXBhdGli
aWxpdHkpIHsKKyAgLy8gVmFsaWRhdGUgd2l0aCBhYnNsOjpJbnNlY3VyZUJpdEdlbgorICBDb21w
YXRpYmlsaXR5VGVzdDxhYnNsOjpJbnNlY3VyZUJpdEdlbj4oKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvQlVJTEQuYmF6ZWwgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vaW50ZXJuYWwvQlVJTEQuYmF6ZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ1NDcxYTYxYzk3NmYz
NDc0ZjU4NzdkOGE2YzQzMmJkNWY4NWMzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9CVUlMRC5iYXplbApAQCAtMCwwICsxLDY1OCBAQAorIyBJbnRlcm5hbC1vbmx5
IGltcGxlbWVudGF0aW9uIGNsYXNzZXMgZm9yIEFic2VpbCBSYW5kb20KK2xvYWQoCisgICAgIi8v
YWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnpsIiwKKyAgICAiQUJTTF9ERUZBVUxUX0NPUFRT
IiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRTIiwKKyAgICAiQUJTTF9SQU5ET01fUkFOREVO
X0NPUFRTIiwKKyAgICAiQUJTTF9URVNUX0NPUFRTIiwKKyAgICAiYWJzbF9yYW5kb21fcmFuZGVu
X2NvcHRzX2luaXQiLAorKQorCitwYWNrYWdlKGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsKKyAgICAi
Ly9hYnNsL3JhbmRvbTpfX3BrZ19fIiwKK10pCisKK2xpY2Vuc2VzKFsibm90aWNlIl0pICAjIEFw
YWNoZSAyLjAKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInRyYWl0cyIsCisgICAgaGRycyA9
IFsidHJhaXRzLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB2aXNpYmlsaXR5ID0gWworICAgICAg
ICAiLy9hYnNsL3JhbmRvbTpfX3BrZ19fIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIi8vYWJzbC9i
YXNlOmNvbmZpZyJdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiZGlzdHJpYnV0aW9u
X2NhbGxlciIsCisgICAgaGRycyA9IFsiZGlzdHJpYnV0aW9uX2NhbGxlci5oIl0sCisgICAgY29w
dHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbC9yYW5kb206X19wa2df
XyIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImRpc3RyaWJ1dGlvbnMi
LAorICAgIGhkcnMgPSBbCisgICAgICAgICJkaXN0cmlidXRpb25zLmgiLAorICAgIF0sCisgICAg
Y29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRf
TElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkaXN0cmlidXRpb25fY2FsbGVyIiwK
KyAgICAgICAgIjpmYXN0X3VuaWZvcm1fYml0cyIsCisgICAgICAgICI6ZmFzdG1hdGgiLAorICAg
ICAgICAiOnRyYWl0cyIsCisgICAgICAgICI6dW5pZm9ybV9oZWxwZXIiLAorICAgICAgICAiLy9h
YnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAg
ICAiLy9hYnNsL3R5cGVzOnNwYW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFt
ZSA9ICJmYXN0X3VuaWZvcm1fYml0cyIsCisgICAgaGRycyA9IFsKKyAgICAgICAgImZhc3RfdW5p
Zm9ybV9iaXRzLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgdmlzaWJpbGl0eSA9IFsK
KyAgICAgICAgIi8vYWJzbC9yYW5kb206X19wa2dfXyIsCisgICAgXSwKKykKKworY2NfbGlicmFy
eSgKKyAgICBuYW1lID0gInNlZWRfbWF0ZXJpYWwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJz
ZWVkX21hdGVyaWFsLmNjIiwKKyAgICBdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJzZWVkX21h
dGVyaWFsLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAg
IjpmYXN0X3VuaWZvcm1fYml0cyIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIv
L2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAg
ICAgICAiLy9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpzcGFu
IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAicG9vbF91cmJnIiwKKyAg
ICBzcmNzID0gWworICAgICAgICAicG9vbF91cmJnLmNjIiwKKyAgICBdLAorICAgIGhkcnMgPSBb
CisgICAgICAgICJwb29sX3VyYmcuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVM
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IHNlbGVjdCh7CisgICAgICAgICIvL2Fic2w6d2luZG93
cyI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi1wdGhyZWFkIl0sCisg
ICAgfSkgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpy
YW5kZW4iLAorICAgICAgICAiOnNlZWRfbWF0ZXJpYWwiLAorICAgICAgICAiOnRyYWl0cyIsCisg
ICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLAorICAg
ICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmVu
ZGlhbiIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tOnNlZWRfZ2VuX2V4Y2VwdGlvbiIsCisgICAg
ICAgICIvL2Fic2wvdHlwZXM6c3BhbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBu
YW1lID0gImV4cGxpY2l0X3NlZWRfc2VxIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgaGRycyA9
IFsKKyAgICAgICAgImV4cGxpY2l0X3NlZWRfc2VxLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBB
QlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMs
CispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJzZXF1ZW5jZV91cmJnIiwKKyAgICB0ZXN0
b25seSA9IDEsCisgICAgaGRycyA9IFsKKyAgICAgICAgInNlcXVlbmNlX3VyYmcuaCIsCisgICAg
XSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
REVGQVVMVF9MSU5LT1BUUywKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInNhbHRlZF9z
ZWVkX3NlcSIsCisgICAgaGRycyA9IFsKKyAgICAgICAgInNhbHRlZF9zZWVkX3NlcS5oIiwKKyAg
ICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6c2VlZF9tYXRlcmlh
bCIsCisgICAgICAgICIvL2Fic2wvY29udGFpbmVyOmlubGluZWRfdmVjdG9yIiwKKyAgICAgICAg
Ii8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpvcHRpb25h
bCIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6c3BhbiIsCisgICAgXSwKKykKKworY2NfbGlicmFy
eSgKKyAgICBuYW1lID0gImlvc3RyZWFtX3N0YXRlX3NhdmVyIiwKKyAgICBoZHJzID0gWyJpb3N0
cmVhbV9zdGF0ZV9zYXZlci5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisg
ICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAg
ICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9udW1lcmljOmlu
dDEyOCIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImRpc3RyaWJ1dGlv
bl9pbXBsIiwKKyAgICBoZHJzID0gWworICAgICAgICAiZGlzdHJpYnV0aW9uX2ltcGwuaCIsCisg
ICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmZhc3RtYXRoIiwK
KyAgICAgICAgIjp0cmFpdHMiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Yml0cyIsCisgICAgICAg
ICIvL2Fic2wvYmFzZTpjb25maWciLAorICAgICAgICAiLy9hYnNsL251bWVyaWM6aW50MTI4IiwK
KyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiZmFzdG1hdGgiLAorICAgIGhk
cnMgPSBbCisgICAgICAgICJmYXN0bWF0aC5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9E
RUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAg
IGRlcHMgPSBbIi8vYWJzbC9iYXNlOmJpdHMiXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1l
ID0gIm5vbnNlY3VyZV9iYXNlIiwKKyAgICBoZHJzID0gWyJub25zZWN1cmVfYmFzZS5oIl0sCisg
ICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpwb29sX3VyYmciLAorICAgICAg
ICAiOnNhbHRlZF9zZWVkX3NlcSIsCisgICAgICAgICI6c2VlZF9tYXRlcmlhbCIsCisgICAgICAg
ICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90
cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3R5cGVz
Om9wdGlvbmFsIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpzcGFuIiwKKyAgICBdLAorKQorCitj
Y19saWJyYXJ5KAorICAgIG5hbWUgPSAicGNnX2VuZ2luZSIsCisgICAgaGRycyA9IFsicGNnX2Vu
Z2luZS5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMg
PSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpmYXN0bWF0
aCIsCisgICAgICAgICI6aW9zdHJlYW1fc3RhdGVfc2F2ZXIiLAorICAgICAgICAiLy9hYnNsL2Jh
c2U6Y29uZmlnIiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAg
Ii8vYWJzbC9udW1lcmljOmludDEyOCIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBu
YW1lID0gInJhbmRlbl9lbmdpbmUiLAorICAgIGhkcnMgPSBbInJhbmRlbl9lbmdpbmUuaCJdLAor
ICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aW9zdHJlYW1fc3RhdGVfc2F2
ZXIiLAorICAgICAgICAiOnJhbmRlbiIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0
cyIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInBsYXRmb3JtIiwKKyAg
ICBoZHJzID0gWworICAgICAgICAicmFuZGVuX3RyYWl0cy5oIiwKKyAgICBdLAorICAgIGNvcHRz
ID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktP
UFRTLAorICAgIHRleHR1YWxfaGRycyA9IFsKKyAgICAgICAgInJhbmRlbi1rZXlzLmluYyIsCisg
ICAgICAgICJwbGF0Zm9ybS5oIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUg
PSAicmFuZGVuIiwKKyAgICBzcmNzID0gWworICAgICAgICAicmFuZGVuLmNjIiwKKyAgICBdLAor
ICAgIGhkcnMgPSBbCisgICAgICAgICJyYW5kZW4uaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFC
U0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
KyAgICBkZXBzID0gWworICAgICAgICAiOnBsYXRmb3JtIiwKKyAgICAgICAgIjpyYW5kZW5faHdh
ZXMiLAorICAgICAgICAiOnJhbmRlbl9zbG93IiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAg
ICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAicmFuZGVuX3Nsb3ciLAorICAgIHNy
Y3MgPSBbInJhbmRlbl9zbG93LmNjIl0sCisgICAgaGRycyA9IFsicmFuZGVuX3Nsb3cuaCJdLAor
ICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6cGxhdGZvcm0iLAorICAgIF0s
CispCisKK2Fic2xfcmFuZG9tX3JhbmRlbl9jb3B0c19pbml0KCkKKworY2NfbGlicmFyeSgKKyAg
ICBuYW1lID0gInJhbmRlbl9od2FlcyIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgInJhbmRlbl9k
ZXRlY3QuY2MiLAorICAgIF0sCisgICAgaGRycyA9IFsKKyAgICAgICAgInJhbmRlbl9kZXRlY3Qu
aCIsCisgICAgICAgICJyYW5kZW5faHdhZXMuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xf
REVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAg
ICBkZXBzID0gWworICAgICAgICAiOnBsYXRmb3JtIiwKKyAgICAgICAgIjpyYW5kZW5faHdhZXNf
aW1wbCIsCisgICAgXSwKKykKKworIyBidWlsZCB3aXRoIC0tc2F2ZV90ZW1wcyB0byBzZWUgYXNz
ZW1ibHkgbGFuZ3VhZ2Ugb3V0cHV0LgorY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInJhbmRlbl9o
d2Flc19pbXBsIiwKKyAgICBzcmNzID0gWworICAgICAgICAicmFuZGVuX2h3YWVzLmNjIiwKKyAg
ICAgICAgInJhbmRlbl9od2Flcy5oIiwKKyAgICBdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxU
X0NPUFRTICsgQUJTTF9SQU5ET01fUkFOREVOX0NPUFRTICsgc2VsZWN0KHsKKyAgICAgICAgIi8v
YWJzbDp3aW5kb3dzIjogW10sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLVdu
by1wYXNzLWZhaWxlZCJdLAorICAgIH0pLAorICAgICMgY29wdHMgaW4gUkFOREVOX0hXQUVTX0NP
UFRTIGNhbiBtYWtlIHRoaXMgdGFyZ2V0IHVudXNhYmxlIGFzIGEgbW9kdWxlCisgICAgIyBsZWFk
aW5nIHRvIGEgQ2xhbmcgZGlhZ25vc3RpYy4gRnVydGhlcm1vcmUsIGl0IG9ubHkgaGFzIGEgcHJp
dmF0ZSBoZWFkZXIKKyAgICAjIGFueXdheSBhbmQgdGh1cyB0aGVyZSB3b3VsZG4ndCBiZSBhbnkg
Z2FpbiBmcm9tIHVzaW5nIGl0IGFzIGEgbW9kdWxlLgorICAgIGZlYXR1cmVzID0gWyItaGVhZGVy
X21vZHVsZXMiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBk
ZXBzID0gWyI6cGxhdGZvcm0iXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ2F1c3Np
YW5fZGlzdHJpYnV0aW9uX2dlbnRhYmxlcyIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImdhdXNz
aWFuX2Rpc3RyaWJ1dGlvbl9nZW50YWJsZXMuY2MiLAorICAgIF0sCisgICAgbGlua29wdHMgPSBB
QlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9iYXNl
OmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tOmRpc3RyaWJ1dGlvbnMiLAor
ICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJkaXN0cmlidXRpb25fdGVzdF91
dGlsIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImNoaV9zcXVh
cmUuY2MiLAorICAgICAgICAiZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5jYyIsCisgICAgXSwKKyAg
ICBoZHJzID0gWworICAgICAgICAiY2hpX3NxdWFyZS5oIiwKKyAgICAgICAgImRpc3RyaWJ1dGlv
bl90ZXN0X3V0aWwuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAg
ICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
KyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzOnN0cl9m
b3JtYXQiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOnNwYW4iLAorICAgIF0sCispCisKKyMgQ29t
bW9uIHRhZ3MgZm9yIHRlc3RzLCBldGMuCitBQlNMX1JBTkRPTV9OT05QT1JUQUJMRV9UQUdTID0g
WworICAgICJub190ZXN0X2FuZHJvaWRfYXJtIiwKKyAgICAibm9fdGVzdF9hbmRyb2lkX2FybTY0
IiwKKyAgICAibm9fdGVzdF9hbmRyb2lkX3g4NiIsCisgICAgIm5vX3Rlc3RfZGFyd2luX3g4Nl82
NCIsCisgICAgIm5vX3Rlc3RfaW9zX3g4Nl82NCIsCisgICAgIm5vX3Rlc3RfbG9vbml4IiwKKyAg
ICAibm9fdGVzdF9tc3ZjX3g2NCIsCisgICAgIm5vX3Rlc3Rfd2FzbSIsCitdCisKK2NjX3Rlc3Qo
CisgICAgbmFtZSA9ICJ0cmFpdHNfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3Jj
cyA9IFsidHJhaXRzX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAg
ICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAg
ICAiOnRyYWl0cyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFp
biIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImRpc3RyaWJ1dGlvbl9pbXBs
X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImRpc3RyaWJ1dGlvbl9p
bXBsX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3Ry
aWJ1dGlvbl9pbXBsIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmJpdHMiLAorICAgICAgICAiLy9h
YnNsL2ZsYWdzOmZsYWciLAorICAgICAgICAiLy9hYnNsL251bWVyaWM6aW50MTI4IiwKKyAgICAg
ICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitj
Y190ZXN0KAorICAgIG5hbWUgPSAiZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbF90ZXN0IiwKKyAgICBz
aXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJkaXN0cmlidXRpb25fdGVzdF91dGlsX3Rlc3Qu
Y2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
REVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3RyaWJ1dGlvbl90
ZXN0X3V0aWwiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4i
LAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJmYXN0bWF0aF90ZXN0IiwKKyAg
ICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJmYXN0bWF0aF90ZXN0LmNjIl0sCisgICAg
Y29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElO
S09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpmYXN0bWF0aCIsCisgICAgICAgICJAY29t
X2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgK
KyAgICBuYW1lID0gImV4cGxpY2l0X3NlZWRfc2VxX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwi
LAorICAgIHNyY3MgPSBbImV4cGxpY2l0X3NlZWRfc2VxX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywK
KyAgICBkZXBzID0gWworICAgICAgICAiOmV4cGxpY2l0X3NlZWRfc2VxIiwKKyAgICAgICAgIi8v
YWJzbC9yYW5kb206c2VlZF9zZXF1ZW5jZXMiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xl
dGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJz
YWx0ZWRfc2VlZF9zZXFfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsi
c2FsdGVkX3NlZWRfc2VxX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAg
ICAgICAiOnNhbHRlZF9zZWVkX3NlcSIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0
Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImNoaV9z
cXVhcmVfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAg
ImNoaV9zcXVhcmVfdGVzdC5jYyIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWwor
ICAgICAgICAiOmRpc3RyaWJ1dGlvbl90ZXN0X3V0aWwiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6
Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9t
YWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZmFzdF91bmlmb3JtX2Jp
dHNfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImZh
c3RfdW5pZm9ybV9iaXRzX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1Rf
Q09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVwcyA9
IFsKKyAgICAgICAgIjpmYXN0X3VuaWZvcm1fYml0cyIsCisgICAgICAgICJAY29tX2dvb2dsZV9n
b29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1l
ID0gIm5vbnNlY3VyZV9iYXNlX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3Mg
PSBbCisgICAgICAgICJub25zZWN1cmVfYmFzZV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGNvcHRz
ID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAorICAgIGRlcHMgPSBbCisgICAgICAgICI6bm9uc2VjdXJlX2Jhc2UiLAorICAgICAgICAiLy9h
YnNsL3JhbmRvbSIsCisgICAgICAgICIvL2Fic2wvcmFuZG9tOmRpc3RyaWJ1dGlvbnMiLAorICAg
ICAgICAiLy9hYnNsL3JhbmRvbTpzZWVkX3NlcXVlbmNlcyIsCisgICAgICAgICIvL2Fic2wvc3Ry
aW5ncyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisg
ICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInNlZWRfbWF0ZXJpYWxfdGVzdCIsCisg
ICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsic2VlZF9tYXRlcmlhbF90ZXN0LmNjIl0s
CisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpzZWVkX21hdGVyaWFsIiwKKyAg
ICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQor
CitjY190ZXN0KAorICAgIG5hbWUgPSAicG9vbF91cmJnX3Rlc3QiLAorICAgIHNpemUgPSAic21h
bGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJwb29sX3VyYmdfdGVzdC5jYyIsCisgICAgXSwK
KyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOnBvb2xfdXJiZyIsCisgICAgICAg
ICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6c3BhbiIs
CisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwK
KykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInBjZ19lbmdpbmVfdGVzdCIsCisgICAgc2l6ZSA9
ICJtZWRpdW0iLCAgIyBUcnlpbmcgdG8gbWVhc3VyZSBhY2N1cmFjeS4KKyAgICBzcmNzID0gWyJw
Y2dfZW5naW5lX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBm
bGFreSA9IDEsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAgZGVw
cyA9IFsKKyAgICAgICAgIjpleHBsaWNpdF9zZWVkX3NlcSIsCisgICAgICAgICI6cGNnX2VuZ2lu
ZSIsCisgICAgICAgICIvL2Fic2wvdGltZSIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0
ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInJh
bmRlbl9lbmdpbmVfdGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbCisg
ICAgICAgICJyYW5kZW5fZW5naW5lX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNM
X1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCisgICAg
ZGVwcyA9IFsKKyAgICAgICAgIjpleHBsaWNpdF9zZWVkX3NlcSIsCisgICAgICAgICI6cmFuZGVu
X2VuZ2luZSIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvc3RyaW5n
cyIsCisgICAgICAgICIvL2Fic2wvdGltZSIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0
ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInJh
bmRlbl90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJyYW5kZW5fdGVz
dC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJT
TF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6cmFuZGVuIiwKKyAg
ICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dv
b2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUg
PSAicmFuZGVuX3Nsb3dfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsi
cmFuZGVuX3Nsb3dfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAg
IGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAg
ICI6cmFuZGVuX3Nsb3ciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0
X21haW4iLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJyYW5kZW5faHdhZXNf
dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsicmFuZGVuX2h3YWVzX3Rl
c3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB0YWdzID0gQUJTTF9SQU5ET01fTk9OUE9SVEFCTEVf
VEFHUywKKyAgICBkZXBzID0gWworICAgICAgICAiOnBsYXRmb3JtIiwKKyAgICAgICAgIjpyYW5k
ZW5faHdhZXMiLAorICAgICAgICAiOnJhbmRlbl9od2Flc19pbXBsIiwgICMgYnVpbGRfY2xlYW5l
cjoga2VlcAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3M6
c3RyX2Zvcm1hdCIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAor
ICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJuYW5vYmVuY2htYXJrIiwKKyAg
ICBzcmNzID0gWyJuYW5vYmVuY2htYXJrLmNjIl0sCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFV
TFRfTElOS09QVFMsCisgICAgdGV4dHVhbF9oZHJzID0gWyJuYW5vYmVuY2htYXJrLmgiXSwKKyAg
ICBkZXBzID0gWworICAgICAgICAiOnBsYXRmb3JtIiwKKyAgICAgICAgIjpyYW5kZW5fZW5naW5l
IiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAg
IG5hbWUgPSAidW5pZm9ybV9oZWxwZXIiLAorICAgIGhkcnMgPSBbInVuaWZvcm1faGVscGVyLmgi
XSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
REVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmRpc3RyaWJ1dGlvbl9p
bXBsIiwKKyAgICAgICAgIjpmYXN0X3VuaWZvcm1fYml0cyIsCisgICAgICAgICI6aW9zdHJlYW1f
c3RhdGVfc2F2ZXIiLAorICAgICAgICAiOnRyYWl0cyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpj
b3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgIF0s
CispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJuYW5vYmVuY2htYXJrX3Rlc3QiLAorICAgIHNp
emUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbIm5hbm9iZW5jaG1hcmtfdGVzdC5jYyJdLAorICAg
IGZsYWt5ID0gMSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB0
YWdzID0gWworICAgICAgICAiYmVuY2htYXJrIiwKKyAgICAgICAgIm5vX3Rlc3RfaW9zX3g4Nl82
NCIsCisgICAgICAgICJub190ZXN0X2xvb25peCIsICAjIENyYXNoaW5nLgorICAgIF0sCisgICAg
ZGVwcyA9IFsKKyAgICAgICAgIjpuYW5vYmVuY2htYXJrIiwKKyAgICAgICAgIi8vYWJzbC9iYXNl
IiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAg
IG5hbWUgPSAicmFuZGVuX2JlbmNobWFya3MiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBz
cmNzID0gWyJyYW5kZW5fYmVuY2htYXJrcy5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NP
UFRTICsgQUJTTF9SQU5ET01fUkFOREVOX0NPUFRTLAorICAgIGZsYWt5ID0gMSwKKyAgICBsaW5r
b3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICB0YWdzID0gQUJTTF9SQU5ET01fTk9O
UE9SVEFCTEVfVEFHUyArIFsiYmVuY2htYXJrIl0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpu
YW5vYmVuY2htYXJrIiwKKyAgICAgICAgIjpwbGF0Zm9ybSIsCisgICAgICAgICI6cmFuZGVuIiwK
KyAgICAgICAgIjpyYW5kZW5fZW5naW5lIiwKKyAgICAgICAgIjpyYW5kZW5faHdhZXMiLAorICAg
ICAgICAiOnJhbmRlbl9od2Flc19pbXBsIiwKKyAgICAgICAgIjpyYW5kZW5fc2xvdyIsCisgICAg
ICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgXSwKKykK
KworY2NfdGVzdCgKKyAgICBuYW1lID0gImlvc3RyZWFtX3N0YXRlX3NhdmVyX3Rlc3QiLAorICAg
IHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImlvc3RyZWFtX3N0YXRlX3NhdmVyX3Rlc3Qu
Y2MiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKKyAgICBkZXBzID0g
WworICAgICAgICAiOmlvc3RyZWFtX3N0YXRlX3NhdmVyIiwKKyAgICAgICAgIkBjb21fZ29vZ2xl
X2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL0JVSUxELmdu
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAwNDgwZjQzMzhkNzg5Zjg4ZGM4YjAwM2Q0ZDRlZDJkOGZiMTcxZWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvQlVJTEQuZ24KQEAgLTAsMCAr
MSw0NTkgQEAKKyMgQ29weXJpZ2h0IDIwMTggVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQorCisjIFVzYWdlIG9m
IEFic2VpbCBpbiBDaHJvbWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0
LCBiZWZvcmUKKyMgYWRkaW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0
IHRvIGN4eEBjaHJvbWl1bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3Jn
L2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGlu
Zm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9j
dW1lbnQvZC8xRGdTMS1BM3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQoraWYg
KGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKKyAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Np
c3RhbnQvKiIsCisgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvKiIsCisgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIs
CisgICAgIi8vdGhpcmRfcGFydHkvb3BlbnNjcmVlbi8qIiwKKyAgXQorfSBlbHNlIHsKKyAgdmlz
aWJpbGl0eSA9IFsgIioiIF0KK30KKworc291cmNlX3NldCgidHJhaXRzIikgeworICBjb25maWdz
IC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmln
cyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAor
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisg
IF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9p
bmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgInRyYWl0cy5oIiwKKyAgXQorICB2
aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICIuLi8uLi9yYW5kb20vKiIgXQorICBk
ZXBzID0gWworICAgICIuLi8uLi9iYXNlOmNvbmZpZyIsCisgIF0KK30KKworc291cmNlX3NldCgi
ZGlzdHJpYnV0aW9uX2NhbGxlciIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2Nv
bmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0g
WyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVi
bGljID0gWworICAgICJkaXN0cmlidXRpb25fY2FsbGVyLmgiLAorICBdCisgIHZpc2liaWxpdHkg
PSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIi4uLy4uL3JhbmRvbS8qIiBdCit9CisKK3NvdXJjZV9z
ZXQoImRpc3RyaWJ1dGlvbnMiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1Ymxp
YyA9IFsKKyAgICAiZGlzdHJpYnV0aW9ucy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6ZGlz
dHJpYnV0aW9uX2NhbGxlciIsCisgICAgIjpmYXN0X3VuaWZvcm1fYml0cyIsCisgICAgIjpmYXN0
bWF0aCIsCisgICAgIjp0cmFpdHMiLAorICAgICI6dW5pZm9ybV9oZWxwZXIiLAorICAgICIuLi8u
Li9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAiLi4vLi4vc3RyaW5ncyIsCisgICAgIi4uLy4uL3R5
cGVzOnNwYW4iLAorICBdCit9CisKK3NvdXJjZV9zZXQoImZhc3RfdW5pZm9ybV9iaXRzIikgewor
ICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0K
KyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVt
X2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFn
c19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImZhc3RfdW5pZm9y
bV9iaXRzLmgiLAorICBdCisgIHZpc2liaWxpdHkgPSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIi4u
Ly4uL3JhbmRvbS8qIiBdCit9CisKK3NvdXJjZV9zZXQoInNlZWRfbWF0ZXJpYWwiKSB7CisgIGNv
bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBj
b25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2Nj
IiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAic2VlZF9tYXRlcmlhbC5o
IiwKKyAgXQorICBzb3VyY2VzID0gWworICAgICJzZWVkX21hdGVyaWFsLmNjIiwKKyAgXQorICBk
ZXBzID0gWworICAgICI6ZmFzdF91bmlmb3JtX2JpdHMiLAorICAgICIuLi8uLi9iYXNlIiwKKyAg
ICAiLi4vLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi8uLi9zdHJpbmdzIiwKKyAgICAi
Li4vLi4vdHlwZXM6b3B0aW9uYWwiLAorICAgICIuLi8uLi90eXBlczpzcGFuIiwKKyAgXQorfQor
Citzb3VyY2Vfc2V0KCJwb29sX3VyYmciKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmln
cyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisg
IHB1YmxpYyA9IFsKKyAgICAicG9vbF91cmJnLmgiLAorICBdCisgIHNvdXJjZXMgPSBbCisgICAg
InBvb2xfdXJiZy5jYyIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOnJhbmRlbiIsCisgICAgIjpz
ZWVkX21hdGVyaWFsIiwKKyAgICAiOnRyYWl0cyIsCisgICAgIi4uLy4uL2Jhc2UiLAorICAgICIu
Li8uLi9iYXNlOmNvbmZpZyIsCisgICAgIi4uLy4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAi
Li4vLi4vYmFzZTplbmRpYW4iLAorICAgICIuLi8uLi9yYW5kb206c2VlZF9nZW5fZXhjZXB0aW9u
IiwKKyAgICAiLi4vLi4vdHlwZXM6c3BhbiIsCisgIF0KK30KKworc291cmNlX3NldCgiZXhwbGlj
aXRfc2VlZF9zZXEiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVp
bGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGlj
X2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZp
ZyIgXQorICBwdWJsaWMgPSBbCisgICAgImV4cGxpY2l0X3NlZWRfc2VxLmgiLAorICBdCit9CisK
K3NvdXJjZV9zZXQoInNlcXVlbmNlX3VyYmciKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25m
aWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29u
ZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUi
LAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIs
CisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJz
bF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgInNlcXVlbmNlX3VyYmcuaCIs
CisgIF0KK30KKworc291cmNlX3NldCgic2FsdGVkX3NlZWRfc2VxIikgeworICBjb25maWdzIC09
IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyAr
PSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0K
KyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNs
dWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgInNhbHRlZF9zZWVkX3NlcS5oIiwKKyAg
XQorICBkZXBzID0gWworICAgICI6c2VlZF9tYXRlcmlhbCIsCisgICAgIi4uLy4uL2NvbnRhaW5l
cjppbmxpbmVkX3ZlY3RvciIsCisgICAgIi4uLy4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIu
Li8uLi90eXBlczpvcHRpb25hbCIsCisgICAgIi4uLy4uL3R5cGVzOnNwYW4iLAorICBdCit9CisK
K3NvdXJjZV9zZXQoImlvc3RyZWFtX3N0YXRlX3NhdmVyIikgeworICBjb25maWdzIC09IFsgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisg
ICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVi
bGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2Nv
bmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImlvc3RyZWFtX3N0YXRlX3NhdmVyLmgiLAorICBd
CisgIGRlcHMgPSBbCisgICAgIi4uLy4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi8uLi9u
dW1lcmljOmludDEyOCIsCisgIF0KK30KKworc291cmNlX3NldCgiZGlzdHJpYnV0aW9uX2ltcGwi
KSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29k
ZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hy
b21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRf
Y2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiZGlzdHJp
YnV0aW9uX2ltcGwuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmZhc3RtYXRoIiwKKyAgICAi
OnRyYWl0cyIsCisgICAgIi4uLy4uL2Jhc2U6Yml0cyIsCisgICAgIi4uLy4uL2Jhc2U6Y29uZmln
IiwKKyAgICAiLi4vLi4vbnVtZXJpYzppbnQxMjgiLAorICBdCit9CisKK3NvdXJjZV9zZXQoImZh
c3RtYXRoIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9t
aXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
Om5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9k
ZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAg
ImZhc3RtYXRoLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uLy4uL2Jhc2U6Yml0cyIsCisg
IF0KK30KKworc291cmNlX3NldCgibm9uc2VjdXJlX2Jhc2UiKSB7CisgIGNvbmZpZ3MgLT0gWyAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsK
KyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBw
dWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVf
Y29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAibm9uc2VjdXJlX2Jhc2UuaCIsCisgIF0KKyAg
ZGVwcyA9IFsKKyAgICAiOnBvb2xfdXJiZyIsCisgICAgIjpzYWx0ZWRfc2VlZF9zZXEiLAorICAg
ICI6c2VlZF9tYXRlcmlhbCIsCisgICAgIi4uLy4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAi
Li4vLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4uLy4uL3N0cmluZ3MiLAorICAgICIuLi8u
Li90eXBlczpvcHRpb25hbCIsCisgICAgIi4uLy4uL3R5cGVzOnNwYW4iLAorICBdCit9CisKK3Nv
dXJjZV9zZXQoInBjZ19lbmdpbmUiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9j
b25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9
IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1
YmxpYyA9IFsKKyAgICAicGNnX2VuZ2luZS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6ZmFz
dG1hdGgiLAorICAgICI6aW9zdHJlYW1fc3RhdGVfc2F2ZXIiLAorICAgICIuLi8uLi9iYXNlOmNv
bmZpZyIsCisgICAgIi4uLy4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi8uLi9udW1lcmlj
OmludDEyOCIsCisgIF0KK30KKworc291cmNlX3NldCgicmFuZGVuX2VuZ2luZSIpIHsKKyAgY29u
ZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNv
bmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2Rl
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2Mi
LAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFi
c2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJyYW5kZW5fZW5naW5lLmgi
LAorICBdCisgIGRlcHMgPSBbCisgICAgIjppb3N0cmVhbV9zdGF0ZV9zYXZlciIsCisgICAgIjpy
YW5kZW4iLAorICAgICIuLi8uLi9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgXQorfQorCitzb3VyY2Vf
c2V0KCJwbGF0Zm9ybSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0g
WworICAgICJwbGF0Zm9ybS5oIiwKKyAgICAicmFuZGVuLWtleXMuaW5jIiwKKyAgICAicmFuZGVu
X3RyYWl0cy5oIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJyYW5kZW4iKSB7CisgIGNvbmZpZ3Mg
LT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdz
ICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAg
XQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2lu
Y2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAicmFuZGVuLmgiLAorICBdCisgIHNv
dXJjZXMgPSBbCisgICAgInJhbmRlbi5jYyIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOnBsYXRm
b3JtIiwKKyAgICAiOnJhbmRlbl9od2FlcyIsCisgICAgIjpyYW5kZW5fc2xvdyIsCisgICAgIi4u
Ly4uL2Jhc2UiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInJhbmRlbl9zbG93IikgeworICBjb25m
aWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29u
ZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUi
LAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIs
CisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJz
bF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgInJhbmRlbl9zbG93LmgiLAor
ICBdCisgIHNvdXJjZXMgPSBbCisgICAgInJhbmRlbl9zbG93LmNjIiwKKyAgXQorICBkZXBzID0g
WworICAgICI6cGxhdGZvcm0iLAorICBdCit9CisKK3NvdXJjZV9zZXQoInJhbmRlbl9od2FlcyIp
IHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2Rl
IiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJv
bWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9j
ZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJyYW5kZW5f
ZGV0ZWN0LmgiLAorICAgICJyYW5kZW5faHdhZXMuaCIsCisgIF0KKyAgc291cmNlcyA9IFsKKyAg
ICAicmFuZGVuX2RldGVjdC5jYyIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOnBsYXRmb3JtIiwK
KyAgICAiOnJhbmRlbl9od2Flc19pbXBsIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJyYW5kZW5f
aHdhZXNfaW1wbCIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpj
aHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21w
aWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFi
c2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsK
KyAgICAicmFuZGVuX2h3YWVzLmNjIiwKKyAgICAicmFuZGVuX2h3YWVzLmgiLAorICBdCisgIGRl
cHMgPSBbCisgICAgIjpwbGF0Zm9ybSIsCisgIF0KK30KKworZXhlY3V0YWJsZSgiZ2F1c3NpYW5f
ZGlzdHJpYnV0aW9uX2dlbnRhYmxlcyIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxk
L2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdz
ID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAg
c291cmNlcyA9IFsKKyAgICAiZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2dlbnRhYmxlcy5jYyIsCisg
IF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi8u
Li9yYW5kb206ZGlzdHJpYnV0aW9ucyIsCisgIF0KK30KKworc291cmNlX3NldCgiZGlzdHJpYnV0
aW9uX3Rlc3RfdXRpbCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAg
ICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJs
aWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29u
ZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiY2hpX3NxdWFyZS5oIiwKKyAgICAiZGlzdHJpYnV0
aW9uX3Rlc3RfdXRpbC5oIiwKKyAgXQorICBzb3VyY2VzID0gWworICAgICJjaGlfc3F1YXJlLmNj
IiwKKyAgICAiZGlzdHJpYnV0aW9uX3Rlc3RfdXRpbC5jYyIsCisgIF0KKyAgZGVwcyA9IFsKKyAg
ICAiLi4vLi4vYmFzZSIsCisgICAgIi4uLy4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4v
Li4vc3RyaW5ncyIsCisgICAgIi4uLy4uL3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisgICAgIi4uLy4u
L3R5cGVzOnNwYW4iLAorICBdCit9CisKK3NvdXJjZV9zZXQoIm5hbm9iZW5jaG1hcmsiKSB7Cisg
IGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQor
ICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1f
Y29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdz
X2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgIm5hbm9iZW5jaG1h
cmsuY2MiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpwbGF0Zm9ybSIsCisgICAgIjpyYW5kZW5f
ZW5naW5lIiwKKyAgICAiLi4vLi4vYmFzZSIsCisgIF0KK30KKworc291cmNlX3NldCgidW5pZm9y
bV9oZWxwZXIiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hy
b21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGls
ZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNs
X2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAg
ICAidW5pZm9ybV9oZWxwZXIuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmRpc3RyaWJ1dGlv
bl9pbXBsIiwKKyAgICAiOmZhc3RfdW5pZm9ybV9iaXRzIiwKKyAgICAiOmlvc3RyZWFtX3N0YXRl
X3NhdmVyIiwKKyAgICAiOnRyYWl0cyIsCisgICAgIi4uLy4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
KyAgICAiLi4vLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC9jaGlfc3F1YXJlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2No
aV9zcXVhcmUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBhY2M5NDc3ODgzNzQ0ZjU5YzY5NDFkZmEzNjE4Mjcx
YzcyYjUzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9jaGlfc3F1
YXJlLmNjCkBAIC0wLDAgKzEsMjMwIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuaCIK
KworI2luY2x1ZGUgPGNtYXRoPgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlz
dHJpYnV0aW9uX3Rlc3RfdXRpbC5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFu
ZG9tX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKKyNpZiBkZWZpbmVkKF9fRU1TQ1JJUFRFTl9f
KQorLy8gV29ya2Fyb3VuZCBfX0VNU0NSSVBURU5fXyBlcnJvcjogbGx2bV9mbWFfZjY0IG5vdCBm
b3VuZC4KK2lubGluZSBkb3VibGUgZm1hKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIHsK
KyAgcmV0dXJuICh4ICogeSkgKyB6OworfQorI2VuZGlmCisKKy8vIFVzZSBIb3JuZXIncyBtZXRo
b2QgdG8gZXZhbHVhdGUgYSBwb2x5bm9taWFsLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHVuc2ln
bmVkIE4+CitpbmxpbmUgVCBFdmFsdWF0ZVBvbHlub21pYWwoVCB4LCBjb25zdCBUICgmcG9seSlb
Tl0pIHsKKyNpZiAhZGVmaW5lZChfX0VNU0NSSVBURU5fXykKKyAgdXNpbmcgc3RkOjpmbWE7Cisj
ZW5kaWYKKyAgVCBwID0gcG9seVtOIC0gMV07CisgIGZvciAodW5zaWduZWQgaSA9IDI7IGkgPD0g
TjsgaSsrKSB7CisgICAgcCA9IGZtYShwLCB4LCBwb2x5W04gLSBpXSk7CisgIH0KKyAgcmV0dXJu
IHA7Cit9CisKK3N0YXRpYyBjb25zdGV4cHIgaW50IGtMYXJnZURPRiA9IDE1MDsKKworLy8gUmV0
dXJucyB0aGUgcHJvYmFiaWxpdHkgb2YgYSBub3JtYWwgei12YWx1ZS4KKy8vCisvLyBBZGFwdGVk
IGZyb20gdGhlIFBPWiBmdW5jdGlvbiBpbjoKKy8vICAgICBJYmJldHNvbiBELCBBbGdvcml0aG0g
MjA5CisvLyAgICAgQ29sbGVjdGVkIEFsZ29yaXRobXMgb2YgdGhlIENBQ00gMTk2MyBwLiA2MTYK
Ky8vCitkb3VibGUgUE9aKGRvdWJsZSB6KSB7CisgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGtQ
MVtdID0geworICAgICAgMC43OTc4ODQ1NjA1OTMsICAtMC41MzE5MjMwMDczMDAsIDAuMzE5MTUy
OTMyNjk0LAorICAgICAgLTAuMTUxOTY4NzUxMzY0LCAwLjA1OTA1NDAzNTY0MiwgIC0wLjAxOTE5
ODI5MjAwNCwKKyAgICAgIDAuMDA1MTk4Nzc1MDE5LCAgLTAuMDAxMDc1MjA0MDQ3LCAwLjAwMDEy
NDgxODk4NywKKyAgfTsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga1AyW10gPSB7CisgICAg
ICAwLjk5OTkzNjY1NzUyNCwgIDAuMDAwNTM1MzEwODQ5LCAgLTAuMDAyMTQxMjY4NzQxLCAwLjAw
NTM1MzU3OTEwOCwKKyAgICAgIC0wLjAwOTI3OTQ1MzM0MSwgMC4wMTE2MzA0NDczMTksICAtMC4w
MTA1NTc2MjUwMDYsIDAuMDA2NTQ5NzkxMjE0LAorICAgICAgLTAuMDAyMDM0MjU0ODc0LCAtMC4w
MDA3OTQ2MjA4MjAsIDAuMDAxMzkwNjA0Mjg0LCAgLTAuMDAwNjc2OTA0OTg2LAorICAgICAgLTAu
MDAwMDE5NTM4MTMyLCAwLjAwMDE1MjUyOTI5MCwgIC0wLjAwMDA0NTI1NTY1OSwKKyAgfTsKKwor
ICBjb25zdCBkb3VibGUga1pNYXggPSA2LjA7ICAvLyBNYXhpbXVtIG1lYW5pbmdmdWwgei12YWx1
ZS4KKyAgaWYgKHogPT0gMC4wKSB7CisgICAgcmV0dXJuIDAuNTsKKyAgfQorICBkb3VibGUgeDsK
KyAgZG91YmxlIHkgPSAwLjUgKiBzdGQ6OmZhYnMoeik7CisgIGlmICh5ID49IChrWk1heCAqIDAu
NSkpIHsKKyAgICB4ID0gMS4wOworICB9IGVsc2UgaWYgKHkgPCAxLjApIHsKKyAgICBkb3VibGUg
dyA9IHkgKiB5OworICAgIHggPSBFdmFsdWF0ZVBvbHlub21pYWwodywga1AxKSAqIHkgKiAyLjA7
CisgIH0gZWxzZSB7CisgICAgeSAtPSAyLjA7CisgICAgeCA9IEV2YWx1YXRlUG9seW5vbWlhbCh5
LCBrUDIpOworICB9CisgIHJldHVybiB6ID4gMC4wID8gKCh4ICsgMS4wKSAqIDAuNSkgOiAoKDEu
MCAtIHgpICogMC41KTsKK30KKworLy8gQXBwcm94aW1hdGVzIHRoZSBzdXJ2aXZhbCBmdW5jdGlv
biBvZiB0aGUgbm9ybWFsIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBBbGdvcml0aG0gMjYuMi4xOCwg
ZnJvbToKKy8vIFtBYnJhbW93aXR6IGFuZCBTdGVndW4sIEhhbmRib29rIG9mIE1hdGhlbWF0aWNh
bCBGdW5jdGlvbnMscC45MzJdCisvLyBodHRwOi8vcGVvcGxlLm1hdGguc2Z1LmNhL35jYm0vYWFu
ZHMvYWJyYW1vd2l0el9hbmRfc3RlZ3VuLnBkZgorLy8KK2RvdWJsZSBub3JtYWxfc3Vydml2YWwo
ZG91YmxlIHopIHsKKyAgLy8gTWF5YmUgcmVwbGFjZSB3aXRoIHRoZSBhbHRlcm5hdGUgZm9ybXVs
YXRpb24uCisgIC8vIDAuNSAqIGVyZmMoKHggLSBtZWFuKS8oc3FydCgyKSAqIHNpZ21hKSkKKyAg
c3RhdGljIGNvbnN0ZXhwciBkb3VibGUga1JbXSA9IHsKKyAgICAgIDEuMCwgMC4xOTY4NTQsIDAu
MTE1MTk0LCAwLjAwMDM0NCwgMC4wMTk1MjcsCisgIH07CisgIGRvdWJsZSByID0gRXZhbHVhdGVQ
b2x5bm9taWFsKHosIGtSKTsKKyAgciAqPSByOworICByZXR1cm4gMC41IC8gKHIgKiByKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlCisKKy8vIENhbGN1bGF0ZXMgdGhlIGNyaXRpY2FsIGNoaS1zcXVh
cmUgdmFsdWUgZ2l2ZW4gZGVncmVlcy1vZi1mcmVlZG9tIGFuZCBhCisvLyBwLXZhbHVlLCB1c3Vh
bGx5IHVzaW5nIGJpc2VjdGlvbi4gQWxzbyBrbm93biBieSB0aGUgbmFtZSBDUklUQ0hJLgorZG91
YmxlIENoaVNxdWFyZVZhbHVlKGludCBkb2YsIGRvdWJsZSBwKSB7CisgIHN0YXRpYyBjb25zdGV4
cHIgZG91YmxlIGtDaGlFcHNpbG9uID0KKyAgICAgIDAuMDAwMDAxOyAgLy8gQWNjdXJhY3kgb2Yg
dGhlIGFwcHJveGltYXRpb24uCisgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGtDaGlNYXggPQor
ICAgICAgOTk5OTkuMDsgIC8vIE1heGltdW0gY2hpLXNxdWFyZWQgdmFsdWUuCisKKyAgY29uc3Qg
ZG91YmxlIHBfdmFsdWUgPSAxLjAgLSBwOworICBpZiAoZG9mIDwgMSB8fCBwX3ZhbHVlID4gMS4w
KSB7CisgICAgcmV0dXJuIDAuMDsKKyAgfQorCisgIGlmIChkb2YgPiBrTGFyZ2VET0YpIHsKKyAg
ICAvLyBGb3IgbGFyZ2UgZGVncmVlcyBvZiBmcmVlZG9tLCB1c2UgdGhlIG5vcm1hbCBhcHByb3hp
bWF0aW9uIGJ5CisgICAgLy8gICAgIFdpbHNvbiwgRS4gQi4gYW5kIEhpbGZlcnR5LCBNLiBNLiAo
MTkzMSkKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgIGNoaV4yIC0gbWVhbgorICAgIC8vICAg
ICAgICAgICAgICAgIFogPSAtLS0tLS0tLS0tLS0tLQorICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkZGV2CisgICAgY29uc3QgZG91YmxlIHogPSBJbnZlcnNlTm9ybWFsU3Vydml2YWwo
cF92YWx1ZSk7CisgICAgY29uc3QgZG91YmxlIG1lYW4gPSAxIC0gMi4wIC8gKDkgKiBkb2YpOwor
ICAgIGNvbnN0IGRvdWJsZSB2YXJpYW5jZSA9IDIuMCAvICg5ICogZG9mKTsKKyAgICAvLyBDYW5u
b3QgdXNlIHRoaXMgbWV0aG9kIGlmIHRoZSB2YXJpYW5jZSBpcyAwLgorICAgIGlmICh2YXJpYW5j
ZSAhPSAwKSB7CisgICAgICByZXR1cm4gc3RkOjpwb3coeiAqIHN0ZDo6c3FydCh2YXJpYW5jZSkg
KyBtZWFuLCAzLjApICogZG9mOworICAgIH0KKyAgfQorCisgIGlmIChwX3ZhbHVlIDw9IDAuMCkg
cmV0dXJuIGtDaGlNYXg7CisKKyAgLy8gT3RoZXJ3aXNlIHNlYXJjaCBmb3IgdGhlIHAgdmFsdWUg
YnkgYmlzZWN0aW9uCisgIGRvdWJsZSBtaW5fY2hpc3EgPSAwLjA7CisgIGRvdWJsZSBtYXhfY2hp
c3EgPSBrQ2hpTWF4OworICBkb3VibGUgY3VycmVudCA9IGRvZiAvIHN0ZDo6c3FydChwX3ZhbHVl
KTsKKyAgd2hpbGUgKChtYXhfY2hpc3EgLSBtaW5fY2hpc3EpID4ga0NoaUVwc2lsb24pIHsKKyAg
ICBpZiAoQ2hpU3F1YXJlUFZhbHVlKGN1cnJlbnQsIGRvZikgPCBwX3ZhbHVlKSB7CisgICAgICBt
YXhfY2hpc3EgPSBjdXJyZW50OworICAgIH0gZWxzZSB7CisgICAgICBtaW5fY2hpc3EgPSBjdXJy
ZW50OworICAgIH0KKyAgICBjdXJyZW50ID0gKG1heF9jaGlzcSArIG1pbl9jaGlzcSkgKiAwLjU7
CisgIH0KKyAgcmV0dXJuIGN1cnJlbnQ7Cit9CisKKy8vIENhbGN1bGF0ZXMgdGhlIHAtdmFsdWUg
KHByb2JhYmlsaXR5KSBvZiBhIGdpdmVuIGNoaS1zcXVhcmUgdmFsdWUKKy8vIGFuZCBkZWdyZWVz
IG9mIGZyZWVkb20uCisvLworLy8gQWRhcHRlZCBmcm9tIHRoZSBQT0NISVNRIGZ1bmN0aW9uIGZy
b206CisvLyAgICAgSGlsbCwgSS4gRC4gYW5kIFBpa2UsIE0uIEMuICBBbGdvcml0aG0gMjk5Cisv
LyAgICAgQ29sbGVjdGVkIEFsZ29yaXRobXMgb2YgdGhlIENBQ00gMTk2MyBwLiAyNDMKKy8vCitk
b3VibGUgQ2hpU3F1YXJlUFZhbHVlKGRvdWJsZSBjaGlfc3F1YXJlLCBpbnQgZG9mKSB7CisgIHN0
YXRpYyBjb25zdGV4cHIgZG91YmxlIGtMb2dTcXJ0UGkgPQorICAgICAgMC41NzIzNjQ5NDI5MjQ3
MDAwODcwNzE3MTM1OyAgLy8gTG9nW1NxcnRbUGldXQorICBzdGF0aWMgY29uc3RleHByIGRvdWJs
ZSBrSW52ZXJzZVNxcnRQaSA9CisgICAgICAwLjU2NDE4OTU4MzU0Nzc1NjI4Njk0ODA3OTU7ICAv
LyAxLyhTcXJ0W1BpXSkKKworICAvLyBGb3IgbGFyZ2UgZGVncmVlcyBvZiBmcmVlZG9tLCB1c2Ug
dGhlIG5vcm1hbCBhcHByb3hpbWF0aW9uIGJ5CisgIC8vICAgICBXaWxzb24sIEUuIEIuIGFuZCBI
aWxmZXJ0eSwgTS4gTS4gKDE5MzEpCisgIC8vIFZpYSBXaWtpcGVkaWE6CisgIC8vICAgQnkgdGhl
IENlbnRyYWwgTGltaXQgVGhlb3JlbSwgYmVjYXVzZSB0aGUgY2hpLXNxdWFyZSBkaXN0cmlidXRp
b24gaXMgdGhlCisgIC8vICAgc3VtIG9mIGsgaW5kZXBlbmRlbnQgcmFuZG9tIHZhcmlhYmxlcyB3
aXRoIGZpbml0ZSBtZWFuIGFuZCB2YXJpYW5jZSwgaXQKKyAgLy8gICBjb252ZXJnZXMgdG8gYSBu
b3JtYWwgZGlzdHJpYnV0aW9uIGZvciBsYXJnZSBrLgorICBpZiAoZG9mID4ga0xhcmdlRE9GKSB7
CisgICAgLy8gUmUtc2NhbGUgZXZlcnl0aGluZy4KKyAgICBjb25zdCBkb3VibGUgY2hpX3NxdWFy
ZV9zY2FsZWQgPSBzdGQ6OnBvdyhjaGlfc3F1YXJlIC8gZG9mLCAxLjAgLyAzKTsKKyAgICBjb25z
dCBkb3VibGUgbWVhbiA9IDEgLSAyLjAgLyAoOSAqIGRvZik7CisgICAgY29uc3QgZG91YmxlIHZh
cmlhbmNlID0gMi4wIC8gKDkgKiBkb2YpOworICAgIC8vIElmIHZhcmlhbmNlIGlzIDAsIHRoaXMg
bWV0aG9kIGNhbm5vdCBiZSB1c2VkLgorICAgIGlmICh2YXJpYW5jZSAhPSAwKSB7CisgICAgICBj
b25zdCBkb3VibGUgeiA9IChjaGlfc3F1YXJlX3NjYWxlZCAtIG1lYW4pIC8gc3RkOjpzcXJ0KHZh
cmlhbmNlKTsKKyAgICAgIGlmICh6ID4gMCkgeworICAgICAgICByZXR1cm4gbm9ybWFsX3N1cnZp
dmFsKHopOworICAgICAgfSBlbHNlIGlmICh6IDwgMCkgeworICAgICAgICByZXR1cm4gMS4wIC0g
bm9ybWFsX3N1cnZpdmFsKC16KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAwLjU7
CisgICAgICB9CisgICAgfQorICB9CisKKyAgLy8gVGhlIGNoaSBzcXVhcmUgZnVuY3Rpb24gaXMg
Pj0gMCBmb3IgYW55IGRlZ3JlZXMgb2YgZnJlZWRvbS4KKyAgLy8gSW4gb3RoZXIgd29yZHMsIHBy
b2JhYmlsaXR5IHRoYXQgdGhlIGNoaSBzcXVhcmUgZnVuY3Rpb24gPj0gMCBpcyAxLgorICBpZiAo
Y2hpX3NxdWFyZSA8PSAwLjApIHJldHVybiAxLjA7CisKKyAgLy8gSWYgdGhlIGRlZ3JlZXMgb2Yg
ZnJlZWRvbSBpcyB6ZXJvLCB0aGUgY2hpIHNxdWFyZSBmdW5jdGlvbiBpcyBhbHdheXMgMCBieQor
ICAvLyBkZWZpbml0aW9uLiBJbiBvdGhlciB3b3JkcywgdGhlIHByb2JhYmlsaXR5IHRoYXQgdGhl
IGNoaSBzcXVhcmUgZnVuY3Rpb24KKyAgLy8gaXMgPiAwIGlzIHplcm8gKGNoaSBzcXVhcmUgdmFs
dWVzIDw9IDAgaGF2ZSBiZWVuIGZpbHRlcmVkIGFib3ZlKS4KKyAgaWYgKGRvZiA8IDEpIHJldHVy
biAwOworCisgIGF1dG8gY2FwcGVkX2V4cCA9IFtdKGRvdWJsZSB4KSB7IHJldHVybiB4IDwgLTIw
ID8gMC4wIDogc3RkOjpleHAoeCk7IH07CisgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGtCaWdY
ID0gMjA7CisKKyAgZG91YmxlIGEgPSAwLjUgKiBjaGlfc3F1YXJlOworICBjb25zdCBib29sIGV2
ZW4gPSAhKGRvZiAmIDEpOyAgLy8gVHJ1ZSBpZiBkb2YgaXMgYW4gZXZlbiBudW1iZXIuCisgIGNv
bnN0IGRvdWJsZSB5ID0gY2FwcGVkX2V4cCgtYSk7CisgIGRvdWJsZSBzID0gZXZlbiA/IHkgOiAo
Mi4wICogUE9aKC1zdGQ6OnNxcnQoY2hpX3NxdWFyZSkpKTsKKworICBpZiAoZG9mIDw9IDIpIHsK
KyAgICByZXR1cm4gczsKKyAgfQorCisgIGNoaV9zcXVhcmUgPSAwLjUgKiAoZG9mIC0gMS4wKTsK
KyAgZG91YmxlIHogPSAoZXZlbiA/IDEuMCA6IDAuNSk7CisgIGlmIChhID4ga0JpZ1gpIHsKKyAg
ICBkb3VibGUgZSA9IChldmVuID8gMC4wIDoga0xvZ1NxcnRQaSk7CisgICAgZG91YmxlIGMgPSBz
dGQ6OmxvZyhhKTsKKyAgICB3aGlsZSAoeiA8PSBjaGlfc3F1YXJlKSB7CisgICAgICBlID0gc3Rk
Ojpsb2coeikgKyBlOworICAgICAgcyArPSBjYXBwZWRfZXhwKGMgKiB6IC0gYSAtIGUpOworICAg
ICAgeiArPSAxLjA7CisgICAgfQorICAgIHJldHVybiBzOworICB9CisKKyAgZG91YmxlIGUgPSAo
ZXZlbiA/IDEuMCA6IChrSW52ZXJzZVNxcnRQaSAvIHN0ZDo6c3FydChhKSkpOworICBkb3VibGUg
YyA9IDAuMDsKKyAgd2hpbGUgKHogPD0gY2hpX3NxdWFyZSkgeworICAgIGUgPSBlICogKGEgLyB6
KTsKKyAgICBjID0gYyArIGU7CisgICAgeiArPSAxLjA7CisgIH0KKyAgcmV0dXJuIGMgKiB5ICsg
czsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNl
IGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9jaGlfc3F1YXJlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhODY0NmYyNzRj
ZDM3NDEwMGFmZDBiZTY1MjZjZWFlZTlhYzUzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oCkBAIC0wLDAgKzEsODUgQEAKKy8vIENvcHlyaWdo
dCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVS
TkFMX0NISV9TUVVBUkVfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQ0hJX1NRVUFS
RV9IXworCisvLyBUaGUgY2hpLXNxdWFyZSBzdGF0aXN0aWMuCisvLworLy8gVXNlZnVsIGZvciBl
dmFsdWF0aW5nIGlmIGBEYCBpbmRlcGVuZGVudCByYW5kb20gdmFyaWFibGVzIGFyZSBiZWhhdmlu
ZyBhcworLy8gZXhwZWN0ZWQsIG9yIGlmIHR3byBkaXN0cmlidXRpb25zIGFyZSBzaW1pbGFyLiAg
KGBEYCBpcyB0aGUgZGVncmVlcyBvZgorLy8gZnJlZWRvbSkuCisvLworLy8gRWFjaCBidWNrZXQg
c2hvdWxkIGhhdmUgYW4gZXhwZWN0ZWQgY291bnQgb2YgMTAgb3IgbW9yZSBmb3IgdGhlIGNoaSBz
cXVhcmUgdG8KKy8vIGJlIG1lYW5pbmdmdWwuCisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorCituYW1l
c3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworY29uc3RleHByIGNv
bnN0IGNoYXIga0NoaVNxdWFyZWRbXSA9ICJjaGktc3F1YXJlZCI7CisKKy8vIFJldHVybnMgdGhl
IG1lYXN1cmVkIGNoaSBzcXVhcmUgdmFsdWUsIHVzaW5nIGEgc2luZ2xlIGV4cGVjdGVkIHZhbHVl
LiAgVGhpcworLy8gYXNzdW1lcyB0aGF0IHRoZSB2YWx1ZXMgaW4gW2JlZ2luLCBlbmQpIGFyZSB1
bmlmb3JtbHkgZGlzdHJpYnV0ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+Citkb3Vi
bGUgQ2hpU3F1YXJlV2l0aEV4cGVjdGVkKEl0ZXJhdG9yIGJlZ2luLCBJdGVyYXRvciBlbmQsIGRv
dWJsZSBleHBlY3RlZCkgeworICAvLyBDb21wdXRlIHRoZSBzdW0gYW5kIHRoZSBudW1iZXIgb2Yg
YnVja2V0cy4KKyAgYXNzZXJ0KGV4cGVjdGVkID49IDEwKTsgIC8vIHJlcXVpcmUgYXQgbGVhc3Qg
MTAgc2FtcGxlcyBwZXIgYnVja2V0LgorICBkb3VibGUgY2hpX3NxdWFyZSA9IDA7CisgIGZvciAo
YXV0byBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7IGl0KyspIHsKKyAgICBkb3VibGUgZCA9IHN0YXRp
Y19jYXN0PGRvdWJsZT4oKml0KSAtIGV4cGVjdGVkOworICAgIGNoaV9zcXVhcmUgKz0gZCAqIGQ7
CisgIH0KKyAgY2hpX3NxdWFyZSA9IGNoaV9zcXVhcmUgLyBleHBlY3RlZDsKKyAgcmV0dXJuIGNo
aV9zcXVhcmU7Cit9CisKKy8vIFJldHVybnMgdGhlIG1lYXN1cmVkIGNoaSBzcXVhcmUgdmFsdWUs
IHRha2luZyB0aGUgYWN0dWFsIHZhbHVlIG9mIGVhY2ggYnVja2V0CisvLyBmcm9tIHRoZSBmaXJz
dCBzZXQgb2YgaXRlcmF0b3JzLCBhbmQgdGhlIGV4cGVjdGVkIHZhbHVlIG9mIGVhY2ggYnVja2V0
IGZyb20KKy8vIHRoZSBzZWNvbmQgc2V0IG9mIGl0ZXJhdG9ycy4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJdGVyYXRvciwgdHlwZW5hbWUgRXhwZWN0ZWQ+Citkb3VibGUgQ2hpU3F1YXJlKEl0ZXJhdG9y
IGl0LCBJdGVyYXRvciBlbmQsIEV4cGVjdGVkIGVpdCwgRXhwZWN0ZWQgZWVuZCkgeworICBkb3Vi
bGUgY2hpX3NxdWFyZSA9IDA7CisgIGZvciAoOyBpdCAhPSBlbmQgJiYgZWl0ICE9IGVlbmQ7ICsr
aXQsICsrZWl0KSB7CisgICAgaWYgKCppdCA+IDApIHsKKyAgICAgIGFzc2VydCgqZWl0ID4gMCk7
CisgICAgfQorICAgIGRvdWJsZSBlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPigqZWl0KTsKKyAgICBk
b3VibGUgZCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oKml0IC0gKmVpdCk7CisgICAgaWYgKGQgIT0g
MCkgeworICAgICAgYXNzZXJ0KGUgPiAwKTsKKyAgICAgIGNoaV9zcXVhcmUgKz0gKGQgKiBkKSAv
IGU7CisgICAgfQorICB9CisgIGFzc2VydChpdCA9PSBlbmQgJiYgZWl0ID09IGVlbmQpOworICBy
ZXR1cm4gY2hpX3NxdWFyZTsKK30KKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gVGhlIGZvbGxvd2lu
ZyBtZXRob2RzIGNhbiBiZSB1c2VkIGZvciBhbiBhcmJpdHJhcnkgc2lnbmlmaWNhbmNlIGxldmVs
LgorLy8KKworLy8gQ2FsY3VsYXRlcyBjcml0aWNhbCBjaGktc3F1YXJlIHZhbHVlcyB0byBwcm9k
dWNlIHRoZSBnaXZlbiBwLXZhbHVlIHVzaW5nIGEKKy8vIGJpc2VjdGlvbiBzZWFyY2ggZm9yIGEg
dmFsdWUgd2l0aGluIGVwc2lsb24sIHJlbHlpbmcgb24gdGhlIG1vbm90b25pY2l0eSBvZgorLy8g
Q2hpU3F1YXJlUFZhbHVlKCkuCitkb3VibGUgQ2hpU3F1YXJlVmFsdWUoaW50IGRvZiwgZG91Ymxl
IHApOworCisvLyBDYWxjdWxhdGVzIHRoZSBwLXZhbHVlIChwcm9iYWJpbGl0eSkgb2YgYSBnaXZl
biBjaGktc3F1YXJlIHZhbHVlLgorZG91YmxlIENoaVNxdWFyZVBWYWx1ZShkb3VibGUgY2hpX3Nx
dWFyZSwgaW50IGRvZik7CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfQ0hJX1NR
VUFSRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmVfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9jaGlfc3F1YXJlX3Rlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTAyNWRlZmFjMTJjZTA2YmI3Yjk3ZDBhNWJhMGEzZmNmMjg1MWFkMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9jaGlfc3F1YXJlX3Rlc3QuY2MKQEAgLTAsMCAr
MSwzNjUgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorCisjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRl
IDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxudW1lcmljPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgorCit1
c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZTsKK3VzaW5nIGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6Q2hpU3F1YXJlUFZhbHVlOwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpDaGlTcXVhcmVWYWx1ZTsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJl
V2l0aEV4cGVjdGVkOworCituYW1lc3BhY2UgeworCitURVNUKENoaVNxdWFyZSwgVmFsdWUpIHsK
KyAgc3RydWN0IHsKKyAgICBpbnQgbGluZTsKKyAgICBkb3VibGUgY2hpX3NxdWFyZTsKKyAgICBp
bnQgZGY7CisgICAgZG91YmxlIGNvbmZpZGVuY2U7CisgIH0gY29uc3Qgc3BlY3NbXSA9IHsKKyAg
ICAgIC8vIFRlc3RpbmcgbG9va3VwIGF0IDElIGNvbmZpZGVuY2UKKyAgICAgIHtfX0xJTkVfXywg
MCwgMCwgMC4wMX0sCisgICAgICB7X19MSU5FX18sIDAuMDAwMTYsIDEsIDAuMDF9LAorICAgICAg
e19fTElORV9fLCAxLjY0NjUwLCA4LCAwLjAxfSwKKyAgICAgIHtfX0xJTkVfXywgNS44MTIyMSwg
MTYsIDAuMDF9LAorICAgICAge19fTElORV9fLCAxNTYuNDMxOSwgMjAwLCAwLjAxfSwKKyAgICAg
IHtfX0xJTkVfXywgMTEyMS4zNzg0LCAxMjM0LCAwLjAxfSwKKyAgICAgIHtfX0xJTkVfXywgNTM1
NTcuMTYyOSwgNTQzMjEsIDAuMDF9LAorICAgICAge19fTElORV9fLCA2NTE2NjIuNjY0NywgNjU0
MzIxLCAwLjAxfSwKKworICAgICAgLy8gVGVzdGluZyBsb29rdXAgYXQgOTklIGNvbmZpZGVuY2UK
KyAgICAgIHtfX0xJTkVfXywgMCwgMCwgMC45OX0sCisgICAgICB7X19MSU5FX18sIDYuNjM1LCAx
LCAwLjk5fSwKKyAgICAgIHtfX0xJTkVfXywgMjAuMDkwLCA4LCAwLjk5fSwKKyAgICAgIHtfX0xJ
TkVfXywgMzIuMDAwLCAxNiwgMC45OX0sCisgICAgICB7X19MSU5FX18sIDI0OS40NDU2LCAyMDAs
IDAuOTl9LAorICAgICAge19fTElORV9fLCAxMTMxLjE1NzMsIDEwMjMsIDAuOTl9LAorICAgICAg
e19fTElORV9fLCAxMzUyLjUwMzgsIDEyMzQsIDAuOTl9LAorICAgICAge19fTElORV9fLCA1NTA5
MC43MzU2LCA1NDMyMSwgMC45OX0sCisgICAgICB7X19MSU5FX18sIDY1Njk4NS4xNTE0LCA2NTQz
MjEsIDAuOTl9LAorCisgICAgICAvLyBUZXN0aW5nIGxvb2t1cCBhdCA5OS45JSBjb25maWRlbmNl
CisgICAgICB7X19MSU5FX18sIDE2LjI2NTksIDMsIDAuOTk5fSwKKyAgICAgIHtfX0xJTkVfXywg
MjIuNDU4MCwgNiwgMC45OTl9LAorICAgICAge19fTElORV9fLCAyNjcuNTQwOSwgMjAwLCAwLjk5
OX0sCisgICAgICB7X19MSU5FX18sIDExNjguNTAzMywgMTAyMywgMC45OTl9LAorICAgICAge19f
TElORV9fLCA1NTM0NS4xNzQxLCA1NDMyMSwgMC45OTl9LAorICAgICAge19fTElORV9fLCA2NTc4
NjEuNzI4NCwgNjU0MzIxLCAwLjk5OX0sCisgICAgICB7X19MSU5FX18sIDUxLjE3NzIsIDI0LCAw
Ljk5OX0sCisgICAgICB7X19MSU5FX18sIDU5LjcwMDMsIDMwLCAwLjk5OX0sCisgICAgICB7X19M
SU5FX18sIDM3LjY5ODQsIDE1LCAwLjk5OX0sCisgICAgICB7X19MSU5FX18sIDI5LjU4OTgsIDEw
LCAwLjk5OX0sCisgICAgICB7X19MSU5FX18sIDI3Ljg3NzYsIDksIDAuOTk5fSwKKworICAgICAg
Ly8gVGVzdGluZyBsb29rdXAgYXQgcmFuZG9tIGNvbmZpZGVuY2VzCisgICAgICB7X19MSU5FX18s
IDAuMDAwMTU3MDg4LCAxLCAwLjAxfSwKKyAgICAgIHtfX0xJTkVfXywgNS4zMTg1MiwgMiwgMC45
M30sCisgICAgICB7X19MSU5FX18sIDEuOTIyNTYsIDQsIDAuMjV9LAorICAgICAge19fTElORV9f
LCAxMC43NzA5LCAxMywgMC4zN30sCisgICAgICB7X19MSU5FX18sIDI2LjI1MTQsIDE3LCAwLjkz
fSwKKyAgICAgIHtfX0xJTkVfXywgMzYuNDc5OSwgMjksIDAuODR9LAorICAgICAge19fTElORV9f
LCAyNS44MTgsIDMxLCAwLjI3fSwKKyAgICAgIHtfX0xJTkVfXywgNjMuMzM0NiwgNjQsIDAuNTB9
LAorICAgICAge19fTElORV9fLCAxOTYuMjExLCAxMjgsIDAuOTk5OX0sCisgICAgICB7X19MSU5F
X18sIDIxNS4yMSwgMjQzLCAwLjEwfSwKKyAgICAgIHtfX0xJTkVfXywgMjg1LjM5MywgMjU2LCAw
LjkwfSwKKyAgICAgIHtfX0xJTkVfXywgOTg0LjUwNCwgMTAyNCwgMC4xOTIzfSwKKyAgICAgIHtf
X0xJTkVfXywgMjA0My44NSwgMjA0OCwgMC40NzgzfSwKKyAgICAgIHtfX0xJTkVfXywgNDgwMDQu
NiwgNDgyNzMsIDAuMTk0fSwKKyAgfTsKKyAgZm9yIChjb25zdCBhdXRvJiBzcGVjIDogc3BlY3Mp
IHsKKyAgICBTQ09QRURfVFJBQ0Uoc3BlYy5saW5lKTsKKyAgICAvLyBWZXJpZnkgYWxsIHZhbHVl
cyBhcmUgaGF2ZSBhdCBtb3N0IGEgMSUgcmVsYXRpdmUgZXJyb3IuCisgICAgY29uc3QgZG91Ymxl
IHZhbCA9IENoaVNxdWFyZVZhbHVlKHNwZWMuZGYsIHNwZWMuY29uZmlkZW5jZSk7CisgICAgY29u
c3QgZG91YmxlIGVyciA9IHN0ZDo6bWF4KDVlLTYsIHNwZWMuY2hpX3NxdWFyZSAvIDVlMyk7ICAv
LyAxIHBhcnQgaW4gNTAwMAorICAgIEVYUEVDVF9ORUFSKHNwZWMuY2hpX3NxdWFyZSwgdmFsLCBl
cnIpIDw8IHNwZWMubGluZTsKKyAgfQorCisgIC8vIFJlbGF4ZWQgdGVzdCBmb3IgZXh0cmVtZSB2
YWx1ZXMsIGZyb20KKyAgLy8gIGh0dHA6Ly93d3cuY2lwaGVyc2J5cml0dGVyLmNvbS9KQVZBU0NS
UC9OT1JNQ0hJSy5IVE0jQ2hpU3F1YXJlCisgIEVYUEVDVF9ORUFSKDQ5LjI2ODAsIENoaVNxdWFy
ZVZhbHVlKDEwMCwgMWUtNiksIDUpOyAgLy8gMC4wMDAnMDA1IG1hcmsKKyAgRVhQRUNUX05FQVIo
MTIzLjQ5OSwgQ2hpU3F1YXJlVmFsdWUoMjAwLCAxZS02KSwgNSk7ICAvLyAwLjAwMCcwMDUgbWFy
aworCisgIEVYUEVDVF9ORUFSKDE0OS40NDksIENoaVNxdWFyZVZhbHVlKDEwMCwgMC45OTkpLCAw
LjAxKTsKKyAgRVhQRUNUX05FQVIoMTYxLjMxOCwgQ2hpU3F1YXJlVmFsdWUoMTAwLCAwLjk5OTkp
LCAwLjAxKTsKKyAgRVhQRUNUX05FQVIoMTcyLjA5OCwgQ2hpU3F1YXJlVmFsdWUoMTAwLCAwLjk5
OTk5KSwgMC4wMSk7CisKKyAgRVhQRUNUX05FQVIoMzgxLjQyNiwgQ2hpU3F1YXJlVmFsdWUoMzAw
LCAwLjk5OSksIDAuMDUpOworICBFWFBFQ1RfTkVBUigzOTkuNzU2LCBDaGlTcXVhcmVWYWx1ZSgz
MDAsIDAuOTk5OSksIDAuMSk7CisgIEVYUEVDVF9ORUFSKDQxNi4xMjYsIENoaVNxdWFyZVZhbHVl
KDMwMCwgMC45OTk5OSksIDAuMik7Cit9CisKK1RFU1QoQ2hpU3F1YXJlVGVzdCwgUFZhbHVlKSB7
CisgIHN0cnVjdCB7CisgICAgaW50IGxpbmU7CisgICAgZG91YmxlIHB2YWw7CisgICAgZG91Ymxl
IGNoaV9zcXVhcmU7CisgICAgaW50IGRmOworICB9IHN0YXRpYyBjb25zdCBzcGVjc1tdID0gewor
ICAgICAge19fTElORV9fLCAxLCAwLCAwfSwKKyAgICAgIHtfX0xJTkVfXywgMCwgMC4wMDEsIDB9
LAorICAgICAge19fTElORV9fLCAxLjAwMCwgMCwgNDUzfSwKKyAgICAgIHtfX0xJTkVfXywgMC4x
MzQ0NzEsIDc5NzIuNTIsIDc4MzR9LAorICAgICAge19fTElORV9fLCAwLjIwMzkyMiwgMjguMzIs
IDIzfSwKKyAgICAgIHtfX0xJTkVfXywgMC43MzcxNzEsIDQ4Mjc0LCA0ODQ3Mn0sCisgICAgICB7
X19MSU5FX18sIDAuNDQ0MTQ2LCA1ODMuMTIzNCwgNTc5fSwKKyAgICAgIHtfX0xJTkVfXywgMC4y
OTQ4MTQsIDEzOC4yLCAxMzB9LAorICAgICAge19fTElORV9fLCAwLjA4MTY1MzIsIDEyLjYzLCA3
fSwKKyAgICAgIHtfX0xJTkVfXywgMCwgNjgyLjMyLCA2N30sCisgICAgICB7X19MSU5FX18sIDAu
NDk0MDUsIDk5OSwgOTk5fSwKKyAgICAgIHtfX0xJTkVfXywgMS4wMDAsIDAsIDk5OTl9LAorICAg
ICAge19fTElORV9fLCAwLjk5NzQ3NywgMC4wMDAwMSwgMX0sCisgICAgICB7X19MSU5FX18sIDAs
IDU4MjMuMjEsIDUwNDB9LAorICB9OworICBmb3IgKGNvbnN0IGF1dG8mIHNwZWMgOiBzcGVjcykg
eworICAgIFNDT1BFRF9UUkFDRShzcGVjLmxpbmUpOworICAgIGNvbnN0IGRvdWJsZSBwdmFsID0g
Q2hpU3F1YXJlUFZhbHVlKHNwZWMuY2hpX3NxdWFyZSwgc3BlYy5kZik7CisgICAgRVhQRUNUX05F
QVIoc3BlYy5wdmFsLCBwdmFsLCAxZS0zKTsKKyAgfQorfQorCitURVNUKENoaVNxdWFyZVRlc3Qs
IENhbGNDaGlTcXVhcmUpIHsKKyAgc3RydWN0IHsKKyAgICBpbnQgbGluZTsKKyAgICBzdGQ6OnZl
Y3RvcjxpbnQ+IGV4cGVjdGVkOworICAgIHN0ZDo6dmVjdG9yPGludD4gYWN0dWFsOworICB9IGNv
bnN0IHNwZWNzW10gPSB7CisgICAgICB7X19MSU5FX18sCisgICAgICAgezU2LCAyMzQsIDc2LCAx
LCA1NDYsIDEsIDg3LCAzNDUsIDEsIDIzNH0sCisgICAgICAgezIsIDEzMiwgNCwgNDMsIDIzNCwg
OCwgMzQ1LCA4LCAyMzYsIDU2fX0sCisgICAgICB7X19MSU5FX18sCisgICAgICAgezEyMywgMzYs
IDIzNCwgMzY3LCAzNDUsIDIsIDQ1NiwgNTY3LCAyMzQsIDU2N30sCisgICAgICAgezEyMywgNTYs
IDIzNDUsIDgsIDM0NSwgOCwgMjM0NSwgMjMsIDQ4LCAyNjd9fSwKKyAgICAgIHtfX0xJTkVfXywK
KyAgICAgICB7MTIzLCAyMzQsIDM0NSwgNDU2LCA1NjcsIDY3OCwgNzg5LCA4OTAsIDk4LCA3Nn0s
CisgICAgICAgezEyMywgMjM0LCAzNDUsIDQ1NiwgNTY3LCA2NzgsIDc4OSwgODkwLCA5OCwgNzZ9
fSwKKyAgICAgIHtfX0xJTkVfXywgezMsIDY3NSwgMjMsIDg2LCAyLCA4LCAyfSwgezQ1NiwgNjc1
LCAyMywgODYsIDIzLCA2NSwgMn19LAorICAgICAge19fTElORV9fLCB7MX0sIHsyM319LAorICB9
OworICBmb3IgKGNvbnN0IGF1dG8mIHNwZWMgOiBzcGVjcykgeworICAgIFNDT1BFRF9UUkFDRShz
cGVjLmxpbmUpOworICAgIGRvdWJsZSBjaGlfc3F1YXJlID0gMDsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IHNwZWMuZXhwZWN0ZWQuc2l6ZSgpOyArK2kpIHsKKyAgICAgIGNvbnN0IGRvdWJsZSBk
aWZmID0gc3BlYy5hY3R1YWxbaV0gLSBzcGVjLmV4cGVjdGVkW2ldOworICAgICAgY2hpX3NxdWFy
ZSArPSAoZGlmZiAqIGRpZmYpIC8gc3BlYy5leHBlY3RlZFtpXTsKKyAgICB9CisgICAgRVhQRUNU
X05FQVIoY2hpX3NxdWFyZSwKKyAgICAgICAgICAgICAgICBDaGlTcXVhcmUoc3RkOjpiZWdpbihz
cGVjLmFjdHVhbCksIHN0ZDo6ZW5kKHNwZWMuYWN0dWFsKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpiZWdpbihzcGVjLmV4cGVjdGVkKSwgc3RkOjplbmQoc3BlYy5leHBlY3RlZCkp
LAorICAgICAgICAgICAgICAgIDFlLTUpOworICB9Cit9CisKK1RFU1QoQ2hpU3F1YXJlVGVzdCwg
Q2FsY0NoaVNxdWFyZUludDY0KSB7CisgIGNvbnN0IGludDY0X3QgZGF0YVszXSA9IHs5MTAyOTM0
ODcsIDkxMDI5MjQ5MSwgOTEwMjE2NzgwfTsKKyAgLy8gJCBweXRob24gLWMgImltcG9ydCBzY2lw
eS5zdGF0cworICAvLyA+IHByaW50IHNjaXB5LnN0YXRzLmNoaXNxdWFyZShbOTEwMjkzNDg3LCA5
MTAyOTI0OTEsIDkxMDIxNjc4MF0pWzBdIgorICAvLyA0LjI1NDEwMTIzNTI0CisgIGRvdWJsZSBz
dW0gPSBzdGQ6OmFjY3VtdWxhdGUoc3RkOjpiZWdpbihkYXRhKSwgc3RkOjplbmQoZGF0YSksIGRv
dWJsZXswfSk7CisgIHNpemVfdCBuID0gc3RkOjpkaXN0YW5jZShzdGQ6OmJlZ2luKGRhdGEpLCBz
dGQ6OmVuZChkYXRhKSk7CisgIGRvdWJsZSBhID0gQ2hpU3F1YXJlV2l0aEV4cGVjdGVkKHN0ZDo6
YmVnaW4oZGF0YSksIHN0ZDo6ZW5kKGRhdGEpLCBzdW0gLyBuKTsKKyAgRVhQRUNUX05FQVIoNC4y
NTQxMDEsIGEsIDFlLTYpOworCisgIC8vIC4uLiBPciB3aXRoIGtub3duIHZhbHVlcy4KKyAgZG91
YmxlIGIgPQorICAgICAgQ2hpU3F1YXJlV2l0aEV4cGVjdGVkKHN0ZDo6YmVnaW4oZGF0YSksIHN0
ZDo6ZW5kKGRhdGEpLCA5MTAyNjc1ODYuMCk7CisgIEVYUEVDVF9ORUFSKDQuMjU0MTAxLCBiLCAx
ZS02KTsKK30KKworVEVTVChDaGlTcXVhcmVUZXN0LCBUYWJsZURhdGEpIHsKKyAgLy8gVGVzdCBk
YXRhIGZyb20KKyAgLy8gaHR0cDovL3d3dy5pdGwubmlzdC5nb3YvZGl2ODk4L2hhbmRib29rL2Vk
YS9zZWN0aW9uMy9lZGEzNjc0Lmh0bQorICAvLyAgICAwLjkwICAgICAgMC45NSAgICAgMC45NzUg
ICAgICAwLjk5ICAgICAwLjk5OQorICBjb25zdCBkb3VibGUgZGF0YVsxMDBdWzVdID0geworICAg
ICAgLyogMSovIHsyLjcwNiwgMy44NDEsIDUuMDI0LCA2LjYzNSwgMTAuODI4fSwKKyAgICAgIC8q
IDIqLyB7NC42MDUsIDUuOTkxLCA3LjM3OCwgOS4yMTAsIDEzLjgxNn0sCisgICAgICAvKiAzKi8g
ezYuMjUxLCA3LjgxNSwgOS4zNDgsIDExLjM0NSwgMTYuMjY2fSwKKyAgICAgIC8qIDQqLyB7Ny43
NzksIDkuNDg4LCAxMS4xNDMsIDEzLjI3NywgMTguNDY3fSwKKyAgICAgIC8qIDUqLyB7OS4yMzYs
IDExLjA3MCwgMTIuODMzLCAxNS4wODYsIDIwLjUxNX0sCisgICAgICAvKiA2Ki8gezEwLjY0NSwg
MTIuNTkyLCAxNC40NDksIDE2LjgxMiwgMjIuNDU4fSwKKyAgICAgIC8qIDcqLyB7MTIuMDE3LCAx
NC4wNjcsIDE2LjAxMywgMTguNDc1LCAyNC4zMjJ9LAorICAgICAgLyogOCovIHsxMy4zNjIsIDE1
LjUwNywgMTcuNTM1LCAyMC4wOTAsIDI2LjEyNX0sCisgICAgICAvKiA5Ki8gezE0LjY4NCwgMTYu
OTE5LCAxOS4wMjMsIDIxLjY2NiwgMjcuODc3fSwKKyAgICAgIC8qMTAqLyB7MTUuOTg3LCAxOC4z
MDcsIDIwLjQ4MywgMjMuMjA5LCAyOS41ODh9LAorICAgICAgLyoxMSovIHsxNy4yNzUsIDE5LjY3
NSwgMjEuOTIwLCAyNC43MjUsIDMxLjI2NH0sCisgICAgICAvKjEyKi8gezE4LjU0OSwgMjEuMDI2
LCAyMy4zMzcsIDI2LjIxNywgMzIuOTEwfSwKKyAgICAgIC8qMTMqLyB7MTkuODEyLCAyMi4zNjIs
IDI0LjczNiwgMjcuNjg4LCAzNC41Mjh9LAorICAgICAgLyoxNCovIHsyMS4wNjQsIDIzLjY4NSwg
MjYuMTE5LCAyOS4xNDEsIDM2LjEyM30sCisgICAgICAvKjE1Ki8gezIyLjMwNywgMjQuOTk2LCAy
Ny40ODgsIDMwLjU3OCwgMzcuNjk3fSwKKyAgICAgIC8qMTYqLyB7MjMuNTQyLCAyNi4yOTYsIDI4
Ljg0NSwgMzIuMDAwLCAzOS4yNTJ9LAorICAgICAgLyoxNyovIHsyNC43NjksIDI3LjU4NywgMzAu
MTkxLCAzMy40MDksIDQwLjc5MH0sCisgICAgICAvKjE4Ki8gezI1Ljk4OSwgMjguODY5LCAzMS41
MjYsIDM0LjgwNSwgNDIuMzEyfSwKKyAgICAgIC8qMTkqLyB7MjcuMjA0LCAzMC4xNDQsIDMyLjg1
MiwgMzYuMTkxLCA0My44MjB9LAorICAgICAgLyoyMCovIHsyOC40MTIsIDMxLjQxMCwgMzQuMTcw
LCAzNy41NjYsIDQ1LjMxNX0sCisgICAgICAvKjIxKi8gezI5LjYxNSwgMzIuNjcxLCAzNS40Nzks
IDM4LjkzMiwgNDYuNzk3fSwKKyAgICAgIC8qMjIqLyB7MzAuODEzLCAzMy45MjQsIDM2Ljc4MSwg
NDAuMjg5LCA0OC4yNjh9LAorICAgICAgLyoyMyovIHszMi4wMDcsIDM1LjE3MiwgMzguMDc2LCA0
MS42MzgsIDQ5LjcyOH0sCisgICAgICAvKjI0Ki8gezMzLjE5NiwgMzYuNDE1LCAzOS4zNjQsIDQy
Ljk4MCwgNTEuMTc5fSwKKyAgICAgIC8qMjUqLyB7MzQuMzgyLCAzNy42NTIsIDQwLjY0NiwgNDQu
MzE0LCA1Mi42MjB9LAorICAgICAgLyoyNiovIHszNS41NjMsIDM4Ljg4NSwgNDEuOTIzLCA0NS42
NDIsIDU0LjA1Mn0sCisgICAgICAvKjI3Ki8gezM2Ljc0MSwgNDAuMTEzLCA0My4xOTUsIDQ2Ljk2
MywgNTUuNDc2fSwKKyAgICAgIC8qMjgqLyB7MzcuOTE2LCA0MS4zMzcsIDQ0LjQ2MSwgNDguMjc4
LCA1Ni44OTJ9LAorICAgICAgLyoyOSovIHszOS4wODcsIDQyLjU1NywgNDUuNzIyLCA0OS41ODgs
IDU4LjMwMX0sCisgICAgICAvKjMwKi8gezQwLjI1NiwgNDMuNzczLCA0Ni45NzksIDUwLjg5Miwg
NTkuNzAzfSwKKyAgICAgIC8qMzEqLyB7NDEuNDIyLCA0NC45ODUsIDQ4LjIzMiwgNTIuMTkxLCA2
MS4wOTh9LAorICAgICAgLyozMiovIHs0Mi41ODUsIDQ2LjE5NCwgNDkuNDgwLCA1My40ODYsIDYy
LjQ4N30sCisgICAgICAvKjMzKi8gezQzLjc0NSwgNDcuNDAwLCA1MC43MjUsIDU0Ljc3NiwgNjMu
ODcwfSwKKyAgICAgIC8qMzQqLyB7NDQuOTAzLCA0OC42MDIsIDUxLjk2NiwgNTYuMDYxLCA2NS4y
NDd9LAorICAgICAgLyozNSovIHs0Ni4wNTksIDQ5LjgwMiwgNTMuMjAzLCA1Ny4zNDIsIDY2LjYx
OX0sCisgICAgICAvKjM2Ki8gezQ3LjIxMiwgNTAuOTk4LCA1NC40MzcsIDU4LjYxOSwgNjcuOTg1
fSwKKyAgICAgIC8qMzcqLyB7NDguMzYzLCA1Mi4xOTIsIDU1LjY2OCwgNTkuODkzLCA2OS4zNDd9
LAorICAgICAgLyozOCovIHs0OS41MTMsIDUzLjM4NCwgNTYuODk2LCA2MS4xNjIsIDcwLjcwM30s
CisgICAgICAvKjM5Ki8gezUwLjY2MCwgNTQuNTcyLCA1OC4xMjAsIDYyLjQyOCwgNzIuMDU1fSwK
KyAgICAgIC8qNDAqLyB7NTEuODA1LCA1NS43NTgsIDU5LjM0MiwgNjMuNjkxLCA3My40MDJ9LAor
ICAgICAgLyo0MSovIHs1Mi45NDksIDU2Ljk0MiwgNjAuNTYxLCA2NC45NTAsIDc0Ljc0NX0sCisg
ICAgICAvKjQyKi8gezU0LjA5MCwgNTguMTI0LCA2MS43NzcsIDY2LjIwNiwgNzYuMDg0fSwKKyAg
ICAgIC8qNDMqLyB7NTUuMjMwLCA1OS4zMDQsIDYyLjk5MCwgNjcuNDU5LCA3Ny40MTl9LAorICAg
ICAgLyo0NCovIHs1Ni4zNjksIDYwLjQ4MSwgNjQuMjAxLCA2OC43MTAsIDc4Ljc1MH0sCisgICAg
ICAvKjQ1Ki8gezU3LjUwNSwgNjEuNjU2LCA2NS40MTAsIDY5Ljk1NywgODAuMDc3fSwKKyAgICAg
IC8qNDYqLyB7NTguNjQxLCA2Mi44MzAsIDY2LjYxNywgNzEuMjAxLCA4MS40MDB9LAorICAgICAg
Lyo0NyovIHs1OS43NzQsIDY0LjAwMSwgNjcuODIxLCA3Mi40NDMsIDgyLjcyMH0sCisgICAgICAv
KjQ4Ki8gezYwLjkwNywgNjUuMTcxLCA2OS4wMjMsIDczLjY4MywgODQuMDM3fSwKKyAgICAgIC8q
NDkqLyB7NjIuMDM4LCA2Ni4zMzksIDcwLjIyMiwgNzQuOTE5LCA4NS4zNTF9LAorICAgICAgLyo1
MCovIHs2My4xNjcsIDY3LjUwNSwgNzEuNDIwLCA3Ni4xNTQsIDg2LjY2MX0sCisgICAgICAvKjUx
Ki8gezY0LjI5NSwgNjguNjY5LCA3Mi42MTYsIDc3LjM4NiwgODcuOTY4fSwKKyAgICAgIC8qNTIq
LyB7NjUuNDIyLCA2OS44MzIsIDczLjgxMCwgNzguNjE2LCA4OS4yNzJ9LAorICAgICAgLyo1Myov
IHs2Ni41NDgsIDcwLjk5MywgNzUuMDAyLCA3OS44NDMsIDkwLjU3M30sCisgICAgICAvKjU0Ki8g
ezY3LjY3MywgNzIuMTUzLCA3Ni4xOTIsIDgxLjA2OSwgOTEuODcyfSwKKyAgICAgIC8qNTUqLyB7
NjguNzk2LCA3My4zMTEsIDc3LjM4MCwgODIuMjkyLCA5My4xNjh9LAorICAgICAgLyo1NiovIHs2
OS45MTksIDc0LjQ2OCwgNzguNTY3LCA4My41MTMsIDk0LjQ2MX0sCisgICAgICAvKjU3Ki8gezcx
LjA0MCwgNzUuNjI0LCA3OS43NTIsIDg0LjczMywgOTUuNzUxfSwKKyAgICAgIC8qNTgqLyB7NzIu
MTYwLCA3Ni43NzgsIDgwLjkzNiwgODUuOTUwLCA5Ny4wMzl9LAorICAgICAgLyo1OSovIHs3My4y
NzksIDc3LjkzMSwgODIuMTE3LCA4Ny4xNjYsIDk4LjMyNH0sCisgICAgICAvKjYwKi8gezc0LjM5
NywgNzkuMDgyLCA4My4yOTgsIDg4LjM3OSwgOTkuNjA3fSwKKyAgICAgIC8qNjEqLyB7NzUuNTE0
LCA4MC4yMzIsIDg0LjQ3NiwgODkuNTkxLCAxMDAuODg4fSwKKyAgICAgIC8qNjIqLyB7NzYuNjMw
LCA4MS4zODEsIDg1LjY1NCwgOTAuODAyLCAxMDIuMTY2fSwKKyAgICAgIC8qNjMqLyB7NzcuNzQ1
LCA4Mi41MjksIDg2LjgzMCwgOTIuMDEwLCAxMDMuNDQyfSwKKyAgICAgIC8qNjQqLyB7NzguODYw
LCA4My42NzUsIDg4LjAwNCwgOTMuMjE3LCAxMDQuNzE2fSwKKyAgICAgIC8qNjUqLyB7NzkuOTcz
LCA4NC44MjEsIDg5LjE3NywgOTQuNDIyLCAxMDUuOTg4fSwKKyAgICAgIC8qNjYqLyB7ODEuMDg1
LCA4NS45NjUsIDkwLjM0OSwgOTUuNjI2LCAxMDcuMjU4fSwKKyAgICAgIC8qNjcqLyB7ODIuMTk3
LCA4Ny4xMDgsIDkxLjUxOSwgOTYuODI4LCAxMDguNTI2fSwKKyAgICAgIC8qNjgqLyB7ODMuMzA4
LCA4OC4yNTAsIDkyLjY4OSwgOTguMDI4LCAxMDkuNzkxfSwKKyAgICAgIC8qNjkqLyB7ODQuNDE4
LCA4OS4zOTEsIDkzLjg1NiwgOTkuMjI4LCAxMTEuMDU1fSwKKyAgICAgIC8qNzAqLyB7ODUuNTI3
LCA5MC41MzEsIDk1LjAyMywgMTAwLjQyNSwgMTEyLjMxN30sCisgICAgICAvKjcxKi8gezg2LjYz
NSwgOTEuNjcwLCA5Ni4xODksIDEwMS42MjEsIDExMy41Nzd9LAorICAgICAgLyo3MiovIHs4Ny43
NDMsIDkyLjgwOCwgOTcuMzUzLCAxMDIuODE2LCAxMTQuODM1fSwKKyAgICAgIC8qNzMqLyB7ODgu
ODUwLCA5My45NDUsIDk4LjUxNiwgMTA0LjAxMCwgMTE2LjA5Mn0sCisgICAgICAvKjc0Ki8gezg5
Ljk1NiwgOTUuMDgxLCA5OS42NzgsIDEwNS4yMDIsIDExNy4zNDZ9LAorICAgICAgLyo3NSovIHs5
MS4wNjEsIDk2LjIxNywgMTAwLjgzOSwgMTA2LjM5MywgMTE4LjU5OX0sCisgICAgICAvKjc2Ki8g
ezkyLjE2NiwgOTcuMzUxLCAxMDEuOTk5LCAxMDcuNTgzLCAxMTkuODUwfSwKKyAgICAgIC8qNzcq
LyB7OTMuMjcwLCA5OC40ODQsIDEwMy4xNTgsIDEwOC43NzEsIDEyMS4xMDB9LAorICAgICAgLyo3
OCovIHs5NC4zNzQsIDk5LjYxNywgMTA0LjMxNiwgMTA5Ljk1OCwgMTIyLjM0OH0sCisgICAgICAv
Kjc5Ki8gezk1LjQ3NiwgMTAwLjc0OSwgMTA1LjQ3MywgMTExLjE0NCwgMTIzLjU5NH0sCisgICAg
ICAvKjgwKi8gezk2LjU3OCwgMTAxLjg3OSwgMTA2LjYyOSwgMTEyLjMyOSwgMTI0LjgzOX0sCisg
ICAgICAvKjgxKi8gezk3LjY4MCwgMTAzLjAxMCwgMTA3Ljc4MywgMTEzLjUxMiwgMTI2LjA4M30s
CisgICAgICAvKjgyKi8gezk4Ljc4MCwgMTA0LjEzOSwgMTA4LjkzNywgMTE0LjY5NSwgMTI3LjMy
NH0sCisgICAgICAvKjgzKi8gezk5Ljg4MCwgMTA1LjI2NywgMTEwLjA5MCwgMTE1Ljg3NiwgMTI4
LjU2NX0sCisgICAgICAvKjg0Ki8gezEwMC45ODAsIDEwNi4zOTUsIDExMS4yNDIsIDExNy4wNTcs
IDEyOS44MDR9LAorICAgICAgLyo4NSovIHsxMDIuMDc5LCAxMDcuNTIyLCAxMTIuMzkzLCAxMTgu
MjM2LCAxMzEuMDQxfSwKKyAgICAgIC8qODYqLyB7MTAzLjE3NywgMTA4LjY0OCwgMTEzLjU0NCwg
MTE5LjQxNCwgMTMyLjI3N30sCisgICAgICAvKjg3Ki8gezEwNC4yNzUsIDEwOS43NzMsIDExNC42
OTMsIDEyMC41OTEsIDEzMy41MTJ9LAorICAgICAgLyo4OCovIHsxMDUuMzcyLCAxMTAuODk4LCAx
MTUuODQxLCAxMjEuNzY3LCAxMzQuNzQ2fSwKKyAgICAgIC8qODkqLyB7MTA2LjQ2OSwgMTEyLjAy
MiwgMTE2Ljk4OSwgMTIyLjk0MiwgMTM1Ljk3OH0sCisgICAgICAvKjkwKi8gezEwNy41NjUsIDEx
My4xNDUsIDExOC4xMzYsIDEyNC4xMTYsIDEzNy4yMDh9LAorICAgICAgLyo5MSovIHsxMDguNjYx
LCAxMTQuMjY4LCAxMTkuMjgyLCAxMjUuMjg5LCAxMzguNDM4fSwKKyAgICAgIC8qOTIqLyB7MTA5
Ljc1NiwgMTE1LjM5MCwgMTIwLjQyNywgMTI2LjQ2MiwgMTM5LjY2Nn0sCisgICAgICAvKjkzKi8g
ezExMC44NTAsIDExNi41MTEsIDEyMS41NzEsIDEyNy42MzMsIDE0MC44OTN9LAorICAgICAgLyo5
NCovIHsxMTEuOTQ0LCAxMTcuNjMyLCAxMjIuNzE1LCAxMjguODAzLCAxNDIuMTE5fSwKKyAgICAg
IC8qOTUqLyB7MTEzLjAzOCwgMTE4Ljc1MiwgMTIzLjg1OCwgMTI5Ljk3MywgMTQzLjM0NH0sCisg
ICAgICAvKjk2Ki8gezExNC4xMzEsIDExOS44NzEsIDEyNS4wMDAsIDEzMS4xNDEsIDE0NC41Njd9
LAorICAgICAgLyo5NyovIHsxMTUuMjIzLCAxMjAuOTkwLCAxMjYuMTQxLCAxMzIuMzA5LCAxNDUu
Nzg5fSwKKyAgICAgIC8qOTgqLyB7MTE2LjMxNSwgMTIyLjEwOCwgMTI3LjI4MiwgMTMzLjQ3Niwg
MTQ3LjAxMH0sCisgICAgICAvKjk5Ki8gezExNy40MDcsIDEyMy4yMjUsIDEyOC40MjIsIDEzNC42
NDIsIDE0OC4yMzB9LAorICAgICAgLyoxMDAqLyB7MTE4LjQ5OCwgMTI0LjM0MiwgMTI5LjU2MSwg
MTM1LjgwNywgMTQ5LjQ0OX0KKyAgICAgIC8qKi99OworCisgIC8vICAgIDAuOTAgICAgICAwLjk1
ICAgICAwLjk3NSAgICAgIDAuOTkgICAgIDAuOTk5CisgIGZvciAoaW50IGkgPSAwOyBpIDwgQUJT
TF9BUlJBWVNJWkUoZGF0YSk7IGkrKykgeworICAgIGNvbnN0IGRvdWJsZSBFID0gMC4wMDAxOwor
ICAgIEVYUEVDVF9ORUFSKENoaVNxdWFyZVBWYWx1ZShkYXRhW2ldWzBdLCBpICsgMSksIDAuMTAs
IEUpCisgICAgICAgIDw8IGkgPDwgIiAiIDw8IGRhdGFbaV1bMF07CisgICAgRVhQRUNUX05FQVIo
Q2hpU3F1YXJlUFZhbHVlKGRhdGFbaV1bMV0sIGkgKyAxKSwgMC4wNSwgRSkKKyAgICAgICAgPDwg
aSA8PCAiICIgPDwgZGF0YVtpXVsxXTsKKyAgICBFWFBFQ1RfTkVBUihDaGlTcXVhcmVQVmFsdWUo
ZGF0YVtpXVsyXSwgaSArIDEpLCAwLjAyNSwgRSkKKyAgICAgICAgPDwgaSA8PCAiICIgPDwgZGF0
YVtpXVsyXTsKKyAgICBFWFBFQ1RfTkVBUihDaGlTcXVhcmVQVmFsdWUoZGF0YVtpXVszXSwgaSAr
IDEpLCAwLjAxLCBFKQorICAgICAgICA8PCBpIDw8ICIgIiA8PCBkYXRhW2ldWzNdOworICAgIEVY
UEVDVF9ORUFSKENoaVNxdWFyZVBWYWx1ZShkYXRhW2ldWzRdLCBpICsgMSksIDAuMDAxLCBFKQor
ICAgICAgICA8PCBpIDw8ICIgIiA8PCBkYXRhW2ldWzRdOworCisgICAgY29uc3QgZG91YmxlIEYg
PSAwLjE7CisgICAgRVhQRUNUX05FQVIoQ2hpU3F1YXJlVmFsdWUoaSArIDEsIDAuOTApLCBkYXRh
W2ldWzBdLCBGKSA8PCBpOworICAgIEVYUEVDVF9ORUFSKENoaVNxdWFyZVZhbHVlKGkgKyAxLCAw
Ljk1KSwgZGF0YVtpXVsxXSwgRikgPDwgaTsKKyAgICBFWFBFQ1RfTkVBUihDaGlTcXVhcmVWYWx1
ZShpICsgMSwgMC45NzUpLCBkYXRhW2ldWzJdLCBGKSA8PCBpOworICAgIEVYUEVDVF9ORUFSKENo
aVNxdWFyZVZhbHVlKGkgKyAxLCAwLjk5KSwgZGF0YVtpXVszXSwgRikgPDwgaTsKKyAgICBFWFBF
Q1RfTkVBUihDaGlTcXVhcmVWYWx1ZShpICsgMSwgMC45OTkpLCBkYXRhW2ldWzRdLCBGKSA8PCBp
OworICB9Cit9CisKK1RFU1QoQ2hpU3F1YXJlVGVzdCwgQ2hpU3F1YXJlVHdvSXRlcmF0b3IpIHsK
KyAgLy8gVGVzdCBkYXRhIGZyb20gaHR0cDovL3d3dy5zdGF0LnlhbGUuZWR1L0NvdXJzZXMvMTk5
Ny05OC8xMDEvY2hpZ2YuaHRtCisgIC8vIE51bGwtaHlwb3RoZXNpczogVGhpcyBkYXRhIGlzIG5v
cm1hbGx5IGRpc3RyaWJ1dGVkLgorICBjb25zdCBpbnQgY291bnRzWzEwXSA9IHs2LCA2LCAxOCwg
MzMsIDM4LCAzOCwgMjgsIDIxLCA5LCAzfTsKKyAgY29uc3QgZG91YmxlIGV4cGVjdGVkWzEwXSA9
IHs0LjYsICA4LjgsICAxOC40LCAzMC4wLCAzOC4yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM4LjIsIDMwLjAsIDE4LjQsIDguOCwgIDQuNn07CisgIGRvdWJsZSBjaGlfc3F1YXJl
ID0gQ2hpU3F1YXJlKHN0ZDo6YmVnaW4oY291bnRzKSwgc3RkOjplbmQoY291bnRzKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpiZWdpbihleHBlY3RlZCksIHN0ZDo6ZW5k
KGV4cGVjdGVkKSk7CisgIEVYUEVDVF9ORUFSKGNoaV9zcXVhcmUsIDIuNjksIDAuMDAxKTsKKwor
ICAvLyBEZWdyZWVzIG9mIGZyZWVkb206IDEwIGJpbnMuIHR3byBlc3RpbWF0ZWQgcGFyYW1ldGVy
cy4gPSAxMCAtIDIgLSAxLgorICBjb25zdCBpbnQgZG9mID0gNzsKKyAgLy8gVGhlIGNyaXRpY2Fs
IHZhbHVlIG9mIDcsIDk1JSA9PiAxNC4wNjcgKHNlZSBhYm92ZSB0ZXN0KQorICBkb3VibGUgcF92
YWx1ZV8wNSA9IENoaVNxdWFyZVBWYWx1ZSgxNC4wNjcsIGRvZik7CisgIEVYUEVDVF9ORUFSKHBf
dmFsdWVfMDUsIDAuMDUsIDAuMDAxKTsgIC8vIDk1JS1pbGUgcC12YWx1ZQorCisgIGRvdWJsZSBw
X2FjdHVhbCA9IENoaVNxdWFyZVBWYWx1ZShjaGlfc3F1YXJlLCBkb2YpOworICBFWFBFQ1RfR1Qo
cF9hY3R1YWwsIDAuMDUpOyAgLy8gQWNjZXB0IHRoZSBudWxsIGh5cG90aGVzaXMuCit9CisKK1RF
U1QoQ2hpU3F1YXJlVGVzdCwgRGljZVJvbGxzKSB7CisgIC8vIEFzc3VtZSB3ZSBhcmUgdGVzdGlu
ZyAxMDIgZmFpciBkaWNlIHJvbGxzLgorICAvLyBOdWxsLWh5cG90aGVzaXM6IFRoaXMgZGF0YSBp
cyBmYWlybHkgZGlzdHJpYnV0ZWQuCisgIC8vCisgIC8vIFRoZSBkb2YgdmFsdWUgb2YgNCwgQDk1
JSA9IDkuNDg4IChzZWUgYWJvdmUgdGVzdCkKKyAgLy8gVGhlIGRvZiB2YWx1ZSBvZiA1LCBAOTUl
ID0gMTEuMDcwCisgIGNvbnN0IGludCByb2xsc1s2XSA9IHsyMiwgMTEsIDE3LCAxNCwgMjAsIDE4
fTsKKyAgZG91YmxlIHN1bSA9IHN0ZDo6YWNjdW11bGF0ZShzdGQ6OmJlZ2luKHJvbGxzKSwgc3Rk
OjplbmQocm9sbHMpLCBkb3VibGV7MH0pOworICBzaXplX3QgbiA9IHN0ZDo6ZGlzdGFuY2Uoc3Rk
OjpiZWdpbihyb2xscyksIHN0ZDo6ZW5kKHJvbGxzKSk7CisKKyAgZG91YmxlIGEgPSBDaGlTcXVh
cmVXaXRoRXhwZWN0ZWQoc3RkOjpiZWdpbihyb2xscyksIHN0ZDo6ZW5kKHJvbGxzKSwgc3VtIC8g
bik7CisgIEVYUEVDVF9ORUFSKGEsIDQuNzA1ODgsIDFlLTUpOworICBFWFBFQ1RfTFQoYSwgQ2hp
U3F1YXJlVmFsdWUoNCwgMC45NSkpOworCisgIGRvdWJsZSBwX2EgPSBDaGlTcXVhcmVQVmFsdWUo
YSwgNCk7CisgIEVYUEVDVF9ORUFSKHBfYSwgMC4zMTg4MjgsIDFlLTUpOyAgLy8gQWNjZXB0IHRo
ZSBudWxsIGh5cG90aGVzaXMuCisKKyAgZG91YmxlIGIgPSBDaGlTcXVhcmVXaXRoRXhwZWN0ZWQo
c3RkOjpiZWdpbihyb2xscyksIHN0ZDo6ZW5kKHJvbGxzKSwgMTcuMCk7CisgIEVYUEVDVF9ORUFS
KGIsIDQuNzA1ODgsIDFlLTUpOworICBFWFBFQ1RfTFQoYiwgQ2hpU3F1YXJlVmFsdWUoNSwgMC45
NSkpOworCisgIGRvdWJsZSBwX2IgPSBDaGlTcXVhcmVQVmFsdWUoYiwgNSk7CisgIEVYUEVDVF9O
RUFSKHBfYiwgMC40NTI4MTgwLCAxZS01KTsgIC8vIEFjY2VwdCB0aGUgbnVsbCBoeXBvdGhlc2lz
LgorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC9kaXN0cmlidXRpb25fY2FsbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0
aW9uX2NhbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzMThlMWY4MDcyZWMxMGY4ZmE0MzM1NTI0MDY2M2Fh
YzY2ZTI4MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJp
YnV0aW9uX2NhbGxlci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOCBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxf
RElTVFJJQlVUSU9OX0NBTExFUl9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9ESVNU
UklCVVRJT05fQ0FMTEVSX0hfCisKKyNpbmNsdWRlIDx1dGlsaXR5PgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gRGlzdHJpYnV0aW9uQ2FsbGVy
IHByb3ZpZGVzIGFuIG9wcG9ydHVuaXR5IHRvIG92ZXJsb2FkIHRoZSBnZW5lcmFsCisvLyBtZWNo
YW5pc20gZm9yIGNhbGxpbmcgYSBkaXN0cmlidXRpb24sIGFsbG93aW5nIGZvciBtb2NrLVJORyBj
bGFzc2VzCisvLyB0byBpbnRlcmNlcHQgc3VjaCBjYWxscy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBV
UkJHPgorc3RydWN0IERpc3RyaWJ1dGlvbkNhbGxlciB7CisgIC8vIENhbGwgdGhlIHByb3ZpZGVk
IGRpc3RyaWJ1dGlvbiB0eXBlLiBUaGUgcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQKKyAgLy8gdG8g
YmUgZXhwbGljaXRseSBzcGVjaWZpZWQuCisgIC8vIERpc3RyVCBpcyB0aGUgZGlzdHJpYnV0aW9u
IHR5cGUuCisgIC8vIEZvcm1hdFQgaXMgdGhlIGZvcm1hdHRlciB0eXBlOgorICAvLworICAvLyBz
dHJ1Y3QgRm9ybWF0VCB7CisgIC8vICAgdXNpbmcgcmVzdWx0X3R5cGUgPSBkaXN0cmlidXRpb25f
dDo6cmVzdWx0X3R5cGU7CisgIC8vICAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdENhbGwoCisg
IC8vICAgICAgIGNvbnN0IGRpc3RyaWJ1dGlvbl90JiBkaXN0ciwKKyAgLy8gICAgICAgYWJzbDo6
U3Bhbjxjb25zdCByZXN1bHRfdHlwZT4pOworICAvLworICAvLyAgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBGb3JtYXRFeHBlY3RhdGlvbigKKyAgLy8gICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgbWF0Y2hf
YXJncywKKyAgLy8gICAgICAgYWJzbDo6U3Bhbjxjb25zdCByZXN1bHRfdD4gcmVzdWx0cyk7Cisg
IC8vIH0KKyAgLy8KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIERpc3RyVCwgdHlwZW5hbWUgRm9ybWF0
VCwgdHlwZW5hbWUuLi4gQXJncz4KKyAgc3RhdGljIHR5cGVuYW1lIERpc3RyVDo6cmVzdWx0X3R5
cGUgQ2FsbChVUkJHKiB1cmJnLCBBcmdzJiYuLi4gYXJncykgeworICAgIERpc3RyVCBkaXN0KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgcmV0dXJuIGRpc3QoKnVyYmcpOworICB9
Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTl9DQUxM
RVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25faW1w
bC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWI2ZmZiMGZiNTA0YmU4YzFhMDM3YTMyMWRiM2E1ODFlMTdjOWU5ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25faW1wbC5oCkBAIC0wLDAg
KzEsMjYwIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lm
bmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9ESVNUUklCVVRJT05fSU1QTF9IXworI2RlZmluZSBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9ESVNUUklCVVRJT05fSU1QTF9IXworCisvLyBUaGlzIGZpbGUg
Y29udGFpbnMgc29tZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdoaWNoIGFyZSB1c2VkIGJ5IG9u
ZSBvciBtb3JlCisvLyBvZiB0aGUgYWJzbCByYW5kb20gbnVtYmVyIGRpc3RyaWJ1dGlvbnMuCisK
KyNpbmNsdWRlIDxjZmxvYXQ+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50
PgorI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVf
dHJhaXRzPgorCisjaWYgKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkpICYmIGRl
ZmluZWQoX01fSUE2NCkKKyNpbmNsdWRlIDxpbnRyaW4uaD4gIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlX29yZGVyKQorI3ByYWdtYSBpbnRyaW5zaWMoX3VtdWwxMjgpCisjZGVmaW5lIEFCU0xfSU5U
RVJOQUxfVVNFX1VNVUwxMjggMQorI2VuZGlmCisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvY29uZmln
LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaCIKKyNpbmNsdWRlICJhYnNs
L251bWVyaWMvaW50MTI4LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1h
dGguaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC90cmFpdHMuaCIKKworbmFtZXNw
YWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKKy8vIENyZWF0ZXMgYSBk
b3VibGUgZnJvbSBgYml0c2AsIHdpdGggdGhlIHRlbXBsYXRlIGZpZWxkcyBjb250cm9sbGluZyB0
aGUKKy8vIG91dHB1dC4KKy8vCisvLyBSYW5kVTY0VG8gaXMgYm90aCBtb3JlIGVmZmljaWVudCBh
bmQgZ2VuZXJhdGVzIG1vcmUgdW5pcXVlIHZhbHVlcyBpbiB0aGUKKy8vIHJlc3VsdCBpbnRlcnZh
bCB0aGFuIGtub3duIGltcGxlbWVudGF0aW9ucyBvZiBzdGQ6OmdlbmVyYXRlX2Nhbm9uaWNhbCgp
LgorLy8KKy8vIFRoZSBgU2lnbmVkYCBwYXJhbWV0ZXIgY29udHJvbHMgd2hldGhlciBwb3NpdGl2
ZSwgbmVnYXRpdmUsIG9yIGJvdGggYXJlCisvLyByZXR1cm5lZCAodGh1cyBhZmZlY3RpbmcgdGhl
IG91dHB1dCBpbnRlcnZhbCkuCisvLyAgIFdoZW4gU2lnbmVkID09IFNpZ25lZFZhbHVlVCwgcmFu
Z2UgaXMgVSgtMSwgMSkKKy8vICAgV2hlbiBTaWduZWQgPT0gTmVnYXRpdmVWYWx1ZVQsIHJhbmdl
IGlzIFUoLTEsIDApCisvLyAgIFdoZW4gU2lnbmVkID09IFBvc2l0aXZlVmFsdWVULCByYW5nZSBp
cyBVKDAsIDEpCisvLworLy8gV2hlbiB0aGUgYEluY2x1ZGVaZXJvYCBwYXJhbWV0ZXIgaXMgdHJ1
ZSwgdGhlIGZ1bmN0aW9uIG1heSByZXR1cm4gMCBmb3Igc29tZQorLy8gaW5wdXRzLCBvdGhlcndp
c2UgaXQgbmV2ZXIgcmV0dXJucyAwLgorLy8KKy8vIFRoZSBgRXhwb25lbnRCaWFzYCBwYXJhbWV0
ZXIgZGV0ZXJtaW5lcyB0aGUgc2NhbGUgb2YgdGhlIG91dHB1dCByYW5nZSBieQorLy8gYWRqdXN0
aW5nIHRoZSBleHBvbmVudC4KKy8vCisvLyBXaGVuIGEgdmFsdWUgaW4gVSgwLDEpIGlzIHJlcXVp
cmVkLCB1c2U6CisvLyAgIFJhbmRVNjRUb0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgdHJ1ZSwgMD4o
KTsKKy8vCisvLyBXaGVuIGEgdmFsdWUgaW4gVSgtMSwxKSBpcyByZXF1aXJlZCwgdXNlOgorLy8g
ICBSYW5kVTY0VG9Eb3VibGU8U2lnbmVkVmFsdWVULCBmYWxzZSwgMD4oKSA9PiBVKC0xLCAxKQor
Ly8gVGhpcyBnZW5lcmF0ZXMgbW9yZSBkaXN0aW5jdCB2YWx1ZXMgdGhhbiB0aGUgbWF0aGVtYXRp
Y2FsbHkgZXF1aXZhbGVudAorLy8gZXhwcmVzc2lvbiBgVSgwLCAxKSAqIDIuMCAtIDEuMGAsIGFu
ZCBpcyBwcmVmZXJhYmxlLgorLy8KKy8vIFNjYWxpbmcgdGhlIHJlc3VsdCBieSBwb3dlcnMgb2Yg
MiAoYW5kIGF2b2lkaW5nIGEgbXVsdGlwbHkpIGlzIGFsc28gcG9zc2libGU6CisvLyAgIFJhbmRV
NjRUb0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgZmFsc2UsIDE+KCk7ICA9PiBVKDAsIDIpCisvLyAg
IFJhbmRVNjRUb0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgZmFsc2UsIC0xPigpOyAgPT4gVSgwLCAw
LjUpCisvLworCisvLyBUcmlzdGF0ZSB0eXBlcyBjb250cm9sbGluZyB0aGUgb3V0cHV0Lgorc3Ry
dWN0IFBvc2l0aXZlVmFsdWVUIHt9Oworc3RydWN0IE5lZ2F0aXZlVmFsdWVUIHt9Oworc3RydWN0
IFNpZ25lZFZhbHVlVCB7fTsKKworLy8gUmFuZFU2NFRvRG91YmxlIGlzIHRoZSBkb3VibGUtcmVz
dWx0IHZhcmlhbnQgb2YgUmFuZFU2NFRvLCBkZXNjcmliZWQgYWJvdmUuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU2lnbmVkLCBib29sIEluY2x1ZGVaZXJvLCBpbnQgRXhwb25lbnRCaWFzID0gMD4KK2lu
bGluZSBkb3VibGUgUmFuZFU2NFRvRG91YmxlKHVpbnQ2NF90IGJpdHMpIHsKKyAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8U2lnbmVkLCBQb3NpdGl2ZVZhbHVlVD46OnZhbHVlIHx8CisgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTxTaWduZWQsIE5lZ2F0aXZlVmFsdWVUPjo6dmFs
dWUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPFNpZ25lZCwgU2lnbmVkVmFs
dWVUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIiIpOworCisgIC8vIE1heWJlIHVzZSB0aGUg
bGVmdC1tb3N0IGJpdCBmb3IgYSBzaWduIGJpdC4KKyAgdWludDY0X3Qgc2lnbiA9IHN0ZDo6aXNf
c2FtZTxTaWduZWQsIE5lZ2F0aXZlVmFsdWVUPjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAg
ICA/IDB4ODAwMDAwMDAwMDAwMDAwMHVsbAorICAgICAgICAgICAgICAgICAgICAgIDogMDsgIC8v
IFNpZ24gYml0cy4KKworICBpZiAoc3RkOjppc19zYW1lPFNpZ25lZCwgU2lnbmVkVmFsdWVUPjo6
dmFsdWUpIHsKKyAgICBzaWduID0gYml0cyAmIDB4ODAwMDAwMDAwMDAwMDAwMHVsbDsKKyAgICBi
aXRzID0gYml0cyAmIDB4N0ZGRkZGRkZGRkZGRkZGRnVsbDsKKyAgfQorICBpZiAoSW5jbHVkZVpl
cm8pIHsKKyAgICBpZiAoYml0cyA9PSAwdSkgcmV0dXJuIDA7CisgIH0KKworICAvLyBOdW1iZXIg
b2YgbGVhZGluZyB6ZXJvcyBpcyBtYXBwZWQgdG8gdGhlIGV4cG9uZW50OiAyXi1jbHoKKyAgaW50
IGNseiA9IGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQoYml0cyk7CisgIC8vIFNo
aWZ0IG51bWJlciBsZWZ0IHRvIGVyYXNlIGxlYWRpbmcgemVyb3MuCisgIGJpdHMgPDw9IEluY2x1
ZGVaZXJvID8gY2x6IDogKGNseiAmIDYzKTsKKworICAvLyBTaGlmdCBudW1iZXIgcmlnaHQgdG8g
cmVtb3ZlIGJpdHMgdGhhdCBvdmVyZmxvdyBkb3VibGUgbWFudGlzc2EuICBUaGUKKyAgLy8gZGly
ZWN0aW9uIG9mIHRoZSBzaGlmdCBkZXBlbmRzIG9uIGBjbHpgLgorICBiaXRzID4+PSAoNjQgLSBE
QkxfTUFOVF9ESUcpOworCisgIC8vIENvbXB1dGUgSUVFRSA3NTQgZG91YmxlIGV4cG9uZW50Lgor
ICAvLyBJbiB0aGUgU2lnbmVkIGNhc2UsIGJpdHMgaXMgYSA2My1iaXQgbnVtYmVyIHdpdGggYSAw
IG1zYi4gIEFkanVzdCB0aGUKKyAgLy8gZXhwb25lbnQgdG8gYWNjb3VudCBmb3IgdGhhdC4KKyAg
Y29uc3QgdWludDY0X3QgZXhwID0KKyAgICAgIChzdGQ6OmlzX3NhbWU8U2lnbmVkLCBTaWduZWRW
YWx1ZVQ+Ojp2YWx1ZSA/IDEwMjNVIDogMTAyMlUpICsKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihFeHBvbmVudEJpYXMgLSBjbHopOworICBjb25zdGV4cHIgaW50IGtFeHAgPSBEQkxfTUFO
VF9ESUcgLSAxOworICAvLyBDb25zdHJ1Y3QgSUVFRSA3NTQgZG91YmxlIGZyb20gZXhwb25lbnQg
YW5kIG1hbnRpc3NhLgorICBjb25zdCB1aW50NjRfdCB2YWwgPSBzaWduIHwgKGV4cCA8PCBrRXhw
KSB8IChiaXRzICYgKCgxVUxMIDw8IGtFeHApIC0gMVUpKTsKKworICBkb3VibGUgcmVzOworICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihyZXMpID09IHNpemVvZih2YWwpLCAiZG91YmxlIGlzIG5vdCA2
NCBiaXQiKTsKKyAgLy8gTWVtY3B5IHZhbHVlIGZyb20gInZhbCIgdG8gInJlcyIgdG8gYXZvaWQg
YWxpYXNpbmcgcHJvYmxlbXMuICBBc3N1bWVzIHRoYXQKKyAgLy8gZW5kaWFuLW5lc3MgaXMgc2Ft
ZSBmb3IgZG91YmxlIGFuZCB1aW50NjRfdC4KKyAgc3RkOjptZW1jcHkoJnJlcywgJnZhbCwgc2l6
ZW9mKHJlcykpOworCisgIHJldHVybiByZXM7Cit9CisKKy8vIFJhbmRVNjRUb0Zsb2F0IGlzIHRo
ZSBmbG9hdC1yZXN1bHQgdmFyaWFudCBvZiBSYW5kVTY0VG8sIGRlc2NyaWJlZCBhYm92ZS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBTaWduZWQsIGJvb2wgSW5jbHVkZVplcm8sIGludCBFeHBvbmVudEJp
YXMgPSAwPgoraW5saW5lIGZsb2F0IFJhbmRVNjRUb0Zsb2F0KHVpbnQ2NF90IGJpdHMpIHsKKyAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8U2lnbmVkLCBQb3NpdGl2ZVZhbHVlVD46OnZhbHVl
IHx8CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfc2FtZTxTaWduZWQsIE5lZ2F0aXZlVmFs
dWVUPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPFNpZ25lZCwg
U2lnbmVkVmFsdWVUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIiIpOworCisgIC8vIE1heWJl
IHVzZSB0aGUgbGVmdC1tb3N0IGJpdCBmb3IgYSBzaWduIGJpdC4KKyAgdWludDY0X3Qgc2lnbiA9
IHN0ZDo6aXNfc2FtZTxTaWduZWQsIE5lZ2F0aXZlVmFsdWVUPjo6dmFsdWUKKyAgICAgICAgICAg
ICAgICAgICAgICA/IDB4ODAwMDAwMDB1bAorICAgICAgICAgICAgICAgICAgICAgIDogMDsgIC8v
IFNpZ24gYml0cy4KKworICBpZiAoc3RkOjppc19zYW1lPFNpZ25lZCwgU2lnbmVkVmFsdWVUPjo6
dmFsdWUpIHsKKyAgICB1aW50NjRfdCBhID0gYml0cyAmIDB4ODAwMDAwMDAwMDAwMDAwMHVsbDsK
KyAgICBzaWduID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEgPj4gMzIpOworICAgIGJpdHMgPSBi
aXRzICYgMHg3RkZGRkZGRkZGRkZGRkZGdWxsOworICB9CisgIGlmIChJbmNsdWRlWmVybykgewor
ICAgIGlmIChiaXRzID09IDB1KSByZXR1cm4gMDsKKyAgfQorCisgIC8vIE51bWJlciBvZiBsZWFk
aW5nIHplcm9zIGlzIG1hcHBlZCB0byB0aGUgZXhwb25lbnQ6IDJeLWNsegorICBpbnQgY2x6ID0g
YmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChiaXRzKTsKKyAgLy8gU2hpZnQgbnVt
YmVyIGxlZnQgdG8gZXJhc2UgbGVhZGluZyB6ZXJvcy4KKyAgYml0cyA8PD0gSW5jbHVkZVplcm8g
PyBjbHogOiAoY2x6ICYgNjMpOworICAvLyBTaGlmdCBudW1iZXIgcmlnaHQgdG8gcmVtb3ZlIGJp
dHMgdGhhdCBvdmVyZmxvdyBkb3VibGUgbWFudGlzc2EuICBUaGUKKyAgLy8gZGlyZWN0aW9uIG9m
IHRoZSBzaGlmdCBkZXBlbmRzIG9uIGBjbHpgLgorICBiaXRzID4+PSAoNjQgLSBGTFRfTUFOVF9E
SUcpOworCisgIC8vIENvbnN0cnVjdCBJRUVFIDc1NCBmbG9hdCBleHBvbmVudC4KKyAgLy8gSW4g
dGhlIFNpZ25lZCBjYXNlLCBiaXRzIGlzIGEgNjMtYml0IG51bWJlciB3aXRoIGEgMCBtc2IuICBB
ZGp1c3QgdGhlCisgIC8vIGV4cG9uZW50IHRvIGFjY291bnQgZm9yIHRoYXQuCisgIGNvbnN0IHVp
bnQzMl90IGV4cCA9CisgICAgICAoc3RkOjppc19zYW1lPFNpZ25lZCwgU2lnbmVkVmFsdWVUPjo6
dmFsdWUgPyAxMjdVIDogMTI2VSkgKworICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEV4cG9u
ZW50QmlhcyAtIGNseik7CisgIGNvbnN0ZXhwciBpbnQga0V4cCA9IEZMVF9NQU5UX0RJRyAtIDE7
CisgIGNvbnN0IHVpbnQzMl90IHZhbCA9IHNpZ24gfCAoZXhwIDw8IGtFeHApIHwgKGJpdHMgJiAo
KDFVIDw8IGtFeHApIC0gMVUpKTsKKworICBmbG9hdCByZXM7CisgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKHJlcykgPT0gc2l6ZW9mKHZhbCksICJmbG9hdCBpcyBub3QgMzIgYml0Iik7CisgIC8vIEFz
c3VtZXMgdGhhdCBlbmRpYW4tbmVzcyBpcyBzYW1lIGZvciBmbG9hdCBhbmQgdWludDMyX3QuCisg
IHN0ZDo6bWVtY3B5KCZyZXMsICZ2YWwsIHNpemVvZihyZXMpKTsKKworICByZXR1cm4gcmVzOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0Pgorc3RydWN0IFJhbmRVNjRUb1JlYWwgewor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2lnbmVkLCBib29sIEluY2x1ZGVaZXJvLCBpbnQgRXhwb25l
bnRCaWFzID0gMD4KKyAgc3RhdGljIGlubGluZSBSZXN1bHQgVmFsdWUodWludDY0X3QgYml0cykg
eworICAgIHJldHVybiBSYW5kVTY0VG9Eb3VibGU8U2lnbmVkLCBJbmNsdWRlWmVybywgRXhwb25l
bnRCaWFzPihiaXRzKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBSYW5kVTY0VG9S
ZWFsPGZsb2F0PiB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBTaWduZWQsIGJvb2wgSW5jbHVkZVpl
cm8sIGludCBFeHBvbmVudEJpYXMgPSAwPgorICBzdGF0aWMgaW5saW5lIGZsb2F0IFZhbHVlKHVp
bnQ2NF90IGJpdHMpIHsKKyAgICByZXR1cm4gUmFuZFU2NFRvRmxvYXQ8U2lnbmVkLCBJbmNsdWRl
WmVybywgRXhwb25lbnRCaWFzPihiaXRzKTsKKyAgfQorfTsKKworaW5saW5lIHVpbnQxMjggTXVs
dGlwbHlVNjRUb1UxMjgodWludDY0X3QgYSwgdWludDY0X3QgYikgeworI2lmIGRlZmluZWQoQUJT
TF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgpCisgIHJldHVybiB1aW50MTI4KHN0YXRpY19jYXN0PF9f
dWludDEyOF90PihhKSAqIGIpOworI2VsaWYgZGVmaW5lZChBQlNMX0lOVEVSTkFMX1VTRV9VTVVM
MTI4KQorICAvLyB1aW50NjRfdCAqIHVpbnQ2NF90ID0+IHVpbnQxMjggbXVsdGlwbHkgdXNpbmcg
aW11bCBpbnRyaW5zaWMgb24gTVNWQy4KKyAgdWludDY0X3QgaGlnaCA9IDA7CisgIGNvbnN0IHVp
bnQ2NF90IGxvdyA9IF91bXVsMTI4KGEsIGIsICZoaWdoKTsKKyAgcmV0dXJuIGFic2w6Ok1ha2VV
aW50MTI4KGhpZ2gsIGxvdyk7CisjZWxzZQorICAvLyB1aW50MTI4KGEpICogdWludDEyOChiKSBp
biBlbXVsYXRlZCBtb2RlIGNvbXB1dGVzIGEgZnVsbCAxMjgtYml0IHggMTI4LWJpdAorICAvLyBt
dWx0aXBseS4gIEhvd2V2ZXIgdGhlcmUgYXJlIG1hbnkgY2FzZXMgd2hlcmUgdGhhdCBpcyBub3Qg
bmVjZXNzYXJ5LCBhbmQgaXQKKyAgLy8gaXMgb25seSBuZWNlc3NhcnkgdG8gc3VwcG9ydCBhIDY0
LWJpdCB4IDY0LWJpdCA9IDEyOC1iaXQgbXVsdGlwbHkuICBUaGlzIGlzCisgIC8vIGZvciB0aG9z
ZSBjYXNlcy4KKyAgY29uc3QgdWludDY0X3QgYTAwID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEp
OworICBjb25zdCB1aW50NjRfdCBhMzIgPSBhID4+IDMyOworICBjb25zdCB1aW50NjRfdCBiMDAg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYik7CisgIGNvbnN0IHVpbnQ2NF90IGIzMiA9IGIgPj4g
MzI7CisKKyAgY29uc3QgdWludDY0X3QgYzAwID0gYTAwICogYjAwOworICBjb25zdCB1aW50NjRf
dCBjMzJhID0gYTAwICogYjMyOworICBjb25zdCB1aW50NjRfdCBjMzJiID0gYTMyICogYjAwOwor
ICBjb25zdCB1aW50NjRfdCBjNjQgPSBhMzIgKiBiMzI7CisKKyAgY29uc3QgdWludDMyX3QgY2Fy
cnkgPQorICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgoYzAwID4+IDMyKSArIHN0YXRpY19j
YXN0PHVpbnQzMl90PihjMzJhKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihjMzJiKSkgPj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
Mik7CisKKyAgcmV0dXJuIGFic2w6Ok1ha2VVaW50MTI4KGM2NCArIChjMzJhID4+IDMyKSArIChj
MzJiID4+IDMyKSArIGNhcnJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAwICsgKGMz
MmEgPDwgMzIpICsgKGMzMmIgPDwgMzIpKTsKKyNlbmRpZgorfQorCisvLyB3aWRlX211bHRpcGx5
PFQ+IG11bHRpcGxpZXMgdHdvIE4tYml0IHZhbHVlcyB0byBhIDJOLWJpdCByZXN1bHQuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVUludFR5cGU+CitzdHJ1Y3Qgd2lkZV9tdWx0aXBseSB7CisgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGtOID0gc3RkOjpudW1lcmljX2xpbWl0czxVSW50VHlwZT46OmRp
Z2l0czsKKyAgdXNpbmcgaW5wdXRfdHlwZSA9IFVJbnRUeXBlOworICB1c2luZyByZXN1bHRfdHlw
ZSA9IHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6dW5zaWduZWRfYml0czxrTiAqIDI+Ojp0eXBl
OworCisgIHN0YXRpYyByZXN1bHRfdHlwZSBtdWx0aXBseShpbnB1dF90eXBlIGEsIGlucHV0X3R5
cGUgYikgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oYSkgKiBiOworICB9
CisKKyAgc3RhdGljIGlucHV0X3R5cGUgaGkocmVzdWx0X3R5cGUgcikgeyByZXR1cm4gciA+PiBr
TjsgfQorICBzdGF0aWMgaW5wdXRfdHlwZSBsbyhyZXN1bHRfdHlwZSByKSB7IHJldHVybiByOyB9
CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Vuc2lnbmVkPFVJbnRUeXBlPjo6dmFsdWUsCisg
ICAgICAgICAgICAgICAgIkNsYXNzLXRlbXBsYXRlIHdpZGVfbXVsdGlwbHk8PiBhcmd1bWVudCBt
dXN0IGJlIHVuc2lnbmVkLiIpOworfTsKKworI2lmbmRlZiBBQlNMX0hBVkVfSU5UUklOU0lDX0lO
VDEyOAordGVtcGxhdGUgPD4KK3N0cnVjdCB3aWRlX211bHRpcGx5PHVpbnQ2NF90PiB7CisgIHVz
aW5nIGlucHV0X3R5cGUgPSB1aW50NjRfdDsKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB1aW50MTI4
OworCisgIHN0YXRpYyByZXN1bHRfdHlwZSBtdWx0aXBseSh1aW50NjRfdCBhLCB1aW50NjRfdCBi
KSB7CisgICAgcmV0dXJuIE11bHRpcGx5VTY0VG9VMTI4KGEsIGIpOworICB9CisKKyAgc3RhdGlj
IHVpbnQ2NF90IGhpKHJlc3VsdF90eXBlIHIpIHsgcmV0dXJuIFVpbnQxMjhIaWdoNjQocik7IH0K
KyAgc3RhdGljIHVpbnQ2NF90IGxvKHJlc3VsdF90eXBlIHIpIHsgcmV0dXJuIFVpbnQxMjhMb3c2
NChyKTsgfQorfTsKKyNlbmRpZgorCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX0RJ
U1RSSUJVVElPTl9JTVBMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlz
dHJpYnV0aW9uX2ltcGxfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRp
b25faW1wbF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZTdhMzE4Y2NjNTRjY2ZjYjI4NDU4ZjYxMTZh
NTM5OWVlNGMwOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlz
dHJpYnV0aW9uX2ltcGxfdGVzdC5jYwpAQCAtMCwwICsxLDUwNiBAQAorLy8gQ29weXJpZ2h0IDIw
MTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5h
bC9kaXN0cmlidXRpb25faW1wbC5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNs
dWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvYml0cy5oIgorI2luY2x1ZGUgImFic2wvZmxhZ3MvZmxh
Zy5oIgorI2luY2x1ZGUgImFic2wvbnVtZXJpYy9pbnQxMjguaCIKKworQUJTTF9GTEFHKGludDY0
X3QsIGFic2xfcmFuZG9tX3Rlc3RfdHJpYWxzLCA1MDAwMCwKKyAgICAgICAgICAiTnVtYmVyIG9m
IHRyaWFscyBmb3IgdGhlIHByb2JhYmlsaXR5IHRlc3RzLiIpOworCit1c2luZyBhYnNsOjpyYW5k
b21faW50ZXJuYWw6Ok5lZ2F0aXZlVmFsdWVUOwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpQb3NpdGl2ZVZhbHVlVDsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmFuZFU2NFRv
RG91YmxlOwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSYW5kVTY0VG9GbG9hdDsKK3Vz
aW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U2lnbmVkVmFsdWVUOworCituYW1lc3BhY2Ugewor
CitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRUb0Zsb2F0X1Bvc2l0aXZlX05vWmVyb19U
ZXN0KSB7CisgIGF1dG8gVG9GbG9hdCA9IFtdKHVpbnQ2NF90IGEpIHsKKyAgICByZXR1cm4gUmFu
ZFU2NFRvRmxvYXQ8UG9zaXRpdmVWYWx1ZVQsIGZhbHNlPihhKTsKKyAgfTsKKyAgRVhQRUNUX0VR
KFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAwKSwgMi43MTA1MDU0MzFlLTIwZik7CisgIEVYUEVD
VF9FUShUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMSksIDUuNDIxMDEwODYyZS0yMGYpOworICBF
WFBFQ1RfRVEoVG9GbG9hdCgweDgwMDAwMDAwMDAwMDAwMDApLCAwLjUpOworICBFWFBFQ1RfRVEo
VG9GbG9hdCgweEZGRkZGRkZGRkZGRkZGRkYpLCAwLjk5OTk5OTk0MDRmKTsKK30KKworVEVTVChE
aXN0cmlidXRpb25JbXBsVGVzdCwgVTY0VG9GbG9hdF9Qb3NpdGl2ZV9aZXJvX1Rlc3QpIHsKKyAg
YXV0byBUb0Zsb2F0ID0gW10odWludDY0X3QgYSkgeworICAgIHJldHVybiBSYW5kVTY0VG9GbG9h
dDxQb3NpdGl2ZVZhbHVlVCwgdHJ1ZT4oYSk7CisgIH07CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4
MDAwMDAwMDAwMDAwMDAwMCksIDAuMCk7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4MDAwMDAwMDAw
MDAwMDAwMSksIDUuNDIxMDEwODYyZS0yMGYpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgwMDAw
MDAwMDAwMDAwMDApLCAwLjUpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweEZGRkZGRkZGRkZGRkZG
RkYpLCAwLjk5OTk5OTk0MDRmKTsKK30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwgVTY0
VG9GbG9hdF9OZWdhdGl2ZV9Ob1plcm9fVGVzdCkgeworICBhdXRvIFRvRmxvYXQgPSBbXSh1aW50
NjRfdCBhKSB7CisgICAgcmV0dXJuIFJhbmRVNjRUb0Zsb2F0PE5lZ2F0aXZlVmFsdWVULCBmYWxz
ZT4oYSk7CisgIH07CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMCksIC0y
LjcxMDUwNTQzMWUtMjBmKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAx
KSwgLTUuNDIxMDEwODYyZS0yMGYpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgwMDAwMDAwMDAw
MDAwMDApLCAtMC41KTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHhGRkZGRkZGRkZGRkZGRkZGKSwg
LTAuOTk5OTk5OTQwNGYpOworfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRUb0Zs
b2F0X1NpZ25lZF9Ob1plcm9fVGVzdCkgeworICBhdXRvIFRvRmxvYXQgPSBbXSh1aW50NjRfdCBh
KSB7CisgICAgcmV0dXJuIFJhbmRVNjRUb0Zsb2F0PFNpZ25lZFZhbHVlVCwgZmFsc2U+KGEpOwor
ICB9OworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDAwMDAwMDAwMDAwMDAwMDApLCA1LjQyMTAxMDg2
MmUtMjBmKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAxKSwgMS4wODQy
MDIxNzJlLTE5Zik7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4N0ZGRkZGRkZGRkZGRkZGRiksIDAu
OTk5OTk5OTQwNGYpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgwMDAwMDAwMDAwMDAwMDApLCAt
NS40MjEwMTA4NjJlLTIwZik7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4ODAwMDAwMDAwMDAwMDAw
MSksIC0xLjA4NDIwMjE3MmUtMTlmKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHhGRkZGRkZGRkZG
RkZGRkZGKSwgLTAuOTk5OTk5OTQwNGYpOworfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0
LCBVNjRUb0Zsb2F0X1NpZ25lZF9aZXJvX1Rlc3QpIHsKKyAgYXV0byBUb0Zsb2F0ID0gW10odWlu
dDY0X3QgYSkgeworICAgIHJldHVybiBSYW5kVTY0VG9GbG9hdDxTaWduZWRWYWx1ZVQsIHRydWU+
KGEpOworICB9OworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDAwMDAwMDAwMDAwMDAwMDApLCAwKTsK
KyAgRVhQRUNUX0VRKFRvRmxvYXQoMHgwMDAwMDAwMDAwMDAwMDAxKSwgMS4wODQyMDIxNzJlLTE5
Zik7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4N0ZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5OTQw
NGYpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgwMDAwMDAwMDAwMDAwMDApLCAwKTsKKyAgRVhQ
RUNUX0VRKFRvRmxvYXQoMHg4MDAwMDAwMDAwMDAwMDAxKSwgLTEuMDg0MjAyMTcyZS0xOWYpOwor
ICBFWFBFQ1RfRVEoVG9GbG9hdCgweEZGRkZGRkZGRkZGRkZGRkYpLCAtMC45OTk5OTk5NDA0Zik7
Cit9CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1wbFRlc3QsIFU2NFRvRmxvYXRfU2lnbmVkX0JpYXNf
VGVzdCkgeworICBhdXRvIFRvRmxvYXQgPSBbXSh1aW50NjRfdCBhKSB7CisgICAgcmV0dXJuIFJh
bmRVNjRUb0Zsb2F0PFNpZ25lZFZhbHVlVCwgdHJ1ZSwgMT4oYSk7CisgIH07CisgIEVYUEVDVF9F
UShUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMCksIDApOworICBFWFBFQ1RfRVEoVG9GbG9hdCgw
eDAwMDAwMDAwMDAwMDAwMDEpLCAyICogMS4wODQyMDIxNzJlLTE5Zik7CisgIEVYUEVDVF9FUShU
b0Zsb2F0KDB4N0ZGRkZGRkZGRkZGRkZGRiksIDIgKiAwLjk5OTk5OTk0MDRmKTsKKyAgRVhQRUNU
X0VRKFRvRmxvYXQoMHg4MDAwMDAwMDAwMDAwMDAwKSwgMCk7CisgIEVYUEVDVF9FUShUb0Zsb2F0
KDB4ODAwMDAwMDAwMDAwMDAwMSksIDIgKiAtMS4wODQyMDIxNzJlLTE5Zik7CisgIEVYUEVDVF9F
UShUb0Zsb2F0KDB4RkZGRkZGRkZGRkZGRkZGRiksIDIgKiAtMC45OTk5OTk5NDA0Zik7Cit9CisK
K1RFU1QoRGlzdHJpYnV0aW9uSW1wbFRlc3QsIFU2NFRvRmxvYXRUZXN0KSB7CisgIGF1dG8gVG9G
bG9hdCA9IFtdKHVpbnQ2NF90IGEpIC0+IGZsb2F0IHsKKyAgICByZXR1cm4gUmFuZFU2NFRvRmxv
YXQ8UG9zaXRpdmVWYWx1ZVQsIHRydWU+KGEpOworICB9OworCisgIEVYUEVDVF9FUShUb0Zsb2F0
KDB4MDAwMDAwMDAwMDAwMDAwMCksIDAuMGYpOworCisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4ODAw
MDAwMDAwMDAwMDAwMCksIDAuNWYpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDgwMDAwMDAwMDAw
MDAwMDEpLCAwLjVmKTsKKyAgRVhQRUNUX0VRKFRvRmxvYXQoMHg4MDAwMDBGRkZGRkZGRkZGKSwg
MC41Zik7CisgIEVYUEVDVF9FUShUb0Zsb2F0KDB4RkZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5
OTQwNGYpOworCisgIEVYUEVDVF9HVChUb0Zsb2F0KDB4MDAwMDAwMDAwMDAwMDAwMSksIDAuMGYp
OworCisgIEVYUEVDVF9ORShUb0Zsb2F0KDB4N0ZGRkZGMDAwMDAwMDAwMCksIFRvRmxvYXQoMHg3
RkZGRkVGRkZGRkZGRkZGKSk7CisKKyAgRVhQRUNUX0xUKFRvRmxvYXQoMHhGRkZGRkZGRkZGRkZG
RkZGKSwgMS4wZik7CisgIGludDMyX3QgdHdvX3RvXzI0ID0gMSA8PCAyNDsKKyAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PGludDMyX3Q+KFRvRmxvYXQoMHhGRkZGRkZGRkZGRkZGRkZGKSAqIHR3b190
b18yNCksCisgICAgICAgICAgICB0d29fdG9fMjQgLSAxKTsKKyAgRVhQRUNUX05FKHN0YXRpY19j
YXN0PGludDMyX3Q+KFRvRmxvYXQoMHhGRkZGRkZGRkZGRkZGRkZGKSAqIHR3b190b18yNCAqIDIp
LAorICAgICAgICAgICAgdHdvX3RvXzI0ICogMiAtIDEpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgw
eEZGRkZGRkZGRkZGRkZGRkYpLCBUb0Zsb2F0KDB4RkZGRkZGMDAwMDAwMDAwMCkpOworICBFWFBF
Q1RfTkUoVG9GbG9hdCgweEZGRkZGRkZGRkZGRkZGRkYpLCBUb0Zsb2F0KDB4RkZGRkZFRkZGRkZG
RkZGRikpOworICBFWFBFQ1RfRVEoVG9GbG9hdCgweDdGRkZGRkZGRkZGRkZGRkYpLCBUb0Zsb2F0
KDB4N0ZGRkZGODAwMDAwMDAwMCkpOworICBFWFBFQ1RfTkUoVG9GbG9hdCgweDdGRkZGRkZGRkZG
RkZGRkYpLCBUb0Zsb2F0KDB4N0ZGRkZGN0ZGRkZGRkZGRikpOworICBFWFBFQ1RfRVEoVG9GbG9h
dCgweDNGRkZGRkZGRkZGRkZGRkYpLCBUb0Zsb2F0KDB4M0ZGRkZGQzAwMDAwMDAwMCkpOworICBF
WFBFQ1RfTkUoVG9GbG9hdCgweDNGRkZGRkZGRkZGRkZGRkYpLCBUb0Zsb2F0KDB4M0ZGRkZGQkZG
RkZGRkZGRikpOworCisgIC8vIEZvciB2YWx1ZXMgd2hlcmUgZXZlcnkgYml0IGNvdW50cywgdGhl
IHZhbHVlcyBzY2FsZSBhcyBtdWx0aXBsZXMgb2YgdGhlCisgIC8vIGlucHV0LgorICBmb3IgKGlu
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgRVhQRUNUX0VRKGkgKiBUb0Zsb2F0KDB4MDAw
MDAwMDAwMDAwMDAwMSksIFRvRmxvYXQoaSkpOworICB9CisKKyAgLy8gRm9yIGVhY2ggaTogdmFs
dWUgZ2VuZXJhdGVkIGZyb20gKDEgPDwgaSkuCisgIGZsb2F0IGV4cF92YWx1ZXNbNjRdOworICBl
eHBfdmFsdWVzWzYzXSA9IDAuNWY7CisgIGZvciAoaW50IGkgPSA2MjsgaSA+PSAwOyAtLWkpIGV4
cF92YWx1ZXNbaV0gPSAwLjVmICogZXhwX3ZhbHVlc1tpICsgMV07CisgIGNvbnN0ZXhwciB1aW50
NjRfdCBvbmUgPSAxOworICBmb3IgKGludCBpID0gMDsgaSA8IDY0OyArK2kpIHsKKyAgICBFWFBF
Q1RfRVEoVG9GbG9hdChvbmUgPDwgaSksIGV4cF92YWx1ZXNbaV0pOworICAgIGZvciAoaW50IGog
PSAxOyBqIDwgRkxUX01BTlRfRElHICYmIGkgLSBqID49IDA7ICsraikgeworICAgICAgRVhQRUNU
X05FKGV4cF92YWx1ZXNbaV0gKyBleHBfdmFsdWVzW2kgLSBqXSwgZXhwX3ZhbHVlc1tpXSk7Cisg
ICAgICBFWFBFQ1RfRVEoVG9GbG9hdCgob25lIDw8IGkpICsgKG9uZSA8PCAoaSAtIGopKSksCisg
ICAgICAgICAgICAgICAgZXhwX3ZhbHVlc1tpXSArIGV4cF92YWx1ZXNbaSAtIGpdKTsKKyAgICB9
CisgICAgZm9yIChpbnQgaiA9IEZMVF9NQU5UX0RJRzsgaSAtIGogPj0gMDsgKytqKSB7CisgICAg
ICBFWFBFQ1RfRVEoZXhwX3ZhbHVlc1tpXSArIGV4cF92YWx1ZXNbaSAtIGpdLCBleHBfdmFsdWVz
W2ldKTsKKyAgICAgIEVYUEVDVF9FUShUb0Zsb2F0KChvbmUgPDwgaSkgKyAob25lIDw8IChpIC0g
aikpKSwgZXhwX3ZhbHVlc1tpXSk7CisgICAgfQorICB9Cit9CisKK1RFU1QoRGlzdHJpYnV0aW9u
SW1wbFRlc3QsIFU2NFRvRG91YmxlX1Bvc2l0aXZlX05vWmVyb19UZXN0KSB7CisgIGF1dG8gVG9E
b3VibGUgPSBbXSh1aW50NjRfdCBhKSB7CisgICAgcmV0dXJuIFJhbmRVNjRUb0RvdWJsZTxQb3Np
dGl2ZVZhbHVlVCwgZmFsc2U+KGEpOworICB9OworCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAw
MDAwMDAwMDAwMDAwMDApLCAyLjcxMDUwNTQzMTIxMzc2MTA4NWUtMjApOworICBFWFBFQ1RfRVEo
VG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAxKSwgNS40MjEwMTA4NjI0Mjc1MjIxNzAwNGUtMjAp
OworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAyKSwgMS4wODQyMDIxNzI0
ODU1MDQ0MzRlLTE5KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4ODAwMDAwMDAwMDAwMDAwMCks
IDAuNSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZGRkYpLCAwLjk5OTk5
OTk5OTk5OTk5OTg4ODk3OCk7Cit9CisKK1RFU1QoRGlzdHJpYnV0aW9uSW1wbFRlc3QsIFU2NFRv
RG91YmxlX1Bvc2l0aXZlX1plcm9fVGVzdCkgeworICBhdXRvIFRvRG91YmxlID0gW10odWludDY0
X3QgYSkgeworICAgIHJldHVybiBSYW5kVTY0VG9Eb3VibGU8UG9zaXRpdmVWYWx1ZVQsIHRydWU+
KGEpOworICB9OworCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDApLCAw
LjApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAxKSwgNS40MjEwMTA4
NjI0Mjc1MjIxNzAwNGUtMjApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAw
MDAwKSwgMC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGRiksIDAu
OTk5OTk5OTk5OTk5OTk5ODg4OTc4KTsKK30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwg
VTY0VG9Eb3VibGVfTmVnYXRpdmVfTm9aZXJvX1Rlc3QpIHsKKyAgYXV0byBUb0RvdWJsZSA9IFtd
KHVpbnQ2NF90IGEpIHsKKyAgICByZXR1cm4gUmFuZFU2NFRvRG91YmxlPE5lZ2F0aXZlVmFsdWVU
LCBmYWxzZT4oYSk7CisgIH07CisKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAw
MDAwMCksIC0yLjcxMDUwNTQzMTIxMzc2MTA4NWUtMjApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUo
MHgwMDAwMDAwMDAwMDAwMDAxKSwgLTUuNDIxMDEwODYyNDI3NTIyMTcwMDRlLTIwKTsKKyAgRVhQ
RUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMiksIC0xLjA4NDIwMjE3MjQ4NTUwNDQz
NGUtMTkpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAwKSwgLTAuNSk7
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZGRkYpLCAtMC45OTk5OTk5OTk5
OTk5OTk4ODg5NzgpOworfQorCitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRUb0RvdWJs
ZV9TaWduZWRfTm9aZXJvX1Rlc3QpIHsKKyAgYXV0byBUb0RvdWJsZSA9IFtdKHVpbnQ2NF90IGEp
IHsKKyAgICByZXR1cm4gUmFuZFU2NFRvRG91YmxlPFNpZ25lZFZhbHVlVCwgZmFsc2U+KGEpOwor
ICB9OworCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDApLCA1LjQyMTAx
MDg2MjQyNzUyMjE3MDA0ZS0yMCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAw
MDAwMDEpLCAxLjA4NDIwMjE3MjQ4NTUwNDQzNGUtMTkpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUo
MHg3RkZGRkZGRkZGRkZGRkZGKSwgMC45OTk5OTk5OTk5OTk5OTk4ODg5NzgpOworICBFWFBFQ1Rf
RVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAwKSwgLTUuNDIxMDEwODYyNDI3NTIyMTcwMDRl
LTIwKTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4ODAwMDAwMDAwMDAwMDAwMSksIC0xLjA4NDIw
MjE3MjQ4NTUwNDQzNGUtMTkpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZG
RkZGKSwgLTAuOTk5OTk5OTk5OTk5OTk5ODg4OTc4KTsKK30KKworVEVTVChEaXN0cmlidXRpb25J
bXBsVGVzdCwgVTY0VG9Eb3VibGVfU2lnbmVkX1plcm9fVGVzdCkgeworICBhdXRvIFRvRG91Ymxl
ID0gW10odWludDY0X3QgYSkgeworICAgIHJldHVybiBSYW5kVTY0VG9Eb3VibGU8U2lnbmVkVmFs
dWVULCB0cnVlPihhKTsKKyAgfTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAw
MDAwMCksIDApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAwMDAxKSwgMS4w
ODQyMDIxNzI0ODU1MDQ0MzRlLTE5KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4N0ZGRkZGRkZG
RkZGRkZGRiksIDAuOTk5OTk5OTk5OTk5OTk5ODg4OTc4KTsKKyAgRVhQRUNUX0VRKFRvRG91Ymxl
KDB4ODAwMDAwMDAwMDAwMDAwMCksIDApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAw
MDAwMDAwMDAxKSwgLTEuMDg0MjAyMTcyNDg1NTA0NDM0ZS0xOSk7CisgIEVYUEVDVF9FUShUb0Rv
dWJsZSgweEZGRkZGRkZGRkZGRkZGRkYpLCAtMC45OTk5OTk5OTk5OTk5OTk4ODg5NzgpOworfQor
CitURVNUKERpc3RyaWJ1dGlvbkltcGxUZXN0LCBVNjRUb0RvdWJsZV9TaWduZWRfQmlhc19UZXN0
KSB7CisgIGF1dG8gVG9Eb3VibGUgPSBbXSh1aW50NjRfdCBhKSB7CisgICAgcmV0dXJuIFJhbmRV
NjRUb0RvdWJsZTxTaWduZWRWYWx1ZVQsIHRydWUsIC0xPihhKTsKKyAgfTsKKyAgRVhQRUNUX0VR
KFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMCksIDApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUo
MHgwMDAwMDAwMDAwMDAwMDAxKSwgMS4wODQyMDIxNzI0ODU1MDQ0MzRlLTE5IC8gMik7CisgIEVY
UEVDVF9FUShUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkZGRkYpLCAwLjk5OTk5OTk5OTk5OTk5OTg4
ODk3OCAvIDIpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAwKSwgMCk7
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDgwMDAwMDAwMDAwMDAwMDEpLCAtMS4wODQyMDIxNzI0
ODU1MDQ0MzRlLTE5IC8gMik7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEZGRkZGRkZGRkZGRkZG
RkYpLCAtMC45OTk5OTk5OTk5OTk5OTk4ODg5NzggLyAyKTsKK30KKworVEVTVChEaXN0cmlidXRp
b25JbXBsVGVzdCwgVTY0VG9Eb3VibGVUZXN0KSB7CisgIGF1dG8gVG9Eb3VibGUgPSBbXSh1aW50
NjRfdCBhKSB7CisgICAgcmV0dXJuIFJhbmRVNjRUb0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgdHJ1
ZT4oYSk7CisgIH07CisKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MDAwMDAwMDAwMDAwMDAwMCks
IDAuMCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDApLCAwLjApOwor
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDAwMDAwMDAwMDAwMDAwMDEpLCA1LjQyMTAxMDg2MjQy
NzUyMjE3MDA0ZS0yMCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDdmZmZmZmZmZmZmZmZmZWYp
LCAwLjQ5OTk5OTk5OTk5OTk5OTk0NDQ4OSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDgwMDAw
MDAwMDAwMDAwMDApLCAwLjUpOworCisgIC8vIEZvciB2YWx1ZXMgPiAwLjUsIFJhbmRVNjRUb0Rv
dWJsZSBkaXNjYXJkcyB1cCB0byAxMSBiaXRzLiAoNjQtNTMpLgorICBFWFBFQ1RfRVEoVG9Eb3Vi
bGUoMHg4MDAwMDAwMDAwMDAwMDAxKSwgMC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4ODAw
MDAwMDAwMDAwMDdGRiksIDAuNSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEZGRkZGRkZGRkZG
RkZGRkYpLCAwLjk5OTk5OTk5OTk5OTk5OTg4ODk3OCk7CisgIEVYUEVDVF9ORShUb0RvdWJsZSgw
eDdGRkZGRkZGRkZGRkY4MDApLCBUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkY3RkYpKTsKKworICBF
WFBFQ1RfTFQoVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZGKSwgMS4wKTsKKyAgRVhQRUNUX0VR
KFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGRiksIFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRjgw
MCkpOworICBFWFBFQ1RfTkUoVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZGKSwgVG9Eb3VibGUo
MHhGRkZGRkZGRkZGRkZGN0ZGKSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDdGRkZGRkZGRkZG
RkZGRkYpLCBUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkZDMDApKTsKKyAgRVhQRUNUX05FKFRvRG91
YmxlKDB4N0ZGRkZGRkZGRkZGRkZGRiksIFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRkJGRikpOwor
ICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgzRkZGRkZGRkZGRkZGRkZGKSwgVG9Eb3VibGUoMHgzRkZG
RkZGRkZGRkZGRTAwKSk7CisgIEVYUEVDVF9ORShUb0RvdWJsZSgweDNGRkZGRkZGRkZGRkZGRkYp
LCBUb0RvdWJsZSgweDNGRkZGRkZGRkZGRkZERkYpKTsKKworICBFWFBFQ1RfRVEoVG9Eb3VibGUo
MHgxMDAwMDAwMDAwMDAwMDAxKSwgMC4wNjI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MjAw
MDAwMDAwMDAwMDAwMSksIDAuMTI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MzAwMDAwMDAw
MDAwMDAwMSksIDAuMTg3NSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDQwMDAwMDAwMDAwMDAw
MDEpLCAwLjI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4NTAwMDAwMDAwMDAwMDAwMSksIDAu
MzEyNSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDYwMDAwMDAwMDAwMDAwMDEpLCAwLjM3NSk7
CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDcwMDAwMDAwMDAwMDAwMDEpLCAwLjQzNzUpOworICBF
WFBFQ1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAxKSwgMC41KTsKKyAgRVhQRUNUX0VR
KFRvRG91YmxlKDB4OTAwMDAwMDAwMDAwMDAwMSksIDAuNTYyNSk7CisgIEVYUEVDVF9FUShUb0Rv
dWJsZSgweGEwMDAwMDAwMDAwMDAwMDEpLCAwLjYyNSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgw
eGIwMDAwMDAwMDAwMDAwMDEpLCAwLjY4NzUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhjMDAw
MDAwMDAwMDAwMDAxKSwgMC43NSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweGQwMDAwMDAwMDAw
MDAwMDEpLCAwLjgxMjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhlMDAwMDAwMDAwMDAwMDAx
KSwgMC44NzUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhmMDAwMDAwMDAwMDAwMDAxKSwgMC45
Mzc1KTsKKworICAvLyBMYXJnZSBwb3dlcnMgb2YgMi4KKyAgaW50NjRfdCB0d29fdG9fNTMgPSBp
bnQ2NF90ezF9IDw8IDUzOworICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50NjRfdD4oVG9Eb3Vi
bGUoMHhGRkZGRkZGRkZGRkZGRkZGKSAqIHR3b190b181MyksCisgICAgICAgICAgICB0d29fdG9f
NTMgLSAxKTsKKyAgRVhQRUNUX05FKHN0YXRpY19jYXN0PGludDY0X3Q+KFRvRG91YmxlKDB4RkZG
RkZGRkZGRkZGRkZGRikgKiB0d29fdG9fNTMgKiAyKSwKKyAgICAgICAgICAgIHR3b190b181MyAq
IDIgLSAxKTsKKworICAvLyBGb3IgdmFsdWVzIHdoZXJlIGV2ZXJ5IGJpdCBjb3VudHMsIHRoZSB2
YWx1ZXMgc2NhbGUgYXMgbXVsdGlwbGVzIG9mIHRoZQorICAvLyBpbnB1dC4KKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgIEVYUEVDVF9FUShpICogVG9Eb3VibGUoMHgwMDAw
MDAwMDAwMDAwMDAxKSwgVG9Eb3VibGUoaSkpOworICB9CisKKyAgLy8gRm9yIGVhY2ggaTogdmFs
dWUgZ2VuZXJhdGVkIGZyb20gKDEgPDwgaSkuCisgIGRvdWJsZSBleHBfdmFsdWVzWzY0XTsKKyAg
ZXhwX3ZhbHVlc1s2M10gPSAwLjU7CisgIGZvciAoaW50IGkgPSA2MjsgaSA+PSAwOyAtLWkpIGV4
cF92YWx1ZXNbaV0gPSAwLjUgKiBleHBfdmFsdWVzW2kgKyAxXTsKKyAgY29uc3RleHByIHVpbnQ2
NF90IG9uZSA9IDE7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7ICsraSkgeworICAgIEVYUEVD
VF9FUShUb0RvdWJsZShvbmUgPDwgaSksIGV4cF92YWx1ZXNbaV0pOworICAgIGZvciAoaW50IGog
PSAxOyBqIDwgREJMX01BTlRfRElHICYmIGkgLSBqID49IDA7ICsraikgeworICAgICAgRVhQRUNU
X05FKGV4cF92YWx1ZXNbaV0gKyBleHBfdmFsdWVzW2kgLSBqXSwgZXhwX3ZhbHVlc1tpXSk7Cisg
ICAgICBFWFBFQ1RfRVEoVG9Eb3VibGUoKG9uZSA8PCBpKSArIChvbmUgPDwgKGkgLSBqKSkpLAor
ICAgICAgICAgICAgICAgIGV4cF92YWx1ZXNbaV0gKyBleHBfdmFsdWVzW2kgLSBqXSk7CisgICAg
fQorICAgIGZvciAoaW50IGogPSBEQkxfTUFOVF9ESUc7IGkgLSBqID49IDA7ICsraikgeworICAg
ICAgRVhQRUNUX0VRKGV4cF92YWx1ZXNbaV0gKyBleHBfdmFsdWVzW2kgLSBqXSwgZXhwX3ZhbHVl
c1tpXSk7CisgICAgICBFWFBFQ1RfRVEoVG9Eb3VibGUoKG9uZSA8PCBpKSArIChvbmUgPDwgKGkg
LSBqKSkpLCBleHBfdmFsdWVzW2ldKTsKKyAgICB9CisgIH0KK30KKworVEVTVChEaXN0cmlidXRp
b25JbXBsVGVzdCwgVTY0VG9Eb3VibGVTaWduZWRUZXN0KSB7CisgIGF1dG8gVG9Eb3VibGUgPSBb
XSh1aW50NjRfdCBhKSB7CisgICAgcmV0dXJuIFJhbmRVNjRUb0RvdWJsZTxTaWduZWRWYWx1ZVQs
IGZhbHNlPihhKTsKKyAgfTsKKworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgwMDAwMDAwMDAwMDAw
MDAwKSwgNS40MjEwMTA4NjI0Mjc1MjIxNzAwNGUtMjApOworICBFWFBFQ1RfRVEoVG9Eb3VibGUo
MHgwMDAwMDAwMDAwMDAwMDAxKSwgMS4wODQyMDIxNzI0ODU1MDQ0MzRlLTE5KTsKKworICBFWFBF
Q1RfRVEoVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAwKSwgLTUuNDIxMDEwODYyNDI3NTIyMTcw
MDRlLTIwKTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4ODAwMDAwMDAwMDAwMDAwMSksIC0xLjA4
NDIwMjE3MjQ4NTUwNDQzNGUtMTkpOworCisgIGNvbnN0IGRvdWJsZSBlX3BsdXMgPSBUb0RvdWJs
ZSgweDAwMDAwMDAwMDAwMDAwMDEpOworICBjb25zdCBkb3VibGUgZV9taW51cyA9IFRvRG91Ymxl
KDB4ODAwMDAwMDAwMDAwMDAwMSk7CisgIEVYUEVDVF9FUShlX3BsdXMsIDEuMDg0MjAyMTcyNDg1
NTA0NDM0ZS0xOSk7CisgIEVYUEVDVF9FUShlX21pbnVzLCAtMS4wODQyMDIxNzI0ODU1MDQ0MzRl
LTE5KTsKKworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHgzZmZmZmZmZmZmZmZmZmVmKSwgMC40OTk5
OTk5OTk5OTk5OTk5NDQ0ODkpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhiZmZmZmZmZmZmZmZm
ZmVmKSwgLTAuNDk5OTk5OTk5OTk5OTk5OTQ0NDg5KTsKKworICAvLyBGb3IgdmFsdWVzID4gMC41
LCBSYW5kVTY0VG9Eb3VibGUgZGlzY2FyZHMgdXAgdG8gMTAgYml0cy4gKDYzLTUzKS4KKyAgRVhQ
RUNUX0VRKFRvRG91YmxlKDB4NDAwMDAwMDAwMDAwMDAwMCksIDAuNSk7CisgIEVYUEVDVF9FUShU
b0RvdWJsZSgweDQwMDAwMDAwMDAwMDAwMDEpLCAwLjUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUo
MHg0MDAwMDAwMDAwMDAwM0ZGKSwgMC41KTsKKworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHhDMDAw
MDAwMDAwMDAwMDAwKSwgLTAuNSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEMwMDAwMDAwMDAw
MDAwMDEpLCAtMC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4QzAwMDAwMDAwMDAwMDNGRiks
IC0wLjUpOworCisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkZGRmUpLCAwLjk5
OTk5OTk5OTk5OTk5OTg4ODk3OCk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweEZGRkZGRkZGRkZG
RkZGRmUpLCAtMC45OTk5OTk5OTk5OTk5OTk4ODg5NzgpOworCisgIEVYUEVDVF9ORShUb0RvdWJs
ZSgweDdGRkZGRkZGRkZGRkY4MDApLCBUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkY3RkYpKTsKKwor
ICBFWFBFQ1RfTFQoVG9Eb3VibGUoMHg3RkZGRkZGRkZGRkZGRkZGKSwgMS4wKTsKKyAgRVhQRUNU
X0dUKFRvRG91YmxlKDB4N0ZGRkZGRkZGRkZGRkZGRiksIDAuOTk5OTk5OTk5OSk7CisKKyAgRVhQ
RUNUX0dUKFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRkZGZSksIC0xLjApOworICBFWFBFQ1RfTFQo
VG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZlKSwgLTAuOTk5OTk5OTk5KTsKKworICBFWFBFQ1Rf
RVEoVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZlKSwgVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZG
QzAwKSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweDdGRkZGRkZGRkZGRkZGRkYpLCBUb0RvdWJs
ZSgweDdGRkZGRkZGRkZGRkZDMDApKTsKKyAgRVhQRUNUX05FKFRvRG91YmxlKDB4RkZGRkZGRkZG
RkZGRkZGZSksIFRvRG91YmxlKDB4RkZGRkZGRkZGRkZGRjNGRikpOworICBFWFBFQ1RfTkUoVG9E
b3VibGUoMHg3RkZGRkZGRkZGRkZGRkZGKSwgVG9Eb3VibGUoMHg3RkZGRkZGRkZGRkZGM0ZGKSk7
CisKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4MTAwMDAwMDAwMDAwMDAwMSksIDAuMTI1KTsKKyAg
RVhQRUNUX0VRKFRvRG91YmxlKDB4MjAwMDAwMDAwMDAwMDAwMSksIDAuMjUpOworICBFWFBFQ1Rf
RVEoVG9Eb3VibGUoMHgzMDAwMDAwMDAwMDAwMDAxKSwgMC4zNzUpOworICBFWFBFQ1RfRVEoVG9E
b3VibGUoMHg0MDAwMDAwMDAwMDAwMDAxKSwgMC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4
NTAwMDAwMDAwMDAwMDAwMSksIDAuNjI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4NjAwMDAw
MDAwMDAwMDAwMSksIDAuNzUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg3MDAwMDAwMDAwMDAw
MDAxKSwgMC44NzUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg3ODAwMDAwMDAwMDAwMDAxKSwg
MC45Mzc1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4N2MwMDAwMDAwMDAwMDAwMSksIDAuOTY4
NzUpOworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg3ZTAwMDAwMDAwMDAwMDAxKSwgMC45ODQzNzUp
OworICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg3ZjAwMDAwMDAwMDAwMDAxKSwgMC45OTIxODc1KTsK
KworICAvLyAweDgwMDAwMDAwMDAwMDAwMDAgfj0gMAorICBFWFBFQ1RfRVEoVG9Eb3VibGUoMHg5
MDAwMDAwMDAwMDAwMDAxKSwgLTAuMTI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4YTAwMDAw
MDAwMDAwMDAwMSksIC0wLjI1KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4YjAwMDAwMDAwMDAw
MDAwMSksIC0wLjM3NSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweGMwMDAwMDAwMDAwMDAwMDEp
LCAtMC41KTsKKyAgRVhQRUNUX0VRKFRvRG91YmxlKDB4ZDAwMDAwMDAwMDAwMDAwMSksIC0wLjYy
NSk7CisgIEVYUEVDVF9FUShUb0RvdWJsZSgweGUwMDAwMDAwMDAwMDAwMDEpLCAtMC43NSk7Cisg
IEVYUEVDVF9FUShUb0RvdWJsZSgweGYwMDAwMDAwMDAwMDAwMDEpLCAtMC44NzUpOworCisgIC8v
IExhcmdlIHBvd2VycyBvZiAyLgorICBpbnQ2NF90IHR3b190b181MyA9IGludDY0X3R7MX0gPDwg
NTM7CisgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ2NF90PihUb0RvdWJsZSgweDdGRkZGRkZG
RkZGRkZGRkYpICogdHdvX3RvXzUzKSwKKyAgICAgICAgICAgIHR3b190b181MyAtIDEpOworICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50NjRfdD4oVG9Eb3VibGUoMHhGRkZGRkZGRkZGRkZGRkZG
KSAqIHR3b190b181MyksCisgICAgICAgICAgICAtKHR3b190b181MyAtIDEpKTsKKworICBFWFBF
Q1RfTkUoc3RhdGljX2Nhc3Q8aW50NjRfdD4oVG9Eb3VibGUoMHg3RkZGRkZGRkZGRkZGRkZGKSAq
IHR3b190b181MyAqIDIpLAorICAgICAgICAgICAgdHdvX3RvXzUzICogMiAtIDEpOworCisgIC8v
IEZvciB2YWx1ZXMgd2hlcmUgZXZlcnkgYml0IGNvdW50cywgdGhlIHZhbHVlcyBzY2FsZSBhcyBt
dWx0aXBsZXMgb2YgdGhlCisgIC8vIGlucHV0LgorICBmb3IgKGludCBpID0gMTsgaSA8IDEwMDsg
KytpKSB7CisgICAgRVhQRUNUX0VRKGkgKiBlX3BsdXMsIFRvRG91YmxlKGkpKSA8PCBpOworICAg
IEVYUEVDVF9FUShpICogZV9taW51cywgVG9Eb3VibGUoMHg4MDAwMDAwMDAwMDAwMDAwIHwgaSkp
IDw8IGk7CisgIH0KK30KKworVEVTVChEaXN0cmlidXRpb25JbXBsVGVzdCwgRXhoYXVzdGl2ZUZs
b2F0KSB7CisgIHVzaW5nIGFic2w6OmJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQ7
CisgIGF1dG8gVG9GbG9hdCA9IFtdKHVpbnQ2NF90IGEpIHsKKyAgICByZXR1cm4gUmFuZFU2NFRv
RmxvYXQ8UG9zaXRpdmVWYWx1ZVQsIHRydWU+KGEpOworICB9OworCisgIC8vIFJlbHkgb24gUmFu
ZFU2NFRvRmxvYXQgZ2VuZXJhdGluZyB2YWx1ZXMgZnJvbSBncmVhdGVzdCB0byBsZWFzdCB3aGVu
CisgIC8vIHN1cHBsaWVkIHdpdGggdWludDY0X3QgdmFsdWVzIGZyb20gZ3JlYXRlc3QgKDB4ZmZm
Li4uKSB0byBsZWFzdCAoMHgwKS4gIFRodXMsCisgIC8vIHRoaXMgYWxnb3JpdGhtIHN0b3JlcyB0
aGUgcHJldmlvdXMgdmFsdWUsIGFuZCBpZiB0aGUgbmV3IHZhbHVlIGlzIGF0CisgIC8vIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgcHJldmlvdXMgdmFsdWUsIHRoZW4gdGhlcmUgaXMgYSBj
b2xsaXNpb24gaW4KKyAgLy8gdGhlIGdlbmVyYXRpb24gYWxnb3JpdGhtLgorICAvLworICAvLyBV
c2UgdGhlIGNvbXB1dGF0aW9uIGJlbG93IHRvIGNvbnZlcnQgdGhlIHJhbmRvbSB2YWx1ZSBpbnRv
IGEgcmVzdWx0OgorICAvLyAgIGRvdWJsZSByZXMgPSBhKCkgKiAoMS4wZiAtIHNhbXBsZSkgKyBi
KCkgKiBzYW1wbGU7CisgIGZsb2F0IGxhc3RfZiA9IDEuMCwgbGFzdF9nID0gMi4wOworICB1aW50
NjRfdCBmX2NvbGxpc2lvbnMgPSAwLCBnX2NvbGxpc2lvbnMgPSAwOworICB1aW50NjRfdCBmX3Vu
aXF1ZSA9IDAsIGdfdW5pcXVlID0gMDsKKyAgdWludDY0X3QgdG90YWwgPSAwOworICBhdXRvIGNv
dW50ID0gWyZdKGNvbnN0IGZsb2F0IHIpIHsKKyAgICB0b3RhbCsrOworICAgIC8vIGBmYCBpcyBt
YXBwZWQgdG8gdGhlIHJhbmdlIFswLCAxKSAoZGVmYXVsdCkKKyAgICBjb25zdCBmbG9hdCBmID0g
MC4wZiAqICgxLjBmIC0gcikgKyAxLjBmICogcjsKKyAgICBpZiAoZiA+PSBsYXN0X2YpIHsKKyAg
ICAgIGZfY29sbGlzaW9ucysrOworICAgIH0gZWxzZSB7CisgICAgICBmX3VuaXF1ZSsrOworICAg
ICAgbGFzdF9mID0gZjsKKyAgICB9CisgICAgLy8gYGdgIGlzIG1hcHBlZCB0byB0aGUgcmFuZ2Ug
WzEsIDIpCisgICAgY29uc3QgZmxvYXQgZyA9IDEuMGYgKiAoMS4wZiAtIHIpICsgMi4wZiAqIHI7
CisgICAgaWYgKGcgPj0gbGFzdF9nKSB7CisgICAgICBnX2NvbGxpc2lvbnMrKzsKKyAgICB9IGVs
c2UgeworICAgICAgZ191bmlxdWUrKzsKKyAgICAgIGxhc3RfZyA9IGc7CisgICAgfQorICB9Owor
CisgIHNpemVfdCBsaW1pdCA9IGFic2w6OkdldEZsYWcoRkxBR1NfYWJzbF9yYW5kb21fdGVzdF90
cmlhbHMpOworCisgIC8vIEdlbmVyYXRlIGFsbCB1aW50NjRfdCB3aGljaCBoYXZlIHVuaXF1ZSBm
bG9hdGluZyBwb2ludCB2YWx1ZXMuCisgIC8vIENvdW50aW5nIGRvd24gZnJvbSAweEZGRkZGRkZG
RkZGRkZGRkZ1IC4uLiAweDB1CisgIHVpbnQ2NF90IHggPSB+dWludDY0X3QoMCk7CisgIGZvciAo
OyB4ICE9IDAgJiYgbGltaXQgPiAwOykgeworICAgIGNvbnN0ZXhwciBpbnQga0RpZyA9ICg2NCAt
IEZMVF9NQU5UX0RJRyk7CisgICAgLy8gU2V0IGEgZGVjcmVtZW50IHZhbHVlICYgdGhlIG5leHQg
cG9pbnQgYXQgd2hpY2ggdG8gY2hhbmdlCisgICAgLy8gdGhlIGRlY3JlbWVudCB2YWx1ZS4gQnkg
ZGVmYXVsdCB0aGVzZSBhcmUgMSwgMC4KKyAgICB1aW50NjRfdCBkZWMgPSAxOworICAgIHVpbnQ2
NF90IGNoayA9IDA7CisKKyAgICAvLyBBZGp1c3QgZGVjcmVtZW50IGFuZCBjaGVjayB2YWx1ZSBi
YXNlZCBvbiBob3cgbWFueSBsZWFkaW5nIDAKKyAgICAvLyBiaXRzIGFyZSBzZXQgaW4gdGhlIGN1
cnJlbnQgdmFsdWUuCisgICAgY29uc3QgaW50IGNseiA9IENvdW50TGVhZGluZ1plcm9zNjQoeCk7
CisgICAgaWYgKGNseiA8IGtEaWcpIHsKKyAgICAgIGRlYyA8PD0gKGtEaWcgLSBjbHopOworICAg
ICAgY2hrID0gKH51aW50NjRfdCgwKSkgPj4gKGNseiArIDEpOworICAgIH0KKyAgICBmb3IgKDsg
eCA+IGNoayAmJiBsaW1pdCA+IDA7IHggLT0gZGVjKSB7CisgICAgICBjb3VudChUb0Zsb2F0KHgp
KTsKKyAgICAgIC0tbGltaXQ7CisgICAgfQorICB9CisKKyAgc3RhdGljX2Fzc2VydChGTFRfTUFO
VF9ESUcgPT0gMjQsCisgICAgICAgICAgICAgICAgIlRoZSBmbG9hdCB0eXBlIGlzIGV4cGVjdGVk
IHRvIGhhdmUgYSAyNCBiaXQgbWFudGlzc2EuIik7CisKKyAgaWYgKGxpbWl0ICE9IDApIHsKKyAg
ICAvLyBUaGVyZSBhcmUgYmV0d2VlbiAyXjI4IGFuZCAyXjI5IHVuaXF1ZSB2YWx1ZXMgaW4gdGhl
IHJhbmdlIFswLCAxKS4gIEZvcgorICAgIC8vIHRoZSBsb3cgdmFsdWVzIG9mIHgsIHRoZXJlIGFy
ZSAyXjI0IC0xIHVuaXF1ZSB2YWx1ZXMuICBPbmNlIHggPiAyXjI0LAorICAgIC8vIHRoZXJlIGFy
ZSA0MCAqIDJeMjQgdW5pcXVlIHZhbHVlcy4gVGh1czoKKyAgICAvLyAoMiArIDQgKyA4IC4uLiAr
IDJeMjMpICsgNDAgKiAyXjIzCisgICAgRVhQRUNUX0xUKDEgPDwgMjgsIGZfdW5pcXVlKTsKKyAg
ICBFWFBFQ1RfRVEoKDEgPDwgMjQpICsgNDAgKiAoMSA8PCAyMykgLSAxLCBmX3VuaXF1ZSk7Cisg
ICAgRVhQRUNUX0VRKHRvdGFsLCBmX3VuaXF1ZSk7CisgICAgRVhQRUNUX0VRKDAsIGZfY29sbGlz
aW9ucyk7CisKKyAgICAvLyBFeHBlY3QgYXQgbGVhc3QgMl4yMyB1bmlxdWUgdmFsdWVzIGZvciB0
aGUgcmFuZ2UgWzEsIDIpCisgICAgRVhQRUNUX0xFKDEgPDwgMjMsIGdfdW5pcXVlKTsKKyAgICBF
WFBFQ1RfRVEodG90YWwgLSBnX3VuaXF1ZSwgZ19jb2xsaXNpb25zKTsKKyAgfQorfQorCitURVNU
KERpc3RyaWJ1dGlvbkltcGxUZXN0LCBNdWx0aXBseVU2NFRvVTEyOFRlc3QpIHsKKyAgdXNpbmcg
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpNdWx0aXBseVU2NFRvVTEyODsKKyAgY29uc3RleHByIHVp
bnQ2NF90IGsxID0gMTsKKyAgY29uc3RleHByIHVpbnQ2NF90IGtNYXggPSB+c3RhdGljX2Nhc3Q8
dWludDY0X3Q+KDApOworCisgIEVYUEVDVF9FUShhYnNsOjp1aW50MTI4KDApLCBNdWx0aXBseVU2
NFRvVTEyOCgwLCAwKSk7CisKKyAgLy8gTWF4IHVpbnQ2NAorICBFWFBFQ1RfRVEoTXVsdGlwbHlV
NjRUb1UxMjgoa01heCwga01heCksCisgICAgICAgICAgICBhYnNsOjpNYWtlVWludDEyOCgweGZm
ZmZmZmZmZmZmZmZmZmUsIDB4MDAwMDAwMDAwMDAwMDAwMSkpOworICBFWFBFQ1RfRVEoYWJzbDo6
TWFrZVVpbnQxMjgoMCwga01heCksIE11bHRpcGx5VTY0VG9VMTI4KGtNYXgsIDEpKTsKKyAgRVhQ
RUNUX0VRKGFic2w6Ok1ha2VVaW50MTI4KDAsIGtNYXgpLCBNdWx0aXBseVU2NFRvVTEyOCgxLCBr
TWF4KSk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7ICsraSkgeworICAgIEVYUEVDVF9FUShh
YnNsOjpNYWtlVWludDEyOCgwLCBrTWF4KSA8PCBpLAorICAgICAgICAgICAgICBNdWx0aXBseVU2
NFRvVTEyOChrTWF4LCBrMSA8PCBpKSk7CisgICAgRVhQRUNUX0VRKGFic2w6Ok1ha2VVaW50MTI4
KDAsIGtNYXgpIDw8IGksCisgICAgICAgICAgICAgIE11bHRpcGx5VTY0VG9VMTI4KGsxIDw8IGks
IGtNYXgpKTsKKyAgfQorCisgIC8vIDEtYml0IHggMS1iaXQuCisgIGZvciAoaW50IGkgPSAwOyBp
IDwgNjQ7ICsraSkgeworICAgIGZvciAoaW50IGogPSAwOyBqIDwgNjQ7ICsraikgeworICAgICAg
RVhQRUNUX0VRKGFic2w6Ok1ha2VVaW50MTI4KDAsIDEpIDw8IChpICsgaiksCisgICAgICAgICAg
ICAgICAgTXVsdGlwbHlVNjRUb1UxMjgoazEgPDwgaSwgazEgPDwgaikpOworICAgICAgRVhQRUNU
X0VRKGFic2w6Ok1ha2VVaW50MTI4KDAsIDEpIDw8IChpICsgaiksCisgICAgICAgICAgICAgICAg
TXVsdGlwbHlVNjRUb1UxMjgoazEgPDwgaSwgazEgPDwgaikpOworICAgIH0KKyAgfQorCisgIC8v
IFZlcmlmaWVkIG11bHRpcGxpZXMKKyAgRVhQRUNUX0VRKE11bHRpcGx5VTY0VG9VMTI4KDB4ZmZm
ZmVlZWVkZGRkY2NjYywgMHhiYmJiYWFhYTk5OTk4ODg4KSwKKyAgICAgICAgICAgIGFic2w6Ok1h
a2VVaW50MTI4KDB4YmJiYjllMjY5MmM1ZGRkYywgMHhjMjhmNzUzMTA0OGQyYzYwKSk7CisgIEVY
UEVDVF9FUShNdWx0aXBseVU2NFRvVTEyOCgweDAxMjM0NTY3ODlhYmNkZWYsIDB4ZmVkY2JhOTg3
NjU0MzIxMCksCisgICAgICAgICAgICBhYnNsOjpNYWtlVWludDEyOCgweDAxMjFmYTAwYWQ3N2Q3
NDIsIDB4MjIzNmQ4OGZlNTYxOGNmMCkpOworICBFWFBFQ1RfRVEoTXVsdGlwbHlVNjRUb1UxMjgo
MHgwMTIzNDU2Nzg5YWJjZGVmLCAweGZkYjk3NTMxZWNhODY0MjApLAorICAgICAgICAgICAgYWJz
bDo6TWFrZVVpbnQxMjgoMHgwMTIwYWU5OWQyNjcyNWZjLCAweGNlMTk3ZjBlY2FjMzE5ZTApKTsK
KyAgRVhQRUNUX0VRKE11bHRpcGx5VTY0VG9VMTI4KDB4OTdhODdmNGYyNjFiYTNmMiwgMHhmZWRj
YmE5ODc2NTQzMjEwKSwKKyAgICAgICAgICAgIGFic2w6Ok1ha2VVaW50MTI4KDB4OTZmYmYxYThh
ZTc4ZDBiYSwgMHg1YTZkZDRiNzFmMjc4MzIwKSk7CisgIEVYUEVDVF9FUShNdWx0aXBseVU2NFRv
VTEyOCgweGZlZGNiYTk4NzY1NDMyMTAsIDB4ZmRiOTc1MzFlY2E4NjQyMCksCisgICAgICAgICAg
ICBhYnNsOjpNYWtlVWludDEyOCgweGZjOThjNjk4MWE0MTNlMjIsIDB4MzQyZDBiYmY0ODk0ODIw
MCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRl
cm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rp
c3RyaWJ1dGlvbl90ZXN0X3V0aWwuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVjOGQ1OTZlYmY4NTE1OWFmYjEx
M2Y3NDY0ZjkxYzM4ZDBkMTkwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRl
cm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsLmNjCkBAIC0wLDAgKzEsNDE2IEBACisvLyBDb3B5
cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9t
L2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaCIKKworI2luY2x1ZGUgPGNhc3NlcnQ+
CisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4K
KworI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUg
ImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgiCisKK25hbWVzcGFjZSBhYnNsIHsK
K25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworI2lmIGRlZmluZWQo
X19FTVNDUklQVEVOX18pCisvLyBXb3JrYXJvdW5kIF9fRU1TQ1JJUFRFTl9fIGVycm9yOiBsbHZt
X2ZtYV9mNjQgbm90IGZvdW5kLgoraW5saW5lIGRvdWJsZSBmbWEoZG91YmxlIHgsIGRvdWJsZSB5
LCBkb3VibGUgeikgeyByZXR1cm4gKHggKiB5KSArIHo7IH0KKyNlbmRpZgorCit9ICAvLyBuYW1l
c3BhY2UKKworRGlzdHJpYnV0aW9uTW9tZW50cyBDb21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cygK
KyAgICBhYnNsOjpTcGFuPGNvbnN0IGRvdWJsZT4gZGF0YV9wb2ludHMpIHsKKyAgRGlzdHJpYnV0
aW9uTW9tZW50cyByZXN1bHQ7CisKKyAgLy8gQ29tcHV0ZSBtMQorICBmb3IgKGRvdWJsZSB4IDog
ZGF0YV9wb2ludHMpIHsKKyAgICByZXN1bHQubisrOworICAgIHJlc3VsdC5tZWFuICs9IHg7Cisg
IH0KKyAgcmVzdWx0Lm1lYW4gLz0gc3RhdGljX2Nhc3Q8ZG91YmxlPihyZXN1bHQubik7CisKKyAg
Ly8gQ29tcHV0ZSBtMiwgbTMsIG00CisgIGZvciAoZG91YmxlIHggOiBkYXRhX3BvaW50cykgewor
ICAgIGRvdWJsZSB2ID0geCAtIHJlc3VsdC5tZWFuOworICAgIHJlc3VsdC52YXJpYW5jZSArPSB2
ICogdjsKKyAgICByZXN1bHQuc2tld25lc3MgKz0gdiAqIHYgKiB2OworICAgIHJlc3VsdC5rdXJ0
b3NpcyArPSB2ICogdiAqIHYgKiB2OworICB9CisgIHJlc3VsdC52YXJpYW5jZSAvPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KHJlc3VsdC5uIC0gMSk7CisKKyAgcmVzdWx0LnNrZXduZXNzIC89IHN0YXRp
Y19jYXN0PGRvdWJsZT4ocmVzdWx0Lm4pOworICByZXN1bHQuc2tld25lc3MgLz0gc3RkOjpwb3co
cmVzdWx0LnZhcmlhbmNlLCAxLjUpOworCisgIHJlc3VsdC5rdXJ0b3NpcyAvPSBzdGF0aWNfY2Fz
dDxkb3VibGU+KHJlc3VsdC5uKTsKKyAgcmVzdWx0Lmt1cnRvc2lzIC89IHN0ZDo6cG93KHJlc3Vs
dC52YXJpYW5jZSwgMi4wKTsKKyAgcmV0dXJuIHJlc3VsdDsKKworICAvLyBXaGVuIHZhbGlkYXRp
bmcgdGhlIG1pbi9tYXggY291bnQsIHRoZSBmb2xsb3dpbmcgY29uZmlkZW5jZSBpbnRlcnZhbHMg
bWF5CisgIC8vIGJlIG9mIHVzZToKKyAgLy8gMy4yOTEgKiBzdGRkZXYgPSA5OS45JSBDSQorICAv
LyAyLjU3NiAqIHN0ZGRldiA9IDk5JSBDSQorICAvLyAxLjk2ICogc3RkZGV2ICA9IDk1JSBDSQor
ICAvLyAxLjY1ICogc3RkZGV2ICA9IDkwJSBDSQorfQorCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9y
PDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgRGlzdHJpYnV0aW9uTW9tZW50cyYgbW9tZW50cykg
eworICByZXR1cm4gb3MgPDwgYWJzbDo6U3RyRm9ybWF0KCJtZWFuPSVmLCBzdGRkZXY9JWYsIHNr
ZXduZXNzPSVmLCBrdXJ0b3Npcz0lZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bW9tZW50cy5tZWFuLCBzdGQ6OnNxcnQobW9tZW50cy52YXJpYW5jZSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbW9tZW50cy5za2V3bmVzcywgbW9tZW50cy5rdXJ0b3Npcyk7Cit9
CisKK2RvdWJsZSBJbnZlcnNlTm9ybWFsU3Vydml2YWwoZG91YmxlIHgpIHsKKyAgLy8gaW52X3Nm
KHUpID0gLXNxcnQoMikgKiBlcmZpbnYoMnUtMSkKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUg
a1NxcnQyID0gMS40MTQyMTM1NjIzNzMwOTUwNDg4OworICByZXR1cm4gLWtTcXJ0MiAqIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6ZXJmaW52KDIgKiB4IC0gMS4wKTsKK30KKworYm9vbCBOZWFyKGFi
c2w6OnN0cmluZ192aWV3IG1zZywgZG91YmxlIGFjdHVhbCwgZG91YmxlIGV4cGVjdGVkLCBkb3Vi
bGUgYm91bmQpIHsKKyAgYXNzZXJ0KGJvdW5kID4gMC4wKTsKKyAgZG91YmxlIGRlbHRhID0gZmFi
cyhleHBlY3RlZCAtIGFjdHVhbCk7CisgIGlmIChkZWx0YSA8IGJvdW5kKSB7CisgICAgcmV0dXJu
IHRydWU7CisgIH0KKworICBzdGQ6OnN0cmluZyBmb3JtYXR0ZWQgPSBhYnNsOjpTdHJDYXQoCisg
ICAgICBtc2csICIgYWN0dWFsPSIsIGFjdHVhbCwgIiBleHBlY3RlZD0iLCBleHBlY3RlZCwgIiBl
cnI9IiwgZGVsdGEgLyBib3VuZCk7CisgIEFCU0xfUkFXX0xPRyhJTkZPLCAiJXMiLCBmb3JtYXR0
ZWQuY19zdHIoKSk7CisgIHJldHVybiBmYWxzZTsKK30KKworLy8gVE9ETyhhYnNsLXRlYW0pOiBS
ZXBsYWNlIHdpdGggYW4gIkFCU0xfSEFWRV9TUEVDSUFMX01BVEgiIGFuZCB0cnkKKy8vIHRvIHVz
ZSBzdGQ6OmJldGEoKS4gIEFzIG9mIHRoaXMgd3JpdGluZyBQMDIyNlIxIGlzIG5vdCBpbXBsZW1l
bnRlZAorLy8gaW4gbGliYysrOiBodHRwOi8vbGliY3h4Lmxsdm0ub3JnL2N4eDF6X3N0YXR1cy5o
dG1sCitkb3VibGUgYmV0YShkb3VibGUgcCwgZG91YmxlIHEpIHsKKyAgLy8gQmV0YSh4LCB5KSA9
IEdhbW1hKHgpICogR2FtbWEoeSkgLyBHYW1tYSh4K3kpCisgIGRvdWJsZSBsYmV0YSA9IHN0ZDo6
bGdhbW1hKHApICsgc3RkOjpsZ2FtbWEocSkgLSBzdGQ6OmxnYW1tYShwICsgcSk7CisgIHJldHVy
biBzdGQ6OmV4cChsYmV0YSk7Cit9CisKKy8vIEFwcHJveGltYXRpb24gdG8gaW52ZXJzZSBvZiB0
aGUgRXJyb3IgRnVuY3Rpb24gaW4gZG91YmxlIHByZWNpc2lvbi4KKy8vIChodHRwOi8vcGVvcGxl
Lm1hdGhzLm94LmFjLnVrL2dpbGVzbS9maWxlcy9nZW1zX2VyZmludi5wZGYpCitkb3VibGUgZXJm
aW52KGRvdWJsZSB4KSB7CisjaWYgIWRlZmluZWQoX19FTVNDUklQVEVOX18pCisgIHVzaW5nIHN0
ZDo6Zm1hOworI2VuZGlmCisKKyAgZG91YmxlIHcgPSAwLjA7CisgIGRvdWJsZSBwID0gMC4wOwor
ICB3ID0gLXN0ZDo6bG9nKCgxLjAgLSB4KSAqICgxLjAgKyB4KSk7CisgIGlmICh3IDwgNi4yNTAw
MDApIHsKKyAgICB3ID0gdyAtIDMuMTI1MDAwOworICAgIHAgPSAtMy42NDQ0MTIwNjQwMTc4MTk2
OTk2ZS0yMTsKKyAgICBwID0gZm1hKHAsIHcsIC0xLjY4NTA1OTEzODE4MjAxNjU4OWUtMTkpOwor
ICAgIHAgPSBmbWEocCwgdywgMS4yODU4NDgwNzE1MjU2NDAwMTY3ZS0xOCk7CisgICAgcCA9IGZt
YShwLCB3LCAxLjExNTc4Nzc2NzgwMjUxODA5NmUtMTcpOworICAgIHAgPSBmbWEocCwgdywgLTEu
MzMzMTcxNjYyODU0NjIwOTA2ZS0xNik7CisgICAgcCA9IGZtYShwLCB3LCAyLjA5NzI3Njc4NzU5
Njg1NjE2MzdlLTE3KTsKKyAgICBwID0gZm1hKHAsIHcsIDYuNjM3NjM4MTM0MzU4MzIzODMyNWUt
MTUpOworICAgIHAgPSBmbWEocCwgdywgLTQuMDU0NTY2MjcyOTc1MjA2ODYzOWUtMTQpOworICAg
IHAgPSBmbWEocCwgdywgLTguMTUxOTM0MTk3NjA1NDcyMTUyMmUtMTQpOworICAgIHAgPSBmbWEo
cCwgdywgMi42MzM1MDkzMTUzMDgyMzIyOTc3ZS0xMik7CisgICAgcCA9IGZtYShwLCB3LCAtMS4y
OTc1MTMzMjUzNDUzNTMyNDk4ZS0xMSk7CisgICAgcCA9IGZtYShwLCB3LCAtNS40MTU0MTIwNTQy
OTQ2Mjc5MzE3ZS0xMSk7CisgICAgcCA9IGZtYShwLCB3LCAxLjA1MTIxMjI3MzMyMTUzMjI4NWUt
MDkpOworICAgIHAgPSBmbWEocCwgdywgLTQuMTEyNjMzOTgwMzQ2OTgzNjk3NmUtMDkpOworICAg
IHAgPSBmbWEocCwgdywgLTIuOTA3MDM2OTk1Nzg4MjAwNTA4NmUtMDgpOworICAgIHAgPSBmbWEo
cCwgdywgNC4yMzQ3ODc3ODI3OTMyNDAzNTE4ZS0wNyk7CisgICAgcCA9IGZtYShwLCB3LCAtMS4z
NjU0NjkyMDAwODM0Njc4NjQ1ZS0wNik7CisgICAgcCA9IGZtYShwLCB3LCAtMS4zODgyNTIzMzYy
Nzg2NDY4NzE5ZS0wNSk7CisgICAgcCA9IGZtYShwLCB3LCAwLjAwMDE4NjczNDIwODAzNDA1NzEz
NTIpOworICAgIHAgPSBmbWEocCwgdywgLTAuMDAwNzQwNzAyNTM0MTY2MjY2OTc1MTIpOworICAg
IHAgPSBmbWEocCwgdywgLTAuMDA2MDMzNjcwODcxNDMwMTQ5MDUzMyk7CisgICAgcCA9IGZtYShw
LCB3LCAwLjI0MDE1ODE4MjQyNTU4OTYxNjkzKTsKKyAgICBwID0gZm1hKHAsIHcsIDEuNjUzNjU0
NTYyNjgzMTAyNzM1Nik7CisgIH0gZWxzZSBpZiAodyA8IDE2LjAwMDAwMCkgeworICAgIHcgPSBz
dGQ6OnNxcnQodykgLSAzLjI1MDAwMDsKKyAgICBwID0gMi4yMTM3Mzc2OTIxNzc1Nzg3MDQ5ZS0w
OTsKKyAgICBwID0gZm1hKHAsIHcsIDkuMDc1NjU2MTkzODg4NTM5MDk3OWUtMDgpOworICAgIHAg
PSBmbWEocCwgdywgLTIuNzUxNzQwNjI5NzA2NDU0NTQyOGUtMDcpOworICAgIHAgPSBmbWEocCwg
dywgMS44MjM5NjI5MjE0Mzg5MjI3NzU1ZS0wOCk7CisgICAgcCA9IGZtYShwLCB3LCAxLjUwMjc0
MDM5Njg5MDk4Mjc2MjdlLTA2KTsKKyAgICBwID0gZm1hKHAsIHcsIC00LjAxMzg2NzUyNjk4MTU0
NTk2OWUtMDYpOworICAgIHAgPSBmbWEocCwgdywgMi45MjM0NDQ5MDg5OTU1NDQ2MDQ0ZS0wNik7
CisgICAgcCA9IGZtYShwLCB3LCAxLjI0NzUzMDQ0ODE2NzE3Nzg3MjNlLTA1KTsKKyAgICBwID0g
Zm1hKHAsIHcsIC00LjczMTgyMjkwMDkwNTU3MzM5ODFlLTA1KTsKKyAgICBwID0gZm1hKHAsIHcs
IDYuODI4NDg1MTQ1OTU3MzE3NTQ0OGUtMDUpOworICAgIHAgPSBmbWEocCwgdywgMi40MDMxMTEw
Mzg3MDk3ODkzOTk5ZS0wNSk7CisgICAgcCA9IGZtYShwLCB3LCAtMC4wMDAzNTUwMzc1MjAzNjI4
NDc0Nzk2KTsKKyAgICBwID0gZm1hKHAsIHcsIDAuMDAwOTUzMjg5Mzc5NzM3MzgwNDk3MDMpOwor
ICAgIHAgPSBmbWEocCwgdywgLTAuMDAxNjg4Mjc1NTU2MDIzNTA0NzMxMyk7CisgICAgcCA9IGZt
YShwLCB3LCAwLjAwMjQ5MTQ0MjA5NjEwNzg1MDgwNjYpOworICAgIHAgPSBmbWEocCwgdywgLTAu
MDAzNzUxMjA4NTA3NTY5MjQxMjEwNyk7CisgICAgcCA9IGZtYShwLCB3LCAwLjAwNTM3MDkxNDU1
MzU5MDA2MzYxNyk7CisgICAgcCA9IGZtYShwLCB3LCAxLjAwNTI1ODk2NzY5NDE1OTIzMzQpOwor
ICAgIHAgPSBmbWEocCwgdywgMy4wODM4ODU2MTA0OTIyMjA3NjM1KTsKKyAgfSBlbHNlIHsKKyAg
ICB3ID0gc3RkOjpzcXJ0KHcpIC0gNS4wMDAwMDA7CisgICAgcCA9IC0yLjcxMDk5MjA2MTY0Mzg1
NzMyNDNlLTExOworICAgIHAgPSBmbWEocCwgdywgLTIuNTU1NjQxODE2OTk2NTI1MjA1NWUtMTAp
OworICAgIHAgPSBmbWEocCwgdywgMS41MDc2NTcyNjkzNTAwNTQ4MDgzZS0wOSk7CisgICAgcCA9
IGZtYShwLCB3LCAtMy43ODk0NjU0NDAxMjY3MzY5OTM3ZS0wOSk7CisgICAgcCA9IGZtYShwLCB3
LCA3LjYxNTcwMTIwODA3ODMzOTM4MDRlLTA5KTsKKyAgICBwID0gZm1hKHAsIHcsIC0xLjQ5NjAw
MjY2MjcxNDkyNDA0NzhlLTA4KTsKKyAgICBwID0gZm1hKHAsIHcsIDIuOTE0Nzk1MzQ1MDkwMTA4
MDgyNmUtMDgpOworICAgIHAgPSBmbWEocCwgdywgLTYuNzcxMTk5Nzc1ODQ1MjMzOTQ5OGUtMDgp
OworICAgIHAgPSBmbWEocCwgdywgMi4yOTAwNDgyMjI4MDI2NjU0NzE3ZS0wNyk7CisgICAgcCA9
IGZtYShwLCB3LCAtOS45Mjk4MjcyOTQyMzE3MDAyNTM5ZS0wNyk7CisgICAgcCA9IGZtYShwLCB3
LCA0LjUyNjA2MjU5NzIyMzE1MzcwMzllLTA2KTsKKyAgICBwID0gZm1hKHAsIHcsIC0xLjk2ODE3
NzgxMDU1MzE2NzA1NjdlLTA1KTsKKyAgICBwID0gZm1hKHAsIHcsIDcuNTk5NTI3NzAzMDAxNzc2
MTEzOWUtMDUpOworICAgIHAgPSBmbWEocCwgdywgLTAuMDAwMjE1MDMwMTE5MzAwNDQ0NzczNDcp
OworICAgIHAgPSBmbWEocCwgdywgLTAuMDAwMTM4NzE5MzE4MzM2MjMxMjIwMjYpOworICAgIHAg
PSBmbWEocCwgdywgMS4wMTAzMDA0NjQ4NjQ1MzQzOTc3KTsKKyAgICBwID0gZm1hKHAsIHcsIDQu
ODQ5OTA2NDAxNDA4NTg0NDIyMSk7CisgIH0KKyAgcmV0dXJuIHAgKiB4OworfQorCituYW1lc3Bh
Y2UgeworCisvLyBEaXJlY3QgaW1wbGVtZW50YXRpb24gb2YgQVM2MywgQkVUQUlOKCkKKy8vIGh0
dHBzOi8vd3d3LmpzdG9yLm9yZy9zdGFibGUvMjM0Njc5Nz9zZXE9MyNwYWdlX3NjYW5fdGFiX2Nv
bnRlbnRzLgorLy8KKy8vIEJFVEFJTih4LCBwLCBxLCBiZXRhKQorLy8gIHg6ICAgICB0aGUgdmFs
dWUgb2YgdGhlIHVwcGVyIGxpbWl0IHguCisvLyAgcDogICAgIHRoZSB2YWx1ZSBvZiB0aGUgcGFy
YW1ldGVyIHAuCisvLyAgcTogICAgIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyIHEuCisvLyAg
YmV0YTogIHRoZSB2YWx1ZSBvZiBsbiBCKHAsIHEpCisvLworZG91YmxlIEJldGFJbmNvbXBsZXRl
SW1wbChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHAsIGNvbnN0IGRvdWJsZSBxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgYmV0YSkgeworICBpZiAocCA8IChw
ICsgcSkgKiB4KSB7CisgICAgLy8gSW5jb21wbGV0ZSBiZXRhIGZ1bmN0aW9uIGlzIHN5bW1ldHJp
Y2FsLCBzbyByZXR1cm4gdGhlIGNvbXBsZW1lbnQuCisgICAgcmV0dXJuIDEuIC0gQmV0YUluY29t
cGxldGVJbXBsKDEuMCAtIHgsIHEsIHAsIGJldGEpOworICB9CisKKyAgZG91YmxlIHBzcSA9IHAg
KyBxOworICBjb25zdCBkb3VibGUga0VyciA9IDFlLTE0OworICBjb25zdCBkb3VibGUgeGMgPSAx
LiAtIHg7CisgIGNvbnN0IGRvdWJsZSBwcmUgPQorICAgICAgc3RkOjpleHAocCAqIHN0ZDo6bG9n
KHgpICsgKHEgLSAxLikgKiBzdGQ6OmxvZyh4YykgLSBiZXRhKSAvIHA7CisKKyAgZG91YmxlIHRl
cm0gPSAxLjsKKyAgZG91YmxlIGFpID0gMS47CisgIGRvdWJsZSByZXN1bHQgPSAxLjsKKyAgaW50
IG5zID0gc3RhdGljX2Nhc3Q8aW50PihxICsgeGMgKiBwc3EpOworCisgIC8vIFVzZSB0aGUgc29w
ZXIgcmVkdWN0aW9uIGZvcnVtbGEuCisgIGRvdWJsZSByeCA9IChucyA9PSAwKSA/IHggOiB4IC8g
eGM7CisgIGRvdWJsZSB0ZW1wID0gcSAtIGFpOworICBmb3IgKDs7KSB7CisgICAgdGVybSA9IHRl
cm0gKiB0ZW1wICogcnggLyAocCArIGFpKTsKKyAgICByZXN1bHQgPSByZXN1bHQgKyB0ZXJtOwor
ICAgIHRlbXAgPSBzdGQ6OmZhYnModGVybSk7CisgICAgaWYgKHRlbXAgPCBrRXJyICYmIHRlbXAg
PCBrRXJyICogcmVzdWx0KSB7CisgICAgICByZXR1cm4gcmVzdWx0ICogcHJlOworICAgIH0KKyAg
ICBhaSA9IGFpICsgMS47CisgICAgLS1uczsKKyAgICBpZiAobnMgPj0gMCkgeworICAgICAgdGVt
cCA9IHEgLSBhaTsKKyAgICAgIGlmIChucyA9PSAwKSB7CisgICAgICAgIHJ4ID0geDsKKyAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgdGVtcCA9IHBzcTsKKyAgICAgIHBzcSA9IHBzcSArIDEu
OworICAgIH0KKyAgfQorCisgIC8vIE5PVEU6IFNlZSBhbHNvIFRPTVMgQWxvZ3JpdGhtIDcwOC4K
KyAgLy8gaHR0cDovL3d3dy5uZXRsaWIub3JnL3RvbXMvaW5kZXguaHRtbAorICAvLworICAvLyBO
T1RFOiBUaGUgTldTQyBsaWJyYXJ5IGFsc28gaW5jbHVkZXMgQlJBVElPIC8gSVNVQlggKHA4NykK
KyAgLy8gaHR0cHM6Ly9hcmNoaXZlLm9yZy9kZXRhaWxzL0RUSUNfQURBMjYxNTExL3BhZ2Uvbjc1
Cit9CisKKy8vIERpcmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBBUzEwOSwgWElOQlRBKHAsIHEsIGJl
dGEsIGFscGhhKQorLy8gaHR0cHM6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS8yMzQ2Nzk4P3JlYWQt
bm93PTEmc2VxPTQjcGFnZV9zY2FuX3RhYl9jb250ZW50cworLy8gaHR0cHM6Ly93d3cuanN0b3Iu
b3JnL3N0YWJsZS8yMzQ2ODg3P3NlcT0xI3BhZ2Vfc2Nhbl90YWJfY29udGVudHMKKy8vCisvLyBY
SU5CVEEocCwgcSwgYmV0YSwgYWxocGEpCisvLyAgcDogICAgIHRoZSB2YWx1ZSBvZiB0aGUgcGFy
YW1ldGVyIHAuCisvLyAgcTogICAgIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyIHEuCisvLyAg
YmV0YTogIHRoZSB2YWx1ZSBvZiBsbiBCKHAsIHEpCisvLyAgYWxwaGE6IHRoZSB2YWx1ZSBvZiB0
aGUgbG93ZXIgdGFpbCBhcmVhLgorLy8KK2RvdWJsZSBCZXRhSW5jb21wbGV0ZUludkltcGwoY29u
c3QgZG91YmxlIHAsIGNvbnN0IGRvdWJsZSBxLCBjb25zdCBkb3VibGUgYmV0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIGFscGhhKSB7CisgIGlmIChhbHBoYSA8
IDAuNSkgeworICAgIC8vIEludmVyc2UgSW5jb21wbGV0ZSBiZXRhIGZ1bmN0aW9uIGlzIHN5bW1l
dHJpY2FsLCByZXR1cm4gdGhlIGNvbXBsZW1lbnQuCisgICAgcmV0dXJuIDEuIC0gQmV0YUluY29t
cGxldGVJbnZJbXBsKHEsIHAsIGJldGEsIDEuIC0gYWxwaGEpOworICB9CisgIGNvbnN0IGRvdWJs
ZSBrRXJyID0gMWUtMTQ7CisgIGRvdWJsZSB2YWx1ZSA9IGtFcnI7CisKKyAgLy8gQ29tcHV0ZSB0
aGUgaW5pdGlhbCBlc3RpbWF0ZS4KKyAgeworICAgIGRvdWJsZSByID0gc3RkOjpzcXJ0KC1zdGQ6
OmxvZyhhbHBoYSAqIGFscGhhKSk7CisgICAgZG91YmxlIHkgPQorICAgICAgICByIC0gZm1hKHIs
IDAuMjcwNjEsIDIuMzA3NTMpIC8gZm1hKHIsIGZtYShyLCAwLjA0NDgxLCAwLjk5MjI5KSwgMS4w
KTsKKyAgICBpZiAocCA+IDEuICYmIHEgPiAxLikgeworICAgICAgciA9ICh5ICogeSAtIDMuKSAv
IDYuOworICAgICAgZG91YmxlIHMgPSAxLiAvIChwICsgcCAtIDEuKTsKKyAgICAgIGRvdWJsZSB0
ID0gMS4gLyAocSArIHEgLSAxLik7CisgICAgICBkb3VibGUgaCA9IDIuIC8gcyArIHQ7CisgICAg
ICBkb3VibGUgdyA9CisgICAgICAgICAgeSAqIHN0ZDo6c3FydChoICsgcikgLyBoIC0gKHQgLSBz
KSAqIChyICsgNS4gLyA2LiAtIHQgLyAoMy4gKiBoKSk7CisgICAgICB2YWx1ZSA9IHAgLyAocCAr
IHEgKiBzdGQ6OmV4cCh3ICsgdykpOworICAgIH0gZWxzZSB7CisgICAgICByID0gcSArIHE7Cisg
ICAgICBkb3VibGUgdCA9IDEuMCAvICg5LiAqIHEpOworICAgICAgZG91YmxlIHUgPSAxLjAgLSB0
ICsgeSAqIHN0ZDo6c3FydCh0KTsKKyAgICAgIHQgPSByICogKHUgKiB1ICogdSk7CisgICAgICBp
ZiAodCA8PSAwKSB7CisgICAgICAgIHZhbHVlID0gMS4wIC0gc3RkOjpleHAoKHN0ZDo6bG9nKCgx
LjAgLSBhbHBoYSkgKiBxKSArIGJldGEpIC8gcSk7CisgICAgICB9IGVsc2UgeworICAgICAgICB0
ID0gKDQuMCAqIHAgKyByIC0gMi4wKSAvIHQ7CisgICAgICAgIGlmICh0IDw9IDEpIHsKKyAgICAg
ICAgICB2YWx1ZSA9IHN0ZDo6ZXhwKChzdGQ6OmxvZyhhbHBoYSAqIHApICsgYmV0YSkgLyBwKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB2YWx1ZSA9IDEuMCAtIDIuMCAvICh0ICsgMS4w
KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIC8vIFNvbHZlIGZvciB4IHVz
aW5nIGEgbW9kaWZpZWQgbmV3dG9uLXJhcGhzb24gbWV0aG9kIHVzaW5nIHRoZSBmdW5jdGlvbgor
ICAvLyBCZXRhSW5jb21wbGV0ZS4KKyAgeworICAgIHZhbHVlID0gc3RkOjptYXgodmFsdWUsIGtF
cnIpOworICAgIHZhbHVlID0gc3RkOjptaW4odmFsdWUsIDEuMCAtIGtFcnIpOworCisgICAgY29u
c3QgZG91YmxlIHIgPSAxLjAgLSBwOworICAgIGNvbnN0IGRvdWJsZSB0ID0gMS4wIC0gcTsKKyAg
ICBkb3VibGUgeTsKKyAgICBkb3VibGUgeXByZXYgPSAwOworICAgIGRvdWJsZSBzcSA9IDE7Cisg
ICAgZG91YmxlIHByZXYgPSAxOworICAgIGZvciAoOzspIHsKKyAgICAgIGlmICh2YWx1ZSA8IDAg
fHwgdmFsdWUgPiAxLjApIHsKKyAgICAgICAgLy8gRXJyb3IgY2FzZTsgdmFsdWUgd2VudCBpbmZp
bml0ZS4KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKTsKKyAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gMCB8fCB2YWx1ZSA9PSAxKSB7CisgICAg
ICAgIHkgPSB2YWx1ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHkgPSBCZXRhSW5jb21wbGV0
ZUltcGwodmFsdWUsIHAsIHEsIGJldGEpOworICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoeSkp
IHsKKyAgICAgICAgICByZXR1cm4geTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgeSA9ICh5
IC0gYWxwaGEpICoKKyAgICAgICAgICBzdGQ6OmV4cChiZXRhICsgciAqIHN0ZDo6bG9nKHZhbHVl
KSArIHQgKiBzdGQ6OmxvZygxLjAgLSB2YWx1ZSkpOworICAgICAgaWYgKHkgKiB5cHJldiA8PSAw
KSB7CisgICAgICAgIHByZXYgPSBzdGQ6Om1heChzcSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptaW4oKSk7CisgICAgICB9CisgICAgICBkb3VibGUgZyA9IDEuMDsKKyAgICAgIGZvciAo
OzspIHsKKyAgICAgICAgY29uc3QgZG91YmxlIGFkaiA9IGcgKiB5OworICAgICAgICBjb25zdCBk
b3VibGUgYWRqX3NxID0gYWRqICogYWRqOworICAgICAgICBpZiAoYWRqX3NxID49IHByZXYpIHsK
KyAgICAgICAgICBnID0gZyAvIDMuMDsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBjb25zdCBkb3VibGUgdHggPSB2YWx1ZSAtIGFkajsKKyAgICAgICAgaWYgKHR4IDwg
MCB8fCB0eCA+IDEpIHsKKyAgICAgICAgICBnID0gZyAvIDMuMDsKKyAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJldiA8IGtFcnIpIHsKKyAgICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHkgKiB5IDwga0VycikgeworICAgICAg
ICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHggPT0gdmFsdWUpIHsK
KyAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR4ID09IDAg
fHwgdHggPT0gMSkgeworICAgICAgICAgIGcgPSBnIC8gMy4wOworICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIHZhbHVlID0gdHg7CisgICAgICAgIHlwcmV2ID0geTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisKKyAgLy8gTk9URVM6IFNlZSBhbHNv
OiBBc3ltcHRvdGljIGludmVyc2lvbiBvZiB0aGUgaW5jb21wbGV0ZSBiZXRhIGZ1bmN0aW9uLgor
ICAvLyBodHRwczovL2NvcmUuYWMudWsvZG93bmxvYWQvcGRmLzgyMTQwNzIzLnBkZgorICAvLwor
ICAvLyBOT1RFOiBTZWUgdGhlIEJvb3N0IGxpYnJhcnkgZG9jdW1lbnRhdGlvbiBhcyB3ZWxsOgor
ICAvLyBodHRwczovL3d3dy5ib29zdC5vcmcvZG9jL2xpYnMvMV81Ml8wL2xpYnMvbWF0aC9kb2Mv
c2ZfYW5kX2Rpc3QvaHRtbC9tYXRoX3Rvb2xraXQvc3BlY2lhbC9zZl9iZXRhL2liZXRhX2Z1bmN0
aW9uLmh0bWwKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2RvdWJsZSBCZXRhSW5jb21wbGV0ZShj
b25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHAsIGNvbnN0IGRvdWJsZSBxKSB7CisgIC8vIEVy
cm9yIGNhc2VzLgorICBpZiAocCA8IDAgfHwgcSA8IDAgfHwgeCA8IDAgfHwgeCA+IDEuMCkgewor
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgIH0K
KyAgaWYgKHggPT0gMCB8fCB4ID09IDEpIHsKKyAgICByZXR1cm4geDsKKyAgfQorICAvLyBsbihC
ZXRhKHAsIHEpKQorICBkb3VibGUgYmV0YSA9IHN0ZDo6bGdhbW1hKHApICsgc3RkOjpsZ2FtbWEo
cSkgLSBzdGQ6OmxnYW1tYShwICsgcSk7CisgIHJldHVybiBCZXRhSW5jb21wbGV0ZUltcGwoeCwg
cCwgcSwgYmV0YSk7Cit9CisKK2RvdWJsZSBCZXRhSW5jb21wbGV0ZUludihjb25zdCBkb3VibGUg
cCwgY29uc3QgZG91YmxlIHEsIGNvbnN0IGRvdWJsZSBhbHBoYSkgeworICAvLyBFcnJvciBjYXNl
cy4KKyAgaWYgKHAgPCAwIHx8IHEgPCAwIHx8IGFscGhhIDwgMCB8fCBhbHBoYSA+IDEuMCkgewor
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgIH0K
KyAgaWYgKGFscGhhID09IDAgfHwgYWxwaGEgPT0gMSkgeworICAgIHJldHVybiBhbHBoYTsKKyAg
fQorICAvLyBsbihCZXRhKHAsIHEpKQorICBkb3VibGUgYmV0YSA9IHN0ZDo6bGdhbW1hKHApICsg
c3RkOjpsZ2FtbWEocSkgLSBzdGQ6OmxnYW1tYShwICsgcSk7CisgIHJldHVybiBCZXRhSW5jb21w
bGV0ZUludkltcGwocCwgcSwgYmV0YSwgYWxwaGEpOworfQorCisvLyBHaXZlbiBgbnVtX3RyaWFs
c2AgdHJpYWxzIGVhY2ggd2l0aCBwcm9iYWJpbGl0eSBgcGAgb2Ygc3VjY2VzcywgdGhlCisvLyBw
cm9iYWJpbGl0eSBvZiBubyBmYWlsdXJlcyBpcyBgcF5rYC4gVG8gZW5zdXJlIHRoZSBwcm9iYWJp
bGl0eSBvZiBhIGZhaWx1cmUKKy8vIGlzIG5vIG1vcmUgdGhhbiBgcF9mYWlsYCwgaXQgbXVzdCBi
ZSB0aGF0IGBwXmsgPT0gMSAtIHBfZmFpbGAuIFRoaXMgZnVuY3Rpb24KKy8vIGNvbXB1dGVzIGBw
YCBmcm9tIHRoYXQgZXF1YXRpb24uCitkb3VibGUgUmVxdWlyZWRTdWNjZXNzUHJvYmFiaWxpdHko
Y29uc3QgZG91YmxlIHBfZmFpbCwgY29uc3QgaW50IG51bV90cmlhbHMpIHsKKyAgZG91YmxlIHAg
PSBzdGQ6OmV4cChzdGQ6OmxvZygxLjAgLSBwX2ZhaWwpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihu
dW1fdHJpYWxzKSk7CisgIEFCU0xfQVNTRVJUKHAgPiAwKTsKKyAgcmV0dXJuIHA7Cit9CisKK2Rv
dWJsZSBaU2NvcmUoZG91YmxlIGV4cGVjdGVkX21lYW4sIGNvbnN0IERpc3RyaWJ1dGlvbk1vbWVu
dHMmIG1vbWVudHMpIHsKKyAgcmV0dXJuIChtb21lbnRzLm1lYW4gLSBleHBlY3RlZF9tZWFuKSAv
CisgICAgICAgICAoc3RkOjpzcXJ0KG1vbWVudHMudmFyaWFuY2UpIC8KKyAgICAgICAgICBzdGQ6
OnNxcnQoc3RhdGljX2Nhc3Q8ZG91YmxlPihtb21lbnRzLm4pKSk7Cit9CisKK2RvdWJsZSBNYXhF
cnJvclRvbGVyYW5jZShkb3VibGUgYWNjZXB0YW5jZV9wcm9iYWJpbGl0eSkgeworICBkb3VibGUg
b25lX3NpZGVkX3B2YWx1ZSA9IDAuNSAqICgxLjAgLSBhY2NlcHRhbmNlX3Byb2JhYmlsaXR5KTsK
KyAgY29uc3QgZG91YmxlIG1heF9lcnIgPSBJbnZlcnNlTm9ybWFsU3Vydml2YWwob25lX3NpZGVk
X3B2YWx1ZSk7CisgIEFCU0xfQVNTRVJUKG1heF9lcnIgPiAwKTsKKyAgcmV0dXJuIG1heF9lcnI7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rlc3Rf
dXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNWJhNDlmYTdlMWVjNWYwMDllOWI1NjI0NDJjODU5MDZlNDQ0ZDk1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0
aWwuaApAQCAtMCwwICsxLDExMSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfRElTVFJJQlVUSU9OX1RFU1Rf
VVRJTF9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9ESVNUUklCVVRJT05fVEVTVF9V
VElMX0hfCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1
ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorI2lu
Y2x1ZGUgImFic2wvdHlwZXMvc3Bhbi5oIgorCisvLyBOT1RFOiBUaGUgZnVuY3Rpb25zIGluIHRo
aXMgZmlsZSBhcmUgdGVzdCBvbmx5LCBhbmQgYXJlIHNob3VsZCBub3QgYmUgdXNlZCBpbgorLy8g
bm9uLXRlc3QgY29kZS4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRl
cm5hbCB7CisKKy8vIGh0dHA6Ly93ZWJzcGFjZS5zaGlwLmVkdS9wZ21hcnIvR2VvNDQxL0xlY3R1
cmVzL0xlYyUyMDUlMjAtJTIwTm9ybWFsaXR5JTIwVGVzdGluZy5wZGYKKworLy8gQ29tcHV0ZSB0
aGUgMXN0IHRvIDR0aCBzdGFuZGFyZCBtb21lbnRzOgorLy8gbWVhbiwgdmFyaWFuY2UsIHNrZXdu
ZXNzLCBhbmQga3VydG9zaXMuCisvLyBodHRwOi8vd3d3Lml0bC5uaXN0Lmdvdi9kaXY4OTgvaGFu
ZGJvb2svZWRhL3NlY3Rpb24zL2VkYTM1Yi5odG0KK3N0cnVjdCBEaXN0cmlidXRpb25Nb21lbnRz
IHsKKyAgc2l6ZV90IG4gPSAwOworICBkb3VibGUgbWVhbiA9IDAuMDsKKyAgZG91YmxlIHZhcmlh
bmNlID0gMC4wOworICBkb3VibGUgc2tld25lc3MgPSAwLjA7CisgIGRvdWJsZSBrdXJ0b3NpcyA9
IDAuMDsKK307CitEaXN0cmlidXRpb25Nb21lbnRzIENvbXB1dGVEaXN0cmlidXRpb25Nb21lbnRz
KAorICAgIGFic2w6OlNwYW48Y29uc3QgZG91YmxlPiBkYXRhX3BvaW50cyk7CisKK3N0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBEaXN0cmlidXRpb25Nb21l
bnRzJiBtb21lbnRzKTsKKworLy8gQ29tcHV0ZXMgdGhlIFotc2NvcmUgZm9yIGEgc2V0IG9mIGRh
dGEgd2l0aCB0aGUgZ2l2ZW4gZGlzdHJpYnV0aW9uIG1vbWVudHMKKy8vIGNvbXBhcmVkIGFnYWlu
c3QgYGV4cGVjdGVkX21lYW5gLgorZG91YmxlIFpTY29yZShkb3VibGUgZXhwZWN0ZWRfbWVhbiwg
Y29uc3QgRGlzdHJpYnV0aW9uTW9tZW50cyYgbW9tZW50cyk7CisKKy8vIFJldHVybnMgdGhlIHBy
b2JhYmlsaXR5IG9mIHN1Y2Nlc3MgcmVxdWlyZWQgZm9yIGEgc2luZ2xlIHRyaWFsIHRvIGVuc3Vy
ZSB0aGF0CisvLyBhZnRlciBgbnVtX3RyaWFsc2AgdHJpYWxzLCB0aGUgcHJvYmFiaWxpdHkgb2Yg
YXQgbGVhc3Qgb25lIGZhaWx1cmUgaXMgbm8gbW9yZQorLy8gdGhhbiBgcF9mYWlsYC4KK2RvdWJs
ZSBSZXF1aXJlZFN1Y2Nlc3NQcm9iYWJpbGl0eShkb3VibGUgcF9mYWlsLCBpbnQgbnVtX3RyaWFs
cyk7CisKKy8vIENvbXB1dGVzIHRoZSBtYXhpbXVtIGRpc3RhbmNlIGZyb20gdGhlIG1lYW4gdG9s
ZXJhYmxlLCBmb3IgWi1UZXN0cyB0aGF0IGFyZQorLy8gZXhwZWN0ZWQgdG8gcGFzcyB3aXRoIGBh
Y2NlcHRhbmNlX3Byb2JhYmlsaXR5YC4gV2lsbCB0ZXJtaW5hdGUgaWYgdGhlCisvLyByZXN1bHRp
bmcgdG9sZXJhbmNlIGlzIHplcm8gKGR1ZSB0byBwYXNzaW5nIGluIDAuMCBmb3IKKy8vIGBhY2Nl
cHRhbmNlX3Byb2JhYmlsaXR5YCBvciByb3VuZGluZyBlcnJvcnMpLgorLy8KKy8vIEZvciBleGFt
cGxlLAorLy8gTWF4RXJyb3JUb2xlcmFuY2UoMC4wMDEpID0gMC4wCisvLyBNYXhFcnJvclRvbGVy
YW5jZSgwLjUpID0gfjAuNDcKKy8vIE1heEVycm9yVG9sZXJhbmNlKDEuMCkgPSBpbmYKK2RvdWJs
ZSBNYXhFcnJvclRvbGVyYW5jZShkb3VibGUgYWNjZXB0YW5jZV9wcm9iYWJpbGl0eSk7CisKKy8v
IEFwcHJveGltYXRpb24gdG8gaW52ZXJzZSBvZiB0aGUgRXJyb3IgRnVuY3Rpb24gaW4gZG91Ymxl
IHByZWNpc2lvbi4KKy8vIChodHRwOi8vcGVvcGxlLm1hdGhzLm94LmFjLnVrL2dpbGVzbS9maWxl
cy9nZW1zX2VyZmludi5wZGYpCitkb3VibGUgZXJmaW52KGRvdWJsZSB4KTsKKworLy8gQmV0YShw
LCBxKSA9IEdhbW1hKHApICogR2FtbWEocSkgLyBHYW1tYShwK3EpCitkb3VibGUgYmV0YShkb3Vi
bGUgcCwgZG91YmxlIHEpOworCisvLyBUaGUgaW52ZXJzZSBvZiB0aGUgbm9ybWFsIHN1cnZpdmFs
IGZ1bmN0aW9uLgorZG91YmxlIEludmVyc2VOb3JtYWxTdXJ2aXZhbChkb3VibGUgeCk7CisKKy8v
IFJldHVybnMgd2hldGhlciBhY3R1YWwgaXMgIm5lYXIiIGV4cGVjdGVkLCBiYXNlZCBvbiB0aGUg
Ym91bmQuCitib29sIE5lYXIoYWJzbDo6c3RyaW5nX3ZpZXcgbXNnLCBkb3VibGUgYWN0dWFsLCBk
b3VibGUgZXhwZWN0ZWQsIGRvdWJsZSBib3VuZCk7CisKKy8vIEltcGxlbWVudHMgdGhlIGluY29t
cGxldGUgcmVndWxhcml6ZWQgYmV0YSBmdW5jdGlvbiwgQVM2MywgQkVUQUlOLgorLy8gICAgaHR0
cHM6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS8yMzQ2Nzk3CisvLworLy8gQmV0YUluY29tcGxldGUo
eCwgcCwgcSksIHdoZXJlCisvLyAgIGB4YCBpcyB0aGUgdmFsdWUgb2YgdGhlIHVwcGVyIGxpbWl0
CisvLyAgIGBwYCBpcyBiZXRhIHBhcmFtZXRlciBwLCBgcWAgaXMgYmV0YSBwYXJhbWV0ZXIgcS4K
Ky8vCisvLyBOT1RFOiBUaGlzIGlzIGEgdGVzdC1vbmx5IGZ1bmN0aW9uIHdoaWNoIGlzIG9ubHkg
YWNjdXJhdGUgdG8gd2l0aGluLCBhdCBtb3N0LAorLy8gMWUtMTMgb2YgdGhlIGFjdHVhbCB2YWx1
ZS4KKy8vCitkb3VibGUgQmV0YUluY29tcGxldGUoZG91YmxlIHgsIGRvdWJsZSBwLCBkb3VibGUg
cSk7CisKKy8vIEltcGxlbWVudHMgdGhlIGludmVyc2Ugb2YgdGhlIGluY29tcGxldGUgcmVndWxh
cml6ZWQgYmV0YSBmdW5jdGlvbiwgQVMxMDksCisvLyBYSU5CVEEuCisvLyAgIGh0dHBzOi8vd3d3
LmpzdG9yLm9yZy9zdGFibGUvMjM0Njc5OAorLy8gICBodHRwczovL3d3dy5qc3Rvci5vcmcvc3Rh
YmxlLzIzNDY4ODcKKy8vCisvLyBCZXRhSW5jb21wbGV0ZUludihwLCBxLCBiZXRhLCBhbGhwYSkK
Ky8vICAgYHBgIGlzIGJldGEgcGFyYW1ldGVyIHAsIGBxYCBpcyBiZXRhIHBhcmFtZXRlciBxLgor
Ly8gICBgYWxwaGFgIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbG93ZXIgdGFpbCBhcmVhLgorLy8KKy8v
IE5PVEU6IFRoaXMgaXMgYSB0ZXN0LW9ubHkgZnVuY3Rpb24gYW5kLCB3aGVuIHN1Y2Nlc3NmdWws
IGlzIG9ubHkgYWNjdXJhdGUgdG8KKy8vIHdpdGhpbiB+MWUtNiBvZiB0aGUgYWN0dWFsIHZhbHVl
OyB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZSBpdCBkaXZlcmdlcyBmcm9tCisvLyB0aGUgYWN0
dWFsIHZhbHVlIGJ5IG11Y2ggbW9yZSB0aGFuIHRoYXQuICBUaGUgZnVuY3Rpb24gdXNlcyBOZXd0
b24ncyBtZXRob2QsCisvLyBhbmQgdGh1cyB0aGUgcnVudGltZSBpcyBoaWdobHkgdmFyaWFibGUu
Citkb3VibGUgQmV0YUluY29tcGxldGVJbnYoZG91YmxlIHAsIGRvdWJsZSBxLCBkb3VibGUgYWxw
aGEpOworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTl9URVNU
X1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25f
dGVzdF91dGlsX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX3Rl
c3RfdXRpbF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0OWQ0NGZiNDc5Njk1NGQ4Y2Q0N2Q2YzkzNDY4
ODM2YzljOTY0MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlz
dHJpYnV0aW9uX3Rlc3RfdXRpbF90ZXN0LmNjCkBAIC0wLDAgKzEsMTkzIEBACisvLyBDb3B5cmln
aHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2lu
dGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisKK25hbWVzcGFjZSB7CisKK1RFU1QoVGVzdFV0aWwsIEludmVyc2VFcmYpIHsKKyAgY29u
c3Qgc3RydWN0IHsKKyAgICBjb25zdCBkb3VibGUgejsKKyAgICBjb25zdCBkb3VibGUgdmFsdWU7
CisgIH0ga0VyZkludlRhYmxlW10gPSB7CisgICAgICB7MC4wMDAwMDAxLCA4Ljg2MjI3ZS04fSwK
KyAgICAgIHswLjAwMDAxLCA4Ljg2MjI3ZS02fSwKKyAgICAgIHswLjUsIDAuNDc2OTM2Mjc2MjA0
NH0sCisgICAgICB7MC42LCAwLjU5NTExNjA4MTQ0OTl9LAorICAgICAgezAuOTk5OTksIDMuMTIz
NDEzMjc0M30sCisgICAgICB7MC45OTk5OTk5LCAzLjc2NjU2MjU4MTZ9LAorICAgICAgezAuOTk5
OTk5OTQ0LCAzLjg0MDM4NTA2OTA1NjY5ODV9LCAgLy8gPSBsb2coKDEteCkgKiAoMSt4KSkgPX4g
MTYuMDA0CisgICAgICB7MC45OTk5OTk5OTksIDQuMzIwMDA1Mzg0OTEzNDQ1Mn0sCisgIH07CisK
KyAgZm9yIChjb25zdCBhdXRvJiBkYXRhIDoga0VyZkludlRhYmxlKSB7CisgICAgYXV0byB2YWx1
ZSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6ZXJmaW52KGRhdGEueik7CisKKyAgICAvLyBMb2cg
dXNpbmcgdGhlIFdvbGZyYW0tYWxwaGEgZnVuY3Rpb24gbmFtZSAmIHBhcmFtZXRlcnMuCisgICAg
RVhQRUNUX05FQVIodmFsdWUsIGRhdGEudmFsdWUsIDFlLTgpCisgICAgICAgIDw8ICIgSW52ZXJz
ZUVyZlsiIDw8IGRhdGEueiA8PCAiXSAgKGV4cGVjdGVkPSIgPDwgZGF0YS52YWx1ZSA8PCAiKSAg
LT4gIgorICAgICAgICA8PCB2YWx1ZTsKKyAgfQorfQorCitjb25zdCBzdHJ1Y3QgeworICBjb25z
dCBkb3VibGUgcDsKKyAgY29uc3QgZG91YmxlIHE7CisgIGNvbnN0IGRvdWJsZSB4OworICBjb25z
dCBkb3VibGUgYWxwaGE7Cit9IGtCZXRhVGFibGVbXSA9IHsKKyAgICB7MC41LCAwLjUsIDAuMDEs
IDAuMDYzNzY4NTYwODU4NTE5ODV9LAorICAgIHswLjUsIDAuNSwgMC4xLCAwLjIwNDgzMjc2NDY5
OTEzMzV9LAorICAgIHswLjUsIDAuNSwgMSwgMX0sCisgICAgezEsIDAuNSwgMCwgMH0sCisgICAg
ezEsIDAuNSwgMC4wMSwgMC4wMDUwMTI1NjI4OTMzODAwNDV9LAorICAgIHsxLCAwLjUsIDAuMSwg
MC4wNTEzMTY3MDE5NDk0ODYyfSwKKyAgICB7MSwgMC41LCAwLjUsIDAuMjkyODkzMjE4ODEzNDUy
NX0sCisgICAgezEsIDEsIDAuNSwgMC41fSwKKyAgICB7MiwgMiwgMC4xLCAwLjAyOH0sCisgICAg
ezIsIDIsIDAuMiwgMC4xMDR9LAorICAgIHsyLCAyLCAwLjMsIDAuMjE2fSwKKyAgICB7MiwgMiwg
MC40LCAwLjM1Mn0sCisgICAgezIsIDIsIDAuNSwgMC41fSwKKyAgICB7MiwgMiwgMC42LCAwLjY0
OH0sCisgICAgezIsIDIsIDAuNywgMC43ODR9LAorICAgIHsyLCAyLCAwLjgsIDAuODk2fSwKKyAg
ICB7MiwgMiwgMC45LCAwLjk3Mn0sCisgICAgezUuNSwgNSwgMC41LCAwLjQzNjE5MDg4NTA1NTk3
Nzd9LAorICAgIHsxMCwgMC41LCAwLjksIDAuMTUxNjQwOTA5NjM0Njk3OX0sCisgICAgezEwLCA1
LCAwLjUsIDAuMDg5NzgyNzE0ODQzNzV9LAorICAgIHsxMCwgNSwgMSwgMX0sCisgICAgezEwLCAx
MCwgMC41LCAwLjV9LAorICAgIHsyMCwgNSwgMC44LCAwLjQ1OTg3NzMyOTc1NzU3OTF9LAorICAg
IHsyMCwgMTAsIDAuNiwgMC4yMTQ2ODE2MTAyMzcxNzM5fSwKKyAgICB7MjAsIDEwLCAwLjgsIDAu
OTUwNzM2NDgyNjk1Nzg3NX0sCisgICAgezIwLCAyMCwgMC41LCAwLjV9LAorICAgIHsyMCwgMjAs
IDAuNiwgMC44OTc5NDEzNjg3MTA1OTE4fSwKKyAgICB7MzAsIDEwLCAwLjcsIDAuMjI0MTI5NzQ5
MTgwODM2Nn0sCisgICAgezMwLCAxMCwgMC44LCAwLjc1ODY0MDU0ODcxOTIwODZ9LAorICAgIHs0
MCwgMjAsIDAuNywgMC43MDAxNzgzMjQ3NDc3MDY5fSwKKyAgICB7MSwgMC41LCAwLjEsIDAuMDUx
MzE2NzAxOTQ5NDg2Mn0sCisgICAgezEsIDAuNSwgMC4yLCAwLjEwNTU3MjgwOTAwMDA4NDF9LAor
ICAgIHsxLCAwLjUsIDAuMywgMC4xNjMzMzk5NzM0NjU5MjQ1fSwKKyAgICB7MSwgMC41LCAwLjQs
IDAuMjI1NDAzMzMwNzU4NTE2Nn0sCisgICAgezEsIDIsIDAuMiwgMC4zNn0sCisgICAgezEsIDMs
IDAuMiwgMC40ODh9LAorICAgIHsxLCA0LCAwLjIsIDAuNTkwNH0sCisgICAgezEsIDUsIDAuMiwg
MC42NzIzMn0sCisgICAgezIsIDIsIDAuMywgMC4yMTZ9LAorICAgIHszLCAyLCAwLjMsIDAuMDgz
N30sCisgICAgezQsIDIsIDAuMywgMC4wMzA3OH0sCisgICAgezUsIDIsIDAuMywgMC4wMTA5MzV9
LAorCisgICAgLy8gVGhlc2UgdmFsdWVzIHRlc3Qgc21hbGwgJiBsYXJnZSBwb2ludHMgYWxvbmcg
dGhlIHJhbmdlIG9mIHRoZSBCZXRhCisgICAgLy8gZnVuY3Rpb24uCisgICAgLy8KKyAgICAvLyBX
aGVuIHNlbGVjdGluZyB0ZXN0IHBvaW50cywgcmVtZW1iZXIgdGhhdCBpZiBCZXRhSW5jb21wbGV0
ZSh4LCBwLCBxKQorICAgIC8vIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgdG8gd2l0aGluIHRoZSBs
aW1pdHMgb2YgcHJlY2lzaW9uIG92ZXIgYSBsYXJnZQorICAgIC8vIGRvbWFpbiBvZiB0aGUgaW5w
dXQsIHgsIHRoZW4gQmV0YUluY29tcGxldGVJbnYoYWxwaGEsIHAsIHEpIG1heSByZXR1cm4gYW4K
KyAgICAvLyBlc3NlbnRpYWxseSBhcmJpdHJhcnkgdmFsdWUgd2hlcmUgQmV0YUluY29tcGxldGUo
eCwgcCwgcSkgPX4gYWxwaGEuCisKKyAgICAvLyBCZXRhUmVndWxhcml6ZWRbeCwgMC4wMDAwMSwg
MC4wMDAwMV0sCisgICAgLy8gRm9yIHggaW4ge34wLjAwMSAuLi4gfjAuOTk5fSwgPT4gfjAuNQor
ICAgIHsxZS01LCAxZS01LCAxZS01LCAwLjQ5OTk0MjQzODgxODQ2MzgzMTF9LAorICAgIHsxZS01
LCAxZS01LCAoMS4wIC0gMWUtOCksIDAuNTAwMDkyMDk0ODM4OTIzMjk2NH0sCisKKyAgICAvLyBC
ZXRhUmVndWxhcml6ZWRbeCwgMC4wMDAwMSwgMTAwMDBdLgorICAgIC8vIEZvciB4IGluIHt+ZXBz
aWxvbiAuLi4gMS4wfSwgPT4gfjEKKyAgICB7MWUtNSwgMWU1LCAxZS02LCAwLjk5OTk4MTc3MDgx
MzAwNjY5MzZ9LAorICAgIHsxZS01LCAxZTUsICgxLjAgLSAxZS03KSwgMS4wfSwKKworICAgIC8v
IEJldGFSZWd1bGFyaXplZFt4LCAxMDAwMCwgMC4wMDAwMV0uCisgICAgLy8gRm9yIHggaW4gezAg
Li4gMS1lcHNpbG9ufSwgPT4gfjAKKyAgICB7MWU1LCAxZS01LCAxZS02LCAwfSwKKyAgICB7MWU1
LCAxZS01LCAoMS4wIC0gMWUtNiksIDEuODIyOTE4Njk5MzMwNjM2OWUtNX0sCit9OworCitURVNU
KEJldGFUZXN0LCBCZXRhSW5jb21wbGV0ZSkgeworICBmb3IgKGNvbnN0IGF1dG8mIGRhdGEgOiBr
QmV0YVRhYmxlKSB7CisgICAgYXV0byB2YWx1ZSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6QmV0
YUluY29tcGxldGUoZGF0YS54LCBkYXRhLnAsIGRhdGEucSk7CisKKyAgICAvLyBMb2cgdXNpbmcg
dGhlIFdvbGZyYW0tYWxwaGEgZnVuY3Rpb24gbmFtZSAmIHBhcmFtZXRlcnMuCisgICAgRVhQRUNU
X05FQVIodmFsdWUsIGRhdGEuYWxwaGEsIDFlLTEyKQorICAgICAgICA8PCAiIEJldGFSZWd1bGFy
aXplZFsiIDw8IGRhdGEueCA8PCAiLCAiIDw8IGRhdGEucCA8PCAiLCAiIDw8IGRhdGEucQorICAg
ICAgICA8PCAiXSAgKGV4cGVjdGVkPSIgPDwgZGF0YS5hbHBoYSA8PCAiKSAgLT4gIiA8PCB2YWx1
ZTsKKyAgfQorfQorCitURVNUKEJldGFUZXN0LCBCZXRhSW5jb21wbGV0ZUludikgeworICBmb3Ig
KGNvbnN0IGF1dG8mIGRhdGEgOiBrQmV0YVRhYmxlKSB7CisgICAgYXV0byB2YWx1ZSA9CisgICAg
ICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6QmV0YUluY29tcGxldGVJbnYoZGF0YS5wLCBkYXRh
LnEsIGRhdGEuYWxwaGEpOworCisgICAgLy8gTG9nIHVzaW5nIHRoZSBXb2xmcmFtLWFscGhhIGZ1
bmN0aW9uIG5hbWUgJiBwYXJhbWV0ZXJzLgorICAgIEVYUEVDVF9ORUFSKHZhbHVlLCBkYXRhLngs
IDFlLTYpCisgICAgICAgIDw8ICIgSW52ZXJzZUJldGFSZWd1bGFyaXplZFsiIDw8IGRhdGEuYWxw
aGEgPDwgIiwgIiA8PCBkYXRhLnAgPDwgIiwgIgorICAgICAgICA8PCBkYXRhLnEgPDwgIl0gIChl
eHBlY3RlZD0iIDw8IGRhdGEueCA8PCAiKSAgLT4gIiA8PCB2YWx1ZTsKKyAgfQorfQorCitURVNU
KE1heEVycm9yVG9sZXJhbmNlLCBNYXhFcnJvclRvbGVyYW5jZSkgeworICBzdGQ6OnZlY3Rvcjxz
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBjYXNlcyA9IHsKKyAgICAgIHswLjAwMDAwMDEsIDgu
ODYyMjdlLTggKiAxLjQxNDIxMzU2MjM3fSwKKyAgICAgIHswLjAwMDAxLCA4Ljg2MjI3ZS02ICog
MS40MTQyMTM1NjIzN30sCisgICAgICB7MC41LCAwLjQ3NjkzNjI3NjIwNDQgKiAxLjQxNDIxMzU2
MjM3fSwKKyAgICAgIHswLjYsIDAuNTk1MTE2MDgxNDQ5OSAqIDEuNDE0MjEzNTYyMzd9LAorICAg
ICAgezAuOTk5OTksIDMuMTIzNDEzMjc0MyAqIDEuNDE0MjEzNTYyMzd9LAorICAgICAgezAuOTk5
OTk5OSwgMy43NjY1NjI1ODE2ICogMS40MTQyMTM1NjIzN30sCisgICAgICB7MC45OTk5OTk5NDQs
IDMuODQwMzg1MDY5MDU2Njk4NSAqIDEuNDE0MjEzNTYyMzd9LAorICAgICAgezAuOTk5OTk5OTk5
LCA0LjMyMDAwNTM4NDkxMzQ0NTIgKiAxLjQxNDIxMzU2MjM3fX07CisgIGZvciAoYXV0byBlbnRy
eSA6IGNhc2VzKSB7CisgICAgRVhQRUNUX05FQVIoYWJzbDo6cmFuZG9tX2ludGVybmFsOjpNYXhF
cnJvclRvbGVyYW5jZShlbnRyeS5maXJzdCksCisgICAgICAgICAgICAgICAgZW50cnkuc2Vjb25k
LCAxZS04KTsKKyAgfQorfQorCitURVNUKFpTY29yZSwgV2l0aFNhbWVNZWFuKSB7CisgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9uTW9tZW50cyBtOworICBtLm4gPSAxMDA7Cisg
IG0ubWVhbiA9IDU7CisgIG0udmFyaWFuY2UgPSAxOworICBFWFBFQ1RfTkVBUihhYnNsOjpyYW5k
b21faW50ZXJuYWw6OlpTY29yZSg1LCBtKSwgMCwgMWUtMTIpOworCisgIG0ubiA9IDE7CisgIG0u
bWVhbiA9IDA7CisgIG0udmFyaWFuY2UgPSAxOworICBFWFBFQ1RfTkVBUihhYnNsOjpyYW5kb21f
aW50ZXJuYWw6OlpTY29yZSgwLCBtKSwgMCwgMWUtMTIpOworCisgIG0ubiA9IDEwMDAwOworICBt
Lm1lYW4gPSAtNTsKKyAgbS52YXJpYW5jZSA9IDEwMDsKKyAgRVhQRUNUX05FQVIoYWJzbDo6cmFu
ZG9tX2ludGVybmFsOjpaU2NvcmUoLTUsIG0pLCAwLCAxZS0xMik7Cit9CisKK1RFU1QoWlNjb3Jl
LCBEaWZmZXJlbnRNZWFuKSB7CisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6RGlzdHJpYnV0aW9u
TW9tZW50cyBtOworICBtLm4gPSAxMDA7CisgIG0ubWVhbiA9IDU7CisgIG0udmFyaWFuY2UgPSAx
OworICBFWFBFQ1RfTkVBUihhYnNsOjpyYW5kb21faW50ZXJuYWw6OlpTY29yZSg0LCBtKSwgMTAs
IDFlLTEyKTsKKworICBtLm4gPSAxOworICBtLm1lYW4gPSAwOworICBtLnZhcmlhbmNlID0gMTsK
KyAgRVhQRUNUX05FQVIoYWJzbDo6cmFuZG9tX2ludGVybmFsOjpaU2NvcmUoLTEsIG0pLCAxLCAx
ZS0xMik7CisKKyAgbS5uID0gMTAwMDA7CisgIG0ubWVhbiA9IC01OworICBtLnZhcmlhbmNlID0g
MTAwOworICBFWFBFQ1RfTkVBUihhYnNsOjpyYW5kb21faW50ZXJuYWw6OlpTY29yZSgtNCwgbSks
IC0xMCwgMWUtMTIpOworfQorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vaW50ZXJuYWwvZGlzdHJpYnV0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3Ry
aWJ1dGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGRiM2IzMjZmNGNmOTU1ZGRlZDJkMTc0YmY2YWE4MGM1
ZTdlZDRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1
dGlvbnMuaApAQCAtMCwwICsxLDgyIEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9ESVNUUklCVVRJT05TX0hf
CisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0RJU1RSSUJVVElPTlNfSF8KKworI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2NhbGxlci5oIgorI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2ludGVybmFsL3VuaWZvcm1faGVscGVyLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSByYW5kb21faW50ZXJuYWwgewordGVtcGxhdGUgPHR5cGVuYW1lIEQ+CitzdHJ1Y3QgRGlz
dHJpYnV0aW9uRm9ybWF0VHJhaXRzOworCisvLyBVbmlmb3JtSW1wbCBpbXBsZW1lbnRzIHRoZSBj
b3JlIGxvZ2ljIG9mIHRoZSBVbmlmb3JtPFQ+IGNhbGwsIHdoaWNoIGlzIHRvCisvLyBzZWxlY3Qg
dGhlIGNvcnJlY3QgZGlzdHJpYnV0aW9uIHR5cGUsIGNvbXB1dGUgdGhlIGJvdW5kcyBiYXNlZCBv
biB0aGUKKy8vIGludGVydmFsIHRhZywgYW5kIHRoZW4gZ2VuZXJhdGUgYSB2YWx1ZS4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBOdW1UeXBlLCB0eXBlbmFtZSBUYWdUeXBlLCB0eXBlbmFtZSBVUkJHPgor
TnVtVHlwZSBVbmlmb3JtSW1wbChUYWdUeXBlIHRhZywKKyAgICAgICAgICAgICAgICAgICAgVVJC
RyYgdXJiZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAg
ICAgIE51bVR5cGUgbG8sIE51bVR5cGUgaGkpIHsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIHN0
ZDo6aXNfYXJpdGhtZXRpYzxOdW1UeXBlPjo6dmFsdWUsCisgICAgICAiYWJzbDo6VW5pZm9ybTxU
PigpIG11c3QgdXNlIGFuIGludGVnZXIgb3IgcmVhbCBwYXJhbWV0ZXIgdHlwZS4iKTsKKworICB1
c2luZyBkaXN0cmlidXRpb25fdCA9CisgICAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0
ZDo6aXNfaW50ZWdyYWw8TnVtVHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248TnVtVHlwZT4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248
TnVtVHlwZT4+Ojp0eXBlOworICB1c2luZyBmb3JtYXRfdCA9IHJhbmRvbV9pbnRlcm5hbDo6RGlz
dHJpYnV0aW9uRm9ybWF0VHJhaXRzPGRpc3RyaWJ1dGlvbl90PjsKKworICBhdXRvIGEgPSByYW5k
b21faW50ZXJuYWw6OnVuaWZvcm1fbG93ZXJfYm91bmQ8TnVtVHlwZT4odGFnLCBsbywgaGkpOwor
ICBhdXRvIGIgPSByYW5kb21faW50ZXJuYWw6OnVuaWZvcm1fdXBwZXJfYm91bmQ8TnVtVHlwZT4o
dGFnLCBsbywgaGkpOworICAvLyBUT0RPKGxhcik6IGl0IGRvZXNuJ3QgbWFrZSBhIGxvdCBvZiBz
ZW5zZSB0byBhc2sgZm9yIGEgcmFuZG9tIG51bWJlciBpbiBhbgorICAvLyBlbXB0eSByYW5nZS4g
IFJpZ2h0IG5vdyB3ZSBqdXN0IHJldHVybiBhIGJvdW5kYXJ5LS1ldmVuIHRob3VnaCB0aGF0Cisg
IC8vIGJvdW5kYXJ5IGlzIG5vdCBhbiBhY2NlcHRhYmxlIHZhbHVlISAgSXMgdGhlcmUgc29tZXRo
aW5nIGJldHRlciB3ZSBjYW4gZG8KKyAgLy8gaGVyZT8KKworICB1c2luZyBnZW5fdCA9IGFic2w6
OmRlY2F5X3Q8VVJCRz47CisgIGlmIChhID4gYikgcmV0dXJuIGE7CisgIHJldHVybiBEaXN0cmli
dXRpb25DYWxsZXI8Z2VuX3Q+Ojp0ZW1wbGF0ZSBDYWxsPGRpc3RyaWJ1dGlvbl90LCBmb3JtYXRf
dD4oCisgICAgICAmdXJiZywgYSwgYik7Cit9CisKKy8vIEluIHRoZSBhYnNlbmNlIG9mIGFuIGV4
cGxpY2l0bHkgcHJvdmlkZWQgcmV0dXJuLXR5cGUsIHRoZSB0ZW1wbGF0ZQorLy8gInVuaWZvcm1f
aW5mZXJyZWRfcmV0dXJuX3Q8QSwgQj4iIGlzIHVzZWQgdG8gZGVyaXZlIGEgc3VpdGFibGUgdHlw
ZSwgYmFzZWQgb24KKy8vIHRoZSBkYXRhLXR5cGVzIG9mIHRoZSBlbmRwb2ludC1hcmd1bWVudHMg
e0EgbG8sIEIgaGl9LgorLy8KKy8vIEdpdmVuIGVuZHBvaW50cyB7QSBsbywgQiBoaX0sIG9uZSBv
ZiB7QSwgQn0gd2lsbCBiZSBjaG9zZW4gYXMgdGhlCisvLyByZXR1cm4tdHlwZSwgaWYgb25lIHR5
cGUgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIGludG8gdGhlIG90aGVyLCBpbiBhCisvLyBs
b3NzbGVzcyB3YXkuIFRoZSB0ZW1wbGF0ZSAiaXNfd2lkZW5pbmdfY29udmVydGlibGUiIGltcGxl
bWVudHMgdGhlCisvLyBjb21waWxlLXRpbWUgbG9naWMgZm9yIGRlY2lkaW5nIGlmIHN1Y2ggYSBj
b252ZXJzaW9uIGlzIHBvc3NpYmxlLgorLy8KKy8vIElmIG5vIHN1Y2ggY29udmVyc2lvbiBiZXR3
ZWVuIHtBLCBCfSBleGlzdHMsIHRoZW4gdGhlIG92ZXJsb2FkIGZvcgorLy8gYWJzbDo6VW5pZm9y
bSgpIHdpbGwgYmUgZGlzY2FyZGVkLCBhbmQgdGhlIGNhbGwgd2lsbCBiZSBpbGwtZm9ybWVkLgor
Ly8gUmV0dXJuLXR5cGUgZm9yIGFic2w6OlVuaWZvcm0oKSB3aGVuIHRoZSByZXR1cm4tdHlwZSBp
cyBpbmZlcnJlZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBCPgordXNpbmcgdW5p
Zm9ybV9pbmZlcnJlZF9yZXR1cm5fdCA9CisgICAgYWJzbDo6ZW5hYmxlX2lmX3Q8YWJzbDo6ZGlz
anVuY3Rpb248aXNfd2lkZW5pbmdfY29udmVydGlibGU8QSwgQj4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXNfd2lkZW5pbmdfY29udmVydGlibGU8QiwgQT4+Ojp2
YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBpc193aWRlbmluZ19jb252ZXJ0aWJsZTxBLCBCPjo6
dmFsdWUsIEIsIEE+Ojp0eXBlPjsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAor
fSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9E
SVNUUklCVVRJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZXhwbGlj
aXRfc2VlZF9zZXEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI2NjBlY2U1MDAxNzVmZjg0YjAxNmQ1NTc3MGVjYmM5MGYxOWQ2N2YKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZXhwbGljaXRfc2VlZF9zZXEu
aApAQCAtMCwwICsxLDg3IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9FWFBMSUNJVF9TRUVEX1NFUV9IXwor
I2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9FWFBMSUNJVF9TRUVEX1NFUV9IXworCisjaW5j
bHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4K
KyNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1
ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5h
bCB7CisKKy8vIFRoaXMgY2xhc3MgY29uZm9ybXMgdG8gdGhlIEMrKyBTdGFuZGFyZCAiU2VlZCBT
ZXF1ZW5jZSIgY29uY2VwdAorLy8gW3JhbmQucmVxLnNlZWRzZXFdLgorLy8KKy8vIEFuICJFeHBs
aWNpdFNlZWRTZXEiIGlzIG1lYW50IHRvIHByb3ZpZGUgYSBjb25mb3JtYW50IGludGVyZmFjZSBm
b3IKKy8vIGZvcndhcmRpbmcgcHJlLWNvbXB1dGVkIHNlZWQgbWF0ZXJpYWwgdG8gdGhlIGNvbnN0
cnVjdG9yIG9mIGEgY2xhc3MKKy8vIGNvbmZvcm1pbmcgdG8gdGhlICJVbmlmb3JtIFJhbmRvbSBC
aXQgR2VuZXJhdG9yIiBjb25jZXB0LiBUaGlzIGNsYXNzIG1ha2VzIG5vCisvLyBhdHRlbXB0IHRv
IG11dGF0ZSB0aGUgc3RhdGUgcHJvdmlkZWQgYnkgaXRzIGNvbnN0cnVjdG9yLCBhbmQgcmV0dXJu
cyBpdAorLy8gZGlyZWN0bHkgdmlhIEV4cGxpY2l0U2VlZFNlcTo6Z2VuZXJhdGUoKS4KKy8vCisv
LyBJZiB0aGlzIGNsYXNzIGlzIGFza2VkIHRvIGdlbmVyYXRlIG1vcmUgc2VlZCBtYXRlcmlhbCB0
aGFuIHdhcyBwcm92aWRlZCB0bworLy8gdGhlIGNvbnN0cnVjdG9yLCB0aGVuIHRoZSByZW1haW5p
bmcgYnl0ZXMgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXRlcm1pbmlzdGljLAorLy8gbm9ucmFuZG9t
IGRhdGEuCitjbGFzcyBFeHBsaWNpdFNlZWRTZXEgeworIHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0
X3R5cGUgPSB1aW50MzJfdDsKKworICBFeHBsaWNpdFNlZWRTZXEoKSA6IHN0YXRlXygpIHt9CisK
KyAgLy8gQ29weSBhbmQgbW92ZSBib3RoIGFsbG93ZWQuCisgIEV4cGxpY2l0U2VlZFNlcShjb25z
dCBFeHBsaWNpdFNlZWRTZXEmIG90aGVyKSA9IGRlZmF1bHQ7CisgIEV4cGxpY2l0U2VlZFNlcSYg
b3BlcmF0b3I9KGNvbnN0IEV4cGxpY2l0U2VlZFNlcSYgb3RoZXIpID0gZGVmYXVsdDsKKyAgRXhw
bGljaXRTZWVkU2VxKEV4cGxpY2l0U2VlZFNlcSYmIG90aGVyKSA9IGRlZmF1bHQ7CisgIEV4cGxp
Y2l0U2VlZFNlcSYgb3BlcmF0b3I9KEV4cGxpY2l0U2VlZFNlcSYmIG90aGVyKSA9IGRlZmF1bHQ7
CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgorICBFeHBsaWNpdFNlZWRTZXEoSXRl
cmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkgeworICAgIGZvciAoYXV0byBpdCA9IGJlZ2luOyBp
dCAhPSBlbmQ7IGl0KyspIHsKKyAgICAgIHN0YXRlXy5wdXNoX2JhY2soKml0ICYgMHhmZmZmZmZm
Zik7CisgICAgfQorICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIEV4cGxpY2l0U2Vl
ZFNlcShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaWwpCisgICAgICA6IEV4cGxpY2l0U2VlZFNl
cShpbC5iZWdpbigpLCBpbC5lbmQoKSkge30KKworICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRlXy5zaXplKCk7IH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0SXRlcmF0b3I+
CisgIHZvaWQgcGFyYW0oT3V0SXRlcmF0b3Igb3V0KSBjb25zdCB7CisgICAgc3RkOjpjb3B5KHN0
ZDo6YmVnaW4oc3RhdGVfKSwgc3RkOjplbmQoc3RhdGVfKSwgb3V0KTsKKyAgfQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBPdXRJdGVyYXRvcj4KKyAgdm9pZCBnZW5lcmF0ZShPdXRJdGVyYXRvciBi
ZWdpbiwgT3V0SXRlcmF0b3IgZW5kKSB7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBiZWdp
biAhPSBlbmQ7IGJlZ2luKyspIHsKKyAgICAgICpiZWdpbiA9IHN0YXRlXy5lbXB0eSgpID8gMCA6
IHN0YXRlX1tpbmRleCsrXTsKKyAgICAgIGlmIChpbmRleCA+PSBzdGF0ZV8uc2l6ZSgpKSB7Cisg
ICAgICAgIGluZGV4ID0gMDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworIHByb3RlY3RlZDoKKyAg
c3RkOjp2ZWN0b3I8dWludDMyX3Q+IHN0YXRlXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSByYW5k
b21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5E
T01fSU5URVJOQUxfRVhQTElDSVRfU0VFRF9TRVFfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVy
bmFsL2V4cGxpY2l0X3NlZWRfc2VxX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU1YWQ3Mzk0OGI5M2Nm
MGM1NTg5OWIyZDVjMTM5NmFkNzRhNWVlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcV90ZXN0LmNjCkBAIC0wLDAgKzEsMjA0IEBACisv
LyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wv
cmFuZG9tL2ludGVybmFsL2V4cGxpY2l0X3NlZWRfc2VxLmgiCisKKyNpbmNsdWRlIDxpdGVyYXRv
cj4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImdt
b2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9zZWVkX3NlcXVlbmNlcy5oIgorCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgU3NlcT4KK2Jvb2wgQ29uZm9ybXNUb0ludGVyZmFjZSgpIHsKKyAgLy8gQ2hlY2sgdGhhdCB0
aGUgU2VlZFNlcXVlbmNlIGNhbiBiZSBkZWZhdWx0LWNvbnN0cnVjdGVkLgorICB7IFNzZXEgZGVm
YXVsdF9jb25zdHJ1Y3RlZF9zZXE7IH0KKyAgLy8gQ2hlY2sgdGhhdCB0aGUgU2VlZFNlcXVlbmNl
IGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIHR3byBpdGVyYXRvcnMuCisgIHsKKyAgICB1aW50MzJf
dCBpbml0X2FycmF5W10gPSB7MSwgMywgNSwgNywgOX07CisgICAgU3NlcSBpdGVyYXRvcl9jb25z
dHJ1Y3RlZF9zZXEoaW5pdF9hcnJheSwgJmluaXRfYXJyYXlbNV0pOworICB9CisgIC8vIENoZWNr
IHRoYXQgdGhlIFNlZWRTZXF1ZW5jZSBjYW4gYmUgc3RkOjppbml0aWFsaXplcl9saXN0LWNvbnN0
cnVjdGVkLgorICB7IFNzZXEgbGlzdF9jb25zdHJ1Y3RlZF9zZXEgPSB7MSwgMywgNSwgNywgOSwg
MTEsIDEzfTsgfQorICAvLyBDaGVjayB0aGF0IHBhcmFtKCkgYW5kIHNpemUoKSByZXR1cm4gc3Rh
dGUgcHJvdmlkZWQgdG8gY29uc3RydWN0b3IuCisgIHsKKyAgICB1aW50MzJfdCBpbml0X2FycmF5
W10gPSB7MSwgMiwgMywgNCwgNX07CisgICAgU3NlcSBzZXEoaW5pdF9hcnJheSwgJmluaXRfYXJy
YXlbQUJTTF9BUlJBWVNJWkUoaW5pdF9hcnJheSldKTsKKyAgICBFWFBFQ1RfRVEoc2VxLnNpemUo
KSwgQUJTTF9BUlJBWVNJWkUoaW5pdF9hcnJheSkpOworCisgICAgdWludDMyX3Qgc3RhdGVfYXJy
YXlbQUJTTF9BUlJBWVNJWkUoaW5pdF9hcnJheSldOworICAgIHNlcS5wYXJhbShzdGF0ZV9hcnJh
eSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IEFCU0xfQVJSQVlTSVpFKHN0YXRlX2FycmF5
KTsgaSsrKSB7CisgICAgICBFWFBFQ1RfRVEoc3RhdGVfYXJyYXlbaV0sIGkgKyAxKTsKKyAgICB9
CisgIH0KKyAgLy8gQ2hlY2sgZm9yIHByZXNlbmNlIG9mIGdlbmVyYXRlKCkgbWV0aG9kLgorICB7
CisgICAgU3NlcSBzZXE7CisgICAgdWludDMyX3Qgc2VlZHNbNV07CisKKyAgICBzZXEuZ2VuZXJh
dGUoc2VlZHMsICZzZWVkc1tBQlNMX0FSUkFZU0laRShzZWVkcyldKTsKKyAgfQorICByZXR1cm4g
dHJ1ZTsKK30KK30gIC8vIG5hbWVzcGFjZQorCitURVNUKFNlZWRTZXF1ZW5jZXMsIENoZWNrSW50
ZXJmYWNlcykgeworICAvLyBDb250cm9sIGNhc2UKKyAgRVhQRUNUX1RSVUUoQ29uZm9ybXNUb0lu
dGVyZmFjZTxzdGQ6OnNlZWRfc2VxPigpKTsKKworICAvLyBBYnNlaWwgY2xhc3NlcworICBFWFBF
Q1RfVFJVRShDb25mb3Jtc1RvSW50ZXJmYWNlPGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6RXhwbGlj
aXRTZWVkU2VxPigpKTsKK30KKworVEVTVChFeHBsaWNpdFNlZWRTZXEsIERlZmF1bHRDb25zdHJ1
Y3RvckdlbmVyYXRlc1plcm9zKSB7CisgIGNvbnN0IHNpemVfdCBrTnVtQmxvY2tzID0gMTI4Owor
CisgIHVpbnQzMl90IG91dHB1dHNba051bUJsb2Nrc107CisgIGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6RXhwbGljaXRTZWVkU2VxIHNlcTsKKyAgc2VxLmdlbmVyYXRlKG91dHB1dHMsICZvdXRwdXRz
W2tOdW1CbG9ja3NdKTsKKworICBmb3IgKHVpbnQzMl90JiBzZWVkIDogb3V0cHV0cykgeworICAg
IEVYUEVDVF9FUShzZWVkLCAwKTsKKyAgfQorfQorCitURVNUKEV4cGxpY2l0U2VlcVNlcSwgU2Vl
ZE1hdGVyaWFsSXNGb3J3YXJkZWRJZGVudGljYWxseSkgeworICBjb25zdCBzaXplX3Qga051bUJs
b2NrcyA9IDEyODsKKworICB1aW50MzJfdCBzZWVkX21hdGVyaWFsW2tOdW1CbG9ja3NdOworICBz
dGQ6OnJhbmRvbV9kZXZpY2UgdXJhbmRvbXsiL2Rldi91cmFuZG9tIn07CisgIGZvciAodWludDMy
X3QmIHNlZWQgOiBzZWVkX21hdGVyaWFsKSB7CisgICAgc2VlZCA9IHVyYW5kb20oKTsKKyAgfQor
ICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkV4cGxpY2l0U2VlZFNlcSBzZXEoc2VlZF9tYXRlcmlh
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWVkX21h
dGVyaWFsW2tOdW1CbG9ja3NdKTsKKworICAvLyBDaGVjayB0aGF0IG91dHB1dCBpcyBzYW1lIGFz
IHNlZWQtbWF0ZXJpYWwgcHJvdmlkZWQgdG8gY29uc3RydWN0b3IuCisgIHsKKyAgICBjb25zdCBz
aXplX3Qga051bUdlbmVyYXRlZCA9IGtOdW1CbG9ja3MgLyAyOworICAgIHVpbnQzMl90IG91dHB1
dHNba051bUdlbmVyYXRlZF07CisgICAgc2VxLmdlbmVyYXRlKG91dHB1dHMsICZvdXRwdXRzW2tO
dW1HZW5lcmF0ZWRdKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1HZW5lcmF0ZWQ7
IGkrKykgeworICAgICAgRVhQRUNUX0VRKG91dHB1dHNbaV0sIHNlZWRfbWF0ZXJpYWxbaV0pOwor
ICAgIH0KKyAgfQorICAvLyBDaGVjayB0aGF0IFNlZWRTZXF1ZW5jZSBpcyBzdGF0ZWxlc3MgYmV0
d2VlbiBpbnZvY2F0aW9uczogRGVzcGl0ZSB0aGUgbGFzdAorICAvLyBpbnZvY2F0aW9uIG9mIGdl
bmVyYXRlKCkgb25seSBjb25zdW1pbmcgaGFsZiBvZiB0aGUgaW5wdXQtZW50cm9weSwgdGhlIHNh
bWUKKyAgLy8gZW50cm9weSB3aWxsIGJlIHJlY3ljbGVkIGZvciB0aGUgbmV4dCBpbnZvY2F0aW9u
LgorICB7CisgICAgY29uc3Qgc2l6ZV90IGtOdW1HZW5lcmF0ZWQgPSBrTnVtQmxvY2tzOworICAg
IHVpbnQzMl90IG91dHB1dHNba051bUdlbmVyYXRlZF07CisgICAgc2VxLmdlbmVyYXRlKG91dHB1
dHMsICZvdXRwdXRzW2tOdW1HZW5lcmF0ZWRdKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGtOdW1HZW5lcmF0ZWQ7IGkrKykgeworICAgICAgRVhQRUNUX0VRKG91dHB1dHNbaV0sIHNlZWRf
bWF0ZXJpYWxbaV0pOworICAgIH0KKyAgfQorICAvLyBDaGVjayB0aGF0IHdoZW4gbW9yZSBzZWVk
LW1hdGVyaWFsIGlzIGFza2VkIGZvciB0aGFuIGlzIHByb3ZpZGVkLCBub256ZXJvCisgIC8vIHZh
bHVlcyBhcmUgc3RpbGwgd3JpdHRlbi4KKyAgeworICAgIGNvbnN0IHNpemVfdCBrTnVtR2VuZXJh
dGVkID0ga051bUJsb2NrcyAqIDI7CisgICAgdWludDMyX3Qgb3V0cHV0c1trTnVtR2VuZXJhdGVk
XTsKKyAgICBzZXEuZ2VuZXJhdGUob3V0cHV0cywgJm91dHB1dHNba051bUdlbmVyYXRlZF0pOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUdlbmVyYXRlZDsgaSsrKSB7CisgICAgICBF
WFBFQ1RfRVEob3V0cHV0c1tpXSwgc2VlZF9tYXRlcmlhbFtpICUga051bUJsb2Nrc10pOworICAg
IH0KKyAgfQorfQorCitURVNUKEV4cGxpY2l0U2VlZFNlcSwgQ29weUFuZE1vdmVDb25zdHJ1Y3Rv
cnMpIHsKKyAgdXNpbmcgdGVzdGluZzo6RWFjaDsKKyAgdXNpbmcgdGVzdGluZzo6RXE7CisgIHVz
aW5nIHRlc3Rpbmc6Ok5vdDsKKyAgdXNpbmcgdGVzdGluZzo6UG9pbnR3aXNlOworCisgIHVpbnQz
Ml90IGVudHJvcHlbNF07CisgIHN0ZDo6cmFuZG9tX2RldmljZSB1cmFuZG9tKCIvZGV2L3VyYW5k
b20iKTsKKyAgZm9yICh1aW50MzJfdCYgZW50cnkgOiBlbnRyb3B5KSB7CisgICAgZW50cnkgPSB1
cmFuZG9tKCk7CisgIH0KKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpFeHBsaWNpdFNlZWRTZXEg
c2VxX2Zyb21fZW50cm9weShzdGQ6OmJlZ2luKGVudHJvcHkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5kKGVudHJvcHkp
KTsKKyAgLy8gQ29weSBjb25zdHJ1Y3Rvci4KKyAgeworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6RXhwbGljaXRTZWVkU2VxIHNlcV9jb3B5KHNlcV9mcm9tX2VudHJvcHkpOworICAgIEVYUEVD
VF9FUShzZXFfY29weS5zaXplKCksIHNlcV9mcm9tX2VudHJvcHkuc2l6ZSgpKTsKKworICAgIHN0
ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVkc18xOworICAgIHNlZWRzXzEucmVzaXplKDEwMDAsIDAp
OworICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVkc18yOworICAgIHNlZWRzXzIucmVzaXpl
KDEwMDAsIDEpOworCisgICAgc2VxX2Zyb21fZW50cm9weS5nZW5lcmF0ZShzZWVkc18xLmJlZ2lu
KCksIHNlZWRzXzEuZW5kKCkpOworICAgIHNlcV9jb3B5LmdlbmVyYXRlKHNlZWRzXzIuYmVnaW4o
KSwgc2VlZHNfMi5lbmQoKSk7CisKKyAgICBFWFBFQ1RfVEhBVChzZWVkc18xLCBQb2ludHdpc2Uo
RXEoKSwgc2VlZHNfMikpOworICB9CisgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IuCisgIHsKKyAg
ICBmb3IgKHVpbnQzMl90JiBlbnRyeSA6IGVudHJvcHkpIHsKKyAgICAgIGVudHJ5ID0gdXJhbmRv
bSgpOworICAgIH0KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkV4cGxpY2l0U2VlZFNlcSBh
bm90aGVyX3NlcShzdGQ6OmJlZ2luKGVudHJvcHkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5kKGVudHJvcHkpKTsKKworICAg
IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVkc18xOworICAgIHNlZWRzXzEucmVzaXplKDEwMDAs
IDApOworICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVkc18yOworICAgIHNlZWRzXzIucmVz
aXplKDEwMDAsIDApOworCisgICAgc2VxX2Zyb21fZW50cm9weS5nZW5lcmF0ZShzZWVkc18xLmJl
Z2luKCksIHNlZWRzXzEuZW5kKCkpOworICAgIGFub3RoZXJfc2VxLmdlbmVyYXRlKHNlZWRzXzIu
YmVnaW4oKSwgc2VlZHNfMi5lbmQoKSk7CisKKyAgICAvLyBBc3NlcnQgcHJlY29uZGl0aW9uOiBT
ZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5IHNlZWQtc2VxdWVuY2VzIGFyZSBub3QgZXF1YWwuCisgICAg
RVhQRUNUX1RIQVQoc2VlZHNfMSwgTm90KFBvaW50d2lzZShFcSgpLCBzZWVkc18yKSkpOworCisg
ICAgLy8gQXBwbHkgdGhlIGFzc2lnbm1lbnQtb3BlcmF0b3IuCisgICAgYW5vdGhlcl9zZXEgPSBz
ZXFfZnJvbV9lbnRyb3B5OworCisgICAgLy8gUmUtZ2VuZXJhdGUgc2VlZHMuCisgICAgc2VxX2Zy
b21fZW50cm9weS5nZW5lcmF0ZShzZWVkc18xLmJlZ2luKCksIHNlZWRzXzEuZW5kKCkpOworICAg
IGFub3RoZXJfc2VxLmdlbmVyYXRlKHNlZWRzXzIuYmVnaW4oKSwgc2VlZHNfMi5lbmQoKSk7CisK
KyAgICAvLyBTZWVkcyBnZW5lcmF0ZWQgYnkgc2VlZC1zZXF1ZW5jZXMgc2hvdWxkIG5vdyBiZSBl
cXVhbC4KKyAgICBFWFBFQ1RfVEhBVChzZWVkc18xLCBQb2ludHdpc2UoRXEoKSwgc2VlZHNfMikp
OworICB9CisgIC8vIE1vdmUgY29uc3RydWN0b3IuCisgIHsKKyAgICAvLyBHZXQgc2VlZHMgZnJv
bSBzZWVkLXNlcXVlbmNlIGNvbnN0cnVjdGVkIGZyb20gZW50cm9weS4KKyAgICBzdGQ6OnZlY3Rv
cjx1aW50MzJfdD4gc2VlZHNfMTsKKyAgICBzZWVkc18xLnJlc2l6ZSgxMDAwLCAwKTsKKyAgICBz
ZXFfZnJvbV9lbnRyb3B5LmdlbmVyYXRlKHNlZWRzXzEuYmVnaW4oKSwgc2VlZHNfMS5lbmQoKSk7
CisKKyAgICAvLyBBcHBseSBtb3ZlLWNvbnN0cnVjdG9yIG1vdmUgdGhlIHNlcXVlbmNlIHRvIGFu
b3RoZXIgaW5zdGFuY2UuCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpFeHBsaWNpdFNlZWRT
ZXEgbW92ZWRfc2VxKAorICAgICAgICBzdGQ6Om1vdmUoc2VxX2Zyb21fZW50cm9weSkpOworICAg
IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVkc18yOworICAgIHNlZWRzXzIucmVzaXplKDEwMDAs
IDEpOworICAgIG1vdmVkX3NlcS5nZW5lcmF0ZShzZWVkc18yLmJlZ2luKCksIHNlZWRzXzIuZW5k
KCkpOworICAgIC8vIFZlcmlmeSB0aGF0IHNlZWRzIHByb2R1Y2VkIGJ5IG1vdmVkLWluc3RhbmNl
IGFyZSB0aGUgc2FtZSBhcyBvcmlnaW5hbC4KKyAgICBFWFBFQ1RfVEhBVChzZWVkc18xLCBQb2lu
dHdpc2UoRXEoKSwgc2VlZHNfMikpOworCisgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIG1vdmVkLWZy
b20gaW5zdGFuY2Ugbm93IGJlaGF2ZXMgbGlrZSBhCisgICAgLy8gZGVmYXVsdC1jb25zdHJ1Y3Rl
ZCBpbnN0YW5jZS4KKyAgICBFWFBFQ1RfRVEoc2VxX2Zyb21fZW50cm9weS5zaXplKCksIDApOwor
ICAgIHNlcV9mcm9tX2VudHJvcHkuZ2VuZXJhdGUoc2VlZHNfMS5iZWdpbigpLCBzZWVkc18xLmVu
ZCgpKTsKKyAgICBFWFBFQ1RfVEhBVChzZWVkc18xLCBFYWNoKEVxKDApKSk7CisgIH0KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThkZjky
ZjNkOTlmNzk3ZDE2YzJjOWIzMmFhMDlhYTg5YzA3NTY1NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oCkBAIC0wLDAgKzEsMjYwIEBA
CisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9GQVNUX1VOSUZPUk1fQklUU19IXworI2RlZmluZSBBQlNMX1JBTkRP
TV9JTlRFUk5BTF9GQVNUX1VOSUZPUk1fQklUU19IXworCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNp
bmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGlucHV0IHZhbHVlIGlzIHplcm8gb3IgYSBwb3dlciBvZiB0d28u
IFVzZWZ1bCBmb3IKKy8vIGRldGVybWluaW5nIGlmIHRoZSByYW5nZSBvZiBvdXRwdXQgdmFsdWVz
IGluIGEgVVJCRwordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgorY29uc3RleHByIGJvb2wg
SXNQb3dlck9mVHdvT3JaZXJvKFVJbnRUeXBlIG4pIHsKKyAgcmV0dXJuIChuID09IDApIHx8ICgo
biAmIChuIC0gMSkpID09IDApOworfQorCisvLyBDb21wdXRlcyB0aGUgbGVuZ3RoIG9mIHRoZSBy
YW5nZSBvZiB2YWx1ZXMgcHJvZHVjaWJsZSBieSB0aGUgVVJCRywgb3IgcmV0dXJucworLy8gemVy
byBpZiB0aGF0IHdvdWxkIGVuY29tcGFzcyB0aGUgZW50aXJlIHJhbmdlIG9mIHJlcHJlc2VudGFi
bGUgdmFsdWVzIGluCisvLyBVUkJHOjpyZXN1bHRfdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBV
UkJHPgorY29uc3RleHByIHR5cGVuYW1lIFVSQkc6OnJlc3VsdF90eXBlIFJhbmdlU2l6ZSgpIHsK
KyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlwZTsKKyAgcmV0
dXJuICgoVVJCRzo6bWF4KSgpID09IChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6
bWF4KSgpICYmCisgICAgICAgICAgKFVSQkc6Om1pbikoKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHJlc3VsdF90eXBlPjo6bG93ZXN0KCkpCisgICAgICAgICAgICAgPyByZXN1bHRfdHlwZXswfQor
ICAgICAgICAgICAgIDogKFVSQkc6Om1heCkoKSAtIChVUkJHOjptaW4pKCkgKyByZXN1bHRfdHlw
ZXsxfTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgorY29uc3RleHByIFVJbnRU
eXBlIExhcmdlc3RQb3dlck9mVHdvTGVzc1RoYW5PckVxdWFsVG8oVUludFR5cGUgbikgeworICBy
ZXR1cm4gbiA8IDIgPyBuIDogMiAqIExhcmdlc3RQb3dlck9mVHdvTGVzc1RoYW5PckVxdWFsVG8o
biAvIDIpOworfQorCisvLyBHaXZlbiBhIFVSQkcgZ2VuZXJhdGluZyB2YWx1ZXMgaW4gdGhlIGNs
b3NlZCBpbnRlcnZhbCBbTG8sIEhpXSwgcmV0dXJucyB0aGUKKy8vIGxhcmdlc3QgcG93ZXIgb2Yg
dHdvIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgSGkgLSBMbyArIDFgLgordGVtcGxhdGUgPHR5cGVu
YW1lIFVSQkc+Citjb25zdGV4cHIgdHlwZW5hbWUgVVJCRzo6cmVzdWx0X3R5cGUgUG93ZXJPZlR3
b1N1YlJhbmdlU2l6ZSgpIHsKKyAgcmV0dXJuIExhcmdlc3RQb3dlck9mVHdvTGVzc1RoYW5PckVx
dWFsVG8oUmFuZ2VTaXplPFVSQkc+KCkpOworfQorCisvLyBDb21wdXRlcyB0aGUgZmxvb3Igb2Yg
dGhlIGxvZy4gKGkuZS4sIHN0ZDo6Zmxvb3Ioc3RkOjpsb2cyKE4pKTsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBVSW50VHlwZT4KK2NvbnN0ZXhwciBVSW50VHlwZSBJbnRlZ2VyTG9nMihVSW50VHlwZSBu
KSB7CisgIHJldHVybiAobiA8PSAxKSA/IDAgOiAxICsgSW50ZWdlckxvZzIobiAvIDIpOworfQor
CisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyBvZiByYW5kb21uZXNzIHJldHVybmVkIHRo
cm91Z2gKKy8vIGBQb3dlck9mVHdvVmFyaWF0ZSh1cmJnKWAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VVJCRz4KK2NvbnN0ZXhwciBzaXplX3QgTnVtQml0cygpIHsKKyAgcmV0dXJuIFJhbmdlU2l6ZTxV
UkJHPigpID09IDAKKyAgICAgICAgICAgICA/IHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZW5hbWUg
VVJCRzo6cmVzdWx0X3R5cGU+OjpkaWdpdHMKKyAgICAgICAgICAgICA6IEludGVnZXJMb2cyKFBv
d2VyT2ZUd29TdWJSYW5nZVNpemU8VVJCRz4oKSk7Cit9CisKKy8vIEdpdmVuIGEgc2hpZnQgdmFs
dWUgYG5gLCBjb25zdHJ1Y3RzIGEgbWFzayB3aXRoIGV4YWN0bHkgdGhlIGxvdyBgbmAgYml0cyBz
ZXQuCisvLyBJZiBgbiA9PSAwYCwgYWxsIGJpdHMgYXJlIHNldC4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBVSW50VHlwZT4KK2NvbnN0ZXhwciBVSW50VHlwZSBNYXNrRnJvbVNoaWZ0KFVJbnRUeXBlIG4p
IHsKKyAgcmV0dXJuICgobiAlIHN0ZDo6bnVtZXJpY19saW1pdHM8VUludFR5cGU+OjpkaWdpdHMp
ID09IDApCisgICAgICAgICAgICAgPyB+VUludFR5cGV7MH0KKyAgICAgICAgICAgICA6IChVSW50
VHlwZXsxfSA8PCBuKSAtIFVJbnRUeXBlezF9OworfQorCisvLyBGYXN0VW5pZm9ybUJpdHMgaW1w
bGVtZW50cyBhIGZhc3QgcGF0aCB0byBhY3F1aXJlIHVuaWZvcm0gaW5kZXBlbmRlbnQgYml0cwor
Ly8gZnJvbSBhIHR5cGUgd2hpY2ggY29uZm9ybXMgdG8gdGhlIFtyYW5kLnJlcS51cmJnXSBjb25j
ZXB0LgorLy8gUGFyYW1ldGVyaXplZCBieToKKy8vICBgVUludFR5cGVgOiB0aGUgcmVzdWx0IChv
dXRwdXQpIHR5cGUKKy8vCisvLyBUaGUgc3RkOjppbmRlcGVuZGVudF9iaXRzX2VuZ2luZSBbcmFu
ZC5hZGFwdC5pYml0c10gYWRhcHRvciBjYW4gYmUKKy8vIGluc3RhbnRpYXRlZCBmcm9tIGFuIGV4
aXN0aW5nIGdlbmVyYXRvciB0aHJvdWdoIGEgY29weSBvciBhIG1vdmUuIEl0IGRvZXMKKy8vIG5v
dCwgaG93ZXZlciwgZmFjaWxpdGF0ZSB0aGUgcHJvZHVjdGlvbiBvZiBwc2V1ZG9yYW5kb20gYml0
cyBmcm9tIGFuIHVuLW93bmVkCisvLyBnZW5lcmF0b3IgdGhhdCB3aWxsIG91dGxpdmUgdGhlIHN0
ZDo6aW5kZXBlbmRlbnRfYml0c19lbmdpbmUgaW5zdGFuY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VUludFR5cGUgPSB1aW50NjRfdD4KK2NsYXNzIEZhc3RVbmlmb3JtQml0cyB7CisgcHVibGljOgor
ICB1c2luZyByZXN1bHRfdHlwZSA9IFVJbnRUeXBlOworCisgIHN0YXRpYyBjb25zdGV4cHIgcmVz
dWx0X3R5cGUobWluKSgpIHsgcmV0dXJuIDA7IH0KKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRf
dHlwZShtYXgpKCkgeworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlw
ZT46Om1heCkoKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRf
dHlwZSBvcGVyYXRvcigpKFVSQkcmIGcpOyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykK
KworIHByaXZhdGU6CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc191bnNpZ25lZDxVSW50VHlwZT46
OnZhbHVlLAorICAgICAgICAgICAgICAgICJDbGFzcy10ZW1wbGF0ZSBGYXN0VW5pZm9ybUJpdHM8
PiBtdXN0IGJlIHBhcmFtZXRlcml6ZWQgdXNpbmcgIgorICAgICAgICAgICAgICAgICJhbiB1bnNp
Z25lZCB0eXBlLiIpOworCisgIC8vIFBvd2VyT2ZUd29WYXJpYXRlKCkgZ2VuZXJhdGVzIGEgc2lu
Z2xlIHJhbmRvbSB2YXJpYXRlLCBhbHdheXMgcmV0dXJuaW5nIGEKKyAgLy8gdmFsdWUgaW4gdGhl
IGhhbGYtb3BlbiBpbnRlcnZhbCBgWzAsIFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8VVJCRz4oKSlg
LiBJZgorICAvLyB0aGUgVVJCRyBhbHJlYWR5IGdlbmVyYXRlcyB2YWx1ZXMgaW4gYSBwb3dlci1v
Zi10d28gcmFuZ2UsIHRoZSBnZW5lcmF0b3IKKyAgLy8gaXRzZWxmIGlzIHVzZWQuIE90aGVyd2lz
ZSwgd2UgdXNlIHJlamVjdGlvbiBzYW1wbGluZyBvbiB0aGUgbGFyZ2VzdAorICAvLyBwb3NzaWJs
ZSBwb3dlci1vZi10d28tc2l6ZWQgc3VicmFuZ2UuCisgIHN0cnVjdCBQb3dlck9mVHdvVGFnIHt9
OworICBzdHJ1Y3QgUmVqZWN0aW9uU2FtcGxpbmdUYWcge307CisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVUkJHPgorICBzdGF0aWMgdHlwZW5hbWUgVVJCRzo6cmVzdWx0X3R5cGUgUG93ZXJPZlR3b1Zh
cmlhdGUoCisgICAgICBVUkJHJiBnKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICAgIHVzaW5nIHRhZyA9CisgICAgICAgIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8SXNQb3dl
ck9mVHdvT3JaZXJvKFJhbmdlU2l6ZTxVUkJHPigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQb3dlck9mVHdvVGFnLCBSZWplY3Rpb25TYW1wbGluZ1RhZz46OnR5cGU7Cisg
ICAgcmV0dXJuIFBvd2VyT2ZUd29WYXJpYXRlKGcsIHRhZ3t9KTsKKyAgfQorCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVUkJHPgorICBzdGF0aWMgdHlwZW5hbWUgVVJCRzo6cmVzdWx0X3R5cGUgUG93
ZXJPZlR3b1ZhcmlhdGUoCisgICAgICBVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJl
bmNlcykKKyAgICAgIFBvd2VyT2ZUd29UYWcpIHsKKyAgICByZXR1cm4gZygpIC0gKFVSQkc6Om1p
bikoKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICBzdGF0aWMgdHlwZW5h
bWUgVVJCRzo6cmVzdWx0X3R5cGUgUG93ZXJPZlR3b1ZhcmlhdGUoCisgICAgICBVUkJHJiBnLCAg
Ly8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgIFJlamVjdGlvblNhbXBsaW5nVGFn
KSB7CisgICAgLy8gVXNlIHJlamVjdGlvbiBzYW1wbGluZyB0byBlbnN1cmUgdW5pZm9ybWl0eSBh
Y3Jvc3MgdGhlIHJhbmdlLgorICAgIHR5cGVuYW1lIFVSQkc6OnJlc3VsdF90eXBlIHU7CisgICAg
ZG8geworICAgICAgdSA9IGcoKSAtIChVUkJHOjptaW4pKCk7CisgICAgfSB3aGlsZSAodSA+PSBQ
b3dlck9mVHdvU3ViUmFuZ2VTaXplPFVSQkc+KCkpOworICAgIHJldHVybiB1OworICB9CisKKyAg
Ly8gR2VuZXJhdGUoKSBnZW5lcmF0ZXMgYSByYW5kb20gdmFsdWUsIGRpc3BhdGNoZWQgb24gd2hl
dGhlcgorICAvLyB0aGUgdW5kZXJseWluZyBVUkJHIG11c3QgbG9vcCBvdmVyIG11bHRpcGxlIGNh
bGxzIG9yIG5vdC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJlc3VsdF90eXBlIEdl
bmVyYXRlKFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnRydWVfdHlwZSAvKiBhdm9pZF9sb29waW5nICovKTsKKworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgR2VuZXJhdGUoVVJCRyYgZywg
IC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6ZmFsc2VfdHlwZSAvKiBhdm9pZF9sb29waW5nICovKTsKK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBVSW50VHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordHlwZW5hbWUgRmFzdFVu
aWZvcm1CaXRzPFVJbnRUeXBlPjo6cmVzdWx0X3R5cGUKK0Zhc3RVbmlmb3JtQml0czxVSW50VHlw
ZT46Om9wZXJhdG9yKCkoVVJCRyYgZykgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykK
KyAgLy8ga1JhbmdlTWFzayBpcyB0aGUgbWFzayB1c2VkIHdoZW4gc2FtcGxpbmcgdmFyaWF0ZXMg
ZnJvbSB0aGUgVVJCRyB3aGVuIHRoZQorICAvLyB3aWR0aCBvZiB0aGUgVVJCRyByYW5nZSBpcyBu
b3QgYSBwb3dlciBvZiAyLgorICAvLyBZID0gKDIgXiBrUmFuZ2UpIC0gMQorICBzdGF0aWNfYXNz
ZXJ0KChVUkJHOjptYXgpKCkgPiAoVVJCRzo6bWluKSgpLAorICAgICAgICAgICAgICAgICJVUkJH
OjptYXggYW5kIFVSQkc6Om1pbiBtYXkgbm90IGJlIGVxdWFsLiIpOworICB1c2luZyB1cmJnX3Jl
c3VsdF90eXBlID0gdHlwZW5hbWUgVVJCRzo6cmVzdWx0X3R5cGU7CisgIGNvbnN0ZXhwciB1cmJn
X3Jlc3VsdF90eXBlIGtSYW5nZU1hc2sgPQorICAgICAgUmFuZ2VTaXplPFVSQkc+KCkgPT0gMAor
ICAgICAgICAgID8gKHN0ZDo6bnVtZXJpY19saW1pdHM8dXJiZ19yZXN1bHRfdHlwZT46Om1heCko
KQorICAgICAgICAgIDogc3RhdGljX2Nhc3Q8dXJiZ19yZXN1bHRfdHlwZT4oUG93ZXJPZlR3b1N1
YlJhbmdlU2l6ZTxVUkJHPigpIC0gMSk7CisgIHJldHVybiBHZW5lcmF0ZShnLCBzdGQ6OmludGVn
cmFsX2NvbnN0YW50PGJvb2wsIChrUmFuZ2VNYXNrID49IChtYXgpKCkpPnt9KTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFVJbnRUeXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0eXBl
bmFtZSBGYXN0VW5pZm9ybUJpdHM8VUludFR5cGU+OjpyZXN1bHRfdHlwZQorRmFzdFVuaWZvcm1C
aXRzPFVJbnRUeXBlPjo6R2VuZXJhdGUoVVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVy
ZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnRydWVfdHlw
ZSAvKiBhdm9pZF9sb29waW5nICovKSB7CisgIC8vIFRoZSB3aWR0aCBvZiB0aGUgcmVzdWx0X3R5
cGUgaXMgbGVzcyB0aGFuIHRoYW4gdGhlIHdpZHRoIG9mIHRoZSByYW5kb20gYml0cworICAvLyBw
cm92aWRlZCBieSBVUkJHLiAgVGh1cywgZ2VuZXJhdGUgYSBzaW5nbGUgdmFsdWUgYW5kIHRoZW4g
c2ltcGx5IG1hc2sgb2ZmCisgIC8vIHRoZSByZXF1aXJlZCBiaXRzLgorCisgIHJldHVybiBQb3dl
ck9mVHdvVmFyaWF0ZShnKSAmIChtYXgpKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVSW50
VHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordHlwZW5hbWUgRmFzdFVuaWZvcm1CaXRz
PFVJbnRUeXBlPjo6cmVzdWx0X3R5cGUKK0Zhc3RVbmlmb3JtQml0czxVSW50VHlwZT46OkdlbmVy
YXRlKFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmYWxzZV90eXBlIC8qIGF2b2lkX2xvb3Bpbmcg
Ki8pIHsKKyAgLy8gU2VlIFtyYW5kLmFkYXB0LmliaXRzXSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRo
ZSBjb25zdGFudHMgY2FsY3VsYXRlZCBiZWxvdy4KKyAgLy8KKyAgLy8gSXQgaXMgcHJlZmVyYWJs
ZSB0byB1c2Ugcm91Z2hseSB0aGUgc2FtZSBudW1iZXIgb2YgYml0cyBmcm9tIGVhY2ggZ2VuZXJh
dG9yCisgIC8vIGNhbGwsIGhvd2V2ZXIgdGhpcyBpcyBvbmx5IHBvc3NpYmxlIHdoZW4gdGhlIG51
bWJlciBvZiBiaXRzIHByb3ZpZGVkIGJ5IHRoZQorICAvLyBVUkJHIGlzIGEgZGl2aXNvciBvZiB0
aGUgbnVtYmVyIG9mIGJpdHMgaW4gYHJlc3VsdF90eXBlYC4gSW4gYWxsIG90aGVyCisgIC8vIGNh
c2VzLCB0aGUgbnVtYmVyIG9mIGJpdHMgdXNlZCBjYW5ub3QgYWx3YXlzIGJlIHRoZSBzYW1lLCBi
dXQgaXQgY2FuIGJlCisgIC8vIGd1YXJhbnRlZWQgdG8gYmUgb2ZmIGJ5IGF0IG1vc3QgMS4gVGh1
cyB3ZSBydW4gdHdvIGxvb3BzLCBvbmUgd2l0aCBhCisgIC8vIHNtYWxsZXIgYml0LXdpZHRoIHNp
emUgKGBrU21hbGxXaWR0aGApIGFuZCBvbmUgd2l0aCBhIGxhcmdlciB3aWR0aCBzaXplCisgIC8v
IChzYXRpc2Z5aW5nIGBrTGFyZ2VXaWR0aCA9PSBrU21hbGxXaWR0aCArIDFgKS4gVGhlIGxvb3Bz
IGFyZSBydW4KKyAgLy8gYGtTbWFsbEl0ZXJzYCBhbmQgYGtMYXJnZUl0ZXJzYCB0aW1lcyByZXNw
ZWN0aXZlbHkgc3VjaAorICAvLyB0aGF0CisgIC8vCisgIC8vICAgIGBrVG90YWxXaWR0aCA9PSBr
U21hbGxJdGVycyAqIGtTbWFsbFdpZHRoCisgIC8vICAgICAgICAgICAgICAgICAgICArIGtMYXJn
ZUl0ZXJzICoga0xhcmdlV2lkdGhgCisgIC8vCisgIC8vIHdoZXJlIGBrVG90YWxXaWR0aGAgaXMg
dGhlIHRvdGFsIG51bWJlciBvZiBiaXRzIGluIGByZXN1bHRfdHlwZWAuCisgIC8vCisgIGNvbnN0
ZXhwciBzaXplX3Qga1RvdGFsV2lkdGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBl
Pjo6ZGlnaXRzOworICBjb25zdGV4cHIgc2l6ZV90IGtVcmJnV2lkdGggPSBOdW1CaXRzPFVSQkc+
KCk7CisgIGNvbnN0ZXhwciBzaXplX3Qga1RvdGFsSXRlcnMgPQorICAgICAga1RvdGFsV2lkdGgg
LyBrVXJiZ1dpZHRoICsgKGtUb3RhbFdpZHRoICUga1VyYmdXaWR0aCAhPSAwKTsKKyAgY29uc3Rl
eHByIHNpemVfdCBrU21hbGxXaWR0aCA9IGtUb3RhbFdpZHRoIC8ga1RvdGFsSXRlcnM7CisgIGNv
bnN0ZXhwciBzaXplX3Qga0xhcmdlV2lkdGggPSBrU21hbGxXaWR0aCArIDE7CisgIC8vCisgIC8v
IEJlY2F1c2UgYGtMYXJnZVdpZHRoID09IGtTbWFsbFdpZHRoICsgMWAsIGl0IGZvbGxvd3MgdGhh
dAorICAvLworICAvLyAgICAgYGtUb3RhbFdpZHRoID09IGtUb3RhbEl0ZXJzICoga1NtYWxsV2lk
dGggKyBrTGFyZ2VJdGVyc2AKKyAgLy8KKyAgLy8gYW5kIHRoZXJlZm9yZQorICAvLworICAvLyAg
ICAgYGtMYXJnZUl0ZXJzID09IGtUb3RhbFdpZHRoICUga1NtYWxsV2lkdGhgCisgIC8vCisgIC8v
IEludHVpdGl2ZWx5LCBlYWNoIGl0ZXJhdGlvbiB3aXRoIHRoZSBsYXJnZSB3aWR0aCBhY2NvdW50
cyBmb3Igb25lIHVuaXQKKyAgLy8gb2YgdGhlIHJlbWFpbmRlciB3aGVuIGBrVG90YWxXaWR0aGAg
aXMgZGl2aWRlZCBieSBga1NtYWxsV2lkdGhgLiBBcworICAvLyBtZW50aW9uZWQgYWJvdmUsIGlm
IHRoZSBVUkJHIHdpZHRoIGlzIGEgZGl2aXNvciBvZiBga1RvdGFsV2lkdGhgLCB0aGVuCisgIC8v
IHRoZXJlIHdvdWxkIGJlIG5vIG5lZWQgZm9yIGFueSBsYXJnZSBpdGVyYXRpb25zIChpLmUuLCBv
bmUgbG9vcCB3b3VsZAorICAvLyBzdWZmaWNlKSwgYW5kIGluZGVlZCwgaW4gdGhpcyBjYXNlLCBg
a0xhcmdlSXRlcnNgIHdvdWxkIGJlIHplcm8uCisgIGNvbnN0ZXhwciBzaXplX3Qga0xhcmdlSXRl
cnMgPSBrVG90YWxXaWR0aCAlIGtTbWFsbFdpZHRoOworICBjb25zdGV4cHIgc2l6ZV90IGtTbWFs
bEl0ZXJzID0KKyAgICAgIChrVG90YWxXaWR0aCAtIChrTGFyZ2VXaWR0aCAqIGtMYXJnZUl0ZXJz
KSkgLyBrU21hbGxXaWR0aDsKKworICBzdGF0aWNfYXNzZXJ0KAorICAgICAga1RvdGFsV2lkdGgg
PT0ga1NtYWxsSXRlcnMgKiBrU21hbGxXaWR0aCArIGtMYXJnZUl0ZXJzICoga0xhcmdlV2lkdGgs
CisgICAgICAiRXJyb3IgaW4gbG9vcGluZyBjb25zdGFudCBjYWxjdWxhdGlvbnMuIik7CisKKyAg
cmVzdWx0X3R5cGUgcyA9IDA7CisKKyAgY29uc3RleHByIHNpemVfdCBrU21hbGxTaGlmdCA9IGtT
bWFsbFdpZHRoICUga1RvdGFsV2lkdGg7CisgIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBrU21hbGxN
YXNrID0gTWFza0Zyb21TaGlmdChyZXN1bHRfdHlwZXtrU21hbGxTaGlmdH0pOworICBmb3IgKHNp
emVfdCBuID0gMDsgbiA8IGtTbWFsbEl0ZXJzOyArK24pIHsKKyAgICBzID0gKHMgPDwga1NtYWxs
U2hpZnQpICsKKyAgICAgICAgKHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPihQb3dlck9mVHdvVmFy
aWF0ZShnKSkgJiBrU21hbGxNYXNrKTsKKyAgfQorCisgIGNvbnN0ZXhwciBzaXplX3Qga0xhcmdl
U2hpZnQgPSBrTGFyZ2VXaWR0aCAlIGtUb3RhbFdpZHRoOworICBjb25zdGV4cHIgcmVzdWx0X3R5
cGUga0xhcmdlTWFzayA9IE1hc2tGcm9tU2hpZnQocmVzdWx0X3R5cGV7a0xhcmdlU2hpZnR9KTsK
KyAgZm9yIChzaXplX3QgbiA9IDA7IG4gPCBrTGFyZ2VJdGVyczsgKytuKSB7CisgICAgcyA9IChz
IDw8IGtMYXJnZVNoaWZ0KSArCisgICAgICAgIChzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oUG93
ZXJPZlR3b1ZhcmlhdGUoZykpICYga0xhcmdlTWFzayk7CisgIH0KKworICBzdGF0aWNfYXNzZXJ0
KAorICAgICAga0xhcmdlU2hpZnQgPT0ga1NtYWxsU2hpZnQgKyAxIHx8CisgICAgICAgICAgKGtM
YXJnZVNoaWZ0ID09IDAgJiYKKyAgICAgICAgICAga1NtYWxsU2hpZnQgPT0gc3RkOjpudW1lcmlj
X2xpbWl0czxyZXN1bHRfdHlwZT46OmRpZ2l0cyAtIDEpLAorICAgICAgIkVycm9yIGluIGxvb3Bp
bmcgY29uc3RhbnQgY2FsY3VsYXRpb25zIik7CisKKyAgcmV0dXJuIHM7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAg
Ly8gQUJTTF9SQU5ET01fSU5URVJOQUxfRkFTVF9VTklGT1JNX0JJVFNfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0c190ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
cmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYy
ZTgyNjg3ZGQ2YTY4NzlhMjA5ZWJkZjIzMTQ4NTUxZThiZDE0OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0X3VuaWZvcm1fYml0c190ZXN0LmNjCkBAIC0wLDAg
KzEsMjcyIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzLmgiCisKKyNpbmNs
dWRlIDxyYW5kb20+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBJbnRUeXBlPgorY2xhc3MgRmFzdFVuaWZvcm1CaXRzVHlwZWRUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKwordXNpbmcgSW50VHlwZXMgPSA6OnRlc3Rpbmc6OlR5
cGVzPHVpbnQ4X3QsIHVpbnQxNl90LCB1aW50MzJfdCwgdWludDY0X3Q+OworCitUWVBFRF9URVNU
X1NVSVRFKEZhc3RVbmlmb3JtQml0c1R5cGVkVGVzdCwgSW50VHlwZXMpOworCitUWVBFRF9URVNU
KEZhc3RVbmlmb3JtQml0c1R5cGVkVGVzdCwgQmFzaWNUZXN0KSB7CisgIHVzaW5nIExpbWl0cyA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjsKKyAgdXNpbmcgRmFzdEJpdHMgPSBGYXN0
VW5pZm9ybUJpdHM8VHlwZVBhcmFtPjsKKworICBFWFBFQ1RfRVEoMCwgRmFzdEJpdHM6Om1pbigp
KTsKKyAgRVhQRUNUX0VRKExpbWl0czo6bWF4KCksIEZhc3RCaXRzOjptYXgoKSk7CisKKyAgY29u
c3RleHByIGludCBrSXRlcnMgPSAxMDAwMDsKKyAgc3RkOjpyYW5kb21fZGV2aWNlIHJkOworICBz
dGQ6Om10MTk5MzcgZ2VuKHJkKCkpOworICBGYXN0Qml0cyBmYXN0OworICBmb3IgKGludCBpID0g
MDsgaSA8IGtJdGVyczsgaSsrKSB7CisgICAgY29uc3QgYXV0byB2ID0gZmFzdChnZW4pOworICAg
IEVYUEVDVF9MRSh2LCBGYXN0Qml0czo6bWF4KCkpOworICAgIEVYUEVDVF9HRSh2LCBGYXN0Qml0
czo6bWluKCkpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVSW50VHlwZSwgVUludFR5
cGUgTG8sIFVJbnRUeXBlIEhpLCBVSW50VHlwZSBWYWwgPSBMbz4KK3N0cnVjdCBGYWtlVXJiZyB7
CisgIHVzaW5nIHJlc3VsdF90eXBlID0gVUludFR5cGU7CisKKyAgc3RhdGljIGNvbnN0ZXhwciBy
ZXN1bHRfdHlwZShtYXgpKCkgeyByZXR1cm4gSGk7IH0KKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1
bHRfdHlwZShtaW4pKCkgeyByZXR1cm4gTG87IH0KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgp
IHsgcmV0dXJuIFZhbDsgfQorfTsKKwordXNpbmcgVXJuZ09kZGJpdHMgPSBGYWtlVXJiZzx1aW50
OF90LCAxLCAweGZlLCAweDczPjsKK3VzaW5nIFVybmc0Yml0cyA9IEZha2VVcmJnPHVpbnQ4X3Qs
IDEsIDB4MTAsIDI+OwordXNpbmcgVXJuZzMxYml0cyA9IEZha2VVcmJnPHVpbnQzMl90LCAxLCAw
eGZmZmZmZmZlLCAweDYwMDcwZjAzPjsKK3VzaW5nIFVybmczMmJpdHMgPSBGYWtlVXJiZzx1aW50
MzJfdCwgMCwgMHhmZmZmZmZmZiwgMHg3NDAxMGYwMT47CisKK1RFU1QoRmFzdFVuaWZvcm1CaXRz
VGVzdCwgSXNQb3dlck9mVHdvT3JaZXJvKSB7CisgIEVYUEVDVF9UUlVFKElzUG93ZXJPZlR3b09y
WmVybyh1aW50OF90ezB9KSk7CisgIEVYUEVDVF9UUlVFKElzUG93ZXJPZlR3b09yWmVybyh1aW50
OF90ezF9KSk7CisgIEVYUEVDVF9UUlVFKElzUG93ZXJPZlR3b09yWmVybyh1aW50OF90ezJ9KSk7
CisgIEVYUEVDVF9GQUxTRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDhfdHszfSkpOworICBFWFBF
Q1RfVFJVRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDhfdHsxNn0pKTsKKyAgRVhQRUNUX0ZBTFNF
KElzUG93ZXJPZlR3b09yWmVybyh1aW50OF90ezE3fSkpOworICBFWFBFQ1RfRkFMU0UoSXNQb3dl
ck9mVHdvT3JaZXJvKChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgpKCkpKTsKKwor
ICBFWFBFQ1RfVFJVRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDE2X3R7MH0pKTsKKyAgRVhQRUNU
X1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQxNl90ezF9KSk7CisgIEVYUEVDVF9UUlVFKElz
UG93ZXJPZlR3b09yWmVybyh1aW50MTZfdHsyfSkpOworICBFWFBFQ1RfRkFMU0UoSXNQb3dlck9m
VHdvT3JaZXJvKHVpbnQxNl90ezN9KSk7CisgIEVYUEVDVF9UUlVFKElzUG93ZXJPZlR3b09yWmVy
byh1aW50MTZfdHsxNn0pKTsKKyAgRVhQRUNUX0ZBTFNFKElzUG93ZXJPZlR3b09yWmVybyh1aW50
MTZfdHsxN30pKTsKKyAgRVhQRUNUX0ZBTFNFKElzUG93ZXJPZlR3b09yWmVybygoc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MTZfdD46Om1heCkoKSkpOworCisgIEVYUEVDVF9UUlVFKElzUG93ZXJP
ZlR3b09yWmVybyh1aW50MzJfdHswfSkpOworICBFWFBFQ1RfVFJVRShJc1Bvd2VyT2ZUd29Pclpl
cm8odWludDMyX3R7MX0pKTsKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQz
Ml90ezJ9KSk7CisgIEVYUEVDVF9GQUxTRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDMyX3R7M30p
KTsKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQzMl90ezMyfSkpOworICBF
WFBFQ1RfRkFMU0UoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQzMl90ezE3fSkpOworICBFWFBFQ1Rf
RkFMU0UoSXNQb3dlck9mVHdvT3JaZXJvKChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6
bWF4KSgpKSk7CisKKyAgRVhQRUNUX1RSVUUoSXNQb3dlck9mVHdvT3JaZXJvKHVpbnQ2NF90ezB9
KSk7CisgIEVYUEVDVF9UUlVFKElzUG93ZXJPZlR3b09yWmVybyh1aW50NjRfdHsxfSkpOworICBF
WFBFQ1RfVFJVRShJc1Bvd2VyT2ZUd29Pclplcm8odWludDY0X3R7Mn0pKTsKKyAgRVhQRUNUX0ZB
TFNFKElzUG93ZXJPZlR3b09yWmVybyh1aW50NjRfdHszfSkpOworICBFWFBFQ1RfVFJVRShJc1Bv
d2VyT2ZUd29Pclplcm8odWludDY0X3R7NjR9KSk7CisgIEVYUEVDVF9GQUxTRShJc1Bvd2VyT2ZU
d29Pclplcm8odWludDY0X3R7MTd9KSk7CisgIEVYUEVDVF9GQUxTRShJc1Bvd2VyT2ZUd29Pclpl
cm8oKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgpKCkpKTsKK30KKworVEVTVChG
YXN0VW5pZm9ybUJpdHNUZXN0LCBJbnRlZ2VyTG9nMikgeworICBFWFBFQ1RfRVEoSW50ZWdlckxv
ZzIodWludDE2X3R7MH0pLCAwKTsKKyAgRVhQRUNUX0VRKEludGVnZXJMb2cyKHVpbnQxNl90ezF9
KSwgMCk7CisgIEVYUEVDVF9FUShJbnRlZ2VyTG9nMih1aW50MTZfdHsyfSksIDEpOworICBFWFBF
Q1RfRVEoSW50ZWdlckxvZzIodWludDE2X3R7M30pLCAxKTsKKyAgRVhQRUNUX0VRKEludGVnZXJM
b2cyKHVpbnQxNl90ezR9KSwgMik7CisgIEVYUEVDVF9FUShJbnRlZ2VyTG9nMih1aW50MTZfdHs1
fSksIDIpOworICBFWFBFQ1RfRVEoSW50ZWdlckxvZzIoc3RkOjpudW1lcmljX2xpbWl0czx1aW50
NjRfdD46Om1heCgpKSwgNjMpOworfQorCitURVNUKEZhc3RVbmlmb3JtQml0c1Rlc3QsIFJhbmdl
U2l6ZSkgeworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90LCAwLCAzPj4o
KSksIDQpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90LCAyLCAyPj4o
KSksIDEpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90LCAyLCA1Pj4o
KSksIDQpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90LCAyLCA2Pj4o
KSksIDUpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90LCAyLCAxMD4+
KCkpLCA5KTsKKyAgRVhQRUNUX0VRKAorICAgICAgKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90
LCAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKT4+KCkpLAorICAgICAgMCk7
CisKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDE2X3QsIDAsIDM+PigpKSwg
NCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQxNl90LCAyLCAyPj4oKSks
IDEpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MTZfdCwgMiwgNT4+KCkp
LCA0KTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDE2X3QsIDIsIDY+Pigp
KSwgNSk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQxNl90LCAxMDAwLCAx
MDE3Pj4oKSksIDE4KTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8CisgICAgICAgICAgICAgICAg
RmFrZVVyYmc8dWludDE2X3QsIDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgo
KT4+KCkpLAorICAgICAgICAgICAgMCk7CisKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVy
Ymc8dWludDMyX3QsIDAsIDM+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VV
cmJnPHVpbnQzMl90LCAyLCAyPj4oKSksIDEpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtl
VXJiZzx1aW50MzJfdCwgMiwgNT4+KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFr
ZVVyYmc8dWludDMyX3QsIDIsIDY+PigpKSwgNSk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZh
a2VVcmJnPHVpbnQzMl90LCAxMDAwLCAxMDE3Pj4oKSksIDE4KTsKKyAgRVhQRUNUX0VRKChSYW5n
ZVNpemU8RmFrZVVyYmc8dWludDMyX3QsIDAsIDB4ZmZmZmZmZmY+PigpKSwgMCk7CisgIEVYUEVD
VF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAxLCAweGZmZmZmZmZmPj4oKSksIDB4
ZmZmZmZmZmYpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MzJfdCwgMSwg
MHhmZmZmZmZmZT4+KCkpLCAweGZmZmZmZmZlKTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFr
ZVVyYmc8dWludDMyX3QsIDIsIDB4ZmZmZmZmZmU+PigpKSwgMHhmZmZmZmZmZCk7CisgIEVYUEVD
VF9FUSgoUmFuZ2VTaXplPAorICAgICAgICAgICAgICAgIEZha2VVcmJnPHVpbnQzMl90LCAwLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk+PigpKSwKKyAgICAgICAgICAgIDAp
OworCisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAwLCAzPj4oKSks
IDQpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMiwgMj4+KCkp
LCAxKTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDIsIDU+Pigp
KSwgNCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAyLCA2Pj4o
KSksIDUpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMTAwMCwg
MTAxNz4+KCkpLCAxOCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90
LCAwLCAweGZmZmZmZmZmPj4oKSksIDB4MTAwMDAwMDAwdWxsKTsKKyAgRVhQRUNUX0VRKChSYW5n
ZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDEsIDB4ZmZmZmZmZmY+PigpKSwgMHhmZmZmZmZmZnVs
bCk7CisgIEVYUEVDVF9FUSgoUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAxLCAweGZmZmZm
ZmZlPj4oKSksIDB4ZmZmZmZmZmV1bGwpOworICBFWFBFQ1RfRVEoKFJhbmdlU2l6ZTxGYWtlVXJi
Zzx1aW50NjRfdCwgMiwgMHhmZmZmZmZmZT4+KCkpLCAweGZmZmZmZmZkdWxsKTsKKyAgRVhQRUNU
X0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDAsIDB4ZmZmZmZmZmZmZmZmZmZmZnVs
bD4+KCkpLCAwdWxsKTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3Qs
IDEsIDB4ZmZmZmZmZmZmZmZmZmZmZnVsbD4+KCkpLAorICAgICAgICAgICAgMHhmZmZmZmZmZmZm
ZmZmZmZmdWxsKTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDEs
IDB4ZmZmZmZmZmZmZmZmZmZmZXVsbD4+KCkpLAorICAgICAgICAgICAgMHhmZmZmZmZmZmZmZmZm
ZmZldWxsKTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDIsIDB4
ZmZmZmZmZmZmZmZmZmZmZXVsbD4+KCkpLAorICAgICAgICAgICAgMHhmZmZmZmZmZmZmZmZmZmZk
dWxsKTsKKyAgRVhQRUNUX0VRKChSYW5nZVNpemU8CisgICAgICAgICAgICAgICAgRmFrZVVyYmc8
dWludDY0X3QsIDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKT4+KCkpLAor
ICAgICAgICAgICAgMCk7Cit9CisKK1RFU1QoRmFzdFVuaWZvcm1CaXRzVGVzdCwgUG93ZXJPZlR3
b1N1YlJhbmdlU2l6ZSkgeworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFr
ZVVyYmc8dWludDhfdCwgMCwgMz4+KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3Vi
UmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ4X3QsIDIsIDI+PigpKSwgMSk7CisgIEVYUEVDVF9FUSgo
UG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50OF90LCAyLCA1Pj4oKSksIDQpOwor
ICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDhfdCwgMiwg
Nj4+KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJn
PHVpbnQ4X3QsIDIsIDEwPj4oKSksIDgpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5n
ZVNpemU8CisgICAgICAgICAgICAgICAgRmFrZVVyYmc8dWludDhfdCwgMCwgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50OF90Pjo6bWF4KCk+PigpKSwKKyAgICAgICAgICAgIDApOworCisgIEVYUEVD
VF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MTZfdCwgMCwgMz4+KCkp
LCA0KTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQx
Nl90LCAyLCAyPj4oKSksIDEpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8
RmFrZVVyYmc8dWludDE2X3QsIDIsIDU+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3
b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MTZfdCwgMiwgNj4+KCkpLCA0KTsKKyAgRVhQRUNU
X0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQxNl90LCAxMDAwLCAxMDE3
Pj4oKSksIDE2KTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPAorICAgICAg
ICAgICAgICAgIEZha2VVcmJnPHVpbnQxNl90LCAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQx
Nl90Pjo6bWF4KCk+PigpKSwKKyAgICAgICAgICAgIDApOworCisgIEVYUEVDVF9FUSgoUG93ZXJP
ZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50MzJfdCwgMCwgMz4+KCkpLCA0KTsKKyAgRVhQ
RUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAyLCAyPj4o
KSksIDEpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWlu
dDMyX3QsIDIsIDU+PigpKSwgNCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6
ZTxGYWtlVXJiZzx1aW50MzJfdCwgMiwgNj4+KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChQb3dlck9m
VHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAxMDAwLCAxMDE3Pj4oKSksIDE2KTsK
KyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQzMl90LCAw
LCAweGZmZmZmZmZmPj4oKSksIDApOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNp
emU8RmFrZVVyYmc8dWludDMyX3QsIDEsIDB4ZmZmZmZmZmY+PigpKSwKKyAgICAgICAgICAgIDB4
ODAwMDAwMDApOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8
dWludDMyX3QsIDEsIDB4ZmZmZmZmZmU+PigpKSwKKyAgICAgICAgICAgIDB4ODAwMDAwMDApOwor
ICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8CisgICAgICAgICAgICAgICAgRmFr
ZVVyYmc8dWludDMyX3QsIDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKT4+
KCkpLAorICAgICAgICAgICAgMCk7CisKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VT
aXplPEZha2VVcmJnPHVpbnQ2NF90LCAwLCAzPj4oKSksIDQpOworICBFWFBFQ1RfRVEoKFBvd2Vy
T2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDIsIDI+PigpKSwgMSk7CisgIEVY
UEVDVF9FUSgoUG93ZXJPZlR3b1N1YlJhbmdlU2l6ZTxGYWtlVXJiZzx1aW50NjRfdCwgMiwgNT4+
KCkpLCA0KTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVp
bnQ2NF90LCAyLCA2Pj4oKSksIDQpOworICBFWFBFQ1RfRVEoKFBvd2VyT2ZUd29TdWJSYW5nZVNp
emU8RmFrZVVyYmc8dWludDY0X3QsIDEwMDAsIDEwMTc+PigpKSwgMTYpOworICBFWFBFQ1RfRVEo
KFBvd2VyT2ZUd29TdWJSYW5nZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDAsIDB4ZmZmZmZmZmY+
PigpKSwKKyAgICAgICAgICAgIDB4MTAwMDAwMDAwdWxsKTsKKyAgRVhQRUNUX0VRKChQb3dlck9m
VHdvU3ViUmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAxLCAweGZmZmZmZmZmPj4oKSksCisg
ICAgICAgICAgICAweDgwMDAwMDAwdWxsKTsKKyAgRVhQRUNUX0VRKChQb3dlck9mVHdvU3ViUmFu
Z2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAxLCAweGZmZmZmZmZlPj4oKSksCisgICAgICAgICAg
ICAweDgwMDAwMDAwdWxsKTsKKyAgRVhQRUNUX0VRKAorICAgICAgKFBvd2VyT2ZUd29TdWJSYW5n
ZVNpemU8RmFrZVVyYmc8dWludDY0X3QsIDAsIDB4ZmZmZmZmZmZmZmZmZmZmZnVsbD4+KCkpLAor
ICAgICAgMCk7CisgIEVYUEVDVF9FUSgKKyAgICAgIChQb3dlck9mVHdvU3ViUmFuZ2VTaXplPEZh
a2VVcmJnPHVpbnQ2NF90LCAxLCAweGZmZmZmZmZmZmZmZmZmZmZ1bGw+PigpKSwKKyAgICAgIDB4
ODAwMDAwMDAwMDAwMDAwMHVsbCk7CisgIEVYUEVDVF9FUSgKKyAgICAgIChQb3dlck9mVHdvU3Vi
UmFuZ2VTaXplPEZha2VVcmJnPHVpbnQ2NF90LCAxLCAweGZmZmZmZmZmZmZmZmZmZmV1bGw+Pigp
KSwKKyAgICAgIDB4ODAwMDAwMDAwMDAwMDAwMHVsbCk7CisgIEVYUEVDVF9FUSgoUG93ZXJPZlR3
b1N1YlJhbmdlU2l6ZTwKKyAgICAgICAgICAgICAgICBGYWtlVXJiZzx1aW50NjRfdCwgMCwgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpPj4oKSksCisgICAgICAgICAgICAwKTsK
K30KKworVEVTVChGYXN0VW5pZm9ybUJpdHNUZXN0LCBVcm5nNF9WYXJpb3VzT3V0cHV0cykgewor
ICAvLyBUZXN0cyB0aGF0IGhvdyB2YWx1ZXMgYXJlIGNvbXBvc2VkOyB0aGUgc2luZ2xlLWJpdCBk
ZWx0YXMgc2hvdWxkIGJlIHNwcmVhZAorICAvLyBhY3Jvc3MgZWFjaCBpbnZvY2F0aW9uLgorICBV
cm5nNGJpdHMgdXJuZzQ7CisgIFVybmczMWJpdHMgdXJuZzMxOworICBVcm5nMzJiaXRzIHVybmcz
MjsKKworICAvLyA4LWJpdCB0eXBlcworICB7CisgICAgRmFzdFVuaWZvcm1CaXRzPHVpbnQ4X3Q+
IGZhc3Q4OworICAgIEVYUEVDVF9FUSgweDExLCBmYXN0OCh1cm5nNCkpOworICAgIEVYUEVDVF9F
USgweDIsIGZhc3Q4KHVybmczMSkpOworICAgIEVYUEVDVF9FUSgweDEsIGZhc3Q4KHVybmczMikp
OworICB9CisKKyAgLy8gMTYtYml0IHR5cGVzCisgIHsKKyAgICBGYXN0VW5pZm9ybUJpdHM8dWlu
dDE2X3Q+IGZhc3QxNjsKKyAgICBFWFBFQ1RfRVEoMHgxMTExLCBmYXN0MTYodXJuZzQpKTsKKyAg
ICBFWFBFQ1RfRVEoMHhmMDIsIGZhc3QxNih1cm5nMzEpKTsKKyAgICBFWFBFQ1RfRVEoMHhmMDEs
IGZhc3QxNih1cm5nMzIpKTsKKyAgfQorCisgIC8vIDMyLWJpdCB0eXBlcworICB7CisgICAgRmFz
dFVuaWZvcm1CaXRzPHVpbnQzMl90PiBmYXN0MzI7CisgICAgRVhQRUNUX0VRKDB4MTExMTExMTEs
IGZhc3QzMih1cm5nNCkpOworICAgIEVYUEVDVF9FUSgweDBmMDIwZjAyLCBmYXN0MzIodXJuZzMx
KSk7CisgICAgRVhQRUNUX0VRKDB4NzQwMTBmMDEsIGZhc3QzMih1cm5nMzIpKTsKKyAgfQorCisg
IC8vIDY0LWJpdCB0eXBlcworICB7CisgICAgRmFzdFVuaWZvcm1CaXRzPHVpbnQ2NF90PiBmYXN0
NjQ7CisgICAgRVhQRUNUX0VRKDB4MTExMTExMTExMTExMTExMSwgZmFzdDY0KHVybmc0KSk7Cisg
ICAgRVhQRUNUX0VRKDB4Mzg3ODExYzNjMDg3MGYwMiwgZmFzdDY0KHVybmczMSkpOworICAgIEVY
UEVDVF9FUSgweDc0MDEwZjAxNzQwMTBmMDEsIGZhc3Q2NCh1cm5nMzIpKTsKKyAgfQorfQorCitU
RVNUKEZhc3RVbmlmb3JtQml0c1Rlc3QsIFVSQkczMmJpdFJlZ3Jlc3Npb24pIHsKKyAgLy8gVmFs
aWRhdGUgd2l0aCBkZXRlcm1pbmlzdGljIDMyLWJpdCBzdGQ6Om1pbnN0ZF9yYW5kCisgIC8vIHRv
IGVuc3VyZSB0aGF0IG9wZXJhdG9yKCkgcGVyZm9ybXMgYXMgZXhwZWN0ZWQuCisgIHN0ZDo6bWlu
c3RkX3JhbmQgZ2VuKDEpOworICBGYXN0VW5pZm9ybUJpdHM8dWludDY0X3Q+IGZhc3Q2NDsKKwor
ICBFWFBFQ1RfRVEoMHgwNWU0NzA5NWY4NDdjMTIydWxsLCBmYXN0NjQoZ2VuKSk7CisgIEVYUEVD
VF9FUSgweDhmODJjMWJhMzBiNjRkMjJ1bGwsIGZhc3Q2NChnZW4pKTsKKyAgRVhQRUNUX0VRKDB4
M2I5NzFhMzU1ODE1NTAzOXVsbCwgZmFzdDY0KGdlbikpOworfQorCit9ICAvLyBuYW1lc3BhY2UK
K30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1hdGguaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9mYXN0bWF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiZDE4NDEwNTM5OTM3ZjhkMTEyZjU4
MTgyZDdkMDY3YTM3NWMxYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJu
YWwvZmFzdG1hdGguaApAQCAtMCwwICsxLDcyIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJz
ZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9GQVNUTUFUSF9I
XworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9GQVNUTUFUSF9IXworCisvLyBUaGlzIGZp
bGUgY29udGFpbnMgZmFzdCBtYXRoIGZ1bmN0aW9ucyAoYml0d2lzZSBvcHMgYXMgd2VsbCBhcyBz
b21lIG90aGVycykKKy8vIHdoaWNoIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHZhcmlv
dXMgYWJzbCByYW5kb20gbnVtYmVyIGRpc3RyaWJ1dGlvbnMuCisKKyNpbmNsdWRlIDxjYXNzZXJ0
PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvaW50ZXJuYWwvYml0cy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFu
ZG9tX2ludGVybmFsIHsKKworLy8gUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGJp
dCBzZXQuCitpbmxpbmUgaW50IExlYWRpbmdTZXRCaXQodWludDY0X3QgbikgeworICByZXR1cm4g
NjQgLSBiYXNlX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0KG4pOworfQorCisvLyBDb21w
dXRlIGxvZzIobikgdXNpbmcgaW50ZWdlciBvcGVyYXRpb25zLgorLy8gV2hpbGUgc3RkOjpsb2cy
IGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBzdGQ6OmxvZyhuKSAvIHN0ZDo6bG9nKDIpLCBmb3IKKy8v
IHZlcnkgbGFyZ2UgbnVtYmVycy0tdGhvc2UgY2xvc2UgdG8gc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpIC0gMiwKKy8vIGZvciBpbnN0YW5jZS0tc3RkOjpsb2cyIHJvdW5kcyB1
cCByYXRoZXIgdGhhbiBkb3duLCB3aGljaCBpbnRyb2R1Y2VzCisvLyBkZWZpbml0ZSBza2V3IGlu
IHRoZSByZXN1bHRzLgoraW5saW5lIGludCBJbnRMb2cyRmxvb3IodWludDY0X3QgbikgeworICBy
ZXR1cm4gKG4gPD0gMSkgPyAwIDogKDYzIC0gYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVy
b3M2NChuKSk7Cit9CitpbmxpbmUgaW50IEludExvZzJDZWlsKHVpbnQ2NF90IG4pIHsKKyAgcmV0
dXJuIChuIDw9IDEpID8gMCA6ICg2NCAtIGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9z
NjQobiAtIDEpKTsKK30KKworaW5saW5lIGRvdWJsZSBTdGlybGluZ0xvZ0ZhY3RvcmlhbChkb3Vi
bGUgbikgeworICBhc3NlcnQobiA+PSAxKTsKKyAgLy8gVXNpbmcgU3RpcmxpbmcncyBhcHByb3hp
bWF0aW9uLgorICBjb25zdGV4cHIgZG91YmxlIGtMb2cyUEkgPSAxLjgzNzg3NzA2NjQwOTM0NTQ4
MzU2OworICBjb25zdCBkb3VibGUgbG9nbiA9IHN0ZDo6bG9nKG4pOworICBjb25zdCBkb3VibGUg
bmludiA9IDEuMCAvIHN0YXRpY19jYXN0PGRvdWJsZT4obik7CisgIHJldHVybiBuICogbG9nbiAt
IG4gKyAwLjUgKiAoa0xvZzJQSSArIGxvZ24pICsgKDEuMCAvIDEyLjApICogbmludiAtCisgICAg
ICAgICAoMS4wIC8gMzYwLjApICogbmludiAqIG5pbnYgKiBuaW52OworfQorCisvLyBSb3RhdGUg
dmFsdWUgcmlnaHQuCisvLworLy8gV2Ugb25seSBpbXBsZW1lbnQgdGhlIHVpbnQzMl90IC8gdWlu
dDY0X3QgdmVyc2lvbnMgYmVjYXVzZQorLy8gMSkgdGhvc2UgYXJlIHRoZSBvbmx5IG9uZXMgd2Ug
dXNlLCBhbmQKKy8vIDIpIHRob3NlIGFyZSB0aGUgb25seSBvbmVzIHdoZXJlIGNsYW5nIGRldGVj
dHMgdGhlIHJvdGF0ZSBpZGlvbSBjb3JyZWN0bHkuCitpbmxpbmUgY29uc3RleHByIHVpbnQzMl90
IHJvdHIodWludDMyX3QgdmFsdWUsIHVpbnQ4X3QgYml0cykgeworICByZXR1cm4gKHZhbHVlID4+
IChiaXRzICYgMzEpKSB8ICh2YWx1ZSA8PCAoKC1iaXRzKSAmIDMxKSk7Cit9CitpbmxpbmUgY29u
c3RleHByIHVpbnQ2NF90IHJvdHIodWludDY0X3QgdmFsdWUsIHVpbnQ4X3QgYml0cykgeworICBy
ZXR1cm4gKHZhbHVlID4+IChiaXRzICYgNjMpKSB8ICh2YWx1ZSA8PCAoKC1iaXRzKSAmIDYzKSk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfRkFTVE1BVEhfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9mYXN0bWF0aF90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL2Zhc3RtYXRoX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU4NTljMjVkZTRjZGQx
NjY3MzhiMGU4NjZmY2JiMTI3M2I0NzUwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9mYXN0bWF0aF90ZXN0LmNjCkBAIC0wLDAgKzEsMTEwIEBACisvLyBDb3B5cmln
aHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2lu
dGVybmFsL2Zhc3RtYXRoLmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaWYgZGVm
aW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgZGVmaW5lZChfX0VNU0NSSVBURU5fXykKKy8vIE5B
Q0wgaGFzIGEgbGVzcyBhY2N1cmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6OmxvZzIgdGhhbiBt
b3N0IG9mCisvLyB0aGUgb3RoZXIgcGxhdGZvcm1zLiBGb3Igc29tZSB2YWx1ZXMgd2hpY2ggc2hv
dWxkIGhhdmUgaW50ZWdyYWwgcmVzdWx0cywKKy8vIHNvbWV0aW1lcyBOQUNMIHJldHVybnMgc2xp
Z2h0bHkgbGFyZ2VyIHZhbHVlcy4KKy8vCisvLyBUaGUgTVVTTCBsaWJjIHVzZWQgYnkgZW1zY3Jp
cHRlbiBhbHNvIGhhcyBhIHNpbWlsYXIgYnVnLgorI2RlZmluZSBBQlNMX1JBTkRPTV9JTkFDQ1VS
QVRFX0xPRzIKKyNlbmRpZgorCituYW1lc3BhY2UgeworCitURVNUKERpc3RyaWJ1dGlvbkltcGxU
ZXN0LCBMZWFkaW5nU2V0Qml0KSB7CisgIHVzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6TGVh
ZGluZ1NldEJpdDsKKyAgY29uc3RleHByIHVpbnQ2NF90IGtaZXJvID0gMDsKKyAgRVhQRUNUX0VR
KDAsIExlYWRpbmdTZXRCaXQoa1plcm8pKTsKKyAgRVhQRUNUX0VRKDY0LCBMZWFkaW5nU2V0Qml0
KH5rWmVybykpOworCisgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCA2NDsgaW5kZXgrKykg
eworICAgIHVpbnQ2NF90IHggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwgaW5kZXg7Cisg
ICAgRVhQRUNUX0VRKGluZGV4ICsgMSwgTGVhZGluZ1NldEJpdCh4KSkgPDwgaW5kZXg7CisgICAg
RVhQRUNUX0VRKGluZGV4ICsgMSwgTGVhZGluZ1NldEJpdCh4ICsgeCAtIDEpKSA8PCBpbmRleDsK
KyAgfQorfQorCitURVNUKEZhc3RNYXRoVGVzdCwgSW50TG9nMkZsb29yVGVzdCkgeworICB1c2lu
ZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkludExvZzJGbG9vcjsKKyAgY29uc3RleHByIHVpbnQ2
NF90IGtaZXJvID0gMDsKKyAgRVhQRUNUX0VRKDAsIEludExvZzJGbG9vcigwKSk7ICAvLyBib3Vu
ZGFyeS4gcmV0dXJuIDAuCisgIEVYUEVDVF9FUSgwLCBJbnRMb2cyRmxvb3IoMSkpOworICBFWFBF
Q1RfRVEoMSwgSW50TG9nMkZsb29yKDIpKTsKKyAgRVhQRUNUX0VRKDYzLCBJbnRMb2cyRmxvb3Io
fmtaZXJvKSk7CisKKyAgLy8gQSBib3VuZGFyeSBjYXNlOiBDb252ZXJ0aW5nIDB4ZmZmZmZmZmZm
ZmZmZmZmZiByZXF1aXJlcyA+IDUzCisgIC8vIGJpdHMgb2YgcHJlY2lzaW9uLCBzbyB0aGUgY29u
dmVyc2lvbiB0byBkb3VibGUgcm91bmRzIHVwLAorICAvLyBhbmQgdGhlIHJlc3VsdCBvZiBzdGQ6
OmxvZzIoeCkgPiBJbnRMb2cyRmxvb3IoeCkuCisgIEVYUEVDVF9MVChJbnRMb2cyRmxvb3Iofmta
ZXJvKSwgc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmxvZzIofmtaZXJvKSkpOworCisgIGZvciAoaW50
IGkgPSAwOyBpIDwgNjQ7IGkrKykgeworICAgIGNvbnN0IHVpbnQ2NF90IGlfcG93XzIgPSBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwgaTsKKyAgICBFWFBFQ1RfRVEoaSwgSW50TG9nMkZsb29y
KGlfcG93XzIpKTsKKyAgICBFWFBFQ1RfRVEoaSwgc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmxvZzIo
aV9wb3dfMikpKTsKKworICAgIHVpbnQ2NF90IHkgPSBpX3Bvd18yOworICAgIGZvciAoaW50IGog
PSBpIC0gMTsgaiA+IDA7IC0taikgeworICAgICAgeSA9IHkgfCAoaV9wb3dfMiA+PiBqKTsKKyAg
ICAgIEVYUEVDVF9FUShpLCBJbnRMb2cyRmxvb3IoeSkpOworICAgIH0KKyAgfQorfQorCitURVNU
KEZhc3RNYXRoVGVzdCwgSW50TG9nMkNlaWxUZXN0KSB7CisgIHVzaW5nIGFic2w6OnJhbmRvbV9p
bnRlcm5hbDo6SW50TG9nMkNlaWw7CisgIGNvbnN0ZXhwciB1aW50NjRfdCBrWmVybyA9IDA7Cisg
IEVYUEVDVF9FUSgwLCBJbnRMb2cyQ2VpbCgwKSk7ICAvLyBib3VuZGFyeS4gcmV0dXJuIDAuCisg
IEVYUEVDVF9FUSgwLCBJbnRMb2cyQ2VpbCgxKSk7CisgIEVYUEVDVF9FUSgxLCBJbnRMb2cyQ2Vp
bCgyKSk7CisgIEVYUEVDVF9FUSg2NCwgSW50TG9nMkNlaWwofmtaZXJvKSk7CisKKyAgLy8gQSBi
b3VuZGFyeSBjYXNlOiBDb252ZXJ0aW5nIDB4ZmZmZmZmZmZmZmZmZmZmZiByZXF1aXJlcyA+IDUz
CisgIC8vIGJpdHMgb2YgcHJlY2lzaW9uLCBzbyB0aGUgY29udmVyc2lvbiB0byBkb3VibGUgcm91
bmRzIHVwLAorICAvLyBhbmQgdGhlIHJlc3VsdCBvZiBzdGQ6OmxvZzIoeCkgPiBJbnRMb2cyRmxv
b3IoeCkuCisgIEVYUEVDVF9MRShJbnRMb2cyQ2VpbCh+a1plcm8pLCBzdGF0aWNfY2FzdDxpbnQ+
KHN0ZDo6bG9nMih+a1plcm8pKSk7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA2NDsgaSsrKSB7
CisgICAgY29uc3QgdWludDY0X3QgaV9wb3dfMiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSA8
PCBpOworICAgIEVYUEVDVF9FUShpLCBJbnRMb2cyQ2VpbChpX3Bvd18yKSk7CisjaWZuZGVmIEFC
U0xfUkFORE9NX0lOQUNDVVJBVEVfTE9HMgorICAgIEVYUEVDVF9FUShpLCBzdGF0aWNfY2FzdDxp
bnQ+KHN0ZDo6Y2VpbChzdGQ6OmxvZzIoaV9wb3dfMikpKSk7CisjZW5kaWYKKworICAgIHVpbnQ2
NF90IHkgPSBpX3Bvd18yOworICAgIGZvciAoaW50IGogPSBpIC0gMTsgaiA+IDA7IC0taikgewor
ICAgICAgeSA9IHkgfCAoaV9wb3dfMiA+PiBqKTsKKyAgICAgIEVYUEVDVF9FUShpICsgMSwgSW50
TG9nMkNlaWwoeSkpOworICAgIH0KKyAgfQorfQorCitURVNUKEZhc3RNYXRoVGVzdCwgU3Rpcmxp
bmdMb2dGYWN0b3JpYWwpIHsKKyAgdXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpTdGlybGlu
Z0xvZ0ZhY3RvcmlhbDsKKworICBFWFBFQ1RfTkVBUihTdGlybGluZ0xvZ0ZhY3RvcmlhbCgxLjAp
LCAwLCAxZS0zKTsKKyAgRVhQRUNUX05FQVIoU3RpcmxpbmdMb2dGYWN0b3JpYWwoMS41MCksIDAu
Mjg0NjgzLCAxZS0zKTsKKyAgRVhQRUNUX05FQVIoU3RpcmxpbmdMb2dGYWN0b3JpYWwoMi4wKSwg
MC42OTMxNDcxODA1NiwgMWUtNCk7CisKKyAgZm9yIChpbnQgaSA9IDI7IGkgPCA1MDsgaSsrKSB7
CisgICAgZG91YmxlIGQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGkpOworICAgIEVYUEVDVF9ORUFS
KFN0aXJsaW5nTG9nRmFjdG9yaWFsKGQpLCBzdGQ6OmxnYW1tYShkICsgMSksIDNlLTUpOworICB9
Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFs
L2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9nZW50YWJsZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJu
YWwvZ2F1c3NpYW5fZGlzdHJpYnV0aW9uX2dlbnRhYmxlcy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmEyM2Ni
MmY5MWY1MjM0ZWMxMDczNTQwMjdkNzFhYWVhNTM1MTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9nZW50YWJsZXMuY2MKQEAg
LTAsMCArMSwxNDUgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
CisvLyBHZW5lcmF0ZXMgZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmNjCisvLworLy8gJCBibGF6ZSBy
dW4gOmdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9nZW50YWJsZXMgPiBnYXVzc2lhbl9kaXN0cmlidXRp
b24uY2MKKy8vCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vZ2F1c3NpYW5fZGlzdHJpYnV0aW9uLmgi
CisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGlvc3Ry
ZWFtPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvbWFjcm9zLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21f
aW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBO
Pgordm9pZCBGb3JtYXRBcnJheUNvbnRlbnRzKHN0ZDo6b3N0cmVhbSogb3MsIFQgKCZkYXRhKVtO
XSkgeworICBpZiAoIXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2V4YWN0KSB7CisgICAgLy8g
Tm90ZTogVCBpcyBlaXRoZXIgYW4gaW50ZWdlciBvciBhIGZsb2F0LgorICAgIC8vIGZsb2F0IHJl
cXVpcmVzIGhpZ2hlciBwcmVjaXNpb24gdG8gZW5zdXJlIHRoYXQgdmFsdWVzIGFyZQorICAgIC8v
IHJlcHJvZHVjZWQgZXhhY3RseS4KKyAgICAvLyBUcml2aWE6IEM5OSBoYXMgaGV4YWRlY2ltYWwg
ZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMsIGJ1dCBDKysxMSBkb2VzIG5vdC4KKyAgICAvLyBVc2lu
ZyB0aGVtIHdvdWxkIHJlbW92ZSBhbGwgY29uY2VybiBvZiBwcmVjaXNpb24gbG9zcy4KKyAgICBv
cy0+cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heF9kaWdpdHMxMCArIDIpOwor
ICB9CisgICpvcyA8PCAiICAgIHsiOworICBzdGQ6OnN0cmluZyBzZXBhcmF0b3IgPSAiIjsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBOOyArK2kpIHsKKyAgICAqb3MgPDwgc2VwYXJhdG9yIDw8
IGRhdGFbaV07CisgICAgaWYgKChpICsgMSkgJSAzICE9IDApIHsKKyAgICAgIHNlcGFyYXRvciA9
ICIsICI7CisgICAgfSBlbHNlIHsKKyAgICAgIHNlcGFyYXRvciA9ICIsXG4gICAgICI7CisgICAg
fQorICB9CisgICpvcyA8PCAifSI7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitjbGFzcyBUYWJs
ZUdlbmVyYXRvciA6IHB1YmxpYyBnYXVzc2lhbl9kaXN0cmlidXRpb25fYmFzZSB7CisgcHVibGlj
OgorICBUYWJsZUdlbmVyYXRvcigpOworICB2b2lkIFByaW50KHN0ZDo6b3N0cmVhbSogb3MpOwor
CisgIHVzaW5nIGdhdXNzaWFuX2Rpc3RyaWJ1dGlvbl9iYXNlOjprTWFzazsKKyAgdXNpbmcgZ2F1
c3NpYW5fZGlzdHJpYnV0aW9uX2Jhc2U6OmtSOworICB1c2luZyBnYXVzc2lhbl9kaXN0cmlidXRp
b25fYmFzZTo6a1Y7CisKKyBwcml2YXRlOgorICBUYWJsZXMgdGFibGVzXzsKK307CisKKy8vIFpp
Z2d1cmF0IGdhdXNzaWFuIGluaXRpYWxpemF0aW9uLiAgRm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRo
ZSBhbGdvcml0aG0sIHNlZQorLy8gdGhlIE1hcnNhZ2xpYSBwYXBlciwgIlRoZSBaaWdndXJhdCBN
ZXRob2QgZm9yIEdlbmVyYXRpbmcgUmFuZG9tIFZhcmlhYmxlcyIuCisvLyAgIGh0dHA6Ly93d3cu
anN0YXRzb2Z0Lm9yZy92MDUvaTA4LworLy8KKy8vIEZ1cnRoZXIgZGV0YWlscyBhcmUgYXZhaWxh
YmxlIGluIHRoZSBEb29ybmlrIHBhcGVyCisvLyAgIGh0dHBzOi8vd3d3LmRvb3JuaWsuY29tL3Jl
c2VhcmNoL3ppZ2d1cmF0LnBkZgorLy8KK1RhYmxlR2VuZXJhdG9yOjpUYWJsZUdlbmVyYXRvcigp
IHsKKyAgLy8gVGhlIGNvbnN0YW50cyBoZXJlIHNob3VsZCBtYXRjaCB0aGUgdmFsdWVzIGluIGdh
dXNzaWFuX2Rpc3RyaWJ1dGlvbi5oCisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtDID0ga01hc2sg
KyAxOworCisgIHN0YXRpY19hc3NlcnQoKEFCU0xfQVJSQVlTSVpFKHRhYmxlc18ueCkgPT0ga0Mg
KyAxKSwKKyAgICAgICAgICAgICAgICAieEFycmF5IG11c3QgYmUgbGVuZ3RoIGtNYXNrICsgMiIp
OworCisgIHN0YXRpY19hc3NlcnQoKEFCU0xfQVJSQVlTSVpFKHRhYmxlc18ueCkgPT0gQUJTTF9B
UlJBWVNJWkUodGFibGVzXy5mKSksCisgICAgICAgICAgICAgICAgImZ4IGFuZCB4IGFycmF5cyBt
dXN0IGJlIGlkZW50aWNhbCBsZW5ndGgiKTsKKworICBhdXRvIGYgPSBbXShkb3VibGUgeCkgeyBy
ZXR1cm4gc3RkOjpleHAoLTAuNSAqIHggKiB4KTsgfTsKKyAgYXV0byBmX2ludiA9IFtdKGRvdWJs
ZSB4KSB7IHJldHVybiBzdGQ6OnNxcnQoLTIuMCAqIHN0ZDo6bG9nKHgpKTsgfTsKKworICB0YWJs
ZXNfLnhbMF0gPSBrViAvIGYoa1IpOworICB0YWJsZXNfLmZbMF0gPSBmKHRhYmxlc18ueFswXSk7
CisKKyAgdGFibGVzXy54WzFdID0ga1I7CisgIHRhYmxlc18uZlsxXSA9IGYodGFibGVzXy54WzFd
KTsKKworICB0YWJsZXNfLnhba0NdID0gMC4wOworICB0YWJsZXNfLmZba0NdID0gZih0YWJsZXNf
Lnhba0NdKTsgIC8vIDEuMAorCisgIGZvciAoaW50IGkgPSAyOyBpIDwga0M7IGkrKykgeworICAg
IGRvdWJsZSB2ID0gKGtWIC8gdGFibGVzXy54W2kgLSAxXSkgKyB0YWJsZXNfLmZbaSAtIDFdOwor
ICAgIHRhYmxlc18ueFtpXSA9IGZfaW52KHYpOworICAgIHRhYmxlc18uZltpXSA9IHY7CisgIH0K
K30KKwordm9pZCBUYWJsZUdlbmVyYXRvcjo6UHJpbnQoc3RkOjpvc3RyZWFtKiBvcykgeworICAq
b3MgPDwgIi8vIEJFR0lOIEdFTkVSQVRFRCBDT0RFOyBETyBOT1QgRURJVFxuIgorICAgICAgICAg
Ii8vIGNsYW5nLWZvcm1hdCBvZmZcbiIKKyAgICAgICAgICJcbiIKKyAgICAgICAgICIjaW5jbHVk
ZSBcImFic2wvcmFuZG9tL2dhdXNzaWFuX2Rpc3RyaWJ1dGlvbi5oXCJcbiIKKyAgICAgICAgICJc
biIKKyAgICAgICAgIC8vICJuYW1lc3BhY2UgIiBhbmQgImFic2wiIGFyZSBicm9rZW4gYXBhcnQg
c28gYXMgbm90IHRvIGNvbmZsaWN0IHdpdGgKKyAgICAgICAgIC8vIHNjcmlwdCB0aGF0IGFkZHMg
dGhlIExUUyBpbmxpbmUgbmFtZXNwYWNlLgorICAgICAgICAgIm5hbWVzcGFjZSAiCisgICAgICAg
ICAiYWJzbCB7XG4iCisgICAgICAgICAibmFtZXNwYWNlICIKKyAgICAgICAgICJyYW5kb21faW50
ZXJuYWwge1xuIgorICAgICAgICAgIlxuIgorICAgICAgICAgImNvbnN0IGdhdXNzaWFuX2Rpc3Ry
aWJ1dGlvbl9iYXNlOjpUYWJsZXNcbiIKKyAgICAgICAgICIgICAgZ2F1c3NpYW5fZGlzdHJpYnV0
aW9uX2Jhc2U6OnpnXyA9IHtcbiI7CisgIEZvcm1hdEFycmF5Q29udGVudHMob3MsIHRhYmxlc18u
eCk7CisgICpvcyA8PCAiLFxuIjsKKyAgRm9ybWF0QXJyYXlDb250ZW50cyhvcywgdGFibGVzXy5m
KTsKKyAgKm9zIDw8ICJ9O1xuIgorICAgICAgICAgIlxuIgorICAgICAgICAgIn0gIC8vIG5hbWVz
cGFjZSAiCisgICAgICAgICAicmFuZG9tX2ludGVybmFsXG4iCisgICAgICAgICAifSAgLy8gbmFt
ZXNwYWNlICIKKyAgICAgICAgICJhYnNsXG4iCisgICAgICAgICAiXG4iCisgICAgICAgICAiLy8g
Y2xhbmctZm9ybWF0IG9uXG4iCisgICAgICAgICAiLy8gRU5EIEdFTkVSQVRFRCBDT0RFIjsKKyAg
Km9zIDw8IHN0ZDo6ZW5kbDsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAor
fSAgLy8gbmFtZXNwYWNlIGFic2wKKworaW50IG1haW4oaW50LCBjaGFyKiopIHsKKyAgc3RkOjpj
ZXJyIDw8ICJcbkNvcHkgdGhlIG91dHB1dCB0byBnYXVzc2lhbl9kaXN0cmlidXRpb24uY2MiIDw8
IHN0ZDo6ZW5kbDsKKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpUYWJsZUdlbmVyYXRvciBnZW5l
cmF0b3I7CisgIGdlbmVyYXRvci5QcmludCgmc3RkOjpjb3V0KTsKKyAgcmV0dXJuIDA7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRmODhmYTc2YmNkZTBlYzAwNWI5YTgyZmQxMDkzNzA0MGM1YTQyMjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaApAQCAtMCww
ICsxLDI0MyBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNp
Zm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfSU9TVFJFQU1fU1RBVEVfU0FWRVJfSF8KKyNkZWZp
bmUgQUJTTF9SQU5ET01fSU5URVJOQUxfSU9TVFJFQU1fU1RBVEVfU0FWRVJfSF8KKworI2luY2x1
ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgor
I2luY2x1ZGUgImFic2wvbnVtZXJpYy9pbnQxMjguaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFt
ZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKKy8vIFRoZSBudWxsX3N0YXRlX3NhdmVyIGRvZXMg
bm90aGluZy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgbnVsbF9zdGF0ZV9zYXZlciB7
CisgcHVibGljOgorICB1c2luZyBzdHJlYW1fdHlwZSA9IFQ7CisgIHVzaW5nIGZsYWdzX3R5cGUg
PSBzdGQ6Omlvc19iYXNlOjpmbXRmbGFnczsKKworICBudWxsX3N0YXRlX3NhdmVyKFQmLCBmbGFn
c190eXBlKSB7fQorICB+bnVsbF9zdGF0ZV9zYXZlcigpIHt9Cit9OworCisvLyBvc3RyZWFtX3N0
YXRlX3NhdmVyIGlzIGEgUkFJSSBvYmplY3QgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgY29tbW9u
CisvLyBiYXNpY19vc3RyZWFtIGZsYWdzIHVzZWQgd2hlbiBpbXBsZW1lbnRpbmcgYG9wZXJhdG9y
IDw8KClgIG9uIGFueSBvZgorLy8gdGhlIGFic2wgcmFuZG9tIGRpc3RyaWJ1dGlvbnMuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgT1N0cmVhbT4KK2NsYXNzIG9zdHJlYW1fc3RhdGVfc2F2ZXIgeworIHB1
YmxpYzoKKyAgdXNpbmcgb3N0cmVhbV90eXBlID0gT1N0cmVhbTsKKyAgdXNpbmcgZmxhZ3NfdHlw
ZSA9IHN0ZDo6aW9zX2Jhc2U6OmZtdGZsYWdzOworICB1c2luZyBmaWxsX3R5cGUgPSB0eXBlbmFt
ZSBvc3RyZWFtX3R5cGU6OmNoYXJfdHlwZTsKKyAgdXNpbmcgcHJlY2lzaW9uX3R5cGUgPSBzdGQ6
OnN0cmVhbXNpemU7CisKKyAgb3N0cmVhbV9zdGF0ZV9zYXZlcihvc3RyZWFtX3R5cGUmIG9zLCAg
Ly8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAgICBmbGFn
c190eXBlIGZsYWdzLCBmaWxsX3R5cGUgZmlsbCkKKyAgICAgIDogb3NfKG9zKSwKKyAgICAgICAg
ZmxhZ3NfKG9zLmZsYWdzKGZsYWdzKSksCisgICAgICAgIGZpbGxfKG9zLmZpbGwoZmlsbCkpLAor
ICAgICAgICBwcmVjaXNpb25fKG9zLnByZWNpc2lvbigpKSB7CisgICAgLy8gU2F2ZSBzdGF0ZSBp
biBpbml0aWFsaXplZCB2YXJpYWJsZXMuCisgIH0KKworICB+b3N0cmVhbV9zdGF0ZV9zYXZlcigp
IHsKKyAgICAvLyBSZXN0b3JlIHNhdmVkIHN0YXRlLgorICAgIG9zXy5wcmVjaXNpb24ocHJlY2lz
aW9uXyk7CisgICAgb3NfLmZpbGwoZmlsbF8pOworICAgIG9zXy5mbGFncyhmbGFnc18pOworICB9
CisKKyBwcml2YXRlOgorICBvc3RyZWFtX3R5cGUmIG9zXzsKKyAgY29uc3QgZmxhZ3NfdHlwZSBm
bGFnc187CisgIGNvbnN0IGZpbGxfdHlwZSBmaWxsXzsKKyAgY29uc3QgcHJlY2lzaW9uX3R5cGUg
cHJlY2lzaW9uXzsKK307CisKKyNpZiBkZWZpbmVkKF9fTkRLX01BSk9SX18pICYmIF9fTkRLX01B
Sk9SX18gPCAxNgorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9JT1NUUkVBTV9IRVhGTE9B
VCAxCisjZWxzZQorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9JT1NUUkVBTV9IRVhGTE9B
VCAwCisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHM+
Citvc3RyZWFtX3N0YXRlX3NhdmVyPHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPj4g
bWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwg
VHJhaXRzPiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHN0ZDo6aW9z
X2Jhc2U6OmZtdGZsYWdzIGZsYWdzID0gc3RkOjppb3NfYmFzZTo6ZGVjIHwgc3RkOjppb3NfYmFz
ZTo6bGVmdCB8CisjaWYgQUJTTF9SQU5ET01fSU5URVJOQUxfSU9TVFJFQU1fSEVYRkxPQVQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aW9zX2Jhc2U6OmZpeGVkIHwK
KyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppb3NfYmFz
ZTo6c2NpZW50aWZpYykgeworICB1c2luZyByZXN1bHRfdHlwZSA9IG9zdHJlYW1fc3RhdGVfc2F2
ZXI8c3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+PjsKKyAgcmV0dXJuIHJlc3VsdF90
eXBlKG9zLCBmbGFncywgb3Mud2lkZW4oJyAnKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfYmFzZV9vZjxzdGQ6Omlvc19i
YXNlLCBUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsX3N0YXRlX3Nh
dmVyPFQ+PgorbWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKFQmIGlzLCAgLy8gTk9MSU5UKHJ1bnRp
bWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Omlvc19iYXNlOjpm
bXRmbGFncyBmbGFncyA9IHN0ZDo6aW9zX2Jhc2U6OmRlYykgeworICBzdGQ6OmNlcnIgPDwgIm51
bGxfc3RhdGVfc2F2ZXIiOworICB1c2luZyByZXN1bHRfdHlwZSA9IG51bGxfc3RhdGVfc2F2ZXI8
VD47CisgIHJldHVybiByZXN1bHRfdHlwZShpcywgZmxhZ3MpOworfQorCisvLyBzdHJlYW1fcHJl
Y2lzaW9uX2hlbHBlcjx0eXBlPjo6a1ByZWNpc2lvbiByZXR1cm5zIHRoZSBiYXNlIDEwIHByZWNp
c2lvbgorLy8gcmVxdWlyZWQgdG8gc3RyZWFtIGFuZCByZWNvbnN0cnVjdCBhIHJlYWwgdHlwZSBl
eGFjdCBiaW5hcnkgdmFsdWUgdGhyb3VnaAorLy8gYSBiaW5hcnktPmRlY2ltYWwtPmJpbmFyeSB0
cmFuc2l0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qgc3RyZWFtX3ByZWNpc2lv
bl9oZWxwZXIgeworICAvLyBtYXhfZGlnaXRzMTAgbWF5IGJlIDAgb24gTVNWQzsgaWYgc28sIHVz
ZSBkaWdpdHMxMCArIDMuCisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtQcmVjaXNpb24gPQorICAg
ICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heF9kaWdpdHMxMCA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8VD46OmRpZ2l0czEwKQorICAgICAgICAgID8gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6
bWF4X2RpZ2l0czEwCisgICAgICAgICAgOiAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRz
MTAgKyAzKTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3Qgc3RyZWFtX3ByZWNpc2lvbl9oZWxw
ZXI8ZmxvYXQ+IHsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga1ByZWNpc2lvbiA9IDk7Cit9Owor
dGVtcGxhdGUgPD4KK3N0cnVjdCBzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjxkb3VibGU+IHsKKyAg
c3RhdGljIGNvbnN0ZXhwciBpbnQga1ByZWNpc2lvbiA9IDE3OworfTsKK3RlbXBsYXRlIDw+Citz
dHJ1Y3Qgc3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8bG9uZyBkb3VibGU+IHsKKyAgc3RhdGljIGNv
bnN0ZXhwciBpbnQga1ByZWNpc2lvbiA9IDM2OyAgLy8gYXNzdW1pbmcgZnAxMjgKK307CisKKy8v
IGlzdHJlYW1fc3RhdGVfc2F2ZXIgaXMgYSBSQUlJIG9iamVjdCB0byBzYXZlIGFuZCByZXN0b3Jl
IHRoZSBjb21tb24KKy8vIHN0ZDo6YmFzaWNfaXN0cmVhbTw+IGZsYWdzIHVzZWQgd2hlbiBpbXBs
ZW1lbnRpbmcgYG9wZXJhdG9yID4+KClgIG9uIGFueSBvZgorLy8gdGhlIGFic2wgcmFuZG9tIGRp
c3RyaWJ1dGlvbnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSVN0cmVhbT4KK2NsYXNzIGlzdHJlYW1f
c3RhdGVfc2F2ZXIgeworIHB1YmxpYzoKKyAgdXNpbmcgaXN0cmVhbV90eXBlID0gSVN0cmVhbTsK
KyAgdXNpbmcgZmxhZ3NfdHlwZSA9IHN0ZDo6aW9zX2Jhc2U6OmZtdGZsYWdzOworCisgIGlzdHJl
YW1fc3RhdGVfc2F2ZXIoaXN0cmVhbV90eXBlJiBpcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVy
ZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfdHlwZSBmbGFncykKKyAgICAgIDog
aXNfKGlzKSwgZmxhZ3NfKGlzLmZsYWdzKGZsYWdzKSkge30KKworICB+aXN0cmVhbV9zdGF0ZV9z
YXZlcigpIHsgaXNfLmZsYWdzKGZsYWdzXyk7IH0KKworIHByaXZhdGU6CisgIGlzdHJlYW1fdHlw
ZSYgaXNfOworICBmbGFnc190eXBlIGZsYWdzXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVCwgdHlwZW5hbWUgVHJhaXRzPgoraXN0cmVhbV9zdGF0ZV9zYXZlcjxzdGQ6OmJhc2ljX2lz
dHJlYW08Q2hhclQsIFRyYWl0cz4+IG1ha2VfaXN0cmVhbV9zdGF0ZV9zYXZlcigKKyAgICBzdGQ6
OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVm
ZXJlbmNlcykKKyAgICBzdGQ6Omlvc19iYXNlOjpmbXRmbGFncyBmbGFncyA9IHN0ZDo6aW9zX2Jh
c2U6OmRlYyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Omlvc19i
YXNlOjpzY2llbnRpZmljIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6aW9zX2Jhc2U6OnNraXB3cykgeworICB1c2luZyByZXN1bHRfdHlwZSA9IGlzdHJlYW1fc3Rh
dGVfc2F2ZXI8c3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+PjsKKyAgcmV0dXJuIHJl
c3VsdF90eXBlKGlzLCBmbGFncyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordHlwZW5h
bWUgYWJzbDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfYmFzZV9vZjxzdGQ6Omlvc19iYXNlLCBUPjo6
dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsX3N0YXRlX3NhdmVyPFQ+Pgor
bWFrZV9pc3RyZWFtX3N0YXRlX3NhdmVyKFQmIGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJl
bmNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Omlvc19iYXNlOjpmbXRmbGFncyBm
bGFncyA9IHN0ZDo6aW9zX2Jhc2U6OmRlYykgeworICB1c2luZyByZXN1bHRfdHlwZSA9IG51bGxf
c3RhdGVfc2F2ZXI8VD47CisgIHJldHVybiByZXN1bHRfdHlwZShpcywgZmxhZ3MpOworfQorCisv
LyBzdHJlYW1fZm9ybWF0X3R5cGU8VD4gaXMgYSBoZWxwZXIgc3RydWN0IHRvIGNvbnZlcnQgdHlw
ZXMgd2hpY2gKKy8vIGJhc2ljX2lvc3RyZWFtIGNhbm5vdCBvdXRwdXQgYXMgZGVjaW1hbCBudW1i
ZXJzIGludG8gdHlwZXMgd2hpY2gKKy8vIGJhc2ljX2lvc3RyZWFtIGNhbiBvdXRwdXQgYXMgZGVj
aW1hbCBudW1iZXJzLiBTcGVjaWZpY2FsbHk6CisvLyAqIHNpZ25lZC91bnNpZ25lZCBjaGFyLXdp
ZHRoIHR5cGVzIGFyZSBjb252ZXJ0ZWQgdG8gaW50LgorLy8gKiBUT0RPKGxhcik6IF9faW50MTI4
ID0+IHVpbnQxMjgsIGV4Y2VwdCB0aGVyZSBpcyBubyBvcGVyYXRvciA8PCB5ZXQuCisvLwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qgc3RyZWFtX2Zvcm1hdF90eXBlCisgICAgOiBwdWJs
aWMgc3RkOjpjb25kaXRpb25hbDwoc2l6ZW9mKFQpID09IHNpemVvZihjaGFyKSksIGludCwgVD4g
e307CisKKy8vIHN0cmVhbV91MTI4X2hlbHBlciBhbGxvd3MgdXMgdG8gd3JpdGUgb3V0IGVpdGhl
ciBhYnNsOjp1aW50MTI4IG9yCisvLyBfX3VpbnQxMjhfdCB0eXBlcyBpbiB0aGUgc2FtZSB3YXks
IHdoaWNoIGVuYWJsZXMgdGhlaXIgdXNlIGFzIGludGVybmFsCisvLyBzdGF0ZSBvZiBQUk5HIGVu
Z2luZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBzdHJlYW1fdTEyOF9oZWxwZXI7
CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3Qgc3RyZWFtX3UxMjhfaGVscGVyPGFic2w6OnVpbnQxMjg+
IHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElTdHJlYW0+CisgIGlubGluZSBhYnNsOjp1aW50MTI4
IHJlYWQoSVN0cmVhbSYgaW4pIHsKKyAgICB1aW50NjRfdCBoID0gMDsKKyAgICB1aW50NjRfdCBs
ID0gMDsKKyAgICBpbiA+PiBoID4+IGw7CisgICAgcmV0dXJuIGFic2w6Ok1ha2VVaW50MTI4KGgs
IGwpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE9TdHJlYW0+CisgIGlubGluZSB2b2lk
IHdyaXRlKGFic2w6OnVpbnQxMjggdmFsLCBPU3RyZWFtJiBvdXQpIHsKKyAgICB1aW50NjRfdCBo
ID0gVWludDEyOEhpZ2g2NCh2YWwpOworICAgIHVpbnQ2NF90IGwgPSBVaW50MTI4TG93NjQodmFs
KTsKKyAgICBvdXQgPDwgaCA8PCBvdXQuZmlsbCgpIDw8IGw7CisgIH0KK307CisKKyNpZmRlZiBB
QlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOAordGVtcGxhdGUgPD4KK3N0cnVjdCBzdHJlYW1fdTEy
OF9oZWxwZXI8X191aW50MTI4X3Q+IHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElTdHJlYW0+Cisg
IGlubGluZSBfX3VpbnQxMjhfdCByZWFkKElTdHJlYW0mIGluKSB7CisgICAgdWludDY0X3QgaCA9
IDA7CisgICAgdWludDY0X3QgbCA9IDA7CisgICAgaW4gPj4gaCA+PiBsOworICAgIHJldHVybiAo
c3RhdGljX2Nhc3Q8X191aW50MTI4X3Q+KGgpIDw8IDY0KSB8IGw7CisgIH0KKworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT1N0cmVhbT4KKyAgaW5saW5lIHZvaWQgd3JpdGUoX191aW50MTI4X3QgdmFs
LCBPU3RyZWFtJiBvdXQpIHsKKyAgICB1aW50NjRfdCBoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHZhbCA+PiA2NHUpOworICAgIHVpbnQ2NF90IGwgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFs
KTsKKyAgICBvdXQgPDwgaCA8PCBvdXQuZmlsbCgpIDw8IGw7CisgIH0KK307CisjZW5kaWYKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0VHlwZSwgdHlwZW5hbWUgSVN0cmVhbT4KK2lubGluZSBG
bG9hdFR5cGUgcmVhZF9mbG9hdGluZ19wb2ludChJU3RyZWFtJiBpcykgeworICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8RmxvYXRUeXBlPjo6dmFsdWUsICIiKTsKKyAgRmxv
YXRUeXBlIGRlc3Q7CisgIGlzID4+IGRlc3Q7CisgIC8vIFBhcnNpbmcgYSBkb3VibGUgdmFsdWUg
bWF5IHJlcG9ydCBhIHN1Ym5vcm1hbCB2YWx1ZSBhcyBhbiBlcnJvcgorICAvLyBkZXNwaXRlIGJl
aW5nIGFibGUgdG8gcmVwcmVzZW50IGl0LgorICAvLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93
LmNvbS9xLzUyNDEwOTMxLzMyODY2NTMKKyAgLy8gSXQgbWF5IGFsc28gcmVwb3J0IGFuIHVuZGVy
ZmxvdyB3aGVuIHBhcnNpbmcgRE9VQkxFX01JTiBhcyBhbgorICAvLyBFUkFOR0UgZXJyb3IsIGFz
IHRoZSBwYXJzZWQgdmFsdWUgbWF5IGJlIHNtYWxsZXIgdGhhbiBET1VCTEVfTUlOCisgIC8vIGFu
ZCByb3VuZGVkIHVwLgorICAvLyBTZWU6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcS80MjAw
NTQ2MgorICBpZiAoaXMuZmFpbCgpICYmCisgICAgICAoc3RkOjpmYWJzKGRlc3QpID09IChzdGQ6
Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1pbikoKSB8fAorICAgICAgIHN0ZDo6ZnBjbGFz
c2lmeShkZXN0KSA9PSBGUF9TVUJOT1JNQUwpKSB7CisgICAgaXMuY2xlYXIoaXMucmRzdGF0ZSgp
ICYgKH5zdGQ6Omlvc19iYXNlOjpmYWlsYml0KSk7CisgIH0KKyAgcmV0dXJuIGRlc3Q7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisK
KyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfSU9TVFJFQU1fU1RBVEVfU0FWRVJfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlcl90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFtX3N0YXRlX3NhdmVyX3Rlc3Qu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmVjYmFhYzE0M2RjZjNlMjA0MDYxYWJlZTQ3MWRlYjQwYTZjN2NiOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9z
YXZlcl90ZXN0LmNjCkBAIC0wLDAgKzEsMzY5IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJz
ZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lvc3RyZWFt
X3N0YXRlX3NhdmVyLmgiCisKKyNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4K
KworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6bWFrZV9pc3RyZWFtX3N0YXRlX3NhdmVyOwordXNpbmcgYWJzbDo6
cmFuZG9tX2ludGVybmFsOjptYWtlX29zdHJlYW1fc3RhdGVfc2F2ZXI7Cit1c2luZyBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OnN0cmVhbV9wcmVjaXNpb25faGVscGVyOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW50ZWdyYWw8VD46
OnZhbHVlLCBUPiAgLy8KK1N0cmVhbVJvdW5kVHJpcChUIHQpIHsKKyAgc3RkOjpzdHJpbmdzdHJl
YW0gc3M7CisgIHsKKyAgICBhdXRvIHNhdmVyID0gbWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKHNz
KTsKKyAgICBzcy5wcmVjaXNpb24oc3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8VD46OmtQcmVjaXNp
b24pOworICAgIHNzIDw8IHQ7CisgIH0KKyAgVCByZXN1bHQgPSAwOworICB7CisgICAgYXV0byBz
YXZlciA9IG1ha2VfaXN0cmVhbV9zdGF0ZV9zYXZlcihzcyk7CisgICAgc3MgPj4gcmVzdWx0Owor
ICB9CisgIEVYUEVDVF9GQUxTRShzcy5mYWlsKCkpICAgICAgICAgICAgLy8KKyAgICAgIDw8IHNz
LnN0cigpIDw8ICIgIiAgICAgICAgICAgICAvLworICAgICAgPDwgKHNzLmdvb2QoKSA/ICJnb29k
ICIgOiAiIikgIC8vCisgICAgICA8PCAoc3MuYmFkKCkgPyAiYmFkICIgOiAiIikgICAgLy8KKyAg
ICAgIDw8IChzcy5lb2YoKSA/ICJlb2YgIiA6ICIiKSAgICAvLworICAgICAgPDwgKHNzLmZhaWwo
KSA/ICJmYWlsICIgOiAiIik7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Zsb2F0aW5nX3Bv
aW50PFQ+Ojp2YWx1ZSwgVD4gIC8vCitTdHJlYW1Sb3VuZFRyaXAoVCB0KSB7CisgIHN0ZDo6c3Ry
aW5nc3RyZWFtIHNzOworICB7CisgICAgYXV0byBzYXZlciA9IG1ha2Vfb3N0cmVhbV9zdGF0ZV9z
YXZlcihzcyk7CisgICAgc3MucHJlY2lzaW9uKHN0cmVhbV9wcmVjaXNpb25faGVscGVyPFQ+Ojpr
UHJlY2lzaW9uKTsKKyAgICBzcyA8PCB0OworICB9CisgIFQgcmVzdWx0ID0gMDsKKyAgeworICAg
IGF1dG8gc2F2ZXIgPSBtYWtlX2lzdHJlYW1fc3RhdGVfc2F2ZXIoc3MpOworICAgIHJlc3VsdCA9
IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmVhZF9mbG9hdGluZ19wb2ludDxUPihzcyk7CisgIH0K
KyAgRVhQRUNUX0ZBTFNFKHNzLmZhaWwoKSkgICAgICAgICAgICAvLworICAgICAgPDwgc3Muc3Ry
KCkgPDwgIiAiICAgICAgICAgICAgIC8vCisgICAgICA8PCAoc3MuZ29vZCgpID8gImdvb2QgIiA6
ICIiKSAgLy8KKyAgICAgIDw8IChzcy5iYWQoKSA/ICJiYWQgIiA6ICIiKSAgICAvLworICAgICAg
PDwgKHNzLmVvZigpID8gImVvZiAiIDogIiIpICAgIC8vCisgICAgICA8PCAoc3MuZmFpbCgpID8g
ImZhaWwgIiA6ICIiKTsKKworICByZXR1cm4gcmVzdWx0OworfQorCitURVNUKElPU3RyZWFtU3Rh
dGVTYXZlciwgQmFzaWNTYXZlclN0YXRlKSB7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBz
cy5wcmVjaXNpb24oMik7CisgIHNzLmZpbGwoJ3gnKTsKKyAgc3MuZmxhZ3Moc3RkOjppb3NfYmFz
ZTo6ZGVjIHwgc3RkOjppb3NfYmFzZTo6cmlnaHQpOworCisgIHsKKyAgICBhdXRvIHNhdmVyID0g
bWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKHNzKTsKKyAgICBzcy5wcmVjaXNpb24oMTApOworICAg
IEVYUEVDVF9ORSgneCcsIHNzLmZpbGwoKSk7CisgICAgRVhQRUNUX0VRKDEwLCBzcy5wcmVjaXNp
b24oKSk7CisgICAgRVhQRUNUX05FKHN0ZDo6aW9zX2Jhc2U6OmRlYyB8IHN0ZDo6aW9zX2Jhc2U6
OnJpZ2h0LCBzcy5mbGFncygpKTsKKworICAgIHNzIDw8IDEuMjM7CisgIH0KKworICBFWFBFQ1Rf
RVEoJ3gnLCBzcy5maWxsKCkpOworICBFWFBFQ1RfRVEoMiwgc3MucHJlY2lzaW9uKCkpOworICBF
WFBFQ1RfRVEoc3RkOjppb3NfYmFzZTo6ZGVjIHwgc3RkOjppb3NfYmFzZTo6cmlnaHQsIHNzLmZs
YWdzKCkpOworfQorCitURVNUKElPU3RyZWFtU3RhdGVTYXZlciwgUm91bmRUcmlwSW50cykgewor
ICBjb25zdCB1aW50NjRfdCBrVWludFZhbHVlc1tdID0geworICAgICAgMCwKKyAgICAgIDEsCisg
ICAgICBzdGF0aWNfY2FzdDx1aW50NjRfdD4oLTEpLAorICAgICAgMiwKKyAgICAgIHN0YXRpY19j
YXN0PHVpbnQ2NF90PigtMiksCisKKyAgICAgIDEgPDwgNywKKyAgICAgIDEgPDwgOCwKKyAgICAg
IDEgPDwgMTYsCisgICAgICAxdWxsIDw8IDMyLAorICAgICAgMXVsbCA8PCA1MCwKKyAgICAgIDF1
bGwgPDwgNjIsCisgICAgICAxdWxsIDw8IDYzLAorCisgICAgICAoMSA8PCA3KSAtIDEsCisgICAg
ICAoMSA8PCA4KSAtIDEsCisgICAgICAoMSA8PCAxNikgLSAxLAorICAgICAgKDF1bGwgPDwgMzIp
IC0gMSwKKyAgICAgICgxdWxsIDw8IDUwKSAtIDEsCisgICAgICAoMXVsbCA8PCA2MikgLSAxLAor
ICAgICAgKDF1bGwgPDwgNjMpIC0gMSwKKworICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0o
MSA8PCA4KSksCisgICAgICBzdGF0aWNfY2FzdDx1aW50NjRfdD4oLSgxIDw8IDE2KSksCisgICAg
ICBzdGF0aWNfY2FzdDx1aW50NjRfdD4oLSgxbGwgPDwgMzIpKSwKKyAgICAgIHN0YXRpY19jYXN0
PHVpbnQ2NF90PigtKDFsbCA8PCA1MCkpLAorICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0o
MWxsIDw8IDYyKSksCisKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKDEgPDwgOCkgLSAx
KSwKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKDEgPDwgMTYpIC0gMSksCisgICAgICBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oLSgxbGwgPDwgMzIpIC0gMSksCisgICAgICBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oLSgxbGwgPDwgNTApIC0gMSksCisgICAgICBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oLSgxbGwgPDwgNjIpIC0gMSksCisgIH07CisKKyAgZm9yIChjb25zdCB1aW50NjRfdCB1IDog
a1VpbnRWYWx1ZXMpIHsKKyAgICBFWFBFQ1RfRVEodSwgU3RyZWFtUm91bmRUcmlwPHVpbnQ2NF90
Pih1KSk7CisKKyAgICBpbnQ2NF90IHggPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pih1KTsKKyAgICBF
WFBFQ1RfRVEoeCwgU3RyZWFtUm91bmRUcmlwPGludDY0X3Q+KHgpKTsKKworICAgIGRvdWJsZSBk
ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih4KTsKKyAgICBFWFBFQ1RfRVEoZCwgU3RyZWFtUm91bmRU
cmlwPGRvdWJsZT4oZCkpOworCisgICAgZmxvYXQgZiA9IGQ7CisgICAgRVhQRUNUX0VRKGYsIFN0
cmVhbVJvdW5kVHJpcDxmbG9hdD4oZikpOworICB9Cit9CisKK1RFU1QoSU9TdHJlYW1TdGF0ZVNh
dmVyLCBSb3VuZFRyaXBGbG9hdHMpIHsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIHN0cmVhbV9w
cmVjaXNpb25faGVscGVyPGZsb2F0Pjo6a1ByZWNpc2lvbiA+PSA5LAorICAgICAgInN0cmVhbV9w
cmVjaXNpb25faGVscGVyPGZsb2F0Pjo6a1ByZWNpc2lvbiBzaG91bGQgYmUgYXQgbGVhc3QgOSIp
OworCisgIGNvbnN0IGZsb2F0IGtWYWx1ZXNbXSA9IHsKKyAgICAgIDEsCisgICAgICBzdGQ6Om5l
eHRhZnRlcigxLjBmLCAwLjBmKSwgIC8vIDEgLSBlcHNpbG9uCisgICAgICBzdGQ6Om5leHRhZnRl
cigxLjBmLCAyLjBmKSwgIC8vIDEgKyBlcHNpbG9uCisKKyAgICAgIDEuMGUrMWYsCisgICAgICAx
LjBlLTFmLAorICAgICAgMS4wZSsyZiwKKyAgICAgIDEuMGUtMmYsCisgICAgICAxLjBlKzEwZiwK
KyAgICAgIDEuMGUtMTBmLAorCisgICAgICAwLjAwMDAwMDUxMTEwMDAwMTExMzExMTExMTExZiwK
KyAgICAgIC0wLjAwMDAwMDUxMTEwMDAwMTExMjExMTExMTExZiwKKworICAgICAgMS4yMzQ2Nzg5
MTIzNDU2Nzg5MTIzNDVlKzZmLAorICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlLTZmLAor
ICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlKzMwZiwKKyAgICAgIDEuMjM0Njc4OTEyMzQ1
Njc4OTEyMzQ1ZS0zMGYsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NWUrMzhmLAorICAg
ICAgMS4wMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1ZS0zOGYsCisKKyAgICAgIC8vIEJvdW5kYXJ5IGNh
c2VzLgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLAorICAgICAgc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46Omxvd2VzdCgpLAorICAgICAgc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OmVwc2lsb24oKSwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjptaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgIDEuMGYpLCAgICAg
ICAgICAgICAgIC8vIG1pbiArIGVwc2lsb24KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptaW4oKSwgIC8vIHNtYWxsZXN0IG5vcm1hbAorICAgICAgLy8gVGhlcmUgYXJlIHNvbWUg
ZXJyb3JzIGRlYWxpbmcgd2l0aCBkZW5vcm1zIG9uIGFwcGxlIHBsYXRmb3Jtcy4KKyAgICAgIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpkZW5vcm1fbWluKCksICAvLyBzbWFsbGVzdCBkZW5v
cm0KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4oKSAvIDIsCisgICAgICBz
dGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWluKCksCisgICAgICAg
ICAgICAgICAgICAgICAwLjBmKSwgIC8vIGRlbm9ybV9tYXgKKyAgICAgIHN0ZDo6bmV4dGFmdGVy
KHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpkZW5vcm1fbWluKCksIDEuMGYpLAorICB9Owor
CisgIGZvciAoY29uc3QgZmxvYXQgZiA6IGtWYWx1ZXMpIHsKKyAgICBFWFBFQ1RfRVEoZiwgU3Ry
ZWFtUm91bmRUcmlwPGZsb2F0PihmKSk7CisgICAgRVhQRUNUX0VRKC1mLCBTdHJlYW1Sb3VuZFRy
aXA8ZmxvYXQ+KC1mKSk7CisKKyAgICBkb3VibGUgZCA9IGY7CisgICAgRVhQRUNUX0VRKGQsIFN0
cmVhbVJvdW5kVHJpcDxkb3VibGU+KGQpKTsKKyAgICBFWFBFQ1RfRVEoLWQsIFN0cmVhbVJvdW5k
VHJpcDxkb3VibGU+KC1kKSk7CisKKyAgICAvLyBBdm9pZCB1bmRlZmluZWQgYmVoYXZpb3IgKG92
ZXJmbG93L3VuZGVyZmxvdykuCisgICAgaWYgKGQgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWF4KCkgJiYKKyAgICAgICAgZCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
Ojpsb3dlc3QoKSkgeworICAgICAgaW50NjRfdCB4ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oZik7
CisgICAgICBFWFBFQ1RfRVEoeCwgU3RyZWFtUm91bmRUcmlwPGludDY0X3Q+KHgpKTsKKyAgICB9
CisgIH0KK30KKworVEVTVChJT1N0cmVhbVN0YXRlU2F2ZXIsIFJvdW5kVHJpcERvdWJsZXMpIHsK
KyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIHN0cmVhbV9wcmVjaXNpb25faGVscGVyPGRvdWJsZT46
OmtQcmVjaXNpb24gPj0gMTcsCisgICAgICAic3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8ZG91Ymxl
Pjo6a1ByZWNpc2lvbiBzaG91bGQgYmUgYXQgbGVhc3QgMTciKTsKKworICBjb25zdCBkb3VibGUg
a1ZhbHVlc1tdID0geworICAgICAgMSwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKDEuMCwgMC4wKSwg
IC8vIDEgLSBlcHNpbG9uCisgICAgICBzdGQ6Om5leHRhZnRlcigxLjAsIDIuMCksICAvLyAxICsg
ZXBzaWxvbgorCisgICAgICAxLjBlKzEsCisgICAgICAxLjBlLTEsCisgICAgICAxLjBlKzIsCisg
ICAgICAxLjBlLTIsCisgICAgICAxLjBlKzEwLAorICAgICAgMS4wZS0xMCwKKworICAgICAgMC4w
MDAwMDA1MTExMDAwMDExMTMxMTExMTExMSwKKyAgICAgIC0wLjAwMDAwMDUxMTEwMDAwMTExMjEx
MTExMTExLAorCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NWUrNiwKKyAgICAgIDEuMjM0
Njc4OTEyMzQ1Njc4OTEyMzQ1ZS02LAorICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlKzMw
LAorICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlLTMwLAorICAgICAgMS4yMzQ2Nzg5MTIz
NDU2Nzg5MTIzNDVlKzM4LAorICAgICAgMS4wMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1ZS0zOCwKKwor
ICAgICAgMS4wZSsxMDAsCisgICAgICAxLjBlLTEwMCwKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4
OTEyMzQ1ZSszMDgsCisgICAgICAxLjAyMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlLTMwOCwKKyAgICAg
IDIuMjI1MDczODU4NTA3MjAxMzhlLTMwOCwKKworICAgICAgLy8gQm91bmRhcnkgY2FzZXMuCisg
ICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpLAorICAgICAgc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6ZXBzaWxvbigpLAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjptaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgIDEuMCksICAgICAgICAg
ICAgICAgICAvLyBtaW4gKyBlcHNpbG9uCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1pbigpLCAgLy8gc21hbGxlc3Qgbm9ybWFsCisgICAgICAvLyBUaGVyZSBhcmUgc29tZSBl
cnJvcnMgZGVhbGluZyB3aXRoIGRlbm9ybXMgb24gYXBwbGUgcGxhdGZvcm1zLgorICAgICAgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkZW5vcm1fbWluKCksICAvLyBzbWFsbGVzdCBkZW5v
cm0KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWluKCkgLyAyLAorICAgICAg
c3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptaW4oKSwKKyAgICAg
ICAgICAgICAgICAgICAgIDAuMCksICAvLyBkZW5vcm1fbWF4CisgICAgICBzdGQ6Om5leHRhZnRl
cihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRlbm9ybV9taW4oKSwgMS4wZiksCisgIH07
CisKKyAgZm9yIChjb25zdCBkb3VibGUgZCA6IGtWYWx1ZXMpIHsKKyAgICBFWFBFQ1RfRVEoZCwg
U3RyZWFtUm91bmRUcmlwPGRvdWJsZT4oZCkpOworICAgIEVYUEVDVF9FUSgtZCwgU3RyZWFtUm91
bmRUcmlwPGRvdWJsZT4oLWQpKTsKKworICAgIC8vIEF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvciAo
b3ZlcmZsb3cvdW5kZXJmbG93KS4KKyAgICBpZiAoZCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6bWF4KCkgJiYKKyAgICAgICAgZCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
bG93ZXN0KCkpIHsKKyAgICAgIGZsb2F0IGYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oZCk7CisgICAg
ICBFWFBFQ1RfRVEoZiwgU3RyZWFtUm91bmRUcmlwPGZsb2F0PihmKSk7CisgICAgfQorCisgICAg
Ly8gQXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yIChvdmVyZmxvdy91bmRlcmZsb3cpLgorICAgIGlm
IChkIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpICYmCisgICAgICAgIGQg
Pj0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bG93ZXN0KCkpIHsKKyAgICAgIGludDY0
X3QgeCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KGQpOworICAgICAgRVhQRUNUX0VRKHgsIFN0cmVh
bVJvdW5kVHJpcDxpbnQ2NF90Pih4KSk7CisgICAgfQorICB9Cit9CisKK1RFU1QoSU9TdHJlYW1T
dGF0ZVNhdmVyLCBSb3VuZFRyaXBMb25nRG91YmxlcykgeworICAvLyBUZWNobmljYWxseSwgQysr
IG9ubHkgZ3VhcmFudGVlcyB0aGF0IGxvbmcgZG91YmxlIGlzIGF0IGxlYXN0IGFzIGxhcmdlIGFz
IGEKKyAgLy8gZG91YmxlLiAgUHJhY3RpY2FsbHkgaXQgdmFyaWVzIGZyb20gNjQtYml0cyB0byAx
MjgtYml0cy4KKyAgLy8KKyAgLy8gU28gaXQgaXMgYmVzdCB0byBjb25zaWRlciBsb25nIGRvdWJs
ZSBhIGJlc3QtZWZmb3J0IGV4dGVuZGVkIHByZWNpc2lvbgorICAvLyB0eXBlLgorCisgIHN0YXRp
Y19hc3NlcnQoCisgICAgICBzdHJlYW1fcHJlY2lzaW9uX2hlbHBlcjxsb25nIGRvdWJsZT46OmtQ
cmVjaXNpb24gPj0gMzYsCisgICAgICAic3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8bG9uZyBkb3Vi
bGU+OjprUHJlY2lzaW9uIHNob3VsZCBiZSBhdCBsZWFzdCAzNiIpOworCisgIHVzaW5nIHJlYWxf
dHlwZSA9IGxvbmcgZG91YmxlOworICBjb25zdCByZWFsX3R5cGUga1ZhbHVlc1tdID0geworICAg
ICAgMSwKKyAgICAgIHN0ZDo6bmV4dGFmdGVyKDEuMCwgMC4wKSwgIC8vIDEgLSBlcHNpbG9uCisg
ICAgICBzdGQ6Om5leHRhZnRlcigxLjAsIDIuMCksICAvLyAxICsgZXBzaWxvbgorCisgICAgICAx
LjBlKzEsCisgICAgICAxLjBlLTEsCisgICAgICAxLjBlKzIsCisgICAgICAxLjBlLTIsCisgICAg
ICAxLjBlKzEwLAorICAgICAgMS4wZS0xMCwKKworICAgICAgMC4wMDAwMDA1MTExMDAwMDExMTMx
MTExMTExMSwKKyAgICAgIC0wLjAwMDAwMDUxMTEwMDAwMTExMjExMTExMTExLAorCisgICAgICAx
LjIzNDY3ODkxMjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODllKzYsCisgICAgICAxLjIzNDY3ODkx
MjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODllLTYsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkx
MjM0NTY3ODkxMjM0NTY3ODllKzMwLAorICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5
MTIzNDU2Nzg5ZS0zMCwKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4
OWUrMzgsCisgICAgICAxLjIzNDY3ODkxMjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODllLTM4LAor
ICAgICAgMS4yMzQ2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5ZSszMDgsCisgICAgICAx
LjIzNDY3ODkxMjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODllLTMwOCwKKworICAgICAgMS4wZSsx
MDAsCisgICAgICAxLjBlLTEwMCwKKyAgICAgIDEuMjM0Njc4OTEyMzQ1Njc4OTEyMzQ1ZSszMDgs
CisgICAgICAxLjAyMzQ2Nzg5MTIzNDU2Nzg5MTIzNDVlLTMwOCwKKworICAgICAgLy8gQm91bmRh
cnkgY2FzZXMuCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHJlYWxfdHlwZT46Om1heCgpLAor
ICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxyZWFsX3R5cGU+Ojpsb3dlc3QoKSwKKyAgICAgIHN0
ZDo6bnVtZXJpY19saW1pdHM8cmVhbF90eXBlPjo6ZXBzaWxvbigpLAorICAgICAgc3RkOjpuZXh0
YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxyZWFsX3R5cGU+OjptaW4oKSwKKyAgICAgICAgICAg
ICAgICAgICAgIHJlYWxfdHlwZSgxKSksICAgICAgICAgICAvLyBtaW4gKyBlcHNpbG9uCisgICAg
ICBzdGQ6Om51bWVyaWNfbGltaXRzPHJlYWxfdHlwZT46Om1pbigpLCAgLy8gc21hbGxlc3Qgbm9y
bWFsCisgICAgICAvLyBUaGVyZSBhcmUgc29tZSBlcnJvcnMgZGVhbGluZyB3aXRoIGRlbm9ybXMg
b24gYXBwbGUgcGxhdGZvcm1zLgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxyZWFsX3R5cGU+
OjpkZW5vcm1fbWluKCksICAvLyBzbWFsbGVzdCBkZW5vcm0KKyAgICAgIHN0ZDo6bnVtZXJpY19s
aW1pdHM8cmVhbF90eXBlPjo6bWluKCkgLyAyLAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpu
dW1lcmljX2xpbWl0czxyZWFsX3R5cGU+OjptaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgIDAu
MCksICAvLyBkZW5vcm1fbWF4CisgICAgICBzdGQ6Om5leHRhZnRlcihzdGQ6Om51bWVyaWNfbGlt
aXRzPHJlYWxfdHlwZT46OmRlbm9ybV9taW4oKSwgMS4wZiksCisgIH07CisKKyAgaW50IGluZGV4
ID0gLTE7CisgIGZvciAoY29uc3QgbG9uZyBkb3VibGUgZGQgOiBrVmFsdWVzKSB7CisgICAgaW5k
ZXgrKzsKKyAgICBFWFBFQ1RfRVEoZGQsIFN0cmVhbVJvdW5kVHJpcDxyZWFsX3R5cGU+KGRkKSkg
PDwgaW5kZXg7CisgICAgRVhQRUNUX0VRKC1kZCwgU3RyZWFtUm91bmRUcmlwPHJlYWxfdHlwZT4o
LWRkKSkgPDwgaW5kZXg7CisKKyAgICAvLyBBdm9pZCB1bmRlZmluZWQgYmVoYXZpb3IgKG92ZXJm
bG93L3VuZGVyZmxvdykuCisgICAgaWYgKGRkIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6bWF4KCkgJiYKKyAgICAgICAgZGQgPj0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojps
b3dlc3QoKSkgeworICAgICAgZG91YmxlIGQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGRkKTsKKyAg
ICAgIEVYUEVDVF9FUShkLCBTdHJlYW1Sb3VuZFRyaXA8ZG91YmxlPihkKSk7CisgICAgfQorCisg
ICAgLy8gQXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yIChvdmVyZmxvdy91bmRlcmZsb3cpLgorICAg
IGlmIChkZCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSAmJgorICAgICAg
ICBkZCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpsb3dlc3QoKSkgeworICAgICAg
aW50NjRfdCB4ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oZGQpOworICAgICAgRVhQRUNUX0VRKHgs
IFN0cmVhbVJvdW5kVHJpcDxpbnQ2NF90Pih4KSk7CisgICAgfQorICB9Cit9CisKK1RFU1QoU3Ry
VG9EVGVzdCwgRG91YmxlTWluKSB7CisgIGNvbnN0IGNoYXIga1ZbXSA9ICIyLjIyNTA3Mzg1ODUw
NzIwMTM4ZS0zMDgiOworICBjaGFyKiBlbmQ7CisgIGRvdWJsZSB4ID0gc3RkOjpzdHJ0b2Qoa1Ys
ICZlbmQpOworICBFWFBFQ1RfRVEoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptaW4oKSwg
eCk7CisgIC8vIGVycm5vIG1heSBlcXVhbCBFUkFOR0UuCit9CisKK1RFU1QoU3RyVG9EVGVzdCwg
RG91YmxlRGVub3JtTWluKSB7CisgIGNvbnN0IGNoYXIga1ZbXSA9ICI0Ljk0MDY1NjQ1ODQxMjQ2
NTQ0ZS0zMjQiOworICBjaGFyKiBlbmQ7CisgIGRvdWJsZSB4ID0gc3RkOjpzdHJ0b2Qoa1YsICZl
bmQpOworICBFWFBFQ1RfRVEoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkZW5vcm1fbWlu
KCksIHgpOworICAvLyBlcnJubyBtYXkgZXF1YWwgRVJBTkdFLgorfQorCit9ICAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9uYW1lZF9nZW5lcmF0b3IuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvbmFtZWRfZ2VuZXJhdG9yLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIx
NjhhMjViZTJlNzJhZTFlZGI4ZDBhNmFiMGYzOTI2MWM5YjgyY2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvbmFtZWRfZ2VuZXJhdG9yLmNjCkBAIC0wLDAgKzEsMzAg
QEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSA8
Y3N0ZGRlZj4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL3Jh
bmRvbS5oIgorCisvLyBUaGlzIHByb2dyYW0gaXMgdXNlZCBpbiBpbnRlZ3JhdGlvbiB0ZXN0cy4K
KworaW50IG1haW4oKSB7CisgIGF1dG8gc2VlZF9zZXEgPSBhYnNsOjpNYWtlVGFnZ2VkU2VlZFNl
cSgiVEVTVF9HRU5FUkFUT1IiLCBzdGQ6OmNlcnIpOworICBhYnNsOjpCaXRHZW4gcm5nKHNlZWRf
c2VxKTsKKyAgY29uc3RleHByIHNpemVfdCBrU2VxdWVuY2VMZW5ndGggPSA4OworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGtTZXF1ZW5jZUxlbmd0aDsgaSsrKSB7CisgICAgc3RkOjpjb3V0IDw8
IHJuZygpIDw8ICJcbiI7CisgIH0KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvbmFub2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9u
YW5vYmVuY2htYXJrLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMzc4MDBjNjgzMDAzY2Y4YmNmMTNkYzVhNDZl
MDI4MjA5NzA2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvbmFu
b2JlbmNobWFyay5jYwpAQCAtMCwwICsxLDgxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRl
cm5hbC9uYW5vYmVuY2htYXJrLmgiCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1
ZGUgPGFsZ29yaXRobT4gIC8vIHNvcnQKKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8Y3N0
ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8
Y3N0cmluZz4gIC8vIG1lbWNweQorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzdHJpbmc+
CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRl
cm5hbC9wbGF0Zm9ybS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9l
bmdpbmUuaCIKKworLy8gT1MKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQp
CisjZGVmaW5lIEFCU0xfT1NfV0lOCisjaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisK
KyNlbGlmIGRlZmluZWQoX19BTkRST0lEX18pCisjZGVmaW5lIEFCU0xfT1NfQU5EUk9JRAorCisj
ZWxpZiBkZWZpbmVkKF9fbGludXhfXykKKyNkZWZpbmUgQUJTTF9PU19MSU5VWAorI2luY2x1ZGUg
PHNjaGVkLmg+ICAgICAgICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPiAgLy8g
Tk9MSU5UCisjZW5kaWYKKworI2lmIGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkgJiYgIWRlZmlu
ZWQoQUJTTF9PU19XSU4pCisjaW5jbHVkZSA8Y3B1aWQuaD4gIC8vIE5PTElOVAorI2VuZGlmCisK
Ky8vIF9fcHBjX2dldF90aW1lYmFzZV9mcmVxCisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQor
I2luY2x1ZGUgPHN5cy9wbGF0Zm9ybS9wcGMuaD4gIC8vIE5PTElOVAorI2VuZGlmCisKKy8vIGNs
b2NrX2dldHRpbWUKKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9BUk0pIHx8IGRlZmluZWQoQUJTTF9B
UkNIX0FBUkNINjQpCisjaW5jbHVkZSA8dGltZS5oPiAgLy8gTk9MSU5UCisjZW5kaWYKKworLy8g
QUJTTF9IQVZFX0FUVFJJQlVURQorI2lmICFkZWZpbmVkKEFCU0xfSEFWRV9BVFRSSUJVVEUpCisj
aWZkZWYgX19oYXNfYXR0cmlidXRlCisjZGVmaW5lIEFCU0xfSEFWRV9BVFRSSUJVVEUoeCkgX19o
YXNfYXR0cmlidXRlKHgpCisjZWxzZQorI2RlZmluZSBBQlNMX0hBVkVfQVRUUklCVVRFKHgpIDAK
KyNlbmRpZgorI2VuZGlmCisKKy8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9ORVZF
Ul9JTkxJTkUgcHJldmVudHMgaW5saW5pbmcgb2YgdGhlIG1ldGhvZC4KKyNpZiBBQlNMX0hBVkVf
QVRUUklCVVRFKG5vaW5saW5lKSB8fCAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19j
bGFuZ19fKSkKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX05FVkVSX0lO
TElORSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQor
I2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfTkVWRVJfSU5MSU5FIF9fZGVj
bHNwZWMobm9pbmxpbmUpCisjZWxzZQorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRS
SUJVVEVfTkVWRVJfSU5MSU5FCisjZW5kaWYKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNl
IHJhbmRvbV9pbnRlcm5hbF9uYW5vYmVuY2htYXJrIHsKK25hbWVzcGFjZSB7CisKKy8vIEZvciBj
b2RlIGZvbGRpbmcuCituYW1lc3BhY2UgcGxhdGZvcm0geworI2lmIGRlZmluZWQoQUJTTF9BUkNI
X1g4Nl82NCkKKworLy8gVE9ETyhqYW53YXMpOiBNZXJnZSB3aXRoIHRoZSBvbmUgaW4gcmFuZGVu
X2h3YWVzLmNjPwordm9pZCBDcHVpZChjb25zdCB1aW50MzJfdCBsZXZlbCwgY29uc3QgdWludDMy
X3QgY291bnQsCisgICAgICAgICAgIHVpbnQzMl90KiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNU
UklDVCBhYmNkKSB7CisjaWYgZGVmaW5lZChBQlNMX09TX1dJTikKKyAgaW50IHJlZ3NbNF07Cisg
IF9fY3B1aWRleChyZWdzLCBsZXZlbCwgY291bnQpOworICBmb3IgKGludCBpID0gMDsgaSA8IDQ7
ICsraSkgeworICAgIGFiY2RbaV0gPSByZWdzW2ldOworICB9CisjZWxzZQorICB1aW50MzJfdCBh
LCBiLCBjLCBkOworICBfX2NwdWlkX2NvdW50KGxldmVsLCBjb3VudCwgYSwgYiwgYywgZCk7Cisg
IGFiY2RbMF0gPSBhOworICBhYmNkWzFdID0gYjsKKyAgYWJjZFsyXSA9IGM7CisgIGFiY2RbM10g
PSBkOworI2VuZGlmCit9CisKK3N0ZDo6c3RyaW5nIEJyYW5kU3RyaW5nKCkgeworICBjaGFyIGJy
YW5kX3N0cmluZ1s0OV07CisgIHVpbnQzMl90IGFiY2RbNF07CisKKyAgLy8gQ2hlY2sgaWYgYnJh
bmQgc3RkOjpzdHJpbmcgaXMgc3VwcG9ydGVkIChpdCBpcyBvbiBhbGwgcmVhc29uYWJsZSBJbnRl
bC9BTUQpCisgIENwdWlkKDB4ODAwMDAwMDBVLCAwLCBhYmNkKTsKKyAgaWYgKGFiY2RbMF0gPCAw
eDgwMDAwMDA0VSkgeworICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICB9CisKKyAgZm9yIChp
bnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICBDcHVpZCgweDgwMDAwMDAyVSArIGksIDAsIGFi
Y2QpOworICAgIG1lbWNweShicmFuZF9zdHJpbmcgKyBpICogMTYsICZhYmNkLCBzaXplb2YoYWJj
ZCkpOworICB9CisgIGJyYW5kX3N0cmluZ1s0OF0gPSAwOworICByZXR1cm4gYnJhbmRfc3RyaW5n
OworfQorCisvLyBSZXR1cm5zIHRoZSBmcmVxdWVuY3kgcXVvdGVkIGluc2lkZSB0aGUgYnJhbmQg
c3RyaW5nLiBUaGlzIGRvZXMgbm90CisvLyBhY2NvdW50IGZvciB0aHJvdHRsaW5nIG5vciBUdXJi
byBCb29zdC4KK2RvdWJsZSBOb21pbmFsQ2xvY2tSYXRlKCkgeworICBjb25zdCBzdGQ6OnN0cmlu
ZyYgYnJhbmRfc3RyaW5nID0gQnJhbmRTdHJpbmcoKTsKKyAgLy8gQnJhbmQgc3RyaW5ncyBpbmNs
dWRlIHRoZSBtYXhpbXVtIGNvbmZpZ3VyZWQgZnJlcXVlbmN5LiBUaGVzZSBwcmVmaXhlcyBhcmUK
KyAgLy8gZGVmaW5lZCBieSBJbnRlbCBDUFVJRCBkb2N1bWVudGF0aW9uLgorICBjb25zdCBjaGFy
KiBwcmVmaXhlc1szXSA9IHsiTUh6IiwgIkdIeiIsICJUSHoifTsKKyAgY29uc3QgZG91YmxlIG11
bHRpcGxpZXJzWzNdID0gezFFNiwgMUU5LCAxRTEyfTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCAzOyArK2kpIHsKKyAgICBjb25zdCBzaXplX3QgcG9zX3ByZWZpeCA9IGJyYW5kX3N0cmluZy5m
aW5kKHByZWZpeGVzW2ldKTsKKyAgICBpZiAocG9zX3ByZWZpeCAhPSBzdGQ6OnN0cmluZzo6bnBv
cykgeworICAgICAgY29uc3Qgc2l6ZV90IHBvc19zcGFjZSA9IGJyYW5kX3N0cmluZy5yZmluZCgn
ICcsIHBvc19wcmVmaXggLSAxKTsKKyAgICAgIGlmIChwb3Nfc3BhY2UgIT0gc3RkOjpzdHJpbmc6
Om5wb3MpIHsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZGlnaXRzID0KKyAgICAgICAgICAg
IGJyYW5kX3N0cmluZy5zdWJzdHIocG9zX3NwYWNlICsgMSwgcG9zX3ByZWZpeCAtIHBvc19zcGFj
ZSAtIDEpOworICAgICAgICByZXR1cm4gc3RkOjpzdG9kKGRpZ2l0cykgKiBtdWx0aXBsaWVyc1tp
XTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICByZXR1cm4gMC4wOworfQorCisjZW5kaWYgIC8v
IEFCU0xfQVJDSF9YODZfNjQKK30gIC8vIG5hbWVzcGFjZSBwbGF0Zm9ybQorCisvLyBQcmV2ZW50
cyB0aGUgY29tcGlsZXIgZnJvbSBlbGlkaW5nIHRoZSBjb21wdXRhdGlvbnMgdGhhdCBsZWQgdG8g
Im91dHB1dCIuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2lubGluZSB2b2lkIFByZXZlbnRFbGlzaW9u
KFQmJiBvdXRwdXQpIHsKKyNpZm5kZWYgQUJTTF9PU19XSU4KKyAgLy8gV29ya3MgYnkgaW5kaWNh
dGluZyB0byB0aGUgY29tcGlsZXIgdGhhdCAib3V0cHV0IiBpcyBiZWluZyByZWFkIGFuZAorICAv
LyBtb2RpZmllZC4gVGhlICtyIGNvbnN0cmFpbnQgYXZvaWRzIHVubmVjZXNzYXJ5IHdyaXRlcyB0
byBtZW1vcnksIGJ1dCBvbmx5CisgIC8vIHdvcmtzIGZvciBidWlsdC1pbiB0eXBlcyAodHlwaWNh
bGx5IEZ1bmNPdXRwdXQpLgorICBhc20gdm9sYXRpbGUoIiIgOiAiK3IiKG91dHB1dCkgOiA6ICJt
ZW1vcnkiKTsKKyNlbHNlCisgIC8vIE1TVkMgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgYXNzZW1i
bHkgYW55bW9yZSAoYW5kIG5ldmVyIHN1cHBvcnRlZCBHQ0MncworICAvLyBSVEwgY29uc3RyYWlu
dHMpLiBTZWxmLWFzc2lnbm1lbnQgd2l0aCAjcHJhZ21hIG9wdGltaXplKCJvZmYiKSBtaWdodCBi
ZQorICAvLyBleHBlY3RlZCB0byBwcmV2ZW50IGVsaXNpb24sIGJ1dCBpdCBkb2VzIG5vdCB3aXRo
IE1TVkMgMjAxNS4gVHlwZS1wdW5uaW5nCisgIC8vIHdpdGggdm9sYXRpbGUgcG9pbnRlcnMgZ2Vu
ZXJhdGVzIGluZWZmaWNpZW50IGNvZGUgb24gTVNWQyAyMDE3LgorICBzdGF0aWMgc3RkOjphdG9t
aWM8VD4gZHVtbXkoVHt9KTsKKyAgZHVtbXkuc3RvcmUob3V0cHV0LCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKKyNlbmRpZgorfQorCituYW1lc3BhY2UgdGltZXIgeworCisvLyBTdGFydC9T
dG9wIHJldHVybiBhYnNvbHV0ZSB0aW1lc3RhbXBzIGFuZCBtdXN0IGJlIHBsYWNlZCBpbW1lZGlh
dGVseSBiZWZvcmUKKy8vIGFuZCBhZnRlciB0aGUgcmVnaW9uIHRvIG1lYXN1cmUuIFdlIHByb3Zp
ZGUgc2VwYXJhdGUgU3RhcnQvU3RvcCBmdW5jdGlvbnMKKy8vIGJlY2F1c2UgdGhleSB1c2UgZGlm
ZmVyZW50IGZlbmNlcy4KKy8vCisvLyBCYWNrZ3JvdW5kOiBSRFRTQyBpcyBub3QgJ3NlcmlhbGl6
aW5nJzsgZWFybGllciBpbnN0cnVjdGlvbnMgbWF5IGNvbXBsZXRlCisvLyBhZnRlciBpdCwgYW5k
L29yIGxhdGVyIGluc3RydWN0aW9ucyBtYXkgY29tcGxldGUgYmVmb3JlIGl0LiAnRmVuY2VzJyBl
bnN1cmUKKy8vIHJlZ2lvbnMnIGVsYXBzZWQgdGltZXMgYXJlIGluZGVwZW5kZW50IG9mIHN1Y2gg
cmVvcmRlcmluZy4gVGhlIG9ubHkKKy8vIGRvY3VtZW50ZWQgdW5wcml2aWxlZ2VkIHNlcmlhbGl6
aW5nIGluc3RydWN0aW9uIGlzIENQVUlELCB3aGljaCBhY3RzIGFzIGEKKy8vIGZ1bGwgZmVuY2Ug
KG5vIHJlb3JkZXJpbmcgYWNyb3NzIGl0IGluIGVpdGhlciBkaXJlY3Rpb24pLiBVbmZvcnR1bmF0
ZWx5CisvLyB0aGUgbGF0ZW5jeSBvZiBDUFVJRCB2YXJpZXMgd2lsZGx5IChwZXJoYXBzIG1hZGUg
d29yc2UgYnkgbm90IGluaXRpYWxpemluZworLy8gaXRzIEVBWCBpbnB1dCkuIEJlY2F1c2UgaXQg
Y2Fubm90IHJlbGlhYmx5IGJlIGRlZHVjdGVkIGZyb20gdGhlIHJlZ2lvbidzCisvLyBlbGFwc2Vk
IHRpbWUsIGl0IG11c3Qgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZWdpb24gdG8gbWVhc3VyZSAo
aS5lLgorLy8gYmV0d2VlbiB0aGUgdHdvIFJEVFNDKS4KKy8vCisvLyBUaGUgbmV3ZXIgUkRUU0NQ
IGlzIHNvbWV0aW1lcyBkZXNjcmliZWQgYXMgc2VyaWFsaXppbmcsIGJ1dCBpdCBhY3R1YWxseQor
Ly8gb25seSBzZXJ2ZXMgYXMgYSBoYWxmLWZlbmNlIHdpdGggcmVsZWFzZSBzZW1hbnRpY3MuIEFs
dGhvdWdoIGFsbAorLy8gaW5zdHJ1Y3Rpb25zIGluIHRoZSByZWdpb24gd2lsbCBjb21wbGV0ZSBi
ZWZvcmUgdGhlIGZpbmFsIHRpbWVzdGFtcCBpcworLy8gY2FwdHVyZWQsIHN1YnNlcXVlbnQgaW5z
dHJ1Y3Rpb25zIG1heSBsZWFrIGludG8gdGhlIHJlZ2lvbiBhbmQgaW5jcmVhc2UgdGhlCisvLyBl
bGFwc2VkIHRpbWUuIEluc2VydGluZyBhbm90aGVyIGZlbmNlIGFmdGVyIHRoZSBmaW5hbCBSRFRT
Q1Agd291bGQgcHJldmVudAorLy8gc3VjaCByZW9yZGVyaW5nIHdpdGhvdXQgYWZmZWN0aW5nIHRo
ZSBtZWFzdXJlZCByZWdpb24uCisvLworLy8gRm9ydHVuYXRlbHksIHN1Y2ggYSBmZW5jZSBleGlz
dHMuIFRoZSBMRkVOQ0UgaW5zdHJ1Y3Rpb24gaXMgb25seSBkb2N1bWVudGVkCisvLyB0byBkZWxh
eSBsYXRlciBsb2FkcyB1bnRpbCBlYXJsaWVyIGxvYWRzIGFyZSB2aXNpYmxlLiBIb3dldmVyLCBJ
bnRlbCdzCisvLyByZWZlcmVuY2UgbWFudWFsIHNheXMgaXQgYWN0cyBhcyBhIGZ1bGwgZmVuY2Ug
KHdhaXRpbmcgdW50aWwgYWxsIGVhcmxpZXIKKy8vIGluc3RydWN0aW9ucyBoYXZlIGNvbXBsZXRl
ZCwgYW5kIGRlbGF5aW5nIGxhdGVyIGluc3RydWN0aW9ucyB1bnRpbCBpdAorLy8gY29tcGxldGVz
KS4gQU1EIGFzc2lnbnMgdGhlIHNhbWUgYmVoYXZpb3IgdG8gTUZFTkNFLgorLy8KKy8vIFdlIG5l
ZWQgYSBmZW5jZSBiZWZvcmUgdGhlIGluaXRpYWwgUkRUU0MgdG8gcHJldmVudCBlYXJsaWVyIGlu
c3RydWN0aW9ucworLy8gZnJvbSBsZWFraW5nIGludG8gdGhlIHJlZ2lvbiwgYW5kIGFyZ3VhYmx5
IGFub3RoZXIgYWZ0ZXIgUkRUU0MgdG8gYXZvaWQKKy8vIHJlZ2lvbiBpbnN0cnVjdGlvbnMgZnJv
bSBjb21wbGV0aW5nIGJlZm9yZSB0aGUgdGltZXN0YW1wIGlzIHJlY29yZGVkLgorLy8gV2hlbiBz
dXJyb3VuZGVkIGJ5IGZlbmNlcywgdGhlIGFkZGl0aW9uYWwgUkRUU0NQIGhhbGYtZmVuY2UgcHJv
dmlkZXMgbm8KKy8vIGJlbmVmaXQsIHNvIHRoZSBpbml0aWFsIHRpbWVzdGFtcCBjYW4gYmUgcmVj
b3JkZWQgdmlhIFJEVFNDLCB3aGljaCBoYXMKKy8vIGxvd2VyIG92ZXJoZWFkIHRoYW4gUkRUU0NQ
IGJlY2F1c2UgaXQgZG9lcyBub3QgcmVhZCBUU0NfQVVYLiBJbiBzdW1tYXJ5LAorLy8gd2UgZGVm
aW5lIFN0YXJ0ID0gTEZFTkNFL1JEVFNDL0xGRU5DRTsgU3RvcCA9IFJEVFNDUC9MRkVOQ0UuCisv
LworLy8gVXNpbmcgU3RhcnQrU3RhcnQgbGVhZHMgdG8gaGlnaGVyIHZhcmlhbmNlIGFuZCBvdmVy
aGVhZCB0aGFuIFN0b3ArU3RvcC4KKy8vIEhvd2V2ZXIsIFN0b3ArU3RvcCBpbmNsdWRlcyBhbiBM
RkVOQ0UgaW4gdGhlIHJlZ2lvbiBtZWFzdXJlbWVudHMsIHdoaWNoCisvLyBhZGRzIGEgZGVsYXkg
ZGVwZW5kZW50IG9uIGVhcmxpZXIgbG9hZHMuIFRoZSBjb21iaW5hdGlvbiBvZiBTdGFydCtTdG9w
CisvLyBpcyBmYXN0ZXIgdGhhbiBTdGFydCtTdGFydCBhbmQgbW9yZSBjb25zaXN0ZW50IHRoYW4g
U3RvcCtTdG9wIGJlY2F1c2UKKy8vIHRoZSBmaXJzdCBMRkVOQ0UgYWxyZWFkeSBkZWxheWVkIHN1
YnNlcXVlbnQgbG9hZHMgYmVmb3JlIHRoZSBtZWFzdXJlZAorLy8gcmVnaW9uLiBUaGlzIGNvbWJp
bmF0aW9uIHNlZW1zIG5vdCB0byBoYXZlIGJlZW4gY29uc2lkZXJlZCBpbiBwcmlvciB3b3JrOgor
Ly8gaHR0cDovL2FrYXJvcy5jcy5iZXJrZWxleS5lZHUvbHhyL2FrYXJvcy9rZXJuL2FyY2gveDg2
L3JkdHNjX3Rlc3QuYworLy8KKy8vIE5vdGU6IHBlcmZvcm1hbmNlIGNvdW50ZXJzIGNhbiBtZWFz
dXJlICdleGFjdCcgaW5zdHJ1Y3Rpb25zLXJldGlyZWQgb3IKKy8vICh1bmhhbHRlZCkgY3ljbGUg
Y291bnRzLiBUaGUgUkRQTUMgaW5zdHJ1Y3Rpb24gaXMgbm90IHNlcmlhbGl6aW5nIGFuZCBhbHNv
CisvLyByZXF1aXJlcyBmZW5jZXMuIFVuZm9ydHVuYXRlbHksIGl0IGlzIG5vdCBhY2Nlc3NpYmxl
IG9uIGFsbCBPU2VzIGFuZCB3ZQorLy8gcHJlZmVyIHRvIGF2b2lkIGtlcm5lbC1tb2RlIGRyaXZl
cnMuIFBlcmZvcm1hbmNlIGNvdW50ZXJzIGFyZSBhbHNvIGFmZmVjdGVkCisvLyBieSBzZXZlcmFs
IHVuZGVyL292ZXItY291bnQgZXJyYXRhLCBzbyB3ZSB1c2UgdGhlIFRTQyBpbnN0ZWFkLgorCisv
LyBSZXR1cm5zIGEgNjQtYml0IHRpbWVzdGFtcCBpbiB1bml0IG9mICd0aWNrcyc7IHRvIGNvbnZl
cnQgdG8gc2Vjb25kcywKKy8vIGRpdmlkZSBieSBJbnZhcmlhbnRUaWNrc1BlclNlY29uZC4KK2lu
bGluZSB1aW50NjRfdCBTdGFydDY0KCkgeworICB1aW50NjRfdCB0OworI2lmIGRlZmluZWQoQUJT
TF9BUkNIX1BQQykKKyAgYXNtIHZvbGF0aWxlKCJtZnNwciAlMCwgJTEiIDogIj1yIih0KSA6ICJp
IigyNjgpKTsKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkKKyNpZiBkZWZpbmVkKEFC
U0xfT1NfV0lOKQorICBfUmVhZFdyaXRlQmFycmllcigpOworICBfbW1fbGZlbmNlKCk7CisgIF9S
ZWFkV3JpdGVCYXJyaWVyKCk7CisgIHQgPSBfX3JkdHNjKCk7CisgIF9SZWFkV3JpdGVCYXJyaWVy
KCk7CisgIF9tbV9sZmVuY2UoKTsKKyAgX1JlYWRXcml0ZUJhcnJpZXIoKTsKKyNlbHNlCisgIGFz
bSB2b2xhdGlsZSgKKyAgICAgICJsZmVuY2Vcblx0IgorICAgICAgInJkdHNjXG5cdCIKKyAgICAg
ICJzaGwgJDMyLCAlJXJkeFxuXHQiCisgICAgICAib3IgJSVyZHgsICUwXG5cdCIKKyAgICAgICJs
ZmVuY2UiCisgICAgICA6ICI9YSIodCkKKyAgICAgIDoKKyAgICAgIC8vICJtZW1vcnkiIGF2b2lk
cyByZW9yZGVyaW5nLiByZHggPSBUU0MgPj4gMzIuCisgICAgICAvLyAiY2MiID0gZmxhZ3MgbW9k
aWZpZWQgYnkgU0hMLgorICAgICAgOiAicmR4IiwgIm1lbW9yeSIsICJjYyIpOworI2VuZGlmCisj
ZWxzZQorICAvLyBGYWxsIGJhY2sgdG8gT1MgLSB1bnN1cmUgaG93IHRvIHJlbGlhYmx5IHF1ZXJ5
IGNudHZjdF9lbDAgZnJlcXVlbmN5LgorICB0aW1lc3BlYyB0czsKKyAgY2xvY2tfZ2V0dGltZShD
TE9DS19SRUFMVElNRSwgJnRzKTsKKyAgdCA9IHRzLnR2X3NlYyAqIDEwMDAwMDAwMDBMTCArIHRz
LnR2X25zZWM7CisjZW5kaWYKKyAgcmV0dXJuIHQ7Cit9CisKK2lubGluZSB1aW50NjRfdCBTdG9w
NjQoKSB7CisgIHVpbnQ2NF90IHQ7CisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzY0KQorI2lm
IGRlZmluZWQoQUJTTF9PU19XSU4pCisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7CisgIHVuc2lnbmVk
IGF1eDsKKyAgdCA9IF9fcmR0c2NwKCZhdXgpOworICBfUmVhZFdyaXRlQmFycmllcigpOworICBf
bW1fbGZlbmNlKCk7CisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7CisjZWxzZQorICAvLyBVc2UgaW5s
aW5lIGFzbSBiZWNhdXNlIF9fcmR0c2NwIGdlbmVyYXRlcyBjb2RlIHRvIHN0b3JlIFRTQ19BVVgg
KGVjeCkuCisgIGFzbSB2b2xhdGlsZSgKKyAgICAgICJyZHRzY3Bcblx0IgorICAgICAgInNobCAk
MzIsICUlcmR4XG5cdCIKKyAgICAgICJvciAlJXJkeCwgJTBcblx0IgorICAgICAgImxmZW5jZSIK
KyAgICAgIDogIj1hIih0KQorICAgICAgOgorICAgICAgLy8gIm1lbW9yeSIgYXZvaWRzIHJlb3Jk
ZXJpbmcuIHJjeCA9IFRTQ19BVVguIHJkeCA9IFRTQyA+PiAzMi4KKyAgICAgIC8vICJjYyIgPSBm
bGFncyBtb2RpZmllZCBieSBTSEwuCisgICAgICA6ICJyY3giLCAicmR4IiwgIm1lbW9yeSIsICJj
YyIpOworI2VuZGlmCisjZWxzZQorICB0ID0gU3RhcnQ2NCgpOworI2VuZGlmCisgIHJldHVybiB0
OworfQorCisvLyBSZXR1cm5zIGEgMzItYml0IHRpbWVzdGFtcCB3aXRoIGFib3V0IDQgY3ljbGVz
IGxlc3Mgb3ZlcmhlYWQgdGhhbgorLy8gU3RhcnQ2NC4gT25seSBzdWl0YWJsZSBmb3IgbWVhc3Vy
aW5nIHZlcnkgc2hvcnQgcmVnaW9ucyBiZWNhdXNlIHRoZQorLy8gdGltZXN0YW1wIG92ZXJmbG93
cyBhYm91dCBvbmNlIGEgc2Vjb25kLgoraW5saW5lIHVpbnQzMl90IFN0YXJ0MzIoKSB7CisgIHVp
bnQzMl90IHQ7CisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzY0KQorI2lmIGRlZmluZWQoQUJT
TF9PU19XSU4pCisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7CisgIF9tbV9sZmVuY2UoKTsKKyAgX1Jl
YWRXcml0ZUJhcnJpZXIoKTsKKyAgdCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihfX3JkdHNjKCkp
OworICBfUmVhZFdyaXRlQmFycmllcigpOworICBfbW1fbGZlbmNlKCk7CisgIF9SZWFkV3JpdGVC
YXJyaWVyKCk7CisjZWxzZQorICBhc20gdm9sYXRpbGUoCisgICAgICAibGZlbmNlXG5cdCIKKyAg
ICAgICJyZHRzY1xuXHQiCisgICAgICAibGZlbmNlIgorICAgICAgOiAiPWEiKHQpCisgICAgICA6
CisgICAgICAvLyAibWVtb3J5IiBhdm9pZHMgcmVvcmRlcmluZy4gcmR4ID0gVFNDID4+IDMyLgor
ICAgICAgOiAicmR4IiwgIm1lbW9yeSIpOworI2VuZGlmCisjZWxzZQorICB0ID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KFN0YXJ0NjQoKSk7CisjZW5kaWYKKyAgcmV0dXJuIHQ7Cit9CisKK2lubGlu
ZSB1aW50MzJfdCBTdG9wMzIoKSB7CisgIHVpbnQzMl90IHQ7CisjaWYgZGVmaW5lZChBQlNMX0FS
Q0hfWDg2XzY0KQorI2lmIGRlZmluZWQoQUJTTF9PU19XSU4pCisgIF9SZWFkV3JpdGVCYXJyaWVy
KCk7CisgIHVuc2lnbmVkIGF1eDsKKyAgdCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihfX3JkdHNj
cCgmYXV4KSk7CisgIF9SZWFkV3JpdGVCYXJyaWVyKCk7CisgIF9tbV9sZmVuY2UoKTsKKyAgX1Jl
YWRXcml0ZUJhcnJpZXIoKTsKKyNlbHNlCisgIC8vIFVzZSBpbmxpbmUgYXNtIGJlY2F1c2UgX19y
ZHRzY3AgZ2VuZXJhdGVzIGNvZGUgdG8gc3RvcmUgVFNDX0FVWCAoZWN4KS4KKyAgYXNtIHZvbGF0
aWxlKAorICAgICAgInJkdHNjcFxuXHQiCisgICAgICAibGZlbmNlIgorICAgICAgOiAiPWEiKHQp
CisgICAgICA6CisgICAgICAvLyAibWVtb3J5IiBhdm9pZHMgcmVvcmRlcmluZy4gcmN4ID0gVFND
X0FVWC4gcmR4ID0gVFNDID4+IDMyLgorICAgICAgOiAicmN4IiwgInJkeCIsICJtZW1vcnkiKTsK
KyNlbmRpZgorI2Vsc2UKKyAgdCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihTdG9wNjQoKSk7Cisj
ZW5kaWYKKyAgcmV0dXJuIHQ7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0aW1lcgorCituYW1lc3Bh
Y2Ugcm9idXN0X3N0YXRpc3RpY3MgeworCisvLyBTb3J0cyBpbnRlZ3JhbCB2YWx1ZXMgaW4gYXNj
ZW5kaW5nIG9yZGVyIChlLmcuIGZvciBNb2RlKS4gQWJvdXQgM3ggZmFzdGVyCisvLyB0aGFuIHN0
ZDo6c29ydCBmb3IgaW5wdXQgZGlzdHJpYnV0aW9ucyB3aXRoIHZlcnkgZmV3IHVuaXF1ZSB2YWx1
ZXMuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3ZvaWQgQ291bnRpbmdTb3J0KFQqIHZhbHVlcywgc2l6
ZV90IG51bV92YWx1ZXMpIHsKKyAgLy8gVW5pcXVlIHZhbHVlcyBhbmQgdGhlaXIgZnJlcXVlbmN5
IChzaW1pbGFyIHRvIGZsYXRfbWFwKS4KKyAgdXNpbmcgVW5pcXVlID0gc3RkOjpwYWlyPFQsIGlu
dD47CisgIHN0ZDo6dmVjdG9yPFVuaXF1ZT4gdW5pcXVlOworICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bV92YWx1ZXM7ICsraSkgeworICAgIGNvbnN0IFQgdmFsdWUgPSB2YWx1ZXNbaV07Cisg
ICAgY29uc3QgYXV0byBwb3MgPQorICAgICAgICBzdGQ6OmZpbmRfaWYodW5pcXVlLmJlZ2luKCks
IHVuaXF1ZS5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV0oY29uc3QgVW5pcXVl
IHUpIHsgcmV0dXJuIHUuZmlyc3QgPT0gdmFsdWU7IH0pOworICAgIGlmIChwb3MgPT0gdW5pcXVl
LmVuZCgpKSB7CisgICAgICB1bmlxdWUucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKHZhbHVlLCAx
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICsrcG9zLT5zZWNvbmQ7CisgICAgfQorICB9CisKKyAg
Ly8gU29ydCBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgdmFsdWUgKHBhaXIuZmlyc3QpLgorICBzdGQ6
OnNvcnQodW5pcXVlLmJlZ2luKCksIHVuaXF1ZS5lbmQoKSk7CisKKyAgLy8gV3JpdGUgdGhhdCBt
YW55IGNvcGllcyBvZiBlYWNoIHVuaXF1ZSB2YWx1ZSB0byB0aGUgYXJyYXkuCisgIFQqIEFCU0xf
UkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHAgPSB2YWx1ZXM7CisgIGZvciAoY29uc3QgYXV0byYg
dmFsdWVfY291bnQgOiB1bmlxdWUpIHsKKyAgICBzdGQ6OmZpbGwocCwgcCArIHZhbHVlX2NvdW50
LnNlY29uZCwgdmFsdWVfY291bnQuZmlyc3QpOworICAgIHAgKz0gdmFsdWVfY291bnQuc2Vjb25k
OworICB9CisgIEFCU0xfUkFXX0NIRUNLKHAgPT0gdmFsdWVzICsgbnVtX3ZhbHVlcywgIkRpZCBu
b3QgcHJvZHVjZSBlbm91Z2ggb3V0cHV0Iik7Cit9CisKKy8vIEByZXR1cm4gaSBpbiBbaWR4X2Jl
Z2luLCBpZHhfYmVnaW4gKyBoYWxmX2NvdW50KSB0aGF0IG1pbmltaXplcworLy8gc29ydGVkW2kg
KyBoYWxmX2NvdW50XSAtIHNvcnRlZFtpXS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc2l6ZV90
IE1pblJhbmdlKGNvbnN0IFQqIGNvbnN0IEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHNv
cnRlZCwKKyAgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgaWR4X2JlZ2luLCBjb25zdCBzaXpl
X3QgaGFsZl9jb3VudCkgeworICBUIG1pbl9yYW5nZSA9IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
OjptYXgpKCk7CisgIHNpemVfdCBtaW5faWR4ID0gMDsKKworICBmb3IgKHNpemVfdCBpZHggPSBp
ZHhfYmVnaW47IGlkeCA8IGlkeF9iZWdpbiArIGhhbGZfY291bnQ7ICsraWR4KSB7CisgICAgQUJT
TF9SQVdfQ0hFQ0soc29ydGVkW2lkeF0gPD0gc29ydGVkW2lkeCArIGhhbGZfY291bnRdLCAiTm90
IHNvcnRlZCIpOworICAgIGNvbnN0IFQgcmFuZ2UgPSBzb3J0ZWRbaWR4ICsgaGFsZl9jb3VudF0g
LSBzb3J0ZWRbaWR4XTsKKyAgICBpZiAocmFuZ2UgPCBtaW5fcmFuZ2UpIHsKKyAgICAgIG1pbl9y
YW5nZSA9IHJhbmdlOworICAgICAgbWluX2lkeCA9IGlkeDsKKyAgICB9CisgIH0KKworICByZXR1
cm4gbWluX2lkeDsKK30KKworLy8gUmV0dXJucyBhbiBlc3RpbWF0ZSBvZiB0aGUgbW9kZSBieSBj
YWxsaW5nIE1pblJhbmdlIG9uIHN1Y2Nlc3NpdmVseQorLy8gaGFsdmVkIGludGVydmFscy4gInNv
cnRlZCIgbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIuIFRoaXMgaXMgdGhlCisvLyBIYWxmIFNh
bXBsZSBNb2RlIGVzdGltYXRvciBwcm9wb3NlZCBieSBCaWNrZWwgaW4gIk9uIGEgZmFzdCwgcm9i
dXN0CisvLyBlc3RpbWF0b3Igb2YgdGhlIG1vZGUiLCB3aXRoIGNvbXBsZXhpdHkgTyhOIGxvZyBO
KS4gVGhlIG1vZGUgaXMgbGVzcworLy8gYWZmZWN0ZWQgYnkgb3V0bGllcnMgaW4gaGlnaGx5LXNr
ZXdlZCBkaXN0cmlidXRpb25zIHRoYW4gdGhlIG1lZGlhbi4KKy8vIFRoZSBhdmVyYWdpbmcgb3Bl
cmF0aW9uIGJlbG93IGFzc3VtZXMgIlQiIGlzIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorVCBNb2RlT2ZTb3J0ZWQoY29uc3QgVCogY29uc3QgQUJTTF9S
QU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc29ydGVkLAorICAgICAgICAgICAgICAgY29uc3Qgc2l6
ZV90IG51bV92YWx1ZXMpIHsKKyAgc2l6ZV90IGlkeF9iZWdpbiA9IDA7CisgIHNpemVfdCBoYWxm
X2NvdW50ID0gbnVtX3ZhbHVlcyAvIDI7CisgIHdoaWxlIChoYWxmX2NvdW50ID4gMSkgeworICAg
IGlkeF9iZWdpbiA9IE1pblJhbmdlKHNvcnRlZCwgaWR4X2JlZ2luLCBoYWxmX2NvdW50KTsKKyAg
ICBoYWxmX2NvdW50ID4+PSAxOworICB9CisKKyAgY29uc3QgVCB4ID0gc29ydGVkW2lkeF9iZWdp
biArIDBdOworICBpZiAoaGFsZl9jb3VudCA9PSAwKSB7CisgICAgcmV0dXJuIHg7CisgIH0KKyAg
QUJTTF9SQVdfQ0hFQ0soaGFsZl9jb3VudCA9PSAxLCAiU2hvdWxkIHN0b3AgYXQgaGFsZl9jb3Vu
dD0xIik7CisgIGNvbnN0IFQgYXZlcmFnZSA9ICh4ICsgc29ydGVkW2lkeF9iZWdpbiArIDFdICsg
MSkgLyAyOworICByZXR1cm4gYXZlcmFnZTsKK30KKworLy8gUmV0dXJucyB0aGUgbW9kZS4gU2lk
ZSBlZmZlY3Q6IHNvcnRzICJ2YWx1ZXMiLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitUIE1vZGUo
VCogdmFsdWVzLCBjb25zdCBzaXplX3QgbnVtX3ZhbHVlcykgeworICBDb3VudGluZ1NvcnQodmFs
dWVzLCBudW1fdmFsdWVzKTsKKyAgcmV0dXJuIE1vZGVPZlNvcnRlZCh2YWx1ZXMsIG51bV92YWx1
ZXMpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitUIE1vZGUoVCAoJnZh
bHVlcylbTl0pIHsKKyAgcmV0dXJuIE1vZGUoJnZhbHVlc1swXSwgTik7Cit9CisKKy8vIFJldHVy
bnMgdGhlIG1lZGlhbiB2YWx1ZS4gU2lkZSBlZmZlY3Q6IHNvcnRzICJ2YWx1ZXMiLgordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitUIE1lZGlhbihUKiB2YWx1ZXMsIGNvbnN0IHNpemVfdCBudW1fdmFs
dWVzKSB7CisgIEFCU0xfUkFXX0NIRUNLKG51bV92YWx1ZXMgIT0gMCwgIkVtcHR5IGlucHV0Iik7
CisgIHN0ZDo6c29ydCh2YWx1ZXMsIHZhbHVlcyArIG51bV92YWx1ZXMpOworICBjb25zdCBzaXpl
X3QgaGFsZiA9IG51bV92YWx1ZXMgLyAyOworICAvLyBPZGQgY291bnQ6IHJldHVybiBtaWRkbGUK
KyAgaWYgKG51bV92YWx1ZXMgJSAyKSB7CisgICAgcmV0dXJuIHZhbHVlc1toYWxmXTsKKyAgfQor
ICAvLyBFdmVuIGNvdW50OiByZXR1cm4gYXZlcmFnZSBvZiBtaWRkbGUgdHdvLgorICByZXR1cm4g
KHZhbHVlc1toYWxmXSArIHZhbHVlc1toYWxmIC0gMV0gKyAxKSAvIDI7Cit9CisKKy8vIFJldHVy
bnMgYSByb2J1c3QgbWVhc3VyZSBvZiB2YXJpYWJpbGl0eS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorVCBNZWRpYW5BYnNvbHV0ZURldmlhdGlvbihjb25zdCBUKiB2YWx1ZXMsIGNvbnN0IHNpemVf
dCBudW1fdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUIG1lZGlhbikg
eworICBBQlNMX1JBV19DSEVDSyhudW1fdmFsdWVzICE9IDAsICJFbXB0eSBpbnB1dCIpOworICBz
dGQ6OnZlY3RvcjxUPiBhYnNfZGV2aWF0aW9uczsKKyAgYWJzX2RldmlhdGlvbnMucmVzZXJ2ZShu
dW1fdmFsdWVzKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fdmFsdWVzOyArK2kpIHsK
KyAgICBjb25zdCBpbnQ2NF90IGFicyA9IHN0ZDo6YWJzKGludDY0X3QodmFsdWVzW2ldKSAtIGlu
dDY0X3QobWVkaWFuKSk7CisgICAgYWJzX2RldmlhdGlvbnMucHVzaF9iYWNrKHN0YXRpY19jYXN0
PFQ+KGFicykpOworICB9CisgIHJldHVybiBNZWRpYW4oYWJzX2RldmlhdGlvbnMuZGF0YSgpLCBu
dW1fdmFsdWVzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJvYnVzdF9zdGF0aXN0aWNzCisKKy8v
IFRpY2tzIDo9IHBsYXRmb3JtLXNwZWNpZmljIHRpbWVyIHZhbHVlcyAoQ1BVIGN5Y2xlcyBvbiB4
ODYpLiBNdXN0IGJlCisvLyB1bnNpZ25lZCB0byBndWFyYW50ZWUgd3JhcGFyb3VuZCBvbiBvdmVy
Zmxvdy4gMzIgYml0IHRpbWVycyBhcmUgZmFzdGVyIHRvCisvLyByZWFkIHRoYW4gNjQgYml0Lgor
dXNpbmcgVGlja3MgPSB1aW50MzJfdDsKKworLy8gUmV0dXJucyB0aW1lciBvdmVyaGVhZCAvIG1p
bmltdW0gbWVhc3VyYWJsZSBkaWZmZXJlbmNlLgorVGlja3MgVGltZXJSZXNvbHV0aW9uKCkgewor
ICAvLyBOZXN0ZWQgbG9vcCBhdm9pZHMgZXhjZWVkaW5nIHN0YWNrL0wxIGNhcGFjaXR5LgorICBU
aWNrcyByZXBldGl0aW9uc1tQYXJhbXM6OmtUaW1lclNhbXBsZXNdOworICBmb3IgKHNpemVfdCBy
ZXAgPSAwOyByZXAgPCBQYXJhbXM6OmtUaW1lclNhbXBsZXM7ICsrcmVwKSB7CisgICAgVGlja3Mg
c2FtcGxlc1tQYXJhbXM6OmtUaW1lclNhbXBsZXNdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgUGFyYW1zOjprVGltZXJTYW1wbGVzOyArK2kpIHsKKyAgICAgIGNvbnN0IFRpY2tzIHQwID0g
dGltZXI6OlN0YXJ0MzIoKTsKKyAgICAgIGNvbnN0IFRpY2tzIHQxID0gdGltZXI6OlN0b3AzMigp
OworICAgICAgc2FtcGxlc1tpXSA9IHQxIC0gdDA7CisgICAgfQorICAgIHJlcGV0aXRpb25zW3Jl
cF0gPSByb2J1c3Rfc3RhdGlzdGljczo6TW9kZShzYW1wbGVzKTsKKyAgfQorICByZXR1cm4gcm9i
dXN0X3N0YXRpc3RpY3M6Ok1vZGUocmVwZXRpdGlvbnMpOworfQorCitzdGF0aWMgY29uc3QgVGlj
a3MgdGltZXJfcmVzb2x1dGlvbiA9IFRpbWVyUmVzb2x1dGlvbigpOworCisvLyBFc3RpbWF0ZXMg
dGhlIGV4cGVjdGVkIHZhbHVlIG9mICJsYW1iZGEiIHZhbHVlcyB3aXRoIGEgdmFyaWFibGUgbnVt
YmVyIG9mCisvLyBzYW1wbGVzIHVudGlsIHRoZSB2YXJpYWJpbGl0eSAicmVsX21hZCIgaXMgbGVz
cyB0aGFuICJtYXhfcmVsX21hZCIuCit0ZW1wbGF0ZSA8Y2xhc3MgTGFtYmRhPgorVGlja3MgU2Ft
cGxlVW50aWxTdGFibGUoY29uc3QgZG91YmxlIG1heF9yZWxfbWFkLCBkb3VibGUqIHJlbF9tYWQs
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXJhbXMmIHAsIGNvbnN0IExhbWJkYSYg
bGFtYmRhKSB7CisgIGF1dG8gbWVhc3VyZV9kdXJhdGlvbiA9IFsmbGFtYmRhXSgpIC0+IFRpY2tz
IHsKKyAgICBjb25zdCBUaWNrcyB0MCA9IHRpbWVyOjpTdGFydDMyKCk7CisgICAgbGFtYmRhKCk7
CisgICAgY29uc3QgVGlja3MgdDEgPSB0aW1lcjo6U3RvcDMyKCk7CisgICAgcmV0dXJuIHQxIC0g
dDA7CisgIH07CisKKyAgLy8gQ2hvb3NlIGluaXRpYWwgc2FtcGxlc19wZXJfZXZhbCBiYXNlZCBv
biBhIHNpbmdsZSBlc3RpbWF0ZWQgZHVyYXRpb24uCisgIFRpY2tzIGVzdCA9IG1lYXN1cmVfZHVy
YXRpb24oKTsKKyAgc3RhdGljIGNvbnN0IGRvdWJsZSB0aWNrc19wZXJfc2Vjb25kID0gSW52YXJp
YW50VGlja3NQZXJTZWNvbmQoKTsKKyAgY29uc3Qgc2l6ZV90IHRpY2tzX3Blcl9ldmFsID0gdGlj
a3NfcGVyX3NlY29uZCAqIHAuc2Vjb25kc19wZXJfZXZhbDsKKyAgc2l6ZV90IHNhbXBsZXNfcGVy
X2V2YWwgPSB0aWNrc19wZXJfZXZhbCAvIGVzdDsKKyAgc2FtcGxlc19wZXJfZXZhbCA9IChzdGQ6
Om1heCkoc2FtcGxlc19wZXJfZXZhbCwgcC5taW5fc2FtcGxlc19wZXJfZXZhbCk7CisKKyAgc3Rk
Ojp2ZWN0b3I8VGlja3M+IHNhbXBsZXM7CisgIHNhbXBsZXMucmVzZXJ2ZSgxICsgc2FtcGxlc19w
ZXJfZXZhbCk7CisgIHNhbXBsZXMucHVzaF9iYWNrKGVzdCk7CisKKyAgLy8gUGVyY2VudGFnZSBp
cyB0b28gc3RyaWN0IGZvciB0aW55IGRpZmZlcmVuY2VzLCBzbyBhbHNvIGFsbG93IGEgc21hbGwK
KyAgLy8gYWJzb2x1dGUgIm1lZGlhbiBhYnNvbHV0ZSBkZXZpYXRpb24iLgorICBjb25zdCBUaWNr
cyBtYXhfYWJzX21hZCA9ICh0aW1lcl9yZXNvbHV0aW9uICsgOTkpIC8gMTAwOworICAqcmVsX21h
ZCA9IDAuMDsgIC8vIGVuc3VyZSBpbml0aWFsaXplZAorCisgIGZvciAoc2l6ZV90IGV2YWwgPSAw
OyBldmFsIDwgcC5tYXhfZXZhbHM7ICsrZXZhbCwgc2FtcGxlc19wZXJfZXZhbCAqPSAyKSB7Cisg
ICAgc2FtcGxlcy5yZXNlcnZlKHNhbXBsZXMuc2l6ZSgpICsgc2FtcGxlc19wZXJfZXZhbCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW1wbGVzX3Blcl9ldmFsOyArK2kpIHsKKyAgICAg
IGNvbnN0IFRpY2tzIHIgPSBtZWFzdXJlX2R1cmF0aW9uKCk7CisgICAgICBzYW1wbGVzLnB1c2hf
YmFjayhyKTsKKyAgICB9CisKKyAgICBpZiAoc2FtcGxlcy5zaXplKCkgPj0gcC5taW5fbW9kZV9z
YW1wbGVzKSB7CisgICAgICBlc3QgPSByb2J1c3Rfc3RhdGlzdGljczo6TW9kZShzYW1wbGVzLmRh
dGEoKSwgc2FtcGxlcy5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAvLyBGb3IgImZldyIg
KGRlcGVuZHMgYWxzbyBvbiB0aGUgdmFyaWFuY2UpIHNhbXBsZXMsIE1lZGlhbiBpcyBzYWZlci4K
KyAgICAgIGVzdCA9IHJvYnVzdF9zdGF0aXN0aWNzOjpNZWRpYW4oc2FtcGxlcy5kYXRhKCksIHNh
bXBsZXMuc2l6ZSgpKTsKKyAgICB9CisgICAgQUJTTF9SQVdfQ0hFQ0soZXN0ICE9IDAsICJFc3Rp
bWF0b3IgcmV0dXJuZWQgemVybyBkdXJhdGlvbiIpOworCisgICAgLy8gTWVkaWFuIGFic29sdXRl
IGRldmlhdGlvbiAobWFkKSBpcyBhIHJvYnVzdCBtZWFzdXJlIG9mICd2YXJpYWJpbGl0eScuCisg
ICAgY29uc3QgVGlja3MgYWJzX21hZCA9IHJvYnVzdF9zdGF0aXN0aWNzOjpNZWRpYW5BYnNvbHV0
ZURldmlhdGlvbigKKyAgICAgICAgc2FtcGxlcy5kYXRhKCksIHNhbXBsZXMuc2l6ZSgpLCBlc3Qp
OworICAgICpyZWxfbWFkID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxpbnQ+KGFi
c19tYWQpKSAvIGVzdDsKKworICAgIGlmICgqcmVsX21hZCA8PSBtYXhfcmVsX21hZCB8fCBhYnNf
bWFkIDw9IG1heF9hYnNfbWFkKSB7CisgICAgICBpZiAocC52ZXJib3NlKSB7CisgICAgICAgIEFC
U0xfUkFXX0xPRyhJTkZPLAorICAgICAgICAgICAgICAgICAgICAgIiU2enUgc2FtcGxlcyA9PiAl
NXUgKGFic19tYWQ9JTR1LCByZWxfbWFkPSU0LjJmJSUpXG4iLAorICAgICAgICAgICAgICAgICAg
ICAgc2FtcGxlcy5zaXplKCksIGVzdCwgYWJzX21hZCwgKnJlbF9tYWQgKiAxMDAuMCk7CisgICAg
ICB9CisgICAgICByZXR1cm4gZXN0OworICAgIH0KKyAgfQorCisgIGlmIChwLnZlcmJvc2UpIHsK
KyAgICBBQlNMX1JBV19MT0coV0FSTklORywKKyAgICAgICAgICAgICAgICAgInJlbF9tYWQ9JTQu
MmYlJSBzdGlsbCBleGNlZWRzICU0LjJmJSUgYWZ0ZXIgJTZ6dSBzYW1wbGVzLlxuIiwKKyAgICAg
ICAgICAgICAgICAgKnJlbF9tYWQgKiAxMDAuMCwgbWF4X3JlbF9tYWQgKiAxMDAuMCwgc2FtcGxl
cy5zaXplKCkpOworICB9CisgIHJldHVybiBlc3Q7Cit9CisKK3VzaW5nIElucHV0VmVjID0gc3Rk
Ojp2ZWN0b3I8RnVuY0lucHV0PjsKKworLy8gUmV0dXJucyB2ZWN0b3Igb2YgdW5pcXVlIGlucHV0
IHZhbHVlcy4KK0lucHV0VmVjIFVuaXF1ZUlucHV0cyhjb25zdCBGdW5jSW5wdXQqIGlucHV0cywg
Y29uc3Qgc2l6ZV90IG51bV9pbnB1dHMpIHsKKyAgSW5wdXRWZWMgdW5pcXVlKGlucHV0cywgaW5w
dXRzICsgbnVtX2lucHV0cyk7CisgIHN0ZDo6c29ydCh1bmlxdWUuYmVnaW4oKSwgdW5pcXVlLmVu
ZCgpKTsKKyAgdW5pcXVlLmVyYXNlKHN0ZDo6dW5pcXVlKHVuaXF1ZS5iZWdpbigpLCB1bmlxdWUu
ZW5kKCkpLCB1bmlxdWUuZW5kKCkpOworICByZXR1cm4gdW5pcXVlOworfQorCisvLyBSZXR1cm5z
IGhvdyBvZnRlbiB3ZSBuZWVkIHRvIGNhbGwgZnVuYyBmb3Igc3VmZmljaWVudCBwcmVjaXNpb24s
IG9yIHplcm8KKy8vIG9uIGZhaWx1cmUgKGUuZy4gdGhlIGVsYXBzZWQgdGltZSBpcyB0b28gbG9u
ZyBmb3IgYSAzMi1iaXQgdGljayBjb3VudCkuCitzaXplX3QgTnVtU2tpcChjb25zdCBGdW5jIGZ1
bmMsIGNvbnN0IHZvaWQqIGFyZywgY29uc3QgSW5wdXRWZWMmIHVuaXF1ZSwKKyAgICAgICAgICAg
ICAgIGNvbnN0IFBhcmFtcyYgcCkgeworICAvLyBNaW4gZWxhcHNlZCB0aWNrcyBmb3IgYW55IGlu
cHV0LgorICBUaWNrcyBtaW5fZHVyYXRpb24gPSB+MHU7CisKKyAgZm9yIChjb25zdCBGdW5jSW5w
dXQgaW5wdXQgOiB1bmlxdWUpIHsKKyAgICAvLyBNYWtlIHN1cmUgYSAzMi1iaXQgdGltZXIgaXMg
c3VmZmljaWVudC4KKyAgICBjb25zdCB1aW50NjRfdCB0MCA9IHRpbWVyOjpTdGFydDY0KCk7Cisg
ICAgUHJldmVudEVsaXNpb24oZnVuYyhhcmcsIGlucHV0KSk7CisgICAgY29uc3QgdWludDY0X3Qg
dDEgPSB0aW1lcjo6U3RvcDY0KCk7CisgICAgY29uc3QgdWludDY0X3QgZWxhcHNlZCA9IHQxIC0g
dDA7CisgICAgaWYgKGVsYXBzZWQgPj0gKDFVTEwgPDwgMzApKSB7CisgICAgICBBQlNMX1JBV19M
T0coV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAiTWVhc3VyZW1lbnQgZmFpbGVkOiBuZWVk
IDY0LWJpdCB0aW1lciBmb3IgaW5wdXQ9JXp1XG4iLAorICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHNpemVfdD4oaW5wdXQpKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGRv
dWJsZSByZWxfbWFkOworICAgIGNvbnN0IFRpY2tzIHRvdGFsID0gU2FtcGxlVW50aWxTdGFibGUo
CisgICAgICAgIHAudGFyZ2V0X3JlbF9tYWQsICZyZWxfbWFkLCBwLAorICAgICAgICBbZnVuYywg
YXJnLCBpbnB1dF0oKSB7IFByZXZlbnRFbGlzaW9uKGZ1bmMoYXJnLCBpbnB1dCkpOyB9KTsKKyAg
ICBtaW5fZHVyYXRpb24gPSAoc3RkOjptaW4pKG1pbl9kdXJhdGlvbiwgdG90YWwgLSB0aW1lcl9y
ZXNvbHV0aW9uKTsKKyAgfQorCisgIC8vIE51bWJlciBvZiByZXBldGl0aW9ucyByZXF1aXJlZCB0
byByZWFjaCB0aGUgdGFyZ2V0IHJlc29sdXRpb24uCisgIGNvbnN0IHNpemVfdCBtYXhfc2tpcCA9
IHAucHJlY2lzaW9uX2Rpdmlzb3I7CisgIC8vIE51bWJlciBvZiByZXBldGl0aW9ucyBnaXZlbiB0
aGUgZXN0aW1hdGVkIGR1cmF0aW9uLgorICBjb25zdCBzaXplX3QgbnVtX3NraXAgPQorICAgICAg
bWluX2R1cmF0aW9uID09IDAgPyAwIDogKG1heF9za2lwICsgbWluX2R1cmF0aW9uIC0gMSkgLyBt
aW5fZHVyYXRpb247CisgIGlmIChwLnZlcmJvc2UpIHsKKyAgICBBQlNMX1JBV19MT0coSU5GTywg
InJlcz0ldSBtYXhfc2tpcD0lenUgbWluX2R1cj0ldSBudW1fc2tpcD0lenVcbiIsCisgICAgICAg
ICAgICAgICAgIHRpbWVyX3Jlc29sdXRpb24sIG1heF9za2lwLCBtaW5fZHVyYXRpb24sIG51bV9z
a2lwKTsKKyAgfQorICByZXR1cm4gbnVtX3NraXA7Cit9CisKKy8vIFJlcGxpY2F0ZXMgaW5wdXRz
IHVudGlsIHdlIGNhbiBvbWl0ICJudW1fc2tpcCIgb2NjdXJyZW5jZXMgb2YgYW4gaW5wdXQuCitJ
bnB1dFZlYyBSZXBsaWNhdGVJbnB1dHMoY29uc3QgRnVuY0lucHV0KiBpbnB1dHMsIGNvbnN0IHNp
emVfdCBudW1faW5wdXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBu
dW1fdW5pcXVlLCBjb25zdCBzaXplX3QgbnVtX3NraXAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUGFyYW1zJiBwKSB7CisgIElucHV0VmVjIGZ1bGw7CisgIGlmIChudW1fdW5pcXVl
ID09IDEpIHsKKyAgICBmdWxsLmFzc2lnbihwLnN1YnNldF9yYXRpbyAqIG51bV9za2lwLCBpbnB1
dHNbMF0pOworICAgIHJldHVybiBmdWxsOworICB9CisKKyAgZnVsbC5yZXNlcnZlKHAuc3Vic2V0
X3JhdGlvICogbnVtX3NraXAgKiBudW1faW5wdXRzKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwLnN1YnNldF9yYXRpbyAqIG51bV9za2lwOyArK2kpIHsKKyAgICBmdWxsLmluc2VydChmdWxs
LmVuZCgpLCBpbnB1dHMsIGlucHV0cyArIG51bV9pbnB1dHMpOworICB9CisgIGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTx1aW50MzJfdD4gcm5nOworICBzdGQ6OnNodWZmbGUo
ZnVsbC5iZWdpbigpLCBmdWxsLmVuZCgpLCBybmcpOworICByZXR1cm4gZnVsbDsKK30KKworLy8g
Q29waWVzIHRoZSAiZnVsbCIgdG8gInN1YnNldCIgaW4gdGhlIHNhbWUgb3JkZXIsIGJ1dCB3aXRo
ICJudW1fc2tpcCIKKy8vIHJhbmRvbWx5IHNlbGVjdGVkIG9jY3VycmVuY2VzIG9mICJpbnB1dF90
b19za2lwIiByZW1vdmVkLgordm9pZCBGaWxsU3Vic2V0KGNvbnN0IElucHV0VmVjJiBmdWxsLCBj
b25zdCBGdW5jSW5wdXQgaW5wdXRfdG9fc2tpcCwKKyAgICAgICAgICAgICAgICBjb25zdCBzaXpl
X3QgbnVtX3NraXAsIElucHV0VmVjKiBzdWJzZXQpIHsKKyAgY29uc3Qgc2l6ZV90IGNvdW50ID0g
c3RkOjpjb3VudChmdWxsLmJlZ2luKCksIGZ1bGwuZW5kKCksIGlucHV0X3RvX3NraXApOworICAv
LyBHZW5lcmF0ZSBudW1fc2tpcCByYW5kb20gaW5kaWNlczogd2hpY2ggb2NjdXJyZW5jZSB0byBz
a2lwLgorICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gb21pdDsKKyAgLy8gUmVwbGFjZW1lbnQgZm9y
IHN0ZDo6aW90YSwgbm90IHlldCBhdmFpbGFibGUgaW4gTVNWQyBidWlsZHMuCisgIG9taXQucmVz
ZXJ2ZShjb3VudCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAg
IG9taXQucHVzaF9iYWNrKGkpOworICB9CisgIC8vIG9taXRbXSBpcyB0aGUgc2FtZSBvbiBldmVy
eSBjYWxsLCBidXQgdGhhdCdzIE9LIGJlY2F1c2UgdGhleSBpZGVudGlmeSB0aGUKKyAgLy8gTnRo
IGluc3RhbmNlIG9mIGlucHV0X3RvX3NraXAsIHNvIHRoZSBwb3NpdGlvbiB3aXRoaW4gZnVsbFtd
IGRpZmZlcnMuCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTx1aW50MzJf
dD4gcm5nOworICBzdGQ6OnNodWZmbGUob21pdC5iZWdpbigpLCBvbWl0LmVuZCgpLCBybmcpOwor
ICBvbWl0LnJlc2l6ZShudW1fc2tpcCk7CisgIHN0ZDo6c29ydChvbWl0LmJlZ2luKCksIG9taXQu
ZW5kKCkpOworCisgIHVpbnQzMl90IG9jY3VycmVuY2UgPSB+MHU7ICAvLyAwIGFmdGVyIHByZWlu
Y3JlbWVudAorICBzaXplX3QgaWR4X29taXQgPSAwOyAgICAgICAgLy8gY3Vyc29yIHdpdGhpbiBv
bWl0W10KKyAgc2l6ZV90IGlkeF9zdWJzZXQgPSAwOyAgICAgIC8vIGN1cnNvciB3aXRoaW4gKnN1
YnNldAorICBmb3IgKGNvbnN0IEZ1bmNJbnB1dCBuZXh0IDogZnVsbCkgeworICAgIGlmIChuZXh0
ID09IGlucHV0X3RvX3NraXApIHsKKyAgICAgICsrb2NjdXJyZW5jZTsKKyAgICAgIC8vIEhhdmVu
J3QgcmVtb3ZlZCBlbm91Z2ggYWxyZWFkeQorICAgICAgaWYgKGlkeF9vbWl0IDwgbnVtX3NraXAp
IHsKKyAgICAgICAgLy8gVGhpcyBvbmUgaXMgdXAgZm9yIHJlbW92YWwKKyAgICAgICAgaWYgKG9j
Y3VycmVuY2UgPT0gb21pdFtpZHhfb21pdF0pIHsKKyAgICAgICAgICArK2lkeF9vbWl0OworICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGlmIChpZHhf
c3Vic2V0IDwgc3Vic2V0LT5zaXplKCkpIHsKKyAgICAgICgqc3Vic2V0KVtpZHhfc3Vic2V0Kytd
ID0gbmV4dDsKKyAgICB9CisgIH0KKyAgQUJTTF9SQVdfQ0hFQ0soaWR4X3N1YnNldCA9PSBzdWJz
ZXQtPnNpemUoKSwgImlkeF9zdWJzZXQgbm90IGF0IGVuZCIpOworICBBQlNMX1JBV19DSEVDSyhp
ZHhfb21pdCA9PSBvbWl0LnNpemUoKSwgImlkeF9vbWl0IG5vdCBhdCBlbmQiKTsKKyAgQUJTTF9S
QVdfQ0hFQ0sob2NjdXJyZW5jZSA9PSBjb3VudCAtIDEsICJvY2N1cnJlbmNlIG5vdCBhdCBlbmQi
KTsKK30KKworLy8gUmV0dXJucyB0b3RhbCB0aWNrcyBlbGFwc2VkIGZvciBhbGwgaW5wdXRzLgor
VGlja3MgVG90YWxEdXJhdGlvbihjb25zdCBGdW5jIGZ1bmMsIGNvbnN0IHZvaWQqIGFyZywgY29u
c3QgSW5wdXRWZWMqIGlucHV0cywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFyYW1zJiBw
LCBkb3VibGUqIG1heF9yZWxfbWFkKSB7CisgIGRvdWJsZSByZWxfbWFkOworICBjb25zdCBUaWNr
cyBkdXJhdGlvbiA9CisgICAgICBTYW1wbGVVbnRpbFN0YWJsZShwLnRhcmdldF9yZWxfbWFkLCAm
cmVsX21hZCwgcCwgW2Z1bmMsIGFyZywgaW5wdXRzXSgpIHsKKyAgICAgICAgZm9yIChjb25zdCBG
dW5jSW5wdXQgaW5wdXQgOiAqaW5wdXRzKSB7CisgICAgICAgICAgUHJldmVudEVsaXNpb24oZnVu
YyhhcmcsIGlucHV0KSk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAqbWF4X3JlbF9tYWQgPSAo
c3RkOjptYXgpKCptYXhfcmVsX21hZCwgcmVsX21hZCk7CisgIHJldHVybiBkdXJhdGlvbjsKK30K
KworLy8gKE5lYXJseSkgZW1wdHkgRnVuYyBmb3IgbWVhc3VyaW5nIHRpbWVyIG92ZXJoZWFkL3Jl
c29sdXRpb24uCitBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfTkVWRVJfSU5MSU5FIEZ1
bmNPdXRwdXQKK0VtcHR5RnVuYyhjb25zdCB2b2lkKiBhcmcsIGNvbnN0IEZ1bmNJbnB1dCBpbnB1
dCkgeworICByZXR1cm4gaW5wdXQ7Cit9CisKKy8vIFJldHVybnMgb3ZlcmhlYWQgb2YgYWNjZXNz
aW5nIGlucHV0c1tdIGFuZCBjYWxsaW5nIGEgZnVuY3Rpb247IHRoaXMgd2lsbAorLy8gYmUgZGVk
dWN0ZWQgZnJvbSBmdXR1cmUgVG90YWxEdXJhdGlvbiByZXR1cm4gdmFsdWVzLgorVGlja3MgT3Zl
cmhlYWQoY29uc3Qgdm9pZCogYXJnLCBjb25zdCBJbnB1dFZlYyogaW5wdXRzLCBjb25zdCBQYXJh
bXMmIHApIHsKKyAgZG91YmxlIHJlbF9tYWQ7CisgIC8vIFplcm8gdG9sZXJhbmNlIGJlY2F1c2Ug
cmVwZWF0YWJpbGl0eSBpcyBjcnVjaWFsIGFuZCBFbXB0eUZ1bmMgaXMgZmFzdC4KKyAgcmV0dXJu
IFNhbXBsZVVudGlsU3RhYmxlKDAuMCwgJnJlbF9tYWQsIHAsIFthcmcsIGlucHV0c10oKSB7Cisg
ICAgZm9yIChjb25zdCBGdW5jSW5wdXQgaW5wdXQgOiAqaW5wdXRzKSB7CisgICAgICBQcmV2ZW50
RWxpc2lvbihFbXB0eUZ1bmMoYXJnLCBpbnB1dCkpOworICAgIH0KKyAgfSk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZQorCit2b2lkIFBpblRocmVhZFRvQ1BVKGludCBjcHUpIHsKKyAgLy8gV2UgbWln
aHQgbWlncmF0ZSB0byBhbm90aGVyIENQVSBiZWZvcmUgcGlubmluZyBiZWxvdywgYnV0IGF0IGxl
YXN0IGNwdQorICAvLyB3aWxsIGJlIG9uZSBvZiB0aGUgQ1BVcyBvbiB3aGljaCB0aGlzIHRocmVh
ZCByYW4uCisjaWYgZGVmaW5lZChBQlNMX09TX1dJTikKKyAgaWYgKGNwdSA8IDApIHsKKyAgICBj
cHUgPSBzdGF0aWNfY2FzdDxpbnQ+KEdldEN1cnJlbnRQcm9jZXNzb3JOdW1iZXIoKSk7CisgICAg
QUJTTF9SQVdfQ0hFQ0soY3B1ID49IDAsICJQaW5UaHJlYWRUb0NQVSBkZXRlY3QgZmFpbGVkIik7
CisgICAgaWYgKGNwdSA+PSA2NCkgeworICAgICAgLy8gTk9URTogT24gd2luZSwgYXQgbGVhc3Qs
IEdldEN1cnJlbnRQcm9jZXNzb3JOdW1iZXIoKSBzb21ldGltZXMgcmV0dXJucworICAgICAgLy8g
YSB2YWx1ZSA+IDY0LCB3aGljaCBpcyBvdXQgb2YgcmFuZ2UuIFdoZW4gdGhpcyBoYXBwZW5zLCBs
b2cgYSBtZXNzYWdlCisgICAgICAvLyBhbmQgZG9uJ3Qgc2V0IGEgY3B1IGFmZmluaXR5LgorICAg
ICAgQUJTTF9SQVdfTE9HKEVSUk9SLCAiSW52YWxpZCBDUFUgbnVtYmVyOiAlZCIsIGNwdSk7Cisg
ICAgICByZXR1cm47CisgICAgfQorICB9IGVsc2UgaWYgKGNwdSA+PSA2NCkgeworICAgIC8vIFVz
ZXIgc3BlY2lmaWVkIGFuIGV4cGxpY2l0IENQVSBhZmZpbml0eSA+IHRoZSB2YWxpZCByYW5nZS4K
KyAgICBBQlNMX1JBV19MT0coRkFUQUwsICJJbnZhbGlkIENQVSBudW1iZXI6ICVkIiwgY3B1KTsK
KyAgfQorICBjb25zdCBEV09SRF9QVFIgcHJldiA9IFNldFRocmVhZEFmZmluaXR5TWFzayhHZXRD
dXJyZW50VGhyZWFkKCksIDFVTEwgPDwgY3B1KTsKKyAgQUJTTF9SQVdfQ0hFQ0socHJldiAhPSAw
LCAiU2V0QWZmaW5pdHkgZmFpbGVkIik7CisjZWxpZiBkZWZpbmVkKEFCU0xfT1NfTElOVVgpICYm
ICFkZWZpbmVkKEFCU0xfT1NfQU5EUk9JRCkKKyAgaWYgKGNwdSA8IDApIHsKKyAgICBjcHUgPSBz
Y2hlZF9nZXRjcHUoKTsKKyAgICBBQlNMX1JBV19DSEVDSyhjcHUgPj0gMCwgIlBpblRocmVhZFRv
Q1BVIGRldGVjdCBmYWlsZWQiKTsKKyAgfQorICBjb25zdCBwaWRfdCBwaWQgPSAwOyAgLy8gY3Vy
cmVudCB0aHJlYWQKKyAgY3B1X3NldF90IHNldDsKKyAgQ1BVX1pFUk8oJnNldCk7CisgIENQVV9T
RVQoY3B1LCAmc2V0KTsKKyAgY29uc3QgaW50IGVyciA9IHNjaGVkX3NldGFmZmluaXR5KHBpZCwg
c2l6ZW9mKHNldCksICZzZXQpOworICBBQlNMX1JBV19DSEVDSyhlcnIgPT0gMCwgIlNldEFmZmlu
aXR5IGZhaWxlZCIpOworI2VuZGlmCit9CisKKy8vIFJldHVybnMgdGljayByYXRlLiBJbnZhcmlh
bnQgbWVhbnMgdGhlIHRpY2sgY291bnRlciBmcmVxdWVuY3kgaXMgaW5kZXBlbmRlbnQKKy8vIG9m
IENQVSB0aHJvdHRsaW5nIG9yIHNsZWVwLiBNYXkgYmUgZXhwZW5zaXZlLCBjYWxsZXIgc2hvdWxk
IGNhY2hlIHRoZSByZXN1bHQuCitkb3VibGUgSW52YXJpYW50VGlja3NQZXJTZWNvbmQoKSB7Cisj
aWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQorICByZXR1cm4gX19wcGNfZ2V0X3RpbWViYXNlX2Zy
ZXEoKTsKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkKKyAgLy8gV2UgYXNzdW1lIHRo
ZSBUU0MgaXMgaW52YXJpYW50OyBpdCBpcyBvbiBhbGwgcmVjZW50IEludGVsL0FNRCBDUFVzLgor
ICByZXR1cm4gcGxhdGZvcm06Ok5vbWluYWxDbG9ja1JhdGUoKTsKKyNlbHNlCisgIC8vIEZhbGwg
YmFjayB0byBjbG9ja19nZXR0aW1lIG5hbm9zZWNvbmRzLgorICByZXR1cm4gMUU5OworI2VuZGlm
Cit9CisKK3NpemVfdCBNZWFzdXJlSW1wbChjb25zdCBGdW5jIGZ1bmMsIGNvbnN0IHZvaWQqIGFy
ZywgY29uc3Qgc2l6ZV90IG51bV9za2lwLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IElucHV0
VmVjJiB1bmlxdWUsIGNvbnN0IElucHV0VmVjJiBmdWxsLAorICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBhcmFtcyYgcCwgUmVzdWx0KiByZXN1bHRzKSB7CisgIGNvbnN0IGZsb2F0IG11bCA9IDEu
MGYgLyBzdGF0aWNfY2FzdDxpbnQ+KG51bV9za2lwKTsKKworICBJbnB1dFZlYyBzdWJzZXQoZnVs
bC5zaXplKCkgLSBudW1fc2tpcCk7CisgIGNvbnN0IFRpY2tzIG92ZXJoZWFkID0gT3ZlcmhlYWQo
YXJnLCAmZnVsbCwgcCk7CisgIGNvbnN0IFRpY2tzIG92ZXJoZWFkX3NraXAgPSBPdmVyaGVhZChh
cmcsICZzdWJzZXQsIHApOworICBpZiAob3ZlcmhlYWQgPCBvdmVyaGVhZF9za2lwKSB7CisgICAg
QUJTTF9SQVdfTE9HKFdBUk5JTkcsICJNZWFzdXJlbWVudCBmYWlsZWQ6IG92ZXJoZWFkICV1IDwg
JXVcbiIsIG92ZXJoZWFkLAorICAgICAgICAgICAgICAgICBvdmVyaGVhZF9za2lwKTsKKyAgICBy
ZXR1cm4gMDsKKyAgfQorCisgIGlmIChwLnZlcmJvc2UpIHsKKyAgICBBQlNMX1JBV19MT0coSU5G
TywgIiNpbnB1dHM9JTV6dSwlNXp1IG92ZXJoZWFkPSU1dSwlNXVcbiIsIGZ1bGwuc2l6ZSgpLAor
ICAgICAgICAgICAgICAgICBzdWJzZXQuc2l6ZSgpLCBvdmVyaGVhZCwgb3ZlcmhlYWRfc2tpcCk7
CisgIH0KKworICBkb3VibGUgbWF4X3JlbF9tYWQgPSAwLjA7CisgIGNvbnN0IFRpY2tzIHRvdGFs
ID0gVG90YWxEdXJhdGlvbihmdW5jLCBhcmcsICZmdWxsLCBwLCAmbWF4X3JlbF9tYWQpOworCisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW5pcXVlLnNpemUoKTsgKytpKSB7CisgICAgRmlsbFN1
YnNldChmdWxsLCB1bmlxdWVbaV0sIG51bV9za2lwLCAmc3Vic2V0KTsKKyAgICBjb25zdCBUaWNr
cyB0b3RhbF9za2lwID0gVG90YWxEdXJhdGlvbihmdW5jLCBhcmcsICZzdWJzZXQsIHAsICZtYXhf
cmVsX21hZCk7CisKKyAgICBpZiAodG90YWwgPCB0b3RhbF9za2lwKSB7CisgICAgICBBQlNMX1JB
V19MT0coV0FSTklORywgIk1lYXN1cmVtZW50IGZhaWxlZDogdG90YWwgJXUgPCAldVxuIiwgdG90
YWwsCisgICAgICAgICAgICAgICAgICAgdG90YWxfc2tpcCk7CisgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBjb25zdCBUaWNrcyBkdXJhdGlvbiA9ICh0b3RhbCAtIG92ZXJoZWFkKSAtICh0
b3RhbF9za2lwIC0gb3ZlcmhlYWRfc2tpcCk7CisgICAgcmVzdWx0c1tpXS5pbnB1dCA9IHVuaXF1
ZVtpXTsKKyAgICByZXN1bHRzW2ldLnRpY2tzID0gZHVyYXRpb24gKiBtdWw7CisgICAgcmVzdWx0
c1tpXS52YXJpYWJpbGl0eSA9IG1heF9yZWxfbWFkOworICB9CisKKyAgcmV0dXJuIHVuaXF1ZS5z
aXplKCk7Cit9CisKK3NpemVfdCBNZWFzdXJlKGNvbnN0IEZ1bmMgZnVuYywgY29uc3Qgdm9pZCog
YXJnLCBjb25zdCBGdW5jSW5wdXQqIGlucHV0cywKKyAgICAgICAgICAgICAgIGNvbnN0IHNpemVf
dCBudW1faW5wdXRzLCBSZXN1bHQqIHJlc3VsdHMsIGNvbnN0IFBhcmFtcyYgcCkgeworICBBQlNM
X1JBV19DSEVDSyhudW1faW5wdXRzICE9IDAsICJObyBpbnB1dHMiKTsKKworICBjb25zdCBJbnB1
dFZlYyB1bmlxdWUgPSBVbmlxdWVJbnB1dHMoaW5wdXRzLCBudW1faW5wdXRzKTsKKyAgY29uc3Qg
c2l6ZV90IG51bV9za2lwID0gTnVtU2tpcChmdW5jLCBhcmcsIHVuaXF1ZSwgcCk7ICAvLyBuZXZl
ciAwCisgIGlmIChudW1fc2tpcCA9PSAwKSByZXR1cm4gMDsgIC8vIE51bVNraXAgYWxyZWFkeSBw
cmludGVkIGVycm9yIG1lc3NhZ2UKKworICBjb25zdCBJbnB1dFZlYyBmdWxsID0KKyAgICAgIFJl
cGxpY2F0ZUlucHV0cyhpbnB1dHMsIG51bV9pbnB1dHMsIHVuaXF1ZS5zaXplKCksIG51bV9za2lw
LCBwKTsKKworICAvLyBNZWFzdXJlSW1wbCBtYXkgZmFpbCB1cCB0byBwLm1heF9tZWFzdXJlX3Jl
dHJpZXMgdGltZXMuCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcC5tYXhfbWVhc3VyZV9yZXRy
aWVzOyBpKyspIHsKKyAgICBhdXRvIHJlc3VsdCA9IE1lYXN1cmVJbXBsKGZ1bmMsIGFyZywgbnVt
X3NraXAsIHVuaXF1ZSwgZnVsbCwgcCwgcmVzdWx0cyk7CisgICAgaWYgKHJlc3VsdCAhPSAwKSB7
CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgfQorICAvLyBBbGwgcmV0cmllcyBmYWls
ZWQuIChVbnVzdWFsKQorICByZXR1cm4gMDsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9p
bnRlcm5hbF9uYW5vYmVuY2htYXJrCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL25hbm9iZW5jaG1hcmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRl
cm5hbC9uYW5vYmVuY2htYXJrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJiNjUwZDE5MWI3Y2NkM2RiZmRjMDJh
N2ViOWMzNTFhZmIwMjFkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5h
bC9uYW5vYmVuY2htYXJrLmgKQEAgLTAsMCArMSwxNjggQEAKKy8vIENvcHlyaWdodCAyMDE3IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lO
VEVSTkFMX05BTk9CRU5DSE1BUktfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfTkFO
T0JFTkNITUFSS19IXworCisvLyBCZW5jaG1hcmtzIGZ1bmN0aW9ucyBvZiBhIHNpbmdsZSBpbnRl
Z2VyIGFyZ3VtZW50IHdpdGggcmVhbGlzdGljIGJyYW5jaAorLy8gcHJlZGljdGlvbiBoaXQgcmF0
ZXMuIFVzZXMgYSByb2J1c3QgZXN0aW1hdG9yIHRvIHN1bW1hcml6ZSB0aGUgbWVhc3VyZW1lbnRz
LgorLy8gVGhlIHByZWNpc2lvbiBpcyBhYm91dCAwLjIlLgorLy8KKy8vIEV4YW1wbGVzOiBzZWUg
bmFub2JlbmNobWFya190ZXN0LmNjLgorLy8KKy8vIEJhY2tncm91bmQ6IE1pY3JvYmVuY2htYXJr
cyBzdWNoIGFzIGh0dHA6Ly9naXRodWIuY29tL2dvb2dsZS9iZW5jaG1hcmsKKy8vIGNhbiBtZWFz
dXJlIGVsYXBzZWQgdGltZXMgb24gdGhlIG9yZGVyIG9mIGEgbWljcm9zZWNvbmQuIFNob3J0ZXIg
ZnVuY3Rpb25zCisvLyBhcmUgdHlwaWNhbGx5IG1lYXN1cmVkIGJ5IHJlcGVhdGluZyB0aGVtIHRo
b3VzYW5kcyBvZiB0aW1lcyBhbmQgZGl2aWRpbmcKKy8vIHRoZSB0b3RhbCBlbGFwc2VkIHRpbWUg
YnkgdGhpcyBjb3VudC4gVW5mb3J0dW5hdGVseSwgcmVwZXRpdGlvbiAoZXNwZWNpYWxseQorLy8g
d2l0aCB0aGUgc2FtZSBpbnB1dCBwYXJhbWV0ZXIhKSBpbmZsdWVuY2VzIHRoZSBydW50aW1lLiBJ
biB0aW1lLWNyaXRpY2FsCisvLyBjb2RlLCBpdCBpcyByZWFzb25hYmxlIHRvIGV4cGVjdCB3YXJt
IGluc3RydWN0aW9uL2RhdGEgY2FjaGVzIGFuZCBUTEJzLAorLy8gYnV0IGEgcGVyZmVjdCByZWNv
cmQgb2Ygd2hpY2ggYnJhbmNoZXMgd2lsbCBiZSB0YWtlbiBpcyB1bnJlYWxpc3RpYy4KKy8vIFVu
bGVzcyB0aGUgYXBwbGljYXRpb24gYWxzbyByZXBlYXRlZGx5IGludm9rZXMgdGhlIG1lYXN1cmVk
IGZ1bmN0aW9uIHdpdGgKKy8vIHRoZSBzYW1lIHBhcmFtZXRlciwgdGhlIGJlbmNobWFyayBpcyBt
ZWFzdXJpbmcgc29tZXRoaW5nIHZlcnkgZGlmZmVyZW50IC0KKy8vIGEgYmVzdC1jYXNlIHJlc3Vs
dCwgYWxtb3N0IGFzIGlmIHRoZSBwYXJhbWV0ZXIgd2VyZSBtYWRlIGEgY29tcGlsZS10aW1lCisv
LyBjb25zdGFudC4gVGhpcyBtYXkgbGVhZCB0byBlcnJvbmVvdXMgY29uY2x1c2lvbnMgYWJvdXQg
YnJhbmNoLWhlYXZ5CisvLyBhbGdvcml0aG1zIG91dHBlcmZvcm1pbmcgYnJhbmNoLWZyZWUgYWx0
ZXJuYXRpdmVzLgorLy8KKy8vIE91ciBhcHByb2FjaCBkaWZmZXJzIGluIHRocmVlIHdheXMuIEFk
ZGluZyBmZW5jZXMgdG8gdGhlIHRpbWVyIGZ1bmN0aW9ucworLy8gcmVkdWNlcyB2YXJpYWJpbGl0
eSBkdWUgdG8gaW5zdHJ1Y3Rpb24gcmVvcmRlcmluZywgaW1wcm92aW5nIHRoZSB0aW1lcgorLy8g
cmVzb2x1dGlvbiB0byBhYm91dCA0MCBDUFUgY3ljbGVzLiBIb3dldmVyLCBzaG9ydGVyIGZ1bmN0
aW9ucyBtdXN0IHN0aWxsCisvLyBiZSBpbnZva2VkIHJlcGVhdGVkbHkuIEZvciBtb3JlIHJlYWxp
c3RpYyBicmFuY2ggcHJlZGljdGlvbiBwZXJmb3JtYW5jZSwKKy8vIHdlIHZhcnkgdGhlIGlucHV0
IHBhcmFtZXRlciBhY2NvcmRpbmcgdG8gYSB1c2VyLXNwZWNpZmllZCBkaXN0cmlidXRpb24uCisv
LyBUaHVzLCBpbnN0ZWFkIG9mIFZhcnlJbnB1dHMoTWVhc3VyZShSZXBlYXQoZnVuYykpKSwgd2Ug
Y2hhbmdlIHRoZQorLy8gbG9vcCBuZXN0aW5nIHRvIE1lYXN1cmUoUmVwZWF0KFZhcnlJbnB1dHMo
ZnVuYykpKS4gV2UgYWxzbyBlc3RpbWF0ZSB0aGUKKy8vIGNlbnRyYWwgdGVuZGVuY3kgb2YgdGhl
IG1lYXN1cmVtZW50IHNhbXBsZXMgd2l0aCB0aGUgImhhbGYgc2FtcGxlIG1vZGUiLAorLy8gd2hp
Y2ggaXMgbW9yZSByb2J1c3QgdG8gb3V0bGllcnMgYW5kIHNrZXdlZCBkYXRhIHRoYW4gdGhlIG1l
YW4gb3IgbWVkaWFuLgorCisvLyBOT1RFOiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG11bHRpcGxl
IHRyYW5zbGF0aW9uIHVuaXRzIGNvbXBpbGVkIHdpdGgKKy8vIGRpc3RpbmN0IGZsYWdzLCBhdm9p
ZCAjaW5jbHVkaW5nIGhlYWRlcnMgdGhhdCBkZWZpbmUgZnVuY3Rpb25zLgorCisjaW5jbHVkZSA8
c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSByYW5kb21faW50ZXJuYWxfbmFub2JlbmNobWFyayB7CisKKy8vIElucHV0IGluZmx1ZW5j
aW5nIHRoZSBmdW5jdGlvbiBiZWluZyBtZWFzdXJlZCAoZS5nLiBudW1iZXIgb2YgYnl0ZXMgdG8g
Y29weSkuCit1c2luZyBGdW5jSW5wdXQgPSBzaXplX3Q7CisKKy8vICJQcm9vZiBvZiB3b3JrIiBy
ZXR1cm5lZCBieSBGdW5jIHRvIGVuc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgZWxpZGUgaXQu
Cit1c2luZyBGdW5jT3V0cHV0ID0gdWludDY0X3Q7CisKKy8vIEZ1bmN0aW9uIHRvIG1lYXN1cmU6
IGVpdGhlciAxKSBhIGNhcHR1cmVsZXNzIGxhbWJkYSBvciBmdW5jdGlvbiB3aXRoIHR3bworLy8g
YXJndW1lbnRzIG9yIDIpIGEgbGFtYmRhIHdpdGggY2FwdHVyZSwgaW4gd2hpY2ggY2FzZSB0aGUg
Zmlyc3QgYXJndW1lbnQKKy8vIGlzIHJlc2VydmVkIGZvciB1c2UgYnkgTWVhc3VyZUNsb3N1cmUu
Cit1c2luZyBGdW5jID0gRnVuY091dHB1dCAoKikoY29uc3Qgdm9pZCosIEZ1bmNJbnB1dCk7CisK
Ky8vIEludGVybmFsIHBhcmFtZXRlcnMgdGhhdCBkZXRlcm1pbmUgcHJlY2lzaW9uL3Jlc29sdXRp
b24vbWVhc3VyaW5nIHRpbWUuCitzdHJ1Y3QgUGFyYW1zIHsKKyAgLy8gRm9yIG1lYXN1cmluZyB0
aW1lciBvdmVyaGVhZC9yZXNvbHV0aW9uLiBVc2VkIGluIGEgbmVzdGVkIGxvb3AgPT4KKyAgLy8g
cXVhZHJhdGljIHRpbWUsIGFjY2VwdGFibGUgYmVjYXVzZSB3ZSBrbm93IHRpbWVyIG92ZXJoZWFk
IGlzICJsb3ciLgorICAvLyBjb25zdGV4cHIgYmVjYXVzZSB0aGlzIGlzIHVzZWQgdG8gZGVmaW5l
IGFycmF5IGJvdW5kcy4KKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1RpbWVyU2FtcGxlcyA9
IDI1NjsKKworICAvLyBCZXN0LWNhc2UgcHJlY2lzaW9uLCBleHByZXNzZWQgYXMgYSBkaXZpc29y
IG9mIHRoZSB0aW1lciByZXNvbHV0aW9uLgorICAvLyBMYXJnZXIgPT4gbW9yZSBjYWxscyB0byBG
dW5jIGFuZCBoaWdoZXIgcHJlY2lzaW9uLgorICBzaXplX3QgcHJlY2lzaW9uX2Rpdmlzb3IgPSAx
MDI0OworCisgIC8vIFJhdGlvIGJldHdlZW4gZnVsbCBhbmQgc3Vic2V0IGlucHV0IGRpc3RyaWJ1
dGlvbiBzaXplcy4gQ2Fubm90IGJlIGxlc3MKKyAgLy8gdGhhbiAyOyBsYXJnZXIgdmFsdWVzIGlu
Y3JlYXNlIG1lYXN1cmVtZW50IHRpbWUgYnV0IG1vcmUgZmFpdGhmdWxseQorICAvLyBtb2RlbCB0
aGUgZ2l2ZW4gaW5wdXQgZGlzdHJpYnV0aW9uLgorICBzaXplX3Qgc3Vic2V0X3JhdGlvID0gMjsK
KworICAvLyBUb2dldGhlciB3aXRoIHRoZSBlc3RpbWF0ZWQgRnVuYyBkdXJhdGlvbiwgZGV0ZXJt
aW5lcyBob3cgbWFueSB0aW1lcyB0bworICAvLyBjYWxsIEZ1bmMgYmVmb3JlIGNoZWNraW5nIHRo
ZSBzYW1wbGUgdmFyaWFiaWxpdHkuIExhcmdlciB2YWx1ZXMgaW5jcmVhc2UKKyAgLy8gbWVhc3Vy
ZW1lbnQgdGltZSwgbWVtb3J5L2NhY2hlIHVzZSBhbmQgcHJlY2lzaW9uLgorICBkb3VibGUgc2Vj
b25kc19wZXJfZXZhbCA9IDRFLTM7CisKKyAgLy8gVGhlIG1pbmltdW0gbnVtYmVyIG9mIHNhbXBs
ZXMgYmVmb3JlIGVzdGltYXRpbmcgdGhlIGNlbnRyYWwgdGVuZGVuY3kuCisgIHNpemVfdCBtaW5f
c2FtcGxlc19wZXJfZXZhbCA9IDc7CisKKyAgLy8gVGhlIG1vZGUgaXMgYmV0dGVyIHRoYW4gbWVk
aWFuIGZvciBlc3RpbWF0aW5nIHRoZSBjZW50cmFsIHRlbmRlbmN5IG9mCisgIC8vIHNrZXdlZC9m
YXQtdGFpbGVkIGRpc3RyaWJ1dGlvbnMsIGJ1dCBpdCByZXF1aXJlcyBzdWZmaWNpZW50IHNhbXBs
ZXMKKyAgLy8gcmVsYXRpdmUgdG8gdGhlIHdpZHRoIG9mIGhhbGYtcmFuZ2VzLgorICBzaXplX3Qg
bWluX21vZGVfc2FtcGxlcyA9IDY0OworCisgIC8vIE1heGltdW0gcGVybWlzc2libGUgdmFyaWFi
aWxpdHkgKD0gbWVkaWFuIGFic29sdXRlIGRldmlhdGlvbiAvIGNlbnRlcikuCisgIGRvdWJsZSB0
YXJnZXRfcmVsX21hZCA9IDAuMDAyOworCisgIC8vIEFib3J0IGFmdGVyIHRoaXMgbWFueSBldmFs
cyB3aXRob3V0IHJlYWNoaW5nIHRhcmdldF9yZWxfbWFkLiBUaGlzCisgIC8vIHByZXZlbnRzIGlu
ZmluaXRlIGxvb3BzLgorICBzaXplX3QgbWF4X2V2YWxzID0gOTsKKworICAvLyBSZXRyeSB0aGUg
bWVhc3VyZSBsb29wIHVwIHRvIHRoaXMgbWFueSB0aW1lcy4KKyAgc2l6ZV90IG1heF9tZWFzdXJl
X3JldHJpZXMgPSAyOworCisgIC8vIFdoZXRoZXIgdG8gcHJpbnQgYWRkaXRpb25hbCBzdGF0aXN0
aWNzIHRvIHN0ZG91dC4KKyAgYm9vbCB2ZXJib3NlID0gdHJ1ZTsKK307CisKKy8vIE1lYXN1cmVt
ZW50IHJlc3VsdCBmb3IgZWFjaCB1bmlxdWUgaW5wdXQuCitzdHJ1Y3QgUmVzdWx0IHsKKyAgRnVu
Y0lucHV0IGlucHV0OworCisgIC8vIFJvYnVzdCBlc3RpbWF0ZSAobW9kZSBvciBtZWRpYW4pIG9m
IGR1cmF0aW9uLgorICBmbG9hdCB0aWNrczsKKworICAvLyBNZWFzdXJlIG9mIHZhcmlhYmlsaXR5
IChtZWRpYW4gYWJzb2x1dGUgZGV2aWF0aW9uIHJlbGF0aXZlIHRvICJ0aWNrcyIpLgorICBmbG9h
dCB2YXJpYWJpbGl0eTsKK307CisKKy8vIEVuc3VyZXMgdGhlIHRocmVhZCBpcyBydW5uaW5nIG9u
IHRoZSBzcGVjaWZpZWQgY3B1LCBhbmQgbm8gb3RoZXJzLgorLy8gUmVkdWNlcyBub2lzZSBkdWUg
dG8gZGVzeW5jaHJvbml6ZWQgc29ja2V0IFJEVFNDIGFuZCBjb250ZXh0IHN3aXRjaGVzLgorLy8g
SWYgImNwdSIgaXMgbmVnYXRpdmUsIHBpbiB0byB0aGUgY3VycmVudGx5IHJ1bm5pbmcgY29yZS4K
K3ZvaWQgUGluVGhyZWFkVG9DUFUoY29uc3QgaW50IGNwdSA9IC0xKTsKKworLy8gUmV0dXJucyB0
aWNrIHJhdGUsIHVzZWZ1bCBmb3IgY29udmVydGluZyBtZWFzdXJlbWVudHMgdG8gc2Vjb25kcy4g
SW52YXJpYW50CisvLyBtZWFucyB0aGUgdGljayBjb3VudGVyIGZyZXF1ZW5jeSBpcyBpbmRlcGVu
ZGVudCBvZiBDUFUgdGhyb3R0bGluZyBvciBzbGVlcC4KKy8vIFRoaXMgY2FsbCBtYXkgYmUgZXhw
ZW5zaXZlLCBjYWxsZXJzIHNob3VsZCBjYWNoZSB0aGUgcmVzdWx0LgorZG91YmxlIEludmFyaWFu
dFRpY2tzUGVyU2Vjb25kKCk7CisKKy8vIFByZWNpc2VseSBtZWFzdXJlcyB0aGUgbnVtYmVyIG9m
IHRpY2tzIGVsYXBzZWQgd2hlbiBjYWxsaW5nICJmdW5jIiB3aXRoIHRoZQorLy8gZ2l2ZW4gaW5w
dXRzLCBzaHVmZmxlZCB0byBlbnN1cmUgcmVhbGlzdGljIGJyYW5jaCBwcmVkaWN0aW9uIGhpdCBy
YXRlcy4KKy8vCisvLyAiZnVuYyIgcmV0dXJucyBhICdwcm9vZiBvZiB3b3JrJyB0byBlbnN1cmUg
aXRzIGNvbXB1dGF0aW9ucyBhcmUgbm90IGVsaWRlZC4KKy8vICJhcmciIGlzIHBhc3NlZCB0byBG
dW5jLCBvciByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlIGJ5IE1lYXN1cmVDbG9zdXJlLgorLy8g
ImlucHV0cyIgaXMgYW4gYXJyYXkgb2YgIm51bV9pbnB1dHMiIChub3QgbmVjZXNzYXJpbHkgdW5p
cXVlKSBhcmd1bWVudHMgdG8KKy8vICAgImZ1bmMiLiBUaGUgdmFsdWVzIHNob3VsZCBiZSBjaG9z
ZW4gdG8gbWF4aW1pemUgY292ZXJhZ2Ugb2YgImZ1bmMiLiBUaGlzCisvLyAgIHJlcHJlc2VudHMg
YSBkaXN0cmlidXRpb24sIHNvIGEgdmFsdWUncyBmcmVxdWVuY3kgc2hvdWxkIHJlZmxlY3QgaXRz
CisvLyAgIHByb2JhYmlsaXR5IGluIHRoZSByZWFsIGFwcGxpY2F0aW9uLiBPcmRlciBkb2VzIG5v
dCBtYXR0ZXI7IGZvciBleGFtcGxlLCBhCisvLyAgIHVuaWZvcm0gZGlzdHJpYnV0aW9uIG92ZXIg
WzAsIDQpIGNvdWxkIGJlIHJlcHJlc2VudGVkIGFzIHszLDAsMiwxfS4KKy8vIFJldHVybnMgaG93
IG1hbnkgUmVzdWx0IHdlcmUgd3JpdHRlbiB0byAicmVzdWx0cyI6IG9uZSBwZXIgdW5pcXVlIGlu
cHV0LCBvcgorLy8gICB6ZXJvIGlmIHRoZSBtZWFzdXJlbWVudCBmYWlsZWQgKGFuIGVycm9yIG1l
c3NhZ2UgZ29lcyB0byBzdGRlcnIpLgorc2l6ZV90IE1lYXN1cmUoY29uc3QgRnVuYyBmdW5jLCBj
b25zdCB2b2lkKiBhcmcsIGNvbnN0IEZ1bmNJbnB1dCogaW5wdXRzLAorICAgICAgICAgICAgICAg
Y29uc3Qgc2l6ZV90IG51bV9pbnB1dHMsIFJlc3VsdCogcmVzdWx0cywKKyAgICAgICAgICAgICAg
IGNvbnN0IFBhcmFtcyYgcCA9IFBhcmFtcygpKTsKKworLy8gQ2FsbHMgb3BlcmF0b3IoKSBvZiB0
aGUgZ2l2ZW4gY2xvc3VyZSAobGFtYmRhIGZ1bmN0aW9uKS4KK3RlbXBsYXRlIDxjbGFzcyBDbG9z
dXJlPgorc3RhdGljIEZ1bmNPdXRwdXQgQ2FsbENsb3N1cmUoY29uc3Qgdm9pZCogZiwgY29uc3Qg
RnVuY0lucHV0IGlucHV0KSB7CisgIHJldHVybiAoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2xv
c3VyZSo+KGYpKShpbnB1dCk7Cit9CisKKy8vIFNhbWUgYXMgTWVhc3VyZSwgZXhjZXB0ICJjbG9z
dXJlIiBpcyB0eXBpY2FsbHkgYSBsYW1iZGEgZnVuY3Rpb24gb2YKKy8vIEZ1bmNJbnB1dCAtPiBG
dW5jT3V0cHV0IHdpdGggYSBjYXB0dXJlIGxpc3QuCit0ZW1wbGF0ZSA8Y2xhc3MgQ2xvc3VyZT4K
K3N0YXRpYyBpbmxpbmUgc2l6ZV90IE1lYXN1cmVDbG9zdXJlKGNvbnN0IENsb3N1cmUmIGNsb3N1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jSW5wdXQq
IGlucHV0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVf
dCBudW1faW5wdXRzLCBSZXN1bHQqIHJlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBQYXJhbXMmIHAgPSBQYXJhbXMoKSkgeworICByZXR1cm4gTWVhc3Vy
ZShyZWludGVycHJldF9jYXN0PEZ1bmM+KCZDYWxsQ2xvc3VyZTxDbG9zdXJlPiksCisgICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZjbG9zdXJlKSwgaW5wdXRz
LCBudW1faW5wdXRzLAorICAgICAgICAgICAgICAgICByZXN1bHRzLCBwKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbF9uYW5vYmVuY2htYXJrCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX05BTk9CRU5DSE1BUktfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9uYW5vYmVuY2htYXJrX3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvbmFub2JlbmNobWFya190ZXN0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM4MzM0NWE4YjQ3NDQwM2FjNDgxMGNjMDJkYzYwY2I4OTk2MTNjZDUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvbmFub2JlbmNobWFya190ZXN0LmNjCkBAIC0wLDAg
KzEsNzUgQEAKKy8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvbmFub2JlbmNobWFyay5oIgor
CisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL251bWJlcnMuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJh
bmRvbV9pbnRlcm5hbF9uYW5vYmVuY2htYXJrIHsKK25hbWVzcGFjZSB7CisKK3VpbnQ2NF90IERp
dihjb25zdCB2b2lkKiwgRnVuY0lucHV0IGluKSB7CisgIC8vIEhlcmUgd2UncmUgbWVhc3VyaW5n
IHRoZSB0aHJvdWdocHV0IGJlY2F1c2UgYmVuY2htYXJrIGludm9jYXRpb25zIGFyZQorICAvLyBp
bmRlcGVuZGVudC4KKyAgY29uc3QgaW50NjRfdCBkMSA9IDB4RkZGRkZGRkZGRmxsIC8gaW50NjRf
dChpbik7ICAvLyBJRElWCisgIHJldHVybiBkMTsKK30KKwordGVtcGxhdGUgPHNpemVfdCBOPgor
dm9pZCBNZWFzdXJlRGl2KGNvbnN0IEZ1bmNJbnB1dCAoJmlucHV0cylbTl0pIHsKKyAgUmVzdWx0
IHJlc3VsdHNbTl07CisgIFBhcmFtcyBwYXJhbXM7CisgIHBhcmFtcy5tYXhfZXZhbHMgPSA2OyAg
Ly8gYXZvaWQgdGVzdCB0aW1lb3V0CisgIGNvbnN0IHNpemVfdCBudW1fcmVzdWx0cyA9IE1lYXN1
cmUoJkRpdiwgbnVsbHB0ciwgaW5wdXRzLCBOLCByZXN1bHRzLCBwYXJhbXMpOworICBpZiAobnVt
X3Jlc3VsdHMgPT0gMCkgeworICAgIEFCU0xfUkFXX0xPRygKKyAgICAgICAgV0FSTklORywKKyAg
ICAgICAgIldBUk5JTkc6IE1lYXN1cmVtZW50IGZhaWxlZCwgc2hvdWxkIG5vdCBoYXBwZW4gd2hl
biB1c2luZyAiCisgICAgICAgICJQaW5UaHJlYWRUb0NQVSB1bmxlc3MgdGhlIHJlZ2lvbiB0byBt
ZWFzdXJlIHRha2VzID4gMSBzZWNvbmQuXG4iKTsKKyAgICByZXR1cm47CisgIH0KKyAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1fcmVzdWx0czsgKytpKSB7CisgICAgQUJTTF9SQVdfTE9HKElO
Rk8sICIlNXp1OiAlNi4yZiB0aWNrczsgTUFEPSU0LjJmJSVcbiIsIHJlc3VsdHNbaV0uaW5wdXQs
CisgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0udGlja3MsIHJlc3VsdHNbaV0udmFyaWFiaWxp
dHkgKiAxMDAuMCk7CisgICAgQUJTTF9SQVdfQ0hFQ0socmVzdWx0c1tpXS50aWNrcyAhPSAwLjBm
LCAiWmVybyBkdXJhdGlvbiIpOworICB9Cit9CisKK3ZvaWQgUnVuQWxsKGNvbnN0IGludCBhcmdj
LCBjaGFyKiBhcmd2W10pIHsKKyAgLy8gQXZvaWQgbWlncmF0aW5nIGJldHdlZW4gY29yZXMgLSBp
bXBvcnRhbnQgb24gbXVsdGktc29ja2V0IHN5c3RlbXMuCisgIGludCBjcHUgPSAtMTsKKyAgaWYg
KGFyZ2MgPT0gMikgeworICAgIGlmICghU2ltcGxlQXRvaShhcmd2WzFdLCAmY3B1KSkgeworICAg
ICAgQUJTTF9SQVdfTE9HKEZBVEFMLCAiVGhlIG9wdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBD
UFUgbnVtYmVyID49IDAuXG4iKTsKKyAgICB9CisgIH0KKyAgUGluVGhyZWFkVG9DUFUoY3B1KTsK
KworICAvLyB1bnByZWRpY3RhYmxlID09IDEgYnV0IHRoZSBjb21waWxlciBkb2Vzbid0IGtub3cg
dGhhdC4KKyAgY29uc3QgRnVuY0lucHV0IHVucHJlZGljdGFibGUgPSBhcmdjICE9IDk5OTsKKyAg
c3RhdGljIGNvbnN0IEZ1bmNJbnB1dCBpbnB1dHNbXSA9IHt1bnByZWRpY3RhYmxlICogMTAsIHVu
cHJlZGljdGFibGUgKiAxMDB9OworCisgIE1lYXN1cmVEaXYoaW5wdXRzKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsX25hbm9iZW5jaG1hcmsK
K30gIC8vIG5hbWVzcGFjZSBhYnNsCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10p
IHsKKyAgYWJzbDo6cmFuZG9tX2ludGVybmFsX25hbm9iZW5jaG1hcms6OlJ1bkFsbChhcmdjLCBh
cmd2KTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwv
bm9uc2VjdXJlX2Jhc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9ub25zZWN1cmVfYmFzZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg4NDdlNzRiZWY2YmJjN2EzNzAwNzRhNjE4M2I2Y2M2NTliZTJmOGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvbm9uc2VjdXJlX2Jhc2UuaApA
QCAtMCwwICsxLDE0OCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfTk9OU0VDVVJFX0JBU0VfSF8KKyNkZWZp
bmUgQUJTTF9SQU5ET01fSU5URVJOQUxfTk9OU0VDVVJFX0JBU0VfSF8KKworI2luY2x1ZGUgPGFs
Z29yaXRobT4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1
ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9i
YXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorI2luY2x1
ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZy5oIgorI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2ludGVybmFsL3NhbHRlZF9zZWVkX3NlcS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2lu
dGVybmFsL3NlZWRfbWF0ZXJpYWwuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CisjaW5jbHVkZSAiYWJzbC90eXBlcy9zcGFuLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBFYWNoIGluc3RhbmNlIG9mIE5vbnNlY3VyZVVS
QkdCYXNlPFVSQkc+IHdpbGwgYmUgc2VlZGVkIGJ5IHZhcmlhdGVzIHByb2R1Y2VkCisvLyBieSBh
IHRocmVhZC11bmlxdWUgVVJCRy1pbnN0YW5jZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgor
Y2xhc3MgTm9uc2VjdXJlVVJCR0Jhc2UgeworIHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0X3R5cGUg
PSB0eXBlbmFtZSBVUkJHOjpyZXN1bHRfdHlwZTsKKworICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9y
CisgIE5vbnNlY3VyZVVSQkdCYXNlKCkgOiB1cmJnXyhDb25zdHJ1Y3RVUkJHKCkpIHt9CisKKyAg
Ly8gQ29weSBkaXNhbGxvd2VkLCBtb3ZlIGFsbG93ZWQuCisgIE5vbnNlY3VyZVVSQkdCYXNlKGNv
bnN0IE5vbnNlY3VyZVVSQkdCYXNlJikgPSBkZWxldGU7CisgIE5vbnNlY3VyZVVSQkdCYXNlJiBv
cGVyYXRvcj0oY29uc3QgTm9uc2VjdXJlVVJCR0Jhc2UmKSA9IGRlbGV0ZTsKKyAgTm9uc2VjdXJl
VVJCR0Jhc2UoTm9uc2VjdXJlVVJCR0Jhc2UmJikgPSBkZWZhdWx0OworICBOb25zZWN1cmVVUkJH
QmFzZSYgb3BlcmF0b3I9KE5vbnNlY3VyZVVSQkdCYXNlJiYpID0gZGVmYXVsdDsKKworICAvLyBD
b25zdHJ1Y3RvciB1c2luZyBhIHNlZWQKKyAgdGVtcGxhdGUgPGNsYXNzIFNTZXEsIHR5cGVuYW1l
ID0gdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIXN0ZDo6aXNfc2FtZTxTU2VxLCBOb25zZWN1cmVVUkJHQmFzZT46OnZhbHVlPj4KKyAgZXhw
bGljaXQgTm9uc2VjdXJlVVJCR0Jhc2UoU1NlcSYmIHNlcSkKKyAgICAgIDogdXJiZ18oQ29uc3Ry
dWN0VVJCRyhzdGQ6OmZvcndhcmQ8U1NlcT4oc2VxKSkpIHt9CisKKyAgLy8gTm90ZTogb24gTVNW
QywgbWluKCkgb3IgbWF4KCkgY2FuIGJlIGludGVycHJldGVkIGFzIE1JTigpIG9yIE1BWCgpLCBz
byB3ZQorICAvLyBlbmNsb3NlIG1pbigpIG9yIG1heCgpIGluIHBhcmVucyBhcyAobWluKSgpIGFu
ZCAobWF4KSgpLgorICAvLyBBZGRpdGlvbmFsbHksIGNsYW5nLWZvcm1hdCByZXF1aXJlcyBubyBz
cGFjZSBiZWZvcmUgdGhpcyBjb25zdHJ1Y3Rpb24uCisKKyAgLy8gTm9uc2VjdXJlVVJCR0Jhc2U6
Om1pbigpCisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUobWluKSgpIHsgcmV0dXJuIChV
UkJHOjptaW4pKCk7IH0KKworICAvLyBOb25zZWN1cmVVUkJHQmFzZTo6bWF4KCkKKyAgc3RhdGlj
IGNvbnN0ZXhwciByZXN1bHRfdHlwZShtYXgpKCkgeyByZXR1cm4gKFVSQkc6Om1heCkoKTsgfQor
CisgIC8vIE5vbnNlY3VyZVVSQkdCYXNlOjpvcGVyYXRvcigpKCkKKyAgcmVzdWx0X3R5cGUgb3Bl
cmF0b3IoKSgpIHsgcmV0dXJuIHVyYmdfKCk7IH0KKworICAvLyBOb25zZWN1cmVVUkJHQmFzZTo6
ZGlzY2FyZCgpCisgIHZvaWQgZGlzY2FyZCh1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWVzKSB7ICAv
LyBOT0xJTlQocnVudGltZS9pbnQpCisgICAgdXJiZ18uZGlzY2FyZCh2YWx1ZXMpOworICB9CisK
KyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vbnNlY3VyZVVSQkdCYXNlJiBvdGhlcikgY29uc3Qg
eworICAgIHJldHVybiB1cmJnXyA9PSBvdGhlci51cmJnXzsKKyAgfQorCisgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBOb25zZWN1cmVVUkJHQmFzZSYgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4g
ISh1cmJnXyA9PSBvdGhlci51cmJnXyk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIFNlZWRlciBp
cyBhIGN1c3RvbSBzZWVkIHNlcXVlbmNlIHR5cGUgd2hlcmUgZ2VuZXJhdGUoKSBmaWxscyB0aGUg
cHJvdmlkZWQKKyAgLy8gYnVmZmVyIHZpYSB0aGUgUmFuZGVuUG9vbCBlbnRyb3B5IHNvdXJjZS4K
KyAgc3RydWN0IFNlZWRlciB7CisgICAgdXNpbmcgcmVzdWx0X3R5cGUgPSB1aW50MzJfdDsKKwor
ICAgIHNpemVfdCBzaXplKCkgeyByZXR1cm4gMDsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IE91dEl0ZXJhdG9yPgorICAgIHZvaWQgcGFyYW0oT3V0SXRlcmF0b3IpIGNvbnN0IHt9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3I+CisgICAgdm9pZCBnZW5l
cmF0ZShSYW5kb21BY2Nlc3NJdGVyYXRvciBiZWdpbiwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgZW5k
KSB7CisgICAgICBpZiAoYmVnaW4gIT0gZW5kKSB7CisgICAgICAgIC8vIGJlZ2luLCBlbmQgbXVz
dCBiZSByYW5kb20gYWNjZXNzIGl0ZXJhdG9ycyBhc3NpZ25hYmxlIGZyb20gdWludDMyX3QuCisg
ICAgICAgIGdlbmVyYXRlX2ltcGwoCisgICAgICAgICAgICBzdGQ6OmludGVncmFsX2NvbnN0YW50
PGJvb2wsIHNpemVvZigqYmVnaW4pID09IHNpemVvZih1aW50MzJfdCk+e30sCisgICAgICAgICAg
ICBiZWdpbiwgZW5kKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDb21tb25seSwgZ2VuZXJh
dGUgaXMgaW52b2tlZCB3aXRoIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3aGljaAorICAgIC8vIGNh
biBiZSBjYXN0IHRvIGEgdWludDMyX3QuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFj
Y2Vzc0l0ZXJhdG9yPgorICAgIHZvaWQgZ2VuZXJhdGVfaW1wbChzdGQ6OmludGVncmFsX2NvbnN0
YW50PGJvb2wsIHRydWU+LAorICAgICAgICAgICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NJdGVy
YXRvciBiZWdpbiwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgZW5kKSB7CisgICAgICBhdXRvIGJ1ZmZl
ciA9IGFic2w6Ok1ha2VTcGFuKGJlZ2luLCBlbmQpOworICAgICAgYXV0byB0YXJnZXQgPSBhYnNs
OjpNYWtlU3BhbihyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oYnVmZmVyLmRhdGEoKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5zaXplKCkpOworICAgICAg
UmFuZGVuUG9vbDx1aW50MzJfdD46OkZpbGwodGFyZ2V0KTsKKyAgICB9CisKKyAgICAvLyBUaGUg
bm9uLXVpbnQzMl90IGNhc2Ugc2hvdWxkIGJlIHVuY29tbW9uLCBhbmQgaW52b2x2ZXMgYW4gZXh0
cmEgY29weSwKKyAgICAvLyBmaWxsaW5nIHRoZSB1aW50MzJfdCBidWZmZXIgYW5kIHRoZW4gbWl4
aW5nIGludG8gdGhlIG91dHB1dC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNz
SXRlcmF0b3I+CisgICAgdm9pZCBnZW5lcmF0ZV9pbXBsKHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8
Ym9vbCwgZmFsc2U+LAorICAgICAgICAgICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NJdGVyYXRv
ciBiZWdpbiwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgZW5kKSB7CisgICAgICBjb25zdCBzaXplX3Qg
biA9IHN0ZDo6ZGlzdGFuY2UoYmVnaW4sIGVuZCk7CisgICAgICBhYnNsOjpJbmxpbmVkVmVjdG9y
PHVpbnQzMl90LCA4PiBkYXRhKG4sIDApOworICAgICAgUmFuZGVuUG9vbDx1aW50MzJfdD46OkZp
bGwoYWJzbDo6TWFrZVNwYW4oZGF0YS5iZWdpbigpLCBkYXRhLmVuZCgpKSk7CisgICAgICBzdGQ6
OmNvcHkoc3RkOjpiZWdpbihkYXRhKSwgc3RkOjplbmQoZGF0YSksIGJlZ2luKTsKKyAgICB9Cisg
IH07CisKKyAgc3RhdGljIFVSQkcgQ29uc3RydWN0VVJCRygpIHsKKyAgICBTZWVkZXIgc2VlZGVy
OworICAgIHJldHVybiBVUkJHKHNlZWRlcik7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
U1NlcT4KKyAgc3RhdGljIFVSQkcgQ29uc3RydWN0VVJCRyhTU2VxJiYgc2VxKSB7ICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGF1dG8gc2FsdGVkX3NlcSA9CisgICAgICAgIHJh
bmRvbV9pbnRlcm5hbDo6TWFrZVNhbHRlZFNlZWRTZXEoc3RkOjpmb3J3YXJkPFNTZXE+KHNlcSkp
OworICAgIHJldHVybiBVUkJHKHNhbHRlZF9zZXEpOworICB9CisKKyAgVVJCRyB1cmJnXzsKK307
CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNs
CisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfTk9OU0VDVVJFX0JBU0VfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9ub25zZWN1cmVfYmFzZV90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL25vbnNlY3VyZV9iYXNlX3Rlc3QuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDlkZTk5MDE5Y2UwOThmMWQ1Y2JmNTFlNDIxMWJiZDlmYWUxODQ2MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9ub25zZWN1cmVfYmFzZV90ZXN0LmNjCkBAIC0wLDAg
KzEsMjQ0IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lu
Y2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL25vbnNlY3VyZV9iYXNlLmgiCisKKyNpbmNsdWRl
IDxhbGdvcml0aG0+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9kaXN0cmlidXRpb25zLmgiCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIK
KworbmFtZXNwYWNlIHsKKwordXNpbmcgRXhhbXBsZU5vbnNlY3VyZVVSQkcgPQorICAgIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6Tm9uc2VjdXJlVVJCR0Jhc2U8c3RkOjptdDE5OTM3PjsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVzZShjb25zdCBUJikge30KKworfSAgLy8gbmFtZXNw
YWNlCisKK1RFU1QoTm9uc2VjdXJlVVJCR0Jhc2UsIERlZmF1bHRDb25zdHJ1Y3RvcklzVmFsaWQp
IHsKKyAgRXhhbXBsZU5vbnNlY3VyZVVSQkcgdXJiZzsKK30KKworLy8gRW5zdXJlIHRoYXQgdGhl
IHJlY29tbWVuZGVkIHRlbXBsYXRlLWluc3RhbnRpYXRpb25zIGFyZSB2YWxpZC4KK1RFU1QoUmVj
b21tZW5kZWRUZW1wbGF0ZXMsIENhbkJlQ29uc3RydWN0ZWQpIHsKKyAgYWJzbDo6Qml0R2VuIGRl
ZmF1bHRfZ2VuZXJhdG9yOworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBpbnNlY3VyZV9nZW5lcmF0
b3I7Cit9CisKK1RFU1QoUmVjb21tZW5kZWRUZW1wbGF0ZXMsIENhbkRpc2NhcmRWYWx1ZXMpIHsK
KyAgYWJzbDo6Qml0R2VuIGRlZmF1bHRfZ2VuZXJhdG9yOworICBhYnNsOjpJbnNlY3VyZUJpdEdl
biBpbnNlY3VyZV9nZW5lcmF0b3I7CisKKyAgZGVmYXVsdF9nZW5lcmF0b3IuZGlzY2FyZCg1KTsK
KyAgaW5zZWN1cmVfZ2VuZXJhdG9yLmRpc2NhcmQoNSk7Cit9CisKK1RFU1QoTm9uc2VjdXJlVVJC
R0Jhc2UsIFN0YW5kYXJkSW50ZXJmYWNlKSB7CisgIC8vIE5hbWVzIGFmdGVyIGRlZmluaXRpb24g
b2YgW3JhbmQucmVxLnVyYmddIGluIEMrKyBzdGFuZGFyZC4KKyAgLy8gZSB1cyBhIHZhbHVlIG9m
IEUKKyAgLy8gdiBpcyBhIGx2YWx1ZSBvZiBFCisgIC8vIHgsIHkgYXJlIHBvc3NpYmx5IGNvbnN0
IHZhbHVlcyBvZiBFCisgIC8vIHMgaXMgYSB2YWx1ZSBvZiBUCisgIC8vIHEgaXMgYSB2YWx1ZSBz
YXRpc2Z5aW5nIHJlcXVpcmVtZW50cyBvZiBzZWVkX3NlcXVlbmNlCisgIC8vIHogaXMgYSB2YWx1
ZSBvZiB0eXBlIHVuc2lnbmVkIGxvbmcgbG9uZworICAvLyBvcyBpcyBhIHNvbWUgc3BlY2lhbGl6
YXRpb24gb2YgYmFzaWNfb3N0cmVhbQorICAvLyBpcyBpcyBhIHNvbWUgc3BlY2lhbGl6YXRpb24g
b2YgYmFzaWNfaXN0cmVhbQorCisgIHVzaW5nIEUgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok5v
bnNlY3VyZVVSQkdCYXNlPHN0ZDo6bWluc3RkX3JhbmQ+OworCisgIHVzaW5nIFQgPSB0eXBlbmFt
ZSBFOjpyZXN1bHRfdHlwZTsKKworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2NvcHlfY29uc3Ry
dWN0aWJsZTxFPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIk5vbnNlY3VyZVVSQkdCYXNlIHNo
b3VsZCBub3QgYmUgY29weSBjb25zdHJ1Y3RpYmxlIik7CisKKyAgc3RhdGljX2Fzc2VydCghYWJz
bDo6aXNfY29weV9hc3NpZ25hYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiTm9uc2Vj
dXJlVVJCR0Jhc2Ugc2hvdWxkIG5vdCBiZSBjb3B5IGFzc2lnbmFibGUiKTsKKworICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAgICAg
ICAgICAiTm9uc2VjdXJlVVJCR0Jhc2Ugc2hvdWxkIGJlIG1vdmUgY29uc3RydWN0aWJsZSIpOwor
CisgIHN0YXRpY19hc3NlcnQoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPEU+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAiTm9uc2VjdXJlVVJCR0Jhc2Ugc2hvdWxkIGJlIG1vdmUgYXNzaWduYWJs
ZSIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKHN0ZDo6ZGVjbHZh
bDxFPigpKCkpLCBUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgInJldHVybiB0eXBlIG9mIG9w
ZXJhdG9yKCkgbXVzdCBiZSByZXN1bHRfdHlwZSIpOworCisgIHsKKyAgICBjb25zdCBFIHgsIHk7
CisgICAgVXNlKHgpOworICAgIFVzZSh5KTsKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lPGRlY2x0eXBlKHggPT0geSksIGJvb2w+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICJy
ZXR1cm4gdHlwZSBvZiBvcGVyYXRvcj09IG11c3QgYmUgYm9vbCIpOworCisgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoeCAhPSB5KSwgYm9vbD46OnZhbHVlLAorICAgICAg
ICAgICAgICAgICAgInJldHVybiB0eXBlIG9mIG9wZXJhdG9yPT0gbXVzdCBiZSBib29sIik7Cisg
IH0KKworICBFIGU7CisgIHN0ZDo6c2VlZF9zZXEgcXsxLCAyLCAzfTsKKworICBFe307CisgIEV7
cX07CisKKyAgLy8gQ29weSBjb25zdHJ1Y3RvciBub3Qgc3VwcG9ydGVkLgorICAvLyBFe3h9Owor
CisgIC8vIHJlc3VsdF90eXBlIHNlZWQgY29uc3RydWN0b3Igbm90IHN1cHBvcnRlZC4KKyAgLy8g
RXtUezF9fTsKKworICAvLyBNb3ZlIGNvbnN0cnVjdG9ycyBhcmUgc3VwcG9ydGVkLgorICB7Cisg
ICAgRSB0bXAocSk7CisgICAgRSBtID0gc3RkOjptb3ZlKHRtcCk7CisgICAgRSBuKHN0ZDo6bW92
ZShtKSk7CisgICAgRVhQRUNUX1RSVUUoZSAhPSBuKTsKKyAgfQorCisgIC8vIENvbXBhcmlzb25z
IHdvcmsuCisgIHsKKyAgICAvLyBNU1ZDIGVtaXRzIGVycm9yIDI3MTggd2hlbiB1c2luZyBFWFBF
Q1RfRVEoZSwgeCkKKyAgICAvLyAgKiBhY3R1YWwgcGFyYW1ldGVyIHdpdGggX19kZWNsc3BlYyhh
bGlnbignIycpKSB3b24ndCBiZSBhbGlnbmVkCisgICAgRSBhKHEpOworICAgIEUgYihxKTsKKwor
ICAgIEVYUEVDVF9UUlVFKGEgIT0gZSk7CisgICAgRVhQRUNUX1RSVUUoYSA9PSBiKTsKKworICAg
IGEoKTsKKyAgICBFWFBFQ1RfVFJVRShhICE9IGIpOworICB9CisKKyAgLy8gZS5zZWVkKHMpIG5v
dCBzdXBwb3J0ZWQuCisKKyAgLy8gW3JhbmQucmVxLmVuZ10gc3BlY2lmaWVzIHRoZSBwYXJhbWV0
ZXIgYXMgJ3Vuc2lnbmVkIGxvbmcgbG9uZycKKyAgLy8gZS5kaXNjYXJkKHVuc2lnbmVkIGxvbmcg
bG9uZykgaXMgc3VwcG9ydGVkLgorICB1bnNpZ25lZCBsb25nIGxvbmcgeiA9IDE7ICAvLyBOT0xJ
TlQocnVudGltZS9pbnQpCisgIGUuZGlzY2FyZCh6KTsKK30KKworVEVTVChOb25zZWN1cmVVUkJH
QmFzZSwgU2VlZFNlcUNvbnN0cnVjdG9ySXNWYWxpZCkgeworICBzdGQ6OnNlZWRfc2VxIHNlcTsK
KyAgRXhhbXBsZU5vbnNlY3VyZVVSQkcgcmJnKHNlcSk7Cit9CisKK1RFU1QoTm9uc2VjdXJlVVJC
R0Jhc2UsIENvbXBhdGlibGVXaXRoRGlzdHJpYnV0aW9uVXRpbHMpIHsKKyAgRXhhbXBsZU5vbnNl
Y3VyZVVSQkcgcmJnOworCisgIGFic2w6OlVuaWZvcm0ocmJnLCAwLCAxMDApOworICBhYnNsOjpV
bmlmb3JtKHJiZywgMC41LCAwLjcpOworICBhYnNsOjpQb2lzc29uPHVpbnQzMl90PihyYmcpOwor
ICBhYnNsOjpFeHBvbmVudGlhbDxmbG9hdD4ocmJnKTsKK30KKworVEVTVChOb25zZWN1cmVVUkJH
QmFzZSwgQ29tcGF0aWJsZVdpdGhTdGREaXN0cmlidXRpb25zKSB7CisgIEV4YW1wbGVOb25zZWN1
cmVVUkJHIHJiZzsKKworICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjx1aW50MzJfdD4o
MCwgMTAwKShyYmcpOworICBzdGQ6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248ZmxvYXQ+KCko
cmJnKTsKKyAgc3RkOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uKDAuMikocmJnKTsKK30KKworVEVT
VChOb25zZWN1cmVVUkJHQmFzZSwgQ29uc2VjdXRpdmVEZWZhdWx0SW5zdGFuY2VzWWllbGRVbmlx
dWVWYXJpYXRlcykgeworICBjb25zdCBzaXplX3Qga051bVNhbXBsZXMgPSAxMjg7CisKKyAgRXhh
bXBsZU5vbnNlY3VyZVVSQkcgcmJnMTsKKyAgRXhhbXBsZU5vbnNlY3VyZVVSQkcgcmJnMjsKKwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1TYW1wbGVzOyBpKyspIHsKKyAgICBFWFBFQ1Rf
TkUocmJnMSgpLCByYmcyKCkpOworICB9Cit9CisKK1RFU1QoTm9uc2VjdXJlVVJCR0Jhc2UsIEVx
dWFsU2VlZFNlcXVlbmNlc1lpZWxkRXF1YWxWYXJpYXRlcykgeworICBzdGQ6OnNlZWRfc2VxIHNl
cTsKKworICBFeGFtcGxlTm9uc2VjdXJlVVJCRyByYmcxKHNlcSk7CisgIEV4YW1wbGVOb25zZWN1
cmVVUkJHIHJiZzIoc2VxKTsKKworICAvLyBFeGFtcGxlTm9uc2VjdXJlVVJCRyByYmczKHsxLCAy
LCAzfSk7ICAvLyBTaG91bGQgbm90IGNvbXBpbGUuCisKKyAgZm9yICh1aW50MzJfdCBpID0gMDsg
aSA8IDEwMDA7IGkrKykgeworICAgIEVYUEVDVF9FUShyYmcxKCksIHJiZzIoKSk7CisgIH0KKwor
ICByYmcxLmRpc2NhcmQoMTAwKTsKKyAgcmJnMi5kaXNjYXJkKDEwMCk7CisKKyAgLy8gVGhlIHNl
cXVlbmNlcyBzaG91bGQgY29udGludWUgYWZ0ZXIgZGlzY2FyZGluZworICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgRVhQRUNUX0VRKHJiZzEoKSwgcmJnMigpKTsK
KyAgfQorfQorCisvLyBUaGlzIGlzIGEgUFJORy1jb21wYXRpYmxlIHR5cGUgc3BlY2lmaWNhbGx5
IGRlc2lnbmVkIHRvIHRlc3QKKy8vIHRoYXQgTm9uc2VjdXJlVVJCR0Jhc2U6OlNlZWRlciBjYW4g
Y29ycmVjdGx5IGhhbmRsZSBpdGVyYXRvcnMKKy8vIHRvIGFyYml0cmFyeSBub24tdWludDMyX3Qg
c2l6ZSB0eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFNlZWRlclRlc3RFbmdp
bmUgeworICB1c2luZyByZXN1bHRfdHlwZSA9IFQ7CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1
bHRfdHlwZShtaW4pKCkgeworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRf
dHlwZT46Om1pbikoKTsKKyAgfQorICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1heCko
KSB7CisgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KSgp
OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFNlZWRTZXF1ZW5jZSwKKyAgICAgICAgICAgIHR5
cGVuYW1lID0gdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICAgICAgICAgIXN0
ZDo6aXNfc2FtZTxTZWVkU2VxdWVuY2UsIFNlZWRlclRlc3RFbmdpbmU+Ojp2YWx1ZT4+CisgIGV4
cGxpY2l0IFNlZWRlclRlc3RFbmdpbmUoU2VlZFNlcXVlbmNlJiYgc2VxKSB7CisgICAgc2VlZChz
ZXEpOworICB9CisKKyAgU2VlZGVyVGVzdEVuZ2luZShjb25zdCBTZWVkZXJUZXN0RW5naW5lJikg
PSBkZWZhdWx0OworICBTZWVkZXJUZXN0RW5naW5lJiBvcGVyYXRvcj0oY29uc3QgU2VlZGVyVGVz
dEVuZ2luZSYpID0gZGVmYXVsdDsKKyAgU2VlZGVyVGVzdEVuZ2luZShTZWVkZXJUZXN0RW5naW5l
JiYpID0gZGVmYXVsdDsKKyAgU2VlZGVyVGVzdEVuZ2luZSYgb3BlcmF0b3I9KFNlZWRlclRlc3RF
bmdpbmUmJikgPSBkZWZhdWx0OworCisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKSB7IHJldHVy
biBzdGF0ZVswXTsgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBTZWVkU2VxdWVuY2U+CisgIHZvaWQg
c2VlZChTZWVkU2VxdWVuY2UmJiBzZXEpIHsKKyAgICBzdGQ6OmZpbGwoc3RkOjpiZWdpbihzdGF0
ZSksIHN0ZDo6ZW5kKHN0YXRlKSwgVCgwKSk7CisgICAgc2VxLmdlbmVyYXRlKHN0ZDo6YmVnaW4o
c3RhdGUpLCBzdGQ6OmVuZChzdGF0ZSkpOworICB9CisKKyAgVCBzdGF0ZVsyXTsKK307CisKK1RF
U1QoTm9uc2VjdXJlVVJCR0Jhc2UsIFNlZWRlcldvcmtzRm9yVTMyKSB7CisgIHVzaW5nIFUzMiA9
CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok5vbnNlY3VyZVVSQkdCYXNlPFNlZWRlclRl
c3RFbmdpbmU8dWludDMyX3Q+PjsKKyAgVTMyIHg7CisgIEVYUEVDVF9ORSgwLCB4KCkpOworfQor
CitURVNUKE5vbnNlY3VyZVVSQkdCYXNlLCBTZWVkZXJXb3Jrc0ZvclU2NCkgeworICB1c2luZyBV
NjQgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpOb25zZWN1cmVVUkJHQmFzZTxTZWVk
ZXJUZXN0RW5naW5lPHVpbnQ2NF90Pj47CisKKyAgVTY0IHg7CisgIEVYUEVDVF9ORSgwLCB4KCkp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3BjZ19lbmdpbmUuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9pbnRlcm5hbC9wY2dfZW5naW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVkZjRlYWZmZmE0
YmFhOTc2Mjk1YWUxOTE5OTgyY2Q5Zjg0Y2Q5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9pbnRlcm5hbC9wY2dfZW5naW5lLmgKQEAgLTAsMCArMSwzMDUgQEAKKy8vIENvcHlyaWdo
dCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVS
TkFMX1BDR19FTkdJTkVfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfUENHX0VOR0lO
RV9IXworCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvY29u
ZmlnLmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJz
bC9udW1lcmljL2ludDEyOC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3Rt
YXRoLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2
ZXIuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisK
Ky8vIHBjZ19lbmdpbmUgaXMgYSBzaW1wbGlmaWVkIGltcGxlbWVudGF0aW9uIG9mIE1lbGlzc2Eg
TydOZWlsJ3MgUENHIGVuZ2luZSBpbgorLy8gQysrLiAgUENHIGNvbWJpbmVzIGEgbGluZWFyIGNv
bmdydWVudGlhbCBnZW5lcmF0b3IgKExDRykgd2l0aCBvdXRwdXQgc3RhdGUKKy8vIG1peGluZyBm
dW5jdGlvbnMgdG8gZ2VuZXJhdGUgZWFjaCByYW5kb20gdmFyaWF0ZS4gIHBjZ19lbmdpbmUgc3Vw
cG9ydHMgb25seSBhCisvLyBzaW5nbGUgc2VxdWVuY2UgKG9uZXNlcSksIGFuZCBkb2VzIG5vdCBz
dXBwb3J0IHN0cmVhbXMuCisvLworLy8gcGNnX2VuZ2luZSBpcyBwYXJhbWV0ZXJpemVkIGJ5IHR3
byB0eXBlczoKKy8vICAgUGFyYW1zLCB3aGljaCBwcm92aWRlcyB0aGUgbXVsdGlwbGllciBhbmQg
aW5jcmVtZW50IHZhbHVlczsKKy8vICAgTWl4LCB3aGljaCBtaXhlcyB0aGUgc3RhdGUgaW50byB0
aGUgcmVzdWx0LgorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbXMsIHR5cGVuYW1lIE1peD4K
K2NsYXNzIHBjZ19lbmdpbmUgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFt
ZSBQYXJhbXM6OnN0YXRlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVu
YW1lIE1peDo6c3RhdGVfdHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJDbGFzcy10ZW1w
bGF0ZSBhYnNsOjpwY2dfZW5naW5lIG11c3QgYmUgcGFyYW1ldGVyaXplZCBieSAiCisgICAgICAg
ICAgICAgICAgIlBhcmFtcyBhbmQgTWl4IHdpdGggaWRlbnRpY2FsIHN0YXRlX3R5cGUiKTsKKwor
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8dHlwZW5hbWUgTWl4OjpyZXN1bHRfdHlw
ZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICJDbGFzcy10ZW1wbGF0ZSBhYnNsOjpwY2dfZW5n
aW5lIG11c3QgYmUgcGFyYW1ldGVyaXplZCBieSAiCisgICAgICAgICAgICAgICAgImFuIHVuc2ln
bmVkIE1peDo6cmVzdWx0X3R5cGUiKTsKKworICB1c2luZyBwYXJhbXNfdHlwZSA9IFBhcmFtczsK
KyAgdXNpbmcgbWl4X3R5cGUgPSBNaXg7CisgIHVzaW5nIHN0YXRlX3R5cGUgPSB0eXBlbmFtZSBN
aXg6OnN0YXRlX3R5cGU7CisKKyBwdWJsaWM6CisgIC8vIEMrKzExIFVSQkcgaW50ZXJmYWNlOgor
ICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIE1peDo6cmVzdWx0X3R5cGU7CisKKyAgc3Rh
dGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZShtaW4pKCkgeworICAgIHJldHVybiAoc3RkOjpudW1l
cmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1pbikoKTsKKyAgfQorCisgIHN0YXRpYyBjb25zdGV4
cHIgcmVzdWx0X3R5cGUobWF4KSgpIHsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8
cmVzdWx0X3R5cGU+OjptYXgpKCk7CisgIH0KKworICBleHBsaWNpdCBwY2dfZW5naW5lKHVpbnQ2
NF90IHNlZWRfdmFsdWUgPSAwKSB7IHNlZWQoc2VlZF92YWx1ZSk7IH0KKworICB0ZW1wbGF0ZSA8
Y2xhc3MgU2VlZFNlcXVlbmNlLAorICAgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBhYnNs
OjplbmFibGVfaWZfdDwKKyAgICAgICAgICAgICAgICAhc3RkOjppc19zYW1lPFNlZWRTZXF1ZW5j
ZSwgcGNnX2VuZ2luZT46OnZhbHVlPj4KKyAgZXhwbGljaXQgcGNnX2VuZ2luZShTZWVkU2VxdWVu
Y2UmJiBzZXEpIHsKKyAgICBzZWVkKHNlcSk7CisgIH0KKworICBwY2dfZW5naW5lKGNvbnN0IHBj
Z19lbmdpbmUmKSA9IGRlZmF1bHQ7CisgIHBjZ19lbmdpbmUmIG9wZXJhdG9yPShjb25zdCBwY2df
ZW5naW5lJikgPSBkZWZhdWx0OworICBwY2dfZW5naW5lKHBjZ19lbmdpbmUmJikgPSBkZWZhdWx0
OworICBwY2dfZW5naW5lJiBvcGVyYXRvcj0ocGNnX2VuZ2luZSYmKSA9IGRlZmF1bHQ7CisKKyAg
cmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpIHsKKyAgICAvLyBBZHZhbmNlIHRoZSBMQ0cgc3RhdGUs
IGFsd2F5cyB1c2luZyB0aGUgbmV3IHZhbHVlIHRvIGdlbmVyYXRlIHRoZSBvdXRwdXQuCisgICAg
c3RhdGVfID0gbGNnKHN0YXRlXyk7CisgICAgcmV0dXJuIE1peHt9KHN0YXRlXyk7CisgIH0KKwor
ICB2b2lkIHNlZWQodWludDY0X3Qgc2VlZF92YWx1ZSA9IDApIHsKKyAgICBzdGF0ZV90eXBlIHRt
cCA9IHNlZWRfdmFsdWU7CisgICAgc3RhdGVfID0gbGNnKHRtcCArIFBhcmFtczo6aW5jcmVtZW50
KCkpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFNlZWRTZXF1ZW5jZT4KKyAgdHlwZW5hbWUg
YWJzbDo6ZW5hYmxlX2lmX3Q8CisgICAgICAhc3RkOjppc19jb252ZXJ0aWJsZTxTZWVkU2VxdWVu
Y2UsIHVpbnQ2NF90Pjo6dmFsdWUsIHZvaWQ+CisgIHNlZWQoU2VlZFNlcXVlbmNlJiYgc2VxKSB7
CisgICAgcmVzZWVkKHNlcSk7CisgIH0KKworICB2b2lkIGRpc2NhcmQodWludDY0X3QgY291bnQp
IHsgc3RhdGVfID0gYWR2YW5jZShzdGF0ZV8sIGNvdW50KTsgfQorCisgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBwY2dfZW5naW5lJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiBzdGF0ZV8gPT0g
b3RoZXIuc3RhdGVfOworICB9CisKKyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHBjZ19lbmdpbmUm
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgIHRlbXBsYXRl
IDxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgorICBmcmllbmQgdHlwZW5hbWUgYWJzbDo6ZW5h
YmxlX2lmX3Q8KHNpemVvZihzdGF0ZV90eXBlKSA9PSAxNiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mPgorICBv
cGVyYXRvcjw8KAorICAgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcywg
IC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICBjb25zdCBwY2dfZW5naW5lJiBl
bmdpbmUpIHsKKyAgICBhdXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjptYWtlX29zdHJlYW1f
c3RhdGVfc2F2ZXIob3MpOworICAgIHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX3UxMjhfaGVscGVy
PHN0YXRlX3R5cGU+IGhlbHBlcjsKKyAgICBoZWxwZXIud3JpdGUocGNnX2VuZ2luZTo6cGFyYW1z
X3R5cGU6Om11bHRpcGxpZXIoKSwgb3MpOworICAgIG9zIDw8IG9zLmZpbGwoKTsKKyAgICBoZWxw
ZXIud3JpdGUocGNnX2VuZ2luZTo6cGFyYW1zX3R5cGU6OmluY3JlbWVudCgpLCBvcyk7CisgICAg
b3MgPDwgb3MuZmlsbCgpOworICAgIGhlbHBlci53cml0ZShlbmdpbmUuc3RhdGVfLCBvcyk7Cisg
ICAgcmV0dXJuIG9zOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIENoYXJULCBjbGFzcyBUcmFp
dHM+CisgIGZyaWVuZCB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwoc2l6ZW9mKHN0YXRlX3R5
cGUpIDw9IDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpiYXNp
Y19vc3RyZWFtPENoYXJULCBUcmFpdHM+Jj4KKyAgb3BlcmF0b3I8PCgKKyAgICAgIHN0ZDo6YmFz
aWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVu
Y2VzKQorICAgICAgY29uc3QgcGNnX2VuZ2luZSYgZW5naW5lKSB7CisgICAgYXV0byBzYXZlciA9
IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKG9zKTsKKyAgICBvcyA8
PCBwY2dfZW5naW5lOjpwYXJhbXNfdHlwZTo6bXVsdGlwbGllcigpIDw8IG9zLmZpbGwoKTsKKyAg
ICBvcyA8PCBwY2dfZW5naW5lOjpwYXJhbXNfdHlwZTo6aW5jcmVtZW50KCkgPDwgb3MuZmlsbCgp
OworICAgIG9zIDw8IGVuZ2luZS5zdGF0ZV87CisgICAgcmV0dXJuIG9zOworICB9CisKKyAgdGVt
cGxhdGUgPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+CisgIGZyaWVuZCB0eXBlbmFtZSBhYnNs
OjplbmFibGVfaWZfdDwoc2l6ZW9mKHN0YXRlX3R5cGUpID09IDE2KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiY+
CisgIG9wZXJhdG9yPj4oCisgICAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4m
IGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgIHBjZ19lbmdpbmUmIGVu
Z2luZSkgeyAgICAgICAgICAgICAgICAgICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICAgIHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX3UxMjhfaGVscGVyPHN0YXRlX3R5cGU+IGhlbHBl
cjsKKyAgICBhdXRvIG11bHQgPSBoZWxwZXIucmVhZChpcyk7CisgICAgYXV0byBpbmMgPSBoZWxw
ZXIucmVhZChpcyk7CisgICAgYXV0byB0bXAgPSBoZWxwZXIucmVhZChpcyk7CisgICAgaWYgKG11
bHQgIT0gcGNnX2VuZ2luZTo6cGFyYW1zX3R5cGU6Om11bHRpcGxpZXIoKSB8fAorICAgICAgICBp
bmMgIT0gcGNnX2VuZ2luZTo6cGFyYW1zX3R5cGU6OmluY3JlbWVudCgpKSB7CisgICAgICAvLyBz
aWduYWwgZmFpbHVyZSBieSBzZXR0aW5nIHRoZSBmYWlsYml0LgorICAgICAgaXMuc2V0c3RhdGUo
aXMucmRzdGF0ZSgpIHwgc3RkOjppb3NfYmFzZTo6ZmFpbGJpdCk7CisgICAgfQorICAgIGlmICgh
aXMuZmFpbCgpKSB7CisgICAgICBlbmdpbmUuc3RhdGVfID0gdG1wOworICAgIH0KKyAgICByZXR1
cm4gaXM7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KKyAg
ZnJpZW5kIHR5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PChzaXplb2Yoc3RhdGVfdHlwZSkgPD0g
OCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX2lzdHJl
YW08Q2hhclQsIFRyYWl0cz4mPgorICBvcGVyYXRvcj4+KAorICAgICAgc3RkOjpiYXNpY19pc3Ry
ZWFtPENoYXJULCBUcmFpdHM+JiBpcywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisg
ICAgICBwY2dfZW5naW5lJiBlbmdpbmUpIHsgICAgICAgICAgICAgICAgICAgLy8gTk9MSU5UKHJ1
bnRpbWUvcmVmZXJlbmNlcykKKyAgICBzdGF0ZV90eXBlIG11bHR7fSwgaW5je30sIHRtcHt9Owor
ICAgIGlzID4+IG11bHQgPj4gaW5jID4+IHRtcDsKKyAgICBpZiAobXVsdCAhPSBwY2dfZW5naW5l
OjpwYXJhbXNfdHlwZTo6bXVsdGlwbGllcigpIHx8CisgICAgICAgIGluYyAhPSBwY2dfZW5naW5l
OjpwYXJhbXNfdHlwZTo6aW5jcmVtZW50KCkpIHsKKyAgICAgIC8vIHNpZ25hbCBmYWlsdXJlIGJ5
IHNldHRpbmcgdGhlIGZhaWxiaXQuCisgICAgICBpcy5zZXRzdGF0ZShpcy5yZHN0YXRlKCkgfCBz
dGQ6Omlvc19iYXNlOjpmYWlsYml0KTsKKyAgICB9CisgICAgaWYgKCFpcy5mYWlsKCkpIHsKKyAg
ICAgIGVuZ2luZS5zdGF0ZV8gPSB0bXA7CisgICAgfQorICAgIHJldHVybiBpczsKKyAgfQorCisg
cHJpdmF0ZToKKyAgc3RhdGVfdHlwZSBzdGF0ZV87CisKKyAgLy8gUmV0dXJucyB0aGUgbGluZWFy
LWNvbmdydWVudGlhbCBnZW5lcmF0b3IgbmV4dCBzdGF0ZS4KKyAgc3RhdGljIGlubGluZSBjb25z
dGV4cHIgc3RhdGVfdHlwZSBsY2coc3RhdGVfdHlwZSBzKSB7CisgICAgcmV0dXJuIHMgKiBQYXJh
bXM6Om11bHRpcGxpZXIoKSArIFBhcmFtczo6aW5jcmVtZW50KCk7CisgIH0KKworICAvLyBSZXR1
cm5zIHRoZSBsaW5lYXItY29uZ3J1ZW50aWFsIGFyYml0cmFyeSBzZWVrIHN0YXRlLgorICBpbmxp
bmUgc3RhdGVfdHlwZSBhZHZhbmNlKHN0YXRlX3R5cGUgcywgdWludDY0X3QgbikgY29uc3Qgewor
ICAgIHN0YXRlX3R5cGUgbXVsdCA9IFBhcmFtczo6bXVsdGlwbGllcigpOworICAgIHN0YXRlX3R5
cGUgaW5jID0gUGFyYW1zOjppbmNyZW1lbnQoKTsKKyAgICBzdGF0ZV90eXBlIG0gPSAxOworICAg
IHN0YXRlX3R5cGUgaSA9IDA7CisgICAgd2hpbGUgKG4gPiAwKSB7CisgICAgICBpZiAobiAmIDEp
IHsKKyAgICAgICAgbSAqPSBtdWx0OworICAgICAgICBpID0gaSAqIG11bHQgKyBpbmM7CisgICAg
ICB9CisgICAgICBpbmMgPSAobXVsdCArIDEpICogaW5jOworICAgICAgbXVsdCAqPSBtdWx0Owor
ICAgICAgbiA+Pj0gMTsKKyAgICB9CisgICAgcmV0dXJuIG0gKiBzICsgaTsKKyAgfQorCisgIHRl
bXBsYXRlIDxjbGFzcyBTZWVkU2VxdWVuY2U+CisgIHZvaWQgcmVzZWVkKFNlZWRTZXF1ZW5jZSYg
c2VxKSB7CisgICAgdXNpbmcgc2VxdWVuY2VfcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSBTZWVkU2Vx
dWVuY2U6OnJlc3VsdF90eXBlOworICAgIGNvbnN0ZXhwciBzaXplX3Qga0J1ZmZlclNpemUgPQor
ICAgICAgICBzaXplb2Yoc3RhdGVfdHlwZSkgLyBzaXplb2Yoc2VxdWVuY2VfcmVzdWx0X3R5cGUp
OworICAgIHNlcXVlbmNlX3Jlc3VsdF90eXBlIGJ1ZmZlcltrQnVmZmVyU2l6ZV07CisgICAgc2Vx
LmdlbmVyYXRlKHN0ZDo6YmVnaW4oYnVmZmVyKSwgc3RkOjplbmQoYnVmZmVyKSk7CisgICAgLy8g
Q29udmVydCB0aGUgc2VlZCBvdXRwdXQgdG8gYSBzaW5nbGUgc3RhdGUgdmFsdWUuCisgICAgc3Rh
dGVfdHlwZSB0bXAgPSBidWZmZXJbMF07CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBrQnVm
ZmVyU2l6ZTsgaSsrKSB7CisgICAgICB0bXAgPDw9IChzaXplb2Yoc2VxdWVuY2VfcmVzdWx0X3R5
cGUpICogOCk7CisgICAgICB0bXAgfD0gYnVmZmVyW2ldOworICAgIH0KKyAgICBzdGF0ZV8gPSBs
Y2codG1wICsgcGFyYW1zX3R5cGU6OmluY3JlbWVudCgpKTsKKyAgfQorfTsKKworLy8gUGFyYW1l
dGVyaXplZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUENHIDEyOC1iaXQgb25lc2VxIHN0YXRlLgor
Ly8gVGhpcyBwcm92aWRlcyBzdGF0ZV90eXBlLCBtdWx0aXBsaWVyLCBhbmQgaW5jcmVtZW50IGZv
ciBwY2dfZW5naW5lLgordGVtcGxhdGUgPHVpbnQ2NF90IGtNdWx0QSwgdWludDY0X3Qga011bHRC
LCB1aW50NjRfdCBrSW5jQSwgdWludDY0X3Qga0luY0I+CitjbGFzcyBwY2cxMjhfcGFyYW1zIHsK
KyBwdWJsaWM6CisjaWYgQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgKKyAgdXNpbmcgc3RhdGVf
dHlwZSA9IF9fdWludDEyOF90OworICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBzdGF0ZV90eXBl
IG1ha2VfdTEyOCh1aW50NjRfdCBhLCB1aW50NjRfdCBiKSB7CisgICAgcmV0dXJuIChzdGF0aWNf
Y2FzdDxfX3VpbnQxMjhfdD4oYSkgPDwgNjQpIHwgYjsKKyAgfQorI2Vsc2UKKyAgdXNpbmcgc3Rh
dGVfdHlwZSA9IGFic2w6OnVpbnQxMjg7CisgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIHN0YXRl
X3R5cGUgbWFrZV91MTI4KHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpIHsKKyAgICByZXR1cm4gYWJz
bDo6TWFrZVVpbnQxMjgoYSwgYik7CisgIH0KKyNlbmRpZgorCisgIHN0YXRpYyBpbmxpbmUgY29u
c3RleHByIHN0YXRlX3R5cGUgbXVsdGlwbGllcigpIHsKKyAgICByZXR1cm4gbWFrZV91MTI4KGtN
dWx0QSwga011bHRCKTsKKyAgfQorICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBzdGF0ZV90eXBl
IGluY3JlbWVudCgpIHsKKyAgICByZXR1cm4gbWFrZV91MTI4KGtJbmNBLCBrSW5jQik7CisgIH0K
K307CisKKy8vIEltcGxlbWVudGF0aW9uIG9mIHRoZSBQQ0cgeHNsX3JyXzEyOF82NCAxMjgtYml0
IG1peGluZyBmdW5jdGlvbiwgd2hpY2gKKy8vIGFjY2VwdHMgYW4gaW5wdXQgb2Ygc3RhdGVfdHlw
ZSBhbmQgbWl4ZXMgaXQgaW50byBhbiBvdXRwdXQgb2YgcmVzdWx0X3R5cGUuCitzdHJ1Y3QgcGNn
X3hzbF9ycl8xMjhfNjQgeworI2lmIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4CisgIHVzaW5n
IHN0YXRlX3R5cGUgPSBfX3VpbnQxMjhfdDsKKyNlbHNlCisgIHVzaW5nIHN0YXRlX3R5cGUgPSBh
YnNsOjp1aW50MTI4OworI2VuZGlmCisgIHVzaW5nIHJlc3VsdF90eXBlID0gdWludDY0X3Q7CisK
KyAgaW5saW5lIHVpbnQ2NF90IG9wZXJhdG9yKCkoc3RhdGVfdHlwZSBzdGF0ZSkgeworICAgIC8v
IFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgeHNsX3JyXzEyOF82NCBtaXhpbmcgZnVuY3Rpb24u
CisjaWYgQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgKKyAgICB1aW50NjRfdCByb3RhdGUgPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGUgPj4gMTIydSk7CisgICAgc3RhdGUgXj0gc3RhdGUg
Pj4gNjQ7CisgICAgdWludDY0X3QgcyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0ZSk7Cisj
ZWxzZQorICAgIHVpbnQ2NF90IGggPSBVaW50MTI4SGlnaDY0KHN0YXRlKTsKKyAgICB1aW50NjRf
dCByb3RhdGUgPSBoID4+IDU4dTsKKyAgICB1aW50NjRfdCBzID0gVWludDEyOExvdzY0KHN0YXRl
KSBeIGg7CisjZW5kaWYKKyAgICByZXR1cm4gcmFuZG9tX2ludGVybmFsOjpyb3RyKHMsIHJvdGF0
ZSk7CisgIH0KK307CisKKy8vIFBhcmFtZXRlcml6ZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBD
RyA2NC1iaXQgb25lc2VxIHN0YXRlLgorLy8gVGhpcyBwcm92aWRlcyBzdGF0ZV90eXBlLCBtdWx0
aXBsaWVyLCBhbmQgaW5jcmVtZW50IGZvciBwY2dfZW5naW5lLgordGVtcGxhdGUgPHVpbnQ2NF90
IGtNdWx0LCB1aW50NjRfdCBrSW5jPgorY2xhc3MgcGNnNjRfcGFyYW1zIHsKKyBwdWJsaWM6Cisg
IHVzaW5nIHN0YXRlX3R5cGUgPSB1aW50NjRfdDsKKyAgc3RhdGljIGlubGluZSBjb25zdGV4cHIg
c3RhdGVfdHlwZSBtdWx0aXBsaWVyKCkgeyByZXR1cm4ga011bHQ7IH0KKyAgc3RhdGljIGlubGlu
ZSBjb25zdGV4cHIgc3RhdGVfdHlwZSBpbmNyZW1lbnQoKSB7IHJldHVybiBrSW5jOyB9Cit9Owor
CisvLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgUENHIHhzaF9ycl82NF8zMiA2NC1iaXQgbWl4aW5n
IGZ1bmN0aW9uLCB3aGljaCBhY2NlcHRzCisvLyBhbiBpbnB1dCBvZiBzdGF0ZV90eXBlIGFuZCBt
aXhlcyBpdCBpbnRvIGFuIG91dHB1dCBvZiByZXN1bHRfdHlwZS4KK3N0cnVjdCBwY2dfeHNoX3Jy
XzY0XzMyIHsKKyAgdXNpbmcgc3RhdGVfdHlwZSA9IHVpbnQ2NF90OworICB1c2luZyByZXN1bHRf
dHlwZSA9IHVpbnQzMl90OworICBpbmxpbmUgdWludDMyX3Qgb3BlcmF0b3IoKSh1aW50NjRfdCBz
dGF0ZSkgeworICAgIHJldHVybiByYW5kb21faW50ZXJuYWw6OnJvdHIoCisgICAgICAgIHN0YXRp
Y19jYXN0PHVpbnQzMl90PigoKHN0YXRlID4+IDE4KSBeIHN0YXRlKSA+PiAyNyksIHN0YXRlID4+
IDU5KTsKKyAgfQorfTsKKworLy8gU3RhYmxlIHBjZ19lbmdpbmUgaW1wbGVtZW50YXRpb25zOgor
Ly8gVGhpcyBpcyBhIDY0LWJpdCBnZW5lcmF0b3IgdXNpbmcgMTI4LWJpdHMgb2Ygc3RhdGUuCisv
LyBUaGUgb3V0cHV0IHNlcXVlbmNlIGlzIGVxdWl2YWxlbnQgdG8gTWVsaXNzYSBPJ05laWwncyBw
Y2c2NF9vbmVzZXEuCit1c2luZyBwY2c2NF8yMDE4X2VuZ2luZSA9IHBjZ19lbmdpbmU8CisgICAg
cmFuZG9tX2ludGVybmFsOjpwY2cxMjhfcGFyYW1zPDB4MjM2MGVkMDUxZmM2NWRhNHVsbCwgMHg0
Mzg1ZGY2NDlmY2NmNjQ1dWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDU4NTFmNDJkNGM5NTdmMmQsIDB4MTQwNTdiN2VmNzY3ODE0Zj4sCisgICAgcmFuZG9tX2ludGVy
bmFsOjpwY2dfeHNsX3JyXzEyOF82ND47CisKKy8vIFRoaXMgaXMgYSAzMi1iaXQgZ2VuZXJhdG9y
IHVzaW5nIDY0LWJpdHMgb2Ygc3RhdGUuCisvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gTWVsaXNz
YSBPJ05laWwncyBwY2czMl9vbmVzZXEuCit1c2luZyBwY2czMl8yMDE4X2VuZ2luZSA9IHBjZ19l
bmdpbmU8CisgICAgcmFuZG9tX2ludGVybmFsOjpwY2c2NF9wYXJhbXM8MHg1ODUxZjQyZDRjOTU3
ZjJkdWxsLCAweDE0MDU3YjdlZjc2NzgxNGZ1bGw+LAorICAgIHJhbmRvbV9pbnRlcm5hbDo6cGNn
X3hzaF9ycl82NF8zMj47CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfUENHX0VO
R0lORV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3BjZ19lbmdpbmVfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wY2dfZW5naW5lX3Rlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQ3NjNlODllYjU4MDVkMGJhMzY3MjZmMzRjNmQyYzMwM2ZhZGQ0NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wY2dfZW5naW5lX3Rlc3QuY2MKQEAgLTAsMCAr
MSw2MzggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcGNnX2VuZ2luZS5oIgorCisjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPGJpdHNldD4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8
c3N0cmVhbT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcS5o
IgorI2luY2x1ZGUgImFic2wvdGltZS9jbG9jay5oIgorCisjZGVmaW5lIFVQREFURV9HT0xERU4g
MAorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkV4cGxpY2l0
U2VlZFNlcTsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cGNnMzJfMjAxOF9lbmdpbmU7
Cit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnBjZzY0XzIwMThfZW5naW5lOworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRW5naW5lVHlwZT4KK2NsYXNzIFBDR0VuZ2luZVRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHt9OworCit1c2luZyBFbmdpbmVUeXBlcyA9IDo6dGVzdGluZzo6VHlw
ZXM8cGNnNjRfMjAxOF9lbmdpbmUsIHBjZzMyXzIwMThfZW5naW5lPjsKKworVFlQRURfVEVTVF9T
VUlURShQQ0dFbmdpbmVUZXN0LCBFbmdpbmVUeXBlcyk7CisKK1RZUEVEX1RFU1QoUENHRW5naW5l
VGVzdCwgVmVyaWZ5UmVzZWVkQ2hhbmdlc0FsbFZhbHVlcykgeworICB1c2luZyBlbmdpbmVfdHlw
ZSA9IFR5cGVQYXJhbTsKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSBlbmdpbmVfdHlw
ZTo6cmVzdWx0X3R5cGU7CisKKyAgY29uc3Qgc2l6ZV90IGtOdW1PdXRwdXRzID0gMTY7CisgIGVu
Z2luZV90eXBlIGVuZ2luZTsKKworICAvLyBNU1ZDIGVtaXRzIGVycm9yIDI3MTkgd2l0aG91dCB0
aGUgdXNlIG9mIHN0ZDo6cmVmIGJlbG93LgorICAvLyAgKiBmb3JtYWwgcGFyYW1ldGVyIHdpdGgg
X19kZWNsc3BlYyhhbGlnbignIycpKSB3b24ndCBiZSBhbGlnbmVkCisKKyAgeworICAgIHN0ZDo6
c2VlZF9zZXEgc2VxMXsxLCAyLCAzLCA0LCA1LCA2LCA3fTsKKyAgICBlbmdpbmUuc2VlZChzZXEx
KTsKKyAgfQorICByZXN1bHRfdHlwZSBhW2tOdW1PdXRwdXRzXTsKKyAgc3RkOjpnZW5lcmF0ZShz
dGQ6OmJlZ2luKGEpLCBzdGQ6OmVuZChhKSwgc3RkOjpyZWYoZW5naW5lKSk7CisKKyAgeworICAg
IHN0ZDo6cmFuZG9tX2RldmljZSByZDsKKyAgICBzdGQ6OnNlZWRfc2VxIHNlcTJ7cmQoKSwgcmQo
KSwgcmQoKX07CisgICAgZW5naW5lLnNlZWQoc2VxMik7CisgIH0KKyAgcmVzdWx0X3R5cGUgYltr
TnVtT3V0cHV0c107CisgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdpbihiKSwgc3RkOjplbmQoYiks
IHN0ZDo6cmVmKGVuZ2luZSkpOworCisgIC8vIFZlcmlmeSB0aGF0IHR3byB1bmNvcnJlbGF0ZWQg
dmFsdWVzIGhhdmUgfjUwJSBvZiB0aGVyZSBiaXRzIGluIGNvbW1vbi4gVXNlCisgIC8vIGEgMTAl
IG1hcmdpbi1vZi1lcnJvciB0byByZWR1Y2UgZmxha2luZXNzLgorICBzaXplX3QgY2hhbmdlZF9i
aXRzID0gMDsKKyAgc2l6ZV90IHVuY2hhbmdlZF9iaXRzID0gMDsKKyAgc2l6ZV90IHRvdGFsX3Nl
dCA9IDA7CisgIHNpemVfdCB0b3RhbF9iaXRzID0gMDsKKyAgc2l6ZV90IGVxdWFsX2NvdW50ID0g
MDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtT3V0cHV0czsgKytpKSB7CisgICAgZXF1
YWxfY291bnQgKz0gKGFbaV0gPT0gYltpXSkgPyAxIDogMDsKKyAgICBzdGQ6OmJpdHNldDxzaXpl
b2YocmVzdWx0X3R5cGUpICogOD4gYml0c2V0KGFbaV0gXiBiW2ldKTsKKyAgICBjaGFuZ2VkX2Jp
dHMgKz0gYml0c2V0LmNvdW50KCk7CisgICAgdW5jaGFuZ2VkX2JpdHMgKz0gYml0c2V0LnNpemUo
KSAtIGJpdHNldC5jb3VudCgpOworCisgICAgc3RkOjpiaXRzZXQ8c2l6ZW9mKHJlc3VsdF90eXBl
KSAqIDg+IGFfc2V0KGFbaV0pOworICAgIHN0ZDo6Yml0c2V0PHNpemVvZihyZXN1bHRfdHlwZSkg
KiA4PiBiX3NldChiW2ldKTsKKyAgICB0b3RhbF9zZXQgKz0gYV9zZXQuY291bnQoKSArIGJfc2V0
LmNvdW50KCk7CisgICAgdG90YWxfYml0cyArPSAyICogOCAqIHNpemVvZihyZXN1bHRfdHlwZSk7
CisgIH0KKyAgLy8gT24gYXZlcmFnZSwgaGFsZiB0aGUgYml0cyBhcmUgY2hhbmdlZCBiZXR3ZWVu
IHR3byBjYWxscy4KKyAgRVhQRUNUX0xFKGNoYW5nZWRfYml0cywgMC42MCAqIChjaGFuZ2VkX2Jp
dHMgKyB1bmNoYW5nZWRfYml0cykpOworICBFWFBFQ1RfR0UoY2hhbmdlZF9iaXRzLCAwLjQwICog
KGNoYW5nZWRfYml0cyArIHVuY2hhbmdlZF9iaXRzKSk7CisKKyAgLy8gdmVyaWZ5IHVzaW5nIGEg
cXVpY2sgbm9ybWFsLWFwcHJveGltYXRpb24gdG8gdGhlIGJpbm9taWFsLgorICBFWFBFQ1RfTkVB
Uih0b3RhbF9zZXQsIHRvdGFsX2JpdHMgKiAwLjUsIDQgKiBzdGQ6OnNxcnQodG90YWxfYml0cykp
CisgICAgICA8PCAiQCIgPDwgdG90YWxfc2V0IC8gc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbF9i
aXRzKTsKKworICAvLyBBbHNvLCBBW2ldID09IEJbaV0gd2l0aCBwcm9iYWJpbGl0eSAoMS9yYW5n
ZSkgKiBOLgorICAvLyBHaXZlIHRoaXMgYSBwcmV0dHkgd2lkZSBsYXRpdHVkZSwgdGhvdWdoLgor
ICBjb25zdCBkb3VibGUga0V4cGVjdGVkID0ga051bU91dHB1dHMgLyAoMS4wICogc2l6ZW9mKHJl
c3VsdF90eXBlKSAqIDgpOworICBFWFBFQ1RfTEUoZXF1YWxfY291bnQsIDEuMCArIGtFeHBlY3Rl
ZCk7Cit9CisKKy8vIE51bWJlciBvZiB2YWx1ZXMgdGhhdCBuZWVkcyB0byBiZSBjb25zdW1lZCB0
byBjbGVhbiB0d28gc2l6ZXMgb2YgYnVmZmVyCisvLyBhbmQgdHJpZ2dlciB0aGlyZCByZWZyZXNo
LiAoc2xpZ2h0bHkgb3ZlcmVzdGltYXRlcyB0aGUgYWN0dWFsIHN0YXRlIHNpemUpLgorY29uc3Rl
eHByIHNpemVfdCBrVHdvQnVmZmVyVmFsdWVzID0gMTY7CisKK1RZUEVEX1RFU1QoUENHRW5naW5l
VGVzdCwgVmVyaWZ5RGlzY2FyZCkgeworICB1c2luZyBlbmdpbmVfdHlwZSA9IFR5cGVQYXJhbTsK
KworICBmb3IgKHNpemVfdCBudW1fdXNlZCA9IDA7IG51bV91c2VkIDwga1R3b0J1ZmZlclZhbHVl
czsgKytudW1fdXNlZCkgeworICAgIGVuZ2luZV90eXBlIGVuZ2luZV91c2VkOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtX3VzZWQ7ICsraSkgeworICAgICAgZW5naW5lX3VzZWQoKTsK
KyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBudW1fZGlzY2FyZCA9IDA7IG51bV9kaXNjYXJkIDwg
a1R3b0J1ZmZlclZhbHVlczsKKyAgICAgICAgICsrbnVtX2Rpc2NhcmQpIHsKKyAgICAgIGVuZ2lu
ZV90eXBlIGVuZ2luZTEgPSBlbmdpbmVfdXNlZDsKKyAgICAgIGVuZ2luZV90eXBlIGVuZ2luZTIg
PSBlbmdpbmVfdXNlZDsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2Rpc2NhcmQ7
ICsraSkgeworICAgICAgICBlbmdpbmUxKCk7CisgICAgICB9CisgICAgICBlbmdpbmUyLmRpc2Nh
cmQobnVtX2Rpc2NhcmQpOworICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrVHdvQnVmZmVy
VmFsdWVzOyArK2kpIHsKKyAgICAgICAgY29uc3QgYXV0byByMSA9IGVuZ2luZTEoKTsKKyAgICAg
ICAgY29uc3QgYXV0byByMiA9IGVuZ2luZTIoKTsKKyAgICAgICAgQVNTRVJUX0VRKHIxLCByMikg
PDwgInVzZWQ9IiA8PCBudW1fdXNlZCA8PCAiIGRpc2NhcmQ9IiA8PCBudW1fZGlzY2FyZDsKKyAg
ICAgIH0KKyAgICB9CisgIH0KK30KKworVFlQRURfVEVTVChQQ0dFbmdpbmVUZXN0LCBTdHJlYW1P
cGVyYXRvcnNSZXN1bHQpIHsKKyAgdXNpbmcgZW5naW5lX3R5cGUgPSBUeXBlUGFyYW07CisKKyAg
c3RkOjp3b3N0cmluZ3N0cmVhbSBvczsKKyAgc3RkOjp3aXN0cmluZ3N0cmVhbSBpczsKKyAgZW5n
aW5lX3R5cGUgZW5naW5lOworCisgIEVYUEVDVF9FUSgmKG9zIDw8IGVuZ2luZSksICZvcyk7Cisg
IEVYUEVDVF9FUSgmKGlzID4+IGVuZ2luZSksICZpcyk7Cit9CisKK1RZUEVEX1RFU1QoUENHRW5n
aW5lVGVzdCwgU3RyZWFtU2VyaWFsaXphdGlvbikgeworICB1c2luZyBlbmdpbmVfdHlwZSA9IFR5
cGVQYXJhbTsKKworICBmb3IgKHNpemVfdCBkaXNjYXJkID0gMDsgZGlzY2FyZCA8IGtUd29CdWZm
ZXJWYWx1ZXM7ICsrZGlzY2FyZCkgeworICAgIEV4cGxpY2l0U2VlZFNlcSBzZWVkX3NlcXVlbmNl
ezEyLCAzNCwgNTZ9OworICAgIGVuZ2luZV90eXBlIGVuZ2luZShzZWVkX3NlcXVlbmNlKTsKKyAg
ICBlbmdpbmUuZGlzY2FyZChkaXNjYXJkKTsKKworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVh
bTsKKyAgICBzdHJlYW0gPDwgZW5naW5lOworCisgICAgZW5naW5lX3R5cGUgbmV3X2VuZ2luZTsK
KyAgICBzdHJlYW0gPj4gbmV3X2VuZ2luZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDY0
OyArK2kpIHsKKyAgICAgIEVYUEVDVF9FUShlbmdpbmUoKSwgbmV3X2VuZ2luZSgpKSA8PCAiICIg
PDwgaTsKKyAgICB9CisgIH0KK30KKworY29uc3RleHByIHNpemVfdCBrTnVtR29sZGVuT3V0cHV0
cyA9IDEyNzsKKworLy8gVGhpcyB0ZXN0IGlzIGNoZWNraW5nIGlmIHJhbmRlbl9lbmdpbmUgaXMg
bWVldHMgaW50ZXJmYWNlIHJlcXVpcmVtZW50cworLy8gZGVmaW5lZCBpbiBbcmFuZC5yZXEudXJi
Z10uCitUWVBFRF9URVNUKFBDR0VuZ2luZVRlc3QsIFJhbmRvbU51bWJlckVuZ2luZUludGVyZmFj
ZSkgeworICB1c2luZyBlbmdpbmVfdHlwZSA9IFR5cGVQYXJhbTsKKworICB1c2luZyBFID0gZW5n
aW5lX3R5cGU7CisgIHVzaW5nIFQgPSB0eXBlbmFtZSBFOjpyZXN1bHRfdHlwZTsKKworICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAiZW5naW5lX3R5cGUgbXVzdCBiZSBjb3B5IGNvbnN0cnVjdGlibGUiKTsKKworICBz
dGF0aWNfYXNzZXJ0KGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxFPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgImVuZ2luZV90eXBlIG11c3QgYmUgY29weSBhc3NpZ25hYmxlIik7CisKKyAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxFPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgImVuZ2luZV90eXBlIG11c3QgYmUgbW92ZSBjb25zdHJ1Y3RpYmxlIik7CisKKyAg
c3RhdGljX2Fzc2VydChhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8RT46OnZhbHVlLAorICAgICAg
ICAgICAgICAgICJlbmdpbmVfdHlwZSBtdXN0IGJlIG1vdmUgYXNzaWduYWJsZSIpOworCisgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxFPigpKCkpLCBU
Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAgInJldHVybiB0eXBlIG9mIG9wZXJhdG9yKCkgbXVz
dCBiZSByZXN1bHRfdHlwZSIpOworCisgIC8vIE5hbWVzIGFmdGVyIGRlZmluaXRpb24gb2YgW3Jh
bmQucmVxLnVyYmddIGluIEMrKyBzdGFuZGFyZC4KKyAgLy8gZSB1cyBhIHZhbHVlIG9mIEUKKyAg
Ly8gdiBpcyBhIGx2YWx1ZSBvZiBFCisgIC8vIHgsIHkgYXJlIHBvc3NpYmx5IGNvbnN0IHZhbHVl
cyBvZiBFCisgIC8vIHMgaXMgYSB2YWx1ZSBvZiBUCisgIC8vIHEgaXMgYSB2YWx1ZSBzYXRpc2Z5
aW5nIHJlcXVpcmVtZW50cyBvZiBzZWVkX3NlcXVlbmNlCisgIC8vIHogaXMgYSB2YWx1ZSBvZiB0
eXBlIHVuc2lnbmVkIGxvbmcgbG9uZworICAvLyBvcyBpcyBhIHNvbWUgc3BlY2lhbGl6YXRpb24g
b2YgYmFzaWNfb3N0cmVhbQorICAvLyBpcyBpcyBhIHNvbWUgc3BlY2lhbGl6YXRpb24gb2YgYmFz
aWNfaXN0cmVhbQorCisgIEUgZSwgdjsKKyAgY29uc3QgRSB4LCB5OworICBUIHMgPSAxOworICBz
dGQ6OnNlZWRfc2VxIHF7MSwgMiwgM307CisgIHVuc2lnbmVkIGxvbmcgbG9uZyB6ID0gMTsgIC8v
IE5PTElOVChydW50aW1lL2ludCkKKyAgc3RkOjp3b3N0cmluZ3N0cmVhbSBvczsKKyAgc3RkOjp3
aXN0cmluZ3N0cmVhbSBpczsKKworICBFe307CisgIEV7eH07CisgIEV7c307CisgIEV7cX07CisK
KyAgZS5zZWVkKCk7CisKKyAgLy8gTVNWQyBlbWl0cyBlcnJvciAyNzE4IHdoZW4gdXNpbmcgRVhQ
RUNUX0VRKGUsIHgpCisgIC8vICAqIGFjdHVhbCBwYXJhbWV0ZXIgd2l0aCBfX2RlY2xzcGVjKGFs
aWduKCcjJykpIHdvbid0IGJlIGFsaWduZWQKKyAgRVhQRUNUX1RSVUUoZSA9PSB4KTsKKworICBl
LnNlZWQocSk7CisgIHsKKyAgICBFIHRtcChxKTsKKyAgICBFWFBFQ1RfVFJVRShlID09IHRtcCk7
CisgIH0KKworICBlKCk7CisgIHsKKyAgICBFIHRtcChxKTsKKyAgICBFWFBFQ1RfVFJVRShlICE9
IHRtcCk7CisgIH0KKworICBlLmRpc2NhcmQoeik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8ZGVjbHR5cGUoeCA9PSB5KSwgYm9vbD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJy
ZXR1cm4gdHlwZSBvZiBvcGVyYXRvcj09IG11c3QgYmUgYm9vbCIpOworCisgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKHggIT0geSksIGJvb2w+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAicmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3I9PSBtdXN0IGJlIGJvb2wiKTsKK30KKwor
VFlQRURfVEVTVChQQ0dFbmdpbmVUZXN0LCBSYW5kZW5FbmdpbmVTRklOQUVUZXN0KSB7CisgIHVz
aW5nIGVuZ2luZV90eXBlID0gVHlwZVBhcmFtOworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVu
YW1lIGVuZ2luZV90eXBlOjpyZXN1bHRfdHlwZTsKKworICB7CisgICAgZW5naW5lX3R5cGUgZW5n
aW5lKHJlc3VsdF90eXBlKDEpKTsKKyAgICBlbmdpbmUuc2VlZChyZXN1bHRfdHlwZSgxKSk7Cisg
IH0KKworICB7CisgICAgcmVzdWx0X3R5cGUgbiA9IDE7CisgICAgZW5naW5lX3R5cGUgZW5naW5l
KG4pOworICAgIGVuZ2luZS5zZWVkKG4pOworICB9CisKKyAgeworICAgIGVuZ2luZV90eXBlIGVu
Z2luZSgxKTsKKyAgICBlbmdpbmUuc2VlZCgxKTsKKyAgfQorCisgIHsKKyAgICBpbnQgbiA9IDE7
CisgICAgZW5naW5lX3R5cGUgZW5naW5lKG4pOworICAgIGVuZ2luZS5zZWVkKG4pOworICB9CisK
KyAgeworICAgIHN0ZDo6c2VlZF9zZXEgc2VlZF9zZXE7CisgICAgZW5naW5lX3R5cGUgZW5naW5l
KHNlZWRfc2VxKTsKKyAgICBlbmdpbmUuc2VlZChzZWVkX3NlcSk7CisgIH0KKworICB7CisgICAg
ZW5naW5lX3R5cGUgZW5naW5le3N0ZDo6c2VlZF9zZXEoKX07CisgICAgZW5naW5lLnNlZWQoc3Rk
OjpzZWVkX3NlcSgpKTsKKyAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFN0YWJpbGl0eSB0ZXN0
cyBmb3IgcGNnNjRfMjAxOF9lbmdpbmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVEVTVChQQ0c2NDIwMThFbmdp
bmVUZXN0LCBWZXJpZnlHb2xkZW4pIHsKKyAgY29uc3RleHByIHVpbnQ2NF90IGtHb2xkZW5ba051
bUdvbGRlbk91dHB1dHNdID0geworICAgICAgMHgwMTA3MDE5NmU2OTVmOGYxLCAweDcwM2VjODQw
YzU5ZjQ0OTMsIDB4ZTU0OTU0OTE0YjNhNDRmYSwKKyAgICAgIDB4OTYxMzBmZjIwNGI5Mjg1ZSwg
MHg3ZDlmZGVmNTM1Y2ViMjFhLCAweDY2NmZlZWQ0MmUxMjE5YTAsCisgICAgICAweDk4MWY2ODU3
MjFjODMyNmYsIDB4YWQ4MDcxMGQ2ZWFiNGRkYSwgMHhlMjAyYzQ4MGIwMzdhMDI5LAorICAgICAg
MHg1ZDMzOTBlYWVkZDkwN2UyLCAweDA3NTZiZWZiMzljNmI4YWEsIDB4MWZiNDRiYTY2MzRkNjJh
MywKKyAgICAgIDB4OGQyMDQyMzY2MjQyNjY0MiwgMHgzNGVhOTEwMTY3YTM5ZmI0LCAweDkzMDEw
YjQzYTgwZDBhYjYsCisgICAgICAweDY2M2RiMDhhOThmYzU2OGEsIDB4NzIwYjBhMTMzNTk1NmZh
ZSwgMHgyYzM1NDgzZTMxZTFkM2JhLAorICAgICAgMHg0MjlmMzk3NzYzMzc0MDlkLCAweGI0NmQ5
OWU2Mzg2ODczNDQsIDB4MTA1MzcwYjk2YWVkY2FlZSwKKyAgICAgIDB4Mzk5OWU5MmY4MTFjZmY3
MSwgMHhkMjMwZjhiY2I1OTFjZmM5LCAweDBkY2UzZGIyYmE3YmRlYTUsCisgICAgICAweGNmMmY1
MmM5MWVlYzk5YWYsIDB4MmJjN2MyNGE4Yjk5OGEzOSwgMHhiZDhhZjFiMGQ1OTlhMTljLAorICAg
ICAgMHg1NmJjNDVhYmM2NjA1OWY1LCAweDE3MGE0NmRjMTcwZjdmMWUsIDB4YzI1ZGFmNTI3N2I4
NWZhZCwKKyAgICAgIDB4ZTYyOWMyZTBjOTQ4ZWFkYiwgMHgxNzIwYTc5NjkxNTU0MmVkLCAweDIy
ZmIwY2FhNGY5MDk5NTEsCisgICAgICAweDdlMGMwZjQxNzVhY2Q4M2QsIDB4ZDlmY2FiMzdmZjJh
ODYwYywgMHhhYjIyODBmYjIwNTRiYWQxLAorICAgICAgMHg1OGU4YTA2ZjM3ZmE5ZTk5LCAweGMz
YTUyYTMwYjA2NTI4YzcsIDB4MDE3NWY3NzNhMTNmYzFiZCwKKyAgICAgIDB4NzMxY2ZjNTg0YjAw
ZTg0MCwgMHg0MDRjYzdiMjY0ODA2OWNiLCAweDViYzI5MTUzYjBiN2Y3ODMsCisgICAgICAweDc3
MTMxMGEzOGNjOTk5ZDEsIDB4NzY2YTU3MmYwYTcxYTkxNiwgMHg5MGY0NTBmYjRmYzQ4MzQ4LAor
ICAgICAgMHhmMDgwZWEzZTFjN2IxYTBkLCAweDE1NDcxYTQ1MDdkNjZhNDQsIDB4N2Q1OGU1NWE3
OGYzZGY2OSwKKyAgICAgIDB4MDEzMGEwOTQ1NzZhYzk5YywgMHg0NjY2OWNiMmQwNGIxZDg3LCAw
eDE3YWI1YmVkMjAxOTE4NDAsCisgICAgICAweDk1YjE3N2QyNjBhZGZmM2UsIDB4MDI1ZmI2MjRi
NmVlNGMwNywgMHhiMzVkZTQzMzAxNTRhOTVmLAorICAgICAgMHhlODUxMGZmZjY3ZTI0Yzc5LCAw
eDEzMmMzY2JjZDc2ZWQyZDMsIDB4MzVlN2NjMTQ1YTA5MzkwNCwKKyAgICAgIDB4OWY1YjViNWY4
MTU4M2I3OSwgMHgzZWU3NDlhNTMzOTY2MjMzLCAweDRhZjg1ODg2Y2RlZGE4Y2QsCisgICAgICAw
eDBjYTUzODBlY2IzZWYzYWEsIDB4NGY2NzRlYjc2NjFkMzE5MiwgMHg4OGEyOWFhZDAwY2Q3NzMz
LAorICAgICAgMHg3MGI2MjdjYTA0NWZmYWM2LCAweDU5MTJiNDNlYTg4NzYyM2QsIDB4OTVkYzlm
YzZmNjJjZjIyMSwKKyAgICAgIDB4OTI2MDgxYTEyYTVjOTA1YiwgMHg5YzU3ZDRjZDdkZmNlNjUx
LCAweDg1YWIyY2JmMjNlM2JiNWQsCisgICAgICAweGM1Y2Q2NjlmNjMwMjMxNTIsIDB4MzA2N2Jl
MGZhZDVkODk4ZSwgMHgxMmI1NmY0NDRjYjUzZDA1LAorICAgICAgMHhiYzJlNWE2NDBjMzQzNGZj
LCAweDkyODBiZmYwZTQ2MTNmZTEsIDB4OTg4MTkwOTRjNTI4NzQzZSwKKyAgICAgIDB4OTk5ZDFj
OThkODI5ZGYzMywgMHg5ZmY4MmEwMTJkYzg5MjQyLCAweGY5OTE4M2VkMzljOGJlOTQsCisgICAg
ICAweGYwZjU5MTYxY2Q0MjFjNTUsIDB4M2M3MDU3MzBjMmY2YzQ4ZCwgMHg2NmFkODVjNmU5Mjc4
YTYxLAorICAgICAgMHgyYTM0MjhlNGE0MjhkNWQwLCAweDc5MjA3ZDY4ZmQwNDk0MGQsIDB4ZWE3
ZjJiNDAyZWRjODQzMCwKKyAgICAgIDB4YTA2YjQxOWFjODU3ZjYzYiwgMHhjYjFkZDBlNmZiYzQ3
ZTFjLCAweDRmNTUyMjkyMDBhZGE2YTQsCisgICAgICAweDk2NDdiNWU2MzU5YzkyN2YsIDB4MzBi
ZjhmOTE5N2M3ZWZlNSwgMHhhNzk1MTk1MjljYzM4NGQwLAorICAgICAgMHhiYjIyYzRmMzM5YWQ2
NDk3LCAweGQ3Yjk3ODJmNTlkMTQxNzUsIDB4MGRmZjEyZmZmMmVjMDExOCwKKyAgICAgIDB4YTMz
MWFkODMwNTM0M2E3YywgMHg0OGRhZDdlM2YxN2UwODYyLCAweDMyNGM2ZmIzZmQzYzk2NjUsCisg
ICAgICAweGYwZTQzNTBlNzkzM2RmYzQsIDB4N2NjZGEyZjMwYjhiMDNiNiwgMHhhMGFmYzYxNzkw
MDVkZTQwLAorICAgICAgMHhlZTY1ZGE2ZDA2M2IzYTMwLCAweGI5NTA2ZjQyZjJiZmU4N2EsIDB4
YzlhMmUyNmIwZWY1YmFhMCwKKyAgICAgIDB4MzlmYTlkNGY0OTUwMTFkNiwgMHhiZWNjMjFhNDVk
MDIzOTQ4LCAweDZiZjQ4NGM2NTkzZjczN2YsCisgICAgICAweDgwNjVlMDA3MGNhZGMzYjcsIDB4
OWVmNjE3ZWQ4ZDQxOTc5OSwgMHhhYzY5MmNmOGMyMzNkZDE1LAorICAgICAgMHhkMmVkODc1ODNj
NGViYjk4LCAweGFkOTViYTFiZWJmZWRjNjIsIDB4OWI2MGIxNjBhODI2NGU0MywKKyAgICAgIDB4
MGJjOGM0NWY3MWZjZjI1YiwgMHg0YTc4MDM1Y2RmMWM5OTMxLCAweDQ2MDJkYzEwNjY2N2UwMjks
CisgICAgICAweGIzMzVhM2MyNTA0OThhYzgsIDB4MDI1NmViYzRkZjIwY2FiOCwgMHgwYzYxZWZk
MTUzZjBjOGQ5LAorICAgICAgMHhlNWQwMTUwYTRmODA2Zjg4LCAweDk5ZDY1MjFkMzUxZTdkODcs
IDB4OGQ0ODg4YzlmODBmNDMyNSwKKyAgICAgIDB4MTA2YzU3MzVjMWJhODY4ZCwgMHg3MzQxNDg4
MWI4ODBhODc4LCAweDgwOGE5YTU4YTMwNjQ3NTEsCisgICAgICAweDMzOWEyOWYzNzQ2ZGUzZDUs
IDB4NTQxMGQ3ZmE0Zjg3Mzg5NiwgMHhkODQ2MjNjODFkN2I4YTAzLAorICAgICAgMHgxZjdjN2U3
YTdmNDdmNDYyLAorICB9OworCisgIHBjZzY0XzIwMThfZW5naW5lIGVuZ2luZSgwKTsKKyNpZiBV
UERBVEVfR09MREVOCisgICh2b2lkKWtHb2xkZW47ICAvLyBTaWxlbmNlIHdhcm5pbmcuCisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUdvbGRlbk91dHB1dHM7ICsraSkgeworICAgIHByaW50
ZigiMHglMDE2bHgsICIsIGVuZ2luZSgpKTsKKyAgICBpZiAoaSAlIDMgPT0gMikgeworICAgICAg
cHJpbnRmKCJcbiIpOworICAgIH0KKyAgfQorICBwcmludGYoIlxuXG5cbiIpOworI2Vsc2UKKyAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBl
bmdpbmUoKSk7CisgIH0KKyAgZW5naW5lLnNlZWQoKTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVt
IDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyNlbmRp
ZgorfQorCitURVNUKFBDRzY0MjAxOEVuZ2luZVRlc3QsIFZlcmlmeUdvbGRlblNlZWRlZCkgewor
ICBjb25zdGV4cHIgdWludDY0X3Qga0dvbGRlbltrTnVtR29sZGVuT3V0cHV0c10gPSB7CisgICAg
ICAweGIwMzk4OGYxZTM5NjkxZWUsIDB4YmQyYTFlYjVhYzMxZTk3YSwgMHg4ZjAwZDZkNDMzNjM0
ZDAyLAorICAgICAgMHgxODIzYzI4ZDQ4M2Q1Nzc2LCAweDAwMGMzZWUzZTFhZWI3NGEsIDB4ZmE4
MmVmMjdhNGYzZGY5YywKKyAgICAgIDB4YzZmMzgyMzA4NjU0ZTQ1NCwgMHg0MTRhZmIxYTIzODk5
NmMyLCAweDQ3MDNhNGJjMjUyZWI0MTEsCisgICAgICAweDk5ZDY0ZjYyYzhmN2Y2NTQsIDB4YmIw
N2ViZTExYTM0ZmE0NCwgMHg3OWViMDZhMzYzYzA2MTMxLAorICAgICAgMHhmNjZhZDM3NTZmMWM2
YjIxLCAweDEzMGMwMWQ1ZTg2OWY0NTcsIDB4NWNhMmI5OTYzYWVjYmM4MSwKKyAgICAgIDB4ZmVm
N2JlYmMxZGUyN2U2YywgMHgxZDE3NGZhYTVlZDJjZGJmLCAweGQ3NWI3YTc3M2YyYmI4ODksCisg
ICAgICAweGMzNWM4NzIzMjdhMTcwYTUsIDB4NDZkYTZkODg2NDZhNDJmZSwgMHg0NjIyOTg1ZTA0
NDJkYWUyLAorICAgICAgMHhiZTNjYmQ2NzI5N2YxZjliLCAweGU3YzM3YjRhNDc5OGJmZDEsIDB4
MTczZDVkZmFkMTVhMjVjMywKKyAgICAgIDB4MGViNjg0OWJhMjk2MTUyMiwgMHhiMGZmNzI0NmU2
NzAwZDczLCAweDg4Y2I5YzQyZDNhZmE1NzcsCisgICAgICAweGI2MDk3MzFkYmQ5NGQ5MTcsIDB4
ZDM5NDFjZGEwNGI0MDA4MSwgMHgyOGQxNDBmNzQwOWJlYTNhLAorICAgICAgMHgzYzk2Njk5YTky
MGExMjRhLCAweGRiMjhiZTUyMTk1OGIyZmQsIDB4MGEzZjQ0ZGIzZDRjNTEyNCwKKyAgICAgIDB4
N2FjOGU2MGJhMTNiNzBkMiwgMHg3NWYwM2E0MWRlZDUxOTVhLCAweGFlZDEwYWM3YzRlNDgyNWQs
CisgICAgICAweGI5MmEzYjE4YWFkYjdhZGMsIDB4ZGE0NWUwMDgxZjJiY2E0NiwgMHg3NGQzOWFi
Mzc1MzE0M2ZjLAorICAgICAgMHhiNjg2MDM4MDE4ZmFjOWNhLCAweDRjYzMwOWZlOTk1NDJkYmIs
IDB4ZjNlMWE0ZmNiMzExMDk3YywKKyAgICAgIDB4NTg3NjNkNmZhNjk4ZDY5ZCwgMHhkMTFjMzY1
ZGJlY2Q4ZDYwLCAweDJjMTVkNTU3MjViMWRlZTcsCisgICAgICAweDg5ODA1ZjI1NGQ4NTY1OGMs
IDB4MjM3NGM0NGRmYzYyMTU4YiwgMHg5YTgzNTBmYTc5OTUzMjhkLAorICAgICAgMHgxOThmODM4
OTcwY2Y5MWRhLCAweDk2YWZmNTY5NTYyYzBlNTMsIDB4ZDc2YzhjNTJiN2VjNmUzZiwKKyAgICAg
IDB4MjNhMDFjZDlhZTRiYWE4MSwgMHgzYWRiMzY2YjZkMDJhODkzLCAweGIzMzEzZTJhNGM1YjMz
M2YsCisgICAgICAweDA0YzExMjMwYjk2YTU0MjUsIDB4MWY3ZjdhZjA0Nzg3ZDU3MSwgMHhhZGRi
MDE5MzY1Mjc1ZWM3LAorICAgICAgMHg1Yzk2MDQ2OGNjYjA5ZjQyLCAweDg0MzhkYjY5OGM2OWE0
NGEsIDB4NDkyYmUxZTQ2MTExNjM3ZSwKKyAgICAgIDB4OWM2YzAxZTE4MTAwYzYxMCwgMHhiZmU0
OGU3NWI3ZDBhY2ViLCAweGI1ZTBiODllYzFjZTZhMDAsCisgICAgICAweDlkMjgwZWNiYzJmZTg5
OTcsIDB4MjkwZDllOTkxYmE1ZmNhYiwgMHhlZWM1YmVjN2Q5ZDJhNGYwLAorICAgICAgMHg3MjZl
ODE0ODhmMTkxNTBlLCAweDFhNmRmNzk1NWE3ZTQ2MmMsIDB4MzdhMTJkMTc0YmE0NmJiNSwKKyAg
ICAgIDB4M2NkY2RmZmQ5NmIxYjVjNSwgMHgyYzVkNWFjMTA2NjFhMjZlLCAweGE3NDJlZDE4ZjIy
ZTUwYzQsCisgICAgICAweDAwZTBlZDg4ZmYwZDhhMzUsIDB4M2QzYzE3MThjYjFlZmMwYiwgMHgx
ZDcwYzUxZmZiY2NiZjExLAorICAgICAgMHhmYmJiODk1MTMyYTQwOTJmLCAweDYxOWQyN2YyZmIw
OTVmMjQsIDB4NjlhZjY4MjAwOTg1ZTVjNCwKKyAgICAgIDB4YmVlNDg4NWY1NzM3M2Y4ZCwgMHgx
MGI3YTZiZmUwNTg3ZTQwLCAweGE4ODVlNmNmMmY3ZTVmMGEsCisgICAgICAweDU5Zjg3OTQ2NGY3
Njc1NTAsIDB4MjRlODA1ZDY5MDU2OTkwZCwgMHg4NjA5NzBiOTExMDk1ODkxLAorICAgICAgMHhj
YTMxODk5NTRmODQxNzBkLCAweDY2NTJhNWVkZDQ1OTAxMzQsIDB4NWUxMDA4Y2VmNzYxNzRiZiwK
KyAgICAgIDB4Y2JkNDE3ODgxZjJiY2ZlNSwgMHhmZDQ5ZmM5ZDcwNmVjZDE3LCAweGVlYmY1NDAy
MjFlYmQwNjYsCisgICAgICAweDQ2YWY3Njc5NDY0NTA0Y2IsIDB4ZDQwMjg0ODY5NDY5NTZmMSwg
MHhkNGY0MTg2NGI4NmMyMTAzLAorICAgICAgMHg3YWYwOTBlNzUxNTgzMzcyLCAweDk4Y2RhYTA5
Mjc4Y2I2NDIsIDB4ZmZkNDJiOTIxMjE1NjAyZiwKKyAgICAgIDB4MWQwNWJlYzg0NjZiMTc0MCwg
MHhmMDM2ZmE3OGEwMTMyMDQ0LCAweDc4Nzg4MDU4OWQxZWNjNzgsCisgICAgICAweDU2NDQ1NTJj
ZmVmMzMyMzAsIDB4MGE5N2UyNzVmZTA2ODg0YiwgMHg5NmQxYjEzMzMzZDQ3MGI1LAorICAgICAg
MHhjOGIzY2RhZDUyZDNiMDM0LCAweDA5MTM1N2I5ZGI3Mzc2ZmQsIDB4YTVmZTQyMzI1NTVlZGY4
YywKKyAgICAgIDB4MzM3MWJjM2I2YWRhNzZiNSwgMHg3ZGVlYjIzMDA0NzdjOTk1LCAweDZmYzZk
NDI0NGYyODQ5YzEsCisgICAgICAweDc1MGU4Y2M3OTdjYTM0MGEsIDB4ODE3Mjg2MTNjZDc5ODk5
ZiwgMHgzNDY3ZjRlZTZmOWFlYjkzLAorICAgICAgMHg1ZWYwYTkwNWY1OGM2NDBmLCAweDQzMmRi
ODVlNTEwMWM5OGEsIDB4NjQ4OGU5NmY0NmFjODBjMiwKKyAgICAgIDB4MjJmZGRiMjgyNjI1MDQ4
YywgMHgxNWIyODdhMGJjMmQ0YzVkLCAweGE3ZTIzNDNlZjFmMjhiY2UsCisgICAgICAweGM4N2Vl
MWFhODliZWQwOWUsIDB4MjIwNjEwMTA3ODEyYzVlOSwgMHhjYmRhYjZmY2Q2NDBmNTg2LAorICAg
ICAgMHg4ZDQxMDQ3OTcwOTI4Nzg0LCAweDFhYTQzMTUwOWVjMWFkZTAsIDB4YWMzZjBiZTUzZjUx
OGRkYywKKyAgICAgIDB4MTZmNDQyOGFkODFkMGNiYiwgMHg2NzViMTNjMjczNmZjNGJiLCAweDZk
YjA3M2FmZGQ4N2UzMmQsCisgICAgICAweDU3MmYzY2EyZjFhMDc4YzYsCisgIH07CisKKyAgRXhw
bGljaXRTZWVkU2VxIHNlZWRfc2VxdWVuY2V7MTIsIDM0LCA1Nn07CisgIHBjZzY0XzIwMThfZW5n
aW5lIGVuZ2luZShzZWVkX3NlcXVlbmNlKTsKKyNpZiBVUERBVEVfR09MREVOCisgICh2b2lkKWtH
b2xkZW47ICAvLyBTaWxlbmNlIHdhcm5pbmcuCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051
bUdvbGRlbk91dHB1dHM7ICsraSkgeworICAgIHByaW50ZigiMHglMDE2bHgsICIsIGVuZ2luZSgp
KTsKKyAgICBpZiAoaSAlIDMgPT0gMikgeworICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKyAg
fQorICBwcmludGYoIlxuXG5cbiIpOworI2Vsc2UKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDog
a0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyAgZW5naW5l
LnNlZWQoc2VlZF9zZXF1ZW5jZSk7CisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xkZW4p
IHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOworICB9CisjZW5kaWYKK30KKworVEVT
VChQQ0c2NDIwMThFbmdpbmVUZXN0LCBWZXJpZnlHb2xkZW5Gcm9tRGVzZXJpYWxpemVkRW5naW5l
KSB7CisgIGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW2tOdW1Hb2xkZW5PdXRwdXRzXSA9IHsK
KyAgICAgIDB4ZGQ0MjViNDdiNDExM2RlYSwgMHgxYjA3MTc2NDc5ZDQ0NGIwLCAweDZiMzkxMDI3
NTg2ZjJlNDIsCisgICAgICAweGExNjZmMmIxNWY0YTIxNDMsIDB4ZmZiNmRiZDdhMTc5ZWU5Nywg
MHhiMmMwMDAzNTM2NWJmMGIxLAorICAgICAgMHg4ZmJiNTE4YjQ1ODU1NTIxLCAweGZjNzg5YTU1
ZGRmODdjM2IsIDB4NDI5NTMxZjBmMTdmZjM1NSwKKyAgICAgIDB4YmU3MDg1NjBkNjAzZDI4Mywg
MHg1YmZmNDE1MTc1YzVjYjZiLCAweGU4MTM0OTFmNGFkNDUzOTQsCisgICAgICAweGE4NTNmNDUw
NmQ1NTg4MGQsIDB4N2U1Mzg0NTNlNTY4MTcyZSwgMHhlMTAxZjFlMDk4ZGRkMGVjLAorICAgICAg
MHg2ZWUzMTI2NmVlNGM3NjZkLCAweGE4Nzg2ZDkyZDY2YjM5ZDcsIDB4ZmVlNjIyYTJhY2Y1ZTVi
MCwKKyAgICAgIDB4NWZlOGU4MmMxMDJmYTdiMywgMHgwMWYxMGJlNGNkYjUzYzlkLCAweGJlMDU0
NTM2NmY4NTcwMjIsCisgICAgICAweDEyZTc0ZjAxMGEzMzliY2EsIDB4YjEwZDg1Y2E0MGQ1Y2Uz
NCwgMHhlODBkNmZlYmE1MDU0ODc1LAorICAgICAgMHgyYjdjMWVlNmQ1NjdkNGVlLCAweDJhOWNk
MDQzYmZkMDNiNjYsIDB4NWNmYzUzMWJkMjM5ZjNmMSwKKyAgICAgIDB4MWM0NzM0ZTQ2NDdkNzBm
NSwgMHg4NWE4ZjYwZjAwNmI1NzYwLCAweDZhNDIzOWNlNzZkY2EzODcsCisgICAgICAweDhkYTBm
ODZkNzMzOTMzNWMsIDB4ZjA1NWIwNDY4NTUxMzc0ZCwgMHg0ODZlODU2N2U5YmVhOWEwLAorICAg
ICAgMHg0Y2I1MzFiODQwNTE5MmRkLCAweGY4MTNiMWVlMzE1NzExMGIsIDB4MjE0YzJhNjY0YTg3
NWQ4ZSwKKyAgICAgIDB4NzQ1MzEyMzdiMjliMzVmNywgMHhhNmYwMjY3YmI3N2E3NzFlLCAweDY0
YjU1MmJmZjU0MTg0YTQsCisgICAgICAweGEyZDZmN2FmMmQ3NWI2ZmMsIDB4NDYwYTEwMDE4ZTAz
YjVhYiwgMHg3NmZkMWZkY2I4MWQwODAwLAorICAgICAgMHg3NmY1ZjgxODA1MDcwZDlkLCAweDFm
Yjc1Y2IxYTcwYjI4OWEsIDB4OWRmZDI1YTAyMmM0YjI3ZiwKKyAgICAgIDB4OWEzMWExNGE4MDUy
OGU5ZSwgMHg5MTBkYzU2NWRkYzI1ODIwLCAweGQ2YWVmOGUyYjA5MzZjMTAsCisgICAgICAweGUx
NzczYzUwN2ZlNzAyMjUsIDB4ZTAyN2ZkN2FhZGQ2MzJiYywgMHhjMWZlY2I0MjcwODljOGI4LAor
ICAgICAgMHhiNWM3NGM2OWZhOWRiZjI2LCAweDcxYmY5YjBlNDY3MDIyN2QsIDB4MjVmNDhmYWQy
MDVkY2ZkZCwKKyAgICAgIDB4OTA1MjQ4ZWM0ZDY4OWM1NiwgMHg1YzJiNzYzMWIwZGU1YzlkLCAw
eDlmMmVlMGY4ZjQ4NTAzNmMsCisgICAgICAweGZkNmNlNGViYjkwYmY3ZWEsIDB4ZDQzNWQyMDA0
NjA4NTU3NCwgMHg2YjdlYWRjYjA2MjVmOTg2LAorICAgICAgMHg2NzlkN2Q0NGI0OGJlODllLCAw
eDQ5NjgzYjhlMWNkYzQ5ZGUsIDB4NDM2NmNmNzZlOWEyZjRjYSwKKyAgICAgIDB4NTQwMjZlYzFj
ZGFkN2JlZCwgMHhhOWEwNDM4NTIwN2YyOGQzLCAweGM4ZTY2ZGU0ZWJhMDc0YjIsCisgICAgICAw
eDQwYjA4YzQyZGUwZjRjYzAsIDB4MWQ0YzVlMGU5M2M1YmJjMCwgMHgxOWI4MDc5MmU0NzBhZTJk
LAorICAgICAgMHg2ZmNhYWVhYTRjMmE1YmQ5LCAweGE5MmNiMDdjNDIzODQzOGUsIDB4OGJiNWM5
MThhMDA3ZTI5OCwKKyAgICAgIDB4N2NkNjcxZTk0NDg3NGNmNCwgMHg4ODE2NjQ3MGIxYmEzY2Fj
LCAweGQwMTNkNDc2ZWFlZWFkZTYsCisgICAgICAweGNlZTQxNjk0NzE4OWIzYzMsIDB4NWQ3YzE2
YWIwZGNlNjA4OCwgMHhkMzU3OGE1YzMyYjEzZDI3LAorICAgICAgMHgzODc1ZGI1YWRjOWNjOTcz
LCAweGZiZGFiYTAxYzViNWRjNTYsIDB4ZmZjNGZkZDM5MWIyMzFjMywKKyAgICAgIDB4MjMzNDUy
MGVjYjE2NGZlYywgMHgzNjFjMTE1ZTdiNmRlMWZhLCAweGVlZTU4MTA2Y2MzNTYzZDcsCisgICAg
ICAweDhiN2YzNWE4ZGIyNWViYjgsIDB4YjI5ZDAwMjExZTJjYWZhNiwgMHgyMmEzOWZlNDYxNGI2
NDZiLAorICAgICAgMHg5MmNhNmRlOGI5OTg1MDZkLCAweDQwOTIyZmUzZDM4OGQxZGIsIDB4OWRh
NDdmMWU1NDBmODAyYSwKKyAgICAgIDB4ODExZGNlZWJmMTZhMjVkYiwgMHhmNjUyNGFlMjJlMGU1
M2E5LCAweDUyZDllNzgwYTE2ZWI5OWQsCisgICAgICAweDRmNTA0Mjg2YmI4MzAyMDcsIDB4ZjY2
NTRkNDc4NmJkNWNjMywgMHgwMGJkOTgzMTYwMDNhN2UxLAorICAgICAgMHhlZmRhMDU0YTZhYjhm
NWYzLCAweDQ2Y2ZiMGY0YzE4NzI4MjcsIDB4YzIyYjMxNjk2NWMwZjNiMiwKKyAgICAgIDB4ZDFh
MjgwODdjN2U3NTYyYSwgMHhhYTRmNmEwOTRiN2Y1Y2ZmLCAweGZlMmJjODUzYTA0MWY3ZGEsCisg
ICAgICAweGU5ZDUzMTQwMmE4M2MzYmEsIDB4ZTU0NWQ4NjYzZDNjZTRkZCwgMHhmYTJkY2Q3ZDkx
YTEzZmE4LAorICAgICAgMHhkYTFhMDgwZTUyYTEyN2I4LCAweDE5Yzk4ZjFmODA5YzNkODQsIDB4
MmNlZjEwOWFmNDY3OGM4OCwKKyAgICAgIDB4NTM0NjJhY2NhYjNiOTEzMiwgMHgxNzZiMTNhODA0
MTUzOTRlLCAweGVhNzAwNDdlZjZiYzE3OGIsCisgICAgICAweDU3YmNhODA1MDZkNmRjZGYsIDB4
ZDg1M2JhMDlmZjA5ZjVjNCwgMHg3NWY0ZGYzYTdkZGQ0Nzc1LAorICAgICAgMHgyMDljMzY3YWRl
NjJmNGZlLCAweGE5YTBiYmM3NGQ1ZjQ2ODIsIDB4NWRmZTM0YmFkYTg2YzIxYSwKKyAgICAgIDB4
YzJjMDViYmNkMzg1NjZkMSwgMHg2ZGU4MDg4ZTM0OGM5MTZhLCAweDZhNzAwMWM2MDAwYzIxOTYs
CisgICAgICAweGQ5ZmI1MTg2NWZjNGEzNjcsIDB4MTJmMzIwZTQ0NGVjZThmZiwgMHg2ZDU2Zjdm
NzkzZDY1MDM1LAorICAgICAgMHgxMzhmMzFiN2E4NjVmOGFhLCAweDU4ZmM2OGI0MDI2YjlhZGYs
IDB4Y2Q0ODk1NGI3OWZiNjQzNiwKKyAgICAgIDB4MjdkZmNlNGEwMjMyYWY4NywKKyAgfTsKKwor
I2lmIFVQREFURV9HT0xERU4KKyAgKHZvaWQpa0dvbGRlbjsgIC8vIFNpbGVuY2Ugd2FybmluZy4K
KyAgc3RkOjpzZWVkX3NlcSBzZWVkX3NlcXVlbmNlezEsIDIsIDN9OworICBwY2c2NF8yMDE4X2Vu
Z2luZSBlbmdpbmUoc2VlZF9zZXF1ZW5jZSk7CisgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07
CisgIHN0cmVhbSA8PCBlbmdpbmU7CisgIGF1dG8gc3RyID0gc3RyZWFtLnN0cigpOworICBwcmlu
dGYoIiVzXG5cbiIsIHN0ci5jX3N0cigpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVt
R29sZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwMTZseCwgIiwgZW5naW5lKCkp
OworICAgIGlmIChpICUgMyA9PSAyKSB7CisgICAgICBwcmludGYoIlxuIik7CisgICAgfQorICB9
CisgIHByaW50ZigiXG5cblxuIik7CisjZWxzZQorICBwY2c2NF8yMDE4X2VuZ2luZSBlbmdpbmU7
CisgIHN0ZDo6aXN0cmluZ3N0cmVhbSBzdHJlYW0oCisgICAgICAiMjU0OTI5Nzk5NTM1NTQxMzky
NCA0ODY1NTQwNTk1NzE0NDIyMzQxIDYzNjQxMzYyMjM4NDY3OTMwMDUgIgorICAgICAgIjE0NDI2
OTUwNDA4ODg5NjM0MDcgMTgwODg1MTk5NTc1NjUzMzY5OTUgNDg0NTM2OTM2ODE1ODgyNjcwOCIp
OworICBzdHJlYW0gPj4gZW5naW5lOworICBmb3IgKGNvbnN0IGF1dG8mIGVsZW0gOiBrR29sZGVu
KSB7CisgICAgRVhQRUNUX0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQorI2VuZGlmCit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8gU3RhYmlsaXR5IHRlc3RzIGZvciBwY2czMl8yMDE4X2VuZ2luZQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCitURVNUKFBDRzMyMjAxOEVuZ2luZVRlc3QsIFZlcmlmeUdvbGRlbikgeworICBj
b25zdGV4cHIgdWludDMyX3Qga0dvbGRlbltrTnVtR29sZGVuT3V0cHV0c10gPSB7CisgICAgICAw
eDdhN2VjYmQ5LCAweDg5ZmQ2YzA2LCAweGFlNjQ2YWE4LCAweGNkM2NmOTQ1LCAweDYyMDRiMzAz
LCAweDE5OGM4NTg1LAorICAgICAgMHg0OWZjZTYxMSwgMHhkMWU5Mjk3YSwgMHgxNDJkOTQ0MCwg
MHhlZTc1ZjU2YiwgMHg0NzNhOTExNywgMHhlM2E0NTkwMywKKyAgICAgIDB4YmNlODA3YTEsIDB4
ZTU0ZTVmNGQsIDB4NDk3ZDZjNTEsIDB4NjE4MjkxNjYsIDB4YTc0MDQ3NGIsIDB4MDMxOTEyYTgs
CisgICAgICAweDlkZTNkZWZhLCAweGQyNjZkYmYxLCAweDBmMzhiZWJiLCAweGVjM2M0ZjY1LCAw
eDA3YzUwNTdkLCAweGJiY2UwM2M4LAorICAgICAgMHhmZDJhYzdhOCwgMHhmZmNmNDc3MywgMHg1
YjEwYWZmYiwgMHhlZGUxYzg0MiwgMHhlMjJiMDFiNywgMHhkYTEzM2M4YywKKyAgICAgIDB4YWY4
OWIwZjQsIDB4MjVkMWI4YmMsIDB4OWY2MjU0ODIsIDB4N2JmZDY4ODIsIDB4MmUyMjEwYzAsIDB4
MmM4ZmI5YTYsCisgICAgICAweDQyY2IzYjgzLCAweDQwY2UwZGFiLCAweDY0NGEzNTEwLCAweDM2
MjMwZWYyLCAweGUyY2I2ZDQzLCAweDEwMTJiMzQzLAorICAgICAgMHg3NDZjNmM5ZiwgMHgzNjcx
NGNmOCwgMHhlZDFmNTAyNiwgMHg4YmJiZjgzZSwgMHhlOTg3MTBmNCwgMHg4YTJhZmEzNiwKKyAg
ICAgIDB4MDkwMzUzNDksIDB4NmRjMWE0ODcsIDB4NjgyYjYzNGIsIDB4YzEwNjc5NGYsIDB4N2Rk
NzhiZWIsIDB4NjI4YzI2MmIsCisgICAgICAweDg1MmZiMjMyLCAweGIxNTNhYzRjLCAweDRmMTY5
ZDFiLCAweGE2OWFiNzc0LCAweDRiZDRiNmYyLCAweGRjMzUxZGQzLAorICAgICAgMHg5M2ZmM2M4
YywgMHhhMzA4MTlhYiwgMHhmZjA3NzU4YywgMHg1YWIxM2M2MiwgMHhkMTZkN2ZiNSwgMHhjNDk1
MGZmYSwKKyAgICAgIDB4ZDMwOWFlNDksIDB4Yjk2NzdhODcsIDB4NDQ2NGUzMTcsIDB4OTBkYzQ0
ZjEsIDB4YzY5NGMxZDQsIDB4MWQ1ZTExNjgsCisgICAgICAweGFkZjM3YTJkLCAweGRhMzg5OTBk
LCAweDFlYzRiZDMzLCAweDM2Y2EyNWNlLCAweGZhMGRjNzZhLCAweDk2OGE5ZDQzLAorICAgICAg
MHg2OTUwYWMzOSwgMHhkZDMyNzZiYywgMHgwNmQ1YTcxZSwgMHgxZjZmMjgyZCwgMHg1YzYyNmM2
MiwgMHhkZGUzZmMzMSwKKyAgICAgIDB4MTUyMTk0Y2UsIDB4YzM1ZWQxNGMsIDB4YjFmNzIyNGUs
IDB4NDdmNzZiYjgsIDB4YjM0ZmRkMDgsIDB4NzAxMTM5NWUsCisgICAgICAweDE2MmQyYTQ5LCAw
eDBkMWJmMDlmLCAweDk0MjhhOTUyLCAweDAzYzVjMzQ0LCAweGQzNTI1NjE2LCAweDc4MTZmZmYz
LAorICAgICAgMHg2YmNlYjhhOCwgMHg4MzQ1YTA4MSwgMHgzNjY0MjBmZCwgMHgxODJhYmVkYSwg
MHg3MGY4Mjc0NSwgMHhhZjE1ZGVkOCwKKyAgICAgIDB4YzdmNTJjYTIsIDB4YTk4ZGI5YzUsIDB4
OTE5ZDk5YmEsIDB4OWMzNzZjMWMsIDB4ZWQ4ZDM0YzIsIDB4NzE2YWU5ZjUsCisgICAgICAweGVm
MDYyZmE1LCAweGVlM2I2YzU2LCAweDUyMzI1NjU4LCAweDYxYWZhOWMzLCAweGZkYWYwMmYwLCAw
eDk2MWNmM2FiLAorICAgICAgMHg5ZjI5MTU2NSwgMHg0ZmJmMzA0NSwgMHgwNTkwYzg5OSwgMHhk
ZTkwMTM4NSwgMHg0NTAwNWZmYiwgMHg1MDlkYjE2MiwKKyAgICAgIDB4MjYyZmE5NDEsIDB4NGM0
MjE2NTMsIDB4NGIxN2MyMWUsIDB4ZWEwZDE1MzAsIDB4ZGU4MDM4NDUsIDB4NjFiZmQ1MTUsCisg
ICAgICAweDQzODUyM2VmLAorICB9OworCisgIHBjZzMyXzIwMThfZW5naW5lIGVuZ2luZSgwKTsK
KyNpZiBVUERBVEVfR09MREVOCisgICh2b2lkKWtHb2xkZW47ICAvLyBTaWxlbmNlIHdhcm5pbmcu
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUdvbGRlbk91dHB1dHM7ICsraSkgeworICAg
IHByaW50ZigiMHglMDh4LCAiLCBlbmdpbmUoKSk7CisgICAgaWYgKGkgJSA2ID09IDUpIHsKKyAg
ICAgIHByaW50ZigiXG4iKTsKKyAgICB9CisgIH0KKyAgcHJpbnRmKCJcblxuXG4iKTsKKyNlbHNl
CisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxl
bSwgZW5naW5lKCkpOworICB9CisgIGVuZ2luZS5zZWVkKCk7CisgIGZvciAoY29uc3QgYXV0byYg
ZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOworICB9Cisj
ZW5kaWYKK30KKworVEVTVChQQ0czMjIwMThFbmdpbmVUZXN0LCBWZXJpZnlHb2xkZW5TZWVkZWQp
IHsKKyAgY29uc3RleHByIHVpbnQzMl90IGtHb2xkZW5ba051bUdvbGRlbk91dHB1dHNdID0gewor
ICAgICAgMHg2MGI1YTY0YywgMHg5Nzg1MDJmOSwgMHg4MGE3NWY2MCwgMHgyNDFmMTE1OCwgMHhh
NGNkMWRiYiwgMHhlNzI4NDAxNywKKyAgICAgIDB4M2I2NzhkYTUsIDB4NTIyM2VjOTksIDB4ZTRi
ZGQ1ZDksIDB4NzIxOTBlNmQsIDB4ZTZlNzAyYzksIDB4ZmY4MGM3NjgsCisgICAgICAweGNmMTI2
ZWQzLCAweDFmYmQyMGFiLCAweDYwOTgwNDg5LCAweGJjNzJiZjg5LCAweDQwN2FjNmMwLCAweDAw
YmYzYzUxLAorICAgICAgMHhmOTA4Nzg5NywgMHgxNzJlNGViNiwgMHhlOWU0ZjQ0MywgMHgxYTYw
OThiZiwgMHhiZjQ0ZjhjMiwgMHhkZDg0YTBlNSwKKyAgICAgIDB4ZDlhNTIzNjQsIDB4YzBlMmU3
ODYsIDB4MDYxYWUyYmEsIDB4OWZhY2I4ZTMsIDB4NjEwOTQzMmQsIDB4ZDRlMGEwMTMsCisgICAg
ICAweGJkOGViOWE2LCAweDdlODZjM2I2LCAweDYyOWMwZTY4LCAweDA1MzM3NDMwLCAweGI0OTVi
OWY0LCAweDExY2NkNjVkLAorICAgICAgMHhiNTc4ZGIyNSwgMHg2NmYxMjQ2ZCwgMHg2ZWYyMGE3
ZiwgMHg1ZTQyOTgxMiwgMHgxMTc3MjEzMCwgMHhiOTQ0YjVjMiwKKyAgICAgIDB4MDE2MjQxMjgs
IDB4YTIzODVhYjcsIDB4ZDNlMTBkMzUsIDB4YmU1NzBlYzMsIDB4Yzk1MTY1NmYsIDB4YmU4OTQ0
YTAsCisgICAgICAweDdiZTQxMDYyLCAweDU3MDlmOTE5LCAweGQ3NDVmZWRhLCAweDk4NzBiOWFl
LCAweGI0NGI4MTY4LCAweDE5ZTc2ODNiLAorICAgICAgMHhkZWQ4MDE3ZiwgMHhjNmU0ZDU0NCwg
MHg5MWFlNDIyNSwgMHhkNjc0NWZiYSwgMHhiOTkyZjI4NCwgMHg2NWIxMmIzMywKKyAgICAgIDB4
YTlkNWZkYjQsIDB4ZjEwNWNlMWEsIDB4MzVjYTFhNmUsIDB4MmZmNzBkZDAsIDB4ZDgzMzVlNDks
IDB4ZmI3MWRkZjIsCisgICAgICAweGNhZWFiYjg5LCAweDVjNmY1Zjg0LCAweDlhODExYTdkLCAw
eGJjZWNiYmQxLCAweDBmNjYxYmEwLCAweDlhZDkzYjlkLAorICAgICAgMHhlZGQyM2UwYiwgMHg0
MjA2MmY0OCwgMHhkMzhkZDdlNCwgMHg2Y2Q2M2M5YywgMHg2NDBiOThhZSwgMHg0YmZmNTY1MywK
KyAgICAgIDB4MTI2MjYzNzEsIDB4MTMyNjYwMTcsIDB4ZTdhNjk4ZDgsIDB4MzljNzQ2NjcsIDB4
ZThmZGYyZTMsIDB4NTI4MDNiZjgsCisgICAgICAweDJhZjY4OTViLCAweDkxMzM1YjdiLCAweDY5
OWU0OTYxLCAweDAwYTQwZmZmLCAweDI1M2ZmMmI2LCAweDRhNmNmNjcyLAorICAgICAgMHg5NTg0
ZTg1ZiwgMHhmMmE1MDAwYywgMHg0ZDU4YWJhOCwgMHhiODUxM2U2YSwgMHg3NjdmYWQ2NSwgMHg4
ZTMyNmY5ZSwKKyAgICAgIDB4MTgyZjE1YTEsIDB4MTYzZGFiNTIsIDB4ZGY5OWM3ODAsIDB4MDQ3
MjgyYTEsIDB4ZWU0ZjkwZGQsIDB4ZDUwMzk0YWUsCisgICAgICAweDZjOWZkNWYwLCAweGIwNmE5
MTk0LCAweDM4N2UzODQwLCAweDA0YTk0ODdiLCAweGY2NzhhNGMyLCAweGQwYTc4ODEwLAorICAg
ICAgMHhkNTAyYzk3ZSwgMHhkNmE5YjEyYSwgMHg0YWNjYzVkYywgMHg0MTZlZDUzZSwgMHg1MDQx
MTUzNiwgMHhlZWI4OWMyNCwKKyAgICAgIDB4ODEzYTc5MDIsIDB4MDM0ZWJjYTYsIDB4ZmZhNTJl
N2MsIDB4N2VjZDNkMGUsIDB4ZmEzN2EwZDIsIDB4YjFmYmUyYzEsCisgICAgICAweGI3ZWZjNmQx
LCAweGVmYTRjY2VlLCAweGY2ZjgwNDI0LCAweDIyODNmM2Q5LCAweDY4NzMyMjg0LCAweDk0ZjNi
NWM4LAorICAgICAgMHhiYmRlY2ViOSwKKyAgfTsKKworICBFeHBsaWNpdFNlZWRTZXEgc2VlZF9z
ZXF1ZW5jZXsxMiwgMzQsIDU2fTsKKyAgcGNnMzJfMjAxOF9lbmdpbmUgZW5naW5lKHNlZWRfc2Vx
dWVuY2UpOworI2lmIFVQREFURV9HT0xERU4KKyAgKHZvaWQpa0dvbGRlbjsgIC8vIFNpbGVuY2Ug
d2FybmluZy4KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtR29sZGVuT3V0cHV0czsgKytp
KSB7CisgICAgcHJpbnRmKCIweCUwOHgsICIsIGVuZ2luZSgpKTsKKyAgICBpZiAoaSAlIDYgPT0g
NSkgeworICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKyAgfQorICBwcmludGYoIlxuXG5cbiIp
OworI2Vsc2UKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVD
VF9FUShlbGVtLCBlbmdpbmUoKSk7CisgIH0KKyAgZW5naW5lLnNlZWQoc2VlZF9zZXF1ZW5jZSk7
CisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxl
bSwgZW5naW5lKCkpOworICB9CisjZW5kaWYKK30KKworVEVTVChQQ0czMjIwMThFbmdpbmVUZXN0
LCBWZXJpZnlHb2xkZW5Gcm9tRGVzZXJpYWxpemVkRW5naW5lKSB7CisgIGNvbnN0ZXhwciB1aW50
NjRfdCBrR29sZGVuW2tOdW1Hb2xkZW5PdXRwdXRzXSA9IHsKKyAgICAgIDB4NzgwZjcwNDIsIDB4
YmExMzcyMTUsIDB4NDNhYjZmMjIsIDB4MGNiNTVmNDYsIDB4NDRiMjYyN2QsIDB4ODM1NTk3YWYs
CisgICAgICAweGVhOTczZWExLCAweDBkMmFiZDM1LCAweDRmZGQ2MDFjLCAweGFjNDM0MmZlLCAw
eDdkYjdlOTNjLCAweGU1NmViY2FmLAorICAgICAgMHgzNTk2NDcwYSwgMHg3NzcwYTlhZCwgMHg5
Yjg5MzMyMCwgMHg1N2RiMzQxNSwgMHhiNDMyZGU1NCwgMHhhMDJiYWY3MSwKKyAgICAgIDB4YTI1
NmFhZGIsIDB4ODg5MjFmYzcsIDB4YTM1ZmE2YjMsIDB4ZGUzZWNhNDYsIDB4NjA1NzM5YTcsIDB4
YTg5MGI4MmIsCisgICAgICAweGU0NTdiN2FkLCAweDMzNWZiOTAzLCAweGViMDY3OTBjLCAweGIz
YzU0YmY2LCAweDYxNDFlNDQyLCAweGE1OTlhNDgyLAorICAgICAgMHhiNzg5ODdjYywgMHhjNjFk
ZmU5ZCwgMHgwZjFkNmFjZSwgMHgxNzQ2MDU5NCwgMHg4ZjZhNTA2MSwgMHgwODNkYzM1NCwKKyAg
ICAgIDB4ZTljMzM3ZmIsIDB4Y2ZkMTA1ZjcsIDB4OTI2NzY0YjYsIDB4NjM4ZDI0ZGMsIDB4ZWFh
YzY1MGEsIDB4NjdkMmNiOWMsCisgICAgICAweGQ4MDc3MzNjLCAweDIwNWZjNTJlLCAweGY1Mzk5
ZTJlLCAweDZjNDZkZGNjLCAweGI2MDNlODc1LCAweGNlMTEzYTI1LAorICAgICAgMHgzYzhkNDgx
MywgMHhmYjU4NGRiOCwgMHhmNmQyNTVmZiwgMHhlYTgwOTU0ZiwgMHg0MmU4YmU4NSwgMHhiMmZl
ZWU3MiwKKyAgICAgIDB4NjJiZDhkMTYsIDB4MWJlNGExNDIsIDB4OTdkY2ExYTQsIDB4ZGQ2ZTcz
MzMsIDB4YjJjYWEyMGUsIDB4YTEyYjE1ODgsCisgICAgICAweGViM2E1YTFhLCAweDZmYTViYTg5
LCAweDA3N2VhOTMxLCAweDhkZGIxNzEzLCAweDBkZDAzMDc5LCAweDJjMmJhOTY1LAorICAgICAg
MHhhNzdmYWMxNywgMHhjODMyNTc0MiwgMHg4YmI4OTNiZiwgMHhjMjMxNTc0MSwgMHhlYWNlZWU5
MiwgMHg4MWRkMmVlMiwKKyAgICAgIDB4ZTUyMTQyMTYsIDB4MWI5YjhmYjIsIDB4MDE2NDZkMDMs
IDB4MjRmYWNjMjUsIDB4ZDhjMGUwYmIsIDB4YTMzZmUxMDYsCisgICAgICAweGYzNGZlOTc2LCAw
eGIzYjRiNDRlLCAweDY1NjE4ZmVkLCAweDAzMmM2MTkyLCAweGE5ZGQ3MmNlLCAweGYzOTE4ODdi
LAorICAgICAgMHhmNDFjNmE2ZSwgMHgwNWM0YmQ2ZCwgMHgzN2ZhMjYwZSwgMHg0NmIwNTY1OSwg
MHhiNWY2MzQ4YSwgMHg2MmQyNmQ4OSwKKyAgICAgIDB4MzlmNjQ1MmQsIDB4YjE3YjMwYTIsIDB4
YmRkODI3NDMsIDB4MzhlY2FlM2IsIDB4ZmU5MGYwYTIsIDB4Y2IyZDIyNmQsCisgICAgICAweGNm
OGEwYjFjLCAweDBlZWQzZDRkLCAweGExZjY5Y2ZjLCAweGQ3YWMzYmE1LCAweGNlOWQ5YTZiLCAw
eDEyMWRlYjRjLAorICAgICAgMHg0YTBkMDNmMywgMHhjMTgyMWVkMSwgMHg1OWMyNDlhYywgMHhj
MGFiYjQ3NCwgMHgyODE0OTk4NSwgMHhmZDlhODJiYSwKKyAgICAgIDB4NTk2MGMzYjIsIDB4ZWZm
MDBjYmEsIDB4NjA3M2FhMTcsIDB4MjVkYzA5MTksIDB4OTk3NjYyNmUsIDB4ZGQyY2NjMzMsCisg
ICAgICAweDM5ZWNiNmVjLCAweGM2ZTE1ZDEzLCAweGZhYzk0Y2ZkLCAweDI4Y2ZkMzRmLCAweGYy
ZDJjMzJkLCAweDUxYzIzZDA4LAorICAgICAgMHg0ZmRiMmY0OCwgMHg5N2JhYTgwNywgMHhmMmMx
MDA0YywgMHhjNGFlODEzNiwgMHg3MWYzMWM5NCwgMHg4YzkyZDYwMSwKKyAgICAgIDB4MzZjYWY1
Y2QsCisgIH07CisKKyNpZiBVUERBVEVfR09MREVOCisgICh2b2lkKWtHb2xkZW47ICAvLyBTaWxl
bmNlIHdhcm5pbmcuCisgIHN0ZDo6c2VlZF9zZXEgc2VlZF9zZXF1ZW5jZXsxLCAyLCAzfTsKKyAg
cGNnMzJfMjAxOF9lbmdpbmUgZW5naW5lKHNlZWRfc2VxdWVuY2UpOworICBzdGQ6Om9zdHJpbmdz
dHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgZW5naW5lOworICBhdXRvIHN0ciA9IHN0cmVhbS5z
dHIoKTsKKyAgcHJpbnRmKCIlc1xuXG4iLCBzdHIuY19zdHIoKSk7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwga051bUdvbGRlbk91dHB1dHM7ICsraSkgeworICAgIHByaW50ZigiMHglMDh4LCAi
LCBlbmdpbmUoKSk7CisgICAgaWYgKGkgJSA2ID09IDUpIHsKKyAgICAgIHByaW50ZigiXG4iKTsK
KyAgICB9CisgIH0KKyAgcHJpbnRmKCJcblxuXG4iKTsKKworICBFWFBFQ1RfRkFMU0UodHJ1ZSk7
CisjZWxzZQorICBwY2czMl8yMDE4X2VuZ2luZSBlbmdpbmU7CisgIHN0ZDo6aXN0cmluZ3N0cmVh
bSBzdHJlYW0oCisgICAgICAiNjM2NDEzNjIyMzg0Njc5MzAwNSAxNDQyNjk1MDQwODg4OTYzNDA3
IDY1MzcwMjgxNTcyNzA2NTk4OTQiKTsKKyAgc3RyZWFtID4+IGVuZ2luZTsKKyAgZm9yIChjb25z
dCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdpbmUoKSk7
CisgIH0KKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9pbnRlcm5hbC9wbGF0Zm9ybS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3BsYXRmb3Jt
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTVhNDJjYmI4MGVhZWNkY2FiNDI3MjhjYTYzMjMzMmZmNTFiNWZkNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wbGF0Zm9ybS5oCkBAIC0w
LDAgKzEsMTcwIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwor
I2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9QTEFURk9STV9IXworI2RlZmluZSBBQlNMX1JB
TkRPTV9JTlRFUk5BTF9QTEFURk9STV9IXworCisvLyBIRVJNRVRJQyBOT1RFOiBUaGUgcmFuZGVu
X2h3YWVzIHRhcmdldCBtdXN0IG5vdCBpbnRyb2R1Y2UgZHVwbGljYXRlCisvLyBzeW1ib2xzIGZy
b20gYXJiaXRyYXJ5IHN5c3RlbSBhbmQgb3RoZXIgaGVhZGVycywgc2luY2UgaXQgbWF5IGJlIGJ1
aWx0CisvLyB3aXRoIGRpZmZlcmVudCBmbGFncyBmcm9tIG90aGVyIHRhcmdldHMsIHVzaW5nIGRp
ZmZlcmVudCBsZXZlbHMgb2YKKy8vIG9wdGltaXphdGlvbiwgcG90ZW50aWFsbHkgaW50cm9kdWNp
bmcgT0RSIHZpb2xhdGlvbnMuCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBQbGF0Zm9y
bSBGZWF0dXJlIENoZWNrcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQ3VycmVudGx5
IHN1cHBvcnRlZCBvcGVyYXRpbmcgc3lzdGVtcyBhbmQgYXNzb2NpYXRlZCBwcmVwcm9jZXNzb3IK
Ky8vIHN5bWJvbHM6CisvLworLy8gICBMaW51eCBhbmQgTGludXgtZGVyaXZlZCAgICAgICAgICAg
X19saW51eF9fCisvLyAgIEFuZHJvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0FORFJP
SURfXyAoaW1wbGllcyBfX2xpbnV4X18pCisvLyAgIExpbnV4IChub24tQW5kcm9pZCkgICAgICAg
ICAgICAgICBfX2xpbnV4X18gJiYgIV9fQU5EUk9JRF9fCisvLyAgIERhcndpbiAobWFjT1MgYW5k
IGlPUykgICAgICAgICAgICBfX0FQUExFX18KKy8vICAgQWthcm9zIChodHRwOi8vYWthcm9zLm9y
ZykgICAgICAgIF9fcm9zX18KKy8vICAgV2luZG93cyAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9XSU4zMgorLy8gICBOYUNMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19uYXRpdmVf
Y2xpZW50X18KKy8vICAgQXNtSlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtanNf
XworLy8gICBXZWJBc3NlbWJseSAgICAgICAgICAgICAgICAgICAgICAgX193YXNtX18KKy8vICAg
RnVjaHNpYSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRnVjaHNpYV9fCisvLworLy8gTm90
ZSB0aGF0IHNpbmNlIEFuZHJvaWQgZGVmaW5lcyBib3RoIF9fQU5EUk9JRF9fIGFuZCBfX2xpbnV4
X18sIG9uZQorLy8gbWF5IHByb2JlIGZvciBlaXRoZXIgTGludXggb3IgQW5kcm9pZCBieSBzaW1w
bHkgdGVzdGluZyBmb3IgX19saW51eF9fLgorLy8KKy8vIE5PVEU6IEZvciBfX0FQUExFX18gcGxh
dGZvcm1zLCB3ZSB1c2UgI2luY2x1ZGUgPFRhcmdldENvbmRpdGlvbmFscy5oPgorLy8gdG8gZGlz
dGluZ3Vpc2ggb3MgdmFyaWFudHMuCisvLworLy8gaHR0cDovL25hZGVhdXNvZnR3YXJlLmNvbS9h
cnRpY2xlcy8yMDEyLzAxL2NfY190aXBfaG93X3VzZV9jb21waWxlcl9wcmVkZWZpbmVkX21hY3Jv
c19kZXRlY3Rfb3BlcmF0aW5nX3N5c3RlbQorCisjaWYgZGVmaW5lZChfX0FQUExFX18pCisjaW5j
bHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjZW5kaWYKKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vIEFyY2hpdGVjdHVyZSBDaGVja3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
Ky8vIFRoZXNlIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGFyZSB0cnlpbmcgdG8gZGV0ZXJtaW5l
IENQVSBhcmNoaXRlY3R1cmUsCisvLyBpbmNsdWRpbmcgbmVjZXNzYXJ5IGhlYWRlcnMgdG8gc3Vw
cG9ydCBoYXJkd2FyZSBBRVMuCisvLworLy8gQUJTTF9BUkNIX3tYODYvUFBDL0FSTX0gbWFjcm9z
IGRldGVybWluZSB0aGUgcGxhdGZvcm0uCisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp
bmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9NX0FNRDY0KSB8fCBcCisgICAgZGVmaW5lZChfTV9Y
NjQpCisjZGVmaW5lIEFCU0xfQVJDSF9YODZfNjQKKyNlbGlmIGRlZmluZWQoX19pMzg2KSB8fCBk
ZWZpbmVkKF9NX0lYODYpCisjZGVmaW5lIEFCU0xfQVJDSF9YODZfMzIKKyNlbGlmIGRlZmluZWQo
X19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19hcm02NF9fKSB8fCBkZWZpbmVkKF9NX0FSTTY0KQor
I2RlZmluZSBBQlNMX0FSQ0hfQUFSQ0g2NAorI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZp
bmVkKF9fQVJNRUxfXykgfHwgZGVmaW5lZChfTV9BUk0pCisjZGVmaW5lIEFCU0xfQVJDSF9BUk0K
KyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX1BQQzY0X18pIHx8IGRl
ZmluZWQoX19wb3dlcnBjX18pIHx8IFwKKyAgICBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQo
X19QUENfXykKKyNkZWZpbmUgQUJTTF9BUkNIX1BQQworI2Vsc2UKKy8vIFVuc3VwcG9ydGVkIGFy
Y2hpdGVjdHVyZS4KKy8vICAqIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvcHJlZGVmL3dpa2kv
QXJjaGl0ZWN0dXJlcy8KKy8vICAqIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xp
YnJhcnkvYjAwODRrYXkuYXNweAorLy8gICogZm9yIGdjYywgY2xhbmc6ICJlY2hvIHwgZ2NjIC1F
IC1kTSAtIgorI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBdHRyaWJ1dGUg
Q2hlY2tzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBBQlNMX1JBTkRPTV9JTlRFUk5B
TF9SRVNUUklDVCBhbm5vdGF0ZXMgd2hldGhlciBwb2ludGVycyBtYXkgYmUgY29uc2lkZXJlZAor
Ly8gdG8gYmUgdW5hbGlhc2VkLgorI2lmIGRlZmluZWQoX19jbGFuZ19fKSB8fCBkZWZpbmVkKF9f
R05VQ19fKQorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBfX3Jlc3RyaWN0
X18KKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFM
X1JFU1RSSUNUIF9fcmVzdHJpY3QKKyNlbHNlCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFM
X1JFU1RSSUNUCisjZW5kaWYKKworLy8gQUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUyBpbmRpY2F0
ZXMgd2hldGhlciB0aGUgY3VycmVudGx5IGFjdGl2ZSBjb21waWxlcgorLy8gZmxhZ3MgKGUuZy4g
LW1hZXMpIGFsbG93IHVzaW5nIGhhcmR3YXJlIGFjY2VsZXJhdGVkIEFFUyBpbnN0cnVjdGlvbnMs
IHdoaWNoCisvLyBpbXBsaWVzIHVzIGFzc3VtaW5nIHRoYXQgdGhlIHRhcmdldCBwbGF0Zm9ybSBz
dXBwb3J0cyB0aGVtLgorI2RlZmluZSBBQlNMX0hBVkVfQUNDRUxFUkFURURfQUVTIDAKKworI2lm
IGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkKKworI2lmIGRlZmluZWQoX19BRVNfXykgfHwgZGVm
aW5lZChfX0FWWF9fKQorI3VuZGVmIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMKKyNkZWZpbmUg
QUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUyAxCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChBQlNM
X0FSQ0hfUFBDKQorCisvLyBSZWx5IG9uIFZTWCBhbmQgQ1JZUFRPIGV4dGVuc2lvbnMgZm9yIHZj
aXBoZXIgb24gUG93ZXJQQy4KKyNpZiAoZGVmaW5lZChfX1ZFQ19fKSB8fCBkZWZpbmVkKF9fQUxU
SVZFQ19fKSkgJiYgZGVmaW5lZChfX1ZTWF9fKSAmJiBcCisgICAgZGVmaW5lZChfX0NSWVBUT19f
KQorI3VuZGVmIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMKKyNkZWZpbmUgQUJTTF9IQVZFX0FD
Q0VMRVJBVEVEX0FFUyAxCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfQVJNKSB8
fCBkZWZpbmVkKEFCU0xfQVJDSF9BQVJDSDY0KQorCisvLyBodHRwOi8vaW5mb2NlbnRlci5hcm0u
Y29tL2hlbHAvdG9waWMvY29tLmFybS5kb2MuaWhpMDA1M2MvSUhJMDA1M0NfYWNsZV8yXzAucGRm
CisvLyBSZWx5IG9uIE5FT04rQ1JZUFRPIGV4dGVuc2lvbnMgZm9yIEFSTS4KKyNpZiBkZWZpbmVk
KF9fQVJNX05FT04pICYmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9DUllQVE8pCisjdW5kZWYgQUJT
TF9IQVZFX0FDQ0VMRVJBVEVEX0FFUworI2RlZmluZSBBQlNMX0hBVkVfQUNDRUxFUkFURURfQUVT
IDEKKyNlbmRpZgorCisjZW5kaWYKKworLy8gTmFDbCBkb2VzIG5vdCBhbGxvdyBBRVMuCisjaWYg
ZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKKyN1bmRlZiBBQlNMX0hBVkVfQUNDRUxFUkFURURf
QUVTCisjZGVmaW5lIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMgMAorI2VuZGlmCisKKy8vIEFC
U0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY3Vy
cmVudGx5IGFjdGl2ZQorLy8gcGxhdGZvcm0gaGFzLCBvciBzaG91bGQgdXNlIHJ1bi10aW1lIGRp
c3BhdGNoIGZvciBzZWxlY3RpbmcgdGhlCisvLyBhY2NsZXJhdGVkIFJhbmRlbiBpbXBsZW1lbnRh
dGlvbi4KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENIIDAKKworI2lm
IGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkKKy8vIERpc3BhdGNoIGlzIGF2YWlsYWJsZSBvbiB4
ODZfNjQKKyN1bmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0gKKyNkZWZpbmUg
QUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENIIDEKKyNlbGlmIGRlZmluZWQoX19saW51
eF9fKSAmJiBkZWZpbmVkKEFCU0xfQVJDSF9QUEMpCisvLyBPciB3aGVuIHJ1bm5pbmcgbGludXgg
UFBDCisjdW5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENICisjZGVmaW5lIEFC
U0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSCAxCisjZWxpZiBkZWZpbmVkKF9fbGludXhf
XykgJiYgZGVmaW5lZChBQlNMX0FSQ0hfQUFSQ0g2NCkKKy8vIE9yIHdoZW4gcnVubmluZyBsaW51
eCBBQXJjaDY0CisjdW5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENICisjZGVm
aW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSCAxCisjZWxpZiBkZWZpbmVkKF9f
bGludXhfXykgJiYgZGVmaW5lZChBQlNMX0FSQ0hfQVJNKSAmJiAoX19BUk1fQVJDSCA+PSA4KQor
Ly8gT3Igd2hlbiBydW5uaW5nIGxpbnV4IEFSTSB2OCBvciBoaWdoZXIuCisvLyAoVGhpcyBjYXB0
dXJlcyBhIGxvdCBvZiBBbmRyb2lkIGNvbmZpZ3VyYXRpb25zLikKKyN1bmRlZiBBQlNMX1JBTkRP
TV9JTlRFUk5BTF9BRVNfRElTUEFUQ0gKKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVT
X0RJU1BBVENIIDEKKyNlbmRpZgorCisvLyBOYUNsIGRvZXMgbm90IGFsbG93IGRpc3BhdGNoLgor
I2lmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCisjdW5kZWYgQUJTTF9SQU5ET01fSU5URVJO
QUxfQUVTX0RJU1BBVENICisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRD
SCAwCisjZW5kaWYKKworLy8gaU9TIGRvZXMgbm90IHN1cHBvcnQgZGlzcGF0Y2gsIGV2ZW4gb24g
eDg2LCBzaW5jZSBhcHBsaWNhdGlvbnMKKy8vIHNob3VsZCBiZSBidW5kbGVkIGFzIGZhdCBiaW5h
cmllcywgd2l0aCBhIGRpZmZlcmVudCBidWlsZCB0YWlsb3JlZCBmb3IKKy8vIGVhY2ggc3BlY2lm
aWMgc3VwcG9ydGVkIHBsYXRmb3JtL2FyY2hpdGVjdHVyZS4KKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgKFRBUkdFVF9PU19JUEhPTkUgfHwgVEFSR0VUX09TX0lQSE9ORV9TSU1VTEFUT1IpCisj
dW5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENICisjZGVmaW5lIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSCAwCisjZW5kaWYKKworI2VuZGlmICAvLyBBQlNMX1JB
TkRPTV9JTlRFUk5BTF9QTEFURk9STV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVy
bmFsL3Bvb2xfdXJiZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmcuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjJlMWMxZjZmZTI2ODgxOTk1NmI3YjRhZmM3NmRkMTk5MDZkMWU5NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmcuY2MKQEAgLTAsMCAr
MSwyNTIgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJnLmgiCisKKyNpbmNsdWRlIDxhbGdv
cml0aG0+CisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8
Y3N0cmluZz4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKworI2luY2x1ZGUgImFic2wvYmFzZS9hdHRy
aWJ1dGVzLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NhbGxfb25jZS5oIgorI2luY2x1ZGUgImFi
c2wvYmFzZS9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuLmgi
CisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAi
YWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVy
bmFsL3N5c2luZm8uaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvdW5hbGlnbmVkX2Fj
Y2Vzcy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9vcHRpbWl6YXRpb24uaCIKKyNpbmNsdWRlICJh
YnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRl
cm5hbC9zZWVkX21hdGVyaWFsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vc2VlZF9nZW5fZXhj
ZXB0aW9uLmgiCisKK3VzaW5nIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNwaW5Mb2NrOwordXNpbmcg
YWJzbDo6YmFzZV9pbnRlcm5hbDo6U3BpbkxvY2tIb2xkZXI7CisKK25hbWVzcGFjZSBhYnNsIHsK
K25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworLy8gUmFuZGVuUG9v
bEVudHJ5IGlzIGEgdGhyZWFkLXNhZmUgcHNldWRvcmFuZG9tIGJpdCBnZW5lcmF0b3IsIGltcGxl
bWVudGluZyBhCisvLyBzaW5nbGUgZ2VuZXJhdG9yIHdpdGhpbiBhIFJhbmRlblBvb2w8VD4uIEl0
IGlzIGFuIGludGVybmFsIGltcGxlbWVudGF0aW9uCisvLyBkZXRhaWwsIGFuZCBkb2VzIG5vdCBh
aW0gdG8gY29uZm9ybSB0byBbcmFuZC5yZXEudXJuZ10uCisvLworLy8gTk9URTogVGhlcmUgYXJl
IGFsaWdubWVudCBpc3N1ZXMgd2hlbiB1c2VkIG9uIEFSTSwgZm9yIGluc3RhbmNlLgorLy8gU2Vl
IHRoZSBhbGxvY2F0aW9uIGNvZGUgaW4gUG9vbEFsaWduZWRBbGxvYygpLgorY2xhc3MgUmFuZGVu
UG9vbEVudHJ5IHsKKyBwdWJsaWM6CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTdGF0ZSA9
IFJhbmRlblRyYWl0czo6a1N0YXRlQnl0ZXMgLyBzaXplb2YodWludDMyX3QpOworICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBrQ2FwYWNpdHkgPQorICAgICAgUmFuZGVuVHJhaXRzOjprQ2FwYWNp
dHlCeXRlcyAvIHNpemVvZih1aW50MzJfdCk7CisKKyAgdm9pZCBJbml0KGFic2w6OlNwYW48Y29u
c3QgdWludDMyX3Q+IGRhdGEpIHsKKyAgICBTcGluTG9ja0hvbGRlciBsKCZtdV8pOyAgLy8gQWx3
YXlzIHVuY29udGVzdGVkLgorICAgIHN0ZDo6Y29weShkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCks
IHN0ZDo6YmVnaW4oc3RhdGVfKSk7CisgICAgbmV4dF8gPSBrU3RhdGU7CisgIH0KKworICAvLyBD
b3B5IGJ5dGVzIGludG8gb3V0LgorICB2b2lkIEZpbGwodWludDhfdCogb3V0LCBzaXplX3QgYnl0
ZXMpIEFCU0xfTE9DS1NfRVhDTFVERUQobXVfKTsKKworICAvLyBSZXR1cm5zIHJhbmRvbSBiaXRz
IGZyb20gdGhlIGJ1ZmZlciBpbiB1bml0cyBvZiBULgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgaW5saW5lIFQgR2VuZXJhdGUoKSBBQlNMX0xPQ0tTX0VYQ0xVREVEKG11Xyk7CisKKyAgaW5s
aW5lIHZvaWQgTWF5YmVSZWZpbGwoKSBBQlNMX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChtdV8p
IHsKKyAgICBpZiAobmV4dF8gPj0ga1N0YXRlKSB7CisgICAgICBuZXh0XyA9IGtDYXBhY2l0eTsK
KyAgICAgIGltcGxfLkdlbmVyYXRlKHN0YXRlXyk7CisgICAgfQorICB9CisKKyBwcml2YXRlOgor
ICAvLyBSYW5kZW4gVVJCRyBzdGF0ZS4KKyAgdWludDMyX3Qgc3RhdGVfW2tTdGF0ZV0gQUJTTF9H
VUFSREVEX0JZKG11Xyk7ICAvLyBGaXJzdCB0byBzYXRpc2Z5IGFsaWdubWVudC4KKyAgU3Bpbkxv
Y2sgbXVfOworICBjb25zdCBSYW5kZW4gaW1wbF87CisgIHNpemVfdCBuZXh0XyBBQlNMX0dVQVJE
RURfQlkobXVfKTsKK307CisKK3RlbXBsYXRlIDw+CitpbmxpbmUgdWludDhfdCBSYW5kZW5Qb29s
RW50cnk6OkdlbmVyYXRlPHVpbnQ4X3Q+KCkgeworICBTcGluTG9ja0hvbGRlciBsKCZtdV8pOwor
ICBNYXliZVJlZmlsbCgpOworICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGVfW25l
eHRfKytdKTsKK30KKwordGVtcGxhdGUgPD4KK2lubGluZSB1aW50MTZfdCBSYW5kZW5Qb29sRW50
cnk6OkdlbmVyYXRlPHVpbnQxNl90PigpIHsKKyAgU3BpbkxvY2tIb2xkZXIgbCgmbXVfKTsKKyAg
TWF5YmVSZWZpbGwoKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQxNl90PihzdGF0ZV9bbmV4
dF8rK10pOworfQorCit0ZW1wbGF0ZSA8PgoraW5saW5lIHVpbnQzMl90IFJhbmRlblBvb2xFbnRy
eTo6R2VuZXJhdGU8dWludDMyX3Q+KCkgeworICBTcGluTG9ja0hvbGRlciBsKCZtdV8pOworICBN
YXliZVJlZmlsbCgpOworICByZXR1cm4gc3RhdGVfW25leHRfKytdOworfQorCit0ZW1wbGF0ZSA8
PgoraW5saW5lIHVpbnQ2NF90IFJhbmRlblBvb2xFbnRyeTo6R2VuZXJhdGU8dWludDY0X3Q+KCkg
eworICBTcGluTG9ja0hvbGRlciBsKCZtdV8pOworICBpZiAobmV4dF8gPj0ga1N0YXRlIC0gMSkg
eworICAgIG5leHRfID0ga0NhcGFjaXR5OworICAgIGltcGxfLkdlbmVyYXRlKHN0YXRlXyk7Cisg
IH0KKyAgYXV0byBwID0gc3RhdGVfICsgbmV4dF87CisgIG5leHRfICs9IDI7CisKKyAgdWludDY0
X3QgcmVzdWx0OworICBzdGQ6Om1lbWNweSgmcmVzdWx0LCBwLCBzaXplb2YocmVzdWx0KSk7Cisg
IHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgUmFuZGVuUG9vbEVudHJ5OjpGaWxsKHVpbnQ4X3Qq
IG91dCwgc2l6ZV90IGJ5dGVzKSB7CisgIFNwaW5Mb2NrSG9sZGVyIGwoJm11Xyk7CisgIHdoaWxl
IChieXRlcyA+IDApIHsKKyAgICBNYXliZVJlZmlsbCgpOworICAgIHNpemVfdCByZW1haW5pbmcg
PSAoa1N0YXRlIC0gbmV4dF8pICogc2l6ZW9mKHN0YXRlX1swXSk7CisgICAgc2l6ZV90IHRvX2Nv
cHkgPSBzdGQ6Om1pbihieXRlcywgcmVtYWluaW5nKTsKKyAgICBzdGQ6Om1lbWNweShvdXQsICZz
dGF0ZV9bbmV4dF9dLCB0b19jb3B5KTsKKyAgICBvdXQgKz0gdG9fY29weTsKKyAgICBieXRlcyAt
PSB0b19jb3B5OworICAgIG5leHRfICs9ICh0b19jb3B5ICsgc2l6ZW9mKHN0YXRlX1swXSkgLSAx
KSAvIHNpemVvZihzdGF0ZV9bMF0pOworICB9Cit9CisKKy8vIE51bWJlciBvZiBwb29sZWQgdXJi
ZyBlbnRyaWVzLgorc3RhdGljIGNvbnN0ZXhwciBpbnQga1Bvb2xTaXplID0gODsKKworLy8gU2hh
cmVkIHBvb2wgZW50cmllcy4KK3N0YXRpYyBhYnNsOjpvbmNlX2ZsYWcgcG9vbF9vbmNlOworQUJT
TF9DQUNIRUxJTkVfQUxJR05FRCBzdGF0aWMgUmFuZGVuUG9vbEVudHJ5KiBzaGFyZWRfcG9vbHNb
a1Bvb2xTaXplXTsKKworLy8gUmV0dXJucyBhbiBpZCBpbiB0aGUgcmFuZ2UgWzAgLi4uIGtQb29s
U2l6ZSksIHdoaWNoIGluZGV4ZXMgaW50byB0aGUKKy8vIHBvb2wgb2YgcmFuZG9tIGVuZ2luZXMu
CisvLworLy8gRWFjaCB0aHJlYWQgdG8gYWNjZXNzIHRoZSBwb29sIGlzIGFzc2lnbmVkIGEgc2Vx
dWVudGlhbCBJRCAod2l0aG91dCByZXVzZSkKKy8vIGZyb20gdGhlIHBvb2wtaWQgc3BhY2U7IHRo
ZSBpZCBpcyBjYWNoZWQgaW4gYSB0aHJlYWRfbG9jYWwgdmFyaWFibGUuCisvLyBUaGlzIGlkIGlz
IGFzc2lnbmVkIGJhc2VkIG9uIHRoZSBhcnJpdmFsLW9yZGVyIG9mIHRoZSB0aHJlYWQgdG8gdGhl
CisvLyBHZXRQb29sSUQgY2FsbDsgdGhpcyBoYXMgbm8gYmluYXJ5LCBDTCwgb3IgcnVudGltZSBz
dGFiaWxpdHkgYmVjYXVzZQorLy8gb24gc3Vic2VxdWVudCBydW5zIHRoZSBvcmRlciB3aXRoaW4g
dGhlIHNhbWUgcHJvZ3JhbSBtYXkgYmUgc2lnbmlmaWNhbnRseQorLy8gZGlmZmVyZW50LiBIb3dl
dmVyLCBhcyBvdGhlciB0aHJlYWQgSURzIGFyZSBub3QgYXNzaWduZWQgc2VxdWVudGlhbGx5LAor
Ly8gdGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gbWF0dGVyLgoraW50IEdldFBvb2xJRCgpIHsKKyAg
c3RhdGljX2Fzc2VydChrUG9vbFNpemUgPj0gMSwKKyAgICAgICAgICAgICAgICAiQXQgbGVhc3Qg
b25lIHVyYmcgaW5zdGFuY2UgaXMgcmVxdWlyZWQgZm9yIFBvb2xVUkJHIik7CisKKyAgQUJTTF9D
T05TVF9JTklUIHN0YXRpYyBzdGQ6OmF0b21pYzxpbnQ2NF90PiBzZXF1ZW5jZXswfTsKKworI2lm
ZGVmIEFCU0xfSEFWRV9USFJFQURfTE9DQUwKKyAgc3RhdGljIHRocmVhZF9sb2NhbCBpbnQgbXlf
cG9vbF9pZCA9IC0xOworICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKG15X3Bvb2xfaWQgPCAwKSkg
eworICAgIG15X3Bvb2xfaWQgPSAoc2VxdWVuY2UrKyAlIGtQb29sU2l6ZSk7CisgIH0KKyAgcmV0
dXJuIG15X3Bvb2xfaWQ7CisjZWxzZQorICBzdGF0aWMgcHRocmVhZF9rZXlfdCB0aWRfa2V5ID0g
W10geworICAgIHB0aHJlYWRfa2V5X3QgdG1wX2tleTsKKyAgICBpbnQgZXJyID0gcHRocmVhZF9r
ZXlfY3JlYXRlKCZ0bXBfa2V5LCBudWxscHRyKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICBBQlNM
X1JBV19MT0coRkFUQUwsICJwdGhyZWFkX2tleV9jcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnIp
OworICAgIH0KKyAgICByZXR1cm4gdG1wX2tleTsKKyAgfSgpOworCisgIC8vIFN0b3JlIHRoZSB2
YWx1ZSBpbiB0aGUgcHRocmVhZF97Z2V0L3NldH1zcGVjaWZpYy4gSG93ZXZlciBhbiB1bmluaXRp
YWxpemVkCisgIC8vIHZhbHVlIGlzIDAsIHNvIGFkZCArMSB0byBkaXN0aW5ndWlzaCBmcm9tIHRo
ZSBudWxsIHZhbHVlLgorICBpbnRwdHJfdCBteV9wb29sX2lkID0KKyAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KHB0aHJlYWRfZ2V0c3BlY2lmaWModGlkX2tleSkpOworICBpZiAoQUJT
TF9QUkVESUNUX0ZBTFNFKG15X3Bvb2xfaWQgPT0gMCkpIHsKKyAgICAvLyBObyBhbGxvY2F0ZWQg
SUQsIGFsbG9jYXRlIHRoZSBuZXh0IHZhbHVlLCBjYWNoZSBpdCwgYW5kIHJldHVybi4KKyAgICBt
eV9wb29sX2lkID0gKHNlcXVlbmNlKysgJSBrUG9vbFNpemUpICsgMTsKKyAgICBpbnQgZXJyID0g
cHRocmVhZF9zZXRzcGVjaWZpYyh0aWRfa2V5LCByZWludGVycHJldF9jYXN0PHZvaWQqPihteV9w
b29sX2lkKSk7CisgICAgaWYgKGVycikgeworICAgICAgQUJTTF9SQVdfTE9HKEZBVEFMLCAicHRo
cmVhZF9zZXRzcGVjaWZpYyBmYWlsZWQgd2l0aCAlZCIsIGVycik7CisgICAgfQorICB9CisgIHJl
dHVybiBteV9wb29sX2lkIC0gMTsKKyNlbmRpZgorfQorCisvLyBBbGxvY2F0ZSBhIFJhbmRlblBv
b2xFbnRyeSB3aXRoIGF0IGxlYXN0IDMyLWJ5dGUgYWxpZ25tZW50LCB3aGljaCBpcyByZXF1aXJl
ZAorLy8gYnkgQVJNIHBsYXRmb3JtIGNvZGUuCitSYW5kZW5Qb29sRW50cnkqIFBvb2xBbGlnbmVk
QWxsb2MoKSB7CisgIGNvbnN0ZXhwciBzaXplX3Qga0FsaWdubWVudCA9CisgICAgICBBQlNMX0NB
Q0hFTElORV9TSVpFID4gMzIgPyBBQlNMX0NBQ0hFTElORV9TSVpFIDogMzI7CisKKyAgLy8gTm90
IGFsbCB0aGUgcGxhdGZvcm1zIHRoYXQgd2UgYnVpbGQgZm9yIGhhdmUgc3RkOjphbGlnbmVkX2Fs
bG9jLCBob3dldmVyCisgIC8vIHNpbmNlIHdlIG5ldmVyIGZyZWUgdGhlc2Ugb2JqZWN0cywgd2Ug
Y2FuIG92ZXIgYWxsb2NhdGUgYW5kIG11bmdlIHRoZQorICAvLyBwb2ludGVycyB0byB0aGUgY29y
cmVjdCBhbGlnbm1lbnQuCisgIHZvaWQqIG1lbW9yeSA9IHN0ZDo6bWFsbG9jKHNpemVvZihSYW5k
ZW5Qb29sRW50cnkpICsga0FsaWdubWVudCk7CisgIGF1dG8geCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KG1lbW9yeSk7CisgIGF1dG8geSA9IHggJSBrQWxpZ25tZW50OworICB2b2lkKiBh
bGlnbmVkID0KKyAgICAgICh5ID09IDApID8gbWVtb3J5IDogcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oeCArIGtBbGlnbm1lbnQgLSB5KTsKKyAgcmV0dXJuIG5ldyAoYWxpZ25lZCkgUmFuZGVuUG9v
bEVudHJ5KCk7Cit9CisKKy8vIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGtQb29sU2l6ZSBvYmpl
Y3RzIG9mIHR5cGUgUmFuZGVuUG9vbEVudHJ5LgorLy8KKy8vIFRoZSBpbml0aWFsaXphdGlvbiBz
dHJhdGVneSBpcyB0byBpbml0aWFsaXplIG9uZSBvYmplY3QgZGlyZWN0bHkgZnJvbQorLy8gT1Mg
ZW50cm9weSwgdGhlbiB0byB1c2UgdGhhdCBvYmplY3QgdG8gc2VlZCBhbGwgb2YgdGhlIGluZGl2
aWR1YWwKKy8vIHBvb2wgaW5zdGFuY2VzLgordm9pZCBJbml0UG9vbFVSQkcoKSB7CisgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGtTZWVkU2l6ZSA9CisgICAgICBSYW5kZW5UcmFpdHM6OmtTdGF0
ZUJ5dGVzIC8gc2l6ZW9mKHVpbnQzMl90KTsKKyAgLy8gUmVhZCB0aGUgc2VlZCBkYXRhIGZyb20g
T1MgZW50cm9weSBvbmNlLgorICB1aW50MzJfdCBzZWVkX21hdGVyaWFsW2tQb29sU2l6ZSAqIGtT
ZWVkU2l6ZV07CisgIGlmICghcmFuZG9tX2ludGVybmFsOjpSZWFkU2VlZE1hdGVyaWFsRnJvbU9T
RW50cm9weSgKKyAgICAgICAgICBhYnNsOjpNYWtlU3BhbihzZWVkX21hdGVyaWFsKSkpIHsKKyAg
ICByYW5kb21faW50ZXJuYWw6OlRocm93U2VlZEdlbkV4Y2VwdGlvbigpOworICB9CisgIGZvciAo
aW50IGkgPSAwOyBpIDwga1Bvb2xTaXplOyBpKyspIHsKKyAgICBzaGFyZWRfcG9vbHNbaV0gPSBQ
b29sQWxpZ25lZEFsbG9jKCk7CisgICAgc2hhcmVkX3Bvb2xzW2ldLT5Jbml0KAorICAgICAgICBh
YnNsOjpNYWtlU3Bhbigmc2VlZF9tYXRlcmlhbFtpICoga1NlZWRTaXplXSwga1NlZWRTaXplKSk7
CisgIH0KK30KKworLy8gUmV0dXJucyB0aGUgcG9vbCBlbnRyeSBmb3IgdGhlIGN1cnJlbnQgdGhy
ZWFkLgorUmFuZGVuUG9vbEVudHJ5KiBHZXRQb29sRm9yQ3VycmVudFRocmVhZCgpIHsKKyAgYWJz
bDo6Y2FsbF9vbmNlKHBvb2xfb25jZSwgSW5pdFBvb2xVUkJHKTsKKyAgcmV0dXJuIHNoYXJlZF9w
b29sc1tHZXRQb29sSUQoKV07Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3R5cGVuYW1lIFJhbmRlblBvb2w8VD46OnJlc3VsdF90eXBlIFJhbmRlblBvb2w8
VD46OkdlbmVyYXRlKCkgeworICBhdXRvKiBwb29sID0gR2V0UG9vbEZvckN1cnJlbnRUaHJlYWQo
KTsKKyAgcmV0dXJuIHBvb2wtPkdlbmVyYXRlPFQ+KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgordm9pZCBSYW5kZW5Qb29sPFQ+OjpGaWxsKGFic2w6OlNwYW48cmVzdWx0X3R5cGU+IGRh
dGEpIHsKKyAgYXV0byogcG9vbCA9IEdldFBvb2xGb3JDdXJyZW50VGhyZWFkKCk7CisgIHBvb2wt
PkZpbGwocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkpLAorICAgICAgICAg
ICAgIGRhdGEuc2l6ZSgpICogc2l6ZW9mKHJlc3VsdF90eXBlKSk7Cit9CisKK3RlbXBsYXRlIGNs
YXNzIFJhbmRlblBvb2w8dWludDhfdD47Cit0ZW1wbGF0ZSBjbGFzcyBSYW5kZW5Qb29sPHVpbnQx
Nl90PjsKK3RlbXBsYXRlIGNsYXNzIFJhbmRlblBvb2w8dWludDMyX3Q+OwordGVtcGxhdGUgY2xh
c3MgUmFuZGVuUG9vbDx1aW50NjRfdD47CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJu
YWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJu
YWwvcG9vbF91cmJnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcG9vbF91cmJnLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWIyZGQ0YmZjZWViYTJkOWZhNzM4MTFhNmI0ZjIwYjlkOTFmNjFjZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmcuaApAQCAtMCwwICsxLDEy
OSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYg
QUJTTF9SQU5ET01fSU5URVJOQUxfUE9PTF9VUkJHX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lO
VEVSTkFMX1BPT0xfVVJCR19IXworCisjaW5jbHVkZSA8Y2ludHR5cGVzPgorI2luY2x1ZGUgPGxp
bWl0cz4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0cy5oIgorI2luY2x1
ZGUgImFic2wvdHlwZXMvc3Bhbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFu
ZG9tX2ludGVybmFsIHsKKworLy8gUmFuZGVuUG9vbCBpcyBhIHRocmVhZC1zYWZlIHJhbmRvbSBu
dW1iZXIgZ2VuZXJhdG9yIFtyYW5kb20ucmVxLnVyYmddIHRoYXQKKy8vIHVzZXMgYW4gdW5kZXJs
eWluZyBwb29sIG9mIFJhbmRlbiBnZW5lcmF0b3JzIHRvIGdlbmVyYXRlIHZhbHVlcy4gIEVhY2gg
dGhyZWFkCisvLyBoYXMgYWZmaW5pdHkgdG8gb25lIGluc3RhbmNlIG9mIHRoZSB1bmRlcmx5aW5n
IHBvb2wgZ2VuZXJhdG9ycy4gIENvbmN1cnJlbnQKKy8vIGFjY2VzcyBpcyBndWFyZGVkIGJ5IGEg
c3Bpbi1sb2NrLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBSYW5kZW5Qb29sIHsKKyBw
dWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gVDsKKyAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3Vuc2lnbmVkPHJlc3VsdF90eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIlJhbmRlblBv
b2wgdGVtcGxhdGUgYXJndW1lbnQgbXVzdCBiZSBhIGJ1aWx0LWluIHVuc2lnbmVkICIKKyAgICAg
ICAgICAgICAgICAiaW50ZWdlciB0eXBlIik7CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRf
dHlwZShtaW4pKCkgeworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlw
ZT46Om1pbikoKTsKKyAgfQorCisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUobWF4KSgp
IHsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCk7
CisgIH0KKworICBSYW5kZW5Qb29sKCkge30KKworICAvLyBSZXR1cm5zIGEgc2luZ2xlIHZhbHVl
LgorICBpbmxpbmUgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpIHsgcmV0dXJuIEdlbmVyYXRlKCk7
IH0KKworICAvLyBGaWxsIGRhdGEgd2l0aCByYW5kb20gdmFsdWVzLgorICBzdGF0aWMgdm9pZCBG
aWxsKGFic2w6OlNwYW48cmVzdWx0X3R5cGU+IGRhdGEpOworCisgcHJvdGVjdGVkOgorICAvLyBH
ZW5lcmF0ZSByZXR1cm5zIGEgc2luZ2xlIHZhbHVlLgorICBzdGF0aWMgcmVzdWx0X3R5cGUgR2Vu
ZXJhdGUoKTsKK307CisKK2V4dGVybiB0ZW1wbGF0ZSBjbGFzcyBSYW5kZW5Qb29sPHVpbnQ4X3Q+
OworZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIFJhbmRlblBvb2w8dWludDE2X3Q+OworZXh0ZXJuIHRl
bXBsYXRlIGNsYXNzIFJhbmRlblBvb2w8dWludDMyX3Q+OworZXh0ZXJuIHRlbXBsYXRlIGNsYXNz
IFJhbmRlblBvb2w8dWludDY0X3Q+OworCisvLyBQb29sVVJCRyB1c2VzIGFuIHVuZGVybHlpbmcg
cG9vbCBvZiByYW5kb20gZ2VuZXJhdG9ycyB0byBpbXBsZW1lbnQgYQorLy8gdGhyZWFkLWNvbXBh
dGlibGUgW3JhbmRvbS5yZXEudXJiZ10gaW50ZXJmYWNlIHdpdGggYW4gaW50ZXJuYWwgY2FjaGUg
b2YKKy8vIHZhbHVlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qga0J1ZmZlclNpemU+
CitjbGFzcyBQb29sVVJCRyB7CisgIC8vIEluaGVyaXRhbmNlIHRvIGFjY2VzcyB0aGUgcHJvdGVj
dGVkIHN0YXRpYyBtZW1iZXJzIG9mIFJhbmRlblBvb2wuCisgIHVzaW5nIHVuc2lnbmVkX3R5cGUg
PSB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkX2JpdHM8VD46OnR5cGU7CisgIHVzaW5nIFBvb2xUeXBl
ID0gUmFuZGVuUG9vbDx1bnNpZ25lZF90eXBlPjsKKyAgdXNpbmcgU3BhblR5cGUgPSBhYnNsOjpT
cGFuPHVuc2lnbmVkX3R5cGU+OworCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtJbml0aWFs
QnVmZmVyID0ga0J1ZmZlclNpemUgKyAxOworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrSGFs
ZkJ1ZmZlciA9IGtCdWZmZXJTaXplIC8gMjsKKworIHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0X3R5
cGUgPSBUOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc191bnNpZ25lZDxyZXN1bHRfdHlwZT46
OnZhbHVlLAorICAgICAgICAgICAgICAgICJQb29sVVJCRyBtdXN0IGJlIHBhcmFtZXRlcml6ZWQg
YnkgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIik7CisKKyAgc3RhdGljX2Fzc2VydChrQnVmZmVy
U2l6ZSA+IDEsCisgICAgICAgICAgICAgICAgIlBvb2xVUkJHIG11c3QgYmUgcGFyYW1ldGVyaXpl
ZCBieSBhIGJ1ZmZlci1zaXplID4gMSIpOworCisgIHN0YXRpY19hc3NlcnQoa0J1ZmZlclNpemUg
PD0gMjU2LAorICAgICAgICAgICAgICAgICJQb29sVVJCRyBtdXN0IGJlIHBhcmFtZXRlcml6ZWQg
YnkgYSBidWZmZXItc2l6ZSA8PSAyNTYiKTsKKworICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90
eXBlKG1pbikoKSB7CisgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBl
Pjo6bWluKSgpOworICB9CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZShtYXgpKCkg
eworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCkoKTsK
KyAgfQorCisgIFBvb2xVUkJHKCkgOiBuZXh0XyhrSW5pdGlhbEJ1ZmZlcikge30KKworICAvLyBj
b3B5LWNvbnN0cnVjdG9yIGRvZXMgbm90IGNvcHkgY2FjaGUuCisgIFBvb2xVUkJHKGNvbnN0IFBv
b2xVUkJHJikgOiBuZXh0XyhrSW5pdGlhbEJ1ZmZlcikge30KKyAgY29uc3QgUG9vbFVSQkcmIG9w
ZXJhdG9yPShjb25zdCBQb29sVVJCRyYpIHsKKyAgICBuZXh0XyA9IGtJbml0aWFsQnVmZmVyOwor
ICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIC8vIG1vdmUtY29uc3RydWN0b3IgZG9lcyBtb3Zl
IGNhY2hlLgorICBQb29sVVJCRyhQb29sVVJCRyYmKSA9IGRlZmF1bHQ7CisgIFBvb2xVUkJHJiBv
cGVyYXRvcj0oUG9vbFVSQkcmJikgPSBkZWZhdWx0OworCisgIGlubGluZSByZXN1bHRfdHlwZSBv
cGVyYXRvcigpKCkgeworICAgIGlmIChuZXh0XyA+PSBrQnVmZmVyU2l6ZSkgeworICAgICAgbmV4
dF8gPSAoa0J1ZmZlclNpemUgPiAyICYmIG5leHRfID4ga0J1ZmZlclNpemUpID8ga0hhbGZCdWZm
ZXIgOiAwOworICAgICAgUG9vbFR5cGU6OkZpbGwoU3BhblR5cGUocmVpbnRlcnByZXRfY2FzdDx1
bnNpZ25lZF90eXBlKj4oc3RhdGVfICsgbmV4dF8pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga0J1ZmZlclNpemUgLSBuZXh0XykpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGVfW25l
eHRfKytdOworICB9CisKKyBwcml2YXRlOgorICAvLyBCdWZmZXIgc2l6ZS4KKyAgc2l6ZV90IG5l
eHRfOyAgLy8gaW5kZXggd2l0aGluIHN0YXRlXworICByZXN1bHRfdHlwZSBzdGF0ZV9ba0J1ZmZl
clNpemVdOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFt
ZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9QT09MX1VSQkdf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmdfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9wb29sX3VyYmdfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2Y0
ZWFjZjE2ZmU2NDg5MjIzMGY2MWU0MWQ5NzBjODcyMjEyZjc1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZ190ZXN0LmNjCkBAIC0wLDAgKzEsMTgyIEBA
CisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFi
c2wvcmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZy5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPGJpdHNldD4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkaW50Pgor
I2luY2x1ZGUgPGl0ZXJhdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRl
ICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL3NwYW4uaCIK
KwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpQb29sVVJCRzsKK3VzaW5nIGFic2w6OnJh
bmRvbV9pbnRlcm5hbDo6UmFuZGVuUG9vbDsKKworbmFtZXNwYWNlIHsKKworLy8gaXNfcmFuZGVu
X3Bvb2wgdHJhaXQgaXMgdHJ1ZSB3aGVuIHBhcmFtZXRlcml6ZWQgYnkgYW4gUmFuZGVuUG9vbAor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBpc19yYW5kZW5fcG9vbCA9IHR5cGVuYW1lIGFi
c2w6OmRpc2p1bmN0aW9uPCAgLy8KKyAgICBzdGQ6OmlzX3NhbWU8VCwgUmFuZGVuUG9vbDx1aW50
OF90Pj4sICAgICAgICAgICAvLworICAgIHN0ZDo6aXNfc2FtZTxULCBSYW5kZW5Qb29sPHVpbnQx
Nl90Pj4sICAgICAgICAgIC8vCisgICAgc3RkOjppc19zYW1lPFQsIFJhbmRlblBvb2w8dWludDMy
X3Q+PiwgICAgICAgICAgLy8KKyAgICBzdGQ6OmlzX3NhbWU8VCwgUmFuZGVuUG9vbDx1aW50NjRf
dD4+PjsgICAgICAgICAvLworCisvLyBNeUZpbGwgZWl0aGVyIGNhbGxzIFJhbmRlblBvb2w6OkZp
bGwoKSBvciBzdGQ6OmdlbmVyYXRlKC4uLiwgcm5nKQordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFY+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDxhYnNsOjpuZWdhdGlvbjxpc19y
YW5kZW5fcG9vbDxUPj46OnZhbHVlLCB2b2lkPiAgLy8KK015RmlsbChUJiBybmcsIGFic2w6OlNw
YW48Vj4gZGF0YSkgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgc3RkOjpnZW5l
cmF0ZShzdGQ6OmJlZ2luKGRhdGEpLCBzdGQ6OmVuZChkYXRhKSwgcm5nKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Cit0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDxp
c19yYW5kZW5fcG9vbDxUPjo6dmFsdWUsIHZvaWQ+ICAvLworTXlGaWxsKFQmIHJuZywgYWJzbDo6
U3BhbjxWPiBkYXRhKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICBybmcuRmls
bChkYXRhKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuZ2luZVR5cGU+CitjbGFzcyBQb29s
VVJCR1R5cGVkVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK3VzaW5nIEVuZ2lu
ZVR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczwgIC8vCisgICAgUmFuZGVuUG9vbDx1aW50OF90Piwg
ICAgICAgICAgICAgICAvLworICAgIFJhbmRlblBvb2w8dWludDE2X3Q+LCAgICAgICAgICAgICAg
Ly8KKyAgICBSYW5kZW5Qb29sPHVpbnQzMl90PiwgICAgICAgICAgICAgIC8vCisgICAgUmFuZGVu
UG9vbDx1aW50NjRfdD4sICAgICAgICAgICAgICAvLworICAgIFBvb2xVUkJHPHVpbnQ4X3QsIDI+
LCAgICAgICAgICAgICAgLy8KKyAgICBQb29sVVJCRzx1aW50MTZfdCwgMj4sICAgICAgICAgICAg
IC8vCisgICAgUG9vbFVSQkc8dWludDMyX3QsIDI+LCAgICAgICAgICAgICAvLworICAgIFBvb2xV
UkJHPHVpbnQ2NF90LCAyPiwgICAgICAgICAgICAgLy8KKyAgICBQb29sVVJCRzx1bnNpZ25lZCBp
bnQsIDg+LCAgICAgICAgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgICBQb29sVVJCRzx1bnNp
Z25lZCBsb25nLCA4PiwgICAgICAgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgICBQb29sVVJC
Rzx1bnNpZ25lZCBsb25nIGludCwgND4sICAgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgICBQ
b29sVVJCRzx1bnNpZ25lZCBsb25nIGxvbmcsIDQ+PjsgIC8vIE5PTElOVChydW50aW1lL2ludCkK
KworVFlQRURfVEVTVF9TVUlURShQb29sVVJCR1R5cGVkVGVzdCwgRW5naW5lVHlwZXMpOworCisv
LyBUaGlzIHRlc3QgaXMgY2hlY2tzIHRoYXQgdGhlIGVuZ2luZXMgbWVldCB0aGUgVVJCRyBpbnRl
cmZhY2UgcmVxdWlyZW1lbnRzCisvLyBkZWZpbmVkIGluIFtyYW5kLnJlcS51cmJnXS4KK1RZUEVE
X1RFU1QoUG9vbFVSQkdUeXBlZFRlc3QsIFVSQkdJbnRlcmZhY2UpIHsKKyAgdXNpbmcgRSA9IFR5
cGVQYXJhbTsKKyAgdXNpbmcgVCA9IHR5cGVuYW1lIEU6OnJlc3VsdF90eXBlOworCisgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8RT46OnZhbHVlLAorICAgICAgICAg
ICAgICAgICJlbmdpbmUgbXVzdCBiZSBjb3B5IGNvbnN0cnVjdGlibGUiKTsKKworICBzdGF0aWNf
YXNzZXJ0KGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxFPjo6dmFsdWUsCisgICAgICAgICAgICAg
ICAgImVuZ2luZSBtdXN0IGJlIGNvcHkgYXNzaWduYWJsZSIpOworCisgIEUgZTsKKyAgY29uc3Qg
RSB4OworCisgIGUoKTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShl
KCkpLCBUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgInJldHVybiB0eXBlIG9mIG9wZXJhdG9y
KCkgbXVzdCBiZSByZXN1bHRfdHlwZSIpOworCisgIEUgdTAoeCk7CisgIHUwKCk7CisKKyAgRSB1
MSA9IGU7CisgIHUxKCk7Cit9CisKKy8vIFRoaXMgdmFsaWRhdGVzIHRoYXQgc2VxdWVuY2VzIGFy
ZSBpbmRlcGVuZGVudC4KK1RZUEVEX1RFU1QoUG9vbFVSQkdUeXBlZFRlc3QsIFZlcmlmeVNlcXVl
bmNlcykgeworICB1c2luZyBFID0gVHlwZVBhcmFtOworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5
cGVuYW1lIEU6OnJlc3VsdF90eXBlOworCisgIEUgcm5nOworICAodm9pZClybmcoKTsgIC8vIERp
c2NhcmQgb25lIHZhbHVlLgorCisgIGNvbnN0ZXhwciBpbnQga051bU91dHB1dHMgPSA2NDsKKyAg
cmVzdWx0X3R5cGUgYVtrTnVtT3V0cHV0c107CisgIHJlc3VsdF90eXBlIGJba051bU91dHB1dHNd
OworICBzdGQ6OmZpbGwoc3RkOjpiZWdpbihiKSwgc3RkOjplbmQoYiksIDApOworCisgIC8vIEZp
bGwgYSB1c2luZyBGaWxsIG9yIGdlbmVyYXRlLCBkZXBlbmRpbmcgb24gdGhlIGVuZ2luZSB0eXBl
LgorICB7CisgICAgRSB4ID0gcm5nOworICAgIE15RmlsbCh4LCBhYnNsOjpNYWtlU3BhbihhKSk7
CisgIH0KKworICAvLyBGaWxsIGIgdXNpbmcgc3RkOjpnZW5lcmF0ZSgpLgorICB7CisgICAgRSB4
ID0gcm5nOworICAgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdpbihiKSwgc3RkOjplbmQoYiksIHgp
OworICB9CisKKyAgLy8gVGVzdCB0aGF0IGdlbmVyYXRlZCBzZXF1ZW5jZSBjaGFuZ2VkIGFzIHNl
cXVlbmNlIG9mIGJpdHMsIGkuZS4gaWYgYWJvdXQKKyAgLy8gaGFsZiBvZiB0aGUgYml0ZXMgd2Vy
ZSBmbGlwcGVkIGJldHdlZW4gdHdvIG5vbi1jb3JyZWxhdGVkIHZhbHVlcy4KKyAgc2l6ZV90IGNo
YW5nZWRfYml0cyA9IDA7CisgIHNpemVfdCB1bmNoYW5nZWRfYml0cyA9IDA7CisgIHNpemVfdCB0
b3RhbF9zZXQgPSAwOworICBzaXplX3QgdG90YWxfYml0cyA9IDA7CisgIHNpemVfdCBlcXVhbF9j
b3VudCA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bU91dHB1dHM7ICsraSkgewor
ICAgIGVxdWFsX2NvdW50ICs9IChhW2ldID09IGJbaV0pID8gMSA6IDA7CisgICAgc3RkOjpiaXRz
ZXQ8c2l6ZW9mKHJlc3VsdF90eXBlKSAqIDg+IGJpdHNldChhW2ldIF4gYltpXSk7CisgICAgY2hh
bmdlZF9iaXRzICs9IGJpdHNldC5jb3VudCgpOworICAgIHVuY2hhbmdlZF9iaXRzICs9IGJpdHNl
dC5zaXplKCkgLSBiaXRzZXQuY291bnQoKTsKKworICAgIHN0ZDo6Yml0c2V0PHNpemVvZihyZXN1
bHRfdHlwZSkgKiA4PiBhX3NldChhW2ldKTsKKyAgICBzdGQ6OmJpdHNldDxzaXplb2YocmVzdWx0
X3R5cGUpICogOD4gYl9zZXQoYltpXSk7CisgICAgdG90YWxfc2V0ICs9IGFfc2V0LmNvdW50KCkg
KyBiX3NldC5jb3VudCgpOworICAgIHRvdGFsX2JpdHMgKz0gMiAqIDggKiBzaXplb2YocmVzdWx0
X3R5cGUpOworICB9CisgIC8vIE9uIGF2ZXJhZ2UsIGhhbGYgdGhlIGJpdHMgYXJlIGNoYW5nZWQg
YmV0d2VlbiB0d28gY2FsbHMuCisgIEVYUEVDVF9MRShjaGFuZ2VkX2JpdHMsIDAuNjAgKiAoY2hh
bmdlZF9iaXRzICsgdW5jaGFuZ2VkX2JpdHMpKTsKKyAgRVhQRUNUX0dFKGNoYW5nZWRfYml0cywg
MC40MCAqIChjaGFuZ2VkX2JpdHMgKyB1bmNoYW5nZWRfYml0cykpOworCisgIC8vIHZlcmlmeSB1
c2luZyBhIHF1aWNrIG5vcm1hbC1hcHByb3hpbWF0aW9uIHRvIHRoZSBiaW5vbWlhbC4KKyAgRVhQ
RUNUX05FQVIodG90YWxfc2V0LCB0b3RhbF9iaXRzICogMC41LCA0ICogc3RkOjpzcXJ0KHRvdGFs
X2JpdHMpKQorICAgICAgPDwgIkAiIDw8IHRvdGFsX3NldCAvIHN0YXRpY19jYXN0PGRvdWJsZT4o
dG90YWxfYml0cyk7CisKKyAgLy8gQWxzbywgQVtpXSA9PSBCW2ldIHdpdGggcHJvYmFiaWxpdHkg
KDEvcmFuZ2UpICogTi4KKyAgLy8gR2l2ZSB0aGlzIGEgcHJldHR5IHdpZGUgbGF0aXR1ZGUsIHRo
b3VnaC4KKyAgY29uc3QgZG91YmxlIGtFeHBlY3RlZCA9IGtOdW1PdXRwdXRzIC8gKDEuMCAqIHNp
emVvZihyZXN1bHRfdHlwZSkgKiA4KTsKKyAgRVhQRUNUX0xFKGVxdWFsX2NvdW50LCAxLjAgKyBr
RXhwZWN0ZWQpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworLyoKKyQgbmFub2JlbmNobWFya3Mg
MSBSYW5kZW5Qb29sIGNvbnN0cnVjdAorJCBuYW5vYmVuY2htYXJrcyAxIFBvb2xVUkJHIGNvbnN0
cnVjdAorCitSYW5kZW5Qb29sPHVpbnQzMl90PiB8IDEgICAgfCAxMDAwIHwgICAgNDg0ODIuMDAg
dGlja3MgfCA0OC40OCB0aWNrcyB8IDEzLjkgbnMKK1JhbmRlblBvb2w8dWludDMyX3Q+IHwgMTAg
ICB8IDIwMDAgfCAgMTAyODc5NS4wMCB0aWNrcyB8IDUxLjQ0IHRpY2tzIHwgMTQuNyBucworUmFu
ZGVuUG9vbDx1aW50MzJfdD4gfCAxMDAgIHwgMTAwMCB8ICA1MTE5OTY4LjAwIHRpY2tzIHwgNTEu
MjAgdGlja3MgfCAxNC42IG5zCitSYW5kZW5Qb29sPHVpbnQzMl90PiB8IDEwMDAgfCAgNTAwIHwg
MjU4Njc5MzYuMDAgdGlja3MgfCA1MS43NCB0aWNrcyB8IDE0LjggbnMKKworUmFuZGVuUG9vbDx1
aW50NjRfdD4gfCAxICAgIHwgMTAwMCB8ICAgIDQ5OTIxLjAwIHRpY2tzIHwgNDkuOTIgdGlja3Mg
fCAxNC4zIG5zCitSYW5kZW5Qb29sPHVpbnQ2NF90PiB8IDEwICAgfCAyMDAwIHwgIDEyMDgyNjku
MDAgdGlja3MgfCA2MC40MSB0aWNrcyB8IDE3LjMgbnMKK1JhbmRlblBvb2w8dWludDY0X3Q+IHwg
MTAwICB8IDEwMDAgfCAgNTg0NDk1NS4wMCB0aWNrcyB8IDU4LjQ1IHRpY2tzIHwgMTYuNyBucwor
UmFuZGVuUG9vbDx1aW50NjRfdD4gfCAxMDAwIHwgIDUwMCB8IDI4NzY3NDA0LjAwIHRpY2tzIHwg
NTcuNTMgdGlja3MgfCAxNi40IG5zCisKK1Bvb2xVUkJHPHVpbnQzMl90LDg+IHwgMSAgICB8IDEw
MDAgfCAgICA4NjQzMS4wMCB0aWNrcyB8IDg2LjQzIHRpY2tzIHwgMjQuNyBucworUG9vbFVSQkc8
dWludDMyX3QsOD4gfCAxMCAgIHwgMTAwMCB8ICAgMjA2MTkxLjAwIHRpY2tzIHwgMjAuNjIgdGlj
a3MgfCAgNS45IG5zCitQb29sVVJCRzx1aW50MzJfdCw4PiB8IDEwMCAgfCAxMDAwIHwgIDE1MTYw
NDkuMDAgdGlja3MgfCAxNS4xNiB0aWNrcyB8ICA0LjMgbnMKK1Bvb2xVUkJHPHVpbnQzMl90LDg+
IHwgMTAwMCB8ICA1MDAgfCAgNzYxMzkzNi4wMCB0aWNrcyB8IDE1LjIzIHRpY2tzIHwgIDQuNCBu
cworCitQb29sVVJCRzx1aW50NjRfdCw0PiB8IDEgICAgfCAxMDAwIHwgICAgOTY2NjguMDAgdGlj
a3MgfCA5Ni42NyB0aWNrcyB8IDI3LjYgbnMKK1Bvb2xVUkJHPHVpbnQ2NF90LDQ+IHwgMTAgICB8
IDEwMDAgfCAgIDI4MjQyMy4wMCB0aWNrcyB8IDI4LjI0IHRpY2tzIHwgIDguMSBucworUG9vbFVS
Qkc8dWludDY0X3QsND4gfCAxMDAgIHwgMTAwMCB8ICAyNjA5NTg3LjAwIHRpY2tzIHwgMjYuMTAg
dGlja3MgfCAgNy41IG5zCitQb29sVVJCRzx1aW50NjRfdCw0PiB8IDEwMDAgfCAgNTAwIHwgMTI0
MDg3NTcuMDAgdGlja3MgfCAyNC44MiB0aWNrcyB8ICA3LjEgbnMKKworKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4ta2V5cy5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50
ZXJuYWwvcmFuZGVuLWtleXMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhNGIxNjY4MzUzNzc1OGU2Y2Y2MmU1
ODIzOGNmNjAyZTMyNDFmMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJu
YWwvcmFuZGVuLWtleXMuaW5jCkBAIC0wLDAgKzEsMjA3IEBACisvLyBDb3B5cmlnaHQgMjAxNyBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SQU5E
RU5fS0VZU19JTkNfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9LRVlTX0lO
Q18KKworLy8gVGV4dHVhbCBoZWFkZXIgdG8gaW5jbHVkZSB0aGUgcmFuZGVuX2tleXMgd2hlcmUg
bmVjZXNzYXJ5LgorLy8gUkVRVUlSRVM6IHN0cnVjdCB1NjR4Mnt9CisvLworLy8gUFJPVklERVM6
IGtLZXlzCisvLyBQUk9WSURFUzogcm91bmRfa2V5c1tdCisKKy8vICJOb3RoaW5nIHVwIG15IHNs
ZWV2ZSIgbnVtYmVycyBmcm9tIHRoZSBmaXJzdCBoZXggZGlnaXRzIG9mIFBpLCBvYnRhaW5lZAor
Ly8gZnJvbSBodHRwOi8vaGV4cGkuc291cmNlZm9yZ2UubmV0Ly4gVGhlIGFycmF5IHdhcyBnZW5l
cmF0ZWQgYnkgZm9sbG93aW5nCisvLyBQeXRob24gc2NyaXB0OgorLyoKK3B5dGhvbiA8PCBFT0YK
KyIiIkdlbmVyYXRlcyBSYW5kZW4gcm91bmQga2V5cyBhcnJheSBmcm9tIHBpLWhleC42MjUwMC50
eHQgZmlsZS4iIiIKK2ltcG9ydCBiaW5hc2NpaQorCitLRVlTID0gMTM2CisKK2RlZiBjaHVua3Mo
bCwgbik6CisgICAgIiIiWWllbGQgc3VjY2Vzc2l2ZSBuLXNpemVkIGNodW5rcyBmcm9tIGwuIiIi
CisgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGwpLCBuKToKKyAgICAgICAgeWllbGQgbFtpOmkg
KyBuXQorCitkZWYgcGFpcndpc2UodCk6CisgICAgIiIiVHJhbnNmb3JtcyBzZXF1ZW5jZSBpbnRv
IHNlcXVlbmNlIG9mIHBhaXJzLiIiIgorICAgIGl0ID0gaXRlcih0KQorICAgIHJldHVybiB6aXAo
aXQsaXQpCisKK2RlZiBkaWdpdHNfZnJvbV9waSgpOgorICAiIiJSZWFkcyBkaWdpdHMgZnJvbSBo
ZXhwaS5zb3VyY2Vmb3JnZS5uZXQgZmlsZS4iIiIKKyAgd2l0aCBvcGVuKCJwaS1oZXguNjI1MDAu
dHh0IikgYXMgZmlsZToKKyAgICByZXR1cm4gZmlsZS5yZWFkKCkKKworZGVmIGRpZ2l0c19mcm9t
X3VyYW5kb20oKToKKyAgIiIiUmVhZHMgZGlnaXRzIGZyb20gL2Rldi91cmFuZG9tLiIiIgorICB3
aXRoIG9wZW4oIi9kZXYvdXJhbmRvbSIpIGFzIGZpbGU6CisgICAgcmV0dXJuIGJpbmFzY2lpLmhl
eGxpZnkoZmlsZS5yZWFkKEtFWVMgKiAxNikpCisKK2RpZ2l0cyA9IGRpZ2l0c19mcm9tX3BpKCkK
K3ByaW50KCJzdGF0aWMgY29uc3RleHByIGNvbnN0IHNpemVfdCBrUm91bmRLZXlzID0gezB9O1xu
Ii5mb3JtYXQoS0VZUykpCitwcmludCgiYWxpZ25hcygxNikgY29uc3RleHByIGNvbnN0IHU2NHgy
IHJvdW5kX2tleXNba1JvdW5kS2V5c10gPSB7IikKKworZm9yIGksIChoaSwgbG8pIGluIHppcChy
YW5nZShLRVlTKSwgcGFpcndpc2UoY2h1bmtzKGRpZ2l0cywgMTYpKSk6CisgIGhpID0gIjB4ezB9
dWxsIi5mb3JtYXQoaGkpCisgIGxvID0gIjB4ezB9dWxsIi5mb3JtYXQobG8pCisgIHByaW50KCIg
IHU2NHgyKHswfSwgezF9KXsyfSIuZm9ybWF0KGhpLCBsbywgJywnIGlmIGkrMSA8IEtFWVMgZWxz
ZSAnJykpCisKK3ByaW50KCJ9OyIpCitFT0YKKyovCisKK3N0YXRpYyBjb25zdGV4cHIgY29uc3Qg
c2l6ZV90IGtSb3VuZEtleXMgPSAxMzY7CisKK2FsaWduYXMoMTYpIGNvbnN0ZXhwciB1NjR4MiBy
b3VuZF9rZXlzW2tSb3VuZEtleXNdID0geworICAgIHU2NHgyKDB4MjQzRjZBODg4NUEzMDhEM3Vs
bCwgMHgxMzE5OEEyRTAzNzA3MzQ0dWxsKSwKKyAgICB1NjR4MigweEE0MDkzODIyMjk5RjMxRDB1
bGwsIDB4MDgyRUZBOThFQzRFNkM4OXVsbCksCisgICAgdTY0eDIoMHg0NTI4MjFFNjM4RDAxMzc3
dWxsLCAweEJFNTQ2NkNGMzRFOTBDNkN1bGwpLAorICAgIHU2NHgyKDB4QzBBQzI5QjdDOTdDNTBE
RHVsbCwgMHgzRjg0RDVCNUI1NDcwOTE3dWxsKSwKKyAgICB1NjR4MigweDkyMTZENUQ5ODk3OUZC
MUJ1bGwsIDB4RDEzMTBCQTY5OERGQjVBQ3VsbCksCisgICAgdTY0eDIoMHgyRkZENzJEQkQwMUFE
RkI3dWxsLCAweEI4RTFBRkVENkEyNjdFOTZ1bGwpLAorICAgIHU2NHgyKDB4QkE3QzkwNDVGMTJD
N0Y5OXVsbCwgMHgyNEExOTk0N0IzOTE2Q0Y3dWxsKSwKKyAgICB1NjR4MigweDA4MDFGMkUyODU4
RUZDMTZ1bGwsIDB4NjM2OTIwRDg3MTU3NEU2OXVsbCksCisgICAgdTY0eDIoMHhBNDU4RkVBM0Y0
OTMzRDdFdWxsLCAweDBEOTU3NDhGNzI4RUI2NTh1bGwpLAorICAgIHU2NHgyKDB4NzE4QkNENTg4
MjE1NEFFRXVsbCwgMHg3QjU0QTQxREMyNUE1OUI1dWxsKSwKKyAgICB1NjR4MigweDlDMzBENTM5
MkFGMjYwMTN1bGwsIDB4QzVEMUIwMjMyODYwODVGMHVsbCksCisgICAgdTY0eDIoMHhDQTQxNzkx
OEI4REIzOEVGdWxsLCAweDhFNzlEQ0IwNjAzQTE4MEV1bGwpLAorICAgIHU2NHgyKDB4NkM5RTBF
OEJCMDFFOEEzRXVsbCwgMHhENzE1NzdDMUJEMzE0QjI3dWxsKSwKKyAgICB1NjR4MigweDc4QUYy
RkRBNTU2MDVDNjB1bGwsIDB4RTY1NTI1RjNBQTU1QUI5NHVsbCksCisgICAgdTY0eDIoMHg1NzQ4
OTg2MjYzRTgxNDQwdWxsLCAweDU1Q0EzOTZBMkFBQjEwQjZ1bGwpLAorICAgIHU2NHgyKDB4QjRD
QzVDMzQxMTQxRThDRXVsbCwgMHhBMTU0ODZBRjdDNzJFOTkzdWxsKSwKKyAgICB1NjR4MigweEIz
RUUxNDExNjM2RkJDMkF1bGwsIDB4MkJBOUM1NUQ3NDE4MzFGNnVsbCksCisgICAgdTY0eDIoMHhD
RTVDM0UxNjlCODc5MzFFdWxsLCAweEFGRDZCQTMzNkMyNENGNUN1bGwpLAorICAgIHU2NHgyKDB4
N0EzMjUzODEyODk1ODY3N3VsbCwgMHgzQjhGNDg5ODZCNEJCOUFGdWxsKSwKKyAgICB1NjR4Migw
eEM0QkZFODFCNjYyODIxOTN1bGwsIDB4NjFEODA5Q0NGQjIxQTk5MXVsbCksCisgICAgdTY0eDIo
MHg0ODdDQUM2MDVERUM4MDMydWxsLCAweEVGODQ1RDVERTk4NTc1QjF1bGwpLAorICAgIHU2NHgy
KDB4REMyNjIzMDJFQjY1MUI4OHVsbCwgMHgyMzg5M0U4MUQzOTZBQ0M1dWxsKSwKKyAgICB1NjR4
MigweDBGNkQ2RkYzODNGNDQyMzl1bGwsIDB4MkUwQjQ0ODJBNDg0MjAwNHVsbCksCisgICAgdTY0
eDIoMHg2OUM4RjA0QTlFMUY5QjVFdWxsLCAweDIxQzY2ODQyRjZFOTZDOUF1bGwpLAorICAgIHU2
NHgyKDB4NjcwQzlDNjFBQkQzODhGMHVsbCwgMHg2QTUxQTBEMkQ4NTQyRjY4dWxsKSwKKyAgICB1
NjR4MigweDk2MEZBNzI4QUI1MTMzQTN1bGwsIDB4NkVFRjBCNkMxMzdBM0JFNHVsbCksCisgICAg
dTY0eDIoMHhCQTNCRjA1MDdFRkIyQTk4dWxsLCAweEExRjE2NTFEMzlBRjAxNzZ1bGwpLAorICAg
IHU2NHgyKDB4NjZDQTU5M0U4MjQzMEU4OHVsbCwgMHg4Q0VFODYxOTQ1NkY5RkI0dWxsKSwKKyAg
ICB1NjR4MigweDdEODRBNUMzM0I4QjVFQkV1bGwsIDB4RTA2Rjc1RDg4NUMxMjA3M3VsbCksCisg
ICAgdTY0eDIoMHg0MDFBNDQ5RjU2QzE2QUE2dWxsLCAweDRFRDNBQTYyMzYzRjc3MDZ1bGwpLAor
ICAgIHU2NHgyKDB4MUJGRURGNzI0MjlCMDIzRHVsbCwgMHgzN0QwRDcyNEQwMEExMjQ4dWxsKSwK
KyAgICB1NjR4MigweERCMEZFQUQzNDlGMUMwOUJ1bGwsIDB4MDc1MzcyQzk4MDk5MUI3QnVsbCks
CisgICAgdTY0eDIoMHgyNUQ0NzlEOEY2RThERUY3dWxsLCAweEUzRkU1MDFBQjY3OTRDM0J1bGwp
LAorICAgIHU2NHgyKDB4OTc2Q0UwQkQwNEMwMDZCQXVsbCwgMHhDMUE5NEZCNjQwOUY2MEM0dWxs
KSwKKyAgICB1NjR4MigweDVFNUM5RUMyMTk2QTI0NjN1bGwsIDB4NjhGQjZGQUYzRTZDNTNCNXVs
bCksCisgICAgdTY0eDIoMHgxMzM5QjJFQjNCNTJFQzZGdWxsLCAweDZERkM1MTFGOUIzMDk1MkN1
bGwpLAorICAgIHU2NHgyKDB4Q0M4MTQ1NDRBRjVFQkQwOXVsbCwgMHhCRUUzRDAwNERFMzM0QUZE
dWxsKSwKKyAgICB1NjR4MigweDY2MEYyODA3MTkyRTRCQjN1bGwsIDB4QzBDQkE4NTc0NUM4NzQw
RnVsbCksCisgICAgdTY0eDIoMHhEMjBCNUYzOUI5RDNGQkRCdWxsLCAweDU1NzlDMEJEMUE2MDMy
MEF1bGwpLAorICAgIHU2NHgyKDB4RDZBMTAwQzY0MDJDNzI3OXVsbCwgMHg2NzlGMjVGRUZCMUZB
M0NDdWxsKSwKKyAgICB1NjR4MigweDhFQTVFOUY4REIzMjIyRjh1bGwsIDB4M0M3NTE2REZGRDYx
NkIxNXVsbCksCisgICAgdTY0eDIoMHgyRjUwMUVDOEFEMDU1MkFCdWxsLCAweDMyM0RCNUZBRkQy
Mzg3NjB1bGwpLAorICAgIHU2NHgyKDB4NTMzMTdCNDgzRTAwREY4MnVsbCwgMHg5RTVDNTdCQkNB
NkY4Q0EwdWxsKSwKKyAgICB1NjR4MigweDFBODc1NjJFREYxNzY5REJ1bGwsIDB4RDU0MkE4RjYy
ODdFRkZDM3VsbCksCisgICAgdTY0eDIoMHhBQzY3MzJDNjhDNEY1NTczdWxsLCAweDY5NUIyN0Iw
QkJDQTU4Qzh1bGwpLAorICAgIHU2NHgyKDB4RTFGRkEzNURCOEYwMTFBMHVsbCwgMHgxMEZBM0Q5
OEZEMjE4M0I4dWxsKSwKKyAgICB1NjR4MigweDRBRkNCNTZDMkREMUQzNUJ1bGwsIDB4OUE1M0U0
NzlCNkY4NDU2NXVsbCksCisgICAgdTY0eDIoMHhEMjhFNDlCQzRCRkI5NzkwdWxsLCAweEUxRERG
MkRBQTRDQjdFMzN1bGwpLAorICAgIHU2NHgyKDB4NjJGQjEzNDFDRUU0QzZFOHVsbCwgMHhFRjIw
Q0FEQTM2Nzc0QzAxdWxsKSwKKyAgICB1NjR4MigweEQwN0U5RUZFMkJGMTFGQjR1bGwsIDB4OTVE
QkRBNERBRTkwOTE5OHVsbCksCisgICAgdTY0eDIoMHhFQUFEOEU3MTZCOTNENUEwdWxsLCAweEQw
OEVEMUQwQUZDNzI1RTB1bGwpLAorICAgIHU2NHgyKDB4OEUzQzVCMkY4RTc1OTRCN3VsbCwgMHg4
RkY2RTJGQkYyMTIyQjY0dWxsKSwKKyAgICB1NjR4MigweDg4ODhCODEyOTAwREYwMUN1bGwsIDB4
NEZBRDVFQTA2ODhGQzMxQ3VsbCksCisgICAgdTY0eDIoMHhEMUNGRjE5MUIzQThDMUFEdWxsLCAw
eDJGMkYyMjE4QkUwRTE3Nzd1bGwpLAorICAgIHU2NHgyKDB4RUE3NTJERkU4QjAyMUZBMXVsbCwg
MHhFNUEwQ0MwRkI1NkY3NEU4dWxsKSwKKyAgICB1NjR4MigweDE4QUNGM0Q2Q0U4OUUyOTl1bGws
IDB4QjRBODRGRTBGRDEzRTBCN3VsbCksCisgICAgdTY0eDIoMHg3Q0M0M0I4MUQyQURBOEQ5dWxs
LCAweDE2NUZBMjY2ODA5NTc3MDV1bGwpLAorICAgIHU2NHgyKDB4OTNDQzczMTQyMTFBMTQ3N3Vs
bCwgMHhFNkFEMjA2NTc3QjVGQTg2dWxsKSwKKyAgICB1NjR4MigweEM3NTQ0MkY1RkI5RDM1Q0Z1
bGwsIDB4RUJDREFGMEM3QjNFODlBMHVsbCksCisgICAgdTY0eDIoMHhENjQxMUJEM0FFMUU3RTQ5
dWxsLCAweDAwMjUwRTJEMjA3MUIzNUV1bGwpLAorICAgIHU2NHgyKDB4MjI2ODAwQkI1N0I4RTBB
RnVsbCwgMHgyNDY0MzY5QkYwMDlCOTFFdWxsKSwKKyAgICB1NjR4MigweDU1NjM5MTFENTlERkE2
QUF1bGwsIDB4NzhDMTQzODlEOTVBNTM3RnVsbCksCisgICAgdTY0eDIoMHgyMDdENUJBMjAyRTVC
OUM1dWxsLCAweDgzMjYwMzc2NjI5NUNGQTl1bGwpLAorICAgIHU2NHgyKDB4MTFDODE5Njg0RTcz
NEE0MXVsbCwgMHhCMzQ3MkRDQTdCMTRBOTRBdWxsKSwKKyAgICB1NjR4MigweDFCNTEwMDUyOUE1
MzI5MTV1bGwsIDB4RDYwRjU3M0ZCQzlCQzZFNHVsbCksCisgICAgdTY0eDIoMHgyQjYwQTQ3Njgx
RTY3NDAwdWxsLCAweDA4QkE2RkI1NTcxQkU5MUZ1bGwpLAorICAgIHU2NHgyKDB4RjI5NkVDNkIy
QTBERDkxNXVsbCwgMHhCNjYzNjUyMUU3QjlGOUI2dWxsKSwKKyAgICB1NjR4MigweEZGMzQwNTJF
QzU4NTU2NjR1bGwsIDB4NTNCMDJENURBOTlGOEZBMXVsbCksCisgICAgdTY0eDIoMHgwOEJBNDc5
OTZFODUwNzZBdWxsLCAweDRCN0E3MEU5QjVCMzI5NDR1bGwpLAorICAgIHU2NHgyKDB4REI3NTA5
MkVDNDE5MjYyM3VsbCwgMHhBRDZFQTZCMDQ5QTdERjdEdWxsKSwKKyAgICB1NjR4MigweDlDRUU2
MEI4OEZFREIyNjZ1bGwsIDB4RUNBQThDNzE2OTlBMThGRnVsbCksCisgICAgdTY0eDIoMHg1NjY0
NTI2Q0MyQjE5RUUxdWxsLCAweDE5MzYwMkE1NzUwOTRDMjl1bGwpLAorICAgIHU2NHgyKDB4QTA1
OTEzNDBFNDE4M0EzRXVsbCwgMHgzRjU0OTg5QTVCNDI5RDY1dWxsKSwKKyAgICB1NjR4MigweDZC
OEZFNEQ2OTlGNzNGRDZ1bGwsIDB4QTFEMjlDMDdFRkU4MzBGNXVsbCksCisgICAgdTY0eDIoMHg0
RDJEMzhFNkYwMjU1REMxdWxsLCAweDRDREQyMDg2ODQ3MEVCMjZ1bGwpLAorICAgIHU2NHgyKDB4
NjM4MkU5QzYwMjFFQ0M1RXVsbCwgMHgwOTY4NkIzRjNFQkFFRkM5dWxsKSwKKyAgICB1NjR4Migw
eDNDOTcxODE0NkI2QTcwQTF1bGwsIDB4Njg3RjM1ODQ1MkEwRTI4NnVsbCksCisgICAgdTY0eDIo
MHhCNzlDNTMwNUFBNTAwNzM3dWxsLCAweDNFMDc4NDFDN0ZERUFFNUN1bGwpLAorICAgIHU2NHgy
KDB4OEU3RDQ0RUM1NzE2RjJCOHVsbCwgMHhCMDNBREEzN0YwNTAwQzBEdWxsKSwKKyAgICB1NjR4
MigweEYwMUMxRjA0MDIwMEIzRkZ1bGwsIDB4QUUwQ0Y1MUEzQ0I1NzRCMnVsbCksCisgICAgdTY0
eDIoMHgyNTgzN0E1OERDMDkyMUJEdWxsLCAweEQxOTExM0Y5N0NBOTJGRjZ1bGwpLAorICAgIHU2
NHgyKDB4OTQzMjQ3NzMyMkY1NDcwMXVsbCwgMHgzQUU1RTU4MTM3QzJEQURDdWxsKSwKKyAgICB1
NjR4MigweEM4QjU3NjM0OUFGM0REQTd1bGwsIDB4QTk0NDYxNDYwRkQwMDMwRXVsbCksCisgICAg
dTY0eDIoMHhFQ0M4QzczRUE0NzUxRTQxdWxsLCAweEUyMzhDRDk5M0JFQTBFMkZ1bGwpLAorICAg
IHU2NHgyKDB4MzI4MEJCQTExODNFQjMzMXVsbCwgMHg0RTU0OEIzODRGNkRCOTA4dWxsKSwKKyAg
ICB1NjR4MigweDZGNDIwRDAzRjYwQTA0QkZ1bGwsIDB4MkNCODEyOTAyNDk3N0M3OXVsbCksCisg
ICAgdTY0eDIoMHg1Njc5QjA3MkJDQUY4OUFGdWxsLCAweERFOUE3NzFGRDk5MzA4MTB1bGwpLAor
ICAgIHU2NHgyKDB4QjM4QkFFMTJEQ0NGM0YyRXVsbCwgMHg1NTEyNzIxRjJFNkI3MTI0dWxsKSwK
KyAgICB1NjR4MigweDUwMUFEREU2OUY4NENEODd1bGwsIDB4N0E1ODQ3MTg3NDA4REExN3VsbCks
CisgICAgdTY0eDIoMHhCQzlGOUFCQ0U5NEI3RDhDdWxsLCAweEVDN0FFQzNBREI4NTFERkF1bGwp
LAorICAgIHU2NHgyKDB4NjMwOTQzNjZDNDY0QzNEMnVsbCwgMHhFRjFDMTg0NzMyMTVEODA4dWxs
KSwKKyAgICB1NjR4MigweERENDMzQjM3MjRDMkJBMTZ1bGwsIDB4MTJBMTRENDMyQTY1QzQ1MXVs
bCksCisgICAgdTY0eDIoMHg1MDk0MDAwMjEzM0FFNEREdWxsLCAweDcxREZGODlFMTAzMTRFNTV1
bGwpLAorICAgIHU2NHgyKDB4ODFBQzc3RDY1RjExMTk5QnVsbCwgMHgwNDM1NTZGMUQ3QTNDNzZC
dWxsKSwKKyAgICB1NjR4MigweDNDMTExODNCNTkyNEE1MDl1bGwsIDB4RjI4RkU2RUQ5N0YxRkJG
QXVsbCksCisgICAgdTY0eDIoMHg5RUJBQkYyQzFFMTUzQzZFdWxsLCAweDg2RTM0NTcwRUFFOTZG
QjF1bGwpLAorICAgIHU2NHgyKDB4ODYwRTVFMEE1QTNFMkFCM3VsbCwgMHg3NzFGRTcxQzRFM0Qw
NkZBdWxsKSwKKyAgICB1NjR4MigweDI5NjVEQ0I5OTlFNzFEMEZ1bGwsIDB4ODAzRTg5RDY1MjY2
QzgyNXVsbCksCisgICAgdTY0eDIoMHgyRTRDQzk3ODlDMTBCMzZBdWxsLCAweEM2MTUwRUJBOTRF
MkVBNzh1bGwpLAorICAgIHU2NHgyKDB4QTZGQzNDNTMxRTBBMkRGNHVsbCwgMHhGMkY3NEVBNzM2
MUQyQjNEdWxsKSwKKyAgICB1NjR4MigweDE5MzkyNjBGMTlDMjc5NjB1bGwsIDB4NTIyM0E3MDhG
NzEzMTJCNnVsbCksCisgICAgdTY0eDIoMHhFQkFERkU2RUVBQzMxRjY2dWxsLCAweEUzQkM0NTk1
QTY3QkM4ODN1bGwpLAorICAgIHU2NHgyKDB4QjE3RjM3RDEwMThDRkYyOHVsbCwgMHhDMzMyRERF
RkJFNkM1QUE1dWxsKSwKKyAgICB1NjR4MigweDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4RUVDRUE1
MEZEQjJGOTUzQnVsbCksCisgICAgdTY0eDIoMHgyQUVGN0RBRDVCNkUyRjg0dWxsLCAweDE1MjFC
NjI4MjkwNzYxNzB1bGwpLAorICAgIHU2NHgyKDB4RUNERDQ3NzU2MTlGMTUxMHVsbCwgMHgxM0ND
QTgzMEVCNjFCRDk2dWxsKSwKKyAgICB1NjR4MigweDAzMzRGRTFFQUEwMzYzQ0Z1bGwsIDB4QjU3
MzVDOTA0QzcwQTIzOXVsbCksCisgICAgdTY0eDIoMHhENTlFOUUwQkNCQUFERTE0dWxsLCAweEVF
Q0M4NkJDNjA2MjJDQTd1bGwpLAorICAgIHU2NHgyKDB4OUNBQjVDQUJCMkYzODQ2RXVsbCwgMHg2
NDhCMUVBRjE5QkRGMENBdWxsKSwKKyAgICB1NjR4MigweEEwMjM2OUI5NjU1QUJCNTB1bGwsIDB4
NDA2ODVBMzIzQzJBQjRCM3VsbCksCisgICAgdTY0eDIoMHgzMTlFRTlENUMwMjFCOEY3dWxsLCAw
eDlCNTQwQjE5ODc1RkEwOTl1bGwpLAorICAgIHU2NHgyKDB4OTVGNzk5N0U2MjNEN0RBOHVsbCwg
MHhGODM3ODg5QTk3RTMyRDc3dWxsKSwKKyAgICB1NjR4MigweDExRUQ5MzVGMTY2ODEyODF1bGws
IDB4MEUzNTg4MjlDN0U2MUZENnVsbCksCisgICAgdTY0eDIoMHg5NkRFREZBMTc4NThCQTk5dWxs
LCAweDU3RjU4NEE1MUIyMjcyNjN1bGwpLAorICAgIHU2NHgyKDB4OUI4M0MzRkYxQUMyNDY5NnVs
bCwgMHhDREIzMEFFQjUzMkUzMDU0dWxsKSwKKyAgICB1NjR4MigweDhGRDk0OEU0NkRCQzMxMjh1
bGwsIDB4NThFQkYyRUYzNEM2RkZFQXVsbCksCisgICAgdTY0eDIoMHhGRTI4RUQ2MUVFN0MzQzcz
dWxsLCAweDVENEExNEQ5RTg2NEI3RTN1bGwpLAorICAgIHU2NHgyKDB4NDIxMDVEMTQyMDNFMTNF
MHVsbCwgMHg0NUVFRTJCNkEzQUFBQkVBdWxsKSwKKyAgICB1NjR4MigweERCNkM0RjE1RkFDQjRG
RDB1bGwsIDB4Qzc0MkY0NDJFRjZBQkJCNXVsbCksCisgICAgdTY0eDIoMHg2NTRGM0IxRDQxQ0Qy
MTA1dWxsLCAweEQ4MUU3OTlFODY4NTREQzd1bGwpLAorICAgIHU2NHgyKDB4RTQ0QjQ3NkEzRDgx
NjI1MHVsbCwgMHhDRjYyQTFGMjVCOEQyNjQ2dWxsKSwKKyAgICB1NjR4MigweEZDODg4M0EwQzFD
N0I2QTN1bGwsIDB4N0YxNTI0QzM2OUNCNzQ5MnVsbCksCisgICAgdTY0eDIoMHg0Nzg0OEEwQjU2
OTJCMjg1dWxsLCAweDA5NUJCRjAwQUQxOTQ4OUR1bGwpLAorICAgIHU2NHgyKDB4MTQ2MkIxNzQy
MzgyMEQwMHVsbCwgMHg1ODQyOEQyQTBDNTVGNUVBdWxsKSwKKyAgICB1NjR4MigweDFEQURGNDNF
MjMzRjcwNjF1bGwsIDB4MzM3MkYwOTI4RDkzN0U0MXVsbCksCisgICAgdTY0eDIoMHhENjVGRUNG
MTZDMjIzQkRCdWxsLCAweDdDREUzNzU5Q0JFRTc0NjB1bGwpLAorICAgIHU2NHgyKDB4NDA4NUYy
QTdDRTc3MzI2RXVsbCwgMHhBNjA3ODA4NDE5Rjg1MDlFdWxsKSwKKyAgICB1NjR4MigweEU4RUZE
ODU1NjFEOTk3MzV1bGwsIDB4QTk2OUE3QUFDNTBDMDZDMnVsbCksCisgICAgdTY0eDIoMHg1QTA0
QUJGQzgwMEJDQURDdWxsLCAweDlFNDQ3QTJFQzM0NTM0ODR1bGwpLAorICAgIHU2NHgyKDB4RkRE
NTY3MDUwRTFFOUVDOXVsbCwgMHhEQjczREJEMzEwNTU4OENEdWxsKSwKKyAgICB1NjR4MigweDY3
NUZEQTc5RTM2NzQzNDB1bGwsIDB4QzVDNDM0NjU3MTNFMzhEOHVsbCksCisgICAgdTY0eDIoMHgz
RDI4Rjg5RUYxNkRGRjIwdWxsLCAweDE1M0UyMUU3OEZCMDNENEF1bGwpLAorICAgIHU2NHgyKDB4
RTZFMzlGMkJEQjgzQURGN3VsbCwgMHhFOTNENUE2ODk0ODE0MEY3dWxsKSwKKyAgICB1NjR4Migw
eEY2NEMyNjFDOTQ2OTI5MzR1bGwsIDB4NDExNTIwRjc3NjAyRDRGN3VsbCksCisgICAgdTY0eDIo
MHhCQ0Y0NkIyRUQ0QTEwMDY4dWxsLCAweEQ0MDgyNDcxMzMyMEY0NkF1bGwpLAorICAgIHU2NHgy
KDB4NDNCN0Q0Qjc1MDAwNjFBRnVsbCwgMHgxRTM5RjYyRTk3MjQ0NTQ2dWxsKX07CisKKyNlbmRp
ZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0tFWVNfSU5DXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9y
YW5kZW4uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFiODA3NWE1NGY4OWU2YTI4YjY5NWZhMTU5OWU5NjFjNDA2
NzNiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4uY2MK
QEAgLTAsMCArMSw4OSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW4uaCIKKworI2luY2x1ZGUg
ImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9t
L2ludGVybmFsL3JhbmRlbl9kZXRlY3QuaCIKKworLy8gUkFORGVuID0gUkFORG9tIGdlbmVyYXRv
ciBvciBiZWV0cm9vdHMgaW4gU3dpc3MgR2VybWFuLgorLy8gJ1N0cm9uZycgKHdlbGwtZGlzdHJp
YnV0ZWQsIHVucHJlZGljdGFibGUsIGJhY2t0cmFja2luZy1yZXNpc3RhbnQpIHJhbmRvbQorLy8g
Z2VuZXJhdG9yLCBmYXN0ZXIgaW4gc29tZSBiZW5jaG1hcmtzIHRoYW4gc3RkOjptdDE5OTM3XzY0
IGFuZCBwY2c2NF9jMzIuCisvLworLy8gSGlnaC1sZXZlbCBzdW1tYXJ5OgorLy8gMSkgUmV2ZXJp
ZSAoc2VlICJBIFJvYnVzdCBhbmQgU3BvbmdlLUxpa2UgUFJORyB3aXRoIEltcHJvdmVkIEVmZmlj
aWVuY3kiKSBpcworLy8gICAgYSBzcG9uZ2UtbGlrZSByYW5kb20gZ2VuZXJhdG9yIHRoYXQgcmVx
dWlyZXMgYSBjcnlwdG9ncmFwaGljIHBlcm11dGF0aW9uLgorLy8gICAgSXQgaW1wcm92ZXMgdXBv
biAiUHJvdmFibHkgUm9idXN0IFNwb25nZS1CYXNlZCBQUk5HcyBhbmQgS0RGcyIgYnkKKy8vICAg
IGFjaGlldmluZyBiYWNrdHJhY2tpbmcgcmVzaXN0YW5jZSB3aXRoIG9ubHkgb25lIFBlcm11dGUo
KSBwZXIgYnVmZmVyLgorLy8KKy8vIDIpICJTaW1waXJhIHYyOiBBIEZhbWlseSBvZiBFZmZpY2ll
bnQgUGVybXV0YXRpb25zIFVzaW5nIHRoZSBBRVMgUm91bmQKKy8vICAgIEZ1bmN0aW9uIiBjb25z
dHJ1Y3RzIHVwIHRvIDEwMjQtYml0IHBlcm11dGF0aW9ucyB1c2luZyBhbiBpbXByb3ZlZAorLy8g
ICAgR2VuZXJhbGl6ZWQgRmVpc3RlbCBuZXR3b3JrIHdpdGggMi1yb3VuZCBBRVMtMTI4IGZ1bmN0
aW9ucy4gVGhpcyBGZWlzdGVsCisvLyAgICBibG9jayBzaHVmZmxlIGFjaGlldmVzIGRpZmZ1c2lv
biBmYXN0ZXIgYW5kIGlzIGxlc3MgdnVsbmVyYWJsZSB0bworLy8gICAgc2xpY2VkLWJpY2xpcXVl
IGF0dGFja3MgdGhhbiB0aGUgVHlwZS0yIGN5Y2xpYyBzaHVmZmxlLgorLy8KKy8vIDMpICJJbXBy
b3ZpbmcgdGhlIEdlbmVyYWxpemVkIEZlaXN0ZWwiIGFuZCAiTmV3IGNyaXRlcmlvbiBmb3IgZGlm
ZnVzaW9uCisvLyAgICBwcm9wZXJ0eSIgZXh0ZW5kcyB0aGUgc2FtZSBraW5kIG9mIGltcHJvdmVk
IEZlaXN0ZWwgYmxvY2sgc2h1ZmZsZSB0byAxNgorLy8gICAgYnJhbmNoZXMsIHdoaWNoIGVuYWJs
ZXMgYSAyMDQ4LWJpdCBwZXJtdXRhdGlvbi4KKy8vCisvLyBXZSBjb21iaW5lIHRoZXNlIHRocmVl
IGlkZWFzIGFuZCBhbHNvIGNoYW5nZSBTaW1waXJhJ3Mgc3Vicm91bmQga2V5cyBmcm9tCisvLyBz
dHJ1Y3R1cmVkL2xvdy1lbnRyb3B5IGNvdW50ZXJzIHRvIGRpZ2l0cyBvZiBQaS4KKworbmFtZXNw
YWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCitz
dHJ1Y3QgUmFuZGVuU3RhdGUgeworICBjb25zdCB2b2lkKiBrZXlzOworICBib29sIGhhc19jcnlw
dG87Cit9OworCitSYW5kZW5TdGF0ZSBHZXRSYW5kZW5TdGF0ZSgpIHsKKyAgc3RhdGljIGNvbnN0
IFJhbmRlblN0YXRlIHN0YXRlID0gW10oKSB7CisgICAgUmFuZGVuU3RhdGUgdG1wOworI2lmIEFC
U0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSAorICAgIC8vIEhXIEFFUyBEaXNwYXRjaC4K
KyAgICBpZiAoSGFzUmFuZGVuSHdBZXNJbXBsZW1lbnRhdGlvbigpICYmIENQVVN1cHBvcnRzUmFu
ZGVuSHdBZXMoKSkgeworICAgICAgdG1wLmhhc19jcnlwdG8gPSB0cnVlOworICAgICAgdG1wLmtl
eXMgPSBSYW5kZW5Id0Flczo6R2V0S2V5cygpOworICAgIH0gZWxzZSB7CisgICAgICB0bXAuaGFz
X2NyeXB0byA9IGZhbHNlOworICAgICAgdG1wLmtleXMgPSBSYW5kZW5TbG93OjpHZXRLZXlzKCk7
CisgICAgfQorI2VsaWYgQUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUworICAgIC8vIEhXIEFFUyBp
cyBlbmFibGVkLgorICAgIHRtcC5oYXNfY3J5cHRvID0gdHJ1ZTsKKyAgICB0bXAua2V5cyA9IFJh
bmRlbkh3QWVzOjpHZXRLZXlzKCk7CisjZWxzZQorICAgIC8vIEhXIEFFUyBpcyBkaXNhYmxlZC4K
KyAgICB0bXAuaGFzX2NyeXB0byA9IGZhbHNlOworICAgIHRtcC5rZXlzID0gUmFuZGVuU2xvdzo6
R2V0S2V5cygpOworI2VuZGlmCisgICAgcmV0dXJuIHRtcDsKKyAgfSgpOworICByZXR1cm4gc3Rh
dGU7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitSYW5kZW46OlJhbmRlbigpIHsKKyAgYXV0byB0
bXAgPSBHZXRSYW5kZW5TdGF0ZSgpOworICBrZXlzXyA9IHRtcC5rZXlzOworI2lmIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSAorICBoYXNfY3J5cHRvXyA9IHRtcC5oYXNfY3J5cHRv
OworI2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5h
bWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRmZjI1NDU5Njg4
NTI2MWI2NWE2N2FlZDYxNmNjMGJhMDc5MGRhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9pbnRlcm5hbC9yYW5kZW4uaApAQCAtMCwwICsxLDEwMCBAQAorLy8gQ29weXJpZ2h0IDIw
MTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxf
UkFOREVOX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9IXworCisjaW5j
bHVkZSA8Y3N0ZGRlZj4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3BsYXRmb3Jt
LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2h3YWVzLmgiCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Nsb3cuaCIKKyNpbmNsdWRlICJhYnNs
L3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fdHJhaXRzLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25h
bWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBSQU5EZW4gPSBSQU5Eb20gZ2VuZXJhdG9y
IG9yIGJlZXRyb290cyBpbiBTd2lzcyBHZXJtYW4uCisvLyAnU3Ryb25nJyAod2VsbC1kaXN0cmli
dXRlZCwgdW5wcmVkaWN0YWJsZSwgYmFja3RyYWNraW5nLXJlc2lzdGFudCkgcmFuZG9tCisvLyBn
ZW5lcmF0b3IsIGZhc3RlciBpbiBzb21lIGJlbmNobWFya3MgdGhhbiBzdGQ6Om10MTk5MzdfNjQg
YW5kIHBjZzY0X2MzMi4KKy8vCisvLyBSYW5kZW4gaW1wbGVtZW50cyB0aGUgYmFzaWMgc3RhdGUg
bWFuaXB1bGF0aW9uIG1ldGhvZHMuCitjbGFzcyBSYW5kZW4geworIHB1YmxpYzoKKyAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3Qga1N0YXRlQnl0ZXMgPSBSYW5kZW5UcmFpdHM6OmtTdGF0ZUJ5dGVz
OworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrQ2FwYWNpdHlCeXRlcyA9IFJhbmRlblRyYWl0
czo6a0NhcGFjaXR5Qnl0ZXM7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTZWVkQnl0ZXMg
PSBSYW5kZW5UcmFpdHM6OmtTZWVkQnl0ZXM7CisKKyAgflJhbmRlbigpID0gZGVmYXVsdDsKKwor
ICBSYW5kZW4oKTsKKworICAvLyBHZW5lcmF0ZSB1cGRhdGVzIHRoZSByYW5kZW4gc3BvbmdlLiBU
aGUgb3V0ZXIgcG9ydGlvbiBvZiB0aGUgc3BvbmdlCisgIC8vIChrQ2FwYWNpdHlCeXRlcyAuLiBr
U3RhdGVCeXRlcykgbWF5IGJlIGNvbnN1bWVkIGFzIFBSTkcgc3RhdGUuCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBULCBzaXplX3QgTj4KKyAgdm9pZCBHZW5lcmF0ZShUICgmc3RhdGUpW05dKSBjb25z
dCB7CisgICAgc3RhdGljX2Fzc2VydChOICogc2l6ZW9mKFQpID09IGtTdGF0ZUJ5dGVzLAorICAg
ICAgICAgICAgICAgICAgIlJhbmRlbjo6R2VuZXJhdGUoKSByZXF1aXJlcyBrU3RhdGVCeXRlcyBv
ZiBzdGF0ZSIpOworI2lmIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSAorICAgIC8v
IEhXIEFFUyBEaXNwYXRjaC4KKyAgICBpZiAoaGFzX2NyeXB0b18pIHsKKyAgICAgIFJhbmRlbkh3
QWVzOjpHZW5lcmF0ZShrZXlzXywgc3RhdGUpOworICAgIH0gZWxzZSB7CisgICAgICBSYW5kZW5T
bG93OjpHZW5lcmF0ZShrZXlzXywgc3RhdGUpOworICAgIH0KKyNlbGlmIEFCU0xfSEFWRV9BQ0NF
TEVSQVRFRF9BRVMKKyAgICAvLyBIVyBBRVMgaXMgZW5hYmxlZC4KKyAgICBSYW5kZW5Id0Flczo6
R2VuZXJhdGUoa2V5c18sIHN0YXRlKTsKKyNlbHNlCisgICAgLy8gSFcgQUVTIGlzIGRpc2FibGVk
LgorICAgIFJhbmRlblNsb3c6OkdlbmVyYXRlKGtleXNfLCBzdGF0ZSk7CisjZW5kaWYKKyAgfQor
CisgIC8vIEFic29yYiBpbmNvcnBvcmF0ZXMgYWRkaXRpb25hbCBzZWVkIG1hdGVyaWFsIGludG8g
dGhlIHJhbmRlbiBzcG9uZ2UuICBBZnRlcgorICAvLyBhYnNvcmIgcmV0dXJucywgR2VuZXJhdGUg
bXVzdCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBzdGF0ZSBtYXkgYmUgY29uc3VtZWQuCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBTLCBzaXplX3QgTSwgdHlwZW5hbWUgVCwgc2l6ZV90IE4+CisgIHZvaWQg
QWJzb3JiKGNvbnN0IFMgKCZzZWVkKVtNXSwgVCAoJnN0YXRlKVtOXSkgY29uc3QgeworICAgIHN0
YXRpY19hc3NlcnQoTSAqIHNpemVvZihTKSA9PSBSYW5kZW5UcmFpdHM6OmtTZWVkQnl0ZXMsCisg
ICAgICAgICAgICAgICAgICAiUmFuZGVuOjpBYnNvcmIoKSByZXF1aXJlcyBrU2VlZEJ5dGVzIG9m
IHNlZWQiKTsKKworICAgIHN0YXRpY19hc3NlcnQoTiAqIHNpemVvZihUKSA9PSBSYW5kZW5UcmFp
dHM6OmtTdGF0ZUJ5dGVzLAorICAgICAgICAgICAgICAgICAgIlJhbmRlbjo6QWJzb3JiKCkgcmVx
dWlyZXMga1N0YXRlQnl0ZXMgb2Ygc3RhdGUiKTsKKyNpZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9B
RVNfRElTUEFUQ0gKKyAgICAvLyBIVyBBRVMgRGlzcGF0Y2guCisgICAgaWYgKGhhc19jcnlwdG9f
KSB7CisgICAgICBSYW5kZW5Id0Flczo6QWJzb3JiKHNlZWQsIHN0YXRlKTsKKyAgICB9IGVsc2Ug
eworICAgICAgUmFuZGVuU2xvdzo6QWJzb3JiKHNlZWQsIHN0YXRlKTsKKyAgICB9CisjZWxpZiBB
QlNMX0hBVkVfQUNDRUxFUkFURURfQUVTCisgICAgLy8gSFcgQUVTIGlzIGVuYWJsZWQuCisgICAg
UmFuZGVuSHdBZXM6OkFic29yYihzZWVkLCBzdGF0ZSk7CisjZWxzZQorICAgIC8vIEhXIEFFUyBp
cyBkaXNhYmxlZC4KKyAgICBSYW5kZW5TbG93OjpBYnNvcmIoc2VlZCwgc3RhdGUpOworI2VuZGlm
CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IHZvaWQqIGtleXNfOworI2lmIEFCU0xfUkFORE9N
X0lOVEVSTkFMX0FFU19ESVNQQVRDSAorICBib29sIGhhc19jcnlwdG9fOworI2VuZGlmCit9Owor
Cit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAor
CisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9iZW5jaG1hcmtzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2ludGVybmFsL3JhbmRlbl9iZW5jaG1hcmtzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1ODkxNzJjMDQ2NmQy
NTc1NTAxZDJhZWU3OWZhZDQ0NmY4YzFmZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vaW50ZXJuYWwvcmFuZGVuX2JlbmNobWFya3MuY2MKQEAgLTAsMCArMSwxNzQgQEAKKy8vIENv
cHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9yYW5kZW4uaCIKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8
Y3N0ZGlvPgorI2luY2x1ZGUgPGNzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJu
YWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9uYW5vYmVu
Y2htYXJrLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcGxhdGZvcm0uaCIKKyNp
bmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZW5naW5lLmgiCisjaW5jbHVkZSAi
YWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2h3YWVzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvcmFuZGVuX3Nsb3cuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbnVtYmVy
cy5oIgorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJhbmRl
bjsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmFuZGVuSHdBZXM7Cit1c2luZyBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OlJhbmRlblNsb3c7CisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRl
cm5hbF9uYW5vYmVuY2htYXJrOjpGdW5jSW5wdXQ7Cit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJu
YWxfbmFub2JlbmNobWFyazo6RnVuY091dHB1dDsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5h
bF9uYW5vYmVuY2htYXJrOjpJbnZhcmlhbnRUaWNrc1BlclNlY29uZDsKK3VzaW5nIGFic2w6OnJh
bmRvbV9pbnRlcm5hbF9uYW5vYmVuY2htYXJrOjpNZWFzdXJlQ2xvc3VyZTsKK3VzaW5nIGFic2w6
OnJhbmRvbV9pbnRlcm5hbF9uYW5vYmVuY2htYXJrOjpQYXJhbXM7Cit1c2luZyBhYnNsOjpyYW5k
b21faW50ZXJuYWxfbmFub2JlbmNobWFyazo6UGluVGhyZWFkVG9DUFU7Cit1c2luZyBhYnNsOjpy
YW5kb21faW50ZXJuYWxfbmFub2JlbmNobWFyazo6UmVzdWx0OworCisvLyBMb2NhbCBzdGF0ZSBw
YXJhbWV0ZXJzLgorc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N0YXRlU2l6ZVQgPSBSYW5kZW46
OmtTdGF0ZUJ5dGVzIC8gc2l6ZW9mKHVpbnQ2NF90KTsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGtTZWVkU2l6ZVQgPSBSYW5kZW46OmtTZWVkQnl0ZXMgLyBzaXplb2YodWludDMyX3QpOworCisv
LyBSYW5kZW4gaW1wbGVtZW50YXRpb24gYmVuY2htYXJrcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RydWN0IEFic29yYkZuIDogcHVibGljIFQgeworICBtdXRhYmxlIHVpbnQ2NF90IHN0YXRl
W2tTdGF0ZVNpemVUXSA9IHt9OworICBtdXRhYmxlIHVpbnQzMl90IHNlZWRba1NlZWRTaXplVF0g
PSB7fTsKKworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBieXRlcygpIHsgcmV0dXJuIHNpemVv
ZihzZWVkKTsgfQorCisgIEZ1bmNPdXRwdXQgb3BlcmF0b3IoKShjb25zdCBGdW5jSW5wdXQgbnVt
X2l0ZXJzKSBjb25zdCB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1faXRlcnM7ICsr
aSkgeworICAgICAgdGhpcy0+QWJzb3JiKHNlZWQsIHN0YXRlKTsKKyAgICB9CisgICAgcmV0dXJu
IHN0YXRlWzBdOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBHZW5l
cmF0ZUZuIDogcHVibGljIFQgeworICBtdXRhYmxlIHVpbnQ2NF90IHN0YXRlW2tTdGF0ZVNpemVU
XTsKKyAgR2VuZXJhdGVGbigpIHsgc3RkOjptZW1zZXQoc3RhdGUsIDAsIHNpemVvZihzdGF0ZSkp
OyB9CisKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgYnl0ZXMoKSB7IHJldHVybiBzaXplb2Yo
c3RhdGUpOyB9CisKKyAgRnVuY091dHB1dCBvcGVyYXRvcigpKGNvbnN0IEZ1bmNJbnB1dCBudW1f
aXRlcnMpIGNvbnN0IHsKKyAgICBjb25zdCBhdXRvKiBrZXlzID0gdGhpcy0+R2V0S2V5cygpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2l0ZXJzOyArK2kpIHsKKyAgICAgIHRoaXMt
PkdlbmVyYXRlKGtleXMsIHN0YXRlKTsKKyAgICB9CisgICAgcmV0dXJuIHN0YXRlWzBdOworICB9
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVUludD4KK3N0cnVjdCBFbmdpbmUgeworICBtdXRh
YmxlIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTxVSW50PiBybmc7CisKKyAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgYnl0ZXMoKSB7IHJldHVybiBzaXplb2YoVUludCk7IH0K
KworICBGdW5jT3V0cHV0IG9wZXJhdG9yKCkoY29uc3QgRnVuY0lucHV0IG51bV9pdGVycykgY29u
c3QgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2l0ZXJzIC0gMTsgKytpKSB7Cisg
ICAgICBybmcoKTsKKyAgICB9CisgICAgcmV0dXJuIHJuZygpOworICB9Cit9OworCit0ZW1wbGF0
ZSA8c2l6ZV90IE4+Cit2b2lkIFByaW50KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IHNpemVfdCBu
LCBjb25zdCBSZXN1bHQgKCZyZXN1bHRzKVtOXSwKKyAgICAgICAgICAgY29uc3Qgc2l6ZV90IGJ5
dGVzKSB7CisgIGlmIChuID09IDApIHsKKyAgICBBQlNMX1JBV19MT0coCisgICAgICAgIFdBUk5J
TkcsCisgICAgICAgICJXQVJOSU5HOiBNZWFzdXJlbWVudCBmYWlsZWQsIHNob3VsZCBub3QgaGFw
cGVuIHdoZW4gdXNpbmcgIgorICAgICAgICAiUGluVGhyZWFkVG9DUFUgdW5sZXNzIHRoZSByZWdp
b24gdG8gbWVhc3VyZSB0YWtlcyA+IDEgc2Vjb25kLlxuIik7CisgICAgcmV0dXJuOworICB9CisK
KyAgc3RhdGljIGNvbnN0IGRvdWJsZSBuc19wZXJfdGljayA9IDFlOSAvIEludmFyaWFudFRpY2tz
UGVyU2Vjb25kKCk7CisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgZG91YmxlIGtOc1BlclMgPSAx
ZTk7ICAgICAgICAgICAgICAgICAvLyBucy9zCisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgZG91
YmxlIGtNQlBlckJ5dGUgPSAxLjAgLyAxMDQ4NTc2LjA7ICAvLyBNYiAvIGIKKyAgc3RhdGljIGF1
dG8gaGVhZGVyID0gW10geworICAgIHJldHVybiBwcmludGYoIiUyMHMgJThzOiAlMTJzIHRpY2tz
OyAlOXMgICglOXMpICU4c1xuIiwgIk5hbWUiLCAiQ291bnQiLAorICAgICAgICAgICAgICAgICAg
IlRvdGFsIiwgIlZhcmlhbmNlIiwgIlRpbWUiLCAiYnl0ZXMvcyIpOworICB9KCk7CisgICh2b2lk
KWhlYWRlcjsKKworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgIGNvbnN0
IGRvdWJsZSB0aWNrc19wZXJfY2FsbCA9IHJlc3VsdHNbaV0udGlja3MgLyByZXN1bHRzW2ldLmlu
cHV0OworICAgIGNvbnN0IGRvdWJsZSBuc19wZXJfY2FsbCA9IG5zX3Blcl90aWNrICogdGlja3Nf
cGVyX2NhbGw7CisgICAgY29uc3QgZG91YmxlIGJ5dGVzX3Blcl9ucyA9IGJ5dGVzIC8gbnNfcGVy
X2NhbGw7CisgICAgY29uc3QgZG91YmxlIG1iX3Blcl9zID0gYnl0ZXNfcGVyX25zICoga05zUGVy
UyAqIGtNQlBlckJ5dGU7CisgICAgLy8gT3V0cHV0CisgICAgcHJpbnRmKCIlMjBzICU4enU6ICUx
Mi4yZiB0aWNrczsgTUFEPSU0LjJmJSUgICglNi4xZiBucykgJTguMWYgTWIvc1xuIiwKKyAgICAg
ICAgICAgbmFtZSwgcmVzdWx0c1tpXS5pbnB1dCwgcmVzdWx0c1tpXS50aWNrcywKKyAgICAgICAg
ICAgcmVzdWx0c1tpXS52YXJpYWJpbGl0eSAqIDEwMC4wLCBuc19wZXJfY2FsbCwgbWJfcGVyX3Mp
OworICB9Cit9CisKKy8vIEZhaWxzIGhlcmUKK3RlbXBsYXRlIDx0eXBlbmFtZSBPcCwgc2l6ZV90
IE4+Cit2b2lkIE1lYXN1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgRnVuY0lucHV0ICgmaW5w
dXRzKVtOXSkgeworICBPcCBvcDsKKworICBSZXN1bHQgcmVzdWx0c1tOXTsKKyAgUGFyYW1zIHBh
cmFtczsKKyAgcGFyYW1zLnZlcmJvc2UgPSBmYWxzZTsKKyAgcGFyYW1zLm1heF9ldmFscyA9IDY7
ICAvLyBhdm9pZCB0ZXN0IHRpbWVvdXQKKyAgY29uc3Qgc2l6ZV90IG51bV9yZXN1bHRzID0gTWVh
c3VyZUNsb3N1cmUob3AsIGlucHV0cywgTiwgcmVzdWx0cywgcGFyYW1zKTsKKyAgUHJpbnQobmFt
ZSwgbnVtX3Jlc3VsdHMsIHJlc3VsdHMsIG9wLmJ5dGVzKCkpOworfQorCisvLyB1bnByZWRpY3Rh
YmxlID09IDEgYnV0IHRoZSBjb21waWxlciBkb2VzIG5vdCBrbm93IHRoYXQuCit2b2lkIFJ1bkFs
bChjb25zdCBpbnQgYXJnYywgY2hhciogYXJndltdKSB7CisgIGlmIChhcmdjID09IDIpIHsKKyAg
ICBpbnQgY3B1ID0gLTE7CisgICAgaWYgKCFhYnNsOjpTaW1wbGVBdG9pKGFyZ3ZbMV0sICZjcHUp
KSB7CisgICAgICBBQlNMX1JBV19MT0coRkFUQUwsICJUaGUgb3B0aW9uYWwgYXJndW1lbnQgbXVz
dCBiZSBhIENQVSBudW1iZXIgPj0gMC5cbiIpOworICAgIH0KKyAgICBQaW5UaHJlYWRUb0NQVShj
cHUpOworICB9CisKKyAgLy8gVGhlIGNvbXBpbGVyIGNhbm5vdCByZWR1Y2UgdGhpcyB0byBhIGNv
bnN0YW50LgorICBjb25zdCBGdW5jSW5wdXQgdW5wcmVkaWN0YWJsZSA9IChhcmdjICE9IDk5OSk7
CisgIHN0YXRpYyBjb25zdCBGdW5jSW5wdXQgaW5wdXRzW10gPSB7dW5wcmVkaWN0YWJsZSAqIDEw
MCwgdW5wcmVkaWN0YWJsZSAqIDEwMDB9OworCisjaWYgIWRlZmluZWQoQUJTTF9JTlRFUk5BTF9E
SVNBQkxFX0FFUykgJiYgQUJTTF9IQVZFX0FDQ0VMRVJBVEVEX0FFUworICBNZWFzdXJlPEFic29y
YkZuPFJhbmRlbkh3QWVzPj4oIkFic29yYiAoSHdBZXMpIiwgaW5wdXRzKTsKKyNlbmRpZgorICBN
ZWFzdXJlPEFic29yYkZuPFJhbmRlblNsb3c+PigiQWJzb3JiIChTbG93KSIsIGlucHV0cyk7CisK
KyNpZiAhZGVmaW5lZChBQlNMX0lOVEVSTkFMX0RJU0FCTEVfQUVTKSAmJiBBQlNMX0hBVkVfQUND
RUxFUkFURURfQUVTCisgIE1lYXN1cmU8R2VuZXJhdGVGbjxSYW5kZW5Id0Flcz4+KCJHZW5lcmF0
ZSAoSHdBZXMpIiwgaW5wdXRzKTsKKyNlbmRpZgorICBNZWFzdXJlPEdlbmVyYXRlRm48UmFuZGVu
U2xvdz4+KCJHZW5lcmF0ZSAoU2xvdykiLCBpbnB1dHMpOworCisgIC8vIE1lYXN1cmUgdGhlIHBy
b2R1Y3Rpb24gZW5naW5lLgorICBzdGF0aWMgY29uc3QgRnVuY0lucHV0IGlucHV0czFbXSA9IHt1
bnByZWRpY3RhYmxlICogMTAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5wcmVkaWN0YWJsZSAqIDEwMDAwfTsKKyAgTWVhc3VyZTxFbmdpbmU8dWludDY0X3Q+Pigi
cmFuZGVuX2VuZ2luZTx1aW50NjRfdD4iLCBpbnB1dHMxKTsKKyAgTWVhc3VyZTxFbmdpbmU8dWlu
dDMyX3Q+PigicmFuZGVuX2VuZ2luZTx1aW50MzJfdD4iLCBpbnB1dHMxKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKKyAgUnVuQWxs
KGFyZ2MsIGFyZ3YpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9p
bnRlcm5hbC9yYW5kZW5fZGV0ZWN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9k
ZXRlY3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU5NDZiMjE5Y2MyYzQ4NzYzMzQ2OTQ3YzQyYzc4MjU2ZGI0
ZTczNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZGV0
ZWN0LmNjCkBAIC0wLDAgKzEsMjE5IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKy8vIEhFUk1FVElDIE5PVEU6IFRoZSByYW5kZW5faHdhZXMgdGFyZ2V0IG11c3Qg
bm90IGludHJvZHVjZSBkdXBsaWNhdGUKKy8vIHN5bWJvbHMgZnJvbSBhcmJpdHJhcnkgc3lzdGVt
IGFuZCBvdGhlciBoZWFkZXJzLCBzaW5jZSBpdCBtYXkgYmUgYnVpbHQKKy8vIHdpdGggZGlmZmVy
ZW50IGZsYWdzIGZyb20gb3RoZXIgdGFyZ2V0cywgdXNpbmcgZGlmZmVyZW50IGxldmVscyBvZgor
Ly8gb3B0aW1pemF0aW9uLCBwb3RlbnRpYWxseSBpbnRyb2R1Y2luZyBPRFIgdmlvbGF0aW9ucy4K
KworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9kZXRlY3QuaCIKKworI2lu
Y2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2ludGVybmFsL3BsYXRmb3JtLmgiCisKKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9YODZfNjQp
CisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVVNFX1g4Nl9DUFVJRAorI2VsaWYgZGVmaW5lZChBQlNM
X0FSQ0hfUFBDKSB8fCBkZWZpbmVkKEFCU0xfQVJDSF9BUk0pIHx8IFwKKyAgICBkZWZpbmVkKEFC
U0xfQVJDSF9BQVJDSDY0KQorI2lmIGRlZmluZWQoX19BTkRST0lEX18pCisjZGVmaW5lIEFCU0xf
SU5URVJOQUxfVVNFX0FORFJPSURfR0VUQVVYVkFMCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVVNF
X0dFVEFVWFZBTAorI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCisjZGVmaW5lIEFCU0xfSU5URVJO
QUxfVVNFX0xJTlVYX0dFVEFVWFZBTAorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VTRV9HRVRBVVhW
QUwKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEFCU0xfSU5URVJOQUxfVVNFX1g4Nl9D
UFVJRCkKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCisjaW5jbHVkZSA8
aW50cmluLmg+ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZV9vcmRlcikKKyNwcmFnbWEgaW50cmlu
c2ljKF9fY3B1aWQpCisjZWxzZQorLy8gTVNWQy1lcXVpdmFsZW50IF9fY3B1aWQgaW50cmluc2lj
IGZ1bmN0aW9uLgorc3RhdGljIHZvaWQgX19jcHVpZChpbnQgY3B1X2luZm9bNF0sIGludCBpbmZv
X3R5cGUpIHsKKyAgX19hc21fXyB2b2xhdGlsZSgiY3B1aWQgXG5cdCIKKyAgICAgICAgICAgICAg
ICAgICA6ICI9YSIoY3B1X2luZm9bMF0pLCAiPWIiKGNwdV9pbmZvWzFdKSwgIj1jIihjcHVfaW5m
b1syXSksCisgICAgICAgICAgICAgICAgICAgICAiPWQiKGNwdV9pbmZvWzNdKQorICAgICAgICAg
ICAgICAgICAgIDogImEiKGluZm9fdHlwZSksICJjIigwKSk7Cit9CisjZW5kaWYKKyNlbmRpZiAg
Ly8gQUJTTF9JTlRFUk5BTF9VU0VfWDg2X0NQVUlECisKKy8vIE9uIGxpbnV4LCBqdXN0IHVzZSB0
aGUgYy1saWJyYXJ5IGdldGF1eHZhbCBjYWxsLgorI2lmIGRlZmluZWQoQUJTTF9JTlRFUk5BTF9V
U0VfTElOVVhfR0VUQVVYVkFMKQorCitleHRlcm4gIkMiIHVuc2lnbmVkIGxvbmcgZ2V0YXV4dmFs
KHVuc2lnbmVkIGxvbmcgdHlwZSk7ICAvLyBOT0xJTlQocnVudGltZS9pbnQpCisKK3N0YXRpYyB1
aW50MzJfdCBHZXRBdXh2YWwodWludDMyX3QgaHdjYXBfdHlwZSkgeworICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGdldGF1eHZhbChod2NhcF90eXBlKSk7Cit9CisKKyNlbmRpZgorCisv
LyBPbiBhbmRyb2lkLCBwcm9iZSB0aGUgc3lzdGVtJ3MgQyBsaWJyYXJ5IGZvciBnZXRhdXh2YWwo
KS4KKy8vIFRoaXMgaXMgdGhlIHNhbWUgdGVjaG5pcXVlIHVzZWQgYnkgdGhlIGFuZHJvaWQgTkRL
IGNwdSBmZWF0dXJlcyBsaWJyYXJ5CisvLyBhcyB3ZWxsIGFzIHRoZSBnb29nbGUgb3Blbi1zb3Vy
Y2UgY3B1X2ZlYXR1cmVzIGxpYnJhcnkuCisvLworLy8gVE9ETyhhYnNsLXRlYW0pOiBDb25zaWRl
ciBpbXBsZW1lbnRpbmcgYSBmYWxsYmFjayBvZiBkaXJlY3RseSByZWFkaW5nCisvLyAvcHJvYy9z
ZWxmL2F1eHZhbC4KKyNpZiBkZWZpbmVkKEFCU0xfSU5URVJOQUxfVVNFX0FORFJPSURfR0VUQVVY
VkFMKQorI2luY2x1ZGUgPGRsZmNuLmg+CisKK3N0YXRpYyB1aW50MzJfdCBHZXRBdXh2YWwodWlu
dDMyX3QgaHdjYXBfdHlwZSkgeworICAvLyBOT0xJTlRORVhUTElORShydW50aW1lL2ludCkKKyAg
dHlwZWRlZiB1bnNpZ25lZCBsb25nICgqZ2V0YXV4dmFsX2Z1bmNfdCkodW5zaWduZWQgbG9uZyk7
CisKKyAgZGxlcnJvcigpOyAgLy8gQ2xlYW5pbmcgZXJyb3Igc3RhdGUgYmVmb3JlIGNhbGxpbmcg
ZGxvcGVuLgorICB2b2lkKiBsaWJjX2hhbmRsZSA9IGRsb3BlbigibGliYy5zbyIsIFJUTERfTk9X
KTsKKyAgaWYgKCFsaWJjX2hhbmRsZSkgeworICAgIHJldHVybiAwOworICB9CisgIHVpbnQzMl90
IHJlc3VsdCA9IDA7CisgIHZvaWQqIHN5bSA9IGRsc3ltKGxpYmNfaGFuZGxlLCAiZ2V0YXV4dmFs
Iik7CisgIGlmIChzeW0pIHsKKyAgICBnZXRhdXh2YWxfZnVuY190IGZ1bmM7CisgICAgbWVtY3B5
KCZmdW5jLCAmc3ltLCBzaXplb2YoZnVuYykpOworICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PigoKmZ1bmMpKGh3Y2FwX3R5cGUpKTsKKyAgfQorICBkbGNsb3NlKGxpYmNfaGFuZGxl
KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmCisKK25hbWVzcGFjZSBhYnNsIHsKK25h
bWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBUaGUgZGVmYXVsdCByZXR1cm4gYXQgdGhl
IGVuZCBvZiB0aGUgZnVuY3Rpb24gbWlnaHQgYmUgdW5yZWFjaGFibGUgZGVwZW5kaW5nCisvLyBv
biB0aGUgY29uZmlndXJhdGlvbi4gSWdub3JlIHRoYXQgd2FybmluZy4KKyNpZiBkZWZpbmVkKF9f
Y2xhbmdfXykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVd1bnJlYWNoYWJsZS1jb2RlLXJldHVybiIKKyNlbmRpZgorCisv
LyBDUFVTdXBwb3J0c1JhbmRlbkh3QWVzIHJldHVybnMgd2hldGhlciB0aGUgQ1BVIGlzIGEgbWlj
cm9hcmNoaXRlY3R1cmUKKy8vIHdoaWNoIHN1cHBvcnRzIHRoZSBjcnB5dG8vYWVzIGluc3RydWN0
aW9ucyBvciBleHRlbnNpb25zIG5lY2Vzc2FyeSB0byB1c2UgdGhlCisvLyBhY2NlbGVyYXRlZCBS
YW5kZW5Id0FlcyBpbXBsZW1lbnRhdGlvbi4KKy8vCisvLyAxLiBGb3IgeDg2IGl0IGlzIHN1ZmZp
Y2llbnQgdG8gdXNlIHRoZSBDUFVJRCBpbnN0cnVjdGlvbiB0byBkZXRlY3Qgd2hldGhlcgorLy8g
ICAgdGhlIGNwdSBzdXBwb3J0cyBBRVMgaW5zdHJ1Y3Rpb25zLiBEb25lLgorLy8KKy8vIEZvbiBu
b24teDg2IGl0IGlzIG11Y2ggbW9yZSBjb21wbGljYXRlZC4KKy8vCisvLyAyLiBXaGVuIEFCU0xf
SU5URVJOQUxfVVNFX0dFVEFVWFZBTCBpcyBkZWZpbmVkLCB1c2UgZ2V0YXV4dmFsKCkgKGVpdGhl
cgorLy8gICAgdGhlIGRpcmVjdCBjLWxpYnJhcnkgdmVyc2lvbiwgb3IgdGhlIGFuZHJvaWQgcHJv
YmluZyB2ZXJzaW9uIHdoaWNoIGxvYWRzCisvLyAgICBsaWJjKSwgYW5kIHJlYWQgdGhlIGhhcmR3
YXJlIGNhcGFiaWxpdHkgYml0cy4KKy8vICAgIFRoaXMgaXMgYmFzZWQgb24gdGhlIHRlY2huaXF1
ZSB1c2VkIGJ5IGJvcmluZ3NzbCB1c2VzIHRvIGRldGVjdAorLy8gICAgY3B1IGNhcGFiaWxpdGll
cywgYW5kIHNob3VsZCBhbGxvdyB1cyB0byBlbmFibGUgY3J5cHRvIGluIHRoZSBhbmRyb2lkCisv
LyAgICBidWlsZHMgd2hlcmUgaXQgaXMgc3VwcG9ydGVkLgorLy8KKy8vIDMuIFVzZSB0aGUgZGVm
YXVsdCBmb3IgdGhlIGNvbXBpbGVyIGFyY2hpdGVjdHVyZS4KKy8vCisKK2Jvb2wgQ1BVU3VwcG9y
dHNSYW5kZW5Id0FlcygpIHsKKyNpZiBkZWZpbmVkKEFCU0xfSU5URVJOQUxfVVNFX1g4Nl9DUFVJ
RCkKKyAgLy8gMS4gRm9yIHg4NjogVXNlIENQVUlEIHRvIGRldGVjdCB0aGUgcmVxdWlyZWQgQUVT
IGluc3RydWN0aW9uIHNldC4KKyAgaW50IHJlZ3NbNF07CisgIF9fY3B1aWQocmVpbnRlcnByZXRf
Y2FzdDxpbnQqPihyZWdzKSwgMSk7CisgIHJldHVybiByZWdzWzJdICYgKDEgPDwgMjUpOyAgLy8g
QUVTCisKKyNlbGlmIGRlZmluZWQoQUJTTF9JTlRFUk5BTF9VU0VfR0VUQVVYVkFMKQorICAvLyAy
LiBVc2UgZ2V0YXV4dmFsKCkgdG8gcmVhZCB0aGUgaGFyZHdhcmUgYml0cyBhbmQgZGV0ZXJtaW5l
CisgIC8vIGNwdSBjYXBhYmlsaXRpZXMuCisKKyNkZWZpbmUgQVRfSFdDQVAgMTYKKyNkZWZpbmUg
QVRfSFdDQVAyIDI2CisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQorICAvLyBGb3IgUG93ZXIg
LyBQUEM6IEV4cGVjdCB0aGF0IHRoZSBjcHUgc3VwcG9ydHMgVkNSWVBUTworICAvLyBTZWUgaHR0
cHM6Ly9tZW1iZXJzLm9wZW5wb3dlcmZvdW5kYXRpb24ub3JnL2RvY3VtZW50L2RsLzU3NgorICAv
LyBWQ1JZUFRPIHNob3VsZCBiZSBwcmVzZW50IGluIFBPV0VSOCA+PSAyLjA3LgorICAvLyBVc2Vz
IExpbnV4IGtlcm5lbCBjb25zdGFudHMgZnJvbSBhcmNoL3Bvd2VycGMvaW5jbHVkZS91YXBpL2Fz
bS9jcHV0YWJsZS5oCisgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrVkNSWVBUTyA9IDB4MDIwMDAw
MDA7CisgIGNvbnN0IHVpbnQzMl90IGh3Y2FwID0gR2V0QXV4dmFsKEFUX0hXQ0FQMik7CisgIHJl
dHVybiAoaHdjYXAgJiBrVkNSWVBUTykgIT0gMDsKKworI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hf
QVJNKQorICAvLyBGb3IgQVJNOiBSZXF1aXJlIGNyeXB0bytuZW9uCisgIC8vIGh0dHA6Ly9pbmZv
Y2VudGVyLmFybS5jb20vaGVscC9pbmRleC5qc3A/dG9waWM9L2NvbS5hcm0uZG9jLmRkaTA1MDBm
L0NJSEJJQkJBLmh0bWwKKyAgLy8gVXNlcyBMaW51eCBrZXJuZWwgY29uc3RhbnRzIGZyb20gYXJj
aC9hcm02NC9pbmNsdWRlL2FzbS9od2NhcC5oCisgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrTkVP
TiA9IDEgPDwgMTI7CisgIHVpbnQzMl90IGh3Y2FwID0gR2V0QXV4dmFsKEFUX0hXQ0FQKTsKKyAg
aWYgKChod2NhcCAmIGtORU9OKSA9PSAwKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAg
Ly8gQW5kIHVzZSBpdCBhZ2FpbiB0byBkZXRlY3QgQUVTLgorICBzdGF0aWMgY29uc3QgdWludDMy
X3Qga0FFUyA9IDEgPDwgMDsKKyAgY29uc3QgdWludDMyX3QgaHdjYXAyID0gR2V0QXV4dmFsKEFU
X0hXQ0FQMik7CisgIHJldHVybiAoaHdjYXAyICYga0FFUykgIT0gMDsKKworI2VsaWYgZGVmaW5l
ZChBQlNMX0FSQ0hfQUFSQ0g2NCkKKyAgLy8gRm9yIEFBUkNINjQ6IFJlcXVpcmUgY3J5cHRvK25l
b24KKyAgLy8gaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL2luZGV4LmpzcD90b3BpYz0v
Y29tLmFybS5kb2MuZGRpMDUwMGYvQ0lIQklCQkEuaHRtbAorICBzdGF0aWMgY29uc3QgdWludDMy
X3Qga05FT04gPSAxIDw8IDE7CisgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrQUVTID0gMSA8PCAz
OworICBjb25zdCB1aW50MzJfdCBod2NhcCA9IEdldEF1eHZhbChBVF9IV0NBUCk7CisgIHJldHVy
biAoKGh3Y2FwICYga05FT04pICE9IDApICYmICgoaHdjYXAgJiBrQUVTKSAhPSAwKTsKKyNlbmRp
ZgorCisjZWxzZSAgLy8gQUJTTF9JTlRFUk5BTF9VU0VfR0VUQVVYVkFMCisgIC8vIDMuIEJ5IGRl
ZmF1bHQsIGFzc3VtZSB0aGF0IHRoZSBjb21waWxlciBkZWZhdWx0LgorICByZXR1cm4gQUJTTF9I
QVZFX0FDQ0VMRVJBVEVEX0FFUyA/IHRydWUgOiBmYWxzZTsKKworI2VuZGlmCisgIC8vIE5PVEU6
IFRoZXJlIGFyZSBzb21lIG90aGVyIHRlY2huaXF1ZXMgdGhhdCBtYXkgYmUgd29ydGggdHJ5aW5n
OgorICAvLworICAvLyAqIFVzZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZTogQUJTTF9SQU5ET01f
VVNFX0hXQUVTCisgIC8vCisgIC8vICogUmVseSBvbiBjb21waWxlci1nZW5lcmF0ZWQgdGFyZ2V0
LWJhc2VkIGRpc3BhdGNoLgorICAvLyBVc2luZyB4ODYvZ2NjIGl0IG1pZ2h0IGxvb2sgc29tZXRo
aW5nIGxpa2UgdGhpczoKKyAgLy8KKyAgLy8gaW50IF9fYXR0cmlidXRlX18oKHRhcmdldCgiYWVz
IikpKSBIYXNBZXMoKSB7IHJldHVybiAxOyB9CisgIC8vIGludCBfX2F0dHJpYnV0ZV9fKCh0YXJn
ZXQoImRlZmF1bHQiKSkpIEhhc0FlcygpIHsgcmV0dXJuIDA7IH0KKyAgLy8KKyAgLy8gVGhpcyBk
b2VzIG5vdCB3b3JrIG9uIGFsbCBhcmNoaXRlY3R1cmUvY29tcGlsZXIgY29tYmluYXRpb25zLgor
ICAvLworICAvLyAqIE9uIExpbnV4IGNvbnNpZGVyIHJlYWRpbmcgL3Byb2MvY3B1aW5mbyBhbmQv
b3IgL3Byb2Mvc2VsZi9hdXh2LgorICAvLyBUaGVzZSBmaWxlcyBoYXZlIGxpbmVzIHdoaWNoIGFy
ZSBlYXN5IHRvIHBhcnNlOyBmb3IgQVJNL0FBUkNINjQgaXQgaXMgcXVpdGUKKyAgLy8gZWFzeSB0
byBmaW5kIHRoZSBGZWF0dXJlczogbGluZSBhbmQgZXh0cmFjdCBhZXMgLyBuZW9uLiBMaWtld2lz
ZSBmb3IKKyAgLy8gUFBDLgorICAvLworICAvLyAqIEZvcmsgYSBwcm9jZXNzIGFuZCB0ZXN0IGZv
ciBTSUdJTEw6CisgIC8vCisgIC8vICogTWFueSBhcmNoaXRlY3R1cmVzIGhhdmUgaW5zdHJ1Y3Rp
b25zIHRvIHJlYWQgdGhlIElTQS4gVW5mb3J0dW5hdGVseQorICAvLyAgIG1vc3Qgb2YgdGhvc2Ug
cmVxdWlyZSB0aGF0IHRoZSBjb2RlIGlzIHJ1bm5pbmcgaW4gcmluZyAwIC8KKyAgLy8gICBwcm90
ZWN0ZWQtbW9kZS4KKyAgLy8KKyAgLy8gICBUaGVyZSBhcmUgc2V2ZXJhbCBleGFtcGxlcy4gZS5n
LiBWYWxncmluZCBkZXRlY3RzIFBQQyBJU0EgMi4wNzoKKyAgLy8gICBodHRwczovL2dpdGh1Yi5j
b20vbHUtemVyby92YWxncmluZC9ibG9iL21hc3Rlci9ub25lL3Rlc3RzL3BwYzY0L3Rlc3RfaXNh
XzJfMDdfcGFydDEuYworICAvLworICAvLyAgIE1SUyA8WHQ+LCBJRF9BQTY0SVNBUjBfRUwxIDsg
UmVhZCBJRF9BQTY0SVNBUjBfRUwxIGludG8gWHQKKyAgLy8KKyAgLy8gICB1aW50NjRfdCB2YWw7
CisgIC8vICAgX19hc20gX192b2xhdGlsZSgibXJzICUwLCBpZF9hYTY0aXNhcjBfZWwxIiA6Ij0m
ciIgKHZhbCkpOworICAvLworICAvLyAqIFVzZSBhIENQVUlELXN0eWxlIGhldXJpc3RpYyBkYXRh
YmFzZS4KKyAgLy8KKyAgLy8gKiBPbiBBcHBsZSAoX19BUFBMRV9fKSwgQUVTIGlzIGF2YWlsYWJs
ZSBvbiBBcm0gdjguCisgIC8vICAgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMv
NDU2Mzc4ODgvaG93LXRvLWRldGVybWluZS1hcm12OC1mZWF0dXJlcy1hdC1ydW50aW1lLW9uLWlv
cworfQorCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCisjZW5kaWYKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFt
ZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZGV0
ZWN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2RldGVjdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0YzVjNjY3MjM5MTc0NjE5YmFkYjMwMjdiYTU3M2JmYmNhYjY4MGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2RldGVjdC5oCkBAIC0wLDAgKzEsMjkg
QEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFC
U0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9ERVRFQ1RfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01f
SU5URVJOQUxfUkFOREVOX0RFVEVDVF9IXworCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
cmFuZG9tX2ludGVybmFsIHsKKworLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBjdXJyZW50IENQVSBz
dXBwb3J0cyBSYW5kZW5Id0FlcyBpbXBsZW1lbnRhdGlvbi4KKy8vIFRoaXMgdHlwaWNhbGx5IGlu
dm9sdmVzIHN1cHBvcnRpbmcgY3J5cHRvZ3JhcGhpYyBleHRlbnNpb25zIG9uIHdoaWNoZXZlcgor
Ly8gcGxhdGZvcm0gaXMgY3VycmVudGx5IHJ1bm5pbmcuCitib29sIENQVVN1cHBvcnRzUmFuZGVu
SHdBZXMoKTsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNw
YWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SQU5ERU5fREVURUNU
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2VuZ2luZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9lbmdpbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjIxMmEx
MzdjMzZkMWRhYmJlZWNmOTY5ZGQ1MjdlOThkNjMyYzU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9lbmdpbmUuaApAQCAtMCwwICsxLDIyOCBAQAorLy8g
Q29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5E
T01fSU5URVJOQUxfUkFOREVOX0VOR0lORV9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5B
TF9SQU5ERU5fRU5HSU5FX0hfCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y2lu
dHR5cGVzPgorI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVk
ZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgor
CisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvaW9zdHJlYW1fc3RhdGVfc2F2ZXIuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9yYW5kZW4uaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRv
bV9pbnRlcm5hbCB7CisKKy8vIERldGVybWluaXN0aWMgcHNldWRvcmFuZG9tIGJ5dGUgZ2VuZXJh
dG9yIHdpdGggYmFja3RyYWNraW5nIHJlc2lzdGFuY2UKKy8vIChsZWFraW5nIHRoZSBzdGF0ZSBk
b2VzIG5vdCBjb21wcm9taXNlIHByaW9yIG91dHB1dHMpLiBCYXNlZCBvbiBSZXZlcmllCisvLyAo
c2VlICJBIFJvYnVzdCBhbmQgU3BvbmdlLUxpa2UgUFJORyB3aXRoIEltcHJvdmVkIEVmZmljaWVu
Y3kiKSBpbnN0YW50aWF0ZWQKKy8vIHdpdGggYW4gaW1wcm92ZWQgU2ltcGlyYS1saWtlIHBlcm11
dGF0aW9uLgorLy8gUmV0dXJucyB2YWx1ZXMgb2YgdHlwZSAiVCIgKG11c3QgYmUgYSBidWlsdC1p
biB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUpLgorLy8KKy8vIFJBTkRlbiA9IFJBTkRvbSBnZW5lcmF0
b3Igb3IgYmVldHJvb3RzIGluIFN3aXNzIEhpZ2ggR2VybWFuLgorLy8gJ1N0cm9uZycgKHdlbGwt
ZGlzdHJpYnV0ZWQsIHVucHJlZGljdGFibGUsIGJhY2t0cmFja2luZy1yZXNpc3RhbnQpIHJhbmRv
bQorLy8gZ2VuZXJhdG9yLCBmYXN0ZXIgaW4gc29tZSBiZW5jaG1hcmtzIHRoYW4gc3RkOjptdDE5
OTM3XzY0IGFuZCBwY2c2NF9jMzIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIGFsaWdu
YXMoMTYpIHJhbmRlbl9lbmdpbmUgeworIHB1YmxpYzoKKyAgLy8gQysrMTEgVVJCRyBpbnRlcmZh
Y2U6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gVDsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Vu
c2lnbmVkPHJlc3VsdF90eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgInJhbmRlbl9lbmdp
bmUgdGVtcGxhdGUgYXJndW1lbnQgbXVzdCBiZSBhIGJ1aWx0LWluIHVuc2lnbmVkICIKKyAgICAg
ICAgICAgICAgICAiaW50ZWdlciB0eXBlIik7CisKKyAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRf
dHlwZShtaW4pKCkgeworICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlw
ZT46Om1pbikoKTsKKyAgfQorCisgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUobWF4KSgp
IHsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCk7
CisgIH0KKworICBleHBsaWNpdCByYW5kZW5fZW5naW5lKHJlc3VsdF90eXBlIHNlZWRfdmFsdWUg
PSAwKSB7IHNlZWQoc2VlZF92YWx1ZSk7IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgU2VlZFNlcXVl
bmNlLAorICAgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwK
KyAgICAgICAgICAgICAgICAhc3RkOjppc19zYW1lPFNlZWRTZXF1ZW5jZSwgcmFuZGVuX2VuZ2lu
ZT46OnZhbHVlPj4KKyAgZXhwbGljaXQgcmFuZGVuX2VuZ2luZShTZWVkU2VxdWVuY2UmJiBzZXEp
IHsKKyAgICBzZWVkKHNlcSk7CisgIH0KKworICByYW5kZW5fZW5naW5lKGNvbnN0IHJhbmRlbl9l
bmdpbmUmKSA9IGRlZmF1bHQ7CisKKyAgLy8gUmV0dXJucyByYW5kb20gYml0cyBmcm9tIHRoZSBi
dWZmZXIgaW4gdW5pdHMgb2YgcmVzdWx0X3R5cGUuCisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCko
KSB7CisgICAgLy8gUmVmaWxsIHRoZSBidWZmZXIgaWYgbmVlZGVkICh1bmxpa2VseSkuCisgICAg
aWYgKG5leHRfID49IGtTdGF0ZVNpemVUKSB7CisgICAgICBuZXh0XyA9IGtDYXBhY2l0eVQ7Cisg
ICAgICBpbXBsXy5HZW5lcmF0ZShzdGF0ZV8pOworICAgIH0KKworICAgIHJldHVybiBzdGF0ZV9b
bmV4dF8rK107CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgU2VlZFNlcXVlbmNlPgorICB0eXBl
bmFtZSBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICFzdGQ6OmlzX2NvbnZlcnRpYmxlPFNlZWRT
ZXF1ZW5jZSwgcmVzdWx0X3R5cGU+Ojp2YWx1ZT4KKyAgc2VlZChTZWVkU2VxdWVuY2UmJiBzZXEp
IHsKKyAgICAvLyBaZXJvZXMgdGhlIHN0YXRlLgorICAgIHNlZWQoKTsKKyAgICByZXNlZWQoc2Vx
KTsKKyAgfQorCisgIHZvaWQgc2VlZChyZXN1bHRfdHlwZSBzZWVkX3ZhbHVlID0gMCkgeworICAg
IG5leHRfID0ga1N0YXRlU2l6ZVQ7CisgICAgLy8gWmVyb2VzIHRoZSBpbm5lciBzdGF0ZSBhbmQg
ZmlsbHMgdGhlIG91dGVyIHN0YXRlIHdpdGggc2VlZF92YWx1ZSB0bworICAgIC8vIG1pbWljcyBi
ZWhhdmlvdXIgb2YgcmVzZWVkCisgICAgc3RkOjpmaWxsKHN0ZDo6YmVnaW4oc3RhdGVfKSwgc3Rk
OjpiZWdpbihzdGF0ZV8pICsga0NhcGFjaXR5VCwgMCk7CisgICAgc3RkOjpmaWxsKHN0ZDo6YmVn
aW4oc3RhdGVfKSArIGtDYXBhY2l0eVQsIHN0ZDo6ZW5kKHN0YXRlXyksIHNlZWRfdmFsdWUpOwor
ICB9CisKKyAgLy8gSW5zZXJ0cyBlbnRyb3B5IGludG8gKHBhcnQgb2YpIHRoZSBzdGF0ZS4gQ2Fs
bGluZyB0aGlzIHBlcmlvZGljYWxseSB3aXRoCisgIC8vIHN1ZmZpY2llbnQgZW50cm9weSBlbnN1
cmVzIHByZWRpY3Rpb24gcmVzaXN0YW5jZSAoYXR0YWNrZXJzIGNhbm5vdCBwcmVkaWN0CisgIC8v
IGZ1dHVyZSBvdXRwdXRzIGV2ZW4gaWYgc3RhdGUgaXMgY29tcHJvbWlzZWQpLgorICB0ZW1wbGF0
ZSA8Y2xhc3MgU2VlZFNlcXVlbmNlPgorICB2b2lkIHJlc2VlZChTZWVkU2VxdWVuY2UmIHNlcSkg
eworICAgIHVzaW5nIHNlcXVlbmNlX3Jlc3VsdF90eXBlID0gdHlwZW5hbWUgU2VlZFNlcXVlbmNl
OjpyZXN1bHRfdHlwZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihzZXF1ZW5jZV9yZXN1bHRf
dHlwZSkgPT0gNCwKKyAgICAgICAgICAgICAgICAgICJTZWVkU2VxdWVuY2U6OnJlc3VsdF90eXBl
IG11c3QgYmUgMzItYml0Iik7CisKKyAgICBjb25zdGV4cHIgc2l6ZV90IGtCdWZmZXJTaXplID0K
KyAgICAgICAgUmFuZGVuOjprU2VlZEJ5dGVzIC8gc2l6ZW9mKHNlcXVlbmNlX3Jlc3VsdF90eXBl
KTsKKyAgICBhbGlnbmFzKDE2KSBzZXF1ZW5jZV9yZXN1bHRfdHlwZSBidWZmZXJba0J1ZmZlclNp
emVdOworCisgICAgLy8gUmFuZGVuOjpBYnNvcmIgWE9ScyB0aGUgc2VlZCBpbnRvIHN0YXRlLCB3
aGljaCBpcyB0aGVuIG1peGVkIGJ5IGEgY2FsbAorICAgIC8vIHRvIFJhbmRlbjo6R2VuZXJhdGUu
IFNlZWRpbmcgd2l0aCBvbmx5IHRoZSBwcm92aWRlZCBlbnRyb3B5IGlzIHByZWZlcnJlZAorICAg
IC8vIHRvIHVzaW5nIGFuIGFyYml0cmFyeSBnZW5lcmF0ZSgpIGNhbGwsIHNvIHVzZSBbcmFuZC5y
ZXEuc2VlZF9zZXFdCisgICAgLy8gc2l6ZSBhcyBhIHByb3h5IGZvciB0aGUgbnVtYmVyIG9mIGVu
dHJvcHkgdW5pdHMgdGhhdCBjYW4gYmUgZ2VuZXJhdGVkCisgICAgLy8gd2l0aG91dCByZWx5aW5n
IG9uIHNlZWQgc2VxdWVuY2UgbWl4aW5nLi4uCisgICAgY29uc3Qgc2l6ZV90IGVudHJvcHlfc2l6
ZSA9IHNlcS5zaXplKCk7CisgICAgaWYgKGVudHJvcHlfc2l6ZSA8IGtCdWZmZXJTaXplKSB7Cisg
ICAgICAvLyAuLi4gYW5kIG9ubHkgcmVxdWVzdCB0aGF0IG1hbnkgdmFsdWVzLCBvciAyNTYtYml0
cywgd2hlbiB1bnNwZWNpZmllZC4KKyAgICAgIGNvbnN0IHNpemVfdCByZXF1ZXN0ZWRfZW50cm9w
eSA9IChlbnRyb3B5X3NpemUgPT0gMCkgPyA4dSA6IGVudHJvcHlfc2l6ZTsKKyAgICAgIHN0ZDo6
ZmlsbChzdGQ6OmJlZ2luKGJ1ZmZlcikgKyByZXF1ZXN0ZWRfZW50cm9weSwgc3RkOjplbmQoYnVm
ZmVyKSwgMCk7CisgICAgICBzZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihidWZmZXIpLCBzdGQ6OmJl
Z2luKGJ1ZmZlcikgKyByZXF1ZXN0ZWRfZW50cm9weSk7CisgICAgICAvLyBUaGUgUmFuZGVuIHBh
cGVyIHN1Z2dlc3RzIHByZWZlcmVudGlhbGx5IGluaXRpYWxpemluZyBldmVuLW51bWJlcmVkCisg
ICAgICAvLyAxMjgtYml0IHZlY3RvcnMgb2YgdGhlIHJhbmRlbiBzdGF0ZSAodGhlcmUgYXJlIDE2
IHN1Y2ggdmVjdG9ycykuCisgICAgICAvLyBUaGUgc2VlZCBkYXRhIGlzIG1lcmdlZCBpbnRvIHRo
ZSBzdGF0ZSBvZmZzZXQgYnkgMTI4LWJpdHMsIHdoaWNoCisgICAgICAvLyBpbXBsaWVzIHByZWZl
cmluZyBzZWVkIGJ5dGVzIFsxNi4uMzEsIC4uLiwgMjA4Li4yMjNdLiBTaW5jZSB0aGUKKyAgICAg
IC8vIGJ1ZmZlciBpcyAzMi1iaXQgdmFsdWVzLCB3ZSBzd2FwIHRoZSBjb3JyZXNwb25kaW5nIGJ1
ZmZlciBwb3NpdGlvbnMgaW4KKyAgICAgIC8vIDEyOC1iaXQgY2h1bmtzLgorICAgICAgc2l6ZV90
IGRzdCA9IGtCdWZmZXJTaXplOworICAgICAgd2hpbGUgKGRzdCA+IDcpIHsKKyAgICAgICAgLy8g
bGVhdmUgdGhlIG9kZCBidWNrZXQgYXMtaXMuCisgICAgICAgIGRzdCAtPSA0OworICAgICAgICBz
aXplX3Qgc3JjID0gZHN0ID4+IDE7CisgICAgICAgIC8vIHN3YXAgMTI4LWJpdHMgaW50byB0aGUg
ZXZlbiBidWNrZXQKKyAgICAgICAgc3RkOjpzd2FwKGJ1ZmZlclstLWRzdF0sIGJ1ZmZlclstLXNy
Y10pOworICAgICAgICBzdGQ6OnN3YXAoYnVmZmVyWy0tZHN0XSwgYnVmZmVyWy0tc3JjXSk7Cisg
ICAgICAgIHN0ZDo6c3dhcChidWZmZXJbLS1kc3RdLCBidWZmZXJbLS1zcmNdKTsKKyAgICAgICAg
c3RkOjpzd2FwKGJ1ZmZlclstLWRzdF0sIGJ1ZmZlclstLXNyY10pOworICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICBzZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihidWZmZXIpLCBzdGQ6OmVuZChi
dWZmZXIpKTsKKyAgICB9CisgICAgaW1wbF8uQWJzb3JiKGJ1ZmZlciwgc3RhdGVfKTsKKworICAg
IC8vIEdlbmVyYXRlIHdpbGwgYmUgY2FsbGVkIHdoZW4gb3BlcmF0b3IoKSBpcyBjYWxsZWQKKyAg
ICBuZXh0XyA9IGtTdGF0ZVNpemVUOworICB9CisKKyAgdm9pZCBkaXNjYXJkKHVpbnQ2NF90IGNv
dW50KSB7CisgICAgdWludDY0X3Qgc3RlcCA9IHN0ZDo6bWluPHVpbnQ2NF90PihrU3RhdGVTaXpl
VCAtIG5leHRfLCBjb3VudCk7CisgICAgY291bnQgLT0gc3RlcDsKKworICAgIGNvbnN0ZXhwciB1
aW50NjRfdCBrUmF0ZVQgPSBrU3RhdGVTaXplVCAtIGtDYXBhY2l0eVQ7CisgICAgd2hpbGUgKGNv
dW50ID4gMCkgeworICAgICAgbmV4dF8gPSBrQ2FwYWNpdHlUOworICAgICAgaW1wbF8uR2VuZXJh
dGUoc3RhdGVfKTsKKyAgICAgIHN0ZXAgPSBzdGQ6Om1pbjx1aW50NjRfdD4oa1JhdGVULCBjb3Vu
dCk7CisgICAgICBjb3VudCAtPSBzdGVwOworICAgIH0KKyAgICBuZXh0XyArPSBzdGVwOworICB9
CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHJhbmRlbl9lbmdpbmUmIG90aGVyKSBjb25zdCB7
CisgICAgcmV0dXJuIG5leHRfID09IG90aGVyLm5leHRfICYmCisgICAgICAgICAgIHN0ZDo6ZXF1
YWwoc3RkOjpiZWdpbihzdGF0ZV8pLCBzdGQ6OmVuZChzdGF0ZV8pLAorICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6YmVnaW4ob3RoZXIuc3RhdGVfKSk7CisgIH0KKworICBib29sIG9wZXJhdG9y
IT0oY29uc3QgcmFuZGVuX2VuZ2luZSYgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0
cz4KKyAgZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0b3I8
PCgKKyAgICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3MsICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgY29uc3QgcmFuZGVuX2VuZ2luZTxUPiYgZW5n
aW5lKSB7ICAgICAgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgdXNpbmcgbnVt
ZXJpY190eXBlID0KKyAgICAgICAgdHlwZW5hbWUgcmFuZG9tX2ludGVybmFsOjpzdHJlYW1fZm9y
bWF0X3R5cGU8cmVzdWx0X3R5cGU+Ojp0eXBlOworICAgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50
ZXJuYWw6Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZlcihvcyk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBlbGVtIDogZW5naW5lLnN0YXRlXykgeworICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCBgZWxl
bWAgaXMgYHVpbnQ4X3RgLCBpdCBtdXN0IGJlIGNhc3QgdG8gc29tZXRoaW5nCisgICAgICAvLyBs
YXJnZXIgc28gdGhhdCBpdCBwcmludHMgYXMgYW4gaW50ZWdlciByYXRoZXIgdGhhbiBhIGNoYXJh
Y3Rlci4gRm9yCisgICAgICAvLyBzaW1wbGljaXR5LCBhcHBseSB0aGUgY2FzdCBhbGwgY2lyY3Vt
c3RhbmNlcy4KKyAgICAgIG9zIDw8IHN0YXRpY19jYXN0PG51bWVyaWNfdHlwZT4oZWxlbSkgPDwg
b3MuZmlsbCgpOworICAgIH0KKyAgICBvcyA8PCBlbmdpbmUubmV4dF87CisgICAgcmV0dXJuIG9z
OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+CisgIGZyaWVu
ZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPj4oCisgICAgICBz
dGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUv
cmVmZXJlbmNlcykKKyAgICAgIHJhbmRlbl9lbmdpbmU8VD4mIGVuZ2luZSkgeyAgICAgICAgICAg
ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHVzaW5nIG51bWVyaWNfdHlwZSA9
CisgICAgICAgIHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6c3RyZWFtX2Zvcm1hdF90eXBlPHJl
c3VsdF90eXBlPjo6dHlwZTsKKyAgICByZXN1bHRfdHlwZSBzdGF0ZVtrU3RhdGVTaXplVF07Cisg
ICAgc2l6ZV90IG5leHQ7CisgICAgZm9yIChhdXRvJiBlbGVtIDogc3RhdGUpIHsKKyAgICAgIC8v
IEl0IGlzIG5vdCBwb3NzaWJsZSB0byByZWFkIHVpbnQ4X3QgZnJvbSB3aWRlIHN0cmVhbXMsIHNv
IGl0IGlzCisgICAgICAvLyBuZWNlc3NhcnkgdG8gcmVhZCBhIHdpZGVyIHR5cGUgYW5kIHRoZW4g
Y2FzdCBpdCB0byB1aW50OF90LgorICAgICAgbnVtZXJpY190eXBlIHZhbHVlOworICAgICAgaXMg
Pj4gdmFsdWU7CisgICAgICBlbGVtID0gc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KHZhbHVlKTsK
KyAgICB9CisgICAgaXMgPj4gbmV4dDsKKyAgICBpZiAoaXMuZmFpbCgpKSB7CisgICAgICByZXR1
cm4gaXM7CisgICAgfQorICAgIHN0ZDo6bWVtY3B5KGVuZ2luZS5zdGF0ZV8sIHN0YXRlLCBzaXpl
b2YoZW5naW5lLnN0YXRlXykpOworICAgIGVuZ2luZS5uZXh0XyA9IG5leHQ7CisgICAgcmV0dXJu
IGlzOworICB9CisKKyBwcml2YXRlOgorICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3RhdGVT
aXplVCA9CisgICAgICBSYW5kZW46OmtTdGF0ZUJ5dGVzIC8gc2l6ZW9mKHJlc3VsdF90eXBlKTsK
KyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga0NhcGFjaXR5VCA9CisgICAgICBSYW5kZW46OmtD
YXBhY2l0eUJ5dGVzIC8gc2l6ZW9mKHJlc3VsdF90eXBlKTsKKworICAvLyBGaXJzdCBrQ2FwYWNp
dHlUIGFyZSBgaW5uZXInLCB0aGUgb3RoZXJzIGFyZSBhY2Nlc3NpYmxlIHJhbmRvbSBiaXRzLgor
ICBhbGlnbmFzKDE2KSByZXN1bHRfdHlwZSBzdGF0ZV9ba1N0YXRlU2l6ZVRdOworICBzaXplX3Qg
bmV4dF87ICAvLyBpbmRleCB3aXRoaW4gc3RhdGVfCisgIFJhbmRlbiBpbXBsXzsKK307CisKK30g
IC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNl
bmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0VOR0lORV9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9lbmdpbmVfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9pbnRlcm5hbC9yYW5kZW5fZW5naW5lX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhlNzY4NWJk
ZGFkNDc0Mzk0ZTZjZTY5ZGMxZGRlNmIyNTdkZWY0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fZW5naW5lX3Rlc3QuY2MKQEAgLTAsMCArMSw2NTYgQEAK
Ky8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2VuZ2luZS5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPGJpdHNldD4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3N0cmVh
bT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJh
YnNsL3JhbmRvbS9pbnRlcm5hbC9leHBsaWNpdF9zZWVkX3NlcS5oIgorI2luY2x1ZGUgImFic2wv
c3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC90aW1lL2Nsb2NrLmgiCisKKyNkZWZp
bmUgVVBEQVRFX0dPTERFTiAwCisKK3VzaW5nIHJhbmRlbl91NjQgPSBhYnNsOjpyYW5kb21faW50
ZXJuYWw6OnJhbmRlbl9lbmdpbmU8dWludDY0X3Q+OwordXNpbmcgcmFuZGVuX3UzMiA9IGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTx1aW50MzJfdD47Cit1c2luZyBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OkV4cGxpY2l0U2VlZFNlcTsKKworbmFtZXNwYWNlIHsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFVJbnRUeXBlPgorY2xhc3MgUmFuZGVuRW5naW5lVHlwZWRUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKwordXNpbmcgVUludFR5cGVzID0gOjp0ZXN0aW5nOjpU
eXBlczx1aW50OF90LCB1aW50MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90PjsKKworVFlQRURfVEVT
VF9TVUlURShSYW5kZW5FbmdpbmVUeXBlZFRlc3QsIFVJbnRUeXBlcyk7CisKK1RZUEVEX1RFU1Qo
UmFuZGVuRW5naW5lVHlwZWRUZXN0LCBWZXJpZnlSZXNlZWRDaGFuZ2VzQWxsVmFsdWVzKSB7Cisg
IHVzaW5nIHJhbmRlbiA9IHR5cGVuYW1lIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2Vu
Z2luZTxUeXBlUGFyYW0+OworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIHJhbmRlbjo6
cmVzdWx0X3R5cGU7CisKKyAgY29uc3Qgc2l6ZV90IGtOdW1PdXRwdXRzID0gKHNpemVvZihyYW5k
ZW4pICogMiAvIHNpemVvZihUeXBlUGFyYW0pKSArIDE7CisgIHJhbmRlbiBlbmdpbmU7CisKKyAg
Ly8gTVNWQyBlbWl0cyBlcnJvciAyNzE5IHdpdGhvdXQgdGhlIHVzZSBvZiBzdGQ6OnJlZiBiZWxv
dy4KKyAgLy8gICogZm9ybWFsIHBhcmFtZXRlciB3aXRoIF9fZGVjbHNwZWMoYWxpZ24oJyMnKSkg
d29uJ3QgYmUgYWxpZ25lZAorCisgIHsKKyAgICBzdGQ6OnNlZWRfc2VxIHNlcTF7MSwgMiwgMywg
NCwgNSwgNiwgN307CisgICAgZW5naW5lLnNlZWQoc2VxMSk7CisgIH0KKyAgcmVzdWx0X3R5cGUg
YVtrTnVtT3V0cHV0c107CisgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdpbihhKSwgc3RkOjplbmQo
YSksIHN0ZDo6cmVmKGVuZ2luZSkpOworCisgIHsKKyAgICBzdGQ6OnJhbmRvbV9kZXZpY2UgcmQ7
CisgICAgc3RkOjpzZWVkX3NlcSBzZXEye3JkKCksIHJkKCksIHJkKCl9OworICAgIGVuZ2luZS5z
ZWVkKHNlcTIpOworICB9CisgIHJlc3VsdF90eXBlIGJba051bU91dHB1dHNdOworICBzdGQ6Omdl
bmVyYXRlKHN0ZDo6YmVnaW4oYiksIHN0ZDo6ZW5kKGIpLCBzdGQ6OnJlZihlbmdpbmUpKTsKKwor
ICAvLyBUZXN0IHRoYXQgZ2VuZXJhdGVkIHNlcXVlbmNlIGNoYW5nZWQgYXMgc2VxdWVuY2Ugb2Yg
Yml0cywgaS5lLiBpZiBhYm91dAorICAvLyBoYWxmIG9mIHRoZSBiaXRlcyB3ZXJlIGZsaXBwZWQg
YmV0d2VlbiB0d28gbm9uLWNvcnJlbGF0ZWQgdmFsdWVzLgorICBzaXplX3QgY2hhbmdlZF9iaXRz
ID0gMDsKKyAgc2l6ZV90IHVuY2hhbmdlZF9iaXRzID0gMDsKKyAgc2l6ZV90IHRvdGFsX3NldCA9
IDA7CisgIHNpemVfdCB0b3RhbF9iaXRzID0gMDsKKyAgc2l6ZV90IGVxdWFsX2NvdW50ID0gMDsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtT3V0cHV0czsgKytpKSB7CisgICAgZXF1YWxf
Y291bnQgKz0gKGFbaV0gPT0gYltpXSkgPyAxIDogMDsKKyAgICBzdGQ6OmJpdHNldDxzaXplb2Yo
cmVzdWx0X3R5cGUpICogOD4gYml0c2V0KGFbaV0gXiBiW2ldKTsKKyAgICBjaGFuZ2VkX2JpdHMg
Kz0gYml0c2V0LmNvdW50KCk7CisgICAgdW5jaGFuZ2VkX2JpdHMgKz0gYml0c2V0LnNpemUoKSAt
IGJpdHNldC5jb3VudCgpOworCisgICAgc3RkOjpiaXRzZXQ8c2l6ZW9mKHJlc3VsdF90eXBlKSAq
IDg+IGFfc2V0KGFbaV0pOworICAgIHN0ZDo6Yml0c2V0PHNpemVvZihyZXN1bHRfdHlwZSkgKiA4
PiBiX3NldChiW2ldKTsKKyAgICB0b3RhbF9zZXQgKz0gYV9zZXQuY291bnQoKSArIGJfc2V0LmNv
dW50KCk7CisgICAgdG90YWxfYml0cyArPSAyICogOCAqIHNpemVvZihyZXN1bHRfdHlwZSk7Cisg
IH0KKyAgLy8gT24gYXZlcmFnZSwgaGFsZiB0aGUgYml0cyBhcmUgY2hhbmdlZCBiZXR3ZWVuIHR3
byBjYWxscy4KKyAgRVhQRUNUX0xFKGNoYW5nZWRfYml0cywgMC42MCAqIChjaGFuZ2VkX2JpdHMg
KyB1bmNoYW5nZWRfYml0cykpOworICBFWFBFQ1RfR0UoY2hhbmdlZF9iaXRzLCAwLjQwICogKGNo
YW5nZWRfYml0cyArIHVuY2hhbmdlZF9iaXRzKSk7CisKKyAgLy8gVmVyaWZ5IHVzaW5nIGEgcXVp
Y2sgbm9ybWFsLWFwcHJveGltYXRpb24gdG8gdGhlIGJpbm9taWFsLgorICBFWFBFQ1RfTkVBUih0
b3RhbF9zZXQsIHRvdGFsX2JpdHMgKiAwLjUsIDQgKiBzdGQ6OnNxcnQodG90YWxfYml0cykpCisg
ICAgICA8PCAiQCIgPDwgdG90YWxfc2V0IC8gc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbF9iaXRz
KTsKKworICAvLyBBbHNvLCBBW2ldID09IEJbaV0gd2l0aCBwcm9iYWJpbGl0eSAoMS9yYW5nZSkg
KiBOLgorICAvLyBHaXZlIHRoaXMgYSBwcmV0dHkgd2lkZSBsYXRpdHVkZSwgdGhvdWdoLgorICBj
b25zdCBkb3VibGUga0V4cGVjdGVkID0ga051bU91dHB1dHMgLyAoMS4wICogc2l6ZW9mKHJlc3Vs
dF90eXBlKSAqIDgpOworICBFWFBFQ1RfTEUoZXF1YWxfY291bnQsIDEuMCArIGtFeHBlY3RlZCk7
Cit9CisKKy8vIE51bWJlciBvZiB2YWx1ZXMgdGhhdCBuZWVkcyB0byBiZSBjb25zdW1lZCB0byBj
bGVhbiB0d28gc2l6ZXMgb2YgYnVmZmVyCisvLyBhbmQgdHJpZ2dlciB0aGlyZCByZWZyZXNoLiAo
c2xpZ2h0bHkgb3ZlcmVzdGltYXRlcyB0aGUgYWN0dWFsIHN0YXRlIHNpemUpLgorY29uc3RleHBy
IHNpemVfdCBrVHdvQnVmZmVyVmFsdWVzID0gc2l6ZW9mKHJhbmRlbl91NjQpIC8gc2l6ZW9mKHVp
bnQxNl90KSArIDE7CisKK1RZUEVEX1RFU1QoUmFuZGVuRW5naW5lVHlwZWRUZXN0LCBWZXJpZnlE
aXNjYXJkKSB7CisgIHVzaW5nIHJhbmRlbiA9IHR5cGVuYW1lIGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6cmFuZGVuX2VuZ2luZTxUeXBlUGFyYW0+OworCisgIGZvciAoc2l6ZV90IG51bV91c2VkID0g
MDsgbnVtX3VzZWQgPCBrVHdvQnVmZmVyVmFsdWVzOyArK251bV91c2VkKSB7CisgICAgcmFuZGVu
IGVuZ2luZV91c2VkOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX3VzZWQ7ICsraSkg
eworICAgICAgZW5naW5lX3VzZWQoKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBudW1fZGlz
Y2FyZCA9IDA7IG51bV9kaXNjYXJkIDwga1R3b0J1ZmZlclZhbHVlczsKKyAgICAgICAgICsrbnVt
X2Rpc2NhcmQpIHsKKyAgICAgIHJhbmRlbiBlbmdpbmUxID0gZW5naW5lX3VzZWQ7CisgICAgICBy
YW5kZW4gZW5naW5lMiA9IGVuZ2luZV91c2VkOworICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1fZGlzY2FyZDsgKytpKSB7CisgICAgICAgIGVuZ2luZTEoKTsKKyAgICAgIH0KKyAgICAg
IGVuZ2luZTIuZGlzY2FyZChudW1fZGlzY2FyZCk7CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGtUd29CdWZmZXJWYWx1ZXM7ICsraSkgeworICAgICAgICBjb25zdCBhdXRvIHIxID0gZW5n
aW5lMSgpOworICAgICAgICBjb25zdCBhdXRvIHIyID0gZW5naW5lMigpOworICAgICAgICBBU1NF
UlRfRVEocjEsIHIyKSA8PCAidXNlZD0iIDw8IG51bV91c2VkIDw8ICIgZGlzY2FyZD0iIDw8IG51
bV9kaXNjYXJkOworICAgICAgfQorICAgIH0KKyAgfQorfQorCitUWVBFRF9URVNUKFJhbmRlbkVu
Z2luZVR5cGVkVGVzdCwgU3RyZWFtT3BlcmF0b3JzUmVzdWx0KSB7CisgIHVzaW5nIHJhbmRlbiA9
IHR5cGVuYW1lIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTxUeXBlUGFyYW0+
OworICBzdGQ6Ondvc3RyaW5nc3RyZWFtIG9zOworICBzdGQ6Ondpc3RyaW5nc3RyZWFtIGlzOwor
ICByYW5kZW4gZW5naW5lOworCisgIEVYUEVDVF9FUSgmKG9zIDw8IGVuZ2luZSksICZvcyk7Cisg
IEVYUEVDVF9FUSgmKGlzID4+IGVuZ2luZSksICZpcyk7Cit9CisKK1RZUEVEX1RFU1QoUmFuZGVu
RW5naW5lVHlwZWRUZXN0LCBTdHJlYW1TZXJpYWxpemF0aW9uKSB7CisgIHVzaW5nIHJhbmRlbiA9
IHR5cGVuYW1lIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2VuZ2luZTxUeXBlUGFyYW0+
OworCisgIGZvciAoc2l6ZV90IGRpc2NhcmQgPSAwOyBkaXNjYXJkIDwga1R3b0J1ZmZlclZhbHVl
czsgKytkaXNjYXJkKSB7CisgICAgRXhwbGljaXRTZWVkU2VxIHNlZWRfc2VxdWVuY2V7MTIsIDM0
LCA1Nn07CisgICAgcmFuZGVuIGVuZ2luZShzZWVkX3NlcXVlbmNlKTsKKyAgICBlbmdpbmUuZGlz
Y2FyZChkaXNjYXJkKTsKKworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgICBzdHJl
YW0gPDwgZW5naW5lOworCisgICAgcmFuZGVuIG5ld19lbmdpbmU7CisgICAgc3RyZWFtID4+IG5l
d19lbmdpbmU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA2NDsgKytpKSB7CisgICAgICBF
WFBFQ1RfRVEoZW5naW5lKCksIG5ld19lbmdpbmUoKSkgPDwgIiAiIDw8IGk7CisgICAgfQorICB9
Cit9CisKK2NvbnN0ZXhwciBzaXplX3Qga051bUdvbGRlbk91dHB1dHMgPSAxMjc7CisKKy8vIFRo
aXMgdGVzdCBpcyBjaGVja2luZyBpZiByYW5kZW5fZW5naW5lIGlzIG1lZXRzIGludGVyZmFjZSBy
ZXF1aXJlbWVudHMKKy8vIGRlZmluZWQgaW4gW3JhbmQucmVxLnVyYmddLgorVFlQRURfVEVTVChS
YW5kZW5FbmdpbmVUeXBlZFRlc3QsIFJhbmRvbU51bWJlckVuZ2luZUludGVyZmFjZSkgeworICB1
c2luZyByYW5kZW4gPSB0eXBlbmFtZSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnJhbmRlbl9lbmdp
bmU8VHlwZVBhcmFtPjsKKworICB1c2luZyBFID0gcmFuZGVuOworICB1c2luZyBUID0gdHlwZW5h
bWUgRTo6cmVzdWx0X3R5cGU7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvcHlfY29uc3Ry
dWN0aWJsZTxFPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgInJhbmRlbl9lbmdpbmUgbXVzdCBi
ZSBjb3B5IGNvbnN0cnVjdGlibGUiKTsKKworICBzdGF0aWNfYXNzZXJ0KGFic2w6OmlzX2NvcHlf
YXNzaWduYWJsZTxFPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgInJhbmRlbl9lbmdpbmUgbXVz
dCBiZSBjb3B5IGFzc2lnbmFibGUiKTsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbW92ZV9j
b25zdHJ1Y3RpYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAicmFuZGVuX2VuZ2luZSBt
dXN0IGJlIG1vdmUgY29uc3RydWN0aWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoYWJzbDo6aXNf
bW92ZV9hc3NpZ25hYmxlPEU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAicmFuZGVuX2VuZ2lu
ZSBtdXN0IGJlIG1vdmUgYXNzaWduYWJsZSIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxFPigpKCkpLCBUPjo6dmFsdWUsCisgICAgICAgICAg
ICAgICAgInJldHVybiB0eXBlIG9mIG9wZXJhdG9yKCkgbXVzdCBiZSByZXN1bHRfdHlwZSIpOwor
CisgIC8vIE5hbWVzIGFmdGVyIGRlZmluaXRpb24gb2YgW3JhbmQucmVxLnVyYmddIGluIEMrKyBz
dGFuZGFyZC4KKyAgLy8gZSB1cyBhIHZhbHVlIG9mIEUKKyAgLy8gdiBpcyBhIGx2YWx1ZSBvZiBF
CisgIC8vIHgsIHkgYXJlIHBvc3NpYmx5IGNvbnN0IHZhbHVlcyBvZiBFCisgIC8vIHMgaXMgYSB2
YWx1ZSBvZiBUCisgIC8vIHEgaXMgYSB2YWx1ZSBzYXRpc2Z5aW5nIHJlcXVpcmVtZW50cyBvZiBz
ZWVkX3NlcXVlbmNlCisgIC8vIHogaXMgYSB2YWx1ZSBvZiB0eXBlIHVuc2lnbmVkIGxvbmcgbG9u
ZworICAvLyBvcyBpcyBhIHNvbWUgc3BlY2lhbGl6YXRpb24gb2YgYmFzaWNfb3N0cmVhbQorICAv
LyBpcyBpcyBhIHNvbWUgc3BlY2lhbGl6YXRpb24gb2YgYmFzaWNfaXN0cmVhbQorCisgIEUgZSwg
djsKKyAgY29uc3QgRSB4LCB5OworICBUIHMgPSAxOworICBzdGQ6OnNlZWRfc2VxIHF7MSwgMiwg
M307CisgIHVuc2lnbmVkIGxvbmcgbG9uZyB6ID0gMTsgIC8vIE5PTElOVChydW50aW1lL2ludCkK
KyAgc3RkOjp3b3N0cmluZ3N0cmVhbSBvczsKKyAgc3RkOjp3aXN0cmluZ3N0cmVhbSBpczsKKwor
ICBFe307CisgIEV7eH07CisgIEV7c307CisgIEV7cX07CisKKyAgZS5zZWVkKCk7CisKKyAgLy8g
TVNWQyBlbWl0cyBlcnJvciAyNzE4IHdoZW4gdXNpbmcgRVhQRUNUX0VRKGUsIHgpCisgIC8vICAq
IGFjdHVhbCBwYXJhbWV0ZXIgd2l0aCBfX2RlY2xzcGVjKGFsaWduKCcjJykpIHdvbid0IGJlIGFs
aWduZWQKKyAgRVhQRUNUX1RSVUUoZSA9PSB4KTsKKworICBlLnNlZWQocSk7CisgIHsKKyAgICBF
IHRtcChxKTsKKyAgICBFWFBFQ1RfVFJVRShlID09IHRtcCk7CisgIH0KKworICBlKCk7CisgIHsK
KyAgICBFIHRtcChxKTsKKyAgICBFWFBFQ1RfVFJVRShlICE9IHRtcCk7CisgIH0KKworICBlLmRp
c2NhcmQoeik7CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoeCA9PSB5
KSwgYm9vbD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZSBvZiBvcGVyYXRv
cj09IG11c3QgYmUgYm9vbCIpOworCisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0
eXBlKHggIT0geSksIGJvb2w+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGUg
b2Ygb3BlcmF0b3I9PSBtdXN0IGJlIGJvb2wiKTsKK30KKworVFlQRURfVEVTVChSYW5kZW5Fbmdp
bmVUeXBlZFRlc3QsIFJhbmRlbkVuZ2luZVNGSU5BRVRlc3QpIHsKKyAgdXNpbmcgcmFuZGVuID0g
dHlwZW5hbWUgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpyYW5kZW5fZW5naW5lPFR5cGVQYXJhbT47
CisgIHVzaW5nIHJlc3VsdF90eXBlID0gdHlwZW5hbWUgcmFuZGVuOjpyZXN1bHRfdHlwZTsKKwor
ICB7CisgICAgcmFuZGVuIGVuZ2luZShyZXN1bHRfdHlwZSgxKSk7CisgICAgZW5naW5lLnNlZWQo
cmVzdWx0X3R5cGUoMSkpOworICB9CisKKyAgeworICAgIHJlc3VsdF90eXBlIG4gPSAxOworICAg
IHJhbmRlbiBlbmdpbmUobik7CisgICAgZW5naW5lLnNlZWQobik7CisgIH0KKworICB7CisgICAg
cmFuZGVuIGVuZ2luZSgxKTsKKyAgICBlbmdpbmUuc2VlZCgxKTsKKyAgfQorCisgIHsKKyAgICBp
bnQgbiA9IDE7CisgICAgcmFuZGVuIGVuZ2luZShuKTsKKyAgICBlbmdpbmUuc2VlZChuKTsKKyAg
fQorCisgIHsKKyAgICBzdGQ6OnNlZWRfc2VxIHNlZWRfc2VxOworICAgIHJhbmRlbiBlbmdpbmUo
c2VlZF9zZXEpOworICAgIGVuZ2luZS5zZWVkKHNlZWRfc2VxKTsKKyAgfQorCisgIHsKKyAgICBy
YW5kZW4gZW5naW5le3N0ZDo6c2VlZF9zZXEoKX07CisgICAgZW5naW5lLnNlZWQoc3RkOjpzZWVk
X3NlcSgpKTsKKyAgfQorfQorCitURVNUKFJhbmRlblRlc3QsIFZlcmlmeUdvbGRlblJhbmRlbjY0
RGVmYXVsdCkgeworICBjb25zdGV4cHIgdWludDY0X3Qga0dvbGRlbltrTnVtR29sZGVuT3V0cHV0
c10gPSB7CisgICAgICAweGMzYzE0ZjEzNGU0MzM5NzcsIDB4ZGRhOWY0N2NkOTA0MTBlZSwgMHg4
ODdiZjMwODdmZDhjYTEwLAorICAgICAgMHhmMGI3ODBmNTQ1YzcyOTEyLCAweDE1ZGJiMWQzNzY5
NjU5OWYsIDB4MzBlYzYzYmFmZjNjNmQ1OSwKKyAgICAgIDB4YjI5ZjczNjA2ZjdmMjBhNiwgMHgw
MjgwOGEzMTZmNDlhNTRjLCAweDNiOGZlYWY5ZDVjOGU1MGUsCisgICAgICAweDljYmY2MDVlM2Zk
OWRlOGEsIDB4Yzk3MGFlMWE3ODE4M2JiYiwgMHhkOGIyZmZkMzU2MzAxZWQ1LAorICAgICAgMHhm
NGIzMjdmZTBmYzczYzM3LCAweGNkZmQ4ZDc2ZWI4ZjlhMTksIDB4YzNhNTA2ZWI5MTQyMGM5ZCwK
KyAgICAgIDB4ZDVhZjA1ZGQzZWZmOTU1NiwgMHg0OGRiMWJiNzhmODNjNGExLCAweDcwMjM5MjBl
MGQ2YmZlOGMsCisgICAgICAweDU4ZDM1NzU4MzQ5NTZkNDIsIDB4ZWQxZWY0YzI2Yjg3Yjg0MCwg
MHg4ZWVmMzJhMjNlMGIyZGYzLAorICAgICAgMHg0OTdjYWJmMzQzMTE1NGZjLCAweDRlMjQzNzA1
NzAwMjlhOGIsIDB4ZDg4YjU3NDlmMDkwZTVlYSwKKyAgICAgIDB4YzY1MWE1ODJhOTcwNjkyZiwg
MHg3OGZjZWMyY2JiNjM0MmY1LCAweDQ2M2NiNzQ1NjEyZjU1ZGIsCisgICAgICAweDM1MmVlNGFk
MTgxNmFmZTMsIDB4MDI2ZmYzNzRjMTAxZGE3ZSwgMHg4MTFlZjA4MjFjM2RlODUxLAorICAgICAg
MHg2ZjdlNjE2NzA0YzRmYTU5LCAweGEwNjYwMzc5OTkyZDU4ZmMsIDB4MDRiMGEzNzRhM2I3OTVj
NywKKyAgICAgIDB4OTE1ZjM0NDU2ODVkYTc5OCwgMHgyNjgwMmE4YWM3NjU3MWNlLCAweDQ2NjMz
NTI1MzNjZTE4ODIsCisgICAgICAweGI5ZmRlZmI0YTI0ZGM3MzgsIDB4NTU4OGJhM2E0ZDZlNmM1
MSwgMHhhMjEwMWE0MmQzNWYxOTU2LAorICAgICAgMHg2MDcxOTVhNWUyMDBmNWZkLCAweDdlMTAw
MzA4ZjMyOTA3NjQsIDB4ZTFlNWUwM2M3NTljMDcwOSwKKyAgICAgIDB4MDgyNTcyY2M1ZGE2NjA2
ZiwgMHhjYmNmNTg1Mzk5ZTQzMmYxLCAweGU4YTJiZTRmODMzNWQ4ZjEsCisgICAgICAweDA5MDQ0
NjlhY2JmZWU4ZjIsIDB4ZjA4YmQzMWI2ZGFlY2Q1MSwgMHgwOGU4YTFmMWE2OWRhNjlhLAorICAg
ICAgMHg2NTQyYTIwYWFkNTdiZmY1LCAweDJlOTcwNWJiMDUzZDZiNDYsIDB4ZGEyZmM5ZGIwNzEz
YzM5MSwKKyAgICAgIDB4NzhlM2E4MTAyMTNiNmZmYiwgMHhkYzE2YTU5Y2RkODVmOGE2LCAweGMw
OTMyNzE4Y2Q1NTc4MWYsCisgICAgICAweGI5YmZiMjljMmIyMGJmZTUsIDB4Yjk3Mjg5YzFiZTBm
MmY5YywgMHhjMGEyYTBlNDAzYTg5MmQ0LAorICAgICAgMHg1NTI0YmI4MzQ3NzE0MzViLCAweDgy
NjVkYTNkMzlkMWE3NTAsIDB4ZmY0YWYzYWI4ZDFiNzhjNSwKKyAgICAgIDB4ZjBlYzVmNDI0YmNh
ZDc3ZiwgMHg2NmU0NTVmNjI3NDk1MTg5LCAweGM4MmQzMTIwYjU3ZTMyNzAsCisgICAgICAweDM0
MjRlNDdkYzIyNTk2ZTMsIDB4YmMwYzk1MTI5Y2NlZGNkZCwgMHhjMTkxYzU5NWFmYzRkY2JmLAor
ICAgICAgMHgxMjAzOTJiZDJiYjcwOTM5LCAweDdmOTA2NTBlYTZjZDZhYjQsIDB4NzI4NzQ5MTgz
MjY5NWFkMywKKyAgICAgIDB4YTdjOGZhYzVhNzkxN2ViMCwgMHhkMDg4Y2I5NDE4YmUwMzYxLCAw
eDdjMWJmOTgzOWM3YzFjZTUsCisgICAgICAweGUyZTk5MWZhNThlMWU3OWUsIDB4Nzg1NjVjZGVm
ZDI4YzRhZCwgMHg3MzUxYjlmZWY5OGJhZmFkLAorICAgICAgMHgyYTllYWMyOGIwOGM5NmJmLCAw
eDZjNGYxNzk2OTZjYjIyMjUsIDB4MTNhNjg1ODYxYmFiODdlMCwKKyAgICAgIDB4NjRjNmRlNWFh
MDUwMTk3MSwgMHgzMDUzNzQyNWNhYzcwOTkxLCAweDAxNTkwZDlkYzZjNTMyYjcsCisgICAgICAw
eDdlMDVlM2FhOGVjNzIwZGMsIDB4NzRhMDdkOWM1NGUzZTYzZiwgMHg3MzgxODQzODhmM2JjMWQy
LAorICAgICAgMHgyNmZmZGM1MDY3YmUzYWNiLCAweDZiY2RmMTg1NTYxZjI1NWYsIDB4YTBlYWYy
ZTFjZjk5YjFjNiwKKyAgICAgIDB4MTcxZGY4MTkzNGY2ODYwNCwgMHg3ZWE1YTIxNjY1NjgzZTVh
LCAweDVkMWNiMDIwNzViYTFjZWEsCisgICAgICAweDk1N2YzOGNiZDIxMjNmZGYsIDB4YmE2MzY0
ZWZmODBkZTAyZiwgMHg2MDZlMGEwZTQxZDQ1MmVlLAorICAgICAgMHg4OTJkODMxN2RlODJmN2Ey
LCAweGU3MDdiMWRiNTBmN2I0M2UsIDB4NGViMjg4MjY3NjZmY2Y1YiwKKyAgICAgIDB4NWEzNjJk
NTZlODBhMDk1MSwgMHg2ZWUyMTdkZjE2NTI3ZDc4LCAweGY2NzM3OTYyYmE2YjIzZGQsCisgICAg
ICAweDQ0M2U2Mzg1N2Q0MDc2Y2EsIDB4NzkwZDlhNWYwNDhhZGZlYiwgMHhkNzk2YjA1MjE1MWVl
OTRkLAorICAgICAgMHgwMzNlZDk1YzEyYjA0YTAzLCAweDhiODMzZmY4NDg5M2RhNWQsIDB4M2Q2
NzI0YjFiYjE1ZWFiOSwKKyAgICAgIDB4OTg3N2M0MjI1MDYxY2E3NiwgMHhkNjhkNjgxMGFkZjc0
ZmIzLCAweDQyZTUzNTJmZTMwY2U5ODksCisgICAgICAweDI2NWI1NjVhNzQzMWZkZTcsIDB4M2Nk
YmY3ZTM1OGRmNGI4YiwgMHgyOTIyYTQ3ZjZkM2U4Nzc5LAorICAgICAgMHg1MmQyMjQyZjY1YjM3
Zjg4LCAweDVkODM2ZDZlMjk1OGQ2YjUsIDB4MjlkNDBmMDA1NjZkNWUyNiwKKyAgICAgIDB4Mjg4
ZGIwZTExMjRiMTRhMCwgMHg2YzA1NjYwOGI3ZDljMWI2LCAweDBiOTQ3MWJkYjhmMTlkMzIsCisg
ICAgICAweDhmYjk0NjUwNGZhYTZjOWQsIDB4ODk0M2E5NDY0NTQwMjUxYywgMHhmZDFmZTI3ZDE0
NGEwOWUwLAorICAgICAgMHhlYTZhYzQ1OGRhMTQxYmRhLCAweDgwNDhmMjE3NjMzZmNlMzYsIDB4
ZmVkYTEzODRhZGU3NGQzMSwKKyAgICAgIDB4NDMzNGI4YjAyZmY3NjEyZiwgMHhkYmM4NDQxZjUy
MjdlMjE2LCAweDA5NmQxMTlhMzYwNWM4NWIsCisgICAgICAweDJiNzJiMzFjMjFiN2Q3ZDB9Owor
CisgIHJhbmRlbl91NjQgZW5naW5lOworI2lmIFVQREFURV9HT0xERU4KKyAgKHZvaWQpa0dvbGRl
bjsgIC8vIFNpbGVuY2Ugd2FybmluZy4KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtR29s
ZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwMTZseCwgIiwgZW5naW5lKCkpOwor
ICAgIGlmIChpICUgMyA9PSAyKSB7CisgICAgICBwcmludGYoIlxuIik7CisgICAgfQorICB9Cisg
IHByaW50ZigiXG5cblxuIik7CisjZWxzZQorICBmb3IgKGNvbnN0IGF1dG8mIGVsZW0gOiBrR29s
ZGVuKSB7CisgICAgRVhQRUNUX0VRKGVsZW0sIGVuZ2luZSgpKTsKKyAgfQorICBlbmdpbmUuc2Vl
ZCgpOworICBmb3IgKGNvbnN0IGF1dG8mIGVsZW0gOiBrR29sZGVuKSB7CisgICAgRVhQRUNUX0VR
KGVsZW0sIGVuZ2luZSgpKTsKKyAgfQorI2VuZGlmCit9CisKK1RFU1QoUmFuZGVuVGVzdCwgVmVy
aWZ5R29sZGVuUmFuZGVuNjRTZWVkZWQpIHsKKyAgY29uc3RleHByIHVpbnQ2NF90IGtHb2xkZW5b
a051bUdvbGRlbk91dHB1dHNdID0geworICAgICAgMHg4M2E5ZTU4Zjk0ZDNkY2Q1LCAweDcwYmJk
ZmYzZDk3OTQ5ZmIsIDB4MDQzODQ4MWY3NDcxYzFiNCwKKyAgICAgIDB4MzRmZGM1OGVlNWZiNTkz
MCwgMHhjZWVlNGYyZDJhOTM3ZDE3LCAweGI1YTI2YTY4ZTQzMmFlYTksCisgICAgICAweDhiNjQ3
NzRhM2ZiNTE3NDAsIDB4ZDg5YWMxZmM3NDI0OWM3NCwgMHgwMzkxMGQxZDIzZmMzZmRmLAorICAg
ICAgMHhkMzhmNjMwODc4YWE4OTdmLCAweDBlZThmMGY1NjE1ZjdlNDQsIDB4OThmNWE1M2RmODI3
OWQ1MiwKKyAgICAgIDB4YjQwM2Y1MmMyNTkzOGQwZSwgMHgyNDAwNzI5OTZlYTZlODM4LCAweGQz
YTc5MTI0NjE5MGZhNjEsCisgICAgICAweGFhZWRkM2RmN2E3YjRmODAsIDB4YzZlYWNhYmUwNWRl
YWY2ZSwgMHhiNzk2N2RkODc5MGVkZjRkLAorICAgICAgMHg5YTBhOGU2N2UwNDlkMjc5LCAweDA0
OTRmNjA2YWViYzIzZTcsIDB4NTk4ZGNkNjg3YmMzZTBlZSwKKyAgICAgIDB4MDEwYWM4MTgwMmQ0
NTJhMSwgMHg2NDA3Yzg3MTYwYWEyODQyLCAweDVhNTZlMjc2NDg2ZjkzYTAsCisgICAgICAweGM4
ODdhMzk5ZDQ2YThmMDIsIDB4OWUxZTYxMDBmZTkzYjc0MCwgMHgxMmQwMmUzMzBmODkwMWY2LAor
ICAgICAgMHhjMzljYTUyYjQ3ZTc5MGI3LCAweGIwYjBhMmZhMTFlODJlNjEsIDB4MTU0MmQ4NDFh
MzAzODA2YSwKKyAgICAgIDB4MWZlNjU5ZmQ3ZDZlOWQ4NiwgMHhiOGM5MGQ4MDc0NjU0MWFjLCAw
eDIzOWQ1NmE1NjY5ZGRjOTQsCisgICAgICAweGQ0MGRiNTdjODEyM2QxM2MsIDB4M2FiYzI0MTQx
NTNhMGRiMCwgMHg5YmFkNjY1NjMwY2I4ZDYxLAorICAgICAgMHgwYmQxZmI5MGVlM2Y0YmJjLCAw
eDhmMGI0ZDdlMDc5YjRlNDIsIDB4ZmEwZmIwZTBlZTU5ZTc5MywKKyAgICAgIDB4NTEwODBiMjgz
ZTA3MTEwMCwgMHgyYzRiOWU3MTUwODFjYzE1LCAweGJlMTBlZDQ5ZGU0OTQxZGYsCisgICAgICAw
eGY4ZWFhYzlkNGIxYjBkMzcsIDB4NGJjY2U0YjU0NjA1ZTEzOSwgMHhhNjQ3MjJiNzY3NjVkZGE2
LAorICAgICAgMHhiOTM3N2Q3MzhjYTI4YWI1LCAweDc3OWZhZDgxYThjY2MxYWYsIDB4NjVjYjNl
ZTYxZmZkM2JhNywKKyAgICAgIDB4ZDc0ZTc5MDg3ODYyODM2ZiwgMHhkMDViOWM1ODRjM2YyNWJm
LCAweDJiYTkzYTQ2OTM1Nzk4MjcsCisgICAgICAweGQ4MTUzMGFmZjA1NDIwY2UsIDB4ZWMwNmNl
YTIxNTQ3ODYyMSwgMHg0YjE3OThhNjc5NmQ2NWFkLAorICAgICAgMHhmMTQyZjNmYjNhNmY2ZmE2
LCAweDAwMmI3YmY3ZTIzN2I1NjAsIDB4ZjQ3ZjI2MDVlZjY1YjRmOCwKKyAgICAgIDB4OTgwNGVj
NTUxN2VmZmMxOCwgMHhhZWQzZDdmOGI3ZDQ4MWNkLCAweDU2NTFjMjRjMWNlMzM4ZDEsCisgICAg
ICAweDNlN2EzODIwOGJmMGEzYzYsIDB4Njc5NmE3YjYxNDUzNGFlZCwgMHgwZDBmM2I4NDgzNTg0
NjBmLAorICAgICAgMHgwZmE1ZmU3NjAwYjE5NTI0LCAweDJiMGNmMzgyNTNmYWFlZGMsIDB4MTBk
ZjkxODgyMzNhOWZkNiwKKyAgICAgIDB4M2ExMDAzMzg4MDEzOGI1OSwgMHg1ZmIwYjBkMjM5NDhl
ODBmLCAweDllNzZmN2IwMmZiZjUzNTAsCisgICAgICAweDA4MTYwNTIzMDRiMWE5ODUsIDB4MzBj
OTg4MGRiNDFmZDIxOCwgMHgxNGFhMzk5YjY1ZTIwZjI4LAorICAgICAgMHhlMTQ1NGE4Y2FjZTc4
N2I0LCAweDMyNWFjOTcxYjZjNmYwZjUsIDB4NzE2YjFhYTI3ODRmM2QzNiwKKyAgICAgIDB4M2Q1
Y2UxNGFjY2ZkMTQ0ZiwgMHg2YzBjOTc3MTBmNjUxNzkyLCAweGJjNWIwZjU5ZmIzMzM1MzIsCisg
ICAgICAweDJhOTBhN2QyMTQwNDcwYmMsIDB4OGRhMjY5ZjU1YzFlMWM4ZCwgMHhjZmMzNzE0Mzg5
NTc5MmNhLAorICAgICAgMHhiZTIxZWFiMWYzMGIyMzhmLCAweDhjNDcyMjlkZWU0ZDY1ZmQsIDB4
NTc0MzYxNGVkMWVkN2Q1NCwKKyAgICAgIDB4MzUxMzcyYTk5ZTljNDc2ZSwgMHgyYmQ1ZWExNWU1
ZGIwODVmLCAweDY5MjVmZGU0NmUwYWY0Y2EsCisgICAgICAweGVkM2VkYTJiZGMxZjQ1YmQsIDB4
ZGVmNjhjNjhkNDYwZmE2ZSwgMHhlNDJhMGRlNzYyNTNlMmI1LAorICAgICAgMHg0ZTUxNzZkY2Jj
MjljMzA1LCAweGJmZDg1ZmJhOWY4MTBmNmUsIDB4NzZhNWEyYTliZWI4MTVjNiwKKyAgICAgIDB4
MDFlZGM0ZGRjZWFmNDE0YywgMHhhNGU5ODkwNGI0YmIzYjRiLCAweDAwYmQ2M2FjN2QyZjFkZGQs
CisgICAgICAweGI4NDkxZmU2ZTk5OGRkYmIsIDB4YjM4NmEzNDYzZGRhNjgwMCwgMHgwMDgxODg3
Njg4ODcxNjE5LAorICAgICAgMHgzM2QzOTRiMzM0NGU5YTM4LCAweDgxNWRiYTY1YTNhOGJhZjks
IDB4NDIzMmY2ZWMwMmMyZmQxYSwKKyAgICAgIDB4YjVjZmY2MDNlZGQyMDgzNCwgMHg1ODAxODky
NDNmNjg3NjYzLCAweGE4ZDVhMmNiZGMyN2ZlOTksCisgICAgICAweDcyNWQ4ODE2OTNmYTAxMzEs
IDB4YTJiZTJjMTNkYjJjN2FjNSwgMHg3YjZhOTYxNGI1MDlmZDc4LAorICAgICAgMHhiNmIxMzZk
NzFlNzE3NjM2LCAweDY2MGYxYTcxYWZmMDQ2ZWEsIDB4MGJhMTBhZTM0NmM4ZWM5ZSwKKyAgICAg
IDB4ZTY2ZGRlNTNlMzE0NWI0MSwgMHgzYjE4Mjg4Yzg4YzI2YmU2LCAweDRkOWQ5ZDJmZjAyZGI5
MzMsCisgICAgICAweDQxNjdkYThjNzBmNDZlOGEsIDB4ZjE4M2JlZWY4YzYzMThiNCwgMHg0ZDg4
OWUxZTcxZWVlZWYxLAorICAgICAgMHg3MTc1YzcxYWQ2Njg5YjZiLCAweGZiOWU0MmJlYWNkMWI3
ZGQsIDB4YzMzZDBlOTFiMjliNWUwZCwKKyAgICAgIDB4ZDM5YjgzMjkxY2U0NzkyMiwgMHhjNGQ1
NzBmYjg0OTNkMTJlLCAweDIzZDVhNTcyNGY0MjRhZTYsCisgICAgICAweDUyNDVmMTYxODc2YjY2
MTYsIDB4MzhkNzdkYmQyMWFiNTc4ZCwgMHg5YzM0MjMzMTFmNGVjYmZlLAorICAgICAgMHg3NmZl
MzEzODliYWNkOWQ1LAorICB9OworCisgIEV4cGxpY2l0U2VlZFNlcSBzZWVkX3NlcXVlbmNlezEy
LCAzNCwgNTZ9OworICByYW5kZW5fdTY0IGVuZ2luZShzZWVkX3NlcXVlbmNlKTsKKyNpZiBVUERB
VEVfR09MREVOCisgICh2b2lkKWtHb2xkZW47ICAvLyBTaWxlbmNlIHdhcm5pbmcuCisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwga051bUdvbGRlbk91dHB1dHM7ICsraSkgeworICAgIHByaW50Zigi
MHglMDE2bHgsICIsIGVuZ2luZSgpKTsKKyAgICBpZiAoaSAlIDMgPT0gMikgeworICAgICAgcHJp
bnRmKCJcbiIpOworICAgIH0KKyAgfQorICBwcmludGYoIlxuXG5cbiIpOworI2Vsc2UKKyAgZm9y
IChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdp
bmUoKSk7CisgIH0KKyAgZW5naW5lLnNlZWQoc2VlZF9zZXF1ZW5jZSk7CisgIGZvciAoY29uc3Qg
YXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOwor
ICB9CisjZW5kaWYKK30KKworVEVTVChSYW5kZW5UZXN0LCBWZXJpZnlHb2xkZW5SYW5kZW4zMkRl
ZmF1bHQpIHsKKyAgY29uc3RleHByIHVpbnQ2NF90IGtHb2xkZW5bMiAqIGtOdW1Hb2xkZW5PdXRw
dXRzXSA9IHsKKyAgICAgIDB4NGU0MzM5NzcsIDB4YzNjMTRmMTMsIDB4ZDkwNDEwZWUsIDB4ZGRh
OWY0N2MsIDB4N2ZkOGNhMTAsIDB4ODg3YmYzMDgsCisgICAgICAweDQ1YzcyOTEyLCAweGYwYjc4
MGY1LCAweDc2OTY1OTlmLCAweDE1ZGJiMWQzLCAweGZmM2M2ZDU5LCAweDMwZWM2M2JhLAorICAg
ICAgMHg2ZjdmMjBhNiwgMHhiMjlmNzM2MCwgMHg2ZjQ5YTU0YywgMHgwMjgwOGEzMSwgMHhkNWM4
ZTUwZSwgMHgzYjhmZWFmOSwKKyAgICAgIDB4M2ZkOWRlOGEsIDB4OWNiZjYwNWUsIDB4NzgxODNi
YmIsIDB4Yzk3MGFlMWEsIDB4NTYzMDFlZDUsIDB4ZDhiMmZmZDMsCisgICAgICAweDBmYzczYzM3
LCAweGY0YjMyN2ZlLCAweGViOGY5YTE5LCAweGNkZmQ4ZDc2LCAweDkxNDIwYzlkLCAweGMzYTUw
NmViLAorICAgICAgMHgzZWZmOTU1NiwgMHhkNWFmMDVkZCwgMHg4ZjgzYzRhMSwgMHg0OGRiMWJi
NywgMHgwZDZiZmU4YywgMHg3MDIzOTIwZSwKKyAgICAgIDB4MzQ5NTZkNDIsIDB4NThkMzU3NTgs
IDB4NmI4N2I4NDAsIDB4ZWQxZWY0YzIsIDB4M2UwYjJkZjMsIDB4OGVlZjMyYTIsCisgICAgICAw
eDQzMTE1NGZjLCAweDQ5N2NhYmYzLCAweDcwMDI5YThiLCAweDRlMjQzNzA1LCAweGYwOTBlNWVh
LCAweGQ4OGI1NzQ5LAorICAgICAgMHhhOTcwNjkyZiwgMHhjNjUxYTU4MiwgMHhiYjYzNDJmNSwg
MHg3OGZjZWMyYywgMHg2MTJmNTVkYiwgMHg0NjNjYjc0NSwKKyAgICAgIDB4MTgxNmFmZTMsIDB4
MzUyZWU0YWQsIDB4YzEwMWRhN2UsIDB4MDI2ZmYzNzQsIDB4MWMzZGU4NTEsIDB4ODExZWYwODIs
CisgICAgICAweDA0YzRmYTU5LCAweDZmN2U2MTY3LCAweDk5MmQ1OGZjLCAweGEwNjYwMzc5LCAw
eGEzYjc5NWM3LCAweDA0YjBhMzc0LAorICAgICAgMHg2ODVkYTc5OCwgMHg5MTVmMzQ0NSwgMHhj
NzY1NzFjZSwgMHgyNjgwMmE4YSwgMHgzM2NlMTg4MiwgMHg0NjYzMzUyNSwKKyAgICAgIDB4YTI0
ZGM3MzgsIDB4YjlmZGVmYjQsIDB4NGQ2ZTZjNTEsIDB4NTU4OGJhM2EsIDB4ZDM1ZjE5NTYsIDB4
YTIxMDFhNDIsCisgICAgICAweGUyMDBmNWZkLCAweDYwNzE5NWE1LCAweGYzMjkwNzY0LCAweDdl
MTAwMzA4LCAweDc1OWMwNzA5LCAweGUxZTVlMDNjLAorICAgICAgMHg1ZGE2NjA2ZiwgMHgwODI1
NzJjYywgMHg5OWU0MzJmMSwgMHhjYmNmNTg1MywgMHg4MzM1ZDhmMSwgMHhlOGEyYmU0ZiwKKyAg
ICAgIDB4Y2JmZWU4ZjIsIDB4MDkwNDQ2OWEsIDB4NmRhZWNkNTEsIDB4ZjA4YmQzMWIsIDB4YTY5
ZGE2OWEsIDB4MDhlOGExZjEsCisgICAgICAweGFkNTdiZmY1LCAweDY1NDJhMjBhLCAweDA1M2Q2
YjQ2LCAweDJlOTcwNWJiLCAweDA3MTNjMzkxLCAweGRhMmZjOWRiLAorICAgICAgMHgyMTNiNmZm
YiwgMHg3OGUzYTgxMCwgMHhkZDg1ZjhhNiwgMHhkYzE2YTU5YywgMHhjZDU1NzgxZiwgMHhjMDkz
MjcxOCwKKyAgICAgIDB4MmIyMGJmZTUsIDB4YjliZmIyOWMsIDB4YmUwZjJmOWMsIDB4Yjk3Mjg5
YzEsIDB4MDNhODkyZDQsIDB4YzBhMmEwZTQsCisgICAgICAweDQ3NzE0MzViLCAweDU1MjRiYjgz
LCAweDM5ZDFhNzUwLCAweDgyNjVkYTNkLCAweDhkMWI3OGM1LCAweGZmNGFmM2FiLAorICAgICAg
MHg0YmNhZDc3ZiwgMHhmMGVjNWY0MiwgMHgyNzQ5NTE4OSwgMHg2NmU0NTVmNiwgMHhiNTdlMzI3
MCwgMHhjODJkMzEyMCwKKyAgICAgIDB4YzIyNTk2ZTMsIDB4MzQyNGU0N2QsIDB4OWNjZWRjZGQs
IDB4YmMwYzk1MTIsIDB4YWZjNGRjYmYsIDB4YzE5MWM1OTUsCisgICAgICAweDJiYjcwOTM5LCAw
eDEyMDM5MmJkLCAweGE2Y2Q2YWI0LCAweDdmOTA2NTBlLCAweDMyNjk1YWQzLCAweDcyODc0OTE4
LAorICAgICAgMHhhNzkxN2ViMCwgMHhhN2M4ZmFjNSwgMHgxOGJlMDM2MSwgMHhkMDg4Y2I5NCwg
MHg5YzdjMWNlNSwgMHg3YzFiZjk4MywKKyAgICAgIDB4NThlMWU3OWUsIDB4ZTJlOTkxZmEsIDB4
ZmQyOGM0YWQsIDB4Nzg1NjVjZGUsIDB4Zjk4YmFmYWQsIDB4NzM1MWI5ZmUsCisgICAgICAweGIw
OGM5NmJmLCAweDJhOWVhYzI4LCAweDk2Y2IyMjI1LCAweDZjNGYxNzk2LCAweDFiYWI4N2UwLCAw
eDEzYTY4NTg2LAorICAgICAgMHhhMDUwMTk3MSwgMHg2NGM2ZGU1YSwgMHhjYWM3MDk5MSwgMHgz
MDUzNzQyNSwgMHhjNmM1MzJiNywgMHgwMTU5MGQ5ZCwKKyAgICAgIDB4OGVjNzIwZGMsIDB4N2Uw
NWUzYWEsIDB4NTRlM2U2M2YsIDB4NzRhMDdkOWMsIDB4OGYzYmMxZDIsIDB4NzM4MTg0MzgsCisg
ICAgICAweDY3YmUzYWNiLCAweDI2ZmZkYzUwLCAweDU2MWYyNTVmLCAweDZiY2RmMTg1LCAweGNm
OTliMWM2LCAweGEwZWFmMmUxLAorICAgICAgMHgzNGY2ODYwNCwgMHgxNzFkZjgxOSwgMHg2NTY4
M2U1YSwgMHg3ZWE1YTIxNiwgMHg3NWJhMWNlYSwgMHg1ZDFjYjAyMCwKKyAgICAgIDB4ZDIxMjNm
ZGYsIDB4OTU3ZjM4Y2IsIDB4ZjgwZGUwMmYsIDB4YmE2MzY0ZWYsIDB4NDFkNDUyZWUsIDB4NjA2
ZTBhMGUsCisgICAgICAweGRlODJmN2EyLCAweDg5MmQ4MzE3LCAweDUwZjdiNDNlLCAweGU3MDdi
MWRiLCAweDc2NmZjZjViLCAweDRlYjI4ODI2LAorICAgICAgMHhlODBhMDk1MSwgMHg1YTM2MmQ1
NiwgMHgxNjUyN2Q3OCwgMHg2ZWUyMTdkZiwgMHhiYTZiMjNkZCwgMHhmNjczNzk2MiwKKyAgICAg
IDB4N2Q0MDc2Y2EsIDB4NDQzZTYzODUsIDB4MDQ4YWRmZWIsIDB4NzkwZDlhNWYsIDB4MTUxZWU5
NGQsIDB4ZDc5NmIwNTIsCisgICAgICAweDEyYjA0YTAzLCAweDAzM2VkOTVjLCAweDQ4OTNkYTVk
LCAweDhiODMzZmY4LCAweGJiMTVlYWI5LCAweDNkNjcyNGIxLAorICAgICAgMHg1MDYxY2E3Niwg
MHg5ODc3YzQyMiwgMHhhZGY3NGZiMywgMHhkNjhkNjgxMCwgMHhlMzBjZTk4OSwgMHg0MmU1MzUy
ZiwKKyAgICAgIDB4NzQzMWZkZTcsIDB4MjY1YjU2NWEsIDB4NThkZjRiOGIsIDB4M2NkYmY3ZTMs
IDB4NmQzZTg3NzksIDB4MjkyMmE0N2YsCisgICAgICAweDY1YjM3Zjg4LCAweDUyZDIyNDJmLCAw
eDI5NThkNmI1LCAweDVkODM2ZDZlLCAweDU2NmQ1ZTI2LCAweDI5ZDQwZjAwLAorICAgICAgMHgx
MjRiMTRhMCwgMHgyODhkYjBlMSwgMHhiN2Q5YzFiNiwgMHg2YzA1NjYwOCwgMHhiOGYxOWQzMiwg
MHgwYjk0NzFiZCwKKyAgICAgIDB4NGZhYTZjOWQsIDB4OGZiOTQ2NTAsIDB4NDU0MDI1MWMsIDB4
ODk0M2E5NDYsIDB4MTQ0YTA5ZTAsIDB4ZmQxZmUyN2QsCisgICAgICAweGRhMTQxYmRhLCAweGVh
NmFjNDU4LCAweDYzM2ZjZTM2LCAweDgwNDhmMjE3LCAweGFkZTc0ZDMxLCAweGZlZGExMzg0LAor
ICAgICAgMHgyZmY3NjEyZiwgMHg0MzM0YjhiMCwgMHg1MjI3ZTIxNiwgMHhkYmM4NDQxZiwgMHgz
NjA1Yzg1YiwgMHgwOTZkMTE5YSwKKyAgICAgIDB4MjFiN2Q3ZDAsIDB4MmI3MmIzMWN9OworCisg
IHJhbmRlbl91MzIgZW5naW5lOworI2lmIFVQREFURV9HT0xERU4KKyAgKHZvaWQpa0dvbGRlbjsg
IC8vIFNpbGVuY2Ugd2FybmluZy4KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyICoga051bUdv
bGRlbk91dHB1dHM7ICsraSkgeworICAgIHByaW50ZigiMHglMDh4LCAiLCBlbmdpbmUoKSk7Cisg
ICAgaWYgKGkgJSA2ID09IDUpIHsKKyAgICAgIHByaW50ZigiXG4iKTsKKyAgICB9CisgIH0KKyAg
cHJpbnRmKCJcblxuXG4iKTsKKyNlbHNlCisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xk
ZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOworICB9CisgIGVuZ2luZS5zZWVk
KCk7CisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEo
ZWxlbSwgZW5naW5lKCkpOworICB9CisjZW5kaWYKK30KKworVEVTVChSYW5kZW5UZXN0LCBWZXJp
ZnlHb2xkZW5SYW5kZW4zMlNlZWRlZCkgeworICBjb25zdGV4cHIgdWludDY0X3Qga0dvbGRlblsy
ICoga051bUdvbGRlbk91dHB1dHNdID0geworICAgICAgMHg5NGQzZGNkNSwgMHg4M2E5ZTU4Ziwg
MHhkOTc5NDlmYiwgMHg3MGJiZGZmMywgMHg3NDcxYzFiNCwgMHgwNDM4NDgxZiwKKyAgICAgIDB4
ZTVmYjU5MzAsIDB4MzRmZGM1OGUsIDB4MmE5MzdkMTcsIDB4Y2VlZTRmMmQsIDB4ZTQzMmFlYTks
IDB4YjVhMjZhNjgsCisgICAgICAweDNmYjUxNzQwLCAweDhiNjQ3NzRhLCAweDc0MjQ5Yzc0LCAw
eGQ4OWFjMWZjLCAweDIzZmMzZmRmLCAweDAzOTEwZDFkLAorICAgICAgMHg3OGFhODk3ZiwgMHhk
MzhmNjMwOCwgMHg2MTVmN2U0NCwgMHgwZWU4ZjBmNSwgMHhmODI3OWQ1MiwgMHg5OGY1YTUzZCwK
KyAgICAgIDB4MjU5MzhkMGUsIDB4YjQwM2Y1MmMsIDB4NmVhNmU4MzgsIDB4MjQwMDcyOTksIDB4
NjE5MGZhNjEsIDB4ZDNhNzkxMjQsCisgICAgICAweDdhN2I0ZjgwLCAweGFhZWRkM2RmLCAweDA1
ZGVhZjZlLCAweGM2ZWFjYWJlLCAweDc5MGVkZjRkLCAweGI3OTY3ZGQ4LAorICAgICAgMHhlMDQ5
ZDI3OSwgMHg5YTBhOGU2NywgMHhhZWJjMjNlNywgMHgwNDk0ZjYwNiwgMHg3YmMzZTBlZSwgMHg1
OThkY2Q2OCwKKyAgICAgIDB4MDJkNDUyYTEsIDB4MDEwYWM4MTgsIDB4NjBhYTI4NDIsIDB4NjQw
N2M4NzEsIDB4NDg2ZjkzYTAsIDB4NWE1NmUyNzYsCisgICAgICAweGQ0NmE4ZjAyLCAweGM4ODdh
Mzk5LCAweGZlOTNiNzQwLCAweDllMWU2MTAwLCAweDBmODkwMWY2LCAweDEyZDAyZTMzLAorICAg
ICAgMHg0N2U3OTBiNywgMHhjMzljYTUyYiwgMHgxMWU4MmU2MSwgMHhiMGIwYTJmYSwgMHhhMzAz
ODA2YSwgMHgxNTQyZDg0MSwKKyAgICAgIDB4N2Q2ZTlkODYsIDB4MWZlNjU5ZmQsIDB4NzQ2NTQx
YWMsIDB4YjhjOTBkODAsIDB4NjY5ZGRjOTQsIDB4MjM5ZDU2YTUsCisgICAgICAweDgxMjNkMTNj
LCAweGQ0MGRiNTdjLCAweDE1M2EwZGIwLCAweDNhYmMyNDE0LCAweDMwY2I4ZDYxLCAweDliYWQ2
NjU2LAorICAgICAgMHhlZTNmNGJiYywgMHgwYmQxZmI5MCwgMHgwNzliNGU0MiwgMHg4ZjBiNGQ3
ZSwgMHhlZTU5ZTc5MywgMHhmYTBmYjBlMCwKKyAgICAgIDB4M2UwNzExMDAsIDB4NTEwODBiMjgs
IDB4NTA4MWNjMTUsIDB4MmM0YjllNzEsIDB4ZGU0OTQxZGYsIDB4YmUxMGVkNDksCisgICAgICAw
eDRiMWIwZDM3LCAweGY4ZWFhYzlkLCAweDQ2MDVlMTM5LCAweDRiY2NlNGI1LCAweDY3NjVkZGE2
LCAweGE2NDcyMmI3LAorICAgICAgMHg4Y2EyOGFiNSwgMHhiOTM3N2Q3MywgMHhhOGNjYzFhZiwg
MHg3NzlmYWQ4MSwgMHgxZmZkM2JhNywgMHg2NWNiM2VlNiwKKyAgICAgIDB4Nzg2MjgzNmYsIDB4
ZDc0ZTc5MDgsIDB4NGMzZjI1YmYsIDB4ZDA1YjljNTgsIDB4OTM1Nzk4MjcsIDB4MmJhOTNhNDYs
CisgICAgICAweGYwNTQyMGNlLCAweGQ4MTUzMGFmLCAweDE1NDc4NjIxLCAweGVjMDZjZWEyLCAw
eDc5NmQ2NWFkLCAweDRiMTc5OGE2LAorICAgICAgMHgzYTZmNmZhNiwgMHhmMTQyZjNmYiwgMHhl
MjM3YjU2MCwgMHgwMDJiN2JmNywgMHhlZjY1YjRmOCwgMHhmNDdmMjYwNSwKKyAgICAgIDB4MTdl
ZmZjMTgsIDB4OTgwNGVjNTUsIDB4YjdkNDgxY2QsIDB4YWVkM2Q3ZjgsIDB4MWNlMzM4ZDEsIDB4
NTY1MWMyNGMsCisgICAgICAweDhiZjBhM2M2LCAweDNlN2EzODIwLCAweDE0NTM0YWVkLCAweDY3
OTZhN2I2LCAweDgzNTg0NjBmLCAweDBkMGYzYjg0LAorICAgICAgMHgwMGIxOTUyNCwgMHgwZmE1
ZmU3NiwgMHg1M2ZhYWVkYywgMHgyYjBjZjM4MiwgMHgyMzNhOWZkNiwgMHgxMGRmOTE4OCwKKyAg
ICAgIDB4ODAxMzhiNTksIDB4M2ExMDAzMzgsIDB4Mzk0OGU4MGYsIDB4NWZiMGIwZDIsIDB4MmZi
ZjUzNTAsIDB4OWU3NmY3YjAsCisgICAgICAweDA0YjFhOTg1LCAweDA4MTYwNTIzLCAweGI0MWZk
MjE4LCAweDMwYzk4ODBkLCAweDY1ZTIwZjI4LCAweDE0YWEzOTliLAorICAgICAgMHhhY2U3ODdi
NCwgMHhlMTQ1NGE4YywgMHhiNmM2ZjBmNSwgMHgzMjVhYzk3MSwgMHg3ODRmM2QzNiwgMHg3MTZi
MWFhMiwKKyAgICAgIDB4Y2NmZDE0NGYsIDB4M2Q1Y2UxNGEsIDB4MGY2NTE3OTIsIDB4NmMwYzk3
NzEsIDB4ZmIzMzM1MzIsIDB4YmM1YjBmNTksCisgICAgICAweDE0MDQ3MGJjLCAweDJhOTBhN2Qy
LCAweDVjMWUxYzhkLCAweDhkYTI2OWY1LCAweDg5NTc5MmNhLCAweGNmYzM3MTQzLAorICAgICAg
MHhmMzBiMjM4ZiwgMHhiZTIxZWFiMSwgMHhlZTRkNjVmZCwgMHg4YzQ3MjI5ZCwgMHhkMWVkN2Q1
NCwgMHg1NzQzNjE0ZSwKKyAgICAgIDB4OWU5YzQ3NmUsIDB4MzUxMzcyYTksIDB4ZTVkYjA4NWYs
IDB4MmJkNWVhMTUsIDB4NmUwYWY0Y2EsIDB4NjkyNWZkZTQsCisgICAgICAweGRjMWY0NWJkLCAw
eGVkM2VkYTJiLCAweGQ0NjBmYTZlLCAweGRlZjY4YzY4LCAweDYyNTNlMmI1LCAweGU0MmEwZGU3
LAorICAgICAgMHhiYzI5YzMwNSwgMHg0ZTUxNzZkYywgMHg5ZjgxMGY2ZSwgMHhiZmQ4NWZiYSwg
MHhiZWI4MTVjNiwgMHg3NmE1YTJhOSwKKyAgICAgIDB4Y2VhZjQxNGMsIDB4MDFlZGM0ZGQsIDB4
YjRiYjNiNGIsIDB4YTRlOTg5MDQsIDB4N2QyZjFkZGQsIDB4MDBiZDYzYWMsCisgICAgICAweGU5
OThkZGJiLCAweGI4NDkxZmU2LCAweDNkZGE2ODAwLCAweGIzODZhMzQ2LCAweDg4ODcxNjE5LCAw
eDAwODE4ODc2LAorICAgICAgMHgzNDRlOWEzOCwgMHgzM2QzOTRiMywgMHhhM2E4YmFmOSwgMHg4
MTVkYmE2NSwgMHgwMmMyZmQxYSwgMHg0MjMyZjZlYywKKyAgICAgIDB4ZWRkMjA4MzQsIDB4YjVj
ZmY2MDMsIDB4M2Y2ODc2NjMsIDB4NTgwMTg5MjQsIDB4ZGMyN2ZlOTksIDB4YThkNWEyY2IsCisg
ICAgICAweDkzZmEwMTMxLCAweDcyNWQ4ODE2LCAweGRiMmM3YWM1LCAweGEyYmUyYzEzLCAweGI1
MDlmZDc4LCAweDdiNmE5NjE0LAorICAgICAgMHgxZTcxNzYzNiwgMHhiNmIxMzZkNywgMHhhZmYw
NDZlYSwgMHg2NjBmMWE3MSwgMHg0NmM4ZWM5ZSwgMHgwYmExMGFlMywKKyAgICAgIDB4ZTMxNDVi
NDEsIDB4ZTY2ZGRlNTMsIDB4ODhjMjZiZTYsIDB4M2IxODI4OGMsIDB4ZjAyZGI5MzMsIDB4NGQ5
ZDlkMmYsCisgICAgICAweDcwZjQ2ZThhLCAweDQxNjdkYThjLCAweDhjNjMxOGI0LCAweGYxODNi
ZWVmLCAweDcxZWVlZWYxLCAweDRkODg5ZTFlLAorICAgICAgMHhkNjY4OWI2YiwgMHg3MTc1Yzcx
YSwgMHhhY2QxYjdkZCwgMHhmYjllNDJiZSwgMHhiMjliNWUwZCwgMHhjMzNkMGU5MSwKKyAgICAg
IDB4MWNlNDc5MjIsIDB4ZDM5YjgzMjksIDB4ODQ5M2QxMmUsIDB4YzRkNTcwZmIsIDB4NGY0MjRh
ZTYsIDB4MjNkNWE1NzIsCisgICAgICAweDg3NmI2NjE2LCAweDUyNDVmMTYxLCAweDIxYWI1Nzhk
LCAweDM4ZDc3ZGJkLCAweDFmNGVjYmZlLCAweDljMzQyMzMxLAorICAgICAgMHg5YmFjZDlkNSwg
MHg3NmZlMzEzOCwKKyAgfTsKKworICBFeHBsaWNpdFNlZWRTZXEgc2VlZF9zZXF1ZW5jZXsxMiwg
MzQsIDU2fTsKKyAgcmFuZGVuX3UzMiBlbmdpbmUoc2VlZF9zZXF1ZW5jZSk7CisjaWYgVVBEQVRF
X0dPTERFTgorICAodm9pZClrR29sZGVuOyAgLy8gU2lsZW5jZSB3YXJuaW5nLgorICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDIgKiBrTnVtR29sZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRm
KCIweCUwOHgsICIsIGVuZ2luZSgpKTsKKyAgICBpZiAoaSAlIDYgPT0gNSkgeworICAgICAgcHJp
bnRmKCJcbiIpOworICAgIH0KKyAgfQorICBwcmludGYoIlxuXG5cbiIpOworI2Vsc2UKKyAgZm9y
IChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShlbGVtLCBlbmdp
bmUoKSk7CisgIH0KKyAgZW5naW5lLnNlZWQoc2VlZF9zZXF1ZW5jZSk7CisgIGZvciAoY29uc3Qg
YXV0byYgZWxlbSA6IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOwor
ICB9CisjZW5kaWYKK30KKworVEVTVChSYW5kZW5UZXN0LCBWZXJpZnlHb2xkZW5Gcm9tRGVzZXJp
YWxpemVkRW5naW5lKSB7CisgIGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW2tOdW1Hb2xkZW5P
dXRwdXRzXSA9IHsKKyAgICAgIDB4MDY3ZjlmOWFiOTE5NjU3YSwgMHgwNTM0NjA1OTEyOTg4NTgz
LCAweDhhMzAzZjcyZmVhYTY3M2YsCisgICAgICAweDc3YjdmZDc0NzkwOTE4NWMsIDB4ZDlhZjkw
NDAzYzU2ZDg5MSwgMHhkOTM5YzZjYjIwNGQxNGI1LAorICAgICAgMHg3ZmJlNmI5NTRhNDdiNDgz
LCAweDhiMzFhNDdjYzM0Yzc2OGQsIDB4M2E5ZTU0NmRhMjcwMWE5YywKKyAgICAgIDB4NTI0NjUz
OTA0NjI1M2U3MSwgMHg0MTcxOTFmZmIyYTg0OGExLCAweDdiMWM3YmY1YTUwMDFkMDksCisgICAg
ICAweDk0ODliMTVkMTk0ZjIzNjEsIDB4ZmNlYmRlZWEzYmNkMjQ2MSwgMHhkNjQzMDI3Yzg1NGNl
Yzk3LAorICAgICAgMHg1ODg1Mzk3ZjkxZTBkMjFjLCAweDUzMTczYjBlZmFlMzBkNTgsIDB4MWM5
YzcxMTY4NDQ5ZmFjMSwKKyAgICAgIDB4ZTM1ODIwMmI3MTFlZDhhYSwgMHg5NGUzOTE4ZWQxZDgy
MjdjLCAweDViYjRlMjUxNDUwMTQ0Y2YsCisgICAgICAweGI1YzdhNTE5YjQ4OWFmM2IsIDB4NmY4
YjU2MGIxZjdiMzQ2OSwgMHhmZGUxMWRkNGExYzc0ZWVmLAorICAgICAgMHgzMzM4M2QyZjc2NDU3
ZGNmLCAweDMwNjBjMGVjNmRiOWZjZTEsIDB4MThmNDUxZmNkZGVlYzc2NiwKKyAgICAgIDB4ZTcz
YzVkNmI5ZjI2ZGEyYSwgMHg4ZDRjYzU2NjY3MWIzMmE0LCAweGI4MTg5YjczNzc2YmM5ZmYsCisg
ICAgICAweDQ5N2E3MGY5Y2FmMGJjMjMsIDB4MjNhZmNjNTA5NzkxZGNlYSwgMHgxOGFmNzBkYzRi
MjdkMzA2LAorICAgICAgMHhkMzg1M2Y5NTVhMGNlNWI5LCAweDQ0MWRiNmMwMWEwYWZiMTcsIDB4
ZDAxMzZjM2ZiOGUxZjEzZiwKKyAgICAgIDB4NWU0ZmQ2ZmMyZjMzNzgzYywgMHhlMGQyNDU0OGFk
YjVkYTUxLCAweDBmNGQ4MzYyYTdkMzQ4NWEsCisgICAgICAweDlmNTcyZDY4MjcwZmE1NjMsIDB4
NjM1MWZiYzgyMzAyNDM5MywgMHhhNjZkYmZjNjE4MTBlOWFiLAorICAgICAgMHgwZmYxN2ZjMTRi
NjUxYWY4LCAweGQ3NGM1NWRhZmI5OWU2MjMsIDB4MzYzMDNiYzFhZDg1YzZjMiwKKyAgICAgIDB4
NDkyMGNkNmEyYWY3ZTg5NywgMHgwYjg4NDhhZGRjMzBmZWNkLCAweDllMTU2MmVkYTY0ODhlOTMs
CisgICAgICAweDE5NzU1MzgwN2Q2MDc4MjgsIDB4YmVmNWVhZWRhNWUyMTIzNSwgMHgxOGQ5MWQy
NjE2YWNhNTI3LAorICAgICAgMHhiNzgyMTkzN2Y1Yzg3M2NkLCAweDJjZDRhZTU2NTBkYmVlZmMs
IDB4YjM1YTY0Mzc2Zjc1ZmZkZiwKKyAgICAgIDB4OTIyNmQ0MTRkNjQ3ZmUwNywgMHg2NjNmM2Ri
NDU1YmJiMzVlLCAweGE4MjllZWFkNmFlOTMyNDcsCisgICAgICAweDdmZDY5YzIwNGRkMGQyNWYs
IDB4YmUxNDExZjg5MWM5YWNiMSwgMHhkNDc2ZjM0YTUwNmQ1ZjExLAorICAgICAgMHhmNDIzZDI4
MzE2NDljNWNhLCAweDFlNTAzOTYyOTUxYWJkNzUsIDB4ZWNjYzllOGIxZTM0YjUzNywKKyAgICAg
IDB4YjExYTE0NzI5NDA0NDg1NCwgMHhjNGNmMjdmMGFiZjQ5MjlkLCAweGU5MTkzYWJmNmZhMjRj
OGMsCisgICAgICAweGE5NGEyNTllM2FiYTg4MDgsIDB4MjFkYzQxNDE5N2RlZmZhMywgMHhhMmFl
MjExZDFmZjYyMmFlLAorICAgICAgMHhmZTM5OTVjNDZiZTVhNGY0LCAweGU5OTg0YzI4NGJmMTEx
MjgsIDB4Y2IxY2U5ZDJmMDg1MWE4MCwKKyAgICAgIDB4NDJmZWUxNzk3MWQ4N2NkOCwgMHhhYzc2
YTk4ZDE3N2FkYzg4LCAweGEwOTczYjNkZWRjNGFmNmYsCisgICAgICAweGRmNTZkNmJiY2IxYjhl
ODYsIDB4ZjFlNjQ4NWY0MDdiMTFjOSwgMHgyYzYzZGU0ZGVjY2IxNWMwLAorICAgICAgMHg2ZmU2
OWRiMzJlZDRmYWQ3LCAweGFhNTFhNjVmODRiY2ExZjEsIDB4MjQyZjJlZTgxZDYwOGFmYywKKyAg
ICAgIDB4OGViODhiMmI2OWZjMTUzYiwgMHgyMmMyMDA5OGJhZjczZmQxLCAweDU3NzU5NDY2ZjU3
NjQ4OGMsCisgICAgICAweDA3NWNhNTYyY2VhMWJlOWQsIDB4OWE3NDgxNGQ3M2QyODg5MSwgMHg3
M2QxNTU1ZmMwMmY0ZDNkLAorICAgICAgMHhjMTdmOGYyMTBlZTg5MzM3LCAweDQ2Y2NhNzk5OWVh
ZWFmZDQsIDB4NWRiOGQ2YTMyN2EwZDhhYywKKyAgICAgIDB4Yjc5YjRmOTNjNzM4ZDdhMSwgMHg5
OTk0NTEyZjAwMzZkZWQxLCAweGQzODgzMDI2ZjM4NzQ3ZjQsCisgICAgICAweGYzMWY3NDU4MDc4
ZDA5N2MsIDB4NzM2Y2U0ZDQ4MDY4MDY2OSwgMHg3YTQ5NmY0YzdlMTAzM2UzLAorICAgICAgMHhl
Y2Y4NWJmMjk3ZmJjNjhjLCAweDllMzdlMWQwZjI0ZjNjNGUsIDB4MTViNmUwNjdjYTA3NDZmYywK
KyAgICAgIDB4ZGQ0YTM5OTA1YzVkYjgxYywgMHhiNWRmYWZhN2JjZmRmN2RhLCAweGNhNjY0NmZi
NmY5MmEyNzYsCisgICAgICAweDFjNmIzNWYzNjNlZjBlZmQsIDB4NmEzM2QwNjAzN2FkOWY3Niwg
MHg0NTU0NDI0MWFmZDhmODBmLAorICAgICAgMHg4M2Y4ZDgzZjg1OWM5MGM1LCAweDIyYWVhOWM1
MzY1ZThjMTksIDB4ZmFjMzViMTFmMjBiNmE2YSwKKyAgICAgIDB4ZDFhY2Y0OWQxYTI3ZGQyZiwg
MHhmMjgxY2QwOWM0ZmVkNDA1LCAweDA3NjAwMGE0MmNkMzhlNGYsCisgICAgICAweDZhY2UzMDA1
NjUwNzA0NDUsIDB4NDYzYTYyNzgxYmRkYzRkYiwgMHgxNDc3MTI2YjQ2YjU2OWFjLAorICAgICAg
MHgxMjdmMmJiMTUwMzVmYmI4LCAweGRmYTMwOTQ2MDQ5YzA0YTgsIDB4ODkwNzJhNTg2YmE4ZGQz
ZSwKKyAgICAgIDB4NjJjODA5NTgyYmI3ZTc0ZCwgMHgyMmMwYzM2NDE0MDZjMjhiLCAweDliNjZl
MzZjNDdmZjAwNGQsCisgICAgICAweGI5Y2QyYzc1MTk2NTMzMzAsIDB4MTg2MDhkNzljZDdhNTk4
ZCwgMHg5MmMwYmQxMzIzZTUzZTMyLAorICAgICAgMHg4ODdmZjAwZGU4NTI0YWE1LCAweGEwNzQ0
MTBiNzg3YWJkMTAsIDB4MThhYjQxYjgwNTdhMjA2MywKKyAgICAgIDB4MTU2MGFiZjI2YmM1Zjk4
N307CisKKyNpZiBVUERBVEVfR09MREVOCisgICh2b2lkKWtHb2xkZW47ICAvLyBTaWxlbmNlIHdh
cm5pbmcuCisgIHN0ZDo6c2VlZF9zZXEgc2VlZF9zZXF1ZW5jZXsxLCAyLCAzLCA0LCA1fTsKKyAg
cmFuZGVuX3U2NCBlbmdpbmUoc2VlZF9zZXF1ZW5jZSk7CisgIHN0ZDo6b3N0cmluZ3N0cmVhbSBz
dHJlYW07CisgIHN0cmVhbSA8PCBlbmdpbmU7CisgIGF1dG8gc3RyID0gc3RyZWFtLnN0cigpOwor
ICBwcmludGYoIiVzXG5cbiIsIHN0ci5jX3N0cigpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBrTnVtR29sZGVuT3V0cHV0czsgKytpKSB7CisgICAgcHJpbnRmKCIweCUwMTZseCwgIiwgZW5n
aW5lKCkpOworICAgIGlmIChpICUgMyA9PSAyKSB7CisgICAgICBwcmludGYoIlxuIik7CisgICAg
fQorICB9CisgIHByaW50ZigiXG5cblxuIik7CisjZWxzZQorICByYW5kZW5fdTY0IGVuZ2luZTsK
KyAgc3RkOjppc3RyaW5nc3RyZWFtIHN0cmVhbSgKKyAgICAgICIwIDAgOTgyNDUwMTQzOTg4NzI4
NzQ3OSAzMjQyMjg0Mzk1MzUyMzk0Nzg1IDI0MzgzNjUzMDc3NDkzMzc3NyAiCisgICAgICAiNDA0
Nzk0MTgwNDcwODM2NTU5NiAxNzE2NTQ2ODEyNzI5ODM4NTgwMiA5NDkyNzYxMDM2NDU4ODkyNTUg
IgorICAgICAgIjEwNjU5OTcwMzk0OTk4NjU3OTIxIDE2NTc1NzA4MzY4MTA5Mjk3ODcgMTE2OTc3
NDYyNjY2NjgwNTE0NTIgIgorICAgICAgIjk5NjcyMDk5NjkyOTk5MDUyMzAgMTQxNDAzOTAzMzEx
NjE1MjQ0MzAgNzM4MzAxNDEyNDE4MzI3MTY4NCAiCisgICAgICAiMTMxNDY3MTkxMjc3MDIzMzc4
NTIgMTM5ODMxNTUyMjAyOTU4MDcxNzEgMTExMjExMjU1ODc1NDIzNTkyNjQgIgorICAgICAgIjE5
NTc1NzgxMDk5MzI1MjY5NSAxNzEzODU4MDI0MzEwMzE3ODQ5MiAxMTMyNjAzMDc0NzI2MDkyMDUw
MSAiCisgICAgICAiODU4NTA5NzMyMjQ3NDk2NTU5MCAxODM0MjU4MjgzOTMyODM1MDk5NSAxNTA1
Mjk4MjgyNDIwOTcyNDYzNCAiCisgICAgICAiNzMyMTg2MTM0Mzg3NDY4MzYwOSAxODA2Nzg2OTEx
Nzc4NzY3ODI2IDEwMTAwODUwODQyNjY1NTcyOTU1ICIKKyAgICAgICI5MjQ5MzI4OTUwNjUzOTg1
MDc4IDEzNjAwNjI0ODM1MzI2OTA5NzU5IDExMTM3OTYwMDYwOTQzODYwMjUxICIKKyAgICAgICIx
MDIwODc4MTM0MTc5MjMyOTYyOSA5MjgyNzIzOTcxNDcxNTI1NTc3IDE2MzczMjcxNjE5NDg2ODEx
MDMyIDMyIik7CisgIHN0cmVhbSA+PiBlbmdpbmU7CisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6
IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgZW5naW5lKCkpOworICB9CisjZW5kaWYK
K30KKworVEVTVChSYW5kZW5UZXN0LCBJc0Zhc3RPclNsb3cpIHsKKyAgLy8gcmFuZGVuX2VuZ2lu
ZSB0eXBpY2FsbHkgY29zdHMgfjVucyBwZXIgdmFsdWUgZm9yIHRoZSBvcHRpbWl6ZWQgY29kZSBw
YXRocywKKyAgLy8gYW5kIHRoZSB+MTAwMG5zIHBlciB2YWx1ZSBmb3Igc2xvdyBjb2RlIHBhdGhz
LiAgSG93ZXZlciB3aGVuIHJ1bm5pbmcgdW5kZXIKKyAgLy8gbXNhbiwgYXNhbiwgZXRjLiBpdCBj
YW4gdGFrZSBtdWNoIGxvbmdlci4KKyAgLy8KKyAgLy8gVGhlIGVzdGltYXRlZCBvcGVyYXRpb24g
dGltZSBpcyBzb21ldGhpbmcgbGlrZToKKyAgLy8KKyAgLy8gbGludXgsIG9wdGltaXplZCB+NW5z
CisgIC8vIHBwYywgb3B0aW1pemVkIH43bnMKKyAgLy8gbmFjbCAoc2xvdyksIH4xMTAwbnMKKyAg
Ly8KKyAgLy8gYGtDb3VudGAgaXMgY2hvc2VuIGJlbG93IHNvIHRoYXQsIGluIGRlYnVnIGJ1aWxk
cyBhbmQgd2l0aG91dCBoYXJkd2FyZQorICAvLyBhY2NlbGVyYXRpb24sIHRoZSB0ZXN0IChhc3N1
bWluZyB+MXVzIHBlciBjYWxsKSBzaG91bGQgZmluaXNoIGluIH4wLjFzCisgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IGtDb3VudCA9IDEwMDAwMDsKKyAgcmFuZGVuX3U2NCBlbmdpbmU7CisgIHJh
bmRlbl91NjQ6OnJlc3VsdF90eXBlIHN1bSA9IDA7CisgIGF1dG8gc3RhcnQgPSBhYnNsOjpHZXRD
dXJyZW50VGltZU5hbm9zKCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga0NvdW50OyBpKyspIHsK
KyAgICBzdW0gKz0gZW5naW5lKCk7CisgIH0KKyAgYXV0byBkdXJhdGlvbiA9IGFic2w6OkdldEN1
cnJlbnRUaW1lTmFub3MoKSAtIHN0YXJ0OworCisgIEFCU0xfSU5URVJOQUxfTE9HKElORk8sIGFi
c2w6OlN0ckNhdChzdGF0aWNfY2FzdDxkb3VibGU+KGR1cmF0aW9uKSAvCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihrQ291bnQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5zIikpOworCisgIEVY
UEVDVF9HVChzdW0sIDApOworICBFWFBFQ1RfR0UoZHVyYXRpb24sIGtDb3VudCk7ICAvLyBTaG91
bGQgYmUgc2xvd2VyIHRoYW4gMW5zIHBlciBjYWxsLgorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvcmFuZGVuX2h3YWVzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiODJkMWQwN2FkOGVm
NTc2ODljZTNlYzllMTI2Yjg2ZDMwZGJlNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vaW50ZXJuYWwvcmFuZGVuX2h3YWVzLmNjCkBAIC0wLDAgKzEsNzAwIEBACisvLyBDb3B5cmln
aHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworLy8gSEVSTUVUSUMgTk9URTogVGhlIHJh
bmRlbl9od2FlcyB0YXJnZXQgbXVzdCBub3QgaW50cm9kdWNlIGR1cGxpY2F0ZQorLy8gc3ltYm9s
cyBmcm9tIGFyYml0cmFyeSBzeXN0ZW0gYW5kIG90aGVyIGhlYWRlcnMsIHNpbmNlIGl0IG1heSBi
ZSBidWlsdAorLy8gd2l0aCBkaWZmZXJlbnQgZmxhZ3MgZnJvbSBvdGhlciB0YXJnZXRzLCB1c2lu
ZyBkaWZmZXJlbnQgbGV2ZWxzIG9mCisvLyBvcHRpbWl6YXRpb24sIHBvdGVudGlhbGx5IGludHJv
ZHVjaW5nIE9EUiB2aW9sYXRpb25zLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwv
cmFuZGVuX2h3YWVzLmgiCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGNzdHJpbmc+
CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9wbGF0Zm9ybS5oIgorCisvLyBBQlNM
X0hBVkVfQVRUUklCVVRFCisjaWYgIWRlZmluZWQoQUJTTF9IQVZFX0FUVFJJQlVURSkKKyNpZmRl
ZiBfX2hhc19hdHRyaWJ1dGUKKyNkZWZpbmUgQUJTTF9IQVZFX0FUVFJJQlVURSh4KSBfX2hhc19h
dHRyaWJ1dGUoeCkKKyNlbHNlCisjZGVmaW5lIEFCU0xfSEFWRV9BVFRSSUJVVEUoeCkgMAorI2Vu
ZGlmCisjZW5kaWYKKworI2lmIEFCU0xfSEFWRV9BVFRSSUJVVEUoYWx3YXlzX2lubGluZSkgfHwg
XAorICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pKQorI2RlZmlu
ZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBcCisgIF9fYXR0
cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIFdl
IGNhbiBhY2hpZXZlIHNvbWV0aGluZyBzaW1pbGFyIHRvIGF0dHJpYnV0ZSgoYWx3YXlzX2lubGlu
ZSkpIHdpdGggTVNWQyBieQorLy8gdXNpbmcgdGhlIF9fZm9yY2VpbmxpbmUga2V5d29yZCwgaG93
ZXZlciB0aGlzIGlzIG5vdCBwZXJmZWN0LiBNU1ZDIGlzCisvLyBtdWNoIGxlc3MgYWdncmVzc2l2
ZSBhYm91dCBpbmxpbmluZywgYW5kIGV2ZW4gd2l0aCB0aGUgX19mb3JjZWlubGluZSBrZXl3b3Jk
LgorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBf
X2ZvcmNlaW5saW5lCisjZWxzZQorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJV
VEVfQUxXQVlTX0lOTElORQorI2VuZGlmCisKKy8vIEFCU0xfQVRUUklCVVRFX0ZMQVRURU4gZW5h
YmxlcyBtdWNoIG1vcmUgYWdncmVzc2l2ZSBpbmxpbmluZyB3aXRoaW4KKy8vIHRoZSBpbmRpY2F0
ZWQgZnVuY3Rpb24uCisjdW5kZWYgQUJTTF9BVFRSSUJVVEVfRkxBVFRFTgorI2lmIEFCU0xfSEFW
RV9BVFRSSUJVVEUoZmxhdHRlbikgfHwgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9f
Y2xhbmdfXykpCisjZGVmaW5lIEFCU0xfQVRUUklCVVRFX0ZMQVRURU4gX19hdHRyaWJ1dGVfXygo
ZmxhdHRlbikpCisjZWxzZQorI2RlZmluZSBBQlNMX0FUVFJJQlVURV9GTEFUVEVOCisjZW5kaWYK
KworLy8gQUJTTF9SQU5ERU5fSFdBRVNfSU1QTCBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIGZpbGUg
d2lsbCBjb250YWluCisvLyBhIGhhcmR3YXJlIGFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9uIG9m
IHJhbmRlbiwgb3Igd2hldGhlciBpdAorLy8gd2lsbCBjb250YWluIHN0dWJzIHRoYXQgZXhpdCB0
aGUgcHJvY2Vzcy4KKyNpZiBkZWZpbmVkKEFCU0xfQVJDSF9YODZfNjQpIHx8IGRlZmluZWQoQUJT
TF9BUkNIX1g4Nl8zMikKKy8vIFRoZSBwbGF0Zm9ybS5oIGRpcmVjdGl2ZXMgYXJlIHN1ZmZpY2ll
bnQgdG8gaW5kaWNhdGUgd2hldGhlcgorLy8gd2Ugc2hvdWxkIGJ1aWxkIGFjY2VsZXJhdGVkIGlt
cGxlbWVudGF0aW9ucyBmb3IgeDg2LgorI2lmIChBQlNMX0hBVkVfQUNDRUxFUkFURURfQUVTIHx8
IEFCU0xfUkFORE9NX0lOVEVSTkFMX0FFU19ESVNQQVRDSCkKKyNkZWZpbmUgQUJTTF9SQU5ERU5f
SFdBRVNfSU1QTCAxCisjZW5kaWYKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNIX1BQQykKKy8vIFRo
ZSBwbGF0Zm9ybS5oIGRpcmVjdGl2ZXMgYXJlIHN1ZmZpY2llbnQgdG8gaW5kaWNhdGUgd2hldGhl
cgorLy8gd2Ugc2hvdWxkIGJ1aWxkIGFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9ucyBmb3IgUFBD
LgorLy8KKy8vIE5PVEU6IFRoaXMgaGFzIG1vc3RseSBiZWVuIHRlc3RlZCBvbiA2NC1iaXQgUG93
ZXIgdmFyaWFudHMsCisvLyBhbmQgbm90IGVtYmVkZGVkIGNwdXMgc3VjaCBhcyBwb3dlcnBjMzIt
ODU0MAorI2lmIEFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVMKKyNkZWZpbmUgQUJTTF9SQU5ERU5f
SFdBRVNfSU1QTCAxCisjZW5kaWYKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNIX0FSTSkgfHwgZGVm
aW5lZChBQlNMX0FSQ0hfQUFSQ0g2NCkKKy8vIEFSTSBpcyBzb21ld2hhdCBtb3JlIGNvbXBsaWNh
dGVkLiBXZSBtaWdodCBzdXBwb3J0IGNyeXB0byBuYXRpdmVseS4uLgorI2lmIEFCU0xfSEFWRV9B
Q0NFTEVSQVRFRF9BRVMgfHwgXAorICAgIChkZWZpbmVkKF9fQVJNX05FT04pICYmIGRlZmluZWQo
X19BUk1fRkVBVFVSRV9DUllQVE8pKQorI2RlZmluZSBBQlNMX1JBTkRFTl9IV0FFU19JTVBMIDEK
KworI2VsaWYgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENIICYmICFkZWZpbmVkKF9f
QVBQTEVfXykgJiYgXAorICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+IDQgfHwg
X19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+IDkpCisvLyAuLi5vciwgb24gR0NDLCB3
ZSBjYW4gdXNlIGFuIEFTTSBkaXJlY3RpdmUgdG8KKy8vIGluc3RydWN0IHRoZSBhc3NlbWJlciB0
byBhbGxvdyBjcnlwdG8gaW5zdHJ1Y3Rpb25zLgorI2RlZmluZSBBQlNMX1JBTkRFTl9IV0FFU19J
TVBMIDEKKyNkZWZpbmUgQUJTTF9SQU5ERU5fSFdBRVNfSU1QTF9DUllQVE9fRElSRUNUSVZFIDEK
KyNlbmRpZgorI2Vsc2UKKy8vIEhXQUVTIGlzIHVuc3VwcG9ydGVkIGJ5IHRoZXNlIGFyY2hpdGVj
dHVyZXMgLyBwbGF0Zm9ybXM6CisvLyAgIF9fbXlyaWFkMl9fCisvLyAgIF9fbWlwc19fCisvLwor
Ly8gT3RoZXIgYXJjaGl0ZWN0dXJlcyAvIHBsYXRmb3JtcyBhcmUgdW5rbm93bi4KKy8vCisvLyBT
ZWUgdGhlIEFic2VpbCBkb2N1bWVudGF0aW9uIG9uIHN1cHBvcnRlZCBtYWNyb3MgYXQ6CisvLyBo
dHRwczovL2Fic2VpbC5pby9kb2NzL2NwcC9wbGF0Zm9ybXMvbWFjcm9zCisjZW5kaWYKKworI2lm
ICFkZWZpbmVkKEFCU0xfUkFOREVOX0hXQUVTX0lNUEwpCisvLyBObyBhY2NlbGVyYXRlZCBpbXBs
ZW1lbnRhdGlvbiBpcyBzdXBwb3J0ZWQuCisvLyBUaGUgUmFuZGVuSHdBZXMgZnVuY3Rpb25zIGFy
ZSBzdHVicyB0aGF0IHByaW50IGFuIGVycm9yIGFuZCBleGl0LgorCisjaW5jbHVkZSA8Y3N0ZGlv
PgorI2luY2x1ZGUgPGNzdGRsaWI+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5k
b21faW50ZXJuYWwgeworCisvLyBObyBhY2NlbGVyYXRlZCBpbXBsZW1lbnRhdGlvbi4KK2Jvb2wg
SGFzUmFuZGVuSHdBZXNJbXBsZW1lbnRhdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9CisKKy8vIE5P
TElOVE5FWFRMSU5FCitjb25zdCB2b2lkKiBSYW5kZW5Id0Flczo6R2V0S2V5cygpIHsKKyAgLy8g
QXR0ZW1wdGVkIHRvIGRpc3BhdGNoIHRvIGFuIHVuc3VwcG9ydGVkIGRpc3BhdGNoIHRhcmdldC4K
KyAgY29uc3QgaW50IGQgPSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0g7CisgIGZw
cmludGYoc3RkZXJyLCAiQUVTIEhhcmR3YXJlIGRldGVjdGlvbiBmYWlsZWQgKCVkKS5cbiIsIGQp
OworICBleGl0KDEpOworICByZXR1cm4gbnVsbHB0cjsKK30KKworLy8gTk9MSU5UTkVYVExJTkUK
K3ZvaWQgUmFuZGVuSHdBZXM6OkFic29yYihjb25zdCB2b2lkKiwgdm9pZCopIHsKKyAgLy8gQXR0
ZW1wdGVkIHRvIGRpc3BhdGNoIHRvIGFuIHVuc3VwcG9ydGVkIGRpc3BhdGNoIHRhcmdldC4KKyAg
Y29uc3QgaW50IGQgPSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElTUEFUQ0g7CisgIGZwcmlu
dGYoc3RkZXJyLCAiQUVTIEhhcmR3YXJlIGRldGVjdGlvbiBmYWlsZWQgKCVkKS5cbiIsIGQpOwor
ICBleGl0KDEpOworfQorCisvLyBOT0xJTlRORVhUTElORQordm9pZCBSYW5kZW5Id0Flczo6R2Vu
ZXJhdGUoY29uc3Qgdm9pZCosIHZvaWQqKSB7CisgIC8vIEF0dGVtcHRlZCB0byBkaXNwYXRjaCB0
byBhbiB1bnN1cHBvcnRlZCBkaXNwYXRjaCB0YXJnZXQuCisgIGNvbnN0IGludCBkID0gQUJTTF9S
QU5ET01fSU5URVJOQUxfQUVTX0RJU1BBVENIOworICBmcHJpbnRmKHN0ZGVyciwgIkFFUyBIYXJk
d2FyZSBkZXRlY3Rpb24gZmFpbGVkICglZCkuXG4iLCBkKTsKKyAgZXhpdCgxKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2Vs
c2UgIC8vIGRlZmluZWQoQUJTTF9SQU5ERU5fSFdBRVNfSU1QTCkKKy8vCisvLyBBY2NlbGVyYXRl
ZCBpbXBsZW1lbnRhdGlvbnMgYXJlIHN1cHBvcnRlZC4KKy8vIFdlIG5lZWQgdGhlIHBlci1hcmNo
aXRlY3R1cmUgaW5jbHVkZXMgYW5kIGRlZmluZXMuCisvLworCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvcmFuZGVuX3RyYWl0cy5oIgorCisvLyBBQlNMX0ZVTkNUSU9OX0FMSUdOMzIg
ZGVmaW5lcyBhIDMyLWJ5dGUgYWxpZ25tZW50IGF0dHJpYnV0ZQorLy8gZm9yIHRoZSBmdW5jdGlv
bnMgaW4gdGhpcyBmaWxlLgorLy8KKy8vIE5PVEU6IERldGVybWluZSB3aGV0aGVyIHdlIGFjdHVh
bGx5IGhhdmUgYW55IHdpbnMgZnJvbSBBTElHTjMyCisvLyB1c2luZyBtaWNyb2JlbmNobWFya3Mu
IElmIG5vdCwgcmVtb3ZlLgorI3VuZGVmIEFCU0xfRlVOQ1RJT05fQUxJR04zMgorI2lmIEFCU0xf
SEFWRV9BVFRSSUJVVEUoYWxpZ25lZCkgfHwgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVk
KF9fY2xhbmdfXykpCisjZGVmaW5lIEFCU0xfRlVOQ1RJT05fQUxJR04zMiBfX2F0dHJpYnV0ZV9f
KChhbGlnbmVkKDMyKSkpCisjZWxzZQorI2RlZmluZSBBQlNMX0ZVTkNUSU9OX0FMSUdOMzIKKyNl
bmRpZgorCisvLyBUQVJHRVRfQ1JZUFRPIGRlZmluZXMgYSBjcnlwdG8gYXR0cmlidXRlIGZvciBl
YWNoIGFyY2hpdGVjdHVyZS4KKy8vCisvLyBOT1RFOiBFdmFsdWF0ZSB3aGV0aGVyIHdlIHNob3Vs
ZCBlbGltaW5hdGUgQUJTTF9UQVJHRVRfQ1JZUFRPLgorI2lmIChkZWZpbmVkKF9fY2xhbmdfXykg
fHwgZGVmaW5lZChfX0dOVUNfXykpCisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzY0KSB8fCBk
ZWZpbmVkKEFCU0xfQVJDSF9YODZfMzIpCisjZGVmaW5lIEFCU0xfVEFSR0VUX0NSWVBUTyBfX2F0
dHJpYnV0ZV9fKCh0YXJnZXQoImFlcyIpKSkKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNIX1BQQykK
KyNkZWZpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPIF9fYXR0cmlidXRlX18oKHRhcmdldCgiY3J5cHRv
IikpKQorI2Vsc2UKKyNkZWZpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPCisjZW5kaWYKKyNlbHNlCisj
ZGVmaW5lIEFCU0xfVEFSR0VUX0NSWVBUTworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEFCU0xfQVJD
SF9QUEMpCisvLyBOT1RFOiBLZWVwIGluIG1pbmQgdGhhdCBQUEMgY2FuIG9wZXJhdGUgaW4gbGl0
dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIG1vZGUsCisvLyBob3dldmVyIHRoZSBQUEMgYWx0aXZl
YyB2ZWN0b3IgcmVnaXN0ZXJzIChhbmQgdGh1cyB0aGUgQUVTIGluc3RydWN0aW9ucykKKy8vIGFs
d2F5cyBvcGVyYXRlIGluIGJpZy1lbmRpYW4gbW9kZS4KKworI2luY2x1ZGUgPGFsdGl2ZWMuaD4K
Ky8vIDxhbHRpdmVjLmg+ICNkZWZpbmVzIHZlY3RvciBfX3ZlY3RvcjsgaW4gQysrLCB0aGlzIGlz
IGJhZCBmb3JtLgorI3VuZGVmIHZlY3RvcgorCisvLyBSZWx5IG9uIHRoZSBQb3dlclBDIEFsdGlW
ZWMgdmVjdG9yIG9wZXJhdGlvbnMgZm9yIGFjY2VsZXJhdGVkIEFFUworLy8gaW5zdHJ1Y3Rpb25z
LiBHQ0Mgc3VwcG9ydCBvZiB0aGUgUFBDIHZlY3RvciB0eXBlcyBpcyBkZXNjcmliZWQgaW46Cisv
LyBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjLTQuOS4wL2djYy9Qb3dlclBDLUFs
dGlWZWNfMDAyZlZTWC1CdWlsdC1pbi1GdW5jdGlvbnMuaHRtbAorLy8KKy8vIEFscmVhZHkgcHJv
dmlkZXMgb3BlcmF0b3JePS4KK3VzaW5nIFZlY3RvcjEyOCA9IF9fdmVjdG9yIHVuc2lnbmVkIGxv
bmcgbG9uZzsgIC8vIE5PTElOVChydW50aW1lL2ludCkKKworbmFtZXNwYWNlIHsKKworaW5saW5l
IEFCU0xfVEFSR0VUX0NSWVBUTyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlT
X0lOTElORSBWZWN0b3IxMjgKK1JldmVyc2VCeXRlcyhjb25zdCBWZWN0b3IxMjgmIHYpIHsKKyAg
Ly8gUmV2ZXJzZXMgdGhlIGJ5dGVzIG9mIHRoZSB2ZWN0b3IuCisgIGNvbnN0IF9fdmVjdG9yIHVu
c2lnbmVkIGNoYXIgcGVybSA9IHsxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNywgIDYsICA1LCAgNCwgIDMsICAyLCAg
MSwgMH07CisgIHJldHVybiB2ZWNfcGVybSh2LCB2LCBwZXJtKTsKK30KKworLy8gV0FSTklORzog
dGhlc2UgbG9hZC9zdG9yZSBpbiBuYXRpdmUgYnl0ZSBvcmRlci4gSXQgaXMgT0sgdG8gbG9hZCBh
bmQgdGhlbgorLy8gc3RvcmUgYW4gdW5jaGFuZ2VkIHZlY3RvciwgYnV0IGludGVycHJldGluZyB0
aGUgYml0cyBhcyBhIG51bWJlciBvciBpbnB1dAorLy8gdG8gQUVTIHdpbGwgaGF2ZSB1bmRlZmlu
ZWQgcmVzdWx0cy4KK2lubGluZSBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9SQU5ET01fSU5URVJO
QUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgVmVjdG9yMTI4CitWZWN0b3IxMjhMb2FkKGNvbnN0
IHZvaWQqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIGZyb20pIHsKKyAgcmV0dXJuIHZl
Y192c3hfbGQoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBWZWN0b3IxMjgqPihmcm9tKSk7Cit9
CisKK2lubGluZSBBQlNMX1RBUkdFVF9DUllQVE8gQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklC
VVRFX0FMV0FZU19JTkxJTkUgdm9pZAorVmVjdG9yMTI4U3RvcmUoY29uc3QgVmVjdG9yMTI4JiB2
LCB2b2lkKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCB0bykgeworICB2ZWNfdnN4X3N0
KHYsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yMTI4Kj4odG8pKTsKK30KKworLy8gT25lIHJv
dW5kIG9mIEFFUy4gInJvdW5kX2tleSIgaXMgYSBwdWJsaWMgY29uc3RhbnQgZm9yIGJyZWFraW5n
IHRoZQorLy8gc3ltbWV0cnkgb2YgQUVTIChlbnN1cmVzIHByZXZpb3VzbHkgZXF1YWwgY29sdW1u
cyBkaWZmZXIgYWZ0ZXJ3YXJkcykuCitpbmxpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPIEFCU0xfUkFO
RE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFZlY3RvcjEyOAorQWVzUm91bmQo
Y29uc3QgVmVjdG9yMTI4JiBzdGF0ZSwgY29uc3QgVmVjdG9yMTI4JiByb3VuZF9rZXkpIHsKKyAg
cmV0dXJuIFZlY3RvcjEyOChfX2J1aWx0aW5fY3J5cHRvX3ZjaXBoZXIoc3RhdGUsIHJvdW5kX2tl
eSkpOworfQorCisvLyBFbmFibGVzIG5hdGl2ZSBsb2FkcyBpbiB0aGUgcm91bmQgbG9vcCBieSBw
cmUtc3dhcHBpbmcuCitpbmxpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPIEFCU0xfUkFORE9NX0lOVEVS
TkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIHZvaWQKK1N3YXBFbmRpYW4odWludDY0X3QqIEFC
U0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHN0YXRlKSB7CisgIHVzaW5nIGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6UmFuZGVuVHJhaXRzOworICBjb25zdGV4cHIgc2l6ZV90IGtMYW5lcyA9IDI7
CisgIGNvbnN0ZXhwciBzaXplX3Qga0ZlaXN0ZWxCbG9ja3MgPSBSYW5kZW5UcmFpdHM6OmtGZWlz
dGVsQmxvY2tzOworCisgIGZvciAodWludDMyX3QgYnJhbmNoID0gMDsgYnJhbmNoIDwga0ZlaXN0
ZWxCbG9ja3M7ICsrYnJhbmNoKSB7CisgICAgY29uc3QgVmVjdG9yMTI4IHYgPSBSZXZlcnNlQnl0
ZXMoVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIGJyYW5jaCkpOworICAgIFZlY3RvcjEy
OFN0b3JlKHYsIHN0YXRlICsga0xhbmVzICogYnJhbmNoKTsKKyAgfQorfQorCit9ICAvLyBuYW1l
c3BhY2UKKworI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfQVJNKSB8fCBkZWZpbmVkKEFCU0xfQVJD
SF9BQVJDSDY0KQorCisvLyBUaGlzIGFzbSBkaXJlY3RpdmUgd2lsbCBjYXVzZSB0aGUgZmlsZSB0
byBiZSBjb21waWxlZCB3aXRoIGNyeXB0byBleHRlbnNpb25zCisvLyB3aGV0aGVyIG9yIG5vdCB0
aGUgY3B1LWFyY2hpdGVjdHVyZSBzdXBwb3J0cyBpdC4KKyNpZiBBQlNMX1JBTkRFTl9IV0FFU19J
TVBMX0NSWVBUT19ESVJFQ1RJVkUKK2FzbSgiLmFyY2hfZXh0ZW5zaW9uICBjcnlwdG9cbiIpOwor
CisvLyBPdmVycmlkZSBtaXNzaW5nIGRlZmluZXMuCisjaWYgIWRlZmluZWQoX19BUk1fTkVPTikK
KyNkZWZpbmUgX19BUk1fTkVPTiAxCisjZW5kaWYKKworI2lmICFkZWZpbmVkKF9fQVJNX0ZFQVRV
UkVfQ1JZUFRPKQorI2RlZmluZSBfX0FSTV9GRUFUVVJFX0NSWVBUTyAxCisjZW5kaWYKKworI2Vu
ZGlmCisKKy8vIFJlbHkgb24gdGhlIEFSTSBORU9OK0NyeXB0byBhZHZhbmNlZCBzaW1kIHR5cGVz
LCBkZWZpbmVkIGluIDxhcm1fbmVvbi5oPi4KKy8vIHVpbnQ4eDE2X3QgaXMgdGhlIHVzZXIgYWxp
YXMgZm9yIHVuZGVybHlpbmcgX19zaW1kMTI4X3VpbnQ4X3QgdHlwZS4KKy8vIGh0dHA6Ly9pbmZv
Y2VudGVyLmFybS5jb20vaGVscC90b3BpYy9jb20uYXJtLmRvYy5paGkwMDczYS9JSEkwMDczQV9h
cm1fbmVvbl9pbnRyaW5zaWNzX3JlZi5wZGYKKy8vCisvLyA8YXJtX25lb24+IGRlZmluZXMgdGhl
IGZvbGxvd2luZworLy8KKy8vIHR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlw
ZSgxNikpKSB1aW50OF90IHVpbnQ4eDE2X3Q7CisvLyB0eXBlZGVmIF9fYXR0cmlidXRlX18oKG5l
b25fdmVjdG9yX3R5cGUoMTYpKSkgaW50OF90IGludDh4MTZfdDsKKy8vIHR5cGVkZWYgX19hdHRy
aWJ1dGVfXygobmVvbl9wb2x5dmVjdG9yX3R5cGUoMTYpKSkgaW50OF90IHBvbHk4eDE2X3Q7Cisv
LworLy8gdmxkMXFfdgorLy8gdnN0MXFfdgorLy8gdmFlc2VxX3YKKy8vIHZhZXNtY3FfdgorI2lu
Y2x1ZGUgPGFybV9uZW9uLmg+CisKKy8vIEFscmVhZHkgcHJvdmlkZXMgb3BlcmF0b3JePS4KK3Vz
aW5nIFZlY3RvcjEyOCA9IHVpbnQ4eDE2X3Q7CisKK25hbWVzcGFjZSB7CisKK2lubGluZSBBQlNM
X1RBUkdFVF9DUllQVE8gQUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJ
TkUgVmVjdG9yMTI4CitWZWN0b3IxMjhMb2FkKGNvbnN0IHZvaWQqIEFCU0xfUkFORE9NX0lOVEVS
TkFMX1JFU1RSSUNUIGZyb20pIHsKKyAgcmV0dXJuIHZsZDFxX3U4KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGZyb20pKTsKK30KKworaW5saW5lIEFCU0xfVEFSR0VUX0NSWVBUTyBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSB2b2lkCitWZWN0b3Ix
MjhTdG9yZShjb25zdCBWZWN0b3IxMjgmIHYsIHZvaWQqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JF
U1RSSUNUIHRvKSB7CisgIHZzdDFxX3U4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRvKSwg
dik7Cit9CisKKy8vIE9uZSByb3VuZCBvZiBBRVMuICJyb3VuZF9rZXkiIGlzIGEgcHVibGljIGNv
bnN0YW50IGZvciBicmVha2luZyB0aGUKKy8vIHN5bW1ldHJ5IG9mIEFFUyAoZW5zdXJlcyBwcmV2
aW91c2x5IGVxdWFsIGNvbHVtbnMgZGlmZmVyIGFmdGVyd2FyZHMpLgoraW5saW5lIEFCU0xfVEFS
R0VUX0NSWVBUTyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBW
ZWN0b3IxMjgKK0Flc1JvdW5kKGNvbnN0IFZlY3RvcjEyOCYgc3RhdGUsIGNvbnN0IFZlY3RvcjEy
OCYgcm91bmRfa2V5KSB7CisgIC8vIEl0IGlzIGltcG9ydGFudCB0byBhbHdheXMgdXNlIHRoZSBm
dWxsIHJvdW5kIGZ1bmN0aW9uIC0gb21pdHRpbmcgdGhlCisgIC8vIGZpbmFsIE1peENvbHVtbnMg
cmVkdWNlcyBzZWN1cml0eSBbaHR0cHM6Ly9lcHJpbnQuaWFjci5vcmcvMjAxMC8wNDEucGRmXQor
ICAvLyBhbmQgZG9lcyBub3QgaGVscCBiZWNhdXNlIHdlIG5ldmVyIGRlY3J5cHQuCisgIC8vCisg
IC8vIE5vdGUgdGhhdCBBUk0gZGl2aWRlcyBBRVMgaW5zdHJ1Y3Rpb25zIGRpZmZlcmVudGx5IHRo
YW4geDg2IC8gUFBDLAorICAvLyBBbmQgd2UgbmVlZCB0byBza2lwIHRoZSBmaXJzdCBBZGRSb3Vu
ZEtleSBzdGVwIGFuZCBhZGQgYW4gZXh0cmEKKyAgLy8gQWRkUm91bmRLZXkgc3RlcCB0byB0aGUg
ZW5kLiBMdWNreSBmb3IgdXMgdGhpcyBpcyBqdXN0IFhPUi4KKyAgcmV0dXJuIHZhZXNtY3FfdTgo
dmFlc2VxX3U4KHN0YXRlLCB1aW50OHgxNl90e30pKSBeIHJvdW5kX2tleTsKK30KKworaW5saW5l
IEFCU0xfVEFSR0VUX0NSWVBUTyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlT
X0lOTElORSB2b2lkCitTd2FwRW5kaWFuKHVpbnQ2NF90KiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9S
RVNUUklDVCkge30KKworfSAgLy8gbmFtZXNwYWNlCisKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNI
X1g4Nl82NCkgfHwgZGVmaW5lZChBQlNMX0FSQ0hfWDg2XzMyKQorLy8gT24geDg2IHdlIHJlbHkg
b24gdGhlIGFlc25pIGluc3RydWN0aW9ucworI2luY2x1ZGUgPHdtbWludHJpbi5oPgorCituYW1l
c3BhY2UgeworCisvLyBWZWN0b3IxMjggY2xhc3MgaXMgb25seSB3cmFwcGVyIGZvciBfX20xMjhp
LCBiZW5jaG1hcmsgaW5kaWNhdGVzIHRoYXQgaXQncworLy8gZmFzdGVyIHRoYW4gdXNpbmcgX19t
MTI4aSBkaXJlY3RseS4KK2NsYXNzIFZlY3RvcjEyOCB7CisgcHVibGljOgorICAvLyBDb252ZXJ0
IGZyb20vdG8gaW50cmluc2ljcy4KKyAgaW5saW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJ
QlVURV9BTFdBWVNfSU5MSU5FIGV4cGxpY2l0IFZlY3RvcjEyOCgKKyAgICAgIGNvbnN0IF9fbTEy
OGkmIFZlY3RvcjEyOCkKKyAgICAgIDogZGF0YV8oVmVjdG9yMTI4KSB7fQorCisgIGlubGluZSBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBfX20xMjhpIGRhdGEo
KSBjb25zdCB7CisgICAgcmV0dXJuIGRhdGFfOworICB9CisKKyAgaW5saW5lIEFCU0xfUkFORE9N
X0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIFZlY3RvcjEyOCYgb3BlcmF0b3JePSgK
KyAgICAgIGNvbnN0IFZlY3RvcjEyOCYgb3RoZXIpIHsKKyAgICBkYXRhXyA9IF9tbV94b3Jfc2kx
MjgoZGF0YV8sIG90aGVyLmRhdGEoKSk7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyBwcml2
YXRlOgorICBfX20xMjhpIGRhdGFfOworfTsKKworaW5saW5lIEFCU0xfVEFSR0VUX0NSWVBUTyBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBWZWN0b3IxMjgKK1Zl
Y3RvcjEyOExvYWQoY29uc3Qgdm9pZCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1QgZnJv
bSkgeworICByZXR1cm4gVmVjdG9yMTI4KF9tbV9sb2FkX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgX19tMTI4aSo+KGZyb20pKSk7Cit9CisKK2lubGluZSBBQlNMX1RBUkdFVF9DUllQVE8g
QUJTTF9SQU5ET01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgdm9pZAorVmVjdG9y
MTI4U3RvcmUoY29uc3QgVmVjdG9yMTI4JiB2LCB2b2lkKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9S
RVNUUklDVCB0bykgeworICBfbW1fc3RvcmVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhp
ICogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Q+KHRvKSwKKyAgICAgICAgICAgICAgICAg
IHYuZGF0YSgpKTsKK30KKworLy8gT25lIHJvdW5kIG9mIEFFUy4gInJvdW5kX2tleSIgaXMgYSBw
dWJsaWMgY29uc3RhbnQgZm9yIGJyZWFraW5nIHRoZQorLy8gc3ltbWV0cnkgb2YgQUVTIChlbnN1
cmVzIHByZXZpb3VzbHkgZXF1YWwgY29sdW1ucyBkaWZmZXIgYWZ0ZXJ3YXJkcykuCitpbmxpbmUg
QUJTTF9UQVJHRVRfQ1JZUFRPIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNf
SU5MSU5FIFZlY3RvcjEyOAorQWVzUm91bmQoY29uc3QgVmVjdG9yMTI4JiBzdGF0ZSwgY29uc3Qg
VmVjdG9yMTI4JiByb3VuZF9rZXkpIHsKKyAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGFsd2F5cyB1
c2UgdGhlIGZ1bGwgcm91bmQgZnVuY3Rpb24gLSBvbWl0dGluZyB0aGUKKyAgLy8gZmluYWwgTWl4
Q29sdW1ucyByZWR1Y2VzIHNlY3VyaXR5IFtodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEwLzA0
MS5wZGZdCisgIC8vIGFuZCBkb2VzIG5vdCBoZWxwIGJlY2F1c2Ugd2UgbmV2ZXIgZGVjcnlwdC4K
KyAgcmV0dXJuIFZlY3RvcjEyOChfbW1fYWVzZW5jX3NpMTI4KHN0YXRlLmRhdGEoKSwgcm91bmRf
a2V5LmRhdGEoKSkpOworfQorCitpbmxpbmUgQUJTTF9UQVJHRVRfQ1JZUFRPIEFCU0xfUkFORE9N
X0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIHZvaWQKK1N3YXBFbmRpYW4odWludDY0
X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUKSB7fQorCit9ICAvLyBuYW1lc3BhY2UK
KworI2VuZGlmCisKK25hbWVzcGFjZSB7CisKKy8vIHU2NHgyIGlzIGEgMTI4LWJpdCwgKDIgeCB1
aW50NjRfdCBsYW5lcykgc3RydWN0IHVzZWQgdG8gc3RvcmUKKy8vIHRoZSByYW5kZW5fa2V5cy4K
K3N0cnVjdCBhbGlnbmFzKDE2KSB1NjR4MiB7CisgIGNvbnN0ZXhwciB1NjR4Mih1aW50NjRfdCBo
aSwgdWludDY0X3QgbG8pCisjaWYgZGVmaW5lZChBQlNMX0FSQ0hfUFBDKQorICAgICAgLy8gVGhp
cyBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBQUEMgcnVubmluZyBpbiBsaXR0bGUtZW5kaWFuIG1vZGU7
CisgICAgICAvLyBXZSBieXRlLXN3YXAgdGhlIHU2NHgyIHN0cnVjdHVyZSBmcm9tIGxpdHRsZS1l
bmRpYW4gdG8gYmlnLWVuZGlhbgorICAgICAgLy8gYmVjYXVzZSBhbHRpdmVjIGFsd2F5cyBydW5z
IGluIGJpZy1lbmRpYW4gbW9kZS4KKyAgICAgIDogdntfX2J1aWx0aW5fYnN3YXA2NChoaSksIF9f
YnVpbHRpbl9ic3dhcDY0KGxvKX0geworI2Vsc2UKKyAgICAgIDogdntsbywgaGl9IHsKKyNlbmRp
ZgorICB9CisKKyAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1NjR4MiYgb3RoZXIp
IGNvbnN0IHsKKyAgICByZXR1cm4gdlswXSA9PSBvdGhlci52WzBdICYmIHZbMV0gPT0gb3RoZXIu
dlsxXTsKKyAgfQorCisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgdTY0eDImIG90
aGVyKSBjb25zdCB7CisgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICB9CisKKyAgdWlu
dDY0X3QgdlsyXTsKK307ICAvLyBuYW1lc3BhY2UKKworI2lmZGVmIF9fY2xhbmdfXworI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV3Vua25vd24tcHJhZ21hcyIKKyNlbmRpZgorCisvLyBBdCB0aGlzIHBvaW50LCBhbGwgb2Yg
dGhlIHBsYXRmb3JtLXNwZWNpZmljIGZlYXR1cmVzIGhhdmUgYmVlbiBkZWZpbmVkIC8KKy8vIGlt
cGxlbWVudGVkLgorLy8KKy8vIFJFUVVJUkVTOiB1c2luZyB1NjR4MiA9IC4uLgorLy8gUkVRVUlS
RVM6IHVzaW5nIFZlY3RvcjEyOCA9IC4uLgorLy8gUkVRVUlSRVM6IFZlY3RvcjEyOCBWZWN0b3Ix
MjhMb2FkKHZvaWQqKSB7Li4ufQorLy8gUkVRVUlSRVM6IHZvaWQgVmVjdG9yMTI4U3RvcmUoVmVj
dG9yMTI4LCB2b2lkKikgey4uLn0KKy8vIFJFUVVJUkVTOiBWZWN0b3IxMjggQWVzUm91bmQoVmVj
dG9yMTI4LCBWZWN0b3IxMjgpIHsuLi59CisvLyBSRVFVSVJFUzogdm9pZCBTd2FwRW5kaWFuKHVp
bnQ2NF90Kikgey4uLn0KKy8vCisvLyBQUk9WSURFUzogYWJzbDo6cmFuZG9tX2ludGVybmFsOjpS
YW5kZW5Id0Flczo6QWJzb3JiCisvLyBQUk9WSURFUzogYWJzbDo6cmFuZG9tX2ludGVybmFsOjpS
YW5kZW5Id0Flczo6R2VuZXJhdGUKKworLy8gUkFORGVuID0gUkFORG9tIGdlbmVyYXRvciBvciBi
ZWV0cm9vdHMgaW4gU3dpc3MgR2VybWFuLgorLy8gJ1N0cm9uZycgKHdlbGwtZGlzdHJpYnV0ZWQs
IHVucHJlZGljdGFibGUsIGJhY2t0cmFja2luZy1yZXNpc3RhbnQpIHJhbmRvbQorLy8gZ2VuZXJh
dG9yLCBmYXN0ZXIgaW4gc29tZSBiZW5jaG1hcmtzIHRoYW4gc3RkOjptdDE5OTM3XzY0IGFuZCBw
Y2c2NF9jMzIuCisvLworLy8gSGlnaC1sZXZlbCBzdW1tYXJ5OgorLy8gMSkgUmV2ZXJpZSAoc2Vl
ICJBIFJvYnVzdCBhbmQgU3BvbmdlLUxpa2UgUFJORyB3aXRoIEltcHJvdmVkIEVmZmljaWVuY3ki
KSBpcworLy8gICAgYSBzcG9uZ2UtbGlrZSByYW5kb20gZ2VuZXJhdG9yIHRoYXQgcmVxdWlyZXMg
YSBjcnlwdG9ncmFwaGljIHBlcm11dGF0aW9uLgorLy8gICAgSXQgaW1wcm92ZXMgdXBvbiAiUHJv
dmFibHkgUm9idXN0IFNwb25nZS1CYXNlZCBQUk5HcyBhbmQgS0RGcyIgYnkKKy8vICAgIGFjaGll
dmluZyBiYWNrdHJhY2tpbmcgcmVzaXN0YW5jZSB3aXRoIG9ubHkgb25lIFBlcm11dGUoKSBwZXIg
YnVmZmVyLgorLy8KKy8vIDIpICJTaW1waXJhIHYyOiBBIEZhbWlseSBvZiBFZmZpY2llbnQgUGVy
bXV0YXRpb25zIFVzaW5nIHRoZSBBRVMgUm91bmQKKy8vICAgIEZ1bmN0aW9uIiBjb25zdHJ1Y3Rz
IHVwIHRvIDEwMjQtYml0IHBlcm11dGF0aW9ucyB1c2luZyBhbiBpbXByb3ZlZAorLy8gICAgR2Vu
ZXJhbGl6ZWQgRmVpc3RlbCBuZXR3b3JrIHdpdGggMi1yb3VuZCBBRVMtMTI4IGZ1bmN0aW9ucy4g
VGhpcyBGZWlzdGVsCisvLyAgICBibG9jayBzaHVmZmxlIGFjaGlldmVzIGRpZmZ1c2lvbiBmYXN0
ZXIgYW5kIGlzIGxlc3MgdnVsbmVyYWJsZSB0bworLy8gICAgc2xpY2VkLWJpY2xpcXVlIGF0dGFj
a3MgdGhhbiB0aGUgVHlwZS0yIGN5Y2xpYyBzaHVmZmxlLgorLy8KKy8vIDMpICJJbXByb3Zpbmcg
dGhlIEdlbmVyYWxpemVkIEZlaXN0ZWwiIGFuZCAiTmV3IGNyaXRlcmlvbiBmb3IgZGlmZnVzaW9u
CisvLyAgICBwcm9wZXJ0eSIgZXh0ZW5kcyB0aGUgc2FtZSBraW5kIG9mIGltcHJvdmVkIEZlaXN0
ZWwgYmxvY2sgc2h1ZmZsZSB0byAxNgorLy8gICAgYnJhbmNoZXMsIHdoaWNoIGVuYWJsZXMgYSAy
MDQ4LWJpdCBwZXJtdXRhdGlvbi4KKy8vCisvLyBXZSBjb21iaW5lIHRoZXNlIHRocmVlIGlkZWFz
IGFuZCBhbHNvIGNoYW5nZSBTaW1waXJhJ3Mgc3Vicm91bmQga2V5cyBmcm9tCisvLyBzdHJ1Y3R1
cmVkL2xvdy1lbnRyb3B5IGNvdW50ZXJzIHRvIGRpZ2l0cyBvZiBQaS4KKworLy8gUmFuZGVuIGNv
bnN0YW50cy4KK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmFuZGVuVHJhaXRzOworY29u
c3RleHByIHNpemVfdCBrU3RhdGVCeXRlcyA9IFJhbmRlblRyYWl0czo6a1N0YXRlQnl0ZXM7Citj
b25zdGV4cHIgc2l6ZV90IGtDYXBhY2l0eUJ5dGVzID0gUmFuZGVuVHJhaXRzOjprQ2FwYWNpdHlC
eXRlczsKK2NvbnN0ZXhwciBzaXplX3Qga0ZlaXN0ZWxCbG9ja3MgPSBSYW5kZW5UcmFpdHM6OmtG
ZWlzdGVsQmxvY2tzOworY29uc3RleHByIHNpemVfdCBrRmVpc3RlbFJvdW5kcyA9IFJhbmRlblRy
YWl0czo6a0ZlaXN0ZWxSb3VuZHM7Citjb25zdGV4cHIgc2l6ZV90IGtGZWlzdGVsRnVuY3Rpb25z
ID0gUmFuZGVuVHJhaXRzOjprRmVpc3RlbEZ1bmN0aW9uczsKKworLy8gSW5kZXBlbmRlbnQga2V5
cyAoMjcyID0gMi4xIEtpQikgZm9yIHRoZSBmaXJzdCBBRVMgc3Vicm91bmQgb2YgZWFjaCBmdW5j
dGlvbi4KK2NvbnN0ZXhwciBzaXplX3Qga0tleXMgPSBrRmVpc3RlbFJvdW5kcyAqIGtGZWlzdGVs
RnVuY3Rpb25zOworCisvLyBJTkNMVURFIGtleXMuCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50
ZXJuYWwvcmFuZGVuLWtleXMuaW5jIgorCitzdGF0aWNfYXNzZXJ0KGtLZXlzID09IGtSb3VuZEtl
eXMsICJrS2V5cyBhbmQga1JvdW5kS2V5cyBtdXN0IGJlIGVxdWFsIik7CitzdGF0aWNfYXNzZXJ0
KHJvdW5kX2tleXNba0tleXMgLSAxXSAhPSB1NjR4MigwLCAwKSwKKyAgICAgICAgICAgICAgIlRv
byBmZXcgcm91bmRfa2V5cyBpbml0aWFsaXplcnMiKTsKKworLy8gTnVtYmVyIG9mIHVpbnQ2NF90
IGxhbmVzIHBlciAxMjgtYml0IHZlY3RvcjsKK2NvbnN0ZXhwciBzaXplX3Qga0xhbmVzID0gMjsK
KworLy8gQmxvY2sgc2h1ZmZsZXMgYXBwbGllcyBhIHNodWZmbGUgdG8gdGhlIGVudGlyZSBzdGF0
ZSBiZXR3ZWVuIEFFUyByb3VuZHMuCisvLyBJbXByb3ZlZCBvZGQtZXZlbiBzaHVmZmxlIGZyb20g
Ik5ldyBjcml0ZXJpb24gZm9yIGRpZmZ1c2lvbiBwcm9wZXJ0eSIuCitpbmxpbmUgQUJTTF9SQU5E
T01fSU5URVJOQUxfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgQUJTTF9UQVJHRVRfQ1JZUFRPIHZv
aWQKK0Jsb2NrU2h1ZmZsZSh1aW50NjRfdCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qg
c3RhdGUpIHsKKyAgc3RhdGljX2Fzc2VydChrRmVpc3RlbEJsb2NrcyA9PSAxNiwgIkV4cGVjdGlu
ZyAxNiBGZWlzdGVsQmxvY2tzLiIpOworCisgIGNvbnN0ZXhwciBzaXplX3Qgc2h1ZmZsZVtrRmVp
c3RlbEJsb2Nrc10gPSB7NywgIDIsIDEzLCA0LCAgMTEsIDgsICAzLCA2LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAwLCA5LCAgMTAsIDEsICAxNCwg
NSwgMTJ9OworCisgIC8vIFRoZSBmdWxseSB1bnJvbGxlZCBsb29wIHdpdGhvdXQgdGhlIG1lbWNw
eSBpbXByb3ZlcyB0aGUgc3BlZWQgYnkgYWJvdXQKKyAgLy8gMzAlIG92ZXIgdGhlIGVxdWl2YWxl
bnQgbG9vcC4KKyAgY29uc3QgVmVjdG9yMTI4IHYwID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtM
YW5lcyAqIHNodWZmbGVbMF0pOworICBjb25zdCBWZWN0b3IxMjggdjEgPSBWZWN0b3IxMjhMb2Fk
KHN0YXRlICsga0xhbmVzICogc2h1ZmZsZVsxXSk7CisgIGNvbnN0IFZlY3RvcjEyOCB2MiA9IFZl
Y3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzJdKTsKKyAgY29uc3QgVmVjdG9y
MTI4IHYzID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIHNodWZmbGVbM10pOworICBj
b25zdCBWZWN0b3IxMjggdjQgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogc2h1ZmZs
ZVs0XSk7CisgIGNvbnN0IFZlY3RvcjEyOCB2NSA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFu
ZXMgKiBzaHVmZmxlWzVdKTsKKyAgY29uc3QgVmVjdG9yMTI4IHY2ID0gVmVjdG9yMTI4TG9hZChz
dGF0ZSArIGtMYW5lcyAqIHNodWZmbGVbNl0pOworICBjb25zdCBWZWN0b3IxMjggdjcgPSBWZWN0
b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogc2h1ZmZsZVs3XSk7CisgIGNvbnN0IFZlY3RvcjEy
OCB3MCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiBzaHVmZmxlWzhdKTsKKyAgY29u
c3QgVmVjdG9yMTI4IHcxID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIHNodWZmbGVb
OV0pOworICBjb25zdCBWZWN0b3IxMjggdzIgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVz
ICogc2h1ZmZsZVsxMF0pOworICBjb25zdCBWZWN0b3IxMjggdzMgPSBWZWN0b3IxMjhMb2FkKHN0
YXRlICsga0xhbmVzICogc2h1ZmZsZVsxMV0pOworICBjb25zdCBWZWN0b3IxMjggdzQgPSBWZWN0
b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogc2h1ZmZsZVsxMl0pOworICBjb25zdCBWZWN0b3Ix
MjggdzUgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogc2h1ZmZsZVsxM10pOworICBj
b25zdCBWZWN0b3IxMjggdzYgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogc2h1ZmZs
ZVsxNF0pOworICBjb25zdCBWZWN0b3IxMjggdzcgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xh
bmVzICogc2h1ZmZsZVsxNV0pOworCisgIFZlY3RvcjEyOFN0b3JlKHYwLCBzdGF0ZSArIGtMYW5l
cyAqIDApOworICBWZWN0b3IxMjhTdG9yZSh2MSwgc3RhdGUgKyBrTGFuZXMgKiAxKTsKKyAgVmVj
dG9yMTI4U3RvcmUodjIsIHN0YXRlICsga0xhbmVzICogMik7CisgIFZlY3RvcjEyOFN0b3JlKHYz
LCBzdGF0ZSArIGtMYW5lcyAqIDMpOworICBWZWN0b3IxMjhTdG9yZSh2NCwgc3RhdGUgKyBrTGFu
ZXMgKiA0KTsKKyAgVmVjdG9yMTI4U3RvcmUodjUsIHN0YXRlICsga0xhbmVzICogNSk7CisgIFZl
Y3RvcjEyOFN0b3JlKHY2LCBzdGF0ZSArIGtMYW5lcyAqIDYpOworICBWZWN0b3IxMjhTdG9yZSh2
Nywgc3RhdGUgKyBrTGFuZXMgKiA3KTsKKyAgVmVjdG9yMTI4U3RvcmUodzAsIHN0YXRlICsga0xh
bmVzICogOCk7CisgIFZlY3RvcjEyOFN0b3JlKHcxLCBzdGF0ZSArIGtMYW5lcyAqIDkpOworICBW
ZWN0b3IxMjhTdG9yZSh3Miwgc3RhdGUgKyBrTGFuZXMgKiAxMCk7CisgIFZlY3RvcjEyOFN0b3Jl
KHczLCBzdGF0ZSArIGtMYW5lcyAqIDExKTsKKyAgVmVjdG9yMTI4U3RvcmUodzQsIHN0YXRlICsg
a0xhbmVzICogMTIpOworICBWZWN0b3IxMjhTdG9yZSh3NSwgc3RhdGUgKyBrTGFuZXMgKiAxMyk7
CisgIFZlY3RvcjEyOFN0b3JlKHc2LCBzdGF0ZSArIGtMYW5lcyAqIDE0KTsKKyAgVmVjdG9yMTI4
U3RvcmUodzcsIHN0YXRlICsga0xhbmVzICogMTUpOworfQorCisvLyBGZWlzdGVsIHJvdW5kIGZ1
bmN0aW9uIHVzaW5nIHR3byBBRVMgc3Vicm91bmRzLiBWZXJ5IHNpbWlsYXIgdG8gRigpCisvLyBm
cm9tIFNpbXBpcmEgdjIsIGJ1dCB3aXRoIGluZGVwZW5kZW50IHN1YnJvdW5kIGtleXMuIFVzZXMg
MTcgQUVTIHJvdW5kcworLy8gcGVyIDE2IGJ5dGVzICh2cy4gMTAgZm9yIEFFUy1DVFIpLiBDb21w
dXRpbmcgZWlnaHQgcm91bmQgZnVuY3Rpb25zIGluCisvLyBwYXJhbGxlbCBoaWRlcyB0aGUgNy1j
eWNsZSBBRVNOSSBsYXRlbmN5IG9uIEhTVy4gTm90ZSB0aGF0IHRoZSBGZWlzdGVsCisvLyBYT1Jz
IGFyZSAnZnJlZScgKGluY2x1ZGVkIGluIHRoZSBzZWNvbmQgQUVTIGluc3RydWN0aW9uKS4KK2lu
bGluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBBQlNMX1RB
UkdFVF9DUllQVE8gY29uc3QKKyAgICB1NjR4MioKKyAgICBGZWlzdGVsUm91bmQodWludDY0X3Qq
IEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHN0YXRlLAorICAgICAgICAgICAgICAgICBj
b25zdCB1NjR4MiogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qga2V5cykgeworICBzdGF0
aWNfYXNzZXJ0KGtGZWlzdGVsQmxvY2tzID09IDE2LCAiRXhwZWN0aW5nIDE2IEZlaXN0ZWxCbG9j
a3MuIik7CisKKyAgLy8gTVNWQyBkb2VzIGEgaG9ycmlibGUgam9iIGF0IHVucm9sbGluZyBsb29w
cy4KKyAgLy8gU28gd2UgdW5yb2xsIHRoZSBsb29wIGJ5IGhhbmQgdG8gaW1wcm92ZSB0aGUgcGVy
Zm9ybWFuY2UuCisgIGNvbnN0IFZlY3RvcjEyOCBzMCA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBr
TGFuZXMgKiAwKTsKKyAgY29uc3QgVmVjdG9yMTI4IHMxID0gVmVjdG9yMTI4TG9hZChzdGF0ZSAr
IGtMYW5lcyAqIDEpOworICBjb25zdCBWZWN0b3IxMjggczIgPSBWZWN0b3IxMjhMb2FkKHN0YXRl
ICsga0xhbmVzICogMik7CisgIGNvbnN0IFZlY3RvcjEyOCBzMyA9IFZlY3RvcjEyOExvYWQoc3Rh
dGUgKyBrTGFuZXMgKiAzKTsKKyAgY29uc3QgVmVjdG9yMTI4IHM0ID0gVmVjdG9yMTI4TG9hZChz
dGF0ZSArIGtMYW5lcyAqIDQpOworICBjb25zdCBWZWN0b3IxMjggczUgPSBWZWN0b3IxMjhMb2Fk
KHN0YXRlICsga0xhbmVzICogNSk7CisgIGNvbnN0IFZlY3RvcjEyOCBzNiA9IFZlY3RvcjEyOExv
YWQoc3RhdGUgKyBrTGFuZXMgKiA2KTsKKyAgY29uc3QgVmVjdG9yMTI4IHM3ID0gVmVjdG9yMTI4
TG9hZChzdGF0ZSArIGtMYW5lcyAqIDcpOworICBjb25zdCBWZWN0b3IxMjggczggPSBWZWN0b3Ix
MjhMb2FkKHN0YXRlICsga0xhbmVzICogOCk7CisgIGNvbnN0IFZlY3RvcjEyOCBzOSA9IFZlY3Rv
cjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiA5KTsKKyAgY29uc3QgVmVjdG9yMTI4IHMxMCA9IFZl
Y3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxMCk7CisgIGNvbnN0IFZlY3RvcjEyOCBzMTEg
PSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMTEpOworICBjb25zdCBWZWN0b3IxMjgg
czEyID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIDEyKTsKKyAgY29uc3QgVmVjdG9y
MTI4IHMxMyA9IFZlY3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAxMyk7CisgIGNvbnN0IFZl
Y3RvcjEyOCBzMTQgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMTQpOworICBjb25z
dCBWZWN0b3IxMjggczE1ID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIDE1KTsKKwor
ICAvLyBFbmNvZGUgZXZlbiBibG9ja3Mgd2l0aCBrZXlzLgorICBjb25zdCBWZWN0b3IxMjggZTAg
PSBBZXNSb3VuZChzMCwgVmVjdG9yMTI4TG9hZChrZXlzICsgMCkpOworICBjb25zdCBWZWN0b3Ix
MjggZTIgPSBBZXNSb3VuZChzMiwgVmVjdG9yMTI4TG9hZChrZXlzICsgMSkpOworICBjb25zdCBW
ZWN0b3IxMjggZTQgPSBBZXNSb3VuZChzNCwgVmVjdG9yMTI4TG9hZChrZXlzICsgMikpOworICBj
b25zdCBWZWN0b3IxMjggZTYgPSBBZXNSb3VuZChzNiwgVmVjdG9yMTI4TG9hZChrZXlzICsgMykp
OworICBjb25zdCBWZWN0b3IxMjggZTggPSBBZXNSb3VuZChzOCwgVmVjdG9yMTI4TG9hZChrZXlz
ICsgNCkpOworICBjb25zdCBWZWN0b3IxMjggZTEwID0gQWVzUm91bmQoczEwLCBWZWN0b3IxMjhM
b2FkKGtleXMgKyA1KSk7CisgIGNvbnN0IFZlY3RvcjEyOCBlMTIgPSBBZXNSb3VuZChzMTIsIFZl
Y3RvcjEyOExvYWQoa2V5cyArIDYpKTsKKyAgY29uc3QgVmVjdG9yMTI4IGUxNCA9IEFlc1JvdW5k
KHMxNCwgVmVjdG9yMTI4TG9hZChrZXlzICsgNykpOworCisgIC8vIEVuY29kZSBvZGQgYmxvY2tz
IHdpdGggZXZlbiBvdXRwdXQgZnJvbSBhYm92ZS4KKyAgY29uc3QgVmVjdG9yMTI4IG8xID0gQWVz
Um91bmQoZTAsIHMxKTsKKyAgY29uc3QgVmVjdG9yMTI4IG8zID0gQWVzUm91bmQoZTIsIHMzKTsK
KyAgY29uc3QgVmVjdG9yMTI4IG81ID0gQWVzUm91bmQoZTQsIHM1KTsKKyAgY29uc3QgVmVjdG9y
MTI4IG83ID0gQWVzUm91bmQoZTYsIHM3KTsKKyAgY29uc3QgVmVjdG9yMTI4IG85ID0gQWVzUm91
bmQoZTgsIHM5KTsKKyAgY29uc3QgVmVjdG9yMTI4IG8xMSA9IEFlc1JvdW5kKGUxMCwgczExKTsK
KyAgY29uc3QgVmVjdG9yMTI4IG8xMyA9IEFlc1JvdW5kKGUxMiwgczEzKTsKKyAgY29uc3QgVmVj
dG9yMTI4IG8xNSA9IEFlc1JvdW5kKGUxNCwgczE1KTsKKworICAvLyBTdG9yZSBvZGQgYmxvY2tz
LiAoVGhlc2Ugd2lsbCBiZSBzaHVmZmxlZCBsYXRlcikuCisgIFZlY3RvcjEyOFN0b3JlKG8xLCBz
dGF0ZSArIGtMYW5lcyAqIDEpOworICBWZWN0b3IxMjhTdG9yZShvMywgc3RhdGUgKyBrTGFuZXMg
KiAzKTsKKyAgVmVjdG9yMTI4U3RvcmUobzUsIHN0YXRlICsga0xhbmVzICogNSk7CisgIFZlY3Rv
cjEyOFN0b3JlKG83LCBzdGF0ZSArIGtMYW5lcyAqIDcpOworICBWZWN0b3IxMjhTdG9yZShvOSwg
c3RhdGUgKyBrTGFuZXMgKiA5KTsKKyAgVmVjdG9yMTI4U3RvcmUobzExLCBzdGF0ZSArIGtMYW5l
cyAqIDExKTsKKyAgVmVjdG9yMTI4U3RvcmUobzEzLCBzdGF0ZSArIGtMYW5lcyAqIDEzKTsKKyAg
VmVjdG9yMTI4U3RvcmUobzE1LCBzdGF0ZSArIGtMYW5lcyAqIDE1KTsKKworICByZXR1cm4ga2V5
cyArIDg7Cit9CisKKy8vIENyeXB0b2dyYXBoaWMgcGVybXV0YXRpb24gYmFzZWQgdmlhIHR5cGUt
MiBHZW5lcmFsaXplZCBGZWlzdGVsIE5ldHdvcmsuCisvLyBJbmRpc3Rpbmd1aXNoYWJsZSBmcm9t
IGlkZWFsIGJ5IGNob3Nlbi1jaXBoZXJ0ZXh0IGFkdmVyc2FyaWVzIHVzaW5nIGxlc3MgdGhhbgor
Ly8gMl42NCBxdWVyaWVzIGlmIHRoZSByb3VuZCBmdW5jdGlvbiBpcyBhIFBSRi4gVGhpcyBpcyBz
aW1pbGFyIHRvIHRoZSBiPTggY2FzZQorLy8gb2YgU2ltcGlyYSB2MiwgYnV0IG1vcmUgZWZmaWNp
ZW50IHRoYW4gaXRzIGdlbmVyaWMgY29uc3RydWN0aW9uIGZvciBiPTE2LgoraW5saW5lIEFCU0xf
UkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIEFCU0xfVEFSR0VUX0NSWVBU
TyB2b2lkCitQZXJtdXRlKGNvbnN0IHZvaWQqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNU
IGtleXMsCisgICAgICAgIHVpbnQ2NF90KiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklDVCBz
dGF0ZSkgeworICBjb25zdCB1NjR4MiogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qga2V5
czEyOCA9CisgICAgICBzdGF0aWNfY2FzdDxjb25zdCB1NjR4Mio+KGtleXMpOworCisgIC8vIChT
dWNjZXNzZnVsbHkgdW5yb2xsZWQ7IHRoZSBmaXJzdCBpdGVyYXRpb24ganVtcHMgaW50byB0aGUg
c2Vjb25kIGhhbGYpCisjaWZkZWYgX19jbGFuZ19fCisjcHJhZ21hIGNsYW5nIGxvb3AgdW5yb2xs
X2NvdW50KDIpCisjZW5kaWYKKyAgZm9yIChzaXplX3Qgcm91bmQgPSAwOyByb3VuZCA8IGtGZWlz
dGVsUm91bmRzOyArK3JvdW5kKSB7CisgICAga2V5czEyOCA9IEZlaXN0ZWxSb3VuZChzdGF0ZSwg
a2V5czEyOCk7CisgICAgQmxvY2tTaHVmZmxlKHN0YXRlKTsKKyAgfQorfQorCit9ICAvLyBuYW1l
c3BhY2UKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisK
K2Jvb2wgSGFzUmFuZGVuSHdBZXNJbXBsZW1lbnRhdGlvbigpIHsgcmV0dXJuIHRydWU7IH0KKwor
Y29uc3Qgdm9pZCogQUJTTF9UQVJHRVRfQ1JZUFRPIEFCU0xfRlVOQ1RJT05fQUxJR04zMiBBQlNM
X0FUVFJJQlVURV9GTEFUVEVOCitSYW5kZW5Id0Flczo6R2V0S2V5cygpIHsKKyAgLy8gUm91bmQg
a2V5cyBmb3Igb25lIEFFUyBwZXIgRmVpc3RlbCByb3VuZCBhbmQgYnJhbmNoLgorICAvLyBUaGUg
Y2Fub25pY2FsIGltcGxlbWVudGF0aW9uIHVzZXMgZmlyc3QgZGlnaXRzIG9mIFBpLgorICByZXR1
cm4gcm91bmRfa2V5czsKK30KKworLy8gTk9MSU5UTkVYVExJTkUKK3ZvaWQgQUJTTF9UQVJHRVRf
Q1JZUFRPIEFCU0xfRlVOQ1RJT05fQUxJR04zMiBBQlNMX0FUVFJJQlVURV9GTEFUVEVOCitSYW5k
ZW5Id0Flczo6QWJzb3JiKGNvbnN0IHZvaWQqIHNlZWRfdm9pZCwgdm9pZCogc3RhdGVfdm9pZCkg
eworICB1aW50NjRfdCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc3RhdGUgPQorICAg
ICAgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KHN0YXRlX3ZvaWQpOworICBjb25zdCB1aW50
NjRfdCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1Qgc2VlZCA9CisgICAgICByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90Kj4oc2VlZF92b2lkKTsKKworICBjb25zdGV4cHIgc2l6
ZV90IGtDYXBhY2l0eUJsb2NrcyA9IGtDYXBhY2l0eUJ5dGVzIC8gc2l6ZW9mKFZlY3RvcjEyOCk7
CisgIGNvbnN0ZXhwciBzaXplX3Qga1N0YXRlQmxvY2tzID0ga1N0YXRlQnl0ZXMgLyBzaXplb2Yo
VmVjdG9yMTI4KTsKKworICBzdGF0aWNfYXNzZXJ0KGtDYXBhY2l0eUJsb2NrcyAqIHNpemVvZihW
ZWN0b3IxMjgpID09IGtDYXBhY2l0eUJ5dGVzLAorICAgICAgICAgICAgICAgICJOb3QgaSpWIik7
CisgIHN0YXRpY19hc3NlcnQoa0NhcGFjaXR5QmxvY2tzID09IDEsICJVbmV4cGVjdGVkIFJhbmRl
biBrQ2FwYWNpdHlCbG9ja3MiKTsKKyAgc3RhdGljX2Fzc2VydChrU3RhdGVCbG9ja3MgPT0gMTYs
ICJVbmV4cGVjdGVkIFJhbmRlbiBrU3RhdGVCbG9ja3MiKTsKKworICBWZWN0b3IxMjggYjEgPSBW
ZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMSk7CisgIGIxIF49IFZlY3RvcjEyOExvYWQo
c2VlZCArIGtMYW5lcyAqIDApOworICBWZWN0b3IxMjhTdG9yZShiMSwgc3RhdGUgKyBrTGFuZXMg
KiAxKTsKKworICBWZWN0b3IxMjggYjIgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICog
Mik7CisgIGIyIF49IFZlY3RvcjEyOExvYWQoc2VlZCArIGtMYW5lcyAqIDEpOworICBWZWN0b3Ix
MjhTdG9yZShiMiwgc3RhdGUgKyBrTGFuZXMgKiAyKTsKKworICBWZWN0b3IxMjggYjMgPSBWZWN0
b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMyk7CisgIGIzIF49IFZlY3RvcjEyOExvYWQoc2Vl
ZCArIGtMYW5lcyAqIDIpOworICBWZWN0b3IxMjhTdG9yZShiMywgc3RhdGUgKyBrTGFuZXMgKiAz
KTsKKworICBWZWN0b3IxMjggYjQgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogNCk7
CisgIGI0IF49IFZlY3RvcjEyOExvYWQoc2VlZCArIGtMYW5lcyAqIDMpOworICBWZWN0b3IxMjhT
dG9yZShiNCwgc3RhdGUgKyBrTGFuZXMgKiA0KTsKKworICBWZWN0b3IxMjggYjUgPSBWZWN0b3Ix
MjhMb2FkKHN0YXRlICsga0xhbmVzICogNSk7CisgIGI1IF49IFZlY3RvcjEyOExvYWQoc2VlZCAr
IGtMYW5lcyAqIDQpOworICBWZWN0b3IxMjhTdG9yZShiNSwgc3RhdGUgKyBrTGFuZXMgKiA1KTsK
KworICBWZWN0b3IxMjggYjYgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogNik7Cisg
IGI2IF49IFZlY3RvcjEyOExvYWQoc2VlZCArIGtMYW5lcyAqIDUpOworICBWZWN0b3IxMjhTdG9y
ZShiNiwgc3RhdGUgKyBrTGFuZXMgKiA2KTsKKworICBWZWN0b3IxMjggYjcgPSBWZWN0b3IxMjhM
b2FkKHN0YXRlICsga0xhbmVzICogNyk7CisgIGI3IF49IFZlY3RvcjEyOExvYWQoc2VlZCArIGtM
YW5lcyAqIDYpOworICBWZWN0b3IxMjhTdG9yZShiNywgc3RhdGUgKyBrTGFuZXMgKiA3KTsKKwor
ICBWZWN0b3IxMjggYjggPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogOCk7CisgIGI4
IF49IFZlY3RvcjEyOExvYWQoc2VlZCArIGtMYW5lcyAqIDcpOworICBWZWN0b3IxMjhTdG9yZShi
OCwgc3RhdGUgKyBrTGFuZXMgKiA4KTsKKworICBWZWN0b3IxMjggYjkgPSBWZWN0b3IxMjhMb2Fk
KHN0YXRlICsga0xhbmVzICogOSk7CisgIGI5IF49IFZlY3RvcjEyOExvYWQoc2VlZCArIGtMYW5l
cyAqIDgpOworICBWZWN0b3IxMjhTdG9yZShiOSwgc3RhdGUgKyBrTGFuZXMgKiA5KTsKKworICBW
ZWN0b3IxMjggYjEwID0gVmVjdG9yMTI4TG9hZChzdGF0ZSArIGtMYW5lcyAqIDEwKTsKKyAgYjEw
IF49IFZlY3RvcjEyOExvYWQoc2VlZCArIGtMYW5lcyAqIDkpOworICBWZWN0b3IxMjhTdG9yZShi
MTAsIHN0YXRlICsga0xhbmVzICogMTApOworCisgIFZlY3RvcjEyOCBiMTEgPSBWZWN0b3IxMjhM
b2FkKHN0YXRlICsga0xhbmVzICogMTEpOworICBiMTEgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsg
a0xhbmVzICogMTApOworICBWZWN0b3IxMjhTdG9yZShiMTEsIHN0YXRlICsga0xhbmVzICogMTEp
OworCisgIFZlY3RvcjEyOCBiMTIgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMTIp
OworICBiMTIgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogMTEpOworICBWZWN0b3Ix
MjhTdG9yZShiMTIsIHN0YXRlICsga0xhbmVzICogMTIpOworCisgIFZlY3RvcjEyOCBiMTMgPSBW
ZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMTMpOworICBiMTMgXj0gVmVjdG9yMTI4TG9h
ZChzZWVkICsga0xhbmVzICogMTIpOworICBWZWN0b3IxMjhTdG9yZShiMTMsIHN0YXRlICsga0xh
bmVzICogMTMpOworCisgIFZlY3RvcjEyOCBiMTQgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xh
bmVzICogMTQpOworICBiMTQgXj0gVmVjdG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogMTMpOwor
ICBWZWN0b3IxMjhTdG9yZShiMTQsIHN0YXRlICsga0xhbmVzICogMTQpOworCisgIFZlY3RvcjEy
OCBiMTUgPSBWZWN0b3IxMjhMb2FkKHN0YXRlICsga0xhbmVzICogMTUpOworICBiMTUgXj0gVmVj
dG9yMTI4TG9hZChzZWVkICsga0xhbmVzICogMTQpOworICBWZWN0b3IxMjhTdG9yZShiMTUsIHN0
YXRlICsga0xhbmVzICogMTUpOworfQorCisvLyBOT0xJTlRORVhUTElORQordm9pZCBBQlNMX1RB
UkdFVF9DUllQVE8gQUJTTF9GVU5DVElPTl9BTElHTjMyIEFCU0xfQVRUUklCVVRFX0ZMQVRURU4K
K1JhbmRlbkh3QWVzOjpHZW5lcmF0ZShjb25zdCB2b2lkKiBrZXlzLCB2b2lkKiBzdGF0ZV92b2lk
KSB7CisgIHN0YXRpY19hc3NlcnQoa0NhcGFjaXR5Qnl0ZXMgPT0gc2l6ZW9mKFZlY3RvcjEyOCks
ICJDYXBhY2l0eSBtaXNtYXRjaCIpOworCisgIHVpbnQ2NF90KiBBQlNMX1JBTkRPTV9JTlRFUk5B
TF9SRVNUUklDVCBzdGF0ZSA9CisgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4oc3Rh
dGVfdm9pZCk7CisKKyAgY29uc3QgVmVjdG9yMTI4IHByZXZfaW5uZXIgPSBWZWN0b3IxMjhMb2Fk
KHN0YXRlKTsKKworICBTd2FwRW5kaWFuKHN0YXRlKTsKKworICBQZXJtdXRlKGtleXMsIHN0YXRl
KTsKKworICBTd2FwRW5kaWFuKHN0YXRlKTsKKworICAvLyBFbnN1cmUgYmFja3RyYWNraW5nIHJl
c2lzdGFuY2UuCisgIFZlY3RvcjEyOCBpbm5lciA9IFZlY3RvcjEyOExvYWQoc3RhdGUpOworICBp
bm5lciBePSBwcmV2X2lubmVyOworICBWZWN0b3IxMjhTdG9yZShpbm5lciwgc3RhdGUpOworfQor
CisjaWZkZWYgX19jbGFuZ19fCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYK
KworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
KworI2VuZGlmICAvLyAoQUJTTF9SQU5ERU5fSFdBRVNfSU1QTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9y
YW5kZW5faHdhZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGU2MDU1ZjAxYTk4Yjg1NzVhMDgyOGI3YjhlNDc4
MjE0Y2NmN2I3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRl
bl9od2Flcy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JBTkRFTl9IV0FFU19I
XworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SQU5ERU5fSFdBRVNfSF8KKworLy8gSEVS
TUVUSUMgTk9URTogVGhlIHJhbmRlbl9od2FlcyB0YXJnZXQgbXVzdCBub3QgaW50cm9kdWNlIGR1
cGxpY2F0ZQorLy8gc3ltYm9scyBmcm9tIGFyYml0cmFyeSBzeXN0ZW0gYW5kIG90aGVyIGhlYWRl
cnMsIHNpbmNlIGl0IG1heSBiZSBidWlsdAorLy8gd2l0aCBkaWZmZXJlbnQgZmxhZ3MgZnJvbSBv
dGhlciB0YXJnZXRzLCB1c2luZyBkaWZmZXJlbnQgbGV2ZWxzIG9mCisvLyBvcHRpbWl6YXRpb24s
IHBvdGVudGlhbGx5IGludHJvZHVjaW5nIE9EUiB2aW9sYXRpb25zLgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gUkFORGVuID0gUkFORG9tIGdl
bmVyYXRvciBvciBiZWV0cm9vdHMgaW4gU3dpc3MgR2VybWFuLgorLy8gJ1N0cm9uZycgKHdlbGwt
ZGlzdHJpYnV0ZWQsIHVucHJlZGljdGFibGUsIGJhY2t0cmFja2luZy1yZXNpc3RhbnQpIHJhbmRv
bQorLy8gZ2VuZXJhdG9yLCBmYXN0ZXIgaW4gc29tZSBiZW5jaG1hcmtzIHRoYW4gc3RkOjptdDE5
OTM3XzY0IGFuZCBwY2c2NF9jMzIuCisvLworLy8gUmFuZGVuSHdBZXMgaW1wbGVtZW50cyB0aGUg
YmFzaWMgc3RhdGUgbWFuaXB1bGF0aW9uIG1ldGhvZHMuCitjbGFzcyBSYW5kZW5Id0FlcyB7Cisg
cHVibGljOgorICBzdGF0aWMgdm9pZCBHZW5lcmF0ZShjb25zdCB2b2lkKiBrZXlzLCB2b2lkKiBz
dGF0ZV92b2lkKTsKKyAgc3RhdGljIHZvaWQgQWJzb3JiKGNvbnN0IHZvaWQqIHNlZWRfdm9pZCwg
dm9pZCogc3RhdGVfdm9pZCk7CisgIHN0YXRpYyBjb25zdCB2b2lkKiBHZXRLZXlzKCk7Cit9Owor
CisvLyBIYXNSYW5kZW5Id0Flc0ltcGxlbWVudGF0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIHRoZXJl
IGlzIGFuIGFjY2VsZXJhdGVkCisvLyBpbXBsZW1lbnRhdGlvbiwgYW5kIGZhbHNlIG90aGVyd2lz
ZS4gIElmIHRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uLAorLy8gdGhlbiBhdHRlbXB0aW5nIHRv
IHVzZSBpdCB3aWxsIGFib3J0IHRoZSBwcm9ncmFtLgorYm9vbCBIYXNSYW5kZW5Id0Flc0ltcGxl
bWVudGF0aW9uKCk7CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5h
bWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX0hX
QUVTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2h3YWVzX3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2h3YWVzX3Rlc3QuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTdjYmQ0NmIyZGQ1ODJmMTY4ODU4M2RiZWFmYWMwOWI2MjU4YWM0YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXNfdGVzdC5jYwpAQCAt
MCwwICsxLDEwMiBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5faHdhZXMuaCIKKworI2luY2x1
ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9p
bnRlcm5hbC9wbGF0Zm9ybS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3JhbmRl
bl9kZXRlY3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fdHJhaXRz
LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaCIKKworbmFtZXNwYWNlIHsK
KwordXNpbmcgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSYW5kZW5Id0FlczsKK3VzaW5nIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6UmFuZGVuVHJhaXRzOworCitzdHJ1Y3QgcmFuZGVuIHsKKyAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3Qga1N0YXRlU2l6ZVQgPQorICAgICAgUmFuZGVuVHJhaXRzOjpr
U3RhdGVCeXRlcyAvIHNpemVvZih1aW50NjRfdCk7CisgIHVpbnQ2NF90IHN0YXRlW2tTdGF0ZVNp
emVUXTsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1NlZWRTaXplVCA9CisgICAgICBSYW5k
ZW5UcmFpdHM6OmtTZWVkQnl0ZXMgLyBzaXplb2YodWludDMyX3QpOworICB1aW50MzJfdCBzZWVk
W2tTZWVkU2l6ZVRdOworfTsKKworVEVTVChSYW5kZW5Id0Flc1Rlc3QsIERlZmF1bHQpIHsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDUFVTdXBwb3J0c1JhbmRlbkh3QWVz
KCkpOworCisgIGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW10gPSB7CisgICAgICAweDZjNjUz
NDA5MGVlNmQzZWUsIDB4MDQ0ZTJiOWI5ZDUzMzNjNiwgMHhjM2MxNGYxMzRlNDMzOTc3LAorICAg
ICAgMHhkZGE5ZjQ3Y2Q5MDQxMGVlLCAweDg4N2JmMzA4N2ZkOGNhMTAsIDB4ZjBiNzgwZjU0NWM3
MjkxMiwKKyAgICAgIDB4MTVkYmIxZDM3Njk2NTk5ZiwgMHgzMGVjNjNiYWZmM2M2ZDU5LCAweGIy
OWY3MzYwNmY3ZjIwYTYsCisgICAgICAweDAyODA4YTMxNmY0OWE1NGMsIDB4M2I4ZmVhZjlkNWM4
ZTUwZSwgMHg5Y2JmNjA1ZTNmZDlkZThhLAorICAgICAgMHhjOTcwYWUxYTc4MTgzYmJiLCAweGQ4
YjJmZmQzNTYzMDFlZDUsIDB4ZjRiMzI3ZmUwZmM3M2MzNywKKyAgICAgIDB4Y2RmZDhkNzZlYjhm
OWExOSwgMHhjM2E1MDZlYjkxNDIwYzlkLCAweGQ1YWYwNWRkM2VmZjk1NTYsCisgICAgICAweDQ4
ZGIxYmI3OGY4M2M0YTEsIDB4NzAyMzkyMGUwZDZiZmU4YywgMHg1OGQzNTc1ODM0OTU2ZDQyLAor
ICAgICAgMHhlZDFlZjRjMjZiODdiODQwLCAweDhlZWYzMmEyM2UwYjJkZjMsIDB4NDk3Y2FiZjM0
MzExNTRmYywKKyAgICAgIDB4NGUyNDM3MDU3MDAyOWE4YiwgMHhkODhiNTc0OWYwOTBlNWVhLCAw
eGM2NTFhNTgyYTk3MDY5MmYsCisgICAgICAweDc4ZmNlYzJjYmI2MzQyZjUsIDB4NDYzY2I3NDU2
MTJmNTVkYiwgMHgzNTJlZTRhZDE4MTZhZmUzLAorICAgICAgMHgwMjZmZjM3NGMxMDFkYTdlLCAw
eDgxMWVmMDgyMWMzZGU4NTEsCisgIH07CisKKyAgYWxpZ25hcygxNikgcmFuZGVuIGQ7CisgIG1l
bXNldChkLnN0YXRlLCAwLCBzaXplb2YoZC5zdGF0ZSkpOworICBSYW5kZW5Id0Flczo6R2VuZXJh
dGUoUmFuZGVuSHdBZXM6OkdldEtleXMoKSwgZC5zdGF0ZSk7CisKKyAgdWludDY0X3QqIGlkID0g
ZC5zdGF0ZTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIGF1dG8g
YSA9IGFic2w6OlN0ckZvcm1hdCgiJSN4IiwgZWxlbSk7CisgICAgYXV0byBiID0gYWJzbDo6U3Ry
Rm9ybWF0KCIlI3giLCAqaWQrKyk7CisgICAgRVhQRUNUX0VRKGEsIGIpOworICB9Cit9CisKK30g
IC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CisgIHRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICBBQlNMX1JBV19MT0coSU5G
TywgIkFCU0xfSEFWRV9BQ0NFTEVSQVRFRF9BRVM9JWQiLCBBQlNMX0hBVkVfQUNDRUxFUkFURURf
QUVTKTsKKyAgQUJTTF9SQVdfTE9HKElORk8sICJBQlNMX1JBTkRPTV9JTlRFUk5BTF9BRVNfRElT
UEFUQ0g9JWQiLAorICAgICAgICAgICAgICAgQUJTTF9SQU5ET01fSU5URVJOQUxfQUVTX0RJU1BB
VENIKTsKKworI2lmIGRlZmluZWQoQUJTTF9BUkNIX1g4Nl82NCkKKyAgQUJTTF9SQVdfTE9HKElO
Rk8sICJBQlNMX0FSQ0hfWDg2XzY0Iik7CisjZWxpZiBkZWZpbmVkKEFCU0xfQVJDSF9YODZfMzIp
CisgIEFCU0xfUkFXX0xPRyhJTkZPLCAiQUJTTF9BUkNIX1g4Nl8zMiIpOworI2VsaWYgZGVmaW5l
ZChBQlNMX0FSQ0hfQUFSQ0g2NCkKKyAgQUJTTF9SQVdfTE9HKElORk8sICJBQlNMX0FSQ0hfQUFS
Q0g2NCIpOworI2VsaWYgZGVmaW5lZChBQlNMX0FSQ0hfQVJNKQorICBBQlNMX1JBV19MT0coSU5G
TywgIkFCU0xfQVJDSF9BUk0iKTsKKyNlbGlmIGRlZmluZWQoQUJTTF9BUkNIX1BQQykKKyAgQUJT
TF9SQVdfTE9HKElORk8sICJBQlNMX0FSQ0hfUFBDIik7CisjZWxzZQorICBBQlNMX1JBV19MT0co
SU5GTywgIkFSQ0ggVW5rbm93biIpOworI2VuZGlmCisKKyAgaW50IHggPSBhYnNsOjpyYW5kb21f
aW50ZXJuYWw6Okhhc1JhbmRlbkh3QWVzSW1wbGVtZW50YXRpb24oKTsKKyAgQUJTTF9SQVdfTE9H
KElORk8sICJIYXNSYW5kZW5Id0Flc0ltcGxlbWVudGF0aW9uID0gJWQiLCB4KTsKKworICBpbnQg
eSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q1BVU3VwcG9ydHNSYW5kZW5Id0FlcygpOworICBB
QlNMX1JBV19MT0coSU5GTywgIkNQVVN1cHBvcnRzUmFuZGVuSHdBZXMgPSAlZCIsIHgpOworCisg
IGlmICgheCB8fCAheSkgeworICAgIEFCU0xfUkFXX0xPRyhJTkZPLCAiU2tpcHBpbmcgUmFuZGVu
IEhXQUVTIHRlc3RzLiIpOworICAgIHJldHVybiAwOworICB9CisgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Nsb3cu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Nsb3cuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Ey
ZTJkYWE1M2Y1YTUyYTk0YWIxNGYxNTdlZWI5NzRhNTg3NWY2ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fc2xvdy5jYwpAQCAtMCwwICsxLDUxMiBAQAor
Ly8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNs
L3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fc2xvdy5oIgorCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNp
bmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGNzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9wbGF0Zm9ybS5oIgorCisvLyBBQlNMX0hBVkVfQVRUUklCVVRFCisjaWYg
IWRlZmluZWQoQUJTTF9IQVZFX0FUVFJJQlVURSkKKyNpZmRlZiBfX2hhc19hdHRyaWJ1dGUKKyNk
ZWZpbmUgQUJTTF9IQVZFX0FUVFJJQlVURSh4KSBfX2hhc19hdHRyaWJ1dGUoeCkKKyNlbHNlCisj
ZGVmaW5lIEFCU0xfSEFWRV9BVFRSSUJVVEUoeCkgMAorI2VuZGlmCisjZW5kaWYKKworI2lmIEFC
U0xfSEFWRV9BVFRSSUJVVEUoYWx3YXlzX2lubGluZSkgfHwgXAorICAgIChkZWZpbmVkKF9fR05V
Q19fKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pKQorI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5B
TF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBcCisgIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxp
bmUpKQorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIFdlIGNhbiBhY2hpZXZlIHNvbWV0aGlu
ZyBzaW1pbGFyIHRvIGF0dHJpYnV0ZSgoYWx3YXlzX2lubGluZSkpIHdpdGggTVNWQyBieQorLy8g
dXNpbmcgdGhlIF9fZm9yY2VpbmxpbmUga2V5d29yZCwgaG93ZXZlciB0aGlzIGlzIG5vdCBwZXJm
ZWN0LiBNU1ZDIGlzCisvLyBtdWNoIGxlc3MgYWdncmVzc2l2ZSBhYm91dCBpbmxpbmluZywgYW5k
IGV2ZW4gd2l0aCB0aGUgX19mb3JjZWlubGluZSBrZXl3b3JkLgorI2RlZmluZSBBQlNMX1JBTkRP
TV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBfX2ZvcmNlaW5saW5lCisjZWxzZQor
I2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQorI2Vu
ZGlmCisKK25hbWVzcGFjZSB7CisKKy8vIEFFUyBwb3J0aW9ucyBiYXNlZCBvbiByaWpuZGFlbC1h
bGctZnN0LmMsCisvLyBodHRwczovL2Zhc3RjcnlwdG8ub3JnL2Zyb250L21pc2MvcmlqbmRhZWwt
YWxnLWZzdC5jCisvLworLy8gSW1wbGVtZW50YXRpb24gb2YKKy8vIGh0dHA6Ly93d3cuY3NyYy5u
aXN0Lmdvdi9wdWJsaWNhdGlvbnMvZmlwcy9maXBzMTk3L2ZpcHMtMTk3LnBkZgorY29uc3RleHBy
IHVpbnQzMl90IHRlMFsyNTZdID0geworICAgIDB4YzY2MzYzYTUsIDB4Zjg3YzdjODQsIDB4ZWU3
Nzc3OTksIDB4ZjY3YjdiOGQsIDB4ZmZmMmYyMGQsIDB4ZDY2YjZiYmQsCisgICAgMHhkZTZmNmZi
MSwgMHg5MWM1YzU1NCwgMHg2MDMwMzA1MCwgMHgwMjAxMDEwMywgMHhjZTY3NjdhOSwgMHg1NjJi
MmI3ZCwKKyAgICAweGU3ZmVmZTE5LCAweGI1ZDdkNzYyLCAweDRkYWJhYmU2LCAweGVjNzY3Njlh
LCAweDhmY2FjYTQ1LCAweDFmODI4MjlkLAorICAgIDB4ODljOWM5NDAsIDB4ZmE3ZDdkODcsIDB4
ZWZmYWZhMTUsIDB4YjI1OTU5ZWIsIDB4OGU0NzQ3YzksIDB4ZmJmMGYwMGIsCisgICAgMHg0MWFk
YWRlYywgMHhiM2Q0ZDQ2NywgMHg1ZmEyYTJmZCwgMHg0NWFmYWZlYSwgMHgyMzljOWNiZiwgMHg1
M2E0YTRmNywKKyAgICAweGU0NzI3Mjk2LCAweDliYzBjMDViLCAweDc1YjdiN2MyLCAweGUxZmRm
ZDFjLCAweDNkOTM5M2FlLCAweDRjMjYyNjZhLAorICAgIDB4NmMzNjM2NWEsIDB4N2UzZjNmNDEs
IDB4ZjVmN2Y3MDIsIDB4ODNjY2NjNGYsIDB4NjgzNDM0NWMsIDB4NTFhNWE1ZjQsCisgICAgMHhk
MWU1ZTUzNCwgMHhmOWYxZjEwOCwgMHhlMjcxNzE5MywgMHhhYmQ4ZDg3MywgMHg2MjMxMzE1Mywg
MHgyYTE1MTUzZiwKKyAgICAweDA4MDQwNDBjLCAweDk1YzdjNzUyLCAweDQ2MjMyMzY1LCAweDlk
YzNjMzVlLCAweDMwMTgxODI4LCAweDM3OTY5NmExLAorICAgIDB4MGEwNTA1MGYsIDB4MmY5YTlh
YjUsIDB4MGUwNzA3MDksIDB4MjQxMjEyMzYsIDB4MWI4MDgwOWIsIDB4ZGZlMmUyM2QsCisgICAg
MHhjZGViZWIyNiwgMHg0ZTI3Mjc2OSwgMHg3ZmIyYjJjZCwgMHhlYTc1NzU5ZiwgMHgxMjA5MDkx
YiwgMHgxZDgzODM5ZSwKKyAgICAweDU4MmMyYzc0LCAweDM0MWExYTJlLCAweDM2MWIxYjJkLCAw
eGRjNmU2ZWIyLCAweGI0NWE1YWVlLCAweDViYTBhMGZiLAorICAgIDB4YTQ1MjUyZjYsIDB4NzYz
YjNiNGQsIDB4YjdkNmQ2NjEsIDB4N2RiM2IzY2UsIDB4NTIyOTI5N2IsIDB4ZGRlM2UzM2UsCisg
ICAgMHg1ZTJmMmY3MSwgMHgxMzg0ODQ5NywgMHhhNjUzNTNmNSwgMHhiOWQxZDE2OCwgMHgwMDAw
MDAwMCwgMHhjMWVkZWQyYywKKyAgICAweDQwMjAyMDYwLCAweGUzZmNmYzFmLCAweDc5YjFiMWM4
LCAweGI2NWI1YmVkLCAweGQ0NmE2YWJlLCAweDhkY2JjYjQ2LAorICAgIDB4NjdiZWJlZDksIDB4
NzIzOTM5NGIsIDB4OTQ0YTRhZGUsIDB4OTg0YzRjZDQsIDB4YjA1ODU4ZTgsIDB4ODVjZmNmNGEs
CisgICAgMHhiYmQwZDA2YiwgMHhjNWVmZWYyYSwgMHg0ZmFhYWFlNSwgMHhlZGZiZmIxNiwgMHg4
NjQzNDNjNSwgMHg5YTRkNGRkNywKKyAgICAweDY2MzMzMzU1LCAweDExODU4NTk0LCAweDhhNDU0
NWNmLCAweGU5ZjlmOTEwLCAweDA0MDIwMjA2LCAweGZlN2Y3ZjgxLAorICAgIDB4YTA1MDUwZjAs
IDB4NzgzYzNjNDQsIDB4MjU5ZjlmYmEsIDB4NGJhOGE4ZTMsIDB4YTI1MTUxZjMsIDB4NWRhM2Ez
ZmUsCisgICAgMHg4MDQwNDBjMCwgMHgwNThmOGY4YSwgMHgzZjkyOTJhZCwgMHgyMTlkOWRiYywg
MHg3MDM4Mzg0OCwgMHhmMWY1ZjUwNCwKKyAgICAweDYzYmNiY2RmLCAweDc3YjZiNmMxLCAweGFm
ZGFkYTc1LCAweDQyMjEyMTYzLCAweDIwMTAxMDMwLCAweGU1ZmZmZjFhLAorICAgIDB4ZmRmM2Yz
MGUsIDB4YmZkMmQyNmQsIDB4ODFjZGNkNGMsIDB4MTgwYzBjMTQsIDB4MjYxMzEzMzUsIDB4YzNl
Y2VjMmYsCisgICAgMHhiZTVmNWZlMSwgMHgzNTk3OTdhMiwgMHg4ODQ0NDRjYywgMHgyZTE3MTcz
OSwgMHg5M2M0YzQ1NywgMHg1NWE3YTdmMiwKKyAgICAweGZjN2U3ZTgyLCAweDdhM2QzZDQ3LCAw
eGM4NjQ2NGFjLCAweGJhNWQ1ZGU3LCAweDMyMTkxOTJiLCAweGU2NzM3Mzk1LAorICAgIDB4YzA2
MDYwYTAsIDB4MTk4MTgxOTgsIDB4OWU0ZjRmZDEsIDB4YTNkY2RjN2YsIDB4NDQyMjIyNjYsIDB4
NTQyYTJhN2UsCisgICAgMHgzYjkwOTBhYiwgMHgwYjg4ODg4MywgMHg4YzQ2NDZjYSwgMHhjN2Vl
ZWUyOSwgMHg2YmI4YjhkMywgMHgyODE0MTQzYywKKyAgICAweGE3ZGVkZTc5LCAweGJjNWU1ZWUy
LCAweDE2MGIwYjFkLCAweGFkZGJkYjc2LCAweGRiZTBlMDNiLCAweDY0MzIzMjU2LAorICAgIDB4
NzQzYTNhNGUsIDB4MTQwYTBhMWUsIDB4OTI0OTQ5ZGIsIDB4MGMwNjA2MGEsIDB4NDgyNDI0NmMs
IDB4Yjg1YzVjZTQsCisgICAgMHg5ZmMyYzI1ZCwgMHhiZGQzZDM2ZSwgMHg0M2FjYWNlZiwgMHhj
NDYyNjJhNiwgMHgzOTkxOTFhOCwgMHgzMTk1OTVhNCwKKyAgICAweGQzZTRlNDM3LCAweGYyNzk3
OThiLCAweGQ1ZTdlNzMyLCAweDhiYzhjODQzLCAweDZlMzczNzU5LCAweGRhNmQ2ZGI3LAorICAg
IDB4MDE4ZDhkOGMsIDB4YjFkNWQ1NjQsIDB4OWM0ZTRlZDIsIDB4NDlhOWE5ZTAsIDB4ZDg2YzZj
YjQsIDB4YWM1NjU2ZmEsCisgICAgMHhmM2Y0ZjQwNywgMHhjZmVhZWEyNSwgMHhjYTY1NjVhZiwg
MHhmNDdhN2E4ZSwgMHg0N2FlYWVlOSwgMHgxMDA4MDgxOCwKKyAgICAweDZmYmFiYWQ1LCAweGYw
Nzg3ODg4LCAweDRhMjUyNTZmLCAweDVjMmUyZTcyLCAweDM4MWMxYzI0LCAweDU3YTZhNmYxLAor
ICAgIDB4NzNiNGI0YzcsIDB4OTdjNmM2NTEsIDB4Y2JlOGU4MjMsIDB4YTFkZGRkN2MsIDB4ZTg3
NDc0OWMsIDB4M2UxZjFmMjEsCisgICAgMHg5NjRiNGJkZCwgMHg2MWJkYmRkYywgMHgwZDhiOGI4
NiwgMHgwZjhhOGE4NSwgMHhlMDcwNzA5MCwgMHg3YzNlM2U0MiwKKyAgICAweDcxYjViNWM0LCAw
eGNjNjY2NmFhLCAweDkwNDg0OGQ4LCAweDA2MDMwMzA1LCAweGY3ZjZmNjAxLCAweDFjMGUwZTEy
LAorICAgIDB4YzI2MTYxYTMsIDB4NmEzNTM1NWYsIDB4YWU1NzU3ZjksIDB4NjliOWI5ZDAsIDB4
MTc4Njg2OTEsIDB4OTljMWMxNTgsCisgICAgMHgzYTFkMWQyNywgMHgyNzllOWViOSwgMHhkOWUx
ZTEzOCwgMHhlYmY4ZjgxMywgMHgyYjk4OThiMywgMHgyMjExMTEzMywKKyAgICAweGQyNjk2OWJi
LCAweGE5ZDlkOTcwLCAweDA3OGU4ZTg5LCAweDMzOTQ5NGE3LCAweDJkOWI5YmI2LCAweDNjMWUx
ZTIyLAorICAgIDB4MTU4Nzg3OTIsIDB4YzllOWU5MjAsIDB4ODdjZWNlNDksIDB4YWE1NTU1ZmYs
IDB4NTAyODI4NzgsIDB4YTVkZmRmN2EsCisgICAgMHgwMzhjOGM4ZiwgMHg1OWExYTFmOCwgMHgw
OTg5ODk4MCwgMHgxYTBkMGQxNywgMHg2NWJmYmZkYSwgMHhkN2U2ZTYzMSwKKyAgICAweDg0NDI0
MmM2LCAweGQwNjg2OGI4LCAweDgyNDE0MWMzLCAweDI5OTk5OWIwLCAweDVhMmQyZDc3LCAweDFl
MGYwZjExLAorICAgIDB4N2JiMGIwY2IsIDB4YTg1NDU0ZmMsIDB4NmRiYmJiZDYsIDB4MmMxNjE2
M2EsCit9OworCitjb25zdGV4cHIgdWludDMyX3QgdGUxWzI1Nl0gPSB7CisgICAgMHhhNWM2NjM2
MywgMHg4NGY4N2M3YywgMHg5OWVlNzc3NywgMHg4ZGY2N2I3YiwgMHgwZGZmZjJmMiwgMHhiZGQ2
NmI2YiwKKyAgICAweGIxZGU2ZjZmLCAweDU0OTFjNWM1LCAweDUwNjAzMDMwLCAweDAzMDIwMTAx
LCAweGE5Y2U2NzY3LCAweDdkNTYyYjJiLAorICAgIDB4MTllN2ZlZmUsIDB4NjJiNWQ3ZDcsIDB4
ZTY0ZGFiYWIsIDB4OWFlYzc2NzYsIDB4NDU4ZmNhY2EsIDB4OWQxZjgyODIsCisgICAgMHg0MDg5
YzljOSwgMHg4N2ZhN2Q3ZCwgMHgxNWVmZmFmYSwgMHhlYmIyNTk1OSwgMHhjOThlNDc0NywgMHgw
YmZiZjBmMCwKKyAgICAweGVjNDFhZGFkLCAweDY3YjNkNGQ0LCAweGZkNWZhMmEyLCAweGVhNDVh
ZmFmLCAweGJmMjM5YzljLCAweGY3NTNhNGE0LAorICAgIDB4OTZlNDcyNzIsIDB4NWI5YmMwYzAs
IDB4YzI3NWI3YjcsIDB4MWNlMWZkZmQsIDB4YWUzZDkzOTMsIDB4NmE0YzI2MjYsCisgICAgMHg1
YTZjMzYzNiwgMHg0MTdlM2YzZiwgMHgwMmY1ZjdmNywgMHg0ZjgzY2NjYywgMHg1YzY4MzQzNCwg
MHhmNDUxYTVhNSwKKyAgICAweDM0ZDFlNWU1LCAweDA4ZjlmMWYxLCAweDkzZTI3MTcxLCAweDcz
YWJkOGQ4LCAweDUzNjIzMTMxLCAweDNmMmExNTE1LAorICAgIDB4MGMwODA0MDQsIDB4NTI5NWM3
YzcsIDB4NjU0NjIzMjMsIDB4NWU5ZGMzYzMsIDB4MjgzMDE4MTgsIDB4YTEzNzk2OTYsCisgICAg
MHgwZjBhMDUwNSwgMHhiNTJmOWE5YSwgMHgwOTBlMDcwNywgMHgzNjI0MTIxMiwgMHg5YjFiODA4
MCwgMHgzZGRmZTJlMiwKKyAgICAweDI2Y2RlYmViLCAweDY5NGUyNzI3LCAweGNkN2ZiMmIyLCAw
eDlmZWE3NTc1LCAweDFiMTIwOTA5LCAweDllMWQ4MzgzLAorICAgIDB4NzQ1ODJjMmMsIDB4MmUz
NDFhMWEsIDB4MmQzNjFiMWIsIDB4YjJkYzZlNmUsIDB4ZWViNDVhNWEsIDB4ZmI1YmEwYTAsCisg
ICAgMHhmNmE0NTI1MiwgMHg0ZDc2M2IzYiwgMHg2MWI3ZDZkNiwgMHhjZTdkYjNiMywgMHg3YjUy
MjkyOSwgMHgzZWRkZTNlMywKKyAgICAweDcxNWUyZjJmLCAweDk3MTM4NDg0LCAweGY1YTY1MzUz
LCAweDY4YjlkMWQxLCAweDAwMDAwMDAwLCAweDJjYzFlZGVkLAorICAgIDB4NjA0MDIwMjAsIDB4
MWZlM2ZjZmMsIDB4Yzg3OWIxYjEsIDB4ZWRiNjViNWIsIDB4YmVkNDZhNmEsIDB4NDY4ZGNiY2Is
CisgICAgMHhkOTY3YmViZSwgMHg0YjcyMzkzOSwgMHhkZTk0NGE0YSwgMHhkNDk4NGM0YywgMHhl
OGIwNTg1OCwgMHg0YTg1Y2ZjZiwKKyAgICAweDZiYmJkMGQwLCAweDJhYzVlZmVmLCAweGU1NGZh
YWFhLCAweDE2ZWRmYmZiLCAweGM1ODY0MzQzLCAweGQ3OWE0ZDRkLAorICAgIDB4NTU2NjMzMzMs
IDB4OTQxMTg1ODUsIDB4Y2Y4YTQ1NDUsIDB4MTBlOWY5ZjksIDB4MDYwNDAyMDIsIDB4ODFmZTdm
N2YsCisgICAgMHhmMGEwNTA1MCwgMHg0NDc4M2MzYywgMHhiYTI1OWY5ZiwgMHhlMzRiYThhOCwg
MHhmM2EyNTE1MSwgMHhmZTVkYTNhMywKKyAgICAweGMwODA0MDQwLCAweDhhMDU4ZjhmLCAweGFk
M2Y5MjkyLCAweGJjMjE5ZDlkLCAweDQ4NzAzODM4LCAweDA0ZjFmNWY1LAorICAgIDB4ZGY2M2Jj
YmMsIDB4YzE3N2I2YjYsIDB4NzVhZmRhZGEsIDB4NjM0MjIxMjEsIDB4MzAyMDEwMTAsIDB4MWFl
NWZmZmYsCisgICAgMHgwZWZkZjNmMywgMHg2ZGJmZDJkMiwgMHg0YzgxY2RjZCwgMHgxNDE4MGMw
YywgMHgzNTI2MTMxMywgMHgyZmMzZWNlYywKKyAgICAweGUxYmU1ZjVmLCAweGEyMzU5Nzk3LCAw
eGNjODg0NDQ0LCAweDM5MmUxNzE3LCAweDU3OTNjNGM0LCAweGYyNTVhN2E3LAorICAgIDB4ODJm
YzdlN2UsIDB4NDc3YTNkM2QsIDB4YWNjODY0NjQsIDB4ZTdiYTVkNWQsIDB4MmIzMjE5MTksIDB4
OTVlNjczNzMsCisgICAgMHhhMGMwNjA2MCwgMHg5ODE5ODE4MSwgMHhkMTllNGY0ZiwgMHg3ZmEz
ZGNkYywgMHg2NjQ0MjIyMiwgMHg3ZTU0MmEyYSwKKyAgICAweGFiM2I5MDkwLCAweDgzMGI4ODg4
LCAweGNhOGM0NjQ2LCAweDI5YzdlZWVlLCAweGQzNmJiOGI4LCAweDNjMjgxNDE0LAorICAgIDB4
NzlhN2RlZGUsIDB4ZTJiYzVlNWUsIDB4MWQxNjBiMGIsIDB4NzZhZGRiZGIsIDB4M2JkYmUwZTAs
IDB4NTY2NDMyMzIsCisgICAgMHg0ZTc0M2EzYSwgMHgxZTE0MGEwYSwgMHhkYjkyNDk0OSwgMHgw
YTBjMDYwNiwgMHg2YzQ4MjQyNCwgMHhlNGI4NWM1YywKKyAgICAweDVkOWZjMmMyLCAweDZlYmRk
M2QzLCAweGVmNDNhY2FjLCAweGE2YzQ2MjYyLCAweGE4Mzk5MTkxLCAweGE0MzE5NTk1LAorICAg
IDB4MzdkM2U0ZTQsIDB4OGJmMjc5NzksIDB4MzJkNWU3ZTcsIDB4NDM4YmM4YzgsIDB4NTk2ZTM3
MzcsIDB4YjdkYTZkNmQsCisgICAgMHg4YzAxOGQ4ZCwgMHg2NGIxZDVkNSwgMHhkMjljNGU0ZSwg
MHhlMDQ5YTlhOSwgMHhiNGQ4NmM2YywgMHhmYWFjNTY1NiwKKyAgICAweDA3ZjNmNGY0LCAweDI1
Y2ZlYWVhLCAweGFmY2E2NTY1LCAweDhlZjQ3YTdhLCAweGU5NDdhZWFlLCAweDE4MTAwODA4LAor
ICAgIDB4ZDU2ZmJhYmEsIDB4ODhmMDc4NzgsIDB4NmY0YTI1MjUsIDB4NzI1YzJlMmUsIDB4MjQz
ODFjMWMsIDB4ZjE1N2E2YTYsCisgICAgMHhjNzczYjRiNCwgMHg1MTk3YzZjNiwgMHgyM2NiZThl
OCwgMHg3Y2ExZGRkZCwgMHg5Y2U4NzQ3NCwgMHgyMTNlMWYxZiwKKyAgICAweGRkOTY0YjRiLCAw
eGRjNjFiZGJkLCAweDg2MGQ4YjhiLCAweDg1MGY4YThhLCAweDkwZTA3MDcwLCAweDQyN2MzZTNl
LAorICAgIDB4YzQ3MWI1YjUsIDB4YWFjYzY2NjYsIDB4ZDg5MDQ4NDgsIDB4MDUwNjAzMDMsIDB4
MDFmN2Y2ZjYsIDB4MTIxYzBlMGUsCisgICAgMHhhM2MyNjE2MSwgMHg1ZjZhMzUzNSwgMHhmOWFl
NTc1NywgMHhkMDY5YjliOSwgMHg5MTE3ODY4NiwgMHg1ODk5YzFjMSwKKyAgICAweDI3M2ExZDFk
LCAweGI5Mjc5ZTllLCAweDM4ZDllMWUxLCAweDEzZWJmOGY4LCAweGIzMmI5ODk4LCAweDMzMjIx
MTExLAorICAgIDB4YmJkMjY5NjksIDB4NzBhOWQ5ZDksIDB4ODkwNzhlOGUsIDB4YTczMzk0OTQs
IDB4YjYyZDliOWIsIDB4MjIzYzFlMWUsCisgICAgMHg5MjE1ODc4NywgMHgyMGM5ZTllOSwgMHg0
OTg3Y2VjZSwgMHhmZmFhNTU1NSwgMHg3ODUwMjgyOCwgMHg3YWE1ZGZkZiwKKyAgICAweDhmMDM4
YzhjLCAweGY4NTlhMWExLCAweDgwMDk4OTg5LCAweDE3MWEwZDBkLCAweGRhNjViZmJmLCAweDMx
ZDdlNmU2LAorICAgIDB4YzY4NDQyNDIsIDB4YjhkMDY4NjgsIDB4YzM4MjQxNDEsIDB4YjAyOTk5
OTksIDB4Nzc1YTJkMmQsIDB4MTExZTBmMGYsCisgICAgMHhjYjdiYjBiMCwgMHhmY2E4NTQ1NCwg
MHhkNjZkYmJiYiwgMHgzYTJjMTYxNiwKK307CisKK2NvbnN0ZXhwciB1aW50MzJfdCB0ZTJbMjU2
XSA9IHsKKyAgICAweDYzYTVjNjYzLCAweDdjODRmODdjLCAweDc3OTllZTc3LCAweDdiOGRmNjdi
LCAweGYyMGRmZmYyLCAweDZiYmRkNjZiLAorICAgIDB4NmZiMWRlNmYsIDB4YzU1NDkxYzUsIDB4
MzA1MDYwMzAsIDB4MDEwMzAyMDEsIDB4NjdhOWNlNjcsIDB4MmI3ZDU2MmIsCisgICAgMHhmZTE5
ZTdmZSwgMHhkNzYyYjVkNywgMHhhYmU2NGRhYiwgMHg3NjlhZWM3NiwgMHhjYTQ1OGZjYSwgMHg4
MjlkMWY4MiwKKyAgICAweGM5NDA4OWM5LCAweDdkODdmYTdkLCAweGZhMTVlZmZhLCAweDU5ZWJi
MjU5LCAweDQ3Yzk4ZTQ3LCAweGYwMGJmYmYwLAorICAgIDB4YWRlYzQxYWQsIDB4ZDQ2N2IzZDQs
IDB4YTJmZDVmYTIsIDB4YWZlYTQ1YWYsIDB4OWNiZjIzOWMsIDB4YTRmNzUzYTQsCisgICAgMHg3
Mjk2ZTQ3MiwgMHhjMDViOWJjMCwgMHhiN2MyNzViNywgMHhmZDFjZTFmZCwgMHg5M2FlM2Q5Mywg
MHgyNjZhNGMyNiwKKyAgICAweDM2NWE2YzM2LCAweDNmNDE3ZTNmLCAweGY3MDJmNWY3LCAweGNj
NGY4M2NjLCAweDM0NWM2ODM0LCAweGE1ZjQ1MWE1LAorICAgIDB4ZTUzNGQxZTUsIDB4ZjEwOGY5
ZjEsIDB4NzE5M2UyNzEsIDB4ZDg3M2FiZDgsIDB4MzE1MzYyMzEsIDB4MTUzZjJhMTUsCisgICAg
MHgwNDBjMDgwNCwgMHhjNzUyOTVjNywgMHgyMzY1NDYyMywgMHhjMzVlOWRjMywgMHgxODI4MzAx
OCwgMHg5NmExMzc5NiwKKyAgICAweDA1MGYwYTA1LCAweDlhYjUyZjlhLCAweDA3MDkwZTA3LCAw
eDEyMzYyNDEyLCAweDgwOWIxYjgwLCAweGUyM2RkZmUyLAorICAgIDB4ZWIyNmNkZWIsIDB4Mjc2
OTRlMjcsIDB4YjJjZDdmYjIsIDB4NzU5ZmVhNzUsIDB4MDkxYjEyMDksIDB4ODM5ZTFkODMsCisg
ICAgMHgyYzc0NTgyYywgMHgxYTJlMzQxYSwgMHgxYjJkMzYxYiwgMHg2ZWIyZGM2ZSwgMHg1YWVl
YjQ1YSwgMHhhMGZiNWJhMCwKKyAgICAweDUyZjZhNDUyLCAweDNiNGQ3NjNiLCAweGQ2NjFiN2Q2
LCAweGIzY2U3ZGIzLCAweDI5N2I1MjI5LCAweGUzM2VkZGUzLAorICAgIDB4MmY3MTVlMmYsIDB4
ODQ5NzEzODQsIDB4NTNmNWE2NTMsIDB4ZDE2OGI5ZDEsIDB4MDAwMDAwMDAsIDB4ZWQyY2MxZWQs
CisgICAgMHgyMDYwNDAyMCwgMHhmYzFmZTNmYywgMHhiMWM4NzliMSwgMHg1YmVkYjY1YiwgMHg2
YWJlZDQ2YSwgMHhjYjQ2OGRjYiwKKyAgICAweGJlZDk2N2JlLCAweDM5NGI3MjM5LCAweDRhZGU5
NDRhLCAweDRjZDQ5ODRjLCAweDU4ZThiMDU4LCAweGNmNGE4NWNmLAorICAgIDB4ZDA2YmJiZDAs
IDB4ZWYyYWM1ZWYsIDB4YWFlNTRmYWEsIDB4ZmIxNmVkZmIsIDB4NDNjNTg2NDMsIDB4NGRkNzlh
NGQsCisgICAgMHgzMzU1NjYzMywgMHg4NTk0MTE4NSwgMHg0NWNmOGE0NSwgMHhmOTEwZTlmOSwg
MHgwMjA2MDQwMiwgMHg3ZjgxZmU3ZiwKKyAgICAweDUwZjBhMDUwLCAweDNjNDQ3ODNjLCAweDlm
YmEyNTlmLCAweGE4ZTM0YmE4LCAweDUxZjNhMjUxLCAweGEzZmU1ZGEzLAorICAgIDB4NDBjMDgw
NDAsIDB4OGY4YTA1OGYsIDB4OTJhZDNmOTIsIDB4OWRiYzIxOWQsIDB4Mzg0ODcwMzgsIDB4ZjUw
NGYxZjUsCisgICAgMHhiY2RmNjNiYywgMHhiNmMxNzdiNiwgMHhkYTc1YWZkYSwgMHgyMTYzNDIy
MSwgMHgxMDMwMjAxMCwgMHhmZjFhZTVmZiwKKyAgICAweGYzMGVmZGYzLCAweGQyNmRiZmQyLCAw
eGNkNGM4MWNkLCAweDBjMTQxODBjLCAweDEzMzUyNjEzLCAweGVjMmZjM2VjLAorICAgIDB4NWZl
MWJlNWYsIDB4OTdhMjM1OTcsIDB4NDRjYzg4NDQsIDB4MTczOTJlMTcsIDB4YzQ1NzkzYzQsIDB4
YTdmMjU1YTcsCisgICAgMHg3ZTgyZmM3ZSwgMHgzZDQ3N2EzZCwgMHg2NGFjYzg2NCwgMHg1ZGU3
YmE1ZCwgMHgxOTJiMzIxOSwgMHg3Mzk1ZTY3MywKKyAgICAweDYwYTBjMDYwLCAweDgxOTgxOTgx
LCAweDRmZDE5ZTRmLCAweGRjN2ZhM2RjLCAweDIyNjY0NDIyLCAweDJhN2U1NDJhLAorICAgIDB4
OTBhYjNiOTAsIDB4ODg4MzBiODgsIDB4NDZjYThjNDYsIDB4ZWUyOWM3ZWUsIDB4YjhkMzZiYjgs
IDB4MTQzYzI4MTQsCisgICAgMHhkZTc5YTdkZSwgMHg1ZWUyYmM1ZSwgMHgwYjFkMTYwYiwgMHhk
Yjc2YWRkYiwgMHhlMDNiZGJlMCwgMHgzMjU2NjQzMiwKKyAgICAweDNhNGU3NDNhLCAweDBhMWUx
NDBhLCAweDQ5ZGI5MjQ5LCAweDA2MGEwYzA2LCAweDI0NmM0ODI0LCAweDVjZTRiODVjLAorICAg
IDB4YzI1ZDlmYzIsIDB4ZDM2ZWJkZDMsIDB4YWNlZjQzYWMsIDB4NjJhNmM0NjIsIDB4OTFhODM5
OTEsIDB4OTVhNDMxOTUsCisgICAgMHhlNDM3ZDNlNCwgMHg3OThiZjI3OSwgMHhlNzMyZDVlNywg
MHhjODQzOGJjOCwgMHgzNzU5NmUzNywgMHg2ZGI3ZGE2ZCwKKyAgICAweDhkOGMwMThkLCAweGQ1
NjRiMWQ1LCAweDRlZDI5YzRlLCAweGE5ZTA0OWE5LCAweDZjYjRkODZjLCAweDU2ZmFhYzU2LAor
ICAgIDB4ZjQwN2YzZjQsIDB4ZWEyNWNmZWEsIDB4NjVhZmNhNjUsIDB4N2E4ZWY0N2EsIDB4YWVl
OTQ3YWUsIDB4MDgxODEwMDgsCisgICAgMHhiYWQ1NmZiYSwgMHg3ODg4ZjA3OCwgMHgyNTZmNGEy
NSwgMHgyZTcyNWMyZSwgMHgxYzI0MzgxYywgMHhhNmYxNTdhNiwKKyAgICAweGI0Yzc3M2I0LCAw
eGM2NTE5N2M2LCAweGU4MjNjYmU4LCAweGRkN2NhMWRkLCAweDc0OWNlODc0LCAweDFmMjEzZTFm
LAorICAgIDB4NGJkZDk2NGIsIDB4YmRkYzYxYmQsIDB4OGI4NjBkOGIsIDB4OGE4NTBmOGEsIDB4
NzA5MGUwNzAsIDB4M2U0MjdjM2UsCisgICAgMHhiNWM0NzFiNSwgMHg2NmFhY2M2NiwgMHg0OGQ4
OTA0OCwgMHgwMzA1MDYwMywgMHhmNjAxZjdmNiwgMHgwZTEyMWMwZSwKKyAgICAweDYxYTNjMjYx
LCAweDM1NWY2YTM1LCAweDU3ZjlhZTU3LCAweGI5ZDA2OWI5LCAweDg2OTExNzg2LCAweGMxNTg5
OWMxLAorICAgIDB4MWQyNzNhMWQsIDB4OWViOTI3OWUsIDB4ZTEzOGQ5ZTEsIDB4ZjgxM2ViZjgs
IDB4OThiMzJiOTgsIDB4MTEzMzIyMTEsCisgICAgMHg2OWJiZDI2OSwgMHhkOTcwYTlkOSwgMHg4
ZTg5MDc4ZSwgMHg5NGE3MzM5NCwgMHg5YmI2MmQ5YiwgMHgxZTIyM2MxZSwKKyAgICAweDg3OTIx
NTg3LCAweGU5MjBjOWU5LCAweGNlNDk4N2NlLCAweDU1ZmZhYTU1LCAweDI4Nzg1MDI4LCAweGRm
N2FhNWRmLAorICAgIDB4OGM4ZjAzOGMsIDB4YTFmODU5YTEsIDB4ODk4MDA5ODksIDB4MGQxNzFh
MGQsIDB4YmZkYTY1YmYsIDB4ZTYzMWQ3ZTYsCisgICAgMHg0MmM2ODQ0MiwgMHg2OGI4ZDA2OCwg
MHg0MWMzODI0MSwgMHg5OWIwMjk5OSwgMHgyZDc3NWEyZCwgMHgwZjExMWUwZiwKKyAgICAweGIw
Y2I3YmIwLCAweDU0ZmNhODU0LCAweGJiZDY2ZGJiLCAweDE2M2EyYzE2LAorfTsKKworY29uc3Rl
eHByIHVpbnQzMl90IHRlM1syNTZdID0geworICAgIDB4NjM2M2E1YzYsIDB4N2M3Yzg0ZjgsIDB4
Nzc3Nzk5ZWUsIDB4N2I3YjhkZjYsIDB4ZjJmMjBkZmYsIDB4NmI2YmJkZDYsCisgICAgMHg2ZjZm
YjFkZSwgMHhjNWM1NTQ5MSwgMHgzMDMwNTA2MCwgMHgwMTAxMDMwMiwgMHg2NzY3YTljZSwgMHgy
YjJiN2Q1NiwKKyAgICAweGZlZmUxOWU3LCAweGQ3ZDc2MmI1LCAweGFiYWJlNjRkLCAweDc2NzY5
YWVjLCAweGNhY2E0NThmLCAweDgyODI5ZDFmLAorICAgIDB4YzljOTQwODksIDB4N2Q3ZDg3ZmEs
IDB4ZmFmYTE1ZWYsIDB4NTk1OWViYjIsIDB4NDc0N2M5OGUsIDB4ZjBmMDBiZmIsCisgICAgMHhh
ZGFkZWM0MSwgMHhkNGQ0NjdiMywgMHhhMmEyZmQ1ZiwgMHhhZmFmZWE0NSwgMHg5YzljYmYyMywg
MHhhNGE0Zjc1MywKKyAgICAweDcyNzI5NmU0LCAweGMwYzA1YjliLCAweGI3YjdjMjc1LCAweGZk
ZmQxY2UxLCAweDkzOTNhZTNkLCAweDI2MjY2YTRjLAorICAgIDB4MzYzNjVhNmMsIDB4M2YzZjQx
N2UsIDB4ZjdmNzAyZjUsIDB4Y2NjYzRmODMsIDB4MzQzNDVjNjgsIDB4YTVhNWY0NTEsCisgICAg
MHhlNWU1MzRkMSwgMHhmMWYxMDhmOSwgMHg3MTcxOTNlMiwgMHhkOGQ4NzNhYiwgMHgzMTMxNTM2
MiwgMHgxNTE1M2YyYSwKKyAgICAweDA0MDQwYzA4LCAweGM3Yzc1Mjk1LCAweDIzMjM2NTQ2LCAw
eGMzYzM1ZTlkLCAweDE4MTgyODMwLCAweDk2OTZhMTM3LAorICAgIDB4MDUwNTBmMGEsIDB4OWE5
YWI1MmYsIDB4MDcwNzA5MGUsIDB4MTIxMjM2MjQsIDB4ODA4MDliMWIsIDB4ZTJlMjNkZGYsCisg
ICAgMHhlYmViMjZjZCwgMHgyNzI3Njk0ZSwgMHhiMmIyY2Q3ZiwgMHg3NTc1OWZlYSwgMHgwOTA5
MWIxMiwgMHg4MzgzOWUxZCwKKyAgICAweDJjMmM3NDU4LCAweDFhMWEyZTM0LCAweDFiMWIyZDM2
LCAweDZlNmViMmRjLCAweDVhNWFlZWI0LCAweGEwYTBmYjViLAorICAgIDB4NTI1MmY2YTQsIDB4
M2IzYjRkNzYsIDB4ZDZkNjYxYjcsIDB4YjNiM2NlN2QsIDB4MjkyOTdiNTIsIDB4ZTNlMzNlZGQs
CisgICAgMHgyZjJmNzE1ZSwgMHg4NDg0OTcxMywgMHg1MzUzZjVhNiwgMHhkMWQxNjhiOSwgMHgw
MDAwMDAwMCwgMHhlZGVkMmNjMSwKKyAgICAweDIwMjA2MDQwLCAweGZjZmMxZmUzLCAweGIxYjFj
ODc5LCAweDViNWJlZGI2LCAweDZhNmFiZWQ0LCAweGNiY2I0NjhkLAorICAgIDB4YmViZWQ5Njcs
IDB4MzkzOTRiNzIsIDB4NGE0YWRlOTQsIDB4NGM0Y2Q0OTgsIDB4NTg1OGU4YjAsIDB4Y2ZjZjRh
ODUsCisgICAgMHhkMGQwNmJiYiwgMHhlZmVmMmFjNSwgMHhhYWFhZTU0ZiwgMHhmYmZiMTZlZCwg
MHg0MzQzYzU4NiwgMHg0ZDRkZDc5YSwKKyAgICAweDMzMzM1NTY2LCAweDg1ODU5NDExLCAweDQ1
NDVjZjhhLCAweGY5ZjkxMGU5LCAweDAyMDIwNjA0LCAweDdmN2Y4MWZlLAorICAgIDB4NTA1MGYw
YTAsIDB4M2MzYzQ0NzgsIDB4OWY5ZmJhMjUsIDB4YThhOGUzNGIsIDB4NTE1MWYzYTIsIDB4YTNh
M2ZlNWQsCisgICAgMHg0MDQwYzA4MCwgMHg4ZjhmOGEwNSwgMHg5MjkyYWQzZiwgMHg5ZDlkYmMy
MSwgMHgzODM4NDg3MCwgMHhmNWY1MDRmMSwKKyAgICAweGJjYmNkZjYzLCAweGI2YjZjMTc3LCAw
eGRhZGE3NWFmLCAweDIxMjE2MzQyLCAweDEwMTAzMDIwLCAweGZmZmYxYWU1LAorICAgIDB4ZjNm
MzBlZmQsIDB4ZDJkMjZkYmYsIDB4Y2RjZDRjODEsIDB4MGMwYzE0MTgsIDB4MTMxMzM1MjYsIDB4
ZWNlYzJmYzMsCisgICAgMHg1ZjVmZTFiZSwgMHg5Nzk3YTIzNSwgMHg0NDQ0Y2M4OCwgMHgxNzE3
MzkyZSwgMHhjNGM0NTc5MywgMHhhN2E3ZjI1NSwKKyAgICAweDdlN2U4MmZjLCAweDNkM2Q0Nzdh
LCAweDY0NjRhY2M4LCAweDVkNWRlN2JhLCAweDE5MTkyYjMyLCAweDczNzM5NWU2LAorICAgIDB4
NjA2MGEwYzAsIDB4ODE4MTk4MTksIDB4NGY0ZmQxOWUsIDB4ZGNkYzdmYTMsIDB4MjIyMjY2NDQs
IDB4MmEyYTdlNTQsCisgICAgMHg5MDkwYWIzYiwgMHg4ODg4ODMwYiwgMHg0NjQ2Y2E4YywgMHhl
ZWVlMjljNywgMHhiOGI4ZDM2YiwgMHgxNDE0M2MyOCwKKyAgICAweGRlZGU3OWE3LCAweDVlNWVl
MmJjLCAweDBiMGIxZDE2LCAweGRiZGI3NmFkLCAweGUwZTAzYmRiLCAweDMyMzI1NjY0LAorICAg
IDB4M2EzYTRlNzQsIDB4MGEwYTFlMTQsIDB4NDk0OWRiOTIsIDB4MDYwNjBhMGMsIDB4MjQyNDZj
NDgsIDB4NWM1Y2U0YjgsCisgICAgMHhjMmMyNWQ5ZiwgMHhkM2QzNmViZCwgMHhhY2FjZWY0Mywg
MHg2MjYyYTZjNCwgMHg5MTkxYTgzOSwgMHg5NTk1YTQzMSwKKyAgICAweGU0ZTQzN2QzLCAweDc5
Nzk4YmYyLCAweGU3ZTczMmQ1LCAweGM4Yzg0MzhiLCAweDM3Mzc1OTZlLCAweDZkNmRiN2RhLAor
ICAgIDB4OGQ4ZDhjMDEsIDB4ZDVkNTY0YjEsIDB4NGU0ZWQyOWMsIDB4YTlhOWUwNDksIDB4NmM2
Y2I0ZDgsIDB4NTY1NmZhYWMsCisgICAgMHhmNGY0MDdmMywgMHhlYWVhMjVjZiwgMHg2NTY1YWZj
YSwgMHg3YTdhOGVmNCwgMHhhZWFlZTk0NywgMHgwODA4MTgxMCwKKyAgICAweGJhYmFkNTZmLCAw
eDc4Nzg4OGYwLCAweDI1MjU2ZjRhLCAweDJlMmU3MjVjLCAweDFjMWMyNDM4LCAweGE2YTZmMTU3
LAorICAgIDB4YjRiNGM3NzMsIDB4YzZjNjUxOTcsIDB4ZThlODIzY2IsIDB4ZGRkZDdjYTEsIDB4
NzQ3NDljZTgsIDB4MWYxZjIxM2UsCisgICAgMHg0YjRiZGQ5NiwgMHhiZGJkZGM2MSwgMHg4Yjhi
ODYwZCwgMHg4YThhODUwZiwgMHg3MDcwOTBlMCwgMHgzZTNlNDI3YywKKyAgICAweGI1YjVjNDcx
LCAweDY2NjZhYWNjLCAweDQ4NDhkODkwLCAweDAzMDMwNTA2LCAweGY2ZjYwMWY3LCAweDBlMGUx
MjFjLAorICAgIDB4NjE2MWEzYzIsIDB4MzUzNTVmNmEsIDB4NTc1N2Y5YWUsIDB4YjliOWQwNjks
IDB4ODY4NjkxMTcsIDB4YzFjMTU4OTksCisgICAgMHgxZDFkMjczYSwgMHg5ZTllYjkyNywgMHhl
MWUxMzhkOSwgMHhmOGY4MTNlYiwgMHg5ODk4YjMyYiwgMHgxMTExMzMyMiwKKyAgICAweDY5Njli
YmQyLCAweGQ5ZDk3MGE5LCAweDhlOGU4OTA3LCAweDk0OTRhNzMzLCAweDliOWJiNjJkLCAweDFl
MWUyMjNjLAorICAgIDB4ODc4NzkyMTUsIDB4ZTllOTIwYzksIDB4Y2VjZTQ5ODcsIDB4NTU1NWZm
YWEsIDB4MjgyODc4NTAsIDB4ZGZkZjdhYTUsCisgICAgMHg4YzhjOGYwMywgMHhhMWExZjg1OSwg
MHg4OTg5ODAwOSwgMHgwZDBkMTcxYSwgMHhiZmJmZGE2NSwgMHhlNmU2MzFkNywKKyAgICAweDQy
NDJjNjg0LCAweDY4NjhiOGQwLCAweDQxNDFjMzgyLCAweDk5OTliMDI5LCAweDJkMmQ3NzVhLCAw
eDBmMGYxMTFlLAorICAgIDB4YjBiMGNiN2IsIDB4NTQ1NGZjYTgsIDB4YmJiYmQ2NmQsIDB4MTYx
NjNhMmMsCit9OworCitzdHJ1Y3QgYWxpZ25hcygxNikgdTY0eDIgeworICBjb25zdGV4cHIgdTY0
eDIoKSA6IHZ7MCwgMH0ge307CisgIGNvbnN0ZXhwciB1NjR4Mih1aW50NjRfdCBoaSwgdWludDY0
X3QgbG8pIDogdntsbywgaGl9IHt9CisKKyAgdWludDY0X3QgdlsyXTsKK307CisKKy8vIFNvZnR3
YXJlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBWZWN0b3IxMjggY2xhc3MsIHVzaW5nIHVpbnQzMl90
CisvLyBhcyBhbiB1bmRlcmx5aW5nIHZlY3RvciByZWdpc3Rlci4KKy8vCitzdHJ1Y3QgVmVjdG9y
MTI4IHsKKyAgaW5saW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5M
SU5FIFZlY3RvcjEyOCYgb3BlcmF0b3JePSgKKyAgICAgIGNvbnN0IFZlY3RvcjEyOCYgb3RoZXIp
IHsKKyAgICBzWzBdIF49IG90aGVyLnNbMF07CisgICAgc1sxXSBePSBvdGhlci5zWzFdOworICAg
IHNbMl0gXj0gb3RoZXIuc1syXTsKKyAgICBzWzNdIF49IG90aGVyLnNbM107CisgICAgcmV0dXJu
ICp0aGlzOworICB9CisKKyAgdWludDMyX3Qgc1s0XTsKK307CisKK2lubGluZSBBQlNMX1JBTkRP
TV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBWZWN0b3IxMjgKK1ZlY3RvcjEyOExv
YWQoY29uc3Qgdm9pZCogQUJTTF9SQU5ET01fSU5URVJOQUxfUkVTVFJJQ1QgZnJvbSkgeworICBW
ZWN0b3IxMjggcmVzdWx0OworICBjb25zdCB1aW50OF90KiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9S
RVNUUklDVCBzcmMgPQorICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZnJv
bSk7CisKKyAgcmVzdWx0LnNbMF0gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjWzBdKSA8PCAy
NCB8CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1sxXSkgPDwgMTYg
fAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmNbMl0pIDw8IDggfAor
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmNbM10pOworICByZXN1bHQu
c1sxXSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmNbNF0pIDw8IDI0IHwKKyAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjWzVdKSA8PCAxNiB8CisgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1s2XSkgPDwgOCB8CisgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1s3XSk7CisgIHJlc3VsdC5zWzJdID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHNyY1s4XSkgPDwgMjQgfAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHVpbnQzMl90PihzcmNbOV0pIDw8IDE2IHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oc3JjWzEwXSkgPDwgOCB8CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHNyY1sxMV0pOworICByZXN1bHQuc1szXSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihz
cmNbMTJdKSA8PCAyNCB8CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNy
Y1sxM10pIDw8IDE2IHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Jj
WzE0XSkgPDwgOCB8CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyY1sx
NV0pOworICByZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgQUJTTF9SQU5ET01fSU5URVJOQUxf
QVRUUklCVVRFX0FMV0FZU19JTkxJTkUgdm9pZCBWZWN0b3IxMjhTdG9yZSgKKyAgICBjb25zdCBW
ZWN0b3IxMjgmIHYsIHZvaWQqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHRvKSB7Cisg
IHVpbnQ4X3QqIGRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRvKTsKKyAgZHN0WzBd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odi5zWzBdID4+IDI0KTsKKyAgZHN0WzFdID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4odi5zWzBdID4+IDE2KTsKKyAgZHN0WzJdID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4odi5zWzBdID4+IDgpOworICBkc3RbM10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2LnNb
MF0pOworICBkc3RbNF0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2LnNbMV0gPj4gMjQpOworICBk
c3RbNV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2LnNbMV0gPj4gMTYpOworICBkc3RbNl0gPSBz
dGF0aWNfY2FzdDx1aW50OF90Pih2LnNbMV0gPj4gOCk7CisgIGRzdFs3XSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHYuc1sxXSk7CisgIGRzdFs4XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1sy
XSA+PiAyNCk7CisgIGRzdFs5XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHYuc1syXSA+PiAxNik7
CisgIGRzdFsxMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2LnNbMl0gPj4gOCk7CisgIGRzdFsx
MV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2LnNbMl0pOworICBkc3RbMTJdID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4odi5zWzNdID4+IDI0KTsKKyAgZHN0WzEzXSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHYuc1szXSA+PiAxNik7CisgIGRzdFsxNF0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2LnNb
M10gPj4gOCk7CisgIGRzdFsxNV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2LnNbM10pOworfQor
CisvLyBPbmUgcm91bmQgb2YgQUVTLiAicm91bmRfa2V5IiBpcyBhIHB1YmxpYyBjb25zdGFudCBm
b3IgYnJlYWtpbmcgdGhlCisvLyBzeW1tZXRyeSBvZiBBRVMgKGVuc3VyZXMgcHJldmlvdXNseSBl
cXVhbCBjb2x1bW5zIGRpZmZlciBhZnRlcndhcmRzKS4KK2lubGluZSBBQlNMX1JBTkRPTV9JTlRF
Uk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBWZWN0b3IxMjgKK0Flc1JvdW5kKGNvbnN0IFZl
Y3RvcjEyOCYgc3RhdGUsIGNvbnN0IFZlY3RvcjEyOCYgcm91bmRfa2V5KSB7CisgIC8vIGNsYW5n
LWZvcm1hdCBvZmYKKyAgVmVjdG9yMTI4IHJlc3VsdDsKKyAgcmVzdWx0LnNbMF0gPSByb3VuZF9r
ZXkuc1swXSBeCisgICAgICAgICAgICAgICAgdGUwW3VpbnQ4X3Qoc3RhdGUuc1swXSA+PiAyNCld
IF4KKyAgICAgICAgICAgICAgICB0ZTFbdWludDhfdChzdGF0ZS5zWzFdID4+IDE2KV0gXgorICAg
ICAgICAgICAgICAgIHRlMlt1aW50OF90KHN0YXRlLnNbMl0gPj4gOCldIF4KKyAgICAgICAgICAg
ICAgICB0ZTNbdWludDhfdChzdGF0ZS5zWzNdKV07CisgIHJlc3VsdC5zWzFdID0gcm91bmRfa2V5
LnNbMV0gXgorICAgICAgICAgICAgICAgIHRlMFt1aW50OF90KHN0YXRlLnNbMV0gPj4gMjQpXSBe
CisgICAgICAgICAgICAgICAgdGUxW3VpbnQ4X3Qoc3RhdGUuc1syXSA+PiAxNildIF4KKyAgICAg
ICAgICAgICAgICB0ZTJbdWludDhfdChzdGF0ZS5zWzNdID4+IDgpXSBeCisgICAgICAgICAgICAg
ICAgdGUzW3VpbnQ4X3Qoc3RhdGUuc1swXSldOworICByZXN1bHQuc1syXSA9IHJvdW5kX2tleS5z
WzJdIF4KKyAgICAgICAgICAgICAgICB0ZTBbdWludDhfdChzdGF0ZS5zWzJdID4+IDI0KV0gXgor
ICAgICAgICAgICAgICAgIHRlMVt1aW50OF90KHN0YXRlLnNbM10gPj4gMTYpXSBeCisgICAgICAg
ICAgICAgICAgdGUyW3VpbnQ4X3Qoc3RhdGUuc1swXSA+PiA4KV0gXgorICAgICAgICAgICAgICAg
IHRlM1t1aW50OF90KHN0YXRlLnNbMV0pXTsKKyAgcmVzdWx0LnNbM10gPSByb3VuZF9rZXkuc1sz
XSBeCisgICAgICAgICAgICAgICAgdGUwW3VpbnQ4X3Qoc3RhdGUuc1szXSA+PiAyNCldIF4KKyAg
ICAgICAgICAgICAgICB0ZTFbdWludDhfdChzdGF0ZS5zWzBdID4+IDE2KV0gXgorICAgICAgICAg
ICAgICAgIHRlMlt1aW50OF90KHN0YXRlLnNbMV0gPj4gOCldIF4KKyAgICAgICAgICAgICAgICB0
ZTNbdWludDhfdChzdGF0ZS5zWzJdKV07CisgIHJldHVybiByZXN1bHQ7CisgIC8vIGNsYW5nLWZv
cm1hdCBvbgorfQorCisvLyBSQU5EZW4gPSBSQU5Eb20gZ2VuZXJhdG9yIG9yIGJlZXRyb290cyBp
biBTd2lzcyBHZXJtYW4uCisvLyAnU3Ryb25nJyAod2VsbC1kaXN0cmlidXRlZCwgdW5wcmVkaWN0
YWJsZSwgYmFja3RyYWNraW5nLXJlc2lzdGFudCkgcmFuZG9tCisvLyBnZW5lcmF0b3IsIGZhc3Rl
ciBpbiBzb21lIGJlbmNobWFya3MgdGhhbiBzdGQ6Om10MTk5MzdfNjQgYW5kIHBjZzY0X2MzMi4K
Ky8vCisvLyBIaWdoLWxldmVsIHN1bW1hcnk6CisvLyAxKSBSZXZlcmllIChzZWUgIkEgUm9idXN0
IGFuZCBTcG9uZ2UtTGlrZSBQUk5HIHdpdGggSW1wcm92ZWQgRWZmaWNpZW5jeSIpIGlzCisvLyAg
ICBhIHNwb25nZS1saWtlIHJhbmRvbSBnZW5lcmF0b3IgdGhhdCByZXF1aXJlcyBhIGNyeXB0b2dy
YXBoaWMgcGVybXV0YXRpb24uCisvLyAgICBJdCBpbXByb3ZlcyB1cG9uICJQcm92YWJseSBSb2J1
c3QgU3BvbmdlLUJhc2VkIFBSTkdzIGFuZCBLREZzIiBieQorLy8gICAgYWNoaWV2aW5nIGJhY2t0
cmFja2luZyByZXNpc3RhbmNlIHdpdGggb25seSBvbmUgUGVybXV0ZSgpIHBlciBidWZmZXIuCisv
LworLy8gMikgIlNpbXBpcmEgdjI6IEEgRmFtaWx5IG9mIEVmZmljaWVudCBQZXJtdXRhdGlvbnMg
VXNpbmcgdGhlIEFFUyBSb3VuZAorLy8gICAgRnVuY3Rpb24iIGNvbnN0cnVjdHMgdXAgdG8gMTAy
NC1iaXQgcGVybXV0YXRpb25zIHVzaW5nIGFuIGltcHJvdmVkCisvLyAgICBHZW5lcmFsaXplZCBG
ZWlzdGVsIG5ldHdvcmsgd2l0aCAyLXJvdW5kIEFFUy0xMjggZnVuY3Rpb25zLiBUaGlzIEZlaXN0
ZWwKKy8vICAgIGJsb2NrIHNodWZmbGUgYWNoaWV2ZXMgZGlmZnVzaW9uIGZhc3RlciBhbmQgaXMg
bGVzcyB2dWxuZXJhYmxlIHRvCisvLyAgICBzbGljZWQtYmljbGlxdWUgYXR0YWNrcyB0aGFuIHRo
ZSBUeXBlLTIgY3ljbGljIHNodWZmbGUuCisvLworLy8gMykgIkltcHJvdmluZyB0aGUgR2VuZXJh
bGl6ZWQgRmVpc3RlbCIgYW5kICJOZXcgY3JpdGVyaW9uIGZvciBkaWZmdXNpb24KKy8vICAgIHBy
b3BlcnR5IiBleHRlbmRzIHRoZSBzYW1lIGtpbmQgb2YgaW1wcm92ZWQgRmVpc3RlbCBibG9jayBz
aHVmZmxlIHRvIDE2CisvLyAgICBicmFuY2hlcywgd2hpY2ggZW5hYmxlcyBhIDIwNDgtYml0IHBl
cm11dGF0aW9uLgorLy8KKy8vIENvbWJpbmUgdGhlc2UgdGhyZWUgaWRlYXMgYW5kIGFsc28gY2hh
bmdlIFNpbXBpcmEncyBzdWJyb3VuZCBrZXlzIGZyb20KKy8vIHN0cnVjdHVyZWQvbG93LWVudHJv
cHkgY291bnRlcnMgdG8gZGlnaXRzIG9mIFBpLgorCisvLyBSYW5kZW4gY29uc3RhbnRzLgorY29u
c3RleHByIHNpemVfdCBrRmVpc3RlbEJsb2NrcyA9IDE2OworY29uc3RleHByIHNpemVfdCBrRmVp
c3RlbEZ1bmN0aW9ucyA9IGtGZWlzdGVsQmxvY2tzIC8gMjsgIC8vID0gOAorY29uc3RleHByIHNp
emVfdCBrRmVpc3RlbFJvdW5kcyA9IDE2ICsgMTsgIC8vID4gNCAqIGxvZzIoa0ZlaXN0ZWxCbG9j
a3MpCitjb25zdGV4cHIgc2l6ZV90IGtLZXlzID0ga0ZlaXN0ZWxSb3VuZHMgKiBrRmVpc3RlbEZ1
bmN0aW9uczsKKworLy8gSU5DTFVERSBrZXlzLgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVy
bmFsL3JhbmRlbi1rZXlzLmluYyIKKworc3RhdGljX2Fzc2VydChrS2V5cyA9PSBrUm91bmRLZXlz
LCAia0tleXMgYW5kIGtSb3VuZEtleXMgbXVzdCBiZSBlcXVhbCIpOworCisvLyAyIHVpbnQ2NF90
IGxhbmVzIHBlciBWZWN0b3IxMjgKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtMYW5lcyA9IDI7
CisKKy8vIFRoZSBpbXByb3ZlZCBGZWlzdGVsIGJsb2NrIHNodWZmbGUgZnVuY3Rpb24gZm9yIDE2
IGJsb2Nrcy4KK2lubGluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lO
TElORSB2b2lkIEJsb2NrU2h1ZmZsZSgKKyAgICB1aW50NjRfdCogQUJTTF9SQU5ET01fSU5URVJO
QUxfUkVTVFJJQ1Qgc3RhdGVfdTY0KSB7CisgIHN0YXRpY19hc3NlcnQoa0ZlaXN0ZWxCbG9ja3Mg
PT0gMTYsCisgICAgICAgICAgICAgICAgIkZlaXN0ZWwgYmxvY2sgc2h1ZmZsZSBvbmx5IHdvcmtz
IGZvciAxNiBibG9ja3MuIik7CisKKyAgY29uc3RleHByIHNpemVfdCBzaHVmZmxlW2tGZWlzdGVs
QmxvY2tzXSA9IHs3LCAgMiwgMTMsIDQsICAxMSwgOCwgIDMsIDYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUsIDAsIDksICAxMCwgMSwgIDE0LCA1LCAx
Mn07CisKKyAgdTY0eDIqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHN0YXRlID0KKyAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dTY0eDIqPihzdGF0ZV91NjQpOworCisgIC8vIFRoZSBmdWxs
eSB1bnJvbGxlZCBsb29wIHdpdGhvdXQgdGhlIG1lbWNweSBpbXByb3ZlcyB0aGUgc3BlZWQgYnkg
YWJvdXQKKyAgLy8gMzAlIG92ZXIgdGhlIGVxdWl2YWxlbnQgKGxlYXZpbmcgY29kZSBoZXJlIGFz
IGEgY29tbWVudCk6CisgIGlmIChmYWxzZSkgeworICAgIHU2NHgyIHNvdXJjZVtrRmVpc3RlbEJs
b2Nrc107CisgICAgc3RkOjptZW1jcHkoc291cmNlLCBzdGF0ZSwgc2l6ZW9mKHNvdXJjZSkpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga0ZlaXN0ZWxCbG9ja3M7IGkrKykgeworICAgICAg
Y29uc3QgdTY0eDIgdjAgPSBzb3VyY2Vbc2h1ZmZsZVtpXV07CisgICAgICBzdGF0ZVtpXSA9IHYw
OworICAgIH0KKyAgfQorCisgIGNvbnN0IHU2NHgyIHYwID0gc3RhdGVbc2h1ZmZsZVswXV07Cisg
IGNvbnN0IHU2NHgyIHYxID0gc3RhdGVbc2h1ZmZsZVsxXV07CisgIGNvbnN0IHU2NHgyIHYyID0g
c3RhdGVbc2h1ZmZsZVsyXV07CisgIGNvbnN0IHU2NHgyIHYzID0gc3RhdGVbc2h1ZmZsZVszXV07
CisgIGNvbnN0IHU2NHgyIHY0ID0gc3RhdGVbc2h1ZmZsZVs0XV07CisgIGNvbnN0IHU2NHgyIHY1
ID0gc3RhdGVbc2h1ZmZsZVs1XV07CisgIGNvbnN0IHU2NHgyIHY2ID0gc3RhdGVbc2h1ZmZsZVs2
XV07CisgIGNvbnN0IHU2NHgyIHY3ID0gc3RhdGVbc2h1ZmZsZVs3XV07CisgIGNvbnN0IHU2NHgy
IHcwID0gc3RhdGVbc2h1ZmZsZVs4XV07CisgIGNvbnN0IHU2NHgyIHcxID0gc3RhdGVbc2h1ZmZs
ZVs5XV07CisgIGNvbnN0IHU2NHgyIHcyID0gc3RhdGVbc2h1ZmZsZVsxMF1dOworICBjb25zdCB1
NjR4MiB3MyA9IHN0YXRlW3NodWZmbGVbMTFdXTsKKyAgY29uc3QgdTY0eDIgdzQgPSBzdGF0ZVtz
aHVmZmxlWzEyXV07CisgIGNvbnN0IHU2NHgyIHc1ID0gc3RhdGVbc2h1ZmZsZVsxM11dOworICBj
b25zdCB1NjR4MiB3NiA9IHN0YXRlW3NodWZmbGVbMTRdXTsKKyAgY29uc3QgdTY0eDIgdzcgPSBz
dGF0ZVtzaHVmZmxlWzE1XV07CisgIHN0YXRlWzBdID0gdjA7CisgIHN0YXRlWzFdID0gdjE7Cisg
IHN0YXRlWzJdID0gdjI7CisgIHN0YXRlWzNdID0gdjM7CisgIHN0YXRlWzRdID0gdjQ7CisgIHN0
YXRlWzVdID0gdjU7CisgIHN0YXRlWzZdID0gdjY7CisgIHN0YXRlWzddID0gdjc7CisgIHN0YXRl
WzhdID0gdzA7CisgIHN0YXRlWzldID0gdzE7CisgIHN0YXRlWzEwXSA9IHcyOworICBzdGF0ZVsx
MV0gPSB3MzsKKyAgc3RhdGVbMTJdID0gdzQ7CisgIHN0YXRlWzEzXSA9IHc1OworICBzdGF0ZVsx
NF0gPSB3NjsKKyAgc3RhdGVbMTVdID0gdzc7Cit9CisKKy8vIEZlaXN0ZWwgcm91bmQgZnVuY3Rp
b24gdXNpbmcgdHdvIEFFUyBzdWJyb3VuZHMuIFZlcnkgc2ltaWxhciB0byBGKCkKKy8vIGZyb20g
U2ltcGlyYSB2MiwgYnV0IHdpdGggaW5kZXBlbmRlbnQgc3Vicm91bmQga2V5cy4gVXNlcyAxNyBB
RVMgcm91bmRzCisvLyBwZXIgMTYgYnl0ZXMgKHZzLiAxMCBmb3IgQUVTLUNUUikuIENvbXB1dGlu
ZyBlaWdodCByb3VuZCBmdW5jdGlvbnMgaW4KKy8vIHBhcmFsbGVsIGhpZGVzIHRoZSA3LWN5Y2xl
IEFFU05JIGxhdGVuY3kgb24gSFNXLiBOb3RlIHRoYXQgdGhlIEZlaXN0ZWwKKy8vIFhPUnMgYXJl
ICdmcmVlJyAoaW5jbHVkZWQgaW4gdGhlIHNlY29uZCBBRVMgaW5zdHJ1Y3Rpb24pLgoraW5saW5l
IEFCU0xfUkFORE9NX0lOVEVSTkFMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIGNvbnN0IHU2NHgy
KiBGZWlzdGVsUm91bmQoCisgICAgdWludDY0X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RS
SUNUIHN0YXRlLAorICAgIGNvbnN0IHU2NHgyKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklD
VCBrZXlzKSB7CisgIGZvciAoc2l6ZV90IGJyYW5jaCA9IDA7IGJyYW5jaCA8IGtGZWlzdGVsQmxv
Y2tzOyBicmFuY2ggKz0gNCkgeworICAgIGNvbnN0IFZlY3RvcjEyOCBzMCA9IFZlY3RvcjEyOExv
YWQoc3RhdGUgKyBrTGFuZXMgKiBicmFuY2gpOworICAgIGNvbnN0IFZlY3RvcjEyOCBzMSA9IFZl
Y3RvcjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAoYnJhbmNoICsgMSkpOworICAgIGNvbnN0IFZl
Y3RvcjEyOCBmMCA9IEFlc1JvdW5kKHMwLCBWZWN0b3IxMjhMb2FkKGtleXMpKTsKKyAgICBrZXlz
Kys7CisgICAgY29uc3QgVmVjdG9yMTI4IG8xID0gQWVzUm91bmQoZjAsIHMxKTsKKyAgICBWZWN0
b3IxMjhTdG9yZShvMSwgc3RhdGUgKyBrTGFuZXMgKiAoYnJhbmNoICsgMSkpOworCisgICAgLy8g
TWFudWFsbHkgdW5yb2xsIHRoaXMgbG9vcCBvbmNlLiBhYm91dCAxMCUgYmV0dGVyIHRoYW4gbm90
IHVucm9sbGVkLgorICAgIGNvbnN0IFZlY3RvcjEyOCBzMiA9IFZlY3RvcjEyOExvYWQoc3RhdGUg
KyBrTGFuZXMgKiAoYnJhbmNoICsgMikpOworICAgIGNvbnN0IFZlY3RvcjEyOCBzMyA9IFZlY3Rv
cjEyOExvYWQoc3RhdGUgKyBrTGFuZXMgKiAoYnJhbmNoICsgMykpOworICAgIGNvbnN0IFZlY3Rv
cjEyOCBmMiA9IEFlc1JvdW5kKHMyLCBWZWN0b3IxMjhMb2FkKGtleXMpKTsKKyAgICBrZXlzKys7
CisgICAgY29uc3QgVmVjdG9yMTI4IG8zID0gQWVzUm91bmQoZjIsIHMzKTsKKyAgICBWZWN0b3Ix
MjhTdG9yZShvMywgc3RhdGUgKyBrTGFuZXMgKiAoYnJhbmNoICsgMykpOworICB9CisgIHJldHVy
biBrZXlzOworfQorCisvLyBDcnlwdG9ncmFwaGljIHBlcm11dGF0aW9uIGJhc2VkIHZpYSB0eXBl
LTIgR2VuZXJhbGl6ZWQgRmVpc3RlbCBOZXR3b3JrLgorLy8gSW5kaXN0aW5ndWlzaGFibGUgZnJv
bSBpZGVhbCBieSBjaG9zZW4tY2lwaGVydGV4dCBhZHZlcnNhcmllcyB1c2luZyBsZXNzIHRoYW4K
Ky8vIDJeNjQgcXVlcmllcyBpZiB0aGUgcm91bmQgZnVuY3Rpb24gaXMgYSBQUkYuIFRoaXMgaXMg
c2ltaWxhciB0byB0aGUgYj04IGNhc2UKKy8vIG9mIFNpbXBpcmEgdjIsIGJ1dCBtb3JlIGVmZmlj
aWVudCB0aGFuIGl0cyBnZW5lcmljIGNvbnN0cnVjdGlvbiBmb3IgYj0xNi4KK2lubGluZSBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSB2b2lkIFBlcm11dGUoCisg
ICAgY29uc3Qgdm9pZCoga2V5cywgdWludDY0X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RS
SUNUIHN0YXRlKSB7CisgIGNvbnN0IHU2NHgyKiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9SRVNUUklD
VCBrZXlzMTI4ID0KKyAgICAgIHN0YXRpY19jYXN0PGNvbnN0IHU2NHgyKj4oa2V5cyk7CisgIGZv
ciAoc2l6ZV90IHJvdW5kID0gMDsgcm91bmQgPCBrRmVpc3RlbFJvdW5kczsgKytyb3VuZCkgewor
ICAgIGtleXMxMjggPSBGZWlzdGVsUm91bmQoc3RhdGUsIGtleXMxMjgpOworICAgIEJsb2NrU2h1
ZmZsZShzdGF0ZSk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSBhYnNs
IHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCitjb25zdCB2b2lkKiBSYW5kZW5TbG93
OjpHZXRLZXlzKCkgeworICAvLyBSb3VuZCBrZXlzIGZvciBvbmUgQUVTIHBlciBGZWlzdGVsIHJv
dW5kIGFuZCBicmFuY2guCisgIC8vIFRoZSBjYW5vbmljYWwgaW1wbGVtZW50YXRpb24gdXNlcyBm
aXJzdCBkaWdpdHMgb2YgUGkuCisgIHJldHVybiByb3VuZF9rZXlzOworfQorCit2b2lkIFJhbmRl
blNsb3c6OkFic29yYihjb25zdCB2b2lkKiBzZWVkX3ZvaWQsIHZvaWQqIHN0YXRlX3ZvaWQpIHsK
KyAgdWludDY0X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHN0YXRlID0KKyAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihzdGF0ZV92b2lkKTsKKyAgY29uc3QgdWludDY0
X3QqIEFCU0xfUkFORE9NX0lOVEVSTkFMX1JFU1RSSUNUIHNlZWQgPQorICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50NjRfdCo+KHNlZWRfdm9pZCk7CisKKyAgY29uc3RleHByIHNpemVf
dCBrQ2FwYWNpdHlCbG9ja3MgPSBrQ2FwYWNpdHlCeXRlcyAvIHNpemVvZih1aW50NjRfdCk7Cisg
IHN0YXRpY19hc3NlcnQoa0NhcGFjaXR5QmxvY2tzICogc2l6ZW9mKHVpbnQ2NF90KSA9PSBrQ2Fw
YWNpdHlCeXRlcywKKyAgICAgICAgICAgICAgICAiTm90IGkqViIpOworICBmb3IgKHNpemVfdCBp
ID0ga0NhcGFjaXR5QmxvY2tzOyBpIDwga1N0YXRlQnl0ZXMgLyBzaXplb2YodWludDY0X3QpOyAr
K2kpIHsKKyAgICBzdGF0ZVtpXSBePSBzZWVkW2kgLSBrQ2FwYWNpdHlCbG9ja3NdOworICB9Cit9
CisKK3ZvaWQgUmFuZGVuU2xvdzo6R2VuZXJhdGUoY29uc3Qgdm9pZCoga2V5cywgdm9pZCogc3Rh
dGVfdm9pZCkgeworICBzdGF0aWNfYXNzZXJ0KGtDYXBhY2l0eUJ5dGVzID09IHNpemVvZihWZWN0
b3IxMjgpLCAiQ2FwYWNpdHkgbWlzbWF0Y2giKTsKKworICB1aW50NjRfdCogQUJTTF9SQU5ET01f
SU5URVJOQUxfUkVTVFJJQ1Qgc3RhdGUgPQorICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRf
dCo+KHN0YXRlX3ZvaWQpOworCisgIGNvbnN0IFZlY3RvcjEyOCBwcmV2X2lubmVyID0gVmVjdG9y
MTI4TG9hZChzdGF0ZSk7CisKKyAgUGVybXV0ZShrZXlzLCBzdGF0ZSk7CisKKyAgLy8gRW5zdXJl
IGJhY2t0cmFja2luZyByZXNpc3RhbmNlLgorICBWZWN0b3IxMjggaW5uZXIgPSBWZWN0b3IxMjhM
b2FkKHN0YXRlKTsKKyAgaW5uZXIgXj0gcHJldl9pbm5lcjsKKyAgVmVjdG9yMTI4U3RvcmUoaW5u
ZXIsIHN0YXRlKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5f
c2xvdy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl9zbG93LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzA1ODYxMzA4MDAzMzFmOGI4ZmVjOGQ0ZWE5M2Q4M2YzMDQwOTk3NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fc2xvdy5oCkBAIC0wLDAgKzEsNDMgQEAK
Ky8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xf
UkFORE9NX0lOVEVSTkFMX1JBTkRFTl9TTE9XX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVS
TkFMX1JBTkRFTl9TTE9XX0hfCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKKworLy8gUkFORGVuID0gUkFORG9tIGdl
bmVyYXRvciBvciBiZWV0cm9vdHMgaW4gU3dpc3MgR2VybWFuLgorLy8gUmFuZGVuU2xvdyBpbXBs
ZW1lbnRzIHRoZSBiYXNpYyBzdGF0ZSBtYW5pcHVsYXRpb24gbWV0aG9kcyBmb3IKKy8vIGFyY2hp
dGVjdHVyZXMgbGFja2luZyBBRVMgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGludHJpbnNpY3MuCitj
bGFzcyBSYW5kZW5TbG93IHsKKyBwdWJsaWM6CisgIC8vIFNpemUgb2YgdGhlIGVudGlyZSBzcG9u
Z2UgLyBzdGF0ZSBmb3IgdGhlIHJhbmRlbiBQUk5HLgorICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBrU3RhdGVCeXRlcyA9IDI1NjsgIC8vIDIwNDgtYml0CisKKyAgLy8gU2l6ZSBvZiB0aGUgJ2lu
bmVyJyAoaW5hY2Nlc3NpYmxlKSBwYXJ0IG9mIHRoZSBzcG9uZ2UuIExhcmdlciB2YWx1ZXMgd291
bGQKKyAgLy8gcmVxdWlyZSBtb3JlIGZyZXF1ZW50IGNhbGxzIHRvIFJhbmRlbkdlbmVyYXRlLgor
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrQ2FwYWNpdHlCeXRlcyA9IDE2OyAgLy8gMTI4LWJp
dAorCisgIHN0YXRpYyB2b2lkIEdlbmVyYXRlKGNvbnN0IHZvaWQqIGtleXMsIHZvaWQqIHN0YXRl
X3ZvaWQpOworICBzdGF0aWMgdm9pZCBBYnNvcmIoY29uc3Qgdm9pZCogc2VlZF92b2lkLCB2b2lk
KiBzdGF0ZV92b2lkKTsKKyAgc3RhdGljIGNvbnN0IHZvaWQqIEdldEtleXMoKTsKK307CisKK30g
IC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNl
bmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX1NMT1dfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fc2xvd190ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2ludGVybmFsL3JhbmRlbl9zbG93X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA3MTU1ZDhkZDBjYWI2
MDk3ODljMDg1ZjI4MGFlZmUxY2IzMzJkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9yYW5kZW5fc2xvd190ZXN0LmNjCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENvcHly
aWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20v
aW50ZXJuYWwvcmFuZGVuX3Nsb3cuaCIKKworI2luY2x1ZGUgPGNzdHJpbmc+CisKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpyYW5kb21faW50
ZXJuYWw6OlJhbmRlblNsb3c7CisKKy8vIExvY2FsIHN0YXRlIHBhcmFtZXRlcnMuCitjb25zdGV4
cHIgc2l6ZV90IGtTZWVkQnl0ZXMgPQorICAgIFJhbmRlblNsb3c6OmtTdGF0ZUJ5dGVzIC0gUmFu
ZGVuU2xvdzo6a0NhcGFjaXR5Qnl0ZXM7Citjb25zdGV4cHIgc2l6ZV90IGtTdGF0ZVNpemVUID0g
UmFuZGVuU2xvdzo6a1N0YXRlQnl0ZXMgLyBzaXplb2YodWludDY0X3QpOworY29uc3RleHByIHNp
emVfdCBrU2VlZFNpemVUID0ga1NlZWRCeXRlcyAvIHNpemVvZih1aW50MzJfdCk7CisKK3N0cnVj
dCByYW5kZW4geworICB1aW50NjRfdCBzdGF0ZVtrU3RhdGVTaXplVF07CisgIHVpbnQzMl90IHNl
ZWRba1NlZWRTaXplVF07Cit9OworCitURVNUKFJhbmRlblNsb3dUZXN0LCBEZWZhdWx0KSB7Cisg
IGNvbnN0ZXhwciB1aW50NjRfdCBrR29sZGVuW10gPSB7CisgICAgICAweDZjNjUzNDA5MGVlNmQz
ZWUsIDB4MDQ0ZTJiOWI5ZDUzMzNjNiwgMHhjM2MxNGYxMzRlNDMzOTc3LAorICAgICAgMHhkZGE5
ZjQ3Y2Q5MDQxMGVlLCAweDg4N2JmMzA4N2ZkOGNhMTAsIDB4ZjBiNzgwZjU0NWM3MjkxMiwKKyAg
ICAgIDB4MTVkYmIxZDM3Njk2NTk5ZiwgMHgzMGVjNjNiYWZmM2M2ZDU5LCAweGIyOWY3MzYwNmY3
ZjIwYTYsCisgICAgICAweDAyODA4YTMxNmY0OWE1NGMsIDB4M2I4ZmVhZjlkNWM4ZTUwZSwgMHg5
Y2JmNjA1ZTNmZDlkZThhLAorICAgICAgMHhjOTcwYWUxYTc4MTgzYmJiLCAweGQ4YjJmZmQzNTYz
MDFlZDUsIDB4ZjRiMzI3ZmUwZmM3M2MzNywKKyAgICAgIDB4Y2RmZDhkNzZlYjhmOWExOSwgMHhj
M2E1MDZlYjkxNDIwYzlkLCAweGQ1YWYwNWRkM2VmZjk1NTYsCisgICAgICAweDQ4ZGIxYmI3OGY4
M2M0YTEsIDB4NzAyMzkyMGUwZDZiZmU4YywgMHg1OGQzNTc1ODM0OTU2ZDQyLAorICAgICAgMHhl
ZDFlZjRjMjZiODdiODQwLCAweDhlZWYzMmEyM2UwYjJkZjMsIDB4NDk3Y2FiZjM0MzExNTRmYywK
KyAgICAgIDB4NGUyNDM3MDU3MDAyOWE4YiwgMHhkODhiNTc0OWYwOTBlNWVhLCAweGM2NTFhNTgy
YTk3MDY5MmYsCisgICAgICAweDc4ZmNlYzJjYmI2MzQyZjUsIDB4NDYzY2I3NDU2MTJmNTVkYiwg
MHgzNTJlZTRhZDE4MTZhZmUzLAorICAgICAgMHgwMjZmZjM3NGMxMDFkYTdlLCAweDgxMWVmMDgy
MWMzZGU4NTEsCisgIH07CisKKyAgYWxpZ25hcygxNikgcmFuZGVuIGQ7CisgIHN0ZDo6bWVtc2V0
KGQuc3RhdGUsIDAsIHNpemVvZihkLnN0YXRlKSk7CisgIFJhbmRlblNsb3c6OkdlbmVyYXRlKFJh
bmRlblNsb3c6OkdldEtleXMoKSwgZC5zdGF0ZSk7CisKKyAgdWludDY0X3QqIGlkID0gZC5zdGF0
ZTsKKyAgZm9yIChjb25zdCBhdXRvJiBlbGVtIDoga0dvbGRlbikgeworICAgIEVYUEVDVF9FUShl
bGVtLCAqaWQrKyk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwv
cmFuZGVuX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE4NmZlMGQ2ODZiYzg1YzNjNGE3YmFiODNmNDli
MzVmZjgyZGU0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5k
ZW5fdGVzdC5jYwpAQCAtMCwwICsxLDcwIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbi5oIgor
CisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVk
ZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIGFic2w6
OnJhbmRvbV9pbnRlcm5hbDo6UmFuZGVuOworCisvLyBMb2NhbCBzdGF0ZSBwYXJhbWV0ZXJzLgor
Y29uc3RleHByIHNpemVfdCBrU3RhdGVTaXplVCA9IFJhbmRlbjo6a1N0YXRlQnl0ZXMgLyBzaXpl
b2YodWludDY0X3QpOworCitURVNUKFJhbmRlblRlc3QsIENvcHlBbmRNb3ZlKSB7CisgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8UmFuZGVuPjo6dmFsdWUsCisgICAg
ICAgICAgICAgICAgIlJhbmRlbiBtdXN0IGJlIGNvcHkgY29uc3RydWN0aWJsZSIpOworCisgIHN0
YXRpY19hc3NlcnQoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPFJhbmRlbj46OnZhbHVlLAorICAg
ICAgICAgICAgICAgICJSYW5kZW4gbXVzdCBiZSBjb3B5IGFzc2lnbmFibGUiKTsKKworICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPFJhbmRlbj46OnZhbHVlLAorICAg
ICAgICAgICAgICAgICJSYW5kZW4gbXVzdCBiZSBtb3ZlIGNvbnN0cnVjdGlibGUiKTsKKworICBz
dGF0aWNfYXNzZXJ0KGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxSYW5kZW4+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAiUmFuZGVuIG11c3QgYmUgbW92ZSBhc3NpZ25hYmxlIik7Cit9CisKK1RF
U1QoUmFuZGVuVGVzdCwgRGVmYXVsdCkgeworICBjb25zdGV4cHIgdWludDY0X3Qga0dvbGRlbltd
ID0geworICAgICAgMHg2YzY1MzQwOTBlZTZkM2VlLCAweDA0NGUyYjliOWQ1MzMzYzYsIDB4YzNj
MTRmMTM0ZTQzMzk3NywKKyAgICAgIDB4ZGRhOWY0N2NkOTA0MTBlZSwgMHg4ODdiZjMwODdmZDhj
YTEwLCAweGYwYjc4MGY1NDVjNzI5MTIsCisgICAgICAweDE1ZGJiMWQzNzY5NjU5OWYsIDB4MzBl
YzYzYmFmZjNjNmQ1OSwgMHhiMjlmNzM2MDZmN2YyMGE2LAorICAgICAgMHgwMjgwOGEzMTZmNDlh
NTRjLCAweDNiOGZlYWY5ZDVjOGU1MGUsIDB4OWNiZjYwNWUzZmQ5ZGU4YSwKKyAgICAgIDB4Yzk3
MGFlMWE3ODE4M2JiYiwgMHhkOGIyZmZkMzU2MzAxZWQ1LCAweGY0YjMyN2ZlMGZjNzNjMzcsCisg
ICAgICAweGNkZmQ4ZDc2ZWI4ZjlhMTksIDB4YzNhNTA2ZWI5MTQyMGM5ZCwgMHhkNWFmMDVkZDNl
ZmY5NTU2LAorICAgICAgMHg0OGRiMWJiNzhmODNjNGExLCAweDcwMjM5MjBlMGQ2YmZlOGMsIDB4
NThkMzU3NTgzNDk1NmQ0MiwKKyAgICAgIDB4ZWQxZWY0YzI2Yjg3Yjg0MCwgMHg4ZWVmMzJhMjNl
MGIyZGYzLCAweDQ5N2NhYmYzNDMxMTU0ZmMsCisgICAgICAweDRlMjQzNzA1NzAwMjlhOGIsIDB4
ZDg4YjU3NDlmMDkwZTVlYSwgMHhjNjUxYTU4MmE5NzA2OTJmLAorICAgICAgMHg3OGZjZWMyY2Ji
NjM0MmY1LCAweDQ2M2NiNzQ1NjEyZjU1ZGIsIDB4MzUyZWU0YWQxODE2YWZlMywKKyAgICAgIDB4
MDI2ZmYzNzRjMTAxZGE3ZSwgMHg4MTFlZjA4MjFjM2RlODUxLAorICB9OworCisgIGFsaWduYXMo
MTYpIHVpbnQ2NF90IHN0YXRlW2tTdGF0ZVNpemVUXTsKKyAgc3RkOjptZW1zZXQoc3RhdGUsIDAs
IHNpemVvZihzdGF0ZSkpOworCisgIFJhbmRlbiByOworICByLkdlbmVyYXRlKHN0YXRlKTsKKwor
ICBhdXRvIGlkID0gc3RkOjpiZWdpbihzdGF0ZSk7CisgIGZvciAoY29uc3QgYXV0byYgZWxlbSA6
IGtHb2xkZW4pIHsKKyAgICBFWFBFQ1RfRVEoZWxlbSwgKmlkKyspOworICB9Cit9CisKK30gIC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3JhbmRlbl90cmFp
dHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fdHJhaXRzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGYxZjQwOGQxOTE3ZjZlMTcyMmFlMmY0YzZjYTE2Y2ZmMGJiMmYzMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9yYW5kZW5fdHJhaXRzLmgKQEAgLTAsMCArMSw1OSBA
QAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJT
TF9SQU5ET01fSU5URVJOQUxfUkFOREVOX1RSQUlUU19IXworI2RlZmluZSBBQlNMX1JBTkRPTV9J
TlRFUk5BTF9SQU5ERU5fVFJBSVRTX0hfCisKKy8vIEhFUk1FVElDIE5PVEU6IFRoZSByYW5kZW5f
aHdhZXMgdGFyZ2V0IG11c3Qgbm90IGludHJvZHVjZSBkdXBsaWNhdGUKKy8vIHN5bWJvbHMgZnJv
bSBhcmJpdHJhcnkgc3lzdGVtIGFuZCBvdGhlciBoZWFkZXJzLCBzaW5jZSBpdCBtYXkgYmUgYnVp
bHQKKy8vIHdpdGggZGlmZmVyZW50IGZsYWdzIGZyb20gb3RoZXIgdGFyZ2V0cywgdXNpbmcgZGlm
ZmVyZW50IGxldmVscyBvZgorLy8gb3B0aW1pemF0aW9uLCBwb3RlbnRpYWxseSBpbnRyb2R1Y2lu
ZyBPRFIgdmlvbGF0aW9ucy4KKworI2luY2x1ZGUgPGNzdGRkZWY+CisKK25hbWVzcGFjZSBhYnNs
IHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworCisvLyBSQU5EZW4gPSBSQU5Eb20gZ2Vu
ZXJhdG9yIG9yIGJlZXRyb290cyBpbiBTd2lzcyBHZXJtYW4uCisvLyAnU3Ryb25nJyAod2VsbC1k
aXN0cmlidXRlZCwgdW5wcmVkaWN0YWJsZSwgYmFja3RyYWNraW5nLXJlc2lzdGFudCkgcmFuZG9t
CisvLyBnZW5lcmF0b3IsIGZhc3RlciBpbiBzb21lIGJlbmNobWFya3MgdGhhbiBzdGQ6Om10MTk5
MzdfNjQgYW5kIHBjZzY0X2MzMi4KKy8vCisvLyBSYW5kZW5UcmFpdHMgY29udGFpbnMgdGhlIGJh
c2ljIGFsZ29yaXRobSB0cmFpdHMsIHN1Y2ggYXMgdGhlIHNpemUgb2YgdGhlCisvLyBzdGF0ZSwg
c2VlZCwgc3BvbmdlLCBldGMuCitzdHJ1Y3QgUmFuZGVuVHJhaXRzIHsKKyAgLy8gU2l6ZSBvZiB0
aGUgZW50aXJlIHNwb25nZSAvIHN0YXRlIGZvciB0aGUgcmFuZGVuIFBSTkcuCisgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IGtTdGF0ZUJ5dGVzID0gMjU2OyAgLy8gMjA0OC1iaXQKKworICAvLyBT
aXplIG9mIHRoZSAnaW5uZXInIChpbmFjY2Vzc2libGUpIHBhcnQgb2YgdGhlIHNwb25nZS4gTGFy
Z2VyIHZhbHVlcyB3b3VsZAorICAvLyByZXF1aXJlIG1vcmUgZnJlcXVlbnQgY2FsbHMgdG8gUmFu
ZGVuR2VuZXJhdGUuCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtDYXBhY2l0eUJ5dGVzID0g
MTY7ICAvLyAxMjgtYml0CisKKyAgLy8gU2l6ZSBvZiB0aGUgZGVmYXVsdCBzZWVkIGNvbnN1bWVk
IGJ5IHRoZSBzcG9uZ2UuCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTZWVkQnl0ZXMgPSBr
U3RhdGVCeXRlcyAtIGtDYXBhY2l0eUJ5dGVzOworCisgIC8vIExhcmdlc3Qgc2l6ZSBmb3Igd2hp
Y2ggc2VjdXJpdHkgcHJvb2ZzIGFyZSBrbm93bi4KKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
a0ZlaXN0ZWxCbG9ja3MgPSAxNjsKKworICAvLyBUeXBlLTIgZ2VuZXJhbGl6ZWQgRmVpc3RlbCA9
PiBvbmUgcm91bmQgZnVuY3Rpb24gZm9yIGV2ZXJ5IHR3byBibG9ja3MuCisgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IGtGZWlzdGVsRnVuY3Rpb25zID0ga0ZlaXN0ZWxCbG9ja3MgLyAyOyAgLy8g
PSA4CisKKyAgLy8gRW5zdXJlcyBTUFJQIHNlY3VyaXR5IGFuZCB0d28gZnVsbCBzdWJibG9jayBk
aWZmdXNpb25zLgorICAvLyBNdXN0IGJlID4gNCAqIGxvZzIoa0ZlaXN0ZWxCbG9ja3MpLgorICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBrRmVpc3RlbFJvdW5kcyA9IDE2ICsgMTsKK307CisKK30g
IC8vIG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNl
bmRpZiAgLy8gQUJTTF9SQU5ET01fSU5URVJOQUxfUkFOREVOX1RSQUlUU19IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3NhbHRlZF9zZWVkX3NlcS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2ludGVybmFsL3NhbHRlZF9zZWVkX3NlcS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2NDg3MDA2OTI1NDE3ZjM3
YmQ5NGRlNjc0MDQyNDljNWFmNzJiZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
aW50ZXJuYWwvc2FsdGVkX3NlZWRfc2VxLmgKQEAgLTAsMCArMSwxNjUgQEAKKy8vIENvcHlyaWdo
dCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVS
TkFMX1NBTFRFRF9TRUVEX1NFUV9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9TQUxU
RURfU0VFRF9TRVFfSF8KKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0ZGxpYj4K
KyNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5Pgor
CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaCIKKyNpbmNsdWRlICJh
YnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9z
ZWVkX21hdGVyaWFsLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1
ZGUgImFic2wvdHlwZXMvc3Bhbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgcmFu
ZG9tX2ludGVybmFsIHsKKworLy8gVGhpcyBjbGFzcyBjb25mb3JtcyB0byB0aGUgQysrIFN0YW5k
YXJkICJTZWVkIFNlcXVlbmNlIiBjb25jZXB0CisvLyBbcmFuZC5yZXEuc2VlZHNlcV0uCisvLwor
Ly8gQSBgU2FsdGVkU2VlZFNlcWAgaXMgbWVhbnQgdG8gd3JhcCBhbiBleGlzdGluZyBzZWVkIHNl
cXVlbmNlIGFuZCBtb2RpZnkKKy8vIGdlbmVyYXRlZCBzZXF1ZW5jZSBieSBtaXhpbmcgd2l0aCBl
eHRyYSBlbnRyb3B5LiBUaGlzIGVudHJvcHkgbWF5IGJlCisvLyBidWlsZC1kZXBlbmRlbnQgb3Ig
cHJvY2Vzcy1kZXBlbmRlbnQuIFRoZSBpbXBsZW1lbnRhdGlvbiBtYXkgY2hhbmdlIHRvIGJlCisv
LyBoYXZlIGVpdGhlciBvciBib3RoIGtpbmRzIG9mIGVudHJvcHkuIElmIHNhbHQgaXMgbm90IGF2
YWlsYWJsZSBzZXF1ZW5jZSBpcworLy8gbm90IG1vZGlmaWVkLgordGVtcGxhdGUgPHR5cGVuYW1l
IFNTZXE+CitjbGFzcyBTYWx0ZWRTZWVkU2VxIHsKKyBwdWJsaWM6CisgIHVzaW5nIGlubmVyX3Nl
cXVlbmNlX3R5cGUgPSBTU2VxOworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIFNTZXE6
OnJlc3VsdF90eXBlOworCisgIFNhbHRlZFNlZWRTZXEoKSA6IHNlcV8oYWJzbDo6bWFrZV91bmlx
dWU8U1NlcT4oKSkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+CisgIFNhbHRl
ZFNlZWRTZXEoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKKyAgICAgIDogc2VxXyhhYnNs
OjptYWtlX3VuaXF1ZTxTU2VxPihiZWdpbiwgZW5kKSkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgU2FsdGVkU2VlZFNlcShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaWwpCisgICAg
ICA6IFNhbHRlZFNlZWRTZXEoaWwuYmVnaW4oKSwgaWwuZW5kKCkpIHt9CisKKyAgU2FsdGVkU2Vl
ZFNlcShjb25zdCBTYWx0ZWRTZWVkU2VxJikgPSBkZWxldGU7CisgIFNhbHRlZFNlZWRTZXEmIG9w
ZXJhdG9yPShjb25zdCBTYWx0ZWRTZWVkU2VxJikgPSBkZWxldGU7CisKKyAgU2FsdGVkU2VlZFNl
cShTYWx0ZWRTZWVkU2VxJiYpID0gZGVmYXVsdDsKKyAgU2FsdGVkU2VlZFNlcSYgb3BlcmF0b3I9
KFNhbHRlZFNlZWRTZXEmJikgPSBkZWZhdWx0OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBSYW5k
b21BY2Nlc3NJdGVyYXRvcj4KKyAgdm9pZCBnZW5lcmF0ZShSYW5kb21BY2Nlc3NJdGVyYXRvciBi
ZWdpbiwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgZW5kKSB7CisgICAgLy8gVGhlIGNvbW1vbiBjYXNl
IGlzIHRoYXQgZ2VuZXJhdGUgaXMgY2FsbGVkIHdpdGggQ29udGlndW91c0l0ZXJhdG9ycworICAg
IC8vIHRvIHVpbnQgYXJyYXlzLiBTdWNoIGNvbnRpZ3VvdXMgbWVtb3J5IHJlZ2lvbnMgbWF5IGJl
IG9wdGltaXplZCwKKyAgICAvLyB3aGljaCB3ZSBkZXRlY3QgaGVyZS4KKyAgICB1c2luZyB0YWcg
PSBhYnNsOjpjb25kaXRpb25hbF90PAorICAgICAgICAoc3RkOjppc19wb2ludGVyPFJhbmRvbUFj
Y2Vzc0l0ZXJhdG9yPjo6dmFsdWUgJiYKKyAgICAgICAgIHN0ZDo6aXNfc2FtZTxhYnNsOjpkZWNh
eV90PGRlY2x0eXBlKCpiZWdpbik+LCB1aW50MzJfdD46OnZhbHVlKSwKKyAgICAgICAgQ29udGln
dW91c0FuZFVpbnQzMlRhZywgRGVmYXVsdFRhZz47CisgICAgaWYgKGJlZ2luICE9IGVuZCkgewor
ICAgICAgZ2VuZXJhdGVfaW1wbChiZWdpbiwgZW5kLCB0YWd7fSk7CisgICAgfQorICB9CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIE91dEl0ZXJhdG9yPgorICB2b2lkIHBhcmFtKE91dEl0ZXJhdG9y
IG91dCkgY29uc3QgeworICAgIHNlcV8tPnBhcmFtKG91dCk7CisgIH0KKworICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIHNlcV8tPnNpemUoKTsgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0
IENvbnRpZ3VvdXNBbmRVaW50MzJUYWcge307CisgIHN0cnVjdCBEZWZhdWx0VGFnIHt9OworCisg
IC8vIEdlbmVyYXRlIHdoaWNoIHJlcXVpcmVzIHRoZSBpdGVyYXRvcnMgYXJlIGNvbnRpZ3VvdXMg
cG9pbnRlcnMgdG8gdWludDMyX3QuCisgIHZvaWQgZ2VuZXJhdGVfaW1wbCh1aW50MzJfdCogYmVn
aW4sIHVpbnQzMl90KiBlbmQsIENvbnRpZ3VvdXNBbmRVaW50MzJUYWcpIHsKKyAgICBnZW5lcmF0
ZV9jb250aWd1b3VzKGFic2w6Ok1ha2VTcGFuKGJlZ2luLCBlbmQpKTsKKyAgfQorCisgIC8vIFRo
ZSB1bmNvbW1vbiBjYXNlIGZvciBnZW5lcmF0ZSBpcyB0aGF0IGl0IGlzIGNhbGxlZCB3aXRoIGl0
ZXJhdG9ycyBvdmVyCisgIC8vIHNvbWUgb3RoZXIgYnVmZmVyIHR5cGUgd2hpY2ggaXMgYXNzaWdu
YWJsZSBmcm9tIGEgMzItYml0IHZhbHVlLiBJbiB0aGlzCisgIC8vIGNhc2Ugd2UgYWxsb2NhdGUg
YSB0ZW1wb3JhcnkgMzItYml0IGJ1ZmZlciBhbmQgdGhlbiBjb3B5LWFzc2lnbiBiYWNrCisgIC8v
IHRvIHRoZSBpbml0aWFsIGlucHV0cy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vz
c0l0ZXJhdG9yPgorICB2b2lkIGdlbmVyYXRlX2ltcGwoUmFuZG9tQWNjZXNzSXRlcmF0b3IgYmVn
aW4sIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgIERlZmF1
bHRUYWcpIHsKKyAgICByZXR1cm4gZ2VuZXJhdGVfYW5kX2NvcHkoc3RkOjpkaXN0YW5jZShiZWdp
biwgZW5kKSwgYmVnaW4pOworICB9CisKKyAgLy8gRmlsbHMgdGhlIGluaXRpYWwgc2VlZCBidWZm
ZXIgdGhlIHVuZGVybHlpbmcgU1NlcTo6Z2VuZXJhdGUoKSBjYWxsLAorICAvLyBtaXhpbmcgaW4g
dGhlIHNhbHQgbWF0ZXJpYWwuCisgIHZvaWQgZ2VuZXJhdGVfY29udGlndW91cyhhYnNsOjpTcGFu
PHVpbnQzMl90PiBidWZmZXIpIHsKKyAgICBzZXFfLT5nZW5lcmF0ZShidWZmZXIuYmVnaW4oKSwg
YnVmZmVyLmVuZCgpKTsKKyAgICBjb25zdCB1aW50MzJfdCBzYWx0ID0gYWJzbDo6cmFuZG9tX2lu
dGVybmFsOjpHZXRTYWx0TWF0ZXJpYWwoKS52YWx1ZV9vcigwKTsKKyAgICBNaXhJbnRvU2VlZE1h
dGVyaWFsKGFic2w6Ok1ha2VDb25zdFNwYW4oJnNhbHQsIDEpLCBidWZmZXIpOworICB9CisKKyAg
Ly8gQWxsb2NhdGVzIGEgc2VlZCBidWZmZXIgb2YgYG5gIGVsZW1lbnRzLCBnZW5lcmF0ZXMgdGhl
IHNlZWQsIHRoZW4KKyAgLy8gY29waWVzIHRoZSByZXN1bHQgaW50byB0aGUgYG91dGAgaXRlcmF0
b3IuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KKyAgdm9pZCBnZW5lcmF0ZV9hbmRf
Y29weShzaXplX3QgbiwgSXRlcmF0b3Igb3V0KSB7CisgICAgLy8gQWxsb2NhdGUgYSB0ZW1wb3Jh
cnkgYnVmZmVyLCBnZW5lcmF0ZSwgYW5kIHRoZW4gY29weS4KKyAgICBhYnNsOjpJbmxpbmVkVmVj
dG9yPHVpbnQzMl90LCA4PiBkYXRhKG4sIDApOworICAgIGdlbmVyYXRlX2NvbnRpZ3VvdXMoYWJz
bDo6TWFrZVNwYW4oZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CisgICAgc3RkOjpjb3B5KGRh
dGEuYmVnaW4oKSwgZGF0YS5lbmQoKSwgb3V0KTsKKyAgfQorCisgIC8vIEJlY2F1c2UgW3JhbmQu
cmVxLnNlZWRzZXFdIGlzIG5vdCByZXF1aXJlZCB0byBiZSBjb3B5LWNvbnN0cnVjdGlibGUsCisg
IC8vIGNvcHktYXNzaWduYWJsZSBub3IgbW92YWJsZSwgd2Ugd3JhcCBpdCB3aXRoIHVuaXF1ZSBw
b2ludGVyIHRvIGJlIGFibGUKKyAgLy8gdG8gbW92ZSBTYWx0ZWRTZWVkU2VxLgorICBzdGQ6OnVu
aXF1ZV9wdHI8U1NlcT4gc2VxXzsKK307CisKKy8vIGlzX3NhbHRlZF9zZWVkX3NlcSBpbmRpY2F0
ZXMgd2hldGhlciB0aGUgdHlwZSBpcyBhIFNhbHRlZFNlZWRTZXEuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSB2b2lkPgorc3RydWN0IGlzX3NhbHRlZF9zZWVkX3NlcSA6IHB1Ymxp
YyBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlz
X3NhbHRlZF9zZWVkX3NlcTwKKyAgICBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3NhbWU8CisgICAgICAgICAgIFQsIFNhbHRlZFNlZWRTZXE8dHlwZW5hbWUgVDo6aW5uZXJfc2Vx
dWVuY2VfdHlwZT4+Ojp2YWx1ZT46OnR5cGU+CisgICAgOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUg
e307CisKKy8vIE1ha2VTYWx0ZWRTZWVkU2VxIHJldHVybnMgYSBzYWx0ZWQgdmFyaWFudCBvZiB0
aGUgc2VlZCBzZXF1ZW5jZS4KKy8vIFdoZW4gcHJvdmlkZWQgd2l0aCBhbiBleGlzdGluZyBTYWx0
ZWRTZWVkU2VxLCByZXR1cm5zIHRoZSBpbnB1dCBwYXJhbWV0ZXIsCisvLyBvdGhlcndpc2UgY29u
c3RydWN0cyBhIG5ldyBTYWx0ZWRTZWVkU2VxIHdoaWNoIGVtYm9kaWVzIHRoZSBvcmlnaW5hbAor
Ly8gbm9uLXNhbHRlZCBzZWVkIHBhcmFtZXRlcnMuCit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUg
U1NlcSwgIC8vCisgICAgdHlwZW5hbWUgRW5hYmxlSWYgPSBhYnNsOjplbmFibGVfaWZfdDxpc19z
YWx0ZWRfc2VlZF9zZXE8U1NlcT46OnZhbHVlPj4KK1NTZXEgTWFrZVNhbHRlZFNlZWRTZXEoU1Nl
cSYmIHNlcSkgeworICByZXR1cm4gU1NlcShzdGQ6OmZvcndhcmQ8U1NlcT4oc2VxKSk7Cit9CisK
K3RlbXBsYXRlIDwKKyAgICB0eXBlbmFtZSBTU2VxLCAgLy8KKyAgICB0eXBlbmFtZSBFbmFibGVJ
ZiA9IGFic2w6OmVuYWJsZV9pZl90PCFpc19zYWx0ZWRfc2VlZF9zZXE8U1NlcT46OnZhbHVlPj4K
K1NhbHRlZFNlZWRTZXE8dHlwZW5hbWUgc3RkOjpkZWNheTxTU2VxPjo6dHlwZT4gTWFrZVNhbHRl
ZFNlZWRTZXEoU1NlcSYmIHNlcSkgeworICB1c2luZyBzc2VxX3R5cGUgPSB0eXBlbmFtZSBzdGQ6
OmRlY2F5PFNTZXE+Ojp0eXBlOworICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1lIHNzZXFf
dHlwZTo6cmVzdWx0X3R5cGU7CisKKyAgYWJzbDo6SW5saW5lZFZlY3RvcjxyZXN1bHRfdHlwZSwg
OD4gZGF0YTsKKyAgc2VxLnBhcmFtKHN0ZDo6YmFja19pbnNlcnRlcihkYXRhKSk7CisgIHJldHVy
biBTYWx0ZWRTZWVkU2VxPHNzZXFfdHlwZT4oZGF0YS5iZWdpbigpLCBkYXRhLmVuZCgpKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
KworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9JTlRFUk5BTF9TQUxURURfU0VFRF9TRVFfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zYWx0ZWRfc2VlZF9zZXFfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zYWx0ZWRfc2VlZF9zZXFfdGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYmYxOWE2M2VmOGM1ZjNmY2VmOWQ5ZjBjMTQ3YzVkYjBiN2I0NWE0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3NhbHRlZF9zZWVkX3NlcV90ZXN0LmNjCkBAIC0w
LDAgKzEsMTY4IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwor
I2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3NhbHRlZF9zZWVkX3NlcS5oIgorCisjaW5j
bHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHV0aWxpdHk+Cisj
aW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCit1c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkdldFNhbHRNYXRl
cmlhbDsKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6TWFrZVNhbHRlZFNlZWRTZXE7Cit1
c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlNhbHRlZFNlZWRTZXE7Cit1c2luZyB0ZXN0aW5n
OjpFcTsKK3VzaW5nIHRlc3Rpbmc6OlBvaW50d2lzZTsKKworbmFtZXNwYWNlIHsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFNzZXE+Cit2b2lkIENvbmZvcm1zVG9JbnRlcmZhY2UoKSB7CisgIC8vIENo
ZWNrIHRoYXQgdGhlIFNlZWRTZXF1ZW5jZSBjYW4gYmUgZGVmYXVsdC1jb25zdHJ1Y3RlZC4KKyAg
eyBTc2VxIGRlZmF1bHRfY29uc3RydWN0ZWRfc2VxOyB9CisgIC8vIENoZWNrIHRoYXQgdGhlIFNl
ZWRTZXF1ZW5jZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCB0d28gaXRlcmF0b3JzLgorICB7Cisg
ICAgdWludDMyX3QgaW5pdF9hcnJheVtdID0gezEsIDMsIDUsIDcsIDl9OworICAgIFNzZXEgaXRl
cmF0b3JfY29uc3RydWN0ZWRfc2VxKHN0ZDo6YmVnaW4oaW5pdF9hcnJheSksIHN0ZDo6ZW5kKGlu
aXRfYXJyYXkpKTsKKyAgfQorICAvLyBDaGVjayB0aGF0IHRoZSBTZWVkU2VxdWVuY2UgY2FuIGJl
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdC1jb25zdHJ1Y3RlZC4KKyAgeyBTc2VxIGxpc3RfY29uc3Ry
dWN0ZWRfc2VxID0gezEsIDMsIDUsIDcsIDksIDExLCAxM307IH0KKyAgLy8gQ2hlY2sgdGhhdCBw
YXJhbSgpIGFuZCBzaXplKCkgcmV0dXJuIHN0YXRlIHByb3ZpZGVkIHRvIGNvbnN0cnVjdG9yLgor
ICB7CisgICAgdWludDMyX3QgaW5pdF9hcnJheVtdID0gezEsIDIsIDMsIDQsIDV9OworICAgIFNz
ZXEgc2VxKHN0ZDo6YmVnaW4oaW5pdF9hcnJheSksIHN0ZDo6ZW5kKGluaXRfYXJyYXkpKTsKKyAg
ICBFWFBFQ1RfRVEoc2VxLnNpemUoKSwgQUJTTF9BUlJBWVNJWkUoaW5pdF9hcnJheSkpOworCisg
ICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHN0YXRlX3ZlY3RvcjsKKyAgICBzZXEucGFyYW0oc3Rk
OjpiYWNrX2luc2VydGVyKHN0YXRlX3ZlY3RvcikpOworCisgICAgRVhQRUNUX0VRKHN0YXRlX3Zl
Y3Rvci5zaXplKCksIEFCU0xfQVJSQVlTSVpFKGluaXRfYXJyYXkpKTsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHN0YXRlX3ZlY3Rvci5zaXplKCk7IGkrKykgeworICAgICAgRVhQRUNUX0VRKHN0
YXRlX3ZlY3RvcltpXSwgaSArIDEpOworICAgIH0KKyAgfQorICAvLyBDaGVjayBmb3IgcHJlc2Vu
Y2Ugb2YgZ2VuZXJhdGUoKSBtZXRob2QuCisgIHsKKyAgICBTc2VxIHNlcTsKKyAgICB1aW50MzJf
dCBzZWVkc1s1XTsKKworICAgIHNlcS5nZW5lcmF0ZShzdGQ6OmJlZ2luKHNlZWRzKSwgc3RkOjpl
bmQoc2VlZHMpKTsKKyAgfQorfQorCitURVNUKFNhbHRlZFNlZWRTZXEsIENoZWNrSW50ZXJmYWNl
cykgeworICAvLyBDb250cm9sIGNhc2UKKyAgQ29uZm9ybXNUb0ludGVyZmFjZTxzdGQ6OnNlZWRf
c2VxPigpOworCisgIC8vIEFic2VpbCBjbGFzc2VzCisgIENvbmZvcm1zVG9JbnRlcmZhY2U8U2Fs
dGVkU2VlZFNlcTxzdGQ6OnNlZWRfc2VxPj4oKTsKK30KKworVEVTVChTYWx0ZWRTZWVkU2VxLCBD
aGVja0NvbnN0cnVjdGluZ0Zyb21PdGhlclNlcXVlbmNlKSB7CisgIHN0ZDo6dmVjdG9yPHVpbnQz
Ml90PiBzZWVkX3ZhbHVlcygxMCwgMSk7CisgIHN0ZDo6c2VlZF9zZXEgc2VxKHNlZWRfdmFsdWVz
LmJlZ2luKCksIHNlZWRfdmFsdWVzLmVuZCgpKTsKKyAgYXV0byBzYWx0ZWRfc2VxID0gTWFrZVNh
bHRlZFNlZWRTZXEoc3RkOjptb3ZlKHNlcSkpOworCisgIEVYUEVDVF9FUShzZXEuc2l6ZSgpLCBz
YWx0ZWRfc2VxLnNpemUoKSk7CisKKyAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHBhcmFtX3Jlc3Vs
dDsKKyAgc2VxLnBhcmFtKHN0ZDo6YmFja19pbnNlcnRlcihwYXJhbV9yZXN1bHQpKTsKKworICBF
WFBFQ1RfRVEoc2VlZF92YWx1ZXMsIHBhcmFtX3Jlc3VsdCk7Cit9CisKK1RFU1QoU2FsdGVkU2Vl
ZFNlcSwgU2FsdGVkU2FsdGVkU2VlZFNlcUlzTm90RG91YmxlU2FsdGVkKSB7CisgIHVpbnQzMl90
IGluaXRbXSA9IHsxLCAzLCA1LCA3LCA5fTsKKworICBzdGQ6OnNlZWRfc2VxIHNlcShzdGQ6OmJl
Z2luKGluaXQpLCBzdGQ6OmVuZChpbml0KSk7CisKKyAgLy8gVGhlIGZpcnN0IHNhbHRpbmcuCisg
IFNhbHRlZFNlZWRTZXE8c3RkOjpzZWVkX3NlcT4gc2FsdGVkX3NlcSA9IE1ha2VTYWx0ZWRTZWVk
U2VxKHN0ZDo6bW92ZShzZXEpKTsKKyAgdWludDMyX3QgYVsxNl07CisgIHNhbHRlZF9zZXEuZ2Vu
ZXJhdGUoc3RkOjpiZWdpbihhKSwgc3RkOjplbmQoYSkpOworCisgIC8vIFRoZSBzZWNvbmQgc2Fs
dGluZy4KKyAgU2FsdGVkU2VlZFNlcTxzdGQ6OnNlZWRfc2VxPiBzYWx0ZWRfc2FsdGVkX3NlcSA9
CisgICAgICBNYWtlU2FsdGVkU2VlZFNlcShzdGQ6Om1vdmUoc2FsdGVkX3NlcSkpOworICB1aW50
MzJfdCBiWzE2XTsKKyAgc2FsdGVkX3NhbHRlZF9zZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihiKSwg
c3RkOjplbmQoYikpOworCisgIC8vIC4uLiBib3RoIHNob3VsZCBiZSBlcXVhbC4KKyAgRVhQRUNU
X1RIQVQoYiwgUG9pbnR3aXNlKEVxKCksIGEpKSA8PCAiYVswXSAiIDw8IGFbMF07Cit9CisKK1RF
U1QoU2FsdGVkU2VlZFNlcSwgU2VlZE1hdGVyaWFsSXNTYWx0ZWQpIHsKKyAgY29uc3Qgc2l6ZV90
IGtOdW1CbG9ja3MgPSAxNjsKKworICB1aW50MzJfdCBzZWVkX21hdGVyaWFsW2tOdW1CbG9ja3Nd
OworICBzdGQ6OnJhbmRvbV9kZXZpY2UgdXJhbmRvbXsiL2Rldi91cmFuZG9tIn07CisgIGZvciAo
dWludDMyX3QmIHNlZWQgOiBzZWVkX21hdGVyaWFsKSB7CisgICAgc2VlZCA9IHVyYW5kb20oKTsK
KyAgfQorCisgIHN0ZDo6c2VlZF9zZXEgc2VxKHN0ZDo6YmVnaW4oc2VlZF9tYXRlcmlhbCksIHN0
ZDo6ZW5kKHNlZWRfbWF0ZXJpYWwpKTsKKyAgU2FsdGVkU2VlZFNlcTxzdGQ6OnNlZWRfc2VxPiBz
YWx0ZWRfc2VxKHN0ZDo6YmVnaW4oc2VlZF9tYXRlcmlhbCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuZChzZWVkX21hdGVyaWFsKSk7CisKKyAgYm9v
bCBzYWx0X2lzX2F2YWlsYWJsZSA9IEdldFNhbHRNYXRlcmlhbCgpLmhhc192YWx1ZSgpOworCisg
IC8vIElmIHNhbHQgaXMgYXZhaWxhYmxlIGdlbmVyYXRlZCBzZXF1ZW5jZSBzaG91bGQgYmUgZGlm
ZmVyZW50LgorICBpZiAoc2FsdF9pc19hdmFpbGFibGUpIHsKKyAgICB1aW50MzJfdCBvdXRwdXRz
W2tOdW1CbG9ja3NdOworICAgIHVpbnQzMl90IHNhbHRlZF9vdXRwdXRzW2tOdW1CbG9ja3NdOwor
CisgICAgc2VxLmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0cyksIHN0ZDo6ZW5kKG91dHB1dHMp
KTsKKyAgICBzYWx0ZWRfc2VxLmdlbmVyYXRlKHN0ZDo6YmVnaW4oc2FsdGVkX291dHB1dHMpLCBz
dGQ6OmVuZChzYWx0ZWRfb3V0cHV0cykpOworCisgICAgRVhQRUNUX1RIQVQob3V0cHV0cywgUG9p
bnR3aXNlKHRlc3Rpbmc6Ok5lKCksIHNhbHRlZF9vdXRwdXRzKSk7CisgIH0KK30KKworVEVTVChT
YWx0ZWRTZWVkU2VxLCBHZW5lcmF0ZUFjY2VwdHNEaWZmZXJlbnRUeXBlcykgeworICBjb25zdCBz
aXplX3Qga051bUJsb2NrcyA9IDQ7CisKKyAgU2FsdGVkU2VlZFNlcTxzdGQ6OnNlZWRfc2VxPiBz
ZXEoezEsIDIsIDN9KTsKKworICB1aW50MzJfdCBleHBlY3RlZFtrTnVtQmxvY2tzXTsKKyAgc2Vx
LmdlbmVyYXRlKHN0ZDo6YmVnaW4oZXhwZWN0ZWQpLCBzdGQ6OmVuZChleHBlY3RlZCkpOworCisg
IC8vIDMyLWJpdCBvdXRwdXRzCisgIHsKKyAgICB1bnNpZ25lZCBsb25nIHNlZWRfbWF0ZXJpYWxb
a051bUJsb2Nrc107ICAvLyBOT0xJTlQocnVudGltZS9pbnQpCisgICAgc2VxLmdlbmVyYXRlKHN0
ZDo6YmVnaW4oc2VlZF9tYXRlcmlhbCksIHN0ZDo6ZW5kKHNlZWRfbWF0ZXJpYWwpKTsKKyAgICBF
WFBFQ1RfVEhBVChzZWVkX21hdGVyaWFsLCBQb2ludHdpc2UoRXEoKSwgZXhwZWN0ZWQpKTsKKyAg
fQorICB7CisgICAgdW5zaWduZWQgaW50IHNlZWRfbWF0ZXJpYWxba051bUJsb2Nrc107ICAvLyBO
T0xJTlQocnVudGltZS9pbnQpCisgICAgc2VxLmdlbmVyYXRlKHN0ZDo6YmVnaW4oc2VlZF9tYXRl
cmlhbCksIHN0ZDo6ZW5kKHNlZWRfbWF0ZXJpYWwpKTsKKyAgICBFWFBFQ1RfVEhBVChzZWVkX21h
dGVyaWFsLCBQb2ludHdpc2UoRXEoKSwgZXhwZWN0ZWQpKTsKKyAgfQorCisgIC8vIDY0LWJpdCBv
dXRwdXRzLgorICB7CisgICAgdWludDY0X3Qgc2VlZF9tYXRlcmlhbFtrTnVtQmxvY2tzXTsKKyAg
ICBzZXEuZ2VuZXJhdGUoc3RkOjpiZWdpbihzZWVkX21hdGVyaWFsKSwgc3RkOjplbmQoc2VlZF9t
YXRlcmlhbCkpOworICAgIEVYUEVDVF9USEFUKHNlZWRfbWF0ZXJpYWwsIFBvaW50d2lzZShFcSgp
LCBleHBlY3RlZCkpOworICB9CisgIHsKKyAgICBpbnQ2NF90IHNlZWRfbWF0ZXJpYWxba051bUJs
b2Nrc107CisgICAgc2VxLmdlbmVyYXRlKHN0ZDo6YmVnaW4oc2VlZF9tYXRlcmlhbCksIHN0ZDo6
ZW5kKHNlZWRfbWF0ZXJpYWwpKTsKKyAgICBFWFBFQ1RfVEhBVChzZWVkX21hdGVyaWFsLCBQb2lu
dHdpc2UoRXEoKSwgZXhwZWN0ZWQpKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX21hdGVyaWFsLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWwuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVkZDUzNWY5YzA5OWMy
ZDA5ODY2ZGM1YjM4Njg4MDlkOTBmZmEwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRv
bS9pbnRlcm5hbC9zZWVkX21hdGVyaWFsLmNjCkBAIC0wLDAgKzEsMjA1IEBACisvLyBDb3B5cmln
aHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2lu
dGVybmFsL3NlZWRfbWF0ZXJpYWwuaCIKKworI2luY2x1ZGUgPGZjbnRsLmg+CisKKyNpZm5kZWYg
X1dJTjMyCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZWxzZQorI2luY2x1ZGUgPGlvLmg+CisjZW5k
aWYKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjZXJybm8+CisjaW5jbHVkZSA8
Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPGNzdHJpbmc+CisKKyNpbmNs
dWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3MvYXNjaWkuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvZXNjYXBpbmcuaCIKKyNpbmNs
dWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
c3RyaXAuaCIKKworI2lmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCisKKyNpbmNsdWRlIDxu
YWNsL25hY2xfcmFuZG9tLmg+CisjZGVmaW5lIEFCU0xfUkFORE9NX1VTRV9OQUNMX1NFQ1VSRV9S
QU5ET00gMQorCisjZWxpZiBkZWZpbmVkKF9XSU4zMikKKworI2luY2x1ZGUgPHdpbmRvd3MuaD4K
KyNkZWZpbmUgQUJTTF9SQU5ET01fVVNFX0JDUllQVCAxCisjcHJhZ21hIGNvbW1lbnQobGliLCAi
YmNyeXB0LmxpYiIpCisKKyNlbmRpZgorCisjaWYgZGVmaW5lZChBQlNMX1JBTkRPTV9VU0VfQkNS
WVBUKQorI2luY2x1ZGUgPGJjcnlwdC5oPgorCisjaWZuZGVmIEJDUllQVF9TVUNDRVNTCisjZGVm
aW5lIEJDUllQVF9TVUNDRVNTKFN0YXR1cykgKCgoTlRTVEFUVVMpKFN0YXR1cykpID49IDApCisj
ZW5kaWYKKy8vIEFsc28gbGluayBiY3J5cHQ7IHRoaXMgY2FuIGJlIGRvbmUgdmlhIGxpbmtlciBv
cHRpb25zIG9yOgorLy8gI3ByYWdtYSBjb21tZW50KGxpYiwgImJjcnlwdC5saWIiKQorI2VuZGlm
CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSByYW5kb21faW50ZXJuYWwgeworbmFtZXNw
YWNlIHsKKworLy8gUmVhZCBPUyBFbnRyb3B5IGZvciByYW5kb20gbnVtYmVyIHNlZWRzLgorLy8g
VE9ETyhhYnNsLXRlYW0pOiBQb3NzaWJseSBwbGFjZSBhIGNhcCBvbiBob3cgbXVjaCBlbnRyb3B5
IG1heSBiZSByZWFkIGF0IGEKKy8vIHRpbWUuCisKKyNpZiBkZWZpbmVkKEFCU0xfUkFORE9NX1VT
RV9CQ1JZUFQpCisKKy8vIE9uIFdpbmRvd3MgcG90ZW50aWFsbHkgdXNlIHRoZSBCQ1JZUFQgQ05H
IEFQSSB0byByZWFkIGF2YWlsYWJsZSBlbnRyb3B5LgorYm9vbCBSZWFkU2VlZE1hdGVyaWFsRnJv
bU9TRW50cm9weUltcGwoYWJzbDo6U3Bhbjx1aW50MzJfdD4gdmFsdWVzKSB7CisgIEJDUllQVF9B
TEdfSEFORExFIGhQcm92aWRlcjsKKyAgTlRTVEFUVVMgcmV0OworICByZXQgPSBCQ3J5cHRPcGVu
QWxnb3JpdGhtUHJvdmlkZXIoJmhQcm92aWRlciwgQkNSWVBUX1JOR19BTEdPUklUSE0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU19QUklNSVRJVkVfUFJPVklERVIsIDAp
OworICBpZiAoIShCQ1JZUFRfU1VDQ0VTUyhyZXQpKSkgeworICAgIEFCU0xfUkFXX0xPRyhFUlJP
UiwgIkZhaWxlZCB0byBvcGVuIGNyeXB0byBwcm92aWRlci4iKTsKKyAgICByZXR1cm4gZmFsc2U7
CisgIH0KKyAgcmV0ID0gQkNyeXB0R2VuUmFuZG9tKAorICAgICAgaFByb3ZpZGVyLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3ZpZGVyCisgICAgICBy
ZWludGVycHJldF9jYXN0PFVDSEFSKj4odmFsdWVzLmRhdGEoKSksICAgICAgICAgICAgICAgLy8g
YnVmZmVyCisgICAgICBzdGF0aWNfY2FzdDxVTE9ORz4oc2l6ZW9mKHVpbnQzMl90KSAqIHZhbHVl
cy5zaXplKCkpLCAgLy8gYnl0ZXMKKyAgICAgIDApOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmbGFncworICBCQ3J5cHRDbG9zZUFsZ29yaXRo
bVByb3ZpZGVyKGhQcm92aWRlciwgMCk7CisgIHJldHVybiBCQ1JZUFRfU1VDQ0VTUyhyZXQpOwor
fQorCisjZWxpZiBkZWZpbmVkKEFCU0xfUkFORE9NX1VTRV9OQUNMX1NFQ1VSRV9SQU5ET00pCisK
Ky8vIE9uIE5hQ0wgdXNlIG5hY2xfc2VjdXJlX3JhbmRvbSB0byBhY3F1aXJlIGJ5dGVzLgorYm9v
bCBSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weUltcGwoYWJzbDo6U3Bhbjx1aW50MzJfdD4g
dmFsdWVzKSB7CisgIGF1dG8gYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odmFs
dWVzLmRhdGEoKSk7CisgIHNpemVfdCBidWZmZXJfc2l6ZSA9IHNpemVvZih1aW50MzJfdCkgKiB2
YWx1ZXMuc2l6ZSgpOworCisgIHVpbnQ4X3QqIG91dHB1dF9wdHIgPSBidWZmZXI7CisgIHdoaWxl
IChidWZmZXJfc2l6ZSA+IDApIHsKKyAgICBzaXplX3QgbnJlYWQgPSAwOworICAgIGNvbnN0IGlu
dCBlcnJvciA9IG5hY2xfc2VjdXJlX3JhbmRvbShvdXRwdXRfcHRyLCBidWZmZXJfc2l6ZSwgJm5y
ZWFkKTsKKyAgICBpZiAoZXJyb3IgIT0gMCB8fCBucmVhZCA+IGJ1ZmZlcl9zaXplKSB7CisgICAg
ICBBQlNMX1JBV19MT0coRVJST1IsICJGYWlsZWQgdG8gcmVhZCBzZWN1cmVfcmFuZG9tIHNlZWQg
ZGF0YTogJWQiLCBlcnJvcik7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG91dHB1
dF9wdHIgKz0gbnJlYWQ7CisgICAgYnVmZmVyX3NpemUgLT0gbnJlYWQ7CisgIH0KKyAgcmV0dXJu
IHRydWU7Cit9CisKKyNlbHNlCisKKy8vIE9uICpuaXgsIHJlYWQgZW50cm9weSBmcm9tIC9kZXYv
dXJhbmRvbS4KK2Jvb2wgUmVhZFNlZWRNYXRlcmlhbEZyb21PU0VudHJvcHlJbXBsKGFic2w6OlNw
YW48dWludDMyX3Q+IHZhbHVlcykgeworICBjb25zdCBjaGFyIGtFbnRyb3B5RmlsZVtdID0gIi9k
ZXYvdXJhbmRvbSI7CisKKyAgYXV0byBidWZmZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
Pih2YWx1ZXMuZGF0YSgpKTsKKyAgc2l6ZV90IGJ1ZmZlcl9zaXplID0gc2l6ZW9mKHVpbnQzMl90
KSAqIHZhbHVlcy5zaXplKCk7CisKKyAgaW50IGRldl91cmFuZG9tID0gb3BlbihrRW50cm9weUZp
bGUsIE9fUkRPTkxZKTsKKyAgYm9vbCBzdWNjZXNzID0gKC0xICE9IGRldl91cmFuZG9tKTsKKyAg
aWYgKCFzdWNjZXNzKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgd2hpbGUgKHN1Y2Nl
c3MgJiYgYnVmZmVyX3NpemUgPiAwKSB7CisgICAgaW50IGJ5dGVzX3JlYWQgPSByZWFkKGRldl91
cmFuZG9tLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKKyAgICBpbnQgcmVhZF9lcnJvciA9IGVycm5v
OworICAgIHN1Y2Nlc3MgPSAoYnl0ZXNfcmVhZCA+IDApOworICAgIGlmIChzdWNjZXNzKSB7Cisg
ICAgICBidWZmZXIgKz0gYnl0ZXNfcmVhZDsKKyAgICAgIGJ1ZmZlcl9zaXplIC09IGJ5dGVzX3Jl
YWQ7CisgICAgfSBlbHNlIGlmIChieXRlc19yZWFkID09IC0xICYmIHJlYWRfZXJyb3IgPT0gRUlO
VFIpIHsKKyAgICAgIHN1Y2Nlc3MgPSB0cnVlOyAgLy8gTmVlZCB0byB0cnkgYWdhaW4uCisgICAg
fQorICB9CisgIGNsb3NlKGRldl91cmFuZG9tKTsKKyAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKKyNl
bmRpZgorCit9ICAvLyBuYW1lc3BhY2UKKworYm9vbCBSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50
cm9weShhYnNsOjpTcGFuPHVpbnQzMl90PiB2YWx1ZXMpIHsKKyAgYXNzZXJ0KHZhbHVlcy5kYXRh
KCkgIT0gbnVsbHB0cik7CisgIGlmICh2YWx1ZXMuZGF0YSgpID09IG51bGxwdHIpIHsKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKHZhbHVlcy5lbXB0eSgpKSB7CisgICAgcmV0dXJuIHRy
dWU7CisgIH0KKyAgcmV0dXJuIFJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5SW1wbCh2YWx1
ZXMpOworfQorCit2b2lkIE1peEludG9TZWVkTWF0ZXJpYWwoYWJzbDo6U3Bhbjxjb25zdCB1aW50
MzJfdD4gc2VxdWVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjx1aW50
MzJfdD4gc2VlZF9tYXRlcmlhbCkgeworICAvLyBBbGdvcml0aG0gaXMgYmFzZWQgb24gY29kZSBh
dmFpbGFibGUgYXQKKyAgLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vaW1uZW1lLzU0MDgyOTI2
NTQ2OWU2NzNkMDQ1CisgIGNvbnN0ZXhwciB1aW50MzJfdCBrSW5pdFZhbCA9IDB4NDNiMGQ3ZTU7
CisgIGNvbnN0ZXhwciB1aW50MzJfdCBrSGFzaE11bCA9IDB4OTMxZTg4NzU7CisgIGNvbnN0ZXhw
ciB1aW50MzJfdCBrTWl4TXVsTCA9IDB4Y2EwMWY5ZGQ7CisgIGNvbnN0ZXhwciB1aW50MzJfdCBr
TWl4TXVsUiA9IDB4NDk3M2Y3MTU7CisgIGNvbnN0ZXhwciB1aW50MzJfdCBrU2hpZnRTaXplID0g
c2l6ZW9mKHVpbnQzMl90KSAqIDggLyAyOworCisgIHVpbnQzMl90IGhhc2hfY29uc3QgPSBrSW5p
dFZhbDsKKyAgYXV0byBoYXNoID0gWyZdKHVpbnQzMl90IHZhbHVlKSB7CisgICAgdmFsdWUgXj0g
aGFzaF9jb25zdDsKKyAgICBoYXNoX2NvbnN0ICo9IGtIYXNoTXVsOworICAgIHZhbHVlICo9IGhh
c2hfY29uc3Q7CisgICAgdmFsdWUgXj0gdmFsdWUgPj4ga1NoaWZ0U2l6ZTsKKyAgICByZXR1cm4g
dmFsdWU7CisgIH07CisKKyAgYXV0byBtaXggPSBbJl0odWludDMyX3QgeCwgdWludDMyX3QgeSkg
eworICAgIHVpbnQzMl90IHJlc3VsdCA9IGtNaXhNdWxMICogeCAtIGtNaXhNdWxSICogeTsKKyAg
ICByZXN1bHQgXj0gcmVzdWx0ID4+IGtTaGlmdFNpemU7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAg
fTsKKworICBmb3IgKGNvbnN0IGF1dG8mIHNlcV92YWwgOiBzZXF1ZW5jZSkgeworICAgIGZvciAo
YXV0byYgZWxlbSA6IHNlZWRfbWF0ZXJpYWwpIHsKKyAgICAgIGVsZW0gPSBtaXgoZWxlbSwgaGFz
aChzZXFfdmFsKSk7CisgICAgfQorICB9Cit9CisKK2Fic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBH
ZXRTYWx0TWF0ZXJpYWwoKSB7CisgIC8vIFNhbHQgbXVzdCBiZSBjb21tb24gZm9yIGFsbCBnZW5l
cmF0b3JzIHdpdGhpbiB0aGUgc2FtZSBwcm9jZXNzIHNvIHJlYWQgaXQKKyAgLy8gb25seSBvbmNl
IGFuZCBzdG9yZSBpbiBzdGF0aWMgdmFyaWFibGUuCisgIHN0YXRpYyBjb25zdCBhdXRvIHNhbHRf
bWF0ZXJpYWwgPSBbXSgpIC0+IGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiB7CisgICAgdWludDMy
X3Qgc2FsdF92YWx1ZSA9IDA7CisKKyAgICBpZiAocmFuZG9tX2ludGVybmFsOjpSZWFkU2VlZE1h
dGVyaWFsRnJvbU9TRW50cm9weSgKKyAgICAgICAgICAgIE1ha2VTcGFuKCZzYWx0X3ZhbHVlLCAx
KSkpIHsKKyAgICAgIHJldHVybiBzYWx0X3ZhbHVlOworICAgIH0KKworICAgIHJldHVybiBhYnNs
OjpudWxsb3B0OworICB9KCk7CisKKyAgcmV0dXJuIHNhbHRfbWF0ZXJpYWw7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSByYW5kb21faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRlcmlhbC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L2ludGVybmFsL3NlZWRfbWF0ZXJpYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2RlOGEyNGQ1ZTBlYzljN2Nk
YjFiMzU4ZGY1NDZjMGJhNzU3NmZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2lu
dGVybmFsL3NlZWRfbWF0ZXJpYWwuaApAQCAtMCwwICsxLDEwMiBAQAorLy8gQ29weXJpZ2h0IDIw
MTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fSU5URVJOQUxf
U0VFRF9NQVRFUklBTF9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5BTF9TRUVEX01BVEVS
SUFMX0hfCisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVk
ZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5j
bHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRl
cm5hbC9mYXN0X3VuaWZvcm1fYml0cy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL3NwYW4uaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFt
ZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKKy8vIFJldHVybnMgdGhlIG51bWJlciBvZiAzMi1i
aXQgYmxvY2tzIG5lZWRlZCB0byBjb250YWluIHRoZSBnaXZlbiBudW1iZXIgb2YKKy8vIGJpdHMu
Citjb25zdGV4cHIgc2l6ZV90IFNlZWRCaXRzVG9CbG9ja3Moc2l6ZV90IHNlZWRfc2l6ZSkgewor
ICByZXR1cm4gKHNlZWRfc2l6ZSArIDMxKSAvIDMyOworfQorCisvLyBBbW91bnQgb2YgZW50cm9w
eSAobWVhc3VyZWQgaW4gYml0cykgdXNlZCB0byBpbnN0YW50aWF0ZSBhIFNlZWQgU2VxdWVuY2Us
CisvLyB3aXRoIHdoaWNoIHRvIGNyZWF0ZSBhIFVSQkcuCitjb25zdGV4cHIgc2l6ZV90IGtFbnRy
b3B5Qml0c05lZWRlZCA9IDI1NjsKKworLy8gQW1vdW50IG9mIGVudHJvcHkgKG1lYXN1cmVkIGlu
IDMyLWJpdCBibG9ja3MpIHVzZWQgdG8gaW5zdGFudGlhdGUgYSBTZWVkCisvLyBTZXF1ZW5jZSwg
d2l0aCB3aGljaCB0byBjcmVhdGUgYSBVUkJHLgorY29uc3RleHByIHNpemVfdCBrRW50cm9weUJs
b2Nrc05lZWRlZCA9CisgICAgcmFuZG9tX2ludGVybmFsOjpTZWVkQml0c1RvQmxvY2tzKGtFbnRy
b3B5Qml0c05lZWRlZCk7CisKK3N0YXRpY19hc3NlcnQoa0VudHJvcHlCbG9ja3NOZWVkZWQgPiAw
LAorICAgICAgICAgICAgICAiRW50cm9weSB1c2VkIHRvIHNlZWQgVVJCR3MgbXVzdCBiZSBub256
ZXJvLiIpOworCisvLyBBdHRlbXB0cyB0byBmaWxsIGEgc3BhbiBvZiB1aW50MzJfdC12YWx1ZXMg
dXNpbmcgYW4gT1MtcHJvdmlkZWQgc291cmNlIG9mCisvLyB0cnVlIGVudHJvcHkgKGVnLiAvZGV2
L3VyYW5kb20pIGludG8gYW4gYXJyYXkgb2YgdWludDMyX3QgYmxvY2tzIG9mIGRhdGEuIFRoZQor
Ly8gcmVzdWx0aW5nIGFycmF5IG1heSBiZSB1c2VkIHRvIGluaXRpYWxpemUgYW4gaW5zdGFuY2Ug
b2YgYSBjbGFzcyBjb25mb3JtaW5nCisvLyB0byB0aGUgQysrIFN0YW5kYXJkICJTZWVkIFNlcXVl
bmNlIiBjb25jZXB0IFtyYW5kLnJlcS5zZWVkc2VxXS4KKy8vCisvLyBJZiB2YWx1ZXMuZGF0YSgp
ID09IG51bGxwdHIsIHRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQuCitBQlNMX01VU1RfVVNFX1JF
U1VMVAorYm9vbCBSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weShhYnNsOjpTcGFuPHVpbnQz
Ml90PiB2YWx1ZXMpOworCisvLyBBdHRlbXB0cyB0byBmaWxsIGEgc3BhbiBvZiB1aW50MzJfdC12
YWx1ZXMgdXNpbmcgdmFyaWF0ZXMgZ2VuZXJhdGVkIGJ5IGFuCisvLyBleGlzdGluZyBpbnN0YW5j
ZSBvZiBhIGNsYXNzIGNvbmZvcm1pbmcgdG8gdGhlIEMrKyBTdGFuZGFyZCAiVW5pZm9ybSBSYW5k
b20KKy8vIEJpdCBHZW5lcmF0b3IiIGNvbmNlcHQgW3JhbmQucmVxLnVybmddLiBUaGUgcmVzdWx0
aW5nIGRhdGEgbWF5IGJlIHVzZWQgdG8KKy8vIGluaXRpYWxpemUgYW4gaW5zdGFuY2Ugb2YgYSBj
bGFzcyBjb25mb3JtaW5nIHRvIHRoZSBDKysgU3RhbmRhcmQKKy8vICJTZWVkIFNlcXVlbmNlIiBj
b25jZXB0IFtyYW5kLnJlcS5zZWVkc2VxXS4KKy8vCisvLyBJZiB1cmJnID09IG51bGxwdHIgb3Ig
dmFsdWVzLmRhdGEoKSA9PSBudWxscHRyLCB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgordGVt
cGxhdGUgPHR5cGVuYW1lIFVSQkc+CitBQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFJlYWRTZWVk
TWF0ZXJpYWxGcm9tVVJCRygKKyAgICBVUkJHKiB1cmJnLCBhYnNsOjpTcGFuPHVpbnQzMl90PiB2
YWx1ZXMpIHsKKyAgcmFuZG9tX2ludGVybmFsOjpGYXN0VW5pZm9ybUJpdHM8dWludDMyX3Q+IGRp
c3RyOworCisgIGFzc2VydCh1cmJnICE9IG51bGxwdHIgJiYgdmFsdWVzLmRhdGEoKSAhPSBudWxs
cHRyKTsKKyAgaWYgKHVyYmcgPT0gbnVsbHB0ciB8fCB2YWx1ZXMuZGF0YSgpID09IG51bGxwdHIp
IHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBmb3IgKHVpbnQzMl90JiBzZWVkX3ZhbHVl
IDogdmFsdWVzKSB7CisgICAgc2VlZF92YWx1ZSA9IGRpc3RyKCp1cmJnKTsKKyAgfQorICByZXR1
cm4gdHJ1ZTsKK30KKworLy8gTWl4ZXMgZ2l2ZW4gc2VxdWVuY2Ugb2YgdmFsdWVzIHdpdGggaW50
byBnaXZlbiBzZXF1ZW5jZSBvZiBzZWVkIG1hdGVyaWFsLgorLy8gVGltZSBjb21wbGV4aXR5IG9m
IHRoaXMgZnVuY3Rpb24gaXMgTyhzZXF1ZW5jZS5zaXplKCkgKgorLy8gc2VlZF9tYXRlcmlhbC5z
aXplKCkpLgorLy8KKy8vIEFsZ29yaXRobSBpcyBiYXNlZCBvbiBjb2RlIGF2YWlsYWJsZSBhdAor
Ly8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vaW1uZW1lLzU0MDgyOTI2NTQ2OWU2NzNkMDQ1Cisv
LyBieSBNZWxpc3NhIE8nTmVpbGwuCit2b2lkIE1peEludG9TZWVkTWF0ZXJpYWwoYWJzbDo6U3Bh
bjxjb25zdCB1aW50MzJfdD4gc2VxdWVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6U3Bhbjx1aW50MzJfdD4gc2VlZF9tYXRlcmlhbCk7CisKKy8vIFJldHVybnMgc2FsdCB2YWx1
ZS4KKy8vCisvLyBTYWx0IGlzIG9idGFpbmVkIG9ubHkgb25jZSBhbmQgc3RvcmVkIGluIHN0YXRp
YyB2YXJpYWJsZS4KKy8vCisvLyBNYXkgcmV0dXJuIGVtcHR5IHZhbHVlIGlmIG9wdGFpbmluZyB0
aGUgc2FsdCB3YXMgbm90IHBvc3NpYmxlLgorYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IEdldFNh
bHRNYXRlcmlhbCgpOworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1NFRURfTUFU
RVJJQUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX21hdGVyaWFs
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRlcmlhbF90ZXN0LmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZkYjI4MjBlYzcwN2NjMmZmYTMzZTYzNTg4ZmRhNjM5MGY3MmQzNzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRlcmlhbF90ZXN0LmNj
CkBAIC0wLDAgKzEsMjAyIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfbWF0ZXJpYWwuaCIKKwor
I2luY2x1ZGUgPGJpdHNldD4KKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPGNzdHJpbmc+
CisjaW5jbHVkZSA8cmFuZG9tPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorCisjaWZkZWYgX19BTkRST0lEX18KKy8vIEFuZHJvaWQgYXNzZXJ0
IG1lc3NhZ2VzIG9ubHkgZ28gdG8gc3lzdGVtIGxvZywgc28gZGVhdGggdGVzdHMgY2Fubm90IGlu
c3BlY3QKKy8vIHRoZSBtZXNzYWdlIGZvciBtYXRjaGluZy4KKyNkZWZpbmUgQUJTTF9FWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRChzdGF0ZW1lbnQsICIuKiIpCisjZWxzZQorI2RlZmluZSBBQlNMX0VYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpCisjZW5kaWYKKworbmFtZXNwYWNlIHsKKwordXNp
bmcgdGVzdGluZzo6RWFjaDsKK3VzaW5nIHRlc3Rpbmc6OkVsZW1lbnRzQXJlOwordXNpbmcgdGVz
dGluZzo6RXE7Cit1c2luZyB0ZXN0aW5nOjpOZTsKK3VzaW5nIHRlc3Rpbmc6OlBvaW50d2lzZTsK
KworVEVTVChTZWVkQml0c1RvQmxvY2tzLCBWZXJpZnlDYXNlcykgeworICBFWFBFQ1RfRVEoMCwg
YWJzbDo6cmFuZG9tX2ludGVybmFsOjpTZWVkQml0c1RvQmxvY2tzKDApKTsKKyAgRVhQRUNUX0VR
KDEsIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U2VlZEJpdHNUb0Jsb2NrcygxKSk7CisgIEVYUEVD
VF9FUSgxLCBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlNlZWRCaXRzVG9CbG9ja3MoMzEpKTsKKyAg
RVhQRUNUX0VRKDEsIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6U2VlZEJpdHNUb0Jsb2NrcygzMikp
OworICBFWFBFQ1RfRVEoMiwgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpTZWVkQml0c1RvQmxvY2tz
KDMzKSk7CisgIEVYUEVDVF9FUSg0LCBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlNlZWRCaXRzVG9C
bG9ja3MoMTI3KSk7CisgIEVYUEVDVF9FUSg0LCBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlNlZWRC
aXRzVG9CbG9ja3MoMTI4KSk7CisgIEVYUEVDVF9FUSg1LCBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OlNlZWRCaXRzVG9CbG9ja3MoMTI5KSk7Cit9CisKK1RFU1QoUmVhZFNlZWRNYXRlcmlhbEZyb21P
U0VudHJvcHksIFN1Y2Nlc3NpdmVSZWFkc0FyZURpc3RpbmN0KSB7CisgIGNvbnN0ZXhwciBzaXpl
X3Qga1NlZWRNYXRlcmlhbFNpemUgPSA2NDsKKyAgdWludDMyX3Qgc2VlZF9tYXRlcmlhbF8xW2tT
ZWVkTWF0ZXJpYWxTaXplXSA9IHt9OworICB1aW50MzJfdCBzZWVkX21hdGVyaWFsXzJba1NlZWRN
YXRlcmlhbFNpemVdID0ge307CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6cmFuZG9tX2ludGVybmFs
OjpSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weSgKKyAgICAgIGFic2w6OlNwYW48dWludDMy
X3Q+KHNlZWRfbWF0ZXJpYWxfMSwga1NlZWRNYXRlcmlhbFNpemUpKSk7CisgIEVYUEVDVF9UUlVF
KGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21PU0VudHJvcHkoCisg
ICAgICBhYnNsOjpTcGFuPHVpbnQzMl90PihzZWVkX21hdGVyaWFsXzIsIGtTZWVkTWF0ZXJpYWxT
aXplKSkpOworCisgIEVYUEVDVF9USEFUKHNlZWRfbWF0ZXJpYWxfMSwgUG9pbnR3aXNlKE5lKCks
IHNlZWRfbWF0ZXJpYWxfMikpOworfQorCitURVNUKFJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRy
b3B5LCBSZWFkWmVyb0J5dGVzSXNOb09wKSB7CisgIHVpbnQzMl90IHNlZWRfbWF0ZXJpYWxbMzJd
ID0ge307CisgIHN0ZDo6bWVtc2V0KHNlZWRfbWF0ZXJpYWwsIDB4QUEsIHNpemVvZihzZWVkX21h
dGVyaWFsKSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmVhZFNlZWRN
YXRlcmlhbEZyb21PU0VudHJvcHkoCisgICAgICBhYnNsOjpTcGFuPHVpbnQzMl90PihzZWVkX21h
dGVyaWFsLCAwKSkpOworCisgIEVYUEVDVF9USEFUKHNlZWRfbWF0ZXJpYWwsIEVhY2goRXEoMHhB
QUFBQUFBQSkpKTsKK30KKworVEVTVChSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weSwgTnVs
bFB0clZlY3RvckFyZ3VtZW50KSB7CisjaWZkZWYgTkRFQlVHCisgIEVYUEVDVF9GQUxTRShhYnNs
OjpyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9tT1NFbnRyb3B5KAorICAgICAg
YWJzbDo6U3Bhbjx1aW50MzJfdD4obnVsbHB0ciwgMzIpKSk7CisjZWxzZQorICBib29sIHJlc3Vs
dDsKKyAgQUJTTF9FWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAorICAgICAgcmVzdWx0ID0gYWJz
bDo6cmFuZG9tX2ludGVybmFsOjpSZWFkU2VlZE1hdGVyaWFsRnJvbU9TRW50cm9weSgKKyAgICAg
ICAgICBhYnNsOjpTcGFuPHVpbnQzMl90PihudWxscHRyLCAzMikpLAorICAgICAgIiE9IG51bGxw
dHIiKTsKKyAgKHZvaWQpcmVzdWx0OyAgLy8gc3VwcHJlc3MgdW51c2VkLXZhcmlhYmxlIHdhcm5p
bmcKKyNlbmRpZgorfQorCitURVNUKFJlYWRTZWVkTWF0ZXJpYWxGcm9tVVJCRywgU2VlZE1hdGVy
aWFsRXF1YWxzVmFyaWF0ZVNlcXVlbmNlKSB7CisgIC8vIFR3byBkZWZhdWx0LWNvbnN0cnVjdGVk
IGluc3RhbmNlcyBvZiBzdGQ6Om10MTk5MzdfNjQgYXJlIGd1YXJhbnRlZWQgdG8KKyAgLy8gcHJv
ZHVjZSBlcXVhbCB2YXJpYXRlLXNlcXVlbmNlcy4KKyAgc3RkOjptdDE5OTM3IHVyYmdfMTsKKyAg
c3RkOjptdDE5OTM3IHVyYmdfMjsKKyAgY29uc3RleHByIHNpemVfdCBrU2VlZE1hdGVyaWFsU2l6
ZSA9IDEwMjQ7CisgIHVpbnQzMl90IHNlZWRfbWF0ZXJpYWxba1NlZWRNYXRlcmlhbFNpemVdID0g
e307CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSZWFkU2VlZE1hdGVy
aWFsRnJvbVVSQkcoCisgICAgICAmdXJiZ18xLCBhYnNsOjpTcGFuPHVpbnQzMl90PihzZWVkX21h
dGVyaWFsLCBrU2VlZE1hdGVyaWFsU2l6ZSkpKTsKKyAgZm9yICh1aW50MzJfdCBzZWVkIDogc2Vl
ZF9tYXRlcmlhbCkgeworICAgIEVYUEVDVF9FUShzZWVkLCB1cmJnXzIoKSk7CisgIH0KK30KKwor
VEVTVChSZWFkU2VlZE1hdGVyaWFsRnJvbVVSQkcsIFJlYWRaZXJvQnl0ZXNJc05vT3ApIHsKKyAg
c3RkOjptdDE5OTM3XzY0IHVyYmc7CisgIHVpbnQzMl90IHNlZWRfbWF0ZXJpYWxbMzJdOworICBz
dGQ6Om1lbXNldChzZWVkX21hdGVyaWFsLCAweEFBLCBzaXplb2Yoc2VlZF9tYXRlcmlhbCkpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9t
VVJCRygKKyAgICAgICZ1cmJnLCBhYnNsOjpTcGFuPHVpbnQzMl90PihzZWVkX21hdGVyaWFsLCAw
KSkpOworCisgIEVYUEVDVF9USEFUKHNlZWRfbWF0ZXJpYWwsIEVhY2goRXEoMHhBQUFBQUFBQSkp
KTsKK30KKworVEVTVChSZWFkU2VlZE1hdGVyaWFsRnJvbVVSQkcsIE51bGxVcmJnQXJndW1lbnQp
IHsKKyAgY29uc3RleHByIHNpemVfdCBrU2VlZE1hdGVyaWFsU2l6ZSA9IDMyOworICB1aW50MzJf
dCBzZWVkX21hdGVyaWFsW2tTZWVkTWF0ZXJpYWxTaXplXTsKKyNpZmRlZiBOREVCVUcKKyAgRVhQ
RUNUX0ZBTFNFKGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6UmVhZFNlZWRNYXRlcmlhbEZyb21VUkJH
PHN0ZDo6bXQxOTkzN182ND4oCisgICAgICBudWxscHRyLCBhYnNsOjpTcGFuPHVpbnQzMl90Pihz
ZWVkX21hdGVyaWFsLCBrU2VlZE1hdGVyaWFsU2l6ZSkpKTsKKyNlbHNlCisgIGJvb2wgcmVzdWx0
OworICBBQlNMX0VYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCisgICAgICByZXN1bHQgPSBhYnNs
OjpyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9tVVJCRzxzdGQ6Om10MTk5Mzdf
NjQ+KAorICAgICAgICAgIG51bGxwdHIsIGFic2w6OlNwYW48dWludDMyX3Q+KHNlZWRfbWF0ZXJp
YWwsIGtTZWVkTWF0ZXJpYWxTaXplKSksCisgICAgICAiIT0gbnVsbHB0ciIpOworICAodm9pZCly
ZXN1bHQ7ICAvLyBzdXBwcmVzcyB1bnVzZWQtdmFyaWFibGUgd2FybmluZworI2VuZGlmCit9CisK
K1RFU1QoUmVhZFNlZWRNYXRlcmlhbEZyb21VUkJHLCBOdWxsUHRyVmVjdG9yQXJndW1lbnQpIHsK
KyAgc3RkOjptdDE5OTM3XzY0IHVyYmc7CisjaWZkZWYgTkRFQlVHCisgIEVYUEVDVF9GQUxTRShh
YnNsOjpyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9tVVJCRygKKyAgICAgICZ1
cmJnLCBhYnNsOjpTcGFuPHVpbnQzMl90PihudWxscHRyLCAzMikpKTsKKyNlbHNlCisgIGJvb2wg
cmVzdWx0OworICBBQlNMX0VYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCisgICAgICByZXN1bHQg
PSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlJlYWRTZWVkTWF0ZXJpYWxGcm9tVVJCRygKKyAgICAg
ICAgICAmdXJiZywgYWJzbDo6U3Bhbjx1aW50MzJfdD4obnVsbHB0ciwgMzIpKSwKKyAgICAgICIh
PSBudWxscHRyIik7CisgICh2b2lkKXJlc3VsdDsgIC8vIHN1cHByZXNzIHVudXNlZC12YXJpYWJs
ZSB3YXJuaW5nCisjZW5kaWYKK30KKworLy8gVGhlIGF2YWxhbmNoZSBlZmZlY3QgaXMgYSBkZXNp
cmFibGUgY3J5cHRvZ3JhcGhpYyBwcm9wZXJ0eSBvZiBoYXNoZXMgaW4gd2hpY2gKKy8vIGNoYW5n
aW5nIGEgc2luZ2xlIGJpdCBpbiB0aGUgaW5wdXQgY2F1c2VzIGVhY2ggYml0IG9mIHRoZSBvdXRw
dXQgdG8gYmUKKy8vIGNoYW5nZWQgd2l0aCBwcm9iYWJpbGl0eSBuZWFyIDUwJS4KKy8vCisvLyBo
dHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdmFsYW5jaGVfZWZmZWN0CisKK1RFU1QoTWl4
U2VxdWVuY2VJbnRvU2VlZE1hdGVyaWFsLCBBdmFsYW5jaGVFZmZlY3RUZXN0T25lQml0TG9uZykg
eworICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gc2VlZF9tYXRlcmlhbCA9IHsxLCAyLCAzLCA0LCA1
LCA2LCA3LCA4fTsKKworICAvLyBGb3IgZXZlcnkgMzItYml0IG51bWJlciB3aXRoIGV4YWN0bHkg
b25lIGJpdCBzZXQsIHZlcmlmeSB0aGUgYXZhbGFuY2hlCisgIC8vIGVmZmVjdCBob2xkcy4gIElu
IG9yZGVyIHRvIHJlZHVjZSBmbGFraW5lc3Mgb2YgdGVzdHMsIGFjY2VwdCB2YWx1ZXMKKyAgLy8g
YW55d2hlcmUgaW4gdGhlIHJhbmdlIG9mIDMwJS03MCUuCisgIGZvciAodWludDMyX3QgdiA9IDE7
IHYgIT0gMDsgdiA8PD0gMSkgeworICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVkX21hdGVy
aWFsX2NvcHkgPSBzZWVkX21hdGVyaWFsOworICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6TWl4
SW50b1NlZWRNYXRlcmlhbCgKKyAgICAgICAgYWJzbDo6U3Bhbjx1aW50MzJfdD4oJnYsIDEpLAor
ICAgICAgICBhYnNsOjpTcGFuPHVpbnQzMl90PihzZWVkX21hdGVyaWFsX2NvcHkuZGF0YSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkX21hdGVyaWFsX2NvcHkuc2l6ZSgpKSk7
CisKKyAgICB1aW50MzJfdCBjaGFuZ2VkX2JpdHMgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2VlZF9tYXRlcmlhbC5zaXplKCk7IGkrKykgeworICAgICAgc3RkOjpiaXRzZXQ8c2l6
ZW9mKHVpbnQzMl90KSAqIDg+IGJpdHNldChzZWVkX21hdGVyaWFsW2ldIF4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZF9tYXRlcmlhbF9jb3B5W2ld
KTsKKyAgICAgIGNoYW5nZWRfYml0cyArPSBiaXRzZXQuY291bnQoKTsKKyAgICB9CisKKyAgICBF
WFBFQ1RfTEUoY2hhbmdlZF9iaXRzLCAwLjcgKiBzaXplb2YodWludDMyX3QpICogOCAqIHNlZWRf
bWF0ZXJpYWwuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfR0UoY2hhbmdlZF9iaXRzLCAwLjMgKiBzaXpl
b2YodWludDMyX3QpICogOCAqIHNlZWRfbWF0ZXJpYWwuc2l6ZSgpKTsKKyAgfQorfQorCitURVNU
KE1peFNlcXVlbmNlSW50b1NlZWRNYXRlcmlhbCwgQXZhbGFuY2hlRWZmZWN0VGVzdE9uZUJpdFNo
b3J0KSB7CisgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzZWVkX21hdGVyaWFsID0gezF9OworCisg
IC8vIEZvciBldmVyeSAzMi1iaXQgbnVtYmVyIHdpdGggZXhhY3RseSBvbmUgYml0IHNldCwgdmVy
aWZ5IHRoZSBhdmFsYW5jaGUKKyAgLy8gZWZmZWN0IGhvbGRzLiAgSW4gb3JkZXIgdG8gcmVkdWNl
IGZsYWtpbmVzcyBvZiB0ZXN0cywgYWNjZXB0IHZhbHVlcworICAvLyBhbnl3aGVyZSBpbiB0aGUg
cmFuZ2Ugb2YgMzAlLTcwJS4KKyAgZm9yICh1aW50MzJfdCB2ID0gMTsgdiAhPSAwOyB2IDw8PSAx
KSB7CisgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHNlZWRfbWF0ZXJpYWxfY29weSA9IHNlZWRf
bWF0ZXJpYWw7CisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpNaXhJbnRvU2VlZE1hdGVyaWFs
KAorICAgICAgICBhYnNsOjpTcGFuPHVpbnQzMl90PigmdiwgMSksCisgICAgICAgIGFic2w6OlNw
YW48dWludDMyX3Q+KHNlZWRfbWF0ZXJpYWxfY29weS5kYXRhKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlZWRfbWF0ZXJpYWxfY29weS5zaXplKCkpKTsKKworICAgIHVpbnQzMl90
IGNoYW5nZWRfYml0cyA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWVkX21hdGVy
aWFsLnNpemUoKTsgaSsrKSB7CisgICAgICBzdGQ6OmJpdHNldDxzaXplb2YodWludDMyX3QpICog
OD4gYml0c2V0KHNlZWRfbWF0ZXJpYWxbaV0gXgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWVkX21hdGVyaWFsX2NvcHlbaV0pOworICAgICAgY2hhbmdl
ZF9iaXRzICs9IGJpdHNldC5jb3VudCgpOworICAgIH0KKworICAgIEVYUEVDVF9MRShjaGFuZ2Vk
X2JpdHMsIDAuNyAqIHNpemVvZih1aW50MzJfdCkgKiA4ICogc2VlZF9tYXRlcmlhbC5zaXplKCkp
OworICAgIEVYUEVDVF9HRShjaGFuZ2VkX2JpdHMsIDAuMyAqIHNpemVvZih1aW50MzJfdCkgKiA4
ICogc2VlZF9tYXRlcmlhbC5zaXplKCkpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfc2FsdGluZ19zZXF1ZW5jZV9nZW5l
cmF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9zYWx0aW5nX3NlcXVlbmNlX2dl
bmVyYXRvci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMWZkY2ZlMWRiNDFiYWM1ODFjNDBiZWMyOGFjM2ZhMTNk
MjQwYWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3NlZWRfc2Fs
dGluZ19zZXF1ZW5jZV9nZW5lcmF0b3IuY2MKQEAgLTAsMCArMSwzMCBAQAorLy8gQ29weXJpZ2h0
IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNs
dWRlIDxyYW5kb20+CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9yYW5kb20uaCIKKworLy8gVGhp
cyBwcm9ncmFtIGlzIHVzZWQgaW4gaW50ZWdyYXRpb24gdGVzdHMuCisKK2ludCBtYWluKCkgewor
ICBzdGQ6OnNlZWRfc2VxIHNlZWRfc2VxezEyMzR9OworICBhYnNsOjpCaXRHZW4gcm5nKHNlZWRf
c2VxKTsKKyAgY29uc3RleHByIHNpemVfdCBrU2VxdWVuY2VMZW5ndGggPSA4OworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGtTZXF1ZW5jZUxlbmd0aDsgaSsrKSB7CisgICAgc3RkOjpjb3V0IDw8
IHJuZygpIDw8ICJcbiI7CisgIH0KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvc2VlZF9zYWx0aW5nX3NlcXVlbmNlX2dlbmVyYXRvcl9lbXB0eV9zZXF1
ZW5jZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZWVkX3NhbHRpbmdfc2VxdWVuY2VfZ2Vu
ZXJhdG9yX2VtcHR5X3NlcXVlbmNlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3OTdlMmU3YTZmMmExOWY0Yjdi
MTI5YTAyNzhjNDk3MjcwZWRhZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50
ZXJuYWwvc2VlZF9zYWx0aW5nX3NlcXVlbmNlX2dlbmVyYXRvcl9lbXB0eV9zZXF1ZW5jZS5jYwpA
QCAtMCwwICsxLDMwIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHJhbmRvbT4KKworI2luY2x1ZGUgImFi
c2wvcmFuZG9tL3JhbmRvbS5oIgorCisvLyBUaGlzIHByb2dyYW0gaXMgdXNlZCBpbiBpbnRlZ3Jh
dGlvbiB0ZXN0cy4KKworaW50IG1haW4oKSB7CisgIHN0ZDo6c2VlZF9zZXEgc2VlZF9zZXF7fTsK
KyAgYWJzbDo6Qml0R2VuIHJuZyhzZWVkX3NlcSk7CisgIGNvbnN0ZXhwciBzaXplX3Qga1NlcXVl
bmNlTGVuZ3RoID0gODsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrU2VxdWVuY2VMZW5ndGg7
IGkrKykgeworICAgIHN0ZDo6Y291dCA8PCBybmcoKSA8PCAiXG4iOworICB9CisgIHJldHVybiAw
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3NlcXVlbmNlX3VyYmcuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE5YjU3
NzM4ZGE0NjZkMzhmMTBkNjQ5OWE4NjQ4ZmZmNDU2Yzk1MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgKQEAgLTAsMCArMSw1NiBAQAorLy8g
Q29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5E
T01fSU5URVJOQUxfU0VRVUVOQ0VfVVJCR19IXworI2RlZmluZSBBQlNMX1JBTkRPTV9JTlRFUk5B
TF9TRVFVRU5DRV9VUkJHX0hfCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGNzdHJp
bmc+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUg
PHZlY3Rvcj4KKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7
CisKKy8vIGBzZXF1ZW5jZV91cmJnYCBpcyBhIHNpbXBsZSByYW5kb20gbnVtYmVyIGdlbmVyYXRv
ciB3aGljaCBtZWV0cyB0aGUKKy8vIHJlcXVpcmVtZW50cyBvZiBbcmFuZC5yZXEudXJiZ10sIGFu
ZCBpcyBzb2xlbHkgZm9yIHRlc3RpbmcgYWJzbAorLy8gZGlzdHJpYnV0aW9ucy4KK2NsYXNzIHNl
cXVlbmNlX3VyYmcgeworIHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB1aW50NjRfdDsK
KworICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlKG1pbikoKSB7CisgICAgcmV0dXJuIChz
dGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWluKSgpOworICB9CisgIHN0YXRpYyBj
b25zdGV4cHIgcmVzdWx0X3R5cGUobWF4KSgpIHsKKyAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCk7CisgIH0KKworICBzZXF1ZW5jZV91cmJnKHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxyZXN1bHRfdHlwZT4gZGF0YSkgOiBpXygwKSwgZGF0YV8oZGF0YSkg
e30KKyAgdm9pZCByZXNldCgpIHsgaV8gPSAwOyB9CisKKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3Io
KSgpIHsgcmV0dXJuIGRhdGFfW2lfKysgJSBkYXRhXy5zaXplKCldOyB9CisKKyAgc2l6ZV90IGlu
dm9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gaV87IH0KKworIHByaXZhdGU6CisgIHNpemVfdCBp
XzsKKyAgc3RkOjp2ZWN0b3I8cmVzdWx0X3R5cGU+IGRhdGFfOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBB
QlNMX1JBTkRPTV9JTlRFUk5BTF9TRVFVRU5DRV9VUkJHX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vaW50ZXJuYWwvdHJhaXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vaW50ZXJuYWwvdHJhaXRzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDBlYjAxMWYxOTVmZGM4ZjFlZDA1Y2JlYzRiNGEwNjJlYTRmMDAwNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC90cmFpdHMuaApAQCAtMCwwICsx
LDk5IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRl
ZiBBQlNMX1JBTkRPTV9JTlRFUk5BTF9UUkFJVFNfSF8KKyNkZWZpbmUgQUJTTF9SQU5ET01fSU5U
RVJOQUxfVFJBSVRTX0hfCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIK
KworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbCB7CisKKy8vIHJh
bmRvbV9pbnRlcm5hbDo6aXNfd2lkZW5pbmdfY29udmVydGlibGU8QSwgQj4KKy8vCisvLyBSZXR1
cm5zIHdoZXRoZXIgYSB0eXBlIEEgaXMgd2lkZW5pbmctY29udmVydGlibGUgdG8gYSB0eXBlIEIu
CisvLworLy8gQSBpcyB3aWRlbmluZy1jb252ZXJ0aWJsZSB0byBCIG1lYW5zOgorLy8gICBBIGEg
PSA8YW55IG51bWJlcj47CisvLyAgIEIgYiA9IGE7CisvLyAgIEEgYyA9IGI7CisvLyAgIEVYUEVD
VF9FUShhLCBjKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBCPgorY2xhc3MgaXNf
d2lkZW5pbmdfY29udmVydGlibGUgeworICAvLyBBcyBsb25nIGFzIHRoZXJlIGFyZSBlbm91Z2gg
Yml0cyBpbiB0aGUgZXhhY3QgcGFydCBvZiBhIG51bWJlcjoKKyAgLy8gLSB1bnNpZ25lZCBjYW4g
Zml0IGluIGZsb2F0LCBzaWduZWQsIHVuc2lnbmVkCisgIC8vIC0gc2lnbmVkIGNhbiBmaXQgaW4g
ZmxvYXQsIHNpZ25lZAorICAvLyAtIGZsb2F0IGNhbiBmaXQgaW4gZmxvYXQKKyAgLy8gU28gd2Ug
ZGVmaW5lIHJhbmsgdG8gYmU6CisgIC8vIC0gcmFuayhmbG9hdCkgLT4gMgorICAvLyAtIHJhbmso
c2lnbmVkKSAtPiAxCisgIC8vIC0gcmFuayh1bnNpZ25lZCkgLT4gMAorICB0ZW1wbGF0ZSA8Y2xh
c3MgVD4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQgcmFuaygpIHsKKyAgICByZXR1cm4gIXN0ZDo6
bnVtZXJpY19saW1pdHM8VD46OmlzX2ludGVnZXIgKworICAgICAgICAgICBzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+Ojppc19zaWduZWQ7CisgIH0KKworIHB1YmxpYzoKKyAgLy8gSWYgYW4gYXJpdGht
ZXRpYy10eXBlIEIgY2FuIHJlcHJlc2VudCBhdCBsZWFzdCBhcyBtYW55IGRpZ2l0cyBhcyBhIHR5
cGUgQSwKKyAgLy8gYW5kIEIgYmVsb25ncyB0byBhIHJhbmsgbm8gbG93ZXIgdGhhbiBBLCB0aGVu
IEEgY2FuIGJlIHNhZmVseSByZXByZXNlbnRlZAorICAvLyBieSBCIHRocm91Z2ggYSB3aWRlbmlu
Zy1jb252ZXJzaW9uLgorICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPQorICAgICAgc3Rk
OjpudW1lcmljX2xpbWl0czxBPjo6ZGlnaXRzIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8Qj46OmRp
Z2l0cyAmJgorICAgICAgcmFuazxBPigpIDw9IHJhbms8Qj4oKTsKK307CisKKy8vIHVuc2lnbmVk
X2JpdHM8Tj46OnR5cGUgcmV0dXJucyB0aGUgdW5zaWduZWQgaW50IHR5cGUgd2l0aCB0aGUgaW5k
aWNhdGVkCisvLyBudW1iZXIgb2YgYml0cy4KK3RlbXBsYXRlIDxzaXplX3QgTj4KK3N0cnVjdCB1
bnNpZ25lZF9iaXRzOworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IHVuc2lnbmVkX2JpdHM8OD4gewor
ICB1c2luZyB0eXBlID0gdWludDhfdDsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IHVuc2lnbmVk
X2JpdHM8MTY+IHsKKyAgdXNpbmcgdHlwZSA9IHVpbnQxNl90OworfTsKK3RlbXBsYXRlIDw+Citz
dHJ1Y3QgdW5zaWduZWRfYml0czwzMj4geworICB1c2luZyB0eXBlID0gdWludDMyX3Q7Cit9Owor
dGVtcGxhdGUgPD4KK3N0cnVjdCB1bnNpZ25lZF9iaXRzPDY0PiB7CisgIHVzaW5nIHR5cGUgPSB1
aW50NjRfdDsKK307CisKKyNpZmRlZiBBQlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOAordGVtcGxh
dGUgPD4KK3N0cnVjdCB1bnNpZ25lZF9iaXRzPDEyOD4geworICB1c2luZyB0eXBlID0gX191aW50
MTI4X3Q7Cit9OworI2VuZGlmCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgorc3RydWN0
IG1ha2VfdW5zaWduZWRfYml0cyB7CisgIHVzaW5nIHR5cGUgPSB0eXBlbmFtZSB1bnNpZ25lZF9i
aXRzPHN0ZDo6bnVtZXJpY19saW1pdHM8CisgICAgICB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWdu
ZWQ8SW50VHlwZT46OnR5cGU+OjpkaWdpdHM+Ojp0eXBlOworfTsKKworfSAgLy8gbmFtZXNwYWNl
IHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNM
X1JBTkRPTV9JTlRFUk5BTF9UUkFJVFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRl
cm5hbC90cmFpdHNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC90cmFpdHNfdGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hODQ0ODg3ZDNlNDQzM2VjZjkwNTE4NTgwOGEwYjgwMjk4M2JkYjYzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0c190ZXN0LmNjCkBA
IC0wLDAgKzEsMTI2IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3RyYWl0cy5oIgorCisjaW5jbHVkZSA8
Y3N0ZGludD4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6aXNfd2lk
ZW5pbmdfY29udmVydGlibGU7CisKKy8vIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvU2VsZjxUMSwg
VDIsIC4uLj4oKQorLy8KKy8vIEZvciBlYWNoIHR5cGUgVCwgY2hlY2tzOgorLy8gLSBUIElTIHdp
ZGVuaW5nLWNvbnZlcnRpYmxlIHRvIGl0c2VsZi4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3ZvaWQgQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG9TZWxmKCkgeworICBzdGF0aWNfYXNzZXJ0KGlz
X3dpZGVuaW5nX2NvbnZlcnRpYmxlPFQsIFQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiVHlw
ZSBpcyBub3QgY29udmVydGlibGUgdG8gc2VsZiEiKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIE5leHQsIHR5cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIENoZWNrV2lkZW5pbmdD
b252ZXJ0c1RvU2VsZigpIHsKKyAgQ2hlY2tXaWRlbmluZ0NvbnZlcnRzVG9TZWxmPFQ+KCk7Cisg
IENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvU2VsZjxOZXh0LCBBcmdzLi4uPigpOworfQorCisvLyBD
aGVja05vdFdpZGVuaW5nQ29udmVydGlibGVXaXRoU2lnbmVkPFQxLCBUMiwgLi4uPigpCisvLwor
Ly8gRm9yIGVhY2ggdW5zaWduZWQtdHlwZSBULCBjaGVja3MgdGhhdDoKKy8vIC0gVCBpcyBOT1Qg
d2lkZW5pbmctY29udmVydGlibGUgdG8gU2lnbmVkKFQpCisvLyAtIFNpZ25lZChUKSBpcyBOT1Qg
d2lkZW5pbmctY29udmVydGlibGUgdG8gVAorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBDaGVja05vdFdpZGVuaW5nQ29udmVydGlibGVXaXRoU2lnbmVkKCkgeworICB1c2luZyBzaWdu
ZWRfdCA9IHR5cGVuYW1lIHN0ZDo6bWFrZV9zaWduZWQ8VD46OnR5cGU7CisKKyAgc3RhdGljX2Fz
c2VydCghaXNfd2lkZW5pbmdfY29udmVydGlibGU8VCwgc2lnbmVkX3Q+Ojp2YWx1ZSwKKyAgICAg
ICAgICAgICAgICAiVW5zaWduZWQgdHlwZSBpcyBjb252ZXJ0aWJsZSB0byBzYW1lLXNpemVkIHNp
Z25lZC10eXBlISIpOworICBzdGF0aWNfYXNzZXJ0KCFpc193aWRlbmluZ19jb252ZXJ0aWJsZTxz
aWduZWRfdCwgVD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJTaWduZWQgdHlwZSBpcyBjb252
ZXJ0aWJsZSB0byBzYW1lLXNpemVkIHVuc2lnbmVkLXR5cGUhIik7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBOZXh0LCB0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBDaGVja05v
dFdpZGVuaW5nQ29udmVydGlibGVXaXRoU2lnbmVkKCkgeworICBDaGVja05vdFdpZGVuaW5nQ29u
dmVydGlibGVXaXRoU2lnbmVkPFQ+KCk7CisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvU2VsZjxO
ZXh0LCBBcmdzLi4uPigpOworfQorCisvLyBDaGVja1dpZGVuaW5nQ29udmVydHNUb0xhcmdlclR5
cGU8VDEsIFQyLCAuLi4+KCkKKy8vCisvLyBGb3IgZWFjaCBzdWNjZXNzaXZlIHVuc2lnbmVkLXR5
cGVzIHtUaSwgVGkrMX0sIGNoZWNrcyB0aGF0OgorLy8gLSBUaSBJUyB3aWRlbmluZy1jb252ZXJ0
aWJsZSB0byBUaSsxCisvLyAtIFRpIElTIHdpZGVuaW5nLWNvbnZlcnRpYmxlIHRvIFNpZ25lZChU
aSsxKQorLy8gLSBTaWduZWQoVGkpIGlzIE5PVCB3aWRlbmluZy1jb252ZXJ0aWJsZSB0byBUaQor
Ly8gLSBTaWduZWQoVGkpIElTIHdpZGVuaW5nLWNvbnZlcnRpYmxlIHRvIFRpKzEKK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBIaWdoZXI+Cit2b2lkIENoZWNrV2lkZW5pbmdDb252ZXJ0
c1RvTGFyZ2VyVHlwZXMoKSB7CisgIHVzaW5nIHNpZ25lZF90ID0gdHlwZW5hbWUgc3RkOjptYWtl
X3NpZ25lZDxUPjo6dHlwZTsKKyAgdXNpbmcgaGlnaGVyX3QgPSBIaWdoZXI7CisgIHVzaW5nIHNp
Z25lZF9oaWdoZXJfdCA9IHR5cGVuYW1lIHN0ZDo6bWFrZV9zaWduZWQ8SGlnaGVyPjo6dHlwZTsK
KworICBzdGF0aWNfYXNzZXJ0KGlzX3dpZGVuaW5nX2NvbnZlcnRpYmxlPFQsIGhpZ2hlcl90Pjo6
dmFsdWUsCisgICAgICAgICAgICAgICAgIlR5cGUgbm90IGVtYmVkZGFibGUgaW50byBsYXJnZXIg
dHlwZSEiKTsKKyAgc3RhdGljX2Fzc2VydChpc193aWRlbmluZ19jb252ZXJ0aWJsZTxULCBzaWdu
ZWRfaGlnaGVyX3Q+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiVHlwZSBub3QgZW1iZWRkYWJs
ZSBpbnRvIGxhcmdlciBzaWduZWQgdHlwZSEiKTsKKyAgc3RhdGljX2Fzc2VydCghaXNfd2lkZW5p
bmdfY29udmVydGlibGU8c2lnbmVkX3QsIGhpZ2hlcl90Pjo6dmFsdWUsCisgICAgICAgICAgICAg
ICAgIlNpZ25lZCB0eXBlIGlzIGVtYmVkZGFibGUgaW50byBsYXJnZXIgdW5zaWduZWQgdHlwZSEi
KTsKKyAgc3RhdGljX2Fzc2VydChpc193aWRlbmluZ19jb252ZXJ0aWJsZTxzaWduZWRfdCwgc2ln
bmVkX2hpZ2hlcl90Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIlNpZ25lZCB0eXBlIG5vdCBl
bWJlZGRhYmxlIGludG8gbGFyZ2VyIHNpZ25lZCB0eXBlISIpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgSGlnaGVyLCB0eXBlbmFtZSBOZXh0LCB0eXBlbmFtZS4uLiBBcmdz
Pgordm9pZCBDaGVja1dpZGVuaW5nQ29udmVydHNUb0xhcmdlclR5cGVzKCkgeworICBDaGVja1dp
ZGVuaW5nQ29udmVydHNUb0xhcmdlclR5cGVzPFQsIEhpZ2hlcj4oKTsKKyAgQ2hlY2tXaWRlbmlu
Z0NvbnZlcnRzVG9MYXJnZXJUeXBlczxIaWdoZXIsIE5leHQsIEFyZ3MuLi4+KCk7Cit9CisKKy8v
IENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvPFQsIFUsIFtleHBlY3RdPgorLy8KKy8vIENoZWNrcyB0
aGF0IFQgRE9FUyB3aWRlbmluZy1jb252ZXJ0IHRvIFUuCisvLyBJZiAiZXhwZWN0IiBpcyBmYWxz
ZSwgdGhlbiBhc3NlcnRzIHRoYXQgVCBkb2VzIE5PVCB3aWRlbmluZy1jb252ZXJ0IHRvIFUuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgYm9vbCBleHBlY3QgPSB0cnVlPgordm9p
ZCBDaGVja1dpZGVuaW5nQ29udmVydHNUbygpIHsKKyAgc3RhdGljX2Fzc2VydChpc193aWRlbmlu
Z19jb252ZXJ0aWJsZTxULCBVPjo6dmFsdWUgPT0gZXhwZWN0LAorICAgICAgICAgICAgICAgICJV
bmV4cGVjdGVkIHJlc3VsdCBmb3IgaXNfd2lkZW5pbmdfY29udmVydGlibGU8VCwgVT4hIik7Cit9
CisKK1RFU1QoVHJhaXRzVGVzdCwgSXNXaWRlbmluZ0NvbnZlcnRpYmxlVGVzdCkgeworICBjb25z
dGV4cHIgYm9vbCBrSW52YWxpZCA9IGZhbHNlOworCisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1Rv
U2VsZjwKKyAgICAgIHVpbnQ4X3QsIHVpbnQxNl90LCB1aW50MzJfdCwgdWludDY0X3QsCisgICAg
ICBpbnQ4X3QsICBpbnQxNl90LCAgaW50MzJfdCwgIGludDY0X3QsCisgICAgICBmbG9hdCwgICBk
b3VibGU+KCk7CisgIENoZWNrTm90V2lkZW5pbmdDb252ZXJ0aWJsZVdpdGhTaWduZWQ8CisgICAg
ICB1aW50OF90LCB1aW50MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90PigpOworICBDaGVja1dpZGVu
aW5nQ29udmVydHNUb0xhcmdlclR5cGVzPAorICAgICAgdWludDhfdCwgdWludDE2X3QsIHVpbnQz
Ml90LCB1aW50NjRfdD4oKTsKKworICBDaGVja1dpZGVuaW5nQ29udmVydHNUbzxmbG9hdCwgZG91
YmxlPigpOworICBDaGVja1dpZGVuaW5nQ29udmVydHNUbzx1aW50MTZfdCwgZmxvYXQ+KCk7Cisg
IENoZWNrV2lkZW5pbmdDb252ZXJ0c1RvPHVpbnQzMl90LCBkb3VibGU+KCk7CisgIENoZWNrV2lk
ZW5pbmdDb252ZXJ0c1RvPHVpbnQ2NF90LCBkb3VibGUsIGtJbnZhbGlkPigpOworICBDaGVja1dp
ZGVuaW5nQ29udmVydHNUbzxkb3VibGUsIGZsb2F0LCBrSW52YWxpZD4oKTsKKworICBDaGVja1dp
ZGVuaW5nQ29udmVydHNUbzxib29sLCBpbnQ+KCk7CisgIENoZWNrV2lkZW5pbmdDb252ZXJ0c1Rv
PGJvb2wsIGZsb2F0PigpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS9pbnRlcm5hbC91bmlmb3JtX2hlbHBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2ludGVybmFs
L3VuaWZvcm1faGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE2NDY0ODk2NDNhNGEwOGYyYjJmYjA0OGJl
ZjYwN2JjYzNmMWQzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9pbnRlcm5hbC91
bmlmb3JtX2hlbHBlci5oCkBAIC0wLDAgKzEsMTUwIEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisjaWZuZGVmIEFCU0xfUkFORE9NX0lOVEVSTkFMX1VOSUZP
Uk1fSEVMUEVSX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX0lOVEVSTkFMX1VOSUZPUk1fSEVMUEVS
X0hfCisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlw
ZV90cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKworbmFtZXNw
YWNlIGFic2wgewordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CitjbGFzcyB1bmlmb3JtX2lu
dF9kaXN0cmlidXRpb247CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZWFsVHlwZT4KK2NsYXNzIHVu
aWZvcm1fcmVhbF9kaXN0cmlidXRpb247CisKKy8vIEludGVydmFsIHRhZyB0eXBlcyB3aGljaCBz
cGVjaWZ5IHdoZXRoZXIgdGhlIGludGVydmFsIGlzIG9wZW4gb3IgY2xvc2VkCisvLyBvbiBlaXRo
ZXIgYm91bmRhcnkuCituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsIHsKK3N0cnVjdCBJbnRlcnZh
bENsb3NlZENsb3NlZFQge307CitzdHJ1Y3QgSW50ZXJ2YWxDbG9zZWRPcGVuVCB7fTsKK3N0cnVj
dCBJbnRlcnZhbE9wZW5DbG9zZWRUIHt9Oworc3RydWN0IEludGVydmFsT3Blbk9wZW5UIHt9Owor
fSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorCituYW1lc3BhY2UgcmFuZG9tX2ludGVy
bmFsIHsKKworLy8gVGhlIGZ1bmN0aW9ucworLy8gICAgdW5pZm9ybV9sb3dlcl9ib3VuZCh0YWcs
IGEsIGIpCisvLyBhbmQKKy8vICAgIHVuaWZvcm1fdXBwZXJfYm91bmQodGFnLCBhLCBiKQorLy8g
YXJlIHVzZWQgYXMgaW1wbGVtZW50YXRpb24tZGV0YWlscyBmb3IgYWJzbDo6VW5pZm9ybSgpLgor
Ly8KKy8vIENvbmNlcHR1YWxseSwKKy8vICAgIFthLCBiXSA9PSBbdW5pZm9ybV9sb3dlcl9ib3Vu
ZChJbnRlcnZhbENsb3NlZENsb3NlZCwgYSwgYiksCisvLyAgICAgICAgICAgICAgIHVuaWZvcm1f
dXBwZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRDbG9zZWQsIGEsIGIpXQorLy8gICAgKGEsIGIpID09
IFt1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsT3Blbk9wZW4sIGEsIGIpLAorLy8gICAgICAg
ICAgICAgICB1bmlmb3JtX3VwcGVyX2JvdW5kKEludGVydmFsT3Blbk9wZW4sIGEsIGIpXQorLy8g
ICAgW2EsIGIpID09IFt1bmlmb3JtX2xvd2VyX2JvdW5kKEludGVydmFsQ2xvc2VkT3BlbiwgYSwg
YiksCisvLyAgICAgICAgICAgICAgIHVuaWZvcm1fdXBwZXJfYm91bmQoSW50ZXJ2YWxDbG9zZWRP
cGVuLCBhLCBiKV0KKy8vICAgIChhLCBiXSA9PSBbdW5pZm9ybV9sb3dlcl9ib3VuZChJbnRlcnZh
bE9wZW5DbG9zZWQsIGEsIGIpLAorLy8gICAgICAgICAgICAgICB1bmlmb3JtX3VwcGVyX2JvdW5k
KEludGVydmFsT3BlbkNsb3NlZCwgYSwgYildCisvLwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5
cGUsIHR5cGVuYW1lIFRhZz4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PAorICAgIGFic2w6
OmNvbmp1bmN0aW9uPAorICAgICAgICBzdGQ6OmlzX2ludGVncmFsPEludFR5cGU+LAorICAgICAg
ICBhYnNsOjpkaXNqdW5jdGlvbjxzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbE9wZW5DbG9zZWRU
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPFRhZywgSW50ZXJ2YWxP
cGVuT3BlblQ+Pj46OnZhbHVlLAorICAgIEludFR5cGU+Cit1bmlmb3JtX2xvd2VyX2JvdW5kKFRh
ZywgSW50VHlwZSBhLCBJbnRUeXBlKSB7CisgIHJldHVybiBhICsgMTsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIEZsb2F0VHlwZSwgdHlwZW5hbWUgVGFnPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxl
X2lmX3Q8CisgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgIHN0ZDo6aXNfZmxvYXRpbmdf
cG9pbnQ8RmxvYXRUeXBlPiwKKyAgICAgICAgYWJzbDo6ZGlzanVuY3Rpb248c3RkOjppc19zYW1l
PFRhZywgSW50ZXJ2YWxPcGVuQ2xvc2VkVD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsT3Blbk9wZW5UPj4+Ojp2YWx1ZSwKKyAgICBGbG9hdFR5
cGU+Cit1bmlmb3JtX2xvd2VyX2JvdW5kKFRhZywgRmxvYXRUeXBlIGEsIEZsb2F0VHlwZSBiKSB7
CisgIHJldHVybiBzdGQ6Om5leHRhZnRlcihhLCBiKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IE51bVR5cGUsIHR5cGVuYW1lIFRhZz4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PAorICAg
IGFic2w6OmRpc2p1bmN0aW9uPHN0ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsQ2xvc2VkQ2xvc2Vk
VD4sCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPFRhZywgSW50ZXJ2YWxDbG9z
ZWRPcGVuVD4+Ojp2YWx1ZSwKKyAgICBOdW1UeXBlPgordW5pZm9ybV9sb3dlcl9ib3VuZChUYWcs
IE51bVR5cGUgYSwgTnVtVHlwZSkgeworICByZXR1cm4gYTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIEludFR5cGUsIHR5cGVuYW1lIFRhZz4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PAor
ICAgIGFic2w6OmNvbmp1bmN0aW9uPAorICAgICAgICBzdGQ6OmlzX2ludGVncmFsPEludFR5cGU+
LAorICAgICAgICBhYnNsOjpkaXNqdW5jdGlvbjxzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbENs
b3NlZE9wZW5UPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPFRhZywg
SW50ZXJ2YWxPcGVuT3BlblQ+Pj46OnZhbHVlLAorICAgIEludFR5cGU+Cit1bmlmb3JtX3VwcGVy
X2JvdW5kKFRhZywgSW50VHlwZSwgSW50VHlwZSBiKSB7CisgIHJldHVybiBiIC0gMTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0VHlwZSwgdHlwZW5hbWUgVGFnPgordHlwZW5hbWUgYWJz
bDo6ZW5hYmxlX2lmX3Q8CisgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgIHN0ZDo6aXNf
ZmxvYXRpbmdfcG9pbnQ8RmxvYXRUeXBlPiwKKyAgICAgICAgYWJzbDo6ZGlzanVuY3Rpb248c3Rk
Ojppc19zYW1lPFRhZywgSW50ZXJ2YWxDbG9zZWRPcGVuVD4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6aXNfc2FtZTxUYWcsIEludGVydmFsT3Blbk9wZW5UPj4+Ojp2YWx1ZSwKKyAg
ICBGbG9hdFR5cGU+Cit1bmlmb3JtX3VwcGVyX2JvdW5kKFRhZywgRmxvYXRUeXBlLCBGbG9hdFR5
cGUgYikgeworICByZXR1cm4gYjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGUsIHR5
cGVuYW1lIFRhZz4KK3R5cGVuYW1lIGFic2w6OmVuYWJsZV9pZl90PAorICAgIGFic2w6OmNvbmp1
bmN0aW9uPAorICAgICAgICBzdGQ6OmlzX2ludGVncmFsPEludFR5cGU+LAorICAgICAgICBhYnNs
OjpkaXNqdW5jdGlvbjxzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbENsb3NlZENsb3NlZFQ+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8VGFnLCBJbnRlcnZhbE9wZW5D
bG9zZWRUPj4+Ojp2YWx1ZSwKKyAgICBJbnRUeXBlPgordW5pZm9ybV91cHBlcl9ib3VuZChUYWcs
IEludFR5cGUsIEludFR5cGUgYikgeworICByZXR1cm4gYjsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIEZsb2F0VHlwZSwgdHlwZW5hbWUgVGFnPgordHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8
CisgICAgYWJzbDo6Y29uanVuY3Rpb248CisgICAgICAgIHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8
RmxvYXRUeXBlPiwKKyAgICAgICAgYWJzbDo6ZGlzanVuY3Rpb248c3RkOjppc19zYW1lPFRhZywg
SW50ZXJ2YWxDbG9zZWRDbG9zZWRUPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpp
c19zYW1lPFRhZywgSW50ZXJ2YWxPcGVuQ2xvc2VkVD4+Pjo6dmFsdWUsCisgICAgRmxvYXRUeXBl
PgordW5pZm9ybV91cHBlcl9ib3VuZChUYWcsIEZsb2F0VHlwZSwgRmxvYXRUeXBlIGIpIHsKKyAg
cmV0dXJuIHN0ZDo6bmV4dGFmdGVyKGIsIChzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46
Om1heCkoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOdW1UeXBlPgordXNpbmcgVW5pZm9y
bURpc3RyaWJ1dGlvbiA9CisgICAgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2lu
dGVncmFsPE51bVR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFi
c2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxOdW1UeXBlPiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248TnVtVHlwZT4+Ojp0
eXBlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFnVHlwZSwgdHlwZW5hbWUgTnVtVHlwZT4KK3N0
cnVjdCBVbmlmb3JtRGlzdHJpYnV0aW9uV3JhcHBlciA6IHB1YmxpYyBVbmlmb3JtRGlzdHJpYnV0
aW9uPE51bVR5cGU+IHsKKyAgZXhwbGljaXQgVW5pZm9ybURpc3RyaWJ1dGlvbldyYXBwZXIoTnVt
VHlwZSBsbywgTnVtVHlwZSBoaSkKKyAgICAgIDogVW5pZm9ybURpc3RyaWJ1dGlvbjxOdW1UeXBl
PigKKyAgICAgICAgICAgIHVuaWZvcm1fbG93ZXJfYm91bmQ8TnVtVHlwZT4oVGFnVHlwZXt9LCBs
bywgaGkpLAorICAgICAgICAgICAgdW5pZm9ybV91cHBlcl9ib3VuZDxOdW1UeXBlPihUYWdUeXBl
e30sIGxvLCBoaSkpIHt9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcmFuZG9tX2ludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0lOVEVSTkFMX1VO
SUZPUk1fSEVMUEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2xvZ191bmlmb3JtX2ludF9kaXN0cmlidXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hYzQzNDE2ZWU1NzMyMjA0MmEyZTU2YmQ0MDg1OTllMTYwYzhlZDcx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL2xvZ191bmlmb3JtX2ludF9kaXN0cmli
dXRpb24uaApAQCAtMCwwICsxLDI1MCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBB
dXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fTE9HX1VOSUZPUk1fSU5UX0RJU1RSSUJV
VElPTl9IXworI2RlZmluZSBBQlNMX1JBTkRPTV9MT0dfVU5JRk9STV9JTlRfRElTVFJJQlVUSU9O
X0hfCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRl
IDxjbWF0aD4KKyNpbmNsdWRlIDxpc3RyZWFtPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRl
IDxvc3RyZWFtPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvZGlzdHJpYnV0aW9uX2ltcGwuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9p
bnRlcm5hbC9mYXN0bWF0aC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2lvc3Ry
ZWFtX3N0YXRlX3NhdmVyLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvdHJhaXRz
LmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmgiCisK
K25hbWVzcGFjZSBhYnNsIHsKKworLy8gbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjoKKy8v
CisvLyBSZXR1cm5zIGEgcmFuZG9tIHZhcmlhdGUgUiBpbiByYW5nZSBbbWluLCBtYXhdIHN1Y2gg
dGhhdAorLy8gZmxvb3IobG9nKFItbWluLCBiYXNlKSkgaXMgdW5pZm9ybWx5IGRpc3RyaWJ1dGVk
LgorLy8gV2UgZW5zdXJlIHVuaWZvcm1pdHkgYnkgZGlzY3JldGl6YXRpb24gdXNpbmcgdGhlCisv
LyBib3VuZGFyeSBzZXRzIFswLCAxLCBiYXNlLCBiYXNlICogYmFzZSwgLi4uIG1pbihiYXNlKm4s
IG1heCldCisvLwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGUgPSBpbnQ+CitjbGFzcyBsb2df
dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uIHsKKyBwcml2YXRlOgorICB1c2luZyB1bnNpZ25lZF90
eXBlID0KKyAgICAgIHR5cGVuYW1lIHJhbmRvbV9pbnRlcm5hbDo6bWFrZV91bnNpZ25lZF9iaXRz
PEludFR5cGU+Ojp0eXBlOworCisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IEludFR5
cGU7CisKKyAgY2xhc3MgcGFyYW1fdHlwZSB7CisgICBwdWJsaWM6CisgICAgdXNpbmcgZGlzdHJp
YnV0aW9uX3R5cGUgPSBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uOworCisgICAgZXhwbGlj
aXQgcGFyYW1fdHlwZSgKKyAgICAgICAgcmVzdWx0X3R5cGUgbWluID0gMCwKKyAgICAgICAgcmVz
dWx0X3R5cGUgbWF4ID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCks
CisgICAgICAgIHJlc3VsdF90eXBlIGJhc2UgPSAyKQorICAgICAgICA6IG1pbl8obWluKSwKKyAg
ICAgICAgICBtYXhfKG1heCksCisgICAgICAgICAgYmFzZV8oYmFzZSksCisgICAgICAgICAgcmFu
Z2VfKHN0YXRpY19jYXN0PHVuc2lnbmVkX3R5cGU+KG1heF8pIC0KKyAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWRfdHlwZT4obWluXykpLAorICAgICAgICAgIGxvZ19yYW5nZV8o
MCkgeworICAgICAgYXNzZXJ0KG1heF8gPj0gbWluXyk7CisgICAgICBhc3NlcnQoYmFzZV8gPiAx
KTsKKworICAgICAgaWYgKGJhc2VfID09IDIpIHsKKyAgICAgICAgLy8gRGV0ZXJtaW5lIHdoZXJl
IHRoZSBmaXJzdCBzZXQgYml0IGlzIG9uIHJhbmdlKCksIGdpdmluZyBhIGxvZzIocmFuZ2UpCisg
ICAgICAgIC8vIHZhbHVlIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBib3VuZHMuCisg
ICAgICAgIGxvZ19yYW5nZV8gPSAoc3RkOjptaW4pKHJhbmRvbV9pbnRlcm5hbDo6TGVhZGluZ1Nl
dEJpdChyYW5nZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZF90eXBlPjo6ZGlnaXRzKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIE5PVEU6IENvbXB1dGluZyB0aGUgbG9nTih4KSBpbnRyb2R1Y2VzIGVycm9yIGZyb20g
MiBzb3VyY2VzOgorICAgICAgICAvLyAxLiBDb252ZXJzaW9uIG9mIGludCB0byBkb3VibGUgbG9z
ZXMgcHJlY2lzaW9uIGZvciB2YWx1ZXMgPj0KKyAgICAgICAgLy8gMl41Mywgd2hpY2ggbWF5IGNh
dXNlIHNvbWUgbG9nKCkgY29tcHV0YXRpb25zIHRvIG9wZXJhdGUgb24KKyAgICAgICAgLy8gZGlm
ZmVyZW50IHZhbHVlcy4KKyAgICAgICAgLy8gMi4gVGhlIGVycm9yIGludHJvZHVjZWQgYnkgdGhl
IGRpdmlzaW9uIHdpbGwgY2F1c2UgdGhlIHJlc3VsdAorICAgICAgICAvLyB0byBkaWZmZXIgZnJv
bSB0aGUgZXhwZWN0ZWQgdmFsdWUuCisgICAgICAgIC8vCisgICAgICAgIC8vIFRodXMgYSByZXN1
bHQgd2hpY2ggc2hvdWxkIGVxdWFsIEsgbWF5IGVxdWFsIEsgKy8tIGVwc2lsb24sCisgICAgICAg
IC8vIHdoaWNoIGNhbiBlbGltaW5hdGUgc29tZSB2YWx1ZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHRo
ZSBib3VuZHMgZmFsbC4KKyAgICAgICAgY29uc3QgZG91YmxlIGludl9sb2dfYmFzZSA9IDEuMCAv
IHN0ZDo6bG9nKGJhc2VfKTsKKyAgICAgICAgY29uc3QgZG91YmxlIGxvZ19yYW5nZSA9IHN0ZDo6
bG9nKHN0YXRpY19jYXN0PGRvdWJsZT4ocmFuZ2UoKSkgKyAwLjUpOworICAgICAgICBsb2dfcmFu
Z2VfID0gc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmNlaWwoaW52X2xvZ19iYXNlICogbG9nX3Jhbmdl
KSk7CisgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0X3R5cGUobWluKSgpIGNvbnN0IHsgcmV0
dXJuIG1pbl87IH0KKyAgICByZXN1bHRfdHlwZShtYXgpKCkgY29uc3QgeyByZXR1cm4gbWF4Xzsg
fQorICAgIHJlc3VsdF90eXBlIGJhc2UoKSBjb25zdCB7IHJldHVybiBiYXNlXzsgfQorCisgICAg
ZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90
eXBlJiBiKSB7CisgICAgICByZXR1cm4gYS5taW5fID09IGIubWluXyAmJiBhLm1heF8gPT0gYi5t
YXhfICYmIGEuYmFzZV8gPT0gYi5iYXNlXzsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAgICAg
IHJldHVybiAhKGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uOworCisgICAgaW50IGxvZ19yYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIGxvZ19yYW5nZV87IH0KKyAgICB1bnNpZ25lZF90eXBlIHJhbmdlKCkgY29u
c3QgeyByZXR1cm4gcmFuZ2VfOyB9CisKKyAgICByZXN1bHRfdHlwZSBtaW5fOworICAgIHJlc3Vs
dF90eXBlIG1heF87CisgICAgcmVzdWx0X3R5cGUgYmFzZV87CisgICAgdW5zaWduZWRfdHlwZSBy
YW5nZV87ICAvLyBtYXggLSBtaW4KKyAgICBpbnQgbG9nX3JhbmdlXzsgICAgICAgIC8vIGNlaWwo
bG9nTihyYW5nZV8pKQorCisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPEludFR5
cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICJDbGFzcy10ZW1wbGF0ZSBhYnNsOjpsb2df
dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPD4gbXVzdCBiZSAiCisgICAgICAgICAgICAgICAgICAi
cGFyYW1ldGVyaXplZCB1c2luZyBhbiBpbnRlZ3JhbCB0eXBlLiIpOworICB9OworCisgIGxvZ191
bmlmb3JtX2ludF9kaXN0cmlidXRpb24oKSA6IGxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb24o
MCkge30KKworICBleHBsaWNpdCBsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uKAorICAgICAg
cmVzdWx0X3R5cGUgbWluLAorICAgICAgcmVzdWx0X3R5cGUgbWF4ID0gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCksCisgICAgICByZXN1bHRfdHlwZSBiYXNlID0gMikK
KyAgICAgIDogcGFyYW1fKG1pbiwgbWF4LCBiYXNlKSB7fQorCisgIGV4cGxpY2l0IGxvZ191bmlm
b3JtX2ludF9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgcCkgOiBwYXJhbV8ocCkge30K
KworICB2b2lkIHJlc2V0KCkge30KKworICAvLyBnZW5lcmF0aW5nIGZ1bmN0aW9ucworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShVUkJHJiBnKSB7
ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHJldHVybiAoKnRoaXMpKGcsIHBh
cmFtXyk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUg
b3BlcmF0b3IoKShVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBwKSB7CisgICAgcmV0dXJuIChw
Lm1pbikoKSArIEdlbmVyYXRlKGcsIHApOworICB9CisKKyAgcmVzdWx0X3R5cGUobWluKSgpIGNv
bnN0IHsgcmV0dXJuIChwYXJhbV8ubWluKSgpOyB9CisgIHJlc3VsdF90eXBlKG1heCkoKSBjb25z
dCB7IHJldHVybiAocGFyYW1fLm1heCkoKTsgfQorICByZXN1bHRfdHlwZSBiYXNlKCkgY29uc3Qg
eyByZXR1cm4gcGFyYW1fLmJhc2UoKTsgfQorCisgIHBhcmFtX3R5cGUgcGFyYW0oKSBjb25zdCB7
IHJldHVybiBwYXJhbV87IH0KKyAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBwKSB7IHBh
cmFtXyA9IHA7IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGxvZ191bmlmb3Jt
X2ludF9kaXN0cmlidXRpb24mIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9n
X3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiBhLnBhcmFtXyA9PSBi
LnBhcmFtXzsKKyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGxvZ191bmlmb3Jt
X2ludF9kaXN0cmlidXRpb24mIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9n
X3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiBhLnBhcmFtXyAhPSBi
LnBhcmFtXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gUmV0dXJucyBhIGxvZy11bmlmb3JtIHZh
cmlhdGUgaW4gdGhlIHJhbmdlIFswLCBwLnJhbmdlKCldLiBUaGUgY2FsbGVyCisgIC8vIHNob3Vs
ZCBhZGQgbWluKCkgdG8gc2hpZnQgdGhlIHJlc3VsdCB0byB0aGUgY29ycmVjdCByYW5nZS4KKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFVSTkc+CisgIHVuc2lnbmVkX3R5cGUgR2VuZXJhdGUoVVJORyYg
ZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcGFyYW1fdHlwZSYgcCk7CisKKyAgcGFyYW1fdHlwZSBwYXJhbV87Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordHlw
ZW5hbWUgbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6dW5zaWduZWRfdHlw
ZQorbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6R2VuZXJhdGUoCisgICAg
VVJCRyYgZywgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgY29uc3QgcGFyYW1f
dHlwZSYgcCkgeworICAvLyBzYW1wbGUgZSBvdmVyIFswLCBsb2dfcmFuZ2VdLiBNYXAgdGhlIHJl
c3VsdHMgb2YgZSB0byB0aGlzOgorICAvLyAwID0+IDAKKyAgLy8gMSA9PiBbMSwgYi0xXQorICAv
LyAyID0+IFtiLCAoYl4yKS0xXQorICAvLyBuID0+IFtiXihuLTEpLi4oYl5uKS0xXQorICBjb25z
dCBpbnQgZSA9IGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ+KDAsIHAubG9nX3Jh
bmdlKCkpKGcpOworICBpZiAoZSA9PSAwKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgY29uc3Qg
aW50IGQgPSBlIC0gMTsKKworICB1bnNpZ25lZF90eXBlIGJhc2VfZSwgdG9wX2U7CisgIGlmIChw
LmJhc2UoKSA9PSAyKSB7CisgICAgYmFzZV9lID0gc3RhdGljX2Nhc3Q8dW5zaWduZWRfdHlwZT4o
MSkgPDwgZDsKKworICAgIHRvcF9lID0gKGUgPj0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZF90eXBlPjo6ZGlnaXRzKQorICAgICAgICAgICAgICAgID8gKHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWRfdHlwZT46Om1heCkoKQorICAgICAgICAgICAgICAgIDogKHN0YXRpY19jYXN0PHVu
c2lnbmVkX3R5cGU+KDEpIDw8IGUpIC0gMTsKKyAgfSBlbHNlIHsKKyAgICBjb25zdCBkb3VibGUg
ciA9IHN0ZDo6cG93KHAuYmFzZSgpLCBkKTsKKyAgICBjb25zdCBkb3VibGUgcyA9IChyICogcC5i
YXNlKCkpIC0gMS4wOworCisgICAgYmFzZV9lID0gKHIgPiAoc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZF90eXBlPjo6bWF4KSgpKQorICAgICAgICAgICAgICAgICA/IChzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkX3R5cGU+OjptYXgpKCkKKyAgICAgICAgICAgICAgICAgOiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZF90eXBlPihyKTsKKworICAgIHRvcF9lID0gKHMgPiAoc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZF90eXBlPjo6bWF4KSgpKQorICAgICAgICAgICAgICAgID8gKHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWRfdHlwZT46Om1heCkoKQorICAgICAgICAgICAgICAgIDog
c3RhdGljX2Nhc3Q8dW5zaWduZWRfdHlwZT4ocyk7CisgIH0KKworICBjb25zdCB1bnNpZ25lZF90
eXBlIGxvID0gKGJhc2VfZSA+PSBwLnJhbmdlKCkpID8gcC5yYW5nZSgpIDogYmFzZV9lOworICBj
b25zdCB1bnNpZ25lZF90eXBlIGhpID0gKHRvcF9lID49IHAucmFuZ2UoKSkgPyBwLnJhbmdlKCkg
OiB0b3BfZTsKKworICAvLyBjaG9vc2UgdW5pZm9ybWx5IG92ZXIgW2xvLCBoaV0KKyAgcmV0dXJu
IGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT4obG8sIGhpKShnKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEludFR5cGU+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9yPDwo
CisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcywgIC8vIE5PTElOVChy
dW50aW1lL3JlZmVyZW5jZXMpCisgICAgY29uc3QgbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
bjxJbnRUeXBlPiYgeCkgeworICB1c2luZyBzdHJlYW1fdHlwZSA9CisgICAgICB0eXBlbmFtZSBy
YW5kb21faW50ZXJuYWw6OnN0cmVhbV9mb3JtYXRfdHlwZTxJbnRUeXBlPjo6dHlwZTsKKyAgYXV0
byBzYXZlciA9IHJhbmRvbV9pbnRlcm5hbDo6bWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKG9zKTsK
KyAgb3MgPDwgc3RhdGljX2Nhc3Q8c3RyZWFtX3R5cGU+KCh4Lm1pbikoKSkgPDwgb3MuZmlsbCgp
CisgICAgIDw8IHN0YXRpY19jYXN0PHN0cmVhbV90eXBlPigoeC5tYXgpKCkpIDw8IG9zLmZpbGwo
KQorICAgICA8PCBzdGF0aWNfY2FzdDxzdHJlYW1fdHlwZT4oeC5iYXNlKCkpOworICByZXR1cm4g
b3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBJbnRUeXBlPgorc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRv
cj4+KAorICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMsICAgICAgIC8v
IE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgbG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1
dGlvbjxJbnRUeXBlPiYgeCkgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgdXNp
bmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1lIGxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248SW50
VHlwZT46OnBhcmFtX3R5cGU7CisgIHVzaW5nIHJlc3VsdF90eXBlID0KKyAgICAgIHR5cGVuYW1l
IGxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248SW50VHlwZT46OnJlc3VsdF90eXBlOworICB1
c2luZyBzdHJlYW1fdHlwZSA9CisgICAgICB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OnN0cmVh
bV9mb3JtYXRfdHlwZTxJbnRUeXBlPjo6dHlwZTsKKworICBzdHJlYW1fdHlwZSBtaW47CisgIHN0
cmVhbV90eXBlIG1heDsKKyAgc3RyZWFtX3R5cGUgYmFzZTsKKworICBhdXRvIHNhdmVyID0gcmFu
ZG9tX2ludGVybmFsOjptYWtlX2lzdHJlYW1fc3RhdGVfc2F2ZXIoaXMpOworICBpcyA+PiBtaW4g
Pj4gbWF4ID4+IGJhc2U7CisgIGlmICghaXMuZmFpbCgpKSB7CisgICAgeC5wYXJhbShwYXJhbV90
eXBlKHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPihtaW4pLAorICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4obWF4KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KGJhc2UpKSk7CisgIH0KKyAgcmV0dXJuIGlzOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX0xPR19VTklG
T1JNX0lOVF9ESVNUUklCVVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9sb2dfdW5p
Zm9ybV9pbnRfZGlzdHJpYnV0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vbG9nX3VuaWZvcm1f
aW50X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZjRjMzJkOTVkNmM0MTYwMmZh
NzYzOGNiZjBhZDJhNDliMDZjMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vbG9n
X3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCkBAIC0wLDAgKzEsMjc3IEBACisvLyBD
b3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2xvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIKKworI2luY2x1ZGUgPGNzdGRkZWY+
CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5k
b20+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVj
dG9yPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUg
ImFic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS9pbnRlcm5hbC9kaXN0cmlidXRpb25fdGVzdF91dGlsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvc2VxdWVuY2VfdXJiZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3JhbmRv
bS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9z
dHJpbmdzL3N0cl9mb3JtYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2Uu
aCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaXAuaCIKKworbmFtZXNwYWNlIHsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CitjbGFzcyBMb2dVbmlmb3JtSW50RGlzdHJpYnV0aW9u
VHlwZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCit1c2luZyBJbnRUeXBlcyA9
IDo6dGVzdGluZzo6VHlwZXM8aW50OF90LCBpbnQxNl90LCBpbnQzMl90LCBpbnQ2NF90LCAgLy8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90LCB1aW50MTZfdCwgdWlu
dDMyX3QsIHVpbnQ2NF90PjsKK1RZUEVEX1RFU1RfQ0FTRShMb2dVbmlmb3JtSW50RGlzdHJpYnV0
aW9uVHlwZVRlc3QsIEludFR5cGVzKTsKKworVFlQRURfVEVTVChMb2dVbmlmb3JtSW50RGlzdHJp
YnV0aW9uVHlwZVRlc3QsIFNlcmlhbGl6ZVRlc3QpIHsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9Cisg
ICAgICB0eXBlbmFtZSBhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFR5cGVQYXJh
bT46OnBhcmFtX3R5cGU7CisgIHVzaW5nIExpbWl0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlw
ZVBhcmFtPjsKKworICBjb25zdGV4cHIgaW50IGtDb3VudCA9IDEwMDA7CisgIGFic2w6Okluc2Vj
dXJlQml0R2VuIGdlbjsKKyAgZm9yIChjb25zdCBhdXRvJiBwYXJhbSA6IHsKKyAgICAgICAgICAg
cGFyYW1fdHlwZSgwLCAxKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAg
ICAgIHBhcmFtX3R5cGUoMCwgMiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworICAg
ICAgICAgICBwYXJhbV90eXBlKDAsIDIsIDEwKSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8K
KyAgICAgICAgICAgcGFyYW1fdHlwZSg5LCAzMiwgNCksICAgICAgICAgICAgICAgICAgICAgICAg
IC8vCisgICAgICAgICAgIHBhcmFtX3R5cGUoMSwgMTAxLCAxMCksICAgICAgICAgICAgICAgICAg
ICAgICAvLworICAgICAgICAgICBwYXJhbV90eXBlKDEsIExpbWl0czo6bWF4KCkgLyAyKSwgICAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgcGFyYW1fdHlwZSgwLCBMaW1pdHM6Om1heCgpIC0gMSks
ICAgICAgICAgICAgIC8vCisgICAgICAgICAgIHBhcmFtX3R5cGUoMCwgTGltaXRzOjptYXgoKSwg
MiksICAgICAgICAgICAgICAvLworICAgICAgICAgICBwYXJhbV90eXBlKDAsIExpbWl0czo6bWF4
KCksIDEwKSwgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgcGFyYW1fdHlwZShMaW1pdHM6Om1p
bigpLCAwKSwgICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgIHBhcmFtX3R5cGUoTGltaXRz
Ojpsb3dlc3QoKSwgTGltaXRzOjptYXgoKSksICAvLworICAgICAgICAgICBwYXJhbV90eXBlKExp
bWl0czo6bWluKCksIExpbWl0czo6bWF4KCkpLCAgICAgLy8KKyAgICAgICB9KSB7CisgICAgLy8g
VmFsaWRhdGUgcGFyYW1ldGVycy4KKyAgICBjb25zdCBhdXRvIG1pbiA9IHBhcmFtLm1pbigpOwor
ICAgIGNvbnN0IGF1dG8gbWF4ID0gcGFyYW0ubWF4KCk7CisgICAgY29uc3QgYXV0byBiYXNlID0g
cGFyYW0uYmFzZSgpOworICAgIGFic2w6OmxvZ191bmlmb3JtX2ludF9kaXN0cmlidXRpb248VHlw
ZVBhcmFtPiBiZWZvcmUobWluLCBtYXgsIGJhc2UpOworICAgIEVYUEVDVF9FUShiZWZvcmUubWlu
KCksIHBhcmFtLm1pbigpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLm1heCgpLCBwYXJhbS5tYXgo
KSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5iYXNlKCksIHBhcmFtLmJhc2UoKSk7CisKKyAgICB7
CisgICAgICBhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gdmlh
X3BhcmFtKHBhcmFtKTsKKyAgICAgIEVYUEVDVF9FUSh2aWFfcGFyYW0sIGJlZm9yZSk7CisgICAg
fQorCisgICAgLy8gVmFsaWRhdGUgc3RyZWFtIHNlcmlhbGl6YXRpb24uCisgICAgc3RkOjpzdHJp
bmdzdHJlYW0gc3M7CisgICAgc3MgPDwgYmVmb3JlOworCisgICAgYWJzbDo6bG9nX3VuaWZvcm1f
aW50X2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGFmdGVyKDMsIDYsIDE3KTsKKworICAgIEVYUEVD
VF9ORShiZWZvcmUubWF4KCksIGFmdGVyLm1heCgpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLmJh
c2UoKSwgYWZ0ZXIuYmFzZSgpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLnBhcmFtKCksIGFmdGVy
LnBhcmFtKCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUsIGFmdGVyKTsKKworICAgIHNzID4+IGFm
dGVyOworCisgICAgRVhQRUNUX0VRKGJlZm9yZS5taW4oKSwgYWZ0ZXIubWluKCkpOworICAgIEVY
UEVDVF9FUShiZWZvcmUubWF4KCksIGFmdGVyLm1heCgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3Jl
LmJhc2UoKSwgYWZ0ZXIuYmFzZSgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLnBhcmFtKCksIGFm
dGVyLnBhcmFtKCkpOworICAgIEVYUEVDVF9FUShiZWZvcmUsIGFmdGVyKTsKKworICAgIC8vIFNt
b2tlIHRlc3QuCisgICAgYXV0byBzYW1wbGVfbWluID0gYWZ0ZXIubWF4KCk7CisgICAgYXV0byBz
YW1wbGVfbWF4ID0gYWZ0ZXIubWluKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQ291bnQ7
IGkrKykgeworICAgICAgYXV0byBzYW1wbGUgPSBhZnRlcihnZW4pOworICAgICAgRVhQRUNUX0dF
KHNhbXBsZSwgYWZ0ZXIubWluKCkpOworICAgICAgRVhQRUNUX0xFKHNhbXBsZSwgYWZ0ZXIubWF4
KCkpOworICAgICAgaWYgKHNhbXBsZSA+IHNhbXBsZV9tYXgpIHNhbXBsZV9tYXggPSBzYW1wbGU7
CisgICAgICBpZiAoc2FtcGxlIDwgc2FtcGxlX21pbikgc2FtcGxlX21pbiA9IHNhbXBsZTsKKyAg
ICB9CisgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICBh
YnNsOjpTdHJDYXQoIlJhbmdlOiAiLCArc2FtcGxlX21pbiwgIiwgIiwgK3NhbXBsZV9tYXgpKTsK
KyAgfQorfQorCit1c2luZyBsb2dfdW5pZm9ybV9pMzIgPSBhYnNsOjpsb2dfdW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uPGludDMyX3Q+OworCitjbGFzcyBMb2dVbmlmb3JtSW50Q2hpU3F1YXJlZFRl
c3QKKyAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGxvZ191bmlmb3JtX2kzMjo6
cGFyYW1fdHlwZT4geworIHB1YmxpYzoKKyAgLy8gVGhlIENoaVNxdWFyZWRUZXN0SW1wbCBwcm92
aWRlcyBhIGNoaS1zcXVhcmVkIGdvb2RuZXNzIG9mIGZpdCB0ZXN0IGZvcgorICAvLyBkYXRhIGdl
bmVyYXRlZCBieSB0aGUgbG9nLXVuaWZvcm0taW50IGRpc3RyaWJ1dGlvbi4KKyAgZG91YmxlIENo
aVNxdWFyZWRUZXN0SW1wbCgpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZ187Cit9Owor
Citkb3VibGUgTG9nVW5pZm9ybUludENoaVNxdWFyZWRUZXN0OjpDaGlTcXVhcmVkVGVzdEltcGwo
KSB7CisgIHVzaW5nIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6a0NoaVNxdWFyZWQ7CisKKyAgY29u
c3QgYXV0byYgcGFyYW0gPSBHZXRQYXJhbSgpOworCisgIC8vIENoZWNrIHRoZSBkaXN0cmlidXRp
b24gb2YgTD1sb2cobG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiwgYmFzZSksCisgIC8vIGV4
cGVjdGluZyB0aGF0IEwgaXMgcm91Z2hseSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQsIHRoYXQgaXM6
CisgIC8vCisgIC8vICAgUFtMPTBdIH49IFBbTD0xXSB+PSAuLi4gfj0gUFtMPWxvZyhtYXgpXQor
ICAvLworICAvLyBGb3IgYSB0b3RhbCBvZiBYIGVudHJpZXMsIGVhY2ggYnVja2V0IHNob3VsZCBj
b250YWluIHNvbWUgbnVtYmVyIG9mIHNhbXBsZXMKKyAgLy8gaW4gdGhlIGludGVydmFsIFtYL2sg
LSBhLCBYL2sgKyBhXS4KKyAgLy8KKyAgLy8gV2hlcmUgYGFgIGlzIGFwcHJveGltYXRlbHkgc3Fy
dChYL2spLiBUaGlzIGlzIHZhbGlkYXRlZCBieSBidWNrZXRpbmcKKyAgLy8gYWNjb3JkaW5nIHRv
IHRoZSBsb2cgZnVuY3Rpb24gYW5kIHVzaW5nIGEgY2hpLXNxdWFyZWQgdGVzdCBmb3IgdW5pZm9y
bWl0eS4KKworICBjb25zdCBib29sIGlzXzIgPSAocGFyYW0uYmFzZSgpID09IDIpOworICBjb25z
dCBkb3VibGUgYmFzZV9sb2cgPSAxLjAgLyBzdGQ6OmxvZyhwYXJhbS5iYXNlKCkpOworICBjb25z
dCBhdXRvIGJ1Y2tldF9pbmRleCA9IFtiYXNlX2xvZywgaXNfMiwgJnBhcmFtXShpbnQzMl90IHgp
IHsKKyAgICB1aW50NjRfdCB5ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHgpIC0gcGFyYW0ubWlu
KCk7CisgICAgcmV0dXJuICh5ID09IDApID8gMAorICAgICAgICAgICAgICAgICAgICA6IGlzXzIg
PyBzdGF0aWNfY2FzdDxpbnQ+KDEgKyBzdGQ6OmxvZzIoeSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IHN0YXRpY19jYXN0PGludD4oMSArIHN0ZDo6bG9nKHkpICogYmFzZV9sb2cpOwor
ICB9OworICBjb25zdCBpbnQgbWF4X2J1Y2tldCA9IGJ1Y2tldF9pbmRleChwYXJhbS5tYXgoKSk7
ICAvLyBpbmNsdXNpdmUKKyAgY29uc3Qgc2l6ZV90IHRyaWFscyA9IDE1ICsgKG1heF9idWNrZXQg
KyAxKSAqIDEwOworCisgIGxvZ191bmlmb3JtX2kzMiBkaXN0KHBhcmFtKTsKKworICBzdGQ6OnZl
Y3RvcjxpbnQ2NF90PiBidWNrZXRzKG1heF9idWNrZXQgKyAxKTsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB0cmlhbHM7ICsraSkgeworICAgIGNvbnN0IGF1dG8gc2FtcGxlID0gZGlzdChybmdf
KTsKKyAgICAvLyBDaGVjayB0aGUgYm91bmRzLgorICAgIEFCU0xfQVNTRVJUKHNhbXBsZSA8PSBk
aXN0Lm1heCgpKTsKKyAgICBBQlNMX0FTU0VSVChzYW1wbGUgPj0gZGlzdC5taW4oKSk7CisgICAg
Ly8gQ29udmVydCB0aGUgb3V0cHV0IG9mIHRoZSBnZW5lcmF0b3IgdG8gb25lIG9mIG51bV9idWNr
ZXQgYnVja2V0cy4KKyAgICBpbnQgYnVja2V0ID0gYnVja2V0X2luZGV4KHNhbXBsZSk7CisgICAg
QUJTTF9BU1NFUlQoYnVja2V0IDw9IG1heF9idWNrZXQpOworICAgICsrYnVja2V0c1tidWNrZXRd
OworICB9CisKKyAgLy8gVGhlIG51bGwtaHlwb3RoZXNpcyBpcyB0aGF0IHRoZSBkaXN0cmlidXRp
b24gaXMgdW5pZm9ybSB3aXRoIHJlc3BlY3QgdG8KKyAgLy8gbG9nLXVuaWZvcm0taW50IGJ1Y2tl
dGl6YXRpb24uCisgIGNvbnN0IGludCBkb2YgPSBidWNrZXRzLnNpemUoKSAtIDE7CisgIGNvbnN0
IGRvdWJsZSBleHBlY3RlZCA9IHRyaWFscyAvIHN0YXRpY19jYXN0PGRvdWJsZT4oYnVja2V0cy5z
aXplKCkpOworCisgIGNvbnN0IGRvdWJsZSB0aHJlc2hvbGQgPSBhYnNsOjpyYW5kb21faW50ZXJu
YWw6OkNoaVNxdWFyZVZhbHVlKGRvZiwgMC45OCk7CisKKyAgZG91YmxlIGNoaV9zcXVhcmUgPSBh
YnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVdpdGhFeHBlY3RlZCgKKyAgICAgIHN0ZDo6
YmVnaW4oYnVja2V0cyksIHN0ZDo6ZW5kKGJ1Y2tldHMpLCBleHBlY3RlZCk7CisKKyAgY29uc3Qg
ZG91YmxlIHAgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVBWYWx1ZShjaGlfc3F1
YXJlLCBkb2YpOworCisgIGlmIChjaGlfc3F1YXJlID4gdGhyZXNob2xkKSB7CisgICAgQUJTTF9J
TlRFUk5BTF9MT0coSU5GTywgInZhbHVlcyIpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YnVja2V0cy5zaXplKCk7IGkrKykgeworICAgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywgYWJz
bDo6U3RyQ2F0KGksICI6ICIsIGJ1Y2tldHNbaV0pKTsKKyAgICB9CisgICAgQUJTTF9JTlRFUk5B
TF9MT0coSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTdHJGb3JtYXQoInRyaWFs
cz0lZFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMoZGF0YSwg
JWQpID0gJWYgKCVmKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
JXMgQCAwLjk4ID0gJWYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cmlhbHMsIGtDaGlTcXVhcmVkLCBkb2YsIGNoaV9zcXVhcmUsIHAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtDaGlTcXVhcmVkLCB0aHJlc2hvbGQpKTsKKyAgfQorICBy
ZXR1cm4gcDsKK30KKworVEVTVF9QKExvZ1VuaWZvcm1JbnRDaGlTcXVhcmVkVGVzdCwgTXVsdGlU
ZXN0KSB7CisgIGNvbnN0IGludCBrVHJpYWxzID0gNTsKKworICBpbnQgZmFpbHVyZXMgPSAwOwor
ICBmb3IgKGludCBpID0gMDsgaSA8IGtUcmlhbHM7IGkrKykgeworICAgIGRvdWJsZSBwX3ZhbHVl
ID0gQ2hpU3F1YXJlZFRlc3RJbXBsKCk7CisgICAgaWYgKHBfdmFsdWUgPCAwLjAwNSkgeworICAg
ICAgZmFpbHVyZXMrKzsKKyAgICB9CisgIH0KKworICAvLyBUaGVyZSBpcyBhIDAuMTAlIGNoYW5j
ZSBvZiBwcm9kdWNpbmcgYXQgbGVhc3Qgb25lIGZhaWx1cmUsIHNvIHJhaXNlIHRoZQorICAvLyBm
YWlsdXJlIHRocmVzaG9sZCBoaWdoIGVub3VnaCB0byBhbGxvdyBmb3IgYSBmbGFrZSByYXRlIDwg
MTAsMDAwLgorICBFWFBFQ1RfTEUoZmFpbHVyZXMsIDQpOworfQorCisvLyBHZW5lcmF0ZSB0aGUg
cGFyYW1ldGVycyBmb3IgdGhlIHRlc3QuCitzdGQ6OnZlY3Rvcjxsb2dfdW5pZm9ybV9pMzI6OnBh
cmFtX3R5cGU+IEdlblBhcmFtcygpIHsKKyAgdXNpbmcgUGFyYW0gPSBsb2dfdW5pZm9ybV9pMzI6
OnBhcmFtX3R5cGU7CisgIHVzaW5nIExpbWl0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD47CisKKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPFBhcmFtPnsKKyAgICAgIFBhcmFtezAsIDEsIDJ9
LAorICAgICAgUGFyYW17MSwgMSwgMn0sCisgICAgICBQYXJhbXswLCAyLCAyfSwKKyAgICAgIFBh
cmFtezAsIDMsIDJ9LAorICAgICAgUGFyYW17MCwgNCwgMn0sCisgICAgICBQYXJhbXswLCA5LCAx
MH0sCisgICAgICBQYXJhbXswLCAxMCwgMTB9LAorICAgICAgUGFyYW17MCwgMTEsIDEwfSwKKyAg
ICAgIFBhcmFtezEsIDEwLCAxMH0sCisgICAgICBQYXJhbXswLCAoMSA8PCA4KSAtIDEsIDJ9LAor
ICAgICAgUGFyYW17MCwgKDEgPDwgOCksIDJ9LAorICAgICAgUGFyYW17MCwgKDEgPDwgMzApIC0g
MSwgMn0sCisgICAgICBQYXJhbXstMTAwMCwgMTAwMCwgMTB9LAorICAgICAgUGFyYW17MCwgTGlt
aXRzOjptYXgoKSwgMn0sCisgICAgICBQYXJhbXswLCBMaW1pdHM6Om1heCgpLCAzfSwKKyAgICAg
IFBhcmFtezAsIExpbWl0czo6bWF4KCksIDEwfSwKKyAgICAgIFBhcmFte0xpbWl0czo6bWluKCks
IDB9LAorICAgICAgUGFyYW17TGltaXRzOjptaW4oKSwgTGltaXRzOjptYXgoKSwgMn0sCisgIH07
Cit9CisKK3N0ZDo6c3RyaW5nIFBhcmFtTmFtZSgKKyAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQ
YXJhbUluZm88bG9nX3VuaWZvcm1faTMyOjpwYXJhbV90eXBlPiYgaW5mbykgeworICBjb25zdCBh
dXRvJiBwID0gaW5mby5wYXJhbTsKKyAgc3RkOjpzdHJpbmcgbmFtZSA9CisgICAgICBhYnNsOjpT
dHJDYXQoIm1pbl8iLCBwLm1pbigpLCAiX19tYXhfIiwgcC5tYXgoKSwgIl9fYmFzZV8iLCBwLmJh
c2UoKSk7CisgIHJldHVybiBhYnNsOjpTdHJSZXBsYWNlQWxsKG5hbWUsIHt7IisiLCAiXyJ9LCB7
Ii0iLCAiXyJ9LCB7Ii4iLCAiXyJ9fSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCgs
IExvZ1VuaWZvcm1JbnRDaGlTcXVhcmVkVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICA6
OnRlc3Rpbmc6OlZhbHVlc0luKEdlblBhcmFtcygpKSwgUGFyYW1OYW1lKTsKKworLy8gTk9URTog
YWJzbDo6bG9nX3VuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiBpcyBub3QgZ3VhcmFudGVlZCB0byBi
ZSBzdGFibGUuCitURVNUKExvZ1VuaWZvcm1JbnREaXN0cmlidXRpb25UZXN0LCBTdGFiaWxpdHlU
ZXN0KSB7CisgIHVzaW5nIHRlc3Rpbmc6OkVsZW1lbnRzQXJlOworICAvLyBhYnNsOjp1bmlmb3Jt
X2ludF9kaXN0cmlidXRpb24gc3RhYmlsaXR5IHJlbGllcyBvbgorICAvLyBhYnNsOjpyYW5kb21f
aW50ZXJuYWw6OkxlYWRpbmdTZXRCaXQsIHN0ZDo6bG9nLCBzdGQ6OnBvdy4KKyAgYWJzbDo6cmFu
ZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoCisgICAgICB7MHgwMDAzZWI3NmY2Zjdm
NzU1dWxsLCAweEZGQ0VBNTBGREIyRjk1M0J1bGwsIDB4QzMzMkRERUZCRTZDNUFBNXVsbCwKKyAg
ICAgICAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4MkFFRjdEQUQ1QjZFMkY4NHVsbCwgMHgxNTIx
QjYyODI5MDc2MTcwdWxsLAorICAgICAgIDB4RUNERDQ3NzU2MTlGMTUxMHVsbCwgMHgxM0NDQTgz
MEVCNjFCRDk2dWxsLCAweDAzMzRGRTFFQUEwMzYzQ0Z1bGwsCisgICAgICAgMHhCNTczNUM5MDRD
NzBBMjM5dWxsLCAweEQ1OUU5RTBCQ0JBQURFMTR1bGwsIDB4RUVDQzg2QkM2MDYyMkNBN3VsbH0p
OworCisgIHN0ZDo6dmVjdG9yPGludD4gb3V0cHV0KDYpOworCisgIHsKKyAgICBhYnNsOjpsb2df
dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDMyX3Q+IGRpc3QoMCwgMjU2KTsKKyAgICBzdGQ6
OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0cHV0KSwKKyAgICAgICAg
ICAgICAgICAgIFsmXSB7IHJldHVybiBkaXN0KHVyYmcpOyB9KTsKKyAgICBFWFBFQ1RfVEhBVChv
dXRwdXQsIEVsZW1lbnRzQXJlKDI1NiwgNjYsIDQsIDYsIDU3LCAxMDMpKTsKKyAgfQorICB1cmJn
LnJlc2V0KCk7CisgIHsKKyAgICBhYnNsOjpsb2dfdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGlu
dDMyX3Q+IGRpc3QoMCwgMjU2LCAxMCk7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91
dHB1dCksIHN0ZDo6ZW5kKG91dHB1dCksCisgICAgICAgICAgICAgICAgICBbJl0geyByZXR1cm4g
ZGlzdCh1cmJnKTsgfSk7CisgICAgRVhQRUNUX1RIQVQob3V0cHV0LCBFbGVtZW50c0FyZSg4LCA0
LCAwLCAwLCAwLCA2OSkpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvcmFuZG9tL3BvaXNzb25fZGlzdHJpYnV0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcG9pc3Nv
bl9kaXN0cmlidXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzUwYjFjOWJhNTkxOWE1NzU1YTAxZDE2NWI0
MDNkNWNiZTU4ODkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3BvaXNzb25fZGlz
dHJpYnV0aW9uLmgKQEAgLTAsMCArMSwyNTQgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX1BPSVNTT05fRElTVFJJQlVUSU9O
X0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX1BPSVNTT05fRElTVFJJQlVUSU9OX0hfCisKKyNpbmNs
dWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGlzdHJlYW0+CisjaW5j
bHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG9zdHJlYW0+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9kaXN0cmlidXRpb25faW1wbC5oIgor
I2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zhc3RfdW5pZm9ybV9iaXRzLmgiCisjaW5j
bHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvZmFzdG1hdGguaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oIgorCituYW1lc3BhY2UgYWJzbCB7
CisKKy8vIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uOgorLy8gR2VuZXJhdGVzIGRpc2NyZXRl
IHZhcmlhdGVzIGNvbmZvcm1pbmcgdG8gYSBQb2lzc29uIGRpc3RyaWJ1dGlvbi4KKy8vICAgcChu
KSA9IChtZWFuXm4gLyBuISkgZXhwKC1tZWFuKQorLy8KKy8vIERlcGVuZGluZyBvbiB0aGUgcGFy
YW1ldGVyLCB0aGUgZGlzdHJpYnV0aW9uIHNlbGVjdHMgb25lIG9mIHRoZSBmb2xsb3dpbmcKKy8v
IGFsZ29yaXRobXM6CisvLyAqIFRoZSBzdGFuZGFyZCBhbGdvcml0aG0sIGF0dHJpYnV0ZWQgdG8g
S251dGgsIGV4dGVuZGVkIHVzaW5nIGEgc3BsaXQgbWV0aG9kCisvLyBmb3IgbGFyZ2VyIHZhbHVl
cworLy8gKiBUaGUgIlJhdGlvIG9mIFVuaWZvcm1zIGFzIGEgY29udmVuaWVudCBtZXRob2QgZm9y
IHNhbXBsaW5nIGZyb20gY2xhc3NpY2FsCisvLyBkaXNjcmV0ZSBkaXN0cmlidXRpb25zIiwgU3Rh
ZGxvYmVyLCAxOTg5LgorLy8gaHR0cDovL3d3dy5zY2llbmNlZGlyZWN0LmNvbS9zY2llbmNlL2Fy
dGljbGUvcGlpLzAzNzcwNDI3OTA5MDM0OTUKKy8vCisvLyBOT1RFOiBwYXJhbV90eXBlLm1lYW4o
KSBpcyBhIGRvdWJsZSwgd2hpY2ggcGVybWl0cyB2YWx1ZXMgbGFyZ2VyIHRoYW4KKy8vIHBvaXNz
b25fZGlzdHJpYnV0aW9uPEludFR5cGU+OjptYXgoKSwgaG93ZXZlciB0aGlzIHNob3VsZCBiZSBh
dm9pZGVkIGFuZAorLy8gdGhlIGRpc3RyaWJ1dGlvbiByZXN1bHRzIGFyZSBsaW1pdGVkIHRvIHRo
ZSBtYXgoKSB2YWx1ZS4KKy8vCisvLyBUaGUgZ29hbHMgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBh
cmUgdG8gcHJvdmlkZSBnb29kIHBlcmZvcm1hbmNlIHdoaWxlIHN0aWxsCisvLyBiZWlnIHRocmVh
ZC1zYWZlOiBUaGlzIGxpbWl0cyB0aGUgaW1wbGVtZW50YXRpb24gdG8gbm90IHVzaW5nIGxnYW1t
YSBwcm92aWRlZAorLy8gYnkgPG1hdGguaD4uCisvLwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5
cGUgPSBpbnQ+CitjbGFzcyBwb2lzc29uX2Rpc3RyaWJ1dGlvbiB7CisgcHVibGljOgorICB1c2lu
ZyByZXN1bHRfdHlwZSA9IEludFR5cGU7CisKKyAgY2xhc3MgcGFyYW1fdHlwZSB7CisgICBwdWJs
aWM6CisgICAgdXNpbmcgZGlzdHJpYnV0aW9uX3R5cGUgPSBwb2lzc29uX2Rpc3RyaWJ1dGlvbjsK
KyAgICBleHBsaWNpdCBwYXJhbV90eXBlKGRvdWJsZSBtZWFuID0gMS4wKTsKKworICAgIGRvdWJs
ZSBtZWFuKCkgY29uc3QgeyByZXR1cm4gbWVhbl87IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJh
dG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29uc3QgcGFyYW1fdHlwZSYgYikgeworICAgICAg
cmV0dXJuIGEubWVhbl8gPT0gYi5tZWFuXzsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAgICAg
IHJldHVybiAhKGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBwb2lzc29uX2Rpc3RyaWJ1dGlvbjsKKworICAgIGRvdWJsZSBtZWFuXzsKKyAgICBkb3VibGUg
ZW11XzsgIC8vIGUgXiAtbWVhbl8KKyAgICBkb3VibGUgbG11XzsgIC8vIGxuKG1lYW5fKQorICAg
IGRvdWJsZSBzXzsKKyAgICBkb3VibGUgbG9nX2tfOworICAgIGludCBzcGxpdF87CisKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8SW50VHlwZT46OnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgIkNsYXNzLXRlbXBsYXRlIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9uPD4gbXVz
dCBiZSAiCisgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyaXplZCB1c2luZyBhbiBpbnRlZ3Jh
bCB0eXBlLiIpOworICB9OworCisgIHBvaXNzb25fZGlzdHJpYnV0aW9uKCkgOiBwb2lzc29uX2Rp
c3RyaWJ1dGlvbigxLjApIHt9CisKKyAgZXhwbGljaXQgcG9pc3Nvbl9kaXN0cmlidXRpb24oZG91
YmxlIG1lYW4pIDogcGFyYW1fKG1lYW4pIHt9CisKKyAgZXhwbGljaXQgcG9pc3Nvbl9kaXN0cmli
dXRpb24oY29uc3QgcGFyYW1fdHlwZSYgcCkgOiBwYXJhbV8ocCkge30KKworICB2b2lkIHJlc2V0
KCkge30KKworICAvLyBnZW5lcmF0aW5nIGZ1bmN0aW9ucworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShVUkJHJiBnKSB7ICAvLyBOT0xJTlQocnVu
dGltZS9yZWZlcmVuY2VzKQorICAgIHJldHVybiAoKnRoaXMpKGcsIHBhcmFtXyk7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShVUkJH
JiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBwYXJhbV90eXBlJiBwKTsKKworICBwYXJhbV90eXBlIHBhcmFtKCkgY29uc3Qg
eyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgcCkgeyBw
YXJhbV8gPSBwOyB9CisKKyAgcmVzdWx0X3R5cGUobWluKSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgcmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRz
PHJlc3VsdF90eXBlPjo6bWF4KSgpOyB9CisKKyAgZG91YmxlIG1lYW4oKSBjb25zdCB7IHJldHVy
biBwYXJhbV8ubWVhbigpOyB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwb2lz
c29uX2Rpc3RyaWJ1dGlvbiYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2lz
c29uX2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiBhLnBhcmFtXyA9PSBiLnBhcmFtXzsK
KyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHBvaXNzb25fZGlzdHJpYnV0aW9u
JiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvaXNzb25fZGlzdHJpYnV0aW9u
JiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fICE9IGIucGFyYW1fOworICB9CisKKyBwcml2YXRl
OgorICBwYXJhbV90eXBlIHBhcmFtXzsKKyAgcmFuZG9tX2ludGVybmFsOjpGYXN0VW5pZm9ybUJp
dHM8dWludDY0X3Q+IGZhc3RfdTY0XzsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZvbGxvdworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+Citwb2lzc29uX2Rpc3RyaWJ1dGlvbjxJbnRU
eXBlPjo6cGFyYW1fdHlwZTo6cGFyYW1fdHlwZShkb3VibGUgbWVhbikKKyAgICA6IG1lYW5fKG1l
YW4pLCBzcGxpdF8oMCkgeworICBhc3NlcnQobWVhbiA+PSAwKTsKKyAgYXNzZXJ0KG1lYW4gPD0g
KHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCkpOworICAvLyBBcyBhIGRl
ZmVuc2l2ZSBtZWFzdXJlLCBhdm9pZCBsYXJnZSB2YWx1ZXMgb2YgdGhlIG1lYW4uICBUaGUgcmVq
ZWN0aW9uCisgIC8vIGFsZ29yaXRobSB1c2VkIGRvZXMgbm90IHN1cHBvcnQgdmVyeSBsYXJnZSB2
YWx1ZXMgd2VsbC4gIEl0IG15IGJlIHdvcnRoCisgIC8vIGNoYW5naW5nIGFsZ29yaXRobXMgdG8g
YmV0dGVyIGRlYWwgd2l0aCB0aGVzZSBjYXNlcy4KKyAgYXNzZXJ0KG1lYW4gPD0gMWUxMCk7Cisg
IGlmIChtZWFuXyA8IDEwKSB7CisgICAgLy8gRm9yIHNtYWxsIGxhbWJkYSwgdXNlIHRoZSBrbnV0
aCBtZXRob2QuCisgICAgc3BsaXRfID0gMTsKKyAgICBlbXVfID0gc3RkOjpleHAoLW1lYW5fKTsK
KyAgfSBlbHNlIGlmIChtZWFuXyA8PSA1MCkgeworICAgIC8vIFVzZSBzcGxpdC1rbnV0aCBtZXRo
b2QuCisgICAgc3BsaXRfID0gMSArIHN0YXRpY19jYXN0PGludD4obWVhbl8gLyAxMC4wKTsKKyAg
ICBlbXVfID0gc3RkOjpleHAoLW1lYW5fIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihzcGxpdF8pKTsK
KyAgfSBlbHNlIHsKKyAgICAvLyBVc2UgcmF0aW8gb2YgdW5pZm9ybXMgbWV0aG9kLgorICAgIGNv
bnN0ZXhwciBkb3VibGUgazJFID0gMC43MzU3NTg4ODIzNDI4ODQ2OworICAgIGNvbnN0ZXhwciBk
b3VibGUga1NBID0gMC40NDk0NTgwODEwMjk0NDkzOworCisgICAgbG11XyA9IHN0ZDo6bG9nKG1l
YW5fKTsKKyAgICBkb3VibGUgYSA9IG1lYW5fICsgMC41OworICAgIHNfID0ga1NBICsgc3RkOjpz
cXJ0KGsyRSAqIGEpOworICAgIGNvbnN0IGRvdWJsZSBtb2RlID0gc3RkOjpjZWlsKG1lYW5fKSAt
IDE7CisgICAgbG9nX2tfID0gbG11XyAqIG1vZGUgLSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlN0
aXJsaW5nTG9nRmFjdG9yaWFsKG1vZGUpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJ
bnRUeXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSBwb2lzc29uX2Rpc3Ry
aWJ1dGlvbjxJbnRUeXBlPjo6cmVzdWx0X3R5cGUKK3BvaXNzb25fZGlzdHJpYnV0aW9uPEludFR5
cGU+OjpvcGVyYXRvcigpKAorICAgIFVSQkcmIGcsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVu
Y2VzKQorICAgIGNvbnN0IHBhcmFtX3R5cGUmIHApIHsKKyAgdXNpbmcgcmFuZG9tX2ludGVybmFs
OjpQb3NpdGl2ZVZhbHVlVDsKKyAgdXNpbmcgcmFuZG9tX2ludGVybmFsOjpSYW5kVTY0VG9Eb3Vi
bGU7CisgIHVzaW5nIHJhbmRvbV9pbnRlcm5hbDo6U2lnbmVkVmFsdWVUOworCisgIGlmIChwLnNw
bGl0XyAhPSAwKSB7CisgICAgLy8gVXNlIEtudXRoJ3MgYWxnb3JpdGhtIHdpdGggcmFuZ2Ugc3Bs
aXR0aW5nIHRvIGF2b2lkIGZsb2F0aW5nLXBvaW50CisgICAgLy8gZXJyb3JzLiBLbnV0aCdzIGFs
Z29yaXRobSBpczogVWkgaXMgYSBzZXF1ZW5jZSBvZiB1bmlmb3JtIHZhcmlhdGVzIG9uCisgICAg
Ly8gKDAsMSk7IHJldHVybiB0aGUgbnVtYmVyIG9mIHZhcmlhdGVzIHJlcXVpcmVkIGZvciBwcm9k
dWN0KFVpKSA8CisgICAgLy8gZXhwKC1sYW1iZGEpLgorICAgIC8vCisgICAgLy8gVGhlIGV4cGVj
dGVkIG51bWJlciBvZiB2YXJpYXRlcyByZXF1aXJlZCBmb3IgS251dGgncyBtZXRob2QgY2FuIGJl
CisgICAgLy8gY29tcHV0ZWQgYXMgZm9sbG93czoKKyAgICAvLyBUaGUgZXhwZWN0ZWQgdmFsdWUg
b2YgVSBpcyAwLjUsIHNvIHNvbHZpbmcgZm9yIDAuNV5uIDwgZXhwKC1sYW1iZGEpIGdpdmVzCisg
ICAgLy8gdGhlIGV4cGVjdGVkIG51bWJlciBvZiB1bmlmb3JtIHZhcmlhdGVzCisgICAgLy8gcmVx
dWlyZWQgZm9yIGEgZ2l2ZW4gbGFtYmRhLCB3aGljaCBpczoKKyAgICAvLyAgbGFtYmRhID0gWzIs
IDUsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTddCisgICAgLy8gIG4gICAgICA9
IFszLCA4LCAxMywgMTUsIDE2LCAxOCwgMTksIDIxLCAyMiwgMjQsIDI1XQorICAgIC8vCisgICAg
cmVzdWx0X3R5cGUgbiA9IDA7CisgICAgZm9yIChpbnQgc3BsaXQgPSBwLnNwbGl0Xzsgc3BsaXQg
PiAwOyAtLXNwbGl0KSB7CisgICAgICBkb3VibGUgciA9IDEuMDsKKyAgICAgIGRvIHsKKyAgICAg
ICAgciAqPSBSYW5kVTY0VG9Eb3VibGU8UG9zaXRpdmVWYWx1ZVQsIHRydWU+KGZhc3RfdTY0Xyhn
KSk7CisgICAgICAgICsrbjsKKyAgICAgIH0gd2hpbGUgKHIgPiBwLmVtdV8pOworICAgICAgLS1u
OworICAgIH0KKyAgICByZXR1cm4gbjsKKyAgfQorCisgIC8vIFVzZSByYXRpbyBvZiB1bmlmb3Jt
cyBtZXRob2QuCisgIC8vCisgIC8vIExldCB1IH4gVW5pZm9ybSgwLCAxKSwgdiB+IFVuaWZvcm0o
LTEsIDEpLAorICAvLyAgICAgYSA9IGxhbWJkYSArIDEvMiwKKyAgLy8gICAgIHMgPSAxLjUgLSBz
cXJ0KDMvZSkgKyBzcXJ0KDIobGFtYmRhICsgMS8yKS9lKSwKKyAgLy8gICAgIHggPSBzICogdi91
ICsgYS4KKyAgLy8gUChmbG9vcih4KSA9IGsgfCB1XjIgPCBmKGZsb29yKHgpKS9rKSwgd2hlcmUK
KyAgLy8gZihtKSA9IGxhbWJkYV5tIGV4cCgtbGFtYmRhKS8gbSEsIGZvciAwIDw9IG0sIGFuZCBm
KG0pID0gMCBvdGhlcndpc2UsCisgIC8vIGFuZCBrID0gbWF4KGYpLgorICBjb25zdCBkb3VibGUg
YSA9IHAubWVhbl8gKyAwLjU7CisgIGZvciAoOzspIHsKKyAgICBjb25zdCBkb3VibGUgdSA9Cisg
ICAgICAgIFJhbmRVNjRUb0RvdWJsZTxQb3NpdGl2ZVZhbHVlVCwgZmFsc2U+KGZhc3RfdTY0Xyhn
KSk7ICAvLyAoMCwgMSkKKyAgICBjb25zdCBkb3VibGUgdiA9CisgICAgICAgIFJhbmRVNjRUb0Rv
dWJsZTxTaWduZWRWYWx1ZVQsIGZhbHNlPihmYXN0X3U2NF8oZykpOyAgLy8gKC0xLCAxKQorICAg
IGNvbnN0IGRvdWJsZSB4ID0gc3RkOjpmbG9vcihwLnNfICogdiAvIHUgKyBhKTsKKyAgICBpZiAo
eCA8IDApIGNvbnRpbnVlOyAgLy8gZihuZWdhdGl2ZSkgPSAwCisgICAgY29uc3QgZG91YmxlIHJo
cyA9IHggKiBwLmxtdV87CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIGRvdWJsZSBzID0g
KHggPD0gMS4wKSA/IDAuMAorICAgICAgICAgICAgIDogKHggPT0gMi4wKSA/IDAuNjkzMTQ3MTgw
NTU5OTQ1CisgICAgICAgICAgICAgOiBhYnNsOjpyYW5kb21faW50ZXJuYWw6OlN0aXJsaW5nTG9n
RmFjdG9yaWFsKHgpOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorICAgIGNvbnN0IGRvdWJsZSBs
aHMgPSAyLjAgKiBzdGQ6OmxvZyh1KSArIHAubG9nX2tfICsgczsKKyAgICBpZiAobGhzIDwgcmhz
KSB7CisgICAgICByZXR1cm4geCA+IChtYXgpKCkgPyAobWF4KSgpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oeCk7ICAvLyBmKHgpL2sgPj0gdV4y
CisgICAgfQorICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBJbnRUeXBlPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+
JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3Ms
ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIGNvbnN0IHBvaXNzb25fZGlzdHJp
YnV0aW9uPEludFR5cGU+JiB4KSB7CisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1h
a2Vfb3N0cmVhbV9zdGF0ZV9zYXZlcihvcyk7CisgIG9zLnByZWNpc2lvbihyYW5kb21faW50ZXJu
YWw6OnN0cmVhbV9wcmVjaXNpb25faGVscGVyPGRvdWJsZT46OmtQcmVjaXNpb24pOworICBvcyA8
PCB4Lm1lYW4oKTsKKyAgcmV0dXJuIG9zOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgSW50VHlwZT4KK3N0ZDo6YmFzaWNfaXN0cmVhbTxD
aGFyVCwgVHJhaXRzPiYgb3BlcmF0b3I+PigKKyAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQs
IFRyYWl0cz4mIGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICBwb2lzc29u
X2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPiYgeCkgeyAgICAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJl
bmNlcykKKyAgdXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1lIHBvaXNzb25fZGlzdHJpYnV0aW9u
PEludFR5cGU+OjpwYXJhbV90eXBlOworCisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6
Om1ha2VfaXN0cmVhbV9zdGF0ZV9zYXZlcihpcyk7CisgIGRvdWJsZSBtZWFuID0gcmFuZG9tX2lu
dGVybmFsOjpyZWFkX2Zsb2F0aW5nX3BvaW50PGRvdWJsZT4oaXMpOworICBpZiAoIWlzLmZhaWwo
KSkgeworICAgIHgucGFyYW0ocGFyYW1fdHlwZShtZWFuKSk7CisgIH0KKyAgcmV0dXJuIGlzOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX1BPSVNT
T05fRElTVFJJQlVUSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0
cmlidXRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9wb2lzc29uX2Rpc3RyaWJ1dGlvbl90ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZkNjg5OTlhM2M1NDNhY2Q0ZGFjNjBhYzI4MjZhZGFiNDZlMjE0NTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vcG9pc3Nvbl9kaXN0cmlidXRpb25fdGVz
dC5jYwpAQCAtMCwwICsxLDU2NSBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9wb2lzc29uX2Rpc3RyaWJ1dGlvbi5oIgor
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0
ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8
c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVk
ZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFi
c2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9tYWNy
b3MuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfbWFwLmgiCisjaW5jbHVk
ZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorI2luY2x1ZGUgImFic2wvcmFu
ZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFu
ZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3Mvc3RyX2Zvcm1hdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfcmVwbGFj
ZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpcC5oIgorCisvLyBOb3RlcyBhYm91dCBn
ZW5lcmF0aW5nIHBvaXNzb24gdmFyaWF0ZXM6CisvLworLy8gSXQgaXMgdW5saWtlbHkgdGhhdCBh
bnkgaW1wbGVtZW50YXRpb24gb2Ygc3RkOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbgorLy8gd2lsbCBi
ZSBzdGFibGUgb3ZlciB0aW1lIGFuZCBhY3Jvc3MgbGlicmFyeSBpbXBsZW1lbnRhdGlvbnMuIEZv
ciBpbnN0YW5jZQorLy8gdGhlIHRocmVlIGRpZmZlcmVudCBwb2lzc29uIHZhcmlhdGUgZ2VuZXJh
dG9ycyBsaXN0ZWQgYmVsb3cgYWxsIGRpZmZlcjoKKy8vCisvLyBodHRwczovL2dpdGh1Yi5jb20v
YW1wbC9nc2wvdHJlZS9tYXN0ZXIvcmFuZGlzdC9wb2lzc29uLmMKKy8vICogR1NMIHVzZXMgYSBn
YW1tYSArIGJpbm9taWFsICsga251dGggbWV0aG9kIHRvIGNvbXB1dGUgcG9pc3NvbiB2YXJpYXRl
cy4KKy8vCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2MvYmxvYi9tYXN0ZXIv
bGlic3RkYyUyQiUyQi12My9pbmNsdWRlL2JpdHMvcmFuZG9tLnRjYworLy8gKiBHQ0MgdXNlcyB0
aGUgRGV2cm95ZSByZWplY3Rpb24gYWxnb3JpdGhtLCBiYXNlZCBvbgorLy8gRGV2cm95ZSwgTC4g
Tm9uLVVuaWZvcm0gUmFuZG9tIFZhcmlhdGVzIEdlbmVyYXRpb24uIFNwcmluZ2VyLVZlcmxhZywK
Ky8vIE5ldyBZb3JrLCAxOTg2LCBDaC4gWCwgU2VjdHMuIDMuMyAmIDMuNCAoKyBFcnJhdGEhKSwg
fnAuNTExCisvLyAgIGh0dHA6Ly93d3cubnJib29rLmNvbS9kZXZyb3llLworLy8KKy8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9sbHZtLW1pcnJvci9saWJjeHgvYmxvYi9tYXN0ZXIvaW5jbHVkZS9yYW5k
b20KKy8vICogQ0xBTkcgdXNlcyBhIGRpZmZlcmVudCByZWplY3Rpb24gbWV0aG9kLCB3aGljaCBh
cHBlYXJzIHRvIGluY2x1ZGUgYQorLy8gbm9ybWFsLWRpc3RyaWJ1dGlvbiBhcHByb3hpbWF0aW9u
IGFuZCBhbiBleHBvbmVudGlhbCBkaXN0cmlidXRpb24gdG8KKy8vIGNvbXB1dGUgdGhlIHRocmVz
aG9sZCwgaW5jbHVkaW5nIGEgc2ltaWxhciBmYWN0b3JpYWwgYXBwcm94aW1hdGlvbiB0byB0aGlz
CisvLyBvbmUsIGJ1dCBpdCBpcyB1bmNsZWFyIHdoZXJlIHRoZSBhbGdvcml0aG0gY29tZXMgZnJv
bSwgZXhhY3RseS4KKy8vCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIGFic2w6OnJhbmRvbV9pbnRl
cm5hbDo6a0NoaVNxdWFyZWQ7CisKKy8vIFRoZSBQb2lzc29uRGlzdHJpYnV0aW9uSW50ZXJmYWNl
VGVzdCBwcm92aWRlcyBhIGJhc2ljIHRlc3QgdGhhdAorLy8gYWJzbDo6cG9pc3Nvbl9kaXN0cmli
dXRpb24gY29uZm9ybXMgdG8gdGhlIGludGVyZmFjZSBhbmQgc2VyaWFsaXphdGlvbgorLy8gcmVx
dWlyZW1lbnRzIGltcG9zZWQgYnkgW3JhbmQucmVxLmRpc3RdIGZvciB0aGUgY29tbW9uIGludGVn
ZXIgdHlwZXMuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgorY2xhc3MgUG9pc3NvbkRp
c3RyaWJ1dGlvbkludGVyZmFjZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCit1
c2luZyBJbnRUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8aW50LCBpbnQ4X3QsIGludDE2X3QsIGlu
dDMyX3QsIGludDY0X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCwgdWludDE2X3QsIHVpbnQzMl90LCB1aW50NjRfdD47CitUWVBFRF9URVNUX0NBU0UoUG9pc3Nv
bkRpc3RyaWJ1dGlvbkludGVyZmFjZVRlc3QsIEludFR5cGVzKTsKKworVFlQRURfVEVTVChQb2lz
c29uRGlzdHJpYnV0aW9uSW50ZXJmYWNlVGVzdCwgU2VyaWFsaXplVGVzdCkgeworICB1c2luZyBw
YXJhbV90eXBlID0gdHlwZW5hbWUgYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248VHlwZVBhcmFt
Pjo6cGFyYW1fdHlwZTsKKyAgY29uc3QgZG91YmxlIGtNYXggPQorICAgICAgc3RkOjptaW4oMWUx
MCAvKiBhc3NlcnRpb24gbGltaXQgKi8sCisgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWF4KCkpKTsKKworICBjb25zdCBk
b3VibGUga1BhcmFtc1tdID0geworICAgICAgLy8gQ2FzZXMgYXJvdW5kIDEuCisgICAgICAxLCAg
ICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgc3RkOjpuZXh0YWZ0ZXIoMS4wLCAwLjAp
LCAgLy8gMSAtIGVwc2lsb24KKyAgICAgIHN0ZDo6bmV4dGFmdGVyKDEuMCwgMi4wKSwgIC8vIDEg
KyBlcHNpbG9uCisgICAgICAvLyBBcmJpdHJhcnkgdmFsdWVzLgorICAgICAgMWUtOCwgMWUtNCwK
KyAgICAgIDAuMDAwMDAwNSwgIC8vIH43LjJlLTcKKyAgICAgIDAuMiwgICAgICAgIC8vIH4wLjJ4
CisgICAgICAwLjUsICAgICAgICAvLyAwLjcyCisgICAgICAyLCAgICAgICAgICAvLyB+Mi44Cisg
ICAgICAyMCwgICAgICAgICAvLyAzeCB+OS42CisgICAgICAxMDAsIDFlNCwgMWU4LCAxLjVlOSwg
MWUyMCwKKyAgICAgIC8vIEJvdW5kYXJ5IGNhc2VzLgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjptYXgoKSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBz
aWxvbigpLAorICAgICAgc3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjptaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgIDEuMCksICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gbWluICsgZXBzaWxvbgorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
aW4oKSwgICAgICAgICAvLyBzbWFsbGVzdCBub3JtYWwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6ZGVub3JtX21pbigpLCAgLy8gc21hbGxlc3QgZGVub3JtCisgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpIC8gMiwgICAgIC8vIGRlbm9ybQorICAgICAg
c3RkOjpuZXh0YWZ0ZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptaW4oKSwKKyAgICAg
ICAgICAgICAgICAgICAgIDAuMCksICAvLyBkZW5vcm1fbWF4CisgIH07CisKKworICBjb25zdGV4
cHIgaW50IGtDb3VudCA9IDEwMDA7CisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdlbjsKKyAgZm9y
IChjb25zdCBkb3VibGUgbSA6IGtQYXJhbXMpIHsKKyAgICBjb25zdCBkb3VibGUgbWVhbiA9IHN0
ZDo6bWluKGtNYXgsIG0pOworICAgIGNvbnN0IHBhcmFtX3R5cGUgcGFyYW0obWVhbik7CisKKyAg
ICAvLyBWYWxpZGF0ZSBwYXJhbWV0ZXJzLgorICAgIGFic2w6OnBvaXNzb25fZGlzdHJpYnV0aW9u
PFR5cGVQYXJhbT4gYmVmb3JlKG1lYW4pOworICAgIEVYUEVDVF9FUShiZWZvcmUubWVhbigpLCBw
YXJhbS5tZWFuKCkpOworCisgICAgeworICAgICAgYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248
VHlwZVBhcmFtPiB2aWFfcGFyYW0ocGFyYW0pOworICAgICAgRVhQRUNUX0VRKHZpYV9wYXJhbSwg
YmVmb3JlKTsKKyAgICAgIEVYUEVDVF9FUSh2aWFfcGFyYW0ucGFyYW0oKSwgYmVmb3JlLnBhcmFt
KCkpOworICAgIH0KKworICAgIC8vIFNtb2tlIHRlc3QuCisgICAgYXV0byBzYW1wbGVfbWluID0g
YmVmb3JlLm1heCgpOworICAgIGF1dG8gc2FtcGxlX21heCA9IGJlZm9yZS5taW4oKTsKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IGtDb3VudDsgaSsrKSB7CisgICAgICBhdXRvIHNhbXBsZSA9IGJl
Zm9yZShnZW4pOworICAgICAgRVhQRUNUX0dFKHNhbXBsZSwgYmVmb3JlLm1pbigpKTsKKyAgICAg
IEVYUEVDVF9MRShzYW1wbGUsIGJlZm9yZS5tYXgoKSk7CisgICAgICBpZiAoc2FtcGxlID4gc2Ft
cGxlX21heCkgc2FtcGxlX21heCA9IHNhbXBsZTsKKyAgICAgIGlmIChzYW1wbGUgPCBzYW1wbGVf
bWluKSBzYW1wbGVfbWluID0gc2FtcGxlOworICAgIH0KKworICAgIEFCU0xfSU5URVJOQUxfTE9H
KElORk8sIGFic2w6OlN0ckNhdCgiUmFuZ2UgeyIsIHBhcmFtLm1lYW4oKSwgIn06ICIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICtzYW1wbGVfbWluLCAiLCAiLCAr
c2FtcGxlX21heCkpOworCisgICAgLy8gVmFsaWRhdGUgc3RyZWFtIHNlcmlhbGl6YXRpb24uCisg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgICAgc3MgPDwgYmVmb3JlOworCisgICAgYWJzbDo6
cG9pc3Nvbl9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBhZnRlcigzLjgpOworCisgICAgRVhQRUNU
X05FKGJlZm9yZS5tZWFuKCksIGFmdGVyLm1lYW4oKSk7CisgICAgRVhQRUNUX05FKGJlZm9yZS5w
YXJhbSgpLCBhZnRlci5wYXJhbSgpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLCBhZnRlcik7CisK
KyAgICBzcyA+PiBhZnRlcjsKKworICAgIEVYUEVDVF9FUShiZWZvcmUubWVhbigpLCBhZnRlci5t
ZWFuKCkpICAvLworICAgICAgICA8PCBzcy5zdHIoKSA8PCAiICIgICAgICAgICAgICAgICAgICAv
LworICAgICAgICA8PCAoc3MuZ29vZCgpID8gImdvb2QgIiA6ICIiKSAgICAgICAvLworICAgICAg
ICA8PCAoc3MuYmFkKCkgPyAiYmFkICIgOiAiIikgICAgICAgICAvLworICAgICAgICA8PCAoc3Mu
ZW9mKCkgPyAiZW9mICIgOiAiIikgICAgICAgICAvLworICAgICAgICA8PCAoc3MuZmFpbCgpID8g
ImZhaWwgIiA6ICIiKTsKKyAgfQorfQorCisvLyBTZWUgaHR0cDovL3d3dy5pdGwubmlzdC5nb3Yv
ZGl2ODk4L2hhbmRib29rL2VkYS9zZWN0aW9uMy9lZGEzNjZqLmh0bQorCitjbGFzcyBQb2lzc29u
TW9kZWwgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgUG9pc3Nvbk1vZGVsKGRvdWJsZSBtZWFuKSA6
IG1lYW5fKG1lYW4pIHt9CisKKyAgZG91YmxlIG1lYW4oKSBjb25zdCB7IHJldHVybiBtZWFuXzsg
fQorICBkb3VibGUgdmFyaWFuY2UoKSBjb25zdCB7IHJldHVybiBtZWFuXzsgfQorICBkb3VibGUg
c3RkZGV2KCkgY29uc3QgeyByZXR1cm4gc3RkOjpzcXJ0KHZhcmlhbmNlKCkpOyB9CisgIGRvdWJs
ZSBza2V3KCkgY29uc3QgeyByZXR1cm4gMS4wIC8gbWVhbl87IH0KKyAgZG91YmxlIGt1cnRvc2lz
KCkgY29uc3QgeyByZXR1cm4gMy4wICsgMS4wIC8gbWVhbl87IH0KKworICAvLyBJbml0Q0RGKCkg
aW5pdGlhbGl6ZXMgdGhlIENERiBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBwYXJhbWV0ZXJzLgorICB2
b2lkIEluaXRDREYoKTsKKworICAvLyBUaGUgSW52ZXJzZUNERiwgb3IgdGhlIFBlcmNlbnQtcG9p
bnQgZnVuY3Rpb24gcmV0dXJucyB4LCBQKHgpIDwgdi4KKyAgc3RydWN0IENERiB7CisgICAgc2l6
ZV90IGluZGV4OworICAgIGRvdWJsZSBwbWY7CisgICAgZG91YmxlIGNkZjsKKyAgfTsKKyAgQ0RG
IEludmVyc2VDREYoZG91YmxlIHApIHsKKyAgICBDREYgdGFyZ2V0ezAsIDAsIHB9OworICAgIGF1
dG8gaXQgPSBzdGQ6OnVwcGVyX2JvdW5kKAorICAgICAgICBzdGQ6OmJlZ2luKGNkZl8pLCBzdGQ6
OmVuZChjZGZfKSwgdGFyZ2V0LAorICAgICAgICBbXShjb25zdCBDREYmIGEsIGNvbnN0IENERiYg
YikgeyByZXR1cm4gYS5jZGYgPCBiLmNkZjsgfSk7CisgICAgcmV0dXJuICppdDsKKyAgfQorCisg
IHZvaWQgTG9nQ0RGKCkgeworICAgIEFCU0xfSU5URVJOQUxfTE9HKElORk8sIGFic2w6OlN0ckNh
dCgiQ0RGIChtZWFuID0gIiwgbWVhbl8sICIpIikpOworICAgIGZvciAoY29uc3QgYXV0byBjIDog
Y2RmXykgeworICAgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6OlN0ckNhdChjLmluZGV4LCAiOiBwbWY9IiwgYy5wbWYsICIgY2RmPSIsIGMu
Y2RmKSk7CisgICAgfQorICB9CisKKyBwcml2YXRlOgorICBjb25zdCBkb3VibGUgbWVhbl87CisK
KyAgc3RkOjp2ZWN0b3I8Q0RGPiBjZGZfOworfTsKKworLy8gVGhlIGdvYWwgaXMgdG8gY29tcHV0
ZSBhbiBJbnZlcnNlQ0RGIGZ1bmN0aW9uLCBvciBwZXJjZW50IHBvaW50IGZ1bmN0aW9uIGZvcgor
Ly8gdGhlIHBvaXNzb24gZGlzdHJpYnV0aW9uLCBhbmQgdXNlIHRoYXQgdG8gcGFydGl0aW9uIG91
ciBvdXRwdXQgaW50byBlcXVhbAorLy8gcmFuZ2UgYnVja2V0cy4gIEhvd2V2ZXIgdGhlcmUgaXMg
bm8gY2xvc2VkIGZvcm0gc29sdXRpb24gZm9yIHRoZSBpbnZlcnNlIGNkZgorLy8gZm9yIHBvaXNz
b24gZGlzdHJpYnV0aW9ucyAodGhlIGNsb3Nlc3QgaXMgdGhlIGluY29tcGxldGUgZ2FtbWEgZnVu
Y3Rpb24pLgorLy8gSW5zdGVhZCwgYEluaXRDREZgIGl0ZXJhdGl2ZWx5IGNvbXB1dGVzIHRoZSBQ
TUYgYW5kIHRoZSBDREYuIFRoaXMgZW5hYmxlcworLy8gc2VhcmNoaW5nIGZvciB0aGUgYnVja2V0
IHBvaW50cy4KK3ZvaWQgUG9pc3Nvbk1vZGVsOjpJbml0Q0RGKCkgeworICBpZiAoIWNkZl8uZW1w
dHkoKSkgeworICAgIC8vIFN0YXRlIGFscmVhZHkgaW5pdGlhbGl6ZWQuCisgICAgcmV0dXJuOwor
ICB9CisgIEFCU0xfQVNTRVJUKG1lYW5fIDwgMjAxLjApOworCisgIGNvbnN0IHNpemVfdCBtYXhf
aSA9IDUwICogc3RkZGV2KCkgKyBtZWFuKCk7CisgIGNvbnN0IGRvdWJsZSBlX25lZ19tZWFuID0g
c3RkOjpleHAoLW1lYW4oKSk7CisgIEFCU0xfQVNTRVJUKGVfbmVnX21lYW4gPiAwKTsKKworICBk
b3VibGUgZCA9IDE7CisgIGRvdWJsZSBsYXN0X3Jlc3VsdCA9IGVfbmVnX21lYW47CisgIGRvdWJs
ZSBjdW11bGF0aXZlID0gZV9uZWdfbWVhbjsKKyAgaWYgKGVfbmVnX21lYW4gPiAxZS0xMCkgewor
ICAgIGNkZl8ucHVzaF9iYWNrKHswLCBlX25lZ19tZWFuLCBjdW11bGF0aXZlfSk7CisgIH0KKyAg
Zm9yIChzaXplX3QgaSA9IDE7IGkgPCBtYXhfaTsgaSsrKSB7CisgICAgZCAqPSAobWVhbigpIC8g
aSk7CisgICAgZG91YmxlIHJlc3VsdCA9IGVfbmVnX21lYW4gKiBkOworICAgIGN1bXVsYXRpdmUg
Kz0gcmVzdWx0OworICAgIGlmIChyZXN1bHQgPCAxZS0xMCAmJiByZXN1bHQgPCBsYXN0X3Jlc3Vs
dCAmJiBjdW11bGF0aXZlID4gMC45OTk5OTkpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBp
ZiAocmVzdWx0ID4gMWUtNykgeworICAgICAgY2RmXy5wdXNoX2JhY2soe2ksIHJlc3VsdCwgY3Vt
dWxhdGl2ZX0pOworICAgIH0KKyAgICBsYXN0X3Jlc3VsdCA9IHJlc3VsdDsKKyAgfQorICBBQlNM
X0FTU0VSVCghY2RmXy5lbXB0eSgpKTsKK30KKworLy8gUG9pc3NvbkRpc3RyaWJ1dGlvblpUZXN0
IGltcGxlbWVudHMgYSB6LXRlc3QgZm9yIHRoZSBwb2lzc29uIGRpc3RyaWJ1dGlvbi4KKworc3Ry
dWN0IFpQYXJhbSB7CisgIGRvdWJsZSBtZWFuOworICBkb3VibGUgcF9mYWlsOyAgIC8vIFotVGVz
dCBwcm9iYWJpbGl0eSBvZiBmYWlsdXJlLgorICBpbnQgdHJpYWxzOyAgICAgIC8vIFotVGVzdCB0
cmlhbHMuCisgIHNpemVfdCBzYW1wbGVzOyAgLy8gWi1UZXN0IHNhbXBsZXMuCit9OworCitjbGFz
cyBQb2lzc29uRGlzdHJpYnV0aW9uWlRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxaUGFyYW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFBvaXNz
b25Nb2RlbCB7CisgcHVibGljOgorICBQb2lzc29uRGlzdHJpYnV0aW9uWlRlc3QoKSA6IFBvaXNz
b25Nb2RlbChHZXRQYXJhbSgpLm1lYW4pIHt9CisKKyAgLy8gWlRlc3RJbXBsIHByb3ZpZGVzIGEg
YmFzaWMgei1zcXVhcmVkIHRlc3Qgb2YgdGhlIG1lYW4gdnMuIGV4cGVjdGVkCisgIC8vIG1lYW4g
Zm9yIGRhdGEgZ2VuZXJhdGVkIGJ5IHRoZSBwb2lzc29uIGRpc3RyaWJ1dGlvbi4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIEQ+CisgIGJvb2wgU2luZ2xlWlRlc3QoY29uc3QgZG91YmxlIHAsIGNvbnN0
IHNpemVfdCBzYW1wbGVzKTsKKworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBybmdfOworfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEQ+Citib29sIFBvaXNzb25EaXN0cmlidXRpb25aVGVzdDo6U2lu
Z2xlWlRlc3QoY29uc3QgZG91YmxlIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHNhbXBsZXMpIHsKKyAgRCBkaXMobWVhbigpKTsKKwor
ICBhYnNsOjpmbGF0X2hhc2hfbWFwPGludDMyX3QsIGludD4gYnVja2V0czsKKyAgc3RkOjp2ZWN0
b3I8ZG91YmxlPiBkYXRhOworICBkYXRhLnJlc2VydmUoc2FtcGxlcyk7CisgIGZvciAoaW50IGog
PSAwOyBqIDwgc2FtcGxlczsgaisrKSB7CisgICAgY29uc3QgYXV0byB4ID0gZGlzKHJuZ18pOwor
ICAgIGJ1Y2tldHNbeF0rKzsKKyAgICBkYXRhLnB1c2hfYmFjayh4KTsKKyAgfQorCisgIC8vIFRo
ZSBudWxsLWh5cG90aGVzaXMgaXMgdGhhdCB0aGUgZGlzdHJpYnV0aW9uIGlzIGEgcG9pc3NvbiBk
aXN0cmlidXRpb24gd2l0aAorICAvLyB0aGUgcHJvdmlkZWQgbWVhbiAobm90IGVzdGltYXRlZCBm
cm9tIHRoZSBkYXRhKS4KKyAgY29uc3QgYXV0byBtID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpD
b21wdXRlRGlzdHJpYnV0aW9uTW9tZW50cyhkYXRhKTsKKyAgY29uc3QgZG91YmxlIG1heF9lcnIg
PSBhYnNsOjpyYW5kb21faW50ZXJuYWw6Ok1heEVycm9yVG9sZXJhbmNlKHApOworICBjb25zdCBk
b3VibGUgeiA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6WlNjb3JlKG1lYW4oKSwgbSk7CisgIGNv
bnN0IGJvb2wgcGFzcyA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6TmVhcigieiIsIHosIDAuMCwg
bWF4X2Vycik7CisKKyAgaWYgKCFwYXNzKSB7CisgICAgQUJTTF9JTlRFUk5BTF9MT0coCisgICAg
ICAgIElORk8sIGFic2w6OlN0ckZvcm1hdCgicD0lZiBtYXhfZXJyPSVmXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIG1lYW49JWYgdnMuICVmXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiIHN0ZGRldj0lZiB2cy4gJWZcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgc2tld25lc3M9JWYgdnMuICVmXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIGt1cnRvc2lzPSVmIHZzLiAlZlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiB6PSVmIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIG1heF9lcnIs
IG0ubWVhbiwgbWVhbigpLCBzdGQ6OnNxcnQobS52YXJpYW5jZSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGRkZXYoKSwgbS5za2V3bmVzcywgc2tldygpLCBtLmt1cnRvc2lzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3VydG9zaXMoKSwgeikpOworICB9CisgIHJl
dHVybiBwYXNzOworfQorCitURVNUX1AoUG9pc3NvbkRpc3RyaWJ1dGlvblpUZXN0LCBBYnNsUG9p
c3NvbkRpc3RyaWJ1dGlvbikgeworICBjb25zdCBhdXRvJiBwYXJhbSA9IEdldFBhcmFtKCk7Cisg
IGNvbnN0IGludCBleHBlY3RlZF9mYWlsdXJlcyA9CisgICAgICBzdGQ6Om1heCgxLCBzdGF0aWNf
Y2FzdDxpbnQ+KHN0ZDo6Y2VpbChwYXJhbS50cmlhbHMgKiBwYXJhbS5wX2ZhaWwpKSk7CisgIGNv
bnN0IGRvdWJsZSBwID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpSZXF1aXJlZFN1Y2Nlc3NQcm9i
YWJpbGl0eSgKKyAgICAgIHBhcmFtLnBfZmFpbCwgcGFyYW0udHJpYWxzKTsKKworICBpbnQgZmFp
bHVyZXMgPSAwOworICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtLnRyaWFsczsgaSsrKSB7Cisg
ICAgZmFpbHVyZXMgKz0KKyAgICAgICAgU2luZ2xlWlRlc3Q8YWJzbDo6cG9pc3Nvbl9kaXN0cmli
dXRpb248aW50MzJfdD4+KHAsIHBhcmFtLnNhbXBsZXMpID8gMAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAxOworICB9CisgIEVYUEVDVF9MRShmYWlsdXJlcywgZXhwZWN0ZWRfZmFpbHVyZXMpOworfQor
CitzdGQ6OnZlY3RvcjxaUGFyYW0+IEdldFpQYXJhbXMoKSB7CisgIC8vIFRoZXNlIHZhbHVlcyBo
YXZlIGJlZW4gYWRqdXN0ZWQgZnJvbSB0aGUgImV4YWN0IiBjb21wdXRlZCB2YWx1ZXMgdG8gcmVk
dWNlCisgIC8vIGZhaWx1cmUgcmF0ZXMuCisgIC8vCisgIC8vIEl0IHR1cm5zIG91dCB0aGF0IHRo
ZSBhY3R1YWwgdmFsdWVzIGFyZSBub3QgYXMgY2xvc2UgdG8gdGhlIGV4cGVjdGVkIHZhbHVlcwor
ICAvLyBhcyB3b3VsZCBiZSBpZGVhbC4KKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPFpQYXJhbT4oewor
ICAgICAgLy8gS251dGggbWV0aG9kLgorICAgICAgWlBhcmFtezAuNSwgMC4wMSwgMTAwLCAxMDAw
fSwKKyAgICAgIFpQYXJhbXsxLjAsIDAuMDEsIDEwMCwgMTAwMH0sCisgICAgICBaUGFyYW17MTAu
MCwgMC4wMSwgMTAwLCA1MDAwfSwKKyAgICAgIC8vIFNwbGl0LWtudXRoIG1ldGhvZC4KKyAgICAg
IFpQYXJhbXsyMC4wLCAwLjAxLCAxMDAsIDEwMDAwfSwKKyAgICAgIFpQYXJhbXs1MC4wLCAwLjAx
LCAxMDAsIDEwMDAwfSwKKyAgICAgIC8vIFJhdGlvIG9mIGdhdXNzaWFucyBtZXRob2QuCisgICAg
ICBaUGFyYW17NTEuMCwgMC4wMSwgMTAwLCAxMDAwMH0sCisgICAgICBaUGFyYW17MjAwLjAsIDAu
MDUsIDEwLCAxMDAwMDB9LAorICAgICAgWlBhcmFtezEwMDAwMC4wLCAwLjA1LCAxMCwgMTAwMDAw
MH0sCisgIH0pOworfQorCitzdGQ6OnN0cmluZyBaUGFyYW1OYW1lKGNvbnN0IDo6dGVzdGluZzo6
VGVzdFBhcmFtSW5mbzxaUGFyYW0+JiBpbmZvKSB7CisgIGNvbnN0IGF1dG8mIHAgPSBpbmZvLnBh
cmFtOworICBzdGQ6OnN0cmluZyBuYW1lID0gYWJzbDo6U3RyQ2F0KCJtZWFuXyIsIGFic2w6OlNp
eERpZ2l0cyhwLm1lYW4pKTsKKyAgcmV0dXJuIGFic2w6OlN0clJlcGxhY2VBbGwobmFtZSwge3si
KyIsICJfIn0sIHsiLSIsICJfIn0sIHsiLiIsICJfIn19KTsKK30KKworSU5TVEFOVElBVEVfVEVT
VF9TVUlURV9QKCwgUG9pc3NvbkRpc3RyaWJ1dGlvblpUZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4oR2V0WlBhcmFtcygpKSwgWlBhcmFtTmFtZSk7CisK
Ky8vIFRoZSBQb2lzc29uRGlzdHJpYnV0aW9uQ2hpU3F1YXJlZFRlc3QgY2xhc3MgcHJvdmlkZXMg
YSBiYXNpYyB0ZXN0IGZyYW1ld29yaworLy8gZm9yIHZhcmlhdGVzIGdlbmVyYXRlZCBieSBhIGNv
bmZvcm1pbmcgcG9pc3Nvbl9kaXN0cmlidXRpb24uCitjbGFzcyBQb2lzc29uRGlzdHJpYnV0aW9u
Q2hpU3F1YXJlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxkb3VibGU+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFBvaXNzb25N
b2RlbCB7CisgcHVibGljOgorICBQb2lzc29uRGlzdHJpYnV0aW9uQ2hpU3F1YXJlZFRlc3QoKSA6
IFBvaXNzb25Nb2RlbChHZXRQYXJhbSgpKSB7fQorCisgIC8vIFRoZSBDaGlTcXVhcmVkVGVzdElt
cGwgcHJvdmlkZXMgYSBjaGktc3F1YXJlZCBnb29kbmVzcyBvZiBmaXQgdGVzdCBmb3IgZGF0YQor
ICAvLyBnZW5lcmF0ZWQgYnkgdGhlIHBvaXNzb24gZGlzdHJpYnV0aW9uLgorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRD4KKyAgZG91YmxlIENoaVNxdWFyZWRUZXN0SW1wbCgpOworCisgcHJpdmF0ZToK
KyAgdm9pZCBJbml0Q2hpU3F1YXJlZFRlc3QoY29uc3QgZG91YmxlIGJ1Y2tldHMpOworCisgIGFi
c2w6Okluc2VjdXJlQml0R2VuIHJuZ187CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gY3V0b2Zmc187
CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gZXhwZWN0ZWRfOworfTsKKwordm9pZCBQb2lzc29uRGlz
dHJpYnV0aW9uQ2hpU3F1YXJlZFRlc3Q6OkluaXRDaGlTcXVhcmVkVGVzdCgKKyAgICBjb25zdCBk
b3VibGUgYnVja2V0cykgeworICBpZiAoIWN1dG9mZnNfLmVtcHR5KCkgJiYgIWV4cGVjdGVkXy5l
bXB0eSgpKSB7CisgICAgcmV0dXJuOworICB9CisgIEluaXRDREYoKTsKKworICAvLyBUaGUgY29k
ZSBiZWxvdyBmaW5kcyBjdXR0b2ZmcyB0aGF0IHlpZWxkIGFwcHJveGltYXRlbHkgZXF1YWxseS1z
aXplZAorICAvLyBidWNrZXRzIHRvIHRoZSBleHRlbnQgdGhhdCBpdCBpcyBwb3NzaWJsZS4gSG93
ZXZlciBmb3IgcG9pc3NvbgorICAvLyBkaXN0cmlidXRpb25zIHRoaXMgaXMgcGFydGljdWxhcmx5
IGNoYWxsZW5naW5nIGZvciBzbWFsbCBtZWFuIHBhcmFtZXRlcnMuCisgIC8vIFRyYWNrIHRoZSBl
eHBlY3RlZCBwcm9wb3J0aW9uIG9mIGl0ZW1zIGluIGVhY2ggYnVja2V0LgorICBkb3VibGUgbGFz
dF9jZGYgPSAwOworICBjb25zdCBkb3VibGUgaW5jID0gMS4wIC8gYnVja2V0czsKKyAgZm9yIChk
b3VibGUgcCA9IGluYzsgcCA8PSAxLjA7IHAgKz0gaW5jKSB7CisgICAgYXV0byByZXN1bHQgPSBJ
bnZlcnNlQ0RGKHApOworICAgIGlmICghY3V0b2Zmc18uZW1wdHkoKSAmJiBjdXRvZmZzXy5iYWNr
KCkgPT0gcmVzdWx0LmluZGV4KSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgZG91Ymxl
IGQgPSByZXN1bHQuY2RmIC0gbGFzdF9jZGY7CisgICAgY3V0b2Zmc18ucHVzaF9iYWNrKHJlc3Vs
dC5pbmRleCk7CisgICAgZXhwZWN0ZWRfLnB1c2hfYmFjayhkKTsKKyAgICBsYXN0X2NkZiA9IHJl
c3VsdC5jZGY7CisgIH0KKyAgY3V0b2Zmc18ucHVzaF9iYWNrKHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpOworICBleHBlY3RlZF8ucHVzaF9iYWNrKHN0ZDo6bWF4KDAuMCwgMS4w
IC0gbGFzdF9jZGYpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEQ+Citkb3VibGUgUG9pc3Nv
bkRpc3RyaWJ1dGlvbkNoaVNxdWFyZWRUZXN0OjpDaGlTcXVhcmVkVGVzdEltcGwoKSB7CisgIGNv
bnN0IGludCBrU2FtcGxlcyA9IDIwMDA7CisgIGNvbnN0IGludCBrQnVja2V0cyA9IDUwOworCisg
IC8vIFRoZSBwb2lzc29uIENERiBmYWlscyBmb3IgbGFyZ2UgbWVhbiB2YWx1ZXMsIHNpbmNlIGVe
LW1lYW4gZXhjZWVkcyB0aGUKKyAgLy8gbWFjaGluZSBwcmVjaXNpb24uIEZvciB0aGVzZSBjYXNl
cywgdXNpbmcgYSBub3JtYWwgYXBwcm94aW1hdGlvbiB3b3VsZCBiZQorICAvLyBhcHByb3ByaWF0
ZS4KKyAgQUJTTF9BU1NFUlQobWVhbigpIDw9IDIwMCk7CisgIEluaXRDaGlTcXVhcmVkVGVzdChr
QnVja2V0cyk7CisKKyAgRCBkaXMobWVhbigpKTsKKworICBzdGQ6OnZlY3RvcjxpbnQzMl90PiBj
b3VudHMoY3V0b2Zmc18uc2l6ZSgpLCAwKTsKKyAgZm9yIChpbnQgaiA9IDA7IGogPCBrU2FtcGxl
czsgaisrKSB7CisgICAgY29uc3Qgc2l6ZV90IHggPSBkaXMocm5nXyk7CisgICAgYXV0byBpdCA9
IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihjdXRvZmZzXyksIHN0ZDo6ZW5kKGN1dG9mZnNf
KSwgeCk7CisgICAgY291bnRzW3N0ZDo6ZGlzdGFuY2UoY3V0b2Zmc18uYmVnaW4oKSwgaXQpXSsr
OworICB9CisKKyAgLy8gTm9ybWFsaXplIHRoZSBjb3VudHMuCisgIHN0ZDo6dmVjdG9yPGludDMy
X3Q+IGUoZXhwZWN0ZWRfLnNpemUoKSwgMCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgZS5zaXpl
KCk7IGkrKykgeworICAgIGVbaV0gPSBrU2FtcGxlcyAqIGV4cGVjdGVkX1tpXTsKKyAgfQorCisg
IC8vIFRoZSBudWxsLWh5cG90aGVzaXMgaXMgdGhhdCB0aGUgZGlzdHJpYnV0aW9uIGlzIGEgcG9p
c3NvbiBkaXN0cmlidXRpb24gd2l0aAorICAvLyB0aGUgcHJvdmlkZWQgbWVhbiAobm90IGVzdGlt
YXRlZCBmcm9tIHRoZSBkYXRhKS4KKyAgY29uc3QgaW50IGRvZiA9IHN0YXRpY19jYXN0PGludD4o
Y291bnRzLnNpemUoKSkgLSAxOworCisgIC8vIFRoZSB0aHJlc2hvbGQgZm9yIGxvZ2dpbmcgaXMg
MS1pbi01MC4KKyAgY29uc3QgZG91YmxlIHRocmVzaG9sZCA9IGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6Q2hpU3F1YXJlVmFsdWUoZG9mLCAwLjk4KTsKKworICBjb25zdCBkb3VibGUgY2hpX3NxdWFy
ZSA9IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlKAorICAgICAgc3RkOjpiZWdpbihj
b3VudHMpLCBzdGQ6OmVuZChjb3VudHMpLCBzdGQ6OmJlZ2luKGUpLCBzdGQ6OmVuZChlKSk7CisK
KyAgY29uc3QgZG91YmxlIHAgPSBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVBWYWx1
ZShjaGlfc3F1YXJlLCBkb2YpOworCisgIC8vIExvZyBpZiB0aGUgY2hpX3NxdWFyZWQgdmFsdWUg
aXMgYWJvdmUgdGhlIHRocmVzaG9sZC4KKyAgaWYgKGNoaV9zcXVhcmUgPiB0aHJlc2hvbGQpIHsK
KyAgICBMb2dDREYoKTsKKworICAgIEFCU0xfSU5URVJOQUxfTE9HKElORk8sIGFic2w6OlN0ckNh
dCgiVkFMVUVTICBidWNrZXRzPSIsIGNvdW50cy5zaXplKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgIHNhbXBsZXM9Iiwga1NhbXBsZXMpKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvdW50cy5zaXplKCk7IGkrKykgeworICAgICAgQUJTTF9JTlRF
Uk5BTF9MT0coCisgICAgICAgICAgSU5GTywgYWJzbDo6U3RyQ2F0KGN1dG9mZnNfW2ldLCAiOiAi
LCBjb3VudHNbaV0sICIgdnMuIEU9IiwgZVtpXSkpOworICAgIH0KKworICAgIEFCU0xfSU5URVJO
QUxfTE9HKAorICAgICAgICBJTkZPLAorICAgICAgICBhYnNsOjpTdHJDYXQoa0NoaVNxdWFyZWQs
ICIoZGF0YSwgZG9mPSIsIGRvZiwgIikgPSAiLCBjaGlfc3F1YXJlLCAiICgiLAorICAgICAgICAg
ICAgICAgICAgICAgcCwgIilcbiIsICIgdnMuXG4iLCBrQ2hpU3F1YXJlZCwgIiBAIDAuOTggPSAi
LCB0aHJlc2hvbGQpKTsKKyAgfQorICByZXR1cm4gcDsKK30KKworVEVTVF9QKFBvaXNzb25EaXN0
cmlidXRpb25DaGlTcXVhcmVkVGVzdCwgQWJzbFBvaXNzb25EaXN0cmlidXRpb24pIHsKKyAgY29u
c3QgaW50IGtUcmlhbHMgPSAyMDsKKworICAvLyBMYXJnZSB2YWx1ZXMgYXJlIG5vdCB5ZXQgc3Vw
cG9ydGVkIC0tIHRoaXMgcmVxdWlyZXMgZXN0aW1hdGluZyB0aGUgY2RmCisgIC8vIHVzaW5nIHRo
ZSBub3JtYWwgZGlzdHJpYnV0aW9uIGluc3RlYWQgb2YgdGhlIHBvaXNzb24gaW4gdGhpcyBjYXNl
LgorICBBU1NFUlRfTEUobWVhbigpLCAyMDAuMCk7CisgIGlmIChtZWFuKCkgPiAyMDAuMCkgewor
ICAgIHJldHVybjsKKyAgfQorCisgIGludCBmYWlsdXJlcyA9IDA7CisgIGZvciAoaW50IGkgPSAw
OyBpIDwga1RyaWFsczsgaSsrKSB7CisgICAgZG91YmxlIHBfdmFsdWUgPSBDaGlTcXVhcmVkVGVz
dEltcGw8YWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248aW50MzJfdD4+KCk7CisgICAgaWYgKHBf
dmFsdWUgPCAwLjAwNSkgeworICAgICAgZmFpbHVyZXMrKzsKKyAgICB9CisgIH0KKyAgLy8gVGhl
cmUgaXMgYSAwLjEwJSBjaGFuY2Ugb2YgcHJvZHVjaW5nIGF0IGxlYXN0IG9uZSBmYWlsdXJlLCBz
byByYWlzZSB0aGUKKyAgLy8gZmFpbHVyZSB0aHJlc2hvbGQgaGlnaCBlbm91Z2ggdG8gYWxsb3cg
Zm9yIGEgZmxha2UgcmF0ZSA8IDEwLDAwMC4KKyAgRVhQRUNUX0xFKGZhaWx1cmVzLCA0KTsKK30K
KworSU5TVEFOVElBVEVfVEVTVF9TVUlURV9QKCwgUG9pc3NvbkRpc3RyaWJ1dGlvbkNoaVNxdWFy
ZWRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDAuNSwg
MS4wLCAyLjAsIDEwLjAsIDUwLjAsIDUxLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjAwLjApKTsKKworLy8gTk9URTogYWJzbDo6cG9pc3Nvbl9kaXN0cmli
dXRpb24gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLgorVEVTVChQb2lzc29uRGlzdHJp
YnV0aW9uVGVzdCwgU3RhYmlsaXR5VGVzdCkgeworICB1c2luZyB0ZXN0aW5nOjpFbGVtZW50c0Fy
ZTsKKyAgLy8gYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb24gc3RhYmlsaXR5IHJlbGllcyBvbiBz
dGFiaWxpdHkgb2YKKyAgLy8gc3RkOjpleHAsIHN0ZDo6bG9nLCBzdGQ6OnNxcnQsIHN0ZDo6Y2Vp
bCwgc3RkOjpmbG9vciwgYW5kCisgIC8vIGFic2w6OkZhc3RVbmlmb3JtQml0cywgYWJzbDo6U3Rp
cmxpbmdMb2dGYWN0b3JpYWwsIGFic2w6OlJhbmRVNjRUb0RvdWJsZS4KKyAgYWJzbDo6cmFuZG9t
X2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoeworICAgICAgMHgwMzViMGRjN2UwYTE4YWNm
dWxsLCAweDA2Y2ViZTBkMjY1MzY4MmV1bGwsIDB4MDA2MWU5YjIzODYxNTk2YnVsbCwKKyAgICAg
IDB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHhGRkNFQTUwRkRCMkY5NTNCdWxsLCAweEMzMzJEREVG
QkU2QzVBQTV1bGwsCisgICAgICAweDY1NTgyMTg1NjhBQjk3MDJ1bGwsIDB4MkFFRjdEQUQ1QjZF
MkY4NHVsbCwgMHgxNTIxQjYyODI5MDc2MTcwdWxsLAorICAgICAgMHhFQ0RENDc3NTYxOUYxNTEw
dWxsLCAweDEzQ0NBODMwRUI2MUJEOTZ1bGwsIDB4MDMzNEZFMUVBQTAzNjNDRnVsbCwKKyAgICAg
IDB4QjU3MzVDOTA0QzcwQTIzOXVsbCwgMHhENTlFOUUwQkNCQUFERTE0dWxsLCAweEVFQ0M4NkJD
NjA2MjJDQTd1bGwsCisgICAgICAweDQ4NjRmMjJjMDU5YmYyOWV1bGwsIDB4MjQ3ODU2ZDhiODYy
NjY1Y3VsbCwgMHhlNDZlODZlOWExMzM3ZTEwdWxsLAorICAgICAgMHhkOGM4NTQxZjM1MTliMTMz
dWxsLCAweGU3NWI1MTYyYzU2N2I5ZTR1bGwsIDB4ZjczMmU1ZGVkNzAwOWM1YnVsbCwKKyAgICAg
IDB4YjE3MGI5ODM1MzEyMWVhY3VsbCwgMHgxZWMyZTg5ODZkMjM2MmNhdWxsLCAweDgxNGM4ZTM1
ZmU5YTk2MWF1bGwsCisgICAgICAweDBjM2NkNTljOWI2MzhhMDJ1bGwsIDB4Y2IzYmI2NDc4YTA3
NzE1Y3VsbCwgMHgxMjI0ZTYyYzk3OGJiYzdmdWxsLAorICAgICAgMHg2NzFlZjJjYjA0ZTgxZjZl
dWxsLCAweDNjMWNiZDgxMWVhZjE4MDh1bGwsIDB4MWJiYzIzY2ZhOGZhYzcyMXVsbCwKKyAgICAg
IDB4YTRjMmNkYTY1ZTU5NmE1MXVsbCwgMHhiNzcyMTZmYWQzN2FkZjkxdWxsLCAweDgzNmQ3OTQ0
NTdjMDg4NDl1bGwsCisgICAgICAweGUwODNkZjAzNDc1ZjQ5ZDd1bGwsIDB4YmM5ZmViNTEyZTZi
MGQ2Y3VsbCwgMHhiMTJkNzRmZGQ3MThjOGM1dWxsLAorICAgICAgMHgxMmZmMDk2NTNiZmJlNGNh
dWxsLCAweDhkZDAzYTEwNWJjNGVlN2V1bGwsIDB4NTczODM0MTA0NWJhMGQ4NXVsbCwKKyAgICAg
IDB4ZjNmZDcyMmRjNjVhZDA5ZXVsbCwgMHhmYTE0ZmQyMWVhMmE1NzA1dWxsLCAweGZmZTZlYTRk
NmVkYjBjNzN1bGwsCisgICAgICAweEQwN0U5RUZFMkJGMTFGQjR1bGwsIDB4OTVEQkRBNERBRTkw
OTE5OHVsbCwgMHhFQUFEOEU3MTZCOTNENUEwdWxsLAorICAgICAgMHhEMDhFRDFEMEFGQzcyNUUw
dWxsLCAweDhFM0M1QjJGOEU3NTk0Qjd1bGwsIDB4OEZGNkUyRkJGMjEyMkI2NHVsbCwKKyAgICAg
IDB4ODg4OEI4MTI5MDBERjAxQ3VsbCwgMHg0RkFENUVBMDY4OEZDMzFDdWxsLCAweEQxQ0ZGMTkx
QjNBOEMxQUR1bGwsCisgICAgICAweDJGMkYyMjE4QkUwRTE3Nzd1bGwsIDB4RUE3NTJERkU4QjAy
MUZBMXVsbCwgMHhFNUEwQ0MwRkI1NkY3NEU4dWxsLAorICAgICAgMHgxOEFDRjNENkNFODlFMjk5
dWxsLCAweEI0QTg0RkUwRkQxM0UwQjd1bGwsIDB4N0NDNDNCODFEMkFEQThEOXVsbCwKKyAgICAg
IDB4MTY1RkEyNjY4MDk1NzcwNXVsbCwgMHg5M0NDNzMxNDIxMUExNDc3dWxsLCAweEU2QUQyMDY1
NzdCNUZBODZ1bGwsCisgICAgICAweEM3NTQ0MkY1RkI5RDM1Q0Z1bGwsIDB4RUJDREFGMEM3QjNF
ODlBMHVsbCwgMHhENjQxMUJEM0FFMUU3RTQ5dWxsLAorICAgICAgMHgwMDI1MEUyRDIwNzFCMzVF
dWxsLCAweDIyNjgwMEJCNTdCOEUwQUZ1bGwsIDB4MjQ2NDM2OUJGMDA5QjkxRXVsbCwKKyAgICAg
IDB4NTU2MzkxMUQ1OURGQTZBQXVsbCwgMHg3OEMxNDM4OUQ5NUE1MzdGdWxsLCAweDIwN0Q1QkEy
MDJFNUI5QzV1bGwsCisgICAgICAweDgzMjYwMzc2NjI5NUNGQTl1bGwsIDB4MTFDODE5Njg0RTcz
NEE0MXVsbCwgMHhCMzQ3MkRDQTdCMTRBOTRBdWxsLAorICB9KTsKKworICBzdGQ6OnZlY3Rvcjxp
bnQ+IG91dHB1dCgxMCk7CisKKyAgLy8gTWV0aG9kIDEuCisgIHsKKyAgICBhYnNsOjpwb2lzc29u
X2Rpc3RyaWJ1dGlvbjxpbnQ+IGRpc3QoNSk7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2lu
KG91dHB1dCksIHN0ZDo6ZW5kKG91dHB1dCksCisgICAgICAgICAgICAgICAgICBbJl0geyByZXR1
cm4gZGlzdCh1cmJnKTsgfSk7CisgIH0KKyAgRVhQRUNUX1RIQVQob3V0cHV0LCAgLy8gbWVhbiA9
IDQuMgorICAgICAgICAgICAgICBFbGVtZW50c0FyZSgxLCAwLCAwLCA0LCAyLCAxMCwgMywgMywg
NywgMTIpKTsKKworICAvLyBNZXRob2QgMi4KKyAgeworICAgIHVyYmcucmVzZXQoKTsKKyAgICBh
YnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxpbnQ+IGRpc3QoMjUpOworICAgIHN0ZDo6Z2VuZXJh
dGUoc3RkOjpiZWdpbihvdXRwdXQpLCBzdGQ6OmVuZChvdXRwdXQpLAorICAgICAgICAgICAgICAg
ICAgWyZdIHsgcmV0dXJuIGRpc3QodXJiZyk7IH0pOworICB9CisgIEVYUEVDVF9USEFUKG91dHB1
dCwgIC8vIG1lYW4gPSAxOS44CisgICAgICAgICAgICAgIEVsZW1lbnRzQXJlKDksIDM1LCAxOCwg
MTAsIDM1LCAxOCwgMTAsIDM1LCAxOCwgMTApKTsKKworICAvLyBNZXRob2QgMy4KKyAgeworICAg
IHVyYmcucmVzZXQoKTsKKyAgICBhYnNsOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxpbnQ+IGRpc3Qo
MTIxKTsKKyAgICBzdGQ6OmdlbmVyYXRlKHN0ZDo6YmVnaW4ob3V0cHV0KSwgc3RkOjplbmQob3V0
cHV0KSwKKyAgICAgICAgICAgICAgICAgIFsmXSB7IHJldHVybiBkaXN0KHVyYmcpOyB9KTsKKyAg
fQorICBFWFBFQ1RfVEhBVChvdXRwdXQsICAvLyBtZWFuID0gMTI0LjEKKyAgICAgICAgICAgICAg
RWxlbWVudHNBcmUoMTYxLCAxMjIsIDEyOSwgMTI0LCAxMTIsIDExMiwgMTE3LCAxMjAsIDEzMCwg
MTE0KSk7Cit9CisKK1RFU1QoUG9pc3NvbkRpc3RyaWJ1dGlvblRlc3QsIEFsZ29yaXRobUV4cGVj
dGVkVmFsdWVfMSkgeworICAvLyBUaGlzIHRlc3RzIHNtYWxsIHZhbHVlcyBvZiB0aGUgS251dGgg
bWV0aG9kLgorICAvLyBUaGUgdW5kZXJseWluZyB1bmlmb3JtIGRpc3RyaWJ1dGlvbiB3aWxsIGdl
bmVyYXRlIGV4YWN0bHkgMC41LgorICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVlbmNlX3Vy
YmcgdXJiZyh7MHg4MDAwMDAwMDAwMDAwMDAxdWxsfSk7CisgIGFic2w6OnBvaXNzb25fZGlzdHJp
YnV0aW9uPGludD4gZGlzdCg1KTsKKyAgRVhQRUNUX0VRKDcsIGRpc3QodXJiZykpOworfQorCitU
RVNUKFBvaXNzb25EaXN0cmlidXRpb25UZXN0LCBBbGdvcml0aG1FeHBlY3RlZFZhbHVlXzIpIHsK
KyAgLy8gVGhpcyB0ZXN0cyBsYXJnZXIgdmFsdWVzIG9mIHRoZSBLbnV0aCBtZXRob2QuCisgIC8v
IFRoZSB1bmRlcmx5aW5nIHVuaWZvcm0gZGlzdHJpYnV0aW9uIHdpbGwgZ2VuZXJhdGUgZXhhY3Rs
eSAwLjUuCisgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKHsweDgw
MDAwMDAwMDAwMDAwMDF1bGx9KTsKKyAgYWJzbDo6cG9pc3Nvbl9kaXN0cmlidXRpb248aW50PiBk
aXN0KDI1KTsKKyAgRVhQRUNUX0VRKDM2LCBkaXN0KHVyYmcpKTsKK30KKworVEVTVChQb2lzc29u
RGlzdHJpYnV0aW9uVGVzdCwgQWxnb3JpdGhtRXhwZWN0ZWRWYWx1ZV8zKSB7CisgIC8vIFRoaXMg
dmFyaWFudCB1c2VzIHRoZSByYXRpbyBvZiB1bmlmb3JtcyBtZXRob2QuCisgIGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKAorICAgICAgezB4N2ZmZmZmZmZmZmZmZmZm
ZnVsbCwgMHg4MDAwMDAwMDAwMDAwMDAwdWxsfSk7CisKKyAgYWJzbDo6cG9pc3Nvbl9kaXN0cmli
dXRpb248aW50PiBkaXN0KDEyMSk7CisgIEVYUEVDVF9FUSgxMjEsIGRpc3QodXJiZykpOworfQor
Cit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9yYW5kb20uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3JhbmRvbS9yYW5kb20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzY4NTJmNGFkZjNhZDE0YWY1NDE4YTFj
NzU3NWFhNGYzZDJhMTFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3JhbmRvbS5o
CkBAIC0wLDAgKzEsMTg3IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogcmFuZG9tLmgKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyB0aGUgcmVjb21t
ZW5kZWQgVW5pZm9ybSBSYW5kb20gQml0IEdlbmVyYXRvciAoVVJCRykKKy8vIHR5cGVzIGZvciB1
c2Ugd2l0aGluIHRoZSBBYnNlaWwgUmFuZG9tIGxpYnJhcnkuIFRoZXNlIHR5cGVzIGFyZSBub3QK
Ky8vIHN1aXRhYmxlIGZvciBzZWN1cml0eS1yZWxhdGVkIHVzZS1jYXNlcywgYnV0IHNob3VsZCBz
dWZmaWNlIGZvciBtb3N0IG90aGVyCisvLyB1c2VzIG9mIGdlbmVyYXRpbmcgcmFuZG9tIHZhbHVl
cy4KKy8vCisvLyBUaGUgQWJzZWlsIHJhbmRvbSBsaWJyYXJ5IHByb3ZpZGVzIHRoZSBmb2xsb3dp
bmcgVVJCRyB0eXBlczoKKy8vCisvLyAgICogQml0R2VuLCBhIGdvb2QgZ2VuZXJhbC1wdXJwb3Nl
IGJpdCBnZW5lcmF0b3IsIG9wdGltaXplZCBmb3IgZ2VuZXJhdGluZworLy8gICAgIHJhbmRvbSAo
YnV0IG5vdCBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUpIHZhbHVlcworLy8gICAqIEluc2VjdXJl
Qml0R2VuLCBhIHNsaWdodGx5IGZhc3RlciwgdGhvdWdoIGxlc3MgcmFuZG9tLCBiaXQgZ2VuZXJh
dG9yLCBmb3IKKy8vICAgICBjYXNlcyB3aGVyZSB0aGUgZXhpc3RpbmcgQml0R2VuIGlzIGEgZHJh
ZyBvbiBwZXJmb3JtYW5jZS4KKworI2lmbmRlZiBBQlNMX1JBTkRPTV9SQU5ET01fSF8KKyNkZWZp
bmUgQUJTTF9SQU5ET01fUkFORE9NX0hfCisKKyNpbmNsdWRlIDxyYW5kb20+CisKKyNpbmNsdWRl
ICJhYnNsL3JhbmRvbS9kaXN0cmlidXRpb25zLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0Cisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvbm9uc2VjdXJlX2Jhc2UuaCIgIC8vIElXWVUg
cHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9wY2dfZW5naW5l
LmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJu
YWwvcG9vbF91cmJnLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvcmFuZGVuX2Vu
Z2luZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3NlZWRfc2VxdWVuY2VzLmgiICAvLyBJV1lV
IHByYWdtYTogZXhwb3J0CisKK25hbWVzcGFjZSBhYnNsIHsKKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vIGFic2w6OkJpdEdlbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBg
YWJzbDo6Qml0R2VuYCBpcyBhIGdlbmVyYWwtcHVycG9zZSByYW5kb20gYml0IGdlbmVyYXRvciBm
b3IgZ2VuZXJhdGluZworLy8gcmFuZG9tIHZhbHVlcyBmb3IgdXNlIHdpdGhpbiB0aGUgQWJzZWls
IHJhbmRvbSBsaWJyYXJ5LiBUeXBpY2FsbHksIHlvdSB1c2UgYQorLy8gYml0IGdlbmVyYXRvciBp
biBjb21iaW5hdGlvbiB3aXRoIGEgZGlzdHJpYnV0aW9uIHRvIHByb3ZpZGUgcmFuZG9tIHZhbHVl
cy4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gQ3JlYXRlIGFuIGFic2w6OkJpdEdlbi4g
VGhlcmUgaXMgbm8gbmVlZCB0byBzZWVkIHRoaXMgYml0IGdlbmVyYXRvci4KKy8vICAgYWJzbDo6
Qml0R2VuIGdlbjsKKy8vCisvLyAgIC8vIEdlbmVyYXRlIGFuIGludGVnZXIgdmFsdWUgaW4gdGhl
IGNsb3NlZCBpbnRlcnZhbCBbMSw2XQorLy8gICBpbnQgZGllX3JvbGwgPSBhYnNsOjp1bmlmb3Jt
X2ludF9kaXN0cmlidXRpb248aW50PigxLCA2KShnZW4pOworLy8KKy8vIGBhYnNsOjpCaXRHZW5g
IGlzIHNlZWRlZCBieSBkZWZhdWx0IHdpdGggbm9uLWRldGVybWluaXN0aWMgZGF0YSB0byBwcm9k
dWNlCisvLyBkaWZmZXJlbnQgc2VxdWVuY2VzIG9mIHJhbmRvbSB2YWx1ZXMgYWNyb3NzIGRpZmZl
cmVudCBpbnN0YW5jZXMsIGluY2x1ZGluZworLy8gZGlmZmVyZW50IGJpbmFyeSBpbnZvY2F0aW9u
cy4gVGhpcyBiZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgc3RhbmRhcmQKKy8vIGxpYnJh
cnkgYml0IGdlbmVyYXRvcnMsIHdoaWNoIHVzZSBnb2xkZW4gdmFsdWVzIGFzIHRoZWlyIHNlZWRz
LiBEZWZhdWx0CisvLyBjb25zdHJ1Y3Rpb24gaW50ZW50aW9uYWxseSBwcm92aWRlcyBubyBzdGFi
aWxpdHkgZ3VhcmFudGVlcywgdG8gYXZvaWQKKy8vIGFjY2lkZW50YWwgZGVwZW5kZW5jZSBvbiBz
dWNoIGEgcHJvcGVydHkuCisvLworLy8gYGFic2w6OkJpdEdlbmAgbWF5IGJlIGNvbnN0cnVjdGVk
IHdpdGggYW4gb3B0aW9uYWwgc2VlZCBzZXF1ZW5jZSB0eXBlLAorLy8gY29uZm9ybWluZyB0byBb
cmFuZC5yZXEuc2VlZF9zZXFdLCB3aGljaCB3aWxsIGJlIG1peGVkIHdpdGggYWRkaXRpb25hbAor
Ly8gbm9uLWRldGVybWluaXN0aWMgZGF0YS4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAvLyBD
cmVhdGUgYW4gYWJzbDo6Qml0R2VuIHVzaW5nIGFuIHN0ZDo6c2VlZF9zZXEgc2VlZCBzZXF1ZW5j
ZQorLy8gIHN0ZDo6c2VlZF9zZXEgc2VxezEsMiwzfTsKKy8vICBhYnNsOjpCaXRHZW4gZ2VuX3dp
dGhfc2VlZChzZXEpOworLy8KKy8vICAvLyBHZW5lcmF0ZSBhbiBpbnRlZ2VyIHZhbHVlIGluIHRo
ZSBjbG9zZWQgaW50ZXJ2YWwgWzEsNl0KKy8vICBpbnQgZGllX3JvbGwyID0gYWJzbDo6dW5pZm9y
bV9pbnRfZGlzdHJpYnV0aW9uPGludD4oMSwgNikoZ2VuX3dpdGhfc2VlZCk7CisvLworLy8gYGFi
c2w6OkJpdEdlbmAgbWVldHMgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgVW5pZm9ybSBSYW5kb20g
Qml0IEdlbmVyYXRvcgorLy8gKFVSQkcpIGNvbmNlcHQgYXMgcGVyIHRoZSBDKysxNyBzdGFuZGFy
ZCBbcmFuZC5yZXEudXJuZ10gdGhvdWdoIGRpZmZlcnMKKy8vIHNsaWdodGx5IHdpdGggW3JhbmQu
cmVxLmVuZ10uIExpa2UgaXRzIHN0YW5kYXJkIGxpYnJhcnkgZXF1aXZhbGVudHMgKGUuZy4KKy8v
IGBzdGQ6Om1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lYCkgYGFic2w6OkJpdEdlbmAgaXMgbm90IGNy
eXB0b2dyYXBoaWNhbGx5CisvLyBzZWN1cmUuCisvLworLy8gQ29uc3RydWN0aW5nIHR3byBgYWJz
bDo6Qml0R2VuYHMgd2l0aCB0aGUgc2FtZSBzZWVkIHNlcXVlbmNlIGluIHRoZSBzYW1lCisvLyBi
aW5hcnkgd2lsbCBwcm9kdWNlIHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhcmlhdGVzIHdpdGhpbiB0
aGUgc2FtZSBiaW5hcnksIGJ1dAorLy8gbmVlZCBub3QgZG8gc28gYWNyb3NzIG11bHRpcGxlIGJp
bmFyeSBpbnZvY2F0aW9ucy4KKy8vCisvLyBUaGlzIHR5cGUgaGFzIGJlZW4gb3B0aW1pemVkIHRv
IHBlcmZvcm0gYmV0dGVyIHRoYW4gTWVyc2VubmUgVHdpc3RlcgorLy8gKGh0dHBzOi8vZW4ud2lr
aXBlZGlhLm9yZy93aWtpL01lcnNlbm5lX1R3aXN0ZXIpIGFuZCBtYW55IG90aGVyIGNvbXBsZXgg
VVJCRworLy8gdHlwZXMgb24gbW9kZXJuIHg4NiwgQVJNLCBhbmQgUFBDIGFyY2hpdGVjdHVyZXMu
CisvLworLy8gVGhpcyB0eXBlIGlzIHRocmVhZC1jb21wYXRpYmxlLCBidXQgbm90IHRocmVhZC1z
YWZlLgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6OkJpdEdlbiBtZW1iZXIgZnVu
Y3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gYWJzbDo6Qml0R2VuOjpvcGVyYXRv
cigpKCkKKy8vCisvLyBDYWxscyB0aGUgQml0R2VuLCByZXR1cm5pbmcgYSBnZW5lcmF0ZWQgdmFs
dWUuCisKKy8vIGFic2w6OkJpdEdlbjo6bWluKCkKKy8vCisvLyBSZXR1cm5zIHRoZSBzbWFsbGVz
dCBwb3NzaWJsZSB2YWx1ZSBmcm9tIHRoaXMgYml0IGdlbmVyYXRvci4KKworLy8gYWJzbDo6Qml0
R2VuOjptYXgoKQorLy8KKy8vIFJldHVybnMgdGhlIGxhcmdlc3QgcG9zc2libGUgdmFsdWUgZnJv
bSB0aGlzIGJpdCBnZW5lcmF0b3IuLCBhbmQKKworLy8gYWJzbDo6Qml0R2VuOjpkaXNjYXJkKG51
bSkKKy8vCisvLyBBZHZhbmNlcyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhpcyBiaXQgZ2VuZXJh
dG9yIGJ5IGBudW1gIHRpbWVzLCBhbmQKKy8vIGRpc2NhcmRzIHRoZSBpbnRlcm1lZGlhdGUgcmVz
dWx0cy4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1c2luZyBCaXRHZW4gPSByYW5kb21faW50
ZXJuYWw6Ok5vbnNlY3VyZVVSQkdCYXNlPAorICAgIHJhbmRvbV9pbnRlcm5hbDo6cmFuZGVuX2Vu
Z2luZTx1aW50NjRfdD4+OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6SW5z
ZWN1cmVCaXRHZW4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gYGFic2w6Okluc2Vj
dXJlQml0R2VuYCBpcyBhbiBlZmZpY2llbnQgcmFuZG9tIGJpdCBnZW5lcmF0b3IgZm9yIGdlbmVy
YXRpbmcKKy8vIHJhbmRvbSB2YWx1ZXMsIHJlY29tbWVuZGVkIG9ubHkgZm9yIHBlcmZvcm1hbmNl
LXNlbnNpdGl2ZSB1c2UgY2FzZXMgd2hlcmUKKy8vIGBhYnNsOjpCaXRHZW5gIGlzIG5vdCBzYXRp
c2ZhY3Rvcnkgd2hlbiBjb21wdXRlLWJvdW5kZWQgYnkgYml0IGdlbmVyYXRpb24KKy8vIGNvc3Rz
LgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICAvLyBDcmVhdGUgYW4gYWJzbDo6SW5zZWN1cmVC
aXRHZW4KKy8vICAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworLy8gICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgeworLy8KKy8vICAgICAvLyBHZW5lcmF0ZSBhIGJ1bmNo
IG9mIHJhbmRvbSB2YWx1ZXMgZnJvbSBzb21lIGNvbXBsZXggZGlzdHJpYnV0aW9uCisvLyAgICAg
YXV0byBteV9ybmQgPSBzb21lX2Rpc3RyaWJ1dGlvbihnZW4sIDEsIDEwMDApOworLy8gICB9Cisv
LworLy8gTGlrZSBgYWJzbDo6Qml0R2VuYCwgYGFic2w6Okluc2VjdXJlQml0R2VuYCBpcyBzZWVk
ZWQgYnkgZGVmYXVsdCB3aXRoCisvLyBub24tZGV0ZXJtaW5pc3RpYyBkYXRhIHRvIHByb2R1Y2Ug
ZGlmZmVyZW50IHNlcXVlbmNlcyBvZiByYW5kb20gdmFsdWVzIGFjcm9zcworLy8gZGlmZmVyZW50
IGluc3RhbmNlcywgaW5jbHVkaW5nIGRpZmZlcmVudCBiaW5hcnkgaW52b2NhdGlvbnMuIChUaGlz
IGJlaGF2aW9yCisvLyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBiaXQg
Z2VuZXJhdG9ycywgd2hpY2ggdXNlIGdvbGRlbgorLy8gdmFsdWVzIGFzIHRoZWlyIHNlZWRzLikK
Ky8vCisvLyBgYWJzbDo6SW5zZWN1cmVCaXRHZW5gIG1heSBiZSBjb25zdHJ1Y3RlZCB3aXRoIGFu
IG9wdGlvbmFsIHNlZWQgc2VxdWVuY2UKKy8vIHR5cGUsIGNvbmZvcm1pbmcgdG8gW3JhbmQucmVx
LnNlZWRfc2VxXSwgd2hpY2ggd2lsbCBiZSBtaXhlZCB3aXRoIGFkZGl0aW9uYWwKKy8vIG5vbi1k
ZXRlcm1pbmlzdGljIGRhdGEuIChTZWUgc3RkX3NlZWRfc2VxLmggZm9yIG1vcmUgaW5mb3JtYXRp
b24uKQorLy8KKy8vIGBhYnNsOjpJbnNlY3VyZUJpdEdlbmAgbWVldHMgdGhlIHJlcXVpcmVtZW50
cyBvZiB0aGUgVW5pZm9ybSBSYW5kb20gQml0CisvLyBHZW5lcmF0b3IgKFVSQkcpIGNvbmNlcHQg
YXMgcGVyIHRoZSBDKysxNyBzdGFuZGFyZCBbcmFuZC5yZXEudXJuZ10gdGhvdWdoCisvLyBpdHMg
aW1wbGVtZW50YXRpb24gZGlmZmVycyBzbGlnaHRseSB3aXRoIFtyYW5kLnJlcS5lbmddLiBMaWtl
IGl0cyBzdGFuZGFyZAorLy8gbGlicmFyeSBlcXVpdmFsZW50cyAoZS5nLiBgc3RkOjptZXJzZW5u
ZV90d2lzdGVyX2VuZ2luZWApCisvLyBgYWJzbDo6SW5zZWN1cmVCaXRHZW5gIGlzIG5vdCBjcnlw
dG9ncmFwaGljYWxseSBzZWN1cmUuCisvLworLy8gUHJlZmVyIGBhYnNsOjpCaXRHZW5gIG92ZXIg
YGFic2w6Okluc2VjdXJlQml0R2VuYCBhcyB0aGUgZ2VuZXJhbCB0eXBlIGlzCisvLyBvZnRlbiBm
YXN0IGVub3VnaCBmb3IgdGhlIHZhc3QgbWFqb3JpdHkgb2YgYXBwbGljYXRpb25zLgorCit1c2lu
ZyBJbnNlY3VyZUJpdEdlbiA9CisgICAgcmFuZG9tX2ludGVybmFsOjpOb25zZWN1cmVVUkJHQmFz
ZTxyYW5kb21faW50ZXJuYWw6OnBjZzY0XzIwMThfZW5naW5lPjsKKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyBhYnNsOjpJbnNlY3VyZUJpdEdlbiBtZW1iZXIgZnVuY3Rpb25zCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLy8gYWJzbDo6SW5zZWN1cmVCaXRHZW46Om9wZXJhdG9yKCkoKQor
Ly8KKy8vIENhbGxzIHRoZSBJbnNlY3VyZUJpdEdlbiwgcmV0dXJuaW5nIGEgZ2VuZXJhdGVkIHZh
bHVlLgorCisvLyBhYnNsOjpJbnNlY3VyZUJpdEdlbjo6bWluKCkKKy8vCisvLyBSZXR1cm5zIHRo
ZSBzbWFsbGVzdCBwb3NzaWJsZSB2YWx1ZSBmcm9tIHRoaXMgYml0IGdlbmVyYXRvci4KKworLy8g
YWJzbDo6SW5zZWN1cmVCaXRHZW46Om1heCgpCisvLworLy8gUmV0dXJucyB0aGUgbGFyZ2VzdCBw
b3NzaWJsZSB2YWx1ZSBmcm9tIHRoaXMgYml0IGdlbmVyYXRvci4KKworLy8gYWJzbDo6SW5zZWN1
cmVCaXRHZW46OmRpc2NhcmQobnVtKQorLy8KKy8vIEFkdmFuY2VzIHRoZSBpbnRlcm5hbCBzdGF0
ZSBvZiB0aGlzIGJpdCBnZW5lcmF0b3IgYnkgYG51bWAgdGltZXMsIGFuZAorLy8gZGlzY2FyZHMg
dGhlIGludGVybWVkaWF0ZSByZXN1bHRzLgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9SQU5ET01fUkFORE9NX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9nZW5fZXhjZXB0aW9uLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L3NlZWRfZ2VuX2V4Y2VwdGlvbi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDI3MWJhYWEwN2YwNzk2YWYxNGY0
NjU0OTJkOTFhZjFmNjBkMDJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3NlZWRf
Z2VuX2V4Y2VwdGlvbi5jYwpAQCAtMCwwICsxLDQ0IEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvcmFuZG9tL3NlZWRfZ2VuX2V4Y2Vw
dGlvbi5oIgorCisjaW5jbHVkZSA8aW9zdHJlYW0+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvY29u
ZmlnLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKKworc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
IGtFeGNlcHRpb25NZXNzYWdlW10gPQorICAgICJGYWlsZWQgZ2VuZXJhdGluZyBzZWVkLW1hdGVy
aWFsIGZvciBVUkJHLiI7CisKK1NlZWRHZW5FeGNlcHRpb246On5TZWVkR2VuRXhjZXB0aW9uKCkg
PSBkZWZhdWx0OworCitjb25zdCBjaGFyKiBTZWVkR2VuRXhjZXB0aW9uOjp3aGF0KCkgY29uc3Qg
bm9leGNlcHQgeworICByZXR1cm4ga0V4Y2VwdGlvbk1lc3NhZ2U7Cit9CisKK25hbWVzcGFjZSBy
YW5kb21faW50ZXJuYWwgeworCit2b2lkIFRocm93U2VlZEdlbkV4Y2VwdGlvbigpIHsKKyNpZmRl
ZiBBQlNMX0hBVkVfRVhDRVBUSU9OUworICB0aHJvdyBhYnNsOjpTZWVkR2VuRXhjZXB0aW9uKCk7
CisjZWxzZQorICBzdGQ6OmNlcnIgPDwga0V4Y2VwdGlvbk1lc3NhZ2UgPDwgc3RkOjplbmRsOwor
ICBzdGQ6OnRlcm1pbmF0ZSgpOworI2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZSByYW5kb21f
aW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20v
c2VlZF9nZW5fZXhjZXB0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9nZW5fZXhjZXB0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjQ2NGQ1MmZiOTU0ZGUzOGMwOGU0YjI1ODA3ODZjMjM5OTliZDQ1OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9zZWVkX2dlbl9leGNlcHRpb24uaApAQCAtMCww
ICsxLDUxIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogc2VlZF9nZW5fZXhjZXB0aW9uLmgKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyBhbiBleGNl
cHRpb24gY2xhc3Mgd2hpY2ggbWF5IGJlIHRocm93biBpZiB1bnByZWRpY3RhYmxlCisvLyBldmVu
dHMgcHJldmVudCB0aGUgZGVyaXZhdGlvbiBvZiBzdWl0YWJsZSBzZWVkLW1hdGVyaWFsIGZvciBj
b25zdHJ1Y3RpbmcgYQorLy8gYml0IGdlbmVyYXRvciBjb25mb3JtaW5nIHRvIFtyYW5kLnJlcS51
cm5nXSAoZWcuIGVudHJvcHkgY2Fubm90IGJlIHJlYWQgZnJvbQorLy8gL2Rldi91cmFuZG9tIG9u
IGEgVW5peC1iYXNlZCBzeXN0ZW0pLgorLy8KKy8vIE5vdGU6IGlmIGV4Y2VwdGlvbnMgYXJlIGRp
c2FibGVkLCBgc3RkOjp0ZXJtaW5hdGUoKWAgaXMgY2FsbGVkIGluc3RlYWQuCisKKyNpZm5kZWYg
QUJTTF9SQU5ET01fU0VFRF9HRU5fRVhDRVBUSU9OX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX1NF
RURfR0VOX0VYQ0VQVElPTl9IXworCisjaW5jbHVkZSA8ZXhjZXB0aW9uPgorCituYW1lc3BhY2Ug
YWJzbCB7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBTZWVkR2VuRXhjZXB0aW9uCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY2xhc3MgU2VlZEdlbkV4Y2VwdGlvbiA6IHB1YmxpYyBz
dGQ6OmV4Y2VwdGlvbiB7CisgcHVibGljOgorICBTZWVkR2VuRXhjZXB0aW9uKCkgPSBkZWZhdWx0
OworICB+U2VlZEdlbkV4Y2VwdGlvbigpIG92ZXJyaWRlOworICBjb25zdCBjaGFyKiB3aGF0KCkg
Y29uc3Qgbm9leGNlcHQgb3ZlcnJpZGU7Cit9OworCituYW1lc3BhY2UgcmFuZG9tX2ludGVybmFs
IHsKKworLy8gdGhyb3cgZGVsZWdhdG9yCitbW25vcmV0dXJuXV0gdm9pZCBUaHJvd1NlZWRHZW5F
eGNlcHRpb24oKTsKKworfSAgLy8gbmFtZXNwYWNlIHJhbmRvbV9pbnRlcm5hbAorfSAgLy8gbmFt
ZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JBTkRPTV9TRUVEX0dFTl9FWENFUFRJT05f
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9zZWVkX3NlcXVlbmNlcy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Jh
bmRvbS9zZWVkX3NlcXVlbmNlcy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjMxOTYxNTI4OWFlY2RiMGU2MzZm
MmQ2YjJkNWM0NjRhZDg4YTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3NlZWRf
c2VxdWVuY2VzLmNjCkBAIC0wLDAgKzEsMjcgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXMuaCIK
KworI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL3Bvb2xfdXJiZy5oIgorCituYW1lc3Bh
Y2UgYWJzbCB7CisKK1NlZWRTZXEgTWFrZVNlZWRTZXEoKSB7CisgIFNlZWRTZXE6OnJlc3VsdF90
eXBlIHNlZWRfbWF0ZXJpYWxbOF07CisgIHJhbmRvbV9pbnRlcm5hbDo6UmFuZGVuUG9vbDx1aW50
MzJfdD46OkZpbGwoYWJzbDo6TWFrZVNwYW4oc2VlZF9tYXRlcmlhbCkpOworICByZXR1cm4gU2Vl
ZFNlcShzdGQ6OmJlZ2luKHNlZWRfbWF0ZXJpYWwpLCBzdGQ6OmVuZChzZWVkX21hdGVyaWFsKSk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2Vl
ZF9zZXF1ZW5jZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS9zZWVkX3NlcXVlbmNlcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYzMWQxZWNkNGVhOWQ4NzIwYWUwOTU1YzVmNmRjOWMyMDg4ZGU5MzgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXMuaApAQCAtMCwwICsxLDEwOCBAQAorLy8g
Q29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vIEZpbGU6IHNlZWRfc2VxdWVuY2VzLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gVGhpcyBoZWFkZXIgY29udGFpbnMgdXRpbGl0aWVzIGZvciBjcmVhdGluZyBh
bmQgd29ya2luZyB3aXRoIHNlZWQgc2VxdWVuY2VzCisvLyBjb25mb3JtaW5nIHRvIFtyYW5kLnJl
cS5zZWVkc2VxXS4gSW4gZ2VuZXJhbCwgZGlyZWN0IGNvbnN0cnVjdGlvbiBvZiBzZWVkCisvLyBz
ZXF1ZW5jZXMgaXMgZGlzY291cmFnZWQsIGJ1dCB1c2UtY2FzZXMgZm9yIGNvbnN0cnVjdGlvbiBv
ZiBpZGVudGljYWwgYml0CisvLyBnZW5lcmF0b3JzICh1c2luZyB0aGUgc2FtZSBzZWVkIHNlcXVl
bmNlKSBtYXkgYmUgaGVscGZ1bCAoZS5nLiByZXBsYXlpbmcgYQorLy8gc2ltdWxhdGlvbiB3aG9z
ZSBzdGF0ZSBpcyBkZXJpdmVkIGZyb20gdmFyaWF0ZXMgb2YgYSBiaXQgZ2VuZXJhdG9yKS4KKwor
I2lmbmRlZiBBQlNMX1JBTkRPTV9TRUVEX1NFUVVFTkNFU19IXworI2RlZmluZSBBQlNMX1JBTkRP
TV9TRUVEX1NFUVVFTkNFU19IXworCisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8cmFu
ZG9tPgorCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2FsdGVkX3NlZWRfc2VxLmgi
CisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvc2VlZF9tYXRlcmlhbC5oIgorI2luY2x1
ZGUgImFic2wvcmFuZG9tL3NlZWRfZ2VuX2V4Y2VwdGlvbi5oIgorI2luY2x1ZGUgImFic2wvdHlw
ZXMvc3Bhbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyBhYnNsOjpTZWVkU2VxCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIGBhYnNs
OjpTZWVkU2VxYCBjb25zdHJ1Y3RzIGEgc2VlZCBzZXF1ZW5jZSBhY2NvcmRpbmcgdG8gW3JhbmQu
cmVxLnNlZWRzZXFdCisvLyBmb3IgdXNlIHdpdGhpbiBiaXQgZ2VuZXJhdG9ycy4gYGFic2w6OlNl
ZWRTZXFgLCB1bmxpa2UgYHN0ZDo6c2VlZF9zZXFgCisvLyBhZGRpdGlvbmFsbHkgc2FsdHMgdGhl
IGdlbmVyYXRlZCBzZWVkcyB3aXRoIGV4dHJhIGltcGxlbWVudGF0aW9uLWRlZmluZWQKKy8vIGVu
dHJvcHkuIEZvciB0aGF0IHJlYXNvbiwgeW91IGNhbiB1c2UgYGFic2w6OlNlZWRTZXFgIGluIGNv
bWJpbmF0aW9uIHdpdGgKKy8vIHN0YW5kYXJkIGxpYnJhcnkgYml0IGdlbmVyYXRvcnMgKGUuZy4g
YHN0ZDo6bXQxOTkzN2ApIHRvIGludHJvZHVjZQorLy8gbm9uLWRldGVybWluaXNtIGluIHlvdXIg
c2VlZHMuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OlNlZWRTZXEgbXlfc2VlZF9z
ZXEoe2EsIGIsIGN9KTsKKy8vICAgc3RkOjptdDE5OTM3IG15X2JpdGdlbihteV9zZWVkX3NlcSk7
CisvLwordXNpbmcgU2VlZFNlcSA9IHJhbmRvbV9pbnRlcm5hbDo6U2FsdGVkU2VlZFNlcTxzdGQ6
OnNlZWRfc2VxPjsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6OkNyZWF0ZVNl
ZWRTZXFGcm9tKGJpdGdlbiopCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIENvbnN0
cnVjdHMgYSBzZWVkIHNlcXVlbmNlIGNvbmZvcm1pbmcgdG8gW3JhbmQucmVxLnNlZWRzZXFdIHVz
aW5nIHZhcmlhdGVzCisvLyBwcm9kdWNlZCBieSBhIHByb3ZpZGVkIGJpdCBnZW5lcmF0b3IuCisv
LworLy8gWW91IHNob3VsZCBnZW5lcmFsbHkgYXZvaWQgZGlyZWN0IGNvbnN0cnVjdGlvbiBvZiBz
ZWVkIHNlcXVlbmNlcywgYnV0CisvLyB1c2UtY2FzZXMgZm9yIHJldXNlIG9mIGEgc2VlZCBzZXF1
ZW5jZSB0byBjb25zdHJ1Y3QgaWRlbnRpY2FsIGJpdCBnZW5lcmF0b3JzCisvLyBtYXkgYmUgaGVs
cGZ1bCAoZWcuIHJlcGxheWluZyBhIHNpbXVsYXRpb24gd2hvc2Ugc3RhdGUgaXMgZGVyaXZlZCBm
cm9tIGJpdAorLy8gZ2VuZXJhdG9yIHZhbHVlcykuCisvLworLy8gSWYgYml0Z2VuID09IG51bGxw
dHIsIHRoZW4gYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8g
ICBhYnNsOjpCaXRHZW4gbXlfYml0Z2VuOworLy8gICBhdXRvIHNlZWRfc2VxID0gYWJzbDo6Q3Jl
YXRlU2VlZFNlcUZyb20oJm15X2JpdGdlbik7CisvLyAgIGFic2w6OkJpdEdlbiBuZXdfZW5naW5l
KHNlZWRfc2VxKTsgLy8gZGVyaXZlZCBmcm9tIG15X2JpdGdlbiwgYnV0IG5vdAorLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0ZWQuCisvLwordGVtcGxh
dGUgPHR5cGVuYW1lIFVSQkc+CitTZWVkU2VxIENyZWF0ZVNlZWRTZXFGcm9tKFVSQkcqIHVyYmcp
IHsKKyAgU2VlZFNlcTo6cmVzdWx0X3R5cGUKKyAgICAgIHNlZWRfbWF0ZXJpYWxbcmFuZG9tX2lu
dGVybmFsOjprRW50cm9weUJsb2Nrc05lZWRlZF07CisKKyAgaWYgKCFyYW5kb21faW50ZXJuYWw6
OlJlYWRTZWVkTWF0ZXJpYWxGcm9tVVJCRygKKyAgICAgICAgICB1cmJnLCBhYnNsOjpNYWtlU3Bh
bihzZWVkX21hdGVyaWFsKSkpIHsKKyAgICByYW5kb21faW50ZXJuYWw6OlRocm93U2VlZEdlbkV4
Y2VwdGlvbigpOworICB9CisgIHJldHVybiBTZWVkU2VxKHN0ZDo6YmVnaW4oc2VlZF9tYXRlcmlh
bCksIHN0ZDo6ZW5kKHNlZWRfbWF0ZXJpYWwpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vIGFic2w6Ok1ha2VTZWVkU2VxKCkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gQ29uc3RydWN0cyBhbiBgYWJzbDo6U2VlZFNlcWAgc2FsdGluZyB0aGUgZ2VuZXJhdGVkIHZh
bHVlcyB1c2luZworLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZCBlbnRyb3B5LiBUaGUgcmV0dXJu
ZWQgc2VxdWVuY2UgY2FuIGJlIHVzZWQgdG8gY3JlYXRlCisvLyBlcXVpdmFsZW50IGJpdCBnZW5l
cmF0b3JzIGNvcnJlbGF0ZWQgdXNpbmcgdGhpcyBzZXF1ZW5jZS4KKy8vCisvLyBFeGFtcGxlOgor
Ly8KKy8vICAgYXV0byBteV9zZWVkX3NlcSA9IGFic2w6Ok1ha2VTZWVkU2VxKCk7CisvLyAgIHN0
ZDo6bXQxOTkzNyBybmcxKG15X3NlZWRfc2VxKTsKKy8vICAgc3RkOjptdDE5OTM3IHJuZzIobXlf
c2VlZF9zZXEpOworLy8gICBFWFBFQ1RfRVEocm5nMSgpLCBybmcyKCkpOworLy8KK1NlZWRTZXEg
TWFrZVNlZWRTZXEoKTsKKworfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNM
X1JBTkRPTV9TRUVEX1NFUVVFTkNFU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3NlZWRf
c2VxdWVuY2VzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXNfdGVzdC5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yY2M4YjBlNmYyYjdiYzM3MzNhY2EyMmE2YmI5NWNmNTQwMTFhYzA1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3NlZWRfc2VxdWVuY2VzX3Rlc3QuY2MKQEAgLTAs
MCArMSwxMjcgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisj
aW5jbHVkZSAiYWJzbC9yYW5kb20vc2VlZF9zZXF1ZW5jZXMuaCIKKworI2luY2x1ZGUgPGl0ZXJh
dG9yPgorI2luY2x1ZGUgPHJhbmRvbT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9ub25z
ZWN1cmVfYmFzZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3JhbmRvbS5oIgorbmFtZXNwYWNl
IHsKKworVEVTVChTZWVkU2VxdWVuY2VzLCBFeGFtcGxlcykgeworICB7CisgICAgYWJzbDo6U2Vl
ZFNlcSBzZWVkX3NlcSh7MSwgMiwgM30pOworICAgIGFic2w6OkJpdEdlbiBiaXRnZW4oc2VlZF9z
ZXEpOworCisgICAgRVhQRUNUX05FKDAsIGJpdGdlbigpKTsKKyAgfQorICB7CisgICAgYWJzbDo6
Qml0R2VuIGVuZ2luZTsKKyAgICBhdXRvIHNlZWRfc2VxID0gYWJzbDo6Q3JlYXRlU2VlZFNlcUZy
b20oJmVuZ2luZSk7CisgICAgYWJzbDo6Qml0R2VuIGJpdGdlbihzZWVkX3NlcSk7CisKKyAgICBF
WFBFQ1RfTkUoZW5naW5lKCksIGJpdGdlbigpKTsKKyAgfQorICB7CisgICAgYXV0byBzZWVkX3Nl
cSA9IGFic2w6Ok1ha2VTZWVkU2VxKCk7CisgICAgc3RkOjptdDE5OTM3IHJhbmRvbShzZWVkX3Nl
cSk7CisKKyAgICBFWFBFQ1RfTkUoMCwgcmFuZG9tKCkpOworICB9Cit9CisKK1RFU1QoQ3JlYXRl
U2VlZFNlcUZyb20sIENvbXBhdGlibGVXaXRoU3RkVHlwZXMpIHsKKyAgdXNpbmcgRXhhbXBsZU5v
bnNlY3VyZVVSQkcgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpOb25zZWN1cmVVUkJH
QmFzZTxzdGQ6Om1pbnN0ZF9yYW5kMD47CisKKyAgLy8gQ29uc3RydWN0IGEgVVJCRyBpbnN0YW5j
ZS4KKyAgRXhhbXBsZU5vbnNlY3VyZVVSQkcgcm5nOworCisgIC8vIENvbnN0cnVjdCBhIFNlZWQg
U2VxdWVuY2UgZnJvbSBpdHMgdmFyaWF0ZXMuCisgIGF1dG8gc2VxX2Zyb21fcm5nID0gYWJzbDo6
Q3JlYXRlU2VlZFNlcUZyb20oJnJuZyk7CisKKyAgLy8gRW5zdXJlIHRoYXQgYW5vdGhlciBVUkJH
IGNhbiBiZSB2YWxpZGx5IGNvbnN0cnVjdGVkIGZyb20gdGhlIFNlZWQgU2VxdWVuY2UuCisgIHN0
ZDo6bXQxOTkzN182NHtzZXFfZnJvbV9ybmd9OworfQorCitURVNUKENyZWF0ZVNlZWRTZXFGcm9t
LCBDb21wYXRpYmxlV2l0aEJpdEdlbmVyYXRvcikgeworICAvLyBDb25zdHJ1Y3QgYSBVUkJHIGlu
c3RhbmNlLgorICBhYnNsOjpCaXRHZW4gcm5nOworCisgIC8vIENvbnN0cnVjdCBhIFNlZWQgU2Vx
dWVuY2UgZnJvbSBpdHMgdmFyaWF0ZXMuCisgIGF1dG8gc2VxX2Zyb21fcm5nID0gYWJzbDo6Q3Jl
YXRlU2VlZFNlcUZyb20oJnJuZyk7CisKKyAgLy8gRW5zdXJlIHRoYXQgYW5vdGhlciBVUkJHIGNh
biBiZSB2YWxpZGx5IGNvbnN0cnVjdGVkIGZyb20gdGhlIFNlZWQgU2VxdWVuY2UuCisgIHN0ZDo6
bXQxOTkzN182NHtzZXFfZnJvbV9ybmd9OworfQorCitURVNUKENyZWF0ZVNlZWRTZXFGcm9tLCBD
b21wYXRpYmxlV2l0aEluc2VjdXJlQml0R2VuKSB7CisgIC8vIENvbnN0cnVjdCBhIFVSQkcgaW5z
dGFuY2UuCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZzsKKworICAvLyBDb25zdHJ1Y3QgYSBT
ZWVkIFNlcXVlbmNlIGZyb20gaXRzIHZhcmlhdGVzLgorICBhdXRvIHNlcV9mcm9tX3JuZyA9IGFi
c2w6OkNyZWF0ZVNlZWRTZXFGcm9tKCZybmcpOworCisgIC8vIEVuc3VyZSB0aGF0IGFub3RoZXIg
VVJCRyBjYW4gYmUgdmFsaWRseSBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBTZWVkIFNlcXVlbmNlLgor
ICBzdGQ6Om10MTk5MzdfNjR7c2VxX2Zyb21fcm5nfTsKK30KKworVEVTVChDcmVhdGVTZWVkU2Vx
RnJvbSwgQ29tcGF0aWJsZVdpdGhSYXdVUkJHKSB7CisgIC8vIENvbnN0cnVjdCBhIFVSQkcgaW5z
dGFuY2UuCisgIHN0ZDo6cmFuZG9tX2RldmljZSB1cmFuZG9tOworCisgIC8vIENvbnN0cnVjdCBh
IFNlZWQgU2VxdWVuY2UgZnJvbSBpdHMgdmFyaWF0ZXMsIHVzaW5nIDY0YiBvZiBzZWVkLW1hdGVy
aWFsLgorICBhdXRvIHNlcV9mcm9tX3JuZyA9IGFic2w6OkNyZWF0ZVNlZWRTZXFGcm9tKCZ1cmFu
ZG9tKTsKKworICAvLyBFbnN1cmUgdGhhdCBhbm90aGVyIFVSQkcgY2FuIGJlIHZhbGlkbHkgY29u
c3RydWN0ZWQgZnJvbSB0aGUgU2VlZCBTZXF1ZW5jZS4KKyAgc3RkOjptdDE5OTM3XzY0e3NlcV9m
cm9tX3JuZ307Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordm9pZCBUZXN0UmVwcm9k
dWNpYmxlVmFyaWF0ZVNlcXVlbmNlc0Zvck5vbnNlY3VyZVVSQkcoKSB7CisgIGNvbnN0IHNpemVf
dCBrTnVtVmFyaWF0ZXMgPSAxMDAwOworCisgIC8vIE1hc3RlciBSTkcgaW5zdGFuY2UuCisgIFVS
Qkcgcm5nOworICAvLyBSZXVzZWQgZm9yIGJvdGggUk5HIGluc3RhbmNlcy4KKyAgYXV0byByZXVz
YWJsZV9zZWVkID0gYWJzbDo6Q3JlYXRlU2VlZFNlcUZyb20oJnJuZyk7CisKKyAgdHlwZW5hbWUg
VVJCRzo6cmVzdWx0X3R5cGUgdmFyaWF0ZXNba051bVZhcmlhdGVzXTsKKyAgeworICAgIFVSQkcg
Y2hpbGQocmV1c2FibGVfc2VlZCk7CisgICAgZm9yIChhdXRvJiB2YXJpYXRlIDogdmFyaWF0ZXMp
IHsKKyAgICAgIHZhcmlhdGUgPSBjaGlsZCgpOworICAgIH0KKyAgfQorICAvLyBFbnN1cmUgdGhh
dCB2YXJpYXRlLXNlcXVlbmNlIGNhbiBiZSAicmVwbGF5ZWQiIGJ5IGlkZW50aWNhbCBSTkcuCisg
IHsKKyAgICBVUkJHIGNoaWxkKHJldXNhYmxlX3NlZWQpOworICAgIGZvciAoYXV0byYgdmFyaWF0
ZSA6IHZhcmlhdGVzKSB7CisgICAgICBBU1NFUlRfRVEodmFyaWF0ZSwgY2hpbGQoKSk7CisgICAg
fQorICB9Cit9CisKK1RFU1QoQ3JlYXRlU2VlZFNlcUZyb20sIFJlcHJvZHVjZXNWYXJpYXRlU2Vx
dWVuY2VzRm9ySW5zZWN1cmVCaXRHZW4pIHsKKyAgVGVzdFJlcHJvZHVjaWJsZVZhcmlhdGVTZXF1
ZW5jZXNGb3JOb25zZWN1cmVVUkJHPGFic2w6Okluc2VjdXJlQml0R2VuPigpOworfQorCitURVNU
KENyZWF0ZVNlZWRTZXFGcm9tLCBSZXByb2R1Y2VzVmFyaWF0ZVNlcXVlbmNlc0ZvckJpdEdlbmVy
YXRvcikgeworICBUZXN0UmVwcm9kdWNpYmxlVmFyaWF0ZVNlcXVlbmNlc0Zvck5vbnNlY3VyZVVS
Qkc8YWJzbDo6Qml0R2VuPigpOworfQorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vdW5pZm9y
bV9pbnRfZGlzdHJpYnV0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk3MDQ4NmE1NjFhMTQwYzk3NDdjYTY3
MmMzMTM3YTc3NjllNjJiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3Jt
X2ludF9kaXN0cmlidXRpb24uaApAQCAtMCwwICsxLDI3MyBAQAorLy8gQ29weXJpZ2h0IDIwMTcg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZp
bGU6IHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbi5oCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIFRoaXMgaGVhZGVyIGRlZmluZXMgYSBjbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEgdW5p
Zm9ybSBpbnRlZ2VyIGRpc3RyaWJ1dGlvbgorLy8gb3ZlciB0aGUgY2xvc2VkIChpbmNsdXNpdmUp
IGludGVydmFsIFthLGJdLiBZb3UgdXNlIHRoaXMgZGlzdHJpYnV0aW9uIGluCisvLyBjb21iaW5h
dGlvbiB3aXRoIGFuIEFic2VpbCByYW5kb20gYml0IGdlbmVyYXRvciB0byBwcm9kdWNlIHJhbmRv
bSB2YWx1ZXMKKy8vIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGRpc3RyaWJ1dGlvbi4K
Ky8vCisvLyBgYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uYCBpcyBhIGRyb3AtaW4gcmVw
bGFjZW1lbnQgZm9yIHRoZSBDKysxMQorLy8gYHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9u
YCBbcmFuZC5kaXN0LnVuaS5pbnRdIGJ1dCBpcyBjb25zaWRlcmFibHkKKy8vIGZhc3RlciB0aGFu
IHRoZSBsaWJzdGRjKysgaW1wbGVtZW50YXRpb24uCisKKyNpZm5kZWYgQUJTTF9SQU5ET01fVU5J
Rk9STV9JTlRfRElTVFJJQlVUSU9OX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX1VOSUZPUk1fSU5U
X0RJU1RSSUJVVElPTl9IXworCisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxpc3RyZWFt
PgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUg
ImFic2wvYmFzZS9vcHRpbWl6YXRpb24uaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5h
bC9kaXN0cmlidXRpb25faW1wbC5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2Zh
c3RfdW5pZm9ybV9iaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwvaW9zdHJl
YW1fc3RhdGVfc2F2ZXIuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC90cmFpdHMu
aCIKKworbmFtZXNwYWNlIGFic2wgeworCisvLyBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRp
b248VD4KKy8vCisvLyBUaGlzIGRpc3RyaWJ1dGlvbiBwcm9kdWNlcyByYW5kb20gaW50ZWdlciB2
YWx1ZXMgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGluIHRoZQorLy8gY2xvc2VkIChpbmNsdXNpdmUp
IGludGVydmFsIFthLCBiXS4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Qml0R2Vu
IGdlbjsKKy8vCisvLyAgIC8vIFVzZSB0aGUgZGlzdHJpYnV0aW9uIHRvIHByb2R1Y2UgYSB2YWx1
ZSBiZXR3ZWVuIDEgYW5kIDYsIGluY2x1c2l2ZS4KKy8vICAgaW50IGRpZV9yb2xsID0gYWJzbDo6
dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludD4oMSwgNikoZ2VuKTsKKy8vCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSW50VHlwZSA9IGludD4KK2NsYXNzIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiB7
CisgcHJpdmF0ZToKKyAgdXNpbmcgdW5zaWduZWRfdHlwZSA9CisgICAgICB0eXBlbmFtZSByYW5k
b21faW50ZXJuYWw6Om1ha2VfdW5zaWduZWRfYml0czxJbnRUeXBlPjo6dHlwZTsKKworIHB1Ymxp
YzoKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSBJbnRUeXBlOworCisgIGNsYXNzIHBhcmFtX3R5cGUg
eworICAgcHVibGljOgorICAgIHVzaW5nIGRpc3RyaWJ1dGlvbl90eXBlID0gdW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uOworCisgICAgZXhwbGljaXQgcGFyYW1fdHlwZSgKKyAgICAgICAgcmVzdWx0
X3R5cGUgbG8gPSAwLAorICAgICAgICByZXN1bHRfdHlwZSBoaSA9IChzdGQ6Om51bWVyaWNfbGlt
aXRzPHJlc3VsdF90eXBlPjo6bWF4KSgpKQorICAgICAgICA6IGxvXyhsbyksCisgICAgICAgICAg
cmFuZ2VfKHN0YXRpY19jYXN0PHVuc2lnbmVkX3R5cGU+KGhpKSAtCisgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkX3R5cGU+KGxvKSkgeworICAgICAgLy8gW3JhbmQuZGlzdC51
bmkuaW50XSBwcmVjb25kaXRpb24gMgorICAgICAgYXNzZXJ0KGxvIDw9IGhpKTsKKyAgICB9CisK
KyAgICByZXN1bHRfdHlwZSBhKCkgY29uc3QgeyByZXR1cm4gbG9fOyB9CisgICAgcmVzdWx0X3R5
cGUgYigpIGNvbnN0IHsKKyAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oc3Rh
dGljX2Nhc3Q8dW5zaWduZWRfdHlwZT4obG9fKSArIHJhbmdlXyk7CisgICAgfQorCisgICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBhLCBjb25zdCBwYXJhbV90eXBl
JiBiKSB7CisgICAgICByZXR1cm4gYS5sb18gPT0gYi5sb18gJiYgYS5yYW5nZV8gPT0gYi5yYW5n
ZV87CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXJhbV90eXBl
JiBhLCBjb25zdCBwYXJhbV90eXBlJiBiKSB7CisgICAgICByZXR1cm4gIShhID09IGIpOworICAg
IH0KKworICAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgdW5pZm9ybV9pbnRfZGlzdHJpYnV0
aW9uOworICAgIHVuc2lnbmVkX3R5cGUgcmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZV87IH0K
KworICAgIHJlc3VsdF90eXBlIGxvXzsKKyAgICB1bnNpZ25lZF90eXBlIHJhbmdlXzsKKworICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxyZXN1bHRfdHlwZT46OnZhbHVlLAorICAg
ICAgICAgICAgICAgICAgIkNsYXNzLXRlbXBsYXRlIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1
dGlvbjw+IG11c3QgYmUgIgorICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcml6ZWQgdXNpbmcg
YW4gaW50ZWdyYWwgdHlwZS4iKTsKKyAgfTsgIC8vIHBhcmFtX3R5cGUKKworICB1bmlmb3JtX2lu
dF9kaXN0cmlidXRpb24oKSA6IHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbigwKSB7fQorCisgIGV4
cGxpY2l0IHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbigKKyAgICAgIHJlc3VsdF90eXBlIGxvLAor
ICAgICAgcmVzdWx0X3R5cGUgaGkgPSAoc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46
Om1heCkoKSkKKyAgICAgIDogcGFyYW1fKGxvLCBoaSkge30KKworICBleHBsaWNpdCB1bmlmb3Jt
X2ludF9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgcGFyYW0pIDogcGFyYW1fKHBhcmFt
KSB7fQorCisgIC8vIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUPjo6cmVzZXQoKQorICAvLwor
ICAvLyBSZXNldHMgdGhlIHVuaWZvcm0gaW50IGRpc3RyaWJ1dGlvbi4gTm90ZSB0aGF0IHRoaXMg
ZnVuY3Rpb24gaGFzIG5vIGVmZmVjdAorICAvLyBiZWNhdXNlIHRoZSBkaXN0cmlidXRpb24gYWxy
ZWFkeSBwcm9kdWNlcyBpbmRlcGVuZGVudCB2YWx1ZXMuCisgIHZvaWQgcmVzZXQoKSB7fQorCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFVSQkcm
IGdlbikgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICByZXR1cm4gKCp0aGlz
KShnZW4sIHBhcmFtKCkpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVSQkc+CisgIHJl
c3VsdF90eXBlIG9wZXJhdG9yKCkoCisgICAgICBVUkJHJiBnZW4sIGNvbnN0IHBhcmFtX3R5cGUm
IHBhcmFtKSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHJldHVybiBwYXJh
bS5hKCkgKyBHZW5lcmF0ZShnZW4sIHBhcmFtLnJhbmdlKCkpOworICB9CisKKyAgcmVzdWx0X3R5
cGUgYSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXy5hKCk7IH0KKyAgcmVzdWx0X3R5cGUgYigpIGNv
bnN0IHsgcmV0dXJuIHBhcmFtXy5iKCk7IH0KKworICBwYXJhbV90eXBlIHBhcmFtKCkgY29uc3Qg
eyByZXR1cm4gcGFyYW1fOyB9CisgIHZvaWQgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgcGFyYW1z
KSB7IHBhcmFtXyA9IHBhcmFtczsgfQorCisgIHJlc3VsdF90eXBlKG1pbikoKSBjb25zdCB7IHJl
dHVybiBhKCk7IH0KKyAgcmVzdWx0X3R5cGUobWF4KSgpIGNvbnN0IHsgcmV0dXJuIGIoKTsgfQor
CisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9u
JiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaWZvcm1faW50X2Rpc3RyaWJ1
dGlvbiYgYikgeworICAgIHJldHVybiBhLnBhcmFtXyA9PSBiLnBhcmFtXzsKKyAgfQorICBmcmll
bmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiYgYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlmb3JtX2ludF9kaXN0cmlidXRpb24mIGIp
IHsKKyAgICByZXR1cm4gIShhID09IGIpOworICB9CisKKyBwcml2YXRlOgorICAvLyBHZW5lcmF0
ZXMgYSB2YWx1ZSBpbiB0aGUgKmNsb3NlZCogaW50ZXJ2YWwgWzAsIFJdCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBVUkJHPgorICB1bnNpZ25lZF90eXBlIEdlbmVyYXRlKFVSQkcmIGcsICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
X3R5cGUgUik7CisgIHBhcmFtX3R5cGUgcGFyYW1fOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbHMgZm9sbG93CisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEludFR5cGU+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9wZXJhdG9y
PDwoCisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcywKKyAgICBjb25z
dCB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248SW50VHlwZT4mIHgpIHsKKyAgdXNpbmcgc3RyZWFt
X3R5cGUgPQorICAgICAgdHlwZW5hbWUgcmFuZG9tX2ludGVybmFsOjpzdHJlYW1fZm9ybWF0X3R5
cGU8SW50VHlwZT46OnR5cGU7CisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2Vf
b3N0cmVhbV9zdGF0ZV9zYXZlcihvcyk7CisgIG9zIDw8IHN0YXRpY19jYXN0PHN0cmVhbV90eXBl
Pih4LmEoKSkgPDwgb3MuZmlsbCgpCisgICAgIDw8IHN0YXRpY19jYXN0PHN0cmVhbV90eXBlPih4
LmIoKSk7CisgIHJldHVybiBvczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEludFR5cGU+CitzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQs
IFRyYWl0cz4mIG9wZXJhdG9yPj4oCisgICAgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFp
dHM+JiBpcywKKyAgICB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248SW50VHlwZT4mIHgpIHsKKyAg
dXNpbmcgcGFyYW1fdHlwZSA9IHR5cGVuYW1lIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxJbnRU
eXBlPjo6cGFyYW1fdHlwZTsKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSB1bmlmb3Jt
X2ludF9kaXN0cmlidXRpb248SW50VHlwZT46OnJlc3VsdF90eXBlOworICB1c2luZyBzdHJlYW1f
dHlwZSA9CisgICAgICB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OnN0cmVhbV9mb3JtYXRfdHlw
ZTxJbnRUeXBlPjo6dHlwZTsKKworICBzdHJlYW1fdHlwZSBhOworICBzdHJlYW1fdHlwZSBiOwor
CisgIGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2VfaXN0cmVhbV9zdGF0ZV9zYXZl
cihpcyk7CisgIGlzID4+IGEgPj4gYjsKKyAgaWYgKCFpcy5mYWlsKCkpIHsKKyAgICB4LnBhcmFt
KAorICAgICAgICBwYXJhbV90eXBlKHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPihhKSwgc3RhdGlj
X2Nhc3Q8cmVzdWx0X3R5cGU+KGIpKSk7CisgIH0KKyAgcmV0dXJuIGlzOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgSW50VHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgordHlwZW5hbWUg
cmFuZG9tX2ludGVybmFsOjptYWtlX3Vuc2lnbmVkX2JpdHM8SW50VHlwZT46OnR5cGUKK3VuaWZv
cm1faW50X2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6R2VuZXJhdGUoCisgICAgVVJCRyYgZywgIC8v
IE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgdHlwZW5hbWUgcmFuZG9tX2ludGVybmFs
OjptYWtlX3Vuc2lnbmVkX2JpdHM8SW50VHlwZT46OnR5cGUgUikgeworICAgIHJhbmRvbV9pbnRl
cm5hbDo6RmFzdFVuaWZvcm1CaXRzPHVuc2lnbmVkX3R5cGU+IGZhc3RfYml0czsKKyAgdW5zaWdu
ZWRfdHlwZSBiaXRzID0gZmFzdF9iaXRzKGcpOworICBjb25zdCB1bnNpZ25lZF90eXBlIExpbSA9
IFIgKyAxOworICBpZiAoKFIgJiBMaW0pID09IDApIHsKKyAgICAvLyBJZiB0aGUgaW50ZXJ2YWwn
cyBsZW5ndGggaXMgYSBwb3dlciBvZiB0d28gcmFuZ2UsIGp1c3QgdGFrZSB0aGUgbG93IGJpdHMu
CisgICAgcmV0dXJuIGJpdHMgJiBSOworICB9CisKKyAgLy8gR2VuZXJhdGVzIGEgdW5pZm9ybSB2
YXJpYXRlIG9uIFswLCBMaW0pIHVzaW5nIGZpeGVkLXBvaW50IG11bHRpcGxpY2F0aW9uLgorICAv
LyBUaGUgYWJvdmUgZmFzdC1wYXRoIGd1YXJhbnRlZXMgdGhhdCBMaW0gaXMgcmVwcmVzZW50YWJs
ZSBpbiB1bnNpZ25lZF90eXBlLgorICAvLworICAvLyBBbGdvcml0aG0gYWRhcHRlZCBmcm9tCisg
IC8vIGh0dHA6Ly9sZW1pcmUubWUvYmxvZy8yMDE2LzA2LzMwL2Zhc3QtcmFuZG9tLXNodWZmbGlu
Zy8sIHdpdGggYWRkZWQKKyAgLy8gZXhwbGFuYXRpb24uCisgIC8vCisgIC8vIFRoZSBhbGdvcml0
aG0gY3JlYXRlcyBhIHVuaWZvcm0gdmFyaWF0ZSBgYml0c2AgaW4gdGhlIGludGVydmFsIFswLCAy
Xk4pLAorICAvLyBhbmQgdHJlYXRzIGl0IGFzIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgYSBmaXhl
ZC1wb2ludCByZWFsIHZhbHVlIGluIFswLCAxKSwKKyAgLy8gbXVsdGlwbGllZCBieSAyXk4uICBG
b3IgZXhhbXBsZSwgMC4yNSB3b3VsZCBiZSByZXByZXNlbnRlZCBhcyAyXihOIC0gMiksCisgIC8v
IGJlY2F1c2UgMl5OICogMC4yNSA9PSAyXihOIC0gMikuCisgIC8vCisgIC8vIE5leHQsIGBiaXRz
YCBhbmQgYExpbWAgYXJlIG11bHRpcGxpZWQgd2l0aCBhIHdpZGUtbXVsdGlwbHkgdG8gYnJpbmcg
dGhlCisgIC8vIHZhbHVlIGludG8gdGhlIHJhbmdlIFswLCBMaW0pLiAgVGhlIGludGVncmFsIHBh
cnQgKHRoZSBoaWdoIHdvcmQgb2YgdGhlCisgIC8vIG11bHRpcGxpY2F0aW9uIHJlc3VsdCkgaXMg
dGhlbiB2ZXJ5IG5lYXJseSB0aGUgZGVzaXJlZCByZXN1bHQuICBIb3dldmVyLAorICAvLyB0aGlz
IGlzIG5vdCBxdWl0ZSBhY2N1cmF0ZTsgdmlld2luZyB0aGUgbXVsdGlwbGljYXRpb24gcmVzdWx0
IGFzIG9uZQorICAvLyBkb3VibGUtd2lkdGggaW50ZWdlciwgdGhlIHJlc3VsdGluZyB2YWx1ZXMg
Zm9yIHRoZSBzYW1wbGUgYXJlIG1hcHBlZCBhcworICAvLyBmb2xsb3dzOgorICAvLworICAvLyBJ
ZiB0aGUgcmVzdWx0IGxpZXMgaW4gdGhpcyBpbnRlcnZhbDogICAgICAgUmV0dXJuIHRoaXMgdmFs
dWU6CisgIC8vICAgICAgICBbMCwgMl5OKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAKKyAgLy8gICAgICAgIFsyXk4sIDIgKiAyXk4pICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQorICAvLyAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgLy8gICAgICAgIFtLICogMl5OLCAoSyArIDEpICogMl5OKSAgICAgICAg
ICAgICAgICAgICAgSworICAvLyAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAuLi4KKyAgLy8gICAgICAgIFsoTGltIC0gMSkgKiAyXk4sIExpbSAqIDJe
TikgICAgICAgICAgICAgICAgTGltIC0gMQorICAvLworICAvLyBXaGlsZSBhbGwgb2YgdGhlc2Ug
aW50ZXJ2YWxzIGhhdmUgdGhlIHNhbWUgc2l6ZSwgdGhlIHJlc3VsdCBvZiBgYml0cyAqIExpbWAK
KyAgLy8gbXVzdCBiZSBhIG11bHRpcGxlIG9mIGBMaW1gLCBhbmQgbm90IGFsbCBvZiB0aGVzZSBp
bnRlcnZhbHMgY29udGFpbiB0aGUKKyAgLy8gc2FtZSBudW1iZXIgb2YgbXVsdGlwbGVzIG9mIGBM
aW1gLiAgSW4gcGFydGljdWxhciwgc29tZSBjb250YWluCisgIC8vIGBGID0gZmxvb3IoMl5OIC8g
TGltKWAgYW5kIHNvbWUgY29udGFpbiBgRiArIDEgPSBjZWlsKDJeTiAvIExpbSlgLiAgVGhpcwor
ICAvLyBkaWZmZXJlbmNlIHByb2R1Y2VzIGEgc21hbGwgbm9udW5pZm9ybWl0eSwgd2hpY2ggaXMg
Y29ycmVjdGVkIGJ5IGFwcGx5aW5nCisgIC8vIHJlamVjdGlvbiBzYW1wbGluZyB0byBvbmUgb2Yg
dGhlIHZhbHVlcyBpbiB0aGUgImxhcmdlciBpbnRlcnZhbHMiIChpLmUuLAorICAvLyB0aGUgaW50
ZXJ2YWxzIGNvbnRhaW5pbmcgYEYgKyAxYCBtdWx0aXBsZXMgb2YgYExpbWAuCisgIC8vCisgIC8v
IEFuIGludGVydmFsIGNvbnRhaW5zIGBGICsgMWAgbXVsdGlwbGVzIG9mIGBMaW1gIGlmIGFuZCBv
bmx5IGlmIGl0cyBzbWFsbGVzdAorICAvLyB2YWx1ZSBtb2R1bG8gMl5OIGlzIGxlc3MgdGhhbiBg
Ml5OICUgTGltYC4gIFRoZSB1bmlxdWUgdmFsdWUgc2F0aXNmeWluZworICAvLyB0aGlzIHByb3Bl
cnR5IGlzIHVzZWQgYXMgdGhlIG9uZSBmb3IgcmVqZWN0aW9uLiAgVGhhdCBpcywgYSB2YWx1ZSBv
ZgorICAvLyBgYml0cyAqIExpbWAgaXMgcmVqZWN0ZWQgaWYgYChiaXQgKiBMaW0pICUgMl5OIDwg
KDJeTiAlIExpbSlgLgorCisgIHVzaW5nIGhlbHBlciA9IHJhbmRvbV9pbnRlcm5hbDo6d2lkZV9t
dWx0aXBseTx1bnNpZ25lZF90eXBlPjsKKyAgYXV0byBwcm9kdWN0ID0gaGVscGVyOjptdWx0aXBs
eShiaXRzLCBMaW0pOworCisgIC8vIFR3byBvcHRpbWl6YXRpb25zIGhlcmU6CisgIC8vICogUmVq
ZWN0aW9uIG9jY3VycyB3aXRoIHNvbWUgcHJvYmFiaWxpdHkgbGVzcyB0aGFuIDEvMiwgYW5kIGZv
ciByZWFzb25hYmxlCisgIC8vICAgcmFuZ2VzIGNvbnNpZGVyYWJseSBsZXNzIChpbiBwYXJ0aWN1
bGFyLCBsZXNzIHRoYW4gMS8oRisxKSksIHNvCisgIC8vICAgQUJTTF9QUkVESUNUX0ZBTFNFIGlz
IGFwdC4KKyAgLy8gKiBgTGltYCBpcyBhbiBvdmVyZXN0aW1hdGUgb2YgYHRocmVzaG9sZGAsIGFu
ZCBkb2Vzbid0IHJlcXVpcmUgYSBkaXZpZGUuCisgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoaGVs
cGVyOjpsbyhwcm9kdWN0KSA8IExpbSkpIHsKKyAgICAvLyBUaGlzIHF1YW50aXR5IGlzIGV4YWN0
bHkgZXF1YWwgdG8gYDJeTiAlIExpbWAsIGJ1dCBkb2VzIG5vdCByZXF1aXJlIGhpZ2gKKyAgICAv
LyBwcmVjaXNpb24gY2FsY3VsYXRpb25zOiBgMl5OICUgTGltYCBpcyBjb25ncnVlbnQgdG8gYCgy
Xk4gLSBMaW0pICUgTGltYC4KKyAgICAvLyBJZGVhbGx5IHRoaXMgY291bGQgYmUgZXhwcmVzc2Vk
IHNpbXBseSBhcyBgLVhgIHJhdGhlciB0aGFuIGAyXk4gLSBYYCwgYnV0CisgICAgLy8gZm9yIHR5
cGVzIHNtYWxsZXIgdGhhbiBpbnQsIHRoaXMgY2FsY3VsYXRpb24gaXMgaW5jb3JyZWN0IGR1ZSB0
byBpbnRlZ2VyCisgICAgLy8gcHJvbW90aW9uIHJ1bGVzLgorICAgIGNvbnN0IHVuc2lnbmVkX3R5
cGUgdGhyZXNob2xkID0KKyAgICAgICAgKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkX3R5
cGU+OjptYXgpKCkgLSBMaW0gKyAxKSAlIExpbTsKKyAgICB3aGlsZSAoaGVscGVyOjpsbyhwcm9k
dWN0KSA8IHRocmVzaG9sZCkgeworICAgICAgYml0cyA9IGZhc3RfYml0cyhnKTsKKyAgICAgIHBy
b2R1Y3QgPSBoZWxwZXI6Om11bHRpcGx5KGJpdHMsIExpbSk7CisgICAgfQorICB9CisKKyAgcmV0
dXJuIGhlbHBlcjo6aGkocHJvZHVjdCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNl
bmRpZiAgLy8gQUJTTF9SQU5ET01fVU5JRk9STV9JTlRfRElTVFJJQlVUSU9OX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9yYW5kb20vdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFj
ZmY4OGQzODY2MTk1NjJiNWUwMmI1N2E4MDU1ZTkxYmRjYzhjZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3JhbmRvbS91bmlmb3JtX2ludF9kaXN0cmlidXRpb25fdGVzdC5jYwpAQCAtMCwwICsx
LDI1MCBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNs
dWRlICJhYnNsL3JhbmRvbS91bmlmb3JtX2ludF9kaXN0cmlidXRpb24uaCIKKworI2luY2x1ZGUg
PGNtYXRoPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVk
ZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5j
bHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
ImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9t
L2ludGVybmFsL2NoaV9zcXVhcmUuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9k
aXN0cmlidXRpb25fdGVzdF91dGlsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vaW50ZXJuYWwv
c2VxdWVuY2VfdXJiZy5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3JhbmRvbS5oIgorI2luY2x1
ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisKK25hbWVzcGFjZSB7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBJbnRUeXBlPgorY2xhc3MgVW5pZm9ybUludERpc3RyaWJ1dGlvblRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCit1c2luZyBJbnRUeXBlcyA9IDo6dGVzdGluZzo6VHlw
ZXM8aW50OF90LCB1aW50OF90LCBpbnQxNl90LCB1aW50MTZfdCwgaW50MzJfdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCwgaW50NjRfdCwgdWludDY0X3Q+Owor
VFlQRURfVEVTVF9TVUlURShVbmlmb3JtSW50RGlzdHJpYnV0aW9uVGVzdCwgSW50VHlwZXMpOwor
CitUWVBFRF9URVNUKFVuaWZvcm1JbnREaXN0cmlidXRpb25UZXN0LCBQYXJhbVNlcmlhbGl6ZVRl
c3QpIHsKKyAgLy8gVGhpcyB0ZXN0IGVzc2VudGlhbGx5IGVuc3VyZXMgdGhhdCB0aGUgcGFyYW1l
dGVycyBzZXJpYWxpemUsCisgIC8vIG5vdCB0aGF0IHRoZSB2YWx1ZXMgZ2VuZXJhdGVkIGNvdmVy
IHRoZSBmdWxsIHJhbmdlLgorICB1c2luZyBMaW1pdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFR5
cGVQYXJhbT47CisgIHVzaW5nIHBhcmFtX3R5cGUgPQorICAgICAgdHlwZW5hbWUgYWJzbDo6dW5p
Zm9ybV9pbnRfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFtX3R5cGU7CisgIGNvbnN0IFR5
cGVQYXJhbSBrTWluID0gc3RkOjppc191bnNpZ25lZDxUeXBlUGFyYW0+Ojp2YWx1ZSA/IDM3IDog
LTEwNTsKKyAgY29uc3QgVHlwZVBhcmFtIGtOZWdPbmVPclplcm8gPSBzdGQ6OmlzX3Vuc2lnbmVk
PFR5cGVQYXJhbT46OnZhbHVlID8gMCA6IC0xOworCisgIGNvbnN0ZXhwciBpbnQga0NvdW50ID0g
MTAwMDsKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBmb3IgKGNvbnN0IGF1dG8mIHBh
cmFtIDogeworICAgICAgICAgICBwYXJhbV90eXBlKCksCisgICAgICAgICAgIHBhcmFtX3R5cGUo
MiwgMiksICAvLyBTYW1lCisgICAgICAgICAgIHBhcmFtX3R5cGUoOSwgMzIpLAorICAgICAgICAg
ICBwYXJhbV90eXBlKGtNaW4sIDExNSksCisgICAgICAgICAgIHBhcmFtX3R5cGUoa05lZ09uZU9y
WmVybywgTGltaXRzOjptYXgoKSksCisgICAgICAgICAgIHBhcmFtX3R5cGUoTGltaXRzOjptaW4o
KSwgTGltaXRzOjptYXgoKSksCisgICAgICAgICAgIHBhcmFtX3R5cGUoTGltaXRzOjpsb3dlc3Qo
KSwgTGltaXRzOjptYXgoKSksCisgICAgICAgICAgIHBhcmFtX3R5cGUoTGltaXRzOjptaW4oKSAr
IDEsIExpbWl0czo6bWF4KCkgLSAxKSwKKyAgICAgICB9KSB7CisgICAgY29uc3QgYXV0byBhID0g
cGFyYW0uYSgpOworICAgIGNvbnN0IGF1dG8gYiA9IHBhcmFtLmIoKTsKKyAgICBhYnNsOjp1bmlm
b3JtX2ludF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBiZWZvcmUoYSwgYik7CisgICAgRVhQRUNU
X0VRKGJlZm9yZS5hKCksIHBhcmFtLmEoKSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5iKCksIHBh
cmFtLmIoKSk7CisKKyAgICB7CisgICAgICAvLyBJbml0aWFsaXplIHZpYSBwYXJhbV90eXBlCisg
ICAgICBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiB2aWFfcGFyYW0o
cGFyYW0pOworICAgICAgRVhQRUNUX0VRKHZpYV9wYXJhbSwgYmVmb3JlKTsKKyAgICB9CisKKyAg
ICAvLyBJbml0aWFsaXplIHZpYSBpb3N0cmVhbXMKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsK
KyAgICBzcyA8PCBiZWZvcmU7CisKKyAgICBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248
VHlwZVBhcmFtPiBhZnRlcihMaW1pdHM6Om1pbigpICsgMywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW1pdHM6Om1heCgpIC0gNSk7CisKKyAg
ICBFWFBFQ1RfTkUoYmVmb3JlLmEoKSwgYWZ0ZXIuYSgpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3Jl
LmIoKSwgYWZ0ZXIuYigpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3JlLnBhcmFtKCksIGFmdGVyLnBh
cmFtKCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUsIGFmdGVyKTsKKworICAgIHNzID4+IGFmdGVy
OworCisgICAgRVhQRUNUX0VRKGJlZm9yZS5hKCksIGFmdGVyLmEoKSk7CisgICAgRVhQRUNUX0VR
KGJlZm9yZS5iKCksIGFmdGVyLmIoKSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5wYXJhbSgpLCBh
ZnRlci5wYXJhbSgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLCBhZnRlcik7CisKKyAgICAvLyBT
bW9rZSB0ZXN0LgorICAgIGF1dG8gc2FtcGxlX21pbiA9IGFmdGVyLm1heCgpOworICAgIGF1dG8g
c2FtcGxlX21heCA9IGFmdGVyLm1pbigpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwga0NvdW50
OyBpKyspIHsKKyAgICAgIGF1dG8gc2FtcGxlID0gYWZ0ZXIoZ2VuKTsKKyAgICAgIEVYUEVDVF9H
RShzYW1wbGUsIGFmdGVyLm1pbigpKTsKKyAgICAgIEVYUEVDVF9MRShzYW1wbGUsIGFmdGVyLm1h
eCgpKTsKKyAgICAgIGlmIChzYW1wbGUgPiBzYW1wbGVfbWF4KSB7CisgICAgICAgIHNhbXBsZV9t
YXggPSBzYW1wbGU7CisgICAgICB9CisgICAgICBpZiAoc2FtcGxlIDwgc2FtcGxlX21pbikgewor
ICAgICAgICBzYW1wbGVfbWluID0gc2FtcGxlOworICAgICAgfQorICAgIH0KKyAgICBzdGQ6OnN0
cmluZyBtc2cgPSBhYnNsOjpTdHJDYXQoIlJhbmdlOiAiLCArc2FtcGxlX21pbiwgIiwgIiwgK3Nh
bXBsZV9tYXgpOworICAgIEFCU0xfUkFXX0xPRyhJTkZPLCAiJXMiLCBtc2cuY19zdHIoKSk7Cisg
IH0KK30KKworVFlQRURfVEVTVChVbmlmb3JtSW50RGlzdHJpYnV0aW9uVGVzdCwgVmlvbGF0ZXNQ
cmVjb25kaXRpb25zRGVhdGhUZXN0KSB7CisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAgLy8g
SGkgPCBMbworICBFWFBFQ1RfREVCVUdfREVBVEgoeyBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmli
dXRpb248VHlwZVBhcmFtPiBkaXN0KDEwLCAxKTsgfSwKKyAgICAgICAgICAgICAgICAgICAgICIi
KTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyNpZiBkZWZpbmVkKE5ERUJVRykK
KyAgLy8gb3B0LW1vZGUsIGZvciBpbnZhbGlkIHBhcmFtZXRlcnMsIHdpbGwgZ2VuZXJhdGUgYSBn
YXJiYWdlIHZhbHVlLAorICAvLyBidXQgc2hvdWxkIG5vdCBlbnRlciBhbiBpbmZpbml0ZSBsb29w
LgorICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBnZW47CisgIGFic2w6OnVuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbjxUeXBlUGFyYW0+IGRpc3QoMTAsIDEpOworICBhdXRvIHggPSBkaXN0KGdlbik7CisK
KyAgLy8gQW55IHZhbHVlIHdpbGwgZ2VuZXJhdGUgYSBub24tZW1wdHkgc3RkOjpzdHJpbmcuCisg
IEVYUEVDVF9GQUxTRShhYnNsOjpTdHJDYXQoK3gpLmVtcHR5KCkpIDw8IHg7CisjZW5kaWYgIC8v
IE5ERUJVRworfQorCitUWVBFRF9URVNUKFVuaWZvcm1JbnREaXN0cmlidXRpb25UZXN0LCBUZXN0
TW9tZW50cykgeworICBjb25zdGV4cHIgaW50IGtTaXplID0gMTAwMDAwOworICB1c2luZyBMaW1p
dHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT47CisgIHVzaW5nIHBhcmFtX3R5cGUg
PQorICAgICAgdHlwZW5hbWUgYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFR5cGVQYXJh
bT46OnBhcmFtX3R5cGU7CisKKyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gcm5nOworICBzdGQ6OnZl
Y3Rvcjxkb3VibGU+IHZhbHVlcyhrU2l6ZSk7CisgIGZvciAoY29uc3QgYXV0byYgcGFyYW0gOgor
ICAgICAgIHtwYXJhbV90eXBlKDAsIExpbWl0czo6bWF4KCkpLCBwYXJhbV90eXBlKDEzLCAxMjcp
fSkgeworICAgIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGRpc3Qo
cGFyYW0pOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwga1NpemU7IGkrKykgeworICAgICAgY29u
c3QgYXV0byBzYW1wbGUgPSBkaXN0KHJuZyk7CisgICAgICBBU1NFUlRfTEUoZGlzdC5wYXJhbSgp
LmEoKSwgc2FtcGxlKTsKKyAgICAgIEFTU0VSVF9HRShkaXN0LnBhcmFtKCkuYigpLCBzYW1wbGUp
OworICAgICAgdmFsdWVzW2ldID0gc2FtcGxlOworICAgIH0KKworICAgIGF1dG8gbW9tZW50cyA9
IGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6Q29tcHV0ZURpc3RyaWJ1dGlvbk1vbWVudHModmFsdWVz
KTsKKyAgICBjb25zdCBkb3VibGUgYSA9IGRpc3QucGFyYW0oKS5hKCk7CisgICAgY29uc3QgZG91
YmxlIGIgPSBkaXN0LnBhcmFtKCkuYigpOworICAgIGNvbnN0IGRvdWJsZSBuID0gKGIgLSBhICsg
MSk7CisgICAgY29uc3QgZG91YmxlIG1lYW4gPSAoYSArIGIpIC8gMjsKKyAgICBjb25zdCBkb3Vi
bGUgdmFyID0gKChiIC0gYSArIDEpICogKGIgLSBhICsgMSkgLSAxKSAvIDEyOworICAgIGNvbnN0
IGRvdWJsZSBrdXJ0b3NpcyA9IDMgLSA2ICogKG4gKiBuICsgMSkgLyAoNSAqIChuICogbiAtIDEp
KTsKKworICAgIC8vIFRPRE8oYWhoKTogdGhpcyBpcyBub3QgdGhlIHJpZ2h0IGJvdW5kCisgICAg
Ly8gZW1waXJpY2FsbHkgdmFsaWRhdGVkIHdpdGggLS1ydW5zX3Blcl90ZXN0PTEwMDAwLgorICAg
IEVYUEVDVF9ORUFSKG1lYW4sIG1vbWVudHMubWVhbiwgMC4wMSAqIHZhcik7CisgICAgRVhQRUNU
X05FQVIodmFyLCBtb21lbnRzLnZhcmlhbmNlLCAwLjAxNSAqIHZhcik7CisgICAgRVhQRUNUX05F
QVIoMC4wLCBtb21lbnRzLnNrZXduZXNzLCAwLjAyNSk7CisgICAgRVhQRUNUX05FQVIoa3VydG9z
aXMsIG1vbWVudHMua3VydG9zaXMsIDAuMDIgKiBrdXJ0b3Npcyk7CisgIH0KK30KKworVFlQRURf
VEVTVChVbmlmb3JtSW50RGlzdHJpYnV0aW9uVGVzdCwgQ2hpU3F1YXJlZFRlc3Q1MCkgeworICB1
c2luZyBhYnNsOjpyYW5kb21faW50ZXJuYWw6OmtDaGlTcXVhcmVkOworCisgIGNvbnN0ZXhwciBz
aXplX3Qga1RyaWFscyA9IDEwMDA7CisgIGNvbnN0ZXhwciBpbnQga0J1Y2tldHMgPSA1MDsgIC8v
IGluY2x1c2l2ZSwgc28gYWN0YWxseSArMQorICBjb25zdGV4cHIgZG91YmxlIGtFeHBlY3RlZCA9
CisgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KGtUcmlhbHMpIC8gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihrQnVja2V0cyk7CisKKyAgLy8gRW1waXJpY2FsbHkgdmFsaWRhdGVkIHdpdGggLS1ydW5zX3Bl
cl90ZXN0PTEwMDAwLgorICBjb25zdCBpbnQga1RocmVzaG9sZCA9CisgICAgICBhYnNsOjpyYW5k
b21faW50ZXJuYWw6OkNoaVNxdWFyZVZhbHVlKGtCdWNrZXRzLCAwLjk5OTk5OSk7CisKKyAgY29u
c3QgVHlwZVBhcmFtIG1pbiA9IHN0ZDo6aXNfdW5zaWduZWQ8VHlwZVBhcmFtPjo6dmFsdWUgPyAz
NyA6IC0zNzsKKyAgY29uc3QgVHlwZVBhcmFtIG1heCA9IG1pbiArIGtCdWNrZXRzOworCisgIGFi
c2w6Okluc2VjdXJlQml0R2VuIHJuZzsKKyAgYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9u
PFR5cGVQYXJhbT4gZGlzdChtaW4sIG1heCk7CisKKyAgc3RkOjp2ZWN0b3I8aW50MzJfdD4gY291
bnRzKGtCdWNrZXRzICsgMSwgMCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga1RyaWFsczsg
aSsrKSB7CisgICAgYXV0byB4ID0gZGlzdChybmcpOworICAgIGNvdW50c1t4IC0gbWluXSsrOwor
ICB9CisgIGRvdWJsZSBjaGlfc3F1YXJlID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVh
cmVXaXRoRXhwZWN0ZWQoCisgICAgICBzdGQ6OmJlZ2luKGNvdW50cyksIHN0ZDo6ZW5kKGNvdW50
cyksIGtFeHBlY3RlZCk7CisgIGlmIChjaGlfc3F1YXJlID4ga1RocmVzaG9sZCkgeworICAgIGRv
dWJsZSBwX3ZhbHVlID0KKyAgICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmVQ
VmFsdWUoY2hpX3NxdWFyZSwga0J1Y2tldHMpOworCisgICAgLy8gQ2hpLXNxdWFyZWQgdGVzdCBm
YWlsZWQuIE91dHB1dCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgdW5pZm9ybS4KKyAgICBzdGQ6OnN0
cmluZyBtc2c7CisgICAgZm9yIChjb25zdCBhdXRvJiBhIDogY291bnRzKSB7CisgICAgICBhYnNs
OjpTdHJBcHBlbmQoJm1zZywgYSwgIlxuIik7CisgICAgfQorICAgIGFic2w6OlN0ckFwcGVuZCgm
bXNnLCBrQ2hpU3F1YXJlZCwgIiBwLXZhbHVlICIsIHBfdmFsdWUsICJcbiIpOworICAgIGFic2w6
OlN0ckFwcGVuZCgmbXNnLCAiSGlnaCAiLCBrQ2hpU3F1YXJlZCwgIiB2YWx1ZTogIiwgY2hpX3Nx
dWFyZSwgIiA+ICIsCisgICAgICAgICAgICAgICAgICAgIGtUaHJlc2hvbGQpOworICAgIEFCU0xf
UkFXX0xPRyhJTkZPLCAiJXMiLCBtc2cuY19zdHIoKSk7CisgICAgRkFJTCgpIDw8IG1zZzsKKyAg
fQorfQorCitURVNUKFVuaWZvcm1JbnREaXN0cmlidXRpb25UZXN0LCBTdGFiaWxpdHlUZXN0KSB7
CisgIC8vIGFic2w6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiBzdGFiaWxpdHkgcmVsaWVzIG9u
bHkgb24gaW50ZWdlciBvcGVyYXRpb25zLgorICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVl
bmNlX3VyYmcgdXJiZygKKyAgICAgIHsweDAwMDNlYjc2ZjZmN2Y3NTV1bGwsIDB4RkZDRUE1MEZE
QjJGOTUzQnVsbCwgMHhDMzMyRERFRkJFNkM1QUE1dWxsLAorICAgICAgIDB4NjU1ODIxODU2OEFC
OTcwMnVsbCwgMHgyQUVGN0RBRDVCNkUyRjg0dWxsLCAweDE1MjFCNjI4MjkwNzYxNzB1bGwsCisg
ICAgICAgMHhFQ0RENDc3NTYxOUYxNTEwdWxsLCAweDEzQ0NBODMwRUI2MUJEOTZ1bGwsIDB4MDMz
NEZFMUVBQTAzNjNDRnVsbCwKKyAgICAgICAweEI1NzM1QzkwNEM3MEEyMzl1bGwsIDB4RDU5RTlF
MEJDQkFBREUxNHVsbCwgMHhFRUNDODZCQzYwNjIyQ0E3dWxsfSk7CisKKyAgc3RkOjp2ZWN0b3I8
aW50PiBvdXRwdXQoMTIpOworCisgIHsKKyAgICBhYnNsOjp1bmlmb3JtX2ludF9kaXN0cmlidXRp
b248aW50MzJfdD4gZGlzdCgwLCA0KTsKKyAgICBmb3IgKGF1dG8mIHYgOiBvdXRwdXQpIHsKKyAg
ICAgIHYgPSBkaXN0KHVyYmcpOworICAgIH0KKyAgfQorICBFWFBFQ1RfRVEoMTIsIHVyYmcuaW52
b2NhdGlvbnMoKSk7CisgIEVYUEVDVF9USEFUKG91dHB1dCwgdGVzdGluZzo6RWxlbWVudHNBcmUo
NCwgNCwgMywgMiwgMSwgMCwgMSwgNCwgMywgMSwgMywgMSkpOworCisgIHsKKyAgICB1cmJnLnJl
c2V0KCk7CisgICAgYWJzbDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludDMyX3Q+IGRpc3Qo
MCwgMTAwKTsKKyAgICBmb3IgKGF1dG8mIHYgOiBvdXRwdXQpIHsKKyAgICAgIHYgPSBkaXN0KHVy
YmcpOworICAgIH0KKyAgfQorICBFWFBFQ1RfRVEoMTIsIHVyYmcuaW52b2NhdGlvbnMoKSk7Cisg
IEVYUEVDVF9USEFUKG91dHB1dCwgdGVzdGluZzo6RWxlbWVudHNBcmUoOTcsIDg2LCA3NSwgNDEs
IDM2LCAxNiwgMzgsIDkyLCA2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzMCwgODAsIDM4KSk7CisKKyAgeworICAgIHVyYmcucmVzZXQoKTsKKyAgICBhYnNs
Ojp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50MzJfdD4gZGlzdCgwLCAxMDAwMCk7CisgICAg
Zm9yIChhdXRvJiB2IDogb3V0cHV0KSB7CisgICAgICB2ID0gZGlzdCh1cmJnKTsKKyAgICB9Cisg
IH0KKyAgRVhQRUNUX0VRKDEyLCB1cmJnLmludm9jYXRpb25zKCkpOworICBFWFBFQ1RfVEhBVChv
dXRwdXQsIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKDk2NDgsIDg1NjIsIDc0MzksIDQwODksIDM1NzEs
IDE2MDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzgxMywg
OTE5NSwgNjY0MSwgMjk4NiwgNzk1NiwgMzc2NSkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3JhbmRvbS91bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwMGY5MTVi
NjdhZjRiM2JjNDE4ODRjZDg3YjNjMTc1ZWExNjA1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9yYW5kb20vdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oCkBAIC0wLDAgKzEsMTkzIEBACisv
LyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8gRmlsZTogdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi5oCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgaGVhZGVyIGRlZmluZXMgYSBjbGFzcyBmb3Ig
cmVwcmVzZW50aW5nIGEgdW5pZm9ybSBmbG9hdGluZy1wb2ludAorLy8gZGlzdHJpYnV0aW9uIG92
ZXIgYSBoYWxmLW9wZW4gaW50ZXJ2YWwgW2EsYikuIFlvdSB1c2UgdGhpcyBkaXN0cmlidXRpb24g
aW4KKy8vIGNvbWJpbmF0aW9uIHdpdGggYW4gQWJzZWlsIHJhbmRvbSBiaXQgZ2VuZXJhdG9yIHRv
IHByb2R1Y2UgcmFuZG9tIHZhbHVlcworLy8gYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZiB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8KKy8vIGBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uYCBp
cyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIHRoZSBDKysxMQorLy8gYHN0ZDo6dW5pZm9ybV9y
ZWFsX2Rpc3RyaWJ1dGlvbmAgW3JhbmQuZGlzdC51bmkucmVhbF0gYnV0IGlzIGNvbnNpZGVyYWJs
eQorLy8gZmFzdGVyIHRoYW4gdGhlIGxpYnN0ZGMrKyBpbXBsZW1lbnRhdGlvbi4KKy8vCisvLyBO
b3RlOiB0aGUgc3RhbmRhcmQtbGlicmFyeSB2ZXJzaW9uIG1heSBvY2Nhc2lvbmFsbHkgcmV0dXJu
IGAxLjBgIHdoZW4KKy8vIGRlZmF1bHQtaW5pdGlhbGl6ZWQuIFNlZSBodHRwczovL2J1Z3MubGx2
bS5vcmcvL3Nob3dfYnVnLmNnaT9pZD0xODc2NworLy8gYGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0
cmlidXRpb25gIGRvZXMgbm90IGV4aGliaXQgdGhpcyBiZWhhdmlvci4KKworI2lmbmRlZiBBQlNM
X1JBTkRPTV9VTklGT1JNX1JFQUxfRElTVFJJQlVUSU9OX0hfCisjZGVmaW5lIEFCU0xfUkFORE9N
X1VOSUZPUk1fUkVBTF9ESVNUUklCVVRJT05fSF8KKworI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5j
bHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpc3RyZWFtPgorI2lu
Y2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wv
cmFuZG9tL2ludGVybmFsL2Rpc3RyaWJ1dGlvbl9pbXBsLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vaW50ZXJuYWwvZmFzdF91bmlmb3JtX2JpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9p
bnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9zYXZlci5oIgorCituYW1lc3BhY2UgYWJzbCB7CisKKy8v
IGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248VD4KKy8vCisvLyBUaGlzIGRpc3RyaWJ1
dGlvbiBwcm9kdWNlcyByYW5kb20gZmxvYXRpbmctcG9pbnQgdmFsdWVzIHVuaWZvcm1seSBkaXN0
cmlidXRlZAorLy8gb3ZlciB0aGUgaGFsZi1vcGVuIGludGVydmFsIFthLCBiKS4KKy8vCisvLyBF
eGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Qml0R2VuIGdlbjsKKy8vCisvLyAgIC8vIFVzZSB0aGUg
ZGlzdHJpYnV0aW9uIHRvIHByb2R1Y2UgYSB2YWx1ZSBiZXR3ZWVuIDAuMCAoaW5jbHVzaXZlKQor
Ly8gICAvLyBhbmQgMS4wIChleGNsdXNpdmUpLgorLy8gICBpbnQgdmFsdWUgPSBhYnNsOjp1bmlm
b3JtX3JlYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4oMCwgMSkoZ2VuKTsKKy8vCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUmVhbFR5cGUgPSBkb3VibGU+CitjbGFzcyB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0
aW9uIHsKKyBwdWJsaWM6CisgIHVzaW5nIHJlc3VsdF90eXBlID0gUmVhbFR5cGU7CisKKyAgY2xh
c3MgcGFyYW1fdHlwZSB7CisgICBwdWJsaWM6CisgICAgdXNpbmcgZGlzdHJpYnV0aW9uX3R5cGUg
PSB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uOworCisgICAgZXhwbGljaXQgcGFyYW1fdHlwZShy
ZXN1bHRfdHlwZSBsbyA9IDAsIHJlc3VsdF90eXBlIGhpID0gMSkKKyAgICAgICAgOiBsb18obG8p
LCBoaV8oaGkpLCByYW5nZV8oaGkgLSBsbykgeworICAgICAgLy8gW3JhbmQuZGlzdC51bmkucmVh
bF0gcHJlY29uZGl0aW9ucyAyICYgMworICAgICAgYXNzZXJ0KGxvIDw9IGhpKTsKKyAgICAgIC8v
IE5PVEU6IEZvciBpbnRlZ3JhbCB0eXBlcywgd2UgY2FuIHByb21vdGUgdGhlIHJhbmdlIHRvIGFu
IHVuc2lnbmVkIHR5cGUsCisgICAgICAvLyB3aGljaCBnaXZlcyBmdWxsIHdpZHRoIG9mIHRoZSBy
YW5nZS4gSG93ZXZlciBmb3IgcmVhbCAoZnApIHR5cGVzLCB0aGlzCisgICAgICAvLyBpcyBub3Qg
cG9zc2libGUsIHNvIHZhbHVlIGdlbmVyYXRpb24gY2Fubm90IHVzZSB0aGUgZnVsbCByYW5nZSBv
ZiB0aGUKKyAgICAgIC8vIHJlYWwgdHlwZS4KKyAgICAgIGFzc2VydChyYW5nZV8gPD0gKHN0ZDo6
bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgpKCkpOworICAgIH0KKworICAgIHJlc3Vs
dF90eXBlIGEoKSBjb25zdCB7IHJldHVybiBsb187IH0KKyAgICByZXN1bHRfdHlwZSBiKCkgY29u
c3QgeyByZXR1cm4gaGlfOyB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBh
cmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAgICAgIHJldHVybiBhLmxvXyA9
PSBiLmxvXyAmJiBhLmhpXyA9PSBiLmhpXzsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAgICAg
IHJldHVybiAhKGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uOworICAgIHJlc3VsdF90eXBlIGxvXywgaGlfLCBy
YW5nZV87CisKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8UmVhbFR5
cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICJDbGFzcy10ZW1wbGF0ZSBhYnNsOjp1bmlm
b3JtX3JlYWxfZGlzdHJpYnV0aW9uPD4gbXVzdCBiZSAiCisgICAgICAgICAgICAgICAgICAicGFy
YW1ldGVyaXplZCB1c2luZyBhIGZsb2F0aW5nLXBvaW50IHR5cGUuIik7CisgIH07CisKKyAgdW5p
Zm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbigpIDogdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbigwKSB7
fQorCisgIGV4cGxpY2l0IHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24ocmVzdWx0X3R5cGUgbG8s
IHJlc3VsdF90eXBlIGhpID0gMSkKKyAgICAgIDogcGFyYW1fKGxvLCBoaSkge30KKworICBleHBs
aWNpdCB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUmIHBhcmFtKSA6
IHBhcmFtXyhwYXJhbSkge30KKworICAvLyB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFQ+Ojpy
ZXNldCgpCisgIC8vCisgIC8vIFJlc2V0cyB0aGUgdW5pZm9ybSByZWFsIGRpc3RyaWJ1dGlvbi4g
Tm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaGFzIG5vIGVmZmVjdAorICAvLyBiZWNhdXNlIHRoZSBk
aXN0cmlidXRpb24gYWxyZWFkeSBwcm9kdWNlcyBpbmRlcGVuZGVudCB2YWx1ZXMuCisgIHZvaWQg
cmVzZXQoKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVUkJHPgorICByZXN1bHRfdHlwZSBv
cGVyYXRvcigpKFVSQkcmIGdlbikgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAg
ICByZXR1cm4gb3BlcmF0b3IoKShnZW4sIHBhcmFtXyk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShVUkJHJiBnZW4sICAvLyBOT0xJ
TlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBh
cmFtX3R5cGUmIHApOworCisgIHJlc3VsdF90eXBlIGEoKSBjb25zdCB7IHJldHVybiBwYXJhbV8u
YSgpOyB9CisgIHJlc3VsdF90eXBlIGIoKSBjb25zdCB7IHJldHVybiBwYXJhbV8uYigpOyB9CisK
KyAgcGFyYW1fdHlwZSBwYXJhbSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXzsgfQorICB2b2lkIHBh
cmFtKGNvbnN0IHBhcmFtX3R5cGUmIHBhcmFtcykgeyBwYXJhbV8gPSBwYXJhbXM7IH0KKworICBy
ZXN1bHRfdHlwZShtaW4pKCkgY29uc3QgeyByZXR1cm4gYSgpOyB9CisgIHJlc3VsdF90eXBlKG1h
eCkoKSBjb25zdCB7IHJldHVybiBiKCk7IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24mIGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiBhLnBh
cmFtXyA9PSBiLnBhcmFtXzsKKyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVu
aWZvcm1fcmVhbF9kaXN0cmlidXRpb24mIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbiYgYikgeworICAgIHJldHVybiBhLnBhcmFtXyAh
PSBiLnBhcmFtXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgcGFyYW1fdHlwZSBwYXJhbV87CisgIHJh
bmRvbV9pbnRlcm5hbDo6RmFzdFVuaWZvcm1CaXRzPHVpbnQ2NF90PiBmYXN0X3U2NF87Cit9Owor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gSW1wbGVtZW50YXRpb24gZGV0YWlscyBmb2xs
b3cKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGU+
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KK3R5cGVuYW1lIHVuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb248UmVhbFR5cGU+OjpyZXN1bHRfdHlwZQordW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxS
ZWFsVHlwZT46Om9wZXJhdG9yKCkoCisgICAgVVJCRyYgZ2VuLCBjb25zdCBwYXJhbV90eXBlJiBw
KSB7ICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICB1c2luZyByYW5kb21faW50ZXJu
YWw6OlBvc2l0aXZlVmFsdWVUOworICB3aGlsZSAodHJ1ZSkgeworICAgIGNvbnN0IHJlc3VsdF90
eXBlIHNhbXBsZSA9IHJhbmRvbV9pbnRlcm5hbDo6UmFuZFU2NFRvUmVhbDwKKyAgICAgICAgcmVz
dWx0X3R5cGU+Ojp0ZW1wbGF0ZSBWYWx1ZTxQb3NpdGl2ZVZhbHVlVCwgdHJ1ZT4oZmFzdF91NjRf
KGdlbikpOworICAgIGNvbnN0IHJlc3VsdF90eXBlIHJlcyA9IHAuYSgpICsgKHNhbXBsZSAqIHAu
cmFuZ2VfKTsKKyAgICBpZiAocmVzIDwgcC5iKCkgfHwgcC5yYW5nZV8gPD0gMCB8fCAhc3RkOjpp
c2Zpbml0ZShwLnJhbmdlXykpIHsKKyAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIC8vIGVs
c2Ugc2FtcGxlIHJlamVjdGVkLCB0cnkgYWdhaW4uCisgIH0KK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFJlYWxUeXBlPgorc3RkOjpiYXNp
Y19vc3RyZWFtPENoYXJULCBUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0
cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3MsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQor
ICAgIGNvbnN0IHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248UmVhbFR5cGU+JiB4KSB7CisgIGF1
dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2Vfb3N0cmVhbV9zdGF0ZV9zYXZlcihvcyk7
CisgIG9zLnByZWNpc2lvbihyYW5kb21faW50ZXJuYWw6OnN0cmVhbV9wcmVjaXNpb25faGVscGVy
PFJlYWxUeXBlPjo6a1ByZWNpc2lvbik7CisgIG9zIDw8IHguYSgpIDw8IG9zLmZpbGwoKSA8PCB4
LmIoKTsKKyAgcmV0dXJuIG9zOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgUmVhbFR5cGU+CitzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQs
IFRyYWl0cz4mIG9wZXJhdG9yPj4oCisgICAgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFp
dHM+JiBpcywgICAgIC8vIE5PTElOVChydW50aW1lL3JlZmVyZW5jZXMpCisgICAgdW5pZm9ybV9y
ZWFsX2Rpc3RyaWJ1dGlvbjxSZWFsVHlwZT4mIHgpIHsgIC8vIE5PTElOVChydW50aW1lL3JlZmVy
ZW5jZXMpCisgIHVzaW5nIHBhcmFtX3R5cGUgPSB0eXBlbmFtZSB1bmlmb3JtX3JlYWxfZGlzdHJp
YnV0aW9uPFJlYWxUeXBlPjo6cGFyYW1fdHlwZTsKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBl
bmFtZSB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFJlYWxUeXBlPjo6cmVzdWx0X3R5cGU7Cisg
IGF1dG8gc2F2ZXIgPSByYW5kb21faW50ZXJuYWw6Om1ha2VfaXN0cmVhbV9zdGF0ZV9zYXZlcihp
cyk7CisgIGF1dG8gYSA9IHJhbmRvbV9pbnRlcm5hbDo6cmVhZF9mbG9hdGluZ19wb2ludDxyZXN1
bHRfdHlwZT4oaXMpOworICBpZiAoaXMuZmFpbCgpKSByZXR1cm4gaXM7CisgIGF1dG8gYiA9IHJh
bmRvbV9pbnRlcm5hbDo6cmVhZF9mbG9hdGluZ19wb2ludDxyZXN1bHRfdHlwZT4oaXMpOworICBp
ZiAoIWlzLmZhaWwoKSkgeworICAgIHgucGFyYW0ocGFyYW1fdHlwZShhLCBiKSk7CisgIH0KKyAg
cmV0dXJuIGlzOworfQorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX1JB
TkRPTV9VTklGT1JNX1JFQUxfRElTVFJJQlVUSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9yYW5k
b20vdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3VuaWZv
cm1fcmVhbF9kaXN0cmlidXRpb25fdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTdmMGVlNWVmYTViOWQz
NmZkNDg3ZGVhODY2Yjg3ODBmNjg2MmRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9t
L3VuaWZvcm1fcmVhbF9kaXN0cmlidXRpb25fdGVzdC5jYwpAQCAtMCwwICsxLDMyMiBAQAorLy8g
Q29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3Jh
bmRvbS91bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLmgiCisKKyNpbmNsdWRlIDxjbWF0aD4KKyNp
bmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHJhbmRvbT4K
KyNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisj
aW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCisjaW5jbHVkZSAiYWJz
bC9yYW5kb20vaW50ZXJuYWwvY2hpX3NxdWFyZS5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL2lu
dGVybmFsL2Rpc3RyaWJ1dGlvbl90ZXN0X3V0aWwuaCIKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9p
bnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5kb20vcmFuZG9tLmgi
CisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKworLy8gTk9URVM6CisvLyAqIFNv
bWUgZG9jdW1lbnRhdGlvbiBvbiBnZW5lcmF0aW5nIHJhbmRvbSByZWFsIHZhbHVlcyBzdWdnZXN0
cyB0aGF0CisvLyAgIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBzdGQ6Om5leHRhZnRlcihiLCBEQkxf
TUFYKSB0byBnZW5lcmF0ZSBhIHZhbHVlIG9uCisvLyAgIHRoZSBjbG9zZWQgcmFuZ2UgW2EsIGJd
LiBVbmZvcnR1bmF0ZWx5LCB0aGF0IHRlY2huaXF1ZSBpcyBub3QgdW5pdmVyc2FsbHkKKy8vICAg
cmVsaWFibGUgZHVlIHRvIGZsb2F0aW5nIHBvaW50IHF1YW50aXphdGlvbi4KKy8vCisvLyAqIGFi
c2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248ZmxvYXQ+IGdlbmVyYXRlcyBiZXR3ZWVuIDJe
MjggYW5kIDJeMjkKKy8vICAgZGlzdGluY3QgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGluIHRoZSBy
YW5nZSBbMCwgMSkuCisvLworLy8gKiBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGZs
b2F0PiBnZW5lcmF0ZXMgYXQgbGVhc3QgMl4yMyBkaXN0aW5jdAorLy8gICBmbG9hdGluZyBwb2lu
dCB2YWx1ZXMgaW4gdGhlIHJhbmdlIFsxLCAyKS4gVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgYXMK
Ky8vICAgYW55IG90aGVyIHJhbmdlIGNvdmVyZWQgYnkgYSBzaW5nbGUgZXhwb25lbnQgaW4gSUVF
RSA3NTQuCisvLworLy8gKiBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4g
Z2VuZXJhdGVzIG1vcmUgdGhhbiAyXjUyIGRpc3RpbmN0CisvLyAgIHZhbHVlcyBpbiB0aGUgcmFu
Z2UgWzAsIDEpLCBhbmQgc2hvdWxkIGdlbmVyYXRlIGF0IGxlYXN0IDJeNTIgZGlzdGluY3QKKy8v
ICAgdmFsdWVzIGluIHRoZSByYW5nZSBvZiBbMSwgMikuCisvLworCituYW1lc3BhY2UgeworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmVhbFR5cGU+CitjbGFzcyBVbmlmb3JtUmVhbERpc3RyaWJ1dGlv
blRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCit1c2luZyBSZWFsVHlwZXMgPSA6
OnRlc3Rpbmc6OlR5cGVzPGZsb2F0LCBkb3VibGUsIGxvbmcgZG91YmxlPjsKK1RZUEVEX1RFU1Rf
U1VJVEUoVW5pZm9ybVJlYWxEaXN0cmlidXRpb25UZXN0LCBSZWFsVHlwZXMpOworCitUWVBFRF9U
RVNUKFVuaWZvcm1SZWFsRGlzdHJpYnV0aW9uVGVzdCwgUGFyYW1TZXJpYWxpemVUZXN0KSB7Cisg
IHVzaW5nIHBhcmFtX3R5cGUgPQorICAgICAgdHlwZW5hbWUgYWJzbDo6dW5pZm9ybV9yZWFsX2Rp
c3RyaWJ1dGlvbjxUeXBlUGFyYW0+OjpwYXJhbV90eXBlOworCisgIGNvbnN0ZXhwciBjb25zdCBU
eXBlUGFyYW0gYXsxMTUyOTIxNTA0NjA2ODQ2OTc2fTsKKworICBjb25zdGV4cHIgaW50IGtDb3Vu
dCA9IDEwMDA7CisgIGFic2w6Okluc2VjdXJlQml0R2VuIGdlbjsKKyAgZm9yIChjb25zdCBhdXRv
JiBwYXJhbSA6IHsKKyAgICAgICAgICAgcGFyYW1fdHlwZSgpLAorICAgICAgICAgICBwYXJhbV90
eXBlKFR5cGVQYXJhbSgyLjApLCBUeXBlUGFyYW0oMi4wKSksICAvLyBTYW1lCisgICAgICAgICAg
IHBhcmFtX3R5cGUoVHlwZVBhcmFtKC0wLjEpLCBUeXBlUGFyYW0oMC4xKSksCisgICAgICAgICAg
IHBhcmFtX3R5cGUoVHlwZVBhcmFtKDAuMDUpLCBUeXBlUGFyYW0oMC4xMikpLAorICAgICAgICAg
ICBwYXJhbV90eXBlKFR5cGVQYXJhbSgtMC4wNSksIFR5cGVQYXJhbSgwLjEzKSksCisgICAgICAg
ICAgIHBhcmFtX3R5cGUoVHlwZVBhcmFtKC0wLjA1KSwgVHlwZVBhcmFtKC0wLjAyKSksCisgICAg
ICAgICAgIC8vIGRvdWJsZSByYW5nZSA9IDAKKyAgICAgICAgICAgLy8gMl42MCAsIDJeNjAgKyAy
XjYKKyAgICAgICAgICAgcGFyYW1fdHlwZShhLCBUeXBlUGFyYW0oMTE1MjkyMTUwNDYwNjg0NzA0
MCkpLAorICAgICAgICAgICAvLyAyXjYwICwgMl42MCArIDJeNworICAgICAgICAgICBwYXJhbV90
eXBlKGEsIFR5cGVQYXJhbSgxMTUyOTIxNTA0NjA2ODQ3MTA0KSksCisgICAgICAgICAgIC8vIGRv
dWJsZSByYW5nZSA9IDJeOAorICAgICAgICAgICAvLyAyXjYwICwgMl42MCArIDJeOAorICAgICAg
ICAgICBwYXJhbV90eXBlKGEsIFR5cGVQYXJhbSgxMTUyOTIxNTA0NjA2ODQ3MjMyKSksCisgICAg
ICAgICAgIC8vIGZsb2F0IHJhbmdlID0gMAorICAgICAgICAgICAvLyAyXjYwICwgMl42MCArIDJe
MzYKKyAgICAgICAgICAgcGFyYW1fdHlwZShhLCBUeXBlUGFyYW0oMTE1MjkyMTU3MzMyNjMyMzcx
MikpLAorICAgICAgICAgICAvLyAyXjYwICwgMl42MCArIDJeMzcKKyAgICAgICAgICAgcGFyYW1f
dHlwZShhLCBUeXBlUGFyYW0oMTE1MjkyMTY0MjA0NTgwMDQ0OCkpLAorICAgICAgICAgICAvLyBm
bG9hdCByYW5nZSA9IDJeMzgKKyAgICAgICAgICAgLy8gMl42MCAsIDJeNjAgKyAyXjM4CisgICAg
ICAgICAgIHBhcmFtX3R5cGUoYSwgVHlwZVBhcmFtKDExNTI5MjE3Nzk0ODQ3NTM5MjApKSwKKyAg
ICAgICAgICAgLy8gTGltaXRzCisgICAgICAgICAgIHBhcmFtX3R5cGUoMCwgc3RkOjpudW1lcmlj
X2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSksCisgICAgICAgICAgIHBhcmFtX3R5cGUoc3RkOjpu
dW1lcmljX2xpbWl0czxUeXBlUGFyYW0+Ojpsb3dlc3QoKSwgMCksCisgICAgICAgICAgIHBhcmFt
X3R5cGUoMCwgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjplcHNpbG9uKCkpLAorICAg
ICAgICAgICBwYXJhbV90eXBlKC1zdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46OmVwc2ls
b24oKSwKKyAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJh
bT46OmVwc2lsb24oKSksCisgICAgICAgICAgIHBhcmFtX3R5cGUoc3RkOjpudW1lcmljX2xpbWl0
czxUeXBlUGFyYW0+OjplcHNpbG9uKCksCisgICAgICAgICAgICAgICAgICAgICAgMiAqIHN0ZDo6
bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6ZXBzaWxvbigpKSwKKyAgICAgICB9KSB7CisgICAg
Ly8gVmFsaWRhdGUgcGFyYW1ldGVycy4KKyAgICBjb25zdCBhdXRvIGEgPSBwYXJhbS5hKCk7Cisg
ICAgY29uc3QgYXV0byBiID0gcGFyYW0uYigpOworICAgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0
cmlidXRpb248VHlwZVBhcmFtPiBiZWZvcmUoYSwgYik7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5h
KCksIHBhcmFtLmEoKSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5iKCksIHBhcmFtLmIoKSk7CisK
KyAgICB7CisgICAgICBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4g
dmlhX3BhcmFtKHBhcmFtKTsKKyAgICAgIEVYUEVDVF9FUSh2aWFfcGFyYW0sIGJlZm9yZSk7Cisg
ICAgfQorCisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgICAgc3MgPDwgYmVmb3JlOworICAg
IGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBhZnRlcihUeXBlUGFy
YW0oMS4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVHlwZVBhcmFtKDMuMSkpOworCisgICAgRVhQRUNUX05FKGJlZm9yZS5hKCksIGFmdGVy
LmEoKSk7CisgICAgRVhQRUNUX05FKGJlZm9yZS5iKCksIGFmdGVyLmIoKSk7CisgICAgRVhQRUNU
X05FKGJlZm9yZS5wYXJhbSgpLCBhZnRlci5wYXJhbSgpKTsKKyAgICBFWFBFQ1RfTkUoYmVmb3Jl
LCBhZnRlcik7CisKKyAgICBzcyA+PiBhZnRlcjsKKworICAgIEVYUEVDVF9FUShiZWZvcmUuYSgp
LCBhZnRlci5hKCkpOworICAgIEVYUEVDVF9FUShiZWZvcmUuYigpLCBhZnRlci5iKCkpOworICAg
IEVYUEVDVF9FUShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgICAgRVhQRUNUX0VR
KGJlZm9yZSwgYWZ0ZXIpOworCisgICAgLy8gU21va2UgdGVzdC4KKyAgICBhdXRvIHNhbXBsZV9t
aW4gPSBhZnRlci5tYXgoKTsKKyAgICBhdXRvIHNhbXBsZV9tYXggPSBhZnRlci5taW4oKTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGtDb3VudDsgaSsrKSB7CisgICAgICBhdXRvIHNhbXBsZSA9
IGFmdGVyKGdlbik7CisgICAgICAvLyBGYWlsdXJlIGhlcmUgaW5kaWNhdGVzIGEgYnVnIGluIHVu
aWZvcm1fcmVhbF9kaXN0cmlidXRpb246Om9wZXJhdG9yKCksCisgICAgICAvLyBvciBiYWQgcGFy
YW1ldGVycy0tcmFuZ2UgdG9vIGxhcmdlLCBldGMuCisgICAgICBpZiAoYWZ0ZXIubWluKCkgPT0g
YWZ0ZXIubWF4KCkpIHsKKyAgICAgICAgRVhQRUNUX0VRKHNhbXBsZSwgYWZ0ZXIubWluKCkpOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgRVhQRUNUX0dFKHNhbXBsZSwgYWZ0ZXIubWluKCkpOwor
ICAgICAgICBFWFBFQ1RfTFQoc2FtcGxlLCBhZnRlci5tYXgoKSk7CisgICAgICB9CisgICAgICBp
ZiAoc2FtcGxlID4gc2FtcGxlX21heCkgeworICAgICAgICBzYW1wbGVfbWF4ID0gc2FtcGxlOwor
ICAgICAgfQorICAgICAgaWYgKHNhbXBsZSA8IHNhbXBsZV9taW4pIHsKKyAgICAgICAgc2FtcGxl
X21pbiA9IHNhbXBsZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXN0ZDo6aXNfc2FtZTxU
eXBlUGFyYW0sIGxvbmcgZG91YmxlPjo6dmFsdWUpIHsKKyAgICAgIC8vIHN0YXRpY19jYXN0PGRv
dWJsZT4obG9uZyBkb3VibGUpIGNhbiBvdmVyZmxvdy4KKyAgICAgIHN0ZDo6c3RyaW5nIG1zZyA9
IGFic2w6OlN0ckNhdCgiUmFuZ2U6ICIsIHN0YXRpY19jYXN0PGRvdWJsZT4oc2FtcGxlX21pbiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgIiwgc3RhdGljX2Nhc3Q8
ZG91YmxlPihzYW1wbGVfbWF4KSk7CisgICAgICBBQlNMX1JBV19MT0coSU5GTywgIiVzIiwgbXNn
LmNfc3RyKCkpOworICAgIH0KKyAgfQorfQorCitUWVBFRF9URVNUKFVuaWZvcm1SZWFsRGlzdHJp
YnV0aW9uVGVzdCwgVmlvbGF0ZXNQcmVjb25kaXRpb25zRGVhdGhUZXN0KSB7CisjaWYgR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKKyAgLy8gSGkgPCBMbworICBFWFBFQ1RfREVCVUdfREVBVEgoCisgICAg
ICB7IGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBkaXN0KDEwLjAs
IDEuMCk7IH0sICIiKTsKKworICAvLyBIaSAtIExvID4gbnVtZXJpY19saW1pdHM8Pjo6bWF4KCkK
KyAgRVhQRUNUX0RFQlVHX0RFQVRIKAorICAgICAgeworICAgICAgICBhYnNsOjp1bmlmb3JtX3Jl
YWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT4gZGlzdCgKKyAgICAgICAgICAgIHN0ZDo6bnVtZXJp
Y19saW1pdHM8VHlwZVBhcmFtPjo6bG93ZXN0KCksCisgICAgICAgICAgICBzdGQ6Om51bWVyaWNf
bGltaXRzPFR5cGVQYXJhbT46Om1heCgpKTsKKyAgICAgIH0sCisgICAgICAiIik7CisjZW5kaWYg
IC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisjaWYgZGVmaW5lZChOREVCVUcpCisgIC8vIG9wdC1t
b2RlLCBmb3IgaW52YWxpZCBwYXJhbWV0ZXJzLCB3aWxsIGdlbmVyYXRlIGEgZ2FyYmFnZSB2YWx1
ZSwKKyAgLy8gYnV0IHNob3VsZCBub3QgZW50ZXIgYW4gaW5maW5pdGUgbG9vcC4KKyAgYWJzbDo6
SW5zZWN1cmVCaXRHZW4gZ2VuOworICB7CisgICAgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1
dGlvbjxUeXBlUGFyYW0+IGRpc3QoMTAuMCwgMS4wKTsKKyAgICBhdXRvIHggPSBkaXN0KGdlbik7
CisgICAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNuYW4oeCkpIDw8IHg7CisgIH0KKyAgeworICAgIGFi
c2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248VHlwZVBhcmFtPiBkaXN0KAorICAgICAgICBz
dGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Omxvd2VzdCgpLAorICAgICAgICBzdGQ6Om51
bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpKTsKKyAgICBhdXRvIHggPSBkaXN0KGdlbik7
CisgICAgLy8gSW5maW5pdGUgcmVzdWx0LgorICAgIEVYUEVDVF9GQUxTRShzdGQ6OmlzZmluaXRl
KHgpKSA8PCB4OworICB9CisjZW5kaWYgIC8vIE5ERUJVRworfQorCitUWVBFRF9URVNUKFVuaWZv
cm1SZWFsRGlzdHJpYnV0aW9uVGVzdCwgVGVzdE1vbWVudHMpIHsKKyAgY29uc3RleHByIGludCBr
U2l6ZSA9IDEwMDAwMDA7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdmFsdWVzKGtTaXplKTsKKwor
ICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBybmc7CisgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb248VHlwZVBhcmFtPiBkaXN0OworICBmb3IgKGludCBpID0gMDsgaSA8IGtTaXplOyBpKysp
IHsKKyAgICB2YWx1ZXNbaV0gPSBkaXN0KHJuZyk7CisgIH0KKworICBjb25zdCBhdXRvIG1vbWVu
dHMgPQorICAgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDb21wdXRlRGlzdHJpYnV0aW9uTW9t
ZW50cyh2YWx1ZXMpOworICBFWFBFQ1RfTkVBUigwLjUsIG1vbWVudHMubWVhbiwgMC4wMSk7Cisg
IEVYUEVDVF9ORUFSKDEgLyAxMi4wLCBtb21lbnRzLnZhcmlhbmNlLCAwLjAxNSk7CisgIEVYUEVD
VF9ORUFSKDAuMCwgbW9tZW50cy5za2V3bmVzcywgMC4wMik7CisgIEVYUEVDVF9ORUFSKDkgLyA1
LjAsIG1vbWVudHMua3VydG9zaXMsIDAuMDE1KTsKK30KKworVFlQRURfVEVTVChVbmlmb3JtUmVh
bERpc3RyaWJ1dGlvblRlc3QsIENoaVNxdWFyZWRUZXN0NTApIHsKKyAgdXNpbmcgYWJzbDo6cmFu
ZG9tX2ludGVybmFsOjprQ2hpU3F1YXJlZDsKKyAgdXNpbmcgcGFyYW1fdHlwZSA9CisgICAgICB0
eXBlbmFtZSBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPFR5cGVQYXJhbT46OnBhcmFt
X3R5cGU7CisKKyAgY29uc3RleHByIHNpemVfdCBrVHJpYWxzID0gMTAwMDAwOworICBjb25zdGV4
cHIgaW50IGtCdWNrZXRzID0gNTA7CisgIGNvbnN0ZXhwciBkb3VibGUga0V4cGVjdGVkID0KKyAg
ICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oa1RyaWFscykgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGtC
dWNrZXRzKTsKKworICAvLyAxLWluLTEwMDAwMCB0aHJlc2hvbGQsIGJ1dCByZW1lbWJlciwgdGhl
cmUgYXJlIGFib3V0IDggdGVzdHMKKyAgLy8gaW4gdGhpcyBmaWxlLiBBbmQgdGhlIHRlc3QgY291
bGQgZmFpbCBmb3Igb3RoZXIgcmVhc29ucy4KKyAgLy8gRW1waXJpY2FsbHkgdmFsaWRhdGVkIHdp
dGggLS1ydW5zX3Blcl90ZXN0PTEwMDAwLgorICBjb25zdCBpbnQga1RocmVzaG9sZCA9CisgICAg
ICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVZhbHVlKGtCdWNrZXRzIC0gMSwgMC45
OTk5OTkpOworCisgIGFic2w6Okluc2VjdXJlQml0R2VuIHJuZzsKKyAgZm9yIChjb25zdCBhdXRv
JiBwYXJhbSA6IHtwYXJhbV90eXBlKDAsIDEpLCBwYXJhbV90eXBlKDUsIDEyKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbV90eXBlKC01LCAxMyksIHBhcmFtX3R5cGUoLTUsIC0y
KX0pIHsKKyAgICBjb25zdCBkb3VibGUgbWluX3ZhbCA9IHBhcmFtLmEoKTsKKyAgICBjb25zdCBk
b3VibGUgbWF4X3ZhbCA9IHBhcmFtLmIoKTsKKyAgICBjb25zdCBkb3VibGUgZmFjdG9yID0ga0J1
Y2tldHMgLyAobWF4X3ZhbCAtIG1pbl92YWwpOworCisgICAgc3RkOjp2ZWN0b3I8aW50MzJfdD4g
Y291bnRzKGtCdWNrZXRzLCAwKTsKKyAgICBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9u
PFR5cGVQYXJhbT4gZGlzdChwYXJhbSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrVHJp
YWxzOyBpKyspIHsKKyAgICAgIGF1dG8geCA9IGRpc3Qocm5nKTsKKyAgICAgIGF1dG8gYnVja2V0
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigoeCAtIG1pbl92YWwpICogZmFjdG9yKTsKKyAgICAgIGNv
dW50c1tidWNrZXRdKys7CisgICAgfQorCisgICAgZG91YmxlIGNoaV9zcXVhcmUgPSBhYnNsOjpy
YW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVdpdGhFeHBlY3RlZCgKKyAgICAgICAgc3RkOjpiZWdp
bihjb3VudHMpLCBzdGQ6OmVuZChjb3VudHMpLCBrRXhwZWN0ZWQpOworICAgIGlmIChjaGlfc3F1
YXJlID4ga1RocmVzaG9sZCkgeworICAgICAgZG91YmxlIHBfdmFsdWUgPQorICAgICAgICAgIGFi
c2w6OnJhbmRvbV9pbnRlcm5hbDo6Q2hpU3F1YXJlUFZhbHVlKGNoaV9zcXVhcmUsIGtCdWNrZXRz
KTsKKworICAgICAgLy8gQ2hpLXNxdWFyZWQgdGVzdCBmYWlsZWQuIE91dHB1dCBkb2VzIG5vdCBh
cHBlYXIgdG8gYmUgdW5pZm9ybS4KKyAgICAgIHN0ZDo6c3RyaW5nIG1zZzsKKyAgICAgIGZvciAo
Y29uc3QgYXV0byYgYSA6IGNvdW50cykgeworICAgICAgICBhYnNsOjpTdHJBcHBlbmQoJm1zZywg
YSwgIlxuIik7CisgICAgICB9CisgICAgICBhYnNsOjpTdHJBcHBlbmQoJm1zZywga0NoaVNxdWFy
ZWQsICIgcC12YWx1ZSAiLCBwX3ZhbHVlLCAiXG4iKTsKKyAgICAgIGFic2w6OlN0ckFwcGVuZCgm
bXNnLCAiSGlnaCAiLCBrQ2hpU3F1YXJlZCwgIiB2YWx1ZTogIiwgY2hpX3NxdWFyZSwgIiA+ICIs
CisgICAgICAgICAgICAgICAgICAgICAga1RocmVzaG9sZCk7CisgICAgICBBQlNMX1JBV19MT0co
SU5GTywgIiVzIiwgbXNnLmNfc3RyKCkpOworICAgICAgRkFJTCgpIDw8IG1zZzsKKyAgICB9Cisg
IH0KK30KKworVFlQRURfVEVTVChVbmlmb3JtUmVhbERpc3RyaWJ1dGlvblRlc3QsIFN0YWJpbGl0
eVRlc3QpIHsKKyAgLy8gYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbiBzdGFiaWxpdHkg
cmVsaWVzIG9ubHkgb24KKyAgLy8gcmFuZG9tX2ludGVybmFsOjpSYW5kVTY0VG9Eb3VibGUgYW5k
IHJhbmRvbV9pbnRlcm5hbDo6UmFuZFU2NFRvRmxvYXQuCisgIGFic2w6OnJhbmRvbV9pbnRlcm5h
bDo6c2VxdWVuY2VfdXJiZyB1cmJnKAorICAgICAgezB4MDAwM2ViNzZmNmY3Zjc1NXVsbCwgMHhG
RkNFQTUwRkRCMkY5NTNCdWxsLCAweEMzMzJEREVGQkU2QzVBQTV1bGwsCisgICAgICAgMHg2NTU4
MjE4NTY4QUI5NzAydWxsLCAweDJBRUY3REFENUI2RTJGODR1bGwsIDB4MTUyMUI2MjgyOTA3NjE3
MHVsbCwKKyAgICAgICAweEVDREQ0Nzc1NjE5RjE1MTB1bGwsIDB4MTNDQ0E4MzBFQjYxQkQ5NnVs
bCwgMHgwMzM0RkUxRUFBMDM2M0NGdWxsLAorICAgICAgIDB4QjU3MzVDOTA0QzcwQTIzOXVsbCwg
MHhENTlFOUUwQkNCQUFERTE0dWxsLCAweEVFQ0M4NkJDNjA2MjJDQTd1bGx9KTsKKworICBzdGQ6
OnZlY3RvcjxpbnQ+IG91dHB1dCgxMik7CisKKyAgYWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1
dGlvbjxUeXBlUGFyYW0+IGRpc3Q7CisgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdpbihvdXRwdXQp
LCBzdGQ6OmVuZChvdXRwdXQpLCBbJl0geworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KFR5
cGVQYXJhbSgxMDAwMDAwKSAqIGRpc3QodXJiZykpOworICB9KTsKKworICBFWFBFQ1RfVEhBVCgK
KyAgICAgIG91dHB1dCwgIC8vCisgICAgICB0ZXN0aW5nOjpFbGVtZW50c0FyZSg1OSwgOTk5MjQ2
LCA3NjI0OTQsIDM5NTg3NiwgMTY3NzE2LCA4MjU0NSwgOTI1MjUxLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNzczNDEsIDEyNTI3LCA3MDg3OTEsIDgzNDQ1MSwgOTMyODA4KSk7Cit9CisK
K1RFU1QoVW5pZm9ybVJlYWxEaXN0cmlidXRpb25UZXN0LCBBbGdvcml0aG1Cb3VuZHMpIHsKKyAg
YWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IGRpc3Q7CisKKyAgeworICAg
IC8vIFRoaXMgcmV0dXJucyB0aGUgc21hbGxlc3QgdmFsdWUgPjAgZnJvbSBhYnNsOjp1bmlmb3Jt
X3JlYWxfZGlzdHJpYnV0aW9uLgorICAgIGFic2w6OnJhbmRvbV9pbnRlcm5hbDo6c2VxdWVuY2Vf
dXJiZyB1cmJnKHsweDAwMDAwMDAwMDAwMDAwMDF1bGx9KTsKKyAgICBkb3VibGUgYSA9IGRpc3Qo
dXJiZyk7CisgICAgRVhQRUNUX0VRKGEsIDUuNDIxMDEwODYyNDI3NTIyMTcwMDRlLTIwKTsKKyAg
fQorCisgIHsKKyAgICAvLyBUaGlzIHJldHVybnMgYSB2YWx1ZSB2ZXJ5IG5lYXIgMC41IGZyb20g
YWJzbDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi4KKyAgICBhYnNsOjpyYW5kb21faW50ZXJu
YWw6OnNlcXVlbmNlX3VyYmcgdXJiZyh7MHg3ZmZmZmZmZmZmZmZmZmVmdWxsfSk7CisgICAgZG91
YmxlIGEgPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9FUShhLCAwLjQ5OTk5OTk5OTk5OTk5OTk0
NDQ4OSk7CisgIH0KKyAgeworICAgIC8vIFRoaXMgcmV0dXJucyBhIHZhbHVlIHZlcnkgbmVhciAw
LjUgZnJvbSBhYnNsOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uLgorICAgIGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6c2VxdWVuY2VfdXJiZyB1cmJnKHsweDgwMDAwMDAwMDAwMDAwMDB1bGx9KTsK
KyAgICBkb3VibGUgYSA9IGRpc3QodXJiZyk7CisgICAgRVhQRUNUX0VRKGEsIDAuNSk7CisgIH0K
KworICB7CisgICAgLy8gVGhpcyByZXR1cm5zIHRoZSBsYXJnZXN0IHZhbHVlIDwxIGZyb20gYWJz
bDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbi4KKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6
OnNlcXVlbmNlX3VyYmcgdXJiZyh7MHhGRkZGRkZGRkZGRkZGRkVGdWxsfSk7CisgICAgZG91Ymxl
IGEgPSBkaXN0KHVyYmcpOworICAgIEVYUEVDVF9FUShhLCAwLjk5OTk5OTk5OTk5OTk5OTg4ODk3
OCk7CisgIH0KKyAgeworICAgIC8vIFRoaXMgKkFMU08qIHJldHVybnMgdGhlIGxhcmdlc3QgdmFs
dWUgPDEuCisgICAgYWJzbDo6cmFuZG9tX2ludGVybmFsOjpzZXF1ZW5jZV91cmJnIHVyYmcoezB4
RkZGRkZGRkZGRkZGRkZGRnVsbH0pOworICAgIGRvdWJsZSBhID0gZGlzdCh1cmJnKTsKKyAgICBF
WFBFQ1RfRVEoYSwgMC45OTk5OTk5OTk5OTk5OTk4ODg5NzgpOworICB9Cit9CisKK30gIC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFuZG9tL3ppcGZfZGlzdHJpYnV0aW9uLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9yYW5kb20vemlwZl9kaXN0cmlidXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2I0YWMzOGVkYWNk
MzVkNmE3OTE5YzQ4MDI5YWNmZTY4NjhhNDUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvcmFu
ZG9tL3ppcGZfZGlzdHJpYnV0aW9uLmgKQEAgLTAsMCArMSwyNjkgQEAKKy8vIENvcHlyaWdodCAy
MDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfUkFORE9NX1pJUEZfRElT
VFJJQlVUSU9OX0hfCisjZGVmaW5lIEFCU0xfUkFORE9NX1pJUEZfRElTVFJJQlVUSU9OX0hfCisK
KyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGlzdHJlYW0+
CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG9zdHJlYW0+CisjaW5jbHVkZSA8dHlwZV90
cmFpdHM+CisKKyNpbmNsdWRlICJhYnNsL3JhbmRvbS9pbnRlcm5hbC9pb3N0cmVhbV9zdGF0ZV9z
YXZlci5oIgorI2luY2x1ZGUgImFic2wvcmFuZG9tL3VuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24u
aCIKKworbmFtZXNwYWNlIGFic2wgeworCisvLyBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbiBwcm9k
dWNlcyByYW5kb20gaW50ZWdlci12YWx1ZXMgaW4gdGhlIHJhbmdlIFswLCBrXSwKKy8vIGRpc3Ry
aWJ1dGVkIGFjY29yZGluZyB0byB0aGUgZGlzY3JldGUgcHJvYmFiaWxpdHkgZnVuY3Rpb246Cisv
LworLy8gIFAoeCkgPSAodiArIHgpIF4gLXEKKy8vCisvLyBUaGUgcGFyYW1ldGVyIGB2YCBtdXN0
IGJlIGdyZWF0ZXIgdGhhbiAwIGFuZCB0aGUgcGFyYW1ldGVyIGBxYCBtdXN0IGJlCisvLyBncmVh
dGVyIHRoYW4gMS4gSWYgZWl0aGVyIG9mIHRoZXNlIHBhcmFtZXRlcnMgdGFrZSBpbnZhbGlkIHZh
bHVlcyB0aGVuIHRoZQorLy8gYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgorLy8KKy8vIEludFR5cGUg
aXMgdGhlIHJlc3VsdF90eXBlIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdG9yLiBJdCBtdXN0IGJl
IG9mIGludGVncmFsCisvLyB0eXBlOyBhIHN0YXRpY19hc3NlcnQgZW5zdXJlcyB0aGlzIGlzIHRo
ZSBjYXNlLgorLy8KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBXLkhvcm1hbm4s
IEcuRGVyZmxpbmdlcjoKKy8vCisvLyAiUmVqZWN0aW9uLUludmVyc2lvbiB0byBHZW5lcmF0ZSBW
YXJpYXRlcyBmcm9tIE1vbm90b25lIERpc2NyZXRlCisvLyBEaXN0cmlidXRpb25zIgorLy8KKy8v
IGh0dHA6Ly9lZXlvcmUud3Utd2llbi5hYy5hdC9wYXBlcnMvOTYtMDQtMDQud2gtZGVyLnBzLmd6
CisvLwordGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGUgPSBpbnQ+CitjbGFzcyB6aXBmX2Rpc3Ry
aWJ1dGlvbiB7CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IEludFR5cGU7CisKKyAg
Y2xhc3MgcGFyYW1fdHlwZSB7CisgICBwdWJsaWM6CisgICAgdXNpbmcgZGlzdHJpYnV0aW9uX3R5
cGUgPSB6aXBmX2Rpc3RyaWJ1dGlvbjsKKworICAgIC8vIFByZWNvbmRpdGlvbnM6IGsgPiAwLCB2
ID4gMCwgcSA+IDEKKyAgICAvLyBUaGUgcHJlY29uZGlkdGlvbnMgYXJlIHZhbGlkYXRlZCB3aGVu
IE5ERUJVRyBpcyBub3QgZGVmaW5lZCB2aWEKKyAgICAvLyBhIHBhaXIgb2YgYXNzZXJ0KCkgZGly
ZWN0aXZlcy4KKyAgICAvLyBJZiBOREVCVUcgaXMgZGVmaW5lZCBhbmQgZWl0aGVyIG9yIGJvdGgg
b2YgdGhlc2UgcGFyYW1ldGVycyB0YWtlIGludmFsaWQKKyAgICAvLyB2YWx1ZXMsIHRoZSBiZWhh
dmlvciBvZiB0aGUgY2xhc3MgaXMgdW5kZWZpbmVkLgorICAgIGV4cGxpY2l0IHBhcmFtX3R5cGUo
cmVzdWx0X3R5cGUgayA9IChzdGQ6Om51bWVyaWNfbGltaXRzPEludFR5cGU+OjptYXgpKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgcSA9IDIuMCwgZG91YmxlIHYgPSAxLjApOwor
CisgICAgcmVzdWx0X3R5cGUgaygpIGNvbnN0IHsgcmV0dXJuIGtfOyB9CisgICAgZG91YmxlIHEo
KSBjb25zdCB7IHJldHVybiBxXzsgfQorICAgIGRvdWJsZSB2KCkgY29uc3QgeyByZXR1cm4gdl87
IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgYSwgY29u
c3QgcGFyYW1fdHlwZSYgYikgeworICAgICAgcmV0dXJuIGEua18gPT0gYi5rXyAmJiBhLnFfID09
IGIucV8gJiYgYS52XyA9PSBiLnZfOworICAgIH0KKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IHBhcmFtX3R5cGUmIGEsIGNvbnN0IHBhcmFtX3R5cGUmIGIpIHsKKyAgICAgIHJldHVy
biAhKGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyB6aXBm
X2Rpc3RyaWJ1dGlvbjsKKyAgICBpbmxpbmUgZG91YmxlIGgoZG91YmxlIHgpIGNvbnN0OworICAg
IGlubGluZSBkb3VibGUgaGludihkb3VibGUgeCkgY29uc3Q7CisgICAgaW5saW5lIGRvdWJsZSBj
b21wdXRlX3MoKSBjb25zdDsKKyAgICBpbmxpbmUgZG91YmxlIHBvd19uZWdhdGl2ZV9xKGRvdWJs
ZSB4KSBjb25zdDsKKworICAgIC8vIFBhcmFtZXRlcnMgaGVyZSBhcmUgZXhhY3RseSB0aGUgc2Ft
ZSBhcyB0aGUgcGFyYW1ldGVycyBvZiBBbGdvcml0aG0gWlJJCisgICAgLy8gaW4gdGhlIHBhcGVy
LgorICAgIEludFR5cGUga187CisgICAgZG91YmxlIHFfOworICAgIGRvdWJsZSB2XzsKKworICAg
IGRvdWJsZSBvbmVfbWludXNfcV87ICAvLyAxLXEKKyAgICBkb3VibGUgc187CisgICAgZG91Ymxl
IG9uZV9taW51c19xX2ludl87ICAvLyAxIC8gMS1xCisgICAgZG91YmxlIGh4bV87ICAgICAgICAg
ICAgICAvLyBoKGsgKyAwLjUpCisgICAgZG91YmxlIGh4MF9taW51c19oeG1fOyAgICAvLyBoKHgw
KSAtIGgoayArIDAuNSkKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxJbnRU
eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAiQ2xhc3MtdGVtcGxhdGUgYWJzbDo6emlw
Zl9kaXN0cmlidXRpb248PiBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJp
emVkIHVzaW5nIGFuIGludGVncmFsIHR5cGUuIik7CisgIH07CisKKyAgemlwZl9kaXN0cmlidXRp
b24oKQorICAgICAgOiB6aXBmX2Rpc3RyaWJ1dGlvbigoc3RkOjpudW1lcmljX2xpbWl0czxJbnRU
eXBlPjo6bWF4KSgpKSB7fQorCisgIGV4cGxpY2l0IHppcGZfZGlzdHJpYnV0aW9uKHJlc3VsdF90
eXBlIGssIGRvdWJsZSBxID0gMi4wLCBkb3VibGUgdiA9IDEuMCkKKyAgICAgIDogcGFyYW1fKGss
IHEsIHYpIHt9CisKKyAgZXhwbGljaXQgemlwZl9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlw
ZSYgcCkgOiBwYXJhbV8ocCkge30KKworICB2b2lkIHJlc2V0KCkge30KKworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShVUkJHJiBnKSB7ICAvLyBO
T0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgIHJldHVybiAoKnRoaXMpKGcsIHBhcmFtXyk7
CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVVJCRz4KKyAgcmVzdWx0X3R5cGUgb3BlcmF0
b3IoKShVUkJHJiBnLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBwKTsKKworICByZXN1bHRfdHlwZSBrKCkg
Y29uc3QgeyByZXR1cm4gcGFyYW1fLmsoKTsgfQorICBkb3VibGUgcSgpIGNvbnN0IHsgcmV0dXJu
IHBhcmFtXy5xKCk7IH0KKyAgZG91YmxlIHYoKSBjb25zdCB7IHJldHVybiBwYXJhbV8udigpOyB9
CisKKyAgcGFyYW1fdHlwZSBwYXJhbSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtXzsgfQorICB2b2lk
IHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIHApIHsgcGFyYW1fID0gcDsgfQorCisgIHJlc3VsdF90
eXBlKG1pbikoKSBjb25zdCB7IHJldHVybiAwOyB9CisgIHJlc3VsdF90eXBlKG1heCkoKSBjb25z
dCB7IHJldHVybiBrKCk7IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHppcGZf
ZGlzdHJpYnV0aW9uJiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHppcGZfZGlz
dHJpYnV0aW9uJiBiKSB7CisgICAgcmV0dXJuIGEucGFyYW1fID09IGIucGFyYW1fOworICB9Cisg
IGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgemlwZl9kaXN0cmlidXRpb24mIGEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgemlwZl9kaXN0cmlidXRpb24mIGIpIHsKKyAgICBy
ZXR1cm4gYS5wYXJhbV8gIT0gYi5wYXJhbV87CisgIH0KKworIHByaXZhdGU6CisgIHBhcmFtX3R5
cGUgcGFyYW1fOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEltcGxlbWVudGF0aW9u
IGRldGFpbHMgZm9sbG93CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgSW50VHlwZT4KK3ppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOjpwYXJh
bV90eXBlKAorICAgIHR5cGVuYW1lIHppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpyZXN1bHRf
dHlwZSBrLCBkb3VibGUgcSwgZG91YmxlIHYpCisgICAgOiBrXyhrKSwgcV8ocSksIHZfKHYpLCBv
bmVfbWludXNfcV8oMSAtIHEpIHsKKyAgYXNzZXJ0KHEgPiAxKTsKKyAgYXNzZXJ0KHYgPiAwKTsK
KyAgYXNzZXJ0KGsgPiAwKTsKKyAgb25lX21pbnVzX3FfaW52XyA9IDEgLyBvbmVfbWludXNfcV87
CisKKyAgLy8gU2V0dXAgZm9yIHRoZSBaUkkgYWxnb3JpdGhtIChwZyAxNyBvZiB0aGUgcGFwZXIp
LgorICAvLyBDb21wdXRlOiBoKGkgbWF4KSA9PiBoKGsgKyAwLjUpCisgIGNvbnN0ZXhwciBkb3Vi
bGUga01heCA9IDE4NDQ2NzQ0MDczNzA5NTQ5NTY4LjA7CisgIGRvdWJsZSBrZCA9IHN0YXRpY19j
YXN0PGRvdWJsZT4oayk7CisgIC8vIFRPRE8oYWJzbC10ZWFtKTogRGV0ZXJtaW5lIGlmIHRoaXMg
Y2hlY2sgaXMgbmVlZGVkLCBhbmQgaWYgc28sIGFkZCBhIHRlc3QKKyAgLy8gdGhhdCBmYWlscyBm
b3IgayA+IGtNYXgKKyAgaWYgKGtkID4ga01heCkgeworICAgIC8vIEVuc3VyZSB0aGF0IG91ciBt
YXhpbXVtIHZhbHVlIGlzIGNhcHBlZCB0byBhIHZhbHVlIHdoaWNoIHdpbGwKKyAgICAvLyByb3Vu
ZC10cmlwIGJhY2sgdGhyb3VnaCBkb3VibGUuCisgICAga2QgPSBrTWF4OworICB9CisgIGh4bV8g
PSBoKGtkICsgMC41KTsKKworICAvLyBDb21wdXRlOiBoKDApCisgIGNvbnN0IGJvb2wgdXNlX3By
ZWNvbXB1dGVkID0gKHYgPT0gMS4wICYmIHEgPT0gMi4wKTsKKyAgY29uc3QgZG91YmxlIGgweDUg
PSB1c2VfcHJlY29tcHV0ZWQgPyAoLTEuMCAvIDEuNSkgIC8vIGV4cCgtbG9nKDEuNSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaCgwLjUpOworICBjb25zdCBkb3Vi
bGUgZWxvZ3ZfcSA9ICh2XyA9PSAxLjApID8gMSA6IHBvd19uZWdhdGl2ZV9xKHZfKTsKKworICAv
LyBoKDApID0gaCgwLjUpIC0gZXhwKGxvZyh2KSAqIC1xKQorICBoeDBfbWludXNfaHhtXyA9ICho
MHg1IC0gZWxvZ3ZfcSkgLSBoeG1fOworCisgIC8vIEFuZCBzCisgIHNfID0gdXNlX3ByZWNvbXB1
dGVkID8gMC40NjE1Mzg0NjE1Mzg0NjEyMyA6IGNvbXB1dGVfcygpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSW50VHlwZT4KK2RvdWJsZSB6aXBmX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6cGFy
YW1fdHlwZTo6aChkb3VibGUgeCkgY29uc3QgeworICAvLyBzdGQ6OmV4cChvbmVfbWludXNfcV8g
KiBzdGQ6OmxvZyh2XyArIHgpKSAqIG9uZV9taW51c19xX2ludl87CisgIHggKz0gdl87CisgIHJl
dHVybiAob25lX21pbnVzX3FfID09IC0xLjApCisgICAgICAgICAgICAgPyAoLTEuMCAvIHgpICAv
LyAtZXhwKC1sb2coeCkpCisgICAgICAgICAgICAgOiAoc3RkOjpleHAoc3RkOjpsb2coeCkgKiBv
bmVfbWludXNfcV8pICogb25lX21pbnVzX3FfaW52Xyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJbnRUeXBlPgorZG91YmxlIHppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBl
OjpoaW52KGRvdWJsZSB4KSBjb25zdCB7CisgIC8vIHN0ZDo6ZXhwKG9uZV9taW51c19xX2ludl8g
KiBzdGQ6OmxvZyhvbmVfbWludXNfcV8gKiB4KSkgLSB2XzsKKyAgcmV0dXJuIC12XyArICgob25l
X21pbnVzX3FfID09IC0xLjApCisgICAgICAgICAgICAgICAgICAgID8gKC0xLjAgLyB4KSAgLy8g
ZXhwKC1sb2coLXgpKQorICAgICAgICAgICAgICAgICAgICA6IHN0ZDo6ZXhwKG9uZV9taW51c19x
X2ludl8gKiBzdGQ6OmxvZyhvbmVfbWludXNfcV8gKiB4KSkpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSW50VHlwZT4KK2RvdWJsZSB6aXBmX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6cGFyYW1f
dHlwZTo6Y29tcHV0ZV9zKCkgY29uc3QgeworICAvLyAxIC0gaGludihoKDEuNSkgLSBzdGQ6OmV4
cChzdGQ6OmxvZyh2XyArIDEpICogLXFfKSk7CisgIHJldHVybiAxLjAgLSBoaW52KGgoMS41KSAt
IHBvd19uZWdhdGl2ZV9xKHZfICsgMS4wKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRU
eXBlPgorZG91YmxlIHppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpwYXJhbV90eXBlOjpwb3df
bmVnYXRpdmVfcShkb3VibGUgeCkgY29uc3QgeworICAvLyBzdGQ6OmV4cChzdGQ6OmxvZyh4KSAq
IC1xXyk7CisgIHJldHVybiBxXyA9PSAyLjAgPyAoMS4wIC8gKHggKiB4KSkgOiBzdGQ6OmV4cChz
dGQ6OmxvZyh4KSAqIC1xXyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgordGVt
cGxhdGUgPHR5cGVuYW1lIFVSQkc+Cit0eXBlbmFtZSB6aXBmX2Rpc3RyaWJ1dGlvbjxJbnRUeXBl
Pjo6cmVzdWx0X3R5cGUKK3ppcGZfZGlzdHJpYnV0aW9uPEludFR5cGU+OjpvcGVyYXRvcigpKAor
ICAgIFVSQkcmIGcsIGNvbnN0IHBhcmFtX3R5cGUmIHApIHsgIC8vIE5PTElOVChydW50aW1lL3Jl
ZmVyZW5jZXMpCisgIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248ZG91YmxlPiB1bmlm
b3JtX2RvdWJsZTsKKyAgZG91YmxlIGs7CisgIGZvciAoOzspIHsKKyAgICBjb25zdCBkb3VibGUg
diA9IHVuaWZvcm1fZG91YmxlKGcpOworICAgIGNvbnN0IGRvdWJsZSB1ID0gcC5oeG1fICsgdiAq
IHAuaHgwX21pbnVzX2h4bV87CisgICAgY29uc3QgZG91YmxlIHggPSBwLmhpbnYodSk7CisgICAg
ayA9IHJpbnQoeCk7ICAgICAgICAgICAgICAvLyBzdGQ6OmZsb29yKHggKyAwLjUpOworICAgIGlm
IChrID4gcC5rKCkpIGNvbnRpbnVlOyAgLy8gcmVqZWN0IGsgPiBtYXhfaworICAgIGlmIChrIC0g
eCA8PSBwLnNfKSBicmVhazsKKyAgICBjb25zdCBkb3VibGUgaCA9IHAuaChrICsgMC41KTsKKyAg
ICBjb25zdCBkb3VibGUgciA9IHAucG93X25lZ2F0aXZlX3EocC52XyArIGspOworICAgIGlmICh1
ID49IGggLSByKSBicmVhazsKKyAgfQorICBJbnRUeXBlIGtpID0gc3RhdGljX2Nhc3Q8SW50VHlw
ZT4oayk7CisgIGFzc2VydChraSA8PSBwLmtfKTsKKyAgcmV0dXJuIGtpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgSW50VHlwZT4KK3N0
ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJh
c2ljX29zdHJlYW08Q2hhclQsIFRyYWl0cz4mIG9zLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJl
bmNlcykKKyAgICBjb25zdCB6aXBmX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPiYgeCkgeworICB1c2lu
ZyBzdHJlYW1fdHlwZSA9CisgICAgICB0eXBlbmFtZSByYW5kb21faW50ZXJuYWw6OnN0cmVhbV9m
b3JtYXRfdHlwZTxJbnRUeXBlPjo6dHlwZTsKKyAgYXV0byBzYXZlciA9IHJhbmRvbV9pbnRlcm5h
bDo6bWFrZV9vc3RyZWFtX3N0YXRlX3NhdmVyKG9zKTsKKyAgb3MucHJlY2lzaW9uKHJhbmRvbV9p
bnRlcm5hbDo6c3RyZWFtX3ByZWNpc2lvbl9oZWxwZXI8ZG91YmxlPjo6a1ByZWNpc2lvbik7Cisg
IG9zIDw8IHN0YXRpY19jYXN0PHN0cmVhbV90eXBlPih4LmsoKSkgPDwgb3MuZmlsbCgpIDw8IHgu
cSgpIDw8IG9zLmZpbGwoKQorICAgICA8PCB4LnYoKTsKKyAgcmV0dXJuIG9zOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgSW50VHlwZT4K
K3N0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgb3BlcmF0b3I+PigKKyAgICBzdGQ6
OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVm
ZXJlbmNlcykKKyAgICB6aXBmX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPiYgeCkgeyAgICAgICAgLy8g
Tk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBlbmFt
ZSB6aXBmX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6cmVzdWx0X3R5cGU7CisgIHVzaW5nIHBhcmFt
X3R5cGUgPSB0eXBlbmFtZSB6aXBmX2Rpc3RyaWJ1dGlvbjxJbnRUeXBlPjo6cGFyYW1fdHlwZTsK
KyAgdXNpbmcgc3RyZWFtX3R5cGUgPQorICAgICAgdHlwZW5hbWUgcmFuZG9tX2ludGVybmFsOjpz
dHJlYW1fZm9ybWF0X3R5cGU8SW50VHlwZT46OnR5cGU7CisgIHN0cmVhbV90eXBlIGs7CisgIGRv
dWJsZSBxOworICBkb3VibGUgdjsKKworICBhdXRvIHNhdmVyID0gcmFuZG9tX2ludGVybmFsOjpt
YWtlX2lzdHJlYW1fc3RhdGVfc2F2ZXIoaXMpOworICBpcyA+PiBrID4+IHEgPj4gdjsKKyAgaWYg
KCFpcy5mYWlsKCkpIHsKKyAgICB4LnBhcmFtKHBhcmFtX3R5cGUoc3RhdGljX2Nhc3Q8cmVzdWx0
X3R5cGU+KGspLCBxLCB2KSk7CisgIH0KKyAgcmV0dXJuIGlzOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfUkFORE9NX1pJUEZfRElTVFJJQlVUSU9OX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9yYW5kb20vemlwZl9kaXN0cmlidXRpb25fdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3JhbmRvbS96aXBmX2Rpc3RyaWJ1dGlvbl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkNGEwZmNmNzkz
YjNiMmQxY2E5OWRkMmI1YTRjOGFkMDU2ODc1MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9y
YW5kb20vemlwZl9kaXN0cmlidXRpb25fdGVzdC5jYwpAQCAtMCwwICsxLDQyMyBAQAorLy8gQ29w
eXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL3JhbmRv
bS96aXBmX2Rpc3RyaWJ1dGlvbi5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNs
dWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5j
bHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgor
I2luY2x1ZGUgImFic2wvcmFuZG9tL2ludGVybmFsL2NoaV9zcXVhcmUuaCIKKyNpbmNsdWRlICJh
YnNsL3JhbmRvbS9pbnRlcm5hbC9zZXF1ZW5jZV91cmJnLmgiCisjaW5jbHVkZSAiYWJzbC9yYW5k
b20vcmFuZG9tLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRl
ICJhYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2UuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Ry
aXAuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgOjphYnNsOjpyYW5kb21faW50ZXJuYWw6OmtD
aGlTcXVhcmVkOwordXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIEludFR5cGU+CitjbGFzcyBaaXBmRGlzdHJpYnV0aW9uVHlwZWRUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7fTsKKwordXNpbmcgSW50VHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVz
PGludCwgaW50OF90LCBpbnQxNl90LCBpbnQzMl90LCBpbnQ2NF90LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QsIHVpbnQxNl90LCB1aW50MzJfdCwgdWludDY0X3Q+
OworVFlQRURfVEVTVF9DQVNFKFppcGZEaXN0cmlidXRpb25UeXBlZFRlc3QsIEludFR5cGVzKTsK
KworVFlQRURfVEVTVChaaXBmRGlzdHJpYnV0aW9uVHlwZWRUZXN0LCBTZXJpYWxpemVUZXN0KSB7
CisgIHVzaW5nIHBhcmFtX3R5cGUgPSB0eXBlbmFtZSBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjxU
eXBlUGFyYW0+OjpwYXJhbV90eXBlOworCisgIGNvbnN0ZXhwciBpbnQga0NvdW50ID0gMTAwMDsK
KyAgYWJzbDo6SW5zZWN1cmVCaXRHZW4gZ2VuOworICBmb3IgKGNvbnN0IGF1dG8mIHBhcmFtIDog
eworICAgICAgICAgICBwYXJhbV90eXBlKCksCisgICAgICAgICAgIHBhcmFtX3R5cGUoMzIpLAor
ICAgICAgICAgICBwYXJhbV90eXBlKDEwMCwgMywgMiksCisgICAgICAgICAgIHBhcmFtX3R5cGUo
c3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSwgNCwgMyksCisgICAgICAgICAg
IHBhcmFtX3R5cGUoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSAvIDIpLAor
ICAgICAgIH0pIHsKKyAgICAvLyBWYWxpZGF0ZSBwYXJhbWV0ZXJzLgorICAgIGNvbnN0IGF1dG8g
ayA9IHBhcmFtLmsoKTsKKyAgICBjb25zdCBhdXRvIHEgPSBwYXJhbS5xKCk7CisgICAgY29uc3Qg
YXV0byB2ID0gcGFyYW0udigpOworCisgICAgYWJzbDo6emlwZl9kaXN0cmlidXRpb248VHlwZVBh
cmFtPiBiZWZvcmUoaywgcSwgdik7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5rKCksIHBhcmFtLmso
KSk7CisgICAgRVhQRUNUX0VRKGJlZm9yZS5xKCksIHBhcmFtLnEoKSk7CisgICAgRVhQRUNUX0VR
KGJlZm9yZS52KCksIHBhcmFtLnYoKSk7CisKKyAgICB7CisgICAgICBhYnNsOjp6aXBmX2Rpc3Ry
aWJ1dGlvbjxUeXBlUGFyYW0+IHZpYV9wYXJhbShwYXJhbSk7CisgICAgICBFWFBFQ1RfRVEodmlh
X3BhcmFtLCBiZWZvcmUpOworICAgIH0KKworICAgIC8vIFZhbGlkYXRlIHN0cmVhbSBzZXJpYWxp
emF0aW9uLgorICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgIHNzIDw8IGJlZm9yZTsKKyAg
ICBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjxUeXBlUGFyYW0+IGFmdGVyKDQsIDUuNSwgNC40KTsK
KworICAgIEVYUEVDVF9ORShiZWZvcmUuaygpLCBhZnRlci5rKCkpOworICAgIEVYUEVDVF9ORShi
ZWZvcmUucSgpLCBhZnRlci5xKCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUudigpLCBhZnRlci52
KCkpOworICAgIEVYUEVDVF9ORShiZWZvcmUucGFyYW0oKSwgYWZ0ZXIucGFyYW0oKSk7CisgICAg
RVhQRUNUX05FKGJlZm9yZSwgYWZ0ZXIpOworCisgICAgc3MgPj4gYWZ0ZXI7CisKKyAgICBFWFBF
Q1RfRVEoYmVmb3JlLmsoKSwgYWZ0ZXIuaygpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLnEoKSwg
YWZ0ZXIucSgpKTsKKyAgICBFWFBFQ1RfRVEoYmVmb3JlLnYoKSwgYWZ0ZXIudigpKTsKKyAgICBF
WFBFQ1RfRVEoYmVmb3JlLnBhcmFtKCksIGFmdGVyLnBhcmFtKCkpOworICAgIEVYUEVDVF9FUShi
ZWZvcmUsIGFmdGVyKTsKKworICAgIC8vIFNtb2tlIHRlc3QuCisgICAgYXV0byBzYW1wbGVfbWlu
ID0gYWZ0ZXIubWF4KCk7CisgICAgYXV0byBzYW1wbGVfbWF4ID0gYWZ0ZXIubWluKCk7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBrQ291bnQ7IGkrKykgeworICAgICAgYXV0byBzYW1wbGUgPSBh
ZnRlcihnZW4pOworICAgICAgRVhQRUNUX0dFKHNhbXBsZSwgYWZ0ZXIubWluKCkpOworICAgICAg
RVhQRUNUX0xFKHNhbXBsZSwgYWZ0ZXIubWF4KCkpOworICAgICAgaWYgKHNhbXBsZSA+IHNhbXBs
ZV9tYXgpIHNhbXBsZV9tYXggPSBzYW1wbGU7CisgICAgICBpZiAoc2FtcGxlIDwgc2FtcGxlX21p
bikgc2FtcGxlX21pbiA9IHNhbXBsZTsKKyAgICB9CisgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5G
TywKKyAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTdHJDYXQoIlJhbmdlOiAiLCArc2FtcGxl
X21pbiwgIiwgIiwgK3NhbXBsZV9tYXgpKTsKKyAgfQorfQorCitjbGFzcyBaaXBmTW9kZWwgewor
IHB1YmxpYzoKKyAgWmlwZk1vZGVsKHNpemVfdCBrLCBkb3VibGUgcSwgZG91YmxlIHYpIDoga18o
ayksIHFfKHEpLCB2Xyh2KSB7fQorCisgIGRvdWJsZSBtZWFuKCkgY29uc3QgeyByZXR1cm4gbWVh
bl87IH0KKworICAvLyBGb3IgdGhlIG90aGVyIG1vbWVudHMgb2YgdGhlIFppcGYgZGlzdHJpYnV0
aW9uLCBzZWUsIGZvciBleGFtcGxlLAorICAvLyBodHRwOi8vbWF0aHdvcmxkLndvbGZyYW0uY29t
L1ppcGZEaXN0cmlidXRpb24uaHRtbAorCisgIC8vIFBNRihrKSA9ICgxIC8ga15zKSAvIEgoTixz
KQorICAvLyBSZXR1cm5zIHRoZSBwcm9iYWJpbGl0eSB0aGF0IGFueSBzaW5nbGUgaW52b2NhdGlv
biByZXR1cm5zIGsuCisgIGRvdWJsZSBQTUYoc2l6ZV90IGkpIHsgcmV0dXJuIGkgPj0gaG5xXy5z
aXplKCkgPyAwLjAgOiBobnFfW2ldIC8gc3VtX2hucV87IH0KKworICAvLyBDREYgPSBIKGssIHMp
IC8gSChOLHMpCisgIGRvdWJsZSBDREYoc2l6ZV90IGkpIHsKKyAgICBpZiAoaSA+PSBobnFfLnNp
emUoKSkgeworICAgICAgcmV0dXJuIDEuMDsKKyAgICB9CisgICAgYXV0byBpdCA9IHN0ZDo6YmVn
aW4oaG5xXyk7CisgICAgZG91YmxlIGggPSAwLjA7CisgICAgZm9yIChjb25zdCBhdXRvIGVuZCA9
IGl0OyBpdCAhPSBlbmQ7IGl0KyspIHsKKyAgICAgIGggKz0gKml0OworICAgIH0KKyAgICByZXR1
cm4gaCAvIHN1bV9obnFfOworICB9CisKKyAgLy8gVGhlIEludmVyc2VDREYgcmV0dXJucyB0aGUg
ayB2YWx1ZXMgd2hpY2ggYm91bmQgcCBvbiB0aGUgdXBwZXIgYW5kIGxvd2VyCisgIC8vIGJvdW5k
LiBTaW5jZSB0aGVyZSBpcyBubyBjbG9zZWQtZm9ybSBzb2x1dGlvbiwgdGhpcyBpcyBpbXBsZW1l
bnRlZCBhcyBhCisgIC8vIGJpc2N0aW9uIG9mIHRoZSBjZGYuCisgIHN0ZDo6cGFpcjxzaXplX3Qs
IHNpemVfdD4gSW52ZXJzZUNERihkb3VibGUgcCkgeworICAgIHNpemVfdCBtaW4gPSAwOworICAg
IHNpemVfdCBtYXggPSBobnFfLnNpemUoKTsKKyAgICB3aGlsZSAobWF4ID4gbWluICsgMSkgewor
ICAgICAgc2l6ZV90IHRhcmdldCA9IChtYXggKyBtaW4pID4+IDE7CisgICAgICBkb3VibGUgeCA9
IENERih0YXJnZXQpOworICAgICAgaWYgKHggPiBwKSB7CisgICAgICAgIG1heCA9IHRhcmdldDsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIG1pbiA9IHRhcmdldDsKKyAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHttaW4sIG1heH07CisgIH0KKworICAvLyBDb21wdXRlIHRoZSBwcm9iYWJpbGl0
eSB0b3RhbHMsIHdoaWNoIGFyZSBiYXNlZCBvbiB0aGUgZ2VuZXJhbGl6ZWQgaGFybW9uaWMKKyAg
Ly8gbnVtYmVyLCBIKE4scykuCisgIC8vICAgSChOLHMpID09IFNVTShrPTEuLk4sIDEgLyBrXnMp
CisgIC8vCisgIC8vIEluIHRoZSBsaW1pdCwgSChOLHMpID09IHpldGFjKHMpICsgMS4KKyAgLy8K
KyAgLy8gTk9URTogVGhlIG1lYW4gb2YgYSB6aXBmIGRpc3RyaWJ1dGlvbiBjb3VsZCBiZSBjb21w
dXRlZCBoZXJlIGFzIHdlbGwuCisgIC8vIE1lYW4gOj0gIEgoTiwgcy0xKSAvIEgoTixzKS4KKyAg
Ly8gR2l2ZW4gdGhlIHBhcmFtZXRlciB2ID0gMSwgdGhpcyBnaXZlcyB0aGUgZm9sbG93aW5nIGZ1
bmN0aW9uOgorICAvLyAoSG4oMTAwLCAxKSAtIEhuKDEsMSkpIC8gKEhuKDEwMCwyKSAtIEhuKDEs
MikpID0gNi41OTQ0CisgIC8vCisgIHZvaWQgSW5pdCgpIHsKKyAgICBpZiAoIWhucV8uZW1wdHko
KSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBobnFfLmNsZWFyKCk7CisgICAgaG5xXy5y
ZXNlcnZlKHN0ZDo6bWluKGtfLCBzaXplX3R7MTAwMH0pKTsKKworICAgIHN1bV9obnFfID0gMDsK
KyAgICBkb3VibGUgcW0xID0gcV8gLSAxLjA7CisgICAgZG91YmxlIHN1bV9obnFfbTEgPSAwOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga187IGkrKykgeworICAgICAgLy8gUGFydGlhbCBu
LXRoIGdlbmVyYWxpemVkIGhhcm1vbmljIG51bWJlcgorICAgICAgY29uc3QgZG91YmxlIHggPSB2
XyArIGk7CisKKyAgICAgIC8vIEgobiwgcS0xKQorICAgICAgY29uc3QgZG91YmxlIGhucW0xID0K
KyAgICAgICAgICAocV8gPT0gMi4wKSA/ICgxLjAgLyB4KQorICAgICAgICAgICAgICAgICAgICAg
IDogKHFfID09IDMuMCkgPyAoMS4wIC8gKHggKiB4KSkgOiBzdGQ6OnBvdyh4LCAtcW0xKTsKKyAg
ICAgIHN1bV9obnFfbTEgKz0gaG5xbTE7CisKKyAgICAgIC8vIEgobiwgcSkKKyAgICAgIGNvbnN0
IGRvdWJsZSBobnEgPQorICAgICAgICAgIChxXyA9PSAyLjApID8gKDEuMCAvICh4ICogeCkpCisg
ICAgICAgICAgICAgICAgICAgICAgOiAocV8gPT0gMy4wKSA/ICgxLjAgLyAoeCAqIHggKiB4KSkg
OiBzdGQ6OnBvdyh4LCAtcV8pOworICAgICAgc3VtX2hucV8gKz0gaG5xOworICAgICAgaG5xXy5w
dXNoX2JhY2soaG5xKTsKKyAgICAgIGlmIChpID4gMTAwMCAmJiBobnEgPD0gMWUtMTApIHsKKyAg
ICAgICAgLy8gVGhlIGhhcm1vbmljIG51bWJlciBpcyB0b28gc21hbGwuCisgICAgICAgIGJyZWFr
OworICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoc3VtX2hucV8gPiAwKTsKKyAgICBtZWFuXyA9
IHN1bV9obnFfbTEgLyBzdW1faG5xXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3Qgc2l6ZV90
IGtfOworICBjb25zdCBkb3VibGUgcV87CisgIGNvbnN0IGRvdWJsZSB2XzsKKworICBkb3VibGUg
bWVhbl87CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gaG5xXzsKKyAgZG91YmxlIHN1bV9obnFfOwor
fTsKKwordXNpbmcgemlwZl91NjQgPSBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjx1aW50NjRfdD47
CisKK2NsYXNzIFppcGZUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08emlwZl91
NjQ6OnBhcmFtX3R5cGU+LAorICAgICAgICAgICAgICAgICBwdWJsaWMgWmlwZk1vZGVsIHsKKyBw
dWJsaWM6CisgIFppcGZUZXN0KCkgOiBaaXBmTW9kZWwoR2V0UGFyYW0oKS5rKCksIEdldFBhcmFt
KCkucSgpLCBHZXRQYXJhbSgpLnYoKSkge30KKworICBhYnNsOjpJbnNlY3VyZUJpdEdlbiBybmdf
OworfTsKKworVEVTVF9QKFppcGZUZXN0LCBDaGlTcXVhcmVkVGVzdCkgeworICBjb25zdCBhdXRv
JiBwYXJhbSA9IEdldFBhcmFtKCk7CisgIEluaXQoKTsKKworICBzaXplX3QgdHJpYWxzID0gMTAw
MDA7CisKKyAgLy8gRmluZCB0aGUgc3BsaXQtcG9pbnRzIGZvciB0aGUgYnVja2V0cy4KKyAgc3Rk
Ojp2ZWN0b3I8c2l6ZV90PiBwb2ludHM7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gZXhwZWN0ZWQ7
CisgIHsKKyAgICBkb3VibGUgbGFzdF9jZGYgPSAwLjA7CisgICAgZG91YmxlIG1pbl9wID0gMS4w
OworICAgIGZvciAoZG91YmxlIHAgPSAwLjAxOyBwIDwgMS4wOyBwICs9IDAuMDEpIHsKKyAgICAg
IGF1dG8geCA9IEludmVyc2VDREYocCk7CisgICAgICBpZiAocG9pbnRzLmVtcHR5KCkgfHwgcG9p
bnRzLmJhY2soKSA8IHguc2Vjb25kKSB7CisgICAgICAgIGNvbnN0IGRvdWJsZSBwID0gQ0RGKHgu
c2Vjb25kKTsKKyAgICAgICAgcG9pbnRzLnB1c2hfYmFjayh4LnNlY29uZCk7CisgICAgICAgIGRv
dWJsZSBxID0gcCAtIGxhc3RfY2RmOworICAgICAgICBleHBlY3RlZC5wdXNoX2JhY2socSk7Cisg
ICAgICAgIGxhc3RfY2RmID0gcDsKKyAgICAgICAgaWYgKHEgPCBtaW5fcCkgeworICAgICAgICAg
IG1pbl9wID0gcTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBpZiAobGFzdF9jZGYg
PCAwLjk5OSkgeworICAgICAgcG9pbnRzLnB1c2hfYmFjayhzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpKTsKKyAgICAgIGRvdWJsZSBxID0gMS4wIC0gbGFzdF9jZGY7CisgICAgICBl
eHBlY3RlZC5wdXNoX2JhY2socSk7CisgICAgICBpZiAocSA8IG1pbl9wKSB7CisgICAgICAgIG1p
bl9wID0gcTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgcG9pbnRzLmJhY2soKSA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisgICAgICBleHBlY3RlZC5iYWNrKCkg
Kz0gKDEuMCAtIGxhc3RfY2RmKTsKKyAgICB9CisgICAgLy8gVGhlIENoaS1TcXVhcmVkIHNjb3Jl
IGlzIG5vdCBjb21wbGV0ZWx5IHNjYWxlLWludmFyaWFudDsgaXQgd29ya3MgYmVzdAorICAgIC8v
IHdoZW4gdGhlIHNtYWxsIHZhbHVlcyBhcmUgaW4gdGhlIHNtYWxsIGRpZ2l0cy4KKyAgICB0cmlh
bHMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KDguMCAvIG1pbl9wKTsKKyAgfQorICBBU1NFUlRfR1Qo
cG9pbnRzLnNpemUoKSwgMCk7CisKKyAgLy8gR2VuZXJhdGUgbiB2YXJpYXRlcyBhbmQgZmlsbCB0
aGUgY291bnRzIHZlY3RvciB3aXRoIHRoZSBjb3VudCBvZiB0aGVpcgorICAvLyBvY2N1cnJlbmNl
cy4KKyAgc3RkOjp2ZWN0b3I8aW50NjRfdD4gYnVja2V0cyhwb2ludHMuc2l6ZSgpLCAwKTsKKyAg
ZG91YmxlIGF2ZyA9IDA7CisgIHsKKyAgICB6aXBmX3U2NCBkaXMocGFyYW0pOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdHJpYWxzOyBpKyspIHsKKyAgICAgIHVpbnQ2NF90IHggPSBkaXMo
cm5nXyk7CisgICAgICBBU1NFUlRfTEUoeCwgZGlzLm1heCgpKTsKKyAgICAgIEFTU0VSVF9HRSh4
LCBkaXMubWluKCkpOworICAgICAgYXZnICs9IHN0YXRpY19jYXN0PGRvdWJsZT4oeCk7CisgICAg
ICBhdXRvIGl0ID0gc3RkOjp1cHBlcl9ib3VuZChzdGQ6OmJlZ2luKHBvaW50cyksIHN0ZDo6ZW5k
KHBvaW50cyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxz
aXplX3Q+KHgpKTsKKyAgICAgIGJ1Y2tldHNbc3RkOjpkaXN0YW5jZShzdGQ6OmJlZ2luKHBvaW50
cyksIGl0KV0rKzsKKyAgICB9CisgICAgYXZnID0gYXZnIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPih0
cmlhbHMpOworICB9CisKKyAgLy8gVmFsaWRhdGUgdGhlIG91dHB1dCB1c2luZyB0aGUgQ2hpLVNx
dWFyZWQgdGVzdC4KKyAgZm9yIChhdXRvJiBlIDogZXhwZWN0ZWQpIHsKKyAgICBlICo9IHRyaWFs
czsKKyAgfQorCisgIC8vIFRoZSBudWxsLWh5cG90aGVzaXMgaXMgdGhhdCB0aGUgZGlzdHJpYnV0
aW9uIGlzIGEgcG9pc3NvbiBkaXN0cmlidXRpb24gd2l0aAorICAvLyB0aGUgcHJvdmlkZWQgbWVh
biAobm90IGVzdGltYXRlZCBmcm9tIHRoZSBkYXRhKS4KKyAgY29uc3QgaW50IGRvZiA9IHN0YXRp
Y19jYXN0PGludD4oZXhwZWN0ZWQuc2l6ZSgpKSAtIDE7CisKKyAgLy8gTk9URTogVGhpcyB0ZXN0
IHJ1bnMgYWJvdXQgMTV4IHBlciBpbnZvY2F0aW9uLCBzbyBhIHZhbHVlIG9mIDAuOTk5NSBpcwor
ICAvLyBhcHByb3hpbWF0ZWx5IGNvcnJlY3QgZm9yIGEgdGVzdCBzdWl0ZSBmYWlsdXJlIHJhdGUg
b2YgMSBpbiAxMDAuICBJbgorICAvLyBwcmFjdGljZSB3ZSBzZWUgZmFpbHVyZXMgc2xpZ2h0bHkg
aGlnaGVyIHRoYW4gdGhhdC4KKyAgY29uc3QgZG91YmxlIHRocmVzaG9sZCA9IGFic2w6OnJhbmRv
bV9pbnRlcm5hbDo6Q2hpU3F1YXJlVmFsdWUoZG9mLCAwLjk5OTkpOworCisgIGNvbnN0IGRvdWJs
ZSBjaGlfc3F1YXJlID0gYWJzbDo6cmFuZG9tX2ludGVybmFsOjpDaGlTcXVhcmUoCisgICAgICBz
dGQ6OmJlZ2luKGJ1Y2tldHMpLCBzdGQ6OmVuZChidWNrZXRzKSwgc3RkOjpiZWdpbihleHBlY3Rl
ZCksCisgICAgICBzdGQ6OmVuZChleHBlY3RlZCkpOworCisgIGNvbnN0IGRvdWJsZSBwX2FjdHVh
bCA9CisgICAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OkNoaVNxdWFyZVBWYWx1ZShjaGlfc3F1
YXJlLCBkb2YpOworCisgIC8vIExvZyBpZiB0aGUgY2hpX3NxdWFyZWQgdmFsdWUgaXMgYWJvdmUg
dGhlIHRocmVzaG9sZC4KKyAgaWYgKGNoaV9zcXVhcmUgPiB0aHJlc2hvbGQpIHsKKyAgICBBQlNM
X0lOVEVSTkFMX0xPRyhJTkZPLCAidmFsdWVzIik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBleHBlY3RlZC5zaXplKCk7IGkrKykgeworICAgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywg
YWJzbDo6U3RyQ2F0KHBvaW50c1tpXSwgIjogIiwgYnVja2V0c1tpXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHZzLiBFPSIsIGV4cGVjdGVkW2ldKSk7Cisg
ICAgfQorICAgIEFCU0xfSU5URVJOQUxfTE9HKElORk8sIGFic2w6OlN0ckNhdCgidHJpYWxzICIs
IHRyaWFscykpOworICAgIEFCU0xfSU5URVJOQUxfTE9HKElORk8sCisgICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6U3RyQ2F0KCJtZWFuICIsIGF2ZywgIiB2cy4gZXhwZWN0ZWQgIiwgbWVhbigp
KSk7CisgICAgQUJTTF9JTlRFUk5BTF9MT0coSU5GTywgYWJzbDo6U3RyQ2F0KGtDaGlTcXVhcmVk
LCAiKGRhdGEsICIsIGRvZiwgIikgPSAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGlfc3F1YXJlLCAiICgiLCBwX2FjdHVhbCwgIikiKSk7CisgICAgQUJTTF9J
TlRFUk5BTF9MT0coSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTdHJDYXQoa0No
aVNxdWFyZWQsICIgQCAwLjk5OTUgPSAiLCB0aHJlc2hvbGQpKTsKKyAgICBGQUlMKCkgPDwga0No
aVNxdWFyZWQgPDwgIiB2YWx1ZSBvZiAiIDw8IGNoaV9zcXVhcmUKKyAgICAgICAgICAgPDwgIiBp
cyBhYm92ZSB0aGUgdGhyZXNob2xkLiI7CisgIH0KK30KKworc3RkOjp2ZWN0b3I8emlwZl91NjQ6
OnBhcmFtX3R5cGU+IEdlblBhcmFtcygpIHsKKyAgdXNpbmcgcGFyYW0gPSB6aXBmX3U2NDo6cGFy
YW1fdHlwZTsKKyAgY29uc3QgYXV0byBrID0gcGFyYW0oKS5rKCk7CisgIGNvbnN0IGF1dG8gcSA9
IHBhcmFtKCkucSgpOworICBjb25zdCBhdXRvIHYgPSBwYXJhbSgpLnYoKTsKKyAgY29uc3QgdWlu
dDY0X3QgazIgPSAxIDw8IDEwOworICByZXR1cm4gc3RkOjp2ZWN0b3I8emlwZl91NjQ6OnBhcmFt
X3R5cGU+eworICAgICAgLy8gRGVmYXVsdAorICAgICAgcGFyYW0oaywgcSwgdiksCisgICAgICAv
LyB2YXJ5IEsKKyAgICAgIHBhcmFtKDQsIHEsIHYpLCBwYXJhbSgxIDw8IDQsIHEsIHYpLCBwYXJh
bShrMiwgcSwgdiksCisgICAgICAvLyB2YXJ5IFYKKyAgICAgIHBhcmFtKGsyLCBxLCAwLjUpLCBw
YXJhbShrMiwgcSwgMS41KSwgcGFyYW0oazIsIHEsIDIuNSksIHBhcmFtKGsyLCBxLCAxMCksCisg
ICAgICAvLyB2YXJ5IFEKKyAgICAgIHBhcmFtKGsyLCAxLjUsIHYpLCBwYXJhbShrMiwgMywgdiks
IHBhcmFtKGsyLCA1LCB2KSwgcGFyYW0oazIsIDEwLCB2KSwKKyAgICAgIC8vIFZhcnkgViAmIFEK
KyAgICAgIHBhcmFtKGsyLCAxLjUsIDAuNSksIHBhcmFtKGsyLCAzLCAxLjUpLCBwYXJhbShrLCAx
MCwgMTApfTsKK30KKworc3RkOjpzdHJpbmcgUGFyYW1OYW1lKAorICAgIGNvbnN0IDo6dGVzdGlu
Zzo6VGVzdFBhcmFtSW5mbzx6aXBmX3U2NDo6cGFyYW1fdHlwZT4mIGluZm8pIHsKKyAgY29uc3Qg
YXV0byYgcCA9IGluZm8ucGFyYW07CisgIHN0ZDo6c3RyaW5nIG5hbWUgPSBhYnNsOjpTdHJDYXQo
ImtfIiwgcC5rKCksICJfX3FfIiwgYWJzbDo6U2l4RGlnaXRzKHAucSgpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiX192XyIsIGFic2w6OlNpeERpZ2l0cyhwLnYoKSkpOwor
ICByZXR1cm4gYWJzbDo6U3RyUmVwbGFjZUFsbChuYW1lLCB7eyIrIiwgIl8ifSwgeyItIiwgIl8i
fSwgeyIuIiwgIl8ifX0pOworfQorCitJTlNUQU5USUFURV9URVNUX1NVSVRFX1AoQWxsLCBaaXBm
VGVzdCwgOjp0ZXN0aW5nOjpWYWx1ZXNJbihHZW5QYXJhbXMoKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFyYW1OYW1lKTsKKworLy8gTk9URTogYWJzbDo6emlwZl9kaXN0cmlidXRpb24g
aXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLgorVEVTVChaaXBmRGlzdHJpYnV0aW9uVGVz
dCwgU3RhYmlsaXR5VGVzdCkgeworICAvLyBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbiBzdGFiaWxp
dHkgcmVsaWVzIG9uCisgIC8vIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24sIHN0ZDo6
bG9nLCBzdGQ6OmV4cCwgc3RkOjpsb2cxcAorICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNlcXVl
bmNlX3VyYmcgdXJiZygKKyAgICAgIHsweDAwMDNlYjc2ZjZmN2Y3NTV1bGwsIDB4RkZDRUE1MEZE
QjJGOTUzQnVsbCwgMHhDMzMyRERFRkJFNkM1QUE1dWxsLAorICAgICAgIDB4NjU1ODIxODU2OEFC
OTcwMnVsbCwgMHgyQUVGN0RBRDVCNkUyRjg0dWxsLCAweDE1MjFCNjI4MjkwNzYxNzB1bGwsCisg
ICAgICAgMHhFQ0RENDc3NTYxOUYxNTEwdWxsLCAweDEzQ0NBODMwRUI2MUJEOTZ1bGwsIDB4MDMz
NEZFMUVBQTAzNjNDRnVsbCwKKyAgICAgICAweEI1NzM1QzkwNEM3MEEyMzl1bGwsIDB4RDU5RTlF
MEJDQkFBREUxNHVsbCwgMHhFRUNDODZCQzYwNjIyQ0E3dWxsfSk7CisKKyAgc3RkOjp2ZWN0b3I8
aW50PiBvdXRwdXQoMTApOworCisgIHsKKyAgICBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjxpbnQz
Ml90PiBkaXN0OworICAgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdpbihvdXRwdXQpLCBzdGQ6OmVu
ZChvdXRwdXQpLAorICAgICAgICAgICAgICAgICAgWyZdIHsgcmV0dXJuIGRpc3QodXJiZyk7IH0p
OworICAgIEVYUEVDVF9USEFUKG91dHB1dCwgRWxlbWVudHNBcmUoMTAwMzEsIDAsIDAsIDMsIDYs
IDAsIDcsIDQ3LCAwLCAwKSk7CisgIH0KKyAgdXJiZy5yZXNldCgpOworICB7CisgICAgYWJzbDo6
emlwZl9kaXN0cmlidXRpb248aW50MzJfdD4gZGlzdChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMu
Myk7CisgICAgc3RkOjpnZW5lcmF0ZShzdGQ6OmJlZ2luKG91dHB1dCksIHN0ZDo6ZW5kKG91dHB1
dCksCisgICAgICAgICAgICAgICAgICBbJl0geyByZXR1cm4gZGlzdCh1cmJnKTsgfSk7CisgICAg
RVhQRUNUX1RIQVQob3V0cHV0LCBFbGVtZW50c0FyZSg0NCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwg
MywgMCkpOworICB9Cit9CisKK1RFU1QoWmlwZkRpc3RyaWJ1dGlvblRlc3QsIEFsZ29yaXRobUJv
dW5kcykgeworICBhYnNsOjp6aXBmX2Rpc3RyaWJ1dGlvbjxpbnQzMl90PiBkaXN0OworCisgIC8v
IFNtYWxsIHZhbHVlcyBmcm9tIGFic2w6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24gbWFwIHRv
IGxhcmdlciBaaXBmCisgIC8vIGRpc3RyaWJ1dGlvbiB2YWx1ZXMuCisgIGNvbnN0IHN0ZDo6cGFp
cjx1aW50NjRfdCwgaW50MzJfdD4ga0lucHV0c1tdID0geworICAgICAgezB4ZmZmZmZmZmZmZmZm
ZmZmZiwgMHgwfSwgezB4N2ZmZmZmZmZmZmZmZmZmZiwgMHgwfSwKKyAgICAgIHsweDNmZmZmZmZm
ZmZmZmZmZmIsIDB4MX0sIHsweDFmZmZmZmZmZmZmZmZmZmQsIDB4NH0sCisgICAgICB7MHhmZmZm
ZmZmZmZmZmZmZmUsIDB4OX0sICB7MHg3ZmZmZmZmZmZmZmZmZmYsIDB4MTJ9LAorICAgICAgezB4
M2ZmZmZmZmZmZmZmZmZmLCAweDI1fSwgezB4MWZmZmZmZmZmZmZmZmZmLCAweDRjfSwKKyAgICAg
IHsweGZmZmZmZmZmZmZmZmZmLCAweDk5fSwgIHsweDdmZmZmZmZmZmZmZmZmLCAweDEzMn0sCisg
ICAgICB7MHgzZmZmZmZmZmZmZmZmZiwgMHgyNjV9LCB7MHgxZmZmZmZmZmZmZmZmZiwgMHg0Y2N9
LAorICAgICAgezB4ZmZmZmZmZmZmZmZmZiwgMHg5OTl9LCAgezB4N2ZmZmZmZmZmZmZmZiwgMHgx
MzMyfSwKKyAgICAgIHsweDNmZmZmZmZmZmZmZmYsIDB4MjY2NX0sIHsweDFmZmZmZmZmZmZmZmYs
IDB4NGNjY30sCisgICAgICB7MHhmZmZmZmZmZmZmZmYsIDB4OTk5OH0sICB7MHg3ZmZmZmZmZmZm
ZmYsIDB4MTMzMmZ9LAorICAgICAgezB4M2ZmZmZmZmZmZmZmLCAweDI2NjVhfSwgezB4MWZmZmZm
ZmZmZmZmLCAweDRjYzllfSwKKyAgICAgIHsweGZmZmZmZmZmZmZmLCAweDk5OGUwfSwgIHsweDdm
ZmZmZmZmZmZmLCAweDEzMzA1MX0sCisgICAgICB7MHgzZmZmZmZmZmZmZiwgMHgyNjVhZTR9LCB7
MHgxZmZmZmZmZmZmZiwgMHg0YzllZDN9LAorICAgICAgezB4ZmZmZmZmZmZmZiwgMHg5OGUyMjN9
LCAgezB4N2ZmZmZmZmZmZiwgMHgxMzA1OGM0fSwKKyAgICAgIHsweDNmZmZmZmZmZmYsIDB4MjVi
MTc4ZX0sIHsweDFmZmZmZmZmZmYsIDB4NGEwNjJiMn0sCisgICAgICB7MHhmZmZmZmZmZmYsIDB4
OGVlMjNiOH0sICB7MHg3ZmZmZmZmZmYsIDB4MTBiMjE2NDJ9LAorICAgICAgezB4M2ZmZmZmZmZm
LCAweDFkODlkODlkfSwgezB4MWZmZmZmZmZmLCAweDJmZmZmZmZmfSwKKyAgICAgIHsweGZmZmZm
ZmZmLCAweDQ1ZDE3NDVkfSwgIHsweDdmZmZmZmZmLCAweDVhNWE1YTVhfSwKKyAgICAgIHsweDNm
ZmZmZmZmLCAweDY5ZWU1ODQ2fSwgIHsweDFmZmZmZmZmLCAweDczZWNhZGUzfSwKKyAgICAgIHsw
eGZmZmZmZmYsIDB4NzlhOWQyNjB9LCAgIHsweDdmZmZmZmYsIDB4N2NjMDUzMmJ9LAorICAgICAg
ezB4M2ZmZmZmZiwgMHg3ZTVhZDE0Nn0sICAgezB4MWZmZmZmZiwgMHg3ZjJjMGJlY30sCisgICAg
ICB7MHhmZmZmZmYsIDB4N2Y5NWFkZWZ9LCAgICB7MHg3ZmZmZmYsIDB4N2ZjYWMwZGF9LAorICAg
ICAgezB4M2ZmZmZmLCAweDdmZTU1YWUyfSwgICAgezB4MWZmZmZmLCAweDdmZjJhYzBlfSwKKyAg
ICAgIHsweGZmZmZmLCAweDdmZjk1NWFlfSwgICAgIHsweDdmZmZmLCAweDdmZmNhYWMxfSwKKyAg
ICAgIHsweDNmZmZmLCAweDdmZmU1NTVifSwgICAgIHsweDFmZmZmLCAweDdmZmYyYWFjfSwKKyAg
ICAgIHsweGZmZmYsIDB4N2ZmZjk1NTZ9LCAgICAgIHsweDdmZmYsIDB4N2ZmZmNhYWJ9LAorICAg
ICAgezB4M2ZmZiwgMHg3ZmZmZTU1NX0sICAgICAgezB4MWZmZiwgMHg3ZmZmZjJhYn0sCisgICAg
ICB7MHhmZmYsIDB4N2ZmZmY5NTV9LCAgICAgICB7MHg3ZmYsIDB4N2ZmZmZjYWJ9LAorICAgICAg
ezB4M2ZmLCAweDdmZmZmZTU1fSwgICAgICAgezB4MWZmLCAweDdmZmZmZjJifSwKKyAgICAgIHsw
eGZmLCAweDdmZmZmZjk1fSwgICAgICAgIHsweDdmLCAweDdmZmZmZmNifSwKKyAgICAgIHsweDNm
LCAweDdmZmZmZmU1fSwgICAgICAgIHsweDFmLCAweDdmZmZmZmYzfSwKKyAgICAgIHsweGYsIDB4
N2ZmZmZmZjl9LCAgICAgICAgIHsweDcsIDB4N2ZmZmZmZmR9LAorICAgICAgezB4MywgMHg3ZmZm
ZmZmZX0sICAgICAgICAgezB4MSwgMHg3ZmZmZmZmZn0sCisgIH07CisKKyAgZm9yIChjb25zdCBh
dXRvJiBpbnN0YW5jZSA6IGtJbnB1dHMpIHsKKyAgICBhYnNsOjpyYW5kb21faW50ZXJuYWw6OnNl
cXVlbmNlX3VyYmcgdXJiZyh7aW5zdGFuY2UuZmlyc3R9KTsKKyAgICBFWFBFQ1RfRVEoaW5zdGFu
Y2Uuc2Vjb25kLCBkaXN0KHVyYmcpKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmJh
emVsCmluZGV4IDZkN2MyNjE5YTUzMGUwMDBmNzRlYTMxMTVkZmQ3OTdkNzAyMDU0ZmYuLjIwNTEx
YTM1NmQ4OTQ0NGI2MDNlMTdlNzM5Y2ZmOWQxMzc3MDQ1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5iYXplbApAQCAtNSwy
MSArNSwyMCBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
ICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICMgU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKIAogbG9hZCgKLSAgICAi
Ly9hYnNsOmNvcHRzLmJ6bCIsCisgICAgIi8vYWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnps
IiwKICAgICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKLSAgICAiQUJTTF9URVNUX0NPUFRTIiwKICAg
ICAiQUJTTF9FWENFUFRJT05TX0ZMQUciLAogICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5L
T1BUUyIsCisgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiApCiAKIHBhY2thZ2UoCkBAIC00MDUsNyAr
NDA0LDcgQEAgY2NfdGVzdCgKIAogY2NfdGVzdCgKICAgICBuYW1lID0gIm51bWJlcnNfdGVzdCIs
Ci0gICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAogICAgIHNyY3MgPSBb
CiAgICAgICAgICJpbnRlcm5hbC9udW1iZXJzX3Rlc3RfY29tbW9uLmgiLAogICAgICAgICAibnVt
YmVyc190ZXN0LmNjIiwKQEAgLTQxMyw2ICs0MTIsNyBAQCBjY190ZXN0KAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAogICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRl
Il0sCiAgICAgZGVwcyA9IFsKKyAgICAgICAgIjpwb3cxMF9oZWxwZXIiLAogICAgICAgICAiOnN0
cmluZ3MiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29y
ZV9oZWFkZXJzIiwKQEAgLTQ3MSw2ICs0NzEsOCBAQCBjY190ZXN0KAogICAgIHNyY3MgPSBbImNo
YXJjb252X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKICAgICBkZXBz
ID0gWworICAgICAgICAiOnBvdzEwX2hlbHBlciIsCisgICAgICAgICI6c3RyX2Zvcm1hdCIsCiAg
ICAgICAgICI6c3RyaW5ncyIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCiAgICAgICAgICJAY29t
X2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBAIC01NTUsOCArNTU3LDggQEAgY2Nf
bGlicmFyeSgKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6c3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb25m
aWciLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKLSAgICAgICAgIi8vYWJz
bC9jb250YWluZXI6aW5saW5lZF92ZWN0b3IiLAogICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90
cmFpdHMiLAogICAgICAgICAiLy9hYnNsL251bWVyaWM6aW50MTI4IiwKICAgICAgICAgIi8vYWJz
bC90eXBlczpzcGFuIiwKQEAgLTYyNiw3ICs2MjgsNyBAQCBjY190ZXN0KAogCiBjY190ZXN0KAog
ICAgIG5hbWUgPSAic3RyX2Zvcm1hdF9jb252ZXJ0X3Rlc3QiLAotICAgIHNpemUgPSAic21hbGwi
LAorICAgIHNpemUgPSAibWVkaXVtIiwKICAgICBzcmNzID0gWyJpbnRlcm5hbC9zdHJfZm9ybWF0
L2NvbnZlcnRfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAogICAgIHZp
c2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCkBAIC02NTksMyArNjYxLDIzIEBA
IGNjX3Rlc3QoCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIs
CiAgICAgXSwKICkKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInBvdzEwX2hlbHBlciIsCisg
ICAgdGVzdG9ubHkgPSBUcnVlLAorICAgIHNyY3MgPSBbImludGVybmFsL3BvdzEwX2hlbHBlci5j
YyJdLAorICAgIGhkcnMgPSBbImludGVybmFsL3BvdzEwX2hlbHBlci5oIl0sCisgICAgdmlzaWJp
bGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1l
ID0gInBvdzEwX2hlbHBlcl90ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9wb3cxMF9oZWxw
ZXJfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIHZpc2liaWxp
dHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpw
b3cxMF9oZWxwZXIiLAorICAgICAgICAiOnN0cl9mb3JtYXQiLAorICAgICAgICAiQGNvbV9nb29n
bGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5nbgppbmRleCAyMGFmODNj
MGU1MThiNjUwZWIyZTg5OWQzZTdiM2M5ZWZlN2MxMDhiLi5mYzFkOTU2Mjc3NzIzMjYxMjQzZTQz
NDM1YmJlNmZkNDhkODc4MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuZ24KQEAgLTQsMTEgKzQsMTkgQEAKIAogaW1wb3J0KCIv
L2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCisjIFVzYWdlIG9mIEFic2VpbCBpbiBDaHJv
bWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRk
aW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1
bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGluZm9ybWF0aW9uIGNhbiBi
ZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1B
M3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQogaWYgKGJ1aWxkX3dpdGhfY2hy
b21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCiAgICAg
Ii8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
KiIsCiAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCisgICAgIi8vdGhpcmRf
cGFydHkvb3BlbnNjcmVlbi8qIiwKICAgXQogfSBlbHNlIHsKICAgdmlzaWJpbGl0eSA9IFsgIioi
IF0KQEAgLTEzNywxMCArMTQ1LDI4IEBAIHNvdXJjZV9zZXQoInN0cl9mb3JtYXRfaW50ZXJuYWwi
KSB7CiAgIHZpc2liaWxpdHkgKz0gWyAiOioiIF0KICAgZGVwcyA9IFsKICAgICAiOnN0cmluZ3Mi
LAorICAgICIuLi9iYXNlOmNvbmZpZyIsCiAgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKLSAg
ICAiLi4vY29udGFpbmVyOmlubGluZWRfdmVjdG9yIiwKICAgICAiLi4vbWV0YTp0eXBlX3RyYWl0
cyIsCiAgICAgIi4uL251bWVyaWM6aW50MTI4IiwKICAgICAiLi4vdHlwZXM6c3BhbiIsCiAgIF0K
IH0KKworc291cmNlX3NldCgicG93MTBfaGVscGVyIikgeworICB0ZXN0b25seSA9IHRydWUKKyAg
Y29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisg
IGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9j
b2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3Nf
Y2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50ZXJuYWwvcG93
MTBfaGVscGVyLmNjIiwKKyAgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL3BvdzEwX2hl
bHBlci5oIiwKKyAgXQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICI6KiIg
XQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvQ01ha2VMaXN0cy50eHQKaW5kZXggZjNlNDE2MjM4N2YxNWM4MzJkNzUwNjJhZGNjNmI3
ZWQ1ZDVkYTE3YS4uZTYzZWVjMTkxZmNjZTEyNWJmMTU0NTBiMjM3ZDQwMjBkMWUyMjQ4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L0NNYWtlTGlzdHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTQs
NDUwICsxNCw1MDcgQEAKICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAjCiAKLQot
bGlzdChBUFBFTkQgU1RSSU5HU19QVUJMSUNfSEVBREVSUwotICAiYXNjaWkuaCIKLSAgImNoYXJj
b252LmgiCi0gICJlc2NhcGluZy5oIgotICAibWF0Y2guaCIKLSAgIm51bWJlcnMuaCIKLSAgInN0
cl9jYXQuaCIKLSAgInN0cmluZ192aWV3LmgiCi0gICJzdHJpcC5oIgotICAic3RyX2pvaW4uaCIK
LSAgInN0cl9yZXBsYWNlLmgiCi0gICJzdHJfc3BsaXQuaCIKLSAgInN1YnN0aXR1dGUuaCIKLSkK
LQotCi1saXN0KEFQUEVORCBTVFJJTkdTX0lOVEVSTkFMX0hFQURFUlMKLSAgImludGVybmFsL2No
YXJfbWFwLmgiCi0gICJpbnRlcm5hbC9jaGFyY29udl9iaWdpbnQuaCIKLSAgImludGVybmFsL2No
YXJjb252X3BhcnNlLmgiCi0gICJpbnRlcm5hbC9tZW11dGlsLmgiCi0gICJpbnRlcm5hbC9vc3Ry
aW5nc3RyZWFtLmgiCi0gICJpbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5oIgotICAiaW50
ZXJuYWwvc3RsX3R5cGVfdHJhaXRzLmgiCi0gICJpbnRlcm5hbC9zdHJfam9pbl9pbnRlcm5hbC5o
IgotICAiaW50ZXJuYWwvc3RyX3NwbGl0X2ludGVybmFsLmgiCi0gICJpbnRlcm5hbC91dGY4Lmgi
Ci0pCi0KLQotCi0jIGFkZCBzdHJpbmcgbGlicmFyeQotbGlzdChBUFBFTkQgU1RSSU5HU19TUkMK
LSAgImFzY2lpLmNjIgotICAiY2hhcmNvbnYuY2MiCi0gICJlc2NhcGluZy5jYyIKLSAgImludGVy
bmFsL2NoYXJjb252X2JpZ2ludC5jYyIKLSAgImludGVybmFsL2NoYXJjb252X3BhcnNlLmNjIgot
ICAiaW50ZXJuYWwvbWVtdXRpbC5jYyIKLSAgImludGVybmFsL21lbXV0aWwuaCIKLSAgImludGVy
bmFsL3V0ZjguY2MiCi0gICJpbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmNjIgotICAibWF0Y2guY2Mi
Ci0gICJudW1iZXJzLmNjIgotICAic3RyX2NhdC5jYyIKLSAgInN0cl9yZXBsYWNlLmNjIgotICAi
c3RyX3NwbGl0LmNjIgotICAic3RyaW5nX3ZpZXcuY2MiCi0gICJzdWJzdGl0dXRlLmNjIgotICAk
e1NUUklOR1NfUFVCTElDX0hFQURFUlN9Ci0gICR7U1RSSU5HU19JTlRFUk5BTF9IRUFERVJTfQot
KQotc2V0KFNUUklOR1NfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2xfdGhyb3dfZGVs
ZWdhdGUpCi0KLWFic2xfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9zdHJpbmdzCi0gIFNP
VVJDRVMKLSAgICAke1NUUklOR1NfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtTVFJJ
TkdTX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIEVYUE9SVF9OQU1FCithYnNsX2NjX2xpYnJhcnkoCisg
IE5BTUUKICAgICBzdHJpbmdzCi0pCi0KLSMgYWRkIHN0cl9mb3JtYXQgbGlicmFyeQotYWJzbF9o
ZWFkZXJfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9zdHJfZm9ybWF0Ci0gIFBVQkxJQ19M
SUJSQVJJRVMKLSAgICBzdHJfZm9ybWF0X2ludGVybmFsCi0gIEVYUE9SVF9OQU1FCi0gICAgc3Ry
X2Zvcm1hdAotKQotCi0jIHN0cl9mb3JtYXRfaW50ZXJuYWwKLWFic2xfbGlicmFyeSgKLSAgVEFS
R0VUCi0gICAgc3RyX2Zvcm1hdF9pbnRlcm5hbAotICBTT1VSQ0VTCi0gICAgImludGVybmFsL3N0
cl9mb3JtYXQvYXJnLmNjIgotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuY2MiCi0gICAg
ImludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmNjIgotICAgICJpbnRlcm5hbC9zdHJfZm9y
bWF0L2Zsb2F0X2NvbnZlcnNpb24uY2MiCi0gICAgImludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0
LmNjIgotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5jYyIKLSAgICAiaW50ZXJuYWwv
c3RyX2Zvcm1hdC9hcmcuaCIKLSAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmgiCi0gICAg
ImludGVybmFsL3N0cl9mb3JtYXQvY2hlY2tlci5oIgotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0
L2V4dGVuc2lvbi5oIgotICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2Zsb2F0X2NvbnZlcnNpb24u
aCIKLSAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuaCIKLSAgICAiaW50ZXJuYWwvc3Ry
X2Zvcm1hdC9wYXJzZXIuaCIKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIHN0cl9mb3JtYXRfZXh0
ZW5zaW9uX2ludGVybmFsCi0gICAgYWJzbDo6c3RyaW5ncwotICAgIGFic2w6OmJhc2UKLSAgICBh
YnNsOjpudW1lcmljCi0gICAgYWJzbDo6Y29udGFpbmVyCi0gICAgYWJzbDo6c3BhbgotKQotCi0j
IHN0cl9mb3JtYXRfZXh0ZW5zaW9uX2ludGVybmFsCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAot
ICAgIHN0cl9mb3JtYXRfZXh0ZW5zaW9uX2ludGVybmFsCi0gIFNPVVJDRVMKLSAgICAiaW50ZXJu
YWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uY2MiCi0gICAgImludGVybmFsL3N0cl9mb3JtYXQvZXh0
ZW5zaW9uLmgiCi0gICAgImludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0LmNjIgotICAgICJpbnRl
cm5hbC9zdHJfZm9ybWF0L291dHB1dC5oIgotICBQVUJMSUNfTElCUkFSSUVTCisgIEhEUlMKKyAg
ICAiYXNjaWkuaCIKKyAgICAiY2hhcmNvbnYuaCIKKyAgICAiZXNjYXBpbmcuaCIKKyAgICAibWF0
Y2guaCIKKyAgICAibnVtYmVycy5oIgorICAgICJzdHJfY2F0LmgiCisgICAgInN0cl9qb2luLmgi
CisgICAgInN0cl9yZXBsYWNlLmgiCisgICAgInN0cl9zcGxpdC5oIgorICAgICJzdHJpbmdfdmll
dy5oIgorICAgICJzdHJpcC5oIgorICAgICJzdWJzdGl0dXRlLmgiCisgIFNSQ1MKKyAgICAiYXNj
aWkuY2MiCisgICAgImNoYXJjb252LmNjIgorICAgICJlc2NhcGluZy5jYyIKKyAgICAiaW50ZXJu
YWwvY2hhcmNvbnZfYmlnaW50LmNjIgorICAgICJpbnRlcm5hbC9jaGFyY29udl9iaWdpbnQuaCIK
KyAgICAiaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuY2MiCisgICAgImludGVybmFsL2NoYXJjb252
X3BhcnNlLmgiCisgICAgImludGVybmFsL21lbXV0aWwuY2MiCisgICAgImludGVybmFsL21lbXV0
aWwuaCIKKyAgICAiaW50ZXJuYWwvc3RsX3R5cGVfdHJhaXRzLmgiCisgICAgImludGVybmFsL3N0
cl9qb2luX2ludGVybmFsLmgiCisgICAgImludGVybmFsL3N0cl9zcGxpdF9pbnRlcm5hbC5oIgor
ICAgICJtYXRjaC5jYyIKKyAgICAibnVtYmVycy5jYyIKKyAgICAic3RyX2NhdC5jYyIKKyAgICAi
c3RyX3JlcGxhY2UuY2MiCisgICAgInN0cl9zcGxpdC5jYyIKKyAgICAic3RyaW5nX3ZpZXcuY2Mi
CisgICAgInN1YnN0aXR1dGUuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzX2ludGVybmFsCiAgICAgYWJzbDo6YmFzZQotICAg
IGFic2w6OnN0cmluZ3MKLSkKLQotIwotIyMgVEVTVFMKLSMKLQotIyB0ZXN0IG1hdGNoX3Rlc3QK
LXNldChNQVRDSF9URVNUX1NSQyAibWF0Y2hfdGVzdC5jYyIpCi1zZXQoTUFUQ0hfVEVTVF9QVUJM
SUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCisgICAg
YWJzbDo6Yml0cworICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAg
IGFic2w6OmVuZGlhbgorICAgIGFic2w6OnRocm93X2RlbGVnYXRlCisgICAgYWJzbDo6bWVtb3J5
CisgICAgYWJzbDo6dHlwZV90cmFpdHMKKyAgICBhYnNsOjppbnQxMjgKKyAgUFVCTElDCispCisK
K2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHN0cmluZ3NfaW50ZXJuYWwKKyAgSERSUwor
ICAgICJpbnRlcm5hbC9jaGFyX21hcC5oIgorICAgICJpbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmgi
CisgICAgImludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkLmgiCisgICAgImludGVybmFsL3V0
ZjguaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmNjIgorICAgICJpbnRl
cm5hbC91dGY4LmNjIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBERVBT
CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6ZW5kaWFuCisgICAgYWJzbDo6dHlw
ZV90cmFpdHMKKykKKworYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgbWF0Y2hfdGVzdAotICBT
T1VSQ0VTCi0gICAgJHtNQVRDSF9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7
TUFUQ0hfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgIm1hdGNoX3Rlc3QuY2Mi
CisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJp
bmdzCisgICAgYWJzbDo6YmFzZQorICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRlc3QgZXNjYXBp
bmdfdGVzdAotc2V0KEVTQ0FQSU5HX1RFU1RfU1JDICJlc2NhcGluZ190ZXN0LmNjIikKLXNldChF
U0NBUElOR19URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3RyaW5ncyBhYnNsOjpiYXNlKQot
Ci1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgZXNjYXBp
bmdfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtFU0NBUElOR19URVNUX1NSQ30KLSAgUFVCTElDX0xJ
QlJBUklFUwotICAgICR7RVNDQVBJTkdfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisg
ICAgImVzY2FwaW5nX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJz
bDo6Zml4ZWRfYXJyYXkKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IGFzY2lpX3Rlc3QK
LXNldChBU0NJSV9URVNUX1NSQyAiYXNjaWlfdGVzdC5jYyIpCi1zZXQoQVNDSUlfVEVTVF9QVUJM
SUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNs
X2NjX3Rlc3QoCisgIE5BTUUKICAgICBhc2NpaV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0FTQ0lJ
X1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtBU0NJSV9URVNUX1BVQkxJQ19M
SUJSQVJJRVN9CisgIFNSQ1MKKyAgICAiYXNjaWlfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpjb3Jl
X2hlYWRlcnMKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IG1lbXV0aWxfdGVzdAotc2V0
KE1FTVVUSUxfVEVTVF9TUkMgImludGVybmFsL21lbXV0aWxfdGVzdC5jYyIpCi1zZXQoTUVNVVRJ
TF9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3RyaW5ncykKLQotYWJzbF90ZXN0KAotICBU
QVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIG1lbXV0aWxfdGVzdAotICBTT1VSQ0VT
Ci0gICAgJHtNRU1VVElMX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtNRU1V
VElMX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJpbnRlcm5hbC9tZW11dGls
LmgiCisgICAgImludGVybmFsL21lbXV0aWxfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xf
VEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpjb3JlX2hl
YWRlcnMKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IHV0ZjhfdGVzdAotc2V0KFVURjhf
VEVTVF9TUkMgImludGVybmFsL3V0ZjhfdGVzdC5jYyIpCi1zZXQoVVRGOF9URVNUX1BVQkxJQ19M
SUJSQVJJRVMgYWJzbDo6c3RyaW5ncyBhYnNsOjpiYXNlKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdF
VAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgdXRmOF90ZXN0Ci0gIFNPVVJDRVMKLSAgICAk
e1VURjhfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1VURjhfVEVTVF9QVUJM
SUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgImludGVybmFsL3V0ZjhfdGVzdC5jYyIKKyAgQ09Q
VFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cmluZ3NfaW50
ZXJuYWwKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgZ21vY2tf
bWFpbgogKQogCi0KLSMgdGVzdCBzdHJpbmdfdmlld190ZXN0Ci1zZXQoU1RSSU5HX1ZJRVdfVEVT
VF9TUkMgInN0cmluZ192aWV3X3Rlc3QuY2MiKQotc2V0KFNUUklOR19WSUVXX1RFU1RfUFVCTElD
X0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzIGFic2xfdGhyb3dfZGVsZWdhdGUgYWJzbDo6YmFzZSkK
LQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHN0cmlu
Z192aWV3X3Rlc3QKLSAgU09VUkNFUwotICAgICR7U1RSSU5HX1ZJRVdfVEVTVF9TUkN9Ci0gIFBV
QkxJQ19MSUJSQVJJRVMKLSAgICAke1NUUklOR19WSUVXX1RFU1RfUFVCTElDX0xJQlJBUklFU30K
KyAgU1JDUworICAgICJzdHJpbmdfdmlld190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9CisgIExJTktPUFRTCisgICAg
JHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cmlu
Z3MKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpk
eW5hbWljX2Fubm90YXRpb25zCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBzdWJzdGl0
dXRlX3Rlc3QKLXNldChTVUJTVElUVVRFX1RFU1RfU1JDICJzdWJzdGl0dXRlX3Rlc3QuY2MiKQot
c2V0KFNVQlNUSVRVVEVfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MgYWJzbDo6
YmFzZSkKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAg
IHN1YnN0aXR1dGVfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtTVUJTVElUVVRFX1RFU1RfU1JDfQot
ICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtTVUJTVElUVVRFX1RFU1RfUFVCTElDX0xJQlJBUklF
U30KKyAgU1JDUworICAgICJzdWJzdGl0dXRlX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNM
X1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6Y29yZV9o
ZWFkZXJzCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBzdHJfcmVwbGFjZV90ZXN0Ci1z
ZXQoU1RSX1JFUExBQ0VfVEVTVF9TUkMgInN0cl9yZXBsYWNlX3Rlc3QuY2MiKQotc2V0KFNUUl9S
RVBMQUNFX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpzdHJpbmdzIGFic2w6OmJhc2UgYWJz
bF90aHJvd19kZWxlZ2F0ZSkKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQogICAgIHN0cl9yZXBsYWNlX3Rlc3QKLSAgU09VUkNFUwotICAgICR7U1RSX1JFUExB
Q0VfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1NUUl9SRVBMQUNFX1RFU1Rf
UFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJzdHJfcmVwbGFjZV90ZXN0LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncwor
ICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRlc3Qgc3RyX3NwbGl0X3Rlc3QKLXNldChTVFJfU1BM
SVRfVEVTVF9TUkMgInN0cl9zcGxpdF90ZXN0LmNjIikKLXNldChTVFJfU1BMSVRfVEVTVF9QVUJM
SUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MgYWJzbDo6YmFzZSBhYnNsX3Rocm93X2RlbGVnYXRl
KQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3Ry
X3NwbGl0X3Rlc3QKLSAgU09VUkNFUwotICAgICR7U1RSX1NQTElUX1RFU1RfU1JDfQotICBQVUJM
SUNfTElCUkFSSUVTCi0gICAgJHtTVFJfU1BMSVRfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBT
UkNTCisgICAgInN0cl9zcGxpdF90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OmJhc2UKKyAgICBhYnNs
Ojpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjpkeW5hbWljX2Fubm90YXRpb25zCisgICAgZ21vY2tf
bWFpbgogKQogCi0KLSMgdGVzdCBvc3RyaW5nc3RyZWFtX3Rlc3QKLXNldChPU1RSSU5HU1RSRUFN
X1RFU1RfU1JDICJpbnRlcm5hbC9vc3RyaW5nc3RyZWFtX3Rlc3QuY2MiKQotc2V0KE9TVFJJTkdT
VFJFQU1fVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MpCi0KLWFic2xfdGVzdCgK
LSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBvc3RyaW5nc3RyZWFtX3Rlc3QK
LSAgU09VUkNFUwotICAgICR7T1NUUklOR1NUUkVBTV9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJB
UklFUwotICAgICR7T1NUUklOR1NUUkVBTV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MK
KyAgICAiaW50ZXJuYWwvb3N0cmluZ3N0cmVhbV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJT
TF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5nc19pbnRlcm5hbAorICAgIGdt
b2NrX21haW4KICkKIAotCi0jIHRlc3QgcmVzaXplX3VuaW5pdGlhbGl6ZWRfdGVzdAotc2V0KFJF
U0laRV9VTklOSVRJQUxJWkVEX1RFU1RfU1JDICJpbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXpl
ZF90ZXN0LmNjIikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQogICAgIHJlc2l6ZV91bmluaXRpYWxpemVkX3Rlc3QKLSAgU09VUkNFUwotICAgICR7UkVTSVpF
X1VOSU5JVElBTElaRURfVEVTVF9TUkN9CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcmVzaXplX3Vu
aW5pdGlhbGl6ZWQuaCIKKyAgICAiaW50ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6ZWRfdGVzdC5j
YyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJh
c2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAgIGdt
b2NrX21haW4KICkKIAotCi0jIHRlc3Qgc3RyX2pvaW5fdGVzdAotc2V0KFNUUl9KT0lOX1RFU1Rf
U1JDICJzdHJfam9pbl90ZXN0LmNjIikKLXNldChTVFJfSk9JTl9URVNUX1BVQkxJQ19MSUJSQVJJ
RVMgYWJzbDo6c3RyaW5ncykKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQogICAgIHN0cl9qb2luX3Rlc3QKLSAgU09VUkNFUwotICAgICR7U1RSX0pPSU5fVEVT
VF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1NUUl9KT0lOX1RFU1RfUFVCTElDX0xJ
QlJBUklFU30KKyAgU1JDUworICAgICJzdHJfam9pbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7
QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OmJh
c2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjptZW1vcnkKKyAgICBnbW9ja19t
YWluCiApCiAKLQotIyB0ZXN0IHN0cl9jYXRfdGVzdAotc2V0KFNUUl9DQVRfVEVTVF9TUkMgInN0
cl9jYXRfdGVzdC5jYyIpCi1zZXQoU1RSX0NBVF9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6
c3RyaW5ncykKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQog
ICAgIHN0cl9jYXRfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtTVFJfQ0FUX1RFU1RfU1JDfQotICBQ
VUJMSUNfTElCUkFSSUVTCi0gICAgJHtTVFJfQ0FUX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAg
U1JDUworICAgICJzdHJfY2F0X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisg
ICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVzdCBudW1iZXJzX3Rlc3QKLXNldChOVU1CRVJTX1RF
U1RfU1JDICJudW1iZXJzX3Rlc3QuY2MiKQotc2V0KE5VTUJFUlNfVEVTVF9QVUJMSUNfTElCUkFS
SUVTIGFic2w6OnN0cmluZ3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3Qo
CisgIE5BTUUKICAgICBudW1iZXJzX3Rlc3QKLSAgU09VUkNFUwotICAgICR7TlVNQkVSU19URVNU
X1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7TlVNQkVSU19URVNUX1BVQkxJQ19MSUJS
QVJJRVN9CisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvbnVtYmVyc190ZXN0X2NvbW1vbi5oIgorICAg
ICJudW1iZXJzX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERF
UFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvcmVfaGVh
ZGVycworICAgIGFic2w6OnBvdzEwX2hlbHBlcgorICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRl
c3Qgc3RyaXBfdGVzdAotc2V0KFNUUklQX1RFU1RfU1JDICJzdHJpcF90ZXN0LmNjIikKLXNldChT
VFJJUF9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3RyaW5ncykKLQotYWJzbF90ZXN0KAot
ICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHN0cmlwX3Rlc3QKLSAgU09VUkNF
UwotICAgICR7U1RSSVBfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke1NUUklQ
X1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJzdHJpcF90ZXN0LmNjIgorICBD
T1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncwor
ICAgIGFic2w6OmJhc2UKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0IGNoYXJfbWFwX3Rl
c3QKLXNldChDSEFSX01BUF9URVNUX1NSQyAiaW50ZXJuYWwvY2hhcl9tYXBfdGVzdC5jYyIpCi1z
ZXQoQ0hBUl9NQVBfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OnN0cmluZ3MpCi0KLWFic2xf
dGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBjaGFyX21hcF90ZXN0
Ci0gIFNPVVJDRVMKLSAgICAke0NIQVJfTUFQX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVT
Ci0gICAgJHtDSEFSX01BUF9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAiaW50
ZXJuYWwvY2hhcl9tYXBfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OnN0cmluZ3NfaW50ZXJuYWwKKyAgICBnbW9ja19tYWluCiApCiAK
LQotIyB0ZXN0IGNoYXJjb252X3Rlc3QKLXNldChDSEFSQ09OVl9URVNUX1NSQyAiY2hhcmNvbnZf
dGVzdC5jYyIpCi1zZXQoQ0hBUkNPTlZfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6OnN0cmlu
Z3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBj
aGFyY29udl90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke0NIQVJDT05WX1RFU1RfU1JDfQotICBQVUJM
SUNfTElCUkFSSUVTCi0gICAgJHtDSEFSQ09OVl9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNS
Q1MKKyAgICAiY2hhcmNvbnZfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BU
U30KKyAgREVQUworICAgIGFic2w6OnN0cmluZ3MKKyAgICBhYnNsOjpzdHJfZm9ybWF0CisgICAg
YWJzbDo6YmFzZQorICAgIGFic2w6OnBvdzEwX2hlbHBlcgorICAgIGdtb2NrX21haW4KICkKIAot
Ci0jIHRlc3QgY2hhcmNvbnZfcGFyc2VfdGVzdAotc2V0KENIQVJDT05WX1BBUlNFX1RFU1RfU1JD
ICJpbnRlcm5hbC9jaGFyY29udl9wYXJzZV90ZXN0LmNjIikKLXNldChDSEFSQ09OVl9QQVJTRV9U
RVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3RyaW5ncykKLQotYWJzbF90ZXN0KAotICBUQVJH
RVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIGNoYXJjb252X3BhcnNlX3Rlc3QKLSAgU09V
UkNFUwotICAgICR7Q0hBUkNPTlZfUEFSU0VfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMK
LSAgICAke0NIQVJDT05WX1BBUlNFX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAg
ICJpbnRlcm5hbC9jaGFyY29udl9wYXJzZS5oIgorICAgICJpbnRlcm5hbC9jaGFyY29udl9wYXJz
ZV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAg
YWJzbDo6c3RyaW5ncworICAgIGFic2w6OmJhc2UKKyAgICBnbW9ja19tYWluCiApCiAKK2Fic2xf
Y2NfdGVzdCgKKyAgTkFNRQorICAgIGNoYXJjb252X2JpZ2ludF90ZXN0CisgIFNSQ1MKKyAgICAi
aW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50LmgiCisgICAgImludGVybmFsL2NoYXJjb252X2JpZ2lu
dF90ZXN0LmNjIgorICAgICJpbnRlcm5hbC9jaGFyY29udl9wYXJzZS5oIgorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6
OmJhc2UKKyAgICBnbW9ja19tYWluCispCiAKLSMgdGVzdCBjaGFyY29udl9iaWdpbnRfdGVzdAot
c2V0KENIQVJDT05WX0JJR0lOVF9URVNUX1NSQyAiaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50X3Rl
c3QuY2MiKQotc2V0KENIQVJDT05WX0JJR0lOVF9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6
c3RyaW5ncykKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHN0cl9mb3JtYXQKKyAgSERS
UworICAgICJzdHJfZm9ybWF0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpzdHJfZm9ybWF0X2ludGVybmFsCisgIFBVQkxJQworKQogCi1h
YnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIGNoYXJjb252X2JpZ2ludF90ZXN0Ci0gIFNPVVJDRVMK
LSAgICAke0NIQVJDT05WX0JJR0lOVF9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAg
ICR7Q0hBUkNPTlZfQklHSU5UX1RFU1RfUFVCTElDX0xJQlJBUklFU30KLSkKLSMgdGVzdCBzdHJf
Zm9ybWF0X3Rlc3QKLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX2xpYnJhcnkoCisgIE5B
TUUKKyAgICBzdHJfZm9ybWF0X2ludGVybmFsCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvc3RyX2Zv
cm1hdC9hcmcuaCIKKyAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmgiCisgICAgImludGVy
bmFsL3N0cl9mb3JtYXQvY2hlY2tlci5oIgorICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVu
c2lvbi5oIgorICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2Zsb2F0X2NvbnZlcnNpb24uaCIKKyAg
ICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuaCIKKyAgICAiaW50ZXJuYWwvc3RyX2Zvcm1h
dC9wYXJzZXIuaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5jYyIKKyAg
ICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmNjIgorICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0
L2V4dGVuc2lvbi5jYyIKKyAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9mbG9hdF9jb252ZXJzaW9u
LmNjIgorICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1dC5jYyIKKyAgICAiaW50ZXJuYWwv
c3RyX2Zvcm1hdC9wYXJzZXIuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6
Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6dHlwZV90cmFpdHMKKyAgICBhYnNsOjppbnQxMjgKKyAg
ICBhYnNsOjpzcGFuCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHN0cl9mb3JtYXRf
dGVzdAotICBTT1VSQ0VTCisgIFNSQ1MKICAgICAic3RyX2Zvcm1hdF90ZXN0LmNjIgotICBQVUJM
SUNfTElCUkFSSUVTCi0gICAgYWJzbDo6YmFzZQorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NP
UFRTfQorICBERVBTCiAgICAgYWJzbDo6c3RyX2Zvcm1hdAogICAgIGFic2w6OnN0cmluZ3MKKyAg
ICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBnbW9ja19tYWluCispCisKK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQorICAgIHN0cl9mb3JtYXRfZXh0ZW5zaW9uX3Rlc3QKKyAgU1JDUworICAgICJpbnRl
cm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyX2Zvcm1hdAorICAgIGFic2w6OnN0cl9m
b3JtYXRfaW50ZXJuYWwKKyAgICBnbW9ja19tYWluCispCisKK2Fic2xfY2NfdGVzdCgKKyAgTkFN
RQorICAgIHN0cl9mb3JtYXRfYXJnX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9zdHJfZm9y
bWF0L2FyZ190ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBT
CisgICAgYWJzbDo6c3RyX2Zvcm1hdAorICAgIGFic2w6OnN0cl9mb3JtYXRfaW50ZXJuYWwKKyAg
ICBnbW9ja19tYWluCiApCiAKLSMgdGVzdCBzdHJfZm9ybWF0X2JpbmRfdGVzdAotYWJzbF90ZXN0
KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHN0cl9mb3JtYXRfYmluZF90
ZXN0Ci0gIFNPVVJDRVMKKyAgU1JDUwogICAgICJpbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmRfdGVz
dC5jYyIKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIHN0cl9mb3JtYXRfaW50ZXJuYWwKKyAgQ09Q
VFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN0cl9mb3JtYXRf
aW50ZXJuYWwKKyAgICBnbW9ja19tYWluCiApCiAKLSMgdGVzdCBzdHJfZm9ybWF0X2NoZWNrZXJf
dGVzdAotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHN0
cl9mb3JtYXRfY2hlY2tlcl90ZXN0Ci0gIFNPVVJDRVMKKyAgU1JDUwogICAgICJpbnRlcm5hbC9z
dHJfZm9ybWF0L2NoZWNrZXJfdGVzdC5jYyIKLSAgUFVCTElDX0xJQlJBUklFUworICBDT1BUUwor
ICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCiAgICAgYWJzbDo6c3RyX2Zvcm1hdAorICAg
IGdtb2NrX21haW4KICkKIAotIyB0ZXN0IHN0cl9mb3JtYXRfY29udmVydF90ZXN0Ci1hYnNsX3Rl
c3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3RyX2Zvcm1hdF9jb252
ZXJ0X3Rlc3QKLSAgU09VUkNFUworICBTUkNTCiAgICAgImludGVybmFsL3N0cl9mb3JtYXQvY29u
dmVydF90ZXN0LmNjIgotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgc3RyX2Zvcm1hdF9pbnRlcm5h
bAotICAgIGFic2w6Om51bWVyaWMKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAg
REVQUworICAgIGFic2w6OnN0cl9mb3JtYXRfaW50ZXJuYWwKKyAgICBhYnNsOjppbnQxMjgKKyAg
ICBnbW9ja19tYWluCiApCiAKLSMgdGVzdCBzdHJfZm9ybWF0X291dHB1dF90ZXN0Ci1hYnNsX3Rl
c3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgc3RyX2Zvcm1hdF9vdXRw
dXRfdGVzdAotICBTT1VSQ0VTCisgIFNSQ1MKICAgICAiaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRw
dXRfdGVzdC5jYyIKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIHN0cl9mb3JtYXRfZXh0ZW5zaW9u
X2ludGVybmFsCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBh
YnNsOjpzdHJfZm9ybWF0X2ludGVybmFsCisgICAgZ21vY2tfbWFpbgogKQogCi0jIHRlc3Qgc3Ry
X2Zvcm1hdF9wYXJzZXJfdGVzdAotYWJzbF90ZXN0KAotICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgK
KyAgTkFNRQogICAgIHN0cl9mb3JtYXRfcGFyc2VyX3Rlc3QKLSAgU09VUkNFUworICBTUkNTCiAg
ICAgImludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyX3Rlc3QuY2MiCi0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICBzdHJfZm9ybWF0X2ludGVybmFsCi0gICAgYWJzbDo6YmFzZQorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3RyX2Zvcm1hdF9pbnRlcm5h
bAorICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGdtb2NrX21haW4KKykKKworYWJzbF9jY19s
aWJyYXJ5KAorICBOQU1FCisgICAgcG93MTBfaGVscGVyCisgIEhEUlMKKyAgICAiaW50ZXJuYWwv
cG93MTBfaGVscGVyLmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvcG93MTBfaGVscGVyLmNjIgor
ICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBURVNUT05MWQorKQorCithYnNsX2Nj
X3Rlc3QoCisgIE5BTUUKKyAgICBwb3cxMF9oZWxwZXJfdGVzdAorICBTUkNTCisgICAgImludGVy
bmFsL3BvdzEwX2hlbHBlcl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRT
fQorICBERVBTCisgICAgYWJzbDo6cG93MTBfaGVscGVyCisgICAgYWJzbDo6c3RyX2Zvcm1hdAor
ICAgIGdtb2NrX21haW4KICkKLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9hc2NpaS5jYwppbmRleCBjOTQ4MWU4ODY1NDJiM2ZiYzk1ZWZjMGZl
NjU3MzljMTk4YTJlZWM1Li4zZjdjNTgxZjEzOWZkMDMwNjczYmI1MWRjNDUyZWRjNWM1NDRkYTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
YXNjaWkuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuaAppbmRl
eCA0OGE5ZGEyMmU3NjlhODUxMjhhNjljZjJkZmMzMzI5ODBhZmVkNDQ1Li5mOWU0ZmQxZGJjYWY0
NTQ5OWFmNzQ0YjFmYWMwZjI3MmI2NGM1MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2Fz
Y2lpLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaS5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpX2JlbmNo
bWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWlfYmVuY2htYXJrLmNjCmluZGV4IDhkZWE0Yjhj
ZmJmOTMwNzU4ZTIyMDI2MjYwNjIyMGQ4M2ZiZmUwYzIuLmFjYTQ1OGM4MDQyZmVkMGRlNTk4NDBk
ZTU0NmFiYmIxZjliOTY2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWlfYmVuY2ht
YXJrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWlfYmVuY2htYXJrLmNjCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2FzY2lpX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpX3Rlc3QuY2MKaW5kZXggOTkwM2Iw
NDk2Yjc3MTlkZjcwM2ZjMTFiZDcwNTE0YzVjNzRkZGQ5NS4uNWVjZDIzZjg2OTdkNzY3N2NmYzI3
ZmJiODk2NTc1ZTZjZWZhYWVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaV90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWlfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29u
di5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnYuY2MKaW5kZXggYzdiOGM5OGIxYjQ0NTljNTZl
YTg1MWU5MjgxZTM1YTkyNjEzYzYwZi4uYmMwN2U3YWI5ZTRmNTBjODY1ZDZiNWVmNjIyYzJlYWZi
ZDRhZmRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2NoYXJjb252LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCkBAIC01NTEsOSArNTUxLDEwIEBAIENhbGN1bGF0ZWRGbG9hdCBDYWxjdWxhdGVGcm9t
UGFyc2VkRGVjaW1hbCgKICAgaW50IGJpbmFyeV9leHBvbmVudCA9IFBvd2VyMTBFeHBvbmVudChw
YXJzZWRfZGVjaW1hbC5leHBvbmVudCk7CiAKICAgLy8gRGlzY2FyZCBiaXRzIHRoYXQgYXJlIGlu
YWNjdXJhdGUgZHVlIHRvIHRydW5jYXRpb24gZXJyb3IuICBUaGUgbWFnaWMKLSAgLy8gYG1hbnRp
c3NhX3dpZHRoYCBjb25zdGFudHMgYmVsb3cgYXJlIGp1c3RpZmllZCBpbiBjaGFyY29udl9hbGdv
cml0aG0ubWQuCi0gIC8vIFRoZXkgcmVwcmVzZW50IHRoZSBudW1iZXIgb2YgYml0cyBpbiBgd2lk
ZV9iaW5hcnlfbWFudGlzc2FgIHRoYXQgYXJlCi0gIC8vIGd1YXJhbnRlZWQgdG8gYmUgdW5hZmZl
Y3RlZCBieSBlcnJvciBwcm9wYWdhdGlvbi4KKyAgLy8gYG1hbnRpc3NhX3dpZHRoYCBjb25zdGFu
dHMgYmVsb3cgYXJlIGp1c3RpZmllZCBpbgorICAvLyBodHRwczovL2Fic2VpbC5pby9hYm91dC9k
ZXNpZ24vY2hhcmNvbnYuIFRoZXkgcmVwcmVzZW50IHRoZSBudW1iZXIgb2YgYml0cworICAvLyBp
biBgd2lkZV9iaW5hcnlfbWFudGlzc2FgIHRoYXQgYXJlIGd1YXJhbnRlZWQgdG8gYmUgdW5hZmZl
Y3RlZCBieSBlcnJvcgorICAvLyBwcm9wYWdhdGlvbi4KICAgYm9vbCBtYW50aXNzYV9leGFjdDsK
ICAgaW50IG1hbnRpc3NhX3dpZHRoOwogICBpZiAocGFyc2VkX2RlY2ltYWwuc3VicmFuZ2VfYmVn
aW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnYuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvY2hhcmNvbnYuaAppbmRleCAwNzM1MzgyOTYyMzU2Y2ZmN2JmYjVmM2ViZDNhMDM5M2QyZDI4
MTBhLi4zZjU4OTFiYTdmM2ZjNGMzY2RhZTU4MWVjOTRlZWUxOTQ0OTc3Njk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5o
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC00OSw5ICs0OSw5
IEBAIHN0cnVjdCBmcm9tX2NoYXJzX3Jlc3VsdCB7CiAvLyB0aGlzIG9ubHkgc3VwcG9ydHMgdGhl
IGBkb3VibGVgIGFuZCBgZmxvYXRgIHR5cGVzLgogLy8KIC8vIFRoaXMgaW50ZXJmYWNlIGluY29y
cG9yYXRlcyB0aGUgcHJvcG9zZWQgcmVzb2x1dGlvbnMgZm9yIGxpYnJhcnkgaXNzdWVzCi0vLyBE
UiAzODAwIGFuZCBEUiAzODAxLiAgSWYgdGhlc2UgYXJlIGFkb3B0ZWQgd2l0aCBkaWZmZXJlbnQg
d29yZGluZywKKy8vIERSIDMwODAgYW5kIERSIDMwODEuICBJZiB0aGVzZSBhcmUgYWRvcHRlZCB3
aXRoIGRpZmZlcmVudCB3b3JkaW5nLAogLy8gQWJzZWlsJ3MgYmVoYXZpb3Igd2lsbCBjaGFuZ2Ug
dG8gbWF0Y2ggdGhlIHN0YW5kYXJkLiAgKFRoZSBiZWhhdmlvciBtb3N0Ci0vLyBsaWtlbHkgdG8g
Y2hhbmdlIGlzIGZvciBEUiAzODAxLCB3aGljaCBzYXlzIHdoYXQgYHZhbHVlYCB3aWxsIGJlIHNl
dCB0byBpbgorLy8gbGlrZWx5IHRvIGNoYW5nZSBpcyBmb3IgRFIgMzA4MSwgd2hpY2ggc2F5cyB3
aGF0IGB2YWx1ZWAgd2lsbCBiZSBzZXQgdG8gaW4KIC8vIHRoZSBjYXNlIG9mIG92ZXJmbG93IGFu
ZCB1bmRlcmZsb3cuICBDb2RlIHRoYXQgd2FudHMgdG8gYXZvaWQgcG9zc2libGUKIC8vIGJyZWFr
aW5nIGNoYW5nZXMgaW4gdGhpcyBhcmVhIHNob3VsZCBub3QgZGVwZW5kIG9uIGB2YWx1ZWAgd2hl
biB0aGUgcmV0dXJuZWQKIC8vIGZyb21fY2hhcnNfcmVzdWx0IGluZGljYXRlcyBhIHJhbmdlIGVy
cm9yLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnZfYmVuY2htYXJrLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9jaGFyY29udl9iZW5jaG1hcmsuY2MKaW5kZXggZmQ4M2Y0NGUzZDA5Y2Vi
OTQ0MTI1YmRkMTlmNzI4MmMzOWY2MmVlNi4uNjQ0YjJhYmRmNjhmYTFmYWVmOWRhNTc0YzVmYmU5
YWZlOTg1N2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udl9iZW5jaG1hcmsu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udl9iZW5jaG1hcmsuY2MKQEAgLTQsNyArNCw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
Y2hhcmNvbnZfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnZfdGVzdC5jYwppbmRleCA4
OTQxOGZlOTQ4ZmZlZGM0Yjc1YWMyZmE4MTBmZDQ0MTY2MDVjM2JkLi5iNThmYWQyNjlkOGIwNzFh
NzRiYzZkOTNiMzk2Y2UyZmZjNDI5Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJj
b252X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udl90ZXN0LmNjCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOSw3ICsxOSw5IEBACiAKICNp
bmNsdWRlICJnbW9jay9nbW9jay5oIgogI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVk
ZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBlci5oIgogI2luY2x1ZGUgImFic2wv
c3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaCIK
IAogI2lmZGVmIF9NU0NfRlVMTF9WRVIKICNkZWZpbmUgQUJTTF9DT01QSUxFUl9ET0VTX0VYQUNU
X1JPVU5ESU5HIDAKQEAgLTMxLDYgKzMzLDggQEAKIAogbmFtZXNwYWNlIHsKIAordXNpbmcgYWJz
bDo6c3RyaW5nc19pbnRlcm5hbDo6UG93MTA7CisKICNpZiBBQlNMX0NPTVBJTEVSX0RPRVNfRVhB
Q1RfUk9VTkRJTkcKIAogLy8gVGVzdHMgdGhhdCB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGFjY2VwdGVk
IGJ5IGFic2w6OmZyb21fY2hhcnMsIGFuZCB0aGF0IGl0CkBAIC0yNzUsNyArMjc5LDggQEAgdm9p
ZCBUZXN0SGFsZndheVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtYW50aXNzYSwgaW50IGV4cG9u
ZW50LAogICBhYnNsOjpmcm9tX2NoYXJzKGxvd19yZXAuZGF0YSgpLCBsb3dfcmVwLmRhdGEoKSAr
IGxvd19yZXAuc2l6ZSgpLCBhY3R1YWxfbG93KTsKICAgRVhQRUNUX0VRKGV4cGVjdGVkX2xvdywg
YWN0dWFsX2xvdyk7CiAKLSAgc3RkOjpzdHJpbmcgaGlnaF9yZXAgPSBhYnNsOjpTdHJDYXQobWFu
dGlzc2EsIHN0ZDo6c3RyaW5nKDEwMDAsICcwJyksICIxZSIsIGV4cG9uZW50KTsKKyAgc3RkOjpz
dHJpbmcgaGlnaF9yZXAgPQorICAgICAgYWJzbDo6U3RyQ2F0KG1hbnRpc3NhLCBzdGQ6OnN0cmlu
ZygxMDAwLCAnMCcpLCAiMWUiLCBleHBvbmVudCk7CiAgIEZsb2F0VHlwZSBhY3R1YWxfaGlnaCA9
IDA7CiAgIGFic2w6OmZyb21fY2hhcnMoaGlnaF9yZXAuZGF0YSgpLCBoaWdoX3JlcC5kYXRhKCkg
KyBoaWdoX3JlcC5zaXplKCksCiAgICAgICAgICAgICAgICAgICAgYWN0dWFsX2hpZ2gpOwpAQCAt
Njc4LDcgKzY4Myw4IEBAIHZvaWQgVGVzdE92ZXJmbG93QW5kVW5kZXJmbG93KAogICAgIGF1dG8g
cmVzdWx0ID0KICAgICAgICAgYWJzbDo6ZnJvbV9jaGFycyhpbnB1dC5kYXRhKCksIGlucHV0LmRh
dGEoKSArIGlucHV0LnNpemUoKSwgYWN0dWFsKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmVjLCBz
dGQ6OmVycmMoKSk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwpOworICAgIEVYUEVD
VF9FUShleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICA8PCBhYnNsOjpTdHJGb3JtYXQoIiVhIHZz
ICVhIiwgZXhwZWN0ZWQsIGFjdHVhbCk7CiAgIH0KICAgLy8gdGVzdCBsZWdhbCB2YWx1ZXMgbmVh
ciB1cHBlcl9ib3VuZAogICBmb3IgKGluZGV4ID0gdXBwZXJfYm91bmQsIHN0ZXAgPSAxOyBpbmRl
eCA+IGxvd2VyX2JvdW5kOwpAQCAtNjkwLDcgKzY5Niw4IEBAIHZvaWQgVGVzdE92ZXJmbG93QW5k
VW5kZXJmbG93KAogICAgIGF1dG8gcmVzdWx0ID0KICAgICAgICAgYWJzbDo6ZnJvbV9jaGFycyhp
bnB1dC5kYXRhKCksIGlucHV0LmRhdGEoKSArIGlucHV0LnNpemUoKSwgYWN0dWFsKTsKICAgICBF
WFBFQ1RfRVEocmVzdWx0LmVjLCBzdGQ6OmVycmMoKSk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVk
LCBhY3R1YWwpOworICAgIEVYUEVDVF9FUShleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICA8PCBh
YnNsOjpTdHJGb3JtYXQoIiVhIHZzICVhIiwgZXhwZWN0ZWQsIGFjdHVhbCk7CiAgIH0KICAgLy8g
VGVzdCB1bmRlcmZsb3cgdmFsdWVzIGJlbG93IGxvd2VyX2JvdW5kCiAgIGZvciAoaW5kZXggPSBs
b3dlcl9ib3VuZCAtIDEsIHN0ZXAgPSAxOyBpbmRleCA+IC0xMDAwMDAwOwpAQCAtNzQ3LDcgKzc1
NCw3IEBAIFRFU1QoRnJvbUNoYXJzLCBIZXhkZWNpbWFsRmxvYXRMaW1pdHMpIHsKIC8vIGFjY2Vw
dGFibGUgZXhwb25lbnRzIGluIHRoaXMgdGVzdC4KIFRFU1QoRnJvbUNoYXJzLCBEZWNpbWFsRG91
YmxlTGltaXRzKSB7CiAgIGF1dG8gaW5wdXRfZ2VuID0gW10oaW50IGluZGV4KSB7IHJldHVybiBh
YnNsOjpTdHJDYXQoIjEuMGUiLCBpbmRleCk7IH07Ci0gIGF1dG8gZXhwZWN0ZWRfZ2VuID0gW10o
aW50IGluZGV4KSB7IHJldHVybiBzdGQ6OnBvdygxMC4wLCBpbmRleCk7IH07CisgIGF1dG8gZXhw
ZWN0ZWRfZ2VuID0gW10oaW50IGluZGV4KSB7IHJldHVybiBQb3cxMChpbmRleCk7IH07CiAgIFRl
c3RPdmVyZmxvd0FuZFVuZGVyZmxvdzxkb3VibGU+KGlucHV0X2dlbiwgZXhwZWN0ZWRfZ2VuLCAt
MzIzLCAzMDgpOwogfQogCkBAIC03NTksNyArNzY2LDcgQEAgVEVTVChGcm9tQ2hhcnMsIERlY2lt
YWxEb3VibGVMaW1pdHMpIHsKIC8vIGFjY2VwdGFibGUgZXhwb25lbnRzIGluIHRoaXMgdGVzdC4K
IFRFU1QoRnJvbUNoYXJzLCBEZWNpbWFsRmxvYXRMaW1pdHMpIHsKICAgYXV0byBpbnB1dF9nZW4g
PSBbXShpbnQgaW5kZXgpIHsgcmV0dXJuIGFic2w6OlN0ckNhdCgiMS4wZSIsIGluZGV4KTsgfTsK
LSAgYXV0byBleHBlY3RlZF9nZW4gPSBbXShpbnQgaW5kZXgpIHsgcmV0dXJuIHN0ZDo6cG93KDEw
LjAsIGluZGV4KTsgfTsKKyAgYXV0byBleHBlY3RlZF9nZW4gPSBbXShpbnQgaW5kZXgpIHsgcmV0
dXJuIFBvdzEwKGluZGV4KTsgfTsKICAgVGVzdE92ZXJmbG93QW5kVW5kZXJmbG93PGZsb2F0Pihp
bnB1dF9nZW4sIGV4cGVjdGVkX2dlbiwgLTQ1LCAzOCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvZXNjYXBpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmNjCmluZGV4IDhk
OGIwMGIyMDAxY2U4MzA3YjQ4Nzg4MDA3Y2M1NjU1YTc1ZjU0ZmEuLjBkMzM2ZTNmZjY5MWI3MmY4
NjA0MGM4MzRkZmQ4M2ZlZjM1MWY4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBp
bmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZy5jYwpAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAg
ICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTc5LDcgKzE3OSw4IEBAIGJvb2wgQ1VuZXNjYXBl
SW50ZXJuYWwoYWJzbDo6c3RyaW5nX3ZpZXcgc291cmNlLCBib29sIGxlYXZlX251bGxzX2VzY2Fw
ZWQsCiAgICAgICAgICAgICBjaCA9IChjaCA8PCA0KSArIGhleF9kaWdpdF90b19pbnQoKisrcCk7
CiAgICAgICAgICAgaWYgKGNoID4gMHhGRikgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0g
ICAgICAgICAgICAgICplcnJvciA9ICJWYWx1ZSBvZiBcXCIgKyBzdGQ6OnN0cmluZyhoZXhfc3Rh
cnQsIHAgKyAxIC0gaGV4X3N0YXJ0KSArCisgICAgICAgICAgICAgICplcnJvciA9ICJWYWx1ZSBv
ZiBcXCIgKworICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyhoZXhfc3RhcnQsIHAg
KyAxIC0gaGV4X3N0YXJ0KSArCiAgICAgICAgICAgICAgICAgICAgICAgICIgZXhjZWVkcyAweGZm
IjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5NCw3ICsy
OTUsNyBAQCBib29sIENVbmVzY2FwZUludGVybmFsKGFic2w6OnN0cmluZ192aWV3IHNvdXJjZSwg
Ym9vbCBsZWF2ZV9udWxsc19lc2NhcGVkLAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gQ1VuZXNjYXBl
SW50ZXJuYWwoKQogLy8KLS8vICAgIFNhbWUgYXMgYWJvdmUgYnV0IHVzZXMgYSBDKysgc3RyaW5n
IGZvciBvdXRwdXQuICdzb3VyY2UnIGFuZCAnZGVzdCcKKy8vICAgIFNhbWUgYXMgYWJvdmUgYnV0
IHVzZXMgYSBzdGQ6OnN0cmluZyBmb3Igb3V0cHV0LiAnc291cmNlJyBhbmQgJ2Rlc3QnCiAvLyAg
ICBtYXkgYmUgdGhlIHNhbWUuCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBib29sIENVbmVzY2FwZUludGVy
bmFsKGFic2w6OnN0cmluZ192aWV3IHNvdXJjZSwgYm9vbCBsZWF2ZV9udWxsc19lc2NhcGVkLApA
QCAtMzI0LDcgKzMyNSw4IEBAIGJvb2wgQ1VuZXNjYXBlSW50ZXJuYWwoYWJzbDo6c3RyaW5nX3Zp
ZXcgc291cmNlLCBib29sIGxlYXZlX251bGxzX2VzY2FwZWQsCiAvLwogLy8gICAgRXNjYXBlZCBj
aGFyczogXG4sIFxyLCBcdCwgIiwgJywgXCwgYW5kICFhYnNsOjphc2NpaV9pc3ByaW50KCkuCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1zdGQ6OnN0cmluZyBDRXNjYXBlSW50ZXJuYWwoYWJzbDo6c3RyaW5n
X3ZpZXcgc3JjLCBib29sIHVzZV9oZXgsIGJvb2wgdXRmOF9zYWZlKSB7CitzdGQ6OnN0cmluZyBD
RXNjYXBlSW50ZXJuYWwoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBib29sIHVzZV9oZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1dGY4X3NhZmUpIHsKICAgc3RkOjpzdHJpbmcg
ZGVzdDsKICAgYm9vbCBsYXN0X2hleF9lc2NhcGUgPSBmYWxzZTsgIC8vIHRydWUgaWYgbGFzdCBv
dXRwdXQgY2hhciB3YXMgXHhOTi4KIApAQCAtNzg2LDcgKzc4OCw3IEBAIHNpemVfdCBDYWxjdWxh
dGVCYXNlNjRFc2NhcGVkTGVuSW50ZXJuYWwoc2l6ZV90IGlucHV0X2xlbiwgYm9vbCBkb19wYWRk
aW5nKSB7CiAgIC8vIEJhc2U2NCBlbmNvZGVzIHRocmVlIGJ5dGVzIG9mIGlucHV0IGF0IGEgdGlt
ZS4gSWYgdGhlIGlucHV0IGlzIG5vdAogICAvLyBkaXZpc2libGUgYnkgdGhyZWUsIHdlIHBhZCBh
cyBhcHByb3ByaWF0ZS4KICAgLy8KLSAgLy8gKGZyb20gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjMzU0OCkKKyAgLy8gKGZyb20gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM1
NDgpCiAgIC8vIFNwZWNpYWwgcHJvY2Vzc2luZyBpcyBwZXJmb3JtZWQgaWYgZmV3ZXIgdGhhbiAy
NCBiaXRzIGFyZSBhdmFpbGFibGUKICAgLy8gYXQgdGhlIGVuZCBvZiB0aGUgZGF0YSBiZWluZyBl
bmNvZGVkLiAgQSBmdWxsIGVuY29kaW5nIHF1YW50dW0gaXMKICAgLy8gYWx3YXlzIGNvbXBsZXRl
ZCBhdCB0aGUgZW5kIG9mIGEgcXVhbnRpdHkuICBXaGVuIGZld2VyIHRoYW4gMjQgaW5wdXQKQEAg
LTgwMCwxMiArODAyLDEyIEBAIHNpemVfdCBDYWxjdWxhdGVCYXNlNjRFc2NhcGVkTGVuSW50ZXJu
YWwoc2l6ZV90IGlucHV0X2xlbiwgYm9vbCBkb19wYWRkaW5nKSB7CiAgIHNpemVfdCBsZW4gPSAo
aW5wdXRfbGVuIC8gMykgKiA0OwogCiAgIGlmIChpbnB1dF9sZW4gJSAzID09IDApIHsKLSAgICAv
LyAoZnJvbSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNTQ4KQorICAgIC8vIChmcm9t
IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNTQ4KQogICAgIC8vICgxKSB0aGUgZmlu
YWwgcXVhbnR1bSBvZiBlbmNvZGluZyBpbnB1dCBpcyBhbiBpbnRlZ3JhbCBtdWx0aXBsZSBvZiAy
NAogICAgIC8vIGJpdHM7IGhlcmUsIHRoZSBmaW5hbCB1bml0IG9mIGVuY29kZWQgb3V0cHV0IHdp
bGwgYmUgYW4gaW50ZWdyYWwKICAgICAvLyBtdWx0aXBsZSBvZiA0IGNoYXJhY3RlcnMgd2l0aCBu
byAiPSIgcGFkZGluZywKICAgfSBlbHNlIGlmIChpbnB1dF9sZW4gJSAzID09IDEpIHsKLSAgICAv
LyAoZnJvbSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNTQ4KQorICAgIC8vIChmcm9t
IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNTQ4KQogICAgIC8vICgyKSB0aGUgZmlu
YWwgcXVhbnR1bSBvZiBlbmNvZGluZyBpbnB1dCBpcyBleGFjdGx5IDggYml0czsgaGVyZSwgdGhl
CiAgICAgLy8gZmluYWwgdW5pdCBvZiBlbmNvZGVkIG91dHB1dCB3aWxsIGJlIHR3byBjaGFyYWN0
ZXJzIGZvbGxvd2VkIGJ5IHR3bwogICAgIC8vICI9IiBwYWRkaW5nIGNoYXJhY3RlcnMsIG9yCkBA
IC04MTQsNyArODE2LDcgQEAgc2l6ZV90IENhbGN1bGF0ZUJhc2U2NEVzY2FwZWRMZW5JbnRlcm5h
bChzaXplX3QgaW5wdXRfbGVuLCBib29sIGRvX3BhZGRpbmcpIHsKICAgICAgIGxlbiArPSAyOwog
ICAgIH0KICAgfSBlbHNlIHsgIC8vIChpbnB1dF9sZW4gJSAzID09IDIpCi0gICAgLy8gKGZyb20g
aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzU0OCkKKyAgICAvLyAoZnJvbSBodHRwczov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzU0OCkKICAgICAvLyAoMykgdGhlIGZpbmFsIHF1YW50
dW0gb2YgZW5jb2RpbmcgaW5wdXQgaXMgZXhhY3RseSAxNiBiaXRzOyBoZXJlLCB0aGUKICAgICAv
LyBmaW5hbCB1bml0IG9mIGVuY29kZWQgb3V0cHV0IHdpbGwgYmUgdGhyZWUgY2hhcmFjdGVycyBm
b2xsb3dlZCBieSBvbmUKICAgICAvLyAiPSIgcGFkZGluZyBjaGFyYWN0ZXIuCkBAIC04NDMsOCAr
ODQ1LDggQEAgc2l6ZV90IEJhc2U2NEVzY2FwZUludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IHNyYywgc2l6ZV90IHN6c3JjLCBjaGFyKiBkZXN0LAogCiAgIC8vIFRocmVlIGJ5dGVzIG9mIGRh
dGEgZW5jb2RlcyB0byBmb3VyIGNoYXJhY3RlcnMgb2YgY3lwaGVydGV4dC4KICAgLy8gU28gd2Ug
Y2FuIHB1bXAgdGhyb3VnaCB0aHJlZS1ieXRlIGNodW5rcyBhdG9taWNhbGx5LgotICBpZiAoc3pz
cmMgPj0gMykgeyAgLy8gImxpbWl0X3NyYyAtIDMiIGlzIFVCIGlmIHN6c3JjIDwgMwotICAgIHdo
aWxlIChjdXJfc3JjIDwgbGltaXRfc3JjIC0gMykgeyAgLy8gYXMgbG9uZyBhcyB3ZSBoYXZlID49
IDMyIGJpdHMKKyAgaWYgKHN6c3JjID49IDMpIHsgIC8vICJsaW1pdF9zcmMgLSAzIiBpcyBVQiBp
ZiBzenNyYyA8IDMuCisgICAgd2hpbGUgKGN1cl9zcmMgPCBsaW1pdF9zcmMgLSAzKSB7ICAvLyBX
aGlsZSB3ZSBoYXZlID49IDMyIGJpdHMuCiAgICAgICB1aW50MzJfdCBpbiA9IGFic2w6OmJpZ19l
bmRpYW46OkxvYWQzMihjdXJfc3JjKSA+PiA4OwogCiAgICAgICBjdXJfZGVzdFswXSA9IGJhc2U2
NFtpbiA+PiAxOF07CkBAIC0xMDExLDcgKzEwMTMsOCBAQCB2b2lkIEhleFN0cmluZ1RvQnl0ZXNJ
bnRlcm5hbChjb25zdCBjaGFyKiBmcm9tLCBUIHRvLCBwdHJkaWZmX3QgbnVtKSB7CiAgIH0KIH0K
IAotLy8gVGhpcyBpcyBhIHRlbXBsYXRlZCBmdW5jdGlvbiBzbyB0aGF0IFQgY2FuIGJlIGVpdGhl
ciBhIGNoYXIqIG9yIGEgc3RyaW5nLgorLy8gVGhpcyBpcyBhIHRlbXBsYXRlZCBmdW5jdGlvbiBz
byB0aGF0IFQgY2FuIGJlIGVpdGhlciBhIGNoYXIqIG9yIGEKKy8vIHN0ZDo6c3RyaW5nLgogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiB2b2lkIEJ5dGVzVG9IZXhTdHJpbmdJbnRlcm5hbChjb25zdCB1
bnNpZ25lZCBjaGFyKiBzcmMsIFQgZGVzdCwgcHRyZGlmZl90IG51bSkgewogICBhdXRvIGRlc3Rf
cHRyID0gJmRlc3RbMF07CkBAIC0xMDI4LDcgKzEwMzEsOCBAQCB2b2lkIEJ5dGVzVG9IZXhTdHJp
bmdJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMsIFQgZGVzdCwgcHRyZGlmZl90IG51
bSkgewogLy8KIC8vIFNlZSBDVW5lc2NhcGVJbnRlcm5hbCgpIGZvciBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWxzLgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotYm9vbCBDVW5lc2NhcGUoYWJzbDo6c3RyaW5nX3Zp
ZXcgc291cmNlLCBzdGQ6OnN0cmluZyogZGVzdCwgc3RkOjpzdHJpbmcqIGVycm9yKSB7Citib29s
IENVbmVzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBzb3VyY2UsIHN0ZDo6c3RyaW5nKiBkZXN0LAor
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIGVycm9yKSB7CiAgIHJldHVybiBDVW5lc2NhcGVJ
bnRlcm5hbChzb3VyY2UsIGtVbmVzY2FwZU51bGxzLCBkZXN0LCBlcnJvcik7CiB9CiAKQEAgLTEw
NTEsMTAgKzEwNTUsMTAgQEAgc3RkOjpzdHJpbmcgVXRmOFNhZmVDSGV4RXNjYXBlKGFic2w6OnN0
cmluZ192aWV3IHNyYykgewogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBwdHJkaWZmX3QgQmFz
ZTY0VW5lc2NhcGUoKSAtIGJhc2U2NCBkZWNvZGVyCi0vLyBwdHJkaWZmX3QgQmFzZTY0RXNjYXBl
KCkgLSBiYXNlNjQgZW5jb2RlcgotLy8gcHRyZGlmZl90IFdlYlNhZmVCYXNlNjRVbmVzY2FwZSgp
IC0gR29vZ2xlJ3MgdmFyaWF0aW9uIG9mIGJhc2U2NCBkZWNvZGVyCi0vLyBwdHJkaWZmX3QgV2Vi
U2FmZUJhc2U2NEVzY2FwZSgpIC0gR29vZ2xlJ3MgdmFyaWF0aW9uIG9mIGJhc2U2NCBlbmNvZGVy
CisvLyBCYXNlNjRVbmVzY2FwZSgpIC0gYmFzZTY0IGRlY29kZXIKKy8vIEJhc2U2NEVzY2FwZSgp
IC0gYmFzZTY0IGVuY29kZXIKKy8vIFdlYlNhZmVCYXNlNjRVbmVzY2FwZSgpIC0gR29vZ2xlJ3Mg
dmFyaWF0aW9uIG9mIGJhc2U2NCBkZWNvZGVyCisvLyBXZWJTYWZlQmFzZTY0RXNjYXBlKCkgLSBH
b29nbGUncyB2YXJpYXRpb24gb2YgYmFzZTY0IGVuY29kZXIKIC8vCiAvLyBDaGVjayBvdXQKIC8v
IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIwNDUgZm9yIGZvcm1hbCBkZXNjcmlwdGlv
biwgYnV0IHdoYXQgd2UKQEAgLTEwOTIsNiArMTA5NiwyMCBAQCB2b2lkIFdlYlNhZmVCYXNlNjRF
c2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBzdGQ6OnN0cmluZyogZGVzdCkgewogICAgICAg
ICAgICAgICAgICAgICAgICBzcmMuc2l6ZSgpLCBkZXN0LCBmYWxzZSwga1dlYlNhZmVCYXNlNjRD
aGFycyk7CiB9CiAKK3N0ZDo6c3RyaW5nIEJhc2U2NEVzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBz
cmMpIHsKKyAgc3RkOjpzdHJpbmcgZGVzdDsKKyAgQmFzZTY0RXNjYXBlSW50ZXJuYWwocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc3JjLmRhdGEoKSksCisgICAgICAgICAg
ICAgICAgICAgICAgIHNyYy5zaXplKCksICZkZXN0LCB0cnVlLCBrQmFzZTY0Q2hhcnMpOworICBy
ZXR1cm4gZGVzdDsKK30KKworc3RkOjpzdHJpbmcgV2ViU2FmZUJhc2U2NEVzY2FwZShhYnNsOjpz
dHJpbmdfdmlldyBzcmMpIHsKKyAgc3RkOjpzdHJpbmcgZGVzdDsKKyAgQmFzZTY0RXNjYXBlSW50
ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc3JjLmRhdGEoKSks
CisgICAgICAgICAgICAgICAgICAgICAgIHNyYy5zaXplKCksICZkZXN0LCBmYWxzZSwga1dlYlNh
ZmVCYXNlNjRDaGFycyk7CisgIHJldHVybiBkZXN0OworfQorCiBzdGQ6OnN0cmluZyBIZXhTdHJp
bmdUb0J5dGVzKGFic2w6OnN0cmluZ192aWV3IGZyb20pIHsKICAgc3RkOjpzdHJpbmcgcmVzdWx0
OwogICBjb25zdCBhdXRvIG51bSA9IGZyb20uc2l6ZSgpIC8gMjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvZXNjYXBpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuaAppbmRleCAyOTY1
OTczMDRlNmNlM2Y1ODY1ZGMwM2E5NjdmMzQzMThlNjliOTFjLi4xOThiOTM0ODc1ZTU2ODMwZWFl
MWU5Yjc5OThhZTc1Y2VjMzM0ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5n
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZy5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOSw3ICsxOSw2IEBACiAvLwogLy8gVGhpcyBoZWFkZXIg
ZmlsZSBjb250YWlucyBzdHJpbmcgdXRpbGl0aWVzIGludm9sdmVkIGluIGVzY2FwaW5nIGFuZAog
Ly8gdW5lc2NhcGluZyBzdHJpbmdzIGluIHZhcmlvdXMgd2F5cy4KLS8vCiAKICNpZm5kZWYgQUJT
TF9TVFJJTkdTX0VTQ0FQSU5HX0hfCiAjZGVmaW5lIEFCU0xfU1RSSU5HU19FU0NBUElOR19IXwpA
QCAtMzgsNyArMzcsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyBDVW5lc2NhcGUoKQogLy8KIC8v
IFVuZXNjYXBlcyBhIGBzb3VyY2VgIHN0cmluZyBhbmQgY29waWVzIGl0IGludG8gYGRlc3RgLCBy
ZXdyaXRpbmcgQy1zdHlsZQotLy8gZXNjYXBlIHNlcXVlbmNlcyAoaHR0cDovL2VuLmNwcHJlZmVy
ZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZXNjYXBlKSBpbnRvCisvLyBlc2NhcGUgc2VxdWVuY2Vz
IChodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZXNjYXBlKSBpbnRv
CiAvLyB0aGVpciBwcm9wZXIgY29kZSBwb2ludCBlcXVpdmFsZW50cywgcmV0dXJuaW5nIGB0cnVl
YCBpZiBzdWNjZXNzZnVsLgogLy8KIC8vIFRoZSBmb2xsb3dpbmcgdW5lc2NhcGUgc2VxdWVuY2Vz
IGNhbiBiZSBoYW5kbGVkOgpAQCAtNTYsNyArNTUsNiBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAg
ICAgVVRGLTguIChFLmcuLCBgXHUyMDE5YCB1bmVzY2FwZXMgdG8gdGhlIHRocmVlIGJ5dGVzIDB4
RTIsIDB4ODAsIGFuZAogLy8gICAgIDB4OTkpLgogLy8KLS8vCiAvLyBJZiBhbnkgZXJyb3JzIGFy
ZSBlbmNvdW50ZXJlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWAsIGxlYXZpbmcgdGhl
CiAvLyBgZGVzdGAgb3V0cHV0IHBhcmFtZXRlciBpbiBhbiB1bnNwZWNpZmllZCBzdGF0ZSwgYW5k
IHN0b3JlcyB0aGUgZmlyc3QKIC8vIGVuY291bnRlcmVkIGVycm9yIGluIGBlcnJvcmAuIFRvIGRp
c2FibGUgZXJyb3IgcmVwb3J0aW5nLCBzZXQgYGVycm9yYCB0bwpAQCAtODAsNyArNzgsNyBAQCBp
bmxpbmUgYm9vbCBDVW5lc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc291cmNlLCBzdGQ6OnN0cmlu
ZyogZGVzdCkgewogLy8gQ0VzY2FwZSgpCiAvLwogLy8gRXNjYXBlcyBhICdzcmMnIHN0cmluZyB1
c2luZyBDLXN0eWxlIGVzY2FwZXMgc2VxdWVuY2VzCi0vLyAoaHR0cDovL2VuLmNwcHJlZmVyZW5j
ZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZXNjYXBlKSwgZXNjYXBpbmcgb3RoZXIKKy8vIChodHRwczov
L2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZXNjYXBlKSwgZXNjYXBpbmcgb3Ro
ZXIKIC8vIG5vbi1wcmludGFibGUvbm9uLXdoaXRlc3BhY2UgYnl0ZXMgYXMgb2N0YWwgc2VxdWVu
Y2VzIChlLmcuICJcMzc3IikuCiAvLwogLy8gRXhhbXBsZToKQEAgLTEzNCwxNiArMTMyLDE4IEBA
IGJvb2wgV2ViU2FmZUJhc2U2NFVuZXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYywgc3RkOjpz
dHJpbmcqIGRlc3QpOwogCiAvLyBCYXNlNjRFc2NhcGUoKQogLy8KLS8vIEVuY29kZXMgYSBgc3Jj
YCBzdHJpbmcgaW50byBhIGBkZXN0YCBidWZmZXIgdXNpbmcgYmFzZTY0IGVuY29kaW5nLCB3aXRo
Ci0vLyBwYWRkaW5nIGNoYXJhY3RlcnMuIFRoaXMgZnVuY3Rpb24gY29uZm9ybXMgd2l0aCBSRkMg
NDY0OCBzZWN0aW9uIDQgKGJhc2U2NCkuCisvLyBFbmNvZGVzIGEgYHNyY2Agc3RyaW5nIGludG8g
YSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcsIHdpdGggcGFkZGluZyBjaGFyYWN0ZXJzLgorLy8gVGhp
cyBmdW5jdGlvbiBjb25mb3JtcyB3aXRoIFJGQyA0NjQ4IHNlY3Rpb24gNCAoYmFzZTY0KS4KIHZv
aWQgQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYywgc3RkOjpzdHJpbmcqIGRlc3Qp
Oworc3RkOjpzdHJpbmcgQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYyk7CiAKIC8v
IFdlYlNhZmVCYXNlNjRFc2NhcGUoKQogLy8KLS8vIEVuY29kZXMgYSBgc3JjYCBzdHJpbmcgaW50
byBhIGBkZXN0YCBidWZmZXIgdXNpbmcgJy0nIGluc3RlYWQgb2YgJysnIGFuZAotLy8gJ18nIGlu
c3RlYWQgb2YgJy8nLCBhbmQgd2l0aG91dCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGNvbmZvcm1z
IHdpdGggUkZDIDQ2NDgKLS8vIHNlY3Rpb24gNSAoYmFzZTY0dXJsKS4KKy8vIEVuY29kZXMgYSBg
c3JjYCBzdHJpbmcgaW50byBhIGJhc2U2NC1saWtlIHN0cmluZywgdXNpbmcgJy0nIGluc3RlYWQg
b2YgJysnCisvLyBhbmQgJ18nIGluc3RlYWQgb2YgJy8nLCBhbmQgd2l0aG91dCBwYWRkaW5nLiBU
aGlzIGZ1bmN0aW9uIGNvbmZvcm1zIHdpdGggUkZDCisvLyA0NjQ4IHNlY3Rpb24gNSAoYmFzZTY0
dXJsKS4KIHZvaWQgV2ViU2FmZUJhc2U2NEVzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBzcmMsIHN0
ZDo6c3RyaW5nKiBkZXN0KTsKK3N0ZDo6c3RyaW5nIFdlYlNhZmVCYXNlNjRFc2NhcGUoYWJzbDo6
c3RyaW5nX3ZpZXcgc3JjKTsKIAogLy8gSGV4U3RyaW5nVG9CeXRlcygpCiAvLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZ19iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2Vz
Y2FwaW5nX2JlbmNobWFyay5jYwppbmRleCAwZjc5MWY0ZTg3NTA5YTBjNTk1NTg1NmIzNTM4ZmNk
MzY4YWU0YTA5Li4xMGQ1YjAzM2M1MjA2YzI5ODkxMmVlOTE5Yzk2MTM1N2NlY2I2ZWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nX2JlbmNobWFyay5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2VzY2FwaW5nX2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
IC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZ190ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZ190ZXN0LmNjCmluZGV4IDlkYzI3ZjNmOGZhNzY4YTJh
OTFjZGFmOTUwMzdkNzRjZmYwMWFlYmMuLjE5Njc5NzViNjlhZjhlMjRjNGZhZTc4ZTQwMjQ5YjMy
M2E0YjZhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmdfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKQEAgLTM2LDE4ICszNiwxOSBAQCBzdHJ1Y3QgZXBhaXIgewogCiBU
RVNUKENFc2NhcGUsIEVzY2FwZUFuZFVuZXNjYXBlKSB7CiAgIGNvbnN0IHN0ZDo6c3RyaW5nIGlu
cHV0c1tdID0gewotICAgIHN0ZDo6c3RyaW5nKCJmb29cbnh4XHJcYlwwMDIzIiksCi0gICAgc3Rk
OjpzdHJpbmcoIiIpLAotICAgIHN0ZDo6c3RyaW5nKCJhYmMiKSwKLSAgICBzdGQ6OnN0cmluZygi
XDFjaGFkX3J1bGVzIiksCi0gICAgc3RkOjpzdHJpbmcoIlwxYXJuYXJfZHJvb2xzIiksCi0gICAg
c3RkOjpzdHJpbmcoInh4eHhcclx0J1wiXFwiKSwKLSAgICBzdGQ6OnN0cmluZygiXDB4eFwwIiwg
NCksCi0gICAgc3RkOjpzdHJpbmcoIlx4MDFceDMxIiksCi0gICAgc3RkOjpzdHJpbmcoImFiY1x4
Ylx4NDJcMTQxYmMiKSwKLSAgICBzdGQ6OnN0cmluZygiMTIzXDFceDMxXHgzMlx4MzMiKSwKLSAg
ICBzdGQ6OnN0cmluZygiXHhjMVx4Y2FceDFiXHg2Mlx4MTlvXHhjY1x4MDQiKSwKLSAgICBzdGQ6
OnN0cmluZygiXFxcIlx4ZThceGIwXHhiN1x4ZTZceGFkXHg4Y1xcXCIgaXMgR29vZ2xlXFxcJ3Mg
Q2hpbmVzZSBuYW1lIiksCisgICAgICBzdGQ6OnN0cmluZygiZm9vXG54eFxyXGJcMDAyMyIpLAor
ICAgICAgc3RkOjpzdHJpbmcoIiIpLAorICAgICAgc3RkOjpzdHJpbmcoImFiYyIpLAorICAgICAg
c3RkOjpzdHJpbmcoIlwxY2hhZF9ydWxlcyIpLAorICAgICAgc3RkOjpzdHJpbmcoIlwxYXJuYXJf
ZHJvb2xzIiksCisgICAgICBzdGQ6OnN0cmluZygieHh4eFxyXHQnXCJcXCIpLAorICAgICAgc3Rk
OjpzdHJpbmcoIlwweHhcMCIsIDQpLAorICAgICAgc3RkOjpzdHJpbmcoIlx4MDFceDMxIiksCisg
ICAgICBzdGQ6OnN0cmluZygiYWJjXHhiXHg0MlwxNDFiYyIpLAorICAgICAgc3RkOjpzdHJpbmco
IjEyM1wxXHgzMVx4MzJceDMzIiksCisgICAgICBzdGQ6OnN0cmluZygiXHhjMVx4Y2FceDFiXHg2
Mlx4MTlvXHhjY1x4MDQiKSwKKyAgICAgIHN0ZDo6c3RyaW5nKAorICAgICAgICAgICJcXFwiXHhl
OFx4YjBceGI3XHhlNlx4YWRceDhjXFxcIiBpcyBHb29nbGVcXFwncyBDaGluZXNlIG5hbWUiKSwK
ICAgfTsKICAgLy8gRG8gdGhpcyB0d2ljZSwgb25jZSBmb3Igb2N0YWwgZXNjYXBlcyBhbmQgb25j
ZSBmb3IgaGV4IGVzY2FwZXMuCiAgIGZvciAoaW50IGtpbmQgPSAwOyBraW5kIDwgNDsga2luZCsr
KSB7CkBAIC03MSw2ICs3MiwxMSBAQCBURVNUKENFc2NhcGUsIEVzY2FwZUFuZFVuZXNjYXBlKSB7
CiAgICAgICBFWFBFQ1RfVFJVRShhYnNsOjpDVW5lc2NhcGUoZXNjYXBlZCwgJnVuZXNjYXBlZF9z
dHIpKTsKICAgICAgIEVYUEVDVF9FUSh1bmVzY2FwZWRfc3RyLCBvcmlnaW5hbCk7CiAKKyAgICAg
IHVuZXNjYXBlZF9zdHIuZXJhc2UoKTsKKyAgICAgIHN0ZDo6c3RyaW5nIGVycm9yOworICAgICAg
RVhQRUNUX1RSVUUoYWJzbDo6Q1VuZXNjYXBlKGVzY2FwZWQsICZ1bmVzY2FwZWRfc3RyLCAmZXJy
b3IpKTsKKyAgICAgIEVYUEVDVF9FUShlcnJvciwgIiIpOworCiAgICAgICAvLyBDaGVjayBpbi1w
bGFjZSB1bmVzY2FwaW5nCiAgICAgICBzdGQ6OnN0cmluZyBzID0gZXNjYXBlZDsKICAgICAgIEVY
UEVDVF9UUlVFKGFic2w6OkNVbmVzY2FwZShzLCAmcykpOwpAQCAtMTQ5LDcgKzE1NSw4IEBAIFRF
U1QoQ0VzY2FwZSwgQmFzaWNFc2NhcGluZykgewogCiBURVNUKFVuZXNjYXBlLCBCYXNpY0Z1bmN0
aW9uKSB7CiAgIGVwYWlyIHRlc3RzW10gPQotICAgIHt7IlxcdTAwMzAiLCAiMCJ9LAorICAgIHt7
IiIsICIifSwKKyAgICAgeyJcXHUwMDMwIiwgIjAifSwKICAgICAgeyJcXHUwMEEzIiwgIlx4QzJc
eEEzIn0sCiAgICAgIHsiXFx1MjJGRCIsICJceEUyXHg4Qlx4QkQifSwKICAgICAgeyJcXFUwMDAx
MDAwMCIsICJceEYwXHg5MFx4ODBceDgwIn0sCkBAIC0xNTksMjAgKzE2NiwyMiBAQCBURVNUKFVu
ZXNjYXBlLCBCYXNpY0Z1bmN0aW9uKSB7CiAgICAgRVhQRUNUX1RSVUUoYWJzbDo6Q1VuZXNjYXBl
KHZhbC5lc2NhcGVkLCAmb3V0KSk7CiAgICAgRVhQRUNUX0VRKG91dCwgdmFsLnVuZXNjYXBlZCk7
CiAgIH0KLSAgc3RkOjpzdHJpbmcgYmFkW10gPQotICAgICB7IlxcdTEiLCAgICAgICAgIC8vIHRv
byBzaG9ydAotICAgICAgIlxcVTEiLCAgICAgICAgIC8vIHRvbyBzaG9ydAotICAgICAgIlxcVWZm
ZmZmZiIsICAgIC8vIGV4Y2VlZHMgMHgxMGZmZmYgKGxhcmdlc3QgVW5pY29kZSkKLSAgICAgICJc
XFUwMDExMDAwMCIsICAvLyBleGNlZWRzIDB4MTBmZmZmIChsYXJnZXN0IFVuaWNvZGUpCi0gICAg
ICAiXFx1RDgzNSIsICAgICAgLy8gc3Vycm9nYXRlIGNoYXJhY3RlciAoRDgwMC1ERkZGKQotICAg
ICAgIlxcVTAwMDBERDA0IiwgIC8vIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgKEQ4MDAtREZGRikKLSAg
ICAgICJcXDc3NyIsICAgICAgICAvLyBleGNlZWRzIDB4ZmYKLSAgICAgICJcXHhBQkNEIn07ICAg
ICAvLyBleGNlZWRzIDB4ZmYKKyAgc3RkOjpzdHJpbmcgYmFkW10gPSB7IlxcdTEiLCAgICAgICAg
IC8vIHRvbyBzaG9ydAorICAgICAgICAgICAgICAgICAgICAgICAiXFxVMSIsICAgICAgICAgLy8g
dG9vIHNob3J0CisgICAgICAgICAgICAgICAgICAgICAgICJcXFVmZmZmZmYiLCAgICAvLyBleGNl
ZWRzIDB4MTBmZmZmIChsYXJnZXN0IFVuaWNvZGUpCisgICAgICAgICAgICAgICAgICAgICAgICJc
XFUwMDExMDAwMCIsICAvLyBleGNlZWRzIDB4MTBmZmZmIChsYXJnZXN0IFVuaWNvZGUpCisgICAg
ICAgICAgICAgICAgICAgICAgICJcXHVEODM1IiwgICAgICAvLyBzdXJyb2dhdGUgY2hhcmFjdGVy
IChEODAwLURGRkYpCisgICAgICAgICAgICAgICAgICAgICAgICJcXFUwMDAwREQwNCIsICAvLyBz
dXJyb2dhdGUgY2hhcmFjdGVyIChEODAwLURGRkYpCisgICAgICAgICAgICAgICAgICAgICAgICJc
XDc3NyIsICAgICAgICAvLyBleGNlZWRzIDB4ZmYKKyAgICAgICAgICAgICAgICAgICAgICAgIlxc
eEFCQ0QifTsgICAgIC8vIGV4Y2VlZHMgMHhmZgogICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBl
IDogYmFkKSB7CiAgICAgc3RkOjpzdHJpbmcgZXJyb3I7CiAgICAgc3RkOjpzdHJpbmcgb3V0Owog
ICAgIEVYUEVDVF9GQUxTRShhYnNsOjpDVW5lc2NhcGUoZSwgJm91dCwgJmVycm9yKSk7CiAgICAg
RVhQRUNUX0ZBTFNFKGVycm9yLmVtcHR5KCkpOworCisgICAgb3V0LmVyYXNlKCk7CisgICAgRVhQ
RUNUX0ZBTFNFKGFic2w6OkNVbmVzY2FwZShlLCAmb3V0KSk7CiAgIH0KIH0KIApAQCAtMjU4LDkg
KzI2NywxMSBAQCBURVNUX0YoQ1VuZXNjYXBlVGVzdCwgVW5lc2NhcGVzTXVsdGlwbGVPY3RhbE51
bGxzKSB7CiAgIC8vIEFsbCBlc2NhcGVzLCBpbmNsdWRpbmcgbmV3bGluZXMgYW5kIG51bGwgZXNj
YXBlcywgc2hvdWxkIGhhdmUgYmVlbgogICAvLyBjb252ZXJ0ZWQgdG8gdGhlIGVxdWl2YWxlbnQg
Y2hhcmFjdGVycy4KICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCJcMFxuIgotICAgICAgICAgICAg
ICAgICAgICIwXG4iCi0gICAgICAgICAgICAgICAgICAgIlwwXG4iCi0gICAgICAgICAgICAgICAg
ICAgIlwwIiwgNyksIHJlc3VsdF9zdHJpbmdfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICIw
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXDBcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJcMCIsCisgICAgICAgICAgICAgICAgICAgICAgICA3KSwKKyAgICAgICAgICAgIHJlc3Vs
dF9zdHJpbmdfKTsKIH0KIAogCkBAIC0yNjgsMTcgKzI3OSwyMSBAQCBURVNUX0YoQ1VuZXNjYXBl
VGVzdCwgVW5lc2NhcGVzTXVsdGlwbGVIZXhOdWxscykgewogICBzdGQ6OnN0cmluZyBvcmlnaW5h
bF9zdHJpbmcoa1N0cmluZ1dpdGhNdWx0aXBsZUhleE51bGxzKTsKICAgRVhQRUNUX1RSVUUoYWJz
bDo6Q1VuZXNjYXBlKG9yaWdpbmFsX3N0cmluZywgJnJlc3VsdF9zdHJpbmdfKSk7CiAgIEVYUEVD
VF9FUShzdGQ6OnN0cmluZygiXDBcbiIKLSAgICAgICAgICAgICAgICAgICAiMFxuIgotICAgICAg
ICAgICAgICAgICAgICJcMFxuIgotICAgICAgICAgICAgICAgICAgICJcMCIsIDcpLCByZXN1bHRf
c3RyaW5nXyk7CisgICAgICAgICAgICAgICAgICAgICAgICAiMFxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgIlwwXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXDAiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgNyksCisgICAgICAgICAgICByZXN1bHRfc3RyaW5nXyk7CiB9CiAKIFRF
U1RfRihDVW5lc2NhcGVUZXN0LCBVbmVzY2FwZXNNdWx0aXBsZVVuaWNvZGVOdWxscykgewogICBz
dGQ6OnN0cmluZyBvcmlnaW5hbF9zdHJpbmcoa1N0cmluZ1dpdGhNdWx0aXBsZVVuaWNvZGVOdWxs
cyk7CiAgIEVYUEVDVF9UUlVFKGFic2w6OkNVbmVzY2FwZShvcmlnaW5hbF9zdHJpbmcsICZyZXN1
bHRfc3RyaW5nXykpOwogICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoIlwwXG4iCi0gICAgICAgICAg
ICAgICAgICAgIjBcbiIKLSAgICAgICAgICAgICAgICAgICAiXDAiLCA1KSwgcmVzdWx0X3N0cmlu
Z18pOworICAgICAgICAgICAgICAgICAgICAgICAgIjBcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJcMCIsCisgICAgICAgICAgICAgICAgICAgICAgICA1KSwKKyAgICAgICAgICAgIHJlc3Vs
dF9zdHJpbmdfKTsKIH0KIAogc3RhdGljIHN0cnVjdCB7CkBAIC01NTAsNiArNTY1LDcgQEAgdm9p
ZCBUZXN0RXNjYXBlQW5kVW5lc2NhcGUoKSB7CiAgICAgU3RyaW5nVHlwZSBlbmNvZGVkKCJ0aGlz
IGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQiKTsKICAgICBhYnNsOjpCYXNlNjRFc2NhcGUodGMucGxh
aW50ZXh0LCAmZW5jb2RlZCk7CiAgICAgRVhQRUNUX0VRKGVuY29kZWQsIHRjLmN5cGhlcnRleHQp
OworICAgIEVYUEVDVF9FUShhYnNsOjpCYXNlNjRFc2NhcGUodGMucGxhaW50ZXh0KSwgdGMuY3lw
aGVydGV4dCk7CiAKICAgICBTdHJpbmdUeXBlIGRlY29kZWQoInRoaXMganVuayBzaG91bGQgYmUg
aWdub3JlZCIpOwogICAgIEVYUEVDVF9UUlVFKGFic2w6OkJhc2U2NFVuZXNjYXBlKGVuY29kZWQs
ICZkZWNvZGVkKSk7CkBAIC01NjgsNiArNTg0LDcgQEAgdm9pZCBUZXN0RXNjYXBlQW5kVW5lc2Nh
cGUoKSB7CiAgICAgZW5jb2RlZCA9ICJ0aGlzIGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQiOwogICAg
IGFic2w6OldlYlNhZmVCYXNlNjRFc2NhcGUodGMucGxhaW50ZXh0LCAmZW5jb2RlZCk7CiAgICAg
RVhQRUNUX0VRKGVuY29kZWQsIHdlYnNhZmUpOworICAgIEVYUEVDVF9FUShhYnNsOjpXZWJTYWZl
QmFzZTY0RXNjYXBlKHRjLnBsYWludGV4dCksIHdlYnNhZmUpOwogCiAgICAgLy8gTGV0J3MgdHJ5
IHRoZSBzdGQ6OnN0cmluZyB2ZXJzaW9uIG9mIHRoZSBkZWNvZGVyCiAgICAgZGVjb2RlZCA9ICJ0
aGlzIGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQiOwpAQCAtNTgwLDYgKzU5Nyw3IEBAIHZvaWQgVGVz
dEVzY2FwZUFuZFVuZXNjYXBlKCkgewogICAgIFN0cmluZ1R5cGUgYnVmZmVyOwogICAgIGFic2w6
OldlYlNhZmVCYXNlNjRFc2NhcGUodGMucGxhaW50ZXh0LCAmYnVmZmVyKTsKICAgICBFWFBFQ1Rf
RVEodGMuY3lwaGVydGV4dCwgYnVmZmVyKTsKKyAgICBFWFBFQ1RfRVEoYWJzbDo6V2ViU2FmZUJh
c2U2NEVzY2FwZSh0Yy5wbGFpbnRleHQpLCB0Yy5jeXBoZXJ0ZXh0KTsKICAgfQogCiAgIC8vIFZl
cmlmeSB0aGUgYmVoYXZpb3Igd2hlbiBkZWNvZGluZyBiYWQgZGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyX21hcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9j
aGFyX21hcC5oCmluZGV4IDhkOTI5NjNhNGRlYTNkYzExY2E3MTIzMmQwYjNmMDg4OTYwZDRkMDMu
LmI5MTA4YjhjZGRkMDRkYjAwOGJhOTJmYjE4OWZjYjYzMmNhN2MxMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL2NoYXJfbWFwLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXBfYmVuY2htYXJrLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyX21hcF9iZW5jaG1hcmsuY2MKaW5kZXggYzQ1
ZjMxNTdjMjkxNzkyNmQ3MmFiODg4MTIwZDVhNTc3ZWJmYWY4YS4uNWNlZjk2N2IzMDg3MGRhNmY1
MjRmZWQzZmQ0ZTc3NzhkMjJlMDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9jaGFyX21hcF9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFy
X21hcF9iZW5jaG1hcmsuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXBfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcl9tYXBfdGVzdC5jYwppbmRleCBjMzYwMWUxMDFl
MmE5MzZmZjU3YTJmYWU5ODBjZjRmODAwYmY4YzRjLi5kMzMwNjI0MWE0MDQxYzBiZDIzMWEzMDM3
MzBjNjY5NzBlNGU3ZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJf
bWFwX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyX21hcF90ZXN0LmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X2JpZ2ludC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50LmNjCmluZGV4IDNlNzI5NmU3MDY4YTU0YjEzZTAzMDE2
ZGQ0ZTNhMjYxYWY3OGUwNDguLjk1ZDQ3MWQ5ZTIyY2FmODE3ODY3NGZhNGE5Y2Y0NTc1ZmMwNDVk
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50LmNjCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL2NoYXJjb252X2JpZ2ludC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9j
aGFyY29udl9iaWdpbnQuaAppbmRleCBhYTcwYWYyYzI4OTQxYWNjMWZkOWJiMDcwYzVmNWViZDM5
MDNmNmQyLi43ZGE5YTdlNzVhY2VjMjlhYjFmZDVmOWMyOTlmY2Q0ZDU0MDZkZTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X2JpZ2ludC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTU3LDE3ICs1NywxMCBAQCBjbGFzcyBCaWdVbnNpZ25l
ZCB7CiAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIG1heF93b3JkcyB2YWx1ZSIpOwogCiAg
IEJpZ1Vuc2lnbmVkKCkgOiBzaXplXygwKSwgd29yZHNfe30ge30KLSAgZXhwbGljaXQgQmlnVW5z
aWduZWQodWludDMyX3QgdikgOiBzaXplXyh2ID4gMCA/IDEgOiAwKSwgd29yZHNfe3Z9IHt9Ci0g
IGV4cGxpY2l0IEJpZ1Vuc2lnbmVkKHVpbnQ2NF90IHYpCi0gICAgICA6IHNpemVfKDApLAotICAg
ICAgICB3b3Jkc197c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHYgJiAweGZmZmZmZmZmKSwKLSAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pih2ID4+IDMyKX0gewotICAgIGlmICh3b3Jk
c19bMV0pIHsKLSAgICAgIHNpemVfID0gMjsKLSAgICB9IGVsc2UgaWYgKHdvcmRzX1swXSkgewot
ICAgICAgc2l6ZV8gPSAxOwotICAgIH0KLSAgfQorICBleHBsaWNpdCBjb25zdGV4cHIgQmlnVW5z
aWduZWQodWludDY0X3QgdikKKyAgICAgIDogc2l6ZV8oKHYgPj4gMzIpID8gMiA6IHYgPyAxIDog
MCksCisgICAgICAgIHdvcmRzX3tzdGF0aWNfY2FzdDx1aW50MzJfdD4odiAmIDB4ZmZmZmZmZmZ1
KSwKKyAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pih2ID4+IDMyKX0ge30KIAog
ICAvLyBDb25zdHJ1Y3RzIGEgQmlnVW5zaWduZWQgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nX3ZpZXcg
Y29udGFpbmluZyBhIGRlY2ltYWwKICAgLy8gdmFsdWUuICBJZiB0aGUgaW5wdXQgc3RkOjpzdHJp
bmcgaXMgbm90IGEgZGVjaW1hbCBpbnRlZ2VyLCBjb25zdHJ1Y3RzIGEgMApAQCAtMTEwLDEyICsx
MDMsMTIgQEAgY2xhc3MgQmlnVW5zaWduZWQgewogICAgICAgICBTZXRUb1plcm8oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgICAgfQotICAgICAgc2l6ZV8gPSBzdGQ6Om1pbihzaXplXyArIHdvcmRf
c2hpZnQsIG1heF93b3Jkcyk7CisgICAgICBzaXplXyA9IChzdGQ6Om1pbikoc2l6ZV8gKyB3b3Jk
X3NoaWZ0LCBtYXhfd29yZHMpOwogICAgICAgY291bnQgJT0gMzI7CiAgICAgICBpZiAoY291bnQg
PT0gMCkgewogICAgICAgICBzdGQ6OmNvcHlfYmFja3dhcmQod29yZHNfLCB3b3Jkc18gKyBzaXpl
XyAtIHdvcmRfc2hpZnQsIHdvcmRzXyArIHNpemVfKTsKICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
IGZvciAoaW50IGkgPSBzdGQ6Om1pbihzaXplXywgbWF4X3dvcmRzIC0gMSk7IGkgPiB3b3JkX3No
aWZ0OyAtLWkpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IChzdGQ6Om1pbikoc2l6ZV8sIG1heF93
b3JkcyAtIDEpOyBpID4gd29yZF9zaGlmdDsgLS1pKSB7CiAgICAgICAgICAgd29yZHNfW2ldID0g
KHdvcmRzX1tpIC0gd29yZF9zaGlmdF0gPDwgY291bnQpIHwKICAgICAgICAgICAgICAgICAgICAg
ICAod29yZHNfW2kgLSB3b3JkX3NoaWZ0IC0gMV0gPj4gKDMyIC0gY291bnQpKTsKICAgICAgICAg
fQpAQCAtMjc0LDcgKzI2Nyw3IEBAIGNsYXNzIEJpZ1Vuc2lnbmVkIHsKICAgdm9pZCBNdWx0aXBs
eUJ5KGludCBvdGhlcl9zaXplLCBjb25zdCB1aW50MzJfdCogb3RoZXJfd29yZHMpIHsKICAgICBj
b25zdCBpbnQgb3JpZ2luYWxfc2l6ZSA9IHNpemVfOwogICAgIGNvbnN0IGludCBmaXJzdF9zdGVw
ID0KLSAgICAgICAgc3RkOjptaW4ob3JpZ2luYWxfc2l6ZSArIG90aGVyX3NpemUgLSAyLCBtYXhf
d29yZHMgLSAxKTsKKyAgICAgICAgKHN0ZDo6bWluKShvcmlnaW5hbF9zaXplICsgb3RoZXJfc2l6
ZSAtIDIsIG1heF93b3JkcyAtIDEpOwogICAgIGZvciAoaW50IHN0ZXAgPSBmaXJzdF9zdGVwOyBz
dGVwID49IDA7IC0tc3RlcCkgewogICAgICAgTXVsdGlwbHlTdGVwKG9yaWdpbmFsX3NpemUsIG90
aGVyX3dvcmRzLCBvdGhlcl9zaXplLCBzdGVwKTsKICAgICB9CkBAIC0yOTMsNyArMjg2LDcgQEAg
Y2xhc3MgQmlnVW5zaWduZWQgewogICAgICAgICAgIHZhbHVlID0gMDsKICAgICAgICAgfQogICAg
ICAgfQotICAgICAgc2l6ZV8gPSBzdGQ6Om1pbihtYXhfd29yZHMsIHN0ZDo6bWF4KGluZGV4ICsg
MSwgc2l6ZV8pKTsKKyAgICAgIHNpemVfID0gKHN0ZDo6bWluKShtYXhfd29yZHMsIChzdGQ6Om1h
eCkoaW5kZXggKyAxLCBzaXplXykpOwogICAgIH0KICAgfQogCkBAIC0zMTYsNyArMzA5LDcgQEAg
Y2xhc3MgQmlnVW5zaWduZWQgewogICAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm9ybWFsbHkg
MzItYml0IEFkZFdpdGhDYXJyeSgpIHNldHMgc2l6ZV8sIGJ1dCBzaW5jZSB3ZSBkb24ndCBjYWxs
CiAgICAgICAgIC8vIGl0IHdoZW4gYGhpZ2hgIGlzIDAsIGRvIGl0IG91cnNlbHZlcyBoZXJlLgot
ICAgICAgICBzaXplXyA9IHN0ZDo6bWluKG1heF93b3Jkcywgc3RkOjptYXgoaW5kZXggKyAxLCBz
aXplXykpOworICAgICAgICBzaXplXyA9IChzdGQ6Om1pbikobWF4X3dvcmRzLCAoc3RkOjptYXgp
KGluZGV4ICsgMSwgc2l6ZV8pKTsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTM1NSw3ICszNDgs
NyBAQCBjbGFzcyBCaWdVbnNpZ25lZCB7CiAvLyBSZXR1cm5zIC0xIGlmIGxocyA8IHJocywgMCBp
ZiBsaHMgPT0gcmhzLCBhbmQgMSBpZiBsaHMgPiByaHMuCiB0ZW1wbGF0ZSA8aW50IE4sIGludCBN
PgogaW50IENvbXBhcmUoY29uc3QgQmlnVW5zaWduZWQ8Tj4mIGxocywgY29uc3QgQmlnVW5zaWdu
ZWQ8TT4mIHJocykgewotICBpbnQgbGltaXQgPSBzdGQ6Om1heChsaHMuc2l6ZSgpLCByaHMuc2l6
ZSgpKTsKKyAgaW50IGxpbWl0ID0gKHN0ZDo6bWF4KShsaHMuc2l6ZSgpLCByaHMuc2l6ZSgpKTsK
ICAgZm9yIChpbnQgaSA9IGxpbWl0IC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICBjb25zdCB1aW50
MzJfdCBsaHNfd29yZCA9IGxocy5HZXRXb3JkKGkpOwogICAgIGNvbnN0IHVpbnQzMl90IHJoc193
b3JkID0gcmhzLkdldFdvcmQoaSk7CkBAIC0zNzAsNyArMzYzLDcgQEAgaW50IENvbXBhcmUoY29u
c3QgQmlnVW5zaWduZWQ8Tj4mIGxocywgY29uc3QgQmlnVW5zaWduZWQ8TT4mIHJocykgewogCiB0
ZW1wbGF0ZSA8aW50IE4sIGludCBNPgogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpZ1Vuc2lnbmVk
PE4+JiBsaHMsIGNvbnN0IEJpZ1Vuc2lnbmVkPE0+JiByaHMpIHsKLSAgaW50IGxpbWl0ID0gc3Rk
OjptYXgobGhzLnNpemUoKSwgcmhzLnNpemUoKSk7CisgIGludCBsaW1pdCA9IChzdGQ6Om1heCko
bGhzLnNpemUoKSwgcmhzLnNpemUoKSk7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGltaXQ7ICsr
aSkgewogICAgIGlmIChsaHMuR2V0V29yZChpKSAhPSByaHMuR2V0V29yZChpKSkgewogICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29u
dl9iaWdpbnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50
X3Rlc3QuY2MKaW5kZXggOWI2MzU3ODg4ZmJmNDdlYmRjYzZjZDUxNmI4MWFkMTQwYjk3Y2JhNS4u
NzQ1NzE0YWNhMWIzYTg5NDJlOTA3ZThmZjRiMWRkODgwNDRlMTI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9iaWdpbnRfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL2NoYXJjb252X2JpZ2ludF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL2NoYXJjb252X3BhcnNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9w
YXJzZS5jYwppbmRleCA3ZTRkYWJjMjI2MmVmZjc3MjZiNzJmNTQ4MDMxNTRhMDQyYWFhNzE4Li5m
M2M3MjMyNDAzYTFiODIwMDU0YjVjMmY5Nzc3MjgyMGFiNjJjMWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZf
cGFyc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuaAppbmRleCA3
YTVjMDg3NGI4MDRhNTg1Mzg5ODlhYWEwZmQ2ZDZkZDhiMzFiMjhiLi40NGQwNmIyZTliZDRmYzQ2
ZDNlM2Q0ZjlkNDY5M2QzOWM0MDUzYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL2NoYXJjb252X3BhcnNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29u
dl9wYXJzZS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlX3Rlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlX3Rlc3QuY2MKaW5kZXggZjQ4Yjlh
ZWUxYTVlODRkYjNiMWNjMjk2YWFiMzYzZjJjMzNkYjM3Mi4uOTUxMWM5ODc0NTAwNzk5MmI0ZmEw
ODgzMjJlNmU5NjMzNGJjZmNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9j
aGFyY29udl9wYXJzZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNv
bnZfcGFyc2VfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9lc2NhcGluZ190ZXN0X2NvbW1v
bi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9lc2NhcGluZ190ZXN0X2NvbW1vbi5oCmluZGV4
IGNjNDFmNDMxMmM3YzEzMDZlNzkxMDBhOTExYjM0N2E5OWMwYjI0YzEuLmJkODAzMDMxODE3M2E4
MjI2ZmY2YmE5YWVhOTA0ZWVlOWZhMzhiMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvZXNjYXBpbmdfdGVzdF9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L2VzY2FwaW5nX3Rlc3RfY29tbW9uLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5jYwppbmRleCBhMGRlNzBkZmZkYmRjMDI3
M2EyMGM4MTc4MWI5NGZhYTg3MjMzMzUxLi43N2FhNjNjMmMzNzJmMTVkNGZlN2JmZTlmOWE4MmRm
ZDY4YWU1ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWwuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmNjCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL21lbXV0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5oCmluZGV4IDdk
ZTM4M2IxOWVjM2ZjMGY2YzkzMzFhNDFkOTQxNzNjNTUxYWVjYmQuLjdjMDcxYTgyMDFmYWIwMjEz
YjMwMzVkNWE4ZjkyMTBjODFjMDY4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvbWVtdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5oCkBAIC01
LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL21lbXV0aWxfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9tZW11dGlsX2JlbmNobWFyay5jYwppbmRleCA3NzkxNWFkYjk1OGVlNThiNWY1YzU4MjVj
ZDg3YTRjOTcxNDRkYTJkLi5kYzk1YzNlNWU1NWFkNDU5OTk0ZWY0YTNlYWNkNzEzZDE1ZmEyZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWxfYmVuY2htYXJrLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbF9iZW5jaG1hcmsuY2MKQEAgLTQs
NyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvbWVtdXRpbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9t
ZW11dGlsX3Rlc3QuY2MKaW5kZXggMDk0MjRkZTlhNDc3ZjRlOGE5YTM4MjFkOWVmMDUyZDJmMGMy
YjE5ZC4uZDg2ODFkZGY0ZTNiMGM0MzEzYjQ2MjNlZWM0ZjI3YmNjNTBlZWVhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsX3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9tZW11dGlsX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbnVtYmVy
c190ZXN0X2NvbW1vbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9udW1iZXJzX3Rlc3RfY29t
bW9uLmgKaW5kZXggMjBlM2FmNTExNDFlZmJlZDA1ODlmNTQ0MDYwZWFhZTY5NThiMTU5MC4uMjgy
NDcyMDVhZjQ4NmIxZmE3YTk3NTAyNTk4NGIxYzVjZWJkYjk4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9udW1iZXJzX3Rlc3RfY29tbW9uLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9udW1iZXJzX3Rlc3RfY29tbW9uLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKQEAgLTY0LDExICs2NCwxMSBAQCBzdHJ1Y3QgdWludDMyX3Rlc3Rf
Y2FzZSB7CiAKIGlubGluZSBjb25zdCBzdGQ6OmFycmF5PHVpbnQzMl90ZXN0X2Nhc2UsIDI3PiYg
c3RydG91aW50MzJfdGVzdF9jYXNlcygpIHsKICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWlu
dDMyX3Rlc3RfY2FzZSwgMjc+IHRlc3RfY2FzZXN7ewotICAgICAgeyIweGZmZmZmZmZmIiwgdHJ1
ZSwgMTYsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKX0sCisgICAgICB7IjB4
ZmZmZmZmZmYiLCB0cnVlLCAxNiwgKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgp
KCl9LAogICAgICAgeyIweDM0MjM0MzI0IiwgdHJ1ZSwgMTYsIDB4MzQyMzQzMjR9LAogICAgICAg
eyIzNDIzNDMyNCIsIHRydWUsIDE2LCAweDM0MjM0MzI0fSwKICAgICAgIHsiMCIsIHRydWUsIDE2
LCAwfSwKLSAgICAgIHsiIFx0XG4gMHhmZmZmZmZmZiIsIHRydWUsIDE2LCBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCl9LAorICAgICAgeyIgXHRcbiAweGZmZmZmZmZmIiwgdHJ1
ZSwgMTYsIChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KSgpfSwKICAgICAgIHsi
IFxmXHYgNDYiLCB0cnVlLCAxMCwgNDZ9LCAgLy8gbXVzdCBhY2NlcHQgd2VpcmQgd2hpdGVzcGFj
ZQogICAgICAgeyIgXHRcbiA3MjcxNzIyMiIsIHRydWUsIDgsIDA3MjcxNzIyMn0sCiAgICAgICB7
IiBcdFxuIDA3MjcxNzIyMiIsIHRydWUsIDgsIDA3MjcxNzIyMn0sCkBAIC03Nyw3ICs3Nyw3IEBA
IGlubGluZSBjb25zdCBzdGQ6OmFycmF5PHVpbnQzMl90ZXN0X2Nhc2UsIDI3PiYgc3RydG91aW50
MzJfdGVzdF9jYXNlcygpIHsKIAogICAgICAgLy8gQmFzZS0xMCB2ZXJzaW9uLgogICAgICAgeyIz
NDIzNDMyNCIsIHRydWUsIDAsIDM0MjM0MzI0fSwKLSAgICAgIHsiNDI5NDk2NzI5NSIsIHRydWUs
IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKX0sCisgICAgICB7IjQyOTQ5
NjcyOTUiLCB0cnVlLCAwLCAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCkoKX0s
CiAgICAgICB7IjM0MjM0MzI0IFxuXHQiLCB0cnVlLCAxMCwgMzQyMzQzMjR9LAogCiAgICAgICAv
LyBVbnVzdWFsIGJhc2UKQEAgLTk2LDggKzk2LDggQEAgaW5saW5lIGNvbnN0IHN0ZDo6YXJyYXk8
dWludDMyX3Rlc3RfY2FzZSwgMjc+JiBzdHJ0b3VpbnQzMl90ZXN0X2Nhc2VzKCkgewogICAgICAg
eyIgXHRcbiAtMTIzIiwgZmFsc2UsIDAsIDB9LAogCiAgICAgICAvLyBPdXQgb2YgYm91bmRzLgot
ICAgICAgeyI0Mjk0OTY3Mjk2IiwgZmFsc2UsIDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKX0sCi0gICAgICB7IjB4MTAwMDAwMDAwIiwgZmFsc2UsIDAsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDMyX3Q+OjptYXgoKX0sCisgICAgICB7IjQyOTQ5NjcyOTYiLCBmYWxzZSwg
MCwgKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgpKCl9LAorICAgICAgeyIweDEw
MDAwMDAwMCIsIGZhbHNlLCAwLCAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCko
KX0sCiAgICAgICB7bnVsbHB0ciwgZmFsc2UsIDAsIDB9LAogICB9fTsKICAgcmV0dXJuIHRlc3Rf
Y2FzZXM7CkBAIC0xMTksNyArMTE5LDcgQEAgaW5saW5lIGNvbnN0IHN0ZDo6YXJyYXk8dWludDY0
X3Rlc3RfY2FzZSwgMzQ+JiBzdHJ0b3VpbnQ2NF90ZXN0X2Nhc2VzKCkgewogICAgICAgeyIwMDAi
LCB0cnVlLCAwLCAwfSwKICAgICAgIHsiMCIsIHRydWUsIDAsIDB9LAogICAgICAgeyIgXHRcbiAw
eGZmZmZmZmZmZmZmZmZmZmYiLCB0cnVlLCAxNiwKLSAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQ2NF90Pjo6bWF4KCl9LAorICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90
Pjo6bWF4KSgpfSwKIAogICAgICAgeyIwMTIzNDU2NzAxMjM0NTY3MDEyMzQiLCB0cnVlLCA4LCBp
bnQ2NF90ezAxMjM0NTY3MDEyMzQ1NjcwMTIzNH19LAogICAgICAgeyIxMjM0NTY3MDEyMzQ1Njcw
MTIzNCIsIHRydWUsIDgsIGludDY0X3R7MDEyMzQ1NjcwMTIzNDU2NzAxMjM0fX0sCkBAIC0xMzAs
NyArMTMwLDcgQEAgaW5saW5lIGNvbnN0IHN0ZDo6YXJyYXk8dWludDY0X3Rlc3RfY2FzZSwgMzQ+
JiBzdHJ0b3VpbnQ2NF90ZXN0X2Nhc2VzKCkgewogICAgICAgeyIzNDIzNDMyNDQ4NzgzNDQ2NiIs
IHRydWUsIDAsIGludDY0X3R7MzQyMzQzMjQ0ODc4MzQ0NjZ9fSwKIAogICAgICAgeyIgXHRcbiAx
ODQ0Njc0NDA3MzcwOTU1MTYxNSIsIHRydWUsIDAsCi0gICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czx1aW50NjRfdD46Om1heCgpfSwKKyAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCkoKX0sCiAKICAgICAgIHsiMzQyMzQzMjQ0ODc4MzQ0NjYgXG5cdCAiLCB0cnVlLCAw
LCBpbnQ2NF90ezM0MjM0MzI0NDg3ODM0NDY2fX0sCiAKQEAgLTE1NiwxMiArMTU2LDEzIEBAIGlu
bGluZSBjb25zdCBzdGQ6OmFycmF5PHVpbnQ2NF90ZXN0X2Nhc2UsIDM0PiYgc3RydG91aW50NjRf
dGVzdF9jYXNlcygpIHsKICAgICAgIC8vIE91dCBvZiBib3VuZHMuCiAgICAgICB7IjE4NDQ2NzQ0
MDczNzA5NTUxNjE2IiwgZmFsc2UsIDEwLCAwfSwKICAgICAgIHsiMTg0NDY3NDQwNzM3MDk1NTE2
MTYiLCBmYWxzZSwgMCwgMH0sCi0gICAgICB7IjB4MTAwMDAwMDAwMDAwMDAwMDAiLCBmYWxzZSwg
MTYsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKX0sCisgICAgICB7IjB4MTAw
MDAwMDAwMDAwMDAwMDAiLCBmYWxzZSwgMTYsCisgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDY0X3Q+OjptYXgpKCl9LAogICAgICAgeyIwWDEwMDAwMDAwMDAwMDAwMDAwIiwgZmFsc2Us
IDE2LAotICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKX0sICAvLyAw
WCB2ZXJzdXMgMHguCi0gICAgICB7IjB4MTAwMDAwMDAwMDAwMDAwMDAiLCBmYWxzZSwgMCwgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpfSwKKyAgICAgICAoc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46Om1heCkoKX0sICAvLyAwWCB2ZXJzdXMgMHguCisgICAgICB7IjB4
MTAwMDAwMDAwMDAwMDAwMDAiLCBmYWxzZSwgMCwgKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0
X3Q+OjptYXgpKCl9LAogICAgICAgeyIwWDEwMDAwMDAwMDAwMDAwMDAwIiwgZmFsc2UsIDAsCi0g
ICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpfSwgIC8vIDBYIHZlcnN1
cyAweC4KKyAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCkoKX0sICAv
LyAwWCB2ZXJzdXMgMHguCiAKICAgICAgIHsiMHgxMjM0IiwgdHJ1ZSwgMTYsIDB4MTIzNH0sCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5jYwppbmRleCA2ZWUyYjEwOTA4ODcy
MjAyNGQ0ZjQ0OGIyNzNjNjA1N2RlZWE3ZWFiLi5kMGYwZjg0YjZhZTQ1NjNlMGE0ZDU2NmE0ZjUy
NDQzMzI1Y2ZkNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdz
dHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmNjCkBA
IC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvb3N0cmluZ3N0cmVhbS5oCmluZGV4IGU4MWE4OWFmZmVhMjViZTI2YmJjZDMxMjBjYzcwOTQ1
MDJhMmQ4MDYuLjIwNzkyMDE1MWI3OGQzYmRjMWJkMjllYTY1NWQ3MjBmZDRiMDdlN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yNSwxOCArMjUsMTggQEAKIG5hbWVzcGFjZSBhYnNsIHsK
IG5hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFsIHsKIAotLy8gVGhlIHNhbWUgYXMgc3RkOjpvc3Ry
aW5nc3RyZWFtIGJ1dCBhcHBlbmRzIHRvIGEgdXNlci1zcGVjaWZpZWQgc3RyaW5nLAorLy8gVGhl
IHNhbWUgYXMgc3RkOjpvc3RyaW5nc3RyZWFtIGJ1dCBhcHBlbmRzIHRvIGEgdXNlci1zcGVjaWZp
ZWQgc3RkOjpzdHJpbmcsCiAvLyBhbmQgaXMgZmFzdGVyLiBJdCBpcyB+NzAlIGZhc3RlciB0byBj
cmVhdGUsIH41MCUgZmFzdGVyIHRvIHdyaXRlIHRvLCBhbmQKLS8vIGNvbXBsZXRlbHkgZnJlZSB0
byBleHRyYWN0IHRoZSByZXN1bHQgc3RyaW5nLgorLy8gY29tcGxldGVseSBmcmVlIHRvIGV4dHJh
Y3QgdGhlIHJlc3VsdCBzdGQ6OnN0cmluZy4KIC8vCi0vLyAgIHN0cmluZyBzOworLy8gICBzdGQ6
OnN0cmluZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtIHN0cm0oJnMpOwogLy8gICBzdHJtIDw8IDQy
IDw8ICcgJyA8PCAzLjE0OyAgLy8gYXBwZW5kcyB0byBgc2AKIC8vCiAvLyBUaGUgc3RyZWFtIG9i
amVjdCBkb2Vzbid0IGhhdmUgdG8gYmUgbmFtZWQuIFN0YXJ0aW5nIGZyb20gQysrMTEgb3BlcmF0
b3I8PAogLy8gd29ya3Mgd2l0aCBydmFsdWVzIG9mIHN0ZDo6b3N0cmVhbS4KIC8vCi0vLyAgIHN0
cmluZyBzOworLy8gICBzdGQ6OnN0cmluZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtKCZzKSA8PCA0
MiA8PCAnICcgPDwgMy4xNDsgIC8vIGFwcGVuZHMgdG8gYHNgCiAvLwogLy8gT1N0cmluZ1N0cmVh
bSBpcyBmYXN0ZXIgdG8gY3JlYXRlIHRoYW4gc3RkOjpvc3RyaW5nc3RyZWFtIGJ1dCBpdCdzIHN0
aWxsCkBAIC00NSwxNCArNDUsMTQgQEAgbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwgewogLy8K
IC8vIENyZWF0ZXMgdW5uZWNlc3NhcnkgaW5zdGFuY2VzIG9mIE9TdHJpbmdTdHJlYW06IHNsb3cu
CiAvLwotLy8gICBzdHJpbmcgczsKKy8vICAgc3RkOjpzdHJpbmcgczsKIC8vICAgT1N0cmluZ1N0
cmVhbSgmcykgPDwgNDI7CiAvLyAgIE9TdHJpbmdTdHJlYW0oJnMpIDw8ICcgJzsKIC8vICAgT1N0
cmluZ1N0cmVhbSgmcykgPDwgMy4xNDsKIC8vCiAvLyBDcmVhdGVzIGEgc2luZ2xlIGluc3RhbmNl
IG9mIE9TdHJpbmdTdHJlYW0gYW5kIHJldXNlcyBpdDogZmFzdC4KIC8vCi0vLyAgIHN0cmluZyBz
OworLy8gICBzdGQ6OnN0cmluZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtIHN0cm0oJnMpOwogLy8g
ICBzdHJtIDw8IDQyOwogLy8gICBzdHJtIDw8ICcgJzsKQEAgLTY0LDggKzY0LDggQEAgY2xhc3Mg
T1N0cmluZ1N0cmVhbSA6IHByaXZhdGUgc3RkOjpiYXNpY19zdHJlYW1idWY8Y2hhcj4sIHB1Ymxp
YyBzdGQ6Om9zdHJlYW0gewogICAvLyBUaGUgYXJndW1lbnQgY2FuIGJlIG51bGwsIGluIHdoaWNo
IGNhc2UgeW91J2xsIG5lZWQgdG8gY2FsbCBzdHIocCkgd2l0aCBhCiAgIC8vIG5vbi1udWxsIGFy
Z3VtZW50IGJlZm9yZSB5b3UgY2FuIHdyaXRlIHRvIHRoZSBzdHJlYW0uCiAgIC8vCi0gIC8vIFRo
ZSBkZXN0cnVjdG9yIG9mIE9TdHJpbmdTdHJlYW0gZG9lc24ndCB1c2UgdGhlIHN0ZDo6c3RyaW5n
LiBJdCdzIE9LIHRvIGRlc3Ryb3kKLSAgLy8gdGhlIHN0ZDo6c3RyaW5nIGJlZm9yZSB0aGUgc3Ry
ZWFtLgorICAvLyBUaGUgZGVzdHJ1Y3RvciBvZiBPU3RyaW5nU3RyZWFtIGRvZXNuJ3QgdXNlIHRo
ZSBzdGQ6OnN0cmluZy4gSXQncyBPSyB0bworICAvLyBkZXN0cm95IHRoZSBzdGQ6OnN0cmluZyBi
ZWZvcmUgdGhlIHN0cmVhbS4KICAgZXhwbGljaXQgT1N0cmluZ1N0cmVhbShzdGQ6OnN0cmluZyog
cykgOiBzdGQ6Om9zdHJlYW0odGhpcyksIHNfKHMpIHt9CiAKICAgc3RkOjpzdHJpbmcqIHN0cigp
IHsgcmV0dXJuIHNfOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJp
bmdzdHJlYW1fYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3Ry
ZWFtX2JlbmNobWFyay5jYwppbmRleCBjOTNmOTY5MDlkOGI2NTQzNDIwNGQwMTA2NDZmNThmNDYy
M2U0YWQxLi41OTc5ZjE4MjM2ZTMzYzY4OTUzZGQ5MzIzN2FjYmViYjY1ZjVhMTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW1fYmVuY2htYXJrLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbV9iZW5jaG1hcmsuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9vc3RyaW5nc3RyZWFtX3Rlc3QuY2MKaW5kZXggMDY5YTBlMWZiYmIxMTQ1MjJlZDIy
YjkxY2JiMTk5MjA2MDE5MmNlMS4uMjg3OWU1MGViMzhkYzk0Mzk0Y2FjNmMxZjQ0NWRiMWQwMjNm
ODAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtX3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtX3Rlc3QuY2MK
QEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvcG93MTBfaGVscGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9wb3cxMF9oZWxwZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNlZDhkMDdjZDQyYmJlNWEwZjEwYTA5
MzFiNGU4NDMwMTZjNzc5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvcG93MTBfaGVscGVyLmNjCkBAIC0wLDAgKzEsMTIwIEBACisvLyBDb3B5cmlnaHQgMjAxOCBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9w
b3cxMF9oZWxwZXIuaCIKKworI2luY2x1ZGUgPGNtYXRoPgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7CisKK25hbWVzcGFjZSB7CisKKy8vIFRoZSBleGFj
dCB2YWx1ZSBvZiAxZTIzIGZhbGxzIHByZWNpc2VseSBoYWxmd2F5IGJldHdlZW4gdHdvIHJlcHJl
c2VudGFibGUKKy8vIGRvdWJsZXMuIEZ1cnRoZXJtb3JlLCB0aGUgcm91bmRpbmcgcnVsZXMgd2Ug
cHJlZmVyIChicmVhayB0aWVzIGJ5IHJvdW5kaW5nCisvLyB0byB0aGUgbmVhcmVzdCBldmVuKSBk
aWN0YXRlIGluIHRoaXMgY2FzZSB0aGF0IHRoZSBudW1iZXIgc2hvdWxkIGJlIHJvdW5kZWQKKy8v
IGRvd24sIGJ1dCB0aGlzIGlzIG5vdCBjb21wbGV0ZWx5IHNwZWNpZmllZCBmb3IgZmxvYXRpbmct
cG9pbnQgbGl0ZXJhbHMgaW4KKy8vIEMrKy4gKEl0IGp1c3Qgc2F5cyB0byB1c2UgdGhlIGRlZmF1
bHQgcm91bmRpbmcgbW9kZSBvZiB0aGUgc3RhbmRhcmQKKy8vIGxpYnJhcnkuKSBXZSBlbnN1cmUg
dGhlIHJlc3VsdCB3ZSB3YW50IGJ5IHVzaW5nIGEgbnVtYmVyIHRoYXQgaGFzIGFuCisvLyB1bmFt
YmlndW91cyBjb3JyZWN0bHkgcm91bmRlZCBhbnN3ZXIuCitjb25zdGV4cHIgZG91YmxlIGsxZTIz
ID0gOTk5OTk5OTk5OTk5OTk5OWU3OworCitjb25zdGV4cHIgZG91YmxlIGtQb3dlcnNPZlRlbltd
ID0geworICAgIDAuMCwgICAgMWUtMzIzLCAxZS0zMjIsIDFlLTMyMSwgMWUtMzIwLCAxZS0zMTks
IDFlLTMxOCwgMWUtMzE3LCAxZS0zMTYsCisgICAgMWUtMzE1LCAxZS0zMTQsIDFlLTMxMywgMWUt
MzEyLCAxZS0zMTEsIDFlLTMxMCwgMWUtMzA5LCAxZS0zMDgsIDFlLTMwNywKKyAgICAxZS0zMDYs
IDFlLTMwNSwgMWUtMzA0LCAxZS0zMDMsIDFlLTMwMiwgMWUtMzAxLCAxZS0zMDAsIDFlLTI5OSwg
MWUtMjk4LAorICAgIDFlLTI5NywgMWUtMjk2LCAxZS0yOTUsIDFlLTI5NCwgMWUtMjkzLCAxZS0y
OTIsIDFlLTI5MSwgMWUtMjkwLCAxZS0yODksCisgICAgMWUtMjg4LCAxZS0yODcsIDFlLTI4Niwg
MWUtMjg1LCAxZS0yODQsIDFlLTI4MywgMWUtMjgyLCAxZS0yODEsIDFlLTI4MCwKKyAgICAxZS0y
NzksIDFlLTI3OCwgMWUtMjc3LCAxZS0yNzYsIDFlLTI3NSwgMWUtMjc0LCAxZS0yNzMsIDFlLTI3
MiwgMWUtMjcxLAorICAgIDFlLTI3MCwgMWUtMjY5LCAxZS0yNjgsIDFlLTI2NywgMWUtMjY2LCAx
ZS0yNjUsIDFlLTI2NCwgMWUtMjYzLCAxZS0yNjIsCisgICAgMWUtMjYxLCAxZS0yNjAsIDFlLTI1
OSwgMWUtMjU4LCAxZS0yNTcsIDFlLTI1NiwgMWUtMjU1LCAxZS0yNTQsIDFlLTI1MywKKyAgICAx
ZS0yNTIsIDFlLTI1MSwgMWUtMjUwLCAxZS0yNDksIDFlLTI0OCwgMWUtMjQ3LCAxZS0yNDYsIDFl
LTI0NSwgMWUtMjQ0LAorICAgIDFlLTI0MywgMWUtMjQyLCAxZS0yNDEsIDFlLTI0MCwgMWUtMjM5
LCAxZS0yMzgsIDFlLTIzNywgMWUtMjM2LCAxZS0yMzUsCisgICAgMWUtMjM0LCAxZS0yMzMsIDFl
LTIzMiwgMWUtMjMxLCAxZS0yMzAsIDFlLTIyOSwgMWUtMjI4LCAxZS0yMjcsIDFlLTIyNiwKKyAg
ICAxZS0yMjUsIDFlLTIyNCwgMWUtMjIzLCAxZS0yMjIsIDFlLTIyMSwgMWUtMjIwLCAxZS0yMTks
IDFlLTIxOCwgMWUtMjE3LAorICAgIDFlLTIxNiwgMWUtMjE1LCAxZS0yMTQsIDFlLTIxMywgMWUt
MjEyLCAxZS0yMTEsIDFlLTIxMCwgMWUtMjA5LCAxZS0yMDgsCisgICAgMWUtMjA3LCAxZS0yMDYs
IDFlLTIwNSwgMWUtMjA0LCAxZS0yMDMsIDFlLTIwMiwgMWUtMjAxLCAxZS0yMDAsIDFlLTE5OSwK
KyAgICAxZS0xOTgsIDFlLTE5NywgMWUtMTk2LCAxZS0xOTUsIDFlLTE5NCwgMWUtMTkzLCAxZS0x
OTIsIDFlLTE5MSwgMWUtMTkwLAorICAgIDFlLTE4OSwgMWUtMTg4LCAxZS0xODcsIDFlLTE4Niwg
MWUtMTg1LCAxZS0xODQsIDFlLTE4MywgMWUtMTgyLCAxZS0xODEsCisgICAgMWUtMTgwLCAxZS0x
NzksIDFlLTE3OCwgMWUtMTc3LCAxZS0xNzYsIDFlLTE3NSwgMWUtMTc0LCAxZS0xNzMsIDFlLTE3
MiwKKyAgICAxZS0xNzEsIDFlLTE3MCwgMWUtMTY5LCAxZS0xNjgsIDFlLTE2NywgMWUtMTY2LCAx
ZS0xNjUsIDFlLTE2NCwgMWUtMTYzLAorICAgIDFlLTE2MiwgMWUtMTYxLCAxZS0xNjAsIDFlLTE1
OSwgMWUtMTU4LCAxZS0xNTcsIDFlLTE1NiwgMWUtMTU1LCAxZS0xNTQsCisgICAgMWUtMTUzLCAx
ZS0xNTIsIDFlLTE1MSwgMWUtMTUwLCAxZS0xNDksIDFlLTE0OCwgMWUtMTQ3LCAxZS0xNDYsIDFl
LTE0NSwKKyAgICAxZS0xNDQsIDFlLTE0MywgMWUtMTQyLCAxZS0xNDEsIDFlLTE0MCwgMWUtMTM5
LCAxZS0xMzgsIDFlLTEzNywgMWUtMTM2LAorICAgIDFlLTEzNSwgMWUtMTM0LCAxZS0xMzMsIDFl
LTEzMiwgMWUtMTMxLCAxZS0xMzAsIDFlLTEyOSwgMWUtMTI4LCAxZS0xMjcsCisgICAgMWUtMTI2
LCAxZS0xMjUsIDFlLTEyNCwgMWUtMTIzLCAxZS0xMjIsIDFlLTEyMSwgMWUtMTIwLCAxZS0xMTks
IDFlLTExOCwKKyAgICAxZS0xMTcsIDFlLTExNiwgMWUtMTE1LCAxZS0xMTQsIDFlLTExMywgMWUt
MTEyLCAxZS0xMTEsIDFlLTExMCwgMWUtMTA5LAorICAgIDFlLTEwOCwgMWUtMTA3LCAxZS0xMDYs
IDFlLTEwNSwgMWUtMTA0LCAxZS0xMDMsIDFlLTEwMiwgMWUtMTAxLCAxZS0xMDAsCisgICAgMWUt
OTksICAxZS05OCwgIDFlLTk3LCAgMWUtOTYsICAxZS05NSwgIDFlLTk0LCAgMWUtOTMsICAxZS05
MiwgIDFlLTkxLAorICAgIDFlLTkwLCAgMWUtODksICAxZS04OCwgIDFlLTg3LCAgMWUtODYsICAx
ZS04NSwgIDFlLTg0LCAgMWUtODMsICAxZS04MiwKKyAgICAxZS04MSwgIDFlLTgwLCAgMWUtNzks
ICAxZS03OCwgIDFlLTc3LCAgMWUtNzYsICAxZS03NSwgIDFlLTc0LCAgMWUtNzMsCisgICAgMWUt
NzIsICAxZS03MSwgIDFlLTcwLCAgMWUtNjksICAxZS02OCwgIDFlLTY3LCAgMWUtNjYsICAxZS02
NSwgIDFlLTY0LAorICAgIDFlLTYzLCAgMWUtNjIsICAxZS02MSwgIDFlLTYwLCAgMWUtNTksICAx
ZS01OCwgIDFlLTU3LCAgMWUtNTYsICAxZS01NSwKKyAgICAxZS01NCwgIDFlLTUzLCAgMWUtNTIs
ICAxZS01MSwgIDFlLTUwLCAgMWUtNDksICAxZS00OCwgIDFlLTQ3LCAgMWUtNDYsCisgICAgMWUt
NDUsICAxZS00NCwgIDFlLTQzLCAgMWUtNDIsICAxZS00MSwgIDFlLTQwLCAgMWUtMzksICAxZS0z
OCwgIDFlLTM3LAorICAgIDFlLTM2LCAgMWUtMzUsICAxZS0zNCwgIDFlLTMzLCAgMWUtMzIsICAx
ZS0zMSwgIDFlLTMwLCAgMWUtMjksICAxZS0yOCwKKyAgICAxZS0yNywgIDFlLTI2LCAgMWUtMjUs
ICAxZS0yNCwgIDFlLTIzLCAgMWUtMjIsICAxZS0yMSwgIDFlLTIwLCAgMWUtMTksCisgICAgMWUt
MTgsICAxZS0xNywgIDFlLTE2LCAgMWUtMTUsICAxZS0xNCwgIDFlLTEzLCAgMWUtMTIsICAxZS0x
MSwgIDFlLTEwLAorICAgIDFlLTksICAgMWUtOCwgICAxZS03LCAgIDFlLTYsICAgMWUtNSwgICAx
ZS00LCAgIDFlLTMsICAgMWUtMiwgICAxZS0xLAorICAgIDFlKzAsICAgMWUrMSwgICAxZSsyLCAg
IDFlKzMsICAgMWUrNCwgICAxZSs1LCAgIDFlKzYsICAgMWUrNywgICAxZSs4LAorICAgIDFlKzks
ICAgMWUrMTAsICAxZSsxMSwgIDFlKzEyLCAgMWUrMTMsICAxZSsxNCwgIDFlKzE1LCAgMWUrMTYs
ICAxZSsxNywKKyAgICAxZSsxOCwgIDFlKzE5LCAgMWUrMjAsICAxZSsyMSwgIDFlKzIyLCAgazFl
MjMsICAxZSsyNCwgIDFlKzI1LCAgMWUrMjYsCisgICAgMWUrMjcsICAxZSsyOCwgIDFlKzI5LCAg
MWUrMzAsICAxZSszMSwgIDFlKzMyLCAgMWUrMzMsICAxZSszNCwgIDFlKzM1LAorICAgIDFlKzM2
LCAgMWUrMzcsICAxZSszOCwgIDFlKzM5LCAgMWUrNDAsICAxZSs0MSwgIDFlKzQyLCAgMWUrNDMs
ICAxZSs0NCwKKyAgICAxZSs0NSwgIDFlKzQ2LCAgMWUrNDcsICAxZSs0OCwgIDFlKzQ5LCAgMWUr
NTAsICAxZSs1MSwgIDFlKzUyLCAgMWUrNTMsCisgICAgMWUrNTQsICAxZSs1NSwgIDFlKzU2LCAg
MWUrNTcsICAxZSs1OCwgIDFlKzU5LCAgMWUrNjAsICAxZSs2MSwgIDFlKzYyLAorICAgIDFlKzYz
LCAgMWUrNjQsICAxZSs2NSwgIDFlKzY2LCAgMWUrNjcsICAxZSs2OCwgIDFlKzY5LCAgMWUrNzAs
ICAxZSs3MSwKKyAgICAxZSs3MiwgIDFlKzczLCAgMWUrNzQsICAxZSs3NSwgIDFlKzc2LCAgMWUr
NzcsICAxZSs3OCwgIDFlKzc5LCAgMWUrODAsCisgICAgMWUrODEsICAxZSs4MiwgIDFlKzgzLCAg
MWUrODQsICAxZSs4NSwgIDFlKzg2LCAgMWUrODcsICAxZSs4OCwgIDFlKzg5LAorICAgIDFlKzkw
LCAgMWUrOTEsICAxZSs5MiwgIDFlKzkzLCAgMWUrOTQsICAxZSs5NSwgIDFlKzk2LCAgMWUrOTcs
ICAxZSs5OCwKKyAgICAxZSs5OSwgIDFlKzEwMCwgMWUrMTAxLCAxZSsxMDIsIDFlKzEwMywgMWUr
MTA0LCAxZSsxMDUsIDFlKzEwNiwgMWUrMTA3LAorICAgIDFlKzEwOCwgMWUrMTA5LCAxZSsxMTAs
IDFlKzExMSwgMWUrMTEyLCAxZSsxMTMsIDFlKzExNCwgMWUrMTE1LCAxZSsxMTYsCisgICAgMWUr
MTE3LCAxZSsxMTgsIDFlKzExOSwgMWUrMTIwLCAxZSsxMjEsIDFlKzEyMiwgMWUrMTIzLCAxZSsx
MjQsIDFlKzEyNSwKKyAgICAxZSsxMjYsIDFlKzEyNywgMWUrMTI4LCAxZSsxMjksIDFlKzEzMCwg
MWUrMTMxLCAxZSsxMzIsIDFlKzEzMywgMWUrMTM0LAorICAgIDFlKzEzNSwgMWUrMTM2LCAxZSsx
MzcsIDFlKzEzOCwgMWUrMTM5LCAxZSsxNDAsIDFlKzE0MSwgMWUrMTQyLCAxZSsxNDMsCisgICAg
MWUrMTQ0LCAxZSsxNDUsIDFlKzE0NiwgMWUrMTQ3LCAxZSsxNDgsIDFlKzE0OSwgMWUrMTUwLCAx
ZSsxNTEsIDFlKzE1MiwKKyAgICAxZSsxNTMsIDFlKzE1NCwgMWUrMTU1LCAxZSsxNTYsIDFlKzE1
NywgMWUrMTU4LCAxZSsxNTksIDFlKzE2MCwgMWUrMTYxLAorICAgIDFlKzE2MiwgMWUrMTYzLCAx
ZSsxNjQsIDFlKzE2NSwgMWUrMTY2LCAxZSsxNjcsIDFlKzE2OCwgMWUrMTY5LCAxZSsxNzAsCisg
ICAgMWUrMTcxLCAxZSsxNzIsIDFlKzE3MywgMWUrMTc0LCAxZSsxNzUsIDFlKzE3NiwgMWUrMTc3
LCAxZSsxNzgsIDFlKzE3OSwKKyAgICAxZSsxODAsIDFlKzE4MSwgMWUrMTgyLCAxZSsxODMsIDFl
KzE4NCwgMWUrMTg1LCAxZSsxODYsIDFlKzE4NywgMWUrMTg4LAorICAgIDFlKzE4OSwgMWUrMTkw
LCAxZSsxOTEsIDFlKzE5MiwgMWUrMTkzLCAxZSsxOTQsIDFlKzE5NSwgMWUrMTk2LCAxZSsxOTcs
CisgICAgMWUrMTk4LCAxZSsxOTksIDFlKzIwMCwgMWUrMjAxLCAxZSsyMDIsIDFlKzIwMywgMWUr
MjA0LCAxZSsyMDUsIDFlKzIwNiwKKyAgICAxZSsyMDcsIDFlKzIwOCwgMWUrMjA5LCAxZSsyMTAs
IDFlKzIxMSwgMWUrMjEyLCAxZSsyMTMsIDFlKzIxNCwgMWUrMjE1LAorICAgIDFlKzIxNiwgMWUr
MjE3LCAxZSsyMTgsIDFlKzIxOSwgMWUrMjIwLCAxZSsyMjEsIDFlKzIyMiwgMWUrMjIzLCAxZSsy
MjQsCisgICAgMWUrMjI1LCAxZSsyMjYsIDFlKzIyNywgMWUrMjI4LCAxZSsyMjksIDFlKzIzMCwg
MWUrMjMxLCAxZSsyMzIsIDFlKzIzMywKKyAgICAxZSsyMzQsIDFlKzIzNSwgMWUrMjM2LCAxZSsy
MzcsIDFlKzIzOCwgMWUrMjM5LCAxZSsyNDAsIDFlKzI0MSwgMWUrMjQyLAorICAgIDFlKzI0Mywg
MWUrMjQ0LCAxZSsyNDUsIDFlKzI0NiwgMWUrMjQ3LCAxZSsyNDgsIDFlKzI0OSwgMWUrMjUwLCAx
ZSsyNTEsCisgICAgMWUrMjUyLCAxZSsyNTMsIDFlKzI1NCwgMWUrMjU1LCAxZSsyNTYsIDFlKzI1
NywgMWUrMjU4LCAxZSsyNTksIDFlKzI2MCwKKyAgICAxZSsyNjEsIDFlKzI2MiwgMWUrMjYzLCAx
ZSsyNjQsIDFlKzI2NSwgMWUrMjY2LCAxZSsyNjcsIDFlKzI2OCwgMWUrMjY5LAorICAgIDFlKzI3
MCwgMWUrMjcxLCAxZSsyNzIsIDFlKzI3MywgMWUrMjc0LCAxZSsyNzUsIDFlKzI3NiwgMWUrMjc3
LCAxZSsyNzgsCisgICAgMWUrMjc5LCAxZSsyODAsIDFlKzI4MSwgMWUrMjgyLCAxZSsyODMsIDFl
KzI4NCwgMWUrMjg1LCAxZSsyODYsIDFlKzI4NywKKyAgICAxZSsyODgsIDFlKzI4OSwgMWUrMjkw
LCAxZSsyOTEsIDFlKzI5MiwgMWUrMjkzLCAxZSsyOTQsIDFlKzI5NSwgMWUrMjk2LAorICAgIDFl
KzI5NywgMWUrMjk4LCAxZSsyOTksIDFlKzMwMCwgMWUrMzAxLCAxZSszMDIsIDFlKzMwMywgMWUr
MzA0LCAxZSszMDUsCisgICAgMWUrMzA2LCAxZSszMDcsIDFlKzMwOCwKK307CisKK30gIC8vIG5h
bWVzcGFjZQorCitkb3VibGUgUG93MTAoaW50IGV4cCkgeworICBpZiAoZXhwIDwgLTMyNCkgewor
ICAgIHJldHVybiAwLjA7CisgIH0gZWxzZSBpZiAoZXhwID4gMzA4KSB7CisgICAgcmV0dXJuIElO
RklOSVRZOworICB9IGVsc2UgeworICAgIHJldHVybiBrUG93ZXJzT2ZUZW5bZXhwICsgMzI0XTsK
KyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbAorfSAgLy8gbmFtZXNw
YWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvcG93MTBfaGVscGVy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlk
MWFhNzEwZGI1YTFhMWJlOTIxYjA0OGQ1ODFjMDRjOTUyODJjNjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBlci5oCkBAIC0wLDAgKzEsMzYgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyBUaGlz
IHRlc3QgaGVscGVyIGxpYnJhcnkgY29udGFpbnMgYSB0YWJsZSBvZiBwb3dlcnMgb2YgMTAsIHRv
IGd1YXJhbnRlZQorLy8gcHJlY2lzZSB2YWx1ZXMgYXJlIGNvbXB1dGVkIGFjcm9zcyB0aGUgZnVs
bCByYW5nZSBvZiBkb3VibGVzLiBXZSBjYW4ndCByZWx5CisvLyBvbiB0aGUgcG93KCkgZnVuY3Rp
b24sIGJlY2F1c2Ugbm90IGFsbCBzdGFuZGFyZCBsaWJyYXJpZXMgc2hpcCBhIHZlcnNpb24KKy8v
IHRoYXQgaXMgcHJlY2lzZS4KKyNpZm5kZWYgQUJTTF9TVFJJTkdTX0lOVEVSTkFMX1BPVzEwX0hF
TFBFUl9IXworI2RlZmluZSBBQlNMX1NUUklOR1NfSU5URVJOQUxfUE9XMTBfSEVMUEVSX0hfCisK
KyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBzdHJpbmdz
X2ludGVybmFsIHsKKworLy8gQ29tcHV0ZXMgdGhlIHByZWNpc2UgdmFsdWUgb2YgMTBeZXhwLiAo
SS5lLiB0aGUgbmVhcmVzdCByZXByZXNlbnRhYmxlCisvLyBkb3VibGUgdG8gdGhlIGV4YWN0IHZh
bHVlLCByb3VuZGluZyB0byBuZWFyZXN0LWV2ZW4gaW4gdGhlIChzaW5nbGUpIGNhc2Ugb2YKKy8v
IGJlaW5nIGV4YWN0bHkgaGFsZndheSBiZXR3ZWVuLikKK2RvdWJsZSBQb3cxMChpbnQgZXhwKTsK
KworfSAgLy8gbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNs
CisKKyNlbmRpZiAgLy8gQUJTTF9TVFJJTkdTX0lOVEVSTkFMX1BPVzEwX0hFTFBFUl9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9wb3cxMF9oZWxwZXJfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvcG93MTBfaGVscGVyX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRh
NjhiNWRhYjMxOWMxNmU0ZDdmYjBiZjE2YjI5MGIzMzUxMjZlYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvcG93MTBfaGVscGVyX3Rlc3QuY2MKQEAgLTAsMCArMSwx
MjAgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVk
ZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL3BvdzEwX2hlbHBlci5oIgorCisjaW5jbHVkZSA8Y21h
dGg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9z
dHJfZm9ybWF0LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBzdHJpbmdzX2ludGVy
bmFsIHsKKworbmFtZXNwYWNlIHsKKworc3RydWN0IFRlc3RDYXNlIHsKKyAgaW50IHBvd2VyOyAg
ICAgICAgICAgLy8gVGVzdGluZyBQb3cxMChwb3dlcikKKyAgdWludDY0X3Qgc2lnbmlmaWNhbmQ7
ICAvLyBSYXcgYml0cyBvZiB0aGUgZXhwZWN0ZWQgdmFsdWUKKyAgaW50IHJhZGl4OyAgICAgICAg
ICAgLy8gc2lnbmlmaWNhbmQgaXMgYWRqdXN0ZWQgYnkgMl5yYWRpeAorfTsKKworVEVTVChQb3cx
MEhlbHBlclRlc3QsIFdvcmtzKSB7CisgIC8vIFRoZSBsb2dpYyBpbiBwb3cxMF9oZWxwZXIuY2Mg
aXMgc28gc2ltcGxlIHRoYXQgdGhlb3JldGljYWxseSB3ZSBkb24ndCBldmVuCisgIC8vIG5lZWQg
YSB0ZXN0LiBIb3dldmVyLCB3ZSdyZSBwYXJhbm9pZCBhbmQgYmVsaWV2ZSB0aGF0IHRoZXJlIG1h
eSBiZQorICAvLyBjb21waWxlcnMgdGhhdCBkb24ndCByb3VuZCBmbG9hdGluZy1wb2ludCBsaXRl
cmFscyBjb3JyZWN0bHksIGV2ZW4gdGhvdWdoCisgIC8vIGl0IGlzIHNwZWNpZmllZCBieSB0aGUg
c3RhbmRhcmQuIFdlIGNoZWNrIHZhcmlvdXMgZWRnZSBjYXNlcywganVzdCB0byBiZQorICAvLyBz
dXJlLgorICBjb25zdGV4cHIgVGVzdENhc2Uga1Rlc3RDYXNlc1tdID0geworICAgICAgLy8gU3Vi
bm9ybWFscworICAgICAgey0zMjMsIDB4MiwgLTEwNzR9LAorICAgICAgey0zMjIsIDB4MTQsIC0x
MDc0fSwKKyAgICAgIHstMzIxLCAweGNhLCAtMTA3NH0sCisgICAgICB7LTMyMCwgMHg3ZTgsIC0x
MDc0fSwKKyAgICAgIHstMzE5LCAweDRmMTAsIC0xMDc0fSwKKyAgICAgIHstMzE4LCAweDMxNmEy
LCAtMTA3NH0sCisgICAgICB7LTMxNywgMHgxZWUyNTcsIC0xMDc0fSwKKyAgICAgIHstMzE2LCAw
eDEzNGQ3NjEsIC0xMDc0fSwKKyAgICAgIHstMzE1LCAweGMxMDY5Y2QsIC0xMDc0fSwKKyAgICAg
IHstMzE0LCAweDc4YTQyMjA1LCAtMTA3NH0sCisgICAgICB7LTMxMywgMHg0YjY2OTU0MzMsIC0x
MDc0fSwKKyAgICAgIHstMzEyLCAweDJmMjAxZDQ5ZmIsIC0xMDc0fSwKKyAgICAgIHstMzExLCAw
eDFkNzQxMjRlM2QxLCAtMTA3NH0sCisgICAgICB7LTMxMCwgMHgxMjY4OGI3MGU2MmIsIC0xMDc0
fSwKKyAgICAgIHstMzA5LCAweGI4MTU3MjY4ZmRhZiwgLTEwNzR9LAorICAgICAgey0zMDgsIDB4
NzMwZDY3ODE5ZThkMiwgLTEwNzR9LAorICAgICAgLy8gVmFsdWVzIHRoYXQgYXJlIHZlcnkgY2xv
c2UgdG8gcm91bmRpbmcgdGhlIG90aGVyIHdheS4KKyAgICAgIC8vIENvbW1lbnQgc2hvd3MgZGlm
ZmVyZW5jZSBvZiBzaWduaWZpY2FuZCBmcm9tIHRoZSB0cnVlIHZhbHVlLgorICAgICAgey0zMDcs
IDB4MTFmYTE4MmM0MGM2MGQsIC0xMDcyfSwgIC8vIC0uNDU4OAorICAgICAgey0yOTAsIDB4MThm
MmIwNjFhZWEwNzIsIC0xMDE2fSwgIC8vICAuNDg1NAorICAgICAgey0yNzYsIDB4MTFCQTAzRjVC
MjEwMDAsIC05Njl9LCAgIC8vICAuNDcwOQorICAgICAgey0yNTksIDB4MTg5OUMyRjY3MzIyMTAs
IC05MTN9LCAgIC8vICAuNDgzMAorICAgICAgey0yNTIsIDB4MUQ1Mzg0NEVFNDdERDEsIC04OTB9
LCAgIC8vIC0uNDc0MworICAgICAgey0yMjcsIDB4MUU1Mjk3Mjg3QzJGNDUsIC04MDd9LCAgIC8v
IC0uNDcwOAorICAgICAgey0xOTgsIDB4MTMyMkUyMjBBNUIxN0UsIC03MTB9LCAgIC8vIC0uNDcx
NAorICAgICAgey0xOTUsIDB4MTJCMDEwRDNFMUNGNTYsIC03MDB9LCAgIC8vICAuNDkyOAorICAg
ICAgey0xOTIsIDB4MTIzRkYwNkVFQTg0N0EsIC02OTB9LCAgIC8vICAuNDk2OAorICAgICAgey0x
NjMsIDB4MTcwOEQwRjg0RDNERTcsIC01OTR9LCAgIC8vIC0uNDk3NworICAgICAgey0xNDUsIDB4
MTNGQUFDM0UzRkExRjMsIC01MzR9LCAgIC8vIC0uNDc4NQorICAgICAgey0xMTEsIDB4MTMzRDQw
MzJDMkM3RjUsIC00MjF9LCAgIC8vICAuNDc3NAorICAgICAgey0xMDYsIDB4MUQ1QjU2MTU3NDc2
NUIsIC00MDV9LCAgIC8vIC0uNDg2OQorICAgICAgey0xMDQsIDB4MTZFRjVCNDBDMkZDNzcsIC0z
OTh9LCAgIC8vIC0uNDc0MQorICAgICAgey04OCwgMHgxOTc2ODNERjJGMjY4RCwgLTM0NX0sICAg
IC8vIC0uNDczOAorICAgICAgey04NiwgMHgxM0U0OTcwNjVDRDYxRiwgLTMzOH0sICAgIC8vICAu
NDczNgorICAgICAgey03NiwgMHgxNzI4OEUxMjcxRjUxMywgLTMwNX0sICAgIC8vIC0uNDc2MQor
ICAgICAgey02MywgMHgxQTUzRkM5NjMxRDEwRCwgLTI2Mn0sICAgIC8vICAuNDkyOQorICAgICAg
ey0zMCwgMHgxNDQ4NEJGRUVCQzJBMCwgLTE1Mn0sICAgIC8vICAuNDc1OAorICAgICAgey0yMSwg
MHgxMkUzQjQwQTBFOUI0RiwgLTEyMn0sICAgIC8vIC0uNDkxNgorICAgICAgey01LCAweDE0RjhC
NTg4RTM2OEYxLCAtNjl9LCAgICAgIC8vICAuNDgyOQorICAgICAgezIzLCAweDE1MkQwMkM3RTE0
QUY2LCAyNH0sICAgICAgIC8vIC0uNTAwMCAoZXhhY3RseSwgcm91bmQtdG8tZXZlbikKKyAgICAg
IHsyOSwgMHgxNDMxRTBGQUU2RDcyMSwgNDR9LCAgICAgICAvLyAtLjQ4NzAKKyAgICAgIHszNCwg
MHgxRUQwOUJFQUQ4N0MwMywgNjB9LCAgICAgICAvLyAtLjQ3MjEKKyAgICAgIHs3MCwgMHgxNzJF
QkFENkREQzczRCwgMTgwfSwgICAgICAvLyAgLjQ3MzMKKyAgICAgIHsxMDUsIDB4MUJFN0FCRDM3
ODFFQ0EsIDI5Nn0sICAgICAvLyAtLjQ4NTAKKyAgICAgIHsxMjYsIDB4MTdBMkVDQzQxNEEwM0Ys
IDM2Nn0sICAgICAvLyAtLjQ5OTkKKyAgICAgIHsxMzAsIDB4MUNEQTYyMDU1QjJEOUUsIDM3OX0s
ICAgICAvLyAgLjQ4NTUKKyAgICAgIHsxNjUsIDB4MTE1RDg0N0FEMDAwODcsIDQ5Nn0sICAgICAv
LyAtLjQ5MTMKKyAgICAgIHsxNzIsIDB4MTRCMzc4NDY5QjY3MzIsIDUxOX0sICAgICAvLyAgLjQ4
MTgKKyAgICAgIHsxODcsIDB4MTI2MkRGRUVCQkIwRjksIDU2OX0sICAgICAvLyAtLjQ4MDUKKyAg
ICAgIHsyMTAsIDB4MTg1NTdGMzEzMjZCQkIsIDY0NX0sICAgICAvLyAtLjQ5OTIKKyAgICAgIHsy
MTIsIDB4MTMwMkNCNUU2RjY0MkEsIDY1Mn0sICAgICAvLyAtLjQ4MzgKKyAgICAgIHsyMTUsIDB4
MTI5MEJBOUEzOEM3RDEsIDY2Mn0sICAgICAvLyAtLjQ4ODEKKyAgICAgIHsyMzYsIDB4MUY3MzZG
OUIzNDk0RTksIDczMX0sICAgICAvLyAgLjQ3MDcKKyAgICAgIHsyNDQsIDB4MTc2RUM5ODk5NEY0
ODksIDc1OH0sICAgICAvLyAgLjQ5MjQKKyAgICAgIHsyNTAsIDB4MTY1OEUzQUI3OTUyMDQsIDc3
OH0sICAgICAvLyAtLjQ5NjMKKyAgICAgIHsyNTIsIDB4MTE3NTcxRERGNkM4MTQsIDc4NX0sICAg
ICAvLyAgLjQ4NzMKKyAgICAgIHsyNTQsIDB4MUI0NzgxRUFEMTk4OUUsIDc5MX0sICAgICAvLyAt
LjQ4ODcKKyAgICAgIHsyNjAsIDB4MUEwM0ZERTIxNENBRjEsIDgxMX0sICAgICAvLyAgLjQ3ODQK
KyAgICAgIHsyODQsIDB4MTU4NTA0MUIyQzQ3N0YsIDg5MX0sICAgICAvLyAgLjQ3OTgKKyAgICAg
IHszMDQsIDB4MUQyQTFCRTQwNDhGOTAsIDk1N30sICAgICAvLyAtLjQ5ODcKKyAgICAgIC8vIE91
dC1vZi1yYW5nZSB2YWx1ZXMKKyAgICAgIHstMzI0LCAweDAsIDB9LAorICAgICAgey0zMjUsIDB4
MCwgMH0sCisgICAgICB7LTMyNiwgMHgwLCAwfSwKKyAgICAgIHszMDksIDEsIDIwMDB9LAorICAg
ICAgezMxMCwgMSwgMjAwMH0sCisgICAgICB7MzExLCAxLCAyMDAwfSwKKyAgfTsKKyAgZm9yIChj
b25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlIDoga1Rlc3RDYXNlcykgeworICAgIEVYUEVDVF9FUShQ
b3cxMCh0ZXN0X2Nhc2UucG93ZXIpLAorICAgICAgICAgICAgICBzdGQ6OmxkZXhwKHRlc3RfY2Fz
ZS5zaWduaWZpY2FuZCwgdGVzdF9jYXNlLnJhZGl4KSkKKyAgICAgICAgPDwgYWJzbDo6U3RyRm9y
bWF0KCJGYWlsdXJlIGZvciBQb3cxMCglZCk6ICVhIHZzICVhIiwgdGVzdF9jYXNlLnBvd2VyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUG93MTAodGVzdF9jYXNlLnBvd2VyKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bGRleHAodGVzdF9jYXNlLnNpZ25pZmljYW5kLCB0
ZXN0X2Nhc2UucmFkaXgpKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVz
cGFjZSBzdHJpbmdzX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5oCmluZGV4IGE5NGUwNTQ3YjUwZjE1
NDIzNDM3NGU4ZTYwODA0MmE2YzcwMzNiYzkuLjQ2OTk2MmIyNzQ5ZDZmYTVlMjZiYjdmZjhhN2Ix
NzkwMzQwMjRiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvcmVzaXplX3Vu
aW5pdGlhbGl6ZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3Jlc2l6ZV91bmluaXRp
YWxpemVkLmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE4
LDYgKzE4LDcgQEAKICNkZWZpbmUgQUJTTF9TVFJJTkdTX0lOVEVSTkFMX1JFU0laRV9VTklOSVRJ
QUxJWkVEX0hfCiAKICNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiCkBAIC0yNyw0
MCArMjgsNDIgQEAgbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwg
ewogCiAvLyBJcyBhIHN1YmNsYXNzIG9mIHRydWVfdHlwZSBvciBmYWxzZV90eXBlLCBkZXBlbmRp
bmcgb24gd2hldGhlciBvciBub3QKLS8vIFQgaGFzIGEgcmVzaXplX3VuaW5pdGlhbGl6ZWQgbWVt
YmVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4KLXN0cnVjdCBIYXNS
ZXNpemVVbmluaXRpYWxpemVkIDogc3RkOjpmYWxzZV90eXBlIHt9OwotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1zdHJ1Y3QgSGFzUmVzaXplVW5pbml0aWFsaXplZDwKLSAgICBULCBhYnNsOjp2b2lk
X3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkucmVzaXplX3VuaW5pdGlhbGl6ZWQoMjM3KSk+
PgotICAgIDogc3RkOjp0cnVlX3R5cGUge307CisvLyBUIGhhcyBhIF9fcmVzaXplX2RlZmF1bHRf
aW5pdCBtZW1iZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgc3RyaW5nX3R5cGUsIHR5cGVuYW1lID0g
dm9pZD4KK3N0cnVjdCBSZXNpemVVbmluaXRpYWxpemVkVHJhaXRzIHsKKyAgdXNpbmcgSGFzTWVt
YmVyID0gc3RkOjpmYWxzZV90eXBlOworICBzdGF0aWMgdm9pZCBSZXNpemUoc3RyaW5nX3R5cGUq
IHMsIHNpemVfdCBuZXdfc2l6ZSkgeyBzLT5yZXNpemUobmV3X3NpemUpOyB9Cit9OwogCisvLyBf
X3Jlc2l6ZV9kZWZhdWx0X2luaXQgaXMgcHJvdmlkZWQgYnkgbGliYysrID49IDguMCBhbmQgYnkg
R29vZ2xlJ3MgaW50ZXJuYWwKKy8vIDo6c3RyaW5nIGltcGxlbWVudGF0aW9uLgogdGVtcGxhdGUg
PHR5cGVuYW1lIHN0cmluZ190eXBlPgotdm9pZCBSZXNpemVVbmluaXQoc3RyaW5nX3R5cGUqIHMs
IHNpemVfdCBuZXdfc2l6ZSwgc3RkOjp0cnVlX3R5cGUpIHsKLSAgcy0+cmVzaXplX3VuaW5pdGlh
bGl6ZWQobmV3X3NpemUpOwotfQotdGVtcGxhdGUgPHR5cGVuYW1lIHN0cmluZ190eXBlPgotdm9p
ZCBSZXNpemVVbmluaXQoc3RyaW5nX3R5cGUqIHMsIHNpemVfdCBuZXdfc2l6ZSwgc3RkOjpmYWxz
ZV90eXBlKSB7Ci0gIHMtPnJlc2l6ZShuZXdfc2l6ZSk7Ci19CitzdHJ1Y3QgUmVzaXplVW5pbml0
aWFsaXplZFRyYWl0czwKKyAgICBzdHJpbmdfdHlwZSwgYWJzbDo6dm9pZF90PGRlY2x0eXBlKHN0
ZDo6ZGVjbHZhbDxzdHJpbmdfdHlwZSY+KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAuX19yZXNpemVfZGVmYXVsdF9pbml0KDIzNykpPiA+IHsKKyAgdXNpbmcg
SGFzTWVtYmVyID0gc3RkOjp0cnVlX3R5cGU7CisgIHN0YXRpYyB2b2lkIFJlc2l6ZShzdHJpbmdf
dHlwZSogcywgc2l6ZV90IG5ld19zaXplKSB7CisgICAgcy0+X19yZXNpemVfZGVmYXVsdF9pbml0
KG5ld19zaXplKTsKKyAgfQorfTsKIAotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdHJpbmcgaW1w
bGVtZW50YXRpb24gc3VwcG9ydHMgYSByZXNpemUgd2hlcmUKLS8vIHRoZSBuZXcgY2hhcmFjdGVy
cyBhZGRlZCB0byB0aGUgc3RyaW5nIGFyZSBsZWZ0IHVudG91Y2hlZC4KKy8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgc3RkOjpzdHJpbmcgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgYSByZXNpemUgd2hl
cmUKKy8vIHRoZSBuZXcgY2hhcmFjdGVycyBhZGRlZCB0byB0aGUgc3RkOjpzdHJpbmcgYXJlIGxl
ZnQgdW50b3VjaGVkLgogLy8KIC8vIChBIGJldHRlciBuYW1lIG1pZ2h0IGJlICJTVExTdHJpbmdT
dXBwb3J0c1VuaW5pdGlhbGl6ZWRSZXNpemUiLCBhbGx1ZGluZyB0bwogLy8gdGhlIHByZXZpb3Vz
IGZ1bmN0aW9uLikKIHRlbXBsYXRlIDx0eXBlbmFtZSBzdHJpbmdfdHlwZT4KIGlubGluZSBjb25z
dGV4cHIgYm9vbCBTVExTdHJpbmdTdXBwb3J0c05vbnRyYXNoaW5nUmVzaXplKHN0cmluZ190eXBl
KikgewotICByZXR1cm4gSGFzUmVzaXplVW5pbml0aWFsaXplZDxzdHJpbmdfdHlwZT4oKTsKKyAg
cmV0dXJuIFJlc2l6ZVVuaW5pdGlhbGl6ZWRUcmFpdHM8c3RyaW5nX3R5cGU+OjpIYXNNZW1iZXI6
OnZhbHVlOwogfQogCiAvLyBMaWtlIHN0ci0+cmVzaXplKG5ld19zaXplKSwgZXhjZXB0IGFueSBu
ZXcgY2hhcmFjdGVycyBhZGRlZCB0byAiKnN0ciIgYXMgYQogLy8gcmVzdWx0IG9mIHJlc2l6aW5n
IG1heSBiZSBsZWZ0IHVuaW5pdGlhbGl6ZWQsIHJhdGhlciB0aGFuIGJlaW5nIGZpbGxlZCB3aXRo
CiAvLyAnMCcgYnl0ZXMuIFR5cGljYWxseSB1c2VkIHdoZW4gY29kZSBpcyB0aGVuIGdvaW5nIHRv
IG92ZXJ3cml0ZSB0aGUgYmFja2luZwotLy8gc3RvcmUgb2YgdGhlIHN0cmluZyB3aXRoIGtub3du
IGRhdGEuIFVzZXMgYSBHb29nbGUgZXh0ZW5zaW9uIHRvIDo6c3RyaW5nLgorLy8gc3RvcmUgb2Yg
dGhlIHN0ZDo6c3RyaW5nIHdpdGgga25vd24gZGF0YS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBzdHJp
bmdfdHlwZSwgdHlwZW5hbWUgPSB2b2lkPgogaW5saW5lIHZvaWQgU1RMU3RyaW5nUmVzaXplVW5p
bml0aWFsaXplZChzdHJpbmdfdHlwZSogcywgc2l6ZV90IG5ld19zaXplKSB7Ci0gIFJlc2l6ZVVu
aW5pdChzLCBuZXdfc2l6ZSwgSGFzUmVzaXplVW5pbml0aWFsaXplZDxzdHJpbmdfdHlwZT4oKSk7
CisgIFJlc2l6ZVVuaW5pdGlhbGl6ZWRUcmFpdHM8c3RyaW5nX3R5cGU+OjpSZXNpemUocywgbmV3
X3NpemUpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZF90ZXN0LmNjCmluZGV4
IGFkMjgyZWZjZDliYjg5Zjg4NWRiMGYzZTRmYWI4ZTRkZjI1MzM5OWEuLmM1YmUwYjEyMjkwOGUx
YzY0MDEyYmVjOTU4NGI5ZmRiYTQ5ZDMzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6ZWRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2lu
dGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTI0LDQ0ICsyNCw0NCBAQCBzdHJ1Y3QgcmVzaXphYmxl
X3N0cmluZyB7CiAgIHZvaWQgcmVzaXplKHNpemVfdCkgeyByZXNpemVfY2FsbF9jb3VudCArPSAx
OyB9CiB9OwogCi1pbnQgcmVzaXplX3VuaW5pdGlhbGl6ZWRfY2FsbF9jb3VudCA9IDA7CitpbnQg
cmVzaXplX2RlZmF1bHRfaW5pdF9jYWxsX2NvdW50ID0gMDsKIAotc3RydWN0IHJlc2l6ZV91bmlu
aXRpYWxpemFibGVfc3RyaW5nIHsKK3N0cnVjdCByZXNpemVfZGVmYXVsdF9pbml0X3N0cmluZyB7
CiAgIHZvaWQgcmVzaXplKHNpemVfdCkgeyByZXNpemVfY2FsbF9jb3VudCArPSAxOyB9Ci0gIHZv
aWQgcmVzaXplX3VuaW5pdGlhbGl6ZWQoc2l6ZV90KSB7IHJlc2l6ZV91bmluaXRpYWxpemVkX2Nh
bGxfY291bnQgKz0gMTsgfQorICB2b2lkIF9fcmVzaXplX2RlZmF1bHRfaW5pdChzaXplX3QpIHsg
cmVzaXplX2RlZmF1bHRfaW5pdF9jYWxsX2NvdW50ICs9IDE7IH0KIH07CiAKIFRFU1QoUmVzaXpl
VW5pbml0LCBXaXRoQW5kV2l0aG91dCkgewogICByZXNpemVfY2FsbF9jb3VudCA9IDA7Ci0gIHJl
c2l6ZV91bmluaXRpYWxpemVkX2NhbGxfY291bnQgPSAwOworICByZXNpemVfZGVmYXVsdF9pbml0
X2NhbGxfY291bnQgPSAwOwogICB7CiAgICAgcmVzaXphYmxlX3N0cmluZyByczsKIAogICAgIEVY
UEVDVF9FUShyZXNpemVfY2FsbF9jb3VudCwgMCk7Ci0gICAgRVhQRUNUX0VRKHJlc2l6ZV91bmlu
aXRpYWxpemVkX2NhbGxfY291bnQsIDApOworICAgIEVYUEVDVF9FUShyZXNpemVfZGVmYXVsdF9p
bml0X2NhbGxfY291bnQsIDApOwogICAgIEVYUEVDVF9GQUxTRSgKICAgICAgICAgYWJzbDo6c3Ry
aW5nc19pbnRlcm5hbDo6U1RMU3RyaW5nU3VwcG9ydHNOb250cmFzaGluZ1Jlc2l6ZSgmcnMpKTsK
ICAgICBFWFBFQ1RfRVEocmVzaXplX2NhbGxfY291bnQsIDApOwotICAgIEVYUEVDVF9FUShyZXNp
emVfdW5pbml0aWFsaXplZF9jYWxsX2NvdW50LCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzaXplX2Rl
ZmF1bHRfaW5pdF9jYWxsX2NvdW50LCAwKTsKICAgICBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpT
VExTdHJpbmdSZXNpemVVbmluaXRpYWxpemVkKCZycywgMjM3KTsKICAgICBFWFBFQ1RfRVEocmVz
aXplX2NhbGxfY291bnQsIDEpOwotICAgIEVYUEVDVF9FUShyZXNpemVfdW5pbml0aWFsaXplZF9j
YWxsX2NvdW50LCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzaXplX2RlZmF1bHRfaW5pdF9jYWxsX2Nv
dW50LCAwKTsKICAgfQogCiAgIHJlc2l6ZV9jYWxsX2NvdW50ID0gMDsKLSAgcmVzaXplX3VuaW5p
dGlhbGl6ZWRfY2FsbF9jb3VudCA9IDA7CisgIHJlc2l6ZV9kZWZhdWx0X2luaXRfY2FsbF9jb3Vu
dCA9IDA7CiAgIHsKLSAgICByZXNpemVfdW5pbml0aWFsaXphYmxlX3N0cmluZyBydXM7CisgICAg
cmVzaXplX2RlZmF1bHRfaW5pdF9zdHJpbmcgcnVzOwogCiAgICAgRVhQRUNUX0VRKHJlc2l6ZV9j
YWxsX2NvdW50LCAwKTsKLSAgICBFWFBFQ1RfRVEocmVzaXplX3VuaW5pdGlhbGl6ZWRfY2FsbF9j
b3VudCwgMCk7CisgICAgRVhQRUNUX0VRKHJlc2l6ZV9kZWZhdWx0X2luaXRfY2FsbF9jb3VudCwg
MCk7CiAgICAgRVhQRUNUX1RSVUUoCiAgICAgICAgIGFic2w6OnN0cmluZ3NfaW50ZXJuYWw6OlNU
TFN0cmluZ1N1cHBvcnRzTm9udHJhc2hpbmdSZXNpemUoJnJ1cykpOwogICAgIEVYUEVDVF9FUShy
ZXNpemVfY2FsbF9jb3VudCwgMCk7Ci0gICAgRVhQRUNUX0VRKHJlc2l6ZV91bmluaXRpYWxpemVk
X2NhbGxfY291bnQsIDApOworICAgIEVYUEVDVF9FUShyZXNpemVfZGVmYXVsdF9pbml0X2NhbGxf
Y291bnQsIDApOwogICAgIGFic2w6OnN0cmluZ3NfaW50ZXJuYWw6OlNUTFN0cmluZ1Jlc2l6ZVVu
aW5pdGlhbGl6ZWQoJnJ1cywgMjM3KTsKICAgICBFWFBFQ1RfRVEocmVzaXplX2NhbGxfY291bnQs
IDApOwotICAgIEVYUEVDVF9FUShyZXNpemVfdW5pbml0aWFsaXplZF9jYWxsX2NvdW50LCAxKTsK
KyAgICBFWFBFQ1RfRVEocmVzaXplX2RlZmF1bHRfaW5pdF9jYWxsX2NvdW50LCAxKTsKICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0bF90eXBlX3RyYWl0cy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdGxfdHlwZV90cmFpdHMuaAppbmRleCAwNGM0YTUz
MjNiODYyMTU3NzBhNWM5MzEyODJhYzdiYWMzNTJlNzZlLi4yMDJhYjM3NGE4MzMyZTYyOGVjMzBl
MTg2YmFmZWEyN2RlYjllODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0
bF90eXBlX3RyYWl0cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RsX3R5cGVfdHJh
aXRzLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuaAppbmRleCAzMzc2ZDQ4YWZkYTIwZmYyMzNhMWQx
YjdmNDFiMzAwNzhhZTFjY2U2Li41Y2IzYTE0ZDY4MzMzYjVhNTA3NTY4MjI3ZDNjYTc1ZDViMThl
YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJnLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oCkBAIC03LDYgKzcs
NyBAQAogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxpb21hbmlwPgogI2luY2x1ZGUgPGxp
bWl0cz4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDxz
dHJpbmc+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CkBAIC0zNSwxMiArMzYsMTQgQEAgc3RydWN0
IEhhc1VzZXJEZWZpbmVkQ29udmVydDwKICAgICBULCB2b2lkX3Q8ZGVjbHR5cGUoQWJzbEZvcm1h
dENvbnZlcnQoCiAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCBUJj4oKSwgc3RkOjpkZWNs
dmFsPENvbnZlcnNpb25TcGVjPigpLAogICAgICAgICAgICBzdGQ6OmRlY2x2YWw8Rm9ybWF0U2lu
ayo+KCkpKT4+IDogc3RkOjp0cnVlX3R5cGUge307CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
Y2xhc3MgU3RyZWFtZWRXcmFwcGVyOwogCiAvLyBJZiAndicgY2FuIGJlIGNvbnZlcnRlZCAoaW4g
dGhlIHByaW50ZiBzZW5zZSkgYWNjb3JkaW5nIHRvICdjb252JywKIC8vIHRoZW4gY29udmVydCBp
dCwgYXBwZW5kaW5nIHRvIGBzaW5rYCBhbmQgcmV0dXJuIGB0cnVlYC4KIC8vIE90aGVyd2lzZSBm
YWlsIGFuZCByZXR1cm4gYGZhbHNlYC4KKwogLy8gUmF3IHBvaW50ZXJzLgogc3RydWN0IFZvaWRQ
dHIgewogICBWb2lkUHRyKCkgPSBkZWZhdWx0OwpAQCAtNTQsNyArNTcsOCBAQCBDb252ZXJ0UmVz
dWx0PENvbnY6OnA+IEZvcm1hdENvbnZlcnRJbXBsKFZvaWRQdHIgdiwgQ29udmVyc2lvblNwZWMg
Y29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lu
a0ltcGwqIHNpbmspOwogCiAvLyBTdHJpbmdzLgotQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3Jt
YXRDb252ZXJ0SW1wbChjb25zdCBzdGQ6OnN0cmluZyYgdiwgQ29udmVyc2lvblNwZWMgY29udiwK
K0NvbnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29udmVydEltcGwoY29uc3Qgc3RkOjpzdHJp
bmcmIHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNp
b25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZv
cm1hdFNpbmtJbXBsKiBzaW5rKTsKIENvbnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29udmVy
dEltcGwoc3RyaW5nX3ZpZXcgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwpAQCAtODAs
NyArODQsNyBAQCBDb252ZXJ0UmVzdWx0PENvbnY6OnM+IEZvcm1hdENvbnZlcnRJbXBsKGNvbnN0
IEFic2xDb3JkJiB2YWx1ZSwKIAogICBpbnQgcHJlY2lzaW9uID0gY29udi5wcmVjaXNpb24oKTsK
ICAgaWYgKHByZWNpc2lvbiA+PSAwKQotICAgIHRvX3dyaXRlID0gc3RkOjptaW4odG9fd3JpdGUs
IHN0YXRpY19jYXN0PHNpemVfdD4ocHJlY2lzaW9uKSk7CisgICAgdG9fd3JpdGUgPSAoc3RkOjpt
aW4pKHRvX3dyaXRlLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHByZWNpc2lvbikpOwogCiAgIHNwYWNl
X3JlbWFpbmluZyA9IEV4Y2Vzcyh0b193cml0ZSwgc3BhY2VfcmVtYWluaW5nKTsKIApAQCAtMjg5
LDcgKzI5Myw3IEBAIGNsYXNzIEZvcm1hdEFyZ0ltcGwgewogICBzdHJ1Y3QgTWFuYWdlcjxULCBC
eVBvaW50ZXI+IHsKICAgICBzdGF0aWMgRGF0YSBTZXRWYWx1ZShjb25zdCBUJiB2YWx1ZSkgewog
ICAgICAgRGF0YSBkYXRhOwotICAgICAgZGF0YS5wdHIgPSAmdmFsdWU7CisgICAgICBkYXRhLnB0
ciA9IHN0ZDo6YWRkcmVzc29mKHZhbHVlKTsKICAgICAgIHJldHVybiBkYXRhOwogICAgIH0KIApA
QCAtMzM1LDEyICszMzksMTIgQEAgY2xhc3MgRm9ybWF0QXJnSW1wbCB7CiAgICAgdXNpbmcgQ29t
bW9uVHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19zaWduZWQ8VD46OnZh
bHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QsIHVpbnQ2NF90Pjo6dHlwZTsKICAgICBpZiAoc3RhdGljX2Nhc3Q8Q29tbW9uVHlwZT4o
dmFsKSA+Ci0gICAgICAgIHN0YXRpY19jYXN0PENvbW1vblR5cGU+KHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCkpKSB7Ci0gICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+
OjptYXgoKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q29tbW9uVHlwZT4oKHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KSgpKSkgeworICAgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRz
PGludD46Om1heCkoKTsKICAgICB9IGVsc2UgaWYgKHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2YWx1ZSAm
JgogICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q29tbW9uVHlwZT4odmFsKSA8Ci0gICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q29tbW9uVHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptaW4oKSkpIHsKLSAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1p
bigpOworICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENvbW1vblR5cGU+KChzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1pbikoKSkpIHsKKyAgICAgIHJldHVybiAoc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ+OjptaW4pKCk7CiAgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KHZhbCk7CiAgIH0KQEAgLTQwOSw3ICs0MTMsNyBAQCBjbGFzcyBGb3JtYXRBcmdJbXBsIHsKICAg
QUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGRvdWJsZSwgX19WQV9B
UkdTX18pOyAgICAgICAgICAgICBcCiAgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lO
U1RBTlRJQVRFXyhsb25nIGRvdWJsZSwgX19WQV9BUkdTX18pOyAgICAgICAgXAogICBBQlNMX0lO
VEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8oY29uc3QgY2hhciosIF9fVkFfQVJH
U19fKTsgICAgICAgIFwKLSAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElB
VEVfKHN0ZDo6c3RyaW5nLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRF
Uk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKHN0ZDo6c3RyaW5nLCBfX1ZBX0FSR1Nf
Xyk7ICAgICAgICBcCiAgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRF
XyhzdHJpbmdfdmlldywgX19WQV9BUkdTX18pCiAKIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BB
VENIX09WRVJMT0FEU19FWFBBTkRfKGV4dGVybik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL3N0cl9mb3JtYXQvYXJnX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9mb3JtYXQvYXJnX3Rlc3QuY2MKaW5kZXggODNkNTkwNDhlYTI3YTRmNWQ4MDJiZDZkNmY4
NGExODIzZmY2ZTIwOS4uMzQyMWZhYzExYmY5YjlhNWY3ZjkzMjRhMWI0MGJjNDM4ZjAyZGFlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZ190ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmdfdGVzdC5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJn
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5k
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuY2MKaW5kZXggYzRl
ZGRkMTdkZGJlNTZhNzZjNWVjMWE1MTg0MDc5YmYxMDcxNjZiYy4uYTMxODU5ZWNlMmJjZDdhYTA2
MGE0MDIyODI2MDM1ZWZiZGVjNmVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfZm9ybWF0L2JpbmQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9y
bWF0L2JpbmQuY2MKQEAgLTI1LDEyICsyNSwxMiBAQCBjbGFzcyBBcmdDb250ZXh0IHsKICAgZXhw
bGljaXQgQXJnQ29udGV4dChhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IHBhY2spIDog
cGFja18ocGFjaykge30KIAogICAvLyBGaWxsICdib3VuZCcgd2l0aCB0aGUgcmVzdWx0cyBvZiBh
cHBseWluZyB0aGUgY29udGV4dCdzIGFyZ3VtZW50IHBhY2sKLSAgLy8gdG8gdGhlIHNwZWNpZmll
ZCAncHJvcHMnLiBXZSBzeW50aGVzaXplIGEgQm91bmRDb252ZXJzaW9uIGJ5CisgIC8vIHRvIHRo
ZSBzcGVjaWZpZWQgJ3VuYm91bmQnLiBXZSBzeW50aGVzaXplIGEgQm91bmRDb252ZXJzaW9uIGJ5
CiAgIC8vIGxpbmluZyB1cCBhIFVuYm91bmRDb252ZXJzaW9uIHdpdGggYSB1c2VyIGFyZ3VtZW50
LiBXZSBhbHNvCiAgIC8vIHJlc29sdmUgYW55ICcqJyBzcGVjaWZpZXJzIGZvciB3aWR0aCBhbmQg
cHJlY2lzaW9uLCBzbyBhZnRlcgogICAvLyB0aGlzIGNhbGwsICdib3VuZCcgaGFzIGFsbCB0aGUg
aW5mb3JtYXRpb24gaXQgbmVlZHMgdG8gYmUgZm9ybWF0dGVkLgogICAvLyBSZXR1cm5zIGZhbHNl
IG9uIGZhaWx1cmUuCi0gIGJvb2wgQmluZChjb25zdCBVbmJvdW5kQ29udmVyc2lvbiAqcHJvcHMs
IEJvdW5kQ29udmVyc2lvbiAqYm91bmQpOworICBib29sIEJpbmQoY29uc3QgVW5ib3VuZENvbnZl
cnNpb24qIHVuYm91bmQsIEJvdW5kQ29udmVyc2lvbiogYm91bmQpOwogCiAgcHJpdmF0ZToKICAg
YWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBwYWNrXzsKQEAgLTUzLDcgKzUzLDggQEAg
aW5saW5lIGJvb2wgQXJnQ29udGV4dDo6QmluZChjb25zdCBVbmJvdW5kQ29udmVyc2lvbiogdW5i
b3VuZCwKICAgICAgICAgLy8gIkEgbmVnYXRpdmUgZmllbGQgd2lkdGggaXMgdGFrZW4gYXMgYSAn
LScgZmxhZyBmb2xsb3dlZCBieSBhCiAgICAgICAgIC8vIHBvc2l0aXZlIGZpZWxkIHdpZHRoLiIK
ICAgICAgICAgZm9yY2VfbGVmdCA9IHRydWU7Ci0gICAgICAgIHdpZHRoID0gLXdpZHRoOworICAg
ICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3Qgb3ZlcmZsb3cgdGhlIHdpZHRoIHdoZW4gbmVnYXRp
bmcgaXQuCisgICAgICAgIHdpZHRoID0gLXN0ZDo6bWF4KHdpZHRoLCAtc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ+OjptYXgoKSk7CiAgICAgICB9CiAgICAgfQogCkBAIC0xNTksNyArMTYwLDcgQEAg
Ym9vbCBCaW5kV2l0aFBhY2soY29uc3QgVW5ib3VuZENvbnZlcnNpb24qIHByb3BzLAogfQogCiBz
dGQ6OnN0cmluZyBTdW1tYXJpemUoY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7
CisgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBh
cmdzKSB7CiAgIHR5cGVkZWYgU3VtbWFyaXppbmdDb252ZXJ0ZXIgQ29udmVydGVyOwogICBzdGQ6
OnN0cmluZyBvdXQ7CiAgIHsKQEAgLTE4Nyw3ICsxODgsNyBAQCBzdGQ6Om9zdHJlYW0mIFN0cmVh
bWFibGU6OlByaW50KHN0ZDo6b3N0cmVhbSYgb3MpIGNvbnN0IHsKIH0KIAogc3RkOjpzdHJpbmcm
IEFwcGVuZFBhY2soc3RkOjpzdHJpbmcqIG91dCwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBs
IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0lt
cGw+IGFyZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9y
bWF0QXJnSW1wbD4gYXJncykgewogICBzaXplX3Qgb3JpZyA9IG91dC0+c2l6ZSgpOwogICBpZiAo
QUJTTF9QUkVESUNUX0ZBTFNFKCFGb3JtYXRVbnR5cGVkKG91dCwgZm9ybWF0LCBhcmdzKSkpIHsK
ICAgICBvdXQtPmVyYXNlKG9yaWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfZm9ybWF0L2JpbmQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9i
aW5kLmgKaW5kZXggMWI1MmRmOWM3ZjU2NTVmMWQ3OGRhZGM1MDgyNWM0ZDIzZTQyNjBmNS4uN2Rm
MTQwYTQzNjMzNzNmNjg5MmNkNGRjNTUzMGQzZWI5ODc5NmIzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2lu
dGVybmFsL3N0cl9mb3JtYXQvYmluZC5oCkBAIC03LDcgKzcsNiBAQAogI2luY2x1ZGUgPHN0cmlu
Zz4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiCi0jaW5jbHVkZSAiYWJzbC9jb250YWlu
ZXIvaW5saW5lZF92ZWN0b3IuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3Ry
X2Zvcm1hdC9hcmcuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9jaGVja2VyLmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQv
cGFyc2VyLmgiCkBAIC0xMzgsNyArMTM3LDE3IEBAIGNsYXNzIFN0cmVhbWFibGUgewogIHB1Ymxp
YzoKICAgU3RyZWFtYWJsZShjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKICAg
ICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpCi0gICAgICA6
IGZvcm1hdF8oZm9ybWF0KSwgYXJnc18oYXJncy5iZWdpbigpLCBhcmdzLmVuZCgpKSB7fQorICAg
ICAgOiBmb3JtYXRfKGZvcm1hdCkgeworICAgIGlmIChhcmdzLnNpemUoKSA8PSBBQlNMX0FSUkFZ
U0laRShmZXdfYXJnc18pKSB7CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3Muc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgZmV3X2FyZ3NfW2ldID0gYXJnc1tpXTsKKyAgICAgIH0KKyAg
ICAgIGFyZ3NfID0gYWJzbDo6TWFrZVNwYW4oZmV3X2FyZ3NfLCBhcmdzLnNpemUoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgIG1hbnlfYXJnc18uYXNzaWduKGFyZ3MuYmVnaW4oKSwgYXJncy5lbmQo
KSk7CisgICAgICBhcmdzXyA9IG1hbnlfYXJnc187CisgICAgfQorICB9CiAKICAgc3RkOjpvc3Ry
ZWFtJiBQcmludChzdGQ6Om9zdHJlYW0mIG9zKSBjb25zdDsKIApAQCAtMTQ4LDEyICsxNTcsMTcg
QEAgY2xhc3MgU3RyZWFtYWJsZSB7CiAKICBwcml2YXRlOgogICBjb25zdCBVbnR5cGVkRm9ybWF0
U3BlY0ltcGwmIGZvcm1hdF87Ci0gIGFic2w6OklubGluZWRWZWN0b3I8Rm9ybWF0QXJnSW1wbCwg
ND4gYXJnc187CisgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJnc187CisgIC8v
IGlmIGFyZ3NfLnNpemUoKSBpcyA0IG9yIGxlc3M6CisgIEZvcm1hdEFyZ0ltcGwgZmV3X2FyZ3Nf
WzRdID0ge0Zvcm1hdEFyZ0ltcGwoMCksIEZvcm1hdEFyZ0ltcGwoMCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvcm1hdEFyZ0ltcGwoMCksIEZvcm1hdEFyZ0ltcGwoMCl9Owor
ICAvLyBpZiBhcmdzXy5zaXplKCkgaXMgbW9yZSB0aGFuIDQ6CisgIHN0ZDo6dmVjdG9yPEZvcm1h
dEFyZ0ltcGw+IG1hbnlfYXJnc187CiB9OwogCiAvLyBmb3IgdGVzdGluZwogc3RkOjpzdHJpbmcg
U3VtbWFyaXplKFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCi0gICAgICAgICAgICAgICAg
IGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncyk7CisgICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKTsKIGJvb2wgQmluZFdp
dGhQYWNrKGNvbnN0IFVuYm91bmRDb252ZXJzaW9uKiBwcm9wcywKICAgICAgICAgICAgICAgICAg
IGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gcGFjaywgQm91bmRDb252ZXJzaW9uKiBi
b3VuZCk7CiAKQEAgLTE2MiwxMCArMTc2LDEwIEBAIGJvb2wgRm9ybWF0VW50eXBlZChGb3JtYXRS
YXdTaW5rSW1wbCByYXdfc2luaywKICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0
IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpOwogCiBzdGQ6OnN0cmluZyYgQXBwZW5kUGFjayhzdGQ6OnN0
cmluZyogb3V0LCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpOwogCiBpbmxp
bmUgc3RkOjpzdHJpbmcgRm9ybWF0UGFjayhjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJn
SW1wbD4gYXJncykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxj
b25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7CiAgIHN0ZDo6c3RyaW5nIG91dDsKICAgQXBwZW5k
UGFjaygmb3V0LCBmb3JtYXQsIGFyZ3MpOwogICByZXR1cm4gb3V0OwpAQCAtMTc2LDcgKzE5MCw3
IEBAIGludCBGcHJpbnRGKHN0ZDo6RklMRSogb3V0cHV0LCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwg
Zm9ybWF0LAogaW50IFNucHJpbnRGKGNoYXIqIG91dHB1dCwgc2l6ZV90IHNpemUsIFVudHlwZWRG
b3JtYXRTcGVjSW1wbCBmb3JtYXQsCiAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3Jt
YXRBcmdJbXBsPiBhcmdzKTsKIAotLy8gUmV0dXJuZWQgYnkgU3RyZWFtZWQodikuIENvbnZlcnRz
IHZpYSAnJXMnIHRvIHRoZSBzdHJpbmcgY3JlYXRlZAorLy8gUmV0dXJuZWQgYnkgU3RyZWFtZWQo
dikuIENvbnZlcnRzIHZpYSAnJXMnIHRvIHRoZSBzdGQ6OnN0cmluZyBjcmVhdGVkCiAvLyBieSBz
dGQ6Om9zdHJlYW0gPDwgdi4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgU3RyZWFtZWRX
cmFwcGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9i
aW5kX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZF90ZXN0
LmNjCmluZGV4IDQ3NTc1NzM5YmExMzAwMjRiZGZmMDc2ZmYwMzg4Y2ZiM2E2ODc3NDAuLjI1NzQ4
MDFhNWMzODhjNGZjNTgxYThkOWU1MTVhODc2NDQyMDNiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmRfdGVzdC5jYwpAQCAtMSw2ICsxLDcgQEAKICNpbmNs
dWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmgiCiAKICNpbmNsdWRl
IDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW1pdHM+CiAKICNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogCkBAIC04LDE2ICs5LDExIEBAIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSBzdHJfZm9y
bWF0X2ludGVybmFsIHsKIG5hbWVzcGFjZSB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgTj4KLXNpemVfdCBBcnJheVNpemUoVCAoJilbTl0pIHsKLSAgcmV0dXJuIE47Ci19Ci0KIGNs
YXNzIEZvcm1hdEJpbmRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgcHVibGljOgog
ICBib29sIEV4dHJhY3QoY29uc3QgY2hhciAqcywgVW5ib3VuZENvbnZlcnNpb24gKnByb3BzLCBp
bnQgKm5leHQpIGNvbnN0IHsKLSAgICBhYnNsOjpzdHJpbmdfdmlldyBzcmMgPSBzOwotICAgIHJl
dHVybiBDb25zdW1lVW5ib3VuZENvbnZlcnNpb24oJnNyYywgcHJvcHMsIG5leHQpICYmIHNyYy5l
bXB0eSgpOworICAgIHJldHVybiBDb25zdW1lVW5ib3VuZENvbnZlcnNpb24ocywgcyArIHN0cmxl
bihzKSwgcHJvcHMsIG5leHQpID09CisgICAgICAgICAgIHMgKyBzdHJsZW4ocyk7CiAgIH0KIH07
CiAKQEAgLTkxLDYgKzg3LDIwIEBAIFRFU1RfRihGb3JtYXRCaW5kVGVzdCwgQmluZFNpbmdsZSkg
ewogICB9CiB9CiAKK1RFU1RfRihGb3JtYXRCaW5kVGVzdCwgV2lkdGhVbmRlcmZsb3dSZWdyZXNz
aW9uKSB7CisgIFVuYm91bmRDb252ZXJzaW9uIHByb3BzOworICBCb3VuZENvbnZlcnNpb24gYm91
bmQ7CisgIGludCBuZXh0ID0gMDsKKyAgY29uc3QgaW50IGFyZ3NfaVtdID0ge3N0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWluKCksIDE3fTsKKyAgY29uc3QgRm9ybWF0QXJnSW1wbCBhcmdzW10g
PSB7Rm9ybWF0QXJnSW1wbChhcmdzX2lbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGb3JtYXRBcmdJbXBsKGFyZ3NfaVsxXSl9OworICBBU1NFUlRfVFJVRShFeHRyYWN0KCIq
ZCIsICZwcm9wcywgJm5leHQpKTsKKyAgQVNTRVJUX1RSVUUoQmluZFdpdGhQYWNrKCZwcm9wcywg
YXJncywgJmJvdW5kKSk7CisKKyAgRVhQRUNUX0VRKGJvdW5kLndpZHRoKCksIHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCkpOworICBFWFBFQ1RfRVEoYm91bmQuYXJnKCksIGFyZ3MgKyAx
KTsKK30KKwogVEVTVF9GKEZvcm1hdEJpbmRUZXN0LCBGb3JtYXRQYWNrKSB7CiAgIHN0cnVjdCBF
eHBlY3RhdGlvbiB7CiAgICAgaW50IGxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2lu
dGVybmFsL3N0cl9mb3JtYXQvY2hlY2tlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfZm9ybWF0L2NoZWNrZXJfdGVzdC5jYwppbmRleCAxNGQxMWVhOGJkMzA2YTRlYWZlMzI2
YWNhOWViMzc3YTZhZWY5M2JhLi5jMWQ4Yzc2OWVmN2Q4NjdjZjkyOThlMDkyOTM5ZTA2MThkNjIz
MjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvY2hlY2tl
cl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9jaGVja2Vy
X3Rlc3QuY2MKQEAgLTYyLDMyICs2MiwzMiBAQCBURVNUKFN0ckZvcm1hdENoZWNrZXIsIFZhbGlk
Rm9ybWF0KSB7CiAgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlJSAlZCIpLCAgICAgICAgICAgICAg
ICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlbGQiKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlbGxkIiksICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxzdGQ6OnN0cmluZz4oIiVzIiks
ICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PHN0ZDo6c3RyaW5n
PigiJTEwcyIpLCAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8c3Rk
OjpzdHJpbmc+KCIlcyIpLCAgICAgICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8
c3RkOjpzdHJpbmc+KCIlMTBzIiksICAgICAgICAgICAgICAgICAvLwogICAgICAgVmFsaWRGb3Jt
YXQ8aW50PigiJS4xMHgiKSwgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgVmFsaWRG
b3JtYXQ8aW50LCBpbnQ+KCIlKi4zeCIpLCAgICAgICAgICAgICAgICAgICAvLwogICAgICAgVmFs
aWRGb3JtYXQ8aW50PigiJTEuZCIpLCAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAg
VmFsaWRGb3JtYXQ8aW50PigiJS5kIiksICAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAg
ICAgVmFsaWRGb3JtYXQ8aW50LCBkb3VibGU+KCIlZCAlZyIpLCAgICAgICAgICAgICAgICAvLwot
ICAgICAgVmFsaWRGb3JtYXQ8aW50LCBzdGQ6OnN0cmluZz4oIiUqcyIpLCAgICAgICAgICAgICAg
ICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQsIHN0ZDo6c3RyaW5nPigiJSpzIiksICAgICAg
ICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxpbnQsIGRvdWJsZT4oIiUuKmYiKSwgICAgICAg
ICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDx2b2lkICgqKSgpLCB2b2xhdGlsZSBpbnQq
PigiJXAgJXAiKSwgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxzdHJpbmdfdmlldywgY29uc3QgY2hh
ciosIGRvdWJsZSwgdm9pZCo+KAogICAgICAgICAgICJzdHJpbmdfdmlldz0lcyBjb25zdCBjaGFy
Kj0lcyBkb3VibGU9JWYgdm9pZCo9JXApIiksCiAKLSAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUl
ICUxJGQiKSwgICAgICAgICAgICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEkbGQiKSwg
ICAgICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSRsbGQiKSwgICAgICAg
ICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PHN0ZDo6c3RyaW5nPigiJTEkcyIpLCAgICAgICAg
ICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxzdGQ6OnN0cmluZz4oIiUxJDEwcyIpLCAgICAgICAg
ICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEkLjEweCIpLCAgICAgICAgICAgIC8vCi0g
ICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSQqMSQuKjEkZCIpLCAgICAgICAgLy8KLSAgICAgIFZh
bGlkRm9ybWF0PGludCwgaW50PigiJTEkKjIkLjN4IiksICAgICAvLwotICAgICAgVmFsaWRGb3Jt
YXQ8aW50PigiJTEkMS5kIiksICAgICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQ+
KCIlMSQuZCIpLCAgICAgICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGRvdWJsZSwgaW50
PigiJTIkZCAlMSRnIiksICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50LCBzdGQ6OnN0cmluZz4o
IiUyJCoxJHMiKSwgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGludCwgZG91YmxlPigiJTIkLiox
JGYiKSwgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJSUgJTEkZCIpLCAgICAgICAgICAg
ICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSRsZCIpLCAgICAgICAgICAgICAgICAg
Ly8KKyAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUxJGxsZCIpLCAgICAgICAgICAgICAgICAvLwor
ICAgICAgVmFsaWRGb3JtYXQ8c3RkOjpzdHJpbmc+KCIlMSRzIiksICAgICAgICAgIC8vCisgICAg
ICBWYWxpZEZvcm1hdDxzdGQ6OnN0cmluZz4oIiUxJDEwcyIpLCAgICAgICAgLy8KKyAgICAgIFZh
bGlkRm9ybWF0PGludD4oIiUxJC4xMHgiKSwgICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRG
b3JtYXQ8aW50PigiJTEkKjEkLioxJGQiKSwgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1h
dDxpbnQsIGludD4oIiUxJCoyJC4zeCIpLCAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGlu
dD4oIiUxJDEuZCIpLCAgICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50Pigi
JTEkLmQiKSwgICAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxkb3VibGUsIGlu
dD4oIiUyJGQgJTEkZyIpLCAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGludCwgc3RkOjpzdHJp
bmc+KCIlMiQqMSRzIiksICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50LCBkb3VibGU+KCIlMiQu
KjEkZiIpLCAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDx2b2lkKiwgc3RyaW5nX3ZpZXcsIGNv
bnN0IGNoYXIqLCBkb3VibGU+KAogICAgICAgICAgICJzdHJpbmdfdmlldz0lMiRzIGNvbnN0IGNo
YXIqPSUzJHMgZG91YmxlPSU0JGYgdm9pZCo9JTEkcCAiCiAgICAgICAgICAgInJlcGVhdD0lMyRz
KSIpfTsKQEAgLTk5LDI1ICs5OSwyNSBAQCBURVNUKFN0ckZvcm1hdENoZWNrZXIsIFZhbGlkRm9y
bWF0KSB7CiAgIGNvbnN0ZXhwciBDYXNlIGZhbHNlc1tdID0gewogICAgICAgVmFsaWRGb3JtYXQ8
aW50PigiIiksICAvLwogCi0gICAgICBWYWxpZEZvcm1hdDxlPigiJXMiKSwgICAgICAgICAgICAg
Ly8KLSAgICAgIFZhbGlkRm9ybWF0PGUyPigiJXMiKSwgICAgICAgICAgICAvLwotICAgICAgVmFs
aWRGb3JtYXQ8PigiJXMiKSwgICAgICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDw+KCIl
ciIpLCAgICAgICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0PGludD4oIiVzIiksICAgICAg
ICAgICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJS4xLmQiKSwgICAgICAgIC8vCi0gICAg
ICBWYWxpZEZvcm1hdDxpbnQ+KCIlKjFkIiksICAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0
PGludD4oIiUxLWQiKSwgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8ZT4oIiVzIiksICAg
ICAgICAgICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGUyPigiJXMiKSwgICAgICAgICAg
ICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDw+KCIlcyIpLCAgICAgICAgICAgICAgICAgICAv
LworICAgICAgVmFsaWRGb3JtYXQ8PigiJXIiKSwgICAgICAgICAgICAgICAgICAgLy8KKyAgICAg
IFZhbGlkRm9ybWF0PGludD4oIiVzIiksICAgICAgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZv
cm1hdDxpbnQ+KCIlLjEuZCIpLCAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50
PigiJSoxZCIpLCAgICAgICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUxLWQi
KSwgICAgICAgICAgICAgIC8vCiAgICAgICBWYWxpZEZvcm1hdDxzdGQ6OnN0cmluZywgaW50Pigi
JSpzIiksICAvLwotICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJSpkIiksICAgICAgICAgIC8vCisg
ICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlKmQiKSwgICAgICAgICAgICAgICAvLwogICAgICAgVmFs
aWRGb3JtYXQ8c3RkOjpzdHJpbmc+KCIlcCIpLCAgICAgICAgLy8KLSAgICAgIFZhbGlkRm9ybWF0
PGludCAoKikoaW50KT4oIiVkIiksICAvLwotCi0gICAgICBWYWxpZEZvcm1hdDw+KCIlMyRkIiks
ICAgICAgICAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDw+KCIlMSRyIiksICAgICAgICAg
ICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSRzIiksICAgICAgICAgICAgIC8v
Ci0gICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSQuMS5kIiksICAgICAgICAgIC8vCi0gICAgICBW
YWxpZEZvcm1hdDxpbnQ+KCIlMSQqMiQxZCIpLCAgICAgICAgIC8vCi0gICAgICBWYWxpZEZvcm1h
dDxpbnQ+KCIlMSQxLWQiKSwgICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQgKCop
KGludCk+KCIlZCIpLCAgICAgICAvLworCisgICAgICBWYWxpZEZvcm1hdDw+KCIlMyRkIiksICAg
ICAgICAgICAgICAgICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PD4oIiUxJHIiKSwgICAgICAg
ICAgICAgICAgICAgICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEkcyIpLCAgICAgICAg
ICAgICAgICAgIC8vCisgICAgICBWYWxpZEZvcm1hdDxpbnQ+KCIlMSQuMS5kIiksICAgICAgICAg
ICAgICAgLy8KKyAgICAgIFZhbGlkRm9ybWF0PGludD4oIiUxJCoyJDFkIiksICAgICAgICAgICAg
ICAvLworICAgICAgVmFsaWRGb3JtYXQ8aW50PigiJTEkMS1kIiksICAgICAgICAgICAgICAgIC8v
CiAgICAgICBWYWxpZEZvcm1hdDxzdGQ6OnN0cmluZywgaW50PigiJTIkKjEkcyIpLCAgLy8KICAg
ICAgIFZhbGlkRm9ybWF0PHN0ZDo6c3RyaW5nPigiJTEkcCIpLAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvY29udmVydF90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2NvbnZlcnRfdGVzdC5jYwppbmRleCAzMmY4YTBmOWFk
MWE0ODJmMDM4ZGY2MjJkNGZiMzc2MGViZTZlNTdjLi44MTRjY2Y0YzY1ZTY0YjViYjdmYjU3YWM1
Y2EwNGJmOWMyZDk3YTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9m
b3JtYXQvY29udmVydF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zv
cm1hdC9jb252ZXJ0X3Rlc3QuY2MKQEAgLTEsNiArMSw3IEBACiAjaW5jbHVkZSA8ZXJybm8uaD4K
ICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGNjdHlw
ZT4KICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKQEAgLTMyLDcgKzMzLDkg
QEAgc3RkOjpzdHJpbmcgTGVuZ3RoTW9kRm9yKGxvbmcgbG9uZykgeyByZXR1cm4gImxsIjsgfSAg
ICAgICAgICAgLy8gTk9MSU5UCiBzdGQ6OnN0cmluZyBMZW5ndGhNb2RGb3IodW5zaWduZWQgbG9u
ZyBsb25nKSB7IHJldHVybiAibGwiOyB9ICAvLyBOT0xJTlQKIAogc3RkOjpzdHJpbmcgRXNjQ2hh
ckltcGwoaW50IHYpIHsKLSAgaWYgKGlzcHJpbnQodikpIHJldHVybiBzdGQ6OnN0cmluZygxLCBz
dGF0aWNfY2FzdDxjaGFyPih2KSk7CisgIGlmIChzdGQ6OmlzcHJpbnQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4odikpKSB7CisgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKDEsIHN0YXRpY19jYXN0
PGNoYXI+KHYpKTsKKyAgfQogICBjaGFyIGJ1Zls2NF07CiAgIGludCBuID0gc25wcmludGYoYnVm
LCBzaXplb2YoYnVmKSwgIlxcJSMuMngiLAogICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkPih2ICYgMHhmZikpOwpAQCAtMTU1LDcgKzE1OCw3IEBAIFRFU1RfRihGb3JtYXRD
b252ZXJ0VGVzdCwgU3RyaW5nUHJlY2lzaW9uKSB7CiB9CiAKIFRFU1RfRihGb3JtYXRDb252ZXJ0
VGVzdCwgUG9pbnRlcikgewotI2lmIF9NU0NfVkVSCisjaWZkZWYgX01TQ19WRVIKICAgLy8gTVNW
QydzIHByaW50ZiBpbXBsZW1lbnRhdGlvbiBwcmludHMgcG9pbnRlcnMgZGlmZmVyZW50bHkuIFdl
IGNhbid0IGVhc2lseQogICAvLyBjb21wYXJlIG91ciBpbXBsZW1lbnRhdGlvbiB0byB0aGVpcnMu
CiAgIHJldHVybjsKQEAgLTIzMiw3ICsyMzUsNyBAQCBURVNUX0YoRm9ybWF0Q29udmVydFRlc3Qs
IEVudW0pIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgVHlwZWRGb3JtYXRDb252ZXJ0
VGVzdCA6IHB1YmxpYyBGb3JtYXRDb252ZXJ0VGVzdCB7IH07CiAKLVRZUEVEX1RFU1RfQ0FTRV9Q
KFR5cGVkRm9ybWF0Q29udmVydFRlc3QpOworVFlQRURfVEVTVF9TVUlURV9QKFR5cGVkRm9ybWF0
Q29udmVydFRlc3QpOwogCiBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gQWxsRmxhZ0NvbWJpbmF0
aW9ucygpIHsKICAgY29uc3QgY2hhciBrRmxhZ3NbXSA9IHsnLScsICcjJywgJzAnLCAnKycsICcg
J307CkBAIC0zNjMsNiArMzY2LDE4IEBAIHR5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczwKICAgICBB
bGxJbnRUeXBlczsKIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkRm9ybWF0Q29u
dmVydFRlc3RXaXRoQWxsSW50VHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
eXBlZEZvcm1hdENvbnZlcnRUZXN0LCBBbGxJbnRUeXBlcyk7CisKK1RFU1RfRihGb3JtYXRDb252
ZXJ0VGVzdCwgVmVjdG9yQm9vbCkgeworICAvLyBNYWtlIHN1cmUgdmVjdG9yPGJvb2w+J3MgdmFs
dWVzIGJlaGF2ZSBhcyBib29scy4KKyAgc3RkOjp2ZWN0b3I8Ym9vbD4gdiA9IHt0cnVlLCBmYWxz
ZX07CisgIGNvbnN0IHN0ZDo6dmVjdG9yPGJvb2w+IGN2ID0ge3RydWUsIGZhbHNlfTsKKyAgRVhQ
RUNUX0VRKCIxLDAsMSwwIiwKKyAgICAgICAgICAgIEZvcm1hdFBhY2soVW50eXBlZEZvcm1hdFNw
ZWNJbXBsKCIlZCwlZCwlZCwlZCIpLAorICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFu
PGNvbnN0IEZvcm1hdEFyZ0ltcGw+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAge0Zvcm1h
dEFyZ0ltcGwodlswXSksIEZvcm1hdEFyZ0ltcGwodlsxXSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRm9ybWF0QXJnSW1wbChjdlswXSksIEZvcm1hdEFyZ0ltcGwoY3ZbMV0pfSkpKTsK
K30KKwogVEVTVF9GKEZvcm1hdENvbnZlcnRUZXN0LCBVaW50MTI4KSB7CiAgIGFic2w6OnVpbnQx
MjggdiA9IHN0YXRpY19jYXN0PGFic2w6OnVpbnQxMjg+KDB4MTIzNDU2Nzg5MGFiY2RlZikgKiAx
OTc5OwogICBhYnNsOjp1aW50MTI4IG1heCA9IGFic2w6OlVpbnQxMjhNYXgoKTsKQEAgLTM4OSw3
ICs0MDQsNyBAQCBURVNUX0YoRm9ybWF0Q29udmVydFRlc3QsIFVpbnQxMjgpIHsKIH0KIAogVEVT
VF9GKEZvcm1hdENvbnZlcnRUZXN0LCBGbG9hdCkgewotI2lmIF9NU0NfVkVSCisjaWZkZWYgX01T
Q19WRVIKICAgLy8gTVNWQyBoYXMgYSBkaWZmZXJlbnQgcm91bmRpbmcgcG9saWN5IHRoYW4gdXMg
c28gd2UgY2FuJ3QgdGVzdCBvdXIKICAgLy8gaW1wbGVtZW50YXRpb24gYWdhaW5zdCB0aGUgbmF0
aXZlIG9uZSB0aGVyZS4KICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3Ry
X2Zvcm1hdC9leHRlbnNpb24uY2MKaW5kZXggYzIxNzQ3MDNjM2U4YjNmMzdiZDEyYzY0ZGQ5MjAy
NWUzYTc0YTk2MC4uZDdmNTgxNTlkNWZiNmRlNWI0OGFmZDhkYTEwMTg4MzdlNDc1NjAwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmNjCkBAIC01
LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2lu
dGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmgKaW5kZXggMTFiOTk2YWVmZDM3ZDE1N2EzZjA4
ZGFhNWEyMmRjMDFjMGEyZDAyMy4uZWI4MWY4YTE3Y2E0YTg0ZmJlY2RmOWFhMDdlZGFjMDExMmQ2
MWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVu
c2lvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24u
aApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTMsNyArMTMs
NiBAQAogLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAv
LwotLy8KICNpZm5kZWYgQUJTTF9TVFJJTkdTX0lOVEVSTkFMX1NUUl9GT1JNQVRfRVhURU5TSU9O
X0hfCiAjZGVmaW5lIEFCU0xfU1RSSU5HU19JTlRFUk5BTF9TVFJfRk9STUFUX0VYVEVOU0lPTl9I
XwogCkBAIC0zNjAsNyArMzU5LDcgQEAgZW51bSBjbGFzcyBDb252IDogdWludDY0X3QgewogICBp
bnRlZ3JhbCA9IGQgfCBpIHwgdSB8IG8gfCB4IHwgWCwKICAgZmxvYXRpbmcgPSBhIHwgZSB8IGYg
fCBnIHwgQSB8IEUgfCBGIHwgRywKICAgbnVtZXJpYyA9IGludGVncmFsIHwgZmxvYXRpbmcsCi0g
IHN0cmluZyA9IHMsICAvLyBhYnNsOmlnbm9yZShzdGQ6OnN0cmluZykKKyAgc3RyaW5nID0gcywK
ICAgcG9pbnRlciA9IHAKIH07CiAKQEAgLTQwOSw0ICs0MDgsNCBAQCBpbmxpbmUgc2l6ZV90IEV4
Y2VzcyhzaXplX3QgdXNlZCwgc2l6ZV90IGNhcGFjaXR5KSB7CiAKIH0gIC8vIG5hbWVzcGFjZSBh
YnNsCiAKLSNlbmRpZiAgLy8gQUJTTF9TVFJJTkdTX1NUUl9GT1JNQVRfRVhURU5TSU9OX0hfCisj
ZW5kaWYgIC8vIEFCU0xfU1RSSU5HU19JTlRFUk5BTF9TVFJfRk9STUFUX0VYVEVOU0lPTl9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbl90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbl90ZXN0
LmNjCmluZGV4IDIyNGZjOTIzZDNlM2RiYWEzNDE3MGE0N2M2ZjgxMzNjODQ0NGFiMzkuLjRlMjNm
ZWZiZDViMDYwYjAzZGQ4ODI3MzQ5YWVjNGJmZThlN2IzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb25fdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uX3Rlc3QuY2MKQEAgLTUsNyArNSw3
IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAv
LwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1
ZGUgPHJhbmRvbT4KICNpbmNsdWRlIDxzdHJpbmc+CisKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
c3RyX2Zvcm1hdC5oIgogCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9mbG9hdF9jb252ZXJzaW9uLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2Zsb2F0X2NvbnZlcnNpb24uY2MKaW5kZXgg
NjE3NmRiOWNiNWEyMmRjMTEzM2FhZGNiNmM5NTk1OTNiMDE5OTYxNy4uOTIzNmFjZGM3NGNiN2Iy
NTk2NDJiZGQzZjY1YWE2ODZmYmE5ZTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9zdHJfZm9ybWF0L2Zsb2F0X2NvbnZlcnNpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9zdHJfZm9ybWF0L2Zsb2F0X2NvbnZlcnNpb24uY2MKQEAgLTYsNiArNiw4IEBACiAj
aW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiYWJzbC9iYXNl
L2NvbmZpZy5oIgorCiBuYW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2Ugc3RyX2Zvcm1hdF9pbnRl
cm5hbCB7CiAKQEAgLTMzNCw3ICszMzYsNyBAQCBib29sIEZsb2F0VG9CdWZmZXIoRGVjb21wb3Nl
ZDxGbG9hdD4gZGVjb21wb3NlZCwgaW50IHByZWNpc2lvbiwgQnVmZmVyICpvdXQsCiAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8c3RkOjp1aW50NjRfdD4oZGVjb21wb3NlZC5leHBvbmVudCksIHByZWNp
c2lvbiwgb3V0LCBleHApKQogICAgIHJldHVybiB0cnVlOwogCi0jaWYgZGVmaW5lZChfX1NJWkVP
Rl9JTlQxMjhfXykKKyNpZiBkZWZpbmVkKEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4KQogICAv
LyBJZiB0aGF0IGlzIG5vdCBlbm91Z2gsIHRyeSB3aXRoIF9fdWludDEyOF90LgogICByZXR1cm4g
Q2FuRml0TWFudGlzc2E8RmxvYXQsIF9fdWludDEyOF90PigpICYmCiAgICAgICAgICBGbG9hdFRv
QnVmZmVySW1wbDxfX3VpbnQxMjhfdCwgRmxvYXQsIG1vZGU+KApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuY2MKaW5kZXggNWMzNzk1YjczN2NhMWJjY2M1ZGU5YmJh
NzUzYzM0YWI2YzYyMDczZS4uMzg5ODdiNjM4NWRkZTIwNmQxYzNmYThjZmYwYjg1OGNjNjYzZTJj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1dC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0LmNjCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yMCw2ICsyMCwxNiBAQAog
bmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHN0cl9mb3JtYXRfaW50ZXJuYWwgewogCituYW1l
c3BhY2Ugeworc3RydWN0IENsZWFyRXJybm9HdWFyZCB7CisgIENsZWFyRXJybm9HdWFyZCgpIDog
b2xkX3ZhbHVlKGVycm5vKSB7IGVycm5vID0gMDsgfQorICB+Q2xlYXJFcnJub0d1YXJkKCkgewor
ICAgIGlmICghZXJybm8pIGVycm5vID0gb2xkX3ZhbHVlOworICB9CisgIGludCBvbGRfdmFsdWU7
Cit9OworfSAgLy8gbmFtZXNwYWNlCisKIHZvaWQgQnVmZmVyUmF3U2luazo6V3JpdGUoc3RyaW5n
X3ZpZXcgdikgewogICBzaXplX3QgdG9fd3JpdGUgPSBzdGQ6Om1pbih2LnNpemUoKSwgc2l6ZV8p
OwogICBzdGQ6Om1lbWNweShidWZmZXJfLCB2LmRhdGEoKSwgdG9fd3JpdGUpOwpAQCAtMzAsMTQg
KzQwLDI3IEBAIHZvaWQgQnVmZmVyUmF3U2luazo6V3JpdGUoc3RyaW5nX3ZpZXcgdikgewogCiB2
b2lkIEZJTEVSYXdTaW5rOjpXcml0ZShzdHJpbmdfdmlldyB2KSB7CiAgIHdoaWxlICghdi5lbXB0
eSgpICYmICFlcnJvcl8pIHsKKyAgICAvLyBSZXNldCBlcnJubyB0byB6ZXJvIGluIGNhc2UgdGhl
IGxpYmMgaW1wbGVtZW50YXRpb24gZG9lc24ndCBzZXQgZXJybm8KKyAgICAvLyB3aGVuIGEgZmFp
bHVyZSBvY2N1cnMuCisgICAgQ2xlYXJFcnJub0d1YXJkIGd1YXJkOworCiAgICAgaWYgKHNpemVf
dCByZXN1bHQgPSBzdGQ6OmZ3cml0ZSh2LmRhdGEoKSwgMSwgdi5zaXplKCksIG91dHB1dF8pKSB7
CiAgICAgICAvLyBTb21lIHByb2dyZXNzIHdhcyBtYWRlLgogICAgICAgY291bnRfICs9IHJlc3Vs
dDsKICAgICAgIHYucmVtb3ZlX3ByZWZpeChyZXN1bHQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAv
LyBTb21lIGVycm9yIG9jY3VycmVkLgotICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CisgICAg
ICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9IGVsc2Ug
aWYgKGVycm5vKSB7CiAgICAgICAgIGVycm9yXyA9IGVycm5vOworICAgICAgfSBlbHNlIGlmIChz
dGQ6OmZlcnJvcihvdXRwdXRfKSkgeworICAgICAgICAvLyBOb24tUE9TSVggY29tcGxpYW50IGxp
YmMgaW1wbGVtZW50YXRpb25zIG1heSBub3Qgc2V0IGVycm5vLCBzbyB3ZQorICAgICAgICAvLyBo
YXZlIGNoZWNrIHRoZSBzdHJlYW1zIGVycm9yIGluZGljYXRvci4KKyAgICAgICAgZXJyb3JfID0g
RUJBREY7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBXZSdyZSBsaWtlbHkgb24gYSBub24t
UE9TSVggc3lzdGVtIHRoYXQgZW5jb3VudGVyZWQgRUlOVFIgYnV0IGhhZCBubworICAgICAgICAv
LyB3YXkgb2YgcmVwb3J0aW5nIGl0LgorICAgICAgICBjb250aW51ZTsKICAgICAgIH0KICAgICB9
CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRw
dXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuaAppbmRleCAx
MmVjZDk5ZTY4MGQxZWJkNjc5ZDNjODgyZjdmMjZmM2U5ZmI2ZTQ2Li40MmRhNjQxN2JlMDc4Yzcz
YjFiY2NiNGViMTZmNjY5ODAxMWRjNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL3N0cl9mb3JtYXQvb3V0cHV0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJf
Zm9ybWF0L291dHB1dC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0X3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0X3Rlc3QuY2MK
aW5kZXggY2MzYzYxNTU1N2ZlZjQ0YmY4MTM5MTFmN2JkZThlMGM4YzgwNjFmNC4uNmUwNGFiZWY0
ZDkxYzcyYTNhN2U4MWUyZjM2ODU1YjA5NTI1NzM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1dF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXRfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTcsNyArMTcsNiBAQAogI2luY2x1ZGUgPHNzdHJlYW0+
CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0KICNpbmNsdWRlICJnbW9jay9nbW9jay5oIgogI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKQEAgLTI4LDEyICsyNyw2IEBAIFRFU1QoSW52b2tlRmx1c2gs
IFN0cmluZykgewogICBzdGQ6OnN0cmluZyBzdHIgPSAiQUJDIjsKICAgc3RyX2Zvcm1hdF9pbnRl
cm5hbDo6SW52b2tlRmx1c2goJnN0ciwgIkRFRiIpOwogICBFWFBFQ1RfRVEoc3RyLCAiQUJDREVG
Iik7Ci0KLSNpZiBVVElMX0ZPUk1BVF9IQVNfR0xPQkFMX1NUUklORwotICBzdGQ6OnN0cmluZyBz
dHIyID0gIkFCQyI7Ci0gIHN0cl9mb3JtYXRfaW50ZXJuYWw6Okludm9rZUZsdXNoKCZzdHIyLCAi
REVGIik7Ci0gIEVYUEVDVF9FUShzdHIyLCAiQUJDREVGIik7Ci0jZW5kaWYgIC8vIFVUSUxfRk9S
TUFUX0hBU19HTE9CQUxfU1RSSU5HCiB9CiAKIFRFU1QoSW52b2tlRmx1c2gsIFN0cmVhbSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuY2MKaW5kZXggNWUzZDBk
MDU0N2QxZGJhZDQ3YjNhNTAzYjY4NTA3NjM3NDM3MzMyMC4uOWVmNTYxNWNjOWVlYzYxNDUzZDNi
YzQ0ZmI5YTI1NjU3YTA2NDZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9z
dHJfZm9ybWF0L3BhcnNlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3Jt
YXQvcGFyc2VyLmNjCkBAIC0xNSw2ICsxNSw0NCBAQAogCiBuYW1lc3BhY2UgYWJzbCB7CiBuYW1l
c3BhY2Ugc3RyX2Zvcm1hdF9pbnRlcm5hbCB7CisKK3VzaW5nIENDID0gQ29udmVyc2lvbkNoYXI6
OklkOwordXNpbmcgTE0gPSBMZW5ndGhNb2Q6OklkOworQUJTTF9DT05TVF9JTklUIGNvbnN0IENv
bnZUYWcga1RhZ3NbMjU2XSA9IHsKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30s
ICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyAwMC0wNworICAgIHt9LCAgICB7fSwgICAge30s
ICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIDA4LTBmCisgICAge30s
ICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8g
MTAtMTcKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwg
ICAge30sICAgICAvLyAxOC0xZgorICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwg
ICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIDIwLTI3CisgICAge30sICAgIHt9LCAgICB7fSwg
ICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gMjgtMmYKKyAgICB7fSwg
ICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyAz
MC0zNworICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAg
ICB7fSwgICAgIC8vIDM4LTNmCisgICAge30sICAgIENDOjpBLCB7fSwgICAgQ0M6OkMsIHt9LCAg
ICBDQzo6RSwgQ0M6OkYsIENDOjpHLCAgLy8gQEFCQ0RFRkcKKyAgICB7fSwgICAge30sICAgIHt9
LCAgICB7fSwgICAgTE06OkwsIHt9LCAgICB7fSwgICAge30sICAgICAvLyBISUpLTE1OTworICAg
IHt9LCAgICB7fSwgICAge30sICAgIENDOjpTLCB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAg
IC8vIFBRUlNUVVZXCisgICAgQ0M6OlgsIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwg
ICAge30sICAgIHt9LCAgICAgLy8gWFlaW1xdXl8KKyAgICB7fSwgICAgQ0M6OmEsIHt9LCAgICBD
Qzo6YywgQ0M6OmQsIENDOjplLCBDQzo6ZiwgQ0M6OmcsICAvLyBgYWJjZGVmZworICAgIExNOjpo
LCBDQzo6aSwgTE06OmosIHt9LCAgICBMTTo6bCwge30sICAgIENDOjpuLCBDQzo6bywgIC8vIGhp
amtsbW5vCisgICAgQ0M6OnAsIExNOjpxLCB7fSwgICAgQ0M6OnMsIExNOjp0LCBDQzo6dSwge30s
ICAgIHt9LCAgICAgLy8gcHFyc3R1dncKKyAgICBDQzo6eCwge30sICAgIExNOjp6LCB7fSwgICAg
e30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyB4eXp7fH0hCisgICAge30sICAgIHt9LCAg
ICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gODAtODcKKyAg
ICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAg
ICAvLyA4OC04ZgorICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAg
IHt9LCAgICB7fSwgICAgIC8vIDkwLTk3CisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAg
IHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gOTgtOWYKKyAgICB7fSwgICAge30sICAg
IHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyBhMC1hNworICAg
IHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAg
IC8vIGE4LWFmCisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAg
e30sICAgIHt9LCAgICAgLy8gYjAtYjcKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAg
e30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAvLyBiOC1iZgorICAgIHt9LCAgICB7fSwgICAg
e30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIGMwLWM3CisgICAg
e30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAg
Ly8gYzgtY2YKKyAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7
fSwgICAge30sICAgICAvLyBkMC1kNworICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7
fSwgICAge30sICAgIHt9LCAgICB7fSwgICAgIC8vIGQ4LWRmCisgICAge30sICAgIHt9LCAgICB7
fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gZTAtZTcKKyAgICB7
fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgICAv
LyBlOC1lZgorICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9
LCAgICB7fSwgICAgIC8vIGYwLWY3CisgICAge30sICAgIHt9LCAgICB7fSwgICAge30sICAgIHt9
LCAgICB7fSwgICAge30sICAgIHt9LCAgICAgLy8gZjgtZmYKK307CisKIG5hbWVzcGFjZSB7CiAK
IGJvb2wgQ2hlY2tGYXN0UGF0aFNldHRpbmcoY29uc3QgVW5ib3VuZENvbnZlcnNpb24mIGNvbnYp
IHsKQEAgLTM2LDYwICs3NCwxNyBAQCBib29sIENoZWNrRmFzdFBhdGhTZXR0aW5nKGNvbnN0IFVu
Ym91bmRDb252ZXJzaW9uJiBjb252KSB7CiAgIHJldHVybiBzaG91bGRfYmVfYmFzaWMgPT0gY29u
di5mbGFncy5iYXNpYzsKIH0KIAotLy8gS2VlcCBhIHNpbmdsZSB0YWJsZSBmb3IgYWxsIHRoZSBj
b252ZXJzaW9uIGNoYXJzIGFuZCBsZW5ndGggbW9kaWZpZXJzLgotLy8gV2UgaW52ZXJ0IHRoZSBs
ZW5ndGggbW9kaWZpZXJzIHRvIG1ha2UgdGhlbSBuZWdhdGl2ZSBzbyB0aGF0IHdlIGNhbiBlYXNp
bHkKLS8vIHRlc3QgZm9yIHRoZW0uCi0vLyBFdmVyeXRoaW5nIGVsc2UgaXMgYG5vbmVgLCB3aGlj
aCBpcyBhIG5lZ2F0aXZlIGNvbnN0YW50LgotdXNpbmcgQ0MgPSBDb252ZXJzaW9uQ2hhcjo6SWQ7
Ci11c2luZyBMTSA9IExlbmd0aE1vZDo6SWQ7Ci1zdGF0aWMgY29uc3RleHByIHN0ZDo6aW50OF90
IG5vbmUgPSAtMTI4Owotc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmludDhfdCBrSWRzW10gPSB7Ci0g
ICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBu
b25lLCAgIC8vIDAwLTA3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUs
ICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDA4LTBmCi0gICAgbm9uZSwgICBub25lLCAgIG5v
bmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDEwLTE3Ci0gICAg
bm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25l
LCAgIC8vIDE4LTFmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAg
bm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDIwLTI3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUs
ICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDI4LTJmCi0gICAgbm9u
ZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAg
IC8vIDMwLTM3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9u
ZSwgIG5vbmUsICBub25lLCAgIC8vIDM4LTNmCi0gICAgbm9uZSwgICBDQzo6QSwgIG5vbmUsICAg
Q0M6OkMsIG5vbmUsICAgQ0M6OkUsIENDOjpGLCBDQzo6RywgIC8vIEBBQkNERUZHCi0gICAgbm9u
ZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIH5MTTo6TCwgbm9uZSwgIG5vbmUsICBub25lLCAg
IC8vIEhJSktMTU5PCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgQ0M6OlMsIG5vbmUsICAg
bm9uZSwgIG5vbmUsICBub25lLCAgIC8vIFBRUlNUVVZXCi0gICAgQ0M6OlgsICBub25lLCAgIG5v
bmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIFhZWltcXV5fCi0g
ICAgbm9uZSwgICBDQzo6YSwgIG5vbmUsICAgQ0M6OmMsIENDOjpkLCAgQ0M6OmUsIENDOjpmLCBD
Qzo6ZywgIC8vIGBhYmNkZWZnCi0gICAgfkxNOjpoLCBDQzo6aSwgIH5MTTo6aiwgbm9uZSwgIH5M
TTo6bCwgbm9uZSwgIENDOjpuLCBDQzo6bywgIC8vIGhpamtsbW5vCi0gICAgQ0M6OnAsICB+TE06
OnEsIG5vbmUsICAgQ0M6OnMsIH5MTTo6dCwgQ0M6OnUsIG5vbmUsICBub25lLCAgIC8vIHBxcnN0
dXZ3Ci0gICAgQ0M6OngsICBub25lLCAgIH5MTTo6eiwgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5v
bmUsICBub25lLCAgIC8vIHh5ent8fX4hCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9u
ZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDgwLTg3Ci0gICAgbm9uZSwgICBu
b25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDg4
LThmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5v
bmUsICBub25lLCAgIC8vIDkwLTk3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwg
IG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIDk4LTlmCi0gICAgbm9uZSwgICBub25l
LCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGEwLWE3
Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUs
ICBub25lLCAgIC8vIGE4LWFmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5v
bmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGIwLWI3Ci0gICAgbm9uZSwgICBub25lLCAg
IG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGI4LWJmCi0g
ICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBu
b25lLCAgIC8vIGMwLWM3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUs
ICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGM4LWNmCi0gICAgbm9uZSwgICBub25lLCAgIG5v
bmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGQwLWQ3Ci0gICAg
bm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25l
LCAgIC8vIGQ4LWRmCi0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAg
bm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGUwLWU3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUs
ICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAgIC8vIGU4LWVmCi0gICAgbm9u
ZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9uZSwgIG5vbmUsICBub25lLCAg
IC8vIGYwLWY3Ci0gICAgbm9uZSwgICBub25lLCAgIG5vbmUsICAgbm9uZSwgIG5vbmUsICAgbm9u
ZSwgIG5vbmUsICBub25lLCAgIC8vIGY4LWZmCi19OwotCiB0ZW1wbGF0ZSA8Ym9vbCBpc19wb3Np
dGlvbmFsPgotYm9vbCBDb25zdW1lQ29udmVyc2lvbihzdHJpbmdfdmlldyAqc3JjLCBVbmJvdW5k
Q29udmVyc2lvbiAqY29udiwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuZXh0X2FyZykg
ewotICBjb25zdCBjaGFyICpwb3MgPSBzcmMtPmRhdGEoKTsKLSAgY29uc3QgY2hhciAqY29uc3Qg
ZW5kID0gcG9zICsgc3JjLT5zaXplKCk7Citjb25zdCBjaGFyICpDb25zdW1lQ29udmVyc2lvbihj
b25zdCBjaGFyICpwb3MsIGNvbnN0IGNoYXIgKmNvbnN0IGVuZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuYm91bmRDb252ZXJzaW9uICpjb252LCBpbnQgKm5leHRfYXJnKSB7Cisg
IGNvbnN0IGNoYXIqIGNvbnN0IG9yaWdpbmFsX3BvcyA9IHBvczsKICAgY2hhciBjOwogICAvLyBS
ZWFkIHRoZSBuZXh0IGNoYXIgaW50byBgY2AgYW5kIHVwZGF0ZSBgcG9zYC4gUmV0dXJucyBmYWxz
ZSBpZiB0aGVyZSBhcmUKICAgLy8gbm8gbW9yZSBjaGFycyB0byByZWFkLgotI2RlZmluZSBBQlNM
X0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKSAgICAgICAgXAotICBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChBQlNM
X1BSRURJQ1RfRkFMU0UocG9zID09IGVuZCkpIHJldHVybiBmYWxzZTsgXAotICAgIGMgPSAqcG9z
Kys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBBQlNM
X0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKSAgICAgICAgICBcCisgIGRvIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAo
QUJTTF9QUkVESUNUX0ZBTFNFKHBvcyA9PSBlbmQpKSByZXR1cm4gbnVsbHB0cjsgXAorICAgIGMg
PSAqcG9zKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIH0g
d2hpbGUgKDApCiAKICAgY29uc3QgYXV0byBwYXJzZV9kaWdpdHMgPSBbJl0gewpAQCAtOTksMTAg
Kzk0LDExIEBAIGJvb2wgQ29uc3VtZUNvbnZlcnNpb24oc3RyaW5nX3ZpZXcgKnNyYywgVW5ib3Vu
ZENvbnZlcnNpb24gKmNvbnYsCiAgICAgLy8gZGlnaXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0
ZWQgY2hhcmFjdGVycy4KICAgICBpbnQgbnVtX2RpZ2l0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50Pjo6ZGlnaXRzMTA7CiAgICAgZm9yICg7OykgewotICAgICAgaWYgKEFCU0xfUFJFRElDVF9G
QUxTRShwb3MgPT0gZW5kIHx8ICFudW1fZGlnaXRzKSkgYnJlYWs7CisgICAgICBpZiAoQUJTTF9Q
UkVESUNUX0ZBTFNFKHBvcyA9PSBlbmQpKSBicmVhazsKICAgICAgIGMgPSAqcG9zKys7CiAgICAg
ICBpZiAoIXN0ZDo6aXNkaWdpdChjKSkgYnJlYWs7CiAgICAgICAtLW51bV9kaWdpdHM7CisgICAg
ICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCFudW1fZGlnaXRzKSkgYnJlYWs7CiAgICAgICBkaWdp
dHMgPSAxMCAqIGRpZ2l0cyArIGMgLSAnMCc7CiAgICAgfQogICAgIHJldHVybiBkaWdpdHM7CkBA
IC0xMTAsMTAgKzEwNiwxMCBAQCBib29sIENvbnN1bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpz
cmMsIFVuYm91bmRDb252ZXJzaW9uICpjb252LAogCiAgIGlmIChpc19wb3NpdGlvbmFsKSB7CiAg
ICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7Ci0gICAgaWYgKEFCU0xf
UFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMgPiAnOScpKSByZXR1cm4gZmFsc2U7CisgICAgaWYg
KEFCU0xfUFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMgPiAnOScpKSByZXR1cm4gbnVsbHB0cjsK
ICAgICBjb252LT5hcmdfcG9zaXRpb24gPSBwYXJzZV9kaWdpdHMoKTsKICAgICBhc3NlcnQoY29u
di0+YXJnX3Bvc2l0aW9uID4gMCk7Ci0gICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjICE9ICck
JykpIHJldHVybiBmYWxzZTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMgIT0gJyQnKSkg
cmV0dXJuIG51bGxwdHI7CiAgIH0KIAogICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VU
X0NIQVIoKTsKQEAgLTEyOCwxMCArMTI0LDkgQEAgYm9vbCBDb25zdW1lQ29udmVyc2lvbihzdHJp
bmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lvbiAqY29udiwKICAgICBjb252LT5mbGFncy5i
YXNpYyA9IGZhbHNlOwogCiAgICAgZm9yICg7IGMgPD0gJzAnOykgewotICAgICAgLy8gRklYTUU6
IFdlIG1pZ2h0IGJlIGFibGUgdG8gc3BlZWQgdGhpcyB1cCByZXVzaW5nIHRoZSBrSWRzIGxvb2t1
cCB0YWJsZQotICAgICAgLy8gZnJvbSBhYm92ZS4KLSAgICAgIC8vIEl0IG1pZ2h0IHJlcXVpcmUg
Y2hhbmdpbmcgRmxhZ3MgdG8gYmUgYSBwbGFpbiBpbnRlZ2VyIHdoZXJlIHdlIGNhbiB8PSBhCi0g
ICAgICAvLyB2YWx1ZS4KKyAgICAgIC8vIEZJWE1FOiBXZSBtaWdodCBiZSBhYmxlIHRvIHNwZWVk
IHRoaXMgdXAgcmV1c2luZyB0aGUgbG9va3VwIHRhYmxlIGZyb20KKyAgICAgIC8vIGFib3ZlLiBJ
dCBtaWdodCByZXF1aXJlIGNoYW5naW5nIEZsYWdzIHRvIGJlIGEgcGxhaW4gaW50ZWdlciB3aGVy
ZSB3ZQorICAgICAgLy8gY2FuIHw9IGEgdmFsdWUuCiAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAg
ICAgY2FzZSAnLSc6CiAgICAgICAgICAgY29udi0+ZmxhZ3MubGVmdCA9IHRydWU7CkBAIC0xNTks
MjAgKzE1NCwyMCBAQCBmbGFnc19kb25lOgogICAgICAgaWYgKGMgPj0gJzAnKSB7CiAgICAgICAg
IGludCBtYXliZV93aWR0aCA9IHBhcnNlX2RpZ2l0cygpOwogICAgICAgICBpZiAoIWlzX3Bvc2l0
aW9uYWwgJiYgYyA9PSAnJCcpIHsKLSAgICAgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCpu
ZXh0X2FyZyAhPSAwKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgIGlmIChBQlNMX1BSRURJQ1Rf
RkFMU0UoKm5leHRfYXJnICE9IDApKSByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAvLyBQb3Np
dGlvbmFsIGNvbnZlcnNpb24uCiAgICAgICAgICAgKm5leHRfYXJnID0gLTE7CiAgICAgICAgICAg
Y29udi0+ZmxhZ3MgPSBGbGFncygpOwogICAgICAgICAgIGNvbnYtPmZsYWdzLmJhc2ljID0gdHJ1
ZTsKLSAgICAgICAgICByZXR1cm4gQ29uc3VtZUNvbnZlcnNpb248dHJ1ZT4oc3JjLCBjb252LCBu
ZXh0X2FyZyk7CisgICAgICAgICAgcmV0dXJuIENvbnN1bWVDb252ZXJzaW9uPHRydWU+KG9yaWdp
bmFsX3BvcywgZW5kLCBjb252LCBuZXh0X2FyZyk7CiAgICAgICAgIH0KICAgICAgICAgY29udi0+
d2lkdGguc2V0X3ZhbHVlKG1heWJlX3dpZHRoKTsKICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnKicp
IHsKICAgICAgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAgICAg
ICAgIGlmIChpc19wb3NpdGlvbmFsKSB7Ci0gICAgICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxT
RShjIDwgJzEnIHx8IGMgPiAnOScpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgaWYgKEFCU0xf
UFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMgPiAnOScpKSByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgICBjb252LT53aWR0aC5zZXRfZnJvbV9hcmcocGFyc2VfZGlnaXRzKCkpOwotICAgICAgICAg
IGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoYyAhPSAnJCcpKSByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjICE9ICckJykpIHJldHVybiBudWxscHRyOwogICAg
ICAgICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgIGNvbnYtPndpZHRoLnNldF9mcm9tX2FyZygrKypuZXh0X2FyZyk7
CkBAIC0xODcsOSArMTgyLDkgQEAgZmxhZ3NfZG9uZToKICAgICAgIH0gZWxzZSBpZiAoYyA9PSAn
KicpIHsKICAgICAgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAg
ICAgICAgIGlmIChpc19wb3NpdGlvbmFsKSB7Ci0gICAgICAgICAgaWYgKEFCU0xfUFJFRElDVF9G
QUxTRShjIDwgJzEnIHx8IGMgPiAnOScpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgaWYgKEFC
U0xfUFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMgPiAnOScpKSByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgICBjb252LT5wcmVjaXNpb24uc2V0X2Zyb21fYXJnKHBhcnNlX2RpZ2l0cygpKTsKLSAg
ICAgICAgICBpZiAoYyAhPSAnJCcpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBpZiAoYyAhPSAn
JCcpIHJldHVybiBudWxscHRyOwogICAgICAgICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5B
TF9HRVRfQ0hBUigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgIGNvbnYtPnByZWNpc2lv
bi5zZXRfZnJvbV9hcmcoKysqbmV4dF9hcmcpOwpAQCAtMjAwLDE0ICsxOTUsMTQgQEAgZmxhZ3Nf
ZG9uZToKICAgICB9CiAgIH0KIAotICBzdGQ6OmludDhfdCBpZCA9IGtJZHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oYyldOworICBhdXRvIHRhZyA9IEdldFRhZ0ZvckNoYXIoYyk7CiAKLSAg
aWYgKGlkIDwgMCkgewotICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoaWQgPT0gbm9uZSkpIHJl
dHVybiBmYWxzZTsKKyAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRSghdGFnLmlzX2NvbnYoKSkpIHsK
KyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCF0YWcuaXNfbGVuZ3RoKCkpKSByZXR1cm4gbnVs
bHB0cjsKIAogICAgIC8vIEl0IGlzIGEgbGVuZ3RoIG1vZGlmaWVyLgogICAgIHVzaW5nIHN0cl9m
b3JtYXRfaW50ZXJuYWw6Okxlbmd0aE1vZDsKLSAgICBMZW5ndGhNb2QgbGVuZ3RoX21vZCA9IExl
bmd0aE1vZDo6RnJvbUlkKHN0YXRpY19jYXN0PExNPih+aWQpKTsKKyAgICBMZW5ndGhNb2QgbGVu
Z3RoX21vZCA9IHRhZy5hc19sZW5ndGgoKTsKICAgICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJO
QUxfR0VUX0NIQVIoKTsKICAgICBpZiAoYyA9PSAnaCcgJiYgbGVuZ3RoX21vZC5pZCgpID09IExl
bmd0aE1vZDo6aCkgewogICAgICAgY29udi0+bGVuZ3RoX21vZCA9IExlbmd0aE1vZDo6RnJvbUlk
KExlbmd0aE1vZDo6aGgpOwpAQCAtMjE4LDI1ICsyMTMsMjQgQEAgZmxhZ3NfZG9uZToKICAgICB9
IGVsc2UgewogICAgICAgY29udi0+bGVuZ3RoX21vZCA9IGxlbmd0aF9tb2Q7CiAgICAgfQotICAg
IGlkID0ga0lkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV07Ci0gICAgaWYgKEFCU0xf
UFJFRElDVF9GQUxTRShpZCA8IDApKSByZXR1cm4gZmFsc2U7CisgICAgdGFnID0gR2V0VGFnRm9y
Q2hhcihjKTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCF0YWcuaXNfY29udigpKSkgcmV0
dXJuIG51bGxwdHI7CiAgIH0KIAogICBhc3NlcnQoQ2hlY2tGYXN0UGF0aFNldHRpbmcoKmNvbnYp
KTsKICAgKHZvaWQpKCZDaGVja0Zhc3RQYXRoU2V0dGluZyk7CiAKLSAgY29udi0+Y29udiA9IENv
bnZlcnNpb25DaGFyOjpGcm9tSWQoc3RhdGljX2Nhc3Q8Q0M+KGlkKSk7CisgIGNvbnYtPmNvbnYg
PSB0YWcuYXNfY29udigpOwogICBpZiAoIWlzX3Bvc2l0aW9uYWwpIGNvbnYtPmFyZ19wb3NpdGlv
biA9ICsrKm5leHRfYXJnOwotICAqc3JjID0gc3RyaW5nX3ZpZXcocG9zLCBlbmQgLSBwb3MpOwot
ICByZXR1cm4gdHJ1ZTsKKyAgcmV0dXJuIHBvczsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCiAKLWJv
b2wgQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKHN0cmluZ192aWV3ICpzcmMsIFVuYm91bmRDb252
ZXJzaW9uICpjb252LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuZXh0X2Fy
ZykgewotICBpZiAoKm5leHRfYXJnIDwgMCkgcmV0dXJuIENvbnN1bWVDb252ZXJzaW9uPHRydWU+
KHNyYywgY29udiwgbmV4dF9hcmcpOwotICByZXR1cm4gQ29uc3VtZUNvbnZlcnNpb248ZmFsc2U+
KHNyYywgY29udiwgbmV4dF9hcmcpOworY29uc3QgY2hhciAqQ29uc3VtZVVuYm91bmRDb252ZXJz
aW9uKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmJvdW5kQ29udmVyc2lvbiAqY29udiwgaW50ICpuZXh0X2FyZykg
eworICBpZiAoKm5leHRfYXJnIDwgMCkgcmV0dXJuIENvbnN1bWVDb252ZXJzaW9uPHRydWU+KHAs
IGVuZCwgY29udiwgbmV4dF9hcmcpOworICByZXR1cm4gQ29uc3VtZUNvbnZlcnNpb248ZmFsc2U+
KHAsIGVuZCwgY29udiwgbmV4dF9hcmcpOwogfQogCiBzdHJ1Y3QgUGFyc2VkRm9ybWF0QmFzZTo6
UGFyc2VkRm9ybWF0Q29uc3VtZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfZm9ybWF0L3BhcnNlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0
L3BhcnNlci5oCmluZGV4IDEwMjJmMDYyOTdhNzRhNTg0ZTgyZTQxY2E0YjgyNGZiYmY2MzM5MWMu
LmI3NjE0YTA5ZmE0ZWFiY2VkYTg1NTFlZjFiNjRkYzhmODQ5YjAzMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmgKQEAgLTYzLDE3ICs2Myw0NSBAQCBzdHJ1
Y3QgVW5ib3VuZENvbnZlcnNpb24gewogICBDb252ZXJzaW9uQ2hhciBjb252OwogfTsKIAotLy8g
Q29uc3VtZSBjb252ZXJzaW9uIHNwZWMgcHJlZml4IChub3QgaW5jbHVkaW5nICclJykgb2YgJypz
cmMnIGlmIHZhbGlkLgorLy8gQ29uc3VtZSBjb252ZXJzaW9uIHNwZWMgcHJlZml4IChub3QgaW5j
bHVkaW5nICclJykgb2YgW3AsIGVuZCkgaWYgdmFsaWQuCiAvLyBFeGFtcGxlcyBvZiB2YWxpZCBz
cGVjcyB3b3VsZCBiZSBlLmcuOiAicyIsICJkIiwgIi0xMi42ZiIuCi0vLyBJZiB2YWxpZCwgdGhl
IGZyb250IG9mIHNyYyBpcyBhZHZhbmNlZCBzdWNoIHRoYXQgc3JjIGJlY29tZXMgdGhlCi0vLyBw
YXJ0IGZvbGxvd2luZyB0aGUgY29udmVyc2lvbiBzcGVjLCBhbmQgdGhlIHNwZWMgcGFydCBpcyBi
cm9rZW4gZG93biBhbmQKLS8vIHJldHVybmVkIGluICdjb252Jy4KLS8vIElmIGludmFsaWQsIHJl
dHVybnMgZmFsc2UgYW5kIGxlYXZlcyAnc3JjJyB1bm1vZGlmaWVkLgotLy8gRm9yIGV4YW1wbGU6
Ci0vLyAgIEdpdmVuICJkOSIsIHJldHVybnMgImQiLCBhbmQgbGVhdmVzIHNyYz0iOSIsCi0vLyAg
IEdpdmVuICIhIiwgcmV0dXJucyAiIiBhbmQgbGVhdmVzIHNyYz0iISIuCi1ib29sIENvbnN1bWVV
bmJvdW5kQ29udmVyc2lvbihzdHJpbmdfdmlldyogc3JjLCBVbmJvdW5kQ29udmVyc2lvbiogY29u
diwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbmV4dF9hcmcpOworLy8gSWYg
dmFsaWQsIGl0IHJldHVybnMgdGhlIGZpcnN0IGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGNvbnZl
cnNpb24gc3BlYywKKy8vIGFuZCB0aGUgc3BlYyBwYXJ0IGlzIGJyb2tlbiBkb3duIGFuZCByZXR1
cm5lZCBpbiAnY29udicuCisvLyBJZiBpbnZhbGlkLCByZXR1cm5zIG51bGxwdHIuCitjb25zdCBj
aGFyKiBDb25zdW1lVW5ib3VuZENvbnZlcnNpb24oY29uc3QgY2hhciogcCwgY29uc3QgY2hhciog
ZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuYm91bmRDb252ZXJz
aW9uKiBjb252LCBpbnQqIG5leHRfYXJnKTsKKworLy8gSGVscGVyIHRhZyBjbGFzcyBmb3IgdGhl
IHRhYmxlIGJlbG93LgorLy8gSXQgYWxsb3dzIGZhc3QgYGNoYXIgLT4gQ29udmVyc2lvbkNoYXIv
TGVuZ3RoTW9kYCBjaGVja2luZyBhbmQgY29udmVyc2lvbnMuCitjbGFzcyBDb252VGFnIHsKKyBw
dWJsaWM6CisgIGNvbnN0ZXhwciBDb252VGFnKENvbnZlcnNpb25DaGFyOjpJZCBpZCkgOiB0YWdf
KGlkKSB7fSAgLy8gTk9MSU5UCisgIC8vIFdlIGludmVydCB0aGUgbGVuZ3RoIG1vZGlmaWVycyB0
byBtYWtlIHRoZW0gbmVnYXRpdmUgc28gdGhhdCB3ZSBjYW4gZWFzaWx5CisgIC8vIHRlc3QgZm9y
IHRoZW0uCisgIGNvbnN0ZXhwciBDb252VGFnKExlbmd0aE1vZDo6SWQgaWQpIDogdGFnXyh+aWQp
IHt9ICAvLyBOT0xJTlQKKyAgLy8gRXZlcnl0aGluZyBlbHNlIGlzIC0xMjgsIHdoaWNoIGlzIG5l
Z2F0aXZlIHRvIG1ha2UgaXNfY29udigpIHNpbXBsZXIuCisgIGNvbnN0ZXhwciBDb252VGFnKCkg
OiB0YWdfKC0xMjgpIHt9CisKKyAgYm9vbCBpc19jb252KCkgY29uc3QgeyByZXR1cm4gdGFnXyA+
PSAwOyB9CisgIGJvb2wgaXNfbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdGFnXyA8IDAgJiYgdGFn
XyAhPSAtMTI4OyB9CisgIENvbnZlcnNpb25DaGFyIGFzX2NvbnYoKSBjb25zdCB7CisgICAgYXNz
ZXJ0KGlzX2NvbnYoKSk7CisgICAgcmV0dXJuIENvbnZlcnNpb25DaGFyOjpGcm9tSWQoc3RhdGlj
X2Nhc3Q8Q29udmVyc2lvbkNoYXI6OklkPih0YWdfKSk7CisgIH0KKyAgTGVuZ3RoTW9kIGFzX2xl
bmd0aCgpIGNvbnN0IHsKKyAgICBhc3NlcnQoaXNfbGVuZ3RoKCkpOworICAgIHJldHVybiBMZW5n
dGhNb2Q6OkZyb21JZChzdGF0aWNfY2FzdDxMZW5ndGhNb2Q6OklkPih+dGFnXykpOworICB9CisK
KyBwcml2YXRlOgorICBzdGQ6OmludDhfdCB0YWdfOworfTsKKworZXh0ZXJuIGNvbnN0IENvbnZU
YWcga1RhZ3NbMjU2XTsKKy8vIEtlZXAgYSBzaW5nbGUgdGFibGUgZm9yIGFsbCB0aGUgY29udmVy
c2lvbiBjaGFycyBhbmQgbGVuZ3RoIG1vZGlmaWVycy4KK2lubGluZSBDb252VGFnIEdldFRhZ0Zv
ckNoYXIoY2hhciBjKSB7CisgIHJldHVybiBrVGFnc1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihjKV07Cit9CiAKIC8vIFBhcnNlIHRoZSBmb3JtYXQgc3RyaW5nIHByb3ZpZGVkIGluICdzcmMn
IGFuZCBwYXNzIHRoZSBpZGVudGlmaWVkIGl0ZW1zIGludG8KIC8vICdjb25zdW1lcicuCkBAIC04
OCw1MSArMTE2LDUzIEBAIGJvb2wgQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKHN0cmluZ192aWV3
KiBzcmMsIFVuYm91bmRDb252ZXJzaW9uKiBjb252LAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbnN1
bWVyPgogYm9vbCBQYXJzZUZvcm1hdFN0cmluZyhzdHJpbmdfdmlldyBzcmMsIENvbnN1bWVyIGNv
bnN1bWVyKSB7CiAgIGludCBuZXh0X2FyZyA9IDA7Ci0gIHdoaWxlICghc3JjLmVtcHR5KCkpIHsK
LSAgICBjb25zdCBjaGFyKiBwZXJjZW50ID0KLSAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KG1lbWNocihzcmMuZGF0YSgpLCAnJScsIHNyYy5zaXplKCkpKTsKKyAgY29uc3QgY2hhciog
cCA9IHNyYy5kYXRhKCk7CisgIGNvbnN0IGNoYXIqIGNvbnN0IGVuZCA9IHAgKyBzcmMuc2l6ZSgp
OworICB3aGlsZSAocCAhPSBlbmQpIHsKKyAgICBjb25zdCBjaGFyKiBwZXJjZW50ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1lbWNocihwLCAnJScsIGVuZCAtIHApKTsKICAgICBpZiAoIXBl
cmNlbnQpIHsKICAgICAgIC8vIFdlIGZvdW5kIHRoZSBsYXN0IHN1YnN0cmluZy4KLSAgICAgIHJl
dHVybiBjb25zdW1lci5BcHBlbmQoc3JjKTsKKyAgICAgIHJldHVybiBjb25zdW1lci5BcHBlbmQo
c3RyaW5nX3ZpZXcocCwgZW5kIC0gcCkpOwogICAgIH0KICAgICAvLyBXZSBmb3VuZCBhIHBlcmNl
bnQsIHNvIHB1c2ggdGhlIHRleHQgcnVuIHRoZW4gcHJvY2VzcyB0aGUgcGVyY2VudC4KLSAgICBz
aXplX3QgcGVyY2VudF9sb2MgPSBwZXJjZW50IC0gc3JjLmRhdGEoKTsKLSAgICBpZiAoIWNvbnN1
bWVyLkFwcGVuZChzdHJpbmdfdmlldyhzcmMuZGF0YSgpLCBwZXJjZW50X2xvYykpKSByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKHBlcmNlbnQgKyAxID49IHNyYy5kYXRhKCkgKyBzcmMuc2l6ZSgpKSBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBVbmJvdW5kQ29udmVyc2lvbiBjb252OwotCi0gICAgc3dpdGNo
IChwZXJjZW50WzFdKSB7Ci0gICAgICBjYXNlICclJzoKLSAgICAgICAgaWYgKCFjb25zdW1lci5B
cHBlbmQoIiUiKSkgcmV0dXJuIGZhbHNlOwotICAgICAgICBzcmMucmVtb3ZlX3ByZWZpeChwZXJj
ZW50X2xvYyArIDIpOwotICAgICAgICBjb250aW51ZTsKLQotI2RlZmluZSBQQVJTRVJfQ0FTRShj
aCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBjYXNlICNjaFswXTog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHNyYy5y
ZW1vdmVfcHJlZml4KHBlcmNlbnRfbG9jICsgMik7ICAgICAgICAgICAgICAgICAgICAgXAotICAg
IGNvbnYuY29udiA9IENvbnZlcnNpb25DaGFyOjpGcm9tSWQoQ29udmVyc2lvbkNoYXI6OmNoKTsg
XAotICAgIGNvbnYuYXJnX3Bvc2l0aW9uID0gKytuZXh0X2FyZzsgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIGJyZWFrOwotICAgICAgICBBQlNMX0NPTlZFUlNJT05fQ0hBUlNfRVhQQU5E
XyhQQVJTRVJfQ0FTRSwgKTsKLSN1bmRlZiBQQVJTRVJfQ0FTRQotCi0gICAgICBkZWZhdWx0Ogot
ICAgICAgICBzcmMucmVtb3ZlX3ByZWZpeChwZXJjZW50X2xvYyArIDEpOwotICAgICAgICBpZiAo
IUNvbnN1bWVVbmJvdW5kQ29udmVyc2lvbigmc3JjLCAmY29udiwgJm5leHRfYXJnKSkgcmV0dXJu
IGZhbHNlOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKG5leHRfYXJnID09IDApIHsK
LSAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIGFuIGVycm9yIGluIHRoZSBmb3JtYXQgc3RkOjpzdHJp
bmcuCi0gICAgICAvLyBUaGUgb25seSB3YXkgdG8gZ2V0IG5leHRfYXJnID09IDAgaXMgdG8gaGF2
ZSBhIHBvc2l0aW9uYWwgYXJndW1lbnQKLSAgICAgIC8vIGZpcnN0IHdoaWNoIHNldHMgbmV4dF9h
cmcgdG8gLTEgYW5kIHRoZW4gYSBub24tcG9zaXRpb25hbCBhcmd1bWVudAotICAgICAgLy8gd2hp
Y2ggZG9lcyArK25leHRfYXJnLgotICAgICAgLy8gQ2hlY2tpbmcgaGVyZSBzZWVtcyB0byBiZSB0
aGUgY2hlYXBlYXN0IHBsYWNlIHRvIGRvIGl0LgorICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0Uo
IWNvbnN1bWVyLkFwcGVuZChzdHJpbmdfdmlldyhwLCBwZXJjZW50IC0gcCkpKSkgewogICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIWNvbnN1bWVyLkNvbnZlcnRPbmUoCi0gICAg
ICAgICAgICBjb252LCBzdHJpbmdfdmlldyhwZXJjZW50ICsgMSwgc3JjLmRhdGEoKSAtIChwZXJj
ZW50ICsgMSkpKSkgewotICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChBQlNMX1BSRURJQ1Rf
RkFMU0UocGVyY2VudCArIDEgPj0gZW5kKSkgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byB0YWcg
PSBHZXRUYWdGb3JDaGFyKHBlcmNlbnRbMV0pOworICAgIGlmICh0YWcuaXNfY29udigpKSB7Cisg
ICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKG5leHRfYXJnIDwgMCkpIHsKKyAgICAgICAgLy8g
VGhpcyBpbmRpY2F0ZXMgYW4gZXJyb3IgaW4gdGhlIGZvcm1hdCBzdGQ6OnN0cmluZy4KKyAgICAg
ICAgLy8gVGhlIG9ubHkgd2F5IHRvIGdldCBgbmV4dF9hcmcgPCAwYCBoZXJlIGlzIHRvIGhhdmUg
YSBwb3NpdGlvbmFsCisgICAgICAgIC8vIGFyZ3VtZW50IGZpcnN0IHdoaWNoIHNldHMgbmV4dF9h
cmcgdG8gLTEgYW5kIHRoZW4gYSBub24tcG9zaXRpb25hbAorICAgICAgICAvLyBhcmd1bWVudC4K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgcCA9IHBlcmNlbnQgKyAyOwor
CisgICAgICAvLyBLZWVwIHRoaXMgY2FzZSBzZXBhcmF0ZSBmcm9tIHRoZSBvbmUgYmVsb3cuCisg
ICAgICAvLyBDb252ZXJ0T25lIGlzIG1vcmUgZWZmaWNpZW50IHdoZW4gdGhlIGNvbXBpbGVyIGNh
biBzZWUgdGhhdCB0aGUgYGJhc2ljYAorICAgICAgLy8gZmxhZyBpcyBzZXQuCisgICAgICBVbmJv
dW5kQ29udmVyc2lvbiBjb252OworICAgICAgY29udi5jb252ID0gdGFnLmFzX2NvbnYoKTsKKyAg
ICAgIGNvbnYuYXJnX3Bvc2l0aW9uID0gKytuZXh0X2FyZzsKKyAgICAgIGlmIChBQlNMX1BSRURJ
Q1RfRkFMU0UoCisgICAgICAgICAgICAgICFjb25zdW1lci5Db252ZXJ0T25lKGNvbnYsIHN0cmlu
Z192aWV3KHBlcmNlbnQgKyAxLCAxKSkpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKHBlcmNlbnRbMV0gIT0gJyUnKSB7CisgICAgICBVbmJvdW5kQ29u
dmVyc2lvbiBjb252OworICAgICAgcCA9IENvbnN1bWVVbmJvdW5kQ29udmVyc2lvbihwZXJjZW50
ICsgMSwgZW5kLCAmY29udiwgJm5leHRfYXJnKTsKKyAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFM
U0UocCA9PSBudWxscHRyKSkgcmV0dXJuIGZhbHNlOworICAgICAgaWYgKEFCU0xfUFJFRElDVF9G
QUxTRSghY29uc3VtZXIuQ29udmVydE9uZSgKKyAgICAgICAgICBjb252LCBzdHJpbmdfdmlldyhw
ZXJjZW50ICsgMSwgcCAtIChwZXJjZW50ICsgMSkpKSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCFj
b25zdW1lci5BcHBlbmQoIiUiKSkpIHJldHVybiBmYWxzZTsKKyAgICAgIHAgPSBwZXJjZW50ICsg
MjsKKyAgICAgIGNvbnRpbnVlOwogICAgIH0KICAgfQogICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXJfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXJfdGVzdC5jYwppbmRleCBhZTQw
MjAzMTkxYjk3ZjljM2M0ZjBjNGJlMjgxYTIyOTIxZGI2ZTZiLi42ZDM1NjA5M2NlNjBjYmVhZmZi
MWU1MTg0N2FlNDYyZDI1NjhjMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9mb3JtYXQvcGFyc2VyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9z
dHJfZm9ybWF0L3BhcnNlcl90ZXN0LmNjCkBAIC0xLDYgKzEsOCBAQAogI2luY2x1ZGUgImFic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5oIgogCiAjaW5jbHVkZSA8c3RyaW5n
Lmg+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgogI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CiAjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgogCkBAIC05LDYgKzExLDggQEAgbmFtZXNw
YWNlIHN0cl9mb3JtYXRfaW50ZXJuYWwgewogCiBuYW1lc3BhY2UgewogCit1c2luZyB0ZXN0aW5n
OjpQYWlyOworCiBURVNUKExlbmd0aE1vZFRlc3QsIE5hbWVzKSB7CiAgIHN0cnVjdCBFeHBlY3Rh
dGlvbiB7CiAgICAgaW50IGxpbmU7CkBAIC02MywyMCArNjcsMjEgQEAgVEVTVChDb252ZXJzaW9u
Q2hhclRlc3QsIE5hbWVzKSB7CiAKIGNsYXNzIENvbnN1bWVVbmJvdW5kQ29udmVyc2lvblRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgVW5ib3VuZENv
bnZlcnNpb24gUHJvcHM7Ci0gIHN0cmluZ192aWV3IENvbnN1bWUoc3RyaW5nX3ZpZXcqIHNyYykg
eworICBzdGQ6OnBhaXI8c3RyaW5nX3ZpZXcsIHN0cmluZ192aWV3PiBDb25zdW1lKHN0cmluZ192
aWV3IHNyYykgewogICAgIGludCBuZXh0ID0gMDsKLSAgICBjb25zdCBjaGFyKiBwcmV2X2JlZ2lu
ID0gc3JjLT5kYXRhKCk7CiAgICAgbyA9IFVuYm91bmRDb252ZXJzaW9uKCk7ICAvLyByZWZyZXNo
Ci0gICAgQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKHNyYywgJm8sICZuZXh0KTsKLSAgICByZXR1
cm4ge3ByZXZfYmVnaW4sIHN0YXRpY19jYXN0PHNpemVfdD4oc3JjLT5kYXRhKCkgLSBwcmV2X2Jl
Z2luKX07CisgICAgY29uc3QgY2hhciogcCA9IENvbnN1bWVVbmJvdW5kQ29udmVyc2lvbigKKyAg
ICAgICAgc3JjLmRhdGEoKSwgc3JjLmRhdGEoKSArIHNyYy5zaXplKCksICZvLCAmbmV4dCk7Cisg
ICAgaWYgKCFwKSByZXR1cm4ge3t9LCBzcmN9OworICAgIHJldHVybiB7c3RyaW5nX3ZpZXcoc3Jj
LmRhdGEoKSwgcCAtIHNyYy5kYXRhKCkpLAorICAgICAgICAgICAgc3RyaW5nX3ZpZXcocCwgc3Jj
LmRhdGEoKSArIHNyYy5zaXplKCkgLSBwKX07CiAgIH0KIAogICBib29sIFJ1bihjb25zdCBjaGFy
ICpmbXQsIGJvb2wgZm9yY2VfcG9zaXRpb25hbCA9IGZhbHNlKSB7Ci0gICAgc3RyaW5nX3ZpZXcg
c3JjID0gZm10OwogICAgIGludCBuZXh0ID0gZm9yY2VfcG9zaXRpb25hbCA/IC0xIDogMDsKICAg
ICBvID0gVW5ib3VuZENvbnZlcnNpb24oKTsgIC8vIHJlZnJlc2gKLSAgICByZXR1cm4gQ29uc3Vt
ZVVuYm91bmRDb252ZXJzaW9uKCZzcmMsICZvLCAmbmV4dCkgJiYgc3JjLmVtcHR5KCk7CisgICAg
cmV0dXJuIENvbnN1bWVVbmJvdW5kQ29udmVyc2lvbihmbXQsIGZtdCArIHN0cmxlbihmbXQpLCAm
bywgJm5leHQpID09CisgICAgICAgICAgIGZtdCArIHN0cmxlbihmbXQpOwogICB9CiAgIFVuYm91
bmRDb252ZXJzaW9uIG87CiB9OwpAQCAtMTA0LDExICsxMDksNyBAQCBURVNUX0YoQ29uc3VtZVVu
Ym91bmRDb252ZXJzaW9uVGVzdCwgQ29uc3VtZVNwZWNpZmljYXRpb24pIHsKICAgfTsKICAgZm9y
IChjb25zdCBhdXRvJiBlIDoga0V4cGVjdCkgewogICAgIFNDT1BFRF9UUkFDRShlLmxpbmUpOwot
ICAgIHN0cmluZ192aWV3IHNyYyA9IGUuc3JjOwotICAgIEVYUEVDVF9FUShlLnNyYywgc3JjKTsK
LSAgICBzdHJpbmdfdmlldyBvdXQgPSBDb25zdW1lKCZzcmMpOwotICAgIEVYUEVDVF9FUShlLm91
dCwgb3V0KTsKLSAgICBFWFBFQ1RfRVEoZS5zcmNfcG9zdCwgc3JjKTsKKyAgICBFWFBFQ1RfVEhB
VChDb25zdW1lKGUuc3JjKSwgUGFpcihlLm91dCwgZS5zcmNfcG9zdCkpOwogICB9CiB9CiAKQEAg
LTI0Niw2ICsyNDcsOCBAQCBURVNUX0YoQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uVGVzdCwgV2lk
dGhBbmRQcmVjaXNpb24pIHsKIAogICBFWFBFQ1RfRkFMU0UoUnVuKCIxMDAwMDAwMDAwLjk5OTk5
OTk5OWQiKSk7CiAgIEVYUEVDVF9GQUxTRShSdW4oIjk5OTk5OTk5OS4xMDAwMDAwMDAwZCIpKTsK
KyAgRVhQRUNUX0ZBTFNFKFJ1bigiOTk5OTk5OTk5OWQiKSk7CisgIEVYUEVDVF9GQUxTRShSdW4o
Ii45OTk5OTk5OTk5ZCIpKTsKIH0KIAogVEVTVF9GKENvbnN1bWVVbmJvdW5kQ29udmVyc2lvblRl
c3QsIEZsYWdzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9qb2lu
X2ludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9qb2luX2ludGVybmFsLmgK
aW5kZXggMDA1OGZjOGFhNGQ1YTgxMjEwYTk4ZjJkMWJiMTFiYzBjNjVhOTY1Yy4uN2MzNWY0ZGUw
NWVkYWY1Mjc5ZDYzOGFjNTJkOWQxOGNhMDJiMWY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfam9pbl9pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvc3RyX2pvaW5faW50ZXJuYWwuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtMTkzLDcgKzE5Myw3IEBAIHN0cnVjdCBEZWZhdWx0Rm9ybWF0dGVyPHN0ZDo6
dW5pcXVlX3B0cjxWYWx1ZVR5cGU+PgogLy8gYW5kIGZvcm1hdHMgZWFjaCBlbGVtZW50IHVzaW5n
IHRoZSBwcm92aWRlZCBGb3JtYXR0ZXIgb2JqZWN0LgogdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJh
dG9yLCB0eXBlbmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0cmluZyBKb2luQWxnb3JpdGhtKEl0ZXJh
dG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQsIGFic2w6OnN0cmluZ192aWV3IHMsCi0gICAgICAgICAg
ICAgICAgICAgICBGb3JtYXR0ZXImJiBmKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIEZv
cm1hdHRlciYmIGYpIHsKICAgc3RkOjpzdHJpbmcgcmVzdWx0OwogICBhYnNsOjpzdHJpbmdfdmll
dyBzZXAoIiIpOwogICBmb3IgKEl0ZXJhdG9yIGl0ID0gc3RhcnQ7IGl0ICE9IGVuZDsgKytpdCkg
ewpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0ZDo6c3RyaW5nIEpvaW5BbGdvcml0aG0oSXRlcmF0b3Ig
c3RhcnQsIEl0ZXJhdG9yIGVuZCwgYWJzbDo6c3RyaW5nX3ZpZXcgcywKIC8vIFRoaXMgaXMgYW4g
b3ZlcmxvYWQgb2YgdGhlIHByZXZpb3VzIEpvaW5BbGdvcml0aG0oKSBmdW5jdGlvbi4gSGVyZSB0
aGUKIC8vIEZvcm1hdHRlciBhcmd1bWVudCBpcyBvZiB0eXBlIE5vRm9ybWF0dGVyLiBTaW5jZSBO
b0Zvcm1hdHRlciBpcyBhbiBpbnRlcm5hbAogLy8gdHlwZSwgdGhpcyBvdmVybG9hZCBpcyBvbmx5
IGludm9rZWQgd2hlbiBzdHJpbmdzOjpKb2luKCkgaXMgY2FsbGVkIHdpdGggYQotLy8gcmFuZ2Ug
b2Ygc3RyaW5nLWxpa2Ugb2JqZWN0cyAoZS5nLiwgc3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldyks
IGFuZCBhbgorLy8gcmFuZ2Ugb2Ygc3RyaW5nLWxpa2Ugb2JqZWN0cyAoZS5nLiwgc3RkOjpzdHJp
bmcsIGFic2w6OnN0cmluZ192aWV3KSwgYW5kIGFuCiAvLyBleHBsaWNpdCBGb3JtYXR0ZXIgYXJn
dW1lbnQgd2FzIE5PVCBzcGVjaWZpZWQuCiAvLwogLy8gVGhlIG9wdGltaXphdGlvbiBpcyB0aGF0
IHRoZSBuZWVkZWQgc3BhY2Ugd2lsbCBiZSByZXNlcnZlZCBpbiB0aGUgb3V0cHV0CkBAIC0yMjQs
NyArMjI0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yLAogICAgICAgICAgICAgICB0
eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5
LAogICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnPjo6dmFsdWU+Ojp0eXBl
Pgogc3RkOjpzdHJpbmcgSm9pbkFsZ29yaXRobShJdGVyYXRvciBzdGFydCwgSXRlcmF0b3IgZW5k
LCBhYnNsOjpzdHJpbmdfdmlldyBzLAotICAgICAgICAgICAgICAgICAgICAgTm9Gb3JtYXR0ZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTm9Gb3JtYXR0ZXIpIHsKICAgc3RkOjpzdHJp
bmcgcmVzdWx0OwogICBpZiAoc3RhcnQgIT0gZW5kKSB7CiAgICAgLy8gU3VtcyBzaXplCkBAIC0y
NzYsMTQgKzI3NiwxNSBAQCBzdHJ1Y3QgSm9pblR1cGxlTG9vcDxOLCBOPiB7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBULCB0eXBlbmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0cmluZyBKb2luQWxn
b3JpdGhtKGNvbnN0IHN0ZDo6dHVwbGU8VC4uLj4mIHR1cCwgYWJzbDo6c3RyaW5nX3ZpZXcgc2Vw
LAotICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyJiYgZm10KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZvcm1hdHRlciYmIGZtdCkgewogICBzdGQ6OnN0cmluZyByZXN1bHQ7CiAg
IEpvaW5UdXBsZUxvb3A8MCwgc2l6ZW9mLi4uKFQpPigpKCZyZXN1bHQsIHR1cCwgc2VwLCBmbXQp
OwogICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+Ci1z
dGQ6OnN0cmluZyBKb2luUmFuZ2UoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsIGFic2w6
OnN0cmluZ192aWV3IHNlcGFyYXRvcikgeworc3RkOjpzdHJpbmcgSm9pblJhbmdlKEl0ZXJhdG9y
IGZpcnN0LCBJdGVyYXRvciBsYXN0LAorICAgICAgICAgICAgICAgICAgICAgIGFic2w6OnN0cmlu
Z192aWV3IHNlcGFyYXRvcikgewogICAvLyBObyBmb3JtYXR0ZXIgd2FzIGV4cGxpY2l0bHkgZ2l2
ZW4sIHNvIGEgZGVmYXVsdCBtdXN0IGJlIGNob3Nlbi4KICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6
Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUgVmFsdWVUeXBlOwogICB0eXBl
ZGVmIHR5cGVuYW1lIERlZmF1bHRGb3JtYXR0ZXI8VmFsdWVUeXBlPjo6VHlwZSBGb3JtYXR0ZXI7
CkBAIC0yOTIsNyArMjkzLDcgQEAgc3RkOjpzdHJpbmcgSm9pblJhbmdlKEl0ZXJhdG9yIGZpcnN0
LCBJdGVyYXRvciBsYXN0LCBhYnNsOjpzdHJpbmdfdmlldyBzZXBhcmF0b3IKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFJhbmdlLCB0eXBlbmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0cmluZyBKb2luUmFu
Z2UoY29uc3QgUmFuZ2UmIHJhbmdlLCBhYnNsOjpzdHJpbmdfdmlldyBzZXBhcmF0b3IsCi0gICAg
ICAgICAgICAgICAgIEZvcm1hdHRlciYmIGZtdCkgeworICAgICAgICAgICAgICAgICAgICAgIEZv
cm1hdHRlciYmIGZtdCkgewogICB1c2luZyBzdGQ6OmJlZ2luOwogICB1c2luZyBzdGQ6OmVuZDsK
ICAgcmV0dXJuIEpvaW5BbGdvcml0aG0oYmVnaW4ocmFuZ2UpLCBlbmQocmFuZ2UpLCBzZXBhcmF0
b3IsIGZtdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9zcGxpdF9p
bnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfc3BsaXRfaW50ZXJuYWwuaApp
bmRleCA4MWU4ZDU1NTQ0NjgwZDY3MWU1NmViMDI1NDk5NWI0MmJkNTQ4ZDQwLi41MmY2MjIyNjE1
Y2VkYmFmMzQ2ODE1NjhkMDU1ZDQwYjc3ZjE0ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL3N0cl9zcGxpdF9pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvc3RyX3NwbGl0X2ludGVybmFsLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKQEAgLTk2LDggKzk2LDggQEAgQ29udmVydGlibGVUb1N0cmluZ1ZpZXcoc3RkOjpz
dHJpbmcmJiBzKSAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCiAgICAgfQogICB9CiAKLSAg
Ly8gSG9sZHMgdGhlIGRhdGEgbW92ZWQgZnJvbSB0ZW1wb3Jhcnkgc3RkOjpzdHJpbmcgYXJndW1l
bnRzLiBEZWNsYXJlZCBmaXJzdCBzbwotICAvLyB0aGF0ICd2YWx1ZScgY2FuIHJlZmVyIHRvICdj
b3B5XycuCisgIC8vIEhvbGRzIHRoZSBkYXRhIG1vdmVkIGZyb20gdGVtcG9yYXJ5IHN0ZDo6c3Ry
aW5nIGFyZ3VtZW50cy4gRGVjbGFyZWQgZmlyc3QKKyAgLy8gc28gdGhhdCAndmFsdWUnIGNhbiBy
ZWZlciB0byAnY29weV8nLgogICBzdGQ6OnN0cmluZyBjb3B5XzsKICAgYWJzbDo6c3RyaW5nX3Zp
ZXcgdmFsdWVfOwogfTsKQEAgLTM3NiwxMCArMzc2LDEwIEBAIGNsYXNzIFNwbGl0dGVyIHsKIAog
ICAvLyBQYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGZvciBhIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
Pi4KICAgLy8KLSAgLy8gT3B0aW1pemVkIGZvciB0aGUgY29tbW9uIGNhc2Ugb2Ygc3BsaXR0aW5n
IHRvIGEgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+LiBJbgotICAvLyB0aGlzIGNhc2Ugd2UgZmly
c3Qgc3BsaXQgdGhlIHJlc3VsdHMgdG8gYSBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4g
c28KLSAgLy8gdGhlIHJldHVybmVkIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjYW4gaGF2ZSBz
cGFjZSByZXNlcnZlZCB0byBhdm9pZCBzdGQ6OnN0cmluZwotICAvLyBtb3Zlcy4KKyAgLy8gT3B0
aW1pemVkIGZvciB0aGUgY29tbW9uIGNhc2Ugb2Ygc3BsaXR0aW5nIHRvIGEgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+LgorICAvLyBJbiB0aGlzIGNhc2Ugd2UgZmlyc3Qgc3BsaXQgdGhlIHJlc3Vs
dHMgdG8gYSBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4KKyAgLy8gc28gdGhlIHJldHVy
bmVkIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjYW4gaGF2ZSBzcGFjZSByZXNlcnZlZCB0byBh
dm9pZAorICAvLyBzdGQ6OnN0cmluZyBtb3Zlcy4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIEE+CiAg
IHN0cnVjdCBDb252ZXJ0VG9Db250YWluZXI8c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmcsIEE+LCBz
dGQ6OnN0cmluZywgZmFsc2U+IHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZywgQT4gb3Bl
cmF0b3IoKShjb25zdCBTcGxpdHRlciYgc3BsaXR0ZXIpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvdXRmOC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvdXRm
OC5jYwppbmRleCAyNDE1YzJjY2M0NWNkNzU0OWU5ODY2ZDhiYjAzYmQ5YWQwMDViMzYzLi44MmQz
NmMyNGIzNGYwOWI5YjQyYWVjM2NiNDMyYmZkNGRlMGNkYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3V0ZjguY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4
LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3V0ZjguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
dXRmOC5oCmluZGV4IGQyYzNjMGIwMTIwODU5NmI0NGM3OTg0N2VhNzFjNjI3ZDkxM2M2NGIuLjA0
MjM2MzA0NzNiMWI0ZDc4YThjMWUxY2QxZDUyOGUyNWVhZjQwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvdXRmOC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvdXRm
OC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMyw3ICsx
Myw2IEBACiAvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIC8vCiAvLyBVVEY4IHV0
aWxpdGllcywgaW1wbGVtZW50ZWQgdG8gcmVkdWNlIGRlcGVuZGVuY2llcy4KLS8vCiAKICNpZm5k
ZWYgQUJTTF9TVFJJTkdTX0lOVEVSTkFMX1VURjhfSF8KICNkZWZpbmUgQUJTTF9TVFJJTkdTX0lO
VEVSTkFMX1VURjhfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvdXRmOF90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4X3Rlc3QuY2MKaW5kZXggNjRjZWM3
MGRmN2UxZDhkZDUzZjU0ZDNmOGMwNmY0MGIwODRkOWY1Yi4uODhkZDUwMzZlM2RhMDY1OGMzOGVl
NGYxMjFlNTI2ODYwMTdlY2M3MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91
dGY4X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC91dGY4X3Rlc3QuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIyLDEyICsyMiwxNyBA
QAogCiBuYW1lc3BhY2UgewogCisjaWYgIWRlZmluZWQoX19jcHBfY2hhcjhfdCkKKyNpZiBkZWZp
bmVkKF9fY2xhbmdfXykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdjKysyYS1jb21wYXQiCisjZW5kaWYKIFRFU1QoRW5j
b2RlVVRGOENoYXIsIEJhc2ljRnVuY3Rpb24pIHsKICAgc3RkOjpwYWlyPGNoYXIzMl90LCBzdGQ6
OnN0cmluZz4gdGVzdHNbXSA9IHt7MHgwMDMwLCB1OCJcdTAwMzAifSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgezB4MDBBMywgdTgiXHUwMEEzIn0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsweDAwMDEwMDAwLCB1OCJcVTAwMDEw
MDAwIn0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsweDAwMDBG
RkZGLCB1OCJcVTAwMDBGRkZGIn0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsweDAwMTBGRkZELCB1OCJcVTAwMTBGRkZEIn19OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsweDAwQTMsIHU4Ilx1MDBBMyJ9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsweDAwMDEwMDAwLCB1OCJc
VTAwMDEwMDAwIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgezB4MDAwMEZGRkYsIHU4IlxVMDAwMEZGRkYifSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7MHgwMDEwRkZGRCwgdTgiXFUwMDEwRkZGRCJ9fTsKICAg
Zm9yIChhdXRvICZ0ZXN0IDogdGVzdHMpIHsKICAgICBjaGFyIGJ1ZjBbN10gPSB7J1x4MDAnLCAn
XHgwMCcsICdceDAwJywgJ1x4MDAnLCAnXHgwMCcsICdceDAwJywgJ1x4MDAnfTsKICAgICBjaGFy
IGJ1ZjFbN10gPSB7J1x4RkYnLCAnXHhGRicsICdceEZGJywgJ1x4RkYnLCAnXHhGRicsICdceEZG
JywgJ1x4RkYnfTsKQEAgLTUzLDUgKzU4LDkgQEAgVEVTVChFbmNvZGVVVEY4Q2hhciwgQmFzaWNG
dW5jdGlvbikgewogICBFWFBFQ1RfTEUoYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6RW5jb2RlVVRG
OENoYXIoYnVmMiwgLTEpLAogICAgICAgICAgICAgYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6a01h
eEVuY29kZWRVVEY4U2l6ZSk7CiB9CisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyNlbmRpZiAgLy8gIWRlZmluZWQoX19jcHBfY2hh
cjhfdCkKIAogfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNo
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5jYwppbmRleCAzZDEwYzU3Nzg0ZWJlOTI1NDk4NTVi
Y2ZiMDc3Njc5OTk2NmYxNzE3Li43YjI0MjQxYWRmNWIxYzVhZGVmOTFmNjVjM2FkNzQyMzYzOTI4
OWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvbWF0Y2guY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTE4LDE1ICsxOCw2IEBACiAKIG5hbWVzcGFjZSBhYnNsIHsKIAotbmFtZXNwYWNlIHsKLWJvb2wg
Q2FzZUVxdWFsKGFic2w6OnN0cmluZ192aWV3IHBpZWNlMSwgYWJzbDo6c3RyaW5nX3ZpZXcgcGll
Y2UyKSB7Ci0gIHJldHVybiAocGllY2UxLnNpemUoKSA9PSBwaWVjZTIuc2l6ZSgpICYmCi0gICAg
ICAgICAgMCA9PSBzdHJpbmdzX2ludGVybmFsOjptZW1jYXNlY21wKHBpZWNlMS5kYXRhKCksIHBp
ZWNlMi5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBpZWNlMS5zaXplKCkpKTsKLSAgLy8gbWVtY2FzZWNtcCB1c2VzIGFzY2lpX3RvbG93ZXIoKS4K
LX0KLX0gIC8vIG5hbWVzcGFjZQotCiBib29sIEVxdWFsc0lnbm9yZUNhc2UoYWJzbDo6c3RyaW5n
X3ZpZXcgcGllY2UxLCBhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTIpIHsKICAgcmV0dXJuIChwaWVj
ZTEuc2l6ZSgpID09IHBpZWNlMi5zaXplKCkgJiYKICAgICAgICAgICAwID09IGFic2w6OnN0cmlu
Z3NfaW50ZXJuYWw6Om1lbWNhc2VjbXAocGllY2UxLmRhdGEoKSwgcGllY2UyLmRhdGEoKSwKQEAg
LTM2LDEyICsyNywxMiBAQCBib29sIEVxdWFsc0lnbm9yZUNhc2UoYWJzbDo6c3RyaW5nX3ZpZXcg
cGllY2UxLCBhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTIpIHsKIAogYm9vbCBTdGFydHNXaXRoSWdu
b3JlQ2FzZShhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBwcmVmaXgp
IHsKICAgcmV0dXJuICh0ZXh0LnNpemUoKSA+PSBwcmVmaXguc2l6ZSgpKSAmJgotICAgICAgICAg
Q2FzZUVxdWFsKHRleHQuc3Vic3RyKDAsIHByZWZpeC5zaXplKCkpLCBwcmVmaXgpOworICAgICAg
ICAgRXF1YWxzSWdub3JlQ2FzZSh0ZXh0LnN1YnN0cigwLCBwcmVmaXguc2l6ZSgpKSwgcHJlZml4
KTsKIH0KIAogYm9vbCBFbmRzV2l0aElnbm9yZUNhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwg
YWJzbDo6c3RyaW5nX3ZpZXcgc3VmZml4KSB7CiAgIHJldHVybiAodGV4dC5zaXplKCkgPj0gc3Vm
Zml4LnNpemUoKSkgJiYKLSAgICAgICAgIENhc2VFcXVhbCh0ZXh0LnN1YnN0cih0ZXh0LnNpemUo
KSAtIHN1ZmZpeC5zaXplKCkpLCBzdWZmaXgpOworICAgICAgICAgRXF1YWxzSWdub3JlQ2FzZSh0
ZXh0LnN1YnN0cih0ZXh0LnNpemUoKSAtIHN1ZmZpeC5zaXplKCkpLCBzdWZmaXgpOwogfQogCiB9
ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9tYXRjaC5oCmluZGV4IDZlOGVkMTBmYzUwZmViNmY3MTk2ZGI0MTljNGEz
OGE0MjQwYjRmN2IuLjc2MmYzNTlmNzk2N2M1MGZhN2IwYThkNjJhZWUyYTZkYWM1ZmY0ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNo
LmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTYyLDggKzYy
LDcgQEAgaW5saW5lIGJvb2wgRW5kc1dpdGgoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgYWJzbDo6
c3RyaW5nX3ZpZXcgc3VmZml4KSB7CiAgIHJldHVybiBzdWZmaXguZW1wdHkoKSB8fAogICAgICAg
ICAgKHRleHQuc2l6ZSgpID49IHN1ZmZpeC5zaXplKCkgJiYKICAgICAgICAgICBtZW1jbXAodGV4
dC5kYXRhKCkgKyAodGV4dC5zaXplKCkgLSBzdWZmaXguc2l6ZSgpKSwgc3VmZml4LmRhdGEoKSwK
LSAgICAgICAgICAgICAgICAgc3VmZml4LnNpemUoKSkgPT0gMAotICAgICAgICAgKTsKKyAgICAg
ICAgICAgICAgICAgc3VmZml4LnNpemUoKSkgPT0gMCk7CiB9CiAKIC8vIEVxdWFsc0lnbm9yZUNh
c2UoKQpAQCAtNzQsMTMgKzczLDEzIEBAIGJvb2wgRXF1YWxzSWdub3JlQ2FzZShhYnNsOjpzdHJp
bmdfdmlldyBwaWVjZTEsIGFic2w6OnN0cmluZ192aWV3IHBpZWNlMik7CiAKIC8vIFN0YXJ0c1dp
dGhJZ25vcmVDYXNlKCkKIC8vCi0vLyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBBU0NJSSBzdHJp
bmcgYHRleHRgIHN0YXJ0cyB3aXRoIGBzdGFydHNfd2l0aGAsCisvLyBSZXR1cm5zIHdoZXRoZXIg
YSBnaXZlbiBBU0NJSSBzdHJpbmcgYHRleHRgIHN0YXJ0cyB3aXRoIGBwcmVmaXhgLAogLy8gaWdu
b3JpbmcgY2FzZSBpbiB0aGUgY29tcGFyaXNvbi4KIGJvb2wgU3RhcnRzV2l0aElnbm9yZUNhc2Uo
YWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgYWJzbDo6c3RyaW5nX3ZpZXcgcHJlZml4KTsKIAogLy8g
RW5kc1dpdGhJZ25vcmVDYXNlKCkKIC8vCi0vLyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBBU0NJ
SSBzdHJpbmcgYHRleHRgIGVuZHMgd2l0aCBgZW5kc193aXRoYCwgaWdub3JpbmcKKy8vIFJldHVy
bnMgd2hldGhlciBhIGdpdmVuIEFTQ0lJIHN0cmluZyBgdGV4dGAgZW5kcyB3aXRoIGBzdWZmaXhg
LCBpZ25vcmluZwogLy8gY2FzZSBpbiB0aGUgY29tcGFyaXNvbi4KIGJvb2wgRW5kc1dpdGhJZ25v
cmVDYXNlKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0cmluZ192aWV3IHN1ZmZpeCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2hfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvbWF0Y2hfdGVzdC5jYwppbmRleCBjMjFlMDBiZjgwN2M5NGY3ZjdjNWE4OGYyNjVmMjA2OTRj
ZGYxMTQzLi40YzMxM2RkYTE0ZTNmZGIwOWUyOGZmNTEyY2JhYmIxNzJiOWMzNjc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRj
aF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0x
OSw3ICsxOSw3IEBACiBuYW1lc3BhY2UgewogCiBURVNUKE1hdGNoVGVzdCwgU3RhcnRzV2l0aCkg
ewotICBjb25zdCBzdGQ6OnN0cmluZyBzMSgiMTIzIiAiXDAiICI0NTYiLCA3KTsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgczEoIjEyM1wwYWJjIiwgNyk7CiAgIGNvbnN0IGFic2w6OnN0cmluZ192aWV3
IGEoImZvb2JhciIpOwogICBjb25zdCBhYnNsOjpzdHJpbmdfdmlldyBiKHMxKTsKICAgY29uc3Qg
YWJzbDo6c3RyaW5nX3ZpZXcgZTsKQEAgLTM2LDcgKzM2LDcgQEAgVEVTVChNYXRjaFRlc3QsIFN0
YXJ0c1dpdGgpIHsKIH0KIAogVEVTVChNYXRjaFRlc3QsIEVuZHNXaXRoKSB7Ci0gIGNvbnN0IHN0
ZDo6c3RyaW5nIHMxKCIxMjMiICJcMCIgIjQ1NiIsIDcpOworICBjb25zdCBzdGQ6OnN0cmluZyBz
MSgiMTIzXDBhYmMiLCA3KTsKICAgY29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcgYSgiZm9vYmFyIik7
CiAgIGNvbnN0IGFic2w6OnN0cmluZ192aWV3IGIoczEpOwogICBjb25zdCBhYnNsOjpzdHJpbmdf
dmlldyBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9udW1iZXJzLmNjCmluZGV4IDkzMDlmOWRhOWRjYzVjOTA3ZTY4MzVlY2E2ZDA0N2M5MGYy
YzZmMzIuLjM4ZDE0ODY5MGUyZTdjMmM3MjM1NGM4MGJhYzM4ZDRkNmUyMTYwMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVycy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM1LDE3ICsz
NSwxOCBAQAogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9hc2NpaS5oIgogI2luY2x1ZGUgImFic2wv
c3RyaW5ncy9jaGFyY29udi5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11
dGlsLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYWJzbC9z
dHJpbmdzL3N0cl9jYXQuaCIKIAogbmFtZXNwYWNlIGFic2wgewogCi1ib29sIFNpbXBsZUF0b2Yo
YWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBmbG9hdCogdmFsdWUpIHsKLSAgKnZhbHVlID0gMC4wOwor
Ym9vbCBTaW1wbGVBdG9mKGFic2w6OnN0cmluZ192aWV3IHN0ciwgZmxvYXQqIG91dCkgeworICAq
b3V0ID0gMC4wOwogICBzdHIgPSBTdHJpcEFzY2lpV2hpdGVzcGFjZShzdHIpOwogICBpZiAoIXN0
ci5lbXB0eSgpICYmIHN0clswXSA9PSAnKycpIHsKICAgICBzdHIucmVtb3ZlX3ByZWZpeCgxKTsK
ICAgfQotICBhdXRvIHJlc3VsdCA9IGFic2w6OmZyb21fY2hhcnMoc3RyLmRhdGEoKSwgc3RyLmRh
dGEoKSArIHN0ci5zaXplKCksICp2YWx1ZSk7CisgIGF1dG8gcmVzdWx0ID0gYWJzbDo6ZnJvbV9j
aGFycyhzdHIuZGF0YSgpLCBzdHIuZGF0YSgpICsgc3RyLnNpemUoKSwgKm91dCk7CiAgIGlmIChy
ZXN1bHQuZWMgPT0gc3RkOjplcnJjOjppbnZhbGlkX2FyZ3VtZW50KSB7CiAgICAgcmV0dXJuIGZh
bHNlOwogICB9CkBAIC01MywyNSArNTQsMjUgQEAgYm9vbCBTaW1wbGVBdG9mKGFic2w6OnN0cmlu
Z192aWV3IHN0ciwgZmxvYXQqIHZhbHVlKSB7CiAgICAgLy8gbm90IGFsbCBub24td2hpdGVzcGFj
ZSBjaGFyYWN0ZXJzIGNvbnN1bWVkCiAgICAgcmV0dXJuIGZhbHNlOwogICB9Ci0gIC8vIGZyb21f
Y2hhcnMoKSB3aXRoIERSIDM4MDEncyBjdXJyZW50IHdvcmRpbmcgd2lsbCByZXR1cm4gbWF4KCkg
b24KKyAgLy8gZnJvbV9jaGFycygpIHdpdGggRFIgMzA4MSdzIGN1cnJlbnQgd29yZGluZyB3aWxs
IHJldHVybiBtYXgoKSBvbgogICAvLyBvdmVyZmxvdy4gIFNpbXBsZUF0b2YgcmV0dXJucyBpbmZp
bml0eSBpbnN0ZWFkLgogICBpZiAocmVzdWx0LmVjID09IHN0ZDo6ZXJyYzo6cmVzdWx0X291dF9v
Zl9yYW5nZSkgewotICAgIGlmICgqdmFsdWUgPiAxLjApIHsKLSAgICAgICp2YWx1ZSA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwotICAgIH0gZWxzZSBpZiAoKnZhbHVl
IDwgLTEuMCkgewotICAgICAgKnZhbHVlID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpOworICAgIGlmICgqb3V0ID4gMS4wKSB7CisgICAgICAqb3V0ID0gc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgfSBlbHNlIGlmICgqb3V0IDwgLTEu
MCkgeworICAgICAgKm91dCA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHko
KTsKICAgICB9CiAgIH0KICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU2ltcGxlQXRvZChhYnNs
OjpzdHJpbmdfdmlldyBzdHIsIGRvdWJsZSogdmFsdWUpIHsKLSAgKnZhbHVlID0gMC4wOworYm9v
bCBTaW1wbGVBdG9kKGFic2w6OnN0cmluZ192aWV3IHN0ciwgZG91YmxlKiBvdXQpIHsKKyAgKm91
dCA9IDAuMDsKICAgc3RyID0gU3RyaXBBc2NpaVdoaXRlc3BhY2Uoc3RyKTsKICAgaWYgKCFzdHIu
ZW1wdHkoKSAmJiBzdHJbMF0gPT0gJysnKSB7CiAgICAgc3RyLnJlbW92ZV9wcmVmaXgoMSk7CiAg
IH0KLSAgYXV0byByZXN1bHQgPSBhYnNsOjpmcm9tX2NoYXJzKHN0ci5kYXRhKCksIHN0ci5kYXRh
KCkgKyBzdHIuc2l6ZSgpLCAqdmFsdWUpOworICBhdXRvIHJlc3VsdCA9IGFic2w6OmZyb21fY2hh
cnMoc3RyLmRhdGEoKSwgc3RyLmRhdGEoKSArIHN0ci5zaXplKCksICpvdXQpOwogICBpZiAocmVz
dWx0LmVjID09IHN0ZDo6ZXJyYzo6aW52YWxpZF9hcmd1bWVudCkgewogICAgIHJldHVybiBmYWxz
ZTsKICAgfQpAQCAtNzksMTMgKzgwLDEzIEBAIGJvb2wgU2ltcGxlQXRvZChhYnNsOjpzdHJpbmdf
dmlldyBzdHIsIGRvdWJsZSogdmFsdWUpIHsKICAgICAvLyBub3QgYWxsIG5vbi13aGl0ZXNwYWNl
IGNoYXJhY3RlcnMgY29uc3VtZWQKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KLSAgLy8gZnJvbV9j
aGFycygpIHdpdGggRFIgMzgwMSdzIGN1cnJlbnQgd29yZGluZyB3aWxsIHJldHVybiBtYXgoKSBv
bgorICAvLyBmcm9tX2NoYXJzKCkgd2l0aCBEUiAzMDgxJ3MgY3VycmVudCB3b3JkaW5nIHdpbGwg
cmV0dXJuIG1heCgpIG9uCiAgIC8vIG92ZXJmbG93LiAgU2ltcGxlQXRvZCByZXR1cm5zIGluZmlu
aXR5IGluc3RlYWQuCiAgIGlmIChyZXN1bHQuZWMgPT0gc3RkOjplcnJjOjpyZXN1bHRfb3V0X29m
X3JhbmdlKSB7Ci0gICAgaWYgKCp2YWx1ZSA+IDEuMCkgewotICAgICAgKnZhbHVlID0gc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwotICAgIH0gZWxzZSBpZiAoKnZhbHVl
IDwgLTEuMCkgewotICAgICAgKnZhbHVlID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
aW5maW5pdHkoKTsKKyAgICBpZiAoKm91dCA+IDEuMCkgeworICAgICAgKm91dCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICB9IGVsc2UgaWYgKCpvdXQgPCAt
MS4wKSB7CisgICAgICAqb3V0ID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKTsKICAgICB9CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC05MywxNCArOTQsNiBAQCBib29s
IFNpbXBsZUF0b2QoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBkb3VibGUqIHZhbHVlKSB7CiAKIG5h
bWVzcGFjZSB7CiAKLS8vIFRPRE8ocm9nZWVmZik6IHJlcGxhY2Ugd2l0aCB0aGUgcmVhbCByZWxl
YXNlZCB0aGluZyBvbmNlIHdlIGZpZ3VyZSBvdXQgd2hhdAotLy8gaXQgaXMuCi1pbmxpbmUgYm9v
bCBDYXNlRXF1YWwoYWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UxLCBhYnNsOjpzdHJpbmdfdmlldyBw
aWVjZTIpIHsKLSAgcmV0dXJuIChwaWVjZTEuc2l6ZSgpID09IHBpZWNlMi5zaXplKCkgJiYKLSAg
ICAgICAgICAwID09IHN0cmluZ3NfaW50ZXJuYWw6Om1lbWNhc2VjbXAocGllY2UxLmRhdGEoKSwg
cGllY2UyLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGllY2UxLnNpemUoKSkpOwotfQotCiAvLyBXcml0ZXMgYSB0d28tY2hhcmFjdGVyIHJlcHJl
c2VudGF0aW9uIG9mICdpJyB0byAnYnVmJy4gJ2knIG11c3QgYmUgaW4gdGhlCiAvLyByYW5nZSAw
IDw9IGkgPCAxMDAsIGFuZCBidWYgbXVzdCBoYXZlIHNwYWNlIGZvciB0d28gY2hhcmFjdGVycy4g
RXhhbXBsZToKIC8vICAgY2hhciBidWZbMl07CkBAIC0xMzYsMTggKzEyOSwxOCBAQCBpbmxpbmUg
dm9pZCBQdXRUd29EaWdpdHMoc2l6ZV90IGksIGNoYXIqIGJ1ZikgewogCiB9ICAvLyBuYW1lc3Bh
Y2UKIAotYm9vbCBTaW1wbGVBdG9iKGFic2w6OnN0cmluZ192aWV3IHN0ciwgYm9vbCogdmFsdWUp
IHsKLSAgQUJTTF9SQVdfQ0hFQ0sodmFsdWUgIT0gbnVsbHB0ciwgIk91dHB1dCBwb2ludGVyIG11
c3Qgbm90IGJlIG51bGxwdHIuIik7Ci0gIGlmIChDYXNlRXF1YWwoc3RyLCAidHJ1ZSIpIHx8IENh
c2VFcXVhbChzdHIsICJ0IikgfHwKLSAgICAgIENhc2VFcXVhbChzdHIsICJ5ZXMiKSB8fCBDYXNl
RXF1YWwoc3RyLCAieSIpIHx8Ci0gICAgICBDYXNlRXF1YWwoc3RyLCAiMSIpKSB7Ci0gICAgKnZh
bHVlID0gdHJ1ZTsKK2Jvb2wgU2ltcGxlQXRvYihhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGJvb2wq
IG91dCkgeworICBBQlNMX1JBV19DSEVDSyhvdXQgIT0gbnVsbHB0ciwgIk91dHB1dCBwb2ludGVy
IG11c3Qgbm90IGJlIG51bGxwdHIuIik7CisgIGlmIChFcXVhbHNJZ25vcmVDYXNlKHN0ciwgInRy
dWUiKSB8fCBFcXVhbHNJZ25vcmVDYXNlKHN0ciwgInQiKSB8fAorICAgICAgRXF1YWxzSWdub3Jl
Q2FzZShzdHIsICJ5ZXMiKSB8fCBFcXVhbHNJZ25vcmVDYXNlKHN0ciwgInkiKSB8fAorICAgICAg
RXF1YWxzSWdub3JlQ2FzZShzdHIsICIxIikpIHsKKyAgICAqb3V0ID0gdHJ1ZTsKICAgICByZXR1
cm4gdHJ1ZTsKICAgfQotICBpZiAoQ2FzZUVxdWFsKHN0ciwgImZhbHNlIikgfHwgQ2FzZUVxdWFs
KHN0ciwgImYiKSB8fAotICAgICAgQ2FzZUVxdWFsKHN0ciwgIm5vIikgfHwgQ2FzZUVxdWFsKHN0
ciwgIm4iKSB8fAotICAgICAgQ2FzZUVxdWFsKHN0ciwgIjAiKSkgewotICAgICp2YWx1ZSA9IGZh
bHNlOworICBpZiAoRXF1YWxzSWdub3JlQ2FzZShzdHIsICJmYWxzZSIpIHx8IEVxdWFsc0lnbm9y
ZUNhc2Uoc3RyLCAiZiIpIHx8CisgICAgICBFcXVhbHNJZ25vcmVDYXNlKHN0ciwgIm5vIikgfHwg
RXF1YWxzSWdub3JlQ2FzZShzdHIsICJuIikgfHwKKyAgICAgIEVxdWFsc0lnbm9yZUNhc2Uoc3Ry
LCAiMCIpKSB7CisgICAgKm91dCA9IGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogICB9CiAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVycy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9udW1iZXJzLmgKaW5kZXggZjliMmNjZWY5NGQ4YmQ1NWIxYmQ4MmRlNTgyZTU4OWNi
ZDIxMmY1MS4uMTAwODM5YjA0NjI2NzBiNjIyNmQ0ODVmZjcwZTVhZmNiNmUzYTAxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJz
LmgKQEAgLTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQ0LDMzICs0
NCwzOCBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nIGlu
dG8gYW4gaW50ZWdlciB2YWx1ZSwgcmV0dXJuaW5nIGB0cnVlYCBpZgogLy8gc3VjY2Vzc2Z1bC4g
VGhlIHN0cmluZyBtdXN0IHJlZmxlY3QgYSBiYXNlLTEwIGludGVnZXIgKG9wdGlvbmFsbHkgZm9s
bG93ZWQgb3IKIC8vIHByZWNlZGVkIGJ5IEFTQ0lJIHdoaXRlc3BhY2UpIHdob3NlIHZhbHVlIGZh
bGxzIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgdGhlCi0vLyBpbnRlZ2VyIHR5cGUuCisvLyBpbnRlZ2Vy
IHR5cGUuIElmIGFueSBlcnJvcnMgYXJlIGVuY291bnRlcmVkLCB0aGlzIGZ1bmN0aW9uIHJldHVy
bnMgYGZhbHNlYCwKKy8vIGxlYXZpbmcgYG91dGAgaW4gYW4gdW5zcGVjaWZpZWQgc3RhdGUuCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgaW50X3R5cGU+Ci1BQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNp
bXBsZUF0b2koYWJzbDo6c3RyaW5nX3ZpZXcgcywgaW50X3R5cGUqIG91dCk7CitBQlNMX01VU1Rf
VVNFX1JFU1VMVCBib29sIFNpbXBsZUF0b2koYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBpbnRfdHlw
ZSogb3V0KTsKIAogLy8gU2ltcGxlQXRvZigpCiAvLwogLy8gQ29udmVydHMgdGhlIGdpdmVuIHN0
cmluZyAob3B0aW9uYWxseSBmb2xsb3dlZCBvciBwcmVjZWRlZCBieSBBU0NJSQogLy8gd2hpdGVz
cGFjZSkgaW50byBhIGZsb2F0LCB3aGljaCBtYXkgYmUgcm91bmRlZCBvbiBvdmVyZmxvdyBvciB1
bmRlcmZsb3cuCi0vLyBTZWUgaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jL3N0cmluZy9i
eXRlL3N0cnRvZiBmb3IgZGV0YWlscyBhYm91dCB0aGUKLS8vIGFsbG93ZWQgZm9ybWF0cyBmb3Ig
YHN0cmAuCi1BQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNpbXBsZUF0b2YoYWJzbDo6c3RyaW5n
X3ZpZXcgc3RyLCBmbG9hdCogdmFsdWUpOworLy8gU2VlIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNl
LmNvbS93L2Mvc3RyaW5nL2J5dGUvc3RydG9mIGZvciBkZXRhaWxzIGFib3V0IHRoZQorLy8gYWxs
b3dlZCBmb3JtYXRzIGZvciBgc3RyYC4gSWYgYW55IGVycm9ycyBhcmUgZW5jb3VudGVyZWQsIHRo
aXMgZnVuY3Rpb24KKy8vIHJldHVybnMgYGZhbHNlYCwgbGVhdmluZyBgb3V0YCBpbiBhbiB1bnNw
ZWNpZmllZCBzdGF0ZS4KK0FCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wgU2ltcGxlQXRvZihhYnNs
OjpzdHJpbmdfdmlldyBzdHIsIGZsb2F0KiBvdXQpOwogCiAvLyBTaW1wbGVBdG9kKCkKIC8vCiAv
LyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nIChvcHRpb25hbGx5IGZvbGxvd2VkIG9yIHByZWNl
ZGVkIGJ5IEFTQ0lJCiAvLyB3aGl0ZXNwYWNlKSBpbnRvIGEgZG91YmxlLCB3aGljaCBtYXkgYmUg
cm91bmRlZCBvbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cuCi0vLyBTZWUgaHR0cDovL2VuLmNwcHJl
ZmVyZW5jZS5jb20vdy9jL3N0cmluZy9ieXRlL3N0cnRvZiBmb3IgZGV0YWlscyBhYm91dCB0aGUK
LS8vIGFsbG93ZWQgZm9ybWF0cyBmb3IgYHN0cmAuCi1BQlNMX01VU1RfVVNFX1JFU1VMVCBib29s
IFNpbXBsZUF0b2QoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBkb3VibGUqIHZhbHVlKTsKKy8vIFNl
ZSBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jL3N0cmluZy9ieXRlL3N0cnRvZiBmb3Ig
ZGV0YWlscyBhYm91dCB0aGUKKy8vIGFsbG93ZWQgZm9ybWF0cyBmb3IgYHN0cmAuIElmIGFueSBl
cnJvcnMgYXJlIGVuY291bnRlcmVkLCB0aGlzIGZ1bmN0aW9uCisvLyByZXR1cm5zIGBmYWxzZWAs
IGxlYXZpbmcgYG91dGAgaW4gYW4gdW5zcGVjaWZpZWQgc3RhdGUuCitBQlNMX01VU1RfVVNFX1JF
U1VMVCBib29sIFNpbXBsZUF0b2QoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBkb3VibGUqIG91dCk7
CiAKIC8vIFNpbXBsZUF0b2IoKQogLy8KIC8vIENvbnZlcnRzIHRoZSBnaXZlbiBzdHJpbmcgaW50
byBhIGJvb2xlYW4sIHJldHVybmluZyBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1bC4KIC8vIFRoZSBmb2xs
b3dpbmcgY2FzZS1pbnNlbnNpdGl2ZSBzdHJpbmdzIGFyZSBpbnRlcnByZXRlZCBhcyBib29sZWFu
IGB0cnVlYDoKIC8vICJ0cnVlIiwgInQiLCAieWVzIiwgInkiLCAiMSIuIFRoZSBmb2xsb3dpbmcg
Y2FzZS1pbnNlbnNpdGl2ZSBzdHJpbmdzCi0vLyBhcmUgaW50ZXJwcmV0ZWQgYXMgYm9vbGVhbiBg
ZmFsc2VgOiAiZmFsc2UiLCAiZiIsICJubyIsICJuIiwgIjAiLgotQUJTTF9NVVNUX1VTRV9SRVNV
TFQgYm9vbCBTaW1wbGVBdG9iKGFic2w6OnN0cmluZ192aWV3IHN0ciwgYm9vbCogdmFsdWUpOwor
Ly8gYXJlIGludGVycHJldGVkIGFzIGJvb2xlYW4gYGZhbHNlYDogImZhbHNlIiwgImYiLCAibm8i
LCAibiIsICIwIi4gSWYgYW55CisvLyBlcnJvcnMgYXJlIGVuY291bnRlcmVkLCB0aGlzIGZ1bmN0
aW9uIHJldHVybnMgYGZhbHNlYCwgbGVhdmluZyBgb3V0YCBpbiBhbgorLy8gdW5zcGVjaWZpZWQg
c3RhdGUuCitBQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNpbXBsZUF0b2IoYWJzbDo6c3RyaW5n
X3ZpZXcgc3RyLCBib29sKiBvdXQpOwogCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCkBAIC0xNzUs
OCArMTgwLDggQEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgYm9vbCBzYWZlX3N0cnRvaV9iYXNlKGFi
c2w6OnN0cmluZ192aWV3IHMsIGludF90eXBlKiBvdXQsCiAvLyBwcmVjZWRlZCBieSBBU0NJSSB3
aGl0ZXNwYWNlLCB3aXRoIGEgdmFsdWUgaW4gdGhlIHJhbmdlIG9mIHRoZSBjb3JyZXNwb25kaW5n
CiAvLyBpbnRlZ2VyIHR5cGUuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgaW50X3R5cGU+Ci1BQlNMX01V
U1RfVVNFX1JFU1VMVCBib29sIFNpbXBsZUF0b2koYWJzbDo6c3RyaW5nX3ZpZXcgcywgaW50X3R5
cGUqIG91dCkgewotICByZXR1cm4gbnVtYmVyc19pbnRlcm5hbDo6c2FmZV9zdHJ0b2lfYmFzZShz
LCBvdXQsIDEwKTsKK0FCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wgU2ltcGxlQXRvaShhYnNsOjpz
dHJpbmdfdmlldyBzdHIsIGludF90eXBlKiBvdXQpIHsKKyAgcmV0dXJuIG51bWJlcnNfaW50ZXJu
YWw6OnNhZmVfc3RydG9pX2Jhc2Uoc3RyLCBvdXQsIDEwKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVyc19iZW5jaG1hcmsuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL251bWJlcnNfYmVuY2htYXJrLmNjCmluZGV4IDA1NzBiNzU4NjMzZWUwNDA2
ZDEyMTdlOWU3MDAxMmIyOGMxODBjNzEuLjU0ZGJlZGQzNTM1Nzc3MmQ3ODZkMTIxZDg1Y2RhNzFh
MTY4MzFiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVyc19iZW5jaG1hcmsuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzX2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1i
ZXJzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfdGVzdC5jYwppbmRleCAzNmZjMGQ2
NGZkNTEzMDUwN2IxZTgxMWIzOGRmZTU3ZTMyNDkzYjRkLi43N2Q3ZTc4MzViOGIyNWFiNWViYzIz
OTUxMTJkMTU3MGU5NTQ5NmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9zdHJfY2F0LmgiCiAKICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwv
bnVtYmVyc190ZXN0X2NvbW1vbi5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9w
b3cxMF9oZWxwZXIuaCIKIAogbmFtZXNwYWNlIHsKIApAQCAtMTkwLDcgKzE5MSw4IEBAIHZvaWQg
Q2hlY2tVSW50NjQodWludDY0X3QgeCkgewogICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIHN0ZDo6c3Ry
aW5nKCZidWZmZXJbMV0sIGFjdHVhbCkpIDw8ICIgSW5wdXQgIiA8PCB4OwogCiAgIGNoYXIqIGdl
bmVyaWNfYWN0dWFsID0gYWJzbDo6bnVtYmVyc19pbnRlcm5hbDo6RmFzdEludFRvQnVmZmVyKHgs
ICZidWZmZXJbMV0pOwotICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIHN0ZDo6c3RyaW5nKCZidWZmZXJb
MV0sIGdlbmVyaWNfYWN0dWFsKSkgPDwgIiBJbnB1dCAiIDw8IHg7CisgIEVYUEVDVF9FUShleHBl
Y3RlZCwgc3RkOjpzdHJpbmcoJmJ1ZmZlclsxXSwgZ2VuZXJpY19hY3R1YWwpKQorICAgICAgPDwg
IiBJbnB1dCAiIDw8IHg7CiAKICAgY2hhciogbXlfYWN0dWFsID0KICAgICAgIGFic2w6Om51bWJl
cnNfaW50ZXJuYWw6OkZhc3RJbnRUb0J1ZmZlcihNeVVJbnQ2NCh4KSwgJmJ1ZmZlclsxXSk7CkBA
IC03MTEsNyArNzEzLDcgQEAgVEVTVChzdHJpbmd0ZXN0LCBzYWZlX3N0cnRvdTY0X2Jhc2VfbGVu
Z3RoX2RlbGltaXRlZCkgewogICB9CiB9CiAKLS8vIGZlZW5hYmxlZXhjZXB0KCkgYW5kIGZlZGlz
YWJsZWV4Y2VwdCgpIGFyZSBtaXNzaW5nIG9uIE1hYyBPUyBYLCBNU1ZDLAorLy8gZmVlbmFibGVl
eGNlcHQoKSBhbmQgZmVkaXNhYmxlZXhjZXB0KCkgYXJlIG1pc3Npbmcgb24gbWFjT1MsIE1TVkMs
CiAvLyBhbmQgV2ViQXNzZW1ibHkuCiAjaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChf
X0FQUExFX18pIHx8IGRlZmluZWQoX19FTVNDUklQVEVOX18pCiAjZGVmaW5lIEFCU0xfTUlTU0lO
R19GRUVOQUJMRUVYQ0VQVCAxCkBAIC03ODMsNyArNzg1LDcgQEAgdm9pZCBFeGhhdXN0aXZlRmxv
YXQodWludDMyX3QgY2FzZXMsIFImJiBydW5uYWJsZSkgewogICBpZiAoaXRlcnNfcGVyX2Zsb2F0
ID09IDApIGl0ZXJzX3Blcl9mbG9hdCA9IDE7CiAgIGZvciAoZmxvYXQgZiA6IGZsb2F0cykgewog
ICAgIGlmIChmID09IGxhc3QpIGNvbnRpbnVlOwotICAgIGZsb2F0IHRlc3RmID0gbmV4dGFmdGVy
KGxhc3QsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisgICAgZmxvYXQgdGVz
dGYgPSBzdGQ6Om5leHRhZnRlcihsYXN0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4
KCkpOwogICAgIHJ1bm5hYmxlKHRlc3RmKTsKICAgICBydW5uYWJsZSgtdGVzdGYpOwogICAgIGxh
c3QgPSB0ZXN0ZjsKQEAgLTc5Nyw3ICs3OTksNyBAQCB2b2lkIEV4aGF1c3RpdmVGbG9hdCh1aW50
MzJfdCBjYXNlcywgUiYmIHJ1bm5hYmxlKSB7CiAgICAgICAgIGxhc3QgPSB0ZXN0ZjsKICAgICAg
IH0KICAgICB9Ci0gICAgdGVzdGYgPSBuZXh0YWZ0ZXIoZiwgMC4wZik7CisgICAgdGVzdGYgPSBz
dGQ6Om5leHRhZnRlcihmLCAwLjBmKTsKICAgICBpZiAodGVzdGYgPiBsYXN0KSB7CiAgICAgICBy
dW5uYWJsZSh0ZXN0Zik7CiAgICAgICBydW5uYWJsZSgtdGVzdGYpOwpAQCAtODcxLDE1ICs4NzMs
MTUgQEAgVEVTVF9GKFNpbXBsZUR0b2FUZXN0LCBFeGhhdXN0aXZlRG91YmxlVG9TaXhEaWdpdHMp
IHsKICAgICB9CiAKICAgICBmb3IgKGludCBleHBvbmVudCA9IC0zMjQ7IGV4cG9uZW50IDw9IDMw
ODsgKytleHBvbmVudCkgewotICAgICAgZG91YmxlIHBvd3RlbiA9IHBvdygxMC4wLCBleHBvbmVu
dCk7CisgICAgICBkb3VibGUgcG93dGVuID0gYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6UG93MTAo
ZXhwb25lbnQpOwogICAgICAgaWYgKHBvd3RlbiA9PSAwKSBwb3d0ZW4gPSA1ZS0zMjQ7CiAgICAg
ICBpZiAoa0Zsb2F0TnVtQ2FzZXMgPj0gMWU5KSB7CiAgICAgICAgIC8vIFRoZSBleGhhdXN0aXZl
IHRlc3QgdGFrZXMgYSB2ZXJ5IGxvbmcgdGltZSwgc28gbG9nIHByb2dyZXNzLgogICAgICAgICBj
aGFyIGJ1ZltrU2l4RGlnaXRzVG9CdWZmZXJTaXplXTsKICAgICAgICAgQUJTTF9SQVdfTE9HKAog
ICAgICAgICAgICAgSU5GTywgIiVzIiwKLSAgICAgICAgICAgIGFic2w6OlN0ckNhdCgiRXhwICIs
IGV4cG9uZW50LCAiIHBvd3Rlbj0iLCBwb3d0ZW4sICIoIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBwb3d0ZW4sICIpICgiLAorICAgICAgICAgICAgYWJzbDo6U3RyQ2F0KCJFeHAgIiwgZXhw
b25lbnQsICIgcG93dGVuPSIsIHBvd3RlbiwgIigiLCBwb3d0ZW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIikgKCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoYnVm
LCBTaXhEaWdpdHNUb0J1ZmZlcihwb3d0ZW4sIGJ1ZikpLCAiKSIpCiAgICAgICAgICAgICAgICAg
LmNfc3RyKCkpOwogICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0LmNjCmluZGV4IGVmYTRmZDczZGJhYzc3MDQ4NzQ3ZWNj
NGE3ZjFmY2IwZTY3ZDc3MDYuLmZmZTk5ZGI4MTcxMzRhMWMxNjRmNmFjYzVjMjgwMTkwZTllM2M5
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL3N0cl9jYXQuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTc4LDkgKzc4LDkgQEAgQWxwaGFOdW06OkFscGhhTnVtKERlYyBkZWMpIHsKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogLy8gU3RyQ2F0KCkKLS8vICAgIFRoaXMgbWVyZ2VzIHRoZSBnaXZlbiBzdHJp
bmdzIG9yIGludGVnZXJzLCB3aXRoIG5vIGRlbGltaXRlci4gIFRoaXMKKy8vICAgIFRoaXMgbWVy
Z2VzIHRoZSBnaXZlbiBzdHJpbmdzIG9yIGludGVnZXJzLCB3aXRoIG5vIGRlbGltaXRlci4gVGhp
cwogLy8gICAgaXMgZGVzaWduZWQgdG8gYmUgdGhlIGZhc3Rlc3QgcG9zc2libGUgd2F5IHRvIGNv
bnN0cnVjdCBhIHN0cmluZyBvdXQKLS8vICAgIG9mIGEgbWl4IG9mIHJhdyBDIHN0cmluZ3MsIFN0
cmluZ1BpZWNlcywgc3RyaW5ncywgYW5kIGludGVnZXIgdmFsdWVzLgorLy8gICAgb2YgYSBtaXgg
b2YgcmF3IEMgc3RyaW5ncywgc3RyaW5nX3ZpZXdzLCBzdHJpbmdzLCBhbmQgaW50ZWdlciB2YWx1
ZXMuCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEFwcGVuZCBpcyBtZXJlbHkgYSB2ZXJzaW9uIG9m
IG1lbWNweSB0aGF0IHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIGJ5dGUKQEAgLTg5LDcgKzg5
LDkgQEAgc3RhdGljIGNoYXIqIEFwcGVuZChjaGFyKiBvdXQsIGNvbnN0IEFscGhhTnVtJiB4KSB7
CiAgIC8vIG1lbWNweSBpcyBhbGxvd2VkIHRvIG92ZXJ3cml0ZSBhcmJpdHJhcnkgbWVtb3J5LCBz
byBkb2luZyB0aGlzIGFmdGVyIHRoZQogICAvLyBjYWxsIHdvdWxkIGZvcmNlIGFuIGV4dHJhIGZl
dGNoIG9mIHguc2l6ZSgpLgogICBjaGFyKiBhZnRlciA9IG91dCArIHguc2l6ZSgpOwotICBtZW1j
cHkob3V0LCB4LmRhdGEoKSwgeC5zaXplKCkpOworICBpZiAoeC5zaXplKCkgIT0gMCkgeworICAg
IG1lbWNweShvdXQsIHguZGF0YSgpLCB4LnNpemUoKSk7CisgIH0KICAgcmV0dXJuIGFmdGVyOwog
fQogCkBAIC0xMTksNyArMTIxLDcgQEAgc3RkOjpzdHJpbmcgU3RyQ2F0KGNvbnN0IEFscGhhTnVt
JiBhLCBjb25zdCBBbHBoYU51bSYgYiwgY29uc3QgQWxwaGFOdW0mIGMpIHsKIH0KIAogc3RkOjpz
dHJpbmcgU3RyQ2F0KGNvbnN0IEFscGhhTnVtJiBhLCBjb25zdCBBbHBoYU51bSYgYiwgY29uc3Qg
QWxwaGFOdW0mIGMsCi0gICAgICAgICAgICAgIGNvbnN0IEFscGhhTnVtJiBkKSB7CisgICAgICAg
ICAgICAgICAgICAgY29uc3QgQWxwaGFOdW0mIGQpIHsKICAgc3RkOjpzdHJpbmcgcmVzdWx0Owog
ICBzdHJpbmdzX2ludGVybmFsOjpTVExTdHJpbmdSZXNpemVVbmluaXRpYWxpemVkKAogICAgICAg
JnJlc3VsdCwgYS5zaXplKCkgKyBiLnNpemUoKSArIGMuc2l6ZSgpICsgZC5zaXplKCkpOwpAQCAt
MTQ2LDggKzE0OCwxMCBAQCBzdGQ6OnN0cmluZyBDYXRQaWVjZXMoc3RkOjppbml0aWFsaXplcl9s
aXN0PGFic2w6OnN0cmluZ192aWV3PiBwaWVjZXMpIHsKICAgY2hhciogb3V0ID0gYmVnaW47CiAg
IGZvciAoY29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UgOiBwaWVjZXMpIHsKICAgICBjb25z
dCBzaXplX3QgdGhpc19zaXplID0gcGllY2Uuc2l6ZSgpOwotICAgIG1lbWNweShvdXQsIHBpZWNl
LmRhdGEoKSwgdGhpc19zaXplKTsKLSAgICBvdXQgKz0gdGhpc19zaXplOworICAgIGlmICh0aGlz
X3NpemUgIT0gMCkgeworICAgICAgbWVtY3B5KG91dCwgcGllY2UuZGF0YSgpLCB0aGlzX3NpemUp
OworICAgICAgb3V0ICs9IHRoaXNfc2l6ZTsKKyAgICB9CiAgIH0KICAgYXNzZXJ0KG91dCA9PSBi
ZWdpbiArIHJlc3VsdC5zaXplKCkpOwogICByZXR1cm4gcmVzdWx0OwpAQCAtMTc2LDggKzE4MCwx
MCBAQCB2b2lkIEFwcGVuZFBpZWNlcyhzdGQ6OnN0cmluZyogZGVzdCwKICAgY2hhciogb3V0ID0g
YmVnaW4gKyBvbGRfc2l6ZTsKICAgZm9yIChjb25zdCBhYnNsOjpzdHJpbmdfdmlldyBwaWVjZSA6
IHBpZWNlcykgewogICAgIGNvbnN0IHNpemVfdCB0aGlzX3NpemUgPSBwaWVjZS5zaXplKCk7Ci0g
ICAgbWVtY3B5KG91dCwgcGllY2UuZGF0YSgpLCB0aGlzX3NpemUpOwotICAgIG91dCArPSB0aGlz
X3NpemU7CisgICAgaWYgKHRoaXNfc2l6ZSAhPSAwKSB7CisgICAgICBtZW1jcHkob3V0LCBwaWVj
ZS5kYXRhKCksIHRoaXNfc2l6ZSk7CisgICAgICBvdXQgKz0gdGhpc19zaXplOworICAgIH0KICAg
fQogICBhc3NlcnQob3V0ID09IGJlZ2luICsgZGVzdC0+c2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0LmgKaW5kZXgg
ZGE5ZWQ5YTI2OWU5OTBiODc5MjJmZjJkMTlhYTk3MTdlNWUwZDcyMS4uYTk5YWFjMDFlYmJmODdi
Yzc4MzIzNWRlNjRkYzdiNjQ1ODZmYmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJf
Y2F0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0LmgKQEAgLTUsNyArNSw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM3LDEyICszNywxMiBAQAogLy8gYXR0ZW1wdCB0byBw
YXNzICc6JyBpbnN0ZWFkIG9mICI6IiBtaWdodCByZXN1bHQgaW4gYSA1OCBlbmRpbmcgdXAgaW4g
eW91cgogLy8gcmVzdWx0LgogLy8KLS8vIEJvb2xzIGNvbnZlcnQgdG8gIjAiIG9yICIxIi4KKy8v
IEJvb2xzIGNvbnZlcnQgdG8gIjAiIG9yICIxIi4gUG9pbnRlcnMgdG8gdHlwZXMgb3RoZXIgdGhh
biBgY2hhciAqYCBhcmUgbm90CisvLyB2YWxpZCBpbnB1dHMuIE5vIG91dHB1dCBpcyBnZW5lcmF0
ZWQgZm9yIG51bGwgYGNoYXIgKmAgcG9pbnRlcnMuCiAvLwogLy8gRmxvYXRpbmcgcG9pbnQgbnVt
YmVycyBhcmUgZm9ybWF0dGVkIHdpdGggc2l4LWRpZ2l0IHByZWNpc2lvbiwgd2hpY2ggaXMKIC8v
IHRoZSBkZWZhdWx0IGZvciAic3RkOjpjb3V0IDw8IiBvciBwcmludGYgIiVnIiAodGhlIHNhbWUg
YXMgIiUuNmciKS4KIC8vCi0vLwogLy8gWW91IGNhbiBjb252ZXJ0IHRvIGhleGFkZWNpbWFsIG91
dHB1dCByYXRoZXIgdGhhbiBkZWNpbWFsIG91dHB1dCB1c2luZyB0aGUKIC8vIGBIZXhgIHR5cGUg
Y29udGFpbmVkIGhlcmUuIFRvIGRvIHNvLCBwYXNzIGBIZXgobXlfaW50KWAgYXMgYSBwYXJhbWV0
ZXIgdG8KIC8vIGBTdHJDYXQoKWAgb3IgYFN0ckFwcGVuZCgpYC4gWW91IG1heSBzcGVjaWZ5IGEg
bWluaW11bSBoZXggZmllbGQgd2lkdGggdXNpbmcKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRl
IDxjc3RkaW50PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNp
bmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIgogI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9udW1iZXJzLmgiCkBAIC03OCw4ICs3OSw4IEBAIHN0cnVjdCBBbHBoYU51
bUJ1ZmZlciB7CiAKIC8vIEVudW0gdGhhdCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzaWduaWZp
Y2FudCBkaWdpdHMgdG8gcmV0dXJuIGluIGEgYEhleGAgb3IKIC8vIGBEZWNgIGNvbnZlcnNpb24g
YW5kIGZpbGwgY2hhcmFjdGVyIHRvIHVzZS4gQSBga1plcm9QYWQyYCB2YWx1ZSwgZm9yIGV4YW1w
bGUsCi0vLyB3b3VsZCBwcm9kdWNlIGhleGFkZWNpbWFsIHN0cmluZ3Mgc3VjaCBhcyAiMEEiLCIw
RiIgYW5kIGEgJ2tTcGFjZVBhZDUnIHZhbHVlCi0vLyB3b3VsZCBwcm9kdWNlIGhleGFkZWNpbWFs
IHN0cmluZ3Mgc3VjaCBhcyAiICAgIEEiLCIgICAgRiIuCisvLyB3b3VsZCBwcm9kdWNlIGhleGFk
ZWNpbWFsIHN0cmluZ3Mgc3VjaCBhcyAiMGEiLCIwZiIgYW5kIGEgJ2tTcGFjZVBhZDUnIHZhbHVl
CisvLyB3b3VsZCBwcm9kdWNlIGhleGFkZWNpbWFsIHN0cmluZ3Mgc3VjaCBhcyAiICAgIGEiLCIg
ICAgZiIuCiBlbnVtIFBhZFNwZWMgOiB1aW50OF90IHsKICAga05vUGFkID0gMSwKICAga1plcm9Q
YWQyLApAQCAtOTcsNiArOTgsMTAgQEAgZW51bSBQYWRTcGVjIDogdWludDhfdCB7CiAgIGtaZXJv
UGFkMTQsCiAgIGtaZXJvUGFkMTUsCiAgIGtaZXJvUGFkMTYsCisgIGtaZXJvUGFkMTcsCisgIGta
ZXJvUGFkMTgsCisgIGtaZXJvUGFkMTksCisgIGtaZXJvUGFkMjAsCiAKICAga1NwYWNlUGFkMiA9
IGtaZXJvUGFkMiArIDY0LAogICBrU3BhY2VQYWQzLApAQCAtMTEzLDYgKzExOCwxMCBAQCBlbnVt
IFBhZFNwZWMgOiB1aW50OF90IHsKICAga1NwYWNlUGFkMTQsCiAgIGtTcGFjZVBhZDE1LAogICBr
U3BhY2VQYWQxNiwKKyAga1NwYWNlUGFkMTcsCisgIGtTcGFjZVBhZDE4LAorICBrU3BhY2VQYWQx
OSwKKyAga1NwYWNlUGFkMjAsCiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjM3
LDYgKzI0Niw3IEBAIGNsYXNzIEFscGhhTnVtIHsKIAogICBBbHBoYU51bShjb25zdCBjaGFyKiBj
X3N0cikgOiBwaWVjZV8oY19zdHIpIHt9ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKICAg
QWxwaGFOdW0oYWJzbDo6c3RyaW5nX3ZpZXcgcGMpIDogcGllY2VfKHBjKSB7fSAgLy8gTk9MSU5U
KHJ1bnRpbWUvZXhwbGljaXQpCisKICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvcj4KICAg
QWxwaGFOdW0oICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKICAgICAgIGNvbnN0IHN0ZDo6
YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIEFsbG9jYXRvcj4mIHN0
cikKQEAgLTI2MCw2ICsyNzAsMTcgQEAgY2xhc3MgQWxwaGFOdW0gewogICBBbHBoYU51bShUIGUp
ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKICAgICAgIDogQWxwaGFOdW0oc3RhdGljX2Nh
c3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGU+KGUpKSB7fQogCisgIC8v
IHZlY3Rvcjxib29sPjo6cmVmZXJlbmNlIGFuZCBjb25zdF9yZWZlcmVuY2UgcmVxdWlyZSBzcGVj
aWFsIGhlbHAgdG8KKyAgLy8gY29udmVydCB0byBgQWxwaGFOdW1gIGJlY2F1c2UgaXQgcmVxdWly
ZXMgdHdvIHVzZXIgZGVmaW5lZCBjb252ZXJzaW9ucy4KKyAgdGVtcGxhdGUgPAorICAgICAgdHlw
ZW5hbWUgVCwKKyAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgIHN0ZDo6
aXNfY2xhc3M8VD46OnZhbHVlICYmCisgICAgICAgICAgKHN0ZDo6aXNfc2FtZTxULCBzdGQ6OnZl
Y3Rvcjxib29sPjo6cmVmZXJlbmNlPjo6dmFsdWUgfHwKKyAgICAgICAgICAgc3RkOjppc19zYW1l
PFQsIHN0ZDo6dmVjdG9yPGJvb2w+Ojpjb25zdF9yZWZlcmVuY2U+Ojp2YWx1ZSk+Ojp0eXBlKiA9
CisgICAgICAgICAgbnVsbHB0cj4KKyAgQWxwaGFOdW0oVCBlKSA6IEFscGhhTnVtKHN0YXRpY19j
YXN0PGJvb2w+KGUpKSB7fSAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCisKICBwcml2YXRl
OgogICBhYnNsOjpzdHJpbmdfdmlldyBwaWVjZV87CiAgIGNoYXIgZGlnaXRzX1tudW1iZXJzX2lu
dGVybmFsOjprRmFzdFRvQnVmZmVyU2l6ZV07CkBAIC0zMDksMTYgKzMzMCwxNSBAQCBBQlNMX01V
U1RfVVNFX1JFU1VMVCBpbmxpbmUgc3RkOjpzdHJpbmcgU3RyQ2F0KGNvbnN0IEFscGhhTnVtJiBh
KSB7CiAKIEFCU0xfTVVTVF9VU0VfUkVTVUxUIHN0ZDo6c3RyaW5nIFN0ckNhdChjb25zdCBBbHBo
YU51bSYgYSwgY29uc3QgQWxwaGFOdW0mIGIpOwogQUJTTF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpz
dHJpbmcgU3RyQ2F0KGNvbnN0IEFscGhhTnVtJiBhLCBjb25zdCBBbHBoYU51bSYgYiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWxwaGFOdW0mIGMpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFscGhhTnVtJiBjKTsKIEFC
U0xfTVVTVF9VU0VfUkVTVUxUIHN0ZDo6c3RyaW5nIFN0ckNhdChjb25zdCBBbHBoYU51bSYgYSwg
Y29uc3QgQWxwaGFOdW0mIGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEFscGhhTnVtJiBjLCBjb25zdCBBbHBoYU51bSYgZCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWxwaGFOdW0mIGMsIGNvbnN0IEFscGhhTnVtJiBk
KTsKIAogLy8gU3VwcG9ydCA1IG9yIG1vcmUgYXJndW1lbnRzCiB0ZW1wbGF0ZSA8dHlwZW5hbWUu
Li4gQVY+Ci1BQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgc3RkOjpzdHJpbmcgU3RyQ2F0KGNv
bnN0IEFscGhhTnVtJiBhLCBjb25zdCBBbHBoYU51bSYgYiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFscGhhTnVtJiBjLCBjb25zdCBBbHBoYU51bSYg
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFscGhh
TnVtJiBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QVYmLi4uIGFyZ3MpIHsKK0FCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBzdGQ6OnN0cmluZyBT
dHJDYXQoCisgICAgY29uc3QgQWxwaGFOdW0mIGEsIGNvbnN0IEFscGhhTnVtJiBiLCBjb25zdCBB
bHBoYU51bSYgYywgY29uc3QgQWxwaGFOdW0mIGQsCisgICAgY29uc3QgQWxwaGFOdW0mIGUsIGNv
bnN0IEFWJi4uLiBhcmdzKSB7CiAgIHJldHVybiBzdHJpbmdzX2ludGVybmFsOjpDYXRQaWVjZXMo
CiAgICAgICB7YS5QaWVjZSgpLCBiLlBpZWNlKCksIGMuUGllY2UoKSwgZC5QaWVjZSgpLCBlLlBp
ZWNlKCksCiAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQWxwaGFOdW0mPihhcmdzKS5QaWVjZSgp
Li4ufSk7CkBAIC0zMzYsMTggKzM1NiwxOCBAQCBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUg
c3RkOjpzdHJpbmcgU3RyQ2F0KGNvbnN0IEFscGhhTnVtJiBhLCBjb25zdCBBbHBoYU51bQogLy8g
bm90IHRyeSB0byBjaGVjayBlYWNoIG9mIGl0cyBpbnB1dCBhcmd1bWVudHMgdG8gYmUgc3VyZSB0
aGF0IHRoZXkgYXJlIG5vdAogLy8gYSBzdWJzZXQgb2YgdGhlIHN0cmluZyBiZWluZyBhcHBlbmRl
ZCB0by4gVGhhdCBpcywgd2hpbGUgdGhpcyB3aWxsIHdvcms6CiAvLwotLy8gICBzdHJpbmcgcyA9
ICJmb28iOworLy8gICBzdGQ6OnN0cmluZyBzID0gImZvbyI7CiAvLyAgIHMgKz0gczsKIC8vCiAv
LyBUaGlzIG91dHB1dCBpcyB1bmRlZmluZWQ6CiAvLwotLy8gICBzdHJpbmcgcyA9ICJmb28iOwor
Ly8gICBzdGQ6OnN0cmluZyBzID0gImZvbyI7CiAvLyAgIFN0ckFwcGVuZCgmcywgcyk7CiAvLwog
Ly8gVGhpcyBvdXRwdXQgaXMgdW5kZWZpbmVkIGFzIHdlbGwsIHNpbmNlIGBhYnNsOjpzdHJpbmdf
dmlld2AgZG9lcyBub3Qgb3duIGl0cwogLy8gZGF0YToKIC8vCi0vLyAgIHN0cmluZyBzID0gImZv
b2JhciI7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSAiZm9vYmFyIjsKIC8vICAgYWJzbDo6c3RyaW5n
X3ZpZXcgcCA9IHM7CiAvLyAgIFN0ckFwcGVuZCgmcywgcCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyX2NhdF9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXRfYmVu
Y2htYXJrLmNjCmluZGV4IGI2ZGY5ZTMwOWM0ZjgzNzIzNjhmMDBmMWU0ZTNkNTlhN2E5ZDNlOWQu
LjE0YzYzYjNmYzlmOWUyNDI0NmZmMzM5ZjhhN2VmNGVlMGJkM2I4MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3Mvc3RyX2NhdF9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJf
Y2F0X2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL3N0cl9jYXRfdGVzdC5jYwppbmRleCA1NTVkOGRiM2ViODU0MzhiZTVmOGNjN2Y1OWRkNTUw
N2Q2ZDViYTU0Li4yOWRiOWMwMjM3ODFiMjBiZDVhMTgyNDY5ODgzN2U4MTJmNDc2MTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9jYXRfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMTgsNiArMTgsNyBAQAogCiAjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxzdHJp
bmc+CisjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNs
dWRlICJhYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5oIgpAQCAtMTA2LDExICsxMDcsNyBAQCBURVNU
KFN0ckNhdCwgRW51bXMpIHsKIFRFU1QoU3RyQ2F0LCBCYXNpY3MpIHsKICAgc3RkOjpzdHJpbmcg
cmVzdWx0OwogCi0gIHN0ZDo6c3RyaW5nIHN0cnNbXSA9IHsKLSAgICAiSGVsbG8iLAotICAgICJD
cnVlbCIsCi0gICAgIldvcmxkIgotICB9OworICBzdGQ6OnN0cmluZyBzdHJzW10gPSB7IkhlbGxv
IiwgIkNydWVsIiwgIldvcmxkIn07CiAKICAgc3RkOjpzdHJpbmcgc3Rkc3Ryc1tdID0gewogICAg
ICJzdGQ6OkhlbGxvIiwKQEAgLTE2NCw5ICsxNjEsMTAgQEAgVEVTVChTdHJDYXQsIEJhc2ljcykg
ewogICByZXN1bHQgPSBhYnNsOjpTdHJDYXQodWk2NHNbMF0sICIsICIsIHVpNjRzWzFdLCAiISIp
OwogICBFWFBFQ1RfRVEocmVzdWx0LCAiMTIzNDU2Nzg5MTAsIDEwOTg3NjU0MzIxISIpOwogCi0g
IHN0ZDo6c3RyaW5nIG9uZSA9ICIxIjsgIC8vIEFjdHVhbGx5LCBpdCdzIHRoZSBzaXplIG9mIHRo
aXMgc3RkOjpzdHJpbmcgdGhhdCB3ZSB3YW50OyBhCi0gICAgICAgICAgICAgICAgICAgICAvLyA2
NC1iaXQgYnVpbGQgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHNpemVfdCBhbmQgdWludDY0X3QsCi0g
ICAgICAgICAgICAgICAgICAgICAvLyBldmVuIHRob3VnaCB0aGV5J3JlIGJvdGggdW5zaWduZWQg
NjQtYml0IHZhbHVlcy4KKyAgc3RkOjpzdHJpbmcgb25lID0KKyAgICAgICIxIjsgIC8vIEFjdHVh
bGx5LCBpdCdzIHRoZSBzaXplIG9mIHRoaXMgc3RkOjpzdHJpbmcgdGhhdCB3ZSB3YW50OyBhCisg
ICAgICAgICAgICAvLyA2NC1iaXQgYnVpbGQgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHNpemVfdCBh
bmQgdWludDY0X3QsCisgICAgICAgICAgICAvLyBldmVuIHRob3VnaCB0aGV5J3JlIGJvdGggdW5z
aWduZWQgNjQtYml0IHZhbHVlcy4KICAgcmVzdWx0ID0gYWJzbDo6U3RyQ2F0KCJBbmQgYSAiLCBv
bmUuc2l6ZSgpLCAiIGFuZCBhICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0WzJd
IC0gJnJlc3VsdFswXSwgIiBhbmQgYSAiLCBvbmUsICIgMiAzIDQiLCAiISIpOwogICBFWFBFQ1Rf
RVEocmVzdWx0LCAiQW5kIGEgMSBhbmQgYSAyIGFuZCBhIDEgMiAzIDQhIik7CkBAIC0zMDYsMTEg
KzMwNCw3IEBAIFRFU1QoU3RyQ2F0LCBNYXhBcmdzKSB7CiBURVNUKFN0ckFwcGVuZCwgQmFzaWNz
KSB7CiAgIHN0ZDo6c3RyaW5nIHJlc3VsdCA9ICJleGlzdGluZyB0ZXh0IjsKIAotICBzdGQ6OnN0
cmluZyBzdHJzW10gPSB7Ci0gICAgIkhlbGxvIiwKLSAgICAiQ3J1ZWwiLAotICAgICJXb3JsZCIK
LSAgfTsKKyAgc3RkOjpzdHJpbmcgc3Ryc1tdID0geyJIZWxsbyIsICJDcnVlbCIsICJXb3JsZCJ9
OwogCiAgIHN0ZDo6c3RyaW5nIHN0ZHN0cnNbXSA9IHsKICAgICAic3RkOjpIZWxsbyIsCkBAIC0z
NjUsOSArMzU5LDEwIEBAIFRFU1QoU3RyQXBwZW5kLCBCYXNpY3MpIHsKICAgYWJzbDo6U3RyQXBw
ZW5kKCZyZXN1bHQsIHVpNjRzWzBdLCAiLCAiLCB1aTY0c1sxXSwgIiEiKTsKICAgRVhQRUNUX0VR
KHJlc3VsdC5zdWJzdHIob2xkX3NpemUpLCAiMTIzNDU2Nzg5MTAsIDEwOTg3NjU0MzIxISIpOwog
Ci0gIHN0ZDo6c3RyaW5nIG9uZSA9ICIxIjsgIC8vIEFjdHVhbGx5LCBpdCdzIHRoZSBzaXplIG9m
IHRoaXMgc3RkOjpzdHJpbmcgdGhhdCB3ZSB3YW50OyBhCi0gICAgICAgICAgICAgICAgICAgICAv
LyA2NC1iaXQgYnVpbGQgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHNpemVfdCBhbmQgdWludDY0X3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAvLyBldmVuIHRob3VnaCB0aGV5J3JlIGJvdGggdW5zaWdu
ZWQgNjQtYml0IHZhbHVlcy4KKyAgc3RkOjpzdHJpbmcgb25lID0KKyAgICAgICIxIjsgIC8vIEFj
dHVhbGx5LCBpdCdzIHRoZSBzaXplIG9mIHRoaXMgc3RkOjpzdHJpbmcgdGhhdCB3ZSB3YW50OyBh
CisgICAgICAgICAgICAvLyA2NC1iaXQgYnVpbGQgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHNpemVf
dCBhbmQgdWludDY0X3QsCisgICAgICAgICAgICAvLyBldmVuIHRob3VnaCB0aGV5J3JlIGJvdGgg
dW5zaWduZWQgNjQtYml0IHZhbHVlcy4KICAgb2xkX3NpemUgPSByZXN1bHQuc2l6ZSgpOwogICBh
YnNsOjpTdHJBcHBlbmQoJnJlc3VsdCwgIkFuZCBhICIsIG9uZS5zaXplKCksICIgYW5kIGEgIiwK
ICAgICAgICAgICAgICAgICAgICZyZXN1bHRbMl0gLSAmcmVzdWx0WzBdLCAiIGFuZCBhICIsIG9u
ZSwgIiAyIDMgNCIsICIhIik7CkBAIC00MDEsNiArMzk2LDMyIEBAIFRFU1QoU3RyQXBwZW5kLCBC
YXNpY3MpIHsKICAgICAgICAgICAgICJObyBsaW1pdCB0aGFua3MgdG8gQysrMTEncyB2YXJpYWRp
YyB0ZW1wbGF0ZXMiKTsKIH0KIAorVEVTVChTdHJDYXQsIFZlY3RvckJvb2xSZWZlcmVuY2VUeXBl
cykgeworICBzdGQ6OnZlY3Rvcjxib29sPiB2OworICB2LnB1c2hfYmFjayh0cnVlKTsKKyAgdi5w
dXNoX2JhY2soZmFsc2UpOworICBzdGQ6OnZlY3Rvcjxib29sPiBjb25zdCYgY3YgPSB2OworICAv
LyBUZXN0IHRoYXQgdmVjdG9yPGJvb2w+OjpyZWZlcmVuY2UgYW5kIHZlY3Rvcjxib29sPjo6Y29u
c3RfcmVmZXJlbmNlCisgIC8vIGFyZSBoYW5kbGVkIGFzIGlmIHRoZSB3ZXJlIHJlYWxseSBib29s
IHR5cGVzIGFuZCBub3QgdGhlIHByb3h5IHR5cGVzCisgIC8vIHRoZXkgcmVhbGx5IGFyZS4KKyAg
c3RkOjpzdHJpbmcgcmVzdWx0ID0gYWJzbDo6U3RyQ2F0KHZbMF0sIHZbMV0sIGN2WzBdLCBjdlsx
XSk7IC8vIE5PTElOVAorICBFWFBFQ1RfRVEocmVzdWx0LCAiMTAxMCIpOworfQorCisvLyBQYXNz
aW5nIG51bGxwdHIgdG8gbWVtY3B5IGlzIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgdGhpcyB0ZXN0
CisvLyBwcm92aWRlcyBjb3ZlcmFnZSBvZiBjb2RlcGF0aHMgdGhhdCBoYW5kbGUgZW1wdHkgc3Ry
aW5ncyB3aXRoIG51bGxwdHJzLgorVEVTVChTdHJDYXQsIEF2b2lkc01lbWNweVdpdGhOdWxscHRy
KSB7CisgIEVYUEVDVF9FUShhYnNsOjpTdHJDYXQoNDIsIGFic2w6OnN0cmluZ192aWV3e30pLCAi
NDIiKTsKKworICAvLyBDb3ZlciBDYXRQaWVjZXMgY29kZS4KKyAgRVhQRUNUX0VRKGFic2w6OlN0
ckNhdCgxLCAyLCAzLCA0LCA1LCBhYnNsOjpzdHJpbmdfdmlld3t9KSwgIjEyMzQ1Iik7CisKKyAg
Ly8gQ292ZXIgQXBwZW5kUGllY2VzLgorICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgIGFic2w6OlN0
ckFwcGVuZCgmcmVzdWx0LCAxLCAyLCAzLCA0LCA1LCBhYnNsOjpzdHJpbmdfdmlld3t9KTsKKyAg
RVhQRUNUX0VRKHJlc3VsdCwgIjEyMzQ1Iik7Cit9CisKICNpZmRlZiBHVEVTVF9IQVNfREVBVEhf
VEVTVAogVEVTVChTdHJBcHBlbmQsIERlYXRoKSB7CiAgIHN0ZDo6c3RyaW5nIHMgPSAic2VsZiI7
CkBAIC00MjcsNyArNDQ4LDcgQEAgdm9pZCBDaGVja0hleChJbnRUeXBlIHYsIGNvbnN0IGNoYXIq
IG5vcGFkX2Zvcm1hdCwgY29uc3QgY2hhciogemVyb3BhZF9mb3JtYXQsCiAgIHNucHJpbnRmKGV4
cGVjdGVkLCBzaXplb2YoZXhwZWN0ZWQpLCBub3BhZF9mb3JtYXQsIHYpOwogICBFWFBFQ1RfRVEo
ZXhwZWN0ZWQsIGFjdHVhbCkgPDwgIiBkZWNpbWFsIHZhbHVlICIgPDwgdjsKIAotICBmb3IgKGlu
dCBzcGVjID0gYWJzbDo6a1plcm9QYWQyOyBzcGVjIDw9IGFic2w6OmtaZXJvUGFkMTY7ICsrc3Bl
YykgeworICBmb3IgKGludCBzcGVjID0gYWJzbDo6a1plcm9QYWQyOyBzcGVjIDw9IGFic2w6Omta
ZXJvUGFkMjA7ICsrc3BlYykgewogICAgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9CiAgICAgICAgIGFi
c2w6OlN0ckNhdChhYnNsOjpIZXgodiwgc3RhdGljX2Nhc3Q8YWJzbDo6UGFkU3BlYz4oc3BlYykp
KTsKICAgICBzbnByaW50ZihleHBlY3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSwgemVyb3BhZF9mb3Jt
YXQsCkBAIC00MzUsNyArNDU2LDcgQEAgdm9pZCBDaGVja0hleChJbnRUeXBlIHYsIGNvbnN0IGNo
YXIqIG5vcGFkX2Zvcm1hdCwgY29uc3QgY2hhciogemVyb3BhZF9mb3JtYXQsCiAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkLCBhY3R1YWwpIDw8ICIgZGVjaW1hbCB2YWx1ZSAiIDw8IHY7CiAgIH0KIAot
ICBmb3IgKGludCBzcGVjID0gYWJzbDo6a1NwYWNlUGFkMjsgc3BlYyA8PSBhYnNsOjprU3BhY2VQ
YWQxNjsgKytzcGVjKSB7CisgIGZvciAoaW50IHNwZWMgPSBhYnNsOjprU3BhY2VQYWQyOyBzcGVj
IDw9IGFic2w6OmtTcGFjZVBhZDIwOyArK3NwZWMpIHsKICAgICBzdGQ6OnN0cmluZyBhY3R1YWwg
PQogICAgICAgICBhYnNsOjpTdHJDYXQoYWJzbDo6SGV4KHYsIHN0YXRpY19jYXN0PGFic2w6OlBh
ZFNwZWM+KHNwZWMpKSk7CiAgICAgc25wcmludGYoZXhwZWN0ZWQsIHNpemVvZihleHBlY3RlZCks
IHNwYWNlcGFkX2Zvcm1hdCwKQEAgLTQ1Myw3ICs0NzQsNyBAQCB2b2lkIENoZWNrRGVjKEludFR5
cGUgdiwgY29uc3QgY2hhciogbm9wYWRfZm9ybWF0LCBjb25zdCBjaGFyKiB6ZXJvcGFkX2Zvcm1h
dCwKICAgc25wcmludGYoZXhwZWN0ZWQsIHNpemVvZihleHBlY3RlZCksIG5vcGFkX2Zvcm1hdCwg
dik7CiAgIEVYUEVDVF9FUShleHBlY3RlZCwgYWN0dWFsKSA8PCAiIGRlY2ltYWwgdmFsdWUgIiA8
PCB2OwogCi0gIGZvciAoaW50IHNwZWMgPSBhYnNsOjprWmVyb1BhZDI7IHNwZWMgPD0gYWJzbDo6
a1plcm9QYWQxNjsgKytzcGVjKSB7CisgIGZvciAoaW50IHNwZWMgPSBhYnNsOjprWmVyb1BhZDI7
IHNwZWMgPD0gYWJzbDo6a1plcm9QYWQyMDsgKytzcGVjKSB7CiAgICAgc3RkOjpzdHJpbmcgYWN0
dWFsID0KICAgICAgICAgYWJzbDo6U3RyQ2F0KGFic2w6OkRlYyh2LCBzdGF0aWNfY2FzdDxhYnNs
OjpQYWRTcGVjPihzcGVjKSkpOwogICAgIHNucHJpbnRmKGV4cGVjdGVkLCBzaXplb2YoZXhwZWN0
ZWQpLCB6ZXJvcGFkX2Zvcm1hdCwKQEAgLTQ2Myw3ICs0ODQsNyBAQCB2b2lkIENoZWNrRGVjKElu
dFR5cGUgdiwgY29uc3QgY2hhciogbm9wYWRfZm9ybWF0LCBjb25zdCBjaGFyKiB6ZXJvcGFkX2Zv
cm1hdCwKICAgICAgICAgPDwgIicgZGlnaXRzICIgPDwgKHNwZWMgLSBhYnNsOjprWmVyb1BhZDIg
KyAyKTsKICAgfQogCi0gIGZvciAoaW50IHNwZWMgPSBhYnNsOjprU3BhY2VQYWQyOyBzcGVjIDw9
IGFic2w6OmtTcGFjZVBhZDE2OyArK3NwZWMpIHsKKyAgZm9yIChpbnQgc3BlYyA9IGFic2w6OmtT
cGFjZVBhZDI7IHNwZWMgPD0gYWJzbDo6a1NwYWNlUGFkMjA7ICsrc3BlYykgewogICAgIHN0ZDo6
c3RyaW5nIGFjdHVhbCA9CiAgICAgICAgIGFic2w6OlN0ckNhdChhYnNsOjpEZWModiwgc3RhdGlj
X2Nhc3Q8YWJzbDo6UGFkU3BlYz4oc3BlYykpKTsKICAgICBzbnByaW50ZihleHBlY3RlZCwgc2l6
ZW9mKGV4cGVjdGVkKSwgc3BhY2VwYWRfZm9ybWF0LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJfZm9ybWF0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaAppbmRleCAyZDA3NzI1
ZGUyMWZjZjc5MDY5NTBmMDJkMjA2MTViNWFkMTA5OGFkLi42MDdlMmJjYWFlMTYzY2VmNWE2N2U0
YTM4MTYxZWUyYzAzMTdkNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAg
IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjAsMTEgKzIwLDEzIEBACiAvLyBUaGUgYHN0cl9mb3Jt
YXRgIGxpYnJhcnkgaXMgYSB0eXBlc2FmZSByZXBsYWNlbWVudCBmb3IgdGhlIGZhbWlseSBvZgog
Ly8gYHByaW50ZigpYCBzdHJpbmcgZm9ybWF0dGluZyByb3V0aW5lcyB3aXRoaW4gdGhlIGA8Y3N0
ZGlvPmAgc3RhbmRhcmQgbGlicmFyeQogLy8gaGVhZGVyLiBMaWtlIHRoZSBgcHJpbnRmYCBmYW1p
bHksIHRoZSBgc3RyX2Zvcm1hdGAgdXNlcyBhICJmb3JtYXQgc3RyaW5nIiB0bwotLy8gcGVyZm9y
bSBhcmd1bWVudCBzdWJzdGl0dXRpb25zIGJhc2VkIG9uIHR5cGVzLgorLy8gcGVyZm9ybSBhcmd1
bWVudCBzdWJzdGl0dXRpb25zIGJhc2VkIG9uIHR5cGVzLiBTZWUgdGhlIGBGb3JtYXRTcGVjYCBz
ZWN0aW9uCisvLyBiZWxvdyBmb3IgZm9ybWF0IHN0cmluZyBkb2N1bWVudGF0aW9uLgogLy8KIC8v
IEV4YW1wbGU6CiAvLwotLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckZvcm1hdCgiJXMgJXMgWW91
IGhhdmUgJCVkISIsICJIZWxsbyIsIG5hbWUsIGRvbGxhcnMpOworLy8gICBzdGQ6OnN0cmluZyBz
ID0gYWJzbDo6U3RyRm9ybWF0KAorLy8gICAgICAgICAgICAgICAgICAgICAgIiVzICVzIFlvdSBo
YXZlICQlZCEiLCAiSGVsbG8iLCBuYW1lLCBkb2xsYXJzKTsKIC8vCiAvLyBUaGUgbGlicmFyeSBj
b25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIGJhc2ljIHV0aWxpdGllczoKIC8vCkBAIC00OSw3ICs1
MSw3IEBACiAvLyAgICogQSBgUGFyc2VkRm9ybWF0YCBpbnN0YW5jZSwgd2hpY2ggZW5jYXBzdWxh
dGVzIGEgc3BlY2lmaWMsIHByZS1jb21waWxlZAogLy8gICAgIGZvcm1hdCBzdHJpbmcgZm9yIGEg
c3BlY2lmaWMgc2V0IG9mIHR5cGUocyksIGFuZCB3aGljaCBjYW4gYmUgcGFzc2VkCiAvLyAgICAg
YmV0d2VlbiBBUEkgYm91bmRhcmllcy4gKFRoZSBgRm9ybWF0U3BlY2AgdHlwZSBzaG91bGQgbm90
IGJlIHVzZWQKLS8vICAgICBkaXJlY3RseS4pCisvLyAgICAgZGlyZWN0bHkgZXhjZXB0IGFzIGFu
IGFyZ3VtZW50IHR5cGUgZm9yIHdyYXBwZXIgZnVuY3Rpb25zLikKIC8vCiAvLyBUaGUgYHN0cl9m
b3JtYXRgIGxpYnJhcnkgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gb3V0cHV0IGl0cyBmb3JtYXQg
c3RyaW5ncyB0bwogLy8gYXJiaXRyYXJ5IHNpbmsgdHlwZXM6CkBAIC02Niw2ICs2OCw3IEBACiAv
LyBJbiBhZGRpdGlvbiwgdGhlIGBzdHJfZm9ybWF0YCBsaWJyYXJ5IHByb3ZpZGVzIGV4dGVuc2lv
biBwb2ludHMgZm9yCiAvLyBhdWdtZW50aW5nIGZvcm1hdHRpbmcgdG8gbmV3IHR5cGVzLiBUaGVz
ZSBleHRlbnNpb25zIGFyZSBmdWxseSBkb2N1bWVudGVkCiAvLyB3aXRoaW4gdGhlIGBzdHJfZm9y
bWF0X2V4dGVuc2lvbi5oYCBoZWFkZXIgZmlsZS4KKwogI2lmbmRlZiBBQlNMX1NUUklOR1NfU1RS
X0ZPUk1BVF9IXwogI2RlZmluZSBBQlNMX1NUUklOR1NfU1RSX0ZPUk1BVF9IXwogCkBAIC04OSw3
ICs5Miw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIEV4YW1wbGU6CiAvLwogLy8gICBhYnNsOjpV
bnR5cGVkRm9ybWF0U3BlYyBmb3JtYXQoIiVkIik7Ci0vLyAgIHN0cmluZyBvdXQ7CisvLyAgIHN0
ZDo6c3RyaW5nIG91dDsKIC8vICAgQ0hFQ0soYWJzbDo6Rm9ybWF0VW50eXBlZCgmb3V0LCBmb3Jt
YXQsIHthYnNsOjpGb3JtYXRBcmcoMSl9KSk7CiBjbGFzcyBVbnR5cGVkRm9ybWF0U3BlYyB7CiAg
cHVibGljOgpAQCAtMTM1LDggKzEzOCw4IEBAIHN0cl9mb3JtYXRfaW50ZXJuYWw6OlN0cmVhbWVk
V3JhcHBlcjxUPiBGb3JtYXRTdHJlYW1lZChjb25zdCBUJiB2KSB7CiAvLyBFeGFtcGxlOgogLy8K
IC8vICAgaW50IG4gPSAwOwotLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckZvcm1hdCgiJXMlZCVu
IiwgImhlbGxvIiwgMTIzLAotLy8gICAgICAgICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q291bnRD
YXB0dXJlKCZuKSk7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoIiVzJWQl
biIsICJoZWxsbyIsIDEyMywKKy8vICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpGb3JtYXRD
b3VudENhcHR1cmUoJm4pKTsKIC8vICAgRVhQRUNUX0VRKDgsIG4pOwogY2xhc3MgRm9ybWF0Q291
bnRDYXB0dXJlIHsKICBwdWJsaWM6CkBAIC0xNTYsMTAgKzE1OSwxNSBAQCBjbGFzcyBGb3JtYXRD
b3VudENhcHR1cmUgewogLy8gRm9ybWF0U3BlYwogLy8KIC8vIFRoZSBgRm9ybWF0U3BlY2AgdHlw
ZSBkZWZpbmVzIHRoZSBtYWtldXAgb2YgYSBmb3JtYXQgc3RyaW5nIHdpdGhpbiB0aGUKLS8vIGBz
dHJfZm9ybWF0YCBsaWJyYXJ5LiBZb3Ugc2hvdWxkIG5vdCBuZWVkIHRvIHVzZSBvciBtYW5pcHVs
YXRlIHRoaXMgdHlwZQotLy8gZGlyZWN0bHkuIEEgYEZvcm1hdFNwZWNgIGlzIGEgdmFyaWFkaWMg
Y2xhc3MgdGVtcGxhdGUgdGhhdCBpcyBldmFsdWF0ZWQgYXQKLS8vIGNvbXBpbGUtdGltZSwgYWNj
b3JkaW5nIHRvIHRoZSBmb3JtYXQgc3RyaW5nIGFuZCBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2Vk
Ci0vLyB0byBpdC4KKy8vIGBzdHJfZm9ybWF0YCBsaWJyYXJ5LiBJdCBpcyBhIHZhcmlhZGljIGNs
YXNzIHRlbXBsYXRlIHRoYXQgaXMgZXZhbHVhdGVkIGF0CisvLyBjb21waWxlLXRpbWUsIGFjY29y
ZGluZyB0byB0aGUgZm9ybWF0IHN0cmluZyBhbmQgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3NlZCB0
bworLy8gaXQuCisvLworLy8gWW91IHNob3VsZCBub3QgbmVlZCB0byBtYW5pcHVsYXRlIHRoaXMg
dHlwZSBkaXJlY3RseS4gWW91IHNob3VsZCBvbmx5IG5hbWUgaXQKKy8vIGlmIHlvdSBhcmUgd3Jp
dGluZyB3cmFwcGVyIGZ1bmN0aW9ucyB3aGljaCBhY2NlcHQgZm9ybWF0IGFyZ3VtZW50cyB0aGF0
IHdpbGwKKy8vIGJlIHByb3ZpZGVkIHVubW9kaWZpZWQgdG8gZnVuY3Rpb25zIGluIHRoaXMgbGli
cmFyeS4gU3VjaCBhIHdyYXBwZXIgZnVuY3Rpb24KKy8vIG1pZ2h0IGJlIGEgY2xhc3MgbWV0aG9k
IHRoYXQgcHJvdmlkZXMgZm9ybWF0IGFyZ3VtZW50cyBhbmQvb3IgaW50ZXJuYWxseSB1c2VzCisv
LyB0aGUgcmVzdWx0IG9mIGZvcm1hdHRpbmcuCiAvLwogLy8gRm9yIGEgYEZvcm1hdFNwZWNgIHRv
IGJlIHZhbGlkIGF0IGNvbXBpbGUtdGltZSwgaXQgbXVzdCBiZSBwcm92aWRlZCBhcwogLy8gZWl0
aGVyOgpAQCAtMTg2LDcgKzE5NCw3IEBAIGNsYXNzIEZvcm1hdENvdW50Q2FwdHVyZSB7CiAvLyBB
IGZvcm1hdCBzdHJpbmcgZ2VuZXJhbGx5IGZvbGxvd3MgdGhlIFBPU0lYIHN5bnRheCBhcyB1c2Vk
IHdpdGhpbiB0aGUgUE9TSVgKIC8vIGBwcmludGZgIHNwZWNpZmljYXRpb24uCiAvLwotLy8gKFNl
ZSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRp
ZXMvcHJpbnRmLmh0bWwuKQorLy8gKFNlZSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGlu
ZXB1YnMvOTY5OTkxOTc5OS9mdW5jdGlvbnMvZnByaW50Zi5odG1sLikKIC8vCiAvLyBJbiBzcGVj
aWZpYywgdGhlIGBGb3JtYXRTcGVjYCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHR5cGUgc3BlY2lm
aWVyczoKIC8vICAgKiBgY2AgZm9yIGNoYXJhY3RlcnMKQEAgLTIwNSw2ICsyMTMsMTEgQEAgY2xh
c3MgRm9ybWF0Q291bnRDYXB0dXJlIHsKIC8vICAgICB3cml0dGVuIHRvIHRoaXMgcG9pbnQuIFRo
ZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBjYXB0dXJlZCB3aXRoaW4gYW4KIC8vICAgICBgYWJz
bDo6Rm9ybWF0Q291bnRDYXB0dXJlYCB0eXBlLgogLy8KKy8vIEltcGxlbWVudGF0aW9uLWRlZmlu
ZWQgYmVoYXZpb3I6CisvLyAgICogQSBudWxsIHBvaW50ZXIgcHJvdmlkZWQgdG8gIiVzIiBvciAi
JXAiIGlzIG91dHB1dCBhcyAiKG5pbCkiLgorLy8gICAqIEEgbm9uLW51bGwgcG9pbnRlciBwcm92
aWRlZCB0byAiJXAiIGlzIG91dHB1dCBpbiBoZXggYXMgaWYgYnkgJSN4IG9yCisvLyAgICAgJSNs
eC4KKy8vCiAvLyBOT1RFOiBgb2AsIGB4XFhgIGFuZCBgdWAgd2lsbCBjb252ZXJ0IHNpZ25lZCB2
YWx1ZXMgdG8gdGhlaXIgdW5zaWduZWQKIC8vIGNvdW50ZXJwYXJ0IGJlZm9yZSBmb3JtYXR0aW5n
LgogLy8KQEAgLTIyMCwxMCArMjMzLDEwIEBAIGNsYXNzIEZvcm1hdENvdW50Q2FwdHVyZSB7CiAv
LyAgICAgIiVlIiwgLjAxICAgICAgICAgICAgICAgIC0+ICIxLjAwMDAwZS0yIgogLy8gICAgICIl
YSIsIC0zLjAgICAgICAgICAgICAgICAtPiAiLTB4MS44cCsxIgogLy8gICAgICIlZyIsIC4wMSAg
ICAgICAgICAgICAgICAtPiAiMWUtMiIKLS8vICAgICAiJXAiLCAqaW50ICAgICAgICAgICAgICAg
LT4gIjB4N2ZmZGViNmFkMmE0IgorLy8gICAgICIlcCIsICh2b2lkKikmdmFsdWUgICAgICAtPiAi
MHg3ZmZkZWI2YWQyYTQiCiAvLwogLy8gICAgIGludCBuID0gMDsKLS8vICAgICBzdHJpbmcgcyA9
IGFic2w6OlN0ckZvcm1hdCgKKy8vICAgICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0
KAogLy8gICAgICAgICAiJXMlZCVuIiwgImhlbGxvIiwgMTIzLCBhYnNsOjpGb3JtYXRDb3VudENh
cHR1cmUoJm4pKTsKIC8vICAgICBFWFBFQ1RfRVEoOCwgbik7CiAvLwpAQCAtMjkwLDE0ICszMDMs
MTQgQEAgdXNpbmcgUGFyc2VkRm9ybWF0ID0gc3RyX2Zvcm1hdF9pbnRlcm5hbDo6RXh0ZW5kZWRQ
YXJzZWRGb3JtYXQ8CiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIHN0cmluZyBzID0gYWJzbDo6
U3RyRm9ybWF0KAorLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KAogLy8gICAg
ICAgIldlbGNvbWUgdG8gJXMsIE51bWJlciAlZCEiLCAiVGhlIFZpbGxhZ2UiLCA2KTsKIC8vICAg
RVhQRUNUX0VRKCJXZWxjb21lIHRvIFRoZSBWaWxsYWdlLCBOdW1iZXIgNiEiLCBzKTsKIC8vCiAv
LyBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpbiBjYXNlIG9mIGVycm9yLgogdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+CiBBQlNMX01VU1RfVVNFX1JFU1VMVCBzdGQ6OnN0cmluZyBTdHJGb3Jt
YXQoY29uc3QgRm9ybWF0U3BlYzxBcmdzLi4uPiYgZm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBcmdzJi4uLiBhcmdzKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXJncyYuLi4gYXJncykgewogICBy
ZXR1cm4gc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Rm9ybWF0UGFjaygKICAgICAgIHN0cl9mb3JtYXRf
aW50ZXJuYWw6OlVudHlwZWRGb3JtYXRTcGVjSW1wbDo6RXh0cmFjdChmb3JtYXQpLAogICAgICAg
e3N0cl9mb3JtYXRfaW50ZXJuYWw6OkZvcm1hdEFyZ0ltcGwoYXJncykuLi59KTsKQEAgLTMxMSwx
MSArMzI0LDEyIEBAIEFCU0xfTVVTVF9VU0VfUkVTVUxUIHN0ZDo6c3RyaW5nIFN0ckZvcm1hdChj
b25zdCBGb3JtYXRTcGVjPEFyZ3MuLi4+JiBmb3JtYXQsCiAvLwogLy8gRXhhbXBsZToKIC8vCi0v
LyAgIHN0cmluZyBvcmlnKCJGb3IgZXhhbXBsZSBQSSBpcyBhcHByb3hpbWF0ZWx5ICIpOworLy8g
ICBzdGQ6OnN0cmluZyBvcmlnKCJGb3IgZXhhbXBsZSBQSSBpcyBhcHByb3hpbWF0ZWx5ICIpOwog
Ly8gICBzdGQ6OmNvdXQgPDwgU3RyQXBwZW5kRm9ybWF0KCZvcmlnLCAiJTEyLjZmIiwgMy4xNCk7
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLXN0ZDo6c3RyaW5nJiBTdHJBcHBlbmRGb3Jt
YXQoc3RkOjpzdHJpbmcqIGRzdCwgY29uc3QgRm9ybWF0U3BlYzxBcmdzLi4uPiYgZm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXJncyYuLi4gYXJncykgeworc3RkOjpzdHJp
bmcmIFN0ckFwcGVuZEZvcm1hdChzdGQ6OnN0cmluZyogZHN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGb3JtYXRTcGVjPEFyZ3MuLi4+JiBmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKICAgcmV0dXJuIHN0cl9m
b3JtYXRfaW50ZXJuYWw6OkFwcGVuZFBhY2soCiAgICAgICBkc3QsIHN0cl9mb3JtYXRfaW50ZXJu
YWw6OlVudHlwZWRGb3JtYXRTcGVjSW1wbDo6RXh0cmFjdChmb3JtYXQpLAogICAgICAge3N0cl9m
b3JtYXRfaW50ZXJuYWw6OkZvcm1hdEFyZ0ltcGwoYXJncykuLi59KTsKQEAgLTQzNCw3ICs0NDgs
OCBAQCBjbGFzcyBGb3JtYXRSYXdTaW5rIHsKIC8vIGBhYnNsOjpGb3JtYXRSYXdTaW5rYCBpbnRl
cmZhY2UpLCB1c2luZyBhIGZvcm1hdCBzdHJpbmcgYW5kIHplcm8gb3IgbW9yZQogLy8gYWRkaXRp
b25hbCBhcmd1bWVudHMuCiAvLwotLy8gQnkgZGVmYXVsdCwgYHN0cmluZ2AgYW5kIGBzdGQ6Om9z
dHJlYW1gIGFyZSBzdXBwb3J0ZWQgYXMgZGVzdGluYXRpb24gb2JqZWN0cy4KKy8vIEJ5IGRlZmF1
bHQsIGBzdGQ6OnN0cmluZ2AgYW5kIGBzdGQ6Om9zdHJlYW1gIGFyZSBzdXBwb3J0ZWQgYXMgZGVz
dGluYXRpb24KKy8vIG9iamVjdHMuIElmIGEgYHN0ZDo6c3RyaW5nYCBpcyB1c2VkIHRoZSBmb3Jt
YXR0ZWQgc3RyaW5nIGlzIGFwcGVuZGVkIHRvIGl0LgogLy8KIC8vIGBhYnNsOjpGb3JtYXQoKWAg
aXMgYSBnZW5lcmljIHZlcnNpb24gb2YgYGFic2w6OlN0ckZvcm1hdCgpLCBmb3IgY3VzdG9tCiAv
LyBzaW5rcy4gVGhlIGZvcm1hdCBzdHJpbmcsIGxpa2UgZm9ybWF0IHN0cmluZ3MgZm9yIGBTdHJG
b3JtYXQoKWAsIGlzIGNoZWNrZWQKQEAgLTQ4Myw5ICs0OTgsMTAgQEAgdXNpbmcgRm9ybWF0QXJn
ID0gc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Rm9ybWF0QXJnSW1wbDsKIC8vCiAvLyBFeGFtcGxlOgog
Ly8KLS8vICAgc3RkOjpvcHRpb25hbDxzdHJpbmc+IEZvcm1hdER5bmFtaWMoY29uc3Qgc3RyaW5n
JiBpbl9mb3JtYXQsCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZlY3RvcjxzdHJpbmc+JiBpbl9hcmdzKSB7Ci0vLyAgICAgc3RyaW5nIG91dDsKKy8vICAg
c3RkOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gRm9ybWF0RHluYW1pYygKKy8vICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBpbl9mb3JtYXQsCisvLyAgICAgICBjb25zdCB2ZWN0b3I8c3RkOjpzdHJp
bmc+JiBpbl9hcmdzKSB7CisvLyAgICAgc3RkOjpzdHJpbmcgb3V0OwogLy8gICAgIHN0ZDo6dmVj
dG9yPGFic2w6OkZvcm1hdEFyZz4gYXJnczsKIC8vICAgICBmb3IgKGNvbnN0IGF1dG8mIHYgOiBp
bl9hcmdzKSB7CiAvLyAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdGhhdCAndicgaXMgYSByZWZl
cmVuY2UgdG8gdGhlIG9iamVjdHMgaW4gaW5fYXJncy4KQEAgLTUwOSw0ICs1MjUsNSBAQCBBQlNM
X01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgYm9vbCBGb3JtYXRVbnR5cGVkKAogfQogCiB9ICAvLyBu
YW1lc3BhY2UgYWJzbAorCiAjZW5kaWYgIC8vIEFCU0xfU1RSSU5HU19TVFJfRk9STUFUX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXRfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyX2Zvcm1hdF90ZXN0LmNjCmluZGV4IGFhMTRlMjExNzA5YWI3MzkzNzk2YTMyMDgzMGM3
NTU5MTZhY2M4ODMuLmNmZDgxYmIzNGJlMzcxNWUzMzUyZmZhN2Q3ZmRjZTQ4NWMzYmNlZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3Mvc3RyX2Zvcm1hdF90ZXN0LmNjCkBAIC0xMyw3ICsxMyw3IEBAIG5hbWVzcGFjZSBhYnNs
IHsKIG5hbWVzcGFjZSB7CiB1c2luZyBzdHJfZm9ybWF0X2ludGVybmFsOjpGb3JtYXRBcmdJbXBs
OwogCi1jbGFzcyBGb3JtYXRFbnRyeVBvaW50VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
eyB9OwordXNpbmcgRm9ybWF0RW50cnlQb2ludFRlc3QgPSA6OnRlc3Rpbmc6OlRlc3Q7CiAKIFRF
U1RfRihGb3JtYXRFbnRyeVBvaW50VGVzdCwgRm9ybWF0KSB7CiAgIHN0ZDo6c3RyaW5nIHNpbms7
CkBAIC0zMCw4ICszMCw4IEBAIFRFU1RfRihGb3JtYXRFbnRyeVBvaW50VGVzdCwgVW50eXBlZEZv
cm1hdCkgewogICAgICIiLAogICAgICJhIiwKICAgICAiJTgwZCIsCi0jaWYgIWRlZmluZWQoX01T
Q19WRVIpICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQotICAgIC8vIE1TVkMgYW5kIEFuZHJvaWQg
ZG9uJ3Qgc3VwcG9ydCBwb3NpdGlvbmFsIHN5bnRheC4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikg
JiYgIWRlZmluZWQoX19BTkRST0lEX18pICYmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQor
ICAgIC8vIE1TVkMsIE5hQ0wgYW5kIEFuZHJvaWQgZG9uJ3Qgc3VwcG9ydCBwb3NpdGlvbmFsIHN5
bnRheC4KICAgICAiY29tcGxpY2F0ZWQgbXVsdGlwYXJ0ICUlICUxJGQgZm9ybWF0ICUxJDA5OTlk
IiwKICNlbmRpZiAgLy8gX01TQ19WRVIKICAgfTsKQEAgLTE1MywxNyArMTUzLDIwIEBAIFRFU1Rf
RihGb3JtYXRFbnRyeVBvaW50VGVzdCwgU3RyZWFtKSB7CiAgICAgIiIsCiAgICAgImEiLAogICAg
ICIlODBkIiwKLSNpZiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19BTkRST0lEX18p
Ci0gICAgLy8gTVNWQyBkb2Vzbid0IHN1cHBvcnQgcG9zaXRpb25hbCBzeW50YXguCisgICAgIiVk
ICV1ICVjICVzICVmICVnIiwKKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19B
TkRST0lEX18pICYmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQorICAgIC8vIE1TVkMsIE5h
Q0wgYW5kIEFuZHJvaWQgZG9uJ3Qgc3VwcG9ydCBwb3NpdGlvbmFsIHN5bnRheC4KICAgICAiY29t
cGxpY2F0ZWQgbXVsdGlwYXJ0ICUlICUxJGQgZm9ybWF0ICUxJDA4MGQiLAogI2VuZGlmICAvLyBf
TVNDX1ZFUgogICB9OwogICBzdGQ6OnN0cmluZyBidWYoNDA5NiwgJ1wwJyk7CiAgIGZvciAoY29u
c3QgYXV0byYgZm10IDogZm9ybWF0cykgewotICAgIGNvbnN0IGF1dG8gcGFyc2VkID0gUGFyc2Vk
Rm9ybWF0PCdkJz46Ok5ld0FsbG93SWdub3JlZChmbXQpOworICAgIGNvbnN0IGF1dG8gcGFyc2Vk
ID0KKyAgICAgICAgUGFyc2VkRm9ybWF0PCdkJywgJ3UnLCAnYycsICdzJywgJ2YnLCAnZyc+OjpO
ZXdBbGxvd0lnbm9yZWQoZm10KTsKICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gb3NzOwotICAgIG9z
cyA8PCBTdHJlYW1Gb3JtYXQoKnBhcnNlZCwgMTIzKTsKLSAgICBpbnQgZm10X3Jlc3VsdCA9IHNu
cHJpbnRmKCYqYnVmLmJlZ2luKCksIGJ1Zi5zaXplKCksIGZtdC5jX3N0cigpLCAxMjMpOworICAg
IG9zcyA8PCBTdHJlYW1Gb3JtYXQoKnBhcnNlZCwgMTIzLCAzLCA0OSwgIm11bHRpc3RyZWFtaW5n
ISEhIiwgMS4wMSwgMS4wMSk7CisgICAgaW50IGZtdF9yZXN1bHQgPSBzbnByaW50ZigmKmJ1Zi5i
ZWdpbigpLCBidWYuc2l6ZSgpLCBmbXQuY19zdHIoKSwgIC8vCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMjMsIDMsIDQ5LCAibXVsdGlzdHJlYW1pbmchISEiLCAxLjAxLCAxLjAx
KTsKICAgICBBU1NFUlRfVFJVRShvc3MpIDw8IGZtdDsKICAgICBBU1NFUlRfVFJVRShmbXRfcmVz
dWx0ID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihmbXRfcmVzdWx0KSA8IGJ1Zi5zaXplKCkp
CiAgICAgICAgIDw8IGZtdF9yZXN1bHQ7CkBAIC0yNDIsNiArMjQ1LDcgQEAgY2xhc3MgVGVtcEZp
bGUgewogICBzdGQ6OnN0cmluZyBSZWFkRmlsZSgpIHsKICAgICBzdGQ6OmZzZWVrKGZpbGVfLCAw
LCBTRUVLX0VORCk7CiAgICAgaW50IHNpemUgPSBzdGQ6OmZ0ZWxsKGZpbGVfKTsKKyAgICBFWFBF
Q1RfR1Qoc2l6ZSwgMCk7CiAgICAgc3RkOjpyZXdpbmQoZmlsZV8pOwogICAgIHN0ZDo6c3RyaW5n
IHN0cigyICogc2l6ZSwgJyAnKTsKICAgICBpbnQgcmVhZF9ieXRlcyA9IHN0ZDo6ZnJlYWQoJnN0
clswXSwgMSwgc3RyLnNpemUoKSwgZmlsZV8pOwpAQCAtMjcwLDcgKzI3NCw3IEBAIFRFU1RfRihG
b3JtYXRFbnRyeVBvaW50VGVzdCwgRlByaW50RkVycm9yKSB7CiAgIEVYUEVDVF9FUShlcnJubywg
RUJBREYpOwogfQogCi0jaWYgX19HTlVDX18KKyNpZmRlZiBfX0dMSUJDX18KIFRFU1RfRihGb3Jt
YXRFbnRyeVBvaW50VGVzdCwgRnByaW50ZlRvb0xhcmdlKSB7CiAgIHN0ZDo6RklMRSogZiA9IHN0
ZDo6Zm9wZW4oIi9kZXYvbnVsbCIsICJ3Iik7CiAgIGludCB3aWR0aCA9IDIwMDAwMDAwMDA7CkBA
IC0yOTcsNyArMzAxLDcgQEAgVEVTVF9GKEZvcm1hdEVudHJ5UG9pbnRUZXN0LCBQcmludEYpIHsK
ICAgRVhQRUNUX0VRKHJlc3VsdCwgMzApOwogICBFWFBFQ1RfRVEodG1wLlJlYWRGaWxlKCksICJT
VFJJTkc6IEFCQyBOVU1CRVI6IC0wMDAwMDAwMTkiKTsKIH0KLSNlbmRpZiAgLy8gX19HTlVDX18K
KyNlbmRpZiAgLy8gX19HTElCQ19fCiAKIFRFU1RfRihGb3JtYXRFbnRyeVBvaW50VGVzdCwgU05Q
cmludEYpIHsKICAgY2hhciBidWZmZXJbMTZdOwpAQCAtMzQwLDcgKzM0NCw3IEBAIFRFU1QoU3Ry
Rm9ybWF0LCBCZWhhdmVzQXNEb2N1bWVudGVkKSB7CiAgIEVYUEVDVF9FUShTdHJGb3JtYXQoIiVj
IiwgaW50eydhJ30pLCAiYSIpOwogICBFWFBFQ1RfRVEoU3RyRm9ybWF0KCIlYyIsIGxvbmd7J2En
fSksICJhIik7ICAvLyBOT0xJTlQKICAgRVhQRUNUX0VRKFN0ckZvcm1hdCgiJWMiLCB1aW50NjRf
dHsnYSd9KSwgImEiKTsKLSAgLy8gICAgICJzIiAtIHN0ZDo6c3RyaW5nICAgICAgICAgICAgICAg
ICAgRWc6ICJDIiAtPiAiQyIsIHN0ZDo6c3RyaW5nKCJDKysiKSAtPiAiQysrIgorICAvLyAgICAg
InMiIC0gc3RkOjpzdHJpbmcgICAgICAgRWc6ICJDIiAtPiAiQyIsIHN0ZDo6c3RyaW5nKCJDKysi
KSAtPiAiQysrIgogICAvLyAgICAgICAgICAgRm9ybWF0cyBzdGQ6OnN0cmluZywgY2hhciosIHN0
cmluZ192aWV3LCBhbmQgQ29yZC4KICAgRVhQRUNUX0VRKFN0ckZvcm1hdCgiJXMiLCAiQyIpLCAi
QyIpOwogICBFWFBFQ1RfRVEoU3RyRm9ybWF0KCIlcyIsIHN0ZDo6c3RyaW5nKCJDKysiKSksICJD
KysiKTsKQEAgLTQ1Nyw3ICs0NjEsNyBAQCBzdGQ6OnN0cmluZyBTdW1tYXJpemVQYXJzZWRGb3Jt
YXQoY29uc3QgUGFyc2VkRm9ybWF0QmFzZSYgcGMpIHsKICAgcmV0dXJuIG91dDsKIH0KIAotY2xh
c3MgUGFyc2VkRm9ybWF0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHt9OwordXNpbmcgUGFy
c2VkRm9ybWF0VGVzdCA9IDo6dGVzdGluZzo6VGVzdDsKIAogVEVTVF9GKFBhcnNlZEZvcm1hdFRl
c3QsIFNpbXBsZUNoZWNrZWQpIHsKICAgRVhQRUNUX0VRKCJbQUJDXXtkOjEkZH1bREVGXSIsCkBA
IC01OTksNDEgKzYwMyw0NSBAQCBURVNUX0YoUGFyc2VkRm9ybWF0VGVzdCwgUmVncmVzc2lvbk1p
eFBvc2l0aW9uYWwpIHsKICAgRVhQRUNUX0ZBTFNFKChFeHRlbmRlZFBhcnNlZEZvcm1hdDxDb252
OjpkLCBDb252OjpvPjo6TmV3KCIlMSRkICVvIikpKTsKIH0KIAordXNpbmcgRm9ybWF0V3JhcHBl
clRlc3QgPSA6OnRlc3Rpbmc6OlRlc3Q7CisKKy8vIFBsYWluIHdyYXBwZXIgZm9yIFN0ckZvcm1h
dC4KK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorc3RkOjpzdHJpbmcgV3JhcHBlZEZvcm1h
dChjb25zdCBhYnNsOjpGb3JtYXRTcGVjPEFyZ3MuLi4+JiBmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKKyAgcmV0dXJuIFN0ckZvcm1hdChm
b3JtYXQsIGFyZ3MuLi4pOworfQorCitURVNUX0YoRm9ybWF0V3JhcHBlclRlc3QsIENvbnN0ZXhw
clN0cmluZ0Zvcm1hdCkgeworICBFWFBFQ1RfRVEoV3JhcHBlZEZvcm1hdCgiJXMgdGhlcmUiLCAi
aGVsbG8iKSwgImhlbGxvIHRoZXJlIik7Cit9CisKK1RFU1RfRihGb3JtYXRXcmFwcGVyVGVzdCwg
UGFyc2VkRm9ybWF0KSB7CisgIFBhcnNlZEZvcm1hdDwncyc+IGZvcm1hdCgiJXMgdGhlcmUiKTsK
KyAgRVhQRUNUX0VRKFdyYXBwZWRGb3JtYXQoZm9ybWF0LCAiaGVsbG8iKSwgImhlbGxvIHRoZXJl
Iik7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogfSAgLy8gbmFtZXNwYWNlIGFic2wKIAogLy8gU29t
ZSBjb2RlZ2VuIHRodW5rcyB0aGF0IHdlIGNhbiB1c2UgdG8gZWFzaWx5IGR1bXAgdGhlIGdlbmVy
YXRlZCBhc3NlbWJseSBmb3IKIC8vIGRpZmZlcmVudCBTdHJGb3JtYXQgY2FsbHMuCiAKLWlubGlu
ZSBzdGQ6OnN0cmluZyBDb2RlZ2VuQWJzbFN0ckZvcm1hdEludChpbnQgaSkgeworc3RkOjpzdHJp
bmcgQ29kZWdlbkFic2xTdHJGb3JtYXRJbnQoaW50IGkpIHsgIC8vIE5PTElOVAogICByZXR1cm4g
YWJzbDo6U3RyRm9ybWF0KCIlZCIsIGkpOwogfQogCi1pbmxpbmUgc3RkOjpzdHJpbmcgQ29kZWdl
bkFic2xTdHJGb3JtYXRJbnRTdHJpbmdJbnQ2NChpbnQgaSwgY29uc3Qgc3RkOjpzdHJpbmcmIHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBpNjQpIHsKK3N0ZDo6c3RyaW5nIENvZGVnZW5BYnNsU3RyRm9ybWF0SW50U3RyaW5nSW50NjQo
aW50IGksIGNvbnN0IHN0ZDo6c3RyaW5nJiBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGk2NCkgeyAgLy8gTk9MSU5UCiAgIHJldHVybiBh
YnNsOjpTdHJGb3JtYXQoIiVkICVzICVkIiwgaSwgcywgaTY0KTsKIH0KIAotaW5saW5lIHZvaWQg
Q29kZWdlbkFic2xTdHJBcHBlbmRGb3JtYXRJbnQoc3RkOjpzdHJpbmcqIG91dCwgaW50IGkpIHsK
K3ZvaWQgQ29kZWdlbkFic2xTdHJBcHBlbmRGb3JtYXRJbnQoc3RkOjpzdHJpbmcqIG91dCwgaW50
IGkpIHsgIC8vIE5PTElOVAogICBhYnNsOjpTdHJBcHBlbmRGb3JtYXQob3V0LCAiJWQiLCBpKTsK
IH0KIAotaW5saW5lIHZvaWQgQ29kZWdlbkFic2xTdHJBcHBlbmRGb3JtYXRJbnRTdHJpbmdJbnQ2
NChzdGQ6OnN0cmluZyogb3V0LCBpbnQgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgaTY0KSB7
Cit2b2lkIENvZGVnZW5BYnNsU3RyQXBwZW5kRm9ybWF0SW50U3RyaW5nSW50NjQoc3RkOjpzdHJp
bmcqIG91dCwgaW50IGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBpNjQpIHsgIC8vIE5PTElOVAogICBhYnNsOjpTdHJB
cHBlbmRGb3JtYXQob3V0LCAiJWQgJXMgJWQiLCBpLCBzLCBpNjQpOwogfQotCi1hdXRvIGFic2xf
aW50ZXJuYWxfc3RyX2Zvcm1hdF9mb3JjZV9jb2RlZ2VuX2Z1bmNzID0gc3RkOjptYWtlX3R1cGxl
KAotICAgIENvZGVnZW5BYnNsU3RyRm9ybWF0SW50LCBDb2RlZ2VuQWJzbFN0ckZvcm1hdEludFN0
cmluZ0ludDY0LAotICAgIENvZGVnZW5BYnNsU3RyQXBwZW5kRm9ybWF0SW50LCBDb2RlZ2VuQWJz
bFN0ckFwcGVuZEZvcm1hdEludFN0cmluZ0ludDY0KTsKLQotYm9vbCBhYnNsX2ludGVybmFsX3N0
cl9mb3JtYXRfZm9yY2VfY29kZWdlbl9hbHdheXNfZmFsc2U7Ci0vLyBGb3JjZSB0aGUgY29tcGls
ZXIgdG8gZ2VuZXJhdGUgdGhlIGZ1bmN0aW9ucyBieSBtYWtpbmcgaXQgbG9vayBsaWtlIHdlCi0v
LyBlc2NhcGUgdGhlIGZ1bmN0aW9uIHBvaW50ZXJzLgotLy8gSXQgY2FuJ3Qgc3RhdGljYWxseSBr
bm93IHRoYXQKLS8vIGFic2xfaW50ZXJuYWxfc3RyX2Zvcm1hdF9mb3JjZV9jb2RlZ2VuX2Fsd2F5
c19mYWxzZSBpcyBub3QgY2hhbmdlZCBieSBzb21lb25lCi0vLyBlbHNlLgotYm9vbCBhYnNsX2lu
dGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29kZWdlbiA9Ci0gICAgYWJzbF9pbnRlcm5hbF9zdHJf
Zm9ybWF0X2ZvcmNlX2NvZGVnZW5fYWx3YXlzX2ZhbHNlICYmCi0gICAgcHJpbnRmKCIlcCIsICZh
YnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29kZWdlbl9mdW5jcykgPT0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW4u
aAppbmRleCBmOTYxMWFkM2I0N2Q3MmQwZDk5MmJkMmJlZjkwNzVjODYwOGZkMjVlLi40NzcyZjVk
MTdjODkxZTU3OTFhODQwYWVlYzY2YzcxMTY3MTE4MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL3N0cl9qb2luLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfam9pbi5oCkBAIC01LDcgKzUs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xOCwxMyArMTgsMTMgQEAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBjb250YWlucyBmdW5j
dGlvbnMgZm9yIGpvaW5pbmcgYSByYW5nZSBvZiBlbGVtZW50cyBhbmQKLS8vIHJldHVybmluZyB0
aGUgcmVzdWx0IGFzIGEgc3RyaW5nLiBTdHJKb2luIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmllZCBi
eSBwYXNzaW5nCi0vLyBhIHJhbmdlLCBhIHNlcGFyYXRvciBzdHJpbmcgdG8gdXNlIGJldHdlZW4g
dGhlIGVsZW1lbnRzIGpvaW5lZCwgYW5kIGFuCi0vLyBvcHRpb25hbCBGb3JtYXR0ZXIgcmVzcG9u
c2libGUgZm9yIGNvbnZlcnRpbmcgZWFjaCBhcmd1bWVudCBpbiB0aGUgcmFuZ2UgdG8gYQotLy8g
c3RyaW5nLiBJZiBvbWl0dGVkLCBhIGRlZmF1bHQgYEFscGhhTnVtRm9ybWF0dGVyKClgIGlzIGNh
bGxlZCBvbiB0aGUgZWxlbWVudHMKLS8vIHRvIGJlIGpvaW5lZCwgdXNpbmcgdGhlIHNhbWUgZm9y
bWF0dGluZyB0aGF0IGBhYnNsOjpTdHJDYXQoKWAgdXNlcy4gVGhpcwotLy8gcGFja2FnZSBkZWZp
bmVzIGEgbnVtYmVyIG9mIGRlZmF1bHQgZm9ybWF0dGVycywgYW5kIHlvdSBjYW4gZGVmaW5lIHlv
dXIgb3duCi0vLyBpbXBsZW1lbnRhdGlvbnMuCisvLyByZXR1cm5pbmcgdGhlIHJlc3VsdCBhcyBh
IHN0ZDo6c3RyaW5nLiBTdHJKb2luIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmllZCBieQorLy8gcGFz
c2luZyBhIHJhbmdlLCBhIHNlcGFyYXRvciBzdHJpbmcgdG8gdXNlIGJldHdlZW4gdGhlIGVsZW1l
bnRzIGpvaW5lZCwgYW5kCisvLyBhbiBvcHRpb25hbCBGb3JtYXR0ZXIgcmVzcG9uc2libGUgZm9y
IGNvbnZlcnRpbmcgZWFjaCBhcmd1bWVudCBpbiB0aGUgcmFuZ2UKKy8vIHRvIGEgc3RyaW5nLiBJ
ZiBvbWl0dGVkLCBhIGRlZmF1bHQgYEFscGhhTnVtRm9ybWF0dGVyKClgIGlzIGNhbGxlZCBvbiB0
aGUKKy8vIGVsZW1lbnRzIHRvIGJlIGpvaW5lZCwgdXNpbmcgdGhlIHNhbWUgZm9ybWF0dGluZyB0
aGF0IGBhYnNsOjpTdHJDYXQoKWAgdXNlcy4KKy8vIFRoaXMgcGFja2FnZSBkZWZpbmVzIGEgbnVt
YmVyIG9mIGRlZmF1bHQgZm9ybWF0dGVycywgYW5kIHlvdSBjYW4gZGVmaW5lIHlvdXIKKy8vIG93
biBpbXBsZW1lbnRhdGlvbnMuCiAvLwogLy8gUmFuZ2VzIGFyZSBzcGVjaWZpZWQgYnkgcGFzc2lu
ZyBhIGNvbnRhaW5lciB3aXRoIGBzdGQ6OmJlZ2luKClgIGFuZAogLy8gYHN0ZDo6ZW5kKClgIGl0
ZXJhdG9ycywgY29udGFpbmVyLXNwZWNpZmljIGBiZWdpbigpYCBhbmQgYGVuZCgpYCBpdGVyYXRv
cnMsIGEKQEAgLTM3LDggKzM3LDggQEAKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgc3RkOjp2
ZWN0b3I8c3RyaW5nPiB2ID0geyJmb28iLCAiYmFyIiwgImJheiJ9OwotLy8gICBzdHJpbmcgcyA9
IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYg
PSB7ImZvbyIsICJiYXIiLCAiYmF6In07CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJK
b2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiZm9vLWJhci1iYXoiLCBzKTsKIC8vCiAvLyBT
ZWUgY29tbWVudHMgb24gdGhlIGBhYnNsOjpTdHJKb2luKClgIGZ1bmN0aW9uIGZvciBtb3JlIGV4
YW1wbGVzLgpAQCAtNjYsMTYgKzY2LDE2IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLwogLy8gQSBGb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvYmplY3QgdGhh
dCBpcyByZXNwb25zaWJsZSBmb3IgZm9ybWF0dGluZyBpdHMKLS8vIGFyZ3VtZW50IGFzIGEgc3Ry
aW5nIGFuZCBhcHBlbmRpbmcgaXQgdG8gYSBnaXZlbiBvdXRwdXQgc3RyaW5nLiBGb3JtYXR0ZXJz
Ci0vLyBtYXkgYmUgaW1wbGVtZW50ZWQgYXMgZnVuY3Rpb24gb2JqZWN0cywgbGFtYmRhcywgb3Ig
bm9ybWFsIGZ1bmN0aW9ucy4gWW91IG1heQotLy8gcHJvdmlkZSB5b3VyIG93biBGb3JtYXR0ZXIg
dG8gZW5hYmxlIGBhYnNsOjpTdHJKb2luKClgIHRvIHdvcmsgd2l0aCBhcmJpdHJhcnkKLS8vIHR5
cGVzLgorLy8gYXJndW1lbnQgYXMgYSBzdHJpbmcgYW5kIGFwcGVuZGluZyBpdCB0byBhIGdpdmVu
IG91dHB1dCBzdGQ6OnN0cmluZy4KKy8vIEZvcm1hdHRlcnMgbWF5IGJlIGltcGxlbWVudGVkIGFz
IGZ1bmN0aW9uIG9iamVjdHMsIGxhbWJkYXMsIG9yIG5vcm1hbAorLy8gZnVuY3Rpb25zLiBZb3Ug
bWF5IHByb3ZpZGUgeW91ciBvd24gRm9ybWF0dGVyIHRvIGVuYWJsZSBgYWJzbDo6U3RySm9pbigp
YCB0bworLy8gd29yayB3aXRoIGFyYml0cmFyeSB0eXBlcy4KIC8vCiAvLyBUaGUgZm9sbG93aW5n
IGlzIGFuIGV4YW1wbGUgb2YgYSBjdXN0b20gRm9ybWF0dGVyIHRoYXQgc2ltcGx5IHVzZXMKLS8v
IGBzdGQ6OnRvX3N0cmluZygpYCB0byBmb3JtYXQgYW4gaW50ZWdlciBhcyBhIHN0cmluZy4KKy8v
IGBzdGQ6OnRvX3N0cmluZygpYCB0byBmb3JtYXQgYW4gaW50ZWdlciBhcyBhIHN0ZDo6c3RyaW5n
LgogLy8KIC8vICAgc3RydWN0IE15Rm9ybWF0dGVyIHsKLS8vICAgICB2b2lkIG9wZXJhdG9yKCko
c3RyaW5nKiBvdXQsIGludCBpKSBjb25zdCB7CisvLyAgICAgdm9pZCBvcGVyYXRvcigpKHN0ZDo6
c3RyaW5nKiBvdXQsIGludCBpKSBjb25zdCB7CiAvLyAgICAgICBvdXQtPmFwcGVuZChzdGQ6OnRv
X3N0cmluZyhpKSk7CiAvLyAgICAgfQogLy8gICB9OwpAQCAtODQsNyArODQsNyBAQCBuYW1lc3Bh
Y2UgYWJzbCB7CiAvLyBhcmd1bWVudCB0byBgYWJzbDo6U3RySm9pbigpYDoKIC8vCiAvLyAgIHN0
ZDo6dmVjdG9yPGludD4gdiA9IHsxLCAyLCAzLCA0fTsKLS8vICAgc3RyaW5nIHMgPSBhYnNsOjpT
dHJKb2luKHYsICItIiwgTXlGb3JtYXR0ZXIoKSk7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNs
OjpTdHJKb2luKHYsICItIiwgTXlGb3JtYXR0ZXIoKSk7CiAvLyAgIEVYUEVDVF9FUSgiMS0yLTMt
NCIsIHMpOwogLy8KIC8vIFRoZSBmb2xsb3dpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhcmUgcHJv
dmlkZWQgd2l0aGluIHRoaXMgZmlsZToKQEAgLTE1Niw3ICsxNTYsNyBAQCBEZXJlZmVyZW5jZUZv
cm1hdHRlcigpIHsKIC8vIFN0ckpvaW4oKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0v
LyBKb2lucyBhIHJhbmdlIG9mIGVsZW1lbnRzIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSBz
dHJpbmcuCisvLyBKb2lucyBhIHJhbmdlIG9mIGVsZW1lbnRzIGFuZCByZXR1cm5zIHRoZSByZXN1
bHQgYXMgYSBzdGQ6OnN0cmluZy4KIC8vIGBhYnNsOjpTdHJKb2luKClgIHRha2VzIGEgcmFuZ2Us
IGEgc2VwYXJhdG9yIHN0cmluZyB0byB1c2UgYmV0d2VlbiB0aGUKIC8vIGVsZW1lbnRzIGpvaW5l
ZCwgYW5kIGFuIG9wdGlvbmFsIEZvcm1hdHRlciByZXNwb25zaWJsZSBmb3IgY29udmVydGluZyBl
YWNoCiAvLyBhcmd1bWVudCBpbiB0aGUgcmFuZ2UgdG8gYSBzdHJpbmcuCkBAIC0xNjcsMjIgKzE2
NywyMiBAQCBEZXJlZmVyZW5jZUZvcm1hdHRlcigpIHsKIC8vIEV4YW1wbGUgMToKIC8vICAgLy8g
Sm9pbnMgYSBjb2xsZWN0aW9uIG9mIHN0cmluZ3MuIFRoaXMgcGF0dGVybiBhbHNvIHdvcmtzIHdp
dGggYSBjb2xsZWN0aW9uCiAvLyAgIC8vIG9mIGBhYnNsOjpzdHJpbmdfdmlld2Agb3IgZXZlbiBg
Y29uc3QgY2hhcipgLgotLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHYgPSB7ImZvbyIsICJiYXIi
LCAiYmF6In07Ci0vLyAgIHN0cmluZyBzID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOworLy8gICBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKKy8vICAg
c3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCJm
b28tYmFyLWJheiIsIHMpOwogLy8KIC8vIEV4YW1wbGUgMjoKIC8vICAgLy8gSm9pbnMgdGhlIHZh
bHVlcyBpbiB0aGUgZ2l2ZW4gYHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDw+YCBzcGVjaWZpZWQgdXNp
bmcKIC8vICAgLy8gYnJhY2UgaW5pdGlhbGl6YXRpb24uIFRoaXMgcGF0dGVybiBhbHNvIHdvcmtz
IHdpdGggYW4gaW5pdGlhbGl6ZXJfbGlzdAogLy8gICAvLyBvZiBpbnRzIG9yIGBhYnNsOjpzdHJp
bmdfdmlld2AgLS0gYW55IGBBbHBoYU51bWAtY29tcGF0aWJsZSB0eXBlLgotLy8gICBzdHJpbmcg
cyA9IGFic2w6OlN0ckpvaW4oeyJmb28iLCAiYmFyIiwgImJheiJ9LCAiLSIpOworLy8gICBzdGQ6
OnN0cmluZyBzID0gYWJzbDo6U3RySm9pbih7ImZvbyIsICJiYXIiLCAiYmF6In0sICItIik7CiAv
LyAgIEVYUEVDVF9FUSgiZm9vLWJhci1iYXoiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDM6CiAvLyAg
IC8vIEpvaW5zIGEgY29sbGVjdGlvbiBvZiBpbnRzLiBUaGlzIHBhdHRlcm4gYWxzbyB3b3JrcyB3
aXRoIGZsb2F0cywKIC8vICAgLy8gZG91YmxlcywgaW50NjRzIC0tIGFueSBgU3RyQ2F0KClgLWNv
bXBhdGlibGUgdHlwZS4KIC8vICAgc3RkOjp2ZWN0b3I8aW50PiB2ID0gezEsIDIsIDMsIC00fTsK
LS8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CisvLyAgIHN0ZDo6c3RyaW5n
IHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiMS0yLTMtLTQiLCBz
KTsKIC8vCiAvLyBFeGFtcGxlIDQ6CkBAIC0xOTMsNyArMTkzLDcgQEAgRGVyZWZlcmVuY2VGb3Jt
YXR0ZXIoKSB7CiAvLyAgIC8vIGBzdGQ6OnZlY3RvcjxpbnQqPmAuCiAvLyAgIGludCB4ID0gMSwg
eSA9IDIsIHogPSAzOwogLy8gICBzdGQ6OnZlY3RvcjxpbnQqPiB2ID0geyZ4LCAmeSwgJnp9Owot
Ly8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RkOjpzdHJpbmcg
cyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMyIsIHMpOwog
Ly8KIC8vIEV4YW1wbGUgNToKQEAgLTIwMiw2NSArMjAyLDY1IEBAIERlcmVmZXJlbmNlRm9ybWF0
dGVyKCkgewogLy8gICB2LmVtcGxhY2VfYmFjayhuZXcgaW50KDEpKTsKIC8vICAgdi5lbXBsYWNl
X2JhY2sobmV3IGludCgyKSk7CiAvLyAgIHYuZW1wbGFjZV9iYWNrKG5ldyBpbnQoMykpOwotLy8g
ICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RkOjpzdHJpbmcgcyA9
IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMyIsIHMpOwogLy8K
IC8vIEV4YW1wbGUgNjoKIC8vICAgLy8gSm9pbnMgYSBgc3RkOjptYXBgLCB3aXRoIGVhY2gga2V5
LXZhbHVlIHBhaXIgc2VwYXJhdGVkIGJ5IGFuIGVxdWFscwogLy8gICAvLyBzaWduLiBUaGlzIHBh
dHRlcm4gd291bGQgYWxzbyB3b3JrIHdpdGgsIHNheSwgYQogLy8gICAvLyBgc3RkOjp2ZWN0b3I8
c3RkOjpwYWlyPD4+YC4KLS8vICAgc3RkOjptYXA8c3RyaW5nLCBpbnQ+IG0gPSB7CisvLyAgIHN0
ZDo6bWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IG0gPSB7CiAvLyAgICAgICBzdGQ6Om1ha2VfcGFpcigi
YSIsIDEpLAogLy8gICAgICAgc3RkOjptYWtlX3BhaXIoImIiLCAyKSwKIC8vICAgICAgIHN0ZDo6
bWFrZV9wYWlyKCJjIiwgMyl9OwotLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4obSwgIiwi
LCBhYnNsOjpQYWlyRm9ybWF0dGVyKCI9IikpOworLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6
U3RySm9pbihtLCAiLCIsIGFic2w6OlBhaXJGb3JtYXR0ZXIoIj0iKSk7CiAvLyAgIEVYUEVDVF9F
USgiYT0xLGI9MixjPTMiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDc6CiAvLyAgIC8vIFRoZXNlIGV4
YW1wbGVzIHNob3cgaG93IGBhYnNsOjpTdHJKb2luKClgIGhhbmRsZXMgYSBmZXcgY29tbW9uIGVk
Z2UKIC8vICAgLy8gY2FzZXM6Ci0vLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdl9lbXB0eTsKKy8v
ICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHZfZW1wdHk7CiAvLyAgIEVYUEVDVF9FUSgiIiwg
YWJzbDo6U3RySm9pbih2X2VtcHR5LCAiLSIpKTsKIC8vCi0vLyAgIHN0ZDo6dmVjdG9yPHN0cmlu
Zz4gdl9vbmVfaXRlbSA9IHsiZm9vIn07CisvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2
X29uZV9pdGVtID0geyJmb28ifTsKIC8vICAgRVhQRUNUX0VRKCJmb28iLCBhYnNsOjpTdHJKb2lu
KHZfb25lX2l0ZW0sICItIikpOwogLy8KLS8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2X2VtcHR5
X3N0cmluZyA9IHsiIn07CisvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X2VtcHR5X3N0
cmluZyA9IHsiIn07CiAvLyAgIEVYUEVDVF9FUSgiIiwgYWJzbDo6U3RySm9pbih2X2VtcHR5X3N0
cmluZywgIi0iKSk7CiAvLwotLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHZfb25lX2l0ZW1fZW1w
dHlfc3RyaW5nID0geyJhIiwgIiJ9OworLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdl9v
bmVfaXRlbV9lbXB0eV9zdHJpbmcgPSB7ImEiLCAiIn07CiAvLyAgIEVYUEVDVF9FUSgiYS0iLCBh
YnNsOjpTdHJKb2luKHZfb25lX2l0ZW1fZW1wdHlfc3RyaW5nLCAiLSIpKTsKIC8vCi0vLyAgIHN0
ZDo6dmVjdG9yPHN0cmluZz4gdl90d29fZW1wdHlfc3RyaW5nID0geyIiLCAiIn07CisvLyAgIHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X3R3b19lbXB0eV9zdHJpbmcgPSB7IiIsICIifTsKIC8v
ICAgRVhQRUNUX0VRKCItIiwgYWJzbDo6U3RySm9pbih2X3R3b19lbXB0eV9zdHJpbmcsICItIikp
OwogLy8KIC8vIEV4YW1wbGUgODoKIC8vICAgLy8gSm9pbnMgYSBgc3RkOjp0dXBsZTxULi4uPmAg
b2YgaGV0ZXJvZ2VuZW91cyB0eXBlcywgY29udmVydGluZyBlYWNoIHRvCi0vLyAgIC8vIGEgc3Ry
aW5nIHVzaW5nIHRoZSBgYWJzbDo6QWxwaGFOdW1gIGNsYXNzLgotLy8gICBzdHJpbmcgcyA9IGFi
c2w6OlN0ckpvaW4oc3RkOjptYWtlX3R1cGxlKDEyMywgImFiYyIsIDAuNDU2KSwgIi0iKTsKKy8v
ICAgLy8gYSBzdGQ6OnN0cmluZyB1c2luZyB0aGUgYGFic2w6OkFscGhhTnVtYCBjbGFzcy4KKy8v
ICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4oc3RkOjptYWtlX3R1cGxlKDEyMywgImFi
YyIsIDAuNDU2KSwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxMjMtYWJjLTAuNDU2Iiwgcyk7CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgRm9ybWF0dGVyPgogc3RkOjpz
dHJpbmcgU3RySm9pbihJdGVyYXRvciBzdGFydCwgSXRlcmF0b3IgZW5kLCBhYnNsOjpzdHJpbmdf
dmlldyBzZXAsCi0gICAgICAgICAgICAgICBGb3JtYXR0ZXImJiBmbXQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgRm9ybWF0dGVyJiYgZm10KSB7CiAgIHJldHVybiBzdHJpbmdzX2ludGVybmFsOjpK
b2luQWxnb3JpdGhtKHN0YXJ0LCBlbmQsIHNlcCwgZm10KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFJhbmdlLCB0eXBlbmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0cmluZyBTdHJKb2luKGNvbnN0
IFJhbmdlJiByYW5nZSwgYWJzbDo6c3RyaW5nX3ZpZXcgc2VwYXJhdG9yLAotICAgICAgICAgICAg
ICAgRm9ybWF0dGVyJiYgZm10KSB7CisgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciYmIGZt
dCkgewogICByZXR1cm4gc3RyaW5nc19pbnRlcm5hbDo6Sm9pblJhbmdlKHJhbmdlLCBzZXBhcmF0
b3IsIGZtdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBGb3JtYXR0ZXI+
CiBzdGQ6OnN0cmluZyBTdHJKb2luKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbCwgYWJzbDo6
c3RyaW5nX3ZpZXcgc2VwYXJhdG9yLAotICAgICAgICAgICAgICAgRm9ybWF0dGVyJiYgZm10KSB7
CisgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciYmIGZtdCkgewogICByZXR1cm4gc3RyaW5n
c19pbnRlcm5hbDo6Sm9pblJhbmdlKGlsLCBzZXBhcmF0b3IsIGZtdCk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBULCB0eXBlbmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0cmluZyBTdHJKb2lu
KGNvbnN0IHN0ZDo6dHVwbGU8VC4uLj4mIHZhbHVlLCBhYnNsOjpzdHJpbmdfdmlldyBzZXBhcmF0
b3IsCi0gICAgICAgICAgICAgICBGb3JtYXR0ZXImJiBmbXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgRm9ybWF0dGVyJiYgZm10KSB7CiAgIHJldHVybiBzdHJpbmdzX2ludGVybmFsOjpKb2luQWxn
b3JpdGhtKHZhbHVlLCBzZXBhcmF0b3IsIGZtdCk7CiB9CiAKQEAgLTI3NSwxMiArMjc1LDE0IEBA
IHN0ZDo6c3RyaW5nIFN0ckpvaW4oY29uc3QgUmFuZ2UmIHJhbmdlLCBhYnNsOjpzdHJpbmdfdmll
dyBzZXBhcmF0b3IpIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGQ6OnN0cmluZyBT
dHJKb2luKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbCwgYWJzbDo6c3RyaW5nX3ZpZXcgc2Vw
YXJhdG9yKSB7CitzdGQ6OnN0cmluZyBTdHJKb2luKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBp
bCwKKyAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgc2VwYXJhdG9yKSB7CiAg
IHJldHVybiBzdHJpbmdzX2ludGVybmFsOjpKb2luUmFuZ2UoaWwsIHNlcGFyYXRvcik7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgotc3RkOjpzdHJpbmcgU3RySm9pbihjb25zdCBzdGQ6
OnR1cGxlPFQuLi4+JiB2YWx1ZSwgYWJzbDo6c3RyaW5nX3ZpZXcgc2VwYXJhdG9yKSB7CitzdGQ6
OnN0cmluZyBTdHJKb2luKGNvbnN0IHN0ZDo6dHVwbGU8VC4uLj4mIHZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpzdHJpbmdfdmlldyBzZXBhcmF0b3IpIHsKICAgcmV0dXJuIHN0cmlu
Z3NfaW50ZXJuYWw6OkpvaW5BbGdvcml0aG0odmFsdWUsIHNlcGFyYXRvciwgQWxwaGFOdW1Gb3Jt
YXR0ZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW5fYmVuY2ht
YXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfam9pbl9iZW5jaG1hcmsuY2MKaW5kZXggN2ZiMGU0
OTczY2I0NjhlNGQyYzgzYzhkOTBkYjBiNjI5MTgxODc0ZS4uZDZmNjg5ZmYzMDBiMTk4NWU2ZDI0
NjYwYWM0ZWE1ODJjYWU2NzQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfam9pbl9i
ZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfam9pbl9iZW5jaG1hcmsuY2MKQEAg
LTUsNyArNSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTU4LDcgKzU4LDggQEAg
dm9pZCBCTV9Kb2luMl9LZXlzQW5kVmFsdWVzKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAg
IGNvbnN0IGludCBzdHJpbmdfbGVuID0gc3RhdGUucmFuZ2UoMCk7CiAgIGNvbnN0IGludCBudW1f
cGFpcnMgPSBzdGF0ZS5yYW5nZSgxKTsKICAgY29uc3Qgc3RkOjpzdHJpbmcgcyhzdHJpbmdfbGVu
LCAneCcpOwotICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIGludD4+
IHYobnVtX3BhaXJzLCBzdGQ6Om1ha2VfcGFpcihzLCA0MikpOworICBjb25zdCBzdGQ6OnZlY3Rv
cjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIGludD4+IHYobnVtX3BhaXJzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIocywg
NDIpKTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewogICAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNs
OjpTdHJKb2luKHYsICIsIiwgYWJzbDo6UGFpckZvcm1hdHRlcigiPSIpKTsKICAgICBiZW5jaG1h
cms6OkRvTm90T3B0aW1pemUocyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2lu
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luX3Rlc3QuY2MKaW5kZXggYzk0MWY5Yzgw
ZDQ5OTgyOTc3ZjE4ZTkxYzBjNzA3OTA5MjdhYjg1Zi4uOTIxZDljMmJmYTdkODdjZjYwNWZlMzU3
M2JlYWZlNjdlOTA4M2Q1NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfam9pbl90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW5fdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTE4LDcgKzExOCw3IEBAIFRFU1QoU3RySm9p
biwgQVBJRXhhbXBsZXMpIHsKIAogICB7CiAgICAgLy8gQSBzdGQ6Om1hcCwgd2hpY2ggaXMgYSBj
b2xsZWN0aW9uIG9mIHN0ZDo6cGFpcjw+cy4KLSAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgaW50
PiBtID0geyB7ImEiLCAxfSwgeyJiIiwgMn0sIHsiYyIsIDN9IH07CisgICAgc3RkOjptYXA8c3Rk
OjpzdHJpbmcsIGludD4gbSA9IHt7ImEiLCAxfSwgeyJiIiwgMn0sIHsiYyIsIDN9fTsKICAgICBF
WFBFQ1RfRVEoImE9MSxiPTIsYz0zIiwgYWJzbDo6U3RySm9pbihtLCAiLCIsIGFic2w6OlBhaXJG
b3JtYXR0ZXIoIj0iKSkpOwogICB9CiAKQEAgLTE0MCw3ICsxNDAsOCBAQCBURVNUKFN0ckpvaW4s
IEFQSUV4YW1wbGVzKSB7CiAgIH0KIAogICB7Ci0gICAgLy8gQSByYW5nZSBvZiAxIGVsZW1lbnQg
Z2l2ZXMgYSBzdGQ6OnN0cmluZyB3aXRoIHRoYXQgZWxlbWVudCBidXQgbm8gc2VwYXJhdG9yLgor
ICAgIC8vIEEgcmFuZ2Ugb2YgMSBlbGVtZW50IGdpdmVzIGEgc3RkOjpzdHJpbmcgd2l0aCB0aGF0
IGVsZW1lbnQgYnV0IG5vCisgICAgLy8gc2VwYXJhdG9yLgogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiB2ID0geyJmb28ifTsKICAgICBFWFBFQ1RfRVEoImZvbyIsIGFic2w6OlN0ckpvaW4o
diwgIi0iKSk7CiAgIH0KQEAgLTE3Myw5ICsxNzQsMTAgQEAgVEVTVChTdHJKb2luLCBBUElFeGFt
cGxlcykgewogVEVTVChTdHJKb2luLCBDdXN0b21Gb3JtYXR0ZXIpIHsKICAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IHZ7Ik9uZSIsICJUd28iLCAiVGhyZWUifTsKICAgewotICAgIHN0ZDo6c3Ry
aW5nIGpvaW5lZCA9IGFic2w6OlN0ckpvaW4odiwgIiIsIFtdKHN0ZDo6c3RyaW5nKiBvdXQsIGNv
bnN0IHN0ZDo6c3RyaW5nJiBpbikgewotICAgICAgYWJzbDo6U3RyQXBwZW5kKG91dCwgIigiLCBp
biwgIikiKTsKLSAgICB9KTsKKyAgICBzdGQ6OnN0cmluZyBqb2luZWQgPQorICAgICAgICBhYnNs
OjpTdHJKb2luKHYsICIiLCBbXShzdGQ6OnN0cmluZyogb3V0LCBjb25zdCBzdGQ6OnN0cmluZyYg
aW4pIHsKKyAgICAgICAgICBhYnNsOjpTdHJBcHBlbmQob3V0LCAiKCIsIGluLCAiKSIpOworICAg
ICAgICB9KTsKICAgICBFWFBFQ1RfRVEoIihPbmUpKFR3bykoVGhyZWUpIiwgam9pbmVkKTsKICAg
fQogICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfcmVwbGFjZS5jYwppbmRleCA2OWVmYTM1NzEzODhiNjU0NDFhNWMxNWVhYzQ3
OGYzMmJlNmIzODFiLi4yODBmNjNkMzJhOWU4NjI3ZDAwN2E5MDg1Yzk3ZjFiNTczNjE3ZjVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyX3JlcGxhY2UuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTY4LDExICs2OCwxMiBAQCBpbnQgQXBwbHlTdWJzdGl0dXRpb25zKAogLy8gYXJlbid0
IGlubGluZWQuCiAKIHN0ZDo6c3RyaW5nIFN0clJlcGxhY2VBbGwoYWJzbDo6c3RyaW5nX3ZpZXcg
cywKLSAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3NfaW50ZXJuYWw6OkZpeGVkTWFwcGluZyBy
ZXBsYWNlbWVudHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nc19pbnRlcm5h
bDo6Rml4ZWRNYXBwaW5nIHJlcGxhY2VtZW50cykgewogICByZXR1cm4gU3RyUmVwbGFjZUFsbDxz
dHJpbmdzX2ludGVybmFsOjpGaXhlZE1hcHBpbmc+KHMsIHJlcGxhY2VtZW50cyk7CiB9CiAKLWlu
dCBTdHJSZXBsYWNlQWxsKHN0cmluZ3NfaW50ZXJuYWw6OkZpeGVkTWFwcGluZyByZXBsYWNlbWVu
dHMsIHN0ZDo6c3RyaW5nKiB0YXJnZXQpIHsKK2ludCBTdHJSZXBsYWNlQWxsKHN0cmluZ3NfaW50
ZXJuYWw6OkZpeGVkTWFwcGluZyByZXBsYWNlbWVudHMsCisgICAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyogdGFyZ2V0KSB7CiAgIHJldHVybiBTdHJSZXBsYWNlQWxsPHN0cmluZ3NfaW50ZXJu
YWw6OkZpeGVkTWFwcGluZz4ocmVwbGFjZW1lbnRzLCB0YXJnZXQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNl
LmgKaW5kZXggM2JmZTRjNjFlYmQxNTA0ZDNjOGViOGU1MGJhODcwZmE4ZmE2ODkzOS4uMzA1NDBk
MDJjZGY0NjFiNTM0ZWJhNDdmNmQ3MmRkYjRiODBjMzVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9zdHJfcmVwbGFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2UuaApAQCAt
NSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMjksMTIgKzI5LDEyIEBA
CiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyBzdHJpbmcgaHRtbF9lc2NhcGVkID0gYWJzbDo6U3Ry
UmVwbGFjZUFsbCh1c2VyX2lucHV0LCB7Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7IiYiLCAiJmFtcDsifSwKLS8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsiPCIsICImbHQ7In0sCi0vLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7Ij4iLCAiJmd0OyJ9LAotLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJcIiIsICImcXVvdDsifSwKLS8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiJyIsICImIzM5OyJ9fSk7CisvLyBz
dGQ6OnN0cmluZyBodG1sX2VzY2FwZWQgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKHVzZXJfaW5wdXQs
IHsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyIm
IiwgIiZhbXA7In0sCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsiPCIsICImbHQ7In0sCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsiPiIsICImZ3Q7In0sCisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsiXCIiLCAiJnF1b3Q7In0sCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiJyIsICImIzM5OyJ9fSk7CiAj
aWZuZGVmIEFCU0xfU1RSSU5HU19TVFJfUkVQTEFDRV9IXwogI2RlZmluZSBBQlNMX1NUUklOR1Nf
U1RSX1JFUExBQ0VfSF8KIApAQCAtNTgsMTAgKzU4LDExIEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8v
CiAvLyBFeGFtcGxlOgogLy8KLS8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCIk
d2hvIGJvdWdodCAkY291bnQgI05vdW4uIFRoYW5rcyAkd2hvISIsCi0vLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7eyIkY291bnQiLCBhYnNsOjpTdHJDYXQoNSl9LAotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiJHdobyIsICJCb2IifSwKLS8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IiNOb3VuIiwgIkFwcGxlcyJ9fSk7CisvLyAg
IHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKAorLy8gICAgICAgIiR3aG8gYm91
Z2h0ICRjb3VudCAjTm91bi4gVGhhbmtzICR3aG8hIiwKKy8vICAgICAgIHt7IiRjb3VudCIsIGFi
c2w6OlN0ckNhdCg1KX0sCisvLyAgICAgICAgeyIkd2hvIiwgIkJvYiJ9LAorLy8gICAgICAgIHsi
I05vdW4iLCAiQXBwbGVzIn19KTsKIC8vICAgRVhQRUNUX0VRKCJCb2IgYm91Z2h0IDUgQXBwbGVz
LiBUaGFua3MgQm9iISIsIHMpOwogQUJTTF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3Ry
UmVwbGFjZUFsbCgKICAgICBhYnNsOjpzdHJpbmdfdmlldyBzLApAQCAtNzgsMjAgKzc5LDIyIEBA
IEFCU0xfTVVTVF9VU0VfUkVTVUxUIHN0ZDo6c3RyaW5nIFN0clJlcGxhY2VBbGwoCiAvLyAgIHJl
cGxhY2VtZW50c1siJHdobyJdID0gIkJvYiI7CiAvLyAgIHJlcGxhY2VtZW50c1siJGNvdW50Il0g
PSAiNSI7CiAvLyAgIHJlcGxhY2VtZW50c1siI05vdW4iXSA9ICJBcHBsZXMiOwotLy8gICBzdHJp
bmcgcyA9IGFic2w6OlN0clJlcGxhY2VBbGwoIiR3aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhh
bmtzICR3aG8hIiwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2Vt
ZW50cyk7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKAorLy8gICAg
ICAgIiR3aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhhbmtzICR3aG8hIiwKKy8vICAgICAgIHJl
cGxhY2VtZW50cyk7CiAvLyAgIEVYUEVDVF9FUSgiQm9iIGJvdWdodCA1IEFwcGxlcy4gVGhhbmtz
IEJvYiEiLCBzKTsKIC8vCiAvLyAgIC8vIEEgc3RkOjp2ZWN0b3Igb2Ygc3RkOjpwYWlyIGVsZW1l
bnRzIGNhbiBiZSBtb3JlIGVmZmljaWVudC4KLS8vICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGNv
bnN0IGFic2w6OnN0cmluZ192aWV3LCBzdHJpbmc+PiByZXBsYWNlbWVudHM7CisvLyAgIHN0ZDo6
dmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBhYnNsOjpzdHJpbmdfdmlldywgc3RkOjpzdHJpbmc+PiBy
ZXBsYWNlbWVudHM7CiAvLyAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2soeyImIiwgIiZhbXA7In0p
OwogLy8gICByZXBsYWNlbWVudHMucHVzaF9iYWNrKHsiPCIsICImbHQ7In0pOwogLy8gICByZXBs
YWNlbWVudHMucHVzaF9iYWNrKHsiPiIsICImZ3Q7In0pOwotLy8gICBzdHJpbmcgcyA9IGFic2w6
OlN0clJlcGxhY2VBbGwoImlmIChwdHIgPCAmZm9vKSIsCisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBh
YnNsOjpTdHJSZXBsYWNlQWxsKCJpZiAocHRyIDwgJmZvbykiLAogLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzKTsKIC8vICAgRVhQRUNUX0VRKCJpZiAocHRy
ICZsdDsgJmFtcDtmb28pIiwgcyk7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyVG9TdHJNYXBwaW5n
Pgotc3RkOjpzdHJpbmcgU3RyUmVwbGFjZUFsbChhYnNsOjpzdHJpbmdfdmlldyBzLCBjb25zdCBT
dHJUb1N0ck1hcHBpbmcmIHJlcGxhY2VtZW50cyk7CitzdGQ6OnN0cmluZyBTdHJSZXBsYWNlQWxs
KGFic2w6OnN0cmluZ192aWV3IHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
clRvU3RyTWFwcGluZyYgcmVwbGFjZW1lbnRzKTsKIAogLy8gT3ZlcmxvYWQgb2YgYFN0clJlcGxh
Y2VBbGwoKWAgdG8gcmVwbGFjZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIHdpdGhpbiBhIGdpdmVuCiAv
LyBvdXRwdXQgc3RyaW5nICppbiBwbGFjZSogd2l0aCByZXBsYWNlbWVudHMgcHJvdmlkZWQgd2l0
aGluIGFuIGluaXRpYWxpemVyCkBAIC05OSw3ICsxMDIsNyBAQCBzdGQ6OnN0cmluZyBTdHJSZXBs
YWNlQWxsKGFic2w6OnN0cmluZ192aWV3IHMsIGNvbnN0IFN0clRvU3RyTWFwcGluZyYgcmVwbGFj
ZW1lbgogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdHJpbmcgcyA9IHN0ZDo6c3RyaW5nKCIk
d2hvIGJvdWdodCAkY291bnQgI05vdW4uIFRoYW5rcyAkd2hvISIpOworLy8gICBzdGQ6OnN0cmlu
ZyBzID0gc3RkOjpzdHJpbmcoIiR3aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhhbmtzICR3aG8h
Iik7CiAvLyAgIGludCBjb3VudDsKIC8vICAgY291bnQgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKHt7
IiRjb3VudCIsIGFic2w6OlN0ckNhdCg1KX0sCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7IiR3aG8iLCAiQm9iIn0sCkBAIC0xMTcsNyArMTIwLDcgQEAgaW50IFN0clJlcGxhY2VB
bGwoCiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIHN0cmluZyBzID0gc3RkOjpzdHJpbmcoImlm
IChwdHIgPCAmZm9vKSIpOworLy8gICBzdGQ6OnN0cmluZyBzID0gc3RkOjpzdHJpbmcoImlmIChw
dHIgPCAmZm9vKSIpOwogLy8gICBpbnQgY291bnQgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKHt7IiYi
LCAiJmFtcDsifSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyI8Iiwg
IiZsdDsifSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyI+IiwgIiZn
dDsifX0sICZzKTsKQEAgLTE4Nyw3ICsxOTAsOCBAQCBpbnQgQXBwbHlTdWJzdGl0dXRpb25zKGFi
c2w6OnN0cmluZ192aWV3IHMsCiB9ICAvLyBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbAogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyVG9TdHJNYXBwaW5nPgotc3RkOjpzdHJpbmcgU3RyUmVwbGFj
ZUFsbChhYnNsOjpzdHJpbmdfdmlldyBzLCBjb25zdCBTdHJUb1N0ck1hcHBpbmcmIHJlcGxhY2Vt
ZW50cykgeworc3RkOjpzdHJpbmcgU3RyUmVwbGFjZUFsbChhYnNsOjpzdHJpbmdfdmlldyBzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJUb1N0ck1hcHBpbmcmIHJlcGxhY2Vt
ZW50cykgewogICBhdXRvIHN1YnMgPSBzdHJpbmdzX2ludGVybmFsOjpGaW5kU3Vic3RpdHV0aW9u
cyhzLCByZXBsYWNlbWVudHMpOwogICBzdGQ6OnN0cmluZyByZXN1bHQ7CiAgIHJlc3VsdC5yZXNl
cnZlKHMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2VfYmVu
Y2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV9iZW5jaG1hcmsuY2MKaW5kZXgg
ODM4NmYyZTZiZjEwZWNlNDZiYTQ3OWFlMjUzZDg3OTY2N2M1ZTFmNy4uOTViMmRjMTA1ZTJmNDRm
YTE1ZTY2ZDhiOGM1YzE3ODkyYzU5YjViNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJf
cmVwbGFjZV9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV9iZW5j
aG1hcmsuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTU0
LDcgKzU0LDcgQEAgdm9pZCBTZXRVcFN0cmluZ3MoKSB7CiAgICAgc2l6ZV90IHIgPSAwOwogICAg
IGJpZ19zdHJpbmcgPSBuZXcgc3RkOjpzdHJpbmcoMTAwMCAqIDEwMDAsICcgJyk7CiAgICAgZm9y
IChzdGQ6OnN0cmluZyBwaHJhc2UgOiB7InRoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIg
dGhlIGxhenkgZG9ncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrIG15IGJveCB3
aXRoIHRoZSBmaXZlIGRvemVuIGxpcXVvciBqdWdzIn0pIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAicGFjayBteSBib3ggd2l0aCB0aGUgZml2ZSBkb3plbiBsaXF1b3IganVncyJ9
KSB7CiAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwICogMTAwMDsgKytpKSB7CiAgICAgICAg
IHIgPSByICogMjM3ICsgNDE7ICAvLyBub3QgdmVyeSByYW5kb20uCiAgICAgICAgIG1lbWNweSgm
KCpiaWdfc3RyaW5nKVtyICUgKGJpZ19zdHJpbmctPnNpemUoKSAtIHBocmFzZS5zaXplKCkpXSwK
QEAgLTEwOCwxMSArMTA4LDExIEBAIHZvaWQgQk1fU3RyUmVwbGFjZUFsbChiZW5jaG1hcms6OlN0
YXRlJiBzdGF0ZSkgewogICBzdGQ6OnN0cmluZyBzcmMgPSAqYmlnX3N0cmluZzsKICAgZm9yIChh
dXRvIF8gOiBzdGF0ZSkgewogICAgIHN0ZDo6c3RyaW5nIGRlc3QgPSBhYnNsOjpTdHJSZXBsYWNl
QWxsKHNyYywge3sidGhlIiwgImJveCJ9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7ImJyb3duIiwgInF1aWNrIn0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsianVtcGVkIiwgImxpcXVvcmVkIn0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiZG96ZW4iLCAiYnJvd24ifSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJsYXp5IiwgInBhY2si
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJsaXF1b3Ii
LCAic2hha2VzIn19KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7ImJyb3duIiwgInF1aWNrIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyJqdW1wZWQiLCAibGlxdW9yZWQifSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImRvemVuIiwgImJyb3duIn0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJsYXp5
IiwgInBhY2sifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7ImxpcXVvciIsICJzaGFrZXMifX0pOwogICAgIEFCU0xfUkFXX0NIRUNLKGRlc3QgPT0g
KmFmdGVyX3JlcGxhY2luZ19tYW55LAogICAgICAgICAgICAgICAgICAgICJub3QgYmVuY2htYXJr
aW5nIGludGVuZGVkIGJlaGF2aW9yIik7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3RyX3JlcGxhY2VfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2VfdGVzdC5jYwpp
bmRleCA1ZDAwM2EyMjRhNGZhODg4NTA0NTczMTUwZjA2NDFhZGQ0MDE0MDY0Li4xY2EyM2FmZjU1
NDkyYjFlMWQxOWViMjMzNDVhN2YxYmMxZTEzNTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9yZXBsYWNlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV90ZXN0
LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgVEVTVChTdHJSZXBsYWNlQWxsLCBNYW55UmVwbGFjZW1lbnRzSW5NYXApIHsKICAg
cmVwbGFjZW1lbnRzWyIkY291bnQiXSA9ICI1IjsKICAgcmVwbGFjZW1lbnRzWyIjTm91biJdID0g
IkFwcGxlcyI7CiAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCIkd2hvIGJv
dWdodCAkY291bnQgI05vdW4uIFRoYW5rcyAkd2hvISIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXBsYWNlbWVudHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXBsYWNlbWVudHMpOwogICBFWFBFQ1RfRVEoIkJvYiBib3VnaHQgNSBBcHBsZXMu
IFRoYW5rcyBCb2IhIiwgcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3Nw
bGl0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuY2MKaW5kZXggMGE2OGM1MmQxNGYxOWI4
OGQzYWRkMmUzNzIyN2M1MTNjNTlkMTI0Ni4uMjU5MzEzMDdmNGViNzQ0MzcwZjFmZTJhZWU3YjE1
NjQ5OWI4Mzc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cl9zcGxpdC5oCmluZGV4IGM3ZWIyODBjNDExMzBhYjg2ZTM0MzM2OWM3ZTVm
YzkwY2Q2OWRlMjYuLjczMzMwNzg5MzhiOWRiMGI0ODBmY2VmMzk3MTMwZWYyMDk3ODYyOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9z
dHJfc3BsaXQuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
NzEsMjMgKzcxLDIzIEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vICAgLSBgQnlMZW5ndGhgCiAvLyAg
IC0gYE1heFNwbGl0c2AKIC8vCi0vLwotLy8gQSBEZWxpbWl0ZXIncyBGaW5kKCkgbWVtYmVyIGZ1
bmN0aW9uIHdpbGwgYmUgcGFzc2VkIHRoZSBpbnB1dCB0ZXh0IHRoYXQgaXMgdG8KLS8vIGJlIHNw
bGl0IGFuZCB0aGUgcG9zaXRpb24gdG8gYmVnaW4gc2VhcmNoaW5nIGZvciB0aGUgbmV4dCBkZWxp
bWl0ZXIgaW4gdGhlCi0vLyBpbnB1dCB0ZXh0LiBUaGUgcmV0dXJuZWQgYWJzbDo6c3RyaW5nX3Zp
ZXcgc2hvdWxkIHJlZmVyIHRvIHRoZSBuZXh0Ci0vLyBvY2N1cnJlbmNlIChhZnRlciBwb3MpIG9m
IHRoZSByZXByZXNlbnRlZCBkZWxpbWl0ZXI7IHRoaXMgcmV0dXJuZWQKLS8vIGFic2w6OnN0cmlu
Z192aWV3IHJlcHJlc2VudHMgdGhlIG5leHQgbG9jYXRpb24gd2hlcmUgdGhlIGlucHV0IHN0cmlu
ZyBzaG91bGQKLS8vIGJlIGJyb2tlbi4gVGhlIHJldHVybmVkIGFic2w6OnN0cmluZ192aWV3IG1h
eSBiZSB6ZXJvLWxlbmd0aCBpZiB0aGUgRGVsaW1pdGVyCi0vLyBkb2VzIG5vdCByZXByZXNlbnQg
YSBwYXJ0IG9mIHRoZSBzdHJpbmcgKGUuZy4sIGEgZml4ZWQtbGVuZ3RoIGRlbGltaXRlcikuIElm
Ci0vLyBubyBkZWxpbWl0ZXIgaXMgZm91bmQgaW4gdGhlIGdpdmVuIHRleHQsIGEgemVyby1sZW5n
dGggYWJzbDo6c3RyaW5nX3ZpZXcKLS8vIHJlZmVycmluZyB0byB0ZXh0LmVuZCgpIHNob3VsZCBi
ZSByZXR1cm5lZCAoZS5nLiwKLS8vIGFic2w6OnN0cmluZ192aWV3KHRleHQuZW5kKCksIDApKS4g
SXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIHJldHVybmVkCi0vLyBhYnNsOjpzdHJpbmdfdmlldyBh
bHdheXMgYmUgd2l0aGluIHRoZSBib3VuZHMgb2YgaW5wdXQgdGV4dCBnaXZlbiBhcyBhbgorLy8g
QSBEZWxpbWl0ZXIncyBgRmluZCgpYCBtZW1iZXIgZnVuY3Rpb24gd2lsbCBiZSBwYXNzZWQgYW4g
aW5wdXQgYHRleHRgIHRoYXQgaXMKKy8vIHRvIGJlIHNwbGl0IGFuZCBhIHBvc2l0aW9uIChgcG9z
YCkgdG8gYmVnaW4gc2VhcmNoaW5nIGZvciB0aGUgbmV4dCBkZWxpbWl0ZXIKKy8vIGluIGB0ZXh0
YC4gVGhlIHJldHVybmVkIGFic2w6OnN0cmluZ192aWV3IHNob3VsZCByZWZlciB0byB0aGUgbmV4
dCBvY2N1cnJlbmNlCisvLyAoYWZ0ZXIgYHBvc2ApIG9mIHRoZSByZXByZXNlbnRlZCBkZWxpbWl0
ZXI7IHRoaXMgcmV0dXJuZWQgYWJzbDo6c3RyaW5nX3ZpZXcKKy8vIHJlcHJlc2VudHMgdGhlIG5l
eHQgbG9jYXRpb24gd2hlcmUgdGhlIGlucHV0IGB0ZXh0YCBzaG91bGQgYmUgYnJva2VuLgorLy8K
Ky8vIFRoZSByZXR1cm5lZCBhYnNsOjpzdHJpbmdfdmlldyBtYXkgYmUgemVyby1sZW5ndGggaWYg
dGhlIERlbGltaXRlciBkb2VzIG5vdAorLy8gcmVwcmVzZW50IGEgcGFydCBvZiB0aGUgc3RyaW5n
IChlLmcuLCBhIGZpeGVkLWxlbmd0aCBkZWxpbWl0ZXIpLiBJZiBubworLy8gZGVsaW1pdGVyIGlz
IGZvdW5kIGluIHRoZSBpbnB1dCBgdGV4dGAsIGEgemVyby1sZW5ndGggYWJzbDo6c3RyaW5nX3Zp
ZXcKKy8vIHJlZmVycmluZyB0byBgdGV4dC5lbmQoKWAgc2hvdWxkIGJlIHJldHVybmVkIChlLmcu
LAorLy8gYHRleHQuc3Vic3RyKHRleHQuc2l6ZSgpKWApLiBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0
aGUgcmV0dXJuZWQKKy8vIGFic2w6OnN0cmluZ192aWV3IGFsd2F5cyBiZSB3aXRoaW4gdGhlIGJv
dW5kcyBvZiB0aGUgaW5wdXQgYHRleHRgIGdpdmVuIGFzIGFuCiAvLyBhcmd1bWVudC0taXQgbXVz
dCBub3QgcmVmZXIgdG8gYSBzdHJpbmcgdGhhdCBpcyBwaHlzaWNhbGx5IGxvY2F0ZWQgb3V0c2lk
ZSBvZgogLy8gdGhlIGdpdmVuIHN0cmluZy4KIC8vCiAvLyBUaGUgZm9sbG93aW5nIGV4YW1wbGUg
aXMgYSBzaW1wbGUgRGVsaW1pdGVyIG9iamVjdCB0aGF0IGlzIGNyZWF0ZWQgd2l0aCBhCi0vLyBz
aW5nbGUgY2hhciBhbmQgd2lsbCBsb29rIGZvciB0aGF0IGNoYXIgaW4gdGhlIHRleHQgcGFzc2Vk
IHRvIHRoZSBGaW5kKCkKKy8vIHNpbmdsZSBjaGFyIGFuZCB3aWxsIGxvb2sgZm9yIHRoYXQgY2hh
ciBpbiB0aGUgdGV4dCBwYXNzZWQgdG8gdGhlIGBGaW5kKClgCiAvLyBmdW5jdGlvbjoKIC8vCiAv
LyAgIHN0cnVjdCBTaW1wbGVEZWxpbWl0ZXIgewpAQCAtOTYsOSArOTYsOSBAQCBuYW1lc3BhY2Ug
YWJzbCB7CiAvLyAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgRmluZChhYnNsOjpzdHJpbmdfdmlldyB0
ZXh0LCBzaXplX3QgcG9zKSB7CiAvLyAgICAgICBhdXRvIGZvdW5kID0gdGV4dC5maW5kKGNfLCBw
b3MpOwogLy8gICAgICAgaWYgKGZvdW5kID09IGFic2w6OnN0cmluZ192aWV3OjpucG9zKQotLy8g
ICAgICAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5lbmQoKSwgMCk7CisvLyAgICAg
ICAgIHJldHVybiB0ZXh0LnN1YnN0cih0ZXh0LnNpemUoKSk7CiAvLwotLy8gICAgICAgcmV0dXJu
IGFic2w6OnN0cmluZ192aWV3KHRleHQsIGZvdW5kLCAxKTsKKy8vICAgICAgIHJldHVybiB0ZXh0
LnN1YnN0cihmb3VuZCwgMSk7CiAvLyAgICAgfQogLy8gICB9OwogCkBAIC0xMzEsOCArMTMxLDcg
QEAgY2xhc3MgQnlTdHJpbmcgewogLy8gQnlDaGFyCiAvLwogLy8gQSBzaW5nbGUgY2hhcmFjdGVy
IGRlbGltaXRlci4gYEJ5Q2hhcmAgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gYQotLy8g
MS1jaGFyIHN0cmluZyB3aXRoaW4gYSBgQnlTdHJpbmdgIGRlbGltaXRlciwgYnV0IHNsaWdodGx5
IG1vcmUKLS8vIGVmZmljaWVudC4KKy8vIDEtY2hhciBzdHJpbmcgd2l0aGluIGEgYEJ5U3RyaW5n
YCBkZWxpbWl0ZXIsIGJ1dCBzbGlnaHRseSBtb3JlIGVmZmljaWVudC4KIC8vCiAvLyBFeGFtcGxl
OgogLy8KQEAgLTQxMywxMCArNDEyLDEwIEBAIHN0cnVjdCBTa2lwV2hpdGVzcGFjZSB7CiAvLwog
Ly8gVGhlIGBTdHJTcGxpdCgpYCBmdW5jdGlvbiBhZGFwdHMgdGhlIHJldHVybmVkIGNvbGxlY3Rp
b24gdG8gdGhlIGNvbGxlY3Rpb24KIC8vIHNwZWNpZmllZCBieSB0aGUgY2FsbGVyIChlLmcuIGBz
dGQ6OnZlY3RvcmAgYWJvdmUpLiBUaGUgcmV0dXJuZWQgY29sbGVjdGlvbnMKLS8vIG1heSBjb250
YWluIGBzdHJpbmdgLCBgYWJzbDo6c3RyaW5nX3ZpZXdgIChpbiB3aGljaCBjYXNlIHRoZSBvcmln
aW5hbCBzdHJpbmcKLS8vIGJlaW5nIHNwbGl0IG11c3QgZW5zdXJlIHRoYXQgaXQgb3V0bGl2ZXMg
dGhlIGNvbGxlY3Rpb24pLCBvciBhbnkgb2JqZWN0IHRoYXQKLS8vIGNhbiBiZSBleHBsaWNpdGx5
IGNyZWF0ZWQgZnJvbSBhbiBgYWJzbDo6c3RyaW5nX3ZpZXdgLiBUaGlzIGJlaGF2aW9yIHdvcmtz
Ci0vLyBmb3I6CisvLyBtYXkgY29udGFpbiBgc3RkOjpzdHJpbmdgLCBgYWJzbDo6c3RyaW5nX3Zp
ZXdgIChpbiB3aGljaCBjYXNlIHRoZSBvcmlnaW5hbAorLy8gc3RyaW5nIGJlaW5nIHNwbGl0IG11
c3QgZW5zdXJlIHRoYXQgaXQgb3V0bGl2ZXMgdGhlIGNvbGxlY3Rpb24pLCBvciBhbnkKKy8vIG9i
amVjdCB0aGF0IGNhbiBiZSBleHBsaWNpdGx5IGNyZWF0ZWQgZnJvbSBhbiBgYWJzbDo6c3RyaW5n
X3ZpZXdgLiBUaGlzCisvLyBiZWhhdmlvciB3b3JrcyBmb3I6CiAvLwogLy8gMSkgQWxsIHN0YW5k
YXJkIFNUTCBjb250YWluZXJzIGluY2x1ZGluZyBgc3RkOjp2ZWN0b3JgLCBgc3RkOjpsaXN0YCwK
IC8vICAgIGBzdGQ6OmRlcXVlYCwgYHN0ZDo6c2V0YCxgc3RkOjptdWx0aXNldGAsICdzdGQ6Om1h
cGAsIGFuZCBgc3RkOjptdWx0aW1hcGAKQEAgLTQ2MCw3ICs0NTksNyBAQCBzdHJ1Y3QgU2tpcFdo
aXRlc3BhY2UgewogLy8gRXhhbXBsZToKIC8vCiAvLyAgIC8vIFN0b3JlcyBmaXJzdCB0d28gc3Bs
aXQgc3RyaW5ncyBhcyB0aGUgbWVtYmVycyBpbiBhIHN0ZDo6cGFpci4KLS8vICAgc3RkOjpwYWly
PHN0cmluZywgc3RyaW5nPiBwID0gYWJzbDo6U3RyU3BsaXQoImEsYixjIiwgJywnKTsKKy8vICAg
c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gcCA9IGFic2w6OlN0clNwbGl0KCJh
LGIsYyIsICcsJyk7CiAvLyAgIC8vIHAuZmlyc3QgPT0gImEiLCBwLnNlY29uZCA9PSAiYiIgICAg
ICAgLy8gImMiIGlzIG9taXR0ZWQuCiAvLwogLy8gVGhlIGBTdHJTcGxpdCgpYCBmdW5jdGlvbiBj
YW4gYmUgdXNlZCBtdWx0aXBsZSB0aW1lcyB0byBwZXJmb3JtIG1vcmUKQEAgLTQ3MCw3ICs0Njks
NyBAQCBzdHJ1Y3QgU2tpcFdoaXRlc3BhY2UgewogLy8KIC8vICAgLy8gVGhlIGlucHV0IHN0cmlu
ZyAiYT1iPWMsZD1lLGY9LGciIGJlY29tZXMKIC8vICAgLy8geyAiYSIgPT4gImI9YyIsICJkIiA9
PiAiZSIsICJmIiA9PiAiIiwgImciID0+ICIiIH0KLS8vICAgc3RkOjptYXA8c3RyaW5nLCBzdHJp
bmc+IG07CisvLyAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbTsKIC8vICAg
Zm9yIChhYnNsOjpzdHJpbmdfdmlldyBzcCA6IGFic2w6OlN0clNwbGl0KCJhPWI9YyxkPWUsZj0s
ZyIsICcsJykpIHsKIC8vICAgICBtLmluc2VydChhYnNsOjpTdHJTcGxpdChzcCwgYWJzbDo6TWF4
U3BsaXRzKCc9JywgMSkpKTsKIC8vICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJf
c3BsaXRfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXRfYmVuY2htYXJrLmNj
CmluZGV4IDMyNmZmNzQ0ZWJkOTQ2ZTc3ODEwNjNjZTkzZDczMWMyZTE1YzRiNWMuLmYzOGRmY2Zl
NWFmN2ZmOTk5YWY5MTg4Y2M4ZjNhMzlhNjVhNmI3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyX3NwbGl0X2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdF9i
ZW5jaG1hcmsuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAg
LTM1LDE2ICszNSwzOSBAQCBzdGQ6OnN0cmluZyBNYWtlVGVzdFN0cmluZyhpbnQgZGVzaXJlZF9s
ZW5ndGgpIHsKICAgcmV0dXJuIHRlc3Q7CiB9CiAKLXZvaWQgQk1fU3BsaXQyU3RyaW5nUGllY2Uo
YmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fU3BsaXQyU3RyaW5nVmlldyhiZW5j
aG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6OnN0cmluZyB0ZXN0ID0gTWFrZVRlc3RTdHJp
bmcoc3RhdGUucmFuZ2UoMCkpOwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7CiAgICAgc3RkOjp2
ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IHJlc3VsdCA9IGFic2w6OlN0clNwbGl0KHRlc3QsICc7
Jyk7CiAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHJlc3VsdCk7CiAgIH0KIH0KLUJFTkNI
TUFSS19SQU5HRShCTV9TcGxpdDJTdHJpbmdQaWVjZSwgMCwgMSA8PCAyMCk7CitCRU5DSE1BUktf
UkFOR0UoQk1fU3BsaXQyU3RyaW5nVmlldywgMCwgMSA8PCAyMCk7CiAKLXZvaWQgQk1fU3BsaXQy
U3RyaW5nUGllY2VMaWZ0ZWQoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3N0YXRpYyBjb25z
dCBhYnNsOjpzdHJpbmdfdmlldyBrRGVsaW1pdGVycyA9ICI7OiwuIjsKKworc3RkOjpzdHJpbmcg
TWFrZU11bHRpRGVsaW1pdGVyVGVzdFN0cmluZyhpbnQgZGVzaXJlZF9sZW5ndGgpIHsKKyAgc3Rh
dGljIGNvbnN0IGludCBrQXZlcmFnZVZhbHVlTGVuID0gMjU7CisgIHN0ZDo6c3RyaW5nIHRlc3Qo
ZGVzaXJlZF9sZW5ndGggKiBrQXZlcmFnZVZhbHVlTGVuLCAneCcpOworICBmb3IgKGludCBpID0g
MDsgaSAqIGtBdmVyYWdlVmFsdWVMZW4gPCB0ZXN0LnNpemUoKTsgKytpKSB7CisgICAgLy8gQ3lj
bGUgdGhyb3VnaCBhIHZhcmlldHkgb2YgZGVsaW1pdGVycy4KKyAgICB0ZXN0W2kgKiBrQXZlcmFn
ZVZhbHVlTGVuXSA9IGtEZWxpbWl0ZXJzW2kgJSBrRGVsaW1pdGVycy5zaXplKCldOworICB9Cisg
IHJldHVybiB0ZXN0OworfQorCisvLyBNZWFzdXJlIFN0clNwbGl0IHdpdGggQnlBbnlDaGFyIHdp
dGggZm91ciBkZWxpbWl0ZXJzIHRvIGNob29zZSBmcm9tLgordm9pZCBCTV9TcGxpdDJTdHJpbmdW
aWV3QnlBbnlDaGFyKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHN0ZDo6c3RyaW5nIHRl
c3QgPSBNYWtlTXVsdGlEZWxpbWl0ZXJUZXN0U3RyaW5nKHN0YXRlLnJhbmdlKDApKTsKKyAgZm9y
IChhdXRvIF8gOiBzdGF0ZSkgeworICAgIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiBy
ZXN1bHQgPQorICAgICAgICBhYnNsOjpTdHJTcGxpdCh0ZXN0LCBhYnNsOjpCeUFueUNoYXIoa0Rl
bGltaXRlcnMpKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocmVzdWx0KTsKKyAgfQor
fQorQkVOQ0hNQVJLX1JBTkdFKEJNX1NwbGl0MlN0cmluZ1ZpZXdCeUFueUNoYXIsIDAsIDEgPDwg
MjApOworCit2b2lkIEJNX1NwbGl0MlN0cmluZ1ZpZXdMaWZ0ZWQoYmVuY2htYXJrOjpTdGF0ZSYg
c3RhdGUpIHsKICAgc3RkOjpzdHJpbmcgdGVzdCA9IE1ha2VUZXN0U3RyaW5nKHN0YXRlLnJhbmdl
KDApKTsKICAgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IHJlc3VsdDsKICAgZm9yIChh
dXRvIF8gOiBzdGF0ZSkgewpAQCAtNTIsNyArNzUsNyBAQCB2b2lkIEJNX1NwbGl0MlN0cmluZ1Bp
ZWNlTGlmdGVkKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIH0KICAgYmVuY2htYXJrOjpE
b05vdE9wdGltaXplKHJlc3VsdCk7CiB9Ci1CRU5DSE1BUktfUkFOR0UoQk1fU3BsaXQyU3RyaW5n
UGllY2VMaWZ0ZWQsIDAsIDEgPDwgMjApOworQkVOQ0hNQVJLX1JBTkdFKEJNX1NwbGl0MlN0cmlu
Z1ZpZXdMaWZ0ZWQsIDAsIDEgPDwgMjApOwogCiB2b2lkIEJNX1NwbGl0MlN0cmluZyhiZW5jaG1h
cms6OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6OnN0cmluZyB0ZXN0ID0gTWFrZVRlc3RTdHJpbmco
c3RhdGUucmFuZ2UoMCkpOwpAQCAtNjksNyArOTIsOCBAQCBCRU5DSE1BUktfUkFOR0UoQk1fU3Bs
aXQyU3RyaW5nLCAwLCAxIDw8IDIwKTsKIHZvaWQgQk1fU3BsaXQyU3BsaXRTdHJpbmdVc2luZyhi
ZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6OnN0cmluZyB0ZXN0ID0gTWFrZVRlc3RT
dHJpbmcoc3RhdGUucmFuZ2UoMCkpOwogICBmb3IgKGF1dG8gXyA6IHN0YXRlKSB7Ci0gICAgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IHJlc3VsdCA9IGFic2w6OlN0clNwbGl0KHRlc3QsICc7Jywg
YWJzbDo6U2tpcEVtcHR5KCkpOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiByZXN1bHQg
PQorICAgICAgICBhYnNsOjpTdHJTcGxpdCh0ZXN0LCAnOycsIGFic2w6OlNraXBFbXB0eSgpKTsK
ICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocmVzdWx0KTsKICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3Nw
bGl0X3Rlc3QuY2MKaW5kZXggNDEzYWQzMThiZjliMjkzMzdiN2U4ODc4OGE1NTBhOWRiM2U1MGVh
ZS4uNjU4YmNhMWE4Njg3ODkyNzMyMDJkOWY4ZjE1OTA1OGRiM2ZhZWI5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9zdHJfc3BsaXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9z
cGxpdF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBA
IC00MCw4ICs0MCw4IEBAIHVzaW5nIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7CiBU
RVNUKFNwbGl0LCBUcmFpdHNUZXN0KSB7CiAgIHN0YXRpY19hc3NlcnQoIWFic2w6OnN0cmluZ3Nf
aW50ZXJuYWw6OlNwbGl0dGVySXNDb252ZXJ0aWJsZVRvPGludD46OnZhbHVlLAogICAgICAgICAg
ICAgICAgICIiKTsKLSAgc3RhdGljX2Fzc2VydCghYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6U3Bs
aXR0ZXJJc0NvbnZlcnRpYmxlVG88c3RkOjpzdHJpbmc+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAg
ICAiIik7CisgIHN0YXRpY19hc3NlcnQoCisgICAgICAhYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6
U3BsaXR0ZXJJc0NvbnZlcnRpYmxlVG88c3RkOjpzdHJpbmc+Ojp2YWx1ZSwgIiIpOwogICBzdGF0
aWNfYXNzZXJ0KGFic2w6OnN0cmluZ3NfaW50ZXJuYWw6OlNwbGl0dGVySXNDb252ZXJ0aWJsZVRv
PAogICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4+Ojp2YWx1ZSwK
ICAgICAgICAgICAgICAgICAiIik7CkBAIC03MSw4ICs3MSw4IEBAIFRFU1QoU3BsaXQsIFRyYWl0
c1Rlc3QpIHsKIC8vIG5hbWVzcGFjZXMganVzdCBsaWtlIGNhbGxlcnMgd2lsbCBuZWVkIHRvIHVz
ZS4KIFRFU1QoU3BsaXQsIEFQSUV4YW1wbGVzKSB7CiAgIHsKLSAgICAvLyBQYXNzZXMgc3RkOjpz
dHJpbmcgZGVsaW1pdGVyLiBBc3N1bWVzIHRoZSBkZWZhdWx0IG9mIExpdGVyYWwuCi0gICAgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSBhYnNsOjpTdHJTcGxpdCgiYSxiLGMiLCAnLCcpOwor
ICAgIC8vIFBhc3NlcyBzdGQ6OnN0cmluZyBkZWxpbWl0ZXIuIEFzc3VtZXMgdGhlIGRlZmF1bHQg
b2YgQnlTdHJpbmcuCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSBhYnNsOjpTdHJT
cGxpdCgiYSxiLGMiLCAiLCIpOyAgLy8gTk9MSU5UCiAgICAgRVhQRUNUX1RIQVQodiwgRWxlbWVu
dHNBcmUoImEiLCAiYiIsICJjIikpOwogCiAgICAgLy8gRXF1aXZhbGVudCB0by4uLgpAQCAtOTYs
MTcgKzk2LDYgQEAgVEVTVChTcGxpdCwgQVBJRXhhbXBsZXMpIHsKICAgICBFWFBFQ1RfVEhBVCh2
LCBFbGVtZW50c0FyZSgiYSIsICJiIiwgImMiKSk7CiAgIH0KIAotICB7Ci0gICAgLy8gU2FtZSBh
cyBhYm92ZSwgYnV0IHVzaW5nIHN0ZDo6c3RyaW5nCi0gICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+IHYgPSBhYnNsOjpTdHJTcGxpdCgiYSxiLGMiLCAnLCcpOwotICAgIEVYUEVDVF9USEFUKHYs
IEVsZW1lbnRzQXJlKCJhIiwgImIiLCAiYyIpKTsKLQotICAgIC8vIEVxdWl2YWxlbnQgdG8uLi4K
LSAgICB1c2luZyBhYnNsOjpCeUNoYXI7Ci0gICAgdiA9IGFic2w6OlN0clNwbGl0KCJhLGIsYyIs
IEJ5Q2hhcignLCcpKTsKLSAgICBFWFBFQ1RfVEhBVCh2LCBFbGVtZW50c0FyZSgiYSIsICJiIiwg
ImMiKSk7Ci0gIH0KLQogICB7CiAgICAgLy8gVXNlcyB0aGUgTGl0ZXJhbCBzdGQ6OnN0cmluZyAi
PT4iIGFzIHRoZSBkZWxpbWl0ZXIuCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IHYgPSBhYnNsOjpTdHJTcGxpdCgiYT0+Yj0+YyIsICI9PiIpOwpAQCAtMTgyLDcgKzE3MSw4IEBA
IFRFU1QoU3BsaXQsIEFQSUV4YW1wbGVzKSB7CiAgIHsKICAgICAvLyBVc2VzIHRoZSBTa2lwV2hp
dGVzcGFjZSBwcmVkaWNhdGUuCiAgICAgdXNpbmcgYWJzbDo6U2tpcFdoaXRlc3BhY2U7Ci0gICAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSBhYnNsOjpTdHJTcGxpdCgiIGEgLCAsLGIsIiwg
JywnLCBTa2lwV2hpdGVzcGFjZSgpKTsKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9
CisgICAgICAgIGFic2w6OlN0clNwbGl0KCIgYSAsICwsYiwiLCAnLCcsIFNraXBXaGl0ZXNwYWNl
KCkpOwogICAgIEVYUEVDVF9USEFUKHYsIEVsZW1lbnRzQXJlKCIgYSAiLCAiYiIpKTsKICAgfQog
CkBAIC0yMTUsNyArMjA1LDggQEAgVEVTVChTcGxpdCwgQVBJRXhhbXBsZXMpIHsKIAogICB7CiAg
ICAgLy8gUmVzdWx0cyBzdG9yZWQgaW4gYSBzdGQ6Om11bHRpbWFwLgotICAgIHN0ZDo6bXVsdGlt
YXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBtID0gYWJzbDo6U3RyU3BsaXQoImEsMSxiLDIs
YSwzIiwgJywnKTsKKyAgICBzdGQ6Om11bHRpbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4g
bSA9CisgICAgICAgIGFic2w6OlN0clNwbGl0KCJhLDEsYiwyLGEsMyIsICcsJyk7CiAgICAgRVhQ
RUNUX0VRKDMsIG0uc2l6ZSgpKTsKICAgICBhdXRvIGl0ID0gbS5maW5kKCJhIik7CiAgICAgRVhQ
RUNUX0VRKCIxIiwgaXQtPnNlY29uZCk7CkBAIC0yNzEsNyArMjYyLDggQEAgVEVTVChTcGxpdEl0
ZXJhdG9yLCBCYXNpY3MpIHsKICAgRVhQRUNUX0VRKCJhIiwgKml0KTsgIC8vIHRlc3RzIGRlcmVm
ZXJlbmNlCiAgICsraXQ7ICAgICAgICAgICAgICAgICAvLyB0ZXN0cyBwcmVpbmNyZW1lbnQKICAg
RVhQRUNUX05FKGl0LCBlbmQpOwotICBFWFBFQ1RfRVEoImIiLCBzdGQ6OnN0cmluZyhpdC0+ZGF0
YSgpLCBpdC0+c2l6ZSgpKSk7ICAvLyB0ZXN0cyBkZXJlZmVyZW5jZSBhcyBwdHIKKyAgRVhQRUNU
X0VRKCJiIiwKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nKGl0LT5kYXRhKCksIGl0LT5zaXplKCkp
KTsgIC8vIHRlc3RzIGRlcmVmZXJlbmNlIGFzIHB0cgogICBpdCsrOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVzdHMgcG9zdGluY3JlbWVudAogICBFWFBF
Q1RfRVEoaXQsIGVuZCk7CiB9CkBAIC0yOTUsNyArMjg3LDggQEAgVEVTVChTcGxpdEl0ZXJhdG9y
LCBQcmVkaWNhdGUpIHsKICAgRVhQRUNUX0VRKCJhIiwgKml0KTsgIC8vIHRlc3RzIGRlcmVmZXJl
bmNlCiAgICsraXQ7ICAgICAgICAgICAgICAgICAvLyB0ZXN0cyBwcmVpbmNyZW1lbnQgLS0gImIi
IHNob3VsZCBiZSBza2lwcGVkIGhlcmUuCiAgIEVYUEVDVF9ORShpdCwgZW5kKTsKLSAgRVhQRUNU
X0VRKCJjIiwgc3RkOjpzdHJpbmcoaXQtPmRhdGEoKSwgaXQtPnNpemUoKSkpOyAgLy8gdGVzdHMg
ZGVyZWZlcmVuY2UgYXMgcHRyCisgIEVYUEVDVF9FUSgiYyIsCisgICAgICAgICAgICBzdGQ6OnN0
cmluZyhpdC0+ZGF0YSgpLCBpdC0+c2l6ZSgpKSk7ICAvLyB0ZXN0cyBkZXJlZmVyZW5jZSBhcyBw
dHIKICAgaXQrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRlc3RzIHBvc3RpbmNyZW1lbnQKICAgRVhQRUNUX0VRKGl0LCBlbmQpOwogfQpAQCAtNDIxLDEw
ICs0MTQsMTMgQEAgVEVTVChTcGxpdHRlciwgQ29udmVyc2lvbk9wZXJhdG9yKSB7CiAgIFRlc3RN
YXBDb252ZXJzaW9uT3BlcmF0b3I8c3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4o
c3BsaXR0ZXIpOwogICBUZXN0TWFwQ29udmVyc2lvbk9wZXJhdG9yPAogICAgICAgc3RkOjptdWx0
aW1hcDxhYnNsOjpzdHJpbmdfdmlldywgYWJzbDo6c3RyaW5nX3ZpZXc+PihzcGxpdHRlcik7Ci0g
IFRlc3RNYXBDb252ZXJzaW9uT3BlcmF0b3I8c3RkOjptdWx0aW1hcDxhYnNsOjpzdHJpbmdfdmll
dywgc3RkOjpzdHJpbmc+PihzcGxpdHRlcik7Ci0gIFRlc3RNYXBDb252ZXJzaW9uT3BlcmF0b3I8
c3RkOjptdWx0aW1hcDxzdGQ6OnN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXc+PihzcGxpdHRlcik7
CisgIFRlc3RNYXBDb252ZXJzaW9uT3BlcmF0b3I8c3RkOjptdWx0aW1hcDxhYnNsOjpzdHJpbmdf
dmlldywgc3RkOjpzdHJpbmc+PigKKyAgICAgIHNwbGl0dGVyKTsKKyAgVGVzdE1hcENvbnZlcnNp
b25PcGVyYXRvcjxzdGQ6Om11bHRpbWFwPHN0ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldz4+
KAorICAgICAgc3BsaXR0ZXIpOwogICBUZXN0TWFwQ29udmVyc2lvbk9wZXJhdG9yPHN0ZDo6bXVs
dGltYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4oc3BsaXR0ZXIpOwotICBUZXN0TWFwQ29u
dmVyc2lvbk9wZXJhdG9yPHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJp
bmc+PihzcGxpdHRlcik7CisgIFRlc3RNYXBDb252ZXJzaW9uT3BlcmF0b3I8c3RkOjp1bm9yZGVy
ZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+KAorICAgICAgc3BsaXR0ZXIpOwogCiAg
IC8vIFRlc3RzIGNvbnZlcnNpb24gdG8gc3RkOjpwYWlyCiAKQEAgLTU2OCwxMCArNTY0LDkgQEAg
VEVTVChTcGxpdCwgQWNjZXB0c0NlcnRhaW5UZW1wb3JhcmllcykgewogfQogCiBURVNUKFNwbGl0
LCBUZW1wb3JhcnkpIHsKLSAgLy8gVXNlIGEgc3RkOjpzdHJpbmcgbG9uZ2VyIHRoYW4gdGhlIHNt
YWxsLXN0ZDo6c3RyaW5nLW9wdGltaXphdGlvbiBsZW5ndGgsIHNvIHRoYXQgd2hlbgotICAvLyB0
aGUgdGVtcG9yYXJ5IGlzIGRlc3Ryb3llZCwgaWYgdGhlIHNwbGl0dGVyIGtlZXBzIGEgcmVmZXJl
bmNlIHRvIHRoZQotICAvLyBzdGQ6OnN0cmluZydzIGNvbnRlbnRzLCBpdCdsbCByZWZlcmVuY2Ug
ZnJlZWQgbWVtb3J5IGluc3RlYWQgb2YganVzdCBkZWFkCi0gIC8vIG9uLXN0YWNrIG1lbW9yeS4K
KyAgLy8gVXNlIGEgc3RkOjpzdHJpbmcgbG9uZ2VyIHRoYW4gdGhlIFNTTyBsZW5ndGgsIHNvIHRo
YXQgd2hlbiB0aGUgdGVtcG9yYXJ5IGlzCisgIC8vIGRlc3Ryb3llZCwgaWYgdGhlIHNwbGl0dGVy
IGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBzdGQ6OnN0cmluZydzIGNvbnRlbnRzLAorICAvLyBp
dCdsbCByZWZlcmVuY2UgZnJlZWQgbWVtb3J5IGluc3RlYWQgb2YganVzdCBkZWFkIG9uLXN0YWNr
IG1lbW9yeS4KICAgY29uc3QgY2hhciBpbnB1dFtdID0gImEsYixjLGQsZSxmLGcsaCxpLGosayxs
LG0sbixvLHAscSxyLHMsdCx1IjsKICAgRVhQRUNUX0xUKHNpemVvZihzdGQ6OnN0cmluZyksIEFC
U0xfQVJSQVlTSVpFKGlucHV0KSkKICAgICAgIDw8ICJJbnB1dCBzaG91bGQgYmUgbGFyZ2VyIHRo
YW4gZml0cyBvbiB0aGUgc3RhY2suIjsKQEAgLTY0Nyw2ICs2NDIsMTEgQEAgVEVTVChTcGxpdCwg
U3RyaW5nRGVsaW1pdGVyKSB7CiAgIH0KIH0KIAorI2lmICFkZWZpbmVkKF9fY3BwX2NoYXI4X3Qp
CisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XYysrMmEtY29tcGF0IgorI2VuZGlm
CiBURVNUKFNwbGl0LCBVVEY4KSB7CiAgIC8vIFRlc3RzIHNwbGl0dGluZyB1dGY4IHN0cmluZ3Mg
YW5kIHV0ZjggZGVsaW1pdGVycy4KICAgc3RkOjpzdHJpbmcgdXRmOF9zdHJpbmcgPSB1OCJcdTAz
QkFcdTFGNzlcdTAzQzNcdTAzQkNcdTAzQjUiOwpAQCAtNjczLDYgKzY3MywxMCBAQCBURVNUKFNw
bGl0LCBVVEY4KSB7CiAgICAgRVhQRUNUX1RIQVQodiwgRWxlbWVudHNBcmUoIkZvbyIsIHU4Imhc
dTAwRTRsbG8iLCB1OCJ0aFx1NEUxRXJlIikpOwogICB9CiB9CisjaWYgZGVmaW5lZChfX2NsYW5n
X18pCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyNlbmRpZiAgLy8gIWRl
ZmluZWQoX19jcHBfY2hhcjhfdCkKIAogVEVTVChTcGxpdCwgRW1wdHlTdHJpbmdEZWxpbWl0ZXIp
IHsKICAgewpAQCAtNzgyLDcgKzc4Niw3IEBAIHN0YXRpYyBib29sIElzRm91bmRBdChhYnNsOjpz
dHJpbmdfdmlldyB0ZXh0LCBEZWxpbWl0ZXIgZCwgaW50IGV4cGVjdGVkX3BvcykgewogfQogCiAv
LwotLy8gVGVzdHMgZm9yIExpdGVyYWwKKy8vIFRlc3RzIGZvciBCeVN0cmluZwogLy8KIAogLy8g
VGVzdHMgdXNpbmcgYW55IGRlbGltaXRlciB0aGF0IHJlcHJlc2VudHMgYSBzaW5nbGUgY29tbWEu
CkBAIC04MDIsNyArODA2LDcgQEAgdm9pZCBUZXN0Q29tbWEoRGVsaW1pdGVyIGQpIHsKICAgRVhQ
RUNUX0ZBTFNFKElzRm91bmRBdCgiOyIsIGQsIC0xKSk7CiB9CiAKLVRFU1QoRGVsaW1pdGVyLCBM
aXRlcmFsKSB7CitURVNUKERlbGltaXRlciwgQnlTdHJpbmcpIHsKICAgdXNpbmcgYWJzbDo6QnlT
dHJpbmc7CiAgIFRlc3RDb21tYShCeVN0cmluZygiLCIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJpbmdfdmlldy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuY2MKaW5k
ZXggNGNlZWI2YmZmNTgwYzhjNTU2NDJkYjdlMDFlOGQ3ZjIwMjFkOTdiZi4uZGMwMzRhODNlZWE4
NzMwNDMzNjEyOGU1NDcxNzNkMmZkMWZkYTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9z
dHJpbmdfdmlldy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmNjCkBAIC00LDcg
KzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC03NywxOCArNzcsNiBAQCBzdGQ6
Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvLCBzdHJpbmdfdmlldyBwaWVjZSkg
ewogICByZXR1cm4gbzsKIH0KIAotc3RyaW5nX3ZpZXc6OnNpemVfdHlwZSBzdHJpbmdfdmlldzo6
Y29weShjaGFyKiBidWYsIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3R5cGUgcG9zKSBjb25zdCB7Ci0gIHNpemVfdHlwZSB1bGVuID0g
bGVuZ3RoXzsKLSAgYXNzZXJ0KHBvcyA8PSB1bGVuKTsKLSAgc2l6ZV90eXBlIHJsZW4gPSBzdGQ6
Om1pbih1bGVuIC0gcG9zLCBuKTsKLSAgaWYgKHJsZW4gPiAwKSB7Ci0gICAgY29uc3QgY2hhciog
c3RhcnQgPSBwdHJfICsgcG9zOwotICAgIHN0ZDo6Y29weShzdGFydCwgc3RhcnQgKyBybGVuLCBi
dWYpOwotICB9Ci0gIHJldHVybiBybGVuOwotfQotCiBzdHJpbmdfdmlldzo6c2l6ZV90eXBlIHN0
cmluZ192aWV3OjpmaW5kKHN0cmluZ192aWV3IHMsIHNpemVfdHlwZSBwb3MpIGNvbnN0CiAgICAg
bm9leGNlcHQgewogICBpZiAoZW1wdHkoKSB8fCBwb3MgPiBsZW5ndGhfKSB7CkBAIC0yMjgsNyAr
MjE2LDcgQEAgc3RyaW5nX3ZpZXc6OnNpemVfdHlwZSBzdHJpbmdfdmlldzo6ZmluZF9sYXN0X25v
dF9vZihjaGFyIGMsCiAvLyBtZW1iZXIgZGVmaW5pdGlvbnMgdGhhdCBhcmUgcmVxdWlyZWQgYnkg
dGhlIEMrKyBzdGFuZGFyZCwgcmVzdWx0aW5nIGluCiAvLyBMTksxMTY5ICJtdWx0aXBseSBkZWZp
bmVkIiBlcnJvcnMgYXQgbGluayB0aW1lLiBfX2RlY2xzcGVjKHNlbGVjdGFueSkgYXNrcwogLy8g
TVNWQyB0byBjaG9vc2Ugb25seSBvbmUgZGVmaW5pdGlvbiBmb3IgdGhlIHN5bWJvbCBpdCBkZWNv
cmF0ZXMuIFNlZSBkZXRhaWxzCi0vLyBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVz
L2xpYnJhcnkvMzRoMjNkZjgodj12cy4xMDApLmFzcHgKKy8vIGF0IGh0dHBzOi8vbXNkbi5taWNy
b3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvMzRoMjNkZjgodj12cy4xMDApLmFzcHgKICNpZmRlZiBf
TVNDX1ZFUgogI2RlZmluZSBBQlNMX1NUUklOR19WSUVXX1NFTEVDVEFOWSBfX2RlY2xzcGVjKHNl
bGVjdGFueSkKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgKaW5kZXggZWM5ZjYyYmUxNTczM2UzY2RlODI1
NmRmMWNmYzUyMGMyMmUxMWYwZC4uMjVhNGQxZWRlYWZlNzRiYzBkMGJmOWFmOTI5MmQ4YWIxNzcz
OGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtMzIsNyArMzIsNyBAQAogCiAjaWZkZWYgQUJTTF9IQVZFX1NURF9TVFJJTkdf
VklFVwogCi0jaW5jbHVkZSA8c3RyaW5nX3ZpZXc+CisjaW5jbHVkZSA8c3RyaW5nX3ZpZXc+ICAv
LyBJV1lVIHByYWdtYTogZXhwb3J0CiAKIG5hbWVzcGFjZSBhYnNsIHsKIHVzaW5nIHN0ZDo6c3Ry
aW5nX3ZpZXc7CkBAIC01MCw2ICs1MCw3IEBAIHVzaW5nIHN0ZDo6c3RyaW5nX3ZpZXc7CiAKICNp
bmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaCIKICNpbmNsdWRlICJh
YnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL29wdGltaXphdGlvbi5oIgog
I2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKQEAgLTEwMSw3
ICsxMDIsNiBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyBleGFtcGxlLCB3aGVuIHNwbGl0dGluZyBh
IHN0cmluZywgYHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PmAgaXMgYQogLy8gbmF0dXJh
bCBkYXRhIHR5cGUgZm9yIHRoZSBvdXRwdXQuCiAvLwotLy8KIC8vIFdoZW4gY29uc3RydWN0ZWQg
ZnJvbSBhIHNvdXJjZSB3aGljaCBpcyBudWwtdGVybWluYXRlZCwgdGhlIGBzdHJpbmdfdmlld2AK
IC8vIGl0c2VsZiB3aWxsIG5vdCBpbmNsdWRlIHRoZSBudWwtdGVybWluYXRvciB1bmxlc3MgYSBz
cGVjaWZpYyBzaXplIChpbmNsdWRpbmcKIC8vIHRoZSBudWwpIGlzIHBhc3NlZCB0byB0aGUgY29u
c3RydWN0b3IuIEFzIGEgcmVzdWx0LCBjb21tb24gaWRpb21zIHRoYXQgd29yawpAQCAtMTczLDE5
ICsxNzMsOSBAQCBjbGFzcyBzdHJpbmdfdmlldyB7CiAgIC8vIEltcGxpY2l0IGNvbnN0cnVjdG9y
IG9mIGEgYHN0cmluZ192aWV3YCBmcm9tIG51bC10ZXJtaW5hdGVkIGBzdHJgLiBXaGVuCiAgIC8v
IGFjY2VwdGluZyBwb3NzaWJseSBudWxsIHN0cmluZ3MsIHVzZSBgYWJzbDo6TnVsbFNhZmVTdHJp
bmdWaWV3KHN0cilgCiAgIC8vIGluc3RlYWQgKHNlZSBiZWxvdykuCi0jaWYgQUJTTF9IQVZFX0JV
SUxUSU4oX19idWlsdGluX3N0cmxlbikgfHwgXAotICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiAh
ZGVmaW5lZChfX2NsYW5nX18pKQotICAvLyBHQ0MgaGFzIF9fYnVpbHRpbl9zdHJsZW4gYWNjb3Jk
aW5nIHRvCi0gIC8vIGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC43LjAvZ2Nj
L090aGVyLUJ1aWx0aW5zLmh0bWwsIGJ1dAotICAvLyBBQlNMX0hBVkVfQlVJTFRJTiBkb2Vzbid0
IGRldGVjdCB0aGF0LCBzbyB3ZSB1c2UgdGhlIGV4dHJhIGNoZWNrcyBhYm92ZS4KLSAgLy8gX19i
dWlsdGluX3N0cmxlbiBpcyBjb25zdGV4cHIuCiAgIGNvbnN0ZXhwciBzdHJpbmdfdmlldyhjb25z
dCBjaGFyKiBzdHIpICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKICAgICAgIDogcHRyXyhz
dHIpLAotICAgICAgICBsZW5ndGhfKENoZWNrTGVuZ3RoSW50ZXJuYWwoc3RyID8gX19idWlsdGlu
X3N0cmxlbihzdHIpIDogMCkpIHt9Ci0jZWxzZQotICBjb25zdGV4cHIgc3RyaW5nX3ZpZXcoY29u
c3QgY2hhciogc3RyKSAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCi0gICAgICA6IHB0cl8o
c3RyKSwgbGVuZ3RoXyhDaGVja0xlbmd0aEludGVybmFsKHN0ciA/IHN0cmxlbihzdHIpIDogMCkp
IHt9Ci0jZW5kaWYKKyAgICAgICAgbGVuZ3RoXyhzdHIgPyBDaGVja0xlbmd0aEludGVybmFsKFN0
cmxlbkludGVybmFsKHN0cikpIDogMCkge30KIAogICAvLyBJbXBsaWNpdCBjb25zdHJ1Y3RvciBv
ZiBhIGBzdHJpbmdfdmlld2AgZnJvbSBhIGBjb25zdCBjaGFyKmAgYW5kIGxlbmd0aC4KICAgY29u
c3RleHByIHN0cmluZ192aWV3KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdHlwZSBsZW4pCkBAIC0y
NzcsNyArMjY3LDcgQEAgY2xhc3Mgc3RyaW5nX3ZpZXcgewogICAvLyBDaGVja3MgaWYgdGhlIGBz
dHJpbmdfdmlld2AgaXMgZW1wdHkgKHJlZmVycyB0byBubyBjaGFyYWN0ZXJzKS4KICAgY29uc3Rl
eHByIGJvb2wgZW1wdHkoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBsZW5ndGhfID09IDA7IH0K
IAotICAvLyBzdGQ6OnN0cmluZzp2aWV3OjpvcGVyYXRvcltdCisgIC8vIHN0cmluZ192aWV3Ojpv
cGVyYXRvcltdCiAgIC8vCiAgIC8vIFJldHVybnMgdGhlIGl0aCBlbGVtZW50IG9mIGFuIGBzdHJp
bmdfdmlld2AgdXNpbmcgdGhlIGFycmF5IG9wZXJhdG9yLgogICAvLyBOb3RlIHRoYXQgdGhpcyBv
cGVyYXRvciBkb2VzIG5vdCBwZXJmb3JtIGFueSBib3VuZHMgY2hlY2tpbmcuCkBAIC0zNDUsNyAr
MzM1LDE3IEBAIGNsYXNzIHN0cmluZ192aWV3IHsKICAgLy8KICAgLy8gQ29waWVzIHRoZSBjb250
ZW50cyBvZiB0aGUgYHN0cmluZ192aWV3YCBhdCBvZmZzZXQgYHBvc2AgYW5kIGxlbmd0aCBgbmAK
ICAgLy8gaW50byBgYnVmYC4KLSAgc2l6ZV90eXBlIGNvcHkoY2hhciogYnVmLCBzaXplX3R5cGUg
biwgc2l6ZV90eXBlIHBvcyA9IDApIGNvbnN0OworICBzaXplX3R5cGUgY29weShjaGFyKiBidWYs
IHNpemVfdHlwZSBuLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3QgeworICAgIGlmIChBQlNMX1BS
RURJQ1RfRkFMU0UocG9zID4gbGVuZ3RoXykpIHsKKyAgICAgIGJhc2VfaW50ZXJuYWw6OlRocm93
U3RkT3V0T2ZSYW5nZSgiYWJzbDo6c3RyaW5nX3ZpZXc6OmNvcHkiKTsKKyAgICB9CisgICAgc2l6
ZV90eXBlIHJsZW4gPSAoc3RkOjptaW4pKGxlbmd0aF8gLSBwb3MsIG4pOworICAgIGlmIChybGVu
ID4gMCkgeworICAgICAgY29uc3QgY2hhciogc3RhcnQgPSBwdHJfICsgcG9zOworICAgICAgc3Rk
Ojpjb3B5KHN0YXJ0LCBzdGFydCArIHJsZW4sIGJ1Zik7CisgICAgfQorICAgIHJldHVybiBybGVu
OworICB9CiAKICAgLy8gc3RyaW5nX3ZpZXc6OnN1YnN0cigpCiAgIC8vCkBAIC0zNTUsNyArMzU1
LDcgQEAgY2xhc3Mgc3RyaW5nX3ZpZXcgewogICBzdHJpbmdfdmlldyBzdWJzdHIoc2l6ZV90eXBl
IHBvcywgc2l6ZV90eXBlIG4gPSBucG9zKSBjb25zdCB7CiAgICAgaWYgKEFCU0xfUFJFRElDVF9G
QUxTRShwb3MgPiBsZW5ndGhfKSkKICAgICAgIGJhc2VfaW50ZXJuYWw6OlRocm93U3RkT3V0T2ZS
YW5nZSgiYWJzbDo6c3RyaW5nX3ZpZXc6OnN1YnN0ciIpOwotICAgIG4gPSBzdGQ6Om1pbihuLCBs
ZW5ndGhfIC0gcG9zKTsKKyAgICBuID0gKHN0ZDo6bWluKShuLCBsZW5ndGhfIC0gcG9zKTsKICAg
ICByZXR1cm4gc3RyaW5nX3ZpZXcocHRyXyArIHBvcywgbik7CiAgIH0KIApAQCAtMzY4LDcgKzM2
OCw3IEBAIGNsYXNzIHN0cmluZ192aWV3IHsKICAgLy8gb24gdGhlIHJlc3BlY3RpdmUgc2l6ZXMg
b2YgdGhlIHR3byBgc3RyaW5nX3ZpZXdgcyB0byBkZXRlcm1pbmUgd2hpY2ggaXMKICAgLy8gc21h
bGxlciwgZXF1YWwsIG9yIGdyZWF0ZXIuCiAgIGludCBjb21wYXJlKHN0cmluZ192aWV3IHgpIGNv
bnN0IG5vZXhjZXB0IHsKLSAgICBhdXRvIG1pbl9sZW5ndGggPSBzdGQ6Om1pbihsZW5ndGhfLCB4
Lmxlbmd0aF8pOworICAgIGF1dG8gbWluX2xlbmd0aCA9IChzdGQ6Om1pbikobGVuZ3RoXywgeC5s
ZW5ndGhfKTsKICAgICBpZiAobWluX2xlbmd0aCA+IDApIHsKICAgICAgIGludCByID0gbWVtY21w
KHB0cl8sIHgucHRyXywgbWluX2xlbmd0aCk7CiAgICAgICBpZiAociA8IDApIHJldHVybiAtMTsK
QEAgLTQ5MCwxMCArNDkwLDI4IEBAIGNsYXNzIHN0cmluZ192aWV3IHsKIAogIHByaXZhdGU6CiAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90eXBlIGtNYXhTaXplID0KLSAgICAgIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZGlmZmVyZW5jZV90eXBlPjo6bWF4KCk7CisgICAgICAoc3RkOjpudW1lcmljX2xp
bWl0czxkaWZmZXJlbmNlX3R5cGU+OjptYXgpKCk7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3R5cGUgQ2hlY2tMZW5ndGhJbnRlcm5hbChzaXplX3R5cGUgbGVuKSB7Ci0gICAgcmV0dXJuIGxl
bjsKKyAgICByZXR1cm4gQUJTTF9BU1NFUlQobGVuIDw9IGtNYXhTaXplKSwgbGVuOworICB9CisK
KyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgU3RybGVuSW50ZXJuYWwoY29uc3QgY2hhciog
c3RyKSB7CisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTkxMCAmJiAhZGVm
aW5lZChfX2NsYW5nX18pCisgICAgLy8gTVNWQyAyMDE3KyBjYW4gZXZhbHVhdGUgdGhpcyBhdCBj
b21waWxlLXRpbWUuCisgICAgY29uc3QgY2hhciogYmVnaW4gPSBzdHI7CisgICAgd2hpbGUgKCpz
dHIgIT0gJ1wwJykgKytzdHI7CisgICAgcmV0dXJuIHN0ciAtIGJlZ2luOworI2VsaWYgQUJTTF9I
QVZFX0JVSUxUSU4oX19idWlsdGluX3N0cmxlbikgfHwgXAorICAgIChkZWZpbmVkKF9fR05VQ19f
KSAmJiAhZGVmaW5lZChfX2NsYW5nX18pKQorICAgIC8vIEdDQyBoYXMgX19idWlsdGluX3N0cmxl
biBhY2NvcmRpbmcgdG8KKyAgICAvLyBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2Nj
LTQuNy4wL2djYy9PdGhlci1CdWlsdGlucy5odG1sLCBidXQKKyAgICAvLyBBQlNMX0hBVkVfQlVJ
TFRJTiBkb2Vzbid0IGRldGVjdCB0aGF0LCBzbyB3ZSB1c2UgdGhlIGV4dHJhIGNoZWNrcyBhYm92
ZS4KKyAgICAvLyBfX2J1aWx0aW5fc3RybGVuIGlzIGNvbnN0ZXhwci4KKyAgICByZXR1cm4gX19i
dWlsdGluX3N0cmxlbihzdHIpOworI2Vsc2UKKyAgICByZXR1cm4gc3RyID8gc3RybGVuKHN0cikg
OiAwOworI2VuZGlmCiAgIH0KIAogICBjb25zdCBjaGFyKiBwdHJfOwpAQCAtNTA4LDYgKzUyNiw3
IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oc3RyaW5nX3ZpZXcgeCwgc3RyaW5nX3ZpZXcgeSkg
bm9leGNlcHQgewogICBpZiAobGVuICE9IHkuc2l6ZSgpKSB7CiAgICAgcmV0dXJuIGZhbHNlOwog
ICB9CisKICAgcmV0dXJuIHguZGF0YSgpID09IHkuZGF0YSgpIHx8IGxlbiA8PSAwIHx8CiAgICAg
ICAgICBtZW1jbXAoeC5kYXRhKCksIHkuZGF0YSgpLCBsZW4pID09IDA7CiB9CkBAIC01MTcsNyAr
NTM2LDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShzdHJpbmdfdmlldyB4LCBzdHJpbmdfdmll
dyB5KSBub2V4Y2VwdCB7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yPChzdHJpbmdfdmlldyB4
LCBzdHJpbmdfdmlldyB5KSBub2V4Y2VwdCB7Ci0gIGF1dG8gbWluX3NpemUgPSBzdGQ6Om1pbih4
LnNpemUoKSwgeS5zaXplKCkpOworICBhdXRvIG1pbl9zaXplID0gKHN0ZDo6bWluKSh4LnNpemUo
KSwgeS5zaXplKCkpOwogICBjb25zdCBpbnQgciA9IG1pbl9zaXplID09IDAgPyAwIDogbWVtY21w
KHguZGF0YSgpLCB5LmRhdGEoKSwgbWluX3NpemUpOwogICByZXR1cm4gKHIgPCAwKSB8fCAociA9
PSAwICYmIHguc2l6ZSgpIDwgeS5zaXplKCkpOwogfQpAQCAtNTQ3LDcgKzU2Niw3IEBAIG5hbWVz
cGFjZSBhYnNsIHsKIC8vIFByb3ZpZGVkIGJlY2F1c2Ugc3RkOjpzdHJpbmdfdmlldzo6c3Vic3Ry
IHRocm93cyBpZiBgcG9zID4gc2l6ZSgpYAogaW5saW5lIHN0cmluZ192aWV3IENsaXBwZWRTdWJz
dHIoc3RyaW5nX3ZpZXcgcywgc2l6ZV90IHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBuID0gc3RyaW5nX3ZpZXc6Om5wb3MpIHsKLSAgcG9zID0gc3RkOjptaW4o
cG9zLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHMuc2l6ZSgpKSk7CisgIHBvcyA9IChzdGQ6Om1pbiko
cG9zLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHMuc2l6ZSgpKSk7CiAgIHJldHVybiBzLnN1YnN0cihw
b3MsIG4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3X2JlbmNo
bWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXdfYmVuY2htYXJrLmNjCmluZGV4IGZi
NDZkYjE4YjNjMzkwMmIwZDdkNjhlY2I1M2IwNmE1N2FkNTVkM2YuLjQ2OTA5Y2IwOTNkNDQzOWZm
YjM1ZGUyNGQyYjZlOGNhYzRmYjYxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5n
X3ZpZXdfYmVuY2htYXJrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXdfYmVuY2ht
YXJrLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNTEs
NyArMTUxLDcgQEAgdm9pZCBCTV9maW5kX3N0cmluZ192aWV3X2xlbl9vbmUoYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKICAgc3RkOjpzdHJpbmcgaGF5c3RhY2soc3RhdGUucmFuZ2UoMCksICcw
Jyk7CiAgIGFic2w6OnN0cmluZ192aWV3IHMoaGF5c3RhY2spOwogICBmb3IgKGF1dG8gXyA6IHN0
YXRlKSB7Ci0gICAgcy5maW5kKCJ4Iik7ICAvLyBub3QgcHJlc2VudDsgbGVuZ3RoIDEKKyAgICBi
ZW5jaG1hcms6OkRvTm90T3B0aW1pemUocy5maW5kKCJ4IikpOyAgLy8gbm90IHByZXNlbnQ7IGxl
bmd0aCAxCiAgIH0KIH0KIEJFTkNITUFSSyhCTV9maW5kX3N0cmluZ192aWV3X2xlbl9vbmUpLT5S
YW5nZSgxLCAxIDw8IDIwKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIEJNX2ZpbmRfc3RyaW5n
X3ZpZXdfbGVuX3R3byhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBzdGQ6OnN0cmluZyBo
YXlzdGFjayhzdGF0ZS5yYW5nZSgwKSwgJzAnKTsKICAgYWJzbDo6c3RyaW5nX3ZpZXcgcyhoYXlz
dGFjayk7CiAgIGZvciAoYXV0byBfIDogc3RhdGUpIHsKLSAgICBzLmZpbmQoInh4Iik7ICAvLyBu
b3QgcHJlc2VudDsgbGVuZ3RoIDIKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUocy5maW5k
KCJ4eCIpKTsgIC8vIG5vdCBwcmVzZW50OyBsZW5ndGggMgogICB9CiB9CiBCRU5DSE1BUksoQk1f
ZmluZF9zdHJpbmdfdmlld19sZW5fdHdvKS0+UmFuZ2UoMSwgMSA8PCAyMCk7CkBAIC0xNjksNyAr
MTY5LDcgQEAgdm9pZCBCTV9maW5kX29uZV9jaGFyKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7
CiAgIHN0ZDo6c3RyaW5nIGhheXN0YWNrKHN0YXRlLnJhbmdlKDApLCAnMCcpOwogICBhYnNsOjpz
dHJpbmdfdmlldyBzKGhheXN0YWNrKTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIHMu
ZmluZCgneCcpOyAgLy8gbm90IHByZXNlbnQKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUo
cy5maW5kKCd4JykpOyAgLy8gbm90IHByZXNlbnQKICAgfQogfQogQkVOQ0hNQVJLKEJNX2ZpbmRf
b25lX2NoYXIpLT5SYW5nZSgxLCAxIDw8IDIwKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEJN
X3JmaW5kX29uZV9jaGFyKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIHN0ZDo6c3RyaW5n
IGhheXN0YWNrKHN0YXRlLnJhbmdlKDApLCAnMCcpOwogICBhYnNsOjpzdHJpbmdfdmlldyBzKGhh
eXN0YWNrKTsKICAgZm9yIChhdXRvIF8gOiBzdGF0ZSkgewotICAgIHMucmZpbmQoJ3gnKTsgIC8v
IG5vdCBwcmVzZW50CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHMucmZpbmQoJ3gnKSk7
ICAvLyBub3QgcHJlc2VudAogICB9CiB9CiBCRU5DSE1BUksoQk1fcmZpbmRfb25lX2NoYXIpLT5S
YW5nZSgxLCAxIDw8IDIwKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEJNX3dvcnN0X2Nhc2Vf
ZmluZF9maXJzdF9vZihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSwgaW50IGhheXN0YWNrX2xlbikg
ewogCiAgIGFic2w6OnN0cmluZ192aWV3IHMoaGF5c3RhY2spOwogICBmb3IgKGF1dG8gXyA6IHN0
YXRlKSB7Ci0gICAgcy5maW5kX2ZpcnN0X29mKG5lZWRsZSk7CisgICAgYmVuY2htYXJrOjpEb05v
dE9wdGltaXplKHMuZmluZF9maXJzdF9vZihuZWVkbGUpKTsKICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlu
Z192aWV3X3Rlc3QuY2MKaW5kZXggYTk0ZTgyMjU0ZWU0NTIxZGZjMTFiMDVhYTg5ZDBlNzQxY2E1
YjdjYS4uNDE5MzUzZjA4M2VhNDVlYzAzYzM5ZTEyMDMyNGIwNmJiODFlNTlkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlld190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3RyaW5nX3ZpZXdfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMjg0LDkgKzI4NCwxMCBAQCBURVNUKFN0cmluZ1ZpZXdUZXN0LCBDb21wYXJpc29u
T3BlcmF0b3JzQnlDaGFyYWN0ZXJQb3NpdGlvbikgewogfQogI3VuZGVmIENPTVBBUkUKIAotLy8g
U2FkbHksIG91ciB1c2VycyBvZnRlbiBjb25mdXNlIHN0cmluZzo6bnBvcyB3aXRoIGFic2w6OnN0
cmluZ192aWV3OjpucG9zOwotLy8gU28gbXVjaCBzbyB0aGF0IHdlIHRlc3QgaGVyZSB0aGF0IHRo
ZXkgYXJlIHRoZSBzYW1lLiAgVGhleSBuZWVkIHRvCi0vLyBib3RoIGJlIHVuc2lnbmVkLCBhbmQg
Ym90aCBiZSB0aGUgbWF4aW11bS12YWx1ZWQgaW50ZWdlciBvZiB0aGVpciB0eXBlLgorLy8gU2Fk
bHksIG91ciB1c2VycyBvZnRlbiBjb25mdXNlIHN0ZDo6c3RyaW5nOjpucG9zIHdpdGgKKy8vIGFi
c2w6OnN0cmluZ192aWV3OjpucG9zOyBTbyBtdWNoIHNvIHRoYXQgd2UgdGVzdCBoZXJlIHRoYXQg
dGhleSBhcmUgdGhlIHNhbWUuCisvLyBUaGV5IG5lZWQgdG8gYm90aCBiZSB1bnNpZ25lZCwgYW5k
IGJvdGggYmUgdGhlIG1heGltdW0tdmFsdWVkIGludGVnZXIgb2YKKy8vIHRoZWlyIHR5cGUuCiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlzX3R5cGUgewpAQCAtMzY4LDYgKzM2OSwx
MSBAQCBURVNUKFN0cmluZ1ZpZXdUZXN0LCBTVEwxKSB7CiAgIEVYUEVDVF9FUShidWZbMV0sIGNb
MV0pOwogICBFWFBFQ1RfRVEoYnVmWzJdLCBjWzJdKTsKICAgRVhQRUNUX0VRKGJ1ZlszXSwgYVsz
XSk7CisjaWZkZWYgQUJTTF9IQVZFX0VYQ0VQVElPTlMKKyAgRVhQRUNUX1RIUk9XKGEuY29weShi
dWYsIDEsIDI3KSwgc3RkOjpvdXRfb2ZfcmFuZ2UpOworI2Vsc2UKKyAgRVhQRUNUX0RFQVRIKGEu
Y29weShidWYsIDEsIDI3KSwgImFic2w6OnN0cmluZ192aWV3Ojpjb3B5Iik7CisjZW5kaWYKIH0K
IAogLy8gU2VwYXJhdGVkIGZyb20gU1RMMSgpIGJlY2F1c2Ugc29tZSBjb21waWxlcnMgcHJvZHVj
ZSBhbiBvdmVybHkKQEAgLTY3OCw5ICs2ODQsOSBAQCBURVNUKFN0cmluZ1ZpZXdUZXN0LCBTVEwy
U3Vic3RyKSB7CiAgIEVYUEVDVF9FUShhLnN1YnN0cigyMywgYWJzbDo6c3RyaW5nX3ZpZXc6Om5w
b3MpLCBjKTsKICAgLy8gdGhyb3cgZXhjZXB0aW9uCiAjaWZkZWYgQUJTTF9IQVZFX0VYQ0VQVElP
TlMKLSAgRVhQRUNUX1RIUk9XKGEuc3Vic3RyKDk5LCAyKSwgc3RkOjpvdXRfb2ZfcmFuZ2UpOwor
ICBFWFBFQ1RfVEhST1coKHZvaWQpYS5zdWJzdHIoOTksIDIpLCBzdGQ6Om91dF9vZl9yYW5nZSk7
CiAjZWxzZQotICBFWFBFQ1RfREVBVEgoYS5zdWJzdHIoOTksIDIpLCAiYWJzbDo6c3RyaW5nX3Zp
ZXc6OnN1YnN0ciIpOworICBFWFBFQ1RfREVBVEgoKHZvaWQpYS5zdWJzdHIoOTksIDIpLCAiYWJz
bDo6c3RyaW5nX3ZpZXc6OnN1YnN0ciIpOwogI2VuZGlmCiB9CiAKQEAgLTc1NSw3ICs3NjEsNiBA
QCBURVNUKFN0cmluZ1ZpZXdUZXN0LCBSZW1vdmUpIHsKICAgc3RkOjpzdHJpbmcgczEoIjEyMyIp
OwogICBzMSArPSAnXDAnOwogICBzMSArPSAiNDU2IjsKLSAgYWJzbDo6c3RyaW5nX3ZpZXcgYihz
MSk7CiAgIGFic2w6OnN0cmluZ192aWV3IGU7CiAgIHN0ZDo6c3RyaW5nIHMyOwogCkBAIC05NDEs
NiArOTQ2LDExIEBAIFRFU1QoU3RyaW5nVmlld1Rlc3QsIENvbnN0ZXhwckNvbXBpbGVzKSB7CiAj
ZXJyb3IgR0NDL2NsYW5nIHNob3VsZCBoYXZlIGNvbnN0ZXhwciBzdHJpbmdfdmlldy4KICNlbmRp
ZgogCisvLyBNU1ZDIDIwMTcrIHNob3VsZCBiZSBhYmxlIHRvIGNvbnN0cnVjdCBhIGNvbnN0ZXhw
ciBzdHJpbmdfdmlldyBmcm9tIGEgY3N0ci4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVND
X1ZFUiA+PSAxOTEwCisjZGVmaW5lIEFCU0xfSEFWRV9DT05TVEVYUFJfU1RSSU5HX1ZJRVdfRlJP
TV9DU1RSIDEKKyNlbmRpZgorCiAjZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfU1RSSU5HX1ZJRVcK
IAogI2lmZGVmIEFCU0xfSEFWRV9DT05TVEVYUFJfU1RSSU5HX1ZJRVdfRlJPTV9DU1RSCkBAIC05
NjksOCArOTc5LDE2IEBAIFRFU1QoU3RyaW5nVmlld1Rlc3QsIENvbnN0ZXhwckNvbXBpbGVzKSB7
CiAgIGNvbnN0ZXhwciBhYnNsOjpzdHJpbmdfdmlldzo6aXRlcmF0b3IgY29uc3RfZW5kID0gY3N0
cl9sZW4uZW5kKCk7CiAgIGNvbnN0ZXhwciBhYnNsOjpzdHJpbmdfdmlldzo6c2l6ZV90eXBlIGNv
bnN0X3NpemUgPSBjc3RyX2xlbi5zaXplKCk7CiAgIGNvbnN0ZXhwciBhYnNsOjpzdHJpbmdfdmll
dzo6c2l6ZV90eXBlIGNvbnN0X2xlbmd0aCA9IGNzdHJfbGVuLmxlbmd0aCgpOworICBzdGF0aWNf
YXNzZXJ0KGNvbnN0X2JlZ2luICsgY29uc3Rfc2l6ZSA9PSBjb25zdF9lbmQsCisgICAgICAgICAg
ICAgICAgInBvaW50ZXIgYXJpdGhtZXRpYyBjaGVjayIpOworICBzdGF0aWNfYXNzZXJ0KGNvbnN0
X2JlZ2luICsgY29uc3RfbGVuZ3RoID09IGNvbnN0X2VuZCwKKyAgICAgICAgICAgICAgICAicG9p
bnRlciBhcml0aG1ldGljIGNoZWNrIik7CisjaWZuZGVmIF9NU0NfVkVSCisgIC8vIE1TVkMgaGFz
IGJ1Z3MgZG9pbmcgY29uc3RleHByIHBvaW50ZXIgYXJpdGhtZXRpYy4KKyAgLy8gaHR0cHM6Ly9k
ZXZlbG9wZXJjb21tdW5pdHkudmlzdWFsc3R1ZGlvLmNvbS9jb250ZW50L3Byb2JsZW0vNDgyMTky
L2JhZC1wb2ludGVyLWFyaXRobWV0aWMtaW4tY29uc3RlcHhyLTIwMTktcmMxLXN2YzEuaHRtbAog
ICBFWFBFQ1RfRVEoY29uc3RfYmVnaW4gKyBjb25zdF9zaXplLCBjb25zdF9lbmQpOwogICBFWFBF
Q1RfRVEoY29uc3RfYmVnaW4gKyBjb25zdF9sZW5ndGgsIGNvbnN0X2VuZCk7CisjZW5kaWYKIAog
ICBjb25zdGV4cHIgYm9vbCBpc2VtcHR5ID0gc3AuZW1wdHkoKTsKICAgRVhQRUNUX1RSVUUoaXNl
bXB0eSk7CkBAIC05OTUsOCArMTAxMyw4IEBAIFRFU1QoU3RyaW5nVmlld1Rlc3QsIENvbnN0ZXhw
ckNvbXBpbGVzKSB7CiBURVNUKFN0cmluZ1ZpZXdUZXN0LCBOb2V4Y2VwdCkgewogICBFWFBFQ1Rf
VFJVRSgoc3RkOjppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8YWJzbDo6c3RyaW5nX3ZpZXcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyY+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIChzdGQ6OmlzX25vdGhyb3df
Y29uc3RydWN0aWJsZTxhYnNsOjpzdHJpbmdfdmlldywgY29uc3Qgc3RkOjpzdHJpbmcmPjo6dmFs
dWUpKTsKKyAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPGFic2w6
OnN0cmluZ192aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmPjo6dmFsdWUpKTsKICAgRVhQRUNUX1RSVUUoc3RkOjppc19u
b3Rocm93X2NvbnN0cnVjdGlibGU8YWJzbDo6c3RyaW5nX3ZpZXc+Ojp2YWx1ZSk7CiAgIGNvbnN0
ZXhwciBhYnNsOjpzdHJpbmdfdmlldyBzcDsKICAgRVhQRUNUX1RSVUUobm9leGNlcHQoc3AuYmVn
aW4oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJpcC5oCmluZGV4IDhkMGQ3YzZiZmMxMjMwZjBjMzlhMTUxMjE4ZTFjYzkyN2I4ODM2YmYu
LmUxMzQxZTA4ZWE3NjgxZjc5MTJjZGQ0ODZmZGExZTEyNDgyMGUzMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3Mvc3RyaXAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwLmgKQEAgLTUsNyAr
NSw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyaXBfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXBfdGVzdC5jYwppbmRleCA0MGM0
YzYwNzEyMTEyMDgxMDRjN2RkYjJmZGNmMzc2NTE5OTI0MzQ3Li5lNGUwMGNiNjZlYmNmN2YxODk3
OGMzYzYyNjc3MzMwZWYyNWRkYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwX3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAog
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAv
LwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yNyw5ICsyNyw2IEBACiAKIG5hbWVzcGFjZSB7
CiAKLXVzaW5nIHRlc3Rpbmc6OkVsZW1lbnRzQXJlOwotdXNpbmcgdGVzdGluZzo6SXNFbXB0eTsK
LQogVEVTVChTdHJpcCwgQ29uc3VtZVByZWZpeE9uZUNoYXIpIHsKICAgYWJzbDo6c3RyaW5nX3Zp
ZXcgaW5wdXQoImFiYyIpOwogICBFWFBFQ1RfVFJVRShhYnNsOjpDb25zdW1lUHJlZml4KCZpbnB1
dCwgImEiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N1YnN0aXR1dGUuY2MKaW5kZXggM2IyMDA1OTQ1MDk1MTYxMzk0MTlkOGYyMWNm
ZDRhZDIxMDAxNGY3OS4uYmMxNzY5NTBlNDUzM2VkNWMwOGFhM2FmZTgyMTY2NjY0NzZjMmU5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3Vic3RpdHV0ZS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N1YnN0aXR1dGUuaAppbmRleCA0ZGU3YjRlNzVmZjIzYjQxMzQxZmQ2MzVjZjIyMWRhNjY5YmQ1
MWQ0Li4yMzNlOWRjZjkzODYwYjc2MmMzOTNkNGU0NWNjYzg2YzBlN2U4ZTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1
dGUuaApAQCAtNSw3ICs1LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMzUsMTkg
KzM1LDIxIEBACiAvLyBhbmQgc2luZ2xlIGRpZ2l0IHBvc2l0aW9uYWwgaWRzIHRvIGluZGljYXRl
IHdoaWNoIHN1YnN0aXR1dGlvbiBhcmd1bWVudHMgdG8KIC8vIHVzZSBhdCB0aGF0IGxvY2F0aW9u
IHdpdGhpbiB0aGUgZm9ybWF0IHN0cmluZy4KIC8vCisvLyBBICckJCcgc2VxdWVuY2UgaW4gdGhl
IGZvcm1hdCBzdHJpbmcgY2F1c2VzIGEgbGl0ZXJhbCAnJCcgY2hhcmFjdGVyIHRvIGJlCisvLyBv
dXRwdXQuCisvLwogLy8gRXhhbXBsZSAxOgotLy8gICBzdHJpbmcgcyA9IFN1YnN0aXR1dGUoIiQx
IHB1cmNoYXNlZCAkMCAkMi4gVGhhbmtzICQxISIsCi0vLyAgICAgICAgICAgICAgICAgICAgICAg
ICA1LCAiQm9iIiwgIkFwcGxlcyIpOwotLy8gICBFWFBFQ1RfRVEoIkJvYiBwdXJjaGFzZWQgNSBB
cHBsZXMuIFRoYW5rcyBCb2IhIiwgcyk7CisvLyAgIHN0ZDo6c3RyaW5nIHMgPSBTdWJzdGl0dXRl
KCIkMSBwdXJjaGFzZWQgJDAgJDIgZm9yICQkMTAuIFRoYW5rcyAkMSEiLAorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1LCAiQm9iIiwgIkFwcGxlcyIpOworLy8gICBFWFBFQ1RfRVEo
IkJvYiBwdXJjaGFzZWQgNSBBcHBsZXMgZm9yICQxMC4gVGhhbmtzIEJvYiEiLCBzKTsKIC8vCiAv
LyBFeGFtcGxlIDI6Ci0vLyAgIHN0cmluZyBzID0gIkhpLiAiOworLy8gICBzdGQ6OnN0cmluZyBz
ID0gIkhpLiAiOwogLy8gICBTdWJzdGl0dXRlQW5kQXBwZW5kKCZzLCAiTXkgbmFtZSBpcyAkMCBh
bmQgSSBhbSAkMSB5ZWFycyBvbGQuIiwgIkJvYiIsIDUpOwogLy8gICBFWFBFQ1RfRVEoIkhpLiBN
eSBuYW1lIGlzIEJvYiBhbmQgSSBhbSA1IHllYXJzIG9sZC4iLCBzKTsKIC8vCi0vLwogLy8gU3Vw
cG9ydGVkIHR5cGVzOgotLy8gICAqIGFic2w6OnN0cmluZ192aWV3LCBzdHJpbmcsIGNvbnN0IGNo
YXIqIChudWxsIGlzIGVxdWl2YWxlbnQgdG8gIiIpCisvLyAgICogYWJzbDo6c3RyaW5nX3ZpZXcs
IHN0ZDo6c3RyaW5nLCBjb25zdCBjaGFyKiAobnVsbCBpcyBlcXVpdmFsZW50IHRvICIiKQogLy8g
ICAqIGludDMyX3QsIGludDY0X3QsIHVpbnQzMl90LCB1aW50NjQKIC8vICAgKiBmbG9hdCwgZG91
YmxlCiAvLyAgICogYm9vbCAoUHJpbnRlZCBhcyAidHJ1ZSIgb3IgImZhbHNlIikKQEAgLTcwLDYg
KzcyLDggQEAKIAogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvYmFz
ZS9tYWNyb3MuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIgpAQCAtMTUyLDYgKzE1Niwx
NyBAQCBjbGFzcyBBcmcgewogICBBcmcoSGV4IGhleCk7ICAvLyBOT0xJTlQocnVudGltZS9leHBs
aWNpdCkKICAgQXJnKERlYyBkZWMpOyAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCiAKKyAg
Ly8gdmVjdG9yPGJvb2w+OjpyZWZlcmVuY2UgYW5kIGNvbnN0X3JlZmVyZW5jZSByZXF1aXJlIHNw
ZWNpYWwgaGVscCB0bworICAvLyBjb252ZXJ0IHRvIGBBbHBoYU51bWAgYmVjYXVzZSBpdCByZXF1
aXJlcyB0d28gdXNlciBkZWZpbmVkIGNvbnZlcnNpb25zLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwKKyAgICAgICAgICAgIGFic2w6OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgIHN0ZDo6
aXNfY2xhc3M8VD46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgKHN0ZDo6aXNfc2FtZTxULCBz
dGQ6OnZlY3Rvcjxib29sPjo6cmVmZXJlbmNlPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAg
c3RkOjppc19zYW1lPFQsIHN0ZDo6dmVjdG9yPGJvb2w+Ojpjb25zdF9yZWZlcmVuY2U+Ojp2YWx1
ZSk+KiA9CisgICAgICAgICAgICAgICAgbnVsbHB0cj4KKyAgQXJnKFQgdmFsdWUpICAvLyBOT0xJ
TlQoZ29vZ2xlLWV4cGxpY2l0LWNvbnN0cnVjdG9yKQorICAgICAgOiBBcmcoc3RhdGljX2Nhc3Q8
Ym9vbD4odmFsdWUpKSB7fQorCiAgIC8vIGB2b2lkKmAgdmFsdWVzLCB3aXRoIHRoZSBleGNlcHRp
b24gb2YgYGNoYXIqYCwgYXJlIHByaW50ZWQgYXMKICAgLy8gIjB4PGhleCB2YWx1ZT4iLiBIb3dl
dmVyLCBpbiB0aGUgY2FzZSBvZiBgbnVsbHB0cmAsICJOVUxMIiBpcyBwcmludGVkLgogICBBcmco
Y29uc3Qgdm9pZCogdmFsdWUpOyAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCkBAIC00NTYs
NyArNDcxLDcgQEAgdm9pZCBTdWJzdGl0dXRlQW5kQXBwZW5kKAogLy8gRXhhbXBsZToKIC8vICB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KIC8vICB2b2lkIFZhck1zZyhhYnNsOjpzdHJpbmdf
dmlldyBmb3JtYXQsIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKLS8vICAgIHN0cmluZyBzID0gYWJz
bDo6U3Vic3RpdHV0ZShmb3JtYXQsIGFyZ3MuLi4pOworLy8gICAgc3RkOjpzdHJpbmcgcyA9IGFi
c2w6OlN1YnN0aXR1dGUoZm9ybWF0LCBhcmdzLi4uKTsKIAogQUJTTF9NVVNUX1VTRV9SRVNVTFQg
aW5saW5lIHN0ZDo6c3RyaW5nIFN1YnN0aXR1dGUoYWJzbDo6c3RyaW5nX3ZpZXcgZm9ybWF0KSB7
CiAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKQEAgLTU3NCw3MCArNTg5LDcwIEBAIHN0ZDo6c3RyaW5n
IFN1YnN0aXR1dGUoY29uc3QgY2hhciogZm9ybWF0LCBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFs
OjpBcmcmIGEwKQogICAgICAgICAgICAgICAgICAgICAgImNvbnRhaW5zIG9uZSBvZiAkMS0kOSIp
OwogCiBzdGQ6OnN0cmluZyBTdWJzdGl0dXRlKGNvbnN0IGNoYXIqIGZvcm1hdCwgY29uc3Qgc3Vi
c3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0
aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1
YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEpCiAgICAgQUJTTF9CQURfQ0FMTF9JRihzdWJzdGl0
dXRlX2ludGVybmFsOjpQbGFjZWhvbGRlckJpdG1hc2soZm9ybWF0KSAhPSAzLAogICAgICAgICAg
ICAgICAgICAgICAgIlRoZXJlIHdlcmUgMiBzdWJzdGl0dXRpb24gYXJndW1lbnRzIGdpdmVuLCBi
dXQgIgogICAgICAgICAgICAgICAgICAgICAgInRoaXMgZm9ybWF0IHN0ZDo6c3RyaW5nIGlzIGVp
dGhlciBtaXNzaW5nIGl0cyAkMC8kMSwgb3IgIgogICAgICAgICAgICAgICAgICAgICAgImNvbnRh
aW5zIG9uZSBvZiAkMi0kOSIpOwogCiBzdGQ6OnN0cmluZyBTdWJzdGl0dXRlKGNvbnN0IGNoYXIq
IGZvcm1hdCwgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMCwKLSAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEsCi0gICAgICAgICAgICAg
ICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEyKQorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGExLAorICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEyKQogICAgIEFCU0xf
QkFEX0NBTExfSUYoc3Vic3RpdHV0ZV9pbnRlcm5hbDo6UGxhY2Vob2xkZXJCaXRtYXNrKGZvcm1h
dCkgIT0gNywKICAgICAgICAgICAgICAgICAgICAgICJUaGVyZSB3ZXJlIDMgc3Vic3RpdHV0aW9u
IGFyZ3VtZW50cyBnaXZlbiwgYnV0ICIKICAgICAgICAgICAgICAgICAgICAgICJ0aGlzIGZvcm1h
dCBzdGQ6OnN0cmluZyBpcyBlaXRoZXIgbWlzc2luZyBpdHMgJDAvJDEvJDIsIG9yICIKICAgICAg
ICAgICAgICAgICAgICAgICJjb250YWlucyBvbmUgb2YgJDMtJDkiKTsKIAogc3RkOjpzdHJpbmcg
U3Vic3RpdHV0ZShjb25zdCBjaGFyKiBmb3JtYXQsIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6
OkFyZyYgYTAsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpB
cmcmIGExLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJn
JiBhMiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYg
YTMpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFy
ZyYgYTEsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6
OkFyZyYgYTIsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJu
YWw6OkFyZyYgYTMpCiAgICAgQUJTTF9CQURfQ0FMTF9JRihzdWJzdGl0dXRlX2ludGVybmFsOjpQ
bGFjZWhvbGRlckJpdG1hc2soZm9ybWF0KSAhPSAxNSwKICAgICAgICAgICAgICAgICAgICAgICJU
aGVyZSB3ZXJlIDQgc3Vic3RpdHV0aW9uIGFyZ3VtZW50cyBnaXZlbiwgYnV0ICIKICAgICAgICAg
ICAgICAgICAgICAgICJ0aGlzIGZvcm1hdCBzdGQ6OnN0cmluZyBpcyBlaXRoZXIgbWlzc2luZyBp
dHMgJDAtJDMsIG9yICIKICAgICAgICAgICAgICAgICAgICAgICJjb250YWlucyBvbmUgb2YgJDQt
JDkiKTsKIAogc3RkOjpzdHJpbmcgU3Vic3RpdHV0ZShjb25zdCBjaGFyKiBmb3JtYXQsIGNvbnN0
IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTAsCi0gICAgICAgICAgICAgICAgICBjb25zdCBz
dWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGExLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vi
c3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0
aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0
dXRlX2ludGVybmFsOjpBcmcmIGE0KQorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJz
dGl0dXRlX2ludGVybmFsOjpBcmcmIGExLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEzLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGE0KQogICAgIEFCU0xfQkFEX0NBTExfSUYo
c3Vic3RpdHV0ZV9pbnRlcm5hbDo6UGxhY2Vob2xkZXJCaXRtYXNrKGZvcm1hdCkgIT0gMzEsCiAg
ICAgICAgICAgICAgICAgICAgICAiVGhlcmUgd2VyZSA1IHN1YnN0aXR1dGlvbiBhcmd1bWVudHMg
Z2l2ZW4sIGJ1dCAiCiAgICAgICAgICAgICAgICAgICAgICAidGhpcyBmb3JtYXQgc3RkOjpzdHJp
bmcgaXMgZWl0aGVyIG1pc3NpbmcgaXRzICQwLSQ0LCBvciAiCiAgICAgICAgICAgICAgICAgICAg
ICAiY29udGFpbnMgb25lIG9mICQ1LSQ5Iik7CiAKIHN0ZDo6c3RyaW5nIFN1YnN0aXR1dGUoY29u
c3QgY2hhciogZm9ybWF0LCBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEwLAotICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMSwKLSAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTIsCi0gICAgICAg
ICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEzLAotICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNCwKLSAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTUpCisgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTEsCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTIsCisgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTMsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTQsCisg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTUp
CiAgICAgQUJTTF9CQURfQ0FMTF9JRihzdWJzdGl0dXRlX2ludGVybmFsOjpQbGFjZWhvbGRlckJp
dG1hc2soZm9ybWF0KSAhPSA2MywKICAgICAgICAgICAgICAgICAgICAgICJUaGVyZSB3ZXJlIDYg
c3Vic3RpdHV0aW9uIGFyZ3VtZW50cyBnaXZlbiwgYnV0ICIKICAgICAgICAgICAgICAgICAgICAg
ICJ0aGlzIGZvcm1hdCBzdGQ6OnN0cmluZyBpcyBlaXRoZXIgbWlzc2luZyBpdHMgJDAtJDUsIG9y
ICIKICAgICAgICAgICAgICAgICAgICAgICJjb250YWlucyBvbmUgb2YgJDYtJDkiKTsKIAogc3Rk
OjpzdHJpbmcgU3Vic3RpdHV0ZShjb25zdCBjaGFyKiBmb3JtYXQsIGNvbnN0IHN1YnN0aXR1dGVf
aW50ZXJuYWw6OkFyZyYgYTAsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2lu
dGVybmFsOjpBcmcmIGExLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRl
cm5hbDo6QXJnJiBhMiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJu
YWw6OkFyZyYgYTMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFs
OjpBcmcmIGE0LAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6
QXJnJiBhNSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFy
ZyYgYTYpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6
OkFyZyYgYTEsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJu
YWw6OkFyZyYgYTIsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50
ZXJuYWw6OkFyZyYgYTMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGVf
aW50ZXJuYWw6OkFyZyYgYTQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1
dGVfaW50ZXJuYWw6OkFyZyYgYTUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnN0
aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTYpCiAgICAgQUJTTF9CQURfQ0FMTF9JRihzdWJzdGl0dXRl
X2ludGVybmFsOjpQbGFjZWhvbGRlckJpdG1hc2soZm9ybWF0KSAhPSAxMjcsCiAgICAgICAgICAg
ICAgICAgICAgICAiVGhlcmUgd2VyZSA3IHN1YnN0aXR1dGlvbiBhcmd1bWVudHMgZ2l2ZW4sIGJ1
dCAiCiAgICAgICAgICAgICAgICAgICAgICAidGhpcyBmb3JtYXQgc3RkOjpzdHJpbmcgaXMgZWl0
aGVyIG1pc3NpbmcgaXRzICQwLSQ2LCBvciAiCiAgICAgICAgICAgICAgICAgICAgICAiY29udGFp
bnMgb25lIG9mICQ3LSQ5Iik7CiAKIHN0ZDo6c3RyaW5nIFN1YnN0aXR1dGUoY29uc3QgY2hhciog
Zm9ybWF0LCBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEwLAotICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMSwKLSAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTIsCi0gICAgICAgICAgICAgICAg
ICBjb25zdCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGEzLAotICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNCwKLSAgICAgICAgICAgICAgICAgIGNv
bnN0IHN1YnN0aXR1dGVfaW50ZXJuYWw6OkFyZyYgYTUsCi0gICAgICAgICAgICAgICAgICBjb25z
dCBzdWJzdGl0dXRlX2ludGVybmFsOjpBcmcmIGE2LAotICAgICAgICAgICAgICAgICAgY29uc3Qg
c3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNykKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhMywKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZV9pbnRlcm5hbDo6QXJnJiBhNykKICAgICBB
QlNMX0JBRF9DQUxMX0lGKHN1YnN0aXR1dGVfaW50ZXJuYWw6OlBsYWNlaG9sZGVyQml0bWFzayhm
b3JtYXQpICE9IDI1NSwKICAgICAgICAgICAgICAgICAgICAgICJUaGVyZSB3ZXJlIDggc3Vic3Rp
dHV0aW9uIGFyZ3VtZW50cyBnaXZlbiwgYnV0ICIKICAgICAgICAgICAgICAgICAgICAgICJ0aGlz
IGZvcm1hdCBzdGQ6OnN0cmluZyBpcyBlaXRoZXIgbWlzc2luZyBpdHMgJDAtJDcsIG9yICIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZV90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdWJzdGl0dXRlX3Rlc3QuY2MKaW5kZXggMTQ0ZGYwMWVjMTg0ZjVkMDlmM2JlODliODZlMGJm
ZWVkNWUxNGFkZS4uZTI3YWJiMTc3Mjc0NDdiZWQzZWY2YmEyMDM2NjJjNjRlMjg0NDZjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRlX3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9zdWJzdGl0dXRlX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Vic3Rp
dHV0ZS5oIgogCiAjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCkBA
IC0xNzIsNiArMTczLDE3IEBAIFRFU1QoU3Vic3RpdHV0ZVRlc3QsIFN1YnN0aXR1dGVBbmRBcHBl
bmQpIHsKICAgRVhQRUNUX0VRKCJhIGIgYyBkIGUgZiBnIGggaSBqIiwgc3RyKTsKIH0KIAorVEVT
VChTdWJzdGl0dXRlVGVzdCwgVmVjdG9yQm9vbFJlZikgeworICBzdGQ6OnZlY3Rvcjxib29sPiB2
ID0ge3RydWUsIGZhbHNlfTsKKyAgY29uc3QgYXV0byYgY3YgPSB2OworICBFWFBFQ1RfRVEoInRy
dWUgZmFsc2UgdHJ1ZSBmYWxzZSIsCisgICAgICAgICAgICBhYnNsOjpTdWJzdGl0dXRlKCIkMCAk
MSAkMiAkMyIsIHZbMF0sIHZbMV0sIGN2WzBdLCBjdlsxXSkpOworCisgIHN0ZDo6c3RyaW5nIHN0
ciA9ICJMb2dpYyBiZSBsaWtlOiAiOworICBhYnNsOjpTdWJzdGl0dXRlQW5kQXBwZW5kKCZzdHIs
ICIkMCAkMSAkMiAkMyIsIHZbMF0sIHZbMV0sIGN2WzBdLCBjdlsxXSk7CisgIEVYUEVDVF9FUSgi
TG9naWMgYmUgbGlrZTogdHJ1ZSBmYWxzZSB0cnVlIGZhbHNlIiwgc3RyKTsKK30KKwogI2lmZGVm
IEdURVNUX0hBU19ERUFUSF9URVNUCiAKIFRFU1QoU3Vic3RpdHV0ZURlYXRoVGVzdCwgU3Vic3Rp
dHV0ZURlYXRoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuYmF6
ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuYmF6ZWwKaW5kZXggZjUyZTlkNDE2NDRh
OGQ5MzFiZjM5ZmFlN2VjODQzMjdiZWFmNDFlNC4uZmNhOGNiNjk3YWYxMWQ1M2M4NDdmZTk0MGI1
ZjE3ZGU0MDUwM2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmJh
emVsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5iYXplbApAQCAtNSw3ICs1LDcg
QEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
ICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMg
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1LDggKzE1LDkgQEAKICMKIAogbG9hZCgKLSAgICAi
Ly9hYnNsOmNvcHRzLmJ6bCIsCisgICAgIi8vYWJzbDpjb3B0cy9jb25maWd1cmVfY29wdHMuYnps
IiwKICAgICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKKyAgICAiQUJTTF9ERUZBVUxUX0xJTktPUFRT
IiwKICAgICAiQUJTTF9URVNUX0NPUFRTIiwKICkKIApAQCAtMzQsNiArMzUsNyBAQCBjY19saWJy
YXJ5KAogICAgICAgICAiaW50ZXJuYWwvZ3JhcGhjeWNsZXMuaCIsCiAgICAgXSwKICAgICBjb3B0
cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5L
T1BUUywKICAgICB2aXNpYmlsaXR5ID0gWwogICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNf
XyIsCiAgICAgXSwKQEAgLTY5LDkgKzcxLDE0IEBAIGNjX2xpYnJhcnkoCiAgICAgICAgICJub3Rp
ZmljYXRpb24uaCIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAg
ICBsaW5rb3B0cyA9IHNlbGVjdCh7CisgICAgICAgICIvL2Fic2w6d2luZG93cyI6IFtdLAorICAg
ICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi1wdGhyZWFkIl0sCisgICAgfSkgKyBBQlNM
X0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpncmFwaGN5Y2xlc19p
bnRlcm5hbCIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTph
dG9taWNfaG9vayIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpiYXNlX2ludGVybmFsIiwKICAgICAg
ICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRl
cnMiLApAQCAtODgsOSArOTUsNyBAQCBjY190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAg
IHNyY3MgPSBbImJhcnJpZXJfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRT
LAotICAgIHRhZ3MgPSBbCi0gICAgICAgICJub190ZXN0X3dhc20iLAotICAgIF0sCisgICAgbGlu
a29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpz
eW5jaHJvbml6YXRpb24iLAogICAgICAgICAiLy9hYnNsL3RpbWUiLApAQCAtMTAzLDkgKzEwOCw3
IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9IFsiYmxvY2tpbmdf
Y291bnRlcl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCi0gICAgdGFn
cyA9IFsKLSAgICAgICAgIm5vX3Rlc3Rfd2FzbSIsCi0gICAgXSwKKyAgICBsaW5rb3B0cyA9IEFC
U0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnN5bmNocm9uaXph
dGlvbiIsCiAgICAgICAgICIvL2Fic2wvdGltZSIsCkBAIC0xMTgsNiArMTIxLDcgQEAgY2NfdGVz
dCgKICAgICBzaXplID0gIm1lZGl1bSIsCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvZ3JhcGhjeWNs
ZXNfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Z3JhcGhj
eWNsZXNfaW50ZXJuYWwiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtMTMwLDYgKzEzNCw3
IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJncmFwaGN5Y2xlc19iZW5jaG1hcmsiLAogICAgIHNy
Y3MgPSBbImludGVybmFsL2dyYXBoY3ljbGVzX2JlbmNobWFyay5jYyJdLAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIHRhZ3MgPSBbCiAgICAgICAgICJiZW5jaG1hcmsiLAogICAgIF0sCkBAIC0xNDQsNiArMTQ5
LDcgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gInRocmVhZF9wb29sIiwKICAgICB0ZXN0b25s
eSA9IDEsCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdGhyZWFkX3Bvb2wuaCJdLAorICAgIGxpbmtv
cHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHZpc2liaWxpdHkgPSBbCiAgICAgICAg
ICIvL2Fic2w6X19zdWJwYWNrYWdlc19fIiwKICAgICBdLApAQCAtMTU4LDYgKzE2NCw3IEBAIGNj
X3Rlc3QoCiAgICAgc2l6ZSA9ICJsYXJnZSIsCiAgICAgc3JjcyA9IFsibXV0ZXhfdGVzdC5jYyJd
LAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZB
VUxUX0xJTktPUFRTLAogICAgIHNoYXJkX2NvdW50ID0gMjUsCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjpzeW5jaHJvbml6YXRpb24iLApAQCAtMTcwLDE4ICsxNzcsMzMgQEAgY2NfdGVzdCgKICAg
ICBdLAogKQogCi1jY190ZXN0KAotICAgIG5hbWUgPSAibXV0ZXhfYmVuY2htYXJrIiwKK2NjX2xp
YnJhcnkoCisgICAgbmFtZSA9ICJtdXRleF9iZW5jaG1hcmtfY29tbW9uIiwKKyAgICB0ZXN0b25s
eSA9IDEsCiAgICAgc3JjcyA9IFsibXV0ZXhfYmVuY2htYXJrLmNjIl0sCiAgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMsCi0gICAgdGFncyA9IFsiYmVuY2htYXJrIl0sCi0gICAgdmlzaWJpbGl0
eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKKyAgICB2aXNpYmlsaXR5ID0gWworICAgICAgICAiLy9hYnNsL3N5bmNocm9u
aXphdGlvbjpfX3BrZ19fIiwKKyAgICBdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3luY2hy
b25pemF0aW9uIiwKICAgICAgICAgIjp0aHJlYWRfcG9vbCIsCiAgICAgICAgICIvL2Fic2wvYmFz
ZSIsCiAgICAgICAgICJAY29tX2dpdGh1Yl9nb29nbGVfYmVuY2htYXJrLy86YmVuY2htYXJrX21h
aW4iLAogICAgIF0sCisgICAgYWx3YXlzbGluayA9IDEsCispCisKK2NjX2JpbmFyeSgKKyAgICBu
YW1lID0gIm11dGV4X2JlbmNobWFyayIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGNvcHRzID0g
QUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAorICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisgICAgZGVwcyA9
IFsKKyAgICAgICAgIjptdXRleF9iZW5jaG1hcmtfY29tbW9uIiwKKyAgICBdLAogKQogCiBjY190
ZXN0KApAQCAtMTg5LDYgKzIxMSw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAg
ICAgc3JjcyA9IFsibm90aWZpY2F0aW9uX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVT
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBz
ID0gWwogICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIsCiAgICAgICAgICIvL2Fic2wvdGltZSIs
CkBAIC0yMDEsNiArMjI0LDcgQEAgY2NfbGlicmFyeSgKICAgICB0ZXN0b25seSA9IDEsCiAgICAg
c3JjcyA9IFsiaW50ZXJuYWwvcGVyX3RocmVhZF9zZW1fdGVzdC5jYyJdLAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3luY2hyb25pemF0aW9uIiwKICAgICAgICAgIi8vYWJz
bC9iYXNlIiwKQEAgLTIxNSw3ICsyMzksNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAicGVyX3Ro
cmVhZF9zZW1fdGVzdCIsCiAgICAgc2l6ZSA9ICJtZWRpdW0iLAogICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAotICAgIHRhZ3MgPSBbIm5vX3Rlc3Rfd2FzbSJdLAorICAgIGxpbmtvcHRzID0g
QUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6cGVyX3RocmVh
ZF9zZW1fdGVzdF9jb21tb24iLAogICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIsCkBAIC0yMzIs
MTAgKzI1Niw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICJsaWZldGltZV90ZXN0LmNjIiwKICAgICBd
LAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAotICAgIGxpbmtvcHRzID0gc2VsZWN0KHsK
LSAgICAgICAgIi8vYWJzbDp3aW5kb3dzIjogW10sCi0gICAgICAgICIvL2NvbmRpdGlvbnM6ZGVm
YXVsdCI6IFsiLXB0aHJlYWQiXSwKLSAgICB9KSwKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVM
VF9MSU5LT1BUUywKICAgICB0YWdzID0gWyJub190ZXN0X2lvc194ODZfNjQiXSwKICAgICBkZXBz
ID0gWwogICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5j
aHJvbml6YXRpb24vQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuZ24KaW5k
ZXggZTZmNzYzYTA2MGJhOWNlMGFhZWU5YzE0MTgxMGZmZjZiNGU3OGMxMS4uY2Q2MDE4MWQ0OGRk
NmFhOTRmMjE4NDU2NzkxZjZkMjExZGFlNjA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25p
emF0aW9uL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5nbgpAQCAt
NCw4ICs0LDE1IEBACiAKIGltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIikKIAor
IyBVc2FnZSBvZiBBYnNlaWwgaW4gQ2hyb21pdW0gaXMgZ3VhcmRlZCBieSBhbiBleHBsaWNpdCBv
cHQtaW4gbGlzdCwgYmVmb3JlCisjIGFkZGluZyBwcm9qZWN0cyB0byB0aGlzIGxpc3QgcGxlYXNl
IHJlYWNoIG91dCB0byBjeHhAY2hyb21pdW0ub3JnIGFuZCBDQzoKKyMgLSBodHRwczovL2NzLmNo
cm9taXVtLm9yZy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9PV05FUlMKKyMK
KyMgTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgYXQ6CisjIGh0dHBzOi8vZG9jcy5nb29n
bGUuY29tL2RvY3VtZW50L2QvMURnUzEtQTNyemJvVExqcGY0bTFzcWtKZ1dqbllfUnUyZG9razFY
MXZCRFUKIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CiAgIHZpc2liaWxpdHkgPSBbCisgICAg
Ii8vbGliYXNzaXN0YW50LyoiLAogICAgICIvL3RoaXJkX3BhcnR5L3dlYnJ0Yy8qIiwKICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3Q6Z3Rlc3QiLApAQCAtNjcsNiArNzQsNyBAQCBzb3VyY2Vfc2V0KCJzeW5jaHJvbml6YXRpb24i
KSB7CiAgIGRlcHMgPSBbCiAgICAgIjpncmFwaGN5Y2xlc19pbnRlcm5hbCIsCiAgICAgIi4uL2Jh
c2UiLAorICAgICIuLi9iYXNlOmF0b21pY19ob29rIiwKICAgICAiLi4vYmFzZTpiYXNlX2ludGVy
bmFsIiwKICAgICAiLi4vYmFzZTpjb25maWciLAogICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vQ01ha2VMaXN0cy50eHQKaW5kZXggZGUwZDdiN2Q0NTAwN2MwN2Ez
MzY2M2M5NjQ5OGU2ZjM5MDEwN2YwOS4uNGI3MDg4MjMxNTJmYmJiNmY0YTZhZjlhYTFiMDIwMmVm
MzRlZGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9DTWFrZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcg
QEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
ICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMg
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDE0MiArMTQsMTg1IEBACiAjIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgogIwogCi1saXN0KEFQUEVORCBTWU5DSFJPTklaQVRJT05fUFVC
TElDX0hFQURFUlMKLSAgImJhcnJpZXIuaCIKLSAgImJsb2NraW5nX2NvdW50ZXIuaCIKLSAgIm11
dGV4LmgiCi0gICJub3RpZmljYXRpb24uaCIKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAg
IGdyYXBoY3ljbGVzX2ludGVybmFsCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvZ3JhcGhjeWNsZXMu
aCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9ncmFwaGN5Y2xlcy5jYyIKKyAgQ09QVFMKKyAgICAk
e0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpi
YXNlX2ludGVybmFsCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6bWFsbG9jX2lu
dGVybmFsCiApCiAKLQotbGlzdChBUFBFTkQgU1lOQ0hST05JWkFUSU9OX0lOVEVSTkFMX0hFQURF
UlMKLSAgImludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRlbnRpdHkuaCIKLSAgImludGVybmFsL2dy
YXBoY3ljbGVzLmgiCi0gICJpbnRlcm5hbC9rZXJuZWxfdGltZW91dC5oIgotICAiaW50ZXJuYWwv
cGVyX3RocmVhZF9zZW0uaCIKLSAgImludGVybmFsL3RocmVhZF9wb29sLmgiCi0gICJpbnRlcm5h
bC93YWl0ZXIuaCIKLSkKLQotCi0KLSMgc3luY2hyb25pemF0aW9uIGxpYnJhcnkKLWxpc3QoQVBQ
RU5EIFNZTkNIUk9OSVpBVElPTl9TUkMKLSAgImJhcnJpZXIuY2MiCi0gICJibG9ja2luZ19jb3Vu
dGVyLmNjIgotICAiaW50ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5jYyIKLSAgImludGVy
bmFsL3Blcl90aHJlYWRfc2VtLmNjIgotICAiaW50ZXJuYWwvd2FpdGVyLmNjIgotICAiaW50ZXJu
YWwvZ3JhcGhjeWNsZXMuY2MiCi0gICJub3RpZmljYXRpb24uY2MiCi0gICJtdXRleC5jYyIKLSkK
LQotc2V0KFNZTkNIUk9OSVpBVElPTl9QVUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbDo6
c3RhY2t0cmFjZSBhYnNsOjpzeW1ib2xpemUgYWJzbDo6dGltZSkKLQotYWJzbF9saWJyYXJ5KAot
ICBUQVJHRVQKLSAgICBhYnNsX3N5bmNocm9uaXphdGlvbgotICBTT1VSQ0VTCi0gICAgJHtTWU5D
SFJPTklaQVRJT05fU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtTWU5DSFJPTklaQVRJ
T05fUFVCTElDX0xJQlJBUklFU30KLSAgRVhQT1JUX05BTUUKK2Fic2xfY2NfbGlicmFyeSgKKyAg
TkFNRQogICAgIHN5bmNocm9uaXphdGlvbgorICBIRFJTCisgICAgImJhcnJpZXIuaCIKKyAgICAi
YmxvY2tpbmdfY291bnRlci5oIgorICAgICJpbnRlcm5hbC9jcmVhdGVfdGhyZWFkX2lkZW50aXR5
LmgiCisgICAgImludGVybmFsL2tlcm5lbF90aW1lb3V0LmgiCisgICAgImludGVybmFsL211dGV4
X25vbnByb2QuaW5jIgorICAgICJpbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5oIgorICAgICJpbnRl
cm5hbC93YWl0ZXIuaCIKKyAgICAibXV0ZXguaCIKKyAgICAibm90aWZpY2F0aW9uLmgiCisgIFNS
Q1MKKyAgICAiYmFycmllci5jYyIKKyAgICAiYmxvY2tpbmdfY291bnRlci5jYyIKKyAgICAiaW50
ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5jYyIKKyAgICAiaW50ZXJuYWwvcGVyX3RocmVh
ZF9zZW0uY2MiCisgICAgImludGVybmFsL3dhaXRlci5jYyIKKyAgICAibm90aWZpY2F0aW9uLmNj
IgorICAgICJtdXRleC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAg
REVQUworICAgIGFic2w6OmdyYXBoY3ljbGVzX2ludGVybmFsCisgICAgYWJzbDo6YXRvbWljX2hv
b2sKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6YmFzZV9pbnRlcm5hbAorICAgIGFic2w6OmNv
bmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycworICAgIGFic2w6OmR5bmFtaWNfYW5ub3RhdGlv
bnMKKyAgICBhYnNsOjptYWxsb2NfaW50ZXJuYWwKKyAgICBhYnNsOjpzdGFja3RyYWNlCisgICAg
YWJzbDo6c3ltYm9saXplCisgICAgYWJzbDo6dGltZQorICAgIFRocmVhZHM6OlRocmVhZHMKKyAg
UFVCTElDCiApCiAKLQotIwotIyMgVEVTVFMKLSMKLQotCi0jIHRlc3QgYmFycmllcl90ZXN0Ci1z
ZXQoQkFSUklFUl9URVNUX1NSQyAiYmFycmllcl90ZXN0LmNjIikKLXNldChCQVJSSUVSX1RFU1Rf
UFVCTElDX0xJQlJBUklFUyBhYnNsOjpzeW5jaHJvbml6YXRpb24pCi0KLWFic2xfdGVzdCgKLSAg
VEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBiYXJyaWVyX3Rlc3QKLSAgU09VUkNF
UwotICAgICR7QkFSUklFUl9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7QkFS
UklFUl9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MKKyAgICAiYmFycmllcl90ZXN0LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3lu
Y2hyb25pemF0aW9uCisgICAgYWJzbDo6dGltZQorICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRl
c3QgYmxvY2tpbmdfY291bnRlcl90ZXN0Ci1zZXQoQkxPQ0tJTkdfQ09VTlRFUl9URVNUX1NSQyAi
YmxvY2tpbmdfY291bnRlcl90ZXN0LmNjIikKLXNldChCTE9DS0lOR19DT1VOVEVSX1RFU1RfUFVC
TElDX0xJQlJBUklFUyBhYnNsOjpzeW5jaHJvbml6YXRpb24pCi0KLWFic2xfdGVzdCgKLSAgVEFS
R0VUCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKICAgICBibG9ja2luZ19jb3VudGVyX3Rlc3QKLSAg
U09VUkNFUwotICAgICR7QkxPQ0tJTkdfQ09VTlRFUl9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJB
UklFUwotICAgICR7QkxPQ0tJTkdfQ09VTlRFUl9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNS
Q1MKKyAgICAiYmxvY2tpbmdfY291bnRlcl90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9U
RVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3luY2hyb25pemF0aW9uCisgICAgYWJzbDo6
dGltZQorICAgIGdtb2NrX21haW4KICkKIAotCi0jIHRlc3QgZ3JhcGhjeWNsZXNfdGVzdAotc2V0
KEdSQVBIQ1lDTEVTX1RFU1RfU1JDICJpbnRlcm5hbC9ncmFwaGN5Y2xlc190ZXN0LmNjIikKLXNl
dChHUkFQSENZQ0xFU19URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3luY2hyb25pemF0aW9u
KQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9jY190ZXN0KAorICBOQU1FCiAgICAgZ3Jh
cGhjeWNsZXNfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtHUkFQSENZQ0xFU19URVNUX1NSQ30KLSAg
UFVCTElDX0xJQlJBUklFUwotICAgICR7R1JBUEhDWUNMRVNfVEVTVF9QVUJMSUNfTElCUkFSSUVT
fQorICBTUkNTCisgICAgImludGVybmFsL2dyYXBoY3ljbGVzX3Rlc3QuY2MiCisgIENPUFRTCisg
ICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpncmFwaGN5Y2xlc19pbnRl
cm5hbAorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBnbW9ja19t
YWluCiApCiAKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIHRocmVhZF9wb29sCisgIEhE
UlMKKyAgICAiaW50ZXJuYWwvdGhyZWFkX3Bvb2wuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVG
QVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorICAgIGFic2w6
OmNvcmVfaGVhZGVycworICBURVNUT05MWQorKQogCi0jIHRlc3QgbXV0ZXhfdGVzdAotc2V0KE1V
VEVYX1RFU1RfU1JDICJtdXRleF90ZXN0LmNjIikKLXNldChNVVRFWF9URVNUX1BVQkxJQ19MSUJS
QVJJRVMgYWJzbDo6c3luY2hyb25pemF0aW9uKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJz
bF9jY190ZXN0KAorICBOQU1FCiAgICAgbXV0ZXhfdGVzdAotICBTT1VSQ0VTCi0gICAgJHtNVVRF
WF9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7TVVURVhfVEVTVF9QVUJMSUNf
TElCUkFSSUVTfQorICBTUkNTCisgICAgIm11dGV4X3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtB
QlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKyAgICBh
YnNsOjp0aHJlYWRfcG9vbAorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMK
KyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjp0aW1lCisgICAgZ21vY2tfbWFpbgogKQogCi0K
LSMgdGVzdCBub3RpZmljYXRpb25fdGVzdAotc2V0KE5PVElGSUNBVElPTl9URVNUX1NSQyAibm90
aWZpY2F0aW9uX3Rlc3QuY2MiKQotc2V0KE5PVElGSUNBVElPTl9URVNUX1BVQkxJQ19MSUJSQVJJ
RVMgYWJzbDo6c3luY2hyb25pemF0aW9uKQotCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAorYWJzbF9j
Y190ZXN0KAorICBOQU1FCiAgICAgbm90aWZpY2F0aW9uX3Rlc3QKLSAgU09VUkNFUwotICAgICR7
Tk9USUZJQ0FUSU9OX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtOT1RJRklD
QVRJT05fVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorICBTUkNTCisgICAgIm5vdGlmaWNhdGlvbl90
ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJz
bDo6c3luY2hyb25pemF0aW9uCisgICAgYWJzbDo6dGltZQorICAgIGdtb2NrX21haW4KICkKIAot
Ci0jIHRlc3QgcGVyX3RocmVhZF9zZW1fdGVzdF9jb21tb24KLXNldChQRVJfVEhSRUFEX1NFTV9U
RVNUX0NPTU1PTl9TUkMgImludGVybmFsL3Blcl90aHJlYWRfc2VtX3Rlc3QuY2MiKQotc2V0KFBF
Ul9USFJFQURfU0VNX1RFU1RfQ09NTU9OX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6c3luY2hyb25p
emF0aW9uIGFic2w6OnN0cmluZ3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX2xp
YnJhcnkoCisgIE5BTUUKICAgICBwZXJfdGhyZWFkX3NlbV90ZXN0X2NvbW1vbgotICBTT1VSQ0VT
Ci0gICAgJHtQRVJfVEhSRUFEX1NFTV9URVNUX0NPTU1PTl9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICAke1BFUl9USFJFQURfU0VNX1RFU1RfQ09NTU9OX1BVQkxJQ19MSUJSQVJJRVN9Cisg
IFNSQ1MKKyAgICAiaW50ZXJuYWwvcGVyX3RocmVhZF9zZW1fdGVzdC5jYyIKKyAgQ09QVFMKKyAg
ICAke0FCU0xfVEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgor
ICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpzdHJpbmdzCisgICAgYWJzbDo6dGltZQorICAgIGdt
b2NrCisgIFRFU1RPTkxZCiApCiAKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHBlcl90aHJl
YWRfc2VtX3Rlc3QKKyAgU1JDUworICAgICJpbnRlcm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNj
IgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6cGVy
X3RocmVhZF9zZW1fdGVzdF9jb21tb24KKyAgICBhYnNsOjpzeW5jaHJvbml6YXRpb24KKyAgICBh
YnNsOjpiYXNlCisgICAgYWJzbDo6c3RyaW5ncworICAgIGFic2w6OnRpbWUKKyAgICBnbW9ja19t
YWluCispCiAKLQotCi0KLQotCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBsaWZldGltZV90
ZXN0CisgIFNSQ1MKKyAgICAibGlmZXRpbWVfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xf
VEVTVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OnN5bmNocm9uaXphdGlvbgorICAgIGFic2w6
OmJhc2UKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNo
cm9uaXphdGlvbi9iYXJyaWVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2JhcnJpZXIuY2MK
aW5kZXggYTFiM2FkNWMyMTc0MGI0ZWNjZDlhZWFhZTE1MmY2ODhlZWM5NmJlNy4uYzJjNTM5YWM0
YWNmYjQ3MmI2ZmJiOTc1MWY0ZGNiMDExOWU2NmI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hy
b25pemF0aW9uL2JhcnJpZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2JhcnJpZXIu
Y2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N5bmNocm9uaXphdGlvbi9iYXJyaWVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24v
YmFycmllci5oCmluZGV4IGY4MzRmZWVjMTFkY2JiYmMyMzI4ODE2NzM4MmQ0MWE0YWM3YThmYWYu
LmNiNWQ4MjFhMjE5MjE2Yjk1ZmRkY2JhODc3ZWExZjNhMzkxZGIyZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N5bmNocm9uaXphdGlvbi9iYXJyaWVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9u
L2JhcnJpZXIuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
NjksOCArNjksOCBAQCBjbGFzcyBCYXJyaWVyIHsKIAogIHByaXZhdGU6CiAgIE11dGV4IGxvY2tf
OwotICBpbnQgbnVtX3RvX2Jsb2NrXyBHVUFSREVEX0JZKGxvY2tfKTsKLSAgaW50IG51bV90b19l
eGl0XyBHVUFSREVEX0JZKGxvY2tfKTsKKyAgaW50IG51bV90b19ibG9ja18gQUJTTF9HVUFSREVE
X0JZKGxvY2tfKTsKKyAgaW50IG51bV90b19leGl0XyBBQlNMX0dVQVJERURfQlkobG9ja18pOwog
fTsKIAogfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9iYXJyaWVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmFycmllcl90ZXN0
LmNjCmluZGV4IGQ2Y2FiYWJkZjczMzE1ZjI2MTZlODEzYzRmMThmOTFjNjdiYzM2MGIuLmJmYzZj
YjE4ODNiMWNiNmI0YTMwODRhN2MwYzUyODAzM2U0NjllMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9iYXJyaWVyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9u
L2JhcnJpZXJfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5jYwppbmRleCA3ZTY4ZTk2
MGJjM2FkNDA3ZTJiOTJmZTA0MTk3OTFmNTZiNzY4ZDk3Li40ODFhMDZiMmQyNGZiODI2MWYwYzc0
MGZkYmNlNWM1NDg2YTJiZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmxv
Y2tpbmdfY291bnRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291
bnRlci5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9ibG9ja2luZ19jb3VudGVyLmgKaW5kZXggNTU3ZWQwMjhmZTUyMjNjOWNj
MjVhMDJlY2U1YTZjNWY1NjNkOWNhYi4uNzc1NjBmYzA1NjU3MDM2YTNlZjZkMjQ2N2RhYTVkZjhl
ZmRhZTAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5oCkBAIC01
LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC04OCw4ICs4OCw4IEBAIGNs
YXNzIEJsb2NraW5nQ291bnRlciB7CiAKICBwcml2YXRlOgogICBNdXRleCBsb2NrXzsKLSAgaW50
IGNvdW50XyBHVUFSREVEX0JZKGxvY2tfKTsKLSAgaW50IG51bV93YWl0aW5nXyBHVUFSREVEX0JZ
KGxvY2tfKTsKKyAgaW50IGNvdW50XyBBQlNMX0dVQVJERURfQlkobG9ja18pOworICBpbnQgbnVt
X3dhaXRpbmdfIEFCU0xfR1VBUkRFRF9CWShsb2NrXyk7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ug
YWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXJf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ibG9ja2luZ19jb3VudGVyX3Rlc3QuY2MK
aW5kZXggZTgyMjNmODQxYTVmMDdjOTMzNGQxMjgzNWU1YzFkNjk2ODQ2NDIxNS4uYzYzZTMzOTI1
NzhhYzk5ZTVjNzU5MWY3NTAzMDQ0NjQwMGExMzQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hy
b25pemF0aW9uL2Jsb2NraW5nX2NvdW50ZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vYmxvY2tpbmdfY291bnRlcl90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJu
YWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRl
cm5hbC9jcmVhdGVfdGhyZWFkX2lkZW50aXR5LmNjCmluZGV4IGU3YTY1Y2Q4ODRhMWQyNmNiOTc0
NzlhMDg1YmJmODgzMDk1YzVlZTguLmNlMzY3NmE4ODQ4MjBkOWU4NTQ2YzQ2ZWU2MjliMDI1MmEx
NjQzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9jcmVhdGVf
dGhyZWFkX2lkZW50aXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9j
cmVhdGVfdGhyZWFkX2lkZW50aXR5LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0zMSw3ICszMSw4IEBAIG5hbWVzcGFjZSBzeW5jaHJvbml6YXRpb25faW50
ZXJuYWwgewogCiAvLyBUaHJlYWRJZGVudGl0eSBzdG9yYWdlIGlzIHBlcnNpc3RlbnQsIHdlIG1h
aW50YWluIGEgZnJlZS1saXN0IG9mIHByZXZpb3VzbHkKIC8vIHJlbGVhc2VkIFRocmVhZElkZW50
aXR5IG9iamVjdHMuCi1zdGF0aWMgYmFzZV9pbnRlcm5hbDo6U3BpbkxvY2sgZnJlZWxpc3RfbG9j
ayhiYXNlX2ludGVybmFsOjprTGlua2VySW5pdGlhbGl6ZWQpOworc3RhdGljIGJhc2VfaW50ZXJu
YWw6OlNwaW5Mb2NrIGZyZWVsaXN0X2xvY2soCisgICAgYmFzZV9pbnRlcm5hbDo6a0xpbmtlcklu
aXRpYWxpemVkKTsKIHN0YXRpYyBiYXNlX2ludGVybmFsOjpUaHJlYWRJZGVudGl0eSogdGhyZWFk
X2lkZW50aXR5X2ZyZWVsaXN0OwogCiAvLyBBIHBlci10aHJlYWQgZGVzdHJ1Y3RvciBmb3IgcmVj
bGFpbWluZyBhc3NvY2lhdGVkIFRocmVhZElkZW50aXR5IG9iamVjdHMuCkBAIC02Nyw2ICs2OCwz
MCBAQCBzdGF0aWMgaW50cHRyX3QgUm91bmRVcChpbnRwdHJfdCBhZGRyLCBpbnRwdHJfdCBhbGln
bikgewogICByZXR1cm4gKGFkZHIgKyBhbGlnbiAtIDEpICYgfihhbGlnbiAtIDEpOwogfQogCitz
dGF0aWMgdm9pZCBSZXNldFRocmVhZElkZW50aXR5KGJhc2VfaW50ZXJuYWw6OlRocmVhZElkZW50
aXR5KiBpZGVudGl0eSkgeworICBiYXNlX2ludGVybmFsOjpQZXJUaHJlYWRTeW5jaCogcHRzID0g
JmlkZW50aXR5LT5wZXJfdGhyZWFkX3N5bmNoOworICBwdHMtPm5leHQgPSBudWxscHRyOworICBw
dHMtPnNraXAgPSBudWxscHRyOworICBwdHMtPm1heV9za2lwID0gZmFsc2U7CisgIHB0cy0+d2Fp
dHAgPSBudWxscHRyOworICBwdHMtPnN1cHByZXNzX2ZhdGFsX2Vycm9ycyA9IGZhbHNlOworICBw
dHMtPnJlYWRlcnMgPSAwOworICBwdHMtPnByaW9yaXR5ID0gMDsKKyAgcHRzLT5uZXh0X3ByaW9y
aXR5X3JlYWRfY3ljbGVzID0gMDsKKyAgcHRzLT5zdGF0ZS5zdG9yZShiYXNlX2ludGVybmFsOjpQ
ZXJUaHJlYWRTeW5jaDo6U3RhdGU6OmtBdmFpbGFibGUsCisgICAgICAgICAgICAgICAgICAgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgIHB0cy0+bWF5YmVfdW5sb2NraW5nID0gZmFsc2U7
CisgIHB0cy0+d2FrZSA9IGZhbHNlOworICBwdHMtPmNvbmRfd2FpdGVyID0gZmFsc2U7CisgIHB0
cy0+YWxsX2xvY2tzID0gbnVsbHB0cjsKKyAgaWRlbnRpdHktPndhaXRlcl9zdGF0ZSA9IHt9Owor
ICBpZGVudGl0eS0+YmxvY2tlZF9jb3VudF9wdHIgPSBudWxscHRyOworICBpZGVudGl0eS0+dGlj
a2VyLnN0b3JlKDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBpZGVudGl0eS0+d2Fp
dF9zdGFydC5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgaWRlbnRpdHkt
PmlzX2lkbGUuc3RvcmUoZmFsc2UsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICBpZGVu
dGl0eS0+bmV4dCA9IG51bGxwdHI7Cit9CisKIHN0YXRpYyBiYXNlX2ludGVybmFsOjpUaHJlYWRJ
ZGVudGl0eSogTmV3VGhyZWFkSWRlbnRpdHkoKSB7CiAgIGJhc2VfaW50ZXJuYWw6OlRocmVhZElk
ZW50aXR5KiBpZGVudGl0eSA9IG51bGxwdHI7CiAKQEAgLTkwLDcgKzExNSw3IEBAIHN0YXRpYyBi
YXNlX2ludGVybmFsOjpUaHJlYWRJZGVudGl0eSogTmV3VGhyZWFkSWRlbnRpdHkoKSB7CiAgICAg
ICAgIFJvdW5kVXAocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYWxsb2NhdGlvbiksCiAgICAg
ICAgICAgICAgICAgYmFzZV9pbnRlcm5hbDo6UGVyVGhyZWFkU3luY2g6OmtBbGlnbm1lbnQpKTsK
ICAgfQotICBtZW1zZXQoaWRlbnRpdHksIDAsIHNpemVvZigqaWRlbnRpdHkpKTsKKyAgUmVzZXRU
aHJlYWRJZGVudGl0eShpZGVudGl0eSk7CiAKICAgcmV0dXJuIGlkZW50aXR5OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRlbnRp
dHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9jcmVhdGVfdGhyZWFkX2lkZW50
aXR5LmgKaW5kZXggMWJiODdkZWU2MzA3MjQ5ODBlODdjMzU2M2MxZTAzYjgzZGFjZGY1OS4uZWJi
MTZjNTZhN2NhMjQxMjgwZmVmMTA1ODRlZWZkNzgyYTFiNWY3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL2ludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRlbnRpdHkuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvY3JlYXRlX3RocmVhZF9pZGVudGl0eS5oCkBA
IC01LDcgKzUsNyBAQAogICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CiAgKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKyAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAogICoKICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC01MCw0ICs1MCw1IEBA
IGlubGluZSBiYXNlX2ludGVybmFsOjpUaHJlYWRJZGVudGl0eSogR2V0T3JDcmVhdGVDdXJyZW50
VGhyZWFkSWRlbnRpdHkoKSB7CiAKIH0gIC8vIG5hbWVzcGFjZSBzeW5jaHJvbml6YXRpb25faW50
ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9TWU5DSFJPTkla
QVRJT05fSU5URVJOQUxfQ1JFQVRFX1RIUkVBRF9JREVOVElUWV9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hy
b25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmNjCmluZGV4IGQzODc4ZGUyYjY4ZjIxOTI5
ZjAwYjg2MzRiY2I5Nzk0YTBlNGYwODYuLjBjOGM3NTY0NDg5NzcyMjllZGQ1MDk3NTk4MDUzZTAx
ZjM4ZmNkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFw
aGN5Y2xlcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvZ3JhcGhjeWNs
ZXMuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlcy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmgKaW5kZXggMmU2Njg2YTRjMDYy
OGJjN2U5OWYyODVjOThiZWQxNTc5YThhZDA2Yi4uZTViZGUwMDdjNzY4ZTJlZmJkYTRkMmFlMmI4
MWVjMzVlMjk0ODllYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFs
L2dyYXBoY3ljbGVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBo
Y3ljbGVzLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlc19iZW5jaG1h
cmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvZ3JhcGhjeWNsZXNfYmVuY2ht
YXJrLmNjCmluZGV4IGEyMzljMjVjM2E4MWQ1YjI1YWM2OTdiYmM5MTcwYjIxZjIyMDFjN2IuLjU0
ODIzZTBiYTUxYTM4MTVkYWRkYjZhODA0NzAwMWI3MDUyYjI4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlc19iZW5jaG1hcmsuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzX2JlbmNobWFyay5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
eW5jaHJvbml6YXRpb24vaW50ZXJuYWwvZ3JhcGhjeWNsZXNfdGVzdC5jYwppbmRleCA5YTg1YjM5
MDc0ZDc1ODQ3YmQxODBjOTExNTM4YTM5YjMyNWFjNjk4Li41OGU4NDc3YjZkMWE4Mzg1ZTIwYjNh
MTY1YjQ2OTRkZmIxOTVmYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50
ZXJuYWwvZ3JhcGhjeWNsZXNfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50
ZXJuYWwvZ3JhcGhjeWNsZXNfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2tl
cm5lbF90aW1lb3V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwva2VybmVsX3Rp
bWVvdXQuaAppbmRleCBiYjcwODAwMDRjNzJkYTUxY2IyMzE0Y2ZjOGVkNjk1MjlkMzM0N2JkLi42
MWM3MmU3NWQxM2I1NTQyZTMxMjgxYjEwYjQwZGQ1NjE3ZmFiZWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwva2VybmVsX3RpbWVvdXQuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
eW5jaHJvbml6YXRpb24vaW50ZXJuYWwva2VybmVsX3RpbWVvdXQuaApAQCAtNCw3ICs0LDcgQEAK
IC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAog
Ly8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBLZXJuZWxU
aW1lb3V0IHsKIAogICAvLyBXZSBleHBsaWNpdGx5IGRvIG5vdCBzdXBwb3J0IG90aGVyIGN1c3Rv
bSBmb3JtYXRzOiB0aW1lc3BlYywgaW50NjRfdCBuYW5vcy4KICAgLy8gVW5pZnkgb24gdGhpcyBh
bmQgYWJzbDo6VGltZSwgcGxlYXNlLgorCiAgIGJvb2wgaGFzX3RpbWVvdXQoKSBjb25zdCB7IHJl
dHVybiBuc18gIT0gMDsgfQogCiAgcHJpdmF0ZToKQEAgLTc2LDcgKzc3LDcgQEAgY2xhc3MgS2Vy
bmVsVGltZW91dCB7CiAgICAgaWYgKHggPD0gMCkgeCA9IDE7CiAgICAgLy8gQSB0aW1lIGxhcmdl
ciB0aGFuIHdoYXQgY2FuIGJlIHJlcHJlc2VudGVkIHRvIHRoZSBrZXJuZWwgaXMgdHJlYXRlZAog
ICAgIC8vIGFzIG5vIHRpbWVvdXQuCi0gICAgaWYgKHggPT0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWF4KCkpIHggPSAwOworICAgIGlmICh4ID09IChzdGQ6Om51bWVyaWNfbGltaXRz
PGludDY0X3Q+OjptYXgpKCkpIHggPSAwOwogICAgIHJldHVybiB4OwogICB9CiAKQEAgLTkwLDcg
KzkxLDcgQEAgY2xhc3MgS2VybmVsVGltZW91dCB7CiAgICAgICAgICAgRVJST1IsCiAgICAgICAg
ICAgIlRyaWVkIHRvIGNyZWF0ZSBhIHRpbWVzcGVjIGZyb20gYSBub24tdGltZW91dDsgbmV2ZXIg
ZG8gdGhpcy4iKTsKICAgICAgIC8vIEJ1dCB3ZSdsbCB0cnkgdG8gY29udGludWUgc2FuZWx5LiAg
bm8tdGltZW91dCB+PSBzYXR1cmF0ZWQgdGltZW91dC4KLSAgICAgIG4gPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDY0X3Q+OjptYXgoKTsKKyAgICAgIG4gPSAoc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWF4KSgpOwogICAgIH0KIAogICAgIC8vIEtlcm5lbCBBUElzIHZhbGlkYXRlIHRp
bWVzcGVjcyBhcyBiZWluZyBhdCBvciBhZnRlciB0aGUgZXBvY2gsCkBAIC0xMDAsOCArMTAxLDgg
QEAgY2xhc3MgS2VybmVsVGltZW91dCB7CiAgICAgaWYgKG4gPCAwKSBuID0gMDsKIAogICAgIHN0
cnVjdCB0aW1lc3BlYyBhYnN0aW1lOwotICAgIGludDY0X3Qgc2Vjb25kcyA9IHN0ZDo6bWluKG4g
LyBrTmFub3NQZXJTZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3R7
c3RkOjpudW1lcmljX2xpbWl0czx0aW1lX3Q+OjptYXgoKX0pOworICAgIGludDY0X3Qgc2Vjb25k
cyA9IChzdGQ6Om1pbikobiAvIGtOYW5vc1BlclNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90eyhzdGQ6Om51bWVyaWNfbGltaXRzPHRpbWVfdD46Om1heCkoKX0p
OwogICAgIGFic3RpbWUudHZfc2VjID0gc3RhdGljX2Nhc3Q8dGltZV90PihzZWNvbmRzKTsKICAg
ICBhYnN0aW1lLnR2X25zZWMgPQogICAgICAgICBzdGF0aWNfY2FzdDxkZWNsdHlwZShhYnN0aW1l
LnR2X25zZWMpPihuICUga05hbm9zUGVyU2Vjb25kKTsKQEAgLTExOSw3ICsxMjAsNyBAQCBjbGFz
cyBLZXJuZWxUaW1lb3V0IHsKICAgLy8gPGludHNhZmUuaD4gYW5kIDxXaW5CYXNlLmg+LgogICB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgRFdvcmQ7ICAvLyBOT0xJTlQKICAgRFdvcmQgSW5NaWxsaXNl
Y29uZHNGcm9tTm93KCkgY29uc3QgewotICAgIGNvbnN0ZXhwciBEV29yZCBrSW5maW5pdGUgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPERXb3JkPjo6bWF4KCk7CisgICAgY29uc3RleHByIERXb3JkIGtJ
bmZpbml0ZSA9IChzdGQ6Om51bWVyaWNfbGltaXRzPERXb3JkPjo6bWF4KSgpOwogICAgIGlmICgh
aGFzX3RpbWVvdXQoKSkgewogICAgICAgcmV0dXJuIGtJbmZpbml0ZTsKICAgICB9CkBAIC0xMzAs
NyArMTMxLDcgQEAgY2xhc3MgS2VybmVsVGltZW91dCB7CiAgICAgaWYgKG5zXyA+PSBub3cpIHsK
ICAgICAgIC8vIFJvdW5kIHVwIHNvIHRoYXQgTm93KCkgKyBtc19mcm9tX25vdyA+PSBuc18uCiAg
ICAgICBjb25zdGV4cHIgdWludDY0X3QgbWF4X25hbm9zID0KLSAgICAgICAgICBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSAtIDk5OTk5OXU7CisgICAgICAgICAgKHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCkoKSAtIDk5OTk5OXU7CiAgICAgICB1aW50NjRfdCBt
c19mcm9tX25vdyA9CiAgICAgICAgICAgKHN0ZDo6bWluPHVpbnQ2NF90PihtYXhfbmFub3MsIG5z
XyAtIG5vdykgKyA5OTk5OTl1KSAvIDEwMDAwMDB1OwogICAgICAgaWYgKG1zX2Zyb21fbm93ID4g
a0luZmluaXRlKSB7CkBAIC0xNDgsNCArMTQ5LDUgQEAgY2xhc3MgS2VybmVsVGltZW91dCB7CiAK
IH0gIC8vIG5hbWVzcGFjZSBzeW5jaHJvbml6YXRpb25faW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFj
ZSBhYnNsCisKICNlbmRpZiAgLy8gQUJTTF9TWU5DSFJPTklaQVRJT05fSU5URVJOQUxfS0VSTkVM
X1RJTUVPVVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9t
dXRleF9ub25wcm9kLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL211dGV4X25v
bnByb2QuY2MKaW5kZXggNDVjNjAzMjZkYmEwMzMwMzM0MmI1N2EzNTI1MDhkY2NjMTNkZDBhYS4u
MjY3ZGVhZmZhMzU2ZDdkNTM0NDI4MDM1ZTk3NGQ2YmZlZjE1ZmVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL211dGV4X25vbnByb2QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL2ludGVybmFsL211dGV4X25vbnByb2QuY2MKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9pbnRlcm5hbC9tdXRleF9ub25wcm9kLmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9p
bnRlcm5hbC9tdXRleF9ub25wcm9kLmluYwppbmRleCAwYWFiM2QxMzE0ZTY4ODI0YWJjMzkxNzhl
ZmFhMjE1ZWQ0MjA3ZjA0Li5iOGQ1YWY3OWFkMzgwNTg3NWUzM2M3ZGRkY2I3YWY1YmIzMTFmZDkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvbXV0ZXhfbm9ucHJv
ZC5pbmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL211dGV4X25vbnByb2Qu
aW5jCkBAIC0yMTQsNiArMjE0LDkgQEAgY2xhc3MgU3luY2hyb25pemF0aW9uU3RvcmFnZSB7CiAg
IC8vIHN0YWNrKSBzaG91bGQgdXNlIHRoaXMgY29uc3RydWN0b3IuCiAgIGV4cGxpY2l0IFN5bmNo
cm9uaXphdGlvblN0b3JhZ2UoYmFzZV9pbnRlcm5hbDo6TGlua2VySW5pdGlhbGl6ZWQpIHt9CiAK
KyAgY29uc3RleHByIGV4cGxpY2l0IFN5bmNocm9uaXphdGlvblN0b3JhZ2UoYWJzbDo6Q29uc3RJ
bml0VHlwZSkKKyAgICAgIDogaXNfZHluYW1pY18oZmFsc2UpLCBvbmNlXygpLCBzcGFjZV97ezB9
fSB7fQorCiAgIFN5bmNocm9uaXphdGlvblN0b3JhZ2UoU3luY2hyb25pemF0aW9uU3RvcmFnZSYp
ID0gZGVsZXRlOwogICBTeW5jaHJvbml6YXRpb25TdG9yYWdlJiBvcGVyYXRvcj0oU3luY2hyb25p
emF0aW9uU3RvcmFnZSYpID0gZGVsZXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vaW50ZXJuYWwvcGVyX3RocmVhZF9zZW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24v
aW50ZXJuYWwvcGVyX3RocmVhZF9zZW0uY2MKaW5kZXggY2FhMmJhZjY0YmQzMTEwZjBiYTg4NTdj
ZjI1YjIyZDE3YjU5NjQ3OC4uYjcwMTRmYjJiMDJkMmZmOTZmMWIwYWFmOGFmNzYxYTgyNGU2ZWQw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3Blcl90aHJlYWRf
c2VtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3Nl
bS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtODksNiAr
ODksNyBAQCBBQlNMX0FUVFJJQlVURV9XRUFLIGJvb2wgQWJzbEludGVybmFsUGVyVGhyZWFkU2Vt
V2FpdCgKICAgaWYgKGlkZW50aXR5LT5ibG9ja2VkX2NvdW50X3B0ciAhPSBudWxscHRyKSB7CiAg
ICAgaWRlbnRpdHktPmJsb2NrZWRfY291bnRfcHRyLT5mZXRjaF9zdWIoMSwgc3RkOjptZW1vcnlf
b3JkZXJfcmVsYXhlZCk7CiAgIH0KKwogICBpZGVudGl0eS0+aXNfaWRsZS5zdG9yZShmYWxzZSwg
c3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiAgIGlkZW50aXR5LT53YWl0X3N0YXJ0LnN0b3Jl
KDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogICByZXR1cm4gIXRpbWVvdXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvcGVyX3RocmVhZF9zZW0uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5oCmluZGV4IDY3
OGI2OWU0ODdhNTdmYTVlMDZmZjlhOGNjMmJhNjdlNGEwZmFlZDIuLmU3ZGEwNzBiYTcyYzI5NTdi
Y2MyNmRiZTQ3OTVkMDUwNzU1YmI0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlv
bi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9p
bnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCkBAIC0xMDQsNCArMTA0LDUgQEAgYm9vbCBhYnNsOjpzeW5jaHJvbml6YXRpb25f
aW50ZXJuYWw6OlBlclRocmVhZFNlbTo6V2FpdCgKICAgICBhYnNsOjpzeW5jaHJvbml6YXRpb25f
aW50ZXJuYWw6Oktlcm5lbFRpbWVvdXQgdCkgewogICByZXR1cm4gQWJzbEludGVybmFsUGVyVGhy
ZWFkU2VtV2FpdCh0KTsKIH0KKwogI2VuZGlmICAvLyBBQlNMX1NZTkNIUk9OSVpBVElPTl9JTlRF
Uk5BTF9QRVJfVEhSRUFEX1NFTV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9u
L2ludGVybmFsL3Blcl90aHJlYWRfc2VtX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24v
aW50ZXJuYWwvcGVyX3RocmVhZF9zZW1fdGVzdC5jYwppbmRleCBjMjlkODQwM2RmNDNmYmMzZDhk
MmM1YzdjY2RhZjNhZWVkMmYyYWQ0Li5kYmE3MjM5MGQzZDBhNWFlMjIzNjUwYmM5ZDc3NDc3MDU3
MDRjZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvcGVyX3Ro
cmVhZF9zZW1fdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvcGVy
X3RocmVhZF9zZW1fdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApAQCAtMTE0LDEwICsxMTQsOSBAQCBjbGFzcyBQZXJUaHJlYWRTZW1UZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewogICAgICAgbWluX2N5Y2xlcyA9IHN0ZDo6bWluKG1pbl9jeWNsZXMs
IGN5Y2xlcyk7CiAgICAgICB0b3RhbF9jeWNsZXMgKz0gY3ljbGVzOwogICAgIH0KLSAgICBzdGQ6
OnN0cmluZyBvdXQgPQotICAgICAgICBTdHJDYXQobXNnLCAibWluIGN5Y2xlIGNvdW50PSIsIG1p
bl9jeWNsZXMsICIgYXZnIGN5Y2xlIGNvdW50PSIsCi0gICAgICAgICAgICAgICBhYnNsOjpTaXhE
aWdpdHMoc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbF9jeWNsZXMpIC8KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrTnVtSXRlcmF0aW9ucykpOworICAgIHN0ZDo6c3RyaW5nIG91dCA9
IFN0ckNhdCgKKyAgICAgICAgbXNnLCAibWluIGN5Y2xlIGNvdW50PSIsIG1pbl9jeWNsZXMsICIg
YXZnIGN5Y2xlIGNvdW50PSIsCisgICAgICAgIGFic2w6OlNpeERpZ2l0cyhzdGF0aWNfY2FzdDxk
b3VibGU+KHRvdGFsX2N5Y2xlcykgLyBrTnVtSXRlcmF0aW9ucykpOwogICAgIHByaW50ZigiJXNc
biIsIG91dC5jX3N0cigpKTsKIAogICAgIHBhcnRuZXJfdGhyZWFkLmpvaW4oKTsKQEAgLTE1Miwx
MiArMTUxLDE2IEBAIFRFU1RfRihQZXJUaHJlYWRTZW1UZXN0LCBXaXRoVGltZW91dCkgewogfQog
CiBURVNUX0YoUGVyVGhyZWFkU2VtVGVzdCwgVGltZW91dHMpIHsKLSAgYWJzbDo6VGltZSB0aW1l
b3V0ID0gYWJzbDo6Tm93KCkgKyBhYnNsOjpNaWxsaXNlY29uZHMoNTApOworICBjb25zdCBhYnNs
OjpEdXJhdGlvbiBkZWxheSA9IGFic2w6Ok1pbGxpc2Vjb25kcyg1MCk7CisgIGNvbnN0IGFic2w6
OlRpbWUgc3RhcnQgPSBhYnNsOjpOb3coKTsKKyAgRVhQRUNUX0ZBTFNFKFdhaXQoc3RhcnQgKyBk
ZWxheSkpOworICBjb25zdCBhYnNsOjpEdXJhdGlvbiBlbGFwc2VkID0gYWJzbDo6Tm93KCkgLSBz
dGFydDsKICAgLy8gQWxsb3cgZm9yIGEgc2xpZ2h0IGVhcmx5IHJldHVybiwgdG8gYWNjb3VudCBm
b3IgcXVhbGl0eSBvZiBpbXBsZW1lbnRhdGlvbgogICAvLyBpc3N1ZXMgb24gdmFyaW91cyBwbGF0
Zm9ybXMuCiAgIGNvbnN0IGFic2w6OkR1cmF0aW9uIHNsb3AgPSBhYnNsOjpNaWNyb3NlY29uZHMo
MjAwKTsKLSAgRVhQRUNUX0ZBTFNFKFdhaXQodGltZW91dCkpOwotICBFWFBFQ1RfTEUodGltZW91
dCwgYWJzbDo6Tm93KCkgKyBzbG9wKTsKKyAgRVhQRUNUX0xFKGRlbGF5IC0gc2xvcCwgZWxhcHNl
ZCkKKyAgICAgIDw8ICJXYWl0IHJldHVybmVkICIgPDwgZGVsYXkgLSBlbGFwc2VkCisgICAgICA8
PCAiIGVhcmx5ICh3aXRoICIgPDwgc2xvcCA8PCAiIHNsb3ApLCBzdGFydCB0aW1lIHdhcyAiIDw8
IHN0YXJ0OwogCiAgIGFic2w6OlRpbWUgbmVnYXRpdmVfdGltZW91dCA9IGFic2w6OlVuaXhFcG9j
aCgpIC0gYWJzbDo6TWlsbGlzZWNvbmRzKDEwMCk7CiAgIEVYUEVDVF9GQUxTRShXYWl0KG5lZ2F0
aXZlX3RpbWVvdXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5h
bC90aHJlYWRfcG9vbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3RocmVhZF9w
b29sLmgKaW5kZXggODQ2NDA0Mjc3YTAzZTc4ZTU4ZjMzNDRlZGY2OTBhZWFlZjg5YzIzNS4uYTAw
ZjJiZThlODkyOGU1MmQxNDBjMWUyNWJmZTY4N2I5NmZhMmNkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL2ludGVybmFsL3RocmVhZF9wb29sLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hy
b25pemF0aW9uL2ludGVybmFsL3RocmVhZF9wb29sLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBo
dHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKQEAgLTE2LDYgKzE2LDcgQEAKICNkZWZpbmUgQUJTTF9TWU5DSFJP
TklaQVRJT05fSU5URVJOQUxfVEhSRUFEX1BPT0xfSF8KIAogI2luY2x1ZGUgPGNhc3NlcnQ+Cisj
aW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHF1ZXVl
PgogI2luY2x1ZGUgPHRocmVhZD4gIC8vIE5PTElOVChidWlsZC9jKysxMSkKQEAgLTQyLDcgKzQz
LDcgQEAgY2xhc3MgVGhyZWFkUG9vbCB7CiAgIH5UaHJlYWRQb29sKCkgewogICAgIHsKICAgICAg
IGFic2w6Ok11dGV4TG9jayBsKCZtdV8pOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aHJl
YWRzXy5zaXplKCk7ICsraSkgeworICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aHJlYWRz
Xy5zaXplKCk7IGkrKykgewogICAgICAgICBxdWV1ZV8ucHVzaChudWxscHRyKTsgIC8vIFNodXRk
b3duIHNpZ25hbC4KICAgICAgIH0KICAgICB9CkBAIC01OSw3ICs2MCw3IEBAIGNsYXNzIFRocmVh
ZFBvb2wgewogICB9CiAKICBwcml2YXRlOgotICBib29sIFdvcmtBdmFpbGFibGUoKSBjb25zdCBF
WENMVVNJVkVfTE9DS1NfUkVRVUlSRUQobXVfKSB7CisgIGJvb2wgV29ya0F2YWlsYWJsZSgpIGNv
bnN0IEFCU0xfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKG11XykgewogICAgIHJldHVybiAhcXVl
dWVfLmVtcHR5KCk7CiAgIH0KIApAQCAtODAsNyArODEsNyBAQCBjbGFzcyBUaHJlYWRQb29sIHsK
ICAgfQogCiAgIGFic2w6Ok11dGV4IG11XzsKLSAgc3RkOjpxdWV1ZTxzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4+IHF1ZXVlXyBHVUFSREVEX0JZKG11Xyk7CisgIHN0ZDo6cXVldWU8c3RkOjpmdW5jdGlv
bjx2b2lkKCk+PiBxdWV1ZV8gQUJTTF9HVUFSREVEX0JZKG11Xyk7CiAgIHN0ZDo6dmVjdG9yPHN0
ZDo6dGhyZWFkPiB0aHJlYWRzXzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9pbnRlcm5hbC93YWl0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwv
d2FpdGVyLmNjCmluZGV4IDc2OGM1MjA4NWNkMzk2N2RkN2YzZDY2YjBjMzExMWY5MDU3MTMwYzcu
LmYxN2VhNTZmZGRhMzRmNjdhYmUyODIyMjQzZDQ2ZTI5MjczNWM3ODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC93YWl0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hy
b25pemF0aW9uL2ludGVybmFsL3dhaXRlci5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
IC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLApAQCAtNDAsNiArNDAsOSBAQAogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNs
dWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8bmV3PgorI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dn
aW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eS5oIgog
I2luY2x1ZGUgImFic2wvYmFzZS9vcHRpbWl6YXRpb24uaCIKQEAgLTgxLDYgKzg0LDcgQEAgc3Rh
dGljIHZvaWQgTWF5YmVCZWNvbWVJZGxlKCkgewogI2RlZmluZSBGVVRFWF9CSVRTRVRfTUFUQ0hf
QU5ZIDB4RkZGRkZGRkYKICNlbmRpZgogI2VuZGlmCisKIGNsYXNzIEZ1dGV4IHsKICBwdWJsaWM6
CiAgIHN0YXRpYyBpbnQgV2FpdFVudGlsKHN0ZDo6YXRvbWljPGludDMyX3Q+ICp2LCBpbnQzMl90
IHZhbCwKQEAgLTMyNiw2ICszMzAsNDMgQEAgdm9pZCBXYWl0ZXI6OlBva2UoKSB7CiAKICNlbGlm
IEFCU0xfV0FJVEVSX01PREUgPT0gQUJTTF9XQUlURVJfTU9ERV9XSU4zMgogCitjbGFzcyBXYWl0
ZXI6OldpbkhlbHBlciB7CisgcHVibGljOgorICBzdGF0aWMgU1JXTE9DSyAqR2V0TG9jayhXYWl0
ZXIgKncpIHsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTUldMT0NLICo+KCZ3LT5tdV9z
dG9yYWdlXyk7CisgIH0KKworICBzdGF0aWMgQ09ORElUSU9OX1ZBUklBQkxFICpHZXRDb25kKFdh
aXRlciAqdykgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENPTkRJVElPTl9WQVJJQUJM
RSAqPigmdy0+Y3Zfc3RvcmFnZV8pOworICB9CisKKyAgc3RhdGljX2Fzc2VydChzaXplb2YoU1JX
TE9DSykgPT0gc2l6ZW9mKFdhaXRlcjo6U1JXTG9ja1N0b3JhZ2UpLAorICAgICAgICAgICAgICAg
ICJTUldMb2NrU3RvcmFnZSBkb2VzIG5vdCBoYXZlIHRoZSBzYW1lIHNpemUgYXMgU1JXTE9DSyIp
OworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgYWxpZ25vZihTUldMT0NLKSA9PSBhbGlnbm9mKFdh
aXRlcjo6U1JXTG9ja1N0b3JhZ2UpLAorICAgICAgIlNSV0xvY2tTdG9yYWdlIGRvZXMgbm90IGhh
dmUgdGhlIHNhbWUgYWxpZ25tZW50IGFzIFNSV0xPQ0siKTsKKworICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihDT05ESVRJT05fVkFSSUFCTEUpID09CisgICAgICAgICAgICAgICAgICAgIHNpemVvZihX
YWl0ZXI6OkNvbmRpdGlvblZhcmlhYmxlU3RvcmFnZSksCisgICAgICAgICAgICAgICAgIkFCU0xf
Q09ORElUSU9OX1ZBUklBQkxFX1NUT1JBR0UgZG9lcyBub3QgaGF2ZSB0aGUgc2FtZSBzaXplICIK
KyAgICAgICAgICAgICAgICAiYXMgQ09ORElUSU9OX1ZBUklBQkxFIik7CisgIHN0YXRpY19hc3Nl
cnQoYWxpZ25vZihDT05ESVRJT05fVkFSSUFCTEUpID09CisgICAgICAgICAgICAgICAgICAgIGFs
aWdub2YoV2FpdGVyOjpDb25kaXRpb25WYXJpYWJsZVN0b3JhZ2UpLAorICAgICAgICAgICAgICAg
ICJDb25kaXRpb25WYXJpYWJsZVN0b3JhZ2UgZG9lcyBub3QgaGF2ZSB0aGUgc2FtZSAiCisgICAg
ICAgICAgICAgICAgImFsaWdubWVudCBhcyBDT05ESVRJT05fVkFSSUFCTEUiKTsKKworICAvLyBU
aGUgU1JXTE9DSyBhbmQgQ09ORElUSU9OX1ZBUklBQkxFIHR5cGVzIG11c3QgYmUgdHJpdmlhbGx5
IGNvbnN0dWN0aWJsZQorICAvLyBhbmQgZGVzdHJ1Y3RpYmxlIGJlY2F1c2Ugd2UgbmV2ZXIgY2Fs
bCB0aGVpciBjb25zdHJ1Y3RvcnMgb3IgZGVzdHJ1Y3RvcnMuCisgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfY29uc3RydWN0aWJsZTxTUldMT0NLPjo6dmFsdWUsCisgICAgICAgICAg
ICAgICAgIlRoZSBTUldMT0NLIHR5cGUgbXVzdCBiZSB0cml2aWFsbHkgY29uc3RydWN0aWJsZSIp
OworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2NvbnN0cnVjdGlibGU8Q09ORElU
SU9OX1ZBUklBQkxFPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIlRoZSBDT05ESVRJT05fVkFS
SUFCTEUgdHlwZSBtdXN0IGJlIHRyaXZpYWxseSBjb25zdHJ1Y3RpYmxlIik7CisgIHN0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNSV0xPQ0s+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAiVGhlIFNSV0xPQ0sgdHlwZSBtdXN0IGJlIHRyaXZpYWxseSBkZXN0cnVj
dGlibGUiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
Q09ORElUSU9OX1ZBUklBQkxFPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIlRoZSBDT05ESVRJ
T05fVkFSSUFCTEUgdHlwZSBtdXN0IGJlIHRyaXZpYWxseSBkZXN0cnVjdGlibGUiKTsKK307CisK
IGNsYXNzIExvY2tIb2xkZXIgewogIHB1YmxpYzoKICAgZXhwbGljaXQgTG9ja0hvbGRlcihTUldM
T0NLKiBtdSkgOiBtdV8obXUpIHsKQEAgLTM0NCwxNCArMzg1LDE5IEBAIGNsYXNzIExvY2tIb2xk
ZXIgewogfTsKIAogdm9pZCBXYWl0ZXI6OkluaXQoKSB7Ci0gIEluaXRpYWxpemVTUldMb2NrKCZt
dV8pOwotICBJbml0aWFsaXplQ29uZGl0aW9uVmFyaWFibGUoJmN2Xyk7CisgIGF1dG8gKm11ID0g
OjpuZXcgKHN0YXRpY19jYXN0PHZvaWQgKj4oJm11X3N0b3JhZ2VfKSkgU1JXTE9DSzsKKyAgYXV0
byAqY3YgPSA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCAqPigmY3Zfc3RvcmFnZV8pKSBDT05ESVRJ
T05fVkFSSUFCTEU7CisgIEluaXRpYWxpemVTUldMb2NrKG11KTsKKyAgSW5pdGlhbGl6ZUNvbmRp
dGlvblZhcmlhYmxlKGN2KTsKICAgd2FpdGVyX2NvdW50Xy5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKTsKICAgd2FrZXVwX2NvdW50Xy5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKIH0KIAogYm9vbCBXYWl0ZXI6OldhaXQoS2VybmVsVGltZW91dCB0KSB7Ci0g
IExvY2tIb2xkZXIgaCgmbXVfKTsKKyAgU1JXTE9DSyAqbXUgPSBXaW5IZWxwZXI6OkdldExvY2so
dGhpcyk7CisgIENPTkRJVElPTl9WQVJJQUJMRSAqY3YgPSBXaW5IZWxwZXI6OkdldENvbmQodGhp
cyk7CisKKyAgTG9ja0hvbGRlciBoKG11KTsKICAgd2FpdGVyX2NvdW50Xy5mZXRjaF9hZGQoMSwg
c3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiAKICAgLy8gTG9vcCB1bnRpbCB3ZSBmaW5kIGEg
d2FrZXVwIHRvIGNvbnN1bWUgb3IgdGltZW91dC4KQEAgLTM2OSw4ICs0MTUsNyBAQCBib29sIFdh
aXRlcjo6V2FpdChLZXJuZWxUaW1lb3V0IHQpIHsKICAgICB9CiAKICAgICAvLyBObyB3YWtldXBz
IGF2YWlsYWJsZSwgdGltZSB0byB3YWl0LgotICAgIGlmICghU2xlZXBDb25kaXRpb25WYXJpYWJs
ZVNSVygKLSAgICAgICAgICAgICZjdl8sICZtdV8sIHQuSW5NaWxsaXNlY29uZHNGcm9tTm93KCks
IDApKSB7CisgICAgaWYgKCFTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JXKGN2LCBtdSwgdC5Jbk1p
bGxpc2Vjb25kc0Zyb21Ob3coKSwgMCkpIHsKICAgICAgIC8vIEdldExhc3RFcnJvcigpIHJldHVy
bnMgYSBXaW4zMiBEV09SRCwgYnV0IHdlIGFzc2lnbiB0bwogICAgICAgLy8gdW5zaWduZWQgbG9u
ZyB0byBzaW1wbGlmeSB0aGUgQUJTTF9SQVdfTE9HIGNhc2UgYmVsb3cuICBUaGUgdW5pZm9ybQog
ICAgICAgLy8gaW5pdGlhbGl6YXRpb24gZ3VhcmFudGVlcyB0aGlzIGlzIG5vdCBhIG5hcnJvd2lu
ZyBjb252ZXJzaW9uLgpAQCAtMzk3LDExICs0NDIsMTEgQEAgdm9pZCBXYWl0ZXI6OlBva2UoKSB7
CiAgICAgcmV0dXJuOwogICB9CiAgIC8vIFBvdGVudGlhbGx5IGEgd2FrZXIuIFRha2UgdGhlIGxv
Y2sgYW5kIGNoZWNrIGFnYWluLgotICBMb2NrSG9sZGVyIGgoJm11Xyk7CisgIExvY2tIb2xkZXIg
aChXaW5IZWxwZXI6OkdldExvY2sodGhpcykpOwogICBpZiAod2FpdGVyX2NvdW50Xy5sb2FkKHN0
ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpID09IDApIHsKICAgICByZXR1cm47CiAgIH0KLSAgV2Fr
ZUNvbmRpdGlvblZhcmlhYmxlKCZjdl8pOworICBXYWtlQ29uZGl0aW9uVmFyaWFibGUoV2luSGVs
cGVyOjpHZXRDb25kKHRoaXMpKTsKIH0KIAogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNo
cm9uaXphdGlvbi9pbnRlcm5hbC93YWl0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRl
cm5hbC93YWl0ZXIuaAppbmRleCAyMzE2NmY0YmZhMzc4NmEyNDE1YzE2YmIxNTNkMWI4YWQ3ODFj
ZjI5Li5hM2UzMTI0ZTQ0MTc4MDQyMjE3ZDVmNzU3ZmVlNDFlN2M4YjM3YzhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvd2FpdGVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3lu
Y2hyb25pemF0aW9uL2ludGVybmFsL3dhaXRlci5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC0xOCw5ICsxOCw3IEBACiAKICNpbmNsdWRlICJhYnNsL2Jhc2Uv
Y29uZmlnLmgiCiAKLSNpZmRlZiBfV0lOMzIKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZWxzZQor
I2lmbmRlZiBfV0lOMzIKICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZW5kaWYKIApAQCAtMTIzLDgg
KzEyMSwyMCBAQCBjbGFzcyBXYWl0ZXIgewogICAvLyBwcmltaXZpdGl2ZXMuICBXZSBhcmUgdXNp
bmcgU1JXTE9DSyBhbmQgQ09ORElUSU9OX1ZBUklBQkxFCiAgIC8vIGJlY2F1c2UgdGhleSBkb24n
dCByZXF1aXJlIGEgZGVzdHJ1Y3RvciB0byByZWxlYXNlIHN5c3RlbQogICAvLyByZXNvdXJjZXMu
Ci0gIFNSV0xPQ0sgbXVfOwotICBDT05ESVRJT05fVkFSSUFCTEUgY3ZfOworICAvLworICAvLyBI
b3dldmVyLCB3ZSBjYW4ndCBpbmNsdWRlIFdpbmRvd3MuaCBpbiBvdXIgaGVhZGVycywgc28gd2Ug
dXNlIGFsaWduZWQKKyAgLy8gc3RvcmFnZSBidWZmZXJzIHRvIGRlZmluZSB0aGUgc3RvcmFnZS4K
KyAgdXNpbmcgU1JXTG9ja1N0b3JhZ2UgPQorICAgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0
b3JhZ2U8c2l6ZW9mKHZvaWQqKSwgYWxpZ25vZih2b2lkKik+Ojp0eXBlOworICB1c2luZyBDb25k
aXRpb25WYXJpYWJsZVN0b3JhZ2UgPQorICAgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3Jh
Z2U8c2l6ZW9mKHZvaWQqKSwgYWxpZ25vZih2b2lkKik+Ojp0eXBlOworCisgIC8vIFdpbkhlbHBl
ciAtIFVzZWQgdG8gZGVmaW5lIHV0aWxpdGllcyBmb3IgYWNjZXNzaW5nIHRoZSBsb2NrIGFuZAor
ICAvLyBjb25kaXRpb24gdmFyaWFibGUgc3RvcmFnZSBvbmNlIHRoZSB0eXBlcyBhcmUgY29tcGxl
dGUuCisgIGNsYXNzIFdpbkhlbHBlcjsKKworICBTUldMb2NrU3RvcmFnZSBtdV9zdG9yYWdlXzsK
KyAgQ29uZGl0aW9uVmFyaWFibGVTdG9yYWdlIGN2X3N0b3JhZ2VfOwogICBzdGQ6OmF0b21pYzxp
bnQ+IHdhaXRlcl9jb3VudF87CiAgIHN0ZDo6YXRvbWljPGludD4gd2FrZXVwX2NvdW50XzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2xpZmV0aW1lX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vbGlmZXRpbWVfdGVzdC5jYwppbmRleCA5MGM5MDA5YjE4ZmFmYzll
YTI5NWNhYjE0NmM2NWRkNjgyY2JmNTcyLi4zNGI4ODc1YjRiNzAxOTA4MDk4YmZmNzEzZWJjZTE0
ZmNlNTEzZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbGlmZXRpbWVfdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbGlmZXRpbWVfdGVzdC5jYwpAQCAtNCw3
ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTcsNiArMTcsNyBAQAogI2lu
Y2x1ZGUgPHR5cGVfdHJhaXRzPgogCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIK
KyNpbmNsdWRlICJhYnNsL2Jhc2UvY29uc3RfaW5pdC5oIgogI2luY2x1ZGUgImFic2wvYmFzZS9p
bnRlcm5hbC9yYXdfbG9nZ2luZy5oIgogI2luY2x1ZGUgImFic2wvYmFzZS90aHJlYWRfYW5ub3Rh
dGlvbnMuaCIKICNpbmNsdWRlICJhYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgpAQCAtNzIs
MjMgKzczLDE5IEBAIHZvaWQgVGhyZWFkVHdvKGFic2w6Ok11dGV4KiBtdXRleCwgYWJzbDo6Q29u
ZFZhciogY29uZHZhciwKIC8vIExhdW5jaCB0aHJlYWQgMSBhbmQgdGhyZWFkIDIsIGFuZCBibG9j
ayBvbiB0aGVpciBjb21wbGV0aW9uLgogLy8gSWYgYW55IG9mICdtdXRleCcsICdjb25kdmFyJywg
b3IgJ25vdGlmaWNhdGlvbicgaXMgbnVsbHB0ciwgdXNlIGEgbG9jYWxseQogLy8gY29uc3RydWN0
ZWQgaW5zdGFuY2UgaW5zdGVhZC4KLXZvaWQgUnVuVGVzdHMoYWJzbDo6TXV0ZXgqIG11dGV4LCBh
YnNsOjpDb25kVmFyKiBjb25kdmFyLAotICAgICAgICAgICAgICBhYnNsOjpOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikgewordm9pZCBSdW5UZXN0cyhhYnNsOjpNdXRleCogbXV0ZXgsIGFic2w6
OkNvbmRWYXIqIGNvbmR2YXIpIHsKICAgYWJzbDo6TXV0ZXggZGVmYXVsdF9tdXRleDsKICAgYWJz
bDo6Q29uZFZhciBkZWZhdWx0X2NvbmR2YXI7Ci0gIGFic2w6Ok5vdGlmaWNhdGlvbiBkZWZhdWx0
X25vdGlmaWNhdGlvbjsKKyAgYWJzbDo6Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbjsKICAgaWYg
KCFtdXRleCkgewogICAgIG11dGV4ID0gJmRlZmF1bHRfbXV0ZXg7CiAgIH0KICAgaWYgKCFjb25k
dmFyKSB7CiAgICAgY29uZHZhciA9ICZkZWZhdWx0X2NvbmR2YXI7CiAgIH0KLSAgaWYgKCFub3Rp
ZmljYXRpb24pIHsKLSAgICBub3RpZmljYXRpb24gPSAmZGVmYXVsdF9ub3RpZmljYXRpb247Ci0g
IH0KICAgYm9vbCBzdGF0ZSA9IGZhbHNlOwotICBzdGQ6OnRocmVhZCB0aHJlYWRfb25lKFRocmVh
ZE9uZSwgbXV0ZXgsIGNvbmR2YXIsIG5vdGlmaWNhdGlvbiwgJnN0YXRlKTsKLSAgc3RkOjp0aHJl
YWQgdGhyZWFkX3R3byhUaHJlYWRUd28sIG11dGV4LCBjb25kdmFyLCBub3RpZmljYXRpb24sICZz
dGF0ZSk7CisgIHN0ZDo6dGhyZWFkIHRocmVhZF9vbmUoVGhyZWFkT25lLCBtdXRleCwgY29uZHZh
ciwgJm5vdGlmaWNhdGlvbiwgJnN0YXRlKTsKKyAgc3RkOjp0aHJlYWQgdGhyZWFkX3R3byhUaHJl
YWRUd28sIG11dGV4LCBjb25kdmFyLCAmbm90aWZpY2F0aW9uLCAmc3RhdGUpOwogICB0aHJlYWRf
b25lLmpvaW4oKTsKICAgdGhyZWFkX3R3by5qb2luKCk7CiB9CkBAIC05NiwxMCArOTMsMTMgQEAg
dm9pZCBSdW5UZXN0cyhhYnNsOjpNdXRleCogbXV0ZXgsIGFic2w6OkNvbmRWYXIqIGNvbmR2YXIs
CiB2b2lkIFRlc3RMb2NhbHMoKSB7CiAgIGFic2w6Ok11dGV4IG11dGV4OwogICBhYnNsOjpDb25k
VmFyIGNvbmR2YXI7Ci0gIGFic2w6Ok5vdGlmaWNhdGlvbiBub3RpZmljYXRpb247Ci0gIFJ1blRl
c3RzKCZtdXRleCwgJmNvbmR2YXIsICZub3RpZmljYXRpb24pOworICBSdW5UZXN0cygmbXV0ZXgs
ICZjb25kdmFyKTsKIH0KIAorLy8gTm9ybWFsIGtDb25zdEluaXQgdXNhZ2UKK0FCU0xfQ09OU1Rf
SU5JVCBhYnNsOjpNdXRleCBjb25zdF9pbml0X211dGV4KGFic2w6OmtDb25zdEluaXQpOwordm9p
ZCBUZXN0Q29uc3RJbml0R2xvYmFsKCkgeyBSdW5UZXN0cygmY29uc3RfaW5pdF9tdXRleCwgbnVs
bHB0cik7IH0KKwogLy8gR2xvYmFsIHZhcmlhYmxlcyBkdXJpbmcgc3RhcnQgYW5kIHRlcm1pbmF0
aW9uCiAvLwogLy8gSW4gYSB0cmFuc2xhdGlvbiB1bml0LCBzdGF0aWMgc3RvcmFnZSBkdXJhdGlv
biB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIGluCkBAIC0xMjIsMTAgKzEyMiw1MyBAQCBjbGFz
cyBPbkRlc3RydWN0aW9uIHsKICAgRnVuY3Rpb24gZm5fOwogfTsKIAorLy8ga0NvbnN0SW5pdAor
Ly8gVGVzdCBlYXJseSB1c2FnZS4gIChEZWNsYXJhdGlvbiBjb21lcyBmaXJzdDsgZGVmaW5pdGlv
bnMgbXVzdCBhcHBlYXIgYWZ0ZXIKKy8vIHRoZSB0ZXN0IHJ1bm5lci4pCitleHRlcm4gYWJzbDo6
TXV0ZXggZWFybHlfY29uc3RfaW5pdF9tdXRleDsKKy8vIChOb3JtYWxseSBJJ2Qgd3JpdGUgdGhp
cyArW10sIHRvIG1ha2UgdGhlIGNhc3QtdG8tZnVuY3Rpb24tcG9pbnRlciBleHBsaWNpdCwKKy8v
IGJ1dCBpbiBzb21lIE1TVkMgc2V0dXBzIHdlIHN1cHBvcnQsIGxhbWJkYXMgcHJvdmlkZSBjb252
ZXJzaW9uIG9wZXJhdG9ycyB0bworLy8gZGlmZmVyZW50IGZsYXZvcnMgb2YgZnVuY3Rpb24gcG9p
bnRlcnMsIG1ha2luZyB0aGlzIHRyaWNrIGFtYmlndW91cy4pCitPbkNvbnN0cnVjdGlvbiB0ZXN0
X2Vhcmx5X2NvbnN0X2luaXQoW10geworICBSdW5UZXN0cygmZWFybHlfY29uc3RfaW5pdF9tdXRl
eCwgbnVsbHB0cik7Cit9KTsKKy8vIFRoaXMgZGVmaW5pdGlvbiBhcHBlYXJzIGJlZm9yZSB0ZXN0
X2Vhcmx5X2NvbnN0X2luaXQsIGJ1dCBpdCBzaG91bGQgYmUKKy8vIGluaXRpYWxpemVkIGZpcnN0
IChkdWUgdG8gY29uc3RhbnQgaW5pdGlhbGl6YXRpb24pLiAgVGVzdCB0aGF0IHRoZSBvYmplY3QK
Ky8vIGFjdHVhbGx5IHdvcmtzIHdoZW4gY29uc3RydWN0ZWQgdGhpcyB3YXkuCitBQlNMX0NPTlNU
X0lOSVQgYWJzbDo6TXV0ZXggZWFybHlfY29uc3RfaW5pdF9tdXRleChhYnNsOjprQ29uc3RJbml0
KTsKKworLy8gRnVydGhlcm1vcmUsIHRlc3QgdGhhdCB0aGUgY29uc3QtaW5pdCBjJ3RvciBkb2Vz
bid0IHN0b21wIG92ZXIgdGhlIHN0YXRlIG9mCisvLyBhIE11dGV4LiAgUmVhbGx5LCB0aGlzIGlz
IGEgdGVzdCB0aGF0IHRoZSBwbGF0Zm9ybSB1bmRlciB0ZXN0IGNvcnJlY3RseQorLy8gc3VwcG9y
dHMgQysrMTEgY29uc3RhbnQgaW5pdGlhbGl6YXRpb24uICAoVGhlIGNvbnN0YW50LWluaXRpYWxp
emF0aW9uCisvLyBjb25zdHJ1Y3RvcnMgb2YgZ2xvYmFscyAiaGFwcGVuIGF0IGxpbmsgdGltZSI7
IG1lbW9yeSBpcyBwcmUtaW5pdGlhbGl6ZWQsCisvLyBiZWZvcmUgdGhlIGNvbnN0cnVjdG9ycyBv
ZiBlaXRoZXIgZ3JhYl9sb2NrIG9yIGNoZWNrX3N0aWxsX2xvY2tlZCBhcmUgcnVuLikKK2V4dGVy
biBhYnNsOjpNdXRleCBjb25zdF9pbml0X3Nhbml0eV9tdXRleDsKK09uQ29uc3RydWN0aW9uIGdy
YWJfbG9jayhbXSgpIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7CisgIGNvbnN0X2lu
aXRfc2FuaXR5X211dGV4LkxvY2soKTsKK30pOworQUJTTF9DT05TVF9JTklUIGFic2w6Ok11dGV4
IGNvbnN0X2luaXRfc2FuaXR5X211dGV4KGFic2w6OmtDb25zdEluaXQpOworT25Db25zdHJ1Y3Rp
b24gY2hlY2tfc3RpbGxfbG9ja2VkKFtdKCkgQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lT
IHsKKyAgY29uc3RfaW5pdF9zYW5pdHlfbXV0ZXguQXNzZXJ0SGVsZCgpOworICBjb25zdF9pbml0
X3Nhbml0eV9tdXRleC5VbmxvY2soKTsKK30pOworCisvLyBUZXN0IHNodXRkb3duIHVzYWdlLiAg
KERlY2xhcmF0aW9ucyBjb21lIGZpcnN0OyBkZWZpbml0aW9ucyBtdXN0IGFwcGVhciBhZnRlcgor
Ly8gdGhlIHRlc3QgcnVubmVyLikKK2V4dGVybiBhYnNsOjpNdXRleCBsYXRlX2NvbnN0X2luaXRf
bXV0ZXg7CisvLyBPbkRlc3RydWN0aW9uIGlzIGJlaW5nIHVzZWQgaGVyZSBhcyBhIGdsb2JhbCB2
YXJpYWJsZSwgZXZlbiB0aG91Z2ggaXQgaGFzIGEKKy8vIG5vbi10cml2aWFsIGRlc3RydWN0b3Iu
ICBUaGlzIGlzIGFnYWluc3QgdGhlIHN0eWxlIGd1aWRlLiAgV2UncmUgdmlvbGF0aW5nCisvLyB0
aGF0IHJ1bGUgaGVyZSB0byBjaGVjayB0aGF0IHRoZSBleGNlcHRpb24gd2UgYWxsb3cgZm9yIGtD
b25zdEluaXQgaXMgc2FmZS4KKy8vIE5PTElOVE5FWFRMSU5FCitPbkRlc3RydWN0aW9uIHRlc3Rf
bGF0ZV9jb25zdF9pbml0KFtdIHsKKyAgUnVuVGVzdHMoJmxhdGVfY29uc3RfaW5pdF9tdXRleCwg
bnVsbHB0cik7Cit9KTsKK0FCU0xfQ09OU1RfSU5JVCBhYnNsOjpNdXRleCBsYXRlX2NvbnN0X2lu
aXRfbXV0ZXgoYWJzbDo6a0NvbnN0SW5pdCk7CisKIH0gIC8vIG5hbWVzcGFjZQogCiBpbnQgbWFp
bigpIHsKICAgVGVzdExvY2FscygpOworICBUZXN0Q29uc3RJbml0R2xvYmFsKCk7CiAgIC8vIEV4
cGxpY2l0bHkgY2FsbCBleGl0KDApIGhlcmUsIHRvIG1ha2UgaXQgY2xlYXIgdGhhdCB3ZSBpbnRl
bmQgZm9yIHRoZQogICAvLyBhYm92ZSBnbG9iYWwgb2JqZWN0IGRlc3RydWN0b3JzIHRvIHJ1bi4K
ICAgc3RkOjpleGl0KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmNjCmluZGV4IDlkNTlhNzlkOTJkOWY3
OTI4ZjNkZmUyYTczMDQzNGUxNTRhY2VjNDcuLmFjYWM3NDAxNjMyYzU1YTcwYTBjZDMyNTcwNTI0
N2U4ZjM5MDljODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0v
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAg
ICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTExOCw2ICsxMTgsMTAgQEAgQUJTTF9DT05TVF9JTklU
IGFic2w6OmJhc2VfaW50ZXJuYWw6OkF0b21pY0hvb2s8CiAKIH0gIC8vIG5hbWVzcGFjZQogCitz
dGF0aWMgaW5saW5lIGJvb2wgRXZhbENvbmRpdGlvbkFubm90YXRlZChjb25zdCBDb25kaXRpb24g
KmNvbmQsIE11dGV4ICptdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgbG9ja2luZywgYm9vbCB0cnlsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCByZWFkX2xvY2spOworCiB2b2lkIFJlZ2lzdGVyTXV0ZXhQ
cm9maWxlcih2b2lkICgqZm4pKGludDY0X3Qgd2FpdF90aW1lc3RhbXApKSB7CiAgIHN1Ym1pdF9w
cm9maWxlX2RhdGEuU3RvcmUoZm4pOwogfQpAQCAtMTUwLDcgKzE1NCw3IEBAIHN0YXRpYyBpbnQg
RGVsYXkoaW50MzJfdCBjLCBEZWxheU1vZGUgbW9kZSkgewogICBpZiAoYyA8IGxpbWl0KSB7CiAg
ICAgYysrOyAgICAgICAgICAgICAgIC8vIHNwaW4KICAgfSBlbHNlIHsKLSAgICBBQlNMX1RTQU5f
TVVURVhfUFJFX0RJVkVSVCgwLCAwKTsKKyAgICBBQlNMX1RTQU5fTVVURVhfUFJFX0RJVkVSVChu
dWxscHRyLCAwKTsKICAgICBpZiAoYyA9PSBsaW1pdCkgeyAgLy8geWllbGQgb25jZQogICAgICAg
QWJzbEludGVybmFsTXV0ZXhZaWVsZCgpOwogICAgICAgYysrOwpAQCAtMTU4LDcgKzE2Miw3IEBA
IHN0YXRpYyBpbnQgRGVsYXkoaW50MzJfdCBjLCBEZWxheU1vZGUgbW9kZSkgewogICAgICAgYWJz
bDo6U2xlZXBGb3IoYWJzbDo6TWljcm9zZWNvbmRzKDEwKSk7CiAgICAgICBjID0gMDsKICAgICB9
Ci0gICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfRElWRVJUKDAsIDApOworICAgIEFCU0xfVFNBTl9N
VVRFWF9QT1NUX0RJVkVSVChudWxscHRyLCAwKTsKICAgfQogICByZXR1cm4gKGMpOwogfQpAQCAt
MjAzLDggKzIwNyw4IEBAIHN0YXRpYyBhYnNsOjpiYXNlX2ludGVybmFsOjpTcGluTG9jayBkZWFk
bG9ja19ncmFwaF9tdSgKICAgICBhYnNsOjpiYXNlX2ludGVybmFsOjprTGlua2VySW5pdGlhbGl6
ZWQpOwogCiAvLyBncmFwaCB1c2VkIHRvIGRldGVjdCBkZWFkbG9ja3MuCi1zdGF0aWMgR3JhcGhD
eWNsZXMgKmRlYWRsb2NrX2dyYXBoIEdVQVJERURfQlkoZGVhZGxvY2tfZ3JhcGhfbXUpCi0gICAg
UFRfR1VBUkRFRF9CWShkZWFkbG9ja19ncmFwaF9tdSk7CitzdGF0aWMgR3JhcGhDeWNsZXMgKmRl
YWRsb2NrX2dyYXBoIEFCU0xfR1VBUkRFRF9CWShkZWFkbG9ja19ncmFwaF9tdSkKKyAgICBBQlNM
X1BUX0dVQVJERURfQlkoZGVhZGxvY2tfZ3JhcGhfbXUpOwogCiAvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gQW4g
ZXZlbnQgbWVjaGFuaXNtIGZvciBkZWJ1Z2dpbmcgbXV0ZXggdXNlLgpAQCAtMjMzLDE1ICsyMzcs
MTQgQEAgZW51bSB7ICAgICAgIC8vIE11dGV4IGFuZCBDb25kVmFyIGV2ZW50cyBwYXNzZWQgYXMg
ImV2IiB0byBQb3N0U3luY2hFdmVudAogICBTWU5DSF9FVl9TSUdOQUxBTEwsCiB9OwogCi1lbnVt
IHsgICAgICAgICAgICAgICAgIC8vIEV2ZW50IGZsYWdzCi0gIFNZTkNIX0ZfUiA9IDB4MDEsICAg
IC8vIHJlYWRlciBldmVudAotICBTWU5DSF9GX0xDSyA9IDB4MDIsICAvLyBQb3N0U3luY2hFdmVu
dCBjYWxsZWQgd2l0aCBtdXRleCBoZWxkCi0gIFNZTkNIX0ZfQUNRID0gMHgwNCwgIC8vIGV2ZW50
IGlzIGFuIGFjcXVpcmUKK2VudW0geyAgICAgICAgICAgICAgICAgICAgLy8gRXZlbnQgZmxhZ3MK
KyAgU1lOQ0hfRl9SID0gMHgwMSwgICAgICAgLy8gcmVhZGVyIGV2ZW50CisgIFNZTkNIX0ZfTENL
ID0gMHgwMiwgICAgIC8vIFBvc3RTeW5jaEV2ZW50IGNhbGxlZCB3aXRoIG11dGV4IGhlbGQKKyAg
U1lOQ0hfRl9UUlkgPSAweDA0LCAgICAgLy8gVHJ5TG9jayBvciBSZWFkZXJUcnlMb2NrCisgIFNZ
TkNIX0ZfVU5MT0NLID0gMHgwOCwgIC8vIFVubG9jayBvciBSZWFkZXJVbmxvY2sKIAogICBTWU5D
SF9GX0xDS19XID0gU1lOQ0hfRl9MQ0ssCiAgIFNZTkNIX0ZfTENLX1IgPSBTWU5DSF9GX0xDSyB8
IFNZTkNIX0ZfUiwKLSAgU1lOQ0hfRl9BQ1FfVyA9IFNZTkNIX0ZfQUNRLAotICBTWU5DSF9GX0FD
UV9SID0gU1lOQ0hfRl9BQ1EgfCBTWU5DSF9GX1IsCiB9OwogfSAgLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQogCkBAIC0yNTAsMjEgKzI1MywyMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKICAgaW50
IGZsYWdzOwogICBjb25zdCBjaGFyICptc2c7CiB9IGV2ZW50X3Byb3BlcnRpZXNbXSA9IHsKLSAg
eyBTWU5DSF9GX0xDS19XfFNZTkNIX0ZfQUNRX1csICJUcnlMb2NrIHN1Y2NlZWRlZCAiIH0sCi0g
IHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJ5TG9jayBmYWlsZWQgIiB9LAotICB7
IFNZTkNIX0ZfTENLX1J8U1lOQ0hfRl9BQ1FfUiwgIlJlYWRlclRyeUxvY2sgc3VjY2VlZGVkICIg
fSwKLSAgeyAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWFkZXJUcnlMb2NrIGZhaWxl
ZCAiIH0sCi0gIHsgICAgICAgICAgICAgICBTWU5DSF9GX0FDUV9XLCAiTG9jayBibG9ja2luZyAi
IH0sCi0gIHsgU1lOQ0hfRl9MQ0tfVywgICAgICAgICAgICAgICAiTG9jayByZXR1cm5pbmcgIiB9
LAotICB7ICAgICAgICAgICAgICAgU1lOQ0hfRl9BQ1FfUiwgIlJlYWRlckxvY2sgYmxvY2tpbmcg
IiB9LAotICB7IFNZTkNIX0ZfTENLX1IsICAgICAgICAgICAgICAgIlJlYWRlckxvY2sgcmV0dXJu
aW5nICIgfSwKLSAgeyBTWU5DSF9GX0xDS19XLCAgICAgICAgICAgICAgICJVbmxvY2sgIiB9LAot
ICB7IFNZTkNIX0ZfTENLX1IsICAgICAgICAgICAgICAgIlJlYWRlclVubG9jayAiIH0sCi0gIHsg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2FpdCBvbiAiIH0sCi0gIHsgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiV2FpdCB1bmJsb2NrZWQgIiB9LAotICB7IDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlNpZ25hbCBvbiAiIH0sCi0gIHsgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiU2lnbmFsQWxsIG9uICIgfSwKKyAgICB7U1lOQ0hfRl9MQ0tfVyB8IFNZTkNI
X0ZfVFJZLCAiVHJ5TG9jayBzdWNjZWVkZWQgIn0sCisgICAgezAsICJUcnlMb2NrIGZhaWxlZCAi
fSwKKyAgICB7U1lOQ0hfRl9MQ0tfUiB8IFNZTkNIX0ZfVFJZLCAiUmVhZGVyVHJ5TG9jayBzdWNj
ZWVkZWQgIn0sCisgICAgezAsICJSZWFkZXJUcnlMb2NrIGZhaWxlZCAifSwKKyAgICB7MCwgIkxv
Y2sgYmxvY2tpbmcgIn0sCisgICAge1NZTkNIX0ZfTENLX1csICJMb2NrIHJldHVybmluZyAifSwK
KyAgICB7MCwgIlJlYWRlckxvY2sgYmxvY2tpbmcgIn0sCisgICAge1NZTkNIX0ZfTENLX1IsICJS
ZWFkZXJMb2NrIHJldHVybmluZyAifSwKKyAgICB7U1lOQ0hfRl9MQ0tfVyB8IFNZTkNIX0ZfVU5M
T0NLLCAiVW5sb2NrICJ9LAorICAgIHtTWU5DSF9GX0xDS19SIHwgU1lOQ0hfRl9VTkxPQ0ssICJS
ZWFkZXJVbmxvY2sgIn0sCisgICAgezAsICJXYWl0IG9uICJ9LAorICAgIHswLCAiV2FpdCB1bmJs
b2NrZWQgIn0sCisgICAgezAsICJTaWduYWwgb24gIn0sCisgICAgezAsICJTaWduYWxBbGwgb24g
In0sCiB9OworCiBzdGF0aWMgYWJzbDo6YmFzZV9pbnRlcm5hbDo6U3BpbkxvY2sgc3luY2hfZXZl
bnRfbXUoCiAgICAgYWJzbDo6YmFzZV9pbnRlcm5hbDo6a0xpbmtlckluaXRpYWxpemVkKTsKIC8v
IHByb3RlY3RzIHN5bmNoX2V2ZW50CkBAIC0yNzUsMTAgKzI3OSwxMCBAQCBzdGF0aWMgY29uc3Qg
dWludDMyX3Qga05TeW5jaEV2ZW50ID0gMTAzMTsKIAogc3RhdGljIHN0cnVjdCBTeW5jaEV2ZW50
IHsgICAgIC8vIHRoaXMgaXMgYSB0cml2aWFsIGhhc2ggdGFibGUgZm9yIHRoZSBldmVudHMKICAg
Ly8gc3RydWN0IGlzIGZyZWVkIHdoZW4gcmVmY291bnQgcmVhY2hlcyAwCi0gIGludCByZWZjb3Vu
dCBHVUFSREVEX0JZKHN5bmNoX2V2ZW50X211KTsKKyAgaW50IHJlZmNvdW50IEFCU0xfR1VBUkRF
RF9CWShzeW5jaF9ldmVudF9tdSk7CiAKICAgLy8gYnVja2V0cyBoYXZlIGxpbmVhciwgMC10ZXJt
aW5hdGVkICBjaGFpbnMKLSAgU3luY2hFdmVudCAqbmV4dCBHVUFSREVEX0JZKHN5bmNoX2V2ZW50
X211KTsKKyAgU3luY2hFdmVudCAqbmV4dCBBQlNMX0dVQVJERURfQlkoc3luY2hfZXZlbnRfbXUp
OwogCiAgIC8vIENvbnN0YW50IGFmdGVyIGluaXRpYWxpemF0aW9uCiAgIHVpbnRwdHJfdCBtYXNr
ZWRfYWRkcjsgIC8vIG9iamVjdCBhdCB0aGlzIGFkZHJlc3MgaXMgY2FsbGVkICJuYW1lIgpAQCAt
MjkyLDcgKzI5Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgU3luY2hFdmVudCB7ICAgICAvLyB0aGlzIGlz
IGEgdHJpdmlhbCBoYXNoIHRhYmxlIGZvciB0aGUgZXZlbnRzCiAKICAgLy8gQ29uc3RhbnQgYWZ0
ZXIgaW5pdGlhbGl6YXRpb24KICAgY2hhciBuYW1lWzFdOyAgICAgICAgIC8vIGFjdHVhbGx5IGxv
bmdlci0tLW51bGwtdGVybWluYXRlZCBzdGQ6OnN0cmluZwotfSAqc3luY2hfZXZlbnRba05TeW5j
aEV2ZW50XSBHVUFSREVEX0JZKHN5bmNoX2V2ZW50X211KTsKK30gKnN5bmNoX2V2ZW50W2tOU3lu
Y2hFdmVudF0gQUJTTF9HVUFSREVEX0JZKHN5bmNoX2V2ZW50X211KTsKIAogLy8gRW5zdXJlIHRo
YXQgdGhlIG9iamVjdCBhdCAiYWRkciIgaGFzIGEgU3luY2hFdmVudCBzdHJ1Y3QgYXNzb2NpYXRl
ZCB3aXRoIGl0LAogLy8gc2V0ICJiaXRzIiBpbiB0aGUgd29yZCB0aGVyZSAod2FpdGluZyB1bnRp
bCBsb2NrYml0IGlzIGNsZWFyIGJlZm9yZSBkb2luZwpAQCAtNDE0LDkgKzQxOCwyNiBAQCBzdGF0
aWMgdm9pZCBQb3N0U3luY2hFdmVudCh2b2lkICpvYmosIGludCBldikgewogICAgIEFCU0xfUkFX
X0xPRyhJTkZPLCAiJXMlcCAlcyAlcyIsIGV2ZW50X3Byb3BlcnRpZXNbZXZdLm1zZywgb2JqLAog
ICAgICAgICAgICAgICAgICAoZSA9PSBudWxscHRyID8gIiIgOiBlLT5uYW1lKSwgYnVmZmVyKTsK
ICAgfQotICBpZiAoKGV2ZW50X3Byb3BlcnRpZXNbZXZdLmZsYWdzICYgU1lOQ0hfRl9MQ0spICE9
IDAgJiYgZSAhPSBudWxscHRyICYmCi0gICAgICBlLT5pbnZhcmlhbnQgIT0gbnVsbHB0cikgewot
ICAgICgqZS0+aW52YXJpYW50KShlLT5hcmcpOworICBjb25zdCBpbnQgZmxhZ3MgPSBldmVudF9w
cm9wZXJ0aWVzW2V2XS5mbGFnczsKKyAgaWYgKChmbGFncyAmIFNZTkNIX0ZfTENLKSAhPSAwICYm
IGUgIT0gbnVsbHB0ciAmJiBlLT5pbnZhcmlhbnQgIT0gbnVsbHB0cikgeworICAgIC8vIENhbGxp
bmcgdGhlIGludmFyaWFudCBhcyBpcyBjYXVzZXMgcHJvYmxlbXMgdW5kZXIgVGhyZWFkU2FuaXRp
emVyLgorICAgIC8vIFdlIGFyZSBjdXJyZW50bHkgaW5zaWRlIG9mIE11dGV4IExvY2svVW5sb2Nr
IGFuZCBhcmUgaWdub3JpbmcgYWxsCisgICAgLy8gbWVtb3J5IGFjY2Vzc2VzIGFuZCBzeW5jaHJv
bml6YXRpb24uIElmIHRoZSBpbnZhcmlhbnQgdHJhbnNpdGl2ZWx5CisgICAgLy8gc3luY2hyb25p
emVzIHNvbWV0aGluZyBlbHNlIGFuZCB3ZSBpZ25vcmUgdGhlIHN5bmNocm9uaXphdGlvbiwgd2Ug
d2lsbAorICAgIC8vIGdldCBmYWxzZSBwb3NpdGl2ZSByYWNlIHJlcG9ydHMgbGF0ZXIuCisgICAg
Ly8gUmV1c2UgRXZhbENvbmRpdGlvbkFubm90YXRlZCB0byBwcm9wZXJseSBjYWxsIGludG8gdXNl
ciBjb2RlLgorICAgIHN0cnVjdCBsb2NhbCB7CisgICAgICBzdGF0aWMgYm9vbCBwcmVkKFN5bmNo
RXZlbnQgKmV2KSB7CisgICAgICAgICgqZXYtPmludmFyaWFudCkoZXYtPmFyZyk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9OworICAgIENvbmRpdGlvbiBjb25kKCZsb2Nh
bDo6cHJlZCwgZSk7CisgICAgTXV0ZXggKm11ID0gc3RhdGljX2Nhc3Q8TXV0ZXggKj4ob2JqKTsK
KyAgICBjb25zdCBib29sIGxvY2tpbmcgPSAoZmxhZ3MgJiBTWU5DSF9GX1VOTE9DSykgPT0gMDsK
KyAgICBjb25zdCBib29sIHRyeWxvY2sgPSAoZmxhZ3MgJiBTWU5DSF9GX1RSWSkgIT0gMDsKKyAg
ICBjb25zdCBib29sIHJlYWRfbG9jayA9IChmbGFncyAmIFNZTkNIX0ZfUikgIT0gMDsKKyAgICBF
dmFsQ29uZGl0aW9uQW5ub3RhdGVkKCZjb25kLCBtdSwgbG9ja2luZywgdHJ5bG9jaywgcmVhZF9s
b2NrKTsKICAgfQogICBVbnJlZlN5bmNoRXZlbnQoZSk7CiB9CkBAIC04ODAsMTEgKzkwMSwxNSBA
QCBzdGF0aWMgUGVyVGhyZWFkU3luY2ggKkVucXVldWUoUGVyVGhyZWFkU3luY2ggKmhlYWQsCiAg
ICAgICAvLyBiYXNlX2ludGVybmFsOjpDeWNsZUNsb2NrOjpOb3coKSBpcyAwLjUlLgogICAgICAg
aW50IHBvbGljeTsKICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKLSAgICAgIHB0aHJl
YWRfZ2V0c2NoZWRwYXJhbShwdGhyZWFkX3NlbGYoKSwgJnBvbGljeSwgJnBhcmFtKTsKLSAgICAg
IHMtPnByaW9yaXR5ID0gcGFyYW0uc2NoZWRfcHJpb3JpdHk7Ci0gICAgICBzLT5uZXh0X3ByaW9y
aXR5X3JlYWRfY3ljbGVzID0KLSAgICAgICAgICBub3dfY3ljbGVzICsKLSAgICAgICAgICBzdGF0
aWNfY2FzdDxpbnQ2NF90PihiYXNlX2ludGVybmFsOjpDeWNsZUNsb2NrOjpGcmVxdWVuY3koKSk7
CisgICAgICBjb25zdCBpbnQgZXJyID0gcHRocmVhZF9nZXRzY2hlZHBhcmFtKHB0aHJlYWRfc2Vs
ZigpLCAmcG9saWN5LCAmcGFyYW0pOworICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgIEFC
U0xfUkFXX0xPRyhFUlJPUiwgInB0aHJlYWRfZ2V0c2NoZWRwYXJhbSBmYWlsZWQ6ICVkIiwgZXJy
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHMtPnByaW9yaXR5ID0gcGFyYW0uc2NoZWRfcHJp
b3JpdHk7CisgICAgICAgIHMtPm5leHRfcHJpb3JpdHlfcmVhZF9jeWNsZXMgPQorICAgICAgICAg
ICAgbm93X2N5Y2xlcyArCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ2NF90PihiYXNlX2lu
dGVybmFsOjpDeWNsZUNsb2NrOjpGcmVxdWVuY3koKSk7CisgICAgICB9CiAgICAgfQogICAgIGlm
IChzLT5wcmlvcml0eSA+IGhlYWQtPnByaW9yaXR5KSB7ICAvLyBzJ3MgcHJpb3JpdHkgaXMgYWJv
dmUgaGVhZCdzCiAgICAgICAvLyB0cnkgdG8gcHV0IHMgaW4gcHJpb3JpdHktZmlmbyBvcmRlciwg
b3IgZmFpbGluZyB0aGF0IGF0IHRoZSBmcm9udC4KQEAgLTEwNzksNyArMTEwNCw3IEBAIHZvaWQg
TXV0ZXg6OlRyeVJlbW92ZShQZXJUaHJlYWRTeW5jaCAqcykgewogLy8gaWYgdGhlIHdhaXQgZXh0
ZW5kcyBwYXN0IHRoZSBhYnNvbHV0ZSB0aW1lIHNwZWNpZmllZCwgZXZlbiBpZiAicyIgaXMgc3Rp
bGwKIC8vIG9uIHRoZSBtdXRleCBxdWV1ZS4gIEluIHRoaXMgY2FzZSwgcmVtb3ZlICJzIiBmcm9t
IHRoZSBxdWV1ZSBhbmQgcmV0dXJuCiAvLyB0cnVlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLgot
dm9pZCBNdXRleDo6QmxvY2soUGVyVGhyZWFkU3luY2ggKnMpIHsKK0FCU0xfWFJBWV9MT0dfQVJH
UygxKSB2b2lkIE11dGV4OjpCbG9jayhQZXJUaHJlYWRTeW5jaCAqcykgewogICB3aGlsZSAocy0+
c3RhdGUubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSA9PSBQZXJUaHJlYWRTeW5jaDo6
a1F1ZXVlZCkgewogICAgIGlmICghRGVjcmVtZW50U3luY2hTZW0odGhpcywgcywgcy0+d2FpdHAt
PnRpbWVvdXQpKSB7CiAgICAgICAvLyBBZnRlciBhIHRpbWVvdXQsIHdlIGdvIGludG8gYSBzcGlu
IGxvb3AgdW50aWwgd2UgcmVtb3ZlIG91cnNlbHZlcwpAQCAtMTExOCw3ICsxMTQzLDcgQEAgUGVy
VGhyZWFkU3luY2ggKk11dGV4OjpXYWtldXAoUGVyVGhyZWFkU3luY2ggKncpIHsKIH0KIAogc3Rh
dGljIEdyYXBoSWQgR2V0R3JhcGhJZExvY2tlZChNdXRleCAqbXUpCi0gICAgRVhDTFVTSVZFX0xP
Q0tTX1JFUVVJUkVEKGRlYWRsb2NrX2dyYXBoX211KSB7CisgICAgQUJTTF9FWENMVVNJVkVfTE9D
S1NfUkVRVUlSRUQoZGVhZGxvY2tfZ3JhcGhfbXUpIHsKICAgaWYgKCFkZWFkbG9ja19ncmFwaCkg
eyAgLy8gKHJlKWNyZWF0ZSB0aGUgZGVhZGxvY2sgZ3JhcGguCiAgICAgZGVhZGxvY2tfZ3JhcGgg
PQogICAgICAgICBuZXcgKGJhc2VfaW50ZXJuYWw6Okxvd0xldmVsQWxsb2M6OkFsbG9jKHNpemVv
ZigqZGVhZGxvY2tfZ3JhcGgpKSkKQEAgLTExMjcsNyArMTE1Miw3IEBAIHN0YXRpYyBHcmFwaElk
IEdldEdyYXBoSWRMb2NrZWQoTXV0ZXggKm11KQogICByZXR1cm4gZGVhZGxvY2tfZ3JhcGgtPkdl
dElkKG11KTsKIH0KIAotc3RhdGljIEdyYXBoSWQgR2V0R3JhcGhJZChNdXRleCAqbXUpIExPQ0tT
X0VYQ0xVREVEKGRlYWRsb2NrX2dyYXBoX211KSB7CitzdGF0aWMgR3JhcGhJZCBHZXRHcmFwaElk
KE11dGV4ICptdSkgQUJTTF9MT0NLU19FWENMVURFRChkZWFkbG9ja19ncmFwaF9tdSkgewogICBk
ZWFkbG9ja19ncmFwaF9tdS5Mb2NrKCk7CiAgIEdyYXBoSWQgaWQgPSBHZXRHcmFwaElkTG9ja2Vk
KG11KTsKICAgZGVhZGxvY2tfZ3JhcGhfbXUuVW5sb2NrKCk7CkBAIC0xNTUyLDcgKzE1NzcsNyBA
QCBib29sIE11dGV4OjpBd2FpdENvbW1vbihjb25zdCBDb25kaXRpb24gJmNvbmQsIEtlcm5lbFRp
bWVvdXQgdCkgewogICBBQlNMX1RTQU5fTVVURVhfUFJFX0xPQ0sodGhpcywgVHNhbkZsYWdzKGhv
dykpOwogICB0aGlzLT5Mb2NrU2xvd0xvb3AoJndhaXRwLCBmbGFncyk7CiAgIGJvb2wgcmVzID0g
d2FpdHAuY29uZCAhPSBudWxscHRyIHx8ICAvLyA9PiBjb25kIGtub3duIHRydWUgZnJvbSBMb2Nr
U2xvd0xvb3AKLSAgICAgICAgICAgICBjb25kLkV2YWwoKTsKKyAgICAgICAgICAgICBFdmFsQ29u
ZGl0aW9uQW5ub3RhdGVkKCZjb25kLCB0aGlzLCB0cnVlLCBmYWxzZSwgaG93ID09IGtTaGFyZWQp
OwogICBBQlNMX1RTQU5fTVVURVhfUE9TVF9MT0NLKHRoaXMsIFRzYW5GbGFncyhob3cpLCAwKTsK
ICAgcmV0dXJuIHJlczsKIH0KQEAgLTE3MzAsMTIgKzE3NTUsMTcgQEAgdm9pZCBNdXRleDo6TG9j
a1Nsb3coTXVIb3cgaG93LCBjb25zdCBDb25kaXRpb24gKmNvbmQsIGludCBmbGFncykgewogCiAv
LyBDb21wdXRlIGNvbmQtPkV2YWwoKSBhbmQgdGVsbCByYWNlIGRldGVjdG9ycyB0aGF0IHdlIGRv
IGl0IHVuZGVyIG11dGV4IG11Lgogc3RhdGljIGlubGluZSBib29sIEV2YWxDb25kaXRpb25Bbm5v
dGF0ZWQoY29uc3QgQ29uZGl0aW9uICpjb25kLCBNdXRleCAqbXUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvY2tpbmcsIE11dGV4OjpNdUhvdyBob3cp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbG9ja2lu
ZywgYm9vbCB0cnlsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCByZWFkX2xvY2spIHsKICAgLy8gRGVsaWNhdGUgYW5ub3RhdGlvbiBkYW5jZS4KICAg
Ly8gV2UgYXJlIGN1cnJlbnRseSBpbnNpZGUgb2YgcmVhZC93cml0ZSBsb2NrL3VubG9jayBvcGVy
YXRpb24uCiAgIC8vIEFsbCBtZW1vcnkgYWNjZXNzZXMgYXJlIGlnbm9yZWQgaW5zaWRlIG9mIG11
dGV4IG9wZXJhdGlvbnMgKyBmb3IgdW5sb2NrCiAgIC8vIG9wZXJhdGlvbiB0c2FuIGNvbnNpZGVy
cyB0aGF0IHdlJ3ZlIGFscmVhZHkgcmVsZWFzZWQgdGhlIG11dGV4LgogICBib29sIHJlcyA9IGZh
bHNlOworI2lmZGVmIFRIUkVBRF9TQU5JVElaRVIKKyAgY29uc3QgaW50IGZsYWdzID0gcmVhZF9s
b2NrID8gX190c2FuX211dGV4X3JlYWRfbG9jayA6IDA7CisgIGNvbnN0IGludCB0cnlmbGFncyA9
IGZsYWdzIHwgKHRyeWxvY2sgPyBfX3RzYW5fbXV0ZXhfdHJ5X2xvY2sgOiAwKTsKKyNlbmRpZgog
ICBpZiAobG9ja2luZykgewogICAgIC8vIEZvciBsb2NrIHdlIHByZXRlbmQgdGhhdCB3ZSBoYXZl
IGZpbmlzaGVkIHRoZSBvcGVyYXRpb24sCiAgICAgLy8gZXZhbHVhdGUgdGhlIHByZWRpY2F0ZSwg
dGhlbiB1bmxvY2sgdGhlIG11dGV4IGFuZCBzdGFydCBsb2NraW5nIGl0IGFnYWluCkBAIC0xNzQz
LDI0ICsxNzczLDI2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBFdmFsQ29uZGl0aW9uQW5ub3RhdGVk
KGNvbnN0IENvbmRpdGlvbiAqY29uZCwgTXV0ZXggKm11LAogICAgIC8vIE5vdGU6IHdlIGNhbid0
IHNpbXBseSBkbyBQT1NUX0xPQ0ssIEV2YWwsIFBSRV9MT0NLLCBiZWNhdXNlIHRoZW4gdHNhbgog
ICAgIC8vIHdpbGwgdGhpbmsgdGhlIGxvY2sgYWNxdWlzaXRpb24gaXMgcmVjdXJzaXZlIHdoaWNo
IHdpbGwgdHJpZ2dlcgogICAgIC8vIGRlYWRsb2NrIGRldGVjdG9yLgotICAgIEFCU0xfVFNBTl9N
VVRFWF9QT1NUX0xPQ0sobXUsIFRzYW5GbGFncyhob3cpLCAwKTsKKyAgICBBQlNMX1RTQU5fTVVU
RVhfUE9TVF9MT0NLKG11LCB0cnlmbGFncywgMCk7CiAgICAgcmVzID0gY29uZC0+RXZhbCgpOwot
ICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfVU5MT0NLKG11LCBUc2FuRmxhZ3MoaG93KSk7Ci0gICAg
QUJTTF9UU0FOX01VVEVYX1BPU1RfVU5MT0NLKG11LCBUc2FuRmxhZ3MoaG93KSk7Ci0gICAgQUJT
TF9UU0FOX01VVEVYX1BSRV9MT0NLKG11LCBUc2FuRmxhZ3MoaG93KSk7CisgICAgLy8gVGhlcmUg
aXMgbm8gInRyeSIgdmVyc2lvbiBvZiBVbmxvY2ssIHNvIHVzZSBmbGFncyBpbnN0ZWFkIG9mIHRy
eWZsYWdzLgorICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfVU5MT0NLKG11LCBmbGFncyk7CisgICAg
QUJTTF9UU0FOX01VVEVYX1BPU1RfVU5MT0NLKG11LCBmbGFncyk7CisgICAgQUJTTF9UU0FOX01V
VEVYX1BSRV9MT0NLKG11LCB0cnlmbGFncyk7CiAgIH0gZWxzZSB7CiAgICAgLy8gU2ltaWxhcmx5
LCBmb3IgdW5sb2NrIHdlIHByZXRlbmQgdGhhdCB3ZSBoYXZlIHVubG9ja2VkIHRoZSBtdXRleCwK
ICAgICAvLyBsb2NrIHRoZSBtdXRleCwgZXZhbHVhdGUgdGhlIHByZWRpY2F0ZSwgYW5kIHN0YXJ0
IHVubG9ja2luZyBpdCBhZ2FpbgogICAgIC8vIHRvIG1hdGNoIHRoZSBhbm5vdGF0aW9uIGF0IHRo
ZSBlbmQgb2Ygb3V0ZXIgdW5sb2NrIG9wZXJhdGlvbi4KLSAgICBBQlNMX1RTQU5fTVVURVhfUE9T
VF9VTkxPQ0sobXUsIFRzYW5GbGFncyhob3cpKTsKLSAgICBBQlNMX1RTQU5fTVVURVhfUFJFX0xP
Q0sobXUsIFRzYW5GbGFncyhob3cpKTsKLSAgICBBQlNMX1RTQU5fTVVURVhfUE9TVF9MT0NLKG11
LCBUc2FuRmxhZ3MoaG93KSwgMCk7CisgICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfVU5MT0NLKG11
LCBmbGFncyk7CisgICAgQUJTTF9UU0FOX01VVEVYX1BSRV9MT0NLKG11LCBmbGFncyk7CisgICAg
QUJTTF9UU0FOX01VVEVYX1BPU1RfTE9DSyhtdSwgZmxhZ3MsIDApOwogICAgIHJlcyA9IGNvbmQt
PkV2YWwoKTsKLSAgICBBQlNMX1RTQU5fTVVURVhfUFJFX1VOTE9DSyhtdSwgVHNhbkZsYWdzKGhv
dykpOworICAgIEFCU0xfVFNBTl9NVVRFWF9QUkVfVU5MT0NLKG11LCBmbGFncyk7CiAgIH0KICAg
Ly8gUHJldmVudCB1bnVzZWQgcGFyYW0gd2FybmluZ3MgaW4gbm9uLVRTQU4gYnVpbGRzLgogICBz
dGF0aWNfY2FzdDx2b2lkPihtdSk7Ci0gIHN0YXRpY19jYXN0PHZvaWQ+KGhvdyk7CisgIHN0YXRp
Y19jYXN0PHZvaWQ+KHRyeWxvY2spOworICBzdGF0aWNfY2FzdDx2b2lkPihyZWFkX2xvY2spOwog
ICByZXR1cm4gcmVzOwogfQogCkBAIC0xODA2LDcgKzE4MzgsOCBAQCBib29sIE11dGV4OjpMb2Nr
U2xvd1dpdGhEZWFkbGluZShNdUhvdyBob3csIGNvbnN0IENvbmRpdGlvbiAqY29uZCwKICAgICAg
ICAgICB2LCAoaG93LT5mYXN0X29yIHwgKHYgJiB6YXBfZGVzaWdfd2FrZXJbZmxhZ3MgJiBrTXVI
YXNCbG9ja2VkXSkpICsKICAgICAgICAgICAgICAgICAgaG93LT5mYXN0X2FkZCwKICAgICAgICAg
ICBzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKSkg
ewotICAgIGlmIChjb25kID09IG51bGxwdHIgfHwgRXZhbENvbmRpdGlvbkFubm90YXRlZChjb25k
LCB0aGlzLCB0cnVlLCBob3cpKSB7CisgICAgaWYgKGNvbmQgPT0gbnVsbHB0ciB8fAorICAgICAg
ICBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKGNvbmQsIHRoaXMsIHRydWUsIGZhbHNlLCBob3cgPT0g
a1NoYXJlZCkpIHsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICB1bmxvY2sgPSB0cnVl
OwpAQCAtMTgyNCw3ICsxODU3LDggQEAgYm9vbCBNdXRleDo6TG9ja1Nsb3dXaXRoRGVhZGxpbmUo
TXVIb3cgaG93LCBjb25zdCBDb25kaXRpb24gKmNvbmQsCiAgIH0KICAgdGhpcy0+TG9ja1Nsb3dM
b29wKCZ3YWl0cCwgZmxhZ3MpOwogICByZXR1cm4gd2FpdHAuY29uZCAhPSBudWxscHRyIHx8ICAv
LyA9PiBjb25kIGtub3duIHRydWUgZnJvbSBMb2NrU2xvd0xvb3AKLSAgICAgICAgIGNvbmQgPT0g
bnVsbHB0ciB8fCBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKGNvbmQsIHRoaXMsIHRydWUsIGhvdyk7
CisgICAgICAgICBjb25kID09IG51bGxwdHIgfHwKKyAgICAgICAgIEV2YWxDb25kaXRpb25Bbm5v
dGF0ZWQoY29uZCwgdGhpcywgdHJ1ZSwgZmFsc2UsIGhvdyA9PSBrU2hhcmVkKTsKIH0KIAogLy8g
UkFXX0NIRUNLX0ZNVCgpIHRha2VzIGEgY29uZGl0aW9uLCBhIHByaW50Zi1zdHlsZSBmb3JtYXQg
c3RyaW5nLCBhbmQKQEAgLTE4NDEsNyArMTg3NSw3IEBAIHN0YXRpYyB2b2lkIENoZWNrRm9yTXV0
ZXhDb3JydXB0aW9uKGludHB0cl90IHYsIGNvbnN0IGNoYXIqIGxhYmVsKSB7CiAgIC8vIFRlc3Qg
Zm9yIGVpdGhlciBvZiB0d28gc2l0dWF0aW9ucyB0aGF0IHNob3VsZCBub3Qgb2NjdXIgaW4gdjoK
ICAgLy8gICBrTXVXcml0ZXIgYW5kIGtNdVJlYWRlcgogICAvLyAgIGtNdVdyV2FpdCBhbmQgIWtN
dVdhaXQKLSAgY29uc3QgaW50cHRyX3QgdyA9IHYgXiBrTXVXYWl0OworICBjb25zdCB1aW50cHRy
X3QgdyA9IHYgXiBrTXVXYWl0OwogICAvLyBCeSBmbGlwcGluZyB0aGF0IGJpdCwgd2UgY2FuIG5v
dyB0ZXN0IGZvcjoKICAgLy8gICBrTXVXcml0ZXIgYW5kIGtNdVJlYWRlciBpbiB3CiAgIC8vICAg
a011V3JXYWl0IGFuZCBrTXVXYWl0IGluIHcKQEAgLTE4ODAsNyArMTkxNCw4IEBAIHZvaWQgTXV0
ZXg6OkxvY2tTbG93TG9vcChTeW5jaFdhaXRQYXJhbXMgKndhaXRwLCBpbnQgZmxhZ3MpIHsKICAg
ICAgICAgICAgICAgICAgICAgIHdhaXRwLT5ob3ctPmZhc3RfYWRkLAogICAgICAgICAgICAgICBz
dGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKSkgewog
ICAgICAgICBpZiAod2FpdHAtPmNvbmQgPT0gbnVsbHB0ciB8fAotICAgICAgICAgICAgRXZhbENv
bmRpdGlvbkFubm90YXRlZCh3YWl0cC0+Y29uZCwgdGhpcywgdHJ1ZSwgd2FpdHAtPmhvdykpIHsK
KyAgICAgICAgICAgIEV2YWxDb25kaXRpb25Bbm5vdGF0ZWQod2FpdHAtPmNvbmQsIHRoaXMsIHRy
dWUsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0cC0+aG93
ID09IGtTaGFyZWQpKSB7CiAgICAgICAgICAgYnJlYWs7ICAvLyB3ZSB0aW1lZCBvdXQsIG9yIGNv
bmRpdGlvbiB0cnVlLCBzbyByZXR1cm4KICAgICAgICAgfQogICAgICAgICB0aGlzLT5VbmxvY2tT
bG93KHdhaXRwKTsgIC8vIGdvdCBsb2NrIGJ1dCBjb25kaXRpb24gZmFsc2UKQEAgLTE5MjMsNyAr
MTk1OCw4IEBAIHZvaWQgTXV0ZXg6OkxvY2tTbG93TG9vcChTeW5jaFdhaXRQYXJhbXMgKndhaXRw
LCBpbnQgZmxhZ3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpKTsKICAgICAg
ICAgICBpZiAod2FpdHAtPmNvbmQgPT0gbnVsbHB0ciB8fAotICAgICAgICAgICAgICBFdmFsQ29u
ZGl0aW9uQW5ub3RhdGVkKHdhaXRwLT5jb25kLCB0aGlzLCB0cnVlLCB3YWl0cC0+aG93KSkgewor
ICAgICAgICAgICAgICBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKHdhaXRwLT5jb25kLCB0aGlzLCB0
cnVlLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0cC0+
aG93ID09IGtTaGFyZWQpKSB7CiAgICAgICAgICAgICBicmVhazsgIC8vIHdlIHRpbWVkIG91dCwg
b3IgY29uZGl0aW9uIHRydWUsIHNvIHJldHVybgogICAgICAgICAgIH0KICAgICAgICAgICB0aGlz
LT5VbmxvY2tTbG93KHdhaXRwKTsgICAgICAgICAgIC8vIGdvdCBsb2NrIGJ1dCBjb25kaXRpb24g
ZmFsc2UKQEAgLTI1NTEsNyArMjU4Nyw3IEBAIHZvaWQgQ29uZFZhcjo6V2FrZXVwKFBlclRocmVh
ZFN5bmNoICp3KSB7CiB9CiAKIHZvaWQgQ29uZFZhcjo6U2lnbmFsKCkgewotICBBQlNMX1RTQU5f
TVVURVhfUFJFX1NJR05BTCgwLCAwKTsKKyAgQUJTTF9UU0FOX01VVEVYX1BSRV9TSUdOQUwobnVs
bHB0ciwgMCk7CiAgIGludHB0cl90IHY7CiAgIGludCBjID0gMDsKICAgZm9yICh2ID0gY3ZfLmxv
YWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7IHYgIT0gMDsKQEAgLTI1ODAsMTcgKzI2MTYs
MTcgQEAgdm9pZCBDb25kVmFyOjpTaWduYWwoKSB7CiAgICAgICBpZiAoKHYgJiBrQ3ZFdmVudCkg
IT0gMCkgewogICAgICAgICBQb3N0U3luY2hFdmVudCh0aGlzLCBTWU5DSF9FVl9TSUdOQUwpOwog
ICAgICAgfQotICAgICAgQUJTTF9UU0FOX01VVEVYX1BPU1RfU0lHTkFMKDAsIDApOworICAgICAg
QUJTTF9UU0FOX01VVEVYX1BPU1RfU0lHTkFMKG51bGxwdHIsIDApOwogICAgICAgcmV0dXJuOwog
ICAgIH0gZWxzZSB7CiAgICAgICBjID0gRGVsYXkoYywgR0VOVExFKTsKICAgICB9CiAgIH0KLSAg
QUJTTF9UU0FOX01VVEVYX1BPU1RfU0lHTkFMKDAsIDApOworICBBQlNMX1RTQU5fTVVURVhfUE9T
VF9TSUdOQUwobnVsbHB0ciwgMCk7CiB9CiAKIHZvaWQgQ29uZFZhcjo6U2lnbmFsQWxsICgpIHsK
LSAgQUJTTF9UU0FOX01VVEVYX1BSRV9TSUdOQUwoMCwgMCk7CisgIEFCU0xfVFNBTl9NVVRFWF9Q
UkVfU0lHTkFMKG51bGxwdHIsIDApOwogICBpbnRwdHJfdCB2OwogICBpbnQgYyA9IDA7CiAgIGZv
ciAodiA9IGN2Xy5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB2ICE9IDA7CkBAIC0y
NjE3LDEzICsyNjUzLDEzIEBAIHZvaWQgQ29uZFZhcjo6U2lnbmFsQWxsICgpIHsKICAgICAgIGlm
ICgodiAmIGtDdkV2ZW50KSAhPSAwKSB7CiAgICAgICAgIFBvc3RTeW5jaEV2ZW50KHRoaXMsIFNZ
TkNIX0VWX1NJR05BTEFMTCk7CiAgICAgICB9Ci0gICAgICBBQlNMX1RTQU5fTVVURVhfUE9TVF9T
SUdOQUwoMCwgMCk7CisgICAgICBBQlNMX1RTQU5fTVVURVhfUE9TVF9TSUdOQUwobnVsbHB0ciwg
MCk7CiAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKICAgICAgIGMgPSBEZWxheShjLCBHRU5U
TEUpOyAgICAgICAgICAgLy8gdHJ5IGFnYWluIGFmdGVyIGEgZGVsYXkKICAgICB9CiAgIH0KLSAg
QUJTTF9UU0FOX01VVEVYX1BPU1RfU0lHTkFMKDAsIDApOworICBBQlNMX1RTQU5fTVVURVhfUE9T
VF9TSUdOQUwobnVsbHB0ciwgMCk7CiB9CiAKIHZvaWQgUmVsZWFzYWJsZU11dGV4TG9jazo6UmVs
ZWFzZSgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL211dGV4LmgKaW5kZXggYTM3ODE5MDUzOGUyZDIzNmVhZjM5OTMx
NTAwN2QwMDg3MmUyMDg2OS4uYWY3NzBlODViMGRmMjliNTgwYTYzOTY5YmM5ZDBiN2UyMzk1MjVj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL211dGV4LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUg
PHN0cmluZz4KIAorI2luY2x1ZGUgImFic2wvYmFzZS9jb25zdF9pbml0LmgiCiAjaW5jbHVkZSAi
YWJzbC9iYXNlL2ludGVybmFsL2lkZW50aXR5LmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVy
bmFsL2xvd19sZXZlbF9hbGxvYy5oIgogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC90aHJl
YWRfaWRlbnRpdHkuaCIKQEAgLTEzNCwzNiArMTM1LDU2IEBAIHN0cnVjdCBTeW5jaFdhaXRQYXJh
bXM7CiAvLwogLy8gU2VlIGFsc28gYE11dGV4TG9ja2AsIGJlbG93LCBmb3Igc2NvcGVkIGBNdXRl
eGAgYWNxdWlzaXRpb24uCiAKLWNsYXNzIExPQ0tBQkxFIE11dGV4IHsKK2NsYXNzIEFCU0xfTE9D
S0FCTEUgTXV0ZXggewogIHB1YmxpYzoKKyAgLy8gQ3JlYXRlcyBhIGBNdXRleGAgdGhhdCBpcyBu
b3QgaGVsZCBieSBhbnlvbmUuIFRoaXMgY29uc3RydWN0b3IgaXMKKyAgLy8gdHlwaWNhbGx5IHVz
ZWQgZm9yIE11dGV4ZXMgYWxsb2NhdGVkIG9uIHRoZSBoZWFwIG9yIHRoZSBzdGFjay4KKyAgLy8K
KyAgLy8gVG8gY3JlYXRlIGBNdXRleGAgaW5zdGFuY2VzIHdpdGggc3RhdGljIHN0b3JhZ2UgZHVy
YXRpb24KKyAgLy8gKGUuZy4gYSBuYW1lc3BhY2Utc2NvcGVkIG9yIGdsb2JhbCB2YXJpYWJsZSks
IHNlZQorICAvLyBgTXV0ZXg6Ok11dGV4KGFic2w6OmtDb25zdEluaXQpYCBiZWxvdyBpbnN0ZWFk
LgogICBNdXRleCgpOworCisgIC8vIENyZWF0ZXMgYSBtdXRleCB3aXRoIHN0YXRpYyBzdG9yYWdl
IGR1cmF0aW9uLiAgQSBnbG9iYWwgdmFyaWFibGUKKyAgLy8gY29uc3RydWN0ZWQgdGhpcyB3YXkg
YXZvaWRzIHRoZSBsaWZldGltZSBpc3N1ZXMgdGhhdCBjYW4gb2NjdXIgb24gcHJvZ3JhbQorICAv
LyBzdGFydHVwIGFuZCBzaHV0ZG93bi4gIChTZWUgYWJzbC9iYXNlL2NvbnN0X2luaXQuaC4pCisg
IC8vCisgIC8vIEZvciBNdXRleGVzIGFsbG9jYXRlZCBvbiB0aGUgaGVhcCBhbmQgc3RhY2ssIGlu
c3RlYWQgdXNlIHRoZSBkZWZhdWx0CisgIC8vIGNvbnN0cnVjdG9yLCB3aGljaCBjYW4gaW50ZXJh
Y3QgbW9yZSBmdWxseSB3aXRoIHRoZSB0aHJlYWQgc2FuaXRpemVyLgorICAvLworICAvLyBFeGFt
cGxlIHVzYWdlOgorICAvLyAgIG5hbWVzcGFjZSBmb28geworICAvLyAgIEFCU0xfQ09OU1RfSU5J
VCBNdXRleCBtdShhYnNsOjprQ29uc3RJbml0KTsKKyAgLy8gICB9CisgIGV4cGxpY2l0IGNvbnN0
ZXhwciBNdXRleChhYnNsOjpDb25zdEluaXRUeXBlKTsKKwogICB+TXV0ZXgoKTsKIAogICAvLyBN
dXRleDo6TG9jaygpCiAgIC8vCiAgIC8vIEJsb2NrcyB0aGUgY2FsbGluZyB0aHJlYWQsIGlmIG5l
Y2Vzc2FyeSwgdW50aWwgdGhpcyBgTXV0ZXhgIGlzIGZyZWUsIGFuZAogICAvLyB0aGVuIGFjcXVp
cmVzIGl0IGV4Y2x1c2l2ZWx5LiAoVGhpcyBsb2NrIGlzIGFsc28ga25vd24gYXMgYSAid3JpdGUg
bG9jay4iKQotICB2b2lkIExvY2soKSBFWENMVVNJVkVfTE9DS19GVU5DVElPTigpOworICB2b2lk
IExvY2soKSBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCk7CiAKICAgLy8gTXV0ZXg6OlVu
bG9jaygpCiAgIC8vCiAgIC8vIFJlbGVhc2VzIHRoaXMgYE11dGV4YCBhbmQgcmV0dXJucyBpdCBm
cm9tIHRoZSBleGNsdXNpdmUvd3JpdGUgc3RhdGUgdG8gdGhlCiAgIC8vIGZyZWUgc3RhdGUuIENh
bGxlciBtdXN0IGhvbGQgdGhlIGBNdXRleGAgZXhjbHVzaXZlbHkuCi0gIHZvaWQgVW5sb2NrKCkg
VU5MT0NLX0ZVTkNUSU9OKCk7CisgIHZvaWQgVW5sb2NrKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJT04o
KTsKIAogICAvLyBNdXRleDo6VHJ5TG9jaygpCiAgIC8vCiAgIC8vIElmIHRoZSBtdXRleCBjYW4g
YmUgYWNxdWlyZWQgd2l0aG91dCBibG9ja2luZywgZG9lcyBzbyBleGNsdXNpdmVseSBhbmQKICAg
Ly8gcmV0dXJucyBgdHJ1ZWAuIE90aGVyd2lzZSwgcmV0dXJucyBgZmFsc2VgLiBSZXR1cm5zIGB0
cnVlYCB3aXRoIGhpZ2gKICAgLy8gcHJvYmFiaWxpdHkgaWYgdGhlIGBNdXRleGAgd2FzIGZyZWUu
Ci0gIGJvb2wgVHJ5TG9jaygpIEVYQ0xVU0lWRV9UUllMT0NLX0ZVTkNUSU9OKHRydWUpOworICBi
b29sIFRyeUxvY2soKSBBQlNMX0VYQ0xVU0lWRV9UUllMT0NLX0ZVTkNUSU9OKHRydWUpOwogCiAg
IC8vIE11dGV4OjpBc3NlcnRIZWxkKCkKICAgLy8KICAgLy8gUmV0dXJuIGltbWVkaWF0ZWx5IGlm
IHRoaXMgdGhyZWFkIGhvbGRzIHRoZSBgTXV0ZXhgIGV4Y2x1c2l2ZWx5IChpbiB3cml0ZQogICAv
LyBtb2RlKS4gT3RoZXJ3aXNlLCBtYXkgcmVwb3J0IGFuIGVycm9yICh0eXBpY2FsbHkgYnkgY3Jh
c2hpbmcgd2l0aCBhCiAgIC8vIGRpYWdub3N0aWMpLCBvciBtYXkgcmV0dXJuIGltbWVkaWF0ZWx5
LgotICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCBBU1NFUlRfRVhDTFVTSVZFX0xPQ0soKTsKKyAg
dm9pZCBBc3NlcnRIZWxkKCkgY29uc3QgQUJTTF9BU1NFUlRfRVhDTFVTSVZFX0xPQ0soKTsKIAog
ICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLy8gUmVhZGVyLVdyaXRlciBMb2NraW5nCkBAIC0y
MDQsMjggKzIyNSwyOCBAQCBjbGFzcyBMT0NLQUJMRSBNdXRleCB7CiAgIC8vIGBSZWFkZXJMb2Nr
KClgIHdpbGwgYmxvY2sgaWYgc29tZSBvdGhlciB0aHJlYWQgaGFzIGFuIGV4Y2x1c2l2ZS93cml0
ZXIgbG9jawogICAvLyBvbiB0aGUgbXV0ZXguCiAKLSAgdm9pZCBSZWFkZXJMb2NrKCkgU0hBUkVE
X0xPQ0tfRlVOQ1RJT04oKTsKKyAgdm9pZCBSZWFkZXJMb2NrKCkgQUJTTF9TSEFSRURfTE9DS19G
VU5DVElPTigpOwogCiAgIC8vIE11dGV4OjpSZWFkZXJVbmxvY2soKQogICAvLwogICAvLyBSZWxl
YXNlcyBhIHJlYWQgc2hhcmUgb2YgdGhpcyBgTXV0ZXhgLiBgUmVhZGVyVW5sb2NrYCBtYXkgcmV0
dXJuIGEgbXV0ZXggdG8KICAgLy8gdGhlIGZyZWUgc3RhdGUgaWYgdGhpcyB0aHJlYWQgaG9sZHMg
dGhlIGxhc3QgcmVhZGVyIGxvY2sgb24gdGhlIG11dGV4LiBOb3RlCiAgIC8vIHRoYXQgeW91IGNh
bm5vdCBjYWxsIGBSZWFkZXJVbmxvY2soKWAgb24gYSBtdXRleCBoZWxkIGluIHdyaXRlIG1vZGUu
Ci0gIHZvaWQgUmVhZGVyVW5sb2NrKCkgVU5MT0NLX0ZVTkNUSU9OKCk7CisgIHZvaWQgUmVhZGVy
VW5sb2NrKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJT04oKTsKIAogICAvLyBNdXRleDo6UmVhZGVyVHJ5
TG9jaygpCiAgIC8vCiAgIC8vIElmIHRoZSBtdXRleCBjYW4gYmUgYWNxdWlyZWQgd2l0aG91dCBi
bG9ja2luZywgYWNxdWlyZXMgdGhpcyBtdXRleCBmb3IKICAgLy8gc2hhcmVkIGFjY2VzcyBhbmQg
cmV0dXJucyBgdHJ1ZWAuIE90aGVyd2lzZSwgcmV0dXJucyBgZmFsc2VgLiBSZXR1cm5zCiAgIC8v
IGB0cnVlYCB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkgaWYgdGhlIGBNdXRleGAgd2FzIGZyZWUgb3Ig
c2hhcmVkLgotICBib29sIFJlYWRlclRyeUxvY2soKSBTSEFSRURfVFJZTE9DS19GVU5DVElPTih0
cnVlKTsKKyAgYm9vbCBSZWFkZXJUcnlMb2NrKCkgQUJTTF9TSEFSRURfVFJZTE9DS19GVU5DVElP
Tih0cnVlKTsKIAogICAvLyBNdXRleDo6QXNzZXJ0UmVhZGVySGVsZCgpCiAgIC8vCiAgIC8vIFJl
dHVybnMgaW1tZWRpYXRlbHkgaWYgdGhpcyB0aHJlYWQgaG9sZHMgdGhlIGBNdXRleGAgaW4gYXQg
bGVhc3Qgc2hhcmVkCiAgIC8vIG1vZGUgKHJlYWQgbW9kZSkuIE90aGVyd2lzZSwgbWF5IHJlcG9y
dCBhbiBlcnJvciAodHlwaWNhbGx5IGJ5CiAgIC8vIGNyYXNoaW5nIHdpdGggYSBkaWFnbm9zdGlj
KSwgb3IgbWF5IHJldHVybiBpbW1lZGlhdGVseS4KLSAgdm9pZCBBc3NlcnRSZWFkZXJIZWxkKCkg
Y29uc3QgQVNTRVJUX1NIQVJFRF9MT0NLKCk7CisgIHZvaWQgQXNzZXJ0UmVhZGVySGVsZCgpIGNv
bnN0IEFCU0xfQVNTRVJUX1NIQVJFRF9MT0NLKCk7CiAKICAgLy8gTXV0ZXg6OldyaXRlckxvY2so
KQogICAvLyBNdXRleDo6V3JpdGVyVW5sb2NrKCkKQEAgLTIzNiwxMSArMjU3LDExIEBAIGNsYXNz
IExPQ0tBQkxFIE11dGV4IHsKICAgLy8gVGhlc2UgbWV0aG9kcyBtYXkgYmUgdXNlZCAoYWxvbmcg
d2l0aCB0aGUgY29tcGxlbWVudGFyeSBgUmVhZGVyKigpYAogICAvLyBtZXRob2RzKSB0byBkaXN0
aW5naXNoIHNpbXBsZSBleGNsdXNpdmUgYE11dGV4YCB1c2FnZSAoYExvY2soKWAsCiAgIC8vIGV0
Yy4pIGZyb20gcmVhZGVyL3dyaXRlciBsb2NrIHVzYWdlLgotICB2b2lkIFdyaXRlckxvY2soKSBF
WENMVVNJVkVfTE9DS19GVU5DVElPTigpIHsgdGhpcy0+TG9jaygpOyB9CisgIHZvaWQgV3JpdGVy
TG9jaygpIEFCU0xfRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKSB7IHRoaXMtPkxvY2soKTsgfQog
Ci0gIHZvaWQgV3JpdGVyVW5sb2NrKCkgVU5MT0NLX0ZVTkNUSU9OKCkgeyB0aGlzLT5VbmxvY2so
KTsgfQorICB2b2lkIFdyaXRlclVubG9jaygpIEFCU0xfVU5MT0NLX0ZVTkNUSU9OKCkgeyB0aGlz
LT5VbmxvY2soKTsgfQogCi0gIGJvb2wgV3JpdGVyVHJ5TG9jaygpIEVYQ0xVU0lWRV9UUllMT0NL
X0ZVTkNUSU9OKHRydWUpIHsKKyAgYm9vbCBXcml0ZXJUcnlMb2NrKCkgQUJTTF9FWENMVVNJVkVf
VFJZTE9DS19GVU5DVElPTih0cnVlKSB7CiAgICAgcmV0dXJuIHRoaXMtPlRyeUxvY2soKTsKICAg
fQogCkBAIC0yOTQsMTEgKzMxNSwxMSBAQCBjbGFzcyBMT0NLQUJMRSBNdXRleCB7CiAgIC8vIGJl
IGFjcXVpcmVkLCB0aGVuIGF0b21pY2FsbHkgYWNxdWlyZXMgdGhpcyBgTXV0ZXhgLiBgTG9ja1do
ZW4oKWAgaXMKICAgLy8gbG9naWNhbGx5IGVxdWl2YWxlbnQgdG8gYCpMb2NrKCk7IEF3YWl0KCk7
YCB0aG91Z2ggdGhleSBtYXkgaGF2ZSBkaWZmZXJlbnQKICAgLy8gcGVyZm9ybWFuY2UgY2hhcmFj
dGVyaXN0aWNzLgotICB2b2lkIExvY2tXaGVuKGNvbnN0IENvbmRpdGlvbiAmY29uZCkgRVhDTFVT
SVZFX0xPQ0tfRlVOQ1RJT04oKTsKKyAgdm9pZCBMb2NrV2hlbihjb25zdCBDb25kaXRpb24gJmNv
bmQpIEFCU0xfRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKTsKIAotICB2b2lkIFJlYWRlckxvY2tX
aGVuKGNvbnN0IENvbmRpdGlvbiAmY29uZCkgU0hBUkVEX0xPQ0tfRlVOQ1RJT04oKTsKKyAgdm9p
ZCBSZWFkZXJMb2NrV2hlbihjb25zdCBDb25kaXRpb24gJmNvbmQpIEFCU0xfU0hBUkVEX0xPQ0tf
RlVOQ1RJT04oKTsKIAotICB2b2lkIFdyaXRlckxvY2tXaGVuKGNvbnN0IENvbmRpdGlvbiAmY29u
ZCkgRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04oKSB7CisgIHZvaWQgV3JpdGVyTG9ja1doZW4oY29u
c3QgQ29uZGl0aW9uICZjb25kKSBBQlNMX0VYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCkgewogICAg
IHRoaXMtPkxvY2tXaGVuKGNvbmQpOwogICB9CiAKQEAgLTM0MCwxMSArMzYxLDExIEBAIGNsYXNz
IExPQ0tBQkxFIE11dGV4IHsKICAgLy8KICAgLy8gTmVnYXRpdmUgdGltZW91dHMgYXJlIGVxdWl2
YWxlbnQgdG8gYSB6ZXJvIHRpbWVvdXQuCiAgIGJvb2wgTG9ja1doZW5XaXRoVGltZW91dChjb25z
dCBDb25kaXRpb24gJmNvbmQsIGFic2w6OkR1cmF0aW9uIHRpbWVvdXQpCi0gICAgICBFWENMVVNJ
VkVfTE9DS19GVU5DVElPTigpOworICAgICAgQUJTTF9FWENMVVNJVkVfTE9DS19GVU5DVElPTigp
OwogICBib29sIFJlYWRlckxvY2tXaGVuV2l0aFRpbWVvdXQoY29uc3QgQ29uZGl0aW9uICZjb25k
LCBhYnNsOjpEdXJhdGlvbiB0aW1lb3V0KQotICAgICAgU0hBUkVEX0xPQ0tfRlVOQ1RJT04oKTsK
KyAgICAgIEFCU0xfU0hBUkVEX0xPQ0tfRlVOQ1RJT04oKTsKICAgYm9vbCBXcml0ZXJMb2NrV2hl
bldpdGhUaW1lb3V0KGNvbnN0IENvbmRpdGlvbiAmY29uZCwgYWJzbDo6RHVyYXRpb24gdGltZW91
dCkKLSAgICAgIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCkgeworICAgICAgQUJTTF9FWENMVVNJ
VkVfTE9DS19GVU5DVElPTigpIHsKICAgICByZXR1cm4gdGhpcy0+TG9ja1doZW5XaXRoVGltZW91
dChjb25kLCB0aW1lb3V0KTsKICAgfQogCkBAIC0zNjAsMTEgKzM4MSwxMSBAQCBjbGFzcyBMT0NL
QUJMRSBNdXRleCB7CiAgIC8vCiAgIC8vIERlYWRsaW5lcyBpbiB0aGUgcGFzdCBhcmUgZXF1aXZh
bGVudCB0byBhbiBpbW1lZGlhdGUgZGVhZGxpbmUuCiAgIGJvb2wgTG9ja1doZW5XaXRoRGVhZGxp
bmUoY29uc3QgQ29uZGl0aW9uICZjb25kLCBhYnNsOjpUaW1lIGRlYWRsaW5lKQotICAgICAgRVhD
TFVTSVZFX0xPQ0tfRlVOQ1RJT04oKTsKKyAgICAgIEFCU0xfRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJ
T04oKTsKICAgYm9vbCBSZWFkZXJMb2NrV2hlbldpdGhEZWFkbGluZShjb25zdCBDb25kaXRpb24g
JmNvbmQsIGFic2w6OlRpbWUgZGVhZGxpbmUpCi0gICAgICBTSEFSRURfTE9DS19GVU5DVElPTigp
OworICAgICAgQUJTTF9TSEFSRURfTE9DS19GVU5DVElPTigpOwogICBib29sIFdyaXRlckxvY2tX
aGVuV2l0aERlYWRsaW5lKGNvbnN0IENvbmRpdGlvbiAmY29uZCwgYWJzbDo6VGltZSBkZWFkbGlu
ZSkKLSAgICAgIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKCkgeworICAgICAgQUJTTF9FWENMVVNJ
VkVfTE9DS19GVU5DVElPTigpIHsKICAgICByZXR1cm4gdGhpcy0+TG9ja1doZW5XaXRoRGVhZGxp
bmUoY29uZCwgZGVhZGxpbmUpOwogICB9CiAKQEAgLTUxNCw5ICs1MzUsOSBAQCBjbGFzcyBMT0NL
QUJMRSBNdXRleCB7CiAvLyBwcml2YXRlOgogLy8gICBNdXRleCBsb2NrXzsKIC8vIH07Ci1jbGFz
cyBTQ09QRURfTE9DS0FCTEUgTXV0ZXhMb2NrIHsKK2NsYXNzIEFCU0xfU0NPUEVEX0xPQ0tBQkxF
IE11dGV4TG9jayB7CiAgcHVibGljOgotICBleHBsaWNpdCBNdXRleExvY2soTXV0ZXggKm11KSBF
WENMVVNJVkVfTE9DS19GVU5DVElPTihtdSkgOiBtdV8obXUpIHsKKyAgZXhwbGljaXQgTXV0ZXhM
b2NrKE11dGV4ICptdSkgQUJTTF9FWENMVVNJVkVfTE9DS19GVU5DVElPTihtdSkgOiBtdV8obXUp
IHsKICAgICB0aGlzLT5tdV8tPkxvY2soKTsKICAgfQogCkBAIC01MjUsNyArNTQ2LDcgQEAgY2xh
c3MgU0NPUEVEX0xPQ0tBQkxFIE11dGV4TG9jayB7CiAgIE11dGV4TG9jayYgb3BlcmF0b3I9KGNv
bnN0IE11dGV4TG9jayYpID0gZGVsZXRlOwogICBNdXRleExvY2smIG9wZXJhdG9yPShNdXRleExv
Y2smJikgPSBkZWxldGU7CiAKLSAgfk11dGV4TG9jaygpIFVOTE9DS19GVU5DVElPTigpIHsgdGhp
cy0+bXVfLT5VbmxvY2soKTsgfQorICB+TXV0ZXhMb2NrKCkgQUJTTF9VTkxPQ0tfRlVOQ1RJT04o
KSB7IHRoaXMtPm11Xy0+VW5sb2NrKCk7IH0KIAogIHByaXZhdGU6CiAgIE11dGV4ICpjb25zdCBt
dV87CkBAIC01MzUsOSArNTU2LDkgQEAgY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIE11dGV4TG9jayB7
CiAvLwogLy8gVGhlIGBSZWFkZXJNdXRleExvY2tgIGlzIGEgaGVscGVyIGNsYXNzLCBsaWtlIGBN
dXRleExvY2tgLCB3aGljaCBhY3F1aXJlcyBhbmQKIC8vIHJlbGVhc2VzIGEgc2hhcmVkIGxvY2sg
b24gYSBgTXV0ZXhgIHZpYSBSQUlJLgotY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIFJlYWRlck11dGV4
TG9jayB7CitjbGFzcyBBQlNMX1NDT1BFRF9MT0NLQUJMRSBSZWFkZXJNdXRleExvY2sgewogIHB1
YmxpYzoKLSAgZXhwbGljaXQgUmVhZGVyTXV0ZXhMb2NrKE11dGV4ICptdSkgU0hBUkVEX0xPQ0tf
RlVOQ1RJT04obXUpCisgIGV4cGxpY2l0IFJlYWRlck11dGV4TG9jayhNdXRleCAqbXUpIEFCU0xf
U0hBUkVEX0xPQ0tfRlVOQ1RJT04obXUpCiAgICAgICA6ICBtdV8obXUpIHsKICAgICBtdS0+UmVh
ZGVyTG9jaygpOwogICB9CkBAIC01NDcsNyArNTY4LDcgQEAgY2xhc3MgU0NPUEVEX0xPQ0tBQkxF
IFJlYWRlck11dGV4TG9jayB7CiAgIFJlYWRlck11dGV4TG9jayYgb3BlcmF0b3I9KGNvbnN0IFJl
YWRlck11dGV4TG9jayYpID0gZGVsZXRlOwogICBSZWFkZXJNdXRleExvY2smIG9wZXJhdG9yPShS
ZWFkZXJNdXRleExvY2smJikgPSBkZWxldGU7CiAKLSAgflJlYWRlck11dGV4TG9jaygpIFVOTE9D
S19GVU5DVElPTigpIHsKKyAgflJlYWRlck11dGV4TG9jaygpIEFCU0xfVU5MT0NLX0ZVTkNUSU9O
KCkgewogICAgIHRoaXMtPm11Xy0+UmVhZGVyVW5sb2NrKCk7CiAgIH0KIApAQCAtNTU5LDkgKzU4
MCw5IEBAIGNsYXNzIFNDT1BFRF9MT0NLQUJMRSBSZWFkZXJNdXRleExvY2sgewogLy8KIC8vIFRo
ZSBgV3JpdGVyTXV0ZXhMb2NrYCBpcyBhIGhlbHBlciBjbGFzcywgbGlrZSBgTXV0ZXhMb2NrYCwg
d2hpY2ggYWNxdWlyZXMgYW5kCiAvLyByZWxlYXNlcyBhIHdyaXRlIChleGNsdXNpdmUpIGxvY2sg
b24gYSBgTXV0ZXhgIHZpYSBSQUlJLgotY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIFdyaXRlck11dGV4
TG9jayB7CitjbGFzcyBBQlNMX1NDT1BFRF9MT0NLQUJMRSBXcml0ZXJNdXRleExvY2sgewogIHB1
YmxpYzoKLSAgZXhwbGljaXQgV3JpdGVyTXV0ZXhMb2NrKE11dGV4ICptdSkgRVhDTFVTSVZFX0xP
Q0tfRlVOQ1RJT04obXUpCisgIGV4cGxpY2l0IFdyaXRlck11dGV4TG9jayhNdXRleCAqbXUpIEFC
U0xfRVhDTFVTSVZFX0xPQ0tfRlVOQ1RJT04obXUpCiAgICAgICA6IG11XyhtdSkgewogICAgIG11
LT5Xcml0ZXJMb2NrKCk7CiAgIH0KQEAgLTU3MSw3ICs1OTIsNyBAQCBjbGFzcyBTQ09QRURfTE9D
S0FCTEUgV3JpdGVyTXV0ZXhMb2NrIHsKICAgV3JpdGVyTXV0ZXhMb2NrJiBvcGVyYXRvcj0oY29u
c3QgV3JpdGVyTXV0ZXhMb2NrJikgPSBkZWxldGU7CiAgIFdyaXRlck11dGV4TG9jayYgb3BlcmF0
b3I9KFdyaXRlck11dGV4TG9jayYmKSA9IGRlbGV0ZTsKIAotICB+V3JpdGVyTXV0ZXhMb2NrKCkg
VU5MT0NLX0ZVTkNUSU9OKCkgeworICB+V3JpdGVyTXV0ZXhMb2NrKCkgQUJTTF9VTkxPQ0tfRlVO
Q1RJT04oKSB7CiAgICAgdGhpcy0+bXVfLT5Xcml0ZXJVbmxvY2soKTsKICAgfQogCkBAIC01ODQs
NyArNjA1LDcgQEAgY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIFdyaXRlck11dGV4TG9jayB7CiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEFzIG5vdGVkIGFib3ZlLCBgTXV0ZXhgIGNvbnRh
aW5zIGEgbnVtYmVyIG9mIG1lbWJlciBmdW5jdGlvbnMgd2hpY2ggdGFrZSBhCi0vLyBgQ29uZGl0
aW9uYCBhcyBhIGFyZ3VtZW50OyBjbGllbnRzIGNhbiB3YWl0IGZvciBjb25kaXRpb25zIHRvIGJl
Y29tZSBgdHJ1ZWAKKy8vIGBDb25kaXRpb25gIGFzIGFuIGFyZ3VtZW50OyBjbGllbnRzIGNhbiB3
YWl0IGZvciBjb25kaXRpb25zIHRvIGJlY29tZSBgdHJ1ZWAKIC8vIGJlZm9yZSBhdHRlbXB0aW5n
IHRvIGFjcXVpcmUgdGhlIG11dGV4LiBUaGVzZSBzZWN0aW9ucyBhcmUga25vd24gYXMKIC8vICJj
b25kaXRpb24gY3JpdGljYWwiIHNlY3Rpb25zLiBUbyB1c2UgYSBgQ29uZGl0aW9uYCwgeW91IHNp
bXBseSBuZWVkIHRvCiAvLyBjb25zdHJ1Y3QgaXQsIGFuZCB1c2Ugd2l0aGluIGFuIGFwcHJvcHJp
YXRlIGBNdXRleGAgbWVtYmVyIGZ1bmN0aW9uOwpAQCAtNjEyLDcgKzYzMyw3IEBAIGNsYXNzIFND
T1BFRF9MT0NLQUJMRSBXcml0ZXJNdXRleExvY2sgewogLy8gRXhhbXBsZToKIC8vCiAvLyAgIC8v
IGFzc3VtZSBjb3VudF8gaXMgbm90IGludGVybmFsIHJlZmVyZW5jZSBjb3VudAotLy8gICBpbnQg
Y291bnRfIEdVQVJERURfQlkobXVfKTsKKy8vICAgaW50IGNvdW50XyBBQlNMX0dVQVJERURfQlko
bXVfKTsKIC8vCiAvLyAgIG11Xy5Mb2NrV2hlbihDb25kaXRpb24oK1tdKGludCogY291bnQpIHsg
cmV0dXJuICpjb3VudCA9PSAwOyB9LAogLy8gICAgICAgICAmY291bnRfKSk7CkBAIC04MzksMTEg
Kzg2MCwxMSBAQCBjbGFzcyBDb25kVmFyIHsKIC8vIE11dGV4TG9ja01heWJlCiAvLwogLy8gTXV0
ZXhMb2NrTWF5YmUgaXMgbGlrZSBNdXRleExvY2ssIGJ1dCBpcyBhIG5vLW9wIHdoZW4gbXUgaXMg
bnVsbC4KLWNsYXNzIFNDT1BFRF9MT0NLQUJMRSBNdXRleExvY2tNYXliZSB7CitjbGFzcyBBQlNM
X1NDT1BFRF9MT0NLQUJMRSBNdXRleExvY2tNYXliZSB7CiAgcHVibGljOgotICBleHBsaWNpdCBN
dXRleExvY2tNYXliZShNdXRleCAqbXUpIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OKG11KQorICBl
eHBsaWNpdCBNdXRleExvY2tNYXliZShNdXRleCAqbXUpIEFCU0xfRVhDTFVTSVZFX0xPQ0tfRlVO
Q1RJT04obXUpCiAgICAgICA6IG11XyhtdSkgeyBpZiAodGhpcy0+bXVfICE9IG51bGxwdHIpIHsg
dGhpcy0+bXVfLT5Mb2NrKCk7IH0gfQotICB+TXV0ZXhMb2NrTWF5YmUoKSBVTkxPQ0tfRlVOQ1RJ
T04oKSB7CisgIH5NdXRleExvY2tNYXliZSgpIEFCU0xfVU5MT0NLX0ZVTkNUSU9OKCkgewogICAg
IGlmICh0aGlzLT5tdV8gIT0gbnVsbHB0cikgeyB0aGlzLT5tdV8tPlVubG9jaygpOyB9CiAgIH0K
ICBwcml2YXRlOgpAQCAtODU4LDE3ICs4NzksMTcgQEAgY2xhc3MgU0NPUEVEX0xPQ0tBQkxFIE11
dGV4TG9ja01heWJlIHsKIC8vCiAvLyBSZWxlYXNhYmxlTXV0ZXhMb2NrIGlzIGxpa2UgTXV0ZXhM
b2NrLCBidXQgcGVybWl0cyBgUmVsZWFzZSgpYCBvZiBpdHMKIC8vIG11dGV4IGJlZm9yZSBkZXN0
cnVjdGlvbi4gYFJlbGVhc2UoKWAgbWF5IGJlIGNhbGxlZCBhdCBtb3N0IG9uY2UuCi1jbGFzcyBT
Q09QRURfTE9DS0FCTEUgUmVsZWFzYWJsZU11dGV4TG9jayB7CitjbGFzcyBBQlNMX1NDT1BFRF9M
T0NLQUJMRSBSZWxlYXNhYmxlTXV0ZXhMb2NrIHsKICBwdWJsaWM6Ci0gIGV4cGxpY2l0IFJlbGVh
c2FibGVNdXRleExvY2soTXV0ZXggKm11KSBFWENMVVNJVkVfTE9DS19GVU5DVElPTihtdSkKKyAg
ZXhwbGljaXQgUmVsZWFzYWJsZU11dGV4TG9jayhNdXRleCAqbXUpIEFCU0xfRVhDTFVTSVZFX0xP
Q0tfRlVOQ1RJT04obXUpCiAgICAgICA6IG11XyhtdSkgewogICAgIHRoaXMtPm11Xy0+TG9jaygp
OwogICB9Ci0gIH5SZWxlYXNhYmxlTXV0ZXhMb2NrKCkgVU5MT0NLX0ZVTkNUSU9OKCkgeworICB+
UmVsZWFzYWJsZU11dGV4TG9jaygpIEFCU0xfVU5MT0NLX0ZVTkNUSU9OKCkgewogICAgIGlmICh0
aGlzLT5tdV8gIT0gbnVsbHB0cikgeyB0aGlzLT5tdV8tPlVubG9jaygpOyB9CiAgIH0KIAotICB2
b2lkIFJlbGVhc2UoKSBVTkxPQ0tfRlVOQ1RJT04oKTsKKyAgdm9pZCBSZWxlYXNlKCkgQUJTTF9V
TkxPQ0tfRlVOQ1RJT04oKTsKIAogIHByaXZhdGU6CiAgIE11dGV4ICptdV87CkBAIC04NzksMTEg
KzkwMCwxNSBAQCBjbGFzcyBTQ09QRURfTE9DS0FCTEUgUmVsZWFzYWJsZU11dGV4TG9jayB7CiB9
OwogCiAjaWZkZWYgQUJTTF9JTlRFUk5BTF9VU0VfTk9OUFJPRF9NVVRFWAoraW5saW5lIGNvbnN0
ZXhwciBNdXRleDo6TXV0ZXgoYWJzbDo6Q29uc3RJbml0VHlwZSkgOiBpbXBsXyhhYnNsOjprQ29u
c3RJbml0KSB7fQorCiAjZWxzZQogaW5saW5lIE11dGV4OjpNdXRleCgpIDogbXVfKDApIHsKICAg
QUJTTF9UU0FOX01VVEVYX0NSRUFURSh0aGlzLCBfX3RzYW5fbXV0ZXhfbm90X3N0YXRpYyk7CiB9
CiAKK2lubGluZSBjb25zdGV4cHIgTXV0ZXg6Ok11dGV4KGFic2w6OkNvbnN0SW5pdFR5cGUpIDog
bXVfKDApIHt9CisKIGlubGluZSBDb25kVmFyOjpDb25kVmFyKCkgOiBjdl8oMCkge30KICNlbmRp
ZgogCkBAIC0xMDI1LDQgKzEwNTAsNSBAQCB2b2lkIFNldE11dGV4RGVhZGxvY2tEZXRlY3Rpb25N
b2RlKE9uRGVhZGxvY2tDeWNsZSBtb2RlKTsKIGV4dGVybiAiQyIgewogdm9pZCBBYnNsSW50ZXJu
YWxNdXRleFlpZWxkKCk7CiB9ICAvLyBleHRlcm4gIkMiCisKICNlbmRpZiAgLy8gQUJTTF9TWU5D
SFJPTklaQVRJT05fTVVURVhfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9t
dXRleF9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXhfYmVuY2htYXJr
LmNjCmluZGV4IDFlMDE5ZTAwMWFlNDAyNzRhZGM4YjRlMDBlNzUzOWNkMjU3NmRlY2EuLmFiMTg4
MDAxMmEwYzFlNzkxNDc4YjA0N2I2NWNjMGE5MGQzNmI3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9tdXRleF9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0
aW9uL211dGV4X2JlbmNobWFyay5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtMTIsMTYgKzEyLDE1NCBAQAogLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPG11
dGV4PiAgLy8gTk9MSU5UKGJ1aWxkL2MrKzExKQogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1
ZGUgImJlbmNobWFyay9iZW5jaG1hcmsuaCIKLSNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwv
c3lzaW5mby5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9jeWNsZWNsb2NrLmgiCisj
aW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrLmgiCiAjaW5jbHVkZSAiYWJzbC9z
eW5jaHJvbml6YXRpb24vYmxvY2tpbmdfY291bnRlci5oIgogI2luY2x1ZGUgImFic2wvc3luY2hy
b25pemF0aW9uL2ludGVybmFsL3RocmVhZF9wb29sLmgiCiAjaW5jbHVkZSAiYWJzbC9zeW5jaHJv
bml6YXRpb24vbXV0ZXguaCIKKyNpbmNsdWRlICJiZW5jaG1hcmsvYmVuY2htYXJrLmgiCiAKIG5h
bWVzcGFjZSB7CiAKK3ZvaWQgQk1fTXV0ZXgoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAg
c3RhdGljIGFic2w6Ok11dGV4KiBtdSA9IG5ldyBhYnNsOjpNdXRleDsKKyAgZm9yIChhdXRvIF8g
OiBzdGF0ZSkgeworICAgIGFic2w6Ok11dGV4TG9jayBsb2NrKG11KTsKKyAgfQorfQorQkVOQ0hN
QVJLKEJNX011dGV4KS0+VXNlUmVhbFRpbWUoKS0+VGhyZWFkcygxKS0+VGhyZWFkUGVyQ3B1KCk7
CisKK3N0YXRpYyB2b2lkIERlbGF5TnMoaW50NjRfdCBucywgaW50KiBkYXRhKSB7CisgIGludDY0
X3QgZW5kID0gYWJzbDo6YmFzZV9pbnRlcm5hbDo6Q3ljbGVDbG9jazo6Tm93KCkgKworICAgICAg
ICAgICAgICAgIG5zICogYWJzbDo6YmFzZV9pbnRlcm5hbDo6Q3ljbGVDbG9jazo6RnJlcXVlbmN5
KCkgLyAxZTk7CisgIHdoaWxlIChhYnNsOjpiYXNlX2ludGVybmFsOjpDeWNsZUNsb2NrOjpOb3co
KSA8IGVuZCkgeworICAgICsrKCpkYXRhKTsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUo
KmRhdGEpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNdXRleFR5cGU+CitjbGFzcyBS
YWlpTG9ja2VyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFJhaWlMb2NrZXIoTXV0ZXhUeXBlKiBt
dSkgOiBtdV8obXUpIHsgbXVfLT5Mb2NrKCk7IH0KKyAgflJhaWlMb2NrZXIoKSB7IG11Xy0+VW5s
b2NrKCk7IH0KKyBwcml2YXRlOgorICBNdXRleFR5cGUqIG11XzsKK307CisKK3RlbXBsYXRlIDw+
CitjbGFzcyBSYWlpTG9ja2VyPHN0ZDo6bXV0ZXg+IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFJh
aWlMb2NrZXIoc3RkOjptdXRleCogbXUpIDogbXVfKG11KSB7IG11Xy0+bG9jaygpOyB9CisgIH5S
YWlpTG9ja2VyKCkgeyBtdV8tPnVubG9jaygpOyB9CisgcHJpdmF0ZToKKyAgc3RkOjptdXRleCog
bXVfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIE11dGV4VHlwZT4KK3ZvaWQgQk1fQ29udGVu
ZGVkKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIHN0cnVjdCBTaGFyZWQgeworICAgIE11
dGV4VHlwZSBtdTsKKyAgICBpbnQgZGF0YSA9IDA7CisgIH07CisgIHN0YXRpYyBhdXRvKiBzaGFy
ZWQgPSBuZXcgU2hhcmVkOworICBpbnQgbG9jYWwgPSAwOworICBmb3IgKGF1dG8gXyA6IHN0YXRl
KSB7CisgICAgLy8gSGVyZSB3ZSBtb2RlbCBib3RoIGxvY2FsIHdvcmsgb3V0c2lkZSBvZiB0aGUg
Y3JpdGljYWwgc2VjdGlvbiBhcyB3ZWxsIGFzCisgICAgLy8gc29tZSB3b3JrIGluc2lkZSBvZiB0
aGUgY3JpdGljYWwgc2VjdGlvbi4gVGhlIGlkZWEgaXMgdG8gY2FwdHVyZSBzb21lCisgICAgLy8g
bW9yZSBvciBsZXNzIHJlYWxpc2l0aWMgY29udGVudGlvbiBsZXZlbHMuCisgICAgLy8gSWYgY29u
dGVudGlvbiBpcyB0b28gbG93LCB0aGUgYmVuY2htYXJrIHdvbid0IG1lYXN1cmUgYW55dGhpbmcg
dXNlZnVsLgorICAgIC8vIElmIGNvbnRlbnRpb24gaXMgdW5yZWFsaXN0aWNhbGx5IGhpZ2gsIHRo
ZSBiZW5jaG1hcmsgd2lsbCBmYXZvcgorICAgIC8vIGJhZCBtdXRleCBpbXBsZW1lbnRhdGlvbnMg
dGhhdCBibG9jayBhbmQgb3RoZXJ3aXNlIGRpc3RyYWN0IHRocmVhZHMKKyAgICAvLyBmcm9tIHRo
ZSBtdXRleCBhbmQgc2hhcmVkIHN0YXRlIGZvciBhcyBtdWNoIGFzIHBvc3NpYmxlLgorICAgIC8v
IFRvIGFjaGlldmUgdGhpcyBhbW91bnQgb2YgbG9jYWwgd29yayBpcyBtdWx0aXBsaWVkIGJ5IG51
bWJlciBvZiB0aHJlYWRzCisgICAgLy8gdG8ga2VlcCByYXRpbyBiZXR3ZWVuIGxvY2FsIHdvcmsg
YW5kIGNyaXRpY2FsIHNlY3Rpb24gYXBwcm94aW1hdGVseQorICAgIC8vIGVxdWFsIHJlZ2FyZGxl
c3Mgb2YgbnVtYmVyIG9mIHRocmVhZHMuCisgICAgRGVsYXlOcygxMDAgKiBzdGF0ZS50aHJlYWRz
LCAmbG9jYWwpOworICAgIFJhaWlMb2NrZXI8TXV0ZXhUeXBlPiBsb2NrZXIoJnNoYXJlZC0+bXUp
OworICAgIERlbGF5TnMoc3RhdGUucmFuZ2UoMCksICZzaGFyZWQtPmRhdGEpOworICB9Cit9CisK
K0JFTkNITUFSS19URU1QTEFURShCTV9Db250ZW5kZWQsIGFic2w6Ok11dGV4KQorICAgIC0+VXNl
UmVhbFRpbWUoKQorICAgIC8vIFRocmVhZFBlckNwdSBwb29ybHkgaGFuZGxlcyBub24tcG93ZXIt
b2YtdHdvIENQVSBjb3VudHMuCisgICAgLT5UaHJlYWRzKDEpCisgICAgLT5UaHJlYWRzKDIpCisg
ICAgLT5UaHJlYWRzKDQpCisgICAgLT5UaHJlYWRzKDYpCisgICAgLT5UaHJlYWRzKDgpCisgICAg
LT5UaHJlYWRzKDEyKQorICAgIC0+VGhyZWFkcygxNikKKyAgICAtPlRocmVhZHMoMjQpCisgICAg
LT5UaHJlYWRzKDMyKQorICAgIC0+VGhyZWFkcyg0OCkKKyAgICAtPlRocmVhZHMoNjQpCisgICAg
LT5UaHJlYWRzKDk2KQorICAgIC0+VGhyZWFkcygxMjgpCisgICAgLT5UaHJlYWRzKDE5MikKKyAg
ICAtPlRocmVhZHMoMjU2KQorICAgIC8vIFNvbWUgZW1waXJpY2FsbHkgY2hvc2VuIGFtb3VudHMg
b2Ygd29yayBpbiBjcml0aWNhbCBzZWN0aW9uLgorICAgIC8vIDEgaXMgbG93IGNvbnRlbnRpb24s
IDIwMCBpcyBoaWdoIGNvbnRlbnRpb24gYW5kIGZldyB2YWx1ZXMgaW4gYmV0d2Vlbi4KKyAgICAt
PkFyZygxKQorICAgIC0+QXJnKDIwKQorICAgIC0+QXJnKDUwKQorICAgIC0+QXJnKDIwMCk7CisK
K0JFTkNITUFSS19URU1QTEFURShCTV9Db250ZW5kZWQsIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNw
aW5Mb2NrKQorICAgIC0+VXNlUmVhbFRpbWUoKQorICAgIC8vIFRocmVhZFBlckNwdSBwb29ybHkg
aGFuZGxlcyBub24tcG93ZXItb2YtdHdvIENQVSBjb3VudHMuCisgICAgLT5UaHJlYWRzKDEpCisg
ICAgLT5UaHJlYWRzKDIpCisgICAgLT5UaHJlYWRzKDQpCisgICAgLT5UaHJlYWRzKDYpCisgICAg
LT5UaHJlYWRzKDgpCisgICAgLT5UaHJlYWRzKDEyKQorICAgIC0+VGhyZWFkcygxNikKKyAgICAt
PlRocmVhZHMoMjQpCisgICAgLT5UaHJlYWRzKDMyKQorICAgIC0+VGhyZWFkcyg0OCkKKyAgICAt
PlRocmVhZHMoNjQpCisgICAgLT5UaHJlYWRzKDk2KQorICAgIC0+VGhyZWFkcygxMjgpCisgICAg
LT5UaHJlYWRzKDE5MikKKyAgICAtPlRocmVhZHMoMjU2KQorICAgIC8vIFNvbWUgZW1waXJpY2Fs
bHkgY2hvc2VuIGFtb3VudHMgb2Ygd29yayBpbiBjcml0aWNhbCBzZWN0aW9uLgorICAgIC8vIDEg
aXMgbG93IGNvbnRlbnRpb24sIDIwMCBpcyBoaWdoIGNvbnRlbnRpb24gYW5kIGZldyB2YWx1ZXMg
aW4gYmV0d2Vlbi4KKyAgICAtPkFyZygxKQorICAgIC0+QXJnKDIwKQorICAgIC0+QXJnKDUwKQor
ICAgIC0+QXJnKDIwMCk7CisKK0JFTkNITUFSS19URU1QTEFURShCTV9Db250ZW5kZWQsIHN0ZDo6
bXV0ZXgpCisgICAgLT5Vc2VSZWFsVGltZSgpCisgICAgLy8gVGhyZWFkUGVyQ3B1IHBvb3JseSBo
YW5kbGVzIG5vbi1wb3dlci1vZi10d28gQ1BVIGNvdW50cy4KKyAgICAtPlRocmVhZHMoMSkKKyAg
ICAtPlRocmVhZHMoMikKKyAgICAtPlRocmVhZHMoNCkKKyAgICAtPlRocmVhZHMoNikKKyAgICAt
PlRocmVhZHMoOCkKKyAgICAtPlRocmVhZHMoMTIpCisgICAgLT5UaHJlYWRzKDE2KQorICAgIC0+
VGhyZWFkcygyNCkKKyAgICAtPlRocmVhZHMoMzIpCisgICAgLT5UaHJlYWRzKDQ4KQorICAgIC0+
VGhyZWFkcyg2NCkKKyAgICAtPlRocmVhZHMoOTYpCisgICAgLT5UaHJlYWRzKDEyOCkKKyAgICAt
PlRocmVhZHMoMTkyKQorICAgIC0+VGhyZWFkcygyNTYpCisgICAgLy8gU29tZSBlbXBpcmljYWxs
eSBjaG9zZW4gYW1vdW50cyBvZiB3b3JrIGluIGNyaXRpY2FsIHNlY3Rpb24uCisgICAgLy8gMSBp
cyBsb3cgY29udGVudGlvbiwgMjAwIGlzIGhpZ2ggY29udGVudGlvbiBhbmQgZmV3IHZhbHVlcyBp
biBiZXR3ZWVuLgorICAgIC0+QXJnKDEpCisgICAgLT5BcmcoMjApCisgICAgLT5BcmcoNTApCisg
ICAgLT5BcmcoMjAwKTsKKwogLy8gTWVhc3VyZSB0aGUgb3ZlcmhlYWQgb2YgY29uZGl0aW9ucyBv
biBtdXRleCByZWxlYXNlICh3aGVuIHRoZXkgbXVzdCBiZQogLy8gZXZhbHVhdGVkKS4gIE11dGV4
IGhhcyAoc29tZSkgc3VwcG9ydCBmb3IgZXF1aXZhbGVuY2UgY2xhc3NlcyBhbGxvd2luZwogLy8g
Q29uZGl0aW9ucyB3aXRoIHRoZSBzYW1lIGZ1bmN0aW9uL2FyZ3VtZW50IHRvIHBvdGVudGlhbGx5
IG5vdCBiZSBtdWx0aXBseQpAQCAtODIsMTMgKzIyMCw0IEBAIGNvbnN0ZXhwciBpbnQga01heENv
bmRpdGlvbldhaXRlcnMgPSAxMDI0OwogI2VuZGlmCiBCRU5DSE1BUksoQk1fQ29uZGl0aW9uV2Fp
dGVycyktPlJhbmdlUGFpcigwLCAyLCAxLCBrTWF4Q29uZGl0aW9uV2FpdGVycyk7CiAKLXZvaWQg
Qk1fQ29udGVuZGVkTXV0ZXgoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKLSAgc3RhdGljIGFi
c2w6Ok11dGV4KiBtdSA9IG5ldyBhYnNsOjpNdXRleDsKLSAgZm9yIChhdXRvIF8gOiBzdGF0ZSkg
ewotICAgIGFic2w6Ok11dGV4TG9jayBsb2NrKG11KTsKLSAgfQotfQotQkVOQ0hNQVJLKEJNX0Nv
bnRlbmRlZE11dGV4KS0+VGhyZWFkcygxKTsKLUJFTkNITUFSSyhCTV9Db250ZW5kZWRNdXRleCkt
PlRocmVhZFBlckNwdSgpOwotCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9tdXRleF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4
X3Rlc3QuY2MKaW5kZXggYjI4MjBlMjA2OGQ1NmU5MDEzMjE5YzE4OGU2NGY0NjEzZjBlYTM3OS4u
M2M1MDExOTI2ZGNkYWFlNTFkMTNjYThmZDlmYzc5YzBjY2NkOTVkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL211dGV4X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0
aW9uL211dGV4X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTE0LDcgKzE0LDcgQEAKIAogI2luY2x1ZGUgImFic2wvc3luY2hyb25pemF0aW9uL211
dGV4LmgiCiAKLSNpZmRlZiBXSU4zMgorI2lmZGVmIF9XSU4zMgogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KICNlbmRpZgogCkBAIC00MjUsMTAgKzQyNSwxMCBAQCBURVNUKE11dGV4LCBDb25kVmFyV2Fp
dFNpZ25hbHNBd2FpdCkgewogICAvLyBVc2UgYSBzdHJ1Y3Qgc28gdGhlIGxvY2sgYW5ub3RhdGlv
bnMgYXBwbHkuCiAgIHN0cnVjdCB7CiAgICAgYWJzbDo6TXV0ZXggYmFycmllcl9tdTsKLSAgICBi
b29sIGJhcnJpZXIgR1VBUkRFRF9CWShiYXJyaWVyX211KSA9IGZhbHNlOworICAgIGJvb2wgYmFy
cmllciBBQlNMX0dVQVJERURfQlkoYmFycmllcl9tdSkgPSBmYWxzZTsKIAogICAgIGFic2w6Ok11
dGV4IHJlbGVhc2VfbXU7Ci0gICAgYm9vbCByZWxlYXNlIEdVQVJERURfQlkocmVsZWFzZV9tdSkg
PSBmYWxzZTsKKyAgICBib29sIHJlbGVhc2UgQUJTTF9HVUFSREVEX0JZKHJlbGVhc2VfbXUpID0g
ZmFsc2U7CiAgICAgYWJzbDo6Q29uZFZhciByZWxlYXNlZF9jdjsKICAgfSBzdGF0ZTsKIApAQCAt
NDY2LDEwICs0NjYsMTAgQEAgVEVTVChNdXRleCwgQ29uZFZhcldhaXRXaXRoVGltZW91dFNpZ25h
bHNBd2FpdCkgewogICAvLyBVc2UgYSBzdHJ1Y3Qgc28gdGhlIGxvY2sgYW5ub3RhdGlvbnMgYXBw
bHkuCiAgIHN0cnVjdCB7CiAgICAgYWJzbDo6TXV0ZXggYmFycmllcl9tdTsKLSAgICBib29sIGJh
cnJpZXIgR1VBUkRFRF9CWShiYXJyaWVyX211KSA9IGZhbHNlOworICAgIGJvb2wgYmFycmllciBB
QlNMX0dVQVJERURfQlkoYmFycmllcl9tdSkgPSBmYWxzZTsKIAogICAgIGFic2w6Ok11dGV4IHJl
bGVhc2VfbXU7Ci0gICAgYm9vbCByZWxlYXNlIEdVQVJERURfQlkocmVsZWFzZV9tdSkgPSBmYWxz
ZTsKKyAgICBib29sIHJlbGVhc2UgQUJTTF9HVUFSREVEX0JZKHJlbGVhc2VfbXUpID0gZmFsc2U7
CiAgICAgYWJzbDo6Q29uZFZhciByZWxlYXNlZF9jdjsKICAgfSBzdGF0ZTsKIApAQCAtNjEwLDkg
KzYxMCw5IEBAIFRFU1RfUChDb25kVmFyV2FpdERlYWRsb2NrLCBUZXN0KSB7CiAgIHdhaXRlcjIu
cmVzZXQoKTsgIC8vICJqb2luIiB3YWl0ZXIyCiB9CiAKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KENvbmRWYXJXYWl0RGVhZGxvY2tUZXN0LCBDb25kVmFyV2FpdERlYWRsb2NrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpSYW5nZSgwLCA4KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKK0lOU1RBTlRJQVRF
X1RFU1RfU1VJVEVfUChDb25kVmFyV2FpdERlYWRsb2NrVGVzdCwgQ29uZFZhcldhaXREZWFkbG9j
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlJhbmdlKDAsIDgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgp
KTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIC8vIFRlc3QgZm9yIGZpeCBvZiBidWcgaW4gRGVxdWV1ZUFsbFdha2VhYmxlKCkK
QEAgLTc3MCw3ICs3NzAsNyBAQCBzdGF0aWMgdm9pZCBHZXRSZWFkTG9jayhSZWFkZXJEZWNyZW1l
bnRCdWdTdHJ1Y3QgKngpIHsKIAogLy8gVGVzdCBmb3IgcmVhZGVyIGNvdW50ZXIgYmVpbmcgZGVj
cmVtZW50ZWQgaW5jb3JyZWN0bHkgYnkgd2FpdGVyCiAvLyB3aXRoIGZhbHNlIGNvbmRpdGlvbi4K
LVRFU1QoTXV0ZXgsIE11dGV4UmVhZGVyRGVjcmVtZW50QnVnKSBOT19USFJFQURfU0FGRVRZX0FO
QUxZU0lTIHsKK1RFU1QoTXV0ZXgsIE11dGV4UmVhZGVyRGVjcmVtZW50QnVnKSBBQlNMX05PX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMgewogICBSZWFkZXJEZWNyZW1lbnRCdWdTdHJ1Y3QgeDsKICAg
eC5jb25kID0gZmFsc2U7CiAgIHgud2FpdGluZ19vbl9jb25kID0gZmFsc2U7CkBAIC04MTUsNyAr
ODE1LDEyIEBAIFRFU1QoTXV0ZXgsIE11dGV4UmVhZGVyRGVjcmVtZW50QnVnKSBOT19USFJFQURf
U0FGRVRZX0FOQUxZU0lTIHsKIAogLy8gVGVzdCB0aGF0IHdlIGNvcnJlY3RseSBoYW5kbGUgdGhl
IHNpdHVhdGlvbiB3aGVuIGEgbG9jayBpcwogLy8gaGVsZCBhbmQgdGhlbiBkZXN0cm95ZWQgKHcv
byB1bmxvY2tpbmcpLgotVEVTVChNdXRleCwgTG9ja2VkTXV0ZXhEZXN0cnVjdGlvbkJ1ZykgTk9f
VEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7CisjaWZkZWYgVEhSRUFEX1NBTklUSVpFUgorLy8gVFNB
TiByZXBvcnRzIGVycm9ycyB3aGVuIGxvY2tlZCBNdXRleGVzIGFyZSBkZXN0cm95ZWQuCitURVNU
KE11dGV4LCBESVNBQkxFRF9Mb2NrZWRNdXRleERlc3RydWN0aW9uQnVnKSBBQlNMX05PX1RIUkVB
RF9TQUZFVFlfQU5BTFlTSVMgeworI2Vsc2UKK1RFU1QoTXV0ZXgsIExvY2tlZE11dGV4RGVzdHJ1
Y3Rpb25CdWcpIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7CisjZW5kaWYKICAgZm9y
IChpbnQgaSA9IDA7IGkgIT0gMTA7IGkrKykgewogICAgIC8vIENyZWF0ZSwgbG9jayBhbmQgZGVz
dHJveSAxMCBsb2Nrcy4KICAgICBjb25zdCBpbnQga051bUxvY2tzID0gMTA7CkBAIC0xMDMwLDEx
ICsxMDM1LDExIEBAIFRFU1QoTXV0ZXgsIERlYWRsb2NrRGV0ZWN0b3IpIHsKIGNsYXNzIFNjb3Bl
ZERpc2FibGVCYXplbFRlc3RXYXJuaW5ncyB7CiAgcHVibGljOgogICBTY29wZWREaXNhYmxlQmF6
ZWxUZXN0V2FybmluZ3MoKSB7Ci0jaWZkZWYgV0lOMzIKKyNpZmRlZiBfV0lOMzIKICAgICBjaGFy
IGZpbGVbTUFYX1BBVEhdOwotICAgIGlmIChHZXRFbnZpcm9ubWVudFZhcmlhYmxlKGtWYXJOYW1l
LCBmaWxlLCBzaXplb2YoZmlsZSkpIDwgc2l6ZW9mKGZpbGUpKSB7CisgICAgaWYgKEdldEVudmly
b25tZW50VmFyaWFibGVBKGtWYXJOYW1lLCBmaWxlLCBzaXplb2YoZmlsZSkpIDwgc2l6ZW9mKGZp
bGUpKSB7CiAgICAgICB3YXJuaW5nc19vdXRwdXRfZmlsZV8gPSBmaWxlOwotICAgICAgU2V0RW52
aXJvbm1lbnRWYXJpYWJsZShrVmFyTmFtZSwgbnVsbHB0cik7CisgICAgICBTZXRFbnZpcm9ubWVu
dFZhcmlhYmxlQShrVmFyTmFtZSwgbnVsbHB0cik7CiAgICAgfQogI2Vsc2UKICAgICBjb25zdCBj
aGFyICpmaWxlID0gZ2V0ZW52KGtWYXJOYW1lKTsKQEAgLTEwNDcsOCArMTA1Miw4IEBAIGNsYXNz
IFNjb3BlZERpc2FibGVCYXplbFRlc3RXYXJuaW5ncyB7CiAKICAgflNjb3BlZERpc2FibGVCYXpl
bFRlc3RXYXJuaW5ncygpIHsKICAgICBpZiAoIXdhcm5pbmdzX291dHB1dF9maWxlXy5lbXB0eSgp
KSB7Ci0jaWZkZWYgV0lOMzIKLSAgICAgIFNldEVudmlyb25tZW50VmFyaWFibGUoa1Zhck5hbWUs
IHdhcm5pbmdzX291dHB1dF9maWxlXy5jX3N0cigpKTsKKyNpZmRlZiBfV0lOMzIKKyAgICAgIFNl
dEVudmlyb25tZW50VmFyaWFibGVBKGtWYXJOYW1lLCB3YXJuaW5nc19vdXRwdXRfZmlsZV8uY19z
dHIoKSk7CiAjZWxzZQogICAgICAgc2V0ZW52KGtWYXJOYW1lLCB3YXJuaW5nc19vdXRwdXRfZmls
ZV8uY19zdHIoKSwgMCk7CiAjZW5kaWYKQEAgLTEwNjIsNyArMTA2NywxMiBAQCBjbGFzcyBTY29w
ZWREaXNhYmxlQmF6ZWxUZXN0V2FybmluZ3MgewogY29uc3QgY2hhciBTY29wZWREaXNhYmxlQmF6
ZWxUZXN0V2FybmluZ3M6OmtWYXJOYW1lW10gPQogICAgICJURVNUX1dBUk5JTkdTX09VVFBVVF9G
SUxFIjsKIAorI2lmZGVmIFRIUkVBRF9TQU5JVElaRVIKKy8vIFRoaXMgdGVzdCBpbnRlbnRpb25h
bGx5IGNyZWF0ZXMgZGVhZGxvY2tzIHRvIHRlc3QgdGhlIGRlYWRsb2NrIGRldGVjdG9yLgorVEVT
VChNdXRleCwgRElTQUJMRURfRGVhZGxvY2tEZXRlY3RvckJhemVsV2FybmluZykgeworI2Vsc2UK
IFRFU1QoTXV0ZXgsIERlYWRsb2NrRGV0ZWN0b3JCYXplbFdhcm5pbmcpIHsKKyNlbmRpZgogICBh
YnNsOjpTZXRNdXRleERlYWRsb2NrRGV0ZWN0aW9uTW9kZShhYnNsOjpPbkRlYWRsb2NrQ3ljbGU6
OmtSZXBvcnQpOwogCiAgIC8vIENhdXNlIGRlYWRsb2NrIGRldGVjdGlvbiB0byBkZXRlY3Qgc29t
ZXRoaW5nLCBpZiBpdCdzCkBAIC0xMDg3LDExICsxMDk3LDExIEBAIFRFU1QoTXV0ZXgsIERlYWRs
b2NrRGV0ZWN0b3JCYXplbFdhcm5pbmcpIHsKICAgYWJzbDo6U2V0TXV0ZXhEZWFkbG9ja0RldGVj
dGlvbk1vZGUoYWJzbDo6T25EZWFkbG9ja0N5Y2xlOjprQWJvcnQpOwogfQogCi0vLyBUaGlzIHRl
c3QgaXMgdGFnZ2VkIHdpdGggTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyBiZWNhdXNlIHRoZQor
Ly8gVGhpcyB0ZXN0IGlzIHRhZ2dlZCB3aXRoIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UyBiZWNhdXNlIHRoZQogLy8gYW5ub3RhdGlvbi1iYXNlZCBzdGF0aWMgdGhyZWFkLXNhZmV0eSBh
bmFseXNpcyBpcyBub3QgY3VycmVudGx5CiAvLyBwcmVkaWNhdGUtYXdhcmUgYW5kIGNhbm5vdCB0
ZWxsIGlmIHRoZSB0d28gZm9yLWxvb3BzIHRoYXQgYWNxdWlyZSBhbmQKIC8vIHJlbGVhc2UgdGhl
IGxvY2tzIGhhdmUgdGhlIHNhbWUgcHJlZGljYXRlcy4KLVRFU1QoTXV0ZXgsIERlYWRsb2NrRGV0
ZWN0b3JTdGVzc1Rlc3QpIE5PX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeworVEVTVChNdXRleCwg
RGVhZGxvY2tEZXRlY3RvclN0ZXNzVGVzdCkgQUJTTF9OT19USFJFQURfU0FGRVRZX0FOQUxZU0lT
IHsKICAgLy8gU3RyZXNzIHRlc3Q6IEhlcmUgd2UgY3JlYXRlIGEgbGFyZ2UgbnVtYmVyIG9mIGxv
Y2tzIGFuZCB1c2UgYWxsIG9mIHRoZW0uCiAgIC8vIElmIGEgZGVhZGxvY2sgZGV0ZWN0b3Iga2Vl
cHMgYSBmdWxsIGdyYXBoIG9mIGxvY2sgYWNxdWlzaXRpb24gb3JkZXIsCiAgIC8vIGl0IHdpbGwg
bGlrZWx5IGJlIHRvbyBzbG93IGZvciB0aGlzIHRlc3QgdG8gcGFzcy4KQEAgLTExMDksNyArMTEx
OSwxMiBAQCBURVNUKE11dGV4LCBEZWFkbG9ja0RldGVjdG9yU3Rlc3NUZXN0KSBOT19USFJFQURf
U0FGRVRZX0FOQUxZU0lTIHsKICAgfQogfQogCi1URVNUKE11dGV4LCBEZWFkbG9ja0lkQnVnKSBO
T19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsKKyNpZmRlZiBUSFJFQURfU0FOSVRJWkVSCisvLyBU
U0FOIHJlcG9ydHMgZXJyb3JzIHdoZW4gbG9ja2VkIE11dGV4ZXMgYXJlIGRlc3Ryb3llZC4KK1RF
U1QoTXV0ZXgsIERJU0FCTEVEX0RlYWRsb2NrSWRCdWcpIEFCU0xfTk9fVEhSRUFEX1NBRkVUWV9B
TkFMWVNJUyB7CisjZWxzZQorVEVTVChNdXRleCwgRGVhZGxvY2tJZEJ1ZykgQUJTTF9OT19USFJF
QURfU0FGRVRZX0FOQUxZU0lTIHsKKyNlbmRpZgogICAvLyBUZXN0IGEgc2NlbmFyaW8gd2hlcmUg
YSBjYWNoZWQgZGVhZGxvY2sgZ3JhcGggbm9kZSBpZCBpbiB0aGUKICAgLy8gbGlzdCBvZiBoZWxk
IGxvY2tzIGlzIG5vdCBpbnZhbGlkYXRlZCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nCiAgIC8vIG11
dGV4IGlzIGRlbGV0ZWQuCkBAIC0xMzY3LDggKzEzODIsOCBAQCBzdGQ6OnZlY3RvcjxUaW1lb3V0
VGVzdFBhcmFtPiBNYWtlVGltZW91dFRlc3RQYXJhbVZhbHVlcygpIHsKIH0KIAogLy8gSW5zdGFu
dGlhdGUgYFRpbWVvdXRUZXN0YCB3aXRoIGBNYWtlVGltZW91dFRlc3RQYXJhbVZhbHVlcygpYC4K
LUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbCwgVGltZW91dFRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXNJbihNYWtlVGltZW91dFRlc3RQYXJhbVZhbHVlcygp
KSk7CitJTlNUQU5USUFURV9URVNUX1NVSVRFX1AoQWxsLCBUaW1lb3V0VGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXNJbihNYWtlVGltZW91dFRlc3RQYXJhbVZh
bHVlcygpKSk7CiAKIFRFU1RfUChUaW1lb3V0VGVzdCwgQXdhaXQpIHsKICAgY29uc3QgVGltZW91
dFRlc3RQYXJhbSBwYXJhbXMgPSBHZXRQYXJhbSgpOwpAQCAtMTU0OCw5ICsxNTYzLDkgQEAgc3Rh
dGljIHN0ZDo6dmVjdG9yPGludD4gQWxsVGhyZWFkQ291bnRWYWx1ZXMoKSB7CiBjbGFzcyBNdXRl
eFZhcmlhYmxlVGhyZWFkQ291bnRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxpbnQ+IHt9OwogCiAvLyBJbnN0YW50aWF0ZSB0aGUgYWJvdmUgd2l0aCBBbGxUaHJlYWRDb3Vu
dE9wdGlvbnMoKS4KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFRocmVhZENvdW50cywgTXV0ZXhW
YXJpYWJsZVRocmVhZENvdW50VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGlu
Zzo6VmFsdWVzSW4oQWxsVGhyZWFkQ291bnRWYWx1ZXMoKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSk7CitJTlNUQU5USUFURV9U
RVNUX1NVSVRFX1AoVGhyZWFkQ291bnRzLCBNdXRleFZhcmlhYmxlVGhyZWFkQ291bnRUZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4oQWxsVGhyZWFkQ291
bnRWYWx1ZXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpQcmludFRv
U3RyaW5nUGFyYW1OYW1lKCkpOwogCiAvLyBSZWR1Y2VzIGl0ZXJhdGlvbnMgYnkgc29tZSBmYWN0
b3IgZm9yIHNsb3cgcGxhdGZvcm1zCiAvLyAoZGV0ZXJtaW5lZCBlbXBpcmljYWxseSkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3lu
Y2hyb25pemF0aW9uL25vdGlmaWNhdGlvbi5jYwppbmRleCBlZDhjYzkwNjc3NDAyNWI0NmIwNThk
NDdkODQ0YmE3NjliYzFiY2U3Li41M2FjZTAwODcwYzk5ODVmODEyZDRjY2IyZmEyODYxNDFlYjk4
ZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb24uY2MKQEAgLTQsNyArNCw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJh
YnNsL3RpbWUvdGltZS5oIgogCiBuYW1lc3BhY2UgYWJzbCB7CisKIHZvaWQgTm90aWZpY2F0aW9u
OjpOb3RpZnkoKSB7CiAgIE11dGV4TG9jayBsKCZ0aGlzLT5tdXRleF8pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vbm90aWZpY2F0aW9uLmgKaW5kZXggMTA3OTMyZjI5MDllNmU2MWJiMTFmYzViM2Y1Mzcy
YWE1NDE3MmNhMC4uODJkMTExYTU0OTJmMGY2MGVjMTY4ZWJhNzEwZjBhM2VhODA0NjZkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL25vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb24uaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLApAQCAtNTIsNiArNTIsNyBAQAogCiAjaW5jbHVkZSA8YXRvbWljPgog
CisjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgogI2luY2x1ZGUgImFic2wvc3luY2hyb25p
emF0aW9uL211dGV4LmgiCiAjaW5jbHVkZSAiYWJzbC90aW1lL3RpbWUuaCIKIApAQCAtMTA5LDQg
KzExMCw1IEBAIGNsYXNzIE5vdGlmaWNhdGlvbiB7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgYWJz
bAorCiAjZW5kaWYgIC8vIEFCU0xfU1lOQ0hST05JWkFUSU9OX05PVElGSUNBVElPTl9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL25vdGlmaWNhdGlvbl90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL25vdGlmaWNhdGlvbl90ZXN0LmNjCmluZGV4IGQ4NzA4ZDU1MWEx
NTc1NzQ2ZWEyYTg1NDI2OTcyZmQ5ODE5MTEwMTYuLjA1OWQ0Y2QyNTIxZGVhZGFmZGVhNmYxN2U4
ODc2MmI2YzkzYzVjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmlj
YXRpb25fdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uX3Rl
c3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTcyLDEy
ICs3MiwxNiBAQCBzdGF0aWMgdm9pZCBCYXNpY1Rlc3RzKGJvb2wgbm90aWZ5X2JlZm9yZV93YWl0
aW5nLCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikgewogICBFWFBFQ1RfRkFMU0Uobm90aWZp
Y2F0aW9uLT5XYWl0Rm9yTm90aWZpY2F0aW9uV2l0aERlYWRsaW5lKGFic2w6Ok5vdygpKSk7CiAK
ICAgY29uc3QgYWJzbDo6RHVyYXRpb24gZGVsYXkgPSBhYnNsOjpNaWxsaXNlY29uZHMoNTApOwor
ICBjb25zdCBhYnNsOjpUaW1lIHN0YXJ0ID0gYWJzbDo6Tm93KCk7CisgIEVYUEVDVF9GQUxTRShu
b3RpZmljYXRpb24tPldhaXRGb3JOb3RpZmljYXRpb25XaXRoVGltZW91dChkZWxheSkpOworICBj
b25zdCBhYnNsOjpEdXJhdGlvbiBlbGFwc2VkID0gYWJzbDo6Tm93KCkgLSBzdGFydDsKKwogICAv
LyBBbGxvdyBmb3IgYSBzbGlnaHQgZWFybHkgcmV0dXJuLCB0byBhY2NvdW50IGZvciBxdWFsaXR5
IG9mIGltcGxlbWVudGF0aW9uCiAgIC8vIGlzc3VlcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4KICAg
Y29uc3QgYWJzbDo6RHVyYXRpb24gc2xvcCA9IGFic2w6Ok1pY3Jvc2Vjb25kcygyMDApOwotICBh
YnNsOjpUaW1lIHN0YXJ0ID0gYWJzbDo6Tm93KCk7Ci0gIEVYUEVDVF9GQUxTRShub3RpZmljYXRp
b24tPldhaXRGb3JOb3RpZmljYXRpb25XaXRoVGltZW91dChkZWxheSkpOwotICBFWFBFQ1RfTEUo
c3RhcnQgKyBkZWxheSwgYWJzbDo6Tm93KCkgKyBzbG9wKTsKKyAgRVhQRUNUX0xFKGRlbGF5IC0g
c2xvcCwgZWxhcHNlZCkKKyAgICAgIDw8ICJXYWl0Rm9yTm90aWZpY2F0aW9uV2l0aFRpbWVvdXQg
cmV0dXJuZWQgIiA8PCBkZWxheSAtIGVsYXBzZWQKKyAgICAgIDw8ICIgZWFybHkgKHdpdGggIiA8
PCBzbG9wIDw8ICIgc2xvcCksIHN0YXJ0IHRpbWUgd2FzICIgPDwgc3RhcnQ7CiAKICAgVGhyZWFk
U2FmZUNvdW50ZXIgcmVhZHlfY291bnRlcjsKICAgVGhyZWFkU2FmZUNvdW50ZXIgZG9uZV9jb3Vu
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvQlVJ
TEQuYmF6ZWwKaW5kZXggYzdjMTZkNDM3NmM3ZmEzNDM0NDc1NzI3OWZhNjE3YzcwNTRjMjYwZS4u
NTVlODNhOGM4ZTk1NmFiZGQ5MmNlZDQyNGM0ZjIwNzIyOWY5MGJjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0JVSUxELmJhemVsCkBAIC01LDcg
KzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICMK
ICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTUsOCArMTUsOSBAQAogIwogCiBsb2FkKAot
ICAgICIvL2Fic2w6Y29wdHMuYnpsIiwKKyAgICAiLy9hYnNsOmNvcHRzL2NvbmZpZ3VyZV9jb3B0
cy5iemwiLAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElO
S09QVFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogKQogCkBAIC0yNyw2ICsyOCw3IEBAIGxp
Y2Vuc2VzKFsibm90aWNlIl0pICAjIEFwYWNoZSAyLjAKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9
ICJ0aW1lIiwKICAgICBzcmNzID0gWworICAgICAgICAiY2l2aWxfdGltZS5jYyIsCiAgICAgICAg
ICJjbG9jay5jYyIsCiAgICAgICAgICJkdXJhdGlvbi5jYyIsCiAgICAgICAgICJmb3JtYXQuY2Mi
LApAQCAtMzUsMTAgKzM3LDEyIEBAIGNjX2xpYnJhcnkoCiAgICAgICAgICJ0aW1lLmNjIiwKICAg
ICBdLAogICAgIGhkcnMgPSBbCisgICAgICAgICJjaXZpbF90aW1lLmgiLAogICAgICAgICAiY2xv
Y2suaCIsCiAgICAgICAgICJ0aW1lLmgiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFV
TFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVf
aGVhZGVycyIsCkBAIC01OCw2ICs2Miw3IEBAIGNjX2xpYnJhcnkoCiAgICAgXSwKICAgICBoZHJz
ID0gWyJpbnRlcm5hbC90ZXN0X3V0aWwuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NP
UFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHZpc2liaWxp
dHkgPSBbCiAgICAgICAgICIvL2Fic2wvdGltZTpfX3BrZ19fIiwKICAgICBdLApAQCAtNzIsMTQg
Kzc3LDE1IEBAIGNjX2xpYnJhcnkoCiBjY190ZXN0KAogICAgIG5hbWUgPSAidGltZV90ZXN0IiwK
ICAgICBzcmNzID0gWworICAgICAgICAiY2l2aWxfdGltZV90ZXN0LmNjIiwKICAgICAgICAgImNs
b2NrX3Rlc3QuY2MiLAogICAgICAgICAiZHVyYXRpb25fdGVzdC5jYyIsCiAgICAgICAgICJmb3Jt
YXRfdGVzdC5jYyIsCi0gICAgICAgICJ0aW1lX25vcm1fdGVzdC5jYyIsCiAgICAgICAgICJ0aW1l
X3Rlc3QuY2MiLAogICAgICAgICAidGltZV96b25lX3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09Q
VFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjp0ZXN0X3V0aWwiLAogICAgICAgICAiOnRpbWUi
LApAQCAtOTQsMTIgKzEwMCwxNCBAQCBjY190ZXN0KAogY2NfdGVzdCgKICAgICBuYW1lID0gInRp
bWVfYmVuY2htYXJrIiwKICAgICBzcmNzID0gWworICAgICAgICAiY2l2aWxfdGltZV9iZW5jaG1h
cmsuY2MiLAogICAgICAgICAiY2xvY2tfYmVuY2htYXJrLmNjIiwKICAgICAgICAgImR1cmF0aW9u
X2JlbmNobWFyay5jYyIsCiAgICAgICAgICJmb3JtYXRfYmVuY2htYXJrLmNjIiwKICAgICAgICAg
InRpbWVfYmVuY2htYXJrLmNjIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRT
LAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHRhZ3MgPSBbCiAg
ICAgICAgICJiZW5jaG1hcmsiLAogICAgIF0sCkBAIC0xMDcsNiArMTE1LDggQEAgY2NfdGVzdCgK
ICAgICAgICAgIjp0ZXN0X3V0aWwiLAogICAgICAgICAiOnRpbWUiLAogICAgICAgICAiLy9hYnNs
L2Jhc2UiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8v
YWJzbC9oYXNoIiwKICAgICAgICAgIkBjb21fZ2l0aHViX2dvb2dsZV9iZW5jaG1hcmsvLzpiZW5j
aG1hcmtfbWFpbiIsCiAgICAgXSwKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL0JVSUxELmduCmluZGV4IDU3NThlOWRjMWUzYzNkYzQ1ZjI4YTUyNWZmZTYw
MTNhODMzMTQ3NDkuLjAxMzVjZGRjZmY3MzY0MTcyNTk1ZGVkZDRkNTFjZGU3YWEzNjhkODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9CVUlMRC5nbgpA
QCAtNCw4ICs0LDE1IEBACiAKIGltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIikK
IAorIyBVc2FnZSBvZiBBYnNlaWwgaW4gQ2hyb21pdW0gaXMgZ3VhcmRlZCBieSBhbiBleHBsaWNp
dCBvcHQtaW4gbGlzdCwgYmVmb3JlCisjIGFkZGluZyBwcm9qZWN0cyB0byB0aGlzIGxpc3QgcGxl
YXNlIHJlYWNoIG91dCB0byBjeHhAY2hyb21pdW0ub3JnIGFuZCBDQzoKKyMgLSBodHRwczovL2Nz
LmNocm9taXVtLm9yZy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9PV05FUlMK
KyMKKyMgTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgYXQ6CisjIGh0dHBzOi8vZG9jcy5n
b29nbGUuY29tL2RvY3VtZW50L2QvMURnUzEtQTNyemJvVExqcGY0bTFzcWtKZ1dqbllfUnUyZG9r
azFYMXZCRFUKIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CiAgIHZpc2liaWxpdHkgPSBbCisg
ICAgIi8vbGliYXNzaXN0YW50LyoiLAogICAgICIvL3RoaXJkX3BhcnR5L3dlYnJ0Yy8qIiwKICAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3Q6Z3Rlc3QiLApAQCAtMjIsNiArMjksNyBAQCBzb3VyY2Vfc2V0KCJ0aW1lIikgewogICBd
CiAgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5j
bHVkZV9jb25maWciIF0KICAgc291cmNlcyA9IFsKKyAgICAiY2l2aWxfdGltZS5jYyIsCiAgICAg
ImNsb2NrLmNjIiwKICAgICAiZHVyYXRpb24uY2MiLAogICAgICJmb3JtYXQuY2MiLApAQCAtMzAs
NiArMzgsNyBAQCBzb3VyY2Vfc2V0KCJ0aW1lIikgewogICAgICJ0aW1lLmNjIiwKICAgXQogICBw
dWJsaWMgPSBbCisgICAgImNpdmlsX3RpbWUuaCIsCiAgICAgImNsb2NrLmgiLAogICAgICJ0aW1l
LmgiLAogICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwNjI3MjM2NGYxNGU5ZGIyNTk0MzU4NDA1Njc2M2Qx
YjA3M2M2NTA4Li41OTA5ODMyMTBhYzEzNGIxNzY2MWZmOTUwN2ZiYTc5OTdlNGQ0NTdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvQ01ha2VM
aXN0cy50eHQKQEAgLTUsNyArNSw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xNCw4MyArMTQs
MTE0IEBACiAjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogIwogCi1saXN0KEFQUEVO
RCBUSU1FX1BVQkxJQ19IRUFERVJTCi0gICJjbG9jay5oIgotICAidGltZS5oIgotKQotCi0KLWxp
c3QoQVBQRU5EIFRJTUVfSU5URVJOQUxfSEVBREVSUwotICAiaW50ZXJuYWwvdGVzdF91dGlsLmgi
Ci0gICJpbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgiCi0gICJpbnRlcm5h
bC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lX2RldGFpbC5oIgotICAiaW50ZXJuYWwvY2N0
ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmgiCi0gICJpbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0
ei96b25lX2luZm9fc291cmNlLmgiCi0pCi0KLWxpc3QoQVBQRU5EIFRJTUVfU1JDCi0gICJ0aW1l
LmNjIgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgdGltZQorICBIRFJTCisgICAgImNp
dmlsX3RpbWUuaCIKKyAgICAiY2xvY2suaCIKKyAgICAidGltZS5oIgorICBTUkNTCisgICJjaXZp
bF90aW1lLmNjIgogICAiY2xvY2suY2MiCiAgICJkdXJhdGlvbi5jYyIKICAgImZvcm1hdC5jYyIK
LSAgImludGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVfZGV0YWlsLmNjIgotICAiaW50ZXJuYWwv
Y2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmNjIgotICAiaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96
b25lX2ZpeGVkLmgiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZm9ybWF0LmNjIgot
ICAiaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2lmLmNjIgotICAiaW50ZXJuYWwvY2N0ei9z
cmMvdGltZV96b25lX2lmLmgiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW1wbC5j
YyIKLSAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbXBsLmgiCi0gICJpbnRlcm5hbC9j
Y3R6L3NyYy90aW1lX3pvbmVfaW5mby5jYyIKLSAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9u
ZV9pbmZvLmgiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbGliYy5jYyIKLSAgImlu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmgiCi0gICJpbnRlcm5hbC9jY3R6L3NyYy90
aW1lX3pvbmVfbG9va3VwLmNjIgotICAiaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX3Bvc2l4
LmNjIgotICAiaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX3Bvc2l4LmgiCi0gICJpbnRlcm5h
bC9jY3R6L3NyYy90emZpbGUuaCIKLSAgImludGVybmFsL2NjdHovc3JjL3pvbmVfaW5mb19zb3Vy
Y2UuY2MiCi0gICR7VElNRV9QVUJMSUNfSEVBREVSU30KLSAgJHtUSU1FX0lOVEVSTkFMX0hFQURF
UlN9CisgICJpbnRlcm5hbC9nZXRfY3VycmVudF90aW1lX2Nocm9uby5pbmMiCisgICJpbnRlcm5h
bC9nZXRfY3VycmVudF90aW1lX3Bvc2l4LmluYyIKKyAgInRpbWUuY2MiCisgIENPUFRTCisgICAg
JHtBQlNMX0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6
Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6aW50MTI4CisgICAgYWJzbDo6c3RyaW5ncworICAgIGFi
c2w6OmNpdmlsX3RpbWUKKyAgICBhYnNsOjp0aW1lX3pvbmUKKyAgUFVCTElDCiApCi1zZXQoVElN
RV9QVUJMSUNfTElCUkFSSUVTIGFic2w6OmJhc2UgYWJzbDo6c3RhY2t0cmFjZSBhYnNsOjppbnQx
MjggYWJzbDo6c3RyaW5ncykKIAotYWJzbF9saWJyYXJ5KAotICBUQVJHRVQKLSAgICBhYnNsX3Rp
bWUKLSAgU09VUkNFUwotICAgICR7VElNRV9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAk
e1RJTUVfUFVCTElDX0xJQlJBUklFU30KLSAgRVhQT1JUX05BTUUKLSAgICB0aW1lCithYnNsX2Nj
X2xpYnJhcnkoCisgIE5BTUUKKyAgICBjaXZpbF90aW1lCisgIEhEUlMKKyAgICAiaW50ZXJuYWwv
Y2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZS5oIgorICAgICJpbnRlcm5hbC9jY3R6L2luY2x1
ZGUvY2N0ei9jaXZpbF90aW1lX2RldGFpbC5oIgorICBTUkNTCisgICJpbnRlcm5hbC9jY3R6L3Ny
Yy9jaXZpbF90aW1lX2RldGFpbC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BU
U30KICkKIAoraWYoQVBQTEUpCisgIGZpbmRfbGlicmFyeShDb3JlRm91bmRhdGlvbiBDb3JlRm91
bmRhdGlvbikKK2VuZGlmKCkKIAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgdGltZV96
b25lCisgIEhEUlMKKyAgICAiaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmgi
CisgICAgImludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3VyY2UuaCIKKyAg
U1JDUworICAgICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZml4ZWQuY2MiCisgICAgImlu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5oIgorICAgICJpbnRlcm5hbC9jY3R6L3Ny
Yy90aW1lX3pvbmVfZm9ybWF0LmNjIgorICAgICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVf
aWYuY2MiCisgICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pZi5oIgorICAgICJpbnRl
cm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW1wbC5jYyIKKyAgICAiaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX2ltcGwuaCIKKyAgICAiaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8u
Y2MiCisgICAgImludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmgiCisgICAgImludGVy
bmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmNjIgorICAgICJpbnRlcm5hbC9jY3R6L3NyYy90
aW1lX3pvbmVfbGliYy5oIgorICAgICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbG9va3Vw
LmNjIgorICAgICJpbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguY2MiCisgICAgImlu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5oIgorICAgICJpbnRlcm5hbC9jY3R6L3Ny
Yy90emZpbGUuaCIKKyAgICAiaW50ZXJuYWwvY2N0ei9zcmMvem9uZV9pbmZvX3NvdXJjZS5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUworICAgICQ8JDxQTEFU
Rk9STV9JRDpEYXJ3aW4+OiR7Q29yZUZvdW5kYXRpb259PgorKQogCi0jCi0jIyBURVNUUwotIwot
Ci0jIHRlc3QgdGltZV90ZXN0Ci1saXN0KEFQUEVORCBUSU1FX1RFU1RfU1JDCi0gICJ0aW1lX3Rl
c3QuY2MiCi0gICJjbG9ja190ZXN0LmNjIgotICAiZHVyYXRpb25fdGVzdC5jYyIKLSAgImZvcm1h
dF90ZXN0LmNjIgotICAidGltZV9ub3JtX3Rlc3QuY2MiCi0gICJ0aW1lX3Rlc3QuY2MiCi0gICJ0
aW1lX3pvbmVfdGVzdC5jYyIKLSAgImludGVybmFsL3Rlc3RfdXRpbC5jYyIKK2Fic2xfY2NfbGli
cmFyeSgKKyAgTkFNRQorICAgIHRlc3RfdXRpbAorICBIRFJTCisgICAgImludGVybmFsL3Rlc3Rf
dXRpbC5oIgorICBTUkNTCisgICAgImludGVybmFsL3Rlc3RfdXRpbC5jYyIKKyAgICAiaW50ZXJu
YWwvem9uZWluZm8uaW5jIgorICBDT1BUUworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQorICBE
RVBTCisgICAgYWJzbDo6dGltZQorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjp0aW1lX3pvbmUK
KyAgICBnbW9jaworICBURVNUT05MWQogKQotc2V0KFRJTUVfVEVTVF9QVUJMSUNfTElCUkFSSUVT
IGFic2w6OnRpbWUpCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCithYnNsX2NjX3Rlc3QoCisgIE5B
TUUKICAgICB0aW1lX3Rlc3QKLSAgU09VUkNFUwotICAgICR7VElNRV9URVNUX1NSQ30KLSAgUFVC
TElDX0xJQlJBUklFUwotICAgICR7VElNRV9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CisgIFNSQ1MK
KyAgICAiY2l2aWxfdGltZV90ZXN0LmNjIgorICAgICJjbG9ja190ZXN0LmNjIgorICAgICJkdXJh
dGlvbl90ZXN0LmNjIgorICAgICJmb3JtYXRfdGVzdC5jYyIKKyAgICAidGltZV90ZXN0LmNjIgor
ICAgICJ0aW1lX3pvbmVfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30K
KyAgREVQUworICAgIGFic2w6OnRlc3RfdXRpbAorICAgIGFic2w6OnRpbWUKKyAgICBhYnNsOjpi
YXNlCisgICAgYWJzbDo6Y29uZmlnCisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6
dGltZV96b25lCisgICAgZ21vY2tfbWFpbgogKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Np
dmlsX3RpbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2NpdmlsX3RpbWUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzUyN2Zj
MTE3NWMxYjJjYWFmZmFiOWVjNmJjNThiNTI5ZmY3NDJhYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvY2l2aWxfdGltZS5jYwpAQCAtMCwwICsxLDgzIEBACisvLyBDb3B5cmlnaHQgMjAx
OCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvdGltZS9jaXZpbF90aW1l
LmgiCisKKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC90aW1lL3RpbWUuaCIKKwor
bmFtZXNwYWNlIGFic2wgeworCituYW1lc3BhY2UgeworCisvLyBTaW5jZSBhIGNpdmlsIHRpbWUg
aGFzIGEgbGFyZ2VyIHllYXIgcmFuZ2UgdGhhbiBhYnNsOjpUaW1lICg2NC1iaXQgeWVhcnMgdnMK
Ky8vIDY0LWJpdCBzZWNvbmRzLCByZXNwZWN0aXZlbHkpIHdlIG5vcm1hbGl6ZSB5ZWFycyB0byBy
b3VnaGx5ICsvLSA0MDAgeWVhcnMKKy8vIGFyb3VuZCB0aGUgeWVhciAyNDAwLCB3aGljaCB3aWxs
IHByb2R1Y2UgYW4gZXF1aXZhbGVudCB5ZWFyIGluIGEgcmFuZ2UgdGhhdAorLy8gYWJzbDo6VGlt
ZSBjYW4gaGFuZGxlLgoraW5saW5lIGNpdmlsX3llYXJfdCBOb3JtYWxpemVZZWFyKGNpdmlsX3ll
YXJfdCB5ZWFyKSB7CisgIHJldHVybiAyNDAwICsgeWVhciAlIDQwMDsKK30KKworLy8gRm9ybWF0
cyB0aGUgZ2l2ZW4gQ2l2aWxTZWNvbmQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBmb3JtYXQuCitz
dGQ6OnN0cmluZyBGb3JtYXRZZWFyQW5kKHN0cmluZ192aWV3IGZtdCwgQ2l2aWxTZWNvbmQgY3Mp
IHsKKyAgY29uc3QgQ2l2aWxTZWNvbmQgbmNzKE5vcm1hbGl6ZVllYXIoY3MueWVhcigpKSwgY3Mu
bW9udGgoKSwgY3MuZGF5KCksCisgICAgICAgICAgICAgICAgICAgICAgICBjcy5ob3VyKCksIGNz
Lm1pbnV0ZSgpLCBjcy5zZWNvbmQoKSk7CisgIGNvbnN0IFRpbWVab25lIHV0YyA9IFVUQ1RpbWVa
b25lKCk7CisgIC8vIFRPRE8oYWJzbC10ZWFtKTogQXZvaWQgY29udmVyc2lvbiBvZiBmbXQgc3Rk
OjpzdHJpbmcuCisgIHJldHVybiBTdHJDYXQoY3MueWVhcigpLAorICAgICAgICAgICAgICAgIEZv
cm1hdFRpbWUoc3RkOjpzdHJpbmcoZm10KSwgRnJvbUNpdmlsKG5jcywgdXRjKSwgdXRjKSk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZQorCitzdGQ6OnN0cmluZyBGb3JtYXRDaXZpbFRpbWUoQ2l2aWxT
ZWNvbmQgYykgeworICByZXR1cm4gRm9ybWF0WWVhckFuZCgiLSVtLSVkVCVIOiVNOiVTIiwgYyk7
Cit9CitzdGQ6OnN0cmluZyBGb3JtYXRDaXZpbFRpbWUoQ2l2aWxNaW51dGUgYykgeworICByZXR1
cm4gRm9ybWF0WWVhckFuZCgiLSVtLSVkVCVIOiVNIiwgYyk7Cit9CitzdGQ6OnN0cmluZyBGb3Jt
YXRDaXZpbFRpbWUoQ2l2aWxIb3VyIGMpIHsKKyAgcmV0dXJuIEZvcm1hdFllYXJBbmQoIi0lbS0l
ZFQlSCIsIGMpOworfQorc3RkOjpzdHJpbmcgRm9ybWF0Q2l2aWxUaW1lKENpdmlsRGF5IGMpIHsg
cmV0dXJuIEZvcm1hdFllYXJBbmQoIi0lbS0lZCIsIGMpOyB9CitzdGQ6OnN0cmluZyBGb3JtYXRD
aXZpbFRpbWUoQ2l2aWxNb250aCBjKSB7IHJldHVybiBGb3JtYXRZZWFyQW5kKCItJW0iLCBjKTsg
fQorc3RkOjpzdHJpbmcgRm9ybWF0Q2l2aWxUaW1lKENpdmlsWWVhciBjKSB7IHJldHVybiBGb3Jt
YXRZZWFyQW5kKCIiLCBjKTsgfQorCituYW1lc3BhY2UgdGltZV9pbnRlcm5hbCB7CisKK3N0ZDo6
b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBDaXZpbFllYXIgeSkgeworICBy
ZXR1cm4gb3MgPDwgRm9ybWF0Q2l2aWxUaW1lKHkpOworfQorc3RkOjpvc3RyZWFtJiBvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYgb3MsIENpdmlsTW9udGggbSkgeworICByZXR1cm4gb3MgPDwgRm9y
bWF0Q2l2aWxUaW1lKG0pOworfQorc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVh
bSYgb3MsIENpdmlsRGF5IGQpIHsKKyAgcmV0dXJuIG9zIDw8IEZvcm1hdENpdmlsVGltZShkKTsK
K30KK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBDaXZpbEhvdXIg
aCkgeworICByZXR1cm4gb3MgPDwgRm9ybWF0Q2l2aWxUaW1lKGgpOworfQorc3RkOjpvc3RyZWFt
JiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIENpdmlsTWludXRlIG0pIHsKKyAgcmV0dXJu
IG9zIDw8IEZvcm1hdENpdmlsVGltZShtKTsKK30KK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0mIG9zLCBDaXZpbFNlY29uZCBzKSB7CisgIHJldHVybiBvcyA8PCBGb3JtYXRD
aXZpbFRpbWUocyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0aW1lX2ludGVybmFsCisKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2NpdmlsX3RpbWUuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvY2l2aWxfdGltZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlYWY3ZDg5ODU1MTkzYjU3ZWIxZmE3
OGQ0ZjI3YTc4ZDJhNDZlNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2NpdmlsX3Rp
bWUuaApAQCAtMCwwICsxLDQ4NSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IGNpdmlsX3RpbWUu
aAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmlu
ZXMgYWJzdHJhY3Rpb25zIGZvciBjb21wdXRpbmcgd2l0aCAiY2l2aWwgdGltZSIuCisvLyBUaGUg
dGVybSAiY2l2aWwgdGltZSIgcmVmZXJzIHRvIHRoZSBsZWdhbGx5IHJlY29nbml6ZWQgaHVtYW4t
c2NhbGUgdGltZQorLy8gdGhhdCBpcyByZXByZXNlbnRlZCBieSB0aGUgc2l4IGZpZWxkcyBgWVlZ
WS1NTS1ERCBoaDptbTpzc2AuIEEgImRhdGUiCisvLyBpcyBwZXJoYXBzIHRoZSBtb3N0IGNvbW1v
biBleGFtcGxlIG9mIGEgY2l2aWwgdGltZSAocmVwcmVzZW50ZWQgaGVyZSBhcworLy8gYW4gYGFi
c2w6OkNpdmlsRGF5YCkuCisvLworLy8gTW9kZXJuLWRheSBjaXZpbCB0aW1lIGZvbGxvd3MgdGhl
IEdyZWdvcmlhbiBDYWxlbmRhciBhbmQgaXMgYQorLy8gdGltZS16b25lLWluZGVwZW5kZW50IGNv
bmNlcHQ6IGEgY2l2aWwgdGltZSBvZiAiMjAxNS0wNi0wMSAxMjowMDowMCIsIGZvcgorLy8gZXhh
bXBsZSwgaXMgbm90IHRpZWQgdG8gYSB0aW1lIHpvbmUuIFB1dCBhbm90aGVyIHdheSwgYSBjaXZp
bCB0aW1lIGRvZXMgbm90CisvLyBtYXAgdG8gYSB1bmlxdWUgcG9pbnQgaW4gdGltZTsgYSBjaXZp
bCB0aW1lIG11c3QgYmUgbWFwcGVkIHRvIGFuIGFic29sdXRlCisvLyB0aW1lICp0aHJvdWdoKiBh
IHRpbWUgem9uZS4KKy8vCisvLyBCZWNhdXNlIGEgY2l2aWwgdGltZSBpcyB3aGF0IG1vc3QgcGVv
cGxlIHRoaW5rIG9mIGFzICJ0aW1lLCIgaXQgaXMgY29tbW9uIHRvCisvLyBtYXAgYWJzb2x1dGUg
dGltZXMgdG8gY2l2aWwgdGltZXMgdG8gcHJlc2VudCB0byB1c2Vycy4KKy8vCisvLyBUaW1lIHpv
bmVzIGRlZmluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYWJzb2x1dGUgYW5kIGNpdmlsIHRp
bWVzLiBHaXZlbiBhbgorLy8gYWJzb2x1dGUgb3IgY2l2aWwgdGltZSBhbmQgYSB0aW1lIHpvbmUs
IHlvdSBjYW4gY29tcHV0ZSB0aGUgb3RoZXIgdGltZToKKy8vCisvLyAgIENpdmlsIFRpbWUgPSBG
KEFic29sdXRlIFRpbWUsIFRpbWUgWm9uZSkKKy8vICAgQWJzb2x1dGUgVGltZSA9IEcoQ2l2aWwg
VGltZSwgVGltZSBab25lKQorLy8KKy8vIFRoZSBBYnNlaWwgdGltZSBsaWJyYXJ5IGFsbG93cyB5
b3UgdG8gY29uc3RydWN0IHN1Y2ggY2l2aWwgdGltZXMgZnJvbQorLy8gYWJzb2x1dGUgdGltZXM7
IGNvbnN1bHQgdGltZS5oIGZvciBzdWNoIGZ1bmN0aW9uYWxpdHkuCisvLworLy8gVGhpcyBsaWJy
YXJ5IHByb3ZpZGVzIHNpeCBjbGFzc2VzIGZvciBjb25zdHJ1Y3RpbmcgY2l2aWwtdGltZSBvYmpl
Y3RzLCBhbmQKKy8vIHByb3ZpZGVzIHNldmVyYWwgaGVscGVyIGZ1bmN0aW9ucyBmb3Igcm91bmRp
bmcsIGl0ZXJhdGluZywgYW5kIHBlcmZvcm1pbmcKKy8vIGFyaXRobWV0aWMgb24gY2l2aWwtdGlt
ZSBvYmplY3RzLCB3aGlsZSBhdm9pZGluZyBjb21wbGljYXRpb25zIGxpa2UKKy8vIGRheWxpZ2h0
LXNhdmluZyB0aW1lIChEU1QpOgorLy8KKy8vICAgKiBgYWJzbDo6Q2l2aWxTZWNvbmRgCisvLyAg
ICogYGFic2w6OkNpdmlsTWludXRlYAorLy8gICAqIGBhYnNsOjpDaXZpbEhvdXJgCisvLyAgICog
YGFic2w6OkNpdmlsRGF5YAorLy8gICAqIGBhYnNsOjpDaXZpbE1vbnRoYAorLy8gICAqIGBhYnNs
OjpDaXZpbFllYXJgCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIC8vIENvbnN0cnVjdCBhIGNp
dmlsLXRpbWUgb2JqZWN0IGZvciBhIHNwZWNpZmljIGRheQorLy8gICBjb25zdCBhYnNsOjpDaXZp
bERheSBjZCgxOTY5LCAwNywgMjApOworLy8KKy8vICAgLy8gQ29uc3RydWN0IGEgY2l2aWwtdGlt
ZSBvYmplY3QgZm9yIGEgc3BlY2lmaWMgc2Vjb25kCisvLyAgIGNvbnN0IGFic2w6OkNpdmlsU2Vj
b25kIGNkKDIwMTgsIDgsIDEsIDEyLCAwLCAxKTsKKy8vCisvLyBOb3RlOiBJbiBDKysxNCBhbmQg
bGF0ZXIsIHRoaXMgbGlicmFyeSBpcyB1c2FibGUgaW4gYSBjb25zdGV4cHIgY29udGV4dC4KKy8v
CisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gVmFsaWQgaW4gQysrMTQKKy8vICAgY29uc3RleHBy
IGFic2w6OkNpdmlsRGF5IGNkKDE5NjksIDA3LCAyMCk7CisKKyNpZm5kZWYgQUJTTF9USU1FX0NJ
VklMX1RJTUVfSF8KKyNkZWZpbmUgQUJTTF9USU1FX0NJVklMX1RJTUVfSF8KKworI2luY2x1ZGUg
PHN0cmluZz4KKworI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorI2luY2x1
ZGUgImFic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgiCisK
K25hbWVzcGFjZSBhYnNsIHsKKworbmFtZXNwYWNlIHRpbWVfaW50ZXJuYWwgeworc3RydWN0IHNl
Y29uZF90YWcgOiBjY3R6OjpkZXRhaWw6OnNlY29uZF90YWcge307CitzdHJ1Y3QgbWludXRlX3Rh
ZyA6IHNlY29uZF90YWcsIGNjdHo6OmRldGFpbDo6bWludXRlX3RhZyB7fTsKK3N0cnVjdCBob3Vy
X3RhZyA6IG1pbnV0ZV90YWcsIGNjdHo6OmRldGFpbDo6aG91cl90YWcge307CitzdHJ1Y3QgZGF5
X3RhZyA6IGhvdXJfdGFnLCBjY3R6OjpkZXRhaWw6OmRheV90YWcge307CitzdHJ1Y3QgbW9udGhf
dGFnIDogZGF5X3RhZywgY2N0ejo6ZGV0YWlsOjptb250aF90YWcge307CitzdHJ1Y3QgeWVhcl90
YWcgOiBtb250aF90YWcsIGNjdHo6OmRldGFpbDo6eWVhcl90YWcge307Cit9ICAvLyBuYW1lc3Bh
Y2UgdGltZV9pbnRlcm5hbAorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ2l2aWxTZWNv
bmQsIENpdmlsTWludXRlLCBDaXZpbEhvdXIsIENpdmlsRGF5LCBDaXZpbE1vbnRoLCBDaXZpbFll
YXIKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRWFjaCBvZiB0aGVzZSBjaXZpbC10
aW1lIHR5cGVzIGlzIGEgc2ltcGxlIHZhbHVlIHR5cGUgd2l0aCB0aGUgc2FtZQorLy8gaW50ZXJm
YWNlIGZvciBjb25zdHJ1Y3Rpb24gYW5kIHRoZSBzYW1lIHNpeCBhY2Nlc3NvcnMgZm9yIGVhY2gg
b2YgdGhlIGNpdmlsCisvLyB0aW1lIGZpZWxkcyAoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWlu
dXRlLCBhbmQgc2Vjb25kLCBha2EgWU1ESE1TKS4gVGhlc2UKKy8vIGNsYXNzZXMgZGlmZmVyIG9u
bHkgaW4gdGhlaXIgYWxpZ25tZW50LCB3aGljaCBpcyBpbmRpY2F0ZWQgYnkgdGhlIHR5cGUgbmFt
ZQorLy8gYW5kIHNwZWNpZmllcyB0aGUgZmllbGQgb24gd2hpY2ggYXJpdGhtZXRpYyBvcGVyYXRl
cy4KKy8vCisvLyBDT05TVFJVQ1RJT04KKy8vCisvLyBFYWNoIG9mIHRoZSBjaXZpbC10aW1lIHR5
cGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCBpbiB0d28gd2F5czogYnkgZGlyZWN0bHkKKy8vIHBhc3Np
bmcgdG8gdGhlIGNvbnN0cnVjdG9yIHVwIHRvIHNpeCBpbnRlZ2VycyByZXByZXNlbnRpbmcgdGhl
IFlNREhNUyBmaWVsZHMsCisvLyBvciBieSBjb3B5aW5nIHRoZSBZTURITVMgZmllbGRzIGZyb20g
YSBkaWZmZXJlbnRseSBhbGlnbmVkIGNpdmlsLXRpbWUgdHlwZS4KKy8vIE9taXR0ZWQgZmllbGRz
IGFyZSBhc3NpZ25lZCB0aGVpciBtaW5pbXVtIHZhbGlkIHZhbHVlLiBIb3VycywgbWludXRlcywg
YW5kCisvLyBzZWNvbmRzIHdpbGwgYmUgc2V0IHRvIDAsIG1vbnRoIGFuZCBkYXkgd2lsbCBiZSBz
ZXQgdG8gMS4gU2luY2UgdGhlcmUgaXMgbm8KKy8vIG1pbmltdW0geWVhciwgdGhlIGRlZmF1bHQg
aXMgMTk3MC4KKy8vCisvLyBFeGFtcGxlczoKKy8vCisvLyAgIGFic2w6OkNpdmlsRGF5IGRlZmF1
bHRfdmFsdWU7ICAgICAgICAgICAgICAgLy8gMTk3MC0wMS0wMSAwMDowMDowMAorLy8KKy8vICAg
YWJzbDo6Q2l2aWxEYXkgYSgyMDE1LCAyLCAzKTsgICAgICAgICAgICAgICAvLyAyMDE1LTAyLTAz
IDAwOjAwOjAwCisvLyAgIGFic2w6OkNpdmlsRGF5IGIoMjAxNSwgMiwgMywgNCwgNSwgNik7ICAg
ICAgLy8gMjAxNS0wMi0wMyAwMDowMDowMAorLy8gICBhYnNsOjpDaXZpbERheSBjKDIwMTUpOyAg
ICAgICAgICAgICAgICAgICAgIC8vIDIwMTUtMDEtMDEgMDA6MDA6MDAKKy8vCisvLyAgIGFic2w6
OkNpdmlsU2Vjb25kIHNzKDIwMTUsIDIsIDMsIDQsIDUsIDYpOyAgLy8gMjAxNS0wMi0wMyAwNDow
NTowNgorLy8gICBhYnNsOjpDaXZpbE1pbnV0ZSBtbShzcyk7ICAgICAgICAgICAgICAgICAgIC8v
IDIwMTUtMDItMDMgMDQ6MDU6MDAKKy8vICAgYWJzbDo6Q2l2aWxIb3VyIGhoKG1tKTsgICAgICAg
ICAgICAgICAgICAgICAvLyAyMDE1LTAyLTAzIDA0OjAwOjAwCisvLyAgIGFic2w6OkNpdmlsRGF5
IGQoaGgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gMjAxNS0wMi0wMyAwMDowMDowMAorLy8g
ICBhYnNsOjpDaXZpbE1vbnRoIG0oZCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIDIwMTUtMDIt
MDEgMDA6MDA6MDAKKy8vICAgYWJzbDo6Q2l2aWxZZWFyIHkobSk7ICAgICAgICAgICAgICAgICAg
ICAgICAvLyAyMDE1LTAxLTAxIDAwOjAwOjAwCisvLworLy8gICBtID0gYWJzbDo6Q2l2aWxNb250
aCh5KTsgICAgICAgICAgICAgICAgICAgIC8vIDIwMTUtMDEtMDEgMDA6MDA6MDAKKy8vICAgZCA9
IGFic2w6OkNpdmlsRGF5KG0pOyAgICAgICAgICAgICAgICAgICAgICAvLyAyMDE1LTAxLTAxIDAw
OjAwOjAwCisvLyAgIGhoID0gYWJzbDo6Q2l2aWxIb3VyKGQpOyAgICAgICAgICAgICAgICAgICAg
Ly8gMjAxNS0wMS0wMSAwMDowMDowMAorLy8gICBtbSA9IGFic2w6OkNpdmlsTWludXRlKGhoKTsg
ICAgICAgICAgICAgICAgIC8vIDIwMTUtMDEtMDEgMDA6MDA6MDAKKy8vICAgc3MgPSBhYnNsOjpD
aXZpbFNlY29uZChtbSk7ICAgICAgICAgICAgICAgICAvLyAyMDE1LTAxLTAxIDAwOjAwOjAwCisv
LworLy8gRWFjaCBjaXZpbC10aW1lIGNsYXNzIGlzIGFsaWduZWQgdG8gdGhlIGNpdmlsLXRpbWUg
ZmllbGQgaW5kaWNhdGVkIGluIHRoZQorLy8gY2xhc3MncyBuYW1lIGFmdGVyIG5vcm1hbGl6YXRp
b24uIEFsaWdubWVudCBpcyBwZXJmb3JtZWQgYnkgc2V0dGluZyBhbGwgdGhlCisvLyBpbmZlcmlv
ciBmaWVsZHMgdG8gdGhlaXIgbWluaW11bSB2YWxpZCB2YWx1ZSAoYXMgZGVzY3JpYmVkIGFib3Zl
KS4gVGhlCisvLyBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzIG9mIGhvdyBlYWNoIG9mIHRoZSBzaXgg
dHlwZXMgd291bGQgYWxpZ24gdGhlIGZpZWxkcworLy8gcmVwcmVzZW50aW5nIE5vdmVtYmVyIDIy
LCAyMDE1IGF0IDEyOjM0OjU2IGluIHRoZSBhZnRlcm5vb24uIChOb3RlOiB0aGUKKy8vIHN0cmlu
ZyBmb3JtYXQgdXNlZCBoZXJlIGlzIG5vdCBpbXBvcnRhbnQ7IGl0J3MganVzdCBhIHNob3J0aGFu
ZCB3YXkgb2YKKy8vIHNob3dpbmcgdGhlIHNpeCBZTURITVMgZmllbGRzLikKKy8vCisvLyAgIGFi
c2w6OkNpdmlsU2Vjb25kICAgOiAyMDE1LTExLTIyIDEyOjM0OjU2CisvLyAgIGFic2w6OkNpdmls
TWludXRlICAgOiAyMDE1LTExLTIyIDEyOjM0OjAwCisvLyAgIGFic2w6OkNpdmlsSG91ciAgICAg
OiAyMDE1LTExLTIyIDEyOjAwOjAwCisvLyAgIGFic2w6OkNpdmlsRGF5ICAgICAgOiAyMDE1LTEx
LTIyIDAwOjAwOjAwCisvLyAgIGFic2w6OkNpdmlsTW9udGggICAgOiAyMDE1LTExLTAxIDAwOjAw
OjAwCisvLyAgIGFic2w6OkNpdmlsWWVhciAgICAgOiAyMDE1LTAxLTAxIDAwOjAwOjAwCisvLwor
Ly8gRWFjaCBjaXZpbC10aW1lIHR5cGUgcGVyZm9ybXMgYXJpdGhtZXRpYyBvbiB0aGUgZmllbGQg
dG8gd2hpY2ggaXQgaXMKKy8vIGFsaWduZWQuIFRoaXMgbWVhbnMgdGhhdCBhZGRpbmcgMSB0byBh
biBhYnNsOjpDaXZpbERheSBpbmNyZW1lbnRzIHRoZSBkYXkKKy8vIGZpZWxkIChub3JtYWxpemlu
ZyBhcyBuZWNlc3NhcnkpLCBhbmQgc3VidHJhY3RpbmcgNyBmcm9tIGFuIGFic2w6OkNpdmlsTW9u
dGgKKy8vIG9wZXJhdGVzIG9uIHRoZSBtb250aCBmaWVsZCAobm9ybWFsaXppbmcgYXMgbmVjZXNz
YXJ5KS4gQWxsIGFyaXRobWV0aWMKKy8vIHByb2R1Y2VzIGEgdmFsaWQgY2l2aWwgdGltZS4gRGlm
ZmVyZW5jZSByZXF1aXJlcyB0d28gc2ltaWxhcmx5IGFsaWduZWQKKy8vIGNpdmlsLXRpbWUgb2Jq
ZWN0cyBhbmQgcmV0dXJucyB0aGUgc2NhbGFyIGFuc3dlciBpbiB1bml0cyBvZiB0aGUgb2JqZWN0
cycKKy8vIGFsaWdubWVudC4gRm9yIGV4YW1wbGUsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdv
IGFic2w6OkNpdmlsSG91ciBvYmplY3RzCisvLyB3aWxsIGdpdmUgYW4gYW5zd2VyIGluIHVuaXRz
IG9mIGNpdmlsIGhvdXJzLgorLy8KKy8vIEFMSUdOTUVOVCBDT05WRVJTSU9OCisvLworLy8gVGhl
IGFsaWdubWVudCBvZiBhIGNpdmlsLXRpbWUgb2JqZWN0IGNhbm5vdCBjaGFuZ2UsIGJ1dCB0aGUg
b2JqZWN0IG1heSBiZQorLy8gdXNlZCB0byBjb25zdHJ1Y3QgYSBuZXcgb2JqZWN0IHdpdGggYSBk
aWZmZXJlbnQgYWxpZ25tZW50LiBUaGlzIGlzIHJlZmVycmVkCisvLyB0byBhcyAicmVhbGlnbmlu
ZyIuIFdoZW4gcmVhbGlnbmluZyB0byBhIHR5cGUgd2l0aCB0aGUgc2FtZSBvciBtb3JlCisvLyBw
cmVjaXNpb24gKGUuZy4sIGFic2w6OkNpdmlsRGF5IC0+IGFic2w6OkNpdmlsU2Vjb25kKSwgdGhl
IGNvbnZlcnNpb24gbWF5IGJlCisvLyBwZXJmb3JtZWQgaW1wbGljaXRseSBzaW5jZSBubyBpbmZv
cm1hdGlvbiBpcyBsb3N0LiBIb3dldmVyLCBpZiBpbmZvcm1hdGlvbgorLy8gY291bGQgYmUgZGlz
Y2FyZGVkIChlLmcuLCBDaXZpbFNlY29uZCAtPiBDaXZpbERheSksIHRoZSBjb252ZXJzaW9uIG11
c3QKKy8vIGJlIGV4cGxpY2l0IGF0IHRoZSBjYWxsIHNpdGUuCisvLworLy8gRXhhbXBsZXM6Cisv
LworLy8gICB2b2lkIFVzZURheShhYnNsOjpDaXZpbERheSBkYXkpOworLy8KKy8vICAgYWJzbDo6
Q2l2aWxTZWNvbmQgY3M7CisvLyAgIFVzZURheShjcyk7ICAgICAgICAgICAgICAgICAgLy8gV29u
J3QgY29tcGlsZSBiZWNhdXNlIGRhdGEgbWF5IGJlIGRpc2NhcmRlZAorLy8gICBVc2VEYXkoYWJz
bDo6Q2l2aWxEYXkoY3MpKTsgIC8vIE9LOiBleHBsaWNpdCBjb252ZXJzaW9uCisvLworLy8gICBh
YnNsOjpDaXZpbERheSBjZDsKKy8vICAgVXNlRGF5KGNkKTsgICAgICAgICAgICAgICAgICAvLyBP
Szogbm8gY29udmVyc2lvbiBuZWVkZWQKKy8vCisvLyAgIGFic2w6OkNpdmlsTW9udGggY207Cisv
LyAgIFVzZURheShjbSk7ICAgICAgICAgICAgICAgICAgLy8gT0s6IGltcGxpY2l0IGNvbnZlcnNp
b24gdG8gYWJzbDo6Q2l2aWxEYXkKKy8vCisvLyBOT1JNQUxJWkFUSU9OCisvLworLy8gTm9ybWFs
aXphdGlvbiB0YWtlcyBpbnZhbGlkIHZhbHVlcyBhbmQgYWRqdXN0cyB0aGVtIHRvIHByb2R1Y2Ug
dmFsaWQgdmFsdWVzLgorLy8gV2l0aGluIHRoZSBjaXZpbC10aW1lIGxpYnJhcnksIGludGVnZXIg
YXJndW1lbnRzIHBhc3NlZCB0byB0aGUgQ2l2aWwqCisvLyBjb25zdHJ1Y3RvcnMgbWF5IGJlIG91
dC1vZi1yYW5nZSwgaW4gd2hpY2ggY2FzZSB0aGV5IGFyZSBub3JtYWxpemVkIGJ5CisvLyBjYXJy
eWluZyBvdmVyZmxvdyBpbnRvIGEgZmllbGQgb2YgY291cnNlciBncmFudWxhcml0eSB0byBwcm9k
dWNlIHZhbGlkCisvLyBjaXZpbC10aW1lIG9iamVjdHMuIFRoaXMgbm9ybWFsaXphdGlvbiBlbmFi
bGVzIG5hdHVyYWwgYXJpdGhtZXRpYyBvbgorLy8gY29uc3RydWN0b3IgYXJndW1lbnRzIHdpdGhv
dXQgd29ycnlpbmcgYWJvdXQgdGhlIGZpZWxkJ3MgcmFuZ2UuCisvLworLy8gRXhhbXBsZXM6Cisv
LworLy8gICAvLyBPdXQtb2YtcmFuZ2U7IG5vcm1hbGl6ZWQgdG8gMjAxNi0xMS0wMQorLy8gICBh
YnNsOjpDaXZpbERheSBkKDIwMTYsIDEwLCAzMik7CisvLyAgIC8vIE91dC1vZi1yYW5nZSwgbmVn
YXRpdmU6IG5vcm1hbGl6ZWQgdG8gMjAxNi0xMC0zMFQyMworLy8gICBhYnNsOjpDaXZpbEhvdXIg
aDEoMjAxNiwgMTAsIDMxLCAtMSk7CisvLyAgIC8vIE5vcm1hbGl6YXRpb24gaXMgY3VtdWxhdGl2
ZTogbm9ybWFsaXplZCB0byAyMDE2LTEwLTMwVDIzCisvLyAgIGFic2w6OkNpdmlsSG91ciBoMigy
MDE2LCAxMCwgMzIsIC0yNSk7CisvLworLy8gTm90ZTogSWYgbm9ybWFsaXphdGlvbiBpcyB1bmRl
c2lyZWQsIHlvdSBjYW4gc2lnbmFsIGFuIGVycm9yIGJ5IGNvbXBhcmluZworLy8gdGhlIGNvbnN0
cnVjdG9yIGFyZ3VtZW50cyB0byB0aGUgbm9ybWFsaXplZCB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhl
IFlNREhNUworLy8gcHJvcGVydGllcy4KKy8vCisvLyBDT01QQVJJU09OCisvLworLy8gQ29tcGFy
aXNvbiBiZXR3ZWVuIGNpdmlsLXRpbWUgb2JqZWN0cyBjb25zaWRlcnMgYWxsIHNpeCBZTURITVMg
ZmllbGRzLAorLy8gcmVnYXJkbGVzcyBvZiB0aGUgdHlwZSdzIGFsaWdubWVudC4gQ29tcGFyaXNv
biBiZXR3ZWVuIGRpZmZlcmVudGx5IGFsaWduZWQKKy8vIGNpdmlsLXRpbWUgdHlwZXMgaXMgYWxs
b3dlZC4KKy8vCisvLyBFeGFtcGxlczoKKy8vCisvLyAgIGFic2w6OkNpdmlsRGF5IGZlYl8zKDIw
MTUsIDIsIDMpOyAgLy8gMjAxNS0wMi0wMyAwMDowMDowMAorLy8gICBhYnNsOjpDaXZpbERheSBt
YXJfNCgyMDE1LCAzLCA0KTsgIC8vIDIwMTUtMDMtMDQgMDA6MDA6MDAKKy8vICAgLy8gZmViXzMg
PCBtYXJfNAorLy8gICAvLyBhYnNsOjpDaXZpbFllYXIoZmViXzMpID09IGFic2w6OkNpdmlsWWVh
cihtYXJfNCkKKy8vCisvLyAgIGFic2w6OkNpdmlsU2Vjb25kIGZlYl8zX25vb24oMjAxNSwgMiwg
MywgMTIsIDAsIDApOyAgLy8gMjAxNS0wMi0wMyAxMjowMDowMAorLy8gICAvLyBmZWJfMyA8IGZl
Yl8zX25vb24KKy8vICAgLy8gZmViXzMgPT0gYWJzbDo6Q2l2aWxEYXkoZmViXzNfbm9vbikKKy8v
CisvLyAgIC8vIEl0ZXJhdGVzIGFsbCB0aGUgZGF5cyBvZiBGZWJydWFyeSAyMDE1LgorLy8gICBm
b3IgKGFic2w6OkNpdmlsRGF5IGQoMjAxNSwgMiwgMSk7IGQgPCBhYnNsOjpDaXZpbE1vbnRoKDIw
MTUsIDMpOyArK2QpIHsKKy8vICAgICAvLyAuLi4KKy8vICAgfQorLy8KKy8vIEFSSVRITUVUSUMK
Ky8vCisvLyBDaXZpbC10aW1lIHR5cGVzIHN1cHBvcnQgbmF0dXJhbCBhcml0aG1ldGljIG9wZXJh
dG9ycyBzdWNoIGFzIGFkZGl0aW9uLAorLy8gc3VidHJhY3Rpb24sIGFuZCBkaWZmZXJlbmNlLiBB
cml0aG1ldGljIG9wZXJhdGVzIG9uIHRoZSBjaXZpbC10aW1lIGZpZWxkCisvLyBpbmRpY2F0ZWQg
aW4gdGhlIHR5cGUncyBuYW1lLiBEaWZmZXJlbmNlIG9wZXJhdG9ycyByZXF1aXJlIGFyZ3VtZW50
cyB3aXRoCisvLyB0aGUgc2FtZSBhbGlnbm1lbnQgYW5kIHJldHVybiB0aGUgYW5zd2VyIGluIHVu
aXRzIG9mIHRoZSBhbGlnbm1lbnQuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkNp
dmlsRGF5IGEoMjAxNSwgMiwgMyk7CisvLyAgICsrYTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAyMDE1LTAyLTA0IDAwOjAwOjAwCisvLyAgIC0tYTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAyMDE1LTAyLTAzIDAwOjAwOjAwCisvLyAgIGFic2w6OkNpdmlsRGF5IGIg
PSBhICsgMTsgICAgICAgICAvLyAyMDE1LTAyLTA0IDAwOjAwOjAwCisvLyAgIGFic2w6OkNpdmls
RGF5IGMgPSAxICsgYjsgICAgICAgICAvLyAyMDE1LTAyLTA1IDAwOjAwOjAwCisvLyAgIGludCBu
ID0gYyAtIGE7ICAgICAgICAgICAgICAgICAgICAvLyBuID0gMiAoY2l2aWwgZGF5cykKKy8vICAg
aW50IG0gPSBjIC0gYWJzbDo6Q2l2aWxNb250aChjKTsgIC8vIFdvbid0IGNvbXBpbGU6IGRpZmZl
cmVudCB0eXBlcy4KKy8vCisvLyBBQ0NFU1NPUlMKKy8vCisvLyBFYWNoIGNpdmlsLXRpbWUgdHlw
ZSBoYXMgYWNjZXNzb3JzIGZvciBhbGwgc2l4IG9mIHRoZSBjaXZpbC10aW1lIGZpZWxkczoKKy8v
IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgYW5kIHNlY29uZC4KKy8vCisvLyBjaXZp
bF95ZWFyX3QgeWVhcigpCisvLyBpbnQgICAgICAgICAgbW9udGgoKQorLy8gaW50ICAgICAgICAg
IGRheSgpCisvLyBpbnQgICAgICAgICAgaG91cigpCisvLyBpbnQgICAgICAgICAgbWludXRlKCkK
Ky8vIGludCAgICAgICAgICBzZWNvbmQoKQorLy8KKy8vIFJlY2FsbCB0aGF0IGZpZWxkcyBpbmZl
cmlvciB0byB0aGUgdHlwZSdzIGFsaWdtZW50IHdpbGwgYmUgc2V0IHRvIHRoZWlyCisvLyBtaW5p
bXVtIHZhbGlkIHZhbHVlLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhYnNsOjpDaXZpbERh
eSBkKDIwMTUsIDYsIDI4KTsKKy8vICAgLy8gZC55ZWFyKCkgPT0gMjAxNQorLy8gICAvLyBkLm1v
bnRoKCkgPT0gNgorLy8gICAvLyBkLmRheSgpID09IDI4CisvLyAgIC8vIGQuaG91cigpID09IDAK
Ky8vICAgLy8gZC5taW51dGUoKSA9PSAwCisvLyAgIC8vIGQuc2Vjb25kKCkgPT0gMAorLy8KKy8v
IENBU0UgU1RVRFk6IEFkZGluZyBhIG1vbnRoIHRvIEphbnVhcnkgMzEuCisvLworLy8gT25lIG9m
IHRoZSBjbGFzc2ljIHF1ZXN0aW9ucyB0aGF0IGFyaXNlcyB3aGVuIGNvbnNpZGVyaW5nIGEgY2l2
aWwgdGltZQorLy8gbGlicmFyeSAob3IgYSBkYXRlIGxpYnJhcnkgb3IgYSBkYXRlL3RpbWUgbGli
cmFyeSkgaXMgdGhpczoKKy8vICAgIldoYXQgaXMgdGhlIHJlc3VsdCBvZiBhZGRpbmcgYSBtb250
aCB0byBKYW51YXJ5IDMxPyIKKy8vIFRoaXMgaXMgYW4gaW50ZXJlc3RpbmcgcXVlc3Rpb24gYmVj
YXVzZSBpdCBpcyB1bmNsZWFyIHdoYXQgaXMgbWVhbnQgYnkgYQorLy8gIm1vbnRoIiwgYW5kIHNl
dmVyYWwgZGlmZmVyZW50IGFuc3dlcnMgYXJlIHBvc3NpYmxlLCBkZXBlbmRpbmcgb24gY29udGV4
dDoKKy8vCisvLyAgIDEuIE1hcmNoIDMgKG9yIDIgaWYgYSBsZWFwIHllYXIpLCBpZiAiYWRkIGEg
bW9udGgiIG1lYW5zIHRvIGFkZCBhIG1vbnRoIHRvCisvLyAgICAgIHRoZSBjdXJyZW50IG1vbnRo
LCBhbmQgYWRqdXN0IHRoZSBkYXRlIHRvIG92ZXJmbG93IHRoZSBleHRyYSBkYXlzIGludG8KKy8v
ICAgICAgTWFyY2guIEluIHRoaXMgY2FzZSB0aGUgcmVzdWx0IG9mICJGZWJydWFyeSAzMSIgd291
bGQgYmUgbm9ybWFsaXplZCBhcworLy8gICAgICB3aXRoaW4gdGhlIGNpdmlsLXRpbWUgbGlicmFy
eS4KKy8vICAgMi4gRmVicnVhcnkgMjggKG9yIDI5IGlmIGEgbGVhcCB5ZWFyKSwgaWYgImFkZCBh
IG1vbnRoIiBtZWFucyB0byBhZGQgYQorLy8gICAgICBtb250aCwgYW5kIGFkanVzdCB0aGUgZGF0
ZSB3aGlsZSBob2xkaW5nIHRoZSByZXN1bHRpbmcgbW9udGggY29uc3RhbnQuCisvLyAgICAgIElu
IHRoaXMgY2FzZSwgdGhlIHJlc3VsdCBvZiAiRmVicnVhcnkgMzEiIHdvdWxkIGJlIHRydW5jYXRl
ZCB0byB0aGUgbGFzdAorLy8gICAgICBkYXkgaW4gRmVicnVhcnkuCisvLyAgIDMuIEFuIGVycm9y
LiBUaGUgY2FsbGVyIG1heSBnZXQgc29tZSBlcnJvciwgYW4gZXhjZXB0aW9uLCBhbiBpbnZhbGlk
IGRhdGUKKy8vICAgICAgb2JqZWN0LCBvciBwZXJoYXBzIHJldHVybiBgZmFsc2VgLiBUaGlzIG1h
eSBtYWtlIHNlbnNlIGJlY2F1c2UgdGhlcmUgaXMKKy8vICAgICAgbm8gc2luZ2xlIHVuYW1iaWd1
b3VzbHkgY29ycmVjdCBhbnN3ZXIgdG8gdGhlIHF1ZXN0aW9uLgorLy8KKy8vIFByYWN0aWNhbGx5
IHNwZWFraW5nLCBhbnkgYW5zd2VyIHRoYXQgaXMgbm90IHdoYXQgdGhlIHByb2dyYW1tZXIgaW50
ZW5kZWQKKy8vIGlzIHRoZSB3cm9uZyBhbnN3ZXIuCisvLworLy8gVGhlIEFic2VpbCB0aW1lIGxp
YnJhcnkgYXZvaWRzIHRoaXMgcHJvYmxlbSBieSBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0bworLy8g
YXNrIGFtYmlndW91cyBxdWVzdGlvbnMuIEFsbCBjaXZpbC10aW1lIG9iamVjdHMgYXJlIGFsaWdu
ZWQgdG8gYSBwYXJ0aWN1bGFyCisvLyBjaXZpbC1maWVsZCBib3VuZGFyeSAoc3VjaCBhcyBhbGln
bmVkIHRvIGEgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLAorLy8gb3Igc2Vjb25kKSwg
YW5kIGFyaXRobWV0aWMgb3BlcmF0ZXMgb24gdGhlIGZpZWxkIHRvIHdoaWNoIHRoZSBvYmplY3Qg
aXMKKy8vIGFsaWduZWQuIFRoaXMgbWVhbnMgdGhhdCBpbiBvcmRlciB0byAiYWRkIGEgbW9udGgi
IHRoZSBvYmplY3QgbXVzdCBmaXJzdCBiZQorLy8gYWxpZ25lZCB0byBhIG1vbnRoIGJvdW5kYXJ5
LCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBmaXJzdCBkYXkgb2YgdGhhdAorLy8gbW9udGgu
CisvLworLy8gT2YgY291cnNlLCB0aGVyZSBhcmUgd2F5cyB0byBjb21wdXRlIGFuIGFuc3dlciB0
aGUgcXVlc3Rpb24gYXQgaGFuZCB1c2luZworLy8gdGhpcyBBYnNlaWwgdGltZSBsaWJyYXJ5LCBi
dXQgdGhleSByZXF1aXJlIHRoZSBwcm9ncmFtbWVyIHRvIGJlIGV4cGxpY2l0CisvLyBhYm91dCB0
aGUgYW5zd2VyIHRoZXkgZXhwZWN0LiBUbyBpbGx1c3RyYXRlLCBsZXQncyBzZWUgaG93IHRvIGNv
bXB1dGUgYWxsCisvLyB0aHJlZSBvZiB0aGUgYWJvdmUgcG9zc2libGUgYW5zd2VycyB0byB0aGUg
cXVlc3Rpb24gb2YgIkphbiAzMSBwbHVzIDEKKy8vIG1vbnRoIjoKKy8vCisvLyBFeGFtcGxlOgor
Ly8KKy8vICAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgZCgyMDE1LCAxLCAzMSk7CisvLworLy8gICAv
LyBBbnN3ZXIgMToKKy8vICAgLy8gQWRkIDEgdG8gdGhlIG1vbnRoIGZpZWxkIGluIHRoZSBjb25z
dHJ1Y3RvciwgYW5kIHJlbHkgb24gbm9ybWFsaXphdGlvbi4KKy8vICAgY29uc3QgYXV0byBub3Jt
YWxpemVkID0gYWJzbDo6Q2l2aWxEYXkoZC55ZWFyKCksIGQubW9udGgoKSArIDEsIGQuZGF5KCkp
OworLy8gICAvLyBub3JtYWxpemVkID09IDIwMTUtMDMtMDMgKGFrYSBGZWIgMzEpCisvLworLy8g
ICAvLyBBbnN3ZXIgMjoKKy8vICAgLy8gQWRkIDEgdG8gbW9udGggZmllbGQsIGNhcHBpbmcgdG8g
dGhlIGVuZCBvZiBuZXh0IG1vbnRoLgorLy8gICBjb25zdCBhdXRvIG5leHRfbW9udGggPSBhYnNs
OjpDaXZpbE1vbnRoKGQpICsgMTsKKy8vICAgY29uc3QgYXV0byBsYXN0X2RheV9vZl9uZXh0X21v
bnRoID0gYWJzbDo6Q2l2aWxEYXkobmV4dF9tb250aCArIDEpIC0gMTsKKy8vICAgY29uc3QgYXV0
byBjYXBwZWQgPSBzdGQ6Om1pbihub3JtYWxpemVkLCBsYXN0X2RheV9vZl9uZXh0X21vbnRoKTsK
Ky8vICAgLy8gY2FwcGVkID09IDIwMTUtMDItMjgKKy8vCisvLyAgIC8vIEFuc3dlciAzOgorLy8g
ICAvLyBTaWduYWwgYW4gZXJyb3IgaWYgdGhlIG5vcm1hbGl6ZWQgYW5zd2VyIGlzIG5vdCBpbiBu
ZXh0IG1vbnRoLgorLy8gICBpZiAoYWJzbDo6Q2l2aWxNb250aChub3JtYWxpemVkKSAhPSBuZXh0
X21vbnRoKSB7CisvLyAgICAgLy8gZXJyb3IsIG1vbnRoIG92ZXJmbG93CisvLyAgIH0KKy8vCit1
c2luZyBDaXZpbFNlY29uZCA9CisgICAgdGltZV9pbnRlcm5hbDo6Y2N0ejo6ZGV0YWlsOjpjaXZp
bF90aW1lPHRpbWVfaW50ZXJuYWw6OnNlY29uZF90YWc+OwordXNpbmcgQ2l2aWxNaW51dGUgPQor
ICAgIHRpbWVfaW50ZXJuYWw6OmNjdHo6OmRldGFpbDo6Y2l2aWxfdGltZTx0aW1lX2ludGVybmFs
OjptaW51dGVfdGFnPjsKK3VzaW5nIENpdmlsSG91ciA9CisgICAgdGltZV9pbnRlcm5hbDo6Y2N0
ejo6ZGV0YWlsOjpjaXZpbF90aW1lPHRpbWVfaW50ZXJuYWw6OmhvdXJfdGFnPjsKK3VzaW5nIENp
dmlsRGF5ID0KKyAgICB0aW1lX2ludGVybmFsOjpjY3R6OjpkZXRhaWw6OmNpdmlsX3RpbWU8dGlt
ZV9pbnRlcm5hbDo6ZGF5X3RhZz47Cit1c2luZyBDaXZpbE1vbnRoID0KKyAgICB0aW1lX2ludGVy
bmFsOjpjY3R6OjpkZXRhaWw6OmNpdmlsX3RpbWU8dGltZV9pbnRlcm5hbDo6bW9udGhfdGFnPjsK
K3VzaW5nIENpdmlsWWVhciA9CisgICAgdGltZV9pbnRlcm5hbDo6Y2N0ejo6ZGV0YWlsOjpjaXZp
bF90aW1lPHRpbWVfaW50ZXJuYWw6OnllYXJfdGFnPjsKKworLy8gY2l2aWxfeWVhcl90CisvLwor
Ly8gVHlwZSBhbGlhcyBvZiBhIGNpdmlsLXRpbWUgeWVhciB2YWx1ZS4gVGhpcyB0eXBlIGlzIGd1
YXJhbnRlZWQgdG8gKGF0IGxlYXN0KQorLy8gc3VwcG9ydCBhbnkgeWVhciB2YWx1ZSBzdXBwb3J0
ZWQgYnkgYHRpbWVfdGAuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGFic2w6OkNpdmlsU2Vj
b25kIGNzID0gLi4uOworLy8gICBhYnNsOjpjaXZpbF95ZWFyX3QgeSA9IGNzLnllYXIoKTsKKy8v
ICAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCh5LCAxLCAxLCAwLCAwLCAwKTsgIC8vIENpdmlsU2Vj
b25kKENpdmlsWWVhcihjcykpCisvLwordXNpbmcgY2l2aWxfeWVhcl90ID0gdGltZV9pbnRlcm5h
bDo6Y2N0ejo6eWVhcl90OworCisvLyBjaXZpbF9kaWZmX3QKKy8vCisvLyBUeXBlIGFsaWFzIG9m
IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGNpdmlsLXRpbWUgdmFsdWVzLgorLy8gVGhpcyB0
eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUgYXJndW1lbnRzIHRoYXQgYXJlIG5vdAorLy8gbm9ybWFs
aXplZCAoc3VjaCBhcyBwYXJhbWV0ZXJzIHRvIHRoZSBjaXZpbC10aW1lIGNvbnN0cnVjdG9ycyks
IHRoZSByZXN1bHRzCisvLyBvZiBjaXZpbC10aW1lIHN1YnRyYWN0aW9uLCBvciB0aGUgb3BlcmFu
ZCB0byBjaXZpbC10aW1lIGFkZGl0aW9uLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICBhYnNs
OjpjaXZpbF9kaWZmX3Qgbl9zZWMgPSBjczEgLSBjczI7ICAgICAgICAgICAgIC8vIGNzMSA9PSBj
czIgKyBuX3NlYzsKKy8vCit1c2luZyBjaXZpbF9kaWZmX3QgPSB0aW1lX2ludGVybmFsOjpjY3R6
OjpkaWZmX3Q7CisKKy8vIFdlZWtkYXk6Om1vbmRheSwgV2Vla2RheTo6dHVlc2RheSwgV2Vla2Rh
eTo6d2VkbmVzZGF5LCBXZWVrZGF5Ojp0aHVyc2RheSwKKy8vIFdlZWtkYXk6OmZyaWRheSwgV2Vl
a2RheTo6c2F0dXJkYXksIFdlZWtkYXk6OnN1bmRheQorLy8KKy8vIFRoZSBXZWVrZGF5IGVudW0g
Y2xhc3MgcmVwcmVzZW50cyB0aGUgY2l2aWwtdGltZSBjb25jZXB0IG9mIGEgIndlZWtkYXkiIHdp
dGgKKy8vIG1lbWJlcnMgZm9yIGFsbCBkYXlzIG9mIHRoZSB3ZWVrLgorLy8KKy8vICAgYWJzbDo6
V2Vla2RheSB3ZCA9IGFic2w6OldlZWtkYXk6OnRodXJzZGF5OworLy8KK3VzaW5nIFdlZWtkYXkg
PSB0aW1lX2ludGVybmFsOjpjY3R6Ojp3ZWVrZGF5OworCisvLyBHZXRXZWVrZGF5KCkKKy8vCisv
LyBSZXR1cm5zIHRoZSBhYnNsOjpXZWVrZGF5IGZvciB0aGUgZ2l2ZW4gKHJlYWxpZ25lZCkgY2l2
aWwtdGltZSB2YWx1ZS4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJzbDo6Q2l2aWxEYXkg
YSgyMDE1LCA4LCAxMyk7CisvLyAgIGFic2w6OldlZWtkYXkgd2QgPSBhYnNsOjpHZXRXZWVrZGF5
KGEpOyAgLy8gd2QgPT0gYWJzbDo6V2Vla2RheTo6dGh1cnNkYXkKKy8vCitpbmxpbmUgV2Vla2Rh
eSBHZXRXZWVrZGF5KENpdmlsU2Vjb25kIGNzKSB7CisgIHJldHVybiB0aW1lX2ludGVybmFsOjpj
Y3R6OjpnZXRfd2Vla2RheShjcyk7Cit9CisKKy8vIE5leHRXZWVrZGF5KCkKKy8vIFByZXZXZWVr
ZGF5KCkKKy8vCisvLyBSZXR1cm5zIHRoZSBhYnNsOjpDaXZpbERheSB0aGF0IHN0cmljdGx5IGZv
bGxvd3Mgb3IgcHJlY2VkZXMgYSBnaXZlbgorLy8gYWJzbDo6Q2l2aWxEYXksIGFuZCB0aGF0IGZh
bGxzIG9uIHRoZSBnaXZlbiBhYnNsOjpXZWVrZGF5LgorLy8KKy8vIEV4YW1wbGUsIGdpdmVuIHRo
ZSBmb2xsb3dpbmcgbW9udGg6CisvLworLy8gICAgICAgQXVndXN0IDIwMTUKKy8vICAgU3UgTW8g
VHUgV2UgVGggRnIgU2EKKy8vICAgICAgICAgICAgICAgICAgICAgIDEKKy8vICAgIDIgIDMgIDQg
IDUgIDYgIDcgIDgKKy8vICAgIDkgMTAgMTEgMTIgMTMgMTQgMTUKKy8vICAgMTYgMTcgMTggMTkg
MjAgMjEgMjIKKy8vICAgMjMgMjQgMjUgMjYgMjcgMjggMjkKKy8vICAgMzAgMzEKKy8vCisvLyAg
IGFic2w6OkNpdmlsRGF5IGEoMjAxNSwgOCwgMTMpOworLy8gICAvLyBhYnNsOjpHZXRXZWVrZGF5
KGEpID09IGFic2w6OldlZWtkYXk6OnRodXJzZGF5CisvLyAgIGFic2w6OkNpdmlsRGF5IGIgPSBh
YnNsOjpOZXh0V2Vla2RheShhLCBhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSk7CisvLyAgIC8vIGIg
PSAyMDE1LTA4LTIwCisvLyAgIGFic2w6OkNpdmlsRGF5IGMgPSBhYnNsOjpQcmV2V2Vla2RheShh
LCBhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSk7CisvLyAgIC8vIGMgPSAyMDE1LTA4LTA2CisvLwor
Ly8gICBhYnNsOjpDaXZpbERheSBkID0gLi4uCisvLyAgIC8vIEdldHMgdGhlIGZvbGxvd2luZyBU
aHVyc2RheSBpZiBkIGlzIG5vdCBhbHJlYWR5IFRodXJzZGF5CisvLyAgIGFic2w6OkNpdmlsRGF5
IHRodXJzMSA9IGFic2w6Ok5leHRXZWVrZGF5KGQgLSAxLCBhYnNsOjpXZWVrZGF5Ojp0aHVyc2Rh
eSk7CisvLyAgIC8vIEdldHMgdGhlIHByZXZpb3VzIFRodXJzZGF5IGlmIGQgaXMgbm90IGFscmVh
ZHkgVGh1cnNkYXkKKy8vICAgYWJzbDo6Q2l2aWxEYXkgdGh1cnMyID0gYWJzbDo6UHJldldlZWtk
YXkoZCArIDEsIGFic2w6OldlZWtkYXk6OnRodXJzZGF5KTsKKy8vCitpbmxpbmUgQ2l2aWxEYXkg
TmV4dFdlZWtkYXkoQ2l2aWxEYXkgY2QsIFdlZWtkYXkgd2QpIHsKKyAgcmV0dXJuIENpdmlsRGF5
KHRpbWVfaW50ZXJuYWw6OmNjdHo6Om5leHRfd2Vla2RheShjZCwgd2QpKTsKK30KK2lubGluZSBD
aXZpbERheSBQcmV2V2Vla2RheShDaXZpbERheSBjZCwgV2Vla2RheSB3ZCkgeworICByZXR1cm4g
Q2l2aWxEYXkodGltZV9pbnRlcm5hbDo6Y2N0ejo6cHJldl93ZWVrZGF5KGNkLCB3ZCkpOworfQor
CisvLyBHZXRZZWFyRGF5KCkKKy8vCisvLyBSZXR1cm5zIHRoZSBkYXktb2YteWVhciBmb3IgdGhl
IGdpdmVuIChyZWFsaWduZWQpIGNpdmlsLXRpbWUgdmFsdWUuCisvLworLy8gRXhhbXBsZToKKy8v
CisvLyAgIGFic2w6OkNpdmlsRGF5IGEoMjAxNSwgMSwgMSk7CisvLyAgIGludCB5ZF9qYW5fMSA9
IGFic2w6OkdldFllYXJEYXkoYSk7ICAgLy8geWRfamFuXzEgPSAxCisvLyAgIGFic2w6OkNpdmls
RGF5IGIoMjAxNSwgMTIsIDMxKTsKKy8vICAgaW50IHlkX2RlY18zMSA9IGFic2w6OkdldFllYXJE
YXkoYik7ICAvLyB5ZF9kZWNfMzEgPSAzNjUKKy8vCitpbmxpbmUgaW50IEdldFllYXJEYXkoQ2l2
aWxTZWNvbmQgY3MpIHsKKyAgcmV0dXJuIHRpbWVfaW50ZXJuYWw6OmNjdHo6OmdldF95ZWFyZGF5
KGNzKTsKK30KKworLy8gRm9ybWF0Q2l2aWxUaW1lKCkKKy8vCisvLyBGb3JtYXRzIHRoZSBnaXZl
biBjaXZpbC10aW1lIHZhbHVlIGludG8gYSBzdHJpbmcgdmFsdWUgb2YgdGhlIGZvbGxvd2luZwor
Ly8gZm9ybWF0OgorLy8KKy8vICBUeXBlICAgICAgICB8IEZvcm1hdAorLy8gIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIENpdmlsU2Vjb25kIHwgWVlZWS1NTS1ERFRISDpN
TTpTUworLy8gIENpdmlsTWludXRlIHwgWVlZWS1NTS1ERFRISDpNTQorLy8gIENpdmlsSG91ciAg
IHwgWVlZWS1NTS1ERFRISAorLy8gIENpdmlsRGF5ICAgIHwgWVlZWS1NTS1ERAorLy8gIENpdmls
TW9udGggIHwgWVlZWS1NTQorLy8gIENpdmlsWWVhciAgIHwgWVlZWQorLy8KKy8vIEV4YW1wbGU6
CisvLworLy8gICBhYnNsOjpDaXZpbERheSBkID0gYWJzbDo6Q2l2aWxEYXkoMTk2OSwgNywgMjAp
OworLy8gICBzdGQ6OnN0cmluZyBkYXlfc3RyaW5nID0gYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGQp
OyAgLy8gIjE5NjktMDctMjAiCisvLworc3RkOjpzdHJpbmcgRm9ybWF0Q2l2aWxUaW1lKENpdmls
U2Vjb25kIGMpOworc3RkOjpzdHJpbmcgRm9ybWF0Q2l2aWxUaW1lKENpdmlsTWludXRlIGMpOwor
c3RkOjpzdHJpbmcgRm9ybWF0Q2l2aWxUaW1lKENpdmlsSG91ciBjKTsKK3N0ZDo6c3RyaW5nIEZv
cm1hdENpdmlsVGltZShDaXZpbERheSBjKTsKK3N0ZDo6c3RyaW5nIEZvcm1hdENpdmlsVGltZShD
aXZpbE1vbnRoIGMpOworc3RkOjpzdHJpbmcgRm9ybWF0Q2l2aWxUaW1lKENpdmlsWWVhciBjKTsK
KworbmFtZXNwYWNlIHRpbWVfaW50ZXJuYWwgeyAgLy8gRm9yIGZ1bmN0aW9ucyBmb3VuZCB2aWEg
QURMIG9uIGNpdmlsLXRpbWUgdGFncy4KKworLy8gU3RyZWFtaW5nIE9wZXJhdG9ycworLy8KKy8v
IEVhY2ggY2l2aWwtdGltZSB0eXBlIG1heSBiZSBzZW50IHRvIGFuIG91dHB1dCBzdHJlYW0gdXNp
bmcgb3BlcmF0b3I8PCgpLgorLy8gVGhlIHJlc3VsdCBtYXRjaGVzIHRoZSBzdHJpbmcgcHJvZHVj
ZWQgYnkgYEZvcm1hdENpdmlsVGltZSgpYC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgYWJz
bDo6Q2l2aWxEYXkgZCA9IGFic2w6OkNpdmlsRGF5KCIxOTY5LTA3LTIwIik7CisvLyAgIHN0ZDo6
Y291dCA8PCAiRGF0ZSBpczogIiA8PCBkIDw8ICJcbiI7CisvLworc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIENpdmlsWWVhciB5KTsKK3N0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBDaXZpbE1vbnRoIG0pOworc3RkOjpvc3RyZWFtJiBv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIENpdmlsRGF5IGQpOworc3RkOjpvc3RyZWFtJiBv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIENpdmlsSG91ciBoKTsKK3N0ZDo6b3N0cmVhbSYg
b3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBDaXZpbE1pbnV0ZSBtKTsKK3N0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBDaXZpbFNlY29uZCBzKTsKKworfSAgLy8g
bmFtZXNwYWNlIHRpbWVfaW50ZXJuYWwKKworfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlm
ICAvLyBBQlNMX1RJTUVfQ0lWSUxfVElNRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jaXZp
bF90aW1lX2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZV9iZW5jaG1hcmsuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDA4Njk4MzViNzE0NWZmNzU4OWFiOWQxNTJlN2QyMzhkMjJhM2FlZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2l2aWxfdGltZV9iZW5jaG1hcmsuY2MKQEAgLTAs
MCArMSwxMDcgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisj
aW5jbHVkZSAiYWJzbC90aW1lL2NpdmlsX3RpbWUuaCIKKworI2luY2x1ZGUgPG51bWVyaWM+Cisj
aW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9oYXNoL2hhc2guaCIKKyNpbmNsdWRl
ICJiZW5jaG1hcmsvYmVuY2htYXJrLmgiCisKK25hbWVzcGFjZSB7CisKKy8vIFJ1biBvbiAoMTIg
WCAzNDkyIE1IeiBDUFVzKTsgMjAxOC0xMS0wNVQxMzo0NDoyOS44MTQyMzkxMDMtMDg6MDAKKy8v
IENQVTogSW50ZWwgSGFzd2VsbCB3aXRoIEh5cGVyVGhyZWFkaW5nICg2IGNvcmVzKSBkTDE6MzJL
QiBkTDI6MjU2S0IgZEwzOjE1TUIKKy8vIEJlbmNobWFyayAgICAgICAgICAgICAgICAgVGltZShu
cykgICAgICAgIENQVShucykgICAgIEl0ZXJhdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEJNX0RpZmZl
cmVuY2VfRGF5cyAgICAgICAgICAgICAgMTQuNSAgICAgICAgICAgMTQuNSAgICAgNDg1MzExMDUK
Ky8vIEJNX1N0ZXBfRGF5cyAgICAgICAgICAgICAgICAgICAgMTIuNiAgICAgICAgICAgMTIuNiAg
ICAgNTQ4NzYwMDYKKy8vIEJNX0Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICA1ODcgICAgICAg
ICAgICA1ODcgICAgICAgIDEwMDAwMDAKKy8vIEJNX1BhcnNlICAgICAgICAgICAgICAgICAgICAg
ICA2OTIgICAgICAgICAgICA2OTIgICAgICAgIDEwMDAwMDAKKy8vIEJNX1JvdW5kVHJpcEZvcm1h
dFBhcnNlICAgICAgIDEzMDkgICAgICAgICAgIDEzMDkgICAgICAgICA1MzIwNzUKKy8vIEJNX0Np
dmlsWWVhckFic2xIYXNoICAgICAgICAgICAgIDAuNzEwICAgICAgICAgIDAuNzEwICA5NzY0MDAw
MDAKKy8vIEJNX0NpdmlsTW9udGhBYnNsSGFzaCAgICAgICAgICAgIDEuMTMgICAgICAgICAgIDEu
MTMgICA2MTk1MDAwMDAKKy8vIEJNX0NpdmlsRGF5QWJzbEhhc2ggICAgICAgICAgICAgIDEuNzAg
ICAgICAgICAgIDEuNzAgICA0MjYwMDAwMDAKKy8vIEJNX0NpdmlsSG91ckFic2xIYXNoICAgICAg
ICAgICAgIDIuNDUgICAgICAgICAgIDIuNDUgICAyODc2MDAwMDAKKy8vIEJNX0NpdmlsTWludXRl
QWJzbEhhc2ggICAgICAgICAgIDMuMjEgICAgICAgICAgIDMuMjEgICAyMjYyMDAwMDAKKy8vIEJN
X0NpdmlsU2Vjb25kQWJzbEhhc2ggICAgICAgICAgIDQuMTAgICAgICAgICAgIDQuMTAgICAxNzE4
MDAwMDAKKwordm9pZCBCTV9EaWZmZXJlbmNlX0RheXMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUp
IHsKKyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgYygyMDE0LCA4LCAyMik7CisgIGNvbnN0IGFic2w6
OkNpdmlsRGF5IGVwb2NoKDE5NzAsIDEsIDEpOworICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmco
KSkgeworICAgIGNvbnN0IGFic2w6OmNpdmlsX2RpZmZfdCBuID0gYyAtIGVwb2NoOworICAgIGJl
bmNobWFyazo6RG9Ob3RPcHRpbWl6ZShuKTsKKyAgfQorfQorQkVOQ0hNQVJLKEJNX0RpZmZlcmVu
Y2VfRGF5cyk7CisKK3ZvaWQgQk1fU3RlcF9EYXlzKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7
CisgIGNvbnN0IGFic2w6OkNpdmlsRGF5IGtTdGFydCgyMDE0LCA4LCAyMik7CisgIGFic2w6OkNp
dmlsRGF5IGMgPSBrU3RhcnQ7CisgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZygpKSB7CisgICAg
YmVuY2htYXJrOjpEb05vdE9wdGltaXplKCsrYyk7CisgIH0KK30KK0JFTkNITUFSSyhCTV9TdGVw
X0RheXMpOworCit2b2lkIEJNX0Zvcm1hdChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgeworICBj
b25zdCBhYnNsOjpDaXZpbFNlY29uZCBjKDIwMTQsIDEsIDIsIDMsIDQsIDUpOworICB3aGlsZSAo
c3RhdGUuS2VlcFJ1bm5pbmcoKSkgeworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoYyk7CisgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKHMpOworICB9
Cit9CitCRU5DSE1BUksoQk1fRm9ybWF0KTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lk
IEJNX0NpdmlsVGltZUFic2xIYXNoKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIGNvbnN0
IGludCBrU2l6ZSA9IDEwMDAwMDsKKyAgc3RkOjp2ZWN0b3I8VD4gY2l2aWxfdGltZXMoa1NpemUp
OworICBzdGQ6OmlvdGEoY2l2aWxfdGltZXMuYmVnaW4oKSwgY2l2aWxfdGltZXMuZW5kKCksIFQo
MjAxOCkpOworCisgIGFic2w6Okhhc2g8VD4gYWJzbF9oYXNoZXI7CisgIHdoaWxlIChzdGF0ZS5L
ZWVwUnVubmluZ0JhdGNoKGtTaXplKSkgeworICAgIGZvciAoY29uc3QgVCBjaXZpbF90aW1lIDog
Y2l2aWxfdGltZXMpIHsKKyAgICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShhYnNsX2hhc2hl
cihjaXZpbF90aW1lKSk7CisgICAgfQorICB9Cit9Cit2b2lkIEJNX0NpdmlsWWVhckFic2xIYXNo
KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIEJNX0NpdmlsVGltZUFic2xIYXNoPGFic2w6
OkNpdmlsWWVhcj4oc3RhdGUpOworfQordm9pZCBCTV9DaXZpbE1vbnRoQWJzbEhhc2goYmVuY2ht
YXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgQk1fQ2l2aWxUaW1lQWJzbEhhc2g8YWJzbDo6Q2l2aWxN
b250aD4oc3RhdGUpOworfQordm9pZCBCTV9DaXZpbERheUFic2xIYXNoKGJlbmNobWFyazo6U3Rh
dGUmIHN0YXRlKSB7CisgIEJNX0NpdmlsVGltZUFic2xIYXNoPGFic2w6OkNpdmlsRGF5PihzdGF0
ZSk7Cit9Cit2b2lkIEJNX0NpdmlsSG91ckFic2xIYXNoKGJlbmNobWFyazo6U3RhdGUmIHN0YXRl
KSB7CisgIEJNX0NpdmlsVGltZUFic2xIYXNoPGFic2w6OkNpdmlsSG91cj4oc3RhdGUpOworfQor
dm9pZCBCTV9DaXZpbE1pbnV0ZUFic2xIYXNoKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cisg
IEJNX0NpdmlsVGltZUFic2xIYXNoPGFic2w6OkNpdmlsTWludXRlPihzdGF0ZSk7Cit9Cit2b2lk
IEJNX0NpdmlsU2Vjb25kQWJzbEhhc2goYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgQk1f
Q2l2aWxUaW1lQWJzbEhhc2g8YWJzbDo6Q2l2aWxTZWNvbmQ+KHN0YXRlKTsKK30KK0JFTkNITUFS
SyhCTV9DaXZpbFllYXJBYnNsSGFzaCk7CitCRU5DSE1BUksoQk1fQ2l2aWxNb250aEFic2xIYXNo
KTsKK0JFTkNITUFSSyhCTV9DaXZpbERheUFic2xIYXNoKTsKK0JFTkNITUFSSyhCTV9DaXZpbEhv
dXJBYnNsSGFzaCk7CitCRU5DSE1BUksoQk1fQ2l2aWxNaW51dGVBYnNsSGFzaCk7CitCRU5DSE1B
UksoQk1fQ2l2aWxTZWNvbmRBYnNsSGFzaCk7CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9jaXZpbF90aW1lX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2NpdmlsX3RpbWVf
dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wM2NkMWYxMmQ1NjMxZGJkYWVjZmM1M2M3NmVhNmRlNTYzMjA1
ZDIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jaXZpbF90aW1lX3Rlc3QuY2MKQEAg
LTAsMCArMSwxMDg1IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KworI2luY2x1ZGUgImFic2wvdGltZS9jaXZpbF90aW1lLmgiCisKKyNpbmNsdWRlIDxsaW1pdHM+
CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUg
ImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2UgeworCitURVNUKENpdmlsVGltZSwgRGVmYXVsdENvbnN0cnVjdGlvbikgeworICBhYnNsOjpD
aXZpbFNlY29uZCBzczsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAwOjAwIiwgYWJzbDo6
Rm9ybWF0Q2l2aWxUaW1lKHNzKSk7CisKKyAgYWJzbDo6Q2l2aWxNaW51dGUgbW07CisgIEVYUEVD
VF9FUSgiMTk3MC0wMS0wMVQwMDowMCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtbSkpOworCisg
IGFic2w6OkNpdmlsSG91ciBoaDsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwIiwgYWJzbDo6
Rm9ybWF0Q2l2aWxUaW1lKGhoKSk7CisKKyAgYWJzbDo6Q2l2aWxEYXkgZDsKKyAgRVhQRUNUX0VR
KCIxOTcwLTAxLTAxIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGQpKTsKKworICBhYnNsOjpDaXZp
bE1vbnRoIG07CisgIEVYUEVDVF9FUSgiMTk3MC0wMSIsIGFic2w6OkZvcm1hdENpdmlsVGltZSht
KSk7CisKKyAgYWJzbDo6Q2l2aWxZZWFyIHk7CisgIEVYUEVDVF9FUSgiMTk3MCIsIGFic2w6OkZv
cm1hdENpdmlsVGltZSh5KSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBTdHJ1Y3RNZW1iZXIpIHsK
KyAgc3RydWN0IFMgeworICAgIGFic2w6OkNpdmlsRGF5IGRheTsKKyAgfTsKKyAgUyBzID0ge307
CisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbERheXt9LCBzLmRheSk7Cit9CisKK1RFU1QoQ2l2aWxU
aW1lLCBGaWVsZHNDb25zdHJ1Y3Rpb24pIHsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0
OjA1IiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFNlY29u
ZCgyMDE1LCAxLCAyLCAzLCA0LCA1KSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQ6
MDAiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsU2Vjb25k
KDIwMTUsIDEsIDIsIDMsIDQpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowMDowMCIs
CisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoMjAx
NSwgMSwgMiwgMykpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAwOjAwOjAwIiwKKyAgICAg
ICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFNlY29uZCgyMDE1LCAxLCAy
KSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDFUMDA6MDA6MDAiLAorICAgICAgICAgICAgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsU2Vjb25kKDIwMTUsIDEpKSk7CisgIEVYUEVD
VF9FUSgiMjAxNS0wMS0wMVQwMDowMDowMCIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZp
bFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNSkpKTsKKworICBFWFBFQ1RfRVEoIjIwMTUtMDEt
MDJUMDM6MDQiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmls
TWludXRlKDIwMTUsIDEsIDIsIDMsIDQsIDUpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQw
MzowNCIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxNaW51
dGUoMjAxNSwgMSwgMiwgMywgNCkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjAwIiwK
KyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbE1pbnV0ZSgyMDE1
LCAxLCAyLCAzKSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDA6MDAiLAorICAgICAgICAg
ICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsTWludXRlKDIwMTUsIDEsIDIpKSk7
CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMVQwMDowMCIsCisgICAgICAgICAgICBhYnNsOjpGb3Jt
YXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxNaW51dGUoMjAxNSwgMSkpKTsKKyAgRVhQRUNUX0VRKCIy
MDE1LTAxLTAxVDAwOjAwIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNs
OjpDaXZpbE1pbnV0ZSgyMDE1KSkpOworCisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMyIsCisg
ICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxIb3VyKDIwMTUsIDEs
IDIsIDMsIDQsIDUpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMyIsCisgICAgICAgICAg
ICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxIb3VyKDIwMTUsIDEsIDIsIDMsIDQp
KSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMyIsCisgICAgICAgICAgICBhYnNsOjpGb3Jt
YXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxIb3VyKDIwMTUsIDEsIDIsIDMpKSk7CisgIEVYUEVDVF9F
USgiMjAxNS0wMS0wMlQwMCIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJz
bDo6Q2l2aWxIb3VyKDIwMTUsIDEsIDIpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMVQwMCIs
CisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxIb3VyKDIwMTUs
IDEpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMVQwMCIsCisgICAgICAgICAgICBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxIb3VyKDIwMTUpKSk7CisKKyAgRVhQRUNUX0VRKCIy
MDE1LTAxLTAyIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZp
bERheSgyMDE1LCAxLCAyLCAzLCA0LCA1KSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDIiLAor
ICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsRGF5KDIwMTUsIDEs
IDIsIDMsIDQpKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMiIsCisgICAgICAgICAgICBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxEYXkoMjAxNSwgMSwgMiwgMykpKTsKKyAgRVhQ
RUNUX0VRKCIyMDE1LTAxLTAyIiwKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShh
YnNsOjpDaXZpbERheSgyMDE1LCAxLCAyKSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDEiLAor
ICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsRGF5KDIwMTUsIDEp
KSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMSIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUoYWJzbDo6Q2l2aWxEYXkoMjAxNSkpKTsKKworICBFWFBFQ1RfRVEoIjIwMTUtMDEi
LAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsTW9udGgoMjAx
NSwgMSwgMiwgMywgNCwgNSkpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxIiwKKyAgICAgICAgICAg
IGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbE1vbnRoKDIwMTUsIDEsIDIsIDMsIDQp
KSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMSIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZp
bFRpbWUoYWJzbDo6Q2l2aWxNb250aCgyMDE1LCAxLCAyLCAzKSkpOworICBFWFBFQ1RfRVEoIjIw
MTUtMDEiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsTW9u
dGgoMjAxNSwgMSwgMikpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxIiwKKyAgICAgICAgICAgIGFi
c2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbE1vbnRoKDIwMTUsIDEpKSk7CisgIEVYUEVD
VF9FUSgiMjAxNS0wMSIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6
Q2l2aWxNb250aCgyMDE1KSkpOworCisgIEVYUEVDVF9FUSgiMjAxNSIsCisgICAgICAgICAgICBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxZZWFyKDIwMTUsIDEsIDIsIDMsIDQsIDUp
KSk7CisgIEVYUEVDVF9FUSgiMjAxNSIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRp
bWUoYWJzbDo6Q2l2aWxZZWFyKDIwMTUsIDEsIDIsIDMsIDQpKSk7CisgIEVYUEVDVF9FUSgiMjAx
NSIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxZZWFyKDIw
MTUsIDEsIDIsIDMpKSk7CisgIEVYUEVDVF9FUSgiMjAxNSIsCisgICAgICAgICAgICBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxZZWFyKDIwMTUsIDEsIDIpKSk7CisgIEVYUEVDVF9F
USgiMjAxNSIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxZ
ZWFyKDIwMTUsIDEpKSk7CisgIEVYUEVDVF9FUSgiMjAxNSIsCisgICAgICAgICAgICBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxZZWFyKDIwMTUpKSk7Cit9CisKK1RFU1QoQ2l2aWxU
aW1lLCBGaWVsZHNDb25zdHJ1Y3Rpb25MaW1pdHMpIHsKKyAgY29uc3QgaW50IGtJbnRNYXggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICBFWFBFQ1RfRVEoIjIwMzgtMDEtMTlU
MDM6MTQ6MDciLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmls
U2Vjb25kKAorICAgICAgICAgICAgICAgIDE5NzAsIDEsIDEsIDAsIDAsIGtJbnRNYXgpKSk7Cisg
IEVYUEVDVF9FUSgiNjEyMS0wMi0xMVQwNToyMTowNyIsCisgICAgICAgICAgICBhYnNsOjpGb3Jt
YXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoCisgICAgICAgICAgICAgICAgMTk3MCwgMSwg
MSwgMCwga0ludE1heCwga0ludE1heCkpKTsKKyAgRVhQRUNUX0VRKCIyNTExMDQtMTEtMjBUMTI6
MjE6MDciLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsU2Vj
b25kKAorICAgICAgICAgICAgICAgIDE5NzAsIDEsIDEsIGtJbnRNYXgsIGtJbnRNYXgsIGtJbnRN
YXgpKSk7CisgIEVYUEVDVF9FUSgiNjEzMDcxNS0wNS0zMFQxMjoyMTowNyIsCisgICAgICAgICAg
ICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNvbmQoCisgICAgICAgICAgICAg
ICAgMTk3MCwgMSwga0ludE1heCwga0ludE1heCwga0ludE1heCwga0ludE1heCkpKTsKKyAgRVhQ
RUNUX0VRKCIxODUwODc2ODUtMTEtMjZUMTI6MjE6MDciLAorICAgICAgICAgICAgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsU2Vjb25kKAorICAgICAgICAgICAgICAgIDE5NzAsIGtJ
bnRNYXgsIGtJbnRNYXgsIGtJbnRNYXgsIGtJbnRNYXgsIGtJbnRNYXgpKSk7CisKKyAgY29uc3Qg
aW50IGtJbnRNaW4gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOworICBFWFBFQ1Rf
RVEoIjE5MDEtMTItMTNUMjA6NDU6NTIiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKGFic2w6OkNpdmlsU2Vjb25kKAorICAgICAgICAgICAgICAgIDE5NzAsIDEsIDEsIDAsIDAs
IGtJbnRNaW4pKSk7CisgIEVYUEVDVF9FUSgiLTIxODItMTEtMjBUMTg6Mzc6NTIiLAorICAgICAg
ICAgICAgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGFic2w6OkNpdmlsU2Vjb25kKAorICAgICAgICAg
ICAgICAgIDE5NzAsIDEsIDEsIDAsIGtJbnRNaW4sIGtJbnRNaW4pKSk7CisgIEVYUEVDVF9FUSgi
LTI0NzE2NS0wMi0xMVQxMDozNzo1MiIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRp
bWUoYWJzbDo6Q2l2aWxTZWNvbmQoCisgICAgICAgICAgICAgICAgMTk3MCwgMSwgMSwga0ludE1p
biwga0ludE1pbiwga0ludE1pbikpKTsKKyAgRVhQRUNUX0VRKCItNjEyNjc3Ni0wOC0wMVQxMDoz
Nzo1MiIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoYWJzbDo6Q2l2aWxTZWNv
bmQoCisgICAgICAgICAgICAgICAgMTk3MCwgMSwga0ludE1pbiwga0ludE1pbiwga0ludE1pbiwg
a0ludE1pbikpKTsKKyAgRVhQRUNUX0VRKCItMTg1MDgzNzQ3LTEwLTMxVDEwOjM3OjUyIiwKKyAg
ICAgICAgICAgIGFic2w6OkZvcm1hdENpdmlsVGltZShhYnNsOjpDaXZpbFNlY29uZCgKKyAgICAg
ICAgICAgICAgICAxOTcwLCBrSW50TWluLCBrSW50TWluLCBrSW50TWluLCBrSW50TWluLCBrSW50
TWluKSkpOworfQorCitURVNUKENpdmlsVGltZSwgUmFuZ2VMaW1pdHMpIHsKKyAgY29uc3QgYWJz
bDo6Y2l2aWxfeWVhcl90IGtZZWFyTWF4ID0KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8YWJz
bDo6Y2l2aWxfeWVhcl90Pjo6bWF4KCk7CisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbFllYXIoa1ll
YXJNYXgpLAorICAgICAgICAgICAgYWJzbDo6Q2l2aWxZZWFyOjptYXgoKSk7CisgIEVYUEVDVF9F
UShhYnNsOjpDaXZpbE1vbnRoKGtZZWFyTWF4LCAxMiksCisgICAgICAgICAgICBhYnNsOjpDaXZp
bE1vbnRoOjptYXgoKSk7CisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbERheShrWWVhck1heCwgMTIs
IDMxKSwKKyAgICAgICAgICAgIGFic2w6OkNpdmlsRGF5OjptYXgoKSk7CisgIEVYUEVDVF9FUShh
YnNsOjpDaXZpbEhvdXIoa1llYXJNYXgsIDEyLCAzMSwgMjMpLAorICAgICAgICAgICAgYWJzbDo6
Q2l2aWxIb3VyOjptYXgoKSk7CisgIEVYUEVDVF9FUShhYnNsOjpDaXZpbE1pbnV0ZShrWWVhck1h
eCwgMTIsIDMxLCAyMywgNTkpLAorICAgICAgICAgICAgYWJzbDo6Q2l2aWxNaW51dGU6Om1heCgp
KTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsU2Vjb25kKGtZZWFyTWF4LCAxMiwgMzEsIDIzLCA1
OSwgNTkpLAorICAgICAgICAgICAgYWJzbDo6Q2l2aWxTZWNvbmQ6Om1heCgpKTsKKworICBjb25z
dCBhYnNsOjpjaXZpbF95ZWFyX3Qga1llYXJNaW4gPQorICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czxhYnNsOjpjaXZpbF95ZWFyX3Q+OjptaW4oKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsWWVh
cihrWWVhck1pbiksCisgICAgICAgICAgICBhYnNsOjpDaXZpbFllYXI6Om1pbigpKTsKKyAgRVhQ
RUNUX0VRKGFic2w6OkNpdmlsTW9udGgoa1llYXJNaW4sIDEpLAorICAgICAgICAgICAgYWJzbDo6
Q2l2aWxNb250aDo6bWluKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxEYXkoa1llYXJNaW4s
IDEsIDEpLAorICAgICAgICAgICAgYWJzbDo6Q2l2aWxEYXk6Om1pbigpKTsKKyAgRVhQRUNUX0VR
KGFic2w6OkNpdmlsSG91cihrWWVhck1pbiwgMSwgMSwgMCksCisgICAgICAgICAgICBhYnNsOjpD
aXZpbEhvdXI6Om1pbigpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsTWludXRlKGtZZWFyTWlu
LCAxLCAxLCAwLCAwKSwKKyAgICAgICAgICAgIGFic2w6OkNpdmlsTWludXRlOjptaW4oKSk7Cisg
IEVYUEVDVF9FUShhYnNsOjpDaXZpbFNlY29uZChrWWVhck1pbiwgMSwgMSwgMCwgMCwgMCksCisg
ICAgICAgICAgICBhYnNsOjpDaXZpbFNlY29uZDo6bWluKCkpOworfQorCitURVNUKENpdmlsVGlt
ZSwgSW1wbGljaXRDcm9zc0FsaWdubWVudCkgeworICBhYnNsOjpDaXZpbFllYXIgeWVhcigyMDE1
KTsKKyAgYWJzbDo6Q2l2aWxNb250aCBtb250aCA9IHllYXI7CisgIGFic2w6OkNpdmlsRGF5IGRh
eSA9IG1vbnRoOworICBhYnNsOjpDaXZpbEhvdXIgaG91ciA9IGRheTsKKyAgYWJzbDo6Q2l2aWxN
aW51dGUgbWludXRlID0gaG91cjsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgc2Vjb25kID0gbWludXRl
OworCisgIHNlY29uZCA9IHllYXI7CisgIEVYUEVDVF9FUShzZWNvbmQsIHllYXIpOworICBzZWNv
bmQgPSBtb250aDsKKyAgRVhQRUNUX0VRKHNlY29uZCwgbW9udGgpOworICBzZWNvbmQgPSBkYXk7
CisgIEVYUEVDVF9FUShzZWNvbmQsIGRheSk7CisgIHNlY29uZCA9IGhvdXI7CisgIEVYUEVDVF9F
UShzZWNvbmQsIGhvdXIpOworICBzZWNvbmQgPSBtaW51dGU7CisgIEVYUEVDVF9FUShzZWNvbmQs
IG1pbnV0ZSk7CisKKyAgbWludXRlID0geWVhcjsKKyAgRVhQRUNUX0VRKG1pbnV0ZSwgeWVhcik7
CisgIG1pbnV0ZSA9IG1vbnRoOworICBFWFBFQ1RfRVEobWludXRlLCBtb250aCk7CisgIG1pbnV0
ZSA9IGRheTsKKyAgRVhQRUNUX0VRKG1pbnV0ZSwgZGF5KTsKKyAgbWludXRlID0gaG91cjsKKyAg
RVhQRUNUX0VRKG1pbnV0ZSwgaG91cik7CisKKyAgaG91ciA9IHllYXI7CisgIEVYUEVDVF9FUSho
b3VyLCB5ZWFyKTsKKyAgaG91ciA9IG1vbnRoOworICBFWFBFQ1RfRVEoaG91ciwgbW9udGgpOwor
ICBob3VyID0gZGF5OworICBFWFBFQ1RfRVEoaG91ciwgZGF5KTsKKworICBkYXkgPSB5ZWFyOwor
ICBFWFBFQ1RfRVEoZGF5LCB5ZWFyKTsKKyAgZGF5ID0gbW9udGg7CisgIEVYUEVDVF9FUShkYXks
IG1vbnRoKTsKKworICBtb250aCA9IHllYXI7CisgIEVYUEVDVF9FUShtb250aCwgeWVhcik7CisK
KyAgLy8gRW5zdXJlcyB1bnNhZmUgY29udmVyc2lvbnMgYXJlIG5vdCBhbGxvd2VkLgorICBFWFBF
Q1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbFNlY29uZCwg
YWJzbDo6Q2l2aWxNaW51dGU+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3Rk
Ojppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbFNlY29uZCwgYWJzbDo6Q2l2aWxIb3VyPjo6dmFs
dWUpKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgKHN0ZDo6aXNfY29udmVydGlibGU8YWJzbDo6
Q2l2aWxTZWNvbmQsIGFic2w6OkNpdmlsRGF5Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKAor
ICAgICAgKHN0ZDo6aXNfY29udmVydGlibGU8YWJzbDo6Q2l2aWxTZWNvbmQsIGFic2w6OkNpdmls
TW9udGg+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0
aWJsZTxhYnNsOjpDaXZpbFNlY29uZCwgYWJzbDo6Q2l2aWxZZWFyPjo6dmFsdWUpKTsKKworICBF
WFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbE1pbnV0
ZSwgYWJzbDo6Q2l2aWxIb3VyPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgKHN0
ZDo6aXNfY29udmVydGlibGU8YWJzbDo6Q2l2aWxNaW51dGUsIGFic2w6OkNpdmlsRGF5Pjo6dmFs
dWUpKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgKHN0ZDo6aXNfY29udmVydGlibGU8YWJzbDo6
Q2l2aWxNaW51dGUsIGFic2w6OkNpdmlsTW9udGg+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0Uo
CisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxhYnNsOjpDaXZpbE1pbnV0ZSwgYWJzbDo6Q2l2
aWxZZWFyPjo6dmFsdWUpKTsKKworICBFWFBFQ1RfRkFMU0UoCisgICAgICAoc3RkOjppc19jb252
ZXJ0aWJsZTxhYnNsOjpDaXZpbEhvdXIsIGFic2w6OkNpdmlsRGF5Pjo6dmFsdWUpKTsKKyAgRVhQ
RUNUX0ZBTFNFKAorICAgICAgKHN0ZDo6aXNfY29udmVydGlibGU8YWJzbDo6Q2l2aWxIb3VyLCBh
YnNsOjpDaXZpbE1vbnRoPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgKHN0ZDo6
aXNfY29udmVydGlibGU8YWJzbDo6Q2l2aWxIb3VyLCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1ZSkp
OworCisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxlPGFic2w6OkNp
dmlsRGF5LCBhYnNsOjpDaXZpbE1vbnRoPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAg
ICAgKHN0ZDo6aXNfY29udmVydGlibGU8YWJzbDo6Q2l2aWxEYXksIGFic2w6OkNpdmlsWWVhcj46
OnZhbHVlKSk7CisKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgKHN0ZDo6aXNfY29udmVydGlibGU8
YWJzbDo6Q2l2aWxNb250aCwgYWJzbDo6Q2l2aWxZZWFyPjo6dmFsdWUpKTsKK30KKworVEVTVChD
aXZpbFRpbWUsIEV4cGxpY2l0Q3Jvc3NBbGlnbm1lbnQpIHsKKyAgLy8KKyAgLy8gQXNzaWduIGZy
b20gc21hbGxlciB1bml0cyAtPiBsYXJnZXIgdW5pdHMKKyAgLy8KKworICBhYnNsOjpDaXZpbFNl
Y29uZCBzZWNvbmQoMjAxNSwgMSwgMiwgMywgNCwgNSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0w
MlQwMzowNDowNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShzZWNvbmQpKTsKKworICBhYnNsOjpD
aXZpbE1pbnV0ZSBtaW51dGUoc2Vjb25kKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1pbnV0ZSkpOworCisgIGFic2w6OkNpdmlsSG91ciBo
b3VyKG1pbnV0ZSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMyIsIGFic2w6OkZvcm1hdENp
dmlsVGltZShob3VyKSk7CisKKyAgYWJzbDo6Q2l2aWxEYXkgZGF5KGhvdXIpOworICBFWFBFQ1Rf
RVEoIjIwMTUtMDEtMDIiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoZGF5KSk7CisKKyAgYWJzbDo6
Q2l2aWxNb250aCBtb250aChkYXkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEiLCBhYnNsOjpGb3Jt
YXRDaXZpbFRpbWUobW9udGgpKTsKKworICBhYnNsOjpDaXZpbFllYXIgeWVhcihtb250aCk7Cisg
IEVYUEVDVF9FUSgiMjAxNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh5ZWFyKSk7CisKKyAgLy8K
KyAgLy8gTm93IGFzc2lnbiBmcm9tIGxhcmdlciB1bml0cyAtPiBzbWFsbGVyIHVuaXRzCisgIC8v
CisKKyAgbW9udGggPSBhYnNsOjpDaXZpbE1vbnRoKHllYXIpOworICBFWFBFQ1RfRVEoIjIwMTUt
MDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobW9udGgpKTsKKworICBkYXkgPSBhYnNsOjpDaXZp
bERheShtb250aCk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMSIsIGFic2w6OkZvcm1hdENpdmls
VGltZShkYXkpKTsKKworICBob3VyID0gYWJzbDo6Q2l2aWxIb3VyKGRheSk7CisgIEVYUEVDVF9F
USgiMjAxNS0wMS0wMVQwMCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShob3VyKSk7CisKKyAgbWlu
dXRlID0gYWJzbDo6Q2l2aWxNaW51dGUoaG91cik7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMVQw
MDowMCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtaW51dGUpKTsKKworICBzZWNvbmQgPSBhYnNs
OjpDaXZpbFNlY29uZChtaW51dGUpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDFUMDA6MDA6MDAi
LCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoc2Vjb25kKSk7Cit9CisKKy8vIE1ldGFmdW5jdGlvbiB0
byB0ZXN0IHdoZXRoZXIgZGlmZmVyZW5jZSBpcyBhbGxvd2VkIGJldHdlZW4gdHdvIHR5cGVzLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBIYXNEaWZmIHsKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KKyAgc3RhdGljIHN0ZDo6ZmFsc2Vf
dHlwZSB0ZXN0KC4uLik7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Cisg
IHN0YXRpYyBzdGQ6OnRydWVfdHlwZSB0ZXN0KGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxVMT4oKSAt
IHN0ZDo6ZGVjbHZhbDxVMj4oKSkpOworICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBk
ZWNsdHlwZSh0ZXN0PFQxLCBUMj4oMCkpOjp2YWx1ZTsKK307CisKK1RFU1QoQ2l2aWxUaW1lLCBE
aXNhbGxvd0Nyb3NzQWxpZ25lZERpZmZlcmVuY2UpIHsKKyAgLy8gRGlmZmVyZW5jZSBpcyBhbGxv
d2VkIGJldHdlZW4gdHlwZXMgd2l0aCB0aGUgc2FtZSBhbGlnbm1lbnQuCisgIHN0YXRpY19hc3Nl
cnQoSGFzRGlmZjxhYnNsOjpDaXZpbFNlY29uZCwgYWJzbDo6Q2l2aWxTZWNvbmQ+Ojp2YWx1ZSwg
IiIpOworICBzdGF0aWNfYXNzZXJ0KEhhc0RpZmY8YWJzbDo6Q2l2aWxNaW51dGUsIGFic2w6OkNp
dmlsTWludXRlPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChIYXNEaWZmPGFic2w6OkNp
dmlsSG91ciwgYWJzbDo6Q2l2aWxIb3VyPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChI
YXNEaWZmPGFic2w6OkNpdmlsRGF5LCBhYnNsOjpDaXZpbERheT46OnZhbHVlLCAiIik7CisgIHN0
YXRpY19hc3NlcnQoSGFzRGlmZjxhYnNsOjpDaXZpbE1vbnRoLCBhYnNsOjpDaXZpbE1vbnRoPjo6
dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChIYXNEaWZmPGFic2w6OkNpdmlsWWVhciwgYWJz
bDo6Q2l2aWxZZWFyPjo6dmFsdWUsICIiKTsKKworICAvLyBEaWZmZXJlbmNlIGlzIGRpc2FsbG93
ZWQgYmV0d2VlbiB0eXBlcyB3aXRoIGRpZmZlcmVudCBhbGlnbm1lbnRzLgorICBzdGF0aWNfYXNz
ZXJ0KCFIYXNEaWZmPGFic2w6OkNpdmlsU2Vjb25kLCBhYnNsOjpDaXZpbE1pbnV0ZT46OnZhbHVl
LCAiIik7CisgIHN0YXRpY19hc3NlcnQoIUhhc0RpZmY8YWJzbDo6Q2l2aWxTZWNvbmQsIGFic2w6
OkNpdmlsSG91cj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoIUhhc0RpZmY8YWJzbDo6
Q2l2aWxTZWNvbmQsIGFic2w6OkNpdmlsRGF5Pjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2Vy
dCghSGFzRGlmZjxhYnNsOjpDaXZpbFNlY29uZCwgYWJzbDo6Q2l2aWxNb250aD46OnZhbHVlLCAi
Iik7CisgIHN0YXRpY19hc3NlcnQoIUhhc0RpZmY8YWJzbDo6Q2l2aWxTZWNvbmQsIGFic2w6OkNp
dmlsWWVhcj46OnZhbHVlLCAiIik7CisKKyAgc3RhdGljX2Fzc2VydCghSGFzRGlmZjxhYnNsOjpD
aXZpbE1pbnV0ZSwgYWJzbDo6Q2l2aWxIb3VyPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2Vy
dCghSGFzRGlmZjxhYnNsOjpDaXZpbE1pbnV0ZSwgYWJzbDo6Q2l2aWxEYXk+Ojp2YWx1ZSwgIiIp
OworICBzdGF0aWNfYXNzZXJ0KCFIYXNEaWZmPGFic2w6OkNpdmlsTWludXRlLCBhYnNsOjpDaXZp
bE1vbnRoPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghSGFzRGlmZjxhYnNsOjpDaXZp
bE1pbnV0ZSwgYWJzbDo6Q2l2aWxZZWFyPjo6dmFsdWUsICIiKTsKKworICBzdGF0aWNfYXNzZXJ0
KCFIYXNEaWZmPGFic2w6OkNpdmlsSG91ciwgYWJzbDo6Q2l2aWxEYXk+Ojp2YWx1ZSwgIiIpOwor
ICBzdGF0aWNfYXNzZXJ0KCFIYXNEaWZmPGFic2w6OkNpdmlsSG91ciwgYWJzbDo6Q2l2aWxNb250
aD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoIUhhc0RpZmY8YWJzbDo6Q2l2aWxIb3Vy
LCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1ZSwgIiIpOworCisgIHN0YXRpY19hc3NlcnQoIUhhc0Rp
ZmY8YWJzbDo6Q2l2aWxEYXksIGFic2w6OkNpdmlsTW9udGg+Ojp2YWx1ZSwgIiIpOworICBzdGF0
aWNfYXNzZXJ0KCFIYXNEaWZmPGFic2w6OkNpdmlsRGF5LCBhYnNsOjpDaXZpbFllYXI+Ojp2YWx1
ZSwgIiIpOworCisgIHN0YXRpY19hc3NlcnQoIUhhc0RpZmY8YWJzbDo6Q2l2aWxNb250aCwgYWJz
bDo6Q2l2aWxZZWFyPjo6dmFsdWUsICIiKTsKK30KKworVEVTVChDaXZpbFRpbWUsIFZhbHVlU2Vt
YW50aWNzKSB7CisgIGNvbnN0IGFic2w6OkNpdmlsSG91ciBhKDIwMTUsIDEsIDIsIDMpOworICBj
b25zdCBhYnNsOjpDaXZpbEhvdXIgYiA9IGE7CisgIGNvbnN0IGFic2w6OkNpdmlsSG91ciBjKGIp
OworICBhYnNsOjpDaXZpbEhvdXIgZDsKKyAgZCA9IGM7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0w
MlQwMyIsIGFic2w6OkZvcm1hdENpdmlsVGltZShkKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBS
ZWxhdGlvbmFsKSB7CisgIC8vIFRlc3RzIHRoYXQgdGhlIGFsaWdubWVudCB1bml0IGlzIGlnbm9y
ZWQgaW4gY29tcGFyaXNvbi4KKyAgY29uc3QgYWJzbDo6Q2l2aWxZZWFyIHllYXIoMjAxNCk7Cisg
IGNvbnN0IGFic2w6OkNpdmlsTW9udGggbW9udGgoeWVhcik7CisgIEVYUEVDVF9FUSh5ZWFyLCBt
b250aCk7CisKKyNkZWZpbmUgVEVTVF9SRUxBVElPTkFMKE9MREVSLCBZT1VOR0VSKSBcCisgIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShP
TERFUiA8IE9MREVSKTsgICAgICAgIFwKKyAgICBFWFBFQ1RfRkFMU0UoT0xERVIgPiBPTERFUik7
ICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUoT0xERVIgPj0gT0xERVIpOyAgICAgICAgXAorICAg
IEVYUEVDVF9UUlVFKE9MREVSIDw9IE9MREVSKTsgICAgICAgIFwKKyAgICBFWFBFQ1RfRkFMU0Uo
WU9VTkdFUiA8IFlPVU5HRVIpOyAgICBcCisgICAgRVhQRUNUX0ZBTFNFKFlPVU5HRVIgPiBZT1VO
R0VSKTsgICAgXAorICAgIEVYUEVDVF9UUlVFKFlPVU5HRVIgPj0gWU9VTkdFUik7ICAgIFwKKyAg
ICBFWFBFQ1RfVFJVRShZT1VOR0VSIDw9IFlPVU5HRVIpOyAgICBcCisgICAgRVhQRUNUX0VRKE9M
REVSLCBPTERFUik7ICAgICAgICAgICAgXAorICAgIEVYUEVDVF9ORShPTERFUiwgWU9VTkdFUik7
ICAgICAgICAgIFwKKyAgICBFWFBFQ1RfTFQoT0xERVIsIFlPVU5HRVIpOyAgICAgICAgICBcCisg
ICAgRVhQRUNUX0xFKE9MREVSLCBZT1VOR0VSKTsgICAgICAgICAgXAorICAgIEVYUEVDVF9HVChZ
T1VOR0VSLCBPTERFUik7ICAgICAgICAgIFwKKyAgICBFWFBFQ1RfR0UoWU9VTkdFUiwgT0xERVIp
OyAgICAgICAgICBcCisgIH0gd2hpbGUgKDApCisKKyAgLy8gQWxpZ25tZW50IGlzIGlnbm9yZWQg
aW4gY29tcGFyaXNvbiAodmVyaWZpZWQgYWJvdmUpLCBzbyBDaXZpbFNlY29uZCBpcworICAvLyB1
c2VkIHRvIHRlc3QgY29tcGFyaXNvbiBpbiBhbGwgZmllbGQgcG9zaXRpb25zLgorICBURVNUX1JF
TEFUSU9OQUwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMSwgMSwgMCwgMCwgMCksCisgICAgICAg
ICAgICAgICAgICBhYnNsOjpDaXZpbFNlY29uZCgyMDE1LCAxLCAxLCAwLCAwLCAwKSk7CisgIFRF
U1RfUkVMQVRJT05BTChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCAxLCAwLCAwLCAwKSwKKyAg
ICAgICAgICAgICAgICAgIGFic2w6OkNpdmlsU2Vjb25kKDIwMTQsIDIsIDEsIDAsIDAsIDApKTsK
KyAgVEVTVF9SRUxBVElPTkFMKGFic2w6OkNpdmlsU2Vjb25kKDIwMTQsIDEsIDEsIDAsIDAsIDAp
LAorICAgICAgICAgICAgICAgICAgYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMSwgMiwgMCwgMCwg
MCkpOworICBURVNUX1JFTEFUSU9OQUwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMSwgMSwgMCwg
MCwgMCksCisgICAgICAgICAgICAgICAgICBhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCAxLCAx
LCAwLCAwKSk7CisgIFRFU1RfUkVMQVRJT05BTChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCAx
LCAxLCAwLCAwKSwKKyAgICAgICAgICAgICAgICAgIGFic2w6OkNpdmlsU2Vjb25kKDIwMTQsIDEs
IDEsIDEsIDEsIDApKTsKKyAgVEVTVF9SRUxBVElPTkFMKGFic2w6OkNpdmlsU2Vjb25kKDIwMTQs
IDEsIDEsIDEsIDEsIDApLAorICAgICAgICAgICAgICAgICAgYWJzbDo6Q2l2aWxTZWNvbmQoMjAx
NCwgMSwgMSwgMSwgMSwgMSkpOworCisgIC8vIFRlc3RzIHRoZSByZWxhdGlvbmFsIG9wZXJhdG9y
cyBvZiB0d28gZGlmZmVyZW50IGNpdmlsLXRpbWUgdHlwZXMuCisgIFRFU1RfUkVMQVRJT05BTChh
YnNsOjpDaXZpbERheSgyMDE0LCAxLCAxKSwKKyAgICAgICAgICAgICAgICAgIGFic2w6OkNpdmls
TWludXRlKDIwMTQsIDEsIDEsIDEsIDEpKTsKKyAgVEVTVF9SRUxBVElPTkFMKGFic2w6OkNpdmls
RGF5KDIwMTQsIDEsIDEpLAorICAgICAgICAgICAgICAgICAgYWJzbDo6Q2l2aWxNb250aCgyMDE0
LCAyKSk7CisKKyN1bmRlZiBURVNUX1JFTEFUSU9OQUwKK30KKworVEVTVChDaXZpbFRpbWUsIEFy
aXRobWV0aWMpIHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgc2Vjb25kKDIwMTUsIDEsIDIsIDMsIDQs
IDUpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQ6MDYiLCBhYnNsOjpGb3JtYXRDaXZp
bFRpbWUoc2Vjb25kICs9IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0OjA3Iiwg
YWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHNlY29uZCArIDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAx
LTAyVDAzOjA0OjA4IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKDIgKyBzZWNvbmQpKTsKKyAgRVhQ
RUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0OjA1IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHNlY29u
ZCAtIDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0OjA1IiwgYWJzbDo6Rm9ybWF0
Q2l2aWxUaW1lKHNlY29uZCAtPSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNDow
NSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShzZWNvbmQrKykpOworICBFWFBFQ1RfRVEoIjIwMTUt
MDEtMDJUMDM6MDQ6MDciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoKytzZWNvbmQpKTsKKyAgRVhQ
RUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA0OjA3IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHNlY29u
ZC0tKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNDowNSIsIGFic2w6OkZvcm1hdENp
dmlsVGltZSgtLXNlY29uZCkpOworCisgIGFic2w6OkNpdmlsTWludXRlIG1pbnV0ZSgyMDE1LCAx
LCAyLCAzLCA0KTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA1IiwgYWJzbDo6Rm9ybWF0
Q2l2aWxUaW1lKG1pbnV0ZSArPSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNiIs
IGFic2w6OkZvcm1hdENpdmlsVGltZShtaW51dGUgKyAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0w
MS0wMlQwMzowNyIsIGFic2w6OkZvcm1hdENpdmlsVGltZSgyICsgbWludXRlKSk7CisgIEVYUEVD
VF9FUSgiMjAxNS0wMS0wMlQwMzowNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtaW51dGUgLSAx
KSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMzowNCIsIGFic2w6OkZvcm1hdENpdmlsVGlt
ZShtaW51dGUgLT0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDM6MDQiLCBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUobWludXRlKyspKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDAzOjA2
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKCsrbWludXRlKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0w
MS0wMlQwMzowNiIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtaW51dGUtLSkpOworICBFWFBFQ1Rf
RVEoIjIwMTUtMDEtMDJUMDM6MDQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoLS1taW51dGUpKTsK
KworICBhYnNsOjpDaXZpbEhvdXIgaG91cigyMDE1LCAxLCAyLCAzKTsKKyAgRVhQRUNUX0VRKCIy
MDE1LTAxLTAyVDA0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGhvdXIgKz0gMSkpOworICBFWFBF
Q1RfRVEoIjIwMTUtMDEtMDJUMDUiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoaG91ciArIDEpKTsK
KyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDA2IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKDIgKyBo
b3VyKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMyIsIGFic2w6OkZvcm1hdENpdmlsVGlt
ZShob3VyIC0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJUMDMiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUoaG91ciAtPSAxKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMlQwMyIsIGFic2w6
OkZvcm1hdENpdmlsVGltZShob3VyKyspKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxLTAyVDA1Iiwg
YWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKCsraG91cikpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDJU
MDUiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoaG91ci0tKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0w
MS0wMlQwMyIsIGFic2w6OkZvcm1hdENpdmlsVGltZSgtLWhvdXIpKTsKKworICBhYnNsOjpDaXZp
bERheSBkYXkoMjAxNSwgMSwgMik7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMyIsIGFic2w6OkZv
cm1hdENpdmlsVGltZShkYXkgKz0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDQiLCBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoZGF5ICsgMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDUiLCBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUoMiArIGRheSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDIi
LCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoZGF5IC0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEt
MDIiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoZGF5IC09IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1
LTAxLTAyIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGRheSsrKSk7CisgIEVYUEVDVF9FUSgiMjAx
NS0wMS0wNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZSgrK2RheSkpOworICBFWFBFQ1RfRVEoIjIw
MTUtMDEtMDQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoZGF5LS0pKTsKKyAgRVhQRUNUX0VRKCIy
MDE1LTAxLTAyIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKC0tZGF5KSk7CisKKyAgYWJzbDo6Q2l2
aWxNb250aCBtb250aCgyMDE1LCAxKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAyIiwgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKG1vbnRoICs9IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAzIiwgYWJzbDo6
Rm9ybWF0Q2l2aWxUaW1lKG1vbnRoICsgMSkpOworICBFWFBFQ1RfRVEoIjIwMTUtMDQiLCBhYnNs
OjpGb3JtYXRDaXZpbFRpbWUoMiArIG1vbnRoKSk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMSIsIGFi
c2w6OkZvcm1hdENpdmlsVGltZShtb250aCAtIDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAxIiwg
YWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1vbnRoIC09IDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAx
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1vbnRoKyspKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAz
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKCsrbW9udGgpKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAz
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1vbnRoLS0pKTsKKyAgRVhQRUNUX0VRKCIyMDE1LTAx
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKC0tbW9udGgpKTsKKworICBhYnNsOjpDaXZpbFllYXIg
eWVhcigyMDE1KTsKKyAgRVhQRUNUX0VRKCIyMDE2IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHll
YXIgKz0gMSkpOworICBFWFBFQ1RfRVEoIjIwMTciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoeWVh
ciArIDEpKTsKKyAgRVhQRUNUX0VRKCIyMDE4IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKDIgKyB5
ZWFyKSk7CisgIEVYUEVDVF9FUSgiMjAxNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh5ZWFyIC0g
MSkpOworICBFWFBFQ1RfRVEoIjIwMTUiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoeWVhciAtPSAx
KSk7CisgIEVYUEVDVF9FUSgiMjAxNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh5ZWFyKyspKTsK
KyAgRVhQRUNUX0VRKCIyMDE3IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKCsreWVhcikpOworICBF
WFBFQ1RfRVEoIjIwMTciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoeWVhci0tKSk7CisgIEVYUEVD
VF9FUSgiMjAxNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZSgtLXllYXIpKTsKK30KKworVEVTVChD
aXZpbFRpbWUsIEFyaXRobWV0aWNMaW1pdHMpIHsKKyAgY29uc3QgaW50IGtJbnRNYXggPSBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICBjb25zdCBpbnQga0ludE1pbiA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7CisKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgc2Vjb25k
KDE5NzAsIDEsIDEsIDAsIDAsIDApOworICBzZWNvbmQgKz0ga0ludE1heDsKKyAgRVhQRUNUX0VR
KCIyMDM4LTAxLTE5VDAzOjE0OjA3IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHNlY29uZCkpOwor
ICBzZWNvbmQgLT0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAwOjAwIiwg
YWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHNlY29uZCkpOworICBzZWNvbmQgKz0ga0ludE1pbjsKKyAg
RVhQRUNUX0VRKCIxOTAxLTEyLTEzVDIwOjQ1OjUyIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHNl
Y29uZCkpOworICBzZWNvbmQgLT0ga0ludE1pbjsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAw
OjAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHNlY29uZCkpOworCisgIGFic2w6OkNpdmls
TWludXRlIG1pbnV0ZSgxOTcwLCAxLCAxLCAwLCAwKTsKKyAgbWludXRlICs9IGtJbnRNYXg7Cisg
IEVYUEVDVF9FUSgiNjA1My0wMS0yM1QwMjowNyIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtaW51
dGUpKTsKKyAgbWludXRlIC09IGtJbnRNYXg7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDow
MCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtaW51dGUpKTsKKyAgbWludXRlICs9IGtJbnRNaW47
CisgIEVYUEVDVF9FUSgiLTIxMTQtMTItMDhUMjE6NTIiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUo
bWludXRlKSk7CisgIG1pbnV0ZSAtPSBrSW50TWluOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFU
MDA6MDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUobWludXRlKSk7CisKKyAgYWJzbDo6Q2l2aWxI
b3VyIGhvdXIoMTk3MCwgMSwgMSwgMCk7CisgIGhvdXIgKz0ga0ludE1heDsKKyAgRVhQRUNUX0VR
KCIyNDY5NTMtMTAtMDlUMDciLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoaG91cikpOworICBob3Vy
IC09IGtJbnRNYXg7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMCIsIGFic2w6OkZvcm1hdENp
dmlsVGltZShob3VyKSk7CisgIGhvdXIgKz0ga0ludE1pbjsKKyAgRVhQRUNUX0VRKCItMjQzMDE0
LTAzLTI0VDE2IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGhvdXIpKTsKKyAgaG91ciAtPSBrSW50
TWluOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDAiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUo
aG91cikpOworCisgIGFic2w6OkNpdmlsRGF5IGRheSgxOTcwLCAxLCAxKTsKKyAgZGF5ICs9IGtJ
bnRNYXg7CisgIEVYUEVDVF9FUSgiNTg4MTU4MC0wNy0xMSIsIGFic2w6OkZvcm1hdENpdmlsVGlt
ZShkYXkpKTsKKyAgZGF5IC09IGtJbnRNYXg7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMSIsIGFi
c2w6OkZvcm1hdENpdmlsVGltZShkYXkpKTsKKyAgZGF5ICs9IGtJbnRNaW47CisgIEVYUEVDVF9F
USgiLTU4Nzc2NDEtMDYtMjMiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoZGF5KSk7CisgIGRheSAt
PSBrSW50TWluOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRp
bWUoZGF5KSk7CisKKyAgYWJzbDo6Q2l2aWxNb250aCBtb250aCgxOTcwLCAxKTsKKyAgbW9udGgg
Kz0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCIxNzg5NTg5NDAtMDgiLCBhYnNsOjpGb3JtYXRDaXZp
bFRpbWUobW9udGgpKTsKKyAgbW9udGggLT0ga0ludE1heDsKKyAgRVhQRUNUX0VRKCIxOTcwLTAx
IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1vbnRoKSk7CisgIG1vbnRoICs9IGtJbnRNaW47Cisg
IEVYUEVDVF9FUSgiLTE3ODk1NTAwMS0wNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShtb250aCkp
OworICBtb250aCAtPSBrSW50TWluOworICBFWFBFQ1RfRVEoIjE5NzAtMDEiLCBhYnNsOjpGb3Jt
YXRDaXZpbFRpbWUobW9udGgpKTsKKworICBhYnNsOjpDaXZpbFllYXIgeWVhcigwKTsKKyAgeWVh
ciArPSBrSW50TWF4OworICBFWFBFQ1RfRVEoIjIxNDc0ODM2NDciLCBhYnNsOjpGb3JtYXRDaXZp
bFRpbWUoeWVhcikpOworICB5ZWFyIC09IGtJbnRNYXg7CisgIEVYUEVDVF9FUSgiMCIsIGFic2w6
OkZvcm1hdENpdmlsVGltZSh5ZWFyKSk7CisgIHllYXIgKz0ga0ludE1pbjsKKyAgRVhQRUNUX0VR
KCItMjE0NzQ4MzY0OCIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh5ZWFyKSk7CisgIHllYXIgLT0g
a0ludE1pbjsKKyAgRVhQRUNUX0VRKCIwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHllYXIpKTsK
K30KKworVEVTVChDaXZpbFRpbWUsIERpZmZlcmVuY2UpIHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQg
c2Vjb25kKDIwMTUsIDEsIDIsIDMsIDQsIDUpOworICBFWFBFQ1RfRVEoMCwgc2Vjb25kIC0gc2Vj
b25kKTsKKyAgRVhQRUNUX0VRKDEwLCAoc2Vjb25kICsgMTApIC0gc2Vjb25kKTsKKyAgRVhQRUNU
X0VRKC0xMCwgKHNlY29uZCAtIDEwKSAtIHNlY29uZCk7CisKKyAgYWJzbDo6Q2l2aWxNaW51dGUg
bWludXRlKDIwMTUsIDEsIDIsIDMsIDQpOworICBFWFBFQ1RfRVEoMCwgbWludXRlIC0gbWludXRl
KTsKKyAgRVhQRUNUX0VRKDEwLCAobWludXRlICsgMTApIC0gbWludXRlKTsKKyAgRVhQRUNUX0VR
KC0xMCwgKG1pbnV0ZSAtIDEwKSAtIG1pbnV0ZSk7CisKKyAgYWJzbDo6Q2l2aWxIb3VyIGhvdXIo
MjAxNSwgMSwgMiwgMyk7CisgIEVYUEVDVF9FUSgwLCBob3VyIC0gaG91cik7CisgIEVYUEVDVF9F
USgxMCwgKGhvdXIgKyAxMCkgLSBob3VyKTsKKyAgRVhQRUNUX0VRKC0xMCwgKGhvdXIgLSAxMCkg
LSBob3VyKTsKKworICBhYnNsOjpDaXZpbERheSBkYXkoMjAxNSwgMSwgMik7CisgIEVYUEVDVF9F
USgwLCBkYXkgLSBkYXkpOworICBFWFBFQ1RfRVEoMTAsIChkYXkgKyAxMCkgLSBkYXkpOworICBF
WFBFQ1RfRVEoLTEwLCAoZGF5IC0gMTApIC0gZGF5KTsKKworICBhYnNsOjpDaXZpbE1vbnRoIG1v
bnRoKDIwMTUsIDEpOworICBFWFBFQ1RfRVEoMCwgbW9udGggLSBtb250aCk7CisgIEVYUEVDVF9F
USgxMCwgKG1vbnRoICsgMTApIC0gbW9udGgpOworICBFWFBFQ1RfRVEoLTEwLCAobW9udGggLSAx
MCkgLSBtb250aCk7CisKKyAgYWJzbDo6Q2l2aWxZZWFyIHllYXIoMjAxNSk7CisgIEVYUEVDVF9F
USgwLCB5ZWFyIC0geWVhcik7CisgIEVYUEVDVF9FUSgxMCwgKHllYXIgKyAxMCkgLSB5ZWFyKTsK
KyAgRVhQRUNUX0VRKC0xMCwgKHllYXIgLSAxMCkgLSB5ZWFyKTsKK30KKworVEVTVChDaXZpbFRp
bWUsIERpZmZlcmVuY2VMaW1pdHMpIHsKKyAgY29uc3QgYWJzbDo6Y2l2aWxfZGlmZl90IGtEaWZm
TWF4ID0KKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8YWJzbDo6Y2l2aWxfZGlmZl90Pjo6bWF4
KCk7CisgIGNvbnN0IGFic2w6OmNpdmlsX2RpZmZfdCBrRGlmZk1pbiA9CisgICAgICBzdGQ6Om51
bWVyaWNfbGltaXRzPGFic2w6OmNpdmlsX2RpZmZfdD46Om1pbigpOworCisgIC8vIENoZWNrIGRh
eSBhcml0aG1ldGljIGF0IHRoZSBlbmQgb2YgdGhlIHllYXIgcmFuZ2UuCisgIGNvbnN0IGFic2w6
OkNpdmlsRGF5IG1heF9kYXkoa0RpZmZNYXgsIDEyLCAzMSk7CisgIEVYUEVDVF9FUSgxLCBtYXhf
ZGF5IC0gKG1heF9kYXkgLSAxKSk7CisgIEVYUEVDVF9FUSgtMSwgKG1heF9kYXkgLSAxKSAtIG1h
eF9kYXkpOworCisgIC8vIENoZWNrIGRheSBhcml0aG1ldGljIGF0IHRoZSBzdGFydCBvZiB0aGUg
eWVhciByYW5nZS4KKyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgbWluX2RheShrRGlmZk1pbiwgMSwg
MSk7CisgIEVYUEVDVF9FUSgxLCAobWluX2RheSArIDEpIC0gbWluX2RheSk7CisgIEVYUEVDVF9F
USgtMSwgbWluX2RheSAtIChtaW5fZGF5ICsgMSkpOworCisgIC8vIENoZWNrIHRoZSBsaW1pdHMg
b2YgdGhlIHJldHVybiB2YWx1ZS4KKyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgZDEoMTk3MCwgMSwg
MSk7CisgIGNvbnN0IGFic2w6OkNpdmlsRGF5IGQyKDI1MjUyNzM0OTI3NzY4NTI0LCA3LCAyNyk7
CisgIEVYUEVDVF9FUShrRGlmZk1heCwgZDIgLSBkMSk7CisgIEVYUEVDVF9FUShrRGlmZk1pbiwg
ZDEgLSAoZDIgKyAxKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBQcm9wZXJ0aWVzKSB7CisgIGFi
c2w6OkNpdmlsU2Vjb25kIHNzKDIwMTUsIDIsIDMsIDQsIDUsIDYpOworICBFWFBFQ1RfRVEoMjAx
NSwgc3MueWVhcigpKTsKKyAgRVhQRUNUX0VRKDIsIHNzLm1vbnRoKCkpOworICBFWFBFQ1RfRVEo
Mywgc3MuZGF5KCkpOworICBFWFBFQ1RfRVEoNCwgc3MuaG91cigpKTsKKyAgRVhQRUNUX0VRKDUs
IHNzLm1pbnV0ZSgpKTsKKyAgRVhQRUNUX0VRKDYsIHNzLnNlY29uZCgpKTsKKyAgRVhQRUNUX0VR
KGFic2w6OldlZWtkYXk6OnR1ZXNkYXksIGFic2w6OkdldFdlZWtkYXkoc3MpKTsKKyAgRVhQRUNU
X0VRKDM0LCBhYnNsOjpHZXRZZWFyRGF5KHNzKSk7CisKKyAgYWJzbDo6Q2l2aWxNaW51dGUgbW0o
MjAxNSwgMiwgMywgNCwgNSwgNik7CisgIEVYUEVDVF9FUSgyMDE1LCBtbS55ZWFyKCkpOworICBF
WFBFQ1RfRVEoMiwgbW0ubW9udGgoKSk7CisgIEVYUEVDVF9FUSgzLCBtbS5kYXkoKSk7CisgIEVY
UEVDVF9FUSg0LCBtbS5ob3VyKCkpOworICBFWFBFQ1RfRVEoNSwgbW0ubWludXRlKCkpOworICBF
WFBFQ1RfRVEoMCwgbW0uc2Vjb25kKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6V2Vla2RheTo6dHVl
c2RheSwgYWJzbDo6R2V0V2Vla2RheShtbSkpOworICBFWFBFQ1RfRVEoMzQsIGFic2w6OkdldFll
YXJEYXkobW0pKTsKKworICBhYnNsOjpDaXZpbEhvdXIgaGgoMjAxNSwgMiwgMywgNCwgNSwgNik7
CisgIEVYUEVDVF9FUSgyMDE1LCBoaC55ZWFyKCkpOworICBFWFBFQ1RfRVEoMiwgaGgubW9udGgo
KSk7CisgIEVYUEVDVF9FUSgzLCBoaC5kYXkoKSk7CisgIEVYUEVDVF9FUSg0LCBoaC5ob3VyKCkp
OworICBFWFBFQ1RfRVEoMCwgaGgubWludXRlKCkpOworICBFWFBFQ1RfRVEoMCwgaGguc2Vjb25k
KCkpOworICBFWFBFQ1RfRVEoYWJzbDo6V2Vla2RheTo6dHVlc2RheSwgYWJzbDo6R2V0V2Vla2Rh
eShoaCkpOworICBFWFBFQ1RfRVEoMzQsIGFic2w6OkdldFllYXJEYXkoaGgpKTsKKworICBhYnNs
OjpDaXZpbERheSBkKDIwMTUsIDIsIDMsIDQsIDUsIDYpOworICBFWFBFQ1RfRVEoMjAxNSwgZC55
ZWFyKCkpOworICBFWFBFQ1RfRVEoMiwgZC5tb250aCgpKTsKKyAgRVhQRUNUX0VRKDMsIGQuZGF5
KCkpOworICBFWFBFQ1RfRVEoMCwgZC5ob3VyKCkpOworICBFWFBFQ1RfRVEoMCwgZC5taW51dGUo
KSk7CisgIEVYUEVDVF9FUSgwLCBkLnNlY29uZCgpKTsKKyAgRVhQRUNUX0VRKGFic2w6OldlZWtk
YXk6OnR1ZXNkYXksIGFic2w6OkdldFdlZWtkYXkoZCkpOworICBFWFBFQ1RfRVEoMzQsIGFic2w6
OkdldFllYXJEYXkoZCkpOworCisgIGFic2w6OkNpdmlsTW9udGggbSgyMDE1LCAyLCAzLCA0LCA1
LCA2KTsKKyAgRVhQRUNUX0VRKDIwMTUsIG0ueWVhcigpKTsKKyAgRVhQRUNUX0VRKDIsIG0ubW9u
dGgoKSk7CisgIEVYUEVDVF9FUSgxLCBtLmRheSgpKTsKKyAgRVhQRUNUX0VRKDAsIG0uaG91cigp
KTsKKyAgRVhQRUNUX0VRKDAsIG0ubWludXRlKCkpOworICBFWFBFQ1RfRVEoMCwgbS5zZWNvbmQo
KSk7CisgIEVYUEVDVF9FUShhYnNsOjpXZWVrZGF5OjpzdW5kYXksIGFic2w6OkdldFdlZWtkYXko
bSkpOworICBFWFBFQ1RfRVEoMzIsIGFic2w6OkdldFllYXJEYXkobSkpOworCisgIGFic2w6OkNp
dmlsWWVhciB5KDIwMTUsIDIsIDMsIDQsIDUsIDYpOworICBFWFBFQ1RfRVEoMjAxNSwgeS55ZWFy
KCkpOworICBFWFBFQ1RfRVEoMSwgeS5tb250aCgpKTsKKyAgRVhQRUNUX0VRKDEsIHkuZGF5KCkp
OworICBFWFBFQ1RfRVEoMCwgeS5ob3VyKCkpOworICBFWFBFQ1RfRVEoMCwgeS5taW51dGUoKSk7
CisgIEVYUEVDVF9FUSgwLCB5LnNlY29uZCgpKTsKKyAgRVhQRUNUX0VRKGFic2w6OldlZWtkYXk6
OnRodXJzZGF5LCBhYnNsOjpHZXRXZWVrZGF5KHkpKTsKKyAgRVhQRUNUX0VRKDEsIGFic2w6Okdl
dFllYXJEYXkoeSkpOworfQorCitURVNUKENpdmlsVGltZSwgRm9ybWF0KSB7CisgIGFic2w6OkNp
dmlsU2Vjb25kIHNzOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDA6MDAiLCBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoc3MpKTsKKworICBhYnNsOjpDaXZpbE1pbnV0ZSBtbTsKKyAgRVhQRUNU
X0VRKCIxOTcwLTAxLTAxVDAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG1tKSk7CisKKyAg
YWJzbDo6Q2l2aWxIb3VyIGhoOworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDAiLCBhYnNsOjpG
b3JtYXRDaXZpbFRpbWUoaGgpKTsKKworICBhYnNsOjpDaXZpbERheSBkOworICBFWFBFQ1RfRVEo
IjE5NzAtMDEtMDEiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoZCkpOworCisgIGFic2w6OkNpdmls
TW9udGggbTsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKG0p
KTsKKworICBhYnNsOjpDaXZpbFllYXIgeTsKKyAgRVhQRUNUX0VRKCIxOTcwIiwgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKHkpKTsKK30KKworVEVTVChDaXZpbFRpbWUsIEZvcm1hdEFuZFBhcnNlTGVu
aWVudCkgeworICBhYnNsOjpDaXZpbFNlY29uZCBzczsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAx
VDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKHNzKSk7CisKKyAgYWJzbDo6Q2l2aWxN
aW51dGUgbW07CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDowMCIsIGFic2w6OkZvcm1hdENp
dmlsVGltZShtbSkpOworCisgIGFic2w6OkNpdmlsSG91ciBoaDsKKyAgRVhQRUNUX0VRKCIxOTcw
LTAxLTAxVDAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGhoKSk7CisKKyAgYWJzbDo6Q2l2aWxE
YXkgZDsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGQp
KTsKKworICBhYnNsOjpDaXZpbE1vbnRoIG07CisgIEVYUEVDVF9FUSgiMTk3MC0wMSIsIGFic2w6
OkZvcm1hdENpdmlsVGltZShtKSk7CisKKyAgYWJzbDo6Q2l2aWxZZWFyIHk7CisgIEVYUEVDVF9F
USgiMTk3MCIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh5KSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1l
LCBPdXRwdXRTdHJlYW0pIHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgY3MoMjAxNiwgMiwgMywgNCwg
NSwgNik7CisgIHsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBzcyA8PCBzdGQ6Omxl
ZnQgPDwgc3RkOjpzZXRmaWxsKCcuJyk7CisgICAgc3MgPDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsK
KyAgICBzcyA8PCBzdGQ6OnNldHcoMjEpIDw8IGFic2w6OkNpdmlsWWVhcihjcyk7CisgICAgc3Mg
PDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsKKyAgICBFWFBFQ1RfRVEoIlguLjIwMTYuLi4uLi4uLi4u
Li4uLi4uLlguLiIsIHNzLnN0cigpKTsKKyAgfQorICB7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0g
c3M7CisgICAgc3MgPDwgc3RkOjpsZWZ0IDw8IHN0ZDo6c2V0ZmlsbCgnLicpOworICAgIHNzIDw8
IHN0ZDo6c2V0dygzKSA8PCAnWCc7CisgICAgc3MgPDwgc3RkOjpzZXR3KDIxKSA8PCBhYnNsOjpD
aXZpbE1vbnRoKGNzKTsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMykgPDwgJ1gnOworICAgIEVYUEVD
VF9FUSgiWC4uMjAxNi0wMi4uLi4uLi4uLi4uLi4uWC4uIiwgc3Muc3RyKCkpOworICB9CisgIHsK
KyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBzcyA8PCBzdGQ6OmxlZnQgPDwgc3RkOjpz
ZXRmaWxsKCcuJyk7CisgICAgc3MgPDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsKKyAgICBzcyA8PCBz
dGQ6OnNldHcoMjEpIDw8IGFic2w6OkNpdmlsRGF5KGNzKTsKKyAgICBzcyA8PCBzdGQ6OnNldHco
MykgPDwgJ1gnOworICAgIEVYUEVDVF9FUSgiWC4uMjAxNi0wMi0wMy4uLi4uLi4uLi4uWC4uIiwg
c3Muc3RyKCkpOworICB9CisgIHsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBzcyA8
PCBzdGQ6OmxlZnQgPDwgc3RkOjpzZXRmaWxsKCcuJyk7CisgICAgc3MgPDwgc3RkOjpzZXR3KDMp
IDw8ICdYJzsKKyAgICBzcyA8PCBzdGQ6OnNldHcoMjEpIDw8IGFic2w6OkNpdmlsSG91cihjcyk7
CisgICAgc3MgPDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsKKyAgICBFWFBFQ1RfRVEoIlguLjIwMTYt
MDItMDNUMDQuLi4uLi4uLlguLiIsIHNzLnN0cigpKTsKKyAgfQorICB7CisgICAgc3RkOjpzdHJp
bmdzdHJlYW0gc3M7CisgICAgc3MgPDwgc3RkOjpsZWZ0IDw8IHN0ZDo6c2V0ZmlsbCgnLicpOwor
ICAgIHNzIDw8IHN0ZDo6c2V0dygzKSA8PCAnWCc7CisgICAgc3MgPDwgc3RkOjpzZXR3KDIxKSA8
PCBhYnNsOjpDaXZpbE1pbnV0ZShjcyk7CisgICAgc3MgPDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsK
KyAgICBFWFBFQ1RfRVEoIlguLjIwMTYtMDItMDNUMDQ6MDUuLi4uLlguLiIsIHNzLnN0cigpKTsK
KyAgfQorICB7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgICAgc3MgPDwgc3RkOjpsZWZ0
IDw8IHN0ZDo6c2V0ZmlsbCgnLicpOworICAgIHNzIDw8IHN0ZDo6c2V0dygzKSA8PCAnWCc7Cisg
ICAgc3MgPDwgc3RkOjpzZXR3KDIxKSA8PCBhYnNsOjpDaXZpbFNlY29uZChjcyk7CisgICAgc3Mg
PDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsKKyAgICBFWFBFQ1RfRVEoIlguLjIwMTYtMDItMDNUMDQ6
MDU6MDYuLlguLiIsIHNzLnN0cigpKTsKKyAgfQorICB7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0g
c3M7CisgICAgc3MgPDwgc3RkOjpsZWZ0IDw8IHN0ZDo6c2V0ZmlsbCgnLicpOworICAgIHNzIDw8
IHN0ZDo6c2V0dygzKSA8PCAnWCc7CisgICAgc3MgPDwgc3RkOjpzZXR3KDIxKSA8PCBhYnNsOjpX
ZWVrZGF5Ojp3ZWRuZXNkYXk7CisgICAgc3MgPDwgc3RkOjpzZXR3KDMpIDw8ICdYJzsKKyAgICBF
WFBFQ1RfRVEoIlguLldlZG5lc2RheS4uLi4uLi4uLi4uLlguLiIsIHNzLnN0cigpKTsKKyAgfQor
fQorCitURVNUKENpdmlsVGltZSwgV2Vla2RheSkgeworICBhYnNsOjpDaXZpbERheSBkKDE5NzAs
IDEsIDEpOworICBFWFBFQ1RfRVEoYWJzbDo6V2Vla2RheTo6dGh1cnNkYXksIGFic2w6OkdldFdl
ZWtkYXkoZCkpIDw8IGQ7CisKKyAgLy8gV2UgdXNlZCB0byBnZXQgdGhpcyB3cm9uZyBmb3IgeWVh
cnMgPCAtMzAuCisgIGQgPSBhYnNsOjpDaXZpbERheSgtMzEsIDEyLCAyNCk7CisgIEVYUEVDVF9F
UShhYnNsOjpXZWVrZGF5Ojp3ZWRuZXNkYXksIGFic2w6OkdldFdlZWtkYXkoZCkpIDw8IGQ7Cit9
CisKK1RFU1QoQ2l2aWxUaW1lLCBOZXh0UHJldldlZWtkYXkpIHsKKyAgLy8gSmFuIDEsIDE5NzAg
d2FzIGEgVGh1cnNkYXkuCisgIGNvbnN0IGFic2w6OkNpdmlsRGF5IHRodXJzZGF5KDE5NzAsIDEs
IDEpOworCisgIC8vIFRodXJzZGF5IC0+IFRodXJzZGF5CisgIGFic2w6OkNpdmlsRGF5IGQgPSBh
YnNsOjpOZXh0V2Vla2RheSh0aHVyc2RheSwgYWJzbDo6V2Vla2RheTo6dGh1cnNkYXkpOworICBF
WFBFQ1RfRVEoNywgZCAtIHRodXJzZGF5KSA8PCBkOworICBFWFBFQ1RfRVEoZCAtIDE0LCBhYnNs
OjpQcmV2V2Vla2RheSh0aHVyc2RheSwgYWJzbDo6V2Vla2RheTo6dGh1cnNkYXkpKTsKKworICAv
LyBUaHVyc2RheSAtPiBGcmlkYXkKKyAgZCA9IGFic2w6Ok5leHRXZWVrZGF5KHRodXJzZGF5LCBh
YnNsOjpXZWVrZGF5OjpmcmlkYXkpOworICBFWFBFQ1RfRVEoMSwgZCAtIHRodXJzZGF5KSA8PCBk
OworICBFWFBFQ1RfRVEoZCAtIDcsIGFic2w6OlByZXZXZWVrZGF5KHRodXJzZGF5LCBhYnNsOjpX
ZWVrZGF5OjpmcmlkYXkpKTsKKworICAvLyBUaHVyc2RheSAtPiBTYXR1cmRheQorICBkID0gYWJz
bDo6TmV4dFdlZWtkYXkodGh1cnNkYXksIGFic2w6OldlZWtkYXk6OnNhdHVyZGF5KTsKKyAgRVhQ
RUNUX0VRKDIsIGQgLSB0aHVyc2RheSkgPDwgZDsKKyAgRVhQRUNUX0VRKGQgLSA3LCBhYnNsOjpQ
cmV2V2Vla2RheSh0aHVyc2RheSwgYWJzbDo6V2Vla2RheTo6c2F0dXJkYXkpKTsKKworICAvLyBU
aHVyc2RheSAtPiBTdW5kYXkKKyAgZCA9IGFic2w6Ok5leHRXZWVrZGF5KHRodXJzZGF5LCBhYnNs
OjpXZWVrZGF5OjpzdW5kYXkpOworICBFWFBFQ1RfRVEoMywgZCAtIHRodXJzZGF5KSA8PCBkOwor
ICBFWFBFQ1RfRVEoZCAtIDcsIGFic2w6OlByZXZXZWVrZGF5KHRodXJzZGF5LCBhYnNsOjpXZWVr
ZGF5OjpzdW5kYXkpKTsKKworICAvLyBUaHVyc2RheSAtPiBNb25kYXkKKyAgZCA9IGFic2w6Ok5l
eHRXZWVrZGF5KHRodXJzZGF5LCBhYnNsOjpXZWVrZGF5Ojptb25kYXkpOworICBFWFBFQ1RfRVEo
NCwgZCAtIHRodXJzZGF5KSA8PCBkOworICBFWFBFQ1RfRVEoZCAtIDcsIGFic2w6OlByZXZXZWVr
ZGF5KHRodXJzZGF5LCBhYnNsOjpXZWVrZGF5Ojptb25kYXkpKTsKKworICAvLyBUaHVyc2RheSAt
PiBUdWVzZGF5CisgIGQgPSBhYnNsOjpOZXh0V2Vla2RheSh0aHVyc2RheSwgYWJzbDo6V2Vla2Rh
eTo6dHVlc2RheSk7CisgIEVYUEVDVF9FUSg1LCBkIC0gdGh1cnNkYXkpIDw8IGQ7CisgIEVYUEVD
VF9FUShkIC0gNywgYWJzbDo6UHJldldlZWtkYXkodGh1cnNkYXksIGFic2w6OldlZWtkYXk6OnR1
ZXNkYXkpKTsKKworICAvLyBUaHVyc2RheSAtPiBXZWRuZXNkYXkKKyAgZCA9IGFic2w6Ok5leHRX
ZWVrZGF5KHRodXJzZGF5LCBhYnNsOjpXZWVrZGF5Ojp3ZWRuZXNkYXkpOworICBFWFBFQ1RfRVEo
NiwgZCAtIHRodXJzZGF5KSA8PCBkOworICBFWFBFQ1RfRVEoZCAtIDcsIGFic2w6OlByZXZXZWVr
ZGF5KHRodXJzZGF5LCBhYnNsOjpXZWVrZGF5Ojp3ZWRuZXNkYXkpKTsKK30KKworLy8gTk9URTog
UnVuIHRoaXMgd2l0aCAtLWNvcHQ9LWZ0cmFwdiB0byBkZXRlY3Qgb3ZlcmZsb3cgcHJvYmxlbXMu
CitURVNUKENpdmlsVGltZSwgRGlmZmVyZW5jZVdpdGhIdWdlWWVhcikgeworICBhYnNsOjpDaXZp
bERheSBkMSg5MjIzMzcyMDM2ODU0Nzc1ODA3LCAxLCAxKTsKKyAgYWJzbDo6Q2l2aWxEYXkgZDIo
OTIyMzM3MjAzNjg1NDc3NTgwNywgMTIsIDMxKTsKKyAgRVhQRUNUX0VRKDM2NCwgZDIgLSBkMSk7
CisKKyAgZDEgPSBhYnNsOjpDaXZpbERheSgtOTIyMzM3MjAzNjg1NDc3NTgwNyAtIDEsIDEsIDEp
OworICBkMiA9IGFic2w6OkNpdmlsRGF5KC05MjIzMzcyMDM2ODU0Nzc1ODA3IC0gMSwgMTIsIDMx
KTsKKyAgRVhQRUNUX0VRKDM2NSwgZDIgLSBkMSk7CisKKyAgLy8gQ2hlY2sgdGhlIGxpbWl0cyBv
ZiB0aGUgcmV0dXJuIHZhbHVlIGF0IHRoZSBlbmQgb2YgdGhlIHllYXIgcmFuZ2UuCisgIGQxID0g
YWJzbDo6Q2l2aWxEYXkoOTIyMzM3MjAzNjg1NDc3NTgwNywgMSwgMSk7CisgIGQyID0gYWJzbDo6
Q2l2aWxEYXkoOTE5ODExOTMwMTkyNzAwOTI1MiwgNiwgNik7CisgIEVYUEVDVF9FUSg5MjIzMzcy
MDM2ODU0Nzc1ODA3LCBkMSAtIGQyKTsKKyAgZDIgPSBkMiAtIDE7CisgIEVYUEVDVF9FUSgtOTIy
MzM3MjAzNjg1NDc3NTgwNyAtIDEsIGQyIC0gZDEpOworCisgIC8vIENoZWNrIHRoZSBsaW1pdHMg
b2YgdGhlIHJldHVybiB2YWx1ZSBhdCB0aGUgc3RhcnQgb2YgdGhlIHllYXIgcmFuZ2UuCisgIGQx
ID0gYWJzbDo6Q2l2aWxEYXkoLTkyMjMzNzIwMzY4NTQ3NzU4MDcgLSAxLCAxLCAxKTsKKyAgZDIg
PSBhYnNsOjpDaXZpbERheSgtOTE5ODExOTMwMTkyNzAwOTI1NCwgNywgMjgpOworICBFWFBFQ1Rf
RVEoOTIyMzM3MjAzNjg1NDc3NTgwNywgZDIgLSBkMSk7CisgIGQyID0gZDIgKyAxOworICBFWFBF
Q1RfRVEoLTkyMjMzNzIwMzY4NTQ3NzU4MDcgLSAxLCBkMSAtIGQyKTsKKworICAvLyBDaGVjayB0
aGUgbGltaXRzIG9mIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBlaXRoZXIgc2lkZSBvZiB5ZWFyIDAu
CisgIGQxID0gYWJzbDo6Q2l2aWxEYXkoLTEyNjI2MzY3NDYzODgzMjc4LCA5LCAzKTsKKyAgZDIg
PSBhYnNsOjpDaXZpbERheSgxMjYyNjM2NzQ2Mzg4MzI3NywgMywgMjgpOworICBFWFBFQ1RfRVEo
OTIyMzM3MjAzNjg1NDc3NTgwNywgZDIgLSBkMSk7CisgIGQyID0gZDIgKyAxOworICBFWFBFQ1Rf
RVEoLTkyMjMzNzIwMzY4NTQ3NzU4MDcgLSAxLCBkMSAtIGQyKTsKK30KKworLy8gTk9URTogUnVu
IHRoaXMgd2l0aCAtLWNvcHQ9LWZ0cmFwdiB0byBkZXRlY3Qgb3ZlcmZsb3cgcHJvYmxlbXMuCitU
RVNUKENpdmlsVGltZSwgRGlmZmVyZW5jZU5vSW50ZXJtZWRpYXRlT3ZlcmZsb3cpIHsKKyAgLy8g
VGhlIGRpZmZlcmVuY2UgdXAgdG8gdGhlIG1pbnV0ZSBmaWVsZCB3b3VsZCBiZSBiZWxvdyB0aGUg
bWluaW11bQorICAvLyBpbnQ2NF90LCBidXQgdGhlIDUyIGV4dHJhIHNlY29uZHMgYnJpbmdzIHVz
IGJhY2sgdG8gdGhlIG1pbmltdW0uCisgIGFic2w6OkNpdmlsU2Vjb25kIHMxKC0yOTIyNzcwMjI2
NTcsIDEsIDI3LCA4LCAyOSAtIDEsIDUyKTsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgczIoMTk3MCwg
MSwgMSwgMCwgMCAtIDEsIDApOworICBFWFBFQ1RfRVEoLTkyMjMzNzIwMzY4NTQ3NzU4MDcgLSAx
LCBzMSAtIHMyKTsKKworICAvLyBUaGUgZGlmZmVyZW5jZSB1cCB0byB0aGUgbWludXRlIGZpZWxk
IHdvdWxkIGJlIGFib3ZlIHRoZSBtYXhpbXVtCisgIC8vIGludDY0X3QsIGJ1dCB0aGUgLTUzIGV4
dHJhIHNlY29uZHMgYnJpbmdzIHVzIGJhY2sgdG8gdGhlIG1heGltdW0uCisgIHMxID0gYWJzbDo6
Q2l2aWxTZWNvbmQoMjkyMjc3MDI2NTk2LCAxMiwgNCwgMTUsIDMwLCA3IC0gNyk7CisgIHMyID0g
YWJzbDo6Q2l2aWxTZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCAtIDcpOworICBFWFBFQ1RfRVEo
OTIyMzM3MjAzNjg1NDc3NTgwNywgczEgLSBzMik7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBOb3Jt
YWxpemVTaW1wbGVPdmVyZmxvdykgeworICBhYnNsOjpDaXZpbFNlY29uZCBjczsKKyAgY3MgPSBh
YnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMTUsIDE2LCAzMiwgNTkgKyAxKTsKKyAgRVhQRUNU
X0VRKCIyMDEzLTExLTE1VDE2OjMzOjAwIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7Cisg
IGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAxNiwgNTkgKyAxLCAxNCk7Cisg
IEVYUEVDVF9FUSgiMjAxMy0xMS0xNVQxNzowMDoxNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShj
cykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAxNSwgMjMgKyAxLCAzMiwg
MTQpOworICBFWFBFQ1RfRVEoIjIwMTMtMTEtMTZUMDA6MzI6MTQiLCBhYnNsOjpGb3JtYXRDaXZp
bFRpbWUoY3MpKTsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMzAgKyAxLCAx
NiwgMzIsIDE0KTsKKyAgRVhQRUNUX0VRKCIyMDEzLTEyLTAxVDE2OjMyOjE0IiwgYWJzbDo6Rm9y
bWF0Q2l2aWxUaW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTIgKyAx
LCAxNSwgMTYsIDMyLCAxNCk7CisgIEVYUEVDVF9FUSgiMjAxNC0wMS0xNVQxNjozMjoxNCIsIGFi
c2w6OkZvcm1hdENpdmlsVGltZShjcykpOworfQorCitURVNUKENpdmlsVGltZSwgTm9ybWFsaXpl
U2ltcGxlVW5kZXJmbG93KSB7CisgIGFic2w6OkNpdmlsU2Vjb25kIGNzOworICBjcyA9IGFic2w6
OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAxNSwgMTYsIDMyLCAwIC0gMSk7CisgIEVYUEVDVF9FUSgi
MjAxMy0xMS0xNVQxNjozMTo1OSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOworICBjcyA9
IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAxNSwgMTYsIDAgLSAxLCAxNCk7CisgIEVYUEVD
VF9FUSgiMjAxMy0xMS0xNVQxNTo1OToxNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOwor
ICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAxNSwgMCAtIDEsIDMyLCAxNCk7Cisg
IEVYUEVDVF9FUSgiMjAxMy0xMS0xNFQyMzozMjoxNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShj
cykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAxIC0gMSwgMTYsIDMyLCAx
NCk7CisgIEVYUEVDVF9FUSgiMjAxMy0xMC0zMVQxNjozMjoxNCIsIGFic2w6OkZvcm1hdENpdmls
VGltZShjcykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDEgLSAxLCAxNSwgMTYs
IDMyLCAxNCk7CisgIEVYUEVDVF9FUSgiMjAxMi0xMi0xNVQxNjozMjoxNCIsIGFic2w6OkZvcm1h
dENpdmlsVGltZShjcykpOworfQorCitURVNUKENpdmlsVGltZSwgTm9ybWFsaXplTXVsdGlwbGVP
dmVyZmxvdykgeworICBhYnNsOjpDaXZpbFNlY29uZCBjcygyMDEzLCAxMiwgMzEsIDIzLCA1OSwg
NTkgKyAxKTsKKyAgRVhQRUNUX0VRKCIyMDE0LTAxLTAxVDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0
Q2l2aWxUaW1lKGNzKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBOb3JtYWxpemVNdWx0aXBsZVVu
ZGVyZmxvdykgeworICBhYnNsOjpDaXZpbFNlY29uZCBjcygyMDE0LCAxLCAxLCAwLCAwLCAwIC0g
MSk7CisgIEVYUEVDVF9FUSgiMjAxMy0xMi0zMVQyMzo1OTo1OSIsIGFic2w6OkZvcm1hdENpdmls
VGltZShjcykpOworfQorCitURVNUKENpdmlsVGltZSwgTm9ybWFsaXplT3ZlcmZsb3dMaW1pdHMp
IHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgY3M7CisKKyAgY29uc3QgaW50IGtpbnRtYXggPSBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDAs
IGtpbnRtYXgsIGtpbnRtYXgsIGtpbnRtYXgsIGtpbnRtYXgsIGtpbnRtYXgpOworICBFWFBFQ1Rf
RVEoIjE4NTA4NTcxNS0xMS0yN1QxMjoyMTowNyIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykp
OworCisgIGNvbnN0IGludCBraW50bWluID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4o
KTsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgwLCBraW50bWluLCBraW50bWluLCBraW50bWlu
LCBraW50bWluLCBraW50bWluKTsKKyAgRVhQRUNUX0VRKCItMTg1MDg1NzE3LTEwLTMxVDEwOjM3
OjUyIiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7Cit9CisKK1RFU1QoQ2l2aWxUaW1lLCBO
b3JtYWxpemVDb21wbGV4T3ZlcmZsb3cpIHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgY3M7CisgIGNz
ID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAxNiwgMzIsIDE0ICsgMTIzNDU2Nzg5
KTsKKyAgRVhQRUNUX0VRKCIyMDE3LTEwLTE0VDE0OjA1OjIzIiwgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAxNiwgMzIg
KyAxMjM0NTY3LCAxNCk7CisgIEVYUEVDVF9FUSgiMjAxNi0wMy0yMlQwMDozOToxNCIsIGFic2w6
OkZvcm1hdENpdmlsVGltZShjcykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDEx
LCAxNSwgMTYgKyAxMjM0NTYsIDMyLCAxNCk7CisgIEVYUEVDVF9FUSgiMjAyNy0xMi0xNlQxNjoz
MjoxNCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vj
b25kKDIwMTMsIDExLCAxNSArIDEyMzQsIDE2LCAzMiwgMTQpOworICBFWFBFQ1RfRVEoIjIwMTct
MDQtMDJUMTY6MzI6MTQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKKyAgY3MgPSBhYnNs
OjpDaXZpbFNlY29uZCgyMDEzLCAxMSArIDEyMywgMTUsIDE2LCAzMiwgMTQpOworICBFWFBFQ1Rf
RVEoIjIwMjQtMDItMTVUMTY6MzI6MTQiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKK30K
KworVEVTVChDaXZpbFRpbWUsIE5vcm1hbGl6ZUNvbXBsZXhVbmRlcmZsb3cpIHsKKyAgYWJzbDo6
Q2l2aWxTZWNvbmQgY3M7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMTk5OSwgMywgMCwgMCwg
MCwgMCk7ICAvLyB5ZWFyIDQwMAorICBFWFBFQ1RfRVEoIjE5OTktMDItMjhUMDA6MDA6MDAiLCBh
YnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKKyAgY3MgPSBhYnNsOjpDaXZpbFNlY29uZCgyMDEz
LCAxMSwgMTUsIDE2LCAzMiwgMTQgLSAxMjM0NTY3ODkpOworICBFWFBFQ1RfRVEoIjIwMDktMTIt
MTdUMTg6NTk6MDUiLCBhYnNsOjpGb3JtYXRDaXZpbFRpbWUoY3MpKTsKKyAgY3MgPSBhYnNsOjpD
aXZpbFNlY29uZCgyMDEzLCAxMSwgMTUsIDE2LCAzMiAtIDEyMzQ1NjcsIDE0KTsKKyAgRVhQRUNU
X0VRKCIyMDExLTA3LTEyVDA4OjI1OjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7Cisg
IGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1LCAxNiAtIDEyMzQ1NiwgMzIsIDE0
KTsKKyAgRVhQRUNUX0VRKCIxOTk5LTEwLTE2VDE2OjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxU
aW1lKGNzKSk7CisgIGNzID0gYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMywgMTEsIDE1IC0gMTIzNCwg
MTYsIDMyLCAxNCk7CisgIEVYUEVDVF9FUSgiMjAxMC0wNi0zMFQxNjozMjoxNCIsIGFic2w6OkZv
cm1hdENpdmlsVGltZShjcykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExIC0g
MTIzLCAxNSwgMTYsIDMyLCAxNCk7CisgIEVYUEVDVF9FUSgiMjAwMy0wOC0xNVQxNjozMjoxNCIs
IGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOworfQorCitURVNUKENpdmlsVGltZSwgTm9ybWFs
aXplTWlzaG1hc2gpIHsKKyAgYWJzbDo6Q2l2aWxTZWNvbmQgY3M7CisgIGNzID0gYWJzbDo6Q2l2
aWxTZWNvbmQoMjAxMywgMTEgLSAxMjMsIDE1ICsgMTIzNCwgMTYgLSAxMjM0NTYsIDMyICsgMTIz
NDU2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAxNCAtIDEyMzQ1Njc4OSk7CisgIEVYUEVD
VF9FUSgiMTk5MS0wNS0wOVQwMzowNjowNSIsIGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOwor
ICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExICsgMTIzLCAxNSAtIDEyMzQsIDE2ICsg
MTIzNDU2LCAzMiAtIDEyMzQ1NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgMTQgKyAxMjM0
NTY3ODkpOworICBFWFBFQ1RfRVEoIjIwMzYtMDUtMjRUMDU6NTg6MjMiLCBhYnNsOjpGb3JtYXRD
aXZpbFRpbWUoY3MpKTsKKworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDExLCAtMTQ2
MDk3ICsgMSwgMTYsIDMyLCAxNCk7CisgIEVYUEVDVF9FUSgiMTYxMy0xMS0wMVQxNjozMjoxNCIs
IGFic2w6OkZvcm1hdENpdmlsVGltZShjcykpOworICBjcyA9IGFic2w6OkNpdmlsU2Vjb25kKDIw
MTMsIDExICsgNDAwICogMTIsIC0xNDYwOTcgKyAxLCAxNiwgMzIsIDE0KTsKKyAgRVhQRUNUX0VR
KCIyMDEzLTExLTAxVDE2OjMyOjE0IiwgYWJzbDo6Rm9ybWF0Q2l2aWxUaW1lKGNzKSk7Cit9CisK
Ky8vIENvbnZlcnQgYWxsIHRoZSBkYXlzIGZyb20gMTk3MC0xLTEgdG8gMTk3MC0xLTE0NjA5NyAo
YWthIDIzNjktMTItMzEpCisvLyBhbmQgY2hlY2sgdGhhdCB0aGV5IG5vcm1hbGl6ZSB0byB0aGUg
ZXhwZWN0ZWQgdGltZS4gIDE0NjA5NyBkYXlzIHNwYW4KKy8vIHRoZSA0MDAteWVhciBHcmVnb3Jp
YW4gY3ljbGUgdXNlZCBkdXJpbmcgbm9ybWFsaXphdGlvbi4KK1RFU1QoQ2l2aWxUaW1lLCBOb3Jt
YWxpemVBbGxUaGVEYXlzKSB7CisgIGFic2w6OkNpdmlsRGF5IGV4cGVjdGVkKDE5NzAsIDEsIDEp
OworICBmb3IgKGludCBkYXkgPSAxOyBkYXkgPD0gMTQ2MDk3OyArK2RheSkgeworICAgIGFic2w6
OkNpdmlsU2Vjb25kIGNzKDE5NzAsIDEsIGRheSwgMCwgMCwgMCk7CisgICAgRVhQRUNUX0VRKGV4
cGVjdGVkLCBjcyk7CisgICAgKytleHBlY3RlZDsKKyAgfQorfQorCitURVNUKENpdmlsVGltZSwg
Tm9ybWFsaXplV2l0aEh1Z2VZZWFyKSB7CisgIGFic2w6OkNpdmlsTW9udGggYyg5MjIzMzcyMDM2
ODU0Nzc1ODA3LCAxKTsKKyAgRVhQRUNUX0VRKCI5MjIzMzcyMDM2ODU0Nzc1ODA3LTAxIiwgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKGMpKTsKKyAgYyA9IGMgLSAxOyAgLy8gQ2F1c2VzIG5vcm1hbGl6
YXRpb24KKyAgRVhQRUNUX0VRKCI5MjIzMzcyMDM2ODU0Nzc1ODA2LTEyIiwgYWJzbDo6Rm9ybWF0
Q2l2aWxUaW1lKGMpKTsKKworICBjID0gYWJzbDo6Q2l2aWxNb250aCgtOTIyMzM3MjAzNjg1NDc3
NTgwNyAtIDEsIDEpOworICBFWFBFQ1RfRVEoIi05MjIzMzcyMDM2ODU0Nzc1ODA4LTAxIiwgYWJz
bDo6Rm9ybWF0Q2l2aWxUaW1lKGMpKTsKKyAgYyA9IGMgKyAxMjsgIC8vIENhdXNlcyBub3JtYWxp
emF0aW9uCisgIEVYUEVDVF9FUSgiLTkyMjMzNzIwMzY4NTQ3NzU4MDctMDEiLCBhYnNsOjpGb3Jt
YXRDaXZpbFRpbWUoYykpOworfQorCitURVNUKENpdmlsVGltZSwgTGVhcFllYXJzKSB7CisgIGNv
bnN0IGFic2w6OkNpdmlsU2Vjb25kIHMxKDIwMTMsIDIsIDI4ICsgMSwgMCwgMCwgMCk7CisgIEVY
UEVDVF9FUSgiMjAxMy0wMy0wMVQwMDowMDowMCIsIGFic2w6OkZvcm1hdENpdmlsVGltZShzMSkp
OworCisgIGNvbnN0IGFic2w6OkNpdmlsU2Vjb25kIHMyKDIwMTIsIDIsIDI4ICsgMSwgMCwgMCwg
MCk7CisgIEVYUEVDVF9FUSgiMjAxMi0wMi0yOVQwMDowMDowMCIsIGFic2w6OkZvcm1hdENpdmls
VGltZShzMikpOworCisgIGNvbnN0IGFic2w6OkNpdmlsU2Vjb25kIHMzKDE5MDAsIDIsIDI4ICsg
MSwgMCwgMCwgMCk7CisgIEVYUEVDVF9FUSgiMTkwMC0wMy0wMVQwMDowMDowMCIsIGFic2w6OkZv
cm1hdENpdmlsVGltZShzMykpOworCisgIGNvbnN0IHN0cnVjdCB7CisgICAgaW50IHllYXI7Cisg
ICAgaW50IGRheXM7CisgICAgc3RydWN0IHsKKyAgICAgIGludCBtb250aDsKKyAgICAgIGludCBk
YXk7CisgICAgfSBsZWFwX2RheTsgIC8vIFRoZSBkYXRlIG9mIHRoZSBkYXkgYWZ0ZXIgRmViIDI4
LgorICB9IGtMZWFwWWVhclRhYmxlW117CisgICAgICB7MTkwMCwgMzY1LCB7MywgMX19LAorICAg
ICAgezE5OTksIDM2NSwgezMsIDF9fSwKKyAgICAgIHsyMDAwLCAzNjYsIHsyLCAyOX19LCAgLy8g
bGVhcCB5ZWFyCisgICAgICB7MjAwMSwgMzY1LCB7MywgMX19LAorICAgICAgezIwMDIsIDM2NSwg
ezMsIDF9fSwKKyAgICAgIHsyMDAzLCAzNjUsIHszLCAxfX0sCisgICAgICB7MjAwNCwgMzY2LCB7
MiwgMjl9fSwgIC8vIGxlYXAgeWVhcgorICAgICAgezIwMDUsIDM2NSwgezMsIDF9fSwKKyAgICAg
IHsyMDA2LCAzNjUsIHszLCAxfX0sCisgICAgICB7MjAwNywgMzY1LCB7MywgMX19LAorICAgICAg
ezIwMDgsIDM2NiwgezIsIDI5fX0sICAvLyBsZWFwIHllYXIKKyAgICAgIHsyMDA5LCAzNjUsIHsz
LCAxfX0sCisgICAgICB7MjEwMCwgMzY1LCB7MywgMX19LAorICB9OworCisgIGZvciAoaW50IGkg
PSAwOyBpIDwgQUJTTF9BUlJBWVNJWkUoa0xlYXBZZWFyVGFibGUpOyArK2kpIHsKKyAgICBjb25z
dCBpbnQgeSA9IGtMZWFwWWVhclRhYmxlW2ldLnllYXI7CisgICAgY29uc3QgaW50IG0gPSBrTGVh
cFllYXJUYWJsZVtpXS5sZWFwX2RheS5tb250aDsKKyAgICBjb25zdCBpbnQgZCA9IGtMZWFwWWVh
clRhYmxlW2ldLmxlYXBfZGF5LmRheTsKKyAgICBjb25zdCBpbnQgbiA9IGtMZWFwWWVhclRhYmxl
W2ldLmRheXM7CisKKyAgICAvLyBUZXN0cyBpbmNyZW1lbnRpbmcgdGhyb3VnaCB0aGUgbGVhcCBk
YXkuCisgICAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgZmViMjgoeSwgMiwgMjgpOworICAgIGNvbnN0
IGFic2w6OkNpdmlsRGF5IG5leHRfZGF5ID0gZmViMjggKyAxOworICAgIEVYUEVDVF9FUShtLCBu
ZXh0X2RheS5tb250aCgpKTsKKyAgICBFWFBFQ1RfRVEoZCwgbmV4dF9kYXkuZGF5KCkpOworCisg
ICAgLy8gVGVzdHMgZGlmZmVyZW5jZSBpbiBkYXlzIG9mIGxlYXAgeWVhcnMuCisgICAgY29uc3Qg
YWJzbDo6Q2l2aWxZZWFyIHllYXIoZmViMjgpOworICAgIGNvbnN0IGFic2w6OkNpdmlsWWVhciBu
ZXh0X3llYXIgPSB5ZWFyICsgMTsKKyAgICBFWFBFQ1RfRVEobiwgYWJzbDo6Q2l2aWxEYXkobmV4
dF95ZWFyKSAtIGFic2w6OkNpdmlsRGF5KHllYXIpKTsKKyAgfQorfQorCitURVNUKENpdmlsVGlt
ZSwgRmlyc3RUaHVyc2RheUluTW9udGgpIHsKKyAgY29uc3QgYWJzbDo6Q2l2aWxEYXkgbm92MSgy
MDE0LCAxMSwgMSk7CisgIGNvbnN0IGFic2w6OkNpdmlsRGF5IHRodXJzZGF5ID0KKyAgICAgIGFi
c2w6Ok5leHRXZWVrZGF5KG5vdjEgLSAxLCBhYnNsOjpXZWVrZGF5Ojp0aHVyc2RheSk7CisgIEVY
UEVDVF9FUSgiMjAxNC0xMS0wNiIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh0aHVyc2RheSkpOwor
CisgIC8vIEJvbnVzOiBEYXRlIG9mIFRoYW5rc2dpdmluZyBpbiB0aGUgVW5pdGVkIFN0YXRlcwor
ICAvLyBSdWxlOiBGb3VydGggVGh1cnNkYXkgb2YgTm92ZW1iZXIKKyAgY29uc3QgYWJzbDo6Q2l2
aWxEYXkgdGhhbmtzZ2l2aW5nID0gdGh1cnNkYXkgKyAgNyAqIDM7CisgIEVYUEVDVF9FUSgiMjAx
NC0xMS0yNyIsIGFic2w6OkZvcm1hdENpdmlsVGltZSh0aGFua3NnaXZpbmcpKTsKK30KKworVEVT
VChDaXZpbFRpbWUsIERvY3VtZW50YXRpb25FeGFtcGxlKSB7CisgIGFic2w6OkNpdmlsU2Vjb25k
IHNlY29uZCgyMDE1LCA2LCAyOCwgMSwgMiwgMyk7ICAvLyAyMDE1LTA2LTI4IDAxOjAyOjAzCisg
IGFic2w6OkNpdmlsTWludXRlIG1pbnV0ZShzZWNvbmQpOyAgICAgICAgICAgICAgICAvLyAyMDE1
LTA2LTI4IDAxOjAyOjAwCisgIGFic2w6OkNpdmlsRGF5IGRheShtaW51dGUpOyAgICAgICAgICAg
ICAgICAgICAgICAvLyAyMDE1LTA2LTI4IDAwOjAwOjAwCisKKyAgc2Vjb25kIC09IDE7ICAgICAg
ICAgICAgICAgICAgICAvLyAyMDE1LTA2LTI4IDAxOjAyOjAyCisgIC0tc2Vjb25kOyAgICAgICAg
ICAgICAgICAgICAgICAgLy8gMjAxNS0wNi0yOCAwMTowMjowMQorICBFWFBFQ1RfRVEobWludXRl
LCBzZWNvbmQgLSAxKTsgIC8vIENvbXBhcmlzb24gYmV0d2VlbiB0eXBlcworICBFWFBFQ1RfTFQo
bWludXRlLCBzZWNvbmQpOworCisgIC8vIGludCBkaWZmID0gc2Vjb25kIC0gbWludXRlOyAgLy8g
RVJST1I6IE1peGVkIHR5cGVzLCB3b24ndCBjb21waWxlCisKKyAgYWJzbDo6Q2l2aWxEYXkganVu
ZV8xKDIwMTUsIDYsIDEpOyAgLy8gUGFzcyBmaWVsZHMgdG8gYyd0b3IuCisgIGludCBkaWZmID0g
ZGF5IC0ganVuZV8xOyAgICAgICAgICAgIC8vIE51bSBkYXlzIGJldHdlZW4gJ2RheScgYW5kIEp1
bmUgMQorICBFWFBFQ1RfRVEoMjcsIGRpZmYpOworCisgIC8vIEZpZWxkcyBzbWFsbGVyIHRoYW4g
YWxpZ25tZW50IGFyZSBmbG9vcmVkIHRvIHRoZWlyIG1pbmltdW0gdmFsdWUuCisgIGFic2w6OkNp
dmlsRGF5IGRheV9mbG9vcigyMDE1LCAxLCAyLCA5LCA5LCA5KTsKKyAgRVhQRUNUX0VRKDAsIGRh
eV9mbG9vci5ob3VyKCkpOyAgLy8gMDk6MDk6MDkgaXMgZmxvb3JlZAorICBFWFBFQ1RfRVEoYWJz
bDo6Q2l2aWxEYXkoMjAxNSwgMSwgMiksIGRheV9mbG9vcik7CisKKyAgLy8gVW5zcGVjaWZpZWQg
ZmllbGRzIGRlZmF1bHQgdG8gdGhlaXIgbWluaXVtIHZhbHVlCisgIGFic2w6OkNpdmlsRGF5IGRh
eV9kZWZhdWx0KDIwMTUpOyAgLy8gRGVmYXVsdHMgdG8gSmFuIDEKKyAgRVhQRUNUX0VRKGFic2w6
OkNpdmlsRGF5KDIwMTUsIDEsIDEpLCBkYXlfZGVmYXVsdCk7CisKKyAgLy8gSXRlcmF0ZXMgYWxs
IHRoZSBkYXlzIG9mIEp1bmUuCisgIGFic2w6OkNpdmlsTW9udGgganVuZShkYXkpOyAgLy8gQ2l2
aWxEYXkgLT4gQ2l2aWxNb250aAorICBhYnNsOjpDaXZpbE1vbnRoIGp1bHkgPSBqdW5lICsgMTsK
KyAgZm9yIChhYnNsOjpDaXZpbERheSBkYXkgPSBqdW5lXzE7IGRheSA8IGp1bHk7ICsrZGF5KSB7
CisgICAgLy8gLi4uCisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2Nsb2NrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jbG9jay5jYwppbmRleCA3NGVlMTQwMWI5OGMy
ZTE1ZTE5ZDI4MzJkYWE0OTFlM2U0NWMyZmI2Li4zOTZjNTVmMjAwY2U5ODIyNjQ0NjU1NDRiZjFi
Njg1NWM3ZjlhNjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Nsb2NrLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvY2xvY2suY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTM3OSwxMyArMzc5LDEzIEBAIHN0YXRpYyB1aW50NjRfdCBVcGRhdGVMYXN0U2FtcGxlKAog
Ly8KIC8vIE1hbnVhbGx5IG1hcmsgdGhpcyAnbm9pbmxpbmUnIHRvIG1pbmltaXplIHN0YWNrIGZy
YW1lIHNpemUgb2YgdGhlIGZhc3QKIC8vIHBhdGguICBXaXRob3V0IHRoaXMsIHNvbWV0aW1lcyBh
IGNvbXBpbGVyIG1heSBpbmxpbmUgdGhpcyBiaWcgYmxvY2sgb2YgY29kZQotLy8gaW50byB0aGUg
ZmFzdCBwYXN0LiAgVGhhdCBjYXVzZXMgbG90cyBvZiByZWdpc3RlciBzcGlsbHMgYW5kIHJlbG9h
ZHMgdGhhdAorLy8gaW50byB0aGUgZmFzdCBwYXRoLiAgVGhhdCBjYXVzZXMgbG90cyBvZiByZWdp
c3RlciBzcGlsbHMgYW5kIHJlbG9hZHMgdGhhdAogLy8gYXJlIHVubmVjZXNzYXJ5IHVubGVzcyB0
aGUgc2xvdyBwYXRoIGlzIHRha2VuLgogLy8KIC8vIFRPRE8oYWJzbC10ZWFtKTogUmVtb3ZlIHRo
aXMgYXR0cmlidXRlIHdoZW4gb3VyIGNvbXBpbGVyIGlzIHNtYXJ0IGVub3VnaAogLy8gdG8gZG8g
dGhlIHJpZ2h0IHRoaW5nLgogQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUKLXN0YXRpYyBpbnQ2NF90
IEdldEN1cnJlbnRUaW1lTmFub3NTbG93UGF0aCgpIExPQ0tTX0VYQ0xVREVEKGxvY2spIHsKK3N0
YXRpYyBpbnQ2NF90IEdldEN1cnJlbnRUaW1lTmFub3NTbG93UGF0aCgpIEFCU0xfTE9DS1NfRVhD
TFVERUQobG9jaykgewogICAvLyBTZXJpYWxpemUgYWNjZXNzIHRvIHNsb3ctcGF0aC4gIEZhc3Qt
cGF0aCByZWFkZXJzIGFyZSBub3QgYmxvY2tlZCB5ZXQsIGFuZAogICAvLyBjb2RlIGJlbG93IG11
c3Qgbm90IG1vZGlmeSBsYXN0X3NhbXBsZSB1bnRpbCB0aGUgc2VxbG9jayBpcyBhY3F1aXJlZC4K
ICAgbG9jay5Mb2NrKCk7CkBAIC00MzAsNyArNDMwLDcgQEAgc3RhdGljIGludDY0X3QgR2V0Q3Vy
cmVudFRpbWVOYW5vc1Nsb3dQYXRoKCkgTE9DS1NfRVhDTFVERUQobG9jaykgewogc3RhdGljIHVp
bnQ2NF90IFVwZGF0ZUxhc3RTYW1wbGUodWludDY0X3Qgbm93X2N5Y2xlcywgdWludDY0X3Qgbm93
X25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGVsdGFfY3lj
bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IFRpbWVT
YW1wbGUgKnNhbXBsZSkKLSAgICBFWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQobG9jaykgeworICAg
IEFCU0xfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGxvY2spIHsKICAgdWludDY0X3QgZXN0aW1h
dGVkX2Jhc2VfbnMgPSBub3dfbnM7CiAgIHVpbnQ2NF90IGxvY2tfdmFsdWUgPSBTZXFBY3F1aXJl
KCZzZXEpOyAgLy8gYWNxdWlyZSBzZXFsb2NrIHRvIGJsb2NrIHJlYWRlcnMKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9jbG9jay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9jbG9jay5oCmluZGV4IDM3NTNkNGVl
NDNhZDY4YTViNGJiZDI3NDdjZjk4MDU3YmI0OGZiODcuLmJiNTJlNGY2Y2E5OTAxMTZhNWRhOWJl
ZTIwMGVkMzBlNDE3OTY2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2suaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2Nsb2NrLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2tfYmVuY2htYXJrLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9jbG9ja19iZW5jaG1hcmsuY2MKaW5kZXggM2QzY2Q5ZDVjNDJjZDdmODkyZjQ4YTAyZTdjMWZj
YjIxYTM4OGZhZi4uYzVjNzk1ZWNiZDIzYWJmMzFiZmUyODAyNWRlZGJkNjg2ZTU4MTIyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9jbG9ja19iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9j
bG9ja19iZW5jaG1hcmsuY2MKQEAgLTMsNyArMyw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTE1LDYgKzE1LDggQEAKIAogI2lmICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDxz
eXMvdGltZS5oPgorI2Vsc2UKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgogI2VuZGlmICAvLyBfV0lO
MzIKICNpbmNsdWRlIDxjc3RkaW8+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2tfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvY2xvY2tfdGVzdC5jYwppbmRleCA3MDcxNjZkMGMyODliMTYyZTc0
NWE2M2JmMGRiZmMzZWRhNTIwZTdiLi40YmNmYzZiYzcyNzI2N2YxMmMyMGQ3OWY3MGMyZTVjOTc4
NzQ3ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Nsb2NrX3Rlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9jbG9ja190ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2R1cmF0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9kdXJh
dGlvbi5jYwppbmRleCAyOTUwYzdjZGM2MzIwYjRkM2Y4NDM0YjFlMmIwMWFkNTZkNzJkYjQwLi5h
M2FjNjFhOTE4OTRiNGU1YTZiNjQ3M2M4MDg5NWRjMDAwMjJlMTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2R1cmF0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb24uY2MKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQ5LDYgKzQ5LDEwIEBACiAvLwog
Ly8gQXJpdGhtZXRpYyBvdmVyZmxvd3MvdW5kZXJmbG93cyB0byArLy0gaW5maW5pdHkgYW5kIHNh
dHVyYXRlcy4KIAorI2lmIGRlZmluZWQoX01TQ19WRVIpCisjaW5jbHVkZSA8d2luc29jazIuaD4g
IC8vIGZvciB0aW1ldmFsCisjZW5kaWYKKwogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRl
IDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNjdHlwZT4KQEAgLTc4LDEwICs4MiwxNiBAQCBjb25zdGV4
cHIgaW50NjRfdCBraW50NjRtaW4gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4o
KTsKIAogLy8gQ2FuJ3QgdXNlIHN0ZDo6aXNpbmZpbml0ZSgpIGJlY2F1c2UgaXQgZG9lc24ndCBl
eGlzdCBvbiB3aW5kb3dzLgogaW5saW5lIGJvb2wgSXNGaW5pdGUoZG91YmxlIGQpIHsKKyAgaWYg
KHN0ZDo6aXNuYW4oZCkpIHJldHVybiBmYWxzZTsKICAgcmV0dXJuIGQgIT0gc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpICYmCiAgICAgICAgICBkICE9IC1zdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiB9CiAKK2lubGluZSBib29sIElzVmFsaWRE
aXZpc29yKGRvdWJsZSBkKSB7CisgIGlmIChzdGQ6OmlzbmFuKGQpKSByZXR1cm4gZmFsc2U7Cisg
IHJldHVybiBkICE9IDAuMDsKK30KKwogLy8gQ2FuJ3QgdXNlIHN0ZDo6cm91bmQoKSBiZWNhdXNl
IGl0IGlzIG9ubHkgYXZhaWxhYmxlIGluIEMrKzExLgogLy8gTm90ZSB0aGF0IHdlIGlnbm9yZSB0
aGUgcG9zc2liaWxpdHkgb2YgZmxvYXRpbmctcG9pbnQgb3Zlci91bmRlcmZsb3cuCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRG91YmxlPgpAQCAtNDU1LDcgKzQ2NSw3IEBAIER1cmF0aW9uJiBEdXJhdGlv
bjo6b3BlcmF0b3IvPShpbnQ2NF90IHIpIHsKIH0KIAogRHVyYXRpb24mIER1cmF0aW9uOjpvcGVy
YXRvci89KGRvdWJsZSByKSB7Ci0gIGlmICh0aW1lX2ludGVybmFsOjpJc0luZmluaXRlRHVyYXRp
b24oKnRoaXMpIHx8IHIgPT0gMC4wKSB7CisgIGlmICh0aW1lX2ludGVybmFsOjpJc0luZmluaXRl
RHVyYXRpb24oKnRoaXMpIHx8ICFJc1ZhbGlkRGl2aXNvcihyKSkgewogICAgIGNvbnN0IGJvb2wg
aXNfbmVnID0gKHN0ZDo6c2lnbmJpdChyKSAhPSAwKSAhPSAocmVwX2hpXyA8IDApOwogICAgIHJl
dHVybiAqdGhpcyA9IGlzX25lZyA/IC1JbmZpbml0ZUR1cmF0aW9uKCkgOiBJbmZpbml0ZUR1cmF0
aW9uKCk7CiAgIH0KQEAgLTc0Myw5ICs3NTMsOSBAQCB2b2lkIEFwcGVuZE51bWJlclVuaXQoc3Rk
OjpzdHJpbmcqIG91dCwgZG91YmxlIG4sIERpc3BsYXlVbml0IHVuaXQpIHsKIAogfSAgLy8gbmFt
ZXNwYWNlCiAKLS8vIEZyb20gR28ncyBkb2MgYXQgaHR0cDovL2dvbGFuZy5vcmcvcGtnL3RpbWUv
I0R1cmF0aW9uLlN0cmluZworLy8gRnJvbSBHbydzIGRvYyBhdCBodHRwczovL2dvbGFuZy5vcmcv
cGtnL3RpbWUvI0R1cmF0aW9uLlN0cmluZwogLy8gICBbRm9ybWF0RHVyYXRpb25dIHJldHVybnMg
YSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBkdXJhdGlvbiBpbiB0aGUKLS8vICAgZm9ybSAiNzJo
M20wLjVzIi4gIExlYWRpbmcgemVybyB1bml0cyBhcmUgb21pdHRlZC4gIEFzIGEgc3BlY2lhbAor
Ly8gICBmb3JtICI3MmgzbTAuNXMiLiBMZWFkaW5nIHplcm8gdW5pdHMgYXJlIG9taXR0ZWQuICBB
cyBhIHNwZWNpYWwKIC8vICAgY2FzZSwgZHVyYXRpb25zIGxlc3MgdGhhbiBvbmUgc2Vjb25kIGZv
cm1hdCB1c2UgYSBzbWFsbGVyIHVuaXQKIC8vICAgKG1pbGxpLSwgbWljcm8tLCBvciBuYW5vc2Vj
b25kcykgdG8gZW5zdXJlIHRoYXQgdGhlIGxlYWRpbmcgZGlnaXQKIC8vICAgaXMgbm9uLXplcm8u
ICBUaGUgemVybyBkdXJhdGlvbiBmb3JtYXRzIGFzIDAsIHdpdGggbm8gdW5pdC4KQEAgLTg0OSw4
ICs4NTksOCBAQCBib29sIENvbnN1bWVEdXJhdGlvblVuaXQoY29uc3QgY2hhcioqIHN0YXJ0LCBE
dXJhdGlvbiogdW5pdCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIAotLy8gRnJvbSBHbydzIGRvYyBh
dCBodHRwOi8vZ29sYW5nLm9yZy9wa2cvdGltZS8jUGFyc2VEdXJhdGlvbgotLy8gICBbUGFyc2VE
dXJhdGlvbl0gcGFyc2VzIGEgZHVyYXRpb24gc3RyaW5nLiAgQSBkdXJhdGlvbiBzdHJpbmcgaXMK
Ky8vIEZyb20gR28ncyBkb2MgYXQgaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy90aW1lLyNQYXJzZUR1
cmF0aW9uCisvLyAgIFtQYXJzZUR1cmF0aW9uXSBwYXJzZXMgYSBkdXJhdGlvbiBzdHJpbmcuIEEg
ZHVyYXRpb24gc3RyaW5nIGlzCiAvLyAgIGEgcG9zc2libHkgc2lnbmVkIHNlcXVlbmNlIG9mIGRl
Y2ltYWwgbnVtYmVycywgZWFjaCB3aXRoIG9wdGlvbmFsCiAvLyAgIGZyYWN0aW9uIGFuZCBhIHVu
aXQgc3VmZml4LCBzdWNoIGFzICIzMDBtcyIsICItMS41aCIgb3IgIjJoNDVtIi4KIC8vICAgVmFs
aWQgdGltZSB1bml0cyBhcmUgIm5zIiwgInVzIiAibXMiLCAicyIsICJtIiwgImgiLgpAQCAtODk1
LDYgKzkwNSw3IEBAIGJvb2wgUGFyc2VEdXJhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgZHVyX3N0
cmluZywgRHVyYXRpb24qIGQpIHsKICAgKmQgPSBkdXI7CiAgIHJldHVybiB0cnVlOwogfQorCiBi
b29sIFBhcnNlRmxhZyhjb25zdCBzdGQ6OnN0cmluZyYgdGV4dCwgRHVyYXRpb24qIGRzdCwgc3Rk
OjpzdHJpbmcqICkgewogICByZXR1cm4gUGFyc2VEdXJhdGlvbih0ZXh0LCBkc3QpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbl9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2R1
cmF0aW9uX2JlbmNobWFyay5jYwppbmRleCBkNTY1N2JkNTc2YTViM2VhZWZjODQwNTIwMzlhN2Yz
OTIxYjU3ZmI3Li44M2E4MzZjOGM4YTJiYjJiM2FkZjY5NjliM2IzZDI3M2Y4MDJjNWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2R1cmF0aW9uX2JlbmNobWFyay5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2R1cmF0aW9uX2JlbmNobWFyay5jYwpAQCAtMyw3ICszLDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgPGN0aW1lPgogI2luY2x1ZGUgPHN0
cmluZz4KIAorI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiYWJz
bC90aW1lL3RpbWUuaCIKICNpbmNsdWRlICJiZW5jaG1hcmsvYmVuY2htYXJrLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb25f
dGVzdC5jYwppbmRleCA3YWUyNWRjNjhmOWE2MjIxMjhhNGU0ZTg4OWMwYzZmZmQyZGZmNjQ5Li41
ZGNlOWFjOGE1NTc5Y2FkYjljZWEzMjFlNzdkOWY4NjFmMjk2YTUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2R1cmF0aW9uX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbl90ZXN0LmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMiw2ICsxMiwx
MCBAQAogLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAK
KyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2luY2x1ZGUgPHdpbnNvY2syLmg+ICAvLyBmb3IgdGlt
ZXZhbAorI2VuZGlmCisKICNpbmNsdWRlIDxjaHJvbm8+ICAvLyBOT0xJTlQoYnVpbGQvYysrMTEp
CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0ZGludD4KQEAgLTU2LDYgKzYwLDE3IEBA
IE1BVENIRVJfUChUaW1ldmFsTWF0Y2hlciwgdHYsICIiKSB7CiAgIHJldHVybiBmYWxzZTsKIH0K
IAorVEVTVChEdXJhdGlvbiwgQ29uc3RFeHByKSB7CisgIGNvbnN0ZXhwciBhYnNsOjpEdXJhdGlv
biBkMCA9IGFic2w6Olplcm9EdXJhdGlvbigpOworICBzdGF0aWNfYXNzZXJ0KGQwID09IGFic2w6
Olplcm9EdXJhdGlvbigpLCAiWmVyb0R1cmF0aW9uKCkiKTsKKyAgY29uc3RleHByIGFic2w6OkR1
cmF0aW9uIGQxID0gYWJzbDo6U2Vjb25kcygxKTsKKyAgc3RhdGljX2Fzc2VydChkMSA9PSBhYnNs
OjpTZWNvbmRzKDEpLCAiU2Vjb25kcygxKSIpOworICBzdGF0aWNfYXNzZXJ0KGQxICE9IGFic2w6
Olplcm9EdXJhdGlvbigpLCAiU2Vjb25kcygxKSIpOworICBjb25zdGV4cHIgYWJzbDo6RHVyYXRp
b24gZDIgPSBhYnNsOjpJbmZpbml0ZUR1cmF0aW9uKCk7CisgIHN0YXRpY19hc3NlcnQoZDIgPT0g
YWJzbDo6SW5maW5pdGVEdXJhdGlvbigpLCAiSW5maW5pdGVEdXJhdGlvbigpIik7CisgIHN0YXRp
Y19hc3NlcnQoZDIgIT0gYWJzbDo6WmVyb0R1cmF0aW9uKCksICJJbmZpbml0ZUR1cmF0aW9uKCki
KTsKK30KKwogVEVTVChEdXJhdGlvbiwgVmFsdWVTZW1hbnRpY3MpIHsKICAgLy8gSWYgdGhpcyBj
b21waWxlcywgdGhlIHRlc3QgcGFzc2VzLgogICBjb25zdGV4cHIgYWJzbDo6RHVyYXRpb24gYTsg
ICAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdGlvbgpAQCAtNzkyLDYgKzgwNyw0MCBAQCBURVNUKER1
cmF0aW9uLCBEaXZpc2lvbkJ5WmVybykgewogICBFWFBFQ1RfRVEoLWRibF9pbmYsIGFic2w6OkZE
aXZEdXJhdGlvbigtYW55X2R1ciwgemVybykpOwogfQogCitURVNUKER1cmF0aW9uLCBOYU4pIHsK
KyAgLy8gTm90ZSB0aGF0IElFRUUgNzU0IGRvZXMgbm90IGRlZmluZSB0aGUgYmVoYXZpb3Igb2Yg
YSBuYW4ncyBzaWduIHdoZW4gaXQgaXMKKyAgLy8gY29waWVkLCBzbyB0aGUgY29kZSBiZWxvdyBh
bGxvd3MgZm9yIGVpdGhlciArIG9yIC0gSW5maW5pdGVEdXJhdGlvbi4KKyNkZWZpbmUgVEVTVF9O
QU5fSEFORExJTkcoTkFNRSwgTkFOKSAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29uc3QgYXV0byBpbmYgPSBhYnNsOjpJ
bmZpbml0ZUR1cmF0aW9uKCk7IFwKKyAgICBhdXRvIHggPSBOQU1FKE5BTik7ICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKHggPT0gaW5mIHx8IHggPT0gLWluZik7ICAg
ICAgICBcCisgICAgYXV0byB5ID0gTkFNRSg0Mik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB5ICo9IE5BTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVY
UEVDVF9UUlVFKHkgPT0gaW5mIHx8IHkgPT0gLWluZik7ICAgICAgICBcCisgICAgYXV0byB6ID0g
TkFNRSg0Mik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB6IC89IE5BTjsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKHogPT0gaW5mIHx8
IHogPT0gLWluZik7ICAgICAgICBcCisgIH0gd2hpbGUgKDApCisKKyAgY29uc3QgZG91YmxlIG5h
biA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CisgIFRFU1RfTkFO
X0hBTkRMSU5HKGFic2w6Ok5hbm9zZWNvbmRzLCBuYW4pOworICBURVNUX05BTl9IQU5ETElORyhh
YnNsOjpNaWNyb3NlY29uZHMsIG5hbik7CisgIFRFU1RfTkFOX0hBTkRMSU5HKGFic2w6Ok1pbGxp
c2Vjb25kcywgbmFuKTsKKyAgVEVTVF9OQU5fSEFORExJTkcoYWJzbDo6U2Vjb25kcywgbmFuKTsK
KyAgVEVTVF9OQU5fSEFORExJTkcoYWJzbDo6TWludXRlcywgbmFuKTsKKyAgVEVTVF9OQU5fSEFO
RExJTkcoYWJzbDo6SG91cnMsIG5hbik7CisKKyAgVEVTVF9OQU5fSEFORExJTkcoYWJzbDo6TmFu
b3NlY29uZHMsIC1uYW4pOworICBURVNUX05BTl9IQU5ETElORyhhYnNsOjpNaWNyb3NlY29uZHMs
IC1uYW4pOworICBURVNUX05BTl9IQU5ETElORyhhYnNsOjpNaWxsaXNlY29uZHMsIC1uYW4pOwor
ICBURVNUX05BTl9IQU5ETElORyhhYnNsOjpTZWNvbmRzLCAtbmFuKTsKKyAgVEVTVF9OQU5fSEFO
RExJTkcoYWJzbDo6TWludXRlcywgLW5hbik7CisgIFRFU1RfTkFOX0hBTkRMSU5HKGFic2w6Okhv
dXJzLCAtbmFuKTsKKworI3VuZGVmIFRFU1RfTkFOX0hBTkRMSU5HCit9CisKIFRFU1QoRHVyYXRp
b24sIFJhbmdlKSB7CiAgIGNvbnN0IGFic2w6OkR1cmF0aW9uIHJhbmdlID0gQXBwcm94WWVhcnMo
MTAwICogMWU5KTsKICAgY29uc3QgYWJzbDo6RHVyYXRpb24gcmFuZ2VfZnV0dXJlID0gcmFuZ2U7
CkBAIC0xNzI2LDcgKzE3NzUsNyBAQCBURVNUKER1cmF0aW9uLCBQYXJzZUR1cmF0aW9uKSB7CiBU
RVNUKER1cmF0aW9uLCBGb3JtYXRQYXJzZVJvdW5kVHJpcCkgewogI2RlZmluZSBURVNUX1BBUlNF
X1JPVU5EVFJJUChkKSAgICAgICAgICAgICAgICBcCiAgIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6Rm9ybWF0
RHVyYXRpb24oZCk7ICAgICAgICBcCisgICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OkZvcm1hdER1
cmF0aW9uKGQpOyAgIFwKICAgICBhYnNsOjpEdXJhdGlvbiBkdXI7ICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlRHVyYXRpb24ocywgJmR1cikpOyBc
CiAgICAgRVhQRUNUX0VRKGQsIGR1cik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXQuY2MKaW5kZXgg
ZWU1OTdlNDA3YTlkZGQyMjZhOGY4ODA2NTlmMmQ1MDQyN2Y5MTkyYi4uZDZjYTg2MDAzOGRjMmY2
MTNkZjg0MjEwYzU4Nzg2NTVjNzQzZDhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXQu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXQuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTY3LDcgKzY3LDggQEAgYWJzbDo6VGltZSBKb2luKGNvbnN0IGNj
dHpfcGFydHMmIHBhcnRzKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1zdGQ6OnN0cmluZyBGb3Jt
YXRUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGFic2w6OlRpbWUgdCwgYWJzbDo6VGlt
ZVpvbmUgdHopIHsKK3N0ZDo6c3RyaW5nIEZvcm1hdFRpbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZv
cm1hdCwgYWJzbDo6VGltZSB0LAorICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpUaW1lWm9u
ZSB0eikgewogICBpZiAodCA9PSBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpKSByZXR1cm4ga0luZmlu
aXRlRnV0dXJlU3RyOwogICBpZiAodCA9PSBhYnNsOjpJbmZpbml0ZVBhc3QoKSkgcmV0dXJuIGtJ
bmZpbml0ZVBhc3RTdHI7CiAgIGNvbnN0IGF1dG8gcGFydHMgPSBTcGxpdCh0KTsKQEAgLTgzLDE1
ICs4NCwxNSBAQCBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lKGFic2w6OlRpbWUgdCkgewogICByZXR1
cm4gYWJzbDo6Rm9ybWF0VGltZShSRkMzMzM5X2Z1bGwsIHQsIGFic2w6OkxvY2FsVGltZVpvbmUo
KSk7CiB9CiAKLWJvb2wgUGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0
IHN0ZDo6c3RyaW5nJiBpbnB1dCwgYWJzbDo6VGltZSogdGltZSwKLSAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nKiBlcnIpIHsKK2Jvb2wgUGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3Jt
YXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwKKyAgICAgICAgICAgICAgIGFic2w6OlRpbWUq
IHRpbWUsIHN0ZDo6c3RyaW5nKiBlcnIpIHsKICAgcmV0dXJuIGFic2w6OlBhcnNlVGltZShmb3Jt
YXQsIGlucHV0LCBhYnNsOjpVVENUaW1lWm9uZSgpLCB0aW1lLCBlcnIpOwogfQogCiAvLyBJZiB0
aGUgaW5wdXQgc3RyaW5nIGRvZXMgbm90IGNvbnRhaW4gYW4gZXhwbGljaXQgVVRDIG9mZnNldCwg
aW50ZXJwcmV0CiAvLyB0aGUgZmllbGRzIHdpdGggcmVzcGVjdCB0byB0aGUgZ2l2ZW4gVGltZVpv
bmUuCi1ib29sIFBhcnNlVGltZShjb25zdCBzdGQ6OnN0cmluZyYgZm9ybWF0LCBjb25zdCBzdGQ6
OnN0cmluZyYgaW5wdXQsIGFic2w6OlRpbWVab25lIHR6LAotICAgICAgICAgICAgICAgYWJzbDo6
VGltZSogdGltZSwgc3RkOjpzdHJpbmcqIGVycikgeworYm9vbCBQYXJzZVRpbWUoY29uc3Qgc3Rk
OjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LAorICAgICAgICAgICAg
ICAgYWJzbDo6VGltZVpvbmUgdHosIGFic2w6OlRpbWUqIHRpbWUsIHN0ZDo6c3RyaW5nKiBlcnIp
IHsKICAgY29uc3QgY2hhciogZGF0YSA9IGlucHV0LmNfc3RyKCk7CiAgIHdoaWxlIChzdGQ6Omlz
c3BhY2UoKmRhdGEpKSArK2RhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0X2Jl
bmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0X2JlbmNobWFyay5jYwppbmRleCBlZTUzZDcx
YzY4NTQ4NGMyOTFiNjQ3Y2YwOWY1YTVjOTBiOTc3MmYzLi4yNDljNTFkODc1ODY2NzRiYjk3Nzg3
YzI1Mjc3ZGExZTNkMWYwMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Zvcm1hdF9iZW5jaG1h
cmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXRfYmVuY2htYXJrLmNjCkBAIC0zLDcgKzMsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8K
IC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zOCw3ICszOCw4IEBAIHZvaWQgQk1fRm9y
bWF0X0Zvcm1hdFRpbWUoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgY29uc3QgYWJzbDo6
VGltZVpvbmUgbGF4ID0KICAgICAgIGFic2w6OnRpbWVfaW50ZXJuYWw6OkxvYWRUaW1lWm9uZSgi
QW1lcmljYS9Mb3NfQW5nZWxlcyIpOwogICBjb25zdCBhYnNsOjpUaW1lIHQgPQotICAgICAgYWJz
bDo6RnJvbURhdGVUaW1lKDE5NzcsIDYsIDI4LCA5LCA4LCA3LCBsYXgpICsgYWJzbDo6TmFub3Nl
Y29uZHMoMSk7CisgICAgICBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMTk3Nywg
NiwgMjgsIDksIDgsIDcpLCBsYXgpICsKKyAgICAgIGFic2w6Ok5hbm9zZWNvbmRzKDEpOwogICB3
aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewogICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6
ZShhYnNsOjpGb3JtYXRUaW1lKGZtdCwgdCwgbGF4KS5sZW5ndGgoKSk7CiAgIH0KQEAgLTUwLDgg
KzUxLDggQEAgdm9pZCBCTV9Gb3JtYXRfUGFyc2VUaW1lKGJlbmNobWFyazo6U3RhdGUmIHN0YXRl
KSB7CiAgIHN0YXRlLlNldExhYmVsKGZtdCk7CiAgIGNvbnN0IGFic2w6OlRpbWVab25lIGxheCA9
CiAgICAgICBhYnNsOjp0aW1lX2ludGVybmFsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0Fu
Z2VsZXMiKTsKLSAgYWJzbDo6VGltZSB0ID0KLSAgICAgIGFic2w6OkZyb21EYXRlVGltZSgxOTc3
LCA2LCAyOCwgOSwgOCwgNywgbGF4KSArIGFic2w6Ok5hbm9zZWNvbmRzKDEpOworICBhYnNsOjpU
aW1lIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMTk3NywgNiwgMjgsIDks
IDgsIDcpLCBsYXgpICsKKyAgICAgICAgICAgICAgICAgYWJzbDo6TmFub3NlY29uZHMoMSk7CiAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHdoZW4gPSBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgdCwgbGF4KTsK
ICAgc3RkOjpzdHJpbmcgZXJyOwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0X3Rl
c3QuY2MKaW5kZXggN2M4NGMzM2YxZWI1NWMyMzBlZWFkNDQ2MTNmMDdkYjA4YWZlZjI4My4uYWIx
ZjMwNTk0ZWE5OGQyYWJhNzM1OTgyMzJlMWI5NGQ2YzFiZmI5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9mb3JtYXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Zvcm1hdF90ZXN0LmNjCkBAIC00
LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yNyw4ICsyNyw4IEBAIG5h
bWVzcGFjZSB7CiAKIC8vIEEgaGVscGVyIHRoYXQgdGVzdHMgdGhlIGdpdmVuIGZvcm1hdCBzcGVj
aWZpZXIgYnkgaXRzZWxmLCBhbmQgd2l0aCBsZWFkaW5nCiAvLyBhbmQgdHJhaWxpbmcgY2hhcmFj
dGVycy4gIEZvciBleGFtcGxlOiBUZXN0Rm9ybWF0U3BlY2lmaWVyKHQsICIlYSIsICJUaHUiKS4K
LXZvaWQgVGVzdEZvcm1hdFNwZWNpZmllcihhYnNsOjpUaW1lIHQsIGFic2w6OlRpbWVab25lIHR6
LCBjb25zdCBzdGQ6OnN0cmluZyYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBhbnMpIHsKK3ZvaWQgVGVzdEZvcm1hdFNwZWNpZmllcihhYnNsOjpUaW1l
IHQsIGFic2w6OlRpbWVab25lIHR6LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBmbXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBhbnMpIHsKICAgRVhQRUNUX0VRKGFu
cywgYWJzbDo6Rm9ybWF0VGltZShmbXQsIHQsIHR6KSk7CiAgIEVYUEVDVF9FUSgieHh4ICIgKyBh
bnMsIGFic2w6OkZvcm1hdFRpbWUoInh4eCAiICsgZm10LCB0LCB0eikpOwogICBFWFBFQ1RfRVEo
YW5zICsgIiB5eXkiLCBhYnNsOjpGb3JtYXRUaW1lKGZtdCArICIgeXl5IiwgdCwgdHopKTsKQEAg
LTExOCw3ICsxMTgsNyBAQCBURVNUKEZvcm1hdFRpbWUsIFJGQzExMjNGb3JtYXRQYWRzWWVhcikg
eyAgLy8gbG9jYWxlIHNwZWNpZmljCiAgIGFic2w6OlRpbWVab25lIHR6ID0gYWJzbDo6VVRDVGlt
ZVpvbmUoKTsKIAogICAvLyBBIHllYXIgb2YgNzcgc2hvdWxkIGJlIHBhZGRlZCB0byAwMDc3Lgot
ICBhYnNsOjpUaW1lIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoNzcsIDYsIDI4LCA5LCA4LCA3LCB0
eik7CisgIGFic2w6OlRpbWUgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCg3
NywgNiwgMjgsIDksIDgsIDcpLCB0eik7CiAgIEVYUEVDVF9FUSgiTW9uLCAyOCBKdW4gMDA3NyAw
OTowODowNyArMDAwMCIsCiAgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGFic2w6OlJGQzEx
MjNfZnVsbCwgdCwgdHopKTsKICAgRVhQRUNUX0VRKCIyOCBKdW4gMDA3NyAwOTowODowNyArMDAw
MCIsCkBAIC0xNTQsOSArMTU0LDkgQEAgVEVTVChQYXJzZVRpbWUsIEJhc2ljcykgewogICBFWFBF
Q1RfVFJVRShhYnNsOjpQYXJzZVRpbWUoIiVZLSVtLSVkICVIOiVNOiVTICV6IiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIyMDEzLTA2LTI4IDE5OjA4OjA5IC0wODAwIiwgJnQsICZl
cnIpKQogICAgICAgPDwgZXJyOwotICBhYnNsOjpUaW1lOjpCcmVha2Rvd24gYmQgPSB0LkluKGFi
c2w6OkZpeGVkVGltZVpvbmUoLTggKiA2MCAqIDYwKSk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNU
X1RJTUUoYmQsIDIwMTMsIDYsIDI4LCAxOSwgOCwgOSwgLTggKiA2MCAqIDYwLCBmYWxzZSk7Ci0g
IEVYUEVDVF9FUShhYnNsOjpaZXJvRHVyYXRpb24oKSwgYmQuc3Vic2Vjb25kKTsKKyAgY29uc3Qg
YXV0byBjaSA9IGFic2w6OkZpeGVkVGltZVpvbmUoLTggKiA2MCAqIDYwKS5BdCh0KTsKKyAgRVhQ
RUNUX0VRKGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDYsIDI4LCAxOSwgOCwgOSksIGNpLmNzKTsK
KyAgRVhQRUNUX0VRKGFic2w6Olplcm9EdXJhdGlvbigpLCBjaS5zdWJzZWNvbmQpOwogfQogCiBU
RVNUKFBhcnNlVGltZSwgTnVsbEVycm9yU3RyaW5nKSB7CkBAIC0xNzcsMTcgKzE3NywxNyBAQCBU
RVNUKFBhcnNlVGltZSwgV2l0aFRpbWVab25lKSB7CiAgIEVYUEVDVF9UUlVFKAogICAgICAgYWJz
bDo6UGFyc2VUaW1lKCIlWS0lbS0lZCAlSDolTTolUyIsICIyMDEzLTA2LTI4IDE5OjA4OjA5Iiwg
dHosICZ0LCAmZSkpCiAgICAgICA8PCBlOwotICBhYnNsOjpUaW1lOjpCcmVha2Rvd24gYmQgPSB0
LkluKHR6KTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxMywgNiwgMjgsIDE5
LCA4LCA5LCAtNyAqIDYwICogNjAsIHRydWUpOwotICBFWFBFQ1RfRVEoYWJzbDo6WmVyb0R1cmF0
aW9uKCksIGJkLnN1YnNlY29uZCk7CisgIGF1dG8gY2kgPSB0ei5BdCh0KTsKKyAgRVhQRUNUX0VR
KGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDYsIDI4LCAxOSwgOCwgOSksIGNpLmNzKTsKKyAgRVhQ
RUNUX0VRKGFic2w6Olplcm9EdXJhdGlvbigpLCBjaS5zdWJzZWNvbmQpOwogCiAgIC8vIEJ1dCB0
aGUgdGltZXpvbmUgaXMgaWdub3JlZCB3aGVuIGEgVVRDIG9mZnNldCBpcyBwcmVzZW50LgogICBF
WFBFQ1RfVFJVRShhYnNsOjpQYXJzZVRpbWUoIiVZLSVtLSVkICVIOiVNOiVTICV6IiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIyMDEzLTA2LTI4IDE5OjA4OjA5ICswODAwIiwgdHos
ICZ0LCAmZSkpCiAgICAgICA8PCBlOwotICBiZCA9IHQuSW4oYWJzbDo6Rml4ZWRUaW1lWm9uZSg4
ICogNjAgKiA2MCkpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEzLCA2LCAy
OCwgMTksIDgsIDksIDggKiA2MCAqIDYwLCBmYWxzZSk7Ci0gIEVYUEVDVF9FUShhYnNsOjpaZXJv
RHVyYXRpb24oKSwgYmQuc3Vic2Vjb25kKTsKKyAgY2kgPSBhYnNsOjpGaXhlZFRpbWVab25lKDgg
KiA2MCAqIDYwKS5BdCh0KTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsU2Vjb25kKDIwMTMsIDYs
IDI4LCAxOSwgOCwgOSksIGNpLmNzKTsKKyAgRVhQRUNUX0VRKGFic2w6Olplcm9EdXJhdGlvbigp
LCBjaS5zdWJzZWNvbmQpOwogfQogCiBURVNUKFBhcnNlVGltZSwgRXJyb3JDYXNlcykgewpAQCAt
MjAxLDcgKzIwMSw3IEBAIFRFU1QoUGFyc2VUaW1lLCBFcnJvckNhc2VzKSB7CiAgIGVyci5jbGVh
cigpOwogICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VUaW1lKCIlUSIsICJ4IiwgJnQsICZlcnIp
KSA8PCBlcnI7CiAgIC8vIEV4YWN0IGNvbnRlbnRzIG9mICJlcnIiIGFyZSBwbGF0Zm9ybS1kZXBl
bmRlbnQgYmVjYXVzZSBvZgotICAvLyBkaWZmZXJlbmNlcyBpbiB0aGUgc3RycHRpbWUgaW1wbGVt
ZW50YXRpb24gYmV0d2VlbiBPU1ggYW5kIExpbnV4LgorICAvLyBkaWZmZXJlbmNlcyBpbiB0aGUg
c3RycHRpbWUgaW1wbGVtZW50YXRpb24gYmV0d2VlbiBtYWNPUyBhbmQgTGludXguCiAgIEVYUEVD
VF9GQUxTRShlcnIuZW1wdHkoKSk7CiAKICAgLy8gRmFpbHMgYmVjYXVzZSBvZiB0cmFpbGluZywg
dW5wYXJzZWQgZGF0YSAiYmxhaCIuCkBAIC0zMzIsMTUgKzMzMiwxNSBAQCBURVNUKFBhcnNlVGlt
ZSwgSW5maW5pdGVUaW1lKSB7CiAgIEVYUEVDVF9UUlVFKGFic2w6OlBhcnNlVGltZSgiaW5maW5p
dGUtZnV0dXJlICVIOiVNIiwgImluZmluaXRlLWZ1dHVyZSAwMzowNCIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmdCwgJmVycikpOwogICBFWFBFQ1RfTkUoYWJzbDo6SW5maW5pdGVG
dXR1cmUoKSwgdCk7Ci0gIEVYUEVDVF9FUSgzLCB0LkluKHR6KS5ob3VyKTsKLSAgRVhQRUNUX0VR
KDQsIHQuSW4odHopLm1pbnV0ZSk7CisgIEVYUEVDVF9FUSgzLCB0ei5BdCh0KS5jcy5ob3VyKCkp
OworICBFWFBFQ1RfRVEoNCwgdHouQXQodCkuY3MubWludXRlKCkpOwogCiAgIC8vICJpbmZpbml0
ZS1wYXN0IiBhcyBsaXRlcmFsIHN0ZDo6c3RyaW5nCiAgIEVYUEVDVF9UUlVFKAogICAgICAgYWJz
bDo6UGFyc2VUaW1lKCJpbmZpbml0ZS1wYXN0ICVIOiVNIiwgImluZmluaXRlLXBhc3QgMDM6MDQi
LCAmdCwgJmVycikpOwogICBFWFBFQ1RfTkUoYWJzbDo6SW5maW5pdGVQYXN0KCksIHQpOwotICBF
WFBFQ1RfRVEoMywgdC5Jbih0eikuaG91cik7Ci0gIEVYUEVDVF9FUSg0LCB0LkluKHR6KS5taW51
dGUpOworICBFWFBFQ1RfRVEoMywgdHouQXQodCkuY3MuaG91cigpKTsKKyAgRVhQRUNUX0VRKDQs
IHR6LkF0KHQpLmNzLm1pbnV0ZSgpKTsKIAogICAvLyBUaGUgaW5wdXQgZG9lc24ndCBtYXRjaCB0
aGUgZm9ybWF0LgogICBFWFBFQ1RfRkFMU0UoYWJzbDo6UGFyc2VUaW1lKCJpbmZpbml0ZS1mdXR1
cmUgJUg6JU0iLCAiMDM6MDQiLCAmdCwgJmVycikpOwpAQCAtMzY1LDE2ICszNjUsMTggQEAgVEVT
VChQYXJzZVRpbWUsIEZhaWxzT25VbnJlcHJlc2VudGFibGVUaW1lKSB7CiAvLwogCiBURVNUKEZv
cm1hdFBhcnNlLCBSb3VuZFRyaXApIHsKLSAgY29uc3QgYWJzbDo6VGltZVpvbmUgZ3N0ID0KKyAg
Y29uc3QgYWJzbDo6VGltZVpvbmUgbGF4ID0KICAgICAgIGFic2w6OnRpbWVfaW50ZXJuYWw6Okxv
YWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIpOwotICBjb25zdCBhYnNsOjpUaW1lIGlu
ID0gYWJzbDo6RnJvbURhdGVUaW1lKDE5NzcsIDYsIDI4LCA5LCA4LCA3LCBnc3QpOworICBjb25z
dCBhYnNsOjpUaW1lIGluID0KKyAgICAgIGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29u
ZCgxOTc3LCA2LCAyOCwgOSwgOCwgNyksIGxheCk7CiAgIGNvbnN0IGFic2w6OkR1cmF0aW9uIHN1
YnNlY29uZHMgPSBhYnNsOjpOYW5vc2Vjb25kcyg2NTQzMjEpOwogICBzdGQ6OnN0cmluZyBlcnI7
CiAKICAgLy8gUkZDMzMzOSwgd2hpY2ggcmVuZGVycyBzdWJzZWNvbmRzLgogICB7CiAgICAgYWJz
bDo6VGltZSBvdXQ7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9IGFic2w6OkZvcm1hdFRpbWUo
YWJzbDo6UkZDMzMzOV9mdWxsLCBpbiArIHN1YnNlY29uZHMsIGdzdCk7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgcyA9CisgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoYWJzbDo6UkZDMzMzOV9mdWxs
LCBpbiArIHN1YnNlY29uZHMsIGxheCk7CiAgICAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VUaW1l
KGFic2w6OlJGQzMzMzlfZnVsbCwgcywgJm91dCwgJmVycikpCiAgICAgICAgIDw8IHMgPDwgIjog
IiA8PCBlcnI7CiAgICAgRVhQRUNUX0VRKGluICsgc3Vic2Vjb25kcywgb3V0KTsgIC8vIFJGQzMz
MzlfZnVsbCBpbmNsdWRlcyAlRXoKQEAgLTM4Myw3ICszODUsNyBAQCBURVNUKEZvcm1hdFBhcnNl
LCBSb3VuZFRyaXApIHsKICAgLy8gUkZDMTEyMywgd2hpY2ggb25seSBkb2VzIHdob2xlIHNlY29u
ZHMuCiAgIHsKICAgICBhYnNsOjpUaW1lIG91dDsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBzID0g
YWJzbDo6Rm9ybWF0VGltZShhYnNsOjpSRkMxMTIzX2Z1bGwsIGluLCBnc3QpOworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpGb3JtYXRUaW1lKGFic2w6OlJGQzExMjNfZnVsbCwgaW4s
IGxheCk7CiAgICAgRVhQRUNUX1RSVUUoYWJzbDo6UGFyc2VUaW1lKGFic2w6OlJGQzExMjNfZnVs
bCwgcywgJm91dCwgJmVycikpCiAgICAgICAgIDw8IHMgPDwgIjogIiA8PCBlcnI7CiAgICAgRVhQ
RUNUX0VRKGluLCBvdXQpOyAgLy8gUkZDMTEyM19mdWxsIGluY2x1ZGVzICV6CkBAIC0zOTMsNyAr
Mzk1LDEyIEBAIFRFU1QoRm9ybWF0UGFyc2UsIFJvdW5kVHJpcCkgewogICAvLyB3b3JrLiBPbiBX
aW5kb3dzLCBgYWJzbDo6UGFyc2VUaW1lKClgIGZhbGxzIGJhY2sgdG8gc3RkOjpnZXRfdGltZSgp
IHdoaWNoCiAgIC8vIGFwcGVhcnMgdG8gZmFpbCBvbiAiJWMiIChvciBhdCBsZWFzdCBvbiB0aGUg
IiVjIiB0ZXh0IHByb2R1Y2VkIGJ5CiAgIC8vIGBzdHJmdGltZSgpYCkuIFRoaXMgbWFrZXMgaXQg
ZmFpbCB0aGUgcm91bmQtdHJpcCB0ZXN0LgotI2lmbmRlZiBfTVNDX1ZFUgorICAvLworICAvLyBV
bmRlciB0aGUgZW1zY3JpcHRlbiBjb21waWxlciBgYWJzbDo6UGFyc2VUaW1lKCkgZmFsbHMgYmFj
ayB0bworICAvLyBgc3RycHRpbWUoKWAsIGJ1dCB0aGF0IGVuZHMgdXAgdXNpbmcgYSBkaWZmZXJl
bnQgZGVmaW5pdGlvbiBmb3IgIiVjIgorICAvLyBjb21wYXJlZCB0byBgc3RyZnRpbWUoKWAsIGFs
c28gY2F1c2luZyB0aGUgcm91bmQtdHJpcCB0ZXN0IHRvIGZhaWwKKyAgLy8gKHNlZSBodHRwczov
L2dpdGh1Yi5jb20va3JpcGtlbi9lbXNjcmlwdGVuL3B1bGwvNzQ5MSkuCisjaWYgIWRlZmluZWQo
X01TQ19WRVIpICYmICFkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQogICAvLyBFdmVuIHRob3VnaCB3
ZSBkb24ndCBrbm93IHdoYXQgJWMgd2lsbCBwcm9kdWNlLCBpdCBzaG91bGQgcm91bmR0cmlwLAog
ICAvLyBidXQgb25seSBpbiB0aGUgMC1vZmZzZXQgdGltZXpvbmUuCiAgIHsKQEAgLTQwMiw3ICs0
MDksNyBAQCBURVNUKEZvcm1hdFBhcnNlLCBSb3VuZFRyaXApIHsKICAgICBFWFBFQ1RfVFJVRShh
YnNsOjpQYXJzZVRpbWUoIiVjIiwgcywgJm91dCwgJmVycikpIDw8IHMgPDwgIjogIiA8PCBlcnI7
CiAgICAgRVhQRUNUX0VRKGluLCBvdXQpOwogICB9Ci0jZW5kaWYgIC8vIF9NU0NfVkVSCisjZW5k
aWYgIC8vICFfTVNDX1ZFUiAmJiAhX19FTVNDUklQVEVOX18KIH0KIAogVEVTVChGb3JtYXRQYXJz
ZSwgUm91bmRUcmlwRGlzdGFudEZ1dHVyZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L0JVSUxELmJh
emVsCmluZGV4IDlmMWJhMjFjZjdlMjFiMjJmMzM0M2Y4NDAwMWE0MzRhODNiNjA2YjUuLmIwNWMy
MzQ3MTRlNGNiOWQ5MWNiMzBiZjFiZGU0YWU3MjA2YTdlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovQlVJTEQuYmF6ZWwKQEAgLTQsNyArNCw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogIwogIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgICBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTIsOCAr
MTIsMjQgQEAKICMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAjICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCiAKK3BhY2thZ2UoZmVhdHVyZXMgPSBbIi1wYXJzZV9oZWFkZXJzIl0pCisKIGxpY2Vuc2Vz
KFsibm90aWNlIl0pICAjIEFwYWNoZSBMaWNlbnNlCiAKK2NvbmZpZ19zZXR0aW5nKAorICAgIG5h
bWUgPSAib3N4IiwKKyAgICBjb25zdHJhaW50X3ZhbHVlcyA9IFsKKyAgICAgICAgIkBiYXplbF90
b29scy8vcGxhdGZvcm1zOm9zeCIsCisgICAgXSwKKykKKworY29uZmlnX3NldHRpbmcoCisgICAg
bmFtZSA9ICJpb3MiLAorICAgIGNvbnN0cmFpbnRfdmFsdWVzID0gWworICAgICAgICAiQGJhemVs
X3Rvb2xzLy9wbGF0Zm9ybXM6aW9zIiwKKyAgICBdLAorKQorCiAjIyMgbGlicmFyaWVzCiAKIGNj
X2xpYnJhcnkoCkBAIC02MCw2ICs3NiwxNSBAQCBjY19saWJyYXJ5KAogICAgICAgICAiaW5jbHVk
ZS9jY3R6L3RpbWVfem9uZS5oIiwKICAgICAgICAgImluY2x1ZGUvY2N0ei96b25lX2luZm9fc291
cmNlLmgiLAogICAgIF0sCisgICAgbGlua29wdHMgPSBzZWxlY3QoeworICAgICAgICAiOm9zeCI6
IFsKKyAgICAgICAgICAgICItZnJhbWV3b3JrIEZvdW5kYXRpb24iLAorICAgICAgICBdLAorICAg
ICAgICAiOmlvcyI6IFsKKyAgICAgICAgICAgICItZnJhbWV3b3JrIEZvdW5kYXRpb24iLAorICAg
ICAgICBdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbXSwKKyAgICB9KSwKICAg
ICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0sCiAgICAgZGVwcyA9IFsiOmNp
dmlsX3RpbWUiXSwKICkKQEAgLTk2LDYgKzEyMSw3IEBAIGNjX3Rlc3QoCiBjY190ZXN0KAogICAg
IG5hbWUgPSAidGltZV96b25lX2xvb2t1cF90ZXN0IiwKICAgICBzaXplID0gInNtYWxsIiwKKyAg
ICB0aW1lb3V0ID0gIm1vZGVyYXRlIiwKICAgICBzcmNzID0gWyJzcmMvdGltZV96b25lX2xvb2t1
cF90ZXN0LmNjIl0sCiAgICAgZGF0YSA9IFsiOnpvbmVpbmZvIl0sCiAgICAgdGFncyA9IFsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei9CVUlMRC5nbgppbmRleCA4NjQxN2U3Y2UzYzczNTYzYmU2OTcyOTgwYzM4
ZjlhNDg2YWNlMGEzLi40NGUwMTc5MTlmOTVhMmRlZGFmOTcwZGMxOWExZDRlMjljMDU1Nzc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovQlVJTEQuZ24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L0JVSUxELmduCkBAIC00LDggKzQsMTUgQEAKIAogaW1wb3J0KCIv
L2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCisjIFVzYWdlIG9mIEFic2VpbCBpbiBDaHJv
bWl1bSBpcyBndWFyZGVkIGJ5IGFuIGV4cGxpY2l0IG9wdC1pbiBsaXN0LCBiZWZvcmUKKyMgYWRk
aW5nIHByb2plY3RzIHRvIHRoaXMgbGlzdCBwbGVhc2UgcmVhY2ggb3V0IHRvIGN4eEBjaHJvbWl1
bS5vcmcgYW5kIENDOgorIyAtIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworIworIyBNb3JlIGluZm9ybWF0aW9uIGNhbiBi
ZSBmb3VuZCBhdDoKKyMgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xRGdTMS1B
M3J6Ym9UTGpwZjRtMXNxa0pnV2puWV9SdTJkb2trMVgxdkJEVQogaWYgKGJ1aWxkX3dpdGhfY2hy
b21pdW0pIHsKICAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy9saWJhc3Npc3RhbnQvKiIsCiAgICAg
Ii8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
KiIsCiAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCkBAIC02Niw2ICs3Myw5
IEBAIHNvdXJjZV9zZXQoInRpbWVfem9uZSIpIHsKICAgICAiaW5jbHVkZS9jY3R6L3RpbWVfem9u
ZS5oIiwKICAgICAiaW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3VyY2UuaCIsCiAgIF0KKyAgaWYg
KGlzX21hYyB8fCBpc19pb3MpIHsKKyAgICBsaWJzID0gWyAiRm91bmRhdGlvbi5mcmFtZXdvcmsi
IF0KKyAgfQogICBkZXBzID0gWwogICAgICI6Y2l2aWxfdGltZSIsCiAgIF0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgKaW5kZXggMDg0
MmZhNGE0Njg5NTJmYmI3MWZlOWU5OGI4ODNlMmZhNDdkOTZlMS4uODVkMGQzZmZmZmI1NzcyOWI5
NWVkZDM1OWEyN2JmNmQ1Mjk4NTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0yNzksNyArMjc5LDcgQEAgdXNpbmcgY2l2aWxfc2Vjb25kID0gZGV0
YWlsOjpjaXZpbF9zZWNvbmQ7CiAvLwogdXNpbmcgZGV0YWlsOjp3ZWVrZGF5OwogCi0vLyBSZXR1
cm5zIHRoZSB3ZWVrZGF5IGZvciB0aGUgZ2l2ZW4gY2l2aWxfZGF5LgorLy8gUmV0dXJucyB0aGUg
d2Vla2RheSBmb3IgdGhlIGdpdmVuIGNpdmlsLXRpbWUgdmFsdWUuCiAvLwogLy8gICBjaXZpbF9k
YXkgYSgyMDE1LCA4LCAxMyk7CiAvLyAgIHdlZWtkYXkgd2QgPSBnZXRfd2Vla2RheShhKTsgIC8v
IHdkID09IHdlZWtkYXk6OnRodXJzZGF5CkBAIC0zMDYsMTQgKzMwNiwxNCBAQCB1c2luZyBkZXRh
aWw6OmdldF93ZWVrZGF5OwogLy8KIC8vICAgY2l2aWxfZGF5IGQgPSAuLi4KIC8vICAgLy8gR2V0
cyB0aGUgZm9sbG93aW5nIFRodXJzZGF5IGlmIGQgaXMgbm90IGFscmVhZHkgVGh1cnNkYXkKLS8v
ICAgY2l2aWxfZGF5IHRodXJzMSA9IHByZXZfd2Vla2RheShkLCB3ZWVrZGF5Ojp0aHVyc2RheSkg
KyA3OworLy8gICBjaXZpbF9kYXkgdGh1cnMxID0gbmV4dF93ZWVrZGF5KGQgLSAxLCB3ZWVrZGF5
Ojp0aHVyc2RheSk7CiAvLyAgIC8vIEdldHMgdGhlIHByZXZpb3VzIFRodXJzZGF5IGlmIGQgaXMg
bm90IGFscmVhZHkgVGh1cnNkYXkKLS8vICAgY2l2aWxfZGF5IHRodXJzMiA9IG5leHRfd2Vla2Rh
eShkLCB3ZWVrZGF5Ojp0aHVyc2RheSkgLSA3OworLy8gICBjaXZpbF9kYXkgdGh1cnMyID0gcHJl
dl93ZWVrZGF5KGQgKyAxLCB3ZWVrZGF5Ojp0aHVyc2RheSk7CiAvLwogdXNpbmcgZGV0YWlsOjpu
ZXh0X3dlZWtkYXk7CiB1c2luZyBkZXRhaWw6OnByZXZfd2Vla2RheTsKIAotLy8gUmV0dXJucyB0
aGUgZGF5LW9mLXllYXIgZm9yIHRoZSBnaXZlbiBjaXZpbF9kYXkuCisvLyBSZXR1cm5zIHRoZSBk
YXktb2YteWVhciBmb3IgdGhlIGdpdmVuIGNpdmlsLXRpbWUgdmFsdWUuCiAvLwogLy8gICBjaXZp
bF9kYXkgYSgyMDE1LCAxLCAxKTsKIC8vICAgaW50IHlkX2phbl8xID0gZ2V0X3llYXJkYXkoYSk7
ICAgLy8geWRfamFuXzEgPSAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
aW5jbHVkZS9jY3R6L2NpdmlsX3RpbWVfZGV0YWlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWVfZGV0YWlsLmgKaW5kZXggZDdmNzI3MTdlY2UyNTQw
ODg3NDBlNzM3NTgyODU5NmM5NjNmYjAxMy4uNDMzMDc4YTczMDk3MTVmMWJlOTg4NmRiZDkxMGZj
ZmJmNDljOGNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUv
Y2N0ei9jaXZpbF90aW1lX2RldGFpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9p
bmNsdWRlL2NjdHovY2l2aWxfdGltZV9kZXRhaWwuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
IC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4K
IAogLy8gRGlzYWJsZSBjb25zdGV4cHIgc3VwcG9ydCB1bmxlc3Mgd2UgYXJlIGluIEMrKzE0IG1v
ZGUuCi0jaWYgX19jcHBfY29uc3RleHByID49IDIwMTMwNCB8fCBfTVNDX1ZFUiA+PSAxOTEwCisj
aWYgX19jcHBfY29uc3RleHByID49IDIwMTMwNCB8fCAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01T
Q19WRVIgPj0gMTkxMCkKICNkZWZpbmUgQ09OU1RFWFBSX0QgY29uc3RleHByICAvLyBkYXRhCiAj
ZGVmaW5lIENPTlNURVhQUl9GIGNvbnN0ZXhwciAgLy8gZnVuY3Rpb24KICNkZWZpbmUgQ09OU1RF
WFBSX00gY29uc3RleHByICAvLyBtZW1iZXIKQEAgLTMyNiw2ICszMjYsMzcgQEAgQ09OU1RFWFBS
X0YgZmllbGRzIGFsaWduKHllYXJfdGFnLCBmaWVsZHMgZikgbm9leGNlcHQgewogCiAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KIAorbmFtZXNwYWNlIGltcGwgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KK0gg
QWJzbEhhc2hWYWx1ZUltcGwoc2Vjb25kX3RhZywgSCBoLCBmaWVsZHMgZikgeworICByZXR1cm4g
SDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIGYueSwgZi5tLCBmLmQsIGYuaGgsIGYubW0sIGYuc3Mp
OworfQordGVtcGxhdGUgPHR5cGVuYW1lIEg+CitIIEFic2xIYXNoVmFsdWVJbXBsKG1pbnV0ZV90
YWcsIEggaCwgZmllbGRzIGYpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBm
LnksIGYubSwgZi5kLCBmLmhoLCBmLm1tKTsKK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBIPgorSCBB
YnNsSGFzaFZhbHVlSW1wbChob3VyX3RhZywgSCBoLCBmaWVsZHMgZikgeworICByZXR1cm4gSDo6
Y29tYmluZShzdGQ6Om1vdmUoaCksIGYueSwgZi5tLCBmLmQsIGYuaGgpOworfQordGVtcGxhdGUg
PHR5cGVuYW1lIEg+CitIIEFic2xIYXNoVmFsdWVJbXBsKGRheV90YWcsIEggaCwgZmllbGRzIGYp
IHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBmLnksIGYubSwgZi5kKTsKK30K
K3RlbXBsYXRlIDx0eXBlbmFtZSBIPgorSCBBYnNsSGFzaFZhbHVlSW1wbChtb250aF90YWcsIEgg
aCwgZmllbGRzIGYpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBmLnksIGYu
bSk7Cit9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KK0ggQWJzbEhhc2hWYWx1ZUltcGwoeWVhcl90
YWcsIEggaCwgZmllbGRzIGYpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBm
LnkpOworfQorCit9ICAvLyBuYW1lc3BhY2UgaW1wbAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBjaXZpbF90aW1lIHsKICBwdWJsaWM6CkBAIC0zNTUs
MTIgKzM4NiwxMiBAQCBjbGFzcyBjaXZpbF90aW1lIHsKICAgICAgIDogY2l2aWxfdGltZShjdC5m
Xykge30KIAogICAvLyBGYWN0b3JpZXMgZm9yIHRoZSBtYXhpbXVtL21pbmltdW0gcmVwcmVzZW50
YWJsZSBjaXZpbF90aW1lLgotICBzdGF0aWMgQ09OU1RFWFBSX0YgY2l2aWxfdGltZSBtYXgoKSB7
Ci0gICAgY29uc3QgYXV0byBtYXhfeWVhciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjppbnRf
bGVhc3Q2NF90Pjo6bWF4KCk7CisgIHN0YXRpYyBDT05TVEVYUFJfRiBjaXZpbF90aW1lIChtYXgp
KCkgeworICAgIGNvbnN0IGF1dG8gbWF4X3llYXIgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6
OmludF9sZWFzdDY0X3Q+OjptYXgpKCk7CiAgICAgcmV0dXJuIGNpdmlsX3RpbWUobWF4X3llYXIs
IDEyLCAzMSwgMjMsIDU5LCA1OSk7CiAgIH0KLSAgc3RhdGljIENPTlNURVhQUl9GIGNpdmlsX3Rp
bWUgbWluKCkgewotICAgIGNvbnN0IGF1dG8gbWluX3llYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHN0ZDo6aW50X2xlYXN0NjRfdD46Om1pbigpOworICBzdGF0aWMgQ09OU1RFWFBSX0YgY2l2aWxf
dGltZSAobWluKSgpIHsKKyAgICBjb25zdCBhdXRvIG1pbl95ZWFyID0gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8c3RkOjppbnRfbGVhc3Q2NF90Pjo6bWluKSgpOwogICAgIHJldHVybiBjaXZpbF90aW1l
KG1pbl95ZWFyLCAxLCAxLCAwLCAwLCAwKTsKICAgfQogCkBAIC0zNzgsNyArNDA5LDcgQEAgY2xh
c3MgY2l2aWxfdGltZSB7CiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAgIENPTlNURVhQUl9NIGNp
dmlsX3RpbWUmIG9wZXJhdG9yLT0oZGlmZl90IG4pIG5vZXhjZXB0IHsKLSAgICBpZiAobiAhPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGRpZmZfdD46Om1pbigpKSB7CisgICAgaWYgKG4gIT0gKHN0ZDo6
bnVtZXJpY19saW1pdHM8ZGlmZl90Pjo6bWluKSgpKSB7CiAgICAgICBmXyA9IHN0ZXAoVHt9LCBm
XywgLW4pOwogICAgIH0gZWxzZSB7CiAgICAgICBmXyA9IHN0ZXAoVHt9LCBzdGVwKFR7fSwgZl8s
IC0obiArIDEpKSwgMSk7CkBAIC00MTgsOCArNDQ5LDcgQEAgY2xhc3MgY2l2aWxfdGltZSB7CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CiAgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBj
aXZpbF90aW1lIGEpIHsKLSAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIGEuZl8u
eSwgYS5mXy5tLCBhLmZfLmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
LmZfLmhoLCBhLmZfLm1tLCBhLmZfLnNzKTsKKyAgICByZXR1cm4gaW1wbDo6QWJzbEhhc2hWYWx1
ZUltcGwoVHt9LCBzdGQ6Om1vdmUoaCksIGEuZl8pOwogICB9CiAKICBwcml2YXRlOgpAQCAtNTA1
LDM5ICs1MzUsNzEgQEAgZW51bSBjbGFzcyB3ZWVrZGF5IHsKICAgc3VuZGF5LAogfTsKIAotQ09O
U1RFWFBSX0Ygd2Vla2RheSBnZXRfd2Vla2RheShjb25zdCBjaXZpbF9kYXkmIGNkKSBub2V4Y2Vw
dCB7Ci0gIENPTlNURVhQUl9EIHdlZWtkYXkga193ZWVrZGF5X2J5X3N1bl9vZmZbN10gPSB7Ci0g
ICAgICB3ZWVrZGF5OjpzdW5kYXksICAgICB3ZWVrZGF5Ojptb25kYXksICAgIHdlZWtkYXk6OnR1
ZXNkYXksCi0gICAgICB3ZWVrZGF5Ojp3ZWRuZXNkYXksICB3ZWVrZGF5Ojp0aHVyc2RheSwgIHdl
ZWtkYXk6OmZyaWRheSwKK0NPTlNURVhQUl9GIHdlZWtkYXkgZ2V0X3dlZWtkYXkoY29uc3QgY2l2
aWxfc2Vjb25kJiBjcykgbm9leGNlcHQgeworICBDT05TVEVYUFJfRCB3ZWVrZGF5IGtfd2Vla2Rh
eV9ieV9tb25fb2ZmWzEzXSA9IHsKKyAgICAgIHdlZWtkYXk6Om1vbmRheSwgICAgd2Vla2RheTo6
dHVlc2RheSwgIHdlZWtkYXk6OndlZG5lc2RheSwKKyAgICAgIHdlZWtkYXk6OnRodXJzZGF5LCAg
d2Vla2RheTo6ZnJpZGF5LCAgIHdlZWtkYXk6OnNhdHVyZGF5LAorICAgICAgd2Vla2RheTo6c3Vu
ZGF5LCAgICB3ZWVrZGF5Ojptb25kYXksICAgd2Vla2RheTo6dHVlc2RheSwKKyAgICAgIHdlZWtk
YXk6OndlZG5lc2RheSwgd2Vla2RheTo6dGh1cnNkYXksIHdlZWtkYXk6OmZyaWRheSwKICAgICAg
IHdlZWtkYXk6OnNhdHVyZGF5LAogICB9OwogICBDT05TVEVYUFJfRCBpbnQga193ZWVrZGF5X29m
ZnNldHNbMSArIDEyXSA9IHsKICAgICAgIC0xLCAwLCAzLCAyLCA1LCAwLCAzLCA1LCAxLCA0LCA2
LCAyLCA0LAogICB9OwotICB5ZWFyX3Qgd2QgPSAyNDAwICsgKGNkLnllYXIoKSAlIDQwMCkgLSAo
Y2QubW9udGgoKSA8IDMpOworICB5ZWFyX3Qgd2QgPSAyNDAwICsgKGNzLnllYXIoKSAlIDQwMCkg
LSAoY3MubW9udGgoKSA8IDMpOwogICB3ZCArPSB3ZCAvIDQgLSB3ZCAvIDEwMCArIHdkIC8gNDAw
OwotICB3ZCArPSBrX3dlZWtkYXlfb2Zmc2V0c1tjZC5tb250aCgpXSArIGNkLmRheSgpOwotICBy
ZXR1cm4ga193ZWVrZGF5X2J5X3N1bl9vZmZbKHdkICUgNyArIDcpICUgN107CisgIHdkICs9IGtf
d2Vla2RheV9vZmZzZXRzW2NzLm1vbnRoKCldICsgY3MuZGF5KCk7CisgIHJldHVybiBrX3dlZWtk
YXlfYnlfbW9uX29mZlt3ZCAlIDcgKyA2XTsKIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIENPTlNU
RVhQUl9GIGNpdmlsX2RheSBuZXh0X3dlZWtkYXkoY2l2aWxfZGF5IGNkLCB3ZWVrZGF5IHdkKSBu
b2V4Y2VwdCB7Ci0gIGRvIHsgY2QgKz0gMTsgfSB3aGlsZSAoZ2V0X3dlZWtkYXkoY2QpICE9IHdk
KTsKLSAgcmV0dXJuIGNkOworICBDT05TVEVYUFJfRCB3ZWVrZGF5IGtfd2Vla2RheXNfZm9yd1sx
NF0gPSB7CisgICAgICB3ZWVrZGF5Ojptb25kYXksICAgIHdlZWtkYXk6OnR1ZXNkYXksICB3ZWVr
ZGF5Ojp3ZWRuZXNkYXksCisgICAgICB3ZWVrZGF5Ojp0aHVyc2RheSwgIHdlZWtkYXk6OmZyaWRh
eSwgICB3ZWVrZGF5OjpzYXR1cmRheSwKKyAgICAgIHdlZWtkYXk6OnN1bmRheSwgICAgd2Vla2Rh
eTo6bW9uZGF5LCAgIHdlZWtkYXk6OnR1ZXNkYXksCisgICAgICB3ZWVrZGF5Ojp3ZWRuZXNkYXks
IHdlZWtkYXk6OnRodXJzZGF5LCB3ZWVrZGF5OjpmcmlkYXksCisgICAgICB3ZWVrZGF5OjpzYXR1
cmRheSwgIHdlZWtkYXk6OnN1bmRheSwKKyAgfTsKKyAgd2Vla2RheSBiYXNlID0gZ2V0X3dlZWtk
YXkoY2QpOworICBmb3IgKGludCBpID0gMDs7ICsraSkgeworICAgIGlmIChiYXNlID09IGtfd2Vl
a2RheXNfZm9yd1tpXSkgeworICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOzsgKytqKSB7CisgICAg
ICAgIGlmICh3ZCA9PSBrX3dlZWtkYXlzX2Zvcndbal0pIHsKKyAgICAgICAgICByZXR1cm4gY2Qg
KyAoaiAtIGkpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CiB9CiAKIENPTlNURVhQ
Ul9GIGNpdmlsX2RheSBwcmV2X3dlZWtkYXkoY2l2aWxfZGF5IGNkLCB3ZWVrZGF5IHdkKSBub2V4
Y2VwdCB7Ci0gIGRvIHsgY2QgLT0gMTsgfSB3aGlsZSAoZ2V0X3dlZWtkYXkoY2QpICE9IHdkKTsK
LSAgcmV0dXJuIGNkOworICBDT05TVEVYUFJfRCB3ZWVrZGF5IGtfd2Vla2RheXNfYmFja1sxNF0g
PSB7CisgICAgICB3ZWVrZGF5OjpzdW5kYXksICAgd2Vla2RheTo6c2F0dXJkYXksICB3ZWVrZGF5
OjpmcmlkYXksCisgICAgICB3ZWVrZGF5Ojp0aHVyc2RheSwgd2Vla2RheTo6d2VkbmVzZGF5LCB3
ZWVrZGF5Ojp0dWVzZGF5LAorICAgICAgd2Vla2RheTo6bW9uZGF5LCAgIHdlZWtkYXk6OnN1bmRh
eSwgICAgd2Vla2RheTo6c2F0dXJkYXksCisgICAgICB3ZWVrZGF5OjpmcmlkYXksICAgd2Vla2Rh
eTo6dGh1cnNkYXksICB3ZWVrZGF5Ojp3ZWRuZXNkYXksCisgICAgICB3ZWVrZGF5Ojp0dWVzZGF5
LCAgd2Vla2RheTo6bW9uZGF5LAorICB9OworICB3ZWVrZGF5IGJhc2UgPSBnZXRfd2Vla2RheShj
ZCk7CisgIGZvciAoaW50IGkgPSAwOzsgKytpKSB7CisgICAgaWYgKGJhc2UgPT0ga193ZWVrZGF5
c19iYWNrW2ldKSB7CisgICAgICBmb3IgKGludCBqID0gaSArIDE7OyArK2opIHsKKyAgICAgICAg
aWYgKHdkID09IGtfd2Vla2RheXNfYmFja1tqXSkgeworICAgICAgICAgIHJldHVybiBjZCAtIChq
IC0gaSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KIH0KIAotQ09OU1RFWFBSX0Yg
aW50IGdldF95ZWFyZGF5KGNvbnN0IGNpdmlsX2RheSYgY2QpIG5vZXhjZXB0IHsKK0NPTlNURVhQ
Ul9GIGludCBnZXRfeWVhcmRheShjb25zdCBjaXZpbF9zZWNvbmQmIGNzKSBub2V4Y2VwdCB7CiAg
IENPTlNURVhQUl9EIGludCBrX21vbnRoX29mZnNldHNbMSArIDEyXSA9IHsKICAgICAgIC0xLCAw
LCAzMSwgNTksIDkwLCAxMjAsIDE1MSwgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNCwKICAg
fTsKLSAgY29uc3QgaW50IGZlYjI5ID0gKGNkLm1vbnRoKCkgPiAyICYmIGltcGw6OmlzX2xlYXBf
eWVhcihjZC55ZWFyKCkpKTsKLSAgcmV0dXJuIGtfbW9udGhfb2Zmc2V0c1tjZC5tb250aCgpXSAr
IGZlYjI5ICsgY2QuZGF5KCk7CisgIGNvbnN0IGludCBmZWIyOSA9IChjcy5tb250aCgpID4gMiAm
JiBpbXBsOjppc19sZWFwX3llYXIoY3MueWVhcigpKSk7CisgIHJldHVybiBrX21vbnRoX29mZnNl
dHNbY3MubW9udGgoKV0gKyBmZWIyOSArIGNzLmRheSgpOwogfQogCiAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96
b25lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5o
CmluZGV4IGYyOGRhZDE3NTUwNjU5YjA3ZjBjMjAwMzhiYzQ3ZjI1YTAyZjYyYTEuLmVmNmM0YmEx
MDk1OWZiY2NkYzdjZDI1MWEzODg1MDQyY2ExYjE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei90aW1lX3pvbmUuaApAQCAtNCw3ICs0LDcgQEAKIC8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8K
LS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0
dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTcyLDcgKzcyLDcgQEAgc3BsaXRfc2Vjb25kcyhjb25z
dCB0aW1lX3BvaW50PHNlY29uZHM+JiB0cCkgewogLy8KIC8vIFNlZSBhbHNvOgogLy8gLSBodHRw
Oi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMKLS8vIC0gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9ab25laW5mbworLy8gLSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9ab25laW5m
bwogY2xhc3MgdGltZV96b25lIHsKICBwdWJsaWM6CiAgIHRpbWVfem9uZSgpIDogdGltZV96b25l
KG51bGxwdHIpIHt9ICAvLyBFcXVpdmFsZW50IHRvIFVUQwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei96b25lX2luZm9fc291cmNlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3VyY2UuaAppbmRleCAy
MGE3Njk3OTM3MGZjMDZjY2VlZTljOWM3Yzc4YTUxYmIwZjhjOWZlLi4yYjg5OGQxODJjYWJhODA2
Njc2NTJlMDMxMTVlODk1ZDU2YjBhNDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovaW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3VyY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3pvbmVfaW5mb19zb3VyY2UuaApAQCAtNCw3ICs0LDcg
QEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAg
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei9zcmMvY2N0el9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
c3JjL2NjdHpfYmVuY2htYXJrLmNjCmluZGV4IDQ0OThkN2QwYjZiN2UwYzRhNmZkYjkyMTQ5Yzc4
Nzk2ZDNkMDhiNmYuLmE0MGY1MDRlMDYzZTRkMDZiMmY0Y2RlYzllZDRjNDQwYzA3MTY2YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2N0el9iZW5jaG1hcmsuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jY3R6X2JlbmNobWFyay5jYwpAQCAt
NCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTQ3LDYgKzQ3LDU2IEBAIHZv
aWQgQk1fU3RlcF9EYXlzKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiB9CiBCRU5DSE1BUkso
Qk1fU3RlcF9EYXlzKTsKIAordm9pZCBCTV9HZXRXZWVrZGF5KGJlbmNobWFyazo6U3RhdGUmIHN0
YXRlKSB7CisgIGNvbnN0IGNjdHo6OmNpdmlsX2RheSBjKDIwMTQsIDgsIDIyKTsKKyAgd2hpbGUg
KHN0YXRlLktlZXBSdW5uaW5nKCkpIHsKKyAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoY2N0
ejo6Z2V0X3dlZWtkYXkoYykpOworICB9Cit9CitCRU5DSE1BUksoQk1fR2V0V2Vla2RheSk7CisK
K3ZvaWQgQk1fTmV4dFdlZWtkYXkoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKKyAgY29uc3Qg
Y2N0ejo6Y2l2aWxfZGF5IGtTdGFydCgyMDE0LCA4LCAyMik7CisgIGNvbnN0IGNjdHo6OmNpdmls
X2RheSBrRGF5c1s3XSA9IHsKKyAgICAgIGtTdGFydCArIDAsIGtTdGFydCArIDEsIGtTdGFydCAr
IDIsIGtTdGFydCArIDMsCisgICAgICBrU3RhcnQgKyA0LCBrU3RhcnQgKyA1LCBrU3RhcnQgKyA2
LAorICB9OworICBjb25zdCBjY3R6Ojp3ZWVrZGF5IGtXZWVrZGF5c1s3XSA9IHsKKyAgICAgIGNj
dHo6OndlZWtkYXk6Om1vbmRheSwgICBjY3R6Ojp3ZWVrZGF5Ojp0dWVzZGF5LCBjY3R6Ojp3ZWVr
ZGF5Ojp3ZWRuZXNkYXksCisgICAgICBjY3R6Ojp3ZWVrZGF5Ojp0aHVyc2RheSwgY2N0ejo6d2Vl
a2RheTo6ZnJpZGF5LCAgY2N0ejo6d2Vla2RheTo6c2F0dXJkYXksCisgICAgICBjY3R6Ojp3ZWVr
ZGF5OjpzdW5kYXksCisgIH07CisgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZ0JhdGNoKDcgKiA3
KSkgeworICAgIGZvciAoY29uc3QgYXV0byBmcm9tIDoga0RheXMpIHsKKyAgICAgIGZvciAoY29u
c3QgYXV0byB0byA6IGtXZWVrZGF5cykgeworICAgICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1p
emUoY2N0ejo6bmV4dF93ZWVrZGF5KGZyb20sIHRvKSk7CisgICAgICB9CisgICAgfQorICB9Cit9
CitCRU5DSE1BUksoQk1fTmV4dFdlZWtkYXkpOworCit2b2lkIEJNX1ByZXZXZWVrZGF5KGJlbmNo
bWFyazo6U3RhdGUmIHN0YXRlKSB7CisgIGNvbnN0IGNjdHo6OmNpdmlsX2RheSBrU3RhcnQoMjAx
NCwgOCwgMjIpOworICBjb25zdCBjY3R6OjpjaXZpbF9kYXkga0RheXNbN10gPSB7CisgICAgICBr
U3RhcnQgKyAwLCBrU3RhcnQgKyAxLCBrU3RhcnQgKyAyLCBrU3RhcnQgKyAzLAorICAgICAga1N0
YXJ0ICsgNCwga1N0YXJ0ICsgNSwga1N0YXJ0ICsgNiwKKyAgfTsKKyAgY29uc3QgY2N0ejo6d2Vl
a2RheSBrV2Vla2RheXNbN10gPSB7CisgICAgICBjY3R6Ojp3ZWVrZGF5Ojptb25kYXksICAgY2N0
ejo6d2Vla2RheTo6dHVlc2RheSwgY2N0ejo6d2Vla2RheTo6d2VkbmVzZGF5LAorICAgICAgY2N0
ejo6d2Vla2RheTo6dGh1cnNkYXksIGNjdHo6OndlZWtkYXk6OmZyaWRheSwgIGNjdHo6OndlZWtk
YXk6OnNhdHVyZGF5LAorICAgICAgY2N0ejo6d2Vla2RheTo6c3VuZGF5LAorICB9OworICB3aGls
ZSAoc3RhdGUuS2VlcFJ1bm5pbmdCYXRjaCg3ICogNykpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8g
ZnJvbSA6IGtEYXlzKSB7CisgICAgICBmb3IgKGNvbnN0IGF1dG8gdG8gOiBrV2Vla2RheXMpIHsK
KyAgICAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGNjdHo6OnByZXZfd2Vla2RheShmcm9t
LCB0bykpOworICAgICAgfQorICAgIH0KKyAgfQorfQorQkVOQ0hNQVJLKEJNX1ByZXZXZWVrZGF5
KTsKKwogY29uc3QgY2hhciBSRkMzMzM5X2Z1bGxbXSA9ICIlWS0lbS0lZFQlSDolTTolRSpTJUV6
IjsKIGNvbnN0IGNoYXIgUkZDMzMzOV9zZWNbXSA9ICIlWS0lbS0lZFQlSDolTTolUyVFeiI7CiAK
QEAgLTM1Nyw2ICs0MDcsNyBAQCBjb25zdCBjaGFyKiBjb25zdCBrVGltZVpvbmVOYW1lc1tdID0g
ewogICAiQXNpYS9Qb250aWFuYWsiLAogICAiQXNpYS9QeW9uZ3lhbmciLAogICAiQXNpYS9RYXRh
ciIsCisgICJBc2lhL1Fvc3RhbmF5IiwKICAgIkFzaWEvUXl6eWxvcmRhIiwKICAgIkFzaWEvUmFu
Z29vbiIsCiAgICJBc2lhL1JpeWFkaCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovc3JjL2NpdmlsX3RpbWVfZGV0YWlsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy9jaXZpbF90aW1lX2RldGFpbC5jYwppbmRleCA3ODBkNWM5NmU4YmZlM2RmMGZhOGYyMGNl
YjU0MjRiYjVmZWY3YWI1Li5jYjQwYjZiYzUzYzM3YmE4N2U4NTdhODFmODIyMDc1NGNhZmQ3NDBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVfZGV0
YWlsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2l2aWxfdGltZV9kZXRh
aWwuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2l2aWxfdGltZV90ZXN0LmNjCmluZGV4IGZhZmZkZTQ3
MGFmNGY0NWMzYjhhNGJhYTBjMGQyYmNmYTMxODgwNGEuLjEwYTVmZmU1ODczYzlhMjllZDhlNGI0
YjA5ZDAwZGY2YWMxNDY4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9z
cmMvY2l2aWxfdGltZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMv
Y2l2aWxfdGltZV90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LApAQCAtMzcsNyArMzcsNyBAQCBzdGQ6OnN0cmluZyBGb3JtYXQoY29uc3QgVCYgdCkgewogCiB9
ICAvLyBuYW1lc3BhY2UKIAotI2lmIF9fY3BwX2NvbnN0ZXhwciA+PSAyMDEzMDQgfHwgX01TQ19W
RVIgPj0gMTkxMAorI2lmIF9fY3BwX2NvbnN0ZXhwciA+PSAyMDEzMDQgfHwgKGRlZmluZWQoX01T
Q19WRVIpICYmIF9NU0NfVkVSID49IDE5MTApCiAvLyBDb25zdHJ1Y3Rpb24gY29uc3RleHByIHRl
c3RzCiAKIFRFU1QoQ2l2aWxUaW1lLCBOb3JtYWwpIHsKQEAgLTMxOSw3ICszMTksNyBAQCBURVNU
KENpdmlsVGltZSwgWWVhckRheSkgewogICBjb25zdGV4cHIgaW50IHlkID0gZ2V0X3llYXJkYXko
Y2QpOwogICBzdGF0aWNfYXNzZXJ0KHlkID09IDI4LCAiWWVhckRheSIpOwogfQotI2VuZGlmICAv
LyBfX2NwcF9jb25zdGV4cHIgPj0gMjAxMzA0IHx8IF9NU0NfVkVSID49IDE5MTAKKyNlbmRpZiAg
Ly8gX19jcHBfY29uc3RleHByID49IDIwMTMwNCB8fCAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01T
Q19WRVIgPj0gMTkxMCkKIAogLy8gVGhlIHJlbWFpbmluZyB0ZXN0cyBkbyBub3QgdXNlIGNvbnN0
ZXhwci4KIApAQCAtODIxLDYgKzgyMSw4IEBAIFRFU1QoQ2l2aWxUaW1lLCBQcm9wZXJ0aWVzKSB7
CiAgIEVYUEVDVF9FUSg0LCBzcy5ob3VyKCkpOwogICBFWFBFQ1RfRVEoNSwgc3MubWludXRlKCkp
OwogICBFWFBFQ1RfRVEoNiwgc3Muc2Vjb25kKCkpOworICBFWFBFQ1RfRVEod2Vla2RheTo6dHVl
c2RheSwgZ2V0X3dlZWtkYXkoc3MpKTsKKyAgRVhQRUNUX0VRKDM0LCBnZXRfeWVhcmRheShzcykp
OwogCiAgIGNpdmlsX21pbnV0ZSBtbSgyMDE1LCAyLCAzLCA0LCA1LCA2KTsKICAgRVhQRUNUX0VR
KDIwMTUsIG1tLnllYXIoKSk7CkBAIC04MjksNiArODMxLDggQEAgVEVTVChDaXZpbFRpbWUsIFBy
b3BlcnRpZXMpIHsKICAgRVhQRUNUX0VRKDQsIG1tLmhvdXIoKSk7CiAgIEVYUEVDVF9FUSg1LCBt
bS5taW51dGUoKSk7CiAgIEVYUEVDVF9FUSgwLCBtbS5zZWNvbmQoKSk7CisgIEVYUEVDVF9FUSh3
ZWVrZGF5Ojp0dWVzZGF5LCBnZXRfd2Vla2RheShtbSkpOworICBFWFBFQ1RfRVEoMzQsIGdldF95
ZWFyZGF5KG1tKSk7CiAKICAgY2l2aWxfaG91ciBoaCgyMDE1LCAyLCAzLCA0LCA1LCA2KTsKICAg
RVhQRUNUX0VRKDIwMTUsIGhoLnllYXIoKSk7CkBAIC04MzcsNiArODQxLDggQEAgVEVTVChDaXZp
bFRpbWUsIFByb3BlcnRpZXMpIHsKICAgRVhQRUNUX0VRKDQsIGhoLmhvdXIoKSk7CiAgIEVYUEVD
VF9FUSgwLCBoaC5taW51dGUoKSk7CiAgIEVYUEVDVF9FUSgwLCBoaC5zZWNvbmQoKSk7CisgIEVY
UEVDVF9FUSh3ZWVrZGF5Ojp0dWVzZGF5LCBnZXRfd2Vla2RheShoaCkpOworICBFWFBFQ1RfRVEo
MzQsIGdldF95ZWFyZGF5KGhoKSk7CiAKICAgY2l2aWxfZGF5IGQoMjAxNSwgMiwgMywgNCwgNSwg
Nik7CiAgIEVYUEVDVF9FUSgyMDE1LCBkLnllYXIoKSk7CkBAIC04NTUsNiArODYxLDggQEAgVEVT
VChDaXZpbFRpbWUsIFByb3BlcnRpZXMpIHsKICAgRVhQRUNUX0VRKDAsIG0uaG91cigpKTsKICAg
RVhQRUNUX0VRKDAsIG0ubWludXRlKCkpOwogICBFWFBFQ1RfRVEoMCwgbS5zZWNvbmQoKSk7Cisg
IEVYUEVDVF9FUSh3ZWVrZGF5OjpzdW5kYXksIGdldF93ZWVrZGF5KG0pKTsKKyAgRVhQRUNUX0VR
KDMyLCBnZXRfeWVhcmRheShtKSk7CiAKICAgY2l2aWxfeWVhciB5KDIwMTUsIDIsIDMsIDQsIDUs
IDYpOwogICBFWFBFQ1RfRVEoMjAxNSwgeS55ZWFyKCkpOwpAQCAtODYzLDYgKzg3MSw4IEBAIFRF
U1QoQ2l2aWxUaW1lLCBQcm9wZXJ0aWVzKSB7CiAgIEVYUEVDVF9FUSgwLCB5LmhvdXIoKSk7CiAg
IEVYUEVDVF9FUSgwLCB5Lm1pbnV0ZSgpKTsKICAgRVhQRUNUX0VRKDAsIHkuc2Vjb25kKCkpOwor
ICBFWFBFQ1RfRVEod2Vla2RheTo6dGh1cnNkYXksIGdldF93ZWVrZGF5KHkpKTsKKyAgRVhQRUNU
X0VRKDEsIGdldF95ZWFyZGF5KHkpKTsKIH0KIAogVEVTVChDaXZpbFRpbWUsIE91dHB1dFN0cmVh
bSkgewpAQCAtMTAzNSw3ICsxMDQ1LDcgQEAgVEVTVChDaXZpbFRpbWUsIExlYXBZZWFycykgewog
CiBURVNUKENpdmlsVGltZSwgRmlyc3RUaHVyc2RheUluTW9udGgpIHsKICAgY29uc3QgY2l2aWxf
ZGF5IG5vdjEoMjAxNCwgMTEsIDEpOwotICBjb25zdCBjaXZpbF9kYXkgdGh1cnNkYXkgPSBwcmV2
X3dlZWtkYXkobm92MSwgd2Vla2RheTo6dGh1cnNkYXkpICsgNzsKKyAgY29uc3QgY2l2aWxfZGF5
IHRodXJzZGF5ID0gbmV4dF93ZWVrZGF5KG5vdjEgLSAxLCB3ZWVrZGF5Ojp0aHVyc2RheSk7CiAg
IEVYUEVDVF9FUSgiMjAxNC0xMS0wNiIsIEZvcm1hdCh0aHVyc2RheSkpOwogCiAgIC8vIEJvbnVz
OiBEYXRlIG9mIFRoYW5rc2dpdmluZyBpbiB0aGUgVW5pdGVkIFN0YXRlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZml4ZWQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5jYwppbmRleCBkYjlhNDc1YTli
NDkwNGNiMmM0ZGE2YjVjZjI4MGNhOGNhNDM3MjcwLi5iMGQxNTlhMmU1MjJhYjNlYjE2ODFhNzc4
YTA2YjJmNGQ5YTdmYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3Jj
L3RpbWVfem9uZV9maXhlZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3Rp
bWVfem9uZV9maXhlZC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIGNjdHogewogbmFtZXNwYWNlIHsKIAogLy8gVGhl
IHByZWZpeCB1c2VkIGZvciB0aGUgaW50ZXJuYWwgbmFtZXMgb2YgZml4ZWQtb2Zmc2V0IHpvbmVz
LgotY29uc3QgY2hhciBrRml4ZWRPZmZzZXRQcmVmaXhbXSA9ICJGaXhlZC9VVEMiOworY29uc3Qg
Y2hhciBrRml4ZWRab25lUHJlZml4W10gPSAiRml4ZWQvVVRDIjsKIAogY29uc3QgY2hhciBrRGln
aXRzW10gPSAiMDEyMzQ1Njc4OSI7CiAKQEAgLTU1LDExICs1NSwxMSBAQCBib29sIEZpeGVkT2Zm
c2V0RnJvbU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIHNlY29uZHMqIG9mZnNldCkgewog
ICAgIHJldHVybiB0cnVlOwogICB9CiAKLSAgY29uc3Qgc3RkOjpzaXplX3QgcHJlZml4X2xlbiA9
IHNpemVvZihrRml4ZWRPZmZzZXRQcmVmaXgpIC0gMTsKLSAgY29uc3QgY2hhciogY29uc3QgZXAg
PSBrRml4ZWRPZmZzZXRQcmVmaXggKyBwcmVmaXhfbGVuOworICBjb25zdCBzdGQ6OnNpemVfdCBw
cmVmaXhfbGVuID0gc2l6ZW9mKGtGaXhlZFpvbmVQcmVmaXgpIC0gMTsKKyAgY29uc3QgY2hhciog
Y29uc3QgZXAgPSBrRml4ZWRab25lUHJlZml4ICsgcHJlZml4X2xlbjsKICAgaWYgKG5hbWUuc2l6
ZSgpICE9IHByZWZpeF9sZW4gKyA5KSAgLy8gPHByZWZpeD4rOTk6OTk6OTkKICAgICByZXR1cm4g
ZmFsc2U7Ci0gIGlmICghc3RkOjplcXVhbChrRml4ZWRPZmZzZXRQcmVmaXgsIGVwLCBuYW1lLmJl
Z2luKCkpKQorICBpZiAoIXN0ZDo6ZXF1YWwoa0ZpeGVkWm9uZVByZWZpeCwgZXAsIG5hbWUuYmVn
aW4oKSkpCiAgICAgcmV0dXJuIGZhbHNlOwogICBjb25zdCBjaGFyKiBucCA9IG5hbWUuZGF0YSgp
ICsgcHJlZml4X2xlbjsKICAgaWYgKG5wWzBdICE9ICcrJyAmJiBucFswXSAhPSAnLScpCkBAIC0x
MDIsOSArMTAyLDkgQEAgc3RkOjpzdHJpbmcgRml4ZWRPZmZzZXRUb05hbWUoY29uc3Qgc2Vjb25k
cyYgb2Zmc2V0KSB7CiAgIH0KICAgaW50IGhvdXJzID0gbWludXRlcyAvIDYwOwogICBtaW51dGVz
ICU9IDYwOwotICBjaGFyIGJ1ZltzaXplb2Yoa0ZpeGVkT2Zmc2V0UHJlZml4KSAtIDEgKyBzaXpl
b2YoIi0yNDowMDowMCIpXTsKLSAgc3RkOjpzdHJjcHkoYnVmLCBrRml4ZWRPZmZzZXRQcmVmaXgp
OwotICBjaGFyKiBlcCA9IGJ1ZiArIHNpemVvZihrRml4ZWRPZmZzZXRQcmVmaXgpIC0gMTsKKyAg
Y29uc3Qgc3RkOjpzaXplX3QgcHJlZml4X2xlbiA9IHNpemVvZihrRml4ZWRab25lUHJlZml4KSAt
IDE7CisgIGNoYXIgYnVmW3ByZWZpeF9sZW4gKyBzaXplb2YoIi0yNDowMDowMCIpXTsKKyAgY2hh
ciogZXAgPSBzdGQ6OmNvcHkoa0ZpeGVkWm9uZVByZWZpeCwga0ZpeGVkWm9uZVByZWZpeCArIHBy
ZWZpeF9sZW4sIGJ1Zik7CiAgICplcCsrID0gc2lnbjsKICAgZXAgPSBGb3JtYXQwMmQoZXAsIGhv
dXJzKTsKICAgKmVwKysgPSAnOic7CkBAIC0xMTgsNyArMTE4LDcgQEAgc3RkOjpzdHJpbmcgRml4
ZWRPZmZzZXRUb05hbWUoY29uc3Qgc2Vjb25kcyYgb2Zmc2V0KSB7CiAKIHN0ZDo6c3RyaW5nIEZp
eGVkT2Zmc2V0VG9BYmJyKGNvbnN0IHNlY29uZHMmIG9mZnNldCkgewogICBzdGQ6OnN0cmluZyBh
YmJyID0gRml4ZWRPZmZzZXRUb05hbWUob2Zmc2V0KTsKLSAgY29uc3Qgc3RkOjpzaXplX3QgcHJl
Zml4X2xlbiA9IHNpemVvZihrRml4ZWRPZmZzZXRQcmVmaXgpIC0gMTsKKyAgY29uc3Qgc3RkOjpz
aXplX3QgcHJlZml4X2xlbiA9IHNpemVvZihrRml4ZWRab25lUHJlZml4KSAtIDE7CiAgIGlmIChh
YmJyLnNpemUoKSA9PSBwcmVmaXhfbGVuICsgOSkgeyAgICAgICAgIC8vIDxwcmVmaXg+Kzk5Ojk5
Ojk5CiAgICAgYWJici5lcmFzZSgwLCBwcmVmaXhfbGVuKTsgICAgICAgICAgICAgICAgIC8vICs5
OTo5OTo5OQogICAgIGFiYnIuZXJhc2UoNiwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyArOTk6OTk5OQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1l
X3pvbmVfZml4ZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zp
eGVkLmgKaW5kZXggNDg5Yjg1N2Q1ZGYzMWYxMWMxNjkzYzEwN2MxMDJkN2FiZTk2NWY3YS4uOWMx
ZjVlN2Q3ZDc5NjAxNmYwZjk5M2ZmOGM2MDQ2NGI3Njg5NTIzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZml4ZWQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5oCkBAIC00LDcgKzQsNyBAQAogLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwot
Ly8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0
cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy90aW1lX3pvbmVfZm9ybWF0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90
aW1lX3pvbmVfZm9ybWF0LmNjCmluZGV4IGEwMmIxZTM0MWFjMGNjZWZkNjBlMGZhODU5MDE0ZThk
MGFkMDViMDkuLjg0ZTI4MGIxMzk3NmEzOGY3ZDMwM2IyZDBkZTczYjQzODU2OTVhMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXQuY2MKQEAg
LTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMywxMyArMTMsMjMgQEAK
IC8vICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKICNpZiAhZGVmaW5lZChIQVNf
U1RSUFRJTUUpCi0jIGlmICFkZWZpbmVkKF9NU0NfVkVSKQorIyBpZiAhZGVmaW5lZChfTVNDX1ZF
UikgJiYgIWRlZmluZWQoX19NSU5HVzMyX18pCiAjICBkZWZpbmUgSEFTX1NUUlBUSU1FIDEgIC8v
IGFzc3VtZSBldmVyeW9uZSBoYXMgc3RycHRpbWUoKSBleGNlcHQgd2luZG93cwogIyBlbmRpZgog
I2VuZGlmCiAKKyNpZiBkZWZpbmVkKEhBU19TVFJQVElNRSkgJiYgSEFTX1NUUlBUSU1FCisjIGlm
ICFkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpCisjICBkZWZpbmUgX1hPUEVOX1NPVVJDRSAgLy8gRGVm
aW5lZG5lc3Mgc3VmZmljZXMgZm9yIHN0cnB0aW1lLgorIyBlbmRpZgorI2VuZGlmCisKICNpbmNs
dWRlICJhYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmgiCiAK
Ky8vIEluY2x1ZGUgdGltZS5oIGRpcmVjdGx5IHNpbmNlLCBieSBDKysgc3RhbmRhcmRzLCBjdGlt
ZSBkb2Vzbid0IGhhdmUgdG8KKy8vIGRlY2xhcmUgc3RycHRpbWUuCisjaW5jbHVkZSA8dGltZS5o
PgorCiAjaW5jbHVkZSA8Y2N0eXBlPgogI2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRlIDxjc3Rk
ZGVmPgpAQCAtNzIsNyArODIsNyBAQCBzdGQ6OnRtIFRvVE0oY29uc3QgdGltZV96b25lOjphYnNv
bHV0ZV9sb29rdXAmIGFsKSB7CiAgICAgdG0udG1feWVhciA9IHN0YXRpY19jYXN0PGludD4oYWwu
Y3MueWVhcigpIC0gMTkwMCk7CiAgIH0KIAotICBzd2l0Y2ggKGdldF93ZWVrZGF5KGNpdmlsX2Rh
eShhbC5jcykpKSB7CisgIHN3aXRjaCAoZ2V0X3dlZWtkYXkoYWwuY3MpKSB7CiAgICAgY2FzZSB3
ZWVrZGF5OjpzdW5kYXk6CiAgICAgICB0bS50bV93ZGF5ID0gMDsKICAgICAgIGJyZWFrOwpAQCAt
OTUsNyArMTA1LDcgQEAgc3RkOjp0bSBUb1RNKGNvbnN0IHRpbWVfem9uZTo6YWJzb2x1dGVfbG9v
a3VwJiBhbCkgewogICAgICAgdG0udG1fd2RheSA9IDY7CiAgICAgICBicmVhazsKICAgfQotICB0
bS50bV95ZGF5ID0gZ2V0X3llYXJkYXkoY2l2aWxfZGF5KGFsLmNzKSkgLSAxOworICB0bS50bV95
ZGF5ID0gZ2V0X3llYXJkYXkoYWwuY3MpIC0gMTsKICAgdG0udG1faXNkc3QgPSBhbC5pc19kc3Qg
PyAxIDogMDsKICAgcmV0dXJuIHRtOwogfQpAQCAtMTQ5LDE1ICsxNTksMjUgQEAgY2hhciogRm9y
bWF0T2Zmc2V0KGNoYXIqIGVwLCBpbnQgb2Zmc2V0LCBjb25zdCBjaGFyKiBtb2RlKSB7CiAgICAg
b2Zmc2V0ID0gLW9mZnNldDsgIC8vIGJvdW5kZWQgYnkgMjRoIHNvIG5vIG92ZXJmbG93CiAgICAg
c2lnbiA9ICctJzsKICAgfQotICBjaGFyIHNlcCA9IG1vZGVbMF07Ci0gIGlmIChzZXAgIT0gJ1ww
JyAmJiBtb2RlWzFdID09ICcqJykgewotICAgIGVwID0gRm9ybWF0MDJkKGVwLCBvZmZzZXQgJSA2
MCk7CisgIGNvbnN0IGludCBzZWNvbmRzID0gb2Zmc2V0ICUgNjA7CisgIGNvbnN0IGludCBtaW51
dGVzID0gKG9mZnNldCAvPSA2MCkgJSA2MDsKKyAgY29uc3QgaW50IGhvdXJzID0gb2Zmc2V0IC89
IDYwOworICBjb25zdCBjaGFyIHNlcCA9IG1vZGVbMF07CisgIGNvbnN0IGJvb2wgZXh0ID0gKHNl
cCAhPSAnXDAnICYmIG1vZGVbMV0gPT0gJyonKTsKKyAgY29uc3QgYm9vbCBjY2MgPSAoZXh0ICYm
IG1vZGVbMl0gPT0gJzonKTsKKyAgaWYgKGV4dCAmJiAoIWNjYyB8fCBzZWNvbmRzICE9IDApKSB7
CisgICAgZXAgPSBGb3JtYXQwMmQoZXAsIHNlY29uZHMpOwogICAgICotLWVwID0gc2VwOworICB9
IGVsc2UgeworICAgIC8vIElmIHdlJ3JlIG5vdCByZW5kZXJpbmcgc2Vjb25kcywgc3ViLW1pbnV0
ZSBuZWdhdGl2ZSBvZmZzZXRzCisgICAgLy8gc2hvdWxkIGdldCBhIHBvc2l0aXZlIHNpZ24gKGUu
Zy4sIG9mZnNldD0tMTBzID0+ICIrMDA6MDAiKS4KKyAgICBpZiAoaG91cnMgPT0gMCAmJiBtaW51
dGVzID09IDApIHNpZ24gPSAnKyc7CisgIH0KKyAgaWYgKCFjY2MgfHwgbWludXRlcyAhPSAwIHx8
IHNlY29uZHMgIT0gMCkgeworICAgIGVwID0gRm9ybWF0MDJkKGVwLCBtaW51dGVzKTsKKyAgICBp
ZiAoc2VwICE9ICdcMCcpICotLWVwID0gc2VwOwogICB9Ci0gIGludCBtaW51dGVzID0gb2Zmc2V0
IC8gNjA7Ci0gIGVwID0gRm9ybWF0MDJkKGVwLCBtaW51dGVzICUgNjApOwotICBpZiAoc2VwICE9
ICdcMCcpICotLWVwID0gc2VwOwotICBlcCA9IEZvcm1hdDAyZChlcCwgbWludXRlcyAvIDYwKTsK
KyAgZXAgPSBGb3JtYXQwMmQoZXAsIGhvdXJzKTsKICAgKi0tZXAgPSBzaWduOwogICByZXR1cm4g
ZXA7CiB9CkBAIC0zODQsNiArNDA0LDQ0IEBAIHN0ZDo6c3RyaW5nIGZvcm1hdChjb25zdCBzdGQ6
OnN0cmluZyYgZm9ybWF0LCBjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+JiB0cCwKICAgICAgIGNv
bnRpbnVlOwogICAgIH0KIAorICAgIC8vIE1vcmUgY29tcGxleCBzcGVjaWZpZXJzIHRoYXQgd2Ug
aGFuZGxlIG91cnNlbHZlcy4KKyAgICBpZiAoKmN1ciA9PSAnOicgJiYgY3VyICsgMSAhPSBlbmQp
IHsKKyAgICAgIGlmICgqKGN1ciArIDEpID09ICd6JykgeworICAgICAgICAvLyBGb3JtYXRzICU6
ei4KKyAgICAgICAgaWYgKGN1ciAtIDEgIT0gcGVuZGluZykgeworICAgICAgICAgIEZvcm1hdFRN
KCZyZXN1bHQsIHN0ZDo6c3RyaW5nKHBlbmRpbmcsIGN1ciAtIDEpLCB0bSk7CisgICAgICAgIH0K
KyAgICAgICAgYnAgPSBGb3JtYXRPZmZzZXQoZXAsIGFsLm9mZnNldCwgIjoiKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChicCwgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KGVwIC0gYnApKTsKKyAg
ICAgICAgcGVuZGluZyA9IGN1ciArPSAyOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAg
ICAgIGlmICgqKGN1ciArIDEpID09ICc6JyAmJiBjdXIgKyAyICE9IGVuZCkgeworICAgICAgICBp
ZiAoKihjdXIgKyAyKSA9PSAneicpIHsKKyAgICAgICAgICAvLyBGb3JtYXRzICU6OnouCisgICAg
ICAgICAgaWYgKGN1ciAtIDEgIT0gcGVuZGluZykgeworICAgICAgICAgICAgRm9ybWF0VE0oJnJl
c3VsdCwgc3RkOjpzdHJpbmcocGVuZGluZywgY3VyIC0gMSksIHRtKTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgYnAgPSBGb3JtYXRPZmZzZXQoZXAsIGFsLm9mZnNldCwgIjoqIik7CisgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChicCwgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KGVwIC0gYnApKTsK
KyAgICAgICAgICBwZW5kaW5nID0gY3VyICs9IDM7CisgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCooY3VyICsgMikgPT0gJzonICYmIGN1ciArIDMgIT0gZW5kKSB7
CisgICAgICAgICAgaWYgKCooY3VyICsgMykgPT0gJ3onKSB7CisgICAgICAgICAgICAvLyBGb3Jt
YXRzICU6Ojp6LgorICAgICAgICAgICAgaWYgKGN1ciAtIDEgIT0gcGVuZGluZykgeworICAgICAg
ICAgICAgICBGb3JtYXRUTSgmcmVzdWx0LCBzdGQ6OnN0cmluZyhwZW5kaW5nLCBjdXIgLSAxKSwg
dG0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnAgPSBGb3JtYXRPZmZzZXQoZXAsIGFs
Lm9mZnNldCwgIjoqOiIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChicCwgc3RhdGljX2Nh
c3Q8c3RkOjpzaXplX3Q+KGVwIC0gYnApKTsKKyAgICAgICAgICAgIHBlbmRpbmcgPSBjdXIgKz0g
NDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
fQorICAgIH0KKwogICAgIC8vIExvb3AgaWYgdGhlcmUgaXMgbm8gRSBtb2RpZmllci4KICAgICBp
ZiAoKmN1ciAhPSAnRScgfHwgKytjdXIgPT0gZW5kKSBjb250aW51ZTsKIApAQCAtNjY4LDE3ICs3
MjYsMjcgQEAgYm9vbCBwYXJzZShjb25zdCBzdGQ6OnN0cmluZyYgZm9ybWF0LCBjb25zdCBzdGQ6
OnN0cmluZyYgaW5wdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAmcGVyY2VudF9zKTsKICAg
ICAgICAgaWYgKGRhdGEgIT0gbnVsbHB0cikgc2F3X3BlcmNlbnRfcyA9IHRydWU7CiAgICAgICAg
IGNvbnRpbnVlOworICAgICAgY2FzZSAnOic6CisgICAgICAgIGlmIChmbXRbMF0gPT0gJ3onIHx8
CisgICAgICAgICAgICAoZm10WzBdID09ICc6JyAmJgorICAgICAgICAgICAgIChmbXRbMV0gPT0g
J3onIHx8IChmbXRbMV0gPT0gJzonICYmIGZtdFsyXSA9PSAneicpKSkpIHsKKyAgICAgICAgICBk
YXRhID0gUGFyc2VPZmZzZXQoZGF0YSwgIjoiLCAmb2Zmc2V0KTsKKyAgICAgICAgICBpZiAoZGF0
YSAhPSBudWxscHRyKSBzYXdfb2Zmc2V0ID0gdHJ1ZTsKKyAgICAgICAgICBmbXQgKz0gKGZtdFsw
XSA9PSAneicpID8gMSA6IChmbXRbMV0gPT0gJ3onKSA/IDIgOiAzOworICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSAnJSc6CiAgICAgICAg
IGRhdGEgPSAoKmRhdGEgPT0gJyUnID8gZGF0YSArIDEgOiBudWxscHRyKTsKICAgICAgICAgY29u
dGludWU7CiAgICAgICBjYXNlICdFJzoKLSAgICAgICAgaWYgKCpmbXQgPT0gJ3onIHx8ICgqZm10
ID09ICcqJyAmJiAqKGZtdCArIDEpID09ICd6JykpIHsKKyAgICAgICAgaWYgKGZtdFswXSA9PSAn
eicgfHwgKGZtdFswXSA9PSAnKicgJiYgZm10WzFdID09ICd6JykpIHsKICAgICAgICAgICBkYXRh
ID0gUGFyc2VPZmZzZXQoZGF0YSwgIjoiLCAmb2Zmc2V0KTsKICAgICAgICAgICBpZiAoZGF0YSAh
PSBudWxscHRyKSBzYXdfb2Zmc2V0ID0gdHJ1ZTsKLSAgICAgICAgICBmbXQgKz0gKCpmbXQgPT0g
J3onKSA/IDEgOiAyOworICAgICAgICAgIGZtdCArPSAoZm10WzBdID09ICd6JykgPyAxIDogMjsK
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoKmZtdCA9PSAnKicg
JiYgKihmbXQgKyAxKSA9PSAnUycpIHsKKyAgICAgICAgaWYgKGZtdFswXSA9PSAnKicgJiYgZm10
WzFdID09ICdTJykgewogICAgICAgICAgIGRhdGEgPSBQYXJzZUludChkYXRhLCAyLCAwLCA2MCwg
JnRtLnRtX3NlYyk7CiAgICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbHB0ciAmJiAqZGF0YSA9PSAn
LicpIHsKICAgICAgICAgICAgIGRhdGEgPSBQYXJzZVN1YlNlY29uZHMoZGF0YSArIDEsICZzdWJz
ZWNvbmRzKTsKQEAgLTY4NiwxNCArNzU0LDE0IEBAIGJvb2wgcGFyc2UoY29uc3Qgc3RkOjpzdHJp
bmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LAogICAgICAgICAgIGZtdCArPSAy
OwogICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmICgqZm10ID09ICcq
JyAmJiAqKGZtdCArIDEpID09ICdmJykgeworICAgICAgICBpZiAoZm10WzBdID09ICcqJyAmJiBm
bXRbMV0gPT0gJ2YnKSB7CiAgICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbHB0ciAmJiBzdGQ6Omlz
ZGlnaXQoKmRhdGEpKSB7CiAgICAgICAgICAgICBkYXRhID0gUGFyc2VTdWJTZWNvbmRzKGRhdGEs
ICZzdWJzZWNvbmRzKTsKICAgICAgICAgICB9CiAgICAgICAgICAgZm10ICs9IDI7CiAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCpmbXQgPT0gJzQnICYmICooZm10
ICsgMSkgPT0gJ1knKSB7CisgICAgICAgIGlmIChmbXRbMF0gPT0gJzQnICYmIGZtdFsxXSA9PSAn
WScpIHsKICAgICAgICAgICBjb25zdCBjaGFyKiBicCA9IGRhdGE7CiAgICAgICAgICAgZGF0YSA9
IFBhcnNlSW50KGRhdGEsIDQsIHllYXJfdHstOTk5fSwgeWVhcl90ezk5OTl9LCAmeWVhcik7CiAg
ICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbHB0cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZm9ybWF0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXRfdGVzdC5jYwppbmRleCA2Yjk5MjhlZDMy
ZjQzMTAyN2M0YjkyYTQ5YzMyZTlhMDhhMThkODkxLi43MDVjY2RjZGNjNDNiNThmZTMzYzdjNDQ3
YmVkMzQzNDk5MTNiZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3Jj
L3RpbWVfem9uZV9mb3JtYXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
c3JjL3RpbWVfem9uZV9mb3JtYXRfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
IC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8v
ICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTY0LDE3ICs2NCw2IEBAIHZvaWQgVGVzdEZvcm1hdFNwZWNpZmllcih0
aW1lX3BvaW50PEQ+IHRwLCB0aW1lX3pvbmUgdHosIGNvbnN0IHN0ZDo6c3RyaW5nJiBmbXQsCiAg
IEVYUEVDVF9FUSgieHh4ICIgKyBhbnMgKyAiIHl5eSIsIGZvcm1hdCgieHh4ICIgKyBmbXQgKyAi
IHl5eSIsIHRwLCB0eikpOwogfQogCi0vLyBUaGVzZSB0ZXN0cyBzb21ldGltZXMgcnVuIG9uIHBs
YXRmb3JtcyB0aGF0IGhhdmUgem9uZWluZm8gZGF0YSBzbyBvbGQKLS8vIHRoYXQgdGhlIHRyYW5z
aXRpb24gd2UgYXJlIGF0dGVtcHRpbmcgdG8gY2hlY2sgZG9lcyBub3QgZXhpc3QsIG1vc3QKLS8v
IG5vdGFibHkgQW5kcm9pZCBlbXVsYXRvcnMuICBGb3J0dW5hdGVseSwgQW5kcm9pZFpvbmVJbmZv
U291cmNlIHN1cHBvcnRzCi0vLyB0aW1lX3pvbmU6OnZlcnNpb24oKSBzbywgaW4gY2FzZXMgd2hl
cmUgd2UndmUgbGVhcm5lZCB0aGF0IGl0IG1hdHRlcnMsCi0vLyB3ZSBjYW4gbWFrZSB0aGUgY2hl
Y2sgY29uZGl0aW9uYWxseS4KLWludCBWZXJzaW9uQ21wKHRpbWVfem9uZSB0eiwgY29uc3Qgc3Rk
OjpzdHJpbmcmIHRhcmdldCkgewotICBzdGQ6OnN0cmluZyB2ZXJzaW9uID0gdHoudmVyc2lvbigp
OwotICBpZiAodmVyc2lvbi5lbXB0eSgpICYmICF0YXJnZXQuZW1wdHkoKSkgcmV0dXJuIDE7ICAv
LyB1bmtub3duID4ga25vd24KLSAgcmV0dXJuIHZlcnNpb24uY29tcGFyZSh0YXJnZXQpOwotfQot
CiB9ICAvLyBuYW1lc3BhY2UKIAogLy8KQEAgLTE3NCw3ICsxNjMsOSBAQCBURVNUKEZvcm1hdCwg
UG9zaXhDb252ZXJzaW9ucykgewogICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVNIiwg
IjAwIik7CiAgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJVMiLCAiMDAiKTsKICAgVGVz
dEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlVSIsICIwMCIpOworI2lmICFkZWZpbmVkKF9fRU1T
Q1JJUFRFTl9fKQogICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV3IiwgIjQiKTsgIC8v
IDQ9VGh1cnNkYXkKKyNlbmRpZgogICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVXIiwg
IjAwIik7CiAgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXkiLCAiNzAiKTsKICAgVGVz
dEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlWSIsICIxOTcwIik7CkBAIC00MzYsNTEgKzQyNywx
NjUgQEAgVEVTVChGb3JtYXQsIENvbXBhcmVFeHRlbmRTZWNvbmRzVnNTdWJzZWNvbmRzKSB7CiB9
CiAKIFRFU1QoRm9ybWF0LCBFeHRlbmRlZE9mZnNldCkgewotICBhdXRvIHRwID0gY2hyb25vOjpz
eXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KDApOworICBjb25zdCBhdXRvIHRwID0gY2hyb25vOjpz
eXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KDApOwogCi0gIHRpbWVfem9uZSB0eiA9IHV0Y190aW1l
X3pvbmUoKTsKKyAgYXV0byB0eiA9IGZpeGVkX3RpbWVfem9uZShhYnNsOjp0aW1lX2ludGVybmFs
OjpjY3R6OjpzZWNvbmRzOjp6ZXJvKCkpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwg
IiV6IiwgIiswMDAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIisw
MDowMCIpOwogICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICIrMDA6MDAiKTsK
IAotICBFWFBFQ1RfVFJVRShsb2FkX3RpbWVfem9uZSgiQW1lcmljYS9OZXdfWW9yayIsICZ0eikp
OwotICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICItMDU6MDAiKTsKLQotICBF
WFBFQ1RfVFJVRShsb2FkX3RpbWVfem9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZ0eikpOwot
ICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICItMDg6MDAiKTsKKyAgdHogPSBm
aXhlZF90aW1lX3pvbmUoY2hyb25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZp
ZXIodHAsIHR6LCAiJXoiLCAiKzAwMDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHos
ICIlOnoiLCAiKzAwOjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6Iiwg
IiswMDowMCIpOwogCi0gIEVYUEVDVF9UUlVFKGxvYWRfdGltZV96b25lKCJBdXN0cmFsaWEvU3lk
bmV5IiwgJnR6KSk7Ci0gIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6IiwgIisxMDow
MCIpOworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgtY2hyb25vOjpzZWNvbmRzKDU2KSk7ICAvLyBO
T1RFOiArMDA6MDAKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIleiIsICIrMDAwMCIp
OworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6eiIsICIrMDA6MDAiKTsKKyAgVGVz
dEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiKzAwOjAwIik7CiAKLSAgRVhQRUNUX1RS
VUUobG9hZF90aW1lX3pvbmUoIkFmcmljYS9Nb25yb3ZpYSIsICZ0eikpOwotICAvLyBUaGUgdHJ1
ZSBvZmZzZXQgaXMgLTAwOjQ0OjMwIGJ1dCAleiBvbmx5IGdpdmVzICh0cnVuY2F0ZWQpIG1pbnV0
ZXMuCi0gIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXoiLCAiLTAwNDQiKTsKLSAgVGVz
dEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiLTAwOjQ0Iik7CisgIHR6ID0gZml4ZWRf
dGltZV96b25lKGNocm9ubzo6bWludXRlcygzNCkpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiV6IiwgIiswMDM0Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6
IiwgIiswMDozNCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICIrMDA6
MzQiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgtY2hyb25vOjptaW51dGVzKDM0KSk7Cisg
IFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXoiLCAiLTAwMzQiKTsKKyAgVGVzdEZvcm1h
dFNwZWNpZmllcih0cCwgdHosICIlOnoiLCAiLTAwOjM0Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZp
ZXIodHAsIHR6LCAiJUV6IiwgIi0wMDozNCIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKGNo
cm9ubzo6bWludXRlcygzNCkgKyBjaHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNw
ZWNpZmllcih0cCwgdHosICIleiIsICIrMDAzNCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiU6eiIsICIrMDA6MzQiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIl
RXoiLCAiKzAwOjM0Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoLWNocm9ubzo6bWludXRl
cygzNCkgLSBjaHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwg
dHosICIleiIsICItMDAzNCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6eiIs
ICItMDA6MzQiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiLTAwOjM0
Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hyb25vOjpob3VycygxMikpOworICBUZXN0
Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV6IiwgIisxMjAwIik7CisgIFRlc3RGb3JtYXRTcGVj
aWZpZXIodHAsIHR6LCAiJTp6IiwgIisxMjowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiVFeiIsICIrMTI6MDAiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgtY2hyb25v
Ojpob3VycygxMikpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV6IiwgIi0xMjAw
Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIi0xMjowMCIpOworICBU
ZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFeiIsICItMTI6MDAiKTsKKworICB0eiA9IGZp
eGVkX3RpbWVfem9uZShjaHJvbm86OmhvdXJzKDEyKSArIGNocm9ubzo6c2Vjb25kcyg1NikpOwor
ICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiV6IiwgIisxMjAwIik7CisgIFRlc3RGb3Jt
YXRTcGVjaWZpZXIodHAsIHR6LCAiJTp6IiwgIisxMjowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lm
aWVyKHRwLCB0eiwgIiVFeiIsICIrMTI6MDAiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgt
Y2hyb25vOjpob3VycygxMikgLSBjaHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNw
ZWNpZmllcih0cCwgdHosICIleiIsICItMTIwMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiU6eiIsICItMTI6MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIl
RXoiLCAiLTEyOjAwIik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hyb25vOjpob3Vycygx
MikgKyBjaHJvbm86Om1pbnV0ZXMoMzQpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHos
ICIleiIsICIrMTIzNCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6eiIsICIr
MTI6MzQiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRXoiLCAiKzEyOjM0Iik7
CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoLWNocm9ubzo6aG91cnMoMTIpIC0gY2hyb25vOjpt
aW51dGVzKDM0KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXoiLCAiLTEyMzQi
KTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOnoiLCAiLTEyOjM0Iik7CisgIFRl
c3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6IiwgIi0xMjozNCIpOworCisgIHR6ID0gZml4
ZWRfdGltZV96b25lKGNocm9ubzo6aG91cnMoMTIpICsgY2hyb25vOjptaW51dGVzKDM0KSArCisg
ICAgICAgICAgICAgICAgICAgICAgIGNocm9ubzo6c2Vjb25kcyg1NikpOworICBUZXN0Rm9ybWF0
U3BlY2lmaWVyKHRwLCB0eiwgIiV6IiwgIisxMjM0Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIo
dHAsIHR6LCAiJTp6IiwgIisxMjozNCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwg
IiVFeiIsICIrMTI6MzQiKTsKKworICB0eiA9IGZpeGVkX3RpbWVfem9uZSgtY2hyb25vOjpob3Vy
cygxMikgLSBjaHJvbm86Om1pbnV0ZXMoMzQpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgY2hy
b25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJXoiLCAi
LTEyMzQiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOnoiLCAiLTEyOjM0Iik7
CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUV6IiwgIi0xMjozNCIpOwogfQogCiBU
RVNUKEZvcm1hdCwgRXh0ZW5kZWRTZWNvbmRPZmZzZXQpIHsKLSAgY29uc3QgdGltZV96b25lIHV0
YyA9IHV0Y190aW1lX3pvbmUoKTsKLSAgdGltZV9wb2ludDxjaHJvbm86OnNlY29uZHM+IHRwOwot
ICB0aW1lX3pvbmUgdHo7Ci0KLSAgRVhQRUNUX1RSVUUobG9hZF90aW1lX3pvbmUoIkFtZXJpY2Ev
TmV3X1lvcmsiLCAmdHopKTsKLSAgdHAgPSBjb252ZXJ0KGNpdmlsX3NlY29uZCgxODgzLCAxMSwg
MTgsIDE2LCA1OSwgNTkpLCB1dGMpOwotICBpZiAodHoubG9va3VwKHRwKS5vZmZzZXQgPT0gLTUg
KiA2MCAqIDYwKSB7Ci0gICAgLy8gSXQgbG9va3MgbGlrZSB0aGUgdHpkYXRhIGlzIG9ubHkgMzIg
Yml0IChwcm9iYWJseSBtYWNPUyksCi0gICAgLy8gd2hpY2ggYm90dG9tcyBvdXQgYXQgMTkwMS0x
Mi0xM1QyMDo0NTo1MiswMDowMC4KLSAgfSBlbHNlIHsKLSAgICBUZXN0Rm9ybWF0U3BlY2lmaWVy
KHRwLCB0eiwgIiVFKnoiLCAiLTA0OjU2OjAyIik7Ci0gICAgVGVzdEZvcm1hdFNwZWNpZmllcih0
cCwgdHosICIlRXoiLCAiLTA0OjU2Iik7Ci0gIH0KLSAgdHAgKz0gY2hyb25vOjpzZWNvbmRzKDEp
OwotICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFKnoiLCAiLTA1OjAwOjAwIik7Ci0K
LSAgRVhQRUNUX1RSVUUobG9hZF90aW1lX3pvbmUoIkV1cm9wZS9Nb3Njb3ciLCAmdHopKTsKLSAg
dHAgPSBjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTE5LCA2LCAzMCwgMjMsIDU5LCA1OSksIHV0Yyk7
Ci0gIGlmIChWZXJzaW9uQ21wKHR6LCAiMjAxNmciKSA+PSAwKSB7Ci0gICAgVGVzdEZvcm1hdFNw
ZWNpZmllcih0cCwgdHosICIlRSp6IiwgIiswNDozMToxOSIpOwotICAgIFRlc3RGb3JtYXRTcGVj
aWZpZXIodHAsIHR6LCAiJUV6IiwgIiswNDozMSIpOwotICB9Ci0gIHRwICs9IGNocm9ubzo6c2Vj
b25kcygxKTsKLSAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRSp6IiwgIiswNDowMDow
MCIpOworICBjb25zdCBhdXRvIHRwID0gY2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGltZV90
KDApOworCisgIGF1dG8gdHogPSBmaXhlZF90aW1lX3pvbmUoYWJzbDo6dGltZV9pbnRlcm5hbDo6
Y2N0ejo6c2Vjb25kczo6emVybygpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIl
RSp6IiwgIiswMDowMDowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6Onoi
LCAiKzAwOjAwOjAwIik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6OnoiLCAi
KzAwIik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hyb25vOjpzZWNvbmRzKDU2KSk7Cisg
IFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUUqeiIsICIrMDA6MDA6NTYiKTsKKyAgVGVz
dEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOjp6IiwgIiswMDowMDo1NiIpOworICBUZXN0Rm9y
bWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6Ojp6IiwgIiswMDowMDo1NiIpOworCisgIHR6ID0gZml4
ZWRfdGltZV96b25lKC1jaHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmll
cih0cCwgdHosICIlRSp6IiwgIi0wMDowMDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiU6OnoiLCAiLTAwOjAwOjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6
LCAiJTo6OnoiLCAiLTAwOjAwOjU2Iik7CisKKyAgdHogPSBmaXhlZF90aW1lX3pvbmUoY2hyb25v
OjptaW51dGVzKDM0KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUUqeiIsICIr
MDA6MzQ6MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOjp6IiwgIiswMDoz
NDowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6Ojp6IiwgIiswMDozNCIp
OworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJvbm86Om1pbnV0ZXMoMzQpKTsKKyAgVGVz
dEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRSp6IiwgIi0wMDozNDowMCIpOworICBUZXN0Rm9y
bWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6OnoiLCAiLTAwOjM0OjAwIik7CisgIFRlc3RGb3JtYXRT
cGVjaWZpZXIodHAsIHR6LCAiJTo6OnoiLCAiLTAwOjM0Iik7CisKKyAgdHogPSBmaXhlZF90aW1l
X3pvbmUoY2hyb25vOjptaW51dGVzKDM0KSArIGNocm9ubzo6c2Vjb25kcyg1NikpOworICBUZXN0
Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFKnoiLCAiKzAwOjM0OjU2Iik7CisgIFRlc3RGb3Jt
YXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6eiIsICIrMDA6MzQ6NTYiKTsKKyAgVGVzdEZvcm1hdFNw
ZWNpZmllcih0cCwgdHosICIlOjo6eiIsICIrMDA6MzQ6NTYiKTsKKworICB0eiA9IGZpeGVkX3Rp
bWVfem9uZSgtY2hyb25vOjptaW51dGVzKDM0KSAtIGNocm9ubzo6c2Vjb25kcyg1NikpOworICBU
ZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFKnoiLCAiLTAwOjM0OjU2Iik7CisgIFRlc3RG
b3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6eiIsICItMDA6MzQ6NTYiKTsKKyAgVGVzdEZvcm1h
dFNwZWNpZmllcih0cCwgdHosICIlOjo6eiIsICItMDA6MzQ6NTYiKTsKKworICB0eiA9IGZpeGVk
X3RpbWVfem9uZShjaHJvbm86OmhvdXJzKDEyKSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAs
IHR6LCAiJUUqeiIsICIrMTI6MDA6MDAiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHos
ICIlOjp6IiwgIisxMjowMDowMCIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6
Ojp6IiwgIisxMiIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1jaHJvbm86OmhvdXJzKDEy
KSk7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUUqeiIsICItMTI6MDA6MDAiKTsK
KyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOjp6IiwgIi0xMjowMDowMCIpOworICBU
ZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6Ojp6IiwgIi0xMiIpOworCisgIHR6ID0gZml4
ZWRfdGltZV96b25lKGNocm9ubzo6aG91cnMoMTIpICsgY2hyb25vOjpzZWNvbmRzKDU2KSk7Cisg
IFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJUUqeiIsICIrMTI6MDA6NTYiKTsKKyAgVGVz
dEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlOjp6IiwgIisxMjowMDo1NiIpOworICBUZXN0Rm9y
bWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6Ojp6IiwgIisxMjowMDo1NiIpOworCisgIHR6ID0gZml4
ZWRfdGltZV96b25lKC1jaHJvbm86OmhvdXJzKDEyKSAtIGNocm9ubzo6c2Vjb25kcyg1NikpOwor
ICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFKnoiLCAiLTEyOjAwOjU2Iik7CisgIFRl
c3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6eiIsICItMTI6MDA6NTYiKTsKKyAgVGVzdEZv
cm1hdFNwZWNpZmllcih0cCwgdHosICIlOjo6eiIsICItMTI6MDA6NTYiKTsKKworICB0eiA9IGZp
eGVkX3RpbWVfem9uZShjaHJvbm86OmhvdXJzKDEyKSArIGNocm9ubzo6bWludXRlcygzNCkpOwor
ICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiVFKnoiLCAiKzEyOjM0OjAwIik7CisgIFRl
c3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6eiIsICIrMTI6MzQ6MDAiKTsKKyAgVGVzdEZv
cm1hdFNwZWNpZmllcih0cCwgdHosICIlOjo6eiIsICIrMTI6MzQiKTsKKworICB0eiA9IGZpeGVk
X3RpbWVfem9uZSgtY2hyb25vOjpob3VycygxMikgLSBjaHJvbm86Om1pbnV0ZXMoMzQpKTsKKyAg
VGVzdEZvcm1hdFNwZWNpZmllcih0cCwgdHosICIlRSp6IiwgIi0xMjozNDowMCIpOworICBUZXN0
Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwgIiU6OnoiLCAiLTEyOjM0OjAwIik7CisgIFRlc3RGb3Jt
YXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6OnoiLCAiLTEyOjM0Iik7CisKKyAgdHogPSBmaXhlZF90
aW1lX3pvbmUoY2hyb25vOjpob3VycygxMikgKyBjaHJvbm86Om1pbnV0ZXMoMzQpICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgY2hyb25vOjpzZWNvbmRzKDU2KSk7CisgIFRlc3RGb3JtYXRTcGVj
aWZpZXIodHAsIHR6LCAiJUUqeiIsICIrMTI6MzQ6NTYiKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmll
cih0cCwgdHosICIlOjp6IiwgIisxMjozNDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRw
LCB0eiwgIiU6Ojp6IiwgIisxMjozNDo1NiIpOworCisgIHR6ID0gZml4ZWRfdGltZV96b25lKC1j
aHJvbm86OmhvdXJzKDEyKSAtIGNocm9ubzo6bWludXRlcygzNCkgLQorICAgICAgICAgICAgICAg
ICAgICAgICBjaHJvbm86OnNlY29uZHMoNTYpKTsKKyAgVGVzdEZvcm1hdFNwZWNpZmllcih0cCwg
dHosICIlRSp6IiwgIi0xMjozNDo1NiIpOworICBUZXN0Rm9ybWF0U3BlY2lmaWVyKHRwLCB0eiwg
IiU6OnoiLCAiLTEyOjM0OjU2Iik7CisgIFRlc3RGb3JtYXRTcGVjaWZpZXIodHAsIHR6LCAiJTo6
OnoiLCAiLTEyOjM0OjU2Iik7CiB9CiAKIFRFU1QoRm9ybWF0LCBFeHRlbmRlZFllYXJzKSB7CkBA
IC0xMTYwLDI1ICsxMjY1LDYgQEAgVEVTVChQYXJzZSwgRXh0ZW5kZWRPZmZzZXQpIHsKICAgY29u
c3QgdGltZV96b25lIHV0YyA9IHV0Y190aW1lX3pvbmUoKTsKICAgdGltZV9wb2ludDxhYnNsOjp0
aW1lX2ludGVybmFsOjpjY3R6OjpzZWNvbmRzPiB0cDsKIAotICAvLyAleiBhZ2FpbnN0ICstSEhN
TS4KLSAgRVhQRUNUX1RSVUUocGFyc2UoIiV6IiwgIiswMDAwIiwgdXRjLCAmdHApKTsKLSAgRVhQ
RUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAsIDAsIDApLCB1dGMpLCB0
cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIleiIsICItMTIzNCIsIHV0YywgJnRwKSk7Ci0gIEVY
UEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMzQsIDApLCB1dGMp
LCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIleiIsICIrMTIzNCIsIHV0YywgJnRwKSk7Ci0g
IEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDExLCAyNiwgMCks
IHV0YyksIHRwKTsKLSAgRVhQRUNUX0ZBTFNFKHBhcnNlKCIleiIsICItMTIzIiwgdXRjLCAmdHAp
KTsKLQotICAvLyAleiBhZ2FpbnN0ICstSEguCi0gIEVYUEVDVF9UUlVFKHBhcnNlKCIleiIsICIr
MDAiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwg
MSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiV6IiwgIi0x
MiIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAx
LCAxLCAxMiwgMCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiV6IiwgIisx
MiIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAx
MiwgMzEsIDEyLCAwLCAwKSwgdXRjKSwgdHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2UoIiV6Iiwg
Ii0xIiwgdXRjLCAmdHApKTsKLQotICAvLyAlRXogYWdhaW5zdCArLUhIOk1NLgogICBFWFBFQ1Rf
VFJVRShwYXJzZSgiJUV6IiwgIiswMDowMCIsIHV0YywgJnRwKSk7CiAgIEVYUEVDVF9FUShjb252
ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOwogICBFWFBF
Q1RfVFJVRShwYXJzZSgiJUV6IiwgIi0xMjozNCIsIHV0YywgJnRwKSk7CkBAIC0xMTg3LDkxICsx
MjczLDcwIEBAIFRFU1QoUGFyc2UsIEV4dGVuZGVkT2Zmc2V0KSB7CiAgIEVYUEVDVF9FUShjb252
ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDExLCAyNiwgMCksIHV0YyksIHRwKTsKICAg
RVhQRUNUX0ZBTFNFKHBhcnNlKCIlRXoiLCAiLTEyOjMiLCB1dGMsICZ0cCkpOwogCi0gIC8vICVF
eiBhZ2FpbnN0ICstSEhNTS4KLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFeiIsICIrMDAwMCIsIHV0
YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAw
LCAwLCAwKSwgdXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUV6IiwgIi0xMjM0Iiwg
dXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEs
IDEyLCAzNCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFeiIsICIrMTIz
NCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAx
MiwgMzEsIDExLCAyNiwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX0ZBTFNFKHBhcnNlKCIlRXoi
LCAiLTEyMyIsIHV0YywgJnRwKSk7Ci0KLSAgLy8gJUV6IGFnYWluc3QgKy1ISC4KLSAgRVhQRUNU
X1RSVUUocGFyc2UoIiVFeiIsICIrMDAiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVy
dChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNU
X1RSVUUocGFyc2UoIiVFeiIsICItMTIiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVy
dChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMTIsIDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVD
VF9UUlVFKHBhcnNlKCIlRXoiLCAiKzEyIiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZl
cnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTIsIDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVY
UEVDVF9GQUxTRShwYXJzZSgiJUV6IiwgIi0xIiwgdXRjLCAmdHApKTsKKyAgZm9yIChhdXRvIGZt
dCA6IHsiJUV6IiwgIiV6In0pIHsKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMDAwMCIs
IHV0YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEs
IDEsIDAsIDAsIDApLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10LCAiLTEy
MzQiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcw
LCAxLCAxLCAxMiwgMzQsIDApLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10
LCAiKzEyMzQiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29u
ZCgxOTY5LCAxMiwgMzEsIDExLCAyNiwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
cGFyc2UoZm10LCAiLTEyMyIsIHV0YywgJnRwKSk7CisKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShm
bXQsICIrMDAiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29u
ZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBhcnNl
KGZtdCwgIi0xMiIsIHV0YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vj
b25kKDE5NzAsIDEsIDEsIDEyLCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBh
cnNlKGZtdCwgIisxMiIsIHV0YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxf
c2Vjb25kKDE5NjksIDEyLCAzMSwgMTIsIDAsIDApLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX0ZB
TFNFKHBhcnNlKGZtdCwgIi0xIiwgdXRjLCAmdHApKTsKKyAgfQogfQogCiBURVNUKFBhcnNlLCBF
eHRlbmRlZFNlY29uZE9mZnNldCkgewogICBjb25zdCB0aW1lX3pvbmUgdXRjID0gdXRjX3RpbWVf
em9uZSgpOwogICB0aW1lX3BvaW50PGFic2w6OnRpbWVfaW50ZXJuYWw6OmNjdHo6OnNlY29uZHM+
IHRwOwogCi0gIC8vICVFeiBhZ2FpbnN0ICstSEg6TU06U1MuCi0gIEVYUEVDVF9UUlVFKHBhcnNl
KCIlRXoiLCAiKzAwOjAwOjAwIiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2
aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAsIDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVF
KHBhcnNlKCIlRXoiLCAiLTEyOjM0OjU2IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZl
cnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDEyLCAzNCwgNTYpLCB1dGMpLCB0cCk7Ci0gIEVY
UEVDVF9UUlVFKHBhcnNlKCIlRXoiLCAiKzEyOjM0OjU2IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNU
X0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTEsIDI1LCA0KSwgdXRjKSwg
dHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2UoIiVFeiIsICItMTI6MzQ6NSIsIHV0YywgJnRwKSk7
Ci0KLSAgLy8gJUV6IGFnYWluc3QgKy1ISE1NU1MuCi0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRXoi
LCAiKzAwMDAwMCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29u
ZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgi
JUV6IiwgIi0xMjM0NTYiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9z
ZWNvbmQoMTk3MCwgMSwgMSwgMTIsIDM0LCA1NiksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUo
cGFyc2UoIiVFeiIsICIrMTIzNDU2IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQo
Y2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTEsIDI1LCA0KSwgdXRjKSwgdHApOwotICBFWFBF
Q1RfRkFMU0UocGFyc2UoIiVFeiIsICItMTIzNDUiLCB1dGMsICZ0cCkpOwotCi0gIC8vICVFKnog
YWdhaW5zdCArLUhIOk1NOlNTLgotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUUqeiIsICIrMDA6MDA6
MDAiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwg
MSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAi
LTEyOjM0OjU2IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25k
KDE5NzAsIDEsIDEsIDEyLCAzNCwgNTYpLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNl
KCIlRSp6IiwgIisxMjozNDo1NiIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNp
dmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDExLCAyNSwgNCksIHV0YyksIHRwKTsKLSAgRVhQRUNU
X0ZBTFNFKHBhcnNlKCIlRSp6IiwgIi0xMjozNDo1IiwgdXRjLCAmdHApKTsKLQotICAvLyAlRSp6
IGFnYWluc3QgKy1ISE1NU1MuCi0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIiswMDAwMDAi
LCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwg
MSwgMCwgMCwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAiLTEy
MzQ1NiIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcw
LCAxLCAxLCAxMiwgMzQsIDU2KSwgdXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUUq
eiIsICIrMTIzNDU2IiwgdXRjLCAmdHApKTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vj
b25kKDE5NjksIDEyLCAzMSwgMTEsIDI1LCA0KSwgdXRjKSwgdHApOwotICBFWFBFQ1RfRkFMU0Uo
cGFyc2UoIiVFKnoiLCAiLTEyMzQ1IiwgdXRjLCAmdHApKTsKLQotICAvLyAlRSp6IGFnYWluc3Qg
Ky1ISDpNTS4KLSAgRVhQRUNUX1RSVUUocGFyc2UoIiVFKnoiLCAiKzAwOjAwIiwgdXRjLCAmdHAp
KTsKLSAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NzAsIDEsIDEsIDAsIDAsIDAp
LCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIi0xMjozNCIsIHV0Yywg
JnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwg
MzQsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIisxMjozNCIs
IHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwg
MzEsIDExLCAyNiwgMCksIHV0YyksIHRwKTsKLSAgRVhQRUNUX0ZBTFNFKHBhcnNlKCIlRSp6Iiwg
Ii0xMjozIiwgdXRjLCAmdHApKTsKLQotICAvLyAlRSp6IGFnYWluc3QgKy1ISE1NLgotICBFWFBF
Q1RfVFJVRShwYXJzZSgiJUUqeiIsICIrMDAwMCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShj
b252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOwotICBF
WFBFQ1RfVFJVRShwYXJzZSgiJUUqeiIsICItMTIzNCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9F
UShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMzQsIDApLCB1dGMpLCB0cCk7
Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6IiwgIisxMjM0IiwgdXRjLCAmdHApKTsKLSAgRVhQ
RUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTEsIDI2LCAwKSwgdXRj
KSwgdHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2UoIiVFKnoiLCAiLTEyMyIsIHV0YywgJnRwKSk7
Ci0KLSAgLy8gJUUqeiBhZ2FpbnN0ICstSEguCi0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6Iiwg
IiswMCIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcw
LCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOwotICBFWFBFQ1RfVFJVRShwYXJzZSgiJUUqeiIs
ICItMTIiLCB1dGMsICZ0cCkpOwotICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3
MCwgMSwgMSwgMTIsIDAsIDApLCB1dGMpLCB0cCk7Ci0gIEVYUEVDVF9UUlVFKHBhcnNlKCIlRSp6
IiwgIisxMiIsIHV0YywgJnRwKSk7Ci0gIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgx
OTY5LCAxMiwgMzEsIDEyLCAwLCAwKSwgdXRjKSwgdHApOwotICBFWFBFQ1RfRkFMU0UocGFyc2Uo
IiVFKnoiLCAiLTEiLCB1dGMsICZ0cCkpOworICBmb3IgKGF1dG8gZm10IDogeyIlRXoiLCAiJUUq
eiIsICIlOnoiLCAiJTo6eiIsICIlOjo6eiJ9KSB7CisgICAgRVhQRUNUX1RSVUUocGFyc2UoZm10
LCAiKzAwOjAwOjAwIiwgdXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9z
ZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfVFJVRShw
YXJzZShmbXQsICItMTI6MzQ6NTYiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0
KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMzQsIDU2KSwgdXRjKSwgdHApOworICAgIEVY
UEVDVF9UUlVFKHBhcnNlKGZtdCwgIisxMjozNDo1NiIsIHV0YywgJnRwKSk7CisgICAgRVhQRUNU
X0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25kKDE5NjksIDEyLCAzMSwgMTEsIDI1LCA0KSwgdXRjKSwg
dHApOworICAgIEVYUEVDVF9GQUxTRShwYXJzZShmbXQsICItMTI6MzQ6NSIsIHV0YywgJnRwKSk7
CisKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMDAwMDAwIiwgdXRjLCAmdHApKTsKKyAg
ICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0
YyksIHRwKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICItMTIzNDU2IiwgdXRjLCAmdHAp
KTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMTIsIDM0
LCA1NiksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMTIzNDU2Iiwg
dXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVydChjaXZpbF9zZWNvbmQoMTk2OSwgMTIs
IDMxLCAxMSwgMjUsIDQpLCB1dGMpLCB0cCk7CisgICAgRVhQRUNUX0ZBTFNFKHBhcnNlKGZtdCwg
Ii0xMjM0NSIsIHV0YywgJnRwKSk7CisKKyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMDA6
MDAiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcw
LCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9UUlVFKHBhcnNlKGZtdCwg
Ii0xMjozNCIsIHV0YywgJnRwKSk7CisgICAgRVhQRUNUX0VRKGNvbnZlcnQoY2l2aWxfc2Vjb25k
KDE5NzAsIDEsIDEsIDEyLCAzNCwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJz
ZShmbXQsICIrMTI6MzQiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNpdmls
X3NlY29uZCgxOTY5LCAxMiwgMzEsIDExLCAyNiwgMCksIHV0YyksIHRwKTsKKyAgICBFWFBFQ1Rf
RkFMU0UocGFyc2UoZm10LCAiLTEyOjMiLCB1dGMsICZ0cCkpOworCisgICAgRVhQRUNUX1RSVUUo
cGFyc2UoZm10LCAiKzAwMDAiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9FUShjb252ZXJ0KGNp
dmlsX3NlY29uZCgxOTcwLCAxLCAxLCAwLCAwLCAwKSwgdXRjKSwgdHApOworICAgIEVYUEVDVF9U
UlVFKHBhcnNlKGZtdCwgIi0xMjM0IiwgdXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEoY29udmVy
dChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMTIsIDM0LCAwKSwgdXRjKSwgdHApOworICAgIEVY
UEVDVF9UUlVFKHBhcnNlKGZtdCwgIisxMjM0IiwgdXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEo
Y29udmVydChjaXZpbF9zZWNvbmQoMTk2OSwgMTIsIDMxLCAxMSwgMjYsIDApLCB1dGMpLCB0cCk7
CisgICAgRVhQRUNUX0ZBTFNFKHBhcnNlKGZtdCwgIi0xMjMiLCB1dGMsICZ0cCkpOworCisgICAg
RVhQRUNUX1RSVUUocGFyc2UoZm10LCAiKzAwIiwgdXRjLCAmdHApKTsKKyAgICBFWFBFQ1RfRVEo
Y29udmVydChjaXZpbF9zZWNvbmQoMTk3MCwgMSwgMSwgMCwgMCwgMCksIHV0YyksIHRwKTsKKyAg
ICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICItMTIiLCB1dGMsICZ0cCkpOworICAgIEVYUEVDVF9F
UShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTcwLCAxLCAxLCAxMiwgMCwgMCksIHV0YyksIHRwKTsK
KyAgICBFWFBFQ1RfVFJVRShwYXJzZShmbXQsICIrMTIiLCB1dGMsICZ0cCkpOworICAgIEVYUEVD
VF9FUShjb252ZXJ0KGNpdmlsX3NlY29uZCgxOTY5LCAxMiwgMzEsIDEyLCAwLCAwKSwgdXRjKSwg
dHApOworICAgIEVYUEVDVF9GQUxTRShwYXJzZShmbXQsICItMSIsIHV0YywgJnRwKSk7CisgIH0K
IH0KIAogVEVTVChQYXJzZSwgRXh0ZW5kZWRZZWFycykgewpAQCAtMTM5MCw2ICsxNDU1LDEwIEBA
IFRFU1QoRm9ybWF0UGFyc2UsIFJvdW5kVHJpcCkgewogI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBk
ZWZpbmVkKF9XSU42NCkKICAgLy8gSW5pdGlhbCBpbnZlc3RpZ2F0aW9ucyBpbmRpY2F0ZSB0aGUg
JWMgZG9lcyBub3Qgcm91bmR0cmlwIG9uIFdpbmRvd3MuCiAgIC8vIFRPRE86IEZpZ3VyZSBvdXQg
d2hhdCBpcyBnb2luZyBvbiBoZXJlIChwZXJoYXBzIGEgbG9jYWxlIHByb2JsZW0pLgorI2VsaWYg
ZGVmaW5lZChfX0VNU0NSSVBURU5fXykKKyAgLy8gc3RyZnRpbWUoKSBhbmQgc3RycHRpbWUoKSB1
c2UgZGlmZmVyZW50IGRlZmludGlvbnMgZm9yICIlYyIgdW5kZXIKKyAgLy8gZW1zY3JpcHRlbiAo
c2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9rcmlwa2VuL2Vtc2NyaXB0ZW4vcHVsbC83NDkxKSwKKyAg
Ly8gY2F1c2luZyBpdHMgcm91bmQtdHJpcCB0ZXN0IHRvIGZhaWwuCiAjZWxzZQogICAvLyBFdmVu
IHRob3VnaCB3ZSBkb24ndCBrbm93IHdoYXQgJWMgd2lsbCBwcm9kdWNlLCBpdCBzaG91bGQgcm91
bmR0cmlwLAogICAvLyBidXQgb25seSBpbiB0aGUgMC1vZmZzZXQgdGltZXpvbmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pZi5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2lmLmNjCmluZGV4IDM4MDgzNGExNzJh
ODE3M2I4YTZhOGEzMjYwYmZmMjMxZGE1YTIxZGEuLjA5YWFlZTVmYjQzNTU0ZThmNjNmMGU2MjA4
MmE1ZDQ1NTk2ZTg4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX2lmLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96
b25lX2lmLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaWYuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2lmLmgKaW5kZXggZTRiZDM4NjZhODdi
OGRkNGRhNjU2Njg2NGRiNTZkN2ZiN2Q2ZjkwYS4uZDAwMGI3YTVmNzgwNWUzZjc5MTgxYTQ5NmU4
NTk4MGNjOWUxNjI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90
aW1lX3pvbmVfaWYuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9u
ZV9pZi5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW1wbC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ltcGwuY2MKaW5kZXggMzA2MmNjZDNj
ZWIwNmFmYWYwYjc3NjJiZDNlMGRiZjliMmY0ZjkwOC4uM2NiYzY3NDY1M2RkZjk2NTY5NzNiMDlm
NmM0NGQxYjAzYjcyYWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Ny
Yy90aW1lX3pvbmVfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3Rp
bWVfem9uZV9pbXBsLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW1wbC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW1wbC5oCmluZGV4IDE0
OTY1ZWY1NGJmYjIxMWIyM2IxMzQxYmNiMDZlYjhjZTJjZTEzZTAuLmI3M2ZhZDliYjg4ZjE3YjVh
ZWI4NDJkNWUwNzhjNjRjN2Q3YWVjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei9zcmMvdGltZV96b25lX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
c3JjL3RpbWVfem9uZV9pbXBsLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyAgIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9p
bmZvLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW5mby5jYwpp
bmRleCAyY2IzNThkMDQ4ZTJkODIxOTFkZThiY2YyMDI4MjljN2VhMmNiODgzLi45ZGI3MmUwYzUw
ZmU0NDc3ZjgwMjViMTljM2E4MTYyZjEyYWQzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCkBAIC0yNSw3ICsyNSw3IEBACiAvLyBhIGdyYWluIG9mIHNhbHQuCiAvLwog
Ly8gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHR6ZmlsZSg1KSwgaHR0cDovL3d3dy5pYW5hLm9y
Zy90aW1lLXpvbmVzLCBvcgotLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9ab25laW5m
by4KKy8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1pvbmVpbmZvLgogLy8KIC8vIE5v
dGUgdGhhdCB3ZSBhc3N1bWUgdGhlIHByb2xlcHRpYyBHcmVnb3JpYW4gY2FsZW5kYXIgYW5kIDYw
LXNlY29uZAogLy8gbWludXRlcyB0aHJvdWdob3V0LgpAQCAtMjM5LDggKzIzOSw4IEBAIGJvb2wg
VGltZVpvbmVJbmZvOjpIZWFkZXI6OkJ1aWxkKGNvbnN0IHR6aGVhZCYgdHpoKSB7CiAgIGxlYXBj
bnQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4odik7CiAgIGlmICgodiA9IERlY29kZTMyKHR6
aC50emhfdHRpc3N0ZGNudCkpIDwgMCkgcmV0dXJuIGZhbHNlOwogICB0dGlzc3RkY250ID0gc3Rh
dGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHYpOwotICBpZiAoKHYgPSBEZWNvZGUzMih0emgudHpoX3R0
aXNnbXRjbnQpKSA8IDApIHJldHVybiBmYWxzZTsKLSAgdHRpc2dtdGNudCA9IHN0YXRpY19jYXN0
PHN0ZDo6c2l6ZV90Pih2KTsKKyAgaWYgKCh2ID0gRGVjb2RlMzIodHpoLnR6aF90dGlzdXRjbnQp
KSA8IDApIHJldHVybiBmYWxzZTsKKyAgdHRpc3V0Y250ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXpl
X3Q+KHYpOwogICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjUzLDcgKzI1Myw3IEBAIHN0ZDo6c2l6
ZV90IFRpbWVab25lSW5mbzo6SGVhZGVyOjpEYXRhTGVuZ3RoKHN0ZDo6c2l6ZV90IHRpbWVfbGVu
KSBjb25zdCB7CiAgIGxlbiArPSAxICogY2hhcmNudDsgICAgICAgICAgICAgICAvLyBhYmJyZXZp
YXRpb25zCiAgIGxlbiArPSAodGltZV9sZW4gKyA0KSAqIGxlYXBjbnQ7ICAvLyBsZWFwLXRpbWUg
KyBUQUktVVRDCiAgIGxlbiArPSAxICogdHRpc3N0ZGNudDsgICAgICAgICAgICAvLyBVVEMvbG9j
YWwgaW5kaWNhdG9ycwotICBsZW4gKz0gMSAqIHR0aXNnbXRjbnQ7ICAgICAgICAgICAgLy8gc3Rh
bmRhcmQvd2FsbCBpbmRpY2F0b3JzCisgIGxlbiArPSAxICogdHRpc3V0Y250OyAgICAgICAgICAg
ICAvLyBzdGFuZGFyZC93YWxsIGluZGljYXRvcnMKICAgcmV0dXJuIGxlbjsKIH0KIApAQCAtNDI3
LDcgKzQyNyw3IEBAIGJvb2wgVGltZVpvbmVJbmZvOjpMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lLCBab25lSW5mb1NvdXJjZSogemlwKSB7CiAgIH0KICAgaWYgKGhkci50dGlzc3RkY250ICE9
IDAgJiYgaGRyLnR0aXNzdGRjbnQgIT0gaGRyLnR5cGVjbnQpCiAgICAgcmV0dXJuIGZhbHNlOwot
ICBpZiAoaGRyLnR0aXNnbXRjbnQgIT0gMCAmJiBoZHIudHRpc2dtdGNudCAhPSBoZHIudHlwZWNu
dCkKKyAgaWYgKGhkci50dGlzdXRjbnQgIT0gMCAmJiBoZHIudHRpc3V0Y250ICE9IGhkci50eXBl
Y250KQogICAgIHJldHVybiBmYWxzZTsKIAogICAvLyBSZWFkIHRoZSBkYXRhIGludG8gYSBsb2Nh
bCBidWZmZXIuCkBAIC00OTgsMTYgKzQ5OCwxNiBAQCBib29sIFRpbWVab25lSW5mbzo6TG9hZChj
b25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgWm9uZUluZm9Tb3VyY2UqIHppcCkgewogICAvLyB0aGF0
IGlzbid0IHRoZSBjYXNlIGhlcmUgKHNlZSAiemljIC1wIikuCiAgIGJwICs9ICg4ICsgNCkgKiBo
ZHIubGVhcGNudDsgIC8vIGxlYXAtdGltZSArIFRBSS1VVEMKICAgYnAgKz0gMSAqIGhkci50dGlz
c3RkY250OyAgICAgLy8gVVRDL2xvY2FsIGluZGljYXRvcnMKLSAgYnAgKz0gMSAqIGhkci50dGlz
Z210Y250OyAgICAgLy8gc3RhbmRhcmQvd2FsbCBpbmRpY2F0b3JzCisgIGJwICs9IDEgKiBoZHIu
dHRpc3V0Y250OyAgICAgIC8vIHN0YW5kYXJkL3dhbGwgaW5kaWNhdG9ycwogICBhc3NlcnQoYnAg
PT0gdGJ1Zi5kYXRhKCkgKyB0YnVmLnNpemUoKSk7CiAKICAgZnV0dXJlX3NwZWNfLmNsZWFyKCk7
CiAgIGlmICh0emgudHpoX3ZlcnNpb25bMF0gIT0gJ1wwJykgewogICAgIC8vIFNuYXJmIHVwIHRo
ZSBOTC1lbmNsb3NlZCBmdXR1cmUgUE9TSVggc3BlYy4gTm90ZQogICAgIC8vIHRoYXQgdmVyc2lv
biAnMycgZmlsZXMgdXRpbGl6ZSBhbiBleHRlbmRlZCBmb3JtYXQuCi0gICAgYXV0byBnZXRfY2hh
ciA9IFtdKFpvbmVJbmZvU291cmNlKiB6aXApIC0+IGludCB7CisgICAgYXV0byBnZXRfY2hhciA9
IFtdKFpvbmVJbmZvU291cmNlKiBhemlwKSAtPiBpbnQgewogICAgICAgdW5zaWduZWQgY2hhciBj
aDsgIC8vIGFsbCBub24tRU9GIHJlc3VsdHMgYXJlIHBvc2l0aXZlCi0gICAgICByZXR1cm4gKHpp
cC0+UmVhZCgmY2gsIDEpID09IDEpID8gY2ggOiBFT0Y7CisgICAgICByZXR1cm4gKGF6aXAtPlJl
YWQoJmNoLCAxKSA9PSAxKSA/IGNoIDogRU9GOwogICAgIH07CiAgICAgaWYgKGdldF9jaGFyKHpp
cCkgIT0gJ1xuJykKICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY4Miw3ICs2ODIsNiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Wm9uZUluZm9Tb3VyY2U+IEFuZHJvaWRab25lSW5mb1NvdXJjZTo6T3BlbigK
ICAgLy8gVXNlIG9mIHRoZSAiZmlsZToiIHByZWZpeCBpcyBpbnRlbmRlZCBmb3IgdGVzdGluZyBw
dXJwb3NlcyBvbmx5LgogICBpZiAobmFtZS5jb21wYXJlKDAsIDUsICJmaWxlOiIpID09IDApIHJl
dHVybiBPcGVuKG5hbWUuc3Vic3RyKDUpKTsKIAotI2lmIGRlZmluZWQoX19BTkRST0lEX18pCiAg
IC8vIFNlZSBBbmRyb2lkJ3MgbGliYy90emNvZGUvYmlvbmljLmNwcCBmb3IgYWRkaXRpb25hbCBp
bmZvcm1hdGlvbi4KICAgZm9yIChjb25zdCBjaGFyKiB0emRhdGEgOiB7Ii9kYXRhL21pc2Mvem9u
ZWluZm8vY3VycmVudC90emRhdGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3N5
c3RlbS91c3Ivc2hhcmUvem9uZWluZm8vdHpkYXRhIn0pIHsKQEAgLTcxNyw3ICs3MTYsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Wm9uZUluZm9Tb3VyY2U+IEFuZHJvaWRab25lSW5mb1NvdXJjZTo6T3Bl
bigKICAgICAgIH0KICAgICB9CiAgIH0KLSNlbmRpZiAgLy8gX19BTkRST0lEX18KKwogICByZXR1
cm4gbnVsbHB0cjsKIH0KIApAQCAtOTIxLDcgKzkyMCw3IEBAIGJvb2wgVGltZVpvbmVJbmZvOjpO
ZXh0VHJhbnNpdGlvbihjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+JiB0cCwKICAgICArK2JlZ2lu
OwogICB9CiAgIHN0ZDo6aW50X2Zhc3Q2NF90IHVuaXhfdGltZSA9IFRvVW5peFNlY29uZHModHAp
OwotICBjb25zdCBUcmFuc2l0aW9uIHRhcmdldCA9IHsgdW5peF90aW1lIH07CisgIGNvbnN0IFRy
YW5zaXRpb24gdGFyZ2V0ID0ge3VuaXhfdGltZSwgMCwgY2l2aWxfc2Vjb25kKCksIGNpdmlsX3Nl
Y29uZCgpfTsKICAgY29uc3QgVHJhbnNpdGlvbiogdHIgPSBzdGQ6OnVwcGVyX2JvdW5kKGJlZ2lu
LCBlbmQsIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRyYW5zaXRpb246OkJ5VW5peFRpbWUoKSk7CiAgIGZvciAoOyB0ciAhPSBlbmQ7ICsrdHIpIHsg
IC8vIHNraXAgbm8tb3AgdHJhbnNpdGlvbnMKQEAgLTk1Niw3ICs5NTUsNyBAQCBib29sIFRpbWVa
b25lSW5mbzo6UHJldlRyYW5zaXRpb24oY29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiYgdHAsCiAg
ICAgfQogICAgIHVuaXhfdGltZSArPSAxOyAgLy8gY2VpbHMKICAgfQotICBjb25zdCBUcmFuc2l0
aW9uIHRhcmdldCA9IHsgdW5peF90aW1lIH07CisgIGNvbnN0IFRyYW5zaXRpb24gdGFyZ2V0ID0g
e3VuaXhfdGltZSwgMCwgY2l2aWxfc2Vjb25kKCksIGNpdmlsX3NlY29uZCgpfTsKICAgY29uc3Qg
VHJhbnNpdGlvbiogdHIgPSBzdGQ6Omxvd2VyX2JvdW5kKGJlZ2luLCBlbmQsIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb246OkJ5VW5p
eFRpbWUoKSk7CiAgIGZvciAoOyB0ciAhPSBiZWdpbjsgLS10cikgeyAgLy8gc2tpcCBuby1vcCB0
cmFuc2l0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1l
X3pvbmVfaW5mby5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW5m
by5oCmluZGV4IDk1OGU5YjZiZDc0NGQxOGMxZDJhZDhiYmZjZWM5OWEwMDI4ZGUwYjQuLjgxY2Q0
MDJmOTcyYWU5ZDc5ZWMwNmI3ODZmYzAzZGRjMjc0YWRmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gICBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIFRpbWVab25lSW5mbyA6IHB1
YmxpYyBUaW1lWm9uZUlmIHsKICAgICBzdGQ6OnNpemVfdCBjaGFyY250OyAgICAgLy8gem9uZSBh
YmJyZXZpYXRpb24gY2hhcmFjdGVycwogICAgIHN0ZDo6c2l6ZV90IGxlYXBjbnQ7ICAgICAvLyBs
ZWFwIHNlY29uZHMgKHdlIGV4cGVjdCBub25lKQogICAgIHN0ZDo6c2l6ZV90IHR0aXNzdGRjbnQ7
ICAvLyBVVEMvbG9jYWwgaW5kaWNhdG9ycyAodW51c2VkKQotICAgIHN0ZDo6c2l6ZV90IHR0aXNn
bXRjbnQ7ICAvLyBzdGFuZGFyZC93YWxsIGluZGljYXRvcnMgKHVudXNlZCkKKyAgICBzdGQ6OnNp
emVfdCB0dGlzdXRjbnQ7ICAgLy8gc3RhbmRhcmQvd2FsbCBpbmRpY2F0b3JzICh1bnVzZWQpCiAK
ICAgICBib29sIEJ1aWxkKGNvbnN0IHR6aGVhZCYgdHpoKTsKICAgICBzdGQ6OnNpemVfdCBEYXRh
TGVuZ3RoKHN0ZDo6c2l6ZV90IHRpbWVfbGVuKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2xpYmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmNjCmluZGV4IDA3NGM4ZDBhNGE0MGUxMzk4MmFi
OGE0ZTJiODBiZjYzZTEzZjlhZTUuLjYwOTVlNzY0ZGYwZGQ4MTIwMzYwMzVlN2M5ZmE1ZDIxYzg3
MzNiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25l
X2xpYmMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbGli
Yy5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTIwLDcgKzIw
LDcgQEAKIAogI2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRlIDxjdGltZT4KLSNpbmNsdWRlIDx0
dXBsZT4KKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUg
ImFic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgiCkBAIC0z
Miw1OSArMzIsMTQ3IEBAIG5hbWVzcGFjZSBjY3R6IHsKIAogbmFtZXNwYWNlIHsKIAotLy8gLmZp
cnN0IGlzIHNlY29uZHMgZWFzdCBvZiBVVEM7IC5zZWNvbmQgaXMgdGhlIHRpbWUtem9uZSBhYmJy
ZXZpYXRpb24uCi11c2luZyBPZmZzZXRBYmJyID0gc3RkOjpwYWlyPGludCwgY29uc3QgY2hhcio+
OwotCi0vLyBEZWZpbmVzIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIGFzIGZvbGxvd3M6
Ci0vLwotLy8gICBzdGQ6OnRtIHRtID0gLi4uOwotLy8gICBPZmZzZXRBYmJyIG9mZl9hYmJyID0g
Z2V0X29mZnNldF9hYmJyKHRtKTsKLS8vCiAjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQo
X1dJTjY0KQogLy8gVXNlcyB0aGUgZ2xvYmFsczogJ190aW1lem9uZScsICdfZHN0YmlhcycgYW5k
ICdfdHpuYW1lJy4KLU9mZnNldEFiYnIgZ2V0X29mZnNldF9hYmJyKGNvbnN0IHN0ZDo6dG0mIHRt
KSB7CithdXRvIHRtX2dtdG9mZihjb25zdCBzdGQ6OnRtJiB0bSkgLT4gZGVjbHR5cGUoX3RpbWV6
b25lICsgX2RzdGJpYXMpIHsKKyAgY29uc3QgYm9vbCBpc19kc3QgPSB0bS50bV9pc2RzdCA+IDA7
CisgIHJldHVybiBfdGltZXpvbmUgKyAoaXNfZHN0ID8gX2RzdGJpYXMgOiAwKTsKK30KK2F1dG8g
dG1fem9uZShjb25zdCBzdGQ6OnRtJiB0bSkgLT4gZGVjbHR5cGUoX3R6bmFtZVswXSkgewogICBj
b25zdCBib29sIGlzX2RzdCA9IHRtLnRtX2lzZHN0ID4gMDsKLSAgY29uc3QgaW50IG9mZiA9IF90
aW1lem9uZSArIChpc19kc3QgPyBfZHN0YmlhcyA6IDApOwotICBjb25zdCBjaGFyKiBhYmJyID0g
X3R6bmFtZVtpc19kc3RdOwotICByZXR1cm4ge29mZiwgYWJicn07CisgIHJldHVybiBfdHpuYW1l
W2lzX2RzdF07CiB9CiAjZWxpZiBkZWZpbmVkKF9fc3VuKQogLy8gVXNlcyB0aGUgZ2xvYmFsczog
J3RpbWV6b25lJywgJ2FsdHpvbmUnIGFuZCAndHpuYW1lJy4KLU9mZnNldEFiYnIgZ2V0X29mZnNl
dF9hYmJyKGNvbnN0IHN0ZDo6dG0mIHRtKSB7CithdXRvIHRtX2dtdG9mZihjb25zdCBzdGQ6OnRt
JiB0bSkgLT4gZGVjbHR5cGUodGltZXpvbmUpIHsKKyAgY29uc3QgYm9vbCBpc19kc3QgPSB0bS50
bV9pc2RzdCA+IDA7CisgIHJldHVybiBpc19kc3QgPyBhbHR6b25lIDogdGltZXpvbmU7Cit9Cith
dXRvIHRtX3pvbmUoY29uc3Qgc3RkOjp0bSYgdG0pIC0+IGRlY2x0eXBlKHR6bmFtZVswXSkgewog
ICBjb25zdCBib29sIGlzX2RzdCA9IHRtLnRtX2lzZHN0ID4gMDsKLSAgY29uc3QgaW50IG9mZiA9
IGlzX2RzdCA/IGFsdHpvbmUgOiB0aW1lem9uZTsKLSAgY29uc3QgY2hhciogYWJiciA9IHR6bmFt
ZVtpc19kc3RdOwotICByZXR1cm4ge29mZiwgYWJicn07CisgIHJldHVybiB0em5hbWVbaXNfZHN0
XTsKIH0KICNlbGlmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pIHx8IGRlZmluZWQoX19teXJp
YWQyX18pIHx8IFwKICAgICBkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQogLy8gVXNlcyB0aGUgZ2xv
YmFsczogJ3RpbWV6b25lJyBhbmQgJ3R6bmFtZScuCi1PZmZzZXRBYmJyIGdldF9vZmZzZXRfYWJi
cihjb25zdCBzdGQ6OnRtJiB0bSkgeworYXV0byB0bV9nbXRvZmYoY29uc3Qgc3RkOjp0bSYgdG0p
IC0+IGRlY2x0eXBlKF90aW1lem9uZSArIDApIHsKKyAgY29uc3QgYm9vbCBpc19kc3QgPSB0bS50
bV9pc2RzdCA+IDA7CisgIHJldHVybiBfdGltZXpvbmUgKyAoaXNfZHN0ID8gNjAgKiA2MCA6IDAp
OworfQorYXV0byB0bV96b25lKGNvbnN0IHN0ZDo6dG0mIHRtKSAtPiBkZWNsdHlwZSh0em5hbWVb
MF0pIHsKICAgY29uc3QgYm9vbCBpc19kc3QgPSB0bS50bV9pc2RzdCA+IDA7Ci0gIGNvbnN0IGlu
dCBvZmYgPSBfdGltZXpvbmUgKyAoaXNfZHN0ID8gNjAgKiA2MCA6IDApOwotICBjb25zdCBjaGFy
KiBhYmJyID0gdHpuYW1lW2lzX2RzdF07Ci0gIHJldHVybiB7b2ZmLCBhYmJyfTsKKyAgcmV0dXJu
IHR6bmFtZVtpc19kc3RdOworfQorI2Vsc2UKKy8vIEFkYXB0IHRvIGRpZmZlcmVudCBzcGVsbGlu
Z3Mgb2YgdGhlIHN0cnVjdCBzdGQ6OnRtIGV4dGVuc2lvbiBmaWVsZHMuCisjaWYgZGVmaW5lZCh0
bV9nbXRvZmYpCithdXRvIHRtX2dtdG9mZihjb25zdCBzdGQ6OnRtJiB0bSkgLT4gZGVjbHR5cGUo
dG0udG1fZ210b2ZmKSB7CisgIHJldHVybiB0bS50bV9nbXRvZmY7Cit9CisjZWxpZiBkZWZpbmVk
KF9fdG1fZ210b2ZmKQorYXV0byB0bV9nbXRvZmYoY29uc3Qgc3RkOjp0bSYgdG0pIC0+IGRlY2x0
eXBlKHRtLl9fdG1fZ210b2ZmKSB7CisgIHJldHVybiB0bS5fX3RtX2dtdG9mZjsKIH0KICNlbHNl
Ci0vLwotLy8gUmV0dXJucyBhbiBPZmZzZXRBYmJyIHVzaW5nIHN0ZDo6dG0gZmllbGRzIHdpdGgg
dmFyaW91cyBzcGVsbGluZ3MuCi0vLwotI2lmICFkZWZpbmVkKHRtX2dtdG9mZikgJiYgIWRlZmlu
ZWQodG1fem9uZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotT2Zmc2V0QWJiciBnZXRfb2Zmc2V0
X2FiYnIoY29uc3QgVCYgdG0sIGRlY2x0eXBlKCZUOjp0bV9nbXRvZmYpID0gbnVsbHB0ciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2x0eXBlKCZUOjp0bV96b25lKSA9IG51bGxwdHIp
IHsKLSAgcmV0dXJuIHt0bS50bV9nbXRvZmYsIHRtLnRtX3pvbmV9OworYXV0byB0bV9nbXRvZmYo
Y29uc3QgVCYgdG0pIC0+IGRlY2x0eXBlKHRtLnRtX2dtdG9mZikgeworICByZXR1cm4gdG0udG1f
Z210b2ZmOwogfQotI2VuZGlmICAvLyAhZGVmaW5lZCh0bV9nbXRvZmYpICYmICFkZWZpbmVkKHRt
X3pvbmUpCi0jaWYgIWRlZmluZWQoX190bV9nbXRvZmYpICYmICFkZWZpbmVkKF9fdG1fem9uZSkK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotT2Zmc2V0QWJiciBnZXRfb2Zmc2V0X2FiYnIoY29uc3Qg
VCYgdG0sIGRlY2x0eXBlKCZUOjpfX3RtX2dtdG9mZikgPSBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVjbHR5cGUoJlQ6Ol9fdG1fem9uZSkgPSBudWxscHRyKSB7Ci0gIHJl
dHVybiB7dG0uX190bV9nbXRvZmYsIHRtLl9fdG1fem9uZX07CithdXRvIHRtX2dtdG9mZihjb25z
dCBUJiB0bSkgLT4gZGVjbHR5cGUodG0uX190bV9nbXRvZmYpIHsKKyAgcmV0dXJuIHRtLl9fdG1f
Z210b2ZmOworfQorI2VuZGlmICAvLyB0bV9nbXRvZmYKKyNpZiBkZWZpbmVkKHRtX3pvbmUpCith
dXRvIHRtX3pvbmUoY29uc3Qgc3RkOjp0bSYgdG0pIC0+IGRlY2x0eXBlKHRtLnRtX3pvbmUpIHsK
KyAgcmV0dXJuIHRtLnRtX3pvbmU7Cit9CisjZWxpZiBkZWZpbmVkKF9fdG1fem9uZSkKK2F1dG8g
dG1fem9uZShjb25zdCBzdGQ6OnRtJiB0bSkgLT4gZGVjbHR5cGUodG0uX190bV96b25lKSB7Cisg
IHJldHVybiB0bS5fX3RtX3pvbmU7CiB9Ci0jZW5kaWYgIC8vICFkZWZpbmVkKF9fdG1fZ210b2Zm
KSAmJiAhZGVmaW5lZChfX3RtX3pvbmUpCisjZWxzZQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cith
dXRvIHRtX3pvbmUoY29uc3QgVCYgdG0pIC0+IGRlY2x0eXBlKHRtLnRtX3pvbmUpIHsKKyAgcmV0
dXJuIHRtLnRtX3pvbmU7Cit9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2F1dG8gdG1fem9uZShj
b25zdCBUJiB0bSkgLT4gZGVjbHR5cGUodG0uX190bV96b25lKSB7CisgIHJldHVybiB0bS5fX3Rt
X3pvbmU7Cit9CisjZW5kaWYgIC8vIHRtX3pvbmUKICNlbmRpZgogCitpbmxpbmUgc3RkOjp0bSog
Z21fdGltZShjb25zdCBzdGQ6OnRpbWVfdCAqdGltZXAsIHN0ZDo6dG0gKnJlc3VsdCkgeworI2lm
IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkKKyAgICByZXR1cm4gZ210aW1lX3Mo
cmVzdWx0LCB0aW1lcCkgPyBudWxscHRyIDogcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4gZ210
aW1lX3IodGltZXAsIHJlc3VsdCk7CisjZW5kaWYKK30KKworaW5saW5lIHN0ZDo6dG0qIGxvY2Fs
X3RpbWUoY29uc3Qgc3RkOjp0aW1lX3QgKnRpbWVwLCBzdGQ6OnRtICpyZXN1bHQpIHsKKyNpZiBk
ZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCisgICAgcmV0dXJuIGxvY2FsdGltZV9z
KHJlc3VsdCwgdGltZXApID8gbnVsbHB0ciA6IHJlc3VsdDsKKyNlbHNlCisgICAgcmV0dXJuIGxv
Y2FsdGltZV9yKHRpbWVwLCByZXN1bHQpOworI2VuZGlmCit9CisKKy8vIENvbnZlcnRzIGEgY2l2
aWwgc2Vjb25kIGFuZCAiZHN0IiBmbGFnIGludG8gYSB0aW1lX3QgYW5kIFVUQyBvZmZzZXQuCisv
LyBSZXR1cm5zIGZhbHNlIGlmIHRpbWVfdCBjYW5ub3QgcmVwcmVzZW50IHRoZSByZXF1ZXN0ZWQg
Y2l2aWwgc2Vjb25kLgorLy8gQ2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCBj
cy55ZWFyKCkgd2lsbCBmaXQgaW50byBhIHRtX3llYXIuCitib29sIG1ha2VfdGltZShjb25zdCBj
aXZpbF9zZWNvbmQmIGNzLCBpbnQgaXNfZHN0LCBzdGQ6OnRpbWVfdCogdCwgaW50KiBvZmYpIHsK
KyAgc3RkOjp0bSB0bTsKKyAgdG0udG1feWVhciA9IHN0YXRpY19jYXN0PGludD4oY3MueWVhcigp
IC0geWVhcl90ezE5MDB9KTsKKyAgdG0udG1fbW9uID0gY3MubW9udGgoKSAtIDE7CisgIHRtLnRt
X21kYXkgPSBjcy5kYXkoKTsKKyAgdG0udG1faG91ciA9IGNzLmhvdXIoKTsKKyAgdG0udG1fbWlu
ID0gY3MubWludXRlKCk7CisgIHRtLnRtX3NlYyA9IGNzLnNlY29uZCgpOworICB0bS50bV9pc2Rz
dCA9IGlzX2RzdDsKKyAgKnQgPSBzdGQ6Om1rdGltZSgmdG0pOworICBpZiAoKnQgPT0gc3RkOjp0
aW1lX3R7LTF9KSB7CisgICAgc3RkOjp0bSB0bTI7CisgICAgY29uc3Qgc3RkOjp0bSogdG1wID0g
bG9jYWxfdGltZSh0LCAmdG0yKTsKKyAgICBpZiAodG1wID09IG51bGxwdHIgfHwgdG1wLT50bV95
ZWFyICE9IHRtLnRtX3llYXIgfHwKKyAgICAgICAgdG1wLT50bV9tb24gIT0gdG0udG1fbW9uIHx8
IHRtcC0+dG1fbWRheSAhPSB0bS50bV9tZGF5IHx8CisgICAgICAgIHRtcC0+dG1faG91ciAhPSB0
bS50bV9ob3VyIHx8IHRtcC0+dG1fbWluICE9IHRtLnRtX21pbiB8fAorICAgICAgICB0bXAtPnRt
X3NlYyAhPSB0bS50bV9zZWMpIHsKKyAgICAgIC8vIEEgdHJ1ZSBlcnJvciAobm90IGp1c3Qgb25l
IHNlY29uZCBiZWZvcmUgdGhlIGVwb2NoKS4KKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
IH0KKyAgKm9mZiA9IHN0YXRpY19jYXN0PGludD4odG1fZ210b2ZmKHRtKSk7CisgIHJldHVybiB0
cnVlOworfQorCisvLyBGaW5kIHRoZSBsZWFzdCB0aW1lX3QgaW4gW2xvOmhpXSB3aGVyZSBsb2Nh
bCB0aW1lIG1hdGNoZXMgb2Zmc2V0LCBnaXZlbjoKKy8vICgxKSBsbyBkb2Vzbid0IG1hdGNoLCAo
MikgaGkgZG9lcywgYW5kICgzKSB0aGVyZSBpcyBvbmx5IG9uZSB0cmFuc2l0aW9uLgorc3RkOjp0
aW1lX3QgZmluZF90cmFucyhzdGQ6OnRpbWVfdCBsbywgc3RkOjp0aW1lX3QgaGksIGludCBvZmZz
ZXQpIHsKKyAgc3RkOjp0bSB0bTsKKyAgd2hpbGUgKGxvICsgMSAhPSBoaSkgeworICAgIGNvbnN0
IHN0ZDo6dGltZV90IG1pZCA9IGxvICsgKGhpIC0gbG8pIC8gMjsKKyAgICBpZiAoc3RkOjp0bSog
dG1wID0gbG9jYWxfdGltZSgmbWlkLCAmdG0pKSB7CisgICAgICBpZiAodG1fZ210b2ZmKCp0bXAp
ID09IG9mZnNldCkgeworICAgICAgICBoaSA9IG1pZDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IGxvID0gbWlkOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAvLyBJZiBzdGQ6OnRtIGNh
bm5vdCBob2xkIHNvbWUgcmVzdWx0IHdlIHJlc29ydCB0byBhIGxpbmVhciBzZWFyY2gsCisgICAg
ICAvLyBpZ25vcmluZyBhbGwgZmFpbGVkIGNvbnZlcnNpb25zLiAgU2xvdywgYnV0IG5ldmVyIHJl
YWxseSBoYXBwZW5zLgorICAgICAgd2hpbGUgKCsrbG8gIT0gaGkpIHsKKyAgICAgICAgaWYgKHN0
ZDo6dG0qIHRtcCA9IGxvY2FsX3RpbWUoJmxvLCAmdG0pKSB7CisgICAgICAgICAgaWYgKHRtX2dt
dG9mZigqdG1wKSA9PSBvZmZzZXQpIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICBy
ZXR1cm4gbG87CisgICAgfQorICB9CisgIHJldHVybiBoaTsKK30KKwogfSAgLy8gbmFtZXNwYWNl
CiAKIFRpbWVab25lTGliQzo6VGltZVpvbmVMaWJDKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKQpA
QCAtOTMsNTkgKzE4MSwxMTYgQEAgVGltZVpvbmVMaWJDOjpUaW1lWm9uZUxpYkMoY29uc3Qgc3Rk
OjpzdHJpbmcmIG5hbWUpCiB0aW1lX3pvbmU6OmFic29sdXRlX2xvb2t1cCBUaW1lWm9uZUxpYkM6
OkJyZWFrVGltZSgKICAgICBjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+JiB0cCkgY29uc3Qgewog
ICB0aW1lX3pvbmU6OmFic29sdXRlX2xvb2t1cCBhbDsKLSAgc3RkOjp0aW1lX3QgdCA9IFRvVW5p
eFNlY29uZHModHApOworICBhbC5vZmZzZXQgPSAwOworICBhbC5pc19kc3QgPSBmYWxzZTsKKyAg
YWwuYWJiciA9ICItMDAiOworCisgIGNvbnN0IHN0ZDo6aW50X2Zhc3Q2NF90IHMgPSBUb1VuaXhT
ZWNvbmRzKHRwKTsKKworICAvLyBJZiBzdGQ6OnRpbWVfdCBjYW5ub3QgaG9sZCB0aGUgaW5wdXQg
d2Ugc2F0dXJhdGUgdGhlIG91dHB1dC4KKyAgaWYgKHMgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHN0
ZDo6dGltZV90Pjo6bWluKCkpIHsKKyAgICBhbC5jcyA9IGNpdmlsX3NlY29uZDo6bWluKCk7Cisg
ICAgcmV0dXJuIGFsOworICB9CisgIGlmIChzID4gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnRp
bWVfdD46Om1heCgpKSB7CisgICAgYWwuY3MgPSBjaXZpbF9zZWNvbmQ6Om1heCgpOworICAgIHJl
dHVybiBhbDsKKyAgfQorCisgIGNvbnN0IHN0ZDo6dGltZV90IHQgPSBzdGF0aWNfY2FzdDxzdGQ6
OnRpbWVfdD4ocyk7CiAgIHN0ZDo6dG0gdG07Ci0gIGlmIChsb2NhbF8pIHsKLSNpZiBkZWZpbmVk
KF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCi0gICAgbG9jYWx0aW1lX3MoJnRtLCAmdCk7Ci0j
ZWxzZQotICAgIGxvY2FsdGltZV9yKCZ0LCAmdG0pOwotI2VuZGlmCi0gICAgc3RkOjp0aWUoYWwu
b2Zmc2V0LCBhbC5hYmJyKSA9IGdldF9vZmZzZXRfYWJicih0bSk7Ci0gIH0gZWxzZSB7Ci0jaWYg
ZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KQotICAgIGdtdGltZV9zKCZ0bSwgJnQp
OwotI2Vsc2UKLSAgICBnbXRpbWVfcigmdCwgJnRtKTsKLSNlbmRpZgotICAgIGFsLm9mZnNldCA9
IDA7Ci0gICAgYWwuYWJiciA9ICJVVEMiOworICBzdGQ6OnRtKiB0bXAgPSBsb2NhbF8gPyBsb2Nh
bF90aW1lKCZ0LCAmdG0pIDogZ21fdGltZSgmdCwgJnRtKTsKKworICAvLyBJZiBzdGQ6OnRtIGNh
bm5vdCBob2xkIHRoZSByZXN1bHQgd2Ugc2F0dXJhdGUgdGhlIG91dHB1dC4KKyAgaWYgKHRtcCA9
PSBudWxscHRyKSB7CisgICAgYWwuY3MgPSAocyA8IDApID8gY2l2aWxfc2Vjb25kOjptaW4oKSA6
IGNpdmlsX3NlY29uZDo6bWF4KCk7CisgICAgcmV0dXJuIGFsOwogICB9Ci0gIGFsLmNzID0gY2l2
aWxfc2Vjb25kKHRtLnRtX3llYXIgKyAxOTAwLCB0bS50bV9tb24gKyAxLCB0bS50bV9tZGF5LAot
ICAgICAgICAgICAgICAgICAgICAgICB0bS50bV9ob3VyLCB0bS50bV9taW4sIHRtLnRtX3NlYyk7
Ci0gIGFsLmlzX2RzdCA9IHRtLnRtX2lzZHN0ID4gMDsKKworICBjb25zdCB5ZWFyX3QgeWVhciA9
IHRtcC0+dG1feWVhciArIHllYXJfdHsxOTAwfTsKKyAgYWwuY3MgPSBjaXZpbF9zZWNvbmQoeWVh
ciwgdG1wLT50bV9tb24gKyAxLCB0bXAtPnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAg
IHRtcC0+dG1faG91ciwgdG1wLT50bV9taW4sIHRtcC0+dG1fc2VjKTsKKyAgYWwub2Zmc2V0ID0g
c3RhdGljX2Nhc3Q8aW50Pih0bV9nbXRvZmYoKnRtcCkpOworICBhbC5hYmJyID0gbG9jYWxfID8g
dG1fem9uZSgqdG1wKSA6ICJVVEMiOyAgLy8gYXMgZXhwZWN0ZWQgYnkgY2N0egorICBhbC5pc19k
c3QgPSB0bXAtPnRtX2lzZHN0ID4gMDsKICAgcmV0dXJuIGFsOwogfQogCiB0aW1lX3pvbmU6OmNp
dmlsX2xvb2t1cCBUaW1lWm9uZUxpYkM6Ok1ha2VUaW1lKGNvbnN0IGNpdmlsX3NlY29uZCYgY3Mp
IGNvbnN0IHsKLSAgdGltZV96b25lOjpjaXZpbF9sb29rdXAgY2w7Ci0gIHN0ZDo6dGltZV90IHQ7
Ci0gIGlmIChsb2NhbF8pIHsKLSAgICAvLyBEb2VzIG5vdCBoYW5kbGUgU0tJUFBFRC9BTUJJR1VP
VVMgb3IgaHVnZSB5ZWFycy4KLSAgICBzdGQ6OnRtIHRtOwotICAgIHRtLnRtX3llYXIgPSBzdGF0
aWNfY2FzdDxpbnQ+KGNzLnllYXIoKSAtIDE5MDApOwotICAgIHRtLnRtX21vbiA9IGNzLm1vbnRo
KCkgLSAxOwotICAgIHRtLnRtX21kYXkgPSBjcy5kYXkoKTsKLSAgICB0bS50bV9ob3VyID0gY3Mu
aG91cigpOwotICAgIHRtLnRtX21pbiA9IGNzLm1pbnV0ZSgpOwotICAgIHRtLnRtX3NlYyA9IGNz
LnNlY29uZCgpOwotICAgIHRtLnRtX2lzZHN0ID0gLTE7Ci0gICAgdCA9IHN0ZDo6bWt0aW1lKCZ0
bSk7CisgIGlmICghbG9jYWxfKSB7CisgICAgLy8gSWYgdGltZV9wb2ludDxzZWNvbmRzPiBjYW5u
b3QgaG9sZCB0aGUgcmVzdWx0IHdlIHNhdHVyYXRlLgorICAgIHN0YXRpYyBjb25zdCBjaXZpbF9z
ZWNvbmQgbWluX3RwX2NzID0KKyAgICAgICAgY2l2aWxfc2Vjb25kKCkgKyBUb1VuaXhTZWNvbmRz
KHRpbWVfcG9pbnQ8c2Vjb25kcz46Om1pbigpKTsKKyAgICBzdGF0aWMgY29uc3QgY2l2aWxfc2Vj
b25kIG1heF90cF9jcyA9CisgICAgICAgIGNpdmlsX3NlY29uZCgpICsgVG9Vbml4U2Vjb25kcyh0
aW1lX3BvaW50PHNlY29uZHM+OjptYXgoKSk7CisgICAgY29uc3QgdGltZV9wb2ludDxzZWNvbmRz
PiB0cCA9CisgICAgICAgIChjcyA8IG1pbl90cF9jcykKKyAgICAgICAgICAgID8gdGltZV9wb2lu
dDxzZWNvbmRzPjo6bWluKCkKKyAgICAgICAgICAgIDogKGNzID4gbWF4X3RwX2NzKSA/IHRpbWVf
cG9pbnQ8c2Vjb25kcz46Om1heCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBG
cm9tVW5peFNlY29uZHMoY3MgLSBjaXZpbF9zZWNvbmQoKSk7CisgICAgcmV0dXJuIHt0aW1lX3pv
bmU6OmNpdmlsX2xvb2t1cDo6VU5JUVVFLCB0cCwgdHAsIHRwfTsKKyAgfQorCisgIC8vIElmIHRt
X3llYXIgY2Fubm90IGhvbGQgdGhlIHJlcXVlc3RlZCB5ZWFyIHdlIHNhdHVyYXRlIHRoZSByZXN1
bHQuCisgIGlmIChjcy55ZWFyKCkgPCAwKSB7CisgICAgaWYgKGNzLnllYXIoKSA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWluKCkgKyB5ZWFyX3R7MTkwMH0pIHsKKyAgICAgIGNvbnN0IHRp
bWVfcG9pbnQ8c2Vjb25kcz4gdHAgPSB0aW1lX3BvaW50PHNlY29uZHM+OjptaW4oKTsKKyAgICAg
IHJldHVybiB7dGltZV96b25lOjpjaXZpbF9sb29rdXA6OlVOSVFVRSwgdHAsIHRwLCB0cH07Cisg
ICAgfQogICB9IGVsc2UgewotICAgIHQgPSBjcyAtIGNpdmlsX3NlY29uZCgpOworICAgIGlmIChj
cy55ZWFyKCkgLSB5ZWFyX3R7MTkwMH0gPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
KSB7CisgICAgICBjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+IHRwID0gdGltZV9wb2ludDxzZWNv
bmRzPjo6bWF4KCk7CisgICAgICByZXR1cm4ge3RpbWVfem9uZTo6Y2l2aWxfbG9va3VwOjpVTklR
VUUsIHRwLCB0cCwgdHB9OworICAgIH0KICAgfQotICBjbC5raW5kID0gdGltZV96b25lOjpjaXZp
bF9sb29rdXA6OlVOSVFVRTsKLSAgY2wucHJlID0gY2wudHJhbnMgPSBjbC5wb3N0ID0gRnJvbVVu
aXhTZWNvbmRzKHQpOwotICByZXR1cm4gY2w7CisKKyAgLy8gV2UgcHJvYmUgd2l0aCAiaXNfZHN0
IiB2YWx1ZXMgb2YgMCBhbmQgMSB0byB0cnkgdG8gZGlzdGluZ3Vpc2ggdW5pcXVlCisgIC8vIGNp
dmlsIHNlY29uZHMgZnJvbSBza2lwcGVkIG9yIHJlcGVhdGVkIG9uZXMuICBUaGlzIGlzIG5vdCBh
bHdheXMgcG9zc2libGUKKyAgLy8gaG93ZXZlciwgYXMgdGhlICJkc3QiIGZsYWcgZG9lcyBub3Qg
Y2hhbmdlIG92ZXIgc29tZSBvZmZzZXQgdHJhbnNpdGlvbnMuCisgIC8vIFdlIGFyZSBhbHNvIHN1
YmplY3QgdG8gdGhlIHZhZ2FyaWVzIG9mIG1rdGltZSgpIGltcGxlbWVudGF0aW9ucy4KKyAgc3Rk
Ojp0aW1lX3QgdDAsIHQxOworICBpbnQgb2Zmc2V0MCwgb2Zmc2V0MTsKKyAgaWYgKG1ha2VfdGlt
ZShjcywgMCwgJnQwLCAmb2Zmc2V0MCkgJiYgbWFrZV90aW1lKGNzLCAxLCAmdDEsICZvZmZzZXQx
KSkgeworICAgIGlmICh0MCA9PSB0MSkgeworICAgICAgLy8gVGhlIGNpdmlsIHRpbWUgd2FzIHNp
bmd1bGFyIChwcmUgPT0gdHJhbnMgPT0gcG9zdCkuCisgICAgICBjb25zdCB0aW1lX3BvaW50PHNl
Y29uZHM+IHRwID0gRnJvbVVuaXhTZWNvbmRzKHQwKTsKKyAgICAgIHJldHVybiB7dGltZV96b25l
OjpjaXZpbF9sb29rdXA6OlVOSVFVRSwgdHAsIHRwLCB0cH07CisgICAgfQorCisgICAgaWYgKHQw
ID4gdDEpIHsKKyAgICAgIHN0ZDo6c3dhcCh0MCwgdDEpOworICAgICAgc3RkOjpzd2FwKG9mZnNl
dDAsIG9mZnNldDEpOworICAgIH0KKyAgICBjb25zdCBzdGQ6OnRpbWVfdCB0dCA9IGZpbmRfdHJh
bnModDAsIHQxLCBvZmZzZXQxKTsKKyAgICBjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+IHRyYW5z
ID0gRnJvbVVuaXhTZWNvbmRzKHR0KTsKKworICAgIGlmIChvZmZzZXQwIDwgb2Zmc2V0MSkgewor
ICAgICAgLy8gVGhlIGNpdmlsIHRpbWUgZGlkIG5vdCBleGlzdCAocHJlID49IHRyYW5zID4gcG9z
dCkuCisgICAgICBjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+IHByZSA9IEZyb21Vbml4U2Vjb25k
cyh0MSk7CisgICAgICBjb25zdCB0aW1lX3BvaW50PHNlY29uZHM+IHBvc3QgPSBGcm9tVW5peFNl
Y29uZHModDApOworICAgICAgcmV0dXJuIHt0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6U0tJUFBF
RCwgcHJlLCB0cmFucywgcG9zdH07CisgICAgfQorCisgICAgLy8gVGhlIGNpdmlsIHRpbWUgd2Fz
IGFtYmlndW91cyAocHJlIDwgdHJhbnMgPD0gcG9zdCkuCisgICAgY29uc3QgdGltZV9wb2ludDxz
ZWNvbmRzPiBwcmUgPSBGcm9tVW5peFNlY29uZHModDApOworICAgIGNvbnN0IHRpbWVfcG9pbnQ8
c2Vjb25kcz4gcG9zdCA9IEZyb21Vbml4U2Vjb25kcyh0MSk7CisgICAgcmV0dXJuIHt0aW1lX3pv
bmU6OmNpdmlsX2xvb2t1cDo6UkVQRUFURUQsIHByZSwgdHJhbnMsIHBvc3R9OworICB9CisKKyAg
Ly8gbWFrZV90aW1lKCkgZmFpbGVkIHNvbWVob3cgc28gd2Ugc2F0dXJhdGUgdGhlIHJlc3VsdC4K
KyAgY29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiB0cCA9IChjcyA8IGNpdmlsX3NlY29uZCgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGltZV9wb2ludDxzZWNvbmRz
Pjo6bWluKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRpbWVfcG9p
bnQ8c2Vjb25kcz46Om1heCgpOworICByZXR1cm4ge3RpbWVfem9uZTo6Y2l2aWxfbG9va3VwOjpV
TklRVUUsIHRwLCB0cCwgdHB9OwogfQogCi1ib29sIFRpbWVab25lTGliQzo6TmV4dFRyYW5zaXRp
b24oY29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiYgdHAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGltZV96b25lOjpjaXZpbF90cmFuc2l0aW9uKiB0cmFucykgY29uc3Qgewor
Ym9vbCBUaW1lWm9uZUxpYkM6Ok5leHRUcmFuc2l0aW9uKGNvbnN0IHRpbWVfcG9pbnQ8c2Vjb25k
cz4mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVfem9uZTo6Y2l2aWxf
dHJhbnNpdGlvbiopIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRpbWVab25l
TGliQzo6UHJldlRyYW5zaXRpb24oY29uc3QgdGltZV9wb2ludDxzZWNvbmRzPiYgdHAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV96b25lOjpjaXZpbF90cmFuc2l0aW9u
KiB0cmFucykgY29uc3QgeworYm9vbCBUaW1lWm9uZUxpYkM6OlByZXZUcmFuc2l0aW9uKGNvbnN0
IHRpbWVfcG9pbnQ8c2Vjb25kcz4mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVfem9uZTo6Y2l2aWxfdHJhbnNpdGlvbiopIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9s
aWJjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9saWJjLmgKaW5k
ZXggNGU0MGM2MWFiMjQzZDJlM2M3N2M2MmY3MWY0MTA3Zjk5NmUxZDhlNi4uMGQxOGU5YTdmM2Rj
MmI0OThhNzQ5MTA0MDhjODliNGZhNjk4MDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbGliYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei9zcmMvdGltZV96b25lX2xpYmMuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96
b25lX2xvb2t1cC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2xv
b2t1cC5jYwppbmRleCBmMmQxNTFlNGQ1ZTU2MmEwMGNkNzNkYTFlYzBkOTc5OWUxN2Y3Mjc3Li4z
YzUzZGQxYWRlOWE0YjAxNjE5ODZhMDk2MDNkM2U4YmU2Y2EyMzgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9sb29rdXAuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfbG9va3VwLmNjCkBAIC00LDcgKzQsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTYsMTAgKzE2LDE2IEBACiAKICNpZiBkZWZp
bmVkKF9fQU5EUk9JRF9fKQogI2luY2x1ZGUgPHN5cy9zeXN0ZW1fcHJvcGVydGllcy5oPgotI2lm
IF9fQU5EUk9JRF9BUElfXyA+PSAyMQorI2lmIGRlZmluZWQoX19BTkRST0lEX0FQSV9fKSAmJiBf
X0FORFJPSURfQVBJX18gPj0gMjEKICNpbmNsdWRlIDxkbGZjbi5oPgogI2VuZGlmCiAjZW5kaWYK
KworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGVGlt
ZVpvbmUuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisjZW5kaWYKKwogI2luY2x1ZGUgPGNzdGRsaWI+
CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxzdHJpbmc+CkBAIC0zMSw3ICszNyw3IEBA
IG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSB0aW1lX2ludGVybmFsIHsKIG5hbWVzcGFjZSBj
Y3R6IHsKIAotI2lmIGRlZmluZWQoX19BTkRST0lEX18pICYmIF9fQU5EUk9JRF9BUElfXyA+PSAy
MQorI2lmIGRlZmluZWQoX19BTkRST0lEX18pICYmIGRlZmluZWQoX19BTkRST0lEX0FQSV9fKSAm
JiBfX0FORFJPSURfQVBJX18gPj0gMjEKIG5hbWVzcGFjZSB7CiAvLyBBbmRyb2lkICdMJyByZW1v
dmVzIF9fc3lzdGVtX3Byb3BlcnR5X2dldCgpIGZyb20gdGhlIE5ESywgaG93ZXZlcgogLy8gaXQg
aXMgc3RpbGwgYSBoaWRkZW4gc3ltYm9sIGluIGxpYmMgc28gd2UgdXNlIGRsc3ltKCkgdG8gYWNj
ZXNzIGl0LgpAQCAtMTE2LDYgKzEyMiwyNSBAQCB0aW1lX3pvbmUgZml4ZWRfdGltZV96b25lKGNv
bnN0IHNlY29uZHMmIG9mZnNldCkgewogCiB0aW1lX3pvbmUgbG9jYWxfdGltZV96b25lKCkgewog
ICBjb25zdCBjaGFyKiB6b25lID0gIjpsb2NhbHRpbWUiOworI2lmIGRlZmluZWQoX19BTkRST0lE
X18pCisgIGNoYXIgc3lzcHJvcFtQUk9QX1ZBTFVFX01BWF07CisgIGlmIChfX3N5c3RlbV9wcm9w
ZXJ0eV9nZXQoInBlcnNpc3Quc3lzLnRpbWV6b25lIiwgc3lzcHJvcCkgPiAwKSB7CisgICAgem9u
ZSA9IHN5c3Byb3A7CisgIH0KKyNlbmRpZgorI2lmIGRlZmluZWQoX19BUFBMRV9fKQorICBzdGQ6
OnZlY3RvcjxjaGFyPiBidWZmZXI7CisgIENGVGltZVpvbmVSZWYgdHpfZGVmYXVsdCA9IENGVGlt
ZVpvbmVDb3B5RGVmYXVsdCgpOworICBpZiAoQ0ZTdHJpbmdSZWYgdHpfbmFtZSA9IENGVGltZVpv
bmVHZXROYW1lKHR6X2RlZmF1bHQpKSB7CisgICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9
IGtDRlN0cmluZ0VuY29kaW5nVVRGODsKKyAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0
TGVuZ3RoKHR6X25hbWUpOworICAgIGJ1ZmZlci5yZXNpemUoQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6
ZUZvckVuY29kaW5nKGxlbmd0aCwgZW5jb2RpbmcpICsgMSk7CisgICAgaWYgKENGU3RyaW5nR2V0
Q1N0cmluZyh0el9uYW1lLCAmYnVmZmVyWzBdLCBidWZmZXIuc2l6ZSgpLCBlbmNvZGluZykpIHsK
KyAgICAgIHpvbmUgPSAmYnVmZmVyWzBdOworICAgIH0KKyAgfQorICBDRlJlbGVhc2UodHpfZGVm
YXVsdCk7CisjZW5kaWYKIAogICAvLyBBbGxvdyAke1RafSB0byBvdmVycmlkZSB0byBkZWZhdWx0
IHpvbmUuCiAgIGNoYXIqIHR6X2VudiA9IG51bGxwdHI7CkBAIC0xMjMsMTIgKzE0OCw2IEBAIHRp
bWVfem9uZSBsb2NhbF90aW1lX3pvbmUoKSB7CiAgIF9kdXBlbnZfcygmdHpfZW52LCBudWxscHRy
LCAiVFoiKTsKICNlbHNlCiAgIHR6X2VudiA9IHN0ZDo6Z2V0ZW52KCJUWiIpOwotI2VuZGlmCi0j
aWYgZGVmaW5lZChfX0FORFJPSURfXykKLSAgY2hhciBzeXNwcm9wW1BST1BfVkFMVUVfTUFYXTsK
LSAgaWYgKHR6X2VudiA9PSBudWxscHRyKQotICAgIGlmIChfX3N5c3RlbV9wcm9wZXJ0eV9nZXQo
InBlcnNpc3Quc3lzLnRpbWV6b25lIiwgc3lzcHJvcCkgPiAwKQotICAgICAgdHpfZW52ID0gc3lz
cHJvcDsKICNlbmRpZgogICBpZiAodHpfZW52KSB6b25lID0gdHpfZW52OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9sb29rdXBfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2xvb2t1cF90ZXN0LmNjCmlu
ZGV4IDU1MTI5MmZiNTVlMDg4MmQyYmJlYjExNzgyODk1NDBmMmU5OTg0MWMuLjQyZGQ2ZDU1MTJm
NDU4OTdhN2QwMDNiMzBmNmFhYzRmYTY2ODg1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2xvb2t1cF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2xvb2t1cF90ZXN0LmNjCkBAIC00LDcgKzQsNyBA
QAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
ICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTYsNyArMTYsOSBAQAogCiAjaW5jbHVkZSA8
Y2hyb25vPgogI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRl
IDxmdXR1cmU+CisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRl
IDx0aHJlYWQ+CiAjaW5jbHVkZSA8dmVjdG9yPgpAQCAtMzM1LDYgKzMzNyw3IEBAIGNvbnN0IGNo
YXIqIGNvbnN0IGtUaW1lWm9uZU5hbWVzW10gPSB7CiAgICJBc2lhL1BvbnRpYW5hayIsCiAgICJB
c2lhL1B5b25neWFuZyIsCiAgICJBc2lhL1FhdGFyIiwKKyAgIkFzaWEvUW9zdGFuYXkiLAogICAi
QXNpYS9ReXp5bG9yZGEiLAogICAiQXNpYS9SYW5nb29uIiwKICAgIkFzaWEvUml5YWRoIiwKQEAg
LTY2NCw2ICs2NjcsNyBAQCBpbnQgVmVyc2lvbkNtcCh0aW1lX3pvbmUgdHosIGNvbnN0IHN0ZDo6
c3RyaW5nJiB0YXJnZXQpIHsKIAogfSAgLy8gbmFtZXNwYWNlCiAKKyNpZiAhZGVmaW5lZChfX0VN
U0NSSVBURU5fXykKIFRFU1QoVGltZVpvbmVzLCBMb2FkWm9uZXNDb25jdXJyZW50bHkpIHsKICAg
c3RkOjpwcm9taXNlPHZvaWQ+IHJlYWR5X3Byb21pc2U7CiAgIHN0ZDo6c2hhcmVkX2Z1dHVyZTx2
b2lkPiByZWFkeV9mdXR1cmUocmVhZHlfcHJvbWlzZS5nZXRfZnV0dXJlKCkpOwpAQCAtNzExLDYg
KzcxNSw3IEBAIFRFU1QoVGltZVpvbmVzLCBMb2FkWm9uZXNDb25jdXJyZW50bHkpIHsKICAgfQog
ICBFWFBFQ1RfTEUoZmFpbHVyZXMuc2l6ZSgpLCBtYXhfZmFpbHVyZXMpIDw8IHRlc3Rpbmc6OlBy
aW50VG9TdHJpbmcoZmFpbHVyZXMpOwogfQorI2VuZGlmCiAKIFRFU1QoVGltZVpvbmUsIE5hbWVk
VGltZVpvbmVzKSB7CiAgIGNvbnN0IHRpbWVfem9uZSB1dGMgPSB1dGNfdGltZV96b25lKCk7CkBA
IC04MzEsNyArODM2LDcgQEAgVEVTVChCcmVha1RpbWUsIExvY2FsVGltZUluVVRDKSB7CiAgIGNv
bnN0IHRpbWVfem9uZSB0eiA9IHV0Y190aW1lX3pvbmUoKTsKICAgY29uc3QgYXV0byB0cCA9IGNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdCgwKTsKICAgRXhwZWN0VGltZSh0cCwgdHos
IDE5NzAsIDEsIDEsIDAsIDAsIDAsIDAsIGZhbHNlLCAiVVRDIik7Ci0gIEVYUEVDVF9FUSh3ZWVr
ZGF5Ojp0aHVyc2RheSwgZ2V0X3dlZWtkYXkoY2l2aWxfZGF5KGNvbnZlcnQodHAsIHR6KSkpKTsK
KyAgRVhQRUNUX0VRKHdlZWtkYXk6OnRodXJzZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRwLCB0
eikpKTsKIH0KIAogVEVTVChCcmVha1RpbWUsIExvY2FsVGltZUluVVRDVW5hbGlnbmVkKSB7CkBA
IC04MzksNyArODQ0LDcgQEAgVEVTVChCcmVha1RpbWUsIExvY2FsVGltZUluVVRDVW5hbGlnbmVk
KSB7CiAgIGNvbnN0IGF1dG8gdHAgPQogICAgICAgY2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21f
dGltZV90KDApIC0gY2hyb25vOjptaWxsaXNlY29uZHMoNTAwKTsKICAgRXhwZWN0VGltZSh0cCwg
dHosIDE5NjksIDEyLCAzMSwgMjMsIDU5LCA1OSwgMCwgZmFsc2UsICJVVEMiKTsKLSAgRVhQRUNU
X0VRKHdlZWtkYXk6OndlZG5lc2RheSwgZ2V0X3dlZWtkYXkoY2l2aWxfZGF5KGNvbnZlcnQodHAs
IHR6KSkpKTsKKyAgRVhQRUNUX0VRKHdlZWtkYXk6OndlZG5lc2RheSwgZ2V0X3dlZWtkYXkoY29u
dmVydCh0cCwgdHopKSk7CiB9CiAKIFRFU1QoQnJlYWtUaW1lLCBMb2NhbFRpbWVQb3NpeCkgewpA
QCAtODQ3LDcgKzg1Miw3IEBAIFRFU1QoQnJlYWtUaW1lLCBMb2NhbFRpbWVQb3NpeCkgewogICBj
b25zdCB0aW1lX3pvbmUgdHogPSB1dGNfdGltZV96b25lKCk7CiAgIGNvbnN0IGF1dG8gdHAgPSBj
aHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoNTM2NDU3NTk5KTsKICAgRXhwZWN0VGlt
ZSh0cCwgdHosIDE5ODYsIDEyLCAzMSwgMjMsIDU5LCA1OSwgMCwgZmFsc2UsICJVVEMiKTsKLSAg
RVhQRUNUX0VRKHdlZWtkYXk6OndlZG5lc2RheSwgZ2V0X3dlZWtkYXkoY2l2aWxfZGF5KGNvbnZl
cnQodHAsIHR6KSkpKTsKKyAgRVhQRUNUX0VRKHdlZWtkYXk6OndlZG5lc2RheSwgZ2V0X3dlZWtk
YXkoY29udmVydCh0cCwgdHopKSk7CiB9CiAKIFRFU1QoVGltZVpvbmVJbXBsLCBMb2NhbFRpbWVJ
bkZpeGVkKSB7CkBAIC04NTcsMjggKzg2MiwyOCBAQCBURVNUKFRpbWVab25lSW1wbCwgTG9jYWxU
aW1lSW5GaXhlZCkgewogICBjb25zdCBhdXRvIHRwID0gY2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZy
b21fdGltZV90KDApOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMTk2OSwgMTIsIDMxLCAxNSwgMjYs
IDEzLCBvZmZzZXQuY291bnQoKSwgZmFsc2UsCiAgICAgICAgICAgICAgIi0wODMzNDciKTsKLSAg
RVhQRUNUX0VRKHdlZWtkYXk6OndlZG5lc2RheSwgZ2V0X3dlZWtkYXkoY2l2aWxfZGF5KGNvbnZl
cnQodHAsIHR6KSkpKTsKKyAgRVhQRUNUX0VRKHdlZWtkYXk6OndlZG5lc2RheSwgZ2V0X3dlZWtk
YXkoY29udmVydCh0cCwgdHopKSk7CiB9CiAKIFRFU1QoQnJlYWtUaW1lLCBMb2NhbFRpbWVJbk5l
d1lvcmspIHsKICAgY29uc3QgdGltZV96b25lIHR6ID0gTG9hZFpvbmUoIkFtZXJpY2EvTmV3X1lv
cmsiKTsKICAgY29uc3QgYXV0byB0cCA9IGNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVf
dCg0NSk7CiAgIEV4cGVjdFRpbWUodHAsIHR6LCAxOTY5LCAxMiwgMzEsIDE5LCAwLCA0NSwgLTUg
KiA2MCAqIDYwLCBmYWxzZSwgIkVTVCIpOwotICBFWFBFQ1RfRVEod2Vla2RheTo6d2VkbmVzZGF5
LCBnZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBFQ1RfRVEo
d2Vla2RheTo6d2VkbmVzZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRwLCB0eikpKTsKIH0KIAog
VEVTVChCcmVha1RpbWUsIExvY2FsVGltZUluTVRWKSB7CiAgIGNvbnN0IHRpbWVfem9uZSB0eiA9
IExvYWRab25lKCJBbWVyaWNhL0xvc19BbmdlbGVzIik7CiAgIGNvbnN0IGF1dG8gdHAgPSBjaHJv
bm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoMTM4MDg1NTcyOSk7CiAgIEV4cGVjdFRpbWUo
dHAsIHR6LCAyMDEzLCAxMCwgMywgMjAsIDIsIDksIC03ICogNjAgKiA2MCwgdHJ1ZSwgIlBEVCIp
OwotICBFWFBFQ1RfRVEod2Vla2RheTo6dGh1cnNkYXksIGdldF93ZWVrZGF5KGNpdmlsX2RheShj
b252ZXJ0KHRwLCB0eikpKSk7CisgIEVYUEVDVF9FUSh3ZWVrZGF5Ojp0aHVyc2RheSwgZ2V0X3dl
ZWtkYXkoY29udmVydCh0cCwgdHopKSk7CiB9CiAKIFRFU1QoQnJlYWtUaW1lLCBMb2NhbFRpbWVJ
blN5ZG5leSkgewogICBjb25zdCB0aW1lX3pvbmUgdHogPSBMb2FkWm9uZSgiQXVzdHJhbGlhL1N5
ZG5leSIpOwogICBjb25zdCBhdXRvIHRwID0gY2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGlt
ZV90KDkwKTsKICAgRXhwZWN0VGltZSh0cCwgdHosIDE5NzAsIDEsIDEsIDEwLCAxLCAzMCwgMTAg
KiA2MCAqIDYwLCBmYWxzZSwgIkFFU1QiKTsKLSAgRVhQRUNUX0VRKHdlZWtkYXk6OnRodXJzZGF5
LCBnZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBFQ1RfRVEo
d2Vla2RheTo6dGh1cnNkYXksIGdldF93ZWVrZGF5KGNvbnZlcnQodHAsIHR6KSkpOwogfQogCiBU
RVNUKE1ha2VUaW1lLCBUaW1lUG9pbnRSZXNvbHV0aW9uKSB7CkBAIC05MjUsNyArOTMwLDcgQEAg
VEVTVChNYWtlVGltZSwgTm9ybWFsaXphdGlvbikgewogICBFWFBFQ1RfRVEodHAsIGNvbnZlcnQo
Y2l2aWxfc2Vjb25kKDIwMDksIDIsIDEzLCAxOCwgMzAsIDkwKSwgdHopKTsgICAvLyBzZWNvbmQK
IH0KIAotLy8gTk9URTogUnVuIHRoaXMgd2l0aCAtLWNvcHQ9LWZ0cmFwdiB0byBkZXRlY3Qgb3Zl
cmZsb3cgcHJvYmxlbXMuCisvLyBOT1RFOiBSdW4gdGhpcyB3aXRoIC1mdHJhcHYgdG8gZGV0ZWN0
IG92ZXJmbG93IHByb2JsZW1zLgogVEVTVChNYWtlVGltZSwgU3lzU2Vjb25kc0xpbWl0cykgewog
ICBjb25zdCBjaGFyIFJGQzMzMzlbXSA9ICAiJVktJW0tJWRUJUg6JU06JVMlRXoiOwogICBjb25z
dCB0aW1lX3pvbmUgdXRjID0gdXRjX3RpbWVfem9uZSgpOwpAQCAtOTkwLDYgKzk5NSwxMDYgQEAg
VEVTVChNYWtlVGltZSwgU3lzU2Vjb25kc0xpbWl0cykgewogICBFWFBFQ1RfRVEodGltZV9wb2lu
dDxhYnNsOjp0aW1lX2ludGVybmFsOjpjY3R6OjpzZWNvbmRzPjo6bWluKCksIHRwKTsKICAgdHAg
PSBjb252ZXJ0KGNpdmlsX3NlY29uZDo6bWluKCksIHdlc3QpOwogICBFWFBFQ1RfRVEodGltZV9w
b2ludDxhYnNsOjp0aW1lX2ludGVybmFsOjpjY3R6OjpzZWNvbmRzPjo6bWluKCksIHRwKTsKKwor
ICAvLyBTb21lIHNpbWlsYXIgY2hlY2tzIGZvciB0aGUgImxpYmMiIHRpbWUtem9uZSBpbXBsZW1l
bnRhdGlvbi4KKyAgaWYgKHNpemVvZihzdGQ6OnRpbWVfdCkgPj0gOCkgeworICAgIC8vIENoZWNr
cyB0aGF0ICJ0bV95ZWFyICsgMTkwMCIsIGFzIHVzZWQgYnkgdGhlICJsaWJjIiBpbXBsZW1lbnRh
dGlvbiwKKyAgICAvLyBjYW4gcHJvZHVjZSB5ZWFyIHZhbHVlcyBiZXlvbmQgdGhlIHJhbmdlIG9u
IGFuIGludCB3aXRob3V0IG92ZXJmbG93LgorI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVk
KF9XSU42NCkKKyAgICAvLyBsb2NhbHRpbWVfcygpIGFuZCBnbXRpbWVfcygpIGRvbid0IGJlbGll
dmUgaW4geWVhcnMgb3V0c2lkZSBbMTk3MDozMDAwXS4KKyNlbHNlCisgICAgY29uc3QgdGltZV96
b25lIHV0YyA9IExvYWRab25lKCJsaWJjOlVUQyIpOworICAgIGNvbnN0IHllYXJfdCBtYXhfdG1f
eWVhciA9IHllYXJfdHtzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpfSArIDE5MDA7Cisg
ICAgdHAgPSBjb252ZXJ0KGNpdmlsX3NlY29uZChtYXhfdG1feWVhciwgMTIsIDMxLCAyMywgNTks
IDU5KSwgdXRjKTsKKyAgICBFWFBFQ1RfRVEoIjIxNDc0ODU1NDctMTItMzFUMjM6NTk6NTkrMDA6
MDAiLCBmb3JtYXQoUkZDMzMzOSwgdHAsIHV0YykpOworICAgIGNvbnN0IHllYXJfdCBtaW5fdG1f
eWVhciA9IHllYXJfdHtzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpfSArIDE5MDA7Cisg
ICAgdHAgPSBjb252ZXJ0KGNpdmlsX3NlY29uZChtaW5fdG1feWVhciwgMSwgMSwgMCwgMCwgMCks
IHV0Yyk7CisgICAgRVhQRUNUX0VRKCItMjE0NzQ4MTc0OC0wMS0wMVQwMDowMDowMCswMDowMCIs
IGZvcm1hdChSRkMzMzM5LCB0cCwgdXRjKSk7CisjZW5kaWYKKyAgfQorfQorCitURVNUKE1ha2VU
aW1lLCBMb2NhbFRpbWVMaWJDKSB7CisgIC8vIENoZWNrcyB0aGF0IGNjdHogYW5kIGxpYmMgYWdy
ZWUgb24gdHJhbnNpdGlvbiBwb2ludHMgaW4gWzE5NzA6MjAzN10uCisgIC8vCisgIC8vIFdlIGxp
bWl0IHRoaXMgdGVzdCBjYXNlIHRvIGVudmlyb25tZW50cyB3aGVyZToKKyAgLy8gIDEpIHdlIGtu
b3cgaG93IHRvIGNoYW5nZSB0aGUgdGltZSB6b25lIHVzZWQgYnkgbG9jYWx0aW1lKCkvbWt0aW1l
KCksCisgIC8vICAyKSBjY3R6IGFuZCBsb2NhbHRpbWUoKS9ta3RpbWUoKSB3aWxsIHVzZSBzaW1p
bGFyLWVub3VnaCB0emRhdGEsIGFuZAorICAvLyAgMykgd2UgaGF2ZSBzb21lIGlkZWEgYWJvdXQg
aG93IG1rdGltZSgpIGJlaGF2ZXMgZHVyaW5nIHRyYW5zaXRpb25zLgorI2lmIGRlZmluZWQoX19s
aW51eF9fKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKKyAgY29uc3QgY2hhciogY29uc3QgZXAg
PSBnZXRlbnYoIlRaIik7CisgIHN0ZDo6c3RyaW5nIHR6X25hbWUgPSAoZXAgIT0gbnVsbHB0cikg
PyBlcCA6ICIiOworICBmb3IgKGNvbnN0IGNoYXIqIGNvbnN0KiBucCA9IGtUaW1lWm9uZU5hbWVz
OyAqbnAgIT0gbnVsbHB0cjsgKytucCkgeworICAgIEFTU0VSVF9FUSgwLCBzZXRlbnYoIlRaIiwg
Km5wLCAxKSk7ICAvLyBjaGFuZ2Ugd2hhdCAibG9jYWx0aW1lIiBtZWFucworICAgIGNvbnN0IGF1
dG8gemkgPSBsb2NhbF90aW1lX3pvbmUoKTsKKyAgICBjb25zdCBhdXRvIGxjID0gTG9hZFpvbmUo
ImxpYmM6bG9jYWx0aW1lIik7CisgICAgdGltZV96b25lOjpjaXZpbF90cmFuc2l0aW9uIHRyYW5z
OworICAgIGZvciAoYXV0byB0cCA9IHppLmxvb2t1cChjaXZpbF9zZWNvbmQoKSkudHJhbnM7Cisg
ICAgICAgICB6aS5uZXh0X3RyYW5zaXRpb24odHAsICZ0cmFucyk7CisgICAgICAgICB0cCA9IHpp
Lmxvb2t1cCh0cmFucy50bykudHJhbnMpIHsKKyAgICAgIGNvbnN0IGF1dG8gZmNsID0gemkubG9v
a3VwKHRyYW5zLmZyb20pOworICAgICAgY29uc3QgYXV0byB0Y2wgPSB6aS5sb29rdXAodHJhbnMu
dG8pOworICAgICAgY2l2aWxfc2Vjb25kIGNzOyAgLy8gY29tcGFyZSBjcyBpbiB6aSBhbmQgbGMK
KyAgICAgIGlmIChmY2wua2luZCA9PSB0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6VU5JUVVFKSB7
CisgICAgICAgIGlmICh0Y2wua2luZCA9PSB0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6VU5JUVVF
KSB7CisgICAgICAgICAgLy8gQm90aCB1bmlxdWU7IG11c3QgYmUgYW4gaXNfZHN0IG9yIGFiYnIg
Y2hhbmdlLgorICAgICAgICAgIEFTU0VSVF9FUSh0cmFucy5mcm9tLCB0cmFucy50byk7CisgICAg
ICAgICAgY29uc3QgYXV0byB0cmFucyA9IGZjbC50cmFuczsKKyAgICAgICAgICBjb25zdCBhdXRv
IHRhbCA9IHppLmxvb2t1cCh0cmFucyk7CisgICAgICAgICAgY29uc3QgYXV0byB0cHJldiA9IHRy
YW5zIC0gYWJzbDo6dGltZV9pbnRlcm5hbDo6Y2N0ejo6c2Vjb25kcygxKTsKKyAgICAgICAgICBj
b25zdCBhdXRvIHBhbCA9IHppLmxvb2t1cCh0cHJldik7CisgICAgICAgICAgaWYgKHBhbC5pc19k
c3QgPT0gdGFsLmlzX2RzdCkgeworICAgICAgICAgICAgQVNTRVJUX1NUUk5FKHBhbC5hYmJyLCB0
YWwuYWJicik7CisgICAgICAgICAgfQorICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVF9FUSh0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6UkVQRUFURUQsIHRjbC5r
aW5kKTsKKyAgICAgICAgY3MgPSB0cmFucy50bzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEFT
U0VSVF9FUSh0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6VU5JUVVFLCB0Y2wua2luZCk7CisgICAg
ICAgIEFTU0VSVF9FUSh0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6U0tJUFBFRCwgZmNsLmtpbmQp
OworICAgICAgICBjcyA9IHRyYW5zLmZyb207CisgICAgICB9CisgICAgICBpZiAoY3MueWVhcigp
ID4gMjAzNykgYnJlYWs7ICAvLyBsaW1pdCB0ZXN0IHRpbWUgKGFuZCB0byAzMi1iaXQgdGltZV90
KQorICAgICAgY29uc3QgYXV0byBjbF96aSA9IHppLmxvb2t1cChjcyk7CisgICAgICBpZiAoemku
bG9va3VwKGNsX3ppLnByZSkuaXNfZHN0ID09IHppLmxvb2t1cChjbF96aS5wb3N0KS5pc19kc3Qp
IHsKKyAgICAgICAgLy8gVGhlICJsaWJjIiBpbXBsZW1lbnRhdGlvbiBjYW5ub3QgY29ycmVjdGx5
IGNsYXNzaWZ5IHRyYW5zaXRpb25zCisgICAgICAgIC8vIHRoYXQgZG9uJ3QgY2hhbmdlIHRoZSAi
dG1faXNkc3QiIGZsYWcuICBJbiBFdXJvcGUvVm9sZ29ncmFkLCBmb3IKKyAgICAgICAgLy8gZXhh
bXBsZSwgdGhlcmUgaXMgYSBTS0lQUEVEIHRyYW5zaXRpb24gZnJvbSArMDMgdG8gKzA0IHdpdGgg
ZHN0PUYKKyAgICAgICAgLy8gb24gYm90aCBzaWRlcyAuLi4KKyAgICAgICAgLy8gICAxNTQwNjgx
MTk5ID0gMjAxOC0xMC0yOCAwMTo1OTo1OSArMDM6MDA6MDAgW2RzdD1GIG9mZj0xMDgwMF0KKyAg
ICAgICAgLy8gICAxNTQwNjgxMjAwID0gMjAxOC0xMC0yOCAwMzowMDowMCArMDQ6MDA6MDAgW2Rz
dD1GIG9mZj0xNDQwMF0KKyAgICAgICAgLy8gYnV0IHN0ZDo6bWt0aW1lKDIwMTgtMTAtMjggMDI6
MDA6MDAsIHRtX2lzZHN0PTApIGZhaWxzLCB1bmxpa2UsCisgICAgICAgIC8vIHNheSwgdGhlIHNp
bWlsYXIgRXVyb3BlL0NoaXNpbmF1IHRyYW5zaXRpb24gZnJvbSArMDIgdG8gKzAzIC4uLgorICAg
ICAgICAvLyAgIDE1MjE5MzU5OTkgPSAyMDE4LTAzLTI1IDAxOjU5OjU5ICswMjowMDowMCBbZHN0
PUYgb2ZmPTcyMDBdCisgICAgICAgIC8vICAgMTUyMTkzNjAwMCA9IDIwMTgtMDMtMjUgMDM6MDA6
MDAgKzAzOjAwOjAwIFtkc3Q9VCBvZmY9MTA4MDBdCisgICAgICAgIC8vIHdoZXJlIHN0ZDo6bWt0
aW1lKDIwMTgtMDMtMjUgMDI6MDA6MDAsIHRtX2lzZHN0PTApIHN1Y2NlZWRzIGFuZAorICAgICAg
ICAvLyByZXR1cm5zIDE1MjE5MzYwMDAuCisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAg
ICAgaWYgKGNzID09IGNpdmlsX3NlY29uZCgyMDM3LCAxMCwgNCwgMiwgMCwgMCkpIHsKKyAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgdHpuYW1lID0gKm5wOworICAgICAgICBpZiAodHpuYW1lID09
ICJBZnJpY2EvQ2FzYWJsYW5jYSIgfHwgdHpuYW1lID09ICJBZnJpY2EvRWxfQWFpdW4iKSB7Cisg
ICAgICAgICAgLy8gVGhlICJsaWJjIiBpbXBsZW1lbnRhdGlvbiBnZXRzIHRoaXMgdHJhbnNpdGlv
biB3cm9uZyAoYXQgbGVhc3QKKyAgICAgICAgICAvLyB1bnRpbCAyMDE4ZyB3aGVuIGl0IHdhcyBy
ZW1vdmVkKSwgcmV0dXJuaW5nIGFuIG9mZnNldCBvZiAzNjAwCisgICAgICAgICAgLy8gaW5zdGVh
ZCBvZiAwLiAgVE9ETzogUmV2ZXJ0IHRoaXMgd2hlbiAyMDE4ZyBpcyB1YmlxdWl0b3VzLgorICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICB9CisgICAgICBjb25zdCBhdXRvIGNs
X2xjID0gbGMubG9va3VwKGNzKTsKKyAgICAgIFNDT1BFRF9UUkFDRSh0ZXN0aW5nOjpNZXNzYWdl
KCkgPDwgIkZvciAiIDw8IGNzIDw8ICIgaW4gIiA8PCAqbnApOworICAgICAgRVhQRUNUX0VRKGNs
X3ppLmtpbmQsIGNsX2xjLmtpbmQpOworICAgICAgRVhQRUNUX0VRKGNsX3ppLnByZSwgY2xfbGMu
cHJlKTsKKyAgICAgIEVYUEVDVF9FUShjbF96aS50cmFucywgY2xfbGMudHJhbnMpOworICAgICAg
RVhQRUNUX0VRKGNsX3ppLnBvc3QsIGNsX2xjLnBvc3QpOworICAgIH0KKyAgfQorICBpZiAoZXAg
PT0gbnVsbHB0cikgeworICAgIEFTU0VSVF9FUSgwLCB1bnNldGVudigiVFoiKSk7CisgIH0gZWxz
ZSB7CisgICAgQVNTRVJUX0VRKDAsIHNldGVudigiVFoiLCB0el9uYW1lLmNfc3RyKCksIDEpKTsK
KyAgfQorI2VuZGlmCiB9CiAKIFRFU1QoTmV4dFRyYW5zaXRpb24sIFVUQykgewpAQCAtMTE2OSwx
MCArMTI3NCwxMCBAQCBURVNUKFRpbWVab25lRWRnZUNhc2UsIFBhY2lmaWNBcGlhKSB7CiAgIC8v
ICAgMTMyNTIzOTIwMCA9PSBTYXQsIDMxIERlYyAyMDExIDAwOjAwOjAwICsxNDAwICgrMTQpCiAg
IGF1dG8gdHAgPSBjb252ZXJ0KGNpdmlsX3NlY29uZCgyMDExLCAxMiwgMjksIDIzLCA1OSwgNTkp
LCB0eik7CiAgIEV4cGVjdFRpbWUodHAsIHR6LCAyMDExLCAxMiwgMjksIDIzLCA1OSwgNTksIC0x
MCAqIDM2MDAsIHRydWUsICItMTAiKTsKLSAgRVhQRUNUX0VRKDM2MywgZ2V0X3llYXJkYXkoY2l2
aWxfZGF5KGNvbnZlcnQodHAsIHR6KSkpKTsKKyAgRVhQRUNUX0VRKDM2MywgZ2V0X3llYXJkYXko
Y29udmVydCh0cCwgdHopKSk7CiAgIHRwICs9IGFic2w6OnRpbWVfaW50ZXJuYWw6OmNjdHo6OnNl
Y29uZHMoMSk7CiAgIEV4cGVjdFRpbWUodHAsIHR6LCAyMDExLCAxMiwgMzEsIDAsIDAsIDAsIDE0
ICogMzYwMCwgdHJ1ZSwgIisxNCIpOwotICBFWFBFQ1RfRVEoMzY1LCBnZXRfeWVhcmRheShjaXZp
bF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBFQ1RfRVEoMzY1LCBnZXRfeWVhcmRheShj
b252ZXJ0KHRwLCB0eikpKTsKIH0KIAogVEVTVChUaW1lWm9uZUVkZ2VDYXNlLCBBZnJpY2FDYWly
bykgewpAQCAtMTI5NCwxMCArMTM5OSwxMCBAQCBURVNUKFRpbWVab25lRWRnZUNhc2UsIE5lZ2F0
aXZlWWVhcikgewogICBjb25zdCB0aW1lX3pvbmUgdHogPSB1dGNfdGltZV96b25lKCk7CiAgIGF1
dG8gdHAgPSBjb252ZXJ0KGNpdmlsX3NlY29uZCgwLCAxLCAxLCAwLCAwLCAwKSwgdHopOwogICBF
eHBlY3RUaW1lKHRwLCB0eiwgMCwgMSwgMSwgMCwgMCwgMCwgMCAqIDM2MDAsIGZhbHNlLCAiVVRD
Iik7Ci0gIEVYUEVDVF9FUSh3ZWVrZGF5OjpzYXR1cmRheSwgZ2V0X3dlZWtkYXkoY2l2aWxfZGF5
KGNvbnZlcnQodHAsIHR6KSkpKTsKKyAgRVhQRUNUX0VRKHdlZWtkYXk6OnNhdHVyZGF5LCBnZXRf
d2Vla2RheShjb252ZXJ0KHRwLCB0eikpKTsKICAgdHAgLT0gYWJzbDo6dGltZV9pbnRlcm5hbDo6
Y2N0ejo6c2Vjb25kcygxKTsKICAgRXhwZWN0VGltZSh0cCwgdHosIC0xLCAxMiwgMzEsIDIzLCA1
OSwgNTksIDAgKiAzNjAwLCBmYWxzZSwgIlVUQyIpOwotICBFWFBFQ1RfRVEod2Vla2RheTo6ZnJp
ZGF5LCBnZXRfd2Vla2RheShjaXZpbF9kYXkoY29udmVydCh0cCwgdHopKSkpOworICBFWFBFQ1Rf
RVEod2Vla2RheTo6ZnJpZGF5LCBnZXRfd2Vla2RheShjb252ZXJ0KHRwLCB0eikpKTsKIH0KIAog
VEVTVChUaW1lWm9uZUVkZ2VDYXNlLCBVVEMzMmJpdExpbWl0KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX3Bvc2l4LmNjCmluZGV4IDc1YWQ4YmNiYTkzYTQ5
YWYzOTY5ZTUyM2Y1YzdlNDdlMTZhNTg5YjkuLjAzODc0MGUxZDY3YmIxYjhmYTMwZGVkNmY5NTk4
ZWJiZmZkODI5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGlt
ZV96b25lX3Bvc2l4LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96
b25lX3Bvc2l4LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
MTAwLDkgKzEwMCw5IEBAIGNvbnN0IGNoYXIqIFBhcnNlRGF0ZVRpbWUoY29uc3QgY2hhciogcCwg
UG9zaXhUcmFuc2l0aW9uKiByZXMpIHsKICAgICAgICAgICBpbnQgd2Vla2RheSA9IDA7CiAgICAg
ICAgICAgaWYgKChwID0gUGFyc2VJbnQocCArIDEsIDAsIDYsICZ3ZWVrZGF5KSkgIT0gbnVsbHB0
cikgewogICAgICAgICAgICAgcmVzLT5kYXRlLmZtdCA9IFBvc2l4VHJhbnNpdGlvbjo6TTsKLSAg
ICAgICAgICAgIHJlcy0+ZGF0ZS5tLm1vbnRoID0gc3RhdGljX2Nhc3Q8aW50X2Zhc3Q4X3Q+KG1v
bnRoKTsKLSAgICAgICAgICAgIHJlcy0+ZGF0ZS5tLndlZWsgPSBzdGF0aWNfY2FzdDxpbnRfZmFz
dDhfdD4od2Vlayk7Ci0gICAgICAgICAgICByZXMtPmRhdGUubS53ZWVrZGF5ID0gc3RhdGljX2Nh
c3Q8aW50X2Zhc3Q4X3Q+KHdlZWtkYXkpOworICAgICAgICAgICAgcmVzLT5kYXRlLm0ubW9udGgg
PSBzdGF0aWNfY2FzdDxzdGQ6OmludF9mYXN0OF90Pihtb250aCk7CisgICAgICAgICAgICByZXMt
PmRhdGUubS53ZWVrID0gc3RhdGljX2Nhc3Q8c3RkOjppbnRfZmFzdDhfdD4od2Vlayk7CisgICAg
ICAgICAgICByZXMtPmRhdGUubS53ZWVrZGF5ID0gc3RhdGljX2Nhc3Q8c3RkOjppbnRfZmFzdDhf
dD4od2Vla2RheSk7CiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CkBAIC0xMTAsMTMg
KzExMCwxMyBAQCBjb25zdCBjaGFyKiBQYXJzZURhdGVUaW1lKGNvbnN0IGNoYXIqIHAsIFBvc2l4
VHJhbnNpdGlvbiogcmVzKSB7CiAgICAgICBpbnQgZGF5ID0gMDsKICAgICAgIGlmICgocCA9IFBh
cnNlSW50KHAgKyAxLCAxLCAzNjUsICZkYXkpKSAhPSBudWxscHRyKSB7CiAgICAgICAgIHJlcy0+
ZGF0ZS5mbXQgPSBQb3NpeFRyYW5zaXRpb246Oko7Ci0gICAgICAgIHJlcy0+ZGF0ZS5qLmRheSA9
IHN0YXRpY19jYXN0PGludF9mYXN0MTZfdD4oZGF5KTsKKyAgICAgICAgcmVzLT5kYXRlLmouZGF5
ID0gc3RhdGljX2Nhc3Q8c3RkOjppbnRfZmFzdDE2X3Q+KGRheSk7CiAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgIGludCBkYXkgPSAwOwogICAgICAgaWYgKChwID0gUGFyc2VJbnQocCwgMCwg
MzY1LCAmZGF5KSkgIT0gbnVsbHB0cikgewogICAgICAgICByZXMtPmRhdGUuZm10ID0gUG9zaXhU
cmFuc2l0aW9uOjpOOwotICAgICAgICByZXMtPmRhdGUuai5kYXkgPSBzdGF0aWNfY2FzdDxpbnRf
ZmFzdDE2X3Q+KGRheSk7CisgICAgICAgIHJlcy0+ZGF0ZS5uLmRheSA9IHN0YXRpY19jYXN0PHN0
ZDo6aW50X2Zhc3QxNl90PihkYXkpOwogICAgICAgfQogICAgIH0KICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX3Bvc2l4LmgKaW5kZXggOWNjZDRhOGI2OGJk
NTc2MWY1NmUzMTRiOWQ4YTI1MDE3MWI0OGQ2OS4uNmE2MDAyMmZhN2Q2MWRkYjE4MDM1OWI5ZjEy
ZDY2YmQzZDY1NGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90
aW1lX3pvbmVfcG9zaXguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVf
em9uZV9wb3NpeC5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gICBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
NjgsMjUgKzY4LDM1IEBAIG5hbWVzcGFjZSBjY3R6IHsKIC8vIGl0IHdvdWxkIHRha2UgdXMgdG8g
YW5vdGhlciBkYXksIGFuZCBwZXJoYXBzIHdlZWssIG9yIGV2ZW4gbW9udGguCiBzdHJ1Y3QgUG9z
aXhUcmFuc2l0aW9uIHsKICAgZW51bSBEYXRlRm9ybWF0IHsgSiwgTiwgTSB9OwotICBzdHJ1Y3Qg
eworCisgIHN0cnVjdCBEYXRlIHsKKyAgICBzdHJ1Y3QgTm9uTGVhcERheSB7CisgICAgICBzdGQ6
OmludF9mYXN0MTZfdCBkYXk7ICAvLyBkYXkgb2Ygbm9uLWxlYXAgeWVhciBbMTozNjVdCisgICAg
fTsKKyAgICBzdHJ1Y3QgRGF5IHsKKyAgICAgIHN0ZDo6aW50X2Zhc3QxNl90IGRheTsgIC8vIGRh
eSBvZiB5ZWFyIFswOjM2NV0KKyAgICB9OworICAgIHN0cnVjdCBNb250aFdlZWtXZWVrZGF5IHsK
KyAgICAgIHN0ZDo6aW50X2Zhc3Q4X3QgbW9udGg7ICAgIC8vIG1vbnRoIG9mIHllYXIgWzE6MTJd
CisgICAgICBzdGQ6OmludF9mYXN0OF90IHdlZWs7ICAgICAvLyB3ZWVrIG9mIG1vbnRoIFsxOjVd
ICg1PT1sYXN0KQorICAgICAgc3RkOjppbnRfZmFzdDhfdCB3ZWVrZGF5OyAgLy8gMD09U3VuLCAu
Li4sIDY9U2F0CisgICAgfTsKKwogICAgIERhdGVGb3JtYXQgZm10OworCiAgICAgdW5pb24gewot
ICAgICAgc3RydWN0IHsKLSAgICAgICAgc3RkOjppbnRfZmFzdDE2X3QgZGF5OyAgLy8gZGF5IG9m
IG5vbi1sZWFwIHllYXIgWzE6MzY1XQotICAgICAgfSBqOwotICAgICAgc3RydWN0IHsKLSAgICAg
ICAgc3RkOjppbnRfZmFzdDE2X3QgZGF5OyAgLy8gZGF5IG9mIHllYXIgWzA6MzY1XQotICAgICAg
fSBuOwotICAgICAgc3RydWN0IHsKLSAgICAgICAgc3RkOjppbnRfZmFzdDhfdCBtb250aDsgICAg
Ly8gbW9udGggb2YgeWVhciBbMToxMl0KLSAgICAgICAgc3RkOjppbnRfZmFzdDhfdCB3ZWVrOyAg
ICAgLy8gd2VlayBvZiBtb250aCBbMTo1XSAoNT09bGFzdCkKLSAgICAgICAgc3RkOjppbnRfZmFz
dDhfdCB3ZWVrZGF5OyAgLy8gMD09U3VuLCAuLi4sIDY9U2F0Ci0gICAgICB9IG07CisgICAgICBO
b25MZWFwRGF5IGo7CisgICAgICBEYXkgbjsKKyAgICAgIE1vbnRoV2Vla1dlZWtkYXkgbTsKICAg
ICB9OwotICB9IGRhdGU7Ci0gIHN0cnVjdCB7CisgIH07CisKKyAgc3RydWN0IFRpbWUgewogICAg
IHN0ZDo6aW50X2Zhc3QzMl90IG9mZnNldDsgIC8vIHNlY29uZHMgYmVmb3JlL2FmdGVyIDAwOjAw
OjAwCi0gIH0gdGltZTsKKyAgfTsKKworICBEYXRlIGRhdGU7CisgIFRpbWUgdGltZTsKIH07CiAK
IC8vIFRoZSBlbnRpcmV0eSBvZiBhIFBPU0lYLXN0cmluZyBzcGVjaWZpZWQgdGltZS16b25lIHJ1
bGUuIFRoZSBzdGFuZGFyZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Ny
Yy90emZpbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdHpmaWxlLmgKaW5kZXgg
OTBjZmMwYzQyOTg5YjA0MGVmOTE0NmQxYzQ1ZDM3YWQ3N2IyMmNhYS4uNTFiMWYxZjNkODNjZWU4
ZDFlNGE4NGU1OWU3Y2FhZmIzMGNkMGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3NyYy90emZpbGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3R6
ZmlsZS5oCkBAIC0xLDMgKzEsNSBAQAorLyogTGF5b3V0IGFuZCBsb2NhdGlvbiBvZiBUWmlmIGZp
bGVzLiAgKi8KKwogI2lmbmRlZiBUWkZJTEVfSAogCiAjZGVmaW5lIFRaRklMRV9ICkBAIC0zMSw2
ICszMyw5IEBACiAjZGVmaW5lIFRaREVGUlVMRVMJInBvc2l4cnVsZXMiCiAjZW5kaWYgLyogIWRl
ZmluZWQgVFpERUZSVUxFUyAqLwogCisKKy8qIFNlZSBJbnRlcm5ldCBSRkMgODUzNiBmb3IgbW9y
ZSBkZXRhaWxzIGFib3V0IHRoZSBmb2xsb3dpbmcgZm9ybWF0LiAgKi8KKwogLyoKICoqIEVhY2gg
ZmlsZSBiZWdpbnMgd2l0aC4gLiAuCiAqLwpAQCAtNDEsNyArNDYsNyBAQCBzdHJ1Y3QgdHpoZWFk
IHsKIAljaGFyCXR6aF9tYWdpY1s0XTsJCS8qIFRaX01BR0lDICovCiAJY2hhcgl0emhfdmVyc2lv
blsxXTsJCS8qICdcMCcgb3IgJzInIG9yICczJyBhcyBvZiAyMDEzICovCiAJY2hhcgl0emhfcmVz
ZXJ2ZWRbMTVdOwkvKiByZXNlcnZlZDsgbXVzdCBiZSB6ZXJvICovCi0JY2hhcgl0emhfdHRpc2dt
dGNudFs0XTsJLyogY29kZWQgbnVtYmVyIG9mIHRyYW5zLiB0aW1lIGZsYWdzICovCisJY2hhcgl0
emhfdHRpc3V0Y250WzRdOwkvKiBjb2RlZCBudW1iZXIgb2YgdHJhbnMuIHRpbWUgZmxhZ3MgKi8K
IAljaGFyCXR6aF90dGlzc3RkY250WzRdOwkvKiBjb2RlZCBudW1iZXIgb2YgdHJhbnMuIHRpbWUg
ZmxhZ3MgKi8KIAljaGFyCXR6aF9sZWFwY250WzRdOwkJLyogY29kZWQgbnVtYmVyIG9mIGxlYXAg
c2Vjb25kcyAqLwogCWNoYXIJdHpoX3RpbWVjbnRbNF07CQkvKiBjb2RlZCBudW1iZXIgb2YgdHJh
bnNpdGlvbiB0aW1lcyAqLwpAQCAtNjQsMTQgKzY5LDE1IEBAIHN0cnVjdCB0emhlYWQgewogKioJ
CW9uZSAoY2hhciBbNF0pCQl0b3RhbCBjb3JyZWN0aW9uIGFmdGVyIGFib3ZlCiAqKgl0emhfdHRp
c3N0ZGNudCAoY2hhcilzCQlpbmRleGVkIGJ5IHR5cGU7IGlmIDEsIHRyYW5zaXRpb24KICoqCQkJ
CQl0aW1lIGlzIHN0YW5kYXJkIHRpbWUsIGlmIDAsCi0qKgkJCQkJdHJhbnNpdGlvbiB0aW1lIGlz
IHdhbGwgY2xvY2sgdGltZQotKioJCQkJCWlmIGFic2VudCwgdHJhbnNpdGlvbiB0aW1lcyBhcmUK
LSoqCQkJCQlhc3N1bWVkIHRvIGJlIHdhbGwgY2xvY2sgdGltZQotKioJdHpoX3R0aXNnbXRjbnQg
KGNoYXIpcwkJaW5kZXhlZCBieSB0eXBlOyBpZiAxLCB0cmFuc2l0aW9uCi0qKgkJCQkJdGltZSBp
cyBVVCwgaWYgMCwKLSoqCQkJCQl0cmFuc2l0aW9uIHRpbWUgaXMgbG9jYWwgdGltZQotKioJCQkJ
CWlmIGFic2VudCwgdHJhbnNpdGlvbiB0aW1lcyBhcmUKKyoqCQkJCQl0cmFuc2l0aW9uIHRpbWUg
aXMgbG9jYWwgKHdhbGwgY2xvY2spCisqKgkJCQkJdGltZTsgaWYgYWJzZW50LCB0cmFuc2l0aW9u
IHRpbWVzIGFyZQogKioJCQkJCWFzc3VtZWQgdG8gYmUgbG9jYWwgdGltZQorKioJdHpoX3R0aXN1
dGNudCAoY2hhcilzCQlpbmRleGVkIGJ5IHR5cGU7IGlmIDEsIHRyYW5zaXRpb24KKyoqCQkJCQl0
aW1lIGlzIFVULCBpZiAwLCB0cmFuc2l0aW9uIHRpbWUgaXMKKyoqCQkJCQlsb2NhbCB0aW1lOyBp
ZiBhYnNlbnQsIHRyYW5zaXRpb24KKyoqCQkJCQl0aW1lcyBhcmUgYXNzdW1lZCB0byBiZSBsb2Nh
bCB0aW1lLgorKioJCQkJCVdoZW4gdGhpcyBpcyAxLCB0aGUgY29ycmVzcG9uZGluZworKioJCQkJ
CXN0ZC93YWxsIGluZGljYXRvciBtdXN0IGFsc28gYmUgMS4KICovCiAKIC8qCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3pvbmVfaW5mb19zb3VyY2UuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovc3JjL3pvbmVfaW5mb19zb3VyY2UuY2MKaW5kZXggYmYyZDJk
MmQyYjUzODRlZmYzZWEwZWExMGVlOGZhNjhmMGZlOGJjNy4uNDJmNTBjNWU4ZmI0Y2M2ZjA1MjBi
Zjg3YTcwY2I2MmRiMTM3MmJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy96b25lX2luZm9fc291cmNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9z
cmMvem9uZV9pbmZvX3NvdXJjZS5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgIGh0dHBzOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyAgIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vICAgZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTQ2LDcgKzQ2LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxhYnNsOjp0aW1lX2ludGVy
bmFsOjpjY3R6Ojpab25lSW5mb1NvdXJjZT4gRGVmYXVsdEZhY3RvcnkoCiAvLyBBICJ3ZWFrIiBk
ZWZpbml0aW9uIGZvciBjY3R6X2V4dGVuc2lvbjo6em9uZV9pbmZvX3NvdXJjZV9mYWN0b3J5Lgog
Ly8gVGhlIHVzZXIgbWF5IG92ZXJyaWRlIHRoaXMgd2l0aCB0aGVpciBvd24gInN0cm9uZyIgZGVm
aW5pdGlvbiAoc2VlCiAvLyB6b25lX2luZm9fc291cmNlLmgpLgotI2lmIGRlZmluZWQoX01TQ19W
RVIpCisjaWYgIWRlZmluZWQoX19oYXNfYXR0cmlidXRlKQorI2RlZmluZSBfX2hhc19hdHRyaWJ1
dGUoeCkgMAorI2VuZGlmCisjaWYgX19oYXNfYXR0cmlidXRlKHdlYWspIHx8IGRlZmluZWQoX19H
TlVDX18pCitab25lSW5mb1NvdXJjZUZhY3Rvcnkgem9uZV9pbmZvX3NvdXJjZV9mYWN0b3J5Cisg
ICAgX19hdHRyaWJ1dGVfXygod2VhaykpID0gRGVmYXVsdEZhY3Rvcnk7CisjZWxpZiBkZWZpbmVk
KF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCiBleHRlcm4gWm9uZUluZm9T
b3VyY2VGYWN0b3J5IHpvbmVfaW5mb19zb3VyY2VfZmFjdG9yeTsKIGV4dGVybiBab25lSW5mb1Nv
dXJjZUZhY3RvcnkgZGVmYXVsdF9mYWN0b3J5OwogWm9uZUluZm9Tb3VyY2VGYWN0b3J5IGRlZmF1
bHRfZmFjdG9yeSA9IERlZmF1bHRGYWN0b3J5OwpAQCAtNTQsMjUgKzYwLDE3IEBAIFpvbmVJbmZv
U291cmNlRmFjdG9yeSBkZWZhdWx0X2ZhY3RvcnkgPSBEZWZhdWx0RmFjdG9yeTsKICNwcmFnbWEg
Y29tbWVudCggXAogICAgIGxpbmtlciwgICAgICBcCiAgICAgIi9hbHRlcm5hdGVuYW1lOj96b25l
X2luZm9fc291cmNlX2ZhY3RvcnlAY2N0el9leHRlbnNpb25AdGltZV9pbnRlcm5hbEBhYnNsQEAz
UDZBP0FWPyR1bmlxdWVfcHRyQFZab25lSW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJz
bEBAVT8kZGVmYXVsdF9kZWxldGVAVlpvbmVJbmZvU291cmNlQGNjdHpAdGltZV9pbnRlcm5hbEBh
YnNsQEBAc3RkQEBAc3RkQEBBQlY/JGJhc2ljX3N0cmluZ0BEVT8kY2hhcl90cmFpdHNAREBzdGRA
QFY/JGFsbG9jYXRvckBEQDJAQDVAQUJWPyRmdW5jdGlvbkAkJEE2QT9BVj8kdW5pcXVlX3B0ckBW
Wm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2ludGVybmFsQGFic2xAQFU/JGRlZmF1bHRfZGVsZXRl
QFZab25lSW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAQHN0ZEBAQHN0ZEBAQUJW
PyRiYXNpY19zdHJpbmdARFU/JGNoYXJfdHJhaXRzQERAc3RkQEBWPyRhbGxvY2F0b3JAREAyQEAy
QEBaQDVAQFpBPT9kZWZhdWx0X2ZhY3RvcnlAY2N0el9leHRlbnNpb25AdGltZV9pbnRlcm5hbEBh
YnNsQEAzUDZBP0FWPyR1bmlxdWVfcHRyQFZab25lSW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJu
YWxAYWJzbEBAVT8kZGVmYXVsdF9kZWxldGVAVlpvbmVJbmZvU291cmNlQGNjdHpAdGltZV9pbnRl
cm5hbEBhYnNsQEBAc3RkQEBAc3RkQEBBQlY/JGJhc2ljX3N0cmluZ0BEVT8kY2hhcl90cmFpdHNA
REBzdGRAQFY/JGFsbG9jYXRvckBEQDJAQDVAQUJWPyRmdW5jdGlvbkAkJEE2QT9BVj8kdW5pcXVl
X3B0ckBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2ludGVybmFsQGFic2xAQFU/JGRlZmF1bHRf
ZGVsZXRlQFZab25lSW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAQHN0ZEBAQHN0
ZEBAQUJWPyRiYXNpY19zdHJpbmdARFU/JGNoYXJfdHJhaXRzQERAc3RkQEBWPyRhbGxvY2F0b3JA
REAyQEAyQEBaQDVAQFpBIikKLSNlbGlmIGRlZmluZWQoX01fSUFfNjQpIHx8IGRlZmluZWQoX01f
QU1ENjQpCisjZWxpZiBkZWZpbmVkKF9NX0lBXzY0KSB8fCBkZWZpbmVkKF9NX0FNRDY0KSB8fCBk
ZWZpbmVkKF9NX0FSTTY0KQogI3ByYWdtYSBjb21tZW50KCBcCiAgICAgbGlua2VyLCAgICAgIFwK
ICAgICAiL2FsdGVybmF0ZW5hbWU6P3pvbmVfaW5mb19zb3VyY2VfZmFjdG9yeUBjY3R6X2V4dGVu
c2lvbkB0aW1lX2ludGVybmFsQGFic2xAQDNQNkE/QVY/JHVuaXF1ZV9wdHJAVlpvbmVJbmZvU291
cmNlQGNjdHpAdGltZV9pbnRlcm5hbEBhYnNsQEBVPyRkZWZhdWx0X2RlbGV0ZUBWWm9uZUluZm9T
b3VyY2VAY2N0ekB0aW1lX2ludGVybmFsQGFic2xAQEBzdGRAQEBzdGRAQEFFQlY/JGJhc2ljX3N0
cmluZ0BEVT8kY2hhcl90cmFpdHNAREBzdGRAQFY/JGFsbG9jYXRvckBEQDJAQDVAQUVCVj8kZnVu
Y3Rpb25AJCRBNkE/QVY/JHVuaXF1ZV9wdHJAVlpvbmVJbmZvU291cmNlQGNjdHpAdGltZV9pbnRl
cm5hbEBhYnNsQEBVPyRkZWZhdWx0X2RlbGV0ZUBWWm9uZUluZm9Tb3VyY2VAY2N0ekB0aW1lX2lu
dGVybmFsQGFic2xAQEBzdGRAQEBzdGRAQEFFQlY/JGJhc2ljX3N0cmluZ0BEVT8kY2hhcl90cmFp
dHNAREBzdGRAQFY/JGFsbG9jYXRvckBEQDJAQDJAQFpANUBAWkVBPT9kZWZhdWx0X2ZhY3RvcnlA
Y2N0el9leHRlbnNpb25AdGltZV9pbnRlcm5hbEBhYnNsQEAzUDZBP0FWPyR1bmlxdWVfcHRyQFZa
b25lSW5mb1NvdXJjZUBjY3R6QHRpbWVfaW50ZXJuYWxAYWJzbEBAVT8kZGVmYXVsdF9kZWxldGVA
VlpvbmVJbmZvU291cmNlQGNjdHpAdGltZV9pbnRlcm5hbEBhYnNsQEBAc3RkQEBAc3RkQEBBRUJW
PyRiYXNpY19zdHJpbmdARFU/JGNoYXJfdHJhaXRzQERAc3RkQEBWPyRhbGxvY2F0b3JAREAyQEA1
QEFFQlY/JGZ1bmN0aW9uQCQkQTZBP0FWPyR1bmlxdWVfcHRyQFZab25lSW5mb1NvdXJjZUBjY3R6
QHRpbWVfaW50ZXJuYWxAYWJzbEBAVT8kZGVmYXVsdF9kZWxldGVAVlpvbmVJbmZvU291cmNlQGNj
dHpAdGltZV9pbnRlcm5hbEBhYnNsQEBAc3RkQEBAc3RkQEBBRUJWPyRiYXNpY19zdHJpbmdARFU/
JGNoYXJfdHJhaXRzQERAc3RkQEBWPyRhbGxvY2F0b3JAREAyQEAyQEBaQDVAQFpFQSIpCiAjZWxz
ZQogI2Vycm9yIFVuc3VwcG9ydGVkIE1TVkMgcGxhdGZvcm0KLSNlbmRpZgotI2Vsc2UgIC8vIF9N
U0NfVkVSCi0jaWYgIWRlZmluZWQoX19oYXNfYXR0cmlidXRlKQotI2RlZmluZSBfX2hhc19hdHRy
aWJ1dGUoeCkgMAotI2VuZGlmCi0jaWYgX19oYXNfYXR0cmlidXRlKHdlYWspIHx8IGRlZmluZWQo
X19HTlVDX18pCi1ab25lSW5mb1NvdXJjZUZhY3Rvcnkgem9uZV9pbmZvX3NvdXJjZV9mYWN0b3J5
Ci0gICAgX19hdHRyaWJ1dGVfXygod2VhaykpID0gRGVmYXVsdEZhY3Rvcnk7CisjZW5kaWYgIC8v
IF9NXzxQTEFURk9STT4KICNlbHNlCiAvLyBNYWtlIGl0IGEgInN0cm9uZyIgZGVmaW5pdGlvbiBp
ZiB3ZSBoYXZlIG5vIG90aGVyIGNob2ljZS4KIFpvbmVJbmZvU291cmNlRmFjdG9yeSB6b25lX2lu
Zm9fc291cmNlX2ZhY3RvcnkgPSBEZWZhdWx0RmFjdG9yeTsKICNlbmRpZgotI2VuZGlmICAvLyBf
TVNDX1ZFUgogCiB9ICAvLyBuYW1lc3BhY2UgY2N0el9leHRlbnNpb24KIH0gIC8vIG5hbWVzcGFj
ZSB0aW1lX2ludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2dldF9jdXJy
ZW50X3RpbWVfY2hyb25vLmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvZ2V0X2N1cnJlbnRfdGlt
ZV9jaHJvbm8uaW5jCmluZGV4IGNmODg0YTEwZWQ5ZDk4OGRlMDQ1ODdjODA4MDUyODhiODc4ZGNh
N2UuLjUxODAyMzBkZWU1OGNkN2ZkYWZiNWRmZjhjOGNhYzkyYjllZTg5ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvZ2V0X2N1cnJlbnRfdGltZV9jaHJvbm8uaW5jCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvZ2V0X2N1cnJlbnRfdGltZV9jaHJvbm8uaW5jCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL3Rlc3RfdXRpbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvdGVzdF91dGlsLmNjCmlu
ZGV4IGJiYmVmN2RhNzBjNDY5ZjhkNGRiNTVkOWRiZDBjMDVmNjEwNTliNmIuLjU5MTY2YTdjODJk
ZDI2YTllYmU3YWJjZGQyMTcxMjY2YjU5ODZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvdGVzdF91dGlsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvdGVzdF91dGlsLmNj
CkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0yNiwxMiArMjYs
NiBAQCBuYW1lc3BhY2UgY2N0eiA9IGFic2w6OnRpbWVfaW50ZXJuYWw6OmNjdHo7CiBuYW1lc3Bh
Y2UgYWJzbCB7CiBuYW1lc3BhY2UgdGltZV9pbnRlcm5hbCB7CiAKLSNpZiBHVEVTVF9VU0VTX1NJ
TVBMRV9SRQotZXh0ZXJuIGNvbnN0IGNoYXIga1pvbmVBYmJyUkVbXSA9ICIuKiI7ICAvLyBqdXN0
IHB1bnQKLSNlbHNlCi1leHRlcm4gY29uc3QgY2hhciBrWm9uZUFiYnJSRVtdID0gIltBLVphLXpd
ezMsNH18Wy0rXVswLTldezJ9KFswLTldezJ9KT8iOwotI2VuZGlmCi0KIFRpbWVab25lIExvYWRU
aW1lWm9uZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgewogICBUaW1lWm9uZSB0ejsKICAgQUJT
TF9SQVdfQ0hFQ0soTG9hZFRpbWVab25lKG5hbWUsICZ0eiksIG5hbWUuY19zdHIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL3Rlc3RfdXRpbC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC90ZXN0X3V0aWwuaAppbmRleCA4ZmQ1ZmI5ZmQwMzgyZThjNDQyMzc0OWQ2MDljYzI2OWU1
ZTM5OWQ2Li5kNzMxOWVhOGY1YmJhM2EwZmZkY2Q0NTU1YWViMDA3YWRlOGE1YmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL3Rlc3RfdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvdGVzdF91dGlsLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKQEAgLTE3LDM1ICsxNywxMSBAQAogCiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAi
Z21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgImFic2wv
dGltZS90aW1lLmgiCiAKLS8vIFRoaXMgaGVscGVyIGlzIGEgbWFjcm8gc28gdGhhdCBmYWlsZWQg
ZXhwZWN0YXRpb25zIHNob3cgdXAgd2l0aCB0aGUKLS8vIGNvcnJlY3QgbGluZSBudW1iZXJzLgot
Ly8KLS8vIFRoaXMgaXMgZm9yIGludGVybmFsIHRlc3Rpbmcgb2YgdGhlIEJhc2UgVGltZSBsaWJy
YXJ5IGl0c2VsZi4gVGhpcyBpcyBub3QKLS8vIHBhcnQgb2YgYSBwdWJsaWMgQVBJLgotI2RlZmlu
ZSBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCB5LCBtLCBkLCBoLCBtaW4sIHMsIG9mZiwg
aXNkc3QpICAgICBcCi0gIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBFWFBFQ1RfRVEoeSwgYmQueWVh
cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IEVYUEVDVF9FUShtLCBiZC5tb250aCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX0VRKGQsIGJkLmRheSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBFWFBFQ1RfRVEoaCwgYmQu
aG91cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIEVYUEVDVF9FUShtaW4sIGJkLm1pbnV0ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX0VRKHMsIGJkLnNlY29uZCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBFWFBFQ1RfRVEob2Zm
LCBiZC5vZmZzZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIEVYUEVDVF9FUShpc2RzdCwgYmQuaXNfZHN0KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX1RIQVQoYmQuem9uZV9hYmJyLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAg
ICB0ZXN0aW5nOjpNYXRjaGVzUmVnZXgoYWJzbDo6dGltZV9pbnRlcm5hbDo6a1pvbmVBYmJyUkUp
KTsgXAotICB9IHdoaWxlICgwKQotCiBuYW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2UgdGltZV9p
bnRlcm5hbCB7CiAKLS8vIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyBhbGwgem9u
ZSBhYmJyZXZpYXRpb25zICglWikuCi1leHRlcm4gY29uc3QgY2hhciBrWm9uZUFiYnJSRVtdOwot
CiAvLyBMb2FkcyB0aGUgbmFtZWQgdGltZXpvbmUsIGJ1dCBkaWVzIG9uIGFueSBmYWlsdXJlLgog
YWJzbDo6VGltZVpvbmUgTG9hZFRpbWVab25lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lLmNjCmluZGV4
IDcxZmQ4ZWU2ZTc0MzRkYTlmOTNlNjFkYTJmZTM2ZjczYzFjY2FhNjAuLjZhMzg3YmNlZTYxZmNi
YWViNDRkZWY2OWJmMDNmM2Q4ODk5MjdmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL3RpbWUuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKQEAgLTIyLDE2ICsyMiwyMSBAQAogLy8gTk9URTogVG8ga2VlcCB0eXBlIHZl
cmJvc2l0eSB0byBhIG1pbmltdW0sIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgbmFtaW5nCiAvLyBj
b252ZW50aW9ucyBhcmUgdXNlZCB0aHJvdWdob3V0IHRoaXMgZmlsZS4KIC8vCi0vLyBjejogQSBj
Y3R6Ojp0aW1lX3pvbmUKIC8vIHR6OiBBbiBhYnNsOjpUaW1lWm9uZQorLy8gY2k6IEFuIGFic2w6
OlRpbWVab25lOjpDaXZpbEluZm8KKy8vIHRpOiBBbiBhYnNsOjpUaW1lWm9uZTo6VGltZUluZm8K
Ky8vIGNkOiBBbiBhYnNsOjpDaXZpbERheSBvciBhIGNjdHo6OmNpdmlsX2RheQorLy8gY3M6IEFu
IGFic2w6OkNpdmlsU2Vjb25kIG9yIGEgY2N0ejo6Y2l2aWxfc2Vjb25kCisvLyBiZDogQW4gYWJz
bDo6VGltZTo6QnJlYWtkb3duCiAvLyBjbDogQSBjY3R6Ojp0aW1lX3pvbmU6OmNpdmlsX2xvb2t1
cAogLy8gYWw6IEEgY2N0ejo6dGltZV96b25lOjphYnNvbHV0ZV9sb29rdXAKLS8vIGNkOiBBIGNj
dHo6OmNpdmlsX2RheQotLy8gY3M6IEEgY2N0ejo6Y2l2aWxfc2Vjb25kCi0vLyBiZDogQW4gYWJz
bDo6VGltZTo6QnJlYWtkb3duCiAKICNpbmNsdWRlICJhYnNsL3RpbWUvdGltZS5oIgogCisjaWYg
ZGVmaW5lZChfTVNDX1ZFUikKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPiAgLy8gZm9yIHRpbWV2YWwK
KyNlbmRpZgorCiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxjdGltZT4KICNpbmNsdWRl
IDxsaW1pdHM+CkBAIC00MCw2ICs0NSw3IEBACiAjaW5jbHVkZSAiYWJzbC90aW1lL2ludGVybmFs
L2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5oIgogCiBuYW1lc3BhY2UgY2N0eiA9IGFic2w6
OnRpbWVfaW50ZXJuYWw6OmNjdHo7CisKIG5hbWVzcGFjZSBhYnNsIHsKIAogbmFtZXNwYWNlIHsK
QEAgLTc1LDcgKzgxLDcgQEAgaW5saW5lIGFic2w6OlRpbWU6OkJyZWFrZG93biBJbmZpbml0ZUZ1
dHVyZUJyZWFrZG93bigpIHsKICAgcmV0dXJuIGJkOwogfQogCi1pbmxpbmUgVGltZTo6QnJlYWtk
b3duIEluZmluaXRlUGFzdEJyZWFrZG93bigpIHsKK2lubGluZSBhYnNsOjpUaW1lOjpCcmVha2Rv
d24gSW5maW5pdGVQYXN0QnJlYWtkb3duKCkgewogICBUaW1lOjpCcmVha2Rvd24gYmQ7CiAgIGJk
LnllYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKTsKICAgYmQubW9udGgg
PSAxOwpAQCAtOTIsNiArOTgsMjYgQEAgaW5saW5lIFRpbWU6OkJyZWFrZG93biBJbmZpbml0ZVBh
c3RCcmVha2Rvd24oKSB7CiAgIHJldHVybiBiZDsKIH0KIAoraW5saW5lIGFic2w6OlRpbWVab25l
OjpDaXZpbEluZm8gSW5maW5pdGVGdXR1cmVDaXZpbEluZm8oKSB7CisgIFRpbWVab25lOjpDaXZp
bEluZm8gY2k7CisgIGNpLmNzID0gQ2l2aWxTZWNvbmQ6Om1heCgpOworICBjaS5zdWJzZWNvbmQg
PSBJbmZpbml0ZUR1cmF0aW9uKCk7CisgIGNpLm9mZnNldCA9IDA7CisgIGNpLmlzX2RzdCA9IGZh
bHNlOworICBjaS56b25lX2FiYnIgPSAiLTAwIjsKKyAgcmV0dXJuIGNpOworfQorCitpbmxpbmUg
YWJzbDo6VGltZVpvbmU6OkNpdmlsSW5mbyBJbmZpbml0ZVBhc3RDaXZpbEluZm8oKSB7CisgIFRp
bWVab25lOjpDaXZpbEluZm8gY2k7CisgIGNpLmNzID0gQ2l2aWxTZWNvbmQ6Om1pbigpOworICBj
aS5zdWJzZWNvbmQgPSAtSW5maW5pdGVEdXJhdGlvbigpOworICBjaS5vZmZzZXQgPSAwOworICBj
aS5pc19kc3QgPSBmYWxzZTsKKyAgY2kuem9uZV9hYmJyID0gIi0wMCI7CisgIHJldHVybiBjaTsK
K30KKwogaW5saW5lIGFic2w6OlRpbWVDb252ZXJzaW9uIEluZmluaXRlRnV0dXJlVGltZUNvbnZl
cnNpb24oKSB7CiAgIGFic2w6OlRpbWVDb252ZXJzaW9uIHRjOwogICB0Yy5wcmUgPSB0Yy50cmFu
cyA9IHRjLnBvc3QgPSBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpOwpAQCAtMTM0LDE5ICsxNjAsNiBA
QCBUaW1lIE1ha2VUaW1lV2l0aE92ZXJmbG93KGNvbnN0IGNjdHo6OnRpbWVfcG9pbnQ8Y2N0ejo6
c2Vjb25kcz4mIHNlYywKICAgcmV0dXJuIHRpbWVfaW50ZXJuYWw6OkZyb21Vbml4RHVyYXRpb24o
dGltZV9pbnRlcm5hbDo6TWFrZUR1cmF0aW9uKGhpKSk7CiB9CiAKLWlubGluZSBhYnNsOjpUaW1l
Q29udmVyc2lvbjo6S2luZCBNYXBLaW5kKAotICAgIGNvbnN0IGNjdHo6OnRpbWVfem9uZTo6Y2l2
aWxfbG9va3VwOjpjaXZpbF9raW5kJiBraW5kKSB7Ci0gIHN3aXRjaCAoa2luZCkgewotICAgIGNh
c2UgY2N0ejo6dGltZV96b25lOjpjaXZpbF9sb29rdXA6OlVOSVFVRToKLSAgICAgIHJldHVybiBh
YnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFOwotICAgIGNhc2UgY2N0ejo6dGltZV96b25lOjpj
aXZpbF9sb29rdXA6OlNLSVBQRUQ6Ci0gICAgICByZXR1cm4gYWJzbDo6VGltZUNvbnZlcnNpb246
OlNLSVBQRUQ7Ci0gICAgY2FzZSBjY3R6Ojp0aW1lX3pvbmU6OmNpdmlsX2xvb2t1cDo6UkVQRUFU
RUQ6Ci0gICAgICByZXR1cm4gYWJzbDo6VGltZUNvbnZlcnNpb246OlJFUEVBVEVEOwotICB9Ci0g
IHJldHVybiBhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFOwotfQotCiAvLyBSZXR1cm5zIE1v
bj0xLi5TdW49Ny4KIGlubGluZSBpbnQgTWFwV2Vla2RheShjb25zdCBjY3R6Ojp3ZWVrZGF5JiB3
ZCkgewogICBzd2l0Y2ggKHdkKSB7CkBAIC0xNjgsMTEgKzE4MSwyOSBAQCBpbmxpbmUgaW50IE1h
cFdlZWtkYXkoY29uc3QgY2N0ejo6d2Vla2RheSYgd2QpIHsKICAgcmV0dXJuIDE7CiB9CiAKK2Jv
b2wgRmluZFRyYW5zaXRpb24oY29uc3QgY2N0ejo6dGltZV96b25lJiB0eiwKKyAgICAgICAgICAg
ICAgICAgICAgYm9vbCAoY2N0ejo6dGltZV96b25lOjoqZmluZF90cmFuc2l0aW9uKSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNjdHo6OnRpbWVfcG9pbnQ8Y2N0ejo6c2Vjb25kcz4m
IHRwLAorICAgICAgICAgICAgICAgICAgICAgICAgY2N0ejo6dGltZV96b25lOjpjaXZpbF90cmFu
c2l0aW9uKiB0cmFucykgY29uc3QsCisgICAgICAgICAgICAgICAgICAgIFRpbWUgdCwgVGltZVpv
bmU6OkNpdmlsVHJhbnNpdGlvbiogdHJhbnMpIHsKKyAgLy8gVHJhbnNpdGlvbnMgYXJlIHNlY29u
ZC1hbGlnbmVkLCBzbyB3ZSBjYW4gZGlzY2FyZCBhbnkgZnJhY3Rpb25hbCBwYXJ0LgorICBjb25z
dCBhdXRvIHRwID0gdW5peF9lcG9jaCgpICsgY2N0ejo6c2Vjb25kcyhUb1VuaXhTZWNvbmRzKHQp
KTsKKyAgY2N0ejo6dGltZV96b25lOjpjaXZpbF90cmFuc2l0aW9uIHRyOworICBpZiAoISh0ei4q
ZmluZF90cmFuc2l0aW9uKSh0cCwgJnRyKSkgcmV0dXJuIGZhbHNlOworICB0cmFucy0+ZnJvbSA9
IENpdmlsU2Vjb25kKHRyLmZyb20pOworICB0cmFucy0+dG8gPSBDaXZpbFNlY29uZCh0ci50byk7
CisgIHJldHVybiB0cnVlOworfQorCiB9ICAvLyBuYW1lc3BhY2UKIAorLy8KKy8vIFRpbWUKKy8v
CisKIGFic2w6OlRpbWU6OkJyZWFrZG93biBUaW1lOjpJbihhYnNsOjpUaW1lWm9uZSB0eikgY29u
c3QgewotICBpZiAoKnRoaXMgPT0gYWJzbDo6SW5maW5pdGVGdXR1cmUoKSkgcmV0dXJuIGFic2w6
OkluZmluaXRlRnV0dXJlQnJlYWtkb3duKCk7Ci0gIGlmICgqdGhpcyA9PSBhYnNsOjpJbmZpbml0
ZVBhc3QoKSkgcmV0dXJuIGFic2w6OkluZmluaXRlUGFzdEJyZWFrZG93bigpOworICBpZiAoKnRo
aXMgPT0gYWJzbDo6SW5maW5pdGVGdXR1cmUoKSkgcmV0dXJuIEluZmluaXRlRnV0dXJlQnJlYWtk
b3duKCk7CisgIGlmICgqdGhpcyA9PSBhYnNsOjpJbmZpbml0ZVBhc3QoKSkgcmV0dXJuIEluZmlu
aXRlUGFzdEJyZWFrZG93bigpOwogCiAgIGNvbnN0IGF1dG8gdHAgPSB1bml4X2Vwb2NoKCkgKyBj
Y3R6OjpzZWNvbmRzKHRpbWVfaW50ZXJuYWw6OkdldFJlcEhpKHJlcF8pKTsKICAgY29uc3QgYXV0
byBhbCA9IGNjdHo6OnRpbWVfem9uZSh0eikubG9va3VwKHRwKTsKQEAgLTE4Nyw5MiArMjE4LDE4
IEBAIGFic2w6OlRpbWU6OkJyZWFrZG93biBUaW1lOjpJbihhYnNsOjpUaW1lWm9uZSB0eikgY29u
c3QgewogICBiZC5taW51dGUgPSBjcy5taW51dGUoKTsKICAgYmQuc2Vjb25kID0gY3Muc2Vjb25k
KCk7CiAgIGJkLnN1YnNlY29uZCA9IHRpbWVfaW50ZXJuYWw6Ok1ha2VEdXJhdGlvbigwLCB0aW1l
X2ludGVybmFsOjpHZXRSZXBMbyhyZXBfKSk7Ci0gIGJkLndlZWtkYXkgPSBNYXBXZWVrZGF5KGdl
dF93ZWVrZGF5KGNkKSk7Ci0gIGJkLnllYXJkYXkgPSBnZXRfeWVhcmRheShjZCk7CisgIGJkLndl
ZWtkYXkgPSBNYXBXZWVrZGF5KGNjdHo6OmdldF93ZWVrZGF5KGNkKSk7CisgIGJkLnllYXJkYXkg
PSBjY3R6OjpnZXRfeWVhcmRheShjZCk7CiAgIGJkLm9mZnNldCA9IGFsLm9mZnNldDsKICAgYmQu
aXNfZHN0ID0gYWwuaXNfZHN0OwogICBiZC56b25lX2FiYnIgPSBhbC5hYmJyOwogICByZXR1cm4g
YmQ7CiB9CiAKLWFic2w6OlRpbWUgRnJvbVRNKGNvbnN0IHN0cnVjdCB0bSYgdG0sIGFic2w6OlRp
bWVab25lIHR6KSB7Ci0gIGNvbnN0IGF1dG8gY3ogPSBjY3R6Ojp0aW1lX3pvbmUodHopOwotICBj
b25zdCBhdXRvIGNzID0KLSAgICAgIGNjdHo6OmNpdmlsX3NlY29uZCh0bS50bV95ZWFyICsgMTkw
MCwgdG0udG1fbW9uICsgMSwgdG0udG1fbWRheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0
bS50bV9ob3VyLCB0bS50bV9taW4sIHRtLnRtX3NlYyk7Ci0gIGNvbnN0IGF1dG8gY2wgPSBjei5s
b29rdXAoY3MpOwotICBjb25zdCBhdXRvIHRwID0gdG0udG1faXNkc3QgPT0gMCA/IGNsLnBvc3Qg
OiBjbC5wcmU7Ci0gIHJldHVybiBNYWtlVGltZVdpdGhPdmVyZmxvdyh0cCwgY3MsIGN6KTsKLX0K
LQotc3RydWN0IHRtIFRvVE0oYWJzbDo6VGltZSB0LCBhYnNsOjpUaW1lWm9uZSB0eikgewotICBj
b25zdCBhYnNsOjpUaW1lOjpCcmVha2Rvd24gYmQgPSB0LkluKHR6KTsKLSAgc3RydWN0IHRtIHRt
OwotICBzdGQ6Om1lbXNldCgmdG0sIDAsIHNpemVvZih0bSkpOwotICB0bS50bV9zZWMgPSBiZC5z
ZWNvbmQ7Ci0gIHRtLnRtX21pbiA9IGJkLm1pbnV0ZTsKLSAgdG0udG1faG91ciA9IGJkLmhvdXI7
Ci0gIHRtLnRtX21kYXkgPSBiZC5kYXk7Ci0gIHRtLnRtX21vbiA9IGJkLm1vbnRoIC0gMTsKLQot
ICAvLyBTYXR1cmF0ZXMgdG0udG1feWVhciBpbiBjYXNlcyBvZiBvdmVyL3VuZGVyZmxvdywgYWNj
b3VudGluZyBmb3IgdGhlIGZhY3QKLSAgLy8gdGhhdCB0bS50bV95ZWFyIGlzIHllYXJzIHNpbmNl
IDE5MDAuCi0gIGlmIChiZC55ZWFyIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSAr
IDE5MDApIHsKLSAgICB0bS50bV95ZWFyID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4o
KTsKLSAgfSBlbHNlIGlmIChiZC55ZWFyID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgo
KSkgewotICAgIHRtLnRtX3llYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpIC0g
MTkwMDsKLSAgfSBlbHNlIHsKLSAgICB0bS50bV95ZWFyID0gc3RhdGljX2Nhc3Q8aW50PihiZC55
ZWFyIC0gMTkwMCk7Ci0gIH0KLQotICB0bS50bV93ZGF5ID0gYmQud2Vla2RheSAlIDc7Ci0gIHRt
LnRtX3lkYXkgPSBiZC55ZWFyZGF5IC0gMTsKLSAgdG0udG1faXNkc3QgPSBiZC5pc19kc3QgPyAx
IDogMDsKLQotICByZXR1cm4gdG07Ci19Ci0KIC8vCi0vLyBGYWN0b3J5IGZ1bmN0aW9ucy4KKy8v
IENvbnZlcnNpb25zIGZyb20vdG8gb3RoZXIgdGltZSB0eXBlcy4KIC8vCiAKLWFic2w6OlRpbWVD
b252ZXJzaW9uIENvbnZlcnREYXRlVGltZShpbnQ2NF90IHllYXIsIGludCBtb24sIGludCBkYXks
IGludCBob3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW4s
IGludCBzZWMsIFRpbWVab25lIHR6KSB7Ci0gIC8vIEF2b2lkcyB5ZWFycyB0aGF0IGFyZSB0b28g
ZXh0cmVtZSBmb3IgY2l2aWxfc2Vjb25kIHRvIG5vcm1hbGl6ZS4KLSAgaWYgKHllYXIgPiAzMDAw
MDAwMDAwMDApIHJldHVybiBJbmZpbml0ZUZ1dHVyZVRpbWVDb252ZXJzaW9uKCk7Ci0gIGlmICh5
ZWFyIDwgLTMwMDAwMDAwMDAwMCkgcmV0dXJuIEluZmluaXRlUGFzdFRpbWVDb252ZXJzaW9uKCk7
Ci0gIGNvbnN0IGF1dG8gY3ogPSBjY3R6Ojp0aW1lX3pvbmUodHopOwotICBjb25zdCBhdXRvIGNz
ID0gY2N0ejo6Y2l2aWxfc2Vjb25kKHllYXIsIG1vbiwgZGF5LCBob3VyLCBtaW4sIHNlYyk7Ci0g
IGFic2w6OlRpbWVDb252ZXJzaW9uIHRjOwotICB0Yy5ub3JtYWxpemVkID0geWVhciAhPSBjcy55
ZWFyKCkgfHwgbW9uICE9IGNzLm1vbnRoKCkgfHwgZGF5ICE9IGNzLmRheSgpIHx8Ci0gICAgICAg
ICAgICAgICAgICBob3VyICE9IGNzLmhvdXIoKSB8fCBtaW4gIT0gY3MubWludXRlKCkgfHwgc2Vj
ICE9IGNzLnNlY29uZCgpOwotICBjb25zdCBhdXRvIGNsID0gY3oubG9va3VwKGNzKTsKLSAgLy8g
Q29udmVydHMgdGhlIGNpdmlsX2xvb2t1cCBzdHJ1Y3QgdG8gYSBUaW1lQ29udmVyc2lvbi4KLSAg
dGMucHJlID0gTWFrZVRpbWVXaXRoT3ZlcmZsb3coY2wucHJlLCBjcywgY3osICZ0Yy5ub3JtYWxp
emVkKTsKLSAgdGMudHJhbnMgPSBNYWtlVGltZVdpdGhPdmVyZmxvdyhjbC50cmFucywgY3MsIGN6
LCAmdGMubm9ybWFsaXplZCk7Ci0gIHRjLnBvc3QgPSBNYWtlVGltZVdpdGhPdmVyZmxvdyhjbC5w
b3N0LCBjcywgY3osICZ0Yy5ub3JtYWxpemVkKTsKLSAgdGMua2luZCA9IE1hcEtpbmQoY2wua2lu
ZCk7Ci0gIHJldHVybiB0YzsKLX0KLQotYWJzbDo6VGltZSBGcm9tRGF0ZVRpbWUoaW50NjRfdCB5
ZWFyLCBpbnQgbW9uLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzZWMsIFRpbWVab25lIHR6KSB7Ci0gIGlmICh5ZWFyID4gMzAwMDAwMDAw
MDAwKSByZXR1cm4gSW5maW5pdGVGdXR1cmUoKTsKLSAgaWYgKHllYXIgPCAtMzAwMDAwMDAwMDAw
KSByZXR1cm4gSW5maW5pdGVQYXN0KCk7Ci0gIGNvbnN0IGF1dG8gY3ogPSBjY3R6Ojp0aW1lX3pv
bmUodHopOwotICBjb25zdCBhdXRvIGNzID0gY2N0ejo6Y2l2aWxfc2Vjb25kKHllYXIsIG1vbiwg
ZGF5LCBob3VyLCBtaW4sIHNlYyk7Ci0gIGNvbnN0IGF1dG8gY2wgPSBjei5sb29rdXAoY3MpOwot
ICByZXR1cm4gTWFrZVRpbWVXaXRoT3ZlcmZsb3coY2wucHJlLCBjcywgY3opOwotfQotCi1hYnNs
OjpUaW1lIFRpbWVGcm9tVGltZXNwZWModGltZXNwZWMgdHMpIHsKLSAgcmV0dXJuIHRpbWVfaW50
ZXJuYWw6OkZyb21Vbml4RHVyYXRpb24oYWJzbDo6RHVyYXRpb25Gcm9tVGltZXNwZWModHMpKTsK
LX0KLQotYWJzbDo6VGltZSBUaW1lRnJvbVRpbWV2YWwodGltZXZhbCB0dikgewotICByZXR1cm4g
dGltZV9pbnRlcm5hbDo6RnJvbVVuaXhEdXJhdGlvbihhYnNsOjpEdXJhdGlvbkZyb21UaW1ldmFs
KHR2KSk7Ci19Ci0KIGFic2w6OlRpbWUgRnJvbVVEYXRlKGRvdWJsZSB1ZGF0ZSkgewogICByZXR1
cm4gdGltZV9pbnRlcm5hbDo6RnJvbVVuaXhEdXJhdGlvbihhYnNsOjpNaWxsaXNlY29uZHModWRh
dGUpKTsKIH0KQEAgLTI4MSwxMCArMjM4LDYgQEAgYWJzbDo6VGltZSBGcm9tVW5pdmVyc2FsKGlu
dDY0X3QgdW5pdmVyc2FsKSB7CiAgIHJldHVybiBhYnNsOjpVbml2ZXJzYWxFcG9jaCgpICsgMTAw
ICogYWJzbDo6TmFub3NlY29uZHModW5pdmVyc2FsKTsKIH0KIAotLy8KLS8vIENvbnZlcnNpb24g
dG8gb3RoZXIgdGltZSB0eXBlcy4KLS8vCi0KIGludDY0X3QgVG9Vbml4TmFub3MoVGltZSB0KSB7
CiAgIGlmICh0aW1lX2ludGVybmFsOjpHZXRSZXBIaSh0aW1lX2ludGVybmFsOjpUb1VuaXhEdXJh
dGlvbih0KSkgPj0gMCAmJgogICAgICAgdGltZV9pbnRlcm5hbDo6R2V0UmVwSGkodGltZV9pbnRl
cm5hbDo6VG9Vbml4RHVyYXRpb24odCkpID4+IDMzID09IDApIHsKQEAgLTMyMSw2ICsyNzQsMjMg
QEAgaW50NjRfdCBUb1VuaXhTZWNvbmRzKFRpbWUgdCkgewogCiB0aW1lX3QgVG9UaW1lVChUaW1l
IHQpIHsgcmV0dXJuIGFic2w6OlRvVGltZXNwZWModCkudHZfc2VjOyB9CiAKK2RvdWJsZSBUb1VE
YXRlKFRpbWUgdCkgeworICByZXR1cm4gYWJzbDo6RkRpdkR1cmF0aW9uKHRpbWVfaW50ZXJuYWw6
OlRvVW5peER1cmF0aW9uKHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Ok1p
bGxpc2Vjb25kcygxKSk7Cit9CisKK2ludDY0X3QgVG9Vbml2ZXJzYWwoYWJzbDo6VGltZSB0KSB7
CisgIHJldHVybiBhYnNsOjpGbG9vclRvVW5pdCh0IC0gYWJzbDo6VW5pdmVyc2FsRXBvY2goKSwg
YWJzbDo6TmFub3NlY29uZHMoMTAwKSk7Cit9CisKK2Fic2w6OlRpbWUgVGltZUZyb21UaW1lc3Bl
Yyh0aW1lc3BlYyB0cykgeworICByZXR1cm4gdGltZV9pbnRlcm5hbDo6RnJvbVVuaXhEdXJhdGlv
bihhYnNsOjpEdXJhdGlvbkZyb21UaW1lc3BlYyh0cykpOworfQorCithYnNsOjpUaW1lIFRpbWVG
cm9tVGltZXZhbCh0aW1ldmFsIHR2KSB7CisgIHJldHVybiB0aW1lX2ludGVybmFsOjpGcm9tVW5p
eER1cmF0aW9uKGFic2w6OkR1cmF0aW9uRnJvbVRpbWV2YWwodHYpKTsKK30KKwogdGltZXNwZWMg
VG9UaW1lc3BlYyhUaW1lIHQpIHsKICAgdGltZXNwZWMgdHM7CiAgIGFic2w6OkR1cmF0aW9uIGQg
PSB0aW1lX2ludGVybmFsOjpUb1VuaXhEdXJhdGlvbih0KTsKQEAgLTM1OSwxNSArMzI5LDYgQEAg
dGltZXZhbCBUb1RpbWV2YWwoVGltZSB0KSB7CiAgIHJldHVybiB0djsKIH0KIAotZG91YmxlIFRv
VURhdGUoVGltZSB0KSB7Ci0gIHJldHVybiBhYnNsOjpGRGl2RHVyYXRpb24odGltZV9pbnRlcm5h
bDo6VG9Vbml4RHVyYXRpb24odCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
TWlsbGlzZWNvbmRzKDEpKTsKLX0KLQotaW50NjRfdCBUb1VuaXZlcnNhbChhYnNsOjpUaW1lIHQp
IHsKLSAgcmV0dXJuIGFic2w6OkZsb29yVG9Vbml0KHQgLSBhYnNsOjpVbml2ZXJzYWxFcG9jaCgp
LCBhYnNsOjpOYW5vc2Vjb25kcygxMDApKTsKLX0KLQogVGltZSBGcm9tQ2hyb25vKGNvbnN0IHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQmIHRwKSB7CiAgIHJldHVybiB0aW1l
X2ludGVybmFsOjpGcm9tVW5peER1cmF0aW9uKHRpbWVfaW50ZXJuYWw6OkZyb21DaHJvbm8oCiAg
ICAgICB0cCAtIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KDApKSk7CkBA
IC0zODEsNCArMzQyLDE0OCBAQCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IFRvQ2hyb25vVGltZShhYnNsOjpUaW1lIHQpIHsKICAgICAgICAgIHRpbWVfaW50ZXJuYWw6OlRv
Q2hyb25vRHVyYXRpb248RD4oZCk7CiB9CiAKKy8vCisvLyBUaW1lWm9uZQorLy8KKworYWJzbDo6
VGltZVpvbmU6OkNpdmlsSW5mbyBUaW1lWm9uZTo6QXQoVGltZSB0KSBjb25zdCB7CisgIGlmICh0
ID09IGFic2w6OkluZmluaXRlRnV0dXJlKCkpIHJldHVybiBJbmZpbml0ZUZ1dHVyZUNpdmlsSW5m
bygpOworICBpZiAodCA9PSBhYnNsOjpJbmZpbml0ZVBhc3QoKSkgcmV0dXJuIEluZmluaXRlUGFz
dENpdmlsSW5mbygpOworCisgIGNvbnN0IGF1dG8gdWQgPSB0aW1lX2ludGVybmFsOjpUb1VuaXhE
dXJhdGlvbih0KTsKKyAgY29uc3QgYXV0byB0cCA9IHVuaXhfZXBvY2goKSArIGNjdHo6OnNlY29u
ZHModGltZV9pbnRlcm5hbDo6R2V0UmVwSGkodWQpKTsKKyAgY29uc3QgYXV0byBhbCA9IGN6Xy5s
b29rdXAodHApOworCisgIFRpbWVab25lOjpDaXZpbEluZm8gY2k7CisgIGNpLmNzID0gQ2l2aWxT
ZWNvbmQoYWwuY3MpOworICBjaS5zdWJzZWNvbmQgPSB0aW1lX2ludGVybmFsOjpNYWtlRHVyYXRp
b24oMCwgdGltZV9pbnRlcm5hbDo6R2V0UmVwTG8odWQpKTsKKyAgY2kub2Zmc2V0ID0gYWwub2Zm
c2V0OworICBjaS5pc19kc3QgPSBhbC5pc19kc3Q7CisgIGNpLnpvbmVfYWJiciA9IGFsLmFiYnI7
CisgIHJldHVybiBjaTsKK30KKworYWJzbDo6VGltZVpvbmU6OlRpbWVJbmZvIFRpbWVab25lOjpB
dChDaXZpbFNlY29uZCBjdCkgY29uc3QgeworICBjb25zdCBjY3R6OjpjaXZpbF9zZWNvbmQgY3Mo
Y3QpOworICBjb25zdCBhdXRvIGNsID0gY3pfLmxvb2t1cChjcyk7CisKKyAgVGltZVpvbmU6OlRp
bWVJbmZvIHRpOworICBzd2l0Y2ggKGNsLmtpbmQpIHsKKyAgICBjYXNlIGNjdHo6OnRpbWVfem9u
ZTo6Y2l2aWxfbG9va3VwOjpVTklRVUU6CisgICAgICB0aS5raW5kID0gVGltZVpvbmU6OlRpbWVJ
bmZvOjpVTklRVUU7CisgICAgICBicmVhazsKKyAgICBjYXNlIGNjdHo6OnRpbWVfem9uZTo6Y2l2
aWxfbG9va3VwOjpTS0lQUEVEOgorICAgICAgdGkua2luZCA9IFRpbWVab25lOjpUaW1lSW5mbzo6
U0tJUFBFRDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgY2N0ejo6dGltZV96b25lOjpjaXZpbF9s
b29rdXA6OlJFUEVBVEVEOgorICAgICAgdGkua2luZCA9IFRpbWVab25lOjpUaW1lSW5mbzo6UkVQ
RUFURUQ7CisgICAgICBicmVhazsKKyAgfQorICB0aS5wcmUgPSBNYWtlVGltZVdpdGhPdmVyZmxv
dyhjbC5wcmUsIGNzLCBjel8pOworICB0aS50cmFucyA9IE1ha2VUaW1lV2l0aE92ZXJmbG93KGNs
LnRyYW5zLCBjcywgY3pfKTsKKyAgdGkucG9zdCA9IE1ha2VUaW1lV2l0aE92ZXJmbG93KGNsLnBv
c3QsIGNzLCBjel8pOworICByZXR1cm4gdGk7Cit9CisKK2Jvb2wgVGltZVpvbmU6Ok5leHRUcmFu
c2l0aW9uKFRpbWUgdCwgQ2l2aWxUcmFuc2l0aW9uKiB0cmFucykgY29uc3QgeworICByZXR1cm4g
RmluZFRyYW5zaXRpb24oY3pfLCAmY2N0ejo6dGltZV96b25lOjpuZXh0X3RyYW5zaXRpb24sIHQs
IHRyYW5zKTsKK30KKworYm9vbCBUaW1lWm9uZTo6UHJldlRyYW5zaXRpb24oVGltZSB0LCBDaXZp
bFRyYW5zaXRpb24qIHRyYW5zKSBjb25zdCB7CisgIHJldHVybiBGaW5kVHJhbnNpdGlvbihjel8s
ICZjY3R6Ojp0aW1lX3pvbmU6OnByZXZfdHJhbnNpdGlvbiwgdCwgdHJhbnMpOworfQorCisvLwor
Ly8gQ29udmVyc2lvbnMgaW52b2x2aW5nIHRpbWUgem9uZXMuCisvLworCithYnNsOjpUaW1lQ29u
dmVyc2lvbiBDb252ZXJ0RGF0ZVRpbWUoaW50NjRfdCB5ZWFyLCBpbnQgbW9uLCBpbnQgZGF5LCBp
bnQgaG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWluLCBp
bnQgc2VjLCBUaW1lWm9uZSB0eikgeworICAvLyBBdm9pZHMgeWVhcnMgdGhhdCBhcmUgdG9vIGV4
dHJlbWUgZm9yIENpdmlsU2Vjb25kIHRvIG5vcm1hbGl6ZS4KKyAgaWYgKHllYXIgPiAzMDAwMDAw
MDAwMDApIHJldHVybiBJbmZpbml0ZUZ1dHVyZVRpbWVDb252ZXJzaW9uKCk7CisgIGlmICh5ZWFy
IDwgLTMwMDAwMDAwMDAwMCkgcmV0dXJuIEluZmluaXRlUGFzdFRpbWVDb252ZXJzaW9uKCk7CisK
KyAgY29uc3QgQ2l2aWxTZWNvbmQgY3MoeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjKTsK
KyAgY29uc3QgYXV0byB0aSA9IHR6LkF0KGNzKTsKKworICBUaW1lQ29udmVyc2lvbiB0YzsKKyAg
dGMucHJlID0gdGkucHJlOworICB0Yy50cmFucyA9IHRpLnRyYW5zOworICB0Yy5wb3N0ID0gdGku
cG9zdDsKKyAgc3dpdGNoICh0aS5raW5kKSB7CisgICAgY2FzZSBUaW1lWm9uZTo6VGltZUluZm86
OlVOSVFVRToKKyAgICAgIHRjLmtpbmQgPSBUaW1lQ29udmVyc2lvbjo6VU5JUVVFOworICAgICAg
YnJlYWs7CisgICAgY2FzZSBUaW1lWm9uZTo6VGltZUluZm86OlNLSVBQRUQ6CisgICAgICB0Yy5r
aW5kID0gVGltZUNvbnZlcnNpb246OlNLSVBQRUQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIFRp
bWVab25lOjpUaW1lSW5mbzo6UkVQRUFURUQ6CisgICAgICB0Yy5raW5kID0gVGltZUNvbnZlcnNp
b246OlJFUEVBVEVEOworICAgICAgYnJlYWs7CisgIH0KKyAgdGMubm9ybWFsaXplZCA9IGZhbHNl
OworICBpZiAoeWVhciAhPSBjcy55ZWFyKCkgfHwgbW9uICE9IGNzLm1vbnRoKCkgfHwgZGF5ICE9
IGNzLmRheSgpIHx8CisgICAgICBob3VyICE9IGNzLmhvdXIoKSB8fCBtaW4gIT0gY3MubWludXRl
KCkgfHwgc2VjICE9IGNzLnNlY29uZCgpKSB7CisgICAgdGMubm9ybWFsaXplZCA9IHRydWU7Cisg
IH0KKyAgcmV0dXJuIHRjOworfQorCithYnNsOjpUaW1lIEZyb21UTShjb25zdCBzdHJ1Y3QgdG0m
IHRtLCBhYnNsOjpUaW1lWm9uZSB0eikgeworICBjb25zdCBDaXZpbFNlY29uZCBjcyh0bS50bV95
ZWFyICsgMTkwMCwgdG0udG1fbW9uICsgMSwgdG0udG1fbWRheSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgdG0udG1faG91ciwgdG0udG1fbWluLCB0bS50bV9zZWMpOworICBjb25zdCBhdXRvIHRp
ID0gdHouQXQoY3MpOworICByZXR1cm4gdG0udG1faXNkc3QgPT0gMCA/IHRpLnBvc3QgOiB0aS5w
cmU7Cit9CisKK3N0cnVjdCB0bSBUb1RNKGFic2w6OlRpbWUgdCwgYWJzbDo6VGltZVpvbmUgdHop
IHsKKyAgc3RydWN0IHRtIHRtID0ge307CisKKyAgY29uc3QgYXV0byBjaSA9IHR6LkF0KHQpOwor
ICBjb25zdCBhdXRvJiBjcyA9IGNpLmNzOworICB0bS50bV9zZWMgPSBjcy5zZWNvbmQoKTsKKyAg
dG0udG1fbWluID0gY3MubWludXRlKCk7CisgIHRtLnRtX2hvdXIgPSBjcy5ob3VyKCk7CisgIHRt
LnRtX21kYXkgPSBjcy5kYXkoKTsKKyAgdG0udG1fbW9uID0gY3MubW9udGgoKSAtIDE7CisKKyAg
Ly8gU2F0dXJhdGVzIHRtLnRtX3llYXIgaW4gY2FzZXMgb2Ygb3Zlci91bmRlcmZsb3csIGFjY291
bnRpbmcgZm9yIHRoZSBmYWN0CisgIC8vIHRoYXQgdG0udG1feWVhciBpcyB5ZWFycyBzaW5jZSAx
OTAwLgorICBpZiAoY3MueWVhcigpIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSAr
IDE5MDApIHsKKyAgICB0bS50bV95ZWFyID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4o
KTsKKyAgfSBlbHNlIGlmIChjcy55ZWFyKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpKSB7CisgICAgdG0udG1feWVhciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkg
LSAxOTAwOworICB9IGVsc2UgeworICAgIHRtLnRtX3llYXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGNz
LnllYXIoKSAtIDE5MDApOworICB9CisKKyAgc3dpdGNoIChHZXRXZWVrZGF5KGNzKSkgeworICAg
IGNhc2UgV2Vla2RheTo6c3VuZGF5OgorICAgICAgdG0udG1fd2RheSA9IDA7CisgICAgICBicmVh
azsKKyAgICBjYXNlIFdlZWtkYXk6Om1vbmRheToKKyAgICAgIHRtLnRtX3dkYXkgPSAxOworICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWVrZGF5Ojp0dWVzZGF5OgorICAgICAgdG0udG1fd2RheSA9
IDI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFdlZWtkYXk6OndlZG5lc2RheToKKyAgICAgIHRt
LnRtX3dkYXkgPSAzOworICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWVrZGF5Ojp0aHVyc2RheToK
KyAgICAgIHRtLnRtX3dkYXkgPSA0OworICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWVrZGF5Ojpm
cmlkYXk6CisgICAgICB0bS50bV93ZGF5ID0gNTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vl
a2RheTo6c2F0dXJkYXk6CisgICAgICB0bS50bV93ZGF5ID0gNjsKKyAgICAgIGJyZWFrOworICB9
CisgIHRtLnRtX3lkYXkgPSBHZXRZZWFyRGF5KGNzKSAtIDE7CisgIHRtLnRtX2lzZHN0ID0gY2ku
aXNfZHN0ID8gMSA6IDA7CisKKyAgcmV0dXJuIHRtOworfQorCiB9ICAvLyBuYW1lc3BhY2UgYWJz
bApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWUuaAppbmRl
eCA1MGJmOTcxZGYwYTI5Y2I0NzUwYWVmNzBjMTFlNzA1NDQ3NjQ2YTIyLi5jZWJiYzkxYjhmZjNi
YjlhMzRmN2E1ODEyOWE4MDBjNzM5OTYwYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWUu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL3RpbWUuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLApAQCAtMjUsMTggKzI1LDI5IEBACiAvLyAgKiBgYWJzbDo6VGltZVpvbmVgIGRl
ZmluZXMgZ2VvcG9saXRpY2FsIHRpbWUgem9uZSByZWdpb25zIChhcyBjb2xsZWN0ZWQKIC8vICAg
ICB3aXRoaW4gdGhlIElBTkEgVGltZSBab25lIGRhdGFiYXNlIChodHRwczovL3d3dy5pYW5hLm9y
Zy90aW1lLXpvbmVzKSkuCiAvLworLy8gTm90ZTogQWJzb2x1dGUgdGltZXMgYXJlIGRpc3RpbmN0
IGZyb20gY2l2aWwgdGltZXMsIHdoaWNoIHJlZmVyIHRvIHRoZQorLy8gaHVtYW4tc2NhbGUgdGlt
ZSBjb21tb25seSByZXByZXNlbnRlZCBieSBgWVlZWS1NTS1ERCBoaDptbTpzc2AuIFRoZSBtYXBw
aW5nCisvLyBiZXR3ZWVuIGFic29sdXRlIGFuZCBjaXZpbCB0aW1lcyBjYW4gYmUgc3BlY2lmaWVk
IGJ5IHVzZSBvZiB0aW1lIHpvbmVzCisvLyAoYGFic2w6OlRpbWVab25lYCB3aXRoaW4gdGhpcyBB
UEkpLiBUaGF0IGlzOgorLy8KKy8vICAgQ2l2aWwgVGltZSA9IEYoQWJzb2x1dGUgVGltZSwgVGlt
ZSBab25lKQorLy8gICBBYnNvbHV0ZSBUaW1lID0gRyhDaXZpbCBUaW1lLCBUaW1lIFpvbmUpCisv
LworLy8gU2VlIGNpdmlsX3RpbWUuaCBmb3IgYWJzdHJhY3Rpb25zIHJlbGF0ZWQgdG8gY29uc3Ry
dWN0aW5nIGFuZCBtYW5pcHVsYXRpbmcKKy8vIGNpdmlsIHRpbWUuCiAvLwogLy8gRXhhbXBsZToK
IC8vCiAvLyAgIGFic2w6OlRpbWVab25lIG55YzsKLS8vCiAvLyAgIC8vIExvYWRUaW1lWm9uZSgp
IG1heSBmYWlsIHNvIGl0J3MgYWx3YXlzIGJldHRlciB0byBjaGVjayBmb3Igc3VjY2Vzcy4KIC8v
ICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTmV3X1lvcmsiLCAmbnljKSkgewog
Ly8gICAgICAvLyBoYW5kbGUgZXJyb3IgY2FzZQogLy8gICB9CiAvLwogLy8gICAvLyBNeSBmbGln
aHQgbGVhdmVzIE5ZQyBvbiBKYW4gMiwgMjAxNyBhdCAwMzowNDowNQotLy8gICBhYnNsOjpUaW1l
IHRha2VvZmYgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNywgMSwgMiwgMywgNCwgNSwgbnljKTsK
Ky8vICAgYWJzbDo6Q2l2aWxTZWNvbmQgY3MoMjAxNywgMSwgMiwgMywgNCwgNSk7CisvLyAgIGFi
c2w6OlRpbWUgdGFrZW9mZiA9IGFic2w6OkZyb21DaXZpbChjcywgbnljKTsKKy8vCiAvLyAgIGFi
c2w6OkR1cmF0aW9uIGZsaWdodF9kdXJhdGlvbiA9IGFic2w6OkhvdXJzKDIxKSArIGFic2w6Ok1p
bnV0ZXMoMzUpOwogLy8gICBhYnNsOjpUaW1lIGxhbmRpbmcgPSB0YWtlb2ZmICsgZmxpZ2h0X2R1
cmF0aW9uOwogLy8KQEAgLTQ3LDE2ICs1OCwyNCBAQAogLy8gICBzdGQ6OnN0cmluZyBzID0gYWJz
bDo6Rm9ybWF0VGltZSgKIC8vICAgICAgICJNeSBmbGlnaHQgd2lsbCBsYW5kIGluIFN5ZG5leSBv
biAlWS0lbS0lZCBhdCAlSDolTTolUyIsCiAvLyAgICAgICBsYW5kaW5nLCBzeWQpOwotLy8KKwog
I2lmbmRlZiBBQlNMX1RJTUVfVElNRV9IXwogI2RlZmluZSBBQlNMX1RJTUVfVElNRV9IXwogCiAj
aWYgIWRlZmluZWQoX01TQ19WRVIpCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNlbHNlCi0jaW5j
bHVkZSA8d2luc29jazIuaD4KKy8vIFdlIGRvbid0IGluY2x1ZGUgYHdpbnNvY2syLmhgIGJlY2F1
c2UgaXQgZHJhZ3MgaW4gYHdpbmRvd3MuaGAgYW5kIGZyaWVuZHMsCisvLyBhbmQgdGhleSBkZWZp
bmUgY29uZmxpY3RpbmcgbWFjcm9zIGxpa2UgT1BBUVVFLCBFUlJPUiwgYW5kIG1vcmUuIFRoaXMg
aGFzIHRoZQorLy8gcG90ZW50aWFsIHRvIGJyZWFrIEFic2VpbCB1c2Vycy4KKy8vCisvLyBJbnN0
ZWFkIHdlIG9ubHkgZm9yd2FyZCBkZWNsYXJlIGB0aW1ldmFsYCBhbmQgcmVxdWlyZSBXaW5kb3dz
IHVzZXJzIGluY2x1ZGUKKy8vIGB3aW5zb2NrMi5oYCB0aGVtc2VsdmVzLiBUaGlzIGlzIGJvdGgg
aW5jb25zaXN0ZW50IGFuZCB0cm91Ymxlc29tZSwgYnV0IHNvIGlzCisvLyBpbmNsdWRpbmcgJ3dp
bmRvd3MuaCcgc28gd2UgYXJlIHBpY2tpbmcgdGhlIGxlc3NlciBvZiB0d28gZXZpbHMgaGVyZS4K
K3N0cnVjdCB0aW1ldmFsOwogI2VuZGlmCiAjaW5jbHVkZSA8Y2hyb25vPiAgLy8gTk9MSU5UKGJ1
aWxkL2MrKzExKQorI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVk
ZSA8Y3RpbWU+CiAjaW5jbHVkZSA8b3N0cmVhbT4KQEAgLTY0LDggKzgzLDggQEAKICNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaW5jbHVkZSAiYWJzbC9iYXNl
L3BvcnQuaCIgIC8vIE5lZWRlZCBmb3Igc3RyaW5nIHZzIHN0ZDo6c3RyaW5nCiAjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYWJzbC90aW1lL2NpdmlsX3Rp
bWUuaCIKICNpbmNsdWRlICJhYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGlt
ZV96b25lLmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKQEAgLTE0MCw2ICsxNTksMTYgQEAgY2xhc3Mg
RHVyYXRpb24gewogICAvLyBWYWx1ZSBzZW1hbnRpY3MuCiAgIGNvbnN0ZXhwciBEdXJhdGlvbigp
IDogcmVwX2hpXygwKSwgcmVwX2xvXygwKSB7fSAgLy8gemVyby1sZW5ndGggZHVyYXRpb24KIAor
ICAvLyBDb3B5YWJsZS4KKyNpZiAhZGVmaW5lZChfX2NsYW5nX18pICYmIGRlZmluZWQoX01TQ19W
RVIpICYmIF9NU0NfVkVSIDwgMTkxMAorICAvLyBFeHBsaWNpdGx5IGRlZmluaW5nIHRoZSBjb25z
dGV4cHIgY29weSBjb25zdHJ1Y3RvciBhdm9pZHMgYW4gTVNWQyBidWcuCisgIGNvbnN0ZXhwciBE
dXJhdGlvbihjb25zdCBEdXJhdGlvbiYgZCkKKyAgICAgIDogcmVwX2hpXyhkLnJlcF9oaV8pLCBy
ZXBfbG9fKGQucmVwX2xvXykge30KKyNlbHNlCisgIGNvbnN0ZXhwciBEdXJhdGlvbihjb25zdCBE
dXJhdGlvbiYgZCkgPSBkZWZhdWx0OworI2VuZGlmCisgIER1cmF0aW9uJiBvcGVyYXRvcj0oY29u
c3QgRHVyYXRpb24mIGQpID0gZGVmYXVsdDsKKwogICAvLyBDb21wb3VuZCBhc3NpZ25tZW50IG9w
ZXJhdG9ycy4KICAgRHVyYXRpb24mIG9wZXJhdG9yKz0oRHVyYXRpb24gZCk7CiAgIER1cmF0aW9u
JiBvcGVyYXRvci09KER1cmF0aW9uIGQpOwpAQCAtMTUwLDYgKzE3OSw3IEBAIGNsYXNzIER1cmF0
aW9uIHsKICAgRHVyYXRpb24mIG9wZXJhdG9yJT0oRHVyYXRpb24gcmhzKTsKIAogICAvLyBPdmVy
bG9hZHMgdGhhdCBmb3J3YXJkIHRvIGVpdGhlciB0aGUgaW50NjRfdCBvciBkb3VibGUgb3Zlcmxv
YWRzIGFib3ZlLgorICAvLyBJbnRlZ2VyIG9wZXJhbmRzIG11c3QgYmUgcmVwcmVzZW50YWJsZSBh
cyBpbnQ2NF90LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgRHVyYXRpb24mIG9wZXJhdG9y
Kj0oVCByKSB7CiAgICAgaW50NjRfdCB4ID0gcjsKQEAgLTE5Miw2ICsyMjIsNyBAQCBpbmxpbmUg
RHVyYXRpb24gb3BlcmF0b3IrKER1cmF0aW9uIGxocywgRHVyYXRpb24gcmhzKSB7IHJldHVybiBs
aHMgKz0gcmhzOyB9CiBpbmxpbmUgRHVyYXRpb24gb3BlcmF0b3ItKER1cmF0aW9uIGxocywgRHVy
YXRpb24gcmhzKSB7IHJldHVybiBsaHMgLT0gcmhzOyB9CiAKIC8vIE11bHRpcGxpY2F0aXZlIE9w
ZXJhdG9ycworLy8gSW50ZWdlciBvcGVyYW5kcyBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgaW50
NjRfdC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogRHVyYXRpb24gb3BlcmF0b3IqKER1cmF0aW9u
IGxocywgVCByaHMpIHsKICAgcmV0dXJuIGxocyAqPSByaHM7CkBAIC0zNDYsMTMgKzM3NywxNCBA
QCBjb25zdGV4cHIgRHVyYXRpb24gSW5maW5pdGVEdXJhdGlvbigpOwogLy8gSG91cnMoKQogLy8K
IC8vIEZhY3RvcnkgZnVuY3Rpb25zIGZvciBjb25zdHJ1Y3RpbmcgYER1cmF0aW9uYCB2YWx1ZXMg
ZnJvbSBhbiBpbnRlZ3JhbCBudW1iZXIKLS8vIG9mIHRoZSB1bml0IGluZGljYXRlZCBieSB0aGUg
ZmFjdG9yeSBmdW5jdGlvbidzIG5hbWUuCi0vLwotLy8gTm90ZTogbm8gIkRheXMoKSIgZmFjdG9y
eSBmdW5jdGlvbiBleGlzdHMgYmVjYXVzZSAiYSBkYXkiIGlzIGFtYmlndW91cy4gQ2l2aWwKLS8v
IGRheXMgYXJlIG5vdCBhbHdheXMgMjQgaG91cnMgbG9uZywgYW5kIGEgMjQtaG91ciBkdXJhdGlv
biBvZnRlbiBkb2VzIG5vdAotLy8gY29ycmVzcG9uZCB3aXRoIGEgY2l2aWwgZGF5LiBJZiBhIDI0
LWhvdXIgZHVyYXRpb24gaXMgbmVlZGVkLCB1c2UKLS8vIGBhYnNsOjpIb3VycygyNClgLgorLy8g
b2YgdGhlIHVuaXQgaW5kaWNhdGVkIGJ5IHRoZSBmYWN0b3J5IGZ1bmN0aW9uJ3MgbmFtZS4gVGhl
IG51bWJlciBtdXN0IGJlCisvLyByZXByZXNlbnRhYmxlIGFzIGludDY0X3QuCiAvLworLy8gTk9U
RTogbm8gIkRheXMoKSIgZmFjdG9yeSBmdW5jdGlvbiBleGlzdHMgYmVjYXVzZSAiYSBkYXkiIGlz
IGFtYmlndW91cy4KKy8vIENpdmlsIGRheXMgYXJlIG5vdCBhbHdheXMgMjQgaG91cnMgbG9uZywg
YW5kIGEgMjQtaG91ciBkdXJhdGlvbiBvZnRlbiBkb2VzCisvLyBub3QgY29ycmVzcG9uZCB3aXRo
IGEgY2l2aWwgZGF5LiBJZiBhIDI0LWhvdXIgZHVyYXRpb24gaXMgbmVlZGVkLCB1c2UKKy8vIGBh
YnNsOjpIb3VycygyNClgLiBJZiB5b3UgYWN0dWFsbHkgd2FudCBhIGNpdmlsIGRheSwgdXNlIGFi
c2w6OkNpdmlsRGF5CisvLyBmcm9tIGNpdmlsX3RpbWUuaC4KIC8vCiAvLyBFeGFtcGxlOgogLy8K
QEAgLTM3MSw2ICs0MDMsNyBAQCBjb25zdGV4cHIgRHVyYXRpb24gSG91cnMoaW50NjRfdCBuKTsK
IC8vIGZhY3Rvcmllcywgd2hpY2ggc2hvdWxkIGJlIHByZWZlcnJlZC4KIC8vCiAvLyBFeGFtcGxl
OgorLy8KIC8vICAgYXV0byBhID0gYWJzbDo6U2Vjb25kcygxLjUpOyAgICAgICAgLy8gT0sKIC8v
ICAgYXV0byBiID0gYWJzbDo6TWlsbGlzZWNvbmRzKDE1MDApOyAgLy8gQkVUVEVSCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdGltZV9pbnRlcm5hbDo6RW5hYmxlSWZGbG9hdDxUPiA9IDA+CkBAIC0z
ODcsMTEgKzQyMCwxMyBAQCBEdXJhdGlvbiBNaWxsaXNlY29uZHMoVCBuKSB7CiB9CiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdGltZV9pbnRlcm5hbDo6RW5hYmxlSWZGbG9hdDxUPiA9IDA+CiBEdXJh
dGlvbiBTZWNvbmRzKFQgbikgewotICBpZiAobiA+PSAwKSB7Ci0gICAgaWYgKG4gPj0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpIHJldHVybiBJbmZpbml0ZUR1cmF0aW9uKCk7
CisgIGlmIChuID49IDApIHsgIC8vIE5vdGU6IGBOYU4gPj0gMGAgaXMgZmFsc2UuCisgICAgaWYg
KG4gPj0gKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCkoKSkgcmV0dXJuIEluZmlu
aXRlRHVyYXRpb24oKTsKICAgICByZXR1cm4gdGltZV9pbnRlcm5hbDo6TWFrZVBvc0RvdWJsZUR1
cmF0aW9uKG4pOwogICB9IGVsc2UgewotICAgIGlmIChuIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1pbigpKSByZXR1cm4gLUluZmluaXRlRHVyYXRpb24oKTsKKyAgICBpZiAoc3Rk
Ojppc25hbihuKSkKKyAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQobikgPyAtSW5maW5pdGVEdXJh
dGlvbigpIDogSW5maW5pdGVEdXJhdGlvbigpOworICAgIGlmIChuIDw9IChzdGQ6Om51bWVyaWNf
bGltaXRzPGludDY0X3Q+OjptaW4pKCkpIHJldHVybiAtSW5maW5pdGVEdXJhdGlvbigpOwogICAg
IHJldHVybiAtdGltZV9pbnRlcm5hbDo6TWFrZVBvc0RvdWJsZUR1cmF0aW9uKC1uKTsKICAgfQog
fQpAQCAtNTQzLDEwICs1NzgsOSBAQCBzdGQ6OnN0cmluZyBVbnBhcnNlRmxhZyhEdXJhdGlvbiBk
KTsKIC8vIFRoZSBgYWJzbDo6VGltZWAgY2xhc3MgcmVwcmVzZW50cyBhbiBpbnN0YW50IGluIHRp
bWUgYXMgYSBjb3VudCBvZiBjbG9jawogLy8gdGlja3Mgb2Ygc29tZSBncmFudWxhcml0eSAocmVz
b2x1dGlvbikgZnJvbSBzb21lIHN0YXJ0aW5nIHBvaW50IChlcG9jaCkuCiAvLwotLy8KIC8vIGBh
YnNsOjpUaW1lYCB1c2VzIGEgcmVzb2x1dGlvbiB0aGF0IGlzIGhpZ2ggZW5vdWdoIHRvIGF2b2lk
IGxvc3MgaW4KIC8vIHByZWNpc2lvbiwgYW5kIGEgcmFuZ2UgdGhhdCBpcyB3aWRlIGVub3VnaCB0
byBhdm9pZCBvdmVyZmxvdywgd2hlbgotLy8gY29udmVydGluZyBiZXR3ZWVuIHRpY2sgY291bnRz
IGluIG1vc3QgR29vZ2xlIHRpbWUgc2NhbGVzIChpLmUuLCBwcmVjaXNpb24KKy8vIGNvbnZlcnRp
bmcgYmV0d2VlbiB0aWNrIGNvdW50cyBpbiBtb3N0IEdvb2dsZSB0aW1lIHNjYWxlcyAoaS5lLiwg
cmVzb2x1dGlvbgogLy8gb2YgYXQgbGVhc3Qgb25lIG5hbm9zZWNvbmQsIGFuZCByYW5nZSArLy0x
MDAgYmlsbGlvbiB5ZWFycykuICBDb252ZXJzaW9ucwogLy8gYmV0d2VlbiB0aGUgdGltZSBzY2Fs
ZXMgYXJlIHBlcmZvcm1lZCBieSB0cnVuY2F0aW5nICh0b3dhcmRzIG5lZ2F0aXZlCiAvLyBpbmZp
bml0eSkgdG8gdGhlIG5lYXJlc3QgcmVwcmVzZW50YWJsZSBwb2ludC4KQEAgLTU1Niw3ICs1OTAs
NiBAQCBzdGQ6OnN0cmluZyBVbnBhcnNlRmxhZyhEdXJhdGlvbiBkKTsKIC8vICAgYWJzbDo6VGlt
ZSB0MSA9IC4uLjsKIC8vICAgYWJzbDo6VGltZSB0MiA9IHQxICsgYWJzbDo6TWludXRlcygyKTsK
IC8vICAgYWJzbDo6RHVyYXRpb24gZCA9IHQyIC0gdDE7ICAvLyA9PSBhYnNsOjpNaW51dGVzKDIp
Ci0vLyAgIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IHQxLkluKGFic2w6OkxvY2FsVGltZVpv
bmUoKSk7CiAvLwogY2xhc3MgVGltZSB7CiAgcHVibGljOgpAQCAtNTcxLDcgKzYwNCwxMSBAQCBj
bGFzcyBUaW1lIHsKICAgLy8gICBhYnNsOjpUaW1lIHQgPSBhYnNsOjpOb3coKTsKICAgLy8gICBh
YnNsOjpUaW1lIHQgPSBhYnNsOjpUaW1lRnJvbVRpbWV2YWwodHYpOwogICAvLyAgIGFic2w6OlRp
bWUgdCA9IGFic2w6OkluZmluaXRlUGFzdCgpOwotICBjb25zdGV4cHIgVGltZSgpIHt9CisgIGNv
bnN0ZXhwciBUaW1lKCkgPSBkZWZhdWx0OworCisgIC8vIENvcHlhYmxlLgorICBjb25zdGV4cHIg
VGltZShjb25zdCBUaW1lJiB0KSA9IGRlZmF1bHQ7CisgIFRpbWUmIG9wZXJhdG9yPShjb25zdCBU
aW1lJiB0KSA9IGRlZmF1bHQ7CiAKICAgLy8gQXNzaWdubWVudCBvcGVyYXRvcnMuCiAgIFRpbWUm
IG9wZXJhdG9yKz0oRHVyYXRpb24gZCkgewpAQCAtNTkwLDcgKzYyNywxMCBAQCBjbGFzcyBUaW1l
IHsKICAgLy8gaW50ZW5kZWQgdG8gcmVwcmVzZW50IGFuIGluc3RhbnQgaW4gdGltZS4gU28sIHJh
dGhlciB0aGFuIHBhc3NpbmcKICAgLy8gYSBgVGltZTo6QnJlYWtkb3duYCB0byBhIGZ1bmN0aW9u
LCBwYXNzIGFuIGBhYnNsOjpUaW1lYCBhbmQgYW4KICAgLy8gYGFic2w6OlRpbWVab25lYC4KLSAg
c3RydWN0IEJyZWFrZG93biB7CisgIC8vCisgIC8vIERlcHJlY2F0ZWQuIFVzZSBgYWJzbDo6VGlt
ZVpvbmU6OkNpdmlsSW5mb2AuCisgIHN0cnVjdAorICAgICAgQnJlYWtkb3duIHsKICAgICBpbnQ2
NF90IHllYXI7ICAgICAgICAgIC8vIHllYXIgKGUuZy4sIDIwMTMpCiAgICAgaW50IG1vbnRoOyAg
ICAgICAgICAgLy8gbW9udGggb2YgeWVhciBbMToxMl0KICAgICBpbnQgZGF5OyAgICAgICAgICAg
ICAvLyBkYXkgb2YgbW9udGggWzE6MzFdCkBAIC02MTQsNiArNjU0LDggQEAgY2xhc3MgVGltZSB7
CiAgIC8vIFRpbWU6OkluKCkKICAgLy8KICAgLy8gUmV0dXJucyB0aGUgYnJlYWtkb3duIG9mIHRo
aXMgaW5zdGFudCBpbiB0aGUgZ2l2ZW4gVGltZVpvbmUuCisgIC8vCisgIC8vIERlcHJlY2F0ZWQu
IFVzZSBgYWJzbDo6VGltZVpvbmU6OkF0KFRpbWUpYC4KICAgQnJlYWtkb3duIEluKFRpbWVab25l
IHR6KSBjb25zdDsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KQEAgLTY2OCw3ICs3MTAsNyBA
QCBjb25zdGV4cHIgVGltZSBVbml2ZXJzYWxFcG9jaCgpIHsKIC8vIFJldHVybnMgYW4gYGFic2w6
OlRpbWVgIHRoYXQgaXMgaW5maW5pdGVseSBmYXIgaW4gdGhlIGZ1dHVyZS4KIGNvbnN0ZXhwciBU
aW1lIEluZmluaXRlRnV0dXJlKCkgewogICByZXR1cm4gVGltZSgKLSAgICAgIHRpbWVfaW50ZXJu
YWw6Ok1ha2VEdXJhdGlvbihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgfjBV
KSk7CisgICAgICB0aW1lX2ludGVybmFsOjpNYWtlRHVyYXRpb24oKHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1heCkoKSwgfjBVKSk7CiB9CiAKIC8vIEluZmluaXRlUGFzdCgpCkBAIC02
NzYsMTI5ICs3MTgsOSBAQCBjb25zdGV4cHIgVGltZSBJbmZpbml0ZUZ1dHVyZSgpIHsKIC8vIFJl
dHVybnMgYW4gYGFic2w6OlRpbWVgIHRoYXQgaXMgaW5maW5pdGVseSBmYXIgaW4gdGhlIHBhc3Qu
CiBjb25zdGV4cHIgVGltZSBJbmZpbml0ZVBhc3QoKSB7CiAgIHJldHVybiBUaW1lKAotICAgICAg
dGltZV9pbnRlcm5hbDo6TWFrZUR1cmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46
Om1pbigpLCB+MFUpKTsKKyAgICAgIHRpbWVfaW50ZXJuYWw6Ok1ha2VEdXJhdGlvbigoc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKSgpLCB+MFUpKTsKIH0KIAotLy8gVGltZUNvbnZl
cnNpb24KLS8vCi0vLyBBbiBgYWJzbDo6VGltZUNvbnZlcnNpb25gIHJlcHJlc2VudHMgdGhlIGNv
bnZlcnNpb24gb2YgeWVhciwgbW9udGgsIGRheSwKLS8vIGhvdXIsIG1pbnV0ZSwgYW5kIHNlY29u
ZCB2YWx1ZXMgKGkuZS4sIGEgY2l2aWwgdGltZSksIGluIGEgcGFydGljdWxhcgotLy8gYGFic2w6
OlRpbWVab25lYCwgdG8gYSB0aW1lIGluc3RhbnQgKGFuIGFic29sdXRlIHRpbWUpLCBhcyByZXR1
cm5lZCBieQotLy8gYGFic2w6OkNvbnZlcnREYXRlVGltZSgpYC4gKFN1YnNlY29uZHMgbXVzdCBi
ZSBoYW5kbGVkIHNlcGFyYXRlbHkuKQotLy8KLS8vIEl0IGlzIHBvc3NpYmxlLCB0aG91Z2gsIGZv
ciBhIGNhbGxlciB0byB0cnkgdG8gY29udmVydCB2YWx1ZXMgdGhhdAotLy8gZG8gbm90IHJlcHJl
c2VudCBhbiBhY3R1YWwgb3IgdW5pcXVlIGluc3RhbnQgaW4gdGltZSAoZHVlIHRvIGEgc2hpZnQK
LS8vIGluIFVUQyBvZmZzZXQgaW4gdGhlIGBhYnNsOjpUaW1lWm9uZWAsIHdoaWNoIHJlc3VsdHMg
aW4gYSBkaXNjb250aW51aXR5IGluCi0vLyB0aGUgY2l2aWwtdGltZSBjb21wb25lbnRzKS4gRm9y
IGV4YW1wbGUsIGEgZGF5bGlnaHQtc2F2aW5nLXRpbWUKLS8vIHRyYW5zaXRpb24gc2tpcHMgb3Ig
cmVwZWF0cyBjaXZpbCB0aW1lcy0tLWluIHRoZSBVbml0ZWQgU3RhdGVzLCBNYXJjaAotLy8gMTMs
IDIwMTEgMDI6MTUgbmV2ZXIgb2NjdXJyZWQsIHdoaWxlIE5vdmVtYmVyIDYsIDIwMTEgMDE6MTUg
b2NjdXJyZWQKLS8vIHR3aWNlLS0tc28gcmVxdWVzdHMgZm9yIHN1Y2ggdGltZXMgYXJlIG5vdCB3
ZWxsLWRlZmluZWQuCi0vLwotLy8gVG8gYWNjb3VudCBmb3IgdGhlc2UgcG9zc2liaWxpdGllcywg
YGFic2w6OlRpbWVDb252ZXJzaW9uYCBpcyByaWNoZXIKLS8vIHRoYW4ganVzdCBhIHNpbmdsZSBg
YWJzbDo6VGltZWAuIFdoZW4gdGhlIGNpdmlsIHRpbWUgaXMgc2tpcHBlZCBvcgotLy8gcmVwZWF0
ZWQsIGBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoKWAgcmV0dXJucyB0aW1lcyBjYWxjdWxhdGVkIHVz
aW5nIHRoZQotLy8gcHJlLXRyYW5zaXRpb24gYW5kIHBvc3QtdHJhbnNpdGlvbiBVVEMgb2Zmc2V0
cywgcGx1cyB0aGUgdHJhbnNpdGlvbgotLy8gdGltZSBpdHNlbGYuCi0vLwotLy8gRXhhbXBsZXM6
Ci0vLwotLy8gICBhYnNsOjpUaW1lWm9uZSBsYXg7Ci0vLyAgIGlmICghYWJzbDo6TG9hZFRpbWVa
b25lKCJBbWVyaWNhL0xvc19BbmdlbGVzIiwgJmxheCkpIHsKLS8vICAgICAvLyBoYW5kbGUgZXJy
b3IgY2FzZQotLy8gICB9Ci0vLwotLy8gICAvLyBBIHVuaXF1ZSBjaXZpbCB0aW1lCi0vLyAgIGFi
c2w6OlRpbWVDb252ZXJzaW9uIGphbjAxID0KLS8vICAgICAgIGFic2w6OkNvbnZlcnREYXRlVGlt
ZSgyMDExLCAxLCAxLCAwLCAwLCAwLCBsYXgpOwotLy8gICAvLyBqYW4wMS5raW5kID09IFRpbWVD
b252ZXJzaW9uOjpVTklRVUUKLS8vICAgLy8gamFuMDEucHJlICAgIGlzIDIwMTEvMDEvMDEgMDA6
MDA6MDAgLTA4MDAKLS8vICAgLy8gamFuMDEudHJhbnMgIGlzIDIwMTEvMDEvMDEgMDA6MDA6MDAg
LTA4MDAKLS8vICAgLy8gamFuMDEucG9zdCAgIGlzIDIwMTEvMDEvMDEgMDA6MDA6MDAgLTA4MDAK
LS8vCi0vLyAgIC8vIEEgU3ByaW5nIERTVCB0cmFuc2l0aW9uLCB3aGVuIHRoZXJlIGlzIGEgZ2Fw
IGluIGNpdmlsIHRpbWUKLS8vICAgYWJzbDo6VGltZUNvbnZlcnNpb24gbWFyMTMgPQotLy8gICAg
ICAgYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTEsIDMsIDEzLCAyLCAxNSwgMCwgbGF4KTsKLS8v
ICAgLy8gbWFyMTMua2luZCA9PSBUaW1lQ29udmVyc2lvbjo6U0tJUFBFRAotLy8gICAvLyBtYXIx
My5wcmUgICBpcyAyMDExLzAzLzEzIDAzOjE1OjAwIC0wNzAwCi0vLyAgIC8vIG1hcjEzLnRyYW5z
IGlzIDIwMTEvMDMvMTMgMDM6MDA6MDAgLTA3MDAKLS8vICAgLy8gbWFyMTMucG9zdCAgaXMgMjAx
MS8wMy8xMyAwMToxNTowMCAtMDgwMAotLy8KLS8vICAgLy8gQSBGYWxsIERTVCB0cmFuc2l0aW9u
LCB3aGVuIGNpdmlsIHRpbWVzIGFyZSByZXBlYXRlZAotLy8gICBhYnNsOjpUaW1lQ29udmVyc2lv
biBub3YwNiA9Ci0vLyAgICAgICBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMSwgMTEsIDYsIDEs
IDE1LCAwLCBsYXgpOwotLy8gICAvLyBub3YwNi5raW5kID09IFRpbWVDb252ZXJzaW9uOjpSRVBF
QVRFRAotLy8gICAvLyBub3YwNi5wcmUgICBpcyAyMDExLzExLzA2IDAxOjE1OjAwIC0wNzAwCi0v
LyAgIC8vIG5vdjA2LnRyYW5zIGlzIDIwMTEvMTEvMDYgMDE6MDA6MDAgLTA4MDAKLS8vICAgLy8g
bm92MDYucG9zdCAgaXMgMjAxMS8xMS8wNiAwMToxNTowMCAtMDgwMAotLy8KLS8vIFRoZSBpbnB1
dCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIGFuZCBzZWNvbmQgdmFsdWVzIGNhbiBhbHNvIGJl
Ci0vLyBvdXRzaWRlIG9mIHRoZWlyIHZhbGlkIHJhbmdlcywgaW4gd2hpY2ggY2FzZSB0aGV5IHdp
bGwgYmUgIm5vcm1hbGl6ZWQiCi0vLyBkdXJpbmcgdGhlIGNvbnZlcnNpb24uCi0vLwotLy8gRXhh
bXBsZToKLS8vCi0vLyAgIC8vICJPY3RvYmVyIDMyIiBub3JtYWxpemVzIHRvICJOb3ZlbWJlciAx
Ii4KLS8vICAgYWJzbDo6VGltZVpvbmUgdHogPSBhYnNsOjpMb2NhbFRpbWVab25lKCk7Ci0vLyAg
IGFic2w6OlRpbWVDb252ZXJzaW9uIHRjID0KLS8vICAgICAgIGFic2w6OkNvbnZlcnREYXRlVGlt
ZSgyMDEzLCAxMCwgMzIsIDgsIDMwLCAwLCB0eik7Ci0vLyAgIC8vIHRjLmtpbmQgPT0gVGltZUNv
bnZlcnNpb246OlVOSVFVRSAmJiB0Yy5ub3JtYWxpemVkID09IHRydWUKLS8vICAgLy8gdGMucHJl
LkluKHR6KS5tb250aCA9PSAxMSAmJiB0Yy5wcmUuSW4odHopLmRheSA9PSAxCi1zdHJ1Y3QgVGlt
ZUNvbnZlcnNpb24gewotICBUaW1lIHByZTsgICAgLy8gdGltZSBjYWxjdWxhdGVkIHVzaW5nIHRo
ZSBwcmUtdHJhbnNpdGlvbiBvZmZzZXQKLSAgVGltZSB0cmFuczsgIC8vIHdoZW4gdGhlIGNpdmls
LXRpbWUgZGlzY29udGludWl0eSBvY2N1cnJlZAotICBUaW1lIHBvc3Q7ICAgLy8gdGltZSBjYWxj
dWxhdGVkIHVzaW5nIHRoZSBwb3N0LXRyYW5zaXRpb24gb2Zmc2V0Ci0KLSAgZW51bSBLaW5kIHsK
LSAgICBVTklRVUUsICAgIC8vIHRoZSBjaXZpbCB0aW1lIHdhcyBzaW5ndWxhciAocHJlID09IHRy
YW5zID09IHBvc3QpCi0gICAgU0tJUFBFRCwgICAvLyB0aGUgY2l2aWwgdGltZSBkaWQgbm90IGV4
aXN0Ci0gICAgUkVQRUFURUQsICAvLyB0aGUgY2l2aWwgdGltZSB3YXMgYW1iaWd1b3VzCi0gIH07
Ci0gIEtpbmQga2luZDsKLQotICBib29sIG5vcm1hbGl6ZWQ7ICAvLyBpbnB1dCB2YWx1ZXMgd2Vy
ZSBvdXRzaWRlIHRoZWlyIHZhbGlkIHJhbmdlcwotfTsKLQotLy8gQ29udmVydERhdGVUaW1lKCkK
LS8vCi0vLyBUaGUgZnVsbCBnZW5lcmFsaXR5IG9mIGEgY2l2aWwgdGltZSB0byBhYnNsOjpUaW1l
IGNvbnZlcnNpb24uCi1UaW1lQ29udmVyc2lvbiBDb252ZXJ0RGF0ZVRpbWUoaW50NjRfdCB5ZWFy
LCBpbnQgbW9uLCBpbnQgZGF5LCBpbnQgaG91ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbWluLCBpbnQgc2VjLCBUaW1lWm9uZSB0eik7Ci0KLS8vIEZyb21EYXRlVGltZSgp
Ci0vLwotLy8gQSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciBgYWJzbDo6Q29udmVydERhdGVUaW1l
KClgIHRoYXQgc2ltcGx5IHJldHVybnMgdGhlCi0vLyAicHJlIiBgYWJzbDo6VGltZWAuICBUaGF0
IGlzLCB0aGUgdW5pcXVlIHJlc3VsdCwgb3IgdGhlIGluc3RhbnQgdGhhdAotLy8gaXMgY29ycmVj
dCB1c2luZyB0aGUgcHJlLXRyYW5zaXRpb24gb2Zmc2V0IChhcyBpZiB0aGUgdHJhbnNpdGlvbgot
Ly8gbmV2ZXIgaGFwcGVuZWQpLiBUaGlzIGlzIHR5cGljYWxseSB0aGUgYW5zd2VyIHRoYXQgaHVt
YW5zIGV4cGVjdGVkIHdoZW4KLS8vIGZhY2VkIHdpdGggbm9uLXVuaXF1ZSB0aW1lcywgc3VjaCBh
cyBuZWFyIGRheWxpZ2h0LXNhdmluZyB0aW1lIHRyYW5zaXRpb25zLgotLy8KLS8vIEV4YW1wbGU6
Ci0vLwotLy8gICBhYnNsOjpUaW1lWm9uZSBzZWF0dGxlOwotLy8gICBpZiAoIWFic2w6OkxvYWRU
aW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZzZWF0dGxlKSkgewotLy8gICAgIC8vIGhh
bmRsZSBlcnJvciBjYXNlCi0vLyAgIH0KLS8vICAgYWJzbDo6VGltZSB0ID0gIGFic2w6OkZyb21E
YXRlVGltZSgyMDE3LCA5LCAyNiwgOSwgMzAsIDAsIHNlYXR0bGUpOwotVGltZSBGcm9tRGF0ZVRp
bWUoaW50NjRfdCB5ZWFyLCBpbnQgbW9uLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbiwgaW50
IHNlYywKLSAgICAgICAgICAgICAgICAgIFRpbWVab25lIHR6KTsKLQotLy8gRnJvbVRNKCkKLS8v
Ci0vLyBDb252ZXJ0cyB0aGUgYHRtX3llYXJgLCBgdG1fbW9uYCwgYHRtX21kYXlgLCBgdG1faG91
cmAsIGB0bV9taW5gLCBhbmQKLS8vIGB0bV9zZWNgIGZpZWxkcyB0byBhbiBgYWJzbDo6VGltZWAg
dXNpbmcgdGhlIGdpdmVuIHRpbWUgem9uZS4gU2VlIGN0aW1lKDMpCi0vLyBmb3IgYSBkZXNjcmlw
dGlvbiBvZiB0aGUgZXhwZWN0ZWQgdmFsdWVzIG9mIHRoZSB0bSBmaWVsZHMuIElGRiB0aGUgaW5k
aWNhdGVkCi0vLyB0aW1lIGluc3RhbnQgaXMgbm90IHVuaXF1ZSAoc2VlIGBhYnNsOjpDb252ZXJ0
RGF0ZVRpbWUoKWAgYWJvdmUpLCB0aGUKLS8vIGB0bV9pc2RzdGAgZmllbGQgaXMgY29uc3VsdGVk
IHRvIHNlbGVjdCB0aGUgZGVzaXJlZCBpbnN0YW50IChgdG1faXNkc3RgID4gMAotLy8gbWVhbnMg
RFNULCBgdG1faXNkc3RgID09IDAgbWVhbnMgbm8gRFNULCBgdG1faXNkc3RgIDwgMCBtZWFucyB1
c2UgdGhlIGRlZmF1bHQKLS8vIGxpa2UgYGFic2w6OkZyb21EYXRlVGltZSgpYCkuCi1UaW1lIEZy
b21UTShjb25zdCBzdHJ1Y3QgdG0mIHRtLCBUaW1lWm9uZSB0eik7Ci0KLS8vIFRvVE0oKQotLy8K
LS8vIENvbnZlcnRzIHRoZSBnaXZlbiBgYWJzbDo6VGltZWAgdG8gYSBzdHJ1Y3QgdG0gdXNpbmcg
dGhlIGdpdmVuIHRpbWUgem9uZS4KLS8vIFNlZSBjdGltZSgzKSBmb3IgYSBkZXNjcmlwdGlvbiBv
ZiB0aGUgdmFsdWVzIG9mIHRoZSB0bSBmaWVsZHMuCi1zdHJ1Y3QgdG0gVG9UTShUaW1lIHQsIFRp
bWVab25lIHR6KTsKLQogLy8gRnJvbVVuaXhOYW5vcygpCiAvLyBGcm9tVW5peE1pY3JvcygpCiAv
LyBGcm9tVW5peE1pbGxpcygpCkBAIC04ODMsNiArODA1LDM4MiBAQCBUaW1lIEZyb21DaHJvbm8o
Y29uc3Qgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCYgdHApOwogLy8gICAv
LyB0cCA9PSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdCgxMjMpOwogc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBUb0Nocm9ub1RpbWUoVGltZSk7CiAK
Ky8vIFN1cHBvcnQgZm9yIGZsYWcgdmFsdWVzIG9mIHR5cGUgVGltZS4gVGltZSBmbGFncyBtdXN0
IGJlIHNwZWNpZmllZCBpbiBhCisvLyBmb3JtYXQgdGhhdCBtYXRjaGVzIGFic2w6OlJGQzMzMzlf
ZnVsbC4gRm9yIGV4YW1wbGU6CisvLworLy8gICAtLXN0YXJ0X3RpbWU9MjAxNi0wMS0wMlQwMzow
NDowNS42NzgrMDg6MDAKKy8vCisvLyBOb3RlOiBBIFVUQyBvZmZzZXQgKG9yICdaJyBpbmRpY2F0
aW5nIGEgemVyby1vZmZzZXQgZnJvbSBVVEMpIGlzIHJlcXVpcmVkLgorLy8KKy8vIEFkZGl0aW9u
YWxseSwgaWYgeW91J2QgbGlrZSB0byBzcGVjaWZ5IGEgdGltZSBhcyBhIGNvdW50IG9mCisvLyBz
ZWNvbmRzL21pbGxpc2Vjb25kcy9ldGMgZnJvbSB0aGUgVW5peCBlcG9jaCwgdXNlIGFuIGFic2w6
OkR1cmF0aW9uIGZsYWcKKy8vIGFuZCBhZGQgdGhhdCBkdXJhdGlvbiB0byBhYnNsOjpVbml4RXBv
Y2goKSB0byBnZXQgYW4gYWJzbDo6VGltZS4KK2Jvb2wgUGFyc2VGbGFnKGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0ZXh0LCBUaW1lKiB0LCBzdGQ6OnN0cmluZyogZXJyb3IpOworc3RkOjpzdHJpbmcgVW5w
YXJzZUZsYWcoVGltZSB0KTsKKworLy8gVGltZVpvbmUKKy8vCisvLyBUaGUgYGFic2w6OlRpbWVa
b25lYCBpcyBhbiBvcGFxdWUsIHNtYWxsLCB2YWx1ZS10eXBlIGNsYXNzIHJlcHJlc2VudGluZyBh
CisvLyBnZW8tcG9saXRpY2FsIHJlZ2lvbiB3aXRoaW4gd2hpY2ggcGFydGljdWxhciBydWxlcyBh
cmUgdXNlZCBmb3IgY29udmVydGluZworLy8gYmV0d2VlbiBhYnNvbHV0ZSBhbmQgY2l2aWwgdGlt
ZXMgKHNlZSBodHRwczovL2dpdC5pby92NTlMeSkuIGBhYnNsOjpUaW1lWm9uZWAKKy8vIHZhbHVl
cyBhcmUgbmFtZWQgdXNpbmcgdGhlIFRaIGlkZW50aWZpZXJzIGZyb20gdGhlIElBTkEgVGltZSBa
b25lIERhdGFiYXNlLAorLy8gc3VjaCBhcyAiQW1lcmljYS9Mb3NfQW5nZWxlcyIgb3IgIkF1c3Ry
YWxpYS9TeWRuZXkiLiBgYWJzbDo6VGltZVpvbmVgIHZhbHVlcworLy8gYXJlIGNyZWF0ZWQgZnJv
bSBmYWN0b3J5IGZ1bmN0aW9ucyBzdWNoIGFzIGBhYnNsOjpMb2FkVGltZVpvbmUoKWAuIE5vdGU6
CisvLyBzdHJpbmdzIGxpa2UgIlBTVCIgYW5kICJFRFQiIGFyZSBub3QgdmFsaWQgVFogaWRlbnRp
ZmllcnMuIFByZWZlciB0byBwYXNzIGJ5CisvLyB2YWx1ZSByYXRoZXIgdGhhbiBjb25zdCByZWZl
cmVuY2UuCisvLworLy8gRm9yIG1vcmUgb24gdGhlIGZ1bmRhbWVudGFsIGNvbmNlcHRzIG9mIHRp
bWUgem9uZXMsIGFic29sdXRlIHRpbWVzLCBhbmQgY2l2aWwKKy8vIHRpbWVzLCBzZWUgaHR0cHM6
Ly9naXRodWIuY29tL2dvb2dsZS9jY3R6I2Z1bmRhbWVudGFsLWNvbmNlcHRzCisvLworLy8gRXhh
bXBsZXM6CisvLworLy8gICBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENUaW1lWm9uZSgp
OworLy8gICBhYnNsOjpUaW1lWm9uZSBwc3QgPSBhYnNsOjpGaXhlZFRpbWVab25lKC04ICogNjAg
KiA2MCk7CisvLyAgIGFic2w6OlRpbWVab25lIGxvYyA9IGFic2w6OkxvY2FsVGltZVpvbmUoKTsK
Ky8vICAgYWJzbDo6VGltZVpvbmUgbGF4OworLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgi
QW1lcmljYS9Mb3NfQW5nZWxlcyIsICZsYXgpKSB7CisvLyAgICAgLy8gaGFuZGxlIGVycm9yIGNh
c2UKKy8vICAgfQorLy8KKy8vIFNlZSBhbHNvOgorLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZ29v
Z2xlL2NjdHoKKy8vIC0gaHR0cHM6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcworLy8gLSBodHRw
czovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9ab25laW5mbworY2xhc3MgVGltZVpvbmUgeworIHB1
YmxpYzoKKyAgZXhwbGljaXQgVGltZVpvbmUodGltZV9pbnRlcm5hbDo6Y2N0ejo6dGltZV96b25l
IHR6KSA6IGN6Xyh0eikge30KKyAgVGltZVpvbmUoKSA9IGRlZmF1bHQ7ICAvLyBVVEMsIGJ1dCBw
cmVmZXIgVVRDVGltZVpvbmUoKSB0byBiZSBleHBsaWNpdC4KKworICAvLyBDb3B5YWJsZS4KKyAg
VGltZVpvbmUoY29uc3QgVGltZVpvbmUmKSA9IGRlZmF1bHQ7CisgIFRpbWVab25lJiBvcGVyYXRv
cj0oY29uc3QgVGltZVpvbmUmKSA9IGRlZmF1bHQ7CisKKyAgZXhwbGljaXQgb3BlcmF0b3IgdGlt
ZV9pbnRlcm5hbDo6Y2N0ejo6dGltZV96b25lKCkgY29uc3QgeyByZXR1cm4gY3pfOyB9CisKKyAg
c3RkOjpzdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGN6Xy5uYW1lKCk7IH0KKworICAvLyBU
aW1lWm9uZTo6Q2l2aWxJbmZvCisgIC8vCisgIC8vIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjaXZp
bCB0aW1lIGNvcnJlc3BvbmRpbmcgdG8gYW4gYWJzb2x1dGUgdGltZS4KKyAgLy8gVGhpcyBzdHJ1
Y3QgaXMgbm90IGludGVuZGVkIHRvIHJlcHJlc2VudCBhbiBpbnN0YW50IGluIHRpbWUuIFNvLCBy
YXRoZXIKKyAgLy8gdGhhbiBwYXNzaW5nIGEgYFRpbWVab25lOjpDaXZpbEluZm9gIHRvIGEgZnVu
Y3Rpb24sIHBhc3MgYW4gYGFic2w6OlRpbWVgCisgIC8vIGFuZCBhbiBgYWJzbDo6VGltZVpvbmVg
LgorICBzdHJ1Y3QgQ2l2aWxJbmZvIHsKKyAgICBDaXZpbFNlY29uZCBjczsKKyAgICBEdXJhdGlv
biBzdWJzZWNvbmQ7CisKKyAgICAvLyBOb3RlOiBUaGUgZm9sbG93aW5nIGZpZWxkcyBleGlzdCBm
b3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorICAgIC8vIHdpdGggb2xkZXIgQVBJcy4gIEFjY2Vz
c2luZyB0aGVzZSBmaWVsZHMgZGlyZWN0bHkgaXMgYSBzaWduIG9mCisgICAgLy8gaW1wcnVkZW50
IGxvZ2ljIGluIHRoZSBjYWxsaW5nIGNvZGUuICBNb2Rlcm4gdGltZS1yZWxhdGVkIGNvZGUKKyAg
ICAvLyBzaG91bGQgb25seSBhY2Nlc3MgdGhpcyBkYXRhIGluZGlyZWN0bHkgYnkgd2F5IG9mIEZv
cm1hdFRpbWUoKS4KKyAgICAvLyBUaGVzZSBmaWVsZHMgYXJlIHVuZGVmaW5lZCBmb3IgSW5maW5p
dGVGdXR1cmUoKSBhbmQgSW5maW5pdGVQYXN0KCkuCisgICAgaW50IG9mZnNldDsgICAgICAgICAg
ICAgLy8gc2Vjb25kcyBlYXN0IG9mIFVUQworICAgIGJvb2wgaXNfZHN0OyAgICAgICAgICAgIC8v
IGlzIG9mZnNldCBub24tc3RhbmRhcmQ/CisgICAgY29uc3QgY2hhciogem9uZV9hYmJyOyAgLy8g
dGltZS16b25lIGFiYnJldmlhdGlvbiAoZS5nLiwgIlBTVCIpCisgIH07CisKKyAgLy8gVGltZVpv
bmU6OkF0KFRpbWUpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGNpdmlsIHRpbWUgZm9yIHRoaXMg
VGltZVpvbmUgYXQgYSBjZXJ0YWluIGBhYnNsOjpUaW1lYC4KKyAgLy8gSWYgdGhlIGlucHV0IHRp
bWUgaXMgaW5maW5pdGUsIHRoZSBvdXRwdXQgY2l2aWwgc2Vjb25kIHdpbGwgYmUgc2V0IHRvCisg
IC8vIENpdmlsU2Vjb25kOjptYXgoKSBvciBtaW4oKSwgYW5kIHRoZSBzdWJzZWNvbmQgd2lsbCBi
ZSBpbmZpbml0ZS4KKyAgLy8KKyAgLy8gRXhhbXBsZToKKyAgLy8KKyAgLy8gICBjb25zdCBhdXRv
IGVwb2NoID0gbGF4LkF0KGFic2w6OlVuaXhFcG9jaCgpKTsKKyAgLy8gICAvLyBlcG9jaC5jcyA9
PSAxOTY5LTEyLTMxIDE2OjAwOjAwCisgIC8vICAgLy8gZXBvY2guc3Vic2Vjb25kID09IGFic2w6
Olplcm9EdXJhdGlvbigpCisgIC8vICAgLy8gZXBvY2gub2Zmc2V0ID09IC0yODgwMAorICAvLyAg
IC8vIGVwb2NoLmlzX2RzdCA9PSBmYWxzZQorICAvLyAgIC8vIGVwb2NoLmFiYnIgPT0gIlBTVCIK
KyAgQ2l2aWxJbmZvIEF0KFRpbWUgdCkgY29uc3Q7CisKKyAgLy8gVGltZVpvbmU6OlRpbWVJbmZv
CisgIC8vCisgIC8vIEluZm9ybWF0aW9uIGFib3V0IHRoZSBhYnNvbHV0ZSB0aW1lcyBjb3JyZXNw
b25kaW5nIHRvIGEgY2l2aWwgdGltZS4KKyAgLy8gKFN1YnNlY29uZHMgbXVzdCBiZSBoYW5kbGVk
IHNlcGFyYXRlbHkuKQorICAvLworICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgYSBjYWxsZXIgdG8g
cGFzcyBhIGNpdmlsLXRpbWUgdmFsdWUgdGhhdCBkb2VzCisgIC8vIG5vdCByZXByZXNlbnQgYW4g
YWN0dWFsIG9yIHVuaXF1ZSBpbnN0YW50IGluIHRpbWUgKGR1ZSB0byBhIHNoaWZ0CisgIC8vIGlu
IFVUQyBvZmZzZXQgaW4gdGhlIFRpbWVab25lLCB3aGljaCByZXN1bHRzIGluIGEgZGlzY29udGlu
dWl0eSBpbgorICAvLyB0aGUgY2l2aWwtdGltZSBjb21wb25lbnRzKS4gRm9yIGV4YW1wbGUsIGEg
ZGF5bGlnaHQtc2F2aW5nLXRpbWUKKyAgLy8gdHJhbnNpdGlvbiBza2lwcyBvciByZXBlYXRzIGNp
dmlsIHRpbWVzLS0taW4gdGhlIFVuaXRlZCBTdGF0ZXMsCisgIC8vIE1hcmNoIDEzLCAyMDExIDAy
OjE1IG5ldmVyIG9jY3VycmVkLCB3aGlsZSBOb3ZlbWJlciA2LCAyMDExIDAxOjE1CisgIC8vIG9j
Y3VycmVkIHR3aWNlLS0tc28gcmVxdWVzdHMgZm9yIHN1Y2ggdGltZXMgYXJlIG5vdCB3ZWxsLWRl
ZmluZWQuCisgIC8vIFRvIGFjY291bnQgZm9yIHRoZXNlIHBvc3NpYmlsaXRpZXMsIGBhYnNsOjpU
aW1lWm9uZTo6VGltZUluZm9gIGlzCisgIC8vIHJpY2hlciB0aGFuIGp1c3QgYSBzaW5nbGUgYGFi
c2w6OlRpbWVgLgorICBzdHJ1Y3QgVGltZUluZm8geworICAgIGVudW0gQ2l2aWxLaW5kIHsKKyAg
ICAgIFVOSVFVRSwgICAgLy8gdGhlIGNpdmlsIHRpbWUgd2FzIHNpbmd1bGFyIChwcmUgPT0gdHJh
bnMgPT0gcG9zdCkKKyAgICAgIFNLSVBQRUQsICAgLy8gdGhlIGNpdmlsIHRpbWUgZGlkIG5vdCBl
eGlzdCAocHJlID49IHRyYW5zID4gcG9zdCkKKyAgICAgIFJFUEVBVEVELCAgLy8gdGhlIGNpdmls
IHRpbWUgd2FzIGFtYmlndW91cyAocHJlIDwgdHJhbnMgPD0gcG9zdCkKKyAgICB9IGtpbmQ7Cisg
ICAgVGltZSBwcmU7ICAgIC8vIHRpbWUgY2FsY3VsYXRlZCB1c2luZyB0aGUgcHJlLXRyYW5zaXRp
b24gb2Zmc2V0CisgICAgVGltZSB0cmFuczsgIC8vIHdoZW4gdGhlIGNpdmlsLXRpbWUgZGlzY29u
dGludWl0eSBvY2N1cnJlZAorICAgIFRpbWUgcG9zdDsgICAvLyB0aW1lIGNhbGN1bGF0ZWQgdXNp
bmcgdGhlIHBvc3QtdHJhbnNpdGlvbiBvZmZzZXQKKyAgfTsKKworICAvLyBUaW1lWm9uZTo6QXQo
Q2l2aWxTZWNvbmQpCisgIC8vCisgIC8vIFJldHVybnMgYW4gYGFic2w6OlRpbWVJbmZvYCBjb250
YWluaW5nIHRoZSBhYnNvbHV0ZSB0aW1lKHMpIGZvciB0aGlzCisgIC8vIFRpbWVab25lIGF0IGFu
IGBhYnNsOjpDaXZpbFNlY29uZGAuIFdoZW4gdGhlIGNpdmlsIHRpbWUgaXMgc2tpcHBlZCBvcgor
ICAvLyByZXBlYXRlZCwgcmV0dXJucyB0aW1lcyBjYWxjdWxhdGVkIHVzaW5nIHRoZSBwcmUtdHJh
bnNpdGlvbiBhbmQgcG9zdC0KKyAgLy8gdHJhbnNpdGlvbiBVVEMgb2Zmc2V0cywgcGx1cyB0aGUg
dHJhbnNpdGlvbiB0aW1lIGl0c2VsZi4KKyAgLy8KKyAgLy8gRXhhbXBsZXM6CisgIC8vCisgIC8v
ICAgLy8gQSB1bmlxdWUgY2l2aWwgdGltZQorICAvLyAgIGNvbnN0IGF1dG8gamFuMDEgPSBsYXgu
QXQoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxMSwgMSwgMSwgMCwgMCwgMCkpOworICAvLyAgIC8vIGph
bjAxLmtpbmQgPT0gVGltZVpvbmU6OlRpbWVJbmZvOjpVTklRVUUKKyAgLy8gICAvLyBqYW4wMS5w
cmUgICAgaXMgMjAxMS0wMS0wMSAwMDowMDowMCAtMDgwMAorICAvLyAgIC8vIGphbjAxLnRyYW5z
ICBpcyAyMDExLTAxLTAxIDAwOjAwOjAwIC0wODAwCisgIC8vICAgLy8gamFuMDEucG9zdCAgIGlz
IDIwMTEtMDEtMDEgMDA6MDA6MDAgLTA4MDAKKyAgLy8KKyAgLy8gICAvLyBBIFNwcmluZyBEU1Qg
dHJhbnNpdGlvbiwgd2hlbiB0aGVyZSBpcyBhIGdhcCBpbiBjaXZpbCB0aW1lCisgIC8vICAgY29u
c3QgYXV0byBtYXIxMyA9IGxheC5BdChhYnNsOjpDaXZpbFNlY29uZCgyMDExLCAzLCAxMywgMiwg
MTUsIDApKTsKKyAgLy8gICAvLyBtYXIxMy5raW5kID09IFRpbWVab25lOjpUaW1lSW5mbzo6U0tJ
UFBFRAorICAvLyAgIC8vIG1hcjEzLnByZSAgIGlzIDIwMTEtMDMtMTMgMDM6MTU6MDAgLTA3MDAK
KyAgLy8gICAvLyBtYXIxMy50cmFucyBpcyAyMDExLTAzLTEzIDAzOjAwOjAwIC0wNzAwCisgIC8v
ICAgLy8gbWFyMTMucG9zdCAgaXMgMjAxMS0wMy0xMyAwMToxNTowMCAtMDgwMAorICAvLworICAv
LyAgIC8vIEEgRmFsbCBEU1QgdHJhbnNpdGlvbiwgd2hlbiBjaXZpbCB0aW1lcyBhcmUgcmVwZWF0
ZWQKKyAgLy8gICBjb25zdCBhdXRvIG5vdjA2ID0gbGF4LkF0KGFic2w6OkNpdmlsU2Vjb25kKDIw
MTEsIDExLCA2LCAxLCAxNSwgMCkpOworICAvLyAgIC8vIG5vdjA2LmtpbmQgPT0gVGltZVpvbmU6
OlRpbWVJbmZvOjpSRVBFQVRFRAorICAvLyAgIC8vIG5vdjA2LnByZSAgIGlzIDIwMTEtMTEtMDYg
MDE6MTU6MDAgLTA3MDAKKyAgLy8gICAvLyBub3YwNi50cmFucyBpcyAyMDExLTExLTA2IDAxOjAw
OjAwIC0wODAwCisgIC8vICAgLy8gbm92MDYucG9zdCAgaXMgMjAxMS0xMS0wNiAwMToxNTowMCAt
MDgwMAorICBUaW1lSW5mbyBBdChDaXZpbFNlY29uZCBjdCkgY29uc3Q7CisKKyAgLy8gVGltZVpv
bmU6Ok5leHRUcmFuc2l0aW9uKCkKKyAgLy8gVGltZVpvbmU6OlByZXZUcmFuc2l0aW9uKCkKKyAg
Ly8KKyAgLy8gRmluZHMgdGhlIHRpbWUgb2YgdGhlIG5leHQvcHJldmlvdXMgb2Zmc2V0IGNoYW5n
ZSBpbiB0aGlzIHRpbWUgem9uZS4KKyAgLy8KKyAgLy8gQnkgZGVmaW5pdGlvbiwgYE5leHRUcmFu
c2l0aW9uKHQsICZ0cmFucylgIHJldHVybnMgZmFsc2Ugd2hlbiBgdGAgaXMKKyAgLy8gYEluZmlu
aXRlRnV0dXJlKClgLCBhbmQgYFByZXZUcmFuc2l0aW9uKHQsICZ0cmFucylgIHJldHVybnMgZmFs
c2UKKyAgLy8gd2hlbiBgdGAgaXMgYEluZmluaXRlUGFzdCgpYC4gSWYgdGhlIHpvbmUgaGFzIG5v
IHRyYW5zaXRpb25zLCB0aGUKKyAgLy8gcmVzdWx0IHdpbGwgYWxzbyBiZSBmYWxzZSBubyBtYXR0
ZXIgd2hhdCB0aGUgYXJndW1lbnQuCisgIC8vCisgIC8vIE90aGVyd2lzZSwgd2hlbiBgdGAgaXMg
YEluZmluaXRlUGFzdCgpYCwgYE5leHRUcmFuc2l0aW9uKHQsICZ0cmFucylgCisgIC8vIHJldHVy
bnMgdHJ1ZSBhbmQgc2V0cyBgdHJhbnNgIHRvIHRoZSBmaXJzdCByZWNvcmRlZCB0cmFuc2l0aW9u
LiBDaGFpbnMKKyAgLy8gb2YgY2FsbHMgdG8gYE5leHRUcmFuc2l0aW9uKCkvUHJldlRyYW5zaXRp
b24oKWAgd2lsbCBldmVudHVhbGx5IHJldHVybgorICAvLyBmYWxzZSwgYnV0IGl0IGlzIHVuc3Bl
Y2lmaWVkIGV4YWN0bHkgd2hlbiBgTmV4dFRyYW5zaXRpb24odCwgJnRyYW5zKWAKKyAgLy8ganVt
cHMgdG8gZmFsc2UsIG9yIHdoYXQgdGltZSBpcyBzZXQgYnkgYFByZXZUcmFuc2l0aW9uKHQsICZ0
cmFucylgIGZvcgorICAvLyBhIHZlcnkgZGlzdGFudCBgdGAuCisgIC8vCisgIC8vIE5vdGU6IEVu
dW1lcmF0aW9uIG9mIHRpbWUtem9uZSB0cmFuc2l0aW9ucyBpcyBmb3IgaW5mb3JtYXRpb25hbCBw
dXJwb3NlcworICAvLyBvbmx5LiBNb2Rlcm4gdGltZS1yZWxhdGVkIGNvZGUgc2hvdWxkIG5vdCBj
YXJlIGFib3V0IHdoZW4gb2Zmc2V0IGNoYW5nZXMKKyAgLy8gb2NjdXIuCisgIC8vCisgIC8vIEV4
YW1wbGU6CisgIC8vICAgYWJzbDo6VGltZVpvbmUgbnljOworICAvLyAgIGlmICghYWJzbDo6TG9h
ZFRpbWVab25lKCJBbWVyaWNhL05ld19Zb3JrIiwgJm55YykpIHsgLi4uIH0KKyAgLy8gICBjb25z
dCBhdXRvIG5vdyA9IGFic2w6Ok5vdygpOworICAvLyAgIGF1dG8gdCA9IGFic2w6OkluZmluaXRl
UGFzdCgpOworICAvLyAgIGFic2w6OlRpbWVab25lOjpDaXZpbFRyYW5zaXRpb24gdHJhbnM7Cisg
IC8vICAgd2hpbGUgKHQgPD0gbm93ICYmIG55Yy5OZXh0VHJhbnNpdGlvbih0LCAmdHJhbnMpKSB7
CisgIC8vICAgICAvLyB0cmFuc2l0aW9uOiB0cmFucy5mcm9tIC0+IHRyYW5zLnRvCisgIC8vICAg
ICB0ID0gbnljLkF0KHRyYW5zLnRvKS50cmFuczsKKyAgLy8gICB9CisgIHN0cnVjdCBDaXZpbFRy
YW5zaXRpb24geworICAgIENpdmlsU2Vjb25kIGZyb207ICAvLyB0aGUgY2l2aWwgdGltZSB3ZSBq
dW1wIGZyb20KKyAgICBDaXZpbFNlY29uZCB0bzsgICAgLy8gdGhlIGNpdmlsIHRpbWUgd2UganVt
cCB0bworICB9OworICBib29sIE5leHRUcmFuc2l0aW9uKFRpbWUgdCwgQ2l2aWxUcmFuc2l0aW9u
KiB0cmFucykgY29uc3Q7CisgIGJvb2wgUHJldlRyYW5zaXRpb24oVGltZSB0LCBDaXZpbFRyYW5z
aXRpb24qIHRyYW5zKSBjb25zdDsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5k
IEggQWJzbEhhc2hWYWx1ZShIIGgsIFRpbWVab25lIHR6KSB7CisgICAgcmV0dXJuIEg6OmNvbWJp
bmUoc3RkOjptb3ZlKGgpLCB0ei5jel8pOworICB9CisKKyBwcml2YXRlOgorICBmcmllbmQgYm9v
bCBvcGVyYXRvcj09KFRpbWVab25lIGEsIFRpbWVab25lIGIpIHsgcmV0dXJuIGEuY3pfID09IGIu
Y3pfOyB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oVGltZVpvbmUgYSwgVGltZVpvbmUgYikg
eyByZXR1cm4gYS5jel8gIT0gYi5jel87IH0KKyAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBUaW1lWm9uZSB0eikgeworICAgIHJldHVybiBvcyA8PCB0
ei5uYW1lKCk7CisgIH0KKworICB0aW1lX2ludGVybmFsOjpjY3R6Ojp0aW1lX3pvbmUgY3pfOwor
fTsKKworLy8gTG9hZFRpbWVab25lKCkKKy8vCisvLyBMb2FkcyB0aGUgbmFtZWQgem9uZS4gTWF5
IHBlcmZvcm0gSS9PIG9uIHRoZSBpbml0aWFsIGxvYWQgb2YgdGhlIG5hbWVkCisvLyB6b25lLiBJ
ZiB0aGUgbmFtZSBpcyBpbnZhbGlkLCBvciBzb21lIG90aGVyIGtpbmQgb2YgZXJyb3Igb2NjdXJz
LCByZXR1cm5zCisvLyBgZmFsc2VgIGFuZCBgKnR6YCBpcyBzZXQgdG8gdGhlIFVUQyB0aW1lIHpv
bmUuCitpbmxpbmUgYm9vbCBMb2FkVGltZVpvbmUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIFRp
bWVab25lKiB0eikgeworICBpZiAobmFtZSA9PSAibG9jYWx0aW1lIikgeworICAgICp0eiA9IFRp
bWVab25lKHRpbWVfaW50ZXJuYWw6OmNjdHo6OmxvY2FsX3RpbWVfem9uZSgpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKKyAgfQorICB0aW1lX2ludGVybmFsOjpjY3R6Ojp0aW1lX3pvbmUgY3o7CisgIGNv
bnN0IGJvb2wgYiA9IHRpbWVfaW50ZXJuYWw6OmNjdHo6OmxvYWRfdGltZV96b25lKG5hbWUsICZj
eik7CisgICp0eiA9IFRpbWVab25lKGN6KTsKKyAgcmV0dXJuIGI7Cit9CisKKy8vIEZpeGVkVGlt
ZVpvbmUoKQorLy8KKy8vIFJldHVybnMgYSBUaW1lWm9uZSB0aGF0IGlzIGEgZml4ZWQgb2Zmc2V0
IChzZWNvbmRzIGVhc3QpIGZyb20gVVRDLgorLy8gTm90ZTogSWYgdGhlIGFic29sdXRlIHZhbHVl
IG9mIHRoZSBvZmZzZXQgaXMgZ3JlYXRlciB0aGFuIDI0IGhvdXJzCisvLyB5b3UnbGwgZ2V0IFVU
QyAoaS5lLiwgbm8gb2Zmc2V0KSBpbnN0ZWFkLgoraW5saW5lIFRpbWVab25lIEZpeGVkVGltZVpv
bmUoaW50IHNlY29uZHMpIHsKKyAgcmV0dXJuIFRpbWVab25lKAorICAgICAgdGltZV9pbnRlcm5h
bDo6Y2N0ejo6Zml4ZWRfdGltZV96b25lKHN0ZDo6Y2hyb25vOjpzZWNvbmRzKHNlY29uZHMpKSk7
Cit9CisKKy8vIFVUQ1RpbWVab25lKCkKKy8vCisvLyBDb252ZW5pZW5jZSBtZXRob2QgcmV0dXJu
aW5nIHRoZSBVVEMgdGltZSB6b25lLgoraW5saW5lIFRpbWVab25lIFVUQ1RpbWVab25lKCkgewor
ICByZXR1cm4gVGltZVpvbmUodGltZV9pbnRlcm5hbDo6Y2N0ejo6dXRjX3RpbWVfem9uZSgpKTsK
K30KKworLy8gTG9jYWxUaW1lWm9uZSgpCisvLworLy8gQ29udmVuaWVuY2UgbWV0aG9kIHJldHVy
bmluZyB0aGUgbG9jYWwgdGltZSB6b25lLCBvciBVVEMgaWYgdGhlcmUgaXMKKy8vIG5vIGNvbmZp
Z3VyZWQgbG9jYWwgem9uZS4gIFdhcm5pbmc6IEJlIHdhcnkgb2YgdXNpbmcgTG9jYWxUaW1lWm9u
ZSgpLAorLy8gYW5kIHBhcnRpY3VsYXJseSBzbyBpbiBhIHNlcnZlciBwcm9jZXNzLCBhcyB0aGUg
em9uZSBjb25maWd1cmVkIGZvciB0aGUKKy8vIGxvY2FsIG1hY2hpbmUgc2hvdWxkIGJlIGlycmVs
ZXZhbnQuICBQcmVmZXIgYW4gZXhwbGljaXQgem9uZSBuYW1lLgoraW5saW5lIFRpbWVab25lIExv
Y2FsVGltZVpvbmUoKSB7CisgIHJldHVybiBUaW1lWm9uZSh0aW1lX2ludGVybmFsOjpjY3R6Ojps
b2NhbF90aW1lX3pvbmUoKSk7Cit9CisKKy8vIFRvQ2l2aWxTZWNvbmQoKQorLy8gVG9DaXZpbE1p
bnV0ZSgpCisvLyBUb0NpdmlsSG91cigpCisvLyBUb0NpdmlsRGF5KCkKKy8vIFRvQ2l2aWxNb250
aCgpCisvLyBUb0NpdmlsWWVhcigpCisvLworLy8gSGVscGVycyBmb3IgVGltZVpvbmU6OkF0KFRp
bWUpIHRvIHJldHVybiBwYXJ0aWN1bGFybHkgYWxpZ25lZCBjaXZpbCB0aW1lcy4KKy8vCisvLyBF
eGFtcGxlOgorLy8KKy8vICAgYWJzbDo6VGltZSB0ID0gLi4uOworLy8gICBhYnNsOjpUaW1lWm9u
ZSB0eiA9IC4uLjsKKy8vICAgY29uc3QgYXV0byBjZCA9IGFic2w6OlRvQ2l2aWxEYXkodCwgdHop
OworaW5saW5lIENpdmlsU2Vjb25kIFRvQ2l2aWxTZWNvbmQoVGltZSB0LCBUaW1lWm9uZSB0eikg
eworICByZXR1cm4gdHouQXQodCkuY3M7ICAvLyBhbHJlYWR5IGEgQ2l2aWxTZWNvbmQKK30KK2lu
bGluZSBDaXZpbE1pbnV0ZSBUb0NpdmlsTWludXRlKFRpbWUgdCwgVGltZVpvbmUgdHopIHsKKyAg
cmV0dXJuIENpdmlsTWludXRlKHR6LkF0KHQpLmNzKTsKK30KK2lubGluZSBDaXZpbEhvdXIgVG9D
aXZpbEhvdXIoVGltZSB0LCBUaW1lWm9uZSB0eikgeworICByZXR1cm4gQ2l2aWxIb3VyKHR6LkF0
KHQpLmNzKTsKK30KK2lubGluZSBDaXZpbERheSBUb0NpdmlsRGF5KFRpbWUgdCwgVGltZVpvbmUg
dHopIHsKKyAgcmV0dXJuIENpdmlsRGF5KHR6LkF0KHQpLmNzKTsKK30KK2lubGluZSBDaXZpbE1v
bnRoIFRvQ2l2aWxNb250aChUaW1lIHQsIFRpbWVab25lIHR6KSB7CisgIHJldHVybiBDaXZpbE1v
bnRoKHR6LkF0KHQpLmNzKTsKK30KK2lubGluZSBDaXZpbFllYXIgVG9DaXZpbFllYXIoVGltZSB0
LCBUaW1lWm9uZSB0eikgeworICByZXR1cm4gQ2l2aWxZZWFyKHR6LkF0KHQpLmNzKTsKK30KKwor
Ly8gRnJvbUNpdmlsKCkKKy8vCisvLyBIZWxwZXIgZm9yIFRpbWVab25lOjpBdChDaXZpbFNlY29u
ZCkgdGhhdCBwcm92aWRlcyAib3JkZXItcHJlc2VydmluZworLy8gc2VtYW50aWNzLiIgSWYgdGhl
IGNpdmlsIHRpbWUgbWFwcyB0byBhIHVuaXF1ZSB0aW1lLCB0aGF0IHRpbWUgaXMKKy8vIHJldHVy
bmVkLiBJZiB0aGUgY2l2aWwgdGltZSBpcyByZXBlYXRlZCBpbiB0aGUgZ2l2ZW4gdGltZSB6b25l
LCB0aGUKKy8vIHRpbWUgdXNpbmcgdGhlIHByZS10cmFuc2l0aW9uIG9mZnNldCBpcyByZXR1cm5l
ZC4gT3RoZXJ3aXNlLCB0aGUKKy8vIGNpdmlsIHRpbWUgaXMgc2tpcHBlZCBpbiB0aGUgZ2l2ZW4g
dGltZSB6b25lLCBhbmQgdGhlIHRyYW5zaXRpb24gdGltZQorLy8gaXMgcmV0dXJuZWQuIFRoaXMg
bWVhbnMgdGhhdCBmb3IgYW55IHR3byBjaXZpbCB0aW1lcywgY3QxIGFuZCBjdDIsCisvLyAoY3Qx
IDwgY3QyKSA9PiAoRnJvbUNpdmlsKGN0MSkgPD0gRnJvbUNpdmlsKGN0MikpLCB0aGUgZXF1YWwg
Y2FzZQorLy8gYmVpbmcgd2hlbiB0d28gbm9uLWV4aXN0ZW50IGNpdmlsIHRpbWVzIG1hcCB0byB0
aGUgc2FtZSB0cmFuc2l0aW9uIHRpbWUuCisvLworLy8gTm90ZTogQWNjZXB0cyBjaXZpbCB0aW1l
cyBvZiBhbnkgYWxpZ25tZW50LgoraW5saW5lIFRpbWUgRnJvbUNpdmlsKENpdmlsU2Vjb25kIGN0
LCBUaW1lWm9uZSB0eikgeworICBjb25zdCBhdXRvIHRpID0gdHouQXQoY3QpOworICBpZiAodGku
a2luZCA9PSBUaW1lWm9uZTo6VGltZUluZm86OlNLSVBQRUQpIHJldHVybiB0aS50cmFuczsKKyAg
cmV0dXJuIHRpLnByZTsKK30KKworLy8gVGltZUNvbnZlcnNpb24KKy8vCisvLyBBbiBgYWJzbDo6
VGltZUNvbnZlcnNpb25gIHJlcHJlc2VudHMgdGhlIGNvbnZlcnNpb24gb2YgeWVhciwgbW9udGgs
IGRheSwKKy8vIGhvdXIsIG1pbnV0ZSwgYW5kIHNlY29uZCB2YWx1ZXMgKGkuZS4sIGEgY2l2aWwg
dGltZSksIGluIGEgcGFydGljdWxhcgorLy8gYGFic2w6OlRpbWVab25lYCwgdG8gYSB0aW1lIGlu
c3RhbnQgKGFuIGFic29sdXRlIHRpbWUpLCBhcyByZXR1cm5lZCBieQorLy8gYGFic2w6OkNvbnZl
cnREYXRlVGltZSgpYC4gTGVjYWN5IHZlcnNpb24gb2YgYGFic2w6OlRpbWVab25lOjpUaW1lSW5m
b2AuCisvLworLy8gRGVwcmVjYXRlZC4gVXNlIGBhYnNsOjpUaW1lWm9uZTo6VGltZUluZm9gLgor
c3RydWN0CisgICAgVGltZUNvbnZlcnNpb24geworICBUaW1lIHByZTsgICAgLy8gdGltZSBjYWxj
dWxhdGVkIHVzaW5nIHRoZSBwcmUtdHJhbnNpdGlvbiBvZmZzZXQKKyAgVGltZSB0cmFuczsgIC8v
IHdoZW4gdGhlIGNpdmlsLXRpbWUgZGlzY29udGludWl0eSBvY2N1cnJlZAorICBUaW1lIHBvc3Q7
ICAgLy8gdGltZSBjYWxjdWxhdGVkIHVzaW5nIHRoZSBwb3N0LXRyYW5zaXRpb24gb2Zmc2V0CisK
KyAgZW51bSBLaW5kIHsKKyAgICBVTklRVUUsICAgIC8vIHRoZSBjaXZpbCB0aW1lIHdhcyBzaW5n
dWxhciAocHJlID09IHRyYW5zID09IHBvc3QpCisgICAgU0tJUFBFRCwgICAvLyB0aGUgY2l2aWwg
dGltZSBkaWQgbm90IGV4aXN0CisgICAgUkVQRUFURUQsICAvLyB0aGUgY2l2aWwgdGltZSB3YXMg
YW1iaWd1b3VzCisgIH07CisgIEtpbmQga2luZDsKKworICBib29sIG5vcm1hbGl6ZWQ7ICAvLyBp
bnB1dCB2YWx1ZXMgd2VyZSBvdXRzaWRlIHRoZWlyIHZhbGlkIHJhbmdlcworfTsKKworLy8gQ29u
dmVydERhdGVUaW1lKCkKKy8vCisvLyBMZWdhY3kgdmVyc2lvbiBvZiBgYWJzbDo6VGltZVpvbmU6
OkF0KGFic2w6OkNpdmlsU2Vjb25kKWAgdGhhdCB0YWtlcworLy8gdGhlIGNpdmlsIHRpbWUgYXMg
c2l4LCBzZXBhcmF0ZSB2YWx1ZXMgKFlNREhNUykuCisvLworLy8gVGhlIGlucHV0IG1vbnRoLCBk
YXksIGhvdXIsIG1pbnV0ZSwgYW5kIHNlY29uZCB2YWx1ZXMgY2FuIGJlIG91dHNpZGUKKy8vIG9m
IHRoZWlyIHZhbGlkIHJhbmdlcywgaW4gd2hpY2ggY2FzZSB0aGV5IHdpbGwgYmUgIm5vcm1hbGl6
ZWQiIGR1cmluZworLy8gdGhlIGNvbnZlcnNpb24uCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAg
IC8vICJPY3RvYmVyIDMyIiBub3JtYWxpemVzIHRvICJOb3ZlbWJlciAxIi4KKy8vICAgYWJzbDo6
VGltZUNvbnZlcnNpb24gdGMgPQorLy8gICAgICAgYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMs
IDEwLCAzMiwgOCwgMzAsIDAsIGxheCk7CisvLyAgIC8vIHRjLmtpbmQgPT0gVGltZUNvbnZlcnNp
b246OlVOSVFVRSAmJiB0Yy5ub3JtYWxpemVkID09IHRydWUKKy8vICAgLy8gYWJzbDo6VG9DaXZp
bERheSh0Yy5wcmUsIHR6KS5tb250aCgpID09IDExCisvLyAgIC8vIGFic2w6OlRvQ2l2aWxEYXko
dGMucHJlLCB0eikuZGF5KCkgPT0gMQorLy8KKy8vIERlcHJlY2F0ZWQuIFVzZSBgYWJzbDo6VGlt
ZVpvbmU6OkF0KENpdmlsU2Vjb25kKWAuCitUaW1lQ29udmVyc2lvbiBDb252ZXJ0RGF0ZVRpbWUo
aW50NjRfdCB5ZWFyLCBpbnQgbW9uLCBpbnQgZGF5LCBpbnQgaG91ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbWluLCBpbnQgc2VjLCBUaW1lWm9uZSB0eik7CisKKy8vIEZy
b21EYXRlVGltZSgpCisvLworLy8gQSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciBgYWJzbDo6Q29u
dmVydERhdGVUaW1lKClgIHRoYXQgc2ltcGx5IHJldHVybnMKKy8vIHRoZSAicHJlIiBgYWJzbDo6
VGltZWAuICBUaGF0IGlzLCB0aGUgdW5pcXVlIHJlc3VsdCwgb3IgdGhlIGluc3RhbnQgdGhhdAor
Ly8gaXMgY29ycmVjdCB1c2luZyB0aGUgcHJlLXRyYW5zaXRpb24gb2Zmc2V0IChhcyBpZiB0aGUg
dHJhbnNpdGlvbiBuZXZlcgorLy8gaGFwcGVuZWQpLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8g
ICBhYnNsOjpUaW1lIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNywgOSwgMjYsIDksIDMwLCAw
LCBsYXgpOworLy8gICAvLyB0ID0gMjAxNy0wOS0yNiAwOTozMDowMCAtMDcwMAorLy8KKy8vIERl
cHJlY2F0ZWQuIFVzZSBgYWJzbDo6RnJvbUNpdmlsKENpdmlsU2Vjb25kLCBUaW1lWm9uZSlgLiBO
b3RlIHRoYXQgdGhlCisvLyBiZWhhdmlvciBvZiBgRnJvbUNpdmlsKClgIGRpZmZlcnMgZnJvbSBg
RnJvbURhdGVUaW1lKClgIGZvciBza2lwcGVkIGNpdmlsCisvLyB0aW1lcy4gSWYgeW91IGNhcmUg
YWJvdXQgdGhhdCBzZWUgYGFic2w6OlRpbWVab25lOjpBdChhYnNsOjpDaXZpbFNlY29uZClgLgor
aW5saW5lIFRpbWUgRnJvbURhdGVUaW1lKGludDY0X3QgeWVhciwgaW50IG1vbiwgaW50IGRheSwg
aW50IGhvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbiwgaW50IHNlYywgVGlt
ZVpvbmUgdHopIHsKKyAgcmV0dXJuIENvbnZlcnREYXRlVGltZSh5ZWFyLCBtb24sIGRheSwgaG91
ciwgbWluLCBzZWMsIHR6KS5wcmU7Cit9CisKKy8vIEZyb21UTSgpCisvLworLy8gQ29udmVydHMg
dGhlIGB0bV95ZWFyYCwgYHRtX21vbmAsIGB0bV9tZGF5YCwgYHRtX2hvdXJgLCBgdG1fbWluYCwg
YW5kCisvLyBgdG1fc2VjYCBmaWVsZHMgdG8gYW4gYGFic2w6OlRpbWVgIHVzaW5nIHRoZSBnaXZl
biB0aW1lIHpvbmUuIFNlZSBjdGltZSgzKQorLy8gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGV4
cGVjdGVkIHZhbHVlcyBvZiB0aGUgdG0gZmllbGRzLiBJZiB0aGUgaW5kaWNhdGVkCisvLyB0aW1l
IGluc3RhbnQgaXMgbm90IHVuaXF1ZSAoc2VlIGBhYnNsOjpUaW1lWm9uZTo6QXQoYWJzbDo6Q2l2
aWxTZWNvbmQpYAorLy8gYWJvdmUpLCB0aGUgYHRtX2lzZHN0YCBmaWVsZCBpcyBjb25zdWx0ZWQg
dG8gc2VsZWN0IHRoZSBkZXNpcmVkIGluc3RhbnQKKy8vIChgdG1faXNkc3RgID4gMCBtZWFucyBE
U1QsIGB0bV9pc2RzdGAgPT0gMCBtZWFucyBubyBEU1QsIGB0bV9pc2RzdGAgPCAwCisvLyBtZWFu
cyB1c2UgdGhlIHBvc3QtdHJhbnNpdGlvbiBvZmZzZXQpLgorVGltZSBGcm9tVE0oY29uc3Qgc3Ry
dWN0IHRtJiB0bSwgVGltZVpvbmUgdHopOworCisvLyBUb1RNKCkKKy8vCisvLyBDb252ZXJ0cyB0
aGUgZ2l2ZW4gYGFic2w6OlRpbWVgIHRvIGEgc3RydWN0IHRtIHVzaW5nIHRoZSBnaXZlbiB0aW1l
IHpvbmUuCisvLyBTZWUgY3RpbWUoMykgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhbHVlcyBv
ZiB0aGUgdG0gZmllbGRzLgorc3RydWN0IHRtIFRvVE0oVGltZSB0LCBUaW1lWm9uZSB0eik7CisK
IC8vIFJGQzMzMzlfZnVsbAogLy8gUkZDMzMzOV9zZWMKIC8vCkBAIC05MjksMTMgKzEyMjcsOSBA
QCBleHRlcm4gY29uc3QgY2hhciBSRkMxMTIzX25vX3dkYXlbXTsgIC8vICVkICViICVFNFkgJUg6
JU06JVMgJXoKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgYWJzbDo6VGltZVpvbmUgbGF4Owot
Ly8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZsYXgp
KSB7Ci0vLyAgICAgLy8gaGFuZGxlIGVycm9yIGNhc2UKLS8vICAgfQotLy8gICBhYnNsOjpUaW1l
IHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxMywgMSwgMiwgMywgNCwgNSwgbGF4KTsKLS8vCi0v
LyAgIHN0cmluZyBmID0gYWJzbDo6Rm9ybWF0VGltZSgiJUg6JU06JVMiLCB0LCBsYXgpOyAgLy8g
IjAzOjA0OjA1IgorLy8gICBhYnNsOjpDaXZpbFNlY29uZCBjcygyMDEzLCAxLCAyLCAzLCA0LCA1
KTsKKy8vICAgYWJzbDo6VGltZSB0ID0gYWJzbDo6RnJvbUNpdmlsKGNzLCBsYXgpOworLy8gICBz
dGQ6OnN0cmluZyBmID0gYWJzbDo6Rm9ybWF0VGltZSgiJUg6JU06JVMiLCB0LCBsYXgpOyAgLy8g
IjAzOjA0OjA1IgogLy8gICBmID0gYWJzbDo6Rm9ybWF0VGltZSgiJUg6JU06JUUzUyIsIHQsIGxh
eCk7ICAvLyAiMDM6MDQ6MDUuMDAwIgogLy8KIC8vIE5vdGU6IElmIHRoZSBnaXZlbiBgYWJzbDo6
VGltZWAgaXMgYGFic2w6OkluZmluaXRlRnV0dXJlKClgLCB0aGUgcmV0dXJuZWQKQEAgLTk4NSw3
ICsxMjc5LDcgQEAgaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0m
IG9zLCBUaW1lIHQpIHsKIC8vIGluIHRoZSBjb252ZXJzaW9uLgogLy8KIC8vIERhdGUgYW5kIHRp
bWUgZmllbGRzIHRoYXQgYXJlIG91dC1vZi1yYW5nZSB3aWxsIGJlIHRyZWF0ZWQgYXMgZXJyb3Jz
Ci0vLyByYXRoZXIgdGhhbiBub3JtYWxpemluZyB0aGVtIGxpa2UgYGFic2w6OkZyb21EYXRlVGlt
ZSgpYCBkb2VzLiAgRm9yIGV4YW1wbGUsCisvLyByYXRoZXIgdGhhbiBub3JtYWxpemluZyB0aGVt
IGxpa2UgYGFic2w6OkNpdmlsU2Vjb25kYCBkb2VzLiAgRm9yIGV4YW1wbGUsCiAvLyBpdCBpcyBh
biBlcnJvciB0byBwYXJzZSB0aGUgZGF0ZSAiT2N0IDMyLCAyMDEzIiBiZWNhdXNlIDMyIGlzIG91
dCBvZiByYW5nZS4KIC8vCiAvLyBBIGxlYXAgc2Vjb25kIG9mICI6NjAiIGlzIG5vcm1hbGl6ZWQg
dG8gIjowMCIgb2YgdGhlIGZvbGxvd2luZyBtaW51dGUKQEAgLTEwMTIsMTIxICsxMzA2LDExIEBA
IGJvb2wgUGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBpbnB1dCwgVGltZSogdGltZSwKIC8vIGdpdmVuIFRpbWVab25lLiAgVGhpcyBtZWFucyB0
aGF0IHRoZSBpbnB1dCwgYnkgaXRzZWxmLCBkb2VzIG5vdCBpZGVudGlmeSBhCiAvLyB1bmlxdWUg
aW5zdGFudC4gIEJlaW5nIHRpbWUtem9uZSBkZXBlbmRlbnQsIGl0IGFsc28gYWRtaXRzIHRoZSBw
b3NzaWJpbGl0eQogLy8gb2YgYW1iaWd1aXR5IG9yIG5vbi1leGlzdGVuY2UsIGluIHdoaWNoIGNh
c2UgdGhlICJwcmUiIHRpbWUgKGFzIGRlZmluZWQKLS8vIGZvciBDb252ZXJ0RGF0ZVRpbWUoKSkg
aXMgcmV0dXJuZWQuICBGb3IgdGhlc2UgcmVhc29ucyB3ZSByZWNvbW1lbmQgdGhhdAorLy8gYnkg
VGltZVpvbmU6OlRpbWVJbmZvKSBpcyByZXR1cm5lZC4gIEZvciB0aGVzZSByZWFzb25zIHdlIHJl
Y29tbWVuZCB0aGF0CiAvLyBhbGwgZGF0ZS90aW1lIHN0cmluZ3MgaW5jbHVkZSBhIFVUQyBvZmZz
ZXQgc28gdGhleSdyZSBjb250ZXh0IGluZGVwZW5kZW50LgogYm9vbCBQYXJzZVRpbWUoY29uc3Qg
c3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LCBUaW1lWm9uZSB0
eiwKICAgICAgICAgICAgICAgIFRpbWUqIHRpbWUsIHN0ZDo6c3RyaW5nKiBlcnIpOwogCi0vLyBT
dXBwb3J0IGZvciBmbGFnIHZhbHVlcyBvZiB0eXBlIFRpbWUuIFRpbWUgZmxhZ3MgbXVzdCBiZSBz
cGVjaWZpZWQgaW4gYQotLy8gZm9ybWF0IHRoYXQgbWF0Y2hlcyBhYnNsOjpSRkMzMzM5X2Z1bGwu
IEZvciBleGFtcGxlOgotLy8KLS8vICAgLS1zdGFydF90aW1lPTIwMTYtMDEtMDJUMDM6MDQ6MDUu
Njc4KzA4OjAwCi0vLwotLy8gTm90ZTogQSBVVEMgb2Zmc2V0IChvciAnWicgaW5kaWNhdGluZyBh
IHplcm8tb2Zmc2V0IGZyb20gVVRDKSBpcyByZXF1aXJlZC4KLS8vCi0vLyBBZGRpdGlvbmFsbHks
IGlmIHlvdSdkIGxpa2UgdG8gc3BlY2lmeSBhIHRpbWUgYXMgYSBjb3VudCBvZgotLy8gc2Vjb25k
cy9taWxsaXNlY29uZHMvZXRjIGZyb20gdGhlIFVuaXggZXBvY2gsIHVzZSBhbiBhYnNsOjpEdXJh
dGlvbiBmbGFnCi0vLyBhbmQgYWRkIHRoYXQgZHVyYXRpb24gdG8gYWJzbDo6VW5peEVwb2NoKCkg
dG8gZ2V0IGFuIGFic2w6OlRpbWUuCi1ib29sIFBhcnNlRmxhZyhjb25zdCBzdGQ6OnN0cmluZyYg
dGV4dCwgVGltZSogdCwgc3RkOjpzdHJpbmcqIGVycm9yKTsKLXN0ZDo6c3RyaW5nIFVucGFyc2VG
bGFnKFRpbWUgdCk7Ci0KLS8vIFRpbWVab25lCi0vLwotLy8gVGhlIGBhYnNsOjpUaW1lWm9uZWAg
aXMgYW4gb3BhcXVlLCBzbWFsbCwgdmFsdWUtdHlwZSBjbGFzcyByZXByZXNlbnRpbmcgYQotLy8g
Z2VvLXBvbGl0aWNhbCByZWdpb24gd2l0aGluIHdoaWNoIHBhcnRpY3VsYXIgcnVsZXMgYXJlIHVz
ZWQgZm9yIGNvbnZlcnRpbmcKLS8vIGJldHdlZW4gYWJzb2x1dGUgYW5kIGNpdmlsIHRpbWVzIChz
ZWUgaHR0cHM6Ly9naXQuaW8vdjU5THkpLiBgYWJzbDo6VGltZVpvbmVgCi0vLyB2YWx1ZXMgYXJl
IG5hbWVkIHVzaW5nIHRoZSBUWiBpZGVudGlmaWVycyBmcm9tIHRoZSBJQU5BIFRpbWUgWm9uZSBE
YXRhYmFzZSwKLS8vIHN1Y2ggYXMgIkFtZXJpY2EvTG9zX0FuZ2VsZXMiIG9yICJBdXN0cmFsaWEv
U3lkbmV5Ii4gYGFic2w6OlRpbWVab25lYCB2YWx1ZXMKLS8vIGFyZSBjcmVhdGVkIGZyb20gZmFj
dG9yeSBmdW5jdGlvbnMgc3VjaCBhcyBgYWJzbDo6TG9hZFRpbWVab25lKClgLiBOb3RlOgotLy8g
c3RyaW5ncyBsaWtlICJQU1QiIGFuZCAiRURUIiBhcmUgbm90IHZhbGlkIFRaIGlkZW50aWZpZXJz
LiBQcmVmZXIgdG8gcGFzcyBieQotLy8gdmFsdWUgcmF0aGVyIHRoYW4gY29uc3QgcmVmZXJlbmNl
LgotLy8KLS8vIEZvciBtb3JlIG9uIHRoZSBmdW5kYW1lbnRhbCBjb25jZXB0cyBvZiB0aW1lIHpv
bmVzLCBhYnNvbHV0ZSB0aW1lcywgYW5kIGNpdmlsCi0vLyB0aW1lcywgc2VlIGh0dHBzOi8vZ2l0
aHViLmNvbS9nb29nbGUvY2N0eiNmdW5kYW1lbnRhbC1jb25jZXB0cwotLy8KLS8vIEV4YW1wbGVz
OgotLy8KLS8vICAgYWJzbDo6VGltZVpvbmUgdXRjID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKLS8v
ICAgYWJzbDo6VGltZVpvbmUgcHN0ID0gYWJzbDo6Rml4ZWRUaW1lWm9uZSgtOCAqIDYwICogNjAp
OwotLy8gICBhYnNsOjpUaW1lWm9uZSBsb2MgPSBhYnNsOjpMb2NhbFRpbWVab25lKCk7Ci0vLyAg
IGFic2w6OlRpbWVab25lIGxheDsKLS8vICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJp
Y2EvTG9zX0FuZ2VsZXMiLCAmbGF4KSkgewotLy8gICAgIC8vIGhhbmRsZSBlcnJvciBjYXNlCi0v
LyAgIH0KLS8vCi0vLyBTZWUgYWxzbzoKLS8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9j
Y3R6Ci0vLyAtIGh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcwotLy8gLSBodHRwOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL1pvbmVpbmZvCi1jbGFzcyBUaW1lWm9uZSB7Ci0gcHVibGljOgot
ICBleHBsaWNpdCBUaW1lWm9uZSh0aW1lX2ludGVybmFsOjpjY3R6Ojp0aW1lX3pvbmUgdHopIDog
Y3pfKHR6KSB7fQotICBUaW1lWm9uZSgpID0gZGVmYXVsdDsgIC8vIFVUQywgYnV0IHByZWZlciBV
VENUaW1lWm9uZSgpIHRvIGJlIGV4cGxpY2l0LgotICBUaW1lWm9uZShjb25zdCBUaW1lWm9uZSYp
ID0gZGVmYXVsdDsKLSAgVGltZVpvbmUmIG9wZXJhdG9yPShjb25zdCBUaW1lWm9uZSYpID0gZGVm
YXVsdDsKLQotICBleHBsaWNpdCBvcGVyYXRvciB0aW1lX2ludGVybmFsOjpjY3R6Ojp0aW1lX3pv
bmUoKSBjb25zdCB7IHJldHVybiBjel87IH0KLQotICBzdGQ6OnN0cmluZyBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gY3pfLm5hbWUoKTsgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgotICBmcmll
bmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgVGltZVpvbmUgdHopIHsKLSAgICByZXR1cm4gSDo6Y29t
YmluZShzdGQ6Om1vdmUoaCksIHR6LmN6Xyk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGZyaWVuZCBi
b29sIG9wZXJhdG9yPT0oVGltZVpvbmUgYSwgVGltZVpvbmUgYikgeyByZXR1cm4gYS5jel8gPT0g
Yi5jel87IH0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShUaW1lWm9uZSBhLCBUaW1lWm9uZSBi
KSB7IHJldHVybiBhLmN6XyAhPSBiLmN6XzsgfQotICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIFRpbWVab25lIHR6KSB7Ci0gICAgcmV0dXJuIG9zIDw8
IHR6Lm5hbWUoKTsKLSAgfQotCi0gIHRpbWVfaW50ZXJuYWw6OmNjdHo6OnRpbWVfem9uZSBjel87
Ci19OwotCi0vLyBMb2FkVGltZVpvbmUoKQotLy8KLS8vIExvYWRzIHRoZSBuYW1lZCB6b25lLiBN
YXkgcGVyZm9ybSBJL08gb24gdGhlIGluaXRpYWwgbG9hZCBvZiB0aGUgbmFtZWQKLS8vIHpvbmUu
IElmIHRoZSBuYW1lIGlzIGludmFsaWQsIG9yIHNvbWUgb3RoZXIga2luZCBvZiBlcnJvciBvY2N1
cnMsIHJldHVybnMKLS8vIGBmYWxzZWAgYW5kIGAqdHpgIGlzIHNldCB0byB0aGUgVVRDIHRpbWUg
em9uZS4KLWlubGluZSBib29sIExvYWRUaW1lWm9uZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwg
VGltZVpvbmUqIHR6KSB7Ci0gIGlmIChuYW1lID09ICJsb2NhbHRpbWUiKSB7Ci0gICAgKnR6ID0g
VGltZVpvbmUodGltZV9pbnRlcm5hbDo6Y2N0ejo6bG9jYWxfdGltZV96b25lKCkpOwotICAgIHJl
dHVybiB0cnVlOwotICB9Ci0gIHRpbWVfaW50ZXJuYWw6OmNjdHo6OnRpbWVfem9uZSBjejsKLSAg
Y29uc3QgYm9vbCBiID0gdGltZV9pbnRlcm5hbDo6Y2N0ejo6bG9hZF90aW1lX3pvbmUobmFtZSwg
JmN6KTsKLSAgKnR6ID0gVGltZVpvbmUoY3opOwotICByZXR1cm4gYjsKLX0KLQotLy8gRml4ZWRU
aW1lWm9uZSgpCi0vLwotLy8gUmV0dXJucyBhIFRpbWVab25lIHRoYXQgaXMgYSBmaXhlZCBvZmZz
ZXQgKHNlY29uZHMgZWFzdCkgZnJvbSBVVEMuCi0vLyBOb3RlOiBJZiB0aGUgYWJzb2x1dGUgdmFs
dWUgb2YgdGhlIG9mZnNldCBpcyBncmVhdGVyIHRoYW4gMjQgaG91cnMKLS8vIHlvdSdsbCBnZXQg
VVRDIChpLmUuLCBubyBvZmZzZXQpIGluc3RlYWQuCi1pbmxpbmUgVGltZVpvbmUgRml4ZWRUaW1l
Wm9uZShpbnQgc2Vjb25kcykgewotICByZXR1cm4gVGltZVpvbmUoCi0gICAgICB0aW1lX2ludGVy
bmFsOjpjY3R6OjpmaXhlZF90aW1lX3pvbmUoc3RkOjpjaHJvbm86OnNlY29uZHMoc2Vjb25kcykp
KTsKLX0KLQotLy8gVVRDVGltZVpvbmUoKQotLy8KLS8vIENvbnZlbmllbmNlIG1ldGhvZCByZXR1
cm5pbmcgdGhlIFVUQyB0aW1lIHpvbmUuCi1pbmxpbmUgVGltZVpvbmUgVVRDVGltZVpvbmUoKSB7
Ci0gIHJldHVybiBUaW1lWm9uZSh0aW1lX2ludGVybmFsOjpjY3R6Ojp1dGNfdGltZV96b25lKCkp
OwotfQotCi0vLyBMb2NhbFRpbWVab25lKCkKLS8vCi0vLyBDb252ZW5pZW5jZSBtZXRob2QgcmV0
dXJuaW5nIHRoZSBsb2NhbCB0aW1lIHpvbmUsIG9yIFVUQyBpZiB0aGVyZSBpcwotLy8gbm8gY29u
ZmlndXJlZCBsb2NhbCB6b25lLiAgV2FybmluZzogQmUgd2FyeSBvZiB1c2luZyBMb2NhbFRpbWVa
b25lKCksCi0vLyBhbmQgcGFydGljdWxhcmx5IHNvIGluIGEgc2VydmVyIHByb2Nlc3MsIGFzIHRo
ZSB6b25lIGNvbmZpZ3VyZWQgZm9yIHRoZQotLy8gbG9jYWwgbWFjaGluZSBzaG91bGQgYmUgaXJy
ZWxldmFudC4gIFByZWZlciBhbiBleHBsaWNpdCB6b25lIG5hbWUuCi1pbmxpbmUgVGltZVpvbmUg
TG9jYWxUaW1lWm9uZSgpIHsKLSAgcmV0dXJuIFRpbWVab25lKHRpbWVfaW50ZXJuYWw6OmNjdHo6
OmxvY2FsX3RpbWVfem9uZSgpKTsKLX0KLQogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gSW1w
bGVtZW50YXRpb24gRGV0YWlscyBGb2xsb3cKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTEx
NjQsMTcgKzEzNDgsMjAgQEAgY29uc3RleHByIER1cmF0aW9uIE1ha2VOb3JtYWxpemVkRHVyYXRp
b24oaW50NjRfdCBzZWMsIGludDY0X3QgdGlja3MpIHsKICAgcmV0dXJuICh0aWNrcyA8IDApID8g
TWFrZUR1cmF0aW9uKHNlYyAtIDEsIHRpY2tzICsga1RpY2tzUGVyU2Vjb25kKQogICAgICAgICAg
ICAgICAgICAgICAgOiBNYWtlRHVyYXRpb24oc2VjLCB0aWNrcyk7CiB9CisKIC8vIFByb3ZpZGUg
YWNjZXNzIHRvIHRoZSBEdXJhdGlvbiByZXByZXNlbnRhdGlvbi4KIGNvbnN0ZXhwciBpbnQ2NF90
IEdldFJlcEhpKER1cmF0aW9uIGQpIHsgcmV0dXJuIGQucmVwX2hpXzsgfQogY29uc3RleHByIHVp
bnQzMl90IEdldFJlcExvKER1cmF0aW9uIGQpIHsgcmV0dXJuIGQucmVwX2xvXzsgfQorCisvLyBS
ZXR1cm5zIHRydWUgaWZmIGQgaXMgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW5maW5pdHkuCiBjb25z
dGV4cHIgYm9vbCBJc0luZmluaXRlRHVyYXRpb24oRHVyYXRpb24gZCkgeyByZXR1cm4gR2V0UmVw
TG8oZCkgPT0gfjBVOyB9CiAKIC8vIFJldHVybnMgYW4gaW5maW5pdGUgRHVyYXRpb24gd2l0aCB0
aGUgb3Bwb3NpdGUgc2lnbi4KIC8vIFJFUVVJUkVTOiBJc0luZmluaXRlRHVyYXRpb24oZCkKIGNv
bnN0ZXhwciBEdXJhdGlvbiBPcHBvc2l0ZUluZmluaXR5KER1cmF0aW9uIGQpIHsKICAgcmV0dXJu
IEdldFJlcEhpKGQpIDwgMAotICAgICAgICAgICAgID8gTWFrZUR1cmF0aW9uKHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1heCgpLCB+MFUpCi0gICAgICAgICAgICAgOiBNYWtlRHVyYXRp
b24oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIH4wVSk7CisgICAgICAgICAg
ICAgPyBNYWtlRHVyYXRpb24oKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCkoKSwg
fjBVKQorICAgICAgICAgICAgIDogTWFrZUR1cmF0aW9uKChzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptaW4pKCksIH4wVSk7CiB9CiAKIC8vIFJldHVybnMgKC1uKS0xIChlcXVpdmFsZW50
bHkgLShuKzEpKSB3aXRob3V0IGF2b2lkYWJsZSBvdmVyZmxvdy4KQEAgLTExOTksMTQgKzEzODYs
MTQgQEAgY29uc3RleHByIER1cmF0aW9uIEZyb21JbnQ2NChpbnQ2NF90IHYsIHN0ZDo6cmF0aW88
MSwgTj4pIHsKICAgICAgIHYgLyBOLCB2ICUgTiAqIGtUaWNrc1Blck5hbm9zZWNvbmQgKiAxMDAw
ICogMTAwMCAqIDEwMDAgLyBOKTsKIH0KIGNvbnN0ZXhwciBEdXJhdGlvbiBGcm9tSW50NjQoaW50
NjRfdCB2LCBzdGQ6OnJhdGlvPDYwPikgewotICByZXR1cm4gKHYgPD0gc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWF4KCkgLyA2MCAmJgotICAgICAgICAgIHYgPj0gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWluKCkgLyA2MCkKKyAgcmV0dXJuICh2IDw9IChzdGQ6Om51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptYXgpKCkgLyA2MCAmJgorICAgICAgICAgIHYgPj0gKHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbikoKSAvIDYwKQogICAgICAgICAgICAgID8gTWFr
ZUR1cmF0aW9uKHYgKiA2MCkKICAgICAgICAgICAgICA6IHYgPiAwID8gSW5maW5pdGVEdXJhdGlv
bigpIDogLUluZmluaXRlRHVyYXRpb24oKTsKIH0KIGNvbnN0ZXhwciBEdXJhdGlvbiBGcm9tSW50
NjQoaW50NjRfdCB2LCBzdGQ6OnJhdGlvPDM2MDA+KSB7Ci0gIHJldHVybiAodiA8PSBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSAvIDM2MDAgJiYKLSAgICAgICAgICB2ID49IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpIC8gMzYwMCkKKyAgcmV0dXJuICh2IDw9
IChzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgpKCkgLyAzNjAwICYmCisgICAgICAg
ICAgdiA+PSAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKSgpIC8gMzYwMCkKICAg
ICAgICAgICAgICA/IE1ha2VEdXJhdGlvbih2ICogMzYwMCkKICAgICAgICAgICAgICA6IHYgPiAw
ID8gSW5maW5pdGVEdXJhdGlvbigpIDogLUluZmluaXRlRHVyYXRpb24oKTsKIH0KQEAgLTEyNjMs
MTQgKzE0NTAsMTUgQEAgVCBUb0Nocm9ub0R1cmF0aW9uKER1cmF0aW9uIGQpIHsKICAgdXNpbmcg
UGVyaW9kID0gdHlwZW5hbWUgVDo6cGVyaW9kOwogICBzdGF0aWNfYXNzZXJ0KElzVmFsaWRSZXA2
NDxSZXA+KDApLCAiZHVyYXRpb246OnJlcCBpcyBpbnZhbGlkIik7CiAgIGlmICh0aW1lX2ludGVy
bmFsOjpJc0luZmluaXRlRHVyYXRpb24oZCkpCi0gICAgcmV0dXJuIGQgPCBaZXJvRHVyYXRpb24o
KSA/IFQ6Om1pbigpIDogVDo6bWF4KCk7CisgICAgcmV0dXJuIGQgPCBaZXJvRHVyYXRpb24oKSA/
IChUOjptaW4pKCkgOiAoVDo6bWF4KSgpOwogICBjb25zdCBhdXRvIHYgPSBUb0ludDY0KGQsIFBl
cmlvZHt9KTsKLSAgaWYgKHYgPiBzdGQ6Om51bWVyaWNfbGltaXRzPFJlcD46Om1heCgpKSByZXR1
cm4gVDo6bWF4KCk7Ci0gIGlmICh2IDwgc3RkOjpudW1lcmljX2xpbWl0czxSZXA+OjptaW4oKSkg
cmV0dXJuIFQ6Om1pbigpOworICBpZiAodiA+IChzdGQ6Om51bWVyaWNfbGltaXRzPFJlcD46Om1h
eCkoKSkgcmV0dXJuIChUOjptYXgpKCk7CisgIGlmICh2IDwgKHN0ZDo6bnVtZXJpY19saW1pdHM8
UmVwPjo6bWluKSgpKSByZXR1cm4gKFQ6Om1pbikoKTsKICAgcmV0dXJuIFR7dn07CiB9CiAKIH0g
IC8vIG5hbWVzcGFjZSB0aW1lX2ludGVybmFsCisKIGNvbnN0ZXhwciBEdXJhdGlvbiBOYW5vc2Vj
b25kcyhpbnQ2NF90IG4pIHsKICAgcmV0dXJuIHRpbWVfaW50ZXJuYWw6OkZyb21JbnQ2NChuLCBz
dGQ6Om5hbm97fSk7CiB9CkBAIC0xMjkzLDcgKzE0ODEsOCBAQCBjb25zdGV4cHIgRHVyYXRpb24g
SG91cnMoaW50NjRfdCBuKSB7CiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoRHVyYXRpb24gbGhz
LCBEdXJhdGlvbiByaHMpIHsKICAgcmV0dXJuIHRpbWVfaW50ZXJuYWw6OkdldFJlcEhpKGxocykg
IT0gdGltZV9pbnRlcm5hbDo6R2V0UmVwSGkocmhzKQogICAgICAgICAgICAgID8gdGltZV9pbnRl
cm5hbDo6R2V0UmVwSGkobGhzKSA8IHRpbWVfaW50ZXJuYWw6OkdldFJlcEhpKHJocykKLSAgICAg
ICAgICAgICA6IHRpbWVfaW50ZXJuYWw6OkdldFJlcEhpKGxocykgPT0gc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWluKCkKKyAgICAgICAgICAgICA6IHRpbWVfaW50ZXJuYWw6OkdldFJl
cEhpKGxocykgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1pbikoKQogICAgICAgICAgICAgICAgICAgID8gdGltZV9pbnRlcm5hbDo6R2V0
UmVwTG8obGhzKSArIDEgPAogICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVfaW50ZXJuYWw6
OkdldFJlcExvKHJocykgKyAxCiAgICAgICAgICAgICAgICAgICAgOiB0aW1lX2ludGVybmFsOjpH
ZXRSZXBMbyhsaHMpIDwKQEAgLTEzMTgsNyArMTUwNyw4IEBAIGNvbnN0ZXhwciBEdXJhdGlvbiBv
cGVyYXRvci0oRHVyYXRpb24gZCkgewogICAvLyBhIHNlY29uZCdzIHdvcnRoIG9mIHRpY2tzIGFu
ZCBhdm9pZCBvdmVyZmxvdyAoYXMgbmVnYXRpbmcgaW50NjRfdC1taW4gKyAxCiAgIC8vIGlzIHNh
ZmUpLgogICByZXR1cm4gdGltZV9pbnRlcm5hbDo6R2V0UmVwTG8oZCkgPT0gMAotICAgICAgICAg
ICAgID8gdGltZV9pbnRlcm5hbDo6R2V0UmVwSGkoZCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWluKCkKKyAgICAgICAgICAgICA/IHRpbWVfaW50ZXJuYWw6OkdldFJlcEhpKGQp
ID09CisgICAgICAgICAgICAgICAgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptaW4pKCkKICAgICAgICAgICAgICAgICAgICA/IEluZmluaXRlRHVyYXRpb24oKQogICAgICAg
ICAgICAgICAgICAgIDogdGltZV9pbnRlcm5hbDo6TWFrZUR1cmF0aW9uKC10aW1lX2ludGVybmFs
OjpHZXRSZXBIaShkKSkKICAgICAgICAgICAgICA6IHRpbWVfaW50ZXJuYWw6OklzSW5maW5pdGVE
dXJhdGlvbihkKQpAQCAtMTMzMSw3ICsxNTIxLDggQEAgY29uc3RleHByIER1cmF0aW9uIG9wZXJh
dG9yLShEdXJhdGlvbiBkKSB7CiB9CiAKIGNvbnN0ZXhwciBEdXJhdGlvbiBJbmZpbml0ZUR1cmF0
aW9uKCkgewotICByZXR1cm4gdGltZV9pbnRlcm5hbDo6TWFrZUR1cmF0aW9uKHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1heCgpLCB+MFUpOworICByZXR1cm4gdGltZV9pbnRlcm5hbDo6
TWFrZUR1cmF0aW9uKChzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgpKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfjBVKTsKIH0KIAogY29uc3RleHByIER1
cmF0aW9uIEZyb21DaHJvbm8oY29uc3Qgc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzJiBkKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWVfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1l
X2JlbmNobWFyay5jYwppbmRleCBlMTAwOTk0NmNkNTg2ZWYzMzAzZTA1MzMzOTIyYTY5OTAzOTUz
NzU0Li45OWU2Mjc5OTg0ZTY4NzM4ODc3ZjkwOWU0OTc3YTA1ZDQ0OTAyMDQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL3RpbWVfYmVuY2htYXJrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZV9iZW5j
aG1hcmsuY2MKQEAgLTMsNyArMyw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE2
OSwzMiArMTY5LDMyIEBAIHZvaWQgQk1fVGltZV9Ub1VuaXhTZWNvbmRzKGJlbmNobWFyazo6U3Rh
dGUmIHN0YXRlKSB7CiBCRU5DSE1BUksoQk1fVGltZV9Ub1VuaXhTZWNvbmRzKTsKIAogLy8KLS8v
IEZyb21EYXRlVGltZQorLy8gRnJvbUNpdmlsCiAvLwotLy8gSW4gZWFjaCAiRnJvbURhdGVUaW1l
IiBiZW5jaG1hcmsgd2Ugc3dpdGNoIGJldHdlZW4gdHdvIFlNRGhtcwotLy8gdmFsdWVzIHNlcGFy
YXRlZCBieSBhdCBsZWFzdCBvbmUgdHJhbnNpdGlvbiBpbiBvcmRlciB0byBkZWZlYXQgYW55Ci0v
LyBpbnRlcm5hbCBjYWNoaW5nIG9mIHByZXZpb3VzIHJlc3VsdHMgKGUuZy4sIHNlZSB0aW1lX2xv
Y2FsX2hpbnRfKS4KKy8vIEluIGVhY2ggIkZyb21DaXZpbCIgYmVuY2htYXJrIHdlIHN3aXRjaCBi
ZXR3ZWVuIHR3byBZTURobXMgdmFsdWVzCisvLyBzZXBhcmF0ZWQgYnkgYXQgbGVhc3Qgb25lIHRy
YW5zaXRpb24gaW4gb3JkZXIgdG8gZGVmZWF0IGFueSBpbnRlcm5hbAorLy8gY2FjaGluZyBvZiBw
cmV2aW91cyByZXN1bHRzIChlLmcuLCBzZWUgdGltZV9sb2NhbF9oaW50XykuCiAvLwogLy8gVGhl
ICJVVEMiIHZhcmlhbnRzIHVzZSBVVEMgaW5zdGVhZCBvZiB0aGUgR29vZ2xlL2xvY2FsIHRpbWUg
em9uZS4KIC8vIFRoZSAiRGF5MCIgdmFyaWFudHMgcmVxdWlyZSBub3JtYWxpemF0aW9uIG9mIHRo
ZSBkYXkgb2YgbW9udGguCiAvLwogCi12b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lX0Fic2woYmVu
Y2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGltZV9Gcm9tQ2l2aWxfQWJzbChiZW5j
aG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBjb25zdCBhYnNsOjpUaW1lWm9uZSB0eiA9CiAgICAg
ICBhYnNsOjp0aW1lX2ludGVybmFsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMi
KTsKICAgaW50IGkgPSAwOwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewogICAgIGlm
ICgoaSAmIDEpID09IDApIHsKLSAgICAgIGFic2w6OkZyb21EYXRlVGltZSgyMDE0LCAxMiwgMTgs
IDIwLCAxNiwgMTgsIHR6KTsKKyAgICAgIGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29u
ZCgyMDE0LCAxMiwgMTgsIDIwLCAxNiwgMTgpLCB0eik7CiAgICAgfSBlbHNlIHsKLSAgICAgIGFi
c2w6OkZyb21EYXRlVGltZSgyMDEzLCAxMSwgMTUsIDE4LCAzMCwgMjcsIHR6KTsKKyAgICAgIGFi
c2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMTUsIDE4LCAzMCwgMjcp
LCB0eik7CiAgICAgfQogICAgICsraTsKICAgfQogfQotQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbURh
dGVUaW1lX0Fic2wpOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmlsX0Fic2wpOwogCi12b2lk
IEJNX1RpbWVfRnJvbURhdGVUaW1lX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3Zv
aWQgQk1fVGltZV9Gcm9tQ2l2aWxfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICAv
LyBObyB0aW1lem9uZSBzdXBwb3J0LCBzbyBqdXN0IHVzZSBsb2NhbHRpbWUuCiAgIGludCBpID0g
MDsKICAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nKCkpIHsKQEAgLTIxOSwzMiArMjE5LDMyIEBA
IHZvaWQgQk1fVGltZV9Gcm9tRGF0ZVRpbWVfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkg
ewogICAgICsraTsKICAgfQogfQotQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbURhdGVUaW1lX0xpYmMp
OworQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmlsX0xpYmMpOwogCi12b2lkIEJNX1RpbWVfRnJv
bURhdGVUaW1lVVRDX0Fic2woYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGlt
ZV9Gcm9tQ2l2aWxVVENfQWJzbChiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBjb25zdCBh
YnNsOjpUaW1lWm9uZSB0eiA9IGFic2w6OlVUQ1RpbWVab25lKCk7CiAgIHdoaWxlIChzdGF0ZS5L
ZWVwUnVubmluZygpKSB7Ci0gICAgRnJvbURhdGVUaW1lKDIwMTQsIDEyLCAxOCwgMjAsIDE2LCAx
OCwgdHopOworICAgIGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxMiwg
MTgsIDIwLCAxNiwgMTgpLCB0eik7CiAgIH0KIH0KLUJFTkNITUFSSyhCTV9UaW1lX0Zyb21EYXRl
VGltZVVUQ19BYnNsKTsKK0JFTkNITUFSSyhCTV9UaW1lX0Zyb21DaXZpbFVUQ19BYnNsKTsKIAot
dm9pZCBCTV9UaW1lX0Zyb21EYXRlVGltZURheTBfQWJzbChiZW5jaG1hcms6OlN0YXRlJiBzdGF0
ZSkgewordm9pZCBCTV9UaW1lX0Zyb21DaXZpbERheTBfQWJzbChiZW5jaG1hcms6OlN0YXRlJiBz
dGF0ZSkgewogICBjb25zdCBhYnNsOjpUaW1lWm9uZSB0eiA9CiAgICAgICBhYnNsOjp0aW1lX2lu
dGVybmFsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiKTsKICAgaW50IGkgPSAw
OwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewogICAgIGlmICgoaSAmIDEpID09IDAp
IHsKLSAgICAgIGFic2w6OkZyb21EYXRlVGltZSgyMDE0LCAxMiwgMCwgMjAsIDE2LCAxOCwgdHop
OworICAgICAgYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKDIwMTQsIDEyLCAwLCAy
MCwgMTYsIDE4KSwgdHopOwogICAgIH0gZWxzZSB7Ci0gICAgICBhYnNsOjpGcm9tRGF0ZVRpbWUo
MjAxMywgMTEsIDAsIDE4LCAzMCwgMjcsIHR6KTsKKyAgICAgIGFic2w6OkZyb21DaXZpbChhYnNs
OjpDaXZpbFNlY29uZCgyMDEzLCAxMSwgMCwgMTgsIDMwLCAyNyksIHR6KTsKICAgICB9CiAgICAg
KytpOwogICB9CiB9Ci1CRU5DSE1BUksoQk1fVGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0Fic2wpOwor
QkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmlsRGF5MF9BYnNsKTsKIAotdm9pZCBCTV9UaW1lX0Zy
b21EYXRlVGltZURheTBfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9U
aW1lX0Zyb21DaXZpbERheTBfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICAvLyBO
byB0aW1lem9uZSBzdXBwb3J0LCBzbyBqdXN0IHVzZSBsb2NhbHRpbWUuCiAgIGludCBpID0gMDsK
ICAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nKCkpIHsKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lk
IEJNX1RpbWVfRnJvbURhdGVUaW1lRGF5MF9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7
CiAgICAgKytpOwogICB9CiB9Ci1CRU5DSE1BUksoQk1fVGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0xp
YmMpOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmlsRGF5MF9MaWJjKTsKIAogLy8KIC8vIFRv
L0Zyb21UaW1lc3BlYwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lX25vcm1fdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvdGltZV9ub3JtX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQ0MzYyNDJlNDEyNTU3OGUyZjE1YTc4NzNkNmMxYzZiMDljYTZhZTAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lX25vcm1f
dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAx
NyBUaGUgQWJzZWlsIEF1dGhvcnMuCi0vLwotLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0vLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0vLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLS8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotLy8KLS8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLS8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCi0vLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLS8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLS8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgdGVzdHMgZm9y
IEZyb21EYXRlVGltZSgpIG5vcm1hbGl6YXRpb24sIHdoaWNoIGlzCi0vLyB0aW1lLXpvbmUgaW5k
ZXBlbmRlbnQgc28gd2UganVzdCB1c2UgVVRDIHRocm91Z2hvdXQuCi0KLSNpbmNsdWRlIDxjc3Rk
aW50PgotI2luY2x1ZGUgPGxpbWl0cz4KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0jaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJhYnNsL3RpbWUvaW50ZXJuYWwvdGVzdF91
dGlsLmgiCi0jaW5jbHVkZSAiYWJzbC90aW1lL3RpbWUuaCIKLQotbmFtZXNwYWNlIHsKLQotVEVT
VChUaW1lTm9ybUNhc2UsIFNpbXBsZU92ZXJmbG93KSB7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25l
IHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7Ci0KLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gdGMg
PQotICAgICAgYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDExLCAxNSwgMTYsIDMyLCA1OSAr
IDEsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJz
bDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGFic2w6OlRpbWU6OkJyZWFr
ZG93biBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJk
LCAyMDEzLCAxMSwgMTUsIDE2LCAzMywgMCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29u
dmVydERhdGVUaW1lKDIwMTMsIDExLCAxNSwgMTYsIDU5ICsgMSwgMTQsIHV0Yyk7Ci0gIEVYUEVD
VF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246
OlVOSVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJO
QUxfRVhQRUNUX1RJTUUoYmQsIDIwMTMsIDExLCAxNSwgMTcsIDAsIDE0LCAwLCBmYWxzZSk7Ci0K
LSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDE1LCAyMyArIDEsIDMyLCAx
NCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNs
OjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRj
KTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxMywgMTEsIDE2LCAwLCAzMiwg
MTQsIDAsIGZhbHNlKTsKLQotICB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDEzLCAxMSwg
MzAgKyAxLCAxNiwgMzIsIDE0LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsK
LSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBi
ZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEz
LCAxMiwgMSwgMTYsIDMyLCAxNCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERh
dGVUaW1lKDIwMTMsIDEyICsgMSwgMTUsIDE2LCAzMiwgMTQsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVF
KHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFV
RSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQ
RUNUX1RJTUUoYmQsIDIwMTQsIDEsIDE1LCAxNiwgMzIsIDE0LCAwLCBmYWxzZSk7Ci19Ci0KLVRF
U1QoVGltZU5vcm1DYXNlLCBTaW1wbGVVbmRlcmZsb3cpIHsKLSAgY29uc3QgYWJzbDo6VGltZVpv
bmUgdXRjID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKLQotICBhYnNsOjpUaW1lQ29udmVyc2lvbiB0
YyA9IENvbnZlcnREYXRlVGltZSgyMDEzLCAxMSwgMTUsIDE2LCAzMiwgMCAtIDEsIHV0Yyk7Ci0g
IEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZl
cnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IHRj
LnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEzLCAxMSwg
MTUsIDE2LCAzMSwgNTksIDAsIGZhbHNlKTsKLQotICB0YyA9IENvbnZlcnREYXRlVGltZSgyMDEz
LCAxMSwgMTUsIDE2LCAwIC0gMSwgMTQsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6
ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7
Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQs
IDIwMTMsIDExLCAxNSwgMTUsIDU5LCAxNCwgMCwgZmFsc2UpOwotCi0gIHRjID0gQ29udmVydERh
dGVUaW1lKDIwMTMsIDExLCAxNSwgMCAtIDEsIDMyLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUo
dGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVF
LCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBF
Q1RfVElNRShiZCwgMjAxMywgMTEsIDE0LCAyMywgMzIsIDE0LCAwLCBmYWxzZSk7Ci0KLSAgdGMg
PSBDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDEgLSAxLCAxNiwgMzIsIDE0LCB1dGMpOwotICBF
WFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJz
aW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lO
VEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEzLCAxMCwgMzEsIDE2LCAzMiwgMTQsIDAsIGZhbHNl
KTsKLQotICB0YyA9IENvbnZlcnREYXRlVGltZSgyMDEzLCAxIC0gMSwgMTUsIDE2LCAzMiwgMTQs
IHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6
VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7
Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMTIsIDEyLCAxNSwgMTYsIDMyLCAx
NCwgMCwgZmFsc2UpOwotfQotCi1URVNUKFRpbWVOb3JtQ2FzZSwgTXVsdGlwbGVPdmVyZmxvdykg
ewotICBjb25zdCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENUaW1lWm9uZSgpOwotICBh
YnNsOjpUaW1lQ29udmVyc2lvbiB0YyA9IENvbnZlcnREYXRlVGltZSgyMDEzLCAxMiwgMzEsIDIz
LCA1OSwgNTkgKyAxLCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQ
RUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBhYnNsOjpU
aW1lOjpCcmVha2Rvd24gYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBF
Q1RfVElNRShiZCwgMjAxNCwgMSwgMSwgMCwgMCwgMCwgMCwgZmFsc2UpOwotfQotCi1URVNUKFRp
bWVOb3JtQ2FzZSwgTXVsdGlwbGVVbmRlcmZsb3cpIHsKLSAgY29uc3QgYWJzbDo6VGltZVpvbmUg
dXRjID0gYWJzbDo6VVRDVGltZVpvbmUoKTsKLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gdGMgPSBh
YnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxNCwgMSwgMSwgMCwgMCwgMCAtIDEsIHV0Yyk7Ci0gIEVY
UEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNp
b246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IHRjLnBy
ZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDEzLCAxMiwgMzEs
IDIzLCA1OSwgNTksIDAsIGZhbHNlKTsKLX0KLQotVEVTVChUaW1lTm9ybUNhc2UsIE92ZXJmbG93
TGltaXRzKSB7Ci0gIGNvbnN0IGFic2w6OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25l
KCk7Ci0gIGFic2w6OlRpbWVDb252ZXJzaW9uIHRjOwotICBhYnNsOjpUaW1lOjpCcmVha2Rvd24g
YmQ7Ci0KLSAgY29uc3QgaW50IGtpbnRtYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpOwotICB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgwLCBraW50bWF4LCBraW50bWF4LCBr
aW50bWF4LCBraW50bWF4LCBraW50bWF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRp
bWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwot
ICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAxODUwODU3MTUsIDExLCAyNywgMTIsIDIx
LCA3LCAwLCBmYWxzZSk7Ci0KLSAgY29uc3QgaW50IGtpbnRtaW4gPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludD46Om1pbigpOwotICB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgwLCBraW50bWlu
LCBraW50bWluLCBraW50bWluLCBraW50bWluLCBraW50bWluLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNU
X0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnBy
ZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAtMTg1MDg1NzE3LCAx
MCwgMzEsIDEwLCAzNywgNTIsIDAsIGZhbHNlKTsKLQotICBjb25zdCBpbnQ2NF90IG1heF95ZWFy
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7Ci0gIHRjID0gYWJzbDo6Q29u
dmVydERhdGVUaW1lKG1heF95ZWFyLCAxMiwgMzEsIDIzLCA1OSwgNTksIHV0Yyk7Ci0gIEVYUEVD
VF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246
OlVOSVFVRSwgdGMua2luZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpLCB0
Yy5wcmUpOwotCi0gIGNvbnN0IGludDY0X3QgbWluX3llYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDY0X3Q+OjptaW4oKTsKLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUobWluX3llYXIs
IDEsIDEsIDAsIDAsIDAsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBF
WFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIEVYUEVD
VF9FUShhYnNsOjpJbmZpbml0ZVBhc3QoKSwgdGMucHJlKTsKLX0KLQotVEVTVChUaW1lTm9ybUNh
c2UsIENvbXBsZXhPdmVyZmxvdykgewotICBjb25zdCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNs
OjpVVENUaW1lWm9uZSgpOwotCi0gIGFic2w6OlRpbWVDb252ZXJzaW9uIHRjID0KLSAgICAgIENv
bnZlcnREYXRlVGltZSgyMDEzLCAxMSwgMTUsIDE2LCAzMiwgMTQgKyAxMjM0NTY3ODksIHV0Yyk7
Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNv
bnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9
IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDE3LCAx
MCwgMTQsIDE0LCA1LCAyMywgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERhdGVU
aW1lKDIwMTMsIDExLCAxNSwgMTYsIDMyICsgMTIzNDU2NywgMTQsIHV0Yyk7Ci0gIEVYUEVDVF9U
UlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVO
SVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxf
RVhQRUNUX1RJTUUoYmQsIDIwMTYsIDMsIDIyLCAwLCAzOSwgMTQsIDAsIGZhbHNlKTsKLQotICB0
YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDEzLCAxMSwgMTUsIDE2ICsgMTIzNDU2LCAzMiwg
MTQsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJz
bDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0
Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMjcsIDEyLCAxNiwgMTYsIDMy
LCAxNCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDIwMTMsIDEx
LCAxNSArIDEyMzQsIDE2LCAzMiwgMTQsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6
ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7
Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQs
IDIwMTcsIDQsIDIsIDE2LCAzMiwgMTQsIDAsIGZhbHNlKTsKLQotICB0YyA9IGFic2w6OkNvbnZl
cnREYXRlVGltZSgyMDEzLCAxMSArIDEyMywgMTUsIDE2LCAzMiwgMTQsIHV0Yyk7Ci0gIEVYUEVD
VF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246
OlVOSVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJO
QUxfRVhQRUNUX1RJTUUoYmQsIDIwMjQsIDIsIDE1LCAxNiwgMzIsIDE0LCAwLCBmYWxzZSk7Ci19
Ci0KLVRFU1QoVGltZU5vcm1DYXNlLCBDb21wbGV4VW5kZXJmbG93KSB7Ci0gIGNvbnN0IGFic2w6
OlRpbWVab25lIHV0YyA9IGFic2w6OlVUQ1RpbWVab25lKCk7Ci0KLSAgYWJzbDo6VGltZUNvbnZl
cnNpb24gdGMgPQotICAgICAgYWJzbDo6Q29udmVydERhdGVUaW1lKDE5OTksIDMsIDAsIDAsIDAs
IDAsIHV0Yyk7ICAvLyB5ZWFyIDQwMAotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAg
RVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBhYnNs
OjpUaW1lOjpCcmVha2Rvd24gYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9F
WFBFQ1RfVElNRShiZCwgMTk5OSwgMiwgMjgsIDAsIDAsIDAsIDAsIGZhbHNlKTsKLQotICB0YyA9
IGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDEzLCAxMSwgMTUsIDE2LCAzMiwgMTQgLSAxMjM0NTY3
ODksIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJz
bDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0
Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUoYmQsIDIwMDksIDEyLCAxNywgMTgsIDU5
LCA1LCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEs
IDE1LCAxNiwgMzIgLSAxMjM0NTY3LCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFs
aXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5k
KTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShi
ZCwgMjAxMSwgNywgMTIsIDgsIDI1LCAxNCwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29u
dmVydERhdGVUaW1lKDIwMTMsIDExLCAxNSwgMTYgLSAxMjM0NTYsIDMyLCAxNCwgdXRjKTsKLSAg
RVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVy
c2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9J
TlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMTk5OSwgMTAsIDE2LCAxNiwgMzIsIDE0LCAwLCBmYWxz
ZSk7Ci0KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDE1IC0gMTIzNCwg
MTYsIDMyLCAxNCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVD
VF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5w
cmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxMCwgNiwgMzAs
IDE2LCAzMiwgMTQsIDAsIGZhbHNlKTsKLQotICB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgy
MDEzLCAxMSAtIDEyMywgMTUsIDE2LCAzMiwgMTQsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5v
cm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMu
a2luZCk7Ci0gIGJkID0gdGMucHJlLkluKHV0Yyk7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJ
TUUoYmQsIDIwMDMsIDgsIDE1LCAxNiwgMzIsIDE0LCAwLCBmYWxzZSk7Ci19Ci0KLVRFU1QoVGlt
ZU5vcm1DYXNlLCBNaXNobWFzaCkgewotICBjb25zdCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNs
OjpVVENUaW1lWm9uZSgpOwotCi0gIGFic2w6OlRpbWVDb252ZXJzaW9uIHRjID0KLSAgICAgIGFi
c2w6OkNvbnZlcnREYXRlVGltZSgyMDEzLCAxMSAtIDEyMywgMTUgKyAxMjM0LCAxNiAtIDEyMzQ1
NiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiArIDEyMzQ1NjcsIDE0IC0gMTIzNDU2
Nzg5LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFi
c2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBhYnNsOjpUaW1lOjpCcmVh
a2Rvd24gYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShi
ZCwgMTk5MSwgNSwgOSwgMywgNiwgNSwgMCwgZmFsc2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVy
dERhdGVUaW1lKDIwMTMsIDExICsgMTIzLCAxNSAtIDEyMzQsIDE2ICsgMTIzNDU2LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzMiAtIDEyMzQ1NjcsIDE0ICsgMTIzNDU2Nzg5LCB1dGMp
OwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVD
b252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBB
QlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDM2LCA1LCAyNCwgNSwgNTgsIDIzLCAwLCBm
YWxzZSk7Ci0KLSAgLy8gSGVyZSBpcyBhIG5vcm1hbGl6YXRpb24gY2FzZSB3ZSBnb3Qgd3Jvbmcg
Zm9yIGEgd2hpbGUuICBCZWNhdXNlIHRoZQotICAvLyBkYXkgaXMgY29udmVydGVkIHRvICIxIiB3
aXRoaW4gYSA0MDAteWVhciAoMTQ2MDk3LWRheSkgcGVyaW9kLCB3ZQotICAvLyBkaWRuJ3QgbmVl
ZCB0byByb2xsIHRoZSBtb250aCBhbmQgc28gd2UgZGlkbid0IG1hcmsgaXQgYXMgbm9ybWFsaXpl
ZC4KLSAgdGMgPSBhYnNsOjpDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIC0xNDYwOTcgKyAxLCAx
NiwgMzIsIDE0LCB1dGMpOwotICBFWFBFQ1RfVFJVRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNU
X0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnBy
ZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAxNjEzLCAxMSwgMSwg
MTYsIDMyLCAxNCwgMCwgZmFsc2UpOwotCi0gIC8vIEV2ZW4gdGhvdWdoIHRoZSBtb250aCBvdmVy
ZmxvdyBjb21wZW5zYXRlcyBmb3IgdGhlIGRheSB1bmRlcmZsb3csCi0gIC8vIHRoaXMgc2hvdWxk
IHN0aWxsIGJlIG1hcmtlZCBhcyBub3JtYWxpemVkLgotICB0YyA9IGFic2w6OkNvbnZlcnREYXRl
VGltZSgyMDEzLCAxMSArIDQwMCAqIDEyLCAtMTQ2MDk3ICsgMSwgMTYsIDMyLCAxNCwgdXRjKTsK
LSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29u
dmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJT
TF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjAxMywgMTEsIDEsIDE2LCAzMiwgMTQsIDAsIGZh
bHNlKTsKLX0KLQotVEVTVChUaW1lTm9ybUNhc2UsIExlYXBZZWFycykgewotICBjb25zdCBhYnNs
OjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENUaW1lWm9uZSgpOwotCi0gIGFic2w6OlRpbWVDb252
ZXJzaW9uIHRjID0KLSAgICAgIGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDEzLCAyLCAyOCArIDEs
IDAsIDAsIDAsIHV0Yyk7Ci0gIEVYUEVDVF9UUlVFKHRjLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1Rf
RVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwgdGMua2luZCk7Ci0gIGFic2w6OlRpbWU6
OkJyZWFrZG93biBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9U
SU1FKGJkLCAyMDEzLCAzLCAxLCAwLCAwLCAwLCAwLCBmYWxzZSk7Ci0KLSAgdGMgPSBhYnNsOjpD
b252ZXJ0RGF0ZVRpbWUoMjAxMiwgMiwgMjggKyAxLCAwLCAwLCAwLCB1dGMpOwotICBFWFBFQ1Rf
RkFMU0UodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29udmVyc2lvbjo6
VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4odXRjKTsKLSAgQUJTTF9JTlRFUk5B
TF9FWFBFQ1RfVElNRShiZCwgMjAxMiwgMiwgMjksIDAsIDAsIDAsIDAsIGZhbHNlKTsKLQotICB0
YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDAwLCAyLCAyOCArIDEsIDAsIDAsIDAsIHV0Yyk7
Ci0gIEVYUEVDVF9GQUxTRSh0Yy5ub3JtYWxpemVkKTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVD
b252ZXJzaW9uOjpVTklRVUUsIHRjLmtpbmQpOwotICBiZCA9IHRjLnByZS5Jbih1dGMpOwotICBB
QlNMX0lOVEVSTkFMX0VYUEVDVF9USU1FKGJkLCAyMDAwLCAyLCAyOSwgMCwgMCwgMCwgMCwgZmFs
c2UpOwotCi0gIHRjID0gYWJzbDo6Q29udmVydERhdGVUaW1lKDE5MDAsIDIsIDI4ICsgMSwgMCwg
MCwgMCwgdXRjKTsKLSAgRVhQRUNUX1RSVUUodGMubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShh
YnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCB0Yy5raW5kKTsKLSAgYmQgPSB0Yy5wcmUuSW4o
dXRjKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMTkwMCwgMywgMSwgMCwgMCwg
MCwgMCwgZmFsc2UpOwotfQotCi0vLyBDb252ZXJ0IGFsbCB0aGUgZGF5cyBmcm9tIDE5NzAtMS0x
IHRvIDE5NzAtMS0xNDYwOTcgKGFrYSAyMzY5LTEyLTMxKQotLy8gYW5kIGNoZWNrIHRoYXQgdGhl
eSBub3JtYWxpemUgdG8gdGhlIGV4cGVjdGVkIHRpbWUuICAxNDYwOTcgZGF5cyBzcGFuCi0vLyB0
aGUgNDAwLXllYXIgR3JlZ29yaWFuIGN5Y2xlIHVzZWQgZHVyaW5nIG5vcm1hbGl6YXRpb24uCi1U
RVNUKFRpbWVOb3JtQ2FzZSwgQWxsVGhlRGF5cykgewotICBjb25zdCBhYnNsOjpUaW1lWm9uZSB1
dGMgPSBhYnNsOjpVVENUaW1lWm9uZSgpOwotICBhYnNsOjpUaW1lIGV4cF90aW1lID0gYWJzbDo6
VW5peEVwb2NoKCk7Ci0KLSAgZm9yIChpbnQgZGF5ID0gMTsgZGF5IDw9IDE0NjA5NzsgKytkYXkp
IHsKLSAgICBhYnNsOjpUaW1lQ29udmVyc2lvbiB0YyA9IGFic2w6OkNvbnZlcnREYXRlVGltZSgx
OTcwLCAxLCBkYXksIDAsIDAsIDAsIHV0Yyk7Ci0gICAgRVhQRUNUX0VRKGRheSA+IDMxLCB0Yy5u
b3JtYWxpemVkKTsKLSAgICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZlcnNpb246OlVOSVFVRSwg
dGMua2luZCk7Ci0gICAgRVhQRUNUX0VRKGV4cF90aW1lLCB0Yy5wcmUpOwotICAgIGV4cF90aW1l
ICs9IGFic2w6OkhvdXJzKDI0KTsKLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvdGltZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lX3Rlc3QuY2MKaW5k
ZXggNGY4ZjU4YTZlZjM2MmQ5ZDhhMDIyN2EyNzA4ZDIyZGY2ZTBmMzk5My4uMzdhZjM5ZDk5ODMw
NTgxN2E3ZjVlM2IxNGVkNTJjZTQ1ZmI4YWVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1l
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lX3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDYgKzE0LDEwIEBACiAKICNpbmNsdWRlICJh
YnNsL3RpbWUvdGltZS5oIgogCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNpbmNsdWRlIDx3aW5z
b2NrMi5oPiAgLy8gZm9yIHRpbWV2YWwKKyNlbmRpZgorCiAjaW5jbHVkZSA8Y2hyb25vPiAgLy8g
Tk9MSU5UKGJ1aWxkL2MrKzExKQogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8Y3RpbWU+
CkBAIC0yOCw2ICszMiwyNyBAQAogCiBuYW1lc3BhY2UgewogCisjaWYgZGVmaW5lZChHVEVTVF9V
U0VTX1NJTVBMRV9SRSkgJiYgR1RFU1RfVVNFU19TSU1QTEVfUkUKK2NvbnN0IGNoYXIga1pvbmVB
YmJyUkVbXSA9ICIuKiI7ICAvLyBqdXN0IHB1bnQKKyNlbHNlCitjb25zdCBjaGFyIGtab25lQWJi
clJFW10gPSAiW0EtWmEtel17Myw0fXxbLStdWzAtOV17Mn0oWzAtOV17Mn0pPyI7CisjZW5kaWYK
KworLy8gVGhpcyBoZWxwZXIgaXMgYSBtYWNybyBzbyB0aGF0IGZhaWxlZCBleHBlY3RhdGlvbnMg
c2hvdyB1cCB3aXRoIHRoZQorLy8gY29ycmVjdCBsaW5lIG51bWJlcnMuCisjZGVmaW5lIEVYUEVD
VF9DSVZJTF9JTkZPKGNpLCB5LCBtLCBkLCBoLCBtaW4sIHMsIG9mZiwgaXNkc3QpICAgICAgXAor
ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBFWFBFQ1RfRVEoeSwgY2kuY3MueWVhcigpKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0VRKG0sIGNpLmNzLm1vbnRoKCkp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9FUShkLCBj
aS5jcy5kYXkoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBF
WFBFQ1RfRVEoaCwgY2kuY3MuaG91cigpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgRVhQRUNUX0VRKG1pbiwgY2kuY3MubWludXRlKCkpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9FUShzLCBjaS5jcy5zZWNvbmQoKSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfRVEob2ZmLCBjaS5v
ZmZzZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNU
X0VRKGlzZHN0LCBjaS5pc19kc3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIEVYUEVDVF9USEFUKGNpLnpvbmVfYWJiciwgdGVzdGluZzo6TWF0Y2hlc1JlZ2V4KGta
b25lQWJiclJFKSk7IFwKKyAgfSB3aGlsZSAoMCkKKwogLy8gQSBnTW9jayBtYXRjaGVyIHRvIG1h
dGNoIHRpbWVzcGVjIHZhbHVlcy4gVXNlIHRoaXMgbWF0Y2hlciBsaWtlOgogLy8gdGltZXNwZWMg
dHMxLCB0czI7CiAvLyBFWFBFQ1RfVEhBVCh0czEsIFRpbWVzcGVjTWF0Y2hlcih0czIpKTsKQEAg
LTg0LDEwICsxMDksMTAgQEAgVEVTVChUaW1lLCBWYWx1ZVNlbWFudGljcykgewogfQogCiBURVNU
KFRpbWUsIFVuaXhFcG9jaCkgewotICBhYnNsOjpUaW1lOjpCcmVha2Rvd24gYmQgPSBhYnNsOjpV
bml4RXBvY2goKS5JbihhYnNsOjpVVENUaW1lWm9uZSgpKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBF
Q1RfVElNRShiZCwgMTk3MCwgMSwgMSwgMCwgMCwgMCwgMCwgZmFsc2UpOwotICBFWFBFQ1RfRVEo
YWJzbDo6WmVyb0R1cmF0aW9uKCksIGJkLnN1YnNlY29uZCk7Ci0gIEVYUEVDVF9FUSg0LCBiZC53
ZWVrZGF5KTsgIC8vIFRodXJzZGF5CisgIGNvbnN0IGF1dG8gY2kgPSBhYnNsOjpVVENUaW1lWm9u
ZSgpLkF0KGFic2w6OlVuaXhFcG9jaCgpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmlsU2Vjb25k
KDE5NzAsIDEsIDEsIDAsIDAsIDApLCBjaS5jcyk7CisgIEVYUEVDVF9FUShhYnNsOjpaZXJvRHVy
YXRpb24oKSwgY2kuc3Vic2Vjb25kKTsKKyAgRVhQRUNUX0VRKGFic2w6OldlZWtkYXk6OnRodXJz
ZGF5LCBhYnNsOjpHZXRXZWVrZGF5KGNpLmNzKSk7CiB9CiAKIFRFU1QoVGltZSwgQnJlYWtkb3du
KSB7CkBAIC05NSwyNiArMTIwLDI2IEBAIFRFU1QoVGltZSwgQnJlYWtkb3duKSB7CiAgIGFic2w6
OlRpbWUgdCA9IGFic2w6OlVuaXhFcG9jaCgpOwogCiAgIC8vIFRoZSBVbml4IGVwb2NoIGFzIHNl
ZW4gaW4gTllDLgotICBhYnNsOjpUaW1lOjpCcmVha2Rvd24gYmQgPSB0LkluKHR6KTsKLSAgQUJT
TF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMTk2OSwgMTIsIDMxLCAxOSwgMCwgMCwgLTE4MDAw
LCBmYWxzZSk7Ci0gIEVYUEVDVF9FUShhYnNsOjpaZXJvRHVyYXRpb24oKSwgYmQuc3Vic2Vjb25k
KTsKLSAgRVhQRUNUX0VRKDMsIGJkLndlZWtkYXkpOyAgLy8gV2VkbmVzZGF5CisgIGF1dG8gY2kg
PSB0ei5BdCh0KTsKKyAgRVhQRUNUX0NJVklMX0lORk8oY2ksIDE5NjksIDEyLCAzMSwgMTksIDAs
IDAsIC0xODAwMCwgZmFsc2UpOworICBFWFBFQ1RfRVEoYWJzbDo6WmVyb0R1cmF0aW9uKCksIGNp
LnN1YnNlY29uZCk7CisgIEVYUEVDVF9FUShhYnNsOjpXZWVrZGF5Ojp3ZWRuZXNkYXksIGFic2w6
OkdldFdlZWtkYXkoY2kuY3MpKTsKIAogICAvLyBKdXN0IGJlZm9yZSB0aGUgZXBvY2guCiAgIHQg
LT0gYWJzbDo6TmFub3NlY29uZHMoMSk7Ci0gIGJkID0gdC5Jbih0eik7Ci0gIEFCU0xfSU5URVJO
QUxfRVhQRUNUX1RJTUUoYmQsIDE5NjksIDEyLCAzMSwgMTgsIDU5LCA1OSwgLTE4MDAwLCBmYWxz
ZSk7Ci0gIEVYUEVDVF9FUShhYnNsOjpOYW5vc2Vjb25kcyg5OTk5OTk5OTkpLCBiZC5zdWJzZWNv
bmQpOwotICBFWFBFQ1RfRVEoMywgYmQud2Vla2RheSk7ICAvLyBXZWRuZXNkYXkKKyAgY2kgPSB0
ei5BdCh0KTsKKyAgRVhQRUNUX0NJVklMX0lORk8oY2ksIDE5NjksIDEyLCAzMSwgMTgsIDU5LCA1
OSwgLTE4MDAwLCBmYWxzZSk7CisgIEVYUEVDVF9FUShhYnNsOjpOYW5vc2Vjb25kcyg5OTk5OTk5
OTkpLCBjaS5zdWJzZWNvbmQpOworICBFWFBFQ1RfRVEoYWJzbDo6V2Vla2RheTo6d2VkbmVzZGF5
LCBhYnNsOjpHZXRXZWVrZGF5KGNpLmNzKSk7CiAKICAgLy8gU29tZSB0aW1lIGxhdGVyLgogICB0
ICs9IGFic2w6OkhvdXJzKDI0KSAqIDI3MzU7CiAgIHQgKz0gYWJzbDo6SG91cnMoMTgpICsgYWJz
bDo6TWludXRlcygzMCkgKyBhYnNsOjpTZWNvbmRzKDE1KSArCiAgICAgICAgYWJzbDo6TmFub3Nl
Y29uZHMoOSk7Ci0gIGJkID0gdC5Jbih0eik7Ci0gIEFCU0xfSU5URVJOQUxfRVhQRUNUX1RJTUUo
YmQsIDE5NzcsIDYsIDI4LCAxNCwgMzAsIDE1LCAtMTQ0MDAsIHRydWUpOwotICBFWFBFQ1RfRVEo
OCwgYmQuc3Vic2Vjb25kIC8gYWJzbDo6TmFub3NlY29uZHMoMSkpOwotICBFWFBFQ1RfRVEoMiwg
YmQud2Vla2RheSk7ICAvLyBUdWVzZGF5CisgIGNpID0gdHouQXQodCk7CisgIEVYUEVDVF9DSVZJ
TF9JTkZPKGNpLCAxOTc3LCA2LCAyOCwgMTQsIDMwLCAxNSwgLTE0NDAwLCB0cnVlKTsKKyAgRVhQ
RUNUX0VRKDgsIGNpLnN1YnNlY29uZCAvIGFic2w6Ok5hbm9zZWNvbmRzKDEpKTsKKyAgRVhQRUNU
X0VRKGFic2w6OldlZWtkYXk6OnR1ZXNkYXksIGFic2w6OkdldFdlZWtkYXkoY2kuY3MpKTsKIH0K
IAogVEVTVChUaW1lLCBBZGRpdGl2ZU9wZXJhdG9ycykgewpAQCAtNTUwLDY3ICs1NzUsNjMgQEAg
VEVTVChUaW1lLCBUb0Nocm9ub1RpbWUpIHsKICAgICAgICAgICAgIGFic2w6OlRvQ2hyb25vVGlt
ZShhYnNsOjpVbml4RXBvY2goKSAtIHRpY2spKTsKIH0KIAotVEVTVChUaW1lLCBDb252ZXJ0RGF0
ZVRpbWUpIHsKLSAgY29uc3QgYWJzbDo6VGltZVpvbmUgdXRjID0gYWJzbDo6VVRDVGltZVpvbmUo
KTsKLSAgY29uc3QgYWJzbDo6VGltZVpvbmUgZ29vZyA9Ci0gICAgICBhYnNsOjp0aW1lX2ludGVy
bmFsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiKTsKK1RFU1QoVGltZSwgVGlt
ZVpvbmVBdCkgewogICBjb25zdCBhYnNsOjpUaW1lWm9uZSBueWMgPQogICAgICAgYWJzbDo6dGlt
ZV9pbnRlcm5hbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL05ld19Zb3JrIik7CiAgIGNvbnN0IHN0
ZDo6c3RyaW5nIGZtdCA9ICIlYSwgJWUgJWIgJVkgJUg6JU06JVMgJXogKCVaKSI7CiAKLSAgLy8g
QSBzaW1wbGUgY2FzZSBvZiBub3JtYWxpemF0aW9uLgotICBhYnNsOjpUaW1lQ29udmVyc2lvbiBv
Y3QzMiA9IENvbnZlcnREYXRlVGltZSgyMDEzLCAxMCwgMzIsIDgsIDMwLCAwLCBnb29nKTsKLSAg
RVhQRUNUX1RSVUUob2N0MzIubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShhYnNsOjpUaW1lQ29u
dmVyc2lvbjo6VU5JUVVFLCBvY3QzMi5raW5kKTsKLSAgYWJzbDo6VGltZUNvbnZlcnNpb24gbm92
MDEgPSBDb252ZXJ0RGF0ZVRpbWUoMjAxMywgMTEsIDEsIDgsIDMwLCAwLCBnb29nKTsKLSAgRVhQ
RUNUX0ZBTFNFKG5vdjAxLm5vcm1hbGl6ZWQpOwotICBFWFBFQ1RfRVEoYWJzbDo6VGltZUNvbnZl
cnNpb246OlVOSVFVRSwgbm92MDEua2luZCk7Ci0gIEVYUEVDVF9FUShvY3QzMi5wcmUsIG5vdjAx
LnByZSk7Ci0gIEVYUEVDVF9FUSgiRnJpLCAgMSBOb3YgMjAxMyAwODozMDowMCAtMDcwMCAoUERU
KSIsCi0gICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgbm92MDEucHJlLCBnb29nKSk7
CisgIC8vIEEgbm9uLXRyYW5zaXRpb24gd2hlcmUgdGhlIGNpdmlsIHRpbWUgaXMgdW5pcXVlLgor
ICBhYnNsOjpDaXZpbFNlY29uZCBub3YwMSgyMDEzLCAxMSwgMSwgOCwgMzAsIDApOworICBjb25z
dCBhdXRvIG5vdjAxX2NpID0gbnljLkF0KG5vdjAxKTsKKyAgRVhQRUNUX0VRKGFic2w6OlRpbWVa
b25lOjpUaW1lSW5mbzo6VU5JUVVFLCBub3YwMV9jaS5raW5kKTsKKyAgRVhQRUNUX0VRKCJGcmks
ICAxIE5vdiAyMDEzIDA4OjMwOjAwIC0wNDAwIChFRFQpIiwKKyAgICAgICAgICAgIGFic2w6OkZv
cm1hdFRpbWUoZm10LCBub3YwMV9jaS5wcmUsIG55YykpOworICBFWFBFQ1RfRVEobm92MDFfY2ku
cHJlLCBub3YwMV9jaS50cmFucyk7CisgIEVYUEVDVF9FUShub3YwMV9jaS5wcmUsIG5vdjAxX2Np
LnBvc3QpOworICBFWFBFQ1RfRVEobm92MDFfY2kucHJlLCBhYnNsOjpGcm9tQ2l2aWwobm92MDEs
IG55YykpOwogCiAgIC8vIEEgU3ByaW5nIERTVCB0cmFuc2l0aW9uLCB3aGVuIHRoZXJlIGlzIGEg
Z2FwIGluIGNpdmlsIHRpbWUKICAgLy8gYW5kIHdlIHByZWZlciB0aGUgbGF0ZXIgb2YgdGhlIHBv
c3NpYmxlIGludGVycHJldGF0aW9ucyBvZiBhCiAgIC8vIG5vbi1leGlzdGVudCB0aW1lLgotICBh
YnNsOjpUaW1lQ29udmVyc2lvbiBtYXIxMyA9IENvbnZlcnREYXRlVGltZSgyMDExLCAzLCAxMywg
MiwgMTUsIDAsIG55Yyk7Ci0gIEVYUEVDVF9GQUxTRShtYXIxMy5ub3JtYWxpemVkKTsKLSAgRVhQ
RUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpTS0lQUEVELCBtYXIxMy5raW5kKTsKKyAgYWJz
bDo6Q2l2aWxTZWNvbmQgbWFyMTMoMjAxMSwgMywgMTMsIDIsIDE1LCAwKTsKKyAgY29uc3QgYXV0
byBtYXJfY2kgPSBueWMuQXQobWFyMTMpOworICBFWFBFQ1RfRVEoYWJzbDo6VGltZVpvbmU6OlRp
bWVJbmZvOjpTS0lQUEVELCBtYXJfY2kua2luZCk7CiAgIEVYUEVDVF9FUSgiU3VuLCAxMyBNYXIg
MjAxMSAwMzoxNTowMCAtMDQwMCAoRURUKSIsCi0gICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1l
KGZtdCwgbWFyMTMucHJlLCBueWMpKTsKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10
LCBtYXJfY2kucHJlLCBueWMpKTsKICAgRVhQRUNUX0VRKCJTdW4sIDEzIE1hciAyMDExIDAzOjAw
OjAwIC0wNDAwIChFRFQpIiwKLSAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBtYXIx
My50cmFucywgbnljKSk7CisgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgbWFyX2Np
LnRyYW5zLCBueWMpKTsKICAgRVhQRUNUX0VRKCJTdW4sIDEzIE1hciAyMDExIDAxOjE1OjAwIC0w
NTAwIChFU1QpIiwKLSAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBtYXIxMy5wb3N0
LCBueWMpKTsKLSAgRVhQRUNUX0VRKG1hcjEzLnByZSwgYWJzbDo6RnJvbURhdGVUaW1lKDIwMTEs
IDMsIDEzLCAyLCAxNSwgMCwgbnljKSk7CisgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZt
dCwgbWFyX2NpLnBvc3QsIG55YykpOworICBFWFBFQ1RfRVEobWFyX2NpLnRyYW5zLCBhYnNsOjpG
cm9tQ2l2aWwobWFyMTMsIG55YykpOwogCiAgIC8vIEEgRmFsbCBEU1QgdHJhbnNpdGlvbiwgd2hl
biBjaXZpbCB0aW1lcyBhcmUgcmVwZWF0ZWQgYW5kCiAgIC8vIHdlIHByZWZlciB0aGUgZWFybGll
ciBvZiB0aGUgcG9zc2libGUgaW50ZXJwcmV0YXRpb25zIG9mIGFuCiAgIC8vIGFtYmlndW91cyB0
aW1lLgotICBhYnNsOjpUaW1lQ29udmVyc2lvbiBub3YwNiA9IENvbnZlcnREYXRlVGltZSgyMDEx
LCAxMSwgNiwgMSwgMTUsIDAsIG55Yyk7Ci0gIEVYUEVDVF9GQUxTRShub3YwNi5ub3JtYWxpemVk
KTsKLSAgRVhQRUNUX0VRKGFic2w6OlRpbWVDb252ZXJzaW9uOjpSRVBFQVRFRCwgbm92MDYua2lu
ZCk7CisgIGFic2w6OkNpdmlsU2Vjb25kIG5vdjA2KDIwMTEsIDExLCA2LCAxLCAxNSwgMCk7Cisg
IGNvbnN0IGF1dG8gbm92MDZfY2kgPSBueWMuQXQobm92MDYpOworICBFWFBFQ1RfRVEoYWJzbDo6
VGltZVpvbmU6OlRpbWVJbmZvOjpSRVBFQVRFRCwgbm92MDZfY2kua2luZCk7CiAgIEVYUEVDVF9F
USgiU3VuLCAgNiBOb3YgMjAxMSAwMToxNTowMCAtMDQwMCAoRURUKSIsCi0gICAgICAgICAgICBh
YnNsOjpGb3JtYXRUaW1lKGZtdCwgbm92MDYucHJlLCBueWMpKTsKKyAgICAgICAgICAgIGFic2w6
OkZvcm1hdFRpbWUoZm10LCBub3YwNl9jaS5wcmUsIG55YykpOwogICBFWFBFQ1RfRVEoIlN1biwg
IDYgTm92IDIwMTEgMDE6MDA6MDAgLTA1MDAgKEVTVCkiLAotICAgICAgICAgICAgYWJzbDo6Rm9y
bWF0VGltZShmbXQsIG5vdjA2LnRyYW5zLCBueWMpKTsKKyAgICAgICAgICAgIGFic2w6OkZvcm1h
dFRpbWUoZm10LCBub3YwNl9jaS50cmFucywgbnljKSk7CiAgIEVYUEVDVF9FUSgiU3VuLCAgNiBO
b3YgMjAxMSAwMToxNTowMCAtMDUwMCAoRVNUKSIsCi0gICAgICAgICAgICBhYnNsOjpGb3JtYXRU
aW1lKGZtdCwgbm92MDYucG9zdCwgbnljKSk7Ci0gIEVYUEVDVF9FUShub3YwNi5wcmUsIGFic2w6
OkZyb21EYXRlVGltZSgyMDExLCAxMSwgNiwgMSwgMTUsIDAsIG55YykpOworICAgICAgICAgICAg
YWJzbDo6Rm9ybWF0VGltZShmbXQsIG5vdjA2X2NpLnBvc3QsIG55YykpOworICBFWFBFQ1RfRVEo
bm92MDZfY2kucHJlLCBhYnNsOjpGcm9tQ2l2aWwobm92MDYsIG55YykpOwogCiAgIC8vIENoZWNr
IHRoYXQgKHRpbWVfdCkgLTEgaXMgaGFuZGxlZCBjb3JyZWN0bHkuCi0gIGFic2w6OlRpbWVDb252
ZXJzaW9uIG1pbnVzMSA9IENvbnZlcnREYXRlVGltZSgxOTY5LCAxMiwgMzEsIDE4LCA1OSwgNTks
IG55Yyk7Ci0gIEVYUEVDVF9GQUxTRShtaW51czEubm9ybWFsaXplZCk7Ci0gIEVYUEVDVF9FUShh
YnNsOjpUaW1lQ29udmVyc2lvbjo6VU5JUVVFLCBtaW51czEua2luZCk7Ci0gIEVYUEVDVF9FUSgt
MSwgYWJzbDo6VG9UaW1lVChtaW51czEucHJlKSk7CisgIGFic2w6OkNpdmlsU2Vjb25kIG1pbnVz
MSgxOTY5LCAxMiwgMzEsIDE4LCA1OSwgNTkpOworICBjb25zdCBhdXRvIG1pbnVzMV9jbCA9IG55
Yy5BdChtaW51czEpOworICBFWFBFQ1RfRVEoYWJzbDo6VGltZVpvbmU6OlRpbWVJbmZvOjpVTklR
VUUsIG1pbnVzMV9jbC5raW5kKTsKKyAgRVhQRUNUX0VRKC0xLCBhYnNsOjpUb1RpbWVUKG1pbnVz
MV9jbC5wcmUpKTsKICAgRVhQRUNUX0VRKCJXZWQsIDMxIERlYyAxOTY5IDE4OjU5OjU5IC0wNTAw
IChFU1QpIiwKLSAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBtaW51czEucHJlLCBu
eWMpKTsKKyAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBtaW51czFfY2wucHJlLCBu
eWMpKTsKICAgRVhQRUNUX0VRKCJXZWQsIDMxIERlYyAxOTY5IDIzOjU5OjU5ICswMDAwIChVVEMp
IiwKLSAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBtaW51czEucHJlLCB1dGMpKTsK
KyAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoZm10LCBtaW51czFfY2wucHJlLCBhYnNsOjpV
VENUaW1lWm9uZSgpKSk7CiB9CiAKLS8vIEZyb21EYXRlVGltZSh5ZWFyLCBtb24sIGRheSwgaG91
ciwgbWluLCBzZWMsIFVUQ1RpbWVab25lKCkpIGhhcwotLy8gYSBzcGVjaWFsaXplZCBmYXN0cGF0
aCBpbXBsZW1lbnRhdGlvbiB3aGljaCB3ZSBleGVyY2lzZSBoZXJlLgotVEVTVChUaW1lLCBGcm9t
RGF0ZVRpbWVVVEMpIHsKKy8vIEZyb21DaXZpbChDaXZpbFNlY29uZCh5ZWFyLCBtb24sIGRheSwg
aG91ciwgbWluLCBzZWMpLCBVVENUaW1lWm9uZSgpKQorLy8gaGFzIGEgc3BlY2lhbGl6ZWQgZmFz
dHBhdGggaW1wbGVtZW50YXRpb24sIHdoaWNoIHdlIGV4ZXJjaXNlIGhlcmUuCitURVNUKFRpbWUs
IEZyb21DaXZpbFVUQykgewogICBjb25zdCBhYnNsOjpUaW1lWm9uZSB1dGMgPSBhYnNsOjpVVENU
aW1lWm9uZSgpOwogICBjb25zdCBzdGQ6OnN0cmluZyBmbXQgPSAiJWEsICVlICViICVZICVIOiVN
OiVTICV6ICglWikiOwogICBjb25zdCBpbnQga01heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWF4KCk7CkBAIC02MTgsNjUgKzYzOSwzNiBAQCBURVNUKFRpbWUsIEZyb21EYXRlVGltZVVU
QykgewogICBhYnNsOjpUaW1lIHQ7CiAKICAgLy8gMjkyMDkxOTQwODgxIGlzIHRoZSBsYXN0IHBv
c2l0aXZlIHllYXIgdG8gdXNlIHRoZSBmYXN0cGF0aC4KLSAgdCA9IGFic2w6OkZyb21EYXRlVGlt
ZSgyOTIwOTE5NDA4ODEsIGtNYXgsIGtNYXgsIGtNYXgsIGtNYXgsIGtNYXgsIHV0Yyk7CisgIHQg
PSBhYnNsOjpGcm9tQ2l2aWwoCisgICAgICBhYnNsOjpDaXZpbFNlY29uZCgyOTIwOTE5NDA4ODEs
IGtNYXgsIGtNYXgsIGtNYXgsIGtNYXgsIGtNYXgpLCB1dGMpOwogICBFWFBFQ1RfRVEoIkZyaSwg
MjUgTm92IDI5MjI3NzAyNjU5NiAxMjoyMTowNyArMDAwMCAoVVRDKSIsCiAgICAgICAgICAgICBh
YnNsOjpGb3JtYXRUaW1lKGZtdCwgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUo
MjkyMDkxOTQwODgyLCBrTWF4LCBrTWF4LCBrTWF4LCBrTWF4LCBrTWF4LCB1dGMpOwotICBFWFBF
Q1RfRVEoImluZmluaXRlLWZ1dHVyZSIsIGFic2w6OkZvcm1hdFRpbWUoZm10LCB0LCB1dGMpKTsg
IC8vIG5vIG92ZXJmbG93Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoCi0gICAgICBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwga01heCwga01heCwga01heCwga01heCwga01h
eCwgdXRjKTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbCgKKyAgICAgIGFic2w6OkNpdmlsU2Vjb25k
KDI5MjA5MTk0MDg4Miwga01heCwga01heCwga01heCwga01heCwga01heCksIHV0Yyk7CiAgIEVY
UEVDVF9FUSgiaW5maW5pdGUtZnV0dXJlIiwgYWJzbDo6Rm9ybWF0VGltZShmbXQsIHQsIHV0Yykp
OyAgLy8gbm8gb3ZlcmZsb3cKIAogICAvLyAtMjkyMDkxOTM2OTQwIGlzIHRoZSBsYXN0IG5lZ2F0
aXZlIHllYXIgdG8gdXNlIHRoZSBmYXN0cGF0aC4KLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgt
MjkyMDkxOTM2OTQwLCBrTWluLCBrTWluLCBrTWluLCBrTWluLCBrTWluLCB1dGMpOworICB0ID0g
YWJzbDo6RnJvbUNpdmlsKAorICAgICAgYWJzbDo6Q2l2aWxTZWNvbmQoLTI5MjA5MTkzNjk0MCwg
a01pbiwga01pbiwga01pbiwga01pbiwga01pbiksIHV0Yyk7CiAgIEVYUEVDVF9FUSgiRnJpLCAg
MSBOb3YgLTI5MjI3NzAyMjY1NyAxMDozNzo1MiArMDAwMCAoVVRDKSIsCiAgICAgICAgICAgICBh
YnNsOjpGb3JtYXRUaW1lKGZtdCwgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUo
LTI5MjA5MTkzNjk0MSwga01pbiwga01pbiwga01pbiwga01pbiwga01pbiwgdXRjKTsKKyAgdCA9
IGFic2w6OkZyb21DaXZpbCgKKyAgICAgIGFic2w6OkNpdmlsU2Vjb25kKC0yOTIwOTE5MzY5NDEs
IGtNaW4sIGtNaW4sIGtNaW4sIGtNaW4sIGtNaW4pLCB1dGMpOwogICBFWFBFQ1RfRVEoImluZmlu
aXRlLXBhc3QiLCBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgdCwgdXRjKSk7ICAvLyBubyB1bmRlcmZs
b3cKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgKLSAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1pbigpLCBrTWluLCBrTWluLCBrTWluLCBrTWluLCBrTWluLCB1dGMpOwotICBF
WFBFQ1RfRVEoImluZmluaXRlLXBhc3QiLCBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgdCwgdXRjKSk7
ICAvLyBubyBvdmVyZmxvdwogCiAgIC8vIENoZWNrIHRoYXQgd2UncmUgY291bnRpbmcgbGVhcCB5
ZWFycyBjb3JyZWN0bHkuCi0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMTkwMCwgMiwgMjgsIDIz
LCA1OSwgNTksIHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQo
MTkwMCwgMiwgMjgsIDIzLCA1OSwgNTkpLCB1dGMpOwogICBFWFBFQ1RfRVEoIldlZCwgMjggRmVi
IDE5MDAgMjM6NTk6NTkgKzAwMDAgKFVUQykiLAogICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGlt
ZShmbXQsIHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDE5MDAsIDMsIDEsIDAs
IDAsIDAsIHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMTkw
MCwgMywgMSwgMCwgMCwgMCksIHV0Yyk7CiAgIEVYUEVDVF9FUSgiVGh1LCAgMSBNYXIgMTkwMCAw
MDowMDowMCArMDAwMCAoVVRDKSIsCiAgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwg
dCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAwMCwgMiwgMjksIDIzLCA1OSwg
NTksIHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAwMCwg
MiwgMjksIDIzLCA1OSwgNTkpLCB1dGMpOwogICBFWFBFQ1RfRVEoIlR1ZSwgMjkgRmViIDIwMDAg
MjM6NTk6NTkgKzAwMDAgKFVUQykiLAogICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZShmbXQs
IHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMDAsIDMsIDEsIDAsIDAsIDAs
IHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAwMCwgMywg
MSwgMCwgMCwgMCksIHV0Yyk7CiAgIEVYUEVDVF9FUSgiV2VkLCAgMSBNYXIgMjAwMCAwMDowMDow
MCArMDAwMCAoVVRDKSIsCiAgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGZtdCwgdCwgdXRj
KSk7Ci0KLSAgLy8gQ2hlY2sgbm9ybWFsaXphdGlvbi4KLSAgY29uc3Qgc3RkOjpzdHJpbmcgeW1k
aG1zID0gIiVZLSVtLSVkICVIOiVNOiVTIjsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1
LCAxLCAxLCAwLCAwLCA2MCwgdXRjKTsKLSAgRVhQRUNUX0VRKCIyMDE1LTAxLTAxIDAwOjAxOjAw
IiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURh
dGVUaW1lKDIwMTUsIDEsIDEsIDAsIDYwLCAwLCB1dGMpOwotICBFWFBFQ1RfRVEoIjIwMTUtMDEt
MDEgMDE6MDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7Ci0gIHQgPSBh
YnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMSwgMSwgMjQsIDAsIDAsIHV0Yyk7Ci0gIEVYUEVDVF9F
USgiMjAxNS0wMS0wMiAwMDowMDowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMp
KTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAxLCAzMiwgMCwgMCwgMCwgdXRjKTsK
LSAgRVhQRUNUX0VRKCIyMDE1LTAyLTAxIDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRo
bXMsIHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEzLCAxLCAwLCAw
LCAwLCB1dGMpOwotICBFWFBFQ1RfRVEoIjIwMTYtMDEtMDEgMDA6MDA6MDAiLCBhYnNsOjpGb3Jt
YXRUaW1lKHltZGhtcywgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwg
MTMsIDMyLCA2MCwgNjAsIDYwLCB1dGMpOwotICBFWFBFQ1RfRVEoIjIwMTYtMDItMDMgMTM6MDE6
MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9t
RGF0ZVRpbWUoMjAxNSwgMSwgMSwgMCwgMCwgLTEsIHV0Yyk7Ci0gIEVYUEVDVF9FUSgiMjAxNC0x
Mi0zMSAyMzo1OTo1OSIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKLSAgdCA9
IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAxLCAxLCAwLCAtMSwgMCwgdXRjKTsKLSAgRVhQRUNU
X0VRKCIyMDE0LTEyLTMxIDIzOjU5OjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0
YykpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEsIDEsIC0xLCAwLCAwLCB1dGMp
OwotICBFWFBFQ1RfRVEoIjIwMTQtMTItMzEgMjM6MDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHlt
ZGhtcywgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMSwgLTEsIDAs
IDAsIDAsIHV0Yyk7Ci0gIEVYUEVDVF9FUSgiMjAxNC0xMi0zMCAwMDowMDowMCIsIGFic2w6OkZv
cm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1
LCAtMSwgMSwgMCwgMCwgMCwgdXRjKTsKLSAgRVhQRUNUX0VRKCIyMDE0LTExLTAxIDAwOjAwOjAw
IiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURh
dGVUaW1lKDIwMTUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgdXRjKTsKLSAgRVhQRUNUX0VRKCIyMDE0
LTEwLTI5IDIyOjU4OjU5IiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOwogfQog
CiBURVNUKFRpbWUsIFRvVE0pIHsKQEAgLTY4NCw4ICs2NzYsMTAgQEAgVEVTVChUaW1lLCBUb1RN
KSB7CiAKICAgLy8gQ29tcGFyZXMgdGhlIHJlc3VsdHMgb2YgVG9UTSgpIHRvIGdtdGltZV9yKCkg
Zm9yIGxvdHMgb2YgdGltZXMgb3ZlciB0aGUKICAgLy8gY291cnNlIG9mIGEgZmV3IGRheXMuCi0g
IGNvbnN0IGFic2w6OlRpbWUgc3RhcnQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNCwgMSwgMiwg
MywgNCwgNSwgdXRjKTsKLSAgY29uc3QgYWJzbDo6VGltZSBlbmQgPSBhYnNsOjpGcm9tRGF0ZVRp
bWUoMjAxNCwgMSwgNSwgMywgNCwgNSwgdXRjKTsKKyAgY29uc3QgYWJzbDo6VGltZSBzdGFydCA9
CisgICAgICBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgMSwgMiwgMywg
NCwgNSksIHV0Yyk7CisgIGNvbnN0IGFic2w6OlRpbWUgZW5kID0KKyAgICAgIGFic2w6OkZyb21D
aXZpbChhYnNsOjpDaXZpbFNlY29uZCgyMDE0LCAxLCA1LCAzLCA0LCA1KSwgdXRjKTsKICAgZm9y
IChhYnNsOjpUaW1lIHQgPSBzdGFydDsgdCA8IGVuZDsgdCArPSBhYnNsOjpTZWNvbmRzKDMwKSkg
ewogICAgIGNvbnN0IHN0cnVjdCB0bSB0bV9idCA9IFRvVE0odCwgdXRjKTsKICAgICBjb25zdCB0
aW1lX3QgdHQgPSBhYnNsOjpUb1RpbWVUKHQpOwpAQCAtNzExLDEyICs3MDUsMTIgQEAgVEVTVChU
aW1lLCBUb1RNKSB7CiAgIC8vIENoZWNrcyB0aGF0IHRoZSB0bV9pc2RzdCBmaWVsZCBpcyBjb3Jy
ZWN0IHdoZW4gaW4gc3RhbmRhcmQgdGltZS4KICAgY29uc3QgYWJzbDo6VGltZVpvbmUgbnljID0K
ICAgICAgIGFic2w6OnRpbWVfaW50ZXJuYWw6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9OZXdfWW9y
ayIpOwotICBhYnNsOjpUaW1lIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNCwgMywgMSwgMCwg
MCwgMCwgbnljKTsKKyAgYWJzbDo6VGltZSB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmls
U2Vjb25kKDIwMTQsIDMsIDEsIDAsIDAsIDApLCBueWMpOwogICBzdHJ1Y3QgdG0gdG0gPSBUb1RN
KHQsIG55Yyk7CiAgIEVYUEVDVF9GQUxTRSh0bS50bV9pc2RzdCk7CiAKICAgLy8gQ2hlY2tzIHRo
YXQgdGhlIHRtX2lzZHN0IGZpZWxkIGlzIGNvcnJlY3Qgd2hlbiBpbiBkYXlsaWdodCB0aW1lLgot
ICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTQsIDQsIDEsIDAsIDAsIDAsIG55Yyk7CisgIHQg
PSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxNCwgNCwgMSwgMCwgMCwgMCks
IG55Yyk7CiAgIHRtID0gVG9UTSh0LCBueWMpOwogICBFWFBFQ1RfVFJVRSh0bS50bV9pc2RzdCk7
CiAKQEAgLTgwOCw4ICs4MDIsOCBAQCBURVNUKFRpbWUsIFRNUm91bmRUcmlwKSB7CiAgICAgICBh
YnNsOjp0aW1lX2ludGVybmFsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTmV3X1lvcmsiKTsKIAog
ICAvLyBUZXN0IHJvdW5kLXRyaXBwaW5nIGFjcm9zcyBhIHNraXBwZWQgdHJhbnNpdGlvbgotICBh
YnNsOjpUaW1lIHN0YXJ0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTQsIDMsIDksIDAsIDAsIDAs
IG55Yyk7Ci0gIGFic2w6OlRpbWUgZW5kID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTQsIDMsIDks
IDQsIDAsIDAsIG55Yyk7CisgIGFic2w6OlRpbWUgc3RhcnQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJz
bDo6Q2l2aWxIb3VyKDIwMTQsIDMsIDksIDApLCBueWMpOworICBhYnNsOjpUaW1lIGVuZCA9IGFi
c2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbEhvdXIoMjAxNCwgMywgOSwgNCksIG55Yyk7CiAgIGZv
ciAoYWJzbDo6VGltZSB0ID0gc3RhcnQ7IHQgPCBlbmQ7IHQgKz0gYWJzbDo6TWludXRlcygxKSkg
ewogICAgIHN0cnVjdCB0bSB0bSA9IFRvVE0odCwgbnljKTsKICAgICBhYnNsOjpUaW1lIHJ0ID0g
RnJvbVRNKHRtLCBueWMpOwpAQCAtODE3LDggKzgxMSw4IEBAIFRFU1QoVGltZSwgVE1Sb3VuZFRy
aXApIHsKICAgfQogCiAgIC8vIFRlc3Qgcm91bmQtdHJpcHBpbmcgYWNyb3NzIGFuIGFtYmlndW91
cyB0cmFuc2l0aW9uCi0gIHN0YXJ0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTQsIDExLCAyLCAw
LCAwLCAwLCBueWMpOwotICBlbmQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNCwgMTEsIDIsIDQs
IDAsIDAsIG55Yyk7CisgIHN0YXJ0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsSG91cigy
MDE0LCAxMSwgMiwgMCksIG55Yyk7CisgIGVuZCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZp
bEhvdXIoMjAxNCwgMTEsIDIsIDQpLCBueWMpOwogICBmb3IgKGFic2w6OlRpbWUgdCA9IHN0YXJ0
OyB0IDwgZW5kOyB0ICs9IGFic2w6Ok1pbnV0ZXMoMSkpIHsKICAgICBzdHJ1Y3QgdG0gdG0gPSBU
b1RNKHQsIG55Yyk7CiAgICAgYWJzbDo6VGltZSBydCA9IEZyb21UTSh0bSwgbnljKTsKQEAgLTgy
Niw4ICs4MjAsOCBAQCBURVNUKFRpbWUsIFRNUm91bmRUcmlwKSB7CiAgIH0KIAogICAvLyBUZXN0
IHJvdW5kLXRyaXBwaW5nIG9mIHVuaXF1ZSBpbnN0YW50cyBjcm9zc2luZyBhIGRheSBib3VuZGFy
eQotICBzdGFydCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE0LCA2LCAyNywgMjIsIDAsIDAsIG55
Yyk7Ci0gIGVuZCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE0LCA2LCAyOCwgNCwgMCwgMCwgbnlj
KTsKKyAgc3RhcnQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxIb3VyKDIwMTQsIDYsIDI3
LCAyMiksIG55Yyk7CisgIGVuZCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbEhvdXIoMjAx
NCwgNiwgMjgsIDQpLCBueWMpOwogICBmb3IgKGFic2w6OlRpbWUgdCA9IHN0YXJ0OyB0IDwgZW5k
OyB0ICs9IGFic2w6Ok1pbnV0ZXMoMSkpIHsKICAgICBzdHJ1Y3QgdG0gdG0gPSBUb1RNKHQsIG55
Yyk7CiAgICAgYWJzbDo6VGltZSBydCA9IEZyb21UTSh0bSwgbnljKTsKQEAgLTk4MCwyNyArOTc0
LDI3IEBAIFRFU1QoVGltZSwgQ29udmVyc2lvblNhdHVyYXRpb24pIHsKICAgRVhQRUNUX0VRKG1p
bl90aW1lc3BlY19zZWMsIHRzLnR2X3NlYyk7CiAgIEVYUEVDVF9FUSgwLCB0cy50dl9uc2VjKTsK
IAotICAvLyBDaGVja3MgaG93IFRpbWU6OkluKCkgc2F0dXJhdGVzIG9uIGluZmluaXRpZXMuCi0g
IGFic2w6OlRpbWU6OkJyZWFrZG93biBiZCA9IGFic2w6OkluZmluaXRlRnV0dXJlKCkuSW4odXRj
KTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWF4KCksIDEyLCAzMSwgMjMsCisgIC8vIENoZWNrcyBob3cgVGltZVpvbmU6OkF0
KCkgc2F0dXJhdGVzIG9uIGluZmluaXRpZXMuCisgIGF1dG8gY2kgPSB1dGMuQXQoYWJzbDo6SW5m
aW5pdGVGdXR1cmUoKSk7CisgIEVYUEVDVF9DSVZJTF9JTkZPKGNpLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDY0X3Q+OjptYXgoKSwgMTIsIDMxLCAyMywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1OSwgNTksIDAsIGZhbHNlKTsKLSAgRVhQRUNUX0VRKGFic2w6OkluZmluaXRlRHVyYXRp
b24oKSwgYmQuc3Vic2Vjb25kKTsKLSAgRVhQRUNUX0VRKDQsIGJkLndlZWtkYXkpOyAgLy8gVGh1
cnNkYXkKLSAgRVhQRUNUX0VRKDM2NSwgYmQueWVhcmRheSk7Ci0gIEVYUEVDVF9TVFJFUSgiLTAw
IiwgYmQuem9uZV9hYmJyKTsgIC8vIGFydGlmYWN0IG9mIGFic2w6OlRpbWU6OkluKCkKLSAgYmQg
PSBhYnNsOjpJbmZpbml0ZVBhc3QoKS5Jbih1dGMpOwotICBBQlNMX0lOVEVSTkFMX0VYUEVDVF9U
SU1FKGJkLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSwgMSwgMSwgMCwgMCwK
KyAgRVhQRUNUX0VRKGFic2w6OkluZmluaXRlRHVyYXRpb24oKSwgY2kuc3Vic2Vjb25kKTsKKyAg
RVhQRUNUX0VRKGFic2w6OldlZWtkYXk6OnRodXJzZGF5LCBhYnNsOjpHZXRXZWVrZGF5KGNpLmNz
KSk7CisgIEVYUEVDVF9FUSgzNjUsIGFic2w6OkdldFllYXJEYXkoY2kuY3MpKTsKKyAgRVhQRUNU
X1NUUkVRKCItMDAiLCBjaS56b25lX2FiYnIpOyAgLy8gYXJ0aWZhY3Qgb2YgVGltZVpvbmU6OkF0
KCkKKyAgY2kgPSB1dGMuQXQoYWJzbDo6SW5maW5pdGVQYXN0KCkpOworICBFWFBFQ1RfQ0lWSUxf
SU5GTyhjaSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIDEsIDEsIDAsIDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgZmFsc2UpOwotICBFWFBFQ1RfRVEo
LWFic2w6OkluZmluaXRlRHVyYXRpb24oKSwgYmQuc3Vic2Vjb25kKTsKLSAgRVhQRUNUX0VRKDcs
IGJkLndlZWtkYXkpOyAgLy8gU3VuZGF5Ci0gIEVYUEVDVF9FUSgxLCBiZC55ZWFyZGF5KTsKLSAg
RVhQRUNUX1NUUkVRKCItMDAiLCBiZC56b25lX2FiYnIpOyAgLy8gYXJ0aWZhY3Qgb2YgYWJzbDo6
VGltZTo6SW4oKQorICBFWFBFQ1RfRVEoLWFic2w6OkluZmluaXRlRHVyYXRpb24oKSwgY2kuc3Vi
c2Vjb25kKTsKKyAgRVhQRUNUX0VRKGFic2w6OldlZWtkYXk6OnN1bmRheSwgYWJzbDo6R2V0V2Vl
a2RheShjaS5jcykpOworICBFWFBFQ1RfRVEoMSwgYWJzbDo6R2V0WWVhckRheShjaS5jcykpOwor
ICBFWFBFQ1RfU1RSRVEoIi0wMCIsIGNpLnpvbmVfYWJicik7ICAvLyBhcnRpZmFjdCBvZiBUaW1l
Wm9uZTo6QXQoKQogCiAgIC8vIEFwcHJvYWNoIHRoZSBtYXhpbWFsIFRpbWUgdmFsdWUgZnJvbSBi
ZWxvdy4KLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyOTIyNzcwMjY1OTYsIDEyLCA0LCAxNSwg
MzAsIDYsIHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjky
Mjc3MDI2NTk2LCAxMiwgNCwgMTUsIDMwLCA2KSwgdXRjKTsKICAgRVhQRUNUX0VRKCIyOTIyNzcw
MjY1OTYtMTItMDRUMTU6MzA6MDYrMDA6MDAiLAogICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGlt
ZShhYnNsOjpSRkMzMzM5X2Z1bGwsIHQsIHV0YykpOwotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1l
KDI5MjI3NzAyNjU5NiwgMTIsIDQsIDE1LCAzMCwgNywgdXRjKTsKKyAgdCA9IGFic2w6OkZyb21D
aXZpbChhYnNsOjpDaXZpbFNlY29uZCgyOTIyNzcwMjY1OTYsIDEyLCA0LCAxNSwgMzAsIDcpLCB1
dGMpOwogICBFWFBFQ1RfRVEoIjI5MjI3NzAyNjU5Ni0xMi0wNFQxNTozMDowNyswMDowMCIsCiAg
ICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGFic2w6OlJGQzMzMzlfZnVsbCwgdCwgdXRjKSk7
CiAgIEVYUEVDVF9FUSgKQEAgLTEwMDgsMjEgKzEwMDIsMjEgQEAgVEVTVChUaW1lLCBDb252ZXJz
aW9uU2F0dXJhdGlvbikgewogCiAgIC8vIENoZWNrcyB0aGF0IHdlIGNhbiBhbHNvIGdldCB0aGUg
bWF4aW1hbCBUaW1lIHZhbHVlIGZvciBhIGZhci1lYXN0IHpvbmUuCiAgIGNvbnN0IGFic2w6OlRp
bWVab25lIHBsdXMxNCA9IGFic2w6OkZpeGVkVGltZVpvbmUoMTQgKiA2MCAqIDYwKTsKLSAgdCA9
IGFic2w6OkZyb21EYXRlVGltZSgyOTIyNzcwMjY1OTYsIDEyLCA1LCA1LCAzMCwgNywgcGx1czE0
KTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyOTIyNzcwMjY1OTYs
IDEyLCA1LCA1LCAzMCwgNyksIHBsdXMxNCk7CiAgIEVYUEVDVF9FUSgiMjkyMjc3MDI2NTk2LTEy
LTA1VDA1OjMwOjA3KzE0OjAwIiwKICAgICAgICAgICAgIGFic2w6OkZvcm1hdFRpbWUoYWJzbDo6
UkZDMzMzOV9mdWxsLCB0LCBwbHVzMTQpKTsKICAgRVhQRUNUX0VRKAogICAgICAgYWJzbDo6VW5p
eEVwb2NoKCkgKyBhYnNsOjpTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1h
eCgpKSwgdCk7CiAKICAgLy8gT25lIHNlY29uZCBsYXRlciBzaG91bGQgcHVzaCB1cyB0byBpbmZp
bml0eS4KLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyOTIyNzcwMjY1OTYsIDEyLCA0LCAxNSwg
MzAsIDgsIHV0Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjky
Mjc3MDI2NTk2LCAxMiwgNCwgMTUsIDMwLCA4KSwgdXRjKTsKICAgRVhQRUNUX0VRKCJpbmZpbml0
ZS1mdXR1cmUiLCBhYnNsOjpGb3JtYXRUaW1lKGFic2w6OlJGQzMzMzlfZnVsbCwgdCwgdXRjKSk7
CiAKICAgLy8gQXBwcm9hY2ggdGhlIG1pbmltYWwgVGltZSB2YWx1ZSBmcm9tIGFib3ZlLgotICB0
ID0gYWJzbDo6RnJvbURhdGVUaW1lKC0yOTIyNzcwMjI2NTcsIDEsIDI3LCA4LCAyOSwgNTMsIHV0
Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoLTI5MjI3NzAyMjY1
NywgMSwgMjcsIDgsIDI5LCA1MyksIHV0Yyk7CiAgIEVYUEVDVF9FUSgiLTI5MjI3NzAyMjY1Ny0w
MS0yN1QwODoyOTo1MyswMDowMCIsCiAgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKGFic2w6
OlJGQzMzMzlfZnVsbCwgdCwgdXRjKSk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoLTI5MjI3
NzAyMjY1NywgMSwgMjcsIDgsIDI5LCA1MiwgdXRjKTsKKyAgdCA9IGFic2w6OkZyb21DaXZpbChh
YnNsOjpDaXZpbFNlY29uZCgtMjkyMjc3MDIyNjU3LCAxLCAyNywgOCwgMjksIDUyKSwgdXRjKTsK
ICAgRVhQRUNUX0VRKCItMjkyMjc3MDIyNjU3LTAxLTI3VDA4OjI5OjUyKzAwOjAwIiwKICAgICAg
ICAgICAgIGFic2w6OkZvcm1hdFRpbWUoYWJzbDo6UkZDMzMzOV9mdWxsLCB0LCB1dGMpKTsKICAg
RVhQRUNUX0VRKApAQCAtMTAzMCwxNCArMTAyNCwxNSBAQCBURVNUKFRpbWUsIENvbnZlcnNpb25T
YXR1cmF0aW9uKSB7CiAKICAgLy8gQ2hlY2tzIHRoYXQgd2UgY2FuIGFsc28gZ2V0IHRoZSBtaW5p
bWFsIFRpbWUgdmFsdWUgZm9yIGEgZmFyLXdlc3Qgem9uZS4KICAgY29uc3QgYWJzbDo6VGltZVpv
bmUgbWludXMxMiA9IGFic2w6OkZpeGVkVGltZVpvbmUoLTEyICogNjAgKiA2MCk7Ci0gIHQgPSBh
YnNsOjpGcm9tRGF0ZVRpbWUoLTI5MjI3NzAyMjY1NywgMSwgMjYsIDIwLCAyOSwgNTIsIG1pbnVz
MTIpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKC0yOTIyNzcwMjI2
NTcsIDEsIDI2LCAyMCwgMjksIDUyKSwKKyAgICAgICAgICAgICAgICAgICAgICBtaW51czEyKTsK
ICAgRVhQRUNUX0VRKCItMjkyMjc3MDIyNjU3LTAxLTI2VDIwOjI5OjUyLTEyOjAwIiwKICAgICAg
ICAgICAgIGFic2w6OkZvcm1hdFRpbWUoYWJzbDo6UkZDMzMzOV9mdWxsLCB0LCBtaW51czEyKSk7
CiAgIEVYUEVDVF9FUSgKICAgICAgIGFic2w6OlVuaXhFcG9jaCgpICsgYWJzbDo6U2Vjb25kcyhz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSksIHQpOwogCiAgIC8vIE9uZSBzZWNv
bmQgYmVmb3JlIHNob3VsZCBwdXNoIHVzIHRvIC1pbmZpbml0eS4KLSAgdCA9IGFic2w6OkZyb21E
YXRlVGltZSgtMjkyMjc3MDIyNjU3LCAxLCAyNywgOCwgMjksIDUxLCB1dGMpOworICB0ID0gYWJz
bDo6RnJvbUNpdmlsKGFic2w6OkNpdmlsU2Vjb25kKC0yOTIyNzcwMjI2NTcsIDEsIDI3LCA4LCAy
OSwgNTEpLCB1dGMpOwogICBFWFBFQ1RfRVEoImluZmluaXRlLXBhc3QiLCBhYnNsOjpGb3JtYXRU
aW1lKGFic2w6OlJGQzMzMzlfZnVsbCwgdCwgdXRjKSk7CiB9CiAKQEAgLTEwNTEsMzggKzEwNDYs
MTYwIEBAIFRFU1QoVGltZSwgRXh0ZW5kZWRDb252ZXJzaW9uU2F0dXJhdGlvbikgewogICAgICAg
YWJzbDo6dGltZV9pbnRlcm5hbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL05ld19Zb3JrIik7CiAg
IGNvbnN0IGFic2w6OlRpbWUgbWF4ID0KICAgICAgIGFic2w6OkZyb21Vbml4U2Vjb25kcyhzdGQ6
Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSk7Ci0gIGFic2w6OlRpbWU6OkJyZWFrZG93
biBiZDsKKyAgYWJzbDo6VGltZVpvbmU6OkNpdmlsSW5mbyBjaTsKICAgYWJzbDo6VGltZSB0Owog
CiAgIC8vIFRoZSBtYXhpbWFsIHRpbWUgY29udmVydGVkIGluIGVhY2ggem9uZS4KLSAgYmQgPSBt
YXguSW4oc3lkKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwgMjkyMjc3MDI2NTk2
LCAxMiwgNSwgMiwgMzAsIDcsIDM5NjAwLCB0cnVlKTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGlt
ZSgyOTIyNzcwMjY1OTYsIDEyLCA1LCAyLCAzMCwgNywgc3lkKTsKKyAgY2kgPSBzeWQuQXQobWF4
KTsKKyAgRVhQRUNUX0NJVklMX0lORk8oY2ksIDI5MjI3NzAyNjU5NiwgMTIsIDUsIDIsIDMwLCA3
LCAzOTYwMCwgdHJ1ZSk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQo
MjkyMjc3MDI2NTk2LCAxMiwgNSwgMiwgMzAsIDcpLCBzeWQpOwogICBFWFBFQ1RfRVEobWF4LCB0
KTsKLSAgYmQgPSBtYXguSW4obnljKTsKLSAgQUJTTF9JTlRFUk5BTF9FWFBFQ1RfVElNRShiZCwg
MjkyMjc3MDI2NTk2LCAxMiwgNCwgMTAsIDMwLCA3LCAtMTgwMDAsIGZhbHNlKTsKLSAgdCA9IGFi
c2w6OkZyb21EYXRlVGltZSgyOTIyNzcwMjY1OTYsIDEyLCA0LCAxMCwgMzAsIDcsIG55Yyk7Cisg
IGNpID0gbnljLkF0KG1heCk7CisgIEVYUEVDVF9DSVZJTF9JTkZPKGNpLCAyOTIyNzcwMjY1OTYs
IDEyLCA0LCAxMCwgMzAsIDcsIC0xODAwMCwgZmFsc2UpOworICB0ID0gYWJzbDo6RnJvbUNpdmls
KGFic2w6OkNpdmlsU2Vjb25kKDI5MjI3NzAyNjU5NiwgMTIsIDQsIDEwLCAzMCwgNyksIG55Yyk7
CiAgIEVYUEVDVF9FUShtYXgsIHQpOwogCiAgIC8vIE9uZSBzZWNvbmQgbGF0ZXIgc2hvdWxkIHB1
c2ggdXMgdG8gaW5maW5pdHkuCi0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjkyMjc3MDI2NTk2
LCAxMiwgNSwgMiwgMzAsIDgsIHN5ZCk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2
aWxTZWNvbmQoMjkyMjc3MDI2NTk2LCAxMiwgNSwgMiwgMzAsIDgpLCBzeWQpOwogICBFWFBFQ1Rf
RVEoYWJzbDo6SW5maW5pdGVGdXR1cmUoKSwgdCk7Ci0gIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUo
MjkyMjc3MDI2NTk2LCAxMiwgNCwgMTAsIDMwLCA4LCBueWMpOworICB0ID0gYWJzbDo6RnJvbUNp
dmlsKGFic2w6OkNpdmlsU2Vjb25kKDI5MjI3NzAyNjU5NiwgMTIsIDQsIDEwLCAzMCwgOCksIG55
Yyk7CiAgIEVYUEVDVF9FUShhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpLCB0KTsKIAogICAvLyBBbmQg
d2Ugc2hvdWxkIHN0aWNrIHRoZXJlLgotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDI5MjI3NzAy
NjU5NiwgMTIsIDUsIDIsIDMwLCA5LCBzeWQpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6
OkNpdmlsU2Vjb25kKDI5MjI3NzAyNjU5NiwgMTIsIDUsIDIsIDMwLCA5KSwgc3lkKTsKICAgRVhQ
RUNUX0VRKGFic2w6OkluZmluaXRlRnV0dXJlKCksIHQpOwotICB0ID0gYWJzbDo6RnJvbURhdGVU
aW1lKDI5MjI3NzAyNjU5NiwgMTIsIDQsIDEwLCAzMCwgOSwgbnljKTsKKyAgdCA9IGFic2w6OkZy
b21DaXZpbChhYnNsOjpDaXZpbFNlY29uZCgyOTIyNzcwMjY1OTYsIDEyLCA0LCAxMCwgMzAsIDkp
LCBueWMpOwogICBFWFBFQ1RfRVEoYWJzbDo6SW5maW5pdGVGdXR1cmUoKSwgdCk7CiAKICAgLy8g
QWxsIHRoZSB3YXkgdXAgdG8gYSBzYXR1cmF0ZWQgZGF0ZS90aW1lLCB3aXRob3V0IG92ZXJmbG93
LgotICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKAotICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWF4KCksIDEyLCAzMSwgMjMsIDU5LCA1OSwgc3lkKTsKKyAgdCA9IGFic2w6OkZy
b21DaXZpbChhYnNsOjpDaXZpbFNlY29uZDo6bWF4KCksIHN5ZCk7CiAgIEVYUEVDVF9FUShhYnNs
OjpJbmZpbml0ZUZ1dHVyZSgpLCB0KTsKLSAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgKLSAgICAg
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxMiwgMzEsIDIzLCA1OSwgNTks
IG55Yyk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQ6Om1heCgpLCBu
eWMpOwogICBFWFBFQ1RfRVEoYWJzbDo6SW5maW5pdGVGdXR1cmUoKSwgdCk7CiB9CiAKK1RFU1Qo
VGltZSwgRnJvbUNpdmlsQWxpZ25tZW50KSB7CisgIGNvbnN0IGFic2w6OlRpbWVab25lIHV0YyA9
IGFic2w6OlVUQ1RpbWVab25lKCk7CisgIGNvbnN0IGFic2w6OkNpdmlsU2Vjb25kIGNzKDIwMTUs
IDIsIDMsIDQsIDUsIDYpOworICBhYnNsOjpUaW1lIHQgPSBhYnNsOjpGcm9tQ2l2aWwoY3MsIHV0
Yyk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMi0wM1QwNDowNTowNiswMDowMCIsIGFic2w6OkZvcm1h
dFRpbWUodCwgdXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6Q2l2aWxNaW51dGUo
Y3MpLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTUtMDItMDNUMDQ6MDU6MDArMDA6MDAiLCBhYnNs
OjpGb3JtYXRUaW1lKHQsIHV0YykpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFic2w6OkNpdmls
SG91cihjcyksIHV0Yyk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMi0wM1QwNDowMDowMCswMDowMCIs
IGFic2w6OkZvcm1hdFRpbWUodCwgdXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tQ2l2aWwoYWJzbDo6
Q2l2aWxEYXkoY3MpLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTUtMDItMDNUMDA6MDA6MDArMDA6
MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHQsIHV0YykpOworICB0ID0gYWJzbDo6RnJvbUNpdmlsKGFi
c2w6OkNpdmlsTW9udGgoY3MpLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTUtMDItMDFUMDA6MDA6
MDArMDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHQsIHV0YykpOworICB0ID0gYWJzbDo6RnJvbUNp
dmlsKGFic2w6OkNpdmlsWWVhcihjcyksIHV0Yyk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMVQw
MDowMDowMCswMDowMCIsIGFic2w6OkZvcm1hdFRpbWUodCwgdXRjKSk7Cit9CisKK1RFU1QoVGlt
ZSwgTGVnYWN5RGF0ZVRpbWUpIHsKKyAgY29uc3QgYWJzbDo6VGltZVpvbmUgdXRjID0gYWJzbDo6
VVRDVGltZVpvbmUoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgeW1kaG1zID0gIiVZLSVtLSVkICVI
OiVNOiVTIjsKKyAgY29uc3QgaW50IGtNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpOworICBjb25zdCBpbnQga01pbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7
CisgIGFic2w6OlRpbWUgdDsKKworICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKHN0ZDo6bnVtZXJp
Y19saW1pdHM8YWJzbDo6Y2l2aWxfeWVhcl90Pjo6bWF4KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAga01heCwga01heCwga01heCwga01heCwga01heCwgdXRjKTsKKyAgRVhQRUNUX0VRKCJp
bmZpbml0ZS1mdXR1cmUiLAorICAgICAgICAgICAgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQs
IHV0YykpOyAgLy8gbm8gb3ZlcmZsb3cKKyAgdCA9IGFic2w6OkZyb21EYXRlVGltZShzdGQ6Om51
bWVyaWNfbGltaXRzPGFic2w6OmNpdmlsX3llYXJfdD46Om1pbigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGtNaW4sIGtNaW4sIGtNaW4sIGtNaW4sIGtNaW4sIHV0Yyk7CisgIEVYUEVDVF9F
USgiaW5maW5pdGUtcGFzdCIsCisgICAgICAgICAgICBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywg
dCwgdXRjKSk7ICAvLyBubyBvdmVyZmxvdworCisgIC8vIENoZWNrIG5vcm1hbGl6YXRpb24uCisg
IEVYUEVDVF9UUlVFKGFic2w6OkNvbnZlcnREYXRlVGltZSgyMDEzLCAxMCwgMzIsIDgsIDMwLCAw
LCB1dGMpLm5vcm1hbGl6ZWQpOworICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEsIDEs
IDAsIDAsIDYwLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTUtMDEtMDEgMDA6MDE6MDAiLCBhYnNs
OjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUo
MjAxNSwgMSwgMSwgMCwgNjAsIDAsIHV0Yyk7CisgIEVYUEVDVF9FUSgiMjAxNS0wMS0wMSAwMTow
MDowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKKyAgdCA9IGFic2w6OkZy
b21EYXRlVGltZSgyMDE1LCAxLCAxLCAyNCwgMCwgMCwgdXRjKTsKKyAgRVhQRUNUX0VRKCIyMDE1
LTAxLTAyIDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOworICB0
ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIDEsIDMyLCAwLCAwLCAwLCB1dGMpOworICBFWFBF
Q1RfRVEoIjIwMTUtMDItMDEgMDA6MDA6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwg
dXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMTMsIDEsIDAsIDAsIDAsIHV0
Yyk7CisgIEVYUEVDVF9FUSgiMjAxNi0wMS0wMSAwMDowMDowMCIsIGFic2w6OkZvcm1hdFRpbWUo
eW1kaG1zLCB0LCB1dGMpKTsKKyAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAxMywgMzIs
IDYwLCA2MCwgNjAsIHV0Yyk7CisgIEVYUEVDVF9FUSgiMjAxNi0wMi0wMyAxMzowMTowMCIsIGFi
c2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0LCB1dGMpKTsKKyAgdCA9IGFic2w6OkZyb21EYXRlVGlt
ZSgyMDE1LCAxLCAxLCAwLCAwLCAtMSwgdXRjKTsKKyAgRVhQRUNUX0VRKCIyMDE0LTEyLTMxIDIz
OjU5OjU5IiwgYWJzbDo6Rm9ybWF0VGltZSh5bWRobXMsIHQsIHV0YykpOworICB0ID0gYWJzbDo6
RnJvbURhdGVUaW1lKDIwMTUsIDEsIDEsIDAsIC0xLCAwLCB1dGMpOworICBFWFBFQ1RfRVEoIjIw
MTQtMTItMzEgMjM6NTk6MDAiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7Cisg
IHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNSwgMSwgMSwgLTEsIDAsIDAsIHV0Yyk7CisgIEVY
UEVDVF9FUSgiMjAxNC0xMi0zMSAyMzowMDowMCIsIGFic2w6OkZvcm1hdFRpbWUoeW1kaG1zLCB0
LCB1dGMpKTsKKyAgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDE1LCAxLCAtMSwgMCwgMCwgMCwg
dXRjKTsKKyAgRVhQRUNUX0VRKCIyMDE0LTEyLTMwIDAwOjAwOjAwIiwgYWJzbDo6Rm9ybWF0VGlt
ZSh5bWRobXMsIHQsIHV0YykpOworICB0ID0gYWJzbDo6RnJvbURhdGVUaW1lKDIwMTUsIC0xLCAx
LCAwLCAwLCAwLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTQtMTEtMDEgMDA6MDA6MDAiLCBhYnNs
OjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7CisgIHQgPSBhYnNsOjpGcm9tRGF0ZVRpbWUo
MjAxNSwgLTEsIC0xLCAtMSwgLTEsIC0xLCB1dGMpOworICBFWFBFQ1RfRVEoIjIwMTQtMTAtMjkg
MjI6NTg6NTkiLCBhYnNsOjpGb3JtYXRUaW1lKHltZGhtcywgdCwgdXRjKSk7Cit9CisKK1RFU1Qo
VGltZSwgTmV4dFRyYW5zaXRpb25VVEMpIHsKKyAgY29uc3QgYXV0byB0eiA9IGFic2w6OlVUQ1Rp
bWVab25lKCk7CisgIGFic2w6OlRpbWVab25lOjpDaXZpbFRyYW5zaXRpb24gdHJhbnM7CisKKyAg
YXV0byB0ID0gYWJzbDo6SW5maW5pdGVQYXN0KCk7CisgIEVYUEVDVF9GQUxTRSh0ei5OZXh0VHJh
bnNpdGlvbih0LCAmdHJhbnMpKTsKKworICB0ID0gYWJzbDo6SW5maW5pdGVGdXR1cmUoKTsKKyAg
RVhQRUNUX0ZBTFNFKHR6Lk5leHRUcmFuc2l0aW9uKHQsICZ0cmFucykpOworfQorCitURVNUKFRp
bWUsIFByZXZUcmFuc2l0aW9uVVRDKSB7CisgIGNvbnN0IGF1dG8gdHogPSBhYnNsOjpVVENUaW1l
Wm9uZSgpOworICBhYnNsOjpUaW1lWm9uZTo6Q2l2aWxUcmFuc2l0aW9uIHRyYW5zOworCisgIGF1
dG8gdCA9IGFic2w6OkluZmluaXRlRnV0dXJlKCk7CisgIEVYUEVDVF9GQUxTRSh0ei5QcmV2VHJh
bnNpdGlvbih0LCAmdHJhbnMpKTsKKworICB0ID0gYWJzbDo6SW5maW5pdGVQYXN0KCk7CisgIEVY
UEVDVF9GQUxTRSh0ei5QcmV2VHJhbnNpdGlvbih0LCAmdHJhbnMpKTsKK30KKworVEVTVChUaW1l
LCBOZXh0VHJhbnNpdGlvbk5ZQykgeworICBjb25zdCBhdXRvIHR6ID0gYWJzbDo6dGltZV9pbnRl
cm5hbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL05ld19Zb3JrIik7CisgIGFic2w6OlRpbWVab25l
OjpDaXZpbFRyYW5zaXRpb24gdHJhbnM7CisKKyAgYXV0byB0ID0gYWJzbDo6RnJvbUNpdmlsKGFi
c2w6OkNpdmlsU2Vjb25kKDIwMTgsIDYsIDMwLCAwLCAwLCAwKSwgdHopOworICBFWFBFQ1RfVFJV
RSh0ei5OZXh0VHJhbnNpdGlvbih0LCAmdHJhbnMpKTsKKyAgRVhQRUNUX0VRKGFic2w6OkNpdmls
U2Vjb25kKDIwMTgsIDExLCA0LCAyLCAwLCAwKSwgdHJhbnMuZnJvbSk7CisgIEVYUEVDVF9FUShh
YnNsOjpDaXZpbFNlY29uZCgyMDE4LCAxMSwgNCwgMSwgMCwgMCksIHRyYW5zLnRvKTsKKworICB0
ID0gYWJzbDo6SW5maW5pdGVGdXR1cmUoKTsKKyAgRVhQRUNUX0ZBTFNFKHR6Lk5leHRUcmFuc2l0
aW9uKHQsICZ0cmFucykpOworCisgIHQgPSBhYnNsOjpJbmZpbml0ZVBhc3QoKTsKKyAgRVhQRUNU
X1RSVUUodHouTmV4dFRyYW5zaXRpb24odCwgJnRyYW5zKSk7CisgIGlmICh0cmFucy5mcm9tID09
IGFic2w6OkNpdmlsU2Vjb25kKDE5MTgsIDAzLCAzMSwgMiwgMCwgMCkpIHsKKyAgICAvLyBJdCBs
b29rcyBsaWtlIHRoZSB0emRhdGEgaXMgb25seSAzMiBiaXQgKHByb2JhYmx5IG1hY09TKSwKKyAg
ICAvLyB3aGljaCBib3R0b21zIG91dCBhdCAxOTAxLTEyLTEzVDIwOjQ1OjUyKzAwOjAwLgorICAg
IEVYUEVDVF9FUShhYnNsOjpDaXZpbFNlY29uZCgxOTE4LCAzLCAzMSwgMywgMCwgMCksIHRyYW5z
LnRvKTsKKyAgfSBlbHNlIHsKKyAgICBFWFBFQ1RfRVEoYWJzbDo6Q2l2aWxTZWNvbmQoMTg4Mywg
MTEsIDE4LCAxMiwgMywgNTgpLCB0cmFucy5mcm9tKTsKKyAgICBFWFBFQ1RfRVEoYWJzbDo6Q2l2
aWxTZWNvbmQoMTg4MywgMTEsIDE4LCAxMiwgMCwgMCksIHRyYW5zLnRvKTsKKyAgfQorfQorCitU
RVNUKFRpbWUsIFByZXZUcmFuc2l0aW9uTllDKSB7CisgIGNvbnN0IGF1dG8gdHogPSBhYnNsOjp0
aW1lX2ludGVybmFsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTmV3X1lvcmsiKTsKKyAgYWJzbDo6
VGltZVpvbmU6OkNpdmlsVHJhbnNpdGlvbiB0cmFuczsKKworICBhdXRvIHQgPSBhYnNsOjpGcm9t
Q2l2aWwoYWJzbDo6Q2l2aWxTZWNvbmQoMjAxOCwgNiwgMzAsIDAsIDAsIDApLCB0eik7CisgIEVY
UEVDVF9UUlVFKHR6LlByZXZUcmFuc2l0aW9uKHQsICZ0cmFucykpOworICBFWFBFQ1RfRVEoYWJz
bDo6Q2l2aWxTZWNvbmQoMjAxOCwgMywgMTEsIDIsIDAsIDApLCB0cmFucy5mcm9tKTsKKyAgRVhQ
RUNUX0VRKGFic2w6OkNpdmlsU2Vjb25kKDIwMTgsIDMsIDExLCAzLCAwLCAwKSwgdHJhbnMudG8p
OworCisgIHQgPSBhYnNsOjpJbmZpbml0ZVBhc3QoKTsKKyAgRVhQRUNUX0ZBTFNFKHR6LlByZXZU
cmFuc2l0aW9uKHQsICZ0cmFucykpOworCisgIHQgPSBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpOwor
ICBFWFBFQ1RfVFJVRSh0ei5QcmV2VHJhbnNpdGlvbih0LCAmdHJhbnMpKTsKKyAgLy8gV2UgaGF2
ZSBhIHRyYW5zaXRpb24gYnV0IHdlIGRvbid0IGtub3cgd2hpY2ggb25lLgorfQorCiB9ICAvLyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZV96b25lX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL3RpbWVfem9uZV90ZXN0LmNjCmluZGV4IDQzZDkxOTA0MDQ0NWNhYjY2MzU1MGRhMzkx
NmVmMjNmMDk2OWM0NWIuLjhmMWU3NGFjYTU0YmE2ZGU4NjM4ZGQyOTIzZmIxMzQwYTYyNDY1NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZV96b25lX3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS90aW1lX3pvbmVfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9C
VUlMRC5iYXplbAppbmRleCAzMmY2OTBjOTRjMWQzNDdjMTQzNzI4M2I4MDg4ZDJiMTk1ZjUxY2Ji
Li42NmVjYjA0NDBkZTA2YjQ0ZGYyYTZkYjIwZWY3MDdlYTFjZWY1NzNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlcy9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5iYXplbApAQCAt
NSw3ICs1LDcgQEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKyMgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE1LDExICsxNSwxMiBAQAogIwogCiBs
b2FkKAotICAgICIvL2Fic2w6Y29wdHMuYnpsIiwKKyAgICAiLy9hYnNsOmNvcHRzL2NvbmZpZ3Vy
ZV9jb3B0cy5iemwiLAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAotICAgICJBQlNMX1RFU1Rf
Q09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElOS09QVFMiLAogICAgICJBQlNMX0VYQ0VQVElP
TlNfRkxBRyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwKKyAgICAiQUJT
TF9URVNUX0NPUFRTIiwKICkKIAogcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlz
aWJpbGl0eTpwdWJsaWMiXSkKQEAgLTMwLDYgKzMxLDcgQEAgY2NfbGlicmFyeSgKICAgICBuYW1l
ID0gImFueSIsCiAgICAgaGRycyA9IFsiYW55LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVM
VF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBz
ID0gWwogICAgICAgICAiOmJhZF9hbnlfY2FzdCIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25m
aWciLApAQCAtNDMsNiArNDUsNyBAQCBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAiYmFkX2FueV9j
YXN0IiwKICAgICBoZHJzID0gWyJiYWRfYW55X2Nhc3QuaCJdLAogICAgIGNvcHRzID0gQUJTTF9E
RUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6YmFkX2FueV9jYXN0X2ltcGwiLAogICAgICAgICAiLy9hYnNs
L2Jhc2U6Y29uZmlnIiwKQEAgLTU2LDcgKzU5LDcgQEAgY2NfbGlicmFyeSgKICAgICAgICAgImJh
ZF9hbnlfY2FzdC5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUcg
KyBBQlNMX0RFRkFVTFRfQ09QVFMsCi0gICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxB
R19MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRT
ICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIHZpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0
eTpwcml2YXRlIl0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAgLTcx
LDcgKzc0LDcgQEAgY2NfdGVzdCgKICAgICAgICAgImFueV90ZXN0LmNjIiwKICAgICBdLAogICAg
IGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCi0gICAgbGlu
a29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6YW55IiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAgLTg5
LDYgKzkyLDcgQEAgY2NfdGVzdCgKICAgICAgICAgImFueV90ZXN0LmNjIiwKICAgICBdLAogICAg
IGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YW55IiwKICAgICAgICAgIi8vYWJzbC9i
YXNlIiwKQEAgLTEwMyw3ICsxMDcsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiYW55X2V4Y2Vw
dGlvbl9zYWZldHlfdGVzdCIsCiAgICAgc3JjcyA9IFsiYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVz
dC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZM
QUcsCi0gICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBs
aW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJ
TktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YW55IiwKICAgICAgICAgIi8vYWJzbC9i
YXNlOmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZyIsCkBAIC0xMTMsOCArMTE3LDE0IEBAIGNjX3Rl
c3QoCiAKIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJzcGFuIiwKLSAgICBoZHJzID0gWyJzcGFu
LmgiXSwKKyAgICBzcmNzID0gWworICAgICAgICAiaW50ZXJuYWwvc3Bhbi5oIiwKKyAgICBdLAor
ICAgIGhkcnMgPSBbCisgICAgICAgICJzcGFuLmgiLAorICAgIF0sCiAgICAgY29wdHMgPSBBQlNM
X0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAg
ICAgZGVwcyA9IFsKICAgICAgICAgIi8vYWJzbC9hbGdvcml0aG0iLAogICAgICAgICAiLy9hYnNs
L2Jhc2U6Y29yZV9oZWFkZXJzIiwKQEAgLTEyOCw3ICsxMzgsNyBAQCBjY190ZXN0KAogICAgIHNp
emUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbInNwYW5fdGVzdC5jYyJdLAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCi0gICAgbGlua29wdHMgPSBB
QlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBU
SU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6c3BhbiIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLApAQCAtMTQ3
LDYgKzE1Nyw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9IFsi
c3Bhbl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua29w
dHMgPSBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpzcGFu
IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC0xNjIsMTIgKzE3MywxNSBAQCBj
Y190ZXN0KAogCiBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAib3B0aW9uYWwiLAotICAgIHNyY3Mg
PSBbIm9wdGlvbmFsLmNjIl0sCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvb3B0aW9uYWwuaCJdLAog
ICAgIGhkcnMgPSBbIm9wdGlvbmFsLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BU
UywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwog
ICAgICAgICAiOmJhZF9vcHRpb25hbF9hY2Nlc3MiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6YmFz
ZV9pbnRlcm5hbCIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLAorICAgICAgICAiLy9h
YnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAgICAg
ICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAogICAgICAgICAiLy9hYnNsL3V0aWxpdHkiLApA
QCAtMTc5LDcgKzE5Myw3IEBAIGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsiYmFkX29wdGlvbmFs
X2FjY2Vzcy5jYyJdLAogICAgIGhkcnMgPSBbImJhZF9vcHRpb25hbF9hY2Nlc3MuaCJdLAogICAg
IGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCi0gICAg
bGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBsaW5rb3B0cyA9
IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCiAgICAgICAgICIvL2Fic2wvYmFz
ZTpjb25maWciLApAQCAtMTkxLDcgKzIwNSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsi
YmFkX3ZhcmlhbnRfYWNjZXNzLmNjIl0sCiAgICAgaGRycyA9IFsiYmFkX3ZhcmlhbnRfYWNjZXNz
LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHICsgQUJTTF9ERUZBVUxUX0NP
UFRTLAotICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCisgICAg
bGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyArIEFCU0xfREVGQVVMVF9M
SU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2UiLAogICAgICAgICAi
Ly9hYnNsL2Jhc2U6Y29uZmlnIiwKQEAgLTIwNSw3ICsyMTksNyBAQCBjY190ZXN0KAogICAgICAg
ICAib3B0aW9uYWxfdGVzdC5jYyIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAotICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05T
X0ZMQUdfTElOS09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5L
T1BUUyArIEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOm9w
dGlvbmFsIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAgLTIyMiw3ICsyMzYsNyBAQCBjY190
ZXN0KAogICAgICAgICAib3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIiwKICAgICBd
LAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCi0g
ICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTICsgQUJTTF9ERUZBVUxUX0xJTktPUFRT
LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6b3B0aW9uYWwiLAogICAgICAgICAiLy9hYnNsL2Jh
c2U6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKQEAgLTIzNSw2ICsyNDksNyBAQCBjY19saWJy
YXJ5KAogICAgIHNyY3MgPSBbImludGVybmFsL3ZhcmlhbnQuaCJdLAogICAgIGhkcnMgPSBbInZh
cmlhbnQuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFkX3Zh
cmlhbnRfYWNjZXNzIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmJhc2VfaW50ZXJuYWwiLApAQCAt
MjUwLDcgKzI2NSw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9
IFsidmFyaWFudF90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNM
X0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJ
TktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMgKyBB
QlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjp2YXJpYW50IiwK
ICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC0yNjgsNiArMjgzLDcgQEAgY2NfdGVz
dCgKICAgICAgICAgInZhcmlhbnRfYmVuY2htYXJrLmNjIiwKICAgICBdLAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9ERUZBVUxUX0xJTktPUFRTLAog
ICAgIHRhZ3MgPSBbImJlbmNobWFyayJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6dmFyaWFu
dCIsCkBAIC0yODMsMTEgKzI5OSwzNiBAQCBjY190ZXN0KAogICAgICAgICAidmFyaWFudF9leGNl
cHRpb25fc2FmZXR5X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKLSAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9O
U19GTEFHX0xJTktPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElO
S09QVFMgKyBBQlNMX0RFRkFVTFRfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjp2
YXJpYW50IiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCiAgICAgICAgICIvL2Fic2wv
YmFzZTpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmciLAogICAgICAgICAiLy9hYnNsL21lbW9yeSIs
CiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAgICAgXSwK
ICkKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImNvbXBhcmUiLAorICAgIGhkcnMgPSBbImNv
bXBhcmUuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBb
CisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL21l
dGE6dHlwZV90cmFpdHMiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJjb21w
YXJlX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJj
b21wYXJlX3Rlc3QuY2MiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb21wYXJlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwK
KyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAor
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5n
bgppbmRleCBiZmRhZmIzMTdlM2I0YmYxZDNmZWMyNTJjZDBjZDFkMTkzZWMxOTI5Li4zMWNlYWYz
MDg0YjZhNGQyNjhhZTdhMDYxMWYxZDhhYjcxODEzNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
cy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5nbgpAQCAtNCwxMSArNCwxOSBAQAog
CiBpbXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCiAKKyMgVXNhZ2Ugb2YgQWJz
ZWlsIGluIENocm9taXVtIGlzIGd1YXJkZWQgYnkgYW4gZXhwbGljaXQgb3B0LWluIGxpc3QsIGJl
Zm9yZQorIyBhZGRpbmcgcHJvamVjdHMgdG8gdGhpcyBsaXN0IHBsZWFzZSByZWFjaCBvdXQgdG8g
Y3h4QGNocm9taXVtLm9yZyBhbmQgQ0M6CisjIC0gaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hy
b21pdW0vc3JjL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvT1dORVJTCisjCisjIE1vcmUgaW5mb3Jt
YXRpb24gY2FuIGJlIGZvdW5kIGF0OgorIyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVu
dC9kLzFEZ1MxLUEzcnpib1RManBmNG0xc3FrSmdXam5ZX1J1MmRva2sxWDF2QkRVCiBpZiAoYnVp
bGRfd2l0aF9jaHJvbWl1bSkgewogICB2aXNpYmlsaXR5ID0gWworICAgICIvL2xpYmFzc2lzdGFu
dC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS93ZWJydGMvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC8qIiwKICAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9vcGVuc2NyZWVuLyoiLAogICBdCiB9IGVsc2UgewogICB2aXNpYmls
aXR5ID0gWyAiKiIgXQpAQCAtODAsNiArODgsOSBAQCBzb3VyY2Vfc2V0KCJzcGFuIikgewogICBw
dWJsaWMgPSBbCiAgICAgInNwYW4uaCIsCiAgIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50ZXJu
YWwvc3Bhbi5oIiwKKyAgXQogICBkZXBzID0gWwogICAgICIuLi9hbGdvcml0aG0iLAogICAgICIu
Li9iYXNlOmNvcmVfaGVhZGVycyIsCkBAIC05NiwxMyArMTA3LDE0IEBAIHNvdXJjZV9zZXQoIm9w
dGlvbmFsIikgewogICBdCiAgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KICAgc291cmNlcyA9IFsKLSAgICAib3B0aW9u
YWwuY2MiLAorICAgICJpbnRlcm5hbC9vcHRpb25hbC5oIiwKICAgXQogICBwdWJsaWMgPSBbCiAg
ICAgIm9wdGlvbmFsLmgiLAogICBdCiAgIGRlcHMgPSBbCiAgICAgIjpiYWRfb3B0aW9uYWxfYWNj
ZXNzIiwKKyAgICAiLi4vYmFzZTpiYXNlX2ludGVybmFsIiwKICAgICAiLi4vYmFzZTpjb25maWci
LAogICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgIi4uL21lbW9yeSIsCkBAIC0xNzEs
MyArMTgzLDE5IEBAIHNvdXJjZV9zZXQoInZhcmlhbnQiKSB7CiAgICAgIi4uL3V0aWxpdHkiLAog
ICBdCiB9CisKK3NvdXJjZV9zZXQoImNvbXBhcmUiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNf
Y29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmln
IiBdCisgIHB1YmxpYyA9IFsKKyAgICAiY29tcGFyZS5oIiwKKyAgXQorICBkZXBzID0gWworICAg
ICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAorICBd
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
L0NNYWtlTGlzdHMudHh0CmluZGV4IDJmMmUzYTc3ODA4OTMzY2FhY2Y0NjJhM2E4YjgwNTc3M2Fl
NTA2ZWYuLjRjZTY4NWRhNGU2Y2MwNWZiMGQxYmNiYWM1ODBmMWE1ZDAwMmIzYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL0NNYWtlTGlz
dHMudHh0CkBAIC01LDcgKzUsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorIyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKICMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTMsMjE2ICsxMywz
MzYgQEAKICMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICMK
LQotbGlzdChBUFBFTkQgVFlQRVNfUFVCTElDX0hFQURFUlMKLSAgImFueS5oIgotICAiYmFkX2Fu
eV9jYXN0LmgiCi0gICJiYWRfb3B0aW9uYWxfYWNjZXNzLmgiCi0gICJvcHRpb25hbC5oIgotICAi
c3Bhbi5oIgotICAidmFyaWFudC5oIgorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgYW55
CisgIEhEUlMKKyAgICAiYW55LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9
CisgIERFUFMKKyAgICBhYnNsOjpiYWRfYW55X2Nhc3QKKyAgICBhYnNsOjpjb25maWcKKyAgICBh
YnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAgIGFic2w6OnV0aWxp
dHkKKyAgUFVCTElDCiApCiAKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAgIGJhZF9hbnlf
Y2FzdAorICBIRFJTCisgICAiYmFkX2FueV9jYXN0LmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpiYWRfYW55X2Nhc3RfaW1wbAorICAgIGFi
c2w6OmNvbmZpZworICBQVUJMSUMKKykKIAotIyBhbnkgbGlicmFyeQotYWJzbF9oZWFkZXJfbGli
cmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9hbnkKLSAgUFVCTElDX0xJQlJBUklFUwotICAgIGFi
c2w6OmJhZF9hbnlfY2FzdAotICAgIGFic2w6OmJhc2UKLSAgICBhYnNsOjptZXRhCi0gICAgYWJz
bDo6dXRpbGl0eQotICBQUklWQVRFX0NPTVBJTEVfRkxBR1MKK2Fic2xfY2NfbGlicmFyeSgKKyAg
TkFNRQorICAgIGJhZF9hbnlfY2FzdF9pbXBsCisgIFNSQ1MKKyAgICJiYWRfYW55X2Nhc3QuaCIK
KyAgICJiYWRfYW55X2Nhc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9
CiAgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KLSAgRVhQT1JUX05BTUUKLSAgICBhbnkKKyAg
TElOS09QVFMKKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTfQorICBERVBTCisg
ICAgYWJzbDo6YmFzZQorICAgIGFic2w6OmNvbmZpZwogKQogCi0jIHNwYW4gbGlicmFyeQotYWJz
bF9oZWFkZXJfbGlicmFyeSgKLSAgVEFSR0VUCi0gICAgYWJzbF9zcGFuCi0gIFBVQkxJQ19MSUJS
QVJJRVMKLSAgICBhYnNsOjp1dGlsaXR5Ci0gIEVYUE9SVF9OQU1FCi0gICAgc3BhbgorYWJzbF9j
Y190ZXN0KAorICBOQU1FCisgICAgYW55X3Rlc3QKKyAgU1JDUworICAgICJhbnlfdGVzdC5jYyIK
KyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgICAke0FCU0xfRVhDRVBUSU9OU19G
TEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9Cisg
IERFUFMKKyAgICBhYnNsOjphbnkKKyAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6Y29uZmlnCisg
ICAgYWJzbDo6ZXhjZXB0aW9uX3Rlc3RpbmcKKyAgICBhYnNsOjp0ZXN0X2luc3RhbmNlX3RyYWNr
ZXIKKyAgICBnbW9ja19tYWluCiApCiAKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIGFueV90
ZXN0X25vZXhjZXB0aW9ucworICBTUkNTCisgICAgImFueV90ZXN0LmNjIgorICBDT1BUUworICAg
ICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YW55CisgICAgYWJzbDo6YmFz
ZQorICAgIGFic2w6OmNvbmZpZworICAgIGFic2w6OmV4Y2VwdGlvbl90ZXN0aW5nCisgICAgYWJz
bDo6dGVzdF9pbnN0YW5jZV90cmFja2VyCisgICAgZ21vY2tfbWFpbgorKQogCi0jIGJhZF9hbnlf
Y2FzdCBsaWJyYXJ5Ci1saXN0KEFQUEVORCBCQURfQU5ZX0NBU1RfU1JDCi0gICJiYWRfYW55X2Nh
c3QuY2MiCi0gICR7VFlQRVNfUFVCTElDX0hFQURFUlN9CithYnNsX2NjX3Rlc3QoCisgIE5BTUUK
KyAgICBhbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0CisgIFNSQ1MKKyAgICAiYW55X2V4Y2VwdGlv
bl9zYWZldHlfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FCU0xfVEVTVF9DT1BUU30KKyAgICAk
e0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUworICAgICR7QUJTTF9FWENFUFRJT05T
X0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjphbnkKKyAgICBhYnNsOjpleGNlcHRp
b25fc2FmZXR5X3Rlc3RpbmcKKyAgICBnbW9ja19tYWluCiApCiAKLWFic2xfbGlicmFyeSgKLSAg
VEFSR0VUCi0gICAgYWJzbF9iYWRfYW55X2Nhc3QKLSAgU09VUkNFUwotICAgICR7QkFEX0FOWV9D
QVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICBFWFBPUlRfTkFNRQotICAgIGJhZF9hbnlf
Y2FzdAorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCisgICAgc3BhbgorICBIRFJTCisgICAgInNw
YW4uaCIKKyAgU1JDUworICAgICJpbnRlcm5hbC9zcGFuLmgiCisgIENPUFRTCisgICAgJHtBQlNM
X0RFRkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjphbGdvcml0aG0KKyAgICBhYnNsOjpj
b3JlX2hlYWRlcnMKKyAgICBhYnNsOjp0aHJvd19kZWxlZ2F0ZQorICAgIGFic2w6OnR5cGVfdHJh
aXRzCisgIFBVQkxJQwogKQogCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBzcGFuX3Rlc3QK
KyAgU1JDUworICAgICJzcGFuX3Rlc3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09Q
VFN9CisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KKyAgTElOS09QVFMKKyAgICAke0FCU0xf
RVhDRVBUSU9OU19GTEFHX0xJTktPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3BhbgorICAgIGFi
c2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBh
YnNsOjpleGNlcHRpb25fdGVzdGluZworICAgIGFic2w6OmZpeGVkX2FycmF5CisgICAgYWJzbDo6
aW5saW5lZF92ZWN0b3IKKyAgICBhYnNsOjpoYXNoX3Rlc3RpbmcKKyAgICBhYnNsOjpzdHJpbmdz
CisgICAgZ21vY2tfbWFpbgorKQogCi0jIG9wdGlvbmFsIGxpYnJhcnkKLWxpc3QoQVBQRU5EIE9Q
VElPTkFMX1NSQwotICAib3B0aW9uYWwuY2MiCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBz
cGFuX3Rlc3Rfbm9leGNlcHRpb25zCisgIFNSQ1MKKyAgICAic3Bhbl90ZXN0LmNjIgorICBDT1BU
UworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6c3BhbgorICAgIGFi
c2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBh
YnNsOjpleGNlcHRpb25fdGVzdGluZworICAgIGFic2w6OmZpeGVkX2FycmF5CisgICAgYWJzbDo6
aW5saW5lZF92ZWN0b3IKKyAgICBhYnNsOjpoYXNoX3Rlc3RpbmcKKyAgICBhYnNsOjpzdHJpbmdz
CisgICAgZ21vY2tfbWFpbgogKQogCi1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xf
b3B0aW9uYWwKLSAgU09VUkNFUwotICAgICR7T1BUSU9OQUxfU1JDfQotICBQVUJMSUNfTElCUkFS
SUVTCithYnNsX2NjX2xpYnJhcnkoCisgIE5BTUUKKyAgICBvcHRpb25hbAorICBIRFJTCisgICAg
Im9wdGlvbmFsLmgiCisgIFNSQ1MKKyAgICAiaW50ZXJuYWwvb3B0aW9uYWwuaCIKKyAgQ09QVFMK
KyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAgREVQUwogICAgIGFic2w6OmJhZF9vcHRpb25h
bF9hY2Nlc3MKLSAgICBhYnNsOjpiYXNlCisgICAgYWJzbDo6YmFzZV9pbnRlcm5hbAorICAgIGFi
c2w6OmNvbmZpZworICAgIGFic2w6OmNvcmVfaGVhZGVycwogICAgIGFic2w6Om1lbW9yeQotICAg
IGFic2w6Om1ldGEKKyAgICBhYnNsOjp0eXBlX3RyYWl0cwogICAgIGFic2w6OnV0aWxpdHkKLSAg
RVhQT1JUX05BTUUKLSAgICBvcHRpb25hbAorICBQVUJMSUMKICkKIAotCi1zZXQoQkFEX09QVElP
TkFMX0FDQ0VTU19TUkMgImJhZF9vcHRpb25hbF9hY2Nlc3MuY2MiKQotc2V0KEJBRF9PUFRJT05B
TF9BQ0NFU1NfTElCUkFSSUVTIGFic2w6OmJhc2UpCi0KLWFic2xfbGlicmFyeSgKLSAgVEFSR0VU
Ci0gICAgYWJzbF9iYWRfb3B0aW9uYWxfYWNjZXNzCi0gIFNPVVJDRVMKLSAgICAke0JBRF9PUFRJ
T05BTF9BQ0NFU1NfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtCQURfT1BUSU9OQUxf
QUNDRVNTX1BVQkxJQ19MSUJSQVJJRVN9Ci0gIEVYUE9SVF9OQU1FCithYnNsX2NjX2xpYnJhcnko
CisgIE5BTUUKICAgICBiYWRfb3B0aW9uYWxfYWNjZXNzCi0pCi0KLSMgdmFyaWFudCBsaWJyYXJ5
Ci1hYnNsX2xpYnJhcnkoCi0gIFRBUkdFVAotICAgIGFic2xfdmFyaWFudAotICBTT1VSQ0VTCi0g
ICAgImJhZF92YXJpYW50X2FjY2Vzcy5oIiAiYmFkX3ZhcmlhbnRfYWNjZXNzLmNjIiAidmFyaWFu
dC5oIiAiaW50ZXJuYWwvdmFyaWFudC5oIgotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbDo6
YmFzZSBhYnNsOjptZXRhIGFic2w6OnV0aWxpdHkKLSAgUFJJVkFURV9DT01QSUxFX0ZMQUdTCisg
IEhEUlMKKyAgICAiYmFkX29wdGlvbmFsX2FjY2Vzcy5oIgorICBTUkNTCisgICAgImJhZF9vcHRp
b25hbF9hY2Nlc3MuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX0RFRkFVTFRfQ09QVFN9CiAgICAg
JHtBQlNMX0VYQ0VQVElPTlNfRkxBR30KLSAgRVhQT1JUX05BTUUKLSAgICB2YXJpYW50CisgIExJ
TktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30KKyAgREVQUworICAg
IGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcKKyAgUFVCTElDCiApCiAKLSMKLSMjIFRFU1RT
Ci0jCi0KLQotIyB0ZXN0IGFueV90ZXN0Ci1zZXQoQU5ZX1RFU1RfU1JDICJhbnlfdGVzdC5jYyIp
Ci1zZXQoQU5ZX1RFU1RfUFVCTElDX0xJQlJBUklFUyBhYnNsOjpiYXNlIGFic2w6OnRocm93X2Rl
bGVnYXRlIGFic2w6OmFueSBhYnNsOjpiYWRfYW55X2Nhc3QgdGVzdF9pbnN0YW5jZV90cmFja2Vy
X2xpYikKLQotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBhbnlfdGVzdAotICBTT1VSQ0VTCi0g
ICAgJHtBTllfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke0FOWV9URVNUX1BV
QkxJQ19MSUJSQVJJRVN9Ci0gIFBSSVZBVEVfQ09NUElMRV9GTEFHUworYWJzbF9jY19saWJyYXJ5
KAorICBOQU1FCisgICAgYmFkX3ZhcmlhbnRfYWNjZXNzCisgIEhEUlMKKyAgICAiYmFkX3Zhcmlh
bnRfYWNjZXNzLmgiCisgIFNSQ1MKKyAgICAiYmFkX3ZhcmlhbnRfYWNjZXNzLmNjIgorICBDT1BU
UworICAgICR7QUJTTF9ERUZBVUxUX0NPUFRTfQogICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9
CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30KKyAgREVQ
UworICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcKKyAgUFVCTElDCiApCiAKLQotIyB0
ZXN0IGFueV90ZXN0X25vZXhjZXB0aW9ucwotYWJzbF90ZXN0KAotICBUQVJHRVQKLSAgICBhbnlf
dGVzdF9ub2V4Y2VwdGlvbnMKLSAgU09VUkNFUwotICAgICR7QU5ZX1RFU1RfU1JDfQotICBQVUJM
SUNfTElCUkFSSUVTCi0gICAgJHtBTllfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQotKQotCi0jIHRl
c3QgYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdAotc2V0KEFOWV9FWENFUFRJT05fU0FGRVRZX1RF
U1RfU1JDICJhbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIikKLXNldChBTllfRVhDRVBUSU9O
X1NBRkVUWV9URVNUX1BVQkxJQ19MSUJSQVJJRVMKLSAgYWJzbDo6YW55Ci0gIGFic2w6OmJhc2UK
LSAgYWJzbF9iYXNlX2ludGVybmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZwotKQotCi1hYnNs
X3Rlc3QoCi0gIFRBUkdFVAotICAgIGFueV9leGNlcHRpb25fc2FmZXR5X3Rlc3QKLSAgU09VUkNF
UwotICAgICR7QU5ZX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJ
RVMKLSAgICAke0FOWV9FWENFUFRJT05fU0FGRVRZX1RFU1RfUFVCTElDX0xJQlJBUklFU30KLSAg
UFJJVkFURV9DT01QSUxFX0ZMQUdTCithYnNsX2NjX3Rlc3QoCisgIE5BTUUKKyAgICBvcHRpb25h
bF90ZXN0CisgIFNSQ1MKKyAgICAib3B0aW9uYWxfdGVzdC5jYyIKKyAgQ09QVFMKKyAgICAke0FC
U0xfVEVTVF9DT1BUU30KICAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHfQorICBMSU5LT1BUUwor
ICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpv
cHRpb25hbAorICAgIGFic2w6OmJhc2UKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjp0eXBl
X3RyYWl0cworICAgIGFic2w6OnN0cmluZ3MKKyAgICBnbW9ja19tYWluCiApCiAKLQotIyB0ZXN0
IHNwYW5fdGVzdAotc2V0KFNQQU5fVEVTVF9TUkMgInNwYW5fdGVzdC5jYyIpCi1zZXQoU1BBTl9U
RVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6YmFzZSBhYnNsOjpzdHJpbmdzIGFic2w6OnRocm93
X2RlbGVnYXRlIGFic2w6OnNwYW4gdGVzdF9pbnN0YW5jZV90cmFja2VyX2xpYikKLQotYWJzbF90
ZXN0KAotICBUQVJHRVQKLSAgICBzcGFuX3Rlc3QKLSAgU09VUkNFUwotICAgICR7U1BBTl9URVNU
X1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAgICR7U1BBTl9URVNUX1BVQkxJQ19MSUJSQVJJ
RVN9Ci0gIFBSSVZBVEVfQ09NUElMRV9GTEFHUworYWJzbF9jY190ZXN0KAorICBOQU1FCisgICAg
b3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0CisgIFNSQ1MKKyAgICAib3B0aW9uYWxfZXhj
ZXB0aW9uX3NhZmV0eV90ZXN0LmNjIgorICBDT1BUUworICAgICR7QUJTTF9URVNUX0NPUFRTfQog
ICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9CisgIExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQ
VElPTlNfRkxBR19MSU5LT1BUU30KKyAgREVQUworICAgIGFic2w6Om9wdGlvbmFsCisgICAgYWJz
bDo6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nCisgICAgZ21vY2tfbWFpbgogKQogCi0KLSMgdGVz
dCBzcGFuX3Rlc3Rfbm9leGNlcHRpb25zCi1hYnNsX3Rlc3QoCi0gIFRBUkdFVAotICAgIHNwYW5f
dGVzdF9ub2V4Y2VwdGlvbnMKLSAgU09VUkNFUwotICAgICR7U1BBTl9URVNUX1NSQ30KLSAgUFVC
TElDX0xJQlJBUklFUwotICAgICR7U1BBTl9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CithYnNsX2Nj
X2xpYnJhcnkoCisgIE5BTUUKKyAgICB2YXJpYW50CisgIEhEUlMKKyAgICAidmFyaWFudC5oIgor
ICBTUkNTCisgICAgImludGVybmFsL3ZhcmlhbnQuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVG
QVVMVF9DT1BUU30KKyAgREVQUworICAgIGFic2w6OmJhZF92YXJpYW50X2FjY2VzcworICAgIGFi
c2w6OmJhc2VfaW50ZXJuYWwKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRl
cnMKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAgIGFic2w6OnV0aWxpdHkKKyAgUFVCTElDCiAp
CiAKLQotCi0jIHRlc3Qgb3B0aW9uYWxfdGVzdAotc2V0KE9QVElPTkFMX1RFU1RfU1JDICJvcHRp
b25hbF90ZXN0LmNjIikKLXNldChPUFRJT05BTF9URVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6
YmFzZSBhYnNsOjp0aHJvd19kZWxlZ2F0ZSBhYnNsOjpvcHRpb25hbCBhYnNsX2JhZF9vcHRpb25h
bF9hY2Nlc3MpCi0KLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAgb3B0aW9uYWxfdGVzdAotICBT
T1VSQ0VTCi0gICAgJHtPUFRJT05BTF9URVNUX1NSQ30KLSAgUFVCTElDX0xJQlJBUklFUwotICAg
ICR7T1BUSU9OQUxfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorYWJzbF9jY190ZXN0KAorICBOQU1F
CisgICAgdmFyaWFudF90ZXN0CisgIFNSQ1MKKyAgICAidmFyaWFudF90ZXN0LmNjIgorICBDT1BU
UworICAgICR7QUJTTF9URVNUX0NPUFRTfQorICAgICR7QUJTTF9FWENFUFRJT05TX0ZMQUd9Cisg
IExJTktPUFRTCisgICAgJHtBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUU30KKyAgREVQUwor
ICAgIGFic2w6OnZhcmlhbnQKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNsOjpjb3JlX2hlYWRl
cnMKKyAgICBhYnNsOjptZW1vcnkKKyAgICBhYnNsOjp0eXBlX3RyYWl0cworICAgIGFic2w6OnN0
cmluZ3MKKyAgICBnbW9ja19tYWluCiApCiAKK2Fic2xfY2NfbGlicmFyeSgKKyAgTkFNRQorICAg
IGNvbXBhcmUKKyAgSERSUworICAgICJjb21wYXJlLmgiCisgIENPUFRTCisgICAgJHtBQlNMX0RF
RkFVTFRfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjpjb3JlX2hlYWRlcnMKKyAgICBhYnNsOjp0
eXBlX3RyYWl0cworICBQVUJMSUMKKykKIAotIyB0ZXN0IG9wdGlvbmFsX2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdAotc2V0KE9QVElPTkFMX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9TUkMgIm9wdGlvbmFs
X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIpCi1zZXQoT1BUSU9OQUxfRVhDRVBUSU9OX1NBRkVU
WV9URVNUX1BVQkxJQ19MSUJSQVJJRVMKLSAgYWJzbDo6b3B0aW9uYWwKLSAgYWJzbF9iYXNlX2lu
dGVybmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZworYWJzbF9jY190ZXN0KAorICBOQU1FCisg
ICAgY29tcGFyZV90ZXN0CisgIFNSQ1MKKyAgICAiY29tcGFyZV90ZXN0LmNjIgorICBDT1BUUwor
ICAgICR7QUJTTF9URVNUX0NPUFRTfQorICBERVBTCisgICAgYWJzbDo6YmFzZQorICAgIGFic2w6
OmNvbXBhcmUKKyAgICBnbW9ja19tYWluCiApCiAKLWFic2xfdGVzdCgKLSAgVEFSR0VUCi0gICAg
b3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0Ci0gIFNPVVJDRVMKLSAgICAke09QVElPTkFM
X0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9TUkN9Ci0gIFBVQkxJQ19MSUJSQVJJRVMKLSAgICAke09Q
VElPTkFMX0VYQ0VQVElPTl9TQUZFVFlfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQotICBQUklWQVRF
X0NPTVBJTEVfRkxBR1MKKyMgVE9ETyhjb2hlbmpvbix6aGFuZ3h5KSBGaWd1cmUgb3V0IHdoeSB0
aGlzIHRlc3QgaXMgZmFpbGluZyBvbiBnY2MgNC44CitpZihDTUFLRV9DWFhfQ09NUElMRVJfSUQg
U1RSRVFVQUwgIkdOVSIgQU5EIENNQUtFX0NYWF9DT01QSUxFUl9WRVJTSU9OIFZFUlNJT05fTEVT
UyA0LjkpCitlbHNlKCkKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQorICAgIHZhcmlhbnRfZXhjZXB0
aW9uX3NhZmV0eV90ZXN0CisgIFNSQ1MKKyAgICAidmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rl
c3QuY2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CiAgICAgJHtBQlNMX0VYQ0VQ
VElPTlNfRkxBR30KKyAgTElOS09QVFMKKyAgICAke0FCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktP
UFRTfQorICBERVBTCisgICAgYWJzbDo6dmFyaWFudAorICAgIGFic2w6OmNvbmZpZworICAgIGFi
c2w6OmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZworICAgIGFic2w6Om1lbW9yeQorICAgIGdtb2Nr
X21haW4KICkKK2VuZGlmKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2FueS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvYW55LmgKaW5kZXggYTk3M2M2ZGFiN2U2MTFmZWVmNDMwNDcxNTM4ZDI4NTNhOTllZjIy
My4uZjNhMzI4MTI2NjJmZjM4ZGU4YTllNDYzZTU2YzVkM2VjYjZmNDllYyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXMvYW55LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55LmgKQEAgLTUsNyArNSw3IEBA
CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
IC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwog
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTU4LDcgKzU4LDcgQEAKIAogI2lmZGVmIEFC
U0xfSEFWRV9TVERfQU5ZCiAKLSNpbmNsdWRlIDxhbnk+CisjaW5jbHVkZSA8YW55PiAgLy8gSVdZ
VSBwcmFnbWE6IGV4cG9ydAogCiBuYW1lc3BhY2UgYWJzbCB7CiB1c2luZyBzdGQ6OmFueTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzL2FueV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy9hbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCmluZGV4IGY5ZGQ4YzQ4MmMyNTU0
M2I5MTQyZTQyYmExNzVhOGMwMTQ5YzM1NjYuLjVkN2Q4YTVjZmQyMTNhNWZlZTU5YTNiYzA0NWFh
N2I4MWE0ZmZmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2FueV9leGNlcHRpb25fc2FmZXR5
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtMTM1LDYgKzEzNSw3
IEBAIFRFU1QoQW55RXhjZXB0aW9uU2FmZXR5LCBBc3NpZ25tZW50KSB7CiAgIEVYUEVDVF9UUlVF
KHN0cm9uZ19lbXB0eV9hbnlfdGVzdGVyLlRlc3QoYXNzaWduX3ZhbCkpOwogICBFWFBFQ1RfVFJV
RShzdHJvbmdfZW1wdHlfYW55X3Rlc3Rlci5UZXN0KG1vdmUpKTsKIH0KKwogLy8gbGlic3RkYysr
IHN0ZDo6YW55IGZhaWxzIHRoaXMgdGVzdAogI2lmICFkZWZpbmVkKEFCU0xfSEFWRV9TVERfQU5Z
KQogVEVTVChBbnlFeGNlcHRpb25TYWZldHksIEVtcGxhY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzL2FueV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X3Rlc3QuY2MKaW5kZXggMTE1ZTc4
ZGY3YWYxYjFmNjg5NDIwNTAyZjU1Mzk2MTZlMTUxN2IwNS4uODcxMDQ3MjE5MGU4OTAxMzVkNmNm
MDFlODk2OGFjZjc5YjBjYTk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXMvYW55X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTE1NCw2ICsxNTQsMTQgQEAgVEVTVChBbnlUZXN0LCBJblBsYWNl
Q29uc3RydWN0aW9uKSB7CiAgIEVYUEVDVF9FUSg1LCB2LnZhbHVlKTsKIH0KIAorVEVTVChBbnlU
ZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uVmFyaWFibGVUZW1wbGF0ZSkgeworICBjb25zdCBDb3B5
T25seSBjb3B5X29ubHl7fTsKKyAgYWJzbDo6YW55IG8oYWJzbDo6aW5fcGxhY2VfdHlwZTxJbnRN
b3ZlT25seUNvcHlPbmx5PiwgNSwgTW92ZU9ubHkoKSwKKyAgICAgICAgICAgICAgY29weV9vbmx5
KTsKKyAgYXV0byYgdiA9IGFic2w6OmFueV9jYXN0PEludE1vdmVPbmx5Q29weU9ubHkmPihvKTsK
KyAgRVhQRUNUX0VRKDUsIHYudmFsdWUpOworfQorCiBURVNUKEFueVRlc3QsIEluUGxhY2VDb25z
dHJ1Y3Rpb25XaXRoQ1YpIHsKICAgY29uc3QgQ29weU9ubHkgY29weV9vbmx5e307CiAgIGFic2w6
OmFueSBvKGFic2w6OmluX3BsYWNlX3R5cGVfdDxjb25zdCB2b2xhdGlsZSBJbnRNb3ZlT25seUNv
cHlPbmx5PigpLCA1LApAQCAtMTYyLDEyICsxNzAsMjYgQEAgVEVTVChBbnlUZXN0LCBJblBsYWNl
Q29uc3RydWN0aW9uV2l0aENWKSB7CiAgIEVYUEVDVF9FUSg1LCB2LnZhbHVlKTsKIH0KIAorVEVT
VChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uV2l0aENWVmFyaWFibGVUZW1wbGF0ZSkgewor
ICBjb25zdCBDb3B5T25seSBjb3B5X29ubHl7fTsKKyAgYWJzbDo6YW55IG8oYWJzbDo6aW5fcGxh
Y2VfdHlwZTxjb25zdCB2b2xhdGlsZSBJbnRNb3ZlT25seUNvcHlPbmx5PiwgNSwKKyAgICAgICAg
ICAgICAgTW92ZU9ubHkoKSwgY29weV9vbmx5KTsKKyAgYXV0byYgdiA9IGFic2w6OmFueV9jYXN0
PEludE1vdmVPbmx5Q29weU9ubHkmPihvKTsKKyAgRVhQRUNUX0VRKDUsIHYudmFsdWUpOworfQor
CiBURVNUKEFueVRlc3QsIEluUGxhY2VDb25zdHJ1Y3Rpb25XaXRoRnVuY3Rpb24pIHsKICAgYWJz
bDo6YW55IG8oYWJzbDo6aW5fcGxhY2VfdHlwZV90PEZ1bmN0aW9uVHlwZT4oKSwgRnVuY3Rpb25U
b0VtcGxhY2UpOwogICBGdW5jdGlvblR5cGUqJiBjb25zdHJ1Y3Rpb25fcmVzdWx0ID0gYWJzbDo6
YW55X2Nhc3Q8RnVuY3Rpb25UeXBlKiY+KG8pOwogICBFWFBFQ1RfRVEoJkZ1bmN0aW9uVG9FbXBs
YWNlLCBjb25zdHJ1Y3Rpb25fcmVzdWx0KTsKIH0KIAorVEVTVChBbnlUZXN0LCBJblBsYWNlQ29u
c3RydWN0aW9uV2l0aEZ1bmN0aW9uVmFyaWFibGVUZW1wbGF0ZSkgeworICBhYnNsOjphbnkgbyhh
YnNsOjppbl9wbGFjZV90eXBlPEZ1bmN0aW9uVHlwZT4sIEZ1bmN0aW9uVG9FbXBsYWNlKTsKKyAg
YXV0byYgY29uc3RydWN0aW9uX3Jlc3VsdCA9IGFic2w6OmFueV9jYXN0PEZ1bmN0aW9uVHlwZSom
PihvKTsKKyAgRVhQRUNUX0VRKCZGdW5jdGlvblRvRW1wbGFjZSwgY29uc3RydWN0aW9uX3Jlc3Vs
dCk7Cit9CisKIFRFU1QoQW55VGVzdCwgSW5QbGFjZUNvbnN0cnVjdGlvbldpdGhBcnJheSkgewog
ICBBcnJheVR5cGUgYXIgPSB7NSwgNDJ9OwogICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90
eXBlX3Q8QXJyYXlUeXBlPigpLCBhcik7CkBAIC0xNzUsNiArMTk3LDEzIEBAIFRFU1QoQW55VGVz
dCwgSW5QbGFjZUNvbnN0cnVjdGlvbldpdGhBcnJheSkgewogICBFWFBFQ1RfRVEoJmFyWzBdLCBj
b25zdHJ1Y3Rpb25fcmVzdWx0KTsKIH0KIAorVEVTVChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0
aW9uV2l0aEFycmF5VmFyaWFibGVUZW1wbGF0ZSkgeworICBBcnJheVR5cGUgYXIgPSB7NSwgNDJ9
OworICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlPEFycmF5VHlwZT4sIGFyKTsKKyAg
YXV0byYgY29uc3RydWN0aW9uX3Jlc3VsdCA9IGFic2w6OmFueV9jYXN0PERlY2F5ZWRBcnJheSY+
KG8pOworICBFWFBFQ1RfRVEoJmFyWzBdLCBjb25zdHJ1Y3Rpb25fcmVzdWx0KTsKK30KKwogVEVT
VChBbnlUZXN0LCBJblBsYWNlQ29uc3RydWN0aW9uSWxpc3QpIHsKICAgY29uc3QgQ29weU9ubHkg
Y29weV9vbmx5e307CiAgIGFic2w6OmFueSBvKGFic2w6OmluX3BsYWNlX3R5cGVfdDxMaXN0TW92
ZU9ubHlDb3B5T25seT4oKSwgezEsIDIsIDMsIDR9LApAQCAtMTg0LDYgKzIxMywxNSBAQCBURVNU
KEFueVRlc3QsIEluUGxhY2VDb25zdHJ1Y3Rpb25JbGlzdCkgewogICBFWFBFQ1RfRVEoZXhwZWN0
ZWRfdmFsdWVzLCB2LnZhbHVlcyk7CiB9CiAKK1RFU1QoQW55VGVzdCwgSW5QbGFjZUNvbnN0cnVj
dGlvbklsaXN0VmFyaWFibGVUZW1wbGF0ZSkgeworICBjb25zdCBDb3B5T25seSBjb3B5X29ubHl7
fTsKKyAgYWJzbDo6YW55IG8oYWJzbDo6aW5fcGxhY2VfdHlwZTxMaXN0TW92ZU9ubHlDb3B5T25s
eT4sIHsxLCAyLCAzLCA0fSwKKyAgICAgICAgICAgICAgTW92ZU9ubHkoKSwgY29weV9vbmx5KTsK
KyAgYXV0byYgdiA9IGFic2w6OmFueV9jYXN0PExpc3RNb3ZlT25seUNvcHlPbmx5Jj4obyk7Cisg
IHN0ZDo6dmVjdG9yPGludD4gZXhwZWN0ZWRfdmFsdWVzID0gezEsIDIsIDMsIDR9OworICBFWFBF
Q1RfRVEoZXhwZWN0ZWRfdmFsdWVzLCB2LnZhbHVlcyk7Cit9CisKIFRFU1QoQW55VGVzdCwgSW5Q
bGFjZUNvbnN0cnVjdGlvbklsaXN0V2l0aENWKSB7CiAgIGNvbnN0IENvcHlPbmx5IGNvcHlfb25s
eXt9OwogICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlX3Q8Y29uc3Qgdm9sYXRpbGUg
TGlzdE1vdmVPbmx5Q29weU9ubHk+KCksCkBAIC0xOTMsMTEgKzIzMSwyNSBAQCBURVNUKEFueVRl
c3QsIEluUGxhY2VDb25zdHJ1Y3Rpb25JbGlzdFdpdGhDVikgewogICBFWFBFQ1RfRVEoZXhwZWN0
ZWRfdmFsdWVzLCB2LnZhbHVlcyk7CiB9CiAKK1RFU1QoQW55VGVzdCwgSW5QbGFjZUNvbnN0cnVj
dGlvbklsaXN0V2l0aENWVmFyaWFibGVUZW1wbGF0ZSkgeworICBjb25zdCBDb3B5T25seSBjb3B5
X29ubHl7fTsKKyAgYWJzbDo6YW55IG8oYWJzbDo6aW5fcGxhY2VfdHlwZTxjb25zdCB2b2xhdGls
ZSBMaXN0TW92ZU9ubHlDb3B5T25seT4sCisgICAgICAgICAgICAgIHsxLCAyLCAzLCA0fSwgTW92
ZU9ubHkoKSwgY29weV9vbmx5KTsKKyAgYXV0byYgdiA9IGFic2w6OmFueV9jYXN0PExpc3RNb3Zl
T25seUNvcHlPbmx5Jj4obyk7CisgIHN0ZDo6dmVjdG9yPGludD4gZXhwZWN0ZWRfdmFsdWVzID0g
ezEsIDIsIDMsIDR9OworICBFWFBFQ1RfRVEoZXhwZWN0ZWRfdmFsdWVzLCB2LnZhbHVlcyk7Cit9
CisKIFRFU1QoQW55VGVzdCwgSW5QbGFjZU5vQXJncykgewogICBhYnNsOjphbnkgbyhhYnNsOjpp
bl9wbGFjZV90eXBlX3Q8aW50Pnt9KTsKICAgRVhQRUNUX0VRKDAsIGFic2w6OmFueV9jYXN0PGlu
dCY+KG8pKTsKIH0KIAorVEVTVChBbnlUZXN0LCBJblBsYWNlTm9BcmdzVmFyaWFibGVUZW1wbGF0
ZSkgeworICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlPGludD4pOworICBFWFBFQ1Rf
RVEoMCwgYWJzbDo6YW55X2Nhc3Q8aW50Jj4obykpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RW5hYmxlciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KIHN0cnVjdCBDYW5FbXBsYWNl
QW55SW1wbCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKIApAQCAtNTAxLDcgKzU1Myw3IEBAIFRFU1Qo
QW55VGVzdCwgQ29weSkgewogICBJbnN0YW5jZVRyYWNrZXIgdHJhY2tlcl9yYWlpOwogCiAgIHsK
LSAgICBhYnNsOjphbnkgbyhhYnNsOjppbl9wbGFjZV90eXBlX3Q8Q29weWFibGVPbmx5SW5zdGFu
Y2U+e30sIDEyMyk7CisgICAgYWJzbDo6YW55IG8oYWJzbDo6aW5fcGxhY2VfdHlwZTxDb3B5YWJs
ZU9ubHlJbnN0YW5jZT4sIDEyMyk7CiAgICAgQ29weWFibGVPbmx5SW5zdGFuY2UqIGYxID0gYWJz
bDo6YW55X2Nhc3Q8Q29weWFibGVPbmx5SW5zdGFuY2U+KCZvKTsKIAogICAgIGFic2w6OmFueSBv
MihvKTsKQEAgLTYyMiw3ICs2NzQsNyBAQCBURVNUKEFueVRlc3QsIFRocm93QmFkQWxsb2MpIHsK
ICAgfQogCiAgIHsKLSAgICBhYnNsOjphbnkgYShhYnNsOjppbl9wbGFjZV90eXBlX3Q8aW50Pnt9
KTsKKyAgICBhYnNsOjphbnkgYShhYnNsOjppbl9wbGFjZV90eXBlPGludD4pOwogICAgIEFCU0xf
QU5ZX1RFU1RfRVhQRUNUX0JBRF9BTllfQ0FTVChhYnNsOjphbnlfY2FzdDxmbG9hdCY+KGEpKTsK
ICAgICBBQlNMX0FOWV9URVNUX0VYUEVDVF9CQURfQU5ZX0NBU1QoYWJzbDo6YW55X2Nhc3Q8Y29u
c3QgZmxvYXQmPihhKSk7CiAgICAgQUJTTF9BTllfVEVTVF9FWFBFQ1RfQkFEX0FOWV9DQVNUKGFi
c2w6OmFueV9jYXN0PGZsb2F0JiY+KGFic2w6OmFueXt9KSk7CkBAIC02NjUsNyArNzE3LDcgQEAg
VEVTVChBbnlUZXN0LCBGYWlsZWRDb3B5KSB7CiAgIH0KIAogICB7Ci0gICAgYWJzbDo6YW55IHNy
YyhhYnNsOjppbl9wbGFjZV90eXBlX3Q8QmFkQ29weWFibGU+e30pOworICAgIGFic2w6OmFueSBz
cmMoYWJzbDo6aW5fcGxhY2VfdHlwZTxCYWRDb3B5YWJsZT4pOwogICAgIEFCU0xfQU5ZX1RFU1Rf
RVhQRUNUX0JBRF9DT1BZKGFic2w6OmFueXtzcmN9KTsKICAgfQogCkBAIC02NzcsMjEgKzcyOSwy
MSBAQCBURVNUKEFueVRlc3QsIEZhaWxlZENvcHkpIHsKIAogICB7CiAgICAgQmFkQ29weWFibGUg
YmFkOwotICAgIGFic2w6OmFueSB0YXJnZXQoYWJzbDo6aW5fcGxhY2VfdHlwZV90PEJhZENvcHlh
YmxlPnt9KTsKKyAgICBhYnNsOjphbnkgdGFyZ2V0KGFic2w6OmluX3BsYWNlX3R5cGU8QmFkQ29w
eWFibGU+KTsKICAgICBBQlNMX0FOWV9URVNUX0VYUEVDVF9CQURfQ09QWSh0YXJnZXQgPSBiYWQp
OwogICAgIEVYUEVDVF9UUlVFKHRhcmdldC5oYXNfdmFsdWUoKSk7CiAgIH0KIAogICB7Ci0gICAg
YWJzbDo6YW55IHNyYyhhYnNsOjppbl9wbGFjZV90eXBlX3Q8QmFkQ29weWFibGU+e30pOworICAg
IGFic2w6OmFueSBzcmMoYWJzbDo6aW5fcGxhY2VfdHlwZTxCYWRDb3B5YWJsZT4pOwogICAgIGFi
c2w6OmFueSB0YXJnZXQ7CiAgICAgQUJTTF9BTllfVEVTVF9FWFBFQ1RfQkFEX0NPUFkodGFyZ2V0
ID0gc3JjKTsKICAgICBFWFBFQ1RfRkFMU0UodGFyZ2V0Lmhhc192YWx1ZSgpKTsKICAgfQogCiAg
IHsKLSAgICBhYnNsOjphbnkgc3JjKGFic2w6OmluX3BsYWNlX3R5cGVfdDxCYWRDb3B5YWJsZT57
fSk7Ci0gICAgYWJzbDo6YW55IHRhcmdldChhYnNsOjppbl9wbGFjZV90eXBlX3Q8QmFkQ29weWFi
bGU+e30pOworICAgIGFic2w6OmFueSBzcmMoYWJzbDo6aW5fcGxhY2VfdHlwZTxCYWRDb3B5YWJs
ZT4pOworICAgIGFic2w6OmFueSB0YXJnZXQoYWJzbDo6aW5fcGxhY2VfdHlwZTxCYWRDb3B5YWJs
ZT4pOwogICAgIEFCU0xfQU5ZX1RFU1RfRVhQRUNUX0JBRF9DT1BZKHRhcmdldCA9IHNyYyk7CiAg
ICAgRVhQRUNUX1RSVUUodGFyZ2V0Lmhhc192YWx1ZSgpKTsKICAgfQpAQCAtNzA3LDcgKzc1OSw3
IEBAIFRFU1QoQW55VGVzdCwgRmFpbGVkRW1wbGFjZSkgewogCiAgIHsKICAgICBCYWRDb3B5YWJs
ZSBiYWQ7Ci0gICAgYWJzbDo6YW55IHRhcmdldChhYnNsOjppbl9wbGFjZV90eXBlX3Q8aW50Pnt9
KTsKKyAgICBhYnNsOjphbnkgdGFyZ2V0KGFic2w6OmluX3BsYWNlX3R5cGU8aW50Pik7CiAgICAg
QUJTTF9BTllfVEVTVF9FWFBFQ1RfQkFEX0NPUFkodGFyZ2V0LmVtcGxhY2U8QmFkQ29weWFibGU+
KGJhZCkpOwogI2lmIGRlZmluZWQoQUJTTF9IQVZFX1NURF9BTlkpICYmIGRlZmluZWQoX19HTElC
Q1hYX18pCiAgICAgLy8gbGlic3RkYysrIHN0ZDo6YW55OjplbXBsYWNlKCkgaW1wbGVtZW50YXRp
b24gKGFzIG9mIDcuMikgaGFzIGEgYnVnOiBpZiBhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
YmFkX2FueV9jYXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX2FueV9jYXN0LmNjCmluZGV4IDJlMmZk
MjlhMzM3ODA3MDY2NTU2YTJmZmM0MGIzZTA4ZGZhNjdiZWIuLjUwNTkxOWE1NTgzMWMyNTk4MTQw
OTMzNjI3ZGE1ODE3NjgwOWU2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF9hbnlfY2Fz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfYW55X2Nhc3QuY2MKQEAgLTQsNyArNCw3IEBACiAv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8v
Ci0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8g
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF9hbnlf
Y2FzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX2FueV9jYXN0LmgKaW5kZXggNjAzOTAxMzI0YWZjMzBm
MmJjNTkyZWFjNWVjMTZmMjRiMTk1N2FkNC4uOGQwMjBlZGU0NjZiMjgxN2Q3NzdiNWRjYjVjOWQx
NmExNGFiZmQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX2FueV9jYXN0LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXMvYmFkX2FueV9jYXN0LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQog
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF9vcHRpb25hbF9hY2Nlc3Mu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9iYWRfb3B0aW9uYWxfYWNjZXNzLmNjCmluZGV4IDU1ODcwNzc2MGU5
ZGU0NTNmN2NjZWRjOTk4YTBjYThmNWJiZTY0NDYuLmE3OTFjN2MyMWRhODc1OWVmNjU3NzZhNDk3
NDdhMmQ3ODVmYTNiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF9vcHRpb25hbF9hY2Nl
c3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5jYwpAQCAtNCw3ICs0
LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
IC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
YmFkX29wdGlvbmFsX2FjY2Vzcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5o
CmluZGV4IGM2YzI3NDYwYTc2ZDMwOWEwNzM5YmJmNDQ1ZjJkMzRiZTQyZTFkYTAuLmFkZDVjNDUy
Y2Q1MDAyOTk4OGI5OWM0ODczOTE2MmMwNGRjN2FmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
L2JhZF9vcHRpb25hbF9hY2Nlc3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfb3B0aW9uYWxfYWNj
ZXNzLmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF92
YXJpYW50X2FjY2Vzcy5jYwppbmRleCBkMjdkNzc1NjE3OTE3ZmJjMDY4M2I4ZWZjNDBkYWFjMWVl
MGRjNTUzLi5hNDMyNWM4ZGY3ZGI4MTBiNjA2MTI3ZTI3YjNhYjQxYzNlMzNjNjU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9iYWRfdmFyaWFudF9hY2Nlc3MuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
YmFkX3ZhcmlhbnRfYWNjZXNzLmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfdmFyaWFudF9hY2Nlc3MuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3R5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5oCmluZGV4IGU3MzU1YTVhNzRjOGI2MjRlOTE2
NTJiNDIzODk2YWY0ODQzNjVkNGUuLjYzN2RiNDM1NTA1MzExNjhlNzhkODUwMTU3NmRlYTU3YTAw
NDNiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5oCkBAIC00LDcgKzQsNyBAQAogLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAg
aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9jb21wYXJlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlcy9jb21wYXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTAzNjFkNjIzMDI1MDg4ZTUyZTI2OTQ5
ZjIxZDc0YTQxNWE0YjczNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2NvbXBhcmUu
aApAQCAtMCwwICsxLDUwOCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGNvbXBhcmUuaAorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIGBhYnNs
Ojp3ZWFrX2VxdWFsaXR5YCwgYGFic2w6OnN0cm9uZ19lcXVhbGl0eWAsCisvLyBgYWJzbDo6cGFy
dGlhbF9vcmRlcmluZ2AsIGBhYnNsOjp3ZWFrX29yZGVyaW5nYCwgYW5kIGBhYnNsOjpzdHJvbmdf
b3JkZXJpbmdgCisvLyB0eXBlcyBmb3Igc3RvcmluZyB0aGUgcmVzdWx0cyBvZiB0aHJlZSB3YXkg
Y29tcGFyaXNvbnMuCisvLworLy8gRXhhbXBsZToKKy8vICAgYWJzbDo6d2Vha19vcmRlcmluZyBj
b21wYXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBhLCBjb25zdCBzdGQ6OnN0cmluZyYgYik7CisvLwor
Ly8gVGhlc2UgYXJlIEMrKzExIGNvbXBhdGlibGUgdmVyc2lvbnMgb2YgdGhlIEMrKzIwIGNvcnJl
c3BvbmRpbmcgdHlwZXMKKy8vIChgc3RkOjp3ZWFrX2VxdWFsaXR5YCwgZXRjLikgYW5kIGFyZSBk
ZXNpZ25lZCB0byBiZSBkcm9wLWluIHJlcGxhY2VtZW50cworLy8gZm9yIGNvZGUgY29tcGxpYW50
IHdpdGggQysrMjAuCisKKyNpZm5kZWYgQUJTTF9UWVBFU19DT01QQVJFX0hfCisjZGVmaW5lIEFC
U0xfVFlQRVNfQ09NUEFSRV9IXworCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3Rk
aW50PgorI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNs
dWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3Ry
YWl0cy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29tcGFyZV9pbnRlcm5hbCB7
CisKK3VzaW5nIHZhbHVlX3R5cGUgPSBpbnQ4X3Q7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
c3RydWN0IEZhaWwgeworICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA8IDAsICJPbmx5IGxpdGVy
YWwgYDBgIGlzIGFsbG93ZWQuIik7Cit9OworCisvLyBXZSBuZWVkIHRoZSBOdWxsUHRyVCB0ZW1w
bGF0ZSB0byBhdm9pZCB0cmlnZ2VyaW5nIHRoZSBtb2Rlcm5pemUtdXNlLW51bGxwdHIKKy8vIENs
YW5nVGlkeSB3YXJuaW5nIGluIHVzZXIgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBOdWxsUHRy
VCA9IHN0ZDo6bnVsbHB0cl90Pgorc3RydWN0IE9ubHlMaXRlcmFsWmVybyB7CisgIGNvbnN0ZXhw
ciBPbmx5TGl0ZXJhbFplcm8oTnVsbFB0clQpIG5vZXhjZXB0IHt9ICAvLyBOT0xJTlQKKworICAv
LyBGYWlscyBjb21waWxhdGlvbiB3aGVuIGBudWxscHRyYCBvciBpbnRlZ3JhbCB0eXBlIGFyZ3Vt
ZW50cyBvdGhlciB0aGFuCisgIC8vIGBpbnRgIGFyZSBwYXNzZWQuIFRoaXMgY29uc3RydWN0b3Ig
ZG9lc24ndCBhY2NlcHQgYGludGAgYmVjYXVzZSBsaXRlcmFsIGAwYAorICAvLyBoYXMgdHlwZSBg
aW50YC4gTGl0ZXJhbCBgMGAgYXJndW1lbnRzIHdpbGwgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQg
dG8KKyAgLy8gYHN0ZDo6bnVsbHB0cl90YCBhbmQgYWNjZXB0ZWQgYnkgdGhlIGFib3ZlIGNvbnN0
cnVjdG9yLCB3aGlsZSBvdGhlciBgaW50YAorICAvLyBhcmd1bWVudHMgd2lsbCBmYWlsIHRvIGJl
IGNvbnZlcnRlZCBhbmQgY2F1c2UgY29tcGlsYXRpb24gZmFpbHVyZS4KKyAgdGVtcGxhdGUgPAor
ICAgICAgdHlwZW5hbWUgVCwKKyAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8CisgICAgICAgICAgc3RkOjppc19zYW1lPFQsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUgfHwK
KyAgICAgICAgICAoc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfc2FtZTxU
LCBpbnQ+Ojp2YWx1ZSk+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBGYWlsPFQ+
Ojp0eXBlPgorICBPbmx5TGl0ZXJhbFplcm8oVCk7ICAvLyBOT0xJTlQKK307CisKK2VudW0gY2xh
c3MgZXEgOiB2YWx1ZV90eXBlIHsKKyAgZXF1YWwgPSAwLAorICBlcXVpdmFsZW50ID0gZXF1YWws
CisgIG5vbmVxdWFsID0gMSwKKyAgbm9uZXF1aXZhbGVudCA9IG5vbmVxdWFsLAorfTsKKworZW51
bSBjbGFzcyBvcmQgOiB2YWx1ZV90eXBlIHsgbGVzcyA9IC0xLCBncmVhdGVyID0gMSB9OworCitl
bnVtIGNsYXNzIG5jbXAgOiB2YWx1ZV90eXBlIHsgdW5vcmRlcmVkID0gLTEyNyB9OworCisvLyBU
aGVzZSB0ZW1wbGF0ZSBiYXNlIGNsYXNzZXMgYWxsb3cgZm9yIGRlZmluaW5nIHRoZSB2YWx1ZXMg
b2YgdGhlIGNvbnN0YW50cworLy8gaW4gdGhlIGhlYWRlciBmaWxlIChmb3IgcGVyZm9ybWFuY2Up
IHdpdGhvdXQgdXNpbmcgaW5saW5lIHZhcmlhYmxlcyAod2hpY2gKKy8vIGFyZW4ndCBhdmFpbGFi
bGUgaW4gQysrMTEpLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qgd2Vha19lcXVhbGl0
eV9iYXNlIHsKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIGVxdWl2YWxlbnQ7Cisg
IEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBub25lcXVpdmFsZW50OworfTsKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCB3ZWFrX2VxdWFsaXR5X2Jhc2U8VD46OmVxdWl2YWxl
bnQoZXE6OmVxdWl2YWxlbnQpOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUIHdlYWtf
ZXF1YWxpdHlfYmFzZTxUPjo6bm9uZXF1aXZhbGVudChlcTo6bm9uZXF1aXZhbGVudCk7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IHN0cm9uZ19lcXVhbGl0eV9iYXNlIHsKKyAgQUJT
TF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIGVxdWFsOworICBBQlNMX0NPTlNUX0lOSVQgc3Rh
dGljIGNvbnN0IFQgbm9uZXF1YWw7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBl
cXVpdmFsZW50OworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0IFQgbm9uZXF1aXZhbGVu
dDsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQgc3Ryb25nX2VxdWFsaXR5X2Jh
c2U8VD46OmVxdWFsKGVxOjplcXVhbCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQg
c3Ryb25nX2VxdWFsaXR5X2Jhc2U8VD46Om5vbmVxdWFsKGVxOjpub25lcXVhbCk7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQgc3Ryb25nX2VxdWFsaXR5X2Jhc2U8VD46OmVxdWl2YWxl
bnQoZXE6OmVxdWl2YWxlbnQpOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUIHN0cm9u
Z19lcXVhbGl0eV9iYXNlPFQ+Ojpub25lcXVpdmFsZW50KGVxOjpub25lcXVpdmFsZW50KTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgcGFydGlhbF9vcmRlcmluZ19iYXNlIHsKKyAg
QUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIGxlc3M7CisgIEFCU0xfQ09OU1RfSU5JVCBz
dGF0aWMgY29uc3QgVCBlcXVpdmFsZW50OworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0
IFQgZ3JlYXRlcjsKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25zdCBUIHVub3JkZXJlZDsK
K307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQgcGFydGlhbF9vcmRlcmluZ19iYXNl
PFQ+OjpsZXNzKG9yZDo6bGVzcyk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQgcGFy
dGlhbF9vcmRlcmluZ19iYXNlPFQ+OjplcXVpdmFsZW50KGVxOjplcXVpdmFsZW50KTsKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCBwYXJ0aWFsX29yZGVyaW5nX2Jhc2U8VD46OmdyZWF0
ZXIob3JkOjpncmVhdGVyKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCBwYXJ0aWFs
X29yZGVyaW5nX2Jhc2U8VD46OnVub3JkZXJlZChuY21wOjp1bm9yZGVyZWQpOworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCB3ZWFrX29yZGVyaW5nX2Jhc2UgeworICBBQlNMX0NPTlNU
X0lOSVQgc3RhdGljIGNvbnN0IFQgbGVzczsKKyAgQUJTTF9DT05TVF9JTklUIHN0YXRpYyBjb25z
dCBUIGVxdWl2YWxlbnQ7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBncmVhdGVy
OworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCB3ZWFrX29yZGVyaW5nX2Jhc2U8
VD46Omxlc3Mob3JkOjpsZXNzKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCB3ZWFr
X29yZGVyaW5nX2Jhc2U8VD46OmVxdWl2YWxlbnQoZXE6OmVxdWl2YWxlbnQpOwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Citjb25zdCBUIHdlYWtfb3JkZXJpbmdfYmFzZTxUPjo6Z3JlYXRlcihvcmQ6
OmdyZWF0ZXIpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBzdHJvbmdfb3JkZXJp
bmdfYmFzZSB7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0aWMgY29uc3QgVCBsZXNzOworICBBQlNM
X0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0IFQgZXF1YWw7CisgIEFCU0xfQ09OU1RfSU5JVCBzdGF0
aWMgY29uc3QgVCBlcXVpdmFsZW50OworICBBQlNMX0NPTlNUX0lOSVQgc3RhdGljIGNvbnN0IFQg
Z3JlYXRlcjsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQgc3Ryb25nX29yZGVy
aW5nX2Jhc2U8VD46Omxlc3Mob3JkOjpsZXNzKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29u
c3QgVCBzdHJvbmdfb3JkZXJpbmdfYmFzZTxUPjo6ZXF1YWwoZXE6OmVxdWFsKTsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorY29uc3QgVCBzdHJvbmdfb3JkZXJpbmdfYmFzZTxUPjo6ZXF1aXZhbGVu
dChlcTo6ZXF1aXZhbGVudCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQgc3Ryb25n
X29yZGVyaW5nX2Jhc2U8VD46OmdyZWF0ZXIob3JkOjpncmVhdGVyKTsKKworfSAgLy8gbmFtZXNw
YWNlIGNvbXBhcmVfaW50ZXJuYWwKKworY2xhc3Mgd2Vha19lcXVhbGl0eQorICAgIDogcHVibGlj
IGNvbXBhcmVfaW50ZXJuYWw6OndlYWtfZXF1YWxpdHlfYmFzZTx3ZWFrX2VxdWFsaXR5PiB7Cisg
IGV4cGxpY2l0IGNvbnN0ZXhwciB3ZWFrX2VxdWFsaXR5KGNvbXBhcmVfaW50ZXJuYWw6OmVxIHYp
IG5vZXhjZXB0CisgICAgICA6IHZhbHVlXyhzdGF0aWNfY2FzdDxjb21wYXJlX2ludGVybmFsOjp2
YWx1ZV90eXBlPih2KSkge30KKyAgZnJpZW5kIHN0cnVjdCBjb21wYXJlX2ludGVybmFsOjp3ZWFr
X2VxdWFsaXR5X2Jhc2U8d2Vha19lcXVhbGl0eT47CisKKyBwdWJsaWM6CisgIC8vIENvbXBhcmlz
b25zCisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KAorICAgICAgd2Vha19lcXVh
bGl0eSB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88Pikgbm9leGNlcHQgewor
ICAgIHJldHVybiB2LnZhbHVlXyA9PSAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvciE9KAorICAgICAgd2Vha19lcXVhbGl0eSB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5
TGl0ZXJhbFplcm88Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LnZhbHVlXyAhPSAwOworICB9
CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbXBhcmVfaW50ZXJuYWw6Ok9u
bHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFr
X2VxdWFsaXR5IHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCA9PSB2LnZhbHVlXzsKKyAgfQor
ICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb21wYXJlX2ludGVybmFsOjpPbmx5
TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19l
cXVhbGl0eSB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAgIT0gdi52YWx1ZV87CisgIH0KKwor
IHByaXZhdGU6CisgIGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5cGUgdmFsdWVfOworfTsKKwor
Y2xhc3Mgc3Ryb25nX2VxdWFsaXR5CisgICAgOiBwdWJsaWMgY29tcGFyZV9pbnRlcm5hbDo6c3Ry
b25nX2VxdWFsaXR5X2Jhc2U8c3Ryb25nX2VxdWFsaXR5PiB7CisgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBzdHJvbmdfZXF1YWxpdHkoY29tcGFyZV9pbnRlcm5hbDo6ZXEgdikgbm9leGNlcHQKKyAgICAg
IDogdmFsdWVfKHN0YXRpY19jYXN0PGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5cGU+KHYpKSB7
fQorICBmcmllbmQgc3RydWN0IGNvbXBhcmVfaW50ZXJuYWw6OnN0cm9uZ19lcXVhbGl0eV9iYXNl
PHN0cm9uZ19lcXVhbGl0eT47CisKKyBwdWJsaWM6CisgIC8vIENvbnZlcnNpb24KKyAgY29uc3Rl
eHByIG9wZXJhdG9yIHdlYWtfZXF1YWxpdHkoKSBjb25zdCBub2V4Y2VwdCB7ICAvLyBOT0xJTlQK
KyAgICByZXR1cm4gdmFsdWVfID09IDAgPyB3ZWFrX2VxdWFsaXR5OjplcXVpdmFsZW50CisgICAg
ICAgICAgICAgICAgICAgICAgIDogd2Vha19lcXVhbGl0eTo6bm9uZXF1aXZhbGVudDsKKyAgfQor
ICAvLyBDb21wYXJpc29ucworICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PSgKKyAg
ICAgIHN0cm9uZ19lcXVhbGl0eSB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88
Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LnZhbHVlXyA9PSAwOworICB9CisgIGZyaWVuZCBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KAorICAgICAgc3Ryb25nX2VxdWFsaXR5IHYsIGNvbXBh
cmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYu
dmFsdWVfICE9IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29t
cGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cm9uZ19lcXVhbGl0eSB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAg
PT0gdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29t
cGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cm9uZ19lcXVhbGl0eSB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAg
IT0gdi52YWx1ZV87CisgIH0KKworIHByaXZhdGU6CisgIGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVl
X3R5cGUgdmFsdWVfOworfTsKKworY2xhc3MgcGFydGlhbF9vcmRlcmluZworICAgIDogcHVibGlj
IGNvbXBhcmVfaW50ZXJuYWw6OnBhcnRpYWxfb3JkZXJpbmdfYmFzZTxwYXJ0aWFsX29yZGVyaW5n
PiB7CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBwYXJ0aWFsX29yZGVyaW5nKGNvbXBhcmVfaW50ZXJu
YWw6OmVxIHYpIG5vZXhjZXB0CisgICAgICA6IHZhbHVlXyhzdGF0aWNfY2FzdDxjb21wYXJlX2lu
dGVybmFsOjp2YWx1ZV90eXBlPih2KSkge30KKyAgZXhwbGljaXQgY29uc3RleHByIHBhcnRpYWxf
b3JkZXJpbmcoY29tcGFyZV9pbnRlcm5hbDo6b3JkIHYpIG5vZXhjZXB0CisgICAgICA6IHZhbHVl
XyhzdGF0aWNfY2FzdDxjb21wYXJlX2ludGVybmFsOjp2YWx1ZV90eXBlPih2KSkge30KKyAgZXhw
bGljaXQgY29uc3RleHByIHBhcnRpYWxfb3JkZXJpbmcoY29tcGFyZV9pbnRlcm5hbDo6bmNtcCB2
KSBub2V4Y2VwdAorICAgICAgOiB2YWx1ZV8oc3RhdGljX2Nhc3Q8Y29tcGFyZV9pbnRlcm5hbDo6
dmFsdWVfdHlwZT4odikpIHt9CisgIGZyaWVuZCBzdHJ1Y3QgY29tcGFyZV9pbnRlcm5hbDo6cGFy
dGlhbF9vcmRlcmluZ19iYXNlPHBhcnRpYWxfb3JkZXJpbmc+OworCisgIGNvbnN0ZXhwciBib29s
IGlzX29yZGVyZWQoKSBjb25zdCBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHZhbHVlXyAhPQorICAg
ICAgICAgICBjb21wYXJlX2ludGVybmFsOjp2YWx1ZV90eXBlKGNvbXBhcmVfaW50ZXJuYWw6Om5j
bXA6OnVub3JkZXJlZCk7CisgIH0KKworIHB1YmxpYzoKKyAgLy8gQ29udmVyc2lvbgorICBjb25z
dGV4cHIgb3BlcmF0b3Igd2Vha19lcXVhbGl0eSgpIGNvbnN0IG5vZXhjZXB0IHsgIC8vIE5PTElO
VAorICAgIHJldHVybiB2YWx1ZV8gPT0gMCA/IHdlYWtfZXF1YWxpdHk6OmVxdWl2YWxlbnQKKyAg
ICAgICAgICAgICAgICAgICAgICAgOiB3ZWFrX2VxdWFsaXR5Ojpub25lcXVpdmFsZW50OworICB9
CisgIC8vIENvbXBhcmlzb25zCisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KAor
ICAgICAgcGFydGlhbF9vcmRlcmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFpl
cm88Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LmlzX29yZGVyZWQoKSAmJiB2LnZhbHVlXyA9
PSAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KAorICAgICAgcGFy
dGlhbF9vcmRlcmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88Pikgbm9l
eGNlcHQgeworICAgIHJldHVybiAhdi5pc19vcmRlcmVkKCkgfHwgdi52YWx1ZV8gIT0gMDsKKyAg
fQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KAorICAgICAgcGFydGlhbF9vcmRl
cmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88Pikgbm9leGNlcHQgewor
ICAgIHJldHVybiB2LmlzX29yZGVyZWQoKSAmJiB2LnZhbHVlXyA8IDA7CisgIH0KKyAgZnJpZW5k
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oCisgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYsIGNv
bXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJu
IHYuaXNfb3JkZXJlZCgpICYmIHYudmFsdWVfIDw9IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPigKKyAgICAgIHBhcnRpYWxfb3JkZXJpbmcgdiwgY29tcGFyZV9pbnRl
cm5hbDo6T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi5pc19vcmRl
cmVkKCkgJiYgdi52YWx1ZV8gPiAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj49KAorICAgICAgcGFydGlhbF9vcmRlcmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5
TGl0ZXJhbFplcm88Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LmlzX29yZGVyZWQoKSAmJiB2
LnZhbHVlXyA+PSAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4g
di5pc19vcmRlcmVkKCkgJiYgMCA9PSB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3IhPShjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbF9vcmRlcmluZyB2KSBub2V4
Y2VwdCB7CisgICAgcmV0dXJuICF2LmlzX29yZGVyZWQoKSB8fCAwICE9IHYudmFsdWVfOworICB9
CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29tcGFyZV9pbnRlcm5hbDo6T25s
eUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlh
bF9vcmRlcmluZyB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYuaXNfb3JkZXJlZCgpICYmIDAg
PCB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb21w
YXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFydGlhbF9vcmRlcmluZyB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYu
aXNfb3JkZXJlZCgpICYmIDAgPD0gdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPihjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsX29yZGVyaW5nIHYpIG5vZXhjZXB0
IHsKKyAgICByZXR1cm4gdi5pc19vcmRlcmVkKCkgJiYgMCA+IHYudmFsdWVfOworICB9CisgIGZy
aWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRl
cmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsX29y
ZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi5pc19vcmRlcmVkKCkgJiYgMCA+PSB2
LnZhbHVlXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29tcGFyZV9pbnRlcm5hbDo6dmFsdWVfdHlw
ZSB2YWx1ZV87Cit9OworCitjbGFzcyB3ZWFrX29yZGVyaW5nCisgICAgOiBwdWJsaWMgY29tcGFy
ZV9pbnRlcm5hbDo6d2Vha19vcmRlcmluZ19iYXNlPHdlYWtfb3JkZXJpbmc+IHsKKyAgZXhwbGlj
aXQgY29uc3RleHByIHdlYWtfb3JkZXJpbmcoY29tcGFyZV9pbnRlcm5hbDo6ZXEgdikgbm9leGNl
cHQKKyAgICAgIDogdmFsdWVfKHN0YXRpY19jYXN0PGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5
cGU+KHYpKSB7fQorICBleHBsaWNpdCBjb25zdGV4cHIgd2Vha19vcmRlcmluZyhjb21wYXJlX2lu
dGVybmFsOjpvcmQgdikgbm9leGNlcHQKKyAgICAgIDogdmFsdWVfKHN0YXRpY19jYXN0PGNvbXBh
cmVfaW50ZXJuYWw6OnZhbHVlX3R5cGU+KHYpKSB7fQorICBmcmllbmQgc3RydWN0IGNvbXBhcmVf
aW50ZXJuYWw6OndlYWtfb3JkZXJpbmdfYmFzZTx3ZWFrX29yZGVyaW5nPjsKKworIHB1YmxpYzoK
KyAgLy8gQ29udmVyc2lvbnMKKyAgY29uc3RleHByIG9wZXJhdG9yIHdlYWtfZXF1YWxpdHkoKSBj
b25zdCBub2V4Y2VwdCB7ICAvLyBOT0xJTlQKKyAgICByZXR1cm4gdmFsdWVfID09IDAgPyB3ZWFr
X2VxdWFsaXR5OjplcXVpdmFsZW50CisgICAgICAgICAgICAgICAgICAgICAgIDogd2Vha19lcXVh
bGl0eTo6bm9uZXF1aXZhbGVudDsKKyAgfQorICBjb25zdGV4cHIgb3BlcmF0b3IgcGFydGlhbF9v
cmRlcmluZygpIGNvbnN0IG5vZXhjZXB0IHsgIC8vIE5PTElOVAorICAgIHJldHVybiB2YWx1ZV8g
PT0gMCA/IHBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAg
ICAgOiAodmFsdWVfIDwgMCA/IHBhcnRpYWxfb3JkZXJpbmc6Omxlc3MKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IHBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXIpOworICB9
CisgIC8vIENvbXBhcmlzb25zCisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KAor
ICAgICAgd2Vha19vcmRlcmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88
Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LnZhbHVlXyA9PSAwOworICB9CisgIGZyaWVuZCBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KAorICAgICAgd2Vha19vcmRlcmluZyB2LCBjb21wYXJl
X2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88Pikgbm9leGNlcHQgeworICAgIHJldHVybiB2LnZh
bHVlXyAhPSAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoCisgICAg
ICB3ZWFrX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBu
b2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfIDwgMDsKKyAgfQorICBmcmllbmQgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I8PSgKKyAgICAgIHdlYWtfb3JkZXJpbmcgdiwgY29tcGFyZV9pbnRl
cm5hbDo6T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52YWx1ZV8g
PD0gMDsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KAorICAgICAgd2Vh
a19vcmRlcmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88Pikgbm9leGNl
cHQgeworICAgIHJldHVybiB2LnZhbHVlXyA+IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPj0oCisgICAgICB3ZWFrX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6
Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfID49IDA7
CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29tcGFyZV9pbnRlcm5h
bDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdlYWtfb3JkZXJpbmcgdikgbm9leGNlcHQgeworICAgIHJldHVybiAwID09IHYudmFsdWVfOwor
ICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbXBhcmVfaW50ZXJuYWw6
Ok9ubHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWFrX29yZGVyaW5nIHYpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gMCAhPSB2LnZhbHVlXzsKKyAg
fQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbXBhcmVfaW50ZXJuYWw6Ok9u
bHlMaXRlcmFsWmVybzw+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtf
b3JkZXJpbmcgdikgbm9leGNlcHQgeworICAgIHJldHVybiAwIDwgdi52YWx1ZV87CisgIH0KKyAg
ZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29tcGFyZV9pbnRlcm5hbDo6T25seUxp
dGVyYWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtfb3Jk
ZXJpbmcgdikgbm9leGNlcHQgeworICAgIHJldHVybiAwIDw9IHYudmFsdWVfOworICB9CisgIGZy
aWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVy
YWxaZXJvPD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19vcmRlcmlu
ZyB2KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAgPiB2LnZhbHVlXzsKKyAgfQorICBmcmllbmQg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFpl
cm88PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19vcmRlcmluZyB2
KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIDAgPj0gdi52YWx1ZV87CisgIH0KKworIHByaXZhdGU6
CisgIGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5cGUgdmFsdWVfOworfTsKKworY2xhc3Mgc3Ry
b25nX29yZGVyaW5nCisgICAgOiBwdWJsaWMgY29tcGFyZV9pbnRlcm5hbDo6c3Ryb25nX29yZGVy
aW5nX2Jhc2U8c3Ryb25nX29yZGVyaW5nPiB7CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBzdHJvbmdf
b3JkZXJpbmcoY29tcGFyZV9pbnRlcm5hbDo6ZXEgdikgbm9leGNlcHQKKyAgICAgIDogdmFsdWVf
KHN0YXRpY19jYXN0PGNvbXBhcmVfaW50ZXJuYWw6OnZhbHVlX3R5cGU+KHYpKSB7fQorICBleHBs
aWNpdCBjb25zdGV4cHIgc3Ryb25nX29yZGVyaW5nKGNvbXBhcmVfaW50ZXJuYWw6Om9yZCB2KSBu
b2V4Y2VwdAorICAgICAgOiB2YWx1ZV8oc3RhdGljX2Nhc3Q8Y29tcGFyZV9pbnRlcm5hbDo6dmFs
dWVfdHlwZT4odikpIHt9CisgIGZyaWVuZCBzdHJ1Y3QgY29tcGFyZV9pbnRlcm5hbDo6c3Ryb25n
X29yZGVyaW5nX2Jhc2U8c3Ryb25nX29yZGVyaW5nPjsKKworIHB1YmxpYzoKKyAgLy8gQ29udmVy
c2lvbnMKKyAgY29uc3RleHByIG9wZXJhdG9yIHdlYWtfZXF1YWxpdHkoKSBjb25zdCBub2V4Y2Vw
dCB7ICAvLyBOT0xJTlQKKyAgICByZXR1cm4gdmFsdWVfID09IDAgPyB3ZWFrX2VxdWFsaXR5Ojpl
cXVpdmFsZW50CisgICAgICAgICAgICAgICAgICAgICAgIDogd2Vha19lcXVhbGl0eTo6bm9uZXF1
aXZhbGVudDsKKyAgfQorICBjb25zdGV4cHIgb3BlcmF0b3Igc3Ryb25nX2VxdWFsaXR5KCkgY29u
c3Qgbm9leGNlcHQgeyAgLy8gTk9MSU5UCisgICAgcmV0dXJuIHZhbHVlXyA9PSAwID8gc3Ryb25n
X2VxdWFsaXR5OjplcXVhbCA6IHN0cm9uZ19lcXVhbGl0eTo6bm9uZXF1YWw7CisgIH0KKyAgY29u
c3RleHByIG9wZXJhdG9yIHBhcnRpYWxfb3JkZXJpbmcoKSBjb25zdCBub2V4Y2VwdCB7ICAvLyBO
T0xJTlQKKyAgICByZXR1cm4gdmFsdWVfID09IDAgPyBwYXJ0aWFsX29yZGVyaW5nOjplcXVpdmFs
ZW50CisgICAgICAgICAgICAgICAgICAgICAgIDogKHZhbHVlXyA8IDAgPyBwYXJ0aWFsX29yZGVy
aW5nOjpsZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYXJ0aWFs
X29yZGVyaW5nOjpncmVhdGVyKTsKKyAgfQorICBjb25zdGV4cHIgb3BlcmF0b3Igd2Vha19vcmRl
cmluZygpIGNvbnN0IG5vZXhjZXB0IHsgIC8vIE5PTElOVAorICAgIHJldHVybiB2YWx1ZV8gPT0g
MAorICAgICAgICAgICAgICAgPyB3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50CisgICAgICAgICAg
ICAgICA6ICh2YWx1ZV8gPCAwID8gd2Vha19vcmRlcmluZzo6bGVzcyA6IHdlYWtfb3JkZXJpbmc6
OmdyZWF0ZXIpOworICB9CisgIC8vIENvbXBhcmlzb25zCisgIGZyaWVuZCBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KAorICAgICAgc3Ryb25nX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6
Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfID09IDA7
CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oCisgICAgICBzdHJvbmdf
b3JkZXJpbmcgdiwgY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0
IHsKKyAgICByZXR1cm4gdi52YWx1ZV8gIT0gMDsKKyAgfQorICBmcmllbmQgY29uc3RleHByIGJv
b2wgb3BlcmF0b3I8KAorICAgICAgc3Ryb25nX29yZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6
Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIHYudmFsdWVfIDwgMDsK
KyAgfQorICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PSgKKyAgICAgIHN0cm9uZ19v
cmRlcmluZyB2LCBjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88Pikgbm9leGNlcHQg
eworICAgIHJldHVybiB2LnZhbHVlXyA8PSAwOworICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj4oCisgICAgICBzdHJvbmdfb3JkZXJpbmcgdiwgY29tcGFyZV9pbnRlcm5hbDo6
T25seUxpdGVyYWxaZXJvPD4pIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gdi52YWx1ZV8gPiAwOwor
ICB9CisgIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KAorICAgICAgc3Ryb25nX29y
ZGVyaW5nIHYsIGNvbXBhcmVfaW50ZXJuYWw6Ok9ubHlMaXRlcmFsWmVybzw+KSBub2V4Y2VwdCB7
CisgICAgcmV0dXJuIHYudmFsdWVfID49IDA7CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ19vcmRlcmluZyB2KSBub2V4Y2VwdCB7
CisgICAgcmV0dXJuIDAgPT0gdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yIT0oY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ19vcmRlcmluZyB2KSBub2V4Y2VwdCB7
CisgICAgcmV0dXJuIDAgIT0gdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJvbmdfb3JkZXJpbmcgdikgbm9leGNlcHQgewor
ICAgIHJldHVybiAwIDwgdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPD0oY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ19vcmRlcmluZyB2KSBub2V4Y2VwdCB7Cisg
ICAgcmV0dXJuIDAgPD0gdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPihjb21wYXJlX2ludGVybmFsOjpPbmx5TGl0ZXJhbFplcm88PiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJvbmdfb3JkZXJpbmcgdikgbm9leGNlcHQgeworICAg
IHJldHVybiAwID4gdi52YWx1ZV87CisgIH0KKyAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPj0oY29tcGFyZV9pbnRlcm5hbDo6T25seUxpdGVyYWxaZXJvPD4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ19vcmRlcmluZyB2KSBub2V4Y2VwdCB7CisgICAg
cmV0dXJuIDAgPj0gdi52YWx1ZV87CisgIH0KKworIHByaXZhdGU6CisgIGNvbXBhcmVfaW50ZXJu
YWw6OnZhbHVlX3R5cGUgdmFsdWVfOworfTsKKworbmFtZXNwYWNlIGNvbXBhcmVfaW50ZXJuYWwg
eworLy8gV2UgYWxzbyBwcm92aWRlIHRoZXNlIGNvbXBhcmF0b3IgYWRhcHRlciBmdW5jdGlvbnMg
Zm9yIGludGVybmFsIGFic2wgdXNlLgorCisvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGRvIGEgYm9v
bGVhbiBjb21wYXJpc29uIG9mIHR3byBrZXlzIGdpdmVuIGEgYm9vbGVhbgorLy8gb3IgdGhyZWUt
d2F5IGNvbXBhcmF0b3IuCisvLyBTRklOQUUgcHJldmVudHMgaW1wbGljaXQgY29udmVyc2lvbnMg
dG8gYm9vbCAoc3VjaCBhcyBmcm9tIGludCkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQm9vbCwKKyAg
ICAgICAgICBhYnNsOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Ym9vbCwgQm9vbD46OnZhbHVl
LCBpbnQ+ID0gMD4KK2NvbnN0ZXhwciBib29sIGNvbXBhcmVfcmVzdWx0X2FzX2xlc3NfdGhhbihj
b25zdCBCb29sIHIpIHsgcmV0dXJuIHI7IH0KK2NvbnN0ZXhwciBib29sIGNvbXBhcmVfcmVzdWx0
X2FzX2xlc3NfdGhhbihjb25zdCBhYnNsOjp3ZWFrX29yZGVyaW5nIHIpIHsKKyAgcmV0dXJuIHIg
PCAwOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgSywgdHlwZW5h
bWUgTEs+Citjb25zdGV4cHIgYm9vbCBkb19sZXNzX3RoYW5fY29tcGFyaXNvbihjb25zdCBDb21w
YXJlICZjb21wYXJlLCBjb25zdCBLICZ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTEsgJnkpIHsKKyAgcmV0dXJuIGNvbXBhcmVfcmVzdWx0X2FzX2xlc3Nf
dGhhbihjb21wYXJlKHgsIHkpKTsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9ucyB0byBkbyBhIHRo
cmVlLXdheSBjb21wYXJpc29uIG9mIHR3byBrZXlzIGdpdmVuIGEgYm9vbGVhbiBvcgorLy8gdGhy
ZWUtd2F5IGNvbXBhcmF0b3IuCisvLyBTRklOQUUgcHJldmVudHMgaW1wbGljaXQgY29udmVyc2lv
bnMgdG8gaW50IChzdWNoIGFzIGZyb20gYm9vbCkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50LAor
ICAgICAgICAgIGFic2w6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxpbnQsIEludD46OnZhbHVl
LCBpbnQ+ID0gMD4KK2NvbnN0ZXhwciBhYnNsOjp3ZWFrX29yZGVyaW5nIGNvbXBhcmVfcmVzdWx0
X2FzX29yZGVyaW5nKGNvbnN0IEludCBjKSB7CisgIHJldHVybiBjIDwgMCA/IGFic2w6OndlYWtf
b3JkZXJpbmc6Omxlc3MKKyAgICAgICAgICAgICAgIDogYyA9PSAwID8gYWJzbDo6d2Vha19vcmRl
cmluZzo6ZXF1aXZhbGVudAorICAgICAgICAgICAgICAgICAgICAgICAgOiBhYnNsOjp3ZWFrX29y
ZGVyaW5nOjpncmVhdGVyOworfQorY29uc3RleHByIGFic2w6OndlYWtfb3JkZXJpbmcgY29tcGFy
ZV9yZXN1bHRfYXNfb3JkZXJpbmcoCisgICAgY29uc3QgYWJzbDo6d2Vha19vcmRlcmluZyBjKSB7
CisgIHJldHVybiBjOworfQorCit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgQ29tcGFyZSwgdHlw
ZW5hbWUgSywgdHlwZW5hbWUgTEssCisgICAgYWJzbDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2Ft
ZTxib29sLCBhYnNsOjpyZXN1bHRfb2ZfdDxDb21wYXJlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEsgJiwgY29uc3QgTEsgJik+Pjo6dmFsdWUs
CisgICAgICAgICAgICAgICAgICAgICAgaW50PiA9IDA+Citjb25zdGV4cHIgYWJzbDo6d2Vha19v
cmRlcmluZyBkb190aHJlZV93YXlfY29tcGFyaXNvbihjb25zdCBDb21wYXJlICZjb21wYXJlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSyAmeCwgY29uc3QgTEsgJnkpIHsKKyAgcmV0dXJuIGNvbXBhcmVfcmVzdWx0X2FzX29yZGVy
aW5nKGNvbXBhcmUoeCwgeSkpOworfQordGVtcGxhdGUgPAorICAgIHR5cGVuYW1lIENvbXBhcmUs
IHR5cGVuYW1lIEssIHR5cGVuYW1lIExLLAorICAgIGFic2w6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
c2FtZTxib29sLCBhYnNsOjpyZXN1bHRfb2ZfdDxDb21wYXJlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSyAmLCBjb25zdCBMSyAmKT4+Ojp2YWx1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQ+ID0gMD4KK2NvbnN0ZXhwciBhYnNsOjp3ZWFr
X29yZGVyaW5nIGRvX3RocmVlX3dheV9jb21wYXJpc29uKGNvbnN0IENvbXBhcmUgJmNvbXBhcmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBLICZ4LCBjb25zdCBMSyAmeSkgeworICByZXR1cm4gY29tcGFyZSh4LCB5KSA/IGFic2w6
OndlYWtfb3JkZXJpbmc6Omxlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgOiBjb21wYXJlKHks
IHgpID8gYWJzbDo6d2Vha19vcmRlcmluZzo6Z3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiBhYnNsOjp3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50OworfQor
Cit9ICAvLyBuYW1lc3BhY2UgY29tcGFyZV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
KworI2VuZGlmICAvLyBBQlNMX1RZUEVTX0NPTVBBUkVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzL2NvbXBhcmVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2NvbXBhcmVfdGVzdC5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYTg1NTQyMTkyNzQ5NGJmZDcyZWEyODIxN2NmOTg2OWVlYzdkYWQ5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvY29tcGFyZV90ZXN0LmNjCkBAIC0wLDAgKzEsMzExIEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wv
dHlwZXMvY29tcGFyZS5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvY2FzdHMuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIHsKKworLy8g
VGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgYSBidW5jaCBvZiBsaW50IHdhcm5pbmdzIHN1Z2dl
c3RpbmcgdGhhdCB3ZSB1c2UKKy8vIEVYUEVDVF9FUS9ldGMuLCB3aGljaCBkb2Vzbid0IHdvcmsg
aW4gdGhpcyBjYXNlIGJlY2F1c2UgdGhleSBjb252ZXJ0IHRoZSBgMGAKKy8vIHRvIGFuIGludCwg
d2hpY2ggY2FuJ3QgYmUgY29udmVydGVkIHRvIHRoZSB1bnNwZWNpZmllZCB6ZXJvIHR5cGUuCiti
b29sIElkZW50aXR5KGJvb2wgYikgeyByZXR1cm4gYjsgfQorCitURVNUKENvbXBhcmUsIFdlYWtF
cXVhbGl0eSkgeworICBFWFBFQ1RfVFJVRShJZGVudGl0eSh3ZWFrX2VxdWFsaXR5OjplcXVpdmFs
ZW50ID09IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA9PSB3ZWFrX2VxdWFsaXR5Ojpl
cXVpdmFsZW50KSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHdlYWtfZXF1YWxpdHk6Om5vbmVx
dWl2YWxlbnQgIT0gMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwICE9IHdlYWtfZXF1YWxp
dHk6Om5vbmVxdWl2YWxlbnQpKTsKK30KKworVEVTVChDb21wYXJlLCBTdHJvbmdFcXVhbGl0eSkg
eworICBFWFBFQ1RfVFJVRShJZGVudGl0eShzdHJvbmdfZXF1YWxpdHk6OmVxdWFsID09IDApKTsK
KyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA9PSBzdHJvbmdfZXF1YWxpdHk6OmVxdWFsKSk7Cisg
IEVYUEVDVF9UUlVFKElkZW50aXR5KHN0cm9uZ19lcXVhbGl0eTo6bm9uZXF1YWwgIT0gMCkpOwor
ICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwICE9IHN0cm9uZ19lcXVhbGl0eTo6bm9uZXF1YWwpKTsK
KyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoc3Ryb25nX2VxdWFsaXR5OjplcXVpdmFsZW50ID09IDAp
KTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA9PSBzdHJvbmdfZXF1YWxpdHk6OmVxdWl2YWxl
bnQpKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoc3Ryb25nX2VxdWFsaXR5Ojpub25lcXVpdmFs
ZW50ICE9IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCAhPSBzdHJvbmdfZXF1YWxpdHk6
Om5vbmVxdWl2YWxlbnQpKTsKK30KKworVEVTVChDb21wYXJlLCBQYXJ0aWFsT3JkZXJpbmcpIHsK
KyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkocGFydGlhbF9vcmRlcmluZzo6bGVzcyA8IDApKTsKKyAg
RVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA+IHBhcnRpYWxfb3JkZXJpbmc6Omxlc3MpKTsKKyAgRVhQ
RUNUX1RSVUUoSWRlbnRpdHkocGFydGlhbF9vcmRlcmluZzo6bGVzcyA8PSAwKSk7CisgIEVYUEVD
VF9UUlVFKElkZW50aXR5KDAgPj0gcGFydGlhbF9vcmRlcmluZzo6bGVzcykpOworICBFWFBFQ1Rf
VFJVRShJZGVudGl0eShwYXJ0aWFsX29yZGVyaW5nOjplcXVpdmFsZW50ID09IDApKTsKKyAgRVhQ
RUNUX1RSVUUoSWRlbnRpdHkoMCA9PSBwYXJ0aWFsX29yZGVyaW5nOjplcXVpdmFsZW50KSk7Cisg
IEVYUEVDVF9UUlVFKElkZW50aXR5KHBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXIgPiAwKSk7Cisg
IEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPCBwYXJ0aWFsX29yZGVyaW5nOjpncmVhdGVyKSk7Cisg
IEVYUEVDVF9UUlVFKElkZW50aXR5KHBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXIgPj0gMCkpOwor
ICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwIDw9IHBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXIpKTsK
KyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkocGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkICE9IDAp
KTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCAhPSBwYXJ0aWFsX29yZGVyaW5nOjp1bm9yZGVy
ZWQpKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KHBhcnRpYWxfb3JkZXJpbmc6OnVub3JkZXJl
ZCA8IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KDAgPCBwYXJ0aWFsX29yZGVyaW5nOjp1
bm9yZGVyZWQpKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KHBhcnRpYWxfb3JkZXJpbmc6OnVu
b3JkZXJlZCA8PSAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgwIDw9IHBhcnRpYWxfb3Jk
ZXJpbmc6OnVub3JkZXJlZCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkocGFydGlhbF9vcmRl
cmluZzo6dW5vcmRlcmVkID4gMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoMCA+IHBhcnRp
YWxfb3JkZXJpbmc6OnVub3JkZXJlZCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkocGFydGlh
bF9vcmRlcmluZzo6dW5vcmRlcmVkID49IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KDAg
Pj0gcGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkKSk7Cit9CisKK1RFU1QoQ29tcGFyZSwgV2Vh
a09yZGVyaW5nKSB7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHdlYWtfb3JkZXJpbmc6Omxlc3Mg
PCAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPiB3ZWFrX29yZGVyaW5nOjpsZXNzKSk7
CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHdlYWtfb3JkZXJpbmc6Omxlc3MgPD0gMCkpOworICBF
WFBFQ1RfVFJVRShJZGVudGl0eSgwID49IHdlYWtfb3JkZXJpbmc6Omxlc3MpKTsKKyAgRVhQRUNU
X1RSVUUoSWRlbnRpdHkod2Vha19vcmRlcmluZzo6ZXF1aXZhbGVudCA9PSAwKSk7CisgIEVYUEVD
VF9UUlVFKElkZW50aXR5KDAgPT0gd2Vha19vcmRlcmluZzo6ZXF1aXZhbGVudCkpOworICBFWFBF
Q1RfVFJVRShJZGVudGl0eSh3ZWFrX29yZGVyaW5nOjpncmVhdGVyID4gMCkpOworICBFWFBFQ1Rf
VFJVRShJZGVudGl0eSgwIDwgd2Vha19vcmRlcmluZzo6Z3JlYXRlcikpOworICBFWFBFQ1RfVFJV
RShJZGVudGl0eSh3ZWFrX29yZGVyaW5nOjpncmVhdGVyID49IDApKTsKKyAgRVhQRUNUX1RSVUUo
SWRlbnRpdHkoMCA8PSB3ZWFrX29yZGVyaW5nOjpncmVhdGVyKSk7Cit9CisKK1RFU1QoQ29tcGFy
ZSwgU3Ryb25nT3JkZXJpbmcpIHsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoc3Ryb25nX29yZGVy
aW5nOjpsZXNzIDwgMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwID4gc3Ryb25nX29yZGVy
aW5nOjpsZXNzKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHN0cm9uZ19vcmRlcmluZzo6bGVz
cyA8PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPj0gc3Ryb25nX29yZGVyaW5nOjps
ZXNzKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHN0cm9uZ19vcmRlcmluZzo6ZXF1YWwgPT0g
MCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwID09IHN0cm9uZ19vcmRlcmluZzo6ZXF1YWwp
KTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoc3Ryb25nX29yZGVyaW5nOjplcXVpdmFsZW50ID09
IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoMCA9PSBzdHJvbmdfb3JkZXJpbmc6OmVxdWl2
YWxlbnQpKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoc3Ryb25nX29yZGVyaW5nOjpncmVhdGVy
ID4gMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgwIDwgc3Ryb25nX29yZGVyaW5nOjpncmVh
dGVyKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KHN0cm9uZ19vcmRlcmluZzo6Z3JlYXRlciA+
PSAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KDAgPD0gc3Ryb25nX29yZGVyaW5nOjpncmVh
dGVyKSk7Cit9CisKK1RFU1QoQ29tcGFyZSwgQ29udmVyc2lvbnMpIHsKKyAgRVhQRUNUX1RSVUUo
CisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfZXF1YWxpdHk+KHN0cm9uZ19lcXVh
bGl0eTo6ZXF1YWwpID09IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBs
aWNpdF9jYXN0PHdlYWtfZXF1YWxpdHk+KHN0cm9uZ19lcXVhbGl0eTo6bm9uZXF1YWwpICE9IDAp
KTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfZXF1
YWxpdHk+KHN0cm9uZ19lcXVhbGl0eTo6ZXF1aXZhbGVudCkgPT0gMCkpOworICBFWFBFQ1RfVFJV
RShJZGVudGl0eSgKKyAgICAgIGltcGxpY2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4oc3Ryb25nX2Vx
dWFsaXR5Ojpub25lcXVpdmFsZW50KSAhPSAwKSk7CisKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJ
ZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfZXF1YWxpdHk+KHBhcnRpYWxfb3JkZXJpbmc6Omxl
c3MpICE9IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBpbXBsaWNpdF9jYXN0
PHdlYWtfZXF1YWxpdHk+KHBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQpID09IDApKTsKKyAg
RVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfZXF1YWxpdHk+
KHBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXIpICE9IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAg
ICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfZXF1YWxpdHk+KHBhcnRpYWxfb3JkZXJpbmc6
OnVub3JkZXJlZCkgIT0gMCkpOworCisgIEVYUEVDVF9UUlVFKGltcGxpY2l0X2Nhc3Q8d2Vha19l
cXVhbGl0eT4od2Vha19vcmRlcmluZzo6bGVzcykgIT0gMCk7CisgIEVYUEVDVF9UUlVFKAorICAg
ICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5Pih3ZWFrX29yZGVyaW5nOjpl
cXVpdmFsZW50KSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGlj
aXRfY2FzdDx3ZWFrX2VxdWFsaXR5Pih3ZWFrX29yZGVyaW5nOjpncmVhdGVyKSAhPSAwKSk7CisK
KyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHBhcnRpYWxfb3Jk
ZXJpbmc+KHdlYWtfb3JkZXJpbmc6Omxlc3MpICE9IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAg
ICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHBhcnRpYWxfb3JkZXJpbmc+KHdlYWtfb3JkZXJpbmc6
Omxlc3MpIDwgMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nh
c3Q8cGFydGlhbF9vcmRlcmluZz4od2Vha19vcmRlcmluZzo6bGVzcykgPD0gMCkpOworICBFWFBF
Q1RfVFJVRShJZGVudGl0eSgKKyAgICAgIGltcGxpY2l0X2Nhc3Q8cGFydGlhbF9vcmRlcmluZz4o
d2Vha19vcmRlcmluZzo6ZXF1aXZhbGVudCkgPT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAg
IElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8cGFydGlhbF9vcmRlcmluZz4od2Vha19vcmRlcmluZzo6
Z3JlYXRlcikgIT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0
X2Nhc3Q8cGFydGlhbF9vcmRlcmluZz4od2Vha19vcmRlcmluZzo6Z3JlYXRlcikgPiAwKSk7Cisg
IEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29yZGVy
aW5nPih3ZWFrX29yZGVyaW5nOjpncmVhdGVyKSA+PSAwKSk7CisKKyAgRVhQRUNUX1RSVUUoCisg
ICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfZXF1YWxpdHk+KHN0cm9uZ19vcmRlcmlu
Zzo6bGVzcykgIT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0
X2Nhc3Q8d2Vha19lcXVhbGl0eT4oc3Ryb25nX29yZGVyaW5nOjplcXVhbCkgPT0gMCkpOworICBF
WFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19lcXVhbGl0eT4o
c3Ryb25nX29yZGVyaW5nOjplcXVpdmFsZW50KSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAg
ICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX2VxdWFsaXR5PihzdHJvbmdfb3JkZXJpbmc6
OmdyZWF0ZXIpICE9IDApKTsKKworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxp
Y2l0X2Nhc3Q8c3Ryb25nX2VxdWFsaXR5PihzdHJvbmdfb3JkZXJpbmc6Omxlc3MpICE9IDApKTsK
KyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHN0cm9uZ19lcXVh
bGl0eT4oc3Ryb25nX29yZGVyaW5nOjplcXVhbCkgPT0gMCkpOworICBFWFBFQ1RfVFJVRShJZGVu
dGl0eSgKKyAgICAgIGltcGxpY2l0X2Nhc3Q8c3Ryb25nX2VxdWFsaXR5PihzdHJvbmdfb3JkZXJp
bmc6OmVxdWl2YWxlbnQpID09IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShp
bXBsaWNpdF9jYXN0PHN0cm9uZ19lcXVhbGl0eT4oc3Ryb25nX29yZGVyaW5nOjpncmVhdGVyKSAh
PSAwKSk7CisKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHBh
cnRpYWxfb3JkZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6bGVzcykgIT0gMCkpOworICBFWFBFQ1Rf
VFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8cGFydGlhbF9vcmRlcmluZz4oc3Ry
b25nX29yZGVyaW5nOjpsZXNzKSA8IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0
eShpbXBsaWNpdF9jYXN0PHBhcnRpYWxfb3JkZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6bGVzcykg
PD0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8cGFy
dGlhbF9vcmRlcmluZz4oc3Ryb25nX29yZGVyaW5nOjplcXVhbCkgPT0gMCkpOworICBFWFBFQ1Rf
VFJVRShJZGVudGl0eSgKKyAgICAgIGltcGxpY2l0X2Nhc3Q8cGFydGlhbF9vcmRlcmluZz4oc3Ry
b25nX29yZGVyaW5nOjplcXVpdmFsZW50KSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAg
SWRlbnRpdHkoaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6
OmdyZWF0ZXIpICE9IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNp
dF9jYXN0PHBhcnRpYWxfb3JkZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6Z3JlYXRlcikgPiAwKSk7
CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2FzdDxwYXJ0aWFsX29y
ZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6OmdyZWF0ZXIpID49IDApKTsKKworICBFWFBFQ1RfVFJV
RSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19vcmRlcmluZz4oc3Ryb25nX29y
ZGVyaW5nOjpsZXNzKSAhPSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1w
bGljaXRfY2FzdDx3ZWFrX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6Omxlc3MpIDwgMCkpOwor
ICBFWFBFQ1RfVFJVRSgKKyAgICAgIElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19vcmRlcmlu
Zz4oc3Ryb25nX29yZGVyaW5nOjpsZXNzKSA8PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAg
SWRlbnRpdHkoaW1wbGljaXRfY2FzdDx3ZWFrX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6OmVx
dWFsKSA9PSAwKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSWRlbnRpdHkoaW1wbGljaXRfY2Fz
dDx3ZWFrX29yZGVyaW5nPihzdHJvbmdfb3JkZXJpbmc6OmVxdWl2YWxlbnQpID09IDApKTsKKyAg
RVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9jYXN0PHdlYWtfb3JkZXJpbmc+
KHN0cm9uZ19vcmRlcmluZzo6Z3JlYXRlcikgIT0gMCkpOworICBFWFBFQ1RfVFJVRSgKKyAgICAg
IElkZW50aXR5KGltcGxpY2l0X2Nhc3Q8d2Vha19vcmRlcmluZz4oc3Ryb25nX29yZGVyaW5nOjpn
cmVhdGVyKSA+IDApKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBJZGVudGl0eShpbXBsaWNpdF9j
YXN0PHdlYWtfb3JkZXJpbmc+KHN0cm9uZ19vcmRlcmluZzo6Z3JlYXRlcikgPj0gMCkpOworfQor
CitzdHJ1Y3QgV2Vha09yZGVyaW5nTGVzcyB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBh
YnNsOjp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yKCkoY29uc3QgVCAmYSwgY29uc3QgVCAmYikgY29u
c3QgeworICAgIHJldHVybiBhIDwgYiA/IGFic2w6OndlYWtfb3JkZXJpbmc6Omxlc3MKKyAgICAg
ICAgICAgICAgICAgOiBhID09IGIgPyBhYnNsOjp3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogYWJzbDo6d2Vha19vcmRlcmluZzo6Z3JlYXRlcjsK
KyAgfQorfTsKKworVEVTVChDb21wYXJlUmVzdWx0QXNMZXNzVGhhbiwgU2FuaXR5VGVzdCkgewor
ICBFWFBFQ1RfRkFMU0UoYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNf
bGVzc190aGFuKGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6
OmNvbXBhcmVfcmVzdWx0X2FzX2xlc3NfdGhhbih0cnVlKSk7CisKKyAgRVhQRUNUX1RSVUUoCisg
ICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19sZXNzX3RoYW4o
d2Vha19vcmRlcmluZzo6bGVzcykpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6Y29tcGFyZV9pbnRl
cm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfbGVzc190aGFuKAorICAgICAgd2Vha19vcmRlcmluZzo6
ZXF1aXZhbGVudCkpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29t
cGFyZV9yZXN1bHRfYXNfbGVzc190aGFuKAorICAgICAgd2Vha19vcmRlcmluZzo6Z3JlYXRlcikp
OworfQorCitURVNUKERvTGVzc1RoYW5Db21wYXJpc29uLCBTYW5pdHlUZXN0KSB7CisgIHN0ZDo6
bGVzczxpbnQ+IGxlc3M7CisgIFdlYWtPcmRlcmluZ0xlc3Mgd2VhazsKKworICBFWFBFQ1RfVFJV
RShhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb19sZXNzX3RoYW5fY29tcGFyaXNvbihsZXNzLCAt
MSwgMCkpOworICBFWFBFQ1RfVFJVRShhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb19sZXNzX3Ro
YW5fY29tcGFyaXNvbih3ZWFrLCAtMSwgMCkpOworCisgIEVYUEVDVF9GQUxTRShhYnNsOjpjb21w
YXJlX2ludGVybmFsOjpkb19sZXNzX3RoYW5fY29tcGFyaXNvbihsZXNzLCAxMCwgMTApKTsKKyAg
RVhQRUNUX0ZBTFNFKGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX2xlc3NfdGhhbl9jb21wYXJp
c29uKHdlYWssIDEwLCAxMCkpOworCisgIEVYUEVDVF9GQUxTRShhYnNsOjpjb21wYXJlX2ludGVy
bmFsOjpkb19sZXNzX3RoYW5fY29tcGFyaXNvbihsZXNzLCAxMCwgNSkpOworICBFWFBFQ1RfRkFM
U0UoYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fbGVzc190aGFuX2NvbXBhcmlzb24od2Vhaywg
MTAsIDUpKTsKK30KKworVEVTVChDb21wYXJlUmVzdWx0QXNPcmRlcmluZywgU2FuaXR5VGVzdCkg
eworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6
OmNvbXBhcmVfcmVzdWx0X2FzX29yZGVyaW5nKC0xKSA8IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElk
ZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNf
b3JkZXJpbmcoLTEpID09IDApKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgSWRlbnRpdHkoYWJz
bDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoLTEpID4gMCkp
OworICBFWFBFQ1RfVFJVRShJZGVudGl0eShhYnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJl
X3Jlc3VsdF9hc19vcmRlcmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtfb3Jk
ZXJpbmc6Omxlc3MpIDwgMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoYWJzbDo6Y29tcGFy
ZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2Vha19vcmRlcmluZzo6bGVzcykgPT0gMCkpOworICBFWFBFQ1RfRkFMU0Uo
SWRlbnRpdHkoYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJp
bmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19vcmRlcmluZzo6bGVzcykgPiAw
KSk7CisKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRl
cm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3JkZXJpbmcoMCkgPCAwKSk7CisgIEVYUEVDVF9UUlVF
KElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRf
YXNfb3JkZXJpbmcoMCkgPT0gMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBh
YnNsOjpjb21wYXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygwKSA+IDAp
KTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBh
cmVfcmVzdWx0X2FzX29yZGVyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19v
cmRlcmluZzo6ZXF1aXZhbGVudCkgPCAwKSk7CisgIEVYUEVDVF9UUlVFKElkZW50aXR5KGFic2w6
OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX29yZGVyaW5nKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdlYWtfb3JkZXJpbmc6OmVxdWl2YWxlbnQpID09IDApKTsKKyAg
RVhQRUNUX0ZBTFNFKElkZW50aXR5KGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVz
dWx0X2FzX29yZGVyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtfb3JkZXJp
bmc6OmVxdWl2YWxlbnQpID4gMCkpOworCisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgKKyAgICAg
IGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmNvbXBhcmVfcmVzdWx0X2FzX29yZGVyaW5nKDEpIDwg
MCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21wYXJlX2ludGVy
bmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygxKSA9PSAwKSk7CisgIEVYUEVDVF9UUlVF
KElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRf
YXNfb3JkZXJpbmcoMSkgPiAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eShhYnNsOjpjb21w
YXJlX2ludGVybmFsOjpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdlYWtfb3JkZXJpbmc6OmdyZWF0ZXIpIDwgMCkpOworICBFWFBFQ1RfRkFM
U0UoSWRlbnRpdHkoYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6Y29tcGFyZV9yZXN1bHRfYXNfb3Jk
ZXJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha19vcmRlcmluZzo6Z3JlYXRl
cikgPT0gMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eShhYnNsOjpjb21wYXJlX2ludGVybmFs
Ojpjb21wYXJlX3Jlc3VsdF9hc19vcmRlcmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3ZWFrX29yZGVyaW5nOjpncmVhdGVyKSA+IDApKTsKK30KKworVEVTVChEb1RocmVlV2F5Q29t
cGFyaXNvbiwgU2FuaXR5VGVzdCkgeworICBzdGQ6Omxlc3M8aW50PiBsZXNzOworICBXZWFrT3Jk
ZXJpbmdMZXNzIHdlYWs7CisKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBhYnNsOjpj
b21wYXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbihsZXNzLCAtMSwgMCkgPCAw
KSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJu
YWw6OmRvX3RocmVlX3dheV9jb21wYXJpc29uKGxlc3MsIC0xLCAwKSA9PSAwKSk7CisgIEVYUEVD
VF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX3RocmVl
X3dheV9jb21wYXJpc29uKGxlc3MsIC0xLCAwKSA+IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRp
dHkoCisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNv
bih3ZWFrLCAtMSwgMCkgPCAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFi
c2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX3RocmVlX3dheV9jb21wYXJpc29uKHdlYWssIC0xLCAw
KSA9PSAwKSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVf
aW50ZXJuYWw6OmRvX3RocmVlX3dheV9jb21wYXJpc29uKHdlYWssIC0xLCAwKSA+IDApKTsKKwor
ICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpk
b190aHJlZV93YXlfY29tcGFyaXNvbihsZXNzLCAxMCwgMTApIDwgMCkpOworICBFWFBFQ1RfVFJV
RShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX3RocmVlX3dheV9j
b21wYXJpc29uKGxlc3MsIDEwLCAxMCkgPT0gMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHko
CisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbihs
ZXNzLCAxMCwgMTApID4gMCkpOworICBFWFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNs
Ojpjb21wYXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbih3ZWFrLCAxMCwgMTAp
IDwgMCkpOworICBFWFBFQ1RfVFJVRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50
ZXJuYWw6OmRvX3RocmVlX3dheV9jb21wYXJpc29uKHdlYWssIDEwLCAxMCkgPT0gMCkpOworICBF
WFBFQ1RfRkFMU0UoSWRlbnRpdHkoCisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb190
aHJlZV93YXlfY29tcGFyaXNvbih3ZWFrLCAxMCwgMTApID4gMCkpOworCisgIEVYUEVDVF9GQUxT
RShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJuYWw6OmRvX3RocmVlX3dheV9j
b21wYXJpc29uKGxlc3MsIDEwLCA1KSA8IDApKTsKKyAgRVhQRUNUX0ZBTFNFKElkZW50aXR5KAor
ICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVfd2F5X2NvbXBhcmlzb24obGVz
cywgMTAsIDUpID09IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRpdHkoCisgICAgICBhYnNsOjpj
b21wYXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNvbihsZXNzLCAxMCwgNSkgPiAw
KSk7CisgIEVYUEVDVF9GQUxTRShJZGVudGl0eSgKKyAgICAgIGFic2w6OmNvbXBhcmVfaW50ZXJu
YWw6OmRvX3RocmVlX3dheV9jb21wYXJpc29uKHdlYWssIDEwLCA1KSA8IDApKTsKKyAgRVhQRUNU
X0ZBTFNFKElkZW50aXR5KAorICAgICAgYWJzbDo6Y29tcGFyZV9pbnRlcm5hbDo6ZG9fdGhyZWVf
d2F5X2NvbXBhcmlzb24od2VhaywgMTAsIDUpID09IDApKTsKKyAgRVhQRUNUX1RSVUUoSWRlbnRp
dHkoCisgICAgICBhYnNsOjpjb21wYXJlX2ludGVybmFsOjpkb190aHJlZV93YXlfY29tcGFyaXNv
bih3ZWFrLCAxMCwgNSkgPiAwKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNw
YWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL29wdGlvbmFsLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlcy9pbnRlcm5hbC9vcHRpb25hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhY2JkYTIwZDU1OTVh
Y2ZlNzQ1OTAxM2JkZDk0Nzg5MmZkNjU4MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
cy9pbnRlcm5hbC9vcHRpb25hbC5oCkBAIC0wLDAgKzEsMzk0IEBACisvLyBDb3B5cmlnaHQgMjAx
NyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHBzOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisjaWZuZGVmIEFCU0xfVFlQRVNfSU5URVJOQUxf
T1BUSU9OQUxfSF8KKyNkZWZpbmUgQUJTTF9UWVBFU19JTlRFUk5BTF9PUFRJT05BTF9IXworCisj
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxuZXc+CisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9p
bmxpbmVfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNs
dWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3V0aWxpdHkvdXRp
bGl0eS5oIgorCisvLyBBQlNMX09QVElPTkFMX1VTRV9JTkhFUklUSU5HX0NPTlNUUlVDVE9SUwor
Ly8KKy8vIEluaGVyaXRpbmcgY29uc3RydWN0b3JzIGlzIHN1cHBvcnRlZCBpbiBHQ0MgNC44Kywg
Q2xhbmcgMy4zKyBhbmQgTVNWQyAyMDE1LgorLy8gX19jcHBfaW5oZXJpdGluZ19jb25zdHJ1Y3Rv
cnMgaXMgYSBwcmVkZWZpbmVkIG1hY3JvIGFuZCBhIHJlY29tbWVuZGVkIHdheSB0bworLy8gY2hl
Y2sgZm9yIHRoaXMgbGFuZ3VhZ2UgZmVhdHVyZSwgYnV0IEdDQyBkb2Vzbid0IHN1cHBvcnQgaXQg
dW50aWwgNS4wIGFuZAorLy8gQ2xhbmcgZG9lc24ndCBzdXBwb3J0IGl0IHVudGlsIDMuNi4KKy8v
IEFsc28sIE1TVkMgMjAxNSBoYXMgYSBidWc6IGl0IGRvZXNuJ3QgaW5oZXJpdCB0aGUgY29uc3Rl
eHByIHRlbXBsYXRlCisvLyBjb25zdHJ1Y3Rvci4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcg
Y29kZSB3b24ndCB3b3JrIG9uIE1TVkMgMjAxNSBVcGRhdGUzOgorLy8gc3RydWN0IEJhc2Ugewor
Ly8gICBpbnQgdDsKKy8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisvLyAgIGNvbnN0ZXhwciBC
YXNlKFQgdF8pIDogdCh0Xykge30KKy8vIH07CisvLyBzdHJ1Y3QgRm9vIDogQmFzZSB7CisvLyAg
IHVzaW5nIEJhc2U6OkJhc2U7CisvLyB9CisvLyBjb25zdGV4cHIgRm9vIGZvbygwKTsgIC8vIGRv
ZXNuJ3Qgd29yayBvbiBNU1ZDIDIwMTUKKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKyNpZiBfX2hh
c19mZWF0dXJlKGN4eF9pbmhlcml0aW5nX2NvbnN0cnVjdG9ycykKKyNkZWZpbmUgQUJTTF9PUFRJ
T05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMgMQorI2VuZGlmCisjZWxpZiAoZGVmaW5l
ZChfX0dOVUNfXykgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgKF9fR05VQ19fID4gNCB8fCBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49
IDgpKSB8fCBcCisgICAgKF9fY3BwX2luaGVyaXRpbmdfY29uc3RydWN0b3JzID49IDIwMDgwMikg
fHwgICAgICAgICAgICAgICAgICBcCisgICAgKGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVS
ID49IDE5MTApCisjZGVmaW5lIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNU
T1JTIDEKKyNlbmRpZgorCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIEZvcndhcmQgZGVjbGFyYXRp
b24KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mgb3B0aW9uYWw7CisKK25hbWVzcGFjZSBv
cHRpb25hbF9pbnRlcm5hbCB7CisKKy8vIFRoaXMgdGFnIHR5cGUgaXMgdXNlZCBhcyBhIGNvbnN0
cnVjdG9yIHBhcmFtZXRlciB0eXBlIGZvciBgbnVsbG9wdF90YC4KK3N0cnVjdCBpbml0X3Qgewor
ICBleHBsaWNpdCBpbml0X3QoKSA9IGRlZmF1bHQ7Cit9OworCitzdHJ1Y3QgZW1wdHlfc3RydWN0
IHt9OworCisvLyBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZGF0YSBpbiBvcHRpb25hbDxUPi4KKy8v
IEl0IGlzIHNwZWNpYWxpemVkIGJhc2VkIG9uIHdoZXRoZXIgVCBpcyB0cml2aWFsbHkgZGVzdHJ1
Y3RpYmxlLgorLy8gVGhpcyBpcyB0aGUgc3BlY2lhbGl6YXRpb24gZm9yIG5vbiB0cml2aWFsbHkg
ZGVzdHJ1Y3RpYmxlIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCB1bnVzZWQgPSBz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlPgorY2xhc3Mgb3B0aW9uYWxf
ZGF0YV9kdG9yX2Jhc2UgeworICBzdHJ1Y3QgZHVtbXlfdHlwZSB7CisgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoVCkgJSBzaXplb2YoZW1wdHlfc3RydWN0KSA9PSAwLCAiIik7CisgICAgLy8gVXNl
IGFuIGFycmF5IHRvIGF2b2lkIEdDQyA2IHBsYWNlbWVudC1uZXcgd2FybmluZy4KKyAgICBlbXB0
eV9zdHJ1Y3QgZGF0YVtzaXplb2YoVCkgLyBzaXplb2YoZW1wdHlfc3RydWN0KV07CisgIH07CisK
KyBwcm90ZWN0ZWQ6CisgIC8vIFdoZXRoZXIgdGhlcmUgaXMgZGF0YSBvciBub3QuCisgIGJvb2wg
ZW5nYWdlZF87CisgIC8vIERhdGEgc3RvcmFnZQorICB1bmlvbiB7CisgICAgZHVtbXlfdHlwZSBk
dW1teV87CisgICAgVCBkYXRhXzsKKyAgfTsKKworICB2b2lkIGRlc3RydWN0KCkgbm9leGNlcHQg
eworICAgIGlmIChlbmdhZ2VkXykgeworICAgICAgZGF0YV8uflQoKTsKKyAgICAgIGVuZ2FnZWRf
ID0gZmFsc2U7CisgICAgfQorICB9CisKKyAgLy8gZHVtbXlfIG11c3QgYmUgaW5pdGlhbGl6ZWQg
Zm9yIGNvbnN0ZXhwciBjb25zdHJ1Y3Rvci4KKyAgY29uc3RleHByIG9wdGlvbmFsX2RhdGFfZHRv
cl9iYXNlKCkgbm9leGNlcHQgOiBlbmdhZ2VkXyhmYWxzZSksIGR1bW15X3t7fX0ge30KKworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgY29uc3RleHByIGV4cGxpY2l0IG9wdGlvbmFs
X2RhdGFfZHRvcl9iYXNlKGluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBlbmdh
Z2VkXyh0cnVlKSwgZGF0YV8oYWJzbDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KKworICB+
b3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoKSB7IGRlc3RydWN0KCk7IH0KK307CisKKy8vIFNwZWNp
YWxpemF0aW9uIGZvciB0cml2aWFsbHkgZGVzdHJ1Y3RpYmxlIHR5cGUuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIG9wdGlvbmFsX2RhdGFfZHRvcl9iYXNlPFQsIHRydWU+IHsKKyAgc3Ry
dWN0IGR1bW15X3R5cGUgeworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpICUgc2l6ZW9mKGVt
cHR5X3N0cnVjdCkgPT0gMCwgIiIpOworICAgIC8vIFVzZSBhcnJheSB0byBhdm9pZCBHQ0MgNiBw
bGFjZW1lbnQtbmV3IHdhcm5pbmcuCisgICAgZW1wdHlfc3RydWN0IGRhdGFbc2l6ZW9mKFQpIC8g
c2l6ZW9mKGVtcHR5X3N0cnVjdCldOworICB9OworCisgcHJvdGVjdGVkOgorICAvLyBXaGV0aGVy
IHRoZXJlIGlzIGRhdGEgb3Igbm90LgorICBib29sIGVuZ2FnZWRfOworICAvLyBEYXRhIHN0b3Jh
Z2UKKyAgdW5pb24geworICAgIGR1bW15X3R5cGUgZHVtbXlfOworICAgIFQgZGF0YV87CisgIH07
CisgIHZvaWQgZGVzdHJ1Y3QoKSBub2V4Y2VwdCB7IGVuZ2FnZWRfID0gZmFsc2U7IH0KKworICAv
LyBkdW1teV8gbXVzdCBiZSBpbml0aWFsaXplZCBmb3IgY29uc3RleHByIGNvbnN0cnVjdG9yLgor
ICBjb25zdGV4cHIgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoKSBub2V4Y2VwdCA6IGVuZ2FnZWRf
KGZhbHNlKSwgZHVtbXlfe3t9fSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgor
ICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoaW5fcGxhY2VfdCwg
QXJncyYmLi4uIGFyZ3MpCisgICAgICA6IGVuZ2FnZWRfKHRydWUpLCBkYXRhXyhhYnNsOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFz
cyBvcHRpb25hbF9kYXRhX2Jhc2UgOiBwdWJsaWMgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2U8VD4g
eworIHByb3RlY3RlZDoKKyAgdXNpbmcgYmFzZSA9IG9wdGlvbmFsX2RhdGFfZHRvcl9iYXNlPFQ+
OworI2lmZGVmIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNUT1JTCisgIHVz
aW5nIGJhc2U6OmJhc2U7CisjZWxzZQorICBvcHRpb25hbF9kYXRhX2Jhc2UoKSA9IGRlZmF1bHQ7
CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIGNvbnN0ZXhwciBleHBsaWNpdCBv
cHRpb25hbF9kYXRhX2Jhc2UoaW5fcGxhY2VfdCB0LCBBcmdzJiYuLi4gYXJncykKKyAgICAgIDog
YmFzZSh0LCBhYnNsOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorI2VuZGlmCisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIHZvaWQgY29uc3RydWN0KEFyZ3MmJi4uLiBhcmdz
KSB7CisgICAgLy8gVXNlIGR1bW15XydzIGFkZHJlc3MgdG8gd29yayBhcm91bmQgY2FzdGluZyBj
di1xdWFsaWZpZWQgVCogdG8gdm9pZCouCisgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPigm
dGhpcy0+ZHVtbXlfKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHRoaXMt
PmVuZ2FnZWRfID0gdHJ1ZTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICB2b2lk
IGFzc2lnbihVJiYgdSkgeworICAgIGlmICh0aGlzLT5lbmdhZ2VkXykgeworICAgICAgdGhpcy0+
ZGF0YV8gPSBzdGQ6OmZvcndhcmQ8VT4odSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGNvbnN0cnVj
dChzdGQ6OmZvcndhcmQ8VT4odSkpOworICAgIH0KKyAgfQorfTsKKworLy8gVE9ETyhhYnNsLXRl
YW0pOiBBZGQgYW5vdGhlciBjbGFzcyB1c2luZworLy8gc3RkOjppc190cml2aWFsbHlfbW92ZV9j
b25zdHJ1Y3RpYmxlIHRyYWl0IHdoZW4gYXZhaWxhYmxlIHRvIG1hdGNoCisvLyBodHRwOi8vY3Bs
dXNwbHVzLmdpdGh1Yi5pby9MV0cvbHdnLWRlZmVjdHMuaHRtbCMyOTAwLCBmb3IgdHlwZXMgdGhh
dAorLy8gaGF2ZSB0cml2aWFsIG1vdmUgYnV0IG5vbnRyaXZpYWwgY29weS4KKy8vIEFsc28sIHdl
IHNob3VsZCBiZSBjaGVja2luZyBpc190cml2aWFsbHlfY29weWFibGUgaGVyZSwgd2hpY2ggaXMg
bm90CisvLyBzdXBwb3J0ZWQgbm93LCBzbyB3ZSB1c2UgaXNfdHJpdmlhbGx5XyogdHJhaXRzIGlu
c3RlYWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKKyAgICAgICAgICBib29sIHVudXNlZCA9IGFi
c2w6OmlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlJiYKKyAgICAgICAg
ICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jdjwKKyAgICAgICAgICAgICAgICAgIFQ+Ojp0eXBlPjo6dmFsdWUmJiBzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlPgorY2xhc3Mgb3B0aW9uYWxfZGF0YTsKKwor
Ly8gVHJpdmlhbGx5IGNvcHlhYmxlIHR5cGVzCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNz
IG9wdGlvbmFsX2RhdGE8VCwgdHJ1ZT4gOiBwdWJsaWMgb3B0aW9uYWxfZGF0YV9iYXNlPFQ+IHsK
KyBwcm90ZWN0ZWQ6CisjaWZkZWYgQUJTTF9PUFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJV
Q1RPUlMKKyAgdXNpbmcgb3B0aW9uYWxfZGF0YV9iYXNlPFQ+OjpvcHRpb25hbF9kYXRhX2Jhc2U7
CisjZWxzZQorICBvcHRpb25hbF9kYXRhKCkgPSBkZWZhdWx0OworCisgIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgorICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0YShpbl9wbGFj
ZV90IHQsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBvcHRpb25hbF9kYXRhX2Jhc2U8VD4odCwg
YWJzbDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KKyNlbmRpZgorfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitjbGFzcyBvcHRpb25hbF9kYXRhPFQsIGZhbHNlPiA6IHB1YmxpYyBvcHRp
b25hbF9kYXRhX2Jhc2U8VD4geworIHByb3RlY3RlZDoKKyNpZmRlZiBBQlNMX09QVElPTkFMX1VT
RV9JTkhFUklUSU5HX0NPTlNUUlVDVE9SUworICB1c2luZyBvcHRpb25hbF9kYXRhX2Jhc2U8VD46
Om9wdGlvbmFsX2RhdGFfYmFzZTsKKyNlbHNlCisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgorICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0YShpbl9wbGFjZV90IHQsIEFyZ3Mm
Ji4uLiBhcmdzKQorICAgICAgOiBvcHRpb25hbF9kYXRhX2Jhc2U8VD4odCwgYWJzbDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikge30KKyNlbmRpZgorCisgIG9wdGlvbmFsX2RhdGEoKSA9IGRlZmF1
bHQ7CisKKyAgb3B0aW9uYWxfZGF0YShjb25zdCBvcHRpb25hbF9kYXRhJiByaHMpIDogb3B0aW9u
YWxfZGF0YV9iYXNlPFQ+KCkgeworICAgIGlmIChyaHMuZW5nYWdlZF8pIHsKKyAgICAgIHRoaXMt
PmNvbnN0cnVjdChyaHMuZGF0YV8pOworICAgIH0KKyAgfQorCisgIG9wdGlvbmFsX2RhdGEob3B0
aW9uYWxfZGF0YSYmIHJocykgbm9leGNlcHQoCisgICAgICBhYnNsOjpkZWZhdWx0X2FsbG9jYXRv
cl9pc19ub3Rocm93Ojp2YWx1ZSB8fAorICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfY29uc3Ry
dWN0aWJsZTxUPjo6dmFsdWUpCisgICAgICA6IG9wdGlvbmFsX2RhdGFfYmFzZTxUPigpIHsKKyAg
ICBpZiAocmhzLmVuZ2FnZWRfKSB7CisgICAgICB0aGlzLT5jb25zdHJ1Y3Qoc3RkOjptb3ZlKHJo
cy5kYXRhXykpOworICAgIH0KKyAgfQorCisgIG9wdGlvbmFsX2RhdGEmIG9wZXJhdG9yPShjb25z
dCBvcHRpb25hbF9kYXRhJiByaHMpIHsKKyAgICBpZiAocmhzLmVuZ2FnZWRfKSB7CisgICAgICB0
aGlzLT5hc3NpZ24ocmhzLmRhdGFfKTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy0+ZGVzdHJ1
Y3QoKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgb3B0aW9uYWxfZGF0YSYg
b3BlcmF0b3I9KG9wdGlvbmFsX2RhdGEmJiByaHMpIG5vZXhjZXB0KAorICAgICAgc3RkOjppc19u
b3Rocm93X21vdmVfYXNzaWduYWJsZTxUPjo6dmFsdWUmJgorICAgICAgICAgIHN0ZDo6aXNfbm90
aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlKSB7CisgICAgaWYgKHJocy5lbmdhZ2Vk
XykgeworICAgICAgdGhpcy0+YXNzaWduKHN0ZDo6bW92ZShyaHMuZGF0YV8pKTsKKyAgICB9IGVs
c2UgeworICAgICAgdGhpcy0+ZGVzdHJ1Y3QoKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOwor
ICB9Cit9OworCisvLyBPcmRlcmVkIGJ5IGxldmVsIG9mIHJlc3RyaWN0aW9uLCBmcm9tIGxvdyB0
byBoaWdoLgorLy8gQ29weWFibGUgaW1wbGllcyBtb3ZhYmxlLgorZW51bSBjbGFzcyBjb3B5X3Ry
YWl0cyB7IGNvcHlhYmxlID0gMCwgbW92YWJsZSA9IDEsIG5vbl9tb3ZhYmxlID0gMiB9OworCisv
LyBCYXNlIGNsYXNzIGZvciBlbmFibGluZy9kaXNhYmxpbmcgY29weS9tb3ZlIGNvbnN0cnVjdG9y
LgordGVtcGxhdGUgPGNvcHlfdHJhaXRzPgorY2xhc3Mgb3B0aW9uYWxfY3Rvcl9iYXNlOworCit0
ZW1wbGF0ZSA8PgorY2xhc3Mgb3B0aW9uYWxfY3Rvcl9iYXNlPGNvcHlfdHJhaXRzOjpjb3B5YWJs
ZT4geworIHB1YmxpYzoKKyAgY29uc3RleHByIG9wdGlvbmFsX2N0b3JfYmFzZSgpID0gZGVmYXVs
dDsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlKGNvbnN0IG9wdGlvbmFsX2N0b3JfYmFzZSYpID0gZGVm
YXVsdDsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlKG9wdGlvbmFsX2N0b3JfYmFzZSYmKSA9IGRlZmF1
bHQ7CisgIG9wdGlvbmFsX2N0b3JfYmFzZSYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsX2N0b3Jf
YmFzZSYpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlJiBvcGVyYXRvcj0ob3B0aW9u
YWxfY3Rvcl9iYXNlJiYpID0gZGVmYXVsdDsKK307CisKK3RlbXBsYXRlIDw+CitjbGFzcyBvcHRp
b25hbF9jdG9yX2Jhc2U8Y29weV90cmFpdHM6Om1vdmFibGU+IHsKKyBwdWJsaWM6CisgIGNvbnN0
ZXhwciBvcHRpb25hbF9jdG9yX2Jhc2UoKSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFsX2N0b3JfYmFz
ZShjb25zdCBvcHRpb25hbF9jdG9yX2Jhc2UmKSA9IGRlbGV0ZTsKKyAgb3B0aW9uYWxfY3Rvcl9i
YXNlKG9wdGlvbmFsX2N0b3JfYmFzZSYmKSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFsX2N0b3JfYmFz
ZSYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsX2N0b3JfYmFzZSYpID0gZGVmYXVsdDsKKyAgb3B0
aW9uYWxfY3Rvcl9iYXNlJiBvcGVyYXRvcj0ob3B0aW9uYWxfY3Rvcl9iYXNlJiYpID0gZGVmYXVs
dDsKK307CisKK3RlbXBsYXRlIDw+CitjbGFzcyBvcHRpb25hbF9jdG9yX2Jhc2U8Y29weV90cmFp
dHM6Om5vbl9tb3ZhYmxlPiB7CisgcHVibGljOgorICBjb25zdGV4cHIgb3B0aW9uYWxfY3Rvcl9i
YXNlKCkgPSBkZWZhdWx0OworICBvcHRpb25hbF9jdG9yX2Jhc2UoY29uc3Qgb3B0aW9uYWxfY3Rv
cl9iYXNlJikgPSBkZWxldGU7CisgIG9wdGlvbmFsX2N0b3JfYmFzZShvcHRpb25hbF9jdG9yX2Jh
c2UmJikgPSBkZWxldGU7CisgIG9wdGlvbmFsX2N0b3JfYmFzZSYgb3BlcmF0b3I9KGNvbnN0IG9w
dGlvbmFsX2N0b3JfYmFzZSYpID0gZGVmYXVsdDsKKyAgb3B0aW9uYWxfY3Rvcl9iYXNlJiBvcGVy
YXRvcj0ob3B0aW9uYWxfY3Rvcl9iYXNlJiYpID0gZGVmYXVsdDsKK307CisKKy8vIEJhc2UgY2xh
c3MgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBjb3B5L21vdmUgYXNzaWdubWVudC4KK3RlbXBsYXRl
IDxjb3B5X3RyYWl0cz4KK2NsYXNzIG9wdGlvbmFsX2Fzc2lnbl9iYXNlOworCit0ZW1wbGF0ZSA8
PgorY2xhc3Mgb3B0aW9uYWxfYXNzaWduX2Jhc2U8Y29weV90cmFpdHM6OmNvcHlhYmxlPiB7Cisg
cHVibGljOgorICBjb25zdGV4cHIgb3B0aW9uYWxfYXNzaWduX2Jhc2UoKSA9IGRlZmF1bHQ7Cisg
IG9wdGlvbmFsX2Fzc2lnbl9iYXNlKGNvbnN0IG9wdGlvbmFsX2Fzc2lnbl9iYXNlJikgPSBkZWZh
dWx0OworICBvcHRpb25hbF9hc3NpZ25fYmFzZShvcHRpb25hbF9hc3NpZ25fYmFzZSYmKSA9IGRl
ZmF1bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxf
YXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiBvcGVyYXRv
cj0ob3B0aW9uYWxfYXNzaWduX2Jhc2UmJikgPSBkZWZhdWx0OworfTsKKwordGVtcGxhdGUgPD4K
K2NsYXNzIG9wdGlvbmFsX2Fzc2lnbl9iYXNlPGNvcHlfdHJhaXRzOjptb3ZhYmxlPiB7CisgcHVi
bGljOgorICBjb25zdGV4cHIgb3B0aW9uYWxfYXNzaWduX2Jhc2UoKSA9IGRlZmF1bHQ7CisgIG9w
dGlvbmFsX2Fzc2lnbl9iYXNlKGNvbnN0IG9wdGlvbmFsX2Fzc2lnbl9iYXNlJikgPSBkZWZhdWx0
OworICBvcHRpb25hbF9hc3NpZ25fYmFzZShvcHRpb25hbF9hc3NpZ25fYmFzZSYmKSA9IGRlZmF1
bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxfYXNz
aWduX2Jhc2UmKSA9IGRlbGV0ZTsKKyAgb3B0aW9uYWxfYXNzaWduX2Jhc2UmIG9wZXJhdG9yPShv
cHRpb25hbF9hc3NpZ25fYmFzZSYmKSA9IGRlZmF1bHQ7Cit9OworCit0ZW1wbGF0ZSA8PgorY2xh
c3Mgb3B0aW9uYWxfYXNzaWduX2Jhc2U8Y29weV90cmFpdHM6Om5vbl9tb3ZhYmxlPiB7CisgcHVi
bGljOgorICBjb25zdGV4cHIgb3B0aW9uYWxfYXNzaWduX2Jhc2UoKSA9IGRlZmF1bHQ7CisgIG9w
dGlvbmFsX2Fzc2lnbl9iYXNlKGNvbnN0IG9wdGlvbmFsX2Fzc2lnbl9iYXNlJikgPSBkZWZhdWx0
OworICBvcHRpb25hbF9hc3NpZ25fYmFzZShvcHRpb25hbF9hc3NpZ25fYmFzZSYmKSA9IGRlZmF1
bHQ7CisgIG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxfYXNz
aWduX2Jhc2UmKSA9IGRlbGV0ZTsKKyAgb3B0aW9uYWxfYXNzaWduX2Jhc2UmIG9wZXJhdG9yPShv
cHRpb25hbF9hc3NpZ25fYmFzZSYmKSA9IGRlbGV0ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorc3RydWN0IGN0b3JfY29weV90cmFpdHMgeworICBzdGF0aWMgY29uc3RleHByIGNvcHlf
dHJhaXRzIHRyYWl0cyA9CisgICAgICBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxUPjo6dmFs
dWUKKyAgICAgICAgICA/IGNvcHlfdHJhaXRzOjpjb3B5YWJsZQorICAgICAgICAgIDogc3RkOjpp
c19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlID8gY29weV90cmFpdHM6Om1vdmFibGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvcHlfdHJh
aXRzOjpub25fbW92YWJsZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGFz
c2lnbl9jb3B5X3RyYWl0cyB7CisgIHN0YXRpYyBjb25zdGV4cHIgY29weV90cmFpdHMgdHJhaXRz
ID0KKyAgICAgIGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxUPjo6dmFsdWUgJiYgc3RkOjppc19j
b3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlCisgICAgICAgICAgPyBjb3B5X3RyYWl0czo6Y29w
eWFibGUKKyAgICAgICAgICA6IGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxUPjo6dmFsdWUgJiYK
KyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVl
CisgICAgICAgICAgICAgICAgPyBjb3B5X3RyYWl0czo6bW92YWJsZQorICAgICAgICAgICAgICAg
IDogY29weV90cmFpdHM6Om5vbl9tb3ZhYmxlOworfTsKKworLy8gV2hldGhlciBUIGlzIGNvbnN0
cnVjdGlibGUgb3IgY29udmVydGlibGUgZnJvbSBvcHRpb25hbDxVPi4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgorc3RydWN0IGlzX2NvbnN0cnVjdGlibGVfY29udmVydGlibGVf
ZnJvbV9vcHRpb25hbAorICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDwKKyAgICAgICAgICBi
b29sLCBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgb3B0aW9uYWw8VT4mPjo6dmFsdWUgfHwKKyAg
ICAgICAgICAgICAgICAgICAgc3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIG9wdGlvbmFsPFU+JiY+
Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwg
Y29uc3Qgb3B0aW9uYWw8VT4mPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpp
c19jb25zdHJ1Y3RpYmxlPFQsIGNvbnN0IG9wdGlvbmFsPFU+JiY+Ojp2YWx1ZSB8fAorICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPG9wdGlvbmFsPFU+JiwgVD46OnZhbHVl
IHx8CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGU8b3B0aW9uYWw8VT4m
JiwgVD46OnZhbHVlIHx8CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGU8
Y29uc3Qgb3B0aW9uYWw8VT4mLCBUPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3Rk
Ojppc19jb252ZXJ0aWJsZTxjb25zdCBvcHRpb25hbDxVPiYmLCBUPjo6dmFsdWU+IHt9OworCisv
LyBXaGV0aGVyIFQgaXMgY29uc3RydWN0aWJsZSBvciBjb252ZXJ0aWJsZSBvciBhc3NpZ25hYmxl
IGZyb20gb3B0aW9uYWw8VT4uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3N0
cnVjdCBpc19jb25zdHJ1Y3RpYmxlX2NvbnZlcnRpYmxlX2Fzc2lnbmFibGVfZnJvbV9vcHRpb25h
bAorICAgIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDwKKyAgICAgICAgICBib29sLCBpc19jb25z
dHJ1Y3RpYmxlX2NvbnZlcnRpYmxlX2Zyb21fb3B0aW9uYWw8VCwgVT46OnZhbHVlIHx8CisgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfYXNzaWduYWJsZTxUJiwgb3B0aW9uYWw8VT4mPjo6dmFs
dWUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19hc3NpZ25hYmxlPFQmLCBvcHRpb25h
bDxVPiYmPjo6dmFsdWUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppc19hc3NpZ25hYmxl
PFQmLCBjb25zdCBvcHRpb25hbDxVPiY+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX2Fzc2lnbmFibGU8VCYsIGNvbnN0IG9wdGlvbmFsPFU+JiY+Ojp2YWx1ZT4ge307CisK
Ky8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IFtvcHRpb25hbC5yZWxvcHNdLCBbb3B0aW9uYWwu
Y29tcF93aXRoX3RdLAorLy8gZm9yIGNoZWNraW5nIHdoZXRoZXIgYW4gZXhwcmVzc2lvbiBpcyBj
b252ZXJ0aWJsZSB0byBib29sLgorYm9vbCBjb252ZXJ0aWJsZV90b19ib29sKGJvb2wpOworCisv
LyBCYXNlIGNsYXNzIGZvciBzdGQ6Omhhc2g8YWJzbDo6b3B0aW9uYWw8VD4+OgorLy8gSWYgc3Rk
OjpoYXNoPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8VD4+IGlzIGVuYWJsZWQsIGl0IHByb3ZpZGVzIG9w
ZXJhdG9yKCkgdG8KKy8vIGNvbXB1dGUgdGhlIGhhc2g7IE90aGVyd2lzZSwgaXQgaXMgZGlzYWJs
ZWQuCisvLyBSZWZlcmVuY2UgTjQ2NTkgMjMuMTQuMTUgW3Vub3JkLmhhc2hdLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc2l6ZV90Pgorc3RydWN0IG9wdGlvbmFsX2hhc2hfYmFz
ZSB7CisgIG9wdGlvbmFsX2hhc2hfYmFzZSgpID0gZGVsZXRlOworICBvcHRpb25hbF9oYXNoX2Jh
c2UoY29uc3Qgb3B0aW9uYWxfaGFzaF9iYXNlJikgPSBkZWxldGU7CisgIG9wdGlvbmFsX2hhc2hf
YmFzZShvcHRpb25hbF9oYXNoX2Jhc2UmJikgPSBkZWxldGU7CisgIG9wdGlvbmFsX2hhc2hfYmFz
ZSYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsX2hhc2hfYmFzZSYpID0gZGVsZXRlOworICBvcHRp
b25hbF9oYXNoX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9oYXNoX2Jhc2UmJikgPSBkZWxldGU7
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBvcHRpb25hbF9oYXNoX2Jhc2U8
VCwgZGVjbHR5cGUoc3RkOjpoYXNoPGFic2w6OnJlbW92ZV9jb25zdF90PFQ+ID4oKSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxhYnNsOjpyZW1vdmVfY29u
c3RfdDxUPiA+KCkpKT4geworICB1c2luZyBhcmd1bWVudF90eXBlID0gYWJzbDo6b3B0aW9uYWw8
VD47CisgIHVzaW5nIHJlc3VsdF90eXBlID0gc2l6ZV90OworICBzaXplX3Qgb3BlcmF0b3IoKShj
b25zdCBhYnNsOjpvcHRpb25hbDxUPiYgb3B0KSBjb25zdCB7CisgICAgYWJzbDo6dHlwZV90cmFp
dHNfaW50ZXJuYWw6OkFzc2VydEhhc2hFbmFibGVkPGFic2w6OnJlbW92ZV9jb25zdF90PFQ+Pigp
OworICAgIGlmIChvcHQpIHsKKyAgICAgIHJldHVybiBzdGQ6Omhhc2g8YWJzbDo6cmVtb3ZlX2Nv
bnN0X3Q8VD4gPigpKCpvcHQpOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8c2l6ZV90PigweDI5NzgxNGFhYWQxOTZlNmRVTEwpOworICAgIH0KKyAgfQorfTsKKworfSAg
Ly8gbmFtZXNwYWNlIG9wdGlvbmFsX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
dW5kZWYgQUJTTF9PUFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMKKworI2VuZGlm
ICAvLyBBQlNMX1RZUEVTX0lOVEVSTkFMX09QVElPTkFMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
eXBlcy9pbnRlcm5hbC9zcGFuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9pbnRlcm5hbC9zcGFuLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDIwM2FhZDU5MTY1MzZjZWFlMzllNGEyMzhjYzg3MjQyMWE1OGM1NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3NwYW4uaApAQCAtMCwwICsxLDEyNiBAQAor
Ly8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKyNpZm5kZWYg
QUJTTF9UWVBFU19JTlRFUk5BTF9TUEFOX0hfCisjZGVmaW5lIEFCU0xfVFlQRVNfSU5URVJOQUxf
U1BBTl9IXworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5j
bHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9h
bGdvcml0aG0vYWxnb3JpdGhtLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Rocm93
X2RlbGVnYXRlLmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisKK25hbWVz
cGFjZSBhYnNsIHsKKworbmFtZXNwYWNlIHNwYW5faW50ZXJuYWwgeworLy8gQSBjb25zdGV4cHIg
bWluIGZ1bmN0aW9uCitjb25zdGV4cHIgc2l6ZV90IE1pbihzaXplX3QgYSwgc2l6ZV90IGIpIG5v
ZXhjZXB0IHsgcmV0dXJuIGEgPCBiID8gYSA6IGI7IH0KKworLy8gV3JhcHBlcnMgZm9yIGFjY2Vz
cyB0byBjb250YWluZXIgZGF0YSBwb2ludGVycy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDPgorY29u
c3RleHByIGF1dG8gR2V0RGF0YUltcGwoQyYgYywgY2hhcikgbm9leGNlcHQgIC8vIE5PTElOVChy
dW50aW1lL3JlZmVyZW5jZXMpCisgICAgLT4gZGVjbHR5cGUoYy5kYXRhKCkpIHsKKyAgcmV0dXJu
IGMuZGF0YSgpOworfQorCisvLyBCZWZvcmUgQysrMTcsIHN0ZDo6c3RyaW5nOjpkYXRhIHJldHVy
bnMgYSBjb25zdCBjaGFyKiBpbiBhbGwgY2FzZXMuCitpbmxpbmUgY2hhciogR2V0RGF0YUltcGwo
c3RkOjpzdHJpbmcmIHMsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCkgbm9leGNlcHQgeworICByZXR1cm4gJnNbMF07Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDPgorY29uc3RleHByIGF1dG8gR2V0RGF0YShDJiBjKSBub2V4Y2Vw
dCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKKyAgICAtPiBkZWNsdHlwZShHZXREYXRh
SW1wbChjLCAwKSkgeworICByZXR1cm4gR2V0RGF0YUltcGwoYywgMCk7Cit9CisKKy8vIERldGVj
dGlvbiBpZGlvbXMgZm9yIHNpemUoKSBhbmQgZGF0YSgpLgordGVtcGxhdGUgPHR5cGVuYW1lIEM+
Cit1c2luZyBIYXNTaXplID0KKyAgICBzdGQ6OmlzX2ludGVncmFsPGFic2w6OmRlY2F5X3Q8ZGVj
bHR5cGUoc3RkOjpkZWNsdmFsPEMmPigpLnNpemUoKSk+PjsKKworLy8gV2Ugd2FudCB0byBlbmFi
bGUgY29udmVyc2lvbiBmcm9tIHZlY3RvcjxUKj4gdG8gU3Bhbjxjb25zdCBUKiBjb25zdD4gYnV0
CisvLyBkaXNhYmxlIGNvbnZlcnNpb24gZnJvbSB2ZWN0b3I8RGVyaXZlZD4gdG8gU3BhbjxCYXNl
Pi4gSGVyZSB3ZSB1c2UKKy8vIHRoZSBmYWN0IHRoYXQgVSoqIGlzIGNvbnZlcnRpYmxlIHRvIFEq
IGNvbnN0KiBpZiBhbmQgb25seSBpZiBRIGlzIHRoZSBzYW1lCisvLyB0eXBlIG9yIGEgbW9yZSBj
di1xdWFsaWZpZWQgdmVyc2lvbiBvZiBVLiAgV2UgYWxzbyBkZWNheSB0aGUgcmVzdWx0IHR5cGUg
b2YKKy8vIGRhdGEoKSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIGNsYXNzZXMgd2hpY2ggaGF2ZSBh
IG1lbWJlciBmdW5jdGlvbiBkYXRhKCkKKy8vIHdoaWNoIHJldHVybnMgYSByZWZlcmVuY2UuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4KK3VzaW5nIEhhc0RhdGEgPQorICAgIHN0
ZDo6aXNfY29udmVydGlibGU8YWJzbDo6ZGVjYXlfdDxkZWNsdHlwZShHZXREYXRhKHN0ZDo6ZGVj
bHZhbDxDJj4oKSkpPiosCisgICAgICAgICAgICAgICAgICAgICAgICBUKiBjb25zdCo+OworCisv
LyBFeHRyYWN0cyB2YWx1ZSB0eXBlIGZyb20gYSBDb250YWluZXIKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDPgorc3RydWN0IEVsZW1lbnRUeXBlIHsKKyAgdXNpbmcgdHlwZSA9IHR5cGVuYW1lIGFic2w6
OnJlbW92ZV9yZWZlcmVuY2VfdDxDPjo6dmFsdWVfdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCBzaXplX3QgTj4KK3N0cnVjdCBFbGVtZW50VHlwZTxUICgmKVtOXT4geworICB1c2lu
ZyB0eXBlID0gVDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDPgordXNpbmcgRWxlbWVudFQg
PSB0eXBlbmFtZSBFbGVtZW50VHlwZTxDPjo6dHlwZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cit1c2luZyBFbmFibGVJZk11dGFibGUgPQorICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFz
dGQ6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwgaW50Pjo6dHlwZTsKKwordGVtcGxhdGUgPHRlbXBsYXRl
IDx0eXBlbmFtZT4gY2xhc3MgU3BhblQsIHR5cGVuYW1lIFQ+Citib29sIEVxdWFsSW1wbChTcGFu
VDxUPiBhLCBTcGFuVDxUPiBiKSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19jb25zdDxUPjo6
dmFsdWUsICIiKTsKKyAgcmV0dXJuIGFic2w6OmVxdWFsKGEuYmVnaW4oKSwgYS5lbmQoKSwgYi5i
ZWdpbigpLCBiLmVuZCgpKTsKK30KKwordGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBlbmFtZT4gY2xh
c3MgU3BhblQsIHR5cGVuYW1lIFQ+Citib29sIExlc3NUaGFuSW1wbChTcGFuVDxUPiBhLCBTcGFu
VDxUPiBiKSB7CisgIC8vIFdlIGNhbid0IHVzZSB2YWx1ZV90eXBlIHNpbmNlIHRoYXQgaXMgcmVt
b3ZlX2N2X3Q8VD4sIHNvIHdlIGdvIHRoZSBsb25nIHdheQorICAvLyBhcm91bmQuCisgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19jb25zdDxUPjo6dmFsdWUsICIiKTsKKyAgcmV0dXJuIHN0ZDo6bGV4
aWNvZ3JhcGhpY2FsX2NvbXBhcmUoYS5iZWdpbigpLCBhLmVuZCgpLCBiLmJlZ2luKCksIGIuZW5k
KCkpOworfQorCisvLyBUaGUgYElzQ29udmVydGlibGVgIGNsYXNzZXMgaGVyZSBhcmUgbmVlZGVk
IGJlY2F1c2Ugb2YgdGhlCisvLyBgc3RkOjppc19jb252ZXJ0aWJsZWAgYnVnIGluIGxpYmN4eCB3
aGVuIGNvbXBpbGVkIHdpdGggR0NDLiBUaGlzIGJ1aWxkCisvLyBjb25maWd1cmF0aW9uIGlzIHVz
ZWQgYnkgQW5kcm9pZCBOREsgdG9vbGNoYWluLiBSZWZlcmVuY2UgbGluazoKKy8vIGh0dHBzOi8v
YnVncy5sbHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1MzguCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnJvbSwgdHlwZW5hbWUgVG8+CitzdHJ1Y3QgSXNDb252ZXJ0aWJsZUhlbHBlciB7CisgcHJpdmF0
ZToKKyAgc3RhdGljIHN0ZDo6dHJ1ZV90eXBlIHRlc3R2YWwoVG8pOworICBzdGF0aWMgc3RkOjpm
YWxzZV90eXBlIHRlc3R2YWwoLi4uKTsKKworIHB1YmxpYzoKKyAgdXNpbmcgdHlwZSA9IGRlY2x0
eXBlKHRlc3R2YWwoc3RkOjpkZWNsdmFsPEZyb20+KCkpKTsKK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KK3N0cnVjdCBJc0NvbnZlcnRpYmxlIDogSXNDb252ZXJ0
aWJsZUhlbHBlcjxGcm9tLCBUbz46OnR5cGUge307CisKKy8vIFRPRE8oemhhbmd4eSk6IHJlcGxh
Y2UgYElzQ29udmVydGlibGVgIHdpdGggYHN0ZDo6aXNfY29udmVydGlibGVgIG9uY2UgdGhlCisv
LyBvbGRlciB2ZXJzaW9uIG9mIGxpYmN4eCBpcyBub3Qgc3VwcG9ydGVkLgordGVtcGxhdGUgPHR5
cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgordXNpbmcgRW5hYmxlSWZDb252ZXJ0aWJsZVRvID0K
KyAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc0NvbnZlcnRpYmxlPEZyb20sIFRvPjo6dmFs
dWU+Ojp0eXBlOworfSAgLy8gbmFtZXNwYWNlIHNwYW5faW50ZXJuYWwKK30gIC8vIG5hbWVzcGFj
ZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9UWVBFU19JTlRFUk5BTF9TUEFOX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9pbnRlcm5hbC92YXJpYW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9pbnRlcm5h
bC92YXJpYW50LmgKaW5kZXggZWZmNGZlZmVkNDA5ZDkyZDUwN2RiYTg2NjlmZTEyMzFlZDRjYjE1
ZS4uMTlkZTJlMTM3NTkzNjMyMmM5YmZiMjFhMDFjZWViZjA3Y2Y0MmEzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXMvaW50ZXJuYWwvdmFyaWFudC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFs
L3ZhcmlhbnQuaApAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAt
MjA0LDcgKzIwNCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBPcCwgY2xhc3MuLi4gVnM+CiB1c2luZyBW
aXNpdEluZGljZXNSZXN1bHRUID0gdHlwZW5hbWUgVmlzaXRJbmRpY2VzUmVzdWx0SW1wbDxPcCwg
VnMuLi4+Ojp0eXBlOwogCiB0ZW1wbGF0ZSA8Y2xhc3MgUmV0dXJuVHlwZSwgY2xhc3MgRnVuY3Rp
b25PYmplY3QsIGNsYXNzIEVuZEluZGljZXMsCi0gICAgICAgICAgc3RkOjpzaXplX3QuLi4gQm91
bmRJbmRpY2VzPgorICAgICAgICAgIGNsYXNzIEJvdW5kSW5kaWNlcz4KIHN0cnVjdCBNYWtlVmlz
aXRhdGlvbk1hdHJpeDsKIAogdGVtcGxhdGUgPGNsYXNzIFJldHVyblR5cGUsIGNsYXNzIEZ1bmN0
aW9uT2JqZWN0LCBzdGQ6OnNpemVfdC4uLiBJbmRpY2VzPgpAQCAtMjE4LDcgKzIxOCw3IEBAIGNv
bnN0ZXhwciBSZXR1cm5UeXBlIGNhbGxfd2l0aF9pbmRpY2VzKEZ1bmN0aW9uT2JqZWN0JiYgZnVu
Y3Rpb24pIHsKIAogdGVtcGxhdGUgPGNsYXNzIFJldHVyblR5cGUsIGNsYXNzIEZ1bmN0aW9uT2Jq
ZWN0LCBzdGQ6OnNpemVfdC4uLiBCb3VuZEluZGljZXM+CiBzdHJ1Y3QgTWFrZVZpc2l0YXRpb25N
YXRyaXg8UmV0dXJuVHlwZSwgRnVuY3Rpb25PYmplY3QsIGluZGV4X3NlcXVlbmNlPD4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQm91bmRJbmRpY2VzLi4uPiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5kZXhfc2VxdWVuY2U8Qm91bmRJbmRpY2VzLi4uPj4gewogICB1c2lu
ZyBSZXN1bHRUeXBlID0gUmV0dXJuVHlwZSAoKikoRnVuY3Rpb25PYmplY3QmJik7CiAgIHN0YXRp
YyBjb25zdGV4cHIgUmVzdWx0VHlwZSBSdW4oKSB7CiAgICAgcmV0dXJuICZjYWxsX3dpdGhfaW5k
aWNlczxSZXR1cm5UeXBlLCBGdW5jdGlvbk9iamVjdCwKQEAgLTIyNiwyNCArMjI2LDM0IEBAIHN0
cnVjdCBNYWtlVmlzaXRhdGlvbk1hdHJpeDxSZXR1cm5UeXBlLCBGdW5jdGlvbk9iamVjdCwgaW5k
ZXhfc2VxdWVuY2U8PiwKICAgfQogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIElzLCBzdGQ6OnNp
emVfdCBKPgorc3RydWN0IEFwcGVuZFRvSW5kZXhTZXF1ZW5jZTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIElzLCBzdGQ6OnNpemVfdCBKPgordXNpbmcgQXBwZW5kVG9JbmRleFNlcXVlbmNlVCA9IHR5
cGVuYW1lIEFwcGVuZFRvSW5kZXhTZXF1ZW5jZTxJcywgSj46OnR5cGU7CisKK3RlbXBsYXRlIDxz
dGQ6OnNpemVfdC4uLiBJcywgc3RkOjpzaXplX3QgSj4KK3N0cnVjdCBBcHBlbmRUb0luZGV4U2Vx
dWVuY2U8aW5kZXhfc2VxdWVuY2U8SXMuLi4+LCBKPiB7CisgIHVzaW5nIHR5cGUgPSBpbmRleF9z
ZXF1ZW5jZTxJcy4uLiwgSj47Cit9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgUmV0dXJuVHlwZSwgY2xh
c3MgRnVuY3Rpb25PYmplY3QsIGNsYXNzIEVuZEluZGljZXMsCi0gICAgICAgICAgY2xhc3MgQ3Vy
ckluZGljZXMsIHN0ZDo6c2l6ZV90Li4uIEJvdW5kSW5kaWNlcz4KKyAgICAgICAgICBjbGFzcyBD
dXJySW5kaWNlcywgY2xhc3MgQm91bmRJbmRpY2VzPgogc3RydWN0IE1ha2VWaXNpdGF0aW9uTWF0
cml4SW1wbDsKIAotdGVtcGxhdGUgPGNsYXNzIFJldHVyblR5cGUsIGNsYXNzIEZ1bmN0aW9uT2Jq
ZWN0LCBzdGQ6OnNpemVfdC4uLiBFbmRJbmRpY2VzLAotICAgICAgICAgIHN0ZDo6c2l6ZV90Li4u
IEN1cnJJbmRpY2VzLCBzdGQ6OnNpemVfdC4uLiBCb3VuZEluZGljZXM+Ci1zdHJ1Y3QgTWFrZVZp
c2l0YXRpb25NYXRyaXhJbXBsPAotICAgIFJldHVyblR5cGUsIEZ1bmN0aW9uT2JqZWN0LCBpbmRl
eF9zZXF1ZW5jZTxFbmRJbmRpY2VzLi4uPiwKLSAgICBpbmRleF9zZXF1ZW5jZTxDdXJySW5kaWNl
cy4uLj4sIEJvdW5kSW5kaWNlcy4uLj4gewordGVtcGxhdGUgPGNsYXNzIFJldHVyblR5cGUsIGNs
YXNzIEZ1bmN0aW9uT2JqZWN0LCBjbGFzcyBFbmRJbmRpY2VzLAorICAgICAgICAgIHN0ZDo6c2l6
ZV90Li4uIEN1cnJJbmRpY2VzLCBjbGFzcyBCb3VuZEluZGljZXM+CitzdHJ1Y3QgTWFrZVZpc2l0
YXRpb25NYXRyaXhJbXBsPFJldHVyblR5cGUsIEZ1bmN0aW9uT2JqZWN0LCBFbmRJbmRpY2VzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleF9zZXF1ZW5jZTxDdXJySW5kaWNl
cy4uLj4sIEJvdW5kSW5kaWNlcz4gewogICB1c2luZyBSZXN1bHRUeXBlID0gU2ltcGxlQXJyYXk8
Ci0gICAgICB0eXBlbmFtZSBNYWtlVmlzaXRhdGlvbk1hdHJpeDxSZXR1cm5UeXBlLCBGdW5jdGlv
bk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4X3NlcXVl
bmNlPEVuZEluZGljZXMuLi4+Pjo6UmVzdWx0VHlwZSwKKyAgICAgIHR5cGVuYW1lIE1ha2VWaXNp
dGF0aW9uTWF0cml4PFJldHVyblR5cGUsIEZ1bmN0aW9uT2JqZWN0LCBFbmRJbmRpY2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfc2VxdWVuY2U8Pj46OlJlc3Vs
dFR5cGUsCiAgICAgICBzaXplb2YuLi4oQ3VyckluZGljZXMpPjsKIAogICBzdGF0aWMgY29uc3Rl
eHByIFJlc3VsdFR5cGUgUnVuKCkgewotICAgIHJldHVybiB7e01ha2VWaXNpdGF0aW9uTWF0cml4
PFJldHVyblR5cGUsIEZ1bmN0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4X3NlcXVlbmNlPEVuZEluZGljZXMuLi4+LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJvdW5kSW5kaWNlcy4uLiwgQ3VyckluZGljZXM+OjpSdW4oKS4uLn19
OworICAgIHJldHVybiB7e01ha2VWaXNpdGF0aW9uTWF0cml4PAorICAgICAgICBSZXR1cm5UeXBl
LCBGdW5jdGlvbk9iamVjdCwgRW5kSW5kaWNlcywKKyAgICAgICAgQXBwZW5kVG9JbmRleFNlcXVl
bmNlVDxCb3VuZEluZGljZXMsIEN1cnJJbmRpY2VzPj46OlJ1bigpLi4ufX07CiAgIH0KIH07CiAK
QEAgLTI1MSwxMCArMjYxLDExIEBAIHRlbXBsYXRlIDxjbGFzcyBSZXR1cm5UeXBlLCBjbGFzcyBG
dW5jdGlvbk9iamVjdCwgc3RkOjpzaXplX3QgSGVhZEVuZEluZGV4LAogICAgICAgICAgIHN0ZDo6
c2l6ZV90Li4uIFRhaWxFbmRJbmRpY2VzLCBzdGQ6OnNpemVfdC4uLiBCb3VuZEluZGljZXM+CiBz
dHJ1Y3QgTWFrZVZpc2l0YXRpb25NYXRyaXg8UmV0dXJuVHlwZSwgRnVuY3Rpb25PYmplY3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfc2VxdWVuY2U8SGVhZEVuZEluZGV4LCBU
YWlsRW5kSW5kaWNlcy4uLj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQm91bmRJbmRp
Y2VzLi4uPgotICAgIDogTWFrZVZpc2l0YXRpb25NYXRyaXhJbXBsPAotICAgICAgICAgIFJldHVy
blR5cGUsIEZ1bmN0aW9uT2JqZWN0LCBpbmRleF9zZXF1ZW5jZTxUYWlsRW5kSW5kaWNlcy4uLj4s
Ci0gICAgICAgICAgYWJzbDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxIZWFkRW5kSW5kZXg+LCBCb3Vu
ZEluZGljZXMuLi4+IHt9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4X3NlcXVl
bmNlPEJvdW5kSW5kaWNlcy4uLj4+CisgICAgOiBNYWtlVmlzaXRhdGlvbk1hdHJpeEltcGw8UmV0
dXJuVHlwZSwgRnVuY3Rpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZXhfc2VxdWVuY2U8VGFpbEVuZEluZGljZXMuLi4+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFic2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8SGVhZEVuZEluZGV4PiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleF9zZXF1ZW5jZTxCb3VuZEluZGljZXMuLi4+
PiB7fTsKIAogc3RydWN0IFVucmVhY2hhYmxlU3dpdGNoQ2FzZSB7CiAgIHRlbXBsYXRlIDxjbGFz
cyBPcD4KQEAgLTQyMyw3ICs0MzQsOCBAQCBzdHJ1Y3QgVmlzaXRJbmRpY2VzRmFsbGJhY2sgewog
ICBzdGF0aWMgVmlzaXRJbmRpY2VzUmVzdWx0VDxPcCwgU2l6ZVQuLi4+IFJ1bihPcCYmIG9wLCBT
aXplVC4uLiBpbmRpY2VzKSB7CiAgICAgcmV0dXJuIEFjY2Vzc1NpbXBsZUFycmF5KAogICAgICAg
ICBNYWtlVmlzaXRhdGlvbk1hdHJpeDxWaXNpdEluZGljZXNSZXN1bHRUPE9wLCBTaXplVC4uLj4s
IE9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleF9zZXF1ZW5jZTwoRW5kSW5k
aWNlcyArIDEpLi4uPj46OlJ1bigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eF9zZXF1ZW5jZTwoRW5kSW5kaWNlcyArIDEpLi4uPiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhfc2VxdWVuY2U8Pj46OlJ1bigpLAogICAgICAgICAoaW5kaWNlcyArIDEpLi4u
KShhYnNsOjpmb3J3YXJkPE9wPihvcCkpOwogICB9CiB9OwpAQCAtODM3LDggKzg0OSw4IEBAIHN0
cnVjdCBJbWFnaW5hcnlGdW48dmFyaWFudDxILCBULi4uPiwgST4gOiBJbWFnaW5hcnlGdW48dmFy
aWFudDxULi4uPiwgSSArIDE+IHsKICAgLy8gTk9URTogY29uc3QmIGFuZCAmJiBhcmUgdXNlZCBp
bnN0ZWFkIG9mIGJ5LXZhbHVlIGR1ZSB0byBsYWNrIG9mIGd1YXJhbnRlZWQKICAgLy8gbW92ZSBl
bGlzaW9uIG9mIEMrKzE3LiBUaGlzIG1heSBoYXZlIG90aGVyIG1pbm9yIGRpZmZlcmVuY2VzLCBi
dXQgdGVzdHMKICAgLy8gcGFzcy4KLSAgc3RhdGljIFNpemVUPEk+IFJ1bihjb25zdCBIJik7Ci0g
IHN0YXRpYyBTaXplVDxJPiBSdW4oSCYmKTsKKyAgc3RhdGljIFNpemVUPEk+IFJ1bihjb25zdCBI
JiwgU2l6ZVQ8ST4pOworICBzdGF0aWMgU2l6ZVQ8ST4gUnVuKEgmJiwgU2l6ZVQ8ST4pOwogfTsK
IAogLy8gVGhlIGZvbGxvd2luZyBtZXRhZnVuY3Rpb25zIGFyZSB1c2VkIGluIGNvbnN0cnVjdG9y
IGFuZCBhc3NpZ25tZW50CkBAIC04NjAsNyArODcyLDggQEAgc3RydWN0IENvbnZlcnNpb25Jc1Bv
c3NpYmxlSW1wbCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKIAogdGVtcGxhdGUgPGNsYXNzIFZhcmlh
bnQsIGNsYXNzIFQ+CiBzdHJ1Y3QgQ29udmVyc2lvbklzUG9zc2libGVJbXBsPAotICAgIFZhcmlh
bnQsIFQsIHZvaWRfdDxkZWNsdHlwZShJbWFnaW5hcnlGdW48VmFyaWFudD46OlJ1bihzdGQ6OmRl
Y2x2YWw8VD4oKSkpPj4KKyAgICBWYXJpYW50LCBULAorICAgIHZvaWRfdDxkZWNsdHlwZShJbWFn
aW5hcnlGdW48VmFyaWFudD46OlJ1bihzdGQ6OmRlY2x2YWw8VD4oKSwge30pKT4+CiAgICAgOiBz
dGQ6OnRydWVfdHlwZSB7fTsKIAogdGVtcGxhdGUgPGNsYXNzIFZhcmlhbnQsIGNsYXNzIFQ+CkBA
IC04NjgsOCArODgxLDkgQEAgc3RydWN0IENvbnZlcnNpb25Jc1Bvc3NpYmxlIDogQ29udmVyc2lv
bklzUG9zc2libGVJbXBsPFZhcmlhbnQsIFQ+Ojp0eXBlIHt9OwogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
VmFyaWFudCwgY2xhc3MgVD4KIHN0cnVjdCBJbmRleE9mQ29uc3RydWN0ZWRUeXBlPAotICAgIFZh
cmlhbnQsIFQsIHZvaWRfdDxkZWNsdHlwZShJbWFnaW5hcnlGdW48VmFyaWFudD46OlJ1bihzdGQ6
OmRlY2x2YWw8VD4oKSkpPj4KLSAgICA6IGRlY2x0eXBlKEltYWdpbmFyeUZ1bjxWYXJpYW50Pjo6
UnVuKHN0ZDo6ZGVjbHZhbDxUPigpKSkge307CisgICAgVmFyaWFudCwgVCwKKyAgICB2b2lkX3Q8
ZGVjbHR5cGUoSW1hZ2luYXJ5RnVuPFZhcmlhbnQ+OjpSdW4oc3RkOjpkZWNsdmFsPFQ+KCksIHt9
KSk+PgorICAgIDogZGVjbHR5cGUoSW1hZ2luYXJ5RnVuPFZhcmlhbnQ+OjpSdW4oc3RkOjpkZWNs
dmFsPFQ+KCksIHt9KSkge307CiAKIHRlbXBsYXRlIDxzdGQ6OnNpemVfdC4uLiBJcz4KIHN0cnVj
dCBDb250YWluc1ZhcmlhbnROUG9zCkBAIC0xMjM0LDIzICsxMjQ4LDI5IEBAIHVzaW5nIFZhcmlh
bnRDb3B5QmFzZSA9IGFic2w6OmNvbmRpdGlvbmFsX3Q8CiAvLyBCYXNlIHRoYXQgaXMgZGVwZW5k
ZW50IG9uIHdoZXRoZXIgb3Igbm90IHRoZSBtb3ZlLWFzc2lnbiBjYW4gYmUgdHJpdmlhbC4KIHRl
bXBsYXRlIDxjbGFzcy4uLiBUPgogdXNpbmcgVmFyaWFudE1vdmVBc3NpZ25CYXNlID0gYWJzbDo6
Y29uZGl0aW9uYWxfdDwKLSAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpjb25qdW5jdGlvbjxh
YnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8VW5pb248VC4uLj4+LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPFVuaW9uPFQu
Li4+PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Rl
c3RydWN0aWJsZTxVbmlvbjxULi4uPj4+LAotICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om5l
Z2F0aW9uPGFic2w6OmNvbmp1bmN0aW9uPAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OmlzX21vdmVfY29uc3RydWN0aWJsZTxUPi4uLiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
YWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPFQ+Li4uPj4+Ojp2YWx1ZSwKKyAgICBhYnNsOjpkaXNq
dW5jdGlvbjwKKyAgICAgICAgYWJzbDo6Y29uanVuY3Rpb248YWJzbDo6aXNfbW92ZV9hc3NpZ25h
YmxlPFVuaW9uPFQuLi4+PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19tb3Zl
X2NvbnN0cnVjdGlibGU8VW5pb248VC4uLj4+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX2Rlc3RydWN0aWJsZTxVbmlvbjxULi4uPj4+LAorICAgICAgICBhYnNsOjpuZWdhdGlv
bjxhYnNsOjpjb25qdW5jdGlvbjxzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxUPi4uLiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogV2UncmUgbm90
IHF1YWxpZnlpbmcgdGhpcyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGFic2w6OiBiZWNhdXNlIGl0IGRvZXNuJ3QgY29tcGlsZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmRlciBNU1ZDLgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19tb3ZlX2Fzc2lnbmFibGU8VD4uLi4+Pj46
OnZhbHVlLAogICAgIFZhcmlhbnRDb3B5QmFzZTxULi4uPiwgVmFyaWFudE1vdmVBc3NpZ25CYXNl
Tm9udHJpdmlhbDxULi4uPj47CiAKIC8vIEJhc2UgdGhhdCBpcyBkZXBlbmRlbnQgb24gd2hldGhl
ciBvciBub3QgdGhlIGNvcHktYXNzaWduIGNhbiBiZSB0cml2aWFsLgogdGVtcGxhdGUgPGNsYXNz
Li4uIFQ+CiB1c2luZyBWYXJpYW50Q29weUFzc2lnbkJhc2UgPSBhYnNsOjpjb25kaXRpb25hbF90
PAotICAgIGFic2w6OmRpc2p1bmN0aW9uPGFic2w6OmNvbmp1bmN0aW9uPGFic2w6OmlzX2NvcHlf
YXNzaWduYWJsZTxVbmlvbjxULi4uPj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8VW5pb248VC4uLj4+LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfZGVzdHJ1Y3RpYmxlPFVu
aW9uPFQuLi4+Pj4sCi0gICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bmVnYXRpb248YWJzbDo6
Y29uanVuY3Rpb248Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29weV9jb25z
dHJ1Y3RpYmxlPFQ+Li4uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjppc19jb3B5
X2Fzc2lnbmFibGU8VD4uLi4+Pj46OnZhbHVlLAorICAgIGFic2w6OmRpc2p1bmN0aW9uPAorICAg
ICAgICBhYnNsOjpjb25qdW5jdGlvbjxhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8VW5pb248VC4u
Lj4+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJs
ZTxVbmlvbjxULi4uPj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfZGVzdHJ1
Y3RpYmxlPFVuaW9uPFQuLi4+Pj4sCisgICAgICAgIGFic2w6Om5lZ2F0aW9uPGFic2w6OmNvbmp1
bmN0aW9uPHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPFQ+Li4uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBXZSdyZSBub3QgcXVhbGlmeWluZyB0
aGlzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWJz
bDo6IGJlY2F1c2UgaXQgZG9lc24ndCBjb21waWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHVuZGVyIE1TVkMuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlzX2NvcHlfYXNzaWduYWJsZTxUPi4uLj4+Pjo6dmFsdWUsCiAgICAg
VmFyaWFudE1vdmVBc3NpZ25CYXNlPFQuLi4+LCBWYXJpYW50Q29weUFzc2lnbkJhc2VOb250cml2
aWFsPFQuLi4+PjsKIAogdGVtcGxhdGUgPGNsYXNzLi4uIFQ+CkBAIC0xNTQyLDggKzE1NjIsOCBA
QCBzdHJ1Y3QgU3dhcFNhbWVJbmRleCB7CiAgIHZhcmlhbnQ8VHlwZXMuLi4+KiB3OwogICB0ZW1w
bGF0ZSA8c3RkOjpzaXplX3QgST4KICAgdm9pZCBvcGVyYXRvcigpKFNpemVUPEk+KSBjb25zdCB7
Ci0gICAgdXNpbmcgc3RkOjpzd2FwOwotICAgIHN3YXAoVmFyaWFudENvcmVBY2Nlc3M6OkFjY2Vz
czxJPigqdiksIFZhcmlhbnRDb3JlQWNjZXNzOjpBY2Nlc3M8ST4oKncpKTsKKyAgICB0eXBlX3Ry
YWl0c19pbnRlcm5hbDo6U3dhcChWYXJpYW50Q29yZUFjY2Vzczo6QWNjZXNzPEk+KCp2KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYW50Q29yZUFjY2Vzczo6QWNjZXNzPEk+
KCp3KSk7CiAgIH0KIAogICB2b2lkIG9wZXJhdG9yKCkoU2l6ZVQ8dmFyaWFudF9ucG9zPikgY29u
c3Qge30KQEAgLTE1OTgsMTEgKzE2MTgsMTIgQEAgc3RydWN0IFZhcmlhbnRIYXNoVmlzaXRvciB7
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyaWFudCwgdHlwZW5hbWUuLi4gVHM+CiBzdHJ1Y3QgVmFy
aWFudEhhc2hCYXNlPFZhcmlhbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OmVuYWJs
ZV9pZl90PGFic2w6OmNvbmp1bmN0aW9uPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaEVuYWJsZWQ8VHM+Li4uPjo6dmFsdWU+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaGFibGU8VHM+
Li4uPjo6dmFsdWU+LAogICAgICAgICAgICAgICAgICAgICAgICBUcy4uLj4gewogICB1c2luZyBh
cmd1bWVudF90eXBlID0gVmFyaWFudDsKICAgdXNpbmcgcmVzdWx0X3R5cGUgPSBzaXplX3Q7CiAg
IHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IFZhcmlhbnQmIHZhcikgY29uc3QgeworICAgIHR5cGVf
dHJhaXRzX2ludGVybmFsOjpBc3NlcnRIYXNoRW5hYmxlZDxUcy4uLj4oKTsKICAgICBpZiAodmFy
LnZhbHVlbGVzc19ieV9leGNlcHRpb24oKSkgewogICAgICAgcmV0dXJuIDIzOTc5OTg4NDsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29w
dGlvbmFsLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjI3MjkwNDE5OTBiYmUx
NjJmZTIwZDhmMjhiZjk0MDdiNzU1MDg5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmNjCisrKyAvZGV2L251bGwKQEAg
LTEsMjQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFic2VpbCBBdXRob3JzLgotLy8K
LS8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOwotLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0Ci0vLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKLS8vCi0vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0vLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCi0vLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCi0vLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQot
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLQotI2lmbmRlZiBBQlNMX0hBVkVfU1RE
X09QVElPTkFMCi1uYW1lc3BhY2UgYWJzbCB7Ci0KLW51bGxvcHRfdDo6aW5pdF90IG51bGxvcHRf
dDo6aW5pdDsKLWV4dGVybiBjb25zdCBudWxsb3B0X3QgbnVsbG9wdHtudWxsb3B0X3Q6OmluaXR9
OwotCi19ICAvLyBuYW1lc3BhY2UgYWJzbAotI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX09QVElP
TkFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0
aW9uYWwuaAppbmRleCAxNDIxMDAxODgxNWM0YzY2MTIwN2ZlNDBmNDUyYjAxMzVjOWEwYWYzLi5l
ZDhmYWY5N2ExZDRlYmZlYWM4NjhiM2NlNTQ0MDgzMGUyY2I2NmU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy9vcHRpb25hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmgKQEAgLTQsNyAr
NCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM1LDEyICszNSwxMiBAQAogI2lm
bmRlZiBBQlNMX1RZUEVTX09QVElPTkFMX0hfCiAjZGVmaW5lIEFCU0xfVFlQRVNfT1BUSU9OQUxf
SF8KIAotI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2Uv
Y29uZmlnLmgiICAgLy8gVE9ETyhjYWxhYnJlc2UpIElXWVUgcmVtb3ZhbD8KICNpbmNsdWRlICJh
YnNsL3V0aWxpdHkvdXRpbGl0eS5oIgogCiAjaWZkZWYgQUJTTF9IQVZFX1NURF9PUFRJT05BTAog
Ci0jaW5jbHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8b3B0aW9uYWw+ICAvLyBJV1lVIHByYWdt
YTogZXhwb3J0CiAKIG5hbWVzcGFjZSBhYnNsIHsKIHVzaW5nIHN0ZDo6YmFkX29wdGlvbmFsX2Fj
Y2VzczsKQEAgLTU1LDQ0ICs1NSwzMiBAQCB1c2luZyBzdGQ6Om51bGxvcHQ7CiAjaW5jbHVkZSA8
Y2Fzc2VydD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPGluaXRpYWxpemVyX2xp
c3Q+Ci0jaW5jbHVkZSA8bmV3PgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0
aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgotI2luY2x1ZGUgImFi
c2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9pbmxpbmVf
dmFyaWFibGUuaCIKICNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKICNpbmNsdWRl
ICJhYnNsL3R5cGVzL2JhZF9vcHRpb25hbF9hY2Nlc3MuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVz
L2ludGVybmFsL29wdGlvbmFsLmgiCiAKLS8vIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdf
Q09OU1RSVUNUT1JTCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIG51bGxvcHRfdAogLy8KLS8vIElu
aGVyaXRpbmcgY29uc3RydWN0b3JzIGlzIHN1cHBvcnRlZCBpbiBHQ0MgNC44KywgQ2xhbmcgMy4z
KyBhbmQgTVNWQyAyMDE1LgotLy8gX19jcHBfaW5oZXJpdGluZ19jb25zdHJ1Y3RvcnMgaXMgYSBw
cmVkZWZpbmVkIG1hY3JvIGFuZCBhIHJlY29tbWVuZGVkIHdheSB0bwotLy8gY2hlY2sgZm9yIHRo
aXMgbGFuZ3VhZ2UgZmVhdHVyZSwgYnV0IEdDQyBkb2Vzbid0IHN1cHBvcnQgaXQgdW50aWwgNS4w
IGFuZAotLy8gQ2xhbmcgZG9lc24ndCBzdXBwb3J0IGl0IHVudGlsIDMuNi4KLS8vIEFsc28sIE1T
VkMgMjAxNSBoYXMgYSBidWc6IGl0IGRvZXNuJ3QgaW5oZXJpdCB0aGUgY29uc3RleHByIHRlbXBs
YXRlCi0vLyBjb25zdHJ1Y3Rvci4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZSB3b24n
dCB3b3JrIG9uIE1TVkMgMjAxNSBVcGRhdGUzOgotLy8gc3RydWN0IEJhc2UgewotLy8gICBpbnQg
dDsKLS8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0vLyAgIGNvbnN0ZXhwciBCYXNlKFQgdF8p
IDogdCh0Xykge30KLS8vIH07Ci0vLyBzdHJ1Y3QgRm9vIDogQmFzZSB7Ci0vLyAgIHVzaW5nIEJh
c2U6OkJhc2U7Ci0vLyB9Ci0vLyBjb25zdGV4cHIgRm9vIGZvbygwKTsgIC8vIGRvZXNuJ3Qgd29y
ayBvbiBNU1ZDIDIwMTUKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNpZiBfX2hhc19mZWF0dXJl
KGN4eF9pbmhlcml0aW5nX2NvbnN0cnVjdG9ycykKLSNkZWZpbmUgQUJTTF9PUFRJT05BTF9VU0Vf
SU5IRVJJVElOR19DT05TVFJVQ1RPUlMgMQotI2VuZGlmCi0jZWxpZiAoZGVmaW5lZChfX0dOVUNf
XykgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgKF9f
R05VQ19fID4gNCB8fCBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDgpKSB8fCBc
Ci0gICAgKF9fY3BwX2luaGVyaXRpbmdfY29uc3RydWN0b3JzID49IDIwMDgwMikgfHwgICAgICAg
ICAgICAgICAgICBcCi0gICAgKGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE5MTAp
Ci0jZGVmaW5lIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNUT1JTIDEKLSNl
bmRpZgorLy8gQ2xhc3MgdHlwZSBmb3IgYGFic2w6Om51bGxvcHRgIHVzZWQgdG8gaW5kaWNhdGUg
YW4gYGFic2w6Om9wdGlvbmFsPFQ+YCB0eXBlCisvLyB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYSB2
YWx1ZS4KK3N0cnVjdCBudWxsb3B0X3QgeworICAvLyBJdCBtdXN0IG5vdCBiZSBkZWZhdWx0LWNv
bnN0cnVjdGlibGUgdG8gYXZvaWQgYW1iaWd1aXR5IGZvciBvcHQgPSB7fS4KKyAgZXhwbGljaXQg
Y29uc3RleHByIG51bGxvcHRfdChvcHRpb25hbF9pbnRlcm5hbDo6aW5pdF90KSBub2V4Y2VwdCB7
fQorfTsKIAotbmFtZXNwYWNlIGFic2wgeworLy8gbnVsbG9wdAorLy8KKy8vIEEgdGFnIGNvbnN0
YW50IG9mIHR5cGUgYGFic2w6Om51bGxvcHRfdGAgdXNlZCB0byBpbmRpY2F0ZSBhbiBlbXB0eQor
Ly8gYGFic2w6Om9wdGlvbmFsYCBpbiBjZXJ0YWluIGZ1bmN0aW9ucywgc3VjaCBhcyBjb25zdHJ1
Y3Rpb24gb3IgYXNzaWdubWVudC4KK0FCU0xfSU5URVJOQUxfSU5MSU5FX0NPTlNURVhQUihudWxs
b3B0X3QsIG51bGxvcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbG9wdF90
KG9wdGlvbmFsX2ludGVybmFsOjppbml0X3QoKSkpOwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogLy8gYWJzbDo6b3B0aW9uYWwKQEAgLTExNCwxMCArMTAyLDYgQEAgbmFtZXNwYWNlIGFic2wg
ewogLy8gICAgICBuZWVkIHRoZSBpbmxpbmUgdmFyaWFibGUgc3VwcG9ydCBpbiBDKysxNyBmb3Ig
ZXh0ZXJuYWwgbGlua2FnZS4KIC8vICAgICogVGhyb3dzIGBhYnNsOjpiYWRfb3B0aW9uYWxfYWNj
ZXNzYCBpbnN0ZWFkIG9mCiAvLyAgICAgIGBzdGQ6OmJhZF9vcHRpb25hbF9hY2Nlc3NgLgotLy8g
ICAgKiBgb3B0aW9uYWw6OnN3YXAoKWAgYW5kIGBhYnNsOjpzd2FwKClgIHJlbGllcyBvbgotLy8g
ICAgICBgc3RkOjppc18obm90aHJvd18pc3dhcHBhYmxlKClgLCB3aGljaCBoYXMgYmVlbiBpbnRy
b2R1Y2VkIGluIEMrKzE3LgotLy8gICAgICBBcyBhIHdvcmthcm91bmQsIHdlIGFzc3VtZSBgaXNf
c3dhcHBhYmxlKClgIGlzIGFsd2F5cyBgdHJ1ZWAKLS8vICAgICAgYW5kIGBpc19ub3Rocm93X3N3
YXBwYWJsZSgpYCBpcyB0aGUgc2FtZSBhcyBgc3RkOjppc190cml2aWFsKClgLgogLy8gICAgKiBg
bWFrZV9vcHRpb25hbCgpYCBjYW5ub3QgYmUgZGVjbGFyZWQgYGNvbnN0ZXhwcmAgZHVlIHRvIHRo
ZSBhYnNlbmNlIG9mCiAvLyAgICAgIGd1YXJhbnRlZWQgY29weSBlbGlzaW9uLgogLy8gICAgKiBU
aGUgbW92ZSBjb25zdHJ1Y3RvcidzIGBub2V4Y2VwdGAgc3BlY2lmaWNhdGlvbiBpcyBzdHJvbmdl
ciwgaS5lLiBpZiB0aGUKQEAgLTEyNywzNjYgKzExMSwxMyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAv
LyAgICAgICBhKSBtb3ZlIGNvbnN0cnVjdG9ycyBzaG91bGQgb25seSB0aHJvdyBkdWUgdG8gYWxs
b2NhdGlvbiBmYWlsdXJlIGFuZAogLy8gICAgICAgYikgaWYgVCdzIG1vdmUgY29uc3RydWN0b3Ig
YWxsb2NhdGVzLCBpdCB1c2VzIHRoZSBzYW1lIGFsbG9jYXRpb24KIC8vICAgICAgICAgIGZ1bmN0
aW9uIGFzIHRoZSBkZWZhdWx0IGFsbG9jYXRvci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xh
c3Mgb3B0aW9uYWw7Ci0KLS8vIG51bGxvcHRfdAotLy8KLS8vIENsYXNzIHR5cGUgZm9yIGBhYnNs
OjpudWxsb3B0YCB1c2VkIHRvIGluZGljYXRlIGFuIGBhYnNsOjpvcHRpb25hbDxUPmAgdHlwZQot
Ly8gdGhhdCBkb2VzIG5vdCBjb250YWluIGEgdmFsdWUuCi1zdHJ1Y3QgbnVsbG9wdF90IHsKLSAg
c3RydWN0IGluaXRfdCB7fTsKLSAgc3RhdGljIGluaXRfdCBpbml0OwotCi0gIC8vIEl0IG11c3Qg
bm90IGJlIGRlZmF1bHQtY29uc3RydWN0aWJsZSB0byBhdm9pZCBhbWJpZ3VpdHkgZm9yIG9wdCA9
IHt9LgotICAvLyBOb3RlIHRoZSBub24tY29uc3QgcmVmZXJlbmNlLCB3aGljaCBpcyB0byBlbGlt
aW5hdGUgYW1iaWd1aXR5IGZvciBjb2RlCi0gIC8vIGxpa2U6Ci0gIC8vCi0gIC8vIHN0cnVjdCBT
IHsgaW50IHZhbHVlOyB9OwotICAvLwotICAvLyB2b2lkIFRlc3QoKSB7Ci0gIC8vICAgb3B0aW9u
YWw8Uz4gb3B0OwotICAvLyAgIG9wdCA9IHt7fX07Ci0gIC8vIH0KLSAgZXhwbGljaXQgY29uc3Rl
eHByIG51bGxvcHRfdChpbml0X3QmIC8qdW51c2VkKi8pIHt9Ci19OwotCi0vLyBudWxsb3B0CiAv
LwotLy8gQSB0YWcgY29uc3RhbnQgb2YgdHlwZSBgYWJzbDo6bnVsbG9wdF90YCB1c2VkIHRvIGlu
ZGljYXRlIGFuIGVtcHR5Ci0vLyBgYWJzbDo6b3B0aW9uYWxgIGluIGNlcnRhaW4gZnVuY3Rpb25z
LCBzdWNoIGFzIGNvbnN0cnVjdGlvbiBvciBhc3NpZ25tZW50LgotZXh0ZXJuIGNvbnN0IG51bGxv
cHRfdCBudWxsb3B0OwotCi1uYW1lc3BhY2Ugb3B0aW9uYWxfaW50ZXJuYWwgewotCi1zdHJ1Y3Qg
ZW1wdHlfc3RydWN0IHt9OwotLy8gVGhpcyBjbGFzcyBzdG9yZXMgdGhlIGRhdGEgaW4gb3B0aW9u
YWw8VD4uCi0vLyBJdCBpcyBzcGVjaWFsaXplZCBiYXNlZCBvbiB3aGV0aGVyIFQgaXMgdHJpdmlh
bGx5IGRlc3RydWN0aWJsZS4KLS8vIFRoaXMgaXMgdGhlIHNwZWNpYWxpemF0aW9uIGZvciBub24g
dHJpdmlhbGx5IGRlc3RydWN0aWJsZSB0eXBlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wg
PSBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlPgotY2xhc3Mgb3B0aW9u
YWxfZGF0YV9kdG9yX2Jhc2UgewotICBzdHJ1Y3QgZHVtbXlfdHlwZSB7Ci0gICAgc3RhdGljX2Fz
c2VydChzaXplb2YoVCkgJSBzaXplb2YoZW1wdHlfc3RydWN0KSA9PSAwLCAiIik7Ci0gICAgLy8g
VXNlIGFuIGFycmF5IHRvIGF2b2lkIEdDQyA2IHBsYWNlbWVudC1uZXcgd2FybmluZy4KLSAgICBl
bXB0eV9zdHJ1Y3QgZGF0YVtzaXplb2YoVCkgLyBzaXplb2YoZW1wdHlfc3RydWN0KV07Ci0gIH07
Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIFdoZXRoZXIgdGhlcmUgaXMgZGF0YSBvciBub3QuCi0gIGJv
b2wgZW5nYWdlZF87Ci0gIC8vIERhdGEgc3RvcmFnZQotICB1bmlvbiB7Ci0gICAgZHVtbXlfdHlw
ZSBkdW1teV87Ci0gICAgVCBkYXRhXzsKLSAgfTsKLQotICB2b2lkIGRlc3RydWN0KCkgbm9leGNl
cHQgewotICAgIGlmIChlbmdhZ2VkXykgewotICAgICAgZGF0YV8uflQoKTsKLSAgICAgIGVuZ2Fn
ZWRfID0gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgLy8gZHVtbXlfIG11c3QgYmUgaW5pdGlhbGl6
ZWQgZm9yIGNvbnN0ZXhwciBjb25zdHJ1Y3Rvci4KLSAgY29uc3RleHByIG9wdGlvbmFsX2RhdGFf
ZHRvcl9iYXNlKCkgbm9leGNlcHQgOiBlbmdhZ2VkXyhmYWxzZSksIGR1bW15X3t7fX0ge30KLQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgY29uc3RleHByIGV4cGxpY2l0IG9wdGlv
bmFsX2RhdGFfZHRvcl9iYXNlKGluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQotICAgICAgOiBl
bmdhZ2VkXyh0cnVlKSwgZGF0YV8oYWJzbDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KLQot
ICB+b3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoKSB7IGRlc3RydWN0KCk7IH0KLX07Ci0KLS8vIFNw
ZWNpYWxpemF0aW9uIGZvciB0cml2aWFsbHkgZGVzdHJ1Y3RpYmxlIHR5cGUuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWNsYXNzIG9wdGlvbmFsX2RhdGFfZHRvcl9iYXNlPFQsIHRydWU+IHsKLSAg
c3RydWN0IGR1bW15X3R5cGUgewotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpICUgc2l6ZW9m
KGVtcHR5X3N0cnVjdCkgPT0gMCwgIiIpOwotICAgIC8vIFVzZSBhcnJheSB0byBhdm9pZCBHQ0Mg
NiBwbGFjZW1lbnQtbmV3IHdhcm5pbmcuCi0gICAgZW1wdHlfc3RydWN0IGRhdGFbc2l6ZW9mKFQp
IC8gc2l6ZW9mKGVtcHR5X3N0cnVjdCldOwotICB9OwotCi0gcHJvdGVjdGVkOgotICAvLyBXaGV0
aGVyIHRoZXJlIGlzIGRhdGEgb3Igbm90LgotICBib29sIGVuZ2FnZWRfOwotICAvLyBEYXRhIHN0
b3JhZ2UKLSAgdW5pb24gewotICAgIGR1bW15X3R5cGUgZHVtbXlfOwotICAgIFQgZGF0YV87Ci0g
IH07Ci0gIHZvaWQgZGVzdHJ1Y3QoKSBub2V4Y2VwdCB7IGVuZ2FnZWRfID0gZmFsc2U7IH0KLQot
ICAvLyBkdW1teV8gbXVzdCBiZSBpbml0aWFsaXplZCBmb3IgY29uc3RleHByIGNvbnN0cnVjdG9y
LgotICBjb25zdGV4cHIgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoKSBub2V4Y2VwdCA6IGVuZ2Fn
ZWRfKGZhbHNlKSwgZHVtbXlfe3t9fSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgotICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2UoaW5fcGxhY2Vf
dCwgQXJncyYmLi4uIGFyZ3MpCi0gICAgICA6IGVuZ2FnZWRfKHRydWUpLCBkYXRhXyhhYnNsOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1j
bGFzcyBvcHRpb25hbF9kYXRhX2Jhc2UgOiBwdWJsaWMgb3B0aW9uYWxfZGF0YV9kdG9yX2Jhc2U8
VD4gewotIHByb3RlY3RlZDoKLSAgdXNpbmcgYmFzZSA9IG9wdGlvbmFsX2RhdGFfZHRvcl9iYXNl
PFQ+OwotI2lmIEFCU0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNUT1JTCi0gIHVz
aW5nIGJhc2U6OmJhc2U7Ci0jZWxzZQotICBvcHRpb25hbF9kYXRhX2Jhc2UoKSA9IGRlZmF1bHQ7
Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIGNvbnN0ZXhwciBleHBsaWNpdCBv
cHRpb25hbF9kYXRhX2Jhc2UoaW5fcGxhY2VfdCB0LCBBcmdzJiYuLi4gYXJncykKLSAgICAgIDog
YmFzZSh0LCBhYnNsOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQotI2VuZGlmCi0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gIHZvaWQgY29uc3RydWN0KEFyZ3MmJi4uLiBhcmdz
KSB7Ci0gICAgLy8gVXNlIGR1bW15XydzIGFkZHJlc3MgdG8gd29yayBhcm91bmQgY2FzdGluZyBj
di1xdWFsaWZpZWQgVCogdG8gdm9pZCouCi0gICAgOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPigm
dGhpcy0+ZHVtbXlfKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgIHRoaXMt
PmVuZ2FnZWRfID0gdHJ1ZTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICB2b2lk
IGFzc2lnbihVJiYgdSkgewotICAgIGlmICh0aGlzLT5lbmdhZ2VkXykgewotICAgICAgdGhpcy0+
ZGF0YV8gPSBzdGQ6OmZvcndhcmQ8VT4odSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGNvbnN0cnVj
dChzdGQ6OmZvcndhcmQ8VT4odSkpOwotICAgIH0KLSAgfQotfTsKLQotLy8gVE9ETyhhYnNsLXRl
YW0pOiBBZGQgYW5vdGhlciBjbGFzcyB1c2luZwotLy8gc3RkOjppc190cml2aWFsbHlfbW92ZV9j
b25zdHJ1Y3RpYmxlIHRyYWl0IHdoZW4gYXZhaWxhYmxlIHRvIG1hdGNoCi0vLyBodHRwOi8vY3Bs
dXNwbHVzLmdpdGh1Yi5pby9MV0cvbHdnLWRlZmVjdHMuaHRtbCMyOTAwLCBmb3IgdHlwZXMgdGhh
dAotLy8gaGF2ZSB0cml2aWFsIG1vdmUgYnV0IG5vbnRyaXZpYWwgY29weS4KLS8vIEFsc28sIHdl
IHNob3VsZCBiZSBjaGVja2luZyBpc190cml2aWFsbHlfY29weWFibGUgaGVyZSwgd2hpY2ggaXMg
bm90Ci0vLyBzdXBwb3J0ZWQgbm93LCBzbyB3ZSB1c2UgaXNfdHJpdmlhbGx5XyogdHJhaXRzIGlu
c3RlYWQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCA9IGFic2w6OmlzX3RyaXZpYWxseV9j
b3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
YWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUmJgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PFQ+Ojp2YWx1ZT4KLWNsYXNzIG9wdGlvbmFsX2RhdGE7Ci0KLS8vIFRyaXZpYWxseSBjb3B5YWJs
ZSB0eXBlcwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBvcHRpb25hbF9kYXRhPFQsIHRy
dWU+IDogcHVibGljIG9wdGlvbmFsX2RhdGFfYmFzZTxUPiB7Ci0gcHJvdGVjdGVkOgotI2lmIEFC
U0xfT1BUSU9OQUxfVVNFX0lOSEVSSVRJTkdfQ09OU1RSVUNUT1JTCi0gIHVzaW5nIG9wdGlvbmFs
X2RhdGFfYmFzZTxUPjo6b3B0aW9uYWxfZGF0YV9iYXNlOwotI2Vsc2UKLSAgb3B0aW9uYWxfZGF0
YSgpID0gZGVmYXVsdDsKLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgY29uc3Rl
eHByIGV4cGxpY2l0IG9wdGlvbmFsX2RhdGEoaW5fcGxhY2VfdCB0LCBBcmdzJiYuLi4gYXJncykK
LSAgICAgIDogb3B0aW9uYWxfZGF0YV9iYXNlPFQ+KHQsIGFic2w6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pIHt9Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3Mgb3B0
aW9uYWxfZGF0YTxULCBmYWxzZT4gOiBwdWJsaWMgb3B0aW9uYWxfZGF0YV9iYXNlPFQ+IHsKLSBw
cm90ZWN0ZWQ6Ci0jaWYgQUJTTF9PUFRJT05BTF9VU0VfSU5IRVJJVElOR19DT05TVFJVQ1RPUlMK
LSAgdXNpbmcgb3B0aW9uYWxfZGF0YV9iYXNlPFQ+OjpvcHRpb25hbF9kYXRhX2Jhc2U7Ci0jZWxz
ZQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgY29uc3RleHByIGV4cGxpY2l0IG9w
dGlvbmFsX2RhdGEoaW5fcGxhY2VfdCB0LCBBcmdzJiYuLi4gYXJncykKLSAgICAgIDogb3B0aW9u
YWxfZGF0YV9iYXNlPFQ+KHQsIGFic2w6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9Ci0jZW5k
aWYKLQotICBvcHRpb25hbF9kYXRhKCkgPSBkZWZhdWx0OwotCi0gIG9wdGlvbmFsX2RhdGEoY29u
c3Qgb3B0aW9uYWxfZGF0YSYgcmhzKSB7Ci0gICAgaWYgKHJocy5lbmdhZ2VkXykgewotICAgICAg
dGhpcy0+Y29uc3RydWN0KHJocy5kYXRhXyk7Ci0gICAgfQotICB9Ci0KLSAgb3B0aW9uYWxfZGF0
YShvcHRpb25hbF9kYXRhJiYgcmhzKSBub2V4Y2VwdCgKLSAgICAgIGFic2w6OmRlZmF1bHRfYWxs
b2NhdG9yX2lzX25vdGhyb3c6OnZhbHVlIHx8Ci0gICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9j
b25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkgewotICAgIGlmIChyaHMuZW5nYWdlZF8pIHsKLSAgICAg
IHRoaXMtPmNvbnN0cnVjdChzdGQ6Om1vdmUocmhzLmRhdGFfKSk7Ci0gICAgfQotICB9Ci0KLSAg
b3B0aW9uYWxfZGF0YSYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsX2RhdGEmIHJocykgewotICAg
IGlmIChyaHMuZW5nYWdlZF8pIHsKLSAgICAgIHRoaXMtPmFzc2lnbihyaHMuZGF0YV8pOwotICAg
IH0gZWxzZSB7Ci0gICAgICB0aGlzLT5kZXN0cnVjdCgpOwotICAgIH0KLSAgICByZXR1cm4gKnRo
aXM7Ci0gIH0KLQotICBvcHRpb25hbF9kYXRhJiBvcGVyYXRvcj0ob3B0aW9uYWxfZGF0YSYmIHJo
cykgbm9leGNlcHQoCi0gICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2
YWx1ZSYmCi0gICAgICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxUPjo6
dmFsdWUpIHsKLSAgICBpZiAocmhzLmVuZ2FnZWRfKSB7Ci0gICAgICB0aGlzLT5hc3NpZ24oc3Rk
Ojptb3ZlKHJocy5kYXRhXykpOwotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLT5kZXN0cnVjdCgp
OwotICAgIH0KLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLX07Ci0KLS8vIE9yZGVyZWQgYnkgbGV2
ZWwgb2YgcmVzdHJpY3Rpb24sIGZyb20gbG93IHRvIGhpZ2guCi0vLyBDb3B5YWJsZSBpbXBsaWVz
IG1vdmFibGUuCi1lbnVtIGNsYXNzIGNvcHlfdHJhaXRzIHsgY29weWFibGUgPSAwLCBtb3ZhYmxl
ID0gMSwgbm9uX21vdmFibGUgPSAyIH07Ci0KLS8vIEJhc2UgY2xhc3MgZm9yIGVuYWJsaW5nL2Rp
c2FibGluZyBjb3B5L21vdmUgY29uc3RydWN0b3IuCi10ZW1wbGF0ZSA8Y29weV90cmFpdHM+Ci1j
bGFzcyBvcHRpb25hbF9jdG9yX2Jhc2U7Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyBvcHRpb25hbF9j
dG9yX2Jhc2U8Y29weV90cmFpdHM6OmNvcHlhYmxlPiB7Ci0gcHVibGljOgotICBjb25zdGV4cHIg
b3B0aW9uYWxfY3Rvcl9iYXNlKCkgPSBkZWZhdWx0OwotICBvcHRpb25hbF9jdG9yX2Jhc2UoY29u
c3Qgb3B0aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWZhdWx0OwotICBvcHRpb25hbF9jdG9yX2Jhc2Uo
b3B0aW9uYWxfY3Rvcl9iYXNlJiYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfY3Rvcl9iYXNlJiBv
cGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWZhdWx0OwotICBvcHRpb25h
bF9jdG9yX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9jdG9yX2Jhc2UmJikgPSBkZWZhdWx0Owot
fTsKLQotdGVtcGxhdGUgPD4KLWNsYXNzIG9wdGlvbmFsX2N0b3JfYmFzZTxjb3B5X3RyYWl0czo6
bW92YWJsZT4gewotIHB1YmxpYzoKLSAgY29uc3RleHByIG9wdGlvbmFsX2N0b3JfYmFzZSgpID0g
ZGVmYXVsdDsKLSAgb3B0aW9uYWxfY3Rvcl9iYXNlKGNvbnN0IG9wdGlvbmFsX2N0b3JfYmFzZSYp
ID0gZGVsZXRlOwotICBvcHRpb25hbF9jdG9yX2Jhc2Uob3B0aW9uYWxfY3Rvcl9iYXNlJiYpID0g
ZGVmYXVsdDsKLSAgb3B0aW9uYWxfY3Rvcl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxf
Y3Rvcl9iYXNlJikgPSBkZWZhdWx0OwotICBvcHRpb25hbF9jdG9yX2Jhc2UmIG9wZXJhdG9yPShv
cHRpb25hbF9jdG9yX2Jhc2UmJikgPSBkZWZhdWx0OwotfTsKLQotdGVtcGxhdGUgPD4KLWNsYXNz
IG9wdGlvbmFsX2N0b3JfYmFzZTxjb3B5X3RyYWl0czo6bm9uX21vdmFibGU+IHsKLSBwdWJsaWM6
Ci0gIGNvbnN0ZXhwciBvcHRpb25hbF9jdG9yX2Jhc2UoKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFs
X2N0b3JfYmFzZShjb25zdCBvcHRpb25hbF9jdG9yX2Jhc2UmKSA9IGRlbGV0ZTsKLSAgb3B0aW9u
YWxfY3Rvcl9iYXNlKG9wdGlvbmFsX2N0b3JfYmFzZSYmKSA9IGRlbGV0ZTsKLSAgb3B0aW9uYWxf
Y3Rvcl9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWxfY3Rvcl9iYXNlJikgPSBkZWZhdWx0
OwotICBvcHRpb25hbF9jdG9yX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9jdG9yX2Jhc2UmJikg
PSBkZWZhdWx0OwotfTsKLQotLy8gQmFzZSBjbGFzcyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGNv
cHkvbW92ZSBhc3NpZ25tZW50LgotdGVtcGxhdGUgPGNvcHlfdHJhaXRzPgotY2xhc3Mgb3B0aW9u
YWxfYXNzaWduX2Jhc2U7Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyBvcHRpb25hbF9hc3NpZ25fYmFz
ZTxjb3B5X3RyYWl0czo6Y29weWFibGU+IHsKLSBwdWJsaWM6Ci0gIGNvbnN0ZXhwciBvcHRpb25h
bF9hc3NpZ25fYmFzZSgpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2UoY29uc3Qg
b3B0aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFsX2Fzc2lnbl9iYXNl
KG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jh
c2UmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFzZSYpID0gZGVmYXVsdDsKLSAg
b3B0aW9uYWxfYXNzaWduX2Jhc2UmIG9wZXJhdG9yPShvcHRpb25hbF9hc3NpZ25fYmFzZSYmKSA9
IGRlZmF1bHQ7Ci19OwotCi10ZW1wbGF0ZSA8PgotY2xhc3Mgb3B0aW9uYWxfYXNzaWduX2Jhc2U8
Y29weV90cmFpdHM6Om1vdmFibGU+IHsKLSBwdWJsaWM6Ci0gIGNvbnN0ZXhwciBvcHRpb25hbF9h
c3NpZ25fYmFzZSgpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2UoY29uc3Qgb3B0
aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFsX2Fzc2lnbl9iYXNlKG9w
dGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2Um
IG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFzZSYpID0gZGVsZXRlOwotICBvcHRp
b25hbF9hc3NpZ25fYmFzZSYgb3BlcmF0b3I9KG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVm
YXVsdDsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyBvcHRpb25hbF9hc3NpZ25fYmFzZTxjb3B5
X3RyYWl0czo6bm9uX21vdmFibGU+IHsKLSBwdWJsaWM6Ci0gIGNvbnN0ZXhwciBvcHRpb25hbF9h
c3NpZ25fYmFzZSgpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2UoY29uc3Qgb3B0
aW9uYWxfYXNzaWduX2Jhc2UmKSA9IGRlZmF1bHQ7Ci0gIG9wdGlvbmFsX2Fzc2lnbl9iYXNlKG9w
dGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVmYXVsdDsKLSAgb3B0aW9uYWxfYXNzaWduX2Jhc2Um
IG9wZXJhdG9yPShjb25zdCBvcHRpb25hbF9hc3NpZ25fYmFzZSYpID0gZGVsZXRlOwotICBvcHRp
b25hbF9hc3NpZ25fYmFzZSYgb3BlcmF0b3I9KG9wdGlvbmFsX2Fzc2lnbl9iYXNlJiYpID0gZGVs
ZXRlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgY29weV90cmFpdHMg
Z2V0X2N0b3JfY29weV90cmFpdHMoKSB7Ci0gIHJldHVybiBzdGQ6OmlzX2NvcHlfY29uc3RydWN0
aWJsZTxUPjo6dmFsdWUKLSAgICAgICAgICAgICA/IGNvcHlfdHJhaXRzOjpjb3B5YWJsZQotICAg
ICAgICAgICAgIDogc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlID8gY29weV90
cmFpdHM6Om1vdmFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IGNvcHlfdHJhaXRzOjpub25fbW92YWJsZTsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jb25zdGV4cHIgY29weV90cmFpdHMgZ2V0X2Fzc2lnbl9jb3B5X3RyYWl0cygp
IHsKLSAgcmV0dXJuIGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxUPjo6dmFsdWUgJiYKLSAgICAg
ICAgICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlCi0gICAgICAg
ICAgICAgPyBjb3B5X3RyYWl0czo6Y29weWFibGUKLSAgICAgICAgICAgICA6IGFic2w6OmlzX21v
dmVfYXNzaWduYWJsZTxUPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpp
c19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgPyBjb3B5
X3RyYWl0czo6bW92YWJsZQotICAgICAgICAgICAgICAgICAgIDogY29weV90cmFpdHM6Om5vbl9t
b3ZhYmxlOwotfQotCi0vLyBXaGV0aGVyIFQgaXMgY29uc3RydWN0aWJsZSBvciBjb252ZXJ0aWJs
ZSBmcm9tIG9wdGlvbmFsPFU+LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1z
dHJ1Y3QgaXNfY29uc3RydWN0aWJsZV9jb252ZXJ0aWJsZV9mcm9tX29wdGlvbmFsCi0gICAgOiBz
dGQ6OmludGVncmFsX2NvbnN0YW50PAotICAgICAgICAgIGJvb2wsIHN0ZDo6aXNfY29uc3RydWN0
aWJsZTxULCBvcHRpb25hbDxVPiY+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgICAgICBzdGQ6
OmlzX2NvbnN0cnVjdGlibGU8VCwgb3B0aW9uYWw8VT4mJj46OnZhbHVlIHx8Ci0gICAgICAgICAg
ICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBjb25zdCBvcHRpb25hbDxVPiY+Ojp2
YWx1ZSB8fAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgY29u
c3Qgb3B0aW9uYWw8VT4mJj46OnZhbHVlIHx8Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNf
Y29udmVydGlibGU8b3B0aW9uYWw8VT4mLCBUPjo6dmFsdWUgfHwKLSAgICAgICAgICAgICAgICAg
ICAgc3RkOjppc19jb252ZXJ0aWJsZTxvcHRpb25hbDxVPiYmLCBUPjo6dmFsdWUgfHwKLSAgICAg
ICAgICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxjb25zdCBvcHRpb25hbDxVPiYsIFQ+
Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPGNvbnN0
IG9wdGlvbmFsPFU+JiYsIFQ+Ojp2YWx1ZT4ge307Ci0KLS8vIFdoZXRoZXIgVCBpcyBjb25zdHJ1
Y3RpYmxlIG9yIGNvbnZlcnRpYmxlIG9yIGFzc2lnbmFibGUgZnJvbSBvcHRpb25hbDxVPi4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotc3RydWN0IGlzX2NvbnN0cnVjdGlibGVf
Y29udmVydGlibGVfYXNzaWduYWJsZV9mcm9tX29wdGlvbmFsCi0gICAgOiBzdGQ6OmludGVncmFs
X2NvbnN0YW50PAotICAgICAgICAgIGJvb2wsIGlzX2NvbnN0cnVjdGlibGVfY29udmVydGlibGVf
ZnJvbV9vcHRpb25hbDxULCBVPjo6dmFsdWUgfHwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpp
c19hc3NpZ25hYmxlPFQmLCBvcHRpb25hbDxVPiY+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmlzX2Fzc2lnbmFibGU8VCYsIG9wdGlvbmFsPFU+JiY+Ojp2YWx1ZSB8fAotICAg
ICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Fzc2lnbmFibGU8VCYsIGNvbnN0IG9wdGlvbmFsPFU+
Jj46OnZhbHVlIHx8Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfYXNzaWduYWJsZTxUJiwg
Y29uc3Qgb3B0aW9uYWw8VT4mJj46OnZhbHVlPiB7fTsKLQotLy8gSGVscGVyIGZ1bmN0aW9uIHVz
ZWQgYnkgW29wdGlvbmFsLnJlbG9wc10sIFtvcHRpb25hbC5jb21wX3dpdGhfdF0sCi0vLyBmb3Ig
Y2hlY2tpbmcgd2hldGhlciBhbiBleHByZXNzaW9uIGlzIGNvbnZlcnRpYmxlIHRvIGJvb2wuCi1i
b29sIGNvbnZlcnRpYmxlX3RvX2Jvb2woYm9vbCk7Ci0KLS8vIEJhc2UgY2xhc3MgZm9yIHN0ZDo6
aGFzaDxhYnNsOjpvcHRpb25hbDxUPj46Ci0vLyBJZiBzdGQ6Omhhc2g8c3RkOjpyZW1vdmVfY29u
c3RfdDxUPj4gaXMgZW5hYmxlZCwgaXQgcHJvdmlkZXMgb3BlcmF0b3IoKSB0bwotLy8gY29tcHV0
ZSB0aGUgaGFzaDsgT3RoZXJ3aXNlLCBpdCBpcyBkaXNhYmxlZC4KLS8vIFJlZmVyZW5jZSBONDY1
OSAyMy4xNC4xNSBbdW5vcmQuaGFzaF0uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSBzaXplX3Q+Ci1zdHJ1Y3Qgb3B0aW9uYWxfaGFzaF9iYXNlIHsKLSAgb3B0aW9uYWxfaGFzaF9i
YXNlKCkgPSBkZWxldGU7Ci0gIG9wdGlvbmFsX2hhc2hfYmFzZShjb25zdCBvcHRpb25hbF9oYXNo
X2Jhc2UmKSA9IGRlbGV0ZTsKLSAgb3B0aW9uYWxfaGFzaF9iYXNlKG9wdGlvbmFsX2hhc2hfYmFz
ZSYmKSA9IGRlbGV0ZTsKLSAgb3B0aW9uYWxfaGFzaF9iYXNlJiBvcGVyYXRvcj0oY29uc3Qgb3B0
aW9uYWxfaGFzaF9iYXNlJikgPSBkZWxldGU7Ci0gIG9wdGlvbmFsX2hhc2hfYmFzZSYgb3BlcmF0
b3I9KG9wdGlvbmFsX2hhc2hfYmFzZSYmKSA9IGRlbGV0ZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotc3RydWN0IG9wdGlvbmFsX2hhc2hfYmFzZTxULCBkZWNsdHlwZShzdGQ6Omhhc2g8
YWJzbDo6cmVtb3ZlX2NvbnN0X3Q8VD4gPigpKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpkZWNsdmFsPGFic2w6OnJlbW92ZV9jb25zdF90PFQ+ID4oKSkpPiB7Ci0gIHVz
aW5nIGFyZ3VtZW50X3R5cGUgPSBhYnNsOjpvcHRpb25hbDxUPjsKLSAgdXNpbmcgcmVzdWx0X3R5
cGUgPSBzaXplX3Q7Ci0gIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IGFic2w6Om9wdGlvbmFsPFQ+
JiBvcHQpIGNvbnN0IHsKLSAgICBpZiAob3B0KSB7Ci0gICAgICByZXR1cm4gc3RkOjpoYXNoPGFi
c2w6OnJlbW92ZV9jb25zdF90PFQ+ID4oKSgqb3B0KTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oMHgyOTc4MTRhYWFkMTk2ZTZkVUxMKTsKLSAgICB9Ci0g
IH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBvcHRpb25hbF9pbnRlcm5hbAotCi0vLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLy8gYWJzbDo6b3B0aW9uYWwgY2xhc3MgZGVmaW5pdGlvbgotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBvcHRpb25h
bCA6IHByaXZhdGUgb3B0aW9uYWxfaW50ZXJuYWw6Om9wdGlvbmFsX2RhdGE8VD4sCiAgICAgICAg
ICAgICAgICAgIHByaXZhdGUgb3B0aW9uYWxfaW50ZXJuYWw6Om9wdGlvbmFsX2N0b3JfYmFzZTwK
LSAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2ludGVybmFsOjpnZXRfY3Rvcl9jb3B5X3Ry
YWl0czxUPigpPiwKKyAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2ludGVybmFsOjpjdG9y
X2NvcHlfdHJhaXRzPFQ+Ojp0cmFpdHM+LAogICAgICAgICAgICAgICAgICBwcml2YXRlIG9wdGlv
bmFsX2ludGVybmFsOjpvcHRpb25hbF9hc3NpZ25fYmFzZTwKLSAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbmFsX2ludGVybmFsOjpnZXRfYXNzaWduX2NvcHlfdHJhaXRzPFQ+KCk+IHsKKyAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsX2ludGVybmFsOjphc3NpZ25fY29weV90cmFpdHM8VD46
OnRyYWl0cz4gewogICB1c2luZyBkYXRhX2Jhc2UgPSBvcHRpb25hbF9pbnRlcm5hbDo6b3B0aW9u
YWxfZGF0YTxUPjsKIAogIHB1YmxpYzoKQEAgLTUxMSwxMCArMTQyLDExIEBAIGNsYXNzIG9wdGlv
bmFsIDogcHJpdmF0ZSBvcHRpb25hbF9pbnRlcm5hbDo6b3B0aW9uYWxfZGF0YTxUPiwKICAgLy8g
dGhlIGFyZ3VtZW50cyBgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uYCAgd2l0aGluIHRoZSBg
b3B0aW9uYWxgLgogICAvLyAoVGhlIGBpbl9wbGFjZV90YCBpcyBhIHRhZyB1c2VkIHRvIGluZGlj
YXRlIHRoYXQgdGhlIGNvbnRhaW5lZCBvYmplY3QKICAgLy8gc2hvdWxkIGJlIGNvbnN0cnVjdGVk
IGluLXBsYWNlLikKLSAgLy8KLSAgLy8gVE9ETyhhYnNsLXRlYW0pOiBBZGQgc3RkOjppc19jb25z
dHJ1Y3RpYmxlPFQsIEFyZ3MmJi4uLj4gU0ZJTkFFLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KLSAgY29uc3RleHByIGV4cGxpY2l0IG9wdGlvbmFsKGluX3BsYWNlX3QsIEFyZ3MmJi4u
LiBhcmdzKQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5QbGFjZVQsIHR5cGVuYW1lLi4uIEFyZ3Ms
CisgICAgICAgICAgICBhYnNsOjplbmFibGVfaWZfdDxhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAg
ICAgICAgICAgICBzdGQ6OmlzX3NhbWU8SW5QbGFjZVQsIGluX3BsYWNlX3Q+LAorICAgICAgICAg
ICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBBcmdzJiYuLi4+ID46OnZhbHVlPiogPSBu
dWxscHRyPgorICBjb25zdGV4cHIgZXhwbGljaXQgb3B0aW9uYWwoSW5QbGFjZVQsIEFyZ3MmJi4u
LiBhcmdzKQogICAgICAgOiBkYXRhX2Jhc2UoaW5fcGxhY2VfdCgpLCBhYnNsOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSB7fQogCiAgIC8vIENvbnN0cnVjdHMgYSBub24tZW1wdHkgYG9wdGlvbmFs
YCBkaXJlY3QtaW5pdGlhbGl6ZWQgdmFsdWUgb2YgdHlwZSBgVGAgZnJvbQpAQCAtNzUwLDExICsz
ODIsMTAgQEAgY2xhc3Mgb3B0aW9uYWwgOiBwcml2YXRlIG9wdGlvbmFsX2ludGVybmFsOjpvcHRp
b25hbF9kYXRhPFQ+LAogICAvLyBTd2FwLCBzdGFuZGFyZCBzZW1hbnRpY3MKICAgdm9pZCBzd2Fw
KG9wdGlvbmFsJiByaHMpIG5vZXhjZXB0KAogICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfY29u
c3RydWN0aWJsZTxUPjo6dmFsdWUmJgotICAgICAgICAgIHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFs
dWUpIHsKKyAgICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNOb3Rocm93U3dhcHBhYmxl
PFQ+Ojp2YWx1ZSkgewogICAgIGlmICgqdGhpcykgewogICAgICAgaWYgKHJocykgewotICAgICAg
ICB1c2luZyBzdGQ6OnN3YXA7Ci0gICAgICAgIHN3YXAoKip0aGlzLCAqcmhzKTsKKyAgICAgICAg
dHlwZV90cmFpdHNfaW50ZXJuYWw6OlN3YXAoKip0aGlzLCAqcmhzKTsKICAgICAgIH0gZWxzZSB7
CiAgICAgICAgIHJocy5jb25zdHJ1Y3Qoc3RkOjptb3ZlKCoqdGhpcykpOwogICAgICAgICB0aGlz
LT5kZXN0cnVjdCgpOwpAQCAtNzkwLDcgKzQyMSw5IEBAIGNsYXNzIG9wdGlvbmFsIDogcHJpdmF0
ZSBvcHRpb25hbF9pbnRlcm5hbDo6b3B0aW9uYWxfZGF0YTxUPiwKICAgLy8KICAgLy8gQWNjZXNz
ZXMgdGhlIHVuZGVybHlpbmcgYFRgIHZhbHVlIG9mIGFuIGBvcHRpb25hbGAuIElmIHRoZSBgb3B0
aW9uYWxgIGlzCiAgIC8vIGVtcHR5LCBiZWhhdmlvciBpcyB1bmRlZmluZWQuCi0gIGNvbnN0ZXhw
ciBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCAmIHsgcmV0dXJuIHJlZmVyZW5jZSgpOyB9Cisg
IGNvbnN0ZXhwciBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCYgeworICAgIHJldHVybiBBQlNM
X0FTU0VSVCh0aGlzLT5lbmdhZ2VkXyksIHJlZmVyZW5jZSgpOworICB9CiAgIFQmIG9wZXJhdG9y
KigpICYgewogICAgIGFzc2VydCh0aGlzLT5lbmdhZ2VkXyk7CiAgICAgcmV0dXJuIHJlZmVyZW5j
ZSgpOwpAQCAtODY2LDcgKzQ5OSw3IEBAIGNsYXNzIG9wdGlvbmFsIDogcHJpdmF0ZSBvcHRpb25h
bF9pbnRlcm5hbDo6b3B0aW9uYWxfZGF0YTxUPiwKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CiAg
IGNvbnN0ZXhwciBUIHZhbHVlX29yKFUmJiB2KSBjb25zdCYgewogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8dmFsdWVfdHlwZT46OnZhbHVlLAotICAgICAgICAg
ICAgICAgICAgIm9wdGlvbmFsPFQ+Ojp2YWx1ZV9vcjogVCBtdXN0IGJ5IGNvcHkgY29uc3RydWN0
aWJsZSIpOworICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsPFQ+Ojp2YWx1ZV9vcjogVCBtdXN0
IGJlIGNvcHkgY29uc3RydWN0aWJsZSIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19jb252
ZXJ0aWJsZTxVJiYsIHZhbHVlX3R5cGU+Ojp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICJvcHRp
b25hbDxUPjo6dmFsdWVfb3I6IFUgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBUIik7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGJvb2w+KCp0aGlzKQpAQCAtODc2LDcgKzUwOSw3IEBAIGNsYXNzIG9w
dGlvbmFsIDogcHJpdmF0ZSBvcHRpb25hbF9pbnRlcm5hbDo6b3B0aW9uYWxfZGF0YTxUPiwKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+CiAgIFQgdmFsdWVfb3IoVSYmIHYpICYmIHsgIC8vIE5PTElO
VChidWlsZC9jKysxMSkKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3Rp
YmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbDxUPjo6
dmFsdWVfb3I6IFQgbXVzdCBieSBjb3B5IGNvbnN0cnVjdGlibGUiKTsKKyAgICAgICAgICAgICAg
ICAgICJvcHRpb25hbDxUPjo6dmFsdWVfb3I6IFQgbXVzdCBiZSBtb3ZlIGNvbnN0cnVjdGlibGUi
KTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29udmVydGlibGU8VSYmLCB2YWx1ZV90eXBl
Pjo6dmFsdWUsCiAgICAgICAgICAgICAgICAgICAib3B0aW9uYWw8VD46OnZhbHVlX29yOiBVIG11
c3QgYmUgY29udmVydGlibGUgdG8gVCIpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPigq
dGhpcykgPyBzdGQ6Om1vdmUoKip0aGlzKQpAQCAtOTA2LDEyICs1MzksMTAgQEAgY2xhc3Mgb3B0
aW9uYWwgOiBwcml2YXRlIG9wdGlvbmFsX2ludGVybmFsOjpvcHRpb25hbF9kYXRhPFQ+LAogLy8K
IC8vIFBlcmZvcm1zIGEgc3dhcCBiZXR3ZWVuIHR3byBgYWJzbDo6b3B0aW9uYWxgIG9iamVjdHMs
IHVzaW5nIHN0YW5kYXJkCiAvLyBzZW1hbnRpY3MuCi0vLwotLy8gTk9URTogd2UgYXNzdW1lIGBp
c19zd2FwcGFibGUoKWAgaXMgYWx3YXlzIGB0cnVlYC4gQSBjb21waWxlIGVycm9yIHdpbGwKLS8v
IHJlc3VsdCBpZiB0aGlzIGlzIG5vdCB0aGUgY2FzZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBULAot
ICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3Rp
YmxlPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sPjo6
dHlwZSA9IGZhbHNlPgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJs
ZTxUPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfdHJhaXRz
X2ludGVybmFsOjpJc1N3YXBwYWJsZTxUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2w+Ojp0eXBlID0gZmFsc2U+CiB2b2lkIHN3YXAob3B0aW9uYWw8VD4mIGEsIG9wdGlv
bmFsPFQ+JiBiKSBub2V4Y2VwdChub2V4Y2VwdChhLnN3YXAoYikpKSB7CiAgIGEuc3dhcChiKTsK
IH0KQEAgLTExMzQsNyArNzY1LDYgQEAgc3RydWN0IGhhc2g8YWJzbDo6b3B0aW9uYWw8VD4gPgog
CiB9ICAvLyBuYW1lc3BhY2Ugc3RkCiAKLSN1bmRlZiBBQlNMX09QVElPTkFMX1VTRV9JTkhFUklU
SU5HX0NPTlNUUlVDVE9SUwogI3VuZGVmIEFCU0xfTVNWQ19DT05TVEVYUFJfQlVHX0lOX1VOSU9O
X0xJS0VfQ0xBU1MKIAogI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX09QVElPTkFMCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy9vcHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKaW5kZXggZDExN2VlNTE4
NDkxOWZlNmIxMmQxMjMzZGUxNmU5YWVlODBlODAzZS4uYWFmOGViY2Q5ODg2ODNhN2M3Y2ZhMWI1
OWUxNjJkNWMyMDk4ZDYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfZXhjZXB0
aW9uX3NhZmV0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX2V4Y2VwdGlvbl9z
YWZldHlfdGVzdC5jYwpAQCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29w
dGlvbmFsX3Rlc3QuY2MKaW5kZXggZDkwZGI5ZjgyMWI1MmQ0YTkzNTU1Nzc5MmUyMTJlMTQxOTll
NzgwOS4uZTZhMzZlYjhlMjZmMzY2MDNhMThkNmZiM2IyMzJiZTA0YWFkNGU2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25h
bF90ZXN0LmNjCkBAIC00LDcgKzQsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0x
NTcsNiArMTU3LDE2IEBAIHN0cnVjdCBOb25Nb3ZhYmxlIHsKICAgTm9uTW92YWJsZSYgb3BlcmF0
b3I9KE5vbk1vdmFibGUmJikgPSBkZWxldGU7CiB9OwogCitzdHJ1Y3QgTm9EZWZhdWx0IHsKKyAg
Tm9EZWZhdWx0KCkgPSBkZWxldGU7CisgIE5vRGVmYXVsdChjb25zdCBOb0RlZmF1bHQmKSB7fQor
ICBOb0RlZmF1bHQmIG9wZXJhdG9yPShjb25zdCBOb0RlZmF1bHQmKSB7IHJldHVybiAqdGhpczsg
fQorfTsKKworc3RydWN0IENvbnZlcnRzRnJvbUluUGxhY2VUIHsKKyAgQ29udmVydHNGcm9tSW5Q
bGFjZVQoYWJzbDo6aW5fcGxhY2VfdCkge30gIC8vIE5PTElOVAorfTsKKwogVEVTVChvcHRpb25h
bFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgewogICBhYnNsOjpvcHRpb25hbDxpbnQ+IGVtcHR5
OwogICBFWFBFQ1RfRkFMU0UoZW1wdHkpOwpAQCAtMTY5LDE1ICsxNzksNyBAQCBURVNUKG9wdGlv
bmFsVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7CiBURVNUKG9wdGlvbmFsVGVzdCwgbnVsbG9w
dENvbnN0cnVjdG9yKSB7CiAgIGFic2w6Om9wdGlvbmFsPGludD4gZW1wdHkoYWJzbDo6bnVsbG9w
dCk7CiAgIEVYUEVDVF9GQUxTRShlbXB0eSk7Ci0KLSNpZmRlZiBBQlNMX0hBVkVfU1REX09QVElP
TkFMCiAgIGNvbnN0ZXhwciBhYnNsOjpvcHRpb25hbDxpbnQ+IGNlbXB0eXthYnNsOjpudWxsb3B0
fTsKLSNlbHNlCi0gIC8vIENyZWF0aW5nIGEgdGVtcG9yYXJ5IGFic2w6Om51bGxvcHRfdCBvYmpl
Y3QgaW5zdGVhZCBvZiB1c2luZyBhYnNsOjpudWxsb3B0Ci0gIC8vIGJlY2F1c2UgYWJzbDo6bnVs
bG9wdCBjYW5ub3QgYmUgY29uc3RleHByIGFuZCBoYXZlIGV4dGVybmFsIGxpbmthZ2UgYXQgdGhl
Ci0gIC8vIHNhbWUgdGltZS4KLSAgY29uc3RleHByIGFic2w6Om9wdGlvbmFsPGludD4gY2VtcHR5
e2Fic2w6Om51bGxvcHRfdChhYnNsOjpudWxsb3B0X3Q6OmluaXQpfTsKLSNlbmRpZgogICBzdGF0
aWNfYXNzZXJ0KCFjZW1wdHkuaGFzX3ZhbHVlKCksICIiKTsKICAgRVhQRUNUX1RSVUUoKHN0ZDo6
aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPGFic2w6Om9wdGlvbmFsPGludD4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpudWxsb3B0X3Q+Ojp2YWx1
ZSkpOwpAQCAtMzM3LDE2ICszMzksMTggQEAgVEVTVChvcHRpb25hbFRlc3QsIEluUGxhY2VDb25z
dHJ1Y3RvcikgewogICBzdGF0aWNfYXNzZXJ0KCgqb3B0MikueCA9PSBDb25zdGV4cHJUeXBlOjpr
Q3RvckluaXRpYWxpemVyTGlzdCwgIiIpOwogI2VuZGlmCiAKLSAgLy8gVE9ETyhhYnNsLXRlYW0p
OiB1bmNvbW1lbnQgdGhlc2Ugd2hlbiBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgQXJncyYmLi4u
PgotICAvLyBTRklOQUUgaXMgYWRkZWQgdG8gb3B0aW9uYWw6Om9wdGlvbmFsKGFic2w6OmluX3Bs
YWNlX3QsIEFyZ3MmJi4uLikuCi0gIC8vIHN0cnVjdCBJIHsKLSAgLy8gICBJKGFic2w6OmluX3Bs
YWNlX3QpOwotICAvLyB9OworICBFWFBFQ1RfRkFMU0UoKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxh
YnNsOjpvcHRpb25hbDxDb252ZXJ0c0Zyb21JblBsYWNlVD4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFic2w6OmluX3BsYWNlX3Q+Ojp2YWx1ZSkpOworICBFWFBFQ1Rf
RkFMU0UoKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxhYnNsOjpvcHRpb25hbDxDb252ZXJ0c0Zyb21J
blBsYWNlVD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFi
c2w6OmluX3BsYWNlX3QmPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICAoc3RkOjpp
c19jb25zdHJ1Y3RpYmxlPGFic2w6Om9wdGlvbmFsPENvbnZlcnRzRnJvbUluUGxhY2VUPiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6aW5fcGxhY2VfdCwgYWJzbDo6aW5fcGxh
Y2VfdD46OnZhbHVlKSk7CiAKLSAgLy8gRVhQRUNUX0ZBTFNFKChzdGQ6OmlzX2NvbnN0cnVjdGli
bGU8YWJzbDo6b3B0aW9uYWw8ST4sCi0gIC8vIGFic2w6OmluX3BsYWNlX3Q+Ojp2YWx1ZSkpOwot
ICAvLyBFWFBFQ1RfRkFMU0UoKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxhYnNsOjpvcHRpb25hbDxJ
PiwgY29uc3QKLSAgLy8gYWJzbDo6aW5fcGxhY2VfdCY+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFM
U0UoKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxhYnNsOjpvcHRpb25hbDxOb0RlZmF1bHQ+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjppbl9wbGFjZV90Pjo6dmFs
dWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChzdGQ6OmlzX2NvbnN0cnVjdGlibGU8YWJzbDo6b3B0aW9u
YWw8Tm9EZWZhdWx0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6aW5fcGxhY2VfdCYmPjo6dmFsdWUpKTsKIH0KIAogLy8gdGVtcGxhdGU8VT1UPiBvcHRpb25h
bChVJiYpOwpAQCAtMTA0Miw5ICsxMDQ2LDkgQEAgVEVTVChvcHRpb25hbFRlc3QsIFZhbHVlKSB7
CiAgIC8vIHRlc3QgZXhjZXB0aW9uIHRocm93IG9uIHZhbHVlKCkKICAgYWJzbDo6b3B0aW9uYWw8
aW50PiBlbXB0eTsKICNpZmRlZiBBQlNMX0hBVkVfRVhDRVBUSU9OUwotICBFWFBFQ1RfVEhST1co
ZW1wdHkudmFsdWUoKSwgYWJzbDo6YmFkX29wdGlvbmFsX2FjY2Vzcyk7CisgIEVYUEVDVF9USFJP
Vygodm9pZCllbXB0eS52YWx1ZSgpLCBhYnNsOjpiYWRfb3B0aW9uYWxfYWNjZXNzKTsKICNlbHNl
Ci0gIEVYUEVDVF9ERUFUSChlbXB0eS52YWx1ZSgpLCAiQmFkIG9wdGlvbmFsIGFjY2VzcyIpOwor
ICBFWFBFQ1RfREVBVEgoKHZvaWQpZW1wdHkudmFsdWUoKSwgIkJhZCBvcHRpb25hbCBhY2Nlc3Mi
KTsKICNlbmRpZgogCiAgIC8vIHRlc3QgY29uc3RleHByIHZhbHVlKCkKQEAgLTE0NzYsOCArMTQ4
MCw4IEBAIFRFU1Qob3B0aW9uYWxUZXN0LCBNb3ZlQXNzaWduUmVncmVzc2lvbikgewogCiBURVNU
KG9wdGlvbmFsVGVzdCwgVmFsdWVUeXBlKSB7CiAgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3NhbWU8
YWJzbDo6b3B0aW9uYWw8aW50Pjo6dmFsdWVfdHlwZSwgaW50Pjo6dmFsdWUpKTsKLSAgRVhQRUNU
X1RSVUUoCi0gICAgICAoc3RkOjppc19zYW1lPGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPjo6
dmFsdWVfdHlwZSwgc3RkOjpzdHJpbmc+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoc3RkOjpp
c19zYW1lPGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPjo6dmFsdWVfdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZz46OnZhbHVlKSk7CiAgIEVYUEVDVF9GQUxT
RSgKICAgICAgIChzdGQ6OmlzX3NhbWU8YWJzbDo6b3B0aW9uYWw8aW50Pjo6dmFsdWVfdHlwZSwg
YWJzbDo6bnVsbG9wdF90Pjo6dmFsdWUpKTsKIH0KQEAgLTE1MDQsMTggKzE1MDgsMTkgQEAgVEVT
VChvcHRpb25hbFRlc3QsIEhhc2gpIHsKIAogICBzdGF0aWNfYXNzZXJ0KGlzX2hhc2hfZW5hYmxl
ZF9mb3I8YWJzbDo6b3B0aW9uYWw8aW50Pj46OnZhbHVlLCAiIik7CiAgIHN0YXRpY19hc3NlcnQo
aXNfaGFzaF9lbmFibGVkX2ZvcjxhYnNsOjpvcHRpb25hbDxIYXNoYWJsZT4+Ojp2YWx1ZSwgIiIp
OworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgYWJzbDo6dHlwZV90cmFpdHNfaW50ZXJuYWw6Oklz
SGFzaGFibGU8YWJzbDo6b3B0aW9uYWw8aW50Pj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3Nl
cnQoCisgICAgICBhYnNsOjp0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoYWJsZTxhYnNsOjpv
cHRpb25hbDxIYXNoYWJsZT4+Ojp2YWx1ZSwKKyAgICAgICIiKTsKKyAgYWJzbDo6dHlwZV90cmFp
dHNfaW50ZXJuYWw6OkFzc2VydEhhc2hFbmFibGVkPGFic2w6Om9wdGlvbmFsPGludD4+KCk7Cisg
IGFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjpBc3NlcnRIYXNoRW5hYmxlZDxhYnNsOjpvcHRp
b25hbDxIYXNoYWJsZT4+KCk7CiAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCAoZGVmaW5lZChf
TElCQ1BQX1ZFUlNJT04pICYmIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX0xJQkNQUF9W
RVJTSU9OIDwgNDAwMCAmJiBfTElCQ1BQX1NURF9WRVIgPiAxMSkKLSAgLy8gRm9yIE1TVkMgYW5k
IGxpYmMrKyAoPCA0LjAgYW5kIGMrKzE0KSwgc3RkOjpoYXNoIHByaW1hcnkgdGVtcGxhdGUgaGFz
IGEKLSAgLy8gc3RhdGljX2Fzc2VydCB0byBjYXRjaCBhbnkgdXNlci1kZWZpbmVkIHR5cGUgdGhh
dCBkb2Vzbid0IHByb3ZpZGUgYSBoYXNoCi0gIC8vIHNwZWNpYWxpemF0aW9uLiBTbyBpbnN0YW50
aWF0aW5nIHN0ZDo6aGFzaDxhYnNsOjpvcHRpb25hbDxUPj4gd2lsbCByZXN1bHQKLSAgLy8gaW4g
YSBoYXJkIGVycm9yIHdoaWNoIGlzIG5vdCBTRklOQUUgZnJpZW5kbHkuCi0jZGVmaW5lIEFCU0xf
U1REX0hBU0hfTk9UX1NGSU5BRV9GUklFTkRMWSAxCi0jZW5kaWYKLQotI2lmbmRlZiBBQlNMX1NU
RF9IQVNIX05PVF9TRklOQUVfRlJJRU5ETFkKKyNpZiBBQlNMX01FVEFfSU5URVJOQUxfU1REX0hB
U0hfU0ZJTkFFX0ZSSUVORExZXwogICBzdGF0aWNfYXNzZXJ0KCFpc19oYXNoX2VuYWJsZWRfZm9y
PGFic2w6Om9wdGlvbmFsPE5vbkhhc2hhYmxlPj46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3Nl
cnQoIWFic2w6OnR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hhYmxlPAorICAgICAgICAgICAg
ICAgICAgICBhYnNsOjpvcHRpb25hbDxOb25IYXNoYWJsZT4+Ojp2YWx1ZSwKKyAgICAgICAgICAg
ICAgICAiIik7CiAjZW5kaWYKIAogICAvLyBsaWJzdGRjKysgc3RkOjpvcHRpb25hbCBpcyBtaXNz
aW5nIHJlbW92ZV9jb25zdF90LCBpLmUuIGl0J3MgdXNpbmcKQEAgLTE2MjMsNCArMTYyOCwyOSBA
QCBURVNUKG9wdGlvbmFsVGVzdCwgQXNzaWdubWVudENvbnN0cmFpbnRzKSB7CiAgIEVYUEVDVF9U
UlVFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxBbnlMaWtlPj46OnZh
bHVlKTsKIH0KIAorI2lmICFkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQorc3RydWN0IE5lc3RlZENs
YXNzQnVnIHsKKyAgc3RydWN0IElubmVyIHsKKyAgICBib29sIGR1bW15ID0gZmFsc2U7CisgIH07
CisgIGFic2w6Om9wdGlvbmFsPElubmVyPiB2YWx1ZTsKK307CisKK1RFU1Qob3B0aW9uYWxUZXN0
LCBJblBsYWNlVFNGSU5BRUJ1ZykgeworICBOZXN0ZWRDbGFzc0J1ZyBiOworICAoKHZvaWQpYik7
CisgIHVzaW5nIElubmVyID0gTmVzdGVkQ2xhc3NCdWc6OklubmVyOworCisgIEVYUEVDVF9UUlVF
KChzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxJbm5lcj46OnZhbHVlKSk7CisgIEVYUEVD
VF9UUlVFKChzdGQ6OmlzX2NvbnN0cnVjdGlibGU8SW5uZXI+Ojp2YWx1ZSkpOworICBFWFBFQ1Rf
VFJVRSgKKyAgICAgIChzdGQ6OmlzX2NvbnN0cnVjdGlibGU8YWJzbDo6b3B0aW9uYWw8SW5uZXI+
LCBhYnNsOjppbl9wbGFjZV90Pjo6dmFsdWUpKTsKKworICBhYnNsOjpvcHRpb25hbDxJbm5lcj4g
byhhYnNsOjppbl9wbGFjZSk7CisgIEVYUEVDVF9UUlVFKG8uaGFzX3ZhbHVlKCkpOworICBvLmVt
cGxhY2UoKTsKKyAgRVhQRUNUX1RSVUUoby5oYXNfdmFsdWUoKSk7Cit9CisjZW5kaWYgIC8vICFk
ZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQorCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3R5cGVzL3NwYW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW4uaAppbmRleCA5MTFhZjBjNTdhNjFh
Njc4NTU1N2E5MWZiYjY5MmQ3ZDkwMTkxNDU4Li5iMDA3ZmMxZmQzZGY4Mzc3MjY0MTNmNzBlMDU1
Y2VhMWMxODk1YjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvc3Bhbi5oCkBAIC01LDcgKzUsNyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAogLy8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBA
IC02MCwxMTUgKzYwLDE4IEBACiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxpbml0aWFs
aXplcl9saXN0PgogI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaW5jbHVkZSAiYWJzbC9h
bGdvcml0aG0vYWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Rocm93
X2RlbGVnYXRlLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgogI2luY2x1ZGUgImFi
c2wvYmFzZS9vcHRpbWl6YXRpb24uaCIKLSNpbmNsdWRlICJhYnNsL2Jhc2UvcG9ydC5oIgorI2lu
Y2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiICAgIC8vIFRPRE8oc3RyZWwpOiByZW1vdmUgdGhpcyBp
bmNsdWRlCiAjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJz
bC90eXBlcy9pbnRlcm5hbC9zcGFuLmgiCiAKIG5hbWVzcGFjZSBhYnNsIHsKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBTcGFuOwotCi1uYW1lc3BhY2Ugc3Bhbl9pbnRlcm5hbCB7Ci0v
LyBBIGNvbnN0ZXhwciBtaW4gZnVuY3Rpb24KLWNvbnN0ZXhwciBzaXplX3QgTWluKHNpemVfdCBh
LCBzaXplX3QgYikgbm9leGNlcHQgeyByZXR1cm4gYSA8IGIgPyBhIDogYjsgfQotCi0vLyBXcmFw
cGVycyBmb3IgYWNjZXNzIHRvIGNvbnRhaW5lciBkYXRhIHBvaW50ZXJzLgotdGVtcGxhdGUgPHR5
cGVuYW1lIEM+Ci1jb25zdGV4cHIgYXV0byBHZXREYXRhSW1wbChDJiBjLCBjaGFyKSBub2V4Y2Vw
dCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKLSAgICAtPiBkZWNsdHlwZShjLmRhdGEo
KSkgewotICByZXR1cm4gYy5kYXRhKCk7Ci19Ci0KLS8vIEJlZm9yZSBDKysxNywgc3RyaW5nOjpk
YXRhIHJldHVybnMgYSBjb25zdCBjaGFyKiBpbiBhbGwgY2FzZXMuCi1pbmxpbmUgY2hhciogR2V0
RGF0YUltcGwoc3RkOjpzdHJpbmcmIHMsICAvLyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQot
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCkgbm9leGNlcHQgewotICByZXR1cm4gJnNbMF07
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDPgotY29uc3RleHByIGF1dG8gR2V0RGF0YShDJiBj
KSBub2V4Y2VwdCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKLSAgICAtPiBkZWNsdHlw
ZShHZXREYXRhSW1wbChjLCAwKSkgewotICByZXR1cm4gR2V0RGF0YUltcGwoYywgMCk7Ci19Ci0K
LS8vIERldGVjdGlvbiBpZGlvbXMgZm9yIHNpemUoKSBhbmQgZGF0YSgpLgotdGVtcGxhdGUgPHR5
cGVuYW1lIEM+Ci11c2luZyBIYXNTaXplID0KLSAgICBzdGQ6OmlzX2ludGVncmFsPGFic2w6OmRl
Y2F5X3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEMmPigpLnNpemUoKSk+PjsKLQotLy8gV2Ugd2Fu
dCB0byBlbmFibGUgY29udmVyc2lvbiBmcm9tIHZlY3RvcjxUKj4gdG8gU3Bhbjxjb25zdCBUKiBj
b25zdD4gYnV0Ci0vLyBkaXNhYmxlIGNvbnZlcnNpb24gZnJvbSB2ZWN0b3I8RGVyaXZlZD4gdG8g
U3BhbjxCYXNlPi4gSGVyZSB3ZSB1c2UKLS8vIHRoZSBmYWN0IHRoYXQgVSoqIGlzIGNvbnZlcnRp
YmxlIHRvIFEqIGNvbnN0KiBpZiBhbmQgb25seSBpZiBRIGlzIHRoZSBzYW1lCi0vLyB0eXBlIG9y
IGEgbW9yZSBjdi1xdWFsaWZpZWQgdmVyc2lvbiBvZiBVLiAgV2UgYWxzbyBkZWNheSB0aGUgcmVz
dWx0IHR5cGUgb2YKLS8vIGRhdGEoKSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIGNsYXNzZXMgd2hp
Y2ggaGF2ZSBhIG1lbWJlciBmdW5jdGlvbiBkYXRhKCkKLS8vIHdoaWNoIHJldHVybnMgYSByZWZl
cmVuY2UuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4KLXVzaW5nIEhhc0RhdGEg
PQotICAgIHN0ZDo6aXNfY29udmVydGlibGU8YWJzbDo6ZGVjYXlfdDxkZWNsdHlwZShHZXREYXRh
KHN0ZDo6ZGVjbHZhbDxDJj4oKSkpPiosCi0gICAgICAgICAgICAgICAgICAgICAgICBUKiBjb25z
dCo+OwotCi0vLyBFeHRyYWN0cyB2YWx1ZSB0eXBlIGZyb20gYSBDb250YWluZXIKLXRlbXBsYXRl
IDx0eXBlbmFtZSBDPgotc3RydWN0IEVsZW1lbnRUeXBlIHsKLSAgdXNpbmcgdHlwZSA9IHR5cGVu
YW1lIGFic2w6OnJlbW92ZV9yZWZlcmVuY2VfdDxDPjo6dmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KLXN0cnVjdCBFbGVtZW50VHlwZTxUICgmKVtOXT4g
ewotICB1c2luZyB0eXBlID0gVDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDPgotdXNpbmcg
RWxlbWVudFQgPSB0eXBlbmFtZSBFbGVtZW50VHlwZTxDPjo6dHlwZTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci11c2luZyBFbmFibGVJZk11dGFibGUgPQotICAgIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPCFzdGQ6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwgaW50Pjo6dHlwZTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1ib29sIEVxdWFsSW1wbChTcGFuPFQ+IGEsIFNwYW48VD4gYikgewotICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29uc3Q8VD46OnZhbHVlLCAiIik7Ci0gIHJldHVybiBhYnNs
OjplcXVhbChhLmJlZ2luKCksIGEuZW5kKCksIGIuYmVnaW4oKSwgYi5lbmQoKSk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBMZXNzVGhhbkltcGwoU3BhbjxUPiBhLCBTcGFuPFQ+
IGIpIHsKLSAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwgIiIpOwotICBy
ZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZShhLmJlZ2luKCksIGEuZW5kKCksIGIu
YmVnaW4oKSwgYi5lbmQoKSk7Ci19Ci0KLS8vIFRoZSBgSXNDb252ZXJ0aWJsZWAgY2xhc3NlcyBo
ZXJlIGFyZSBuZWVkZWQgYmVjYXVzZSBvZiB0aGUKLS8vIGBzdGQ6OmlzX2NvbnZlcnRpYmxlYCBi
dWcgaW4gbGliY3h4IHdoZW4gY29tcGlsZWQgd2l0aCBHQ0MuIFRoaXMgYnVpbGQKLS8vIGNvbmZp
Z3VyYXRpb24gaXMgdXNlZCBieSBBbmRyb2lkIE5ESyB0b29sY2hhaW4uIFJlZmVyZW5jZSBsaW5r
OgotLy8gaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzUzOC4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBJc0NvbnZlcnRpYmxlSGVs
cGVyIHsKLSBwcml2YXRlOgotICBzdGF0aWMgc3RkOjp0cnVlX3R5cGUgdGVzdHZhbChUbyk7Ci0g
IHN0YXRpYyBzdGQ6OmZhbHNlX3R5cGUgdGVzdHZhbCguLi4pOwotCi0gcHVibGljOgotICB1c2lu
ZyB0eXBlID0gZGVjbHR5cGUodGVzdHZhbChzdGQ6OmRlY2x2YWw8RnJvbT4oKSkpOwotfTsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IElzQ29udmVydGli
bGUgOiBJc0NvbnZlcnRpYmxlSGVscGVyPEZyb20sIFRvPjo6dHlwZSB7fTsKLQotLy8gVE9ETyh6
aGFuZ3h5KTogcmVwbGFjZSBgSXNDb252ZXJ0aWJsZWAgd2l0aCBgc3RkOjppc19jb252ZXJ0aWJs
ZWAgb25jZSB0aGUKLS8vIG9sZGVyIHZlcnNpb24gb2YgbGliY3h4IGlzIG5vdCBzdXBwb3J0ZWQu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci11c2luZyBFbmFibGVJZkNv
bnZlcnRpYmxlVG9TcGFuQ29uc3QgPQotICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzQ29u
dmVydGlibGU8RnJvbSwgU3Bhbjxjb25zdCBUbz4+Ojp2YWx1ZT46OnR5cGU7Ci19ICAvLyBuYW1l
c3BhY2Ugc3Bhbl9pbnRlcm5hbAotCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gU3Bhbgog
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ4NSw2ICszODgsNDAgQEAgY2xhc3MgU3BhbiB7
CiAgICAgICAgICAgICAgICA6IChiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoInBv
cyA+IHNpemUoKSIpLCBTcGFuKCkpOwogICB9CiAKKyAgLy8gU3Bhbjo6Zmlyc3QoKQorICAvLwor
ICAvLyBSZXR1cm5zIGEgYFNwYW5gIGNvbnRhaW5pbmcgZmlyc3QgYGxlbmAgZWxlbWVudHMuIFBh
cmFtZXRlciBgbGVuYCBpcyBvZgorICAvLyB0eXBlIGBzaXplX3R5cGVgIGFuZCB0aHVzIG5vbi1u
ZWdhdGl2ZS4gYGxlbmAgdmFsdWUgbXVzdCBiZSA8PSBzaXplKCkuCisgIC8vCisgIC8vIEV4YW1w
bGVzOgorICAvLworICAvLyAgIHN0ZDo6dmVjdG9yPGludD4gdmVjID0gezEwLCAxMSwgMTIsIDEz
fTsKKyAgLy8gICBhYnNsOjpNYWtlU3Bhbih2ZWMpLmZpcnN0KDEpOyAgLy8gezEwfQorICAvLyAg
IGFic2w6Ok1ha2VTcGFuKHZlYykuZmlyc3QoMyk7ICAvLyB7MTAsIDExLCAxMn0KKyAgLy8gICBh
YnNsOjpNYWtlU3Bhbih2ZWMpLmZpcnN0KDUpOyAgLy8gdGhyb3dzIHN0ZDo6b3V0X29mX3Jhbmdl
CisgIGNvbnN0ZXhwciBTcGFuIGZpcnN0KHNpemVfdHlwZSBsZW4pIGNvbnN0IHsKKyAgICByZXR1
cm4gKGxlbiA8PSBzaXplKCkpCisgICAgICAgICAgICAgICA/IFNwYW4oZGF0YSgpLCBsZW4pCisg
ICAgICAgICAgICAgICA6IChiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoImxlbiA+
IHNpemUoKSIpLCBTcGFuKCkpOworICB9CisKKyAgLy8gU3Bhbjo6bGFzdCgpCisgIC8vCisgIC8v
IFJldHVybnMgYSBgU3BhbmAgY29udGFpbmluZyBsYXN0IGBsZW5gIGVsZW1lbnRzLiBQYXJhbWV0
ZXIgYGxlbmAgaXMgb2YKKyAgLy8gdHlwZSBgc2l6ZV90eXBlYCBhbmQgdGh1cyBub24tbmVnYXRp
dmUuIGBsZW5gIHZhbHVlIG11c3QgYmUgPD0gc2l6ZSgpLgorICAvLworICAvLyBFeGFtcGxlczoK
KyAgLy8KKyAgLy8gICBzdGQ6OnZlY3RvcjxpbnQ+IHZlYyA9IHsxMCwgMTEsIDEyLCAxM307Cisg
IC8vICAgYWJzbDo6TWFrZVNwYW4odmVjKS5sYXN0KDEpOyAgLy8gezEzfQorICAvLyAgIGFic2w6
Ok1ha2VTcGFuKHZlYykubGFzdCgzKTsgIC8vIHsxMSwgMTIsIDEzfQorICAvLyAgIGFic2w6Ok1h
a2VTcGFuKHZlYykubGFzdCg1KTsgIC8vIHRocm93cyBzdGQ6Om91dF9vZl9yYW5nZQorICBjb25z
dGV4cHIgU3BhbiBsYXN0KHNpemVfdHlwZSBsZW4pIGNvbnN0IHsKKyAgICByZXR1cm4gKGxlbiA8
PSBzaXplKCkpCisgICAgICAgICAgICAgICA/IFNwYW4oc2l6ZSgpIC0gbGVuICsgZGF0YSgpLCBs
ZW4pCisgICAgICAgICAgICAgICA6IChiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2Uo
ImxlbiA+IHNpemUoKSIpLCBTcGFuKCkpOworICB9CisKICAgLy8gU3VwcG9ydCBmb3IgYWJzbDo6
SGFzaC4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CiAgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUo
SCBoLCBTcGFuIHYpIHsKQEAgLTUxNywyNSArNDU0LDI3IEBAIGNvbnN0IHR5cGVuYW1lIFNwYW48
VD46OnNpemVfdHlwZSBTcGFuPFQ+OjpucG9zOwogLy8gb3BlcmF0b3I9PQogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBib29sIG9wZXJhdG9yPT0oU3BhbjxUPiBhLCBTcGFuPFQ+IGIpIHsKLSAgcmV0
dXJuIHNwYW5faW50ZXJuYWw6OkVxdWFsSW1wbDxjb25zdCBUPihhLCBiKTsKKyAgcmV0dXJuIHNw
YW5faW50ZXJuYWw6OkVxdWFsSW1wbDxTcGFuLCBjb25zdCBUPihhLCBiKTsKIH0KIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogYm9vbCBvcGVyYXRvcj09KFNwYW48Y29uc3QgVD4gYSwgU3BhbjxUPiBi
KSB7Ci0gIHJldHVybiBzcGFuX2ludGVybmFsOjpFcXVhbEltcGw8Y29uc3QgVD4oYSwgYik7Cisg
IHJldHVybiBzcGFuX2ludGVybmFsOjpFcXVhbEltcGw8U3BhbiwgY29uc3QgVD4oYSwgYik7CiB9
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGJvb2wgb3BlcmF0b3I9PShTcGFuPFQ+IGEsIFNwYW48
Y29uc3QgVD4gYikgewotICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6RXF1YWxJbXBsPGNvbnN0IFQ+
KGEsIGIpOworICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6RXF1YWxJbXBsPFNwYW4sIGNvbnN0IFQ+
KGEsIGIpOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAgICAgICAg
dHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3Q8
VSwgVD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAgICB0eXBl
bmFtZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNsOjpTcGFu
PGNvbnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVJiBhLCBTcGFuPFQ+IGIpIHsKLSAg
cmV0dXJuIHNwYW5faW50ZXJuYWw6OkVxdWFsSW1wbDxjb25zdCBUPihhLCBiKTsKKyAgcmV0dXJu
IHNwYW5faW50ZXJuYWw6OkVxdWFsSW1wbDxTcGFuLCBjb25zdCBUPihhLCBiKTsKIH0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAotICAgICAgICAgIHR5cGVuYW1lID0gc3Bhbl9p
bnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvU3BhbkNvbnN0PFUsIFQ+PgordGVtcGxhdGUg
PAorICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCisgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVy
bmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG88VSwgYWJzbDo6U3Bhbjxjb25zdCBUPj4+CiBib29s
IG9wZXJhdG9yPT0oU3BhbjxUPiBhLCBjb25zdCBVJiBiKSB7Ci0gIHJldHVybiBzcGFuX2ludGVy
bmFsOjpFcXVhbEltcGw8Y29uc3QgVD4oYSwgYik7CisgIHJldHVybiBzcGFuX2ludGVybmFsOjpF
cXVhbEltcGw8U3BhbiwgY29uc3QgVD4oYSwgYik7CiB9CiAKIC8vIG9wZXJhdG9yIT0KQEAgLTU1
MSwxMyArNDkwLDE1IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogYm9vbCBvcGVyYXRvciE9KFNw
YW48VD4gYSwgU3Bhbjxjb25zdCBUPiBiKSB7CiAgIHJldHVybiAhKGEgPT0gYik7CiB9Ci10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKLSAgICAgICAgICB0eXBlbmFtZSA9IHNwYW5f
aW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUb1NwYW5Db25zdDxVLCBUPj4KK3RlbXBsYXRl
IDwKKyAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRl
cm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvPFUsIGFic2w6OlNwYW48Y29uc3QgVD4+PgogYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFUmIGEsIFNwYW48VD4gYikgewogICByZXR1cm4gIShhID09IGIp
OwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAgICAgICAgdHlwZW5h
bWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3Q8VSwgVD4+
Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAgICB0eXBlbmFtZSA9
IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNsOjpTcGFuPGNvbnN0
IFQ+Pj4KIGJvb2wgb3BlcmF0b3IhPShTcGFuPFQ+IGEsIGNvbnN0IFUmIGIpIHsKICAgcmV0dXJu
ICEoYSA9PSBiKTsKIH0KQEAgLTU2NSwyNSArNTA2LDI3IEBAIGJvb2wgb3BlcmF0b3IhPShTcGFu
PFQ+IGEsIGNvbnN0IFUmIGIpIHsKIC8vIG9wZXJhdG9yPAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiBib29sIG9wZXJhdG9yPChTcGFuPFQ+IGEsIFNwYW48VD4gYikgewotICByZXR1cm4gc3Bhbl9p
bnRlcm5hbDo6TGVzc1RoYW5JbXBsPGNvbnN0IFQ+KGEsIGIpOworICByZXR1cm4gc3Bhbl9pbnRl
cm5hbDo6TGVzc1RoYW5JbXBsPFNwYW4sIGNvbnN0IFQ+KGEsIGIpOwogfQogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBib29sIG9wZXJhdG9yPChTcGFuPGNvbnN0IFQ+IGEsIFNwYW48VD4gYikgewot
ICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPGNvbnN0IFQ+KGEsIGIpOworICBy
ZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPFNwYW4sIGNvbnN0IFQ+KGEsIGIpOwog
fQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBib29sIG9wZXJhdG9yPChTcGFuPFQ+IGEsIFNwYW48
Y29uc3QgVD4gYikgewotICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPGNvbnN0
IFQ+KGEsIGIpOworICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPFNwYW4sIGNv
bnN0IFQ+KGEsIGIpOwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAg
ICAgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFu
Q29uc3Q8VSwgVD4+Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAg
ICB0eXBlbmFtZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNs
OjpTcGFuPGNvbnN0IFQ+Pj4KIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFUmIGEsIFNwYW48VD4gYikg
ewotICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPGNvbnN0IFQ+KGEsIGIpOwor
ICByZXR1cm4gc3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPFNwYW4sIGNvbnN0IFQ+KGEsIGIp
OwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAgICAgICAgdHlwZW5h
bWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3Q8VSwgVD4+
Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAgICB0eXBlbmFtZSA9
IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNsOjpTcGFuPGNvbnN0
IFQ+Pj4KIGJvb2wgb3BlcmF0b3I8KFNwYW48VD4gYSwgY29uc3QgVSYgYikgewotICByZXR1cm4g
c3Bhbl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPGNvbnN0IFQ+KGEsIGIpOworICByZXR1cm4gc3Bh
bl9pbnRlcm5hbDo6TGVzc1RoYW5JbXBsPFNwYW4sIGNvbnN0IFQ+KGEsIGIpOwogfQogCiAvLyBv
cGVyYXRvcj4KQEAgLTU5OSwxMyArNTQyLDE1IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogYm9v
bCBvcGVyYXRvcj4oU3BhbjxUPiBhLCBTcGFuPGNvbnN0IFQ+IGIpIHsKICAgcmV0dXJuIGIgPCBh
OwogfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCi0gICAgICAgICAgdHlwZW5h
bWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG9TcGFuQ29uc3Q8VSwgVD4+
Cit0ZW1wbGF0ZSA8CisgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKKyAgICB0eXBlbmFtZSA9
IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUbzxVLCBhYnNsOjpTcGFuPGNvbnN0
IFQ+Pj4KIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFUmIGEsIFNwYW48VD4gYikgewogICByZXR1cm4g
YiA8IGE7CiB9Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwKLSAgICAgICAgICB0
eXBlbmFtZSA9IHNwYW5faW50ZXJuYWw6OkVuYWJsZUlmQ29udmVydGlibGVUb1NwYW5Db25zdDxV
LCBUPj4KK3RlbXBsYXRlIDwKKyAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIHR5cGVu
YW1lID0gc3Bhbl9pbnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvPFUsIGFic2w6OlNwYW48
Y29uc3QgVD4+PgogYm9vbCBvcGVyYXRvcj4oU3BhbjxUPiBhLCBjb25zdCBVJiBiKSB7CiAgIHJl
dHVybiBiIDwgYTsKIH0KQEAgLTYyMywxMyArNTY4LDE1IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogYm9vbCBvcGVyYXRvcjw9KFNwYW48VD4gYSwgU3Bhbjxjb25zdCBUPiBiKSB7CiAgIHJldHVy
biAhKGIgPCBhKTsKIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAotICAgICAg
ICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJsZVRvU3BhbkNv
bnN0PFUsIFQ+PgordGVtcGxhdGUgPAorICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCisgICAg
dHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG88VSwgYWJzbDo6
U3Bhbjxjb25zdCBUPj4+CiBib29sIG9wZXJhdG9yPD0oY29uc3QgVSYgYSwgU3BhbjxUPiBiKSB7
CiAgIHJldHVybiAhKGIgPCBhKTsKIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LAotICAgICAgICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6RW5hYmxlSWZDb252ZXJ0aWJs
ZVRvU3BhbkNvbnN0PFUsIFQ+PgordGVtcGxhdGUgPAorICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsCisgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZlcnRpYmxlVG88
VSwgYWJzbDo6U3Bhbjxjb25zdCBUPj4+CiBib29sIG9wZXJhdG9yPD0oU3BhbjxUPiBhLCBjb25z
dCBVJiBiKSB7CiAgIHJldHVybiAhKGIgPCBhKTsKIH0KQEAgLTY0NywxMyArNTk0LDE1IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogYm9vbCBvcGVyYXRvcj49KFNwYW48VD4gYSwgU3Bhbjxjb25z
dCBUPiBiKSB7CiAgIHJldHVybiAhKGEgPCBiKTsKIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLAotICAgICAgICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6RW5hYmxlSWZD
b252ZXJ0aWJsZVRvU3BhbkNvbnN0PFUsIFQ+PgordGVtcGxhdGUgPAorICAgIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsCisgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFibGVJZkNvbnZl
cnRpYmxlVG88VSwgYWJzbDo6U3Bhbjxjb25zdCBUPj4+CiBib29sIG9wZXJhdG9yPj0oY29uc3Qg
VSYgYSwgU3BhbjxUPiBiKSB7CiAgIHJldHVybiAhKGEgPCBiKTsKIH0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLAotICAgICAgICAgIHR5cGVuYW1lID0gc3Bhbl9pbnRlcm5hbDo6
RW5hYmxlSWZDb252ZXJ0aWJsZVRvU3BhbkNvbnN0PFUsIFQ+PgordGVtcGxhdGUgPAorICAgIHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsCisgICAgdHlwZW5hbWUgPSBzcGFuX2ludGVybmFsOjpFbmFi
bGVJZkNvbnZlcnRpYmxlVG88VSwgYWJzbDo6U3Bhbjxjb25zdCBUPj4+CiBib29sIG9wZXJhdG9y
Pj0oU3BhbjxUPiBhLCBjb25zdCBVJiBiKSB7CiAgIHJldHVybiAhKGEgPCBiKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW5fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW5fdGVzdC5j
YwppbmRleCBiZDczOWZmMmEwNzBhNmZjZWMxYTY0ZWExMzNkMWI4MWYwMGNmYzdhLi45MjY5Zjkx
MWYwNDJiYWEyNDQzZDM2NmEwOGNhN2Y4MzZkYmUyM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
cy9zcGFuX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvc3Bhbl90ZXN0LmNjCkBAIC00LDcgKzQs
NyBAQAogLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgogLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CiAvLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAog
Ly8KIC8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKIC8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0xMzksOCArMTM5LDEwIEBAIFRFU1Qo
Q2hhclNwYW4sIFN0cmluZ0N0b3IpIHsKICAgRVhQRUNUX1RIQVQoc19jb25zdF9hYmMsIFNwYW5J
cyhhYmMpKTsKIAogICBFWFBFQ1RfRkFMU0UoKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxhYnNsOjpT
cGFuPGludD4sIHN0ZDo6c3RyaW5nPjo6dmFsdWUpKTsKLSAgRVhQRUNUX0ZBTFNFKChzdGQ6Omlz
X2NvbnN0cnVjdGlibGU8YWJzbDo6U3Bhbjxjb25zdCBpbnQ+LCBzdGQ6OnN0cmluZz46OnZhbHVl
KSk7Ci0gIEVYUEVDVF9UUlVFKChzdGQ6OmlzX2NvbnZlcnRpYmxlPHN0ZDo6c3RyaW5nLCBhYnNs
OjpTcGFuPGNvbnN0IGNoYXI+Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgKHN0
ZDo6aXNfY29uc3RydWN0aWJsZTxhYnNsOjpTcGFuPGNvbnN0IGludD4sIHN0ZDo6c3RyaW5nPjo6
dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZTxzdGQ6
OnN0cmluZywgYWJzbDo6U3Bhbjxjb25zdCBjaGFyPj46OnZhbHVlKSk7CiB9CiAKIFRFU1QoSW50
U3BhbiwgRnJvbUNvbnN0UG9pbnRlcikgewpAQCAtMjkzLDYgKzI5NSwzOCBAQCBURVNUKEludFNw
YW4sIFN1YnNwYW4pIHsKICNlbmRpZgogfQogCitURVNUKEludFNwYW4sIEZpcnN0KSB7CisgIHN0
ZDo6dmVjdG9yPGludD4gZW1wdHk7CisgIEVYUEVDVF9USEFUKGFic2w6Ok1ha2VTcGFuKGVtcHR5
KS5maXJzdCgwKSwgU3BhbklzKGVtcHR5KSk7CisKKyAgYXV0byByYW1wID0gTWFrZVJhbXAoMTAp
OworICBFWFBFQ1RfVEhBVChhYnNsOjpNYWtlU3BhbihyYW1wKS5maXJzdCgwKSwgU3BhbklzKHJh
bXAuZGF0YSgpLCAwKSk7CisgIEVYUEVDVF9USEFUKGFic2w6Ok1ha2VTcGFuKHJhbXApLmZpcnN0
KDEwKSwgU3BhbklzKHJhbXApKTsKKyAgRVhQRUNUX1RIQVQoYWJzbDo6TWFrZVNwYW4ocmFtcCku
Zmlyc3QoMyksIFNwYW5JcyhyYW1wLmRhdGEoKSwgMykpOworCisjaWZkZWYgQUJTTF9IQVZFX0VY
Q0VQVElPTlMKKyAgRVhQRUNUX1RIUk9XKGFic2w6Ok1ha2VTcGFuKHJhbXApLmZpcnN0KDExKSwg
c3RkOjpvdXRfb2ZfcmFuZ2UpOworI2Vsc2UKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChh
YnNsOjpNYWtlU3BhbihyYW1wKS5maXJzdCgxMSksICIiKTsKKyNlbmRpZgorfQorCitURVNUKElu
dFNwYW4sIExhc3QpIHsKKyAgc3RkOjp2ZWN0b3I8aW50PiBlbXB0eTsKKyAgRVhQRUNUX1RIQVQo
YWJzbDo6TWFrZVNwYW4oZW1wdHkpLmxhc3QoMCksIFNwYW5JcyhlbXB0eSkpOworCisgIGF1dG8g
cmFtcCA9IE1ha2VSYW1wKDEwKTsKKyAgRVhQRUNUX1RIQVQoYWJzbDo6TWFrZVNwYW4ocmFtcCku
bGFzdCgwKSwgU3BhbklzKHJhbXAuZGF0YSgpICsgMTAsIDApKTsKKyAgRVhQRUNUX1RIQVQoYWJz
bDo6TWFrZVNwYW4ocmFtcCkubGFzdCgxMCksIFNwYW5JcyhyYW1wKSk7CisgIEVYUEVDVF9USEFU
KGFic2w6Ok1ha2VTcGFuKHJhbXApLmxhc3QoMyksIFNwYW5JcyhyYW1wLmRhdGEoKSArIDcsIDMp
KTsKKworI2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TCisgIEVYUEVDVF9USFJPVyhhYnNsOjpN
YWtlU3BhbihyYW1wKS5sYXN0KDExKSwgc3RkOjpvdXRfb2ZfcmFuZ2UpOworI2Vsc2UKKyAgRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRChhYnNsOjpNYWtlU3BhbihyYW1wKS5sYXN0KDExKSwgIiIp
OworI2VuZGlmCit9CisKIFRFU1QoSW50U3BhbiwgTWFrZVNwYW5QdHJMZW5ndGgpIHsKICAgc3Rk
Ojp2ZWN0b3I8aW50PiBlbXB0eTsKICAgYXV0byBzX2VtcHR5ID0gYWJzbDo6TWFrZVNwYW4oZW1w
dHkuZGF0YSgpLCBlbXB0eS5zaXplKCkpOwpAQCAtNzY3LDYgKzgwMSw4IEBAIFRFU1QoQ29uc3RJ
bnRTcGFuLCBDb25zdGV4cHJUZXN0KSB7CiAgIEFCU0xfVEVTVF9DT05TVEVYUFIoc3Bhbi5iZWdp
bigpKTsKICAgQUJTTF9URVNUX0NPTlNURVhQUihzcGFuLmNiZWdpbigpKTsKICAgQUJTTF9URVNU
X0NPTlNURVhQUihzcGFuLnN1YnNwYW4oMCwgMCkpOworICBBQlNMX1RFU1RfQ09OU1RFWFBSKHNw
YW4uZmlyc3QoMSkpOworICBBQlNMX1RFU1RfQ09OU1RFWFBSKHNwYW4ubGFzdCgxKSk7CiAgIEFC
U0xfVEVTVF9DT05TVEVYUFIoc3BhblswXSk7CiB9CiAKQEAgLTc3OSw0ICs4MTUsMTkgQEAgVEVT
VChTcGFuLCBTcGFuU2l6ZSkgewogICBFWFBFQ1RfTEUoc2l6ZW9mKGFic2w6OlNwYW48QmlnU3Ry
dWN0PiksIDIgKiBzaXplb2Yodm9pZCopKTsKIH0KIAorVEVTVChTcGFuLCBIYXNoKSB7CisgIGlu
dCBhcnJheVtdID0gezEsIDIsIDMsIDR9OworICBpbnQgYXJyYXkyW10gPSB7MSwgMiwgM307Cisg
IHVzaW5nIFQgPSBhYnNsOjpTcGFuPGNvbnN0IGludD47CisgIEVYUEVDVF9UUlVFKGFic2w6OlZl
cmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoCisgICAgICB7Ly8gRW1wdGllcwor
ICAgICAgIFQoKSwgVChudWxscHRyLCAwKSwgVChhcnJheSwgMCksIFQoYXJyYXkyLCAwKSwKKyAg
ICAgICAvLyBEaWZmZXJlbnQgYXJyYXkgd2l0aCBzYW1lIHZhbHVlCisgICAgICAgVChhcnJheSwg
MyksIFQoYXJyYXkyKSwgVCh7MSwgMiwgM30pLAorICAgICAgIC8vIFNhbWUgYXJyYXksIGJ1dCBk
aWZmZXJlbnQgbGVuZ3RoCisgICAgICAgVChhcnJheSwgMSksIFQoYXJyYXksIDIpLAorICAgICAg
IC8vIFNhbWUgbGVuZ3RoLCBidXQgZGlmZmVyZW50IGFycmF5CisgICAgICAgVChhcnJheSArIDEs
IDIpLCBUKGFycmF5ICsgMiwgMil9KSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXMvdmFyaWFudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudC5oCmluZGV4IDJm
Nzg3MjJmOGI3Yzk1NmQ2ZDE3NmU5MDJkNGUwMDljYTk2OTRhMmQuLmViZDUyZDI4YjcxMTE2OTZl
NmM3NTI3NDllMDk2YWY3MjJhMmRhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CiAvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRw
czovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQogLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogI2lmZGVmIEFCU0xfSEFWRV9TVERf
VkFSSUFOVAogCi0jaW5jbHVkZSA8dmFyaWFudD4KKyNpbmNsdWRlIDx2YXJpYW50PiAgLy8gSVdZ
VSBwcmFnbWE6IGV4cG9ydAogCiBuYW1lc3BhY2UgYWJzbCB7CiB1c2luZyBzdGQ6OmJhZF92YXJp
YW50X2FjY2VzczsKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gYWJzbDo6
dmFyaWFudAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyBBbiAnYWJzbDo6dmFyaWFu
dGAgdHlwZSBpcyBhIGZvcm0gb2YgdHlwZS1zYWZlIHVuaW9uLiBBbiBgYWJzbDo6dmFyaWFudGAg
LS0KKy8vIEFuIGBhYnNsOjp2YXJpYW50YCB0eXBlIGlzIGEgZm9ybSBvZiB0eXBlLXNhZmUgdW5p
b24uIEFuIGBhYnNsOjp2YXJpYW50YCAtLQogLy8gZXhjZXB0IGluIGV4Y2VwdGlvbmFsIGNhc2Vz
IC0tIGFsd2F5cyBob2xkcyBhIHZhbHVlIG9mIG9uZSBvZiBpdHMgYWx0ZXJuYXRpdmUKIC8vIHR5
cGVzLgogLy8KQEAgLTEyOSwxNCArMTI5LDE5IEBAIGNsYXNzIHZhcmlhbnQ7CiAvLyB0eXBlIChp
biB3aGljaCBjYXNlLCB0aGV5IHdpbGwgYmUgc3dhcHBlZCkgb3IgdG8gdHdvIGRpZmZlcmVudCB0
eXBlcyAoaW4KIC8vIHdoaWNoIGNhc2UgdGhlIHZhbHVlcyB3aWxsIG5lZWQgdG8gYmUgbW92ZWQp
LgogLy8KLXRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUcz4KK3RlbXBsYXRlIDwKKyAgICB0eXBlbmFt
ZS4uLiBUcywKKyAgICBhYnNsOjplbmFibGVfaWZfdDwKKyAgICAgICAgYWJzbDo6Y29uanVuY3Rp
b248c3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VHM+Li4uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNTd2FwcGFibGU8VHM+Li4uPjo6dmFsdWUs
CisgICAgICAgIGludD4gPSAwPgogdm9pZCBzd2FwKHZhcmlhbnQ8VHMuLi4+JiB2LCB2YXJpYW50
PFRzLi4uPiYgdykgbm9leGNlcHQobm9leGNlcHQodi5zd2FwKHcpKSkgewogICB2LnN3YXAodyk7
CiB9CiAKIC8vIHZhcmlhbnRfc2l6ZQogLy8KLS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBhbHRl
cmF0aXZlIHR5cGVzIGF2YWlsYWJsZSBmb3IgYSBnaXZlbiBgYWJzbDo6dmFyaWFudGAKKy8vIFJl
dHVybnMgdGhlIG51bWJlciBvZiBhbHRlcm5hdGl2ZSB0eXBlcyBhdmFpbGFibGUgZm9yIGEgZ2l2
ZW4gYGFic2w6OnZhcmlhbnRgCiAvLyB0eXBlIGFzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50IGV4
cHJlc3Npb24uIEFzIHRoaXMgaXMgYSBjbGFzcyB0ZW1wbGF0ZSwgaXQKIC8vIGlzIG5vdCBnZW5l
cmFsbHkgdXNlZnVsIGZvciBhY2Nlc3NpbmcgdGhlIG51bWJlciBvZiBhbHRlcm5hdGl2ZSB0eXBl
cyBvZgogLy8gYW55IGdpdmVuIGBhYnNsOjp2YXJpYW50YCBpbnN0YW5jZS4KQEAgLTM5OSw5ICs0
MDQsOSBAQCBjb25zdGV4cHIgYWJzbDo6YWRkX3BvaW50ZXJfdDxjb25zdCBUPiBnZXRfaWYoCiAv
LyBDYWxscyBhIHByb3ZpZGVkIGZ1bmN0b3Igb24gYSBnaXZlbiBzZXQgb2YgdmFyaWFudHMuIGBh
YnNsOjp2aXNpdCgpYCBpcwogLy8gY29tbW9ubHkgdXNlZCB0byBjb25kaXRpb25hbGx5IGluc3Bl
Y3QgdGhlIHN0YXRlIG9mIGEgZ2l2ZW4gdmFyaWFudCAob3Igc2V0CiAvLyBvZiB2YXJpYW50cyku
Ci0vLyBSZXF1aXJlczogVGhlIGV4cHJlc3Npb24gaW4gdGhlIEVmZmVjdHM6IGVsZW1lbnQgc2hh
bGwgYmUgYSB2YWxpZCBleHByZXNzaW9uCi0vLyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBj
YXRlZ29yeSwgZm9yIGFsbCBjb21iaW5hdGlvbnMgb2YgYWx0ZXJuYXRpdmUKLS8vIHR5cGVzIG9m
IGFsbCB2YXJpYW50cy4gT3RoZXJ3aXNlLCB0aGUgcHJvZ3JhbSBpcyBpbGwtZm9ybWVkLgorLy8K
Ky8vIFRoZSBmdW5jdG9yIG11c3QgcmV0dXJuIHRoZSBzYW1lIHR5cGUgd2hlbiBjYWxsZWQgd2l0
aCBhbnkgb2YgdGhlIHZhcmlhbnRzJworLy8gYWx0ZXJuYXRpdmVzLgogLy8KIC8vIEV4YW1wbGU6
CiAvLwpAQCAtNDE0LDYgKzQxOSw3IEBAIGNvbnN0ZXhwciBhYnNsOjphZGRfcG9pbnRlcl90PGNv
bnN0IFQ+IGdldF9pZigKIC8vICAgfTsKIC8vCiAvLyAgIC8vIERlY2xhcmUgb3VyIHZhcmlhbnQs
IGFuZCBjYWxsIGBhYnNsOjp2aXNpdCgpYCBvbiBpdC4KKy8vICAgLy8gTm90ZSB0aGF0IGBHZXRW
YXJpYW50KClgIHJldHVybnMgdm9pZCBpbiBlaXRoZXIgY2FzZS4KIC8vICAgYWJzbDo6dmFyaWFu
dDxpbnQsIHN0ZDo6c3RyaW5nPiBmb28gPSBzdGQ6OnN0cmluZygiZm9vIik7CiAvLyAgIEdldFZh
cmlhbnQgdmlzaXRvcjsKIC8vICAgYWJzbDo6dmlzaXQodmlzaXRvciwgZm9vKTsgIC8vIFByaW50
cyBgVGhlIHZhcmlhbnQncyB2YWx1ZSBpczogZm9vJwpAQCAtNDUzLDcgKzQ1OSw3IEBAIGNsYXNz
IHZhcmlhbnQ8VDAsIFRuLi4uPiA6IHByaXZhdGUgdmFyaWFudF9pbnRlcm5hbDo6VmFyaWFudEJh
c2U8VDAsIFRuLi4uPiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpp
c19vYmplY3Q8VG4+Li4uPjo6dmFsdWUsCiAgICAgICAgICAgICAgICAgIkF0dGVtcHRlZCB0byBp
bnN0YW50aWF0ZSBhIHZhcmlhbnQgY29udGFpbmluZyBhIG5vbi1vYmplY3QgIgogICAgICAgICAg
ICAgICAgICJ0eXBlLiIpOwotICAvLyBJbnRlbnRpb25hbGx5IG5vdCBxdWFsaWZpbmcgYG5lZ2F0
aW9uYCB3aXRoIGBhYnNsOjpgIHRvIHdvcmsgYXJvdW5kIGEgYnVnCisgIC8vIEludGVudGlvbmFs
bHkgbm90IHF1YWxpZnlpbmcgYG5lZ2F0aW9uYCB3aXRoIGBhYnNsOjpgIHRvIHdvcmsgYXJvdW5k
IGEgYnVnCiAgIC8vIGluIE1TVkMgMjAxNSB3aXRoIGlubGluZSBuYW1lc3BhY2UgYW5kIHZhcmlh
ZGljIHRlbXBsYXRlLgogICBzdGF0aWNfYXNzZXJ0KGFic2w6OmNvbmp1bmN0aW9uPG5lZ2F0aW9u
PHN0ZDo6aXNfYXJyYXk8VDA+ID4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmVnYXRpb248c3RkOjppc19hcnJheTxUbj4gPi4uLj46OnZhbHVlLApAQCAtNTYxLDcgKzU2Nyw3
IEBAIGNsYXNzIHZhcmlhbnQ8VDAsIFRuLi4uPiA6IHByaXZhdGUgdmFyaWFudF9pbnRlcm5hbDo6
VmFyaWFudEJhc2U8VDAsIFRuLi4uPiB7CiAKICAgLy8gQXNzaWdubWVudCBPcGVyYXRvcnMKIAot
ICAvLyBDb3B5IGFzc2lnbmVtZW50IG9wZXJhdG9yCisgIC8vIENvcHkgYXNzaWdubWVudCBvcGVy
YXRvcgogICB2YXJpYW50JiBvcGVyYXRvcj0oY29uc3QgdmFyaWFudCYgb3RoZXIpID0gZGVmYXVs
dDsKIAogICAvLyBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IKQEAgLTY4NywxMiArNjkzLDEyIEBA
IGNsYXNzIHZhcmlhbnQ8VDAsIFRuLi4uPiA6IHByaXZhdGUgdmFyaWFudF9pbnRlcm5hbDo6VmFy
aWFudEJhc2U8VDAsIFRuLi4uPiB7CiAgIC8vCiAgIC8vIFN3YXBzIHRoZSB2YWx1ZXMgb2YgdHdv
IHZhcmlhbnQgb2JqZWN0cy4KICAgLy8KLSAgLy8gVE9ETyhjYWxhYnJlc2UpCi0gIC8vICAgYHZh
cmlhbnQ6OnN3YXAoKWAgYW5kIGBzd2FwKClgIHJlbHkgb24gYHN0ZDo6aXNfKG5vdGhyb3cpX3N3
YXBwYWJsZSgpYAotICAvLyAgIHdoaWNoIGlzIGludHJvZHVjZWQgaW4gQysrMTcuIFNvIHdlIGFz
c3VtZSBgaXNfc3dhcHBhYmxlKClgIGlzIGFsd2F5cwotICAvLyAgIHRydWUgYW5kIGBpc19ub3Ro
cm93X3N3YXBwYWJsZSgpYCBpcyBzYW1lIGFzIGBzdGQ6OmlzX3RyaXZpYWwoKWAuCiAgIHZvaWQg
c3dhcCh2YXJpYW50JiByaHMpIG5vZXhjZXB0KAotICAgICAgYWJzbDo6Y29uanVuY3Rpb248c3Rk
Ojppc190cml2aWFsPFQwPiwgc3RkOjppc190cml2aWFsPFRuPi4uLj46OnZhbHVlKSB7CisgICAg
ICBhYnNsOjpjb25qdW5jdGlvbjwKKyAgICAgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25z
dHJ1Y3RpYmxlPFQwPiwKKyAgICAgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3Rp
YmxlPFRuPi4uLiwKKyAgICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNOb3Rocm93U3dh
cHBhYmxlPFQwPiwKKyAgICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNOb3Rocm93U3dh
cHBhYmxlPFRuPi4uLj46OnZhbHVlKSB7CiAgICAgcmV0dXJuIHZhcmlhbnRfaW50ZXJuYWw6OlZp
c2l0SW5kaWNlczxzaXplb2YuLi4oVG4pICsgMT46OlJ1bigKICAgICAgICAgdmFyaWFudF9pbnRl
cm5hbDo6U3dhcDxUMCwgVG4uLi4+e3RoaXMsICZyaHN9LCByaHMuaW5kZXgoKSk7CiAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
dmFyaWFudF9iZW5jaG1hcmsuY2MKaW5kZXggOTk2NThhYzcwYzQ2NDM4MDIzYTUxY2EzMzA0ODEy
ZmFhMjcwN2VmZC4uYTVmNTIxNjQ0MTQyNjZhOTc0YWExM2NkMDQwNDdlMWZkODVjOTIzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXMvdmFyaWFudF9iZW5jaG1hcmsuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MK
aW5kZXggNTg0MzZmMDdiODQzNzQ4ZTdhNjNkMTFjODI5ZTE2ZjU1NTFhNmRiOC4uNzZiZWI1OTU5
MjVkNjY5NzBkYWY0ZmExMDRiOWE2YmJhMDA4ZDg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
dmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFu
dF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKQEAgLTQsMTMgKzQsMTQgQEAKIC8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
IC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBz
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAogLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvdmFyaWFu
dC5oIgogCiAjaW5jbHVkZSA8aW9zdHJlYW0+CkBAIC0yMCw5ICsyMSwxMyBAQAogCiAjaW5jbHVk
ZSAiZ21vY2svZ21vY2suaCIKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFi
c2wvYmFzZS9jb25maWcuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9u
X3NhZmV0eV90ZXN0aW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAKKy8v
IFNlZSBjb21tZW50IGluIGFic2wvYmFzZS9jb25maWcuaAorI2lmICFkZWZpbmVkKEFCU0xfSU5U
RVJOQUxfTVNWQ18yMDE3X0RCR19NT0RFKQorCiBuYW1lc3BhY2UgYWJzbCB7CiBuYW1lc3BhY2Ug
ewogCkBAIC0zMTEsNiArMzE2LDEyIEBAIFRFU1QoVmFyaWFudEV4Y2VwdGlvblNhZmV0eVRlc3Qs
IE1vdmVBc3NpZ24pIHsKICAgICBFWFBFQ1RfRkFMU0UodGVzdGVyLldpdGhDb250cmFjdHMoc3Ry
b25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgfQogICB7CisgICAgLy8gbGlic3RkYysrIGludHJv
ZHVjZWQgYSByZWdyZXNzaW9uIGJldHdlZW4gMjAxOC0wOS0yNSBhbmQgMjAxOS0wMS0wNi4KKyAg
ICAvLyBUaGUgZml4IGlzIHRhcmdldGVkIGZvciBnY2MtOS4KKyAgICAvLyBodHRwczovL2djYy5n
bnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD04NzQzMSNjNworICAgIC8vIGh0dHBzOi8v
Z2NjLmdudS5vcmcvdmlld2N2cy9nY2M/dmlldz1yZXZpc2lvbiZyZXZpc2lvbj0yNjc2MTQKKyNp
ZiAhKGRlZmluZWQoQUJTTF9IQVZFX1NURF9WQVJJQU5UKSAmJiBcCisgICAgICBkZWZpbmVkKF9H
TElCQ1hYX1JFTEVBU0UpICYmIF9HTElCQ1hYX1JFTEVBU0UgPT0gOCkKICAgICAvLyAtIG90aGVy
d2lzZSAoaW5kZXgoKSAhPSBqKSwgZXF1aXZhbGVudCB0bwogICAgIC8vIGVtcGxhY2U8aj4oZ2V0
PGo+KHN0ZDo6bW92ZShyaHMpKSkKICAgICAvLyAtIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24g
ZHVyaW5nIHRoZSBjYWxsIHRvIFRqJ3MgbW92ZSBjb25zdHJ1Y3Rpb24KQEAgLTMyNiw2ICszMzcs
OCBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBNb3ZlQXNzaWduKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBjb3B5ID0gcmhzOwogICAgICAgICAgICAgICAgICAgICAg
ICpsaHMgPSBzdGQ6Om1vdmUoY29weSk7CiAgICAgICAgICAgICAgICAgICAgIH0pKTsKKyNlbmRp
ZiAgLy8gIShkZWZpbmVkKEFCU0xfSEFWRV9TVERfVkFSSUFOVCkgJiYKKyAgICAgICAgLy8gICBk
ZWZpbmVkKF9HTElCQ1hYX1JFTEVBU0UpICYmIF9HTElCQ1hYX1JFTEVBU0UgPT0gOCkKICAgfQog
fQogCkBAIC01MDYsMyArNTE5LDUgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwg
U3dhcCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRp
ZiAgLy8gIWRlZmluZWQoQUJTTF9JTlRFUk5BTF9NU1ZDXzIwMTdfREJHX01PREUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy92YXJpYW50X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X3Rl
c3QuY2MKaW5kZXggYmZiOGJkN2EwMjIzZjNjZDk4MzRlNDc2NGRjNWE3M2JjMTY2NGRlZi4uODUy
MDFiM2VhNjU5ZmM3OWIzNTY5MTcyNjY1YjI4YzVlMTlkNGJlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvdmFyaWFudF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfdGVzdC5jYwpA
QCAtNCw3ICs0LDcgQEAKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIC8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAogLy8KLS8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLyAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKIC8vCiAvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApAQCAtNTIsNyArNTIsNyBA
QAogI2VuZGlmICAvLyBBQlNMX0hBVkVfRVhDRVBUSU9OUwogCiAjZGVmaW5lIEFCU0xfVkFSSUFO
VF9URVNUX0VYUEVDVF9CQURfVkFSSUFOVF9BQ0NFU1MoLi4uKSAgICAgICAgICAgICAgICAgXAot
ICBBQlNMX1ZBUklBTlRfVEVTVF9FWFBFQ1RfRkFJTCgoX19WQV9BUkdTX18pLCBhYnNsOjpiYWRf
dmFyaWFudF9hY2Nlc3MsIFwKKyAgQUJTTF9WQVJJQU5UX1RFU1RfRVhQRUNUX0ZBSUwoKHZvaWQp
KF9fVkFfQVJHU19fKSwgYWJzbDo6YmFkX3ZhcmlhbnRfYWNjZXNzLCBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJCYWQgdmFyaWFudCBhY2Nlc3MiKQogCiBzdHJ1Y3QgSGFzaGFi
bGUge307CkBAIC0yNTcsNyArMjU3LDcgQEAgY2xhc3MgTm9uQ29weWFibGUgewogLy8gZWFjaCB0
eXBlLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBWYXJpYW50VHlwZXNUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7fTsKLVRZUEVEX1RFU1RfQ0FTRShWYXJpYW50VHlwZXNUZXN0
LCBWYXJpYW50VHlwZXMpOworVFlQRURfVEVTVF9TVUlURShWYXJpYW50VHlwZXNUZXN0LCBWYXJp
YW50VHlwZXMpOwogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gW3ZhcmlhbnQuY3Rvcl0gLy8K
QEAgLTM4NCw3ICszODQsNyBAQCBzdHJ1Y3QgTW92ZU9ubHkgewogVEVTVChWYXJpYW50VGVzdCwg
VGVzdE1vdmVDb25zdHJ1Y3QpIHsKICAgdXNpbmcgViA9IHZhcmlhbnQ8TW92ZU9ubHk8Y2xhc3Mg
QT4sIE1vdmVPbmx5PGNsYXNzIEI+LCBNb3ZlT25seTxjbGFzcyBDPj47CiAKLSAgViB2KGluX3Bs
YWNlX2luZGV4X3Q8MT57fSwgMTApOworICBWIHYoaW5fcGxhY2VfaW5kZXg8MT4sIDEwKTsKICAg
ViB2MiA9IGFic2w6Om1vdmUodik7CiAgIEVYUEVDVF9FUSgxMCwgYWJzbDo6Z2V0PDE+KHYyKS52
YWx1ZSk7CiB9CkBAIC00NjAsNiArNDYwLDExIEBAIFRZUEVEX1RFU1QoVmFyaWFudFR5cGVzVGVz
dCwgVGVzdFZhbHVlQ3RvcikgewogICBFWFBFQ1RfRVEodmFsdWUudmFsdWUsIG11dGFibGVfdmFs
cHRyLT52YWx1ZSk7CiB9CiAKK1RFU1QoVmFyaWFudFRlc3QsIEFtYmlndW91c1ZhbHVlQ29uc3Ry
dWN0b3IpIHsKKyAgRVhQRUNUX0ZBTFNFKChzdGQ6OmlzX2NvbnZlcnRpYmxlPGludCwgYWJzbDo6
dmFyaWFudDxpbnQsIGludD4+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKHN0ZDo6aXNfY29u
c3RydWN0aWJsZTxhYnNsOjp2YXJpYW50PGludCwgaW50PiwgaW50Pjo6dmFsdWUpKTsKK30KKwog
VEVTVChWYXJpYW50VGVzdCwgSW5QbGFjZVR5cGUpIHsKICAgdXNpbmcgVmFyID0gdmFyaWFudDxp
bnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5YWJsZSwgc3RkOjp2ZWN0b3I8aW50Pj47CiAKQEAgLTQ4
MywxNCArNDg4LDQ3IEBAIFRFU1QoVmFyaWFudFRlc3QsIEluUGxhY2VUeXBlKSB7CiAgIEVYUEVD
VF9USEFUKGFic2w6OmdldDxzdGQ6OnZlY3RvcjxpbnQ+Pih2NSksIDo6dGVzdGluZzo6RWxlbWVu
dHNBcmUoMSwgMiwgMykpOwogfQogCitURVNUKFZhcmlhbnRUZXN0LCBJblBsYWNlVHlwZVZhcmlh
YmxlVGVtcGxhdGUpIHsKKyAgdXNpbmcgVmFyID0gdmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBO
b25Db3B5YWJsZSwgc3RkOjp2ZWN0b3I8aW50Pj47CisKKyAgVmFyIHYxKGluX3BsYWNlX3R5cGU8
aW50PiwgNyk7CisgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPGludD4odjEp
KTsKKyAgRVhQRUNUX0VRKDcsIGFic2w6OmdldDxpbnQ+KHYxKSk7CisKKyAgVmFyIHYyKGluX3Bs
YWNlX3R5cGU8c3RkOjpzdHJpbmc+LCAiQUJDIik7CisgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRz
X2FsdGVybmF0aXZlPHN0ZDo6c3RyaW5nPih2MikpOworICBFWFBFQ1RfRVEoIkFCQyIsIGFic2w6
OmdldDxzdGQ6OnN0cmluZz4odjIpKTsKKworICBWYXIgdjMoaW5fcGxhY2VfdHlwZTxzdGQ6OnN0
cmluZz4sICJBQkMiLCAyKTsKKyAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8
c3RkOjpzdHJpbmc+KHYzKSk7CisgIEVYUEVDVF9FUSgiQUIiLCBhYnNsOjpnZXQ8c3RkOjpzdHJp
bmc+KHYzKSk7CisKKyAgVmFyIHY0KGluX3BsYWNlX3R5cGU8Tm9uQ29weWFibGU+KTsKKyAgQVNT
RVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8Tm9uQ29weWFibGU+KHY0KSk7CisKKyAg
VmFyIHY1KGluX3BsYWNlX3R5cGU8c3RkOjp2ZWN0b3I8aW50Pj4sIHsxLCAyLCAzfSk7CisgIEFT
U0VSVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6dmVjdG9yPGludD4+KHY1KSk7
CisgIEVYUEVDVF9USEFUKGFic2w6OmdldDxzdGQ6OnZlY3RvcjxpbnQ+Pih2NSksIDo6dGVzdGlu
Zzo6RWxlbWVudHNBcmUoMSwgMiwgMykpOworfQorCiBURVNUKFZhcmlhbnRUZXN0LCBJblBsYWNl
VHlwZUluaXRpYWxpemVyTGlzdCkgewotICB1c2luZyBWYXIgPSB2YXJpYW50PGludCwgc3RkOjpz
dHJpbmcsIE5vbkNvcHlhYmxlLCBNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+OworICB1c2lu
ZyBWYXIgPQorICAgICAgdmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5YWJsZSwgTW92
ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPjsKIAogICBWYXIgdjEoaW5fcGxhY2VfdHlwZV90PE1v
dmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj4oKSwgezEsIDIsIDMsIDQsIDV9LCA2KTsKICAgQVNT
RVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8TW92ZU9ubHlXaXRoTGlzdENvbnN0cnVj
dG9yPih2MSkpOwogICBFWFBFQ1RfRVEoNiwgYWJzbDo6Z2V0PE1vdmVPbmx5V2l0aExpc3RDb25z
dHJ1Y3Rvcj4odjEpLnZhbHVlKTsKIH0KIAorVEVTVChWYXJpYW50VGVzdCwgSW5QbGFjZVR5cGVJ
bml0aWFsaXplckxpc3RWYXJpYWJsZXRlbXBsYXRlKSB7CisgIHVzaW5nIFZhciA9CisgICAgICB2
YXJpYW50PGludCwgc3RkOjpzdHJpbmcsIE5vbkNvcHlhYmxlLCBNb3ZlT25seVdpdGhMaXN0Q29u
c3RydWN0b3I+OworCisgIFZhciB2MShpbl9wbGFjZV90eXBlPE1vdmVPbmx5V2l0aExpc3RDb25z
dHJ1Y3Rvcj4sIHsxLCAyLCAzLCA0LCA1fSwgNik7CisgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRz
X2FsdGVybmF0aXZlPE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj4odjEpKTsKKyAgRVhQRUNU
X0VRKDYsIGFic2w6OmdldDxNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+KHYxKS52YWx1ZSk7
Cit9CisKIFRFU1QoVmFyaWFudFRlc3QsIEluUGxhY2VJbmRleCkgewogICB1c2luZyBWYXIgPSB2
YXJpYW50PGludCwgc3RkOjpzdHJpbmcsIE5vbkNvcHlhYmxlLCBzdGQ6OnZlY3RvcjxpbnQ+PjsK
IApAQCAtNTE4LDE0ICs1NTYsNTEgQEAgVEVTVChWYXJpYW50VGVzdCwgSW5QbGFjZUluZGV4KSB7
CiAgIEVYUEVDVF9USEFUKGFic2w6OmdldDxzdGQ6OnZlY3RvcjxpbnQ+Pih2NSksIDo6dGVzdGlu
Zzo6RWxlbWVudHNBcmUoMSwgMiwgMykpOwogfQogCitURVNUKFZhcmlhbnRUZXN0LCBJblBsYWNl
SW5kZXhWYXJpYWJsZVRlbXBsYXRlKSB7CisgIHVzaW5nIFZhciA9IHZhcmlhbnQ8aW50LCBzdGQ6
OnN0cmluZywgTm9uQ29weWFibGUsIHN0ZDo6dmVjdG9yPGludD4+OworCisgIFZhciB2MShpbl9w
bGFjZV9pbmRleDwwPiwgNyk7CisgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZl
PGludD4odjEpKTsKKyAgRVhQRUNUX0VRKDcsIGFic2w6OmdldDxpbnQ+KHYxKSk7CisKKyAgVmFy
IHYyKGluX3BsYWNlX2luZGV4PDE+LCAiQUJDIik7CisgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRz
X2FsdGVybmF0aXZlPHN0ZDo6c3RyaW5nPih2MikpOworICBFWFBFQ1RfRVEoIkFCQyIsIGFic2w6
OmdldDxzdGQ6OnN0cmluZz4odjIpKTsKKworICBWYXIgdjMoaW5fcGxhY2VfaW5kZXg8MT4sICJB
QkMiLCAyKTsKKyAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpzdHJp
bmc+KHYzKSk7CisgIEVYUEVDVF9FUSgiQUIiLCBhYnNsOjpnZXQ8c3RkOjpzdHJpbmc+KHYzKSk7
CisKKyAgVmFyIHY0KGluX3BsYWNlX2luZGV4PDI+KTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Tm9uQ29weWFibGU+KHY0KSk7CisKKyAgLy8gVmVyaWZ5IHRoYXQgYSB2
YXJpYW50IHdpdGggb25seSBub24tY29weWFibGVzIGNhbiBzdGlsbCBiZSBjb25zdHJ1Y3RlZC4K
KyAgRVhQRUNUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8Tm9uQ29weWFibGU+KAorICAg
ICAgdmFyaWFudDxOb25Db3B5YWJsZT4oaW5fcGxhY2VfaW5kZXg8MD4pKSk7CisKKyAgVmFyIHY1
KGluX3BsYWNlX2luZGV4PDM+LCB7MSwgMiwgM30pOworICBBU1NFUlRfVFJVRShhYnNsOjpob2xk
c19hbHRlcm5hdGl2ZTxzdGQ6OnZlY3RvcjxpbnQ+Pih2NSkpOworICBFWFBFQ1RfVEhBVChhYnNs
OjpnZXQ8c3RkOjp2ZWN0b3I8aW50Pj4odjUpLCA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlKDEsIDIs
IDMpKTsKK30KKwogVEVTVChWYXJpYW50VGVzdCwgSW5QbGFjZUluZGV4SW5pdGlhbGl6ZXJMaXN0
KSB7Ci0gIHVzaW5nIFZhciA9IHZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZywgTm9uQ29weWFibGUs
IE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj47CisgIHVzaW5nIFZhciA9CisgICAgICB2YXJp
YW50PGludCwgc3RkOjpzdHJpbmcsIE5vbkNvcHlhYmxlLCBNb3ZlT25seVdpdGhMaXN0Q29uc3Ry
dWN0b3I+OwogCiAgIFZhciB2MShpbl9wbGFjZV9pbmRleF90PDM+KCksIHsxLCAyLCAzLCA0LCA1
fSwgNik7CiAgIEFTU0VSVF9UUlVFKGFic2w6OmhvbGRzX2FsdGVybmF0aXZlPE1vdmVPbmx5V2l0
aExpc3RDb25zdHJ1Y3Rvcj4odjEpKTsKICAgRVhQRUNUX0VRKDYsIGFic2w6OmdldDxNb3ZlT25s
eVdpdGhMaXN0Q29uc3RydWN0b3I+KHYxKS52YWx1ZSk7CiB9CiAKK1RFU1QoVmFyaWFudFRlc3Qs
IEluUGxhY2VJbmRleEluaXRpYWxpemVyTGlzdFZhcmlhYmxlVGVtcGxhdGUpIHsKKyAgdXNpbmcg
VmFyID0KKyAgICAgIHZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZywgTm9uQ29weWFibGUsIE1vdmVP
bmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj47CisKKyAgVmFyIHYxKGluX3BsYWNlX2luZGV4PDM+LCB7
MSwgMiwgMywgNCwgNX0sIDYpOworICBBU1NFUlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2
ZTxNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+KHYxKSk7CisgIEVYUEVDVF9FUSg2LCBhYnNs
OjpnZXQ8TW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yPih2MSkudmFsdWUpOworfQorCiAvLy8v
Ly8vLy8vLy8vLy8vLy8vLwogLy8gW3ZhcmlhbnQuZHRvcl0gLy8KIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vCkBAIC01NjAsMTUgKzYzNSwyMSBAQCBURVNUKFZhcmlhbnRUZXN0LCBUZXN0RHRvcikgewog
CiAjaWZkZWYgQUJTTF9IQVZFX0VYQ0VQVElPTlMKIAorLy8gU2VlIGNvbW1lbnQgaW4gYWJzbC9i
YXNlL2NvbmZpZy5oCisjaWYgZGVmaW5lZChBQlNMX0lOVEVSTkFMX01TVkNfMjAxN19EQkdfTU9E
RSkKK1RFU1QoVmFyaWFudFRlc3QsIERJU0FCTEVEX1Rlc3REdG9yVmFsdWVsZXNzQnlFeGNlcHRp
b24pCisjZWxzZQogLy8gVGVzdCBkZXN0cnVjdGlvbiB3aGVuIGluIHRoZSB2YWx1ZWxlc3NfYnlf
ZXhjZXB0aW9uIHN0YXRlLgotVEVTVChWYXJpYW50VGVzdCwgVGVzdER0b3JWYWx1ZWxlc3NCeUV4
Y2VwdGlvbikgeworVEVTVChWYXJpYW50VGVzdCwgVGVzdER0b3JWYWx1ZWxlc3NCeUV4Y2VwdGlv
bikKKyNlbmRpZgorewogICBpbnQgY291bnRlciA9IDA7CiAgIEluY3JlbWVudEluRHRvciBjb3Vu
dGVyX2FkanVzdGVyKCZjb3VudGVyKTsKIAogICB7CiAgICAgdXNpbmcgVmFyaWFudCA9IFZhcmlh
bnRGYWN0b3J5PEluY3JlbWVudEluRHRvcj46OlR5cGU7CiAKLSAgICBWYXJpYW50IHYoaW5fcGxh
Y2VfaW5kZXhfdDwwPigpLCBjb3VudGVyX2FkanVzdGVyKTsKKyAgICBWYXJpYW50IHYoaW5fcGxh
Y2VfaW5kZXg8MD4sIGNvdW50ZXJfYWRqdXN0ZXIpOwogICAgIEVYUEVDVF9FUSgwLCBjb3VudGVy
KTsKIAogICAgIFRvVmFsdWVsZXNzQnlFeGNlcHRpb24odik7CkBAIC04MDIsNyArODgzLDcgQEAg
VEVTVChWYXJpYW50VGVzdCwgVGVzdEJhY2t1cEFzc2lnbikgewogVEVTVChWYXJpYW50VGVzdCwg
VGVzdEVtcGxhY2VCYXNpYykgewogICB1c2luZyBWYXJpYW50ID0gdmFyaWFudDxpbnQsIGNoYXI+
OwogCi0gIFZhcmlhbnQgdihhYnNsOjppbl9wbGFjZV9pbmRleF90PDA+e30sIDApOworICBWYXJp
YW50IHYoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4sIDApOwogCiAgIHsKICAgICBjaGFyJiBlbXBs
YWNlX3Jlc3VsdCA9IHYuZW1wbGFjZTxjaGFyPigpOwpAQCAtODI2LDkgKzkwNywxMCBAQCBURVNU
KFZhcmlhbnRUZXN0LCBUZXN0RW1wbGFjZUJhc2ljKSB7CiB9CiAKIFRFU1QoVmFyaWFudFRlc3Qs
IFRlc3RFbXBsYWNlSW5pdGlhbGl6ZXJMaXN0KSB7Ci0gIHVzaW5nIFZhciA9IHZhcmlhbnQ8aW50
LCBzdGQ6OnN0cmluZywgTm9uQ29weWFibGUsIE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj47
CisgIHVzaW5nIFZhciA9CisgICAgICB2YXJpYW50PGludCwgc3RkOjpzdHJpbmcsIE5vbkNvcHlh
YmxlLCBNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3I+OwogCi0gIFZhciB2MShhYnNsOjppbl9w
bGFjZV9pbmRleF90PDA+e30sIDU1NSk7CisgIFZhciB2MShhYnNsOjppbl9wbGFjZV9pbmRleDww
PiwgNTU1KTsKICAgTW92ZU9ubHlXaXRoTGlzdENvbnN0cnVjdG9yJiBlbXBsYWNlX3Jlc3VsdCA9
CiAgICAgICB2MS5lbXBsYWNlPE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj4oezEsIDIsIDMs
IDQsIDV9LCA2KTsKICAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8TW92ZU9u
bHlXaXRoTGlzdENvbnN0cnVjdG9yPih2MSkpOwpAQCAtODM5LDcgKzkyMSw3IEBAIFRFU1QoVmFy
aWFudFRlc3QsIFRlc3RFbXBsYWNlSW5pdGlhbGl6ZXJMaXN0KSB7CiBURVNUKFZhcmlhbnRUZXN0
LCBUZXN0RW1wbGFjZUluZGV4KSB7CiAgIHVzaW5nIFZhcmlhbnQgPSB2YXJpYW50PGludCwgY2hh
cj47CiAKLSAgVmFyaWFudCB2KGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57fSwgNTU1KTsKKyAg
VmFyaWFudCB2KGFic2w6OmluX3BsYWNlX2luZGV4PDA+LCA1NTUpOwogCiAgIHsKICAgICBjaGFy
JiBlbXBsYWNlX3Jlc3VsdCA9IHYuZW1wbGFjZTwxPigpOwpAQCAtODYzLDkgKzk0NSwxMCBAQCBU
RVNUKFZhcmlhbnRUZXN0LCBUZXN0RW1wbGFjZUluZGV4KSB7CiB9CiAKIFRFU1QoVmFyaWFudFRl
c3QsIFRlc3RFbXBsYWNlSW5kZXhJbml0aWFsaXplckxpc3QpIHsKLSAgdXNpbmcgVmFyID0gdmFy
aWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBOb25Db3B5YWJsZSwgTW92ZU9ubHlXaXRoTGlzdENvbnN0
cnVjdG9yPjsKKyAgdXNpbmcgVmFyID0KKyAgICAgIHZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZywg
Tm9uQ29weWFibGUsIE1vdmVPbmx5V2l0aExpc3RDb25zdHJ1Y3Rvcj47CiAKLSAgVmFyIHYxKGFi
c2w6OmluX3BsYWNlX2luZGV4X3Q8MD57fSwgNTU1KTsKKyAgVmFyIHYxKGFic2w6OmluX3BsYWNl
X2luZGV4PDA+LCA1NTUpOwogICBNb3ZlT25seVdpdGhMaXN0Q29uc3RydWN0b3ImIGVtcGxhY2Vf
cmVzdWx0ID0KICAgICAgIHYxLmVtcGxhY2U8Mz4oezEsIDIsIDMsIDQsIDV9LCA2KTsKICAgQVNT
RVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8TW92ZU9ubHlXaXRoTGlzdENvbnN0cnVj
dG9yPih2MSkpOwpAQCAtOTE0LDcgKzk5Nyw3IEBAIFRFU1QoVmFyaWFudFRlc3QsIE5vdFZhbHVl
bGVzc0J5RXhjZXB0aW9uKSB7CiBURVNUKFZhcmlhbnRUZXN0LCBJbmRleFZhbHVlbGVzc0J5RXhj
ZXB0aW9uKSB7CiAgIHVzaW5nIFZhciA9IHZhcmlhbnQ8TW92ZUNhblRocm93LCBzdGQ6OnN0cmlu
ZywgZG91YmxlPjsKIAotICBWYXIgdihhYnNsOjppbl9wbGFjZV9pbmRleF90PDA+e30pOworICBW
YXIgdihhYnNsOjppbl9wbGFjZV9pbmRleDwwPik7CiAgIEVYUEVDVF9FUSgwLCB2LmluZGV4KCkp
OwogICBUb1ZhbHVlbGVzc0J5RXhjZXB0aW9uKHYpOwogICBFWFBFQ1RfRVEoYWJzbDo6dmFyaWFu
dF9ucG9zLCB2LmluZGV4KCkpOwpAQCAtOTI1LDcgKzEwMDgsNyBAQCBURVNUKFZhcmlhbnRUZXN0
LCBJbmRleFZhbHVlbGVzc0J5RXhjZXB0aW9uKSB7CiBURVNUKFZhcmlhbnRUZXN0LCBWYWx1ZWxl
c3NCeUV4Y2VwdGlvbikgewogICB1c2luZyBWYXIgPSB2YXJpYW50PE1vdmVDYW5UaHJvdywgc3Rk
OjpzdHJpbmcsIGRvdWJsZT47CiAKLSAgVmFyIHYoYWJzbDo6aW5fcGxhY2VfaW5kZXhfdDwwPnt9
KTsKKyAgVmFyIHYoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4pOwogICBFWFBFQ1RfRkFMU0Uodi52
YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCkpOwogICBUb1ZhbHVlbGVzc0J5RXhjZXB0aW9uKHYpOwog
ICBFWFBFQ1RfVFJVRSh2LnZhbHVlbGVzc19ieV9leGNlcHRpb24oKSk7CkBAIC05NTYsNyArMTAz
OSw3IEBAIFRFU1QoVmFyaWFudFRlc3QsIE1lbWJlclN3YXApIHsKICAgdXNpbmcgViA9IHZhcmlh
bnQ8TW92ZUNhblRocm93LCBzdGQ6OnN0cmluZywgaW50PjsKICAgaW50IGkgPSAzMzsKICAgc3Rk
OjpzdHJpbmcgcyA9ICJhYmMiOwotICBWIHZhbHVlbGVzcyhpbl9wbGFjZV9pbmRleF90PDA+e30p
OworICBWIHZhbHVlbGVzcyhpbl9wbGFjZV9pbmRleDwwPik7CiAgIFRvVmFsdWVsZXNzQnlFeGNl
cHRpb24odmFsdWVsZXNzKTsKICAgewogICAgIC8vIGxocyBhbmQgcmhzIGhvbGRzIGRpZmZlcmVu
dCBhbHRlcm5hdGl2ZQpAQCAtMTExNyw3ICsxMjAwLDcgQEAgVEVTVChWYXJpYW50VGVzdCwgR2V0
SW5kZXgpIHsKICAgdXNpbmcgVmFyID0gdmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nLCBkb3VibGUs
IGludD47CiAKICAgewotICAgIFZhciB2KGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57fSwgMCk7
CisgICAgVmFyIHYoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MD4sIDApOwogCiAgICAgdXNpbmcgTFZh
bHVlR2V0VHlwZSA9IGRlY2x0eXBlKGFic2w6OmdldDwwPih2KSk7CiAgICAgdXNpbmcgUlZhbHVl
R2V0VHlwZSA9IGRlY2x0eXBlKGFic2w6OmdldDwwPihhYnNsOjptb3ZlKHYpKSk7CkBAIC0xMTc3
LDcgKzEyNjAsNyBAQCBURVNUKFZhcmlhbnRUZXN0LCBHZXRJbmRleCkgewogICB9CiAKICAgewot
ICAgIFZhciB2KGFic2w6OmluX3BsYWNlX2luZGV4X3Q8MD57fSwgMCk7CisgICAgVmFyIHYoYWJz
bDo6aW5fcGxhY2VfaW5kZXg8MD4sIDApOwogICAgIHYuZW1wbGFjZTwzPigxKTsKIAogICAgIHVz
aW5nIExWYWx1ZUdldFR5cGUgPSBkZWNsdHlwZShhYnNsOjpnZXQ8Mz4odikpOwpAQCAtMTMwMSw3
ICsxMzg0LDggQEAgVEVTVChWYXJpYW50VGVzdCwgQmFkR2V0VHlwZSkgewogICAgICAgICBhYnNs
OjpnZXQ8c3RkOjpzdHJpbmc+KHN0ZDo6bW92ZSh2KSkpOwogCiAgICAgY29uc3QgVmFyJiBjb25z
dF92ID0gdjsKLSAgICBBQlNMX1ZBUklBTlRfVEVTVF9FWFBFQ1RfQkFEX1ZBUklBTlRfQUNDRVNT
KGFic2w6OmdldDxzdGQ6OnN0cmluZz4oY29uc3RfdikpOworICAgIEFCU0xfVkFSSUFOVF9URVNU
X0VYUEVDVF9CQURfVkFSSUFOVF9BQ0NFU1MoCisgICAgICAgIGFic2w6OmdldDxzdGQ6OnN0cmlu
Zz4oY29uc3RfdikpOwogICAgIEFCU0xfVkFSSUFOVF9URVNUX0VYUEVDVF9CQURfVkFSSUFOVF9B
Q0NFU1MoCiAgICAgICAgIGFic2w6OmdldDxzdGQ6OnN0cmluZz4oc3RkOjptb3ZlKGNvbnN0X3Yp
KSk7ICAvLyBOT0xJTlQKICAgfQpAQCAtMTMyMyw3ICsxNDA3LDcgQEAgVEVTVChWYXJpYW50VGVz
dCwgR2V0SWZJbmRleCkgewogICB1c2luZyBWYXIgPSB2YXJpYW50PGludCwgc3RkOjpzdHJpbmcs
IGRvdWJsZSwgaW50PjsKIAogICB7Ci0gICAgVmFyIHYoYWJzbDo6aW5fcGxhY2VfaW5kZXhfdDww
Pnt9LCAwKTsKKyAgICBWYXIgdihhYnNsOjppbl9wbGFjZV9pbmRleDwwPiwgMCk7CiAgICAgRVhQ
RUNUX1RSVUUobm9leGNlcHQoYWJzbDo6Z2V0X2lmPDA+KCZ2KSkpOwogCiAgICAgewpAQCAtMTM1
OCw3ICsxNDQyLDggQEAgVEVTVChWYXJpYW50VGVzdCwgR2V0SWZJbmRleCkgewogICAgICAgRVhQ
RUNUX0VRKCplbGVtLCAwKTsKICAgICAgIHsKICAgICAgICAgYXV0byogYmFkX2VsZW0gPSBhYnNs
OjpnZXRfaWY8MT4oJmNvbnN0X3YpOwotICAgICAgICBFWFBFQ1RfVFJVRSgoc3RkOjppc19zYW1l
PGRlY2x0eXBlKGJhZF9lbGVtKSwgY29uc3Qgc3RkOjpzdHJpbmcqPjo6dmFsdWUpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoCisgICAgICAgICAgICAoc3RkOjppc19zYW1lPGRlY2x0eXBlKGJhZF9l
bGVtKSwgY29uc3Qgc3RkOjpzdHJpbmcqPjo6dmFsdWUpKTsKICAgICAgICAgRVhQRUNUX0VRKGJh
ZF9lbGVtLCBudWxscHRyKTsKICAgICAgIH0KICAgICAgIHsKQEAgLTE0NjcsNyArMTU1Miw4IEBA
IFRFU1QoVmFyaWFudFRlc3QsIEdldElmSW5kZXgpIHsKICAgICAgIH0KICAgICAgIHsKICAgICAg
ICAgYXV0byogYmFkX2VsZW0gPSBhYnNsOjpnZXRfaWY8MT4oJmNvbnN0X3YpOwotICAgICAgICBF
WFBFQ1RfVFJVRSgoc3RkOjppc19zYW1lPGRlY2x0eXBlKGJhZF9lbGVtKSwgY29uc3Qgc3RkOjpz
dHJpbmcqPjo6dmFsdWUpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoCisgICAgICAgICAgICAoc3Rk
Ojppc19zYW1lPGRlY2x0eXBlKGJhZF9lbGVtKSwgY29uc3Qgc3RkOjpzdHJpbmcqPjo6dmFsdWUp
KTsKICAgICAgICAgRVhQRUNUX0VRKGJhZF9lbGVtLCBudWxscHRyKTsKICAgICAgIH0KICAgICAg
IHsKQEAgLTE0NzksNyArMTU2NSw3IEBAIFRFU1QoVmFyaWFudFRlc3QsIEdldElmSW5kZXgpIHsK
ICAgfQogCiAgIHsKLSAgICBWYXIgdihhYnNsOjppbl9wbGFjZV9pbmRleF90PDA+e30sIDApOwor
ICAgIFZhciB2KGFic2w6OmluX3BsYWNlX2luZGV4PDA+LCAwKTsKICAgICB2LmVtcGxhY2U8Mz4o
MSk7CiAgICAgRVhQRUNUX1RSVUUobm9leGNlcHQoYWJzbDo6Z2V0X2lmPDM+KCZ2KSkpOwogCkBA
IC0xNTIwLDcgKzE2MDYsOCBAQCBURVNUKFZhcmlhbnRUZXN0LCBHZXRJZkluZGV4KSB7CiAgICAg
ICB9CiAgICAgICB7CiAgICAgICAgIGF1dG8qIGJhZF9lbGVtID0gYWJzbDo6Z2V0X2lmPDE+KCZj
b25zdF92KTsKLSAgICAgICAgRVhQRUNUX1RSVUUoKHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShiYWRf
ZWxlbSksIGNvbnN0IHN0ZDo6c3RyaW5nKj46OnZhbHVlKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KAorICAgICAgICAgICAgKHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShiYWRfZWxlbSksIGNvbnN0IHN0
ZDo6c3RyaW5nKj46OnZhbHVlKSk7CiAgICAgICAgIEVYUEVDVF9FUShiYWRfZWxlbSwgbnVsbHB0
cik7CiAgICAgICB9CiAgICAgICB7CkBAIC0xNjI0LDggKzE3MTEsOCBAQCBURVNUKFZhcmlhbnRU
ZXN0LCBPcGVyYXRvclJlbGF0aW9uYWwpIHsKIAogVEVTVChWYXJpYW50VGVzdCwgVmFsdWVsZXNz
T3BlcmF0b3JFcXVhbHMpIHsKICAgdmFyaWFudDxNb3ZlQ2FuVGhyb3csIHN0ZDo6c3RyaW5nPiBp
bnRfdigxKSwgc3RyaW5nX3YoIkhlbGxvIiksCi0gICAgICB2YWx1ZWxlc3MoYWJzbDo6aW5fcGxh
Y2VfaW5kZXhfdDwwPnt9KSwKLSAgICAgIG90aGVyX3ZhbHVlbGVzcyhhYnNsOjppbl9wbGFjZV9p
bmRleF90PDA+e30pOworICAgICAgdmFsdWVsZXNzKGFic2w6OmluX3BsYWNlX2luZGV4PDA+KSwK
KyAgICAgIG90aGVyX3ZhbHVlbGVzcyhhYnNsOjppbl9wbGFjZV9pbmRleDwwPik7CiAgIFRvVmFs
dWVsZXNzQnlFeGNlcHRpb24odmFsdWVsZXNzKTsKICAgVG9WYWx1ZWxlc3NCeUV4Y2VwdGlvbihv
dGhlcl92YWx1ZWxlc3MpOwogCkBAIC0xNjQ2LDggKzE3MzMsOCBAQCBURVNUKFZhcmlhbnRUZXN0
LCBWYWx1ZWxlc3NPcGVyYXRvckVxdWFscykgewogCiBURVNUKFZhcmlhbnRUZXN0LCBWYWx1ZWxl
c3NPcGVyYXRvclJlbGF0aW9uYWwpIHsKICAgdmFyaWFudDxNb3ZlQ2FuVGhyb3csIHN0ZDo6c3Ry
aW5nPiBpbnRfdigxKSwgc3RyaW5nX3YoIkhlbGxvIiksCi0gICAgICB2YWx1ZWxlc3MoYWJzbDo6
aW5fcGxhY2VfaW5kZXhfdDwwPnt9KSwKLSAgICAgIG90aGVyX3ZhbHVlbGVzcyhhYnNsOjppbl9w
bGFjZV9pbmRleF90PDA+e30pOworICAgICAgdmFsdWVsZXNzKGFic2w6OmluX3BsYWNlX2luZGV4
PDA+KSwKKyAgICAgIG90aGVyX3ZhbHVlbGVzcyhhYnNsOjppbl9wbGFjZV9pbmRleDwwPik7CiAg
IFRvVmFsdWVsZXNzQnlFeGNlcHRpb24odmFsdWVsZXNzKTsKICAgVG9WYWx1ZWxlc3NCeUV4Y2Vw
dGlvbihvdGhlcl92YWx1ZWxlc3MpOwogCkBAIC0xNzA2LDggKzE3OTMsOCBAQCBURVNUKFZhcmlh
bnRUZXN0LCBWaXNpdFNpbXBsZSkgewogICBFWFBFQ1RfRVEoIkIiLCBwaWVjZSk7CiAKICAgc3Ry
dWN0IFN0ckxlbiB7Ci0gICAgaW50IG9wZXJhdG9yKCkoY29uc3Qgc3RkOjpzdHJpbmcmIHMpIGNv
bnN0IHsgcmV0dXJuIHMuc2l6ZSgpOyB9CiAgICAgaW50IG9wZXJhdG9yKCkoY29uc3QgY2hhciog
cykgY29uc3QgeyByZXR1cm4gc3RybGVuKHMpOyB9CisgICAgaW50IG9wZXJhdG9yKCkoY29uc3Qg
c3RkOjpzdHJpbmcmIHMpIGNvbnN0IHsgcmV0dXJuIHMuc2l6ZSgpOyB9CiAgIH07CiAKICAgdiA9
ICJTb21lU3RyIjsKQEAgLTE3MjMsOSArMTgxMCwxMyBAQCBURVNUKFZhcmlhbnRUZXN0LCBWaXNp
dFJWYWx1ZSkgewogICAgIGJvb2wgb3BlcmF0b3IoKShzdGQ6OnN0cmluZyYmKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9ICAvLyBOT0xJTlQKIAogICAgIGludCBvcGVyYXRvcigpKGNvbnN0IHN0ZDo6
c3RyaW5nJiwgY29uc3Qgc3RkOjpzdHJpbmcmKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgaW50
IG9wZXJhdG9yKCkoY29uc3Qgc3RkOjpzdHJpbmcmLCBzdGQ6OnN0cmluZyYmKSBjb25zdCB7IHJl
dHVybiAxOyB9ICAvLyBOT0xJTlQKLSAgICBpbnQgb3BlcmF0b3IoKShzdGQ6OnN0cmluZyYmLCBj
b25zdCBzdGQ6OnN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIDI7IH0gIC8vIE5PTElOVAotICAgIGlu
dCBvcGVyYXRvcigpKHN0ZDo6c3RyaW5nJiYsIHN0ZDo6c3RyaW5nJiYpIGNvbnN0IHsgcmV0dXJu
IDM7IH0gICAgICAgLy8gTk9MSU5UCisgICAgaW50IG9wZXJhdG9yKCkoY29uc3Qgc3RkOjpzdHJp
bmcmLCBzdGQ6OnN0cmluZyYmKSBjb25zdCB7CisgICAgICByZXR1cm4gMTsKKyAgICB9ICAvLyBO
T0xJTlQKKyAgICBpbnQgb3BlcmF0b3IoKShzdGQ6OnN0cmluZyYmLCBjb25zdCBzdGQ6OnN0cmlu
ZyYpIGNvbnN0IHsKKyAgICAgIHJldHVybiAyOworICAgIH0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PTElOVAorICAg
IGludCBvcGVyYXRvcigpKHN0ZDo6c3RyaW5nJiYsIHN0ZDo6c3RyaW5nJiYpIGNvbnN0IHsgcmV0
dXJuIDM7IH0gIC8vIE5PTElOVAogICB9OwogICBFWFBFQ1RfRkFMU0UoYWJzbDo6dmlzaXQoVmlz
aXRvcnt9LCB2KSk7CiAgIEVYUEVDVF9UUlVFKGFic2w6OnZpc2l0KFZpc2l0b3J7fSwgYWJzbDo6
bW92ZSh2KSkpOwpAQCAtMTgwMSw5ICsxODkyLDkgQEAgVEVTVChWYXJpYW50VGVzdCwgVmlzaXRW
YXJpYWRpYykgewogICBFWFBFQ1RfVEhBVChhYnNsOjp2aXNpdChWaXNpdG9yKCksIEEoc3RkOjpz
dHJpbmcoIkJCQkJCIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBCKHN0ZDo6dW5pcXVl
X3B0cjxpbnQ+KG5ldyBpbnQoNykpKSksCiAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UGFpcig1
LCA3KSk7Ci0gIEVYUEVDVF9USEFUKAotICAgICAgYWJzbDo6dmlzaXQoVmlzaXRvcigpLCBBKHN0
ZDo6c3RyaW5nKCJCQkJCQiIpKSwgQihhYnNsOjpzdHJpbmdfdmlldygiQUJDIikpKSwKLSAgICAg
IDo6dGVzdGluZzo6UGFpcig1LCAzKSk7CisgIEVYUEVDVF9USEFUKGFic2w6OnZpc2l0KFZpc2l0
b3IoKSwgQShzdGQ6OnN0cmluZygiQkJCQkIiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEIoYWJzbDo6c3RyaW5nX3ZpZXcoIkFCQyIpKSksCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6
UGFpcig1LCAzKSk7CiB9CiAKIFRFU1QoVmFyaWFudFRlc3QsIFZpc2l0Tm9BcmdzKSB7CkBAIC0x
OTcyLDI5ICsyMDYzLDE3IEBAIFRFU1QoVmFyaWFudFRlc3QsIE1vbm9zdGF0ZUhhc2gpIHsKIH0K
IAogVEVTVChWYXJpYW50VGVzdCwgSGFzaCkgewotICBzdGF0aWNfYXNzZXJ0KHR5cGVfdHJhaXRz
X2ludGVybmFsOjpJc0hhc2hFbmFibGVkPHZhcmlhbnQ8aW50Pj46OnZhbHVlLCAiIik7Ci0gIHN0
YXRpY19hc3NlcnQodHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaEVuYWJsZWQ8dmFyaWFudDxI
YXNoYWJsZT4+Ojp2YWx1ZSwKKyAgc3RhdGljX2Fzc2VydCh0eXBlX3RyYWl0c19pbnRlcm5hbDo6
SXNIYXNoYWJsZTx2YXJpYW50PGludD4+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHR5
cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hhYmxlPHZhcmlhbnQ8SGFzaGFibGU+Pjo6dmFsdWUs
ICIiKTsKKyAgc3RhdGljX2Fzc2VydCh0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoYWJsZTx2
YXJpYW50PGludCwgSGFzaGFibGU+Pjo6dmFsdWUsCiAgICAgICAgICAgICAgICAgIiIpOwotICBz
dGF0aWNfYXNzZXJ0KAotICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaEVuYWJsZWQ8
dmFyaWFudDxpbnQsIEhhc2hhYmxlPj46OnZhbHVlLCAiIik7Ci0KLSNpZiBkZWZpbmVkKF9NU0Nf
VkVSKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChkZWZpbmVk
KF9MSUJDUFBfVkVSU0lPTikgJiYgX0xJQkNQUF9WRVJTSU9OIDwgNDAwMCAmJiBcCi0gICAgIF9M
SUJDUFBfU1REX1ZFUiA+IDExKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICBkZWZpbmVkKF9fQVBQTEVfXykKLSAgLy8gRm9yIE1TVkMgYW5kIGxpYmMrKyAoPCA0LjAgYW5k
IGMrKzE0KSwgc3RkOjpoYXNoIHByaW1hcnkgdGVtcGxhdGUgaGFzIGEKLSAgLy8gc3RhdGljX2Fz
c2VydCB0byBjYXRjaCBhbnkgdXNlci1kZWZpbmVkIHR5cGUgVCB0aGF0IGRvZXNuJ3QgcHJvdmlk
ZSBhIGhhc2gKLSAgLy8gc3BlY2lhbGl6YXRpb24uIFNvIGluc3RhbnRpYXRpbmcgc3RkOjpoYXNo
PHZhcmlhbnQ8VD4+IHdpbGwgcmVzdWx0Ci0gIC8vIGluIGEgaGFyZCBlcnJvciB3aGljaCBpcyBu
b3QgU0ZJTkFFIGZyaWVuZGx5LgotI2RlZmluZSBBQlNMX1NURF9IQVNIX05PVF9TRklOQUVfRlJJ
RU5ETFkgMQotI2VuZGlmCiAKLSNpZm5kZWYgQUJTTF9TVERfSEFTSF9OT1RfU0ZJTkFFX0ZSSUVO
RExZCi0gIHN0YXRpY19hc3NlcnQoCi0gICAgICAhdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFz
aEVuYWJsZWQ8dmFyaWFudDxOb25IYXNoYWJsZT4+Ojp2YWx1ZSwgIiIpOwotICBzdGF0aWNfYXNz
ZXJ0KCF0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoRW5hYmxlZDwKLSAgICAgICAgICAgICAg
ICAgICAgdmFyaWFudDxIYXNoYWJsZSwgTm9uSGFzaGFibGU+Pjo6dmFsdWUsCisjaWYgQUJTTF9N
RVRBX0lOVEVSTkFMX1NURF9IQVNIX1NGSU5BRV9GUklFTkRMWV8KKyAgc3RhdGljX2Fzc2VydCgh
dHlwZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaGFibGU8dmFyaWFudDxOb25IYXNoYWJsZT4+Ojp2
YWx1ZSwKICAgICAgICAgICAgICAgICAiIik7CisgIHN0YXRpY19hc3NlcnQoCisgICAgICAhdHlw
ZV90cmFpdHNfaW50ZXJuYWw6OklzSGFzaGFibGU8dmFyaWFudDxIYXNoYWJsZSwgTm9uSGFzaGFi
bGU+Pjo6dmFsdWUsCisgICAgICAiIik7CiAjZW5kaWYKIAogLy8gTVNWQyBzdGQ6Omhhc2g8c3Rk
Ojp2YXJpYW50PiBkb2VzIG5vdCB1c2UgdGhlIGluZGV4LCB0aHVzIHByb2R1Y2UgdGhlIHNhbWUK
QEAgLTIwMDIsOCArMjA4MSw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIEhhc2gpIHsKICNpZiAhKGRl
ZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQoQUJTTF9IQVZFX1NURF9WQVJJQU5UKSkKICAgewog
ICAgIC8vIHNhbWUgdmFsdWUgYXMgZGlmZmVyZW50IGFsdGVybmF0aXZlCi0gICAgdmFyaWFudDxp
bnQsIGludD4gdjAoaW5fcGxhY2VfaW5kZXhfdDwwPnt9LCA0Mik7Ci0gICAgdmFyaWFudDxpbnQs
IGludD4gdjEoaW5fcGxhY2VfaW5kZXhfdDwxPnt9LCA0Mik7CisgICAgdmFyaWFudDxpbnQsIGlu
dD4gdjAoaW5fcGxhY2VfaW5kZXg8MD4sIDQyKTsKKyAgICB2YXJpYW50PGludCwgaW50PiB2MShp
bl9wbGFjZV9pbmRleDwxPiwgNDIpOwogICAgIHN0ZDo6aGFzaDx2YXJpYW50PGludCwgaW50Pj4g
aGFzaDsKICAgICBFWFBFQ1RfTkUoaGFzaCh2MCksIGhhc2godjEpKTsKICAgfQpAQCAtMjAxOCwx
MSArMjA5NywxMCBAQCBURVNUKFZhcmlhbnRUZXN0LCBIYXNoKSB7CiAgICAgRVhQRUNUX0dUKGhh
c2hjb2Rlcy5zaXplKCksIDkwKTsKIAogICAgIC8vIHRlc3QgY29uc3QtcXVhbGlmaWVkCisgICAg
c3RhdGljX2Fzc2VydCh0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoYWJsZTx2YXJpYW50PGNv
bnN0IGludD4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICIiKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KAotICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNIYXNoRW5hYmxlZDx2YXJpYW50
PGNvbnN0IGludD4+Ojp2YWx1ZSwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoCi0gICAgICAgIHR5
cGVfdHJhaXRzX2ludGVybmFsOjpJc0hhc2hFbmFibGVkPHZhcmlhbnQ8Y29uc3QgSGFzaGFibGU+
Pjo6dmFsdWUsCi0gICAgICAgICIiKTsKKyAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6Oklz
SGFzaGFibGU8dmFyaWFudDxjb25zdCBIYXNoYWJsZT4+Ojp2YWx1ZSwgIiIpOwogICAgIHN0ZDo6
aGFzaDxhYnNsOjp2YXJpYW50PGNvbnN0IGludD4+IGNfaGFzaDsKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CiAgICAgICBFWFBFQ1RfRVEoaGFzaChpKSwgY19oYXNoKGkpKTsK
QEAgLTIwMzQsNyArMjExMiw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIEhhc2gpIHsKIC8vIE1pc2Nl
bGxhbmVvdXMgYW5kIGRlcHJlY2F0ZWQgdGVzdHMgLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KIAotLy8gVGVzdCB0aGF0IGEgc2V0IHJlcXVpcmluZyBhIGJhc2lj
IHR5cGUgY29udmVyc2lvbiB3b3JrcyBjb3JyZWN0bHkuCisvLyBUZXN0IHRoYXQgYSBzZXQgcmVx
dWlyaW5nIGEgYmFzaWMgdHlwZSBjb252ZXJzaW9uIHdvcmtzIGNvcnJlY3RseQorI2lmICFkZWZp
bmVkKEFCU0xfSEFWRV9TVERfVkFSSUFOVCkKIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RDb252ZXJ0
aW5nU2V0KSB7CiAgIHR5cGVkZWYgdmFyaWFudDxkb3VibGU+IFZhcmlhbnQ7CiAgIFZhcmlhbnQg
digxLjApOwpAQCAtMjA0NCw2ICsyMTIzLDcgQEAgVEVTVChWYXJpYW50VGVzdCwgVGVzdENvbnZl
cnRpbmdTZXQpIHsKICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBhYnNsOjpnZXRfaWY8ZG91Ymxl
PigmdikpOwogICBFWFBFQ1RfRE9VQkxFX0VRKDIsIGFic2w6OmdldDxkb3VibGU+KHYpKTsKIH0K
KyNlbmRpZiAgLy8gQUJTTF9IQVZFX1NURF9WQVJJQU5UCiAKIC8vIFRlc3QgdGhhdCBhIHZlY3Rv
ciBvZiB2YXJpYW50cyBiZWhhdmVzIHJlYXNvbmFibHkuCiBURVNUKFZhcmlhbnRUZXN0LCBDb250
YWluZXIpIHsKQEAgLTIxNzEsNyArMjI1MSw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RJbXBs
aWNpdENvbnZlcnNpb24pIHsKIAogICAvLyBXZSBzdGlsbCBuZWVkIHRoZSBleHBsaWNpdCBjYXN0
IGZvciBzdGQ6OnN0cmluZywgYmVjYXVzZSBDKysgd29uJ3QgYXBwbHkKICAgLy8gdHdvIHVzZXIt
ZGVmaW5lZCBpbXBsaWNpdCBjb252ZXJzaW9ucyBpbiBhIHJvdy4KLSAgRVhQRUNUX1RSVUUoYWJz
bDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpzdHJpbmc+KFBhc3NUaHJvdWdoKHN0ZDo6c3RyaW5n
KCJmb28iKSkpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBhYnNsOjpob2xkc19hbHRlcm5hdGl2
ZTxzdGQ6OnN0cmluZz4oUGFzc1Rocm91Z2goc3RkOjpzdHJpbmcoImZvbyIpKSkpOwogfQogCiBz
dHJ1Y3QgQ29udmVydGlibGUyOwpAQCAtMjE5NCw4ICsyMjc1LDEwIEBAIHN0cnVjdCBDb252ZXJ0
aWJsZTIgewogfTsKIAogVEVTVChWYXJpYW50VGVzdCwgVGVzdFJ2YWx1ZUNvbnZlcnNpb24pIHsK
KyNpZiAhZGVmaW5lZChBQlNMX0hBVkVfU1REX1ZBUklBTlQpCiAgIHZhcmlhbnQ8ZG91YmxlLCBz
dGQ6OnN0cmluZz4gdmFyKAotICAgICAgQ29udmVydFZhcmlhbnRUbzx2YXJpYW50PGRvdWJsZSwg
c3RkOjpzdHJpbmc+Pih2YXJpYW50PHN0ZDo6c3RyaW5nLCBpbnQ+KDApKSk7CisgICAgICBDb252
ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8ZG91YmxlLCBzdGQ6OnN0cmluZz4+KAorICAgICAgICAgIHZh
cmlhbnQ8c3RkOjpzdHJpbmcsIGludD4oMCkpKTsKICAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNf
YWx0ZXJuYXRpdmU8ZG91YmxlPih2YXIpKTsKICAgRVhQRUNUX0VRKDAuMCwgYWJzbDo6Z2V0PGRv
dWJsZT4odmFyKSk7CiAKQEAgLTIyMjUsNiArMjMwOCw3IEBAIFRFU1QoVmFyaWFudFRlc3QsIFRl
c3RSdmFsdWVDb252ZXJzaW9uKSB7CiAgIHZhcmlhbnQyID0gQ29udmVydFZhcmlhbnRUbzx2YXJp
YW50PGludDMyX3QsIHVpbnQzMl90Pj4odmFyaWFudDx1aW50MzJfdD4oNDIpKTsKICAgQVNTRVJU
X1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8dWludDMyX3Q+KHZhcmlhbnQyKSk7CiAgIEVY
UEVDVF9FUSg0MiwgYWJzbDo6Z2V0PHVpbnQzMl90Pih2YXJpYW50MikpOworI2VuZGlmICAvLyAh
QUJTTF9IQVZFX1NURF9WQVJJQU5UCiAKICAgdmFyaWFudDxDb252ZXJ0aWJsZTEsIENvbnZlcnRp
YmxlMj4gdmFyaWFudDMoCiAgICAgICBDb252ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8Q29udmVydGli
bGUxLCBDb252ZXJ0aWJsZTI+PigKQEAgLTIyMzcsNiArMjMyMSw3IEBAIFRFU1QoVmFyaWFudFRl
c3QsIFRlc3RSdmFsdWVDb252ZXJzaW9uKSB7CiB9CiAKIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RM
dmFsdWVDb252ZXJzaW9uKSB7CisjaWYgIWRlZmluZWQoQUJTTF9IQVZFX1NURF9WQVJJQU5UKQog
ICB2YXJpYW50PHN0ZDo6c3RyaW5nLCBpbnQ+IHNvdXJjZTEgPSAwOwogICB2YXJpYW50PGRvdWJs
ZSwgc3RkOjpzdHJpbmc+IGRlc3RpbmF0aW9uKAogICAgICAgQ29udmVydFZhcmlhbnRUbzx2YXJp
YW50PGRvdWJsZSwgc3RkOjpzdHJpbmc+Pihzb3VyY2UxKSk7CkBAIC0yMjczLDYgKzIzNTgsNyBA
QCBURVNUKFZhcmlhbnRUZXN0LCBUZXN0THZhbHVlQ29udmVyc2lvbikgewogICB2YXJpYW50MiA9
IENvbnZlcnRWYXJpYW50VG88dmFyaWFudDxpbnQzMl90LCB1aW50MzJfdD4+KHNvdXJjZTYpOwog
ICBBU1NFUlRfVFJVRShhYnNsOjpob2xkc19hbHRlcm5hdGl2ZTx1aW50MzJfdD4odmFyaWFudDIp
KTsKICAgRVhQRUNUX0VRKDQyLCBhYnNsOjpnZXQ8dWludDMyX3Q+KHZhcmlhbnQyKSk7CisjZW5k
aWYKIAogICB2YXJpYW50PENvbnZlcnRpYmxlMiwgQ29udmVydGlibGUxPiBzb3VyY2U3KChDb252
ZXJ0aWJsZTEoKSkpOwogICB2YXJpYW50PENvbnZlcnRpYmxlMSwgQ29udmVydGlibGUyPiB2YXJp
YW50MygKQEAgLTIyODcsNyArMjM3Myw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RMdmFsdWVD
b252ZXJzaW9uKSB7CiBURVNUKFZhcmlhbnRUZXN0LCBUZXN0TW92ZUNvbnZlcnNpb24pIHsKICAg
dXNpbmcgVmFyaWFudCA9CiAgICAgICB2YXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBpbnQ+
LCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qgc3RkOjpzdHJpbmc+PjsKLSAgdXNpbmcgT3RoZXJWYXJp
YW50ID0gdmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8aW50Piwgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6
c3RyaW5nPj47CisgIHVzaW5nIE90aGVyVmFyaWFudCA9CisgICAgICB2YXJpYW50PHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+LCBzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+PjsKIAogICBWYXJpYW50
IHZhcigKICAgICAgIENvbnZlcnRWYXJpYW50VG88VmFyaWFudD4oT3RoZXJWYXJpYW50e2Fic2w6
Om1ha2VfdW5pcXVlPGludD4oMCl9KSk7CkBAIC0yMjk1LDggKzIzODIsOCBAQCBURVNUKFZhcmlh
bnRUZXN0LCBUZXN0TW92ZUNvbnZlcnNpb24pIHsKICAgQVNTRVJUX05FKGFic2w6OmdldDxzdGQ6
OnVuaXF1ZV9wdHI8Y29uc3QgaW50Pj4odmFyKSwgbnVsbHB0cik7CiAgIEVYUEVDVF9FUSgwLCAq
YWJzbDo6Z2V0PHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBpbnQ+Pih2YXIpKTsKIAotICB2YXIgPQot
ICAgICAgQ29udmVydFZhcmlhbnRUbzxWYXJpYW50PihPdGhlclZhcmlhbnQoYWJzbDo6bWFrZV91
bmlxdWU8c3RkOjpzdHJpbmc+KCJmb28iKSkpOworICB2YXIgPSBDb252ZXJ0VmFyaWFudFRvPFZh
cmlhbnQ+KAorICAgICAgT3RoZXJWYXJpYW50KGFic2w6Om1ha2VfdW5pcXVlPHN0ZDo6c3RyaW5n
PigiZm9vIikpKTsKICAgQVNTRVJUX1RSVUUoYWJzbDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjp1
bmlxdWVfcHRyPGNvbnN0IHN0ZDo6c3RyaW5nPj4odmFyKSk7CiAgIEVYUEVDVF9FUSgiZm9vIiwg
KmFic2w6OmdldDxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qgc3RkOjpzdHJpbmc+Pih2YXIpKTsKIH0K
QEAgLTIzMDcsNyArMjM5NCw4IEBAIFRFU1QoVmFyaWFudFRlc3QsIERvZXNOb3RNb3ZlRnJvbUx2
YWx1ZXMpIHsKICAgLy8gd2hldGhlciBtb3Zpbmcgb3IgY29weWluZyBoYXMgb2NjdXJyZWQuCiAg
IHVzaW5nIFZhcmlhbnQgPQogICAgICAgdmFyaWFudDxzdGQ6OnNoYXJlZF9wdHI8Y29uc3QgaW50
Piwgc3RkOjpzaGFyZWRfcHRyPGNvbnN0IHN0ZDo6c3RyaW5nPj47Ci0gIHVzaW5nIE90aGVyVmFy
aWFudCA9IHZhcmlhbnQ8c3RkOjpzaGFyZWRfcHRyPGludD4sIHN0ZDo6c2hhcmVkX3B0cjxzdGQ6
OnN0cmluZz4+OworICB1c2luZyBPdGhlclZhcmlhbnQgPQorICAgICAgdmFyaWFudDxzdGQ6OnNo
YXJlZF9wdHI8aW50Piwgc3RkOjpzaGFyZWRfcHRyPHN0ZDo6c3RyaW5nPj47CiAKICAgVmFyaWFu
dCB2MShzdGQ6Om1ha2Vfc2hhcmVkPGNvbnN0IGludD4oMCkpOwogCkBAIC0yMzM1LDggKzI0MjMs
MTAgQEAgVEVTVChWYXJpYW50VGVzdCwgRG9lc05vdE1vdmVGcm9tTHZhbHVlcykgewogfQogCiBU
RVNUKFZhcmlhbnRUZXN0LCBUZXN0UnZhbHVlQ29udmVyc2lvblZpYUNvbnZlcnRWYXJpYW50VG8p
IHsKKyNpZiAhZGVmaW5lZChBQlNMX0hBVkVfU1REX1ZBUklBTlQpCiAgIHZhcmlhbnQ8ZG91Ymxl
LCBzdGQ6OnN0cmluZz4gdmFyKAotICAgICAgQ29udmVydFZhcmlhbnRUbzx2YXJpYW50PGRvdWJs
ZSwgc3RkOjpzdHJpbmc+Pih2YXJpYW50PHN0ZDo6c3RyaW5nLCBpbnQ+KDMpKSk7CisgICAgICBD
b252ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8ZG91YmxlLCBzdGQ6OnN0cmluZz4+KAorICAgICAgICAg
IHZhcmlhbnQ8c3RkOjpzdHJpbmcsIGludD4oMykpKTsKICAgRVhQRUNUX1RIQVQoYWJzbDo6Z2V0
X2lmPGRvdWJsZT4oJnZhciksIFBvaW50ZWUoMy4wKSk7CiAKICAgdmFyID0gQ29udmVydFZhcmlh
bnRUbzx2YXJpYW50PGRvdWJsZSwgc3RkOjpzdHJpbmc+PigKQEAgLTIzNTksNiArMjQ0OSw3IEBA
IFRFU1QoVmFyaWFudFRlc3QsIFRlc3RSdmFsdWVDb252ZXJzaW9uVmlhQ29udmVydFZhcmlhbnRU
bykgewogCiAgIHZhcmlhbnQyID0gQ29udmVydFZhcmlhbnRUbzx2YXJpYW50PGludDMyX3QsIHVp
bnQzMl90Pj4odmFyaWFudDx1aW50MzJfdD4oNDIpKTsKICAgRVhQRUNUX1RIQVQoYWJzbDo6Z2V0
X2lmPHVpbnQzMl90PigmdmFyaWFudDIpLCBQb2ludGVlKDQyKSk7CisjZW5kaWYKIAogICB2YXJp
YW50PENvbnZlcnRpYmxlMSwgQ29udmVydGlibGUyPiB2YXJpYW50MygKICAgICAgIENvbnZlcnRW
YXJpYW50VG88dmFyaWFudDxDb252ZXJ0aWJsZTEsIENvbnZlcnRpYmxlMj4+KApAQCAtMjM3MSw2
ICsyNDYyLDcgQEAgVEVTVChWYXJpYW50VGVzdCwgVGVzdFJ2YWx1ZUNvbnZlcnNpb25WaWFDb252
ZXJ0VmFyaWFudFRvKSB7CiB9CiAKIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RMdmFsdWVDb252ZXJz
aW9uVmlhQ29udmVydFZhcmlhbnRUbykgeworI2lmICFkZWZpbmVkKEFCU0xfSEFWRV9TVERfVkFS
SUFOVCkKICAgdmFyaWFudDxzdGQ6OnN0cmluZywgaW50PiBzb3VyY2UxID0gMzsKICAgdmFyaWFu
dDxkb3VibGUsIHN0ZDo6c3RyaW5nPiBkZXN0aW5hdGlvbigKICAgICAgIENvbnZlcnRWYXJpYW50
VG88dmFyaWFudDxkb3VibGUsIHN0ZDo6c3RyaW5nPj4oc291cmNlMSkpOwpAQCAtMjM3OCw3ICsy
NDcwLDggQEAgVEVTVChWYXJpYW50VGVzdCwgVGVzdEx2YWx1ZUNvbnZlcnNpb25WaWFDb252ZXJ0
VmFyaWFudFRvKSB7CiAKICAgdmFyaWFudDxjb25zdCBjaGFyKiwgZmxvYXQ+IHNvdXJjZTIgPSAi
Zm9vIjsKICAgZGVzdGluYXRpb24gPSBDb252ZXJ0VmFyaWFudFRvPHZhcmlhbnQ8ZG91YmxlLCBz
dGQ6OnN0cmluZz4+KHNvdXJjZTIpOwotICBFWFBFQ1RfVEhBVChhYnNsOjpnZXRfaWY8c3RkOjpz
dHJpbmc+KCZkZXN0aW5hdGlvbiksIFBvaW50ZWUoc3RkOjpzdHJpbmcoImZvbyIpKSk7CisgIEVY
UEVDVF9USEFUKGFic2w6OmdldF9pZjxzdGQ6OnN0cmluZz4oJmRlc3RpbmF0aW9uKSwKKyAgICAg
ICAgICAgICAgUG9pbnRlZShzdGQ6OnN0cmluZygiZm9vIikpKTsKIAogICB2YXJpYW50PGludCwg
ZmxvYXQ+IHNvdXJjZTMoNDIpOwogICB2YXJpYW50PGRvdWJsZT4gc2luZ2xldG9uKENvbnZlcnRW
YXJpYW50VG88dmFyaWFudDxkb3VibGU+Pihzb3VyY2UzKSk7CkBAIC0yNDAxLDYgKzI0OTQsNyBA
QCBURVNUKFZhcmlhbnRUZXN0LCBUZXN0THZhbHVlQ29udmVyc2lvblZpYUNvbnZlcnRWYXJpYW50
VG8pIHsKICAgdmFyaWFudDx1aW50MzJfdD4gc291cmNlNig0Mik7CiAgIHZhcmlhbnQyID0gQ29u
dmVydFZhcmlhbnRUbzx2YXJpYW50PGludDMyX3QsIHVpbnQzMl90Pj4oc291cmNlNik7CiAgIEVY
UEVDVF9USEFUKGFic2w6OmdldF9pZjx1aW50MzJfdD4oJnZhcmlhbnQyKSwgUG9pbnRlZSg0Mikp
OworI2VuZGlmICAvLyAhQUJTTF9IQVZFX1NURF9WQVJJQU5UCiAKICAgdmFyaWFudDxDb252ZXJ0
aWJsZTIsIENvbnZlcnRpYmxlMT4gc291cmNlNygoQ29udmVydGlibGUxKCkpKTsKICAgdmFyaWFu
dDxDb252ZXJ0aWJsZTEsIENvbnZlcnRpYmxlMj4gdmFyaWFudDMoCkBAIC0yNDE1LDE1ICsyNTA5
LDE2IEBAIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RMdmFsdWVDb252ZXJzaW9uVmlhQ29udmVydFZh
cmlhbnRUbykgewogVEVTVChWYXJpYW50VGVzdCwgVGVzdE1vdmVDb252ZXJzaW9uVmlhQ29udmVy
dFZhcmlhbnRUbykgewogICB1c2luZyBWYXJpYW50ID0KICAgICAgIHZhcmlhbnQ8c3RkOjp1bmlx
dWVfcHRyPGNvbnN0IGludD4sIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBzdGQ6OnN0cmluZz4+Owot
ICB1c2luZyBPdGhlclZhcmlhbnQgPSB2YXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBzdGQ6
OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+PjsKKyAgdXNpbmcgT3RoZXJWYXJpYW50ID0KKyAgICAg
IHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPGludD4sIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmlu
Zz4+OwogCiAgIFZhcmlhbnQgdmFyKAogICAgICAgQ29udmVydFZhcmlhbnRUbzxWYXJpYW50PihP
dGhlclZhcmlhbnR7YWJzbDo6bWFrZV91bmlxdWU8aW50PigzKX0pKTsKICAgRVhQRUNUX1RIQVQo
YWJzbDo6Z2V0X2lmPHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBpbnQ+PigmdmFyKSwKICAgICAgICAg
ICAgICAgUG9pbnRlZShQb2ludGVlKDMpKSk7CiAKLSAgdmFyID0KLSAgICAgIENvbnZlcnRWYXJp
YW50VG88VmFyaWFudD4oT3RoZXJWYXJpYW50KGFic2w6Om1ha2VfdW5pcXVlPHN0ZDo6c3RyaW5n
PigiZm9vIikpKTsKKyAgdmFyID0gQ29udmVydFZhcmlhbnRUbzxWYXJpYW50PigKKyAgICAgIE90
aGVyVmFyaWFudChhYnNsOjptYWtlX3VuaXF1ZTxzdGQ6OnN0cmluZz4oImZvbyIpKSk7CiAgIEVY
UEVDVF9USEFUKGFic2w6OmdldF9pZjxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qgc3RkOjpzdHJpbmc+
PigmdmFyKSwKICAgICAgICAgICAgICAgUG9pbnRlZShQb2ludGVlKHN0ZDo6c3RyaW5nKCJmb28i
KSkpKTsKIH0KQEAgLTI1OTMsNyArMjY4OCw3IEBAIFRFU1QoVmFyaWFudFRlc3QsIE1vdmVDdG9y
QnVnKSB7CiAgIH07CiAgIHsKICAgICB1c2luZyBWID0gYWJzbDo6dmFyaWFudDxUcml2aWFsQ29w
eU5vbnRyaXZpYWxNb3ZlLCBpbnQ+OwotICAgIFYgdjEoYWJzbDo6aW5fcGxhY2VfaW5kZXhfdDww
Pnt9KTsKKyAgICBWIHYxKGFic2w6OmluX3BsYWNlX2luZGV4PDA+KTsKICAgICAvLyB0aGlzIHNo
b3VsZCBpbnZva2UgdGhlIG1vdmUgY3RvciwgcmF0aGVyIHRoYW4gdGhlIHRyaXZpYWwgY29weSBj
dG9yLgogICAgIFYgdjIoc3RkOjptb3ZlKHYxKSk7CiAgICAgRVhQRUNUX1RSVUUoYWJzbDo6Z2V0
PDA+KHYyKS5jYWxsZWQpOwpAQCAtMjYwMSw3ICsyNjk2LDcgQEAgVEVTVChWYXJpYW50VGVzdCwg
TW92ZUN0b3JCdWcpIHsKICAgewogICAgIC8vIHRoaXMgY2FzZSBmYWlsZWQgdG8gY29tcGlsZSBi
ZWZvcmUgb3VyIGZpeCBkdWUgdG8gYSBHQ0MgYnVnLgogICAgIHVzaW5nIFYgPSBhYnNsOjp2YXJp
YW50PGludCwgVHJpdmlhbENvcHlOb250cml2aWFsTW92ZT47Ci0gICAgViB2MShhYnNsOjppbl9w
bGFjZV9pbmRleF90PDE+e30pOworICAgIFYgdjEoYWJzbDo6aW5fcGxhY2VfaW5kZXg8MT4pOwog
ICAgIC8vIHRoaXMgc2hvdWxkIGludm9rZSB0aGUgbW92ZSBjdG9yLCByYXRoZXIgdGhhbiB0aGUg
dHJpdmlhbCBjb3B5IGN0b3IuCiAgICAgViB2MihzdGQ6Om1vdmUodjEpKTsKICAgICBFWFBFQ1Rf
VFJVRShhYnNsOjpnZXQ8MT4odjIpLmNhbGxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5
L0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS9CVUlMRC5iYXplbAppbmRleCBjMDFiNDliYzk3
ZGQxZDJjZWViNDc4MGNiZTkzZDE0ZmZlNjU0YTY5Li5kNDEzMTdlMzUwN2U1NWFjZDVmODg4ZjI2
NmY1NGFmODc4NGU3M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L0JVSUxELmJhemVsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3V0aWxpdHkvQlVJTEQuYmF6ZWwKQEAgLTEsNiArMSw3IEBACiBsb2FkKAotICAg
ICIvL2Fic2w6Y29wdHMuYnpsIiwKKyAgICAiLy9hYnNsOmNvcHRzL2NvbmZpZ3VyZV9jb3B0cy5i
emwiLAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAorICAgICJBQlNMX0RFRkFVTFRfTElOS09Q
VFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogKQogCkBAIC0xMiw2ICsxMyw3IEBAIGNjX2xp
YnJhcnkoCiAgICAgbmFtZSA9ICJ1dGlsaXR5IiwKICAgICBoZHJzID0gWyJ1dGlsaXR5LmgiXSwK
ICAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfREVG
QVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2U6YmFzZV9p
bnRlcm5hbCIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLApAQCAtMjMsNiArMjUsNyBA
QCBjY190ZXN0KAogICAgIG5hbWUgPSAidXRpbGl0eV90ZXN0IiwKICAgICBzcmNzID0gWyJ1dGls
aXR5X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfREVGQVVMVF9MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnV0aWxp
dHkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3V0aWxpdHkvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L0JVSUxELmduCmluZGV4IDRjZjNj
ODEwZTY1Nzc4MzhhYzkyYjYwMmY1ZDQ5ZDZkZWUxZDE0ZmEuLjQ5MzkwYjNmZDlkN2YxYWQxOGZl
ZTI2NjMxODRmYTFhMjMwY2YwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvQlVJTEQuZ24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdXRpbGl0eS9CVUlMRC5nbgpAQCAtNiw2ICs2LDcgQEAgaW1wb3J0KCIvL2J1
aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCiBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgewog
ICB2aXNpYmlsaXR5ID0gWworICAgICIvL2xpYmFzc2lzdGFudC8qIiwKICAgICAiLy90aGlyZF9w
YXJ0eS93ZWJydGMvKiIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKICAgICAi
Ly90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxp
dHkvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L0NNYWtlTGlzdHMudHh0CmluZGV4IGRj
M2E2MzE5MDU0Njg4NDYyOTEwNzQ3ODU4MmIyYjg5YThlZmNkOTYuLmUxZWRkMTlhYTAxMzY4ZDli
ODliY2UwNjg5OWEwNjkwZjljZDY3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS9DTWFrZUxpc3RzLnR4dApAQCAtNSw3ICs1LDcg
QEAKICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgogIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
ICMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMg
ICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTE0LDM5ICsxNCwzMSBAQAogIyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KICMKIAotCi1saXN0KEFQUEVORCBVVElMSVRZX1BVQkxJQ19IRUFE
RVJTCi0gICJ1dGlsaXR5LmgiCi0pCi0KLWFic2xfaGVhZGVyX2xpYnJhcnkoCi0gIFRBUkdFVAot
ICAgIGFic2xfdXRpbGl0eQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgYWJzbDo6YmFzZQotICBF
WFBPUlRfTkFNRQorYWJzbF9jY19saWJyYXJ5KAorICBOQU1FCiAgICAgdXRpbGl0eQorICBIRFJT
CisgICAgInV0aWxpdHkuaCIKKyAgQ09QVFMKKyAgICAke0FCU0xfREVGQVVMVF9DT1BUU30KKyAg
REVQUworICAgIGFic2w6OmJhc2VfaW50ZXJuYWwKKyAgICBhYnNsOjpjb25maWcKKyAgICBhYnNs
Ojp0eXBlX3RyYWl0cworICBQVUJMSUMKICkKIAotCi0jCi0jIyBURVNUUwotIwotCi0jIHRlc3Qg
dXRpbGl0eV90ZXN0Ci1zZXQoVVRJTElUWV9URVNUX1NSQyAidXRpbGl0eV90ZXN0LmNjIikKLXNl
dChVVElMSVRZX1RFU1RfUFVCTElDX0xJQlJBUklFUwotICBhYnNsOjpiYXNlCi0gIGFic2w6Om1l
bW9yeQotICBhYnNsOjpzdHJpbmdzCi0gIGFic2w6OnV0aWxpdHkKLSkKLQotYWJzbF90ZXN0KAot
ICBUQVJHRVQKK2Fic2xfY2NfdGVzdCgKKyAgTkFNRQogICAgIHV0aWxpdHlfdGVzdAotICBTT1VS
Q0VTCi0gICAgJHtVVElMSVRZX1RFU1RfU1JDfQotICBQVUJMSUNfTElCUkFSSUVTCi0gICAgJHtV
VElMSVRZX1RFU1RfUFVCTElDX0xJQlJBUklFU30KKyAgU1JDUworICAgICJ1dGlsaXR5X3Rlc3Qu
Y2MiCisgIENPUFRTCisgICAgJHtBQlNMX1RFU1RfQ09QVFN9CisgIERFUFMKKyAgICBhYnNsOjp1
dGlsaXR5CisgICAgYWJzbDo6Y29yZV9oZWFkZXJzCisgICAgYWJzbDo6bWVtb3J5CisgICAgYWJz
bDo6c3RyaW5ncworICAgIGdtb2NrX21haW4KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkv
dXRpbGl0eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS91dGlsaXR5LmgKaW5kZXggYWVmNGJhYTAyZGNkNjdh
Y2ViMjU0ZjBhOWU0YmZmMDBkYTRjZTViMC4uZWVmOGZiNDFmZThlMzhjYzA0MWI5YzIxZTkyOGU4
ZGI0MWNmZTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS91dGlsaXR5LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdXRpbGl0eS91dGlsaXR5LmgKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKQEAgLTI1LDYgKzI1LDcgQEAKIC8vICAgKiBpbmRleF9zZXF1ZW5jZV9mb3I8VHMuLi4+
ICAgICA9PSBzdGQ6OmluZGV4X3NlcXVlbmNlX2ZvcjxUcy4uLj4KIC8vICAgKiBhcHBseTxGdW5j
dG9yLCBUdXBsZT4gICAgICAgICA9PSBzdGQ6OmFwcGx5PEZ1bmN0b3IsIFR1cGxlPgogLy8gICAq
IGV4Y2hhbmdlPFQ+ICAgICAgICAgICAgICAgICAgID09IHN0ZDo6ZXhjaGFuZ2U8VD4KKy8vICAg
KiBtYWtlX2Zyb21fdHVwbGU8VD4gICAgICAgICAgICA9PSBzdGQ6Om1ha2VfZnJvbV90dXBsZTxU
PgogLy8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgYWxzbyBwcm92aWRlcyB0aGUgdGFnIHR5cGVzIGBp
bl9wbGFjZV90YCwgYGluX3BsYWNlX3R5cGVfdGAsCiAvLyBhbmQgYGluX3BsYWNlX2luZGV4X3Rg
LCBhcyB3ZWxsIGFzIHRoZSBjb25zdGFudCBgaW5fcGxhY2VgLCBhbmQKQEAgLTMyLDEwICszMyw5
IEBACiAvLwogLy8gUmVmZXJlbmNlczoKIC8vCi0vLyAgaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5j
b20vdy9jcHAvdXRpbGl0eS9pbnRlZ2VyX3NlcXVlbmNlCi0vLyAgaHR0cDovL2VuLmNwcHJlZmVy
ZW5jZS5jb20vdy9jcHAvdXRpbGl0eS9hcHBseQorLy8gIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNl
LmNvbS93L2NwcC91dGlsaXR5L2ludGVnZXJfc2VxdWVuY2UKKy8vICBodHRwczovL2VuLmNwcHJl
ZmVyZW5jZS5jb20vdy9jcHAvdXRpbGl0eS9hcHBseQogLy8gIGh0dHA6Ly93d3cub3Blbi1zdGQu
b3JnL2p0YzEvc2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIwMTMvbjM2NTguaHRtbAotLy8KIAogI2lm
bmRlZiBBQlNMX1VUSUxJVFlfVVRJTElUWV9IXwogI2RlZmluZSBBQlNMX1VUSUxJVFlfVVRJTElU
WV9IXwpAQCAtMTE0LDYgKzExNCwyMCBAQCBzdHJ1Y3QgR2VuPFQsIDA+IHsKICAgdXNpbmcgdHlw
ZSA9IGludGVnZXJfc2VxdWVuY2U8VD47CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0
cnVjdCBJblBsYWNlVHlwZVRhZyB7CisgIGV4cGxpY2l0IEluUGxhY2VUeXBlVGFnKCkgPSBkZWxl
dGU7CisgIEluUGxhY2VUeXBlVGFnKGNvbnN0IEluUGxhY2VUeXBlVGFnJikgPSBkZWxldGU7Cisg
IEluUGxhY2VUeXBlVGFnJiBvcGVyYXRvcj0oY29uc3QgSW5QbGFjZVR5cGVUYWcmKSA9IGRlbGV0
ZTsKK307CisKK3RlbXBsYXRlIDxzaXplX3QgST4KK3N0cnVjdCBJblBsYWNlSW5kZXhUYWcgewor
ICBleHBsaWNpdCBJblBsYWNlSW5kZXhUYWcoKSA9IGRlbGV0ZTsKKyAgSW5QbGFjZUluZGV4VGFn
KGNvbnN0IEluUGxhY2VJbmRleFRhZyYpID0gZGVsZXRlOworICBJblBsYWNlSW5kZXhUYWcmIG9w
ZXJhdG9yPShjb25zdCBJblBsYWNlSW5kZXhUYWcmKSA9IGRlbGV0ZTsKK307CisKIH0gIC8vIG5h
bWVzcGFjZSB1dGlsaXR5X2ludGVybmFsCiAKIC8vIENvbXBpbGUtdGltZSBzZXF1ZW5jZXMgb2Yg
aW50ZWdlcnMKQEAgLTE2Myw2ICsxNzcsNyBAQCBBQlNMX0lOVEVSTkFMX0lOTElORV9DT05TVEVY
UFIoaW5fcGxhY2VfdCwgaW5fcGxhY2UsIHt9KTsKICNlbmRpZiAgLy8gQUJTTF9IQVZFX1NURF9P
UFRJT05BTAogCiAjaWYgZGVmaW5lZChBQlNMX0hBVkVfU1REX0FOWSkgfHwgZGVmaW5lZChBQlNM
X0hBVkVfU1REX1ZBUklBTlQpCit1c2luZyBzdGQ6OmluX3BsYWNlX3R5cGU7CiB1c2luZyBzdGQ6
OmluX3BsYWNlX3R5cGVfdDsKICNlbHNlCiAKQEAgLTE3MiwxMCArMTg3LDE0IEBAIHVzaW5nIHN0
ZDo6aW5fcGxhY2VfdHlwZV90OwogLy8gYmUgc3BlY2lmaWVkLCBzdWNoIGFzIHdpdGggYGFic2w6
OmFueWAsIGRlc2lnbmVkIHRvIGJlIGEgZHJvcC1pbiByZXBsYWNlbWVudAogLy8gZm9yIEMrKzE3
J3MgYHN0ZDo6aW5fcGxhY2VfdHlwZV90YC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0
IGluX3BsYWNlX3R5cGVfdCB7fTsKK3VzaW5nIGluX3BsYWNlX3R5cGVfdCA9IHZvaWQgKCopKHV0
aWxpdHlfaW50ZXJuYWw6OkluUGxhY2VUeXBlVGFnPFQ+KTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Cit2b2lkIGluX3BsYWNlX3R5cGUodXRpbGl0eV9pbnRlcm5hbDo6SW5QbGFjZVR5cGVUYWc8
VD4pIHt9CiAjZW5kaWYgIC8vIEFCU0xfSEFWRV9TVERfQU5ZIHx8IEFCU0xfSEFWRV9TVERfVkFS
SUFOVAogCiAjaWZkZWYgQUJTTF9IQVZFX1NURF9WQVJJQU5UCit1c2luZyBzdGQ6OmluX3BsYWNl
X2luZGV4OwogdXNpbmcgc3RkOjppbl9wbGFjZV9pbmRleF90OwogI2Vsc2UKIApAQCAtMTg1LDcg
KzIwNCwxMCBAQCB1c2luZyBzdGQ6OmluX3BsYWNlX2luZGV4X3Q7CiAvLyBiZSBzcGVjaWZpZWQs
IHN1Y2ggYXMgd2l0aCBgYWJzbDo6YW55YCwgZGVzaWduZWQgdG8gYmUgYSBkcm9wLWluIHJlcGxh
Y2VtZW50CiAvLyBmb3IgQysrMTcncyBgc3RkOjppbl9wbGFjZV9pbmRleF90YC4KIHRlbXBsYXRl
IDxzaXplX3QgST4KLXN0cnVjdCBpbl9wbGFjZV9pbmRleF90IHt9OwordXNpbmcgaW5fcGxhY2Vf
aW5kZXhfdCA9IHZvaWQgKCopKHV0aWxpdHlfaW50ZXJuYWw6OkluUGxhY2VJbmRleFRhZzxJPik7
CisKK3RlbXBsYXRlIDxzaXplX3QgST4KK3ZvaWQgaW5fcGxhY2VfaW5kZXgodXRpbGl0eV9pbnRl
cm5hbDo6SW5QbGFjZUluZGV4VGFnPEk+KSB7fQogI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX1ZB
UklBTlQKIAogLy8gQ29uc3RleHByIG1vdmUgYW5kIGZvcndhcmQKQEAgLTIzNCwyNSArMjU2LDMz
IEBAIGF1dG8gYXBwbHlfaGVscGVyKEZ1bmN0b3ImJiBmdW5jdG9yLCBUdXBsZSYmIHQsIGluZGV4
X3NlcXVlbmNlPEluZGV4ZXMuLi4+KQogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBjbGFzcyBG
b297dm9pZCBCYXIoaW50KTt9OwotLy8gICB2b2lkIHVzZXJfZnVuY3Rpb24oaW50LCBzdHJpbmcp
OwotLy8gICB2b2lkIHVzZXJfZnVuY3Rpb24oc3RkOjp1bmlxdWVfcHRyPEZvbz4pOworLy8gICBj
bGFzcyBGb28geworLy8gICAgcHVibGljOgorLy8gICAgIHZvaWQgQmFyKGludCk7CisvLyAgIH07
CisvLyAgIHZvaWQgdXNlcl9mdW5jdGlvbjEoaW50LCBzdGQ6OnN0cmluZyk7CisvLyAgIHZvaWQg
dXNlcl9mdW5jdGlvbjIoc3RkOjp1bmlxdWVfcHRyPEZvbz4pOworLy8gICBhdXRvIHVzZXJfbGFt
YmRhID0gW10oaW50LCBpbnQpIHt9OwogLy8KIC8vICAgaW50IG1haW4oKQogLy8gICB7Ci0vLyAg
ICAgICBzdGQ6OnR1cGxlPGludCwgc3RyaW5nPiB0dXBsZTEoNDIsICJiYXIiKTsKLS8vICAgICAg
IC8vIEludm9rZXMgdGhlIHVzZXIgZnVuY3Rpb24gb3ZlcmxvYWQgb24gaW50LCBzdHJpbmcuCi0v
LyAgICAgICBhYnNsOjphcHBseSgmdXNlcl9mdW5jdGlvbiwgdHVwbGUxKTsKKy8vICAgICAgIHN0
ZDo6dHVwbGU8aW50LCBzdGQ6OnN0cmluZz4gdHVwbGUxKDQyLCAiYmFyIik7CisvLyAgICAgICAv
LyBJbnZva2VzIHRoZSBmaXJzdCB1c2VyIGZ1bmN0aW9uIG9uIGludCwgc3RkOjpzdHJpbmcuCisv
LyAgICAgICBhYnNsOjphcHBseSgmdXNlcl9mdW5jdGlvbjEsIHR1cGxlMSk7CiAvLwotLy8gICAg
ICAgYXV0byBmb28gPSBhYnNsOjptYWtlX3VuaXF1ZTxGb28+KCk7Ci0vLyAgICAgICBzdGQ6OnR1
cGxlPEZvbyosIGludD4gdHVwbGUyKGZvby5nZXQoKSwgNDIpOwotLy8gICAgICAgLy8gSW52b2tl
cyB0aGUgbWV0aG9kIEJhciBvbiBmb28gd2l0aCBvbmUgYXJndW1lbnQgNDIuCi0vLyAgICAgICBh
YnNsOjphcHBseSgmRm9vOjpCYXIsIGZvby5nZXQoKSwgNDIpOwotLy8KLS8vICAgICAgIHN0ZDo6
dHVwbGU8c3RkOjp1bmlxdWVfcHRyPEZvbz4+IHR1cGxlMyhhYnNsOjptYWtlX3VuaXF1ZTxGb28+
KCkpOworLy8gICAgICAgc3RkOjp0dXBsZTxzdGQ6OnVuaXF1ZV9wdHI8Rm9vPj4gdHVwbGUyKGFi
c2w6Om1ha2VfdW5pcXVlPEZvbz4oKSk7CiAvLyAgICAgICAvLyBJbnZva2VzIHRoZSB1c2VyIGZ1
bmN0aW9uIHRoYXQgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSB1bmlxdWUKIC8vICAgICAgIC8vIHBv
aW50ZXIuCi0vLyAgICAgICBhYnNsOjphcHBseSgmdXNlcl9mdW5jdGlvbiwgc3RkOjptb3ZlKHR1
cGxlKSk7CisvLyAgICAgICBhYnNsOjphcHBseSgmdXNlcl9mdW5jdGlvbjIsIHN0ZDo6bW92ZSh0
dXBsZTIpKTsKKy8vCisvLyAgICAgICBhdXRvIGZvbyA9IGFic2w6Om1ha2VfdW5pcXVlPEZvbz4o
KTsKKy8vICAgICAgIHN0ZDo6dHVwbGU8Rm9vKiwgaW50PiB0dXBsZTMoZm9vLmdldCgpLCA0Mik7
CisvLyAgICAgICAvLyBJbnZva2VzIHRoZSBtZXRob2QgQmFyIG9uIGZvbyB3aXRoIG9uZSBhcmd1
bWVudCwgNDIuCisvLyAgICAgICBhYnNsOjphcHBseSgmRm9vOjpCYXIsIHR1cGxlMyk7CisvLwor
Ly8gICAgICAgc3RkOjp0dXBsZTxpbnQsIGludD4gdHVwbGU0KDgsIDkpOworLy8gICAgICAgLy8g
SW52b2tlcyBhIGxhbWJkYS4KKy8vICAgICAgIGFic2w6OmFwcGx5KHVzZXJfbGFtYmRhLCB0dXBs
ZTQpOwogLy8gICB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVHVwbGU+
CiBhdXRvIGFwcGx5KEZ1bmN0b3ImJiBmdW5jdG9yLCBUdXBsZSYmIHQpCkBAIC0yODYsNiArMzE2
LDMzIEBAIFQgZXhjaGFuZ2UoVCYgb2JqLCBVJiYgbmV3X3ZhbHVlKSB7CiAgIHJldHVybiBvbGRf
dmFsdWU7CiB9CiAKK25hbWVzcGFjZSB1dGlsaXR5X2ludGVybmFsIHsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBUdXBsZSwgc2l6ZV90Li4uIEk+CitUIG1ha2VfZnJvbV90dXBsZV9p
bXBsKFR1cGxlJiYgdHVwLCBhYnNsOjppbmRleF9zZXF1ZW5jZTxJLi4uPikgeworICByZXR1cm4g
VChzdGQ6OmdldDxJPihzdGQ6OmZvcndhcmQ8VHVwbGU+KHR1cCkpLi4uKTsKK30KK30gIC8vIG5h
bWVzcGFjZSB1dGlsaXR5X2ludGVybmFsCisKKy8vIG1ha2VfZnJvbV90dXBsZQorLy8KKy8vIEdp
dmVuIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdHlwZSBgVGAgYW5kIGEgdHVwbGUgb2YgYXJndW1l
bnRzCisvLyBgc3RkOjp0dXBsZShhcmcwLCBhcmcxLCAuLi4sIGFyZ04pYCBjb25zdHJ1Y3RzIGFu
IG9iamVjdCBvZiB0eXBlIGBUYCBhcyBpZiBieQorLy8gY2FsbGluZyBgVChhcmcwLCBhcmcxLCAu
Li4sIGFyZ04pYC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgc3RkOjp0dXBsZTxjb25zdCBj
aGFyKiwgc2l6ZV90PiBhcmdzKCJoZWxsbyB3b3JsZCIsIDUpOworLy8gICBhdXRvIHMgPSBhYnNs
OjptYWtlX2Zyb21fdHVwbGU8c3RkOjpzdHJpbmc+KGFyZ3MpOworLy8gICBhc3NlcnQocyA9PSAi
aGVsbG8iKTsKKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHVwbGU+Citjb25z
dGV4cHIgVCBtYWtlX2Zyb21fdHVwbGUoVHVwbGUmJiB0dXApIHsKKyAgcmV0dXJuIHV0aWxpdHlf
aW50ZXJuYWw6Om1ha2VfZnJvbV90dXBsZV9pbXBsPFQ+KAorICAgICAgc3RkOjpmb3J3YXJkPFR1
cGxlPih0dXApLAorICAgICAgYWJzbDo6bWFrZV9pbmRleF9zZXF1ZW5jZTwKKyAgICAgICAgICBz
dGQ6OnR1cGxlX3NpemU8YWJzbDo6ZGVjYXlfdDxUdXBsZT4+Ojp2YWx1ZT57fSk7Cit9CisKIH0g
IC8vIG5hbWVzcGFjZSBhYnNsCiAKICNlbmRpZiAgLy8gQUJTTF9VVElMSVRZX1VUSUxJVFlfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvdXRpbGl0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0
eS91dGlsaXR5X3Rlc3QuY2MKaW5kZXggM2M0NDdiMjBiYjA0YTk1NTU1MTM1NjEyZWRmZjUyMGFj
MDU5N2E2MS4uZjA0NGFkNjQ0YTRkM2U3NGMyZTA4MjU5MjI0YzQ2OTFiYWY0ZTdhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdXRpbGl0eS91dGlsaXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS91
dGlsaXR5X3Rlc3QuY2MKQEAgLTQsNyArNCw3IEBACiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIC8vCi0vLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gICAgICBodHRwczovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAvLwogLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
QEAgLTEzNSw3ICsxMzUsNyBAQCBzdHJ1Y3QgUG9vclN0ckNhdCB7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUdXAsIHNpemVfdC4uLiBJcz4KIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBUdXBTdHJp
bmdWZWNJbXBsKGNvbnN0IFR1cCYgdHVwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6OmluZGV4X3NlcXVlbmNlPElzLi4uPikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6aW5kZXhfc2VxdWVuY2U8SXMuLi4+KSB7CiAg
IHJldHVybiB7Rm10KHN0ZDo6Z2V0PElzPih0dXApKS4uLn07CiB9CiAKQEAgLTM0MSw1ICszNDEs
MzYgQEAgVEVTVChFeGNoYW5nZVRlc3QsIE1vdmVPbmx5KSB7CiAgIEVYUEVDVF9FUSgxLCAqYik7
CiB9CiAKK1RFU1QoTWFrZUZyb21UdXBsZVRlc3QsIFN0cmluZykgeworICBFWFBFQ1RfRVEoCisg
ICAgICBhYnNsOjptYWtlX2Zyb21fdHVwbGU8c3RkOjpzdHJpbmc+KHN0ZDo6bWFrZV90dXBsZSgi
aGVsbG8gd29ybGQiLCA1KSksCisgICAgICAiaGVsbG8iKTsKK30KKworVEVTVChNYWtlRnJvbVR1
cGxlVGVzdCwgTW92ZU9ubHlQYXJhbWV0ZXIpIHsKKyAgc3RydWN0IFMgeworICAgIFMoc3RkOjp1
bmlxdWVfcHRyPGludD4gbiwgc3RkOjp1bmlxdWVfcHRyPGludD4gbSkgOiB2YWx1ZSgqbiArICpt
KSB7fQorICAgIGludCB2YWx1ZSA9IDA7CisgIH07CisgIGF1dG8gdHVwID0KKyAgICAgIHN0ZDo6
bWFrZV90dXBsZShhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDMpLCBhYnNsOjptYWtlX3VuaXF1ZTxp
bnQ+KDQpKTsKKyAgYXV0byBzID0gYWJzbDo6bWFrZV9mcm9tX3R1cGxlPFM+KHN0ZDo6bW92ZSh0
dXApKTsKKyAgRVhQRUNUX0VRKHMudmFsdWUsIDcpOworfQorCitURVNUKE1ha2VGcm9tVHVwbGVU
ZXN0LCBOb1BhcmFtZXRlcnMpIHsKKyAgc3RydWN0IFMgeworICAgIFMoKSA6IHZhbHVlKDEpIHt9
CisgICAgaW50IHZhbHVlID0gMjsKKyAgfTsKKyAgRVhQRUNUX0VRKGFic2w6Om1ha2VfZnJvbV90
dXBsZTxTPihzdGQ6Om1ha2VfdHVwbGUoKSkudmFsdWUsIDEpOworfQorCitURVNUKE1ha2VGcm9t
VHVwbGVUZXN0LCBQYWlyKSB7CisgIEVYUEVDVF9FUSgKKyAgICAgIChhYnNsOjptYWtlX2Zyb21f
dHVwbGU8c3RkOjpwYWlyPGJvb2wsIGludD4+KHN0ZDo6bWFrZV90dXBsZSh0cnVlLCAxNykpKSwK
KyAgICAgIHN0ZDo6bWFrZV9wYWlyKHRydWUsIDE3KSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvcmVuYW1lX2Fubm90YXRpb25zLnNoIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL3JlbmFtZV9hbm5vdGF0aW9u
cy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYTJkZTRkOWQ1MDA4NjM4NzAzMWE5YzU1Y2M1Njc3YmQ0ZTBkMWI2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL3JlbmFtZV9hbm5vdGF0aW9ucy5zaApAQCAtMCwwICsxLDE2
NSBAQAorIyEvYmluL2Jhc2gKKworIyBUaGlzIHNjcmlwdCByZW5hbWVzIGFsbCB0aGUgZnVuY3Rp
b25zIGFuZCB0aGUgbWFjcm9zIGRlZmluZWQgaW4KKyMgYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3Rh
dGlvbnMue2gsY2N9IGFuZCBhYnNsL2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmguCisjCisjIENo
cm9taXVtJ3MgZHluYW1pY19hbm5vdGF0aW9ucyBsaXZlIGluIC8vYmFzZS90aGlyZF9wYXJ0eS9k
eW5hbWljX2Fubm90YXRpb25zCisjIGFuZCBpdHMgLy9iYXNlIGNvbnRhaW5zIGEgY29weSBvZiB0
aHJlYWRfYW5ub3RhdGlvbnMuaCB3aGljaCBjb25mbGljdCB3aXRoCisjIEFic2VpbCdzIHZlcnNp
b25zIChPRFIgdmlvbGF0aW9ucyBhbmQgbWFjcm8gY2xhc2hpbmcpLgorIyBJbiBvcmRlciB0byBh
dm9pZCBwcm9ibGVtcyBpbiBDaHJvbWl1bSwgdGhpcyBjb3B5IG9mIEFic2VpbCBoYXMgaXRzIG93
bgorIyBkeW5hbWljX2Fubm90YXRpb25zIGFuZCB0aHJlYWRfYW5ub3RhdGlvbnMgcmVuYW1lZC4K
KworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBkeW5hbWljX2Fubm90YXRpb25zIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KK2ZvciB3IGluIFwKKyAgQW5ub3RhdGVCYXJyaWVyRGVzdHJv
eSBcCisgIEFubm90YXRlQmFycmllckluaXQgXAorICBBbm5vdGF0ZUJhcnJpZXJXYWl0QWZ0ZXIg
XAorICBBbm5vdGF0ZUJhcnJpZXJXYWl0QmVmb3JlIFwKKyAgQW5ub3RhdGVCZW5pZ25SYWNlIFwK
KyAgQW5ub3RhdGVCZW5pZ25SYWNlU2l6ZWQgXAorICBBbm5vdGF0ZUNvbmRWYXJTaWduYWwgXAor
ICBBbm5vdGF0ZUNvbmRWYXJTaWduYWxBbGwgXAorICBBbm5vdGF0ZUNvbmRWYXJXYWl0IFwKKyAg
QW5ub3RhdGVFbmFibGVSYWNlRGV0ZWN0aW9uIFwKKyAgQW5ub3RhdGVFeHBlY3RSYWNlIFwKKyAg
QW5ub3RhdGVGbHVzaEV4cGVjdGVkUmFjZXMgXAorICBBbm5vdGF0ZUZsdXNoU3RhdGUgXAorICBB
bm5vdGF0ZUhhcHBlbnNBZnRlciBcCisgIEFubm90YXRlSGFwcGVuc0JlZm9yZSBcCisgIEFubm90
YXRlSWdub3JlUmVhZHNCZWdpbiBcCisgIEFubm90YXRlSWdub3JlUmVhZHNFbmQgXAorICBBbm5v
dGF0ZUlnbm9yZVN5bmNCZWdpbiBcCisgIEFubm90YXRlSWdub3JlU3luY0VuZCBcCisgIEFubm90
YXRlSWdub3JlV3JpdGVzQmVnaW4gXAorICBBbm5vdGF0ZUlnbm9yZVdyaXRlc0VuZCBcCisgIEFu
bm90YXRlTWVtb3J5SXNJbml0aWFsaXplZCBcCisgIEFubm90YXRlTWVtb3J5SXNVbmluaXRpYWxp
emVkIFwKKyAgQW5ub3RhdGVNdXRleElzTm90UEhCIFwKKyAgQW5ub3RhdGVNdXRleElzVXNlZEFz
Q29uZFZhciBcCisgIEFubm90YXRlTmV3TWVtb3J5IFwKKyAgQW5ub3RhdGVOb09wIFwKKyAgQW5u
b3RhdGVQQ1FDcmVhdGUgXAorICBBbm5vdGF0ZVBDUURlc3Ryb3kgXAorICBBbm5vdGF0ZVBDUUdl
dCBcCisgIEFubm90YXRlUENRUHV0IFwKKyAgQW5ub3RhdGVQdWJsaXNoTWVtb3J5UmFuZ2UgXAor
ICBBbm5vdGF0ZVJXTG9ja0FjcXVpcmVkIFwKKyAgQW5ub3RhdGVSV0xvY2tDcmVhdGUgXAorICBB
bm5vdGF0ZVJXTG9ja0NyZWF0ZVN0YXRpYyBcCisgIEFubm90YXRlUldMb2NrRGVzdHJveSBcCisg
IEFubm90YXRlUldMb2NrUmVsZWFzZWQgXAorICBBbm5vdGF0ZVRocmVhZE5hbWUgXAorICBBbm5v
dGF0ZVRyYWNlTWVtb3J5IFwKKyAgQW5ub3RhdGVVbnB1Ymxpc2hNZW1vcnlSYW5nZSBcCisgIEdl
dFJ1bm5pbmdPblZhbGdyaW5kIFwKKyAgUnVubmluZ09uVmFsZ3JpbmQgXAorICBTdGF0aWNBbm5v
dGF0ZUlnbm9yZVJlYWRzQmVnaW4gXAorICBTdGF0aWNBbm5vdGF0ZUlnbm9yZVJlYWRzRW5kIFwK
KyAgU3RhdGljQW5ub3RhdGVJZ25vcmVXcml0ZXNCZWdpbiBcCisgIFN0YXRpY0Fubm90YXRlSWdu
b3JlV3JpdGVzRW5kIFwKKyAgVmFsZ3JpbmRTbG93ZG93biBcCis7IGRvCisgIGZpbmQgYWJzbC8g
LXR5cGUgZiAtZXhlYyBzZWQgLWkgInMvXGIkd1xiL0Fic2wkdy9nIiB7fSBcOworZG9uZQorCitm
b3IgdyBpbiBcCisgIEFERFJFU1NfU0FOSVRJWkVSX1JFRFpPTkUgXAorICBBTk5PVEFMWVNJU19F
TkFCTEVEIFwKKyAgQU5OT1RBVEVfQkFSUklFUl9ERVNUUk9ZIFwKKyAgQU5OT1RBVEVfQkFSUklF
Ul9JTklUIFwKKyAgQU5OT1RBVEVfQkFSUklFUl9XQUlUX0FGVEVSIFwKKyAgQU5OT1RBVEVfQkFS
UklFUl9XQUlUX0JFRk9SRSBcCisgIEFOTk9UQVRFX0JFTklHTl9SQUNFIFwKKyAgQU5OT1RBVEVf
QkVOSUdOX1JBQ0VfU0laRUQgXAorICBBTk5PVEFURV9CRU5JR05fUkFDRV9TVEFUSUMgXAorICBB
Tk5PVEFURV9DT05EVkFSX0xPQ0tfV0FJVCBcCisgIEFOTk9UQVRFX0NPTkRWQVJfU0lHTkFMIFwK
KyAgQU5OT1RBVEVfQ09ORFZBUl9TSUdOQUxfQUxMIFwKKyAgQU5OT1RBVEVfQ09ORFZBUl9XQUlU
IFwKKyAgQU5OT1RBVEVfQ09OVElHVU9VU19DT05UQUlORVIgXAorICBBTk5PVEFURV9FTkFCTEVf
UkFDRV9ERVRFQ1RJT04gXAorICBBTk5PVEFURV9FWFBFQ1RfUkFDRSBcCisgIEFOTk9UQVRFX0ZM
VVNIX0VYUEVDVEVEX1JBQ0VTIFwKKyAgQU5OT1RBVEVfRkxVU0hfU1RBVEUgXAorICBBTk5PVEFU
RV9IQVBQRU5TX0FGVEVSIFwKKyAgQU5OT1RBVEVfSEFQUEVOU19CRUZPUkUgXAorICBBTk5PVEFU
RV9JR05PUkVfUkVBRFNfQU5EX1dSSVRFU19CRUdJTiBBTk5PVEFURV9JR05PUkVfUkVBRFNfQU5E
X1dSSVRFU19FTkQgXAorICBBTk5PVEFURV9JR05PUkVfUkVBRFNfQkVHSU4gXAorICBBTk5PVEFU
RV9JR05PUkVfUkVBRFNfRU5EIFwKKyAgQU5OT1RBVEVfSUdOT1JFX1NZTkNfQkVHSU4gXAorICBB
Tk5PVEFURV9JR05PUkVfU1lOQ19FTkQgXAorICBBTk5PVEFURV9JR05PUkVfV1JJVEVTX0JFR0lO
IFwKKyAgQU5OT1RBVEVfSUdOT1JFX1dSSVRFU19FTkQgXAorICBBTk5PVEFURV9NRU1PUllfSVNf
SU5JVElBTElaRUQgXAorICBBTk5PVEFURV9NRU1PUllfSVNfVU5JTklUSUFMSVpFRCBcCisgIEFO
Tk9UQVRFX01VVEVYX0lTX1VTRURfQVNfQ09ORFZBUiBcCisgIEFOTk9UQVRFX05FV19NRU1PUlkg
XAorICBBTk5PVEFURV9OT1RfSEFQUEVOU19CRUZPUkVfTVVURVggXAorICBBTk5PVEFURV9OT19P
UCBcCisgIEFOTk9UQVRFX1BDUV9DUkVBVEUgQU5OT1RBVEVfUENRX0RFU1RST1kgXAorICBBTk5P
VEFURV9QQ1FfR0VUIEFOTk9UQVRFX1BDUV9QVVQgXAorICBBTk5PVEFURV9QVUJMSVNIX01FTU9S
WV9SQU5HRSBcCisgIEFOTk9UQVRFX1BVUkVfSEFQUEVOU19CRUZPUkVfTVVURVggXAorICBBTk5P
VEFURV9SV0xPQ0tfQUNRVUlSRUQgXAorICBBTk5PVEFURV9SV0xPQ0tfQ1JFQVRFIFwKKyAgQU5O
T1RBVEVfUldMT0NLX0NSRUFURV9TVEFUSUMgXAorICBBTk5PVEFURV9SV0xPQ0tfREVTVFJPWSBc
CisgIEFOTk9UQVRFX1JXTE9DS19SRUxFQVNFRCBcCisgIEFOTk9UQVRFX1NXQVBfTUVNT1JZX1JB
TkdFIFwKKyAgQU5OT1RBVEVfVEhSRUFEX05BTUUgXAorICBBTk5PVEFURV9UUkFDRV9NRU1PUlkg
XAorICBBTk5PVEFURV9VTlBST1RFQ1RFRF9SRUFEIFwKKyAgQU5OT1RBVEVfVU5QVUJMSVNIX01F
TU9SWV9SQU5HRSBcCisgIEFOTk9UQVRJT05TX0VOQUJMRUQgXAorICBBVFRSSUJVVEVfSUdOT1JF
X1JFQURTX0JFR0lOIFwKKyAgQVRUUklCVVRFX0lHTk9SRV9SRUFEU19FTkQgXAorICBEWU5BTUlD
X0FOTk9UQVRJT05TX0FUVFJJQlVURV9XRUFLIFwKKyAgRFlOQU1JQ19BTk5PVEFUSU9OU19FTkFC
TEVEIFwKKyAgRFlOQU1JQ19BTk5PVEFUSU9OU19FWFRFUk5BTF9JTVBMIFwKKyAgRFlOQU1JQ19B
Tk5PVEFUSU9OU19HTFVFIFwKKyAgRFlOQU1JQ19BTk5PVEFUSU9OU19HTFVFMCBcCisgIERZTkFN
SUNfQU5OT1RBVElPTlNfSU1QTCBcCisgIERZTkFNSUNfQU5OT1RBVElPTlNfTkFNRSBcCisgIERZ
TkFNSUNfQU5OT1RBVElPTlNfUFJFRklYIFwKKyAgRFlOQU1JQ19BTk5PVEFUSU9OU19QUk9WSURF
X1JVTk5JTkdfT05fVkFMR1JJTkQgXAorICBEWU5BTUlDX0FOTk9UQVRJT05TX1dBTlRfQVRUUklC
VVRFX1dFQUsgXAorOyBkbworICBmaW5kIGFic2wvIC10eXBlIGYgLWV4ZWMgc2VkIC1pICJzL1xi
JHdcYi9BQlNMXyR3L2ciIHt9IFw7Citkb25lCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gdGhyZWFkX2Fubm90YXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZm9yIHcg
aW4gXAorICB0c191bmNoZWNrZWRfcmVhZCBcCis7IGRvCisgIGZpbmQgYWJzbC8gLXR5cGUgZiAt
ZXhlYyBzZWQgLWkgInMvXGIkd1xiL2Fic2xfJHcvZyIge30gXDsKK2RvbmUKKworZm9yIHcgaW4g
XAorICBUSFJFQURfQU5OT1RBVElPTl9BVFRSSUJVVEVfXyBcCisgIEdVQVJERURfQlkgXAorICBQ
VF9HVUFSREVEX0JZIFwKKyAgQUNRVUlSRURfQUZURVIgXAorICBBQ1FVSVJFRF9CRUZPUkUgXAor
ICBFWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQgXAorICBTSEFSRURfTE9DS1NfUkVRVUlSRUQgXAor
ICBMT0NLU19FWENMVURFRCBcCisgIExPQ0tfUkVUVVJORUQgXAorICBMT0NLQUJMRSBcCisgIFND
T1BFRF9MT0NLQUJMRSBcCisgIEVYQ0xVU0lWRV9MT0NLX0ZVTkNUSU9OIFwKKyAgU0hBUkVEX0xP
Q0tfRlVOQ1RJT04gXAorICBVTkxPQ0tfRlVOQ1RJT04gXAorICBFWENMVVNJVkVfVFJZTE9DS19G
VU5DVElPTiBcCisgIFNIQVJFRF9UUllMT0NLX0ZVTkNUSU9OIFwKKyAgQVNTRVJUX0VYQ0xVU0lW
RV9MT0NLIFwKKyAgQVNTRVJUX1NIQVJFRF9MT0NLIFwKKyAgTk9fVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUyBcCisgIFRTX1VOQ0hFQ0tFRCBcCisgIFRTX0ZJWE1FIFwKKyAgTk9fVEhSRUFEX1NBRkVU
WV9BTkFMWVNJU19GSVhNRSBcCisgIEdVQVJERURfQllfRklYTUUgXAorICBUU19VTkNIRUNLRURf
UkVBRCBcCis7IGRvCisgIGZpbmQgYWJzbC8gLXR5cGUgZiAtZXhlYyBzZWQgLWkgInMvXGIkd1xi
L0FCU0xfJHcvZyIge30gXDsKK2RvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9yZW5hbWVfZHluYW1pY19hbm5v
dGF0aW9ucy5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9yZW5hbWVfZHluYW1pY19hbm5vdGF0aW9ucy5zaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjM5MDE3Zjk1ODU3MTcyM2JiYzc3MDA2NmM3OGJjZDRjYWEyMGY4
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvcmVuYW1l
X2R5bmFtaWNfYW5ub3RhdGlvbnMuc2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAot
IyEvYmluL2Jhc2gKLQotIyBUaGlzIHNjcmlwdCByZW5hbWVzIGFsbCB0aGUgZnVuY3Rpb25zIGFu
ZCB0aGUgbWFjcm9zIGRlZmluZWQgaW4KLSMgYWJzbC9iYXNlL2R5bmFtaWNfYW5ub3RhdGlvbnMu
e2gsY2N9LgotIwotIyBDaHJvbWl1bSdzIGR5bmFtaWNfYW5ub3RhdGlvbnMgbGl2ZSBpbiAvL2Jh
c2UvdGhpcmRfcGFydHkvZHluYW1pY19hbm5vdGF0aW9ucwotIyBhbmQgdGhlIGFyZSBpbiBjb25m
bGljdCB3aXRoIEFic2VpbCdzIGR5bmFtaWNfYW5ub3RhdGlvbnMgKE9EUiB2aW9sYXRpb25zIGFu
ZAotIyBtYWNybyBjbGFzaGluZykuCi0jIEluIG9yZGVyIHRvIGF2b2lkIHByb2JsZW1zIGluIENo
cm9taXVtLCB0aGlzIGNvcHkgb2YgQWJzZWlsIGhhcyBpdHMgb3duCi0jIGR5bmFtaWNfYW5ub3Rh
dGlvbnMgcmVuYW1lZC4KLQotZm9yIHcgaW4gXAotICBBbm5vdGF0ZUJhcnJpZXJEZXN0cm95IFwK
LSAgQW5ub3RhdGVCYXJyaWVySW5pdCBcCi0gIEFubm90YXRlQmFycmllcldhaXRBZnRlciBcCi0g
IEFubm90YXRlQmFycmllcldhaXRCZWZvcmUgXAotICBBbm5vdGF0ZUJlbmlnblJhY2UgXAotICBB
bm5vdGF0ZUJlbmlnblJhY2VTaXplZCBcCi0gIEFubm90YXRlQ29uZFZhclNpZ25hbCBcCi0gIEFu
bm90YXRlQ29uZFZhclNpZ25hbEFsbCBcCi0gIEFubm90YXRlQ29uZFZhcldhaXQgXAotICBBbm5v
dGF0ZUVuYWJsZVJhY2VEZXRlY3Rpb24gXAotICBBbm5vdGF0ZUV4cGVjdFJhY2UgXAotICBBbm5v
dGF0ZUZsdXNoRXhwZWN0ZWRSYWNlcyBcCi0gIEFubm90YXRlRmx1c2hTdGF0ZSBcCi0gIEFubm90
YXRlSGFwcGVuc0FmdGVyIFwKLSAgQW5ub3RhdGVIYXBwZW5zQmVmb3JlIFwKLSAgQW5ub3RhdGVJ
Z25vcmVSZWFkc0JlZ2luIFwKLSAgQW5ub3RhdGVJZ25vcmVSZWFkc0VuZCBcCi0gIEFubm90YXRl
SWdub3JlU3luY0JlZ2luIFwKLSAgQW5ub3RhdGVJZ25vcmVTeW5jRW5kIFwKLSAgQW5ub3RhdGVJ
Z25vcmVXcml0ZXNCZWdpbiBcCi0gIEFubm90YXRlSWdub3JlV3JpdGVzRW5kIFwKLSAgQW5ub3Rh
dGVNZW1vcnlJc0luaXRpYWxpemVkIFwKLSAgQW5ub3RhdGVNZW1vcnlJc1VuaW5pdGlhbGl6ZWQg
XAotICBBbm5vdGF0ZU11dGV4SXNOb3RQSEIgXAotICBBbm5vdGF0ZU11dGV4SXNVc2VkQXNDb25k
VmFyIFwKLSAgQW5ub3RhdGVOZXdNZW1vcnkgXAotICBBbm5vdGF0ZU5vT3AgXAotICBBbm5vdGF0
ZVBDUUNyZWF0ZSBcCi0gIEFubm90YXRlUENRRGVzdHJveSBcCi0gIEFubm90YXRlUENRR2V0IFwK
LSAgQW5ub3RhdGVQQ1FQdXQgXAotICBBbm5vdGF0ZVB1Ymxpc2hNZW1vcnlSYW5nZSBcCi0gIEFu
bm90YXRlUldMb2NrQWNxdWlyZWQgXAotICBBbm5vdGF0ZVJXTG9ja0NyZWF0ZSBcCi0gIEFubm90
YXRlUldMb2NrQ3JlYXRlU3RhdGljIFwKLSAgQW5ub3RhdGVSV0xvY2tEZXN0cm95IFwKLSAgQW5u
b3RhdGVSV0xvY2tSZWxlYXNlZCBcCi0gIEFubm90YXRlVGhyZWFkTmFtZSBcCi0gIEFubm90YXRl
VHJhY2VNZW1vcnkgXAotICBBbm5vdGF0ZVVucHVibGlzaE1lbW9yeVJhbmdlIFwKLSAgR2V0UnVu
bmluZ09uVmFsZ3JpbmQgXAotICBSdW5uaW5nT25WYWxncmluZCBcCi0gIFN0YXRpY0Fubm90YXRl
SWdub3JlUmVhZHNCZWdpbiBcCi0gIFN0YXRpY0Fubm90YXRlSWdub3JlUmVhZHNFbmQgXAotICBT
dGF0aWNBbm5vdGF0ZUlnbm9yZVdyaXRlc0JlZ2luIFwKLSAgU3RhdGljQW5ub3RhdGVJZ25vcmVX
cml0ZXNFbmQgXAotICBWYWxncmluZFNsb3dkb3duIFwKLTsgZG8KLSAgZmluZCBhYnNsLyAtdHlw
ZSBmIC1leGVjIHNlZCAtaSAicy9cYiR3XGIvQWJzbCR3L2ciIHt9IFw7Ci1kb25lCi0KLWZvciB3
IGluIFwKLSAgQUREUkVTU19TQU5JVElaRVJfUkVEWk9ORSBcCi0gIEFOTk9UQUxZU0lTX0VOQUJM
RUQgXAotICBBTk5PVEFURV9CQVJSSUVSX0RFU1RST1kgXAotICBBTk5PVEFURV9CQVJSSUVSX0lO
SVQgXAotICBBTk5PVEFURV9CQVJSSUVSX1dBSVRfQUZURVIgXAotICBBTk5PVEFURV9CQVJSSUVS
X1dBSVRfQkVGT1JFIFwKLSAgQU5OT1RBVEVfQkVOSUdOX1JBQ0UgXAotICBBTk5PVEFURV9CRU5J
R05fUkFDRV9TSVpFRCBcCi0gIEFOTk9UQVRFX0JFTklHTl9SQUNFX1NUQVRJQyBcCi0gIEFOTk9U
QVRFX0NPTkRWQVJfTE9DS19XQUlUIFwKLSAgQU5OT1RBVEVfQ09ORFZBUl9TSUdOQUwgXAotICBB
Tk5PVEFURV9DT05EVkFSX1NJR05BTF9BTEwgXAotICBBTk5PVEFURV9DT05EVkFSX1dBSVQgXAot
ICBBTk5PVEFURV9DT05USUdVT1VTX0NPTlRBSU5FUiBcCi0gIEFOTk9UQVRFX0VOQUJMRV9SQUNF
X0RFVEVDVElPTiBcCi0gIEFOTk9UQVRFX0VYUEVDVF9SQUNFIFwKLSAgQU5OT1RBVEVfRkxVU0hf
RVhQRUNURURfUkFDRVMgXAotICBBTk5PVEFURV9GTFVTSF9TVEFURSBcCi0gIEFOTk9UQVRFX0hB
UFBFTlNfQUZURVIgXAotICBBTk5PVEFURV9IQVBQRU5TX0JFRk9SRSBcCi0gIEFOTk9UQVRFX0lH
Tk9SRV9SRUFEU19BTkRfV1JJVEVTX0JFR0lOIEFOTk9UQVRFX0lHTk9SRV9SRUFEU19BTkRfV1JJ
VEVTX0VORCBcCi0gIEFOTk9UQVRFX0lHTk9SRV9SRUFEU19CRUdJTiBcCi0gIEFOTk9UQVRFX0lH
Tk9SRV9SRUFEU19FTkQgXAotICBBTk5PVEFURV9JR05PUkVfU1lOQ19CRUdJTiBcCi0gIEFOTk9U
QVRFX0lHTk9SRV9TWU5DX0VORCBcCi0gIEFOTk9UQVRFX0lHTk9SRV9XUklURVNfQkVHSU4gXAot
ICBBTk5PVEFURV9JR05PUkVfV1JJVEVTX0VORCBcCi0gIEFOTk9UQVRFX01FTU9SWV9JU19JTklU
SUFMSVpFRCBcCi0gIEFOTk9UQVRFX01FTU9SWV9JU19VTklOSVRJQUxJWkVEIFwKLSAgQU5OT1RB
VEVfTVVURVhfSVNfVVNFRF9BU19DT05EVkFSIFwKLSAgQU5OT1RBVEVfTkVXX01FTU9SWSBcCi0g
IEFOTk9UQVRFX05PVF9IQVBQRU5TX0JFRk9SRV9NVVRFWCBcCi0gIEFOTk9UQVRFX05PX09QIFwK
LSAgQU5OT1RBVEVfUENRX0NSRUFURSBBTk5PVEFURV9QQ1FfREVTVFJPWSBcCi0gIEFOTk9UQVRF
X1BDUV9HRVQgQU5OT1RBVEVfUENRX1BVVCBcCi0gIEFOTk9UQVRFX1BVQkxJU0hfTUVNT1JZX1JB
TkdFIFwKLSAgQU5OT1RBVEVfUFVSRV9IQVBQRU5TX0JFRk9SRV9NVVRFWCBcCi0gIEFOTk9UQVRF
X1JXTE9DS19BQ1FVSVJFRCBcCi0gIEFOTk9UQVRFX1JXTE9DS19DUkVBVEUgXAotICBBTk5PVEFU
RV9SV0xPQ0tfQ1JFQVRFX1NUQVRJQyBcCi0gIEFOTk9UQVRFX1JXTE9DS19ERVNUUk9ZIFwKLSAg
QU5OT1RBVEVfUldMT0NLX1JFTEVBU0VEIFwKLSAgQU5OT1RBVEVfU1dBUF9NRU1PUllfUkFOR0Ug
XAotICBBTk5PVEFURV9USFJFQURfTkFNRSBcCi0gIEFOTk9UQVRFX1RSQUNFX01FTU9SWSBcCi0g
IEFOTk9UQVRFX1VOUFJPVEVDVEVEX1JFQUQgXAotICBBTk5PVEFURV9VTlBVQkxJU0hfTUVNT1JZ
X1JBTkdFIFwKLSAgQU5OT1RBVElPTlNfRU5BQkxFRCBcCi0gIEFUVFJJQlVURV9JR05PUkVfUkVB
RFNfQkVHSU4gXAotICBBVFRSSUJVVEVfSUdOT1JFX1JFQURTX0VORCBcCi0gIERZTkFNSUNfQU5O
T1RBVElPTlNfQVRUUklCVVRFX1dFQUsgXAotICBEWU5BTUlDX0FOTk9UQVRJT05TX0VOQUJMRUQg
XAotICBEWU5BTUlDX0FOTk9UQVRJT05TX0VYVEVSTkFMX0lNUEwgXAotICBEWU5BTUlDX0FOTk9U
QVRJT05TX0dMVUUgXAotICBEWU5BTUlDX0FOTk9UQVRJT05TX0dMVUUwIFwKLSAgRFlOQU1JQ19B
Tk5PVEFUSU9OU19JTVBMIFwKLSAgRFlOQU1JQ19BTk5PVEFUSU9OU19OQU1FIFwKLSAgRFlOQU1J
Q19BTk5PVEFUSU9OU19QUkVGSVggXAotICBEWU5BTUlDX0FOTk9UQVRJT05TX1BST1ZJREVfUlVO
TklOR19PTl9WQUxHUklORCBcCi0gIERZTkFNSUNfQU5OT1RBVElPTlNfV0FOVF9BVFRSSUJVVEVf
V0VBSyBcCi07IGRvCi0gIGZpbmQgYWJzbC8gLXR5cGUgZiAtZXhlYyBzZWQgLWkgInMvXGIkd1xi
L0FCU0xfJHcvZyIge30gXDsKLWRvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA1ZDM4NjdkMTU3ZmIzMjk2MGE2MjczYmVjOWQzZjdhNTQxMWJiNGIxLi4wNjNhNGI2MDQyMmFl
YTdhMDVkNjYyNDVlZWIxOGFkNDExNjIxOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjgwLDcgKzEyODAsNiBAQAogCQk0MUREQjI0RDIxMjY1QkQ3MDAyOTZENDcgLyog
Zml4ZWRfYXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRERCMjRCMjEyNjVCRDcwMDI5NkQ0NyAvKiBmaXhlZF9hcnJheS5oICovOyB9OwogCQk0
MUREQjI0RTIxMjY1QkQ3MDAyOTZENDcgLyogaW5saW5lZF92ZWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRERCMjRDMjEyNjVCRDcwMDI5NkQ0
NyAvKiBpbmxpbmVkX3ZlY3Rvci5oICovOyB9OwogCQk0MUREQjI1MTIxMjY1QkU5MDAyOTZENDcg
Lyogb3B0aW9uYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRERCMjRGMjEyNjVCRTkwMDI5NkQ0NyAvKiBvcHRpb25hbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxRERCMjUyMjEyNjVCRTkwMDI5
NkQ0NyAvKiBvcHRpb25hbC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRERCMjUwMjEyNjVCRTkwMDI5NkQ0NyAvKiBvcHRpb25hbC5jYyAqLzsgfTsK
IAkJNDFEREIyNTQyMTI2NzhFNDAwMjk2RDQ3IC8qIHBsYXRmb3JtX3RocmVhZF90eXBlcy5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRERCMjUzMjEy
Njc4RTMwMDI5NkQ0NyAvKiBwbGF0Zm9ybV90aHJlYWRfdHlwZXMuY2MgKi87IH07CiAJCTQxRERC
MjU2MjEyNjc5MEEwMDI5NkQ0NyAvKiBzb2NrZXQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUREQjI1NTIxMjY3OTBBMDAyOTZENDcgLyogc29ja2V0
LmNjICovOyB9OwogCQk0MUREQjI1OTIxMjY3OTI4MDAyOTZENDcgLyogemVyb19tZW1vcnkuY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUREQjI1NzIx
MjY3OTI4MDAyOTZENDcgLyogemVyb19tZW1vcnkuY2MgKi87IH07CkBAIC01MjAzLDcgKzUyMDIs
NiBAQAogCQk0MUREQjI0QjIxMjY1QkQ3MDAyOTZENDcgLyogZml4ZWRfYXJyYXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gZml4ZWRfYXJyYXkuaDsgcGF0aCA9IGNvbnRhaW5l
ci9maXhlZF9hcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUREQjI0QzIx
MjY1QkQ3MDAyOTZENDcgLyogaW5saW5lZF92ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gaW5saW5lZF92ZWN0b3IuaDsgcGF0aCA9IGNvbnRhaW5lci9pbmxpbmVkX3Zl
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUREQjI0RjIxMjY1QkU5MDAy
OTZENDcgLyogb3B0aW9uYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gb3B0
aW9uYWwuaDsgcGF0aCA9IHR5cGVzL29wdGlvbmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQxRERCMjUwMjEyNjVCRTkwMDI5NkQ0NyAvKiBvcHRpb25hbC5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG9wdGlvbmFsLmNjOyBwYXRoID0gdHlwZXMvb3B0
aW9uYWwuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRERCMjUzMjEyNjc4RTMw
MDI5NkQ0NyAvKiBwbGF0Zm9ybV90aHJlYWRfdHlwZXMuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBwbGF0Zm9ybV90aHJlYWRfdHlwZXMuY2M7IHBhdGggPSBydGNfYmFz
ZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRERCMjU1MjEyNjc5MEEwMDI5NkQ0NyAvKiBzb2NrZXQuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBzb2NrZXQuY2M7IHBhdGggPSBydGNfYmFzZS9zb2NrZXQuY2M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRERCMjU3MjEyNjc5MjgwMDI5NkQ0NyAv
KiB6ZXJvX21lbW9yeS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHpl
cm9fbWVtb3J5LmNjOyBwYXRoID0gcnRjX2Jhc2UvemVyb19tZW1vcnkuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC04Njc2LDggKzg2NzQsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJNDE3OTUzRkQyMTY5ODUxRjAwMjgyNjZCIC8qIFJUQ1ZpZGVvQ29kZWNDb25zdGFudHMuaCAq
LywKIAkJCQk0MTc5NTNGRjIxNjk4NTFGMDAyODI2NkIgLyogUlRDVmlkZW9Db2RlY0NvbnN0YW50
cy5tbSAqLywKLQkJCQk0MTc5NTQwMjIxNjk4NTIwMDAyODI2NkIgLyogUlRDVmlkZW9EZWNvZGVy
VlA4Lm1tICovLAogCQkJCTQxM0Y0RDZGMjJCMEJBRUUwMDZBN0E2QiAvKiBSVENWaWRlb0RlY29k
ZXJWUDguaCAqLywKKwkJCQk0MTc5NTQwMjIxNjk4NTIwMDAyODI2NkIgLyogUlRDVmlkZW9EZWNv
ZGVyVlA4Lm1tICovLAogCQkJCTQxNzk1NDAxMjE2OTg1MUYwMDI4MjY2QiAvKiBSVENWaWRlb0Vu
Y29kZXJWUDguaCAqLywKIAkJCQk0MTNFNjc2NDIxNjk4NTQ1MDBFRjM3RUQgLyogUlRDVmlkZW9F
bmNvZGVyVlA4Lm1tICovLAogCQkJCTQxNzk1M0ZFMjE2OTg1MUYwMDI4MjY2QiAvKiBSVENXcmFw
cGVkTmF0aXZlVmlkZW9EZWNvZGVyLmggKi8sCkBAIC05Njg1LDcgKzk2ODMsNiBAQAogCQkJCTQx
QTA4QkM1MjEyNjk1REUwMDFENUQ3QiAvKiBiYWRfb3B0aW9uYWxfYWNjZXNzLmggKi8sCiAJCQkJ
NDE5MjQxN0YyMTI3NDk3MTAwNjM0RkNGIC8qIGJhZF92YXJpYW50X2FjY2Vzcy5jYyAqLywKIAkJ
CQk0MTkyNDE4MDIxMjc0OTcxMDA2MzRGQ0YgLyogYmFkX3ZhcmlhbnRfYWNjZXNzLmggKi8sCi0J
CQkJNDFEREIyNTAyMTI2NUJFOTAwMjk2RDQ3IC8qIG9wdGlvbmFsLmNjICovLAogCQkJCTQxRERC
MjRGMjEyNjVCRTkwMDI5NkQ0NyAvKiBvcHRpb25hbC5oICovLAogCQkJKTsKIAkJCW5hbWUgPSB0
eXBlczsKQEAgLTE0NzU3LDYgKzE0NzU0LDcgQEAKIAkJCQk0MTc5NTNDNTIxNjk4MjRCMDAyODI2
NkIgLyogUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
Nzk1M0M2MjE2OTgyNEIwMDI4MjY2QiAvKiBSVENWaWRlb0RlY29kZXJIMjY0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTNBMjQ2NTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDVmlkZW9EZWNvZGVyVlA4
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNGNEQ3MDIyQjBCQUVGMDA2QTdBNkIgLyogUlRDVmlk
ZW9EZWNvZGVyVlA4LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ2MDFGRTE5OTFBMDAzNzNF
OTkgLyogUlRDVmlkZW9EZWNvZGVyVlA5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ0QjNERTIx
NjlBMDcwMDA0MzYzQUMgLyogUlRDVmlkZW9FbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTQ0QjNERjIxNjlBMDcwMDA0MzYzQUMgLyogUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNDk1Myw3ICsxNDk1MSw2IEBACiAJCQkJNDEzRTY3OTUyMTY5ODgxOTAw
RUYzN0VEIC8qIHN2Y19yYXRlX2FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhC
RjAxRTQzQzJCNTAwNjIxRTkyIC8qIHN3YXBfYnl0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
M0EyMzQ3MUZFMThFMDcwMDM3M0U5OSAvKiBzd2FwX3F1ZXVlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0MTNGNEQ3MDIyQjBCQUVGMDA2QTdBNkIgLyogUlRDVmlkZW9EZWNvZGVyVlA4LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTkyNDFBOTIxMjc1OEQzMDA2MzRGQ0YgLyogc3ltbWV0cmljX21hdHJp
eF9idWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkU3MUEzMjE1QzQ2MzcwMEE3QjE5NiAv
KiBzeW1yZWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTU1MUU0M0JGQjMwMDYyMUU5MiAv
KiBzeW5jX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjQzNCw3ICsxNjQzMSw2IEBACiAJ
CQkJNUNERDhBOTExRTQzQzAwRjAwNjIxRTkyIC8qIGF1ZGlvX3NpbmsuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REOEFEMjFFNDNDMjM5MDA2MjFFOTIgLyogYXVkaW9fc3RhdGUuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk0MTVGMUZDNjIxMjczMDhGMDAwNjRDQkYgLyogYXVkaW9fc3RhdGUuY2Mg
aW4gU291cmNlcyAqLywKLQkJCQk0MTNGNEQ3MTIyQjBCQjE4MDA2QTdBNkIgLyogUlRDV3JhcHBl
ZE5hdGl2ZVZpZGVvRGVjb2Rlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjlCRjlCMjA1MUM4
NEMwMEFCRjBCOSAvKiBhdWRpb190cmFuc3BvcnRfaW1wbC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDNEI0QzVGMUU0MzFGOUMwMDI2NTFDOCAvKiBhdWRpb191dGlsLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNERDhBMDQxRTQzQkZCMzAwNjIxRTkyIC8qIGF1ZGlvX3ZlY3Rvci5jYyBpbiBTb3Vy
Y2VzICovLApAQCAtMTY4NzQsNyArMTY4NzAsNiBAQAogCQkJCTQxRERCMjYyMjEyNjc5QTMwMDI5
NkQ0NyAvKiBvcGVuc3Nsc2Vzc2lvbmNhY2hlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzg0
M0YxRkUyNTBCOTAwNDBDMzBGIC8qIG9wZW5zc2xzdHJlYW1hZGFwdGVyLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDFEREIyNjUyMTI2NzlBMzAwMjk2RDQ3IC8qIG9wZW5zc2x1dGlsaXR5LmNjIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNDFEREIyNTIyMTI2NUJFOTAwMjk2RDQ3IC8qIG9wdGlvbmFsLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhDNjcxRTQzQzYwOTAwNjIxRTkyIC8qIG9wdXNfaW50
ZXJmYWNlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEZENzFFNDNDRDY2MDA2MjFFOTIgLyog
b3ZlcnVzZV9kZXRlY3Rvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4RkQ5MUU0M0NENjYw
MDYyMUU5MiAvKiBvdmVydXNlX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLApAQCAtMTcwNjMs
NiArMTcwNTgsNyBAQAogCQkJCTQxNDRCM0Y3MjE2QjA5Q0IwMDQzNjNBQyAvKiBSVENWaWRlb0Vu
Y29kZXJTZXR0aW5ncytQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzRTY3NjUyMTY5
ODU0NjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclZQOC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTQxM0U2NzkwMjE2OTg3REIwMEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDEzRjRENzEyMkIwQkIxODAwNkE3QTZCIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRl
b0RlY29kZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTNFNjc2RDIxNjk4NTRCMDBFRjM3RUQg
LyogUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQx
RDZCNDU5MjEyNzMxNTkwMDhGOTM1MyAvKiBydHBfYml0cmF0ZV9jb25maWd1cmF0b3IuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTlDODJCNDFGRTIwRENEMDA0MEMzMEYgLyogcnRwX2NvbmZpZy5j
YyBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381283</attachid>
            <date>2019-10-18 00:25:33 -0700</date>
            <delta_ts>2019-10-18 01:35:16 -0700</delta_ts>
            <desc>Build fix</desc>
            <filename>bug-202726-20191018092532.patch</filename>
            <type>text/plain</type>
            <size>1560</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAxMDViY2E5YzNhOTBjMzM0ZGExNjNiY2FhNDRjYTc1MTE1NzQ3OWE2Li5hYmNk
NWQzYjNlZTc5NWVkOGUzYTFmYTJkYTliNDBiMmYyZjZlYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0xMC0xNyAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB0aGly
ZC1wYXJ0eSBhYnNlaWxjcHAgdG8gTTc4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDI3MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MTQ3ODIz
PgorCisgICAgICAgIFVucmV2aWV3ZWQuCisKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaDoKKyAgICAgICAgKGFic2w6OnN0
cmluZ192aWV3OjpDaGVja0xlbmd0aEludGVybmFsKToKKyAgICAgICAgQnVpbGQgZml4IGZvciBk
ZWJ1ZyBib3RzLgorCiAyMDE5LTEwLTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBVcGRhdGUgbGlid2VicnRjIHRoaXJkLXBhcnR5IGpzb25jcHAgdG8gTTc4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cmluZ192aWV3LmgKaW5kZXggMjVhNGQxZWRlYWZlNzRiYzBkMGJmOWFmOTI5MmQ4YWIxNzcz
OGE3Ni4uODcyZDlmNjM1ODc3ZmRjNDAzYWUzN2JkMzQxYWI2ZTU3NjUyMTlhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5n
X3ZpZXcuaApAQCAtNDkzLDcgKzQ5Myw3IEBAIGNsYXNzIHN0cmluZ192aWV3IHsKICAgICAgIChz
dGQ6Om51bWVyaWNfbGltaXRzPGRpZmZlcmVuY2VfdHlwZT46Om1heCkoKTsKIAogICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdHlwZSBDaGVja0xlbmd0aEludGVybmFsKHNpemVfdHlwZSBsZW4pIHsK
LSAgICByZXR1cm4gQUJTTF9BU1NFUlQobGVuIDw9IGtNYXhTaXplKSwgbGVuOworICAgIHJldHVy
biBsZW47CiAgIH0KIAogICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBTdHJsZW5JbnRlcm5h
bChjb25zdCBjaGFyKiBzdHIpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>